-- cgit v1.2.3 From 93beb0b85a4a0e301d9bfae9edee1fe7bdabba12 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 27 Oct 2009 19:53:34 +0000 Subject: Commit of the sculpt patch (#19672). Further development will be in this branch until we merge to trunk. --- source/blender/blenkernel/BKE_DerivedMesh.h | 2 +- source/blender/blenkernel/BKE_paint.h | 7 +- source/blender/blenkernel/intern/cdderivedmesh.c | 91 ++- source/blender/blenkernel/intern/object.c | 10 +- source/blender/blenkernel/intern/subsurf_ccg.c | 2 +- source/blender/blenlib/BLI_pbvh.h | 62 ++ source/blender/blenlib/CMakeLists.txt | 1 + source/blender/blenlib/SConscript | 2 +- source/blender/blenlib/intern/arithb.c | 2 +- source/blender/blenlib/intern/pbvh.c | 665 +++++++++++++++++++ source/blender/editors/include/ED_sculpt.h | 7 + source/blender/editors/include/ED_view3d.h | 6 +- source/blender/editors/object/object_modifier.c | 2 + source/blender/editors/physics/particle_edit.c | 2 +- source/blender/editors/sculpt_paint/paint_intern.h | 4 +- source/blender/editors/sculpt_paint/paint_stroke.c | 27 +- source/blender/editors/sculpt_paint/paint_vertex.c | 4 +- source/blender/editors/sculpt_paint/sculpt.c | 736 +++++++++++---------- source/blender/editors/space_view3d/drawobject.c | 34 +- source/blender/editors/space_view3d/view3d_draw.c | 39 +- source/blender/editors/space_view3d/view3d_edit.c | 47 +- .../blender/editors/space_view3d/view3d_select.c | 14 +- source/blender/editors/space_view3d/view3d_view.c | 39 ++ source/blender/gpu/gpu_buffers.h | 11 + source/blender/gpu/intern/gpu_buffers.c | 151 +++++ 25 files changed, 1486 insertions(+), 481 deletions(-) create mode 100644 source/blender/blenlib/BLI_pbvh.h create mode 100644 source/blender/blenlib/intern/pbvh.c diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 076747cb845..75d9ae7f360 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -204,7 +204,7 @@ struct DerivedMesh { * * Also called for *final* editmode DerivedMeshes */ - void (*drawFacesSolid)(DerivedMesh *dm, + void (*drawFacesSolid)(DerivedMesh *dm, void *tree, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)); /* Draw all faces diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index ba42aca1872..558659b520f 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -34,6 +34,7 @@ struct MultireModifierData; struct MVert; struct Object; struct Paint; +struct PBVH; struct Scene; struct StrokeCache; @@ -76,8 +77,10 @@ typedef struct SculptSession { /* Used temporarily per-stroke */ float *vertexcosnos; - ListBase damaged_rects; - ListBase damaged_verts; + + /* Partial redraw */ + struct PBVH *tree; + int partial_redraw; /* Used to cache the render of the active texture */ unsigned int texcache_side, *texcache, texcache_actual; diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index e38bb00fe8d..6ae1057767d 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -49,7 +49,7 @@ #include "BLI_blenlib.h" #include "BLI_edgehash.h" #include "BLI_editVert.h" -#include "BLI_ghash.h" +#include "BLI_pbvh.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" @@ -360,7 +360,68 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm) } } -static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs)) +static int nodes_drawn = 0; +static int is_partial = 0; +/* XXX: Just a temporary replacement for the real drawing code */ +static void draw_partial_cb(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data_v) +{ + /* XXX: Just some quick code to show leaf nodes in different colors */ + /*float col[3]; int i; + if(is_partial) { + col[0] = (rand() / (float)RAND_MAX); col[1] = col[2] = 0.6; + } + else { + srand((long long)data_v); + for(i = 0; i < 3; ++i) + col[i] = (rand() / (float)RAND_MAX) * 0.3 + 0.7; + } + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); + + glColor3f(1, 0, 0);*/ + GPU_draw_buffers(data_v); + ++nodes_drawn; +} + +int find_all(float bb_min[3], float bb_max[3], void *data) +{ + return 1; +} + +/* Adapted from: + http://www.gamedev.net/community/forums/topic.asp?topic_id=512123 + Returns true if the AABB is at least partially within the frustum + (ok, not a real frustum), false otherwise. +*/ +int planes_contain_AABB(float bb_min[3], float bb_max[3], void *data) +{ + float (*planes)[4] = data; + int i, axis; + float vmin[3], vmax[3]; + + for(i = 0; i < 4; ++i) { + for(axis = 0; axis < 3; ++axis) { + if(planes[i][axis] > 0) { + vmin[axis] = bb_min[axis]; + vmax[axis] = bb_max[axis]; + } + else { + vmin[axis] = bb_max[axis]; + vmax[axis] = bb_min[axis]; + } + } + + if(Inpf(planes[i], vmin) + planes[i][3] > 0) + return 0; + } + + return 1; +} + +static void cdDM_drawFacesSolid(DerivedMesh *dm, void *tree, + float (*partial_redraw_planes)[4], + int (*setMaterial)(int, void *attribs)) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; MVert *mvert = cddm->mvert; @@ -376,6 +437,32 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *a glVertex3fv(mvert[index].co); \ } + if(tree) { + BLI_pbvh_search(tree, BLI_pbvh_update_search_cb, + PBVH_NodeData, NULL, NULL, + PBVH_SEARCH_UPDATE); + + if(partial_redraw_planes) { + BLI_pbvh_search(tree, planes_contain_AABB, + partial_redraw_planes, + draw_partial_cb, PBVH_DrawData, + PBVH_SEARCH_MODIFIED); + } + else { + BLI_pbvh_search(tree, find_all, NULL, + draw_partial_cb, PBVH_DrawData, + PBVH_SEARCH_NORMAL); + + } + + is_partial = !!partial_redraw_planes; + + //printf("nodes drawn=%d\n", nodes_drawn); + nodes_drawn = 0; + + return; + } + if( GPU_buffer_legacy(dm) ) { DEBUG_VBO( "Using legacy code. cdDM_drawFacesSolid\n" ); glBegin(glmode = GL_QUADS); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index ba8d41f54bb..5c3419fb488 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -72,6 +72,8 @@ #include "BLI_blenlib.h" #include "BLI_arithb.h" #include "BLI_editVert.h" +#include "BLI_ghash.h" +#include "BLI_pbvh.h" #include "BKE_utildefines.h" @@ -228,8 +230,6 @@ void free_sculptsession(SculptSession **ssp) { if(ssp && *ssp) { SculptSession *ss = *ssp; - if(ss->projverts) - MEM_freeN(ss->projverts); if(ss->fmap) MEM_freeN(ss->fmap); @@ -246,6 +246,12 @@ void free_sculptsession(SculptSession **ssp) if(ss->mesh_co_orig) MEM_freeN(ss->mesh_co_orig); + if(ss->tree) + BLI_pbvh_free(ss->tree); + + if(ss->face_normals) + MEM_freeN(ss->face_normals); + MEM_freeN(ss); *ssp = NULL; diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 6e95fe7ebc7..7c83431ebd8 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1615,7 +1615,7 @@ static void ccgDM_glNormalFast(float *a, float *b, float *c, float *d) } /* Only used by non-editmesh types */ -static void ccgDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs)) { +static void ccgDM_drawFacesSolid(DerivedMesh *dm, void *tree, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h new file mode 100644 index 00000000000..edc363e65a3 --- /dev/null +++ b/source/blender/blenlib/BLI_pbvh.h @@ -0,0 +1,62 @@ +struct MFace; +struct MVert; +struct PBVH; + +/* Returns 1 if the search should continue from this node, 0 otherwise */ +typedef int (*BLI_pbvh_SearchCallback)(float bb_min[3], float bb_max[3], + void *data); + +typedef void (*BLI_pbvh_HitCallback)(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data); +int BLI_pbvh_search_range(float bb_min[3], float bb_max[3], void *data_v); + +typedef enum { + PBVH_SEARCH_NORMAL, + + /* When the callback returns a 1 for a leaf node, that node will be + marked as modified */ + PBVH_SEARCH_MARK_MODIFIED, + + /* Update gpu data for modified nodes. Also clears the Modified flag. */ + PBVH_SEARCH_MODIFIED, + + + PBVH_SEARCH_UPDATE +} PBVH_SearchMode; + +/* Pass the node as data to the callback */ +#define PBVH_NodeData (void*)0xa +/* Pass the draw buffers as data to the callback */ +#define PBVH_DrawData (void*)0xb + +void BLI_pbvh_search(struct PBVH *bvh, BLI_pbvh_SearchCallback scb, + void *search_data, BLI_pbvh_HitCallback hcb, + void *hit_data, PBVH_SearchMode mode); + +/* The hit callback is called for all leaf nodes intersecting the ray; + it's up to the callback to find the primitive within the leaves that is + hit first */ +void BLI_pbvh_raycast(struct PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, + float ray_start[3], float ray_normal[3]); + + +int BLI_pbvh_update_search_cb(float bb_min[3], float bb_max[3], void *data_v); + +/* Get the bounding box around all nodes that have been marked as modified. */ +void BLI_pbvh_modified_bounding_box(struct PBVH *bvh, + float bb_min[3], float bb_max[3]); +void BLI_pbvh_reset_modified_bounding_box(struct PBVH *bvh); + +/* Lock is off by default, turn on to stop redraw from clearing the modified + flag from nodes */ +void BLI_pbvh_toggle_modified_lock(struct PBVH *bvh); + + + +struct PBVH *BLI_pbvh_new(BLI_pbvh_HitCallback update_cb, void *update_cb_data); +void BLI_pbvh_build(struct PBVH *bvh, struct MFace *faces, struct MVert *verts, + int totface, int totvert); +void BLI_pbvh_free(struct PBVH *bvh); + +void BLI_pbvh_set_source(struct PBVH *bvh, struct MVert *, struct MFace *mface); diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 4ed9eb4b007..00a5440bc75 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -28,6 +28,7 @@ FILE(GLOB SRC intern/*.c) SET(INC . ../makesdna ../blenkernel ../../../intern/guardedalloc ../include + ../gpu ${FREETYPE_INCLUDE_DIRS} ${ZLIB_INC} ) diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript index fc586de5085..bca9399bc27 100644 --- a/source/blender/blenlib/SConscript +++ b/source/blender/blenlib/SConscript @@ -4,7 +4,7 @@ Import ('env') sources = env.Glob('intern/*.c') cflags='' -incs = '. ../makesdna ../blenkernel #/intern/guardedalloc ../editors/include' +incs = '. ../makesdna ../blenkernel #/intern/guardedalloc ../editors/include ../gpu' incs += ' ' + env['BF_FREETYPE_INC'] incs += ' ' + env['BF_ZLIB_INC'] defs = '' diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c index 6c9ae78bac4..85cd46e6f33 100644 --- a/source/blender/blenlib/intern/arithb.c +++ b/source/blender/blenlib/intern/arithb.c @@ -4324,7 +4324,7 @@ int RayIntersectsTriangle(float p1[3], float d[3], float v0[3], float v1[3], flo Crossf(p, d, e2); a = Inpf(e1, p); - if ((a > -0.000001) && (a < 0.000001)) return 0; + if ((a > -FLT_EPSILON) && (a < FLT_EPSILON)) return 0; f = 1.0f/a; VecSubf(s, p1, v0); diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c new file mode 100644 index 00000000000..98492a8f429 --- /dev/null +++ b/source/blender/blenlib/intern/pbvh.c @@ -0,0 +1,665 @@ +#include "MEM_guardedalloc.h" + +#include "DNA_meshdata_types.h" + +#include "BLI_arithb.h" +#include "BLI_ghash.h" +#include "BLI_pbvh.h" + +#include "BKE_utildefines.h" + +#include "gpu_buffers.h" + +#include +#include +#include + +#define LEAF_LIMIT 10000 + +//#define PERFCNTRS + +/* Bitmap */ +typedef char* BLI_bitmap; + +BLI_bitmap BLI_bitmap_new(int tot) +{ + return MEM_callocN((tot >> 3) + 1, "BLI bitmap"); +} + +int BLI_bitmap_get(BLI_bitmap b, int index) +{ + return b[index >> 3] & (1 << (index & 7)); +} + +void BLI_bitmap_set(BLI_bitmap b, int index) +{ + b[index >> 3] |= (1 << (index & 7)); +} + +void BLI_bitmap_clear(BLI_bitmap b, int index) +{ + b[index >> 3] &= ~(1 << (index & 7)); +} + +typedef enum { + PBVH_Leaf = 1, + PBVH_Modified = 2 +} NodeFlags; + +/* Axis-aligned bounding box */ +typedef struct { + float bmin[3], bmax[3]; +} BB; + +/* Axis-aligned bounding box with centroid */ +typedef struct { + float bmin[3], bmax[3], bcentroid[3]; +} BBC; + +typedef struct { + /* Opaque handle for drawing code */ + void *draw_buffers; + + int *vert_indices; + + /* Voxel bounds */ + BB vb; + + /* For internal nodes */ + int children_offset; + + /* Range of faces used in the node */ + int face_offset; + + unsigned short totface; + unsigned short uniq_verts, face_verts; + + char flag; +} Node; + +typedef struct PBVH { + Node *nodes; + int node_mem_count, totnode; + + int *face_indices; + int totface; + + BB modified_bb; + + BLI_pbvh_HitCallback update_cb; + void *update_cb_data; + + /* Mesh data */ + MVert *verts; + MFace *faces; + + int modified_lock; + + /* Only used during BVH build and update, + don't need to remain valid after */ + BLI_bitmap vert_bitmap; + +#ifdef PERFCNTRS + int perf_modified; +#endif +} PBVH; + +static void BB_reset(BB *bb) +{ + bb->bmin[0] = bb->bmin[1] = bb->bmin[2] = FLT_MAX; + bb->bmax[0] = bb->bmax[1] = bb->bmax[2] = -FLT_MAX; +} + +/* Expand the bounding box to include a new coordinate */ +static void BB_expand(BB *bb, float co[3]) +{ + if(co[0] < bb->bmin[0]) bb->bmin[0] = co[0]; + if(co[1] < bb->bmin[1]) bb->bmin[1] = co[1]; + if(co[2] < bb->bmin[2]) bb->bmin[2] = co[2]; + + if(co[0] > bb->bmax[0]) bb->bmax[0] = co[0]; + if(co[1] > bb->bmax[1]) bb->bmax[1] = co[1]; + if(co[2] > bb->bmax[2]) bb->bmax[2] = co[2]; +} + +/* Expand the bounding box to include another bounding box */ +static void BB_expand_with_bb(BB *bb, BB *bb2) +{ + int i; + for(i = 0; i < 3; ++i) { + bb->bmin[i] = MIN2(bb->bmin[i], bb2->bmin[i]); + bb->bmax[i] = MAX2(bb->bmax[i], bb2->bmax[i]); + } +} + +/* Return 0, 1, or 2 to indicate the widest axis of the bounding box */ +static int BB_widest_axis(BB *bb) +{ + float dim[3]; + int i; + + for(i = 0; i < 3; ++i) + dim[i] = bb->bmax[i] - bb->bmin[i]; + + if(dim[0] > dim[1]) { + if(dim[0] > dim[2]) + return 0; + else + return 2; + } + else { + if(dim[1] > dim[2]) + return 1; + else + return 2; + } +} + +static void BBC_update_centroid(BBC *bbc) +{ + int i; + for(i = 0; i < 3; ++i) + bbc->bcentroid[i] = (bbc->bmin[i] + bbc->bmax[i]) * 0.5f; +} + +/* Not recursive */ +static void update_node_vb(PBVH *bvh, Node *node) +{ + BB_reset(&node->vb); + + if(node->flag & PBVH_Leaf) { + int i, j; + for(i = node->face_offset + node->totface - 1; + i >= node->face_offset; --i) { + MFace *f = bvh->faces + bvh->face_indices[i]; + const int sides = f->v4 ? 4 : 3; + + for(j = 0; j < sides; ++j) + BB_expand(&node->vb, + bvh->verts[*((&f->v1) + j)].co); + } + } + else { + BB_expand_with_bb(&node->vb, + &bvh->nodes[node->children_offset].vb); + BB_expand_with_bb(&node->vb, + &bvh->nodes[node->children_offset + 1].vb); + } +} + +/* Adapted from BLI_kdopbvh.c */ +/* Returns the index of the first element on the right of the partition */ +static int partition_indices(int *face_indices, int lo, int hi, int axis, + float mid, BBC *prim_bbc) +{ + int i=lo, j=hi; + for(;;) { + for(; prim_bbc[face_indices[i]].bcentroid[axis] < mid; i++); + for(; mid < prim_bbc[face_indices[j]].bcentroid[axis]; j--); + + if(!(i < j)) + return i; + + SWAP(int, face_indices[i], face_indices[j]); + i++; + } +} + +void check_partitioning(int *face_indices, int lo, int hi, int axis, + float mid, BBC *prim_bbc, int index_of_2nd_partition) +{ + int i; + for(i = lo; i <= hi; ++i) { + const float c = prim_bbc[face_indices[i]].bcentroid[axis]; + + if((i < index_of_2nd_partition && c > mid) || + (i > index_of_2nd_partition && c < mid)) { + printf("fail\n"); + } + } +} + +static void grow_nodes(PBVH *bvh, int totnode) +{ + if(totnode > bvh->node_mem_count) { + Node *prev = bvh->nodes; + bvh->node_mem_count *= 1.33; + if(bvh->node_mem_count < totnode) + bvh->node_mem_count = totnode; + bvh->nodes = MEM_callocN(sizeof(Node) * bvh->node_mem_count, + "bvh nodes"); + memcpy(bvh->nodes, prev, bvh->totnode * sizeof(Node)); + MEM_freeN(prev); + } + + bvh->totnode = totnode; +} + +/* Add a vertex to the map, with a positive value for unique vertices and + a negative value for additional vertices */ +static void map_insert_vert(PBVH *bvh, GHash *map, + unsigned short *face_verts, + unsigned short *uniq_verts, int vertex) +{ + void *value, *key = SET_INT_IN_POINTER(vertex); + + if(!BLI_ghash_haskey(map, key)) { + if(BLI_bitmap_get(bvh->vert_bitmap, vertex)) { + value = SET_INT_IN_POINTER(-(*face_verts) - 1); + ++(*face_verts); + } + else { + BLI_bitmap_set(bvh->vert_bitmap, vertex); + value = SET_INT_IN_POINTER(*uniq_verts); + ++(*uniq_verts); + } + + BLI_ghash_insert(map, key, value); + } +} + +/* Find vertices used by the faces in this node and update the draw buffers */ +static void build_leaf_node(PBVH *bvh, Node *node) +{ + GHashIterator *iter; + GHash *map; + int i, j; + + map = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp); + + node->uniq_verts = node->face_verts = 0; + + for(i = node->face_offset + node->totface - 1; + i >= node->face_offset; --i) { + MFace *f = bvh->faces + bvh->face_indices[i]; + int sides = f->v4 ? 4 : 3; + + for(j = 0; j < sides; ++j) { + map_insert_vert(bvh, map, &node->face_verts, + &node->uniq_verts, (&f->v1)[j]); + } + } + + node->vert_indices = MEM_callocN(sizeof(int) * + (node->uniq_verts + node->face_verts), + "bvh node vert indices"); + + /* Build the vertex list, unique verts first */ + for(iter = BLI_ghashIterator_new(map), i = 0; + !BLI_ghashIterator_isDone(iter); + BLI_ghashIterator_step(iter), ++i) { + void *value = BLI_ghashIterator_getValue(iter); + int ndx = GET_INT_FROM_POINTER(value); + + if(ndx < 0) + ndx = -ndx + node->uniq_verts - 1; + + node->vert_indices[ndx] = + GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(iter)); + } + + node->draw_buffers = + GPU_build_buffers(map, bvh->verts, bvh->faces, + bvh->face_indices + node->face_offset, + node->totface, node->vert_indices, + node->uniq_verts, + node->uniq_verts + node->face_verts); + + BLI_ghash_free(map, NULL, NULL); +} + +/* Recursively build a node in the tree + + vb is the voxel box around all of the primitives contained in + this node. + + cb is the bounding box around all the centroids of the primitives + contained in this node + + offset and start indicate a range in the array of primitive indices +*/ + +void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, + int offset, int count) +{ + int i, axis, end; + BB cb_backing; + + /* Decide whether this is a leaf or not */ + if(count <= LEAF_LIMIT) { + bvh->nodes[node_index].flag |= PBVH_Leaf; + + bvh->nodes[node_index].face_offset = offset; + bvh->nodes[node_index].totface = count; + + /* Still need vb for searches */ + BB_reset(&bvh->nodes[node_index].vb); + for(i = offset + count - 1; i >= offset; --i) { + BB_expand_with_bb(&bvh->nodes[node_index].vb, + (BB*)(prim_bbc + + bvh->face_indices[i])); + } + + build_leaf_node(bvh, bvh->nodes + node_index); + + /* Done with this subtree */ + return; + } + else { + BB_reset(&bvh->nodes[node_index].vb); + bvh->nodes[node_index].children_offset = bvh->totnode; + grow_nodes(bvh, bvh->totnode + 2); + + if(!cb) { + cb = &cb_backing; + BB_reset(cb); + for(i = offset + count - 1; i >= offset; --i) + BB_expand(cb, prim_bbc[bvh->face_indices[i]].bcentroid); + } + } + + axis = BB_widest_axis(cb); + + for(i = offset + count - 1; i >= offset; --i) { + BB_expand_with_bb(&bvh->nodes[node_index].vb, + (BB*)(prim_bbc + bvh->face_indices[i])); + } + + end = partition_indices(bvh->face_indices, offset, offset + count - 1, + axis, + (cb->bmax[axis] + cb->bmin[axis]) * 0.5f, + prim_bbc); + check_partitioning(bvh->face_indices, offset, offset + count - 1, + axis, + (cb->bmax[axis] + cb->bmin[axis]) * 0.5f, + prim_bbc, end); + + build_sub(bvh, bvh->nodes[node_index].children_offset, NULL, + prim_bbc, offset, end - offset); + build_sub(bvh, bvh->nodes[node_index].children_offset + 1, NULL, + prim_bbc, end, offset + count - end); +} + +/* Do a full rebuild */ +void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totvert) +{ + BBC *prim_bbc = NULL; + BB cb; + int i, j; + + if(totface != bvh->totface) { + bvh->totface = totface; + if(bvh->nodes) MEM_freeN(bvh->nodes); + if(bvh->face_indices) MEM_freeN(bvh->face_indices); + bvh->face_indices = MEM_callocN(sizeof(int) * totface, + "bvh face indices"); + for(i = 0; i < totface; ++i) + bvh->face_indices[i] = i; + bvh->totnode = 0; + if(bvh->node_mem_count < 100) { + bvh->node_mem_count = 100; + bvh->nodes = MEM_callocN(sizeof(Node) * + bvh->node_mem_count, + "bvh initial nodes"); + } + } + + bvh->faces = faces; + bvh->verts = verts; + bvh->vert_bitmap = BLI_bitmap_new(totvert); + + BB_reset(&bvh->modified_bb); + + BB_reset(&cb); + + /* For each face, store the AABB and the AABB centroid */ + prim_bbc = MEM_mallocN(sizeof(BBC) * totface, "prim_bbc"); + + for(i = 0; i < totface; ++i) { + MFace *f = faces + i; + const int sides = f->v4 ? 4 : 3; + BBC *bbc = prim_bbc + i; + + BB_reset((BB*)bbc); + + for(j = 0; j < sides; ++j) + BB_expand((BB*)bbc, verts[(&f->v1)[j]].co); + + BBC_update_centroid(bbc); + + BB_expand(&cb, bbc->bcentroid); + } + + bvh->totnode = 1; + build_sub(bvh, 0, &cb, prim_bbc, 0, totface); + + MEM_freeN(prim_bbc); + MEM_freeN(bvh->vert_bitmap); +} + +PBVH *BLI_pbvh_new(BLI_pbvh_HitCallback update_cb, void *update_cb_data) +{ + PBVH *bvh = MEM_callocN(sizeof(PBVH), "pbvh"); + + bvh->update_cb = update_cb; + bvh->update_cb_data = update_cb_data; + + return bvh; +} + +void BLI_pbvh_free(PBVH *bvh) +{ + int i; + + for(i = 0; i < bvh->totnode; ++i) { + if(bvh->nodes[i].flag & PBVH_Leaf) { + GPU_free_buffers(bvh->nodes[i].draw_buffers); + MEM_freeN(bvh->nodes[i].vert_indices); + } + } + + MEM_freeN(bvh->nodes); + MEM_freeN(bvh->face_indices); + MEM_freeN(bvh); +} + +void BLI_pbvh_set_source(PBVH *bvh, MVert *mvert, MFace *mface) +{ + bvh->verts = mvert; + bvh->faces = mface; +} + +static void do_hit_callback(PBVH *bvh, Node *node, + BLI_pbvh_HitCallback cb, void *data) +{ + if(cb) { + cb(bvh->face_indices + node->face_offset, node->vert_indices, + node->totface, node->uniq_verts, data); + } +} + +static int search_sub(PBVH *bvh, Node *node, + BLI_pbvh_SearchCallback scb, void *search_data_f, + BLI_pbvh_HitCallback hcb, void *hit_data_f, + PBVH_SearchMode mode) +{ + void *search_data = search_data_f; + void *hit_data = hit_data_f; + + if(search_data_f == PBVH_NodeData) + search_data = &node->flag; + if(hit_data_f == PBVH_DrawData) + hit_data = node->draw_buffers; + + if(scb(node->vb.bmin, node->vb.bmax, search_data)) { + if(node->flag & PBVH_Leaf) { + switch(mode) { + case PBVH_SEARCH_MARK_MODIFIED: + node->flag |= PBVH_Modified; +#ifdef PERFCNTRS + ++bvh->perf_modified; +#endif + break; + case PBVH_SEARCH_MODIFIED: + if(node->flag & PBVH_Modified) { + if(bvh->update_cb) { + do_hit_callback + (bvh, node, + bvh->update_cb, + bvh->update_cb_data); + } + + GPU_update_buffers(node->draw_buffers, + bvh->verts, + node->vert_indices, + node->uniq_verts + + node->face_verts); + } + default: + break; + } + + do_hit_callback(bvh, node, hcb, hit_data); + } + else { + int mod = 0; + if(search_sub(bvh, bvh->nodes + node->children_offset, + scb, search_data_f, hcb,hit_data_f, mode)) + mod = 1; + if(search_sub(bvh, + bvh->nodes + node->children_offset + 1, + scb, search_data_f, hcb,hit_data_f, mode)) + mod = 1; + + if(mod) + node->flag |= PBVH_Modified; + } + } + + if(mode == PBVH_SEARCH_MODIFIED) { +#ifdef PERFCNTRS + if(node->flag & PBVH_Modified && node->flag & PBVH_Leaf) + --bvh->perf_modified; +#endif + if(!bvh->modified_lock) + node->flag &= ~PBVH_Modified; + } + else if(mode == PBVH_SEARCH_UPDATE) { + if(node->flag & PBVH_Modified) { + update_node_vb(bvh, node); + if(node->flag & PBVH_Leaf) + BB_expand_with_bb(&bvh->modified_bb, &node->vb); + } + } + + return node->flag & PBVH_Modified; +} + +void BLI_pbvh_search(PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data, + BLI_pbvh_HitCallback hcb, void *hit_data, + PBVH_SearchMode mode) +{ +#ifdef PERFCNTRS + printf("search mode=%s\n", + mode==PBVH_SEARCH_MARK_MODIFIED?"mark-modified": + mode==PBVH_SEARCH_MODIFIED?"modified": + mode==PBVH_SEARCH_UPDATE?"update": + mode==PBVH_SEARCH_NORMAL?"normal":"unknown-mode"); + if(mode == PBVH_SEARCH_MARK_MODIFIED) + bvh->perf_modified = 0; +#endif + + search_sub(bvh, bvh->nodes, scb, search_data, hcb, hit_data, mode); +#ifdef PERFCNTRS + printf("%d nodes marked modified\n", bvh->perf_modified); + printf("search complete\n\n"); +#endif +} + +typedef struct { + /* Ray */ + float start[3]; + int sign[3]; + float inv_dir[3]; +} RaycastData; + +/* Adapted from here: http://www.gamedev.net/community/forums/topic.asp?topic_id=459973 */ +static int ray_aabb_intersect(float bb_min[3], float bb_max[3], void *data_v) +{ + RaycastData *ray = data_v; + float bbox[2][3]; + float tmin, tmax, tymin, tymax, tzmin, tzmax; + + VecCopyf(bbox[0], bb_min); + VecCopyf(bbox[1], bb_max); + + tmin = (bbox[ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0]; + tmax = (bbox[1-ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0]; + + tymin = (bbox[ray->sign[1]][1] - ray->start[1]) * ray->inv_dir[1]; + tymax = (bbox[1-ray->sign[1]][1] - ray->start[1]) * ray->inv_dir[1]; + + if((tmin > tymax) || (tymin > tmax)) + return 0; + if(tymin > tmin) + tmin = tymin; + if(tymax < tmax) + tmax = tymax; + + tzmin = (bbox[ray->sign[2]][2] - ray->start[2]) * ray->inv_dir[2]; + tzmax = (bbox[1-ray->sign[2]][2] - ray->start[2]) * ray->inv_dir[2]; + + if((tmin > tzmax) || (tzmin > tmax)) + return 0; + + return 1; + + /* XXX: Not sure about this? + if(tzmin > tmin) + tmin = tzmin; + if(tzmax < tmax) + tmax = tzmax; + return ((tmin < t1) && (tmax > t0)); + */ + +} + +void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, + float ray_start[3], float ray_normal[3]) +{ + RaycastData rcd; + + VecCopyf(rcd.start, ray_start); + rcd.inv_dir[0] = 1.0f / ray_normal[0]; + rcd.inv_dir[1] = 1.0f / ray_normal[1]; + rcd.inv_dir[2] = 1.0f / ray_normal[2]; + rcd.sign[0] = rcd.inv_dir[0] < 0; + rcd.sign[1] = rcd.inv_dir[1] < 0; + rcd.sign[2] = rcd.inv_dir[2] < 0; + + BLI_pbvh_search(bvh, ray_aabb_intersect, &rcd, cb, data, + PBVH_SEARCH_NORMAL); +} + +int BLI_pbvh_update_search_cb(float bb_min[3], float bb_max[3], void *data_v) +{ + int *data = data_v; + + return ((*data) & PBVH_Modified); +} + +void BLI_pbvh_modified_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]) +{ + VecCopyf(bb_min, bvh->modified_bb.bmin); + VecCopyf(bb_max, bvh->modified_bb.bmax); +} + +void BLI_pbvh_reset_modified_bounding_box(PBVH *bvh) +{ + BB_reset(&bvh->modified_bb); +} + +void BLI_pbvh_toggle_modified_lock(PBVH *bvh) +{ + bvh->modified_lock = !bvh->modified_lock; +} diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h index 764efb4ef0c..12ebd74b64b 100644 --- a/source/blender/editors/include/ED_sculpt.h +++ b/source/blender/editors/include/ED_sculpt.h @@ -28,11 +28,18 @@ #ifndef ED_SCULPT_H #define ED_SCULPT_H +struct ARegion; struct bContext; +struct Object; +struct RegionView3D; struct wmKeyConfig; +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); + /* paint_ops.c */ void ED_operatortypes_paint(void); diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index be2822d8c49..d9220387073 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -30,6 +30,7 @@ /* ********* exports for space_view3d/ module ********** */ struct ARegion; +struct BoundBox; struct View3D; struct RegionView3D; struct ViewContext; @@ -44,6 +45,7 @@ struct ImBuf; struct Scene; struct bContext; struct Main; +struct rcti; /* for derivedmesh drawing callbacks, for view3d_select, .... */ typedef struct ViewContext { @@ -80,6 +82,8 @@ void request_depth_update(struct RegionView3D *rv3d); /* Projection */ #define IS_CLIPPED 12000 +void view3d_calculate_clipping(struct BoundBox *bb, float planes[4][4], struct bglMats *mats, struct rcti *rect); + void project_short(struct ARegion *ar, float *vec, short *adr); void project_short_noclip(struct ARegion *ar, float *vec, short *adr); @@ -125,7 +129,7 @@ short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigne void view3d_set_viewcontext(struct bContext *C, struct ViewContext *vc); void view3d_operator_needs_opengl(const struct bContext *C); void view3d_get_view_aligned_coordinate(struct ViewContext *vc, float *fp, short mval[2]); -void view3d_get_transformation(struct ViewContext *vc, struct Object *ob, struct bglMats *mats); +void view3d_get_transformation(struct ARegion *ar, struct RegionView3D *rv3d, struct Object *ob, struct bglMats *mats); /* XXX should move to arithb.c */ int edge_inside_circle(short centx, short centy, short rad, short x1, short y1, short x2, short y2); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 1b0dc95480a..39a8a026afb 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -718,6 +718,8 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op) MultiresModifierData *mmd= ptr.data; multiresModifier_subdivide(mmd, ob, 1, 0, mmd->simple); + + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); return OPERATOR_FINISHED; diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index ee1a21db7e5..0681cf0fe0d 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -362,7 +362,7 @@ static void PE_set_view3d_data(bContext *C, PEData *data) PE_set_data(C, data); view3d_set_viewcontext(C, &data->vc); - view3d_get_transformation(&data->vc, data->ob, &data->mats); + view3d_get_transformation(data->vc.ar, data->vc.rv3d, data->ob, &data->mats); if((data->vc.v3d->drawtype>OB_WIRE) && (data->vc.v3d->flag & V3D_ZBUF_SELECT)) view3d_validate_backbuf(&data->vc); diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index b5748d7bc88..0689e8e63d7 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -43,11 +43,13 @@ struct ARegion; struct VPaint; /* paint_stroke.c */ +typedef int (*StrokeGetLocation)(struct bContext *C, struct PaintStroke *stroke, float location[3], float mouse[2]); typedef int (*StrokeTestStart)(struct bContext *C, struct wmOperator *op, struct wmEvent *event); typedef void (*StrokeUpdateStep)(struct bContext *C, struct PaintStroke *stroke, struct PointerRNA *itemptr); typedef void (*StrokeDone)(struct bContext *C, struct PaintStroke *stroke); -struct PaintStroke *paint_stroke_new(struct bContext *C, StrokeTestStart test_start, +struct PaintStroke *paint_stroke_new(struct bContext *C, + StrokeGetLocation get_location, StrokeTestStart test_start, StrokeUpdateStep update_step, StrokeDone done); int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event); int paint_stroke_exec(struct bContext *C, struct wmOperator *op); diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 6e256bee7f2..f8ffaacc0b7 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -73,6 +73,7 @@ typedef struct PaintStroke { passes over the mesh */ int stroke_started; + StrokeGetLocation get_location; StrokeTestStart test_start; StrokeUpdateStep update_step; StrokeDone done; @@ -118,12 +119,13 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *customdata) static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse[2]) { PointerRNA itemptr; - float cur_depth, pressure = 1; - float center[3]; + float pressure = 1; + float center[3] = {0, 0, 0}; PaintStroke *stroke = op->customdata; - cur_depth = read_cached_depth(&stroke->vc, mouse[0], mouse[1]); - view3d_unproject(&stroke->mats, center, mouse[0], mouse[1], cur_depth); + /* XXX: can remove the if statement once all modes have this */ + if(stroke->get_location) + stroke->get_location(C, stroke, center, mouse); /* Tablet */ if(event->custom == EVT_DATA_TABLET) { @@ -208,15 +210,19 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const /**** Public API ****/ -PaintStroke *paint_stroke_new(bContext *C, StrokeTestStart test_start, - StrokeUpdateStep update_step, StrokeDone done) +PaintStroke *paint_stroke_new(bContext *C, + StrokeGetLocation get_location, + StrokeTestStart test_start, + StrokeUpdateStep update_step, + StrokeDone done) { PaintStroke *stroke = MEM_callocN(sizeof(PaintStroke), "PaintStroke"); stroke->brush = paint_brush(paint_get_active(CTX_data_scene(C))); view3d_set_viewcontext(C, &stroke->vc); - view3d_get_transformation(&stroke->vc, stroke->vc.obact, &stroke->mats); + view3d_get_transformation(stroke->vc.ar, stroke->vc.rv3d, stroke->vc.obact, &stroke->mats); + stroke->get_location = get_location; stroke->test_start = test_start; stroke->update_step = update_step; stroke->done = done; @@ -226,7 +232,6 @@ PaintStroke *paint_stroke_new(bContext *C, StrokeTestStart test_start, int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) { - ARegion *ar = CTX_wm_region(C); PaintStroke *stroke = op->customdata; float mouse[2]; @@ -246,20 +251,20 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) stroke->timer = WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, stroke->brush->rate); } - ED_region_tag_redraw(ar); + //ED_region_tag_redraw(ar); } 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); + ;//ED_region_tag_redraw(ar); } else paint_brush_stroke_add_step(C, op, event, mouse); } else - ED_region_tag_redraw(ar); + ;//ED_region_tag_redraw(ar); } /* TODO: fix hardcoded event here */ diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 1dac98780da..c4379ac187b 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1493,7 +1493,7 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke) static int wpaint_invoke(bContext *C, wmOperator *op, wmEvent *event) { - op->customdata = paint_stroke_new(C, wpaint_stroke_test_start, + op->customdata = paint_stroke_new(C, NULL, wpaint_stroke_test_start, wpaint_stroke_update_step, wpaint_stroke_done); @@ -1792,7 +1792,7 @@ static void vpaint_stroke_done(bContext *C, struct PaintStroke *stroke) static int vpaint_invoke(bContext *C, wmOperator *op, wmEvent *event) { - op->customdata = paint_stroke_new(C, vpaint_stroke_test_start, + op->customdata = paint_stroke_new(C, NULL, vpaint_stroke_test_start, vpaint_stroke_update_step, vpaint_stroke_done); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index c4c7f436f12..b4b002283fd 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -35,6 +35,8 @@ #include "BLI_arithb.h" #include "BLI_blenlib.h" #include "BLI_dynstr.h" +#include "BLI_ghash.h" +#include "BLI_pbvh.h" #include "DNA_armature_types.h" #include "DNA_brush_types.h" @@ -52,6 +54,7 @@ #include "DNA_color_types.h" #include "BKE_brush.h" +#include "BKE_cdderivedmesh.h" #include "BKE_context.h" #include "BKE_customdata.h" #include "BKE_DerivedMesh.h" @@ -131,7 +134,6 @@ typedef struct StrokeCache { int flag; float clip_tolerance[3]; float initial_mouse[2]; - float depth; /* Variants */ float radius; @@ -147,6 +149,10 @@ typedef struct StrokeCache { bglMats *mats; + /* Clean this up! */ + ViewContext *vc; + Brush *brush; + short (*orig_norms)[3]; /* Copy of the mesh vertices' normals */ float (*face_norms)[3]; /* Copy of the mesh faces' normals */ float rotation; /* Texture rotation (radians) for anchored and rake modes */ @@ -159,20 +165,6 @@ typedef struct StrokeCache { int last_rake[2]; /* Last location of updating rake rotation */ } StrokeCache; -typedef struct RectNode { - struct RectNode *next, *prev; - rcti r; -} RectNode; - -/* Used to store to 2D screen coordinates of each vertex in the mesh. */ -typedef struct ProjVert { - short co[2]; - - /* Used to mark whether a vertex is inside a rough bounding box - containing the brush. */ - char inside; -} ProjVert; - /* ===== OPENGL ===== * * Simple functions to get data from the GL @@ -189,7 +181,7 @@ static void projectf(bglMats *mats, const float v[3], float p[2]) p[1]= uy; } -static void project(bglMats *mats, const float v[3], short p[2]) +/*XXX: static void project(bglMats *mats, const float v[3], short p[2]) { float f[2]; projectf(mats, v, f); @@ -197,6 +189,120 @@ static void project(bglMats *mats, const float v[3], short p[2]) p[0]= f[0]; p[1]= f[1]; } +*/ + +/*** BVH Tree ***/ + +/* Updates all the face and vertex normals in a node + + Note: the correctness of some vertex normals will be a little + off, not sure if this will be noticeable or not */ +static void sculpt_update_normals(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data) +{ + SculptSession *ss = data; + int i; + + /* Update face normals */ + for(i = 0; i < totface; ++i) { + MFace *f = ss->mface + face_indices[i]; + float *fn = ss->face_normals + face_indices[i] * 3; + + if(f->v4) + CalcNormFloat4(ss->mvert[f->v1].co, ss->mvert[f->v2].co, + ss->mvert[f->v3].co, ss->mvert[f->v4].co, fn); + else + CalcNormFloat(ss->mvert[f->v1].co, ss->mvert[f->v2].co, + ss->mvert[f->v3].co, fn); + } + + /* Update vertex normals */ + for(i = 0; i < totvert; ++i) { + const int v = vert_indices[i]; + float no[3] = {0,0,0}; + IndexNode *face; + + for(face = ss->fmap[v].first; face; face = face->next) + VecAddf(no, no, ss->face_normals + face->index*3); + + Normalize(no); + + ss->mvert[v].no[0] = no[0] * 32767; + ss->mvert[v].no[1] = no[1] * 32767; + ss->mvert[v].no[2] = no[2] * 32767; + } +} + +static void sculpt_rebuild_tree(SculptSession *ss) +{ + if(ss->tree) + BLI_pbvh_free(ss->tree); + + ss->tree = BLI_pbvh_new(sculpt_update_normals, ss); + BLI_pbvh_build(ss->tree, ss->mface, ss->mvert, ss->totface, + ss->totvert); +} + +/* Get a screen-space rectangle of the modified area */ +int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, + Object *ob, rcti *rect) +{ + float bb_min[3], bb_max[3], pmat[4][4]; + int i, j, k; + + view3d_get_object_project_mat(rv3d, ob, pmat); + + BLI_pbvh_modified_bounding_box(ob->sculpt->tree, bb_min, bb_max); + + rect->xmin = rect->ymin = INT_MAX; + rect->xmax = rect->ymax = INT_MIN; + + for(i = 0; i < 2; ++i) { + for(j = 0; j < 2; ++j) { + for(k = 0; k < 2; ++k) { + float vec[3], proj[2]; + vec[0] = i ? bb_min[0] : bb_max[0]; + vec[1] = j ? bb_min[1] : bb_max[1]; + vec[2] = k ? bb_min[2] : bb_max[2]; + view3d_project_float(ar, vec, proj, pmat); + rect->xmin = MIN2(rect->xmin, proj[0]); + rect->xmax = MAX2(rect->xmax, proj[0]); + rect->ymin = MIN2(rect->ymin, proj[1]); + rect->ymax = MAX2(rect->ymax, proj[1]); + } + } + } + + return rect->xmin < rect->xmax && rect->ymin < rect->ymax; +} + +void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, + RegionView3D *rv3d, Object *ob) +{ + BoundBox *bb = MEM_callocN(sizeof(BoundBox), "sculpt boundbox"); + bglMats mats; + int i; + rcti rect; + + view3d_get_transformation(ar, rv3d, ob, &mats); + sculpt_get_redraw_rect(ar, rv3d,ob, &rect); + BLI_pbvh_reset_modified_bounding_box(ob->sculpt->tree); + + + rect.xmin += 2; + rect.xmax -= 2; + rect.ymin += 2; + rect.ymax -= 2; + + view3d_calculate_clipping(bb, planes, &mats, &rect); + + for(i = 0; i < 16; ++i) + ((float*)planes)[i] = -((float*)planes)[i]; + + MEM_freeN(bb); +} + /* ===== Sculpting ===== * @@ -306,12 +412,9 @@ static void do_draw_brush(Sculpt *sd, SculptSession *ss, const ListBase* active_ { float area_normal[3]; ActiveData *node= active_verts->first; - float* buffer; calc_area_normal(sd, ss, area_normal, active_verts); - buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; - while(node){ float *co= ss->mvert[node->Index].co; @@ -319,20 +422,10 @@ static void do_draw_brush(Sculpt *sd, SculptSession *ss, const ListBase* active_ co[1]+area_normal[1]*ss->cache->radius*node->Fade*ss->cache->scale[1], co[2]+area_normal[2]*ss->cache->radius*node->Fade*ss->cache->scale[2]}; - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(sd, ss, &buffer[cur->element*3], val); - cur = cur->next; - } - } - sculpt_clip(sd, ss, co, val); node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } /* For the smooth brush, uses the neighboring vertices around vert to calculate @@ -382,7 +475,6 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts) { ActiveData *node= active_verts->first; - float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; int i; for(i = 0; i < 2; ++i) { @@ -396,24 +488,15 @@ static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active val[2] = co[2]+(avg[2]-co[2])*node->Fade; sculpt_clip(s, ss, co, val); - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(s, ss, &buffer[cur->element*3], val); - cur = cur->next; - } - } + node= node->next; } } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } static void do_pinch_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts) { ActiveData *node= active_verts->first; - float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; while(node) { float *co= ss->mvert[node->Index].co; @@ -421,19 +504,9 @@ static void do_pinch_brush(Sculpt *s, SculptSession *ss, const ListBase* active_ co[1]+(ss->cache->location[1]-co[1])*node->Fade, co[2]+(ss->cache->location[2]-co[2])*node->Fade}; - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(s, ss, &buffer[cur->element*3], val); - cur = cur->next; - } - } - sculpt_clip(s, ss, co, val); node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } static void do_grab_brush(Sculpt *sd, SculptSession *ss) @@ -441,7 +514,6 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss) ActiveData *node= ss->cache->grab_active_verts[ss->cache->symmetry].first; float add[3]; float grab_delta[3]; - float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; VecCopyf(grab_delta, ss->cache->grab_delta_symmetry); @@ -452,28 +524,16 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss) VecMulf(add, node->Fade); VecAddf(add, add, co); - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(sd, ss, &buffer[cur->element*3], add); - cur = cur->next; - } - } - sculpt_clip(sd, ss, co, add); node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); - } static void do_layer_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts) { float area_normal[3]; ActiveData *node= active_verts->first; - float *buffer; float lim= ss->cache->radius / 4; if(ss->cache->flip) @@ -481,7 +541,6 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, const ListBase *active calc_area_normal(sd, ss, area_normal, active_verts); - buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; while(node){ float *disp= &ss->layer_disps[node->Index]; float *co= ss->mvert[node->Index].co; @@ -497,27 +556,16 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, const ListBase *active val[1] = ss->mesh_co_orig[node->Index][1]+area_normal[1] * *disp*ss->cache->scale[1]; val[2] = ss->mesh_co_orig[node->Index][2]+area_normal[2] * *disp*ss->cache->scale[2]; - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(sd, ss, &buffer[cur->element*3], val); - cur = cur->next; - } - } - sculpt_clip(sd, ss, co, val); node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } static void do_inflate_brush(Sculpt *s, SculptSession *ss, const ListBase *active_verts) { ActiveData *node= active_verts->first; float add[3]; - float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; while(node) { float *co= ss->mvert[node->Index].co; @@ -532,20 +580,10 @@ static void do_inflate_brush(Sculpt *s, SculptSession *ss, const ListBase *activ add[2]*= ss->cache->scale[2]; VecAddf(add, add, co); - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(s, ss, &buffer[cur->element*3], add); - cur = cur->next; - } - } - sculpt_clip(s, ss, co, add); node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } static void calc_flatten_center(SculptSession *ss, ActiveData *node, float co[3]) @@ -606,7 +644,6 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase float area_normal[3]; float cntr[3], cntr2[3], bstr = 0; int flip = 0; - float *buffer; calc_area_normal(sd, ss, area_normal, active_verts); calc_flatten_center(ss, node, cntr); @@ -619,8 +656,6 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase flip = bstr < 0; } - buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0; - while(node){ float *co= ss->mvert[node->Index].co; float intr[3], val[3]; @@ -646,21 +681,12 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase VecAddf(val, val, co); - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[node->Index]; - while( cur != 0 && cur->element != -1 ) { - sculpt_clip(sd, ss, &buffer[cur->element*3], val); - cur = cur->next; - } - } sculpt_clip(sd, ss, co, val); } node= node->next; } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->vertices ); } /* Uses symm to selectively flip any axis of a coordinate. */ @@ -718,9 +744,8 @@ static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float } /* Return a multiplier for brush strength on a particular vertex. */ -static float tex_strength(Sculpt *sd, SculptSession *ss, float *point, const float len) +static float tex_strength(SculptSession *ss, Brush *br, float *point, const float len) { - Brush *br = paint_brush(&sd->paint); MTex *tex = NULL; float avg= 1; @@ -795,111 +820,124 @@ static float tex_strength(Sculpt *sd, SculptSession *ss, float *point, const flo return avg; } -/* Mark area around the brush as damaged. projverts are marked if they are - inside the area and the damaged rectangle in 2D screen coordinates is - added to damaged_rects. */ -static void sculpt_add_damaged_rect(SculptSession *ss) +typedef struct { + SculptSession *ss; + float radius_squared; + ListBase *active_verts; +} SculptSearchSphereData; + +/* Test AABB against sphere */ +static int sculpt_search_sphere_cb(float bb_min[3], float bb_max[3], + void *data_v) { - short p[2]; - RectNode *rn= MEM_mallocN(sizeof(RectNode),"RectNode"); - const float radius = MAX2(ss->cache->pixel_radius, ss->cache->previous_pixel_radius); - unsigned i; + SculptSearchSphereData *data = data_v; + float *center = data->ss->cache->location, nearest[3]; + float t[3]; + int i; - /* Find center */ - project(ss->cache->mats, ss->cache->location, p); - rn->r.xmin= p[0] - radius; - rn->r.ymin= p[1] - radius; - rn->r.xmax= p[0] + radius; - rn->r.ymax= p[1] + radius; + for(i = 0; i < 3; ++i) { + if(bb_min[i] > center[i]) + nearest[i] = bb_min[i]; + else if(bb_max[i] < center[i]) + nearest[i] = bb_max[i]; + else + nearest[i] = center[i]; + } + + VecSubf(t, center, nearest); - BLI_addtail(&ss->damaged_rects, rn); + return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared; +} - /* Update insides */ - for(i=0; itotvert; ++i) { - if(!ss->projverts[i].inside) { - if(ss->projverts[i].co[0] > rn->r.xmin && ss->projverts[i].co[1] > rn->r.ymin && - ss->projverts[i].co[0] < rn->r.xmax && ss->projverts[i].co[1] < rn->r.ymax) { - ss->projverts[i].inside= 1; - } +static void sculpt_brush_hit_cb(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data_v) +{ + SculptSearchSphereData *data = data_v; + int i; + + /* XXX: for now we still make an active vert list, + can be fixed later */ + + for(i = 0; i < totvert; ++i) { + int v = vert_indices[i]; + float delta[3], dsq; + + VecSubf(delta, data->ss->mvert[v].co, + data->ss->cache->location); + dsq = Inpf(delta, delta); + + if(dsq < data->radius_squared) { + ActiveData *adata = + (ActiveData*)MEM_mallocN(sizeof(ActiveData), + "ActiveData"); + adata->Index = v; + adata->dist = sqrt(dsq); + BLI_addtail(data->active_verts, adata); } - // XXX: remember to fix this! - // temporary pass - ss->projverts[i].inside = 1; } } static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) { Brush *brush = paint_brush(&sd->paint); - float av_dist; - ListBase active_verts={0,0}; + ListBase local_active_verts = {0, 0}; ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry]; - ActiveData *adata= 0; - float *vert; - Mesh *me= NULL; /*XXX: get_mesh(OBACT); */ + ListBase *active_verts = &local_active_verts; const float bstrength= brush_strength(sd, cache); - KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */ - Brush *b = brush; - int i; - - sculpt_add_damaged_rect(ss); + //KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */ + ActiveData *adata; + + /* For grab brush, only find active vertices once */ + if(brush->sculpt_tool == SCULPT_TOOL_GRAB) + active_verts = grab_active_verts; /* Build a list of all vertices that are potentially within the brush's - area of influence. Only do this once for the grab brush. */ - if((b->sculpt_tool != SCULPT_TOOL_GRAB) || cache->first_time) { - for(i=0; itotvert; ++i) { - /* Projverts.inside provides a rough bounding box */ - if(ss->multires || ss->projverts[i].inside) { - //vert= ss->vertexcosnos ? &ss->vertexcosnos[i*6] : a->verts[i].co; - vert= ss->mvert[i].co; - av_dist= VecLenf(ss->cache->location, vert); - if(av_dist < cache->radius) { - adata= (ActiveData*)MEM_mallocN(sizeof(ActiveData), "ActiveData"); - - adata->Index = i; - /* Fade is used to store the final strength at which the brush - should modify a particular vertex. */ - adata->Fade= tex_strength(sd, ss, vert, av_dist) * bstrength; - adata->dist = av_dist; - - if(b->sculpt_tool == SCULPT_TOOL_GRAB && cache->first_time) - BLI_addtail(grab_active_verts, adata); - else - BLI_addtail(&active_verts, adata); - } - } - } + area of influence */ + if(brush->sculpt_tool != SCULPT_TOOL_GRAB || cache->first_time) { + SculptSearchSphereData data; + data.ss = ss; + data.radius_squared = ss->cache->radius * ss->cache->radius; + data.active_verts = active_verts; + BLI_pbvh_search(ss->tree, sculpt_search_sphere_cb, &data, + sculpt_brush_hit_cb, &data, + PBVH_SEARCH_MARK_MODIFIED); + + /* Update brush strength for each vertex */ + for(adata = active_verts->first; adata; adata = adata->next) + adata->Fade = tex_strength(ss, brush, ss->mvert[adata->Index].co, adata->dist) * bstrength; } /* Only act if some verts are inside the brush area */ - if(active_verts.first || (b->sculpt_tool == SCULPT_TOOL_GRAB && grab_active_verts->first)) { + if(active_verts->first) { /* Apply one type of brush action */ - switch(b->sculpt_tool){ + switch(brush->sculpt_tool){ case SCULPT_TOOL_DRAW: - do_draw_brush(sd, ss, &active_verts); + do_draw_brush(sd, ss, active_verts); break; case SCULPT_TOOL_SMOOTH: - do_smooth_brush(sd, ss, &active_verts); + do_smooth_brush(sd, ss, active_verts); break; case SCULPT_TOOL_PINCH: - do_pinch_brush(sd, ss, &active_verts); + do_pinch_brush(sd, ss, active_verts); break; case SCULPT_TOOL_INFLATE: - do_inflate_brush(sd, ss, &active_verts); + do_inflate_brush(sd, ss, active_verts); break; case SCULPT_TOOL_GRAB: do_grab_brush(sd, ss); break; case SCULPT_TOOL_LAYER: - do_layer_brush(sd, ss, &active_verts); + do_layer_brush(sd, ss, active_verts); break; case SCULPT_TOOL_FLATTEN: - do_flatten_clay_brush(sd, ss, &active_verts, 0); + do_flatten_clay_brush(sd, ss, active_verts, 0); break; case SCULPT_TOOL_CLAY: - do_flatten_clay_brush(sd, ss, &active_verts, 1); + do_flatten_clay_brush(sd, ss, active_verts, 1); } +#if 0 /* Copy the modified vertices from mesh to the active key */ if(keyblock && !ss->multires) { float *co= keyblock->data; @@ -919,9 +957,13 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) BLI_freelistN(&active_verts); else { if(b->sculpt_tool != SCULPT_TOOL_GRAB) - addlisttolist(&ss->damaged_verts, &active_verts); + addlisttolist(&ss->modified_verts, &active_verts); } - } +#endif + + BLI_freelistN(&local_active_verts); + + } } /* Flip all the editdata across the axis/axes specified by symm. Used to @@ -955,110 +997,6 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) cache->first_time = 0; } -static void add_face_normal(vec3f *norm, MVert *mvert, const MFace* face, float *fn) -{ - vec3f c= {mvert[face->v1].co[0],mvert[face->v1].co[1],mvert[face->v1].co[2]}; - vec3f b= {mvert[face->v2].co[0],mvert[face->v2].co[1],mvert[face->v2].co[2]}; - vec3f a= {mvert[face->v3].co[0],mvert[face->v3].co[1],mvert[face->v3].co[2]}; - vec3f s1, s2; - float final[3]; - - VecSubf(&s1.x,&a.x,&b.x); - VecSubf(&s2.x,&c.x,&b.x); - - final[0] = s1.y * s2.z - s1.z * s2.y; - final[1] = s1.z * s2.x - s1.x * s2.z; - final[2] = s1.x * s2.y - s1.y * s2.x; - - if(fn) - VecCopyf(fn, final); - - norm->x+= final[0]; - norm->y+= final[1]; - norm->z+= final[2]; -} - -static void update_damaged_vert(SculptSession *ss, ListBase *lb) -{ - ActiveData *vert; - - float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->normals ):0; - for(vert= lb->first; vert; vert= vert->next) { - vec3f norm= {0,0,0}; - IndexNode *face= ss->fmap[vert->Index].first; - - while(face){ - float *fn = NULL; - if(ss->face_normals) - fn = &ss->face_normals[face->index*3]; - add_face_normal(&norm, ss->mvert, &ss->mface[face->index], fn); - face= face->next; - } - Normalize(&norm.x); - - ss->mvert[vert->Index].no[0]=norm.x*32767; - ss->mvert[vert->Index].no[1]=norm.y*32767; - ss->mvert[vert->Index].no[2]=norm.z*32767; - - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[vert->Index]; - while( cur != 0 && cur->element != -1 ) { - int i = ss->drawobject->faceRemap[cur->element/3]; - if( ss->mface[i].flag & ME_SMOOTH ) { - VECCOPY(&buffer[cur->element*3],ss->mvert[vert->Index].no); - } - else { - float norm[3]; - if( ss->mface[i].v4 ) - CalcNormFloat4(ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, ss->mvert[ss->mface[i].v4].co, norm); - else - CalcNormFloat(ss->mvert[ss->mface[i].v1].co, ss->mvert[ss->mface[i].v2].co, ss->mvert[ss->mface[i].v3].co, norm); - VECCOPY(&buffer[(cur->element-cur->element%3)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3+1)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3+2)*3],norm); - - /* maybe this was a quad - need to update the other triangle of the quad */ - if( ss->drawobject->faceRemap[cur->element/3-1] == i ) { - VECCOPY(&buffer[(cur->element-cur->element%3-3)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3-2)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3-1)*3],norm); - } - if( ss->drawobject->faceRemap[cur->element/3+1] == i ) { - VECCOPY(&buffer[(cur->element-cur->element%3+3)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3+4)*3],norm); - VECCOPY(&buffer[(cur->element-cur->element%3+5)*3],norm); - } - } - - //VECCOPY(&buffer[cur->element*3],ss->mvert[vert->Index].no); - cur = cur->next; - } - } - } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->normals ); -} - -static void calc_damaged_verts(SculptSession *ss) -{ - int i; - - for(i=0; i<8; ++i) - update_damaged_vert(ss, &ss->cache->grab_active_verts[i]); - update_damaged_vert(ss, &ss->damaged_verts); - BLI_freelistN(&ss->damaged_verts); - ss->damaged_verts.first = ss->damaged_verts.last = NULL; -} - -#if 0 -static void projverts_clear_inside(SculptSession *ss) -{ - int i; - for(i = 0; i < ss->totvert; ++i) - ss->projverts[i].inside = 0; -} -#endif - static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) { Brush *brush = paint_brush(&sd->paint); @@ -1076,20 +1014,6 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) } } -static void sculptmode_update_all_projverts(SculptSession *ss) -{ - unsigned i; - - if(!ss->projverts) - ss->projverts = MEM_mallocN(sizeof(ProjVert)*ss->totvert,"ProjVerts"); - - for(i=0; itotvert; ++i) { - project(ss->cache->mats, ss->vertexcosnos ? &ss->vertexcosnos[i * 6] : ss->mvert[i].co, - ss->projverts[i].co); - ss->projverts[i].inside= 0; - } -} - /* Checks whether full update mode (slower) needs to be used to work with modifiers */ char sculpt_modifiers_active(Object *ob) { @@ -1132,10 +1056,9 @@ static void sculpt_update_mesh_elements(bContext *C) Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; int oldtotvert = ss->totvert; - DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); if((ss->multires = sculpt_multires_active(ob))) { - //DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); + DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumFaces(dm); ss->mvert = dm->getVertDataArray(dm, CD_MVERT); @@ -1148,23 +1071,20 @@ static void sculpt_update_mesh_elements(bContext *C) ss->totface = me->totface; ss->mvert = me->mvert; ss->mface = me->mface; - ss->face_normals = NULL; - } - if( GPU_buffer_legacy( dm ) ) { - ss->drawobject = 0; - } - else { - ss->drawobject = dm->drawObject; + if(!ss->face_normals) + ss->face_normals = MEM_callocN(sizeof(float) * 3 * me->totface, "sculpt face normals"); } - if(ss->totvert != oldtotvert) { - if(ss->projverts) MEM_freeN(ss->projverts); - ss->projverts = NULL; + if(ss->tree) + BLI_pbvh_set_source(ss->tree, ss->mvert, ss->mface); + if(ss->totvert != oldtotvert) { if(ss->fmap) MEM_freeN(ss->fmap); if(ss->fmap_mem) MEM_freeN(ss->fmap_mem); create_vert_face_map(&ss->fmap, &ss->fmap_mem, ss->mface, ss->totvert, ss->totface); ss->fmap_size = ss->totvert; + + sculpt_rebuild_tree(ss); } } @@ -1251,15 +1171,13 @@ static void SCULPT_OT_radial_control(wmOperatorType *ot) /**** Operator for applying a stroke (various attributes including mouse path) using the current brush. ****/ -static float unproject_brush_radius(SculptSession *ss, float offset) +static float unproject_brush_radius(ViewContext *vc, float center[3], float offset) { - float brush_edge[3]; - - /* In anchored mode, brush size changes with mouse loc, otherwise it's fixed using the brush radius */ - view3d_unproject(ss->cache->mats, brush_edge, ss->cache->initial_mouse[0] + offset, - ss->cache->initial_mouse[1], ss->cache->depth); + float delta[3]; - return VecLenf(ss->cache->true_location, brush_edge); + initgrabz(vc->rv3d, center[0], center[1], center[2]); + window_to_3d_delta(vc->ar, delta, offset, 0); + return VecLength(delta); } static void sculpt_cache_free(StrokeCache *cache) @@ -1290,15 +1208,17 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte 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); - cache->depth = RNA_float_get(op->ptr, "depth"); cache->mouse[0] = cache->initial_mouse[0]; cache->mouse[1] = cache->initial_mouse[1]; /* 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, vc->obact, cache->mats); + view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); sculpt_update_mesh_elements(C); @@ -1338,14 +1258,14 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte } } - view3d_unproject(cache->mats, cache->true_location, cache->initial_mouse[0], cache->initial_mouse[1], cache->depth); - cache->initial_radius = unproject_brush_radius(ss, brush->size); + //view3d_unproject(cache->mats, cache->true_location, cache->initial_mouse[0], cache->initial_mouse[1], cache->depth); + cache->initial_radius = unproject_brush_radius(vc, cache->true_location, brush->size); cache->rotation = 0; cache->first_time = 1; } /* Initialize the stroke cache variants from operator properties */ -static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerRNA *ptr) +static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) { StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); @@ -1375,7 +1295,8 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR 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, cache->pixel_radius); + cache->radius = unproject_brush_radius(paint_stroke_view_context(stroke), + cache->true_location, cache->pixel_radius); cache->rotation = atan2(dy, dx); } else if(brush->flag & BRUSH_RAKE) { @@ -1398,13 +1319,103 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR /* Find the grab delta */ if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - view3d_unproject(cache->mats, grab_location, cache->mouse[0], cache->mouse[1], cache->depth); + // XXX: view3d_unproject(cache->mats, grab_location, cache->mouse[0], cache->mouse[1], cache->depth); + initgrabz(cache->vc->rv3d, cache->true_location[0], cache->true_location[1], cache->true_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + if(!cache->first_time) VecSubf(cache->grab_delta, grab_location, cache->old_grab_location); VecCopyf(cache->old_grab_location, grab_location); } } +/* XXX: Code largely copied from bvhutils.c, should be unified */ +/* Returns 1 if a better intersection has been found */ +static int ray_face_intersection(float ray_start[3], float ray_normal[3], + float *t0, float *t1, float *t2, float *t3, + float *fdist) +{ + int hit = 0; + + do + { + float dist = FLT_MAX; + + if(!RayIntersectsTriangle(ray_start, ray_normal, t0, t1, t2, + &dist, NULL)) + dist = FLT_MAX; + + if(dist >= 0 && dist < *fdist) { + hit = 1; + *fdist = dist; + } + + t1 = t2; + t2 = t3; + t3 = NULL; + + } while(t2); + + return hit; +} + +typedef struct { + SculptSession *ss; + float *ray_start, *ray_normal; + int hit; + float dist; +} SculptRaycastData; + +void sculpt_raycast_cb(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data_v) +{ + SculptRaycastData *srd = data_v; + MVert *vert = srd->ss->mvert; + int i; + + for(i = 0; i < totface; ++i) { + MFace *f = srd->ss->mface + face_indices[i]; + if(ray_face_intersection(srd->ray_start, srd->ray_normal, + vert[f->v1].co, + vert[f->v2].co, + vert[f->v3].co, + f->v4 ? vert[f->v4].co : NULL, + &srd->dist)) { + srd->hit = face_indices[i]; + } + } +} + +/* Do a raycast in the tree to find the 3d brush location + (This allows us to ignore the GL depth buffer) + Returns 0 if the ray doesn't hit the mesh, non-zero otherwise + */ +int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2]) +{ + ViewContext *vc = paint_stroke_view_context(stroke); + float ray_start[3], ray_normal[3]; + float mval[2] = {mouse[0] - vc->ar->winrct.xmin, + mouse[1] - vc->ar->winrct.ymin}; + SculptRaycastData srd; + + viewray(vc->ar, vc->v3d, mval, ray_start, ray_normal); + + srd.ss = vc->obact->sculpt; + srd.ray_start = ray_start; + srd.ray_normal = ray_normal; + srd.dist = FLT_MAX; + srd.hit = -1; + BLI_pbvh_raycast(vc->obact->sculpt->tree, sculpt_raycast_cb, &srd, + ray_start, ray_normal); + + VecCopyf(out, ray_normal); + VecMulf(out, srd.dist); + VecAddf(out, out, ray_start); + + return srd.hit != -1; +} + /* Initialize stroke operator properties */ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmEvent *event, SculptSession *ss) { @@ -1442,9 +1453,6 @@ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmE mouse[1] = event->y; RNA_float_set_array(op->ptr, "initial_mouse", mouse); - /* Initial screen depth under the mouse */ - RNA_float_set(op->ptr, "depth", read_cached_depth(paint_stroke_view_context(op->customdata), event->x, event->y)); - sculpt_update_cache_invariants(sd, ss, C, op); } @@ -1467,30 +1475,16 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) { StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - float *buffer= NULL; int i; /* Restore the mesh before continuing with anchored stroke */ if((brush->flag & BRUSH_ANCHORED) && ss->mesh_co_orig) { - - if(ss->drawobject) - buffer= (float *)GPU_buffer_lock(ss->drawobject->normals); - for(i = 0; i < ss->totvert; ++i) { VecCopyf(ss->mvert[i].co, ss->mesh_co_orig[i]); ss->mvert[i].no[0] = cache->orig_norms[i][0]; ss->mvert[i].no[1] = cache->orig_norms[i][1]; ss->mvert[i].no[2] = cache->orig_norms[i][2]; - if( buffer != 0 ) { - IndexLink *cur = &ss->drawobject->indices[i]; - while( cur != 0 && cur->element != -1 ) { - VECCOPY(&buffer[cur->element*3],cache->orig_norms[i]); - cur = cur->next; - } - } } - if( buffer != 0 ) - GPU_buffer_unlock( ss->drawobject->normals ); if(ss->face_normals) { float *fn = ss->face_normals; @@ -1503,20 +1497,14 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) } } -static void sculpt_post_stroke_free(SculptSession *ss) -{ - BLI_freelistN(&ss->damaged_rects); - BLI_freelistN(&ss->damaged_verts); -} - static void sculpt_flush_update(bContext *C) { Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); MultiresModifierData *mmd = ss->multires; - - calc_damaged_verts(ss); + rcti r; + int redraw = 0; if(mmd) { if(mmd->undo_verts && mmd->undo_verts != ss->mvert) @@ -1527,23 +1515,46 @@ static void sculpt_flush_update(bContext *C) multires_mark_as_modified(ob); } - ED_region_tag_redraw(ar); + redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); + + if(!redraw) { + BLI_pbvh_search(ss->tree, BLI_pbvh_update_search_cb, + PBVH_NodeData, NULL, NULL, + PBVH_SEARCH_UPDATE); + + redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), + ob, &r); + } + + if(redraw) { + r.xmin += ar->winrct.xmin + 1; + r.xmax += ar->winrct.xmin - 1; + r.ymin += ar->winrct.ymin + 1; + r.ymax += ar->winrct.ymin - 1; + + ss->partial_redraw = 1; + ED_region_tag_redraw_partial(ar, &r); + } } static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent *event) { - ViewContext vc; - float cur_depth; - - view3d_set_viewcontext(C, &vc); - cur_depth = read_cached_depth(&vc, event->x, event->y); + float mouse[2] = {event->x, event->y}, location[3]; + int over_mesh; - /* Don't start the stroke until a valid depth is found */ - if(cur_depth < 1.0 - FLT_EPSILON) { - SculptSession *ss = CTX_data_active_object(C)->sculpt; + over_mesh = sculpt_stroke_get_location(C, op->customdata, location, mouse); + + /* Don't start the stroke until mouse goes over the mesh */ + if(over_mesh) { + Object *ob = CTX_data_active_object(C); + SculptSession *ss = ob->sculpt; + + if(paint_brush(&CTX_data_tool_settings(C)->sculpt->paint)->sculpt_tool == SCULPT_TOOL_GRAB) + BLI_pbvh_toggle_modified_lock(ss->tree); + + ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C)); sculpt_brush_stroke_init_properties(C, op, event, ss); - sculptmode_update_all_projverts(ss); return 1; } @@ -1556,13 +1567,12 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P Sculpt *sd = CTX_data_tool_settings(C)->sculpt; SculptSession *ss = CTX_data_active_object(C)->sculpt; - sculpt_update_cache_variants(sd, ss, itemptr); + sculpt_update_cache_variants(sd, ss, stroke, itemptr); sculpt_restore_mesh(sd, ss); do_symmetrical_brush_actions(sd, ss); /* Cleanup */ sculpt_flush_update(C); - sculpt_post_stroke_free(ss); } static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) @@ -1571,9 +1581,11 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) /* Finished */ if(ss->cache) { - Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + + if(paint_brush(&CTX_data_tool_settings(C)->sculpt->paint)->sculpt_tool == SCULPT_TOOL_GRAB) + BLI_pbvh_toggle_modified_lock(ss->tree); - request_depth_update(paint_stroke_view_context(stroke)->rv3d); sculpt_cache_free(ss->cache); ss->cache = NULL; sculpt_undo_push(C, sd); @@ -1584,7 +1596,8 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *even { sculpt_brush_stroke_init(C); - op->customdata = paint_stroke_new(C, sculpt_stroke_test_start, + op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, + sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done); @@ -1601,12 +1614,12 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) Sculpt *sd = CTX_data_tool_settings(C)->sculpt; SculptSession *ss = CTX_data_active_object(C)->sculpt; - op->customdata = paint_stroke_new(C, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done); + op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, sculpt_stroke_test_start, + sculpt_stroke_update_step, sculpt_stroke_done); sculpt_brush_stroke_init(C); sculpt_update_cache_invariants(sd, ss, C, op); - sculptmode_update_all_projverts(ss); paint_stroke_exec(C, op); @@ -1649,9 +1662,6 @@ static void SCULPT_OT_brush_stroke(wmOperatorType *ot) /* 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); - - /* The initial screen depth of the mouse */ - RNA_def_float(ot->srna, "depth", 0.0f, 0.0f, FLT_MAX, "depth", "", 0.0f, FLT_MAX); } /**** Reset the copy of the mesh that is being sculpted on (currently just for the layer brush) ****/ @@ -1688,6 +1698,13 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) /**** Toggle operator for turning sculpt mode on or off ****/ +static void sculpt_init_session(bContext *C, Object *ob) +{ + ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); + + sculpt_update_mesh_elements(C); +} + static int sculpt_toggle_mode(bContext *C, wmOperator *op) { ToolSettings *ts = CTX_data_tool_settings(C); @@ -1713,7 +1730,8 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) /* Create sculpt mode session data */ if(ob->sculpt) free_sculptsession(&ob->sculpt); - ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); + + sculpt_init_session(C, ob); paint_init(&ts->sculpt->paint, PAINT_CURSOR_SCULPT); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 22fd77afd88..5d7e5932bd8 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -107,6 +107,7 @@ #include "ED_mesh.h" #include "ED_particle.h" #include "ED_screen.h" +#include "ED_sculpt.h" #include "ED_types.h" #include "ED_util.h" @@ -2691,7 +2692,7 @@ static void draw_mesh_object_outline(View3D *v3d, Object *ob, DerivedMesh *dm) drawFacesSolid() doesn't draw the transparent faces */ if(ob->dtx & OB_DRAWTRANSP) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - dm->drawFacesSolid(dm, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); GPU_disable_material(); } @@ -2710,7 +2711,7 @@ static int wpaint__setSolidDrawOptions(void *userData, int index, int *drawSmoot return 1; } -static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) +static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) { Object *ob= base->object; Mesh *me = ob->data; @@ -2783,7 +2784,7 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base } } else if(dt==OB_SOLID) { - if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire) + if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) draw_mesh_object_outline(v3d, ob, dm); glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED ); @@ -2791,7 +2792,21 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base glEnable(GL_LIGHTING); glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); - dm->drawFacesSolid(dm, GPU_enable_material); + if(ob->sculpt) { + float planes[4][4]; + float (*fpl)[4] = NULL; + + if(ob->sculpt->partial_redraw) { + sculpt_get_redraw_planes(planes, ar, rv3d, ob); + fpl = planes; + ob->sculpt->partial_redraw = 0; + } + + dm->drawFacesSolid(dm, ob->sculpt->tree, fpl, GPU_enable_material); + } + else + dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); + GPU_disable_material(); glFrontFace(GL_CCW); @@ -2802,7 +2817,8 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base } else { UI_ThemeColor(TH_WIRE); } - dm->drawLooseEdges(dm); + if(!ob->sculpt) + dm->drawLooseEdges(dm); } else if(dt==OB_SHADED) { int do_draw= 1; /* to resolve all G.f settings below... */ @@ -2920,7 +2936,7 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base } /* returns 1 if nothing was drawn, for detecting to draw an object center */ -static int draw_mesh_object(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) +static int draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) { Object *ob= base->object; Object *obedit= scene->obedit; @@ -2970,7 +2986,7 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base (check_alpha)? &do_alpha_pass: NULL); } - draw_mesh_fancy(scene, v3d, rv3d, base, dt, flag); + draw_mesh_fancy(scene, ar, v3d, rv3d, base, dt, flag); GPU_end_object_materials(); @@ -5566,7 +5582,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) switch( ob->type) { case OB_MESH: - empty_object= draw_mesh_object(scene, v3d, rv3d, base, dt, flag); + empty_object= draw_mesh_object(scene, ar, v3d, rv3d, base, dt, flag); if(flag!=DRAW_CONSTCOLOR) dtx &= ~OB_DRAWWIRE; // mesh draws wire itself break; @@ -6260,7 +6276,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r glEnable(GL_LIGHTING); if(dm) { - dm->drawFacesSolid(dm, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); GPU_end_object_materials(); } else if(edm) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 15e41a66981..05de5ce1169 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1642,37 +1642,6 @@ void view3d_update_depths(ARegion *ar, View3D *v3d) } } -/* Enable sculpting in wireframe mode by drawing sculpt object only to the depth buffer */ -static void draw_sculpt_depths(Scene *scene, ARegion *ar, View3D *v3d) -{ - Object *ob = OBACT; - - int dt= MIN2(v3d->drawtype, ob->dt); - if(v3d->zbuf==0 && dt>OB_WIRE) - dt= OB_WIRE; - if(dt == OB_WIRE) { - GLboolean depth_on; - int orig_vdt = v3d->drawtype; - int orig_zbuf = v3d->zbuf; - int orig_odt = ob->dt; - - glGetBooleanv(GL_DEPTH_TEST, &depth_on); - v3d->drawtype = ob->dt = OB_SOLID; - v3d->zbuf = 1; - - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glEnable(GL_DEPTH_TEST); - draw_object(scene, ar, v3d, BASACT, 0); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - if(!depth_on) - glDisable(GL_DEPTH_TEST); - - v3d->drawtype = orig_vdt; - v3d->zbuf = orig_zbuf; - ob->dt = orig_odt; - } -} - void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)) { RegionView3D *rv3d= ar->regiondata; @@ -2038,7 +2007,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } // retopo= retopo_mesh_check() || retopo_curve_check(); - sculptparticle= (obact && obact->mode & (OB_MODE_SCULPT|OB_MODE_PARTICLE_EDIT)) && !scene->obedit; + sculptparticle= (obact && obact->mode & (OB_MODE_PARTICLE_EDIT)) && !scene->obedit; if(retopo) view3d_update_depths(ar, v3d); @@ -2051,8 +2020,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } if(!retopo && sculptparticle && !(obact && (obact->dtx & OB_DRAWXRAY))) { - if(obact && obact->mode & OB_MODE_SCULPT) - draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } @@ -2067,8 +2034,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used! if(!retopo && sculptparticle && (obact && (OBACT->dtx & OB_DRAWXRAY))) { - if(obact && obact->mode & OB_MODE_SCULPT) - draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } @@ -2090,8 +2055,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) ED_region_pixelspace(ar); - /* Draw Sculpt Mode brush XXX (removed) */ - // retopo_paint_view_update(v3d); // retopo_draw_paint_lines(); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 51f257da432..45aa2434897 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1802,12 +1802,9 @@ void VIEW3D_OT_view_persportho(wmOperatorType *ot) static int view3d_clipping_exec(bContext *C, wmOperator *op) { RegionView3D *rv3d= CTX_wm_region_view3d(C); + ViewContext vc; + bglMats mats; rcti rect; - double mvmatrix[16]; - double projmatrix[16]; - double xs, ys, p[3]; - GLint viewport[4]; - short val; rect.xmin= RNA_int_get(op->ptr, "xmin"); rect.ymin= RNA_int_get(op->ptr, "ymin"); @@ -1820,44 +1817,10 @@ static int view3d_clipping_exec(bContext *C, wmOperator *op) /* note; otherwise opengl won't work */ view3d_operator_needs_opengl(C); - /* Get the matrices needed for gluUnProject */ - glGetIntegerv(GL_VIEWPORT, viewport); - glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix); - glGetDoublev(GL_PROJECTION_MATRIX, projmatrix); - - /* near zero floating point values can give issues with gluUnProject - in side view on some implementations */ - if(fabs(mvmatrix[0]) < 1e-6) mvmatrix[0]= 0.0; - if(fabs(mvmatrix[5]) < 1e-6) mvmatrix[5]= 0.0; - - /* Set up viewport so that gluUnProject will give correct values */ - viewport[0] = 0; - viewport[1] = 0; - - /* four clipping planes and bounding volume */ - /* first do the bounding volume */ - for(val=0; val<4; val++) { - - xs= (val==0||val==3)?rect.xmin:rect.xmax; - ys= (val==0||val==1)?rect.ymin:rect.ymax; - - gluUnProject(xs, ys, 0.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]); - VECCOPY(rv3d->clipbb->vec[val], p); + view3d_set_viewcontext(C, &vc); + view3d_get_transformation(vc.ar, vc.rv3d, vc.obact, &mats); + view3d_calculate_clipping(rv3d->clipbb, rv3d->clip, &mats, &rect); - gluUnProject(xs, ys, 1.0, mvmatrix, projmatrix, viewport, &p[0], &p[1], &p[2]); - VECCOPY(rv3d->clipbb->vec[4+val], p); - } - - /* then plane equations */ - for(val=0; val<4; val++) { - - CalcNormFloat(rv3d->clipbb->vec[val], rv3d->clipbb->vec[val==3?0:val+1], rv3d->clipbb->vec[val+4], - rv3d->clip[val]); - - rv3d->clip[val][3]= - rv3d->clip[val][0]*rv3d->clipbb->vec[val][0] - - rv3d->clip[val][1]*rv3d->clipbb->vec[val][1] - - rv3d->clip[val][2]*rv3d->clipbb->vec[val][2]; - } return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index b13d83c0157..1f7d50e00ed 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -124,24 +124,24 @@ void view3d_get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2 } } -void view3d_get_transformation(ViewContext *vc, Object *ob, bglMats *mats) +void view3d_get_transformation(ARegion *ar, RegionView3D *rv3d, Object *ob, bglMats *mats) { float cpy[4][4]; int i, j; - Mat4MulMat4(cpy, ob->obmat, vc->rv3d->viewmat); + Mat4MulMat4(cpy, ob->obmat, rv3d->viewmat); for(i = 0; i < 4; ++i) { for(j = 0; j < 4; ++j) { - mats->projection[i*4+j] = vc->rv3d->winmat[i][j]; + mats->projection[i*4+j] = rv3d->winmat[i][j]; mats->modelview[i*4+j] = cpy[i][j]; } } - mats->viewport[0] = vc->ar->winrct.xmin; - mats->viewport[1] = vc->ar->winrct.ymin; - mats->viewport[2] = vc->ar->winx; - mats->viewport[3] = vc->ar->winy; + mats->viewport[0] = ar->winrct.xmin; + mats->viewport[1] = ar->winrct.ymin; + mats->viewport[2] = ar->winx; + mats->viewport[3] = ar->winy; } /* ********************** view3d_select: selection manipulations ********************* */ diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 12654bdac14..77833ceb5c5 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -481,6 +481,45 @@ void VIEW3D_OT_setobjectascamera(wmOperatorType *ot) } /* ********************************** */ +void view3d_calculate_clipping(BoundBox *bb, float planes[4][4], bglMats *mats, rcti *rect) +{ + double xs, ys, p[3]; + short val; + + /* near zero floating point values can give issues with gluUnProject + in side view on some implementations */ + if(fabs(mats->modelview[0]) < 1e-6) mats->modelview[0]= 0.0; + if(fabs(mats->modelview[5]) < 1e-6) mats->modelview[5]= 0.0; + + /* Set up viewport so that gluUnProject will give correct values */ + mats->viewport[0] = 0; + mats->viewport[1] = 0; + + /* four clipping planes and bounding volume */ + /* first do the bounding volume */ + for(val=0; val<4; val++) { + xs= (val==0||val==3)?rect->xmin:rect->xmax; + ys= (val==0||val==1)?rect->ymin:rect->ymax; + + gluUnProject(xs, ys, 0.0, mats->modelview, mats->projection, mats->viewport, &p[0], &p[1], &p[2]); + VECCOPY(bb->vec[val], p); + + gluUnProject(xs, ys, 1.0, mats->modelview, mats->projection, mats->viewport, &p[0], &p[1], &p[2]); + VECCOPY(bb->vec[4+val], p); + } + + /* then plane equations */ + for(val=0; val<4; val++) { + + CalcNormFloat(bb->vec[val], bb->vec[val==3?0:val+1], bb->vec[val+4], + planes[val]); + + planes[val][3]= - planes[val][0]*bb->vec[val][0] + - planes[val][1]*bb->vec[val][1] + - planes[val][2]*bb->vec[val][2]; + } +} + /* create intersection coordinates in view Z direction at mouse coordinates */ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float ray_end[3]) { diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h index 662912f9c19..eceb0cdeca4 100644 --- a/source/blender/gpu/gpu_buffers.h +++ b/source/blender/gpu/gpu_buffers.h @@ -43,6 +43,7 @@ #endif struct DerivedMesh; +struct GHash; /* V - vertex, N - normal, T - uv, C - color F - float, UB - unsigned byte */ @@ -124,6 +125,16 @@ void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ); GPUDrawObject *GPU_drawobject_new( struct DerivedMesh *dm ); void GPU_drawobject_free( struct DerivedMesh *dm ); +/* Buffers for non-DerivedMesh drawing */ +void *GPU_build_buffers(struct GHash *map, struct MVert *mvert, + struct MFace *mface, int *face_indices, + int totface, int *vert_indices, int uniq_verts, + int totvert); +void GPU_draw_buffers(void *buffers); +void GPU_update_buffers(void *buffers, struct MVert *mvert, + int *vert_indices, int totvert); +void GPU_free_buffers(void *buffers); + /* called before drawing */ void GPU_vertex_setup( struct DerivedMesh *dm ); void GPU_normal_setup( struct DerivedMesh *dm ); diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 9e164f46e4c..14f2c1b6d5b 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -37,6 +37,7 @@ #include "MEM_guardedalloc.h" #include "BLI_arithb.h" +#include "BLI_ghash.h" #include "DNA_meshdata_types.h" @@ -376,6 +377,156 @@ void GPU_drawobject_free( DerivedMesh *dm ) dm->drawObject = 0; } +/* Convenience struct for building the VBO. + TODO: check that (lack-of) padding is OK, + also check performance of short vs float for normals */ +typedef struct { + float co[3]; + short no[3]; + + char pad[14]; +} VertexBufferFormat; + +typedef struct { + unsigned int vert_buf, tri_buf; + unsigned short tot_tri; +} GPU_Buffers; + +void GPU_update_buffers2(void *buffers_v, MVert *mvert, + int *vert_indices, int totvert) +{ + GPU_Buffers *buffers = buffers_v; + VertexBufferFormat *vert_data; + int i; + + vert_data = MEM_callocN(sizeof(VertexBufferFormat) * totvert, "bad"); + + for(i = 0; i < totvert; ++i) { + MVert *v = mvert + vert_indices[i]; + VertexBufferFormat *out = vert_data + i; + + VecCopyf(out->co, v->co); + memcpy(out->no, v->no, sizeof(short) * 3); + } + + glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); + glBufferData(GL_ARRAY_BUFFER, + sizeof(VertexBufferFormat) * totvert, + vert_data, GL_STATIC_DRAW); + + MEM_freeN(vert_data); +} + +void GPU_update_buffers(void *buffers_v, MVert *mvert, + int *vert_indices, int totvert) +{ + GPU_Buffers *buffers = buffers_v; + VertexBufferFormat *vert_data; + int i; + + /* Build VBO */ + glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); + glBufferData(GL_ARRAY_BUFFER, + sizeof(VertexBufferFormat) * totvert, + NULL, GL_STATIC_DRAW); + vert_data = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); + + for(i = 0; i < totvert; ++i) { + MVert *v = mvert + vert_indices[i]; + VertexBufferFormat *out = vert_data + i; + + VecCopyf(out->co, v->co); + memcpy(out->no, v->no, sizeof(short) * 3); + } + glUnmapBuffer(GL_ARRAY_BUFFER); + + //printf("node updated %p\n", buffers_v); +} + +void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, + int *face_indices, int totface, + int *vert_indices, int tot_uniq_verts, + int totvert) +{ + GPU_Buffers *buffers; + unsigned short *tri_data; + int i, j, k, tottri; + + buffers = MEM_callocN(sizeof(GPU_Buffers), "GPU_Buffers"); + + /* Count the number of triangles */ + for(i = 0, tottri = 0; i < totface; ++i) + tottri += mface[face_indices[i]].v4 ? 2 : 1; + + /* Generate index buffer object */ + glGenBuffers(1, &buffers->tri_buf); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers->tri_buf); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, + sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW); + + /* Fill the triangle buffer */ + tri_data = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); + for(i = 0; i < totface; ++i) { + MFace *f = mface + face_indices[i]; + int v[3] = {f->v1, f->v2, f->v3}; + + for(j = 0; j < (f->v4 ? 2 : 1); ++j) { + for(k = 0; k < 3; ++k) { + void *value, *key = SET_INT_IN_POINTER(v[k]); + int vbo_index; + + value = BLI_ghash_lookup(map, key); + vbo_index = GET_INT_FROM_POINTER(value); + + if(vbo_index < 0) { + vbo_index = -vbo_index + + tot_uniq_verts - 1; + } + + *tri_data = vbo_index; + ++tri_data; + } + v[0] = f->v4; + v[1] = f->v1; + v[2] = f->v3; + } + } + glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); + + /* Build VBO */ + glGenBuffers(1, &buffers->vert_buf); + GPU_update_buffers(buffers, mvert, vert_indices, totvert); + + buffers->tot_tri = tottri; + + return buffers; +} + +void GPU_draw_buffers(void *buffers_v) +{ + GPU_Buffers *buffers = buffers_v; + + glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers->tri_buf); + + glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), 0); + glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)12); + + glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, GL_UNSIGNED_SHORT, 0); +} + +void GPU_free_buffers(void *buffers_v) +{ + if(buffers_v) { + GPU_Buffers *buffers = buffers_v; + + glDeleteBuffers(1, &buffers->vert_buf); + glDeleteBuffers(1, &buffers->tri_buf); + + MEM_freeN(buffers); + } +} + GPUBuffer *GPU_buffer_setup( DerivedMesh *dm, GPUDrawObject *object, int size, GLenum target, void *user, void (*copy_f)(DerivedMesh *, float *, int *, int *, void *) ) { GPUBuffer *buffer; -- cgit v1.2.3 From 243c73e96e18c126227d43728e2d3639c9f7ee41 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Wed, 28 Oct 2009 06:06:05 +0000 Subject: Moved the PBVH from sculpt session to DerivedMesh/CDDM. * Multires sculpting appears to work now * PBVH gets recalculated in some cases where it shouldn't, haven't looked into this yet --- source/blender/blenkernel/BKE_DerivedMesh.h | 13 ++- source/blender/blenkernel/BKE_paint.h | 4 +- source/blender/blenkernel/intern/cdderivedmesh.c | 107 +++++++++++++++++++++-- source/blender/blenkernel/intern/object.c | 11 --- source/blender/blenkernel/intern/subsurf_ccg.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 67 +------------- source/blender/editors/space_view3d/drawobject.c | 8 +- 7 files changed, 122 insertions(+), 90 deletions(-) diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 75d9ae7f360..d9b0c4bc357 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -59,6 +59,8 @@ struct MCol; struct ColorBand; struct GPUVertexAttribs; struct GPUDrawObject; +struct ListBase; +struct PBVH; /* number of sub-elements each mesh element has (for interpolation) */ #define SUB_ELEMS_VERT 0 @@ -73,6 +75,7 @@ struct DerivedMesh { int needsFree; /* checked on ->release, is set to 0 for cached results */ int deformedOnly; /* set by modifier stack if only deformed from original */ BVHCache bvhCache; + struct GPUDrawObject *drawObject; /* Misc. Queries */ @@ -180,6 +183,14 @@ struct DerivedMesh { /* Get vertex normal, undefined if index is not valid */ void (*getVertNo)(DerivedMesh *dm, int index, float no_r[3]); + /* Get a map of vertices to faces + */ + struct ListBase *(*getFaceMap)(DerivedMesh *dm); + + /* Get the BVH used for paint modes + */ + struct PBVH *(*getPBVH)(DerivedMesh *dm); + /* Drawing Operations */ /* Draw all vertices as bgl points (no options) */ @@ -204,7 +215,7 @@ struct DerivedMesh { * * Also called for *final* editmode DerivedMeshes */ - void (*drawFacesSolid)(DerivedMesh *dm, void *tree, float (*partial_redraw_planes)[4], + void (*drawFacesSolid)(DerivedMesh *dm, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)); /* Draw all faces diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 558659b520f..5bca174628d 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -69,17 +69,15 @@ typedef struct SculptSession { struct MFace *mface; int totvert, totface; float *face_normals; + struct PBVH *tree; /* Mesh connectivity */ struct ListBase *fmap; - struct IndexNode *fmap_mem; - int fmap_size; /* Used temporarily per-stroke */ float *vertexcosnos; /* Partial redraw */ - struct PBVH *tree; int partial_redraw; /* Used to cache the render of the active texture */ diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 6ae1057767d..66e09022ff5 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -77,6 +77,12 @@ typedef struct { MVert *mvert; MEdge *medge; MFace *mface; + + /* Cached */ + struct PBVH *pbvh; + /* Mesh connectivity */ + struct ListBase *fmap; + struct IndexNode *fmap_mem; } CDDerivedMesh; /**************** DerivedMesh interface functions ****************/ @@ -171,6 +177,82 @@ static void cdDM_getVertNo(DerivedMesh *dm, int index, float no_r[3]) no_r[2] = no[2]/32767.f; } +/* Updates all the face and vertex normals in a node + + Note: the correctness of some vertex normals will be a little + off, not sure if this will be noticeable or not */ +static void update_node_normals(const int *face_indices, + const int *vert_indices, + int totface, int totvert, void *data) +{ + DerivedMesh *dm = data; + CDDerivedMesh *cddm = data; + float (*face_nors)[3]; + int i; + + /* make a face normal layer if not present */ + face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); + if(!face_nors) + face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, + NULL, dm->numFaceData); + + /* Update face normals */ + for(i = 0; i < totface; ++i) { + MFace *f = cddm->mface + face_indices[i]; + float *fn = face_nors[face_indices[i]]; + + if(f->v4) + CalcNormFloat4(cddm->mvert[f->v1].co, cddm->mvert[f->v2].co, + cddm->mvert[f->v3].co, cddm->mvert[f->v4].co, fn); + else + CalcNormFloat(cddm->mvert[f->v1].co, cddm->mvert[f->v2].co, + cddm->mvert[f->v3].co, fn); + } + + /* Update vertex normals */ + for(i = 0; i < totvert; ++i) { + const int v = vert_indices[i]; + float no[3] = {0,0,0}; + IndexNode *face; + + for(face = cddm->fmap[v].first; face; face = face->next) + VecAddf(no, no, face_nors[face->index]); + + Normalize(no); + + cddm->mvert[v].no[0] = no[0] * 32767; + cddm->mvert[v].no[1] = no[1] * 32767; + cddm->mvert[v].no[2] = no[2] * 32767; + } +} + +static ListBase *cdDM_getFaceMap(DerivedMesh *dm) +{ + CDDerivedMesh *cddm = (CDDerivedMesh*) dm; + + if(!cddm->fmap) { + create_vert_face_map(&cddm->fmap, &cddm->fmap_mem, cddm->mface, + dm->getNumVerts(dm), dm->getNumFaces(dm)); + printf("rebuild fmap\n"); + } + + return cddm->fmap; +} + +static struct PBVH *cdDM_getPBVH(DerivedMesh *dm) +{ + CDDerivedMesh *cddm = (CDDerivedMesh*) dm; + + if(!cddm->pbvh) { + cddm->pbvh = BLI_pbvh_new(update_node_normals, cddm); + BLI_pbvh_build(cddm->pbvh, cddm->mface, cddm->mvert, + dm->getNumFaces(dm), dm->getNumVerts(dm)); + printf("rebuild pbvh\n"); + } + + return cddm->pbvh; +} + static void cdDM_drawVerts(DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; @@ -419,7 +501,7 @@ int planes_contain_AABB(float bb_min[3], float bb_max[3], void *data) return 1; } -static void cdDM_drawFacesSolid(DerivedMesh *dm, void *tree, +static void cdDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)) { @@ -437,19 +519,19 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, void *tree, glVertex3fv(mvert[index].co); \ } - if(tree) { - BLI_pbvh_search(tree, BLI_pbvh_update_search_cb, + if(cddm->pbvh) { + BLI_pbvh_search(cddm->pbvh, BLI_pbvh_update_search_cb, PBVH_NodeData, NULL, NULL, PBVH_SEARCH_UPDATE); if(partial_redraw_planes) { - BLI_pbvh_search(tree, planes_contain_AABB, + BLI_pbvh_search(cddm->pbvh, planes_contain_AABB, partial_redraw_planes, draw_partial_cb, PBVH_DrawData, PBVH_SEARCH_MODIFIED); } else { - BLI_pbvh_search(tree, find_all, NULL, + BLI_pbvh_search(cddm->pbvh, find_all, NULL, draw_partial_cb, PBVH_DrawData, PBVH_SEARCH_NORMAL); @@ -1376,12 +1458,21 @@ static void cdDM_foreachMappedFaceCenter( } } +static void cdDM_free_internal(CDDerivedMesh *cddm) +{ + if(cddm->pbvh) BLI_pbvh_free(cddm->pbvh); + if(cddm->fmap) MEM_freeN(cddm->fmap); + if(cddm->fmap_mem) MEM_freeN(cddm->fmap_mem); +} + static void cdDM_release(DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh*)dm; - if (DM_release(dm)) + if (DM_release(dm)) { + cdDM_free_internal(cddm); MEM_freeN(cddm); + } } /**************** CDDM interface functions ****************/ @@ -1416,6 +1507,9 @@ static CDDerivedMesh *cdDM_create(const char *desc) dm->getVertCo = cdDM_getVertCo; dm->getVertNo = cdDM_getVertNo; + dm->getPBVH = cdDM_getPBVH; + dm->getFaceMap = cdDM_getFaceMap; + dm->drawVerts = cdDM_drawVerts; dm->drawUVEdges = cdDM_drawUVEdges; @@ -1901,6 +1995,7 @@ static void MultiresDM_release(DerivedMesh *dm) } if(DM_release(dm)) { + cdDM_free_internal(&mrdm->cddm); MEM_freeN(mrdm->subco); MEM_freeN(mrdm->orco); if(mrdm->vert_face_map) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 5c3419fb488..c1b9634e5ec 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -72,8 +72,6 @@ #include "BLI_blenlib.h" #include "BLI_arithb.h" #include "BLI_editVert.h" -#include "BLI_ghash.h" -#include "BLI_pbvh.h" #include "BKE_utildefines.h" @@ -231,12 +229,6 @@ void free_sculptsession(SculptSession **ssp) if(ssp && *ssp) { SculptSession *ss = *ssp; - if(ss->fmap) - MEM_freeN(ss->fmap); - - if(ss->fmap_mem) - MEM_freeN(ss->fmap_mem); - if(ss->texcache) MEM_freeN(ss->texcache); @@ -246,9 +238,6 @@ void free_sculptsession(SculptSession **ssp) if(ss->mesh_co_orig) MEM_freeN(ss->mesh_co_orig); - if(ss->tree) - BLI_pbvh_free(ss->tree); - if(ss->face_normals) MEM_freeN(ss->face_normals); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 7c83431ebd8..1482bd75ff2 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1615,7 +1615,7 @@ static void ccgDM_glNormalFast(float *a, float *b, float *c, float *d) } /* Only used by non-editmesh types */ -static void ccgDM_drawFacesSolid(DerivedMesh *dm, void *tree, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)) { +static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index b4b002283fd..28ca5d2fecf 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -193,57 +193,6 @@ static void projectf(bglMats *mats, const float v[3], float p[2]) /*** BVH Tree ***/ -/* Updates all the face and vertex normals in a node - - Note: the correctness of some vertex normals will be a little - off, not sure if this will be noticeable or not */ -static void sculpt_update_normals(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data) -{ - SculptSession *ss = data; - int i; - - /* Update face normals */ - for(i = 0; i < totface; ++i) { - MFace *f = ss->mface + face_indices[i]; - float *fn = ss->face_normals + face_indices[i] * 3; - - if(f->v4) - CalcNormFloat4(ss->mvert[f->v1].co, ss->mvert[f->v2].co, - ss->mvert[f->v3].co, ss->mvert[f->v4].co, fn); - else - CalcNormFloat(ss->mvert[f->v1].co, ss->mvert[f->v2].co, - ss->mvert[f->v3].co, fn); - } - - /* Update vertex normals */ - for(i = 0; i < totvert; ++i) { - const int v = vert_indices[i]; - float no[3] = {0,0,0}; - IndexNode *face; - - for(face = ss->fmap[v].first; face; face = face->next) - VecAddf(no, no, ss->face_normals + face->index*3); - - Normalize(no); - - ss->mvert[v].no[0] = no[0] * 32767; - ss->mvert[v].no[1] = no[1] * 32767; - ss->mvert[v].no[2] = no[2] * 32767; - } -} - -static void sculpt_rebuild_tree(SculptSession *ss) -{ - if(ss->tree) - BLI_pbvh_free(ss->tree); - - ss->tree = BLI_pbvh_new(sculpt_update_normals, ss); - BLI_pbvh_build(ss->tree, ss->mface, ss->mvert, ss->totface, - ss->totvert); -} - /* Get a screen-space rectangle of the modified area */ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, Object *ob, rcti *rect) @@ -1054,11 +1003,10 @@ static struct MultiresModifierData *sculpt_multires_active(Object *ob) static void sculpt_update_mesh_elements(bContext *C) { Object *ob = CTX_data_active_object(C); + DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); SculptSession *ss = ob->sculpt; - int oldtotvert = ss->totvert; if((ss->multires = sculpt_multires_active(ob))) { - DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumFaces(dm); ss->mvert = dm->getVertDataArray(dm, CD_MVERT); @@ -1075,17 +1023,8 @@ static void sculpt_update_mesh_elements(bContext *C) ss->face_normals = MEM_callocN(sizeof(float) * 3 * me->totface, "sculpt face normals"); } - if(ss->tree) - BLI_pbvh_set_source(ss->tree, ss->mvert, ss->mface); - - if(ss->totvert != oldtotvert) { - if(ss->fmap) MEM_freeN(ss->fmap); - if(ss->fmap_mem) MEM_freeN(ss->fmap_mem); - create_vert_face_map(&ss->fmap, &ss->fmap_mem, ss->mface, ss->totvert, ss->totface); - ss->fmap_size = ss->totvert; - - sculpt_rebuild_tree(ss); - } + ss->tree = dm->getPBVH(dm); + ss->fmap = dm->getFaceMap(dm); } static int sculpt_mode_poll(bContext *C) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 5d7e5932bd8..f7dba10200a 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2692,7 +2692,7 @@ static void draw_mesh_object_outline(View3D *v3d, Object *ob, DerivedMesh *dm) drawFacesSolid() doesn't draw the transparent faces */ if(ob->dtx & OB_DRAWTRANSP) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, GPU_enable_material); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); GPU_disable_material(); } @@ -2802,10 +2802,10 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D ob->sculpt->partial_redraw = 0; } - dm->drawFacesSolid(dm, ob->sculpt->tree, fpl, GPU_enable_material); + dm->drawFacesSolid(dm, fpl, GPU_enable_material); } else - dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, GPU_enable_material); GPU_disable_material(); @@ -6276,7 +6276,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r glEnable(GL_LIGHTING); if(dm) { - dm->drawFacesSolid(dm, NULL, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, GPU_enable_material); GPU_end_object_materials(); } else if(edm) -- cgit v1.2.3 From 7ce5c951c5bb3607cac2bc603ed9a1fbcc5299dd Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Wed, 28 Oct 2009 07:15:01 +0000 Subject: Avoid an unecessary rebuild of the pbvh. --- source/blender/editors/sculpt_paint/sculpt.c | 4 +++- source/blender/editors/space_view3d/view3d_draw.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 28ca5d2fecf..74762379202 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1003,7 +1003,9 @@ static struct MultiresModifierData *sculpt_multires_active(Object *ob) static void sculpt_update_mesh_elements(bContext *C) { Object *ob = CTX_data_active_object(C); - DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, CD_MASK_BAREMESH); + DerivedMesh *dm = + mesh_get_derived_final(CTX_data_scene(C), ob, + CTX_wm_view3d(C)->customdata_mask); SculptSession *ss = ob->sculpt; if((ss->multires = sculpt_multires_active(ob))) { diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 05de5ce1169..202f7634584 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1859,8 +1859,8 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen, Scene *scene, Objec mask |= CD_MASK_MCOL; if(ob->mode & OB_MODE_WEIGHT_PAINT) mask |= CD_MASK_WEIGHT_MCOL; - if(ob->mode & OB_MODE_SCULPT) - mask |= CD_MASK_MDISPS; + //if(ob->mode & OB_MODE_SCULPT) + // mask |= CD_MASK_MDISPS; } return mask; -- cgit v1.2.3 From 00d5fd9cb780bb7de0b23f94ec80971d6f8c7646 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 29 Oct 2009 11:12:59 +0000 Subject: Sculpt: fix first partial redraw giving wrong bounds. --- source/blender/editors/sculpt_paint/sculpt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 74762379202..2f4d2d9e8bf 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -207,6 +207,9 @@ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, rect->xmin = rect->ymin = INT_MAX; rect->xmax = rect->ymax = INT_MIN; + if(bb_min[0] > bb_max[0] || bb_min[1] > bb_max[1] || bb_min[2] > bb_max[2]) + return 0; + for(i = 0; i < 2; ++i) { for(j = 0; j < 2; ++j) { for(k = 0; k < 2; ++k) { -- cgit v1.2.3 From 3078c806358c4c802e0d2df66a2b9a13471128c1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 2 Nov 2009 18:47:03 +0000 Subject: Sculpt: Multithreading & PBVH Changes * Sculpting, normal update and bounding box code is now multithreaded using OpenMP. * Fix a number of update issues: normals on node boundaries, outdated bounding boxes, partial redraw, .. . There's probably still a few left, but should be better now. * Clicking once now does a single paint instead of two (was also painting on mouse up event). * Smooth shading now is enabled for the full mesh when the first face uses it (so it can be tested at least). Implementation Notes: * PBVH search can now be done either using a callback or bt gathering the nodes in an array. The latter makes multithreading with OpenMP easier. * Normals update code is now inside PBVH, was doing it per node before but should do all faces first and only then vertices. * Instead of using search modes + 1 modified flag, now nodes get 4 flags to indicate what needs to be updated for them, found that this makes it easier for me to understand the code and fix update bugs. * PBVHNode is now exposed as an abstract type, I think this makes it more clear what is happening than having it's data passed as part of callback functions. * Active_verts list was replaced by looping over nodes and the vertices inside them. However the grab brush still uses the active_verts system, will fix that later. * Some micro-optimizations, like avoiding a few multiplications/divisions, using local variables instead of pointers, or looping over fewer vertices to update the bounding boxes. --- source/blender/blenkernel/BKE_mesh.h | 1 + source/blender/blenkernel/intern/brush.c | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 95 +-- source/blender/blenlib/BLI_pbvh.h | 116 ++- source/blender/blenlib/intern/arithb.c | 9 +- source/blender/blenlib/intern/pbvh.c | 556 +++++++++---- source/blender/editors/sculpt_paint/paint_stroke.c | 35 +- source/blender/editors/sculpt_paint/sculpt.c | 871 ++++++++++++--------- 8 files changed, 1030 insertions(+), 655 deletions(-) diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 09c1ab9f7d6..edb4e2cf2a9 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -47,6 +47,7 @@ struct Object; struct MTFace; struct VecNor; struct CustomData; +struct Scene; #ifdef __cplusplus extern "C" { diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 115d31b587c..8a4ffca8244 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -83,7 +83,7 @@ Brush *add_brush(const char *name) brush->clone.alpha= 0.5; brush->sculpt_tool = SCULPT_TOOL_DRAW; - brush_curve_preset(brush, BRUSH_PRESET_SHARP); + brush_curve_preset(brush, BRUSH_PRESET_SMOOTH); /* enable fake user by default */ brush->id.flag |= LIB_FAKEUSER; diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 66e09022ff5..b7234a86af9 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -177,55 +177,6 @@ static void cdDM_getVertNo(DerivedMesh *dm, int index, float no_r[3]) no_r[2] = no[2]/32767.f; } -/* Updates all the face and vertex normals in a node - - Note: the correctness of some vertex normals will be a little - off, not sure if this will be noticeable or not */ -static void update_node_normals(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data) -{ - DerivedMesh *dm = data; - CDDerivedMesh *cddm = data; - float (*face_nors)[3]; - int i; - - /* make a face normal layer if not present */ - face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); - if(!face_nors) - face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, - NULL, dm->numFaceData); - - /* Update face normals */ - for(i = 0; i < totface; ++i) { - MFace *f = cddm->mface + face_indices[i]; - float *fn = face_nors[face_indices[i]]; - - if(f->v4) - CalcNormFloat4(cddm->mvert[f->v1].co, cddm->mvert[f->v2].co, - cddm->mvert[f->v3].co, cddm->mvert[f->v4].co, fn); - else - CalcNormFloat(cddm->mvert[f->v1].co, cddm->mvert[f->v2].co, - cddm->mvert[f->v3].co, fn); - } - - /* Update vertex normals */ - for(i = 0; i < totvert; ++i) { - const int v = vert_indices[i]; - float no[3] = {0,0,0}; - IndexNode *face; - - for(face = cddm->fmap[v].first; face; face = face->next) - VecAddf(no, no, face_nors[face->index]); - - Normalize(no); - - cddm->mvert[v].no[0] = no[0] * 32767; - cddm->mvert[v].no[1] = no[1] * 32767; - cddm->mvert[v].no[2] = no[2] * 32767; - } -} - static ListBase *cdDM_getFaceMap(DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; @@ -244,7 +195,7 @@ static struct PBVH *cdDM_getPBVH(DerivedMesh *dm) CDDerivedMesh *cddm = (CDDerivedMesh*) dm; if(!cddm->pbvh) { - cddm->pbvh = BLI_pbvh_new(update_node_normals, cddm); + cddm->pbvh = BLI_pbvh_new(); BLI_pbvh_build(cddm->pbvh, cddm->mface, cddm->mvert, dm->getNumFaces(dm), dm->getNumVerts(dm)); printf("rebuild pbvh\n"); @@ -445,9 +396,7 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm) static int nodes_drawn = 0; static int is_partial = 0; /* XXX: Just a temporary replacement for the real drawing code */ -static void draw_partial_cb(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data_v) +static void draw_partial_cb(PBVHNode *node, void *data) { /* XXX: Just some quick code to show leaf nodes in different colors */ /*float col[3]; int i; @@ -462,21 +411,16 @@ static void draw_partial_cb(const int *face_indices, glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); glColor3f(1, 0, 0);*/ - GPU_draw_buffers(data_v); + GPU_draw_buffers(BLI_pbvh_node_get_draw_buffers(node)); ++nodes_drawn; } -int find_all(float bb_min[3], float bb_max[3], void *data) -{ - return 1; -} - /* Adapted from: http://www.gamedev.net/community/forums/topic.asp?topic_id=512123 Returns true if the AABB is at least partially within the frustum (ok, not a real frustum), false otherwise. */ -int planes_contain_AABB(float bb_min[3], float bb_max[3], void *data) +int planes_contain_AABB(PBVHNode *node, float bb_min[3], float bb_max[3], void *data) { float (*planes)[4] = data; int i, axis; @@ -520,21 +464,28 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, } if(cddm->pbvh) { - BLI_pbvh_search(cddm->pbvh, BLI_pbvh_update_search_cb, - PBVH_NodeData, NULL, NULL, - PBVH_SEARCH_UPDATE); + float (*face_nors)[3]; + + /* make a face normal layer if not present */ + face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); + if(!face_nors) + face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, + NULL, dm->numFaceData); + + BLI_pbvh_update(cddm->pbvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, + face_nors, cdDM_getFaceMap(dm)); + + /* should be per face */ + if(dm->numFaceData && mface->flag & ME_SMOOTH) + glShadeModel(GL_SMOOTH); if(partial_redraw_planes) { - BLI_pbvh_search(cddm->pbvh, planes_contain_AABB, - partial_redraw_planes, - draw_partial_cb, PBVH_DrawData, - PBVH_SEARCH_MODIFIED); + BLI_pbvh_search_callback(cddm->pbvh, planes_contain_AABB, + partial_redraw_planes, draw_partial_cb, NULL); } else { - BLI_pbvh_search(cddm->pbvh, find_all, NULL, - draw_partial_cb, PBVH_DrawData, - PBVH_SEARCH_NORMAL); - + BLI_pbvh_search_callback(cddm->pbvh, NULL, NULL, + draw_partial_cb, NULL); } is_partial = !!partial_redraw_planes; @@ -542,6 +493,8 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, //printf("nodes drawn=%d\n", nodes_drawn); nodes_drawn = 0; + glShadeModel(GL_FLAT); + return; } diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index edc363e65a3..78e2a9b8745 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -1,62 +1,98 @@ +/** + * A BVH for high poly meshes. + * + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BLI_PBVH_H +#define BLI_PBVH_H + struct MFace; struct MVert; struct PBVH; +struct PBVHNode; +struct ListBase; -/* Returns 1 if the search should continue from this node, 0 otherwise */ -typedef int (*BLI_pbvh_SearchCallback)(float bb_min[3], float bb_max[3], - void *data); +typedef struct PBVH PBVH; +typedef struct PBVHNode PBVHNode; -typedef void (*BLI_pbvh_HitCallback)(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data); -int BLI_pbvh_search_range(float bb_min[3], float bb_max[3], void *data_v); +/* Callbacks */ -typedef enum { - PBVH_SEARCH_NORMAL, +/* returns 1 if the search should continue from this node, 0 otherwise */ +typedef int (*BLI_pbvh_SearchCallback)(PBVHNode *node, + float bb_min[3], float bb_max[3], void *data); + +typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data); + +/* Building */ + +PBVH *BLI_pbvh_new(void); +void BLI_pbvh_build(PBVH *bvh, struct MFace *faces, struct MVert *verts, + int totface, int totvert); +void BLI_pbvh_free(PBVH *bvh); - /* When the callback returns a 1 for a leaf node, that node will be - marked as modified */ - PBVH_SEARCH_MARK_MODIFIED, - - /* Update gpu data for modified nodes. Also clears the Modified flag. */ - PBVH_SEARCH_MODIFIED, +void BLI_pbvh_set_source(PBVH *bvh, struct MVert *, struct MFace *mface); - - PBVH_SEARCH_UPDATE -} PBVH_SearchMode; +/* Hierarchical Search in the BVH, two methods: + * for each hit calling a callback + * gather nodes in an array (easy to multithread) */ -/* Pass the node as data to the callback */ -#define PBVH_NodeData (void*)0xa -/* Pass the draw buffers as data to the callback */ -#define PBVH_DrawData (void*)0xb +void BLI_pbvh_search_callback(PBVH *bvh, + BLI_pbvh_SearchCallback scb, void *search_data, + BLI_pbvh_HitCallback hcb, void *hit_data); -void BLI_pbvh_search(struct PBVH *bvh, BLI_pbvh_SearchCallback scb, - void *search_data, BLI_pbvh_HitCallback hcb, - void *hit_data, PBVH_SearchMode mode); +void BLI_pbvh_search_gather(PBVH *bvh, + BLI_pbvh_SearchCallback scb, void *search_data, + PBVHNode ***array, int *tot); -/* The hit callback is called for all leaf nodes intersecting the ray; +/* Raycast + the hit callback is called for all leaf nodes intersecting the ray; it's up to the callback to find the primitive within the leaves that is hit first */ -void BLI_pbvh_raycast(struct PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, + +void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, float ray_start[3], float ray_normal[3]); +/* Node Access */ -int BLI_pbvh_update_search_cb(float bb_min[3], float bb_max[3], void *data_v); +typedef enum { + PBVH_Leaf = 1, -/* Get the bounding box around all nodes that have been marked as modified. */ -void BLI_pbvh_modified_bounding_box(struct PBVH *bvh, - float bb_min[3], float bb_max[3]); -void BLI_pbvh_reset_modified_bounding_box(struct PBVH *bvh); + PBVH_UpdateNormals = 2, + PBVH_UpdateBB = 4, + PBVH_UpdateDrawBuffers = 8, + PBVH_UpdateRedraw = 16 +} PBVHNodeFlags; -/* Lock is off by default, turn on to stop redraw from clearing the modified - flag from nodes */ -void BLI_pbvh_toggle_modified_lock(struct PBVH *bvh); +void BLI_pbvh_node_mark_update(PBVHNode *node); +void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert); +void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int *totface); +void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node); +/* Update Normals/Bounding Box/Draw Buffers/Redraw and clear flags */ -struct PBVH *BLI_pbvh_new(BLI_pbvh_HitCallback update_cb, void *update_cb_data); -void BLI_pbvh_build(struct PBVH *bvh, struct MFace *faces, struct MVert *verts, - int totface, int totvert); -void BLI_pbvh_free(struct PBVH *bvh); +void BLI_pbvh_update(PBVH *bvh, int flags, + float (*face_nors)[3], struct ListBase *fmap); +void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]); + +#endif /* BLI_PBVH_H */ -void BLI_pbvh_set_source(struct PBVH *bvh, struct MVert *, struct MFace *mface); diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c index f353a90ab21..20c2b6d95be 100644 --- a/source/blender/blenlib/intern/arithb.c +++ b/source/blender/blenlib/intern/arithb.c @@ -114,16 +114,17 @@ float sasqrtf(float fac) float Normalize(float *n) { - float d; + float d, invd; d= n[0]*n[0]+n[1]*n[1]+n[2]*n[2]; /* A larger value causes normalize errors in a scaled down models with camera xtreme close */ if(d>1.0e-35f) { d= (float)sqrt(d); + invd= 1.0f/d; - n[0]/=d; - n[1]/=d; - n[2]/=d; + n[0]*=invd; + n[1]*=invd; + n[2]*=invd; } else { n[0]=n[1]=n[2]= 0.0f; d= 0.0f; diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 98492a8f429..b707343bebb 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1,3 +1,29 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include + #include "MEM_guardedalloc.h" #include "DNA_meshdata_types.h" @@ -6,14 +32,11 @@ #include "BLI_ghash.h" #include "BLI_pbvh.h" +#include "BKE_mesh.h" #include "BKE_utildefines.h" #include "gpu_buffers.h" -#include -#include -#include - #define LEAF_LIMIT 10000 //#define PERFCNTRS @@ -41,11 +64,6 @@ void BLI_bitmap_clear(BLI_bitmap b, int index) b[index >> 3] &= ~(1 << (index & 7)); } -typedef enum { - PBVH_Leaf = 1, - PBVH_Modified = 2 -} NodeFlags; - /* Axis-aligned bounding box */ typedef struct { float bmin[3], bmax[3]; @@ -56,7 +74,7 @@ typedef struct { float bmin[3], bmax[3], bcentroid[3]; } BBC; -typedef struct { +struct PBVHNode { /* Opaque handle for drawing code */ void *draw_buffers; @@ -68,33 +86,26 @@ typedef struct { /* For internal nodes */ int children_offset; - /* Range of faces used in the node */ - int face_offset; + /* Pointer into bvh face_indices */ + int *face_indices; unsigned short totface; unsigned short uniq_verts, face_verts; char flag; -} Node; +}; -typedef struct PBVH { - Node *nodes; +struct PBVH { + PBVHNode *nodes; int node_mem_count, totnode; int *face_indices; int totface; - BB modified_bb; - - BLI_pbvh_HitCallback update_cb; - void *update_cb_data; - /* Mesh data */ MVert *verts; MFace *faces; - int modified_lock; - /* Only used during BVH build and update, don't need to remain valid after */ BLI_bitmap vert_bitmap; @@ -102,7 +113,26 @@ typedef struct PBVH { #ifdef PERFCNTRS int perf_modified; #endif -} PBVH; +}; + +#define STACK_FIXED_DEPTH 100 + +typedef struct PBVHStack { + PBVHNode *node; + int revisiting; +} PBVHStack; + +typedef struct PBVHIter { + PBVH *bvh; + BLI_pbvh_SearchCallback scb; + void *search_data; + + PBVHStack *stack; + int stacksize; + + PBVHStack stackfixed[STACK_FIXED_DEPTH]; + int stackspace; +} PBVHIter; static void BB_reset(BB *bb) { @@ -113,13 +143,11 @@ static void BB_reset(BB *bb) /* Expand the bounding box to include a new coordinate */ static void BB_expand(BB *bb, float co[3]) { - if(co[0] < bb->bmin[0]) bb->bmin[0] = co[0]; - if(co[1] < bb->bmin[1]) bb->bmin[1] = co[1]; - if(co[2] < bb->bmin[2]) bb->bmin[2] = co[2]; - - if(co[0] > bb->bmax[0]) bb->bmax[0] = co[0]; - if(co[1] > bb->bmax[1]) bb->bmax[1] = co[1]; - if(co[2] > bb->bmax[2]) bb->bmax[2] = co[2]; + int i; + for(i = 0; i < 3; ++i) { + bb->bmin[i] = MIN2(bb->bmin[i], co[i]); + bb->bmax[i] = MAX2(bb->bmax[i], co[i]); + } } /* Expand the bounding box to include another bounding box */ @@ -163,28 +191,28 @@ static void BBC_update_centroid(BBC *bbc) } /* Not recursive */ -static void update_node_vb(PBVH *bvh, Node *node) +static void update_node_vb(PBVH *bvh, PBVHNode *node) { - BB_reset(&node->vb); + BB vb; + + BB_reset(&vb); if(node->flag & PBVH_Leaf) { - int i, j; - for(i = node->face_offset + node->totface - 1; - i >= node->face_offset; --i) { - MFace *f = bvh->faces + bvh->face_indices[i]; - const int sides = f->v4 ? 4 : 3; - - for(j = 0; j < sides; ++j) - BB_expand(&node->vb, - bvh->verts[*((&f->v1) + j)].co); + int i, totvert= node->uniq_verts + node->face_verts; + + for(i = 0; i < totvert; ++i) { + float *co= bvh->verts[node->vert_indices[i]].co; + BB_expand(&vb, co); } } else { - BB_expand_with_bb(&node->vb, + BB_expand_with_bb(&vb, &bvh->nodes[node->children_offset].vb); - BB_expand_with_bb(&node->vb, + BB_expand_with_bb(&vb, &bvh->nodes[node->children_offset + 1].vb); } + + node->vb= vb; } /* Adapted from BLI_kdopbvh.c */ @@ -222,13 +250,13 @@ void check_partitioning(int *face_indices, int lo, int hi, int axis, static void grow_nodes(PBVH *bvh, int totnode) { if(totnode > bvh->node_mem_count) { - Node *prev = bvh->nodes; + PBVHNode *prev = bvh->nodes; bvh->node_mem_count *= 1.33; if(bvh->node_mem_count < totnode) bvh->node_mem_count = totnode; - bvh->nodes = MEM_callocN(sizeof(Node) * bvh->node_mem_count, + bvh->nodes = MEM_callocN(sizeof(PBVHNode) * bvh->node_mem_count, "bvh nodes"); - memcpy(bvh->nodes, prev, bvh->totnode * sizeof(Node)); + memcpy(bvh->nodes, prev, bvh->totnode * sizeof(PBVHNode)); MEM_freeN(prev); } @@ -259,19 +287,19 @@ static void map_insert_vert(PBVH *bvh, GHash *map, } /* Find vertices used by the faces in this node and update the draw buffers */ -static void build_leaf_node(PBVH *bvh, Node *node) +static void build_leaf_node(PBVH *bvh, PBVHNode *node) { GHashIterator *iter; GHash *map; - int i, j; + int i, j, totface; map = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp); node->uniq_verts = node->face_verts = 0; + totface= node->totface; - for(i = node->face_offset + node->totface - 1; - i >= node->face_offset; --i) { - MFace *f = bvh->faces + bvh->face_indices[i]; + for(i = 0; i < totface; ++i) { + MFace *f = bvh->faces + node->face_indices[i]; int sides = f->v4 ? 4 : 3; for(j = 0; j < sides; ++j) { @@ -300,7 +328,7 @@ static void build_leaf_node(PBVH *bvh, Node *node) node->draw_buffers = GPU_build_buffers(map, bvh->verts, bvh->faces, - bvh->face_indices + node->face_offset, + node->face_indices, node->totface, node->vert_indices, node->uniq_verts, node->uniq_verts + node->face_verts); @@ -329,7 +357,7 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, if(count <= LEAF_LIMIT) { bvh->nodes[node_index].flag |= PBVH_Leaf; - bvh->nodes[node_index].face_offset = offset; + bvh->nodes[node_index].face_indices = bvh->face_indices + offset; bvh->nodes[node_index].totface = count; /* Still need vb for searches */ @@ -398,7 +426,7 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv bvh->totnode = 0; if(bvh->node_mem_count < 100) { bvh->node_mem_count = 100; - bvh->nodes = MEM_callocN(sizeof(Node) * + bvh->nodes = MEM_callocN(sizeof(PBVHNode) * bvh->node_mem_count, "bvh initial nodes"); } @@ -408,8 +436,6 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv bvh->verts = verts; bvh->vert_bitmap = BLI_bitmap_new(totvert); - BB_reset(&bvh->modified_bb); - BB_reset(&cb); /* For each face, store the AABB and the AABB centroid */ @@ -437,12 +463,9 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv MEM_freeN(bvh->vert_bitmap); } -PBVH *BLI_pbvh_new(BLI_pbvh_HitCallback update_cb, void *update_cb_data) +PBVH *BLI_pbvh_new(void) { PBVH *bvh = MEM_callocN(sizeof(PBVH), "pbvh"); - - bvh->update_cb = update_cb; - bvh->update_cb_data = update_cb_data; return bvh; } @@ -469,113 +492,339 @@ void BLI_pbvh_set_source(PBVH *bvh, MVert *mvert, MFace *mface) bvh->faces = mface; } -static void do_hit_callback(PBVH *bvh, Node *node, +static void do_hit_callback(PBVH *bvh, PBVHNode *node, BLI_pbvh_HitCallback cb, void *data) { - if(cb) { - cb(bvh->face_indices + node->face_offset, node->vert_indices, - node->totface, node->uniq_verts, data); + if(cb) + cb(node, data); +} + +static void pbvh_iter_begin(PBVHIter *iter, PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data) +{ + iter->bvh= bvh; + iter->scb= scb; + iter->search_data= search_data; + + iter->stack= iter->stackfixed; + iter->stackspace= STACK_FIXED_DEPTH; + + iter->stack[0].node= bvh->nodes; + iter->stack[0].revisiting= 0; + iter->stacksize= 1; +} + +static void pbvh_iter_end(PBVHIter *iter) +{ + if(iter->stackspace > STACK_FIXED_DEPTH) + MEM_freeN(iter->stack); +} + +static void pbvh_stack_push(PBVHIter *iter, PBVHNode *node, int revisiting) +{ + if(iter->stacksize == iter->stackspace) { + PBVHStack *newstack; + + iter->stackspace *= 2; + newstack= MEM_callocN(sizeof(PBVHStack)*iter->stackspace, "PBVHStack"); + memcpy(newstack, iter->stack, sizeof(PBVHStack)*iter->stacksize); + + if(iter->stackspace > STACK_FIXED_DEPTH) + MEM_freeN(iter->stack); + iter->stack= newstack; } + + iter->stack[iter->stacksize].node= node; + iter->stack[iter->stacksize].revisiting= revisiting; + iter->stacksize++; } -static int search_sub(PBVH *bvh, Node *node, - BLI_pbvh_SearchCallback scb, void *search_data_f, - BLI_pbvh_HitCallback hcb, void *hit_data_f, - PBVH_SearchMode mode) +static PBVHNode *pbvh_iter_next(PBVHIter *iter) { - void *search_data = search_data_f; - void *hit_data = hit_data_f; + PBVHNode *node; + int revisiting; + void *search_data; + + /* purpose here is to traverse tree, visiting child nodes before their + parents, this order is necessary for e.g. computing bounding boxes */ + + while(iter->stacksize) { + /* pop node */ + iter->stacksize--; + node= iter->stack[iter->stacksize].node; + revisiting= iter->stack[iter->stacksize].revisiting; - if(search_data_f == PBVH_NodeData) - search_data = &node->flag; - if(hit_data_f == PBVH_DrawData) - hit_data = node->draw_buffers; + /* revisiting node already checked */ + if(revisiting) + return node; + + /* check search callback */ + search_data= iter->search_data; + + if(iter->scb && !iter->scb(node, node->vb.bmin, node->vb.bmax, search_data)) + continue; /* don't traverse, outside of search zone */ - if(scb(node->vb.bmin, node->vb.bmax, search_data)) { if(node->flag & PBVH_Leaf) { - switch(mode) { - case PBVH_SEARCH_MARK_MODIFIED: - node->flag |= PBVH_Modified; -#ifdef PERFCNTRS - ++bvh->perf_modified; -#endif - break; - case PBVH_SEARCH_MODIFIED: - if(node->flag & PBVH_Modified) { - if(bvh->update_cb) { - do_hit_callback - (bvh, node, - bvh->update_cb, - bvh->update_cb_data); - } - - GPU_update_buffers(node->draw_buffers, - bvh->verts, - node->vert_indices, - node->uniq_verts + - node->face_verts); + /* immediately hit leaf node */ + return node; + } + else { + /* come back later when children are done */ + pbvh_stack_push(iter, node, 1); + + /* push two child nodes on the stack */ + pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset+1, 0); + pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset, 0); + } + } + + return NULL; +} + +void BLI_pbvh_search_gather(PBVH *bvh, + BLI_pbvh_SearchCallback scb, void *search_data, + PBVHNode ***r_array, int *r_tot) +{ + PBVHIter iter; + PBVHNode **array= NULL, **newarray, *node; + int tot= 0, space= 0; + + pbvh_iter_begin(&iter, bvh, scb, search_data); + + while((node=pbvh_iter_next(&iter))) { + if(node->flag & PBVH_Leaf) { + if(tot == space) { + /* resize array if needed */ + space= (tot == 0)? 32: space*2; + newarray= MEM_callocN(sizeof(PBVHNode)*space, "PBVHNodeSearch"); + + if(array) { + memcpy(newarray, array, sizeof(PBVHNode)*tot); + MEM_freeN(array); } - default: - break; + + array= newarray; } + array[tot]= node; + tot++; + } + } + + pbvh_iter_end(&iter); + + *r_array= array; + *r_tot= tot; +} + +void BLI_pbvh_search_callback(PBVH *bvh, + BLI_pbvh_SearchCallback scb, void *search_data, + BLI_pbvh_HitCallback hcb, void *hit_data) +{ + PBVHIter iter; + PBVHNode *node; + + pbvh_iter_begin(&iter, bvh, scb, search_data); + + while((node=pbvh_iter_next(&iter))) + if(node->flag & PBVH_Leaf) do_hit_callback(bvh, node, hcb, hit_data); + + pbvh_iter_end(&iter); +} + +static int update_search_cb(PBVHNode *node, + float bb_min[3], float bb_max[3], void *data_v) +{ + if(node->flag & PBVH_Leaf) + return (node->flag & (PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw)); + + return 1; +} + +static void pbvh_update_face_normals(PBVH *bvh, PBVHNode **nodes, + int totnode, float (*face_nors)[3]) +{ + PBVHNode *node; + int n; + + #pragma omp parallel for private(n) schedule(static) + for(n = 0; n < totnode; n++) { + node= nodes[n]; + + if((node->flag & PBVH_UpdateNormals)) { + int i, totface, *faces; + + BLI_pbvh_node_get_faces(node, &faces, &totface); + + for(i = 0; i < totface; ++i) { + MFace *f = bvh->faces + faces[i]; + float *fn = face_nors[faces[i]]; + + if(f->v4) + CalcNormFloat4(bvh->verts[f->v1].co, bvh->verts[f->v2].co, + bvh->verts[f->v3].co, bvh->verts[f->v4].co, fn); + else + CalcNormFloat(bvh->verts[f->v1].co, bvh->verts[f->v2].co, + bvh->verts[f->v3].co, fn); + } } - else { - int mod = 0; - if(search_sub(bvh, bvh->nodes + node->children_offset, - scb, search_data_f, hcb,hit_data_f, mode)) - mod = 1; - if(search_sub(bvh, - bvh->nodes + node->children_offset + 1, - scb, search_data_f, hcb,hit_data_f, mode)) - mod = 1; - - if(mod) - node->flag |= PBVH_Modified; + } +} + +static void pbvh_update_BB_normals(PBVH *bvh, PBVHNode **nodes, + int totnode, int flag, float (*face_nors)[3], ListBase *fmap) +{ + PBVHNode *node; + int n; + + /* update BB, vertex normals, redraw flag */ + #pragma omp parallel for private(n) schedule(static) + for(n = 0; n < totnode; n++) { + node= nodes[n]; + + if((flag & PBVH_UpdateBB) && (node->flag & PBVH_UpdateBB)) { + update_node_vb(bvh, node); + /* don't clear flag yet, leave it for flushing later */ + } + + if((flag & PBVH_UpdateNormals) && (node->flag & PBVH_UpdateNormals)) { + int i, *verts, totvert; + + BLI_pbvh_node_get_verts(node, &verts, &totvert); + + for(i = 0; i < totvert; ++i) { + const int v = verts[i]; + float no[3] = {0,0,0}; + IndexNode *face; + + for(face = fmap[v].first; face; face = face->next) + VecAddf(no, no, face_nors[face->index]); + + Normalize(no); + + bvh->verts[v].no[0] = no[0] * 32767; + bvh->verts[v].no[1] = no[1] * 32767; + bvh->verts[v].no[2] = no[2] * 32767; + } + + node->flag &= ~PBVH_UpdateNormals; } + + if((flag & PBVH_UpdateRedraw) && (node->flag & PBVH_UpdateRedraw)) + node->flag &= ~PBVH_UpdateRedraw; } +} - if(mode == PBVH_SEARCH_MODIFIED) { -#ifdef PERFCNTRS - if(node->flag & PBVH_Modified && node->flag & PBVH_Leaf) - --bvh->perf_modified; -#endif - if(!bvh->modified_lock) - node->flag &= ~PBVH_Modified; +static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode) +{ + PBVHNode *node; + int n; + + /* can't be done in parallel with OpenGL */ + for(n = 0; n < totnode; n++) { + node= nodes[n]; + + if(node->flag & PBVH_UpdateDrawBuffers) { + GPU_update_buffers(node->draw_buffers, + bvh->verts, + node->vert_indices, + node->uniq_verts + + node->face_verts); + + node->flag &= ~PBVH_UpdateDrawBuffers; + } } - else if(mode == PBVH_SEARCH_UPDATE) { - if(node->flag & PBVH_Modified) { +} + +static int pbvh_flush_bb(PBVH *bvh, PBVHNode *node) +{ + int update= 0; + + /* difficult to multithread well, we just do single threaded recursive */ + if(node->flag & PBVH_Leaf) { + update= (node->flag & PBVH_UpdateBB); + node->flag &= ~PBVH_UpdateBB; + return update; + } + else { + update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset); + update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset + 1); + + if(update) update_node_vb(bvh, node); - if(node->flag & PBVH_Leaf) - BB_expand_with_bb(&bvh->modified_bb, &node->vb); - } } - return node->flag & PBVH_Modified; + return update; } -void BLI_pbvh_search(PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data, - BLI_pbvh_HitCallback hcb, void *hit_data, - PBVH_SearchMode mode) +void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3], ListBase *fmap) { -#ifdef PERFCNTRS - printf("search mode=%s\n", - mode==PBVH_SEARCH_MARK_MODIFIED?"mark-modified": - mode==PBVH_SEARCH_MODIFIED?"modified": - mode==PBVH_SEARCH_UPDATE?"update": - mode==PBVH_SEARCH_NORMAL?"normal":"unknown-mode"); - if(mode == PBVH_SEARCH_MARK_MODIFIED) - bvh->perf_modified = 0; -#endif + PBVHNode **nodes; + int totnode; - search_sub(bvh, bvh->nodes, scb, search_data, hcb, hit_data, mode); -#ifdef PERFCNTRS - printf("%d nodes marked modified\n", bvh->perf_modified); - printf("search complete\n\n"); -#endif + BLI_pbvh_search_gather(bvh, update_search_cb, NULL, &nodes, &totnode); + + if(flag & PBVH_UpdateNormals) + pbvh_update_face_normals(bvh, nodes, totnode, face_nors); + + if(flag & (PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateRedraw)) + pbvh_update_BB_normals(bvh, nodes, totnode, flag, face_nors, fmap); + + if(flag & PBVH_UpdateDrawBuffers) + pbvh_update_draw_buffers(bvh, nodes, totnode); + + if(flag & PBVH_UpdateBB) + pbvh_flush_bb(bvh, bvh->nodes); + + if(nodes) MEM_freeN(nodes); } +void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]) +{ + PBVHIter iter; + PBVHNode *node; + BB bb; + + BB_reset(&bb); + + pbvh_iter_begin(&iter, bvh, NULL, NULL); + + while((node=pbvh_iter_next(&iter))) + if(node->flag & PBVH_UpdateRedraw) + BB_expand_with_bb(&bb, &node->vb); + + pbvh_iter_end(&iter); + + VecCopyf(bb_min, bb.bmin); + VecCopyf(bb_max, bb.bmax); +} + +/***************************** Node Access ***********************************/ + +void BLI_pbvh_node_mark_update(PBVHNode *node) +{ + node->flag |= PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw; +} + +void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert) +{ + *vert_indices= node->vert_indices; + *totvert= node->uniq_verts; +} + +void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int *totface) +{ + *face_indices= node->face_indices; + *totface= node->totface; +} + +void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node) +{ + return node->draw_buffers; +} + +/********************************* Raycast ***********************************/ + typedef struct { /* Ray */ float start[3]; @@ -584,7 +833,7 @@ typedef struct { } RaycastData; /* Adapted from here: http://www.gamedev.net/community/forums/topic.asp?topic_id=459973 */ -static int ray_aabb_intersect(float bb_min[3], float bb_max[3], void *data_v) +static int ray_aabb_intersect(PBVHNode *node, float bb_min[3], float bb_max[3], void *data_v) { RaycastData *ray = data_v; float bbox[2][3]; @@ -637,29 +886,6 @@ void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, rcd.sign[1] = rcd.inv_dir[1] < 0; rcd.sign[2] = rcd.inv_dir[2] < 0; - BLI_pbvh_search(bvh, ray_aabb_intersect, &rcd, cb, data, - PBVH_SEARCH_NORMAL); -} - -int BLI_pbvh_update_search_cb(float bb_min[3], float bb_max[3], void *data_v) -{ - int *data = data_v; - - return ((*data) & PBVH_Modified); -} - -void BLI_pbvh_modified_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]) -{ - VecCopyf(bb_min, bvh->modified_bb.bmin); - VecCopyf(bb_max, bvh->modified_bb.bmax); + BLI_pbvh_search_callback(bvh, ray_aabb_intersect, &rcd, cb, data); } -void BLI_pbvh_reset_modified_bounding_box(PBVH *bvh) -{ - BB_reset(&bvh->modified_bb); -} - -void BLI_pbvh_toggle_modified_lock(PBVH *bvh) -{ - bvh->modified_lock = !bvh->modified_lock; -} diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index f8ffaacc0b7..c2d22089442 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -234,9 +234,7 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) { PaintStroke *stroke = op->customdata; float mouse[2]; - - if(event->type == TIMER && (event->customdata != stroke->timer)) - return OPERATOR_RUNNING_MODAL; + int first= 0; if(!stroke->stroke_started) { stroke->last_mouse_position[0] = event->x; @@ -251,26 +249,27 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) stroke->timer = WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, stroke->brush->rate); } + first= 1; //ED_region_tag_redraw(ar); } - 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); + /* TODO: fix hardcoded event here */ + if(first || event->type == 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); + } + else + paint_brush_stroke_add_step(C, op, event, mouse); } else - paint_brush_stroke_add_step(C, op, event, mouse); + ;//ED_region_tag_redraw(ar); } - else - ;//ED_region_tag_redraw(ar); } - - /* TODO: fix hardcoded event here */ - if(event->type == LEFTMOUSE && event->val == KM_RELEASE) { - /* Exit stroke, free data */ - + else if(event->type == LEFTMOUSE && event->val == KM_RELEASE) { + /* exit stroke, free data */ if(stroke->smooth_stroke_cursor) WM_paint_cursor_end(CTX_wm_manager(C), stroke->smooth_stroke_cursor); @@ -281,8 +280,8 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) MEM_freeN(stroke); return OPERATOR_FINISHED; } - else - return OPERATOR_RUNNING_MODAL; + + return OPERATOR_RUNNING_MODAL; } int paint_stroke_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 2f4d2d9e8bf..e29f0d56ba2 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -142,6 +142,7 @@ typedef struct StrokeCache { float flip; float pressure; float mouse[2]; + float bstrength; /* The rest is temporary storage that isn't saved as a property */ @@ -158,6 +159,8 @@ typedef struct StrokeCache { float rotation; /* Texture rotation (radians) for anchored and rake modes */ int pixel_radius, previous_pixel_radius; ListBase grab_active_verts[8]; /* The same list of verts is used throught grab stroke */ + PBVHNode **grab_active_nodes[8]; + int grab_active_totnode[8]; float grab_delta[3], grab_delta_symmetry[3]; float old_grab_location[3]; int symmetry; /* Symmetry index between 0 and 7 */ @@ -202,7 +205,7 @@ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, view3d_get_object_project_mat(rv3d, ob, pmat); - BLI_pbvh_modified_bounding_box(ob->sculpt->tree, bb_min, bb_max); + BLI_pbvh_redraw_bounding_box(ob->sculpt->tree, bb_min, bb_max); rect->xmin = rect->ymin = INT_MAX; rect->xmax = rect->ymax = INT_MIN; @@ -239,13 +242,21 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, view3d_get_transformation(ar, rv3d, ob, &mats); sculpt_get_redraw_rect(ar, rv3d,ob, &rect); - BLI_pbvh_reset_modified_bounding_box(ob->sculpt->tree); - +#if 1 + /* use some extra space just in case */ + rect.xmin -= 2; + rect.xmax += 2; + rect.ymin -= 2; + rect.ymax += 2; +#else + /* it was doing this before, allows to redraw a smaller + part of the screen but also gives artifaces .. */ rect.xmin += 2; rect.xmax -= 2; rect.ymin += 2; rect.ymax -= 2; +#endif view3d_calculate_clipping(bb, planes, &mats, &rect); @@ -253,8 +264,55 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, ((float*)planes)[i] = -((float*)planes)[i]; MEM_freeN(bb); + + /* clear redraw flag from nodes */ + BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL, NULL); +} + +/*** Looping Over Nodes in a BVH Node ***/ + +typedef struct SculptVertexData { + float radius_squared; + float location[3]; + + MVert *mvert; + int *verts; + int i, index, totvert; + + float *co; + short *no; + float dist; +} SculptVertexData; + +static void sculpt_node_verts_init(Sculpt *sd, SculptSession *ss, PBVHNode *node, SculptVertexData *vd) +{ + vd->radius_squared= ss->cache->radius*ss->cache->radius; + VecCopyf(vd->location, ss->cache->location); + + vd->mvert= ss->mvert; + vd->i= 0; + BLI_pbvh_node_get_verts(node, &vd->verts, &vd->totvert); } +static int sculpt_node_verts_next(SculptVertexData *vd) +{ + while(vd->i < vd->totvert) { + float delta[3], dsq; + + vd->index= vd->verts[vd->i++]; + vd->co= vd->mvert[vd->index].co; + vd->no= vd->mvert[vd->index].no; + VECSUB(delta, vd->co, vd->location); + dsq = INPR(delta, delta); + + if(dsq < vd->radius_squared) { + vd->dist = sqrt(dsq); + return 1; + } + } + + return 0; +} /* ===== Sculpting ===== * @@ -294,6 +352,168 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache) } } +/* Uses symm to selectively flip any axis of a coordinate. */ +static void flip_coord(float out[3], float in[3], const char symm) +{ + 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]; +} + +/* Get a pixel from the texcache at (px, py) */ +static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) +{ + unsigned *p; + p = ss->texcache + py * ss->texcache_side + px; + return ((unsigned char*)(p))[0]; +} + +static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v) +{ + int x, y, x2, y2; + const int tc_max = ss->texcache_side - 1; + float urat, vrat, uopp; + + if(u < 0) u = 0; + else if(u >= ss->texcache_side) u = tc_max; + if(v < 0) v = 0; + else if(v >= ss->texcache_side) v = tc_max; + + x = floor(u); + y = floor(v); + x2 = x + 1; + y2 = y + 1; + + if(x2 > ss->texcache_side) x2 = tc_max; + if(y2 > ss->texcache_side) y2 = tc_max; + + urat = u - x; + vrat = v - y; + uopp = 1 - urat; + + return ((get_texcache_pixel(ss, x, y) * uopp + + get_texcache_pixel(ss, x2, y) * urat) * (1 - vrat) + + (get_texcache_pixel(ss, x, y2) * uopp + + get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0; +} + +/* 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 = NULL; + float avg= 1; + + if(br->texact >= 0) + tex = br->mtex[br->texact]; + + if(!tex) { + avg= 1; + } + else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) { + float jnk; + + /* Get strength by feeding the vertex + location directly into a texture */ + externtex(tex, 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. */ + VecCopyf(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->mouse[0]) / bsize; + float fy= (point_2d[1] - ss->cache->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; + + avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side); + } + } + + avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ + + return avg; +} + +typedef struct { + Sculpt *sd; + SculptSession *ss; + float radius_squared; + ListBase *active_verts; + float area_normal[3]; +} SculptSearchSphereData; + +/* Test AABB against sphere */ +static int sculpt_search_sphere_cb(PBVHNode *node, + float bb_min[3], float bb_max[3], void *data_v) +{ + SculptSearchSphereData *data = data_v; + float *center = data->ss->cache->location, nearest[3]; + float t[3]; + int i; + + for(i = 0; i < 3; ++i) { + if(bb_min[i] > center[i]) + nearest[i] = bb_min[i]; + else if(bb_max[i] < center[i]) + nearest[i] = bb_max[i]; + else + nearest[i] = center[i]; + } + + VecSubf(t, center, nearest); + + return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared; +} + /* Handles clipping against a mirror modifier and SCULPT_LOCK axis flags */ static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float val[3]) { @@ -323,26 +543,41 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], cons } } -/* Currently only for the draw brush; finds average normal for all active - vertices */ -static void calc_area_normal(Sculpt *sd, SculptSession *ss, float out[3], const ListBase* active_verts) +/* 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) { Brush *brush = paint_brush(&sd->paint); StrokeCache *cache = ss->cache; - ActiveData *node = active_verts->first; const int view = 0; /* XXX: should probably be a flag, not number: brush_type==SCULPT_TOOL_DRAW ? sculptmode_brush()->view : 0; */ - float out_flip[3]; - float *out_dir = cache->view_normal_symmetry; - - out[0]=out[1]=out[2] = out_flip[0]=out_flip[1]=out_flip[2] = 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; + + VecCopyf(out_dir, cache->view_normal_symmetry); + + /* threaded loop over nodes */ + #pragma omp parallel for private(n) schedule(static) + for(n=0; nflag & BRUSH_ANCHORED) { - for(; node; node = node->next) - add_norm_if(out_dir, out, out_flip, cache->orig_norms[node->Index]); - } - else { - for(; node; node = node->next) - add_norm_if(out_dir, out, out_flip, ss->mvert[node->Index].no); + if(brush->flag & BRUSH_ANCHORED) { + while(sculpt_node_verts_next(&vd)) + add_norm_if(out_dir, nout, nout_flip, cache->orig_norms[vd.index]); + } + else { + while(sculpt_node_verts_next(&vd)) + add_norm_if(out_dir, nout, nout_flip, ss->mvert[vd.index].no); + } + + /* we sum per node and add together later for threads */ + #pragma omp critical + VecAddf(out, out, nout); + VecAddf(out_flip, out_flip, nout_flip); } if (out[0]==0.0 && out[1]==0.0 && out[2]==0.0) { @@ -351,32 +586,47 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float out[3], const Normalize(out); - if(out_dir) { - 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); - } + 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(out); + VecCopyf(area_normal, out); } -static void do_draw_brush(Sculpt *sd, SculptSession *ss, const ListBase* active_verts) +static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - float area_normal[3]; - ActiveData *node= active_verts->first; - - calc_area_normal(sd, ss, area_normal, active_verts); - - while(node){ - float *co= ss->mvert[node->Index].co; + 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; ncache->radius*node->Fade*ss->cache->scale[0], - co[1]+area_normal[1]*ss->cache->radius*node->Fade*ss->cache->scale[1], - co[2]+area_normal[2]*ss->cache->radius*node->Fade*ss->cache->scale[2]}; + while(sculpt_node_verts_next(&vd)) { + /* offset vertex */ + const float fade = tex_strength(ss, brush, vd.co, vd.dist); + const 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, co, val); + sculpt_clip(sd, ss, vd.co, val); + } - node= node->next; + BLI_pbvh_node_mark_update(nodes[n]); } } @@ -424,48 +674,67 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) VecCopyf(avg, ss->mvert[vert].co); } -static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts) +static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - ActiveData *node= active_verts->first; - int i; - - for(i = 0; i < 2; ++i) { - while(node){ - float *co= ss->mvert[node->Index].co; - float avg[3], val[3]; - - neighbor_average(ss, avg, node->Index); - val[0] = co[0]+(avg[0]-co[0])*node->Fade; - val[1] = co[1]+(avg[1]-co[1])*node->Fade; - val[2] = co[2]+(avg[2]-co[2])*node->Fade; + Brush *brush = paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + int iteration, n; + + for(iteration = 0; iteration < 2; ++iteration) { + #pragma omp parallel for private(n) schedule(static) + for(n=0; nnext; + BLI_pbvh_node_mark_update(nodes[n]); } } } -static void do_pinch_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts) +static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - ActiveData *node= active_verts->first; + Brush *brush = paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + int n; - while(node) { - float *co= ss->mvert[node->Index].co; - const float val[3]= {co[0]+(ss->cache->location[0]-co[0])*node->Fade, - co[1]+(ss->cache->location[1]-co[1])*node->Fade, - co[2]+(ss->cache->location[2]-co[2])*node->Fade}; + #pragma omp parallel for private(n) schedule(static) + for(n=0; nnext; + while(sculpt_node_verts_next(&vd)) { + const float fade = tex_strength(ss, brush, vd.co, vd.dist)*bstrength; + const float val[3]= {vd.co[0]+(vd.location[0]-vd.co[0])*fade, + vd.co[1]+(vd.location[1]-vd.co[1])*fade, + vd.co[2]+(vd.location[2]-vd.co[2])*fade}; + + sculpt_clip(sd, ss, vd.co, val); + } + + BLI_pbvh_node_mark_update(nodes[n]); } } -static void do_grab_brush(Sculpt *sd, SculptSession *ss) +static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { ActiveData *node= ss->cache->grab_active_verts[ss->cache->symmetry].first; float add[3]; float grab_delta[3]; + int n; VecCopyf(grab_delta, ss->cache->grab_delta_symmetry); @@ -480,84 +749,116 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss) node= node->next; } + + for(n=0; npaint); + float bstrength= ss->cache->bstrength; float area_normal[3]; - ActiveData *node= active_verts->first; float lim= ss->cache->radius / 4; + int n; if(ss->cache->flip) lim = -lim; - calc_area_normal(sd, ss, area_normal, active_verts); + calc_area_normal(sd, ss, area_normal, nodes, totnode); - while(node){ - float *disp= &ss->layer_disps[node->Index]; - float *co= ss->mvert[node->Index].co; - float val[3]; - - *disp+= node->Fade; + #pragma omp parallel for private(n) schedule(static) + for(n=0; n 0 && *disp > lim)) - *disp = lim; - - val[0] = ss->mesh_co_orig[node->Index][0]+area_normal[0] * *disp*ss->cache->scale[0]; - val[1] = ss->mesh_co_orig[node->Index][1]+area_normal[1] * *disp*ss->cache->scale[1]; - val[2] = ss->mesh_co_orig[node->Index][2]+area_normal[2] * *disp*ss->cache->scale[2]; + sculpt_node_verts_init(sd, ss, nodes[n], &vd); - sculpt_clip(sd, ss, co, val); + while(sculpt_node_verts_next(&vd)) { + const float fade = tex_strength(ss, brush, vd.co, vd.dist)*bstrength; + float *disp= &ss->layer_disps[vd.index]; + 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; + + val[0] = ss->mesh_co_orig[vd.index][0]+area_normal[0] * *disp*ss->cache->scale[0]; + val[1] = ss->mesh_co_orig[vd.index][1]+area_normal[1] * *disp*ss->cache->scale[1]; + val[2] = ss->mesh_co_orig[vd.index][2]+area_normal[2] * *disp*ss->cache->scale[2]; - node= node->next; + sculpt_clip(sd, ss, vd.co, val); + } + + BLI_pbvh_node_mark_update(nodes[n]); } } -static void do_inflate_brush(Sculpt *s, SculptSession *ss, const ListBase *active_verts) +static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - ActiveData *node= active_verts->first; - float add[3]; + Brush *brush = paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + int n; - while(node) { - float *co= ss->mvert[node->Index].co; - short *no= ss->mvert[node->Index].no; - - add[0]= no[0]/ 32767.0f; - add[1]= no[1]/ 32767.0f; - add[2]= no[2]/ 32767.0f; - VecMulf(add, node->Fade * ss->cache->radius); - add[0]*= ss->cache->scale[0]; - add[1]*= ss->cache->scale[1]; - add[2]*= ss->cache->scale[2]; - VecAddf(add, add, co); + #pragma omp parallel for private(n) schedule(static) + for(n=0; nnext; + while(sculpt_node_verts_next(&vd)) { + const float fade = tex_strength(ss, brush, vd.co, vd.dist)*bstrength; + float add[3]; + + add[0]= vd.no[0]/32767.0f; + add[1]= vd.no[1]/32767.0f; + add[2]= vd.no[2]/32767.0f; + VecMulf(add, fade * ss->cache->radius); + add[0]*= ss->cache->scale[0]; + add[1]*= ss->cache->scale[1]; + add[2]*= ss->cache->scale[2]; + VecAddf(add, add, vd.co); + + sculpt_clip(sd, ss, vd.co, add); + } + + BLI_pbvh_node_mark_update(nodes[n]); } } -static void calc_flatten_center(SculptSession *ss, ActiveData *node, float co[3]) +static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float co[3]) { - ActiveData *outer[FLATTEN_SAMPLE_SIZE]; - int i; + float outer_dist[FLATTEN_SAMPLE_SIZE]; + int outer_index[FLATTEN_SAMPLE_SIZE]; + int i, n; - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) - outer[i] = node; + for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { + outer_index[i] = 0; + outer_dist[i]= -1.0f; + } + + #pragma omp parallel for private(n) schedule(static) + for(n=0; nnext) { - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { - if(node->dist > outer[i]->dist) { - outer[i] = node; - break; + sculpt_node_verts_init(sd, ss, nodes[n], &vd); + + while(sculpt_node_verts_next(&vd)) { + for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { + if(vd.dist > outer_dist[i]) { + outer_index[i] = vd.index; + break; + } } } + + BLI_pbvh_node_mark_update(nodes[n]); } co[0] = co[1] = co[2] = 0.0f; for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) - VecAddf(co, co, ss->mvert[outer[i]->Index].co); + VecAddf(co, co, ss->mvert[outer_index[i]].co); VecMulf(co, 1.0f / FLATTEN_SAMPLE_SIZE); } @@ -589,15 +890,17 @@ static int plane_point_side(float co[3], float plane_normal[3], float plane_cent return d <= 0.0f; } -static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts, int clay) +static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, int clay) { - ActiveData *node= active_verts->first; /* 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], bstr = 0; - int flip = 0; - calc_area_normal(sd, ss, area_normal, active_verts); - calc_flatten_center(ss, node, cntr); + int n, flip = 0; + + calc_area_normal(sd, ss, area_normal, nodes, totnode); + calc_flatten_center(sd, ss, nodes, totnode, cntr); if(clay) { bstr= brush_strength(sd, ss->cache); @@ -608,211 +911,58 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase flip = bstr < 0; } - while(node){ - float *co= ss->mvert[node->Index].co; - float intr[3], val[3]; + #pragma omp parallel for private(n) schedule(static) + for(n=0; n FLT_EPSILON) - VecMulf(val, node->Fade / bstr); + while(sculpt_node_verts_next(&vd)) { + 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, vd.dist)*bstrength; + + /* Find the intersection between squash-plane and vertex (along the area normal) */ + point_plane_project(intr, vd.co, area_normal, cntr); + + VecSubf(val, intr, vd.co); + + if(clay) { + if(bstr > FLT_EPSILON) + VecMulf(val, fade / bstr); + else + VecMulf(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; + } else - VecMulf(val, node->Fade); - /* Clay displacement */ - val[0]+=area_normal[0] * ss->cache->scale[0]*node->Fade; - val[1]+=area_normal[1] * ss->cache->scale[1]*node->Fade; - val[2]+=area_normal[2] * ss->cache->scale[2]*node->Fade; - } - else - VecMulf(val, fabs(node->Fade)); - - VecAddf(val, val, co); - - sculpt_clip(sd, ss, co, val); - - } - - node= node->next; - } -} - -/* Uses symm to selectively flip any axis of a coordinate. */ -static void flip_coord(float out[3], float in[3], const char symm) -{ - 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]; -} - -/* Get a pixel from the texcache at (px, py) */ -static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) -{ - unsigned *p; - p = ss->texcache + py * ss->texcache_side + px; - return ((unsigned char*)(p))[0]; -} - -static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v) -{ - int x, y, x2, y2; - const int tc_max = ss->texcache_side - 1; - float urat, vrat, uopp; - - if(u < 0) u = 0; - else if(u >= ss->texcache_side) u = tc_max; - if(v < 0) v = 0; - else if(v >= ss->texcache_side) v = tc_max; - - x = floor(u); - y = floor(v); - x2 = x + 1; - y2 = y + 1; - - if(x2 > ss->texcache_side) x2 = tc_max; - if(y2 > ss->texcache_side) y2 = tc_max; - - urat = u - x; - vrat = v - y; - uopp = 1 - urat; - - return ((get_texcache_pixel(ss, x, y) * uopp + - get_texcache_pixel(ss, x2, y) * urat) * (1 - vrat) + - (get_texcache_pixel(ss, x, y2) * uopp + - get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0; -} - -/* 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 = NULL; - float avg= 1; - - if(br->texact >= 0) - tex = br->mtex[br->texact]; - - if(!tex) { - avg= 1; - } - else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) { - float jnk; + VecMulf(val, fabs(fade)); - /* Get strength by feeding the vertex - location directly into a texture */ - externtex(tex, 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. */ - VecCopyf(flip, point); - flip_coord(flip, flip, ss->cache->symmetry); - projectf(ss->cache->mats, flip, point_2d); + VecAddf(val, val, vd.co); - /* 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; + sculpt_clip(sd, ss, vd.co, val); } - 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->mouse[0]) / bsize; - float fy= (point_2d[1] - ss->cache->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; - avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side); - } + BLI_pbvh_node_mark_update(nodes[n]); } - - avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ - - return avg; } -typedef struct { - SculptSession *ss; - float radius_squared; - ListBase *active_verts; -} SculptSearchSphereData; - -/* Test AABB against sphere */ -static int sculpt_search_sphere_cb(float bb_min[3], float bb_max[3], - void *data_v) +static void sculpt_brush_hit_cb(PBVHNode *node, void *data_v) { SculptSearchSphereData *data = data_v; - float *center = data->ss->cache->location, nearest[3]; - float t[3]; - int i; - - for(i = 0; i < 3; ++i) { - if(bb_min[i] > center[i]) - nearest[i] = bb_min[i]; - else if(bb_max[i] < center[i]) - nearest[i] = bb_max[i]; - else - nearest[i] = center[i]; - } - - VecSubf(t, center, nearest); + int i, totvert, *verts; - return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared; -} + BLI_pbvh_node_get_verts(node, &verts, &totvert); -static void sculpt_brush_hit_cb(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data_v) -{ - SculptSearchSphereData *data = data_v; - int i; - - /* XXX: for now we still make an active vert list, - can be fixed later */ + /* XXX: for now grab brush still uses an active vert list, + will be fixed later */ for(i = 0; i < totvert; ++i) { - int v = vert_indices[i]; + int v = verts[i]; float delta[3], dsq; VecSubf(delta, data->ss->mvert[v].co, @@ -828,65 +978,82 @@ static void sculpt_brush_hit_cb(const int *face_indices, BLI_addtail(data->active_verts, adata); } } + + BLI_pbvh_node_mark_update(node); } static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) { Brush *brush = paint_brush(&sd->paint); - ListBase local_active_verts = {0, 0}; - ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry]; - ListBase *active_verts = &local_active_verts; - const float bstrength= brush_strength(sd, cache); //KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */ - ActiveData *adata; - - /* For grab brush, only find active vertices once */ - if(brush->sculpt_tool == SCULPT_TOOL_GRAB) - active_verts = grab_active_verts; + PBVHNode **nodes= NULL; + int totnode; + SculptSearchSphereData data; + + data.ss = ss; + data.sd = sd; + data.radius_squared = ss->cache->radius * ss->cache->radius; /* Build a list of all vertices that are potentially within the brush's area of influence */ - if(brush->sculpt_tool != SCULPT_TOOL_GRAB || cache->first_time) { - SculptSearchSphereData data; - data.ss = ss; - data.radius_squared = ss->cache->radius * ss->cache->radius; - data.active_verts = active_verts; - BLI_pbvh_search(ss->tree, sculpt_search_sphere_cb, &data, - sculpt_brush_hit_cb, &data, - PBVH_SEARCH_MARK_MODIFIED); - - /* Update brush strength for each vertex */ - for(adata = active_verts->first; adata; adata = adata->next) - adata->Fade = tex_strength(ss, brush, ss->mvert[adata->Index].co, adata->dist) * bstrength; + if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { + if(cache->first_time) { + const float bstrength= brush_strength(sd, cache); + ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry]; + ActiveData *adata; + + data.active_verts = grab_active_verts; + BLI_pbvh_search_callback(ss->tree, sculpt_search_sphere_cb, &data, + sculpt_brush_hit_cb, &data); + + BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data, + &nodes, &totnode); + + ss->cache->grab_active_nodes[ss->cache->symmetry]= nodes; + ss->cache->grab_active_totnode[ss->cache->symmetry]= totnode; + + /* Update brush strength for each vertex */ + for(adata = data.active_verts->first; adata; adata = adata->next) + adata->Fade = tex_strength(ss, brush, ss->mvert[adata->Index].co, adata->dist) * bstrength; + } + else { + nodes= ss->cache->grab_active_nodes[ss->cache->symmetry]; + totnode= ss->cache->grab_active_totnode[ss->cache->symmetry]; + } + } + else { + BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data, + &nodes, &totnode); } /* Only act if some verts are inside the brush area */ - if(active_verts->first) { + if(totnode) { /* Apply one type of brush action */ switch(brush->sculpt_tool){ case SCULPT_TOOL_DRAW: - do_draw_brush(sd, ss, active_verts); + do_draw_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_SMOOTH: - do_smooth_brush(sd, ss, active_verts); + do_smooth_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_PINCH: - do_pinch_brush(sd, ss, active_verts); + do_pinch_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_INFLATE: - do_inflate_brush(sd, ss, active_verts); + do_inflate_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_GRAB: - do_grab_brush(sd, ss); + do_grab_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_LAYER: - do_layer_brush(sd, ss, active_verts); + do_layer_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_FLATTEN: - do_flatten_clay_brush(sd, ss, active_verts, 0); + do_flatten_clay_brush(sd, ss, nodes, totnode, 0); break; case SCULPT_TOOL_CLAY: - do_flatten_clay_brush(sd, ss, active_verts, 1); + do_flatten_clay_brush(sd, ss, nodes, totnode, 1); + break; } #if 0 @@ -912,9 +1079,10 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) addlisttolist(&ss->modified_verts, &active_verts); } #endif - - BLI_freelistN(&local_active_verts); - + + if(brush->sculpt_tool != SCULPT_TOOL_GRAB) + if(nodes) + MEM_freeN(nodes); } } @@ -937,6 +1105,7 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) VecCopyf(cache->location, cache->true_location); VecCopyf(cache->grab_delta_symmetry, cache->grab_delta); cache->symmetry = 0; + cache->bstrength = brush_strength(sd, cache); do_brush_action(sd, ss, cache); for(i = 1; i <= symm; ++i) { @@ -1133,8 +1302,11 @@ static void sculpt_cache_free(StrokeCache *cache) MEM_freeN(cache->face_norms); if(cache->mats) MEM_freeN(cache->mats); - for(i = 0; i < 8; ++i) + for(i = 0; i < 8; ++i) { BLI_freelistN(&cache->grab_active_verts[i]); + if(cache->grab_active_nodes[i]) + MEM_freeN(cache->grab_active_nodes[i]); + } MEM_freeN(cache); } @@ -1310,23 +1482,23 @@ typedef struct { float dist; } SculptRaycastData; -void sculpt_raycast_cb(const int *face_indices, - const int *vert_indices, - int totface, int totvert, void *data_v) +void sculpt_raycast_cb(PBVHNode *node, void *data_v) { SculptRaycastData *srd = data_v; MVert *vert = srd->ss->mvert; - int i; + int i, totface, *faces; + + BLI_pbvh_node_get_faces(node, &faces, &totface); for(i = 0; i < totface; ++i) { - MFace *f = srd->ss->mface + face_indices[i]; + MFace *f = srd->ss->mface + faces[i]; if(ray_face_intersection(srd->ray_start, srd->ray_normal, vert[f->v1].co, vert[f->v2].co, vert[f->v3].co, f->v4 ? vert[f->v4].co : NULL, &srd->dist)) { - srd->hit = face_indices[i]; + srd->hit = faces[i]; } } } @@ -1352,7 +1524,7 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou srd.hit = -1; BLI_pbvh_raycast(vc->obact->sculpt->tree, sculpt_raycast_cb, &srd, ray_start, ray_normal); - + VecCopyf(out, ray_normal); VecMulf(out, srd.dist); VecAddf(out, out, ray_start); @@ -1459,17 +1631,9 @@ static void sculpt_flush_update(bContext *C) multires_mark_as_modified(ob); } + BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL, NULL); redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); - if(!redraw) { - BLI_pbvh_search(ss->tree, BLI_pbvh_update_search_cb, - PBVH_NodeData, NULL, NULL, - PBVH_SEARCH_UPDATE); - - redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), - ob, &r); - } - if(redraw) { r.xmin += ar->winrct.xmin + 1; r.xmax += ar->winrct.xmin - 1; @@ -1493,9 +1657,6 @@ static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; - if(paint_brush(&CTX_data_tool_settings(C)->sculpt->paint)->sculpt_tool == SCULPT_TOOL_GRAB) - BLI_pbvh_toggle_modified_lock(ss->tree); - ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C)); sculpt_brush_stroke_init_properties(C, op, event, ss); @@ -1527,9 +1688,6 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) if(ss->cache) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; - if(paint_brush(&CTX_data_tool_settings(C)->sculpt->paint)->sculpt_tool == SCULPT_TOOL_GRAB) - BLI_pbvh_toggle_modified_lock(ss->tree); - sculpt_cache_free(ss->cache); ss->cache = NULL; sculpt_undo_push(C, sd); @@ -1707,3 +1865,4 @@ void ED_operatortypes_sculpt() WM_operatortype_append(SCULPT_OT_sculptmode_toggle); WM_operatortype_append(SCULPT_OT_set_persistent_base); } + -- cgit v1.2.3 From f20b3b3102f2cdb250b77b06a9d3287efcbc82ba Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 3 Nov 2009 21:58:24 +0000 Subject: Removed the unused partial redraw flag from sculpt. It's original purpose was to work around graphics cards that didn't support the old partial redraw method, but that should no longer be an issue. --- source/blender/editors/space_view3d/drawobject.c | 4 ---- source/blender/makesdna/DNA_scene_types.h | 1 - source/blender/makesrna/intern/rna_sculpt_paint.c | 4 ---- 3 files changed, 9 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index f7dba10200a..4f41b6e5045 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2971,10 +2971,6 @@ static int draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D if (obedit!=ob && finalDM) finalDM->release(finalDM); } -// else if(!em && (G.f & G_SCULPTMODE) &&(scene->sculptdata.flags & SCULPT_DRAW_FAST) && -// OBACT==ob && !sculpt_modifiers_active(ob)) { -// XXX sculptmode_draw_mesh(0); -// } else { /* don't create boundbox here with mesh_get_bb(), the derived system will make it, puts deformed bb's OK */ if(me->totface<=4 || boundbox_clip(rv3d, ob->obmat, (ob->bb)? ob->bb: me->bb)) { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index bafe8cc3162..c39712078c2 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1052,7 +1052,6 @@ typedef enum SculptFlags { SCULPT_SYMM_Y = 2, SCULPT_SYMM_Z = 4, SCULPT_INPUT_SMOOTH = 8, - SCULPT_DRAW_FAST = 16, SCULPT_DRAW_BRUSH = 32, SCULPT_LOCK_X = 64, SCULPT_LOCK_Y = 128, diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 481abc983c2..5155090b67b 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -207,10 +207,6 @@ static void rna_def_sculpt(BlenderRNA *brna) prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_DRAW_BRUSH); RNA_def_property_ui_text(prop, "Show Brush", ""); - - prop= RNA_def_property(srna, "partial_redraw", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_DRAW_FAST); - RNA_def_property_ui_text(prop, "Partial Redraw", "Optimize sculpting by only refreshing modified faces."); } static void rna_def_vertex_paint(BlenderRNA *brna) -- cgit v1.2.3 From a4e91f8f1a820f0c6d063d601ff8042eca13a501 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 3 Nov 2009 22:50:09 +0000 Subject: Moved the show brush flag from sculpt to paint, and it now shows/hides the brush as expected. Also fixed some errors in the UI scripts. --- release/scripts/ui/space_view3d.py | 3 ++- release/scripts/ui/space_view3d_toolbar.py | 1 - source/blender/blenkernel/intern/paint.c | 2 ++ source/blender/editors/sculpt_paint/paint_stroke.c | 6 +++++- source/blender/makesdna/DNA_scene_types.h | 10 +++++++--- source/blender/makesrna/intern/rna_sculpt_paint.c | 8 ++++---- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index ac65a3dae45..2670f6643d3 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -633,7 +633,8 @@ class VIEW3D_MT_sculpt(bpy.types.Menu): layout.itemR(brush, "use_anchor") if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - layout.itemR(brush, "flip_direction") + layout.item_enumR(brush, "direction", value="SUBTRACT") + layout.item_enumR(brush, "direction", value="ADD") if brush.sculpt_tool == 'LAYER': layout.itemR(brush, "use_persistent") diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 73f613177b8..5b773aac133 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -663,7 +663,6 @@ class VIEW3D_PT_sculpt_options(PaintPanel): sculpt = context.tool_settings.sculpt col = layout.column() - col.itemR(sculpt, "partial_redraw", text="Partial Refresh") col.itemR(sculpt, "show_brush") split = self.layout.split() diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 3dfe3966e2f..5cc2190c088 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -175,6 +175,8 @@ void paint_init(Paint *p, const char col[3]) memcpy(p->paint_cursor_col, col, 3); p->paint_cursor_col[3] = 128; + + p->flags |= PAINT_SHOW_BRUSH; } void free_paint(Paint *paint) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index c2d22089442..c47b83b7e70 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -101,7 +101,11 @@ static void paint_draw_smooth_stroke(bContext *C, int x, int y, void *customdata static void paint_draw_cursor(bContext *C, int x, int y, void *customdata) { - Brush *brush = paint_brush(paint_get_active(CTX_data_scene(C))); + 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); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index c39712078c2..810b34a746e 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -481,7 +481,7 @@ typedef struct Paint { void *paint_cursor; unsigned char paint_cursor_col[4]; - int pad; + int flags; } Paint; typedef struct ImagePaintSettings { @@ -1046,13 +1046,17 @@ typedef struct Scene { #define FFMPEG_MULTIPLEX_AUDIO 1 #define FFMPEG_AUTOSPLIT_OUTPUT 2 +/* Paint.flags */ +typedef enum { + PAINT_SHOW_BRUSH = 1 +} PaintFlags; + /* Sculpt.flags */ +/* These can eventually be moved to paint flags? */ typedef enum SculptFlags { SCULPT_SYMM_X = 1, SCULPT_SYMM_Y = 2, SCULPT_SYMM_Z = 4, - SCULPT_INPUT_SMOOTH = 8, - SCULPT_DRAW_BRUSH = 32, SCULPT_LOCK_X = 64, SCULPT_LOCK_Y = 128, SCULPT_LOCK_Z = 256 diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 5155090b67b..89e29596746 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -170,6 +170,10 @@ static void rna_def_paint(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_Paint_active_brush_get", "rna_Paint_active_brush_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Brush", "Active paint brush."); + + prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH); + RNA_def_property_ui_text(prop, "Show Brush", ""); } static void rna_def_sculpt(BlenderRNA *brna) @@ -203,10 +207,6 @@ static void rna_def_sculpt(BlenderRNA *brna) prop= RNA_def_property(srna, "lock_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_LOCK_Z); RNA_def_property_ui_text(prop, "Lock Z", "Disallow changes to the Z axis of vertices."); - - prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_DRAW_BRUSH); - RNA_def_property_ui_text(prop, "Show Brush", ""); } static void rna_def_vertex_paint(BlenderRNA *brna) -- cgit v1.2.3 From 4f10b3db6a630b53be039520d9348945f146fa93 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:11:57 +0000 Subject: Sculpt: memory statistics now also print out a small python script to plot memory usage, requires matplotlib. --- intern/guardedalloc/intern/mallocn.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index ca7f2a4d506..6845e8922b3 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -407,6 +407,38 @@ void MEM_printmemlist_stats() printf("\ntotal memory len: %.3f MB\n", (double)mem_in_use/(double)(1024*1024)); for(a=0, pb=printblock; aname, pb->items, (double)pb->len/(double)(1024*1024)); + + { + uintptr_t other= mem_in_use; + + printf( + "from pylab import *\n" + "\n" + "figure(1, figsize=(10,10))\n" + "\n" + "memory = [\n"); + + for(a=0, pb=printblock; aname, (double)pb->len/(double)(1024*1024)); + other -= pb->len; + + if((double)pb->len/(double)mem_in_use < 0.025) + break; + } + + printf( + "[\"other\", %.3f]]\n" + "\n" + "labels = [m[0] for m in memory]\n" + "fracs = [m[1] for m in memory]\n" + "map = cm.get_cmap(\"Paired\")\n" + "colors = [map(float(i)/len(fracs)) for i in range(0, len(fracs))]\n" + "\n" + "pie(fracs, labels=labels, colors=colors, autopct='%%1.1f%%%%')\n" + "title(\"Memory Usage: %.3f MB\")\n" + "\n" + "show()\n", (double)other/(double)(1024*1024), (double)mem_in_use/(double)(1024*1024)); + } free(printblock); -- cgit v1.2.3 From 8b8f8fc11e8369b740ca00e27db771077b0ffbb5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:15:17 +0000 Subject: Sculpt: fix bug where mouse release event was not caught in some cases. --- source/blender/editors/sculpt_paint/paint_stroke.c | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index c47b83b7e70..6d7fd826534 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -257,8 +257,20 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) //ED_region_tag_redraw(ar); } - /* TODO: fix hardcoded event here */ - if(first || event->type == MOUSEMOVE || (event->type == TIMER && (event->customdata == stroke->timer))) { + /* TODO: fix hardcoded events here */ + if(event->type == LEFTMOUSE && event->val == KM_RELEASE) { + /* exit stroke, free data */ + if(stroke->smooth_stroke_cursor) + WM_paint_cursor_end(CTX_wm_manager(C), stroke->smooth_stroke_cursor); + + if(stroke->timer) + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), stroke->timer); + + stroke->done(C, stroke); + MEM_freeN(stroke); + return OPERATOR_FINISHED; + } + else if(first || event->type == 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)) { @@ -272,18 +284,6 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) ;//ED_region_tag_redraw(ar); } } - else if(event->type == LEFTMOUSE && event->val == KM_RELEASE) { - /* exit stroke, free data */ - if(stroke->smooth_stroke_cursor) - WM_paint_cursor_end(CTX_wm_manager(C), stroke->smooth_stroke_cursor); - - if(stroke->timer) - WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), stroke->timer); - - stroke->done(C, stroke); - MEM_freeN(stroke); - return OPERATOR_FINISHED; - } return OPERATOR_RUNNING_MODAL; } -- cgit v1.2.3 From 4bdfa8a7d71c7b982a1f13191cfc4ee07502d473 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:19:41 +0000 Subject: Sculpt: split generic part of image paint undo system into separate paint_undo.c file, to be reused for sculpt. --- source/blender/editors/include/ED_sculpt.h | 9 +- source/blender/editors/sculpt_paint/paint_image.c | 212 ++++--------------- source/blender/editors/sculpt_paint/paint_intern.h | 10 + source/blender/editors/sculpt_paint/paint_undo.c | 231 +++++++++++++++++++++ .../blender/editors/space_view3d/view3d_header.c | 2 +- source/blender/editors/util/ed_util.c | 2 +- source/blender/editors/util/undo.c | 4 +- 7 files changed, 296 insertions(+), 174 deletions(-) create mode 100644 source/blender/editors/sculpt_paint/paint_undo.c diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h index 12ebd74b64b..085c8e894f8 100644 --- a/source/blender/editors/include/ED_sculpt.h +++ b/source/blender/editors/include/ED_sculpt.h @@ -45,8 +45,11 @@ void sculpt_get_redraw_planes(float planes[4][4], struct ARegion *ar, void ED_operatortypes_paint(void); void ED_keymap_paint(struct wmKeyConfig *keyconf); -/* paint_image.c */ -void undo_imagepaint_step(int step); -void undo_imagepaint_clear(void); +/* paint_undo.c */ +#define UNDO_PAINT_IMAGE 0 +#define UNDO_PAINT_MESH 1 + +void ED_undo_paint_step(struct bContext *C, int type, int step); +void ED_undo_paint_free(void); #endif diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 929f854242f..d8c4d505fc9 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -86,6 +86,7 @@ #include "ED_image.h" #include "ED_object.h" #include "ED_screen.h" +#include "ED_sculpt.h" #include "ED_view3d.h" #include "WM_api.h" @@ -113,8 +114,6 @@ #define IMAPAINT_TILE_SIZE (1 << IMAPAINT_TILE_BITS) #define IMAPAINT_TILE_NUMBER(size) (((size)+IMAPAINT_TILE_SIZE-1) >> IMAPAINT_TILE_BITS) -#define MAXUNDONAME 64 - static void imapaint_image_update(SpaceImage *sima, Image *image, ImBuf *ibuf, short texpaint); @@ -204,7 +203,7 @@ typedef struct ProjPaintImage { Image *ima; ImBuf *ibuf; ImagePaintPartialRedraw *partRedrawRect; - struct UndoTile **undoRect; /* only used to build undo tiles after painting */ + void **undoRect; /* only used to build undo tiles after painting */ int touch; } ProjPaintImage; @@ -332,32 +331,20 @@ typedef struct ProjPixelClone { /* Finish projection painting structs */ +typedef struct UndoImageTile { + struct UndoImageTile *next, *prev; + + char idname[MAX_ID_NAME]; /* name instead of pointer*/ -typedef struct UndoTile { - struct UndoTile *next, *prev; - ID id; void *rect; int x, y; -} UndoTile; - -typedef struct UndoElem { - struct UndoElem *next, *prev; - char name[MAXUNDONAME]; - uintptr_t undosize; +} UndoImageTile; - ImBuf *ibuf; - ListBase tiles; -} UndoElem; - -static ListBase undobase = {NULL, NULL}; -static UndoElem *curundo = NULL; static ImagePaintPartialRedraw imapaintpartial = {0, 0, 0, 0, 0}; /* UNDO */ -/* internal functions */ - -static void undo_copy_tile(UndoTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int restore) +static void undo_copy_tile(UndoImageTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int restore) { /* copy or swap contents of tile->rect and region in ibuf->rect */ IMB_rectcpy(tmpibuf, ibuf, 0, 0, tile->x*IMAPAINT_TILE_SIZE, @@ -374,49 +361,52 @@ static void undo_copy_tile(UndoTile *tile, ImBuf *tmpibuf, ImBuf *ibuf, int rest tile->y*IMAPAINT_TILE_SIZE, 0, 0, IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE); } -static UndoTile *undo_init_tile(ID *id, ImBuf *ibuf, ImBuf **tmpibuf, int x_tile, int y_tile) +static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int x_tile, int y_tile) { - UndoTile *tile; + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_IMAGE); + UndoImageTile *tile; int allocsize; + + for(tile=lb->first; tile; tile=tile->next) + if(tile->x == x_tile && tile->y == y_tile && strcmp(tile->idname, ima->id.name)==0) + return tile->rect; if (*tmpibuf==NULL) *tmpibuf = IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat|IB_rect, 0); - tile= MEM_callocN(sizeof(UndoTile), "ImaUndoTile"); - tile->id= *id; + tile= MEM_callocN(sizeof(UndoImageTile), "UndoImageTile"); + strcpy(tile->idname, ima->id.name); tile->x= x_tile; tile->y= y_tile; allocsize= IMAPAINT_TILE_SIZE*IMAPAINT_TILE_SIZE*4; allocsize *= (ibuf->rect_float)? sizeof(float): sizeof(char); - tile->rect= MEM_mapallocN(allocsize, "ImaUndoRect"); + tile->rect= MEM_mapallocN(allocsize, "UndeImageTile.rect"); undo_copy_tile(tile, *tmpibuf, ibuf, 0); - curundo->undosize += allocsize; + undo_paint_push_count_alloc(UNDO_PAINT_IMAGE, allocsize); - BLI_addtail(&curundo->tiles, tile); + BLI_addtail(lb, tile); - return tile; + return tile->rect; } -static void undo_restore(UndoElem *undo) +static void image_undo_restore(bContext *C, ListBase *lb) { + Main *bmain= CTX_data_main(C); Image *ima = NULL; ImBuf *ibuf, *tmpibuf; - UndoTile *tile; - - if(!undo) - return; + UndoImageTile *tile; tmpibuf= IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat|IB_rect, 0); - for(tile=undo->tiles.first; tile; tile=tile->next) { + for(tile=lb->first; tile; tile=tile->next) { /* find image based on name, pointer becomes invalid with global undo */ - if(ima && strcmp(tile->id.name, ima->id.name)==0); + if(ima && strcmp(tile->idname, ima->id.name)==0); else { - for(ima=G.main->image.first; ima; ima=ima->id.next) - if(strcmp(tile->id.name, ima->id.name)==0) + for(ima=bmain->image.first; ima; ima=ima->id.next) + if(strcmp(tile->idname, ima->id.name)==0) break; } @@ -435,117 +425,12 @@ static void undo_restore(UndoElem *undo) IMB_freeImBuf(tmpibuf); } -static void undo_free(UndoElem *undo) +static void image_undo_free(ListBase *lb) { - UndoTile *tile; + UndoImageTile *tile; - for(tile=undo->tiles.first; tile; tile=tile->next) + for(tile=lb->first; tile; tile=tile->next) MEM_freeN(tile->rect); - BLI_freelistN(&undo->tiles); -} - -static void undo_imagepaint_push_begin(char *name) -{ - UndoElem *uel; - int nr; - - /* Undo push is split up in begin and end, the reason is that as painting - * happens more tiles are added to the list, and at the very end we know - * how much memory the undo used to remove old undo elements */ - - /* remove all undos after (also when curundo==NULL) */ - while(undobase.last != curundo) { - uel= undobase.last; - undo_free(uel); - BLI_freelinkN(&undobase, uel); - } - - /* make new */ - curundo= uel= MEM_callocN(sizeof(UndoElem), "undo file"); - BLI_addtail(&undobase, uel); - - /* name can be a dynamic string */ - strncpy(uel->name, name, MAXUNDONAME-1); - - /* limit amount to the maximum amount*/ - nr= 0; - uel= undobase.last; - while(uel) { - nr++; - if(nr==U.undosteps) break; - uel= uel->prev; - } - if(uel) { - while(undobase.first!=uel) { - UndoElem *first= undobase.first; - undo_free(first); - BLI_freelinkN(&undobase, first); - } - } -} - -static void undo_imagepaint_push_end() -{ - UndoElem *uel; - uintptr_t totmem, maxmem; - - if(U.undomemory != 0) { - /* limit to maximum memory (afterwards, we can't know in advance) */ - totmem= 0; - maxmem= ((uintptr_t)U.undomemory)*1024*1024; - - uel= undobase.last; - while(uel) { - totmem+= uel->undosize; - if(totmem>maxmem) break; - uel= uel->prev; - } - - if(uel) { - while(undobase.first!=uel) { - UndoElem *first= undobase.first; - undo_free(first); - BLI_freelinkN(&undobase, first); - } - } - } -} - -void undo_imagepaint_step(int step) -{ - UndoElem *undo; - - if(step==1) { - if(curundo==NULL); - else { - if(G.f & G_DEBUG) printf("undo %s\n", curundo->name); - undo_restore(curundo); - curundo= curundo->prev; - } - } - else if(step==-1) { - if((curundo!=NULL && curundo->next==NULL) || undobase.first==NULL); - else { - undo= (curundo && curundo->next)? curundo->next: undobase.first; - undo_restore(undo); - curundo= undo; - if(G.f & G_DEBUG) printf("redo %s\n", undo->name); - } - } -} - -void undo_imagepaint_clear(void) -{ - UndoElem *uel; - - uel= undobase.first; - while(uel) { - undo_free(uel); - uel= uel->next; - } - - BLI_freelistN(&undobase); - curundo= NULL; } /* fast projection bucket array lookup, use the safe version for bound checking */ @@ -3316,7 +3201,7 @@ static void project_paint_end(ProjPaintState *ps) ProjPixel *projPixel; ImBuf *tmpibuf = NULL, *tmpibuf_float = NULL; LinkNode *pixel_node; - UndoTile *tile; + void *tilerect; MemArena *arena = ps->arena_mt[0]; /* threaded arena re-used for non threaded case */ int bucket_tot = (ps->buckets_x * ps->buckets_y); /* we could get an X/Y but easier to loop through all possible buckets */ @@ -3332,8 +3217,8 @@ static void project_paint_end(ProjPaintState *ps) int last_tile_width=0; for(a=0, last_projIma=ps->projImages; a < ps->image_tot; a++, last_projIma++) { - int size = sizeof(UndoTile **) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->x) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->y); - last_projIma->undoRect = (UndoTile **) BLI_memarena_alloc(arena, size); + int size = sizeof(void **) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->x) * IMAPAINT_TILE_NUMBER(last_projIma->ibuf->y); + last_projIma->undoRect = (void **) BLI_memarena_alloc(arena, size); memset(last_projIma->undoRect, 0, size); last_projIma->ibuf->userflags |= IB_BITMAPDIRTY; } @@ -3373,21 +3258,21 @@ static void project_paint_end(ProjPaintState *ps) if (last_projIma->undoRect[tile_index]==NULL) { /* add the undo tile from the modified image, then write the original colors back into it */ - tile = last_projIma->undoRect[tile_index] = undo_init_tile(&last_projIma->ima->id, last_projIma->ibuf, is_float ? (&tmpibuf_float):(&tmpibuf) , x_tile, y_tile); + tilerect = last_projIma->undoRect[tile_index] = image_undo_push_tile(last_projIma->ima, last_projIma->ibuf, is_float ? (&tmpibuf_float):(&tmpibuf) , x_tile, y_tile); } else { - tile = last_projIma->undoRect[tile_index]; + tilerect = last_projIma->undoRect[tile_index]; } /* This is a BIT ODD, but overwrite the undo tiles image info with this pixels original color * because allocating the tiles allong the way slows down painting */ if (is_float) { - float *rgba_fp = (float *)tile->rect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4; + float *rgba_fp = (float *)tilerect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4; QUATCOPY(rgba_fp, projPixel->origColor.f); } else { - ((unsigned int *)tile->rect)[ (projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE ] = projPixel->origColor.uint; + ((unsigned int *)tilerect)[ (projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE ] = projPixel->origColor.uint; } } } @@ -3958,7 +3843,6 @@ static void imapaint_clear_partial_redraw() static void imapaint_dirty_region(Image *ima, ImBuf *ibuf, int x, int y, int w, int h) { ImBuf *tmpibuf = NULL; - UndoTile *tile; int srcx= 0, srcy= 0, origx; IMB_rectclip(ibuf, NULL, &x, &y, &srcx, &srcy, &w, &h); @@ -3985,17 +3869,9 @@ static void imapaint_dirty_region(Image *ima, ImBuf *ibuf, int x, int y, int w, origx = (x >> IMAPAINT_TILE_BITS); y = (y >> IMAPAINT_TILE_BITS); - for (; y <= h; y++) { - for (x=origx; x <= w; x++) { - for(tile=curundo->tiles.first; tile; tile=tile->next) - if(tile->x == x && tile->y == y && strcmp(tile->id.name, ima->id.name)==0) - break; - - if(!tile) { - undo_init_tile(&ima->id, ibuf, &tmpibuf, x, y); - } - } - } + for (; y <= h; y++) + for (x=origx; x <= w; x++) + image_undo_push_tile(ima, ibuf, &tmpibuf, x, y); ibuf->userflags |= IB_BITMAPDIRTY; @@ -4593,7 +4469,8 @@ static int texture_paint_init(bContext *C, wmOperator *op) } settings->imapaint.flag |= IMAGEPAINT_DRAWING; - undo_imagepaint_push_begin("Image Paint"); + undo_paint_push_begin(UNDO_PAINT_IMAGE, "Image Paint", + image_undo_restore, image_undo_free); /* create painter */ pop->painter= brush_painter_new(pop->s.brush); @@ -4657,7 +4534,7 @@ static void paint_exit(bContext *C, wmOperator *op) } paint_redraw(C, &pop->s, 1); - undo_imagepaint_push_end(); + undo_paint_push_end(UNDO_PAINT_IMAGE); if(pop->s.warnmultifile) BKE_reportf(op->reports, RPT_WARNING, "Image requires 4 color channels to paint: %s", pop->s.warnmultifile); @@ -5256,3 +5133,4 @@ int facemask_paint_poll(bContext *C) { return paint_facesel_test(CTX_data_active_object(C)); } + diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index 0689e8e63d7..46f073243e5 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -41,6 +41,7 @@ struct wmOperator; struct wmOperatorType; struct ARegion; struct VPaint; +struct ListBase; /* paint_stroke.c */ typedef int (*StrokeGetLocation)(struct bContext *C, struct PaintStroke *stroke, float location[3], float mouse[2]); @@ -102,5 +103,14 @@ void PAINT_OT_face_deselect_all(struct wmOperatorType *ot); int facemask_paint_poll(struct bContext *C); +/* paint_undo.c */ +typedef void (*UndoRestoreCb)(struct bContext *C, struct ListBase *lb); +typedef void (*UndoFreeCb)(struct ListBase *lb); + +void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free); +struct ListBase *undo_paint_push_get_list(int type); +void undo_paint_push_count_alloc(int type, int size); +void undo_paint_push_end(int type); + #endif /* ED_PAINT_INTERN_H */ diff --git a/source/blender/editors/sculpt_paint/paint_undo.c b/source/blender/editors/sculpt_paint/paint_undo.c new file mode 100644 index 00000000000..9bc6cacbb16 --- /dev/null +++ b/source/blender/editors/sculpt_paint/paint_undo.c @@ -0,0 +1,231 @@ +/** + * $Id$ + * + * Undo system for painting and sculpting. + * + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include + +#include "MEM_guardedalloc.h" + +#include "DNA_userdef_types.h" + +#include "BLI_listbase.h" + +#include "BKE_context.h" +#include "BKE_global.h" + +#include "ED_sculpt.h" + +#include "paint_intern.h" + +#define MAXUNDONAME 64 + +typedef struct UndoElem { + struct UndoElem *next, *prev; + char name[MAXUNDONAME]; + uintptr_t undosize; + + ListBase elems; + + UndoRestoreCb restore; + UndoFreeCb free; +} UndoElem; + +typedef struct UndoStack { + int type; + ListBase elems; + UndoElem *current; +} UndoStack; + +static UndoStack ImageUndoStack = {UNDO_PAINT_IMAGE, {NULL, NULL}, NULL}; +static UndoStack MeshUndoStack = {UNDO_PAINT_MESH, {NULL, NULL}, NULL}; + +/* Generic */ + +static void undo_restore(bContext *C, UndoStack *stack, UndoElem *uel) +{ + if(uel && uel->restore) + uel->restore(C, &uel->elems); +} + +static void undo_elem_free(UndoStack *stack, UndoElem *uel) +{ + if(uel && uel->free) { + uel->free(&uel->elems); + BLI_freelistN(&uel->elems); + } +} + +static void undo_stack_push_begin(UndoStack *stack, char *name, UndoRestoreCb restore, UndoFreeCb free) +{ + UndoElem *uel; + int nr; + + /* Undo push is split up in begin and end, the reason is that as painting + * happens more tiles/nodes are added to the list, and at the very end we + * know how much memory the undo used to remove old undo elements */ + + /* remove all undos after (also when stack->current==NULL) */ + while(stack->elems.last != stack->current) { + uel= stack->elems.last; + undo_elem_free(stack, uel); + BLI_freelinkN(&stack->elems, uel); + } + + /* make new */ + stack->current= uel= MEM_callocN(sizeof(UndoElem), "undo file"); + uel->restore= restore; + uel->free= free; + BLI_addtail(&stack->elems, uel); + + /* name can be a dynamic string */ + strncpy(uel->name, name, MAXUNDONAME-1); + + /* limit amount to the maximum amount*/ + nr= 0; + uel= stack->elems.last; + while(uel) { + nr++; + if(nr==U.undosteps) break; + uel= uel->prev; + } + if(uel) { + while(stack->elems.first!=uel) { + UndoElem *first= stack->elems.first; + undo_elem_free(stack, first); + BLI_freelinkN(&stack->elems, first); + } + } +} + +static void undo_stack_push_end(UndoStack *stack) +{ + UndoElem *uel; + uintptr_t totmem, maxmem; + + if(U.undomemory != 0) { + /* limit to maximum memory (afterwards, we can't know in advance) */ + totmem= 0; + maxmem= ((uintptr_t)U.undomemory)*1024*1024; + + uel= stack->elems.last; + while(uel) { + totmem+= uel->undosize; + if(totmem>maxmem) break; + uel= uel->prev; + } + + if(uel) { + while(stack->elems.first!=uel) { + UndoElem *first= stack->elems.first; + undo_elem_free(stack, first); + BLI_freelinkN(&stack->elems, first); + } + } + } +} + +static void undo_stack_step(bContext *C, UndoStack *stack, int step) +{ + UndoElem *undo; + + if(step==1) { + if(stack->current==NULL); + else { + if(G.f & G_DEBUG) printf("undo %s\n", stack->current->name); + undo_restore(C, stack, stack->current); + stack->current= stack->current->prev; + } + } + else if(step==-1) { + if((stack->current!=NULL && stack->current->next==NULL) || stack->elems.first==NULL); + else { + undo= (stack->current && stack->current->next)? stack->current->next: stack->elems.first; + undo_restore(C, stack, undo); + stack->current= undo; + if(G.f & G_DEBUG) printf("redo %s\n", undo->name); + } + } +} + +static void undo_stack_free(UndoStack *stack) +{ + UndoElem *uel; + + for(uel=stack->elems.first; uel; uel=uel->next) + undo_elem_free(stack, uel); + + BLI_freelistN(&stack->elems); + stack->current= NULL; +} + +/* Exported Functions */ + +void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free) +{ + if(type == UNDO_PAINT_IMAGE) + undo_stack_push_begin(&ImageUndoStack, name, restore, free); + else if(type == UNDO_PAINT_MESH) + undo_stack_push_begin(&MeshUndoStack, name, restore, free); +} + +ListBase *undo_paint_push_get_list(int type) +{ + if(type == UNDO_PAINT_IMAGE) + return &ImageUndoStack.current->elems; + else if(type == UNDO_PAINT_MESH) + return &MeshUndoStack.current->elems; + + return NULL; +} + +void undo_paint_push_count_alloc(int type, int size) +{ + if(type == UNDO_PAINT_IMAGE) + ImageUndoStack.current->undosize += size; + else if(type == UNDO_PAINT_MESH) + MeshUndoStack.current->undosize += size; +} + +void undo_paint_push_end(int type) +{ + if(type == UNDO_PAINT_IMAGE) + undo_stack_push_end(&ImageUndoStack); + else if(type == UNDO_PAINT_MESH) + undo_stack_push_end(&MeshUndoStack); +} + +void ED_undo_paint_step(bContext *C, int type, int step) +{ + if(type == UNDO_PAINT_IMAGE) + undo_stack_step(C, &ImageUndoStack, step); + else if(type == UNDO_PAINT_MESH) + undo_stack_step(C, &MeshUndoStack, step); +} + +void ED_undo_paint_free(void) +{ + undo_stack_free(&ImageUndoStack); + undo_stack_free(&MeshUndoStack); +} + diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 9b1b239be70..a953afde0d5 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1411,7 +1411,7 @@ static void do_view3d_tpaintmenu(bContext *C, void *arg, int event) #if 0 switch(event) { case 0: /* undo image painting */ - undo_imagepaint_step(1); + ED_paint_undo_step(UNDO_PAINT_IMAGE, 1); break; } diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index ae1e932bb81..fc2576eef5d 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -60,7 +60,7 @@ void ED_editors_exit(bContext *C) /* frees all editmode undos */ undo_editmode_clear(); - undo_imagepaint_clear(); + ED_undo_paint_free(); for(sce=G.main->scene.first; sce; sce= sce->id.next) { if(sce->obedit) { diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index d26f7a7a484..18e3304c191 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -124,7 +124,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) SpaceImage *sima= (SpaceImage *)sa->spacedata.first; if((obact && obact->mode & OB_MODE_TEXTURE_PAINT) || sima->flag & SI_DRAWTOOL) { - undo_imagepaint_step(step); + ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step); WM_event_add_notifier(C, NC_WINDOW, NULL); return OPERATOR_FINISHED; @@ -146,7 +146,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) int do_glob_undo= 0; if(obact && obact->mode & OB_MODE_TEXTURE_PAINT) - undo_imagepaint_step(step); + ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step); else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) { if(step==1) PE_undo(CTX_data_scene(C)); -- cgit v1.2.3 From b90d8ec0f454dfdd12f1284aabaff12b4cc93481 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:23:48 +0000 Subject: Sculpt: derivedmesh no longer created CD_ORIGINDEX layer when there is no modifier, saving some memory. --- source/blender/blenkernel/intern/cdderivedmesh.c | 37 ++++++++++------------ source/blender/blenkernel/intern/constraint.c | 7 ++-- source/blender/blenkernel/intern/modifier.c | 2 +- source/blender/blenkernel/intern/object.c | 8 +++-- source/blender/blenkernel/intern/particle.c | 10 +++--- source/blender/blenkernel/intern/subsurf_ccg.c | 18 +++++------ source/blender/editors/sculpt_paint/paint_utils.c | 6 ++-- source/blender/editors/space_view3d/drawobject.c | 6 ++-- .../blender/render/intern/source/convertblender.c | 6 +++- 9 files changed, 51 insertions(+), 49 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index b7234a86af9..c9c035ba6d1 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -1017,7 +1017,7 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo continue; } else if(setDrawOptions) { - orig = index[a]; + orig = (index)? index[a]: a; if(orig == ORIGINDEX_NONE) continue; @@ -1514,17 +1514,12 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob) CDDerivedMesh *cddm = cdDM_create("CDDM_from_mesh dm"); DerivedMesh *dm = &cddm->dm; CustomDataMask mask = CD_MASK_MESH & (~CD_MASK_MDISPS); - int i, *index, alloctype; + int alloctype; - /* this does a referenced copy, the only new layers being ORIGINDEX, - * with an exception for fluidsim */ + /* this does a referenced copy, with an exception for fluidsim */ DM_init(dm, mesh->totvert, mesh->totedge, mesh->totface); - CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totvert); - CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totedge); - CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totface); - dm->deformedOnly = 1; alloctype= CD_REFERENCE; @@ -1540,18 +1535,6 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob) cddm->medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE); cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE); - index = CustomData_get_layer(&dm->vertData, CD_ORIGINDEX); - for(i = 0; i < mesh->totvert; ++i, ++index) - *index = i; - - index = CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX); - for(i = 0; i < mesh->totedge; ++i, ++index) - *index = i; - - index = CustomData_get_layer(&dm->faceData, CD_ORIGINDEX); - for(i = 0; i < mesh->totface; ++i, ++index) - *index = i; - return dm; } @@ -1696,6 +1679,13 @@ DerivedMesh *CDDM_from_template(DerivedMesh *source, CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, numEdges); CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numFaces); + if(!CustomData_get_layer(&dm->vertData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts); + if(!CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges); + if(!CustomData_get_layer(&dm->faceData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces); + cddm->mvert = CustomData_get_layer(&dm->vertData, CD_MVERT); cddm->medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE); cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE); @@ -2000,6 +1990,13 @@ DerivedMesh *MultiresDM_new(MultiresSubsurf *ms, DerivedMesh *orig, int numVerts else DM_init(dm, numVerts, numEdges, numFaces); + if(!CustomData_get_layer(&dm->vertData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts); + if(!CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges); + if(!CustomData_get_layer(&dm->faceData, CD_ORIGINDEX)) + CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces); + CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, numVerts); CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, numEdges); CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numFaces); diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index a319838a56f..a94fd8f6bd2 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -440,15 +440,14 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f /* only continue if there's a valid DerivedMesh */ if (dm) { MDeformVert *dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); - int *index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX); int numVerts = dm->getNumVerts(dm); int i, j, count = 0; float co[3], nor[3]; - /* check that dvert and index are valid pointers (just in case) */ - if (dvert && index) { + /* check that dvert is a valid pointers (just in case) */ + if (dvert) { /* get the average of all verts with that are in the vertex-group */ - for (i = 0; i < numVerts; i++, index++) { + for (i = 0; i < numVerts; i++) { for (j = 0; j < dvert[i].totweight; j++) { /* does this vertex belong to nominated vertex group? */ if (dvert[i].dw[j].def_nr == dgroup) { diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index a445b6986f6..639797564cc 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -5695,7 +5695,7 @@ static void hookModifier_deformVerts( /* if DerivedMesh is present and has original index data, * use it */ - if(dm && dm->getVertData(dm, 0, CD_ORIGINDEX)) { + if(dm && dm->getVertDataArray(dm, CD_ORIGINDEX)) { int j; int orig_index; for(j = 0; j < numVerts; ++j) { diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c1b9634e5ec..7ed120c3cfb 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1781,13 +1781,15 @@ static void give_parvert(Object *par, int nr, float *vec) DerivedMesh *dm = par->derivedFinal; if(dm) { - int i, count = 0, numVerts = dm->getNumVerts(dm); + int i, count = 0, vindex, numVerts = dm->getNumVerts(dm); int *index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX); float co[3]; /* get the average of all verts with (original index == nr) */ - for(i = 0; i < numVerts; ++i, ++index) { - if(*index == nr) { + for(i = 0; i < numVerts; ++i) { + vindex= (index)? *index: i; + + if(vindex == nr) { dm->getVertCo(dm, i, co); VecAddf(vec, vec, co); count++; diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 43a624b3013..6bd2a03a628 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -790,7 +790,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot) totface= dm->getNumFaces(dm); totorigface= me->totface; - if(totface == 0 || totorigface == 0 || origindex == NULL) + if(totface == 0 || totorigface == 0) return tot; facearea= MEM_callocN(sizeof(float)*totorigface, "SimplifyFaceArea"); @@ -807,14 +807,14 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot) /* compute number of children per original face */ for(a=0; aindex[a]]; + b= (origindex)? origindex[ctx->index[a]]: ctx->index[a]; if(b != -1) elems[b].totchild++; } /* compute areas and centers of original faces */ for(mf=mface, a=0; av1].co); @@ -910,7 +910,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot) skipped= 0; for(a=0, newtot=0; aindex[a]]; + b= (origindex)? origindex[ctx->index[a]]: ctx->index[a]; if(b != -1) { if(elems[b].curchild++ < ceil(elems[b].lambda*elems[b].totchild)) { ctx->index[newtot]= ctx->index[a]; @@ -943,7 +943,7 @@ int psys_render_simplify_params(ParticleSystem *psys, ChildParticle *cpa, float if(!data->dosimplify) return 0; - b= data->origindex[cpa->num]; + b= (data->origindex)? data->origindex[cpa->num]: cpa->num; if(b == -1) return 0; diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 1482bd75ff2..125c8a0c464 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -546,7 +546,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh, // load verts faceBase = i = 0; mvert = CDDM_get_verts(result); - origIndex = result->getVertData(result, 0, CD_ORIGINDEX); + origIndex = result->getVertDataArray(result, CD_ORIGINDEX); for(index = 0; index < totface; index++) { CCGFace *f = faceMap2[index]; @@ -663,7 +663,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh, // load edges i = 0; med = CDDM_get_edges(result); - origIndex = result->getEdgeData(result, 0, CD_ORIGINDEX); + origIndex = result->getEdgeDataArray(result, CD_ORIGINDEX); for(index = 0; index < totface; index++) { CCGFace *f = faceMap2[index]; @@ -738,7 +738,7 @@ static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh, // load faces i = 0; mf = CDDM_get_faces(result); - origIndex = result->getFaceData(result, 0, CD_ORIGINDEX); + origIndex = result->getFaceDataArray(result, CD_ORIGINDEX); for(index = 0; index < totface; index++) { CCGFace *f = faceMap2[index]; @@ -846,7 +846,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, mv = mvert; index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX); - for(i = 0; i < totvert; i++, mv++, index++) { + for(i = 0; i < totvert; i++, mv++) { CCGVert *v; if(vertexCos) { @@ -855,12 +855,12 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, ccgSubSurf_syncVert(ss, SET_INT_IN_POINTER(i), mv->co, 0, &v); } - ((int*)ccgSubSurf_getVertUserData(ss, v))[1] = *index; + ((int*)ccgSubSurf_getVertUserData(ss, v))[1] = (index)? *index++: i; } me = medge; index = (int *)dm->getEdgeDataArray(dm, CD_ORIGINDEX); - for(i = 0; i < totedge; i++, me++, index++) { + for(i = 0; i < totedge; i++, me++) { CCGEdge *e; float crease; @@ -870,12 +870,12 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, ccgSubSurf_syncEdge(ss, SET_INT_IN_POINTER(i), SET_INT_IN_POINTER(me->v1), SET_INT_IN_POINTER(me->v2), crease, &e); - ((int*)ccgSubSurf_getEdgeUserData(ss, e))[1] = *index; + ((int*)ccgSubSurf_getEdgeUserData(ss, e))[1] = (index)? *index++: i; } mf = mface; index = (int *)dm->getFaceDataArray(dm, CD_ORIGINDEX); - for (i = 0; i < totface; i++, mf++, index++) { + for (i = 0; i < totface; i++, mf++) { CCGFace *f; fVerts[0] = SET_INT_IN_POINTER(mf->v1); @@ -901,7 +901,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, return; } - ((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = *index; + ((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = (index)? *index++: i; } ccgSubSurf_processSync(ss); diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 15104068350..210d6e0ff95 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -96,7 +96,7 @@ void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceind DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); int *index = dm->getFaceDataArray(dm, CD_ORIGINDEX); MTFace *tface = dm->getFaceDataArray(dm, CD_MTFACE), *tf; - int numfaces = dm->getNumFaces(dm), a; + int numfaces = dm->getNumFaces(dm), a, findex; float p[2], w[3], absw, minabsw; MFace mf; MVert mv[4]; @@ -106,7 +106,9 @@ void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceind /* test all faces in the derivedmesh with the original index of the picked face */ for(a = 0; a < numfaces; a++) { - if(index[a] == faceindex) { + findex= (index)? index[a]: a; + + if(findex == faceindex) { dm->getFace(dm, a, &mf); dm->getVert(dm, mf.v1, &mv[0]); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 4f41b6e5045..1eecefdcf0f 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -6142,10 +6142,8 @@ static void bbs_mesh_solid(Scene *scene, View3D *v3d, Object *ob) int ind; colors = MEM_mallocN(dm->getNumFaces(dm)*sizeof(MCol)*4,"bbs_mesh_solid"); for(i=0;igetNumFaces(dm);i++) { - if( index != 0 ) - ind = index[i]; - else - ind = i; + ind= ( index )? index[i]: i; + if (face_sel_mode==0 || !(me->mface[ind].flag&ME_HIDE)) { unsigned int fbindex = index_to_framebuffer(ind+1); for(j=0;j<4;j++) { diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 072083e58a7..cb8970a356f 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1710,8 +1710,12 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem if(origindex) { for(a=0; atotbound= MAX2(strandbuf->totbound, origindex[a]); - strandbuf->totbound++; } + else { + for(a=0; atotbound= MAX2(strandbuf->totbound, a); + } + strandbuf->totbound++; strandbuf->bound= MEM_callocN(sizeof(StrandBound)*strandbuf->totbound, "StrandBound"); sbound= strandbuf->bound; -- cgit v1.2.3 From 636fe9068094668dd4bfe28dd144b1217ec7e0c8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:36:38 +0000 Subject: Sculpt: updating normals now no longer uses the vert-face map, to save memory. The weak point now is the thread-safe atomic access to normals from multiple threads, did not seem to be a bottleneck in my tests but I don't really trust it to be fast. --- source/blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenlib/BLI_pbvh.h | 3 +- source/blender/blenlib/intern/pbvh.c | 116 ++++++++++++++++------- source/blender/editors/sculpt_paint/sculpt.c | 9 +- source/blender/makesdna/DNA_meshdata_types.h | 7 +- 5 files changed, 93 insertions(+), 44 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index c9c035ba6d1..5d671c79183 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -473,7 +473,7 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, NULL, dm->numFaceData); BLI_pbvh_update(cddm->pbvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, - face_nors, cdDM_getFaceMap(dm)); + face_nors); /* should be per face */ if(dm->numFaceData && mface->flag & ME_SMOOTH) diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 78e2a9b8745..ba9de462b3d 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -90,8 +90,7 @@ void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node); /* Update Normals/Bounding Box/Draw Buffers/Redraw and clear flags */ -void BLI_pbvh_update(PBVH *bvh, int flags, - float (*face_nors)[3], struct ListBase *fmap); +void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]); void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]); #endif /* BLI_PBVH_H */ diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index b707343bebb..2a1f1484daa 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -101,6 +101,7 @@ struct PBVH { int *face_indices; int totface; + int totvert; /* Mesh data */ MVert *verts; @@ -435,6 +436,7 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv bvh->faces = faces; bvh->verts = verts; bvh->vert_bitmap = BLI_bitmap_new(totvert); + bvh->totvert= totvert; BB_reset(&cb); @@ -641,24 +643,40 @@ static int update_search_cb(PBVHNode *node, return 1; } -static void pbvh_update_face_normals(PBVH *bvh, PBVHNode **nodes, +static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, int totnode, float (*face_nors)[3]) { - PBVHNode *node; + float (*vnor)[3]; int n; + /* could be per node to save some memory, but also means + we have to store for each vertex which node it is in */ + vnor= MEM_callocN(sizeof(float)*3*bvh->totvert, "bvh temp vnors"); + + /* subtle assumptions: + - We know that for all edited vertices, the nodes with faces + adjacent to these vertices have been marked with PBVH_UpdateNormals. + This is true because if the vertex is inside the brush radius, the + bounding box of it's adjacent faces will be as well. + - However this is only true for the vertices that have actually been + edited, not for all vertices in the nodes marked for update, so we + can only update vertices marked with ME_VERT_PBVH_UPDATE. + */ + #pragma omp parallel for private(n) schedule(static) for(n = 0; n < totnode; n++) { - node= nodes[n]; + PBVHNode *node= nodes[n]; if((node->flag & PBVH_UpdateNormals)) { - int i, totface, *faces; + int i, j, totface, *faces; BLI_pbvh_node_get_faces(node, &faces, &totface); for(i = 0; i < totface; ++i) { - MFace *f = bvh->faces + faces[i]; - float *fn = face_nors[faces[i]]; + MFace *f= bvh->faces + faces[i]; + float fn[3]; + unsigned int *fv = &f->v1; + int sides= (f->v4)? 4: 3; if(f->v4) CalcNormFloat4(bvh->verts[f->v1].co, bvh->verts[f->v2].co, @@ -666,49 +684,75 @@ static void pbvh_update_face_normals(PBVH *bvh, PBVHNode **nodes, else CalcNormFloat(bvh->verts[f->v1].co, bvh->verts[f->v2].co, bvh->verts[f->v3].co, fn); + + for(j = 0; j < sides; ++j) { + int v= fv[j]; + + if(bvh->verts[v].flag & ME_VERT_PBVH_UPDATE) { + /* this seems like it could be very slow but profile + does not show this, so just leave it for now? */ + #pragma omp atomic + vnor[v][0] += fn[0]; + #pragma omp atomic + vnor[v][1] += fn[1]; + #pragma omp atomic + vnor[v][2] += fn[2]; + } + } + + if(face_nors) + VECCOPY(face_nors[faces[i]], fn); } } } -} -static void pbvh_update_BB_normals(PBVH *bvh, PBVHNode **nodes, - int totnode, int flag, float (*face_nors)[3], ListBase *fmap) -{ - PBVHNode *node; - int n; - - /* update BB, vertex normals, redraw flag */ #pragma omp parallel for private(n) schedule(static) for(n = 0; n < totnode; n++) { - node= nodes[n]; - - if((flag & PBVH_UpdateBB) && (node->flag & PBVH_UpdateBB)) { - update_node_vb(bvh, node); - /* don't clear flag yet, leave it for flushing later */ - } + PBVHNode *node= nodes[n]; - if((flag & PBVH_UpdateNormals) && (node->flag & PBVH_UpdateNormals)) { + if(node->flag & PBVH_UpdateNormals) { int i, *verts, totvert; BLI_pbvh_node_get_verts(node, &verts, &totvert); for(i = 0; i < totvert; ++i) { const int v = verts[i]; - float no[3] = {0,0,0}; - IndexNode *face; - - for(face = fmap[v].first; face; face = face->next) - VecAddf(no, no, face_nors[face->index]); - - Normalize(no); - - bvh->verts[v].no[0] = no[0] * 32767; - bvh->verts[v].no[1] = no[1] * 32767; - bvh->verts[v].no[2] = no[2] * 32767; + MVert *mvert= &bvh->verts[v]; + + if(mvert->flag & ME_VERT_PBVH_UPDATE) { + float no[3]; + + VECCOPY(no, vnor[v]); + Normalize(no); + + mvert->no[0] = (short)(no[0]*32767.0f); + mvert->no[1] = (short)(no[1]*32767.0f); + mvert->no[2] = (short)(no[2]*32767.0f); + + mvert->flag &= ~ME_VERT_PBVH_UPDATE; + } } node->flag &= ~PBVH_UpdateNormals; } + } + + MEM_freeN(vnor); +} + +static void pbvh_update_BB_redraw(PBVH *bvh, PBVHNode **nodes, + int totnode, int flag) +{ + int n; + + /* update BB, redraw flag */ + #pragma omp parallel for private(n) schedule(static) + for(n = 0; n < totnode; n++) { + PBVHNode *node= nodes[n]; + + if((flag & PBVH_UpdateBB) && (node->flag & PBVH_UpdateBB)) + /* don't clear flag yet, leave it for flushing later */ + update_node_vb(bvh, node); if((flag & PBVH_UpdateRedraw) && (node->flag & PBVH_UpdateRedraw)) node->flag &= ~PBVH_UpdateRedraw; @@ -757,7 +801,7 @@ static int pbvh_flush_bb(PBVH *bvh, PBVHNode *node) return update; } -void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3], ListBase *fmap) +void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3]) { PBVHNode **nodes; int totnode; @@ -765,10 +809,10 @@ void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3], ListBase *fmap) BLI_pbvh_search_gather(bvh, update_search_cb, NULL, &nodes, &totnode); if(flag & PBVH_UpdateNormals) - pbvh_update_face_normals(bvh, nodes, totnode, face_nors); + pbvh_update_normals(bvh, nodes, totnode, face_nors); - if(flag & (PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateRedraw)) - pbvh_update_BB_normals(bvh, nodes, totnode, flag, face_nors, fmap); + if(flag & (PBVH_UpdateBB|PBVH_UpdateRedraw)) + pbvh_update_BB_redraw(bvh, nodes, totnode, flag); if(flag & PBVH_UpdateDrawBuffers) pbvh_update_draw_buffers(bvh, nodes, totnode); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index e29f0d56ba2..c8bfbec4e8b 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -266,7 +266,7 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, MEM_freeN(bb); /* clear redraw flag from nodes */ - BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL, NULL); + BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL); } /*** Looping Over Nodes in a BVH Node ***/ @@ -624,6 +624,7 @@ static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t vd.co[2] + offset[2]*fade}; sculpt_clip(sd, ss, vd.co, val); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_node_mark_update(nodes[n]); @@ -697,6 +698,7 @@ static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int val[2] = vd.co[2]+(avg[2]-vd.co[2])*fade; sculpt_clip(sd, ss, vd.co, val); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_node_mark_update(nodes[n]); @@ -723,6 +725,7 @@ static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int vd.co[2]+(vd.location[2]-vd.co[2])*fade}; sculpt_clip(sd, ss, vd.co, val); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_node_mark_update(nodes[n]); @@ -821,6 +824,7 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in VecAddf(add, add, vd.co); sculpt_clip(sd, ss, vd.co, add); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_node_mark_update(nodes[n]); @@ -944,6 +948,7 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **node VecAddf(val, val, vd.co); sculpt_clip(sd, ss, vd.co, val); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } } @@ -1631,7 +1636,7 @@ static void sculpt_flush_update(bContext *C) multires_mark_as_modified(ob); } - BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL, NULL); + BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); if(redraw) { diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index d53a7833d0e..48e361afdae 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -182,10 +182,11 @@ typedef struct PartialVisibility { } PartialVisibility; /* mvert->flag (1=SELECT) */ -#define ME_SPHERETEST 2 -#define ME_SPHERETEMP 4 -#define ME_HIDE 16 +#define ME_SPHERETEST 2 +#define ME_SPHERETEMP 4 +#define ME_HIDE 16 #define ME_VERT_MERGED (1<<6) +#define ME_VERT_PBVH_UPDATE (1<<7) /* medge->flag (1=SELECT)*/ #define ME_EDGEDRAW (1<<1) -- cgit v1.2.3 From 55611fb2e6ff42daf2b74b212e13ed5db04283a7 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:40:15 +0000 Subject: Sculpt: don't create DM face normals in sculpt mode, only update them if they exist already, to save memory. --- source/blender/blenkernel/intern/cdderivedmesh.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 5d671c79183..7cc46d39158 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -464,13 +464,7 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, } if(cddm->pbvh) { - float (*face_nors)[3]; - - /* make a face normal layer if not present */ - face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); - if(!face_nors) - face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, - NULL, dm->numFaceData); + float (*face_nors)[3] = CustomData_get_layer(&dm->faceData, CD_NORMAL); BLI_pbvh_update(cddm->pbvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, face_nors); -- cgit v1.2.3 From 678d37fe4e2f68d57022fb210281031025150b0f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 20:56:46 +0000 Subject: Sculpt: now uses it's own Undo stack like editmesh. The main advantage here is that it is able to store changes in the mesh more compact than global undo. It doesn't integrate well with multires yet, will tackle that when I start looking into multires, for now still focusing on sculpt on regular meshes. --- source/blender/blenkernel/BKE_paint.h | 1 + source/blender/editors/sculpt_paint/sculpt.c | 217 +++++++++++++++++---- .../blender/editors/sculpt_paint/sculpt_intern.h | 3 + source/blender/editors/util/undo.c | 2 + 4 files changed, 189 insertions(+), 34 deletions(-) diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 5bca174628d..ffb4e6ae743 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -70,6 +70,7 @@ typedef struct SculptSession { int totvert, totface; float *face_normals; struct PBVH *tree; + struct Object *ob; /* Mesh connectivity */ struct ListBase *fmap; diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index c8bfbec4e8b..0841fdfec22 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -37,6 +37,7 @@ #include "BLI_dynstr.h" #include "BLI_ghash.h" #include "BLI_pbvh.h" +#include "BLI_threads.h" #include "DNA_armature_types.h" #include "DNA_brush_types.h" @@ -269,7 +270,133 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL); } -/*** Looping Over Nodes in a BVH Node ***/ +/************************** Undo *************************/ + +typedef struct SculptUndoNode { + struct SculptUndoNode *next, *prev; + + char idname[MAX_ID_NAME]; /* name instead of pointer*/ + int maxvert; /* to verify if totvert it still the same */ + void *node; /* only during push, not valid afterwards! */ + + float (*co)[3]; + int *index; + int totvert; +} SculptUndoNode; + +static void update_cb(PBVHNode *node, void *data) +{ + BLI_pbvh_node_mark_update(node); +} + +static void sculpt_undo_restore(bContext *C, ListBase *lb) +{ + Object *ob = CTX_data_active_object(C); + SculptSession *ss = ob->sculpt; + SculptUndoNode *unode; + MVert *mvert; + MultiresModifierData *mmd; + int *index; + int i, totvert, update= 0; + + sculpt_update_mesh_elements(C, 0); + + for(unode=lb->first; unode; unode=unode->next) { + if(!(strcmp(unode->idname, ob->id.name)==0)) + continue; + if(ss->totvert != unode->maxvert) + continue; + + index= unode->index; + totvert= unode->totvert; + mvert= ss->mvert; + + for(i=0; ico[i]) + VECCOPY(unode->co[i], tmp); + + mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + } + + 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->tree, NULL, NULL, update_cb, NULL); + BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); + + /* not really convinced this is correct .. */ + if((mmd=sculpt_multires_active(ob))) { + mmd->undo_verts = ss->mvert; + mmd->undo_verts_tot = ss->totvert; + mmd->undo_signal = !!mmd->undo_verts; + + multires_force_update(ob); + 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->index) + MEM_freeN(unode->index); + } +} + +static float (*sculpt_undo_push_node(SculptSession *ss, PBVHNode *node))[3] +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + Object *ob= ss->ob; + SculptUndoNode *unode; + int i, totvert, *verts; + + BLI_pbvh_node_get_verts(node, &verts, &totvert); + + /* list is manipulated by multiple threads, so we lock */ + BLI_lock_thread(LOCK_CUSTOM1); + + for(unode=lb->first; unode; unode=unode->next) { + if(unode->node == node && strcmp(unode->idname, ob->id.name)==0) { + BLI_unlock_thread(LOCK_CUSTOM1); + return unode->co; + } + } + + unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); + strcpy(unode->idname, ob->id.name); + unode->node= node; + + unode->totvert= totvert; + unode->maxvert= ss->totvert; + /* we will use this while sculpting, is mapalloc slow to access then? */ + unode->co= MEM_mapallocN(sizeof(float)*3*totvert, "SculptUndoNode.co"); + unode->index= MEM_mapallocN(sizeof(int)*totvert, "SculptUndoNode.index"); + undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(int))*totvert); + BLI_addtail(lb, unode); + + BLI_unlock_thread(LOCK_CUSTOM1); + + /* copy threaded, hopefully this is the performance critical part */ + memcpy(unode->index, verts, sizeof(int)*totvert); + for(i=0; ico[i], ss->mvert[verts[i]].co) + + return unode->co; +} + +/************************ Looping Over Verts in a BVH Node *******************/ typedef struct SculptVertexData { float radius_squared; @@ -277,38 +404,47 @@ typedef struct SculptVertexData { MVert *mvert; int *verts; + float (*origvert)[3]; int i, index, totvert; float *co; + float *origco; short *no; float dist; } SculptVertexData; -static void sculpt_node_verts_init(Sculpt *sd, SculptSession *ss, PBVHNode *node, SculptVertexData *vd) +static void sculpt_node_verts_init(Sculpt *sd, SculptSession *ss, + PBVHNode *node, float (*origvert)[3], SculptVertexData *vd) { vd->radius_squared= ss->cache->radius*ss->cache->radius; VecCopyf(vd->location, ss->cache->location); vd->mvert= ss->mvert; - vd->i= 0; + vd->origvert= origvert; + vd->i= -1; BLI_pbvh_node_get_verts(node, &vd->verts, &vd->totvert); } static int sculpt_node_verts_next(SculptVertexData *vd) { + vd->i++; + while(vd->i < vd->totvert) { float delta[3], dsq; - vd->index= vd->verts[vd->i++]; + vd->index= vd->verts[vd->i]; vd->co= vd->mvert[vd->index].co; + vd->origco= (vd->origvert)? vd->origvert[vd->i]: vd->co; vd->no= vd->mvert[vd->index].no; - VECSUB(delta, vd->co, vd->location); + VECSUB(delta, vd->origco, vd->location); dsq = INPR(delta, delta); if(dsq < vd->radius_squared) { vd->dist = sqrt(dsq); return 1; } + + vd->i++; } return 0; @@ -563,7 +699,7 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] float nout[3] = {0.0f, 0.0f, 0.0f}; float nout_flip[3] = {0.0f, 0.0f, 0.0f}; - sculpt_node_verts_init(sd, ss, nodes[n], &vd); + sculpt_node_verts_init(sd, ss, nodes[n], NULL, &vd); if(brush->flag & BRUSH_ANCHORED) { while(sculpt_node_verts_next(&vd)) @@ -614,7 +750,8 @@ static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t for(n=0; ncustomdata_mask); SculptSession *ss = ob->sculpt; - + if((ss->multires = sculpt_multires_active(ob))) { ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumFaces(dm); @@ -1198,12 +1339,12 @@ static void sculpt_update_mesh_elements(bContext *C) ss->totface = me->totface; ss->mvert = me->mvert; ss->mface = me->mface; - if(!ss->face_normals) - ss->face_normals = MEM_callocN(sizeof(float) * 3 * me->totface, "sculpt face normals"); + ss->face_normals = NULL; } + ss->ob = ob; ss->tree = dm->getPBVH(dm); - ss->fmap = dm->getFaceMap(dm); + ss->fmap = (need_fmap)? dm->getFaceMap(dm): NULL; } static int sculpt_mode_poll(bContext *C) @@ -1217,27 +1358,27 @@ int sculpt_poll(bContext *C) return sculpt_mode_poll(C) && paint_poll(C); } -static void sculpt_undo_push(bContext *C, Sculpt *sd) +static char *sculpt_tool_name(Sculpt *sd) { Brush *brush = paint_brush(&sd->paint); switch(brush->sculpt_tool) { case SCULPT_TOOL_DRAW: - ED_undo_push(C, "Draw Brush"); break; + return "Draw Brush"; break; case SCULPT_TOOL_SMOOTH: - ED_undo_push(C, "Smooth Brush"); break; + return "Smooth Brush"; break; case SCULPT_TOOL_PINCH: - ED_undo_push(C, "Pinch Brush"); break; + return "Pinch Brush"; break; case SCULPT_TOOL_INFLATE: - ED_undo_push(C, "Inflate Brush"); break; + return "Inflate Brush"; break; case SCULPT_TOOL_GRAB: - ED_undo_push(C, "Grab Brush"); break; + return "Grab Brush"; break; case SCULPT_TOOL_LAYER: - ED_undo_push(C, "Layer Brush"); break; + return "Layer Brush"; break; case SCULPT_TOOL_FLATTEN: - ED_undo_push(C, "Flatten Brush"); break; + return "Flatten Brush"; break; default: - ED_undo_push(C, "Sculpting"); break; + return "Sculpting"; break; } } @@ -1341,7 +1482,7 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats"); view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); - sculpt_update_mesh_elements(C); + sculpt_update_mesh_elements(C, 0); /* Initialize layer brush displacements */ if(brush->sculpt_tool == SCULPT_TOOL_LAYER && @@ -1589,7 +1730,7 @@ static void sculpt_brush_stroke_init(bContext *C) changes are made to the texture. */ sculpt_update_tex(sd, ss); - sculpt_update_mesh_elements(C); + sculpt_update_mesh_elements(C, 1); } static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) @@ -1661,11 +1802,17 @@ static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent if(over_mesh) { Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C)); sculpt_brush_stroke_init_properties(C, op, event, ss); + sculpt_update_cache_invariants(sd, ss, C, op); + + undo_paint_push_begin(UNDO_PAINT_MESH, sculpt_tool_name(sd), + sculpt_undo_restore, sculpt_undo_free); + return 1; } else @@ -1691,11 +1838,13 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) /* Finished */ if(ss->cache) { - Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + // Sculpt *sd = CTX_data_tool_settings(C)->sculpt; sculpt_cache_free(ss->cache); ss->cache = NULL; - sculpt_undo_push(C, sd); + + undo_paint_push_end(UNDO_PAINT_MESH); + // XXX ED_undo_push(C, sculpt_tool_name(sd)); } } @@ -1733,7 +1882,7 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) sculpt_flush_update(C); sculpt_cache_free(ss->cache); - sculpt_undo_push(C, sd); + // XXX ED_undo_push(C, sculpt_tool_name(sd)); return OPERATOR_FINISHED; } @@ -1809,7 +1958,7 @@ static void sculpt_init_session(bContext *C, Object *ob) { ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); - sculpt_update_mesh_elements(C); + sculpt_update_mesh_elements(C, 0); } static int sculpt_toggle_mode(bContext *C, wmOperator *op) diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index 15ccacc294a..d0eeacf5ea3 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -40,6 +40,7 @@ struct Object; struct Scene; struct Sculpt; struct SculptStroke; +struct MultiresModifierData; /* Interface */ void sculptmode_selectbrush_menu(void); @@ -47,6 +48,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 Brush *sculptmode_brush(void); //void do_symmetrical_brush_actions(struct Sculpt *sd, struct wmOperator *wm, struct BrushAction *a, short *, short *); @@ -55,6 +57,7 @@ char sculpt_modifiers_active(struct Object *ob); void sculpt(Sculpt *sd); int sculpt_poll(struct bContext *C); +void sculpt_update_mesh_elements(struct bContext *C, int need_fmap); /* Stroke */ struct SculptStroke *sculpt_stroke_new(const int max); diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index 18e3304c191..e20c88ba41f 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -147,6 +147,8 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) if(obact && obact->mode & OB_MODE_TEXTURE_PAINT) ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step); + else if(obact && obact->mode & OB_MODE_SCULPT) + ED_undo_paint_step(C, UNDO_PAINT_MESH, step); else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) { if(step==1) PE_undo(CTX_data_scene(C)); -- cgit v1.2.3 From 68278f35e8ae7e6ca387695d752a907ade5f8c4e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 4 Nov 2009 21:10:28 +0000 Subject: Sculpt: tool updates for latest changes * Smooth: vert-face map is now only created when this tool is used, would be best to also avoid using it here to avoid a sudden increase in memory, but is not trivial. * Grab: now no longer uses active verts list and loops over nodes like other tools. * Layer: uses original coordinates from undo now to save memory when not using persistent layer. * Anchored: this option works again now, though is still quite slow as it loops over all verts/faces. Smooth, layer tools and the anchored option could still be improved to use less memory and/or work faster by only doing things per node. --- source/blender/blenkernel/BKE_paint.h | 2 +- source/blender/blenkernel/intern/object.c | 7 +- source/blender/editors/sculpt_paint/sculpt.c | 206 +++++++++++++-------------- 3 files changed, 99 insertions(+), 116 deletions(-) diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index ffb4e6ae743..2b4fb9d938d 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -85,7 +85,7 @@ typedef struct SculptSession { unsigned int texcache_side, *texcache, texcache_actual; /* Layer brush persistence between strokes */ - float (*mesh_co_orig)[3]; /* Copy of the mesh vertices' locations */ + float (*layer_co)[3]; /* Copy of the mesh vertices' locations */ float *layer_disps; /* Displacements for each vertex */ struct SculptStroke *stroke; diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 7ed120c3cfb..6f0749e0fcd 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -235,11 +235,8 @@ void free_sculptsession(SculptSession **ssp) if(ss->layer_disps) MEM_freeN(ss->layer_disps); - if(ss->mesh_co_orig) - MEM_freeN(ss->mesh_co_orig); - - if(ss->face_normals) - MEM_freeN(ss->face_normals); + if(ss->layer_co) + MEM_freeN(ss->layer_co); MEM_freeN(ss); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 0841fdfec22..fd614555fcb 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -159,9 +159,9 @@ typedef struct StrokeCache { float (*face_norms)[3]; /* Copy of the mesh faces' normals */ float rotation; /* Texture rotation (radians) for anchored and rake modes */ int pixel_radius, previous_pixel_radius; - ListBase grab_active_verts[8]; /* The same list of verts is used throught grab stroke */ - PBVHNode **grab_active_nodes[8]; + PBVHNode **grab_active_nodes[8]; /* The same list of nodes is used throught grab stroke */ int grab_active_totnode[8]; + float grab_active_location[8][3]; float grab_delta[3], grab_delta_symmetry[3]; float old_grab_location[3]; int symmetry; /* Symmetry index between 0 and 7 */ @@ -873,34 +873,39 @@ static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - ActiveData *node= ss->cache->grab_active_verts[ss->cache->symmetry].first; - float add[3]; - float grab_delta[3]; + Brush *brush = paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + float grab_delta[3], (*origco)[3]; int n; VecCopyf(grab_delta, ss->cache->grab_delta_symmetry); - - while(node) { - float *co= ss->mvert[node->Index].co; + + #pragma omp parallel for private(n) schedule(static) + for(n=0; nFade); - VecAddf(add, add, co); + origco= sculpt_undo_push_node(ss, nodes[n]); + sculpt_node_verts_init(sd, ss, nodes[n], origco, &vd); - sculpt_clip(sd, ss, co, add); + while(sculpt_node_verts_next(&vd)) { + const float fade = tex_strength(ss, brush, origco[vd.i], vd.dist)*bstrength; + const float add[3]= {vd.co[0]+fade*grab_delta[0], + vd.co[1]+fade*grab_delta[1], + vd.co[2]+fade*grab_delta[2]}; - node= node->next; - } + sculpt_clip(sd, ss, vd.co, add); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + } - for(n=0; npaint); float bstrength= ss->cache->bstrength; - float area_normal[3]; + float area_normal[3], offset[3]; float lim= ss->cache->radius / 4; int n; @@ -909,10 +914,16 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int calc_area_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]; + #pragma omp parallel for private(n) schedule(static) for(n=0; n 0 && *disp > lim)) *disp = lim; - val[0] = ss->mesh_co_orig[vd.index][0]+area_normal[0] * *disp*ss->cache->scale[0]; - val[1] = ss->mesh_co_orig[vd.index][1]+area_normal[1] * *disp*ss->cache->scale[1]; - val[2] = ss->mesh_co_orig[vd.index][2]+area_normal[2] * *disp*ss->cache->scale[2]; + if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { + /* persistent base */ + val[0] = ss->layer_co[vd.index][0] + (*disp)*offset[0]; + val[1] = ss->layer_co[vd.index][1] + (*disp)*offset[1]; + val[2] = ss->layer_co[vd.index][2] + (*disp)*offset[2]; + } + 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]; + } sculpt_clip(sd, ss, vd.co, val); + ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_node_mark_update(nodes[n]); @@ -1097,74 +1117,35 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **node } } -static void sculpt_brush_hit_cb(PBVHNode *node, void *data_v) -{ - SculptSearchSphereData *data = data_v; - int i, totvert, *verts; - - BLI_pbvh_node_get_verts(node, &verts, &totvert); - - /* XXX: for now grab brush still uses an active vert list, - will be fixed later */ - - for(i = 0; i < totvert; ++i) { - int v = verts[i]; - float delta[3], dsq; - - VecSubf(delta, data->ss->mvert[v].co, - data->ss->cache->location); - dsq = Inpf(delta, delta); - - if(dsq < data->radius_squared) { - ActiveData *adata = - (ActiveData*)MEM_mallocN(sizeof(ActiveData), - "ActiveData"); - adata->Index = v; - adata->dist = sqrt(dsq); - BLI_addtail(data->active_verts, adata); - } - } - - BLI_pbvh_node_mark_update(node); -} - static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) { + SculptSearchSphereData data; Brush *brush = paint_brush(&sd->paint); //KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */ PBVHNode **nodes= NULL; int totnode; - SculptSearchSphereData data; data.ss = ss; data.sd = sd; data.radius_squared = ss->cache->radius * ss->cache->radius; - /* Build a list of all vertices that are potentially within the brush's + /* Build a list of all nodes that are potentially within the brush's area of influence */ if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { if(cache->first_time) { - const float bstrength= brush_strength(sd, cache); - ListBase *grab_active_verts = &ss->cache->grab_active_verts[ss->cache->symmetry]; - ActiveData *adata; - - data.active_verts = grab_active_verts; - BLI_pbvh_search_callback(ss->tree, sculpt_search_sphere_cb, &data, - sculpt_brush_hit_cb, &data); - + /* For the grab tool we store these nodes once in the beginning + and then reuse them. */ BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data, &nodes, &totnode); ss->cache->grab_active_nodes[ss->cache->symmetry]= nodes; ss->cache->grab_active_totnode[ss->cache->symmetry]= totnode; - - /* Update brush strength for each vertex */ - for(adata = data.active_verts->first; adata; adata = adata->next) - adata->Fade = tex_strength(ss, brush, ss->mvert[adata->Index].co, adata->dist) * bstrength; + VecCopyf(ss->cache->grab_active_location[ss->cache->symmetry], ss->cache->location); } else { nodes= ss->cache->grab_active_nodes[ss->cache->symmetry]; totnode= ss->cache->grab_active_totnode[ss->cache->symmetry]; + VecCopyf(ss->cache->location, ss->cache->grab_active_location[ss->cache->symmetry]); } } else { @@ -1226,9 +1207,8 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) } #endif - if(brush->sculpt_tool != SCULPT_TOOL_GRAB) - if(nodes) - MEM_freeN(nodes); + if((brush->sculpt_tool != SCULPT_TOOL_GRAB) && nodes) + MEM_freeN(nodes); } } @@ -1449,7 +1429,6 @@ static void sculpt_cache_free(StrokeCache *cache) if(cache->mats) MEM_freeN(cache->mats); for(i = 0; i < 8; ++i) { - BLI_freelistN(&cache->grab_active_verts[i]); if(cache->grab_active_nodes[i]) MEM_freeN(cache->grab_active_nodes[i]); } @@ -1482,46 +1461,39 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats"); view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); - sculpt_update_mesh_elements(C, 0); - - /* Initialize layer brush displacements */ - if(brush->sculpt_tool == SCULPT_TOOL_LAYER && - (!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"); - } - - /* Make copies of the mesh vertex locations and normals for some tools */ - if(brush->sculpt_tool == SCULPT_TOOL_LAYER || (brush->flag & BRUSH_ANCHORED)) { - if(brush->sculpt_tool != SCULPT_TOOL_LAYER || - !ss->mesh_co_orig || !(brush->flag & BRUSH_PERSISTENT)) { - if(!ss->mesh_co_orig) - ss->mesh_co_orig= MEM_mallocN(sizeof(float) * 3 * ss->totvert, + /* Initialize layer brush displacements and persistent coords */ + if(brush->sculpt_tool == SCULPT_TOOL_LAYER) { + 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(!ss->layer_co) + ss->layer_co= MEM_mallocN(sizeof(float) * 3 * ss->totvert, "sculpt mesh vertices copy"); for(i = 0; i < ss->totvert; ++i) - VecCopyf(ss->mesh_co_orig[i], ss->mvert[i].co); + VecCopyf(ss->layer_co[i], ss->mvert[i].co); } + } - if(brush->flag & BRUSH_ANCHORED) { - cache->orig_norms= MEM_mallocN(sizeof(short) * 3 * ss->totvert, "Sculpt orig norm"); - for(i = 0; i < ss->totvert; ++i) { - cache->orig_norms[i][0] = ss->mvert[i].no[0]; - cache->orig_norms[i][1] = ss->mvert[i].no[1]; - cache->orig_norms[i][2] = ss->mvert[i].no[2]; - } + /* Make copies of the mesh vertex locations and normals for some tools */ + if(brush->flag & BRUSH_ANCHORED) { + cache->orig_norms= MEM_mallocN(sizeof(short) * 3 * ss->totvert, "Sculpt orig norm"); + for(i = 0; i < ss->totvert; ++i) { + cache->orig_norms[i][0] = ss->mvert[i].no[0]; + cache->orig_norms[i][1] = ss->mvert[i].no[1]; + cache->orig_norms[i][2] = ss->mvert[i].no[2]; + } - if(ss->face_normals) { - float *fn = ss->face_normals; - cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms"); - for(i = 0; i < ss->totface; ++i, fn += 3) - VecCopyf(cache->face_norms[i], fn); - } + if(ss->face_normals) { + float *fn = ss->face_normals; + cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms"); + for(i = 0; i < ss->totface; ++i, fn += 3) + VecCopyf(cache->face_norms[i], fn); } } - //view3d_unproject(cache->mats, cache->true_location, cache->initial_mouse[0], cache->initial_mouse[1], cache->depth); - cache->initial_radius = unproject_brush_radius(vc, cache->true_location, brush->size); cache->rotation = 0; cache->first_time = 1; } @@ -1535,7 +1507,7 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P int dx, dy; - if(!(brush->flag & BRUSH_ANCHORED)) + if(!(brush->flag & BRUSH_ANCHORED) || cache->first_time) RNA_float_get_array(ptr, "location", cache->true_location); cache->flip = RNA_boolean_get(ptr, "flip"); RNA_float_get_array(ptr, "mouse", cache->mouse); @@ -1546,6 +1518,9 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P cache->previous_pixel_radius = cache->pixel_radius; cache->pixel_radius = brush->size; + if(cache->first_time) + cache->initial_radius = unproject_brush_radius(cache->vc, cache->true_location, brush->size); + if(brush->flag & BRUSH_SIZE_PRESSURE) { cache->pixel_radius *= cache->pressure; cache->radius = cache->initial_radius * cache->pressure; @@ -1681,7 +1656,6 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou /* Initialize stroke operator properties */ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmEvent *event, SculptSession *ss) { - Sculpt *sd = CTX_data_tool_settings(C)->sculpt; Object *ob= CTX_data_active_object(C); ModifierData *md; float scale[3], clip_tolerance[3] = {0,0,0}; @@ -1714,14 +1688,13 @@ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmE mouse[0] = event->x; mouse[1] = event->y; RNA_float_set_array(op->ptr, "initial_mouse", mouse); - - sculpt_update_cache_invariants(sd, ss, C, op); } static void sculpt_brush_stroke_init(bContext *C) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; SculptSession *ss = CTX_data_active_object(C)->sculpt; + Brush *brush = paint_brush(&sd->paint); view3d_operator_needs_opengl(C); @@ -1730,7 +1703,7 @@ static void sculpt_brush_stroke_init(bContext *C) changes are made to the texture. */ sculpt_update_tex(sd, ss); - sculpt_update_mesh_elements(C, 1); + sculpt_update_mesh_elements(C, brush->sculpt_tool == SCULPT_TOOL_SMOOTH); } static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) @@ -1740,9 +1713,22 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) int i; /* Restore the mesh before continuing with anchored stroke */ - if((brush->flag & BRUSH_ANCHORED) && ss->mesh_co_orig) { + if((brush->flag & BRUSH_ANCHORED) && cache->orig_norms) { + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + SculptUndoNode *unode; + + /* this could benefit from multithreading... */ + + for(unode = lb->first; unode; unode = unode->next) { + float (*co)[3]= unode->co; + int *index= unode->index; + int totvert= unode->totvert; + + for(i = 0; i < totvert; ++i) + VECCOPY(ss->mvert[index[i]].co, co[i]); + } + for(i = 0; i < ss->totvert; ++i) { - VecCopyf(ss->mvert[i].co, ss->mesh_co_orig[i]); ss->mvert[i].no[0] = cache->orig_norms[i][0]; ss->mvert[i].no[1] = cache->orig_norms[i][1]; ss->mvert[i].no[2] = cache->orig_norms[i][2]; @@ -1931,9 +1917,9 @@ static int sculpt_set_persistent_base(bContext *C, wmOperator *op) MEM_freeN(ss->layer_disps); ss->layer_disps = NULL; - if(ss->mesh_co_orig) - MEM_freeN(ss->mesh_co_orig); - ss->mesh_co_orig = NULL; + if(ss->layer_co) + MEM_freeN(ss->layer_co); + ss->layer_co = NULL; } return OPERATOR_FINISHED; -- cgit v1.2.3 From 132783328209f24873629113665f01b35364fdd0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 6 Nov 2009 16:46:35 +0000 Subject: Sculpt: WIP brush behavior changes * Draw/Inflate/Layer now keep working on the original mesh coordinates and normals from when the stroke started. This helps avoid the mesh blowing up, but can still be better. The old behavior is still available as "Accumulate" in the UI. * This requires some more memory usage for the BVH, would like to find a way to avoid that. * Smooth falloff is now the default. * Spacing is now enabled by default, with a value of 7.5. * Anchored now stores normals per node to save some memory. --- release/scripts/ui/space_view3d_toolbar.py | 3 + source/blender/blenkernel/intern/brush.c | 3 +- source/blender/blenkernel/intern/cdderivedmesh.c | 6 +- source/blender/blenlib/BLI_pbvh.h | 16 +- source/blender/blenlib/intern/pbvh.c | 115 +++++++++---- source/blender/editors/sculpt_paint/paint_undo.c | 12 +- source/blender/editors/sculpt_paint/sculpt.c | 207 +++++++++++++++-------- source/blender/makesdna/DNA_brush_types.h | 13 +- source/blender/makesrna/intern/rna_brush.c | 5 + 9 files changed, 262 insertions(+), 118 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 0ad694efde1..7d1f905998a 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -523,6 +523,9 @@ class VIEW3D_PT_tools_brush(PaintPanel): if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): col.row().itemR(brush, "direction", expand=True) + if brush.sculpt_tool in ('DRAW', 'INFLATE', 'LAYER'): + col.itemR(brush, "use_accumulate") + if brush.sculpt_tool == 'LAYER': col.itemR(brush, "use_persistent") col.itemO("sculpt.set_persistent_base") diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 8a4ffca8244..b415e7b7b17 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -75,13 +75,14 @@ Brush *add_brush(const char *name) brush->rgb[2]= 1.0f; brush->alpha= 0.2f; brush->size= 25; - brush->spacing= 10.0f; + brush->spacing= 7.5f; brush->smooth_stroke_radius= 75; brush->smooth_stroke_factor= 0.9; brush->rate= 0.1f; brush->jitter= 0.0f; brush->clone.alpha= 0.5; brush->sculpt_tool = SCULPT_TOOL_DRAW; + brush->flag |= BRUSH_SPACE; brush_curve_preset(brush, BRUSH_PRESET_SMOOTH); diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 7cc46d39158..7acf77c6f90 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -420,11 +420,13 @@ static void draw_partial_cb(PBVHNode *node, void *data) Returns true if the AABB is at least partially within the frustum (ok, not a real frustum), false otherwise. */ -int planes_contain_AABB(PBVHNode *node, float bb_min[3], float bb_max[3], void *data) +int planes_contain_AABB(PBVHNode *node, void *data) { float (*planes)[4] = data; int i, axis; - float vmin[3], vmax[3]; + float vmin[3], vmax[3], bb_min[3], bb_max[3]; + + BLI_pbvh_node_get_BB(node, bb_min, bb_max); for(i = 0; i < 4; ++i) { for(axis = 0; axis < 3; ++axis) { diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index ba9de462b3d..360a9937498 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -37,8 +37,7 @@ typedef struct PBVHNode PBVHNode; /* Callbacks */ /* returns 1 if the search should continue from this node, 0 otherwise */ -typedef int (*BLI_pbvh_SearchCallback)(PBVHNode *node, - float bb_min[3], float bb_max[3], void *data); +typedef int (*BLI_pbvh_SearchCallback)(PBVHNode *node, void *data); typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data); @@ -69,7 +68,7 @@ void BLI_pbvh_search_gather(PBVH *bvh, hit first */ void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, - float ray_start[3], float ray_normal[3]); + float ray_start[3], float ray_normal[3], int original); /* Node Access */ @@ -78,20 +77,25 @@ typedef enum { PBVH_UpdateNormals = 2, PBVH_UpdateBB = 4, + PBVH_UpdateOriginalBB = 4, PBVH_UpdateDrawBuffers = 8, PBVH_UpdateRedraw = 16 } PBVHNodeFlags; void BLI_pbvh_node_mark_update(PBVHNode *node); -void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert); -void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int *totface); +void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, + int *totvert, int *allverts); +void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, + int **face_vert_indices, int *totface); void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node); +void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); +void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); /* Update Normals/Bounding Box/Draw Buffers/Redraw and clear flags */ void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]); -void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]); +void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]); #endif /* BLI_PBVH_H */ diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 2a1f1484daa..4cf278d219e 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -82,12 +82,14 @@ struct PBVHNode { /* Voxel bounds */ BB vb; + BB orig_vb; /* For internal nodes */ int children_offset; /* Pointer into bvh face_indices */ int *face_indices; + int *face_vert_indices; unsigned short totface; unsigned short uniq_verts, face_verts; @@ -266,7 +268,7 @@ static void grow_nodes(PBVH *bvh, int totnode) /* Add a vertex to the map, with a positive value for unique vertices and a negative value for additional vertices */ -static void map_insert_vert(PBVH *bvh, GHash *map, +static int map_insert_vert(PBVH *bvh, GHash *map, unsigned short *face_verts, unsigned short *uniq_verts, int vertex) { @@ -284,7 +286,10 @@ static void map_insert_vert(PBVH *bvh, GHash *map, } BLI_ghash_insert(map, key, value); + return GET_INT_FROM_POINTER(value); } + else + return GET_INT_FROM_POINTER(BLI_ghash_lookup(map, key)); } /* Find vertices used by the faces in this node and update the draw buffers */ @@ -299,13 +304,17 @@ static void build_leaf_node(PBVH *bvh, PBVHNode *node) node->uniq_verts = node->face_verts = 0; totface= node->totface; + node->face_vert_indices = MEM_callocN(sizeof(int) * + 4*totface, "bvh node face vert indices"); + for(i = 0; i < totface; ++i) { MFace *f = bvh->faces + node->face_indices[i]; int sides = f->v4 ? 4 : 3; for(j = 0; j < sides; ++j) { - map_insert_vert(bvh, map, &node->face_verts, - &node->uniq_verts, (&f->v1)[j]); + node->face_vert_indices[i*4 + j]= + map_insert_vert(bvh, map, &node->face_verts, + &node->uniq_verts, (&f->v1)[j]); } } @@ -327,6 +336,10 @@ static void build_leaf_node(PBVH *bvh, PBVHNode *node) GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(iter)); } + for(i = 0; i < totface*4; ++i) + if(node->face_vert_indices[i] < 0) + node->face_vert_indices[i]= -node->face_vert_indices[i] + node->uniq_verts - 1; + node->draw_buffers = GPU_build_buffers(map, bvh->verts, bvh->faces, node->face_indices, @@ -370,6 +383,7 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, } build_leaf_node(bvh, bvh->nodes + node_index); + bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb; /* Done with this subtree */ return; @@ -394,6 +408,8 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, (BB*)(prim_bbc + bvh->face_indices[i])); } + bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb; + end = partition_indices(bvh->face_indices, offset, offset + count - 1, axis, (cb->bmax[axis] + cb->bmin[axis]) * 0.5f, @@ -480,6 +496,7 @@ void BLI_pbvh_free(PBVH *bvh) if(bvh->nodes[i].flag & PBVH_Leaf) { GPU_free_buffers(bvh->nodes[i].draw_buffers); MEM_freeN(bvh->nodes[i].vert_indices); + MEM_freeN(bvh->nodes[i].face_vert_indices); } } @@ -562,7 +579,7 @@ static PBVHNode *pbvh_iter_next(PBVHIter *iter) /* check search callback */ search_data= iter->search_data; - if(iter->scb && !iter->scb(node, node->vb.bmin, node->vb.bmax, search_data)) + if(iter->scb && !iter->scb(node, search_data)) continue; /* don't traverse, outside of search zone */ if(node->flag & PBVH_Leaf) { @@ -634,11 +651,12 @@ void BLI_pbvh_search_callback(PBVH *bvh, pbvh_iter_end(&iter); } -static int update_search_cb(PBVHNode *node, - float bb_min[3], float bb_max[3], void *data_v) +static int update_search_cb(PBVHNode *node, void *data_v) { + int flag= GET_INT_FROM_POINTER(data_v); + if(node->flag & PBVH_Leaf) - return (node->flag & (PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw)); + return (node->flag & flag); return 1; } @@ -670,7 +688,8 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, if((node->flag & PBVH_UpdateNormals)) { int i, j, totface, *faces; - BLI_pbvh_node_get_faces(node, &faces, &totface); + faces= node->face_indices; + totface= node->totface; for(i = 0; i < totface; ++i) { MFace *f= bvh->faces + faces[i]; @@ -713,7 +732,8 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, if(node->flag & PBVH_UpdateNormals) { int i, *verts, totvert; - BLI_pbvh_node_get_verts(node, &verts, &totvert); + verts= node->vert_indices; + totvert= node->uniq_verts; for(i = 0; i < totvert; ++i) { const int v = verts[i]; @@ -754,6 +774,9 @@ static void pbvh_update_BB_redraw(PBVH *bvh, PBVHNode **nodes, /* don't clear flag yet, leave it for flushing later */ update_node_vb(bvh, node); + if((flag & PBVH_UpdateOriginalBB) && (node->flag & PBVH_UpdateOriginalBB)) + node->orig_vb= node->vb; + if((flag & PBVH_UpdateRedraw) && (node->flag & PBVH_UpdateRedraw)) node->flag &= ~PBVH_UpdateRedraw; } @@ -780,22 +803,32 @@ static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode) } } -static int pbvh_flush_bb(PBVH *bvh, PBVHNode *node) +static int pbvh_flush_bb(PBVH *bvh, PBVHNode *node, int flag) { int update= 0; /* difficult to multithread well, we just do single threaded recursive */ if(node->flag & PBVH_Leaf) { - update= (node->flag & PBVH_UpdateBB); - node->flag &= ~PBVH_UpdateBB; + if(flag & PBVH_UpdateBB) { + update |= (node->flag & PBVH_UpdateBB); + node->flag &= ~PBVH_UpdateBB; + } + + if(flag & PBVH_UpdateOriginalBB) { + update |= (node->flag & PBVH_UpdateOriginalBB); + node->flag &= ~PBVH_UpdateOriginalBB; + } + return update; } else { - update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset); - update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset + 1); + update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset, flag); + update |= pbvh_flush_bb(bvh, bvh->nodes + node->children_offset + 1, flag); - if(update) + if(update & PBVH_UpdateBB) update_node_vb(bvh, node); + if(update & PBVH_UpdateOriginalBB) + node->orig_vb= node->vb; } return update; @@ -806,24 +839,25 @@ void BLI_pbvh_update(PBVH *bvh, int flag, float (*face_nors)[3]) PBVHNode **nodes; int totnode; - BLI_pbvh_search_gather(bvh, update_search_cb, NULL, &nodes, &totnode); + BLI_pbvh_search_gather(bvh, update_search_cb, SET_INT_IN_POINTER(flag), + &nodes, &totnode); if(flag & PBVH_UpdateNormals) pbvh_update_normals(bvh, nodes, totnode, face_nors); - if(flag & (PBVH_UpdateBB|PBVH_UpdateRedraw)) + if(flag & (PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw)) pbvh_update_BB_redraw(bvh, nodes, totnode, flag); if(flag & PBVH_UpdateDrawBuffers) pbvh_update_draw_buffers(bvh, nodes, totnode); - if(flag & PBVH_UpdateBB) - pbvh_flush_bb(bvh, bvh->nodes); + if(flag & (PBVH_UpdateBB|PBVH_UpdateOriginalBB)) + pbvh_flush_bb(bvh, bvh->nodes, flag); if(nodes) MEM_freeN(nodes); } -void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]) +void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]) { PBVHIter iter; PBVHNode *node; @@ -847,19 +881,21 @@ void BLI_pbvh_redraw_bounding_box(PBVH *bvh, float bb_min[3], float bb_max[3]) void BLI_pbvh_node_mark_update(PBVHNode *node) { - node->flag |= PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw; + node->flag |= PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw; } -void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert) +void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert, int *allvert) { - *vert_indices= node->vert_indices; - *totvert= node->uniq_verts; + if(vert_indices) *vert_indices= node->vert_indices; + if(totvert) *totvert= node->uniq_verts; + if(allvert) *allvert= node->uniq_verts + node->face_verts; } -void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int *totface) +void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int **face_vert_indices, int *totface) { - *face_indices= node->face_indices; - *totface= node->totface; + if(face_indices) *face_indices= node->face_indices; + if(face_vert_indices) *face_vert_indices= node->face_vert_indices; + if(totface) *totface= node->totface; } void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node) @@ -867,6 +903,18 @@ void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node) return node->draw_buffers; } +void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]) +{ + VecCopyf(bb_min, node->vb.bmin); + VecCopyf(bb_max, node->vb.bmax); +} + +void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]) +{ + VecCopyf(bb_min, node->orig_vb.bmin); + VecCopyf(bb_max, node->orig_vb.bmax); +} + /********************************* Raycast ***********************************/ typedef struct { @@ -874,15 +922,21 @@ typedef struct { float start[3]; int sign[3]; float inv_dir[3]; + int original; } RaycastData; /* Adapted from here: http://www.gamedev.net/community/forums/topic.asp?topic_id=459973 */ -static int ray_aabb_intersect(PBVHNode *node, float bb_min[3], float bb_max[3], void *data_v) +static int ray_aabb_intersect(PBVHNode *node, void *data_v) { RaycastData *ray = data_v; - float bbox[2][3]; + float bb_min[3], bb_max[3], bbox[2][3]; float tmin, tmax, tymin, tymax, tzmin, tzmax; + if(ray->original) + BLI_pbvh_node_get_original_BB(node, bb_min, bb_max); + else + BLI_pbvh_node_get_BB(node, bb_min, bb_max); + VecCopyf(bbox[0], bb_min); VecCopyf(bbox[1], bb_max); @@ -918,7 +972,7 @@ static int ray_aabb_intersect(PBVHNode *node, float bb_min[3], float bb_max[3], } void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, - float ray_start[3], float ray_normal[3]) + float ray_start[3], float ray_normal[3], int original) { RaycastData rcd; @@ -929,6 +983,7 @@ void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, rcd.sign[0] = rcd.inv_dir[0] < 0; rcd.sign[1] = rcd.inv_dir[1] < 0; rcd.sign[2] = rcd.inv_dir[2] < 0; + rcd.original = original; BLI_pbvh_search_callback(bvh, ray_aabb_intersect, &rcd, cb, data); } diff --git a/source/blender/editors/sculpt_paint/paint_undo.c b/source/blender/editors/sculpt_paint/paint_undo.c index 9bc6cacbb16..05f2b565e82 100644 --- a/source/blender/editors/sculpt_paint/paint_undo.c +++ b/source/blender/editors/sculpt_paint/paint_undo.c @@ -191,10 +191,14 @@ void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFree ListBase *undo_paint_push_get_list(int type) { - if(type == UNDO_PAINT_IMAGE) - return &ImageUndoStack.current->elems; - else if(type == UNDO_PAINT_MESH) - return &MeshUndoStack.current->elems; + if(type == UNDO_PAINT_IMAGE) { + if(ImageUndoStack.current) + return &ImageUndoStack.current->elems; + } + else if(type == UNDO_PAINT_MESH) { + if(MeshUndoStack.current) + return &MeshUndoStack.current->elems; + } return NULL; } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index fd614555fcb..d307b08385b 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -108,15 +108,6 @@ * */ -/* ActiveData stores an Index into the mvert array of Mesh, plus Fade, which - stores how far the vertex is from the brush center, scaled to the range [0,1]. */ -typedef struct ActiveData { - struct ActiveData *next, *prev; - unsigned int Index; - float Fade; - float dist; -} ActiveData; - typedef enum StrokeFlags { CLIP_X = 1, CLIP_Y = 2, @@ -155,7 +146,6 @@ typedef struct StrokeCache { ViewContext *vc; Brush *brush; - short (*orig_norms)[3]; /* Copy of the mesh vertices' normals */ float (*face_norms)[3]; /* Copy of the mesh faces' normals */ float rotation; /* Texture rotation (radians) for anchored and rake modes */ int pixel_radius, previous_pixel_radius; @@ -167,6 +157,7 @@ typedef struct StrokeCache { 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 original; } StrokeCache; /* ===== OPENGL ===== @@ -206,7 +197,7 @@ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, view3d_get_object_project_mat(rv3d, ob, pmat); - BLI_pbvh_redraw_bounding_box(ob->sculpt->tree, bb_min, bb_max); + BLI_pbvh_redraw_BB(ob->sculpt->tree, bb_min, bb_max); rect->xmin = rect->ymin = INT_MAX; rect->xmax = rect->ymax = INT_MIN; @@ -280,6 +271,7 @@ typedef struct SculptUndoNode { void *node; /* only during push, not valid afterwards! */ float (*co)[3]; + short (*no)[3]; int *index; int totvert; } SculptUndoNode; @@ -329,7 +321,7 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) 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, NULL); + BLI_pbvh_update(ss->tree, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); /* not really convinced this is correct .. */ if((mmd=sculpt_multires_active(ob))) { @@ -350,28 +342,43 @@ static void sculpt_undo_free(ListBase *lb) 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); } } -static float (*sculpt_undo_push_node(SculptSession *ss, PBVHNode *node))[3] +static SculptUndoNode *sculpt_undo_get_node(SculptSession *ss, 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; +} + +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 i, totvert, *verts; + int i, totvert, allvert, *verts; - BLI_pbvh_node_get_verts(node, &verts, &totvert); + BLI_pbvh_node_get_verts(node, &verts, &totvert, &allvert); /* list is manipulated by multiple threads, so we lock */ BLI_lock_thread(LOCK_CUSTOM1); - for(unode=lb->first; unode; unode=unode->next) { - if(unode->node == node && strcmp(unode->idname, ob->id.name)==0) { - BLI_unlock_thread(LOCK_CUSTOM1); - return unode->co; - } + if((unode= sculpt_undo_get_node(ss, node))) { + BLI_unlock_thread(LOCK_CUSTOM1); + return unode; } unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); @@ -381,19 +388,44 @@ static float (*sculpt_undo_push_node(SculptSession *ss, PBVHNode *node))[3] unode->totvert= totvert; unode->maxvert= ss->totvert; /* we will use this while sculpting, is mapalloc slow to access then? */ - unode->co= MEM_mapallocN(sizeof(float)*3*totvert, "SculptUndoNode.co"); - unode->index= MEM_mapallocN(sizeof(int)*totvert, "SculptUndoNode.index"); - undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(int))*totvert); + unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co"); + unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no"); + unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); + undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert); BLI_addtail(lb, unode); BLI_unlock_thread(LOCK_CUSTOM1); /* copy threaded, hopefully this is the performance critical part */ - memcpy(unode->index, verts, sizeof(int)*totvert); - for(i=0; iindex, verts, sizeof(int)*allvert); + for(i=0; ico[i], ss->mvert[verts[i]].co) + VECCOPY(unode->no[i], ss->mvert[verts[i]].no) + } - return unode->co; + return unode; +} + +static void sculpt_undo_push_begin(SculptSession *ss, char *name) +{ + undo_paint_push_begin(UNDO_PAINT_MESH, name, + sculpt_undo_restore, sculpt_undo_free); +} + +static void sculpt_undo_push_end(SculptSession *ss) +{ + 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; + } + } + + undo_paint_push_end(UNDO_PAINT_MESH); } /************************ Looping Over Verts in a BVH Node *******************/ @@ -422,7 +454,7 @@ static void sculpt_node_verts_init(Sculpt *sd, SculptSession *ss, vd->mvert= ss->mvert; vd->origvert= origvert; vd->i= -1; - BLI_pbvh_node_get_verts(node, &vd->verts, &vd->totvert); + BLI_pbvh_node_get_verts(node, &vd->verts, &vd->totvert, NULL); } static int sculpt_node_verts_next(SculptVertexData *vd) @@ -628,14 +660,16 @@ typedef struct { } SculptSearchSphereData; /* Test AABB against sphere */ -static int sculpt_search_sphere_cb(PBVHNode *node, - float bb_min[3], float bb_max[3], void *data_v) +static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) { SculptSearchSphereData *data = data_v; float *center = data->ss->cache->location, nearest[3]; - float t[3]; + float t[3], bb_min[3], bb_max[3]; int i; + //BLI_pbvh_node_get_original_BB(node, bb_min, bb_max); + 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]; @@ -682,7 +716,6 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], cons /* 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) { - Brush *brush = paint_brush(&sd->paint); 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}; @@ -696,24 +729,30 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] #pragma omp parallel for private(n) schedule(static) for(n=0; nflag & BRUSH_ANCHORED) { + if(unode && ss->cache->original) { while(sculpt_node_verts_next(&vd)) - add_norm_if(out_dir, nout, nout_flip, cache->orig_norms[vd.index]); + add_norm_if(out_dir, nout, nout_flip, unode->no[vd.i]); } else { while(sculpt_node_verts_next(&vd)) add_norm_if(out_dir, nout, nout_flip, ss->mvert[vd.index].no); } - /* we sum per node and add together later for threads */ - #pragma omp critical - VecAddf(out, out, nout); - VecAddf(out_flip, out_flip, nout_flip); + { + /* we sum per node and add together later for threads */ + #pragma omp critical + VecAddf(out, out, nout); + VecAddf(out_flip, out_flip, nout_flip); + } } if (out[0]==0.0 && out[1]==0.0 && out[2]==0.0) { @@ -875,7 +914,7 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t { Brush *brush = paint_brush(&sd->paint); float bstrength= ss->cache->bstrength; - float grab_delta[3], (*origco)[3]; + float grab_delta[3]; int n; VecCopyf(grab_delta, ss->cache->grab_delta_symmetry); @@ -883,8 +922,11 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t #pragma omp parallel for private(n) schedule(static) for(n=0; nco; sculpt_node_verts_init(sd, ss, nodes[n], origco, &vd); while(sculpt_node_verts_next(&vd)) { @@ -921,9 +963,11 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int #pragma omp parallel for private(n) schedule(static) for(n=0; nco; sculpt_node_verts_init(sd, ss, nodes[n], NULL, &vd); while(sculpt_node_verts_next(&vd)) { @@ -1422,8 +1466,6 @@ static float unproject_brush_radius(ViewContext *vc, float center[3], float offs static void sculpt_cache_free(StrokeCache *cache) { int i; - if(cache->orig_norms) - MEM_freeN(cache->orig_norms); if(cache->face_norms) MEM_freeN(cache->face_norms); if(cache->mats) @@ -1479,21 +1521,20 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte /* Make copies of the mesh vertex locations and normals for some tools */ if(brush->flag & BRUSH_ANCHORED) { - cache->orig_norms= MEM_mallocN(sizeof(short) * 3 * ss->totvert, "Sculpt orig norm"); - for(i = 0; i < ss->totvert; ++i) { - cache->orig_norms[i][0] = ss->mvert[i].no[0]; - cache->orig_norms[i][1] = ss->mvert[i].no[1]; - cache->orig_norms[i][2] = ss->mvert[i].no[2]; - } - if(ss->face_normals) { float *fn = ss->face_normals; cache->face_norms= MEM_mallocN(sizeof(float) * 3 * ss->totface, "Sculpt face norms"); for(i = 0; i < ss->totface; ++i, fn += 3) VecCopyf(cache->face_norms[i], fn); } + + cache->original = 1; } + if(ELEM3(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE)) + if(!(brush->flag & BRUSH_ACCUMULATE)) + cache->original = 1; + cache->rotation = 0; cache->first_time = 1; } @@ -1601,15 +1642,47 @@ typedef struct { float *ray_start, *ray_normal; int hit; float dist; + int original; } SculptRaycastData; void sculpt_raycast_cb(PBVHNode *node, void *data_v) { SculptRaycastData *srd = data_v; MVert *vert = srd->ss->mvert; - int i, totface, *faces; + int i, totface, *faces, *face_verts; + + if(srd->original && srd->ss->cache) { + SculptUndoNode *unode; - BLI_pbvh_node_get_faces(node, &faces, &totface); + unode= sculpt_undo_get_node(srd->ss, node); + + if(unode) { + /* intersect with coordinates from before we started stroke */ + BLI_pbvh_node_get_faces(node, &faces, &face_verts, &totface); + + for(i = 0; i < totface; ++i) { + MFace *f = srd->ss->mface + faces[i]; + /*if(face_verts[i*4 + 0] >= unode->totvert) abort(); + if(face_verts[i*4 + 1] >= unode->totvert) abort(); + if(face_verts[i*4 + 2] >= unode->totvert) abort(); + if(f->v4 && face_verts[i*4 + 3] >= unode->totvert) abort();*/ + + if(ray_face_intersection(srd->ray_start, srd->ray_normal, + unode->co[face_verts[i*4+0]], + unode->co[face_verts[i*4+1]], + unode->co[face_verts[i*4+2]], + f->v4? unode->co[face_verts[i*4+3]]: NULL, + &srd->dist)) { + srd->hit = faces[i]; + } + } + + return; + } + } + + /* intersect with current coordinates */ + BLI_pbvh_node_get_faces(node, &faces, NULL, &totface); for(i = 0; i < totface; ++i) { MFace *f = srd->ss->mface + faces[i]; @@ -1631,6 +1704,8 @@ void sculpt_raycast_cb(PBVHNode *node, void *data_v) int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2]) { ViewContext *vc = paint_stroke_view_context(stroke); + SculptSession *ss= vc->obact->sculpt; + StrokeCache *cache= ss->cache; float ray_start[3], ray_normal[3]; float mval[2] = {mouse[0] - vc->ar->winrct.xmin, mouse[1] - vc->ar->winrct.ymin}; @@ -1643,8 +1718,9 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou srd.ray_normal = ray_normal; srd.dist = FLT_MAX; srd.hit = -1; - BLI_pbvh_raycast(vc->obact->sculpt->tree, sculpt_raycast_cb, &srd, - ray_start, ray_normal); + srd.original = (cache)? cache->original: 0; + BLI_pbvh_raycast(ss->tree, sculpt_raycast_cb, &srd, + ray_start, ray_normal, srd.original); VecCopyf(out, ray_normal); VecMulf(out, srd.dist); @@ -1713,7 +1789,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) int i; /* Restore the mesh before continuing with anchored stroke */ - if((brush->flag & BRUSH_ANCHORED) && cache->orig_norms) { + if(brush->flag & BRUSH_ANCHORED) { ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); SculptUndoNode *unode; @@ -1721,17 +1797,14 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) for(unode = lb->first; unode; unode = unode->next) { float (*co)[3]= unode->co; + short (*no)[3]= unode->no; int *index= unode->index; int totvert= unode->totvert; - for(i = 0; i < totvert; ++i) + for(i = 0; i < totvert; ++i) { VECCOPY(ss->mvert[index[i]].co, co[i]); - } - - for(i = 0; i < ss->totvert; ++i) { - ss->mvert[i].no[0] = cache->orig_norms[i][0]; - ss->mvert[i].no[1] = cache->orig_norms[i][1]; - ss->mvert[i].no[2] = cache->orig_norms[i][2]; + VECCOPY(ss->mvert[index[i]].no, no[i]); + } } if(ss->face_normals) { @@ -1796,8 +1869,7 @@ static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent sculpt_update_cache_invariants(sd, ss, C, op); - undo_paint_push_begin(UNDO_PAINT_MESH, sculpt_tool_name(sd), - sculpt_undo_restore, sculpt_undo_free); + sculpt_undo_push_begin(ss, sculpt_tool_name(sd)); return 1; } @@ -1824,13 +1896,12 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) /* Finished */ if(ss->cache) { - // Sculpt *sd = CTX_data_tool_settings(C)->sculpt; - sculpt_cache_free(ss->cache); ss->cache = NULL; - undo_paint_push_end(UNDO_PAINT_MESH); - // XXX ED_undo_push(C, sculpt_tool_name(sd)); + sculpt_undo_push_end(ss); + + BLI_pbvh_update(ss->tree, PBVH_UpdateOriginalBB, NULL); } } @@ -1868,8 +1939,6 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) sculpt_flush_update(C); sculpt_cache_free(ss->cache); - // XXX ED_undo_push(C, sculpt_tool_name(sd)); - return OPERATOR_FINISHED; } diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 1bbccd20486..c8fc14ca0f0 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -79,12 +79,13 @@ typedef struct Brush { #define BRUSH_JITTER_PRESSURE 16 /* was BRUSH_RAD_PRESSURE */ #define BRUSH_SPACING_PRESSURE 32 #define BRUSH_FIXED_TEX 64 -#define BRUSH_RAKE 128 -#define BRUSH_ANCHORED 256 -#define BRUSH_DIR_IN 512 -#define BRUSH_SPACE 1024 -#define BRUSH_SMOOTH_STROKE 2048 -#define BRUSH_PERSISTENT 4096 +#define BRUSH_RAKE 128 +#define BRUSH_ANCHORED 256 +#define BRUSH_DIR_IN 512 +#define BRUSH_SPACE 1024 +#define BRUSH_SMOOTH_STROKE 2048 +#define BRUSH_PERSISTENT 4096 +#define BRUSH_ACCUMULATE 8192 /* Brush.sculpt_tool */ #define SCULPT_TOOL_DRAW 1 diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index e9744c7f5ed..714526eb280 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -273,6 +273,11 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_PERSISTENT); RNA_def_property_ui_text(prop, "Persistent", "Sculpts on a persistent layer of the mesh."); RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "use_accumulate", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ACCUMULATE); + RNA_def_property_ui_text(prop, "Accumulate", "Accumulate stroke dabs on top of each other."); + RNA_def_property_update(prop, 0, "rna_Brush_update"); /* not exposed in the interface yet prop= RNA_def_property(srna, "fixed_tex", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From 7fe52eedba00a3008d56ad0d689ed27fcf658220 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 10 Nov 2009 03:45:52 +0000 Subject: Removed an unused function and changed the VBO functions to use the ARB name for consistency with the rest of the file. --- source/blender/gpu/intern/gpu_buffers.c | 57 +++++++++------------------------ 1 file changed, 16 insertions(+), 41 deletions(-) diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 14f2c1b6d5b..c3d9e32036c 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -392,31 +392,6 @@ typedef struct { unsigned short tot_tri; } GPU_Buffers; -void GPU_update_buffers2(void *buffers_v, MVert *mvert, - int *vert_indices, int totvert) -{ - GPU_Buffers *buffers = buffers_v; - VertexBufferFormat *vert_data; - int i; - - vert_data = MEM_callocN(sizeof(VertexBufferFormat) * totvert, "bad"); - - for(i = 0; i < totvert; ++i) { - MVert *v = mvert + vert_indices[i]; - VertexBufferFormat *out = vert_data + i; - - VecCopyf(out->co, v->co); - memcpy(out->no, v->no, sizeof(short) * 3); - } - - glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); - glBufferData(GL_ARRAY_BUFFER, - sizeof(VertexBufferFormat) * totvert, - vert_data, GL_STATIC_DRAW); - - MEM_freeN(vert_data); -} - void GPU_update_buffers(void *buffers_v, MVert *mvert, int *vert_indices, int totvert) { @@ -425,11 +400,11 @@ void GPU_update_buffers(void *buffers_v, MVert *mvert, int i; /* Build VBO */ - glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); - glBufferData(GL_ARRAY_BUFFER, + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(VertexBufferFormat) * totvert, - NULL, GL_STATIC_DRAW); - vert_data = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); + NULL, GL_STATIC_DRAW_ARB); + vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); for(i = 0; i < totvert; ++i) { MVert *v = mvert + vert_indices[i]; @@ -438,7 +413,7 @@ void GPU_update_buffers(void *buffers_v, MVert *mvert, VecCopyf(out->co, v->co); memcpy(out->no, v->no, sizeof(short) * 3); } - glUnmapBuffer(GL_ARRAY_BUFFER); + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); //printf("node updated %p\n", buffers_v); } @@ -459,13 +434,13 @@ void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, tottri += mface[face_indices[i]].v4 ? 2 : 1; /* Generate index buffer object */ - glGenBuffers(1, &buffers->tri_buf); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers->tri_buf); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, - sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW); + glGenBuffersARB(1, &buffers->tri_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->tri_buf); + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB); /* Fill the triangle buffer */ - tri_data = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); + tri_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); for(i = 0; i < totface; ++i) { MFace *f = mface + face_indices[i]; int v[3] = {f->v1, f->v2, f->v3}; @@ -491,10 +466,10 @@ void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, v[2] = f->v3; } } - glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); /* Build VBO */ - glGenBuffers(1, &buffers->vert_buf); + glGenBuffersARB(1, &buffers->vert_buf); GPU_update_buffers(buffers, mvert, vert_indices, totvert); buffers->tot_tri = tottri; @@ -506,8 +481,8 @@ void GPU_draw_buffers(void *buffers_v) { GPU_Buffers *buffers = buffers_v; - glBindBuffer(GL_ARRAY_BUFFER, buffers->vert_buf); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers->tri_buf); + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->tri_buf); glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), 0); glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)12); @@ -520,8 +495,8 @@ void GPU_free_buffers(void *buffers_v) if(buffers_v) { GPU_Buffers *buffers = buffers_v; - glDeleteBuffers(1, &buffers->vert_buf); - glDeleteBuffers(1, &buffers->tri_buf); + glDeleteBuffersARB(1, &buffers->vert_buf); + glDeleteBuffersARB(1, &buffers->tri_buf); MEM_freeN(buffers); } -- cgit v1.2.3 From a1c8d9215151f4dd5f6af27f6bbb5ca426f0ba41 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 21 Nov 2009 17:22:03 +0000 Subject: Sculpt branch: Corrected the calculation of the center of the flatten effect. --- source/blender/editors/sculpt_paint/sculpt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 4b63a388f76..763ef401217 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1056,6 +1056,7 @@ static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { if(vd.dist > outer_dist[i]) { outer_index[i] = vd.index; + outer_dist[i] = vd.dist; break; } } -- cgit v1.2.3 From e65fee2f6595494ba592366c947b47dee3b718d9 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 21 Nov 2009 21:34:00 +0000 Subject: Sculpt branch: Fixed grab brush, was creating holes in the mesh due to uninitialized values. --- source/blender/editors/sculpt_paint/sculpt.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 763ef401217..1f230b5cd65 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -153,7 +153,7 @@ typedef struct StrokeCache { int grab_active_totnode[8]; float grab_active_location[8][3]; float grab_delta[3], grab_delta_symmetry[3]; - float old_grab_location[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 */ @@ -932,8 +932,8 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t while(sculpt_node_verts_next(&vd)) { const float fade = tex_strength(ss, brush, origco[vd.i], vd.dist)*bstrength; const float add[3]= {vd.co[0]+fade*grab_delta[0], - vd.co[1]+fade*grab_delta[1], - vd.co[2]+fade*grab_delta[2]}; + vd.co[1]+fade*grab_delta[1], + vd.co[2]+fade*grab_delta[2]}; sculpt_clip(sd, ss, vd.co, add); ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; @@ -1545,7 +1545,6 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P { StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - float grab_location[3]; int dx, dy; @@ -1598,8 +1597,12 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P /* Find the grab delta */ if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - // XXX: view3d_unproject(cache->mats, grab_location, cache->mouse[0], cache->mouse[1], cache->depth); - initgrabz(cache->vc->rv3d, cache->true_location[0], cache->true_location[1], cache->true_location[2]); + float grab_location[3]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + 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) -- cgit v1.2.3 From cb255ba32481c9a7491a0ce109932d24d6b12bc2 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 23 Nov 2009 14:51:05 +0000 Subject: First of 2.5 alpha0 release commit --- release/VERSION | 2 +- release/datafiles/splash.png | Bin 197165 -> 202316 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/release/VERSION b/release/VERSION index 8821853a13d..e1cbf32a280 100644 --- a/release/VERSION +++ b/release/VERSION @@ -1 +1 @@ -2.5-devel +2.5-alpha0 diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png index e35a26a2c23..da4f1e1b2f1 100644 Binary files a/release/datafiles/splash.png and b/release/datafiles/splash.png differ -- cgit v1.2.3 From 6b56738089749c0b5e82cc6c66c399b3015ec5c7 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 23 Nov 2009 14:51:50 +0000 Subject: 2.5 alpha0 splash image, by david revoy! Now will check if we can call for ahoy... --- source/blender/editors/datafiles/splash.png.c | 8803 ++++++++++++++++++------- 1 file changed, 6324 insertions(+), 2479 deletions(-) diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index bbce480ecba..73a11f2fdc6 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,2483 +1,6328 @@ /* DataToC output of file */ -int datatoc_splash_png_size= 79258; +int datatoc_splash_png_size= 202316; char datatoc_splash_png[]= { -255,216,255,224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 72, 0, 72, 0, 0,255,225, 0, 22, 69,120, -105,102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,255,219, 0, 67, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,219, 0, 67, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,255,192, 0, 17, - 8, 1, 15, 1,245, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1,255,196, 0, 31, 0, 0, 1, 3, 5, 1, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 7, 10, 3, 5, 6, 8, 9, 2, 1, 11,255,196, 0,103, 16, 0, 1, 3, 3, 2, 4, 3, 4, 6, 4, 7, - 11, 5, 9, 13, 9, 1, 2, 3, 4, 5, 6, 17, 0, 7, 8, 18, 33, 49, 19, 65, 81, 9, 20, 34, 97, 10, 21,113,129,145,240, 35, - 50,161,193, 22, 23, 24, 66,177,209,225, 25, 26, 36, 40, 51, 56, 73, 82, 98,232,241, 72,104,105,136,168, 41, 52, 57, 67, 84, 88, -120,150,178, 37, 38, 68, 83, 87,115,130,135,147,152,181,200,210, 54, 89, 99,114,146,184,213,214,215,255,196, 0, 29, 1, 0, 0, - 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 6, 7, 1, 4, 8, 9,255,196, 0, 80, 17, 0, 2, 1, - 2, 4, 4, 3, 4, 6, 7, 5, 7, 0, 7, 9, 0, 1, 2, 3, 4, 17, 0, 5, 18, 33, 6, 19, 49, 65, 7, 34, 81, 20, 97,113, -240, 8, 35, 50,129,161,209, 21, 66, 82,145,177,193,210, 36, 51, 98,162,225, 9, 67, 83, 84,114,130,241, 52, 56, 68, 85,116,148, -211, 22, 23, 24,115,131,146,147,180,181,255,218, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0,159,198,150,150,150,134, 6, 22, -150,150,190,100,122,143,199, 67, 3, 31,116,203,220, 60, 68,108,181,171,123, 70,219,170,254,224,209, 41,183,140,167, 25,101, 20, -135,189,241, 73,101,249, 28,165,136,243,170, 77, 69, 84, 74,116,149,133,163,149,185, 15,180,226,185,211,132,158, 97,151,159, 35, -212,126, 35, 92,108,227, 63,131, 43,145, 85,251,143,120, 54,213, 18,235,236, 86, 37,191, 87,185,237,148,243, 72,170, 67,146,224, - 11,147, 81,162,128, 57,167, 69, 42, 5, 75,143,213,230,242, 75, 94, 34, 50,148, 86,158, 42,113, 39, 27,112,159, 14, 38,119,193, - 60, 55, 23, 19,212, 81,204,173, 89, 4,134, 67, 34,209,128,198, 87,130, 56,138,188,146, 2, 0,242,151, 49,169, 50,114,101, 1, -128,179,188, 40,225,158, 7,226,222, 37,108,143,142, 56,150,110, 23,166,172,133,150,142,120,196, 98, 54,173, 44,162, 36,158, 73, - 85,146, 56,200, 44,124,193, 4,140, 4,124,232,139, 41, 61,145,109,196, 58,132,173,181, 37,104, 80,200, 82, 72, 32,131,243, 26, -247,174, 11,240,211,199, 61,219,180,206, 66,179, 55, 36, 79,186,108,118, 29, 68, 54,166, 58, 92,122,228,181,217, 65, 13, 22,219, - 47, 30,106,157, 61,174, 95,242, 14, 16,243, 97, 37, 45, 44,128,150,181,219,219, 46,247,181,247, 6,129, 2,231,180, 43, 48,171, -148,106,139, 65,216,211, 33, 58, 29, 65,232, 57,219,113, 63,172,203,233, 86, 66,219, 88, 74,208,160, 66,146, 14,147,240,211,197, -174, 19,241, 67, 46, 53, 25, 37, 79,179,102,180,202, 13, 86, 95, 49, 2,166,156,244, 38,219, 9, 97,213,178,207, 29,212,220, 7, - 17,201,120,194,158, 38,248, 69,197,190, 22,102, 66,159, 60,166,246,156,166,165,136,165,204, 33, 4,210,212,142,160, 95,115, 12, -218,119,104, 36,179, 11, 18,134, 72,237, 33,202,244,180,180,181,103,226,173,194,210,210,210,208,192,194,210,210,210,208,192,194, -210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210, -215, 13,125,163,254,220, 13,158,224,130,240,159,178,214, 5,156,238,249,111,173, 45,150, 21,116, 81,219,173,155,110,200,219,199, - 39,194, 98,116, 8,215, 53,192,138,116,167,170,213,245, 68,151, 17,255, 0,171, 32,177,132, 50,233, 76,186,132, 39,249, 26, 91, -214, 67,195,217,207, 19,102, 9,149,228,116, 47, 95, 90,224,177, 85, 42,161, 80, 16, 11,200,238, 85, 35, 64, 72, 5,157,128,185, - 10, 46,204, 1, 98,226, 46, 38,200,248, 79, 45,124,219,136, 51, 20,203,104, 81,130, 6, 96,204,206,237,114,169, 28,104, 26, 73, - 28,128, 78,148, 86, 58, 85,152,128,170,196,119, 43, 75, 80,124, 63, 73,159,141,131, 84, 83,195,103, 56, 94, 20, 82,242,212,138, -127,240,103,117, 13, 77, 44, 20,171,195,105, 85,127,227,115,194, 91,193,101, 37, 75, 16,146, 20, 1, 1,180,147,204, 58,247,192, - 39,183,219,102,184,168,189,173,253,156,222,171, 32,236, 38,233,221, 18,227,210,109, 58,154,110, 6,238, 13,182,188,107,111,132, -162, 53, 29,138,204,184,113, 36,218,181,233,114, 84, 26,131, 10, 91, 82, 88,144,233, 68,118,234,107,152,244,120,206,205,115,175, - 7,248,243, 35,161,151, 49,169,202, 86,166,150,157, 75,200,105,230,142,102,141, 64,185,102,140, 17, 33, 10, 55, 98,138,225, 64, - 44,108,160,156, 64,178, 47, 27,188, 58,226, 12,194, 28,174,151, 57,106, 90,186,150, 9, 16,169,134, 72, 82, 71, 38,202,171, 35, - 3, 26,179, 27, 5, 18, 50, 22, 36, 42,130,196, 12, 72, 35, 75, 94, 80,180,173, 41, 90, 8, 82, 84, 1, 73, 29, 65, 7,204, 29, -122,213, 97,139,107, 11, 75, 75, 94, 29,117,182, 91,113,231,156, 67, 76,180,133, 56,235,174, 41, 40,109,182,208,146,165,184,226, -212, 64, 66, 2, 65, 36,147,128, 6, 78,134, 6, 61,233,107,140, 28, 63,123, 94,236,238, 39,253,160,119,151, 9,219, 61,108,210, - 43,219, 63,103, 88,247, 29, 77,157,231, 77, 86, 91,178,239, 43,178,215,171, 80,169,213, 69,219, 84,214,227,166, 57,178,252,106, -195,236,197,150, 92,117, 83,126,173,247,214, 23,238,178, 89, 3,231,181,219,218,129,127,123, 56, 15, 15,137,177,182,194,209,220, -115,188,169,221, 85, 85, 13,213, 86,172,210,254,165,254, 47, 78,219,136, 94,225,245, 74, 79,188,123,199,240,222, 95,139,226,126, -167,184,183,201,250,202,212,182, 30, 7,226,105,179,220,183,134,191, 71,242,179,156,218, 1, 81, 12, 50, 72,136,121, 70, 41, 38, - 5,203, 48, 17,183, 46, 39, 37, 28,171,130, 52,149, 12,109,136, 92,222, 32,240,164, 60, 61,154,241, 87,233, 46,118, 69,147, 78, -105,167,158, 56,228,145,121,162,104,160, 34, 48,170, 90, 84,230,202,138, 36,140, 50, 48, 58,149,138,139,227,180, 26, 90,134, 23, -247,207,155,251,255, 0,155, 30,209,127,235, 93,227,255, 0,232,210,254,249,243,127,127,243, 99,218, 47,253,107,188,127,253, 26, -152,127,247, 29,226, 55,254,233,139,255, 0,155,166,255, 0,234, 98, 19,255, 0,226, 11,194,239,253,245, 55,255, 0, 37, 87,255, - 0,210,196,207,116,181,166,252, 3,241, 57, 89,226,255, 0,133,157,171,223,235,138,219,165,218, 85,203,250,153, 89,157, 81,183, -232,178,101,204,165,211,157,166, 93, 53,202, 3,109,195,147, 56,120,175, 33,108, 82,154,113, 69,125, 66,221, 80, 29, 0,214,228, -106,172,174,163,168,203,171,107, 50,250,180, 17,213, 80, 75, 36, 50,168, 33,128,146, 39, 40,224, 48, 36, 16, 25, 72,184, 36, 30, -160,219, 22,246, 95, 93, 77,154, 80, 80,230, 84,110,100,163,204, 97,138,120,152,130,165,163,153, 22, 68, 37, 88, 6, 82, 85,129, - 32,128, 71, 66, 47,133,165,165,165,173, 92,110, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105, -105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,105,104, 96, 97,105,105,107, - 3,168,110, 45, 6, 60,249,116,122, 75, 21,123,182,183, 5,239,118,155, 75,181, 41,174, 85, 12, 9, 92,174,168,197,170, 85,150, -166,169,212,105, 67,194, 32,183, 54,108,117,130,164,229, 32, 40, 29, 12, 12,103,154, 90,104,166,239, 21, 38,143, 91,167,219,119, - 13,169,123,209, 43,245,152, 83, 39,208,233, 9,165, 83, 46,121,213,134, 41,225,159,126, 83, 12, 88,181,170,177,130,134,188, 97, -151, 38,251,171, 42,228, 95, 35,139,228, 86, 47,143, 95, 53, 54,130,157,111,109,119, 6, 76, 70,208, 28,118, 91, 44, 90, 40, 45, -183,221,106, 77, 58, 85,222,220,217, 43, 74,114, 75,108,197,113,213, 99,149,182,214,178, 18, 70, 6, 28, 29, 45, 88,232, 23, 37, - 18,231,136,236,202, 36,244, 76,110, 60,135, 33,205, 97, 77,191, 18,125, 54,115, 56, 47, 83,234,212,201,141, 55, 38,149, 80, 64, - 82, 10,216,146,211, 78,164, 45, 36,160, 5, 2,111,154, 24, 24, 90, 90, 90, 90, 24, 24, 90, 90, 90, 90, 24, 24, 99,120,143,168, -110,117, 51,103,174,233, 91, 65, 29,201, 23,200,138,203,116,255, 0,119,109,167,170, 12, 69,114, 67,104,169, 72,165, 50,240, 40, -118,166,136, 69,226,200, 32,144,175,137, 0,184, 17,174, 20, 60,223, 25, 18, 95,121,199,215,190,238, 72, 83,138, 83,202, 92,139, -187,156,186,165, 18,178,175,210,126,183, 54,117, 36,133, 36, 40, 16,160, 8, 61, 8, 35, 32,253,218,208,158, 40, 56,198,176, 54, - 85,185,246,165,163, 22,151,119,238,105, 66,153, 92, 54,212,151,168,214,187,171, 78, 67,245,249, 12, 43,244,179, 83,148,148,194, -109, 65,206,185,121,108,167,148, 47,157, 60,116,224,190, 27,204, 99,139,140, 56,175,196,124,203,131,114,188,170, 14, 66,193, 75, - 56, 17, 77, 38,167,144,114, 96,182,185, 42,165,190,146, 16, 51, 50, 70,132,233, 84,102,199, 72,120, 15,198,220, 77,151, 75, 55, - 7,112,151,134,185,103, 26,102,153,172,252,246,158,170, 2,101,134, 61, 49,198,121,211,223, 68,116,145, 17,172, 23,210,170,242, - 53,139, 51,170,227,143,215, 53,223,196,133,153,238,191,194,219,167,117,237,195, 59,196,247, 52,214,107,151, 20, 5,201, 13, 99, -196, 83, 45,200,148,149, 45, 41, 42, 0,144, 49,147,140,231, 88,195, 91,199,188,114, 93,109,134, 55, 39,112,100, 60,226,194, 90, -101,171,158,186,235,142, 44,159,133, 40,109, 50,201, 90,179,216, 0, 78,177,155,198,244,186,247, 18,225,151,114, 93,181,137,181, -218,221, 69,209,207, 34, 82,202,131,105, 39, 13, 68,134,194,112,136,145, 17,156, 33,166,210,148, 36,118, 25, 36,157,221,188, 47, - 45,145,246,104,112,186,239, 19, 59,221, 70, 93,217,123,214,159,133, 73,179,173, 8,106,140,213,106,227,187, 42,177, 94,153, 78, -181,233, 18, 37,182,177, 72,167,177, 22, 51,207,212,167,150,214, 25,110, 59,132, 37,229,170, 52,119,121, 7,194,159, 15,120,203, -198,222, 60,159,134,248, 23,136, 51,106,108,146, 23, 75,212, 85,212,201, 45, 66,164,141,162, 37, 49,195, 36, 81, 52,243,178,187, - 44, 97,214, 56,145, 92,188,204,177,150,110,196,241,107,196,110, 10,240, 51,128, 32,226,126, 62,225,252,162,167, 58,153, 28,251, - 61, 37, 52,112,211, 51, 70,161,230, 97, 36,209,203, 42,211,192,172,138,210, 20,105, 37,118,141, 82, 21,105, 2,174,163, 72,218, -189,222,170,162, 69,126, 85,135,123,206, 76,183, 23, 46, 77, 77,218, 13, 81,227, 33,199,137, 91,146, 29,120,199, 37,106, 82,148, - 73, 81,238, 73, 58,203,118, 91,127, 55, 47,135,155,149,114,173,233, 18, 19, 1,201, 8, 23, 5,159, 86, 18, 27,166,212,210,217, -229, 80,122, 50,192, 84, 10,130, 81,144,135,219, 1,196,246, 80, 91,101, 77,171,150, 85, 47,164,143,198, 35,151, 97,170, 81,118, -183, 97,169, 54,130, 37,133,179,102, 61,111, 92, 53, 14,120, 40, 95,195, 22, 93,192,171,133,185, 46, 62,166,176, 22,235, 65,161, -204, 74,144,218, 6, 18, 59,121,195,151, 16, 59, 31,237,121,225,250,232,188,108,251, 74, 62,216,241, 35,181,232,138,205,221,106, - 37,246,165,173,185,210, 97,201,126,152,244, 42,139,108,182,186,213,159, 85, 16,103, 34, 50,222,109, 50, 33,200,136,182, 92, 7, -194, 14,201,234,207, 16,126,128,222, 38,248, 71,147,143, 16,120, 59,138,106, 38,207, 50,127,174,217,162, 46,210, 29,204,124,216, -156,104,105,141,227, 9, 42, 77, 79, 51,176,134, 89, 64,146,237,200,222, 28,127,180, 43,194,191, 25, 51,195,225,207, 24,112,181, - 60, 89, 30,113,245, 32, 50,202, 17, 98, 29, 36, 17, 76,191, 88,176,139, 72,205, 19,193, 81, 10, 35, 77, 20, 76, 99, 32,118, 27, - 96,248,137,177,183,250,218, 21,123,106, 66,161,213,225, 37,166,235,214,228,213,160, 84,232,242,156, 78, 64,113, 41, 56,147, 13, -101, 43,240,159, 71,192,224, 65, 7,149,105, 90, 19,106,226, 39,139,222, 29,184, 78,110,198,145,196, 38,229, 82,246,206, 6,226, -214, 42, 20, 27, 86,171, 91,137, 84, 93, 38, 85, 78,151, 17,153,211, 89,157, 82,131, 5,214,105, 13,162, 43,237,171,196,148,182, - 91, 86, 72, 74,138,129, 26,224,102,199,110,133,115, 99,247, 86,135,116,199, 84,134, 26,129, 81,250,170,231,166, 5,148, 9,180, -119, 95, 17,234,144,223,108, 28, 41,230,185, 75,173,103, 33, 47,197, 65,236, 8, 56,167,210,118,170,198,173,240,251,194, 53, 82, - 35,168,126, 52,237,202,189, 36,178,235,106, 10,109,214,222,179,169,238, 54,226, 20, 58, 41, 37, 10, 4, 31, 67,171, 87,232,151, -199,112,248,245, 61, 22, 67,196,119,203,243,234, 9,141, 61,127,179,133, 66,234,105,230,150, 10,168,209,213,213, 57,175, 11,164, -177,216,133,120,223, 78,133,116, 11, 85,125, 48,120, 26,127,163,229, 30, 99,196, 92, 52, 23, 49,200,107, 97, 90,156,188, 84,150, -112,140, 42, 96,138,162,146, 87, 70, 70,147,148,147, 35,197, 32, 96, 89, 36,143, 86,182, 71, 38, 80,214, 61,247,102,238,101,169, - 68,190,118,250,231,162, 94, 86,117,203, 5,186,157, 2,229,183,106, 17,170,180, 90,196, 7, 74,146,220,186,125, 66, 35,138,110, - 83, 5, 72, 80,230, 66,136,202, 72,238, 8,214, 89,168, 64,112,175,237,189,221,253,134,225,159,102,120,123,225,163,133,105,251, -189, 82,218,155, 26, 53, 58,249,186, 43,172, 93, 53, 88,104,168, 59, 62,163, 61,244, 83, 40, 54, 52,101, 57, 18,156,216,146, 0, -149, 42, 82, 84,242,185,200,142,216, 71, 50,250, 53,193,103,210, 48,176, 55,151,114, 45,253,161,226,123,106,154,216,235,138,230, -171,179,111,210,175,154, 45,102, 69, 70,198, 98,189, 45,246,226, 66,166, 92,208, 43, 49,218,153,107, 54,228,197,120, 94,244,183, -101, 50,219,175, 32, 72, 17,218, 11,121, 61, 57,156,120, 63,198,153,119,233, 74,154,108,168,214, 80, 80, 73, 45,180,205, 3,212, -154,116,102,229,204,244,233, 33,144,107,140, 7,210, 20,181,143,217, 29,185,103, 35,241,187,128,243, 63,209, 20,149, 89,184,162, -204,179, 40,225, 7, 84, 53, 9, 74, 42, 93, 19,153, 2, 84,188, 98, 35,203,145,140,122,139,232,184,251,102,226,253,250,171,113, - 37,195,245, 6,251,107,107,171, 91,211,182, 52,173,200,122,165, 79,163, 51, 98,207,189,104, 17,110,183,106,213,101, 50,154, 93, - 53, 20, 39,167, 9, 42,157, 33, 82, 99,134, 90, 13,243,184, 95, 72, 64, 60,195, 47, 80, 32,128, 65, 4, 17,144, 71, 98, 53, 2, -158, 50, 84,211,191, 72, 26,128,243, 1, 10, 14,113, 65,195,147,232, 82, 80,159,137,193, 34,193, 91, 78,246,248,156, 5, 45,144, -174,224,164, 16,122, 13,118, 87,143, 15,111, 68, 62, 31,247, 89,238, 25,120, 83,218,134, 55,231,120,232,117, 24,214,189,203, 90, -170, 59, 86,145,107, 83,239, 39, 22, 24,122,204,183,168, 86,222, 39,222, 53,230, 36, 56,219, 82, 84,212,136,236,177, 41, 11,138, -145, 33,196, 56, 91, 91, 48,240,167, 51,118,225, 88,120,116,201,154,212,103,249,106,102, 51,243, 57,112,197, 76,172, 19, 86,169, - 89,130, 8,193,123, 6, 98, 25,182, 0, 19,182, 17,203, 60, 97,202,145, 56,190,163,137,196,121, 61, 47, 14,230,178,101,148,252, -190,100,210,213,186,151,211,162, 37, 82,237, 35, 4,185, 84, 5, 84, 92,179, 1,190, 36,133,165,168,139,220,190,218,255, 0,106, -111, 13,237, 80,239,190, 41,184, 29,183,169, 27, 89, 90,168, 69,138,228,225, 66,187,237, 23, 16,167,193,117, 20,246, 46, 35, 90, -169, 70,163, 85,156,101, 14,120, 77, 84, 34,149,172,182,172, 54, 74, 84, 7, 85, 46,223,109,143, 13, 22,231, 5,182, 47, 26,148, -171,102,247,187,237, 43,183,112,233,251, 83, 88,178, 40,166,138,205,225,100, 95, 50, 40, 85,218,228,250, 85,194,221, 66,123,108, -120, 76, 51, 65,115,145,214,150,161, 37,154,132, 89, 13, 39,195,116,242,177,215,248,105,197,180, 35, 47,120,168,226,205,105,243, - 57,189,158, 25,168,170, 33,169,137,167,177, 60,146,241,185, 8,246, 6,193,244,130, 65, 0,146, 8,196,131, 46,241, 91,131, 43, -206,100,147, 87, 77,147,212,229, 48,251, 76,240,215,211, 79, 73, 50,211,220, 14,112,142, 68, 5,227,187, 45,202,106, 32, 16, 72, - 0,223, 29,148,210,212, 92,183, 35,233, 31,162,243,160,209,233,124, 25,112,161,184,187,163,185, 51, 34, 63, 58,227,131,120, 83, -170,147,233,118,147, 44,202,113,150,152,250,163,111,196,153,119, 10,221,142, 27,116,188,153, 48,153, 96,159, 12,248,202, 37, 72, -198,248, 54,250, 69,151,109,251,190,214,214,200,241,107,178, 86,230,220,166,238,185, 96,217,113, 46,235, 45, 87, 21, 53,219, 86, -231,169,204, 77, 62,159, 26,239,181,110,153, 50, 30, 76, 37,212, 94,142,195,174,178,251, 78, 69, 46,135, 23, 29,196,133, 99,108, -248, 71,199,171, 65, 85, 94,249, 46,143, 99, 86,119,128,205, 7,180,136,210,247,113, 0,144,200, 87, 98, 84, 91, 83,129,116, 86, - 4, 95, 68,120,211,225,211,102, 52,121,116,121,233,147,219,157, 99,142,160, 83,212,123, 33,145,237,166, 51, 80, 99, 17,134,243, - 0,198,250, 99, 38,210, 50,144,109, 43, 29,120,113,198,217,109,199,157, 90, 91,105,164, 45,199, 28, 89, 9, 67,109,161, 37, 75, - 90,212,122, 37, 33, 32,146,124,128,215, 14,253,164,222,219,221,157,224, 86,233, 59, 61,101,218, 15,111, 86,249, 34,155, 14,165, - 92,161, 49, 88, 69, 18,210,176, 89,169,199,110,101, 41,155,170,176,220,103,222,151, 90,126, 19,172,190,154,124, 86,130,209, 30, - 75, 79, 63, 37,143, 17,182,220,230, 77,175,244,142, 56,132,142,220,122,222,253,112, 91,245, 86,205, 92,140,191, 79, 85,221,100, - 38,245,165, 74,102, 61, 69,151, 99,183, 46,153, 83,187,226,187, 77,174,184,128,224, 80,100, 59, 27,198, 13,148,165,214,201,230, - 8,229, 94, 22,113,190,113,150, 83,230,244,153, 69,168,170,198,168,121,147, 65, 20,147,169, 23, 6, 24,228,145, 93,245, 13,211, - 97,172, 88,173,193, 4,175,156,120,191,192, 25, 38,109, 81,146,214,231,119,174,163, 58,103,229, 65, 81, 52, 84,237,123, 17, 52, -177, 70,232,133, 78,207,185,229,155,135,210, 65, 2, 71,219, 95,199,191, 8,187,217,187,147,118, 59,104, 55,194,208,220,189,198, -166,208,234, 87, 13, 70,153,102, 59, 46,189, 76,133, 76,164,205,137, 79,158,183,238, 88, 81, 85, 78, 18, 91,151, 54, 58, 11, 41, -148,167, 73, 89, 33, 4, 37, 68,109,254,160, 19,244,127,110,123,126,214,227,115,113,175, 26,237, 82, 45, 14,212,183,182, 43,113, - 46, 74,213,102,160,164,196,131, 73,183,233, 85,139,126,167, 62,165, 57,121, 34, 52, 86, 32, 48,235,174, 30,161, 9,104,247,198, -186,103,185, 63, 72, 83,125,183,147,120, 38,237, 23,179,215,133,198,183, 45,182,164, 77, 98,145,112,222, 16,174, 10,229,197,113, -192,167, 58, 82,245,199, 30,212,183,230, 68,102,215,162, 45, 1, 42, 11,168, 75,116,161,181,165, 79,248, 14, 57,225, 53, 36,226, - 95, 8,115, 26, 94, 38,172,201,120,104, 61, 93, 6, 89, 75, 4,245, 53,117,114,195, 4, 81, 25, 67,146,100,145,185,104,163,202, - 74,160,212,224, 2, 73, 32, 18, 34,220, 41,227, 94, 89, 89,194,148, 57,247, 21,178, 81,102, 57,181,101, 69, 61, 45, 29, 20, 83, -212, 77, 48,132,160, 2, 56,151,153, 35,155,184, 12,231, 66, 18, 85, 64, 4,128,101,135,165,168,156,219,158,223, 30, 44,184,114, -221, 75,123,111,253,161,252, 36, 55,183,244, 42,247,131, 37,117,235, 78,155, 93,160, 92, 80,232,239,201, 68,119,171,244,186,109, -102,169, 54,159,121,211,227, 40, 44, 58,212, 57,113,220,230, 73, 71,139,226, 0,218,186, 89,198, 87,182,211,135, 30, 14,235, 27, - 75, 6,163,102,223, 59,171, 70,222, 93,176,167,238,197,161,117, 88, 18, 40, 31, 82,200,182,106,181, 25,180,248, 5, 70,177, 61, -135,125,225,126,226,183, 10,124, 49,200,151, 18,149,128,224, 82, 83, 20,171,240,211,140,105,171,114,250, 40,178,177,152,182,106, -143, 37, 52,148,179, 67, 60, 19,172, 66,242, 24,230, 71,208, 74, 13,202,146, 26,219,128, 70,248,152,209,120,173,192,245,116, 57, -149,124,217,177,202,215, 39,120,227,171,138,178, 9,169,234, 41,218, 83,166, 46,100, 14,156,192, 28,236, 25, 67, 45,246, 36, 29, -177,217,173,112,163,112,253,133, 28, 55, 95,188,105,212,248,162,173,202,171,215,108,187,186,163, 93,190, 47,125,152,175,202,157, - 87,160,214,183, 90,175, 85,141, 82,118,228,122,179, 46,114,165,201,181,228, 73,126,179, 50,101, 17,245, 57, 25,115, 93,105,180, - 56, 41, 5,116,160,202,240,191,237,190,220,158, 50,248,231,219, 77,158,218, 29,130,147,111,112,189, 93,145,119,193,184,247, 10, -229,165,214,170, 87,151,189,209,182,206,237,185,233,142,205,168,210,100,170,143,106, 52,237,203, 71,166, 71,110, 59,134, 83,174, -180,249, 30, 48,117,228, 33,185, 31,161, 92,200, 74,187,115, 37, 42,199,166, 64, 58, 74,170, 30, 49,240,218,181,169, 26,169,242, - 74,252,226,140, 25, 82, 41, 81,156, 65, 43,200,129, 36, 40, 91,149, 48,104,217,133,136,150, 59,130, 25, 75, 17,133,169, 38,224, -127, 20,232, 22,181,105, 35,207,242,236,146,184,136,164,154, 23, 84, 53, 16,164,110, 94, 33, 32, 83, 44, 44,178,170,155,131, 20, -182, 33,149,130,131,134,126,151,176,123, 71, 74,180, 27,176,226,237,253,162,205,158,136,126,226, 45,102,173,218, 59, 86,224,136, - 80, 27, 49, 69, 13,184, 98, 40,143,200, 0,228, 13,114,224, 99, 24,212, 4,189,180, 92, 57,109,223, 10,156,122, 93,182,174,205, -192,141,105,218,119, 45,169,102,238,133, 50,218,161,145, 14,159,102,213,171,255, 0, 88, 69,169,211,168,140,199,193,165, 66, 53, -106, 19,243,227,176,217, 74, 34,138,178, 89,140,150,163, 54,195, 77,254,136, 21, 90,173, 54,133, 75,169, 86,235, 51,225,210,168, -244,120, 19, 42,149, 90,165, 66, 67, 81, 32, 83,105,180,248,238, 75,157, 62,108,183,214,148, 70,136,204, 86, 93,113,199, 22,160, -132, 33,181, 41, 68, 0, 78,191, 57, 62, 35,175,107,151,218,161,237, 50,184, 37,109,235, 50,196, 29,229,220,202, 77,141,183,190, - 43, 14,184,170, 30,215, 90, 80,163, 80, 97,220,243, 97, 43, 10,140,219,118,133, 14,117,126,160,198, 73,109,217, 50,144,146,162, - 19,155, 39,192, 39,174,139, 62,226, 12,218,122,167,135, 34,160,161,145,235, 29,217,140, 69,217,213,208,184, 38,197,194, 71, 52, -154,236, 88, 42,184,189,156,131, 86,125, 35,211, 47,155,135,120,111, 38,167,164, 73,184,135, 50,204, 35,142,133, 17, 84, 74, 17, - 81,146, 64,132, 0, 66, 51,201, 4,122, 1, 10, 89,144,218,233,113, 61,206, 11,119, 14,189,187, 28, 40,240,239,185, 23, 75,138, -118,228,190,118, 83,107,110,250,243,171, 32,173,202,197,203, 99,208,235, 85, 53,168,134,209,146,102,205,124,159,129, 61, 79,234, -167,176,217,253, 55, 59, 75,100,210,182,231,110,237, 11, 38,133, 20, 65,162,218,246,245, 30,223,164, 66, 7,152, 68,165, 81,169, -241,233,212,232,193, 88, 25, 13,196,142,210,123, 15,213,211,141,170, 34,178, 72,102,172,170,154,158, 62, 77, 60,178, 59, 34,126, -202, 51, 18,171,255, 0,106,144, 62,236,116, 69, 12, 83,193, 69, 71, 5, 76,188,250,152, 98,141, 36,127,219,117, 64, 29,191,238, - 96, 79,223,133,168,165,123,119,125,170,238,209, 91,175,240, 39,195,117,192,235,151, 29, 77, 14, 81,120,135,190, 40, 15,243,187, - 74,135, 49, 41,105,123, 57,111, 76,138,162,181,214,165, 33,194, 46, 23, 26, 41, 49,152, 90, 40,225, 78, 63, 38,166,204, 61,237, -246,205,251, 82,224,240, 79,182,174,108,238,209, 85,161,203,226,135,116, 40,142,253, 82,227, 78, 37,255, 0,226,146,206,156,167, -161,191,184, 53, 54, 18, 8, 53,247,252, 41,108, 80, 99, 56, 82, 61,229,165,212,159, 75,177,161, 8,147,185, 93,236,136,246, 94, -213,106,214,149,199,198,255, 0, 17,212,217,179,238, 10,173,173,115,221, 27, 61, 64,185, 22,228,217,136, 85, 70,147, 62,106,247, - 98,229, 19,146,183,100,220, 18,214,234,221,164,120,203, 82,154,110, 66,170,174, 5,201,122, 11,177,110, 14, 3,225,236,179,135, -178,212,241, 23,140, 33,215, 71, 11,133,202,168,154,193,235,170,175,228,151, 73,191,212,196,192,178,146, 8, 37, 76,132, 21, 68, - 89,105, 31, 17,120,151, 54,226,108,214, 79, 12, 56, 34,126, 93,116,209,151,206, 43,214,229, 40, 41, 45,231,132, 50,145,245,242, -169, 10,202, 8, 32, 50,196, 8,105, 29,161,210,223,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199,236,141,116, 43,233, - 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,207, 95,163,211,255, 0,132, 11,255, 0,169, 75,243,255, 0,199, -236,141,116, 43,233, 74,255, 0,148,224, 99,255, 0,154,226, 91,255, 0,107, 96, 53,106,102,159,250,197,112,231,255, 0, 5, 39, -255, 0,208,175,197, 59,147,255, 0,234,195,197, 95,252,124,127,255, 0,161,150,227,167,222,201,206, 30,246, 78,244,224, 27,134, -234,253,209,181,155,125, 93,172,206,219,232,206,205,170, 85,108,219,118,161, 80,150,239,214, 85, 36,151,101, 76,151, 78, 91,146, - 29,229, 74, 71, 50,212, 78, 0,235,174,142,127, 36,254, 28,127,249, 20,218,239,253, 65,181,127,255, 0, 21,168, 67,236,206,242, -251,107,106, 27, 11,183,118,135, 14,118,230,248,218,123, 35, 96,219, 49,169,246,138,246,239,108,225, 81, 63,132, 20,246, 12,185, - 95, 92,181,113, 85,232,203,170, 93,234,124,188,224,255, 0, 4,146,236, 21, 45,180,166, 60,100, 57,144,172,147,102,189,184,158, -209,254, 22,247, 41, 54,175, 17, 19,170,123,167, 72,160, 84, 35,193,188,246,187,121,108,216, 86,109,253, 75, 99,149,165,201, 68, - 43,134, 21, 2, 5, 86,143, 93, 49, 75,106,105, 85, 86,234, 49,190, 62,117, 68, 87,136, 87,168, 78,113,225, 63, 21,230,217,158, -127, 91,147,241, 53, 5,117, 75, 84,212,207,236, 81, 87, 72,103, 68,121,153,145, 24, 4,229,164,150,101, 82,174,202,138,219,115, - 58, 98,193,200,252,101,224,252,151, 41,225,202, 12,239,133, 51, 44,186,145, 41,105, 96,246,233,178,248,197, 59,201, 28, 17,171, -186,157,124,201, 35,186,179, 6, 68,121, 25, 70,174, 95,164,237,173, 75, 62,218,177,233, 17,168, 22,157, 22,153,111,209, 33, 37, -105,135, 73,163,193,139, 77,167, 68, 67,142,173,231, 17, 26, 20, 54,144,211, 9, 83,206, 56,178, 16,144, 10,156, 82,143, 82, 78, -178, 93, 49, 28, 53,113, 19,183, 28, 85,108,189,139,190,123, 87, 80,118,125,159,125,210, 5, 74, 19,114,219,105,138,157, 46, 99, - 18, 31,167,214, 40, 85,152,204,188,226, 34,214, 96, 85,226, 78,135, 45,180, 56,227,105,126, 18,252, 55, 93,108,161,197, 62,250, -231,250,168,106, 41,170,106, 41,234,227,104,170,224,119, 73, 85,193, 14,178, 43, 21,117,112,119, 12, 24, 16,215,222,247,190, 58, - 70,146,122, 90,170, 74,106,154, 41, 18,106, 58,136,209,225,120,200, 40,209, 58,134,141,144,141,138, 50,144, 84,141,172, 69,176, -180,180,180,180,134, 54, 48,180,180,180,180, 48, 48,180,180,181,192,111,104, 5,251,125, 80, 56,143,220,198, 45,253,213,169, 89, - 9,183, 54,167,110,238, 27,118, 11,123,151,122, 90, 50,220,172,139,138,158,153, 72,178, 45,251,125,102, 37,197,116, 63, 9, 82, - 82,182, 38, 6, 89, 68,111, 26, 95,138, 30,142,216, 47, 57, 30, 78,249,221, 99, 81,164,226, 6, 84, 47,168,169,111,215, 68,181, -129, 7,171,130, 78,246, 0,236, 78,216,215,169,168, 20,209,243, 10,234, 23,181,175,110,196,255, 0, 44,119,231, 75, 81,244,103, -138, 29,229,219,186,190,226, 38,204,169, 55,100, 67,220,238, 34,247, 45,250,213,217,125, 65,164,205,147,104,206,165,216,118, 61, - 94,129,106,212, 95,186,100,197,162, 91,207, 73,151, 86,156,153, 30, 59,169, 82,141, 53,244,196,109,181, 55,135,114,241,198,191, - 22, 21,107, 15,123,247, 58, 21,239,182, 80, 41,252, 61,195,225,246, 85, 90,221,164,217,177,110, 10,125,254,238,232, 42, 29, 18, -168, 34,221, 38,172, 62,174,129,245,162, 36,204, 82,163, 52,225, 82,101,134, 98,190,203,109, 37,110, 59,183, 5,230, 62, 70, 90, -152, 57,114,114,192, 44,206, 14,169, 36, 72,144, 16,168,246,213, 43,132, 6,228, 91,204,218, 84,223, 8, 12,198, 29,193, 70,184, -191, 64, 58, 0, 88,157,200,232,162,231,111,112,185,199,119, 52,181, 31,219,163,138, 13,215,187,247, 63,109,175,153, 87,125, 18, -185,126,217, 23,151, 19, 82,104,252, 60,211, 45,201, 52,233,150, 71,240, 34,193,174,162,217,167,220,143,211,222, 93, 66,233,145, - 84,147, 75,108,134,220, 72,230,113,130,136,203, 97, 74,115,194,187,218, 60,116,241, 71, 94,159,183, 22,253, 63,112, 54,166,175, - 63,117,119, 39,104,237,104,115,229, 80,109,233,245, 11, 49,235,225,117,154,109,106,149, 86,182, 45, 90,232,117,138, 91, 85, 35, - 79, 91,126,254,228,106,167, 37, 61,109,158, 66,226,214,144,220, 23,153, 8,213,214,162, 27,132,212,225,139,174,147,174, 69, 33, - 78,131,172, 1, 25,109,118, 10,194,252,179, 32, 1,136, 25,140, 58,136, 42,221,108, 45, 99,125,129,245,219,115,107,117, 29,237, -142,245,233,107,147,209,223,222, 43, 46,151,189,123,171, 87,168, 91,247, 45,193, 96,238,236,107, 86,163,184, 18,175, 13,204,135, - 26,223, 51,155,219,155,122,229,185,225,109, 4,121,171,160, 11, 66,149, 6,229,173, 86, 75, 18,101,144,211, 81, 94, 47, 30, 86, -130,245,116,153,197,253,205,104,175,125,224,212,119, 98,196,186,104,182, 78,217,238,236,253,159,220, 25, 80,109,250, 84, 61,204, -189,109, 75,111,110,106,180, 88,240, 28,129, 37, 16, 46,122,140, 59,158,240,173,209,164, 71,165, 4,181, 37,202, 9,253, 10, 30, - 67,199, 90, 31,253,157,169,144,255, 0,100,153, 42,109, 96,108, 24, 93,173, 25, 33,108, 27, 96, 37, 66, 3,232,144,141, 71,151, -101, 98, 20,246,180, 31,222, 41, 75,252, 58,110, 5,250,122, 30,151, 3,109,247, 24,234,110,150,185,121,125,113, 27,190,246,141, - 14,226,220,138, 85,122,149, 95,137, 79,221, 29,192,219, 42, 86,219,187,104, 69,247, 57, 66,135,195,181,213,186,212,122,171,149, -122,104, 85, 74, 93, 76, 92,212, 56,173,120, 13,169,182, 94,140,242,153, 95,134,178, 36,161,188,127,125,171, 86,214,225,238, 11, - 22,199, 16, 84,107,178,163,121, 39,108,124, 29,207, 68,141,169,183,108, 72,233,163,237,245,233, 92,170,211,106, 53,186,204, 89, - 52,202, 39, 35,139,138,182, 99, 49, 2,101, 90, 83, 81,212,194,240,184,239, 73, 25,143,134,171, 36, 66,194,104,254,198,161,110, - 97, 23, 14,138,202,199, 64, 11,164, 54,162,119, 6,214, 93, 86, 98,161,171, 35, 6,218, 79, 91,118,238, 9, 4, 11,239,126,158, -238,246,218,253,134,210,215, 23,168,252, 66,238,173,122,152,237,253, 54,243, 85,110,231,171, 76,225,138,243,161,236,203, 18,102, -193,102,123,213,219, 34,129, 34,173, 62,218,133, 2,172,137,173,218,242, 46,180,203,140,244, 86, 80,236, 39,101,213,208,220,211, - 33,228,132,186,236, 80,248,135,221,139,146,237,218,187, 18,214,222,123,102,243,129,185, 51,246,200,220,219,133,110,217,182,220, -151, 54,246,175,118, 89, 27,207,114,220, 59,126,196, 88,238, 61, 5,154,162,127,128,148, 71,161,179, 83, 67,181, 56, 13,161,255, - 0,172, 27,152,151,144, 18,105,120, 98,178, 37,118, 51,199,104,151, 83,147,204, 1,108,138,237,184, 67,125, 33,173,125,181, 16, - 66,106,107,129,133,173,141,136, 1, 79,155,167, 77,247, 32,119,239,248,119,182, 58,147,171, 69,118,187, 74,182,233,114,107, 21, -153,105,135, 2, 47,132,149,185,225,188,251,206,189, 33,212, 71,139, 18, 28, 72,205,173,217,211,223,148,235, 45, 49, 29,148, 45, -231,222,121, 13, 52,133,184,180,164,182, 60, 63, 94, 23, 13,249,180,118,173,203,117,202,141, 58,225,125,219,146,149, 84,168, 68, -134,221, 57,154,140,139,106,235,174,219, 34,165,238, 12,168,183, 13,217, 13, 81,219,121,198,219,253, 26, 28,125, 73,108, 37, 1, - 41, 13, 62,232,111,214,218, 88, 87, 53,221, 90,189,235,241,103, 84, 54,214, 35,223,192,237,191,166,243,212, 43,146,234,168,162, -210,230,214,174, 85,210,219,108, 4, 84, 20,139,146, 5, 54, 10,228, 56,219,108, 55,239, 43,109,212,137,238, 41, 44, 50,192,240, -207, 45, 59, 88,201, 19,178, 27,116,186,146, 13,137,182,215, 29, 72, 27,117,198,210,176,101, 86, 29, 24, 3,251,247,199,221,233, -222,106,181,159, 75,167, 84,174,234, 93, 66,210,177,231, 69,184,235,115,168,180, 74,161,155,188,183, 37,187,104, 81,151, 91,175, - 70,163, 80, 40,200, 81,166, 32, 83, 84,169, 82,149, 18, 91,178,216,139, 78, 83, 11,126,159, 42,107, 42,103,136,187,179,237, 34, -226,147,119,235, 63,197,223, 8,251,124,189,158,219,184, 97, 16, 40,176,233,212,196, 92,251,157, 84,166,150,212,167,102,185, 76, -180, 34, 77,106,221,117,114, 22, 2, 25,135, 45, 15, 52,181, 45,110,204,125, 71,175,108,182, 23,109,174,187,130,169, 84,222,157, -223,125,186,149,249,123, 65,247,101,210, 60,100,212,104, 54, 69,155, 36, 7,224,237,133,176,149, 2,203,148,166,146,166,158,173, -205,109, 3,235,170,160, 43, 86, 98, 69,134,211, 59, 51,104,216,150, 77,129, 77,110,141, 99, 90, 54,213,159, 74,109, 41, 66,105, -246,205, 18,155, 68,137,132,126,169, 91, 20,232,205,165,197,117, 57, 82,129, 81, 36,146, 73, 39, 78,217,109, 94, 95,150, 60,146, - 85, 80,254,145,169, 22,208, 11, 40,141, 58,223, 82,180,114, 93,186, 91, 96, 71, 98,164, 27,234,212,195, 81, 80, 21, 35,159,217, -227,223, 81, 0,150, 61, 45, 98, 25,108, 58,223,168,247, 17,136,175,109,165,111,136, 46, 22,110, 90,253,251,188, 55,190,238, 65, -226, 39,118,227, 73, 22,188, 43,214,173, 93, 15,170,216,230,151, 29, 53, 11,198, 13, 89,199, 26,118,108,119, 24,169, 38,135, 69, - 37,232,207,174, 19,213,119,127,239, 68, 64,213, 43,151,138,189,231,148,233, 93,203,191,247,220,103, 10,148,232,142,246,226, 85, -105, 32, 96,149, 21, 51, 79,141, 84,100, 37, 35,175, 68, 55,129,142,128,107,190, 92, 81,109,158,214,113, 35, 67,184,108,237,202, -102, 60, 43, 2,198,163,212, 42,247, 21,248,211, 49,155,173, 80, 37,183,202,252,118,173,218,155,209,221, 83, 79,170,117, 53,160, -227, 77, 36,169,228, 67,121, 32,178,242,233,207, 57,194,234, 71, 15,220, 39, 90, 75,109,193, 77,191,119, 2,124, 94, 96,220,151, -161,219,182,108,103,243,144, 18,185, 21,119,174, 89,106,100,163, 0,129,224,171,201, 60,131, 83,252,135, 54,165,204,160,150,105, - 50,197,106,184,152, 41, 60,176,194,223,170, 17,180, 5, 22, 29, 67, 58,155,146,119,189,240,193, 93, 73, 45, 59,170, 45, 73,228, -176,184, 26,172,111,176, 36,139,220,223,181,129,216, 91,107, 91, 29, 21,246,100,113, 47,186, 91,235,125,110, 4, 59,162, 92, 75, -222,214,164, 89,244,136,116,189,196,146,195,109, 87,221, 69, 6,164,227, 77, 68,157, 83,101,164,170,228,142,252,250,245, 93,166, - 94,150, 12,132,127, 7, 30, 90, 93,113,183, 73, 87,102,245,197, 62, 8,247, 59,106,118,179,113, 23,103, 90,182, 36, 75, 2, 30, -235, 85,168,116, 25, 13,199,172,212,107, 14, 87, 43,209,216,152,205,189, 33,239,126, 9,109,170,147,105,114, 75, 75, 16,216,138, -219,177, 93, 46, 62,219,134, 27, 74, 71,107, 53, 4,226,104,132,121,180,197, 40,197, 20,114, 5,101, 80, 0, 13,113,230,112, 20, -149, 23,107,139, 2,109,109,247,185, 47,153,107, 22,165, 75,205,206,101,184, 39,115,107,116, 27,128,122, 88,239,235,233,133,165, -165,165,168,254, 55,240,180, 29, 66,161, 2,147, 6, 93, 78,169, 50, 45, 58,157, 2, 59,178,166,206,154,251,113,162, 68,140,194, - 11,143, 72,147, 33,229, 4,178,202, 80,149, 21, 41, 68, 0, 6, 73,209,154,212,158, 53,182,250,255, 0,220,189,141,169,219,187, -118,235,139,169,181, 89,166,213,106,148,134,158, 12, 59,113, 81, 32, 51, 52,201,162,180,181, 16,149, 58,102, 59, 6, 74, 80,165, - 0,225,167, 6,243,149, 0, 88,184,159, 52,173,201, 56,123, 58,205,242,220,170, 76,242,191, 45,166,150,104,105, 34,254,242,162, - 68, 66,203, 18,216, 19,118, 35,162,171, 57, 23, 8,172,214, 82,253,194,249, 85, 14,121,196, 89, 38, 79,153,230,209,228, 89,126, -101, 83, 12, 51, 86, 75,253,221, 60,114, 56, 87,149,174, 85,108,160,245,102, 84, 6,197,221, 86,236, 52,131,138, 95,104, 4,186, -199,214, 54, 22,197, 77,122, 13, 40,151,161,213,183, 5, 41, 91, 51,234, 13,245,109,214,109,116, 44, 5, 64,138,174,191,225,138, - 1,245,164,254,133, 45,116,112,232,102,217,108,157,245,187,134,183, 88,166,198,146,138, 37, 30, 21, 78,171, 88,184,102, 54,243, -205,188,244, 72,207, 77,118, 44,101, 40,243, 79,168,186,180, 97, 88, 36, 32,185,206,226,129, 32, 43,100, 54, 19,129,203,238,248, -173,181, 55,114, 41,115,173, 91,118, 27,233,241,105,111,225,154,189, 85, 72, 80,230,100,242, 40,251,132, 63, 37, 44,159, 21, 64, -225,180,167, 62, 34,123,107,102,109,165,171,100,219,108, 91, 52,106, 68, 40,116,214, 97, 24, 34, 35, 12, 33,184,233,142,182,203, -107,104, 54, 7, 80,164,169, 92,196,228,168,168,149, 18, 73, 58,227, 46, 26,240,155,196, 15, 27,243,131,198,254, 48,212, 79,148, -100,169,175,216,178,205, 50, 64,197, 79,217, 84,129,142,186, 74, 91,129,173,223,251, 93, 72, 91,234, 0,172,216,237, 78, 38,241, -115,195,223, 3, 50, 97,192,254, 13, 83, 65,156,103,114, 20, 53,217,166,164,168, 64, 71,218,103,168, 81,162,174,168,169,109, 8, -159,217, 41, 75, 17,164,144,208,226, 44, 52,185, 13,195,169,211,165,188,142,118, 98,207,137, 33,212, 30,203,109,137, 13,184,226, - 8,249,165, 36,125,250,127,189,191, 59, 1,126,241, 15,193, 94,202,238,238,208,211,167, 93,244,109,151,184,170,119,101,215, 68, -161,176,236,233,235,179,175, 10, 4, 24,142, 93, 76, 66,140, 20,185, 76,211, 95,167, 69, 50, 66, 18,165,179, 30,166,244,130, 3, - 76, 60,164,211,226,127,101, 42, 59, 29,186,181,187,117,109, 62,187,118,168,251,213,155, 78,162,182,200,106, 93, 34, 91,202, 95, -186,135, 57, 66, 85, 38, 43,203, 84,119, 64,193,253, 26, 87,128,151, 18, 75,183,195, 79, 26, 53,221,151,166,139, 34,240,164,187, -122,109,226,148,224,141, 17, 46,182,154,189, 13,183,212,165, 72,102, 2,165, 31, 10,109, 61, 74, 90,213,238,238,148, 4, 41,106, - 40,113, 41, 37, 5,151,232,189,226,236,127, 70,191, 20,115,188,175,140,233,189,135,151, 83, 26, 73, 43,163, 50, 69, 61, 47, 62, - 45, 50,104, 12,254,207, 83, 5, 76,154, 39,141, 95, 65, 49, 74, 20,198,204,234,241,244,170,240,114, 79,164,247,132,249, 46, 99, -193,117, 94,220, 37,165,149,227,137, 29, 21,229,130,168,211,204, 26, 46, 97, 84,246,154, 89,233,163,215, 79, 35, 71,204, 2, 88, -139, 9, 21, 81,160, 87,169,110,253, 27, 78, 31,247, 14,201, 78,246,241, 53,120, 64,159,107,237,173,207,108, 82,237,139, 90, 69, - 85,167,160,179,114, 68,163, 76,149, 92,175,220,241,144,248, 79,137, 70,138, 26,139, 29,153, 56, 45,188,228,137, 73,109, 71,193, - 94,122, 95, 89,143,236,147,185,110, 37,110, 61,103,134,205,190,118,245,118, 71,214, 47,186,246,201, 80, 28,168, 63, 81,230,241, - 76,135,214,152, 94,233, 38,103,139,215,198,113, 69,124,221,121,181,134,239,223, 25, 43,190,109,119, 54,195,105,109,159,226,243, -110, 28, 97, 16,106, 24, 17,153,172,214,169,236, 0,134,169,158, 5, 63,244, 20,106, 55, 34, 82, 21, 29,165, 56,167, 82, 2, 22, -180,183,204,210,189, 25,241,187,233,237,225,100,220, 3,152, 80,112,253, 92, 57,166, 99,153, 70,182,130, 10,152,234,164,119, 86, - 89, 18, 33,201, 5, 97, 70,145, 87,153, 52,237, 25, 88,195,132,133,228, 42, 7,154, 94, 3,127,179,211,197,122, 79, 17,114,220, -207,136,233,166,203, 50,220,174, 70,250,249,233,164,165,141, 17,213,163,121,155,158,193,230,117,141,219,151, 5, 58,200, 30, 82, -133,230, 72,149,201,211,219,222,171, 18,185,121,221,181,168, 8, 8,131, 86,185,107,149, 40,105, 74,121, 64,139, 58,167, 42, 76, -127,132,143,135,244, 78, 35,167,207, 77, 71,183,193, 83,207, 4, 92, 7,166,161,226,120,232,185,171,137, 62, 46,121,194, 5,131, - 73,240, 82,160,174,160,134, 66, 7,221,173,145,216,173,173,169,238,230,227,208,109,120,108, 60,170,120,148,204,234,252,180, 33, - 69,184,116,136,238,161, 82, 57,156, 72,194, 30,120,132,178,214,123,173,224,113,202,149, 17,210, 31,105, 23,179, 6, 31,180, 15, -107, 54,119,111,211,186, 82,118,157, 59, 83,112, 85,238, 6, 95,131,103, 71,187, 17, 86, 21,122, 52,122, 72,130, 99,187,113, 83, -133, 57, 44,166, 58, 86,149,165, 78,133, 5, 20, 20, 12, 5,107,144,127,217,239, 11,228,156,117,155,248,159,196, 50, 53, 6, 69, - 81, 49,167, 14, 35,118, 89, 36,209, 81, 36,238,145,198, 25,217, 98,121, 98,141, 74,171, 13, 82, 58,223,200,246,236,191,246,140, -186,241, 7,135,185, 87,133,124, 53, 18,230, 60, 67, 79, 0,168, 49,153, 35, 86,142, 62,101, 52,112, 70,242, 72,200,138,210,199, - 20,210,176,118, 83,166, 56,218,223, 88,151,102,125,130,112,118, 42,169,192, 62,220,155, 3,248, 58,253,211, 14, 69,121,189,216, -141, 20,197,250,250, 61,248,229,122,168, 93,114,229,109, 39,197, 75,206, 82, 17, 78, 84, 37, 57,240,170, 2, 88, 75, 71, 8, 80, - 17,173,246,250, 13,156, 87,180, 78,224,103,100, 28,162, 63, 88,110,202,179, 25,220,245,218, 78, 69,118, 49,221,175,121,170, 25, -141,184,237, 53, 69,181,220, 41,161, 42,215, 76,222, 83,227, 38, 98, 92, 68,140, 74, 75,192,117, 38,227,250, 54,119,189,161, 79, -164, 73,216, 46, 46,110,123, 78,180,253, 25,154,101,232,154,149, 18,165, 73,135, 95,154,143, 16, 72,168,192,114,215,185, 18,237, - 62, 19,168, 82, 1,129, 35,223, 2, 20,149, 45, 50,202, 86, 27, 67,243,193,111,209,227,219,173,146,220,107,127,118,119,231,112, -164,239, 85,205,109, 84,218,174, 81,173,207,169, 81, 69,178, 35, 87, 35, 60,153, 16,234,149,118, 37,204,149, 42,232,125,153, 9, - 75,205, 33,229,199,142, 93, 0,191, 29,240,156, 31, 80, 50,110, 36,240,255, 0,133,248,167,136,120,250,159,140,167,206,102,204, -197, 81,139, 47, 20,147,199, 51, 60,242, 9, 52, 75, 52,159, 86,209,161, 80, 35, 44, 16, 5,210,199,204,186, 91,202,188,243,133, -252, 73,226,222, 17,225,159, 14,106,120, 26,159, 34,131, 42, 52,130,108,204,214,211, 75, 2,165, 60, 92,190,100, 48, 71,245,171, - 35,134, 38, 64,165,201,109,106, 60,175,173,120,101,186,226,227, 30,216,222, 31,145,113,169,212,222, 13,238, 7, 6,204,215,213, - 43,196, 18, 19,114,181,106,109,123, 85, 19, 47,197,202,132,164,212,146,231,141,205,215,196, 74,201,235,211, 90,121,178,118,150, -251, 86,248,244,118,209,176, 55, 14,149,181, 28, 67, 63,187,123,137, 77,165, 94, 87,124,150,160,183, 79,191, 68,251,137,138,172, - 71,101, 79,167,202, 75, 85,121,111,253, 99, 25,144,182,148,167, 95,150,150,144,124, 71, 18, 12,191, 55,139,216,145, 27,114,184, -246,164,241,181, 23,126,103,210, 85, 77,220,141,186,220, 36,237,202,118,242, 36,168,229, 86, 2,232,107, 69, 32, 92,230,240,109, - 65,169, 66,136,128, 94,247, 2,166,125,229, 68, 33,194,145,159,188,127,251, 8,246,135,139,155,230, 86,246,237,181,237, 81,216, -221,230,170,248, 18,174,153,244,186, 83, 85,171, 78,238,170, 68,109,180, 49, 90,169, 81, 81, 50, 35,244,171,136,165,166,146,236, -232,146,128,119,194, 75,143, 69,117,254,103, 75,214, 91,226,215, 8, 67, 22, 85,150,205, 86, 35,138,175, 35,134,138,121,205, 36, -147, 69, 73, 85, 26,176,229,203, 3,162,251, 69, 57,230, 48, 97, 30,180,109, 10,167,202,197,149,139, 52,240,103,141,106, 37,205, -243, 72,104,140,147, 80,241, 4,245,244,244,226,182, 40, 37,173,163,149,163, 60,200,170, 35,145,189,154,161,121, 42, 80,203,203, -117,214,204, 6,181, 8,220,174,226, 71,130,207,107,101, 91,105,167,218,220, 83,113,207,179,208,246,122,238,169,208,173,233,177, -183, 54,243,164,208,173,170,181,102,101, 69,135,109,234, 98,103,201,178, 88, 45,207, 85, 69,134,150,209, 67,168, 82, 61,221, 78, -173, 73,109,181,173, 58,117,197, 87, 1,155,253,192,167,179,178,235,160,238,229,199,101,215,173,141,200,226,147,102,174,107, 61, - 22, 93, 90,117, 86, 35,117, 8, 59,103,187,240,170,243,222, 92,168, 76,160, 38, 69, 61,202, 40,109,109,115,248,137,137,146,174, - 80,141,116,161,143,163,193,196, 46,228,213,168, 20,254, 34,120,219,187,111,155, 38,221,113,180,211,233, 77,199,185,174, 25,241, - 97,167, 8,114, 37, 29,203,202,228,122, 53,190,165, 48, 57, 82,234, 35,200, 8, 29, 60, 21,142,154,234,183, 19,126,200,187, 31, -124, 56, 36,218,238, 11,108,125,198,175,109,125,165,181, 87,181, 22,242,163, 87, 39,211,158,220,106,188,245,210,168,215, 85, 46, - 68, 42,129,170,215,224,171,196,147, 34,233,147, 37,110,182,234, 91,105, 81,195, 44, 70,109,146,148, 54,214,158, 34,228,185, 53, - 87, 15, 81, 71,196,212, 85,249,107, 87, 71, 81, 94,180, 57, 43, 81, 65, 18, 68, 85,227,149, 89,109, 43, 77,170, 53, 86, 9, 12, -154,144,144, 89, 2,128,238,210,120, 95,158,231,148,156, 75,152, 73,194,149,249,118,106,153,124,148,217,123,102, 25,242,215, 84, - 77, 36,193,146, 72,157, 90,240,164, 26,100,118, 66,243, 71,165,192, 96,175,172,152,216,127,163,207,182, 54, 85, 63,129, 26, 5, -213, 18,131, 1,186,245,225,121, 94,117, 27,146,168, 35, 51,239,213,105, 84,250,195,212,170,127,190, 73, 8, 11,121,152,244,248, -205, 54,202, 20, 74, 90, 10, 95, 32, 5,107, 39,133, 62,218,203,122,129,108,123, 96,109,245,210, 41,177,105,109,213,209,195,221, -118,176, 97,180,134, 12,218,147,149, 56,208,159,168, 62, 91, 3,158, 81,133, 78,134,130,179,241, 17, 25, 57, 61, 53, 47, 47,103, -175, 7, 75,224,115,135,139,127, 97,141,234,237,254,138, 5, 74,189, 81, 77,202,253, 13,187,113,201,102,185, 84,122,164,166,141, - 41,170,164,208,194, 90, 47,114, 3,239, 11, 42, 8,230, 56,206, 53,160, 92,119,251, 21,218,227, 43,139,138, 79, 20,201,223,169, -214, 59,244,232, 27,125, 4,217,141,109,212,106,251, 11, 22, 36,247, 38,120,191, 94,185,121,196, 82, 76,164, 44, 39,151,221, 15, -128, 83,205,151,129,228, 17,110, 24,227,108,134,131,196,238, 46,226, 60,195, 51,120,242,140,217, 51, 4,134,110, 92,238, 92, 77, - 42, 52, 0,198,177,153, 20,104, 81, 96,232, 2, 5, 0,233,176, 24,151,241,111, 0,241, 22, 99,225, 63, 5,112,190, 91,148,164, -153,214, 76,249,107,207, 8,150,157, 4,109, 4, 46,181, 12, 36,105, 22, 38, 58,216,234, 40,236, 92,177, 35, 85,201,196, 94,166, -255, 0, 4,227,251,102,171,138,226,141, 80,145,106,127, 43,106,227,151,155,183,111,130, 40, 41,134,253,197, 45,203,106, 77,100, -206, 72,103,248, 45,250, 74, 26,201, 88, 17,189,203,148,159,208,106,118,219,255, 0, 77,225,202, 23, 11,155,155, 59,120,151,101, -141,146,115,108, 43,142,220,242,235, 79, 83, 77, 2, 85,186,237, 13,231, 25, 76, 37,173, 94, 28,153, 78, 35,192,250,189, 49,242, -243,146, 21, 28, 67, 5,242,214,185,225,237, 10,246, 37,236,223, 28, 51,160,110, 93, 50,230,159,180,155,231, 14,139, 6,141, 84, -188,169, 20,168,245,170, 53,231, 14,149, 20, 69,166, 34,238,183, 93,151, 24,202,168, 48,195,108,176,204,230, 36,178,250, 35, 54, -134, 94, 76,166,217,142,134,185,163, 99,253, 27,221,214,159, 80,165, 91,187,205,197,181,110,187,181,116,121, 33,246,109, 11, 90, -155, 92, 73,125,180,171, 33,152,105,184, 43,142,194,160,169, 67,169,117,184,146, 84,156, 20,165, 25, 60,195,123, 59,206,248, 23, -142, 41, 56, 79, 52,204, 56,182,110, 23,174,225,202,104,160,154,140, 82, 79, 49, 38, 34,167, 93, 35,197,104,209,156,173,149,152, -146, 20, 70, 93, 84,165,153,191, 32,200, 60, 65,240,254,183,140,178,156,183,130,224,226,234, 14, 40,171,154,162, 10,227, 91, 4, - 0, 9,129, 81, 29,108,114,131, 35,162, 6,187,162,128, 11, 25, 66, 51,137, 46,188, 20,224,130, 37,122,161,107,241,207, 22,205, - 68,229,213,151,193,189,253, 34, 59,113,121,149, 53, 84, 40, 55,206,223, 79,185,147,150,134, 72, 22,172,106,177,123, 29, 60, 36, - 57,159,135, 58,112,125,151, 27,107,197,206,231,238,109,253, 66,224,219,124,109,173,154,220,132, 90,144,164, 85,209, 87,159, 18, - 13, 86,231,182,219,170,182,183,153,164,123,205, 6,114,159,102, 44,244,195,114, 64,108, 32,164, 58,218,149,148,246,148,183, 0, - 30,195,186,103, 4, 59,219, 95,221, 41, 91,210,238,236, 81,174, 43, 18,191, 97, 78,179,235, 27,115, 6,133, 5,234,101,126, 92, - 7,229, 25,178,149,117,212, 19, 61,159,118,131,224,173,133,199, 8,117, 50, 23,206,113,240,235, 95,184,128,250, 57, 52, 5,238, - 92,237,211,224,251,126,238,109,132,155, 34,168,253, 90,157,107, 61, 18,125, 66, 21,175, 38, 90,150,227,236,218, 87, 93, 26,179, - 18,165, 71,166,165, 75, 33,152,239, 9,107,109, 10, 40, 18,121, 2, 82, 39,213,158, 45,112, 93,125,119, 19,229,145,230,113,193, - 73,155,199, 76,244,245,181, 20, 18,212,211,115,163, 69, 71,134,162,150, 72,214, 70, 81,203, 66,172, 80,165,217,219, 82,178,174, -170,226,135,193,142, 59,203,114,254, 18,205,101,202,100,158,183, 36,150,174, 58,154, 26, 92,198, 42, 74,174, 68,178, 51,199, 61, - 45, 92, 82, 52,106,228, 72,225,215,152, 30,200,138, 85,149,155, 79, 63,120,152,246,113,123, 73,247,246,235,219,109,167,226,139, -140,141,138,188,175,178,213,122,187,181,118, 29,241,126, 64,166,221,115, 99, 73, 93, 54,159,112, 78,182, 41,145,237, 56,210,106, - 13, 56,228,106,115,110, 33, 60,254, 41,132, 84,218, 23,238,207, 41,173, 31,246,169,108, 70,229,240,207, 70,224,147, 98,119,114, -163, 71,170,222,187,125,195,213,118,150,252,234, 12,137, 18,233, 70,139, 43,118,239, 89,244, 56,177,164,203, 97,167, 29, 12, 68, -146, 91, 60,200, 72, 79, 32, 74, 71, 40, 26,238, 94,204,253, 30, 26,228,253,212,164,238,167, 22,156, 77, 94,219,207, 82,164, 79, -131, 56,192,167, 63, 93,167, 79,170,174,154,224,118, 27, 85, 91,234,181, 93,149, 83, 76, 20,173, 8, 10,106, 34, 99, 59,203,144, -220,182,137,206,183, 63,218, 81,236,103,137,199,254,225,237,141,254,141,242,159,182, 63,197,206,219,177,183,108, 80,227,216, 76, - 93,200,157, 30, 61,114,165, 89,102,162,106, 82,110,248, 10,142,176,154,138,153, 45, 22,157,230, 12, 37,207, 23, 42, 41,211, 54, - 91,226,118, 67,149,113, 15, 14, 82, 84,113, 37, 61,110, 65,151, 37, 76,179, 61, 46, 80,244,112, 67, 83, 36, 82,198,139, 2, 70, - 26, 87, 71,230,182,191,169, 81,168, 7, 46,218,138,163,238,105,225, 55, 17,103, 28, 53,197, 21,180,220, 43, 85, 67,196,121,172, -148,176,195, 29,102,117, 29,117, 68,244,145,205, 12,142,213, 15, 41, 72, 99,120,249, 43,203,250,242,218, 47, 24,141,116,134,125, -234,246,125,236,206,223,237,103, 9,155, 11, 64,179,173,250,125, 38, 3, 59, 97,100,212, 92, 17,163, 54,202,230, 85,234,214,237, - 54,167, 88,172, 76, 82, 19,151,234, 82,234, 82,100, 72,125,213,100,173,199,207,100,132,164,111, 48, 24, 24, 29,135, 65,166,203, -102,236, 37,237,126,216, 88,187,122,185,202,169,155, 50,212,183,173,113, 82, 83, 9,138,169,233,160, 82, 33,210,147, 53, 81,146, -234,196,117, 58,152,129,101,176,181,132, 21,242,133, 40, 12,150, 11,143, 78, 49,236,142, 6, 56,109,189,119,206,237,247,106,133, - 98, 35, 63, 80,109,189,164,235,165,183,175,125,198,171, 71,147,252, 28,183,209,200,180,173, 16, 18,168,242, 38, 84, 93, 65,230, -143, 77,165,203,121,176,183, 80,219, 78,115,121,134,183, 63,207, 30, 26, 53,122,250,236,222,165,132, 99,114,242,188,210, 27, 18, - 91,123,146,215, 98,214,176,185,107, 0,113,212, 98,122, 30, 27,225,232,231,174,100,203,178,252,150,145, 76,135, 96,145, 71, 12, - 64, 48, 1,118,178,133,178,170,222,230,193, 65, 36, 12,113, 23,233, 10,251, 69,127,139,219, 56,240, 51,180,149,207, 14,246,220, - 58, 76, 90,158,253,213,105,238,225,251,107,110,170, 45,166, 69, 35,111,195,236,175,154, 61, 90,224, 64, 68,138,131,100,165, 72, -161,165,182, 28,109,216,245,192,166,197,250, 63, 62,207,199, 44, 27, 45,238, 46,247, 46,142,166,111, 45,207,164, 38, 30,218,192, -168, 71, 90, 31,183,118,209,231,218,148, 43,105,105,228, 15, 10,125,126, 68,104,146, 26, 88, 10, 34,147, 18, 26,217,112, 38,161, - 37,189,113, 27,217,255, 0,195, 62,227,251, 81,184,218,174,223,155,197, 50,161,115,219, 13, 92,234,221, 61,253,186, 37, 37,214, -218,174, 63, 83,168,185, 34,149, 99, 68, 49,148,129, 0, 85, 37, 71,114, 43, 76, 50,166,145, 6,141, 74,151,238,188,134, 52,102, -151,250, 18,218,182,237, 58,213,161,211,168,148,168,145,160,194,167,196,143, 18, 60, 88,140,183, 30, 52,118, 35,180,150,153,143, - 29,134, 82, 16,203, 8,109, 41, 74, 16,144, 18,148,164, 37, 32, 0, 53,117,113,253,101, 39, 0,112,165, 23,134, 89, 44,193,243, - 42,197, 90,140,226,116,234,236,225, 88, 67,126,160, 61,151,202,108, 86,153, 34, 86,213,206,123,208,254, 27, 80,214,248,145,198, - 53,254, 44,103,208, 52,121, 85, 11, 61, 54, 73, 76,251,132, 68, 44,166,123,116, 38, 59,183,152, 92, 53, 84,146,178,149,228, 32, - 25, 10, 82, 18,144,148,140, 4,128, 0,244, 3,160,215, 62, 61,164, 30,208, 29,190,246,125,108, 68,221,193,174,166, 21,195,185, -183, 74,103,208,246,111,110, 92,144, 91,126,238,186,153,142,218,156,168, 84,144,203,169,118, 61,155, 75, 18,162, 72,171, 73, 65, - 65, 8,121,152,108,172, 76,155, 21, 42,223,186,157, 78,157, 69,167, 84, 43, 21,138,132, 42, 77, 34,147, 10, 85, 74,169, 84,169, - 74, 98, 13, 58,155, 78,130,195,146,166,207,159, 54, 83,137,106, 28, 38, 99, 52,235,142,186,226,146,134,208,218,150,181, 4,130, - 71, 9,184,174,225,239,128,223,109, 5,235,103,196,178,120,186,133, 90,187,118, 26,145,116,193, 93,191,180, 87, 53,159, 80,147, - 34,153,115,212,232,158,253, 88,147, 10,183, 72,146,245, 74,148,212,218, 52, 38,155,157, 7,154, 22,102, 37, 42,117, 74,117,156, -212,252, 35, 69,149,207,156, 82,213,241, 20, 21, 13,195, 52, 45,174,178, 72, 34,146, 64,163, 75, 24,163,145,145, 78,133,154, 64, -177,177,184,109, 37,180,144, 64, 34,228,227, 92,195, 55,166,201, 42,232,248, 98,122,101,226,188,193,116, 80,199, 81, 52, 81, 22, - 98,202, 37,146, 53,145,135, 49,160,137,154, 69, 91, 50,235, 85, 12, 10,155, 24,223,112, 43, 69,217,158, 45,184,165,187,120,165, -246,138,241, 35,182,116,170,123, 23, 91,119, 61, 74,223,220,203,198,221,164,212,247, 82,240, 90,154,145, 18, 4,155,122, 83,169, - 76, 13,179,165,195,106, 27, 94,232,150, 88,134,243,109, 69,164,194,109, 80,163,204,105,153,125,220, 94,209,127,103,156, 61,184, -186,232, 52, 94, 47, 56,125,117,247,237, 26,244, 24,113, 99,110, 45,186, 93,145, 37,234, 60,166, 35,176,203,104,151,241, 45, 78, - 41, 9, 74, 64,234, 84, 0,215, 43,127,189,146,225,251,255, 0,151,141,236,252,108, 47,255, 0,212,117, 98,186, 62,141, 70,193, - 80,109,171,134,184,206,250,111, 75,206,209,168,117,106,171, 77, 58,108, 79, 9,215, 41,240, 31,150,134,220,228,180,193,240,212, -166, 64, 56, 32,224,156, 28,234,227,226,156,231,194,238, 48,205, 41, 42,234,248,179, 49,165,167,161, 88,226,165,164,134,136, 37, - 61, 52,107,164,104,141, 76,102,218,138,130,204,119, 54, 10, 44,136,138, 40,222, 15,200,252, 93,224,124,162,178,142,139,131, 50, -202,202,154,247,146,106,202,201,235,245,213, 85, 72,218,137,121, 92, 72, 47,160, 51, 4, 81,176,187, 49,187,187,179,241,151,216, -125,188,123, 87,177,188,108,155,223,120,111,251, 87,109,173, 15,226,150,243,164,127, 8,239, 10,196, 74, 37, 35,235, 57,181,155, - 69,248,144, 61,246,107,137, 71,189, 56,212, 57, 74, 66, 51,149, 6, 20, 64,192, 58,156, 37,241,179, 92, 40,241,203,106,237, 46, -225,220,246,214,221,239,165,175,107, 85,218,191,118,150,241,196,122,245, 54, 52,165,184,202, 93,157, 69,169, 68,120, 38,161, 71, -146,245, 54, 31,189, 67,112,189, 2,106,233, 81,140,168,239, 42, 43, 5,184, 0,123, 51,184, 59,180,120,227,226, 73,123, 35,122, - 92,215, 45,167, 72,254, 47,238, 75,185, 21, 91, 80,210,133, 79,223,104,181, 43,126, 19, 17,149,245,197, 62, 75, 62,234,182,234, -239, 21,254,143,159,153,164,114,168, 12,131,250, 11,240,185,177,214,207, 9,155, 29,181,187, 7, 78,186,100,213, 41,118,141, 53, - 54,133,175, 62,230,151, 77, 98,183, 95,122, 59, 21, 90,234,227,165,168,172,176,212,202,144,167,198,170, 72, 83,113,218, 4, 70, -167, 60,241, 64,109,167, 22, 49,227,201,203,105, 56,158,154,191, 47,204,234, 97,226,113, 20, 74,241,160, 40,145,211,114,230, 28, -196,153, 44,218,218,229, 29,117,125,130,110, 45,140,253, 29, 23, 52,173,225, 42,188,187, 50,202,105,103,225, 38,158,102, 73,100, - 43, 36,146, 85,137, 41,207, 41,224,123,174,133, 0, 58, 57, 91,243, 2,216,220, 12, 63,180,219,118,145, 74,138,212, 72,144,152, - 67, 77, 33, 40, 72, 13,164, 97, 41, 24, 0, 0, 58, 12, 1,168,214,125, 36,238, 26, 44,170,175, 15, 59,113,196,205, 42,137, 14, - 22,224,216, 59,137, 73,176,171, 53,136,200, 98, 51,213, 75, 2,242,167, 86,221, 76, 42,145, 5, 42,168, 46, 29,213, 78,163, 42, - 16, 60,230, 50, 42,243,249, 18, 18,251,170, 18,111, 4, 30,160,228,122,141, 71, 19,233, 42,111, 69,183,107,112,145,182,219, 37, -239,241,156,189,119, 91,118,169,119, 3, 20,143, 17,179, 37,155, 43,111,169, 53,105, 85,170,210,208, 57,148,210, 5,199, 87,180, -163, 53,144,128,239,189,200, 40, 89,247,119, 16,170,219,194,167,174, 95, 16,120, 99,216, 11, 9, 94,160, 7,211,125,224, 42,220, -240,214,234,188,157,100,223,109,175,219, 22,175,140, 41,151,191,134,156, 91,250, 68, 41,133, 41,137,143, 85,182,168, 14,158,207, -166,253, 27,157,160, 45,183,222,221,240,212,253, 25, 45,199,171,212,118,115,136, 29,176,151, 33,247,169, 54,142,229, 80,110,122, - 75,110,168, 41,184,138,190, 45,181, 67,159, 26, 49, 42, 42, 67, 62, 61,152,135,139,120, 8, 14, 76, 91,137,202,221,112,234, 82, - 58,139,207,209,155,219, 90,149, 31, 99,247,187,115,230, 71,118, 60, 91,231,115,160,208,105,106,117,183, 80, 38,192,177,109,214, - 20,185,241,212,165,114,187, 24,213,110,170,156,110,100,164, 31, 22,152,242, 20,163,202, 2,101, 13,163,120,178,105,219,196, 78, - 41, 52,214,229,243,208, 27,116,230, 8, 34, 19,125,252,208,250,189,247,193, 60, 25, 90,149,240,199,132, 5, 93,249,190,206,228, - 95,175, 40,212, 76, 97,251,185, 38, 61, 63,225,181,182,194,210,210,210,213,119,139, 59, 11, 75, 75, 75, 67, 3, 11, 86,231,168, -244,137, 50,219,159, 34,151, 78,126,123, 74,105,109, 77,122, 12,103,101,180,182, 20, 20,202,155,146,182,138,208,164, 40, 2,146, - 20, 10, 72,200,193,213,199, 75, 89, 4,141,193,177,247, 96, 98,222,186, 77, 45,198,165,199,114,155, 79,113,137,239,123,196,230, - 87, 14, 50,154,153, 32, 41, 11, 15,203,109, 77,226, 67,220,237,182,121,150, 10,178,128,115,144, 52,195, 92,219,245,176,182,149, -122,185,103,220,245, 58,117, 38,177, 14,165, 62,137, 88,166,205,183,100,165, 18, 94,180,182,226, 54,233, 43,153,126,224, 91,159, - 5,155, 45,232,238,197, 88, 82,208,167,241, 10, 62,100,128,214,182, 39, 90,175,186,220, 34,237,174,239, 92, 87,189,203,114,202, -174,179, 62,249,180,173,155, 70,114, 96, 73, 97,182,233,177,104, 55, 4, 90,205, 74,117, 39,196, 97, 70, 44,234,189, 58,155, 70, -165,212,213,146,151,233,244,134, 89,229, 24, 36,239,229,230,133,166, 97,152,203, 44,112, 21,216,197, 98,193,245, 40, 4,130, 13, -194,173,216,141,137,210, 0, 32,219, 9, 75,204, 10, 12, 42,165,129,253,111, 75, 29,135,199, 97,247,227,225,226,159,135, 84, 56, -170,163,213, 95,119,172, 38, 13,219, 88,247,105, 22,125, 85,171,145, 66,203,155, 66,162,214, 18,136,138,166,123,195,149, 5, 46, -227,166, 8,173,167, 43,148,194,220,113,158,102,153,112,164,250, 39, 17,220, 62, 92, 21, 58, 93, 58,145, 81,141, 34,185, 94,151, - 97,212,226,211,133,167, 80,106,170,170,149,249,112,215, 45,203,118, 92,198, 28,166,133,197,168, 51, 86,164, 85,125,241,199,121, - 87, 1,181,165,233, 10,109, 15,161, 74,182,220, 60, 32,109,125,201,123,215, 47,185,174, 86, 27,170, 87, 55, 43,109, 55, 45,216, -204, 61, 29, 48, 33,205,219,106, 84,138, 75, 84, 24, 49,212,193, 12, 91,213, 70,167, 84,156,170,176, 58,201,118,122,151,204, 20, -134,139,116,232, 92, 31,109,165,187,120,209,239,138, 92,218,235, 53,202, 30,226,110,142,227, 66,113, 79, 68,117,145, 63,115,169, -177,233,206, 81,214,211,177,136, 85, 10,144,168, 20,183,233, 12,118,138,245, 57, 11,202,185,222, 14, 56,145,195,220,178, 86,106, -161, 46,139,128, 74,144, 27, 78,161, 30,201,246, 67,125, 94,175,251,237,109,176,143,246,189, 67,202,133,111,239,189,175,107,245, -235,111, 53,190,235,247,192,151, 23, 20,214,213,149,120,238,245,161,112, 90,149, 90,123,118, 93,223,110,218,116,155,146, 37, 34, -165, 34,213,175, 92, 87,142,216, 91,119,181, 10, 5,199, 93,102, 0, 98,139, 83,155, 86,172,154, 91, 40,230,144, 74,145, 17, 79, -169,147, 50, 58, 23,100,166,241,143,176,110, 91,118,252,155,150, 60,202,122, 85,111, 48,244,196,211,236,186,197,114,218,166, 92, -206, 88,209,239, 59,138,199,163,207,137, 73, 87,214, 85,120,214,244,153,202, 90, 88,103,194,117, 48,100, 69, 14, 42, 91,110,197, - 77,226,167,194, 53, 62,224,168,214,164, 92,187,177,184,117,202, 93,207, 86,176,238,171,166,132,252, 75, 34, 52, 75,138,247,219, -171, 22,218,178,232, 23,101, 70,124, 75, 81, 19, 90,146,100, 90,180,154,171,241, 99, 73, 98, 19,149, 8,201,195, 8,139,207, 29, -204, 89,174, 3, 54,230, 28, 89, 84,218, 93,213,112, 83,169, 85, 8, 13,183, 62, 50,109,173,179,153, 84,126,170,109,166, 45,137, -213, 38,111, 9,246, 59,149,202,124, 73, 44,199, 68,199, 96,199,169,183, 24, 77, 91,133, 9, 76, 55, 93,134,181,227, 28, 52, 99, - 65, 52,210, 44,161, 35,212, 99, 50, 88,176,141, 85,236, 90, 50, 67, 23,214,214,210, 86,214,179,139,144, 10, 77,101,201, 85, 4, - 92,245,183, 75,220,116, 61,133,133,239,123,246, 56,201,110, 78, 45, 54,210,143, 71,187, 69, 26,206,190,106, 23,221,159, 10,239, -174, 77,176,164,109,229,114,157, 93,162,200,181,109, 26, 5,194,253,122,230, 66,160, 17,111,208,220,164,222, 86,170, 68,245, 41, - 75, 91, 85,192,134, 91,117,109,188,218, 1,107,139,222, 30, 41,208,160, 38,182,212,154, 96, 81, 98, 34,164, 83,236,138,173, 86, -132,229,233, 73,143, 2, 77, 86,210,160,202,167, 82,150,229,102,224,167, 57, 85,155,240,177, 28,130,105,117, 4, 48,181,191, 26, - 67, 73,200,239, 78, 20,232,247, 93,227,184,151,181, 59,113,239,187, 58,175,186, 16,107, 20, 59,177, 20, 6,109, 25, 81, 38, 91, - 85,235, 26,194,177,234,148, 36, 49,113, 91, 83, 67, 13,174, 54,221, 80,228,162, 75,124,147, 24,118, 76,180,176,251,104,120,114, - 97, 71,129, 29,185,102, 75,134,157,116, 87,233,212,215,107,237,221,142,192,102,217,219, 23,234, 46,220,107,153, 26,125, 70, 66, -175, 41, 86, 50,235,200,165, 73,156,220,169, 11,130,138,162, 26, 67,243,150, 16, 68, 68,166, 32,196, 67,134,204, 81,243,102,154, - 55, 96, 25,172, 90,225,180,141, 75,126, 89, 22, 86,190,141,141,197,203, 50,155, 12, 6,246,205, 70,202,164, 3,177,176,251,143, -218,190,227,175,167, 96,112,231, 92,188, 65,108,253,156,237, 21, 85,234, 37,205, 77,117, 54,204, 75,162,127,188,109,197,114, 52, -173,190,178,220,185,255, 0,131,148,235,130,242,141, 38,152,219,246,149, 21,117,198, 37, 41,160,227, 97,192,213, 50, 76,191, 5, - 44,199,113,212,227,232,226,211,100, 21, 21,169,244,186, 61,249, 82, 97,202,109,126,252,241,169,187, 81,118,165, 40,183,173,245, - 24,119, 77,250, 28,149, 70,101, 47, 81,162,201,144, 35, 61, 61,165, 56, 94,122, 73,102, 57,144,174,112,155,149,235,194,253, 54, -254,147, 62, 77,127,114,247, 1, 75,185,109,201,150, 53,252,136,169,180, 27, 69,243,183,234,190,107,183,181, 30,208,169,151,173, -119, 21, 76,139, 79, 23, 21, 86,150,196,154,122,162,203,114,155, 49,212, 72,121,217, 74, 76,164, 52,251,165,194,237,235, 26,209, -179,173,109,147,172, 76,141, 81,133,182, 87,238,208, 87, 46,106,213,219, 71,163, 71,122,208,188,167,211, 39,166, 53,106,131, 47, -109,107,104,172, 50,153,222,250,242,158,167, 46,147, 80, 97,184,166, 59, 47,172,204, 15, 66, 37, 60, 57, 12,220,152,228,168,144, - 77, 35, 16,197,159, 68,106,161, 88,234,102,104,191,104, 88, 1,114, 84,173,192,114,193,114,237, 84,161,152, 32, 33, 64,176, 2, -228,155,141,128, 13,233,248,131,216, 12,110,107,245,216,236,216,210,174,155,102, 19, 51, 24,254, 12, 74,185,104,144, 74,126,174, -102,127,139, 76,118,175, 5,151, 65,108,123,159,142,181,183,206, 74,121,146, 94, 82,148, 50, 14,180,215,116,165,219,144, 32,213, -182,215,234, 10, 53,122,167, 42,135, 42,149,118,221,213, 70,214,169, 21,107,134,188,202,229, 86,106, 18, 4, 96,219,174,148,212, - 36,135,144,147, 32, 54,202,144, 24,109,164, 55, 29,160,157,199,135,107, 57, 22,193,139,100,166,162,160,236,107, 61,139, 88, 85, -154, 99,195, 80,113,154, 42,105, 34,162,212,101, 58,174, 69,115, 39,197, 74, 10,206, 14, 19,204,123,235,144, 59,209, 19,116,167, - 75,115,110,234, 52,115,107,213, 46,219,210,159, 99,220,151,204, 58,236, 73,212,214, 41,117,135,213, 18,124,250, 47,142,152,243, - 99,207,171, 72, 8,129, 8,201,140,219, 77, 59, 90,111,154, 74,212,166,148,189, 76,174, 26,121,106,106, 29,239, 34, 68, 9, 80, -110, 46, 9,181,201,219,183, 91,237,190,248, 60,236,234,136, 7,148,183, 95,203, 29, 10,217,141,236,135,113,237,133,155, 34,137, -104, 94, 55, 7,131, 64,143, 79,110,109, 18,136,236,138, 4,185, 20, 96,229, 38, 91, 17,174, 7,228, 6, 36,186,204,216, 18, 99, -188,239, 63, 35,146, 34,186,166, 84,235, 74,109,197,229,117,203,231,113,228, 81, 38, 76, 27,115, 80,181,169, 66, 35,130,109, 86, -161, 91,167,203,170,192,109,238,102,132,198,233, 52, 53, 63, 33,184, 44,146,133,204,125, 1, 82, 99, 70,241, 95,139, 22, 83,173, - 37,181,115,182,167,188,183, 37,129, 6,159,182,219, 79, 95,118,221,177,236,232, 45,208,224,166,152,212, 39, 19, 54, 68, 95,130, - 92,184,146,164, 69, 83,145,233,254, 40, 83,113,195,107, 72,113,182, 68,151, 7,140,251,152,109,170, 91,157,184,213,165,133, 85, - 47,171,178,127, 33,230, 75,114,171,213, 23, 35,250,156,199, 84,159, 15,147, 25,200, 41,229,229,200, 61, 52,228,156, 45, 83, 33, - 46,213, 9, 12,109,184,184, 98,214, 61, 46, 54,177,183, 93,246,239,141,118,204, 17,118,208, 89,135, 93,192, 23,247,125,248,187, -241, 61,191, 16,171, 20,120, 91, 43,100, 59, 38, 45, 50,223,155,227,110,163,143,165,182,103,212,183, 14, 41,104,204,160,206,247, - 98, 91,122,157, 79, 90, 99, 41,149, 50,183, 97,190,216,132,184, 46, 57, 2, 52, 39,156,210, 5, 41, 40, 66,220, 89, 66, 27,109, - 42, 90,220, 95,192,219,105, 72,202,150,226,212,112,218, 7, 82, 73, 32, 0, 59,247,214,204, 79,218,105, 60, 77, 67,171,238, 54, -206,186,245, 31,112, 40,173, 83,169, 53,218, 12, 24,116,183,153,221, 11,113,130,220, 51,122, 91, 76, 85, 22,150, 26, 76, 26,164, -146,195, 50, 28, 10, 83,241,203,235,111,199,134,228, 45,102,150, 23,179, 43,113,174,103,163, 78,220,186,172, 10, 83, 3,192,117, -104,185,234,127,195, 25,237, 41, 32,164,174, 53,175, 72, 83, 84,104,143,114, 21,146,164,150,212, 20,190,185,198, 4,179, 46,173, -203, 50,156,190, 58,121,100, 74, 87,131,103, 86, 97,169,159, 98, 92, 0, 11,184,125,138,176, 91,105, 32,109,107, 6,154,136,106, -106,106, 25,213, 76,161,250, 16, 54, 3,176, 36,216, 2, 58, 17,126,183, 62,252, 48, 60, 43,109,125, 79,127,119,214,218,118,158, -185, 44,218, 22,100,195, 85, 21,152, 78,173,176, 24,129, 33,164,215, 46, 72, 51, 89, 87,232,220,113,192,221, 34,148,242, 50,174, -121,115,101, 55,205, 29,104,115, 82, 78,211, 25,177, 59, 3,102,236, 21,187, 50,139,108,185, 46,165, 62,173, 33,153, 53,170,245, - 73, 17,145, 54,114,162,180, 89,135, 17,150,162,180,148, 67,165,176,133, 61,224,176, 57,202, 21, 37,197, 41,197,149,100, 62,122, -131,113, 6,106,185,165, 96,104,175,236,208, 11, 33, 34,197,137,182,166, 35,168,189,128, 0,244, 85, 23,220,156, 61, 80,210,154, -104,136,127,239, 28,220,251,189, 7,243, 39,212,156, 45, 45, 45, 45, 48,227,119, 11, 95, 8, 4, 16, 70, 65,232, 65,215,221, 45, - 12, 12, 83, 67, 45, 53,146,219,104, 65, 61,202, 82, 1, 63,128,213, 77, 45, 45, 12, 12, 51,123,215,177,246, 78,250, 90,142,219, - 55,132, 15, 17, 77,169, 82, 41, 53, 88,229, 45, 85, 40,211,185, 57, 19, 46,159, 36,164,248,107,198, 2,208,160,166,221, 72,229, -113, 10, 24,199, 21, 55, 95,128,189,229,176,101,201,126,218,136,213,251, 65, 75,139, 49,164, 82,249, 99, 86, 27,103, 36,161, 50, -233, 82, 22, 57,221, 9,192,203, 14, 59,205,140,242,163, 60,162, 65,250,242,180, 33,192, 82,180,165, 96,247, 10, 0,143,219,170, -147,196,127, 5, 56, 23,196,226,149, 89,229, 28,148,121,204, 74, 17, 43,169, 25, 98,168,208, 62,202, 73,169, 94, 41,209,127, 84, - 75, 27, 50, 11,136,217, 1, 55,183,188, 54,241,191,143, 60, 47, 87,165,200,171, 99,172,201,165,114,239, 65, 86,173, 45, 54,179, -246,158, 61, 46,146,192,237,250,198, 41, 21, 92,216,200,174, 64,180, 88,213,177,251,198,219,222, 2,182,186,252, 11, 10,228,255, - 0,246, 90,178, 91,207,151,233,189,211,147, 31, 62,108,117,239,167,207,108,248, 36,222, 91,238,100,115, 87,165,127, 3,105, 10, -113, 62, 60,170,176,241,106, 37,172,142,111,119,166, 48,172,135, 49,156,120,203,100, 12,103,174, 48,100, 58,105,148,245, 30, 99, - 13,130,123,231,195, 26, 33,168,236, 50, 48,211, 77,182, 63,217, 72, 31,208, 53, 83,100,223, 67,239, 15,232,107, 82,167, 52,206, -115, 28,238,154, 50, 15,179,179, 69, 4,111, 99,246,100,120, 99, 18,149, 61,249,111, 17,244, 97,139,115, 58,250, 99,248,133, 95, - 67, 37, 46, 85,146,229,217, 29, 76,128,143,104, 85,150,162, 68,184,251, 81,164,210, 24,131, 14,220,200,229, 95,240,156,107,150, -193,112,227,103,236,125, 9,184, 52,136,161,218,131,220,143, 84,106,146,130, 29,168, 84,101, 37, 56, 15, 74,120, 32, 14, 80, 10, -130, 27, 64, 13,182, 9, 8, 72,201, 39,100,244,180,181,212,185, 94, 87,151,100,153,125, 38, 85,148,209, 71,151,101,180, 40, 35, -134, 24,148, 36,113,160,232, 21, 70,221,110, 73,234,204, 75, 49, 36,147,142, 85,205,115, 92,203, 59,204,106,243,108,222,182, 76, -199, 50,175,115, 36,211,204,197,228,145,207, 82,204,119,233, 96, 7, 69, 80, 21, 64, 0, 0,180,180,180,181,191,134,252, 45, 45, - 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12, 45, 45, 45, 45, 12, 12,104, 15, 16,151, 95, 24, 54,239, 17,123, - 83,103,109, 12, 84,212, 54, 75,118, 69,182, 47, 27,216,219,148, 90,131,187, 24,189,180,184,101, 92,219,132, 23, 42, 76, 82, 37, -139,234,202,151, 77,160,210,125,241,138,135,213,181, 58,116,137,140,248, 9, 90, 64,231,117, 43,136,239,106,117,199, 89,185,105, -117, 10, 52,219, 42, 68,189,220,218,235, 50,177, 79,135,177,151,213,106,118,216, 64,186,248,146,182,109, 10,197, 94,196,168,220, - 27, 33, 79,182,247, 3,109, 33,236,132,171,166,163, 88,171, 53,117,221,106,132,229, 62, 29, 72,212, 41,241, 36, 73,106, 28,131, - 84,132, 47, 28,201, 10,199,108,140,227, 84, 76, 88,197, 69, 69,150,202,143,115,203,215,203,250,134,165, 20, 60, 69, 77, 73, 4, -113, 75,195,212, 85,111, 18,196, 57,143, 18,150,102,142, 70, 98,238, 24, 50,182,184,244, 70,234, 2,130, 99, 89, 13,218, 73,249, -209, 44,195,134, 42,235,106, 36,154, 46, 37,175,163,142, 87,148,152,210,102, 8,171, 36,106,161, 35, 42,200,203,203,148, 73, 42, - 49, 44, 87,154,209,139, 36,116,252,158, 18,111, 54,228,113,174,250,120,178,217,207,122,222, 77,206,102,216,218,235, 50,169,182, -183,141, 11, 96,170,118,165,187, 86,174, 81, 46, 93,174,102,187,109,151, 87,181,116,241,125,223,117,200,235,187,229, 59, 34,206, -174, 87,232,109, 83,149, 52, 24,150,188,232,144,226,189,121,221,222, 37,189,160,182,229,237,191,208,108, 59, 58,250,169,203,183, -173,190, 38,157,179,108,216,155, 3, 85,170, 88,180,107, 78,206,216,154,213,197,195,166,226,216,251,164,154, 35,177,247, 99,117, - 46, 45,225,139,109,211,166, 90,113,234, 19,223, 67, 85,233,113, 87,111, 66, 52,228,205,149,220, 51, 22, 58,149,204, 89, 65, 80, - 24, 4,167,168, 30,131,211, 95, 12, 72,196,133, 22, 91, 42, 29, 1,229, 25, 3,211, 75,197,197, 20,136,176,163,240,229, 36,235, - 18,176, 33,145, 44,210, 60, 84,241,180,133, 86, 48,170, 73,131,152, 2, 42,144,206,124,197, 76,130, 93,105,120, 70,177,218,103, -143,138, 43, 96,121, 93, 72, 43, 36,132,172,105, 45, 76,169, 24,102,149,157,128, 21, 28,178,100,103, 82,136, 60,129,132, 70, 29, - 28,224,214,249,226, 54,181, 83,222,219, 55,136, 39, 43, 85,241,100, 94,246,107, 27,119,127, 86,246,245,141,190,145,120, 91, 23, -102,204,109,181,247, 91,109,168,212,184, 17,169,213,150, 40,215,245,201,118,208,253,234, 19, 64,161,116, 5, 67,154,165,207,141, - 37, 70, 41, 62,217,106,175, 29, 60,104,113, 79, 93,164, 80,248, 84,226,128,108,102,199,212,235,214, 38,211,193,135,178, 27,169, - 46,147,113, 46, 44,255, 0,115,185,183, 61, 15,199,182, 20,196,245, 87, 38,211,216, 92, 23,154, 60,130,143, 6,156,148,254,148, -200,113,217,206, 33,150,155, 57, 67,105, 73,237,144, 49,211,211, 67,187, 77,128,242,138,221,136,195,139, 61,212,180, 5, 19,247, -157,111,240,175, 28,175, 11,103,243,113, 12, 25, 5, 53, 85, 91, 66,177, 70,164,152,227,133,180, 34, 75, 44,105, 26,133, 87,155, - 75, 19,164, 5, 65, 35,170, 0,166,216,110,227, 15, 15,159,139,248,110, 14, 25,168,226, 74,186, 58, 36,153,165,149,192, 89,101, -157, 4,143, 36, 48,202,242,146,204,144,234, 80, 53, 18,206, 99,141,156,150, 92,126,116,252, 63,207,246,190,240,179,111, 84, 45, -109,128,218, 78, 44,118,210,133, 86,172, 61, 95,169,195,163,240,195,113, 77,114,125, 93,248,145, 32,174,108,185,213,189,175,149, - 33,245,136,112, 98,182,132,169,210,134,210,214, 16,148,229, 89,216, 95,229,123,244,129, 63,242,126, 52, 63,251,173,204,255, 0, -254, 61,169,231,253, 81, 76,255, 0,200, 99,127,246, 73,254,173, 47,170, 41,159,249, 12,111,254,201, 63,213,169,173, 79,140,244, -149,147,203, 85, 89,225,206, 77, 85, 85, 49,212,242, 73, 10,188,142,118,221,157,162, 44,199,110,164,147,211,211, 16, 58, 95, 2, -107,104,105,226,164,162,241, 71, 60,163,164,128,105, 72,162,157,227,141, 23,246, 81, 18, 80,170, 58,236, 0, 27,226, 37,155,115, -253,212,126, 49,125,153,188,113,237,174,247,198,222,153, 59,193, 46,175, 96, 72,219,250, 22,228,109,202,182,202,225,187,172,138, - 21, 82,137,114,222,246,157,180,203,246,205, 29, 85, 20,205,129, 74,154,216, 8, 67,198, 83,220,180,197, 40, 34, 90,211,174,108, -123, 29, 56, 93,226,149, 28,122,109, 85,237, 78,219,189,198,219,219,123,106,234,245,201,187,145,114,220,214,181,114,217,129, 10, -149, 34,223,173, 81,102, 90, 18, 69,110, 36,113, 58,173, 81,126, 98, 97,251,154, 2,223,101, 46, 57, 49, 77,165, 17, 22,226, 63, - 64, 22, 96,195,143,159, 6, 51, 45,115, 12, 43,145, 0,100,124,245, 69,170, 85, 61,151,140,134,162, 50,135,137, 36,184,148, 36, - 40,147,243,198,154,161,241,114,174,151, 42,226,204,162,135,135, 40,168,169, 56,157,157,130, 68,186, 35,166,230,211, 71, 75, 40, - 72,213, 66, 72,165, 35, 14,129,130,132,145,152,182,181, 58,112,239, 63,130,212, 85,153,191, 6,103, 85,252, 79, 95, 95, 91,194, - 43, 26,151,149,181,201, 87,201,170,146,174, 18,242,179, 23,141,131,202, 81,202,150, 47, 18,162,175, 45,134,178, 91, 28,254, 11, - 94, 39,235,248,104,231,255, 0,249,185, 70,127,110,177,109,192,143, 34, 93,135,122,196,136,195,210,165, 74,180,238, 40,241,163, - 71,105,111, 72,145, 33,234, 68,198,217, 97,134, 91, 73, 83,175, 45,197, 37, 41, 74, 65, 82,148,160, 0, 36,235, 46,210, 35, 32, -131,216,244, 58,169, 35,115, 27,163,129,114,132, 31,220,111,139,166, 68, 18, 35,161, 54, 14, 8,253,226,216,132, 15,176,167,134, -142, 35,182,159,142,131,114,110,159, 15,251,217,182,150,232,218, 43,214,152,107,251,129,181, 87,213,153, 69,250,202, 85,110,207, -118, 45, 59,235, 91,142,131, 25,143,127,113,168,178, 84,219, 62, 39,136,180,199,112,165, 36, 33, 68,117, 47,219,205,195, 55, 28, -251,238, 54, 30,243,225,142, 29, 70,225,177,182, 89, 85,139,166,109,187, 96,220, 82, 40,155,167, 77,220,121,146, 24,110, 13,239, - 72,138,151, 99, 46,172,220, 26, 44, 70, 24,129,245,108,167, 42,145,159,169,206, 83,113, 11, 78,151, 83, 34,132,192,132,135, 60, -100,198,101, 46,147,146,224, 64, 11,207,219,162, 84,132,172, 20,173, 41, 82, 79,112,160, 8, 63,113,213,149,152,120,159,153, 87, -113,173, 39, 27,140,170,149, 43,105, 34, 16,136, 36, 15, 44, 37,116, 73, 27, 19,114,172, 24,164,140, 1, 7,202,108,119,232,106, -156,179,194, 76,171, 47,224, 42,222, 1,108,226,174, 74, 26,217,140,230,162, 50,144,206,175,174, 41, 20, 11, 43,161, 85,120,148, -144, 65,212, 46, 54,216,136, 25,208, 61,170, 30,218,237,168,164, 39,110,107,112,119, 42,161, 86,167,180,154,124, 73,123,145,195, -123,147,175,152, 73, 79, 52,102, 82,236,185, 86,131, 14,213,229, 7, 80,172, 61, 80,106, 99,238,173, 39,196,113,206,163, 77,149, -151,192,119,180,211,218, 97,189, 44,110, 46,255, 0, 64,220,170, 74,107, 38, 36, 90,246,237,239,133, 26, 85,175, 26,139,111, 48, -234,221,106,157,101, 88, 47,198,128,235,144, 71,143, 49,200,112, 41, 20,248,116,144,252,135, 28,117,248,190, 58,222, 95,232, 6, -237, 2,142,250,185,220,129, 29, 74,245,240,211,253, 90, 50, 61, 62, 20, 79,251,222, 43, 45, 99,205, 8, 0,254, 56,212,132,120, -202,153,122,212, 79,195, 92, 13,149,240,246,109, 84,165, 90,170, 40,213,156,106,234, 81, 86, 56,128,223,205,165,153,208,176, 5, -209,237, 99, 26, 62, 5,190,100,244,176,113, 87,136, 57,191, 19,100,212,110,174,148,114,202,202,135, 79, 64,238,210,202, 78,215, - 82,200,169, 32, 82, 66, 58, 94,248,215,190, 20,248,114,178,184, 89,217, 43, 15,102, 44, 56, 70, 37,191,100,208,163,210,163, 45, -222, 85, 76,168, 74, 82,220,153, 87,173, 84,156, 72, 1,218,172,250,188,153,211, 37, 41, 41, 74, 21, 34,123,133,180, 33, 28,168, - 78,200,105,105,106,151,168,168,158,174,121,234,170,101,105,234, 42, 93,164,145,216,221,157,220,150,102, 98,119, 44,204, 73, 39, -185, 56,189,233,169,169,232,233,169,232,233, 97, 90,122, 90, 84, 88,227,141, 5,149, 35, 69, 10,136,160,108, 21, 84, 0, 7, 96, - 48,180,180,180,180,142, 23,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194, -210,210,210,208,192,194,210,210,210,208,192,194,210,210,210,208,192,194,214, 53,117,217,246,213,239, 67,171,219,183, 69, 34, 21, - 94,149, 91,165, 79,163, 84, 24,146,195,107,113,112, 42,113, 93,135, 45,182, 95, 41,231,142,178,203,206,114,173, 5, 42, 66,136, - 82, 72, 80, 7, 89, 46,150,178, 24,169, 5, 77,136,238, 48, 8, 7, 98, 46, 49,196,171,235,133,221,241,219,202,252,170, 5, 5, -186,133,255, 0,110, 54,227,142, 91,183, 24,180, 43, 87, 5, 89,218, 66,156, 34, 28, 91,130,109, 22,174,210, 93,171,176,128, 27, -113,199, 24,105,215,249, 3,170, 47, 40,169,247, 49, 56,124, 52,111,189,235, 81,137, 67,173, 91, 85,184,244, 57,175, 52,212,250, -127,240, 58,177,105,211,231, 52,181, 0, 89,174,220, 21,122,163,202, 77, 11,186,164,199, 97, 13, 46, 66, 17,224,173,197,178,183, - 24,123,188, 58, 90,146,167, 20, 85,172, 74,141, 2, 59,168,182,162, 91,115,107, 92,168, 54,223,184,232,119,216, 13,176,222,114, -248,203, 92, 57, 11,126,155,126, 7,249,225,157,217,141,156,160,236,245,178,138, 85, 60, 53, 50,183, 53, 12, 57, 94,173,134, 82, -202,230,190,210, 57, 90,139, 21,176, 63,193,105, 44, 36,169, 17,217, 29, 0, 37,106,202,214,163,167,139, 75, 75, 81,233,166,150, -162, 87,154,103, 50, 73, 33,185, 39,231, 96, 58, 0, 54, 3, 97,182, 55,149, 85, 20, 42,139, 42,244,194,210,210,210,210, 88, 54, - 22,150,150,150,134, 6, 32,111,253,251,111,253, 25,127,246,206,255, 0,117, 13, 84, 31, 77,167, 61,189,153,157,251,127,142,111, -251,168,234, 6,201, 25, 61, 71, 79,216,116, 66, 7, 92,227,160,237,253, 29,191, 61,180,202,213,149, 2,195, 94,231,220,191,150, - 52,249,178,126,215,224, 63, 44, 79, 25, 63, 77,151, 39,255, 0, 6,119,218,127,150,103,111,251, 41,107,223,247,236, 95,244,103, -255, 0,219, 47,253,212,245, 4, 4, 2, 7, 95, 63, 47,223,170,169, 25, 61,186,122,250, 31, 81,243,210,126,219, 83,255, 0, 19, -240, 95,203, 24,230,201,127,181,183,192, 98,119,163,233,176,103, 24,246,104, 30,163,167,248,229,121,231, 24,255, 0, 53, 62,250, -168, 62,154,225, 35,175,179, 71, 31, 47,229,149,254,234,154,130, 42, 65,207, 67,215,212,255, 0, 96,209, 9,238, 1, 57,207, 66, -113,249,198,136,213,245, 67, 97, 37,143,253, 43,249, 99, 60,217, 45,187,126, 3,242,196,238, 7,211, 87,201,199,247, 52,251,255, - 0,207, 39,240,255, 0,146,174,190,171,233,171,114,130,127,185,167,159,151,242,200,255, 0,117, 93, 65, 69, 9,235,159,151, 79, -207,231,190,171, 4,115, 15,151,207,215,229,233,211, 26, 76,230, 21,118, 63, 93,254, 85,254,156, 37,237, 18,245,215,248, 15,203, - 19,165, 79,211, 89, 73, 4,159,102,170, 83,233,158, 50,135,207,254,106,191, 45, 18,215,211, 80,241, 19,205,253,205, 94, 80,123, -127,142, 62,115,255, 0,101,109, 65, 56, 67,100,168, 18,128,163,223,185,239,242, 25,237,223, 87, 54,211,203,202, 0, 0,118, 29, - 49,229,158,131,238,210,103, 49,173, 22,250,254,191,225, 79,233,198, 13, 68,189,155,240, 31,150, 39, 74,159,166,146, 79,127,102, -191, 47,111,249, 99,122,255, 0,213, 99, 85, 71,211, 69,207,250, 54, 71, 94,199,249, 98,244,199,175,249,172,106, 11,137, 0,145, -159, 63, 79,199,240,209, 41, 7,203, 0,118, 57,237,143, 77, 96,230, 85,191,241,191,202,159,211,140,123, 76,223,183,248, 15,203, - 19,158,254,253, 11,254,141,175,251, 98,127,186,206,189,143,166,127,144, 15,247, 54,241,159,249,225,255, 0,186,214,160,208,144, - 8,234,123,244,199,237,253,218, 36, 39, 29,124,250,119, 29,189,116,145,205, 43,199,251,255, 0,242, 39,187,252, 56,199,180,205, -109,218,196,123,135,229,137,201,143,166,116, 79,250, 55, 15,111,252,240,187,127,217,107, 94,199,211, 56, 39,191,179,119, 29, 51, -254,120, 95,111,127,241, 91,233,219, 80,111, 66,135,111, 60,254, 7, 24,209, 8,238,125, 72,239,223, 31,119,231,182,138,115, 90, -253,254,190,214,255, 0, 10,127, 78, 11,237, 51,116, 50, 88,250,233, 31,150, 39, 26, 62,153,166,112, 71,179,131, 57,237,142, 48, - 63,221,115, 94,135,211, 49, 57, 0,251, 55,241,156,227,252,112, 51,219,254,171,154,131,194, 82, 70, 48, 64,232, 51,143, 33,242, -252, 52, 66, 49,158,191, 96,244,255, 0,142,136,115,108,195,114, 42, 46, 7,248, 19,250, 48, 95,107,159,246,255, 0, 5,252,177, - 56, 65,244,203, 15,159,179,135, 31,245,191,207,255, 0,149,221,122,254,252,175,166,127,185,197,246,143,229,127,219,211,254, 75, -218,132, 10,112, 10,114,160, 9, 29, 7,168, 61,127,167, 94,243,144, 72,238,122,100,244,207,207, 69,253, 47,152,255, 0,204,127, -146, 63,233,198, 13, 93, 64,255, 0,121,248, 47,229,137,189,127,126, 89,255, 0, 71, 16,255, 0,239,127,229,235,254,107,186, 95, -223,150,127,209,197,255, 0,107,255, 0,247, 93,212, 32,130, 70, 78, 83,156,121,142,227,167, 97,235,175,129, 39, 36, 96,158,227, -228, 15,174,116, 63, 75,230, 63,243, 31,228, 79,233,198, 61,174,163,175, 50,254,235, 47,229,137,191,255, 0,126, 86,112, 79,247, - 56,187, 99, 63,227,127,235,216,255, 0,154,238,144,250,101,100,228, 15,103, 9,200, 56,255, 0, 59,241,143,159, 95,228,189,168, - 65, 28, 19,201,158,160, 12,125,189, 71, 93,124,228, 56, 61, 58,142,199,215,215, 67,244,190, 96,127,246,143,242, 39,244,227, 34, -170,163,188,157, 61,195,242,196,224, 26,250,101, 42,117,105, 66,125,155,238,173, 74, 90, 16,134,216,226,229,114, 31,117,110, 45, - 45,180,204,120,237,112,184, 87, 34, 67,142,173, 8,109,180, 2,183, 28,113, 40, 64, 42, 80, 26,145,125,139,237, 28,187,106,123, -107, 97, 92,219,161,195,163, 59, 99,184,215, 61,173, 2,228,186,182,189,141,220, 55,106,172, 25, 85, 68,137, 81,173,154,141,204, -118,206,154,106, 53,248,244,231,225,154,131,105,167, 50,136,178,214,252, 70,220,146, 35,151,215,249,251,123, 18,120, 79,167,111, -111, 18,114,247,186,251,163, 49, 85,218,222, 24,163,210,111, 53,194,156,128,245, 62,228,222, 74,163,175, 29,169,183,157, 96,172, - 9,108, 83,222,131, 80,184,101, 52,174,132,209, 41,225, 89, 75,196, 25,105, 85,110, 39,101, 73,126,161, 41,197,174, 75,239,169, -114,139,171,241, 63,239,176,162,251,170, 86,121,157, 65, 89,113, 67, 7, 35,169, 4, 18,115, 82,113,247,137,217,238, 79, 87, 22, - 91,147,230, 34, 26,136,198,185,156, 69, 79, 33, 23,221, 80, 44,145, 56, 6,222, 98,116,157,153,122,110, 71, 99,125, 27, 60, 13, -161,241, 3, 47,175,226,174, 50,162,122,236,146, 71, 48, 81, 64, 36,150, 14,107, 70,214,150,114,244,239, 20,133,117,222, 36, 93, - 65,110,172, 77,203, 45,186,186,215,180, 61,151,139, 72, 78,210, 40, 56,230, 50,147,125, 47,149, 37, 77,151, 65,231,254, 5, 97, - 72, 9,229,201,242,231, 29, 51,240,235, 38,139,199, 80,146,160,145,181,193, 5,104, 75,168,255, 0,223,202, 78, 90, 39,195, 82, -214, 13,164, 11,120,116,164, 96,142,161, 65, 94,120,215, 37, 97,212,227,199,149, 78, 9,151, 17,105,146, 42, 43,109,228,184,158, - 66,150,152, 96,162, 49, 81, 60,133,229, 15, 16,124, 93, 73, 25,192,198,117,127,135,119,198,133, 85,181,154, 92,152,232, 50, 28, -186,224, 45, 77,133,168,134,145, 77,106,160,134,156, 25,228,241,210,136, 43, 91,107, 60,205,168,199, 90, 80, 50,188, 26,248,120, -191,199, 91,223, 62,222,224, 91,217,168,122, 27,111,255, 0,163,123,205,183,183,173,183,183, 70,215,125, 26,252, 47,211,253,139, -131,216, 17, 28,143,189,110,104,215, 17,164,174,118, 53,123,111, 17, 95, 80, 78,224,219, 29,102,143,198,144,125,124,131,109, 74, - 72, 74, 85,145,120,165,105,198, 84,135, 7, 50,109,142,133, 46,164,167, 31,102,112, 78, 53,145,195,226,200, 74,117, 13, 42,195, - 67, 36,164, 41,197, 27,185, 11, 13, 21, 41, 73,194,147,252, 30, 10, 94, 8, 28,197, 41, 32, 5,103, 39,166,121,115, 2,240,167, - 70, 20, 80,180,187,134,229,185, 73,145, 29,134,150,242,101, 73,157, 30, 64, 97,134,152, 42,230,117,245, 61, 19,152,140,164, 39, - 42, 42, 1, 32,105,211,165, 85, 16,235,177,228, 37,200,205, 55, 48,170, 47,130,211,169,144,168,175,186,194,157, 76, 57, 13,129, -240,203, 11,104,243,140, 39,147,168, 74, 84, 64,202,195,197,222, 56, 99,182,126, 45,113,183,178,209,131, 98, 7, 66,105,253,247, -233,115,110,128, 3,138,247, 55,240, 35,129, 40,195, 21,225,118,129, 72,107, 19, 85, 94,119, 82,194,219,213, 27,146,171,175, 96, - 71,152,124, 11,113,237, 58,246,213,110,191,179,158,220,176, 55, 74, 7, 3, 3,126,182, 34,238,121,155,106,229,220,202, 87, 17, - 78, 89, 19,118,199,113,165,190,239,212,246,205,239,105,183,176,245,193, 6,220,171, 67, 74, 62,167,174,138,129,141, 46,106, 28, -166,201,143, 6, 89,138,153,124,121, 63, 76,188,131,211,217,192, 8,233,212,113,129,228,124,255, 0,205,115,211, 93,240,187,108, - 11, 23,121, 44, 27,215,104,183, 62,212,167,238, 22,218,110, 61,183, 91,177,239,203, 66,160,208, 85, 46,224,160, 85, 98, 2,253, - 61,213,161,121,131, 48, 56,162,244, 73, 72, 34, 68, 57,212,248,242,227, 45,183,153,109, 73,252,231,120,230,246,106,239,183, 6, - 60, 82, 94,220, 62, 83,108,205,193,221, 91, 81,182, 13,241,179, 87,213,187,104,220, 55, 36,155,231,104,106,242,164, 10, 21, 78, -166,154, 13, 41,239, 10,232,165,186,219,212,154,235,124,169,228,168,210, 87, 32, 1, 30,100,114,171, 79,131, 60, 72,204,115,136, - 37,165,205, 43, 2, 87, 83,141, 66, 67, 28, 72,146,161, 61,172,129, 53,165,192,178,216, 50, 16, 84, 54,151,115,201,126, 41,240, - 67,240,133, 90, 87,229,108, 70, 77, 84,193, 66, 19,169,160,115,246, 86,238, 90, 66,143,111, 41,114, 72,109,181, 29, 64, 44,156, -255, 0,191, 47,234, 71,247, 56, 71, 65,159,243,192,245,237,255, 0, 37,221,124,254,252,192,255, 0,251,184, 58,127,233,129,251, -191,146,230,161, 89, 94,176, 47,187, 81,114, 17,117,216,247,149,174, 99,171,195,147,252, 35,181,171,244, 20,198,115,152,128,219, -235,171,211, 88, 13, 56, 84, 8, 9, 81, 4,144, 64, 7, 88,123, 74, 75,159, 19, 69, 14,164, 21, 0,180, 45, 46, 36, 20,146, 20, - 9,109, 68, 2, 15,124,246,212,249, 51,218,185, 55,142,181, 92,123,132,103,248, 46, 42, 15,110,150,246, 51, 0,111,208,133,191, -238,181,241, 56, 81,244,203,137,239,236,225,192, 29,201,226,255, 0,215,254,171,186,248,126,153,120, 29, 15,179,135,175,203,139, -254,159,143,242, 93,212, 32, 71,158, 48, 9,235,223,204,253,191,118,188,167, 39,161,193,199, 83,242, 36,159,221,165,127, 75,230, - 63,243, 31,228, 79,233,193,189,170,162,223,222,111,255, 0, 72,252,177, 56, 1,244,203,201, 56, 30,206, 14,191,250, 95,255, 0, -186,238,190, 43,233,152, 4,128,127,185,195,159, 80, 56,191,234, 62,223,241, 93,212, 32,142,124,128,239,248,116,243,251,245,224, - 2, 84,115,211, 3,186,122,117, 63,111,200,157, 15,210,249,143,252,199,249, 19,250,113,159,106,159,254, 39,224, 63, 44, 78, 11, -251,242,241,128,127,185,197,247,127, 43,254,191,183,133,221, 47,239,203,198, 79,253,206, 35,129,231,252,175,186,125,255, 0,226, -187,211, 80,130, 66, 58,149, 12,115,116, 4,159, 63,159,111,206, 53,240,167,226,206, 58,142,135, 29,189, 58,232,126,151,204,127, -230, 63,200,159,211,129,237,117, 31,183,248, 47,229,137,190, 15,166, 96, 9, 35,251,156, 36, 99,204,241,125,223,236,255, 0, 21, -237,123, 31, 76,184, 28,127,220,226,239,156,127,141,247,167,127,249, 47,106, 16, 24,207,151,108,247,244,199, 92,126,124,181,244, -117,192,232, 61, 63,183,166,135,233,124,199,254, 99,252,145,255, 0, 78, 49,237, 85, 23, 31, 89,248, 47,229,137,191,143,166, 88, - 79,250, 56,122,245,233,252,175,255, 0,163,252, 87,122,235,233,250,101,100,119,246,112,227, 63,243,191,235,248,127, 37,221, 66, - 19, 3,190, 50, 71, 94,159,213,159,150,190,247, 32,249,119,193, 25,253,190, 93,244, 63, 75,230, 63,243, 31,228,143,250,112, 61, -170,163,254, 39,224,191,150, 38,238,126,153,113, 31,232,224, 56,245,254, 87,248,253,159,201,119,166,169, 43,233,153, 17,254,141, -252,140,227, 63,203, 3, 30, 93,255, 0,205,115, 80,137, 32,156,156, 0, 51,142,224,117,245, 61,123,245,213, 5, 32, 17,128, 51, -158,253,127, 63,145,172,254,151,204, 44,127,180,111,255, 0, 68,127,211,140,251, 84,255, 0,183,248, 15,203, 19,121, 63, 76,212, -130,113,236,221, 39, 7, 31,231,129,248,255, 0,201,111, 95, 15,211, 55, 35,183,179,120, 30,153,255, 0, 60, 47,217,254,107,125, -245, 7,245,128, 51,129,133,119,198, 14, 62,255, 0, 77, 10,172,140,244, 29,122,244,245, 31,111,111,237,209,151, 54,175,239, 83, -123,255, 0,129, 63,167, 25,246,169,251,191,224, 63, 44, 78, 33, 95, 76,228,167,253, 27,185, 30,191,203, 11,253,214,245, 72,253, - 51,220, 28,127,115,115, 63,245,194,255, 0,117,175, 77, 65,216,247,233,128,113,149, 30,227, 30,127,111,150,188, 16,112,114, 0, -207, 92, 14,248,249,244,232, 59,232,227, 53,175, 32, 30,127, 95,240,167,244,224,235, 81, 49, 23, 50,126, 3,242,196,226, 85,244, -208, 57,127,209,181,145,235,252,176,255, 0,221,103, 84,207,211, 67, 35,253, 27, 63,135, 24,191,238,177,168, 57, 45, 35, 56,193, -193, 29,252,191, 31, 95,234,208,235, 73, 57,230, 30,125,255, 0,163, 74, 46,103, 90,127,223,127,149, 63,167, 0,212,205,183,155, -175,184,126, 88,156,137,250,105, 24,200,254,230,199,108, 99,252,113,123,255, 0,217, 99, 84,213,244,210,249,127,209,175,159,250, -227,126,239,228,175,168, 52, 41, 61, 72, 62, 89,255, 0,142,168, 41, 56, 62,164,103, 31,126, 58,232,227, 50,173,255, 0,141,127, -251, 83,250,113,145, 81, 41,232,255, 0,128,252,177, 57,179,244,211,113,219,217,173,147,233,252,177,255, 0,221, 95, 94, 15,211, - 80,198,127,238,106,246,242,254, 88,253,127,254,213,181, 6, 5,142,164,147,229,220,116,200,251, 71, 97,211, 84,150, 6, 51,159, -179,211,246,104,227, 48,172,218,243, 94,253,244,175,244,227, 62,209, 55,237,254, 3,242,196,231,207,211, 85, 32,103,251,154,121, -199,252,242,113,255, 0,229, 87, 84,149,244,214, 72,255, 0, 70,150, 71,254,153, 61,191,236,169,168, 45,169, 56,237,219,247,143, - 95,191, 67, 44,117, 35, 3,175, 92,104,195, 48,171,190,242,237,255, 0, 74,254, 88, 56,158, 75,253,187,253,195,221,238,196,233, -215,244,215,249, 15,254, 13, 12,143, 95,229,149,251,191,146,159,174,168, 31,166,202, 57,185, 71,179, 56,159, 60,255, 0, 44,190, -159,179,133, 62,250,130,147,205,243,116, 35,207,203,167,159, 76,103,203,250,244, 42,153, 60,221,200, 3,183,150, 62,206,158,154, - 88, 86,212,216,125,109,255, 0,237, 95,203, 6,231, 73,183,159,240, 24,157,183,247,236,196,140,143,102,104,199,110,188,102,224, -231,211, 31,201, 71, 94, 15,211,105,229,239,236,204,199,253,115,191,221, 71, 80, 71, 82, 0,206, 51,208,227,167, 94,222,154, 25, -105, 72, 7, 35,174,124,242,122,252,243,246,104,235, 89, 57, 27,203,191,192,126, 88,199, 58, 77,183,189,253,195, 19,188,254,253, -183,254,140,191,251,103,127,186,134,150,160,120, 80, 60,142, 63,111,239,210,209,253,170,163,254, 39,224,191,150, 13,205,147,246, -191, 1,249, 99,234, 65, 0, 3,249,235,162,146, 15, 64,123,244, 31,156,106,138, 70, 79,203,207,243,246,232,132, 12,159,179,175, -223,157,105, 22,185,191, 75,116,194,120,174, 1, 61,189,113,249,249,106,176, 0, 96,121,121,254,253, 83, 70,122,244,200, 36, 12, -231,183,231, 58,174,144, 14,115,158,131, 61, 52, 76, 12,123, 74, 74, 73,234, 49,249,252, 52, 66, 7, 76,250,254,204,106,130, 50, - 71, 92,224,158,153,235,223,231,231,253,154, 41,180,246, 7,203,169,252,253,186, 65,141,205,241,131,176,191,166, 43,163, 29,135, -197,143, 79,159,217,162,144,140,142,131, 3,207,237,253,231, 84, 17,208,244, 3,175,125, 20,140,253,223,191, 68, 98, 69,192,194, - 36, 91,248,227,210, 7, 98, 79, 83,230,122,244,253,253,180, 72,193, 3,207,211,167,159,110,218,164,145,147,246,117,209, 9,237, -140,128, 1,200,251, 71,223,219, 73, 49,185,233,108, 99, 21, 18, 0,193,193,235,223, 61,241,233,162, 83,140, 14,157, 60,134,124, -191,118,168,164,115, 31,219,247,116,237,162, 80,158,163,167, 65,235,162,147, 97,115,219, 4,244, 23,177,255, 0,199,207,250, 98, -170, 64,242, 3,229,162, 82, 9,192,249,119,249,252,245,118,183, 45,171,130,238,172, 83,173,203, 86,135, 85,184,238, 26,180,164, -196,164, 80,104, 52,233,117,122,213, 90, 99,129,106, 68, 58,109, 46,158,203,143,206,146,164,161,100, 33,180, 40,242,182,165, 16, - 2, 73,213,222,187, 99, 94,182,156,151, 98, 93, 54,117,215,108, 74, 96,148, 63, 30,227,182,235,180, 39, 90, 90, 78, 20, 28, 77, - 82,158,215, 41,230, 7, 90,109, 60, 43, 32,137,165, 81, 43, 11,133, 36,106,181,237,123,117,183,107,224,250, 36,229,180,162, 54, - 49, 41,179, 56, 83,164, 27, 94,197,173,164, 27, 88,218,247,182,248,198, 80,144,123,128, 8,207, 65,220,156,249,122,157, 86, 70, - 62, 33,143,179,215,239,252, 63,110,188, 32, 18, 50,217, 14, 1,220,161, 73,115,211,185, 65, 56,237,162, 27, 73, 86, 58,128,125, - 7,127, 95, 61,101,136,223,126,191,127,195, 26,250,131, 11,131,127,120,239,138,168, 73, 56,233,212, 12, 30,190, 64,234,179,125, - 79,108,128, 65, 3,191,221,251, 53,245, 40,236, 58,103,190,122,253,191,187, 85,144,140, 43,169, 3,207,228,114, 15, 95,217,164, -240, 49, 84, 39, 42,193,232, 59,129,129,148,140,118,207,225,175, 74,108,245, 4,242,143, 47, 81,233,175,160,149,103, 24, 10,245, - 30, 99,243,231,175, 67,174, 2,178, 51,230, 48,123,121,159,195,246,235, 24,199,195,174, 40,165, 56,206, 85,212,156,142,157,254, -204,246,215,148,164, 2, 50,163,223,238,235,242,243, 58,172,224,201, 29,122,122,142,157, 51,140,159,151, 93, 92,168,148, 58,189, -195, 84,167, 81, 40,116,202,141,102,177, 88,152,213, 58,145, 73,165, 65,153, 85,171, 85,170, 18, 20, 16,196, 10, 77, 42, 3, 46, - 72,169,206, 90,136, 8,101,134,214,226,179,209, 58,195, 50,162,150,118, 10,171,185, 39, 96, 48, 91,133, 2,231, 97,181,254, 54, -183,239,197,153, 93,240, 57, 64, 30,106, 3,174, 51,128, 61, 53,233, 88, 67, 69,215, 84, 27,101, 56,241, 29, 89, 8,105, 40,238, -165, 21,172,129,140,103, 82, 39,224,247,232,242,113, 5,186, 44,209,175,126, 45,110,120,252, 41,109,245, 65, 45, 76, 98,212,168, -192,137,115,111,205,126, 34,210,167, 80,219, 22, 95,189, 38, 13,132,167, 80,143,133, 85,151,221,152, 18,178, 69, 47,152, 99, 82, - 25,217,126, 4,125,158,220, 32, 70,111,248,177,225,226,214,187,174,202, 84,112,204,221,208,222,132,198,220,171,212,205,121,104, - 12, 72,241,238, 54,151, 77,163,211,164, 45, 56,103,220,169,241,154,109, 74,229, 79, 82, 64,134,103, 28,115,148,101,101,145, 24, -213,204,187, 89, 14,215,247,144, 9,248, 27, 91,212,226,216,224,191, 5,184,251,142, 12,111,150,229, 38,134,142, 80, 8,158,164, - 20, 4, 18, 0,100,140,217,216, 94,195,204, 99,185,176, 23, 36, 3,170,254,203, 46, 26, 46, 77,165,224, 39,102,233,180,203, 98, -123, 55, 94,240,135,247,210,247,144,229, 50, 82, 28,149, 42,249, 17,191,130, 80, 39,169,184,229, 79,197,133, 96,194,183,154,100, -100, 99,197,117, 73, 37, 43, 81, 86,234, 87,236,203,238,132,204, 33, 46,221,170, 32,138,139, 45, 45,243, 6, 98, 99, 20,165,137, -143,123,195,179, 60, 34, 27, 65,240,249, 15, 57, 79, 42,214, 17,130, 72, 35, 99,155,223, 42,234,221,136,202,101,194,143, 66,171, -184,105,112,211, 76, 5,132,211,101,181, 28,123,180,100, 71, 82, 83,238,168, 82, 80,227, 9, 67, 73, 8, 14, 54,132, 97,180, 20, -130, 37, 39,125, 42,234,171,170,153, 34,124,151,131,206,170, 19, 32, 54, 57,101,207,141,200,137,172, 48, 57,190, 37, 8,222, 27, -165, 60,170, 39, 42, 9, 10,109, 42, 35,158,243, 89,104,243,106,250,186,249, 38,156,203, 86,236,231,104,202,139,157,149, 87, 85, -236, 1, 10,190,110,130,198,230,248,244,231,129,168,248,183,129,184,107, 38,225,202, 14, 30,163,155, 47,200,105, 99, 77, 38, 89, -121,146,114,215, 68,146, 59, 8,236,178, 22, 87,121, 1, 82, 69,181, 95, 73, 7, 26, 81, 90,169, 61, 79,168,208,167,204, 91, 44, -184,170,148,168, 83, 66, 11,141, 70,124, 78,167, 84, 35, 51, 29,198, 66,130, 11, 8,121,168,165, 36,146,181, 41, 14, 44, 21, 40, -224, 88,100, 92,178, 84,252, 41, 12, 58,134,169,236,223, 20, 56, 17, 31, 91,158, 31,213,209,106, 45, 85,162,212, 38, 53,239, 67, -159,220,194,222,100,171, 9, 37, 41,111, 45,133, 37,120,214,238,238, 21,145,110,110,237, 53,104,141, 18,147, 65,187,160,213,226, - 84,226, 75, 44, 52,154, 77, 70,163,111,200,247,152,240,235,208,227,114,167,192,113, 14, 20, 25, 44,164, 59, 28,191,226, 56,135, -145,206,141,115, 74,240, 69, 70,139, 58,226, 93, 94,157, 42,151, 38,217,171,209,163,191, 18, 75, 72, 91,241,167,211,107,148, 86, -235, 13,120,141,225, 15,143,117,147,200,218,176,158,118,242,164,158, 78,241, 42,202,121,105,230, 69, 46, 37,138, 83,229, 96, 54, - 39, 96, 53, 11, 27, 48,191,217, 61,150,247, 32, 99,163,184, 11, 53,202,248,178,154, 72,228,131,244,126,105, 66,170,147,211, 72, -202,218, 17,229, 26, 94, 18, 8, 15, 27, 23,116, 14,187, 34, 6, 89, 17, 67,170, 54,206, 82,238,185,177,160,198, 76,229,153, 13, -208,110, 74, 4,198,235, 44, 56,149,128, 69,106, 35, 41,155, 33, 8,201, 46, 37,233,173,153, 1,226, 91, 60,203, 41, 39,176,223, -221,171,219,215,238, 40,178, 42,213,233, 10,163,209,233,181, 8,142, 38,114, 84,251,110,185, 54, 35,209, 31, 13,197, 91,138, 79, -143,206,150,212, 57,242,124, 38,229, 16, 84, 73,240,213,204, 75, 50,143, 87,173, 84,164, 89, 20,181,168, 46,225,151, 26,159, 71, -109, 65, 14,184,229,111,223,226,166, 53, 41,224,179,148, 64,114, 79,132, 90,113, 73,200,104,184,146,174,118,146, 79,101,175,201, -205,219,204,155,102,128,180, 26,125, 18, 28,150, 98,195,105, 10, 14, 85, 92,139, 49, 44, 74,113, 69,160, 66,149, 34, 98, 36, 58, - 20, 83,202,178,235,104, 56, 3, 26,125,225,170,120,167,231,215, 85,141,112,211,105, 68, 66,108, 25,200, 98, 1, 35,204, 2,129, -118, 32,139,221, 73,211,171, 88,164, 60,112,168,124,170,167, 38,200,178,103, 72, 51, 44,237,231,149,166, 81,253,213, 50, 10, 79, -172, 10, 67, 42,201, 44,175, 42,128,126,168, 90, 67,176, 82, 27, 44,157,124, 91, 86,163,172,210, 40,209, 33, 66,112,182,149, 48, -228,143, 4,186,243,202,144,134,136, 71, 50, 71, 59,195,196, 43,253, 81,128,121,143, 54, 9,213, 9,123,191, 49,153,245, 55, 35, -206,109,168,116,233,113, 41,236,173,165,115,203,126,108,150, 24,126, 66, 34,165,149,164, 32, 41,215,163,182,233, 78, 22,166,155, - 90,143, 48,108,145,165, 85, 75,154, 37, 70,161, 46,164,219,243,155,165,183, 95,162, 83, 41,204,184,183, 31,120, 38, 3,190, 45, -101,232,203,231, 40, 76,115, 83, 50,127, 74, 20,164,143,112, 40,242, 9, 31, 98, 92, 79, 79,129, 78,140,203, 11,121,138,245, 72, -215,101,185, 49,196, 39,158, 19, 18, 21, 36,165,158, 84,115,163,196,105,234,116,116, 44,252, 60,143,172,114,249,234,105,237,243, -234, 88,226,151,149, 96, 84, 34, 93, 22,215, 29,128, 4, 3,181,141,183,216,168,177,185,166,163,240,166,136, 67, 12,245,145, 53, - 84,238, 0,153,166,177, 96,204, 18, 87, 55,144,155,186, 70,146, 43, 45,216,107,212, 1, 59, 91,122,169, 91,167, 70,186,227,184, -197,203, 10,131, 87,163,189, 10, 69, 85,214,171,148, 90, 69,113,166, 35, 70, 56,136,137, 81,234,204,184,151,100,173,214,164,200, -104, 6,254, 24,254, 26,193, 30, 33,214,177,238,127, 2, 62,206, 30, 34,208,151,119,167,131, 14, 31,170, 51,171, 76, 70,150,170, -189, 2,208,133,100, 93, 16,152,156,135, 92, 15,166,232,176, 13, 54, 74,101,165,135, 57,220, 33, 69, 97,249, 39,169,192, 0, 26, - 93,210, 95,153, 46,142,195, 48,212,207,240,138, 76,170,188,247,144, 86,212,166, 41,209, 88, 17,109,147,200,217,240, 91,113,230, - 10, 86,128,162,166, 98,165, 96, 97,201, 9, 78,178,250, 69, 65,249,177,152,150,228,245, 53, 78,141,239,234,159, 40,211,220,125, -234,189,102,123,128,204,166,210,121, 79, 70,152, 89, 40,114, 90,121,185, 11, 65,166,199,232,221,121,189,200,179, 42,152, 93, 92, - 75,230,181,135,235, 18,204, 69,152,107,221, 75, 2, 72,234, 69,174, 46, 14, 32, 60, 65,225, 38, 67, 80,102,246,156,185, 96,142, - 64,186, 65, 26,216, 43, 6, 40, 6,149,221,157,212, 46,150, 93, 69, 68,110,116,131, 41,199, 40, 55,231,232,175,112, 39,186, 52, -233,149,158, 27,247,143,120, 56,116,174,173,153, 18, 34,210,174, 57,144,247,130,194,102, 74,185,149, 26, 52,200, 23, 10,162, 86, - 96,176, 86,182,130,146,213, 93,197,161,183, 1, 8, 39,149, 38, 53, 60,110,123, 1,189,162, 92, 20, 64,171,222, 82,246,226, 47, - 16,123, 65, 75, 15, 72,127,116,120,126, 77, 82,239, 20,202,115, 40, 46,174,117,219,183,111, 65, 69,126,215, 97, 8,232,243,169, -139, 58, 27, 74, 74,185,166,114,142, 99,250, 18,209, 46,181,183,224, 68,113,102, 52,106,107,177, 37,200, 76, 89,105,113,113,218, - 56,118, 12, 55,101, 50, 10,230, 23, 86, 85, 37,215,208, 22,167,192, 67, 77,169, 69,206,125,108,205,177,123,137, 81,132,228, 77, -240,230, 79,154,105,244,170, 68,172, 70,170, 45, 44,243, 23,229,205,128,165,133,198, 42, 67,110, 60,176,176,144,220, 86,155, 75, -156,175,184, 82, 37,249,111, 22, 85, 64,218, 42, 36, 46,150,235,171, 86,247,176,186,185, 5,172, 47,228,140,198, 46, 44, 72,234, -121,147,139, 60, 39, 92,176,153,168,117, 68,140,198,218, 71,144, 3, 98,138, 64,212,159,103, 84,140,214, 0, 32, 12, 28,131,124, -126, 50,105,198, 21,146, 20, 2,150,143,132,228, 7, 26, 81,109,214,212, 65,248, 92, 74,194,146,164,156, 20,169, 37, 42, 0,131, -165,219,161,234, 58, 18, 58,228,124,254, 71, 95,166,111,180,163,216, 17,194, 7, 31,240,238, 45,193,218,248,212,110, 26,248,173, -144,137, 82,206,229, 89, 52, 54, 25,176,183, 2,186,219, 40,113, 49,183,135,111,169, 74,106, 53, 73,215,223,228, 75,245,122,111, -187,214,152, 50, 20,235,206, 84, 2, 61,217,127,158,255, 0, 24,156, 20,241, 33,192,134,239,206,217, 30, 38, 54,238,125,139,118, -182,211,245, 43,118,166,211,159, 90,217,123,137,109, 53, 37,113,155,187,182,234,235,101,180,177,115, 80,148,226, 64,116, 0,220, -200, 46,171,221,234, 49, 34, 72, 30, 25,177,178,252,214,159, 48,137, 36,141,135,159,161, 6,234, 78,231, 77,251, 48, 0,221, 90, -199,202,197,117, 32,214,105,170,234, 26,172,186, 65, 29, 84,101, 65, 54, 87,177, 10,215, 32, 13,141,138,150,236, 14,199,245, 75, -111,141, 87,232, 7, 78,223, 46,186,240,164,147,156, 28, 3,215, 4,145,249,235,175, 68,129,142,189, 7, 76, 99,191,151,125, 32, - 65, 39, 61, 71, 76, 36,140,103,167,252,116,233,141, 78,248,166, 18, 9,199, 92,122,143, 95,234,239,175,161, 36,250,244,200, 30, - 93,115,158,191,142,170,121,127,171,248,116,215,196,144, 1,202,147,156,231,167, 92,228,232, 96,111,143,129, 56, 33, 89,201, 25, -230,243,242,215,164,117, 4,143,135, 25, 61,115,251, 63, 29,125,233,140,254,206,216,252,245,215,209,215,246, 12, 1,220,121,253, -253, 52, 48, 58,123,176,136,207, 68,245,233,231,142,164,103,246,106,130,219,198, 9,242, 61, 70,124,244, 78, 14, 58,140,121, 2, - 70, 49,246,252,191,175, 84,207,110,131, 39,246,103, 63,212,127,167, 88, 6,255, 0, 17,140,224, 37,160,224,249,103,215,184,207, -168,252,247,208,170, 64, 0,231, 36, 18,123,250,252,190, 90,184, 57,205,158,184, 61, 58,231,190,125, 58,121,245,208,238, 32,242, -231, 4,117,232, 58,231,175,203,236,214, 65,232,122, 99, 32,158,221, 78, 45,197, 1, 39, 32,245, 29, 49,158,152,199,174,188, 20, -231, 36, 28,121, 28,159,179,207,240,209, 42, 73,234, 20, 7, 79,245,123,146,126,126, 67,174,168,242, 12, 40,100, 99,166, 0,243, -235,158,231, 75,169,184,235,131,168, 34,219,109,243,243,111,195, 3, 40, 3,212,147,129,248,125,186,160, 70, 70, 63, 35, 70, 41, - 35, 56, 30,153, 63, 44, 13, 12,180,144, 73, 3,167,246,126,206,186, 81, 79,108, 24,216,116, 23,254, 71, 0,184, 0, 32,116,206, -122,159,217,215, 31,158,154,162,160, 78, 58,100,103,175,175,221,163, 20,147,230, 7,221,216,158,250, 25, 89,201,230, 56, 39,183, -207,211, 31,119,244,105, 92, 1,208, 95,113,129, 22,128,114, 64,199,200,249,250,140,104,117, 35,166, 6, 1,239,246,103,200,244, -209,138,206, 65, 56,207,160,242,208,199,169,200,207, 95, 92, 14,221, 63,118,149, 7,160, 39,167,207, 95,158,248, 54, 5, 87, 76, -228,103, 25,253,159,187, 66,172,116,206, 15, 78,216,253,164,244,237,211, 70,172,100,142,152,235,220, 30,253,124,255, 0, 62,122, - 25,196,228,156,100, 1,208,227,182, 79,228,104,248, 50,250, 91,127, 92, 91,215,128,112, 14, 73, 39,167,161, 29,123,232,115,223, -168,235,158,191,184,104,199, 19,144, 83,211, 62,126,189, 61, 63, 13, 12, 80, 70, 78,114,125, 15,225,223, 58, 89,122, 97, 81,107, - 3,210,216, 29,105,243, 25,206,133, 90, 72, 39,183,153,251, 62,223,150,116,105, 25,251,186,250,103,228,126, 90, 25,105,206, 73, -200, 62,126,125, 59,253,250, 85, 79, 91,157,176, 69,216,144,119,183,250, 96, 34, 48,113,165,175,107, 73, 39, 35,175,224, 52,180, -174, 15,113,220,216,227,234, 49,143,233,209, 40, 24, 3,231,215,243,247,106,128,198, 6, 1, 31, 35,223, 85,211,204, 59,128, 49, -233,223, 61, 58,233, 18,118, 3,231,221,140,226,178, 60,250,253,223,191, 85,209,220,253,157,189,127, 63,191, 84, 81,143, 33,215, -204,234,178, 6,122,231,177,237,249,242,254,173, 16,157,137,190, 6, 8, 78,112,112, 70, 7,124,143,196,244,243,233,162, 27,234, -126,239,234,213, 4,125,189,188,191,126,189, 18, 64, 86, 14, 8, 30,125, 1,207,244,255, 0,102,181,216,133,193, 78,224,142,199, - 7, 54,115,211, 61, 62,206,158,126, 99, 69,164, 14,128, 16,123, 15,151,236,213,189,146,233, 74, 78, 19,142,153,251,112, 63,171, - 71, 55,223,162,122,140, 28,224,246,249,233, 34,215,194, 71,174, 43,165, 61, 65, 57,232,123, 99,191,167,237,209, 9, 0,142,169, -249,103, 39,175,175,217,170, 64, 18, 71,145,233,231,230,123,231,229,170,232,200, 36,116, 29,135,203,168,243, 62,103,182,176, 73, - 61,123, 96,167, 21,209,156, 1,208, 14,195,241,243,249,104,148, 3,216,156,228,224,103,250,117, 65,160, 72, 29, 58, 3,231,163, - 16, 58,231,175,203,211,211, 73,191,175,207,108, 99,107,145,181,206, 58,159,236,114,180, 36,215,120,223,178,238,166, 92,121,134, - 54,178,207,191,175,249, 50,154, 42, 65,101,248,212, 39,104, 52,196,151, 17,213,181, 46,101, 96,132,144, 65,248, 62,103, 82,170, -147,119, 79,171, 52, 99,214, 12, 27,130, 56,200, 92, 43,154,147, 73,175,197,113, 32,149, 96,181, 85,136,238, 83,215,166,114, 61, -117, 30,111, 98, 93, 13, 12,206,226,110,249, 80, 74, 93,129,102,217,118,147, 11, 61, 22,147, 89,172,205,170, 73, 66, 84, 58,128, -180, 66,104, 17,242,215,110, 85, 89, 62, 34, 74, 78, 18,162, 18,178, 78, 2, 72, 24,243,252, 53,207,158, 33,214, 52,188, 67, 60, - 91,218,146, 56,163, 6,254,160, 73,191,190,242, 16, 55,233,143, 67,190,140,252, 57, 24,240,222, 10,185, 97, 89, 6,113, 87, 87, - 57, 12, 1, 4, 44,130,152, 2, 8,181,138,211,143,223,140, 91,113,184, 80,224,223,122, 90,127,248,197,225,195,111,141, 78, 74, - 74, 28,185,236, 6,100,109,189,210,202,149,255, 0,194, 25,155,109, 45,182, 30,116, 14,184,114, 58,193, 35, 36, 29,114,235,126, - 61,136,232,153, 30,101,195,194, 78,234, 11,142, 74, 18,167, 81,180, 59,192,184, 84, 27,145,224,126, 38,225,219, 27,129, 13, 41, -129, 85,124,254,171,109, 79,106, 42,220, 56, 5,240, 78, 79, 93,141,126, 51,110,161,151, 93, 72, 82,213,250, 21,147,128,162,159, -242,172,156,116, 75,192, 96,143,245,128,214,109,101, 34,179,125, 87, 98,219,150,188, 73,117, 58,171,235, 8, 75,113, 88,113,228, -190,130,160,148, 6,130, 7,194,176,163,212,158,137, 41,207,108,226, 37, 67,197, 89,254, 85, 44,107, 65, 92,242,128,109,202,127, -172,140,251,130, 53,244,131,234,154, 77,174, 21,133,241,105,113, 79,128,254, 26,113,109, 13, 76,249,182, 65, 22, 83, 80, 16,177, -174,164, 11, 73, 52,123,127,120,210, 70,162, 57,108,123, 78,146,165,250,169,223, 16,133,191,246,226,251,218,171,186,173, 97,110, - 77,165,112,216,183,165, 5,229, 49, 86,182,110,106,115,212,202,172, 69, 5, 40, 7, 80,219,163,150,100, 37,129,150,164, 48,167, - 88,117, 63, 19,110, 40, 29, 97,233,193,243, 24, 29,250,143,184,116,215,232,143,190, 62,204, 45,147,226, 95,110, 34,219, 28, 90, - 85,225, 64,173,211, 34, 4,217, 87, 45, 7,192,123,116,108, 57, 14, 35,197, 13,193,172,182,131,239, 52,194,172,248,180,249,101, -232,171,201,194, 80,172, 40,106, 85,157,236, 48,246, 94, 89, 49, 96, 11,150,111, 16, 59,185, 80, 43, 83, 18, 93,168,222, 84,251, - 54,159, 41,214,155,241, 92, 81,129, 64,166,133,196, 36,117, 74, 67,170,207,108,116,206,173,202, 63, 17, 40,214,142, 55,205,233, - 13, 21,112,217,227, 87,141,135,185,128, 46, 29, 67,117,210,202, 74,244,212,246,213,142, 20,207,126,143,124, 95, 14,119, 61, 31, - 6,200, 56,195, 36, 55,104,107, 68,114, 83, 2, 59,199, 46,168,204, 70, 69,177,250,200,100,120,157,124,223, 84, 73,137, 96,225, -130, 70,121, 22, 8,237,202,133, 96,250, 28,227, 72,168, 32, 0, 58,146,113,140, 31, 63,151,222, 53, 61,230,125,146,190,201, 76, - 62,208,225,254,252, 87,128,217,112,248,251,193,118,173,197, 4, 39,152,242,173, 11, 29,115,211, 32,117,193,211, 69,186, 94,193, -159,103, 5,247, 75, 55, 6,222,220,187,247,177,170,142,168,178, 84,212, 27,150,141,124,210, 39, 70, 74,144,228,182,226,199,187, -233,222, 60, 23, 11, 1,196, 7, 82,242,195,107,113, 42,240,151,142, 83,177, 77,226, 46, 75, 83, 47, 41, 81,193,177, 55,242,216, - 0, 46, 73,185, 22,183,223,238,190, 25,235,190,143,254, 42,229,177,123, 69, 87, 14,170,171, 21, 80, 22,161, 11, 51, 57, 1, 84, - 2,160, 93,137, 3,114, 63,142, 35, 1,192, 79,179,155,127,248,252,190,165,208,246,210,151, 26,220,219,219, 90, 68, 49,185,187, -209,119,179, 45,157,189,219,184,210,112,227,112,228, 57, 29, 33,219,162,244,145, 27,153, 80, 40, 80, 57,165, 61,128,236,151, 33, -196, 10,146, 38,173,194, 71, 5, 92, 32,251, 61,109,198,127,137, 11, 71,248,111,187,134, 47,186, 92,156, 68, 95,208,233,213, 77, -203,169,188,166,210,220,230, 45,176,210, 20,198,221, 91, 60,222, 42,147, 78,163,161, 14,132, 16,169, 50,102, 40, 41,100,251, 2, - 70,221,108,222,222,208,118, 35,135,219, 98,141,182,187, 99,183, 80,221, 22,253,169, 5,240, 28,175,120,202,109,117, 43,158,224, -172,168, 42, 69,193,113,212,166, 35,154,109, 86, 73,117,239,122, 88, 75,220,172, 22,219, 70, 15, 39,112, 35,202,153, 34,108, 9, - 83, 16,228,242,167, 30,167,205, 67,209,101, 60,247, 40, 75,203,132,133,184, 16,103,115, 6,213,204,193,117,183,249,130, 73, 35, - 5, 53, 87, 20,120,131, 91,154, 84, 73, 73, 68,198,158,137, 73, 10, 65,221,198,214,239,181,250,134,185,234, 8, 61,113,217, 30, - 12,253, 20, 41, 50,184,169,243,158, 45,133,115, 76,244, 44,114,114,236, 90, 10,109,118,101, 69, 7,109, 69,110, 68,166,247, 32, -244, 91, 5,122, 46, 93,207,151,112,185, 82, 84,201,237, 85,196,152,174,184, 88,241, 23,239,197, 8,146,129,239,112,210,195,217, -143, 82, 97,220,134,151,240, 7,148,160,230, 82, 64, 42,108, 46, 11,170, 52,200,142, 42,108,229, 75,154, 25, 10,128,251,176,220, - 69, 62,231,164,248,160, 73,129, 34, 43, 32,148, 79,109,191, 21,101,149, 97,198,164, 54, 36, 52,149, 5,184, 19, 97,136,251,117, -212, 9,207, 47,222, 75, 83,204, 70,166,198,109, 84,203,178,149, 49, 96, 25, 28,237,178,132,166, 28, 66,181,167, 45,188,144, 84, -217, 47, 45,181,163,161,199,231,178,168,238, 61, 67,174,165, 50, 30, 68,210,138,101, 69, 41, 66,226,214, 24,154,175, 18, 68, 23, - 25,200, 16, 43,237, 53,206, 89, 40, 41,101,229, 18,227, 11, 67,153,107, 85,228,149, 94,103,214, 88,177,181,218,251, 49,190,198, -219, 19,126,194,199,107,117, 59, 14,220,202, 56,115, 41,161,100,166,134, 46, 65,164,220,199, 24, 80,202, 6,149, 99, 29,208, 93, - 86,200,179, 38,148,109, 12,205,160, 36,107, 36, 87,151,170,161,165, 46,223,113,167,151, 78,170, 42, 43,148,218,139,143,133, 60, -212,244, 50,100,136,203,150,242,135,136,250, 60, 22,164,198,112,144,183, 19, 29, 76, 58,165, 45, 0,185,112,131, 94,118, 83,239, - 68, 41,110,145, 84,110, 85, 61, 77, 75,109,178, 94,166,215,169,104, 8, 67,209,226,188, 8,118, 28,136,175, 69,146,129,147,227, -180,167,144,130,160, 73, 24,237, 74,148, 41,180,184,241,225,200,118,224,181,231, 71,136, 98, 84,161,159, 30,183,110, 75,101,207, -122,101,135, 67,139, 34,171, 78, 67,173,161, 72,116, 98, 92, 85,128,204,132, 60,193,241, 18, 44,199,101, 84, 85,252, 43,112,177, - 42, 84, 4, 52, 95, 52,245, 4,179, 84,167,160, 46, 60,163,202, 84, 82,137,173,158,119, 35, 43, 36, 50,180, 41,160, 2, 22, 0, - 48,114,196,178,177, 80, 55,211,178,238, 64,223,114,118,234, 70,226,196,234,190,160,112,250, 40,232,234, 98, 13, 29,180, 72, 74, -135, 58,129, 51,142, 88, 77,113,191,149, 76,133, 66, 76,142, 54, 49,137, 46,240,201,115,180,187,121,113,159,112,167, 74,168,126, -134,164, 39, 75, 21,246,192, 76,150, 24,152,101, 59, 6,160, 22,251,164, 23, 22, 86, 34,169, 37, 64, 41, 77,186,215,114,156,150, - 43,139, 43, 97,169, 85,218,101,105,162, 25, 69,219,106, 92, 52,234,159, 51,106,114, 59,213,187, 98, 11,114, 96,186,162,129,133, - 58,105, 47, 71, 91,228,165, 74,112,210, 83,241, 18,146, 11,135,106,214, 98, 78,172, 73,102, 43,177,164, 67,184,105,116,249, 76, -184,164, 4, 42, 59,240, 23,245, 98,155,113,151,208, 49, 37,216,174, 66, 88, 82,250, 45,200,200,202,137, 72, 26,161,196, 82,249, - 44,237,191,114,123, 77,202,228,191, 13, 50,108,176,183, 27, 75,109,213, 41, 83,161, 73, 7, 42, 42, 37,230,219,111,224, 71, 41, - 82,129, 72, 56, 26, 82,178,211, 80,176, 96,117, 33, 87, 27,130, 65, 15,123,139,250, 43, 17,247,133,176, 59,154,251, 35,230,229, - 30, 34,101,181, 84,209,154,121,115, 5,168,137,162, 38,222, 89,169,228,145, 35,177, 23,211, 13, 74, 42,128,222, 98,209, 33, 93, -247, 45,207, 13,114,155,103,122, 54,250,161, 33,214, 94,250,215,234,202,139,111,115, 54,235, 9,117,115, 33, 84, 25,247,117,161, - 36,186, 75,171,142,226, 92, 32,132,169, 8,234, 2,250,244,178,232,151, 46, 85, 85, 97, 46,180,218,152,141, 41,185, 10, 82,146, -133, 56, 87, 49,135, 28, 75,206, 54,128, 82,149,182,149,114,148,252, 73, 40, 42, 25, 63,173,202,173,165,149,245, 27, 59,105, 37, -133,198,106, 75, 46,199, 11,153,201,226, 56,179, 68,204,101, 51,206,133, 4,148,184,138,122, 64,229,229,233,145,221, 56, 61, 81, -185, 75, 51, 27,159, 80,109, 41,125,186,148, 24,239, 53, 37,180,135, 92,106, 52,136,171,113, 78,165, 68,140, 37, 16,223, 89, 4, -156,167,195, 25, 30,171,240,236,165,105,234,169,128, 26,161,150,226,251, 18, 25,116,220,216,131,250,167,125,192, 39,222,113, 12, -241,161, 4,252, 89,144,102,166, 63, 45, 69, 19,211,173,192, 32, 52, 53, 5, 73,183,217, 0,172,167, 96,196,253, 93,251,227, 89, -170,116,137,115, 41,150,180, 88,239, 52,228,155,128,190,219,171,105, 45,132, 20, 84,125,242,101,110, 97,109,192, 60, 15, 6, 4, -169, 41, 7,205,101, 42, 4, 30,100,235, 48, 98,100,183,170,109, 55, 77,129, 26, 53, 90, 77, 38,159, 64,165, 69,109,165, 59, 30, - 52,118, 31, 90,205,199, 80, 1,144, 68, 88,139, 74, 3, 44,182, 0,117, 80,218,100,243, 23, 20, 81,245,170, 20,128,229,191, 57, -231, 18,227,180,170, 21, 94, 83,170,231,105, 13,211, 41, 41,129, 19,194, 45,180, 74, 72,152,162,162,165,171, 24, 90,155, 91,121, - 64, 1, 10,190, 89,208,106, 49,147, 38,123,140,190, 42,215, 59,205, 63, 4, 41, 77, 7,232,116,248, 77, 39,221, 90,229, 3, 45, - 60,220, 25, 11,121, 77,164,169,180,203,154, 2,178,180,171, 50, 56, 55,242,106, 47,163,123,251,137,182,215, 39,127,128, 23, 32, -147,183, 70, 90,252,198, 22,163,102,103,142,115, 15, 52,168, 39, 72, 47, 37, 68,133,131, 88,139,196,145, 68,178, 49, 42, 54, 4, - 38,158,106, 17,126,147, 14,157, 74,146,213, 34,214,106,160, 3,145, 23, 72, 93, 65,214,154,147, 60, 45,214,208,171,150,181,227, - 40,145, 58,176,135, 20, 0, 88, 40, 71,191, 85, 50,133, 16,199, 40,204,233,149,217, 16, 81, 74,106,213,167,196, 41,166, 68, 93, - 61,218,202,202,222,163, 83, 36,180,202,163, 63,224, 83, 73, 82,235, 51,209, 30, 63, 41, 12,169, 45,248,223, 4,213,169, 74, 90, - 53,128,211,101, 42, 82,164, 55,109,135, 89,147, 41, 74,163,196,152,181, 2,229, 14,132,196,169,105,114, 84,194,235, 37, 15,213, -165,203, 74,222,142,144, 8, 75,184,116,146, 25,235,123, 77,126, 53, 26,159, 50,222,163, 82, 34, 87,170,209, 34,199,165,211, 98, -196,145, 42, 52, 27, 97,182,148, 76,169,143,206,119,244, 45, 5, 21,254,145, 74, 46, 58,167, 16,167, 2, 71, 51,139,214,220,104, - 21,172, 65, 37,238, 69,201, 58,119, 82, 55, 23, 34,254, 81,127, 40,177, 82, 54, 23, 48,154,250, 57, 42, 21,105,164,129,171,170, - 20,141, 98, 87, 0,144,254, 73, 38,170, 44,234,129, 19, 88,176,146, 78, 89, 34,103,179,171,162, 77,157, 81,164,143,123,163, 8, - 73,114, 60, 56, 14, 56, 25,153, 92, 82, 27, 64,113,230,129,159,116,212,234,141,165, 30, 35,232,150,149, 34, 26,138, 67, 35,195, -229,195, 64,160,161,215,163,214,229, 61,114,193,118, 3, 18,169,144,234,116,244, 83,105,213, 73,128, 42,170,162,244,180, 53, 84, -173, 73,139, 52,114,195,114, 72, 17,209, 13, 46,130, 91, 66,252, 80,144,164,132,233,150,102,139, 89,170,162, 58, 42, 11,109, 2, -156,194, 86,221, 33,181,251,181, 38, 42,218, 67, 77,174, 97,127,153, 78,214, 92, 14, 2,191, 29,239, 13,182, 62, 55, 80,210, 57, -121,206,113, 74,153, 54,127,189, 8,203, 67,140,225,184,143, 85,220,123,222,211, 87,121,197,162, 59, 80,232,138, 96,225,196, 37, -231, 93,231,158,158,124,173,226,166, 18,183, 1,113, 59,104,206, 7,217,212,166,214, 54, 39,125,193,177,184,189,190,201, 2,219, -129,115,109, 36, 64,115,202, 58,106,133,145,131,199, 51,172,111, 27,220,150, 84, 18, 57, 32,181,236, 38,119,102,187, 2,172,173, -245,138,161,227,115, 42,109, 53,183, 89,113,151,211, 75,165,167, 49, 32,171,220, 30, 90, 20,243,205, 83,164, 33,100, 75, 87,189, -190,190,121, 21, 18,250, 71, 48, 94, 91,105, 75, 43,121, 74,230,229, 45,103, 23,124, 32,112,213,237, 11,217, 74,166,193,241, 37, -103,179,117, 80, 93,247,138,133,163,115, 83, 94, 17,183, 11,108, 46,100,165,216,113, 47, 43, 30,236, 12, 41,116, 27,141,183,211, -202, 18,144,184,181, 22,208, 98,204,139, 46, 18,220,104,135, 30,225, 76, 56, 81,105,212,133, 48, 41,180,229, 70,162,206,126, 38, - 92, 98,148,206, 66,164,193,166,164, 45,105,171,200, 68,140,120,203, 37, 97, 47, 60,174,114,244,144, 80, 29,171, 42,165, 30,155, - 49, 51, 37,181, 81, 79,132, 15,185,196,151,151,234,114, 30, 44,248, 41,113,104, 4,248,238,184,148,190,180,184, 74,188, 52,182, - 16,234,154, 81, 58,124,203,115, 9,169, 39, 2, 57, 12,104,246, 82,172, 26,204,163, 72, 34,253, 44, 52, 92, 91,236,149, 12,133, -109,183, 62,241,103, 9, 69, 81, 77, 83, 52,208,150, 44, 27, 66,145,121, 36, 63,181, 37,206,204,250,129, 61,116,169,212, 89,131, - 43,201,249,104,123, 74,253,155,155,225,236,203,226, 10,102,204,110,202, 63,132, 86,125,198,138,149,127,100,183,134,155, 1,112, -237,173,219,177,225,202, 67, 75,152,211, 60,203, 77, 6,247,167,123,204, 54,107,180, 85,184,167, 33, 62,251,114, 35,170, 69, 54, - 84, 73, 46,115,200, 36,167, 25,234, 60,137, 61, 71,217,242,198,191, 92,191,104, 95, 2, 27, 99,237, 47,225, 82,247,225,235,116, -208,197, 6,191, 47, 55, 54,209,110, 43, 17, 27,149, 84,218, 45,211,165,197,120, 90,215,101, 56,171, 11,149, 13, 70, 66,225,214, - 96,115,165, 21, 26, 85, 74, 92, 66,166,214,227, 79, 55,249, 64,239, 46,206,238, 55, 15,155,187,185,155, 17,187,212, 5, 91, 27, -163,180, 55,157,106,194,190,104,165,101,216,241,171,116, 57, 30, 18,166,211, 37, 16, 5, 70,131, 54, 18,226, 79,167, 74, 70, 81, - 42, 5, 78, 52,132, 18, 28, 26,183,178,186,229,171,129, 84, 73,169,212,119, 35, 85,129, 0,134,181,188,202, 72, 5,128,210,110, -164,121,139, 34,115,126, 99,150,201,150, 78,208,177,215, 21,236,173,125, 91,218,250, 75,126,181,187, 55,113,190,246, 44, 91, 95, -135,148,129,156,147,147,205,212, 31,144,244, 3, 58,243,202,158,132, 96,121,118,234, 51,223,167,152,213, 84,132,144, 83,212,144, -122,231,250, 71, 93,121,229, 7,168,206, 61, 58,103,231,212,233,216,126,242, 48,223,133,202,123,243, 12,118,207,203,183,111, 61, - 32, 14,126, 17,140, 14,161, 90,245,202, 0,199,235, 2,114, 60,191,110,190, 5, 15,139, 57,201, 32,114,253,216,239,161,239,192, -233,108,123, 39,162,135, 78,189, 62,195,246,249,106,136, 10, 78,112, 73, 80, 61,113,230, 62, 64,254,122,234,166, 18, 83,202,122, -103,184,207, 81,130, 49,223,236,215,174, 80, 6, 9,201,199, 47,111, 46,189, 71,203, 89,192, 63, 27, 96, 53, 1,149, 31, 49,140, -143,183,211, 84, 10,122,103,152,159, 49,204,115,211,229,233,253,186, 57,109,140, 0, 0, 42, 35,161, 61,188,137,207,221,161, 86, - 58,145,216,118,198, 58,231, 30, 93,116, 48, 63,158, 1,112, 96,228,246, 63,119,203, 84, 21,220, 28,101, 35,160,235,242,245, 31, -102,138, 90, 22,121, 72,232, 51,231,247,231,247,104,117, 39, 61, 58, 2, 59, 96,249,104,234, 64,191,160,198, 65, 55,247,255, 0, - 60, 14,160, 50, 60,137, 24,206, 58,103,203, 61, 58,234,146,135,124,156,121, 99,160, 31, 51,219,236,252,116, 73,206, 49,128, 51, -231,231,251,123,106,130,209,216,142,152, 32,159, 63,195, 75, 14,184, 84, 94,215, 29, 79,250, 96, 55, 19,215, 9, 7,190, 79,166, -113,212,157, 10,180,231,174, 51,219, 30,163,230, 61,124,245,112, 94, 8, 35, 56,199,150, 58,254, 63, 97,208,174, 36,246, 79, 78, -132,250,231,203,175,160,237,165,148,155, 11,141,240, 1, 23,176,233,128,148,158,253,122,158,192,247,206,126,126, 93,116, 42,219, - 61,126, 33,142,248, 29,128,238, 64,251,180, 98,130, 72,235,144,115,140, 99, 39,215, 61,190, 90, 29,105, 56, 32,252,142,124,190, -223,195, 58, 58,223,238,254, 95, 39, 6,192,106, 72, 24,199,207,169,245, 30, 90,160,176, 6, 79, 92,227,183,145,249,118,249,104, -165,167, 61,148, 78, 62, 93,254,239, 93, 12,179,220, 30,157, 60,198,115,242,249,127,110,150,193,148,246,192, 42, 80,207, 64,115, -230, 7, 95,188,250,119,213, 21, 12,100, 99, 63,179,231,162,150,129,220, 12,103, 57, 35,191,246,104,101, 2, 7, 81,158,249, 35, -174,127,183, 74, 39,124, 40,187,129,129,212, 62, 68,122,250,125,199, 84, 23,140,143, 92,117,213,117, 19,215,184, 4,231,175, 66, - 79,245,106,130,251,142,158, 93,255, 0,118,149, 29,122, 95, 24, 34,198,227,107,126,239,159,158,216, 20,140, 18, 59,227, 75, 95, - 85,250,199, 75, 75, 13,192, 56, 53,129,222,221,113,224, 31, 34, 70,125, 6,170,115,117, 4, 36,146,112,146, 71,252, 62, 67, 84, - 57, 57,156, 74,190, 46,131,167,126,189, 72,198, 14,138, 73, 72, 0,249,103,174,123,247,243,198,181,201, 39,189,191, 44, 27,238, -190, 43,164,129,129,211, 63,236,245,233,243, 58, 32, 97, 35, 36,140, 31, 65,231,246,249,232,100,242,133, 16, 14, 78, 58,158,157, - 7,144, 58, 37, 4, 36, 28,167,155, 7,168,239,223,182,147, 44,119, 29,113,140, 86, 9, 88, 80, 33, 67,148,142,189, 58,147,229, -223,183,125, 16, 27, 14, 36, 37, 73,206, 14, 71,113,233,215, 84,146,114, 59, 96,121,126,113,162,219, 33, 61, 20,122,227,203, 61, -135,228,105, 51,107,111,211, 4, 38,221, 6,253,190,126, 24,172,132,132,167, 25,192, 31, 46,167,238,209,141,168,114,132,252,186, - 31, 95,234, 58, 17, 41, 24, 32,168,146,115,128, 59,159,179,174,138,108, 18,115,203,216, 12,131,215, 0,103,174,144,194, 71,174, - 42,227,160,207, 92,117,206, 62,223, 33,242,209, 40,194,176, 79, 64,124,186,245, 61,190,239,236,213, 16, 1, 81, 29, 64,242,237, -249,245,209, 45,130, 6, 1,237,228,113,147,251, 59,104, 99, 7,241,193, 13,224,100, 14,158,159,183, 68, 33,125,121,112,122,103, - 36,117, 25,207,111,219,170, 8,237,156, 12,250,116,207,217,159, 61,101, 86,165,169,113,222,213,218, 85,175,104,208,234,151, 29, -199, 92,154,205, 58,143, 67,162, 64,145, 83,170,213,103, 62,174, 86,162,193,129, 17,181, 57, 37,226, 79, 92, 12, 36, 30,101, 16, -144, 78,144,150, 68,141, 93,157,130, 34,110, 73, 54, 0, 1,212,158,192, 96, 14,194,219,159, 78,228,237, 97,234, 73,216,119, 56, -239, 95,177,184, 52,198,205,241, 34,250, 82,145, 37,219,203,111,154,116,243, 97, 74,140,138, 52,229,161, 36,121, 36, 56,165, 99, - 62,127,102,186,125, 58,178,168,165,224,240,108,180,227,106, 45,243,168,133, 3,219,224, 41,253, 99,156, 28,124,181,130,123, 43, - 61,153,123,231,176,246, 46,230, 76,226, 66, 69, 19,109, 99,238,172,123,102, 85,189,105, 61, 82,102,161,115, 83, 77, 53, 47, 41, -114,110, 56,241, 22, 91,166,201, 83, 79, 37, 41, 96, 41, 78, 35, 7,156,131,211, 91,183,187, 60, 21, 87,216,164,202,171,216, 55, - 44, 43,172,211, 80,185, 34,157, 13,254, 73,133,108,167,153, 73,110, 58,212,124, 76,167,200,119,206,185,175,140,211,219,115,250, -250,186,121,150,106, 87, 41,102, 86, 4,217, 99, 69, 62, 95,180, 64, 96, 69,237, 98, 6,161,177, 7, 30,160,125, 30, 51, 92,167, - 42,240,231,133, 50, 92,240,205,148,102, 10, 42, 3,172,240, 74,138,188,202,201,222, 50,206,202, 2,106, 70, 70,243, 90,193,183, -223, 26, 33, 89,187, 38, 56,211,173, 73, 82, 68,134, 29,100, 33,180, 43,195,241,146,165,129, 30,115, 42, 79, 82,234, 84, 82, 20, - 61, 53,220,158, 22,104,113,246,115, 98,169, 87, 66,163,180,230,226,223, 48,159,157,245,162,217,109,215,233, 84,130, 15,134,212, - 53,167, 42, 99,197, 78, 84,181,167,226,199, 98, 53, 30, 10,163,245, 54,234,111,196,144,202,209, 82,166, 75, 80,109,137, 72, 83, - 78, 49, 38, 59,153,147, 79,146,210,250,165,126, 35,100, 96,227, 24,215,127,118,138,242,164,110, 62,192,109,157,106,149, 47, 30, -229, 76, 54,197, 89, 17,150, 68,186,101, 86, 23, 51,106, 97,104, 7, 45,130, 23,217, 88,202,117, 28,118, 20, 81, 23,136,105,153, -198,204, 58,139,149,189,143,111, 45,236, 65,254, 3, 29, 5,199,185,104,158, 14, 29,203,164, 80,217,101, 77, 86,170,133, 93,209, -180,199,170, 20, 96, 14,241,187, 6, 37,127, 93,148, 45,136,181,242,106,229,223, 42,176, 31,122, 91,235, 11,114, 43,173, 63, 43, -152,169,199,159,143,135,153, 45,243, 30,101,243,182,162,159,187,215, 88,194,171,109, 42, 52, 22,155,105,229, 73,168, 62, 22,203, -206, 5, 45,198,219, 49,203, 37, 62, 31, 54,124, 70,223, 9,248,135, 92, 47,174,172,242, 97, 74,133, 54,150,235,136, 92,152,237, - 58,252, 89, 13, 45, 92,139, 46, 50,219,136, 74, 20, 9,248, 28, 41, 32,143, 62,190,122,188, 83, 18,164, 54,242,101, 71, 65,114, - 44, 22,132, 53, 40,114,187, 30, 75,239, 23, 82, 65, 72,234,224, 65, 70,125,121,117, 30, 87, 45,172,129,168,158,155,237,126,135, -115,211,189,187,236, 62, 56,127,142,130,130,138,154, 49, 79, 24,120,134,234,170,193,123,180, 96, 91,169, 10, 66, 18, 15,151, 77, -128, 4,226,231, 71,140,106,110,203,144, 95, 44, 50,131, 42, 92,249, 46, 56,161,202,196, 32,136,201,141, 24, 96, 36,190,183,201, -194, 51,149, 21, 28,117,214,187,111,102,251,181, 33,243,106, 81,228, 61, 14, 37, 33, 97,130,251, 50, 21, 30, 63, 51,105,194,152, - 98,106,148, 82, 95, 81,200, 60,195,245,138,142, 20, 14, 19,125,222, 75,250, 78,218,216,238,219,180,169,142, 42,187, 85,231,169, -204, 91,107,109, 14,183, 50,106, 86,182, 24,105,167,112,133,173,168,202, 43, 80,230, 79,199, 45, 56, 33, 67, 58,228,228,187,229, -250,132,217, 47, 75, 67,178, 96, 58,242, 83, 61,164, 56,226,208,226,208,181,175,198,125, 46,167,157, 35,226,117, 68, 43,152, 40, - 32, 32, 40,140,101,246, 58, 73, 18,147,146,135, 76,211,128,242,145,107,170,177,186,198, 9,237,250,205,184,185,216,218,219,233, -112,238, 72, 56,183, 63,169,204,229, 28,252,143,135,165, 49, 82, 40, 35,235,170, 18,203, 36,204,173, 96,202,132, 24, 98, 13,183, -146, 66,118, 56,218,122,181,245, 81,114,145, 37,110, 60,103,198, 97,207,125,165, 84, 31, 79,131, 90,163,190,219, 97, 10,108, 48, - 26, 9,169, 66, 90, 80,227, 47,128, 80,181, 33,204,169, 42, 79, 34,145,144, 27,238, 36,202, 77, 46, 61, 71,146,158, 91, 77, 34, - 80,129, 80,121,196,192,149, 37,107, 67,234,250,134,230,105, 96,211,223,104,169, 92,205,169, 77, 58,128, 83,145,140, 41, 90,141, - 75,174,173, 77,251,204, 9, 44,170,156,220,176,219,244,224,164,200,165, 79,117,183, 20,184,138, 75,160,173,218,100,118, 89, 33, - 75, 40,230, 73, 95, 94, 82, 7, 38,179,218,117,105, 35,154,151, 61,164,211, 34, 50,180, 74,121,186,147,237,205,163, 21, 60,162, - 29,110, 35,204,164, 37,216,238, 48,180,134,146,248, 5,180,189,243,232,211, 62, 92,169,112,162,228, 27,221,109,123,121,123, 16, -109,110,225, 46, 44,215,186, 62,199,161,242,220,190,156, 36,113,114, 47,203,109,107,162,234,192,145,231, 26, 47,177,110,190, 75, - 27, 13, 65,145,137, 24,220,138, 82,100, 86,167, 67, 85, 85, 5,217, 21, 54, 83, 26,153, 91,143, 41, 84,218,173, 77,175, 19,157, - 16,100, 78,167,184,142,105,169, 96,169, 46,243, 41,104,121,178, 22,223, 34,202,155, 23,250,140,137, 20,138,148,138,125, 82, 20, -234,253, 56, 69,122, 35,244,247, 86,135, 43,244,199,152,112, 33,197, 60,228, 96,159,173,226,132, 50, 84,121,113, 53,165,176,135, - 82,167, 71,194, 53,242, 20, 11,121, 84,166, 35,198,155, 38, 4, 37,169, 19, 41,142,209, 42, 19,225,165,233, 62, 34, 25,142,226, - 80, 30,113, 17,157, 66,149,252,196,164, 18,216, 82, 84,115,167, 38,148,205,126,152,227, 49, 97,220, 38,171, 81, 86, 91, 68, 26, -187, 13,248, 14, 69, 97, 62, 35,143,138,156,112, 22,101, 41, 15, 18, 22,226, 10,194,136,230,230,233,134,127, 42, 6, 37,206,199, -117,101, 43,181,186,143,180, 75, 2,110, 73, 96, 5,128,176, 42, 44,157, 77, 28, 1,181, 71, 86,166, 56,195,160,133,227,150, 34, - 10, 48, 60,200,165, 70,147,146,168,163,204, 71, 45, 85,148, 2,193, 25,163,195,167,111,214, 86,203,172,196,137, 45,186,155,174, -161, 10,167, 73,203, 62,227, 94,136,211,232, 33,202,160, 82,127,192,238, 54, 24, 88, 10,120, 37, 1,208,149, 43,151,151,153,182, -170,166, 34,105,117, 25,181, 40,161, 79,194,159, 53, 78,221,148, 2,130,244,202, 62, 11,173,203,168,196,140,210,177,239,188,139, - 79,188, 52,148,143, 25, 25,113,159,210,140,171, 8,167, 26, 85, 94, 65,131, 35,235, 11,102,226,130, 87, 49,132, 48,166, 27,155, - 34,167, 24, 20, 49, 81,133, 37, 81,151, 26,170, 90,112, 31, 21,124,188,252,170, 13,201, 72, 73,201,204,105,149, 74,157, 57,200, -147,110, 38,154,139, 18, 67,205,195,153,115, 70,104, 51, 79,155, 83, 70, 23, 21, 85, 85, 0,161, 70,146,242,249, 2, 78, 76,126, -101,128,219,173,128,148,235, 34, 80,196, 0,231, 83, 92, 1,220, 90,204, 10,145,112, 0,185, 42, 1, 2,236,108, 45, 99,136,197, -109, 57,134, 90,147, 78, 60,243,173,165,136,149, 15, 48,189,215,148, 86,241,202,190, 93, 81,152,134,165,148, 13, 11,202,242, 35, -169,110,248,110,177, 16, 67, 42,158,104,128,170, 20,215, 22,194,141,110,142,176,131, 25,131,225, 54, 11,133, 84,196,180, 99,164, - 18, 82,252, 36, 58, 2, 73, 90,181,243,137,137,169, 94,219, 91, 8,140,165,159, 30,241,143, 84, 66,139,156,202,240, 96,192, 62, - 18,156, 82,206,124, 78, 89,140,129,203,241, 21, 30, 76, 19,163,109,106, 99,148,203,129,215,161, 22,149, 70,170, 36, 45,108,171, - 31,224, 53, 5,243, 58,217,101,215, 79,193, 25, 79,185, 33, 32, 39, 1,165,190, 66, 50,135, 15, 45,187,123,227, 46,167, 87,178, - 45,198, 26,115,194,143, 66,171,214,144, 26, 91,156,200,171, 26,148,118, 84,145, 31,151, 10, 8,167,198, 11, 4, 31,135,197,207, -235, 37, 39, 74,201, 56, 20,179, 48,220, 2,160, 89,137, 27, 48,218,251, 92,218,224, 27,108,182,181,237,189, 90,213,112,199,197, -185, 37, 66, 63, 50, 26, 82,245, 33,186, 21, 2, 41, 29,149,214,224, 41, 89,127, 85, 64, 0,155,129,164,168,195,121,106,210,157, - 49, 16,180, 67,123,221,105, 23,132,151, 98,143, 8,133,181, 9,233, 2,160,114,132,149, 41,152,202, 77, 80, 0,122, 20,224,133, -140, 19,174,145,216, 85, 22,174,139, 58,117, 20,167,255, 0,116, 45,215,218,183, 92,253, 48,116, 59, 66,168, 71,135, 84,162,201, - 91,137, 33, 46,115, 83,165, 76,101, 96,101, 41, 92, 44,103,200,106,117,145,110,169,112,231, 15, 1,196,123,195, 84,153, 12,178, - 20,148, 41, 94, 28, 38,226,200,119,157,100,120, 95,165,138, 1,112,228,146,114,114,161,173,186,219, 8, 70,145, 86,150,137, 9, - 45, 70,158,138, 76, 55,148,216, 65,109, 45,150, 86,152,239,128, 57, 65, 12, 75,229,234,122,225,213,148,244,209,114,119,104,171, - 4,128,125, 92,254, 87,191, 96,110,192,158,223,104, 2,109,189,142,214,189,197,123,226,102,115, 14,101,151,130,175,170,167, 41, -126,116, 54, 59,220, 24,181, 41, 23,243, 93, 94, 65, 97,177,125, 39,160, 56,182, 92, 20, 69, 77,185,225,210,208,218, 12,121,177, -214,245,101,132,175,147, 20,200,207,169, 77, 67, 12,161, 64,187,239, 14, 55, 24, 58, 82,112,164,176,232,229, 32,231, 94, 29, 77, - 69,138,133, 70, 29, 29,163, 30,174,236, 24, 12, 74,171,176,182, 29, 93, 18,157, 80, 46,135, 10, 99,172, 22,209, 86,126, 34, 28, -247, 86, 74,249, 90, 42, 50,212,149, 37,164,133, 61,149, 74, 50, 96,174,108,231,227,148, 73,104, 70, 98, 34, 90,232,251,142, 52, -174, 65, 30, 63, 46, 28,230,126, 90,201,119, 25, 60,138,113, 64,225,189, 82,183,173,152,148,155,102,178,203,203, 68,215,166, 72, -114,183, 95,156,227,173,149, 84,171, 51, 30, 74, 27, 67, 12,173, 36, 52,203, 81,219,102, 60, 68,130,144,203,109,165, 36,133,120, -138,212,193, 31, 77,212,144, 72, 34,198,251, 27,245, 44, 15,154,214, 6,230,224,239,182,149, 3, 21, 18,113, 76, 43, 65, 3, 50, -137,214, 49, 12, 40,135,117,121, 29,209,158, 71,223, 75, 42, 46,136,204,108, 8,145,132, 74,193,144, 72, 75, 74,213, 54, 21, 45, - 76, 91,246,218, 94,139, 17,193, 28, 86, 29, 14, 46,115,208,212,249, 67, 77, 64,167, 72,144, 20,185,149,135,226,180,158,101,145, -202,195, 40, 83,141,144,227,200, 2,245, 21,216, 52, 92,248, 96, 70,161, 83,252,103, 98,197,145, 15,156,115, 78,109, 49, 66,157, -109, 1,110,205,152,167, 16,175,119, 65,203,206,130,172,229, 69, 42, 23, 85,184,213, 38,116,122, 77, 49, 30,243,112, 48,191,122, -156,175, 0,120, 52,218,131,205, 97, 18,106, 83,146,149, 4,194, 76, 0,146, 91, 88,241,164,101, 41,109,188,184, 10,126, 34,216, - 84, 0,137,213,234,155,149, 73,236,160, 76, 76,164,176,212,104,116,198,150,183, 7,131, 18, 42, 93,229,167,198,253, 69, 23,214, - 76,149,151, 57, 71,195,200,157,109, 69, 33, 82,243, 60,133,180,234,176,248,250,244,211,107, 91,226, 72,211,167,112,188,181,209, - 76,160,213,204,197,106, 0, 96, 24,179, 79, 82,204, 72, 51,121,144,128, 10,249, 98,149,218,225, 28,149, 89, 27,152,205, 94,144, -220,249, 80,209, 79,171, 70, 91, 20,181,184,135, 92,141, 50, 72, 14, 84, 76,118, 19, 36, 34,177, 25,151, 21,138,119,187,114, 19, - 21, 68, 12,117,150,149,132,150,213,150, 54, 98,220,136, 16,188,119,163, 67,101, 5,113,196,105, 72,165,185, 82,119,197, 5,126, -248,228,114,219,144,233,141, 70, 67,104,106, 56, 82,124, 82, 79,136,218, 88, 9,105, 88,156,247,222,169, 82,227,191, 45,232,212, -218, 11, 78, 71, 98, 59,143,161,113, 39, 84, 75, 46,153, 13, 76,172, 45,229,243, 37,135, 29,104,251,180, 52,101,110, 6,210,236, -148,169, 74, 12,138,140, 74,153, 50, 51,206, 33,177, 76,164,162, 59, 73,171, 73, 72,104, 78,168,197,125,231,124, 63, 6, 48,109, -102,142,200, 60,234, 28,229, 82, 93, 7,244,104,105, 39, 91,241,105,141, 99, 37,254,169,195, 11, 90,214,220,144, 53, 30,151,233, -216, 2, 62,226,207, 81, 79, 37, 64, 53, 1,150,150,100,144,129,164,144,145, 57, 33,117, 0, 73,102,157,197,144,162,146,201,229, -185, 91, 7,133,199,163,200,101, 79,198,131, 70,106, 76,183, 83, 33, 17, 40,212,166, 60, 24,241,189,234, 27,101,247,106, 85,121, - 13, 51,138, 77, 9,190, 85, 34, 58,146,217, 82,185,213,225,182,227,202,108, 33,244,163, 51, 30,132, 13,122,179, 61, 46,206,167, -178,218,106, 21, 83, 17,198,105,113, 16,255, 0,130,203, 84,152, 48,121,220,112, 58, 60, 70,144,219, 72, 14,202,154,226, 91, 75, -137,117,229,164, 37,133,166, 84,233, 54,205, 18,152, 42, 78, 72, 74,100, 38,109, 70,157, 75,167,176,101,215,110,185, 45,168,183, - 26, 21, 45,132, 58, 22,233, 81, 25, 47, 73, 45, 70,101, 9, 42,121,228, 37, 28,165,217,183, 32,206,171, 85,105,149,250,165, 82, -149, 14, 75, 94, 12,218, 69,174,167, 26, 93, 42,136,182,199, 51,171,157, 33,213,135,234, 53, 63, 17,100,187, 57, 41,104, 33, 40, - 8,142,218, 24, 74,121,221,169, 86, 22, 72,193,212,205, 96,202, 46, 67, 48,184, 22, 31,101,130,133,184, 4, 88, 49, 35, 72,181, -216, 86, 28, 81, 1,116,150, 73, 25,169,242,225,205, 66,229, 73,146,164,163,105,104,209,130,181,131, 0, 76,135, 75, 68,143,118, -149,228,145, 98,129, 95,138, 36,233,202,152,138,141, 93,169,141, 69, 80, 30,227, 5,244, 43,222, 82,165, 36,243, 74,171,176,208, - 41,106,160,226,222, 82, 83, 28,169, 98, 40, 10, 73, 90,220,201, 68, 52,254,150,111, 2,144,225,187,179,158,209,187, 10,132,211, - 79,213,165, 82,118, 15,137, 25, 20,246,210,148, 75, 91,140,190,246,200, 95,117, 36, 32,115, 57, 41, 10,102,175,109,202,146,122, - 41, 18,232,108, 40,225,134,134,166, 17, 71,172, 75,173,183,254, 28,202,224,136, 19,125,223,220,189,237,247, 37, 21,179, 37,214, - 81, 80,121,191, 1, 45, 16,166,130, 31,105, 33,106, 75, 76,149, 56,163,206,177,200,205,113,141,195,133, 51,141, 78, 12,248,147, -225,150,176,148, 59, 23,119,182,166,230,182,237, 57, 15, 97,150,105,151,140, 70, 87, 85,176,107,200, 50, 27,253, 3,177,111, 58, - 93,191, 49,181, 28, 41, 2, 57, 60,193, 74,200,158,100,149,102, 22,210,191, 88,166,198,203,123,107, 2,250, 84, 17,179, 17,170, - 37, 36, 88, 6, 45,176, 1,135, 60,241, 94, 80,210,197, 55, 50, 52,167,146, 27, 38,149,177,141,119,250,189, 44, 46, 13,254,219, - 16,222,117, 4,220,220,223,242, 16, 41, 10, 0,121,103, 35, 29, 63, 35,174,144, 0,146,129,231,232,122,252,251,246,242,213,103, -105,213, 58, 52,201,244, 90,252, 69,192,174,208,170, 53, 26, 21,114, 3,128,135, 96, 86,232,211, 30,166, 85,233,238,115, 96,133, -177, 82,139, 41,165,103,205,147,175, 33, 3, 57, 79,194, 14, 78,124,199,203,236,212,253, 72, 96, 25, 78,160, 70,198,251, 27,216, -220, 31, 76, 83,251,247, 22, 56,241,142, 65,215,160,207, 76,143, 35,229,243,210, 78, 79,144, 72, 39,250,186,145,142,218,250, 74, -136, 25,198,115,208,129,220,124,245,247, 36,146,124,191,217,244,236,126,205,103,127,191, 3, 30, 72,200,230,229,206, 58,121, 15, -199,215,251,117,236, 5, 31,245, 72,242, 7,190, 62,223, 76,233,114,133,144,114,164,245,198, 7, 65,219,215,238,215,190, 92,127, - 56,224,103, 31, 47,191,211, 67,221,233,129,138, 43, 71,124,156, 15,196, 14,221,186,244,208,171, 3, 3,191,166, 64,201,249,119, -249,234,232,212, 41,147, 22,132, 71,105, 74, 46,186,134, 91, 32, 16, 29,125,194, 18,211, 12,249,188,250,213,209, 40, 72, 43, 89, - 56, 72, 39,166,186, 71,195,191,178, 43,142,110, 36, 99,196,171,219, 27, 61, 83,178,237, 25, 97,151, 26,188,247, 98, 90, 54,206, -131, 38, 59,229, 63,225, 52,182,171,241,205, 66,178,148, 52,175, 16,166, 60, 5,115, 36, 97, 43,202,147,157,121,171, 41,169,236, - 37,148, 43, 55, 69,234,199,224,162,228,159,112,198,205, 37, 29, 93,124,188,138, 26, 89, 43, 38, 29, 86, 36,103, 32,122,182,144, -116,143,123, 88,123,241,204, 5,140,156, 36,231, 29,252,135,224,124,251,232,117, 0, 14, 70, 1, 7, 7,183,159,203,207,166,117, -177,124, 80,240,223,126,112,157,189,183,214,195,110,107, 49,211,119,216, 53, 54, 96,207,155, 77, 84,151,104,213,200,115,224,199, -169,209,174, 75,118, 76,184,204,185, 50,223,157, 79,148,219,177,157,113,166,212, 74, 28, 66,144, 20,218,181,174,203,234, 48, 7, -159, 79, 94,255, 0,111, 83,141,108, 83,203, 28,200,146,198,218,163,144, 2, 58,142,190,160,216,223,220, 69,240,155,199, 36, 18, -203, 12,200, 98,158, 22,100,116, 59, 50,178,157, 44,164, 14,132, 16, 65,247,140, 12,160, 58, 18,122, 12,253,253, 63,179, 67,171, -168,200, 61, 58,140,249,227,207,167,231,182,138, 63,173,208, 17,223,167,203, 25,201,252, 53, 69, 64, 1,142,253,115,246, 15, 67, -173,144,108, 65,244,198, 70,227,125,199,254, 48, 26,129,245, 28,189,186,140,125,224,250,245,208,171,192,201, 25, 7,255, 0,104, -122,103, 69,184, 70, 72, 57, 0, 30,195, 29,124,186,126, 31,179, 66, 47, 62,163, 30,158,121,249,116,210,202, 73, 23, 56, 0,108, - 61, 54,192,202,193,193,193, 4,247,206,116, 58,199,159,175, 67,233,162, 87,235,229,140,122, 96,250,252,244, 58,129,201,200,200, -251,113,131,219, 56,209,199,198,216, 54, 6, 88, 0,100, 39,175,203,167,231,251, 52, 43,131, 39, 36, 2, 64,236, 58,254, 63, 61, - 22,231, 76,100,244,201,251, 60,134,132, 80, 30,188,221,127,104,193,245,251, 52,170,155,223,107, 91, 25, 22,223, 2, 44, 12, 18, - 70, 49,219,212,117,237,161, 87,243,234, 15,111, 44, 31, 92,249,249,232,197,140,103,249,222,127,105,251, 6,133,115, 24,236,123, -246,244,239,223,229,165,147, 10,139, 27,123,190,126,126,252, 12,188,246,199, 76,103, 62,152,254,142,154, 13,206,249,201, 78, 51, -156,140,231,211, 31, 46,250, 49,194, 2,122,244,243,207,151, 79, 93, 90,212,167,148,162, 20, 50,159, 34,158,248, 35,184,244,210, -152, 2,247, 55,232, 48, 59,171, 82, 85,220,156,231,177,199, 79,179, 75, 84,137, 89, 82,129, 64,192, 61, 9,238,125,123,157, 45, - 11,159, 92,102,195,211, 7, 1,145,228, 49,230,115,215,175,153,251,245, 85, 41,199, 65,212,158,255, 0,159, 77, 82, 78,114, 7, -145,207, 79, 35,223,203,237, 26, 37, 0,231, 61, 49,231,219,242, 53,130, 1,198,113, 85,164, 37, 39, 24, 29, 70, 51,230,123,121, -232,129,156,245, 31, 8, 29,193,235,233,231,223,190,169,163, 29,176, 58,117, 7, 26,244,121,242, 2, 82, 20, 60,250,224,142,189, -251,246,210, 76, 0,248,223, 3, 5, 39, 29, 51,146, 59,252,240,123,103,174,138, 64,206, 8, 35, 31,183,240,208,109, 54, 70, 78, - 78, 73,235,147,144, 6, 78, 6, 51,215, 70,163, 57,233,142,157,199,203,229,162, 27,218,255, 0,203,124, 17,187,155,224,134,240, -161,156,231,174, 64,235,211, 29, 63,164,104,132,168,143, 60, 14,199, 24,243,245,249,127, 86,168,160, 96,103,207,203,243,246,141, - 16,132,224,228,245, 7,174, 63,160,231,215, 73, 16, 5,253,223, 39, 9, 28, 86, 71,127, 62,223,143,231, 58, 44, 1,220,122, 99, -160,192,252, 52, 58, 82, 7,219,143,207,238,213, 86,242,162, 60,134,112, 57,142, 0,243, 42, 62,128, 12,232,167, 5, 97,182,231, -108,101, 54,149,175, 93,188,238, 42, 37,171,108, 82,103,215,174, 43,142,169, 10,139, 68,162,210,216, 92,170,133, 82,169, 80,121, - 49,225, 64,134,195, 96,151, 31,113,229,164,118,194, 70, 84, 72, 0,157, 78, 55,217,195,236,235,180, 56, 5,219,136,183,189,229, - 6,143,114,241,101,120,210,144,245,197,112,186,195, 83, 99,109,101, 38,115, 41,113, 22, 77,152,167, 82, 66, 42, 9, 66,147,245, -132,212, 0,227,174,130,132,144,210, 64, 58, 65,236, 48,224, 78,145,183,150, 91, 28,115,238,229, 25, 47, 93, 23, 10,101,211,120, -127,163, 84,163,165, 73,163,211, 57, 87, 30,165,184, 46, 48,226, 73, 76,201, 4, 45,184,107, 35, 40,101, 37,105, 33, 78,103, 93, -206,171,207,168, 77,158,242,214,234,165,120,206, 45,240,239, 57, 83,188,203, 36,252, 62,157, 9,239,170, 51,196, 46, 48,105, 37, -147, 42,160,151, 76, 16,146, 37, 96,109,169,129, 27, 92,118, 83,208,119, 32,181,143,145,135,112,125, 25,188, 13,143, 54, 16,113, -223, 19, 82,137, 17,172,244, 16, 72, 60,170,157,125,165,213,191, 93,246, 49,126,194, 16,247,212,254, 92,102,175, 95,155, 82, 46, -162,100,151,208,236,151, 84, 86,135,157, 83,143, 45, 96,146, 94,142,181, 28,149, 31,231, 39, 61,245, 66,141,115,205,137, 57,175, - 1,247, 75, 76, 35,195, 76,148, 41, 72,125, 46, 37, 67,149, 50, 80, 63, 89,178,122,100,246, 29,245,245,218, 59,147,164, 45, 78, - 62,215, 50,202,148,134,101,254,133,244, 62,145,140,180,188,124, 11, 56,232, 71, 67,171, 83,148,233, 49,170, 13,190,247,248, 44, -245,182, 90,104, 56,144,150, 39, 33, 63, 10,154,125, 67,225,241, 20,158,202,245,193,243,213, 56,106, 88,146,193,203,105,235,239, - 59, 19,191,201,199,127,158, 23,202,218,157,233,146, 24,236, 81,136, 80, 46, 1, 43,107,143, 46,174,130,197,183, 3,169,212, 47, -102, 23,138, 45,142,166,222, 16, 42, 27,183,108,211, 81, 10,232,163, 70,247,155,186,155, 13,174, 83, 92,132, 0, 8,170,165,134, -192, 6,115, 39, 5,106, 72,203,136, 86, 73,233,166,207,131,205,208,115,108,174, 89,118,133,206,234,163,216, 59,146,166, 20,169, - 42, 82,136,161, 93, 77,252, 49, 42, 33, 4,225,182,215,204,148,185,216, 20,171, 61,198,186, 27,110,114,132,166, 53, 69,148, 59, - 30, 90, 23, 25,101,236,171,154, 43,201,240,223,133, 36, 17,241, 35,145, 74,229, 39,161,215, 63,238,253,167,145,106,238,109,193, -110,177, 27,154,158,103,166,165, 71,109,208, 75, 65,135,207,188, 66,117,149,227,252,159, 41,228,233,219, 3, 75,181, 66,188,109, - 27,157, 72,221, 61,223,199, 99,123,219,220, 65,219,108, 51,192, 88,210, 85,228, 53,174, 76,116,104, 30,157,201,185,229, 35, 0, - 2, 19,125,224,147, 75, 37,239,101, 33, 13,213, 69,250,103,114, 80, 10,102,173, 46, 58,164,199,113,180,212,163,184,159,141, 18, - 38,180,144, 27,150,219,136,255, 0, 40,194,218,193,244,234, 52, 13, 53,152, 76, 85,228, 75,126, 75,175, 83,218,112,212,170, 11, -111, 28,170,135, 77,132,169, 78,242,115, 15,209,175, 45,242,143,153,236,117,227, 97,231, 85,171,148, 38,109,155,155,154, 91, 20, -248,232,126,139, 84, 87,199, 38, 34, 85,134,223,163, 74, 82,186,185, 28, 40,126,141, 95,205, 7, 30, 67, 69,110,125, 33,219, 19, -109,119, 58,172, 90, 66, 93,116, 66,166,211,214,225, 63,160,250,214, 82, 3,169, 64,233,241,150, 27,112, 39,168, 3,155, 62, 88, - 58,244,144,243,106,233,148, 11,197, 35,128,123,129,109,205,246,238, 6,199,184,235,108, 71, 42,184,155,216,242,188,198,154,162, - 95,237,180,208,232,140, 11, 90, 66,236,136,172,189,245, 3,160,145,212, 16,122,249, 73,227,159, 17,187,137, 50,231,190,101, 63, - 18,112,228,140,252,162,176, 30, 62, 10,228, 73, 82,164, 22, 95, 72, 63, 2, 91, 10, 66, 22,112, 8, 82, 66,185,126, 28, 29, 79, -145, 81, 80,168, 42, 68,213, 63, 12, 37,188, 63, 45,130,209,128,132,156,150, 26, 75,203, 73, 74,254, 39, 10,138, 92, 67,124,164, -229, 42, 25, 25,186,221,245, 35, 87,185, 43, 18,155, 90,227, 77,126,164,251,143, 7,129,118, 51,188,178, 11,120,144,148,242,135, - 91,232, 71, 50, 10, 92, 36, 36, 39,211, 88,139,213,131, 77,117,196,212, 27, 16,219, 83,220,225,196,169, 47,211,101,161, 71,194, - 11, 92,133, 4,174, 9, 66,203,105,113,183,145,240,248,193,124,202,108,130, 38, 34, 59,179, 29,137,125,253,230,246, 63,127,165, -250, 13,186, 11,218,248,225,108,186, 60,159, 36,202,104, 33, 80,239, 79, 18, 6,232, 36, 44,108,206, 88,216,171,134,102, 58,137, -189,193,232,183,182, 51,138,107,197,167, 35,145, 32,194, 75,137, 45,162,170,204,129, 26, 59,172, 0, 57, 16,250, 88, 42, 67,173, -168, 44,132, 33, 97,105, 81, 89,194,193,192, 15, 21,183, 34, 93,189, 17,133,173,196,213, 88,150,133,188,239, 51, 44,199,149, 29, - 45,142, 86,210, 82,135, 2, 38, 68,112,144,144,148,168, 41, 39, 32,133, 0, 2, 89,200, 80,154,117,109,186,212,100,199,139, 80, -101, 13, 33,216, 78,199,114, 51,238, 37, 74, 91, 78,189, 27,148,178,231, 80,164,172,130, 9, 41,201,238, 14,179,250, 11, 83,227, -182,194,154,145, 2,161, 25,212,187, 44,196, 66,213, 18,124,111, 5,107,100,166, 20,148,169,198,211, 12,115,175,153, 42, 74, 80, - 70, 78, 78, 51,166,186,192,172,178, 6,109,136,220,117,189,189,227,117,177, 30,160, 27,119,233,139, 14,158,162, 39,142, 0,101, - 66, 93,128, 10,247, 70,216,130,108,214,176, 96,108, 65,243, 95,175,187, 27, 7,111,210, 27,168,182,211,116,199,151, 78, 75,232, -110, 83,209,169,177, 26,125, 10,125, 72, 91,143,187, 34, 34,142, 34,172, 0,129,128,132, 45, 73, 72, 9, 43, 56, 80,206,163,202, -184,216,125,223, 26,158,154,225, 56, 80,114,142,180, 69,150,162,178,150,227, 46, 61, 62,106,200, 76,129,146, 74, 91,146, 28, 87, - 54, 67,121, 73,211, 37, 69,159, 9, 83, 19, 42,175, 34,171, 13,106, 74,227,154,156, 84,200, 79,185,120,108,229,135, 25,169, 81, -213,250, 96,176,134,208,128, 65, 64,248,130,145,141, 58,116, 74,219,236,148,159,175, 97, 86, 33,180,182, 20, 87, 17,108,199,169, -180,216, 91,106, 47, 79,130,128, 61,245,230,208,113,204,207, 34,215,156,148,247,212, 94,170, 25,163,109,148, 76,140, 5,245, 41, -218,254,142, 8,213,107,116, 44, 47, 97,229, 55,198,205, 75, 85, 29, 71,255, 0, 73, 68, 85, 96,178,164,159,111, 98,202,179, 71, -229, 98, 69,134,130,202, 77,238, 0, 83, 96,239, 82,107, 84,106,164,152,205,214, 16,245, 17, 75,247,101, 22, 43, 1,232, 83,105, -203,136,165, 50,229, 98, 34,151,202, 17,226, 61,202,145,202,178, 48,162,146,142,250,216,251,105,128,186, 36,170,100,211, 22, 67, - 77,176,209,122, 60,214,153,145, 30,167, 10, 65,240,214,164,164,158, 79, 13, 73, 45,115, 37,224,181, 33,120, 81,230, 79, 42,131, - 59, 69, 16,106,201,139, 50, 64,129, 87,142,243,161,150,146, 80,211,168, 90, 71,134,148, 54,236, 25, 3,150, 43,129, 5,101,229, - 41, 92,199,162, 51,130,112,245,208,236,136, 14, 52, 88,165, 63, 50,139, 34, 51,197,246, 98, 51,239, 14, 83,216, 91,139,113,121, - 76, 73,110,172, 58,223, 48, 72, 13,160,134,135,112,144, 6,154,194, 70, 23,117,229,143,129,216,236, 71, 80, 47, 96,118,184, 4, -222,231,114, 6, 41,222, 44,205,105, 4, 73, 28,205, 45, 7, 45,193,177,250,212,141,149,187, 31, 44,137,107,144,124,172,109,102, -184,117, 1,243, 59, 82,158,154, 90, 88,167,200,142,181,210,164,169,181, 70, 81, 89,144,237, 61,164, 97, 8,142, 95, 89, 89,114, -156,227,128, 6,143, 58,148,202,185,146,172,161, 73, 41, 58,230,163,187, 82,190,163,190,164, 15,240, 15,170, 97, 12,245, 79, 47, -184,169, 46, 41,174,193, 14,169,111,140,231,161, 40,198,122,227, 89, 5, 18, 3,176,154,143, 6,166,202, 9, 1, 73,143, 61,174, -116,199,117, 99, 11,126, 47,134, 18, 84,193,229, 10, 37, 10, 37,180,225, 64, 40, 28, 13,100,168,166,120,245,217, 15,133,120,168, -146,220, 87,219, 46, 28,171, 6, 52,112,158,128,225, 60,175, 70, 87,197,205,140, 40, 16,112, 64,214, 42,193, 90,101, 10,126,211, -169,184,233,123, 31,188,110, 72,220, 3,125,207, 67,138, 55, 49,206,155,219,234, 42,132,129,216,197, 32, 46, 15,145,195, 50, 2, -235,191, 86, 80, 85,250, 18, 70,227, 86,166, 57,149,157,109,178,148,183,224, 71, 1,183, 35,200,142,217, 40, 25, 72,109,212,201, - 82,185, 20,122,144,165,158,100,158,128,171, 25,198, 50,253,209, 40,136, 75,137, 56, 90, 16,244,102,139,216, 60,229, 92,174, 20, -160, 14,224, 59,241,225, 62,105,200,244,214, 51,107,195,108,165,151, 16,146, 22, 20,133, 20, 2, 74, 64,121, 60,138, 65, 87, 76, - 96,117,207,114, 8,243, 3, 79, 5, 53,182,146, 64, 57,193,111,145, 35,178, 84, 80,226, 28,232,165,126,162,177,219, 31,234, 19, -220,105,223, 44,132,121, 88,223, 77,198,253,250,119, 62,253,247,252,113, 75,113, 30,119, 60,175, 32, 4,249,186,239,191, 91,252, - 54,176,222,214,184,191,174, 50, 89, 20,195, 81,143, 72,144,180,173, 79,134, 84,226,176, 3,206, 10,131, 10, 49,156,120,149, 12, -182, 3, 33,100, 31, 37,188, 73,238, 14,172, 46, 81, 36,215,106, 78,136, 82, 13, 46,159, 29,244,173,218,140, 98, 3,147, 86,130, -148, 42,159, 79,101,212,148,184, 90, 82, 9,117,242, 64, 39,157,182, 86, 64, 39, 89,163,142, 4,210, 26,113,106,112, 18,169,104, -109, 13,148, 32,151, 20,219, 9, 95, 85,156,163, 43, 88, 5, 64, 16, 3,157, 50, 73,215,199, 43, 45, 65, 83,113, 91, 14,161,136, -145, 25, 84,196,198, 1,231, 22, 91, 74, 20,150,219,107, 33, 42,116,156, 18,165, 16, 57, 84, 58,142,131, 82, 86,141,140,129, 80, - 14, 99, 42, 29,250, 93,128, 39, 98, 55,238, 64,233, 99,214,219, 98,176,130,186,186, 61, 66,153, 3,200, 12,138,151, 0,172,107, -174,228,216,130, 24,139,170,168, 32,128, 73,218,246, 35, 9,159, 71,167,209,161,120, 20,248,236,194,134,100,203, 91,178, 29, 95, -186,251,203,202, 90, 28,149, 81,118, 76,215,143,188, 39,196, 74,202,151, 33, 97, 35,155,151,196, 40, 72,195, 37, 84,174, 73,169, - 84,154,106,129, 77, 18,105, 49, 10,229, 68,157, 80,241,218,102,167, 32,224, 55, 84, 90, 25,111,222,102,198, 15, 5,251,154, 64, -109, 11,229, 46,180,231, 39, 33, 15,133, 74, 59,117,246,189,234,168,242, 95,136,212,199, 36,199,182,218,105,167,105,241,249, 74, -146,211,181,151, 92, 73, 53, 87, 2,149,206,150, 9, 76, 54,221, 64, 80,109,197, 32, 43, 88,189, 94,149, 6, 43,205,191, 86,230, -247,217,135,221,162,211,216,142,170,140,185,124,205,173, 45, 70,131, 10, 58,124,106,140,226, 75,124,160, 0,202, 50, 8, 82, 18, - 57,198,220, 72,224,134,210, 45,176,191, 96,122, 95,208, 6,189,206,219,216, 29,247,196,207, 33,174,134,153,155,219, 85,171,171, -156, 48,220,187, 89,207, 83, 96, 67, 75, 32, 91,221,193, 17, 45,216,175, 48, 50,178,224, 84, 74, 44,154,236,184,109, 72,113,234, -237,116,165,197,177, 54, 82,143,185,194,138,164,184,249, 16,105,241,143, 44,103,208,121, 50,164,146,226,240,182,220,119, 4,235, - 37,164, 65,153, 92, 80,137,106, 70,139, 82,125,151,164,197,155, 93,168,123,196,123, 46,150,251, 8,240,252, 17,238, 40, 42,185, -170,222, 34,155, 80,141, 16,150, 88,230, 75,114,101, 51,130,141,103,113,118,222, 84,228,199,126,232, 95,240,106,136, 16,215,189, -218, 86,235,201, 53,185, 52,220,146, 81,114, 92,236, 97, 49, 90,112,128, 36,194,166, 1,146,181, 52,236,199,138, 84, 53,147, 85, -149, 73,182, 92,129, 6,223,109, 81,169,207,198,147, 79,163, 83, 41,232, 5, 82, 81, 29,145,152,108,180,165, 54, 91,134,211,156, -200,113,210, 18,218, 3,193,103,153, 99, 39,101,145,165, 85,144, 39, 49,211,208,128,187,218,251,146, 58, 53,134,171, 94,215, 4, - 88,173,147,175,226,120,170,103,246,122, 6, 21,149, 44, 27, 66,168,189, 44, 37, 67, 23, 6, 68, 33, 36, 54, 58,210, 58,127,236, -202,171,173,165,149, 12,145, 11, 77, 10,223,167, 90, 47,203,153, 93,154, 39,203,117,178,229, 86,225,153, 22, 43, 10, 90,217, 97, -108,173,148, 73,109,194,197, 34,138,149,128, 98,176,158, 86, 18,160,180, 32,169,197, 18,171,243, 12, 71,188, 39, 42,174,205, 61, - 18, 45, 72,169, 45, 52,144,181, 82, 30,158,238, 86,184,179,219,134,160,218,163, 82,146,160,225,109, 14, 58,219,178, 20, 76,135, -249, 18, 91,109, 56,227,176, 25,153, 75,137, 81,185,166,184,212, 78, 68,193,165, 81, 33, 56, 20,195, 85, 39, 10, 11, 82,165, 48, -193, 47, 87,234,137,240,209,202,128,158, 72,168, 70, 91, 66, 74,214,240,187,209,162, 25,147, 29,241, 80,243, 20, 40, 45,185, 21, -234,107,146, 57,170,243,146,235,172,178,227, 19,125,225,132, 36,196, 91,197, 42, 68,112,151, 28, 82, 94, 80,113,210, 62, 13, 58, -210,106, 66,183, 75, 35, 17,168,117, 97,109,198,228, 16,111,212,237,190,224, 90,197,113, 23,172,103,117,158,190, 74,182,147, 48, - 80, 99,105, 64,211, 10, 1,101,209, 78,168, 99, 38,107,105,141, 52, 17, 20, 68,221,110,162, 55, 14,212, 81, 18,171, 73, 69, 54, -151, 80,170,193,183,229,135,231, 85, 42,149, 41, 47, 79,143, 80,247, 20, 52,203, 16, 98,229,240,126,168,115,170, 31,125, 39,149, -208,202, 26, 10, 40,231,230,113,232, 15, 68,139, 87,166, 53, 26, 60,198, 94,122, 51, 68, 71,148,250,148, 25,103, 63,162, 83,229, - 41, 41, 99, 37, 69, 44,160, 37, 60,201,103,152,129,206, 20, 27,135, 43, 8,141, 22,153, 2,220,110, 28,171,174,170,134, 89,142, -153,169, 66, 35,209, 88,108,174, 57,126, 80,125, 99,220, 96,135, 91,113, 92,141,161, 33,199, 27, 75,101, 92,216, 34,241, 2, 53, - 62,152,134,101, 34,161, 49,233,206,169,137,117, 56,178,156, 90,231, 45,245,190, 29,112,130,215,199,159, 17, 9,113, 10, 64, 72, -240,130, 80, 82, 83,212, 76,105, 31,217,222, 25, 64,230,104, 8,110,162,224, 1,102,223, 85,193, 99,246,172,183, 96, 73,103, 47, -101, 81, 84,230, 84,205, 52, 18,164,134, 72,163,156,202, 35,140,221,164,118, 98, 85,165,150,214,109, 39, 74,162, 72,246, 71,229, - 5, 65, 26,139,159,203,207,219, 83,176,204,240,223,237, 79,227, 35,111, 41,204, 69,139, 67,175,238, 80,222, 59, 98, 36, 38,195, -113,161,208,183,162,149, 7,112,132, 52,182,144, 3,101,170,213,102,182,215, 40,232,148,176,158,221,135, 48, 73, 36,100, 96, 99, -184, 61,250,246,212,159, 62,150, 45,137, 6,222,246,135,108,254,224, 66, 67,137,123,117, 56, 94,183,220,168,135, 22,209, 74,230, - 88, 87,181,215, 66,109,109,161,180, 2,209, 52,250,172, 0,176,165, 45, 68,165, 61, 64, 1, 34, 48, 64,228, 21, 18, 15,251, 56, -236,115,211, 86, 37, 3,171, 82, 68, 23,236, 70, 90, 53,182,195, 76,108,209,131,111, 66, 22,227,189,136,190,247,199, 60,230, 49, -152,171,170, 80,253,162,193,143,184,200,162, 66, 62,237, 86,255, 0, 76,120, 41,206, 48,160,113,145,142,217,207,150, 15,125,123, - 0,227,148, 14, 92,116, 63,209,247,244,215,220, 39, 25, 35,191, 83,230, 71,159,125, 87,109,178,242,146,134, 70, 92, 87, 96,172, - 36, 4,128, 84,165, 45, 71,162, 80, 0, 36,146,112, 0,201,233,173,195,210,228,218,223,187, 26, 93,174,118,199,134, 90,117,213, - 33,166,208,167, 28, 90,185, 80,132, 2,165, 40,158,192, 1,174,165,240, 33,236,163,226, 11,141,133,195,187,161,181, 31,108, 54, - 57,185,170,102,161,188,215,148, 9, 46,210, 42,138,140,234, 81, 54,157,182,214,243, 78, 53, 39,113, 42,232,234,133, 62,203,140, - 81,226,186,164,251,205, 65, 68, 45,141,111,127,178,155,217, 11, 7,117,232,244, 30, 38,184,174,161,203,107,103,231,248, 21,109, -173,218, 73,190,241, 78,168,239, 51, 13,168,169,155,182,242,228, 90, 36, 81,246,136,186,131,238,144,210, 90,151,113,134,203,171, - 91, 20,149, 36,203,150,181, 2, 36, 72,241, 41,180,202,125, 62, 5, 42,149, 74,131, 14,149, 68,162, 82,162, 70,166,209,168,180, -168,109, 37,152, 52,202, 93, 50, 19, 72, 98,155, 79, 98, 58, 66, 90, 97,150,208,219,105, 24, 66, 83,166, 25,243, 9, 42, 36, 48, -211, 63, 42, 59,216,200, 44, 75, 90,215, 17,131,112, 7, 91,187, 2, 54,178,171, 92,178, 89,124, 43,192, 18,102, 49, 69,153,103, - 74,240,208,200, 3, 69, 2,157, 18, 76,166,196, 60,141,179, 69, 19, 15,178, 22,210, 56, 58,131, 70,186, 89,244,203,132,143,102, - 23, 8,220, 37,199,165,207,176,182,222, 37,237,184,240,218, 71,188,239, 38,234, 68,167,221, 55,203,178, 8, 5,199,104, 48,157, -143,245,101,141, 16,184, 57,155,143, 75,138,210,217, 36,230, 83,228,243,158,151, 69,160,187, 49,126, 36,133, 58,235,129, 35, 46, - 60, 86,226,143, 94,131,153, 68,246, 24, 3,200,118,213,202,135, 74,248, 27, 28,132,168,164, 41, 71, 3, 60,167,178,137,239,204, -123, 15, 64, 52,232,211,232,248, 74, 64, 64, 35, 29, 71,146, 73,235,146,113,212, 96,254,205,107, 90, 40, 75,114,198,159, 86, 38, -236,109,251, 76, 73, 38,219,253,162,109,208, 91, 22,226, 81, 83,208,192,148,180,116,233, 71, 78,189, 18, 53, 84, 94,219,144,182, -187, 30,236,110,205,212,155,226, 36,191, 73,131,133,184, 14,237,254,198,241,107, 70,166, 37,170,205, 10,172,246,199,238, 12,230, - 90, 72, 51,232,213, 6,101, 92, 59,127, 50,122,210, 50,227,241,167, 51, 87,134,218,213,158, 86,166, 6,193, 0, 1,168,116,169, - 41, 33, 39,204,245,237,215, 39,203,251,117,250, 82,251,111,182,226,159,122,123, 47,248,158, 68,212,183,205,103,209,237,109,192, -166, 56,164,149,248, 53, 59, 98,234,166, 45,165,183,223,145, 74, 98,100,132,103,253, 85,145,219, 95,154,217, 61, 0, 4, 2, 74, -134, 8, 61, 7, 49,198, 52,227,147, 73,255, 0,165, 66, 15,216,112,195,220, 36, 0,159,222,225,201,223,169,197, 33,199,180,137, - 77,196, 45, 34, 0, 5,116, 17, 74, 69,250,190,167,136,155,109, 98,194, 32,222,246, 36,247,192,206,116, 56, 35,174, 1,207,238, -253,186, 25, 65, 61,243,212,246,243, 7, 26, 53,192, 0,199, 55, 83,220,158,189,254, 95,142,132, 88, 87, 83,128, 65,237,142,152, -192,193, 56,199,174,159,241, 15,192, 46, 18, 50, 66,124,241,246,227,185,249,232, 98, 58,147,216,252,251, 39,236, 30, 90, 53,207, - 47,191, 65, 58, 65,207,175,110,189,250, 16, 14, 52,178,244, 30,252, 20,218,254,159,207,182, 5,112,227, 39,190, 51,142,131, 31, -120,199, 78,154, 17, 68,242,243, 31,159, 40,251,126,126,154, 37, 72, 61,249,137,198,122,121,118,238,122,245,213, 5,161, 68,100, - 16,191, 34,124,135,231,247,232,227,183,207,254, 48,111,134, 5, 42, 36, 16, 71,124,114,231,182, 61,126,122, 29, 68,103, 25,234, - 1,232, 6, 0,235,229,162, 84,147,145,215,246,116, 0,106,130,240, 62,121,237,229,142,217,251,124,180,162,141,133,183, 31, 63, - 61,177,144, 1, 62,151,192,138, 73, 25,229, 57,201, 57,255, 0,103,240,208,221,251,232,197, 2, 50, 70, 0,235,156, 30,227, 61, - 50, 61,116, 50,192, 29,129,245, 39,203,236,252,116,170,117,249,219, 10, 40, 4,116,183,200,197,185,230,249,199, 41, 42,198, 70, - 82, 58,103, 25,238, 71,150,116, 51,141,184, 1,235,202, 2,112,144, 0, 36,143,159,167,158,174, 42, 0, 30,132,158,249,207,174, -132,121,178,164,158, 85,169, 7, 39, 24,254,119,219,234, 51,165,176,110,158,235,226,222, 82,148,255, 0,148, 36,147,212, 99,211, -208,244,239,165,175, 69,181,182, 0, 82,148,225, 61, 73,192,233,242,239,165,161, 99,233,140,227,210, 7, 92,249, 15,233,252,157, - 20,130, 49,129,223,185,251,245, 65, 32,224, 12,117,234, 63, 19,255, 0, 13, 86, 64,238,124,199, 76,122,104, 96, 96,148,167, 3, -175, 66,127, 28,126,227,253, 90,168,210, 0,200, 56, 61,207, 79,158, 58,231,243,223, 84,210, 73,233,142,131,166,126,239,219,162, - 91, 73, 57,233,223,215,207,166,147,112, 55, 61,255, 0,241,129,143, 96,121,224,159,199,161,251,180, 91, 63, 23,113,203,215, 25, -238,123, 13, 83,109, 35,160,235,215,175,223,141, 18,148,131,208,116,233,158,223,102,147,193, 77,141,238,118,193, 72, 79,216,122, -118,249,250,227,203,207, 85,146, 1, 56, 61, 61, 49,251, 7,109, 14,216,230,198,125, 50,122, 99, 68,160, 2, 64,198,125, 63,225, -164, 90,192,144, 62,122, 97, 28, 86, 29, 14, 58,140,121,159, 62,158,186,218,174, 11,120,121,159,197, 23, 18,123, 87,179,145,130, -147, 79,185,110, 40,206,220,178, 66, 73, 76, 27, 74,150,164,207,184,229,172,143,213, 6,158,202,219, 7,253,105, 35, 90,172, 1, -206,113,144, 59,143,159,245,234, 71,254,193,173,178, 98,146,141,245,226, 34,165, 22, 63,188, 82,169,144,118,234,211,150,250, 66, -158, 98, 93, 83, 19,235,142, 70,200,253, 26,253,223,221, 91, 42, 24, 61,198,152, 56,151, 50, 57, 86, 77, 91, 84,173,166, 80,186, - 80,142,161,155,107,143,122,130, 91,254,220, 76, 56, 7,134, 79, 24,113,142, 65,195,218, 75, 67, 95, 58,243,173,255, 0, 2, 48, -101,152, 92,116,213, 26, 20, 7,179, 48,196,149,103,214, 45,203,102,139, 77,179,109,136,172, 83,237,139, 54,149, 2,215,182,224, - 65, 9,106, 37, 62,145, 72,142,136, 76,165, 49,147,211, 5, 45,100,145,212,231, 39, 86,118,235, 42,143,200,227, 47, 37,210,234, - 18, 24, 83,124,167, 5,120, 37, 7, 39,169, 39, 31,142,154, 22,235,241,228,173,213, 7, 98,188,149,229,164,178,233,228, 89, 82, -186, 30,101,122, 21,107, 39,167, 33,181,182,204, 85, 70,113,109, 7, 2,195,161,204,169,167, 50, 20, 18,130, 15,196, 61, 53,201, - 85,114,187,206,236,205,119,148,147,111,221,239,252,122, 91,240,246,231,132, 50, 26, 12,191, 43,166,165,142, 30, 84, 80,168, 93, - 32, 13, 58, 85, 84,105,177,176, 1,109,176, 91, 3,211, 99,135,136,196,145, 38, 52,105,210, 76,121, 79,186, 10, 76,117,169, 45, -200, 65, 31,170,160, 65,233,140,104,132,199, 66,144,161, 62, 50,221,107,148,150,150,164,248,168,109, 67, 33, 74, 86, 6, 71,200, -131,160, 41,209,224, 56, 99,202,116, 72, 15, 50,217, 66,222,125, 75, 64,192, 24, 0,163,205, 35,215,229,172,162, 35,108, 56,218, -125,222,104, 97,121,193, 42, 81,113, 50, 18,162, 73, 1,181,118, 3, 58, 69,199,148,148, 66,227,107,244,216,237,190,219,127, 28, - 18,170, 83, 9, 43,230,178, 30,161, 74, 4,185, 54, 11,164,181,128, 27, 95, 77,200, 59,139, 97, 81,169,202,247,134,228, 67, 90, - 39, 71, 36, 55, 34, 19,199, 15, 6,193, 24, 91, 89,234,160, 7,109, 86,220,221,191, 69, 90, 85,181,115, 68, 96, 46, 68, 6,140, - 7,138,147,149,150, 82,160,166,208,188,140,168, 39, 39, 25,242,233,167, 58,137, 71,166,201,142,194,201,142,212,216,196, 6,229, - 50,121, 11,153, 61, 65, 3,161,199,207, 78,207,240,125,201,244,162,195,141,165,106, 65, 67,236,188,216,248, 92, 90, 48, 74, 84, - 7, 98, 83,144,126,221,106,152,228,100,145, 44, 64,101, 22,223,184,183, 79,141,173,235, 98,111,138,187,136,120,137, 99,171,130, -101, 58, 30, 38,100,109, 86, 82,202,195, 78,228, 88, 56, 32,141,236,172, 58, 16,109,124, 91,182, 90,193,101,183,152, 82, 35,165, - 30,248,200,113, 65, 41, 9, 79,140, 82, 57,198, 49,211,152,245,251, 78,155,223,104, 77, 33,251, 91,135,122,140,200,202, 44, 42, - 69,199, 77,109, 75, 9, 39,197,247,120, 85, 7, 27,105,208, 6, 86,128,176,147,145,219,151, 56, 58,220,141,174,167, 53, 29,232, -216, 70, 58, 14,152,232,133,143,214, 72, 31,205, 26, 97,253,170,148,143, 23,133, 86,229, 70, 46,101,187,202, 15, 56,105, 57, 89, - 75,148,154,162, 84, 79, 78,191,171,143, 92,159, 93, 75, 50, 90,104,205, 42,203,166,242, 70,111,241,189,135,243,239,235,142,124, -204,184,154,105,248,255, 0, 33,161,119,211, 75, 85, 83, 4,100,118,176,147, 86,254,237,133,254, 24,136, 5, 65,227, 38, 82,145, -202,226, 39, 41,110,184,151,185,156,241, 27, 46, 17,149,180,210, 23,200,250, 75,169,109, 32, 45, 42, 64,235,207,202,174,244,225, - 84,213, 6, 69, 67,223,225,189, 84,158,167,131,113,207,129, 29,150,216,138, 80,148,182,153,212,240,151, 19, 0,248,133,126,240, -180,243,120,152, 79,110,128, 7, 61,166, 95, 74, 93, 83,147, 93,247,105, 92,175, 73,101,190, 69, 71,105, 74,202,153, 10,108,130, -212,142,100,163, 40, 88,230, 36,130,160, 83,202, 52, 77, 26, 68,232,229, 30, 27, 79,123,184, 37, 79,205,166,196,101, 85,116,182, - 73, 71, 35,108, 72, 90, 68,166,220, 46, 4, 56,180, 23, 84,209, 5, 97, 7, 3,149,225,214,234,123,129,216,253,221,239,113,176, - 23, 3,174,219, 95,167,161,116,245, 3,200,177,221,159,162,132,176, 97,182,229, 73, 27,128, 53, 11,223,179, 1,176, 39, 14, 61, -179,110, 49, 87, 92,138,164, 73,146,233,178,165,150, 16,227, 84, 69, 42, 50, 94,109, 10, 71, 71, 96,168, 22, 37,159,133,105, 75, -193, 9, 83,132,168, 41, 95, 14,158, 74, 45, 26,235,147, 34, 76,184,244,134,171, 40,104,204, 83,146, 41,175, 68,162, 76,140, 26, -117, 76,161, 51,233,207, 31, 0,115,161,149,165, 62, 10,135, 57, 87,234, 12,157, 54,148,138,123, 5, 81,133,159, 38,108, 39, 22, -195,242,231, 68, 66,152,157, 2, 68,128,208, 83,174, 57, 5,247, 3,144, 18,140,142,105, 41, 91,107, 89, 89, 79,134, 84,158,109, -108,157,156,170,253, 2, 24,110, 77, 1, 74, 65,106, 28,151,106, 52, 57, 77,206,132,236,118,255, 0, 72,150,159,167,169, 41,148, -219,202,116, 37,124,170,241, 18,165, 16, 50, 10,136,212,110,190, 89, 0,102, 91, 57, 54, 10,173, 96,125, 45,246,150,247,176,217, - 88,139,245,185,184,195,137,205,164,100, 34,153, 99,169,146, 43, 14, 92,202, 82, 66,118,230,106, 62, 73, 25, 71, 75,134,111, 41, - 23, 70, 4, 1,238,148,138, 91, 79,179, 2,163, 42,161,107, 43,221,217,145, 13, 23, 52, 5,211, 28, 76,196,148,190, 35,243,188, -223,129, 37,188,163,195,105,198, 94, 1,193,212, 37, 68,105,199,141,108,212,103, 60,153,146,233, 80,100,164, 73,113, 42,158,134, -163,128, 66,210,128,223, 59,193,178, 90, 87, 40, 29, 82, 74,185, 79, 84,231,174,179,235, 33,170, 93, 82, 77, 65,154,147, 17, 46, - 76,178,176, 41, 85, 40,140, 45,104,144,248, 64, 74, 13, 62,115,105,115, 41,101, 46,164,185,225,171,144, 31,132,142,153,120,104, -155, 91,103, 58,196,127,118,165, 59,108,201,150,211, 50,140,139, 86,167, 83,165,188,209, 10, 66, 17, 17,112, 22,243,140, 60, 16, - 72, 81,231, 97,105,115,147,153, 93,245, 22,146,172,134,180,138,209, 72, 58,244, 55,189,174, 71,217, 35,212,143, 54,251,139, 30, -173,181,252,117, 14, 86,239, 28,240, 77, 72,225, 81,117, 42, 44,182, 50, 45,220,171, 22,130, 84,251, 42, 72, 28,237, 90, 65, 85, - 58, 66,227, 1,178,236,216, 17,129,148,194,170,116,121,146, 79,188, 38, 93, 38, 95,133, 10, 82,217, 78, 91, 18, 24,229,114, 60, -196,167,194, 87,134, 28,105, 10,115,149, 65, 71, 7, 26,218,107,126,109, 90, 10,162,154,132,152, 21, 33, 32, 55,133, 48,201,165, -212, 26, 80, 33, 63, 20,102,159,113,167,222, 82, 65, 82,130, 11,105, 73, 39,225,199, 46,172,180, 45,177,175,198,113,230,233,151, -117, 62,124, 98,178,148,183, 92,183,144,196,137, 9, 81,248,202,103, 82, 28, 65,109, 73,194,146, 20, 24,229, 74,149,158, 83,170, -151,157, 90, 22,218, 91,117,139,187,113, 17, 73,181,172,155, 85,134,101,215,110,181,213, 99,253, 77, 72, 98, 68,134,161, 70, 15, -171,149, 18, 12,199,165, 63, 30, 59, 44, 48,211,146,228, 58,240, 75, 8,112,149, 16,164, 80,243, 60,247, 50, 62,199,125,199,193, - 73, 23,219, 99,125,143, 82, 0,239, 80,241, 39, 21, 71,196,149,209, 83, 82,212,174,107, 81, 80,226, 56,226, 80,230,162, 70,147, -234,226,138, 33, 50, 71, 80,238,238, 21, 99,138, 13,122,152,170,128,194,195, 15, 28,122,147,162, 40,105,244, 58,132, 37,223, 18, - 3,231,194,234,242, 86, 28,114, 59,165, 43, 30, 26,249,214,164,228,128,219,188,202,202,185,192,213,242, 37, 81,151, 30,143, 37, -197, 57,226, 48, 3, 43, 43, 9, 11, 44,184,174,102,157, 83, 95,206, 90, 22, 66, 70, 64,200, 86,124,137, 13, 21,189,112, 82, 46, - 11,114,151,114, 91,117,216,119, 21,175,113, 83, 33, 86,232,117,120,238,174, 76,106,173, 26, 82, 67,145,101, 66,125,192, 11,141, - 45, 4,130,146,128,164, 41, 37,183, 57, 92, 66,210, 3,147,114,251,147,205, 46, 54, 83,202,178, 2, 20,226, 80,132,161, 96,169, - 73, 10, 36,120,173,129,204,140,147,204, 20, 64,198, 59,150,162, 37,117, 42, 5,134,194,253,108, 65,216,110,125, 71, 75, 11,250, - 92,139, 85, 45, 11, 75, 83, 85, 72,209,180, 51,196,206,140,172, 25, 25, 24, 29, 14,146, 35, 0,209,184, 32,134, 82, 46, 24, 18, - 55, 26, 78,240, 90,213, 31,208,130, 86, 9, 4, 18,130, 72, 73,229, 80, 42,230,108,126,177,199, 46,112, 65, 25,207, 93, 58,209, - 39,130, 16,145,159,214, 81, 60,157, 65,194, 72, 0,114,156,158,128, 96, 14,165, 71, 30,128,234, 46,217,220,212,153,116,202,237, -193,112,215,105,214,197,177,108, 64,126,171, 91,175,213, 37,166, 53, 46,151, 79,136, 18,100, 76,145, 41, 67,244, 76, 39, 45,163, -148, 5, 41,199, 22,134,154, 11, 82,210,147,121,177, 56,210,225,140,221, 20,202, 80,185, 43,180,231, 43, 85, 4,209,236,251,142, -240,181,165,219, 54,109,110,224,123,244, 52,198,233,213,121,111, 56,150,164,191, 39, 34, 8,154,220, 70,223,145,203,133,133,114, - 37, 82, 44,159, 40,174,158,140, 87,178, 8,168, 83,237, 72, 72, 38,202, 69,200, 91,220,219, 97,125,133,250,145,136, 77,103, 11, -113, 14, 98,249,179,100,188, 59, 93,159, 12,160, 94,161,169,105,165,154, 56,137, 78, 96, 87,150, 53,100, 83,203, 28,198, 91,150, - 88,129,148,174,133, 36,110,229,114, 79,128,205, 58,148,133, 31, 26, 20,100, 59, 45, 60,196,132,212, 39, 20,202,122, 50, 84, 70, - 84, 27, 10,142,218,188,129,109, 73,206, 70, 5,137,201, 14, 46, 63, 35,110,172, 30, 98,236,137, 60,136, 43, 66,208, 65, 73, 5, -196,225,111,114,171,166, 73,229, 9, 25,193, 3, 88, 95,215,200,158,183, 30, 67,206, 41, 43,116,248,202,117,107,231, 82,249,143, - 62, 86,165,101, 75, 43, 42,230, 4, 2, 9, 87, 55,198, 14,178, 38, 92, 98, 67, 32, 20,251,201, 8, 88,240, 16,146,164, 41, 67, -178,192, 65,194,147,145,216,231, 10,198,125,116,226,139,237, 51,153,109,101,216, 45,137,176, 85, 0, 40, 38,219,249, 64,243, 91, -246,186, 2, 70, 32,113, 80,251, 44, 81, 44,131, 83,130, 89,141,129,187, 49,212,196,131,181,139, 18, 64, 38,192, 90,228,140, 52, - 23, 71, 18,155, 27,182,247,133, 23,109,175,221,230,219,141,180,184,238, 72,209,228,209,169,247,213,194,220, 10,181, 86, 20,201, - 78, 65,135, 62, 60,103,163,251,172, 38, 37, 75,102, 75, 81,164,214, 36, 66,142,250,153, 91,141,169,214,146, 84,119, 30,147, 66, -165, 80,195,147, 41,232, 38,166,235,108, 25,149,121, 74, 76,250,173, 65, 50, 26, 67,141,184, 37,252, 94, 36, 34,194,208,182,218, -140, 81, 20,180, 82, 89, 10,109, 73, 89,131, 15,180, 99,113, 31,190,120,217,226,105,247, 21, 37, 48,237,189,193,122,201,132,220, -231, 27, 90,216,183,172, 58, 52, 11, 98, 37, 40,182,149, 41, 9,140,210,225,202, 12,167,155,149,105,150,162,177,158,154,222,143, -101, 55,180,158,109,129,120, 91, 92, 38,241, 1,118, 84,165,108,197,201, 83,133, 67,218, 59,194,177, 84,117, 3,105,238, 58,130, -145, 22,145,102,215, 42, 78,168,190, 54,130,167, 53,198, 99,180,128,239,129, 65,155, 33,153, 40, 74, 41,207, 76, 66, 18,163,204, - 18,106,169,105,103,136, 44,113,146,169, 37,205,135,152, 11, 55, 64, 21,137,251, 98,218, 65, 1,129, 26,156,119,103,137,223, 65, - 12,230,155,192,222, 23,241, 67,129,120,142,163, 57,207,166,202,105,115, 92,243, 34,120, 80,201, 36, 83,210, 71, 89, 57,203, 94, - 45, 47, 81, 37, 18,146,173, 69, 62,179, 89,161,231,164,145, 39, 16,209, 79, 40,202,229,206,203, 50, 92,167,210,208,107, 18,249, - 17,239,226, 44,119,234, 17,224,182,163,206,183, 36, 8,104, 87,141, 37, 68, 5, 37,149,169, 33,190,156,196,116, 73, 21, 52,233, - 79,123,195,137,167, 34,158,186,130, 89,101,234,213, 77, 81,234, 87, 35, 64,168, 41,152,136,167, 35, 45,198,233,144,132,186,180, -161,158,159,161, 42, 57,214,118,211,109, 82,144, 99,162, 60,122,107, 81,146,184,210, 98, 6,209, 25, 12,173,165,168, 41,185, 13, -180,145,149,165,224,224, 89, 57, 61,193, 61, 53,141, 63,114, 33,233, 11, 85, 22, 2,170, 6, 42, 84,212,185, 46,120, 80,168,201, -117, 77,148,182, 88,156,160,181, 73,125, 4,163, 41,105, 11, 32, 40,146,226, 20, 64,212,177, 40,249,104,218,136, 93, 29, 1,247, -238, 71,235, 92,237,232, 58, 18, 54,181,252,231,165,168, 98,130, 44,186,134,201, 24, 5,166,121, 54, 99,112, 87, 94,233, 10,130, -202,186, 81,249,136, 78,144,193,201, 44, 84,122, 5, 38, 28, 86,234,113,156,144,169,205,161,212, 57, 82,170,201, 76,201, 45, 60, -163,153,137,113,197,182,159,113,143,202,130, 20,219, 0, 33, 33, 33, 36,173, 0,232, 37,215, 92,148,250,153,181,195,113, 24,204, - 83,252, 40,144,178,220,218,116,212, 96,205, 77,188,203,169,196,146,181,168, 6,221,112, 41,150,139,220,205,165, 69, 32,139, 44, -136,107,113,106,122,179, 49,215,100, 48,241,113, 20,248,234,113,186,107, 6, 70, 20,166,155,136, 28,230,125, 10, 89, 0,151, 66, -148,164,164,149, 30,184, 24,253,199,122, 66,165, 47,234,152,208, 81, 88,170, 60,133,169,134,151, 37, 17, 89,142,182,144,160,195, -138,116, 16,184,175,115,146, 26,228, 35,152, 2,144, 10, 70,182, 97, 64, 14,163,229,113,223,173,246,245,220,141,236, 46,119,233, -208,144,112,239, 75,150, 79, 93, 50,162,150,205,103,109, 68,106,254,230, 52,186,181,201,144,170,200,168, 55, 28,194,177, 0, 89, - 74, 58, 49,195,130,197, 46,151, 71,143, 89,156,136, 50, 16,226,147,239, 45,220,146,230, 75, 91,181, 22,228,134, 85, 46, 53, 65, - 42,116,169,215, 27, 81,116, 21,143,136, 56,176, 83,223, 69,209,101,194,118,104,120,212,188,105, 41,116,182,242, 25, 83,206,149, - 54,218,214,160,181,186,242,194,131,168,108,182, 83,205,250,200,108, 3,147,240,233,134,126, 83,142,181, 21,235,160,213, 20,137, -105,109,136,245, 1, 33,149, 69,131, 86, 73, 74,228,162, 18,225, 47,194, 98, 66,176,143,133,208, 29, 73, 36,133, 44,128, 52,237, - 91, 17,157, 91,145, 84,244,169,143,180,227, 68, 21, 75,109,133,243, 33,111,129, 20, 74,114, 56,241, 39,182, 84,174, 82, 70, 20, -165,173, 69, 57,239,167,120,101, 42,241,198, 6,146, 55,181,138,219,126,164, 14,187, 16, 5,245, 16, 5,201, 45,115,133, 51, 76, -165,169, 40,229,154,170,189,170,102,150,227, 88, 37,145,130, 42,169, 88,221,140,154,183, 83,169, 71, 40, 43,236,138, 6,155,195, -227,233,107,174,155, 39,136,190, 10, 30, 97,107,118,164, 56,127,220, 70,158,146,160, 16,217,132,155,246,143,200,210,154, 35,155, -222, 4,191,120, 37, 71, 9, 82, 86, 10, 64,235,168,152,132,228, 28,164,164, 19,215,231,143, 77, 73,155,233, 79, 95,204, 87,248, -240,217,189,185, 66,217,147, 47,105,120,111,164,154,148,182,157, 83,138,126, 70,226,221,245,186,220, 86,150,133,146, 80,148, 83, -104,144,212,158,249, 18,186,147,129,168,234,237,246,223,222, 27,165,119,219,150, 21,133,110, 86,174,219,186,237,172, 68,160, 91, -118,213,189, 79,122,169, 91,174, 86, 39, 44, 34, 53, 58,153, 1,128, 75,239, 43,226, 82,212, 74, 91,101,180, 45,231,150,219, 72, - 90,211, 98,229, 79,202,203,150, 89, 92, 34,171, 76, 88,147,176, 28,199, 55,185,216, 11,111,185,252, 49,198, 60, 76,139,250,126, -189, 32, 28,197,102,132, 46,145,114,196,195, 16, 0, 0, 1, 44, 73,181,128, 4,182,214, 7,108, 96,193, 42, 89, 72, 66,114, 71, -100,165, 36,149, 99,176, 0,119, 58,237,167,177,211,217,215, 3,138,221,197,169,239, 54,241,210, 85, 43,135, 45,155,171,194, 77, -122,148,248, 83,108,110,166,227, 37, 13, 84,169, 27, 94,149,140, 21,219,145, 99, 42, 44,251,145, 77,156,169,135,162, 82,185,144, -185,207, 4,246, 39,129,175,163,187,181, 22, 69, 46,141,184, 92,116,214,164,223, 87,121,101,186,140,141,132,177,171,110,211,108, - 90, 17, 41, 14, 34,153,125,223, 20,181,162,117,229, 60, 3,201, 42, 45, 53,216, 84,224,161,200,151,229, 4,149, 43,177, 76, 91, - 27,113,181,244, 24,150, 14,210, 88, 54,166,216,237,189,188,185, 31, 81,216,214, 37, 26, 21, 6,221,166, 25,110,243, 75,144,204, - 24,141,132,174,107,238,225,201, 18, 29, 43,126, 67,129, 42,121,215, 23,130, 27,243, 44,205,164,167, 43, 26, 24,161, 39,118, 99, -165,220,118, 10,191,105, 84,157,152,182,150,181,202,117, 86, 19,158, 18,240,238,182,106,218, 90,236,242, 5,138,150, 59, 56,166, - 62,103,145,133,180, 9, 71,217, 84,185, 12,200, 75, 22,182,135, 80, 11, 12,100, 74,154,169,242,176,132, 54,203,109, 54,195, 44, - 71,140,203, 81,226, 70,137, 29,164,179, 10, 4, 72,236,165, 45,195,134,212,102, 91, 75,109,182,148,182,219, 76,161, 8, 74, 80, - 18,144,232, 90,112, 2,249, 93,117, 25, 66,146,209, 71, 66, 22,162,163,134,241,211,245,150,177,159,152, 58,106,104,113, 92, 82, -188, 39, 22, 57,159,117,107,144,172,114,134,208,144, 20,235, 77,249,242, 37, 62, 27, 96,249,156,159,144,217, 59, 62,158, 23, 33, -162,160,146, 26, 67, 60,168,236,129, 33,209,134,130,134, 48, 2, 26, 35, 31, 51,211, 77,180, 46,116, 52,199,224, 54,176, 30,128, - 14,214, 29,134,219,219, 98, 14, 47,113, 78, 21, 72, 3, 87,123,254,238,135,222,126,240, 59, 91, 14,157, 22,158, 26,105,164,172, - 5,168, 4,243,159,213,231,121,125,145,208, 99, 30, 93, 60,129,211,139, 26, 35,109, 54, 49,133, 17,220, 16, 79, 83,232, 60,250, -246, 31,187, 86,138,100, 68,165, 73, 8,229, 81,142, 64, 42, 86,112,183, 22,144, 21,130, 15, 85, 36, 19,242, 28,218,203,218, 78, - 49,240,169, 41, 70, 66, 74,122,165, 68,142,170,207,160, 57, 72,251,254, 88,216, 14, 90,230,251, 15,244,249,254,125, 48,211, 87, -166, 54,210, 5,205,133,251,123,192,239,235,247, 3,211, 99,142, 83,123,105,234,144, 40, 62,204, 78, 45,213, 56,172, 10,158,223, -193,161, 68,109,166,214,234,222,168,213,110,106, 44,120, 49,210,219,105,230, 42, 83,161,103,253,144,131,228, 53,249,148, 74,163, - 86, 33,178, 31,157, 73,168, 68, 97, 73, 37, 15, 75,136,244,102,150,130,114, 10, 29,117,176,149,119,242, 39, 7,166,117,250,228, -239, 21, 54,139,113, 81,162, 91, 21,234, 77, 58,187, 2,167, 53,185, 83, 41, 53,168, 81, 42,144, 36, 71,167, 16,227,102, 68, 9, -141, 45,167,146, 37,173,178,146,164,171, 5, 25,232, 70,154, 39,182,131,105, 43,148,145, 68,173,237, 86,217, 86,168,230, 58,226, -138, 93, 86,195,181,102,211,147, 24,131,204,194, 99,191, 75, 41,109,188, 19,219,175, 94,132, 30,186,205, 29,108,244,181, 21, 13, - 12,113,200,178,104, 7, 83, 48, 55, 91,237,178,176,177,213,114,119, 55,218,198,215,196, 43,137,120, 6,163,136,230,167,205,151, - 49, 90, 53, 72, 22, 32,134, 2,250,180,203, 43,106, 45,205, 75, 41, 46, 64,178,159,179,125,239,183,228,250,227,101, 60,188,224, -140,142,128,244,207,144,199,168,198, 48,126,122, 21,192, 0, 3,155, 35, 57,233,215,215,166,191, 65, 78, 47,125,129,220, 19,241, - 21, 2,167, 90,218,170, 35,252, 48,110, 99,233,144,252, 74,205,131, 29,202,134,222,212,103,172, 18,132, 92, 59,119, 53,242,134, - 99, 45,220,115, 59, 76,122, 43,169, 25, 41,109, 88,229, 48,230,227,131,217,183,196,255, 0, 1,119, 35,112,119,146,205, 19,108, - 74,180,247, 33,217,251,193,104,151,171, 59,105,118,144,165,248, 44, 49, 88, 13, 5,219,245,162,132,229, 84,234,138, 35,202, 73, -200,108, 58,145,204,100,244,217,164, 82,178,199, 50, 26,105, 9, 0, 92,221, 24,250, 43,250,158,193,130,177,236,164, 11,226,164, -206,184, 91, 56,200, 65,146,174, 1, 45, 32,219,159, 17, 47, 24,222,195, 93,194,188,123,216, 93,212, 33, 36, 42,187, 28,115,229, -210,158,163,169, 24, 62, 96,119,253,255, 0,215,160,212, 66,187,167, 24,232, 58,249,116,198, 49,219,174,141,117, 3,152,133,229, - 39, 56, 41,199, 80,122,227, 65,120, 97,165,169, 73,201, 43,238, 14, 79, 41,235,146, 61, 52,244, 14,192, 1,182, 35,160, 31, 92, - 14,231, 32, 73, 74,186,231,203, 24,251,137,244,208,101, 3,148, 32, 40,165, 57,236, 60,201,209,133, 63, 26,186,168,231,201, 71, -225, 29,187,121, 13, 81, 86, 50,122, 16,115,246, 12,124,177,163,142,222,236,103, 3, 40, 3,211, 29,186, 30,189,241,215, 57,208, -203, 24, 36, 15, 67,140,252,199,207,203, 69, 47,208,103,166,115,229,147,129,215, 62,186, 25, 64,244,230, 29,124,143,175,113,215, -212,233, 85,189,129,245,235,243,240,198, 69,172,126,125, 48, 42,129,193, 30,127,147,161, 85,246,156, 17,215,204, 2, 8,199,217, -162,148, 58,146, 20,122,103,207,167,159, 83,161, 92, 42,235,233,230, 71,159, 95,232,210,139,215,173,176,170,143, 95,157,176, 50, -206, 15, 76, 31, 80, 71,224,126,220,104, 85,168,227, 28,189,125, 61,126,206,154, 37,100,103, 3,200,156,244,243,249,232,117,227, - 57,235,233,242,251,180,182, 50,126, 54, 56, 25, 99,175,159, 81,231,229,242,210,215,178,172,119,200,244,198, 14,127, 31, 61, 45, - 40, 47, 97,229,191,200,255, 0, 79,155,224,126, 56,162,144, 64, 30,191,143,158,170,163, 62,125,137,232,115,220,250,106,159,236, -213, 69, 35,156,131,204, 71,166, 63, 63,156,233, 54,219,160,220, 99, 35,227,108, 20,131,208, 14,228,121, 99,231,251,116, 80, 56, - 35,184,249,250,104, 22, 57,146, 8, 81,234, 59, 31, 80, 60,243,247,232,209,216,117,207,207, 68,223, 77,200,244,254, 88, 24, 45, - 24,207, 92,231,203, 69, 35,207,183,239,208,173,124,207, 92,126,127,118,138, 64,232, 79,221,249,252,249,105, 44, 16,142,190,251, - 15,145,130, 80, 58,103,215,250,244, 66, 49,140,129,215,212,247,207,245,106,146, 48, 57, 79,150, 7,252,116, 64,193,232, 49,223, - 31, 97,210, 44, 79, 91,236,127,211,253, 48,153,183, 97,138,128, 40, 5,103,208,224,119,235,169,123,123, 41,104,112,173, 78, 2, -173,121, 73,134,167,220,191,111,139,158,183, 80,116, 97, 14, 1, 26, 65,131, 29, 41,199,146, 91,142, 0, 58,136,106, 65,193, 4, -140,224,156,227,211,175, 77, 75,111,217,163,113,199,172,240, 9,183,233,105,231,146,187, 86,241,187, 45,249,133,131,143, 9,213, - 78,114, 75, 97,196,121, 2,219,168, 32,158,224,244,213,121,226, 65,147,244, 28, 33, 13,148,206,186,191,254, 57, 45,142,131,250, - 49, 71, 12,158, 42,209,137,118,101,162,169, 41,214,225,249,148,226,226,196, 27,233, 45,211,181,251, 99,118,128, 83,114,214,210, -153,146,220,116,144,235,125, 10,212,129,205,144, 20,161,156,249,105,224,180,100,161, 50, 35, 25,130, 74, 80, 57, 85,206, 20,176, - 26,230,198, 22,164, 30,253,198,153, 40,181, 49,238,232, 92,122,195, 47, 73, 82,210,211, 81,100, 39,149,110,184,178, 82,218, 1, - 61,252,180,248,219,242,107, 80,222,162, 71,155, 77, 98,169, 61,192,124,102, 35, 56,130, 91,108,254,170, 94, 72,254,110, 58,245, -215, 54,213, 70,193,217,152,217,148,130,111,182,219,117,233,112,127, 28,123, 9,151,215,172, 84,113,194,236,164,181,215,237,232, -114,116,222,246,144, 11,142,228,222,194,248,216, 58, 84,210,135, 89,145,227, 49, 81,108,184, 26, 12,189,132,132,180,123, 21,146, - 58,249,103, 78, 29, 49,216,145,157, 46,202,141, 0, 50,165, 99,153,162,151, 0, 10,255, 0, 80, 14,216,207, 93, 55, 22,253, 58, -116,249, 14,180,186, 68,194,162,227,110, 41, 40,100, 22,154, 72,236,208, 41,238, 63,167, 78,237, 50,222,105,197, 50,210,160,203, - 5, 43,248,209,238,139, 82, 16,172,254,170, 84, 6, 15, 64,123,246,209, 97,137,100, 58,121,100, 21, 38,219,129,125,253,251,159, -203,124, 66, 51,202,138, 53, 13,169,202,221,119, 10,203,112,189, 71,216, 96, 1, 27,139,233,177,239,124, 60, 54,123, 86,252,196, -161, 45,162, 50,155,229, 7,170, 74, 10,129,238, 6, 71,112,116,252,211,104,240,209, 29, 41,140,174, 68, 20,228, 53,207,204,217, - 24,234, 19,232,174,250,105,109, 74, 83,112,209, 24, 57, 24, 70, 14, 44, 8,200,152, 24,136,167,206,112,124, 36,200, 90, 75,189, - 71,243,115,233,167,174,148,195,204, 73,247,101,182,182, 20,172, 18,219,237, 41, 33, 67,200,161, 67,203,168,237,167,136,114,230, -101,187, 11,252, 13,192,191, 66,125,255, 0,150, 57,147,139,234,195, 84,202, 96,169,114,138, 75, 0,206, 26,224,108, 77,134,219, -119, 54,216,237,113,131,109,233, 2,149, 48,165, 68,165, 30, 38, 65, 7,177,206, 58, 19,172, 11,142,250,104,187,248, 72,189,156, -100,243,201,160,212,173,234,211, 33, 37, 75, 0, 55, 52,196,120,156,116, 8,228,153,212,158,131, 26,214,142, 52, 56,200,162,240, -178,104,182,149, 18,205,170,110, 30,239, 93,144, 68,251,106,214,167,179, 37,200,145,162, 56,240,138,204,250,159,186, 52,167, 29, - 74,229, 97, 13,180,210, 74,150, 65,201, 72, 25,215, 24,110,255, 0,109,214,236, 89,181,169,123, 63,196,206,212,209,225,216,219, -139, 33, 54,133,121,152,140,200,163, 86,236,207,172, 95, 67, 44,213, 92, 50, 29, 90, 28,247, 39,220,142,243,241,228,161, 37,109, - 48,160, 22,133, 16,160,237,150,210, 77, 74, 30, 57, 24, 4,148, 29, 42, 55,123,122,233, 0,155, 3,252,176,190, 77,224,151, 30, -113,173, 21, 7, 27,228,116, 52,241,195,151,149,172,136, 84,213,193, 77, 53, 92, 16, 72,162, 73, 41,163,149,129,100, 44, 12,107, - 36,134, 56,222, 75, 34,185, 39, 28,240,171, 81, 92, 18,235, 15,189, 50, 83, 15,182,251,205,242,193, 1,135, 11,172,188,227,129, -215, 90,116, 41, 15,167,152, 55,128,160,127, 87,190,113,171,197,186,251, 84,199, 27,110,231, 91, 11, 8,109,105,102,164,211,204, -152, 75, 4,120,205, 50,166, 93, 67,142, 51, 33,194, 84,147,146,190, 85, 0, 82,178, 59,103,187,207, 96, 84,168,155,135, 92,164, -148,251,168,139, 80,118, 74,101, 49,206,195,115, 26, 83,165,196,200, 97,164,164,165, 44,172,160, 41, 39, 56, 83,110, 36,144, 0, -213, 45,183,165,251,180,225, 57,214, 41,211,231, 46, 59,134, 32,155, 57,137, 75, 47, 56,165, 48,251,207, 7, 20,216, 97,211,207, - 28, 22,210,121,212,147,204,148,242,228,105,122,137, 21, 98, 46,198,247, 22, 0, 1,112,118, 0, 3,218,222,150,216,220,157,247, -199, 91,101, 89,173, 61, 78, 87, 77, 84, 36, 38, 42,136, 21,215, 65,180,182, 96, 28, 89,154,203,123,157,181, 30,246, 5,126,214, - 30, 11, 94,207,114,229,117,201,237, 69,164,202,120,197,143, 54, 85, 82,157, 37,183,147, 22, 59,235,108, 65,134,165, 70,194,224, - 61,226, 33, 45,144,231, 55, 47,196,226,209,149,116,219,107, 39,110,107,207,161,154, 43, 53, 69,192,105,220, 59, 45, 51,224, 51, - 86, 64,151,226,135,152,104,200, 64, 67,211, 90, 7, 24, 74, 94, 41,111, 9,230, 0,233,156,176,182,201, 77,169, 18,170,137,115, -223, 42,193,152,112, 99, 91,243,158,143, 35,199, 74,144,226, 36, 74,147, 13,192,137,144, 80,224, 4,151, 2,137, 82,194, 64, 37, - 56, 27,217,102, 90,215,133, 41, 49, 27,133, 84, 98,165, 57,224,159,142,189, 5,146, 26,113, 35,153,236,152,138,109, 46,169, 69, - 25, 87,137,133,140,117, 36, 18, 53, 10,175,145,203, 5,138, 80,109,208, 48, 59, 17, 96, 8,190,160,123,246, 0,108, 20, 27, 91, - 12, 57,247, 17, 10,106,116,134,130,190,154, 78, 89, 80,156,196, 87, 1,193, 91, 30, 97, 18,163,152,205,238,197, 65, 6,218, 88, - 22,108, 90,237,237,189,152,234,185, 95,164, 89,245,210,228,149, 56,245, 82,107, 53, 74,100,246, 35, 52,164,165,243, 25, 77,135, -115,204,242, 70,121, 29, 74,177,211,148, 96, 43, 79, 29,187, 98, 95,172, 58,106, 17,164, 80, 67, 45, 56, 12, 74,109, 70,100,217, -240, 85, 24,171,153, 44, 69,113,113, 82,236, 53, 20, 4,149, 21, 41, 69, 5, 39, 41, 86, 6,179,123,118,157, 92,141, 29, 16,156, -183,161,203,117,169, 45, 41, 85, 8,181, 70, 27,109, 47,173,212,248,236, 71,106, 84, 99,132,175, 36, 36,133,242,100,225, 68, 4, -141, 58,241, 37,169, 36,181, 81,162,206,163,163,196, 75,109,173,245,177, 34, 3, 69, 39,152,189,239,177, 10,146,225, 89, 79,232, -208,128, 73,194,129, 72, 61,117,169, 79, 70,103, 39,152, 2,179,118,234, 61,230,215,211,210,196,129, 98, 64, 29,141,241, 79,103, -220,101,153, 30,114, 70,144, 85, 43, 2, 13,228, 73, 14,130, 64, 58, 33,230, 2,133,252,192,233,140, 21,185, 0,130, 72,108,110, -143, 14,191, 8,188, 39,209, 80,234, 30, 65,115,252, 6,171, 17,212, 71, 73, 7,149, 40, 68,198,155,113,192, 74, 65, 61,137, 39, -175,124,235,131,126,216,205,247,152,111,141,190,225,194,146,243,176,233,118,141, 10,155,186,215,228, 17, 33,165,138,133,245,119, - 54,244,107, 38, 20,208,210,212, 86,213, 50,201, 6, 83, 77, 44,254,130, 77,220,242,193, 10, 9, 34, 68, 98,167, 69,113,239,115, - 98,162,209,150,227,169,100,164, 50,250, 30,142,153, 10, 67,104, 47,161,113,185,149,250,217,193,234, 7,124,117, 58,132,167,180, - 11,114,157,191, 56,207,226,110,235, 91,220,193,123,191,119, 82,161,167, 35, 13,210,109, 57,205,218, 52,134, 80,174, 65,250, 54, -233,246,252,102,210, 48, 48,150,250,247, 58,147, 81,229,101, 16,136,212, 49,107,111,110,151,247,223,215,107,145,238, 29,206, 45, - 63,161,246, 88,153,247,139,149,156, 79,155,208, 8,233,184, 47, 46,150,174, 32,203, 38,147, 89, 80,241, 82,211,189,164,119, 95, - 36, 18,213,200,157, 74, 75, 28,114, 11, 50,130, 59,157,236,172,221, 24,215,231, 13, 23, 37,147, 81,118, 25,168,236,189,253, 46, -152,218, 93,144,151,101, 53,102,223,141,191,116, 91,190, 19,107, 28,209, 97, 71,172, 69,186,152, 65,253, 80,165, 4,167, 7, 26, -218,107,158,228,161,191, 61,218,125, 49, 94,245, 40,172, 37,210,202,148, 67, 42, 11,229, 81,117,224, 57, 60,114, 15, 92, 2,160, -149, 14,100,228,234, 49,124, 2,239,229, 79,110, 55,233,155, 77,234,234,233,116, 45,237,130,141,181,173,200,114, 66, 99, 70,106, -181, 46,104,159, 98, 79,117,194,147,225, 52,221,203, 17,152,171,112, 17,134,171,110,142, 96, 9,204,138,108,186, 50,226,248, 65, -230, 94, 18,210,234,138,218,116, 40, 56,144,201,253, 42,228, 2,144, 82,232,125, 39,155,155,185, 24,199,163, 70,113, 75, 61, 53, - 66,211, 24,192,102, 80,250,173,177, 4,158,128,236,109,107, 27,244,244, 55,216,120,245,195,212, 92, 51,226,119, 20,241, 60, 83, - 51,208,241, 68,223,164, 41, 96, 4,170, 44,179, 42,251,111, 53,134,197,189,176, 77, 41,141,108,170,146,160, 98, 5,181, 97, 28, - 75,220,181, 26, 38,200,211,104,247, 69, 74,235,183,182,170,177,190,251, 65, 11,117,110,107, 14,159, 10,179,117, 91,182, 75,207, -220, 78,183, 82,133, 14,168, 4, 79,171,216,186,153,183, 21, 41, 82,210, 98, 36, 41, 9,115, 46,170, 58, 78,196,185,236,244,224, -218,187,107, 59,115,220,156, 71,239,126,228,237,173, 2,138,187,170,107, 84,230, 45, 75, 86, 5,193, 65,109,135,229, 52,252, 91, -142,223,106, 82,213, 70,114, 67,192,198,106, 35, 40,154,243,242, 91,140,151, 91,112,244,112,233,245, 17, 14, 44,120,174, 52,203, -140, 76,104,179, 45,183, 16,135, 25,122, 52,130,142,120,210,155,117, 36, 60,203,137, 64, 5,181,165, 73, 88, 7, 57,232, 53,131, -111, 20,122,181,183,183, 23,101,181,105,248, 52,138, 5, 74, 76, 74,251,148,250,116, 97, 1, 16,222,167, 60,106, 47, 70,165, 53, - 21, 77,181, 6,159, 41,244,182,244,150, 67,100, 56,236,116,184, 10, 10,220, 42, 89, 95, 56,135, 46,142, 10, 39,138, 88, 81,180, -202, 38, 14, 74,164,134,226, 72,138, 50,168,146, 61,200, 73, 86, 72,223,161, 85,177,213, 91,112,255, 0,139,220, 97, 77, 6, 89, -195,156, 53,196, 21, 60, 22,207,152, 77, 60,242,208,138, 52, 21, 75, 82,148,144,150,121, 38,162,154,174,158,178, 4,129,185,117, - 52,245, 41,169, 36, 80, 81, 94, 4,118, 96,232,187,243,188, 52, 58, 53,183, 22,179,113, 84,169, 53,196, 81,160,251,245, 41,201, - 62,244,245, 37, 30, 24, 17,105,181, 9, 10,121,208,245, 77,152, 9,140,153, 37,110, 58,225,146,151,148,235,139,112, 41,106,217, -189,151,227, 46,253,131,118,219,180,250,252,122,125,201, 79,118,165, 17,114,150,164, 24,178,216,166,197,117, 15,212, 36, 41,109, -252, 46,145, 13,149,146, 84,156, 16,146,163,211, 58,229, 18,107,239, 62,242,147, 37,199, 31, 91,206,242,186,241,117,192,165, 58, -115,211, 39,155,149,210,121, 78, 15,117, 43,161,198,175,245,237,208,133,180,123, 77,185, 27,181, 83,195,175,211, 41, 12,109,245, -155, 17,197,165, 15, 85, 55, 47,117, 95, 93,149,109, 82, 48,149,164,169,198,162, 73,174, 84, 86, 89,234,134,109,247, 20,190, 92, -115, 20, 34,161,174,138,166, 35, 73, 52,177, 73, 35, 11, 42,177, 35,177,251, 38,224,129,110,227,176,216, 3,139, 63, 49,225,124, -159, 58,137,168,171, 50,122, 67, 83,155,200,176,199,104,150, 37, 89,170,228, 17, 68, 21,129,214,136, 36,145, 64, 37,137, 84, 80, - 88,147,124,113, 55,116,247, 70, 69,253,187,251,165,124,248,206, 6,183, 3,113, 47,219,205,230,124,103, 29,108, 53,115, 87, 43, - 21, 40,234, 47,172,146,232, 75, 18, 90, 9, 39, 39, 13, 39, 9,232, 14,172, 14,214,153,120, 48,183, 78, 92,152, 57,157, 10, 37, - 43,109,167, 26, 13,184,150,207, 80,131,206,176,172, 30,169, 9, 5, 24, 32,105,155,145, 77,159, 79,177, 55,214,248,122, 99,102, - 14,214,238, 37, 54,195,167, 33,244, 45,181,207,144,221, 5,213,204, 44, 21, 16,151,138, 88,241,164,244, 32,167,198, 64, 82, 64, - 41,200, 53, 27,141, 40,118,147, 76, 15, 45,169, 62, 12, 25,243, 2, 86, 20,234, 16,197, 62, 19, 65,165,164,117,229,247,167,138, - 73, 61, 22,177,202, 7, 66, 69,171, 7, 12,211, 48,141, 68, 97,196, 42, 34,118,176,243,125, 68, 82, 27,237,230, 26,101, 64, 77, -183, 59, 94,221,125, 38,200,188, 76,203,114,202, 54,165,142, 67, 20,116, 65, 22, 8,217,183, 68, 90,250,204,182, 21, 7,236,171, - 60,153,116,228, 2, 70,148, 58,202,134,186, 15,209, 95,217,213,187,149,126, 36, 56, 44,216,253,206,187,174, 26,157,110,227,126, -218,126,193,186,149,240,199, 84,155,163,109, 39,191,101, 84, 39,204,125,144, 23, 80,149, 50,149, 75,163, 76,121,231, 85,202,227, -245, 23,148, 15, 58,213,173,192,169,181, 57,184,233, 69, 62, 75, 17,217,117,148, 54, 25,157, 8, 41, 77,184, 20, 57, 18, 85, 21, -196, 40, 55,148, 36,167, 33,106,235,158,185, 26,226,103,176,146,232,171, 73,224,105,202, 90,107, 52,248, 49, 97,111,182,232,183, - 25,185,145,221,148,239,233,169,118, 36,151, 91, 74,223,144,136,236, 44, 74, 46, 41, 40,108,169, 68,173,101, 73,230, 86,187, 41, - 49,154,218,209,205, 42,173, 52, 52,180,165, 74, 68, 70, 98, 69,116,182, 9, 42, 83, 15,150, 84, 82,172,173, 43,228, 0,100, 3, -231,140,166,170, 86,154, 21,107,179,160, 10, 88,238,110,160,139,147,114, 77,254, 59,238,122,227,195,207, 25,248,114,151,135,188, -100,241, 27, 44,203,158, 10, 60,158,155, 59,204, 26,142,156, 69,166, 56,105,158,169,228,130, 24,163, 88,121, 65, 97,137,146, 53, - 32,147,100, 5,141,201,182, 5, 94, 69,230, 10, 94,145, 46,158,251, 79, 45,104,148,212, 6, 23, 14, 74,219,229, 12, 45,182, 36, - 58,225, 37,149, 97, 25,231, 83,121, 7,151,152,115,103, 88,171,145,168,116,244,134, 97,194,115,222,240,219,142,210,234,106,145, - 26, 99, 65,211,209,246,222,146, 74,159,116, 16, 64, 41,113, 93,130, 80,224, 61, 53,146,220, 18, 42,169, 71,189, 65,175, 23,224, - 43,196,110,100,138,180, 52, 73,141, 20,132,150,219,121,201, 49,146,211,140, 32,184, 66, 20, 84, 8, 65, 74, 73,198,117,138, 87, - 28,148,234,162, 34,187, 74,117,192,134,195,141, 85,221,124,204,165, 74, 66, 64, 8,106, 33,105, 1,113,212,225, 81, 86, 31, 66, - 49,205,221, 67, 11,214,189,142,171, 48,185,237,109,186,218,221,251, 94,219,220,117, 0,118,198,190, 89,205,228, 83,161,104,226, -136,234,212,180,224,194,199, 64, 4, 7,140,136,249,140,128,157,144,137, 21, 72,107,233, 54, 57, 45, 21,111, 50,239,128,212,167, -155,106, 99,237, 53, 50, 5, 82, 58,170,112,130, 22,133,248,114,226,201, 82, 20, 84,194, 84,162, 75, 79,133, 20,150,202,144,180, -144, 70,158,219, 70,151, 29,231,155,118, 60,104,204, 22, 63,193,222,142,151, 20,169, 10,146,203,194, 58,208,195,190, 63,232,220, - 83,255, 0, 26, 27, 64, 12,165, 9, 10,230, 9, 32,105,148,162, 91,141, 33,248, 83, 89,126, 99, 48,230,182, 20,180,198,150,244, -129, 79,113, 60,188,170,101,153,170,115,222, 32,173, 37, 93,149,240, 99,149,124,169, 9, 89,109,184,249,226, 98, 31, 5,220, 21, -239,191, 17, 15,200,136,155,150,213,178,166,210,246,246, 59, 73,141, 4, 86, 55, 54,239,228,181,236, 42, 83, 8, 90,185, 31,124, -220, 21, 40,178,202, 18,149,144,213, 45,220,101, 41, 86,157,232,209,181,169, 10,100,111, 40, 23, 59,177, 54,181,129, 23, 4,146, - 58, 1,212,220, 92, 98, 11,198,117,212,212,212,243, 58,213, 20, 77, 12,210, 54,146, 52,132, 30,109, 96, 29,244,170,155,187, 57, - 42, 0, 96,197, 77,204, 4,253,172,219,203, 47,139, 95,105,175, 18,183,101,176,204,138,245, 61,141,200,141,179, 22, 18, 41, 9, - 93, 86, 93,102,147,182,162, 46,222,210,152,166, 51, 24, 19, 62,108,219,142, 29, 80,176,134,211,151, 87, 57, 0, 2, 78, 76,168, -189,147, 30,205, 59,119,129,141,189,137,185,219,145, 71,167,212,120,177,191,168, 72,110,225,150,239,131, 57,157,155,182, 42,104, -109,241,183, 54,188,132,130,150,171,238,183,225,154,253, 69,162, 22,251,224,192,105, 98, 36,114, 29,230,127,176,159,128, 53, 76, -144,190, 60,247,198,152,229, 94,166,106,149, 39, 54, 34, 21,106, 58, 84, 43, 87,116,135,159, 77,209,188,211,162, 60,140, 58,227, - 18,159,150,197, 29,103, 9, 19, 37, 74,154,140,150,153, 34, 80,232,121,231, 86, 94,194,151,206, 84,165,229, 89, 83,132,156,149, -100,255, 0, 59,169,238,117, 52,214,174,144,192, 15,246,106, 75, 42,129,210, 73, 19,102,115,254, 20, 96,116, 95,171,221,172, 52, -163, 53, 11,192,252, 48,106,170,102,226,204,206, 29, 53, 57,147,188,180,145, 48,254,234, 41, 9,101,148,237, 96,238,166,209,126, -196, 86, 97,188,158, 91,213,199, 90, 49,104, 79,128,238, 30,144,121, 9, 61,192,192,201, 10,245,242,251,181,174, 71,196,148,241, -192, 74,219,247,143, 25,101,101, 88, 83,109,158,100, 32,143,231,159, 20,183,140,231,245,116,231,222,179, 3,236,178,194, 18,160, -158, 67,240,159,214,231, 63, 8,200,245,230, 7,246,107, 16,183,233,171,125,220,148, 41, 94, 26,193, 82, 72, 56, 30, 24, 42, 25, - 7,182, 93, 82,127,254,159,144,211, 69, 97,106,138,152,227, 83,176,254, 38,222,238,150,252, 15, 81,139, 78, 53, 68, 46, 72,176, - 83,107,124, 58,253,247,191,243,198,113,108,211, 19,227,169,194,215, 63,134,203, 99, 5, 93, 27,101,146, 22,246, 14, 62, 37, 45, -242, 7,255, 0, 71, 91, 55,104, 83,196, 88,200, 91,141, 21, 62,226,125,225,196,142,201,144,233, 1,182,178,161,208, 1,200, 7, -158, 18,112, 52,218,218, 20, 34, 11, 72, 82, 48,167, 29, 66, 86,162, 9, 37,168,227,198,115, 36,249,169,100, 15,158,126,122,216, - 74, 93, 56,165,176,160, 48, 80,160,230, 79, 96,234,193,228, 24,207, 80,150,250,245,243, 58,216,145,194,132,133, 59,122,123,247, -233,252, 61, 58,123,176,171,188,113,197,169,205,134,223,126,214, 23,251,250,216,250, 19,223, 23,184, 45, 45, 45,164,250,130,146, - 81,130,165, 58, 79,198,161,205,211,205, 71, 39, 29,135,217,171,242, 82,161,202,146, 14, 66, 64, 79, 92, 18,112, 18,132, 16, 7, - 82, 71,151,110,167,174, 79, 64,225, 49,204, 6, 74,148, 8,194, 60,151,142,203, 80, 0,244,206, 50, 62, 95,110,173, 87,197, 93, - 84, 74, 17, 76,101,242,212,170,171, 93, 62,154, 51,254, 77,126, 25, 50,166, 56,148,245, 8,102, 57, 81, 78, 59,184,180, 13, 2, -252,184,139,157,194,142,158,167,111,226,127,215, 17,237, 18, 87, 87, 69, 75, 8, 13, 45, 67,233, 30,130,251,146,127,194,160, 22, -111, 64, 9,233,134, 94,191, 60,214,174, 57,178,155, 80, 92, 88,138,250,178, 34,146, 73, 75,205,197, 89,247,133,181,215,245, 87, - 40,172, 41, 93,185, 91, 30, 93,117,113,101,178,148, 36, 20,167, 60,185, 33, 32,115,124,125,242,123, 32, 17,235,228, 58,103, 58, - 6,155, 5, 49,217, 1, 3, 41, 72, 72, 43, 80,202,251,124, 13,167, 57,231,230, 87,116,142,188,202,202,181,122,119,157,164,242, -182,128, 48,114, 74,210, 29, 82,148,174,231,149, 4, 14,112,122, 96,156, 36, 12,232, 82,130, 20, 22,181,207, 83,241,235,252,127, -134, 38,117,241,198,136,144, 66, 60,145, 40, 65,126,182, 80, 5,205,187,158,167,191,125,177,107,145,209, 56, 56, 42,192, 31, 7, - 50,136, 81, 39,245,114, 6,113,145,215,212,143, 62,186,109,183, 18,195,178,183, 58,203,185,118,235,114, 45, 74, 13,245, 98, 93, -244,185, 20,123,178,204,185,224,179, 84,161,215, 41,210,208, 90, 83, 50,227,188,143,209,202, 66, 15, 51, 50, 26, 45,202,140,234, - 80,244,119, 91, 90, 65, 46, 20,133,132,149, 18,121, 66, 82,146,158,167,227, 3, 9, 11,231,233,205,133, 28,116,233,240,231,231, -171, 4,167,130,146, 70,115,130, 7, 41,230, 1,190, 97,133,140,168,119,230, 25, 87, 47,167, 66,115,128,228,164, 50,233, 32, 21, - 35,161, 23, 7,226, 15, 81,234, 45,238,196, 78,170, 0,218,129, 93, 72,247, 12, 8, 22, 32,141,193, 7, 98, 10,220, 16,110, 45, -112,118,216,254,127, 62,215,111,101, 5,107,129, 75,173,157,208,218,223,173, 46,126, 22, 47,170,217,166,219, 21, 73,139,114,161, - 95,218,219,154, 98, 29,148,206,220,223, 83, 66, 63,194, 24, 91, 77,191,245, 45, 81, 88, 76,246, 99,150, 29,196,198,148, 28,226, - 11,202,192,207,250,185,206, 65,252, 7,207,183,227,175,213, 99,121,118,187,111,119,183,109,239,125,163,221, 75,114, 53,215,183, - 27,137, 66,147,110, 93,212, 9, 73, 66,132,168, 18, 70, 89,155, 1,197, 28,211,235,208,230, 33,137,116,249, 72, 41, 92,105,113, -154, 90, 84, 7, 50, 85,249,178,113,225,194, 13,235,193, 55, 17,215,238,197, 93,238,191, 80,167, 82,159, 69,111,111,238,242,201, -110, 45,251,182,117,197,186,245,165,117,196,233,203,239, 75,138,218,226,212, 26, 24, 84,122,141, 58, 75, 74, 74, 64, 71, 51,238, - 85, 86,192,138, 57,152,176,223,150,204,110, 72, 29, 81,137,234,203,216,159, 51, 46,237,118, 86, 99, 65,113,143, 12,174, 75, 50, -215, 81, 41, 25,101, 83,105, 43,215,145, 46,237,160, 27,127,116,226,230, 50,126,201, 86, 67, 97,203,213,166, 30, 57, 89, 86, 50, - 57, 63, 91, 35,175,110,154,250,115,156,144,122,249,254,255, 0,158,190,132, 99,161, 63, 14, 7, 46, 51,204,122,121,244,234,117, -245, 72,229, 29, 50,113,234,114, 6,127,226, 52,254, 46,118,196, 36, 11, 11,116,192,142, 40,231,160, 24, 29,207,175,231,166,135, - 82,137,238, 64,232,124,241,143,179, 68, 44, 19,211, 24,237,156, 99,160,245, 31,126, 52, 50,128,235,212,121,128, 78, 49,215,207, -246,105, 68, 59, 91,211, 6,181,253,109,251,240, 59,128, 1,240,171,174,122,121,121,246,207,159,246,104,101,244,200,243, 35,246, - 1,147,162, 21,140, 28,140,254,113,161,148,112, 8,235,215, 56,237,248,125,154, 85,112,176,189,136, 39, 3,168, 0, 15,145, 62, - 99,204,143, 35,249,242,208,203,229,235,235,211,242,126,225,162, 87,140,117,249,224,122,159,158,135, 88,233,231,247,118,251,254, -237, 44, 58,142,248,193,237,183, 67,243,247, 96, 69, 12, 31,183,175,217,165,175,171,198,113,140,126,255, 0,187,241,210,210,202, - 77,133,197,207,221,131, 99,202,112, 72, 7,242,117, 92, 15, 35,128, 60,190, 67,250,245, 69, 3, 39,236, 25,209, 40,239,246, 15, -207,219,164,143,175,174, 6, 42,164,124, 64, 14,131,166, 15,207,236,243,242,209, 35,215, 56,198, 62,220,124,191, 62,122,164,143, - 51,208,255, 0, 72,235,253, 31,213,170,160,100,227, 56,233,145,243,252,254,237, 17,175,109,186,223, 3, 4,160,140,231, 62, 93, -207, 79, 77, 22,130, 49,143, 63,233,251, 52, 26, 72, 30, 64,143,179,183,217,162, 1, 74,146, 72, 61, 65,252,115,142,159,159, 93, - 35,140, 48,184,235,108, 20,140, 18, 1,239,158,135,203,239,209,169, 7,166, 14, 79,145,253,186, 1,158,132, 17,149, 14,196, 19, -140,124,243,251,180,122, 72, 79, 76,145,211,160,233,147,164, 9, 36,220,225, 54, 29,199,206,216, 33, 4,224,142,153, 29, 85,219, -183,166,164, 73,236,110,220, 31,173,246,111,125,182,170, 68,175, 13,251,106,189, 68,191,169,177,199,196,183, 33, 84,227, 24, 21, - 2,134,250,229, 41,151, 17, 57, 35, 63,229, 6,117, 29,198,252,179,144,122, 1,230, 79,219,211, 93, 44,246, 85,110,228, 13,175, -226,214,210,164,215,229, 24,246,198,234,192,168,237,157, 95,227,228,108, 75,174, 32, 59,111,188,224, 39, 4, 38,172,195,104, 4, -246,247,157, 70,120,186,135,219,242, 26,232,130,234,146, 37,230, 46,215,221, 14,166,255, 0, 32, 97,247,226,198,240,131,136,227, -225, 95, 18, 56, 87, 54,157,180, 83,123, 64,167,148,237, 97, 29, 72, 48,220,223,107, 43,186, 57,255, 0,166,248,146, 36, 30,101, -188, 76,200, 92,160,148,190,196,228, 14, 82,218,114, 10, 92, 8,242, 87, 93,108,205,136,136, 94, 60,105,208,170, 83, 26,151, 9, -191, 29, 82,222, 74,157, 92,231, 64, 7,195, 90, 79, 64,192,244,244, 26,103, 63,131,149,104,117, 26,148, 68,184,195,109, 83,228, -173,134,209, 44, 2,226,202, 22, 82, 16,178, 79,234,114,242,159,179, 79,213,149, 33,113, 88, 77, 61,112, 27,121,229,248,106,149, - 58, 39, 41,101,148, 19,213, 63, 32, 79, 66, 62,237,115, 51,211,150,121, 6,155,219,175, 91,109,181,133,253,226,219,123,241,235, - 75,241, 11, 79, 76,188,137, 11, 48, 93,149, 89,118, 13,107,151, 89, 1,176, 11,212, 3, 98, 79, 75,219, 27, 67,183,181, 74,244, -214,231, 56,229, 74,158,135, 38, 41, 14, 18,160,166,156, 74, 16,156, 36, 32,118, 65, 62,159,191, 89,190,241,113, 11,110,112,191, -176,215,206,245, 95, 6, 20,202, 61,145, 74, 92,138,101, 45, 18,130,100, 92,247, 68,212,150, 40,116, 70,185,198, 84, 94,156,164, -120,132, 3,202,211,110, 40,118,198,137,219,165, 83,139, 76,133, 80, 28, 90,114,210,212,240,109, 10,241, 74, 15, 76,167,253, 94, -159,126,117,202, 47,164, 21, 92,174, 69,225,135,102, 32,209,169,178,160, 90,181,125,216,152,229,206,180, 71, 8,142,167,224, 81, - 11,148,102, 36,173,177,132,143, 17,201, 42, 66, 85,208,148,156,117, 26,113,203,168, 3, 58,157, 54,103, 33,125,118, 36, 94,196, -237,222,227,213,182,195, 70, 89, 79, 69,197, 92, 91,144,112,245,125, 61,168, 43,234, 1,157,252,177,147, 20, 49, 60,207, 26,149, - 58,245, 75, 28, 77, 18,149, 55, 93, 87, 27,139,227,130,123,191,198,175, 16, 27,247,184, 53, 45,208,191,119, 70,231, 85, 90,163, - 41,199,233,180,154, 61,106,117, 46,133,107,211, 84,247, 52, 26, 77, 22,153, 17,228, 34, 20,118, 27, 40, 72, 87, 47, 57, 41, 37, -106, 42, 36,235,167, 28, 15,251,109,119,107, 98,106,116,123, 7,136,169,179,119,107,102, 31,113,136, 72,172, 74, 90,101,223,214, - 83, 75, 33,180, 78,165,212, 93, 60,213,120,109,143,137,113,159, 82,138,146,217, 13,173, 11,198,163,142,186,235,108,188,164,169, -213,165,121, 56, 0,143,231, 19,148, 16, 58,242,145,159, 46,186, 6,109,204,220, 84,151,229, 73, 75, 76,165, 69, 13,186,181,124, - 13,149,252, 65,167, 20,122, 32, 43,175, 41, 61, 51,208, 28,156, 25, 60, 92, 63, 80, 37, 67, 1, 49, 19,208,129,189,141,182,255, - 0, 21,246,184, 55, 7,184, 56,236,142, 32,151,195,140,255, 0,133,223,133,248,147,134,104, 42, 50, 10, 88,196,113,162,172,112, -123, 24, 69,210,178, 83, 74,129,100,164,145, 7,247,111, 27, 39, 75, 54,164, 44,167,244, 98,220,125,244,218,109,207,181, 44, 93, -211,218,219,134,218,187, 42, 87, 53, 36, 51, 69,220, 10, 51, 17,100, 76, 69,191, 35,149,215, 40, 82,159,113, 5,234, 52,228, 57, -209,198, 86, 27,121,151, 16,161,243, 44, 38,219,240, 59,195,109,247,187, 50,119,219,118,236,200,251,153,118, 75,170, 65,173, 67, -182,174,118,154,153,103,210,171, 16,188, 32,197, 90, 69, 61,192, 77,102, 97, 83, 13, 41, 94, 54, 91, 36,117, 74,129, 58,135, 95, - 6,188,107,223,252, 45,110, 43, 52,233, 52,170,149,203, 96,222, 20,101,215, 83,103, 60,250,190,174,187,227,193, 5,199, 38, 91, -143, 44,148,196,174,178,208,123,149, 72,234,165, 37, 41, 87, 50, 84, 70,166, 95,193, 71, 19,251, 57,196,190,221, 82,183, 35,102, -111, 8,119, 37, 13,224,211, 21,170, 59,206,165,155,154,207,170,129,201, 34,143,114, 82,138,185,226,186,219,193, 72, 75,184,240, -221, 9,202, 85,215, 26,134,231,185, 70,123, 75,158, 38,105, 42,145, 71,202, 88,163,146, 50, 90, 29, 18, 16,197, 88, 92,133,119, -146, 38,219,245,140,108,190,102, 70, 11,198, 92, 75,194, 16,120, 95, 13,105,224,204,246,176, 46,111, 21, 85, 20,213, 74,239, 79, - 89,200,142, 74,121, 30,138,165, 99, 8,209,242, 82,106, 70, 89, 32,229,195, 52, 53, 48, 77, 24, 84,168, 68, 26,105,237, 7,217, - 19, 64,220,153,215, 20, 88,210,156,133, 88,145, 38,124, 79,119,101, 69,163, 18,166,128,243,109, 37, 40, 1, 44,161,169, 41,117, -174,100,245, 74, 25, 74, 0, 3, 3, 90, 51, 69,177,226,173,138, 60,234,204,122, 85, 38,221,129, 41, 51,103,211,161,176, 94,110, - 91,208,250,114, 84,204,148,115, 56,210,150,121,194, 65, 70, 22, 18, 73, 35, 82, 72,226, 42,210,160,110,117,160,197,162,168,115, - 29,188,213, 74,168, 86, 45, 9, 77, 65,126, 76, 10,156,120,126, 17,171,208,229, 78,105, 60,176,167,150, 84,151,226,161,194, 60, -101, 71,113,182,200, 89, 26,226, 82, 54,226, 82, 43,245, 56, 55, 19,146,165, 82,168,173,189, 53,234,122,121,219,167,174, 92, 53, - 21,161,215,162,173,172, 60,148, 33, 24, 82, 73, 88,113, 92,185,201,201, 27,117,108,244,241,194, 26, 80, 4,200,175,177, 5,212, -177, 33,144,129,246, 88,144, 74,234,211,113,184,242,225,135,128,248,146,174,159, 42,143, 44,172,115, 72,249,120, 15, 20,146, 35, - 63, 50,152, 72,218, 26, 20, 93,164,179,172,144,173,201, 8,234, 67,105,179, 12, 29,182,244,136,190,236,139,162, 43,211, 44,218, - 8,144,234,232,245, 56, 11, 17,235, 21,134,156,116,152, 20,134, 80,176,164, 56,209, 72, 43,143,200,135, 22,133,101, 74,113, 57, -214,238,237,187,251,130,203, 76, 67,151, 72,167, 84, 98,133,170, 91,213, 42,148,233, 12, 76,138,192, 82,148,219,210, 68,113,202, -170,138,219,193, 89, 73, 67,106, 72, 42, 40,200,248,181,222,133, 7,252, 38, 61, 94,168,236, 48,218, 34,198,106,222,121,215, 12, - 42, 5,177, 73, 72,109,202,131, 44, 54,165, 4,166,172,236,131,241, 5,128, 23,219,155,149, 1, 39,109, 54,169, 47,214,159,141, - 78, 48, 42, 53, 11, 73,106,126, 99,142,173,244,196,145,119,169,196,182,166,100,201, 84,167, 3,137,162,161,194, 72,100, 6,202, -154, 9, 82,143,134, 60, 50,195, 58,115, 25,121,138, 2, 2, 5,250,155,236, 2,134,216,220, 95,168,238, 13,133,186, 73,115,220, -216,213, 80, 74,207, 75, 13, 76, 72,128,234,144,106, 49, 40, 80,161, 99,149, 74, 52,149, 4,141,198,181, 87,112,116,142, 90,187, -151,130,212,169,221, 85,192, 81, 71,162, 69,143, 17,233,177, 66,234,213,121,210, 29,109,249,104, 83,136, 47,211, 99,197,142,149, - 42, 58, 27, 13,132,100,161, 42, 4, 36, 14,234,214,192, 82,168,207, 6,100, 72,146,243,115, 36,115, 37,223,120, 83, 66, 40,134, -150,151,200,182,225, 67,103,224,109,191, 19,152,143,214, 95, 97,205,166,202,221,175,203,122,100, 42,117, 14, 27, 48, 96, 45,217, -109,187, 93,144,132, 73,164,149, 65, 11,113,200,212, 8,170, 80, 21,149,224, 37, 41,120,242, 70, 10, 10, 9, 83,160, 99, 78, 43, -116,232,146, 18,162,237, 86,169, 54, 43, 79, 52,133, 63, 42,172,182,163, 42, 83,190, 32,120,165,166, 16,210, 27, 75, 65, 69,178, - 18,158, 64,162, 82, 50, 81,157,111, 81, 68, 21,129, 8, 22,227,101,189,237,123,109,114, 1,185,236,109,232, 47,107,226,137,226, -141, 77, 41, 30,203, 30, 87, 20,158, 96,168, 26,121,138, 19,111,172,118,118,179, 18,159,221,137, 20, 88,110,150, 85,193, 53, 73, -145,226,170, 46,101,196, 76,164,184, 28,240, 12,134,153, 95, 43, 10, 74,155, 46,181,207,144,121,194, 7, 62, 9, 82,143, 47,108, -234, 4, 62,210, 58, 72,219,158, 58,184,155,183, 37, 40,183, 29,237,225,189,234, 44, 58, 57,127,200,220,181, 35,117,198, 37, 8, - 56,229,118,159, 89, 74,128,242, 87, 67,131,157, 78,142,170,138, 83,209,158, 69, 30, 52, 6,160, 54,228,136,114, 46, 38, 99, 50, -181,206,146,133,248, 78, 67,166, 72,113, 37, 82, 16,149,149, 37,199,134, 91, 66,242, 26, 11, 88, 90,147, 16,207,164, 3,178,234, -161,113, 5,183,251,173, 73,167,134,104, 59,189, 97,210,168, 85, 9, 52,211,200,236, 43,223,109,162, 38,218,168,185, 41,231, 21, -137, 21, 23,168, 70,202,152,128, 87,226, 56, 92, 95,235,114,171, 51, 28,157, 98,150,190, 8,100,110, 92, 83,221, 79,199, 69,239, -185,177,177, 27, 15,128,189,142, 45, 63,163,127, 17,212,112,127, 20,113, 29, 53, 38,185,106,243,156,177,196, 81, 58,133,230,212, - 82, 85, 83, 84, 44,108,169,172,160, 52,166,171, 97,169,163, 3, 91,114,200, 24,226, 4,154,196,244,219,106,220, 88, 18, 36,123, -230,213,238,117, 58,151,184,116,120,110,184,212,168,118,117, 66, 76, 20,196,186,144,180, 43,157,136,145,234, 12,197, 91,146, 81, -132, 70,114, 83, 75, 43, 75,110,100, 74,151,217,207,198,213, 39,137, 54,238, 61,133,221, 10,180, 42,127, 21,123, 72,167,219,169, -193,146,168,241, 90,223,139, 2, 44,118,170, 52, 45,207,178, 66, 74, 81, 80,184, 88,183,166,211,141,199, 76,103,157,106, 33, 53, -232,129,216,210,102,162, 20, 59,161,215,121,234, 81, 43, 84, 91,170,177,103,222,204, 45,171, 98,241,138,155,114,161, 89, 69, 74, -148,180, 59, 78,143, 92,122,151, 17,151, 83,112, 82,132, 69,184,196,200,129,133, 59, 38, 25,125,133,176,243,141,180,149,244, 87, -132,222, 13,248,140,184, 47,203, 39,113,120,121,171,199,191,238, 93,185, 98, 53,251,111, 91,251, 99, 85,166,215,175, 87, 41,240, - 42,241,155,165,214,182,154, 47,191, 41, 91,145,104,211,234, 42, 83, 92,148,103, 83, 85,163,199,117, 84,250,197, 33,136,225, 97, -185,206,113,194,121,109,101, 27, 45,125, 80,163,171, 2, 95, 99, 38, 41,121,134,115,162, 78, 66,144,133, 38,141,138,205,202, 84, -102,150,120,231,139,150,134, 90,104,163,158, 75,196,249,142,105,226,180,212, 89,118, 93,165,163,138,170,138, 74,220,202, 74,236, -184,209, 80,208,200,239, 65, 46, 97, 87, 27,213, 71, 85, 72,252,182,203, 23, 53,133,225,134, 42, 12,195, 41,170,210,211, 69,154, -203, 85,150,205,166,227,165, 61, 6, 5, 54, 97, 74,156, 18,227, 69,110, 35,140,180,165,169,249, 82,156, 67, 13, 71,138,218, 85, -241,185,226,184,218, 91, 31, 9, 82,214, 50,122,244, 11,114,111, 27,114,131,182,251,199, 34,255, 0,136,154, 45,247,176,245, 58, - 22,218,111, 22,216,181, 81,143, 85,184, 45,221,195,188, 89,183,161, 89, 20, 42,100,159,117, 96, 92,148,187,141,187,194,223,118, -133, 84,102, 59,113,170, 72,126, 72,105, 41,114, 12,164, 55, 75, 99,119,122,224,174, 51,245, 7, 19,219, 89,112,112,215,186,220, - 60,220,144,175, 61,215, 77,193,108, 87,174,237,159,151,101,211,226, 77,189, 33,110,173,151, 93,162, 70,144,154,221,142, 81, 76, -164, 63, 80,165, 60,241,153, 77, 68,215, 72,114,100, 8,147, 31,135,146,113, 71,183, 59,103, 34, 92, 13,253,110,235,173,110,165, -205,184,176,173,202,147,143,193,221, 91, 86, 92, 45,209,191,156,186,104, 59,129,181, 86,205,199,245, 20,121, 48,102,109,181,175, -123,214, 32, 86,104, 82, 40,181, 28,208,209, 13, 52, 53,191, 38,135, 86,101,109,214, 19, 84,229,188, 53, 74,207,159,161,161,167, -175,150, 56, 86,121,140,113,211, 67,100, 55, 51,107,101,157, 73,146, 72,180,145, 11, 42,168,147,153,162,197,146,162,201, 56,112, -210,113,141, 46, 79,196, 20,245, 18, 53, 58,173, 84, 67, 46, 95,106,106,245, 73, 41,170, 2,208,207, 24, 52,245, 80, 86, 80, 37, - 72,165,150,158,114, 90,122,170, 9,135,212,151, 87,227, 20,104, 45, 87, 24, 85, 86,218,241, 42,148, 71,110, 43,170,211, 76,212, - 52,150,132,106,245,151,114, 85,109, 11,162,129, 84,104,168,251,149,106,157,112,209, 42,113,229, 48,188, 58,218,227,142,108, 33, - 77,169, 90, 21,237, 94,168,222, 22,133,223,195,254,202, 10, 93, 82, 93,177,180, 43,183,183,154,236,164, 81, 20,153,146, 98,238, -125,229, 73,129, 91,163,213,175,116, 52,191, 22, 53, 66, 29,188,253,173, 71,167, 81, 57, 76,150,133,213, 81,149, 33, 81,220,148, -211, 74,150,182,225,218, 92, 50,112,247,195,165,153, 77,165, 90,219,117, 99, 91,150, 60, 43,174,244,174,223, 49,109, 27,134,228, -218,202,205,255, 0,107,212,149, 18,116,251,243,114,104,207,201,168, 51,121, 72,220, 7,211, 38,169, 13,184,115,170,215,251,244, -217,244, 88,238, 70,155, 37,169, 49,121, 20,212, 93,185,118,222,225, 46,203,225,223, 98,183, 23,120,253,160,252,116, 84, 55,118, -117,213,191, 91,223, 72,247, 69,219,219,105,184, 23,221, 98, 20,254, 44,230,237,204, 42,236,138,109, 42, 84,217,212,251,153,118, - 17,144, 93, 52,138,101,143, 85,175,174, 58,252, 58,125, 67, 79,254, 28, 54, 93,153,214,174,113, 79, 20,121,133, 44, 97,185,112, - 9,150,105,100, 73, 41, 86, 94, 92, 38, 35, 21,167, 43, 81, 29, 57,169,144, 44, 20,142, 37,170,101,154, 49, 70,106,111,238, 14, -168,151,137,248,115,244,207, 19,210,215,101,116,144,212,140,186,131, 48,134,146, 36,164,139, 59,164,121,107,219, 53,204, 26,181, -229,163,139, 38,160,162,201,235, 36,205,169, 85,235,234,125,154,190, 36,140, 9,162,154, 90, 72,169,213, 45,253,208,118,151, 97, - 90, 91,181, 38, 13,167,103, 94,215,213,102,231,174, 55, 49,215, 31,172,238, 77,247, 17,216,119, 14,228, 45, 49,233,233, 9, 77, - 46, 21, 66, 69,159, 70, 41,134,135, 99,193,140,211, 84,180,200,231,102, 82,155, 18,155, 83,131,120, 85,111,219,154, 3, 50,105, -148,169, 19,160,193,160,214,170,113,194,103,214, 98,211,229,168,183, 62,159, 72, 66,178, 89,147, 84, 14,152,173,252, 45,248, 13, - 54,178, 84,149,147,169,133,123, 64,189,146, 86,255, 0, 13,187,109,182,187,145, 64,219,248,219,185, 14,215,178,234,116, 13,218, -222, 42,148,217, 2, 53, 42,184,204, 22,226,237,117,131, 14,206,132,240,114,194,225,222,157, 83, 53,138,149,106,161, 29, 14, 73, -171, 86, 42,171,153, 89,124,169,230,121, 34,177,182, 91, 65,116,111, 46,243,196,218,253,171,247,251,206,183,116,213,106,146,228, -110, 45, 77,182, 89,136,139,118, 28,148,197,186,119, 9, 54,243, 47, 6,109,107, 54,152,143, 26, 45, 38, 35,139,255, 0, 5,141, - 9, 78,190, 85, 41,232,140,170,115, 83, 86,212,245, 25,140, 21,212, 63,162,231,161,141, 36,125, 43,202,166, 45, 35,172,211, 73, - 10, 63,152,169, 40,176, 6,149,220,186,195,120,162,104,238, 34,191,184, 15, 62,224,252,219,132,178,206, 51,225,190, 45, 60, 75, -193,102,174,190, 55,168,174,180,249,164,116,185,109, 52,249, 86, 93, 75,153, 84,195, 32,246,103,141,107, 43,115,158, 82,101,249, - 74,150,205,227,150,183, 49,167,173,118,253, 35, 52,143, 98,189, 5, 54,159,179,243,109, 77,101, 98, 4,221,196,190,119, 71,112, - 90,102,181, 21, 8,139, 91,164,212,174, 88,182,196, 10,140, 85, 56, 18,219,240,220,254, 9,200, 41,115, 33, 74,231, 82,146,146, -218,155, 42,234,187,209, 27,163,184,237, 90, 72,168, 42,130,200,240,165, 64,143, 38, 82,158,160,173, 74, 13, 9, 84,182,157,124, - 46, 93, 57, 73, 90, 10,152, 73, 43,100,172, 41,160,180,115, 32, 49, 27, 9, 77,177,109, 93,139,217,139, 99,111,227, 72,143,183, -214,214,217,218,118,173,163, 6,173,153, 19, 88,131,108,210, 99,208,101, 65,174,135, 83,148,212,157,159, 79,150,244,181, 20,148, -123,204,229, 43,177, 57,114,208,124, 17, 57,202, 83, 14,170, 36, 5,137, 85, 10, 36,185, 75, 84, 55, 96,202, 71, 42,132,120,171, -113,106,241,219,116,146,219,173, 15, 11,186, 85,148,168,114,194,132,136,200,173, 31,158, 54, 80, 65, 3,168, 34,224,129,232, 65, -213,184,220,116, 23,199, 0,113,150,101, 55, 20,241,127, 20,113, 19,235,165, 25,245,125, 85, 67,198,196,108,179, 84,182,152,185, -133,129, 73,145, 89, 34, 14,220,203, 72, 8,103,229,150, 86,247, 81,110, 91, 49,167, 78,161,215, 37,212,219,113,213,165,218, 85, - 69,240,244, 26,132, 54,129, 11, 49,228,181, 29, 46, 66,168,140,245, 75,156,193,124,161,183, 27, 28,201, 86,190, 81,155,125,104, -135, 34, 12,114,220,121, 41, 40, 98,157, 53,228,170, 35,114, 20,230, 86,221, 26, 80,200,167, 40,169,103,158, 59,169, 8,202,112, -128,131,144, 60,211,163, 71,152,183,230, 83,229,191, 4,133,169,153, 76,134,179, 60,198, 89,109,232, 14,212,225, 62, 86,221, 65, - 13,185,148,165,196,101, 78, 32,243, 37,209,130, 19,153,208,146,134, 81, 41, 19, 11, 49,214, 86, 24,121,165,178,165, 69,168, 40, - 31,135, 1, 64,169, 46,149, 41, 36, 40,254,144, 5, 36,146,188,100, 38,134, 48, 25,152,141,172, 46, 77,136,220, 27,250,141,253, -222,226,122,130,193, 89, 80, 41,169,164,139, 72,146, 84, 43,112,200, 85,236, 84, 40, 87, 84, 1, 94,219, 21,144, 93,244,155, 22, - 69,101,209,125,183,168,209, 97,190,250,204, 70,152, 5, 64,200,140,166,150,203,176, 87,241,151, 94,136,160,178,134,218, 89,230, - 82,128,202,114,162,164,100, 2, 53, 28,111,107, 60, 59,251,143, 63,104, 23, 11,126,205,170, 3, 53,106, 46,201,109,173, 53, 27, -255, 0,189,117,166,249,216,137, 90,147, 49, 18,105,172,202, 66,146,174, 71, 98, 81, 45,102,106, 49, 24, 42,193, 53,155,189,229, -160, 5,197, 73,215,123, 47,141,211, 98,142,167,173,155, 89,193, 42,229, 25,106, 76,148,165, 47, 71,180, 91,112, 5,120,181, 23, - 14, 83, 34,182, 58,174, 44, 18,162,180, 43,149,249, 92,173,165, 40,113,184,160,218,118,243, 51,158,189,219,161, 64, 93,228,170, - 58,109,137, 55, 99,177,210,229,194,253,186,103, 61, 86, 93, 46, 69, 85,196,248,174,194, 85, 90, 68,169, 42, 65, 86, 20,243,235, - 89,234,113,167, 76,190, 73, 36,154, 36, 66, 2,174,204,196,216,168, 96, 86,235, 97,187,142,171,113,179, 0, 79, 96, 43, 78, 39, -200,167,207,168, 64,172,169, 48,195, 60,176,243, 35, 59,153,169,213,129,145, 9,184, 40,178,128, 35,189,201,120,217,238, 72, 33, -152, 74, 45,191,110,218, 20, 10, 5,159,104, 82,163, 80,109, 43, 50,145, 78,182,173,138, 20, 36, 37,152,116,202, 37, 38, 58, 33, - 65,136,219,104, 24, 24, 97,176,165, 43,186,214,165, 45, 89, 82,137,214, 66,192, 44, 56, 50, 64, 66,255, 0, 84,246, 74, 22,174, -188,167,230, 79,109,121, 92,114, 87,226,132,243, 5, 16,162,145,156, 45, 62, 69, 56,238,161,231,246,106,239, 2, 58, 29,109,109, -140, 45, 4,158,231,170, 65, 29, 58, 31, 49,251,181, 41, 93,150,200, 52, 42,216, 5,236,161, 64, 0, 1,233,167,107, 95,107, 15, -118, 6,132,133, 20,133,242, 45,129, 0, 88, 1,181,128, 29, 5,187, 14,150,219,160,198, 15, 92,140,185,115,138, 64, 42, 71,192, - 48, 51,148,245, 42, 81, 7,237,199,237,198,179, 75, 74,130,162,174,110, 64,124, 66, 48,124,213,215,155,149, 64,142,249, 35,240, -215,148, 83, 60, 73,124,161, 36,156,132,103,190,121, 71, 64,125,124,254,243,173,128,177,237,177,134,150,166,134, 7, 42,186,224, -143, 44, 12,121, 14,154, 67,202,160,201,111, 49,218,255, 0, 63,127,239,196,120,213, 0, 90,237,117,185, 55,251,239,238,249,252, - 47,182,197,185,224,181,226,148, 36, 57,202,148, 5,148,228,167,152, 5, 58, 79, 79, 76, 14,157,180,226, 8,126,236,203,104,229, - 60,234, 39, 41, 0,168,144,160, 20,178, 64, 31,173,203,129,242,206,178,138, 93, 27,145,148, 5, 35,225, 35, 39, 61,212, 7,196, - 78, 60,251, 1,143, 61,123,145, 19,153, 69, 69, 4, 41,106, 8, 66, 83,212,227, 32, 37, 32,103,190, 59,159, 85,124,134,144,177, -221,137,249,239,127,225,134,106,140,228, 77, 49,141, 79,213,198,127,211,243, 54,237,139, 84,118, 89,109, 14, 61, 41,212, 70,139, - 13,135, 37,204,148,176, 18,212,104,172, 36,184,227,206, 40,246,108, 37, 56,249,146, 7,158,181,250,179, 86,126,239,172,200,171, -165,165, 49, 78,105, 40,133, 70,101,239,129, 48, 41,109,171,225, 88, 0,126,146, 83,234,203,139, 61, 57, 66,130,124,177,167, 30, -243,170, 10,151, 53,173, 13,126, 37, 62, 51,173,185, 94,117, 25,228,155, 49,165, 7, 24,164,151, 19,254, 82, 35, 74, 8, 47, 36, -116, 83,129, 32,146, 1, 26,196,209, 13,152,192,120,189, 72, 36,248,109,160, 56, 2,128, 5, 63,163, 79, 92,103, 3, 39,160,236, - 58,233, 61, 70,161,194,166,241, 70,119, 63,180,195,227,217,127, 22,248, 41,196,175,135,160, 90, 56,228,204, 39, 66,107,106,150, -209, 41, 6,241,194,108, 75, 91, 99,174, 91, 3,191,217,140, 1,191, 54, 69,192, 76, 50, 27,111, 13, 54, 73, 64, 9, 75,139, 82, -155, 0, 43,169, 44,128, 9, 62, 93, 64,193, 61,206,129,152, 95, 41, 82,138,208, 22, 65, 72, 12,164, 32,165, 0, 36,148,163,152, -144,217,234,147,145,223, 36,228, 96, 13, 93,159, 83,174,103,149, 32, 40,182,126, 55, 51,206,132,145,201,240,161, 7, 35, 62, 99, - 32,129,158,249,214, 55, 45,212, 37, 96, 41, 41,120,167,152, 0,148, 0,129,149,167, 39,148,225, 32,224,247, 61, 71,166,116,224, -158, 91,109,185, 27,219,231,253,127,117,240,237, 35,179,146, 77,153,143,253,199,183,115,176,223,225,139, 75,238,163,147,144, 21, - 40, 96,142,116,142,164,165, 71,170,222, 82,187, 31,136, 4,140,243, 1,229,215, 88,252,183, 65, 72, 11, 82, 74,126, 16, 8, 28, -184, 82, 72, 9, 66, 86,188, 18, 18,124,176, 62,100,224,157, 92, 39, 56,224, 82,146, 23,204,162,174, 95, 9, 9, 79, 55, 83,240, - 40,169, 64,252, 33, 36,252, 92,160,245,192,214, 45, 49,208,142,112, 21,241,171,170, 65, 78, 85,128, 50, 82, 74,129,229, 60,160, -143,187,169,234, 53,176,135,175,112, 15,243, 31,187,175,201,195, 45, 82, 13,247,235,252, 62,255, 0,187,182,253,175,139, 84,247, - 82,160,163,130, 9, 39, 36,167,159,175,196, 10,138, 66,176, 19,215,191,145, 57, 25,215, 6, 61,188, 92, 35, 69,226, 19,132,201, - 91,199,110, 82,195,187,161,195, 10,102, 93,241, 28,140,192,126,125,115,105,170, 47, 48,214,226,219,142,184,128, 86,242, 33, 44, -195,173,196, 64,207, 34,224, 76,242,116,235,186,178,222, 24, 37, 41, 81,237,144, 82,160, 20, 48, 84, 0, 3,162,199, 82, 58,245, - 31,127, 70,250,191, 79,164,215, 96, 84, 40, 85,216,173, 79,160,215, 96, 84, 40, 53,232, 14,182,151, 35,203,161,214, 98, 61, 73, -173, 66,121,165,116,117,135,105,115,166, 54, 71,126, 85,224, 28,246,216, 14,203,105, 35, 63, 89, 25, 12,191, 17, 98, 47,238, 61, - 15,184,145,176, 59,197,243, 92,186, 44,214,138,175, 46,156,218, 42,180, 41,114, 7,145,137, 5, 36,183,172,110, 22, 65,210,229, -109,238,199,229,128, 82, 2,137,239,143, 49,212, 31,152,199,126,154,248,172,145,219,166, 51,147,251,191, 13, 61,188, 74,237, 67, -251, 7,196, 22,245,108,212,198, 21, 21, 91,103,185, 87,117,161, 21,133,168,173, 72,164, 83, 42,242, 5, 1, 65, 71,170,194,232, - 46, 83, 92, 10,235,144,230,114,115,146,198,169,106, 88, 4, 43,155,166, 71, 76,119,245, 30,186,153,211,202,179,197, 12,202,124, -178,168, 97,235, 98, 1,254,120,230,119,142, 72,157,226,149,116, 75, 17, 42,227,209,212,233,101,251,152, 17,138, 46, 16, 70, 51, -235,156, 28, 99,251,116, 42,177,142,195,148,103, 30,125,187,147,243,213,117,168, 30,224, 12,142,248,206, 79,217,161, 87,208, 31, - 60,156,126,255, 0,221,173,192, 44, 0,244,192, 29,190, 56, 29, 89,193,233,255, 0, 14,253, 52, 34,142,113,223,207,184, 3,240, -209,107,237,223, 29, 71,231,243,233,161,156, 32, 2, 51,147,231,142,191, 62,154, 85, 7,124, 42, 44,119,192,171, 35,203, 63,126, -113,231,228,117, 69,125,179,147,255, 0, 31, 93, 87, 95, 55,158, 49,229,249,245,208,235,199,207, 62, 94,159,126,149, 2,228, 99, - 29, 0, 3,231,255, 0, 24, 21,103,175,216, 49,159, 93, 45, 37,254,183,221,211, 75, 74,139,128, 0, 31,142, 13,143,168,198, 79, -124,227,238,199, 79,219,162,145,140,118,235,230,113,251,254,205, 8,223, 83,147,145,208,244,251,241,215, 69, 35,177,235,231,219, -247,232,141,107, 47,108, 12, 18,142,199,167,223,235,249,253,250,169,158,221,250,124,254,126, 94,154,164,140,245,233,211,215,247, -124,245,237, 36, 40,144, 15, 99,131,223,161,210, 78, 54,248, 96, 99,223,140,142,249, 24, 0,103, 25,202, 78,139,108,149,129,212, - 0,124,241,215,168,233,211,239,253,154, 16,180, 1, 56, 0, 36,228,159, 79, 44,147,243,254,189, 86,109, 65, 36, 14,184,198, 2, -143,203,212,253,218, 64,155,117,192,193,237, 39,151, 3,175, 66,123,119, 63, 63,144,209, 8, 95, 51,137, 73, 78, 57,115,241, 30, -221, 60,178,126,122, 8, 60,140,148,130, 85,216,224,117, 87,159,124,253,167,240,209, 63, 11,137,248,186, 28,252, 35,168,207,219, -248,233, 22,234,113,131,235,243,233,139,187, 64, 43,162,136, 63, 49,147,235,233,247,106,247, 70,169,212,104, 85, 90,117,110,145, - 41,200, 53, 90, 68,248,117, 58, 92,198,148, 80,236, 90,141, 62, 75, 82,225, 74,109, 67,170, 84,137, 44,180,175,184,141, 88,152, - 10,229, 79, 96, 48, 57,177,219, 35,167, 79,219,162,211,156, 40,118, 30, 71,184,249,245,242,233,162,144, 24, 21, 97,112,118, 32, -239,132, 15,196,169, 30,155, 16, 71,112, 71, 67,137,193,240,233,185, 20, 62, 44,120,124,219, 61,240,167, 76, 71,191, 84,105,140, - 81, 55, 14,155, 5, 64, 73,165,223,148, 54,155,135, 89,139, 53, 8, 57,103,197,121,191, 25, 25,253,100, 72, 65, 4,131,173,161, -180,210,245, 40,183, 10, 44, 52,248, 14,171,153,247, 36, 40,150,208,211,100, 16,181,171,201, 93, 7, 79, 83,168,161,123, 40,248, -226,137,194,214,237,191, 97,110, 76,199, 6,196,111, 20,202,117, 42,239,113,106, 82,155,179,174, 82, 83, 18,135,123,178,146,127, - 69, 25, 42,113, 12, 78,199,254, 43,149,211,158, 67,169,140, 46,220,104,182,207,128,184,210,104, 79,178,197, 70,159, 80,128,226, - 36, 70,171, 65,146,132,189, 18, 92,121, 77,168,165,248,174, 52,182,212, 10, 73, 7,155, 84, 39, 16,240,233,203,115, 25, 99, 88, -201,130, 67,170, 35,216,169, 61, 47,220,173,244,155,247,243, 17,102, 24,239,143, 11, 60, 80,110, 39,225,218, 88,107,103, 15,152, -229,170,144,213, 33, 98, 60,234, 0, 89,236, 55, 34,117, 93, 98,219,115, 3,198, 8,209,135, 82,196,175,212,218,113,133,198, 84, -117, 38, 71, 32, 67, 78,101, 4,182,142,157, 7,255, 0, 22,125,124,255, 0, 13,121,226,147, 97,169,220,100,236, 45,251,195,253, -214, 96, 83, 89,184, 96, 55, 58,221,184,156, 71,138, 45,139,210,151,207, 34,220,169,161, 93,196,113, 36,248, 82,113,221,137, 11, -244,198,172,116, 62,102,100,181, 29,160, 61,231,149, 60,142, 99,224,101,164,246, 3, 29,128, 25,233,173,128,164, 74, 18, 99,198, - 73,116,183, 25,181,114, 60,178, 57, 76,151, 16, 50,162,162, 14,124, 60,129,246,235, 82,158, 2,165,118,210,203, 98, 45,216,245, -190,219, 94,253, 7,223,139, 66,108,214,122, 57,232,179, 76,177, 18,150,182,141,214,104,102,243, 49, 73, 35, 33,209,244,220,171, -217,133,180,176,210,230,225,188,151,199,230,211,196, 86,208,238, 55, 15,155,153,121,237, 22,231, 81,100,219,215,221,143, 82,149, - 79,168, 71,125,106,110, 52,230, 88, 90,132,122,157, 46,106,128, 76,202,124,136,220,143, 71,121, 63, 11,141,186,146, 8, 36,141, -107, 90,238,137,210, 99,242, 84,194, 39,208,228,243, 69,156,165,101, 50, 16,209, 35,156,184, 17,212, 56,158,138, 66,198, 72,229, - 26,253, 19,125,160,126,206, 29,169,246,133, 88,112,226,214,219,129,100,111, 5,191, 18, 68, 91, 19,116,219,132, 28,148,220, 38, -208,181, 53, 65,186, 99,180, 66,170,182,233,119, 30, 25, 39,198,138, 86,165, 50,121, 74,144, 97, 29,196,223,179,219,138,238, 14, -171, 85, 42, 30,238,109, 69,202,253,158,137,146, 26,165, 95,150,229, 61,202,229,149, 91,134,219,133, 41,155, 18,173, 13,165, 6, - 91, 82, 48,172, 57,202,180,231, 5, 26,179,178, 42,250, 57,225, 72,106,149, 86,169, 74,233, 44,116,220, 29,175, 27,118,123,216, -133,216,130, 59,142,146,250,158, 42,173,226,215, 74,204,190,189,178,218,167,133,214,182,141,111, 32, 18,142,242, 68,219, 84,208, -202,162, 69,119,250,199, 68, 58, 38, 17,181,158, 86, 98,205, 98,245,184,155,179,246,190,133,117, 81, 43,212, 69,205, 93,107,111, -171,201,247,180,220, 22,125, 75,170,221,143, 77,172, 67, 70, 41, 51,212, 66,147,225, 62,180,195,146,121,152,117, 41, 82,145,153, - 39,123, 14, 56,116,186,118,163,136, 57,119,139, 91,231,181, 82,105,117, 56,211, 85,187, 59, 81, 50,174,154, 46,225, 86, 41,142, -178,236, 71, 96, 81, 44, 39,154, 15, 79,169,138,138,154,146,169,140,169,198,154,240,202,146,121, 8,214,156,123, 19,246,162,147, -184,219,245,181,214,173, 74,157,114, 91,212, 68, 94,177, 46, 9, 87,209,164, 82, 35,166,152,213, 40, 26,147,148,152, 53,249, 12, -182,135,161, 77, 92,118,163,188,212,150,221, 87, 43,171, 72, 10, 95, 41,212,194,248,217,224, 59, 96,239,203,211,110,184,157,163, -220,219,119,195,142,224,236,189, 90, 53,199,112,238,141,180,213, 54,131, 86,184,173, 90, 80,241,158,162,204,105,137, 44, 68,247, -146,216,120, 38, 83,136, 82,185, 95, 91,106, 14, 36,132,105, 42,177, 85, 95, 69,196, 84,180,235, 13, 45, 13, 59, 8,229, 63, 84, -100,153,228, 44,254,209,101,229, 8,180, 29, 45, 34, 57,120,102, 98,238, 84, 54,248,177,115, 46, 32,224,110, 24,171,225,142, 26, -226,122,217,198,119,199, 25, 21, 76,116,245,242, 71, 93, 93, 67,144, 67, 83, 72,217,122,208,154, 38,146,170, 74,254,122,137, 97, -203,171, 80,123,126, 86, 13, 50,114,230,134, 52, 43,104,160,110, 52,106,229, 82,239,218, 10,165,197, 42,143, 92,155,112, 63, 79, -182,109,170,172, 86, 42, 53, 42,212, 72,110,166, 83, 17, 83, 38, 18,137,166,133, 50,164,172, 60, 85,240,145,228,123, 92,248,153, -225, 90,117,139, 14,223,186,217,144,212,184,247, 13, 37,217,245,234, 50, 30, 68,154,188, 47,118, 5,245,153, 13, 36, 5, 84,225, -248, 64, 45,114, 16,133, 4,120, 5,183,210,145,135, 23,170, 17,120,166,246,122,210,239, 8,251,245, 73,221, 42,108,202,125, 54, - 85,110, 12,136,116, 25,110, 42,164,252,181,186,183, 36, 84,100, 71,157,200,243,176,212,251, 97, 40,154,128, 27, 80, 87, 42, 0, - 73,215, 28,248,248,246,138,238,223, 31, 27,209,100, 13,189,190,175, 61,174,217, 13,133,184,168,247,110,220, 46,215,168, 72,182, - 43, 50,175, 26, 23,136,134,174, 58,133, 66, 41, 14,213, 96, 61,144,143,113,148, 85, 17,198,121,155,117,149,165, 68, 30, 78,240, -151, 41,171,203,168,248,214,139,140,242,218,147, 61, 39, 46,146,154,176, 74, 94, 58,115, 70,238,237,110,102,210,194,237, 49, 74, -101,167,176,152,106,242, 71,253,233, 17,120, 7,226,111,137,188, 85,195,180,126, 29,112,252,188, 55,150, 71, 72,245, 89,147,103, -144, 54, 91, 11,230, 13, 18, 65,236,212,236,144, 84, 78,202,220,184,170, 37,144,199, 57,137, 21,156, 76,199,149, 3,245, 94,101, -153, 14, 91, 11,118,106, 60, 38, 42, 50, 98,248, 52,232,255, 0,224, 76,210,169,176,210, 23, 58, 67, 75, 75,170,196,215, 65, 90, - 66,200, 82,134, 70, 57,121,122,190,116, 74, 93, 58,224,113, 52,104,137,117, 22,180, 38, 41,236, 84,166,201,117,250,127,189,196, -138,202,165, 63, 77,135, 61,213, 5, 70,128,166,194, 12,199, 18,144,165,140,160, 16,130,179,166,155,101, 55,170,133,187,214,166, -214,220, 55, 67, 20, 74, 22,231,223,150, 76, 91,182, 85,181, 1,133, 66,160,215,231,197,159, 82,164,204,170, 90, 80,221, 39,244, - 42,118,154,185, 47,211,155, 89,114, 42,164,175,221,144,228, 84, 39,195,216, 74,124, 72,107, 67,204, 60,133,205, 66,221, 76,153, -140,248,200,105, 21,106,162,212,144,195,107,125, 39,244,116,228, 20,254,149, 32,124, 73, 74, 16, 82,160,149, 5, 73,200, 40,225, - 8, 33,133,138,157,182, 82, 3, 95, 73,181,137,216,116,212, 13,238,110, 49, 90,230,167, 55,225,188,207, 50,225,188,237,100,164, -205,114, 10,186,138,102, 10, 67, 66,181, 20,181, 15, 75, 52,145, 56, 33,102, 11, 36, 14,177,206, 9, 14, 84, 59, 29,188,174, 84, - 59,173,112, 93,143, 85,131, 21,160,229,114, 44, 58, 45,153, 66, 12, 7, 27,139, 74, 91,136,101,170,139,205, 35,148, 83,216, 89, -109, 47,175,160, 45,198, 97,150, 17,149, 40,129,153,191, 33,138, 45, 46, 76, 10,157, 73, 53,234,220,249, 45, 83,233,211, 28,109, - 44, 82,226, 34,114,131, 18, 43, 40,129, 31,153, 48, 97, 70, 47, 36,186,181,120,174, 58,242, 82,209, 95, 50,212, 18,208, 73, 83, - 80, 80,204,199,127,194, 85, 21,242, 79,187, 56,168,170,169,212,221,108, 50, 91,138,234,193,240,227,178,130, 24,101, 57,229,108, - 41, 75, 86, 74, 20, 9,139,172, 74,165, 58,245,126,172,220, 89,142, 26,131,177,226,196,130, 86,202, 30,125,154,122,189,198,155, - 17,167, 0, 8,166,198,149,239, 78, 60,238, 79,139,135, 31, 80, 75,139, 70,183,210, 72,208, 37,152, 14,131,107,157,246,216,129, -183, 77,134,221,141,183, 54,195, 12,185,100, 85,145,194,212,139,125, 68,121, 69,150, 73, 36, 70, 28,168,213,141,221, 80, 38,242, -239,121, 25,155,153,118, 55,137,194,174, 84, 41,148, 85,183, 64,162,120, 21, 9, 84,184, 49,145, 29, 46, 45, 79, 64,165, 64,110, - 50,132,154,165, 69,214,148, 82,194,220, 74,138,147, 28,101,231,150,232,192, 66, 9, 86,185, 17,237, 36,216, 24,156, 79,108, 45, - 91,106,157,145, 17,119,146,170, 52,251,163,110,235,115,214,150, 35,192,191,179, 38, 60, 55, 42, 47,160, 19, 2,219,168,211, 29, -118,157, 56,164, 20, 50,202,227,203, 3,158, 10, 73,232,220,233,143,193,167,180,203, 82, 67,210, 37,192,145, 88,170, 20, 52,150, -230, 54,253, 90,120,113, 41,119,149, 69, 38,115,235, 1, 12,182, 7,193, 25, 9, 82,185,130, 82,117,175,119,139, 85,218,217,157, -245,121, 66, 42,143,213, 32,176,154,170,185, 28,143, 69, 75, 2,115,178,106, 74,141,250,175, 22, 25,108,248, 12, 35, 8, 91,142, - 54,181,252, 5,122, 88,213,203, 28,145, 75, 78,229, 37,167, 97, 34,183,236,148, 33,148,223, 96, 69,197,183,176, 63,102,214,216, - 58,240,190, 68,114,250,243,152, 23, 19,199, 8,114,242, 72, 72,231, 22,188,108,205,176,101,137,213,157,138,160, 37,149,131,121, -245, 2, 96,171,183, 20,137,123, 31,191,149, 91, 47,123,232, 85, 27, 62, 93, 6,181, 34,220,190,237,155,214,132,186,220, 88,179, -217,150,220, 71,128,149, 75,125,138,149,169, 90, 75,203, 96,211,110, 42, 91,143,176,165,184,194,229,195,126, 59,201,121, 83,127, -216,175,102,198,192,241,189,192, 78,211, 93,151,173, 66,131, 11,121,110, 27,122,109, 78,202,226,103,134,152,244,170, 29,255, 0, -106, 75, 77, 80,127, 7,147,118,200,183,170, 81,169, 27,137,124, 65,102, 20, 38,171, 53, 4, 24,110,205,241, 18,226,164,123,227, - 13,202,211, 37,186,124, 33,108, 79, 16, 66,211,103,113,182,182,139,118, 84,173, 7,156,166,216,183, 99,192, 67,187, 32,202, 95, - 52,202,236,231,238, 88,201, 46,213,173,214,193, 83,203,133, 49, 50, 99,173,245,243, 52,203, 11,115,159, 93, 2,225, 42,126,233, -240,185,105, 84,108, 74, 45, 95,108, 43, 59, 35, 69, 97,250,141, 10,138,230,217, 90,251, 48,139, 9,233, 47,173, 83,167, 92, 23, -133,177, 85, 69, 46,182,212,244, 48,183, 86,228,216,112,223, 43,138, 95,241, 29,230,228, 19,170, 78, 41,201,115, 12,218,154,183, - 54,203,228, 66,244,207, 79, 57, 83,174, 48,118,211, 36,113,139, 51,236,182,144,200,197,209, 89, 4, 74, 66, 18,100,220, 71,196, - 25,253, 47,135,176,101, 60, 41,197, 99, 32,207,114, 92,228,102, 52,138,194,116,168,154, 25, 34,146, 41,169,214,165, 68,180,176, -199, 36,210, 6,122, 3, 28, 20,213, 45, 28,143, 83, 37, 84,238, 34,143, 74,120, 89,225,111,121,247,111,121,238, 89,155,225,184, -220, 82,237,142,251,112,146,253, 17,207,229,239, 14,200,188, 40,150,199, 16, 91, 53,100,203,106,223,161,219, 59,177,105,238, 28, - 8,141,191,184, 84,122,123,188,237, 86, 66, 93,102,187, 65,135, 61,155,146,157, 54, 68,117, 85,170, 29, 5,246,132,237, 76,171, - 94,215,181, 54,235,103,182,227, 99,237,219, 50,147,100,221,151,117,186,253, 38,155, 38,143,114, 90, 87, 4,106,212, 53,220,242, -118,242,194,180,160,179, 75,166, 81, 39, 84,235,112, 68,217,140, 61,226, 50,212,247, 22, 89,118, 35, 77,235, 83,184,202,246,199, -112,111, 70,219,122,181, 6,171,108, 65,226,231,125,105,213,122,204, 75, 11,108,236, 27,130,252,141,176,118,155, 98, 2, 33,193, -175,238,213,251, 13, 81, 98,223, 52,197,206, 75,206,187, 71,165, 38,170,196,168,241,155,138, 85, 9,111, 46, 98, 52, 47,111,189, -188,183, 37,209,109, 10,103, 17, 22, 2,110,109,194,146,227,138,131,118,219,246,163,116, 11, 98,132,235,103, 52,122, 75,118,253, -157, 38, 77, 80, 90, 17,210,101,178,248,116,206,118, 75, 83,212, 28,101,175, 1,149,162, 45,226,190, 70,185,231, 0,203,149,228, -121,123,231,153,198,105, 91, 28,230, 88, 16, 36,112,211, 70,154,212, 24, 39,149,165, 18, 74,198, 72, 89, 35,105,100, 12, 41,231, -158,112, 57,145,137,231, 10,100, 94, 51,241, 87, 23,112,111, 30,211,112, 52,153, 38, 73,225,242, 10, 90,124,155, 50,146, 42,116, - 99, 45, 52,112,243,178,218,153, 12, 21, 85, 52,171, 42,205, 88,212,181,201, 75,149,209, 37, 91, 81,100,148, 51, 81, 75, 49, 50, - 6,217,173,183,155,188, 84,118,173,158, 32,172,235, 87,118, 54,166,179,183,149,203,134,222,225,242, 30,215, 80,233, 54,151,241, -165,100,213,106,245,122,156,138,221,227, 2,160,150, 46, 42,164,235,130,161, 57, 86,251,132, 51, 77,169, 64,173,174,167, 38, 59, - 85, 4, 56, 26, 3,109,118,123,135, 41,252, 96,110,135, 23,245,109,254,221,189,165,168,219,173, 91,123, 97, 87,216,251,190,175, -183,219, 85, 99,219,212,155,126,209,183,217,137,183, 10,131, 66,169, 76,169,205,176,225, 70,165,194, 83,180,116,125, 88,219,175, -148,178,243,175,199, 75,173, 59, 29, 61,249,246,206,238, 94,228,237, 61,211,181,155,117, 97, 50,205, 62,247,110,151, 14,183,114, - 57, 71,149,102, 55,111,211, 40,145,161,125, 74,213, 25, 54,141,222,227,180,202,188,130,169, 82, 23, 30,151, 57,136, 16,218, 83, -108, 72, 50, 38, 25, 64,114, 67,110, 47,253,229,176,174, 10,205,199,103,238,253,237, 99, 85,238,119,154,122,231,157, 75,174,215, - 74,238, 7, 25, 46,152,207,214,220,157, 58, 73,170, 74,109, 18, 30, 75,110,190, 29,121,180, 44,165, 42, 9,232, 21,240,162,151, - 56,225, 46, 16,143, 36,205,178, 88,214,186,130,176,206,181, 50,212,206, 37,168,141, 97,228, 37, 63, 46, 9,201, 90, 37, 96,103, -142, 25,155, 74,243, 26,157, 97,150, 33,237, 83,203,114,127,162,199,141,220, 86,188, 75, 85,151,241,125, 31, 2,167, 23,193, 83, -150, 54, 91, 79, 78,166,152,101, 85,109, 75, 81, 85, 61, 59, 60, 98,150,158,166,174,122, 58, 72, 42,106,150,136,102, 51,123, 10, - 85,205,152, 73, 43, 44, 16,206,123,218, 61,196,127, 12, 59,235,177, 53, 46, 29,169, 86,189, 55,136,234,109,215, 88,166, 26,197, - 38, 53,233,116,109,198,223, 91,198,222, 80,171,209,234,119, 5,221, 67,164, 25,151, 10, 5, 85,136, 33,154, 93, 49, 37, 18, 15, -233,100,202, 97,150,139,131,132,251, 87,179,251, 79,179,194,224,147,101,216,244,202, 5, 90,229,159, 17,119,149,211, 72,110, 69, - 46,248,110,163, 29,217, 43,129, 66,171, 79,122,116,167, 35, 90, 76, 72,147, 37,216,236, 37,215, 98,203,117,126,245, 45, 50,100, -114,186,222,133,219, 60, 77,113, 16,220,102, 29,123,136, 11,214,170, 86,194,217,230,148,229, 46, 98, 20,211,128,115, 50,125,254, -146,190,100,228,116,200, 4, 30,163, 7,187,151, 72,226,234,249,165, 72,105,119,173, 54,145,119,199, 91,105,138, 42,209,169,240, -173,203,214, 44,100,188,211,178, 16,205,110,152,208,135,112, 48,176,215,197, 10,171, 13,109,124, 69,109,200, 97, 95, 24,214,226, -126, 46,204,248,131, 53,169,253, 34,207, 26, 53,144, 71, 4, 79, 21, 56, 17,133, 22,229,150,231, 57, 26, 1, 47, 34,187, 2, 44, - 52,198,170,139, 50,202,126,130,126, 47,120,111,192,109,194,252, 57,154,229,220, 65,148, 9,205,116,180,137,154,214, 10,186,170, -162, 10,137,109, 91, 69, 71,150,198,235, 25, 10, 22, 25,169,163,100, 69,105,125,166,116, 70,126,237,240,173,188,242,233, 18,100, -237, 93,235, 42, 60,202,109,114, 92,138,190,220,221,209,196,104,148,181, 76, 74, 16,170,157,149, 92,105,110,132,210, 43,242, 74, - 19, 42,158,164,115,198,158,234, 36, 48,143, 6, 66,144,210,247,177, 85,202,124, 85, 41, 50, 23,238,234, 96,171,220, 84,131,201, - 81,167,186,242, 66,220,103,194,112,116,136,167, 49,204,218,135, 38,114,149, 36,142, 82,142, 24,109,205,249,100,111,109,188,154, -141,169, 87,121,132, 69,149, 25,154,133, 12, 70,102, 35,244,170,162,202,228,211,227,215,160,171,156, 70, 90,220,109,197,198,112, - 60, 25,150,134, 86, 98, 60,242,193, 74, 54, 70, 21,203,185,137, 49, 41,209, 55, 38,242,181,228,211, 26, 17,157,129, 46,114, 42, -180,121, 76,135,128,240,207,214,112,156,148,134, 86, 18, 75, 79, 49, 33, 50,163,165,120,248,146, 57, 73,105,106,159,147, 26, 7, - 37, 20,121, 74,249,129, 29,199, 81,176, 38,192,147,176,176, 11,229, 39, 28,113,196, 92, 57, 81,148,103, 21,249,110,121, 69, 46, - 69,155, 81,200,201, 87, 73, 60,114, 67, 44, 19, 46,155,235,139, 65,117, 46,165, 73, 11, 30,131,175, 80,250,185, 64,199, 74,170, -247,117,187,111, 83,215, 94,171,203,137, 65,135, 79, 67,143,174,161,207, 41, 13, 62,140, 15, 16, 83, 24,105,167, 37, 84, 28, 81, - 82,130,227, 69,105,245, 45, 71, 41, 66,191, 91, 76,133, 87,124,171,187,130, 29,167,217, 76,213,237,251,106, 66,189,205,119,162, - 28, 98, 37,199, 86,142, 16,162,185, 54,235, 12, 41,106,181,161,242, 45, 99,199,119,154,162, 48, 80, 81, 16,158,154,182,205, 62, -117, 86,178,221, 66,238,151, 81,166,214,156, 82,227, 66,168, 73,171, 77,171,198,152, 82,188,180,236, 27,145,222, 95,115, 36,148, -242, 70, 81,136,160, 29, 56, 67,138, 29, 54, 42,202,179,153,139, 37,154,143, 44,138, 93, 90,115, 13,179, 42, 84, 55, 84,228, 58, -130,154, 32,177, 34,167, 76,116,248, 83,164,158, 85, 21, 58, 66, 29,194,202, 84,242,134, 53,191, 74, 37,168,148, 34, 92,139,239, -126,187,219,125,133,150,228,146, 47, 98, 55,179, 1,136, 86,103, 62, 91, 69, 8, 36,153,106, 8, 60,182,111, 58, 40,216,157, 54, - 98, 36, 0,234,243,171, 58, 3,101,229,106,179, 43,139,104, 91, 70, 44,120,176,217, 45, 59, 21,146,164, 50,232, 71, 43,133,111, -117, 90,230,100,144,252,149, 40,149, 41,210, 74,150,181, 21, 44,149,171, 39, 97,160,209,196, 74, 98,138,211,204, 1,101, 39, 41, -232,160, 84, 80, 91, 86,122, 5,117,207,217,171, 93,167, 74,230,109,190,118,227,151, 50, 18, 67, 73, 80,101,207,212, 10, 45,182, -190,169, 65, 32, 16, 14, 72, 61, 50,113,157, 59,206,211,128,167,184,215,134, 84,218,139, 67, 9,202,136, 9, 81,207,134, 79,235, - 28, 17,243,252,113,169,165, 53, 56,166, 68,176, 35, 72, 23,245, 29, 5,183,191, 78,155,254, 24,174,234,171, 13, 76,138,146,157, -228,111, 49,216, 94,228,111,219,173,201, 22,181,250,250,130,207, 61, 76, 83, 78,129,201,136,206, 30,102,214, 63,241, 74, 61,219, - 81,242, 79, 81,141, 92, 33, 83, 11, 11, 43, 74, 70, 79,235,128, 48,146,159, 95,183, 89,187, 48, 16,248,113,190, 78,100,130, 82, -160,176, 65, 32, 28, 5, 99,215,168,252, 53, 65,216,162, 34,146,199,235, 39, 31, 2,200,193,233,215,144,231, 79, 81,206,164,117, -233,252,125,253,240,213, 89,206, 82,241,176,243, 14,190,132,117, 7,227,110,189,143, 94,183,197,134,155, 9, 14, 77, 73, 35,160, -115, 31,105,236,123,140,118,214,207,217,208, 91, 67, 45, 2, 19,212, 36, 12, 14,163,212,156,142,135,247,233,135,163, 69, 10,155, -158, 95,135,196,200, 0,103, 57,200,252,115,173,138,183, 84,150, 18,214, 79, 47, 42, 82, 64,200,200,192, 25, 63, 34, 51,173,102, -107,129,181,255, 0,158, 33, 53,234,201, 4,224,108,194,246,251,207,207,175,124, 57,232,109,180, 51,202, 72,248,130,113,142,248, - 78, 0, 31, 35,235,246,233,191,188, 42,206, 66,108,193,167,132,253,103, 41,181, 0, 71,255, 0, 2,140,174,134, 73, 35,245, 92, - 39, 33, 30,121,235,229,171,141, 90,228,106, 11, 32, 52, 80,236,183, 73, 12, 70, 4,229, 74, 7, 30, 43,152, 63, 3, 41, 29, 84, -123, 28,224,100,235, 5, 13,173,197, 57, 46, 67,138,125,249, 46,120,146, 95, 88,253,117,156, 97, 40, 39,245, 91, 0,225, 35,176, - 29,180,142,179, 80,220,168,205,149,126,211, 15,223,164, 16,122,250,158,195,208,145,134,108,155, 45,116,149,107,106,210,241, 41, -186,161,255, 0,120,194,221, 71,236, 47,127,218, 35, 79, 77, 86,176, 66,163, 8,205,225,197, 43, 56, 37,105, 65, 56, 36,252, 75, - 82,212,174,171,112,149, 28,156,245,207, 93, 15, 45,216,241, 57,146, 57, 27, 56,200, 72,192, 89, 78, 15, 85,168,159,128, 99, 39, -226, 63, 33,223, 89, 20,167,114,130, 10,130, 80, 72,248, 26, 31, 30, 65, 0, 16,165, 3,208,231,174, 61, 61, 53,129,212,188, 52, - 7, 20, 82,214, 78, 74,148,226,186,164,228, 18, 84,181,103, 36,244,238,122, 30,157, 53,185, 26, 44,106,170,160, 1,238,236, 54, -253,214,249,247,206,169,100,122,153, 25,234, 36,251, 71,160,233,212,122,216,124,236,119,197,146,116,196, 43,156, 23, 20,234,176, - 66, 83, 24, 44, 50, 18, 79, 66,235,132,167,159, 61, 50, 50, 18, 9,206, 15, 83,172, 58,116,165, 37, 64, 4,182,218, 73,199, 59, -139, 10, 82, 73, 66,186, 33, 13, 30, 94, 96,174,108,228,231,168,198,123,139,140,202,131, 79, 30, 70,148,227,238, 33, 74, 65,102, - 43, 97,196, 54,147,211,226, 81, 41, 74,129, 0,103,226, 56,236, 70, 51,172, 78,114,228,243, 5, 43,193,100,115,243, 36,120,134, - 75,201,194,128, 42, 71, 54, 17,204, 60,206, 74,114,122, 18,116,112,214,210, 59,223,241,219,240,190,226,251,116,251,158,201,176, - 10, 23, 73, 61,143, 95,141,182, 61, 58, 16,167,226,118,197, 23,220, 24, 42, 82,202,147,250, 50,234,130,146,217, 45, 36,168,133, - 45, 94, 71,175,197,215,174, 49,223,174,177,233, 50,208, 66,131,105, 61,214, 66, 64, 78,114, 64, 32,244, 61, 27, 42, 36,100, 30, - 80, 0, 29,250,232,185,104, 66, 49, 33,199, 21,150,220, 43, 66,158, 90,158, 9, 94, 72,229, 74, 84,180,165, 36,173, 63,234,146, -156,146, 6,173,114, 20, 80,180,165, 72, 80,112, 20,145,206,164, 41, 92,139, 1, 96,182,144,172, 56,130, 20, 14, 50, 0, 39, 56, -233,141, 46,141, 98, 54,244,254, 95, 29,247,198,133, 76, 90,206,166, 58,175,233,178,237, 97,238,254, 93,189,215,178,204, 42, 33, - 93, 64, 42,248,136, 81, 57,235,147,209, 95,205, 61, 51,156,117,229,239,140,107, 16,158, 7, 42,147,206, 74,138, 85,241,171,148, - 17,140, 96,145,216, 96, 12,125,253, 6,178,233, 89, 1, 42, 89, 0,224,140, 40, 16,146,179,204,164, 55,201,216, 60,158,153, 29, -114, 59,100,118,197,106, 10,207, 40, 35,170, 73,230, 36,114,149,103,155,161, 9, 87, 86,241,147,231,213, 88,193, 58, 92, 49,218, -223,135,110,159,187,221,238,253,216,103,145, 0, 34,219,123,186,124,143,147,136, 13,251,114,237,134,237,143,105, 46,242, 73, 13, - 22,133,233,109,109,125,248,227,197, 1, 40,126, 69,118,199,166,197,148,182,249, 0,241, 0,122,146,174,101, 31,136,168,158, 98, - 78,117,200,194,180,168,126,137,101, 88,239,233,246,107,183,127, 72, 24,180,175,104, 99,158, 27,161,215, 19,195,254,205, 37,246, -129,255, 0, 34,180,195,184,124, 52,148, 17,150,202,152, 45,175,169,201, 11, 7, 0, 99, 92, 70, 83,105,199, 81,140,246,229,242, -249, 29, 75,178,155,181, 13, 41, 59,217,109,211,176, 36,116,235,219,242,199, 51,241, 50, 44,124, 69,158, 34,159, 47,181,212, 31, -255, 0,116,172,199,247, 18,113, 76,168, 40,116, 72, 29, 62, 47, 63,188,117,208,235, 35, 24,207, 92,244,254,221, 86, 40, 35, 62, -152,207, 95,232,251,116, 51,133, 67,168, 78, 71, 81,243,251,244,236, 6,194,221, 48,206,160, 29,173,211,161,253,216,162,179,229, -143,191,211,175,217,170, 11, 0,227,176,245,245,199,175,207,160, 58,244,188,254,177,201, 82,124,188,177,231,246, 29, 81, 39, 39, - 58, 93, 70,194,221, 63,158, 20, 24,164,230, 60,136,232, 72,244, 39,183,109, 12,178, 9, 61,242, 59,122, 30,223,214,116, 74,241, -130, 73, 3, 7,167,246,245,213,189,240,234,136,240,212,148, 97, 95, 22, 70, 74,128,236, 58,249,233, 68,235,140, 3,126,155,227, -193, 36,156,254,113,165,175, 10, 63,237, 99,238,206,116,180,125, 62,182,191,207,191, 25,199,180,146, 15, 65,159,151,174,171,165, - 93,142, 58,142,227, 61, 70,135, 31,120,254,145,251,117, 92, 96,245, 30,127, 46,250, 37,188,191, 15,195,231,231,124, 12, 86,241, - 19,156,117,235,231,142,159,126,136,111, 10,193, 74,187, 28, 99, 24,201, 62,191,136,252, 53, 65, 9, 0,131,220,244,251, 58,232, -164,225, 61,178, 7, 94,221,254,236,246,210, 76, 24,139,124,252,223, 25,219,239,197, 69,160,168,119,233,221, 93, 78, 6, 49,216, -125,186, 33,164,115, 36, 40,247, 29, 66, 71,160,233,235,170, 64,133, 15,207,113,215, 69, 36,242,224,244,244, 35,208,105, 34, 0, - 39,190, 49,143,104,101, 42,238, 57, 85,215,168,198, 72,251,188,244,123,104, 72, 72, 24,201, 79, 78,191,187,166,132, 65, 39,226, - 72, 25,244, 39,167,152,251,180, 90, 22,144, 1, 87,195,147,231,252,236,250,124,244,153, 23,216,158,159,233,140, 17,124, 28,214, - 58,114,244, 24, 61, 62, 93,191,167, 70, 32, 12,103, 39,230, 60,137,199, 94,154, 13,178, 23,215,168, 29,253, 59, 99,250,245, 93, - 11, 73, 95, 47,114, 62,127,102,127,103,150,147,194, 39,221,190, 13,108,129,145,140,228, 16,160, 70, 82,164,158,133, 36,121,130, - 9,200,212,133,253,149, 30,214, 40,187, 66,197,191,195, 39, 20,245,169, 15,236,235,143,162, 14,220,110,140,213,189, 54,163,181, -211,100,184, 17, 30,135,114, 58,162,165,203,177,148,226,240,211,164,149, 65,206, 21,150, 70, 83, 30,118,242, 14,122,121,126,206, -218, 33, 39, 37, 68,227,168,229, 32,128, 82, 65,232, 65, 7,184, 56,237,231,157, 55,102, 89,109, 54,103, 78,208, 84, 37,251,171, - 11,106, 86,236, 71,240, 32,236, 71, 81,211, 14,249, 22,123,153,112,230, 99, 22,103,149,205,202,158, 63, 43, 43, 92,199, 44,100, -130,209, 74,160,141, 72,214, 29,195, 41, 1,144,171, 0, 71,233,189, 78,163,199,149, 6, 5,118,137, 50,159, 88,161, 86, 97,179, - 50,145,112,209,228,179, 81,164,214, 32,202, 66, 93,106,101, 62,161, 25, 74,109,214,150,210,146, 82, 66,186,115,105,198,165,210, -220, 45, 54,156, 0,210, 18,130, 16,156,144,132,160,130,113,234,163,215, 63,102,191, 63,142, 13, 61,168,188, 90,112, 88, 35, 91, -187,121,119,179,119,109,106,165, 54,185,123, 83,184, 1,218,213,172,195, 74,112, 25, 31,193,231,222,112,191,110, 58,164, 21,224, - 48,176,215, 49, 7,195,198,117, 59, 45,161,226,130,149,124,109,157,131,126, 59,105, 34, 25,190,109, 42, 53,196,184,241, 30, 15, -198,138,237, 78, 35, 82, 31,140,211,167,245,219, 66,220, 41, 7,190, 19,170,167, 56,203,165,200,101,140, 85,149,104,230,213,203, -101,189,155, 78,155,220,117, 82, 3, 46,198,227,123, 43,181,137,199, 98,248,121,226, 4, 60,107, 28,144, 81,211, 52, 25,134, 94, -168,243,195, 33, 13,165, 88,233, 15, 20,151, 2, 68,212, 8, 23, 84,117,184,212,128, 27,157,174,166,211,138,218,110, 68,166,202, - 12,226,136,177,129,232,166,216, 72,248,148, 83,159,213, 41, 3, 58,199,247,101,136,115, 44,202,189,191, 58, 53, 62,165, 75,147, - 13,232,255, 0, 85, 84,225, 70,168,193,124, 22,212, 1, 92, 57,109,173, 42, 25,207, 92,107, 7, 94,247, 82,222, 44,120, 49, 37, - 54,166,153, 62, 27, 97,162,180,183,147,212, 19,228,122,244,251, 53,166, 60, 82,241,139, 69,219,203, 98, 69, 54,140,180, 86,247, - 30,234,150,139, 66,201,183, 25,149, 29,233,234,185, 42,196, 70,134,169,113,219, 89,247, 70,154, 91,161,107, 46,114,242,132,100, -244,206,153,205, 97,168, 2,158, 4, 44,100,219,125,135, 64, 78,228,219,222, 73,244,222,221,174, 76,131, 35,204,179,124,218,130, -135, 45,164, 51, 85,202,227, 76,106, 62,206,255, 0,109,219,126, 90, 70,190,103,145,136, 84, 93, 78, 72, 23,191, 48,247,123,113, - 54,107, 98,106,146,105, 9,180, 41, 21,123,162,141, 80,151, 62,153,110, 91,228, 81,105,212,218,178,156,241, 34, 77,169, 72,130, -226, 75, 2, 57,229, 90, 91, 71, 95, 19, 25, 61, 49,174,102,239,183, 16, 27,245,196,245, 64, 82,110,171,182,181, 46,217, 96, 6, - 35,218,212,137, 51, 32,219,108,198,105, 92,201, 85, 69,199, 30, 6,166,164,128, 10,220,112,144, 72,251, 53,214,202, 31,178,178, -163,118, 58,154,214,227,110,196,250,141,229, 94, 90,234,215, 82,232,240, 89,168, 70,166, 84,170, 4,190,168, 41,121,249, 0, 76, - 90, 29,119,151, 56, 9,248, 73, 25,214,146,202,219, 91, 51,104,184,161,111,104, 55, 2,101, 83,114, 54,198,194,191,169, 77,110, - 68,221,177,164, 63, 85,175,214,237, 88,241,211, 82,147, 76,141, 78,128, 22, 91, 87,142,150, 98,205, 74, 85,132,248,171,248,142, - 53,173,150, 83, 84, 83,203, 81, 44,142,139,160, 27, 2,160,233, 3,114,117, 16, 12,141,127, 70, 80, 9, 35,125,241,233,239,130, - 41,224, 38,103, 13,117, 54, 67,153,205,226, 87, 28,112,190, 95, 45,125, 92,210, 83, 86,187,242,226, 42,178,174, 80,149,113,165, - 44, 65,229,100,134, 4,141,150,122,141, 81, 51, 73,162,237, 30,168,196,225,210,109,131,180,183,158,251, 93,182,173, 90, 77,131, - 96, 89,181, 75,242,173, 86, 98, 49,102, 9,183, 41, 18, 99, 82,213, 61,169,147, 28,108, 26,115,213,233,208, 41,241,139, 73, 89, -155, 50, 88, 98, 57, 82,144,225, 71, 44,173,110, 47,174,107,174,254, 98, 13, 58,249, 85, 6,131, 87,171, 39,220, 44,241,181,244, -153,180,166, 32, 5,149,154,122, 42,162,227, 19, 75,165,128, 71,188, 56,178,174,115,204, 82,145,128, 36, 3,237,235,223,234,222, -215,112, 55,182,219, 31, 86, 98, 61,181,187,220,112, 95,208,183,126,253,180, 97, 54,220, 21,109,191, 13,155, 89, 33,113, 54, 95, -106,218,165, 50, 18, 40,148,150,231,154,107,198, 55, 42, 67,242, 41,179, 93,113, 42,113, 74, 86,162, 97,177, 48,209, 39,113,161, - 58, 64, 13,211,225, 75,148, 51,140, 36,165,190, 84,143,159, 65,171, 75,135,178,168,107,242, 90,172,214,180, 51, 59,234, 16,134, - 17,190,133, 64, 20, 55,158, 54, 2, 70,146,225,136, 0,174,157, 43, 97,185,243, 63,233, 63,244,231,241, 66,159,196,102,225, 15, - 14, 51, 37,224,188,143,132, 9,142,161,114,156,207, 55,165,122,154,211,180,201, 83, 95,148,230, 89,116,181,212,212,192, 8,224, - 5,150, 25,142,186,190, 84,124,245,138, 25,117,109,141,230,157,201,225, 47, 99,174,184,147, 81, 37,251, 42,185,185, 27,109,239, -116,234,109, 66,219,122, 4,155, 82,247,170, 85, 97,120, 77, 63, 82,121,198, 42, 45, 83,110,106, 65,247,182, 36,165, 14,184,226, -150,194, 25, 9,113, 3,110,182,151,139,125,212,183,132,104, 23,139,113, 55, 18,137, 24, 33, 42,171,202,150,138, 77,231, 10, 58, - 80,148, 41,215,106,105,101,113,238, 23, 2, 0,109, 6, 99, 41,127,224, 0,190, 84,115,174, 89,251, 50,110,182,111,109,161,226, - 3,101, 36, 58,211,149,138, 21, 94,218,222,203, 78, 35,202, 81, 46, 82,231,199, 69,129,126,193,167,180, 63, 93,214,103,194,179, -170, 50, 48, 15, 42,103, 21,168, 17,147,174,130,217,182, 49, 51,154, 91,177,188,102,144,164, 58, 35,144,191,242,169, 25, 99,159, -148,124, 72, 7,226,207, 80, 49,207,131,216, 83, 92, 69, 69, 29, 6, 99, 95, 73, 34,235, 8,250,148,236, 9, 14, 17,197,138,133, - 2,215,210,116,217,110,164, 91, 97,105,119,134, 62, 33,208,248,151,225,118, 89,196, 28, 81, 28, 85,249,213, 91,213,189, 89, 99, - 36,143,237,143, 83, 41,169,117,146, 89,165,169, 6,105,139, 75,170, 73,228,145,245,134,150, 73, 9, 44,122, 97,110,111,221,149, -120, 67,165,189, 58,161, 34,214,201,105,134,233, 55,148, 69, 83, 11, 50,221, 90, 92, 68, 40,213, 72,110,200,135, 46, 73, 41,108, -171, 14,167,245, 84,130, 65,200,211,166, 94,171, 84,102, 51, 47,194,143, 89,131, 9, 5,184,240,105, 85, 40,147,218, 74,222, 40, - 89, 97,227, 2, 67,137, 97, 78,252, 5,254,110, 85,114,132, 39, 9, 72, 32,233, 93, 14,201,122, 65,143, 22,156,212, 69, 86,100, - 46, 44,135, 38, 57,135, 33,219,180,231, 22,234, 83, 60,161,192, 10,170,170, 8,144, 33,178, 71,233, 29, 30,242,191,208,181,133, -191,182,125,129, 22,137, 24,184,219, 16,105,244,122,116,229, 24,172,196,140,227, 51,106, 82, 37,172, 0, 92,153,226, 37,249,213, - 57, 83, 22,165, 18,225, 82,222,113, 69, 74, 9, 71,234, 68, 9,208,198,209, 94,219,218,228, 15, 83,112, 65,184, 62,227,110,189, -109,178,169, 62, 83, 5,218,149,249, 37,181, 42,198, 87, 89, 80,199,253,217, 86, 70, 70, 98,204, 20,146, 89,197,201,101, 22,230, - 59,242, 41,215, 69, 77, 73,128,236, 67, 18, 58,167,154,138,231, 60, 4,102,158,150, 80, 82,130,218,157,115, 45,198,101,174, 84, -165, 1, 68,114, 52,130,156, 99, 89, 45, 34,212,134,228, 73, 16,146,227,205,181, 1,201, 78, 77,171, 38, 42,218,143,227,144, 4, -201, 12,201,115, 36, 71, 12, 32,165, 43, 3,226,248,212,144, 10,146, 53,126,180,172,233, 73,154,154,212,168,202, 93,197, 80, 97, -136,104,140,211,242,100,192,162,196,109,194,166, 41,208,221,148,163,201,135, 23,227, 62,232, 78, 95,127, 36, 0,218, 27, 1,238, -160, 90,138,170,136,112, 34,196,122,116, 24,179, 26, 97,224,201, 66,151, 91,158, 22,121, 26, 8,112, 2,184,136,155,133, 28, 30, - 89, 15, 32, 1,204,132,117,220,138, 25,100, 69,141, 33, 42, 95,185,185, 36,108, 64,216, 41, 3,125, 76,119, 96, 54,234,214, 58, - 53,249,220, 11, 78,232,142,144,194,128, 23,101, 1, 6,175,214, 62,103,112,219,249, 82,197, 84,238,108, 17,110, 52,139,118, 47, - 29,184,225,215,110, 42,187,173,184,204,207, 72, 80, 85,167,183,182, 36, 9,173, 70,184,111,106,192, 66,170,116,219,106,146,227, -200, 80,164, 50,235, 10, 77, 66,191, 84,117, 10,106,153, 79,228, 73,241, 36,174, 36,119,184, 21,190, 59,243,185,156, 69, 84,159, -170,238, 77,125,233,212, 64,224,114,153, 96, 80,157,149, 74,219, 91,113,168,200, 9,139, 79,161,218,173,191,225,204,247,118,130, - 18,103,207, 18,106, 18, 92, 10,125,231,194,214, 80,151,139,218, 61,196, 11, 91,199,196,197,237, 22,149, 81, 84,157,189,217,229, -191,180,182, 2, 88, 11, 17,100, 68,160,212, 84,221,239,112,178,210, 9,241,102,214,111,225, 52,151, 48, 84,168,148,168, 76,161, - 74,109,180,160,115,231,137,235,103,118, 56,127,147,104,217, 55,156,251,107,111,175,235,178,220,141,117, 86,109, 75,154,123,113, -238, 29,183,163, 87, 2, 87,106,211,239, 74, 50,150,145, 64,189,234,148,231, 29,158,154, 36,149,174,165, 75,167,166, 52,138,188, - 24,138,159, 21,133,236, 83,112,252,185,180,169, 8,169, 20,176,234, 0, 18, 88, 7,176, 39, 89,211,114,119, 4, 70,189, 44,161, -148, 22,190,159, 75,188, 43,225,207, 12,190,140,158, 22,229, 62, 49,120,177, 11,207,199,124, 79, 74, 43, 96,166,138,138, 92,199, - 54,166,167,120, 99,153, 50,252,166,134, 37,121,162,150, 40, 36,137,243,154,231,228, 65, 75, 44,172,185,141,117, 61, 12, 49,202, - 64,184,109,119,103,132,181, 74,129, 79,134,194,135, 43,190,237, 21,191, 29,100, 96, 37, 40,117, 73, 82, 99, 35, 32,124, 88, 42, - 63,170, 53,226,221,219, 54,154,144,210,159,144,184,110,188,191, 9,111, 50,130,176,158,110, 80, 84,251,171,202,128, 1, 93, 73, -229, 25, 56, 37, 0,140,233,155,215,238,236,178, 81,245, 6,230,196,184, 38, 72,117,114,146,204, 10,157, 18,124,222, 68, 55,238, -229, 13,192, 85, 62, 51,171,139,134,207, 35, 41,140,233,231,202,146,147,144,117, 96,166,239,230,251, 91, 78,170, 52,187,154,100, -238, 69,175,198,143, 95,161, 83,106, 18,154,101, 79,165,231,152,117,164, 67,133, 45,134,212, 82, 91,194,156, 5, 45, 44,164, 2, - 66, 84,155, 34,147,133,243, 36,165, 20,116,217,188, 35,151,238,126, 97, 4,254,177,125, 68,239,211, 82,223,173,172, 0, 24,167, -179, 47,246,170,125, 30,232,243,104, 31,139,124, 24,227,142, 30,161,169,102,142,147, 50,172,203, 50,121, 41,229, 42, 69,218, 3, - 30,118,241,202, 0,243,200, 41, 94,165,129, 22, 42, 88,227,163,116,203, 17, 8,185, 93,183,106,208,252, 38,221, 75,239, 69, 82, -148,212, 98,226, 86,217,118, 44,165,167, 9, 65,101,223, 60,148,144,181, 96,168, 43, 0,252,174, 91,214,181,183, 10,117, 86,179, - 50,153, 73,166, 83,194,214,252,233, 83,209, 26, 43, 44,162, 64,140,219,206, 58,234,210,112,235,191, 11, 64,100, 44,244, 4,168, -145,172,123, 98,119,186,189,184,148,118,141, 70,148,197, 50,191,111,207, 66,201,167,161,249, 52,249,241, 42,212,229, 7,204, 15, -126, 66, 92,110, 3,140,161, 73,118, 19,202, 81, 97,108,148,161,199, 27, 91, 78,107, 86,119,238,216,221, 43,230,252,250,182, 13, - 58,183, 46,147, 70, 13, 38, 4, 56,116,185,179,162, 69, 46,180,223,141, 81,142,184,140, 41,147, 41,114, 84,242, 75,171, 82, 84, -194, 91, 72,230, 64, 90,214,181, 33,200,201,170, 43, 89, 94,208, 24,128, 15,166, 66, 20,216, 3,112,111, 96, 88,110, 78,159,118, -155,220, 99,160, 60, 98,250, 99,112,207,134,255, 0, 71, 46, 29,250, 64,120, 83,195, 50,248,169,148,241,245, 69, 30, 93,144,193, - 67, 79, 83, 28, 82,215, 85,189,122,153,115, 32,105,154,178,134, 26,105,168,101,163,146,156,211,189, 75,102,130, 44,173, 68,114, - 77,207, 71,110, 15, 18, 59, 61, 18,251,183, 45,234,180,107,233,187, 1,250,171, 17,238,235,214,213,164, 83,170,247, 53, 22,146, -247, 59,114, 43, 22,149,141, 85,159, 17,119,100,134, 63, 68,234,163,187, 34, 18,164, 53,206,152,138,117,244,161,183, 58,193, 87, -225, 15,135,235,154,206,165, 93,187, 71,198, 37,215,186, 16,174, 74, 84,106,197,183,252, 7,217, 27,135,115, 66,233,111,133,248, - 82,110, 88, 27,108,185, 18, 44, 98,226,138,217, 76, 74,176, 98,168,211,208, 31, 14, 67,113, 0, 40,199,138, 77, 58,219,219, 50, -244,105,201,133,114, 94, 12, 56,227, 82,225, 41,246,106, 20,107,126, 74, 1, 10, 21,105,145, 29, 83, 87, 29,105,183,135, 90, 99, - 14, 24,108,168,230,161, 33,210,145, 21,121,134,197,241,157,196,167, 13,119,204,187,239,101,247, 94,228,180,103, 85, 93, 74,238, -122, 27,239, 11,130,196,190, 89, 74, 3, 65,139,247,111,234,106, 52,187,152, 37,129,200,203,193,152,211, 98, 54, 3,112,101,197, -108, 4,133,235, 56, 58, 10,228, 87,202, 71,178,152,134,242, 75,119, 19, 27,222,225, 88,150, 31,254, 96, 54, 34,214,141,213,129, - 30, 77, 63,251, 74,190,146, 28, 63,196,245, 21, 94, 41,241, 81, 90,138,137,238,120,103,135,232,114, 90, 51,145,166,250,161,204, - 42,243, 28,191, 56,115, 80,172, 17, 36,201,106, 30,171, 49,165, 99, 58,215,215,101, 85,180,199, 46,155,165, 84,250,206,231,112, -167,186, 84,202,229, 58, 84, 41,147,169,133,248,238,197,175, 91,119, 93, 18,221,187,232,146, 84,224,168,218,183,125,171,122, 80, -169,146, 69, 62, 91, 77,165,197, 50,182,199,186,202, 90, 37,197,125,153, 76,161,221, 73, 67,102,161,181,186, 27, 75, 97,238,133, -149, 75,174, 53,111,223, 86,211, 87,109, 54,213,185, 35, 77,146,237, 17,137, 14,200,167, 84,169, 77, 86, 23, 24,190,212,104, 85, - 56,114,217, 98, 72, 75,241,159,101,166,228, 0, 16,240, 9,226,206,213,123,125,246,154,253,183, 26,179,248,203,225,125,202,139, - 46,178,168,179,235,251,104,229, 22,255, 0,179,166, 52, 82,164, 41,247,246,211,115,158,110,161, 69,150,180,149,143, 14,155, 84, -150,134,210,172, 54,180,249,236,206,213,123, 69, 61,143,214,236,216, 85,123,123,115, 55,238,195,166,195,122, 53,197, 19,108, 46, - 26, 79, 16, 44,236,253, 26,226,128,250,223,131, 85,141,183, 84,234,188,232,106,173,199, 90,212, 89,142,137, 15, 83, 81,144,125, -209,101, 40,228,141, 47, 10,102,180,149, 86,154,156, 24, 92, 29,108,129,135,154,226,204, 2, 44,137,115,111, 54,226,254, 93,182, - 24,147,120,185,244,188,240,119,233, 7,195,249, 54,103, 93, 17,224,159, 17,114, 33,203,106,209, 45, 37, 92,121,173, 8, 71, 34, -150,170, 58,150,200,101,166,150, 41,220, 61, 44,139, 5, 76,112,171,213, 71, 20,136, 39, 4,118, 6, 29,186,134,194, 27,148,195, -193, 62, 44, 68,187, 21,106,102, 84, 30, 70, 85,205,142, 80,158, 87,201, 81, 7,153,192, 0,192, 80, 64,211,149, 66,165,180,203, -136, 67,104,240, 27, 90,130,130, 17,226, 37,166,148,162, 1, 67, 73, 94, 66, 83,252,227,140, 39, 39,160,215, 35, 46,223,110, 95, -179,178,219,105,233,244,219,195,120, 47,233,139, 89,112, 67,182,118,102,191, 77,247,149, 21,115, 41,196,213,175, 41,244,200,241, - 80, 85,142,139,201,194,137, 9,207, 77,115,159,136,255, 0,164,222,229,137, 30,163, 15,134,190, 13,228, 85,153, 9, 87,213, 91, -165,191, 87,204,167, 45, 40,174, 45, 76,182,204,169, 86, 14,216,198,101,228,255, 0,133,202,109,178,212,219,137,132, 41,194,148, -158, 96,180,131, 37,202,248,118,182, 90,133,138, 42,118,185,221,117,133, 75,133, 32, 29,216,168,185,189,236, 14,163,109,129, 0, -219,143,243, 63, 16,184, 90,150, 55,105,115,232, 42,165, 31,169, 77, 42,212,177, 32, 14,130, 18,226,224, 0, 53, 57, 0,216,238, - 55,196,195, 45, 68, 22,211,205,146,176,133, 54,151, 20,132, 15,133,229,231,144, 40,224, 37, 5, 65, 39,151,155,148, 18,158,152, -235,167, 48, 77, 75,205,166, 35, 10,241, 36,158, 64,164, 52, 60, 79, 9, 9,207, 48, 83,160,114,149,103,148, 96,103,182, 73,215, -230, 7, 43,219,203,237, 79,157,190,246,230,253, 61,196,180,212, 75,181, 94,156,213, 51,101,233,182,221, 22,223,225,210, 69, 2, -168,227, 11,169,218,181,125,167,162,176,212,122,212, 25, 8,142,218,126,176,154,244,170,211, 68, 7, 88,168,182,234, 82,177,213, -203,167,233, 12,113,211,199,133,235,182,188, 54,240, 99,176,227,101,238,251,254, 37, 46,135, 81,183,246,214,113,190,247, 95,112, - 47, 39, 98, 37,203,129, 54,157,199, 86,136,195, 22, 53,140,193,106, 91,252,225,149,204, 98, 19, 75,118, 84,180,165, 7, 18,169, -178, 74,170, 69, 51, 56, 73,209, 23, 81,210,224, 42,219,115,204, 50, 5,109, 34,219,149, 87, 3,115,219, 16, 36,241, 71, 32,204, - 22, 85,167,138,163,219, 12,129, 32,128, 37,228,152,177, 1,116, 88,216, 92,246,107, 17,218,230,195, 19,125,171, 92,246,205, 30, - 90, 32, 84,171,244,168,149, 5, 16, 61,205, 83, 89,247,180,147,216, 56,218, 23,148,121,247,198,178,122,125, 22, 5,114, 40,154, -138,154, 22,210,134, 80, 99,180,183,112, 79,162,136, 1, 95,118,123,235,152,220, 17,123, 63,247, 3,103,237, 26, 77,219,197, 85, -255, 0, 51,114,119,174,160,202, 42, 21, 90, 12, 74,180,170,149,181,104,202,120, 37,197,211,222,171, 73, 81,114,229,171,182,181, - 40, 63, 37, 88,100,184,149,120, 41,228,194,143, 75,153,101, 48,185, 91,107,153,134,155, 1, 8,109,165, 41, 41, 74, 64, 1, 32, - 4,224, 99, 3, 80,103, 78, 51,204,101,157,185,180, 57, 21, 10,146, 34, 81, 20,149, 19,184,236,206, 95,148,177,131,216,104, 15, -110,168,167,108, 60,209,182,123, 57,246,138,169,146,133, 91,117,142, 38,105,152,127,215, 43, 89, 24,145,251, 10, 7,241,197, 84, -154,117, 14, 91, 72, 18,147, 35, 46,114, 97,104, 83,107, 42, 39, 25, 0,249,254,115,167, 66, 11,229, 77,120,141, 0,191,209, 21, - 33, 25,229,241, 84, 82, 74, 83,146, 59,103, 90,221, 94, 77, 82,101,118,154,148,130,244, 86,221,202,228,255, 0, 60, 39,160,229, - 89,254,119,200,247,211,203, 6,164, 88,105,150, 65,236,148,131,147,213, 56, 24,206, 62,221, 45,195,237,153,206, 43,169, 51,119, - 73,100,164,125, 34, 72,211, 64, 97, 96,110, 1,191, 81,243,214,210, 12,210,138, 24, 41, 40,102, 89, 57,178,213, 33,105, 1, 32, -244, 32,111, 96, 45,125,246,219,221,139,140, 97, 48, 58,236,154,131, 46,153, 46,146, 87,204,146, 82,132, 15,242,109, 36,167,167, -132, 6, 59,119,206,190,200,170,100,132,160, 21, 41, 56, 1, 36,134,210,133,100,156,114,158,195,191,225,170,166,170,211,105,248, -149,212,255, 0, 59, 56, 36,156,100, 15, 64,113,246,235, 24,171,213,226, 60, 10,142, 60, 84,244, 75,137,232,164,103,245, 65, 82, - 71, 80, 58,100,117, 7, 79,209, 82,242,147, 69, 59,116,245, 27,159, 93,250,111,240,235,241,195,116, 85,144, 77, 56, 50,195,229, - 27,121,122, 40, 22, 2,202,123, 1,254, 33,247,226,229, 38, 74,212,210,138,159, 75, 96, 2, 2, 89, 3,156,146, 72,192, 46,118, -242,234, 6,176,138,131,208,130,143, 59,105,144,180,243, 97,114, 84,183, 74, 71,117, 30, 85,124, 41, 72, 32,103,160,201,234, 15, - 82, 53,100,169,214,165, 52,218,131, 78,182, 91, 7, 5,229,115, 43, 41, 62,101, 9,253, 85, 99, 29,115,128,122, 16, 53,132, 78, -168,190,250,242,169,137, 87, 33, 4, 48, 26, 80,111, 0, 28,172,132,175,226, 56, 4,128,162, 71,159, 77, 32,237, 34, 54,153, 1, - 86, 59,239,247,110, 15,243,248,219,221, 40,164,162, 89, 84,201, 21, 66,136,191,195,112,122,116, 32, 11,143,131, 90,221, 78,196, - 28, 93,170, 53, 86,220, 45,182,214,121,193, 56, 75, 24,202, 63,156,175,242,120, 8, 79,194, 49,147,208,172,140,107, 28,144,185, - 14,165,196,243, 54,128,227,107, 95, 40, 1,247,148, 10, 82,160,148, 36,114,161,156, 18,146,126, 53, 99, 7,225,193, 26, 21,201, -165,223,209,170, 87, 43, 69,196,145,224,199,109, 32, 21,142, 84, 37, 68,147,135, 50, 73, 61, 7,235, 99, 61,180, 42,150, 9, 83, -110, 45,199,193, 66,138, 91, 83,156,173,178, 57, 84,149, 20,132, 36, 4, 47, 4,158,234, 33, 74, 7,212,107, 34, 85, 36, 91,174, -195,111,187, 14, 2, 4,136, 88, 88, 50,239,114, 9,216,252, 64,239,107,131,210,253,111, 96,106,135, 9,241, 91, 90,152,154,224, - 81, 10,117,183, 66,150,132,132, 32,132,199, 90, 18, 18,211, 62, 25,202,136,229, 86, 80, 71, 55, 78,180, 86,211,138, 90,218,109, -210,132,173, 42, 40,195, 97,226,160,188,146,149, 61,202, 17, 24,252, 7, 4,147,128,148,146,114,179,143,162, 72, 66, 20, 93, 82, - 91, 32,243,151, 0, 13,184,226,121, 87,250, 54,210,216, 3, 57, 40,248,112, 84, 48,188,119,233,112,142, 86,234, 29, 75,124,173, -161,158,235,112,133, 50, 75,156,174, 56,246, 66,135, 48, 3, 10, 10, 0,128, 64, 10, 4, 29,108, 70,250,118,191,227,252,183,237, -110,134,223,125,175,163, 80,140,221,139, 15, 94,194,214,251,186,251,205,239,140,110,108, 82,150,189,228, 33,212, 54,225, 10,142, - 29,108, 40,168, 1,209, 40, 65, 63, 3, 28,169, 5, 42,200,193, 95, 80, 71,124, 14,168, 18,210, 86, 21,203,202, 82,160, 8, 0, -169, 41, 24, 9, 81, 60,184, 87,196,165,224, 12, 28, 28,231,190,156,202,203, 43,100, 60,180,187, 46, 83,142,128, 90, 68,167, 20, - 70, 74,148,144,167, 1,235,149, 35,157, 71,249,216, 72, 0, 37, 61,155,106,154, 76,153, 41,136,149, 4,169,231,163,196, 66,202, -129, 9,117,245, 33,158, 98,160,112, 71,136,224, 32,158,132,126, 26, 84, 48, 2,250,134,223,233,191,126,157,125,253,112,216,241, - 18,202,161, 65, 55, 29, 0,222,246,181,135,238, 29,126,252, 64, 99,219,127,112,181,112,123, 74,183,173,166, 28, 82,255, 0,130, -214,206,212, 89,178, 82,176, 66, 90,159, 67,176,105, 47, 75, 67, 68,147,204,215,137, 82, 24, 35,204, 30,154,228,170,206, 51,216, -231,166, 58, 99,237,251, 53,183, 60,121,238, 60, 93,220,227, 99,138,189,200,132,233,122,157,114,111,133,244,154,114,249,150,180, -154,125, 6,168,171, 94, 25,104,172,228, 50, 89,161,161, 72, 29,130, 92, 0,116, 26,212,101,246, 56, 61, 59, 96,227, 63,241,212, -247, 43,140,165, 5, 18,176,179, 8,144,144,122,130, 84, 18, 62, 32,155, 28,114,150,121, 50, 85,103,185,197, 66, 29, 81,207, 87, - 80,202,123, 21, 51, 57, 82, 15,189,108,126,252, 8,178, 15, 79, 76,232,117,245, 36,142,192,224,252,191,179, 85,214,174,254,137, -207,231,246,104,101,224, 28,231,161,235,248,233,200,126,252,104, 1,220,109,129,221,230,199, 97,142,189,189, 51,215, 63,159, 61, - 14, 64, 0, 96,247, 29,126, 71, 68,169, 89, 62,120,252,245,208,202,238, 79,204,253,154, 92,108, 5,240, 48, 58,192,202,135, 67, -215,243,231,249,198,133, 81, 3, 57,249,224,119,237,229,162, 28, 39,169,249,249,126,125, 52, 26,200,251,199,127,179, 74, 45,198, -227,126,216,200,253,248,160,178, 50, 58, 3,211,207, 63,184,253,186, 90,240,163,147,159,195,236,210,210,184, 24,175,170,168, 61, - 49,215,167,225,161, 16,112,122,156,116,213, 97,248,103,161,251, 51,164,216, 90,227,174,173,255, 0, 60,100,245, 38,214,190, 14, - 73, 56, 0,142,152,239,145,247,116,213, 66,176, 7, 82,172,142,216,249,246,207,222, 52, 58, 84, 83,211, 29, 7,111,236, 58,242, - 80,162,174,101, 47, 8, 61,128,206, 71,222, 7,174,116,131,222,222,236,101, 69,254,127,150, 46,141,168, 96, 0, 57,137,206, 73, -254,145,243,192,215,213, 44,173, 73, 8, 39, 9, 56, 87,124,103,247,245,254,141, 80,105,188,242,146,174, 81,158,128,117, 61, 49, -215, 25,244,209,205,167, 57,192,206,127,164,117,237,249,237,164,172, 79,207,166, 48,109,219, 21, 90, 56, 35, 35, 32,143, 46,221, - 61,125, 15,125, 28, 57, 72, 79,160, 62,127,205,251, 62,125,244, 50,121,112, 0,252,253,190,154, 37,176, 85,142,192,124,135,244, -231,207,166,177, 97,123,227, 24,184,178, 15, 76,159, 82, 63,163,247,234,184, 24, 57, 24,201, 57, 7, 31,135,219,161, 16,175, 35, -231,219,250, 49,162,146,113,220,245,232, 65,198, 59,246,199,175,246,233, 22, 22, 36, 97, 50,187,220,155,223,231,255, 0, 56, 37, - 43, 8,199, 58,186,159, 32, 59,244,249,104,146,238, 70,113,140,249,250,227,183,159, 77, 4,113,144,190,153, 63, 44,227,184,200, -252, 53, 81, 36,116, 32,231, 29,201,251,125, 7,150,146, 98, 58,223,225,130,219,221,123,117,193, 41,119, 24,248,249, 64, 32,224, -227,175, 94,160,122,244,206,167, 39,236,166,220,118,247,115,129,157,165,148,252,148, 73,171, 88, 74,169,237,245, 93, 33, 73, 46, - 54,186, 44,133, 38, 1,113, 61, 74, 65,132,228,126, 92,227, 35,168,212, 42,118,215,108,110,189,211,185, 98,219, 86,181, 49, 83, -231, 73, 5,229,186,227,137,139, 78,167,194, 66,128,145, 85,173, 84, 93, 79,135, 74,164,183,252,247,156,234,162, 66, 26, 67,174, -148,160,203, 23,217, 2,214,215,112,241,106,238,110,209,215,119,102,143, 34,181, 87,151, 2,239,168, 76,172, 75,110,139,108, 53, - 53,136,201,133, 34, 21,179,239,238, 5,184,218, 82,218, 11,139,119,149,215, 15,196, 91, 66,126, 17, 4,227, 9,104,167,142,154, -137,228, 6,169, 95, 86,155, 95, 74, 21, 96, 75,158,136, 11, 5, 3, 81, 26,142,194,230,246,184, 60, 26,124,214,135,136,167,204, - 41,105,100,124,178, 88, 36,167,158, 80, 44,129,137, 73, 35, 0,159,180,193,212, 2, 20, 18,129,238,218, 65, 23,235,214,231, 75, -174,219, 59, 83,184, 21,235, 93,151, 30,184,224, 91,147, 13, 27,193,104,188,236,105,178, 18, 35, 38,162,134, 82, 50,234,163, 33, -213,188, 0,207, 86, 70,181,171,102,120, 8,183,217,222,155,115,124, 46, 59,138, 53,229,105,208,108, 90,123, 86, 21, 10, 66,223, -155, 42,179,121,215, 33,166, 69,211,124,221,210, 95,234,244,211, 45,231, 83, 25,177,128,216,198,122,164,107,107,162,239,150,195, - 32,148, 57,188,187,110,233,193, 75,141, 34,227,167, 60,130,146, 48,180, 45, 33,226, 20, 8, 39, 35,207, 26, 14,226,227, 7,134, - 29,183,182,107,183, 12,173,200,163,213,169,246,180, 23, 39,205,163, 89,141,125,115, 86, 84,102,186,172, 83,169,144,129, 84,133, -127,178,128,126,237, 65,225,142,150,158, 82,226,162, 33,169,116, 0, 89,111,114, 69,200, 23, 59,157,133,183, 61,135, 91, 99,179, -242,190, 62,226, 28,135, 33,205,114,204,161,165,203, 70,109,205,246,202,132, 82, 30, 74, 87,138, 56,249, 76,250,117, 70,177, 5, -155, 76,136,234,116, 85, 84, 45,129,101, 97,144,207,224,179,103,238,181, 56,183, 81,123,208,158,152,250,158,156,245,169,125,220, - 20,116, 60,235,202, 42,121,197, 48,137, 42, 66,150, 73, 60,184, 78, 0, 56,244,208, 91,129,114,240,113,236,166,216,187,155,114, -235, 20,202,117,183, 21,229,201,153, 69,162,189, 37,138,222,236,111, 13,232,227, 74, 84, 26, 29, 62,109, 77, 74,149, 44, 56,247, - 39,140,233, 40,139, 17,165, 41,231,112, 0,207, 27,248,128,250, 66,114,226, 82,170, 52,190, 16,184,115,190, 43, 19, 3, 14, 52, -141,201,220,155,106,174, 41, 84,247,112, 66,100,195,183, 41,209, 86,185, 78,160, 14, 96, 30,113, 8, 56,248,186,103, 81,143,226, - 11,136,157,247,226,127,114,100,238, 30,253,238, 45,126,244,188,158,105,214,162,199,173, 62,168,205, 81,169,238, 40,172,211,168, - 86,223,192,221, 6,154, 50, 7, 43, 76,160,168, 1,206,181,158,186,127,203, 56,124,207, 46,161, 18,211, 34,253,166, 54, 14, 6, -215,180,103,204, 24,247, 50, 42,129,179, 89,197,215, 20,239, 27,253, 36,248,135,244, 13, 71, 12, 80,113, 94, 97,196, 20,179,105, - 38, 7,168,168,108,188, 50,127,118,243,135, 96,181, 38, 34,111, 20, 96, 58,169,220, 60,100, 95, 24, 39,180,115,137,253,201,226, -247,127,170,251,223,186, 82, 27,254, 16, 94, 74,118,124, 26, 44, 87, 92,118,155,105, 91, 81,121,162, 91, 54,141, 31,196, 63, 13, - 58, 13, 59, 9,230,192, 47, 62,243,210, 23,241,186,117,175, 92, 57,196, 97,202,237,211, 57,208,178,252, 42, 34,147, 24, 1,211, - 46,149, 5, 18, 60,253, 6,173,251,228,231, 53,219, 29,128, 65,247, 42, 12, 6, 79, 41,200, 5, 73, 4,129,215,191,174,178, 14, - 26,216,118, 93,122,230,134,202,121,164,204,167, 68,139, 29, 9,238,183,223,119,194,101, 41,207,153,113,104, 31,126,172,212,141, - 41,120,124,197, 24,209, 26, 34,128, 46,118, 28,192,119, 59,147,183, 82, 73, 39,169, 36,239,142, 53, 53,117, 21,115,214, 86, 85, - 74,211,213, 84,180,178, 72,231,118,103, 42,204, 73,176,238,123, 0, 0,232, 0, 27, 98,109, 63, 71,223,128,234,125,203,195, 15, - 16,156, 74,220,244,174,123,199,114, 99,200,218,237,155,145, 45,177,136,116,123, 98, 92, 90,221,217, 83,134,149,167,225, 85, 82, -187, 18, 29, 56,186, 15,197, 30,152,164, 14,138, 57,216,168,246, 17,161,213, 31,142,228,117, 50, 90,146,235, 97, 10,230, 75,225, - 8, 56,228,115,185, 67,169,229, 41,229,239,204,112, 8, 58,236,151, 0,219, 99, 15, 98,184, 76,225,239,107,105,113, 83, 17,187, - 99,109,109,231,167,180,148,132, 41, 85,138,164, 38,234,181,105, 14,116, 28,206,174,124,199,201, 39,174,123,233,168,226, 23,134, -171,150, 93,110,226,220, 91, 38, 61, 58,161, 65,144,255, 0,214,146,168, 44, 62,182, 43,237,206,148,240,247,152, 52,168, 9,103, -146,167,207, 53,197, 58,202, 3,136, 63,166, 80, 94, 2, 65, 52,151, 19,209, 54, 99, 28, 89,138, 38,170,131,118,127, 82,142,117, - 40, 61, 55,137, 74,160,247, 13,239,215, 29,145,225,180,210,240,102, 89, 6, 69, 36,194, 24, 42,163, 73,100,212,214, 95,105,101, - 94,110,228,237,169,174, 22,254,128,108, 0, 3, 82,108,234, 84,116, 52,134,210,201, 41,147, 33, 50, 29, 8,240,203,143,186, 2, - 0, 83,220,201,207, 58, 67, 40, 7, 36, 0, 19,132,156,107, 99,104, 52, 8,210, 93, 98,116,150,210, 36,193,113, 47, 65, 13,129, -225,199,203,101,135,198, 79,235, 74,113,133, 41, 10, 89, 5, 32, 16,148,242,167, 36,170, 87, 15, 59,203, 71, 82, 20,230,223, 76, -148,128,134,151,205, 74,153, 75,168, 33,105,194, 64, 39, 19,144,162, 0, 37, 71, 41, 4, 99, 28,189,244,241,218,123, 83,186, 79, - 41,180, 35,109,238,133, 20,114,133, 45,113,162, 37, 61, 14, 28, 74,221,114,104, 72, 79, 81,147,216,245,198,162, 81,100,213, 74, - 64,146,146, 66, 91,182,134,244, 22,232, 13,237,215,211,210,214, 24,178, 78,125, 70,186,229,108,198, 24,237,177,102,158, 32, 0, - 54, 4, 18, 91, 96, 64, 3,222, 5,177,113,161,208, 12,134, 16,211, 10, 90, 34,143,242,202,115,224,151, 49,158,230, 50, 29, 74, -147,238,236, 18,160, 10,191, 89, 64,114, 35, 1, 74, 86,178,171,163,112,237,237,158, 85,185, 95,170,208,239,234,203,242, 38,132, - 82,227,109,214,216,222,251,153, 34, 51,212,224,196,176,253,106,153, 99,209,229, 46,149, 79, 64,228, 45, 41,208,217,144,176, 88, -142,149,168, 40, 7,150,209,216, 45,211,158,164, 57, 54,149, 73,183,217, 80,229, 46,213,234, 77, 72,113, 41, 0,142,127,114,166, -182,234,138,136, 63, 8,231, 66,124,250,119,214,136,251,111,106,123,151,194, 15,179, 87,116,183, 91,103,247, 82,225,178,183, 81, - 55, 54,223, 91, 16,111, 43,121,168,212,249,212,202,101,201,112,177, 6,177, 22,136,227,168,117,112,106, 47,198, 43, 67,115,185, -253,229,144, 74,152, 83, 75,194,132,166,147,135,179, 55,167,146,177,104,218, 8,163, 49,131, 44,171,101, 82,242, 36,105,101, 37, - 93,174,238, 0,210, 13,137,213,184,190, 34, 25,199,137,124, 27,150, 48, 25,157, 89,207,105, 98, 73,154, 90, 74, 25,209,101,153, - 68, 78,197, 69, 87, 38,162, 8,201, 42, 11,115, 17,137, 23, 64, 22,225,150, 51,124,116,238, 62,206,240, 93,121,221, 53,125,139, - 98,254,183,183,166,236,173,213, 46,123, 18,139,190, 78, 91,107,223,205,183,143,115, 74,157, 85, 27,132,254,217,209, 34,200,137, -176,244,148, 57, 59,154,223,149,118,189, 34,254,168, 6,195,212,202, 37, 1,178,229,101, 17,220,184, 46,123,134,236,174, 85,110, -107,134,183, 87,184,110, 58,228,233,117, 42,229,201, 93,156,253, 74,191, 90,168,206,125,114, 39, 77,169, 84,100,184, 86,235,239, - 72, 90,214,224, 4, 37, 74, 86, 72, 39, 36,218, 42,181, 73,149,138,165, 74,181, 92,157, 58,167, 88,172,212,165, 86, 43, 53,106, -148,217, 85, 42,173, 98,179, 80,115,198,159, 87,171,212,230,186,183,234,149, 55,158, 37, 78,200,125,199, 29,112,245, 90,142, 6, -128,109,101,110, 97, 36, 6,179,241,128, 71, 49, 62,185,242, 26,176,114, 30, 31,163,201, 33,178, 14,117, 76,191,106, 66, 5,197, -194,141, 9,251, 40, 52,128, 22,229,136, 85,214,206, 85, 72,164,252,120,250, 73,120,157,244,128,204,169, 36,227, 28,238, 99,195, -217, 60,113, 67, 69,150,137,165,120, 17, 41,193, 88,102,171,119, 98,213,213,195, 83,191,180, 77,245,112, 73, 61, 64,160,130,138, - 25,228,133,136, 90,148,234, 57, 93, 9,121, 9, 80, 90, 91,144,148,188,144,176,114,149,165, 14, 2, 18,224, 80, 4, 40, 96,130, - 50, 8, 58,204,169,155,143,113,209,211, 21,169,110,192,185,160, 68, 11, 17,232,183,173, 53,187,170,154,198, 82, 82, 61,205,249, -174, 9,212,229, 15,255, 0,131, 48, 54, 63,248,163,211, 24, 96,228, 10, 88,201, 41, 7,162,137,244,238, 63, 57,213, 53,164, 43, - 36, 14,185,200,252,159,150,159, 39,166,130,161, 52, 77, 10,202,163,166,160, 13,137,238, 13,174,167,222, 44, 71, 99,138,111,135, -120,167,136,248, 74,170,106,190, 27,206,170, 50,105, 42,192, 74,133,134, 66,176,213, 68, 13,249, 53,148,230,244,245,180,228,253, -170,106,184,166,129,255, 0, 94, 54, 24,116,231,239,189,238,150, 89,133, 64,254, 15,237,252, 36,248,206,123,141,131, 77, 48, 29, -151, 33,230,210,209,151, 80,170, 84,195,206,184,250, 26, 64,229, 8, 74, 50,160,149, 45,107, 8,109, 8,177,171,117,119, 10,108, - 7,169,170,189,110,207,170,159, 74,208,253, 57, 21,201,173, 71,113, 46,161, 40,144,133, 73, 74,196,165, 54,232, 78, 92,111,222, - 60, 37,149,168,148,124, 74,206, 0,166,219,230, 33,120, 36,117,206,124,251,143,219,175,170, 91, 74, 90, 19,207,241, 32, 19,200, -147,240,156,250,254,205, 37, 29, 21, 36, 32,133,167, 64, 24,223,236,130,111,182,228,145,114, 71, 98, 73, 54,218,248,156,102,190, - 58,120,209,157,242, 99,172,241, 87, 62,130,146,154,148, 80,197, 71, 69,153,213,101,153,108, 20, 34, 40,225, 52, 84,185, 86, 89, - 37, 30, 91, 75, 70,241, 68,139, 37, 45, 45, 36, 84,242,232, 13, 44,108,196,177,172,227,188,193, 37, 92,169, 75,105, 8,109,150, -208, 16,219,109,131,209, 13,161, 0, 37,180,228,147,128, 7, 82, 79,114,117, 72,146,163,205,129,140, 14, 81,216,140,129,158,184, -237,223, 94, 84,177,158,216, 4,224, 31, 32, 73,237,246,107,233, 9, 80, 79, 50,129,198, 79,194, 64, 35,215, 61,126,205,109, 95, -111, 47,109,189,216,170, 85, 2,233, 91,105, 10, 6,221, 0, 3,160, 30,158,131,165,177,229,212,133,160,131,128,125,112, 51,211, -236,243,208,105, 11,230, 60,201, 8,109,191,139,226,248, 78, 71,159,207,251,116,122, 20, 20, 50, 7,145,200, 61,199,151, 95,191, - 67,169, 36, 55,151, 49,215,161,201, 4,252,137, 0,246,233,161,179,111,219, 6,177, 6,221,251,126,255, 0,227,138,110,123,186, -192, 82,130,150, 8,200,194, 73, 3,182, 73, 31, 61, 75,227,232,215,112,195, 99,223,219, 35,198, 38,227,110,133,131,105,238, 13, -175,184,202,183,248,125, 93,173,121, 80, 32, 92, 54,253,118,207, 69, 45,203,170,246,167, 78,131, 84, 97,109,174, 60,137,213,122, - 35, 78,132,242,171, 48, 16,160,164,173,180, 40, 68, 24,149,143, 8, 54,158,138, 74,147,205,144,144,181, 99, 24, 3, 29, 15,109, - 77,123,217,103,184,103,103,189,143,246,187,116, 6,164, 81,171,123,149,186,219,227, 85,173,205, 79, 52,105,170,164, 82,174,168, -214,139, 78,199,144,180,167,195,143, 48, 82, 93, 67, 79,160,169, 10,102, 26,210,135, 57,138,185, 98,156, 99,155,193,146,101, 73, - 89, 80, 12,138, 37, 10,177,139, 6,150, 66,173,201,141, 9,232, 76,161, 9, 36, 16,136, 25,200, 33, 72,197,129,225,126, 86,115, -110, 47,162,164, 72,185,210,136,228,101, 7,117,187, 20,132,234,244, 26,101,111,190,214,223, 28,193,223, 63, 97, 79, 4,115,184, -194,185,209,179, 27,239,185, 54,175, 14,116,135,150, 47, 93,165,163, 83,105,149,186,237,191,122,205, 66,164,162,196,218,237,215, -185, 31,144,220,155, 36, 48,243, 62, 60,137,208, 39,207,167, 56,164, 69,140,229, 65, 78,120,204,111, 6,212,251, 26,125,155,123, -125, 58,216,185,109,203, 55,136,138,110,227, 80, 37,198,122,216,220, 26, 55, 21,119,221,175,121,219,245,200,177,194,145,114, 81, -170, 86,149, 42, 2,105, 21,166,212, 60, 80,227, 40, 75, 45,172,132,134,150,223,194,108, 27, 71,113,203,157, 91,184, 42,197, 34, - 81,147,122, 93, 21, 71, 34,115, 36, 46, 82,152,170, 10,100, 82,181,243,128,150,154, 17, 84,177,200, 6, 11,105, 81, 80, 1, 58, -222,155, 74,229,118,163, 38,164,121, 90,136,212, 8,204, 83, 34,180,202,131,110,158, 98, 36, 84,159, 83, 97, 28,172, 45, 43, 91, -109, 37, 72,230, 95, 43, 74, 4,164,144, 53, 71,103,220, 99,198,175, 58,200,217,245, 68, 48,132, 0,197, 3,242, 22,221, 8, 44, -154,100,147,169, 93, 83,188,174, 86,218,156,144,111,212,220, 79,225, 79, 9,228, 78,100,161,201,225, 89, 2,172,143, 33, 82, 89, -164,178,130,234, 9,180,107,204, 58,149, 35, 85, 80,157, 55, 14,113,212,219, 99,136,234,228,106,101, 18,155, 87, 66, 43,171,106, - 35, 20,230,230,213, 86,165, 86,106, 81,233,145,219,143,245,157, 94,162,202, 82, 39,213,158, 8, 74,228, 72,240,144, 31,125,213, -185,225,160,171,151, 78,181,189,187, 22,141,226,232,140,220,143,169,234, 75,115,193,110, 28,247, 27, 75, 82, 94,236, 27,137, 40, - 30, 71, 22, 72,232,147,202,162,122, 0, 78,185, 81, 30,244,240, 36, 85, 11, 97, 75,143, 66,134,205, 38, 36,144,114,151,170,110, -182,100, 75, 96, 4,171,162,144,234,163,165, 65, 32,245, 74,178, 8, 26, 10, 61,219, 41,136, 17,203,239, 31,124,142,204,154,156, -175, 13,210,158, 95,136, 52,201,108,142,169, 62, 50,148,126, 69,191,150,148,202,184,199, 54,167,208, 37,169, 53,106, 7,153,101, -243, 27, 0,162,250,143,152, 27,234, 59,146, 0,182,199, 21,248,142,186,130, 68, 16, 73,204, 22, 91,197, 37,200, 58,148,200, 0, - 63,105,108,186, 23, 99,179, 29,212,244, 27,233,106,113,119,182,151,183, 20,183,231, 10, 22, 90, 95,184,110,205,174,179, 85,117, -110, 45,213, 17,214, 92,183,173,234,168,126, 51, 38,204, 66,193,230,145, 91,105, 50,153,247,130, 7, 35, 78, 18,214, 74,210,172, -108,130,235,136, 99,157,106, 88,230, 57, 24,206,126, 30,184, 29,122, 99, 35,174,184,239,193,253,153,180, 27, 99,196,214,228,110, -244, 17, 42,218,187,248,132,179, 97,219,181,104, 40,144,201,180,230,222, 73,172,174,167, 38,226,195,235, 46,192,175,213,208,195, -104,125, 33, 94,236,228,180, 23,194, 91,114, 74,129,232,125,205,113, 42, 50,221, 64,113, 73, 41, 74,147,200, 62, 21,165,105, 39, - 60,201, 61,142, 2,178, 62, 90,181,184,106,180,102,212,111, 59, 48, 18, 60,132, 50, 0, 46,130,202, 66,144, 55,247,134, 61, 71, -223,105,215, 25, 75,194, 85,210,100,173,193,144,212,211,209, 46, 91, 68,149,130,172,222, 99,154, 8,239, 94,118,188, 98, 35, 41, - 2, 1, 17,229,242, 66,157,152,184, 14,149, 74,248,109,178, 71,136, 2,123,168,115, 2, 14, 14, 57,186,118, 32,228, 31, 62,191, - 45, 97, 51, 47, 98, 23,151, 29, 87,134,165, 30, 85, 12,144, 73, 56, 9, 36, 28,115,140,128, 50, 48,190,217,242,214,190, 84,238, -181,120,174, 53,206, 10,138, 20,251,121, 81,248,208, 14, 28,111, 62,153, 35,167,145, 94,177,148, 93,188,217,104,175,152, 41, 36, -165, 46, 12,115, 32, 15,137, 25, 36, 18,180, 96,127,181,202,144,175, 93, 74, 99,129, 80,108,110,126, 63, 15,221,249,252,113, 22, -167,164, 88,198,195, 87, 75,254, 23,239,215,227,252,142, 54,149,187,161, 46,158,100,184, 10, 85,203,158,101, 4,148,156,144,121, -194,199,192,114, 21,229,141, 90, 42,114,158, 91,107,145, 76, 8,113,208, 10,213, 17, 74, 45,161,212,100,229, 76, 41, 32,144,224, -234,174, 78,161, 92,159, 14, 20,113,166, 18, 37,213,201,202, 92,120, 40, 0, 57, 92, 36, 41, 65, 39, 56, 67,160,145,146, 15, 76, -158,152, 57, 32, 19,157,102,144,110, 4,175,225, 82,207, 50, 70, 72, 4,148,117, 57,200,207, 83,144, 6, 64,237,203,243,234,149, - 69, 58, 78,154, 36, 23,244, 61,193,236,111,235,211,249,140,110, 67, 81, 45, 20,162,104, 13,237,177, 83,114,174, 63,101,198,215, - 30,253,136,189,193, 83,190, 47,109,215,101,185,200,130,228,102,194, 92, 90, 75,164, 58,231, 42,146, 73,229, 80,113, 35, 60,189, -138,136,248, 74,128, 86, 58,234,234,212,199,221, 1, 78,200, 88, 33, 68, 16,142,102, 27, 82, 21,132,242, 40, 55,146, 82,112, 59, - 17,133, 39, 33, 64,231, 88, 13,198,183, 11, 6,169, 79, 9, 91,204, 2,185,108,130,176,149,181,132,149,201, 71,135,250,206,161, -180,146,226,123,173, 0,158,139, 29,113,232,181,233,174, 28,169, 77,128,142, 71, 27, 45,169,120, 83, 43, 79, 55, 50,121,143,249, - 64, 84,147,211,161, 24,193,202,134, 98,211, 43, 81,204, 98,153,246,107,216,216, 88,131,109,238, 59,250,223,241, 6,248,157, 80, -188,121,165, 42,212, 83, 34, 68,192,217,212,145,169, 24,117,235,185,235,117, 35,175,186,197, 67,227, 22, 64, 10, 60,141,168,243, -128, 10,146, 74,212, 91, 65, 32, 37, 74, 41, 42, 91, 32,227,252,152,234, 9,207, 49, 35, 87,149, 84, 92,140,217, 90, 25, 74, 60, -117, 4, 33, 47,165,213,199,195,201, 42,109,160,129,149,198,144,226,142, 19,206, 49,147,240,163,148,243,105,158,139, 82, 82,138, - 1,113, 92,142, 19,203, 33,183,156,229, 70, 87,204,203,109,242,184,163, 29,174,101,225, 33, 28,203, 82,148,148,148,231, 35, 87, -196, 84,214,134,138,188, 73, 40,112,151,217, 83,209,203,109,180,180,164,252, 94, 34, 22,162,183,100,103, 28,223,168, 83,130,148, -143,136,157, 47, 28,195,190,192, 88, 95,247,119,235,183,190,247,177,191, 77,244, 42,224,209,114, 95, 93,183,232,119,183,196,245, - 29, 59, 16, 63, 12,178,167, 82,117,101,214,158,116,143, 5, 24, 90, 23,206,135,176,149, 30,171, 28,152, 67,133,148, 37, 68,130, - 72, 82,136,233,216,106,111, 20,187,199, 75,216, 78, 31,183,187,123,107, 14, 3, 11,107, 54,178,243,187,194, 90, 57,118, 69, 74, - 29, 37,232,118,227, 17, 80,181, 15, 26, 67,151, 45, 70,140,218, 83,159,252, 98,186,121,105,253,153, 86, 47, 7, 9,115, 32, 43, - 45, 41,124,222, 48,200, 88, 62, 39, 83,200,159,140,117, 57, 42,192,233,231,168,229,253, 33,126, 36,209,101,112,247,183,156, 51, - 81,166, 20,220,123,253,118,139,190,234,105, 14,114,189, 19,107, 54,170,107, 47, 14,101, 54,172, 24,245, 77,192,149, 76,140,166, - 92,229,230,106,223,125, 65, 36, 5, 99,118,157, 26,170,122,122, 52, 39, 85, 75, 0,125, 66,117,118, 29, 62,202, 6, 59,122,116, -190,198, 41,159, 87,166, 83,147,230, 89,163, 16,134,138, 38,100,189,183,152,128,144,169, 29,124,210,178, 41,223, 96, 73,219, 16, -244, 92,153, 82,150,236,202,131,161,234,140,247,159,157, 80,125, 32, 97,234,132,215,151, 38,107,224, 96,116, 92,167, 94, 87,207, -155, 66,172,131,211,207, 61,115,246,127,110,136,115,169, 29,135,115,161, 87,230,174,152,245,239,216,121,254,124,181,105,160, 0, - 11,108, 63, 45,182,199, 34, 42,236, 13,205,207,174,253, 14, 6, 86, 50,113,249, 63, 47,150,135, 81, 10,242,192,235,159,159,204, -250,104,133,250,130, 20, 72,252,244, 26, 21, 71,161, 62,125, 79,223,165, 20, 18, 70, 21,192,234, 32,117,249,224,103,231,246,124, -180, 51,131, 57,234, 1, 4,245,209, 90, 17,194, 14,122,247, 57,199,203,231,165,199, 81,129,129, 85,211,167, 82, 79,115,242,244, -199,166,116, 42,200,207,108,117,199,219,215,207, 68,185,242,238, 7,159,111, 95,223,160,150, 79,126,152, 61,193,243, 61,127, 63, -118,148, 65, 97,210,247,249,255, 0, 92, 12, 82, 36, 2,122,129,247,254,255, 0, 61, 45, 81, 95,235,119,242,252, 62, 95,159, 93, - 45, 31, 3,108, 86, 29,251,103,229,162, 52, 42, 87,219, 61, 15,145,199, 76,131,229,170,129, 68,158, 94,108,116,207,111,159, 94, -190,189,244, 71, 2,221,108, 70, 14,195,173,190, 63,195, 7, 54,123, 21,125,223, 63, 67,162, 7, 95, 35,246,121,232, 38,240, 58, -100,147,243,252,247,254,173, 22,149,245,244, 62, 94,126, 95,102,146,193, 58,116, 56, 41,161,203,212,156, 99,200,252,243,216,104, -214,200,243, 0,253,248, 39, 64,165, 89, 29,191, 17,231,231,131,157, 86,108, 20, 44,168,172, 16,172, 1,159, 47,179,238,210,109, -233,109,135,242,198,113,112, 10,193, 1, 67, 4,249,129,223,237, 35,243,215, 68,167, 3,168,200, 39,161, 29,191,102,122,118,208, -169, 81, 32, 12, 12,140,119,237,140, 1,140,143, 60,232,128,172,100,156,100, 96,228, 96,147,246, 99,229,253, 58, 79, 24,193,141, -168,119, 61,113,211,239,233,131,248,104,132, 28,224,245, 56,235,243,233,235,143, 45, 0,133,103, 3,168, 4,250, 14,255, 0,105, -213,126,108, 17,133, 41, 57,207,234,250,255, 0,195, 72, 55, 94,183,198, 45,251,240, 96,194,212, 65,206, 15, 99,156, 99,167, 83, -223,166,178,107, 86,133, 46,228,174, 83,168, 84,230,131,242,231,203,102, 43, 41, 89,195, 69,215, 20,122,190,224,255, 0, 37, 29, - 13,165,110, 56,175,230,182,210,136,235,140,226,141,149,172,148, 40,242,164,140,243, 0,115,229,231,167, 83,107,106,201,163,215, - 27,102, 59,168,106,161, 80, 68,168, 17,165,168, 14,120,254,244,202,121,148,223, 55,119,212,203,110,165, 63, 53,159, 44,231, 74, -177,164,138,154,105, 34, 0,200,138, 72,248,250,159,147,183, 77,240,231,146,208,195,153,231, 25, 94, 91, 81, 57,166,167,174,158, - 24,157,199, 85, 87,117, 86, 43,125,181, 16,108,183,219, 81, 23,218,248,222,138,101,205,111,109, 53,188,139, 14,206, 6, 92,185, -106, 97,219,158,165, 20, 33,169,181,218,147,105,229, 75,211,229, 39,172,106,107, 74, 42, 76, 88,249,229,105,177,148,165, 78,169, -197,168,202, 52, 58,189,201, 45,107,152,251,134, 43,136,241, 26,136,133, 56,212, 96, 73,206, 22, 82,160,183,187,255, 0, 56,129, -159,230,233,172,181,109,231,101, 77,113,174, 96, 84,151, 11,234, 90,143, 58,214,238,114,165,184,181, 28,173,106, 39,185,234,115, -211,167, 77,109, 61,163, 22, 44, 22, 27, 91,137, 83,171, 74,128, 82, 1,207,234,158,188,201, 56, 29,255, 0, 15,232,173, 43,102, -142,152, 57, 86,230,207, 39,153,152,245, 98,109,185,219,238, 30,131, 97,176,176,238, 92,135,135, 96,160,165,130,158,154,139,217, -233,169,194,164, 80, 40,217, 20, 91,173,247,102, 39,119, 98,117, 51, 18,204, 75, 18,113,157, 88, 27, 77, 6,162,243, 10, 91, 45, -173,210, 17,204,134,249,192, 79, 80, 63,214,237,246,249, 13,116,123, 98,182, 58, 4, 74,205, 30,167, 79,136,195, 21, 8,242, 27, -109,110,132, 5, 41, 73, 87,235,167, 43, 4, 56,130,140,228, 96,131,208, 99, 90,225,182, 40, 67,142, 48, 16,148,176,211,139,108, -165, 13,164, 41,196,146, 1, 0, 28, 0,122,103,200,227, 93, 65,218,186,205,175,107,194, 23, 45,203, 58, 29, 22,218,182, 96, 72, -174,220,149,170,131,237,177, 22,155, 74,165,199, 84,185,211,101,200,116,132,182,210, 35, 52,242,142, 78,112,156, 0, 78, 6,171, - 12,238,173,234,222, 88,228,156,164,106, 9, 35,215,160, 2,195,177, 61,189, 58, 92,224,103,185,230,105,150, 32,167,167,102, 26, -193, 82, 7,165,183, 6,219, 90,219, 1,190, 56,205,197,103,181,207,127,173, 13,203,184,118,215,133,170,141, 31,104,108,203, 18, -227,169,219,114,110, 38,173, 59,114,175,120,222, 85,138, 12,199, 41,181,154,156,153, 53,154,123,241,232,148,133, 84,163, 74,110, - 60, 86, 88, 82,220,105,176,227,238,146,190, 68,232,182,233,123, 64,184,141,223,154, 60,154, 6,249, 57,181,123,167, 78,146, 84, -227, 18,107,187, 67, 98, 81,110, 42,116,165, 0,145, 34,159,117,218,148,120,114, 99,114,227,163,101, 42, 70, 84,115,229,173, 86, -221,155,170, 61,231,185, 27,133,121, 69, 66, 4, 43,174,251,188, 46,104, 37,150,148,210, 87, 78,184, 46,106,173, 86,152,226, 26, - 95, 86,138,160, 76,140, 84,147,241, 37, 74, 32,128, 65, 26,194,202,138, 27, 72, 66, 66,146,164,249,147,216,250,231,207, 87, 69, - 31, 7,240,224,142,134,170,163, 33,165,108,202, 5, 70, 19,180, 17,154,132,144, 1,186,205,167,154,132, 27,219, 75, 46,158,139, -101,216,113, 46,113,196, 25,150,101,152,213,213, 75, 88,211,164,146,185, 69, 33, 74, 4,212,116, 0, 45,109,150,194,253, 77,174, -196,146, 78, 25, 29,226, 14, 57,121,205,113,232,130, 3,142,211,225,184, 35,161,210,251, 60,158, 24,194,153,113, 74, 39,194,232, - 48, 51,240,246,211,245,236,251,162,194,185,248,143,179, 45,121, 83, 19, 21,250,213,203,107,181, 9,165, 71,118, 87,191,186,213, -102, 27,130, 3, 81,152, 66,148,243,239, 41, 41,105, 3, 24, 5,238,101,124, 41, 58,101,247,161,159, 22,181, 69,168, 39, 42,110, -109, 13,166,193,234, 48,228,124, 36,164,245,239,145,174,129,251, 9,174,186, 5,165,237, 66,225,233,203,134,153, 75,169,179, 93, -122,232,183,105,102,171, 29,185, 77,211,107,245, 27,114,161,245, 77, 90, 19,110,130,148, 84,153,121,149, 6, 86, 70, 82, 94, 37, - 63, 16, 4, 76,106,145,166,225,202,216,163,115, 19,154,118, 0,141,244, 17,182,175, 48,111,179,107,216,131,211,124, 55,240,245, - 50,102,121,237, 29, 36,238, 33, 74,218,128,140, 64, 27,115, 13,172,189, 64, 38,246, 91,130, 3, 17,112, 70,216,253, 60,108,203, -170, 61, 38,218,163, 69,169,210,215, 6,123, 52,168, 12, 42, 18, 30, 74,149, 13, 45,197,109, 30, 2,136,232, 84,156, 96,142,195, - 24,211,173, 99,205,135, 95, 67,163,195, 82,216,105,226,174, 71,124,148,149, 2, 51,235,129,141,105, 44, 90,227,175,203,110, 58, -159, 60,234,145,200,227,139, 86,113,133,225, 74, 81,201,236,156,159,187,231,170, 28, 4,113, 50,246,254,220,188, 78,211, 27,167, -174,157, 67,217,253,200, 98,198,160, 62,226, 84,149,213,154,110, 59,134, 85, 65, 74, 80,193, 38, 67, 46,128,145,156, 36,167, 56, -206,171,117,160,130,138,122, 97,237, 82,206,210, 2,164, 74,193,245,233, 0,234, 42, 2,170,144,127,100, 1,189,173,233,213,116, - 57, 94,103,152,229, 89,246,102,140,213, 17,228,201, 12,179, 73, 36,128, 58, 9,234, 18,153, 52, 40,182,162,210, 72,183, 8, 0, - 85, 5,141,128, 24,234, 84, 22, 97,190,160,211,140,160, 37, 73, 9, 37, 39,151, 35,203, 4,118, 61, 53,114,153, 78,153, 71,107, -235, 40, 14, 61, 50,158,222, 60, 88,104, 36,186,207,108, 43,161,248,155, 29, 63, 29, 97, 20,201,202, 47,103,152,116,235,202, 79, -126,158, 94,167,229,242,211,203,110,200,247,142, 86,186, 45, 43, 28,139, 74,199, 69, 36,140, 40, 28,142,185,211,232,142, 26,149, -210,124,143,250,172, 54, 32,246,233,212,123,143,108, 87, 57,193,168,203, 88, 74,126,186, 30,174,140,110, 24, 27, 95,115,186,183, -163, 11, 88,251,182, 38, 90,149,147, 81,103, 43,113, 42, 36,101, 41, 4, 97, 63,236,131,246,106, 57,159, 74,191,116, 98, 90,254, -207, 59, 39,109,189,229, 13,212,183,107,126, 44,232,173, 70, 10, 79,139, 34,151,103,194,170,220, 21, 37, 33, 4,228,182,151, 83, - 3,152,129,211,196, 79, 81,158,178, 30,102,146,109,219,145, 41, 96, 40, 65,169, 43,197,142,145,209, 8,117, 68, 7, 25, 3,237, - 80, 32,127,181,168, 24,253, 41,190, 42,105,187,177,198, 54,217,240,225,110, 85, 81, 54,139,195,101,145, 34,125,214,152,206, 7, - 99,181,184,187,128,182, 37, 59, 9,124,170,199,189,197,183, 98, 83,146,176,122,161, 83, 8, 58, 74, 58,202,145, 17,201,101, 26, -102,168,170,131, 88,244, 90,105, 22,173,158,223,176,226, 5,136,155, 90,243, 32,234,192, 98, 1,158, 71, 76,139, 85, 95, 79,189, - 36,176, 18,155, 91,205, 48,228,232,235,246,147, 91,189,183, 39,148,198,196, 2,113, 23,105, 12,224,142, 92,114,128, 57,115,230, - 60,193, 31,158,218,166,220,116, 96,148,167, 35,185, 0, 30,135,231,131,219, 70, 58, 91,112,228,147,129,219,200,129,212,245, 26, -163,239, 1,162,164,182, 58, 16, 2,148, 48,123,246,233,248,234, 69,123,110, 78,199,253, 49, 95,238,192, 91,182, 41,184,218,146, -112, 2, 85,145,205,128,115,240,232,117,175,166, 2,185, 84,122,144,123,252,146, 48, 58,249,126, 26,246,165,183,205,207,226,242, - 41, 68, 0,146,160, 57,188,186,141, 8,236,164,182,248, 10, 66, 79, 40,192, 24,234, 78, 51,205,246,235, 5,182,178,131,140,233, - 61,206, 62, 37, 37,100,130, 84,143, 85, 20,247,251, 9,215,196, 52,218, 22, 28,108, 23, 20, 73, 10, 73, 32, 16, 58,117, 3, 29, -117,111, 83,203,146,247, 41,116,161,190, 96,162,140,245, 64, 79,113,246,247,209,173,134,220,112, 58,130,174, 68,156, 21, 96,167, - 56, 29,142,124,186,235, 23, 38,226,214,237,108, 24, 0, 8,223,231,108, 84,202, 80,181, 45, 75, 37, 10,236,140, 14, 84, 19,208, - 21, 19,249,206,145,240, 91, 89, 35, 4,168, 2,181, 39, 36, 1,143, 63,207,219,175, 14,180,248, 91,135,225, 44, 44, 19,203,230, -113,158,202, 35,190,147, 72, 75,188,184, 10, 97,180,167,149, 94,101, 68,116,193,200,235,219, 67,113,176,234, 62,253,255, 0,241, -140, 88, 27,158,199,247, 99,223,138,128,176, 16, 74,202,192,200, 64,234, 51,216,159,151,174,144, 56,112,168,255, 0,226,210, 65, - 39,211,169,193, 30,191,219,161,201, 91, 97,101, 11,229, 33,124,169,112,164, 97, 67, 25, 41,193, 29, 62,221, 18,149, 30, 64, 28, - 41, 83,138,201, 81,233,203,131,211, 7,167, 95,158,178,160,129,238,248, 99, 4, 11,219,211,111,159,187, 23, 91,122,216,174,223, -151, 45,171,103, 91, 30, 48,173, 94, 23, 45, 2,211,161,169,134,124,101,166,185,117,214,160,219,116, 71, 18,206, 63, 72,148,213, -170,176,202,135,110, 84,156,234,116,188, 70, 90, 86,214,200,237,141,191,195,253,145, 22, 45, 26,196,217,203, 30,212,219, 59,118, -140,216, 15, 52,105,182, 85, 52,210,220,144,228,146, 7,188, 57, 58,187, 14,173, 81,121,213,101,199,100, 86,221,117,213, 5,175, - 81, 5,246,122, 41,151,120,231,225, 49,165, 45,167, 25, 70,253,237,171,138,109, 68, 6,138,152,185, 35, 72, 66, 58,164,128, 60, - 86, 81,140,142,248, 24,212,167,184,174,185,213, 80,146,133, 73, 46,189, 42,116,101,176,243,171,116,136,206,165, 92,181, 24,242, - 29, 66,122, 56,175,137,244, 12,128,174,102,202,115,202, 19,170, 83,197, 9,101,168,206,184,107, 46, 36,242, 99,215, 57,177, 27, -176, 33,119, 7,246, 0,242,159,241,145,183,126,148,250, 56,229,176,205,157, 87,230, 36, 3, 52, 82, 67, 18,237,186, 42,142,113, - 96, 78,222,114, 22,253,238,138, 65,198,134,236,221,125, 48,227, 85,230, 51, 33,182, 20, 46,139,193, 78, 71,146, 11,172,173, 49, -107,213, 39, 22,218,176, 65,104, 45,181, 17,240, 28,231, 10, 57,192,214,224, 91, 87, 56, 52,186,124, 87, 37, 60,195, 17, 27,114, -181, 86,168, 52,165, 33,208,211,232, 84,135, 35,180, 82,172, 45,194,149, 57,206, 62, 17,225,181,156,149, 19,174,110, 88, 21,191, -119,114,244,165,183,202, 67, 27,155,118,199, 87, 58,178, 4, 89, 50, 96,212,208,176,140,117, 30, 4,208, 18, 6,122, 47,168, 24, -193,216,148,220,233, 17, 19, 8, 58,234,126,185,152,195,115,214,218,208, 94, 77, 49, 13,178,244,133,248,196, 0,223,193, 29,180, - 33, 36,116, 68,133,242,242,101, 71, 81,250,188,185,106, 15, 67,113, 99,239,183,107,245,232, 9,183,107,219,224, 58,227, 63,165, -142,190,158, 48, 77,158,254, 98, 55,217,118, 36, 14,246, 5,200, 7,112, 64, 22, 35,166,219,210, 47,185, 82,233, 80,131,107,114, - 60,217, 83, 30,159, 55, 1, 97, 10,126, 99,143, 59,200, 93, 39, 36,248, 79, 52,216, 74,146, 85,208,149, 28,227, 87, 58,150,229, - 67,154,202, 4, 96, 35, 72,171, 77,110, 44, 73,100, 36,180,229, 58,157,136,136, 91,136, 10,230,111,157,193, 37,215, 17,208,101, -244,168,228,117,214,181, 64,187,158,122, 93, 82, 99, 15, 54,251, 37,214,153,128, 31,117, 72,105,199, 39,177,225, 23,146,164,156, - 48,194, 20,135,157, 91,128,140, 41,148,243,100, 17,156, 82,117,230,220,185,110, 46,150,234,204, 86,210,213, 38, 18,207, 68,178, -246, 20,194,221,232, 57,159, 45, 69, 67,133, 75, 72, 8, 74,217, 4,243, 28,107, 65,114,134, 28,192, 19, 72,150,215,216,116,216, -247, 29,143,240, 35,215, 20,246,103,146, 44,245, 78,252,176,174,237,171, 80, 54,208, 8, 14, 67, 30,182, 4,169, 0,130, 8,141, -150,215, 27,108,165, 82,240, 65, 91,130, 60,226,182,132,167,101,192,151, 29,238, 83, 25, 20,197,120, 81,158, 74,218, 87,253,240, - 30, 74,156, 5, 56, 40, 82,144, 70, 78, 52,237, 90, 94,211,206, 31,238, 61,215, 87, 13,251,187,120,211,246, 99,125,216,166,219, - 53, 27, 46, 70,225,213,169,180,173,188,223,218, 29,126, 20,116,211,238, 11, 14,254,117,214,224,219,183,114,235, 2,165, 77,157, -110,215,151, 5,255, 0,172, 41,143, 26,124,233,201, 95,132,215, 47,235,155,134,253, 49,169,137,139, 33, 17,217, 13,120,112, 82, - 15, 49,240, 35, 44,163,195,112,169, 32,252,110,120,100, 14,255, 0, 6, 84, 78,117,197,111,105,134,220,238, 93,231, 65,219, 45, -247,167,109,213,197, 90,217,251, 58,155,114,237,149,225,186, 16,105,102,169,111,209,111, 26,133,206,237,223, 6,220,186, 37, 68, - 46, 57, 71, 74,105,117,120,239,199,126, 99, 76,195, 90,234,170,101,153, 10,125, 14,182,139, 3,128,178,227, 14,113,200,102, 49, -197, 94,146, 41, 26,186, 58, 14,100, 76, 1, 54,102, 4, 50,105,239,205,107, 48,109,241, 25,226,106, 58,222, 29,225,154,236,230, -154,152, 85, 54, 88,209,177,136, 41, 60,216,218,101,137,193, 42, 24,198,232,143,175, 85,138,168,137,139, 93, 73, 6,112,183, 37, - 78,163, 2, 75,208,150,135,161,212, 82,216,153, 17,169,141,173,151,176,166,195,172,115, 50,232, 25,142,243, 42,192, 88,248, 20, -135, 67,169, 82,146, 1,214, 30,110,102,229, 6,164, 37,229,248, 15,167,153, 14, 21,167,199,131, 45,149, 41,178,218,193,232,133, - 37,208,234, 20,133, 14,138, 74,146,161,200,172,136, 53,240,131,237,106,226,159,133, 24, 84, 59, 53,218,219, 59,239,178, 52,133, -176, 33,109, 62,233,213, 42,115, 87,110, 83,210, 19,207, 27,108,183, 21,133,187, 86,176, 89, 90, 16,222, 98,161, 83,232,235, 9, -248,233, 74,207, 48,145,223, 13,254,212,238, 15,184,152,159, 78,162,209, 47,183, 54,118,249,175,188,219, 14,237, 94,249, 74,164, -218,245, 37, 92, 79,169, 49, 99, 27, 63,112,216,112, 91,183,164,105,106, 74, 80,226, 84,253, 38,123,107, 83, 14,125, 94,162,183, - 66,108,186,204,183, 48,166,102,149, 71, 62,156, 30,169,168,233, 30,174,159,105, 0, 23, 14,192, 50,168, 43,245,131, 77,196, 95, -135,248,215,135,243,244,142, 40, 42,125,147, 48, 63,251, 60,246, 73, 9, 31,170,141,253,220,164,236, 80, 35,107,102, 86, 28,176, - 93, 65,235,149, 54,227,231, 82,252, 98,143,120,111, 30, 50, 3,153, 10, 74,242,148,190,207, 95,141,149, 1,219,201, 64,160,158, -157, 92, 10, 45,120, 41, 72, 30, 42,210,211,129, 60,138, 36, 39,194, 40, 56, 9,201,199, 34, 15,194, 82,125, 71, 47, 98, 51,173, - 78, 57, 42, 4,150,225, 74, 68,136, 85, 24,204, 38, 66, 27,148,194,153, 91,140, 60,112,210,188, 53,165, 42, 92, 71, 18,144, 65, - 31, 2,199, 43,141, 41, 93, 9,204,232,245,213, 45, 41,192, 82, 28, 24, 15, 5,245, 67,125, 1,240,211,143,214, 37, 36, 97, 93, -148, 8, 56, 7, 58,212, 89, 53, 45,155,126,155,250,244,189,247,220,131,214,195,222, 7, 80, 36, 83, 0,111,109,143, 66, 55,176, -233,219,176,244,244,232,113,182,208,103, 41,109, 2,130, 8, 28,170, 10, 7, 24, 72, 25,194,155, 35,170,130,179,216, 16,115,215, - 3, 58,111, 43, 10,114,143, 57, 62, 8, 83,116,247,138,158,104, 35, 42,247, 7, 50, 75,237, 35, 36,226, 62, 87,206, 17,241, 16, - 21,132,140, 32, 1,125,182,231,180,168, 76, 58, 9, 40, 84,116,130,133, 30, 98,133, 5, 4,164,144,145,213, 29,122,131,213, 61, - 0, 36, 29, 13,118, 6,157,142,165,164,161, 74, 66,131,137, 36, 16, 75,137, 11,198, 66, 58, 1,225,133,117, 7,177,199, 76,105, -179, 52,167, 21, 20,206, 20, 94, 88,188,203,247, 14,159,247, 13,175,219, 99,141,204,138,188,229,245,233,172,222,154,164,132,144, -123,143, 71,223, 96, 84,155,244, 59,106, 94,135,127, 84,218,177, 40, 8,109, 77,171,152, 21,173,176,163,224,169, 71,153, 72,125, - 10, 73,232,160, 71, 80,122,228,147,140,224,235, 37,102,160, 10, 82,164,185,132, 45, 57, 74,215,202,149, 96,228, 37, 5, 93, 73, - 30, 65, 68,115, 96,128, 73,233,134, 98,157, 41, 13, 56, 75, 78,101, 30, 32, 41,200, 60,139,109,106, 31,174,223, 79,137, 36, 30, -189,207, 76,140,117,214, 72,221,101, 45,182,162,165, 36, 32,100,243, 41, 75, 81, 70,115,204, 0,245,193,235,219, 60,157,117, 24, -134, 67,166,254,131,225,214,223,195,240,185, 63, 9,141,122, 6,118, 85, 58,239,247, 92,246,191,191,212,255, 0,166, 51, 26,229, -207, 71,161, 82,171, 21,250,253, 86, 21, 10,222,160,210,170, 53,218,245,110,162,164,183, 78,161,208,104,176,228, 85, 43,117,153, -206, 45, 73, 9,137, 18,151, 18, 91,238,228,225, 72,142,160,158,165, 57,252,241,248,236,226,198,175,198,143, 19,187,139,190,210, -211, 34, 37,167, 54, 67, 54,134,209, 80, 36, 40,149, 91,187, 67,106, 59, 42, 29,153, 29,224, 82, 63,247, 86,123, 78,203,172, 84, - 21,128,163, 54,224,117, 10,232,210,117,219,143,110, 55, 31,168,247, 9,220, 13,237, 45,117,106,153, 60, 65,155,196,245,118,153, - 33, 73,250,186,148,129, 22,167,110,108,123, 50,218, 88,204,249,174, 8,181, 59,157,180,158,102, 99, 49, 2,144,247, 42,222,154, -216,140, 58,201, 42, 87, 55, 92,245, 24,242, 62, 93, 51,208, 99, 86, 23, 10,101,174,168,115, 74,133,179,204,161, 98, 4,110, 35, -184, 38, 79,255, 0, 83,109, 63,224, 1,129, 34, 76,115,135,139, 28, 75, 29, 69, 68,124, 51, 69, 46,168,168, 95, 93, 91, 41,184, -105,192,178, 67,126,252,133, 36,200, 55,250,214,208, 64,120,119,164,226,207, 66, 6, 58, 99, 61,253,127,110,168, 40,146, 14, 79, -145, 3,176,234,117,236,175, 32,140,119,245,254,173, 14,178, 50, 7,166,115,251, 53, 54,197, 56, 6,195,215,223,143, 26, 25,222, -163,190,112,127,103, 95,199,190,136, 80, 4, 28,249,117,233,242,208,171,236, 62,223,191, 74,170,144, 55, 30,252, 27, 3,172, 12, - 19,233,219,241, 26, 21,194,122,100, 96, 15, 50,122, 99,167,203, 68, 45, 88, 7,168,198,127, 12,119,207,207, 39,246,104, 39, 14, - 65,238,122,244,207, 92,117,243,209,240, 49, 73,194,122,158,135,167, 78,221,191,225,160,214, 70, 49,230,127,175, 85,214,124,179, -246,254,237, 12,162,115,131,131,230, 15,203, 74,168,176, 3,231,255, 0, 56, 24,164,161,156,124, 57,251,241,165,175, 42, 81, 4, -128,123,105,104,248, 61,215,161,234, 61,195, 9, 4, 17,131,140,142,223,159,183, 85, 65,193, 7,254, 56,208,233, 56, 57,252,117, - 84, 28,245,242,237,243,207,245,104, 16, 14,221,176,115,176,176,216,246,251,173,130,144,113,212,117, 31,209,147,251, 52, 64, 81, - 7, 3, 57,199, 92, 12,227,237,208,169, 35,151, 56,237,220,122,227,174,171,161, 97, 64, 96, 17,233,247, 31,233,206,144, 35,125, -251,225, 50, 15,218,181,186,127, 44, 28,217, 61,137,207, 79,219,211, 69,160,115, 4,228,115, 96,228, 12,227,183,110,191,142,129, - 66,176,164,143, 53, 1,246,117,209,136, 61,199,167, 81,162,144, 13,182,219, 5,193,232, 56,201, 61,187,103,231,233,170,157, 57, -128,201,237,219,190,122,158,195, 61,244, 58, 14, 70, 85,219,229,220,254, 78,137, 78, 6, 9,248,142, 58, 30,199,229,215, 73,176, - 32,251,176, 49, 85,178, 80, 71, 49, 24, 29,179,128,122,159,234,206,170,161,228,172,227, 5, 63, 51,208,106,130,129, 57, 36, 12, - 43,246, 12,103,250, 53,245, 33, 41, 28,169, 39,168,200, 39,169,243, 62,154,215,113,110,214,192,193, 69, 75, 80, 41, 11, 40, 72, -242, 79,235, 44,117,198, 14,142,138, 84,193, 74,208,181,165,208, 82,164,172, 44,165,214,212,133, 5,182,227,107, 79, 84, 56,149, - 0, 82, 71,108,122,116,213,184, 21,116, 32, 12, 36, 16,175, 92,121, 99,240, 58, 41, 11, 82,192,198, 50,156, 1,158,159,143,207, - 73,144, 8, 32,238, 14, 5,200, 32,131, 98, 8, 32,251,198,227,247, 28,108, 53,141,190,213,107,108,134, 43,180,182,171,204,124, - 41, 19, 35, 60,136, 85, 18,145,128, 11,205,175, 13,186,160, 60,210,164,149, 28,156, 13,108,141,181,197, 54,220, 70, 82,197, 66, -151,116,195,121, 72,202,146,221, 49,185,109,229, 32,244, 75,141, 75, 60,221,199, 95, 93,115,201, 4,164,124, 94,189,207, 82, 7, -168,253,186, 37,176, 66,144, 22, 84,164,142,169, 32,227,161,236, 8,243,244,251,245, 28,174,225,188,174,181,153,164,137,162,103, -235,203,114,160,244,191,151,117, 31,114,140, 91,121, 55,141,220,125,147,211,199, 74,107,169,243, 88,225, 80,170,107, 41,214, 89, - 52,139, 90,242,161,142, 87, 35,177,119,115,110,248,235,133,191,199,206,218,219, 45, 52,170,125,157,118,214,229, 55,146,132,186, -136,148,166,213,201,219,244,179,102,224, 18, 71,250,170, 3, 29,180,196,241, 5,199, 86,232,111,197, 1,251, 8, 50,221,147,182, -143, 56,211,211,237, 58, 60,167,100, 74,185,156,140,226, 94,138,213,215, 87, 83,109,251,229, 61,183,144,219,158,226,195,104,140, -227,141,161,111,151,249, 82,145,162, 3,148,130, 92, 5,192, 20, 20,148,231,148, 55,212,227, 4, 14,186, 61,162, 86,176,146,225, - 80, 56,228,194,113,201,219,161,207,235,116, 56,211,117, 47, 5,112,245, 21, 84,117,201, 69,207,170,132,134, 71,149,218, 77, 12, - 8, 33,149, 73,229,134, 82, 46,173,163, 82,145,169, 72, 32, 28, 53,241, 15,138,188, 97,196,116,243, 82,213, 84,195, 69, 77, 80, - 10,200,180,176, 44, 69,212,245, 83, 35, 25, 38, 10,219,134, 85,145, 85,193, 42,192,169, 32,158,135, 75,235,241, 20,165,243,156, -130,149,228,227,191,234,252,191,175, 69, 53,226, 20,169,146, 9, 42, 80, 87, 50,134, 0, 79, 79,192,118,208,142, 44, 52,130, 84, -175,137, 56,248,146, 49,143, 64,122,117,233,170,145,222, 81, 66, 66, 73,248,178, 73, 87, 82, 79,108, 12,246, 29, 53, 36, 61, 54, - 29, 62, 70, 43, 94,183, 35,123, 91,175,205,241,136,238,148, 54,166, 91, 20,250,139, 88, 47,209,166,170, 59,233, 79,254, 76,255, - 0, 80,172, 99,160,230, 39,240, 58,198,120,103,221, 57,187, 25,196,150,199,238,244, 21,134, 94,176, 55, 62,210,175,186,181, 28, - 15,112,143, 87,142,138,146, 84,113,217, 84,215,101, 39,255, 0,165,167,117,218,108,106,205, 62,177, 68, 90, 2, 93,157, 79,120, -165, 71,245, 68,134, 82, 86,218,243,228,123,254, 61,245,167, 85, 38, 11,109,188,210,135,233,152, 91,140,184,160,122,120,145,212, - 83,145,142,255, 0,171,251,117,187, 66, 18,104,170, 41, 36,251, 18,234, 83,255, 0, 68,162,196,254,253, 93,251,227, 20,149, 82, -101,249,133, 45,100, 91, 73, 4,145,202,189, 62,212,108,174, 63, 16, 49,250,180,211,238,200,245, 37, 67,171,211,156, 15,194,174, - 65,129, 89,167, 45, 4, 20,189, 10,173, 21,153,145,214,133,121,160,178,242,122,249,231,190,180,239,217, 89,188,242,168, 28,101, -113,223,195, 53, 74,165, 21,248,241,110,200, 59,151,105, 48,148, 54,212,150, 99, 85, 66, 25,171, 70, 90,211,133, 72, 8,121,198, -149,215, 37, 35, 61,129,214,138,112,241,237, 18,181,246,247,217, 85,195,199, 23, 55,221,185, 92,188, 87,110,170,222,216,155,158, -135, 70,113,168, 85, 74,133,213, 66,154,237,182,137,209,228,212, 2, 90,247, 81, 18, 12,119,150,178,172, 40, 40,165, 36,172, 99, - 92, 76,225,195,218, 43,112,108,191,180, 68,241,163, 87,137, 53,218, 13,213,121, 85, 13,251,109, 69,117, 79, 59,252, 93,220,210, - 61,214, 85, 57,148,140, 9,179,169,240, 12, 87, 90, 24,253, 35,176,207, 39, 85,140,213, 94,201, 95, 89, 89, 81, 50, 68, 88,229, - 41, 44, 77, 97,114,211,137, 33, 50, 70,130,251,177,141, 24, 11,126,210,130,124,216,234, 92,247,139,178,110, 30,135,135, 86, 26, -240,171,156,212, 69, 53, 68, 96, 18, 70, 89, 60, 14, 18, 89, 46, 45,161,102,104,166, 0, 18,247,167,107, 0, 6,255, 0,166, 5, - 42,103, 57, 65, 82,185, 64, 32,133,247,194,134, 58, 28,253,191,183, 79,189,167, 40,130,133, 15,136,130, 15, 48,207, 92,244,234, - 62,127,191, 90,215,182,213,122, 45,249,108, 90, 55,197,175, 49, 85, 11, 94,248,160,211,110, 91,114,123,145,228,195, 92,170, 77, - 82, 51,114,163, 41,232, 51, 90,109,232,174,134,220, 0,165,196, 37, 67, 29,181,181, 22,173, 32,176,218, 22,172, 0, 58,144, 15, - 48, 35,161,232, 51,211,182,149,165,204, 0,210,250,182, 96, 8, 55,216,131,107, 17,234, 8,177, 7,208,223, 12,252,106,244,209, - 69, 44, 79,229,112, 89, 74,158,160,131,165,148,142,161,131, 2, 8,234, 8, 32,216,139, 99, 84,189,166, 92, 73, 94, 92, 36,240, - 71,190, 60, 72,109,253,170,139,190,243,218,251, 81,202,181, 6,152,247, 63,185,197,151, 53,246,105,136,172, 84, 2, 7, 50,224, - 67, 84,180,200,117, 35, 4,165,140, 2,158,227,242,123,220, 13,193,188,183,102,246,187, 55, 70,255, 0,174,202,185,175,125,193, -184,106,119,117,217, 95,154,225, 92,154,165,106,179, 33, 82,165,200, 61,127, 70,202, 74,130, 26, 64,248, 91,109,180, 33, 32, 37, - 35, 95,176,103, 17, 91, 65, 79,226, 3, 96, 55,155,100,106, 73,104,195,221, 29,180,188, 44,162,167,194, 11, 49,228,215,104,147, - 33, 65,146,176,160, 71, 43, 83, 28, 97,207,145,107, 58,252,126,111,173,183,174,109,101,223,114,237,205,200,243, 14, 87,172,107, -134,183,104, 86, 21, 21,196,191, 31,235, 27,118,163, 34,153, 41,108, 62,142,143, 50,181,199, 42, 74,135,250,248,242,211,205, 11, - 23,205,103,169,168,185,146,170,158, 46, 83,159, 68,102, 90,132, 67,211,202, 69, 43,202,122,183, 50, 37, 98,121,105,106, 87, 55, - 74,198,201,233,231,141, 79,232,234, 57,204, 82, 16, 6,132,158, 85, 50, 83,153, 27,174,169, 99, 74,129, 10, 55,149, 68, 19,180, -118, 47, 41, 56, 67,100,168,171,151,155, 61, 79, 95, 60,122, 15, 61, 35,130,164,243, 43,195,200,232, 85,144,149, 30,190,103,160, -235,163,138, 10, 81,148,161, 61, 1, 57,207,196, 1,237,229,215, 58,179, 73, 73,100, 1, 32,169,109,175, 10,108,133,117, 65, 61, - 64, 35,211,190,164, 33, 71, 78,184,138, 6, 12,221,108,127,211,249, 99,203,205, 18,188,146,148,164, 30,157,114,114, 49,212,122, -121,235,227,237, 45,212, 2, 7, 84,167,184, 57,230,251,255, 0,214,210,105,196,231,225,201, 72, 78,112, 71,161,193,239,249,235, -162,163, 54,227,231, 9,229,102, 56, 25, 86,126, 37, 18, 58,142,158,154, 26, 64,223,165,177,147,211,115,112, 58,252,252,223, 22, -213, 70,117,150,146,176,201, 81, 88,230, 39, 35,152, 1,253, 61,115,159,248,104,168,146,144,231,232,202,255, 0, 85, 56, 40,229, - 0, 30,157, 78,124,245,114, 83, 5, 65, 72, 11,202,122,142,131, 4, 30,196,245,208, 41,136,220, 55, 57,130, 80,160,172,229, 74, - 5, 71, 24, 57,192, 61,188,255, 0, 13,102,195,174, 10, 13,246,245,219,231,231,243,194, 75,106, 66,138,139,202,121, 62, 73, 39, - 41, 64,244,249,235,195,175,165, 29, 16,164,129,215, 3,176, 10,244,237,242, 58, 13,247, 86, 20,162,210,241,205,219, 9,199, 76, -118, 57,252,252,244, 57,121,183, 22, 18,162,114, 8, 46, 36,167,166,122, 30,132,122,147,160, 1, 61,122,224,218,109,176, 59,124, -252,244,193, 73, 62, 42,249,210,160,160, 6, 10, 58, 4,243,117,237,215,174,169,202,116,144,148,163, 9, 35, 41,232,112, 73, 35, - 26,244,226,149,225, 44, 52,218, 83,202, 50, 6,112, 73, 3,166, 20, 60,186,106,200, 38, 56, 22,159, 25, 41, 42, 74,136,229, 35, - 39,237,230, 7, 25, 25,253,154,205,172, 79, 99,140,129,115,240,254,120,124,184,115,189,156,218,173,243,217,253,196,140,226,154, -114,201,221, 29,189,186,157,144, 2, 28, 76,104,148, 91,202,137, 62,170,234,144,226,146, 10, 19, 71,106,164, 78, 72,192,235,229, -214, 89,252, 84, 79,135, 38,165, 91,167, 64,144,125,222, 21, 90, 83,212,194, 9,203,148,103,102,202,149, 75,147, 29,226,231,198, -199,134,165,180, 86,174, 83,250, 48, 82,145,204,117, 12,134, 36, 32, 58, 89,144,219,141, 68,148, 28, 97,215, 25,112,135,124, 41, - 13,150, 30, 13,148,156,182,191, 13,197,224,142,160,224,143, 93, 73,106,193,222, 9,123,221,195,158,213,110, 37, 84, 5,220,177, -173,145, 99,221,170, 9, 90, 82,245,211, 97, 33,139, 66,186,235,106,113, 41, 18, 89,144,221, 38,151, 80,109,206,169,241,170, 79, - 3,133,165, 68,213,126, 32,229,133,243, 12,131, 53, 81,228,136,205, 3,157,175,169,213, 36,139,223,107, 71, 40,244, 5,135, 82, -109,142,146,250, 55,230, 49,199,158,230,217, 92,205,165,166,142, 42,152,199,111,171, 99, 12,173,241,188,212,235,255, 0,117,239, -229,177,215, 10, 45,116,211,119, 43,112,233,170, 37,182,230, 76,183, 43,177, 16, 48, 67,141,212,104,203,167, 84, 84,210, 85,250, -200,247,186, 39, 42,135, 76,169,127, 17,201, 25,126, 41,181,229, 37, 94,246,130,227,139, 83, 98,158,134,210,180,160,134,139,132, -169, 8,228,234, 57,157, 60,196,119, 33,160, 58, 3,173, 54,220,106,162,232,187,147, 64,173, 32,128,221,114,157, 86,182,101,168, - 2,112,236, 98,110, 58, 71, 42, 0,200, 82,156,139, 85,108,168, 12, 37, 47, 14, 99,215, 89,237, 42,241,122, 42, 89,121,149,120, -143, 68,240,228, 71, 67,193, 97, 42,112, 20,248,104, 82,146, 14, 81,149, 36, 43, 61,130,149,202, 79, 77, 54,154, 98,201, 79, 48, - 93,157, 23,215,245, 64,140,254,242,183,247, 3,113,214,216,234,185,107, 85, 90,190,153,200,103,134, 73, 8,185,181,196,141,207, - 0,122,217, 95, 77,199,166, 54, 18,161, 94,151, 79,143,238,201, 90,156, 74, 11,144,195, 67, 45,167,222,100,242,185, 41,107, 79, - 47, 68,161,128,211, 94, 17, 4,143,139,237,214, 33, 94,188,163, 65,166, 48,194, 95, 91,117, 54,202,144,132, 54,165,128,183, 95, -199,188,184,162,159,133, 33, 12,114, 39, 3,184,113, 99, 62, 90,108,110,125,200,155, 57,192,243,237, 54,135, 98, 37, 65,105,104, -184, 83, 38, 67,170, 74,157,117,106, 82, 65,231, 43, 42, 36,158,164, 28,103,182,152, 91,179,113, 22,203, 82, 31,144,227,141,177, - 29,133, 60,243,188,138,117,126, 27,202,229, 79,134,132,140,173,213,186,224, 64,230, 35, 28,249, 82,146,156,168,109, 83, 80,180, -133, 70,155,131,247,250, 91,173,253,215,233,123,143,190, 31,153,230, 40,116,234, 94, 76,155, 11, 13,199,112,250,136, 0, 48,181, -193, 30,164,142,215, 14, 21,209,121,205, 91,172,198,128, 37,214, 37,203,151, 18,147, 71,162, 69, 74,158,159, 91,173, 84, 31, 76, - 74, 61, 38, 10, 82, 57,149, 46, 76,199,210,132, 36,116, 79,141,204,122, 13, 72,111,103,182,153,253,140,217, 59, 59,105,234,166, - 43,245,214, 40,146,102,238, 75,165,136,243,169,213, 75,230,241,120, 86, 47, 54, 36,211,230,178,227, 21, 26, 75, 53, 55, 26,167, - 24,207,180,236,119, 35,210, 16, 22,218,146,117, 21, 91, 99,137, 58,134,192,111, 54,211,110, 76,122, 84, 42,181,197,100,221,246, -174,224,205,167, 84,216, 19,169,212,123, 66, 37, 89, 42,151, 77, 97,181, 39,195,159,114, 79,128,212,245,169,240, 22,212,111,116, -105, 13,225, 69, 58,152,173,218,236, 42,179,108, 87,233, 14,186,253, 46,181, 6,157,112, 82, 30,120, 56,211,238,209,110, 10,124, -106,204, 5, 62,219,128, 41, 18, 61,194,107, 60,193, 64, 44, 45, 4, 30,186,117,106,119,163, 48,188,177,253, 92,232,116, 31,218, -177, 26,182, 29, 0, 5,108,118, 44, 24,145,181,142, 35,114,231,116, 85,239,152,101,148,181,162, 92,195, 43,146, 35, 87, 18,135, -188, 13, 42, 22,128, 23, 42, 35, 98, 66,200, 24, 35, 57,137,208,164,161, 30,202,120, 41,197,183,177,147, 96, 55,194,117, 82,245, -225,250,163, 11,134,125,197,158,169, 14,206,182,216,166, 75,169,236, 93,114,190,156,248,141,189,108,196, 90,166,237,169,121,196, -181,250,106, 40,147, 79, 30, 49,116, 81,219, 78,117, 26, 30, 33,248, 90,223,142, 22,238, 53, 90,251,235,183, 21, 75, 77,169,146, -228, 66,162, 92,232, 13, 87,118,250,239,240, 22,241, 75,150,189,233, 78, 11,167,214, 10,153, 99,198, 17,203,141,204,109,181,161, - 79, 69,104,144, 53, 62, 58,210, 27,142,235,239, 21,135, 25, 12,160, 78,108, 32,130, 2, 20,150,218,156,215,108, 60,148,173, 41, - 88, 7, 42, 65, 24, 28,201, 25,193,174,203,122,131,116,219,213,139,110,241,182,232, 55,173,161,112, 70, 84, 43,170,207,186,169, - 84,234,253,183,113,211,152,109, 97, 46, 84,104,245, 86, 28,142,237, 70, 59, 5,226,196,128,132,200, 66, 22,182,154,125,146, 80, -180,201,178,222, 38,170,167,211, 29, 71,246,200, 86,223,104,218, 69, 29, 1, 87,177,189,186,233, 96,214, 30, 85, 40, 0, 56,170, -184,143,195,156,143, 60, 18, 84, 69, 23,232,156,193,247, 18,194,160, 70,237,183,247,176,221, 84,146, 79,219, 83, 27,110, 29,203, -146,109, 13, 30, 23, 61,163, 28,100,240,219, 38,149,107,237,182,228, 73,189,236,148, 58,150,218,218, 61,216, 67,151,221,136,166, -144,210, 25,240, 41, 6,169, 45, 53, 11, 53, 66, 58, 57, 80,186, 76,248, 97,190, 98,160,218,142,164,109,178,158,214,237,167,175, - 65,161,127, 41,109,181,191,248, 74,174, 85,212,196, 72,247,141,118,159, 86,189,184,118,184, 38, 56,243,200, 67, 20,205,205,163, - 65, 92,187,103,244,108,243,134, 42,113, 37,120, 42,121, 41,114,160, 80, 84,117,167,220, 73,251, 19,182,242,247,150,245,217,194, - 29,220,173,162,186,165, 45,185,180,237,176,187,166,214,235, 27,115, 85,154,242,203,141, 53,105,221,169,247,138,213,131, 33,111, - 58, 60, 24,243, 19, 85,132,218, 80, 19,227,198, 71,195,173, 7,218,190, 57,120,161,246,121,238,117,107,135, 46, 42, 54,246,212, -222,125,182, 66,215, 76,220,221,149,190,133,155,115,191, 81,182,165,170, 84, 41, 82,173,155,198,146,212,216, 50,159,240,155,121, -200,241,235, 44, 76, 97,206, 80,135,152,140,178,151, 90,121,170,146, 44,222, 17, 46, 79, 77, 21,101, 90,144,210, 68,210, 26, 90, -141, 23, 26,157, 24, 36,177, 72,226,224,221,193, 66, 60,166,100, 39,106,230,105,184,247,129,158, 20,172,144,102, 25, 56, 96,130, - 73, 11, 77, 13,172, 72, 85,114, 4,208,176, 63,238,220,198, 0, 12,193, 90,219,205,107,111, 55, 22,222,185,109,106, 77,203,105, - 92,212, 27,170,209,172,183,227,209, 46,123, 90,179, 79,185, 45,186,219, 47,160, 44, 55, 78,175, 80,230, 63, 25,215,130, 20, 20, -227, 72,116,188,206, 64,121,180, 19,141,103,175, 87,204,134,148,133, 47,152,148,124, 42, 90,135, 81,202, 0, 79, 42,142, 57,128, -233,159,246, 64, 39, 57, 58,138, 47, 16, 27, 71,120,112, 95, 98,211, 61,164, 94,203, 13,207,174,217,124, 50,238, 29,187,102,110, - 70,229,240,243,119,189, 42, 85,155, 77,162,222,245, 72, 16, 41,117, 22,108,155,169,231, 90,184,109, 7,235, 46,162,151, 58,152, -243,203,175,208,101,130,245, 6,171, 58,144, 89,145, 18, 68,155, 3,127,214,247,155, 98,118,115,120,231, 91,109, 90,114,247, 99, -108,236,173,194,145,108,177, 83, 77, 90, 45,188,253,219, 67,139, 87,122,147, 14,164,243,190, 44,248, 45,185, 37, 98, 59,143,101, -242,194,155, 18, 15,188, 7, 73,143,214,196, 35,167,138,170, 9,185,212,211, 51, 37,153,116, 75, 28,128, 41, 49, 75, 29,205,152, - 95,170,150, 83,177,218,235,123, 43,134,115,213,207,218, 72,189,141,233,170,169,213, 93,148,221,209,145,142,149,120,220, 40,189, -200,177, 4, 41, 27, 0, 8,185,198,215,109,149, 22, 37,219,112, 75,167, 73,165, 92, 21,191,118,183,110, 26,195, 20,107, 85,228, - 68,174, 84,165, 82,105,206,202, 98, 44, 87, 92,162,212, 48,165, 45,180,169,192,152,142,168,161, 4, 36, 36,229, 99, 64, 56,226, -223, 77,219,218,203, 74,243,176,184,111,131,100,212,184,131,106,210,106,188,182,174,237,198,176,104,236,108,117, 26,191,107,238, - 45,231, 67,159,114, 83,238, 42,188, 53,220, 59,203, 46,201,218,125,206,169,219, 54,146, 99,166,100,164,216,146,234, 18,227,161, - 2,157, 2,167,204, 14, 62, 61,170,123,199,195,134,245,239, 23, 13,187,105,102,194,182,165, 83,246,238,171,105, 84,183, 81, 53, -244,170,245,137, 87,220,107, 45,183,233,117,187, 54, 41,166, 73,133, 64,143, 76,250,217,135,130,156, 67,211,229, 61, 20,165, 50, - 32,160,164,235,150,155,127,199,229, 2,218,166,220, 17, 47,141,155,184,239,201,213, 27, 39,106,105,180,122,212,125,229,250,134, -170,214,227,109, 78,199,111,230,200, 68,190,174,249,149,109,181,172,187,121, 82,106, 16, 56,129,184, 42,147, 41, 97,218,124,229, - 79,183,224, 36,215,213, 28,203,110, 70,206, 69,195,144, 85, 69, 5, 70, 98,154,105,203, 23, 84, 82, 9,145, 88, 2,188,203, 43, - 29, 22,223, 64,107,155,217,130, 11,134,211,227, 63, 18,206, 91, 83, 89,150,100, 83,153,115, 5, 2, 9,166,100,112, 41,101, 77, - 75, 50,195,172,141, 83, 43,150, 83, 39, 47, 66,149,186, 60,183, 82,141,110,225,240, 39,196,221,155, 81,191,231,222,141, 89,213, - 55,237, 88,247,245,205,127,221,171,222,173,181,185, 61,226,240,182,175, 86,237, 91,186,211,159, 89, 98,236,113,202,246,245, 75, -190,106,209,152,110,218,100, 61,112, 84, 36,212, 28, 91, 16, 22,220,105,170,139,127,159,236,242,222,186, 77, 26,239,166, 87,232, -112,233,215,213,183,115, 90,106,118,188, 55, 27,106, 92,217,154, 61,128,237, 3,137,199,119, 10,177,114,223, 77,221,139, 75, 53, -122, 53,223,195, 53,253, 73,112, 71,241, 98,181, 54,200,172, 83,221,113,115,223,163, 51, 57,230,147,199, 5,183,187,182,199, 20, -139,188,118,233,203, 98,159, 84,186,183,115,137, 91, 34, 52, 27,238, 84,170,188, 61,236,220, 94, 32, 44,203,171,108, 40,237, 75, -107,110, 95,141, 88,160, 80,145, 95,186, 77, 97,137,205, 83, 25,174,211,162,188, 99, 84, 40,149, 52, 64,143, 46,157, 75,218, 83, -101, 77,186,105, 19,162,236, 45,249,108,218, 84, 43,254,198,220, 58,109, 34,211,226, 14,155, 2,237, 19,173,203,215,141, 77,199, -186,173,217,247,125, 99, 98,170, 16,170,182,125,110,232,227, 78,236,167,187, 2, 77, 5,212,166,211,181,219,161, 84, 87, 88,151, - 81,153, 91, 22, 42,173, 58,216, 2, 66,109,243,176,249,247,227,159,188,172,197,153,181, 23,220,146, 73, 36,158,189,183, 55,238, -119,191, 83,134, 79,133, 94, 26, 54,163,119, 40, 23,245, 15,114,220,191,142,226,213, 56,139,225,227,133,189,165,172,237,181,249, - 97,155, 30,221,191,119,242,131,196, 96,167, 93,151,172, 39,236,250,202, 55, 62,208,102,241,218,107, 53,128,138, 37,126,130,149, - 83,107, 53, 9,204, 84,230, 17, 17,189, 55,212,190, 3,248,146,172,211,160,212,169,214,189,181, 33,186,142,219,211,247, 54, 44, - 95,227, 14,196,106,162,186,125, 98,181,178,180, 58, 45,166,105,207, 92, 9,120,110,100,217, 28, 70,108,107,177,109,190, 79,173, -221, 99,115, 41,203, 76, 94, 97, 37, 17,242,109,137,226,246,211,217,104,251,163, 81,127,101, 62,187,186,171,187,235,180,188, 70, -108,210,237,235,249, 22, 93,137,180,219,153,179, 84,221,245,137,101, 55, 93,179, 23, 99,212,230,110, 13,155, 14,126,244, 71,153, - 30,155, 22,183,110, 58,135, 44,136,172,191, 58, 84,105, 79,178,151,218, 87,181, 90,244, 52,109,183, 49,108, 26,164,171,191,110, - 45, 11, 30,153, 2,181,115,110, 83,149,219, 97,171,198,196,221, 46, 9,183, 14, 21,126,223,177, 98,217, 80,152,183,109,137, 17, -184, 39,182,216,149, 73,247,169,115, 94,157,126,212, 38,174,188,170,109, 62,145, 66,136,100, 17, 21, 93, 71,204, 47,211,227,220, -219,115,111,195,225,108, 1,107, 11,252,252,239,134,106, 63,179,199,115,133,155,125,215,171,187,135,179,118,237,197,106,110,150, -201,109,205, 10,223,153,185,246, 52,250, 21,249, 15,122,172, 61,215,189,169, 23, 85,173,123,210,110, 87,226, 85,161,161,221,180, - 69, 50, 35, 16,154,153,245,133, 70,101, 86, 39,143, 18,101,191, 50, 43,173, 61,131,193, 94,250,238,142,241,110, 54,200, 89,144, -172,105,247,150,215, 94, 63,197,253,209, 54,126,230, 88,150,253,156,245,230,245,238,157,187,165, 91,118,205,231,112, 87,162,211, -175, 26,213, 74,234, 15,179, 73,139, 75,126, 92,138,179, 48,164, 75,167,183, 38, 43, 46, 58,157,172,107,218, 71,106,187,184,205, - 93,151, 6,202,110, 37,197,110,209,175, 29,134,190,172,246, 39,241, 13, 5,253,203,160, 93, 60, 62,109,135, 18,118,213,139,112, - 73,220, 10,142,200, 73,165, 84,170,177,119, 63,136, 8, 23, 60, 70,218,180,225,210,217,143,182,241, 40,114,169,117, 3, 80,155, - 86, 12, 7, 9,252, 89,216,124, 52,223,247, 21,199, 92,217,203,159,115,109, 71,183, 27,106,119, 94,200,183,218,221,216, 86, 93, -205,110,222, 91, 37,184,134,249,219,247, 46, 91,196,109, 93, 86, 53,227, 71, 49,101, 84,161,213,227,179, 69,164, 59, 61,217, 13, - 76,139, 38,154,150, 85, 17,245,109, 21,212, 94,194,230,253,122,118,237,252, 63,118, 51,229,219,231,249, 97,202,188, 61,155,155, -199,118,239,117,185,183,155, 45,111,219, 48,169,151,253,165,181,247, 29,144,197,255, 0,186, 86, 69,154,185,177,175,167, 54,191, -110,233, 53, 41,149, 43,218,189, 9,184,108,215,247,190,249,155, 69,160, 50,234,210,253, 65,250, 53, 77,200,172, 42,159, 74,151, - 45,166,227,134, 30, 29,118,127,120,246,186,191, 46,244, 59,148,198,229, 93, 91,162,198,209,109, 69, 98,214,187, 45,122, 85,145, -109,220,147, 54,155,112,111,218, 69, 66,255, 0,180,170,251,125, 80,157,121, 82,101,220,150,181, 18,154,240,167,215,104, 46, 83, -162, 85, 36,212, 19,245,147,172, 55, 5,237,158,182,189,170,118,111,241,175,183,251,177,186, 92, 50,213, 47,138,213,133, 67,216, - 27,113, 74,181,183,186, 14,223, 84,174,122, 47, 11,119,174,202,223, 59, 29, 14,226,170,191,178,245,148,204,114,158,230,219,222, - 52, 89,210, 61,212, 74,157,109,221,244, 74,100,119,233,207,218,140,207,171,105,175, 15, 60, 86,219, 59, 19,183, 23, 37,185, 55, -107, 42,215,157,246,197,244,141,202,218,155,189,189,196,135,110,218,246, 85,232,222,219,222,187,117, 26,163,120, 88,142,109,229, - 70, 70,225, 69,136,139,192, 85, 33, 71,143, 94,160, 33, 53, 10, 36,116,205, 53, 8, 43,126, 27,135, 2, 45, 74,111,229,107,222, -224,251,173,219,227,235,252,241,159, 47, 99,243,255, 0,140,109,229,209,192, 61,139, 67,254, 54, 13, 55,134, 30, 56,238,159,226, -247,134,189,165,221,155, 88, 82,239, 26, 58,127,141, 58,134,224, 29,184,254, 17,110,133,181,238,252, 37, 74,228,217,202, 39,240, -190,165,239, 17, 99,253,100,191,208, 49,227,221, 17,185, 92,241,117, 46,135,178,187, 35, 81, 28, 31,213, 31,183,183,186,171, 31, -122,172,157,204, 93,241,102,218,215,157,151, 58,233,188,119, 54,204,184,111, 91, 90,206,160,237,157, 94,102,218, 53, 31,110,232, - 55, 5,201, 73,181, 97, 62,229, 82, 21,212,253, 17,170,156,202,136, 53,143, 5,170,122,233,238,255, 0, 21,182, 21,251, 73,221, - 38,109, 61,163,187,173, 42,230,243,109,206,204,217,215,189, 66,226,221,186, 53,235, 74,102,187,180, 15, 88,202,106,225,181, 40, -212,205,160,161, 61, 71,164,207,141,102,114, 42,155, 50,125, 77,232,203,169,120,130,166,250, 89,240,157,111,237,173,252,177, 83, - 70,217,139, 67,114,246,121,205,192,178,182,194,199,221,235, 38,179, 78,133,124, 51,107,215,171,138,221, 10,189,205, 93,167, 93, - 54,173,114, 93,149, 85,143,101, 93, 20, 42,173,118, 11,240,157,147, 78,174, 70,121,218, 70, 95,139,225,190, 91,109, 66, 82,230, -223, 59,143,119,166, 50, 8,184, 3,231,127,135,166, 49, 78, 42,118,162,139,177,156, 68,238,246,208, 80, 63,132, 77, 83,182,246, -242,168, 91, 74,166, 93,239, 65,153,117,219,117, 40, 41,100, 86,172,219,150,169, 75,166,194,137, 94,175, 81, 43, 42,159, 72,151, - 83,133, 10, 28, 42,156,138, 35,149, 8, 81, 34,197,146,211, 13,173, 88,184,129,221,147,190, 91,193,122,238,130, 40, 10,181,162, - 92,146,233,172,210,109,231,107, 47, 92,147, 40,244, 11,118,135, 75,181,237,216, 53, 75,142, 68, 40,170,184,107, 72,161, 81,105, -222,253, 60, 68,134,137,147, 11,242, 90,133, 13,183, 81, 21,165,172, 21, 55, 58, 70,221,186,116,193,180,169,223,215, 31,255,217, +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, 6, 98, 75, 71, 68, 0, 0, 0, + 0, 0, 0,249, 67,187,127, 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,217, 11, 23, 13, 49, 40,184,203,133,107, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,148,101,199, 93, +231,249,137,229, 46,111,201,151, 75,173,218,229,146,188, 27, 27, 83, 50,244,216, 24,170,161,212,110,179, 13, 91,137, 99, 6,204, +176, 73, 3,211, 51,109,250,140, 37,205, 52,115, 12,167,177, 81, 21,208, 6, 26,152,163,106, 24,186, 27, 24,104,149,221,192, 48, +199,224, 86, 25, 4,182,161, 1, 23,182,177,145,109,217, 42,107,177, 84,107, 86, 86,102,190,229, 46,177,204, 31, 17,239,229,171, +116, 45, 89,155,164, 18,247,171,243, 78,170,222, 18, 55,226,222,136,248,254,126,223,223, 47, 34,160, 65,131, 6, 13, 26, 52,104, +208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, + 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,120, 78,160,158,227,235,137,248,202,129, 29, + 82,178,197,123,134, 64, 29,223,111,208,160, 65,131, 6, 13, 26, 92, 3, 16,128,148, 82,220,254,175,247,188,238,247, 62,241,243, +223,126,252,211,191,248, 29,139,239,249,190,175,250,195, 84,203,157, 83,223,105,208,160, 65,131, 6, 13, 26,188,192, 61,117, 1, +164, 63,254,214,151,191,251,231,191,251, 21,111,223, 86,143, 58, 91,122,157,214,155,191,230,165, 47,255,218, 87,108,217,253,145, +207, 28, 61,186,212,175, 30, 3,124, 67,238, 13, 26, 52,104,208,160,193, 11,155,212, 37,208,254,250, 91, 91,223,245,207,182,154, +215,140, 78,156,162, 94, 90,196,140, 74, 94,246,178, 91,230,191,251,107,111,251,214,207, 61,179,164, 62,255,236,202, 39,129, 81, + 67,236, 13, 26, 52,104,208,160,193, 11,219, 83,207,254,250,137,149,163,155,102,211,215,190,233,182,222,118,111, 60,118,117, 5, +179,186,202,252,214,173,250,109,223,248,170,175,183,206,188,244, 35,143, 30,253, 56,176,216, 16,123,131, 6, 13, 26, 52,104,240, +194, 36,117, 0,225, 61,171, 31,120,116,249, 19,199, 70,118,211,157,175,156,123, 89,174, 52,245,104,132, 61,125, 10,178, 54,119, +190,233, 85,175,124,237, 45,179,187,254,252,211,207, 62,209, 47,204,225,230, 17, 53,104,208,160, 65,131, 6, 27,247,158,159,235, +235,229,192, 44,112,227,215,222, 62,243, 3,191,253,182, 29, 63,114, 75, 75,231,195, 97, 13, 74, 33,175,191,149,252,166,155,120, +252,217,197,149,123,126,229,145,159,253,208, 39,158,249, 53, 96, 53,254,222,191,144,111,166,247,126, 39, 48, 31,255,121, 88, 8, +241,162, 54, 74,254,177,181,183,193,186,231,191,111,215,153,207,255,222, 71, 14, 95,203,215,105,208,160, 33,245, 75,135, 4,122, +192,182,237, 61,253,109,255,249, 7,110,251, 87, 95,187,189,179,189, 24, 89,192, 33,182,221, 72,235,230,151, 80,121,199,255,246, +155, 31,253, 79,255,238, 15, 63,245,147,192,211,177,190,151, 77,236,222,251, 29,192,142, 13,126,125, 73, 8,113,104,131,229, 62, + 12,236,142,255,188, 95, 8,177,247, 69, 78,234, 47,138,246, 70,227,100,119, 36,142,157, 83, 31, 29, 2, 14, 3, 7,132, 16, 75, + 87,224, 58,235,203,231, 74,247,193,203, 32, 75,128, 67,226,222, 71,150, 46,226,247,103, 62,255,123, 31,185, 42,207,255,185,186, +206,243, 96, 16,237,158,106,215,184,191, 29, 18,247, 62,114,160,161,166, 6,151, 10,125, 25,164,236,128,153, 77,221,228, 43, 54, +117,244, 38,231,133, 56,195, 82, 16, 32,132, 16,126,252,142, 24,191, 63,249, 84, 3,237,218,250,209, 79,124,224,248,159,252,226, +183,223,244,237,111,220,218,153,171,106, 15, 75,139, 20,237, 46,201,166,109,252,242, 61,187,222,190,243,246,109, 47,127,199,131, +127,241,206,211,253,234, 35, 87,136,216,247, 0, 15, 92,196,100, 12,112, 0, 56, 40,132,216,223,116,155, 23,141,202,176, 39,190, +206,101,224,141, 39,220, 7,189,247,251,163,225,114, 57,228,190, 19,120,248, 18,126,119, 16,184,243, 10,147,202, 60,240,177,117, +111,239, 5,238,111,122,199, 85, 37,243, 29,192,131,235,200,252,140,254,230,247,237, 58, 12,220, 35,238,125,228, 96,115,199, 26, + 60, 23,164, 46, 0,209,201,212,206,159,121,235, 45,239,121,219,235,182,238,154,109, 37,169, 19, 50, 16,182,148,225, 37, 4, 66, +171, 51,254,141,148, 8,165,214,254, 45,194,103, 14,225,107, 47,156,209, 26, 57, 85,142,177, 53,110, 36,248,129, 59, 95,243, 53, +175,191,125,203,251,127,248,189, 7,223,245,177,199, 78,252, 38, 80,242,220, 75,241,123,128, 61,222,251, 61,192, 93, 87,194,115, +107,240,188,226, 99, 23,249,253,187,129,221,222,251,187,174,134,215,252, 60, 96,207, 57,218,216,144,250,213,245,206, 31, 94,167, +142,156, 13, 59,128,135,253,190, 93,247,136,123, 31,105,156,136, 6,207,137,167,190,101,223,183,190,228,189, 63,254,198, 27,222, + 92, 13, 29,222, 9,148, 20,193,129,247, 34,188,144, 8, 39, 2,245,122, 64,138,224,219, 59, 15, 10,132, 16,193,223,247,160,132, + 16, 90, 10, 21, 61,226, 64,234, 30,240, 30, 39, 4,229,176,226,181,183,108,221,242,240,123,190,243, 87,126,252,215,254,236,165, +191,251,167,143,253, 44,112,226, 10,121,237, 99, 79,136, 11,120,107,211,255,126,216,123,127,103, 67,236, 47, 26, 28,138, 74,204, + 33, 33,196,193,232,201,207,199,103,125,247, 84, 31,216, 1, 60,228,189,191,227, 10, 61,251,253, 4,121,255, 66,184, 26,253,236, +238,179,188, 55,239,247,237,218,211,200,191, 87,133,208,231,207, 66,232,247, 3, 7,196,189,143, 28,142,159,143, 21,196,241,119, + 30,244,251,118, 29,110, 60,246, 6, 87,221, 83,207, 18,185,227, 91, 94, 57,255, 6, 63,168,169,139, 18,156, 11, 36, 61, 81,214, +199,254,188, 88,227, 93, 37,145,155,182, 70,114,119, 8, 9,184,168,226, 11,152, 48,188,116,129,248,165, 4, 75,200,207, 23, 80, +149, 53,179,105, 42,255,159,123,191,233, 39,222,240,242,237, 95,241,191,255,250, 71,239, 45,107,251,137, 43, 65,236, 66,136,243, + 74,155,209, 59,127,128, 53,153,118,103,156, 20,247, 54, 93,232,154,198,126, 96,255,217, 60,239, 72,218, 7,128, 3,222,251, 7, +167, 72,112,199, 21,124,246, 7,198, 70,196,243,224, 49,238, 92,103,212,238,158,242,224, 27, 82,191,242,120, 96, 29,161,223, 33, +238,125,100,210,239, 98, 46,195,126,191,111,215, 1,130,138, 52,158,107, 30, 4,110,107,110, 95,131,141, 66, 94,194,111, 84, 85, +187,197,223,251,251, 19,127, 45,100, 73, 39,181,116, 90,208,206,125,124,185,181,255,207, 28,185,172,192,214,136,172, 29, 72,222, + 57,112,142,137, 87, 14, 64, 5,174, 0, 55, 2, 95, 0,101,248,183,175,226,247, 61,222, 59,106,235, 48,165,229, 39,190,235, 13, +187, 31,222,247, 93,127,112,235,182,222,119, 70,218,151, 87,243, 38, 9, 33, 14, 16, 98,154,211, 30,211,158,166,251, 92,211,184, + 83, 8,113,207, 70,164,116, 33,196, 61,235, 60,234,251,174,241,182,239, 89,167, 82, 76, 75,188,123,162,215,216,224,202, 25, 81, + 59,214, 41, 35,247, 79, 19,250, 25,125, 45,144,251, 61, 83,111,237,240,251,118,221,221,220,197, 6, 87,211, 83,199,195,226,125, +127,248,196,187, 62,240,233,147,223,249,202,237,173, 91, 4, 72,231,189,139,221, 18,231, 3,101, 15, 43, 39, 95,127,243,204,171, +126,244,235,110,223,145,235, 92, 58,231, 64,169,224, 91, 59,135,175,250, 8, 37,144, 55,189, 14,185,229,118, 68,111, 59, 34,239, +129, 41,113,131, 19,248,213, 35,184, 19,143,129, 25,129,104,225,177, 88, 15,174, 95,241,230,215,220,124,243, 7,247,125,215,111, +252,243,251,255,139,250,226,145,229,247,179,150,188,119,181,136,253,176,247,254,192,212,224,220,121, 69, 6,252,151,103, 68, 31, +186, 66,153,214,211, 25,254,151,180,220,236, 74,148,241, 92,180,119, 93, 61, 55, 84,222, 37,120,200,251, 89, 75,174,156,247,222, +239,188,134, 99,235,211, 36,177, 95,220,251,200,129,152,156,181, 99,234,243,171,166, 66,173,203,186,191,168,140,251,243,144,230, + 90, 63,189,132, 37,111,151,187, 18,224, 34,140, 40,214, 25, 81,103, 35,246,131,126,223,174, 67, 83,227,100,247,133,126,211,160, +193,229,144,186, 5, 6,192,103,254,252,241,254,123,255,252,241,126,139,179,111, 98,179,233,173,175,221,250,195,223,121,199, 75, +174,107,203, 84, 26,231,131,244, 94, 20,248,114, 0,118,128,122,217,155,209,119,124, 47,234, 37,255,228,156, 18,130, 63,245, 4, +230,241, 15, 97,159,252, 40, 66,165,224, 61, 94, 64, 53,172,120,217,245,155,102,255,224,167,255,251, 95,253,198,119, 62,116,234, +228,114,241,167, 92,185, 24,251,185,112, 69,214,199, 70, 98,187, 59, 14,246,157,103,249,252, 48,107,210,240,210, 57,202,120, 96, +234,183, 7,132, 16,251,167,202,189,155,117, 25,221,177,204,189, 27,201,222,247,222,223, 29,189,209, 29, 23, 91,175,171,209,222, +243,180,245,190, 88,238,244,100,124,197, 51,197,167, 60,218,105, 92,147,222,172,223,183,107,207,186,186, 31,152,250,123,223,149, + 32,117,191,111,215,153,207,235,222, 71,246, 71,226,189, 47,246,129,249,117,223, 63, 8,236,189,152,216,113, 84, 19,206,222,215, +131,129,178,247, 92, 73,102,241,183,227,229,100, 59,207,101,160,199,114,246, 71,195,231,114, 8,126,154,212, 15,108,176,172, 3, + 83,245,218,227,247,237,154,191,130, 70, 70,131, 23, 49, 46, 69,182,118, 64, 65,144,162,143, 17,214,143, 63, 9, 60, 21, 95, 79, + 10, 65,103,223,158,151,253,212, 7,238,249,202,239,191,165,157,118,140,181,248, 98,128, 59,117, 28,183,116, 20, 95,173,144,190, +229, 94,178, 61,191,124, 86, 66, 63,195,106, 93,184,149,228, 13, 63, 76,242, 53, 63, 6,222,131,176,129,183, 5, 84,195,154,215, +190,244,186,205,239,253,177, 93,251,128,155,185,250,235,238,167, 39,163, 75, 26, 96,222,251,221,192,227,209,235, 59,151,183,191, + 35,126,254,177,184,244,234,108,152, 94,231, 58, 31,191,247, 48,103,198,254,215,151,249, 96,140, 15,159,147,124,189,247, 15, 17, +226,120, 59,206, 83,175,135, 35,169, 62, 87,237, 61, 91, 91, 31,143, 36,209, 72,197, 87,134, 96,166, 9,112, 71,244, 92, 47, 21, +103, 62,175, 80,214,199,206, 98,128, 49,229,137, 62,236,247,237,218, 80, 88, 99, 42,139,252,252,125,125,223,174, 7,207,163, 84, + 60, 20,255,158,175,157,227,126,249,248, 21,184, 31,231, 50, 14, 55,106, 68,238,108,186,110,131,171,229,169, 19,189,225, 58,190, +152, 34, 83,117,203,230,252, 91, 31,124,219, 43,246,190,229,101,155, 95, 90,142, 28,214,214, 80,142,192,212, 32, 60, 34,129,236, + 59,126, 22,245,154,111,158, 20,182, 50, 42,249,224, 39,158,224,131,159,124,130, 83,253, 17,137, 18,188,242,250, 5,190,237,142, +219,249,170,219,174, 11, 5,223,244, 6, 68, 58, 67,253,145, 95,128, 84,135, 42, 72,129,233,151,124,223, 55,190,230,245,191,253, +161,207,254,240, 7,255,246,137,119,115,149,150,187, 69, 18,219,179,206, 35,188,216, 50,246,196,201,100,253,224, 61, 56,101, 36, + 76,123,179, 59, 88,203,180, 63,116, 1, 99,227,161,169, 9,238,192,212,164,176,115, 93,189,239,246,222, 31, 62,199, 70, 49, 15, +156, 69, 42,156, 46,107,207,148,103,243,208,243,212,222,245, 89,196, 75, 83,245,219,113, 21,199,202,238, 11, 76,186,151,211,175, +174,120,248,229, 28,100,184, 99, 61,169, 79,140,231,144,129, 61, 45,249,222,205,153,177,221,203, 49,132,167,159,215,217,250,211, +164,255,249,125,187,150, 46,176,140,235,226,250,122,200, 30,223,123, 1,245,237,240,186,241,188, 35, 62,239, 29,211,109,240,251, +118,221,113,177,210,190,223,183,235,146,250, 77,148,224,215,147,122,147, 5,223,224,170,145,250, 25,253, 47,146,232,236, 91, 95, +179,240, 19,251,239,122,249,189, 55,118, 91,173,209,192,226,109, 9,117, 25,175,164, 16,102, 64,242,166, 31, 57,131,208,255,219, +231,143,240,206,223,249, 48,135, 79,174,146,103, 9,137,150, 72, 15,159,124,250, 20,239,251,171,207,242,173,119,220,198,255,185, +231,205,180,179, 4,185,237, 21,232,215,220,133,249,248,111,194,204, 54,192,135, 32,186, 23,252,244,219,223,248, 35,255,245, 99, + 79,188,207,123, 62, 77, 8, 17, 92,105, 66, 95,239,189,238,191,200, 50,198,155, 78, 76, 79, 38,247,156, 37,182,187, 55,122,183, + 15,197,201,100,124,237, 59,206, 83,252,125, 83, 19,220, 61,235, 73, 33, 94,251,161,169, 9,244, 62,239,253, 25, 82,119,148,220, +239, 94, 55,249,220,181, 46,142, 62, 93,183,221,207, 83,123,239,155, 42,239,254,152,196,184,254, 89, 93,109, 15,247, 74, 17,239, + 67,103,243, 92, 99, 56,226, 0, 33, 28,113,248, 42,181, 97,233, 44, 75,215,206,144,124,175, 16,169,223,119, 70,127, 58,147, 20, +247, 70,210,155,190, 15, 15,250,125,187, 14,158,135, 60,207,236,235,235, 36,233,104,184,156,217,215,247,237, 58,155,124,190, 55, + 42, 21,135,206, 67,200,119,179,150,181, 62,238,151,119, 62,135,243,243, 82,163, 68, 53,184, 88, 92,110,214,248,152,208, 95,242, +142,111,184,225, 87,127,255, 7, 94,249,174,235,178,180, 53, 44,107,188, 25,130, 41, 67, 28, 93, 9,192, 34, 54,223,132,254,234, +183, 79,126,252,249,163, 75,188,253, 87, 63,200,167,142,172,224,211,156, 90,165,144,100,164,173,156, 78,183, 67,222,233,240,254, +191,254, 2,239,121,255, 71, 39,191, 81,183,255, 83, 68,251, 58,176,195,112,117, 9,166,170,121,253,109, 91,183,127,245, 43,183, +191,133,201, 34,184,139, 34,220,251,206,243,122, 24, 56,181,110, 66,188,231, 18, 18,173, 30, 92,231, 93,222,113,174, 50,226,251, +211,217,246, 59, 35,233,158, 15, 7,133, 16,103,221, 20, 39, 18,195,253,235,188,157,221,231,152, 44,199,132,121,231,217, 8,101, +170,110,207,103,123, 15,199,242, 14,156,165,172, 43,238,229,122,239,239,187, 28,131,238, 2, 94,231,217, 48,142, 63, 63, 30,175, +125,165,112,247, 5,218, 48,253,222,252, 21,204,186, 14,253,233, 44, 68, 29,227,232,119,158,167, 47,158,189,175,223,251,200, 93, +103,139, 49,199,107,156,183,175,139,123, 31,217, 43,238,125,228,254,243, 17,122,252,222,126,224,174,105,181, 38, 26, 13, 23,131, +157,103,105,239, 70,113,232, 60, 74, 81,131, 6, 87,156,212, 5, 32, 22, 58,122,247,239,253,143, 47,255,253,247,126,203,173,255, + 3, 53,148,174, 14,203,209,132,133, 68,130, 22,160, 5,158, 10,245,178,175, 67,116, 55, 79, 10,184,255,119, 62,202,231,191,180, +204,178, 17, 28,233, 27,158, 94,174,248,194,201, 17,135, 79,142, 88, 42, 44, 94,107,102,103,187,252,193,223,124,158,131,159,252, + 98,100,117,141,218,241,117,248,149, 19,160, 36, 8,143, 19,144,182, 82,190,103,215,203,119, 19,246,148,191,216,216,250, 3,231, +121,237, 94, 55,233,221,121,177, 91,197, 78,237, 45, 62,105,250,133,200, 39,202,207,251, 47, 98, 80,223,115,129,242, 14,174,155, + 36,118, 76,213,111,253, 86,169,123,207, 87,191,179,212,237,185,110,239,222,231,106,227,159,216,150, 7,214,121,233, 87,130,212, +199, 27,222,220, 63,245, 58,192,151,231,106, 60,112,190, 60,136, 13,183, 35,196,132,119,172,243,202,215,147,216,210,186,247,175, +212,178,205,189,231, 75,242,138,228, 58,125, 79,239,190,192,178,186,123, 46, 64,198,231,236,235, 23, 61,201,125,121, 89,205, 82, +214, 6, 47, 58, 82, 31,239, 40,211,125,243,109, 51,255,234,163,255,243,171,223,247, 61,175, 92,120,221,112,104,177, 88,112,117, + 40, 85, 9,132, 18, 8, 45, 16, 74, 34,180, 64, 94,255,154, 73, 33, 95, 60,118,154, 63,254,196, 83,208,110,133,101,110, 82,130, + 82, 88, 36,171,165,229,139, 39,134, 28, 62, 62,164,246, 2,167, 20, 31,250,212,147,107, 21,216,124, 59,126,180, 2,152, 88, 27, + 15,198,241,138, 27, 23,110, 3,174,227,234, 37,204,237,137, 94,228,197, 74, 98,211, 4,181,116, 17,164,112,112,131,147,201,161, + 13,202,180,231,178,252,119,175, 35,216,141,212,239,192,243,212,222,195,207,213,254,251, 49,132, 48,189, 87,251, 18,151, 39, 73, + 47, 69,242,190, 77, 8,113, 71, 84, 86,246, 78,189,238, 18, 66, 44,196,239, 44,157, 65,114,193,240,186, 82, 94,250,161,243,120, +169, 7, 46,211, 51, 61,151,199,123,177,253,105,207, 57,251,250,198,226,218, 87,210,203, 61,176, 1,117,165, 65,131, 23, 4, 46, + 54,166, 62,150,219,175,255,161,127,178,229,167,126,237, 91,111,249,209,196, 41,134,149, 3,229,193, 59,132, 7,225, 4, 94,137, + 32,189,139,240, 19,161, 83,228,252,205,147,130,158, 56,177,194,104, 88, 67, 47, 91,179, 19,198,233,109, 82,130,247,156,238,215, +212,149,225,198, 89,205,106, 81,175, 85, 98,102, 27,160,160, 28, 34, 90, 51,120, 60, 24,195, 75,182,205,108,205, 82,181,189,172, +236,103, 46,178, 93,231,219,239,122, 58,105,102, 62,122,109,123, 46,114,155,216,221,231,152,108,184,144,119, 61,189, 73,207,121, +214, 70,111, 84,210, 59,124,158, 54, 94, 84, 89,235,235,246, 28,182,247, 57, 89, 27, 30, 13,183,245, 49,239,251, 47,103,109,122, +252,237, 70, 54,187,217,235,189, 63,200,153,251,211, 63,192, 37,238,244, 54,181, 5,233, 5, 13,178,184,102,125, 58,150,187,135, +203, 91,179,190,177,254,244,229,137, 97,243,151, 83, 30, 23,177,252,116, 74,197,216,177,129,254,220,100,161, 55,120,209,144,186, + 0,152,201,213, 27,127,238,155,111,220,119,207,206, 45,111,170, 42, 40,146,176,229,171,183, 30, 81, 59,210, 84,178,108,173,107, + 33, 37, 90, 77, 86,176, 11, 0,111, 38,133,109,157,109,163,210, 4,235,136,251,197,251, 72,234,241,175, 23,160, 36,131, 97,205, +147, 69, 65,246,186,169,170,122, 11,190, 6, 83,128,236, 33,188,195, 59,199, 66, 39,105,207,182,211,249,227,213,232,162, 20,136, +141, 28, 25, 26, 99,155,227, 37, 84,227, 37, 53,119,108,240, 18,211, 19,193,142, 24,167,191, 20,204,159,199, 3,188, 28, 92, 18, + 9,199,239,238,124,142,219,123,213, 73, 61, 18,250,195,235,218,113,207,115,121, 66,159, 16,226,144,247,254,126,214,164,255, 29, +222,251, 61,103,203, 35,216,160,194, 52,191, 65,149, 5,130, 20,126, 69,214,172, 95, 70,127,218,125,142,235, 94,145,176,203,212, + 58,247,102, 89,100,131,127,116,164, 62,150,178,147, 87,108,203,191,247,119,190,231, 37,123,191,106,107,123,235,168,114,144,233, + 64,232,181, 67,215,142,180,165,248,215, 31,122,230,147,183,204,165,115, 63,186,115,203, 45,133, 7, 49,246,214,235, 26,119,242, + 11,200,155,222, 0,192, 43,111,216,196,215,188,116, 43,127,249,153, 19,160,117, 32,113, 25, 9,125,188, 47,156, 11,191, 45, 78, + 13,120,233,246,181,113,231, 87,158,133,114, 5, 95,206, 33,226,137, 49,222,141,141, 2, 36, 87, 65,126,143,222, 19, 83,147,236, + 78,239,253,221, 27,156,232,231,215,121,197, 59, 94,192,125, 98,233, 10,124,247, 90,106,239, 70, 8,253,254,231,233,200,221,233, + 93,236,184,140,251,184,126,109,250,133,188,216,233,141,104,118,248,125,187,118, 95,198,161, 34, 75, 87,233,187,151, 67,232, 27, + 61, 45,237, 90, 29,151, 13, 26, 82, 63, 47,161,123, 96,235, 93, 95,185,240,206, 95,250,166, 27,255,215,237,121,146, 14,157, 64, +180,131, 11,238, 43, 71,238, 60, 69, 10,255,203, 31, 61,249, 71,251, 63,122,252,247,127,227,174, 91,239, 21, 62, 42,239, 42, 30, +240,162, 37,254,216,167, 39, 5, 75, 41,248,201,239,184,131,111,122,244,255,131,162,134, 44,141,167,187, 69, 82,119,128,119,208, + 31,242,250, 87,221,192,247,127,253,171, 39,191,117,199, 63,131,247, 53,194, 86,225,139,222, 35,133,231, 84,191, 24,173, 12,171, +213,171,232, 61,237,141,187,155, 77, 79,150, 23, 59,217,143,215,197,254, 99, 25,216,215, 90,123,215, 19,250,254,141, 40, 57, 87, +169,191, 45,121,239, 55,226,189,158,143,192,118,172, 83, 98,118,250,125,187, 46, 86, 57,217,195,139,100,141,244, 89, 78, 75, 91, +138, 99,248, 16, 97,139,217, 67,103,249,205,125,235,140,171, 75, 86, 42, 46,210, 64,186, 84, 5,173, 65, 67,234,231, 36,116,161, +149,120,217,187,255,249,245,191,244,206,255,110,251, 91,140,129,161,150,136, 76,226,157,199,143, 44, 29, 45,120,162, 52,197, 15, +254,246, 23,127,253,145,199, 86,126, 7,112, 79, 45,215,199, 16,254, 21,126,226,169, 3,121, 27,251,196, 71,208, 75, 79, 32,230, +111, 5,224,173,175,191,149,253, 63,246, 79,121,199,111,124,152,225,233, 18,242, 44,100,180,123, 15, 85, 13,195, 17, 95,245,138, +109,188,239,157,223, 76, 39, 79, 66,173,234, 17,246,209,247, 35,210, 44,100,216,123,135,119, 22,164,228,241,163,167, 79, 20,149, + 61,193,213,221, 89,110,250, 68,171, 75, 73,192,121,222, 72,226,121,194, 53,211,222,152,101,190,158,208,239,121,158,171,117,185, +134,205,250,132,179, 75, 81, 78,246,248,125,187,238,127,145,108, 83,122,247, 58, 66,191,243, 66, 75,219,174,240,243,219,216, 78, +140,205,161, 58, 13, 46, 17,242, 2,164,190,245,129,111,186,225, 87,239,125,211,246,183, 20, 6,234,182, 70,180, 20,222, 1, 67, + 75, 39, 87,252,217,179,131, 99,187,126,237,179,239,122,228,177,149,255, 11,120, 2,120,230,115, 39,139,207, 33, 5,216,152,244, +164,100,144,216, 77,159,250, 35,239, 61,227, 34, 63,250,141,175,230,175,126,246,187,121,199,183,124, 5, 47, 89,200,200,125, 77, + 87, 90,222,248,210,205,252,202,143,127, 3,127,241,238, 61,188,100,219,236,228,251,230,111,127, 29,127,250, 9, 72, 50,124, 76, +194,195, 88,144,130,207,125,105,233, 73,194, 57,235,238, 5,118,159, 95,232,235, 77, 47,181,126,187,175,209,246,158,139,208,239, +126,129, 17,250,149, 34,177,203,197, 60,151,190,148,235, 82,251,211,213, 34,218,233,118,236,221, 32,161, 95,206,146,184, 67,151, + 88,214,206,243,121,252, 13, 26, 92,138,167,206, 77,243,233,174, 31,252,138,133,111,172, 10, 7,221, 4,145, 10,124,229, 81,133, + 33,235, 40,126,235,147,139,159,253, 23,239,123,226,231, 86, 70,246,195,192, 34,225,160,151,252, 47, 30, 95,253,155, 35,171,245, + 15,109,110, 39,218,122,191,182, 8,174,213,198, 61,245, 23,152,143,254, 34,250, 77,239,152, 92,231,181,183,108,230,189, 63,244, +117,252,236,247, 27,142,158, 26,144, 38,154,235, 23, 58, 95, 86, 31,251,232, 31, 98,254,254,183, 32,111,135, 1, 35, 21,222, 58, +132,117,212, 69,201,251, 63,252,248, 71,129,213,171, 76,234,151, 50,192,207,144, 80,189,247,243,207,213, 58,235, 13,226,240, 84, +253, 54,148,221,123,158, 61,233,175,133,246, 94, 75,132,126,201, 68, 23, 15,111,153,238,175,247, 95,100, 25,247, 77, 93,255,110, + 46,109,211,157,157, 27,172,235,206, 43,172, 80,108,164, 62,135, 46,225, 25, 92, 10, 14, 76, 25, 19, 27, 93, 77,112,230,178,208, + 75,207,105,104,208,144,250,218,103,183, 46,100, 47,157,207, 20,163,154,224,117, 15, 45,169,243,184, 76,240,206, 15, 62,125,240, +231, 31, 62,242, 94,224, 31,226, 0, 28, 68, 50, 85,207,158,174,254,230,253,159, 89,250,196,191,248,154,173,119,152,194, 34, 82, + 25,101,120, 9,237, 25,236,223,255, 39,252,232, 36,250,141,239, 64,180,215, 54,163,201, 19,205,173, 83, 94,249, 4,245, 8,251, +119,191,137,249,196,127, 64,100, 41, 72, 5,206, 66,146, 65,109, 72, 36,124,248,115, 71,142,254,229,163,199, 14, 18,246,126,191, + 42,164,190,238,136,207,139,153, 20, 14,174, 35,141,171,122,180,229, 37,224,224,212,164, 51,239,189,223,189,129, 29,243,118, 95, +195,237,189, 38, 8,253, 44,187,234, 93,108,110,194,122, 98,184,156,120,252, 78,191,111,215,142, 75, 56,214,116,126,131,113,228, +221,103, 33,194,231,255, 25,132,109,108,119, 92,193,241,181,209,251,184,231,133,118, 47, 26, 92, 27, 56,159,252,174, 30, 61, 54, +122,236, 75,149, 53,237,182,162, 93, 91,218, 10,250,202,249,239,123,232,240,239,254,252,195, 71,126, 10,248, 36,112, 50, 18,122, + 60, 62,141, 26, 56,246, 75,127,126,236,192,114,109,209,181,133,218,133,172,185,184, 41, 13,157, 25,220,227,127, 76,245,254,183, + 99,255,225,253,248,149,103,206, 62,160, 6, 39,112,143, 31,164,250,253, 31,194,124,252,223, 67,158,131,210, 97,179, 25, 33, 16, + 50, 65, 20, 53, 40,207,207,252,222,199,127, 31,248, 66,188,254, 21, 39,245,169,117,203, 23, 61,241,196,101, 72,211,131,248,190, + 11,120,186,207, 53,214,239,100,118,223, 6,238,197,125,215,112,123,207, 69,232,135, 56,255,158, 5, 23, 52,250,214,109, 49,188, +123,221, 61,187,216,254,246,192, 58,207,117,195,147,251,212,146,173,137,177,114,137,253,130,117,198,217,165,224,190, 13,212,117, +250, 59, 7, 47,229, 76,244, 13, 98,105,163, 30,120,172,215, 3, 87, 97,124, 61,112,129,235,174,223,150,184, 33,245, 6, 87,132, +212, 89,236,155,191,253,158,223,253,226,222,135, 30, 59,253,216,135,142, 14,143,253,202,161, 19,135,190,246,223,125,246,167, 15, + 28, 58,245,115,132,163, 47, 23,129, 17,103, 30,160, 98,129,209, 23, 78, 20,127,252,238, 63, 61,250,112,146, 41,124,223,224,107, + 7,196,229,109, 66, 64,187, 7,102,153,250, 35,239,161,122,255,247, 82,253,191,247, 96, 62,178, 15,243,223,126, 25,243,151,191, + 64,245,129,127, 73,245,190,183, 81, 31,188, 31,223,127, 2, 58,179, 97, 83,154,113, 10,156,147,248, 82,144,228,146,255,120,240, +115,143,254,215,191,123,230,119, 9,210,123,125,165,189,243,232, 49,125,140, 51,165,187,165,139,156, 40,167,189,191,112,234,211, +212,164,191, 17,162,184, 90,157, 32, 74,227,211, 94,220,238,115,109, 77, 58,181,228,107,254, 90,109,239,121, 8,253,206,203, 12, + 19,140,143,234, 28,191,166,251,203, 78,239,253,195, 27,217, 25,110,234, 24,221,233,123,124,177, 91,227,238,185, 92,207,247, 10, +110, 27,187,251, 92,199,160,158, 37, 27,157,171,172,234, 76,183,231,238,115, 29,169, 58, 85,175,203, 54, 70,227,125,156,110,211, +158,115, 29, 51, 27,149,129,245, 6, 78, 35,189, 55,216, 48,206, 39,191,215,192,169,191, 58,188,250,127,255,213,225,213,135,129, +153, 72,226, 71,129,101,160, 31,191,179,126, 91,177,241,121,235, 71,127,225, 67, 71,222,251,250,155,218, 47,121,219,235, 54,221, + 62, 90,169, 16,189, 20, 50, 25,118,154,195, 67,146, 32,146, 36,100,176, 47,126, 18,115,252,208,164, 56, 33, 53,232, 20, 58,221, +117,189, 30,168, 44,222,181,200,179,148, 67,159, 63,182,244, 47,255,253, 95,239,139, 94,250,122, 3, 99,163, 19,252,165, 28,213, +122,207,197, 76,178,113,183,180,123, 88, 59,185,108, 76,116, 7,163, 60,183,126,175,234,177,244, 57,158, 84,238,191,202,125, 97, + 63,103, 30,133,121,119, 36,225,253, 83,117,219,205, 90,246,240,225,104,216,236,188,214,218, 27,219,117, 54,175,243,161,139,232, + 10, 7, 46, 97,237,250,238,104, 48,141,143,250, 60,188,238, 62,140,143,181, 93, 79,158,135, 46, 97, 5,193,116,251, 14, 95, 70, +134,247,116, 60,120,135,223,183,107,207, 89, 78,119,219,200,239,239,142,132,117,174,254, 52,233,135, 87,153,196, 14, 76,221,155, +121,224, 99,126,223,174,253,172, 29, 7, 60,222, 92,106,186, 94, 7,184,204, 61,223,197,189,143,236,141, 57, 14,227,254,253, 64, +188, 31, 99, 85,107,126,234,126, 76, 59, 14, 47,134,100,205, 6, 47, 16, 82,183,145,184, 77, 36,113, 25,223, 43,227,203,114,238, +115,203, 13,208,119,222,127,234,127,250,189, 47,254,204,166,142,126,247, 63,187,125,246,134, 98,185,130,153, 4,145,171,181,245, +235,129,193, 33,205,207,191, 14,205, 3,206, 67,105,113, 43, 21,173,235,182,241,153, 35, 75,253,187,246,254,249,222,229, 65,253, +225, 41, 35,227,106,227, 80, 36,244,139,158, 36,133, 16,251,167, 54,176,153,159,158,232,159,239,142, 16,215, 68,223, 21,189,147, + 29,235, 60,207,245, 88, 34,156, 94,245,192,181,218,222,179,224, 98, 61,178,203, 33,158, 29,108, 92,202,222,127,177, 6, 78,244, + 62,119, 94,142,151, 62, 69, 70,103,219, 54,246,192, 69,142,151,131,172, 29, 93,252,192, 5,238,233, 85, 53, 94,227,118,180,211, +198,230,216, 0,186,251, 60,138,211,229,100,255, 79,227,206,117,222,255,249,198,194,120,185,221, 97, 26, 52,184, 8,200, 11,208, +168, 33,196,203,151, 8,199,143,158, 6,134,241,125,127,129,223,150,192,242,202,200, 62,242, 29,251, 31,251, 63,126,235,227,139, +159,205, 83, 73,178, 82,227,150,107, 40,220,164, 20,129, 64,136,179,188,226,127, 88,160,114,248, 21,131, 88, 42,105,205,207,241, +200,225,229,163,111,121,215,193,119, 29, 62,214,255, 47,177,110, 67,174, 94,214,251,193, 56,185,222, 21, 15,226,184,156,253,191, +247, 19,182,151,221,207,198, 50,124, 15,196,137,229,170,239,104, 22, 15,133,185,227, 2,215, 58, 72, 56,246,244,208,181,222,222, +231, 24,227,120,253, 70,251,206, 1, 66, 56,224,158, 75, 8, 9,236, 57,139, 97,112,185,222,237,164,236,139, 93, 67, 29, 15,116, +185,147,115, 39,250, 45, 1,247,139,123, 31,185,243,185, 88, 11, 63,117,164,234,225, 11,246,243,141, 29, 70,179,209,235, 46,137, +123, 31,185,131, 47, 63,176,231,108,134,220,109, 87,121,253,124,131, 23, 41,196, 85, 46, 95, 1,237,104,233,190,250, 7,223,184, +245, 71,254,205, 91,111,248,182, 27,102, 83,109, 74,143,209, 2,114,133,208, 50,120,238,114,170, 58,222,131, 5,111, 28, 20, 22, + 85, 59,146, 68,176, 98,225, 61, 31, 62,245,103,255,246,143, 30,127,176,182,238,111, 89, 91, 74,103,174,197, 7, 16,165,224,245, + 94,226, 97,194,233,102, 7,159,199,122,141,229,240,233,141, 58, 14,110,240, 52,184,107,174,189,207,211,115,223,193,151,231, 38, + 28, 34,200,237,215,236, 70, 47,113,199,186,177, 7,122,255,116,214,125, 84, 17,118,175,123,246, 7,159,175,141,109,162, 4,190, +115, 93,125, 14, 61, 23, 30,242, 57,174,125,240, 69,178,201, 79,131, 23, 41,169,143,137, 61, 7,102,129,237, 55, 47,100,223,112, +247,155,183,126,251, 15,236,220,252,213, 55,206, 36, 9, 94,224,189,199, 9,129,155,170,141,244, 32,189, 15, 91,205, 10, 88, 44, +172,251,207,159, 60,245,169, 7, 63,122,252,143,254,254,233,193, 7,128, 47, 69,229, 96,116,173, 18,122,131, 6, 47, 74,131,229, + 60,164,222,160, 65,131,171, 11,253, 28, 92,195,178, 38,217, 23, 79,157, 42,223,247,147,127,248,244, 71,254,237,135,142,124,229, + 87,223,218,253,234,239,126,221,194, 27, 94,119, 67,251,186,249, 76,117, 58, 90,164, 90, 10,105, 28,126,104, 93,181, 92,185,225, +231,143,143, 78, 28,248,196,169,191,251,203,195,253,191,121,246,116,117, 8,120, 6, 88, 33,196,208,175,218,154,244, 6, 13, 26, + 52,104,208,160, 33,245,115, 24,239, 64, 53, 38,118,160,127,170,111,158,253,147, 79,159,254,240,159,124,250,244, 2,176,173,157, +201, 77,185,150,189, 68,137,212, 56,111, 10,227, 87,135,165, 93,244,158,227, 4,137,125, 37, 26, 7, 3, 46,156,168,215,160, 65, +131, 6, 13, 26, 52,164,126,149,137,221, 18,228,242, 50,122,218,167,129, 99,192,227,195,210,233, 97,233,212,212,247, 29, 33,155, +189,142, 6, 65, 25,141,130,134,204, 27, 52,104,208,160, 65,131,231,153,212,215,147,251,120,121,156, 96,237, 12,116,185,142,212, +253,212,223,134,200, 27, 52,104,208,160, 65,131, 23, 24,169,175, 39,248, 49,113,195,153,137,123, 13,137, 55,104,208,160, 65,131, + 6,215, 16,169,159,141,228, 27, 52,104,112,109,227, 0,107,155,243, 52,107,173, 27, 52,104,208,160, 65,131, 6, 13, 26, 52,104, +208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, + 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 94,124, 16,223,251,117,175,243,166,191, 74,119,110, +150,185,133,121,146, 44, 35, 77, 83,250,171,167, 57,125,114, 57,156,128,106,106, 90,169,230, 85,175,126, 25, 69, 97, 24,150, 35, +110,184,233, 6,172, 51,124,250, 83,143,209,106,229,204,204,244, 40, 71, 35,182,109,219,202,204, 92, 11,179,184,140, 82, 18,169, + 19,150,158, 57,194,233,197, 37, 86,170,154,194, 91, 90,105, 14,194,147,181, 59,164, 89,142,183,150,178,191,202,112,233, 4,175, +126,249,237,188,246,245,175,225,115,143, 61, 70,127,185,196,107, 65,214,238, 50, 51, 55,207,169,147, 39, 73,211, 4, 33, 53, 43, +253,146,225,168, 64, 56,203,246,249, 46,155,102, 51,158,126,250, 36,127,249,232,103,153,155,233, 34, 60,120, 45,217,241,170,151, +211,246, 32, 60,216,225,128,147,199, 79, 50,119,195,117,232, 86,142,176,142, 98, 56,100,241,228, 18, 91, 59, 25,249,168,207,202, +137, 37, 78,215,150,190,117, 88,173, 24, 33, 24, 26, 11, 66, 80,149, 6,161, 60,183,110,218,202,188,146,100,206,210,109,207,146, +221, 48, 79,237, 61,127,245,241, 71,209,194,211, 94, 94, 69, 46,151,168, 77,179,116,175,219, 6,198,144, 88,199,104, 48,160,191, + 60, 36,105,167,228,221, 22,179, 11, 61,182,110,221, 68,213, 95,229,115, 79, 30,230,248,192,209, 91,152, 99,219,245,219,152,153, +155,103, 88,244, 57,114,116,137,214,112,133,217, 78,139,124,118,129,103,250, 35, 4, 48, 63,219,230,228,241,147, 84,195, 17, 69, + 85,179,108, 44,105,171,195, 13,155,230,216,218,206,232, 42, 15,163, 17,162,170, 65, 9,172,169, 49,198,209,175, 12,171,166,102, + 88,213,220, 52,215, 65,229, 57, 54,209, 12,156,229,139, 79,159,100,101,165, 68, 41,129, 21,146, 44,209,244,186, 29, 78,245, 87, + 41, 43,199,214,182,228,214,110,206,233,213, 17,171, 85,133, 19,208,202, 83,110,156,153,165,141,226,200,112,196,103,142, 45,226, + 80,108,206, 53,121,166,145, 74, 65,170, 17,157, 14,165, 79, 89, 58,125,138,165,229, 62,165,181, 56,239,145, 78,160,149,100,100, + 13, 42,145,180,179,140, 20,129,198,163,240,164,137, 70, 75,137,115, 14,149,104,242, 44,163,221, 74,201, 19, 9, 2,172, 19, 8, +175,152,219,210, 98,243,214, 77,116,187, 57,167, 79,247,249,135,207, 62, 69,127, 48,100,199,173,215,115,235, 77,215, 33, 19, 5, +120,180, 16, 8, 33,169,234,138,162, 95,132,227,125, 5,232, 92,211, 91,152, 37,239,180,144, 94, 32,132, 64, 72,137, 80, 18, 41, + 36, 2, 1, 66, 32,180, 68, 10, 69, 85, 84, 88, 99, 64, 72,140,181, 96, 60,197, 96,128,148, 96,107,199, 39,254,230, 16,171,139, + 35, 22, 54,207,178,101,203, 60,105,162,104,205,180,201,218, 41,189, 94,206,252,194, 2,115,243,219, 57,117,228, 8,253,163,207, +224,218,115,108,222,124, 19, 71,159,252, 2,253,211,139,204,222,122, 19, 35, 83, 99,150, 87, 88, 58,252, 20, 89,103, 6,151, 38, + 56, 44, 46,205, 80, 73,130, 43, 28,197,114,159,178, 44, 41,107, 11,222,210,109,181,168,133,103,197,212,116,178,156,249, 78,135, + 76, 41,122,179,109, 28,158,194, 89, 84, 59,167, 59, 63,199,204,182, 57, 58,173, 28,101, 61, 30,144, 90, 33,132,192,185,176, 19, +179, 0,132, 16, 88,231, 16, 2, 60, 14,239,194,126, 81,222, 58,156,247, 8, 17,246,139, 18, 2,240, 22,231, 60, 8,144, 94,224, +140,193, 88,131,181,177, 60, 33, 81, 82,132, 45, 37,157, 5,239,192,135,107,120,239,113,238,204,179,153,188,119,241,229, 39,159, + 43, 41, 67,159,138,239, 25, 99,112,214, 78,213, 99,237,239,248,119,147,178,189, 7, 31,234,225,177,120, 15,136,184,227,149, 23, +120,103,241,227,223,226,145, 50,252,245,206,199,251,178, 86, 23, 33, 68, 60, 30,218,175,213,211,121,140,119, 72, 49,238, 63, 2, + 41, 4,214, 58,140, 13, 7, 73, 74, 41,113,214, 82,151,134,149,229, 1,194, 58,180, 84, 12, 7, 37, 10,104,101, 9, 82,101,212, + 3,131,178,134,153, 86,135,180,149, 48,234,175, 66,191, 64,117, 58,148, 85,129, 82,154, 36,105, 83,121,207,169,122,192,178, 31, +226,171, 26,239, 44,173,118, 11,239, 44,189,249, 46,174,246, 32,161,211,203,240,174,198, 57,143,243, 80,140, 12,197,176, 64,106, +133,197, 83, 87,158,227,167,134,156, 60, 61,162,172, 44,131,194, 48, 50,142,109, 89,155, 77, 51, 93,102, 23,122, 8, 37,192, 58, +234,186,166,246, 53, 2, 75,101, 61,139,131,154, 39,142, 45,210,175, 12, 74,105, 64, 80, 20, 37,206, 3, 72, 16, 2, 45, 61,219, +186, 29,242, 44, 67,107,133,180,150,133, 94,155,185,217, 14,139, 75,171, 60,249,204, 49,188,140,125,206,131,119,142, 86,158,179, +121,243, 2, 58,145, 8, 60,121,222,230,233, 99,139,100,221,140, 60, 73,241,214, 49, 44, 75,172,181,220,122,219, 45,140, 70, 21, +167, 78,173, 80,123,135,247,130, 44,207, 25, 21, 5,185,134, 68, 41, 60, 26,167, 51, 28,158,118, 42, 88,152, 93,224,216,169, 83, +124,233,216, 73,138,210,160, 50,133,183, 22,172, 37, 77, 18,188,115, 12, 71, 37,105,150, 48, 36, 52, 20,175, 0, 0, 32, 0, 73, + 68, 65, 84,211,235,210,206,114,250, 43, 43, 20, 69, 65, 34, 36, 72, 65, 85, 91,172,115, 36, 90,113,221,246, 45,156, 90, 58, 78, + 53,180, 92,119,221, 22, 84, 28, 79,139,167,150,217,118,221,102, 94,254,138,151,226,156, 99,121,101, 25,132,167,149,229, 88,103, + 57,117,226, 4,163,193, 0, 41, 21,121,171,195, 96, 84,112,252,196, 18, 89,174,153,153,233,178,121,203, 60,155,103,122,156, 60, +126,156,147,139, 43,120, 47,184,249,182,109,220,254,242, 27,200,116, 74, 81, 12, 88, 25,140, 24,149,142,178,116,200,186, 40,144, + 90,147, 38, 9, 82, 42, 18,157,146,104, 77, 93,213, 56,231,144, 82, 81, 27, 71,187,149, 35,165,164, 54, 53,121,158,161,181,100, + 84,150, 20,163, 17, 74,105,164,148,120,225, 72,114, 13,198,226,141, 5, 37,177,117, 77, 85, 91,156, 23, 8,231, 72,128,196,123, +148,243,104, 33,145,113, 79, 57,103, 29, 82, 10,102,123,109,188,173,232,175,174, 34,180,196,216, 10,157, 42,138, 97,129,179, 30, +143,167, 54,150,202, 90, 16, 30, 37, 32,209, 26,111, 61, 95, 58,126, 2, 37, 53, 90,106,202,202, 48, 63,191,128,118,113,226,112, +146,209,176, 32,107,229,232, 86, 27,143,199, 26,203,242,210, 50,157, 68, 51, 99, 42, 76,127,149, 85,111, 49, 78, 96,128,210, 91, +138,218, 0,130,186, 54, 56,227, 89,104,117,232,117, 91, 72,231, 81, 82,147,116, 91,100,121,139, 47, 62,115,132,178,170,232,162, +144,181,165,206, 32,105,181,195,196, 37,194,150,121, 35, 83,129,146,200, 68,147,104, 69,183,221, 34, 77, 52, 43,195, 1,101,191, + 2, 15,121,183,131,212, 9,214, 26, 70,163, 10, 95, 22,100, 90,145,100, 41,125, 35,233,247, 71,180,103,123, 12, 6, 35,234,114, +132,113,150,162,182,120,167,152,233,116,153, 85,138, 92, 25,148, 51, 96,106,164, 6,111, 44,198,193,168,170, 25,212,134,190,177, +108,154,105,147,165, 26,167, 36,131,170,230,248,201,101,250,163, 18, 41,193,163, 16, 2,242, 52,161, 40, 10, 10, 99,233,166,138, + 27, 59, 9,253,225,136,126, 85, 99,164, 39,211,138,205,173, 46,109, 4,203,163,146, 47, 44, 46, 99, 17,204, 39, 10,165,100, 36, + 69,133, 73, 83, 42,149, 50, 28,174, 50, 24,149,212, 54, 82,134,243, 36, 74, 80, 59,131, 80,138, 44, 73, 73,165, 64, 8,135,199, +147, 42,133, 84, 30,231, 61, 58,213,164, 89, 66,154,100,100, 73,168,159,247, 2, 33, 96,102,174,197,230,235, 54, 49, 55,223, 97, +121,117,149,207, 31, 62,198, 96, 80,112,253,117, 91,185,233,166, 77, 36,169, 68,198,201, 91, 41,133,173,106,138,213, 81, 32, 38, + 60, 73,146, 48,211,155, 33,111,229, 8, 60, 50, 18,135,148, 42, 76,208, 82, 34,165, 68, 72,144, 8,156,117, 56,231,208, 90, 3, +158,186, 40, 41, 6, 67, 0,210, 44,229,217,167,158,101,249,248, 42,157, 94,206,236,236, 12, 66, 64,154,167, 36,173,132, 60,149, +204,204,180,233,206,204,178,186,120,146,254,201,163,168,110,143,238,230,235, 88, 57,121,132,211, 71,159,101,126,251,117, 12,157, +197,218,130,213,167,143,146,182, 59,160, 53,206, 59, 72, 19,116,146,226,173,160, 88,233, 99,171, 26, 39,194, 1, 9,157, 52, 3, + 1,165,181,100,105, 74, 55,111,161,188,160,211,206,241,194, 83, 58,131, 76, 53,173,217, 46,115,155,231,232,117, 59, 72, 17,140, + 21, 41,215,118,104,150, 82, 78, 72, 41,242, 94, 32,235, 56,217,186, 41, 66, 23, 66,226,189, 99,237,155,113, 60, 71, 2,180,241, + 94, 57,111,215,136,154,177,145, 48,222,109, 74, 76,174, 57, 33, 98,231,176,117, 53, 33,111,107, 45,222,173, 17, 38,145,168,167, +119,171, 26,183, 97,124,109,177,174, 93,227,115,156,165, 20, 40,169, 16,200,201, 38,212, 34, 78,210,227,122, 4, 67, 46, 24,116, +161,222,161, 95,140,235, 55,105, 39,145,228,227, 78,215, 74,105,148, 80, 8,169, 16, 94,224,172,141, 6,194, 90, 57, 8,168,108, + 48, 42,164, 82,193, 96,244,158,112,103,198,134, 72,168,152, 71,224, 92,104, 19, 66,224,157, 67, 56, 49,233,143,241,233,160, 0, +225,195,253,247,241,187,196, 18, 60,110, 98,204, 72, 25,198,130, 82, 30, 33, 5, 2,143,150,225,124,108, 33,195, 75, 74,137,148, +144, 68,187,197,225, 49,214,162,149,140,229,133,235, 78,158, 21, 46,212, 7,144,241, 83,165, 20,227, 26, 8, 60,198, 25,106,235, +113, 16,250, 14,146,170, 54,184,218,210, 74, 83,178, 44, 9, 23, 11,246, 21, 78, 10, 42,107,168,157, 93,123,124,210,145, 9,129, +179, 53, 8,143,136,247, 52, 73, 18, 60, 2, 99, 76, 48,188, 67, 47, 64,137,112,223,157, 15, 6,153,179,161,159, 10, 41,169,107, +139,245, 21,237, 52, 65, 41, 21,142,253, 22,177,143,120, 98,159, 14,125,205, 91, 38,134,157,138, 6,165,137,125, 47,204, 13, 2, + 99, 13,131,193,144, 44,111,225,189,153,140, 23,132, 32,107,101, 12, 7, 35,202,170, 38, 73,211,216,143, 68, 52, 82, 21,105,146, + 0, 18,103,195,189, 74,211, 4, 37, 84,176,121,189,163,170, 42,106, 87,163, 83,133,210, 18, 47,160, 28, 85,161, 47, 0, 74, 18, +250,169, 23, 56, 15, 18,107,145, 74,161,147, 36,144,114,166,241,117, 77, 89,153, 80, 39,173, 48,117, 69,150,101, 32, 4,198, 56, +178, 44, 67, 32,169, 7, 35,164, 55,104,169,112,206,209,202, 58, 36,173, 22,222,122,132,179,225,102, 89,131, 53, 53, 94,132, 9, + 81, 75,129,116, 22, 37, 4, 34,118, 12,129,192,151,134, 86,222,102,211,230,205, 44,175, 12, 41, 87, 43,188,135,218, 38,100,105, +139,178, 28,133,251,237, 60,214, 24,172,247,120,111, 73, 21,180,146,224,185, 31, 61,117,154,153,118, 6,222,161,149,100,166,211, + 70,198, 78, 98,170,130,213,193,128,214,204, 44,202, 7, 66,233,247,251,212, 85, 77, 71, 38, 80,148, 84,101, 77,133,103,136, 9, +167,201, 24,176, 30,172,117, 88,227,200,243,140,109,243,179, 72,235,241, 78,144,164, 57,189,205,179, 60,123,244, 4, 79, 61,123, +130,185,118, 70,207,123,124, 21, 6,149, 76, 19, 4, 14,225, 61, 85,109,176,206,162,180, 32,149,130, 86,158,145,181, 51,234,186, + 98,101,117,192,106, 85,146,119, 90,228,121, 11, 41, 21, 85, 93, 83,141, 74,242,106, 8, 90,225,178,148,149,178,143,110,231,228, +169,100, 56, 24,226,140, 13, 68,141, 68,183,115,230, 82, 77,166, 28, 93, 45,241,197, 8, 41, 60,214, 57,172,119,140,172,101, 24, + 61,134,185,118,206,108,150, 97,165,166,116,150,213,126,193,234,234, 48, 60, 55, 37,113,194,145, 37, 26, 39, 4,131,178, 66, 34, +185,190,173,209,149, 99,165,168,169,241, 72,169,153,239,204,176, 41, 73, 40, 75,195, 23,151,250,244, 71, 37,243, 73,138, 86,129, + 8, 85,162, 41,148,198, 38, 25,101, 49,162, 95,148,212, 85,141,136, 30,142,150, 10,188,195, 75, 73,158,104, 50, 41, 81, 94, 32, + 60,164, 90,144, 72,129,112,130, 44,145,228,105,130,214,138, 60, 83, 40, 68,244,227,161,221,205,216,122,221, 60,237,118,135,126, +127,192, 83, 79,159,226,212,210, 50,155, 23, 22,216,113,235, 86,210, 44,197, 1,194,121, 18,169,168,202,138, 97,127,136,181, 97, + 10, 85,137, 96,102,174, 75,187,221, 14,147, 43, 18, 47,195, 4,143, 12,131, 86, 8, 17, 39,124, 5, 94, 80,149, 21, 58, 73, 16, + 73,206,104, 80, 96,134, 37,194, 25, 18, 45, 89, 29, 20, 60,251,212, 51, 40, 37,233,180, 91,104, 45, 73,210,132,180,219, 38, 73, + 20,189,110,139, 78,111, 22,129,100,229,248, 81,146, 36, 97,118,203,245, 36,198,176,248,204, 51,108,186,225, 58,202, 44,193, 72, +193,232,217,163, 8, 82, 72,114,140, 4,180, 64,232, 4,129,164,236, 23,216,178,196, 11,207,106, 85,211,213,154, 86,162, 24, 58, +139, 87,138, 78,171, 69,162, 36,173,150, 70,104, 69, 97, 45, 94, 73,178, 94,151,222,150,121, 58,189, 46,137, 84, 36, 82, 33,181, +154,120,233,193,171,245,193, 9,181,246, 12, 47,215, 71,143, 93,140,137, 53, 78,158, 99,178,155,246,180,199, 4, 37,165, 64,105, +133,214, 58,148, 63,158, 52, 93, 32,251,200,179, 56,107,227,191, 99, 29,140, 5, 39, 3,241, 73, 25, 72, 66,202, 64,246, 54,120, +212, 99,130, 87, 74,157, 97, 20,172,121,250,107, 4, 19, 62, 7,149,132,191, 94,128,148, 4, 98,147, 2, 49, 38, 9, 17, 9,212, +135,207, 38,237,137,215, 29,183, 59,144, 89,184, 23, 14,130,154, 17,141, 2,175, 2,181,249,104, 92, 76, 27, 74,227,251,235, 76, + 80,169,148,148, 88, 31,188,231,208, 30, 66, 93,132,192,187, 72,242,128,183, 22,161,166,141,150, 48,177, 73, 69,244,112,199,134, +192,152,207, 93, 56, 72,195, 59,198,187,112,143,175, 47,165,152, 24, 82, 82,202, 48, 23, 11, 27,201, 80, 32,124,112,184, 52,114, + 98, 32, 56,231,145, 82, 33,100, 84,108,198, 50, 7, 2,235, 45, 40, 80,145,100,133, 8, 14, 26,113, 44, 35, 2,181, 91, 31,158, +175,139,207,207,213, 22,227, 28, 42, 87,164, 89, 18,239,235,216,187,135,218, 90,106,107,226,184, 12,207, 90,167, 58, 24, 83,222, + 35, 84,184, 95,202,134,154,152,186, 6, 31, 8, 78, 18, 13, 51, 33,194, 61,116, 2,103,205, 68, 29,242, 66, 82,212,193, 9, 77, +180, 66, 6,179, 6, 4, 24, 1, 99,187, 72, 8,129,243, 46, 42, 80,138, 36, 77,226,253,112, 88,231, 80, 50, 60, 67, 60, 20, 69, + 69,171,213, 70, 72, 25, 12,112, 66, 57, 73,162, 24,141, 74,234,162, 68,107,129, 74,194,181,172,245,144,128, 76, 18,148,212, 19, +162, 79, 83, 69, 43,211,224, 28,206,122,156,245, 20,117,137, 74, 52, 90, 43,140,116,172,142, 6,152, 50, 24,136, 90, 42,100, 52, +164,141,247, 72,103, 61, 89,158, 33,181,194, 35, 72, 90, 25,195,170,196,213, 53, 66, 8, 76, 89, 34,157, 37,207, 51,172, 21,224, + 29,105,154,226,188, 15,147,155,151,164, 74,131,117,164,105, 66, 42, 45,222,213, 72,173, 81, 74, 99,107, 67, 93,135,137, 92,120, + 23, 60, 29, 4, 94, 41,156,144, 88, 33,112,222, 82,148, 3,102,186, 9,221,133, 14,167, 79, 45,146, 70,139, 76, 8,208,194, 82, + 87,101,176,178,156,199, 24, 71,226, 29,218, 43,178, 36, 65,101,154,163, 39, 79, 81, 90,143,214,146,218, 89,122, 11, 61,210, 86, +130,246, 30,229, 28,102, 48, 64,102, 18,221,107,225,165,167, 26, 13,233, 47,173,146,183, 91,180,234, 62,101, 49,160,111, 45,206, + 41,172, 3,107, 28,181,115, 88,103, 49,181,195, 58,197,230,110,135,118,162, 73,108, 24, 84,105,187,131,149,130, 47, 28, 61,134, +196,179, 32, 19,188, 49, 24,239, 73, 68,130,212, 42,116, 80,231, 48,117, 9,206, 35,149, 38, 83,138,118, 39, 67, 41,137, 41, 12, +171,203,167,177, 42, 33,239,117, 72, 18,141,195, 83,186, 10, 51,236, 35, 49,248, 68, 81,251,140,254,234,144,153,153,156, 65,127, +132, 41, 10, 42, 3,149, 11,210, 86,175,149,145,136,138, 78, 55, 65, 21, 22,111, 28, 66,133,142, 51, 50,158,126, 81, 82, 24,131, +206, 52, 51,121,138,147,130,194, 89, 6,131, 17,171,253,130,170, 12, 3,209, 10, 80, 8,100,170, 40, 76, 69,225, 44, 91,219,154, +205,194,115,178,168,169,156, 67, 75,193,124,154, 49,151,164, 56, 83,243,196,242,128, 35,253, 33,115,121,134,150, 30, 47, 60,105, +162, 24, 73, 73,157, 36, 24,235, 24, 12, 71, 84,149,193, 56,143, 5,148,112, 8,233,168, 68,176, 84, 51, 37,208,194,131, 51,164, + 16,228, 45, 33, 72,147,132, 60,107,161,165,164,149,104, 82, 21,102, 99,135, 39,205, 53, 91,183,111,102,102,161,135,169, 43,158, +124,250, 20, 71,142,158, 98,110,174,199,205,183,110, 34,111,181,192, 71, 79, 77, 9,108,109, 40, 6, 35,172, 11,147,179,210, 9, +157,217, 30,173,110, 14,202, 7,226, 22,114, 34, 59,135, 73, 80, 76, 60, 62, 33, 20,181, 49, 72, 37,201,219, 57,195,213, 21,250, +171,171, 72, 9, 42, 73, 72,243, 22, 79, 61,246, 24,253,149, 1,237, 94,135,118, 43, 67,107, 77,187, 59,131, 74, 60,237, 92,211, +233,205,210,206,186, 44, 31, 61,134,199,209,154,219, 2, 66,115,252,201, 47,210,154,233,194,252, 12, 21, 37,238,217, 19,212, 75, + 35,124, 59,195, 75,129, 84, 18,149, 5,175,162, 42,106,204,234, 16,161, 52,149,177,116,164,100, 62, 73, 25,120, 75, 9,228,145, +208,211, 76,211,107,103,212, 56,156,148,164,221, 46,179, 91, 54, 51,219,235, 5,131,123,236,233, 10,129,159, 34,176,208,222,224, +133,143,137, 90, 68,246, 13, 10,182, 95, 39, 69,199, 50,226,251, 19,210,145,225, 89, 41,169, 17,168, 72, 4,209,211,141,247, 84, + 42,133,144, 2, 99, 45,214, 90,140, 9,114,125, 80, 9,163,194,226, 61,194,123, 84, 12, 5,248,248,185,139,239,143, 73,127,218, +139, 30, 27, 36,227,231, 40,165, 68,235, 4, 41, 53, 66, 41,132, 15,207, 83, 64, 84, 94,130,236, 59, 14, 7, 72, 37, 39, 78,199, + 52,177,251,169,144,195, 88, 69, 24, 27,128, 99,165,194, 57,183,230, 45,143, 13,153, 41, 37, 1,239,241, 54, 56, 77,225, 61, 57, + 49, 78,148, 82, 19, 47,216,137,105,149,129,120, 47,192,121, 23,148, 1, 1, 78,196,126,171, 64,170,177,163,196, 68,101, 16, 4, +197, 64, 10,206, 8, 69,140,219, 17, 8,201, 79,188,122, 33, 4,210, 11,146, 72,136, 53, 62,212,223,249, 9,233, 78,238,137, 8, + 70, 87,232, 35, 14,169,228, 25,106,136,148, 49,238,233, 1,161, 48, 46, 26,137, 30, 28,142,186, 54,152,218, 34,140, 32,213, 26, + 37,166,119, 45, 23, 56, 47, 48,149,141, 36, 31, 60,110,165, 84, 12, 1, 9,146, 36,143,161, 18,135,244, 2,107, 28,120,131,132, +160, 0, 11,135, 18, 18,111, 67,245,189, 15,252, 49,134, 53, 38,140,219, 68, 7, 47,217,157,249,172, 33, 26, 60,147,126, 93,133, +144,178,140,134,130,117,103,244,151,178, 44,176,181, 39,109,183,130, 3,167, 52,198, 88,148,214, 56, 43,232, 15, 11,132, 20,104, +157,196, 62,228,193, 10, 18,157,144, 36, 65,169,112,198,146, 40, 69,150,167, 65, 77,182,193,120,176,181, 33, 77, 20, 89,170,208, + 22, 68,237,113,133, 37,145, 10,225,195,124,233,157,197,121,135,148, 90,211,106,183, 48,198,144,104,141,140,158,136,113, 46,116, + 46, 99,144, 4, 9,175,170, 74,210, 36, 37, 75, 52,214, 58,138, 81, 65,170, 4,105, 26,226, 40, 82, 43,148,140,158,186, 86,120, + 9,166, 10, 49,143,224, 28,187,201,137, 45, 82, 37,184,104, 61,123,107,169,234, 58,120, 48, 94, 81,142,134, 8,157, 80, 87,134, +118, 59,167, 24,148,216,170, 70, 69, 43,175, 46, 43,188, 9, 30,126,170, 21,117, 49,226,153, 99, 39,104,231, 57, 42, 78, 68,221, +153, 25, 20, 50, 12,130,186,100,117,184, 66,119,102,150, 84,181,168,171,154,165,211,167, 81, 82,209,118, 14, 81,140, 40, 11, 67, +233, 36,198,132,184, 96,225, 61,149,245, 88, 23, 58,224,124, 59,103,161,213,194,214, 22, 13,180, 36,180,231,230,248,194,211,199, + 56,189,218,103, 78, 39,104,235, 41,141,161,176, 6,223, 73, 16, 42, 13,138,134,177,212,214, 34,145,228, 90,145,229, 9,173,118, +155, 68, 40, 86, 7,171,156, 94, 25, 34, 50, 77,187, 51, 19,172, 64,235,168, 7, 37,118, 52,130, 52, 71, 38, 41,253,209,136, 44, + 75, 73, 18,197,240,244,105,172, 49,140,170, 10, 3, 36, 73, 74, 7,207,108,158,210,147,146,170, 44,144, 82, 97,106, 79,101, 29, +131,218, 80,214, 53, 82, 73,122,237, 22, 41,142,218,195,106, 85,177, 58,172, 40, 70,101,176,229, 69,152, 96, 84, 42,113,214, 49, +170, 12, 51,137,230,134, 12,150, 70, 53,171,166, 70, 72, 65, 59, 77,217,156,181,200,140,231,169,211, 21,143, 47,173, 48,147,105, + 50, 45, 2,161,235,148, 74, 37,140,148, 70, 72, 69, 49, 42, 48,166, 14, 19,182, 19, 8, 44, 82, 75, 28, 2,157,104,180, 18,232, + 24,203,149, 82,144, 36, 73,152, 20, 82, 73,187,157, 35,149, 36,209,154, 44, 77,131, 90,228, 13, 73, 91,114,221,205,219,233,206, +245, 40,139,130,163,199, 78,241,236,179, 39,201, 90, 9,183,222,188,133, 45, 11, 29,164,114,177,175,169,208,158,193, 8, 83,135, +193, 42, 37,180,102, 58,116,123, 51,160,130, 92,170,116,156,240,199,146,180, 80,209,139,137, 3,221, 90,140,179, 36,173,156,202, + 25, 78,159, 90, 36, 65, 32,148, 36,235,182, 88, 62,185,204,211,143, 63, 67,146,165,116,187,109,116,146,210,153,153, 33,109, 41, +242, 68,208,235,245,232, 44,108,102,249,196, 34,253,165, 37,122,115, 91, 81,173, 14, 75,207, 62,141,119, 21,201,182,121,138,186, +134,149, 33,197,209, 19,208,234,224,132, 8, 6, 71, 34, 16, 42, 9, 74,193,233, 17, 66, 73, 42, 27,194, 80, 51,121, 78,129,165, +239, 44,173, 60,163,173, 52,153,144,204,116,114,140, 10,132,157,180, 90,244, 54, 45, 48, 59,215, 67, 39,145, 96,165, 12,100, 46, +196, 25, 19,218, 68, 70, 23,107,222,102,240, 30,153,120,119,114,226,149,177, 38,249, 78,123,200,206,225,173, 59,227,132,166,137, + 4,205,154, 52,238,195,108, 59,241,100,199, 6,132, 82,106, 50,169,213,117, 61, 33,202, 9, 89, 75,249,101,134,196,152,192,215, +164,127,251,101, 68, 44, 68,148,169,165,159,120,219,161,156,160,104, 77,134,129,152, 18,154,207, 80, 38, 34, 57, 68,245,199,199, +235,142,229,103,239, 61, 42,106, 21, 34, 90, 9,225,239,218,157,245,214,225, 29,209, 99, 14,100,172,148, 66, 43, 53,165, 48,172, + 93, 95,198,178,188, 20, 49,140, 17, 13,169, 88, 95,188, 71, 4, 22,195,141,115, 15,148, 66, 74, 61, 49, 70, 17, 42,146,109,112, + 52,164,208, 32,124,176, 71,132, 68, 40, 29,115, 13,130, 1, 44,162,145,224,241, 8,233,214,194, 47, 49,124,176,102,111,132,156, + 3, 28,104, 41, 73,148, 68,138, 96, 68, 72, 37, 38,125, 73,122,143,141,249, 22, 30, 79,109,253, 36,148,227,189, 37,209, 10,149, +168,181,147,189,132, 4,124,200,201,112,193,225, 16, 68,135, 99, 28,134, 16, 30,165, 52, 58, 73,131, 55,109, 12,194,129,154, 50, + 78,181, 86, 19, 99,196,186,160,238, 6,131, 85,224,106,131, 18,146, 86,158, 34,132, 15,132,232,131, 65, 96,173,139,170, 70, 36, +120,235,112,181, 69, 43,133,214,161, 77,214,217, 96, 84, 2, 74, 73,202,194, 82, 85, 21,105,146,226,157, 69,105,137, 53,134, 44, + 17,120,225, 88,237, 15,240,214,135,112,113,236,119,206, 57,148, 86, 36,137, 70,107,129, 53, 21,206, 65,158,231, 33, 84, 24,115, + 82, 42,235, 49,150, 48, 95, 38,146,218, 65,191, 24,196, 48,129, 67, 8,135,242, 14,172, 69,182,187,109,178, 44,167,174,107,242, + 44, 18,104, 89, 5,175, 82, 4,107, 70, 42, 73,146,166, 88,107, 73,242, 52,120,216,182,166, 42,170,144,176, 99,195,195,206,178, + 12, 41, 61,206,152,137,197, 89,151, 85,140,127,173,197, 83,226,236, 16, 30,140,247,224, 44,104,201,220,150, 89, 6,131, 1,171, +171, 37, 66, 43,106, 83,162,179,140, 97, 81,130,179, 40, 1,214, 88,170, 24,239, 23, 2, 82,165, 56,121,122,137,165,213, 1,121, +146,128,131,222, 76,143, 44, 77,195,192,247,158,122, 56,162, 86,146,172, 61,131,243,150,193,106,159,114, 80,144, 73, 65, 86,140, +168,107,203,168, 50, 24, 36,181,135,194, 67, 97, 93,240, 30,156, 35, 17,146,249,118, 27, 77,236,176, 74,211,154,155, 99,213,151, + 60,254,244, 51,244, 18, 77, 90, 91,234,186,198,216,112,147,117,146, 35,165, 10,147, 82,244, 62,180, 80,100, 74,146,116, 90,232, +110, 72,104, 90, 92, 94,193, 56, 79,187,215, 35,205,131, 7,234,165,160, 26, 14,130, 97,149,102,120,165, 41,170,154, 52,207, 40, + 87,135, 20,197,128,210,212, 88,239, 81, 82,161,164,160,155, 74, 54,119,115,234,149, 33, 54, 14, 60, 99, 45,131,170,166, 40, 43, +140,128,153, 78,139, 84, 73,140,119,140, 76,205,112, 88,178, 58,168,168,156,139, 19, 70,240,206,164, 86, 84, 85,141,198,115,125, + 43,195,149,142,126, 85, 35,188, 37, 81,146,217, 44, 39,151,130,147, 69,197, 23, 22, 87,104, 39,138, 76,135, 88,147,214,138, 82, + 39,172, 2, 40, 77, 93, 27,108,204, 71,176,149, 5,111,208, 82,131,144, 40, 29,146,224,116,180, 50, 21,225,121, 74, 60, 90, 41, + 58,173,118,144,109,165, 39, 73,195, 4,101,241, 40, 13,219,183,109,163,183,208,163,246,134,147, 39,251, 60,253,204, 73,156,183, +220,114,227, 22, 54,111,158, 11,147,152, 3,129,192,213,142, 81,191,160, 54, 38,144,147, 18,180,123, 93,122,189, 25,148, 92, 75, +136, 11,241,196, 64,210,194, 71,209, 79, 6,111,221,123, 65, 93, 91,180, 78, 73,146,140,165, 99,139,193,170, 78, 82, 84,150,162, + 84,202,231, 31,253, 44, 30, 79,167,219, 34,203, 83,186, 51, 93,242,110,142, 74, 60,189,153, 25,230, 54,109,194,247,135,244, 79, +157,162,213,155,167, 51,187,153,193,137,147, 12,150, 22,201, 54,205, 83, 89,139, 43, 42,250,199, 23,241,173, 28,167, 84,152,248, + 19,137, 72, 18,132, 75, 25,156, 26,224,157,193,224, 25, 86, 21,221, 52, 35,147,146,190,169,209,105, 74,158,166,104, 60,157, 86, +134, 64, 80, 88,139,208,146,206, 66,143,249,205,243,228, 99,153, 19, 63, 49,178,197,148, 84,189, 38,211, 2,110, 45, 89,206, 57, +127,134,172, 56,150,179,189, 63,147,216,148,148,200,104, 0,121,107,113,198, 68,239, 65,158,225, 53,135, 4,180, 64,198,214,216, + 73,204, 90,235, 64,110,107,177,240,232,109, 71, 15, 84, 69,163, 75, 76,201,239,211,222,231,216,107, 87, 83,101,140,219, 54, 81, + 95, 98,142,128,247, 30, 41, 98,157,101, 24,219, 83, 84, 53,145,211, 93,244,112,199,178, 53, 8,188, 35, 24, 1,129, 45,130,158, + 63, 86, 52, 98,125,199,247,108,146,112, 24,243, 2,156, 5,103,125, 80, 41,196,152, 40,131, 81, 97, 38,161, 15, 31,149,226, 24, +107,117, 98, 18,166, 16, 72, 60, 14,227, 45,214, 59,188, 8, 42,198, 90, 34,224, 90, 61,156,240,161,106, 62, 18,186, 80, 65,129, +241,145,233,164,192,199,159,138, 73, 92, 61,148,161,132, 64, 69,246, 14,247, 63, 42, 23, 30, 68, 12,175,184,113,243, 17, 40, 37, + 80, 2,164, 8, 30,186,148,227,103, 21,140, 20, 27, 67, 12, 32,168,106,131,241, 34, 36,166,121, 31, 56, 38,209,107, 33,217, 24, +166, 49,206, 97,173,137, 33,147, 96, 32,105, 41, 98,174,146, 64,105,141, 74, 2, 73, 90, 99,241, 54,134,131,198,164, 47,197, 90, +238,134, 7,231, 44,222,133,123,111,125,184,175,121,150, 34,188, 65,122,113,134,218, 66, 52,222,198, 70,171,115, 22, 45, 4, 90, +141,199, 80,232, 39, 72,208, 90, 35, 19, 24,141,138,144,107, 19,251,128,192,227, 44,180,243,148,193,104,196,168, 52,164, 58,137, +138,213, 56,227, 32,168, 90, 82,235,192,145,206,145, 36, 58,120,239, 34, 40, 73,198, 58, 28,144,166, 41, 58, 9,210,124, 49, 42, +227,115,146,104, 9, 82, 6, 35, 68,102,237, 22,206, 90,242, 36, 33,201, 50,234,170, 12,129,100, 31, 72,221, 91, 27, 46,160, 67, + 12, 83,167, 9, 94,132,100, 53, 91, 27, 68,146, 6, 9, 8, 73, 43,207,113,174,196,155, 26,161,130,181, 86,246,171,137, 69,134, + 15, 94, 67,240, 30,228,196,130,173, 77, 77,150,231,204,206,245,232,175, 14,168, 29, 24, 66,103,213, 74, 83,150,101,140,215,132, +108, 87, 19, 39, 1, 37, 64,103, 9,199, 23, 87, 16, 66,163,181,196, 90, 79,222,106,133,137, 33,140, 14,202,225,136,206,204, 28, +105,214,102, 52, 42, 88, 93, 94, 38, 87, 26,101,107,146, 98, 72, 89, 27,134,198,134,172, 80, 7,133,247, 24, 31,100, 39,129,160, +157,231,244,178, 20,137, 71, 9,137, 76, 19,218,179,115, 60,246,212,211,148,206,176,169,149,227, 70, 67,156, 8,217,175,169, 82, + 40, 21,172, 63,227,130,172,136,135, 84, 73,180,212,180,230,186,120, 17, 6,240,233,211,167,145, 90, 51, 51, 51,143,240, 18,227, + 45, 85, 89, 80, 23, 69,152,200, 85,136, 89,123,225, 73, 50,205,104,117,128,171, 13,133,117, 32, 53, 18, 79, 38, 5, 91,123, 45, + 84, 89, 81, 87, 21, 72, 65,105,106, 70,117,205,160, 50, 84,206,210,106,231,116, 82,141, 53, 21,165,243, 12, 70, 37,195, 81, 69, + 85,213,120, 25, 36, 66, 27, 45, 78,103,131, 74,177, 37, 79,233,224, 88, 46,106, 42,225,208, 90, 49,155,230,244,100, 66,191,168, +120,108,105, 9,180,163,157, 40,132,119,168, 36,193,234,132,190, 16,212, 66,226, 76, 72,242,176,206, 83,213,150,218,185, 40,201, +129,144, 58,196,221, 67,150, 36, 74, 16, 66, 41, 66,146,104, 69,167,149,145,199, 12, 84,173, 36, 73, 26, 60, 55, 39, 61, 91,175, +223,202,220,252, 60, 88,195,234, 82,159,103,158, 57, 65, 93, 57,110,186,105, 43, 55, 94,191, 16,173,115,133, 20, 9,194, 67, 49, +232,135,164,171, 56, 81,183, 58, 45, 58,179, 51, 72, 61, 78,238, 89,151, 80,133, 8,153,190, 82, 4, 15, 94, 37,212,181, 65, 74, + 73,150,231,172,158, 92, 98,184,184, 74,158,230,168, 52, 97,102,126,134,199, 31,125,140, 35, 79, 29,161,221,106,211,110,183,233, +245,186,116,123, 93,148,246,228,185, 98, 97,118, 30, 73,194,202,179, 71,209, 73,194,204,150, 77, 44, 46, 30,167, 60,125,154,238, +252, 28,190,221,194, 85, 53,163,197,211, 24, 3, 86,133,196, 85,157,134,248,190, 18, 9,102, 84, 97, 6, 53, 8,193,234,104, 72, +174, 52,243,173, 54,253,178,164, 78, 20,121,222, 66,121,200, 91, 25,105, 43,163,118, 22, 39, 53,121,175,203,220,230,121, 90,237, +108,205,211,140,147,230, 56, 73,107, 34,165,159,145,125,238,195,164, 25,147, 6,253, 84, 50,156,159, 34,143, 49,105, 78,164,119, +231, 38,222,164, 24, 43,211,172,147,111,109, 72,128, 12, 82,180,195,198, 44,118,239, 60,182, 54, 24, 99, 38, 49, 98, 21, 37,122, +169, 36, 90,107,148,214,129, 28,166, 60,252,105, 79,122,252,222,196, 0,136,159, 57, 31, 18,207,164,138, 74, 67, 84, 97,252,132, +168,253,148,162, 16,141,133, 9,161, 75,156, 35, 42, 11,193,203,146, 74, 79, 18,233, 38, 4,185,214,131,214,254, 29, 61,191, 16, +175,247, 33,233,214,251,104,148,248, 53,195, 69,201, 72,146, 46,132, 40,125,120, 70,214, 56,108, 84, 61, 66, 22,125, 36,216, 24, +167, 70,128, 66, 77, 72,116,236, 55,249, 24,162, 24, 39,213,249,113,111,143,158,180,144, 65, 62,247, 83,121, 18,147,241,128, 64, + 75, 21,194, 96, 99,189,192,218, 73, 2,223,216,107, 15,202, 64, 80,217,117, 36,117, 49, 86, 98,116,184,238,120,158,247,128,137, + 9,129,149, 13,121, 81, 46, 26, 88, 82, 66,162, 19,116, 52,116,240, 65, 37, 8,234, 94, 72,150, 19, 42, 60,115, 37, 98,216, 38, +206, 87, 73,150, 96,106,139,117,225, 53, 81,103,188,159, 36,123,218,113, 95,139,202,208, 56,133,175,172, 43,218,173,140, 68,130, +247,246,140, 80, 4, 49,180, 17,114,122,131,225,104,129, 68,199,100, 55,130, 97,231,199, 43, 99,132, 96, 52, 24,162, 0, 37, 85, +140,251, 43, 76,109,201, 82, 69, 93, 85, 12, 7, 67,116,154,134, 92, 10,235,162,161, 37, 67, 98,165, 84, 65,193,142,206, 81,162, + 53,146,240, 61,107, 45,214,212,228, 90,147, 37, 41,206, 67, 89, 86, 56, 19,212, 10, 37, 69,136,215, 75,137,204,178,140,162,170, + 72, 91, 45,188,115,177,195,173, 37,130, 20,101, 65,167,211,194,137,176,228, 69,107, 29, 6,111,109, 24, 21,101,144, 54, 5, 72, + 13,237, 86, 59,120, 99, 66, 32,148,198, 26, 67,109,106, 32,100, 7, 58,192,122,129,209, 10, 39, 37, 94, 72, 16, 26, 83, 87,244, +102,218,100,121,139,213,254, 0,157, 36, 84,214,161,179, 78,204,244, 43, 65,170, 16, 99,177, 54,100,193,123, 71,170, 37,163,210, +114,244,216, 34,157,118, 32, 81,153, 39, 36,105,130, 20, 2,229, 28, 85, 89, 82,122, 79,222,155,195,225,233, 47,175, 96,170,154, + 68, 74,124, 57, 66,186,154, 65, 85, 81, 75, 69,109,106,202,104, 45,187, 56,160,242, 36,165,215,110, 35, 99,236, 95, 43, 77,187, +219,230,153,165, 69,158, 57,113,130, 45,179, 61,228,160,164,176,117,200, 19,240, 30,153,166,136, 44,129, 52, 26, 33, 54,196,161, +211, 84,211,158,237,146,168, 12, 83, 11, 86, 86,250,156, 94, 89,166, 61,211,161, 59,211, 13,241, 41, 99,168,202, 17,117,101, 67, +242, 34,130,218, 88,178, 60,165,168, 10, 70,163, 17,198, 10, 16, 58,100,198, 90,216,222,109, 51,159, 38,148,253, 17, 94,130,119, + 33, 4,176, 92, 25, 10,107,113,105, 66,119,166,133, 51, 21,181, 51, 12,235,154,209,168,100, 80,212, 49,228, 44,176, 46,198, 81, + 21, 84,198,208, 75, 21,155,180,162, 95,140, 24, 58, 11, 18,218, 73,206, 86,221, 66,213,130, 47,157, 94,101,169,182,204,170,168, + 14,107,133,215,138,190, 72, 40, 33,198,184,130,151, 86, 91,199,176,172, 66, 50,141, 86, 8, 45, 16, 50,116, 88,176,136,177, 33, + 36, 5, 73,162,232,180,115,218,157, 22,142, 48, 91,100, 73, 18, 38, 50, 41,216,186,125,129,217, 45,179, 8,105, 24,246,135, 28, +251,210,169,152,233,190,192,173, 55,111, 33, 73,114,156,181, 99,247,147, 81,127,136,169,234,104,117, 11,242,118,139, 94,175, 11, + 82, 96, 8, 18,180,144,225, 89, 75, 47,145, 81,141,241,193,109,143,131, 47, 40, 45, 82, 75,234,106,196,234,226, 34, 82,134,208, + 65,103,166,203,104,101,200,231,254,254,147, 36, 74,211,110,119,152,155,155,163, 55, 59,139, 74, 37, 58,177,204,206,206,209,234, +204,178,122,114,145,202, 84,204,110,221, 70, 85, 25,134, 75,139, 36,237, 12, 57, 63, 67, 81, 21,212, 43,125,138,165, 21,156, 76, + 80, 42, 33,203, 82,156,242, 40,157,224,107, 40, 6, 35, 84, 34, 41,170, 2, 89, 91,230,178, 22,163,170, 98,224, 44,237,118, 72, + 10,205,180,102,166, 59,131, 21, 14,167, 4, 89,183,205,236,182,205,116,123,221, 32,125,122, 31, 60, 18, 31, 38,239,105,217, 28, + 49,118, 63,162,151, 34,229, 68, 95, 95, 35, 11, 49,201, 10,102,146, 48, 44, 38,147,161,243,107,222,125,240, 98,198,196,105,163, + 28,110,177, 38, 76,188,184, 40,239, 59, 23,194,100,209, 81,152,168,121,177, 62,211,158,246, 36, 46, 60,158,124,215, 43, 12, 83, +177,239,181,236,250, 53,111,107,236, 45,143,201,212, 58,247,229, 75,231,162,116,111,140, 9,177,125, 33, 39, 30,234,218, 50,185, +144,153,236,198,249, 4, 34,146,113,108, 11,209,179, 12,147,125,240,142,199,247,109,156,167, 16,150, 60,201, 64, 62, 34,198,193, +165, 12, 70,135, 8,201,168, 99,153,119,220, 38,198,203, 11,163,122, 20, 18,200,166,226, 32, 49, 86, 27,200, 44,100,112, 43, 29, +146, 1,153, 34, 88, 33, 68, 48, 4,198,223, 31, 75,241,113,137,104, 72, 54,243,104, 29,250,136, 84, 97, 14, 31, 43,254,227,251, + 23,171,132, 20, 33,132, 38,133,140, 89,248, 62,182, 65, 50, 9,193,199, 36, 68,231, 29,131,186,192,184, 49,137, 70,181, 71,138, +184,162,100,220,174,224, 96, 24, 23,157, 0, 27,140, 24, 41,130,234,224,189, 71, 69,101,198, 24, 19,140, 0,103, 34, 17,135,126, + 42,163,193, 98, 76, 48,202,133, 27, 39, 16, 6, 71,166, 54,134, 52, 77,104,103, 45,240,225,217,137,216,241,156,247,129,108, 17, +147, 28, 14,188,159, 40, 65,222,199,254, 3,193, 0,215,154,178, 42, 66,168, 51,134, 15,148, 86, 24,107,208,137,198, 58,203,112, + 52,138,170,118, 50,233,115, 66,168, 16,102,147,129,220,125, 12, 93, 40, 29,115, 44, 28, 56, 23,140, 27, 41, 64,199,132,201, 81, +109,169,203, 26, 23, 21, 11, 29,201, 93, 10, 28,101, 89,160,211, 20, 83, 87, 96,106,106, 87, 35,156, 71, 74,143,177, 21,121, 43, +167,182, 54, 72,161, 42,116,236,209,104,132,117, 6,149,104,132,119,100,185,128, 44, 16,144,244, 33,113,168, 44, 11, 74, 99,113, + 8,106,103, 49, 34, 76,210, 10,137,139, 3, 16,231, 40, 77,193,204,252, 12, 74, 58,134,253, 21,112, 80, 89,135,200, 82,202,225, + 0, 41,100,200,132,198, 97,235,160,247, 24, 39,232,100,146,163, 39, 22, 41, 44, 49,174, 15,105,158,160, 85,156,140,189,163, 28, + 12, 73,186, 93,100,154, 51, 44, 86,233,159, 94, 34, 87, 41,174,170,104,153,146, 62,138,161,241,120,161,168,140,167,180,150,218, +133,120,150, 18,130,217,118,139,182,214, 40, 28,162, 12, 75,203, 68,154,241,196,145, 99,228,105,198,246,222, 28, 43, 39,151, 81, + 42, 65,235, 4,239, 5, 42,203,145, 50, 44,179, 51, 85,133,112,150, 60,209,164, 42,165,213,107,199, 36, 23,205,210,169, 83,216, +170,162,189, 48, 15, 58, 36,145, 81, 25,220,104, 4, 74, 32,117, 18, 38, 9, 45, 81, 42,101,184,180,138,183, 5,149, 31, 75,117, +134,153,150,226,134,173, 51,140, 70, 67,156,175,249,255,217,122,175, 30, 89,178,236,222,239,183, 93,152,116,229,142,237,238, 25, +154, 11,233,251, 63, 10, 16, 32,225, 62, 8, 50, 23, 2,174,112, 65,145, 20, 41, 82,156, 33,123,166,187,143,169,170,204,112,219, +234, 97,237,136,204,115,200, 1, 26,152, 54,167, 42, 77, 68,236,181,254, 22,107,153,163, 28,162, 83,200,228,172,120,184,219,209, +250, 68, 72,153, 37, 41,230, 37, 51, 76,194, 85, 41, 99,137, 21,206,179, 90, 19, 67,162,100,197,219,214,145,162,103,140,145,140, +166,211, 29,119,174, 69,229,196, 31,206, 47,252, 58,120,158,156, 1,109,113,218, 80,140,227,172, 45, 99,169, 98,219, 20, 33, 69, +116,201, 44,139,108,235, 86, 25,208,174,114,124, 1,136,152, 34,214, 56, 99, 12,141,209,236, 90,195,126,223,161,141, 12,143,206, + 90,172,117,160, 21, 15, 79, 71, 62,188,187,199, 22,205, 48,204,252,252,167, 23, 62,191,190,242,240,246,142, 15, 63, 62,210, 52, + 45,105, 19,246,192, 56,142,162,191, 40, 34, 24,234,250,158,195,195, 9,213,218,170,250,149,233, 56,223, 76,218,235,255, 12, 34, +240,138, 73,208, 6, 99, 29,104,184,124, 57,227,115, 65, 57, 71,191,235, 56,220,159,248,175,255,251,223, 48, 79,153,246,216,113, +127,127,228,238,238, 1,211, 58,180, 77, 28,142,119,220,221,191,225,242,252,204,252,250,137,253,155, 55,196, 98,184,252,249, 55, + 26,101, 81, 15,123,198, 16, 40,151,137,241,243, 87,146,113, 20, 5,109,231, 40, 54, 97, 48,152,220, 49, 93,102,177,206,228,200, + 48,205, 60, 29,142, 88,165,248,205,143,152,187,131, 64,112, 37,112,218,183,160, 18, 20, 3,198,114,247,225,137,247,239,238,113, +198,144,114, 33,107, 81,107, 43,193,237, 4,165,209,144, 85, 22,100,106, 93,175,111,132, 96,155,130,187,226,180, 87, 78, 92, 96, +207,117,155, 53,133,234, 76, 88,185,119, 75,201,213, 53, 86, 32,151, 72,142,114,168, 22,174, 16,127,174, 91,163,179, 86,108,132, +218,214,237,209,108, 63, 99,227,206, 43,220, 95,170,176,238,214,139, 30,110, 32,120, 81, 45,215,131,189, 62,107, 84,213, 14,228, + 20, 55,248, 93,161,235,230, 45,206, 15,149, 5,238, 68,233,202,235, 42,148,184,103, 49,170, 10,167, 86,251, 88, 81, 50,152, 86, + 40, 91,175,214,180, 10,187, 27,165,170,126, 78,188, 26, 69, 33,215, 90, 54, 98,169,211, 5,140, 60, 11,149,210,104,163,208, 90, +212,204,214, 32,202,246, 18,200, 49,138,224, 51,101,200, 81, 22, 12, 34,232, 34, 52, 81, 73,104,179, 30,204,130, 46,161,174, 54, +173, 21, 29, 81,245,181,172, 67, 73, 34,145,148, 80, 39,242, 90,179,104, 13,180,108,197, 90, 23,186,166,161, 20, 77,171,148,104, + 1,182,109, 63, 67,209,248, 92, 8,213,223,111,172, 70,185, 2, 86,120,102,141, 12,234, 74,201,118, 78,253, 46,100,128, 86,248, +156, 48,165, 34, 45, 81, 80, 51,227,234,103,142,104, 95,114, 41,132,148, 40,170, 30,248,197,139,186,254, 70,124,104,156,173, 57, + 1,245, 13, 43, 65, 49, 98, 1, 83,106, 86,192,205, 16,168, 74,217,174, 47, 31,146, 32,112, 59, 11,161,212,103,147, 80,145,169, +104, 76, 17,161,166, 12,159,162,177, 82,230, 58,124,164,141,198,145,127,150,149,102,156, 2, 69,105,113,103, 89, 69, 40,178,245, +234,198,241,114,121,169, 52,165, 35,248, 32,127,214,104,148,181, 68,228,158, 20,123,184, 32, 55, 90,107,172, 82,152,168,136, 65, + 16,108,227,100, 40,153,199,200, 60,205, 20, 43,239,201,162,208, 37,163, 83, 8,236,118, 59, 9,248,136,162,158, 43, 21, 38, 47, +185,144, 74,161,233, 58,161, 48, 42, 44,133,129,101, 94,190,241,129,182,141, 64,127, 37,136,245,194, 24,195, 50, 45,132, 20,100, + 94,214,154,108, 44,217, 88,176, 2,141,171, 82, 40,113, 65,165,204,211,227, 29,195,203, 72,240,158, 84, 18,161,120,250,182, 39, +120, 47, 40,136, 49, 84,189, 2, 73,116, 46,228,172,120, 62,191,224, 90, 39,147,145, 50, 56,231, 68,116, 80, 10,105,241,204, 41, +209,236,118,152, 18,184,188, 12, 85, 8,173,201,179,112,234, 75,202, 68,228,194, 25,147, 8,203, 74, 77, 64, 56,116, 45,135,166, +197, 85,219,137,113,145,254,238,192, 63,254,249,103, 46,203,200,199,183, 79,204,159,190, 50, 79, 3,218, 57,225,165,211, 36,155, +186,113, 36, 47,162, 55,163, 53, 77,211,210,223,237, 81,189, 35,148,200,197,143, 60,191, 60,211,238,247,236, 30, 31,201, 33, 19, + 82, 96,246,139, 12, 52,213,187, 88,170,191,116,188, 12,248, 37, 80,180, 17, 53,100, 74,168, 8, 31, 79,123,246, 25,226, 16, 81, +198,146,189, 80, 9,151, 32, 28,208,225,208,178,183,154, 16, 68,185,238, 67, 98,153,102, 38, 63,163,180, 28,232,185,126,190,168, + 66, 76,153,155,251,126, 8, 0, 0, 32, 0, 73, 68, 65, 84,135, 86,209,231,204,101,246,248, 36, 23,215,125,107, 57, 41,195,191, +141, 51,255,250, 58,208, 55, 22,167, 52, 78, 65,114,154,139,117, 4, 20,148,132,174,124, 84, 6,150,152, 54, 59,134,118, 34, 80, +171, 43, 29, 38, 37, 26,173,105,172,208, 59,125,219,112,220,237,113,214,137, 61, 5,196, 66,162, 97,127,234,121,120,127, 79, 81, +150,156, 3,191,253,246,149,207,159, 94,184, 63, 29,249,139, 31, 30,185,235,123, 20, 50,204, 25,165,152,135,145, 48, 45, 98,171, + 81, 10,183,107, 57, 60,221, 97,187, 6, 84,221, 68,170,133, 73,124,203,213, 78,100, 86, 56, 87,182,138,101, 17,215,130,109, 52, +126, 88,240,211, 34,215,251,190,227,253,239,126,226, 95,254,225,159,248,227,223,255, 63,180,206,113,255,240,192,221,211, 3,182, + 53,104, 93,216,117, 45,111,238, 31, 40,203,194,240,245, 19,221,221, 19,237,195, 91,198,151,223,200,241,130, 57,237, 68,156, 57, + 6,150, 95, 94,152, 82, 38, 24,197,110,215,161, 28, 36,173,176,182,197, 79, 35,197, 39, 76,210,124,157, 47, 28,119, 61,251,166, +231, 57,204, 52,251, 29,141,181,176,120,118,187, 61,182,105,137, 57, 19, 84,226,254,237, 3,111,223,188,161, 32, 3,175,209, 34, + 28,189,133,204,215, 65,198, 84, 91, 12,122,229, 2,175,138,244,245,122,187,110,158,106,219, 72, 75, 17,139,105, 76,137,196,245, +193,249,125,240,203,250,151, 4,209,136,144, 12, 37,155,174,232, 28, 64,217,170,154,222,230,138,132,210,165, 10,174,202, 6,237, +175,170,253,111,160,245,155,127,119, 11,193,223, 66,242, 70, 95, 45, 78,171, 71, 88,215,205,104, 67, 46,180,132, 11,217, 85,207, + 64, 65, 64,215, 10, 83, 27,131,177,102,179,137,149, 27, 84, 83, 14,237,245, 0, 43, 27, 7, 93,170, 69,174,177, 13, 68,136, 41, +212, 67, 88,158, 99, 37,177,121,200,203,250,249,101,181,169,248, 83, 78,215,208,158,154, 17, 32,135, 83,229,182, 85,222, 60,234, +171,214,160,108, 40,134,250, 70, 95,112,117,114, 8,103,174,179,186, 18, 6,202, 86,104,190, 30,188, 70,139,133, 12, 97,100,229, +115,191, 21,254,149,106,247,170,249, 1, 90, 73,246,136,210, 66, 5, 80,137,122,173, 43,100, 46,238,133,156, 10, 6, 67, 74,224, + 83,196,106, 69, 41, 87,199,131,181,213, 98,136, 32, 40, 57,103, 97,132,149,198,100, 39,232,134,186,126,175,182, 42,226, 75,181, +204,149,148, 40,213,225,178, 90, 26,114, 89, 55,237,250,202,181, 80,108,113, 9,228, 12,125,223,215, 47, 99, 35, 79, 68,221,174, +111,134,220,250,123,149, 46, 87,139,230,154,161, 80,105, 34, 99, 45,243, 60, 19,179, 12,140,214, 88,114,200,168, 92,232,173,101, + 25, 39,150,217, 99, 91,139,178,215,231,187,213,171, 40, 87,161, 52, 56,163,101,249,173,122,167,164, 16, 42, 55, 67,227, 26,180, + 19, 33,244, 52,121, 84,178, 85, 66, 40,223,137,206,177,208,118,157,220,124,117,242, 37,203, 47,202, 49,211, 54, 13,174,233,182, + 15,176,148,140, 74, 10,239, 61, 5,133,173, 30,213,182,237, 81, 70,145,115,148, 27,199,128, 31, 39, 92,117,118,164,146, 81,198, + 80,234,244,145, 75, 68,229, 76, 12, 1,107, 21,167,195,137,229,121, 36, 44,133, 20, 2,170,104, 9,213,240, 97,155,222, 98, 20, + 40, 23, 10, 70, 37,190, 94, 70, 62,191,188,210,183, 13, 80,112, 77,131,209,141, 64, 35, 41, 17,231,133,102,119,192,237,118,132, +193,243,114,121,198, 24,141, 31,207,232,156, 40, 40,166,152,209,198, 16,115,102,142,149,203,162,208, 40,195, 97,127, 64, 87,101, +182, 74,137,221,241,192,243,226,249,127,255,248,103,222, 62, 61,242,238,116,228,151, 95,126, 38, 33, 63, 67,165, 66, 14, 6,109, + 45, 16,136,113,166,164,133,214, 26,186,174,165, 59,236, 73, 62,227, 83, 98,248,250,194,249, 60,112,255,246, 45,221,161,149,128, + 24, 31,240,203, 82,175, 31, 43,240,115,245,168, 78,227, 40, 9, 90, 89,208,144, 28, 19,247,189,227,253,195, 29,227,121,168, 10, + 85, 24,150,192,197, 71,124, 44,216,198,113,119,220, 9, 23,155, 18, 75, 76, 76,190,112,126, 93, 4, 41, 49,134,165,134, 75,168, +234,181, 61, 56,197,163,214,156, 23,207, 28,229,162,126,106, 28,119,198,242, 60,121,126,254, 50, 96,173,198,104, 9, 61,200,206, + 48,219,142,133, 66,200, 69, 66,132,170,136,165,160, 89,124, 66, 43,133,115, 18, 70,147,138, 8, 95,116, 22,200,189,113, 6,103, + 53,251,198,114,216,119,180,187,166, 6, 69, 36,218,182,193, 52,134,110,215,240,244,230, 65,224,232, 24,248,243, 47, 47,252,250, +235,153,118,215,241,195,239, 30, 57,157, 14, 20,165,200, 74,110,196,249, 60,178, 76,139,216,150,180,166,233, 26, 78,143,247,184, +206, 65,201, 24,170, 55,153,171,224, 10, 4,142,219,212,221, 40,162,247, 34, 14,117,150, 56, 78,204,227, 36, 1, 23, 26,222,191, +123,207, 52, 37,254,207,255,249,127, 69,107,184,123,124,224,253,219,247, 52,125,135,115,176,107, 12,135,211,145,198, 90,198,223, +158,113,125,203,238,237, 59,166,151,175,148,113,193, 30, 14, 68,103,153, 39, 79,248,250,194,171, 15,148, 98, 57,117, 61,205,206, +145,116,193,154,142, 18,192, 79, 30,148,226,235,112, 97,135,227, 77,215,243,178, 12, 76, 6,220,190, 37,251, 64,215, 26,142,187, +158,162, 10,197,104,238,158, 30,120,250,233,157,120, 98, 43, 60,123,171, 46,215,122,133, 73,215,237, 70,127,227,247,198,232,205, +187,174,111,108, 86,183, 57, 46,249,134,131, 20, 49,118,217, 32,197,245, 16, 95, 15,147, 24,195, 85,196,180,254,153,237,255,139, +101,169,160, 69, 12,165,203,166, 12, 79,213, 6,181,250,148,111,135,133,111, 14,238,239, 32,250,252,157,111,126, 11,194,161, 84, +229,185, 6, 45, 15,251,245, 65,159, 75,174,126,117,110,148,217,171,101, 77,125, 11, 85,107, 13,170, 14, 26,138, 42,170, 83, 98, +121, 50,186, 34, 1,121,123,221, 24, 65,195, 54,165,254,122, 24,213,231, 46,100,180, 2,167, 76, 29, 88, 76,101, 66,106,162,221, +141,144, 79, 87,202,104, 61,248, 76,133,139,215,175,103, 29, 88, 5,238, 23,181,181,254,142, 46, 81, 21, 29, 49, 78,116, 1, 34, +142,187, 6,251,104,165,112, 70,134,109, 9,103, 17,107,213,170,168,171, 49, 46,132, 36,124,191,169,215,147,174, 7,184,208,226, + 34,120,213,170,106, 27,140,170, 7,147,252,174, 41, 69,150, 84,233, 10, 32,167, 40,180,150,181, 87, 29, 64,185, 94, 83,169, 92, +245, 10,235,231,161,129,214,181, 87,250,164, 14,108,235,192,180, 81, 65, 57,147,183, 33,161, 6, 25,105, 3,186,176,196,133,166, +113,228,162, 43,101,177,218, 34, 43, 21,189, 58, 65, 42, 10,163, 87, 81,160,174,174,137,213,130, 89, 97,249,121, 9, 44,222,139, +235,164,181,144, 19, 41, 70, 58,215,145, 19,156, 47, 23,122,215,201,242, 18, 99, 21,186,105,140, 66,212,235,136, 87,221, 90, 75, + 8,249, 27,145,102,204,162,115,105,156, 80,189,222, 71, 74,138, 88, 43, 30,118, 65,186,156, 92, 0, 41,198, 77,198,191,197, 46, +230, 76,107, 28,182, 49,219,164,155,115, 65,101,185, 73,215,112,142, 12, 88,231,136, 41,225,103, 81,255,229,164, 8,227, 34,170, +204,152,133, 11,170, 23,156,170, 1, 7, 84, 24,237,254,254, 14,173, 53,195, 40,129, 42,115, 88,112,198,146,163,192, 11, 86,107, +200,133, 24,101,147, 36, 38, 82,138,252,250,252,140, 54,226, 85, 95, 31, 62, 78,139,122, 58,122, 79,136,158,118,183,195, 40,195, +121,120,133,201,163, 20,204,195, 72,111, 20,175, 49, 51,229, 76, 86,154, 57, 38, 22,174, 15,164, 67,211,210,174, 23,151, 2, 21, + 19,238,208,241,175,127,250, 51, 86, 43,126,120,247,142,175,127,250, 21, 63, 77,216,178, 78,109,145,214, 88, 17,200,148, 53,172, +162,208, 55, 13,251,227, 1, 85, 55,230,100, 20,151, 97, 32,229,196,225,225,129,156, 33,196, 72,240,158,114,163, 20,150,233, 18, +249, 51, 81,148,142,193, 7,114,204, 52,218,240,225,233,128, 74, 19,209,123, 81,172,231,200,107, 8,140, 33,129, 86,236,247, 29, +217,123, 73,245,139, 5, 31, 11,195, 52, 51,199,140,118, 13,177,110, 9,235,198,106,148,230,104, 45, 37, 69,230, 24, 41, 26, 78, +206,114,111, 44,193, 71,126,126, 61,163,173,190, 66,106,218, 48, 27,199,108, 20, 49, 43,146, 15,232,146, 55,231,131,143,145, 16, + 34,206, 53,226,237,172,159,173, 42,153, 70,107, 90,231,104, 27, 71,223, 52, 28,118, 61,251,190,147, 8,214,106,191,107,219,134, +182,109,184,127,251, 64,127,236, 73, 33,242,245,229,194,111,191, 61,163,117,225,199, 31, 30,120,247,116,218, 14, 0, 85, 52,203, +180,176,204, 11,171,166,203,118,142,227,189,100, 22,128,192,149, 26,228, 97, 99,213, 22,232,177,218,125,214, 3, 47,166,196,178, +120,156, 19,177, 93,152, 22, 66,140,196,156,121,120,124,228,233,253, 91,254,183,255,241, 63,243,242,233, 43,221,126,207,199, 31, +127,160, 57,180,184, 70,211, 53,176, 63,116,220, 31,239,184, 60,191,128,201,236,239,158,136,139, 39,190, 14,168,174,129,110,199, +236, 3,105, 24, 24, 47, 19, 99,206, 52, 93,203,225,216, 19, 17,135,128, 45,134,113,152, 41,192, 56,143, 76,203,204,125,191,195, +199,200,179, 31,233,118,123, 88, 50,174, 36,142,119, 7, 17, 37, 25,131,217,245,188,249,241, 3,251,187,131, 28,242, 55,135,241, +150,152, 86,211,254,244, 26,181, 87, 55,205, 82,214,192, 19,121,176, 27, 99, 54,222,114,245,214,150, 92,237, 98, 27,193,202, 38, + 64, 42, 85, 25,118,245,183,223,192,211,183, 73,117,107,128, 72,133,184, 73,108, 73,117,107,164,236, 10,141,223,122,206,111,125, +196, 49,198,237,231,234,237,245,241, 77, 96,142,186, 81,200,167, 28,101,184,216,160,252, 76, 81,121,243, 86,175, 60,117,206,169, +134,225,212,135,248,205, 6,157,146, 88, 51,115,221, 10,169, 7, 79, 78, 2,207,174, 1, 50,101, 13, 44, 89, 63,131,234,220, 9, +113,141,139, 53, 91,216,136,216,223, 86,120, 59, 95,225,242,122, 24,173,239, 35,167,184, 89,201, 84,169,220,186, 82, 91,160,206, + 22, 30, 83,131,190,214,225, 75,107, 81,222,175, 67,220, 54, 36,173,223,199, 54, 20,148, 45,165, 81,163,234, 97, 99,132,195, 85, + 98,237,149,247,189,218, 9,229, 59, 75,148,186,208,138,234,206, 42,189, 5,232, 40, 84, 85,140, 27,114,169, 73,122, 89, 80,138, + 80, 18,177, 14, 9,206, 58,124,140,178,176,213,195,113,117, 60,164, 92,200, 74,174, 57,185, 95, 87,244, 65,161,235, 16,150,235, +240,167,202, 42, 0,213,219, 97,172, 37,109,134,180, 10, 34,139, 44,116, 74,107, 98,132,236, 11,187, 93,183, 9, 39, 85,229,206, +101,224,147, 77, 61, 38,249, 62,115, 69,154,140, 54, 88,107, 54,231,200, 45,191,175,200,204,227, 68,201,133,198, 53,114, 56,167, +132,107, 26, 98, 44, 12,195,132,174,232,100,222,206, 69,176, 90,161,106,124,114, 41,101, 19, 7,167,152,234,103,169, 43, 53, 4, + 77,227,240, 37, 51,123,137,171, 86,149,131,183,206,160,117, 21,180,229,213, 58,112, 51,177,230, 36,211, 99,107,221, 38, 12,144, + 9, 61, 50,207, 11,218, 74,136, 73, 99, 45,182,107, 73, 49, 49, 79,115,221, 90, 51,203,235, 92, 21,232, 2, 63,216,149,119,171, +188,171,162, 80,130,231,254,254,129,146, 11,227,101, 32,149,140, 47, 9,109, 69,237,171,171,248, 2,168, 34,185,132, 42,224,125, +228,121,156,232,251,174, 66, 63,149, 83,119, 26,149, 11, 75,244,168,174,195, 52,162,158,127,121, 62,211,105,195,242,122,166,164, +196, 78, 41, 46, 49, 11, 84,153,225, 18, 35, 81,240, 68,118,218,176,239, 59,156, 54,152, 26, 37,169, 93,195,207,207, 23,126,254, +252,149,223,125,124, 71,223, 24, 94,126,249, 36,147, 17, 26,171, 37,220,196,180,118,243,154,231, 20, 41, 41,179, 59,236, 57,222, +157,196,171,157, 50,211, 18, 88,150,133,253,225,200,241,233,158, 56,207,132, 20,197, 81,176,138,132,168, 98,157,148, 55,238, 37, +198, 32,200, 69,209,188,123, 56,240,112,236,137,227, 34, 15,230, 92,120,141,145, 87,239,137,185,208,237, 58, 92, 3,121, 89, 72, + 57,227, 83, 97, 90, 18,195, 52, 64,107, 41, 74, 56, 86,189, 66,118, 40, 14,198,208,231,204, 16,196, 46,215, 27,203, 99,211,162, + 82,225, 95,191,158,153,235, 67, 69,139,236,148,197, 52,204,198,177,228, 44, 7,113, 46, 52,213, 26,134,210,132,232,177, 78,196, + 64, 37, 43, 82,138,148,148,104,141,161,117,150,182,177,180,206,114,232, 59,118,125, 71,107, 45,139,247,132,152,233,250,150,174, +115,220, 63,156, 56, 60,236, 41, 41,115, 57, 79,252,242,219, 43, 49, 37, 62,124,120,224,237,211, 73,172,107, 74,166,119, 63, 44, +194, 49, 85,129,148,117,150,195,233, 64,183,107,235,123,212, 2,185, 90, 43,252,232,141,221,104,221, 70,149, 82,164,152,152,198, + 9,165, 52,174,105,241,211, 76, 10,162,208,182,189,227,247,127,245, 87,252,237,127,251, 27,254,225,191,254, 55,250,190,227,135, +223,253,142,221,221, 9,109, 21,141,131,182,117,236,143, 71,150,243, 5, 63,205,116,119, 39, 84,187, 35,156, 47,114,205,239, 90, +166,152, 40, 75,196,191, 14,156,125,166,115,150,211,177, 39,106,241,209, 54, 52,132, 41,144,114, 97, 9,145,243, 48,112,191,239, +113,192,231, 97,164,189, 59, 9,204, 58, 39,238,143, 71,218,174, 1, 45,208,240,219, 31,223,177,127,188,163, 36,245,157,184,235, +250, 87,170,150,179,149, 11,222,212,188, 73,108, 82, 41, 70, 73, 52,219,134,124, 54, 88, 86, 40, 58,234,193, 94,190, 57,112, 75, +253,119, 43,100,153,162,228,145, 43,110, 82,231,138, 40,141,115,172, 86,165,178, 50,116,234,102,163,148,111,108,165, 79,110,183, +244, 91,218,160,220,136,228,110,173,121,155, 57,233, 54, 16,231,102, 75, 93, 55,218, 45,113,102,181,120, 81,237,183,155,191,157, + 77, 92, 87, 84,169,127,102, 77,161,187,254, 44, 85,174,191,175, 20,217,196, 55,186,146,245, 51, 43,164, 40,135,162,196, 40,171, + 45,212,199, 88,179,241,223,121, 75,107, 43, 91, 6,189,174, 30,245,245,208,205, 41, 95,115,246,213,234,235,174,222,247,154,128, +184,122,247,175, 67, 75,217, 62,207,219,239,136,205,106,168,106,202, 30,117,195, 23, 74,206,213,236,143,235,107,187,138, 6, 67, + 12,226,211,182,122,243,230,155,245, 25,177, 70,198,106, 89, 4,200, 16, 99,253, 30, 42,107, 30, 98,220, 80,151, 88, 23, 75, 99, +106, 2, 97, 93, 34,115,205, 76, 73, 37, 75, 18, 31,171,109, 78,180, 91,117,102,194,104,179, 81, 5,165,210, 44,235,123, 45,155, +157,154,141, 58, 82, 40, 92, 99,137, 33,210, 56, 71,223,239,214,201,247,102,128,188, 58, 69,114,186,217,202,111,220, 21,226,224, +144,131, 87,144, 9,197,112,190, 16,130, 12,231,109,103, 37,196,205, 26,186,182,101, 24, 22, 66, 72,180,173, 35, 5, 65,158,181, +169, 26, 12,117,117, 74,216, 70,186, 51, 66, 12, 98, 65,212,245, 41,166,180, 4,198,169, 76, 72, 17,239, 43,101,172, 53,202, 26, +137, 37,218,110,244,156, 5,150,173, 83, 86, 46,153,126,183,163,105, 13, 69,235,141, 15, 75, 33,202, 70,222,200,135,104,173,165, +105, 27,210,178, 8, 87,165, 20, 33,204, 4, 63,139, 95,186,138, 59, 44,224,114,174,124,184, 28,160, 93,111,120,247,225, 61, 41, + 21, 18,154, 57,101,230,156, 80,218, 16, 22, 9,190, 81,213,171, 25, 98, 16, 72, 36, 39,166,121, 34,204, 11,189,147,248, 90,140, +112, 18,214, 42,114,240,196,144, 49,109, 7, 10,198,215, 51, 75, 88,208, 57,115,254,250,204,161,181,132, 12,115, 22,123,196, 20, + 19, 83, 29,235, 52,176,215,134,198,216, 13, 89, 0, 77,208,138, 63,126,254,196,227,241,192, 95,124,248,145, 79,127,252, 85,144, +133, 2, 69, 37, 76, 85, 72, 98,244,182,237,144, 35,251,182,229,244,120, 36,107,205,248, 58,224,115,102, 14,145, 97, 28,121,120, +247, 6,213, 56,188,247,228, 34, 80, 86,174, 81,133,165, 42, 94,115,206,196,224, 73, 57, 49,123, 79, 6,238,143, 61,143, 15, 59, +244,226,165, 16,194, 89,198, 20,121,153, 2, 83, 44,184,214,176,223, 59,212, 28, 73, 41, 50,135, 72, 42,145,243, 60,225,179,162, + 24,139,223,242,148,197,187,221,105,195, 14, 17,133, 45, 9,156, 82, 60,184,134,198,192, 47,151,145, 47,161, 78,183, 74,130,133, +188,211,140,206, 18, 18,248,217,163,115,192, 84, 8,175, 32, 34, 62, 86,149, 42, 10, 31, 19, 41,100, 73, 75,178,154,190,109,232, +156,227,208,182,236,251,150,166,177, 44,185, 48,197, 72,183,107,232, 58,199,225,180,227,244,102,143, 74,112, 25, 38,126,249,244, +194, 56, 45,188,125,119,207,135,143, 15, 34, 94,171, 15,255,121,152, 89,134, 1, 34, 53, 64,199,114,188, 63,210,239,251, 26,248, + 85,243,190,141,100, 39, 23,173,234, 97,182, 70,164,106, 76, 13,224, 88,230,153,130, 98,119, 56, 17,198, 25,191,120,161,125, 50, +124,252,248,145,203,243, 23,254,151,255,225, 63,163,172,230,233,135, 15,124,252,248, 65,160, 83,167,232, 27,195,225,116,194, 36, +136,227,192,225,238,136,219,239, 9,203, 76, 73, 51, 28,122,150, 84,200,243, 76,184, 12,124,253, 58,144,149,226,225,254, 8, 86, +145, 83,193,169,134,101, 73,204,147,132,229,140,227, 76,223,180,220, 53, 29,151,176,160, 14, 59,108,215,176, 44, 11,167,125,195, +110,215,203, 96,105, 26,142, 63,188, 21,216,189, 78,246,183, 94,237,219, 96,150,117, 11, 44, 49,111, 89,237,235, 70,184,110,114, +101,181, 1,149,235,131,117,117, 21, 84,139, 76, 61,252, 89,195, 76,175,106,248, 53, 20, 69,169,239,252,239,215,131, 93,173,233, +114,100,114,142,117,219,170, 48,234,246,247, 10,138,222, 84,215,183,138,247,239,223,219, 74, 31,172,162,253,149,207, 94,249,246, + 53, 58,116,133,131, 75, 41,117,208, 83, 53,108, 38,111, 62,230, 53, 21,109, 69, 29,228,103, 72, 50,154,169,207,134,237,117,168, +111,109,114,235,161, 79,165, 23, 82, 74,162, 29, 77,200,161,100,244,182,105,230,186, 29, 91, 91,245, 38,101, 85,175,235, 42,254, +186, 70,191,202,134,107,174,246,188, 34,161, 35,234, 38, 45, 14,117,221,192,245,237, 38,126,141,229,255,246,117,235,155, 97,128, + 43, 7,173,149,108,138, 74, 75,168,204, 70,133, 84,248,121, 45, 93, 9,181,252, 71, 87, 45,138,209, 2, 77,111, 37, 72,154, 90, +166,148, 4, 9,190,141, 18, 46,226,191,214,107, 16,108,165,221, 74, 41, 27, 4,191, 22,229,168, 82, 40,166, 82,133, 85, 55, 99, + 42, 50,149,235, 18, 36,185,232,130,178,149,237,218, 96,227,253, 75, 46, 53, 63, 63, 82,195, 85, 48,214,224,189,199, 41,205,126, +215,214,159, 95,135,203,122,175, 24,189, 14, 88,137,148,227, 70,245, 88, 35,136,196, 74,247,220,126,230, 33, 75,138,166, 54,142, +166,115,248, 16, 37, 45,179,113, 92, 46, 47, 44,211, 68,223,183,130, 28,145,177, 86, 87, 10,199,136, 88,179, 46, 37,125,223,212, +236,253, 88, 45,182,106, 11,213, 81, 90,208,159,148,228, 28,163,162,142, 58, 87, 37,170, 15, 30,165,244,198, 91,160, 33, 1,251, +211, 94,236, 4, 10, 98, 20,190,220,123, 79,136, 81,226,238,138, 36,128,181,214,224,151, 73,126,110, 99,241,203, 44,242, 77,103, +200,250,154,113,168,106,185,192, 90, 52,160,181, 34, 59,248,252,233, 55, 34, 73,252,208,186,129, 34,118, 3, 83, 84,109,227, 74, +132, 69, 32,177, 24, 19,151,121,162,107, 27,186,122,168, 39,141,132, 23, 20,129,129,149, 51,152,166, 35, 41,195,249,124,166, 45, +153,243, 52,211, 91,199,193, 90,158,151,140, 15, 17, 93, 10,151, 37, 16,171,168,162, 81,208, 25, 69, 93,220,160, 64, 40,153, 95, +150, 17,159, 18,255,221, 95,252, 68, 9,137,207, 47,175, 4, 52, 42,107, 40, 73, 22, 70,165,208,202, 73,206,176,211,168, 16,216, + 63,221,115,120,124,100,184, 12,204,151, 9, 79, 97,158, 6,148,130,251,187, 7,150,105,170, 48,157,102,172,229, 56, 20, 77,138, + 5, 82,221,156,146, 76,248, 75, 72,236,155,150,251, 83, 79,111, 21,202,199,141,151,123,241,145,243,188, 96,181,102,191, 63,162, +125, 4,159, 8, 65, 54,252,209, 71,150,193,131,177,242, 94,139,220, 0, 90, 59, 26,109,233, 84,194,164,200, 88,211,255,238,154, +134,189, 49,124,121, 93,248, 60,123,140,114,146,181,108, 12,147,182, 76,182, 37,231,194,184, 44,228, 28,112,181, 36, 3,109,200, + 90, 30, 88,182,218,154,150, 20, 25,226,130, 51,138,206, 26,250,198,209, 53,134,125,235, 56,246, 61,173,179, 96, 52,131, 95, 48, + 70,211,247, 29,187, 93,207,241,238, 14,173, 91,150,121,230,249,203,133,241, 60,242,246,233,196,135, 55,111,105, 93,191,249,164, +195, 24,240, 99, 16, 65, 37, 10,235, 12,167,135, 19,253,113, 47, 15,173, 34,246, 52,204,170, 12, 94,163, 99,245,166,148, 85, 70, +182,120, 63, 73, 7,192,174,223,145,253,204,178, 12, 34,230,202,112,120,188,163, 63, 28,248, 63,254,167,255,194,240,245,149,195, +221,129, 15,191,251,137, 72,193,212, 3,125,191,235,105,154,134,120, 30,104,118, 61,205,105, 71,244,153, 60, 47, 36,231,240,141, + 98,153, 3,121, 12,124,254,237,133, 49, 21,126, 56, 29,216,117, 22,175, 50,216,134, 18, 21,243, 52, 19, 66, 98,152, 7,114,142, + 60,180, 13, 75,152,184, 24,112,167, 3,105, 14,236,148,225,116, 58,200, 53,160, 13,221,211,129,167,159, 62,214,180,176,107,168, +202,173, 95, 91,223,112,229,219, 33,189, 90,217,178, 4, 31,217,202,241,173,185,224, 2,119,203,128,184,249,204,149,160,111, 42, +215, 20,254,213,114,165,174, 9, 98, 91,132, 44,255, 30,254,191, 61,160,175, 9,112,114, 31, 72, 78, 55,223, 36,214,129, 66, 43, +251,205, 65,126,141,164, 45, 55, 27,231,109, 83,219,245, 80, 87, 27, 26, 33, 3,196,109,113,204,182,233,215,244,181,219,196,188, + 21,234, 93,131,172,114, 18, 61, 75,138, 55, 97, 55,214,160,172, 60,231, 84,205, 54,200, 89, 6,159,237,165,101,181,109,101,110, +243,254,171,250,188, 85, 87,188, 76, 41, 81,193, 87, 49,103,185,217,242, 11, 26,180,173,229, 46, 43,144,113, 83, 2,195,181,171, + 64,223, 12, 57, 84,165,183, 90,125,236,250, 26,251,203,119, 81,181,235,183, 37,215,141,208, 31, 77,211,108,156,242, 45, 74,146, +171,232,109, 85,237,175,214, 62,173, 53,218,174,118,200,252, 77, 52,108, 89,209, 28, 37,195, 65,218, 14, 68,141, 43, 70,220, 17, +117,243,151,175, 64,232, 30, 25,163, 36,201,180,172, 41,120, 53, 40,202, 40, 25, 18,141, 17,229,122, 74,153,213,148, 64,213, 37, +172, 57, 4, 91, 57, 81,150,255, 96,205, 65,201,100,186,182,217, 60,250, 40, 65, 6, 74,142, 91, 33,142,174,250, 78,178, 12,132, +114, 95, 85,116,160,198, 2,175, 69, 80, 74,105,190,190,188, 82,114,228,208,245,144, 19, 49,134, 10,197, 7, 46,227, 64,211,117, + 82, 70, 83, 41,158,213,223, 47, 22,219,130,118, 74, 68,224,218, 80,114, 45,150, 41,146,196,105,140,184,169,114,146,243, 48,230, +114, 45,227, 89,231, 55,191,248, 27,101,232,166, 72,192,245, 59, 41, 40, 40, 50, 85, 26,219, 50,205,203,246,229,129,192, 4,202, + 24,226,101,193, 21, 73,220, 73,115, 32,235, 76, 82,133,164, 37,134, 80,182, 7,185,224,117, 85,111, 54,251, 29,126, 89, 24,199, +133,164, 13, 62,102,138, 50, 82,103,153, 86,155,201,202,167, 39,113, 54,231,200,101,137,180,109,131, 86, 73,184, 30, 36,188,132, +232,137, 37, 99,187, 29,218, 57,150,243,133, 97,156,176, 33,114, 25, 7,186, 70,218,174,190, 38,241,207,159,179, 98,140,185,110, +233,138,190,232, 45, 17,200,100,176,192,146, 35, 95,134, 87,126,252,240,134,183,111,223,240,235,231,223,152,166, 17,155,171,111, +212,105,156,113,219,164, 91,140,132,107,180,206,113,247,240, 72, 4,230,113,196,135, 76, 84,153, 28, 2,199,187, 59,218,211,142, + 24, 34, 90, 91, 41,147,153, 22, 26,107, 55, 72, 51,215,205, 57,165,136,247, 1, 93, 12,143,167, 3,135, 67,131,154, 2,186,128, + 53,142,175, 49,242,219, 56,147,150, 68,127,232,105,187,130,154, 3, 57, 36,230,232, 41,202,112, 30,103,146,213, 36, 37,168,139, +174,245,120,198,104,172, 18, 37,250,228,165,172,229, 96, 20,247,206,113,246,129,207,163, 39, 38,133,210, 82,171,184, 24,139, 55, +150,144, 21,131,247,164,236,233,140,149, 27,193,136,248,168, 49,170,250,211, 17, 27,221, 60,211, 43,195,190,177,236, 91, 39,135, +186,179,236,187, 22,231, 52,166,181, 44, 73, 46,204,174,113,236,118, 13,199,135, 3,187,189,195,135,153,175, 95, 46,188, 62,191, +114,127,183,231,253,187,123, 78,123,201,124, 86, 69, 17,166,196, 60, 46,228, 18, 37, 60,199,105, 78,119, 71,250,211,129, 82,213, +124,186,194, 88,235,195,211,108, 74, 99,217, 40, 12, 18,218, 48, 47, 51,195,232, 57, 28,143,104, 5,211,112,185,166,165,237, 29, +199,135, 19,127,247, 95,254,134,127,252,187,191,197,182,142,159,126,250, 11,218,166, 69, 89, 77,219, 42,250,190,161,107, 90,194, +101, 64,181,134,238,112,172, 55,125, 34,199,140,106,157,180,241, 13,129,175,159, 47,188, 76, 11,239,158,246,236,239,123,166, 24, +208, 81, 97,178, 97,153, 60,203, 20,152,124, 96,138,129, 99,219, 96, 80, 12, 62, 97,143, 61,113,153, 81, 41,242,244, 32,176,123, +108, 52,221,190,229,225,247, 63, 72,178, 95,142,242, 48,213,183, 94,102,117,109, 31, 91, 5, 85,235,131,183,220,186,216,100, 3, +204, 37,213,108,134,178,109, 35, 91,205,169, 86,255, 97,124,234, 22, 23, 91, 61,238, 90, 27,248, 38,120,230,150,223, 23,255,246, +237,214,173,191,131,216,111, 85,242, 74,201, 32,113,123,224,126, 95,222,178,110,228,165, 92, 3, 93,196,173, 86, 95,127,136,242, + 64, 86,245,240, 70,147,139,150, 62,130,146,170,251, 65, 44,118,229,182,125,173, 66,238, 70,169,186,181, 94,131, 90,110, 45,128, +229, 38,244,228,250,222,217, 30,252, 49, 4,148,102,171,228,148, 88, 87,217,125,212,186,125,171,171, 32, 47,165, 64, 73,101, 21, + 59,200,161,174,248, 78, 36,184,114,242,124,147, 31,127, 29,228,190, 87,189, 43, 84,209, 87,241,213, 58, 0,105,153, 92,237,154, + 36,167, 5,230,205, 37,227, 76,205,135,175,113,186,186,214,197,132, 34, 5, 34,118, 21,229, 85,203,154, 86, 50,224, 27, 85,208, + 37,139,229,110,141,209,173, 90, 6,106, 75, 95, 42,137, 92,155,226,138, 85,117,137,145,131,189,113, 78,210, 75,171,234, 30,163, +240, 21, 69,210, 70,168, 25,163,140, 40,243, 83,146,120,233, 26, 37,174,203, 45, 29,147,209,170, 84, 49,173,156, 39,185, 72,123, +158,181, 86,130, 92,130,167,171,101, 49, 87, 87,151,100, 89, 40,212,214, 42,184, 90, 42, 85,145, 66, 42,179, 53, 3, 10, 23,190, +182, 83, 2,204,211,196,121,242,116,251, 35,218, 88, 66, 8,244,221, 14,171, 27,134,243,136, 69, 22,152,152,162, 12, 2,214,201, +197, 80,175, 89, 98,193, 25, 75,227,108, 77, 36, 12,155,171,194, 88,139,109,141, 88,155, 83,220,114, 27, 36, 95,160,198,235,197, +165, 6,201,196, 21,102, 85,132,146,104,251, 30,103, 28,177,242,186,206, 88,230,105,146, 80, 3,165,165,233,169,109,101,147, 14, + 51,182,105, 49,182,230,125,171, 92, 51,223, 87,184,143,237, 5,235, 44,208,215,254,112, 96,156, 7,194,188, 80,140, 98, 9, 9, +109,173, 68,254,133,132, 81, 70,248,161, 27,117,231, 28, 61, 88,232,187, 22, 95, 68,165,218, 41,133, 51,162,216,199,106,225, 90, +114,230,245,124, 70,199,196, 52, 77, 24, 63,177,183,134,193, 71,230, 10, 1,190,134, 72,172, 1, 40,125,209, 52, 74,109, 48,172, + 86,138, 24, 34, 95,166,145,182,105,249, 79,191,255,145,151, 47,175, 92, 94, 94,201,222,215, 69,167,160,140,195, 89, 43,177,168, +245, 70,201,192,221,187, 55,156, 30, 30, 24, 94, 94, 25,167, 9,111, 13, 11, 16,114,230,248, 40, 57,223, 69,129, 49,150, 95,191, +126,161,107,186, 90,150,147,165, 55,187, 68, 82, 10,164, 84, 88,124,230,241,208,243,225,225, 40,142,130,152, 48, 78, 19, 77,230, +121,152, 25, 46, 11,237, 97,207,254,238, 8,195, 68, 78,129,113,153,200, 90,243,186, 4,150, 8,177, 24,177, 3,106, 73, 88,114, + 90,227,148,162,171, 57,221, 11,153,189,209,188,113, 13, 49, 38,190,158, 71,124,148,192, 3,103, 13,139,214, 76, 90,177, 20,197, + 56, 45, 76,203, 66,107,164,223,168,212,148,167,174,113,104, 68,220, 23, 98, 97, 24,103,148, 82, 28,155,150,125,211,176,107, 27, +218,198,178,239, 91,218,206, 98,118, 78,110,214,144,104,156,225,112,144,112,152,238,208, 49,250,200,243,151, 51, 95, 95, 6,218, +221,142,167,119,143,236,118, 59,178,146,141,103,241,158,121, 24,160,114,182,214, 58,118, 15, 7,118,119,135,173,172,194,105, 35, +170, 84,109, 48,218,110,153,212,170,250,161,215, 27, 56, 44,158,151,151, 87,186, 93, 71,183,219,225,167,169,170,142, 27,137, 95, +221,245, 60,255,249, 11,255,248,127,253, 29,121, 74,124,252,225, 35,143, 31, 30, 36,114,214, 41, 14,157, 99,119,232, 72, 33, 96, + 82,100,127,119,128,182, 35, 39, 69,140, 30,181, 51, 76, 99, 32, 15,158,225, 60,242,233,203, 23,238,143, 59,222,220,223,115, 89, +198,218,248,100, 73, 62,115, 25, 39, 22, 63, 51, 69,207,189,115, 28,156,227, 92, 2,229,216,137, 72,117,241,220, 29, 78,156,246, +157,128, 97,109,195,195,239, 62,114, 56,238, 43,212,200,117,195,219, 10, 60,249, 38,249,109, 13,135, 89,173, 88,107,241,136, 12, + 60, 53,230,116, 61, 96,191, 73, 90,147,252,236, 82,196, 99,173,140, 32, 31,235, 33, 86,110,248,232,173, 30,181,240, 13, 4,143, +226, 10,179,171,213, 26,149,234,118, 37, 89, 22, 74,149,170,132, 87,215,215,250, 31, 4,206,220,230,230,168,218, 63, 81,244,150, +218,122,181, 49,213, 72,216, 45, 0, 70, 34,202,182,152, 88,165, 77,205,193, 55, 53,148,167,108, 98, 75, 25, 84,242, 55, 97, 47, + 90,203, 86, 86,170,143, 89,252,182, 53,218, 53,149,154,123,175,234,251,148,237, 62,134, 82, 5, 77, 82,107,149, 75,164,148, 53, +138, 86,120,120,170,136, 48,165, 82,213,215,185,134,159,172,245,171, 98,175, 93, 55,242,111, 62,137,200,141,240, 81,109,254,233, +239,173,125,165,166,181,177, 37,200,177, 89,125,215,211, 75,138, 75, 36, 1,206, 52,238, 74,167, 20,161, 6,197,137,147, 54,193, +160,222, 28, 21, 50, 48,216,218, 94,182,234, 1,172, 98,107, 51,139,181,153,209,212,170,208, 18, 69,100,214, 25, 83, 19,244, 4, + 73,177,107,165,119, 45, 58,201, 37,215,140,142, 82, 95,159,108,196,186, 20,129,208,157,219, 54,239,111,195,138, 68,128,153,111, + 82, 19,115,150,144, 49,227, 28,141, 49, 76,115,228,208, 53,184,166,136,149, 82, 93, 15,235, 85,126,112, 29, 28,203,214, 63, 96, +215,133,166, 6,162,105,179,222, 63,154,201, 71, 94,207,175, 52,109, 75,215,247,196, 56,163,109,193,185,134,151,215, 87,114,150, + 65, 36,167,188, 37, 37,174,161, 57,130, 12, 20,201,210,175,233,172,166,100, 82,244,148,148,232, 90,139, 49, 50,180,167, 84, 72, + 90, 34,133,149, 2,237, 92,195, 50, 78, 91,138,156, 64, 85, 85,249,170, 37, 23,215,106, 83,149,166,130,162,135, 16,100,187,169, +190,189,118,215, 17,131, 40,157,109,227,132, 3,136, 65,148,224,181,230, 84,175,242,165,181, 52, 0,133,109, 20,187,190,103,190, + 4,138,159,200,254,106,155,136,161, 66,232, 86, 87,207,108,217, 98,249, 94, 67, 96,239, 44, 77,107,165, 26, 21, 68,172, 87,114, +237,230,110, 80, 90,225,253,194,120, 57,147,163,103, 90, 22,142, 77, 11, 69, 49,133,132, 75, 5,159, 37,211,156,218, 29,220,214, +108, 98, 99, 36,237, 44,102,248, 50,141, 92,198, 11,127,253,187,223,241,116,247,192,203,231,103,150,105, 17, 81, 97,221, 98,172, +115,100, 87,117, 7, 85,140,177,111, 91, 30, 30, 30,200, 41,178,204, 11,227, 56,145,157,244,178,183,157,227,116,186,175,125,202, +150,203,112,102,153, 23,142,199, 78,162, 14,107,134,177,196, 67, 38,124,138, 24,149,120,115,127,164,239, 44,202,123, 73, 96,179, +134,231,201,243,229,117, 2,165,216, 63,236,177, 37,160,125, 98, 89, 22,124,201, 68, 5,195, 20, 8,104, 60,235,123,147,165,218, + 25,131, 75, 5,157, 19, 33,203,180,120,111, 29,166,104,126, 27,102, 46,222,139,189,175,117, 68,215, 48, 27, 75, 84,134,113,153, +241,126,102,103,100, 40,136,245, 38,235, 27, 71,215, 26, 41,181, 9,145,105,241, 64,230,216, 57,246,141,101,215, 56,220,202,167, + 55, 45,166,105,176,125,203, 28, 18, 49,102,186,190,225,112,218,115, 60, 29,196,250,241,122,225,203,231, 51,206, 52,188,125,119, +207,221,233, 32, 23,127, 77,144,154,207,163, 36,189, 41,121, 8, 29, 31, 14, 28,238,142,155, 47,118, 83,116,175,155,202, 90,104, +177,246, 74,215,232,209, 24, 51,227,235, 68,215,119, 28,251,142,225,249, 21, 31, 60, 69, 41, 92,219, 96,172, 99, 24, 2,127,248, +251,127,226,211,175,191,113,122,184,231,253,199, 15,164, 92,112, 13,236,122, 17, 86,178,100,242,178,208,223,223, 97,107,133,174, + 88,158, 52, 62,103,150,203, 66,156, 50,191,126,249,130,113,134,119,111, 30, 88, 82, 68, 92,114, 22, 83, 52,195,101, 98, 24,103, +230,224,105, 20,156,156, 99, 10,129,197,104,104,100,218,127,232,123, 30, 42, 18,161,141,230,233,195,123,142, 31,223,201,225,178, + 38, 83, 97,170, 40,170,108,130,183, 43,132,170,183, 0,144,170,120,186,110,183, 55,181,162,107,246,117,185,137,131, 93, 55,241, +109, 51,229, 6, 98, 47,101,171,230, 76, 41,138,174,130, 82,105,218,242,239,183,250,154, 61,127,229,192, 83, 61, 28,212,154, 33, +242,141, 93,237,123,161,220,173,223,190,168, 53,206,147, 77, 96,183,242,161, 34,139,169, 74,245,170,212, 54, 55,226,176,171,191, + 91, 75,161,199,141,151,187,144, 43, 28, 90, 57,114,106,180, 42, 55,244,194, 42,178,187,169,149, 93, 59,218, 87, 72, 56,134, 36, +153, 21, 85,213, 85,110,210,251, 86, 27,151,170,195,140, 90, 97,226, 84,182,144,156, 82, 99,172,183, 1,160, 66,231,137,116, 77, +223,171, 67, 16, 55,204,138, 68,181,234,186, 73,174,217,240,107, 86,124,253,252,215,193,188, 38,145, 43,242,230, 4,177, 90,213, + 64, 22,182,239,185, 20,249,222, 99,109, 41, 19, 79, 63, 21, 32, 87,219,159,179, 90,111,127,198,104, 57, 47, 74, 93,206,180, 82, +149, 11,191, 14,157,186, 30,250,185,114,239, 27,125, 80,237,108,166, 40,138, 81,164, 28,197, 19,111, 12,170, 20, 82,214,226,229, +111,228,153, 40,247,238, 90, 35,123,213, 66, 74, 86,127,190,230, 26, 80, 33,115,107,165,199,196,104,246,109,191,149,236, 40,165, +235, 32, 87,203,205, 40,148, 10,163,151, 34,219,191,179,166,102, 25,172, 81,190,117,224,168,104,197,243,231, 87,172,213, 28, 79, + 71,150, 32, 67,118,215, 57, 22, 31,152,231, 64,219, 54,181, 5,238,198,251,190, 38, 92,214,223, 42, 14, 20, 48,107,155, 97, 29, + 52,154,214, 73,164,116,129, 24,145, 70, 62, 81,210, 88,194, 56, 85, 11, 68,157, 54,180,188,129,253,110, 71,183,235,240,201,147, +124,160,113,194, 7, 44,126,169,144, 11,100, 93,232, 91, 71, 8, 98, 37,114,109, 75,140, 73, 54,150, 2, 37,102,217,202,139,124, + 32,172,245,137,100,140, 21,129,219, 60, 46, 24,215,224,125,148,164,162,106, 37, 81, 86,138, 54, 40,200, 5,164,192,215,174,247, +125,183, 35, 43,181, 85,121, 54,214, 18, 82,148, 76,121,235,176,197,241,242,252, 74,152,103,162,159, 88,114, 97,103, 59,166, 4, +115,148, 27,231, 82,211,211, 84, 86,116, 74,146,153, 86,171,135, 85,134, 97, 89,248, 60, 13,220,221,221,243,223,255,197, 79,188, +190,206, 76,231, 1,239, 3, 33, 87,125, 0,242,224,215, 93,123,133, 25,149,226,241,233,129,166,111, 24,134,129, 16, 35,211,236, +101,179,201,137,126,183,151, 60,111, 99, 73, 73,113,121,126,169, 45,100, 18, 29,152,235,205, 18,163,116,233,134, 28, 57,116, 45, + 31,158,238,241,139,199,228,128,107, 12, 94, 27, 62,191,142,204, 33,136, 40,172,179,152,217, 19,151,192, 60, 5,104, 27,134, 97, +193,103,152, 75, 70, 57, 43,188,119, 70,148,253, 37, 99, 83, 34, 20,169,129, 60,105,203, 17,195,215, 37,242,121, 14,100,109,112, +187,134,220, 90, 46,218, 16,148,102,156,131,180,245, 25, 69,111,196, 98,145,148,162,111, 27,246,141,193,135,204, 24, 34,195, 18, +152, 99, 96,223,180,156, 90,199,190,119, 88,107,233, 92, 67,223, 52,216,198,209,238,118, 68, 95, 24,230, 64,235, 44,167,187, 61, +135,251, 3,170, 81, 92,134,137,215,151, 1,165, 44, 79,111, 79,220,223, 29,104,173,216,107,130, 79,140,231,113, 11,237,192,104, +246, 15,123,246,119, 7, 84, 13,146, 49,171,205,169, 62, 24,138, 84, 60, 85, 85,178,217, 54,174, 82, 10,195, 48,128,213,236,143, + 59,166, 97, 36,204,139, 12, 6,109,131, 54,154,121, 90,184,124,122,230, 95,254,225,159,232,246, 13,239,127,255, 3,202, 26,172, +130,174, 21,232, 91, 43, 69, 30,102,246,119,119, 52, 15, 71, 43,151, 2,161, 0, 0, 32, 0, 73, 68, 65, 84,138,105,208,100,177, +126, 90,195,229, 60,129,143,252,242,249, 19,243, 60,243,241,195, 91,140,134, 57, 44,148, 36,106,247,203,101,230, 50, 12,196, 32, + 52,211,222, 56,150,148, 88, 20,168,198, 17,188,103,111, 29,239, 31, 78,180,173, 65, 59,203,238,241,145,211,135,183,194,223,162, +170, 27,160, 66,234,165,138,225, 86,175,109,133,133,141, 17, 63,248,186,157, 93, 17,241,155,237,124, 19, 82,234, 10,227,151,109, + 67,221, 68,116,185,108,145,178,235, 86,156,115,169, 28,112,222,210,203, 86, 97,157, 8,109,175, 10,236,154, 19, 43,246, 53, 99, + 4, 37,184,177,165,169, 27,240,254,155,226,150,117, 91,191, 25, 20,210, 26, 58,163, 36, 41,112,237,210,254,166,159,156,130,182, +181,134, 85,138, 45, 54, 43, 20, 53, 99, 65,248,222, 53,152, 76,109, 93,222,235,193,169,111,248,104,245, 77, 52,171,218, 90,213, + 86, 56, 91,173,170,116,165, 9, 62, 66,169, 16,113, 69, 55, 72,146,112,103,172,222,208, 11,217,189,141, 32, 3, 34, 33, 68,175, + 57,250,198, 84,203, 91,218,196,111, 69,231,107, 65,139,173,234,252,172, 48,186,108, 8,140,120,210,205,134,198, 40,116, 13,187, + 81, 20, 4, 54,214,234,250, 62, 36,138,212,144,179,198, 58, 43,161, 68,219, 27, 43,149,107,150,248, 86,129,234,165, 86,123,245, +197,175,159,219, 55, 42,248,117, 8,171,113,186,170,166,248,173, 88,146, 90, 11, 96,170,124, 61,215,102,182,206, 53,146, 88, 87, +160,164,128, 86,102,107,211, 51, 70,227,172,150, 14,146, 44, 13,113,214,104, 74,140,130, 38,229,155,235, 52,175, 9, 36,245, 90, + 72,226,238, 72, 85,100,157, 99,168,144,127,187, 89,252,214, 12,122,117,211,209,174,138, 80, 53,107, 59,154,115, 22,180,150,127, + 22, 75, 77, 10,212, 34, 16, 4, 94,135, 51,195, 48,113,220,237, 0,141, 95, 60, 77,211,144, 98,225, 60,140,180,109, 87, 43,118, + 21,198,184,122,191,177,105, 0,132,187,183,178,220, 26,181, 5,132, 69, 10,174,105,193, 72,112, 90, 78,178, 48, 43, 10,122,153, +206, 44, 62,200,180,104,228, 98,178, 85, 85,188, 63, 28,113,141, 35,231,196,101, 24,113,189, 37,204, 11, 97,152,177,213, 27,222, + 53, 29, 86,203, 63, 47, 41,211, 55,141,240,192,231, 81, 60,131, 49, 85, 17,205,149, 91, 42, 41, 99, 75, 97,215, 73,168,205,203, +203, 11, 70, 41, 22, 63,227,104, 40,241,166,136, 64, 73,115,153,168,227, 97,152, 39,156, 81,114,168,123, 49,245, 55, 90, 90,106, + 82, 76, 96,164,199,124, 41,145,241, 60,144, 66, 34,206,129,190, 40,172,109, 88, 66, 33,162,153,115, 17, 81, 24,133, 6,104,215, + 68, 38,235,106,173,101,228,121, 30, 48, 86,241,159,126,250, 9,237,118, 60, 63,127,101, 94, 22,130,247,216, 21,147,201,242,192, +117,182,138, 9,151,204,233,225,129,167, 31,223, 48,188,188, 16, 99, 96,246, 1, 95, 10,217, 25,172,115, 82, 11,235, 20,166,213, + 60, 63, 63, 19,230,200,254,208, 75,180,109,148,135, 98, 74,145,144, 68,105, 89, 66,225,195,187, 71, 90,167,200,222,227,108, 75, + 81,138,231,203,200,151,203,196,126,223,177,223,239,104, 2,152, 37,112,153, 39,146,211,248, 37, 50, 68,233,216,206, 90, 97,157, +166, 24,208,214,162,139,198,164, 5, 16,120,191,181,134,147,133, 75,204,188, 94, 60, 90,105, 73, 18, 52,134, 87,109, 88,208, 76, +243, 34,185,227, 90,211,217, 70,116, 22, 26,129,158,251,150,164, 52,227, 28, 57, 95, 38, 98, 72,156, 90,199,169,111, 57,236, 90, + 90,103,112,206,208, 53,162,122,239,246, 61,170,117, 76,243,130,202,153,227,195, 65,184,240,222,113, 25, 22, 94, 94, 7,188,143, + 60, 62,237,185,123,216,227, 58, 73,146, 10, 75, 96,120, 29,200, 33,111, 77, 90,251,211,129,227,211, 29,172,225, 41,218,144, 43, +218,164, 55, 46, 89,118, 16,234,118,190,250,167,199,203, 64,244,145,253,254, 64, 14,145,101,158, 81,198,224, 92, 67,219,236,152, +166,133,101, 92,248,183,127,252,123,150,203,192,199, 31,127,228,120,186,151,207,160, 51, 28, 15, 59, 26, 35, 60,122,127,183,103, +255,238, 17, 67,131, 81, 45,243, 50,147, 53,156, 95, 38,242,148,248,237,203, 51,159,191,124,226,167,119,239,184, 63, 28, 24,195, + 66, 78, 9,171, 53,147,247,188,188,156, 69, 59, 1,236,180,195, 82, 24, 83, 36, 58, 83,183, 60,197,211,113, 79,179,239,208,214, +210, 30,247,220,125,120,139,109, 28,122,141, 41, 85, 43,236, 94,174, 7,147,210,215,195,105, 51,252, 21,146, 18,143, 49, 55,208, +226,170, 62, 94,159,227, 82, 36, 17,183, 7,239,118,232,223, 64,243,210,180, 22,183,108,117, 85, 4, 22,165, 62,148,178, 86,219, + 96, 32,238,149,184,169,233,111,109, 97,249, 54, 88,230,187,160,156,111,224,212,122,128,231,239, 54,247,237,117,213, 66,153, 91, +112,126, 13,130,169,132, 25,169,168, 45, 32, 70,169,194,122, 2,173,175,115,165, 13,164, 13, 64,213,188,237, 68, 94,185,119,190, + 71, 29, 4,145,216,168,141, 90, 84, 67,109,161,139, 49,162,204, 42, 0,147,100,148, 88,109, 80,235,102, 39, 96,138, 32,126, 69, +151,141,138, 16, 27,191,252,125, 42,137, 66,168, 30,117,182,140,242, 53, 59, 93, 21,217,186, 41, 34, 75,211,245,253, 80, 29, 31, +171,103, 45,215, 33, 65,213, 4, 56,234, 48,160,138, 65, 89, 43,131, 95, 42, 24,211, 80,116,220,232, 44,173, 12, 49,233,202, 54, +228,122, 24,223,112,206, 55, 8,136,179, 85,118,182,230,176,235,245, 51,170,155, 55, 16, 54, 65,165,198, 25,139,169, 13,126,235, + 0,104,106,228,119,161, 16,124, 64, 27,161, 34,174,161, 62,102,179, 97, 26, 99, 49, 74, 28, 29,102, 13, 61,171, 9,127, 90,105, +116, 46,213,171, 14, 84,119, 17, 20,156, 49,248,101,161,228, 66,187, 70, 72,107, 83,133,113,121, 75,247, 83,232,173,248, 74, 6, +133,245,222,146,249, 52,215,129,112,107,182,211, 34,120,253,250,245, 43,167,187,125,237,145, 72, 53,207, 61,115,185, 12, 24, 99, +105,187,118, 43, 46,218,180, 24, 43, 77, 37,160,186, 8, 87,171, 46, 40,166, 76,244, 25,235,220, 38, 12,140, 49, 86,237, 73, 66, +143, 95,191,146, 76,144, 24,215, 36, 23,188,214, 50, 37,247,125,143,179, 45,222, 7,226,178,208,116, 61, 97,158, 68,176, 86, 31, +160, 77, 35,156,104,246, 53, 72,223,104,210, 18, 54,200,125,171,102,188,105, 14, 42, 37, 99,141,162,235, 45, 99,152, 57,159, 71, +116, 46, 85, 52, 6, 33,164, 13, 34, 21, 43,191,136,162, 22, 31, 56, 79, 11,187,190,135,214,110, 5, 10,173,174,141,108, 90,161, +141,195, 42,205,249,229,149,215,225, 34,246,182, 20,217, 59, 75, 44,137, 37, 69,178,134,151, 28, 9,181,135,214,106, 81,235, 26, + 4,206,180, 70,241, 60, 15, 76, 97,230,247,239, 63,240,195,253, 19,227,226,165,178, 53, 86,179,255, 54,184, 38,217, 58,173,147, + 9,218,194,195,199,143,148, 4,207,159, 62, 99,156,101, 89,162,116,254,170, 66,211,119,156, 30, 31,192, 40, 46,175,175,140,151, + 1,156,165,181, 98,183, 10, 33, 84,117,109,148,144,157,162,232, 27,203,143,239, 31, 73,243,136, 41, 25,211, 56,230,144,248,114, +190, 80,148,166,237,123, 90,155,113,201, 51, 95, 70,153,220,180,101,156, 3, 83, 86, 44, 37,211, 58, 91, 31, 80, 82,212,144, 75, +194, 20,241,254, 55, 10,158,180,131,164,248,116, 25, 9,165,208, 54, 29,217, 57,206,198, 48,167,204,101,156,121,157,103,148,130, +157,169,194, 13, 13,157,115,220,117, 29, 70,193, 28, 35, 95, 47, 35,175, 62,209, 26,197,195,174,225,110,223,209, 88,135,181,138, + 93,171,217,181,150,246,208,227,246, 61,203, 60,179,248,200,113,223,113,127, 58,208,238, 58,198, 49,240,250, 50, 50, 78, 51,143, + 15, 39,238,238, 14,236,186, 22,167,164, 24, 97,188, 12,228, 40, 28,186, 54,154,253,169,231,248,112,170, 54, 37, 73,226, 43,255, +129,149, 74,113,229, 83,215,237,109,158, 23,188,143,220,221,223,161, 77,193,207,139, 8, 51,173,193,181, 7,124,240,132, 24,248, +245,143,127,226, 79,255,244, 39,222,252,240,145,211,211, 35,202, 64,211, 40, 14,251,150,166,107,137,175,103, 90,107,121,122,243, +132,109,118,224, 26,226,114, 33,170,194,224, 3,203,236,185,188, 12,252,233,207,159,120,255,248,200,195,155, 19, 99, 24,201, 41, + 98,149, 37,107,203,243,235, 69,188,254, 10, 26,173,104,180,218, 98, 99, 69,144,148,120,216,117,220,237,119,104,163,112,125,203, +233,237, 35,205,195,254,202,143,214,108,115,233, 70, 95, 25,243,107,255,249, 55,225, 44, 37,223, 8,221, 42,143,200,218,155,174, + 55,177, 86, 41,233, 74,157, 21,174,215,189,250, 15,162, 91,111, 20,239,130,210,223,182,182,173,210,225,107, 15,251, 42, 40, 34, + 23, 74, 44, 85, 85,172,170,114,236,223,123,211,191,241,163, 87, 63,241,181, 15,253,251,104,218,111,255,158,114,237, 63, 95, 5, +112, 26,189, 65,179, 90,175,156,240, 13,237, 80, 97,213, 66,222, 14,158,162,111,126, 95, 77, 13,145,120,216, 26,177,107,234,129, +185,110,165,165,144,130, 56, 88,172,117, 53,245, 75,215,236, 6, 73,146, 19,123, 82, 77,213, 83, 53, 46,180,138,185,214, 82, 29, + 17,151, 73, 78,182,162,110,135,136, 16, 89,175,194, 63, 99, 41, 70,196, 93, 69,233, 74,175, 84, 33, 29, 89, 26,212,234, 9, 36, + 46,164, 58, 68, 84,207,182,209,160,116, 18, 75,154, 54, 64,196,185, 76, 38, 84, 63,118,222, 26,203, 82, 17, 77,128,214, 72,184, +204, 26,210,181,102,250, 87,127,186,173, 61,232,168,140, 86,249,138,116, 40,133,214,174, 94,117, 98, 85, 51,250,138,140,172, 3, +146,181,106, 67, 48,215,160,161,160, 74,205,220,191,162, 57,210,240,230,174, 34, 51, 25, 91,107,102,251,181,186,119,189, 22, 19, + 53, 57, 53,101, 76, 35,153, 29,243,178, 72,196,248,154, 89,177, 6,175,170,178, 69, 0, 23,165,200, 89, 85,162, 66,218,229, 76, + 29,142,214,124,251,107, 72,163, 34,134,204,229, 34,205,108,199,227, 81,222, 83, 77,154,155,134,153, 76,192, 57, 83,157, 96,230, + 38,160,137,205, 82,185,194,255,186, 14, 73,146, 15, 32, 20,132, 51, 78,160,255,170, 67, 40, 74,161, 7,159,176,218, 85, 97,141, + 68,212, 73, 52,170,165,107, 91,172, 81, 44,243, 66,219,181, 88, 99, 8, 62,214, 56, 63,153, 56, 27,215,224,140, 33, 76,158,166, +105,165, 32,196,123, 41,114,168,135,198,122, 35, 82,121,113,105,149,209,180, 77,207,249,235, 89,166, 73,181,246,151, 43,105,163, +209, 6,173,174,249,186, 62, 71,134,121,166,228,204,161,239,137, 53,100, 69, 21,104,141, 38,229, 72, 50, 26, 26, 71, 82,133,225, +242, 10,203, 66,246,129, 8,116,141,102,204,153, 5,152,146,212,145,234, 12, 38,229,122,204,201,133,102,140, 97, 88, 34, 95,135, +153,251,253, 61, 63,189,123, 71,192, 51,140, 3,243, 44, 85,165, 41, 37, 44, 90,248,163,146,104,250,150,162, 45,195, 48,114,247, +254,145,135, 71,105,228,210,141, 38,229,194, 48,123, 76, 99, 9, 57,243,238,253,123,172,115,204,243,194,229,229,140, 46, 17,109, + 5,138,151, 0,160, 64,202,137, 24, 4, 98, 91, 66,230,195,155, 7,246,173,195,207,158,166, 10,129, 62, 15, 19, 97,241, 28,118, + 29, 77,227,112,170,144,150,153, 97, 18, 46,120,246,129, 49, 25,150, 8,202, 90,169, 16,173,229, 0,164,130, 77,137, 88, 85,156, +119,186,161, 41,154, 79,131,103,244, 25,219, 59, 98,163, 25,148, 80, 21,195, 56, 49, 45, 51,173,214,244, 85,184, 81, 20, 52, 70, +113,215,181, 52,173, 99,201,137,175,151,153,215,203,192, 65,107, 30,143, 61,167,125, 71,103,229,247, 58,101,232, 93, 67,119,232, +105,239, 14,120, 63, 49,143, 11,154,194,225,110,207,225,161, 39, 23,120,126, 25,185, 12, 35,247,119,119,236,239, 15,244,187, 86, +186,143,163,196,191, 70,159,182,200,201,221,233,192,221,227,131,180, 80,173,133, 15, 43, 71,184,122,150,215,156,247,170, 65,208, + 53,157,112,158,103,194, 37,208, 31, 14,152,190, 35, 76,179, 8, 56,157,147,150, 64, 63, 83, 74,100,121,125,230,159,255,239,127, +224,254,238,158,187,167,199, 26, 3, 10,125,239, 56,236, 15,164,113,132, 24,184,255,240, 30,125,127, 47, 15, 77, 31,240, 57,144, + 34, 44,175,158,249, 28,249,195,175,127,226,116,119,228,227,227, 19, 49, 44,146, 77,144, 21,202, 90, 46, 95, 47,188, 14,147,116, +197,163,176, 69,113,137,158, 89,101, 66,141, 34, 61, 53, 13,247,135, 29,186, 49, 24,215,112,120,122,160,127,123, 47,133, 47,149, + 63,143,181, 52,100, 77, 87, 91,109,207, 87,193, 25, 87,238, 60, 83,147, 30, 83, 45,223,176,181, 2,178,242,160, 53, 78, 83, 14, +111,217,204,184,141,129, 93,135,130, 27,225,221, 85,136, 37, 67,194,218,100, 86, 74,172, 27,177,145,231, 75, 45,204,209,149,135, +206,232,107,140,109, 22,213,175, 8,153,190, 23,220, 85,143,251, 26,236, 82,109,104,229, 38,174,102,235,194,230, 59, 49,157,248, + 29, 55,154, 49,151, 80, 5,121, 2,115,230,186, 85,175, 92, 69,174,182,219, 84,179,223,165, 14,181, 90,238,234,118,189,249,159, + 43, 84, 43,229, 28,230, 38,168,171,138,224, 82,165, 6,156,222,138, 82, 40, 69,158, 95, 91,128,201, 53,244, 37,151, 88,147,238, +214,193,167,194,229,202,146,180,240,232,185, 68, 32, 73, 36, 51,183,138,248,155,239, 80, 66,206,175,121,242, 37,213, 60,245,178, + 13,247,133,180,241,241,165,242,241, 86,233, 26, 53, 9,109,219, 83,178,174, 66, 83, 73,112, 75,229,106, 19, 84, 21,210, 47, 27, +204, 95,209,129,170, 69, 88,197,108, 87,161, 94,205, 52, 88, 19, 8,213, 53,130,117, 85,239, 87, 62, 69, 32,120, 4, 65, 94, 43, +108,101,232,118, 43,174,143,113,226, 59, 79,217,163, 93, 61, 20, 75, 22,222, 93,213,132,192,122, 48, 67, 38,213,136,104,106,150, + 70,174, 27, 62,202, 16, 67,160,237, 26,140, 51, 53, 46, 88, 17,115,230,182,200,176,100,161,143,147, 56,219,170, 8, 87,111,238, + 16, 74,141,176,173,177,185,198, 89,134,225,194, 18, 35,125,223,226,125, 36, 43, 69,223,245,156,207, 3, 97,137, 24, 45, 61, 31, +214, 57,116,229,213,217,236,137, 90,250, 78, 80, 88,211, 74,236,115, 46,228, 32,191,203, 56, 45,118,201, 84,136,233,154,181,114, +211,165,123,133, 25,154,222,209,247, 61, 57, 38,150,113,196,185, 6, 12,210, 75,173,100,210, 85,218,210,246, 45, 41,103,134,231, + 23,154,166,165,104, 77,156, 23,185, 89, 85,237,203,213,181,247,119,221,148, 74,193,181, 13,109,231, 56,159, 47,132,172, 5,158, +174,113,124, 0,174,170, 26, 85, 45,182,159,131,231,245,124,161,223,117,236,246,123, 98, 78,196,156, 36,248, 94, 11,148,166,140, +195,104, 24,207, 19,195,249, 34,176, 68, 72,236,148, 33,162, 24, 99, 98, 41,153, 41, 4,121,124,150,130,205, 25,147,213, 22,112, +144,129,243, 50, 99,200,124,124,243, 72, 99, 12, 75,202, 76,195, 72,242, 53,211, 55,101,220,234,201,176, 13,237,241, 72,244, 11, +165,181,124,248,235,223,179,156, 95,152,191,190, 96,218, 61,227, 18,132, 34, 51,153,253,190,231,195, 79, 63, 48, 76, 23,198,203, + 72, 88,194,141, 88, 71, 17,188,120,129,197, 58, 36, 15, 68, 99, 10, 63,189,127, 36,158,199,170,236, 55, 92, 6,207, 52, 5,104, + 26,172, 51,116, 86,211, 36, 81, 77,123, 5, 17,195, 28, 18, 83, 76, 91,226,159,174,238, 0,146,196,180,170, 18, 81,169,112,103, + 12,189,214,124, 26,102, 94,150, 72,119,220,145,172, 97, 68, 34,116,207,211,194,236,131, 76,228,166,150,159,212, 3,253,208, 58, +246,109, 75,204,133, 97, 10, 60,159, 71, 48,134,199,125,199,253,190,151,162, 17, 13, 86, 67,219, 52,244,251, 61,253,233, 72, 46, +137,105,156,241, 62,114,186, 63,112,255,230, 68, 65,241,250, 60, 48,142, 11,187,125,199,241,180, 99,191,235,113, 77, 67,142,137, +241,245,178,125, 94, 40, 69,191,239,184,123,188,195, 52,110,115,107,172, 94,100, 83,123,174, 37,219,185, 22, 74, 88,179,217,166, + 98, 72, 44,243,140,221, 55,116,251,150, 48, 47,164, 92,106,254,185,197,135, 64, 38, 97,179,226, 95,254,254, 15, 24, 13,247,239, +222,176,235,123,140,179,116,189,229,126, 47,101, 67,249,245,194,227,199,119, 28,222, 62, 97,180, 33, 21,197, 20, 71,146,130,225, +121,100,190, 36,254,248,199, 63,208, 20,195,239, 63, 60, 17, 77,100,154,103,162,207,104,211,112,190,204,156,159, 71,164,192, 80, + 44, 64, 33, 69,150,146,241,117,211,115,214,240,120,216,211,119, 29,186,177,236,239,239,233, 31, 78, 88,219, 10,194,182,113,127, +106, 27,182, 87,149,249,170,146, 22, 29,155,218, 82,207,174, 98,183, 82,185,187,180, 9,215,214, 84,180, 85,164, 38, 73,102,178, +245,144,175,121,236,183,127,197,186, 41,228,155, 77,248, 42,112, 83,215,176, 19,101,171, 77,172,118,146,203, 18,183,109, 87,121, + 27, 24,216,168, 19,245,157,133,237, 54, 53,110, 29, 82,106,146,105,221,126,111,224, 89,174, 98,172,194,170,182,151,129, 37,165, +184, 73,195, 86, 42,161,212,161,112,133, 62, 89,145,134,114,253, 93, 32, 7,155,169,246,192, 82, 61,233,106,157, 29,202, 21, 81, + 80,165,224,235,117,187, 90,174,182,207,120, 59,228,106, 4,235, 77, 89,108,201, 53, 1, 81, 85,191,246,234, 0,138,105,139, 66, + 77,148,173,152,100,237,103,151, 97,137,155,247, 81,191,107,165, 73, 89,218,199, 86, 10, 66,109,162,189,178,233, 46,116,209, 88, +101,165, 31, 93,107,186,102, 87,197,191,210,218, 41,135,122,250,102,104, 89,115,251,175,225,117,107,149,108,145,198,204,117,224, + 83,101,173, 6,173,103, 72, 29,194,212,149,238,177, 55,223,117,240, 98,213, 90,237,121, 49, 8, 2,236,180, 44, 75,171,192, 48, +133, 32,105,143, 86,208,187,166,109,170, 54,169,108,170,119,173,174, 88,209,138, 4,172,254,121,109,197, 9,227, 67, 68,235,234, +100,170,195,219,149,190,249, 78,224, 89,242, 55,133, 57,107, 43,224,170,201, 18,221, 4, 88,171,249,242,229, 43, 33,120,246,187, + 14,165,170,178,223, 57, 66, 72,204,211,130, 49,215,123, 85,215, 36, 61, 17,119,150, 74, 55,228,106, 39, 23,133,188,132,209,212, +178,163, 58,196, 73,140, 94,213,189, 24,125,245,141, 82,107,251,148, 86, 52, 77,203,254,180, 39,132,192,112, 30,176,173, 3,163, +197,206, 86,121, 58,107, 44,253,190, 33,164, 68, 12,158,166,111, 40,120,210,178, 64,221,158, 82,245,203,110,211,117,125,144,180, +173, 35,150,204,235,101,192, 25, 45,162,181,122,128,175, 23,179, 85,107, 11,148, 64, 35, 33,120,186,182, 33,164, 80,115,135, 19, +174,222, 88,185,214, 52, 58, 93,120, 61,139,154,124,181, 31,244,214, 50,103,133, 79,176,228, 36,222,195,114, 85,213,234,122, 51, + 22, 96,140,145,179,247,252,240,254, 29,239, 30,239,241, 37,177,204,177,170,251,131,124,152,148, 43,111, 98, 45, 93,183,195,151, +194,143,127,249,215,116,253,142, 47,255,250,111,149,114,177,248, 40,211,184, 47,133,247, 31, 63,144,137, 60,191,156, 73,139,175, +153,190,219,108, 69, 12,137,224, 19, 33, 72,213, 96, 0, 62, 60,221,113,234, 37,128,197,182,150,133,194,121,156,201, 69, 97, 93, +131,181, 10, 75,102, 30, 23,124, 40,132, 82,152, 66, 98,136, 5, 79,198, 53, 13,146, 7, 36,214, 9, 82,194, 20,105, 49,218, 89, +197,222, 24, 46, 62, 48,248, 68,119,232, 73, 86, 51, 21,197,144, 50, 47,195,192, 18, 68, 52,214,104, 83,161, 38, 17,164,136, 61, +173,197, 43, 24,150,200,235, 48, 19, 67,226,205,126,199,227,113, 71,235, 68,144,165, 20, 56,107,217, 31,247,236,238,143,148, 70, + 49, 77, 30, 63, 69,154,214,241,240,116, 79,211,118, 92, 46, 19,151,215,137,174,179,156,142,123,118,187,142,214, 57, 74,204,204, +231,129,228, 99,221, 36,165, 33,237,238,233, 30,215, 54, 21,230,179, 87,123, 75,125, 74,106, 99,183,168, 78,165,175,117,160,209, + 71,150,105,193,185,150,221,105, 7, 62, 83,124,148,255,206, 24,177,195,104,197,174,107,249,255,254,254, 31,249,237,223, 62,113, +255,244, 40, 29, 2,141,163,105, 53,167, 67,131,179,154,241,249, 43,247,247,247,220,255,248, 17,219,119, 80, 44,126,158, 65, 21, +198,243,196, 50,121, 62,125,250,204,101, 92,248,221,135, 55, 52, 22, 22,239, 89,150, 9, 99, 90, 82,210,124,122, 57,227, 75,192, + 41, 48,245,160, 89, 74,198,107, 8, 89,248,246,183,135, 29,247,187, 94,120,244,211,137,195,187, 55,184,253,174,138,105,216, 56, +211, 45,138,117,123, 96,149, 26, 5,155,183,115,124, 5, 38,175, 86, 39,245,109,157,122,206,155,120,108,133,173,245,218,109, 93, +211,209, 84,249,214, 34,119, 45, 76, 73, 87,232,123,251,209,155,217,172,102,143,235,205,159,189, 37,208, 85,120,145,111,162, 86, +175,175,172,220,100,184,175, 67, 93,249,166,176, 69,109,135,249, 74,173, 92,233, 6,189,249,243,175, 2,182, 53,186, 53, 81, 84, +141,116, 69,158,125, 43,105,177,230, 32,232,170,164, 95,219,227,182,166,185, 27, 94, 93,213,130, 18,173, 52,185,170,147,215,135, +127,240,169,210,138, 85,179,180, 41,228,215,162,150,235,123, 90, 35,177, 87,244,160,130,217, 27,106,176,198,188,218,106,209,204, +181,109,108,171,194, 85, 85, 0,169,215,160,157, 27,191,126, 45, 89, 90, 95,115, 38, 95,251,234,179,108,160,186, 10, 39,215,109, +217, 25,139, 54, 34, 2,211, 55, 7,246, 58,144,172,201,102, 91,159,192, 55,226, 68,181, 37,204,233, 27, 42, 69,175,161, 64, 37, + 99,171, 48, 46,149, 77,148, 94,109,135, 50,208,165, 36,218, 34, 83,211,250, 66, 16, 45,193,202,177,175,223, 99, 76,121,243,165, + 83,221, 58,171, 62, 46,213,207,122, 83,148,164,117,232, 84,155,230,195,106,113,229, 68, 89,117,113,141,251, 54, 32,233,198, 78, +121,189, 93,214, 16,181,140,182,107,232, 77,250, 6,181, 90,241, 35,191,100, 94, 95, 95,105,219, 29,109,219, 11,210,107,229,179, + 61, 95, 46,184,198,109, 26, 24,231, 92,253, 60,203,214, 32, 9, 69,174, 41,133,216,222,170, 48, 52,249, 92, 99,130,175,129, 79, + 70,150, 68,189, 9,105,114,150,135,166,181,134,166,105, 48, 90,179, 44,146, 75,222,245, 61, 42, 20,166,151, 17,205,181, 69, 71, +187,150, 24, 34, 86, 25, 26,215, 72, 61,104, 8, 87,110, 68, 75,130, 21, 70,139, 0,164, 78,119,125,219,177,204,137,243,101,162, + 49, 53, 41, 40, 23,114,140, 85,144,113,157,234, 82,202, 12,179, 76, 52, 93,223, 9, 79,149, 18, 42, 37, 90, 43,109, 53, 89, 75, +231,120,240,137,231,215, 87, 41,223,240, 18,168,227,148, 98,137,226,113,244, 49, 94, 39,228,213,239, 89, 4,174,203, 90,177,228, + 68,223, 54,252,248,254,189,148, 14,196,204,188,120,114, 73,146,164,151,234,235,171, 19,246,254,241, 14,101, 20,205,126,207,155, +247, 31,249,252,243, 47,248,243, 11,182,105, 8, 89, 54,173, 66, 97,255,112,207, 15,127,245, 59,254,252,199,159,201,243, 66,140, +162,188,205,185,194, 87,165,224,131,175, 23, 86, 77,102, 82,138,247,111, 30, 8,227, 44,129, 58, 78,115,185, 76,140, 33,108,240, + 83,215, 55,164, 69, 28, 1, 49, 75,212,236, 24, 11, 83, 82, 40,231, 80, 10,172,117, 82,198, 19,133, 94, 81, 41,208, 41,195,201, + 40,198, 88,184,196,140, 57,246, 20,103, 24, 75,225, 53,201, 33,189,212, 98, 24,163,100, 59,183,218,208, 58,195,190,235,232,154, +134, 4,140, 33,115, 89, 34, 99, 12, 60,236, 27,222, 30,228, 64,215, 85,205,107,180,226,120, 58,176, 63,237,209,141,193,207,158, +101,242,228, 84,120,184, 63,114, 56,182, 12,131,103,184, 76, 52,173,225,112,216,179,219,239,232,187,142,146, 50,211,203,133, 48, +251, 45, 45,171,219,117, 60, 60,221, 99,219,166, 90,150, 76,133,155,245, 6,187, 75,196,100, 85, 57, 87,175,171, 2,114,204, 76, +211, 12, 26,118,135,158, 18, 50, 97,246, 85,253,171, 36,202, 17,184,127,186,231, 79,255,252, 7,254,249,111,255,133,187,199, 7, +118,199, 35,174,111, 80,206,176,235, 45,251,190, 97, 56,127,229,208,183,220,255,229, 79,216,211,145,152, 12,211,248, 74,137, 30, + 63,120,230,215,133, 79, 95,158,249,237,211,111,252,229, 79,239,217, 31, 27,206,211, 44,109,123, 88,138,109,249,244,229,133,101, +246,160, 11, 38, 11, 95,229,115,102, 86, 5, 95,123,150,239,250,142,119,167, 35,182,109,104, 14,123,142, 79,111,177,167, 29,218, +186,205,246,162, 55,239, 52,155,101,180,108,253,231, 84,241, 91,222,182,204,173, 99,124,219,124,175,212,221, 53, 27,254,154,115, +157, 83,185, 65,179,215, 34,166,111,121,244,111, 4, 99, 85,172, 71, 69,161, 86,229,249, 26,206, 84,123, 80,106, 89, 71,150, 46, +247,181, 70,166, 30,214,233,187,190,244,111, 14,245,219,184,216,255,128, 79,255,214,254, 86,182,247, 80,138, 18,103, 78,186, 38, +208,149,156,106, 71,131, 36,115,173,188,225,186, 13, 11,100,108,191,203, 71,175, 30,230,245, 96, 89,255,217,250, 16, 94,169, 1, +132, 83,205,185, 72,209,134,213, 55,149, 95, 92, 61,234, 85,175, 96,181,145,237,186,230,156, 23, 37, 62,241, 85, 45,174, 81,196, + 18, 43, 85,120, 69, 97, 84,181,136, 81, 17,209,188,169,202,111, 61,254,185, 66,239,177,218,177,184, 22, 28, 21,209, 46, 81, 15, + 36,177,192,101, 92,235,136, 72,169,148,169,131, 82,222,226,119,197,130,101,141,174, 10,250,180, 93,135,234,166, 13,206, 26, 93, +249,246,171,199,127, 61,224,183,185, 47, 11,210,154,171,125,235, 54, 92,200,215, 97,222, 57,123, 21,207, 89,189,249,212,133, 26, + 74, 50, 32, 20, 65,129,251, 93,143, 42,130, 40,165, 90,252,163, 54, 70,166, 34, 36,149, 79, 87,117, 64, 49,202,144, 67, 32,198, + 69,170, 77, 43,226,117,117, 89, 92, 47,255,117,112, 5,249,243,198,184, 45,153,114, 77,154,219,196,157,245, 93,126,250,244, 66, +235, 26,218,166, 21,113,183, 19, 13,192,235,120,174, 86, 52, 57,135,157,107,234,119,182, 70,223,202,146,189,106, 1,172, 19, 71, + 79,138,114, 93,160,117, 69,218,106,203,157, 92, 11, 26, 83,106,205,159,241,194,121,105, 77,215,119, 40, 69,109,188,202,236,118, + 61,139, 95, 88,162,151,135,168,164,110,162,108, 75,156, 60, 57,131,107, 59,194, 20,200, 73, 4, 75, 41,131, 54, 14,101, 29, 73, + 41,178,145, 11, 88, 57,195,225,184,231,245,124,225,245,117,168, 15, 92,233,138, 13, 75,160, 53,215,110, 89,163, 52, 62, 71,198, +113,164,239,123,154, 78,172,107,137, 76, 83,131, 13, 34, 74, 18,235, 76,225,245,249, 76,188, 76,242, 32, 75,210, 67, 60,149,194, +146, 18,115,138,219,212,105,138,216, 48, 92,145,106,211, 72,102, 86,224,115,225,175, 63,252,192,169, 49,148,156,241,179, 8,227, + 98,200,120,191,136, 72,171,222, 80, 37,103,186,227, 1, 92,195,253,219,183,204,203,194,159,127,254, 25,219,237,176,109, 47, 41, +105,128,238,246,188,125,255,129,152, 18, 95, 62,125,150, 66,154, 24,254,127,182,222,179, 91,142,235,188,214,125, 86,170,208, 97, + 7, 68, 82,164, 72,201,146, 45, 29,251, 30,251,255,255,142, 51,238, 73, 86, 22, 69, 16, 4,176, 67,135, 10, 43,222, 15,239,170, +234, 6,174, 63,104, 12, 74, 20, 54,122, 87, 87,213,122,195,156,207,172,187, 40, 33, 90,229, 36,217,221, 41, 73,160,135, 38,243, +234,110,199,109,231,152,231, 25,101, 12,167, 41, 48,140,190, 70, 62, 38,156,213, 20, 47,145,173,169, 32,222,240, 4,231, 92,136, +149,232,101, 20,108,156,149,184,211, 34,135,135, 45,153, 91,101, 80, 73, 51, 37, 77,106, 27,188,129,115,134, 33, 22,158,198,145, + 49, 37, 17,219, 32,153,233,168, 66,103, 52,219,166,101,235, 26, 82, 41, 12, 9,134, 16, 73,201,179,177,154, 87,251, 13,189,171, +163,163,186,210,184,221,109,217,221,108,112,187, 22, 31, 2,254, 20,200,243,204,205,253,142,251, 87,119, 76, 62,243,124, 58,163, +148, 97,123,179,161,223, 54,244, 93, 75, 73,153,225,249,192, 60,251,245, 61,216,244, 45,119, 47, 95,210,117,205, 23, 17,148, 50, +106,148,127,214,107,135,126,157, 72,150, 83,102,154, 38, 0,250,205, 6,148, 38,206,161, 90,221, 52,211,236, 33,194,253,203,151, +156,127,250,192, 31,255,199,255, 21,171,220,126, 71,179,233,208,189,165,111, 52,247,219,158,241,112, 34,249,204, 87,191,250,158, +254,171,183,148,220, 48,157,159,136,105, 98, 78,145,225,228, 57, 28, 6,254,246,195, 39,190,126,251,146,111, 95,223,226,199,192, +121,154, 72, 73,108, 51,159, 30, 30, 57,140, 35, 14,133,205,242,125, 70, 96, 40,133, 41, 7,140,145,149,197,139,237, 6,211,118, +152,190,103,251,242, 30,183,219,162,157, 17,225,169, 86, 40,107,192,214,152,202,156, 86, 15,182, 94,252,191, 95,170,200,151,172, +237, 43,156,234, 37,184,162,124,150, 17, 46,182,170, 68, 33,137, 98,253, 42, 67,124,205, 72, 95,178,196,175,192, 50,194, 27, 91, +188,226,215, 99, 75,201,100, 95,186,225,188, 42,216,235,206, 83,101,208,101, 69, 46,127, 6,172,185,238,216,175,130, 89,114, 74, + 87, 99,254, 84,211, 17,107,254,123,185,196, 21,137, 37, 42, 47,171,220,122, 61,170,151,127, 57, 36, 75, 70, 47,127,166, 18, 51, +151,128, 94,153,172,214,128,153,114, 17, 38,162,213,103, 89,234,169,174, 41, 74, 77,121,243,126, 70, 41, 69,211,216, 53,141,141, +138,220,214,215, 59,228, 75,164, 90,173, 43,114,101,245, 23, 1,207,160, 8, 57,145, 84,146,149, 75, 93, 53,164,250,156,150, 69, + 75,144, 50, 42, 8, 86, 58,103, 81,221, 7, 31,100, 10, 56, 71,252, 20,152,103, 95, 97, 56,162,204, 47, 57,227, 17, 34,227,178, + 11, 14, 41,208,116, 45,185,218, 43,181, 18,173,213,114,109,149, 86, 24, 85, 48, 74, 58,196, 37,157, 78,151,178,174, 31, 36,111, +161, 32, 34,237, 42, 52, 92, 28, 26,162,237, 71, 45,192, 60, 77, 93,129,213,159,169, 36,242,101,204, 94,212,235, 92, 31,176,166, + 22,175, 18, 16,166, 10,168,198,214,105,107,161,105, 27, 84,200, 43, 52, 41,167,188, 90, 58,115, 46,117, 42,160,214,152, 86,107, + 12,182,177,196,144, 72, 62,210,116, 70,116, 58,250,250,233,184, 0,125, 36,165,176,174,150,151,124,133,202, 15, 72,139,134,236, +202,131,111,140,230,225,112, 2, 29,233,186, 70, 86,172, 41,209,118,150,121,154,133,251, 82, 49,177,141,179,181, 64,225,234,189, +166, 87,151,137,112, 58, 44,190, 58, 8,148, 86,132,235, 85,130, 54, 88, 93, 20,197,212,135, 58,130, 70, 58, 29,215,200, 78, 96, + 26, 38, 26,219,227,186,158,243,249, 64, 72,190, 50,180, 53,253,126,135, 81,153,121,154, 41,186,208, 52,142,249,248, 36, 47, 2, +149, 73, 58, 73, 72,133, 50,146, 15, 93,187,234,214,106, 54,141,229,116, 56, 9, 45,167, 8, 45, 40,196,140, 83,150,214, 90, 41, +102,141, 70,183,150,179,159, 24,231,137,237,205,150, 4,168,106,121,115,206, 80,180,252,114,141,179, 36, 10,207,167, 35, 41,199, + 90, 73,201,232,103,206, 16, 50,248, 36,159,165, 55,150, 56, 5,241,115, 86, 37,168,215,134, 51,153,175,239,246,252,226,237, 29, +193, 23,114,214,140,243,140,113,142, 20, 61, 49, 68, 76,201,226,249, 52, 26,109, 44, 77,211,177,189,191,165,221,108,249,203, 63, +126, 32, 12, 3,155, 87, 47,136, 53, 87,183,221,117,236, 55, 61,119, 47, 94,240,244,241,131, 88,252,140, 35,248, 32, 86,149, 34, +170,199, 57,204, 85, 79,176,232, 26, 44, 47, 94,236,201,213, 18,168,157,230,233, 48,225, 83,145,223,223, 20,108,175, 9,207, 3, + 70, 9, 40,103,138,153,177,142,221,149,147, 8,218,190,233, 4,220, 19, 18,134,132, 46,129,173, 22, 10,210, 80, 12, 89, 23,102, + 20,147,207,204, 62,240, 92,147,228,196,242, 44, 2,153,146, 19,155,166,101,211,119,236,155,134,185, 68, 78,177, 16,234, 42,197, +104,184,221,118,244,141,236,208,115, 22, 59,207,221,190,103,191,223,225, 92, 67,154, 35,126,148, 21,138,179,134,155,187, 61, 81, + 41,206,231, 1, 67,166,223,244,116, 93, 67,223,247,104,173, 56, 63, 28,136,115, 16,149,178,178,180,219,150,155, 87,183,184,182, + 17, 13,117, 29,235,151,170,158, 93, 58, 0,173, 63,127,233,163,164, 96,244,179, 39,229, 76, 91,247,244, 49, 4,178,150,123, 36, +204, 1, 31, 3, 47,223,188, 70,149,192,159,254,215,127, 50,156, 39,238,238, 95,224,156,163,217,116,180, 38,115,123, 43,248,227, +249,121,228,251,127,254, 37, 47,190,255,142,172, 27,198,243, 39,252, 60, 99,179,102,122, 26, 57, 28, 6,254,244,247,119,188,184, + 49,124,255,213,107,206,227,192,121, 30,137,227, 72,219,222,240,112, 10,156,207, 3, 77,213, 42,168, 10, 80, 10, 5,124,201, 98, +169, 51,150, 87,125,199,126,187,193,118,142,205,203,123,218,219, 91, 92,107, 48, 57, 83,140,240, 6, 84,221,121, 47,233, 89,165, +142, 24,169, 89,230, 11,242,121,137, 68,165,138,215,116,249, 66, 89, 94,212,149,160,170,142,108,149, 20, 67, 98,255,187,236,123, +191,140, 52, 93,187,227, 85,143, 38, 99,224, 85,245,174, 63,183,162,161, 46,159,229, 50, 10, 23,150,197,245, 33,254,121,128,203, + 21, 63, 94, 41,217, 64, 87,230,247, 18,178,118, 25,125, 46,244,201, 44, 16,158,101,103,191, 16,216,180,172, 18, 4,231,106, 87, +148,232, 98, 81, 93,160, 36,234, 42,229,107,177,213,171,171, 41,199,218, 37, 87,111, 69, 89, 10,148, 20, 65, 25,194,236, 25,135, +145,182,239,229,221, 87,197,101, 57, 69, 82, 61,212,151,200, 83,212,133, 98, 22, 83, 36,228,128, 81,194,250, 46,171,191, 59,177, + 36,197,166,148,152,117, 36, 25, 89,169,201,212,196, 86,189, 67, 66,199, 12,216,250,181, 41,124, 12,248,152,136, 73,212,248, 42, +131, 4, 91, 74, 22,122,201, 16, 82, 16,215, 81,145, 29,237,110,187,225,124,146,162, 90, 44, 94, 82, 20,169, 42, 60,180,118,217, +253,139,179,168,232,186,104, 81, 34,134, 94,180, 21,182,230, 9,120,242,133,135,192,197,202, 88, 76,150, 46,187, 78, 55,156, 54, +235,247,157, 67,181, 67, 27, 67, 70, 80,217,230, 98,128,199,212,180,192,166,109,170,239, 29,177,120,142,105, 45, 78,115,138,100, +107, 69,127,144, 50,137,122,255, 71, 57, 39, 98,181,251,106, 50,209, 7,154,110,131, 51,117, 93,116,213,162, 95, 51, 20, 74,202, +245,126,170,168,109,173,137, 73,138,181,198,185,186,122, 84,107,151, 63, 15, 19,167,211, 72,219, 89,180,147,238,218, 54,134,227, +105,100,246, 65, 38, 30,165,224, 76,131, 91,132,138,170, 10,246, 22,253,104,140, 52, 77,131,179, 70, 86,222, 41,209, 88,177,239, + 70,192, 81,155, 25, 17,206,102,177, 98, 32,139,121,107, 45, 77, 99,201,185,112,122, 56,208,182,150,110,215, 50,157,206,100,159, +209, 74,198, 19,125, 29,133,151,148,112,173, 67,101,117, 25,213, 21,133,178, 45,165, 74,238, 85, 53, 86,150, 82,232, 58, 75, 49, +240,124,124, 90,119,219, 41, 23,124,152, 81,173, 37,187,134,162, 52, 70,146,255,120, 60, 13, 24,107,233,218,142, 56, 74,112,189, + 41, 25,167, 36,163, 87, 25,139,213, 45,195,241,196,233, 60, 16,114,134,146, 48, 20, 74, 49,204, 89, 49,196, 89,242,206,149,166, +211,194,150, 55,149,130, 53,107, 77,208,134, 6,205, 47,223,190, 89,247, 48, 97,246,140,231, 73, 82,205,162, 23,127,122, 18,161, + 6,166, 96, 90,203,238,213, 43, 94,127,245, 53, 15, 31, 62, 50, 61, 31,104,108, 75,179,221,226,167, 73, 96, 33,247,247,152,206, +161, 77,146, 34, 70,107, 66,152, 40,197, 83,208, 98,233,200,137, 56,132, 58,142, 19, 1,223,253,125,207,237,166, 71,249, 8,166, +240, 60,204,156, 7, 47,120,201,156,105,219,134, 52, 68,129,252,163, 56,205, 51, 67,202, 12, 57, 83, 42, 96,166,105, 26, 90, 45, +192, 3, 69,193, 21, 77,135,163,177,150,100, 52, 1,197, 88, 12,211, 36,206,130, 39, 63, 51,229, 76,214, 5,165, 13, 45, 6,149, + 11, 77,107,217,111, 26,182,157,163,168,204,121, 74, 76, 49,147,178,172, 72,118,141, 99,219, 24,148,150, 46, 41,206,137, 6,129, +185,232,198, 18, 74,230, 60, 14,204,126,194,151, 72,127,183, 99,179,105,153,143, 71, 17, 29, 54, 13, 77, 39, 84,182,198, 41,206, +207, 71,194, 56, 87,244,172,162,217,180,220,191,122, 65,219,247,117, 74,116,225,243, 43, 37,105, 73,186, 78, 38, 68, 28, 39,228, + 7,133, 34,251,128,247,158,152, 35, 77,219,114,179,217,212,253,107,193, 90, 45, 60, 0, 95,120,113,247,146,190,111,248,235,255, +252, 3, 63,252,244,129,205,205,141,220,115,219, 13,198, 41,182,155, 30,163, 20,231,167, 79,188,126,117,195, 87,191,253, 13,182, +233,240,195, 73, 16,196, 20,142,167,129,211, 41,240,151,191,189,199,218,204,111,191,253,150, 52,123,198, 97, 96, 56, 31,208,101, +203,144,225,116, 30, 40, 41,162,116,174, 17,146, 5, 95, 18, 67,154, 41, 6, 92,103,185,239, 55,220,109,183,180, 93, 71,127,119, + 71,247,234, 94,246,246,214,176, 58,149, 42, 82,115,241,150, 47,120,179, 75,250, 89,185,116,135, 92, 5,159,228,154, 15, 93, 46, + 80,150, 92,167, 63,185,190,132,148, 82,213,251,158,235, 11,230, 34, 12,186, 6,175,148, 34,129, 46, 50,249,100,222, 64,200, 0, + 0, 32, 0, 73, 68, 65, 84, 74,162,162, 86,101, 85,133,175,100,186,146,106, 88,203, 37, 6,245,122, 76,174,191, 72, 16,203,245, +112,151,206, 74,200, 65,151,209,109, 77, 93,203,172,127, 46,213,113,255,197,183,190,140,242,163,220, 11,213, 50,170, 20,148,152, + 96,241,203,215,189,122, 89,166,111, 87, 86,254,178,120,193, 21, 23,207,253, 23, 34,189, 82, 46,198, 55,116,117, 90,212, 0,172, + 16, 50, 42, 25,218,202,244, 46, 10, 66,241,210,209, 69, 49,106, 47, 46, 5, 1, 5, 41,230, 84, 56,156, 39,252, 92, 8, 65,146, +205,114, 22, 31,118, 78,144,106,160, 72,200,178, 74, 76, 1,230,144,201,200,232,190, 40, 77,209, 22, 69, 67,139, 37, 39,205,121, + 46, 12, 67, 33,123, 77, 14, 10, 31, 20,115, 40, 76,190, 48,122, 56,143,153,243, 16,152, 71, 41,116, 98,241,226,197, 86,102, 77, +216,164,250,230, 99,146, 49,121,163, 13, 78, 59,217,233, 27,185,103,108,201, 24,157,193, 20,116, 73,117,100,159, 47, 64,150,108, +170,176, 76, 99, 87,219,164, 38,134, 74,110,171,220,132, 5,198,163,138,184, 46,114,157, 26, 45, 1,129, 86, 91, 84,145,235,156, + 80,196, 24, 49, 77, 67,140,153, 60,103, 26,235, 86, 7, 71, 74,130,229, 94, 29, 10, 68, 74,150,117, 98,169, 92, 6, 91, 10,214, + 54,160, 21, 49, 69, 84,209,213, 3,206,213,119,115, 49,137, 46,159, 73,229,197,187,185,164,121, 94,115, 19, 46, 14, 13,208,132, + 57,242,248,124,160,113, 29,173,105,136, 41, 96,173, 67, 23,131,159,166,149, 4,216,218, 74,150,171,121, 0,170, 10, 33, 75, 77, + 1, 85,186, 90,219,148, 38,134,188,198,196,230, 84, 8, 73, 92,237,186, 84,209,152,209, 85,108,162,138,236,211, 27, 71,241,129, +113, 30,216,116, 91,156,115,132,217, 87,224,128, 94,163, 42,151,248, 69,215,245,164, 34, 34,145,172, 20, 73, 21, 80, 86, 80,128, + 87, 5, 79, 70, 2,222,231, 49,112,124, 30,215, 74, 56,166, 66, 8,243,186, 83,208, 74,209,219,158,179,159, 57, 28, 78,108,186, +142,198,104, 98,138, 24,165,100, 36,172, 21,161, 20, 92, 99, 49,170,112, 60, 29,153,231, 32,219,185,148,208,245,231,250, 92, 8, +117,167,216, 55, 77, 37, 95, 69, 65,222, 42, 8, 70, 19, 74,225,171,251,123,238,239,110,200, 62, 17, 75,225,116, 58,145,124,160, +115, 13,254, 60, 49,196,128, 81,162, 38, 23, 44,235, 29,111,127,253, 29, 37, 71,126,124,255, 30,155, 5,189,106,247, 59,142,231, + 19,187,187, 91, 54, 93, 75,244, 51, 41, 36,198,195, 1, 99, 45,243, 28, 80,202,213,132, 34,200,115, 36,164, 84,117, 4, 96,141, +226,254,110, 67, 9,242,210, 73, 40,158,143, 19,164, 66, 10, 81,196, 41,214, 48,141, 35, 69,105,230, 32, 25,232,231, 92, 72, 90, + 88,249,206, 25, 54,141,101,242, 1, 74,193,169, 66,175, 10,219,198,161,181,101, 76,112, 40,137,199,121,228, 48,205,140,115,100, + 70, 24,194, 84,145, 34, 8,195,249,110,219,179,109, 36, 84,228, 48, 71,158,252, 76,166,208, 90,197,182, 49,236,156,195, 40, 77, +142,117,172,104,160,219,181,196,156,241,193, 51, 13, 35,211, 56, 49,141, 17,231, 28, 55,119, 55,156,135, 81,120,205,214,208, 52, +146,220,230,156,226,240,112,194,159,166, 21,161,105,173,229,238,205, 45,205,182,249, 44,180, 98,217,253, 45,169, 72,162,120,151, +157,173, 54, 74,198,235, 57, 17, 66, 36,198, 76,211, 52,108,182, 61, 73, 75, 96,135,209,138, 20, 18,211, 48,177,187,217,112,251, +234, 5,239,254,239, 95,248,241, 15,127, 67,105, 71,219, 56,218, 77,139,235, 29,189, 85,236,122,199,240,233,196,166,223,242,205, +191,253,142,246,197,107,134,113, 96,120, 58, 96,138,146,241,250,113,230,111, 63,252,204, 60,156,248,253,119,223,211, 57,199,113, + 60,113, 30, 79,164,104, 9, 24, 14,207,103,217,125, 85,113, 15, 64,204,133, 83,144, 1,104,219, 56,246, 77,203,253,110, 75,183, +233,105,246, 91,182, 47,239,177,109,123, 25,213,102,245,153, 66, 93, 95, 9,147,150,176, 22, 99,204, 37,152,233, 58,168, 37,139, + 48,204,152,139, 58, 29,181,100, 43,200, 1, 94,178, 76,135,168,226,177, 11, 92,229, 74,209,180,164,116, 85,197,248,130, 29, 43, +107, 2, 99, 89,151,171,121,113, 48, 85,155,214,218,174, 95,249,140,175, 35,217,214,209,254,162,164,215,235, 28,224,178, 42,184, +138, 94, 85, 53,234,248,122,239,190, 0, 81,148,190, 8,235, 74,229,179,115,165, 98, 95,212,131, 43, 78, 84,171,149,182,183, 8, +218,174, 20,124, 23,251,213,181,107,168,138, 8,139,146,196, 75, 85,195,130, 66, 76,152, 86, 97, 27, 17, 3,154, 66, 5, 76,165, +181,152, 64, 87,159,127,204,156,198,137,199,167, 35,126, 14,162,122,103,225,172,171, 58,242, 13, 2, 57,201, 16, 82, 90,113,204, + 62, 70, 82,209,120,159,136, 62,145, 67, 33, 69,120, 60,123, 62, 60,159,249,116, 60, 75,241,108, 28,173,113,184, 90, 0,231,162, +241,161, 48,205,137, 97, 74,100, 36, 29, 46,198, 12,218,225,131,175,118,188, 82, 87, 48,162,186, 46, 85,148, 41, 35,226,114, 89, + 71,202,162,191,238,214, 85, 37,156, 73,161, 99,205,133, 73,175,170, 18,254, 10, 98,183,178,245, 83,254,194,175,141,149, 16, 33, + 64,105,129,162,217,250,252,167, 42,236,180, 74, 11,165, 45, 37,166,105,164,113, 26,221, 84,203, 94,206,132, 36,187,245,117,205, + 82, 45,185,203, 33, 29, 98,172,140, 0,121,127, 25,173, 4,192, 86, 63, 23, 85,183,114, 21,251, 86, 99,104,115,253, 29,178, 40, +216,201,107, 24,205,178,186, 41, 21,237, 27, 99,228,248,124, 66,107,187,126, 86,173, 53, 93,211, 48,214,181,160, 86,154,162,141, +176,246, 23, 53,253, 21,213,112,141,157,173,182,201, 37,173, 79, 27, 35,133, 70,204, 53, 26,151,202,216,173,241,138, 70,107,218, +174, 3,229, 24, 79, 3,211, 60,177,185,221, 9, 30, 48,165,117,119,150,138,224, 81, 75, 41,140,195,128,107,173,236,124, 66,148, +119, 78,181,180,165, 34, 47, 8, 85, 42, 79, 55, 75,250,206, 52, 78,140, 62, 84,181,189, 40, 24,115, 46,116,141,176,112,173, 53, + 52,157,227,227,211,145,217,207, 18,103, 89,119, 42,166,102,252,138,217, 94, 99, 91,135,247,103, 14,199, 35, 41,200, 97,110,171, +240, 35,148,196, 92,164,208, 48,218,176,177, 86,178,105,149,132,202, 68,171,201, 74,161, 83,228,237,139, 59,121,144, 82, 38,196, +196, 60,121,172,147,241,156,159,166,122,195, 45,162,141,204, 87,191,254,158,219,251, 59,126,252,225, 31, 40,228,144,232,218,134, +168, 68,241,222,223,236,121, 62, 62,209,109, 58,134,233,140, 9, 50,150, 12, 99, 64,105, 43,195,168, 34, 19,129, 66,145,202,150, +204,203, 23,183,108, 27, 71,142, 1,101, 52, 15, 71,207, 48,137,222,129, 28, 49,173,101,154,194, 58,178, 58,249,200, 24,193, 23, +181,130, 47, 54,157, 88,193, 38, 31,112,170,176, 49,178,242, 48, 70, 51, 39,137,106,253, 56, 12,156,103, 47,113,176, 85,109, 47, + 52,175, 5,217, 89,184,221,201,200,221, 40,205,228, 35,159, 78, 35, 1,232, 26,195,206, 89,122, 83,189,171, 9, 66, 85,143,246, +219, 22,215, 53,204, 33,113, 58, 13,204,147,175,177,185, 18,120,112, 62,143, 76,126, 70, 91,141,179,134, 77,215,176,233,122, 14, + 15, 39,166,211,176,118, 73,174,117,220,189,125, 65,187,233,214,248,201, 37,110, 81,153, 26, 37,169,245, 21, 41,237, 42, 57, 44, +103, 66,136,164, 44, 73,127, 93,215,161,181,196,249, 42, 99, 8, 41,114,122, 62,209,239,182,188,122,243,138,247, 63,252,149,119, +127,250, 43,195,232,217,184, 6,109, 12,155,221, 22,235, 20,119, 93,195,116, 60, 96,125,224,219,223,255, 11,119,223,127,207, 56, + 14,156,159,159,209, 58,147,231,196,120,138,188,123,247,145,135,167, 71,126,253,237, 47,184,221,110,120, 60, 60, 51,140, 35,195, + 56,145,117,207, 97, 62, 73, 87, 61, 7,129, 53, 35, 69,231,121,246, 76,165,208,116, 29,157,147, 46,125,211,182, 52,187,158,205, +171, 59,108,223,226,172,132,209,148,138,131, 93, 94,134,162,250, 55,255,127,216,206,138, 48,213,151, 81,102, 45,108,175,133, 76, +159, 5,117, 44,241,167,229,162,168, 95,186,213, 69, 65,188,112,191,215,252,117,214,120,135, 5,224,190, 10,220,174, 85,208,133, + 5,160,162,185,200,149, 46,202,221,207, 32, 53,245,231,172, 43,133,242,133, 34,255,234,179,171, 10,127, 17, 7,132,190,242, 68, +171,207, 70,160,171,162,126,217, 99, 47,135,198,146,138,182,252,206,185,172, 59,117,181, 30,166,233, 98, 16,186, 58,236, 37,223, +188,142,223, 21, 43, 95, 61, 43,177,248, 77,163,199, 88,141,179,170,238,235, 21, 58,178,102, 58, 80, 50, 49, 4,198,201,243,124, + 26,248,249,241,145,113,152,176, 74,132,166, 57,101, 82, 72,235, 94, 56, 37,153,142, 37, 96,138,129,105, 14,162,245, 9,137,201, +103,166, 41,212,162, 5,142,231,145,231,243, 72, 74,133,189,107,104,172, 28,210,195, 56, 18,131,176, 54,130, 79,132, 41,146, 99, + 89,226,197,165, 64, 73, 10,231, 44, 83,240, 43,235, 63, 84,171,109,168,124,139, 84,138, 88,221,202,234, 78,148, 48,147, 26,144, + 99,180, 90,109,138, 74, 73, 10,155,185, 2,207, 44, 23,178, 49,210,160, 73,126,142, 90,228,125,151,132, 64, 35,215, 63,196,184, + 66,145,148, 8, 71,200, 69,138, 12, 83, 25, 21, 37,231, 53,222,212,104, 93,207,157, 82, 11,179,117,144,181,190, 75,196,194, 88, +149, 34, 85,191,149,115,193,167,112,217,109, 43,174,238,227, 11,217, 48,175, 68,186,218,252,212,223,125, 17,122, 94,138,146,197, +154, 12,227, 48,201,170,192,185, 90,168, 40,172, 85,156,230,161, 18, 84, 21, 69,187,170,166, 55, 23,153,197,213,114, 63,215,156, + 13, 83,195,111, 98, 77, 50, 45, 64, 10, 17, 82,150,115, 66,235, 26,129, 88,146,204,236,157,136,219,134, 65,188,217,221, 70,162, + 46,115,140,178,111, 81, 74, 94,220,141, 19,127,106,202,184,214,146, 67, 88,111,130,162,145, 20,159,138, 58, 21, 27,140,116, 2, + 93, 35, 76,244,113,154,196,235, 9,248,152, 48,202,209,247, 45, 74, 41,218,182, 97,142, 51, 31,158,143, 56,237,176,141,195, 87, +101,188,169, 41,159, 5,133,181, 45, 86, 89,158,158, 79, 60, 63, 31,201, 5,108,202,168, 32, 98,132, 89, 21, 66,221,229,180,206, + 94, 42,179, 58, 54, 73, 74, 81, 82,230,102,219,179,191,223, 19,147,140, 32,253, 20,152,199,132,117, 13,115,242, 76,243, 9, 87, + 36,173, 76, 41,205,254,238,142,239,126,255, 59,158, 30, 30, 57, 29, 15, 88,109, 24, 15, 39,218,205,134,156, 13,221,118, 71, 82, +137, 97, 28,184,189,217, 49,158, 78,152,214,144,131, 84,232, 89,105,114, 86,196,217, 11, 8,167,222,240,157,213,220,223,237, 41, + 81,154,159, 41, 37, 62, 62,157,197,226, 17,102, 26,103, 8, 37,227,231,128, 54, 13,231,144, 56,133,200,144, 37, 88,165,144,233, +172,163, 45,134,121, 10, 88, 10, 27,167,216,219, 6,163, 12, 83, 44, 60, 77,158, 79,195,200, 60, 39, 50,154,137,194,100, 50, 89, +129, 69, 11, 35, 64, 41,110, 55, 45,119,155, 86, 48,138, 41,241,112, 30, 56, 77,145,155,174,101,223, 58,122,173,209,149, 23, 48, + 71, 81,213,182,141,165,177,118,181, 8, 77,115,224, 60,204,132, 88,104, 58, 7,170,240,240,124,144,157,118, 61,228, 59,103, 5, +193,123, 26, 68,204, 68,193,244,142,219, 87,247,180,125, 87, 65, 86,170,234,148,170, 55,247, 10, 1, 43, 64,143,154,107, 93,213, +160,193,139,119, 21,173,233,186, 6, 99,101,191,104,180, 33,133,192,243,249, 64,219,111,120,249,246, 45,159, 62,126,226,231, 63, +253,131,199,199, 51,182,223, 64,130,110,187,193, 54,134,109,227,152,231,192,116, 58,241,237, 63,255,138, 95,252,238, 55, 76, 57, + 49, 60,127,164,132,137, 66,226,124, 24,249,225,221, 35,127,251,233,103,190,251,250, 43,126,249,230, 45, 79,135, 39,233,228,135, +145,156, 59,142,243, 92,215, 66, 25,170,202, 62, 41,113,117, 60,207,129,182,239,232,219,134, 23,187, 13,251,109, 71,191,223,112, +243,250, 37,237,126, 39,137,131,181,179,212,106,233, 50,242,149,124,231,243,140,113, 57, 4,210,133,134,181,116, 25,245,254,184, +120,185,235, 33,157, 19,203, 91,253, 18, 37, 90,119,245, 57,173, 42,123,177,199,177,118,189,178,195, 94, 40, 98,215,228, 72,181, +166,129,201,203,112, 97,123,219,250,125,233,245,239, 89, 66, 61, 20,215,169,106,101,141,111, 93, 15,252,207,104,113,215,255, 93, +246,173, 90,153, 10, 9,209,171,109,110,241,199,171, 43,187, 92, 81, 23,164,171,186, 18,109, 93,143, 12,174,135, 9, 75,186,228, +234,231, 79,249,242,239,175, 18,192,202,122,208, 71, 74,150, 9, 80,206,133,174,149, 16,169, 92,100,156, 30, 99, 36,133, 44,144, + 45,159, 56, 63, 79, 60, 29,206,188,251,116, 38, 71, 67, 83, 53, 44, 33, 4,230, 74,162, 43,245, 0,245, 49, 49,231, 76, 40, 48, +167, 68,138, 5, 63,103,130,135,217, 39,150, 42,236, 52,141, 60,143,103, 64,210, 17, 29,138,243, 52,115, 28,103, 6, 31, 25,125, + 36,132, 12, 69,209, 24, 39,240, 34, 52,166, 50, 4, 38,159,132,246, 22,242,154, 80, 55,251, 76,136,133,209, 7,142,211,140, 79, +145, 16, 11,114,142, 44, 89,222,226, 99, 95,190,127,153,150,136,191,221,233,186, 78, 85,122, 85,122, 95,159,239,105,229, 33, 92, + 98,100, 75,197,220,106, 37, 16,179,156,235,138,169, 78, 42, 65,130,191,180, 54, 52,125,135, 15, 2,238, 82, 74, 99,173,190,244, +183, 41,201, 33, 90, 89, 36,215,156, 3, 65,139, 35,220,245, 58, 53, 46, 33,227, 26, 87,201,114, 95,100,207,215,119, 78, 94, 44, +148, 85,121,169,245,165,177, 47,213,185,178,106, 56,106,234,221,225,116,102,158,189, 48, 51,172,140,204,173,117, 36,159,235,187, + 10,108,103,165, 64, 81, 11,233,175, 92,194,133, 22, 43,161, 22,239,191,216,254,214,228, 23,113,140,200, 59, 85, 94,132,185,166, +142,181,109, 87, 59,247,194,120, 24,104, 26, 75,219,119,144, 33,156, 7,138,145, 95,170,235, 59,116,163,137,179, 95, 3, 52,114, +242,168,186,167, 88,150, 15, 42,137, 26,210,212,177, 76,235, 26, 90,235,120, 60,158,152,231, 80,199,116,154, 41,196,186,123,118, +116,109,195,182,235, 56, 60,158,120, 58, 30,113,182, 17,149,123, 12, 52,198,138,136, 65,137,196,205, 89,203,236, 61,143,135,103, + 74, 86,100, 45,128, 21, 63,207,132, 12,161,186, 72, 12,138, 70, 27,169,164,163,236,247,162, 19,159,100, 59,103, 94,223,222,163, + 27, 75, 12,129, 16, 18, 97, 74, 20,149,176,206, 50, 71, 79,156, 11, 78, 41, 97,222,107,205, 55,191,249, 13,214, 54, 60, 62, 60, +160,181, 99, 28, 39,146, 82,180,125, 79,179,221, 50,167,196,249,116,102,187,221, 64, 10,204, 7, 81,239, 79,211,132,181,154,144, +178,216,238,194,188,200,127,208,214,112,247,242, 6,189,236, 12,173,226,227,243, 64, 76, 30, 93,162, 20, 50,198, 48,204, 81,212, +197, 73,113,154, 18, 83, 78,136,126,191,212,235,107, 25,188, 39,215, 3,126,223,244, 24, 10, 49,102, 30,142, 19,255,120, 62,227, + 67,198,160, 37,201,173, 20,116, 86, 88,148, 60,124, 5,246, 93,203,139,125, 79, 99, 37, 97,236,121,152,120,127, 24,185,217,117, +220,109, 90,122, 99, 80, 20, 66, 46,178, 95,175,185,203, 93, 83,167, 55,179, 36,217,161, 36,180, 36,148, 32,244, 37, 12, 38,101, +185,190, 73,147, 82,225,211,227, 19,231,231, 19, 41,102, 74, 6,235, 44,183,247, 55, 52,251,150, 82,164,163,201, 75,234, 85,214, +232, 36,106, 88,165,107,119,112,229,118, 38, 65,152, 61,209,203,110,172,107, 90,121,177,214, 80,139, 28, 11,195,241, 76,151, 27, + 94,125,253,150, 48, 14,124,252,227,159, 56,127, 58,161,141,248, 91,109,239,232,182, 29, 93,163,113,100,166, 97,226,235, 55,111, +249,197,191,255, 27,186,105,152, 63,126,194, 31, 14,162, 22, 31,224,253,135,103,254,244,247, 31,121,243,234, 21,255,244,245, 27, +158, 79,207,156,199,129,105, 56,227,125, 97, 76, 34,114,106, 49,164,113,150,131,203, 24,166,201,243, 60,157,104, 55, 13,109,219, +112,211,181,220,246, 45,221,182, 99,243,230, 5,253,253, 45,186,145, 0,144,117,155,125, 53, 53, 94, 64,166,210,141, 94,130, 89, +114,190,196, 20,171,122,184,149,202,177, 38,229, 47, 80,170,121,245,163,203, 93,184,240,211,107,252,231,210, 37,215,148,176,242, +133, 34, 61, 47, 73,108,117, 76,168, 10,159,101,164,127,158,159,174, 87, 75,156,186, 10,101, 89,254,254,101,215,190, 22, 22,255, +133, 32,111, 21,163,149,171,252,246,148,107,252,238, 21,154,182,124,126, 72,107,181,100,112,179, 78, 25, 62,243,226,171, 43, 96, +207, 23,191,135, 90, 4,116,215,104,177,245, 26, 84,181,122,172,135,190, 42,228,144,152,199, 64,239, 68,240, 24, 83, 33,204,145, +217,143,156,198,129,211,233, 72,154, 2,222,103,206,163,231, 48, 68,156,109,217,152,158, 48, 7,230,105,102, 14, 85,177, 94,211, + 26,131, 23,247, 78,164,160,178, 22, 44,168,146, 48, 38,239, 11, 49, 20,230, 57,241,241,124,230,227,113,164, 4,141,202,154,211, + 20,120,127, 62,115,240, 51,185,106,118,140,177,104, 45,123,231, 72,196, 23, 79,206, 9,163,108,189, 39,162,228,140,167,234,124, + 72,129,146, 52, 57, 9,128,170, 49,212, 56,232,200,121,172,171, 59, 31,197,158,168,107,191, 93, 11, 58, 99,228, 63,202, 24, 17, + 88,171,250, 51,107,161,103,140,198,168,166, 82,211, 22,255,188,144, 21, 75, 41,216, 90,124,121, 47, 4, 53,189,230,196, 75,103, +157, 82, 18,180,183, 18,219, 87,231, 26,201, 79, 48, 70, 58,223,156,177,186,173, 63, 92,206,162,107,145, 99, 73,153, 18, 68,116, +109,156,140,180, 99,140,194,217,176,246,130,171, 89, 39, 78,139,255, 93,215, 4,198, 11, 73,113,177, 53,166,148, 68, 88,184, 76, +156,170,194,114, 26,103, 78,207,103,186,182,165,177, 77, 21,213, 89, 20,134,217, 75,222,134, 41, 26, 99,155, 11, 89,174,176,114, + 20,116, 81,171,117, 81, 85,175,126,142,177,126, 6,133, 79,137, 41, 6,236,226,187,148,139,211, 98, 27, 43, 85, 80,134,113, 56, +209,116, 61, 77, 43,222,186, 57,200, 62, 91, 23, 45,116, 27, 99, 8,222, 67,181, 4,204,167, 40,149, 75,229, 79,235,144, 48,169, + 86,144, 86,192, 14, 93,215, 98, 52,156,142, 3, 33, 95,168, 86,211, 60,113,187,121,129,237, 91,186, 77,143,210,154,167,243,137, + 24, 50,219, 27, 33, 4,165,146,177,206, 98, 74,198, 3,197, 26,148,177, 12,231, 19,167,131, 4,200, 88, 37, 85, 99,160,144,141, + 17,150,125,129, 70, 45,177,124, 73, 70, 84, 70,145,140,193,133,200,214,194,203, 23,123, 74,137,196,156, 25,166, 72, 72,139,202, + 93,145,230, 9,159,197,171,105, 82,225,229, 55,223,240,205,239,126,203,143, 63,252, 64,152,133,158,119, 56, 62,179,223,245,236, + 94,222,146,173,230,241,221, 3,205,109,199,205,247,111, 57, 28,142,148,198,146,172,193,143, 19, 56, 81,198,250,152,200,169,250, +140,181, 68,146,246,219, 94,208,157,218, 48,204, 51,159, 30, 7,122, 11,196, 32, 17,129, 81, 17, 2,244,198, 50,248,153, 49, 71, +230, 2, 41, 43,180,129,198, 25,114,168, 4, 34,163,216,183,154, 78,107,202, 28,121,255,116,226,199,243, 40,227, 91,171, 25, 13, +204,245,133,175,169, 86, 18, 96,219, 58,238,183, 45, 91, 43, 96,161,227, 48,243,243,105,102,179,105,121,117,179, 99, 83,149,245, +115,138,132, 40, 5,136, 51,154,206, 85, 63,124, 46,132,146, 46,214,159,218, 83, 14, 83,160, 47,213, 98, 87, 96,158, 38, 98,244, +232,152,233,140, 67, 55, 64, 3,253,205,134,206, 90,114, 72,152,170, 45,214,186,102,117,171,140, 42,102, 77, 33,171,138, 42,217, +243, 21, 81,240,198, 40,135, 67,219, 53,180,125,179,190,217, 99, 12, 28, 31,158,209,185,112,247,203,215,104, 50,239,254,240, 87, +142, 31, 70,124, 18,187,149, 63, 79,220,190,126, 67,211, 22, 26,147,153, 14, 71,238,110,110,248,229,127,255, 29,155,187, 87, 60, +127,250,137,231,199, 79, 34,198,153, 18, 63,127, 56,241,135, 63,255,141, 23,251, 29,255,237,155, 95, 48,159,143, 28, 79, 79,248, + 97,228,124,156, 57, 99,153, 73,236,157, 35,206, 19,201,123,180,213, 12,193,139, 0,180,111,233, 55,142, 91,103,185,219,108,104, +123,113, 83,108, 94,221, 82, 42,222,183, 92,217,171, 74,206, 21, 3,121, 5,153,190, 94, 73,231, 85,204,190,114,213, 87,173, 23, +234, 51, 49,154,160, 92,203,218, 41, 93,186,207,171, 52,171,149,130,190, 52,251, 85,193,125,125,186, 85,209, 90,169,147,129,203, + 33,156,214,207, 40, 49,180, 97,157, 36,104,189, 86, 32,235, 56,126,165,173,173, 74,122, 25, 53,171, 47, 68,117, 80, 9,146,138, +213,174,166, 20, 87,227,208, 47,233,115,101,237,184,117,245,208,231,171, 16, 22,165, 46,191,127,169,157,227,245,207, 90, 71,253, +229,178,202, 40,149,127, 46,224,171, 44,194,166, 98,200, 69,225,167,145, 28,206, 52,237,158,232, 19, 33,206,196, 36,207,187, 15, +158,232, 53,174,105,153,138,226,121, 30,200, 40, 26,165, 56,156, 7,185,231,147, 66, 71, 57, 32, 83,141, 56,157,124, 96, 78,176, +215,138, 82,102, 66, 22,212,117,170,182,222,121,156, 25, 66, 38,199,137,187,187, 45,174,107, 57,248,137, 86, 27, 90,107,209, 70, +138,146, 20,165,184, 47, 58,202,122,180,138,175,208,114,144,198,180,240,204,203,234,127,142, 89,166, 25, 83,201,196, 40,172,122, +107,193, 68, 17,221,165,146,137, 73, 17,147, 96,251,157, 18, 75,199,197,146, 47, 5, 85,227, 28, 41, 9,172,117,181, 21, 34, 22, +198, 56, 37,177,180, 85, 82,175, 54,178,179,215, 73,116, 8, 49, 85, 18,155, 54,245,254,147, 21,109,140, 81,116, 76,182, 33,198, +132,107,219,234,195, 95, 98, 99, 5,241,119, 17,103,170, 75, 96,209, 66, 28, 91, 64, 67,186, 65,169, 80,109,105,224,156,173, 89, + 4,203, 65,170, 68, 51,186,218, 58,101,186,205,146, 43, 97,244,197,137, 96, 21, 43,177,167, 86,226, 74,107, 78,211,153,215,230, + 94,246,236, 37,161,170,174, 55, 76,190, 22,187,137,198, 58, 17, 61,198, 10, 22, 90,169,144,122, 93,105,176,222,167, 21,164,166, + 4,173, 91,124,196,154,182, 93, 71,106,206, 58,140,115, 24,107, 9,126, 98, 28, 39,110, 94,221,201, 8, 52, 4, 82,240,107,144, +139, 68, 8, 58,226, 52,215,221,131, 37,197, 34,200,224, 12, 58,102, 74, 8,152, 84,106, 8,130,116, 4,206, 73, 5, 56, 76,115, +221,133,105,124,242, 68,160,239, 26,186,190, 99,183,219, 50, 30,158,120,126, 30,176,173,195, 89, 71, 8, 81, 58,101, 93,189,146, +104,108,211,128,206, 28, 15, 71,185,249, 74,102,103, 27,210, 4, 25, 35,135,186, 2, 87, 41, 76, 74,107,188,159,136, 5,138,117, +168, 12,206, 39, 54,175,239,104, 55, 59,202, 92, 8,163, 39,120, 57,168,230,156,120,209,183, 28, 62, 29, 37, 37,171, 20,246,175, +223,240,205,175,127, 69, 24,103, 30,223,189,231,230,171,151,124,250,248, 9,171, 52, 47,222,190,193,117, 91,222,191,251,153,225, +116,228,238,219,123, 90,215,240,240,116, 96,187,221, 50, 14,103,176,134,160,101, 71,159, 39, 95,181, 6,242, 32,221,222,108,112, +104, 74, 12,168, 70,243,243,195,137, 66,148,148, 92,173,136, 74, 49,134, 8, 24,124, 44, 76, 57, 49, 18,136, 69,190,244,198, 25, +121,113,105,249, 14,182,202,178, 55,134,224,103,126,122, 60,240,143,199,145, 98,165,104,243, 26,166,170,122, 94, 69, 63, 90, 4, +107,183,187,142,155,206, 18, 83,230,228, 19,135, 73,198,254,111,238,246,220,118, 22,171, 52,195, 60,227,131, 28, 10, 86,105,122, + 39, 97, 21, 33, 70,177,171,212,236, 95,171, 21,173, 53,148,162,152,166, 73,160, 22,214,210, 25,195, 28, 60,113,148,196,190,228, + 50, 91,219,177,239,118, 96, 29, 67,204,168, 44, 66, 61,157, 36,103,219, 58, 71, 49, 26,107,171,136,164, 24,140,174, 52,166, 2, +161, 82,255, 74, 22,161, 88,219,183,178,167, 1, 76,204, 60, 62, 29,152, 83,224,205,155, 55,180,173,227,231, 63,254,200,225,227, + 3, 99, 8,132,148, 8,243,196,230,229, 45,109,215,176, 49,138, 56,142, 52,174,229,187,223,255,142,155, 95,255,134,233,233,137, +199,247, 63,226,180, 66,199,194,167,199,145,255,249,167,191,208, 53, 13,255,237,251,111,200,233,204,211,233,137, 52, 78, 28, 14, + 3,207,190,144, 45,108,187,150, 20, 60,254, 60, 98,180,194,167,204, 97, 28, 41,141,161,221,117,180,206,114,223,181, 18, 95,123, +127,199,237, 87, 95,161,140, 91,119,131,107, 26,153, 82,164, 74,141,186, 78, 92, 91, 56,219, 57, 93,198,138,234, 51, 37,120,213, +120,105,181,162, 80,175,193, 51,165,138,126,214, 23,222, 34, 36, 83,117,239,152, 46, 81,153, 84,168,199,197, 23,190, 8,232, 46, + 48, 24,245, 37,121,189, 44,160, 14,181,118, 47,139, 53,140,107, 75, 92,206, 43, 71,251, 51,127,112, 41,159,103,167,151,139,144, +109, 45, 66,106,232,201,194, 93, 95,198,244,170, 10,242,202, 23, 44,120, 93, 19,251,174,237,120, 75, 34,214,133,243, 93, 62, 27, +199,151, 43,104,138,174,162,193, 92,150,124,241, 58, 5, 77,145,249, 60, 67,110, 73,169,174,158,130, 8,117,133,182,218,160,140, + 98, 82,137,167,195,192,228, 19, 14,197,227,116, 34,135, 72,103, 90,116, 66,222, 81, 41,147, 85,170, 99,213,178,190, 7, 82, 20, +157,208, 92, 50, 42, 55, 96, 13, 57, 5,250, 70, 99,247,251,138, 22,245,108, 91,105,188,114,201, 76, 49,144, 66,194,199, 10,195, + 81, 50, 18,214, 43,195, 0,108,129, 57, 69,154,182, 66,101,150,131, 80, 75, 97, 49,175, 93,161, 92,148,174,107,185, 37, 50,206, +158, 24,197, 86,107, 53,100, 91, 49,191,213, 98, 85,148,116,210,141, 82,204, 85,171,179, 16,251,172, 86,146, 20,121,165,153,200, + 57,211, 58, 39,118,187,166, 42,189, 99, 93,227,174, 60, 96, 17,188,165, 34,194,215, 82,153,242,146, 42, 42,197,136,169,121,235, +102, 89, 51, 85, 13, 86, 73, 98, 9, 46, 69,161,114, 70,229, 68,113, 5,109, 45,196, 74, 43,205, 18, 18,179,236,209, 75, 53,211, + 43,117,113, 59,196,188,120,237, 75, 5, 45,233, 10, 77,202,216, 98, 42,164, 76,173, 36, 64,163, 36,181, 45,230, 34,194,115,159, +235,104,222,224,195,188, 90, 50,173, 49, 56,109,136, 74,238, 95,123,165, 65,144, 2, 85, 95,176,203,229,130, 40, 46, 10, 98,142, + 88,235, 28,201, 75, 37,105, 27, 9,179,112,109,203,241,225, 1, 63, 12,108,183,223,224,154,134,225, 60, 86,186,143, 66, 57, 69, +191,223,146,195, 76,158, 37,156, 62, 86,202,212,242, 96, 40, 81, 78, 85, 43,130, 94, 71,135,214, 26,230,243,200, 84, 71,224, 74, +107,102, 47,126,210,126,211,177,223,239,104,187,150,159,222, 13, 60,156, 14,108,250, 30,171, 21,227, 28,217,110, 90,148,146,145, +111,169,193, 3,243, 48, 49,140, 3, 33, 39,130,130,219,219,158,247,199, 35,217,136, 47, 17, 36, 27,221, 25, 39,163,217, 20, 37, +167, 93,131,245, 9,151, 51,155,253,158, 84, 1, 37,126, 20, 46,124, 46,153,182,149,138,201,207, 51, 49,122, 58, 99,248,246,247, +255,196,246,254,142,191,255,245,175, 98,213,112,142,167,195,145,251, 23, 47,184,127,241,130,135,135, 71,206,135,103,116,103,185, +185,191, 37,142, 19, 62, 4,110,250,150,195,207, 7,140, 49, 28,207, 18,247,153, 23, 66,146, 82,220,244, 13,251,205,134, 18, 3, +198, 24, 14,231,153,135,231, 51,187,166,129, 28, 65, 27,230,152, 8, 89, 4, 40,158,194,152,146,132, 66, 64,181, 34, 58, 26,109, + 48, 21, 50,179, 49,138, 56, 5,126,126, 62,241,227,211,137,100,172,132,177, 24,133, 71,118,232,153,130, 45,178, 67,223, 52,150, +219,109,203,190,115,228,162, 24,252, 44,163,126, 99,120,211,181,220,110, 26,122,103, 25,230,128, 15, 97,101,133, 55,206,210, 52, + 78, 14,114, 47, 10, 6,163,107,144, 2,138,190,211, 40, 43, 35,202, 97,242, 56, 99, 48,125,131,174,113,162,177,226, 81,199, 16, +176,227, 68,177,150,216,181,130,173,172,227, 59, 84,161, 73, 65, 30,180, 82, 42,136, 94, 65,142, 34, 82,140, 81,184,252, 69,132, +152,109,223, 95, 68,116, 89, 14,244,225, 60,241,234,245, 43,246, 55, 55,124,248,241, 71, 62,254,227, 35,211, 40, 34, 28,239, 61, + 56,195,246,166,167, 55, 26,124, 68,249,196,175,254,159,127,225,171,127,249, 45,100,197,195,195, 15,152,226,113,186,231, 60,102, +254,207,159,255,193,121,158,249,143,127,250, 21,157,211,188,255,249,192,236, 61,231,227,200,211, 97, 98,180,142,155,182,197, 32, +152, 99, 74,198, 23,120, 30,207, 12, 37,115,179,223,211, 53,142,155,190,163,235, 59,186,155, 45,183, 95,189, 69, 57,139,174, 36, +188, 85, 76,182,176,190,235,119,102,174, 4,102,215,202,240, 53,191,124,237,150,115,237,104,229, 69,154,175,109, 99, 85,217,189, + 20, 13,170,228,149, 62,150,139,236,216,117,221,231,138,239,188, 92, 41,234,243,106,241, 50,168,139,207, 91,113,101,175, 91,199, + 5,117, 37,103, 46,197,194,213,232,221, 44, 99,205, 90,180,112,117,208,234,171, 81,188,254,226,192,231,154, 30,151, 43,174,243, +179, 80,151,229,255, 35,123,217, 5, 18,179, 22, 32, 21, 86,130,174, 62,243, 58, 9, 89,127,135,101,138,176, 92,235, 10,232,145, +221,186,252,115, 74,153,152, 36, 46,151,162,153, 78, 19,211,232,229,154, 70,152, 83, 38, 6,133,209, 86,196,196,177, 48,197,137, +227,243,153, 97, 22, 4,118, 72,226,114,113, 90, 64, 79,165, 84, 49, 90, 10,180, 86,175, 73,113,166, 42,183,135, 92,240, 33,163, + 92, 97,187,235,104,155, 13,190,117, 98,115,243, 51,155,126,195,126,215, 18,162, 28,196,126, 10, 12, 99,160,228,184,118,166, 11, + 17, 84,236, 80,145, 92, 22,230,135, 56, 69,180, 81,171,102, 80,107, 77, 81,145,148, 99, 13,223,146,162, 58,229,136,115, 26,231, + 58,206, 67, 96, 10,153,152, 75,221,133,215,235,167, 76, 37, 59, 10, 93,206,104, 8, 73,118,197, 40,133, 85, 6, 82, 77,179, 91, +100,156,229,106,114, 84, 15,241,188,116,192,106,217, 41,139,118, 70,146,211,140,184,132,170, 91,198,123, 89,113, 25,101, 46, 19, +167,165,179, 54,124,230,102,200,213, 34, 92,116,221,211,107,161, 28,150, 34, 49,185,101, 65, 0,107,181,118,199,139, 46,163,148, +194,114,186,169,154,214, 22, 43,204, 71,160, 54,130,245,174, 87, 4,148, 98,152, 38,252,228,113,206,162,244,188,238,223,231,217, + 95, 10, 23,181, 80, 60, 77, 13,166, 41, 92, 30,131, 34,162, 89, 29,170,198,198, 92,198,255,149,173, 96,141, 49,248, 20,133, 68, +211, 56,140, 53, 88,109,152,206,103,124,140,180,109, 75,211,182, 60,249,153,152, 34,218, 58,148,134,190,237, 68, 66, 31,103, 92, +183,147,208,249,148,215,139,152,151, 67, 94, 38, 59,210,189, 87, 1,214, 60,143,140, 65,168, 68, 74,107,230, 42,152,218,237,182, +220,236, 55,228, 16, 57,158,206,228, 58, 2,153,115,194,199,192,171,246,166, 90,128,192,182,134, 86, 89, 30,198, 19,227, 52, 51, +132,137,219,237, 13, 78,105,162, 82,228, 70,170, 44,179,136,101, 76, 77,215,169, 10,106, 29, 18, 54, 68,218, 78, 70,158, 74,103, +230,113, 38, 76, 1,181,177,164, 57, 99, 90,177,157, 5,239, 73, 41,243,203,223,254,134,151, 95,189,225,225,225, 19,195,233, 76, +187,233, 57, 60, 63,131,209,188,252,234, 45,227,249,204,233,120,148, 93,178, 51,108,182, 59,142, 63,191,199,181, 14,221, 26,230, + 97,196, 53,150,225, 44,121,227,148,140, 50,146, 88,119,179,219, 44, 51, 29,116,227,120,120, 62, 75,133, 91,227,254,124, 74,132, + 34, 15,154, 45, 16, 84,230, 28, 34, 89,203,161,231,140,193, 58, 75,131, 34,121, 79,171, 21, 42,122, 62,156,102, 30, 78, 19,222, + 24, 48, 6,156, 64, 32,226,146, 51,140,136, 46,182,109,195,109,223,112,211, 57, 26, 5,167, 57, 48,121,177, 56,222,110, 55,220, +246, 13, 47,110, 54,140, 83, 96,242,115,189,145,132, 88,215, 53,149, 17,157,146, 20,125,117,204,151,234, 67, 57,199, 72,163, 11, + 59,235, 24, 18, 76,231, 1,130,167,119,150,174,113, 40,107, 68, 24,162, 68, 25, 31,125,164,219,239,105,250,142, 16, 68,215, 96, +140,150,104,212, 50,210,117, 45, 93,223,209,244,160, 85,170, 93,122, 32,167,130,113, 78,244, 30, 70, 58, 92, 91, 52,167,227,129, +243,233,204,221,221, 45, 55,183,183,140,227,145, 79, 63,252,196, 92,163, 87, 99, 12, 76,163,231,197, 47,238,233,157,193, 36,121, + 1,126,243,235,239,248,246, 95,126,131,234, 29, 15,127,255, 27,211,112, 98,171, 27,194,164,248,227, 31,223,241,241,112,224,247, +223,125,199,139,109,195,135, 79, 31,240,179,103, 30, 60, 31, 31,207, 60,231,194,139,237, 70,160, 20,243, 68,142,129, 80, 10,199, +113, 98,206,137,205,182,167,107, 44,183,109,203,190,237,104,247, 27,238,191,126, 75,187,237, 41,198,226,156, 36, 39, 10, 34, 84, +215,148, 16, 93, 97, 51,162,200, 49,230,243,160, 19, 85, 71,125, 57,151, 53, 56,178, 32, 41, 83, 75, 94,247,117,246,184, 86,234, +202,234,163,170,173, 40,215,241,232, 98,245, 42,171,255,182,168,242, 89, 30,251,170,160,175,220,229,114,213, 17,171,171, 28,115, + 73,219, 42,107,145, 33, 7, 69, 89, 59,250,117,191, 89,223, 27,234, 58,172,229,139, 46,253,218, 31, 95, 86, 68,238, 10,165,254, +175,187,249,122,167, 47,197,193,197, 32,183,120,228,213,138, 16,189,230,135, 45,236,245,148,243, 26,165,153,243,197, 18, 23, 66, +224,124,158,106,106,163,208,131,134,115,228, 56, 77,244, 93, 67,138,134, 33, 72, 58,157,213, 14,101,138,208, 6,143, 19,211, 20, +136,232,154,197, 32,244, 64, 87,147,240, 66,242, 76, 33, 97, 74, 38,105, 89, 59, 10,165, 81, 62,199, 24,164, 48,118,155,134, 55, +111,247,148,226,120,126, 40,196, 57,200, 20,172,130,195, 10,137, 68,162,107, 12,109,179, 33,134, 76,137, 81,202, 23,163,234,250, +160, 58, 18,148, 19,175,115, 78,108,155, 77,197, 46, 11,221, 50,101,177,165,181,141,193, 24, 86,245,123,206,114,109,172, 86,236, +122,139, 82,145,121,142,196, 80, 97, 46,139, 26, 60, 37,166,178, 4,250, 20, 12,121, 61, 11, 22, 39,130,143, 82, 60,234, 42,158, +212,255, 85,225, 22, 43, 42,213,152,170, 95,168, 69, 71, 35, 90, 25, 73,104, 52,213,106, 38,135,165,209,245,153, 72,101,157, 42, +173, 58,146, 43,103, 4,250, 66,165,148, 60,247, 72, 99, 36,229,241,178,194, 41, 23,110,124, 45,134, 47, 19,170,178, 18, 45, 37, + 76, 38,201, 36,100, 33, 56,214,201,208, 48, 14,132,224,177,214,213,226, 89,227,140, 35,228, 89,214,177, 37, 87,232,151,128,191, +242, 74,239, 83,117,165, 33,215,200, 26,197, 92,106,138, 96,141, 29, 23, 80, 87,194,106,173, 41, 41,209,239,182,184,166,197, 88, + 71, 46,153,243,243, 19, 93, 99,217,238,246,104, 13,126,242, 43, 4,223,185,134,166,109,241,231, 51, 41, 4, 54,206,145,189,228, +150, 47, 0, 62,129, 98, 20,138,169, 59,219,133, 73,173, 18,211,232, 5, 63,139,169, 8,207, 72,215,119,220,237,111,217,246, 91, +126,126,126,199,199, 15, 15, 88,215, 97,173,229, 52,141, 24,103,171,229, 32,163,234, 52, 33,169,196,225,120,100,244, 51, 57, 21, +110,154, 45,179,247, 50,234, 82, 66, 4,114,213,218, 82,140, 97,158,102, 98,169,177,239, 94, 14,245,205,155, 29,155,205,134, 50, + 39,230, 65, 70, 35, 86,201, 40,223,105, 67, 10,158,225,116,230,118,219,243,251,127,251,119,198,113,226,241,211, 39, 92, 43, 99, + 30,159,103,190,254,197,215,216,198,240,199,255,241, 87,118, 55, 59,162,133,221,237, 14, 85,224,249,249,137, 87,111, 94, 49, 13, + 35, 77, 91, 39, 30,179,176,207, 69, 40,162,232,187,142,205,190,193,251,200,214, 24,158, 14, 3, 31,143,103,246,141, 65,149, 32, +106,215,172, 8, 89, 70,183, 27,215,240, 49, 12,132,130,120, 79,251, 22, 5, 56,173, 40,115,194,212,206,229,233, 60,242, 52, 6, +134, 92,200, 74,240,130, 1,152,150, 24, 39, 68,136,178,237, 29, 55,125,203, 77,231,232, 21,146, 1, 30, 18,202, 88, 54, 78,179, +233, 44, 55,251, 13, 73,139,216, 67, 56, 31,242, 64,110,187,134,206, 26, 66, 85,193, 75, 46,178, 8,224, 74, 78,204,100,178,178, +132, 92, 80, 77,102,219, 52,132, 32, 20,183, 18,165,250, 54,206,225,115,160,168, 66,215,117,204, 62, 80, 30,159, 69, 24,185,109, +241, 99, 22,224,132,177,100, 2,126,152,136, 49,209,134, 88,211,145, 36,167,187,115, 45,109,219, 92,220, 28,192,233,240,192,227, +227, 51,247, 47, 94,176,187,217,145,203,204,143,127,255,129,211,243, 72,240,129, 16, 61,167,243,137,205,126, 71,191,223,225, 74, + 68,249,153,215,223,252,130,111,126,255,207, 52, 47,111,120,124,255, 35,199,159,255, 78,223,221, 64,182,252,229,207, 63,243,151, +127,124,228, 55,223,127,203,119,111, 94,243,241,195, 63, 24,199, 51,209, 39, 62,124, 60,242,241, 60,176,125,243,154,166,239,201, +195, 64,154,103, 98,144,151,253, 41,120,186,109,199,118,179,225,166,113,220,117, 61,125,219,115,247,246, 53,253,171, 91,148,178, + 88,103,185, 62,103, 74,197, 97,195,235,232, 0, 0, 32, 0, 73, 68, 65, 84,174,170,122, 0, 21, 36,201, 76,192,127, 53, 3,125, + 1,195, 22,214,170,126, 25, 67, 94, 40,107,159,239,156, 21,185,230,139, 95,186,253,154,117, 71, 41,177,198,175,150,171,206, 62, + 85, 64,124, 29,123, 87,207,123,169,158,166,178,144,220, 86,156,235, 66,124,215,178, 54,208, 50,134, 92,186,232,203,207,205,151, +128,165,181,203, 95,226, 68,213,103, 80,143,197, 46,180, 22, 39, 75,210, 92, 41,168,156,191,208, 26,212, 86,179,200,125,169,149, + 94,255,167,235, 2, 32,199, 92, 15, 19, 46,222,227, 42,112,202,215, 74,247,148, 43, 40, 43, 49,142, 51,143,199, 3,113,154,113, +165,131, 40, 48,152,193, 11, 81,108, 78, 6, 63,201,231,105, 90,136, 54, 51, 28,207, 60, 61,141, 76,115, 33, 42, 17,141,181, 54, +211,219, 14,149, 4,107,154,149,102,170,174, 2,170,247,221, 44, 89,221, 90,198,200, 78,103,154, 94,225,122, 67,215,111, 56, 30, + 38,114, 42, 56,173,192, 90,180, 83, 20, 18, 77,239,216,219, 14,157,162,232, 95,146,162, 4,153,142,105,171,209, 86, 99, 0,149, +196, 54, 59,141, 65,120, 32,149, 21,162,180,198,234,194, 48,123,124, 12,116, 78,227,118,134,211,144,136,161, 50, 54,178, 34,230, +130, 81,153,174,209, 24, 44, 67,213, 45, 21, 45,148,185, 92, 20, 37,235,122, 53, 23, 33, 93,169, 97, 79,134, 82,237,176,242, 29, +101, 82, 73, 4, 42,205,114,225,247,167,116, 57,184,202,149, 83, 2, 9, 57, 9,117,181, 71, 91, 5,102,169,198,218, 86,132,194, +114,160,155,170,177,162,210,238, 84,174,252, 2, 93,160,142,203,151, 48, 25,204,213,228,233, 11, 76,241,106,237,172,227,253, 21, + 91,189,214, 9,178, 74,146, 4,181, 84,157, 17,153,146, 12,227,121,230,254,190,114, 39, 50,107,116,116,136, 81, 82, 25,175, 50, + 43,150,160,159, 11,200,102,161, 9,203,223,149,150,176,151,133,194, 39,118,238, 74,213,177, 22,107, 44, 78, 91, 66,140, 28,159, + 78,180,219, 61,221,174,199, 36, 37, 25,233, 40,108,105,217,238,118, 56, 11, 67,244, 53, 39,184, 37, 12, 99,213,238,203,195,160, + 82, 18, 59, 3,181,211,168,244,175, 66, 38,204, 34, 70,192, 20,156,178,248, 18,216,246, 13, 47,110,247,180,214,242,233,211, 51, +227,232,217,238,111,160, 88, 82, 76,244,157, 3, 10,222,103,116,107,209, 93,195,248,240,204,211,243,153,152, 10,173,115,184, 78, +243,241,228, 9, 21,138, 80,249, 69,104, 35,127, 54, 68, 47,213, 86, 72,152, 84,176,253,134,126,191, 1, 35,208,129, 97, 26,112, +110, 87,211,164,100,132,236,135, 51, 83,240,252,247,255,248, 15,186,219,150,247,255,235,175, 56, 35, 29,188, 15,129,205,203, 91, + 54,247,183,252,240,255,254,129,167,159, 31,184,185,191, 37,148,196,253,221, 45,211,249, 8, 5,182,187, 61,239,126,122,135,113, +154,243,233, 44,170, 98, 50,198, 90, 26,109,120,177,237, 9, 81,170,102,111, 28,239,159, 14,180, 70, 66, 73, 82,242,132,172,200, +218,225,125, 68, 27,203, 92, 34,199,144,177,214,177,217,238,106, 32, 68,161, 9,137,152, 50, 46, 71, 82, 12,156,198,153, 83,128, +164, 46, 99,247, 80, 33, 18, 66, 12, 51, 52, 78,104,113,251,206,208, 59, 81,214,207, 49,161,173,193, 89, 25,171,223,110,123,246, +109,195,207, 79,207, 43,113, 76,107,197,118,211,178,219, 84,103,132,247, 24, 91, 32,101, 98,181,253,104,163,100,165, 49, 7,156, +177,140, 49, 98, 20,236,108,207, 20,138,196,233,150,140,201,133, 70,195,243,225,128,159, 54,108, 55, 91,162, 77,184, 67, 32,148, + 13, 93,219,225, 82,166,215, 13,222, 57,166, 16, 24,102, 81,233, 6, 63, 49,140,103, 92,219,242,242,229, 75,118, 86,145, 82, 64, + 41,205, 56,142, 28, 30, 31,217,108,183,108,239,246,224, 12,159,126,120,199,233,221,179, 32, 51, 99,224, 60, 14,100,165,216,220, +108,105, 82, 68,197,153,155,251, 59,190,251,237,239,216,191,125,195,249,124,226,240,227,123, 54,205,142, 70, 59,254,252,215, 71, +254,247, 95,126,224,171,111, 94,243,155,111,190,225,240,248, 19,199,113,160,132,204,207, 31,158,248,243,199,103, 94,190,124,201, +205,118, 39, 52,192,148,152,194,204, 56,141,204,179,199,117, 29,221,110, 67,223, 53,220,111, 58,186, 78,115,243,213, 61,251,175, + 95,161,138,193, 52, 6,101,234, 75,161, 84,122,156,170,228,185, 82, 36, 58, 83, 93, 29,172, 44,233,108,249, 51, 75, 88,206,161, +130, 41,212,170,120,191,238,120,129,213, 46,181, 76,214, 86,203, 91,201, 43, 91, 66,246,244,245, 80,205, 43, 75,109,197,173,126, + 54, 10, 95,237, 61,250, 42,225, 77,132, 81,230,202, 59,191,252,251,235,207, 84,234,219,234,203,207,184,160, 62,175, 61,234, 75, + 55, 95,114, 89, 85,199,169, 58, 70,168, 22, 40, 83, 87, 13, 42, 47, 65,229,212,107,180, 56, 5,170, 24,112, 41, 10,116,181,182, +229,140, 41,170,134,204,200,138, 80,254,172, 34, 5, 79,142,129, 97, 28,249,244, 60, 48,120,143,203, 22,173, 69, 68, 60,165,132, +193,144,189, 97,244, 19, 69, 65,219, 26,114, 9, 76,135,196,115,237,208,151,220,140,214, 90, 58, 43,156,239, 18,234, 90, 44,165, + 74,150, 44,168,162,105,157,163, 49, 48,123, 89, 47, 24,171,232,173,133,141,194,110, 90,166, 41, 49,123,143,115,160,235,115,219, +119,150,182,179,116,198, 49,250,192,243,156, 80, 69, 52, 75,110, 39,221,232,138, 65, 45,224, 71,143,174,245, 80,107,165, 27, 23, +126,137,162,168, 74, 9,180, 50, 29,138, 17, 58, 43,233,108, 7, 34,177, 10,233, 98,150, 34, 78, 91,203,198, 88,188,175,160, 50, +196, 45,164,146, 76,132,138,210,194,195,168,241,181, 74, 41,178,161, 66,182,164, 11,182, 85,245, 96,209, 43,202, 57,231,130, 53, +142, 82,253,233,130,202, 13, 40, 29,209,122, 67,244,161, 54, 27, 11,215, 72, 87, 81,109, 13, 57, 82,151, 80, 27,148,144, 50,173, +173,110,137, 2, 77,114, 53, 36,166,173, 63, 91,124,241,202, 40,168, 43, 79,205, 18, 81,171,214, 17,188,224,141,101,210,100,140, + 20,161, 49,139, 5,207, 45, 49,170, 81,175,144, 33,171, 45,227, 56,241,226,245, 93,197, 56, 71,168,171,211, 24, 2,169, 68,172, +234, 42,138, 93, 24, 20, 90, 11,185,243, 18, 40, 36,172,150,178,164, 48,166,130,210,117,202,150,192,230, 4, 69,107,154, 74,172, + 82,214, 18,207, 3,227,233,196,237,171, 87,116,109, 39,226,140, 26,142, 18,139,116,213, 18, 53, 23, 43, 1, 78, 58,115,117,245, + 16,134, 5, 23,155, 5, 32,144,115,161,169, 21,208, 60,207,148,172, 80, 74,224, 0, 57, 38,238, 94,190,224,246,126,207, 60,143, + 60, 62,200, 72,187,105, 44, 99, 24,137,177,208, 59, 71,136,129, 57,102, 54, 93,131, 10,137,199,227,145,144, 4,220,226, 76, 67, + 8,129,113, 26,235,107, 78, 4, 6,165, 20,180,211,248, 36,106,209, 82,164,224,208, 10,186,190,163,117, 13,164,194, 60, 77, 16, + 21,110,107, 9,200, 11, 76, 27,205, 56, 79,188,126,253,150,127,254,215,223,243,211, 95,126,224, 56, 13,188,126,243,150,135,247, +159, 48,219,142, 23, 95,189,229,227,167, 79,124,252,219,143,149,210,165,192, 42,118, 55, 59,198,231, 39,186,253, 6,159, 3, 57, + 68,252, 60,115, 30,230,202,144,150,100,164,190,181,244,155,158, 33, 6,246, 70,196,113, 79,167,145, 23,219, 14, 75,198, 71, 72, +218, 16,146,248, 65, 59,167,121,246, 1, 99, 20,237,166, 5,163, 40, 33,210,166, 68, 72, 9,147, 51, 42,195, 48,100,142, 51, 36, + 91, 83,224,172,150,145,123, 89,110, 0, 67,231, 44,183,155, 13,251,198,208, 89,199, 24, 10, 99,140, 82, 80, 56,139, 51,134,182, +177,108,186,142,231,211,153, 16, 18, 89, 9, 34,183,107, 27,110,119,123,137, 19, 13, 9,107,245,186, 63, 43, 89, 16,156, 56,133, + 51, 98,221, 72, 68, 20,142,105, 72,168, 94, 0, 17, 22,137,109, 77, 9, 92,223,224,148,101, 26, 71,230, 16,176, 93,195, 93,219, + 17,203,192,172, 3,126,179, 37,234,204, 94, 53, 40,163, 25,231,204, 49,121, 26,219,176,233, 27,162, 74, 60, 63, 30,201, 58,242, +242,238,158, 48, 6,158, 30, 78,184,182,229,230,118,143,177,138,211,211, 3, 31,126,248,153, 24, 18, 37, 68,230, 97,102,156, 2, +119, 47,110,233,108, 65,249,137,253,205,150,175,126,251,107,182,223,190, 36,251,137,135,191,252, 13, 99, 21, 54, 21,254,254,241, +129,255,252,235,123,110,111,182,252,203, 47,223,114, 58,126,228,249,249, 9, 19, 34,239,159,207,252,233,253, 39,218,221, 13,175, + 94,222, 19,226, 36, 69,232, 60, 49, 79,158,147, 15,148,198,176,219,245,244,206,113,219,117,116,155,158,253,235, 59,238,126,249, + 21,166, 40, 76,107,192, 44, 99,103,189,122,188, 65,232,112, 75, 14,117,201,106,213,163,203, 24, 93,198,124, 50, 78,189, 40,122, +151,238,242, 90, 56,183, 88,217,114,142,245, 80, 83, 87,182,182, 10,156,201,151, 0,140,101,160,190,122,194, 21,159, 41,192,175, +199,225, 95,114,219,115, 73, 43, 78,228,203,255,255,117, 68,229,245, 33,190, 28,248, 11,240,101,241,164, 47,118,180,146,178,136, +162,106,192,197, 26,216,147,101,220, 76, 29,203, 94,147,229,150,117,194,186,221, 44,153,172,193,164,234,227, 55, 18,154,162,114, + 65,101,177, 66,230, 34, 93,115,201,137, 28, 43,120,101,158, 57,156, 70, 62, 62, 14, 36, 10, 91,235, 48,198, 49,101,152, 19,164, + 40, 20,185,162,103, 26,167,105, 90,225, 11,248, 33,114, 28, 6,252, 24, 48, 42, 99,141,195, 57,135,179,138,146, 98,205, 69,207, +235,228,178,113, 14,147, 35,206,213,248,234,117,252, 34,123,219,162, 5,142, 69, 76,232, 48, 11, 18,219, 24,116,105,113,173,102, +211,239, 48, 58, 51,134,200, 48, 7, 54,214,209,244, 13,198, 72, 82, 99,206,162,167, 17,102,129,102,152,211, 10, 42,178,110, 41, +172,162,140,162,139,164,119,222, 52,142,251,190,225, 48,141,124, 26, 35, 99,144,107,216, 53,154,201, 7, 66,150,140,115, 82,146, +162,197,153, 10,181, 41, 24,147,208, 90,182,207, 69, 9, 79, 34,198,171,200,239,196,186,167, 95,160, 71, 49, 70,138,190,144,220, + 84,109,185,173, 85,149,209, 80,149,223, 90,184, 42,167, 97,252, 66, 10, 89, 87, 80, 70, 60,225,164, 37, 69, 45, 65, 54,164, 10, +184, 81, 8, 30, 89, 41,133,213, 22,171,228,126,201, 41, 99,108, 35, 81,223,115,141,125, 94,146,230, 22,205,104, 94,248, 43, 53, + 33,174, 78, 41,163, 18,177,156,179, 92,162,116, 43, 34, 29, 5,195,233,180, 82, 31, 5,212,132, 92,147,202, 30,112, 27, 39, 22, +103, 83,115,217,131,208,231,204, 26, 75, 43,150,110,169,204,235, 53, 51,122,101, 77, 89,165, 20,141, 49,180, 93, 43, 66, 57,163, +249,244,124, 98,156,103, 94, 54,142,182, 19,222,246,249,124, 38,214,199,211, 54, 13, 5,136, 62,160, 26,135, 6, 98,244, 43,114, + 49,171, 43,201,237,146,215, 43,240, 92, 84, 44, 12,243, 44,129, 0,232,122,176, 43, 94,220,236,185,185,217,242,240,238, 35,159, + 62, 60,136,151, 79, 43,158, 83,160,111, 45,206, 88,124, 12,160, 53,206, 9, 34,245,116, 58,203, 78,176, 10, 11, 78,167, 51, 62, +214,248,192,172, 4, 70, 34,203, 40,230, 41,172,216, 88,157, 21, 6,104, 55, 45,198,105, 82, 12,156,171,213, 75, 91, 43,144, 29, + 39, 95, 66, 76,133,127,250,215,127, 38,248,153,247,127,249,129,151,223,125, 77,240,145,201, 79,124,245,253, 55, 40,171,249,240, +215,191, 19,206,103,186,237,134,108,161,105,165,186, 30, 78, 39,250,215, 47, 24,207, 3,186,192,227,195,137, 57,200,196,195, 24, + 75,163, 69, 71, 16, 74, 70,151,204, 84,224,253,195, 51,206, 53, 24, 32,134,128,207,138, 98,140, 8, 99,140,101,200,145,168,197, + 62,166,141,102,154, 71, 92,184, 68, 8, 10, 36,164,112, 24, 61,147,220, 57, 18, 79,168, 36,229,169, 40, 69, 65,211, 91,195,205, +182,227,182,179,180,206,212,168,218, 76,111, 45,214,181,104,163,232, 26,203,221,126,199,113, 56, 75,138,153, 18, 34, 96,219, 54, +236,182, 27, 17,108,216,130,211, 70,190,243, 5, 40,163, 53,217, 25, 70,239, 41, 37,179,233, 90,169,212,115, 17,252,238, 52,163, +141,199, 26,197,206, 25,134,232, 57,143, 69,190,103, 20, 37,102,230,195,192,167,198,115,179,217,160, 76, 96,154, 38,230,121, 67, +222,111,177, 78,163, 98, 97,156, 61, 7,165,185,189,217,179,237, 55,140,243,192,227,211,137,121,136,232, 10, 24, 82, 27,199,241, +124, 36,122,207,207,127,255,137, 48,120, 98, 40, 76,179,231,233,112,100,179,235,233,123,135, 33,177,239, 91,190,250,245, 47,185, +251,238, 23, 52,214,240,225,135,191,131, 31,216,180,123, 62, 62, 30,249,223,127,124,135,235, 12,255,254,171, 95, 97, 98,226,227, +227, 71, 84,142, 28, 15, 35,127,248,251, 7,138,182,188,125,125, 47,194, 41,165,137,227,200,241,120,100,152,103,138,133,254,102, +203,166,107,184,239, 58,246, 93,195,238,118,207,139, 95,127,143,117,173, 56, 68,244,130,165, 52, 85,212,150, 46, 99,194, 74,132, + 19,209,210,101,159,157, 75, 94, 73,109,186,142,105,203, 21,231,125,185, 47, 46, 7,122, 90, 69, 71,168, 58, 10,173,182,152,149, +224,182,100,150, 43,209,186, 92,236, 64,229, 50,166, 87, 95,218,204,248,172,235, 47, 69,246,232,215, 7,247,114, 8,127, 38,118, +227,243, 61,191, 76, 16,210,103, 69,194, 37, 95,188,142,223,209, 87, 17,177,245, 64,202,233, 18, 90,179, 20, 10, 90, 14, 11, 85, +150, 21, 77, 21, 71,229,203,212, 80,166, 21,117, 50, 66, 70, 23, 72, 37, 17,163,176, 22,102,239,193, 39,166,105,226,105,152,248, +244, 52,161,140,102,223,117, 96, 28, 9,240,163,172, 26, 99,140,132,156,104,218, 22,215, 88,148, 42, 2, 95, 58,205,204, 62,208, + 88, 48,166,193, 53,182, 82, 41, 35,202, 74,136, 86,200,194,210,112,117, 29,106,179,166,132,132, 82,137,148, 53,169, 68, 40, 70, + 24,247, 69, 24,233,157,177,116,206,161, 82,213, 11,145, 48, 78, 65,137, 76,115, 34,149,196,102,211,209, 55,173,128, 90, 82, 21, +183,214, 9, 75, 44, 50,205,136,126,233,104, 51,202, 84, 11, 40, 17,165, 44, 57, 73, 81,161, 44,152, 77,195,222,101,148,110, 56, +142,158,199,243,140,247,129,146, 5,154,147, 64, 26,167, 44, 64,168,198,170, 26,103,123,161,205, 81,144,102, 75, 21,138,214, 56, + 93, 69,114, 57,175,187,233, 82,105,122,170, 90,225, 74, 22,123,172, 64,167, 76, 29, 10, 21,193,240,106,141,181, 2, 38,203, 69, + 34,118,149, 54,178,234,201,162,131, 48, 90,163, 84,148,245, 81,182,235, 94, 61, 23, 73,121,203, 85,160,166,149,184,144, 40, 50, + 49,201, 37,136,109,206,167,122,134, 45, 88,220,106,245,252,114, 44,191,116,210, 69,173, 63, 95,105,181, 90, 75,151,168,239, 88, +139,125,107, 52,126, 25,153, 59, 75,136,146,216,182,144,108,180, 17,157, 66, 81, 21, 48, 87,215,108, 5, 69,209, 90, 0,102, 37, + 93,116, 98, 85,195, 96,181, 54,130, 50,108,220, 26,246, 62,143,103,114, 72,236,110,247,184,214, 81,162,188, 84, 23,235,131,235, + 28, 37, 21,166,243, 72,223,119, 43,133,109,177,169,196,156,185,138,175,149,138,105,217,127, 77, 1,159, 51,177,128,171,187, 63, +215, 91, 94,222,223,210,184,142, 15, 31,159,152,231,129,253,221, 29,115,206,210, 41,223,190,192,106,195, 41, 78,180,219, 22, 99, + 20,167, 39, 73,183,201,249,178, 63, 28, 43,122, 83, 21, 41, 24, 4,242, 45, 9, 69, 41, 37,116, 46,232, 36, 15,119,179,105,104, +183, 50,133, 8, 49, 50, 12,158,126,187,161, 44, 83, 9, 37,187,182,215,223,126,205,235, 95,252,130, 31,255,207, 31,200,186,112, +247,250,158,191,252,159, 63,115,115,123,203,221,155, 87,188,123,120,224,253,187, 15,216, 74, 13,202, 70,177,237, 58,134,227,145, +168, 52,251,221,142, 79,159, 62, 17,124,226,124,158,106, 60,158, 40, 43, 55,189, 99,187,113,204, 49,210, 91,197,251,135, 51,126, + 14,236,119, 27, 98,242, 34, 68,180, 13,161,200,168, 84, 59, 67, 36, 98,156, 67,107,141,159, 2, 49, 76, 52, 90,136, 90,130, 94, +202, 28,166,153,195,236,209,155, 78,138, 20,228, 48,205,213, 59,218,106,195,237, 70, 14,150,109,227,240, 49, 16,124,160,113, 45, +109,227, 36,129, 78, 43,110, 54, 61, 62,132,122, 56,151,170,188,212,236, 55, 61,187,190,147,170,115,246,104, 99, 49,117,125, 35, + 73, 79, 34,102,113,147,103, 58, 31,177, 74,225,218,150, 92,121, 4,195, 48,161,157, 32, 98, 91,157,112,206, 18,114,100, 28, 2, +157,117, 40, 20,141,210, 60,159, 7,108,206,244,155,142, 84,224,195, 56,113, 62, 79,220,221,110,105,116,198, 42,131,143,145, 79, +143, 15, 4,191,165,221,108, 8, 99,224,221,135,159,185,187,217,243,242,245, 45,218,128,159, 70, 62,254,249, 61,243,224, 81, 25, +230,121,230,116, 62, 81, 52,244,125,139,203,153,214,105, 94,127,255, 13,111,126,245, 29,183,219,142,199,247,239, 24,158,159,232, +157, 99, 24, 51,255,249,183, 7, 98, 8,252,235,111,190,167,183,134, 31,255,241, 19, 41,100,124, 44,252,231, 63,222, 51,250,204, + 47,190,125,139, 89,196, 59, 89,241,244,248,200, 56,121,130,134,102,211,209,181, 45,155,166, 97,215,181,244, 77,195,139, 95,126, + 69,211,183,148,162, 49, 85,220,116, 57,228,190,204, 6,191,136, 80,175, 92, 69,162, 2,174, 24, 81, 85,243, 16, 36,246,118,113, +165, 95,186,221,203,168,187,102, 99,231, 64,138,185,238,190,175,132,108,229,194, 68,207,165,134,100,214, 72,213,107, 45, 89, 81, +151,159,125,193,103,202,231, 48,122,157,131,126,246,226,251, 18,245,122, 61,134,191,238,224,115,206, 43, 30, 83,125, 17,246, 66, +185, 88,213,114, 13,231,225,138,253, 94,174,146,180,202,154,225,125,201, 15, 79, 84,245,122,145, 2,120,117, 8, 84,150,253, 97, + 26, 25, 78, 51,243,232, 9, 57,161, 18,124, 58,159,121, 58,122,172,214,108, 58,185,151, 79,126,194,150,134, 28, 50, 62, 68,124, + 12,184,206,210, 54, 86,162,148,167,192,105,152,240, 33, 10,178, 86, 43,140, 51, 40,107, 24,253,140, 81,154,166,107, 68,123, 84, +187,207,190,179, 20, 18, 42, 20,114,182, 24,212,154,194, 39, 97, 43, 1,141,194,181, 29,155,219, 45, 22,199, 52,198, 53,248,195, + 24,225, 68,104,173,177,141,197, 26, 67,202,153, 16, 18,147, 23, 97,168, 94,176,179, 69,166, 62, 57,200,110, 86, 87,155, 27, 42, +203,225,165, 33,164,194, 57,204, 52, 57,243,244, 28, 69,159,144, 69,221,190,105, 4, 47,254,240, 52,130, 86,178, 2, 93,108,173, + 89,213,169,131,172, 79, 23,117,118,169, 8,240,152,202,122,159,164,148, 25,198,136,235,204,202,209,207,181, 57, 51, 90, 38, 0, + 37, 83, 15,112, 57,212, 83,229,208, 55,109,131,210,226, 40,160,104, 82,202, 85,180, 43,135,184, 90,119,221,250,162,181, 80,106, +197,195, 46,232,229, 80,237,114,198,168,122, 77,106, 40,152,213, 92,197, 64,174, 72, 92, 85,212,138, 66,254,220,192, 89, 86,241, +232, 34, 70, 93,138,224, 82,157, 1, 83,138, 12,231,137, 93,223,115,174, 22,209,174,109,137,209, 19,227,213,116,171, 92,160, 54, +203, 74,189,212, 3, 79, 91, 39,106,251, 36,212, 65,140,172, 62, 74,142, 88,173, 45,182,105,113, 11, 56, 36,101,252, 52,209, 24, + 77,191,221,210,108,234, 95, 22,164,243,113,219, 13,219,253,158,236, 19,243, 52,177,219,111,101,223, 94, 22,164, 98,134, 44,149, + 99, 89, 73, 82,213, 95,153,243,255,199,214,123, 52, 89,114,165,105,122,207, 81,174,174,136,136,148, 72, 36, 74,117,245,144, 51, + 70,227,112,197, 37,151,252,185, 92,112,197, 29,255, 0,185,160, 53, 73,227, 76,119, 21,128, 66, 66,164, 8,117,165,139,163,184, +248,142,251,189, 89,213,101, 6, 51, 88, 33, 51, 50,242,134,251, 57,159,120,223,231, 37,107,203,228, 3, 49, 39, 26, 99, 80, 41, + 81, 53, 53,175, 95,190, 68, 1, 31,239, 31,201, 74,209, 84,142,253, 48, 98,146,230,102,181,230,216,159,137, 64,237, 28, 41,193, +208, 15,248, 24, 11,118, 48, 19,147, 39,204,187,112,145, 83, 72, 55, 98,192, 39,193,215,170, 66, 21, 66, 41, 86,171,142,170,114, + 24, 3,199,125, 79, 8, 30, 85, 85,101, 87, 34,150,134,238,102,197,187,223,125,199,225,233,153,143, 63,253,194,239,255,248, 7, +166,209,147, 83,100,253,226,142, 41, 78,236,190, 60,138,170,221, 26,180, 19, 88, 72, 85, 55,140, 79,247,116,183,107,233, 78,125, +224,233,120, 98,154,124, 97, 82, 27,172, 85,108, 86,205,114,128,142, 83,226,233,233, 68,219,200, 58,195,135, 68, 86,146,247,236, + 99,177, 20,105,217, 21,233,172, 56,143, 19,126, 24,233,172, 17, 14,126,241, 44,134,201,243,124, 26,136, 86,212,240,179,152, 34, +148, 7,188,178,154,219,174, 97,219,212,116, 78, 51,250,200, 52,121,234,186,162,170,157,216, 64, 20,172,186, 6,227, 28,187,231, +231, 43,129, 85,164,174, 43,154,166,194, 58, 35,120, 72,107,241, 62,200,223, 73,107, 54,221,134,213, 77,199,249,116,198, 57,199, +202, 9,109, 47,165,132,177,134, 42, 59,134,113,226,112,244,108,214,154,172, 34, 58, 37, 26, 39, 25,201, 99, 16,219, 77,101, 44, +173, 54,156,250,129,202, 26,172,213,152,144,120,252, 50,114, 56, 29,184, 91, 55,116,109,199,182,235, 56, 12, 3,187,221,142,110, +204, 76,253,145,221,254, 64,213,173,248,118,189,101,211, 54,124,249,249, 87,206,187, 19, 74, 57, 82,142,156, 79, 7, 78,231, 51, +155,187, 45, 78, 43, 90,157,121,247,254, 29,175,254,244, 29,245,118,205,225,241,145,253,195, 61,181, 49,196, 41,242,215, 31, 62, +242,120,216,243, 31,127,247, 29,175,183, 91, 62,126,248,153,113, 28,200, 89,241,255,125,255, 27, 31,159, 78,188,127,255, 45, 77, +211,146, 73,212,198,242,249,243, 47,156,134, 51, 94, 41,170,182,101,181,106, 88, 59,199, 77,219, 80,215,150,187,223,125, 67,125, +119, 67,138,197, 66,164,175,132, 93,243,190,177,188, 59,169, 88,204,140,113,151,203,145,139,199, 59, 21,136,202,236,153,157,119, +206,203,206,189, 28,166, 95, 7,188,164,101,172,153, 75,183,175, 10,251,122,185,224, 83,153, 2,112,201,166, 6,181,136,201,174, + 59,238,185,216, 80, 75, 82, 92,121, 98,202, 37,125,233,224,191,222,165,207,249,211,249,239, 8,111, 75,108,165,214, 11,157, 50, + 95,165,202,169, 60, 35,115,243,130,236, 92,118,249,179,181, 46,166, 5,171,171, 75,177, 35, 26, 61,249,187,133, 40,233,113, 70, +131,159, 2, 57, 36, 14,167,158,253,241, 76, 24, 36, 1, 49, 42, 24,199,192, 62, 68,172,169, 88, 55, 21,144,232,199,128, 45, 90, +134, 97, 28, 25,199, 17,235, 12,206, 57, 66,136,194,116,159, 38, 6, 31,202,133, 38,190,102,149,197,118,166, 77,201, 88, 79,130, + 45,142, 83,164,233, 42, 42, 7,201,103,136, 26,159, 60,104, 83,114,187, 41,158,110,121, 70, 92, 93, 99,156, 20, 20, 49, 75,214, +185, 42, 93,171,171,237,114,145, 76,147,216, 79,167, 33, 9,115, 50,137,253, 80,207,113,161, 83,102, 44, 23,184,201,174,232,120, + 60,174, 42,148,198,148,112,206,176,110, 43, 76, 78,248, 0,202, 6,108,134, 14, 77, 93,105,180,211, 60, 61,159,217, 29,123,154, +214, 81, 57,161,232,201,207, 75,152, 38, 24, 41,244,117, 9,223,153,188,232, 31,140,150,149,133,159,147,254,148, 94, 50,219,107, + 83, 56, 13, 49,160,180,132,182, 40,165, 36,252, 42, 38,166,113, 98,213,182,139,195,130,168,240, 83, 16,229,189, 45,231, 63,178, +255,151,201,211,140, 88, 70,186,233,101,181, 20, 73,132, 34, 70,211,139,168,116,198, 74,207, 2,208,153, 83, 48,179,255, 47,118, +210,203,234, 72, 27,153, 62,207,147, 41, 83,200,118,105,193,253, 70, 72,138,243,185,231,102,123, 35, 52,215, 50,221, 52,198,202, +218, 33,197, 50, 93,184,132, 87,201, 70,159, 5,208,164,203,218,105, 46,190,243,236, 86,148,103,192, 66,116, 84, 85,181, 28, 40, +253,185,103,204,194,191,173,172, 99,236, 71,137,248,204,153,166,107,168,219,154,225,216, 75,213, 85, 85,244,253,176, 84, 38,233, + 10,229, 56, 99, 30,208,165,155, 8, 1,175,196,187,153,146,236, 31, 80,176,217,108, 88,221,221,208,143, 35,207,207, 7, 92, 85, + 99, 45, 12,211,196,170, 93,163,181, 98, 56,143, 84,141,163,210,154,211,177,231, 56, 14, 37, 89,170,136, 19,114, 34, 41, 25, 95, +173,156, 99, 26,197, 34, 17,202, 15, 71,130, 14,228,165,110, 43,197,170,173,177,214, 50,134,192,241,121, 15,181,195,214,149, 20, + 30, 49, 96,215, 45,111,127,247, 29, 42,103, 30, 63,221, 83, 25,205,139,215,111,120,126,254,194,234,102,131,169, 29,211,121,100, +255,248, 76, 72, 9, 29, 13,174,170,176,181,133, 56,145,124,160, 94, 53,140,125, 79,156, 2,199,195,137,144,226,146,176,211, 85, + 21,235,174,198, 7,121, 65, 62, 61,157, 73,113,164,105,215, 4,239,229, 0,176, 14,147,139, 69,162, 32, 15, 51, 48,141, 3,207, +227,196, 90,107, 26,235,176,243,161,233, 19,207,195,196,190,143,180,219, 21, 74, 91,178, 74, 76,133,176,230,140, 97,211,214,172, + 27,203,182,174,152,162,231, 56, 77,172,171, 74,130,116,180, 33,102, 69,231, 12,155,117,203,195,110,143, 47,212, 44,200, 84, 77, + 85,172, 86, 25, 31, 60, 25, 45, 47,234,204, 76,182, 90,194, 71, 90,199, 42,183, 76, 74, 86, 7,206, 57, 78,195,153,113, 24,104, +186, 90, 84,236,249,128,159,196, 54,232,201,196, 33, 80,107, 45,187, 56, 20, 67, 8,104, 37, 9,123,199,253,200,237,182,161,182, + 9, 85,103,158,119, 39,166,211,196,106, 61,242, 98,237, 89,175, 59, 30,134,145,207,187,143, 52, 78, 83, 85,142,199,253,145, 31, +254,246, 27,175,182, 27,250,135, 35,214, 56, 66,204, 12,253,192,110,183,167,238, 58, 42,107,232,116,230,205,251, 55,188,253,195, +183,172,183,183,248,241,204,195,211, 35, 54,103,180,138,252,244,241,196,143,143,207,252,249,219,111,248,238,219,119, 60,125,252, +141,211, 81, 50, 6,190,255,241,103,126,249,237,145,151,111,111, 89,223,172, 73, 25, 58,219,240,252,248,153,253,243, 51, 30, 5, +181,164,189,173,234,154,187,182,161,107, 27,182,239, 94,177,122,247, 86,144,184, 51,175,126,241,147, 95,117,194, 87,157,185,190, + 18,165, 93,239,193, 23,180,106,137,123,204,197,215,154,230,125,223,223,239,173,243,156, 36,154,151, 28,241,188, 12,215,211,162, + 10, 87, 23,131,132, 92,248,139,226, 56, 45,234,241,107,140,235,117,183, 12,106, 97,207,255,123,251,246,127,176,157, 93,143,231, +249, 26,211, 58, 7, 95,204, 17,165,186,236,186,153,109, 94,179,121, 78,125,237,211,207,170,192, 97,146, 90,210,178, 82,150, 29, +111,136,129,113,232,197, 54,100, 50,211, 24,240, 67,226,220, 15, 28,142, 61,126,140,232, 36, 23,193,144, 18, 81, 41, 92, 46,147, + 37,107, 57,140,189, 36,249,101,197,190,239, 57,143,190,124, 45, 67,152, 60, 33,228,226,230, 16,113, 84, 76, 25,157,228,242,203, +104, 92,101,208, 86,178, 49,252, 48,113, 58,120, 42,163, 89, 53,150,170,214,248, 65, 19,226, 0, 49,200,152, 53, 35, 49,196, 74, +203,106, 69, 11, 51,156, 84, 4,130,115,178, 93,217, 33,171, 50,134, 21,160,159,136,176,236,186,192,207,138,198,201, 88,200, 90, +113,126, 10, 76,202,147,117,198,228, 10,173,101, 61, 99, 77,189, 8, 23, 55, 93,205,221, 86,118,187, 83,128,144, 52, 78, 71,146, +205, 76, 41, 2, 22,189,237, 48,102,100, 55, 76,120, 63, 81,215, 78,240,222,243, 90,168,208, 5,141, 49, 84, 21,140, 99, 44,208, + 50,201, 86,159,145,197, 90, 91, 66,202,248,152,168,139, 64,108, 10,194,169,183,214, 10,101, 70,201,243, 53,141, 3, 90,223,161, + 80, 24,196, 35, 62,197,132,174, 26,201,122, 72,242, 76,207, 24,243, 60,135,187,204,239, 70,150,231, 73,165, 68,158,100, 50,164, +140, 91, 96, 50, 33,148,196,184, 57,238,248,234,157,152, 99,129, 53, 23, 10,162, 82,170,192,217,132,193, 62, 95,214,122, 86,192, +231, 76, 12,145,166,169,232,135, 17,180,188, 47, 49, 70,180,181,232, 73, 49,157,167,242,251,230, 68,185,162,128, 23, 36, 96, 9, + 34,210,104,149,100,178, 82, 58,125,157,196, 25,128, 68,211, 26,154, 70,172, 99,179,234,175, 63, 30,169,140,149, 61,187,117,236, +134,145,190,239,165, 90, 50, 22,107,106,206,254, 32,124, 91, 83,145,194,105, 25,219,229,152,200, 49,139,248, 33, 9, 2, 48, 23, + 15,179,210, 74, 96, 44,177,140, 62, 68, 98,192, 55,223,190,227,102,187,226,135,191,252,141,167,167, 71,238,238,182,244, 62,226, +167,145,151, 47, 55,248,148,232,241,188,168,165, 42, 59,159,207,197,211,151, 47,227,182,242,225,214,149,165,209, 21,147,159, 68, +184,193,101, 60, 47, 30,211, 68,229, 28,202,201, 3,213,159,206,156,134,158,237,102,139,117, 6, 63, 6,162,209,188,126,247,150, +166,105,248,248,233, 19,211,169,231,237,119,223, 65,231, 24,127,238, 49,117, 37,126,239,144,120,126,218, 83, 17, 81,218,226,154, + 6,235, 52,193, 79, 36,171, 89, 55, 43,190,236,191,112, 58, 79,156,207, 35, 74, 41,156, 54,212,214,112,187,234, 72, 81, 14,154, +126,138, 60,237, 7,154,186, 38,145, 24,189, 71,161,177,133, 85, 30,162,204,236, 99, 76,248, 24, 24,198,128,203,153,218, 25,180, +138, 24, 35, 97, 37,189,159,120, 30, 71,108,109,113,214,146,141, 28, 74,158, 44,251,251,166, 97,221, 88,214,117, 67,140,145,195, +105, 98,221,214,180, 77, 85, 24, 15,138,160,225,229,221, 29,207,253,153, 97,156,228,243,213,138,218, 89,214,221,170,160, 19, 51, +253, 48,149, 42, 84,178,205,149,213, 84, 93, 67, 85, 87,132,193, 99,146,166,173, 91,146,139,184, 54,176,190,109, 57,247, 35,251, +243,137,206, 52,160, 12,143,143, 15,197, 48,161,241, 90, 32, 28,117, 72, 84,206, 96,157, 89, 66,109, 78,126, 98,218, 79,108, 91, +199,186,110, 80, 27,197,113,240, 60,157, 18,207,167, 51,239,134, 27,172, 81,196, 67,207,176,169,233,182,183, 4, 31,249,252,249, +129,225,215, 39,106,163, 48,206, 17,130,231,233,225, 1,239, 44,109, 83,209,101,199,171,111,214,124,247,251,247,220,188,122,133, + 53,129,221,207, 95, 80,227,153, 70,175,248,219,175, 79,124,255,233,145, 63,188,121,197, 31,222,127,195,241,241,158,167,231,123, + 18,240,183, 15, 31,249,203,175, 95,184,189, 93,243, 98,187, 37,197, 72,221, 54,140,187,103, 30,239, 63, 49, 41, 77, 82,150,182, +109,168, 42,197,186,118, 52,109, 75,251, 98,195,205,183,175,196, 86,100, 10,240, 66,165,197,154,165,245,191,167, 0,159,139,228, + 36,150,182, 43,107, 26,115, 28,170,214,101,175, 92, 64, 44, 5,210,113, 13, 98,153,169,105,115, 65, 32,231,148, 46,255,126, 69, +166,154,247,127,243,168,113,158, 10, 44, 1, 39,151,168, 83, 22,116,108, 42,227,197,175,199,234,115,247,252,247,216,213,185,235, +214,165, 83,201, 87,137, 95,151, 85, 64, 46, 17,148,169, 20, 40,242,253, 46, 50,231, 60,179,133,100, 28, 60,127,173, 24, 69,237, +173,116, 81,191,147, 25,163,176,235,251,211,192,177, 31, 88, 89,133, 39,227,163, 39,250, 68,152,224, 60,156, 9, 83,198,160,105, +219,154,195, 48,200,142, 55, 38,116,202,220,180, 53,189,143,196, 0,218, 38,206, 83, 42,169,144,242,153, 76, 41,112, 28, 70,114, +176, 84, 86,194,147, 78, 83,160,177,150,202, 25,218, 70,118,237, 83,138,244,125,144, 48,145, 16, 73, 38,113,247,226,150, 85, 87, +145,189,240, 62, 68,168, 39, 23,120,206,166, 52,100, 18,190,163, 84, 37,249,223, 89,244, 64,178,145, 80,139,208, 49,169, 11, 78, + 87, 43,139,113,115,176,136,112,250,151, 6, 33,100,217,121,151, 66,202,152,138,172,142, 40, 35, 57, 20,113, 46, 0,156,140,164, +179, 86,104, 99,169, 48,196, 60,161,117, 4,101,136, 38, 16, 27,197, 86,137,150,168,239, 3, 49,106,114, 65, 99,104,155,137,147, + 34, 69,201, 49, 55, 74,212,247,166,228,136, 76,243, 20,102,153, 76,101,124, 10,132, 44, 73,105,146, 8, 44,246,223, 25,152, 19, + 66, 36, 5,177,179, 77,253,132, 49,150, 33,142,132,232,169, 59, 97,167,139, 53,124,238,118, 69,171,129,150,105,236,172,180,159, + 25,243,105, 22,156,234,242, 14,162,136, 94, 10, 88,103,236,194, 39,184,102, 42, 45,207,248, 28,220, 50,175,153,204, 37,216,101, + 94,165, 37, 53, 91,218, 18, 90, 89, 78,167, 51,193,103, 92,101, 56,159, 6, 44,138,160,133, 1, 47,107, 3, 3, 49,151,117,136, + 76, 9,172,181,178, 47,152,127, 94,101, 85, 17, 67, 17,235,169, 32, 52, 59, 25,215, 72, 55, 61,103,163,199,209,227, 54, 43,186, +213, 26,167, 53,199,254,196, 48,122, 9,114, 89,175, 48, 86, 51,244, 3,181,177,210, 69,150, 7, 91,226, 19, 37,143, 57,229,176, +168,241,212,108, 30,201,130, 14,141, 73, 30, 90,107,196, 82,117,123,187,197, 58,203,253,253, 35, 41, 5, 33,241, 12, 3, 14,197, +122,213,241,124, 62,226,172,162,117, 50,158, 24,189, 84,195, 95,129, 9,148,196,173,182,206,145,209,196,226, 50,173,141,147,177, + 83, 1,103, 8, 44,197,149,232, 78,216,239, 14, 36, 12, 77,221,200,158,122, 10,108,223,188,224,213,235,215,220,223,223, 51, 77, + 35, 83,152,184,123,253, 10, 19, 51,135,253,142,187,183,111,105,234,142, 95, 62,252, 36,163, 18,159, 49,157, 65,151,128,152,233, +124,166,219,172, 37,129,109,154,216, 31, 15,144,101,204,232,156,162,107, 45,235,174,101,156, 38, 98,204, 60, 31, 78,100, 34,181, +107, 57, 78, 3,125,206,108,172,147, 49,123,138,248, 28,201, 65,137,128, 39, 69, 66, 78,116,198,208, 24,141, 43,100,168,105,240, +156, 6,241,180,215,181, 3,147, 9, 42, 50,165, 88, 46,244,154,182, 49,172,170,138, 26,120, 56, 13,212,173,161,173,171, 2,104, + 80,120, 31,121,241,114,203,232, 35,187,211,185,120,163, 69,228,210,174, 87, 52, 78,130, 92,206,222, 19,148,146,236,225, 50, 30, +170,106, 75, 93, 57,114, 20, 27, 23,218,130,138,184,202,113,179,121, 65,189,170, 57,237, 79,108,207, 61,135,221, 14,235, 32,231, +141, 20, 22,206,161,131,194,235, 76,204,208, 79, 1,151, 21,117,109,168, 66,162, 15,145,211,144, 56,143, 19, 47,218,204,237,139, + 14,103, 44,231, 49,114,234, 71,126,249,244,153,237,186,195, 86, 86, 0, 53,250,136,117, 14, 59, 70,178,170, 72,218,161, 35,236, +158, 15,156,198,137,102,179,162,117,138,187,215, 29,111,127,247, 59,218,151, 47,193,194,233,243,103,206,251, 71, 86,166,225,211, + 46,242,151, 15,143,188,184,189,227, 63,188,255, 22, 61,236,121,122,252, 68, 38,243,225,215, 7,254,237,183,143,212, 43,203,234, +246,150,100, 12,173, 53,152, 16,248,245,225,129, 33, 64, 42,152,218,174,169,216, 84, 53, 93,221,208,108, 11, 96,166,174, 5,168, + 83,201, 40, 55,204, 21,253, 87,173,250,223, 95,232,151,231,188, 84,196, 95,193,100, 72,137,168, 40, 84, 56,233,218,116,254, 90, +141,174,174,173,224, 87, 86,177, 69,229,126,197, 97, 79,165, 72, 79, 49,125, 37,204,227, 31,246,225,169,136,207, 74, 80,203, 21, +245,237,223,181,162, 93, 89,219,230, 75,127,238, 86, 22, 8,206,149,174, 96, 9, 96, 89, 4,122, 95,235, 12,198, 81, 46, 42,231, + 76,129,245, 68,241,124,151, 17,105, 12, 73, 52, 35, 57,177,223, 15, 28, 15, 39,218,198,210,123, 69, 63, 37,226, 20, 10,132, 70, +161,163,228,140, 87, 78, 98,164,149,134, 60,101,166, 33,210,213, 53, 33, 39,238, 79, 39, 66,134, 87,166, 98,240,153, 83, 47,163, + 91,227, 12,253, 40, 34, 67, 77,166,239, 71,252, 16,113,141,166,174,157,172,171,114,226,124,238,153,166,137,164,160,209,150,174, +173,216,116, 13,171,186, 18,229,244,149, 7, 59,149, 81,117, 68,170,219,164, 34,185, 48,207, 93,229, 74, 55,174, 80,202, 22,186, + 93, 44,235, 17, 74,136,143,252,126, 66, 1, 11,165,153, 88, 38, 9,122, 41, 40, 4, 45, 82,214, 25, 46, 48, 5, 73,140,212, 74, +225, 67, 66,107,104, 42, 53, 39,170,131, 41, 1,151, 42, 45,207,162,209, 6,167,161,173, 50, 90, 85,146, 60, 86,132, 98, 2, 32, + 50,133,245, 95,186, 99,160,118, 26, 83, 86,164, 49, 73, 70,251, 76, 15, 12, 41, 19,146,228,165,163, 23, 66,145,232,118,172, 37, +167,204, 56, 9,171,205,148, 21,143, 53,134, 16, 3,125, 63,177,217, 38,108, 99,229,226, 47, 15,187,112,226,227,133,213, 94, 64, + 95,115, 51, 58,111,220,103,162,141, 82,138, 88, 38,171,186,232,172,174, 49,200, 82,124,148, 66,188,100,187,115,149,163,190,212, +219,204, 83,182,120,177, 97,102,240, 57,113, 56, 29,233,218,154, 83, 62,203, 74,193, 26,114,156,240, 65,246,251,145,132, 65, 96, +112, 30,177,233,154,162, 13, 80, 36,140,206,101, 42, 23, 72,121, 90, 2,137,172,179, 70, 58, 35, 45,156,220, 16, 38,252,232,169, +111, 27,214, 93,135, 66, 49, 14,226, 57,116, 25,234,174,129,164, 24,250,158,218, 26, 98, 14,168, 36, 22,177, 24,139, 69, 45,203, + 8, 71,151, 11,189,184,150, 37,255, 53, 4, 66,148,253,135,181,150,174,109,185,189,123,137, 82,138,207,159,238,233, 86, 43,140, + 81, 76,103, 79,215,172,192, 40,250,113,164,173, 26,180,173,217, 31,159, 24, 3,130, 67,232, 0, 0, 32, 0, 73, 68, 65, 84, 38, +137, 85, 37,171,114, 89, 23, 85,190,130,218,104,166, 40,187, 11, 99,100, 20, 59,156,134,101,231,136,181,116,117, 67,173, 13,195, +148, 56, 63,236,168, 54, 55,216,166, 42,147, 5,203,251, 63,253,142,241,116,226,233,249,137,166, 18,241,216,221,187, 55,252,250, +215,239, 57, 28,158,249,231,255,244,159, 56, 15, 3,135,221,158,228, 3, 42,131,107,106,178, 81,114, 72,132,200,230,197, 13, 83, +239, 57, 29, 7,250,211, 89, 96, 16,174,145,145,111, 87, 45, 60,231, 62, 5,158,247,103,214, 93,195,148, 34,195, 16, 48, 86, 70, +244,209, 39, 6, 47,200,200, 84,114,180, 67, 81,143,214, 78, 83,105,141,211, 21, 33, 36,206, 83,224, 24, 19,149,169,176,214, 18, +181,102, 10, 30,173, 20,155, 34,204,218, 90, 75,163, 21,207,253,128,117,150,109,237,176, 38,163,180,136,245,110, 55, 29,171, 77, +199,231, 79,247, 20,178, 9,168, 68,187, 90,139,205,198,104,129,200, 40, 69,229, 46,251, 93,109, 74, 88,206,224,113,197,175, 41, + 61,149,163,219,172,216,188, 88,137,133,111, 43,193, 63, 77,227, 56, 31,207, 84, 85,205, 52,254,138,113,134, 77, 83,115,236,123, +137,197,213,138, 49, 6, 24, 35,171,182, 99,152, 60, 57,136, 16,228,254,220,179, 27, 38, 94,220,109,232, 86, 13,168,196,225,224, +121,222,157,185,187,219, 82, 53,150,211,113, 79,231, 58,154,170, 69, 85, 22,140,102,191,219,243,240,112, 79,189,234, 88, 55, 53, +119,183, 43,190,253,221, 27,110,223,190,198, 85, 16, 14,207,156,118, 7,156,178,236, 6,205, 95,126,250,153,182,173,249,167,239, +222,162,178,231,211,151, 39,134, 62,240,241, 97,199, 15, 31,126,197,170,154,205,250, 6,235, 42, 42,107,168,156,227,243,111, 31, +101,205, 98, 52, 85,109,233,186,154,206, 86,108,219, 21,171,205,138,151,239,223,177,222,174,192,136,255, 53,167, 88,124,213, 74, +186,108, 65,173,241,143,255,187,176,172,103, 91, 12, 95,141, 1,227,178, 34, 73, 74, 70,130, 41,201, 94,254,186, 19,206,249,186, + 75,207, 11,241,237,186,253, 16, 77,140,116,237,233, 43,171,219,172, 64,191,198,181,166, 11,109,174,248,214,245,223,137,225,254, + 30, 52,115,129,227, 92, 58,164,235, 76,115, 84, 97,142, 47,191, 62, 21,192, 78,249,245,164, 5,240,113, 58,159,137, 49, 97,180, +164,105,169,146,146, 38,152,106,137,229, 76, 37,221,108,127, 60,226, 99,164,170, 20, 97,138, 76, 41,211,143,137, 16, 3,235,202, + 97,148, 3, 29, 49,217,145,179,188,155, 41,206,116, 62,153, 98, 62,245, 61,126, 12,220,221,172, 57,140,158,251,221, 1,155, 20, +218,105,188, 15, 18, 0, 5, 76,193,147,114,192,118,146,163, 17, 35, 28,207, 19,168, 68,200, 10,219,104, 94,173, 58, 42,101,208, + 38,211, 56,133, 85, 50, 86,205,186,104, 40,102, 22,127, 18, 97, 95, 42,221, 26, 42, 99,106, 7,149, 70, 69, 75, 78, 94, 56, 4, +230, 18, 21, 59,135,124,200,165,162,139,179, 65, 19, 11,167, 77, 37,153,146,250, 16,202, 26,166,100,207, 91,100, 12,109, 77,153, +174, 4,140,149,209,111,142,113, 89,210,196, 44,239,168,206,162, 57,208, 86,201, 29,144, 52,181, 83,160, 2, 49,105,114,214,196, + 40, 86,180,202,104, 66, 97, 33, 40, 20,201,136, 31, 93,105, 37,225, 89,229,162,180, 37,235,192,207,184, 94, 53,135, 11,105,116, + 73, 81, 51, 86,154, 59, 93, 62,159,148, 5, 96, 21,162,216, 14, 67,200,226,233,159, 29, 65, 69,112,103,180,250,187, 21, 22, 75, + 60, 47,153, 98, 43, 84, 37, 22, 86, 47,122,143, 57,211, 98,241,178,205,240,163, 84,214, 67,133,136, 56, 51, 16,102,251,155,112, + 19,132,191,175,205, 92,252,166,229,239,211,247, 3,111,238,110,121,140,123,201, 89,175, 44,131, 55,140,227, 68, 83,139, 24, 90, +101, 10,136, 70, 45,250,144, 37, 73, 80,205,147, 6,105,252, 42,107,203, 74,212, 57, 92,125, 81,212,122, 47,137, 85,155,170,161, +235, 90, 50,153,190, 31,202,127, 87,116,155, 13, 41, 69,198,113,164, 89,175, 36,212,161, 8, 99, 83, 17,214,204, 21,127, 74, 25, + 45,208, 28, 82, 76, 88,163, 9,197,190, 96,140, 84, 95,155,187, 91,110,238, 54, 60, 61, 60,113,255,240, 72, 93, 55, 76, 83,164, +247, 19,111,110, 54,156,251,145, 24, 2,110,189, 33,121,207,216, 15,120, 31,150,195,160, 48, 48, 33,139, 29, 69, 91,197, 52, 70, + 66,246,172,235, 53,174,170,241,251, 29, 77,129, 28, 84,218,226,170, 10,165, 28,195,110,207, 56,142,172, 94, 56, 76, 85, 51,229, +204,155,119,111,184, 91,111,249,151,255,251,255,164,189, 91,227,125,224,221,251,247, 52,235,150,191,253, 63,255,149,237,237, 29, +155,151, 47,248,240,151,191, 18,125, 96, 12,158,181,214,184, 70,186,175,224, 71,170,186,162,105, 91, 62,126,126,226,176, 59, 48, + 77, 19, 74,105,170,202,208,181, 13,117, 83, 17, 38, 41,110,246,187, 51, 10,195,186,182,124, 57,156,153, 66,226,166,109,202, 88, +126,100,138,177,112,144, 69,151,160, 82,166, 49, 98, 33,169, 10,220, 96, 26, 61, 71, 31, 72, 74, 81, 89, 81,215,250,146,131,189, +106, 36,138,181,115,154, 85,229, 56,142, 61, 19,240,178,109,177, 90,198, 59, 62, 4,177,175,221,221,240,249,241, 81, 24,234,136, +176,164,109, 26,186,166,198,149, 73,206,148,164,163,210, 90, 97,140, 60,120, 66,251, 83,101, 23, 87,201,169, 97, 52,237,106,205, +122,179, 42,217,213, 80, 55, 13,202, 9, 3,218, 89, 71,219, 53,184, 90,243,241,215,123,234,198,161, 12, 12,163,103,156, 70, 80, +154,126,244,140,254, 72, 93, 57,170,162,113,172, 93, 77,239, 71, 62,252, 38,163,239,174,174,232,234,154,227, 52,241,188, 63,115, +107, 86,116,186,162, 74, 37,174, 80,107,152, 50,247, 15, 15, 80, 57,186,198,113,119,211,241,205,183,111,184,125,121, 71,163,128, + 48,114,122,122, 66,133,140,162,226,251,223,158, 8, 57,243, 31,191,251,142,117,227,120,252,242,137,195,241,196,253,243,142,239, +127,254,149, 73, 91,182,171, 13, 85,213, 80, 57,205,170,174,216,237,118,124,121,120, 36,104,133,110, 44,109, 91,211, 57,203,186, +171,104, 87, 13, 55,111, 95,178,218,110,139, 66, 89,198,129, 50, 86, 46,223, 99,217, 38, 95, 51,201,191,238,140,175,198,226, 74, + 0, 43, 51, 19,188,164, 70, 47,153, 15,249, 10,175, 25, 75,190,192, 5,117,121,221,113,231,175,149,185, 37, 28,227, 90,193,171, + 22,225,208, 21, 67, 59,167,175,190, 38, 57, 45, 59,125,242,165,171,249,199,193, 67, 94,206,145,203,126,127,198,109,170,197,114, +247, 53, 17, 47,127, 69,148,155, 45,105,135,131,216, 44,115,206,180, 14, 98,200, 24, 37,126,246,144, 50,227,105, 36,199,128,202, +138,231,195,158,113, 10, 24,107, 25, 39,143,198, 50,122, 25, 91,182,149, 76,196,172, 82,196, 98,125, 11, 81,186, 94,157, 21,163, +151,243,237,228, 37,221,108,187,222,240,184,219,243,184, 63, 82, 87, 21, 74, 43,166, 32, 0, 17,149,242,194,208,115,198, 17,114, + 36, 76,137,172, 28, 70,103, 92,101,185, 93, 55,108, 87, 53, 55, 93,195,176,239,137, 57,160, 85,181, 76, 44,102,129, 86, 46, 8, + 80, 51, 95, 14,170, 76, 1,148,162,170, 26,114, 44,182,180, 36,147, 20,163, 53,100, 51, 51,137, 74,120,161,196,115,202, 56, 95, +200,110, 0, 58,102,130,202,130,141,141,242,249, 91,235,164,147,215, 96,180,168,247, 65,248,229, 51, 61, 80, 44,190, 34,172, 77, + 73,140,150,177, 88, 0,149, 54,104,157, 10,108,200, 64, 72,164,168, 80, 70, 62, 17, 83,216,232,126, 10, 66,197, 51,102, 65,120, +199, 28, 23,170,218,188, 78, 73, 37,115, 32,149,137,172, 54, 26, 87,187,146, 49, 32, 88,104, 59, 23,165, 73, 82,242, 98,130,126, +242,132,226, 54, 72, 81, 23,188,175, 46, 2, 57, 81,209, 95, 85,196,151,169, 72,240,104,235,208, 70, 73, 63, 51,195,101,162,224, +152,151, 96,151,191,155, 64,133,148,190,154, 32,169,121,170, 69,177,237,205, 68,123, 37, 44,132, 5, 87,171,224,216, 15,242,179, +115,110, 73, 73, 53,214, 49,249, 64, 87, 53, 75,129,102,203,154, 83,128, 52, 69, 4, 90,138,188,172, 53, 49, 69,124, 74,212,149, +196,237,106, 9,113,177, 98, 27,200, 25,159, 4,214,190, 90,175,105,234,138,156, 18,135,227,153,156, 50, 85,215,208,174,196,230, +148, 83, 22,156,101,200,196, 44,129, 26, 66,174, 82,203,195,131, 50, 37, 12,225, 2,126, 24,163, 80,177,146, 18,254,240,234,102, +205,221,237,134,207, 95, 30,153,178,140,115,135,105,162,106, 43,186,182, 97, 24, 71, 17,140, 85, 21,227,228, 9,147, 39,198, 36, +227,159,172, 80, 89, 23,182,124, 34,121,207,177,151, 96, 15,109, 52, 77,215,226,167, 9, 63,150,209, 94, 9,148,209, 90,145, 53, + 28,158,158,165,122,111, 90,180, 54,172, 86,107,222,190,127,199,111,127,251,153,231,221,142,245,122, 67,210,153,223,255,211, 31, +249,229,199, 15,124,248,225,123,254,240,223,252,153,167,243,153,221,110, 79, 74,153,177, 63, 81,181,173, 8, 29, 20,164, 56,208, +109, 55,156,135,192,121,127,226,124, 62,147,178, 36,254,212, 86,179,234, 42, 84,148,131,224, 60,140, 28,142, 61,155,182,129,152, + 56, 14,169,136, 1, 13,227,228,233,167,177, 60, 52,151,135,169,210, 80,105, 69, 93, 82,188,166,224, 57,140, 35, 62, 23, 63,166, + 51,140, 5,239,217,213, 21,141,179,212,198,208, 88,195,201,143,132,148,185,105, 91,225, 26, 91, 91,236, 16,240,234,229, 29,207, +199, 61,231,190, 95,192, 97,174,170,232,186,181,228,248, 38,228,231,190,144,191,116, 81,108, 74, 70,122,158,130,228,213,107, 5, +198,209,118, 29,205,166,147,184,207, 40,240,133,152,165,171,106,218,142,182,235,104, 87, 29, 47, 95,191,224,247,127,124,207,106, +211,114,123,187,230,246,166,229,238,102, 77, 99, 29,198, 58, 73,135,154, 38,249,122, 77, 77, 78,145,182,105,112, 77,203,211,254, +204,241, 52, 98,156,101,187, 89,147, 28, 28,250,129, 90, 87,101,143, 41, 42,224,199,251,123,166, 24, 88,181, 13, 55, 55, 43,222, +125,251,146, 87,223,188,160,105, 26, 42, 29, 25,158,118,196,126, 66,141,153,191,252,186,227,220, 15,252,249,219,247,188,218,110, + 56,238,158,217,237,246,220, 63, 61,241,211,175,159,240, 73,209,212, 13,166,118,212,181, 99,211, 85, 76,227,200,231, 47,247, 82, + 72, 57, 67,215,214, 52,149, 99,213, 84,108,182, 29,219, 55, 55,172,191,121,133, 50,151, 61, 52, 41,149,196,167, 75, 48, 68,186, + 26,135,171,252,117, 82,216,114,176,150, 68, 53, 81,166,199,203,174,186,116, 11,186,116, 32, 5, 11,118, 21,190,146,150,160,137, + 84, 38, 63,210, 53,164,194,124,207, 87,236,246,188,136, 80, 33,125,149,105,126,189, 71,151, 78, 59,205, 11,196,242,245,243, 82, + 76, 93,188,187,122,193, 90, 74,147, 51, 79, 12, 18, 49,196, 11, 79,123, 86,226, 23, 72,212,124,169, 95,255,147,114,228,241,105, +207,254,249, 44, 23,180, 49,164, 20,136,229, 92,240, 83,224,227,175,247, 60, 60,237, 73, 62,242,180, 63,114, 26, 70,124,204,244, +125, 32, 39,139,247, 9, 31, 36,240,195,100,168,140,129, 44,226,172, 41,122, 66, 76,196, 8, 79,167,129,135, 83, 79, 76, 94,210, + 39,179,230,243,211, 19,191, 62,237,208,214,225,202, 46,213, 88, 91,254,142,133,101,174, 4,159,154,131,240, 5,156,203,116,171, +134,215, 47,110,120,115,183, 97,221, 88,134,243,137,148,189, 36, 83,214,245,133,157, 31, 4, 92,146,162,236,198, 75,196, 14,118, +254, 12, 53, 24, 91, 75, 17, 84,158,133,164, 75,246,204, 18, 86,163,200,218,200,165, 24,195, 69,116, 88,158, 1, 41, 40, 21, 97, +154, 47,185, 92,132,204, 94,216, 30,165,163,181, 70, 99, 77, 57, 95, 75, 3,149, 98,198,135,204, 52, 5,250,209, 51, 76,129,113, +138,210,104,165, 72, 38,149,240, 22, 39,105,108,200,184, 57, 21,155,165, 49, 34,246,211, 42,203, 20, 35, 37, 66, 10, 50,129, 48, +226,155,143,105,182, 30,170,130,162, 45, 62,108, 99,231, 25, 55,222,123, 84,101,240,209,147, 66, 32, 77,113, 17,246,133, 40, 30, +123, 99, 77,225, 46, 80,180, 42,122,121,166,174, 65,194,177, 20,147,162,136, 87, 66,223,156, 3,139,162, 20, 84,250,250,179,205, +151,236,129, 88, 38,154,194,141, 23, 63,249,197, 5, 82, 38, 77,186,144, 29,185, 56, 62,140,209,236,142,123, 38, 31,104,219, 10, + 63, 77, 40, 35, 98,102, 31, 3, 57,201, 93,152, 73, 24,171,139, 59,230, 42,130, 89,203,133,158,181, 33, 33, 19,145,140,216, 38, +173,179, 22, 93, 22,249,202, 88,252,105, 66,107,205,122,179,198, 88,169, 32,246,251, 61, 41, 39,218,174,165,170, 42,217, 9, 33, +137, 56,177, 72,240,231, 81,133,186,174,100,148,128, 34, 98, 18, 22, 59,200, 88, 37,165,132, 77,153,117, 87,177,217, 72,199,115, +255,240, 68, 83, 96,248,163,159,216,214, 50,230,159, 98,160, 49, 22,188,116,112, 33, 74,215,175,179,236, 13,147, 18,190,187,206, +130, 36,237,199,137,132,162,173, 58, 86,166,225,243,248, 72, 54, 23,193,143,177, 86, 14,130,201, 51,238,143, 2,253,175, 29,218, + 90,182, 47, 95,144, 43,205,175,223,127,224,197,235, 23,196, 20,121,243,246, 45,235, 23,183,252,203,255,242,191,114,243,230, 53, + 47,191,249,134,191,254,229, 67,177,161, 77,196, 16,176,117, 93, 70, 86,145,152,224,197,171, 23,124,122,120,100,183, 59, 51,250, + 32, 32,134,202,208,212, 21,181,179,244, 33,210,143,158,253,121, 32, 41, 81,164, 63,158,143,100,163,105,108,197,228, 61,195, 32, +213,112,214,186, 84,127, 2, 70,176, 90,203,184,215, 74,166,248, 97, 26, 25,100,201, 37,158, 78,157, 73, 62,210,214, 21,117,101, +177, 86,211,185, 34,178, 75,137,170,174,105,172, 69, 91,181, 96, 53,239,238,182,132, 52,113, 60, 12,168, 88,160,120,198,112,179, + 90, 75, 54,114,142,132, 20, 22,184,205,114,120,205,185,210,222,227,156, 28, 6,202, 66,189,106,233, 86,107, 80,154, 36,160,224, + 82, 24, 20, 48,132,177,152,198, 97,180,197, 42,135,123, 81, 49,180, 13, 49, 76,156, 78,154,243,105,192, 25,135,218, 31, 24, 12, +244, 39,233,158,214,155, 53,102,232,241,163,103, 85, 85, 84, 70, 51, 4,143, 75,129,155,186,227,150, 10,155, 12, 86,105,140, 19, +106,215,238,105,199,195,211, 35,237,205,150,110,219,241,238,253, 75,222,189,123, 73, 87,183, 56,147, 57,159, 79,244,199, 35, 90, + 53,124,120,234,249,248,116,226,159,223,189,229,155, 23, 55,132,211, 19, 79, 15,247,124,254,120,207, 79, 31,159,233, 39, 33,228, + 85,206,210,214,150,205,218, 98,130,225,167,207,191,240,124, 60,160,157,165,107, 27,154, 74,252,255,155, 77,199,246,246,134, 87, +223,190,197, 42,131, 42,182,163,116,149,188,166,224,171,160,145,101, 10, 93,104,140, 95,179,218,139, 66, 56, 21,161,143, 82,139, + 90,253, 58,190, 52, 95, 5,162,124,117, 33,166,203, 20, 45,231, 88,216,237, 37, 95,124,158, 0, 44,232,217,162,190,205,169,140, + 40, 47,201,110, 74, 73, 71, 22,230,157,169, 18, 7, 68, 10, 18, 19,116,217,155,171,175,124,236, 51,238, 83, 46,254, 57,165, 77, +236, 69,194,136, 42, 43,131,101, 92, 47,145,178,115,119, 53, 69,207,238,241,196,238, 56,210, 86,134,182,118,228, 56,113,158, 60, + 86, 67,127,206,252,252,235, 19, 57, 71,222,108,183,236, 14, 71,142, 99, 32, 38,137,179,212,198, 48, 69, 8, 65,161, 83, 66,153, + 72,109,133,123,241,116, 30,136, 41,227,148, 16,187,158, 78, 35, 63,126,121,102,181,233,232,108,141,159, 20, 95, 30,158,121, 78, +131,192,101,148,150,239,203,202,129,157,149, 46,155, 78, 95,252,252, 26,157, 51,109, 91,113,183,105,233,218,150,198,106, 76, 41, +162,140, 21, 87,200,186,105,208, 89,136,151, 66,243,131, 24,138,216, 56, 43,146,153, 97,245, 82,208, 81, 87, 36,173, 72, 33,202, + 31, 19,229,103, 40,153, 30,115,170, 88,134, 88,130,127,202,248, 62,230, 80,172,136, 26,175, 32,123, 73,152,155, 81,173,114,190, + 24,176,178,194,152, 51,186,181,186, 92,250, 90, 27,156,133,156, 12, 65, 75,186, 34,101, 69,145,114, 17, 40, 98, 74,208,147, 66, + 85,178,102, 12, 33, 45, 69,154, 82, 6,103,117, 41, 46, 50, 30,136, 73, 46, 82,171,228,231,146,203, 69,153, 17, 17, 93, 34, 96, +107,131,211,142, 88, 46,188, 24, 50, 86, 89,129,223,100,133,247, 1,173,161,170,139, 45, 76,103,153, 4,204,238, 17,117, 29,170, +203,146, 98, 56, 79, 5, 68,239, 97, 81,106,146,187,162, 20,159, 49, 6,106,237, 68, 92,151,178,224,117, 53, 87,107, 45,153,104, +104,237,136, 25, 89, 53, 43,141,210, 9,149, 74,129,157,197,129, 16, 67, 40,159, 67, 64,107, 71, 26, 18,253,112,166,170, 26, 78, +231,147,136, 1,173,140,253,167, 20,209,218,200,122,169,178, 75, 56, 89, 46,150, 78, 20, 68, 37,108,249, 24, 89,108,157, 70,105, +172,182, 22, 53,103,118, 89, 24,199, 1,173,197,163,110,157,208,116, 66, 47,140,119,107, 45, 86, 91,134,225, 84,140,255, 53,167, +131,236,116, 84,146,244,248,148,229,210,157,213,151,228,146,125,173,132,230, 59,197, 32, 3,137, 24,169,171,154,215,111,223, 18, + 66,224,243,253, 61,214,213, 76,227,132, 74,137, 77,211,208,199,145, 64,166,118,150, 20,162,136,228, 66, 20,193,134,154, 25,216, + 25,167, 4,163, 25, 74, 56, 67,183,234,104,109, 69, 74,129,209, 79,212,214,202, 77, 85, 42,174,218, 88,246,135, 3,211,121, 66, +173, 29,186,118,108,222,220,209,173, 87, 60,252,244,145,112, 62,240,250,219,215, 88,231,120,243,237,183,124,252,248,137,143,127, +253,137,255,241,127,254,159, 72, 65,241,240,249, 1, 85, 59, 78,231, 19,141,178,180,237, 10,101, 20, 41, 76,220,110,110, 64, 87, + 28, 31,247, 28,246, 7, 98, 76, 84,181,168, 97,219,166, 6,228, 1, 28,124,228,124, 30,105, 42, 67,204,158,115,204,180, 78,227, +148,226, 52, 78,132, 52, 17, 74,231,155,201,184, 25, 67,168,160, 81, 22,163, 28,167,105,226, 52,137,197,199,104,161,249,132, 16, +169, 74, 23,233, 52,180, 70, 97,146,102,202, 17,171,140, 84,222, 26, 41,138,114,102,187, 94, 83,183, 13,159,191, 60,148,177,169, +124, 78,221,170,197, 57, 77,246,190,140,174,212,140,193,150, 81, 95, 57,120, 67, 8,212, 70,252,173,218, 40, 92,211, 80,181,173, + 80,142, 66, 4, 83,210,173, 74,119,143,138,242,239, 90,161,107, 39,121,233, 94,186, 16, 31,172, 68,255,218, 19,207,143, 59,214, +155,138, 54,214, 52,110,226,120, 62, 99, 27, 75,179, 89, 99,245,137,227,254, 76,179,110,233,170,181,168,137,115, 98, 85,175, 81, + 94,188,205,174,117,244,231,158,199, 47,247,228,182,101,221, 84,124,247,246, 5,111,190,121, 41,144, 12, 13,105,154,232,119, 59, + 12, 53,191, 61,120, 62, 60, 62,243, 79,175,223,242,205,235, 45, 33, 14, 60,239,118,124,252,244,192,143,159,190,136, 45, 80,107, +148,117, 52, 93,199,237,106, 77,173, 12,191, 62,124,226,241,241,137,108,196, 59, 92, 87,142, 90,107,186,117,203,234,102,205,246, +205,157,140,255, 72, 69, 93, 60,163, 55,175, 18,206,150, 3,143,197, 71,107, 84,201,110, 46, 23,106,113,113,149,190,187, 80,187, +244,215,162,179, 37,235, 27,137,170,188,236,189,175, 16,173,234, 58,105,236, 34, 66, 83,215, 98, 58, 68, 8, 37,245, 92, 1,193, +240,119,138,223, 34,174,154, 99, 73,115, 1, 79,169,116, 69,209, 90, 4,117,243,110, 94, 20,242, 41,202,101,173, 50, 37, 30,147, + 5, 22, 34,133,134, 41, 65, 22, 2, 67,241, 68, 78,167,145,167,199, 29,231,115,166,109, 52,206, 73,118,244,105,127,162, 54,154, +179,143, 28, 14, 35,167,113,224,166,107, 8,113,146,203, 59, 87, 34, 52, 83, 90, 32, 89, 41,203, 88, 54, 70,234,202,225, 42,203, +167,135, 3,143,103,207,237, 74, 46,204,253,185,231,151,167, 29,109, 93,243,221,230,150, 56,245,252,252,124,226,204, 68,101,197, +218,166,163,184, 22,170,218,144,173, 98, 28,203,126,213,233, 66,253, 75,220,118, 43, 94,108, 58, 81,128,171,136,210, 18,134,101, +140,147,198, 68, 27,148, 83,228,233,107,187,212,146,252, 85,166,139,233,138, 3, 96,157,147,169, 87,146,255, 32,108,254,130,200, + 45,157,102,138,136,178, 94,171, 5,120,146,196,144,180, 68,232,102, 31,151, 46, 30,157,201,170,196,106,147,229, 88, 45,182,170, + 37, 80,101,214,101,164, 44,145,211,101,109, 99, 12, 24,139,248,198, 67, 92, 30, 96,209, 54,104, 73,245, 84,114,177,203, 90, 35, +148,201,134,194, 36,197, 84, 34, 83, 77,241, 88, 15, 37,130, 85, 52,107,226, 48, 82, 73, 50, 40,210, 21, 32, 41, 37,137, 92,141, + 5, 38, 22,188, 23, 5,187, 49,140,126, 42,247, 78,153, 92, 21, 31,254, 87, 9,124, 69, 44, 74,206,139,231, 60,155, 9,249,148, + 68, 23, 15,154, 16, 38, 82, 42, 80,158,171,247, 68,107,117,153,118,101,241,152,167,146, 45,178,196,159, 47,171, 19, 89, 85,162, + 4,205,156, 82, 66, 91,209, 49,156, 78, 35,111, 94,111, 57,229, 51, 49,102,108, 37, 69,137,247, 30,231,244, 18,177,100,180,196, +129,235, 37, 59,240,106,202,151,149,128,202,138, 80,213, 90, 35, 72,213,148, 36,218,206,123,233, 60,187,245, 10, 91,213,236,247, +247, 75, 72,132, 91,173,208,214, 16,124,160,105, 90, 65, 19,198, 68,244,129,156, 37,126,112, 78,145,202, 41,131,206,197,175,167, +202,200,199, 51,198,204,148,160, 85,142,182, 93,115,247,226,150,251,251, 47, 28,118, 71,148, 86,210,165, 55, 45,174,170,216,157, +207,212, 70, 82,119, 82, 73,125, 27,189, 47, 15,186, 84, 65, 53, 34, 50,233, 81, 68,103, 89, 89,203,166, 91, 99,141, 97, 26, 39, +166, 97,196, 52, 21, 42,205,227,119,217, 67,159, 79, 71,198, 0,171,170,166,187,189,227,237, 55,223,242,233,183,223,184,255,237, + 51,237,237,150,186,109,233,110, 54,108,215,107,254,143,255,237,127,103,181,222,240,135,255,246,159,121,252,248,145, 49,140,104, + 87,243,180, 63,240,170, 91, 19, 53, 84, 6, 66, 72,220,220,189,228,116,234,121,126,220,113, 26, 79,232,210, 85,175, 26, 71,235, + 12, 67,136,244,227,196,185,247,104, 35, 59,178, 83, 47, 22,182,202, 42,122, 31, 25,166,114,248,104, 13, 69,151,160, 72, 50, 42, + 68, 18,124,114,206, 28,250,145, 52, 63,160, 90, 51,166,140,182, 26, 87, 89,180,206,226,251, 70, 17,150,188, 93, 77,163, 77,217, + 99, 10, 77,109,189,105,249,242,180,103, 26, 75,204,130,214, 52,173,172, 89,210, 24,138,240, 81, 68,122, 90,201,120, 39,149,136, + 85, 16,187,135, 41,222,201,166,110,169,234,166,168,166,133, 34, 21, 11,232, 65, 23, 38,129, 8,185,204, 87,193, 48,166,146,104, + 85, 53, 57,140, 14,140,227, 68,221, 85, 84,185, 38,167, 44, 74, 89, 39, 58, 11, 51, 25, 92,213,112,247,162, 18,141, 68, 93,163, +148,102,240,158, 70, 59,162, 19,139, 31, 33,243,248,248, 68,168, 12,119, 77,197, 55,223,190,228,155,247,175, 89,215, 21, 86, 3, + 42, 48, 60, 31,201,222,242,208, 71,126,125,124,224,245,205,150,215,111, 94,162,167,129,199,227, 19, 63,254,242, 27,191,125,124, + 98,242, 16,178, 38,106, 69,215, 58, 94,109,215,212,181,225,203,253, 35,247, 79, 79,100, 45,232,220,186,182, 56,157,217,172, 26, +214, 55, 43, 54,175,110,105,186,182,136, 9,103,113,153,190,112,213,103, 96, 83,142,203, 1, 42,222, 90, 37, 86, 38,117,221,141, +203,239,204,112,245,251, 47, 23,115,202, 81, 68, 51,215, 89,226, 87,137,230,178, 26,154,189,235,178,141,191, 4,187,136,132, 74, +205,128,154, 20, 23, 63,250,162,255,201,106,225,194,171, 82, 84, 95,236,164,210,237,155, 37, 79, 61, 94, 4, 72, 92,144,156, 58, + 11,152,195,152, 75,160,138,116,144, 69, 52,168,248, 10, 82,163, 77, 65, 53,251,200,126,127,226,112,246,108, 90, 25, 73,134, 73, +246,234, 24,240,231,137,195,110,160,182,142,206, 56, 42,229, 48, 56, 38, 21, 25,252,132, 46, 54, 76,133,236,204,163, 31,168,157, +165,117, 13,159,159,142,124,248,242,200,203,219, 27, 34,137,113, 72,124, 57,140, 24, 52, 47,215, 45,135,254,204,199,221, 65, 84, +225, 86, 97,141,197,164,146,176,214, 88,108, 85,113, 26, 7, 66,140, 18,177,170, 44,182,146, 40,210, 55,219, 77,193,103, 39, 90, + 87,211,182, 21,117, 85,131,130,105,244, 24,180,236,180,203, 37, 49,123,218, 23,206,190,150, 75, 90, 25, 49,147,104,147,169,170, +110, 89, 37,198,226, 36,178,214, 22, 1,165, 46,157,103,144, 21,104,128, 52,167,246,150,192,149,164, 68,173, 29,124, 44,247,151, +232,106,102,118, 65, 74,160,202,179,183, 20,239,115,165, 24,243,178, 91, 86, 42,151,139, 77, 52, 16, 86, 43,177, 46,103,129,252, +160, 46, 43, 29,109, 17, 77,142,215, 34,114, 14,158,202, 86, 56,163, 73,147,128,200,172,170, 48, 90,198,233,242,154,168,114, 89, + 7,177,226, 25,189, 8, 42, 3, 16,149,140,249, 67,136, 56, 20,147,159,100,188, 95, 68,126, 49,134,130, 86,149,239, 75,118,209, +186,136,182,255,158, 1, 87,222, 39,175, 46, 83,145, 44, 43, 2,161,249, 93, 4,167, 41,167, 75,234, 33, 82, 92,205,244, 67, 97, + 41, 40, 41, 12,148, 42,136,230, 92,252,249,138,133, 21,147, 20,217,139, 0,239,120, 56,241,221,251,247, 56,109, 9,193, 83,183, +150, 16,144,149, 99,221, 45,231,130, 53,134, 40,217, 58, 82, 16,199, 18,212, 68,198, 42,185,135, 67,150,233,132, 68,175, 2, 42, +107,194, 20, 24,195,136,107,107,218,174,193, 40, 56, 29,246,196,224, 49,149,165, 91,175,200,136, 72,161,105,219,133, 80, 21,188, +151, 84, 54,173,153,151,129,105,246,182,198, 72,212, 74,148,121,101, 87, 21, 72,232, 74,179,185,221,208,117, 29, 63,252,237, 67, + 73, 84, 74,168, 16,104,214, 27,134,178,183,215, 70, 23, 0, 5,140,222, 23, 82,221, 69,184, 99,139, 34, 48, 22, 63, 95,215, 53, +212,149, 20, 2,135,195, 68, 82,186,136,188, 88, 88,194, 97,154, 56, 31,207,196, 4,245,102,195,239,254,252, 7,250,190,231,241, +211, 23,140, 74,108,238,110,169,215, 45,171,187, 91, 14,143,207,252,245, 95,254,133, 63,253,231,255,142,186,169,185,127,124,166, +106, 26,158,143, 7,242,228,169,110,110,209, 86,170, 56,219, 85,212,235, 21,127,251,254, 71,158,159,246, 68, 5,141, 51,212,198, +208, 54, 13,209,192,112,242, 66,121,154, 38, 89,119,164, 68, 82, 18,211,151,149,252, 48,133,227, 92, 2, 28, 0, 83,188,144, 70, +107, 42,235,192, 24,142,163,224,118, 77, 33, 24,133,114, 65, 54,174, 42, 74,201,178, 7, 42, 23,132,202, 66,147, 51,197,215, 84, + 55, 21,119, 47,111,217, 29,207,156,206,231,130,249,205, 37,219,125,133,142,101,220, 87,138, 52,173,203, 3,187,120,142,197,189, + 96,180,140, 78,171,166,198, 54, 77, 1,160, 20,198,119,137,147, 68, 75,218, 82,212, 50,150, 76,170, 32, 76,203,212,217,105, 85, +172, 42,226,170, 64,105,110, 95,188, 16,125,197,185,199, 90,168,234,138,253,254,196,233,116,132,174,229,213,235, 55, 56,231,152, + 38,225,172,215,195,136, 74, 89,196, 75, 74,115,127,255,204,254,116,162,189, 89,243,246,221, 45,191,251,253, 59, 86,181, 65,231, + 68, 93, 25,206,135,158, 48, 70, 14,131,226,151,143, 59,186,186,227,221,203, 59, 12, 35,167,161,231,251, 31,126,230,215, 95,238, +241, 81,246,221, 67, 74,108,218,134, 87,183, 91, 86,171,134,135,135, 39,190,220,223,115, 60,246,184,206, 82,213, 14,155, 19, 78, + 43,186,182,230,230,110, 75,187,237,202, 62, 79,127,165, 24, 55,203, 72, 89, 62,215,124, 77,101,227,146,155,144, 75,136,139, 86, +146,250,148,191, 74, 64,203, 95,141,218, 41, 2,212,235,253, 55,153,194, 10,159,119,223, 87, 80,155,196, 18,133,169,203,220,119, +233,198, 98,185,212,245,101,140,126,233,246,175,176,207,197, 10,148,230,242, 33,203, 72, 53,166, 8,152, 11, 11,190, 76,238,138, +158, 91, 60,195,101, 13,103,150, 4,181, 75,171,154, 10, 80, 37, 71,136, 19, 60,239, 79, 28,142, 71, 54, 51, 61, 44,123,142,135, +129, 16, 3,149,178,124,126, 60,209, 21,173, 76,109, 53,109, 93,161,115,230, 60, 14, 4, 52, 46,230, 50,202,140,156,142, 19, 21, +134,174,117, 60,247,158,127,251,241, 87, 94,188,186, 35, 3,231, 62,112, 28, 38,142,227, 68, 87, 57, 78,131,231, 56,246,156, 99, +162,182,154,106,166,123,229,132,171, 20,205,202,137,224, 78, 38,225,172, 42, 67,219, 58,186,206,177,170, 21, 42,201, 90,160,106, +106,214, 93, 71, 99, 13,104, 35,238,159, 43, 49,214,220,141,167, 12, 97, 73,212, 75,196, 92,128, 59, 37,216, 71, 89,139, 46, 76, + 10, 65,191,250,178, 78,153,227,114,231,207, 53,151,119,204, 80, 12, 11,164, 28, 23,231,132, 20, 54, 97,150, 81,151,156,248, 2, +233,146,146,141,172,181,184, 40,174, 1, 67, 90, 45, 60,131,124, 77,253,155, 61,241,148,224,146, 25,101,156,230,130,178, 60, 43, +202, 80, 87, 37,244, 38, 65,182,138,168, 10, 86,216,234,101,138,148,138, 35, 35, 41,152, 98,192,145, 5,122, 85,154,137, 60,138, +109, 90, 24,241, 17,178,193, 79, 94, 10,140, 66,128,139, 94, 38, 2,202, 92,166, 71,185,188, 95,233,106,218, 52,239,205,101, 74, + 25,151,200, 18, 61, 91, 39, 67,121,238,117,233,134, 75,158,185, 49, 22, 31,166,229, 93,212, 90,186,233,156, 46,186,147,217, 34, + 39,184, 91,181, 64,129, 82,226,178, 87,223,159, 9, 49, 98,107, 57,203, 86, 20,107,117, 8,133,253, 46,149,128,181,182,228, 53, + 92, 52, 57,164,128,202, 17,146, 20,119, 33, 68,180, 51,216, 92,254, 15, 85,246,113, 97,154,112, 85,205,106,213,225,172,208,219, +198,105, 66, 91,129,209,164,148,100,143, 92,186,197,148, 2, 97,244, 24,157,151,170,126,174,224, 85, 22, 65,218,252,205,196, 40, +158,196, 20,161, 94, 87,108,183, 27,114,214, 60, 62, 63, 81, 57,203,185, 31,168,128,218,106, 14,193,163,141, 37, 18,137, 62,224, +106,199,185, 63, 22,178,143,196,207,233, 98, 63,152,146,140,228, 93,210,232, 98, 33,112,214, 20,148, 39,229,215,101, 76,241,249, +141,199,145,225, 44, 20,188,215,239,223,243,226,238,142,127,253, 47,127,161, 63,246,220,172, 58,186,205, 6,215, 53,172,214, 13, +255,246,255,254, 95,100,224,219,127,254, 3,231,231, 3,187,211,142,186,219,114,254,244, 17,149,133,128,166, 74,102,252,118,123, +203, 24, 39,158, 31,159, 25,135,145,202, 41, 42,235,104,107, 71,211,212, 28,135,129, 97, 26, 25, 71, 9, 86,152, 33, 19,202, 9, +136, 97,154,130, 60,156, 57, 17,181, 28, 30,202,232, 37,109,206, 24,141,181, 21, 83,206, 28,139, 24, 16,164, 26, 71,103, 26,231, + 48, 18,119, 33, 93,186, 49,203, 5, 97,141,194, 21,139,161,179,142,237,166, 99, 28, 70,118,135,211, 18,228,129, 86,172,214, 29, +206, 26,194, 56, 46, 25,218, 74,107,129,165, 92,177,190,157,181, 50,134, 52, 96,107,139,109, 42,161, 91, 5,217,233,229, 57,155, + 24, 93,172,142,197,106,163,108,241,163,206, 93,168,150,188,229, 28, 25,135,158,224, 71,214,171, 21,117,227,228, 97,183, 70, 4, +129,253, 64,142,130,244, 28,153,120, 60, 60,241, 98,123,199,106,181,194,247,163,164, 36,105, 77, 83, 55, 60, 63,239,120,222,237, +112, 85,195,155, 23, 55,252,238, 15,239,216, 52, 21, 58,122,170, 78, 8,137,211,121,226, 52, 40, 62, 62, 28,169,172,230,219,215, +119,172,106, 71, 26, 6,254,250,227,223,248,240,203, 39, 82,148, 24,197, 62,120, 92,211,242,122,187,101,219,214, 28, 79, 61,159, +239, 31, 56,238,247, 88, 39, 52, 70,157,229, 51,110, 42,139,107, 43,214,183, 45,102,246,158,107,201,146, 54,101,112,166,149, 46, + 32,151,114,192,124, 21, 10,113, 57, 4,229,226,142, 36,125, 65,194, 94,123,192,245,178, 27,140, 69,121,205,226, 25,215,186,180, +104,113,166, 47,241, 85, 18,155,196, 34, 95,132,120,121,161,186, 93, 41,229,185,136,221,114, 76, 92,231,176,204,130,187,139,240, + 79, 14, 99,169, 25,213,162,114, 95,178,218, 83,241, 53,231,204, 85,232,244,210,217, 47, 95,107, 49,223, 75,222,193, 56,121,142, +135,115, 25,149, 70,252, 20, 25,199,158, 97,156,208, 74,241,248,112, 36, 71, 77,183,169,201, 41,225,208, 52,214,240,229,249,192, +152,229,153,117, 74, 97,181,225,126,191, 35, 37, 77, 87, 59,140,213,252,245,195, 3,198, 89,186,166,102,119, 18, 65,235, 97,148, +236, 2, 31, 19,147,143,140, 49,225, 52, 75,244,165,192,171, 4, 78, 99, 92, 73,208, 50,134,151,235,134,109, 39,211,154,218,105, +156, 5, 21, 21,182,178, 84,141, 4,101, 41, 35,122,138, 56, 11,138, 89,144,125, 37,101, 60, 47, 34, 72, 9,164, 81, 69,127, 81, + 20,228,174, 38, 23,255,180,206, 69,189, 94,188,249, 57,138, 14,134,164, 23,249,123, 42, 51,230,184,224,122,229,162, 13, 33, 44, + 24,127,165,149,184, 40,202,122,111, 38,239, 73,144,202, 5,202, 50,207,171, 51,241, 98, 53, 75,178,171, 78, 41, 45, 23, 59, 89, +244, 83,185,140,224,103,160,194,204, 70,176,166, 16, 20, 67,105, 16,144, 76,117,157,212,226,181,207, 73, 82,199, 50, 48,133,128, +211, 10,231,170,139,134, 39, 36, 76, 33,254,197,148,153,130,151, 36,200, 40, 88, 86,165,141, 16, 57, 67,201,227,200,178, 50,208, +204,207,183, 94,242,213,211,149,247,156,175, 10,223, 75,144, 80,240, 97,153,134,164,148, 36,249, 77, 95,208,199, 41, 74, 83, 22, +141,104, 82,102,157, 11, 75,230,137,168,243,173, 53, 76, 83, 88,222, 51, 99,133,139, 50, 76, 19,206, 57, 14,135, 61,232, 27,172, +213, 28,207, 18,221, 59,127, 45, 83,242, 56,174,185,242, 57, 69,108, 22, 50, 96,158, 63, 59,103,176,106,222, 19, 40, 17, 95,248, +105,228,229,237, 55,116,171, 21, 33,100,206,103, 81, 67,119,174,162, 91,117, 66,116, 59,156,184,189,221, 10,119, 57, 6,194, 56, +161, 26,189,140,196,115,217, 13,234,226, 57,204,229, 67,237,189, 8,174, 84,138,108,186,142, 87,183,119,156,207, 39, 30,118,207, +228,152,152, 38,207,182,105,240,185, 0, 57,140, 99, 10, 19,138,204,241,212,227, 67,190, 98,201,103,108, 18,250,107, 72, 73,186, +124, 95, 30, 52,171,201, 58,211,159, 7,170,202, 72,197, 89, 54, 53,206, 90,206,251, 29,193,103,214,119, 45,223,252,135, 63,177, +127,218,243,116,255,136, 53,134,205,221, 29,117, 43, 65, 40,126,240,252,248,215, 31,248,238,207,127,100,251,250, 53, 31,255,245, + 71,172,173,136,126,226,249,233, 25,215, 84, 88, 83, 14,106,231,184,185,185,225,211,151,207, 60,220,239,137, 25, 26, 87, 97,181, +162,109, 27,124, 12,140,147,103,242,129,209, 71,208,154,201,123,140,146, 66, 36, 1,126,244, 75, 71,147, 75,117,110,203,225,111, +140,161, 50, 18,201,215, 79,158,168,114, 81,254,202, 30,165,178, 26, 91, 54,162,149,206,212, 70,232, 67, 49, 39,116, 22,143,166, + 43,244,183,182,107,200,198,242,244,180, 35,132,184, 28,226,171,166,163, 93, 53,132,193,203, 33, 60, 79, 11,202, 59,157, 74, 17, + 98,172, 22, 22,187,209,184,218,226,106, 39,208,143,156, 22,234,152, 70, 75,188,161,192, 11,165, 0,210,154,140, 39,150, 52, 16, +163, 13,168, 72, 84, 10, 63, 78,244,199, 35,117,235, 88,175, 90, 25, 49,105, 37, 83, 16,229,136, 62, 80,213,142,166,173, 73, 57, +178, 63, 13,220, 63,124,225,229, 77,194, 37,249, 51,170,186, 97, 24, 2, 79, 79,143,104,171,120,245,122,203,119,239, 95, 83,181, + 13,169, 63,178,222,174,132, 34,184,239, 9, 67,226,195,211, 4, 33,240,251,111, 94,177,233,106,114, 8,252,245,199,159,248,203, + 15,191, 72, 53,157, 97,127,158, 48,157,227,237,237,134,151, 55,107,198,209,243,249,254,158,221,241, 64,208,138,174,169,228,115, +205,153,186,118,100, 35,184,220,201, 71,234,166, 4,174,164, 84, 80,201,197,242, 57,219,105,210,178,160, 91,186,116, 53,199,176, +148,201, 73, 76,178,167,252,251,248, 84,217,179,139,125,140, 37,109, 85, 45,251,190,124,213,121,115,229,109,207,197, 94,131,186, +160, 96,175,199,245,179, 90,184,136, 96,228,123, 93,150,189,255, 24, 18,243,181,194, 62, 47, 30,223, 25,145,169, 74,231,119,233, +210,213,162,190, 87,165,232,204,177,116,163, 37,220, 99,206,112,247, 33,209, 15, 35,253,105,164,109, 42,124, 8, 12,231,158,211, +185, 71, 43, 17, 73,158,167,196,109, 93, 83, 41,197, 80, 44,143,187, 83,207, 97, 10,120, 52,149, 73,220,108,214,252,252,229,153, +211, 24,105, 93, 98,221, 53,252,244,176,231, 48, 12,188,123,185, 97,127, 58,113,242,137,148, 3, 99,148, 88,211,104,102, 82,152, +146,119,171,172, 12,140, 22,107,106,213,136,253,169,109, 21, 93,103,185, 93,213,116,141, 4,142,136,152, 74,132,116,206, 89, 89, +159,149,206, 51, 5,105,138,116,201,107,200,145,101, 26,150,151,139, 83,236,108, 75,187, 87,198, 53, 89, 25, 2, 9,147,138,245, +107,246,209,167, 80, 84,217, 23,139, 23,243,238,185,140,137,211, 60,210, 73,133, 64,150,202, 25,109, 21,198, 42,162, 47, 41, 96, +186, 92,104, 89, 23,132,145, 18,187,160, 94, 64,192, 50,221, 81,154, 56,239,159,165, 58, 93,112,198, 51,155, 95, 14,178,249,236, +239,100,191, 0, 0, 32, 0, 73, 68, 65, 84,162, 44,127,171, 44,231,157, 80, 79,101,186,228,140,172, 9,117, 9,106, 73,170,156, + 13,169,232,179,140, 20,206,243,202,206,135,136,109, 75,238,121, 33,105, 46, 36,193,100,168,157,147,175, 93,146,222,140,210, 24, + 61, 59, 52, 36,237,110,206, 16,152,125,240,243, 38,127,230,188,207, 59,247,172,228, 82,119, 11,113, 85,166,163, 66,122,203,139, + 26,222, 90,240, 41, 47,147,234,139,133,115,118,144,176, 56, 64,230,130,216,106, 75,136,129,227,238,192,171, 55,175, 36,126,213, + 75, 14,123,140,137,161, 80, 59,125,240, 56, 99,150, 21,222,188, 64, 48, 90, 84,240, 49,235, 69,171,146, 41,209,171,243,156,254, +116, 62,227,207,145,237, 31, 54,180,109, 43, 17,163,163,196,103,174, 87,107, 76,101,152,124, 64, 91,201,196, 69,101,226,232, 9, + 97,164,166, 19,111,161,154, 29, 46,229,177, 84,102,169, 66, 67,136,132,152, 49, 57, 81,213, 13,221, 77,203,253,243, 19,126,136, +120, 63,145, 38,207,234,246, 22, 31,147, 8, 11,128,105,154,112, 74,115, 30,199, 50, 74, 74,165,115,148, 93,238, 24, 70,217,121, +196, 36, 62,205,156,168,218,154,225,124,102,244,145, 85, 55,231,193,151,136,208,152, 25,251, 51, 97,128,247,255,195,159, 88, 53, + 53, 31, 63,126, 38,132,137,237,246,150,213,235, 59,136, 35,245,102,197,199, 95,126,101, 56, 29,248,243,127,255,159, 73,211,196, +254,121,143,181,150,135,167, 29,199,115,207,205,237,150,202, 25,148,142,180,171, 27,178,214, 60,254,118, 79,127,218, 99, 43,137, +139,109, 43, 71, 87, 85,156,253,200, 52, 37,134,193, 67, 82, 4, 5, 67,138,172,173,236,186, 39, 47, 64,157,116, 97, 15,201, 65, + 87,104, 74, 78, 57,180,177,140, 41, 45, 63,248,160,197, 0,170,213,124, 88, 42,106,147,169, 69,153, 83, 34, 13,193,105,168,140, + 92,170, 77, 85, 81,173, 28, 79,135, 19, 99, 31, 74, 34, 19, 84, 85,197,186,107, 80, 83, 36,205, 23,189,154,199,189, 23, 11,147, +209, 69,108,103, 52,166,146,157,162,228, 92, 71, 57,180,202, 72, 89,150,121, 90,236, 34,203, 62, 94,162, 65,209,151, 10, 84, 41, +136,211,200,208, 15, 24,171,168,235,170, 68, 36,170,146, 39, 12,195,249,132, 87,137,237,237, 45,214, 26, 98,152,168,234,134,227, +126, 36, 14, 3, 74,105,172,173, 81, 90,179,223, 63, 49,229,204,221,171, 59,126,255,221, 43,222,188, 90,147,247, 7,170,109,131, +174,106,250,253,196,120,142,124,124,234, 25,199,137,223,191,121,201, 77, 87, 65, 12,252,245,135,159,249, 47,223,127,148, 56, 67, + 52,199,222,227, 26,199,139,155, 45,175,214, 43,124,246, 60, 60,239,121,122,126,226, 60,156,169, 87,107,185,248, 66,160, 94, 55, + 84, 77, 69, 32,115, 26,122,134, 97,160, 91,175,208,133,197,174, 98,209, 23,104, 45, 26, 19,173, 23,133,186,154,195,207,148,176, +187,101,164, 56, 19, 16,245, 18, 60, 65, 65,159, 94, 34, 78,175,252,219, 73, 2,127,102,218,212,236,119,230,226, 70,159, 79,169, + 66, 27, 99, 17,237, 80,198,139,249,234,114,206, 37,171,121,206,105, 23, 56,206, 5, 37,123, 17,194,165,229,249,144,130,165,196, + 79,146,201, 49,148,162, 33,255, 67,135, 63,119, 74,204,130, 65,115, 25, 1,199,152, 25,166, 1, 63, 69,158,158, 79,196, 56,226, + 26, 39, 68,184,243, 89,166, 6,202, 16,162,197,217, 72,109, 69, 61, 94, 89,135, 15,240,176, 31, 25,178,168,166,223,108, 87,252, +242,180,227,254,169,167,170, 20, 93,221,112, 26, 60, 63, 60, 14,108, 93, 69,244,240,124,158, 24, 75,208,211,188, 49,202, 74, 96, + 36, 85, 9,105,209, 58, 97,147, 60,195,117, 87, 99, 43,131, 49,154,186, 10,172, 42,209,204, 56,167,175, 34, 70, 37, 34,215,205, + 7, 57, 34, 58, 12, 33,145, 98,196, 25,169,116, 98,138,228, 84, 68, 96,139,240, 42, 94, 14,239,242, 14,106,125,121, 6, 18, 17, + 82, 34, 4,177,152,154,108,174,136,193,165,211, 87, 23, 82, 28,101, 52,159, 83,150, 8,228, 50, 41, 80, 78, 46,245, 20, 47,168, + 97,165,103, 21,253,124,177,205,188,131,153, 93,240,181,189,113, 25,205, 43, 37,201,119, 74,214,133,106,137,240,205, 75, 49,160, +181, 52,129, 26,133,202,102,161,171,181, 78,196,140, 57, 9, 18, 59,229, 76, 93, 88,231, 83, 76, 40, 43, 49,211,190,232, 7, 82, +138, 56,163, 74,193,155,240,195, 40,251,229,249, 98, 47,123,232,152, 19, 24,131, 78, 89,196,138, 6,130, 23,214, 71,249, 88, 80, + 81,246,243, 41,170, 37,187,125,126, 14,103,143,249, 44, 38,149,169, 99,198, 89,137,128,157,167, 29, 41,133,226,233,175,136,113, + 18,122, 94,153, 78,204,104,180, 28,197, 61,160, 74,218, 97, 74, 1,146,163,170,107,206,231, 1,103, 45, 86,137,134,160,109,106, + 98,140, 11, 63, 36,196,176, 96,195, 23, 30, 68, 17,202,104,103,209, 62,149,149, 86, 32,133,136,157,213,213, 10,196,243,167, 20, +109, 43,149,111,140, 19,147, 15, 40,165,105,187, 22,107,173,196,102, 42,233,248, 66,152, 8,147, 47, 60,219,107, 74, 84, 68,229, + 9, 31, 43,188, 82,104,107, 80, 89,246,130,147, 18,197,229,237,122, 77,187,221,242,183, 15,191, 48, 5,233,246,155,186, 94,176, +119,198,182, 2, 18,152, 60,217, 26,198,209,151,172, 92,169, 90,107, 83,227,131,151, 78, 84,214, 10, 96,101,236, 87, 57,199,110, + 10, 68, 34,217,232, 98,187,136, 88,235, 48, 62,114, 60, 29,121,253,110,205,235,111,222,113,122,124,166,239, 39, 50,154,219,155, + 91,114, 81,103,214,206,242,240,243,111,188,120,245,138,219, 23,119,236, 63, 63,144, 85,162,170, 90,246,251,125,225,222,139,125, +195, 86,208,221,174, 56,238,142, 60,125,124,192,144, 49,117,133,213,154,182,171,240, 38,208, 31, 39,134,105,194, 79,145,172, 21, +163, 23,161,140,100,190, 23,229,232,252, 24, 41,217,137,219, 34, 70, 49, 70,172,120, 49,195,152,162,140,228,181, 20, 85, 73, 23, + 0, 79, 12,104, 3,149,109,208, 70, 21,209,139,188,212,181,213, 84,218, 81,213, 14, 87, 59,134,147,167, 63,247, 68,146,136,216, +172,162,235, 26, 65, 67, 78, 30, 37,241,220, 75,136, 72, 44, 8, 80,137,140, 21,174,124, 85, 57, 89,193,132, 40,159,179,158,173, + 55, 18, 3, 8,102,217, 53, 37,164,136,137, 64, 42,235, 0, 99, 44, 86,123,194, 20, 24,250, 17, 99, 20, 77,181, 18,184,111, 40, + 23, 97,182,132, 62,114, 62,156,232,154,138,245,237, 13,164,136, 31, 12, 74, 57,152, 20, 99,239, 81,198, 80, 89,216,221, 63,112, +216,239, 89,175,111,248,246,221, 75, 94,189,222,226,159, 15,172, 58, 67,189, 94,227,207, 3,211,144,120,120,158,184, 63,245,252, +254,238,142,219,205,138,152, 53, 31, 62,252,194,127,253,241,111,162,216, 79,138, 47,253,128,194,241,126,189,225,229,102,141,118, +142,199,135,103,118,207,207, 28, 78, 3,166,174,165, 82, 14, 17, 91,201,202,199,186, 10, 99, 50,207,251, 71,110,182, 29,119,219, + 13,201, 88, 84, 86,151,203,107, 30,146,167,171,238,185, 20, 76, 90,107, 81,181,207,254,217, 2,118,201,197,113,112,125,137, 95, +143,247, 68,168,163,150,157,122,158, 57,236, 89, 93,225, 97, 47, 9,112, 75,170,213,236,167, 45, 34,173,249,251,186, 88, 83, 75, +200,203,188, 95, 47,221,221,252,107,231,233, 3,200,251, 95, 48, 55,232,164,254,125,154, 92,193, 53,207,251,125,161, 60,150,226, + 35,103,130,159, 24,189,231,124, 10,140,131, 71,169, 76, 63,246,180,237,138,216, 39,198,126,144,166, 64,151,203, 37,229,133, 18, +230,176,152, 36,241,188,135, 48,145, 73, 98,139,245,138, 31,126,250,204,186, 91,179,114, 53,149,181,252,120,255, 72, 84, 17,103, + 90, 78,211,200, 41,137,248, 86,151,140,199,202,106,156, 19,192, 83,211,200, 42, 15, 45, 98, 51, 99, 52,117,171,112, 36, 42, 7, +171,149,208, 26, 43,101, 22,151,135, 65,227,231,159, 39,150, 84,132, 99, 41, 38,130, 15,226, 12,201, 82, 60,139, 13, 76, 72,114, + 57,137, 29, 53,133,114,145,232, 84, 0, 45, 81,138,199,178,250, 20,231,138,136,196,132,124, 86,232,102, 6,130,202,203,148,100, + 30,129,171,156,139, 5,184,116,116,161, 8,222,156,136,200,114,138, 82,140,163,201, 89, 80,170, 42,235, 82, 3,166, 69,239,148, + 19, 92,100,228,105,153, 36,228, 50, 77, 80,204,170,244,249,121, 45, 15,204, 12,149, 81, 10, 99,139, 88, 66, 25,198, 36,147,129, +218, 40,198, 4, 99,144,231, 86,145,160, 64,107,194, 20, 81, 86, 10,197, 28, 3,170, 49,196,232, 37,208, 38,103,166, 24,232,199, +113, 89,219, 76,126, 98,149, 59, 97,169, 23,194, 41, 69, 53, 46,231, 89, 65,213, 42, 17,240, 46,150,173,235,153,211,162, 29, 17, + 76,223,140,223, 21,125,136,176, 14,156, 54, 50, 69, 12,115, 68,177,216,121,117,212, 87,124,150, 75,102, 1, 37,107, 93,205,235, +166, 98, 21,173,172,229,112, 60,200, 68,211,186, 2,231,201, 84,117, 35,171,234, 82,176, 41,101, 80, 70, 23,203,235,204,245, 55, + 69, 80, 91,172,123, 18, 49,138, 93,212,184,104,162, 15,212, 38,211,117,107,148, 49, 76,167, 51,207,187,103,148, 53, 84, 37,213, + 44, 78,190,164,199, 24,114, 31,137, 33,200, 78,151,139,217, 62,102, 69,206,174,236,236,202, 67,155, 34, 99, 14,248,144,105, 26, +195,237,203, 27, 72,153,243,113, 32,249, 64,244,129,182,174,153, 50,160,197, 34, 53,150, 36,182, 56, 5, 66,244, 69,145,105,112, + 86,172, 80,231,105,194,150, 68, 40, 65,226, 90, 98,217,211,134,105,162,182, 66, 60, 35,136, 26, 84,107,197,216,247, 24,101,121, +243,135, 63, 50, 78, 35,195, 73, 50,133,155, 85,199,139,215,119, 28,158, 30,105,191,125,205,195,195, 51,167, 97,224,155,119,223, + 98,173,229,241,241,153,108, 45,227, 56,242,184,123, 66, 89, 67,109, 29,202, 40,154,118, 75,109,107,190,255,241, 7,142,253,128, +171, 42,106,109,104,106,195,186,105, 57, 15, 35,227, 32, 80,156,132, 98,138,137, 24,179,240,194,173,226, 20, 50, 41, 20,149,120, +138,114,169, 39,133,206, 51,119,187,146,159, 79,206,164, 88, 44,101, 86, 99,201,248,116, 81,103, 54,149,193,150,195, 83,172, 30, +153,198, 86, 88,227,168,157,165,174,164,147,220,157,197, 62,145, 20,146,139, 92,215, 52,133, 73, 48,171, 62, 41, 63, 51,233,218, +132,211,172,149,120,114,181,147,245, 71,200,178, 26,153,145,148,243,174, 52, 71, 48, 42,200, 75,142, 96, 19,147, 74, 50,174,203, +178, 36, 72,102, 36,100,232, 79,242, 60,213, 77, 7, 57, 48, 77, 99, 17,144, 25,114,244,156,206,103,140, 82,212,174, 66, 69, 47, + 30, 95,103,137,251, 64,242, 18, 23,234,140,163, 63,246, 60,238,158,209, 77,205,251, 63,190,230,253,171, 27,226,211,129,182,214, +220,221,189, 36, 76,129,195,209,179,219, 7,158,251,137,119,155, 53, 47,214, 29, 38,101, 62,252,246, 11,255,246,195, 7,194, 52, + 97,180,102,119, 26,201, 89,243,242,197,138,155,117,139,179,154,231,221,142,167,231, 61,135,254,136,115, 10,227, 44, 42, 6,172, + 46,142, 0, 45, 92,108,101, 52,142,134,251,231, 61,119, 47,239,184,109, 26,233, 74,202, 75,172,148,145,207, 87, 93,152,214, 75, + 71,149, 33,196, 80, 4,142,101,170,145, 47,255, 44, 22, 56, 46,144,154,203,172,176, 8,149, 10,125,172,104,232,191,222,123,207, + 61, 83, 86, 5, 8,146, 22,244,235, 50, 78,215,146, 5,159, 10, 25,139, 18, 38,164,174,126,221,188, 23,215,165,240,200,115,116, +164,214,162,163, 81, 98,185, 91,166,254, 37, 53, 77,133, 11,162, 83,105, 37,214,212,162, 18,243, 62,178,223, 75,206,125, 93, 25, +110,111, 91, 78,231,128,177, 14,136,156,199,129, 92,114,239, 99, 84,133,165,151,197,227,158, 19, 93,229,248,109, 63,240,212,159, + 25,166, 72,163, 12,171,141,229, 95,127,249,130,114, 14,103, 53,117, 91,241,121,119,100,119, 20,223,243, 33, 12, 34, 46,181,149, +232,142,144, 46,175,210,134,182,210,172, 55, 21,174,178,179, 36, 0, 29,132,132, 89,219, 68, 87,215,116,109, 77, 93, 87,139,248, + 79,207,214,218,197,191,159,136, 57,144,162, 70,165, 32, 43, 56,239, 23,164,182, 15, 19, 57,106,140,171,209, 81,254,144,144,228, +194,206,204,106,237,226, 84,136, 10,116, 16, 33,120,148, 93,178,159,181, 77, 81, 19, 51, 16, 77,193,254,114,165,160,151,139,124, +182, 1,231,114,145,229,185,104, 95,210, 67,229,231, 97, 82,137,179,205, 17,147, 51, 6, 51, 79,237,201,170,128,134, 74, 65, 58, + 91,229,200,133, 46, 87,184, 6,255, 63, 87,111,214, 37,199,117,101,105,126,119,178,193,221, 99, 2, 72,136,162,164, 76,101,173, + 92,245,255,255, 75, 87,119,173, 94,213, 89,153,165,212, 64,130, 0, 98,112,119, 27,238,216, 15,231,152,121, 32, 31, 40,137,146, + 24,136,240, 48,187,247, 12,123,127, 91, 58,229, 45,231,222, 41, 58, 85, 10, 63,172,133, 34,171,131,210, 10,222,130, 13,158,146, + 97,105,234,230, 81,176, 85, 77,149, 92,192,133, 78,112,228,198,208,170,131,156, 37, 38, 27,209, 33,229,184,202,199, 3,196,165, +145, 11, 52,132,163,110,140,161, 57,185,240,156,149,103, 50,215, 70, 64,158,241,218,138, 20, 59,214,226, 61, 16,165,219,199,216, + 93,132,220,138,219,115, 23, 74,149,223,136,113,117,211,185,235,159, 45, 22, 1,235, 12,134,132,221, 83,190, 55, 27,105,221, 21, +240,219,148,173,214,140,237, 2,203, 85,162,191,189,247, 92,215,196, 49, 70,194,182, 90,123,183,150,145,162,223,127,151,139,176, + 69,156, 59,157,130, 86, 26, 94, 94, 48,217,199,150,152,233,130,231,254, 81,212,160,243,178, 82,114,165, 15, 1,223, 5, 17, 64, +149,170,217,235, 70,114,128,115,194,121,127, 11,150, 80, 17, 69, 53, 86, 89,252,109, 71, 1, 10,243,189,208,159, 70, 30,238,143, +212,156,153,166,153,203, 52, 97, 59, 65,171,230,101,165, 27,122,214, 90,149,161,140, 86,180, 26, 14,111,165,138, 94,214,168,114, +126,243,157,237,198,232,131, 28, 83, 34,116, 97,183,177,236,180,161,152,248,241,231,159, 25,124,224,229,245,194,125,255, 72,173, +142, 79, 63,254, 64,108,137,102, 13,143, 15, 15,252,143,255,241,255,240, 48, 30,132, 74, 87,196, 83, 30,124,207,203,231, 95, 72, + 49,131, 15,244,157,151, 32,147,195,200,186,172,124,254,245, 87, 42, 77, 35,107, 13,135,177, 35,149,194,186,102, 98, 42,228, 88, +104, 77,118, 66,206, 66,215, 57,217, 9,173, 9,191,113,180, 53, 14,192,153,119, 25,213, 78,184,205,177, 36, 5,217, 4,138, 21, + 17,209, 6, 64,232, 67,135,195,171, 96, 66,254,187, 78,211,161,122,111,233,135,142,102, 44,151,105, 18, 26, 83,147,196,164,190, + 11, 74,106,147,177,160, 53,104,197,254, 46, 89,203,200, 78, 45,116, 30, 31,156, 4,130,213,188,123,255,141,118,147, 24,221,139, +109,123, 41, 39,187, 62,153, 11, 55, 21,252, 68,181, 61, 86,226, 42,193, 60,195,177,167,228,149,165, 70, 29,255, 73,215,185,204, +146, 64,117,186, 59, 97,109, 35,165, 85, 70,116,139, 33, 93, 87, 69, 15, 59,210,186,242,250,242, 70,181,158, 63,254,241, 19,191, +255,233,129,120,121, 99,164,114,127,255, 35, 41, 53,150,107,230,229,121,229,249, 60,243,225,254,200,199,187, 35,126,232,248,235, +223, 63,243,239,127,249, 43,243, 60, 1,150,111,211,202, 92, 42,159, 62, 62,241,116, 26, 57,140,158,243,101,225,249,245,149,243, +245, 76, 42,153,110,232,247,157,165, 11,157,156, 91,220,180, 36,206, 7,210,154,184, 92,206,220,221,221,203,126,176,233, 69, 93, +170,166, 17,219,239,112,174,230, 29,140,166,170,168,201,234, 72,214, 40, 15, 92,198,186,239, 12, 57, 91,150,248, 38,150,121,119, +225,191,207, 45,175, 27, 87,190,202,161, 92,155, 20,218,212,239,137,116,155, 95,222,238,222,102,189,216, 43, 42,106,170,123,102, +115,211, 64, 12,233, 70,244,189, 83, 75, 85, 41,249,166, 3,216,212,198,170,163, 48, 78, 45,122, 70, 10,254, 77,244,115, 62, 79, +188,189,205,140,135,192,253,105,196,121, 88,150, 69, 40,102,173, 96, 76,165,235,122,210, 10,165, 37,181,117, 85, 13, 23,177, 92, + 19,124, 62, 79,172, 73,232,111,132,192, 95,126,249,198,151,183, 43, 79, 15, 71,142,131,227,178,204,156,215,200, 48,122,146,106, + 17,250,190, 23,120, 73, 78, 96, 61,193, 88,198,222, 50, 30, 60, 67,176,180,154, 72,165,225,155,132, 49,141,131,227,120,232, 25, +134, 81,196, 75,202,112,144, 85, 87,209, 26, 75, 60,217,155,104,177, 21,233,116, 99, 78, 26, 94, 34, 68,201,156, 35,224,233,188, + 98, 92,179,164,190,149, 82,183,143, 86,139, 65, 75,140, 21,219, 34,212, 36,150,208,218, 84, 15, 83, 84,127,227,113,201, 82, 93, +163,233, 36, 3, 45, 14, 69, 24,102,112, 77,210,206, 64,186,202,198,246,231,180, 29,205, 43, 95, 59, 83,116, 5,224,155, 85, 59, +153,213,177,241,187,162,206, 88, 41,132, 84,161,109,155,209, 73,220,254,197,160,218, 61, 85,208,234,110,127,203, 37,175,165,236, + 65, 60,187,165, 19,110, 25,242, 85,166, 4, 88,177,115,225,197, 9,229, 76, 16,215, 68,107,196,101,165, 36,153,100, 96,192,153, + 70,202,133, 92,147,188, 31, 77,178, 13,173,187,217, 74,107,219,203,141, 61,120,184,238,159,215, 59, 41,131,181, 88, 44,169,233, + 68,197,186, 93,236,105,173, 83,253,129,124,189, 44, 14,238,119,221,248,141, 44,103,204,198,147, 71,236,182, 58, 49,201,165,210, + 43,175,225,219,243, 51, 79, 63,220, 19, 99,210,148,193, 70,169, 98,247, 19, 1,163,132,203, 8,218,168,170, 30,161,233,154, 72, + 10, 42,171, 19, 56,207, 59,244,227,245,122,225,225,233,137,190,239, 49,192, 60,137,234, 52,132,142,174,235, 72, 73,149,207, 33, +144,115, 35, 71, 65,244,109,202,104,179,239,211, 21, 94,175,172,104, 99, 45,177, 20,193,223, 53,184,187,127, 96, 24,143, 76,115, +100,158,103,214,117,225,241,116, 47, 35,102, 19,193, 90,150,117, 38,107,238,186, 84,183,186,171,115,150, 86, 4, 75, 24,188,135, + 37,237,227, 8, 99,161,247, 66, 29,138, 57, 42, 86, 80, 84,130,219,126,218, 13,158,251,199, 59, 94,158, 95,112, 15,247, 24,239, + 25,108,224,116,119, 39,150,130, 15,143, 44,215,153,243,203, 11, 63,127,248,128,247,142,249, 58, 97, 72, 4,231, 57,159,207,194, + 35,246,134,224, 45,195, 56, 50,220, 31,249,199,127,252, 39,151,183, 11, 93,232,233,130,167,239, 28,131, 15,172, 41,177,172,137, +152,164, 64, 73, 42,150, 26,188,140,245,174, 49,147,107,193,219,186, 63,112,206, 42,217,203, 89, 81,139, 59,217,229, 52,107,232, + 7, 25,245,198,184,144,245,197, 27,130, 39, 56,222,193, 8, 26,157,162, 97, 59,103, 25,122, 73,165, 91, 82, 98,141, 81, 69, 88, +162, 68, 29,251, 65,146,145,138, 40,168,173,134,134,180, 34,187, 94,177, 53, 53,124, 16, 37,175, 11,226, 37, 69, 69, 67,173,106, + 28,168, 41,250,138,176,147,199,196, 32,171,103,255, 6, 69, 49, 34, 11, 74, 75, 34,231,130, 11,158,180, 22, 74, 90, 68, 43,225, + 28, 14, 41,202,114,174,244, 99, 79,201, 11, 75, 91,101, 79, 89, 61,203, 57,146, 22,169,194, 75, 42,156,207,111, 92,115,228,211, +239,127,224,119,191,123, 34,191,190, 97,215,133,135, 63,124,162,243,142,235,146,248,237,203,149,231,151,149,135,135, 3, 15,163, +228, 45,255,231,223,127,229,175,191,124,230,124,153,168,181,113,157,103,158, 47,145,223,255,238, 35,143,199,145,187,174, 99, 94, +163, 92,232,231, 55,150,180,224,130, 36, 19, 58,107,112,189, 23,177, 81,240,108, 0,184,224, 4,207,217,225, 36, 8,169,100,137, + 87, 45,234, 77, 51,194,109,216,242,211,183, 21,135,176, 32,138, 22, 63,238, 22,119, 90, 43, 24,101,197,151,119, 35,207,253,159, + 55, 55,148,236,187, 4,179, 91,135,190,203,121,119,145, 14,219,212, 64,109,138, 91, 17,216,116, 93,179,101,180,111, 62,245, 45, + 48,102,235, 24,170,142,203,173, 66,114,154,101,103, 23,108,106, 96,175,225, 38,117, 27, 67,155,141, 93,113, 83,203,163, 59,224, +235,117,230,252,182,208,247,134,211, 97,192, 26,184, 92, 22, 82, 46, 98,179,180, 6,111, 3,215, 34, 93,172,113,149,156, 42, 49, + 37, 58, 43,151,214, 63, 94, 47, 92, 98,150,184,226, 26, 57, 79, 87,114,169,140, 67,192, 59,233, 97,174,171,164,163,209, 36,225, +234,110, 60, 16, 58,249, 29,246,122, 32, 31,189,167, 27, 20,208, 84,155, 0,102, 58,135,109, 86,108,108,163,167,235,220,173,248, +210, 67,189,181,219, 69, 85,114, 98,251, 85,137,134,160,208, 74, 35,166,188,139, 4, 83, 74,228, 82,232, 59, 67,215,139,238, 36, + 41,243, 67, 46, 51, 37,160, 89,153,236, 77, 57, 97,115, 17,254,183,177, 50, 77, 41,133,208, 11,116,203,109, 18,182,162,211, 22, + 35,142, 26, 48,212,102,229,114,173,101,231,195, 91, 5, 5,109, 26, 7, 57,115,204, 59, 60,111,221,139, 84, 54,189,196,123,205, +101,187,213,130,230,221,196,200, 24,222, 17,233,164, 32,104,165,106, 49,171, 74,120, 37, 34,202,125,237,118,129,101,221, 80,182, + 58,105, 40,181, 98,157,252,127, 10,114, 46,138,255, 92,120, 1, 13,195,229, 50, 97, 75,222, 71,229,219,123,178,228,140,119,114, +247,184, 77,180,230,156,104, 79, 76,123, 39, 0,229, 93,222,128,174,141,116,220,238,204, 22, 80, 84, 40,181,224, 67, 64,113, 39, +132,205,110,134, 80,249, 54,214,190,181,117,111,198, 90, 51,239,254,179, 60, 95,118,203,144, 87, 97,155,243, 22, 99, 2,151,235, +204, 79, 63,255,128,247,179,114, 35, 12, 37,167,253,123,145, 71,193,210, 90,150,230,160,241,238, 47, 43, 98, 72, 26,185, 85,188, +216, 80, 68, 24,113,190, 92,248,249, 15,191, 35, 72,155,200,162,222,191,190,235, 25, 14, 7, 37, 50, 85, 66,215, 81,114, 36,197, +168,194, 25,249,130,238,157,106, 87,252,166, 86,108, 46, 86,198, 67,219, 72,248,225,120,226,112,119,224,109,186, 50, 77, 51,166, + 84,130, 15,180, 90,241, 65,172, 76,171,238,234, 75, 17,171, 66,112, 65, 71,195,178,143,246, 33,208, 59,203, 53,205, 50, 30,211, +203, 35,132,142,188, 70,214, 53, 18,252, 64,202,137, 86, 10,214, 5,156,115,220, 61,220,243,118,126,227,242,124,225,247, 63,255, + 68,179,142,110, 24,240,214, 83, 91,229,225,227, 7,254,227,223,254, 55,189, 90,149, 76,131,101,154,112,190, 35, 45,137,243,235, + 43, 77, 83,119, 14, 67,199, 56, 30,137,105,225,215,223,126,165,213, 42,150, 38,103, 25,250, 14, 99, 12,203, 42,151,122,202,137, + 12,196, 42,196,179,161,235, 73,185,178,172, 73,132,112,222, 19, 83, 20, 4,167, 85, 29,187, 42,227, 49, 18, 99,218, 7,217,101, +167,156, 88,179,236, 94,130,115, 12,161,211, 96,196,130, 41,150, 96, 69,129, 27,172, 97,232,100, 93, 17, 75,230, 58,205,186,203, +149, 46,106, 24, 37,223,185,106, 20,110, 80,235, 84,209,175, 45, 15, 53, 34, 10,234, 45,206,139,223,117,137,171,140,157,155,142, +123,219,198, 74, 46,187, 16,174, 97,176,185,237, 47,106,209,137,130,177,142,146, 11,121, 77,242,206,183,200, 26,219, 62,150,221, +186,144,205,198,209,136,172,235, 5,235, 28,157, 59,210,178,103,157,197,159,107,155,227, 58,173, 92,151,196,135, 31,158,248,195, +159, 62, 96,227,140,185,156,249,240,233, 7,186,174, 35,151,194,183,223,174,124,121,153,121, 60,157,184, 31, 6,156, 55,252,242, +249, 43,127,251,237, 43,175,175,175,228,156,153, 99,225, 53, 70, 62,125,250,192,227,233,200, 16, 28,201, 22,222, 94,206, 76,211, +149,105, 89,192,111,240,157,204,113, 28, 9,189, 39, 21, 13, 20,178,130,119, 60,132,145, 32,146,102,188,151,113,168, 17,162,135, +210,189,212,213,237,252,247,211, 16,187, 5,162,168,216,201,154, 93, 32,103,182, 48, 21,117, 36,200,127, 46, 91, 59,113,235,248, + 77,253, 78,136,246, 95,243,203,219,119,226,157,114,163,200,237,108, 90, 17, 59, 85,243, 62,250, 85,173,107, 42,194,222,212,249, +213,220,196,118,141, 42,161, 67,141,125,154, 38, 93, 87,253, 14, 80,179,237,243,205, 22, 78, 89, 27, 37, 23,201,147,238, 12,135, + 99, 79,240, 66, 92,140, 73,130,140,140,173,244, 93, 71,201, 50,210,244,193, 50, 47,149,235,188, 80, 75,229,208,117, 44,235,196, +235,180, 96,144,248,224, 37, 37,198, 62, 80,157,167,179,208,123,199, 84, 42,197, 90,241,245,150,198,105, 28, 56, 29, 28,198, 75, +113,227,109, 32, 56,177,191, 89,167,145,176,128, 53,221, 59,219, 82, 16,191,123,107, 80,100,165, 87,236, 38, 78,107,218, 61, 87, + 73,244,106, 50,205, 74, 37, 75,232, 74,134,168,185,170,181, 84, 82, 78,196, 82,120,242, 3,193, 58, 98,147,152,208, 92, 42,185, +202,202, 75, 34, 61, 27,111,243,194, 89,237,157,102,243, 61,171, 5, 45,212,134,141, 70,246,224,126,101,232,253, 30,199,140, 2, +139,130, 15, 56,235, 40, 24,154,145,177,181,169,178,135, 47, 57,137,104,211, 26,197,125,203,206, 63,103,233,162, 77, 80,135, 92, + 43, 34,150,211,112, 22, 76, 83,104, 16,183,189,113,187,117,252, 24,153, 66,138, 80,206, 80,177, 50,237,107,142, 88, 12,169,100, +217, 17, 91,139,173, 13,107,171, 92,244,102,155,230,200,243,225,130,195,122,225,161,123,188,100, 5,104, 72, 75, 74,133,243,249, +194, 93,176, 4, 19,110, 19,130, 86,136, 41, 82,171,165,239,251, 61,213, 44,120,175, 60,121,181,124,234, 59,149,155,228,144,108, +176, 29,121,222,111,153, 5,108,252,121, 99, 40, 70,249,244,134,189,251,150,240, 43,203, 22,110,224,252, 13,230, 3, 50,217, 20, +247,130,248,241, 91,189, 21,191,100, 8,131,103,154,102,177,234, 41, 57,206, 91, 79, 73, 82,228, 89, 47,223,131,179, 86,133,179, +146,120, 87,148,190,104,245,189, 46,166, 73,131,216, 84,204,212, 98,196, 97, 25,199,131,132,158, 24,195,249,124,129, 6,195,113, + 84, 79,102,101, 89, 22,186,113, 32,165, 68,138, 34, 72,177,246, 22,238,172,191,111,137,207,203,178,163,245,206,176, 46,178, 71, + 54,214,114, 24, 6,114,129,231,231,103,166,243, 69, 19,126, 36,149,192, 89,203, 18,101,236, 95,115, 35,229,164, 85,167, 37,103, + 9,128, 40, 20, 30,143,143,228,180,202, 40, 66, 71, 62,161,243,248,206,178, 94,102, 33, 40,245, 18,116,159, 83, 98,112, 29,227, +225,128,247,158,191,254,237, 87, 30,239, 31, 5, 57,234, 28,135,211,145, 76,161,239, 59, 50,149,175, 95,190,242,241,225, 65, 38, + 7,235,202,186, 68,220, 56,240,245,183, 95, 56, 95, 23,154,147,238,254,225,116,196, 29, 58,126,251,229, 51, 47,191,189,210, 15, + 61,190,151, 75,189,243,142,152, 11,235,154, 88,210, 66,110,141, 36, 72,102, 14,193,225,172,225, 58,175, 20,165,192, 89,227,110, +208, 3, 35, 83, 14,107, 28,174,243, 20,228,255, 51,142, 3,185, 21,230,188,168, 50,218, 48,120, 47, 35, 79, 29,217, 7,199,206, + 94,238,189,151, 11,223,192, 60,173,226, 79,213, 60,222, 97,232,232,135, 78, 42,215, 34, 9,119,198,234,133,190, 83,165,196,147, +217,117, 14, 23, 12, 41, 69,214,152,121,121,123,227,233,233,132,247, 18,114,145, 91, 86, 81,158,100,172,167,170, 59,241,150, 49, + 77, 30,246,172,137,100,165,136,126, 2, 5,238,148, 77,137,186,237,234,106,166,228,170, 25,237,134,245, 18, 1,203,208,141,100, + 59, 83, 83, 16, 79, 52,150, 18, 35,243, 52,113,122, 58,241,195, 31, 62, 96,215, 72, 57, 95,248,248,187, 39,198, 67,143,181,129, +223,126,123,227,243,111,145,195,216,241,113,236,112,222,240,183, 47,207,252,246,245, 27,111,111, 51,243,180, 50,199,149,115, 50, +220,223, 63,241,225, 52, 50, 6,143, 9,129,183,215, 87,174,211,204,178, 46, 24, 47,207,104, 45,149,195, 48, 48,140, 61,135,251, +145,101,205,196,148,176,157,219, 17,161,227,208, 81, 77,163, 27,122,237, 56, 36, 23,161, 82, 20, 17,233,110,126,241,173,154,111, +155,119,219,106,134,116,219, 33, 62,214,105,126, 66,107, 58, 51,108, 55,235,141,230,144,183, 93,102,201,119,151,185, 28, 82,178, +119,126, 23, 76, 37, 69,112,105,251, 24,123,239, 42,119, 49,157,218,113,106,217, 3, 94, 44, 55, 34,151,249, 47,121,239, 70, 45, +143, 70,119,134, 77,119,143,178,103,102,135,118,136,117, 86, 4, 95,141,198,117, 94, 73,107,165, 27, 61, 33, 56, 98,150,207,179, + 20,105, 18,172,247, 84, 21,225, 57, 87, 73, 83,102, 90, 35,115,174, 28,156,161,180,200,229, 90,136, 89,186,201,101, 78,220, 29, +123,140,109,184, 96,233,173,215, 20, 25, 85,248,151,198,208, 5, 14, 7,135,115, 5, 99,101,172, 57,120, 75,103, 53,247,192,216, +237, 53,209,248, 83,135,243, 21,235, 33,215, 34, 99,108, 21,140, 39, 20,252,161, 13,207,186, 38,182,244,218, 53,102, 82,169, 82, + 36,213,130, 35, 96, 49,228,154,201, 72, 78, 68,201,150,181, 46,196,181,112, 61, 95, 89, 82,161, 84, 17, 19,123, 44,107, 41, 76, +243, 66, 53,134,164, 72, 80,139, 68,110, 26, 3,217, 84, 90, 52, 92,215,134,237, 10, 79,237,192,193, 75,225,127, 89, 11, 7,215, +120, 60, 53, 66,240, 56, 59, 72, 81,229,197,166,150,162,232,148,134, 49,236,103,118,169,137,148,171,118,157, 78,153,226,150,170, +129, 78,125,144,203,179, 52,229,211, 35,182, 84,245,230,189,183, 91,236, 43,169,170, 23,224,142,155, 70,154,189, 16, 28, 94, 45, +112,205,212, 61,123,220, 20, 41,254, 10,146,108,183,219,233,212,151,110,172, 33,120,129,139, 45, 75,228,228, 15,234,237,151, 51, +197, 91, 71, 74, 66, 42,236,251, 94,207,162,138,117, 14,220,187,130, 87, 57, 17, 86,119,227,239,115, 22,182,224,155,247,193, 44, + 34,163, 20,225,175,125, 63,168,175, 21, 69,134,224,144, 41,130,216,221,138, 6, 26,249, 93, 59,227,172,147,142, 58,179, 79,162, +189,119, 44,113, 37, 71,185,212, 99,203,123,114, 99,202,133,209,185,125,106, 99,173, 33, 87, 67, 46, 18, 68,179,167, 61,154,155, + 63,223,111,120,193, 57,174,244, 99,207,225,120,196,171, 41,254,245, 77, 46,220, 97, 24, 20, 65, 40,210,125,219,245,164,235, 68, +201, 69,198,197,222, 81, 12,244,155,117,230,221, 8,214, 26, 67, 90,133,217, 94,171, 8, 76,196,115, 26,185, 78,146,159, 29,186, + 14,211,170,198,229,101,225,248,150, 74, 86, 48,206, 81,161, 55,155,154,242,120, 56,113, 60, 30,120,249,182,234,216, 67, 70, 19, +161,235,104,205,242,182, 94,117,247, 43,208,140,148, 18,119,143,129,195,221,129,151,191,252,157,245, 45,210,255,243, 35,190,147, +112,151, 97, 60, 82, 91,225,112,119,199,219,111, 95,193, 8,193,199,250,192,245,229,149, 70,194,219,131, 98, 41, 13,169,194,221, +195, 29,135,135, 35, 57,101,190,252,246, 5,163,251, 57, 81,204, 6, 26, 72,210,218,146,164, 64,193,136,199,212,192,224, 3,181, + 54, 98, 42, 42, 34,174,116, 52, 22,203,238, 13,110, 86,198,238,168,210,189, 15, 50,130, 93, 22, 57,240,104,141,206, 7,154,145, +232, 84,107, 13, 62,216,125, 13,210,233,120,223, 88,195,180, 70, 98,204,138, 40,149,138,117, 24,123, 93,149,202,142,108,139, 78, +221,242,129, 65,170,104,223,137,231, 63,197, 68,105, 34,206,153,231, 74,223,101, 90, 47,227,167,156, 50,107,142, 59,192,196, 99, + 49,182, 72, 39, 83, 11, 62,104,167,159,181,219,108, 18,179,154, 91,149, 12,230,174,163,115,129, 82, 18,113,141, 56,163, 21,186, +203,170, 14,246,212,218, 19, 87,139,109, 89,243,166, 45,235, 18,105, 67,207,199,159, 63,112,232, 26,235,151, 11,191,251,112,199, +177, 31, 9,193,243,235,215, 11,127,251,229,141,187,113,224,195,253, 29, 49, 23, 94, 46,223,248,242, 58, 49, 93, 35,203,188,112, +157, 22,206,105,225,254,225,137,167,187, 3,157,243,184,222, 50, 93, 46,204,211,196,188,206,162,147, 8,150, 86, 32,244,129,187, +135, 35, 15, 79, 7,158,126, 56,113,189, 38,126,249,245, 27,161,115,132,206,147,114,230, 62,140, 12,135, 94,186, 4, 54,122,148, +193,108,185,223,220,130, 30,118,132,149,234, 12,164, 60,117,223, 17,230, 90, 99,239,150,183, 29,180,105, 78,147, 10,101,215,183, +109,176, 27,219, 14,238, 93, 76,171, 30, 68,237, 59, 56,236, 59, 34,216, 59,230,139,232, 34, 52,183, 89,199,163,117, 43, 28,222, + 77, 22,204,198, 82,216,184,238,108,147,130,246,142, 62,103,111, 64, 18,253,211,107, 46,123,252,100, 74,153,101,205,224,196,118, + 73, 45,146,137,157, 53,211,193, 89,154,177,212,146,240,206,114,157, 27,151,105, 33,208, 56, 58, 75,170,153,215,165, 80,179, 22, + 26,173,114, 60,202,239,161,150,202,177,115,248,160, 40,220, 6,121, 41,146,135,208, 55, 44, 73,172,144,206, 49,120,141, 44,222, +226, 51,247, 96, 29, 39, 77, 65, 21,165,123, 67,238,175, 92, 4, 16,149,219,102,213,109,148, 84, 72,181,176,166, 66, 45,134, 84, +211,206, 31,159, 98,226,104, 59,250,193,226,124,197, 85, 75, 91, 45,185, 85,174,203, 74,249,234,128,194, 50,205,114,209,230, 44, + 14,146, 44,221,181,181,142,209, 57,188, 53,100,223,232,141, 35, 87,193,199, 26, 7,215,169,176,196,140,109,141,181,171,196,184, +242, 58, 77,178,230, 25, 3, 93,174, 12, 24,124,128,146,147, 78, 25,228, 12, 25,250, 65,160, 96,106, 37, 75, 69,242, 28,142, 99, +175, 3, 40, 47, 2,191, 37, 82, 5,214,175,171, 38, 39, 22,181, 90,116,111,253, 29,233, 64, 86, 70,183, 71, 74, 39, 81, 26, 48, +179, 79,226,204,247,255,140,211,157,116,171, 98, 45, 52,149,224, 59, 33,171,105,179,216,116,237,106,177,196,117,101,213,156,247, + 27,101,212,226,180,209,153,230,149,195,225,128,239, 2,181,200,215,246,198,104,182, 60,187, 99,107,139, 45,222, 50, 11,218, 70, +215, 19,129,207, 78,186, 19,224,147,217,163,137,157,219,220, 65,149, 84, 26, 67,103,118,166,200,134,141,221, 39,101,212, 93, 65, + 47, 35,253,180,123,235,251,126,224,237,122,102,169,153,193, 57,166,154,246, 15, 76,194,208,110,214, 65,235,156, 22,218, 55,128, +136,211,176, 26,163,129,104, 30,100, 36,144,114,166, 63, 28,232,134, 17,167,202,243,148, 42,198, 91,134,161,199, 24, 67,202,153, +113, 56,224, 74, 37,197, 40, 62,201, 42,246, 3,107, 68,157,221,116,246,111,140,165,152,140, 49, 78, 70, 5,165,178,230,204,195, +227, 29,119,135, 3,181, 89,174,215, 43,206, 11,101,172, 2, 46, 56,150,101,145, 29, 69,147,157,153, 83,162,216, 26, 87,141, 3, +244,220, 29,142,170, 66,212,214, 87,100,217, 2, 8,104,133,117, 89,112, 33,136,210, 49,102,140, 13, 60,125,252,200, 60, 77,124, +253,229, 51,227,224, 57,126,184,151, 32,154,224, 56, 28, 58, 82, 46,116,206,243,242,229,133,113, 24, 37,144,192, 54, 17,220,185, +129,233,237,204,245,122, 21,120,191,201,124,250,240, 17,140,229,219,243, 43,223,190, 62,211,141, 3, 33,116,120, 47, 22,180, 82, + 42,243, 42, 35,182,106,140,170,107, 5, 27,219, 89,233, 80,114,107, 20, 99,232,155,193, 35, 99,149,166, 41, 94,206, 24, 66, 8, +116, 62, 8,188,194,201, 58,100,205,178,150, 8, 74,108,139, 49,225,156, 21,191,188, 18,144,134,206, 48, 4, 73, 42, 91,179, 16, +139,164,210, 52, 56, 11,227,161,195,122,171,213,118,197,233, 97,157,179,236,114, 36, 40,164,226,131,213,156,226,200,178, 38,134, + 62,208, 57,143, 37,113, 93, 47,196,228,105, 68, 82,148, 93,142,181,194,178,238,187, 64,167,185,214,115,204,228,107,193,123,139, + 71,224, 28,206,139, 61, 99, 93, 43, 37, 39,250, 33,115, 26, 14,106,241,235, 69,224, 24, 44,166, 9, 33,204,210, 81,215, 66,163, +144,148, 20, 85,106, 33,119,142, 31,255,120,199, 93,223,168,223, 68, 0,119, 58, 29,240,125,224,249,165,240,215,191,127, 99,232, + 71,126,122,188,231, 50,175,188,206, 11,151,121,102, 94, 22,174,211,196,219,245,202, 20, 43,167,187, 7,158, 30,238, 9, 94,124, +159,203,178,114,185, 94, 89,226, 76, 33, 97,189,116, 44, 99,239,185,123, 56,208, 13,142,187,187, 35,135,187, 3, 99, 87, 4,167, +147, 34,125,231, 72,113,197,216,123,134,173, 67, 80,177,143, 87,126,255,198,133,216,174, 57,163,151,252,230, 7,222,134, 94, 69, + 45,103, 22,139, 41, 58,226, 68, 97, 23, 55, 56,172,118,146,102, 31,183, 54,218,187,139, 90, 85,242, 58, 26,190,217,203,244,194, + 53,155,181,205,238,132, 63, 11,152,114,139,252,220,190,103,222,249,225, 21, 37,182,135,133, 96, 68, 77,221,182,110,189,221,186, +160,162, 98,188,205, 90,149, 91,145,177,170, 85, 54, 67,202,244,157,229, 16, 2, 75,202, 2,126, 41, 21,239,228,103,139, 49,138, +184, 84, 71,245,199,131,103,154, 11, 57, 79,164,109, 68,143, 35,216, 70, 82,125,137, 51, 13, 63, 88,134,193,236, 25,240,228,204, + 33, 52,232, 44, 65, 45,107,125,144,204,129,224,101,255,188, 99, 91, 55, 10,167,142,207, 29,150,138,163,106,244,112,205,210,105, +201,207,215,136, 89,198,230,198,200,185, 69, 21, 81,218, 48, 4, 98,146,228,200,190,151, 38,195, 25, 79, 63, 4, 46,243, 11,165, + 24,146,105,180, 20,241, 78,132,114, 20,104, 77,226, 52,109,149, 96,150, 37,103, 90,146,131,190,217, 66,118, 29,206,122,108, 39, +171,170, 84, 18,193,194,224, 45,125,231,120, 7, 64,217,135, 0, 0, 32, 0, 73, 68, 65, 84,121,189, 50, 93, 35,227, 16, 68,159, + 36,113,239,164, 18,153,215, 69,186,251, 90, 25, 67,192,251,130,177,114,137,197,210,152, 98,225, 52,116,248, 32,233,157,173, 53, +214, 37, 10, 26,252, 32,205, 93,206, 85,116, 20,154,233, 93,213,213,177, 21, 69,242,128,155, 93, 33,191,125,166,118,195,164, 22, + 5, 19,121,205, 29, 49, 55,205,205, 14, 97, 82, 52,246, 16,220,247,209,192,173,225,156,163,154,198,180,172,148, 4,177, 21, 58, +156, 94,196, 90, 44, 84,153,132, 62,198, 76, 63,120,108, 19,214,186,115, 65, 88, 42, 27, 35, 65,245, 49,173,213,125,229,177, 57, + 85,118,110,188,234,185,132,231,112,203, 55,183,187,110,164,128, 85,109,130,179, 24,111,223, 33,150,229,146,175, 91,194,162,181, +228, 77,160,106,148,164,216, 73,108,247,229,229,133,251,159,126,143, 95,163,236,198, 93,160,181,188,147,255,156,177, 84, 39,133, + 77, 86, 97,181,179, 91,116,166,217,168,191, 58,126, 71,184,200,227,225, 32,188, 92,235,136,113, 98,141,145,174,235,233,116, 63, + 28,115,194, 4, 79,172,133,184, 68, 25,133,176,147, 0,247, 10,204, 88,185,156, 74, 17,208,127, 97,123, 41, 51,119,195,129,227, +233,196,245,124, 33,174, 17,235,186, 93,116,229,157,147, 75,203, 90,214, 40, 29,233,221,221, 65,144,145,181, 96,141,140,238,157, + 83, 31,224,142,228,147, 60,219,208,247,228,148,152,231,153,225,116, 36,165, 66, 92, 87, 30, 31,239,233, 66,207,175,127,249, 79, +226,218,120,248,233,137,187,199, 39,150,117,229,167, 79, 31, 1, 24,199,129,183,243, 89, 70,105, 73,127,209,203, 74, 78,149,224, + 61,231, 95, 63,179,172, 11,169,192,253,253,129,167, 31,238, 88,230,133,111,159,191, 80,114,228, 56, 14, 74,108, 19,133,100, 92, + 51,139,254, 12,173, 57,225,187, 99, 9, 65, 82,120, 98, 74, 98,165,208,227,121,221, 50,172,229, 55,132, 53,150,177, 31, 24,250, + 64,174,194,188,143, 41,146,107,194, 27, 43,185,187, 73,160, 4, 93,208, 17, 85,169,116,214, 50, 56, 41,112, 48, 48, 45, 81,162, + 8, 85,177, 57,140, 3,161, 15,154,173,220,100,223, 91,223, 41,119,117,255,218, 13, 14,108,165, 85,195,154, 86,222,166,133, 82, + 68,245,187,182,132, 89, 18,118, 60,208,176,148,178,178,174,186,251,169,133, 24, 19,125,112,242,125,209, 88,115,100, 93, 36,134, +215, 58,199,225, 24, 4,243,216, 12,173,102,150, 37,179, 78,242,115,141, 99,175,207,147,188,152, 67, 63, 96,232, 49,101,146,142, + 66, 35, 39,179,135, 31,126,124,224,233, 48, 50,125,125,225,195,120,224,195,113,196,216,192, 82, 44,127,249,251,103,168,150, 63, +126,248,200,235,229,204,111,231, 51,185,201, 8,113,158, 22,222,222,174,196, 82, 24,143, 35,143,143,247, 4,181, 40,230, 28,185, + 92, 46,130,243,221,246,141,162, 79,226,116, 28, 57, 30, 6,198,211, 65, 72, 97,214, 51,158,122,254,208, 75, 28,177,117,150,101, +141,164, 82,208,136,110, 74,201,178, 31,203, 25,188, 68,214,154,118,203,191, 54,198,233,238,121, 67,133,202,110, 12, 85,182,110, +182, 38,209,147,168,224, 71,147,167,246,238,253,157, 23,220,236,255, 98,247, 68,171, 45, 81,107,227,115,151,186,197,106,154,189, +186,223,136,116, 85,199,237,173,202, 72,116,115,142, 72,158, 71,221,161, 40,155,183,126, 43, 36, 55,236,241,198, 34, 71, 11,151, + 82,228, 18, 55,250,121,108,234,158, 70, 99, 89, 86,114,205,156,194, 72, 65, 68,102, 57,101,172, 17,138, 27,205, 48,215, 34,151, + 29,134,195,161, 99,158, 34,245,178,236,113,196,166, 53,188, 17,239,118,204, 21, 55, 24,198,193,208, 5,143,245,194,101, 55,166, +209, 5,203, 97,244, 34, 14, 52, 94,188,232, 70,232,147,214,123, 54,218,202,166, 74,174, 69, 49,172,198, 80, 53, 56, 36, 21, 89, + 51,149, 44,113,161,117, 19, 50, 98,244,252,146,119,174, 68,209,149, 12,227,200,178, 92,241, 70, 86, 0,169, 10, 52,103,209,124, +247,148,165,168, 11,161, 42,127, 60, 43,187,253, 6,103,138,171, 16, 40, 55,212,107,163,146, 76,196,251, 74,153, 26, 81,121,251, +210, 29,122,190,189, 92,152,230,200,105,236, 56, 29,123,250,193,225,117, 39, 29, 83,102,138,105,159, 24,118,190,147,231,210, 66, + 74,141,231,215, 11,199,195,145, 99,223,237, 35,244,148, 18,111,215, 51,199, 65, 98,183,179,170,174,173,217, 98, 64,223,101,151, +217, 27,150,124, 87,254,171,130,194,170,168, 51, 97, 41, 37, 17, 58, 81,164,163, 69,106,169, 50,122,182, 86,250,230,166,171,216, +190,235,200, 41, 97,237, 81, 11,170,140,117, 35,181,202, 42,120, 43,178,106,183,233, 69,100, 95, 94, 20, 39, 27,215,196,161,246, +251,206, 92,110, 35,187,171,253,204,150,184,166,171, 40,239,236,142, 84,174,220, 0, 59,219, 51,190,145, 15,179,238,229,141,145, + 85, 6,220,146, 15,157,115, 55,125,204,119, 22,120,205,208,216,216,248, 70,127,110, 35, 30,245,243,229,140,235,254,128, 79, 94, +220, 36, 14,121, 6,171,234,109,244, 98,151,115,115,195, 8,139,155,198,168, 6,199, 26,131,223,132, 45,203,186,242,112,186, 39, +132,128, 15,129,151,103, 81,252,126,252,225,163, 88,214,182, 8, 57,239,201, 81, 68,114,173,190,227, 55,191, 19,218,126, 63,254, +147, 11, 57, 85, 73,218,185, 59,158, 40,192,116, 21,230,184,113, 14, 82,162, 15, 94,120,183, 77, 42,183, 37, 70,250,224, 57, 28, + 14,188,190,190,209, 74, 99,244, 29,125, 39, 12, 96, 99, 17, 43,131,254,114,156,113,248, 46,176, 68, 57,252, 69, 77,153, 49,214, +241,240,116,207,243,215, 47,204, 47,175,184, 0,227,211,137, 84, 43,214,119,220, 63,156,112, 65, 20,229,243,117,146, 67, 12,232, +186,158,249,114,166,235, 44, 41,102,230,235,196,188,172, 36, 11,159, 62,125, 34, 88,248,245,249,133,183,111, 47,244,253, 64, 31, + 28,193,201,203,213,170,140, 22, 37, 81,174, 73,214,178,177, 12, 26,202,146,146,168, 99,155,149,110,212,180,198,106,138, 86,172, +242,178, 12,221,200,195,221, 61,185,204,180, 42,251,151, 85, 3, 28, 4, 29, 40,200, 69,233,158,229, 69,113,214, 50, 4, 37,190, + 25,195, 26, 35, 41, 23,181, 38, 25, 66,240, 12, 99, 39, 23, 72,149, 28,116, 95,213,123,169,135,127, 67,247, 82,125,229,252, 38, +147,137,121,141,124,126,185,112, 26, 3,119,199,133,224, 44,211, 52, 67, 21,229, 55, 74, 92,138, 49,237, 10,107, 41, 66,178,140, +168,154,112,196, 11,150, 53, 22,140,135, 81,249,244, 56, 88, 83,161,149, 66, 54, 13, 23,192,101,177,193,245,126,164,196, 66, 43, + 19, 53, 37,210,178, 98,157,167,122,203,221,211,200,227,253, 72,126,155, 56, 58,207,195,105, 80, 6,191,231,223,255,227, 27,113, +138,252,249, 79, 63,179, 92,174,252,250,229,149, 22, 36, 28,226,229,114,225,252,118, 33,197, 66,119, 24,185,127,184,199,123, 75, +103, 13,174, 22,206,151, 11,203, 26,153,211,162,224, 21, 75,240,134,187,135, 59,238, 78, 39,198,211,192,241,238, 32,171, 27,117, +235, 29,198,142,113,236,105, 52,250,190,231, 50, 45, 92,175, 11,135,113, 84,175,119,149,224, 10, 13,117, 0, 45,178,156,219,134, +189, 26,130, 98,118, 23,135, 4,101,200, 8, 18,181,171, 85,101, 2,160,158, 89,105,176,229,101,150,125,118,251, 47,202,219,255, + 10,157,185, 45, 59, 91,147, 68, 48,246,156,245,194,119,244, 90, 43,178, 69,107,154,136, 92,235,123,127,178,217, 15,207, 90,183, +203,188,237,134,204,141,155,176, 97,116,154,122,209, 91,213,232, 78, 16, 90,101, 76,114,177, 90, 1, 95,229, 82,164, 48,237, 60, +206, 27, 76, 20, 49, 95,112,134,227,161,103, 90, 35, 83,205,186, 15,239,176, 54,147,115, 38,232,188,124, 24, 2,135, 83,135,247, + 50,233, 42,219,212,144,138,117, 94,248,235, 86, 70,202,222, 26,130,145,203,119,179,234, 85, 69,139, 74, 56, 70,147, 53,151, 53, +172, 37,235, 69, 95,245, 93,145, 3,200, 32, 69,154,115, 74,245,215, 76,241,152, 43,190,247,188, 93, 23,230, 53,107,194, 86,213, +196, 47, 37,107, 38, 41, 30,134,222,210, 89,199,178, 36, 98,150,248, 89,177, 27,202, 37, 50,151, 42, 25,240, 8, 14,187, 85, 67, +181,224,107,101,205,137,108,192, 27,131,115,141, 53, 23, 82,169, 34,168, 3, 74,140,100,215,176, 21, 82,145,166, 43,215, 66, 41, +137,110,232,169, 77,190, 6, 21,190,189, 77,212,212,248,248,100,101,167,111,229,178, 58,159, 39,172,119, 12,125, 71,171,141,117, +141, 66, 19,109, 98, 73,220, 64, 66,219, 54,105,227,166,111,226,180, 77, 68,107, 85, 37,159,115, 37, 81, 57, 6, 47, 43,191, 13, + 64, 92, 55,114,158,185, 69,191,106,128, 78,169,178, 34,206,181, 72,168,141,181,172,113, 97, 93, 87,137,174,221, 19, 15,185,129, +110,234,109,250,152, 75,198,187, 32, 57, 18,157, 35,167, 77,196,102, 84, 76,184, 5, 41,149,155,240, 77, 71,237,246, 29, 49,111, +163,213,109,153, 27, 27,139,221, 32,238, 16,107,205, 46,248,117, 78,114,235,119,166,220, 59,171,159,140,249,155, 38,188,201, 59, + 49, 14, 35,175,151,153,156,146, 90, 96,183, 16, 26,104, 53, 99, 77,175, 86,231, 45, 32, 70,226, 94, 41, 73,167,112,242,189, 90, + 26,222, 26, 67,170,133, 16, 2,227, 81,168,113,141,202,219,219,153,210, 32,244, 50,138,217, 40, 82,198, 24,226,186,138, 96,173, +214, 61, 65,108, 27,235,109, 9,176,180,219, 40,101, 75,193,241,161,231,241,254,129, 90, 11,235,186,226,188, 39, 78, 19,193, 59, +194, 56,242,252,118,161,247, 3,111,207, 95, 41, 41,114, 56, 62, 49,207, 51, 49, 37,142, 94,108,117,173, 73,178, 83,201,155,149, + 64,247, 27,214,115,236, 58,190,158, 95,168, 69,186,235,117, 77,220, 61,158,176,214,241,246,250, 74,137,141,211,233,192,233,225, + 72, 45,133, 15, 63,254,128,237, 7,108,239,153,223, 38, 74,140,156,175, 87,238,239,142, 96, 97,205, 18,227,121, 57, 63, 51, 77, + 51, 41, 53,142, 63,220,243,233,211, 19,215,215, 55, 94,158, 95, 88,115,228,238,116,196, 25, 35, 99, 25,164,186, 90,214,180, 23, + 23,214,201, 47, 57,168,231,190,230,219,206,100,235, 92, 82, 21, 50,208,198, 99,126,124,120, 36, 88, 39, 59,186, 86,153,230, 69, + 44, 96, 10,118,168, 88,186, 16,232,130, 7,196, 95,222, 57, 35, 99, 94,103, 72,165,176, 44,235,142,188,244,214, 51, 28,122,140, +146,154, 82,204,180,156,100,138,176,249, 84,117, 71, 54,197,133,114, 22,191,241,117,202,196, 34, 29,229,101, 78,228,146,233,187, +128,243, 78,128, 32,139,116,146,222,123, 74, 51,164,181, 82, 90,132, 42, 97, 60, 94,199,205, 69,237,122,213, 24,230,108,232,125, +195, 91,131, 55,162, 63,232,148,125,176,228,196,200,128,117, 14,143,151,238, 45, 38,210,180,138, 29,196, 57,134,135,145,187,251, + 3,117,158, 48, 41,243,225,233, 68,111,129,112,224,239,191,188,240,246,186,240,175, 63,253, 14,215, 38,254,215, 47,103,205,191, +206,188,157, 47,188, 93, 22, 81, 71, 31,122,142, 15,247, 4,223, 17,176,116,166,113,185, 94, 88,231,200,154, 35,185,101, 41, 22, + 91, 99, 60,244,156, 78, 3,195,224,233,122,139,241, 69,139,202,202, 92, 44,157,243, 24,231, 48,198,225, 44,164, 20,121, 93, 69, + 84,228, 52,196,195, 56, 11,197,208, 90, 22, 37,178,217, 14,150, 34,105, 90, 26, 20,209, 16,225,162,217,149,188,109,199,111,238, +117,115,149,221,166,221, 15, 79,245,148,183,119, 49,169, 26, 98,180,141,159,111,158,245,170, 35,252,186,171,189,154,118,252, 91, +110, 55,206, 96,170,136, 39,155,162, 66, 75,107,155, 67, 81,176, 3, 70, 47,233,247, 16,156, 77, 34,191,173, 23,182,172,118,115, + 83, 71,111,248,204, 90, 42,193,122, 70, 77,206,139, 57,147, 99,150,103,194, 35,180,200, 90, 9, 94,186,167,146, 11,113,138,140, +131,103, 28, 28,111, 68,113,236,118,114, 57,224, 12,163, 15,184, 96,118, 24,140,172, 19, 28, 46,136,206, 67, 87,189,146, 96,248, + 46, 29,207,154,205,150,134, 2, 61,184, 77,217,140, 32,166,133,175,205, 14, 96, 50,214, 98,133,221, 69, 69,124,212, 82,111,101, +124, 23, 8,193, 51, 77, 43,206, 27, 14, 7,199,178, 68,226, 26,105,213,144,162,174,165, 90,229, 48, 90,222,150,133,120, 21, 44, + 46, 10,210,106, 69,114,198,223, 98, 97, 90,181,232, 48, 77,244, 8,222,146,109, 99, 41,130, 6,110, 22,114, 54,212,148,247,105, +206,101, 46, 44,139,195, 92, 87, 14, 67, 79, 80,123,175,105,149, 83, 23,200,173,177,196,137, 90, 3,203,146, 88,230,204,227,135, + 3,166,101, 46,151, 51,125,223,115, 93, 34,121,109,220, 61, 72,242,227, 52,175, 10, 0, 19,205,130,213, 9, 19,251,122,177, 41, +165, 77, 47, 50,237,128,223, 11,232, 82, 78,194,210,247, 50, 86,223, 39,189, 91, 10,156, 81, 1,132,118,188,101, 83,166, 27, 43, +124, 15,231,232, 66,224,249,235, 11,113,202,120, 35,107, 68,163, 41,112,205, 10, 15,131, 6,133, 74,202, 43,169, 12,216, 38,171, +150,161, 31,185,174,171,156,195,154,232,230,182,160,152, 13, 20,209,218,222, 8, 89, 85,193,111, 46, 14,107, 52,204,101, 39, 59, +178, 35,120,171,169,186, 90, 52, 26,103,171, 69,188, 54,107,206,221,152,243, 91, 54,252,150,252, 22, 66,199, 60, 93,152,150,153, + 97, 56,176, 36,137,255,117, 90, 36, 11,249, 91,109,177,136, 43, 66,254,222,131,219,156, 54, 89,166, 13,198, 8,234,178,239, 58, +124, 8, 2,255,105,141, 56, 71,124,149, 0, 20,107,236,142,210,243,206,179, 94, 19,105,201, 80,178, 90, 99,183, 17,133,254,130, +172, 37, 89,131,205,168,232, 65,148,223, 67, 55, 48, 30, 59,150,117,165,208,240,189,103,153,103,238, 63,253,200, 60,207,242, 71, +120,120,121,123,198,251, 1,107, 29,203,114,193, 56,203,253,233,129,154,132,243,110,156, 28,168, 22,245,115, 3,190, 15,180,150, + 72,169,168, 74, 57,211, 5,139, 53, 29,111,111,111,196,101,193, 4, 75,184,147, 17,173,117,150,241,174,167, 63,141,180, 37,147, +214,149, 53,174,228,183,153,225,199, 39,242,180, 16, 92, 71, 73, 43,215,233,141,105,186,210,156,231,211,227, 3,206, 25,190,126, +189,242,246,118,165, 15,129, 16,228,208,246, 42,232, 88,163, 88,164,154, 49,210, 1, 90, 75,182,142, 90,100, 31,222,176,108,113, +247,182, 73, 20, 45,213, 9,185,205,194,195,241,142,135, 59,207,146, 86, 74,131,105, 89,137, 41,237,216, 65,154, 84,157, 93, 39, +149, 89, 45,104, 39, 34,124,227,102, 16, 85,246,134,108,108,150,225, 96, 25, 6,175,234,243, 68,138,133,160, 35, 85, 33,143, 41, +111,220, 86,230,184, 18, 27,140, 33,176,198,149,107,149,209,113,137, 48,173, 50, 78,247, 90,172, 93,215,200, 18, 43,216, 78, 70, +131, 85, 38, 14, 93, 43,210, 45, 57, 67, 37, 83, 16,190,114,107,134,235,210,180,155,131,222,102,156,241,196, 22, 37, 32,163,131, +148, 13, 31,238, 31,176, 86,158,177,124, 93,105, 21,252, 49,208,157, 6, 78, 7,143,143, 11, 46,101, 30,199,142,206, 57,236,241, +142,175,159, 35,191,125,251,194, 63,127,252,145,208, 53,254,231,127,126,198, 25,129, 38,253,118,190,112,157, 34, 37,174, 12,193, +112,124,120,192,117, 30, 99, 10, 29,134,249,186,114,141,145, 57, 47,172, 37,105, 17, 95, 5,206,211,119, 56,219, 8, 30,172,169, +194, 52,183, 50,134,181, 22, 82,245,152,108,101,207,105, 29,167,206,115,189, 92, 88,214, 9, 14, 35,166, 86, 33,103, 85,191, 95, +156,182,105, 8,134,122,215, 37, 20,227, 93, 6,181,245,239,184,234, 27, 23,222,239,123,185,102,110,194,186,237, 0,220, 56,254, +173,222,186, 2,107, 61,165,149, 77,249,117, 19, 69,226,169, 86, 24,226,155, 64,104, 99,208,111,199, 78,126,135,121,117, 13,197, +117,108,133, 64,187, 93,234,219,170, 0,244,249,222, 4,152,130, 86,221,102,144,213,138, 55,186,180, 66,109,153,174,107, 56, 43, + 81,148,185,137,178,124,240,142, 90, 50,105,145,128,149,206, 9, 94,122,158, 19,214,193,221,208, 49,165,130,243,133, 59,111,240, + 86,212,253,197, 52,130, 51,187,239,127,163,110,109, 98,166, 45,234,215, 24,135, 87,246,189,121,231,165,175, 77, 4,124, 75, 20, +241,222,186, 22,138, 17, 63,181,197,136,250,221, 88,156, 17, 16, 87,179, 71, 50, 17, 91, 10,142,134,247,154,139,238, 2, 54, 25, +226,146,148,132,153,249,242, 34,161, 52,243, 90, 72,165, 17,179,164,192, 57,107, 49,225, 34, 93,101, 92, 9,177,200,231,165, 33, + 34,201, 24,174, 75,225,117,145,162,216,153, 29,254, 14, 6,214, 34,202,241,224,196, 25, 96, 29,244,202,235,157,149, 71, 16,156, + 35, 56,201,236, 40, 85, 10,213, 57, 59,156,105, 28,250,192, 37, 46,172, 41,115, 24, 6, 2,134,111,151, 21,111, 61, 95,222,222, +184, 44, 51,127,248,120,207, 16,122,174,243, 66,170,149, 97,232,161, 72, 14, 64,210,217, 94, 83,145,100, 35, 83,240, 59,155,124, +139, 55,173, 77,216,235, 37, 75,103,234,149,171,145,170, 80,234,114,169,106, 43, 20,114,101, 53,130,184,240,186,195,146, 76,118, + 7, 49,105, 40,148, 99,190,206, 56, 39,107,151,162,171, 60, 43,237,178,120,243, 85,199,213,148,117, 79,173, 52, 15, 93,103, 49, + 29, 42,124, 83,145,181, 19,180, 47,136, 11,197,170,104,179,105, 97,236,189,149,233,166, 70,179,118,214,110,184,184,125,109,102, +138,122,242, 13, 56, 83, 85,177,175, 29,254,198, 60,192,226,172, 35,155, 44,238,166, 38, 69, 96, 73,149,238,216,145,170, 76,248, + 78,167,123, 92,202, 55, 75, 93, 45, 98,197,108, 13,131,186, 15,114,161,180, 34,236, 15,175,214, 39, 5,253,248,205,195, 58, 28, + 70,137,211,180, 34,132,248,237,183, 47,184, 16, 8,125, 47,149, 88,217,120,194,149,117,141, 34, 32,201,101,247,221,110,187,192, +170, 99,175, 86,139,124,224, 24,114, 51,212,148,120,252, 36, 25,217,113,137,244,125, 96,186, 46,196,165,112, 56, 28, 57,127,123, + 97,116,142,223, 94, 94,201, 45, 48, 6,203,186, 94, 89,107,230, 79, 31,126,224,216,123,190, 45,147, 88,191, 16,160,193,141, 63, + 44,126,196,156, 11,105,190, 96,135, 14,163, 35,104,214,133,117,158, 41, 41,115,208, 3, 26,103,232, 14, 35,227,225,196, 56,140, + 60, 63,255, 70,137,153,235,121, 98,248,120, 32,216,142, 52, 95, 9, 99,207,203,151,223,152, 47, 19,107,202,156, 30,238,249,248, +241,129,183,215, 51,111,231, 55, 98,105,220, 31, 58, 2, 14,175,180,161, 92,170, 8, 56, 74,145, 68,167,190,167, 96, 40, 77, 94, +228,193, 24,178, 17, 68, 33, 26, 58,144,154, 83, 27, 77,161, 15, 29,119,119, 71, 32,144,203, 66,140,137,121, 21,112,141,175, 14, +235,165, 90,115, 94, 84,241,173,102,188,109, 4,165, 97, 25, 44, 41,101,241,231, 87,121, 96, 67,231, 24,199, 78, 98,114, 83, 38, +198, 4,165, 82,171, 19, 71,138,109,202,124,110,123,167,183, 76,145,228, 43,115,174,124,121,157, 57,142, 29, 14, 88, 99, 33,198, +198,146,178,118, 61, 82,137,186,182,226, 29,140,206, 74,101,166,160,240, 53, 85, 46, 25, 82,182, 92,179,228, 32,251, 42,211,136, +163,183,100,215, 56,231,133,105, 22,232,196, 15, 39,207,161, 7,103, 34,197, 91, 72, 11,182, 84,134,241, 68, 55,142,244, 7,131, +107, 66,231, 59,121, 71, 8,158,251,135, 39, 62,127,155,249,247, 95,191,240,199,199,143, 12,195,129,255,247, 63,255, 70,109,134, +206, 53,126, 61, 95,153,215, 44, 26, 4, 83, 25,239, 30,177,157,199, 55, 24,176,164,184,178,172, 11,107, 76,172, 37, 9,146,178, + 74,140,234,225,216, 49,140,129,208,121,172, 55,251,168,176, 10, 21, 86,158,125,205,174, 23, 0, 11, 50, 61,185, 59, 72,135, 90, +213, 0, 83, 42,165, 37, 90,243,186,207,118, 26,188, 34,155,238,255,170, 74,151,203,169,238,118, 26, 33, 88, 73,122,214, 30,219, +210,208,131, 70,148,200,236,112,216,219, 37,182,121,149,171,217,198,160,183, 20, 56, 74,125, 55,158, 87, 80,168,218,166,110,182, + 29,115, 67,143, 42, 61,112,163,233,109,151,186,179, 98, 81,170,223,121,227,217,215, 50,117, 27,143,242, 62,214, 85,188,214,109, +143, 4,149, 52, 43,241,240, 54,114, 92,133,249,109, 28,121,205, 34,236, 58, 4,233,140,107,165,247,134,126, 24, 37,127,177, 22, +193,184,218,219, 84, 66, 58,163, 77, 40,103,212, 41,173, 83, 4,201, 26,210,168, 79,203,154,197,113,179,196, 76, 92, 43,107,105, + 84, 35,157,208,232,165, 88,171,120, 92,223, 17,134,158,140,165, 45, 11,190, 37, 33,162, 21, 65,147, 98, 27,203,180,242,118,141, + 92,166,196,146, 10,243,154, 89,214, 74, 74, 77, 16,176,213, 16, 21,238,115, 8,149,243, 28,105,165,225,114, 38,165,138, 55,242, + 44, 76, 73,166, 30,223,166,198,219, 34, 23,186, 65, 28, 46, 65, 89,253, 81, 25, 9, 69, 71,235,222, 65, 10, 50,138,119,206, 96, + 77,101,240,134, 88, 34,173, 21,114,146, 64,173,224, 51, 93,111, 89,163,184, 21,250,206, 83, 90,227,235,229, 74,177,134,154,224, + 58,205,244,157,135,206,243, 50, 45,164,156,233,250, 78,163, 74, 21, 49,108,234, 78, 70,148, 11,114,139,122,190, 69,238, 54, 85, +127, 90, 11, 49, 3, 36,250,160,130,204,106,104,205, 42, 65,205,236,171, 71,217,202,217,157,119, 96,118, 8, 76,195,118,129, 28, + 19,203,178, 42, 0, 73, 3, 99,222,165,163, 57,183,105, 67, 54,200,139,236,221,105, 82,252, 30,189,163, 40,198,216, 90,153,186, +224,110, 78, 16,222,133, 77, 25, 99,240,198, 73, 83,146, 43,161, 19, 88,142, 76,173, 20,238, 83, 42, 75, 94,241, 67,184,189,191, + 42,176,163, 33,207, 57,183,104,100,107,236, 86, 30,239, 26,166, 96, 61,206, 4,166,203,132,249,157,116,250, 2,118, 18, 65,107, +209,209,187, 53, 55,160, 81,169, 82,172, 59,235, 4, 20,134,193,185,128, 55, 70, 66, 25, 92, 16, 56, 75, 63,244,196,184,240,249, +215,207,124,252,248, 59,124, 31,100, 33,175, 41, 61, 57, 23,114,142,154,225, 91,100, 47,117, 99,226,237,223,100, 69,170,175,210, +132,133, 92, 74,228,241,254,132,109,242, 16, 62,221, 63,240,249,215,175,116, 67, 39,112, 18, 37,206, 61,191, 62, 51,116, 2, 12, + 88,211,204,221,227,145,223, 63, 61,113,185,206,148, 84,113,193,221, 84,189,218,144, 56,231, 8,125, 71,140,137, 84, 27,163,177, +116,135,129,183,215, 51,203,178,236,180,180,174,147,209, 77, 55, 28, 56,222,221, 49,140, 35, 53,101, 98,148,209,216, 52, 95,249, +240, 79, 63, 49, 93,207,244,206,227,173,101,157,102,214,121,161, 26,199,227,227, 35,193, 24, 94,207,103,166,105,166, 11, 86,249, +242,102, 87,207,206,107,102,141, 25, 3,116,125, 47,137,113, 49,145,151,196,154, 43, 31, 58,207,115, 19,140, 46, 77,227, 1,189, +199, 54, 8, 62,112, 26, 71,134,161, 39,214,196, 20, 87, 46,115, 36,103, 81, 86,249, 32, 57,208,198,130,183, 14,175, 71,184,177, + 13,111,197,218, 80, 11,172, 57,239, 34, 70,103, 28,125, 47, 86,170, 82, 26, 41,174,212,168,156,113, 18,182, 72,129,100, 29, 36, +228, 48, 93,115,229,101, 94,161, 26, 81, 40,231,198,215,231, 69, 71,192,154, 71,172, 23,209,150,217, 94, 74, 38, 85, 33,230, 29, + 90,196, 91, 67,172,137,101, 21,126, 51,192,189,119,248, 62, 16, 20,175,233, 53,164,228,100,225, 24, 28,125,232,248,241,241,158, +209,119,132,102, 96,137,148,180, 16,142,119,248,163,199,143, 70,246,167, 57,115,104, 34,166,250,240,241, 7, 94,207,134,255,248, +199,111,124, 60, 28, 24,198, 35,255,246,215, 95,104, 13,122,231,248,118,158, 56,103, 25, 21,146, 34,135,211, 61,110, 24,119,101, +125,205,137,101,157,152,162,236,209,179,118,162,206,123,142, 99,199,113,232, 20,143,235, 81,203,189,238,249,100,214,210,140,147, +110, 64, 39, 86, 45, 21,172, 21,145,160, 48,190,147, 92,224, 70,151, 83, 45,239,226, 43,163, 97, 18,110, 99, 98,191,187, 17,183, +203,239, 61,187,189,188,143, 72, 53,251,246,238,221,238,252, 93,216,134,198,223,138,144, 70,254,156,109, 92, 95, 21, 12,211,140, + 92,182,118, 35,193,169,158,164,153, 91,199,141,210,178,104,223,231,174,239, 49,159,187,133,105,179,185,105,118,250, 54,214,174, + 34, 0,219, 20,247,183,104, 75, 17,212,214,154,164, 11,169,219,129, 85,132,167,128, 60,227, 81,187,221,161,247,120,219, 36,231, + 60, 23, 58,111, 8, 86,189,186, 52,221,107,243, 46,161,139,221, 62,164,217,113,123,112,149,117, 91,241, 43,238,148,101,213,203, + 60,201,174, 27, 42,195, 32, 9, 90,214, 7,106, 11,132,254, 64,240, 3,235,252, 70, 90,223,176,166, 18,188,216,237,174,243,202, +101, 46, 92,150,204,101,158, 89,231,204, 58, 85,146,105, 68, 77, 34,107,138, 84,118,166, 49,122,153, 57,123, 12,211, 37,202,251, +145, 11, 93,133,222, 1, 9,178,107, 28,156,161,179,149,193, 65, 74,134,168, 99,233,217, 86,230,181, 80, 49,140,157,165,115, 77, + 35, 84,171, 38,184, 25,114, 81, 2,167, 53, 68,141, 69, 78, 73,108,166,177, 52, 98, 18,129, 85,231,101,223,127,190, 78,212, 10, +107, 17, 33,106, 23, 28,247,119, 71,230,185, 16,211, 42, 76, 9, 19,169, 56, 90,174,164, 34,141, 69, 8, 50, 45,202, 89,241,199, +174,126, 79,155,211,127,207,181,146,146, 8,167,131,194, 89,196,245,129, 94,182,155, 45,107,155, 94,189, 3,193,120, 21, 70,215, +134,115,129,203,249, 74,156, 38,172, 17,191,254,174,174,183,110, 87,129,111,100,205,186,237,173,183, 12,130,182,137,183,101, 58, +233,220,109,180, 94,148,183,111,116, 58,179, 77,181,154, 19, 22,127,201,117,207,105, 48,187,232, 77, 69,147,185,236, 58, 24,176, + 90,104,155,157,193,178,161, 95, 13,230,150,197,222,196,238,154,171, 54, 27, 67,224,114,153,196,247,174,207,179,164,210,165, 91, +232,173, 78,234, 36, 68,169,237,169,140, 27,190,215, 59,139,111,250,169,123,235,213, 27,236, 57, 63,191,146,150,136, 27,252, 30, +129,186,129, 1,150,121, 97,141,139,112,194,223, 29, 60,155,162,111,203,103, 54,214, 96,178,140,104,115, 1,231, 2,167,211, 29, + 49, 37,198, 67, 71, 8,142,183,183, 55, 14,135, 19,203,188, 96,156,231,249,245,149,214,144,189,199,245,140,115,158,255,254,231, +127,193,205,194, 76, 54,182,233,104,177,234, 97, 36,112, 68,239,197,199,253, 54, 93,229,239, 59, 79,176,158,184, 68,125,224,242, +174,114, 12, 67,207,225,254,142,241,120, 98, 60,158, 88,231,137,146, 18,111,175,111, 28, 78, 71,134,174,227,243, 47,191,242,233, + 95,254,204,219,151,103,166,215, 51,235, 28, 57,220,159,184,127, 56,114,189, 92,152,174, 87, 98, 44, 60,220,141, 18,123,106,149, +254,212, 26,211, 26,133, 35,108, 13,227, 56, 50,116, 61,243,178,138,200,205, 88,134,222,147,207, 55,178, 87,206, 5,215, 55,172, + 51, 12, 93,224,120, 56,208,117, 29,175,151, 11,151,121,150,130,160,100, 14,193,139, 16,202, 54,130,147,137,138,109,183, 17,143, + 65, 46,154, 88, 26,106,243,149,113,220, 32, 99,220,235,101,149, 46, 40,103,217,212, 52, 13,156,168,162, 77,104,181, 50,165,149, + 37,174,196, 12,175,147,140,232,171,166,125, 53,221,153,121,103,190, 75, 27,139, 89,198, 71, 37,195,120,132, 79, 15, 15,184,106, + 48,185,241,188, 46, 88,159,232, 44,187,143,222, 25,217, 19, 5,245,187, 38, 16,181,190,179, 60,222,157, 56, 13, 3, 7,231,240, +185, 80,215, 68,232, 7,186,113, 36,116,158, 96, 42, 54, 25,124,107, 12,165,242,244,244, 35, 75,113,252,199,223,254,193, 49,140, + 28,134,158,191,252,250, 89,209,181,240,237,122,229,154, 11,189, 15,196, 53,210, 31, 15,116,135, 3,173, 73,113,208,138, 56, 37, +166, 34, 23,122, 42,194,210,118,222, 50,140,129,195,216,209,245,162,229, 48,206,238,224,158, 77, 9, 91,181,218,119,206,146,107, + 22,145,164, 30,104,206,236,147,106,112,134, 82,146, 36,203,105, 23,211,178,138,218,172, 38, 45, 85,143,179,254, 38, 12,218,119, +209,183,136,214, 45,128, 69, 14, 19,171,214,209,118,179,213,180, 27,107,154,157,182,253, 62, 55,102,219,230, 25,197,190,138, 7, +122, 31,251,111, 86,183,218,246,195,118, 99,226,168,180, 71, 35, 99,173,118,249,220,186, 49,115,131,118,136, 46, 64, 89,115,181, +236,105,234,117, 11, 8,218,150,215,173,232, 24, 95,177,178,206, 9, 15,221, 8, 44, 37,197, 68,174,149,208, 7,172,105,228, 82, + 88,214, 66, 53, 2,150, 17,156,173, 20,185, 6,243, 93,112,141,127,247, 57,184,189,131, 23,210,153, 20,171,242,181,214, 84,152, +163,120,227,155,166,176,117, 33,112, 56,157,176,225,128,237, 14,248,190,163,149,149,151, 47, 95, 41,235,132,117,178,187, 60, 47, +137,243,117,230,237,178,114,153, 50, 75, 18, 60, 41, 73,181, 12,166,209,123, 57, 91,203, 6,119,201, 82,156,149,218,136,250,193, +230, 36,254,247,106,128,160,217, 25, 58,205,240,222, 50, 90,195, 48,222, 72, 4, 0, 83,148, 49,190,139,133,230,128, 32, 14,131, + 33, 72,177,219,121,105,126,114,201,196, 69,207, 27, 21, 79, 26,197,180,110, 54,203,156,147, 52, 97, 77,166, 13,193, 59,142,227, +128,193,240,250,114, 38,230,172, 92,139,142,101, 73,172, 75, 36, 27,203,221, 56, 48, 54,105,106, 54,197,251, 38, 44,119,234,234, +144,137,221,141,117, 30, 58,143,243,106,151,178, 70,130, 99,140,134, 75, 25, 5, 14, 25, 9, 95, 49, 90,128, 6,239,149,232,103, +177, 33, 48, 45,179,228, 87, 88,251,157,181,211, 26, 96, 19, 45, 22,177,221,237,230, 76, 37, 53, 82, 37,130, 59,109,239,140, 70, + 66,179, 77,172,204,166, 48,103, 79, 78,116,110,131,100,105, 58,125, 43, 58,238,215, 35, 65,133,125,198, 40,133, 83,139,131,166, +207,158,209,132,191,247, 4,199, 77,132,186,113, 44,182,228,202,203,229, 66, 78, 25, 23, 60,214, 54,172, 9, 10,210,105, 59,137, + 81, 79, 33,153, 62, 53,153, 20,108, 44,126, 85,191,203,161,228,244, 61,235, 67,224,183,117, 33,215, 66,232,187, 61, 88,100, 59, + 48,226,186,146, 83, 86, 1, 92, 17, 3,124,109,178, 99,212,208,251, 82,100,196, 96,149, 77, 94, 43,140,135, 3, 93, 31,136, 41, +241,251,223,127,226,229,242,198,229,114,229,241,241,137, 90, 5,155,120, 57, 95,185, 59,158,128,202, 60,207,252,249, 95,254,137, +159, 62,126,224,243, 95,254, 78, 69,242,101,251,225,160,136, 61, 85,218,214,138,239,130, 4,123, 68, 65,143,134,174,103,186, 94, + 89, 47,145, 83,239,121, 43, 5, 87, 11,198,122,198,187, 59,250,211,129,254, 48,208,117, 3,151,183,103,214,235,196,219,249,133, + 63,254,203,191,112,126,126, 97,232, 2,253,208,243,246,252,204,122,153, 89, 75,230,225,241, 1, 87, 43,231,203,133,235, 26, 37, +200, 69, 49,160,214, 58,156, 21,149,120, 76,178,143, 13, 26,148,226,141, 82,161, 82,102, 8,129,222, 41,189,200,104,229, 87,171, +136,196,156, 97, 24,122, 14,195,129,101,141, 92,167,137,105, 94,137,185, 48,116, 98,245, 64,241,136,157,119,120,119, 11,103,176, +186,217, 74, 53,147,139, 70, 7,218,166,220,232,149, 53,139, 32,195, 84, 69,120,154,172, 5, 17,164, 44,161, 1,115,142,188,205, + 43,115,202, 44, 83,217,109, 79, 77,109,204,219, 88, 55,230, 6,165,144, 11,248, 14,156,135,143, 31, 30,248,233,231, 31,248,241, +225,196,229,245,149,223,126,123,227,245, 50,115,157,146, 18,160, 26,157,243, 84,228,129,243, 42, 34, 41, 84, 25,133, 98,185, 59, + 30, 69,128, 71,195,228, 66, 89, 23,156, 15,244,167, 3,190,179,130,189,173,141,208,192,149,149, 15,159,126,198, 31, 30,248,191, +254,231,255,161,119,142,131,239,248,237,219,171, 20,152,173,242,117,186,114,193,112, 63,142,148,117,149,188,226,113, 20,146, 85, +147,224,135,101,153,153,114,228,154, 86,230, 24,165, 67,241,224,131,163,239, 3,161,247,132, 78,208,160,219, 56,173, 41,238, 88, +252,161, 26,101,105,203, 30,209,184,141, 12, 55,248,146,105,130, 29, 50,198, 98,138,236,126,155,194,146,204, 22,159,219,120, 23, +150,177,133,179,188, 39, 90,189,131,162,104, 62,183, 81,181,235,166,242,221,196,104, 70,149,191, 91,120,197,118, 24,128, 21, 66, +160,117, 26,172, 81,117, 71, 43,157,184, 53, 6,154,211,140,106,233,108,229,230,175, 55, 68,152,189,133,206,188, 75,105, 87,122, + 22,123, 86, 59, 42, 92, 42, 85,131, 48,204, 13, 92,179,253,123, 45,202,184,216,244,122, 45,238, 57,239,206, 26,225, 96,148, 38, + 88, 77,181, 60,109,130, 36,175, 56, 78,234,150, 53,129,238,116,237,187,240,140,119,224, 15, 29,179,110,202,246,152, 11,107,108, + 76,115,146,160,165, 42,211,140,206, 7,134,161, 99, 60,157, 8,195,145,110,124,194, 58,207,235,243, 63, 56,191,253,131,150,164, +115,155,214,196,219, 37,113,153, 34,151, 37, 49,167, 76,206,242,113,117,198,209,186, 45,108, 71,116, 36,243, 34,124,133, 92, 32, +151,155, 64, 79, 29, 93,180, 34, 69,112,117,134, 92, 27, 9, 81,176, 47,165,145,178,108,170,173, 7,175, 98, 88,154,163, 29, 28, +169, 72, 14,134,181,144,173,140,153,179, 78, 3,252, 96,241,182, 81,170,116,253, 49, 85, 98, 18,187,156,197,208,212, 98,152,214, +182, 7, 54,245,206,224,157,188,159, 41,174,212, 28, 25,135,158, 15, 79,143,196,180,242,250,118,101,154, 42,198, 9,210,183, 54, + 88,215, 66,206,226,211,238,123,135, 53, 1,235,111,190,116,177,202, 26,114, 18, 17,176,239,110,133,107, 67,196,184,214,202,200, +124,187, 88,157, 49, 58, 66,151,102, 39,236, 25,234, 18,129,123, 62, 95,100,210,169,207, 97, 86, 20,181,115, 94, 58, 91,133,115, + 25,141,141,222,226,132, 55,100,245,150,136,104,212, 10,102,117,228,191, 57, 53, 54,117,250, 6, 90,114,214,104,156,176,234, 96, +244, 31,150, 85,150,193,216,186, 63,159,168, 0,115,235,168,173,213, 98,108,187, 67,117, 31,111,172,195, 40, 78,184,149, 76,201, +133,174,235,185,190,173,156,167, 11, 31,158, 62,136, 56,206, 54,205,128,103,255,190,173,109, 10,157,108,251,252, 73, 6, 20, 66, +116,244, 70,213,140,182, 84, 58,231,233,125,224,203,151,111, 44,243,162, 94, 92,179,143,181, 74, 41,196,121,149,203,188, 65,206, +141,234,219,158,128,214,148,145,155, 85, 64,183, 85, 72,169, 86, 78,135, 30,211, 44,131, 15,124,252,225, 35,127,251,251, 47,106, + 75,145,120,187,235,245, 66, 55,120, 30,143, 71,254,246,203,103,236,208,243,223,254,249,159,136,211, 85,205,250, 42,204, 65,254, +220, 86, 11,205, 10, 63,184, 15,131,236,172,167,132, 27, 4,209, 55, 93,102,172, 19,109, 99,106,149, 80, 27,253,208,243,244,244, + 72,127, 28, 25, 15, 3,205, 36,230,235,196,219,243,179, 92, 42,199,145,255,243,127,254,141, 63,253,244, 19,113, 73,130,109,140, +147,236,222,239, 14,204,215, 43,243,188, 80,107,227, 48,246,152, 42,150, 60,239,100,187, 26,215, 12, 85,138,164,174, 19, 12,235, +148,102,174,107, 20,188,164, 9, 50, 54,219,147,138, 10,227, 97, 16,250,155,243, 28, 15, 71,178,169, 76,203,194,219,229,202,186, +102,253,223,204,141, 95,111,189, 84,172,166,146,105, 4, 42, 14,179,251, 71, 55,177,169,117, 18,162, 49,205, 43,181,138, 88,175, +211, 74,180,106, 69,158, 26,164, 44, 86,185,231,121,225,101, 78,180,172,163, 84,187, 29,152,134,148, 13, 37, 53, 1,101, 0, 63, +126, 24,248,243, 79,159,248,241,135, 59,250,161,103, 28,159,192, 24,190,254,242, 11, 95,191, 94,120, 62, 95,121,157, 86, 74,210, + 76, 0, 93,181, 57,227, 56,141, 35, 22, 88,115,220, 59,210,187,195,129,227,112, 36, 88,232,107,131, 24, 1, 67,119, 58, 98,122, + 71,232, 43,189,109,184, 2,117, 89,248,233,211, 71, 30,126,247, 51,255,247,191,253, 7, 37, 21,108,240, 60, 95,223, 4,130,145, + 50, 95,166, 51, 87, 23,120, 56, 30, 9,165,145,179,193,157, 78, 18, 39,154,101,148,181,198,194,154, 11, 83,137,130, 37, 46, 85, + 88,212, 46,112, 28, 60,135,193, 19,250,110, 87,164,151,220, 36, 11,122,235,150,154, 21,225, 87,171,148,242,253,244,188,105,104, + 5, 52,197,100,202,103,208, 54, 81,154,118, 17,149, 6,169,226,125, 80,126,122,194, 57, 21,166,238, 57, 82,218, 41,191,203,183, +223,217,234,218,126, 90,165, 73,237,193,166,223,145,177,202,158,158, 40,155,204,170,247,161,112,208,155, 58, 31,244,152, 96,231, +135,152,205,250,102,246,180, 69,167,161, 25, 85,131,103,110,234,250, 34,197,219, 78,160,105,223,209,231,222, 95,232,173,150,253, +251,218,180, 11, 77, 33, 56, 41,203,193,152,155, 16,207,140, 23,145,159,217,185,242, 22,167,235, 54, 89, 59, 84,156,105, 20, 44, +198,148, 27, 3,119,155, 83,108,150,187,170,227,213, 92,137, 37,179,172,141,105,137,164, 36, 1, 49,206,123,198, 78,236,179,119, +119, 63, 96,199, 19,110, 24, 41,121,230,229,243,191,179,188, 78, 52,103, 88,115,226,124, 93, 56, 47, 11,211,220, 72, 81, 46,235, +134, 60, 27,182,200,207,186,102, 72, 89, 20,233,185,130, 78,102,223, 81,246,182,168, 86,153, 97, 88, 81, 61, 40, 55, 66, 64, 62, +110,227,112,180,186,131, 79, 90, 85,202, 88,107, 52, 10,214, 22,130, 53,244,157,229,120,127,144, 27,163, 47, 0, 0, 32, 0, 73, + 68, 65, 84, 96, 28, 70,250,222,137,102,198,137,102,163,203,153,236, 50,222,103,130, 75,196,140, 34, 70,183, 9,142,190,239, 91, +247,222,117, 88, 39, 59,240, 16, 60,125, 8,152, 44, 83,187, 57, 54,240,186, 90,114,150,235,117, 81, 69,186,229,120,240, 80, 69, +161,110,173,209,194,244,102,217, 72, 85,222,129,224,213,166, 37,226, 8,245,248,235, 5,110,229,103,223,158,245,109, 15, 30,122, + 73, 69,244,193, 51,205, 43,215,183,105,215, 11,185,125,148,221, 8,246,150,183, 32,233,117,130, 66,206,187,229,114, 67,171,110, +127, 57,217, 71,107,113, 80,179, 22,199,238,253,163,116, 43,174,155,142,184,171,185, 81,229,246, 44, 66,197, 61, 55, 77,186,115, +206,107,209,192,119,116, 72,120, 95,116,138, 22,165,149,172,171, 0, 15,165,114,185, 94,249,244,227, 39,140,147,207, 76, 52, 29, + 85, 29, 43,130, 24, 15,154,196,103,180,120,114,106,133,173, 52,188,213,238,169, 26,232,134, 30, 67,229,229,249, 85,146,127, 84, +130,191, 31, 86,198, 48, 79,147,142,241,154,198,227,177,239,200,182,189, 95, 81,251, 76,214,157, 70,169, 43,227, 16,104, 37,114, +247,233, 35, 33, 88, 94, 94,159,233,187,158, 46, 4,206,215, 51,211, 37,241,241,135, 71,222,206, 11,215,101,225,143,127,250, 3, +159, 62,126,224,243,223,254,138,169,149,146,149, 70,101,100, 71,183,193, 92, 48, 14,215, 7,241,206,251, 74,112,158,154,139,194, + 64, 4,191, 88, 52, 73,236,248,120,164,191, 63,114, 56, 30, 25, 79, 71,166,183, 43,243,229, 66,188,206,252,254,207,255,196,235, +229, 27, 57, 37,142, 15,119, 66, 20,155, 22,214,165,242,240,243, 29, 37,103,150,229, 74,140, 81,199,197,158, 92, 86, 58,235,241, +170, 46, 93, 83,166,169, 98, 49, 56, 47, 15,235,154,152,230,164, 7,181, 66,120, 54, 29,131,133,241,208, 99,172,163, 11, 29,222, + 57,230,180,242,118,157,184, 92,103,124,232, 24,130,163,213, 13,105,233,197,154,131,134,227,152,182, 83,154,182,125,219,198,242, + 23, 37,188, 40,101,139, 10,146,146, 17,240,136, 67, 72,103,169, 37,166,156,120,187,174,188, 94, 86,156, 7,227,133, 45,188,168, +183,117,141, 34,128,250,233,216,241,199, 63,222,241,199,223,253,196,211,135,159, 56, 62, 28, 69,233,191,174,196,146,152,207,103, +206,151, 51, 47,151,153,151,107, 66,194,224,228, 5, 57,157,238,232, 12,156,198, 35, 93, 48,164,154, 73, 73,190,231,167,227,129, +187,195,136,199, 18, 74,133,156, 41, 41,114,124,122, 36,116, 1,111, 42, 7,219,227, 27,196,183,137,223,255,240,145,167,127,254, +111,252,175,127,255, 11,231, 23,177,222, 44, 49, 97, 93, 71,155, 47,252,227,245, 25,219, 29,248,225,120, 18,107, 95, 92,113,167, +163,218,129, 50, 62, 23,209, 13, 52, 81,241, 47, 73, 70,188,178,130,114,116,189,195,135,158,190,235, 68, 76,101,141, 98, 26,235, +126,201, 86,221,169,153, 90,117,116, 39,147,163, 29,123,217,140,162, 97,221,158, 39, 94,213, 13,176,237, 9,221, 22,240,226, 52, +141,202, 26,245,199, 86,197,180, 58,237,248,235, 45,112,165,105,242,221,150,224,213,218,174,144,109,123, 65, 33,158, 51,131, 72, +136,101, 12,174, 46,137,166, 32,139, 42, 63,151,177,242, 60,236, 56, 90,115,187, 12,183,139,249,214,233,222, 46,158,162,153, 14, +194,130, 40,123,151, 94,138, 20, 51,109,203,135,215,114,160,110, 4,173,214,116, 4,191,209,197, 12,133, 44,182,197,106,200, 37, + 3,134, 92,154,198,251, 22, 29, 57,106, 70,187,201,224,188,192,173,208,201,149,115,216, 42,113, 82, 27,120,103, 27,197, 87,245, +115,214, 90, 5, 60, 84, 10,113,173, 76,211, 74, 76,130, 58,245, 93,224,112,232,185,187,191,231,254,227, 71,172, 61,224, 58, 79, + 94,206,156,191,252,141,101, 61,147,220,194,243, 75,228,245,178,112,142, 89,180, 4, 25,154, 43, 98,169, 74, 70,200,113, 10,165, + 41, 69,152,221,165, 26, 81,245,235,174,213, 25,131,211,110,202, 90, 81,230, 59, 77, 9,171, 94,148,219,197,201,231,238,205,109, +101,165, 87,136,192, 89, 92, 21,207,121, 51,180,130,224, 98, 77,227, 49, 12,252,241, 79,127,224,254,113,224,224, 10,109, 73,188, + 92,103,190,189,158, 89,166, 21,151, 13, 62, 24,236, 82, 73,107, 38, 55,104, 90,132,109,246, 44, 49, 42, 20,130,131,190,239,104, +213,240,124, 93, 88,106, 37, 24,207, 93, 63,112,127,231,232, 58,203,175, 47, 43,231,107, 18,203, 94, 39,194,179, 53, 86,186,224, +105, 97,131, 18, 73,120, 73, 41,134,186, 90,194,193,237, 26, 28,212, 42, 88,177,120,239, 5, 13,174,197,227, 70,108, 43, 45,209, +247, 7,165,161,138, 37,108,121,189, 48,197,153,222, 56,157, 6,200,100,203, 40,119,221,110, 4,193, 77,227, 82,183,130, 18, 45, + 72,111, 93, 46,237,198,105,183, 21,154, 88,145,116,231,237,148,237, 80,116, 55,174,154,144,182, 17, 27,117, 8,254, 95, 86,206, +239,197,174, 55,180,171, 21,222,196,142,133,214,201,209,187,119,182,214, 42,214,219, 14, 94,174, 23,104, 18,160,229,172,193,120, +177,246,229,170,103,122, 19, 97,238,182, 38,176,205,224,141, 5,181,243,249,237,210,206, 85,198, 23, 49, 73,231, 50, 30, 70,250, +190,251, 46,102,175,164,149, 52,207, 50,246, 54, 82, 21,136,178,181,108,172,186,125,247, 16,156, 35, 89,163,213,176,101, 28, 71, + 44,134,159,127,250,145, 47,223,158,153,167,194,112,232,169,214,114, 57, 79, 28, 78, 61,167,227,137,127,252,237,153,174, 31,121, +248,240, 72,174, 91,104,204,198,187,150,192,129,130,163,102,168,200,216,125,232,123,214,117,197,166, 6,189,164,128,213, 82, 4, +148,147,179, 68,138, 90,203,253,135, 39, 14,247,119,244,227,128,115,134,207,223, 94,152, 95,223,232, 31,159, 24,239, 78,252,237, +127,255,127,220,223, 61, 16,124,224,243,215,191, 49,159, 47, 12,135, 3,253,241,192,121,186,176,174,137, 84, 51, 15,227,157,216, + 12,246, 8, 62,179, 19,240,172,179,130,119,237, 58,186,224,121,190, 78,100,110,187,150,132,217, 43,189,222,139,119,178, 57,131, +117,158,212, 36,195,254,235,203, 87,156, 15,116, 65,140, 22,169, 52,250,161, 35,120, 79,239,229,193,202, 89, 60,189, 85,199,138, +173,170,183, 82,129, 14,169, 36, 2, 22,111,149,114,181,117,151, 5,140,173,164, 10, 75,138, 92,150, 85,148,155,189,116, 22,165, +192, 92, 12,207,179,120,223,255,244,233,145,127,253,215,127,229,247,159, 62,113, 58,138, 34,124, 8, 29,161, 15, 2,131,112, 22, +115, 46,188, 92, 46, 92, 46, 87, 94,166,149, 20, 43,165, 72,151,244, 79,255,252, 7,126,248,249,119, 34,217, 58, 47,148,146, 89, +167, 11,231,203,204,195, 48,112,119, 60, 73,154, 28, 13,147, 51, 53,101,134,195,129,208,123,156,173,156,186, 1,219, 28,229,245, +204,255,207,213,155, 53, 89,146,173,105,121,207, 26,124,218, 99, 12, 25, 57,213,169,249,112,206,161,233, 70,208, 64,155, 0,153, +132, 33,227, 2,253, 85, 76, 50,201, 76,128, 12, 97, 38,195,116, 33, 46, 36, 33, 1, 77,183,250, 12, 53,100,101, 86,229, 28, 17, +123,114,247, 53,233,226,251,220,119, 20,117, 89,150,153,177, 99,239,237,107,125,195,251, 62,239,197,114,193, 39,191,252,138,111, + 95,190,226,237,219, 91,172,183,196, 82,168,125,195,112,184,227,187,183,111,168,186, 45, 87,155, 13,174, 50, 28,135,129, 92,139, + 13, 44,167,140, 29, 35,185,239,137, 41,210,147, 57,165, 32,148,176, 82, 4, 27,218, 56,153,176, 84, 13, 88, 79, 54,226, 49,151, +105,149,142,176,201,250,112, 79, 48,152,105,239,173, 80,213,156, 53, 63,228, 60,134, 47, 73,224, 72,146,117, 31,116,238, 39, 21, +248, 4,127,193,200,196,106, 98, 6,120, 47, 23,251, 76,162,154,196,115,234,135,157,242,158,231, 49,179,142,212,167,139,216,152, +105,132, 95,102, 65,220,196,224, 46, 58, 86, 79, 10,144, 41,249,172,130,159, 47,114,197,215, 98, 13,166,120,140, 50,190, 83,202, + 51,236, 99, 90,186,151, 36, 23,117, 73,211, 60, 60,107,174, 64, 58, 95,232, 26,240, 50,141, 47,167,253,250,148, 76,150,138, 19, + 37,116,158, 82, 35, 39, 43,147, 42,135,149,163,110,172,116,169, 20,171,208,141,168, 16, 30,171,214, 78,221, 27,171, 24, 32,150, + 66, 44, 72,252,241,152,233,251, 76, 31,165,235,175, 27,113,154, 92, 94, 94,179,184,124, 12,182, 17, 68,246,238, 37,251,143,111, + 25,246, 71, 62,238, 79,188,191, 61,112, 63, 68, 74, 16,116,180,119,144,157, 35,142,133,126, 72,132, 40,211,154, 92, 36, 34, 57, +228,204,168,110,151, 36,110, 47, 92, 49, 4, 43,239,170, 53, 50,110,246, 70, 46, 11,231,196,222,212, 56,163, 88,102, 41,174,177, + 14,141, 11,144, 15, 78, 87,112,146,128,107,197, 34,166,250,133,126, 24,113,198, 81,217, 5, 85,237,184,188,172,121, 28,247,220, + 31,151,188,250,241, 3,175,239,247,148,193,211,216, 68,182,134,216,143, 56,180,184, 44,134,100,228, 51, 27, 66,198,157,188,172, + 6,189,132,133,212,214, 82,123, 79,219, 84, 28,134,196,219,221,145, 12, 60,218,212,180, 77,205,113, 20, 90,157, 49,142,202, 72, +112,147,119,122,105, 89,201,122, 49, 21,212,149, 21, 64, 84, 57, 19,219,172,115,178, 10, 52, 73, 89,249, 70, 97, 75,133, 49,102, +214,149, 87,175, 56,248,182,230,240,242,196, 16, 50, 77,237,230,201,148,195,146,116,108,238,157, 99, 76,154, 96,105,116,221, 85, +202,172,253, 72, 41,202,235, 83, 58, 29,106,105,179, 22, 74, 52,122, 97, 62,184,144, 85,185, 63,143,207,231, 92, 3,133,158, 89, + 67, 78,250,220,155, 51,230,121,110,245,141,193, 56, 39,142,179,124, 6, 51,157, 19,224, 52,181, 45, 21,170,165,216,115,251,227, +192, 48,244,180,203, 53,222, 90,130,115,164, 60,202,207,112, 10,134, 82,171,155,230, 32,147,212,111,111, 11,248,170,114,146,154, + 20, 18,117, 91,211,199,194,254,208,179, 88, 44,169,234,234, 1, 72,192, 50,156, 70,226, 24,116,119, 38, 20,171,162, 62,208,162, + 47, 90, 38,243,134,202, 59, 34, 34, 6, 41,198, 82,215, 45,171,205,138,139,235, 43,190,251,127,255, 28,231, 12,174,174,216,221, +223,147, 83,230,241,211, 27,222,190,251, 72, 33,178, 94,119,172, 23, 27,198,148,136,199,147,216,113,114,146, 75, 44,229,185,211, +165, 20,154,174,195, 90, 71, 8, 73,119,204, 82,250,196, 24, 49, 10,205, 73, 41,177, 92, 44,121,242,236, 41,213,162,163,235,150, + 28, 15, 61,119,175, 63, 18,134,192,163, 79,110, 56, 14, 3,239, 95,191,225, 87,127,244,199,140, 41,112,188,189, 3, 83, 88,172, +151,140,195,137, 97,144, 46,189,246, 53, 85,213,144,227, 9,239, 37,102, 47, 38,153, 12, 72,138,142, 48,129,155, 70, 66,106,250, + 49,156,217,222, 5,198,156,132,179,173,185,244, 83,240,125,209,110,235,110,119, 32, 91, 71,237, 29,181, 51,196, 48,170, 16, 80, + 40, 91,190, 50,132, 62,144,114,192, 23,167,246, 35, 37,140,233, 78, 82,148,232,137, 94, 21,196,226,125,149, 72, 66,171,108,249, + 62,142, 12, 33,138, 34, 22,163,169, 65,112,123, 42,140, 41,241,235, 95,255,130, 95,125,249, 37,207,158, 63,195,185,154,166,150, +128,146,182, 54,172, 26, 67,215, 53, 4, 10,119, 31,222,112,248,248,145,126, 12,220, 29, 36,105, 40, 43, 92,228,233,103, 55,252, +245, 63,254, 19,234,182,225,120,123,203, 41, 64, 50,134, 99, 78, 92, 95, 95,203,120,220, 27,154, 82,176, 49, 10, 91,160,110,105, +187, 22, 99, 51,203,182,166,174, 61,241,227,129, 69, 85,241,197,111,254, 26,239,238, 15,124,247,195, 75,170, 82,227,141,161,107, + 28,167,251, 61,223,253,244,134,170,170,185,218,174,112,141, 37,166, 44,156,231, 44,138, 96, 51,140,132,211,145, 20, 3,125, 26, + 57, 77,249,222, 70, 92, 7, 77,229,105,218,154,182,173,148, 22,231,116,175, 60,141,122,117, 23,106,156, 42, 95,103, 90,245, 89, +234, 91,242, 76,163, 50, 86,247,119, 88,233, 12,244, 50,150,200,199,179, 18,183,104,226,214, 3,216,230,236,205,133,172, 94,106, + 37,254, 77, 92,108, 30,208,226, 20, 97, 57,147, 58,237, 25,253,138,209,180, 60, 52,201,169,232,247,208,168, 78, 94, 81,149, 69, + 61,249, 15, 71,251, 51, 27,190,156,253,232,211,158,127,250, 89,243,126,124,218,119,147, 5,195, 57,107, 10,178,198,146,170, 94, + 32, 39, 5,229,200,101,159, 82, 18,114, 91,182,170,197,201,115,100,171, 48,190,171, 57,174,245,140,193,117,114,185,235,122, 79, +100, 1, 86,242, 17, 38,255,176,192,222,201,197,145,146, 80,204,198, 49,115,236, 19, 33, 25,172, 19, 2,224,229,197, 37,215, 23, +215,152,118, 73,182, 14, 75, 79,255,241, 13,251,221, 7, 62,220,237,121,127,123,224,195,221,145,211,152, 9, 37, 81,162, 20,108, + 41, 35, 97, 34, 99, 38, 68,163,135,181,236,111, 67,150,117,149, 36,112,105, 7, 57,235, 13,166,115, 82, 94,119, 52,226,111, 55, +128,119, 5,239,141,234,248, 12,109,221, 18, 53,219, 28, 99,213,153, 32,113,214, 69,163, 48,141,254,254, 57,195,253,237,158,219, +251, 61,159,124,250, 9,181,181, 36,103, 41,214, 80,101,199,211,103, 13,221,234,192,199,143, 59,238,118,123,140,250,198,163,140, + 43, 20,207,106, 85, 48, 9, 67, 42, 20, 34,149,177, 84, 77,165, 10,243,204,238,120,164,144,105, 27, 9, 89, 33, 21,246,251, 19, +190,114,248,170, 18,154,221, 56, 82, 45, 87,115, 17, 43,211,219, 36,103,151, 63,103,137,167,156,161, 36,141, 86, 45, 24,147,231, +113,182,179,234,195, 78,130,158,182,149,193, 36,121, 31, 62,238, 14,196,172,233,106,186, 86,178,234, 70,153,206,223, 18,202,217, + 34, 82,204, 57,138, 88, 93, 86,162,162,119,231, 24,214, 9,121, 91,206, 25,239,147, 35, 68, 4,108, 22, 27,229,185, 47, 63,139, + 53, 54,231,184,190,242,128,213, 48, 75,255,181, 56,112, 22,103, 13,164, 66,137,106,105,115,142,164,169,242,165,104,196,170,179, + 84,109,195,238,126, 96, 8, 39,156,221, 10,180,172,106,200, 67,148,207, 71,167,131,222,123, 98, 14,148,236,164,193, 54, 50,191, +203, 25,124,101, 45,199, 18, 48,222,210, 53, 13,247,187, 91,238,110,111,233,214,107,193,195,154,115,212,162,124,145, 35,174,146, +144,221,140,236,112, 39, 16, 5, 69,252,115,206, 90,156, 66,103, 98,145,253,115, 83, 85, 92, 94, 93, 17,135,129,221,253, 61,190, +246,128,225,116, 58,178,189,216,224,189,225,227,221, 61,203,213,146,174,235,232,218, 90,132, 45, 33,147,189, 32, 2,193, 16, 67, +160,120,237, 80, 44,212, 94,133, 23, 49, 97,107, 17, 38,164,156, 9, 57, 75,165,150, 19, 37,194,213,147, 71, 92, 61,190,129,186, +193,215, 53,111,191,255,129,215,175, 94,240,201,231,159,176, 92, 44,248,254,197, 11,170,110,193,245,245, 53,111, 95,126,199,120, +236,105,151, 75, 82,134,225,216, 75,198,243,152, 88,111, 23,148, 28,100,215,227, 43,156, 69,146,216,146, 28,136,206, 91,154,202, +209, 86, 2, 72, 24,194,121,215,151,115, 98,224, 44, 6,241,206,146,141, 28, 82,169,136, 56,176,143,145,218,121, 89,137, 4,201, + 39, 95, 52, 13,222, 90,154,202,170,239, 57,235, 56, 95, 39, 35,147,238,193,137, 85, 67,108,197, 98,117, 10,177, 72,246,178,155, + 4, 30, 70, 66,102,114, 98, 76,130,178, 13, 69,224, 31,187, 19, 92, 63,187,224,239,255,189,191,207, 87,191,252, 66,197, 43,103, +168, 74,221,180,116, 93,195,118, 89,115,125,177,224,238,246, 3,111, 94,124, 79, 63, 14,236,251,145,195, 48,158,225, 98, 14,158, +255,226,107,174,111,158,145,135, 19,198,159, 88,125,250, 57,166,242,216, 23, 47,168, 31, 93, 75,242,213,254,132, 57,238,200, 33, +224, 42, 47,248, 74, 10,171,186, 97,181,108, 57,189,223, 81,167,200, 23,191,249,235, 28, 98,230,119,127,120, 65,127, 12,180,203, +154,101,215,176,187, 63,242,226,135,159,168, 22, 29,143,174, 46,169,234, 74,186, 33,231, 25,211, 40, 79,216, 56,146,143, 7, 66, + 8, 28,211,192, 49, 14,164,105,157,225, 44, 77,237, 89, 46, 58,186,174,197, 87,150,108,213,178, 87,172, 92, 32,169, 96,167, 96, +137, 7, 99,106,166,247,222, 78,123,236,252, 64,133,173,227,107,196,178,152, 75,209,220,227, 50, 99, 53,115,201,216, 98,117, 71, +127, 14, 67,154, 38, 83,211,200,222, 60, 28,219,235,190,115,238,150,149,233, 63, 9,243,152,209,150,218,201, 24,167, 23,121, 82, + 54,180, 66, 82,180, 38, 17,187, 25,115,161, 49, 83,223, 30, 40,218,209,128,165, 89,218, 63,255,236,255, 12, 67,171,236,244, 89, + 73, 61, 37,179,105, 87,110, 74, 38,149,164,190,242, 50,171,192,163, 6,151, 76, 40,205,242, 96,148, 89,212, 15, 60,251,242,231, + 28, 72, 61,212,117,110, 60, 89,149,166, 85,109,158,178,103, 82, 97, 24, 11,253, 40, 19, 67, 95,123, 22,109,203,245,227,107, 30, + 95, 63, 37, 21,207,152, 10, 37,244, 28,238,127, 34,156,142,188,127,127,203,155,251, 35,251, 83,166, 31, 37, 77, 49,164, 72, 73, + 69,207,151, 68, 8,200, 88, 89, 47,244,152, 10, 33, 35, 59,116,161, 67,203, 65,110,152, 41, 4,198,128, 45, 5, 17,250, 91,181, +113,137,200,202,123, 67,213,120,165,242, 89,150,222,113,200,146, 22, 9, 16,138, 20,203, 73, 63, 23, 95,201, 66,126, 90,175, 12, +125,225,205,219,119,252,177,253, 53,237,102, 69, 86, 43,106,118, 53, 84,150,174,179,216,226,105,234,138, 91,127,207,253,254, 64, + 52, 78, 47, 57,212,150,235,136,250, 89, 37,132, 80,151,114, 81,218,163,116,150,222, 73,244,113,136, 61, 38, 58,154,101,131,117, + 86,220, 61, 22,154,182,145,252,144, 73,151,145,165,249,171,107,175,147, 37,193,119, 39, 13,249,113,182,204,193,193,121, 90, 77, +100,203,152, 69, 92,218,181,141,132, 26, 77, 33, 99,199, 3,197, 24, 34,136,165, 87,189,219, 32,231,177,119, 78,243, 14, 38, 39, +167,176, 64,166,224,161,156, 11, 37,102,106,197,205,162,177,176,147,221, 35, 43, 55,194,216,115,240,145,156,181,105,142, 56,146, + 73,137,242, 66,156, 35, 12,113, 78,153,251, 25,111, 98, 34, 71, 24,125,102,115, 38,164, 81,248, 11,206,205, 84,195,105,252, 94, +130,208, 8, 67,217,115, 58,245, 84, 85, 37,246, 90,231, 5,179,157, 5, 57,109,141, 76,131,251, 48, 80,236,148, 29,193,172,183, +240,198, 56,134, 52,176,233, 26, 42,111,217,221,238, 72,197,176, 94,175, 40,174,204,226,121,131, 97,236,123, 93,162,235,161, 99, +132, 2, 69, 42,152, 44,157,137,236, 7, 45,158,164, 99, 96,216, 46, 58,218,182,226,147,103,207,185,187,127, 75, 48,137, 98, 44, +195,105,160,169,106,182, 87, 27,222,254,248,134,170,178, 60,218, 94, 48,198, 8,181,196,191,166, 44,213,183, 68, 54, 10, 63,217, +187, 74, 63, 82,168,155, 26, 40,132, 16,230,232,190, 52,102,156, 46,252, 75,206,116,222,241,248,179, 79,177, 77,141,175, 27,194, + 16,248,225,155,239,169, 26,203,246,230,138, 48, 12,188,127,243,142,103,159, 60,167, 56,184,125,249,154,108, 29,174,178,236,239, +238, 8, 57, 49,134, 68,221, 84, 44,234,138, 97, 28,241, 86,194, 89, 74, 46,140, 33,206, 81,165,117, 85,177,108, 91,140, 85,172, +106, 76,115,182,176,245, 50,201, 48, 69,210,210,112,142,177, 76,161, 30,133,227,208, 83, 25, 75, 82,107, 68, 76,129,182,105, 85, +213, 41,190,214, 24, 19,198, 88,106, 87,105, 4,121, 57, 43,146,173,168, 88, 75, 84, 75,135, 57,231, 30,154, 34, 74,210, 60, 37, +178,165,196, 41,142,226,151,142,134,144, 50,255,240, 31,253, 41,127,246,119,254, 12,223, 44, 25, 66, 15,214, 82,185,138,202,215, +212,117,195, 98,217,209, 52, 45,109,183, 32, 19,184,123,255,150, 52,140, 20, 12,167, 97, 20,126,184,222, 88,190, 54, 92, 61,186, + 97,217,118,224, 10,207,158,252, 49,159,252,209,223, 32,198,158,151,127,241,151,220,190,121,197,241,246, 61,253,174, 39,164, 64, + 93,213,184,182, 38,155, 76,215,118, 92,109, 47, 57,222,126,196, 13, 35, 95,255,230, 87, 84, 77,199, 95,254,254, 27,222,126,120, +207,245,122,195,227,139, 53,239,238,119,188,120,245, 22,223, 54, 92,111, 55,212, 77,165,221, 79,205, 56, 4, 66, 78,152, 16, 72, +251, 3, 97, 24,216,143, 3,183,163, 76,126,156,149,139,163,245, 21,139,174, 85, 43, 97, 37, 46, 14, 44, 99,206, 84, 89,172, 95, + 78,129, 39,118, 18,187,252, 44,103,121,210,251,148,169, 89,215, 14, 69, 15, 27, 43,217,211,115, 66,149,218,198,153, 14,179,156, +200,182, 40,201,202, 61, 24,157, 79,104, 85,221, 23, 63, 40, 20,114, 22,178,213,244,231,255,115,104,205, 20, 64, 65,177,170, 7, +144, 20, 50,233,120, 69,253, 43, 77,136,236,230,162, 78,241,138, 18,225,114,202,224, 45, 89, 95,139,140,205,245,187,150,207,123, +113, 51, 95,242,204, 73, 82, 37,201,119,204,232, 63, 88, 52,132, 4,237,208, 83, 74,243,101,158,139,165,144,148,188,110,230, 36, + 57,166,139,220,228, 25, 61, 61, 77, 37,204, 52,157, 40,231,235, 61,155, 44,118, 65,165,128, 73,209,229,197,211, 30, 50,195, 8, + 17,137, 17, 94, 45,150, 60,186,121,194,245,163, 27,178,105,136,125,143,207,137,221,221, 27,142,199, 15,124,188, 29,249,112,223, +139, 61,109,156,224, 49,129, 49,200,123, 85,137, 3, 80, 10,145,217,129,163,151,122,146, 14,221,100,131,215, 61,236,156,158,101, +164,168, 51,197,224, 42, 35, 99,212,146,149,178,102,102, 76, 42, 64,101,221,140,178,173, 42, 47, 23, 70,146, 53, 91,100, 98,140, + 23,133, 70,105,119,235, 19,251,187, 61, 31,119,119, 60,190,185, 97, 44,134,156, 34,198,121,108,229,112,209, 80,181,133,133,145, +137, 81, 41,112,216, 15, 36,171,239,127, 22, 37,181,117,194,124,151,108, 1,167,191, 27, 84,149, 18,219,212,237, 83,117, 45,141, +113, 12, 41,114,232, 7,172,245, 92,111, 26, 54,203,122, 14, 45,177, 9, 74,148, 17,127, 93, 57, 77, 45, 20, 91,178,224, 95,101, +172, 31,146,106, 31, 38, 71, 73, 18,136,151,117,150, 69,211,232,248,189,225,112,252, 64, 28, 6,101, 15,152, 9,234,166, 93,190, +228,119,120,107,102,133,187, 53, 70,126,215,105,210,100,117,221, 19, 18,117, 43,206, 29, 25,173,219, 7, 19,161,201, 26,166, 23, +165,196, 80,233, 69,111,206, 65,133,101,202, 55,119,115,131,137,174, 50,230,209,253,131,201,154,119,142, 18, 71, 2, 50,253,178, + 86,192, 95, 2, 81,211, 60,128, 40,184,109,231, 44,167,211, 48,251,209,141, 19, 61, 91, 72, 69,243, 45,210, 92,176, 79,130,196, + 98,148, 50,153, 51,190, 32, 99,152,102,187,198,215,150,187,251, 3, 14, 88, 44, 58, 25,103, 79, 73, 60, 73, 72,114, 41,129,211, +189, 27, 89,130, 42, 38, 8, 69,214, 3, 78, 70,100, 73,187,200, 76,211,136,234,124,177,106,121,245,227, 9,178, 21, 12, 98, 30, +217,172,214,156, 14, 39,246,187, 35,151,219, 13,235,205,138,251,253,142,174,171,217,191,191, 37,151, 32,251,205, 34, 59,185, 24, + 19, 94, 15, 11,107, 13,117, 93, 19, 66, 32, 7,241, 64, 26, 99,136, 73,201, 88,122, 90, 93, 60,190,228,201,167,207,168,171, 10, + 91, 89,222,190,126,195,171,239, 95,241, 55,254,246,175,233,218,134, 31, 95,191, 37,165,200,245,147, 71, 28,239,110,249,240,246, + 61,155,155, 75, 14,135, 35, 67, 24,200,198, 50,142, 35,155,205, 90, 14,141, 84,168,219, 26,103,157,132,166, 4,121,141,206, 59, +154,166,165,107, 90, 78,199,129, 49,164, 25, 2, 99, 57,239, 49, 39, 92,165,168, 31, 11,198, 36,198, 16,100,228,232,101,116, 26, + 83,194,120, 71, 83,215, 84,214, 74,118,122,150,223, 43,153,130,215,125,175,203,103, 96, 72, 36, 67, 18, 33, 79,198, 18,162,116, + 5,214, 38,108,209,145,146, 66,129,134, 92, 72,182, 80, 2, 44, 87, 45,255,228,191,250,199,124,241,213, 47, 57,244, 3, 33,159, +112,206, 80, 57, 39,133,204,122, 67,219,173,104,155, 74,190,104,214,114,127,123, 75, 60, 12, 84, 77, 77, 8,137,253,110, 36,198, +243,101,180,112, 11, 22, 11,135, 33,241,248,211,207,248,213,223,254,251, 92, 63,253,132,143, 63,252,129,133,179,252,240,151,240, +187,151, 47,201,251, 61,214, 55, 84,190, 34,151, 68,211,182, 92, 63,186,230,184,187, 37, 31, 3, 95,253,242, 11,218,171, 43,254, +227,111,191,225,135, 31,223,112,185, 88,240,197,163, 13,175, 62,238,248,246,213, 27, 86, 77,197,118,213, 81,117, 13,217, 89,124, + 83,233, 3,146, 48, 1,194,110, 79, 60,245,236,195,200,237,112,226, 56,142, 20, 44, 77,101,164, 59,170, 44,139, 69, 75,215,213, +120,111,137, 57, 51,230,162,147,151,130,141, 8,193,235,103,245,183, 37, 79, 56, 73,173,178, 39,203,155,177,230,156,110,161,182, + 28, 99,100, 71, 58,101, 48, 91,107,149,211,174,239,215,212,241,150,105, 37, 80,230,124,240,172,170,245, 89,193, 62, 23, 19, 86, + 3, 47,236,207,178,211,167,231,149,137, 79,109,100, 92,103,138, 96, 36,207, 35,195,168,227, 96,167,150, 52, 77, 29, 83,253,128, + 36,192, 61, 68,215,102,253, 93, 39,243,186, 2,102,148,231,175, 89,165, 15,108,100,121, 86, 11,139,232, 46,253,204, 29, 32,225, + 41, 69, 45,111,118,126, 47, 74,201,146,222,101,206, 49,178, 81,159, 25,171, 68,189,137,106,230,212, 86, 20, 85, 59,128,208,200, +149,128, 9, 67,204, 12, 65,196,128, 77, 37, 69,233,147,235,199, 92, 63,250,148,100, 29,113, 60, 1, 35,119,183, 47,248,240,225, + 39, 62,220, 38,250, 44, 13, 71, 73, 48,142,146,125, 16, 6, 73,107,195,195,152, 36,235,187,100,206, 69, 69, 41, 66, 40,211,113, +187,247, 22,107,167,128,157,243,154,198,218, 56, 79, 58, 44,162, 9,136, 65, 86,137,214,106, 4,169,129,214, 59,138,119, 16,229, +146, 45,197,224,181,136,138,218,157, 91, 35,200, 98, 9, 74,146,215, 19, 66,230,238,237, 30,251,149,161,106, 44,185, 88,242,232, +201,174,224,234, 66,161,211, 81,190, 33, 6, 71,102,199,225,176, 39,231, 76,215,122, 92,150,240, 26,235,243, 44,126,148,239,134, + 96,172, 55, 23, 45,198, 57,114, 40,132,152, 56,140, 61, 33, 23, 54,171,142,139,205,154,182,149,203,208, 26,175, 30,243, 41,243, + 67, 89,239, 54,147,163, 40,239,179, 69, 45,106,246, 28, 80,164, 88,227, 49, 71,181,186,121,124,219,138,147, 39, 5,118,119, 7, + 98,180, 24, 19, 53,242,219,254,172,144,181,206, 96,189,192,160,208,162, 87, 26,194,252,192,118,173, 95,213, 82,104,213,222,249, +112, 18, 86, 16,118,187, 53, 14,114, 0,155,207, 32, 25,205,177, 40,185,144,221,180, 2, 58,199,203,186,121,181,101, 30, 76,187, +236, 60,189,155,116, 49, 37,103,172,175,176,198,170,190, 74,132,181,165, 20,218,102, 9,230, 61,187,221, 14, 99, 29,206, 24,162, + 13, 88,231,148, 74, 24,165,104,210, 73, 79,158, 19, 24, 53,209,209, 20,252,168,158,209,182,174,160,120,222,223, 29,192, 85, 52, + 77, 55, 43,182, 13,104,186, 79, 34,231, 72, 49,245,108, 17,200,234,231, 43, 70, 67, 59,208,172,100,221,173, 86, 94, 0, 30, 79, +158, 61,226,120,218,211, 15,129,190, 31, 73, 41,211, 84, 13,149,247, 28,118,123,140,181, 92, 61,186,196,104,119,225,140, 35,141, +145, 82, 44, 38,157,195, 40, 82,140,179, 85,206, 26,139,171,107,142,251,147,116,233, 58,122,137,106, 26, 77, 81,104,113, 95,126, +253, 37,171,235, 71,184,182, 37,132,196,183,127,245,123,156, 49, 60,253,236, 19,198, 83,207,241,195, 29,151, 87,151, 44, 86,107, +254,240,187,111, 48,206, 82, 85, 53,199,227, 59, 85,137, 39,172,173, 88, 44, 59,250,221, 73,130, 1,218,138,162,214,168, 82, 36, + 22,207,123, 79,219, 54, 88,107,232,251,147,122, 49,231,236, 45, 81,172, 34,239, 85,113,150, 56,237, 97,115, 97,232, 3,117,227, +165, 67,215, 3,191,171, 26,108, 37,209,170,150, 76, 44,194, 85,119,197,144,116, 60, 52, 37, 6,197, 20, 25, 99, 18,170,188,142, + 33,125,153, 96, 47,106,189, 51, 98,140, 56, 41,141, 61,149,154,103,235,200,223,253, 71,255, 13,155,103, 95,178, 59,158,176, 78, +128, 23,139,197,146,213,114, 41,162,194,122,129,175, 42, 42,231,177,206, 48, 30, 7,118, 31,238, 89, 95,108,249, 16,247,146, 94, + 55, 70, 17, 47, 97, 24, 41,108, 91, 71, 62,245, 44,154, 21, 95,254,250, 79,184,126,244,136,211,135, 59, 98, 24, 89, 47,183, 28, + 94,189,228,116,251, 26,219, 52, 82,105, 83,168,187, 5,219,199,151,132,251, 29,225,118,224,235,191,246, 53,151,151, 87,252,135, +223,125,203,111,127,120,201,147,166,225, 87,143,175,120,127, 31,249,246,205,123,214,141,103,217, 53,216,182,165,120, 75,213,181, + 24, 99, 56, 28, 78,228,146, 8,187, 59,210,241,200, 41, 37,238,135,192,168, 20,179, 20, 51,167, 1, 42, 63, 82, 24,177, 78, 96, + 39,181,151, 81,117, 78,129, 18, 17,157,134,194,141, 42,237, 92,197, 17,114,134,128, 76,123,239,217,167,157,141, 28, 4,240, 0, +252, 98, 30,116,210, 78,193, 20, 19,195,213, 10, 27, 90, 71,221, 70,173,104,198, 41, 22, 86,241,144, 78, 71,236,197,154,217,143, +141,142,240, 11, 15, 46, 14, 85,237, 78,175,175,152,140,193,205, 68, 51, 35, 52, 28,217, 87, 23, 67,202, 81,172, 65, 89, 70,246, + 89, 85,231, 76, 17,172,231,212, 19, 17,124, 89, 43,206, 11,125,246,201, 89,195,100, 38, 12,102,150, 46, 93, 29,240,102,142,106, + 45,114,118,204,106,100, 41,252,203, 12,243,145,208, 24,180,107,116, 42,168, 50, 15,236,178, 37,139,122, 28, 29,137, 58, 29,231, +154,108,100, 60,106, 29, 20,201,174,142, 37, 18,138, 56, 77,114,227, 88,181, 29,143, 31, 63,102,117,253,132, 96, 32,135,145, 58, + 13,188,125,251, 45,111, 62,188,227,246,163,116,102,235,174, 38, 69,195,253, 49,177, 63,141,244,131,140,167,157, 47,115,167, 86, +215,150, 16, 50,161,159, 60,210,162,122, 47,136, 58,217, 57, 93, 63,100,171,238, 9,125,127, 38, 20, 42, 70, 59,110, 41,186, 42, +231,240, 86, 68,118,190, 22,230, 5,230, 1, 46,120, 94,117, 88,197,197, 38, 64,242,128, 99, 58,211, 53, 19,150,247,239, 63, 50, +140,145,170,118, 56, 95,227,147,228, 57,148,146,201,165,194,166, 68,211,180, 44,215, 18, 5, 27, 99, 38, 29, 14,196, 32,113,203, +149,179,148,144,240, 78,215,130, 73, 16,196,133, 72,127,114,120, 47,162, 96, 42, 67,183,104,184, 94,212,226, 94,241,146,113,110, +113, 84,179,118, 32, 98,172, 85,214,131, 46, 99, 38, 49,156,177, 58,113, 80,129,167, 94,134, 83,242, 91, 41,133,186,110,104,219, + 22, 72,132,216,115, 58,244, 50,237, 48,130,221, 46,202,155,176, 69,167, 97,122,201, 79, 20, 70,107, 11, 41,157, 61,231, 37, 26, +140, 51, 28,227,192, 34, 86,106, 31,157,192, 93, 19,172,201,128,115,243,185, 58,185, 2,140, 50, 52,203,244,239, 63,176,169, 77, + 92, 69,147, 38,234, 20,179, 14,109,122,254,157, 51, 36,157,198, 36,138,198,173,234,158, 93,191,247, 41, 37, 90,131, 88,247,246, + 71,198,126, 96,179,109, 25,195,153,103,159,179,156, 33, 78, 29, 2,166,156,243,212,139, 62, 51,126, 28, 18,198, 58,150,157,167, + 31,122,142,199, 3,171,229, 2, 95,157, 71,129, 20, 24,227,200,233,212,171, 75,165, 60, 0, 74, 8,211,184, 66,136, 79,147, 5, + 39,100, 24, 77,193, 91,203,102,179,226,122,123, 73, 63,244, 28, 78, 61,135,253,145, 90, 69,120, 18,228,146, 89,175, 23, 60,187, +188,226,167, 87,239, 5,252,225, 29,199,195, 81,246,138,136, 95, 62,198, 32,227,187,164, 86, 23,235,105,154,142,251,143,251,105, + 26, 49, 11, 25, 74, 46,132, 24,241, 77,195,205,211, 39, 92,109, 47,184, 61,220,113,251,230, 35,111, 95,191,230,249, 47,158,179, + 90,173,120,241,227,107,246,253,137,231,207, 63, 39,245, 3,119, 63,189,163, 93,118,156,118, 7,134, 99, 79,178,134,211,208,179, +189,184, 32,151,204, 56, 6,182,219,133,188,158, 49, 18,163,136,207,112, 14, 95,121,218, 85,203,120, 72,244,251, 3,163,247,194, +108, 87,216, 72,166,144,147,248,126,221,131,208,131,156, 51,197, 26,124,241, 58,173,147, 93, 90, 91, 9, 57,174,170, 61, 57, 10, +172, 99,198, 16,170, 96,194, 90,139,171, 60,141,173, 25,119,119,132, 96,169,156, 82,199,188, 17,171,152, 49, 84,181,210,171, 50, +140, 67,225, 56, 22,174,218,204, 63,248,111,255, 41,254,226,134,225,180,163,174, 60,109,187,161, 91, 45, 88,174, 87,116,237, 18, +235,196,115,233,124,173, 23, 79,230,238,227, 59, 22,171,142,155,203,150,223,191,248,150,227, 73,203,132, 36,135,182,205,114,240, + 1, 92,125,241, 25,151,191,248,148,227,126, 79,238,143,116,235,142,127,247, 47,254,103, 94,254,197,159, 83, 85,141,118,112,133, +170, 89,240,232,217, 35,194,110,207,112,127,228, 23,159, 63,231,209,179,199,252,197,119,223,243,251,239,126,224,105,219,240,213, + 47,158,243,227,110,207,139, 55,239,216, 84,158,182,173,201,222, 97,218, 90,184,240,109,203,237,221, 61, 41,102,226,110, 79, 60, + 29, 24,115,228, 54,244,244, 89, 4, 78, 5, 67, 85,201, 46,241,118, 31,233,150, 71, 86,139, 29,235,205, 10,154, 6, 59, 6,106, + 35, 9,115,227, 40,112,158, 62,128,241, 18,175, 59, 7,134,152,172, 94,126, 51,227, 79,141,170,217, 37,241, 78, 70, 98,103, 69, +138, 82,166,244,146,155,226, 25,101,103,231,117, 7, 44, 93,186, 45,231,177,157,168,232,181,107,213,135,185, 20,243, 96,106, 48, +225, 95,203,236,127,157,148,240,217, 90, 92,177,103, 63,242,100,121,203,103,166,204, 20, 14,147, 85,184, 36,184, 86,141,196,156, +124,240,197,145, 74, 60,199,180,206,171,119,185,192, 77,153, 92, 48,249, 44,142,123,208,161,203,103, 60, 21, 2,146,106,150, 85, + 4,150,243,131,179,164,156,119,131,115,140,235,100, 85, 82,113,162, 41, 98, 3,147,196, 62,249,125, 43,235, 25,163,153, 71,167, + 41,195, 49, 36, 98,145,189,233,182,109,185,121,252,132,139,235, 39, 56, 91, 19,210, 64, 49, 61, 47,127,250, 61, 63,254,248,134, +251, 99,162,110, 61, 79, 46, 27, 22,155, 39,124,247,242, 13,135,254, 3,251, 83, 34,234,170,172,148,194,230,226,138,175,190,254, +235,146,147,126,188,231,118,119,203,221,221,158, 23,223,191,228,216,139,232,205,171,112,205, 27,163, 99,211, 60,167, 86, 22, 85, +239, 59, 43,100, 70,239, 43,234, 42, 41, 29, 82,215, 28,206,227,155, 90, 71,213, 81, 28,140,186,214,137,243, 16,199,204, 28,115, + 42, 73,245,179,128,183,153,211,233,192,110,183,227,241,227, 71, 26, 21,106, 49, 89,138, 86, 40,148, 84, 83,140,161, 42,150,213, +218, 66, 42,140, 67,207,187,187, 19, 99,137, 92,111, 26, 38, 76, 66,213, 54, 80,172, 36,101,246,137,166,206,212,173, 97,181, 94, +176,104,107,124,229,164,248,146,185,185,116,233, 72, 17, 35,227, 98,157,166, 86,146, 84,153,210,100,142, 40,120, 43,137,134, 15, + 44, 25, 58,169,146,240,146,148, 18,139,101, 67,211,212,156,250, 35,227,113, 32,246, 35,198, 61,248,126, 79,250, 19,100,156, 93, +233, 37, 42,240, 45, 48, 41,207, 35,245,105,109, 37,127,192, 17, 75,198, 91, 43,197, 20, 69, 66, 95,116, 98, 96,157, 20,141, 86, + 11,215,162, 49,168,211,231, 56,249, 66, 77, 65, 11, 61, 51,175,164,205, 3,132,243, 36,150,155,242,213,139,147,179, 33,199,130, +171, 13,222,215,196, 48,234,179,160,154, 17,107,104,170,154, 48, 14, 28, 79, 71,174,174,183, 88,115,210,245,157, 76, 32,189, 53, + 84,200, 89,100,231,226,162, 40, 84,202,224, 67, 8, 56, 87,104,234,134, 83,223, 19, 99,166,233, 22,218, 25,156, 69, 51, 41, 68, + 17, 85, 24,141,201,227,188, 83,140,165, 16,162, 36,116, 89,231, 48, 41, 19, 38, 84,160,181,226, 83,174,107, 14,251, 3, 31,239, +110,177,214,209,117, 29,119,119,119,248,202, 97,139,101,123,177, 97,179, 92,242, 50,189,161, 91, 45,177,214,176,187,187,167, 97, +122,225,178,127,156, 4, 55,185, 20, 17,100, 24, 71, 76,233, 12,208,143,211,190,206, 48, 30,122,158,127,250,140,231, 95,124,142, +245,142,221,219,143,188,127,243, 30,103, 12,207,191,254,148,126,119,164,223, 31,113,109,205,197,245, 53, 31, 62,126, 80,151,142, + 97,119,191,167, 56, 71, 72, 17,156, 99,117,177,101,127,251, 17, 79, 22, 15,103,129,144,210,236,223,247,206,177, 92, 44, 88, 52, + 11,126,124,253,138, 84, 10,195, 24,206,150, 64, 35,124,100, 83,116,125, 97,153, 9, 71, 41,137, 33, 33,167,172, 95,118, 71, 91, +215,152, 74, 62,224, 10,195,152,242, 60,242,211,166, 75,196, 43,206,178, 92, 53, 60,125,126,205,179,241, 17,239,126,186,229,112, + 24,164, 8, 32,225,140, 48,208,171, 70,246, 84, 33, 6, 73, 97, 11,153,191,241,247,254, 22,235,235, 27,138,105,168, 87, 11,234, +110, 65,215,117, 52,181,199, 87, 53,222,122, 17,116,104, 22,113,101, 45, 31, 94,255,132, 5,110,158, 61,199,166, 59,226, 48,114, + 60,157, 68,144,168,182,145, 69,227, 89,212, 21,214, 59, 46,174,174, 24, 15,247,196,195,145,245, 98,201,127,250,183,255, 27,191, +253, 63,255, 45,190,174, 24,199, 65, 46,165,182,101,243,232,130,120, 56, 16,246, 59, 30, 63,123,194,205,227,103,252,246,197, 15, +124,243,226, 39, 13, 65,189, 0, 0, 32, 0, 73, 68, 65, 84, 21, 87,222,241,229,243,167,220, 31, 6,126,120,251,158,174, 42, 44, +234,134, 16, 11,213,178,165,234, 22,212,171, 37,131,238,206,227,225, 64,127,191,163,228,196,126, 12, 12, 89, 2, 58,202,148,155, +109, 12,174,174, 49, 68, 62,236, 14, 80, 59,168, 28,215, 23, 27,156, 17,225, 15, 14, 92,229, 72, 49, 18,199, 68,240, 18, 79, 60, +239,201,140, 10,114,172,211,139,200,106, 26,149,136,244,166, 8, 76, 25,157, 91,197,171,234,197, 51,141,242,140,147,106,126, 34, +204,149, 51, 74,114, 86,180,155,243,136,151,146, 49,218,253, 25, 99, 21,120,161,211, 26, 35,225, 24,243,184,183, 72,215, 36,123, +197, 52,115,220,207, 74,118, 29,185,103, 51,123,149,207,250,191, 60, 31, 84,232,101, 83,230,203,250,156,163,105, 10,243,133, 60, +139,231, 38,237,154, 38,100, 77, 35,245,137,230,150,117, 7, 61, 97,236,165,235, 18,189,130,157,188,220,246,108,107,178, 58,218, +151,247,110,218,106,104, 88,147, 84, 79, 10, 83,242,152, 98, 72,197, 50,132, 72, 12, 6, 99, 42,154,182,226,209,205, 35,174, 31, + 61,193,184,150, 56,158,240, 37,242,253,203,111,248,230,197, 43, 78,199,192,102, 81,241,236,233,154,223,252,230, 79,249,241,253, +145,211, 31,126,164, 63, 69, 74,148, 11, 35,102,184,122,124,201,223,251,135,255, 53,207, 63,249, 10,235, 44,143,174,110,120,242, +217, 39, 84,190,229,197,203,239,248, 95,254,213,191,228,223,255,223,255, 23,158,204,112, 28, 72, 67, 79,140, 50, 38,159,144,177, +102,178,102,121,125,118,213, 15,237, 39, 20,176, 43, 42,190,146,189,170,215,184, 80, 3, 68,151, 49, 70,108, 83, 36, 43, 29,168, +218,168, 48, 81,242, 7,172,116,171, 49, 69,114,201,248,202,147,146,199, 36, 97,134, 20,239, 40, 77, 75,177, 21,149, 25,201,170, + 67, 56, 13, 39,220,221,192,161, 79,212, 54,112,189, 94, 82, 87,158,197,162,162,115,150,221,209, 18,134,192,106,219,177, 94,119, + 34, 16,174,164, 75,204,185, 16,245, 78,176,186, 70, 49, 38, 19,130,248,208, 43, 47,200,162, 9,126,148,181,192,115,206,225,188, + 19,203,223,124, 97,218, 57, 19, 60,134,204, 98,209, 72,115, 23, 51,167,126,144, 78,213, 78,150, 62, 93,193, 86,242,124, 85,202, + 84, 9, 49,204,177,175, 86,215, 33, 98,173, 44,138,234,205, 88, 87,136, 89,241,222,222,137, 4,174, 8, 99, 69,114, 1,138,142, +244,213, 29, 34,190, 55, 93, 21, 76,193, 69,101,198,178, 78,255,165,130,102,168,193, 57, 41, 65, 86, 67,178,123,151,179, 61,147, +212,221,225,102,204,236,180,198,115, 94,148,237,227,225, 72,223,247,120,239, 84, 84,231, 41,101,156, 87, 4,214,138,149,207, 76, +156, 8,213, 34,148, 12,190, 15,145,235,205,138,170,170,249,120,119,226, 20, 18,155,174,157,171,149,105,215,144, 98,150,113,198, +100,190,127,240,224,101, 5, 82,164,164,209,119, 81,118,201, 88,139,113,150,155,155, 75,138,177,220,239,143,156,142, 71,182,219, + 45,199,227,145, 83, 63,176,109, 55,148,186,112,121,177,153,139,134,166,235, 24,250,145,177, 31,168,218, 86, 4, 0, 41,147, 52, + 25, 68, 24,188,146, 93, 91,140,161, 68, 84,169, 47,194,140,148, 85,120, 48, 38,158,255,226, 57,143, 62,121,202,233,253,142, 15, +239,222,112, 58, 12, 84,203, 37, 87,143,175,185,251,241, 13,135,251, 59,174,110, 30,209, 44, 59,222,255,127,239, 48,222,114,220, +221, 17,198,145, 76,161, 79,129,205,102, 77,202,137,227,254,196,197, 70, 70, 77, 50,218,143,202, 88,183,248,202,179, 88, 46,136, + 41,179,223,237,101,151, 51,171,126,172,226, 69,147,198, 11,150,153,236,150,148,162,149, 98,198, 54,114,216,215, 85, 37, 66, 60, +239,100, 23,165,202,219,185,235, 43,210,169, 88,107,169,235,138,237,197,146,110,221,144, 15,137,213,106,129,119, 53, 41, 4,188, + 5, 72,212, 78, 20,167,113, 24, 24, 99,230,254,212,243,233,231, 95,243,236,243, 95, 82, 55, 29,109,183,166,106,215,184,186,166, +210, 76,246,218, 87, 84,117,141,173, 43,124, 85,227, 72,220,127,188, 39,140, 3, 87,143, 31,209,110,215,236, 95,189, 85,203, 96, +156, 37,225,149,179,116, 77, 77,137,194,220,127,247,195,119,212, 37,177, 93,110,248,230, 63,252, 59,254,227,255,254,111,112,198, + 50,132,147, 92, 82,214,178,220,108,160,239, 73,199, 3,143, 31, 61,225,250,230,134,239,222,188,230, 47, 94,188, 96,235, 28,159, + 92, 92,177,219, 31,248,225,118,199,178,178,172,235,154,253,144, 48,117, 75,179, 92,210, 46, 22,228, 16, 56, 30, 79,196,227,129, +225,254, 14, 76, 98, 31, 71,134, 34, 70,171,137, 48, 85,180,251, 75, 57, 9,215,189,105,184, 63, 13,164, 55, 63, 82,217,194,229, +246, 6, 20,163, 91,233, 62, 51,165,204, 48, 4, 97,179, 47,228,115,153, 59,246, 82,244,176,157, 46,234, 41,208, 65, 71,209, 42, +114, 51, 69, 52, 16,226, 77,182,242,144,234,136,110, 22,163, 78, 30,100,189,244,103,183, 28,103,114, 85,121, 48,206,182, 78,251, +121,229,177,231, 7, 94, 90,235,220,252,172,156, 33, 48,102, 86, 1, 27, 61, 77,140,146,203,152, 29, 44, 42,139, 85,200,141, 74, +200, 53,223,253,124, 40,207,175, 3,165,196, 21,233,193,115, 74,130,251, 78,233, 65,241, 32,100,186,164,187,204, 73, 16,103,103, + 58,154, 18,235,172,213, 75, 80,251,250,249, 66,231, 92,196, 56,193,235, 90, 45,164,138,113, 20,103,112,222,144,163, 40,207,251, + 32,252,187,170,170,185,188,186,230,226,234, 26,235, 60, 41,141, 16, 3, 47, 94,125,195, 55,223,252,129, 49, 56, 86,203,134,103, +207,175,248,155,127,250,103,184,230,154,253, 15,127, 78,223, 71,250, 33,205,211,140, 2,124,249,245,175,120,242,201,103, 84,139, +142,171, 71, 55,124,245,229,175,169,214, 75,108, 41,252,230,250,154, 79,127,249, 43,254,249,127,255,207,248,238,155,191,162,164, +192,225,118,199,238,110,199,253,253, 61,125,127,156,207, 76, 55,137,220,244,243,246,198,226,140,167, 32,200,208, 20, 34, 37,171, +192, 77,215, 40,121,182, 19,138, 16, 86,138, 68, 72, 81,162,103, 5,244, 37,127,191,105, 86, 98, 71,174,188,188,207,141,138,136, +149, 17,144,179, 76,238,173,171,112,181,161,189,184,228, 42, 69,134,126, 96,183, 63, 50,142,137,136,101, 89,123, 22,109, 77,235, + 44,117, 91,225, 45, 44,219, 10, 91,123, 48,150, 68,198, 70, 75, 50,146,201, 17,139, 20, 91,101,130,108,141,137, 84, 96, 89,249, + 57, 84,103, 54,225, 89, 41,152,179,117,228, 84, 72, 57, 82, 30, 58, 40, 74, 6,107,105, 59, 97,125,164,152, 24,251, 56, 3,183, +166,213,111, 49, 83,226,185, 78,223, 84,251,101,149,163,194, 4,116, 82,164,121,121,176,178,202, 72,161, 63, 61,115,243,154,108, +178,142,154,115, 7, 46,255,223,204, 82,153,172, 69,128,113, 19,182,121,178, 91, 48,143,243,205,131,130,124,246,165, 35, 5, 91, + 52,105, 70, 74, 91,107,132,208,138,157, 5,176, 50,141, 43, 26,108,164,182,218,169,120, 85,139,182,247,110, 78,108, 43,211, 57, +227,100, 98,232,199,113,160,107, 47, 36,160, 96,127, 16, 52, 96, 91,159,137, 56, 72,152,135, 92, 96, 90,249,144,231,148,136,244, + 64,177, 42,168, 63, 7, 86, 66, 62,198, 20,216,172, 87, 92, 94, 62, 34,198,192,253,237,142,166, 91,114,113,121,193,235,159, 94, + 83,215, 30, 67, 97,187,221,176, 89,181,140,167, 1,140,161, 93,116,140,195, 72, 14, 25,187,144, 78, 61,166, 72, 12, 3,248, 90, +212,185, 46,171,128, 34, 17, 75,164,182, 2, 48, 72, 73,186,223, 49, 68, 86,219, 37,159,126,245, 37,139,174,227, 47,191,253,115, + 62,188,253, 72, 44,142, 79, 62,251, 5, 37, 6, 14,135, 61,197, 22,214,151, 23, 28, 15, 71,142,251, 61, 54,103,246,239, 62, 98, + 87, 29,161, 68,114,137,108,182, 91,238,110,111,113, 64,183, 16,204,105, 63, 6, 17,173, 24,249,192,150,139, 5,139,229,130,119, +239, 62, 8, 77,204,203,110,234, 12, 22, 53, 15,214, 25, 26,143,145,132,197,156, 53, 66,209,153,105,156, 14,149,129,182,170, 48, +186,214,152, 8, 90, 20, 52,166, 85, 82,146, 22,235,142,237,213,134,146,161,223, 7,193,157, 90,232,218,134,101, 83, 99,140, 88, +136, 98, 26,232,211, 72,204, 1,227, 90,158, 63,127,206,114,189,101,181,220,144,245,130, 33,203,197,103,124,141,243, 50,214,247, +117,133,113,133,227,135, 3,251,251, 91, 22,219, 13,171,203, 11,114, 42,132, 48, 8,253,202,214,148, 34,153,198,141,151,162,101, +215,143, 12,167, 19, 63,125,251,123,170, 24,120, 87, 12,191,253, 63,254, 13,253,225, 72, 56,157, 36,154,215, 91,124,219, 80,151, + 8,135,129, 39,215,143, 89,108,183,188,122,255,129,239,126,124, 73, 99, 29, 79, 86, 75, 78, 37,241,241,112,162,245,176,112, 21, +199, 49,147,173,103,185, 89,178, 88,175, 36, 29,239,112,224,116, 56, 48,220,237, 40,121,164,207,145, 35,153, 56,193, 39,244,194, + 53,198,137, 24, 46,138,149,111,185,217,112,181, 94,177,191,189,231,199,159,222,179,104, 90, 22,155, 21, 69,116, 56,212,222, 49, + 40, 18, 57, 12, 81,214, 70,110,154,152, 8, 84,162, 32,236, 1, 1,200,232, 69, 61,165, 77, 21, 51, 31,102,197, 78,158, 85,165, +162, 61,252, 62,168,181,198,204,151,254,195,176,138,179,133,108, 98,187, 59,103, 30, 80,228,202, 76, 98,159, 44, 62,197, 32, 15, +121,138,234,146,208, 29,174, 77, 51,170,213,168, 85,103,214,126, 76,228, 58,109,133,102, 88,140,142,200,147, 42,174,115,154,252, +209,121,254,217, 69,109,111,230, 63, 99,109, 23,242,249,207, 77,105,101,229,231,233,115, 83,246,185,153, 19,183,204,153,152, 55, + 17,226, 52,200,206, 98,117, 90, 43,107,139, 82,132,241, 96,212, 53,114, 28, 71, 82,145, 14,108,165, 96,153,182, 93,146,178,161, + 31,246,188,125,249, 29,191,253,253,239, 40, 24, 54,109,197,231,191,252,140, 63,250,155,255, 5,110,241,132,187,187,143,164,148, +216, 29,143,132, 44,246, 76,147,224,250,233, 5,207, 62,253,140,182, 89, 80, 53, 21,219,139, 11,252,178,211,108,111,200, 99,100, + 81,119,252,173,191,243,103, 28,246, 59, 78,187, 29,222, 84, 56,191,196,249,138,195, 78,130,176, 74, 78,178,118, 83, 81,151, 55, + 83,146,154,172,113,138,134,137, 56, 83,176, 38,225, 73,115,211, 68,158,160, 58,121,134, 76, 21,196, 73, 99,140,160,110,139, 49, + 44, 22, 29,109,183,160,173,151,196, 20, 48,202,160, 15,113,210, 46, 76, 95, 43,185, 36,114,129,166, 93,242,244,230, 18, 12, 28, +142,189,224,120,157,197,187, 90,166,161, 94,114,218, 93, 45, 34, 50,156,197,230, 40,159, 69,209, 49,116,150,162,205, 26, 17, 64, +198,144,168,173,224,100,141,183,202, 42, 16,145,175,169,244,223,193, 81, 76,158, 69,145,101, 66,250,103,185,180, 54,219, 5,217, +100,246,187, 3, 67, 63,204, 83, 34,171, 36,196,172,247,147,119,154,102,166,124, 12,171,211, 56,153,222, 70, 41, 28, 82,162, 88, + 93, 51,101, 85,145, 91, 45,140,199,201,206,121, 38, 45,254,140,164, 90,206,250,134,152,166,144, 43,121, 22,164, 70,179,202,164, + 96, 78,141, 59,163,153, 31,224,157,141,112,236, 71, 51,146,115,196,251, 86, 86, 40, 41,233, 52, 43,170, 83, 69, 24,247,227, 48, +156, 71,247,198, 97,156, 35,196,129, 84, 28,222,120,209,161, 36, 41,170, 82, 22,219,114, 6,252, 56,140, 52, 77, 77,206,112, 58, + 30,168, 43, 79,221, 52, 58,234,146, 81,239, 57,152,225,172,194,181, 83,152, 69,154,108, 42, 50,106,180, 22,162, 26, 85, 82, 74, + 92, 92,172, 89,174, 26,210, 56,112, 56, 30,216,110,182,220,221,222,209, 31,143,172, 54, 43,234,202,115,117,113, 1,197, 49,198, +129, 4, 44,186,142, 15,239,222, 18, 71,217, 9, 69, 77, 90, 43,198,170, 82, 56,171,207,211,209, 15, 3,169, 88,173, 82, 50, 49, + 5, 82,201,140,105,228,249,243,175,249,228,179, 79, 56,237,110,249,233,119,223,226,187, 26,154, 37,143,158, 60,230,254,246,150, +126,127,160,219, 92,112,113,117,197,119,223,126,139,201,153,251,251,123, 78,125, 79,183, 90,144, 82, 97,217, 46,201, 99,224,184, + 63,112,177, 94,225, 27, 71, 10,137, 16,228, 13, 52,198,224,171,154,245,230,130,148, 50,167,227,137,170,174, 72, 36,134, 83,148, + 93,160, 50,123,141,245,146,189,109,161,196, 72,204,226,121,205, 37, 83,123,201,173,119,222,225,138,149,135,200,170,237,133,137, + 76,165, 54, 9,103,177, 46, 83,119, 13, 23, 55, 87,212,221,154,253,237, 78,144,233,200, 72,190,171,107,106, 47, 63,221,251, 37, +203, 58,115,113,209,176, 88,182,220,254,213, 29,139,110,133,171, 60,253, 48, 96, 76,194,123,137,223, 45,117, 69,114,186,187,169, + 3, 37, 26,134,221,192, 97, 39,171,146,182, 91, 10,135,185, 63, 81, 6,113, 35, 56, 35, 58, 1,239, 61,141,181,140, 33,146,172, + 39,167,145,241,180,227,155,255,244,255,112,255,242, 37,105,119, 98,140, 59,108,150,156,121,223,212,212, 93, 11,185,231,179,231, +159, 18, 11,188,188,253,192,171, 55,111,240,166,230,147,174, 38,164,194, 16, 7,106, 11,173,175,216, 15,145,221, 16,216,222, 60, + 98,125,113,129,247,142,227,233,196,225,126,199,233,227, 45,101, 28,233, 75,230,144, 84,197,236,164,138,118, 58, 38,143, 26,164, + 51, 38,113, 83,156,250,192,231, 79,175,185, 90,173,249,225,213, 15,188,124,243,158,175,187, 53,190, 50,194, 98,247, 53, 13,134, + 49, 22, 98, 22,151, 66, 85, 9,234,210,123, 59,163, 42,179,122,223,166, 74, 30, 3,222,248, 7, 62, 85,167,246, 25, 71,182,231, +221,183,224, 63, 85,144, 58,131,162,101, 34,230,212, 98, 84,172,225, 1, 70,123,182,148, 19,147, 36, 93, 25, 67, 33,226,245,114, + 19, 64,142,193, 36,189, 68,153,176,171,101,182,220, 88, 47, 20,149,152,148, 78,101, 69, 29, 95,116, 68, 41, 23,177,118,223, 6, + 61,148,133, 81, 45,250, 1,241,239,103,237,200,245,101,171,170, 61,205,252,237,156,167, 36, 54,189, 72, 20, 68, 99, 21,252, 33, + 35,118,217, 23, 26, 61,100,157, 90, 60, 37, 63, 62,233,154, 65,166, 27,214, 66,214,181,133,196,203,122,237,168, 44, 67,148, 29, +184, 49,142,101,183,224,230,209, 99, 22,203, 13, 56, 67,191,191,231,221,171,151,124,243,205,239, 24,146, 97,187,176,124,250,213, +103,252,201,223,253, 39,100,239,136,241, 36,197,178,210, 23,163,113, 20, 43,182,220,213,122,195, 98,185,166, 54, 30, 31, 19,155, +213, 22, 95,213,212,170, 61,200,206, 17,134,129, 69,187, 96,187,217, 98, 82,102,236,143, 88, 27, 5,178,229,188,232, 71, 98,196, +216, 60, 11, 38,173, 62,227, 69,109,102, 83, 58, 89,237, 29,149, 5,156, 37,154,162,127, 7, 92, 50, 12,197,206,239,227,204,196, +159,248, 6, 85,141,117, 78,222,223,202,225,172,128,125, 38, 2,153,172,138,146, 88, 52,157,161,202,158, 33,141, 20,103,168,154, +154,174,109,177, 41,178,110, 91,174, 46, 30,209,117, 45, 57, 38,246,253,158,125, 78,108,173,103,233, 42, 81,226, 59, 65,247,154, +172, 30,191,156,102,232,209,132, 4,174,188,195,249,138, 76,198,154,138,148, 5, 5, 91,123, 89,231,141,105, 90, 63, 27,240, 83, +248,137, 37,101, 67,215,121, 22,139, 53, 99, 63,178,219,157,196, 13,100,132,239, 33,133,164,218,218,244,249, 50, 78,220, 4, 38, +107,103,108,206, 90, 12,225,167, 48, 71, 11, 11,170, 87, 26, 25,203, 89, 60, 42,228,159, 51,122,217, 24,133,189,232, 56,223, 56, + 9, 17,154, 50, 13, 44, 50,205,246, 42,246, 76, 26,158,148,116,221, 98, 85,252,103, 30,176, 94,156,149,162, 62, 38,249, 30,120, +235, 20,167,174, 41,114, 49,206, 34,184, 48, 40,184,204, 88,153,220, 88, 59, 7,169,233, 99,174,103,129, 52,222, 73, 97, 81,214, + 85,150, 85,183, 32,164,200,221,253,129, 69,215, 80, 85,142,130,197, 89, 39, 2, 13, 77,247,153,162, 33,167, 74, 92,215,116,228, + 82, 8, 42,114,113, 86, 40,104,165, 88, 78,177,112,177,189, 96,179, 88,203, 20,192,121,154,186, 99,119,183,151, 29,144, 49,108, +183,107,150, 77, 77,193, 18,198,136, 87,242,208,112, 26,196,146,166,149, 89,140,105,102,231,230, 82,112,166,194,122, 75,136,145, + 90, 89,235, 25, 25, 89,140, 41,209,117, 29,159,126,253, 25, 77,215,241,234,219,111,197,204, 95,215, 92, 95, 93, 96,125,197,113, +119,160,202,112,121,117,137, 45,133,143,183,183,140,253,192,254,195, 29,174,178, 4,205,117,222,110, 46, 56, 28, 78, 20, 42, 22, + 77,131,209,170, 47,167,172,202,199,194, 98,177, 96,187, 93,179,223,237,133,100,231, 28,118,170,162,244,176,155,178,172,205,204, + 61,142,164,146, 8, 41, 97,138,144,223, 80,241, 84, 61,141,221, 39,239,164,254, 25, 97, 93,203, 30, 21,235,217, 94,110,216,108, +183,140, 67,224,120,236,165, 90,180,150,186,246, 84,109, 69,182, 5,215,212, 44, 54, 27,110,158, 60,229,201,211,207,120,244,201, +103,100, 19,168, 52,153,207, 56,176, 85,133,169, 26,140,247, 24, 47, 42,126,163,144,141,211,254,142,251,247,111, 8,121,160, 91, + 45,169,235,165,164, 32,185, 12,190, 48,234,207,180,165,176,168, 44, 37, 39, 78, 41,113,185, 94,144, 99,224,238,221,107,110,191, +123,193,120,123, 71,223,239, 48, 89,166, 29,166,173,113, 93,141, 39,243,229,245,103,244, 22,126,218,239,248,241,253,158,214,183, + 60,106, 61,161, 20,250, 60,226, 76,166,245,150,211, 24, 57,197, 68,187,232, 88, 93, 46, 49, 11,207, 16, 35,253,253,158,211,251, + 91, 74, 63,112,202,129,147, 98, 71,201, 2,251,240,206, 82, 87, 22,231,197,106, 21, 21, 78, 84, 82,162, 15,137,211, 24,184, 92, +119,252,234,243, 47,200,169,240,226,237, 75, 98,208, 28,244, 18, 37,163,216,171,112, 38, 37,153,176, 76, 56,138, 34,252,106, 99, + 42,137,180, 53, 10,174,180,210, 57, 25,123, 14,141, 72, 8,219, 65, 62, 39,163,214, 25,171,133,154,154,102,237,132,167, 84, 91, +151,181,243,148,193,254,172,123,200,154, 48,101, 69,220, 86,236, 89, 84, 55,137,214,166,139, 82,119,183,214,122, 29, 87,158,167, + 0, 50,180,140, 98, 5,155,197,113, 9, 74,156,125,223,147,202,191,168,166,201,150, 66,137, 73,119,139, 58,142,156, 71,253, 15, +246,236,115, 3,244, 96,143,175, 73, 34,211, 1, 59,189, 26,103,228,188,177,147,167,219, 62,132,182,152,115,216,135, 78, 71,230, + 16,202,169, 75, 79, 16, 71,201, 1,244, 77,203,197,229, 21,203, 77,135,241,112,220, 29,249,240,246, 37,223,126,255, 59, 78,169, +176, 88, 20, 62,249,250, 75,126,253,183,254, 41, 39,179, 96,204, 14, 76, 35, 50,103,223,210, 45,150, 66, 98,196, 66,132, 56,142, + 34, 2,243, 5,227, 60, 33,139,242, 60, 27,221,129,251,154,102,187,224,213,235, 87,252,248,250, 53, 63,253,244,154,251,187,123, +226,208, 43,197,209, 96,157,236,114,165, 11, 23,122,156,175, 12,174, 42,218,109, 11,123,163,118, 78, 2, 90, 26,199,182, 53,108, +234,194,210, 21, 86, 54, 83, 21,233, 58,115,144,238,221, 59, 55, 3, 86, 50, 69,254, 61,107, 48, 41, 17,197,223,194,148,136,154, +141,161, 88,175,225, 31,250,153, 57,143,241, 53,149,245, 84, 10, 84,177, 85, 67,219, 46,185,121,254,140,102,217, 10,242,218,201, + 40, 62, 83, 24, 82,146, 38,203,228, 7, 77,158, 52, 44, 6, 9, 73, 9, 81, 5,129, 85,193,218, 44, 80,160, 36,197,157,197, 11, + 90, 27, 29,157,155,105,165,108,165,115, 47,134, 83,202,172, 54, 11,150,139,142,221,110,207, 48,158,244,187,166, 35,236, 9,224, + 56,137, 42,141, 38, 85,230, 60,143,175,153, 73,141, 70,249, 41,210,168, 72, 33, 41, 17,227,146,123, 2,102, 78,206,123, 0, 9, +154, 47,246, 7,140,132,137, 43,143, 28,127, 70,127,110, 46, 60, 64, 34, 21, 29,251,171,200,212, 73,182,122, 70, 82,159,188,173, +245,245,201, 93,101, 85, 23,101,244,217,152, 34,156,141, 22, 9,121,130,154, 1, 54,159,161, 78, 24,131,119,149,138, 13,229,142, + 44, 37,147, 67,194,183, 77, 67, 91, 85,244,125,207,113,232,105,170, 70,126, 25,175,202,190,146,137, 65, 82,198, 80,241,192,164, + 46, 87, 47,135,252,210, 73,210,122,156,117,130,241, 35, 97,189,231,226, 98,139, 51,133,144, 34,190,109, 8, 41,112,220,237, 9, + 41,225,234,138,155,199, 55,132,211,128, 45,133,208, 7,154,118,129,111, 44,227, 16, 40,206, 74, 80,134,194, 82, 50, 89,246,209, + 37,227,189,236, 39, 79, 49,227,106, 71,177,153, 52, 6, 9, 82, 72,137,175,255,218, 87,124,254,197,231,236,222,223,242,242,247, +223,210, 93, 45,169,219, 5,203, 85,199,105,220, 17,199,128,243,150,237,245, 35, 62,220,223, 51, 30, 78, 12,135,147,196,220,181, + 13, 99, 78,248,214,209,117,158, 15, 31, 6,214, 11, 47,197, 78, 46,132, 24,200, 54, 97,138, 32,118,215,235, 21,228,129,208,247, +122,249, 22,142, 9,241,207,234,101,156,109,158, 15,112,155,197, 47,153,212,153, 98, 27,167,187, 53,168,141,149, 88, 85,171, 23, + 70, 16,197, 60,160,106,105, 3,206,179,218, 46,184,124,114,137,181, 81,198,206, 67,160,100,139,179,133, 85,219, 80,215, 53, 57, +123,201,143, 95, 46,185,120,118, 65,191,219,177,201,208,168,141,106,125,113, 65, 74, 69,148,237, 94,124,246,179, 48,195, 24,198, + 83, 79, 56,245, 20,107,168,155,150,166, 93,146,137,146,107,110, 11,214, 87,120, 44,206, 59,218,198, 49, 14,134, 83,136,172, 86, + 75,150,139,150,116, 58,113, 60, 30, 48,227, 8, 33,224,173, 97,213, 45,193,123,234,166,162,178,142,175,174,158,112, 42,133, 31, +111,239,216,245, 71, 26,147, 88,251, 74,232, 99,100, 42,181,241,140, 41,176, 15,129, 80, 12,151, 79,174,104,186, 37, 37, 64,191, + 59,112,247,246, 45,227,112,162,143,129, 99,142, 18, 67,105,244,178, 45, 14,231, 20,136,100, 68,220,149,148,116,101, 74,193,230, + 2,197, 17, 83,205,114,185,224,230, 89,199,183,175,127,160,173,118,252,226,106, 67, 48, 80, 16,108,111,158,180, 16,105,234, 54, +101,143, 53,225, 41,157,130,169,166,125,176, 81, 22,107, 81, 63,172, 53,146,153, 60, 57, 10,228, 80,115,115,226,211,228, 53,101, +134,220, 60, 24,229,149,159, 67,111, 38,161, 93, 86,232,144,157,108,110,229,204,150, 72, 69,156, 8,182,252,188,160, 68,139,204, +172,106, 89, 91, 12, 46,103,197,192,228,185, 19,182, 69, 10,207,249,135, 23,241,127,155, 34,162, 32,197,237, 97, 74,126,144,147, +158,231,100,171,162,160,165, 9, 54, 50, 95,236,115,254,211,164, 42, 46,179,110,192,200, 19,142,211,200, 40,107,220,172, 31, 41, + 86, 14,126,235,188, 50,194,101, 31, 29, 51,156,162,132,148, 84,117,205,122,179,225,226,234,146,218,116,244,135,158,143,239,127, +224,155,239,191,227, 48, 10, 60,230,211,231,159,240,199,127,246,223,145,243,138, 68,196,216, 6, 76,141,175,193,119, 29,205, 98, +137,115,158, 66, 32, 21, 24, 14, 61,253,113,135, 49,133, 97, 56,241,250,251,223, 1,112,253,228, 9,235, 85,135,173, 44,255,250, + 95,252,115,254,245,191,252,159,216,125,188,163, 12, 65, 87,148,137,146, 50, 30, 79,180,158,104, 4, 27,210, 88,139, 87, 78, 57, +169,144,140,168,178,157,129,202, 25, 92,129, 14,129, 18, 85, 30,106,107,233,115, 38,104,230,120,118,153,133, 45,212,198, 16,176, +130,122, 86,162, 97, 85, 85,212,203,134, 50, 6, 98, 12,132, 97, 16,221, 78, 82,154,154,241, 58,134,238,137,163, 0, 78, 2, 26, +220, 52, 4,182, 23, 13,219,203, 13,181,171,136,249, 72,140, 1,103, 10,117, 37,186, 33, 25,231, 39,188,222,172,242, 61,212, 85, +147,177,148, 36,159,247,116, 89,201, 10,199, 18,179, 92, 58, 77, 93, 9, 4,203, 22,108, 74,210, 60,106,161,131, 78,147, 92,132, +205,102, 77,211, 52,236,118, 71,114,200, 74, 55,143,242,239, 21,171,205,146, 94,110, 88, 42,189,194, 99,137,218, 92,186,185,195, + 46,211,164,119, 14, 99, 41, 84, 86,214,101,177, 56, 48,131, 54,171,144,173, 96,205,209,252,131, 9,192, 98,189,166, 33,230, 9, + 85, 49, 21,221,101,166, 69, 23,205,169, 54, 57,163,142, 99,209, 80,153, 44, 43, 33, 29,165,187,202, 67, 18,209, 91,173,220, 10, +153, 36, 24,134,168,171,120,103,200, 57, 18,211, 48, 99,101,113,134, 50, 78,220, 0, 21, 85, 59,171, 54,112,230,156, 5,223, 84, + 53,109, 93,243,246,227, 71, 98, 72, 44, 90, 59, 27,229,167,212,181, 49,140, 18,180, 32,179,162,121,127,134,226, 77, 99, 76, 24, +155, 36, 8, 67,105, 63, 49, 69,186,182,225,233,147, 71,242,230,233,184, 51,165,204,199,219,119,152,186,230,114,187,101,209, 45, +184, 61,156, 48,214, 49,158,122,234,171, 21,214, 56, 98,136,178,187,177, 16, 66, 16,187, 92, 17, 76, 94, 81,161, 64, 8, 50,226, +175,234, 10,227, 34, 97,140, 12,167, 19,139,205,154, 47,127,249, 21,109, 87,243,221,239,126,207,253,251, 91, 30, 63,255,132,118, +181,196,213, 21,241,112,162,228, 64,115,177,165, 93,116,252,225,219, 63, 48,246, 39,142,187, 61,217, 23,172,243, 12, 41,113,179, +217,176,223, 29, 8, 97,228,209,213, 37,214,201,196, 32,166,132,181,142, 24,133,254,116,117,117,197,225,254, 3, 99, 56,206,108, +231,227, 48, 50, 38,232,244,189,204, 10,140,210,103,111, 14,179,200,165,204, 20, 33,239,140,102,232,234,104, 50, 11,221,107, 18, + 17, 77,103,190,243,142,139,235, 11,218,166,161, 63, 30,233, 79, 3, 20,249, 57,117,101,105,171, 90,179,136, 61, 85,211,226,106, + 79,200,153,229, 98, 77, 10,137,167,215, 27,222,188,187, 37,197, 61, 57, 53, 98, 27, 42,153, 66,163,123, 97,229,114,247, 3, 6, +163, 60,246,165,116,147, 37,225,138,116, 46,198, 26, 76,202, 84,214, 81, 85,142,253,110,192,118, 21,151,235, 37,141, 53,248,211, + 81,132, 29, 69,108, 24,155,229, 6,227, 45,166,242, 44, 93,205,243,235, 27,134,148,121,249,254, 61,125,138,120,138,112,171,131, + 50,159,173, 28, 24, 67,202, 28,134, 72, 31, 34, 87, 79,159,176,218, 94, 98, 10, 12, 97,148, 11,253,112, 96, 8,129, 67,140, 36, + 47,203,215,169,203,179,149,161, 88,171,130, 44,233,246,228,225,147, 39, 52,145, 53,135,160, 33, 85, 29,205,202,114, 57, 70, 94, +126,248,128,115,158,103,215, 43,122, 21, 29,214,190,214,125,174,136, 49,171, 34, 97, 13,147,240,108,230,178,107,138,161,213,131, +198,170,242,125, 10,134,152,212,234, 25, 59,219, 82,138,213,110, 99, 82,232, 99,207, 94,247, 82,102,197,252,249, 66,183, 26,227, +200, 89, 96,167,249,206,115, 76,169,159,226, 94,221,236,133, 53, 70, 66,128, 12,210,221, 39,245,204, 79,206, 34, 55,193,104, 20, +203,204,220,245,163,133,144, 90,134, 84,144,151, 39,149, 77,153, 48,177,121,182, 15, 77,228,185,179,117, 51,205,248,217,121, 26, +161,189,190,179,110,222,189,203,148, 66, 94,171,195, 99,189,211, 8, 92,177, 79, 25, 35, 35, 76,169,154, 28, 41,103,250, 24, 49, + 38,179, 90,172,121,116,253,148,110,217, 18,250,145,221,221, 59,126,252,233, 5,251,253, 30,111, 13, 55,143,159,240, 39,127,246, + 79,201,118,161,231, 72, 5, 94, 81,200, 43,168,155,134,218,123,114, 24,133,145,110, 33,198,145,219,247,239, 8,159, 30, 25,199, +200, 79,187, 59,110,223,127, 96,113,121,197,229,102,205,191,249, 95,255, 21,255,195, 63,251, 31, 57,142,224,107,216,118, 45,139, + 69, 71,237,207,177,162,228, 52,243,246,141, 22,129,185,136,176,112,154,114, 24,131,116,104, 99, 96, 31, 35,158,160,106,112,249, +206, 88, 15,141,102, 18,212, 36,170, 82, 24,114, 81,255,186,167,169, 27,186, 69,195,178, 91,144, 82,160,196,172,152, 84,253, 94, +102, 57,155,114, 49, 56, 87, 83, 74, 34, 12,145, 52, 70, 66, 26,232,186,150,245,122,197,118,211, 17, 78, 71,105, 82,108, 18,123, +106,201, 88, 50,222, 91,189, 52,237,204, 80,207, 70, 58, 97,144,115, 94,120,242,254,156, 77, 80, 68, 96,105,141,165,241,226,193, +207,185, 96,205, 4, 48,210,239,190,145, 70,200,215,150,205,122, 77, 24, 35,187,195, 78,214, 19, 73,223, 31, 13,196, 50,138,117, + 45, 89, 72,157,174,114, 82,128, 22,177, 81,207,115, 32, 77, 89, 76, 58,237, 20,150,126,150,137,134,213, 80, 32,101,225, 27, 59, + 89, 56,117,108,254, 32, 99, 0,181, 26, 27, 21,146, 78,207,233, 89, 28,251, 32, 86,181,228,185,224,113,138,113, 45,217,227,157, +208, 1,171,202, 99, 70,177, 19, 26,221,181,103, 77,222, 44,169,224, 91,139,177,158, 28, 35, 33, 4,172,117, 50, 61,117,126, 14, +141,154,131,155,116,186, 43, 60, 40, 89, 29,248,229, 66, 50,163, 15,167,158,148,243,188,152,183,122, 25,165,148, 36, 41, 77, 63, + 40,227,236,172,222, 68,129, 51, 49, 37, 76, 78, 52,211,142,137,194, 16, 70,218,205,154,139,213,154,140,228,122, 87, 85,197,241, +112, 71,223, 7, 46, 87,107,174, 31, 93,139,237, 37, 75, 46,242, 88, 18,173, 98, 17, 83,146,125, 52, 70,252,233, 50,238, 62, 75, + 21, 27,239, 9, 58, 10,237,218,154,144, 18,161, 31,201, 9, 62,251,236, 83,110, 30, 63,225,237,143,111,120,253,234, 71,201,251, + 93,173,241,171,142, 52,142,164, 49, 96, 19, 44,183, 27,226, 56,240,225,195,123, 14,187,131,224, 95, 43, 71, 48,133,214, 57,214, +139, 21, 63,253,244,142,229,178,165,169,171,179, 34,177,200,155, 30,203,200,205,229, 21,222, 89,250, 99,175,226,147, 68, 63,142, +244, 99,144, 49,161, 97,182, 63, 24,107, 68, 72,164,191, 70, 42,178, 84,170,156, 87,203,216,121,151, 72,200, 42,164,139, 10,217, +152, 60,143,134,139,203, 21,171,203, 45, 37, 37,142,135,158, 24,180,210, 87,229, 57, 69, 68,120, 33,100, 92,151, 24,226, 72,126, + 27,113, 23, 29, 93,219,240,203, 47,158,242, 23,223,223,113,220,221,210, 45,111, 40, 36,217, 49, 21, 25,249,216,148,137,113,196, + 23, 1, 33,136, 82,182,145, 7,187, 68,156,141, 56,235,168,106, 47,187,119, 21,119, 21,103,184,220,174,233, 42, 67,147, 51, 53, + 98,107,114,206,176,236, 90,176,134,232, 13,219,166,225,147, 71, 79,137, 41,243,219,215, 63, 74,247,101,229, 64, 43, 33, 81, 85, + 53,222, 89, 74, 30, 25, 82,226, 16, 37, 24,104,125,113,193,230,226, 82,232,104, 38,115,255,230, 13,167,251, 29, 49, 37,246, 49, +144,172, 0, 48, 28, 82, 16,120, 11,117, 39, 58,134,126, 24,232, 67, 38,167,168,106,109,169,178,173, 85,125, 70, 85,145,235, 37, +222, 27,110,174,158,113, 28, 10,223,253,244,142,170,242,220,108, 22,244, 81,178,206,189, 85, 91,219, 84,245,103,169,170,203,204, + 37,215, 56, 71, 43,133,216, 20, 81,106, 52, 26,177, 24,237,142,173,147,232, 96,103,113, 88, 5, 92, 76,182, 31, 85,172, 63, 16, +207,149,153,179,126, 22,237, 8,128,105, 58, 84,220,172,148,159, 46, 78,107, 36,212, 67,161,242,234,154,144,244,135,252, 16,140, + 99, 30, 16,243,114,198, 42, 2,122, 58,152, 72,231,226,162,168, 80,203, 42, 62, 50,150,179,221,109, 82,231,139, 87, 93,197,157, +211,152,127, 10,157,112, 66,235, 51,156,153,221, 57, 75, 17, 97,205,236,206,215,103,197,104,160,141,104, 67,140,181, 50,233,152, +186, 66, 28,185, 88,134, 24, 9,217,176,168, 22, 44,151, 75,186,229, 2,138,225,120, 58,240,211,235, 87,252,244,250, 22, 67,224, + 98,179,225,239,252,131,127, 66, 89, 62, 37,231,145,186,174,112,222, 99, 43, 47,151,144, 47,248, 74, 8,142,214, 77,172,118,121, + 78,239,223,189,227,213,183,191,103,121,113,193,199, 55,239, 25, 78, 39,162, 41,124,247,187, 63,240, 23,255,254, 59, 22, 53,248, + 22, 66,129,227, 73,226,163, 59,111,169,189,197,213, 30,167,156, 0,175, 48,154,160,128,120,107, 50, 57,169,141,202,129, 43, 9, + 66,224,200,136, 43,153, 90, 25, 8,113,130, 15, 41,240, 39, 26,195, 48, 36, 14, 99,162, 88, 25,105,215,117,195,118,187,210, 21, +168, 94,152,214, 97,156, 96,102,101, 95, 29, 25,135,145, 98, 61,206, 87, 12,125, 15,113,164,173,107, 98, 85,184,216,108,168,109, + 35, 49,197,222,233, 5,165, 22, 75, 43, 29,179, 53,114, 25,186, 41,196,100,154,190,100, 72, 65, 4,176, 57,161,187, 97, 71, 76, + 82,208, 85,181,195, 87, 50, 14,119,106, 81,180, 37, 61, 32, 15, 74,178, 93,187,104, 88,111,214,244,167, 61,225, 52,170, 14,163, + 8,122,119, 38, 43,170,181,221, 24, 76, 37, 22,212, 18,197,111,110,245,156,204, 73,206,221,201, 54,108,203,121, 69,228,172,192, +157,130,102, 31, 76,169,234, 51, 88,106, 14, 80,146, 98,213,205,223,215,172, 75,163, 50, 47,177,220,244,189,157,115,210,203,153, + 46, 57,137,250, 74,166,210,144, 27,105,224,228,210, 78, 57,227,172,157,249, 14,194,118,119,120,231, 68,132,174,137,125,206,123, + 45,100,141, 22, 81, 89,115, 17, 20, 79,141,147, 66,199, 88,252,170,235, 8, 41,112, 26, 71, 76,229,228, 48,197,232,220, 31, 73, + 32, 27, 6, 13,165,151,177, 92, 74, 81, 13,255,118, 86,224,121, 13,185,143, 57, 17, 74, 38,149,204,103,143, 31,115,117,181,228, +208, 15, 28,142, 61, 79, 30, 93,243,253,183, 63,112, 60, 14,124,190, 93,115,121,117,201,112,220,225,180, 51, 56,141, 35, 55, 77, + 67, 28, 19, 49,140, 56, 10,174,174, 8,251,157,128, 3,204,132,135, 5,223, 52, 28,143,131,142,226, 29,227, 8,135,211, 64,187, +104,248,226,151, 95,115,218,237,248,240,250, 53,135,211,192,227,101,199,245,205, 35,118,125,224,120, 60,226,141,193,183, 13,219, +171, 11, 62,188,121,207,225,254,196,225,246, 40, 95, 84,239, 72, 68,182,203, 37,199,113,224, 20,123, 30, 95, 92,203,206, 34,103, + 85, 69, 87, 12, 57, 17, 75,226,242,242,146,227,105,207, 56,140,122, 32, 75, 71, 41, 97, 29,154,224, 99,101,239, 36, 81,157,102, +154,128, 18, 82,166,107,106, 42, 39, 62, 75,171, 95, 34, 76,209,145,179, 42,129,139,170,125, 29,116,139,138,139,155, 43,218,166, +230,112,183,163, 63,141,218,221, 64,215, 84,212,222, 51,244, 35,161, 31,169, 46,215, 52,235, 78,224, 65,167,158,123, 59,114,177, + 93,240,139,167,143,249,120,124,201,233, 56,176,190,114,154,210, 36,150,153,172, 25,233,198, 20,108, 93,145,200, 52,109,163,108, +136, 44, 68, 47, 9,114,166,241, 53, 37,201, 72,205, 55,158,171,203, 45, 93, 85,211,216, 72, 87,162,140,130,156, 99,213, 9,157, + 48,123,195,114,181,228,243,171, 27,118,167, 35,191,251,233, 53,197, 73, 8, 67, 78, 35, 62, 68,218,170,166,173, 61, 57, 5, 78, + 41,113, 24, 3,167, 4,198, 59, 54, 87, 87, 84, 77, 77,177,137,251,119, 31,216,191,121, 71,140,137,251, 16, 72, 78,253,223, 42, +146,241, 22,170,166,162,109, 32,230, 34,217,206, 37,113,232,179,250,178,101,151,219,212, 13,222,215,212,117,203,224, 68,116, 85, +213, 13, 55, 23, 23,124,119,236,249,253, 79,183, 44,141,193, 46, 59, 37, 73, 89,156, 36,210, 75,249,170, 81,162,178, 22,129,226, +156, 16,169,140,198, 63, 40, 10, 83, 70,198,211,254,171,194, 25,175, 85,186,213, 16,151,243, 8, 94, 2,119, 39,213,172,253,217, +216,218, 60,136,138,152, 32, 23,118,218,107,154,115, 16, 11,230, 44,232,153, 47,109,237,176,207, 55,248, 68, 65,179,148,226,229, + 64,182, 83,120, 18, 51,107,158,105,106, 52,167, 93,137,195, 68,104,114,162,166, 87, 90,205,207, 10,143, 41,191,122,250, 79,196, +181, 73, 39, 22, 15,119,239, 70,117, 39, 50,133,178,206,232,101,226,180, 27, 23,107,161,177,178,187,181, 70,131, 55,172, 35,140, +133, 33,102,106,215,208, 46,182,172,214, 29, 38, 15,140,125,226,237,171, 23,252,240,234, 7, 98,200,108, 54, 21,127,250, 95,254, + 67,170,237,167,196, 50, 80,215, 45,222,181,114,192,122,121,255,199,210,208,212, 29,237,162,102,123,185,165, 31,110, 41, 46, 51, +246,153,251,219,119,124,247, 87, 3, 77,219, 17, 67, 96,127,251,145, 49, 5,222,190,248,192,118, 35,151,185, 92,156,234,121, 54, +178, 58, 76, 38, 83, 98, 0,235,240,126,226,131,203,133,235,179,118,189,122,150,214, 38,179,105, 12,235,166,112, 26,197,154, 23, +180,104, 74, 22, 18,181,224, 65,139,236, 90, 79, 73,198,239,214, 25,124,237,233,150, 21,143,110, 46,231,164,187, 92,178,172, 41, +212,169,148,139, 34, 75,157, 97, 28, 70, 98,138, 56, 18,206, 39, 76, 49,108,218, 5,235,205,134,144,131, 8, 6,245,146, 40, 70, +248,237,174,114, 20,194, 60,102,150, 85,212,228,164, 48,103, 49,181,147, 73,150,177, 78, 34, 98, 83,164,128,192,155,116,126,237, +138,149, 21,142,142,195,141, 81,219,217,152,216,220,108, 89, 44, 59, 62,188,126, 75, 12,249, 28, 52, 52, 23,162,103,134, 67, 54, +114,102,123,157, 6,151, 34, 86,231, 41, 6,213,148, 41,181, 51, 49,161,160,172,245,218,188,138, 93,213, 24,101,170,100,137,196, +157,196,174,147, 1,165,228,179,166,165, 76, 81,227,115, 62,129,196,201, 78, 84,167, 57,196,101,190,216, 57, 23,223,222,168, 63, + 93,114, 67,250, 81, 86, 2,190,114, 36,157,126,167,156,240, 26, 1, 28, 83, 34,101,131,215,220,123,231,172,102, 6,200,251,110, + 85, 35,113,254,124, 53,189,110,211,181,244, 99, 96, 63,142, 85,107, 76, 10, 0, 0, 32, 0, 73, 68, 65, 84,184, 74,193, 27, 15, +248,207, 49, 36,250,211, 48, 91,117,140, 30, 56, 69, 43, 12, 73,158, 41,243,120,166,228, 44,225, 6, 17,158, 60,185, 97,177,232, +216,239,118,116,109, 67,211,181,124,120,247, 1,239, 29,151,151, 91,188, 49,164, 32, 40,193, 16, 2, 37, 69,186, 69,199, 56,202, + 46,203, 56,169,159, 66, 28,103,133, 39,165, 80,233, 39, 22,198, 36, 73,109, 77, 69, 74, 34,120,250,228,171, 47,216,108, 54,188, +122,241, 3,195,241,200,241,184,103,125,125, 67,221, 53,140,195, 48,197, 62,177, 88,175,241,149,227,237,187,247,244, 31,142,132, +126,192, 85,158,104, 33,217,204,122,181,165,223,247,180,190,165,109,234, 7,214, 50, 17,203,196, 92, 88,175,214,172, 23, 29,199, +251, 61, 49, 4, 65,233, 22, 25,111, 61,196, 14, 78,170,102, 17, 23,165,169, 33,194,148, 76, 83,137,239,185,113, 78,178,161, 53, + 23,119, 82, 14,219, 89, 41, 45,235,143,213,197, 5,203,205,146, 16, 3,253,105, 32, 37,169,150,189,119,116,181,116,219,197,192, +226,114,203,205,211,167,132,148,249,240,241,150,219,253,158,254,212, 51, 14,153,237,229, 37,191,121,182, 37, 29,118, 48, 36,108, +182, 42,242, 74,228,241,132,203, 89,125,159, 25, 87,181,242,250,115,196,148,128,181,105,134,152,156,246, 71,150,117, 67,211, 46, +184,186,184,166, 91, 84,180,166,176, 46, 6,155, 36,231,122,213, 45,196, 70, 86, 85, 92,110,183,252,209,205, 51,222,222,237,248, +203, 31, 94,224,189,165,173, 28, 97,236, 33,102, 22, 77,195,186,246,164, 24, 24, 67,162,143,137, 49, 10,241,112,189,189,160,233, + 90,172,129,211,105,207,237,171, 31, 25, 66,224, 20, 2,105,178,223,185, 66, 99, 13,181, 47,116,157,161,171,193,229,145, 18, 6, +136, 81,225, 45, 89,186, 76,202,255, 79,214,155, 53, 73,118,157,231,122,207, 26,246,152, 83, 77, 61, 84,163, 49,131, 4, 65,234, + 72, 71, 17, 39,194, 23,246, 95,246,185,240,133,195,215,118,156, 8, 71, 88, 33, 74,166, 56,128, 36, 64,128, 0,122,172,185, 50, +115, 15,107,242,197,183,246,206,132, 44, 42, 66, 34,217,168,170,174,220,123,173,111,120,223,231, 37, 26, 65, 88,154,162, 38,234, + 58,119,138, 50, 41,105,218,150,179,245,146,199, 7,199,215,111,175,132, 2,150,164, 3,245, 42,225,242,168, 57, 18, 50,133, 74, +212,179,198,216,121,188, 58,237,127,229, 50, 50, 88, 91, 96,140,240,243,149,150, 46, 93, 27,241,235,206, 66,182,220,213,139,143, + 93, 31,249,225, 39,251,146,172,164, 98,146,206, 75,103,175, 46, 71, 42, 96,178,186,122,246,200, 31,173,211, 38, 64,208, 4,232, + 80,200,215, 74, 74, 99, 39, 44,180, 58, 36, 47, 38,132, 7, 63,167, 88,164, 52,195, 68,194,236,153,151,110, 54, 34, 7,124, 10, +113, 78,154, 75,153,221, 30,179, 21, 74, 41,131,205, 66,169,152,233,123, 38,255, 30,166, 61,168,102,226,135, 27,217,174,107,115, +208,123,104, 77, 72, 26, 91,212, 36, 36, 29, 44, 34, 9,103,139,117,205, 98,177,132,164,120,247,254, 21, 63,252,248, 29,219,125, +160, 42,123,254,219, 63,255,207,156, 60,251, 39,156, 31,101,146, 98, 42,116,105, 41,108,153, 85,245, 26,163, 60,235,205, 41,235, +245, 25,109,189,144, 46, 91,139,158,227,234,253, 13,219,155,247,220,252,240, 29,253,221,123, 42,171, 40, 98,160, 94,202,161,110, +148,165,178,138,214, 42, 22,133, 8,220,234, 74, 80,165, 58,131,122, 82, 84,135, 29,109, 38,171,133, 24, 41,171,200,162, 76,156, + 87,134,147, 34,209, 88,207, 73,101,216,212, 5, 78,107, 6,101,137,169,192, 37, 89,157, 20, 70, 16,175, 46,251,154,171,108,147, +124,118,113,206,217,250, 68,214, 28, 51,146, 84,226,128,157, 23, 77, 82,204, 5,160, 54,194,218,168, 76,162, 50, 9, 91, 88,214, +235, 37,134, 32,190,107, 37, 90, 10,109,229,243,154,116, 13,211,243, 57, 59, 48,230,164,188,124,121,153, 66, 62,183,236,153,150, +240,158, 64, 81, 42, 10,171,102,139,162, 38,119,222,121, 98,165,178,109,185,172, 74,201,216, 8,145,221,118, 7, 76,137,126,105, +190, 28,205,108,183, 22, 91, 99, 81,228, 73, 95,144, 70, 74, 35,196, 62,163, 52, 86,139,222, 43,132, 32, 83,165,148, 48,133,144, + 25, 21,138,209,141,217, 6,151, 72, 42,204, 46,147,137,188, 28,129,144,227,112, 39, 11,170,158,209,175, 34, 63, 15, 62,205, 13, + 39,185, 49, 66,137,171,229,240,156,171,153, 52, 41,132, 78, 43,127, 54,138, 39, 95, 68,188, 30,231,189, 76,201,181, 17, 77,202, +148,163,144,215,180, 42, 43,227, 82,230,228, 78, 43, 59,113,166, 72, 57, 97, 23,117,205,126,116,220, 63, 60, 82,218, 41, 34, 78, + 44, 56, 36,217,103, 15,195,136,213, 69,238, 70, 52,202, 79,106,110,209, 81,250,124,200,219, 68, 78, 7,146,113,201,147,167, 23, + 40,109,185,123,124,160, 93, 45,233, 7,207,251,183, 87, 44,215, 37,155,205,138,104,132, 48,165,149,161,239,247, 36,171,176, 85, +197,176,235,192, 71,172, 45,164,235, 15,225,208,105,120, 80, 86,131, 14,184,193,209, 44, 42,172, 53,244,227, 64, 83,149,124,250, +171,207,121,253,230, 29,111,223,190,229,242,236,132,208, 13,188,120,249,130,221,126, 96,187,123,144,151,222,192,250,236,148,253, +221,150,187,119,239,233,250, 7,198, 56, 82,218, 22,231, 29,235,166,197, 19,121,236,122, 78,214, 11, 25,139, 39,249,165,169, 12, +205,143, 41,178, 94,182,108, 31,110, 25,199,158,193, 13, 82,173,231,129,141,112,186,243,238,113,226, 98,231,170,113, 82, 78,163, + 18,133,177, 20, 57, 43,125,142,185,156,131, 46, 50,169, 72, 9, 89,107,217,212,172, 79, 79,176,201,240,176,221, 51,244,226,165, +213,218,208, 22,149, 4,204, 12, 3,139, 69,195,230,233, 11,174, 31,239,121,243,230, 45, 74, 69,234,186,100,112,154,110,191,229, +242,114,197,120,126, 65,119,255,158,208, 63, 96,171, 66,166, 95, 99, 32,142,158,186, 93, 74, 87,106,202,140,114, 37,239,127, 68, + 23,129, 85, 60,110,183, 60,220,223,177,185, 56, 99, 55, 74, 52,165,223, 62, 82, 39, 47,187, 72,101, 89, 84,149,188,216, 42,241, +236,244,148, 95, 62,127,201,119,111,222,240,247,235, 43,218,182, 97,185, 88,114,117,115, 79, 76,158, 77,221, 80,104,232,221, 40, + 98, 74, 31,233, 93, 32,168,130,182, 93,176, 88, 52, 40, 13,163, 27,121,124,123,203,190, 27,216,187,158,104,200, 52, 41,178,207, + 53, 82, 86,150,101, 99,177, 42, 16,124, 96,112, 18,243,232,147,104, 34, 66,238, 56, 27, 83,209, 84, 13,182,110, 73,186,201,204, +105, 39,200,222,162,100,181, 88,115,114,186,227,237,205, 43, 46,111,111,121,249,244, 5, 62, 70,108, 76, 40, 43,159,161,154,119, +224,146, 94, 21, 18,148, 20, 57,135, 57,231, 19, 24,141, 50,197, 60,206, 62, 28,142, 19, 3,123, 26, 0, 30,254,117, 8, 52,205, + 47,120,238,238, 4, 94,162,231, 78,125,246,131, 39, 57,148, 72, 54,163, 43, 83,142,150,212,115,247,108,116,206, 34,207,187, 76, +102,107, 89, 30,129,135, 41, 31,253, 40, 23, 58,105, 82,116, 89,105,204, 17, 42, 54,205,187,114,149, 82, 70,106,102, 44,231, 28, +120,158,102,239,174,159,199,158,106,126,102, 69, 80, 39,190,226,137,142, 55,141, 16,201,192, 30, 81,151,219, 76,143,180,153,194, + 39,235,132, 24, 18, 33, 9,110,115,209, 46,216,156,174,136, 6,186,219, 91,110,222,253,196,174, 27, 73, 41,242,229,111,254, 27, +159,254,234, 31,184,247,210,184, 24, 99, 41,172,165, 48, 50,126, 79,196, 57, 36,165,110, 45,139, 69, 77, 83, 74, 14,195,232, 20, + 38,106,246,119,145,123,189,227,180, 13,196, 94, 19, 84,201, 48, 4, 76, 72, 44,140, 66,153,136,213, 25,178,163, 33, 24,249,189, +142, 3,121,242, 25,196, 59,157,242, 36, 38, 5,162,138, 24,165,168,140,225,100,169,217, 24, 69,163, 34, 85, 2,167,193,212,138, +100, 53,119,206,210, 69,157,225, 65,122,206,225, 32, 59, 59,140, 49, 20, 11,203,243,231, 23,180,117,193,224, 70,193,142,134, 60, + 45, 8, 50,170,245, 19, 20, 12, 80, 33, 80,167,129, 90, 13,184, 20,104, 22, 13,101, 85, 65,144,248,108,239, 2, 46, 56,138, 90, + 46, 76, 73,222,156,206, 50, 53,119,206, 74,169,156,237, 29,230,139,204,199, 3, 25,113,202, 9,168,202, 2, 99, 52, 99, 12,164, + 44,136, 11, 57,185, 79, 16, 25, 9,149, 60,171,101,195,186,109, 25,221,200, 48, 12,179,246,104,122, 22,101,247, 62,165,243, 37, +172, 21,177, 88, 76,126,142, 92, 85, 10,138,188,245, 22, 61,201, 72,242, 65,174,171,172,108, 87, 70, 8,144,206,123, 76, 33,197, +241,132, 92,153, 48, 56, 33, 51,234, 39, 13,203,156,183, 48,169,207,109,230, 20,228,212,180,148, 57,241,147,224,100, 42,200, 99, + 76, 18,183,154, 65, 81, 33, 73,116,170,209, 90,236,105, 10,172, 41,112, 78,206,125,128,170, 42,133, 41,162, 14,249,236,115, 22, + 64, 20,139,179, 6, 41, 80, 9, 4,207, 28, 10,163,133,168,213, 73,250,154,177,243,250, 77,132, 28, 73, 58,208,190,159,191,153, +205,203,166, 56,239,227, 76,222,119,139,119, 53,132,128,143, 80,183, 45, 31, 92, 62, 99,140, 9, 93, 88,234,182,229,245,219,247, +236,251,129,211,229, 41,237,178, 33,142, 99,166,200,137,125,170,202, 96,151, 16, 34, 49,195, 85,124,146,189,249, 49, 91, 87, 43, + 69,242, 17, 31,226, 92,241, 12, 67,207,167, 95,124, 65,221, 52,252,245, 79,127,164, 46, 74,246,253,200,197,243,231,180,155, 21, +119,215,215,146,210,102, 12,139,102,193,114,177,228,253, 79,175,121,220,109,217, 14,189,196,110,102,197,240,102,189, 98,191,221, + 97, 20,212,101, 57,143, 33,133,226,101, 72, 33,176,104, 91,170,178,226,246,238, 94, 58,198,113,196, 7,217,129, 4,100,202, 0, + 9,157, 38,149,129, 58,138,217,144, 42, 93,105, 77, 93, 21,148, 70, 17,146,207,190, 92,201,210,136, 49,239,243,114,111, 85,214, + 37,235,211, 53, 77,219, 48,116, 35,253,126, 16, 65,153,146,120,198,178,172, 36, 60,161, 42, 41,234,138,110,220,211, 13, 35, 23, + 79, 46, 88,175, 79,196,186,213, 71,246,187, 7, 30, 30,110, 57, 57,127, 74, 81,150,244,251,247,152, 48,226,134,142,110,191,207, + 80,136, 68,138,142,210,230, 4,165,232, 69,225, 28,131,100, 71, 59,199,245,245, 21,101,101,120,114,121,193, 98,221, 82,120, 71, +227,189, 84,202, 90,211,214, 21, 81, 41,122, 21,121,250,244,130, 47, 63,252,144,111, 94,191,226,111,111, 95,177,106, 26, 86,235, + 19,222,222, 63, 18, 18, 60,105,106,137,149, 29, 61,163,119,236, 67,164,247,146, 52, 87,181, 53,237,170,165,170, 43,162,247,108, +175,110,216,221,221,227,162, 67, 91,137,132, 44, 45,148,133,146, 78,169, 81,172, 74, 40,180,167,176, 50,138, 43, 10, 77, 89,202, +229, 52,250,136,207, 21,110, 89, 21, 84,205, 10, 83,182, 40, 35,251,205,188,202, 70,107, 77,213, 54, 44,215, 27,160,224,219, 31, +223,224,134,140,160, 76, 10,155,185,211, 42, 48,149,104,121, 9, 43,149,188,214, 98, 83,211,166, 0,149,187,119, 43, 21,185,158, +212,242,121, 4,104, 16, 17,141, 54, 22,157,247,102,147, 56,102,250,179,186,176, 25, 77,123,184,164,143, 35, 87,149, 34,119, 51, +241,103,105,206, 10,141, 81, 19,192, 34,255, 92, 71,227,241,121,140, 56,137, 94,115,167, 61,165,177,165, 44,124, 58,114,252,228, +112,149, 52,131, 81, 98,156, 18, 71,242,239, 79,103,219,222, 52,165, 74, 18, 66, 52,161, 94, 69,244,199, 33,148, 98, 46,116,152, + 29, 52, 90, 23,210,149, 24, 45,154, 14,101,231,169,131, 49,134,132,197,121,114,184, 82,201, 98,217,210,216,130,232,246,188,187, +126,205,221,195, 45,123, 23,185,124,118,194,127,249,231,127, 98,155, 12, 65, 23,160, 43,108, 81, 75, 30,185,150,139, 65,116, 22, + 35, 42,121,177,111,181, 53,101, 41, 62,229,152, 37, 87, 65, 71,186,209, 19,163, 22,251,215,208, 83, 69,199,170, 84,156, 53,240, +124,165,120,182,128,211,101,226,100,161,216,212,134, 69,169, 89, 54,138,186,148, 29,111,169, 13,133, 73,148, 69,164, 40,160,208, + 2, 4, 58,173, 20, 31,156,148,172, 27,104, 74,141, 73, 10,157, 45,151,149, 54,172,106, 77, 85,107,148, 45, 32, 40,186, 81, 34, +101, 5,102, 82,160,108,201,197,217, 41, 31,126,248, 92, 88, 31, 41, 16,125, 32,184,152,179, 57,178, 61, 42, 71, 88, 7,231, 80, +126, 79,163, 59, 84, 24, 48, 73,211, 54, 11, 57,123,124, 98, 24, 35,251,193, 49,122,207, 48, 58,134,233,156,158, 86, 54,233, 40, +232, 36,147,206, 98,214, 60, 40,157,178,153,236,144, 89, 96,173, 21,100,109,126, 94, 84,210, 57,208, 84,190, 72,210,194, 66, 49, +166,162, 89, 52, 36,171,217,119,251, 28,105, 61,137, 8,115,185, 59, 79, 46,165,177,180, 69,238,220, 67,154,163,128,181,146,247, +211,106, 53, 23,214,199,214, 74,107,237,124, 65,143, 97,122, 78,197,101,101,213,127,130,133,205,254,114,105,225,227,145,205, 82, + 41,147,181, 36,249,156, 60,178,196,153,233,159,153,156, 97, 28,121,242,181, 48, 61,138,162, 56,172,213,140,136, 67,197, 14, 46, +103,168,243,126, 22,195,114,204,130, 72, 51, 17, 71, 4,164, 71, 41,135, 82,239, 42,197,190,235, 69,129,154, 99, 63,167,131, 36, +132, 64, 63, 12,140, 99,152,130,130,230,151, 16, 14, 52,172, 24,226,188,131,243, 41,226,130, 99,189, 89,241,252,233, 19, 98, 2, +163, 43,140,182,188,123,243, 6,173, 96,117,186,166,109, 22, 12,189, 35,102, 43,156,119,129,118,185,148,191,164,119, 18,108, 97, + 52,177, 31, 5, 63,203, 33, 45, 74,107,131, 31,122,185, 42,141, 17,165,125,179,224,163, 47, 62,227,219, 63,125,195, 15,223,255, +200,122,189,166,235,247,188,252,244, 99, 30,239,119, 92,189,125, 79,219,180,104,171,105, 87, 75,198,110,228,246,221, 21, 99, 63, + 50, 14, 3,182, 44,137, 49,176,106, 91,172, 46,216,117, 61,109, 91, 81, 85,217,198, 33,179,159,124,208, 24,154,229,146,221,253, + 61,251,237, 30, 23, 28, 67, 6,240,196, 68,182,136,153,249,193, 51, 89,140,228, 51,208, 79,118,136,145, 69, 97,169, 74, 59,245, + 93,100,209,239,225,247,153, 21,199,133,209, 44, 87, 45,203,211, 21, 33, 5,186,161,151, 85, 66,142,242,172,109,129,177, 82,109, +214, 77,131,173, 75,170,186,224,191,252,230, 43,190,250,205,111, 48,218, 50,236,123,186, 33,161,203, 21,247, 55, 55, 24,157, 88, +159, 93, 16,187, 61,187,155,215,184,110, 39, 30,249,178,150, 93,155, 86,104, 29,137,161,135, 56, 66,116,196, 24, 8, 1,238,110, +183, 12,251,145,213,114,197,211, 23,231,132,253,142,221,155,119,232, 40,162,179,166,174,137, 57, 10,246,242,217,115, 62,251,232, + 51,190,254,230, 59,190,249,225, 39,206, 78, 78, 56, 57, 57,225,213,251,107,134,190,227,114,217, 82, 98,240,126,196,249,145,206, + 5,186, 49,138, 29,171,180, 84, 77, 77,211, 52, 0,116,219, 45,251,187,123,198,161, 67,107, 68,120, 99, 5,224, 81,152,200,166, +210, 92, 44, 12,155, 26,138, 52,226,125,151,173, 44, 2,199, 8,206,147,115, 27, 48,218, 80, 45, 22,148, 77,139, 45, 75,180,150, +249,201,108, 67, 67, 52, 34, 39,235, 53,235,213,130,171,219,142,191,189,250, 65,186,130,120,232, 38,231,139, 53,101,145, 78, 66, + 0, 42, 57,101, 45,233, 60,221,202,187,111,149,116, 22, 77, 78,194, 47,233, 22,229,196,200,239,148, 62, 18,199,161, 15, 74,218, + 60, 73,155,146,168, 82,156, 56,212, 42, 23, 2, 50, 97, 51,218,204, 9,102,178,115,159, 2, 42,212,156, 30, 37,227, 84, 3,218, +228,131,118, 86,234,205,236,246,152,113,204, 7, 12,236,145,245, 46,197,153,110,150,242,236, 85,197,137,160, 23,103, 85,190,202, + 5,142,206,207,252, 68, 56,155,246,255, 7,139, 91,246, 33,107,131,194,202,197,144,199,226, 83,220,175,202, 59,118,109, 44, 33, +179,186,141,177,180, 77,205,162,149,103,228,225,230,134,251,251,107,156, 19,234,222, 87,191,254, 7, 84,125,198, 16,141,192, 52, +139, 18,109, 11,208, 10, 23, 70,198,126, 71,112, 29, 33, 12,248,224, 41,148,161,170, 75,150,171, 5,171, 85, 69, 89,200, 8, 29, +147,112, 1, 30, 59,217,225, 55,149,229, 98,109,120,121,162,249,224, 68,113,214, 40,218, 18, 22,117, 98, 83,195,202, 38, 26, 29, + 89,214,138, 77,171, 88, 84, 80,217, 72, 83,200,122,168, 54,145,179, 86,115,185,178,156,104,197, 34, 5, 22,149,198, 22, 74, 86, + 57, 49,137, 13,205,139,245,171, 52,242, 92, 72, 6,135, 92, 68, 86,201, 24,185,108, 13,191,248,236, 35,214, 77,133, 15, 30, 23, + 2,126, 34,184,197,136,119, 14,231, 28, 97,116,248,253, 14,183,191, 67,251, 71, 72, 1, 31,229,220, 45, 76,129, 74,242,252,135, +152, 8, 26,170,182,202, 5, 20,153, 74, 41,193, 35, 19, 97,141,124, 85,197, 36, 83, 19,171,133,148, 55,145, 1, 99,110,104,202, +210,206, 83, 35, 97,152,103,161,102,204,204,114, 18,163,247, 88, 91, 80, 20, 5, 16,113,195,152,247,233, 16,162,151,231, 44,103, +156,107,166,232, 89,193,195,170, 76,161,211, 83, 4,111,190,236,180,201,107,167,196, 76,180, 35, 35,148,117, 70,177, 78,132,185, + 73,204,105,142, 50, 15,212, 20, 24,147,196,194, 55,173,242,143,147, 11, 99, 22,150,166,252, 61,166,112, 36,125, 20,181, 42, 19, +177,220,144,102, 27,154, 49,178,142, 35, 19, 47, 77, 78,192,140,179,155, 76, 49,120,143, 15, 62, 23, 37, 7, 13,155, 62,178,186, +106,171,231, 66, 65,219,188,166, 10, 49,112,251,176,149,145,133, 53,196,148, 40,244,129,249,238,188,159, 69, 98,154, 76,114, 74, + 57, 25, 40,255, 57,159,145,147, 9, 24,125, 96,183,223,241,203, 95,125,201,233,217, 9,223,253,253, 71, 0,246,187, 29,119,183, +183,164, 16,104, 23, 45,186, 44, 24,119, 59, 84,146, 75,107,123,191,101,249,244, 68, 8,106, 49, 80, 90,131,235, 93, 14,133,136, + 71,105,214, 50, 18,233,135, 1,149, 18,165,181,132, 0, 79, 47,159,162,130,231,235, 63,124,205,217,102,131, 2, 86,203, 21, 31, +188,120,193,247,127,249, 43, 74, 43,234,178, 32, 86, 5,235,179, 83,126,252,250, 27,118,251,123,134,161,151, 93,158,209,132, 20, + 57,105, 27, 30,119,123,130,139, 52,203, 70,176,152,121, 7, 46, 35, 64, 40, 42,169,178,222,190,191,162, 82, 6,179,172,216,123, + 71,171, 37,118,181, 40, 12,106,144, 71, 94, 79, 29,122, 98,138,182, 23, 1,160, 82, 52, 85, 37,201, 66, 74,108, 29,226,205, 14, +178,123,139,228, 17, 75,162,170, 75,214,155, 21,117, 93,179,223,119,116, 67, 47, 7, 99,142,123,173, 10,155,239, 24, 67,209, 52, +172, 78, 87,212,109,205,201,186,229, 15,127,254,150,237,110,143, 86,138, 93, 55,114,187,109, 89, 24,205,155, 31,191,229,179, 95, +254,138, 48,140,188,127,251,138,205, 83, 69,187,217, 16,163, 35,122,176,117, 41, 47,137, 22, 49, 77,138, 26,141,165,219, 63,242, +120,251,200,106,177,100,185, 58,231, 63,126,251,175,124,255, 31, 95, 99, 98, 66,151,149,184, 4, 66, 98, 36,240,242,197, 71,252, +226,227, 79,249,243, 95,254,202,143,111,223,243,225,243, 75, 86,155, 5, 63,188,191,194, 13, 3, 47,207, 78,168, 83, 96,219,143, +184, 56,226, 98,100, 8, 18,171,168, 10,139,173,173,240,217,139,130,253,110, 75,191,221,210,119, 91,146, 22,168, 10, 25,188,145, +188,167, 45, 12,167, 11, 75, 91, 73,183,216,185, 68, 24, 18,110, 12,140, 33,178,239, 34,187,157, 35,120, 57,144,170, 69, 69,189, + 88, 82, 54, 13, 69,105,102, 43, 85,244, 28,141,252,100,184,182, 92,174,185,189,126,207,143,111, 94,241,236,233, 5,155,245, 69, +198, 68,154,195, 11,158,163,128, 39,104,137,168,221, 5, 87,106,166,212,167,163, 49,158,202,254,107,149, 97,231, 25,101,158, 85, +222,233,144,201,156, 14,162, 50,109,204,156,246,165, 39, 33,221, 28,104,114,176, 75, 77, 2, 29,226, 1, 40, 51, 29, 40, 41,127, + 47, 31,227, 33, 48, 38,239,237,116,166,205,197, 12,145,138,105, 10, 12,145,232,229,148,221, 12,196, 41,253, 42,102, 54,249,188, + 91,202,255,171,126,150,157, 62,217,130, 52,135,213, 60, 7, 65,254, 1,174,163, 77,222,215, 26,146,206, 29,121,126, 63, 82,238, +236,101, 90, 33,107,193,132,162,172, 42, 86,171, 37,117, 85,227,195,192,246,254,134,177, 31,113,131,231,195,203,103,124,240,233, + 47,217,247,158,168,138, 76,119,147,210, 38,120,207, 56, 12,232, 20, 48, 38, 9, 48, 34,255,253,207, 54, 27,206, 46, 78,217,188, +221,208,237, 28,187,224,230, 61,114, 31, 32, 89, 69, 93, 43, 26,147,104,117, 78,164,204,135,174,213,217,221,128,192, 97, 82,182, + 48,250,164,112, 73,209,148,133,232,143,130,167, 45, 52,196, 17,187,139,196, 62, 98,150,150, 62, 5,130, 50, 68,107,193, 39,124, +136,248,100, 8, 33,226, 71,151, 9,126, 81,198,238, 57,239,226,139, 79, 62,224,243,207, 62,198, 59, 71,204,185,234,206, 79,129, + 61, 33,135,239, 68,140, 10,152, 52,160, 66,135,214, 14, 31, 18, 85,189,164,110,235, 89, 47,225,189,140,124, 79,215, 45,117, 99, +137, 41,209,247, 29,228, 75, 93,171, 36,207, 70, 86,132,139,184, 43, 29, 0, 65, 41,207, 36,167,253,145, 6, 83, 76,204,245, 28, + 96,154, 11,186, 41, 63, 62,230, 32,162,162, 52, 20,133,232,130,156,115,248, 33, 28,173,121,226,209,247,144,119,195, 90,249,243, + 49,115, 39, 38,175,120,204,159,133, 74,230, 40, 71,225,200, 14,154, 29, 92, 49, 68,146,243,196, 58, 91, 80,211, 97, 34, 53,107, + 7,242,187, 19,124, 78, 36,140, 7,157,233,132, 74,206,117,247, 60,189,226, 40,211, 33, 4,129, 87,233,252,110,168,201,237,146, + 2, 69,145, 9,137, 83, 84,172,202, 26, 53, 39,249,233,102, 18, 31,230, 6,219, 26,133, 53,217, 30,158,223, 63,153,140, 9,252, +107,130,216,216,237, 48,242,248,240, 40, 9, 84, 90, 19,188,159,171,241, 16, 34,209, 7,140,178, 4,239, 49,149,208,112,210, 28, +141, 56, 37,177,202, 47,197, 7,177, 8,248, 24,248,244,227,143,169, 74,195,221,237, 3, 40,184,191,191,103, 28, 6,106, 99, 89, + 46,219,153, 63,173,167,128,120, 20,101, 89,202,222,199, 71,210, 40,191, 28,239,125,222, 59,200, 3, 84,104,139, 46, 12,110,116, + 98,236,215,138,122,217, 98,171,138,191,252,254, 79,188,121,223,241, 79,255,240,156, 24, 35,103, 23, 23,196, 24,120,253,231,191, +241,193,175, 62, 67, 21,150,229,106,129, 87,145,119,127,255, 17,239, 19,247,187, 71,154, 69, 67,140,158,182,106, 40,155,146,119, +143, 91,225,170, 23, 37,147,169, 97, 74,218,210, 90, 81, 85, 21,215, 87,239,185,189,185,225, 98,115, 50,119,232,211, 65,173,149, + 28,128, 54, 43, 40, 3,135, 28,101,121, 8, 4, 60, 81,149,229, 36,238, 61, 58, 19, 83, 22,208,136, 93,163,180, 90, 98, 80, 55, + 75,198,113, 96,232, 7,220,232, 36,111,184, 40,168, 10,139,205, 97, 1,182,170,104,215,242,146, 42, 29,249,237,239,254,157,111, +255,250,119, 84,217,112,113,114,130, 79,137,119, 87,215,156, 46,107,140,129, 31,190,255,142,211,147, 19, 46, 98, 36,184,123,134, +187, 18, 93, 45,176,182, 21,251, 71, 8,146,197,158,162, 64, 62,220,192,238,254, 1, 99,224,236,217, 83,254,253,183,255,193,255, +249,223,255, 15,210, 0,245,249,154, 69, 85, 49,236,246, 12,201,243,252,242, 37, 47, 47, 63,230, 15,191,255, 43,239,238,222,241, +225, 7,151,156,174,214,252,245,205, 27,118,125,199,167,231, 39, 44, 19,220,237, 59, 70,231,240, 36,250, 16,101,143,165, 21,186, +176,216,162, 96, 81, 54,116, 93,135,235, 58,186,221, 3, 46, 13, 96,100,204, 60,165,222,149, 70,209,218, 72, 85,122, 10,163,240, + 4,201, 72, 87,146, 67, 63,140,129,219,199,192,118, 47,150, 50, 91, 88,218,213,130,245,114,195,162,109, 48,214,228, 49,178,140, + 61, 3, 62,163, 79,100, 60,183,168, 55,212,117,193,224,224,167,183,111, 57, 57, 61,203, 97, 28,135, 80, 5,201,215,205, 23,245, +212, 93,107,131, 81,242,114, 78,206, 17,117,228, 93,151, 14,148,249,101, 63,120, 98,243,238, 48,175,181,230, 22, 58, 77,246,176, +140,141, 85, 83, 22,181,166,208,246,160, 89, 74, 18,223, 74, 46, 10,153, 85,187,115,190,218,145,175,246, 48,190,159,116, 43, 83, + 78,122,200,239,232, 36,176,139, 49, 19,147,178, 5, 41, 78,105,129, 42, 43,114, 99,144, 3, 55,254,252, 98,143,217,183,107,148, + 21,161,162,154,240,166,113,206,212,158, 8,114, 41,171,179,147, 66,186, 16,109,229,250,208, 18, 50,163,148,194,251, 68,138, 50, +122,110,154,134,166,169, 81, 26,246,119,247,236,247,183, 56, 55, 16,129, 15, 94,126, 76, 80, 37,206, 71,162, 14,104, 29, 72, 65, +138, 1, 23,250,156,185, 32,124,124,141,252,140, 65, 7,234,147,150,243,243,115, 78, 79,222,179,223,118, 16,182,120, 15, 58,123, +171,165,128, 22,197,120,231, 18, 33, 69,108,161,168,173,194, 69, 69,239,101,164, 92, 34,151, 80, 85, 22,244, 99, 32, 89,205,162, +209,242,140,117,129, 34, 69,146, 5,175, 32,246, 1, 83, 21,140,201,176,203, 0,171,100, 21, 46,105,186,160,217,186, 72,112, 50, +142,181, 25,156, 18, 53,156,158,174,249,229,175, 62,199,232,132, 31,115, 90,166,207,137,100, 81,206,111, 29, 35, 58, 57, 66,220, + 81,208,129,242,140, 17,154,178, 98,185,108, 72, 90, 46,184,174, 31, 25,199,145,178, 42,230,149, 99,211, 88,172,173, 25,186,129, + 97, 24, 51, 33, 77, 26, 20,157, 68, 68, 25,143,227, 63, 53,140,209,231, 24, 92,133, 45, 51,247, 32,201,249, 41,226, 75, 45, 1, + 54, 89,131,224, 92,182,149,150, 50,121, 8, 65,118,221, 73,197,217, 61, 49,173,114,114, 79,153, 11, 27,177,143, 78, 93,178,154, +160, 82,211, 20,217,232, 28,127,203,204, 92,152, 26, 33,165,148, 16, 75,115,115, 20,147, 8, 97, 81, 49, 91, 44, 15, 5,167,184, +216,210, 12,163,153, 93, 27, 62, 30, 84,249, 57, 65, 48, 56,127, 40, 28, 82, 34, 58, 15,133,216,106, 83,146, 66, 8, 99, 48, 81, +252,244,106, 34,193,229,212,182, 16,164, 83,175,235, 58,255,251, 48,191, 91,182,202,126,254,201,221, 64,144, 6, 66, 43, 12, 5, + 74,245,178,242,125,220, 63,112,215,247,160, 69,168, 19, 67, 20,222,180,130,224,131,168, 38, 13, 68,231,115, 60, 96,174,246, 19, + 7, 69,107,204,194,130, 40,213,159, 46, 10, 94, 92,110, 24, 92,160,247, 18,153,183,223,142,244,206,209,158,214,180,171, 13, 97, +148,221,142, 54,134,110,240, 96,229, 1,240, 65, 30, 92,151,188, 80,226,130,164,253, 8,146, 49, 97,106,177,218,133, 33, 82,150, + 21,186, 42, 88, 63, 57,231,225,241,129,239,254,252, 45,109, 13,205,166,198, 84, 37,155,243, 51, 94,191,126,203,208,117, 44, 22, + 21,182, 46, 56,217, 60,229,234,251,119, 60, 62,220, 51, 14,142, 24, 20, 69, 33,251,223,186,173, 25,187, 68,232, 29,149, 85, 80, +232,121,156,147,140,168,137,173, 45, 80,186,226,230,221,181, 48,158,113,244, 97,164,212, 5,218, 34,188,232, 20,165,219, 78, 83, + 56,146,140, 71,136, 94, 24,215,152,156,134,166, 1, 43, 68, 47,149, 19,136,146,202,251,175,128,209,137,186, 41, 89,173, 87,148, +218,224,134, 81,246,186,254,176,167,154, 30, 80,163, 20,117,107,169,154, 2,173, 12,110,208,236,110,119, 20, 90,115,249,236, 41, +205,234, 36, 71,168,214,220,238, 7,174,183,129,175,191,251,129,191,126,243, 3,151, 47, 63,229,226,249, 7,236,238,126,192,221, +190, 66,235,142,228,123,162,235, 9,190,207,182,149,196,184,189, 34,117, 55, 60,121,122,206,215,191,255, 51,255,227,191,255,239, +164, 16,121,241,241,115,158,158, 93,224,199,129, 33, 14,156, 95, 94,242,241,243, 15,249,246,251,239,121,127,127,197,203,203,103, +172,219,154,191,190,150, 11,253,229,217, 25,141,210,220,239,247,140,222,225, 85,100,140, 98,185, 65, 37,129, 73,104, 77, 93, 86, +184, 48,224,135, 14, 55,108, 25,198, 93,142, 19,146,253,153,241, 50, 69, 88, 86,176, 44, 34, 6, 71,212,121,154, 51, 38,194, 40, +107,165,144,224,193, 69, 92, 78,136,170, 74,205,242,244,148,245,201,146,229,170, 62,224, 31,213,148,233,157, 71,194,122,110,193, +105, 23, 43, 42, 91,113,247,254,158,174,223,131, 61,160, 96,101, 75, 18,142, 98, 26,179, 15, 61,243,182,133,197, 43, 1, 48, 42, +143,143,149,192,169,243,197, 60,145,212, 52, 74,217,188, 63, 22,213,119, 58,206,105,203,186, 18, 17, 0, 73, 14,244, 20,219,170, +209, 63,183,171,165, 56, 43, 56,226, 76,167,203,182,180, 16,143,252,237,185, 50,215, 18,153,153,166,113,165,210,114,176, 37,249, +185,117,208,232,120, 68,218, 74, 19, 53,107, 58,216,210, 76,180,179, 73,108, 87, 38,119,252, 19,109, 79, 46,241,172,217,201, 62, +240, 52,145,233, 98, 78,129, 35,146,116,156,221, 3,147,167, 87,231, 66, 41,230, 48, 23,193, 33,151,212,117, 67, 81, 55, 36, 70, +134,221, 35,195, 56,208,185,158,166, 94,242,236,217,135,116,163, 98,116,145, 56, 58,201, 91,240, 35,253,184,155,215, 50, 17,159, +139,110, 43, 30,225,148,168, 76,197,201,201, 41,231, 79, 78, 88,158,212,172, 55, 75,138, 82,163,203,132, 50,137,209,107,246,163, +162,143,137, 49, 91,244,202,178,152, 33, 68,173, 85,172, 42, 77, 89, 64, 91,193,210, 70,172, 78,180,214, 81,155, 64,165, 34, 21, + 17,155, 34,109,173, 41, 26,133, 79,176,237, 61,166, 54, 4,163,233,168,217,235, 10,103, 11,250, 0,227,152, 50,116, 39,229,231, +170, 64, 27,203,175,127,253, 75, 46,206,206,100,247, 29, 2, 99,144,112, 15, 97,240,123, 98, 28,137,174,135, 97,135, 25, 30,193, +119,236,131,103,213,174, 56,217,108,196,251, 28,196,198,218, 15, 29,166, 48, 20,101,201,118,219,241,246,234,145,251,251,157, 52, + 25, 89,208, 53, 61, 67, 58,229,241,117,102, 14, 24,173,100,252,158, 67,190, 36, 81, 13, 9,132, 82, 58,163,132, 35, 70,167, 12, +225, 17,245,122,140,145,161, 15,210,160,100, 97,109,242, 14,239,132, 37, 49,113,228, 15,233,105, 6,193,217, 43, 42,107, 49, 69, + 86,130, 79, 98,142, 60,206,159, 98, 85,117, 22, 96,166, 44, 98, 54, 90, 4,110, 42, 41,188, 23,145,166,184, 64,242, 59,169, 18, + 49, 57, 98,242,217,186, 41,147,135, 20,133,209, 63,241, 17, 84, 22, 48,203,166, 84, 62,119, 17, 39,202,148,194, 34,162,212, 33, +134, 89,169, 63, 77,227,196,109, 97, 48, 70,198,238,211, 93,161,181, 76,202, 67,246,206,147, 18,125,215, 83, 21, 5, 41,121,146, +151,130, 32,232,233,123, 79,250, 4,121,167,172, 82,224, 19,250,238,161, 99,215,239,196, 38,150,196, 84, 53,205,236,199,113,196, + 57, 55,163, 97,103,144,125, 78, 39, 82,113, 2, 92, 64, 10,242, 97,246,163,231,201,249, 41, 31,126,252, 17,239,175,174, 1,157, +137,112, 30, 23, 28,203,118,193,106,181,196, 57, 79,239, 70,105, 84,130,240,110, 77, 33,149, 10, 49, 9, 18, 50, 7, 70, 72, 52, +157,144,137,140,177, 2, 71, 25, 7, 74, 83,112,246,228, 2,157, 18,127,255,219,223, 8,125,164, 93, 90,154,170,102,177,104, 41, + 11,203,213,155,183, 20,139,134,182, 21, 40,133,210,154,235, 55,111, 64, 41,118,251, 29, 77, 93,144, 98,160, 45, 44,139,186, 97, +219,109, 9, 33, 82,218, 34,119, 49,210, 45, 80, 24,148, 53,148, 69,201,237,245, 53,251,206, 19,147,193,171,130, 24,193, 27, 47, +145,144, 73, 31,218,238,140,240, 84,217,155, 41,107,201, 9, 23, 58, 5, 24,164, 35, 42,216, 17,130, 52, 11, 5,155,101, 75,179, +168, 25,198, 30, 55, 58,169,220,180, 84,117, 86, 27,108,182, 90, 20, 85, 77,221, 46,100, 79,147,247, 64, 23, 79,207,248,205, 63, +124,197,175,127,253, 37,218, 68,206,207, 55,252,227,127,253,138,179,213,146, 55, 63,189,227,253,219, 61,223,252,237, 13,191,251, +195, 31,177,166,226,139,143,127, 69, 91, 21,216,221, 29, 12, 15,164,216,203, 78, 61, 12,244,221, 29,219,221, 35,139, 85,203,119, +255,239,239,248, 31,255,235,255,134, 75,158,143,126,249,146,143, 46,159,178,125,120,160, 31, 61, 23, 79,158,241,236,228, 9,223, +189,254,137,155,171, 43, 62,124,246,148, 77,219,242,183,183,215, 60,244, 3, 47, 79, 55,108,180,149, 24,222,220,161, 15, 49,239, +205, 20,164,108,159,105, 10, 81, 31,251,113, 32, 12, 59,186,253, 29, 41, 57,192, 65,116, 36, 37,221,209,178,136,180,214,163,141, + 60, 71,126, 24, 25,198, 40, 30,247, 0,187,124, 0, 19,101,223, 87,104,195,233,217, 51,206,207,207, 89, 45, 23,148,109, 67,154, +187,212, 41, 38, 74, 97,162,116, 56,178, 47,143,121,245,226,112, 81,209,245, 41, 99, 95, 45,202,148, 88, 93,102, 4,228,129,254, +165,212,180, 19,206,211, 27,164, 11,153, 58, 29,149, 35, 55,141,178,135, 93,153,214,135, 30,122,242,172, 27,147,133,101,217, 14, +102,237,188, 15, 36,102, 26,246,180,103, 87,228,228, 40, 53, 91, 79, 81,243,255, 39,147, 4, 37, 95, 47, 28, 37,187, 77, 54, 72, + 49,218,167,153,244, 54,173, 10, 4, 47, 26,103,107,141, 80, 37,167,196,171, 28, 29, 28, 68, 4,149, 0, 63,161, 54,243, 84, 33, +231,222,204,140,188,105,109, 55,163,101,213, 65,249,174,181,130,100, 15,121,214, 34,213, 22,161, 33, 70, 10,139,236, 89, 47, 42, + 75, 85, 21,168, 24, 8,221,200,176,123,192, 59,197,227,189,227,201,211,103,232,178,193,143,157, 88, 49,141,224,140, 85, 86,232, +135,232, 72,209, 67,244,232, 24, 72,209,231,221,185, 70,155,138,243,179, 11, 46,159, 63,231,124,115,206,233, 74, 56,228, 70,107, + 80, 5, 99,176,236, 28, 92,247,176, 77, 5,161, 52, 56, 21,241,153, 7,110, 10,209, 17,212, 38,177, 40, 53, 9, 71,173, 34,181, +214, 84, 42,177,182,138, 90, 75, 7,104, 61, 84,141,193, 27, 97,158,135, 17,218, 66, 72,127, 67,180,244,170, 36,232,130, 34,239, +165, 3,228,233, 5,124,242,201, 75, 62,251,252, 51,220, 40,193, 60,206,231, 40,103,239, 72,126,132,113, 68,187,129,208,221,227, +246,247,236,246, 91,124, 80,188,120,122,193,233,233, 42,127, 14,242,185,185, 49, 18, 93,158, 44,198,145,178,210, 52,165,198,251, +152,173,179, 57, 68, 68, 77,122,137, 35,247,195,204, 77,152,224, 67,228,247,211,204,224, 44,149, 18, 42,179,203, 85, 10, 76,129, +195,201,123,172, 73,148, 69,153,239, 21,113, 95,132, 33,200,229, 26,227, 84, 93,139,238, 43,143,246,181, 86,242, 59,201, 59,108, + 97,171,231, 56,235, 52, 15,181,228,125,153,176,101, 73, 97,203, 98,126,223, 98, 8,153,146,153, 61, 44, 90, 46,251,116,228,184, + 58, 36,107, 30,224,103,226,181,207,147,144,144,215, 27, 58,205,171,169,169,128, 77, 41, 64, 72,226,206, 57,182,166, 78, 73,142, +218, 80,150,101,110,230,226,156,176,232,189, 76,122, 37,156, 39,161, 11,195,118, 24,132,143, 97,167, 70, 66,101,180,236,132,112, + 14,243,132,194,110,135, 14,155, 98,198, 25, 70, 10,155,241,139, 89, 96, 17,198, 49,255,178, 15,160, 8,163, 77,206,239, 77,179, + 81, 63,166,200, 56, 42,186,161,227,159,191,250, 7, 86,203, 13,175, 94,189,197,141, 62,143,230, 71,134,199,158,213,211, 11,172, +129,174,243,164,164,177, 90,211,123,143,243, 65,100,253,131, 39, 69, 61,135,198,167,105,252, 29, 51,213,199, 24,241, 48,187,158, + 39,155,150, 39, 79,158,242,219,127,251, 55, 94,191,122, 75,107, 52,203,245,130,213,102, 67,213, 44, 24,182, 91,238,175,174, 56, +189, 56,161,106, 90, 54, 39,103,188,127,251,150,187,247,239,137, 46,224, 66,164, 40, 75,194,224, 88, 52, 11,250,113,160, 27, 7, + 20, 80, 22,249, 96, 49, 38, 67, 20,164, 58,141,201,115,125,125,133,214, 50,214, 93,228, 72, 10,107, 91,177, 73,120,241, 85,186, + 24, 41, 72,255, 63,174,119,204,132, 38,107,237,156, 31, 93,104, 77,244, 14, 63,137, 36,178, 63,185,174, 75,154, 69,131, 82,145, +177, 23, 12,110,202, 99, 26,107,173,144,175,180, 92, 34,197, 98,129,173,170,121,228,233,189,167,105, 26,150,203,134,253,221, 29, +191,248,197,231,212, 77,203,187, 55,111,105,154, 5, 85,217,242,184,187,167, 94,175,249,238,239,111,176, 58,241, 63,253,211,127, +229,201,147,167,184,161,103,219,245, 98, 63, 73, 10, 55,236,121,120,124, 32,122,199, 95,254,253, 71,254,244, 47,127, 36, 70,207, +231,191,120,201,243,203,231,252,233,223,254,204,126, 28,120,250,244, 9,235,213, 41,239,238,239,216,222, 63,114,249,252,130,213, +114,197,143,111,222,209,143,158,203,147, 37, 39, 77,193,238,238,145,209,117, 36, 5,163,151, 41,150,202, 23,141,202,222, 87, 99, +140,132,167,196,145,125,119, 79, 63,246,132,164,230,244,176,186,208,180, 13, 84, 36, 44,129, 28,112,132,115, 35,125,212,244, 90, +227,181, 97,235,224,161,147,189, 84, 81,192,114,185,228,197,139,167,156,158,174,133,217, 31,180, 32, 46,149,160, 90, 99,144,206, + 62,197,116,160, 29, 22, 37,214, 24,188, 41, 32, 26,118, 59,185, 36,116, 33,177,179, 33,248,121, 5, 50,125, 29,142,226, 83,231, +148,182,217,223, 59, 33, 30,205, 76, 9,156, 51,154,149,236, 29, 21, 19,145,110,122,134,204,140, 23,158, 20, 74,149, 80,184, 0, + 0, 32, 0, 73, 68, 65, 84,104, 74,139,224, 71,118,123, 33,239,216,165,155, 57, 28, 68, 71, 42,121,178, 48, 41, 28,237,188, 73, + 24,165, 15,182,184, 44, 98,207, 3,119,201,161, 79, 34, 84,154,178, 58,231,208,152,188,219, 3,125, 68,188,203,187,164,121,212, + 42, 63,175, 78,228,228,170,124,249, 31,165,139,233, 35,127,188,202,207,243,148, 42,150,146, 48, 20,180,177,104,107, 9, 41,163, +137,203,130,178, 20, 97, 85,138, 17, 55,246,116, 67,199,253, 99,199,222, 39,214,103, 39,236,186, 71,162,106,168, 86, 75,138,170, + 22,221, 76,240, 71, 70,228,236,197, 87,121,234,145, 66,158,164,104,138,186,226,242,131, 75, 30,239,111,240,187, 71,250, 80, 17, +137,140,227,200, 24, 65, 5,141, 14,129, 46,231, 76,173, 75, 41, 94,140,100,192,224, 93,164,182, 80, 25,197,110, 68, 56, 7, 90, + 46,195,205, 66,161,125, 98, 28, 19,133, 74, 96, 44, 93, 9,189, 83,208, 65,172, 12, 62, 41,198,136,164,121,105,139,182,138,174, +235,136, 89,251,116,182, 94,243,155,223,124,137,182,154,222,201,229,225,163, 39,120, 65,106, 7, 55,128,119, 68,191,167,239,110, +136,125,199,249,249, 83,158, 93,190, 36, 25,112,251,142,209, 75,160, 84, 76, 17, 99, 21,237, 90,108,163,125,239,105, 26,203,114, +217,224,221,192, 56,142, 7,164,175, 54,243, 68,102, 38,124,206, 2,106,105,252, 66,136, 89,200, 90,204, 98, 95,157, 71,237, 19, +236, 72,101,225,101,112,145,170,144,149,152, 83,138,232, 61, 36,161,133,198, 48, 57, 43,164,136,212,218,200, 84, 37, 42, 48, 10, + 83,228, 49, 58, 50,121, 74, 49, 17,149,202,218, 37,249, 30, 58, 79,139, 84,190,120,173,181,114,249,207, 74,245,227,100,197, 44, +104,246,126, 74,118, 63, 76,187,194,225,153,157, 57,241,145,124,118,164, 60, 13,144,228, 60,173, 12, 26, 47,227,253, 20,228,188, +206,205,215,164,134, 22,209,172,154,243, 60, 98, 12, 66, 55,212, 26,239,189, 4,152, 41, 89,103, 23,182, 32,134,136, 87, 30, 61, + 41,247,243,164, 78, 79,228,200,148, 48, 58, 18, 12,216,135,174, 3, 34, 22, 69,136, 17, 91,216,249, 37,116, 62,144,140,201,120, +189,195, 97,100,140,100, 59, 77,168, 73,114,214,178,139, 30,188,227,197,139, 75,162,247,236,187,125,222, 51, 59,198,113, 36, 97, + 56, 57, 59,203,254, 64, 55,139, 10, 98,138, 20, 85, 41,124,247,236,252,157,213,189,147,106,113,134, 8,105, 70,239,208, 6,206, + 94, 60,161,219, 15,252,240,253, 15, 88, 83,144,212,200,217,230,130,213,250, 4,239,229, 5,247, 46,112,241,244,156,230,116,137, +181, 37, 63,253,244, 19, 41, 37,250,221, 14, 99, 12, 99,244, 88,165, 89,182, 11,110,238,239,136, 17, 74, 51,217,137, 52,166,170, + 69, 29,236, 29,104,120,184,219, 18,252, 40, 23,115, 37, 21, 87, 84, 34, 90,201,142, 75,130,207, 2,143,144,178, 69,140, 3,153, + 43,211,223,172, 17, 61, 64, 97,101,167, 23,163,160,255, 56, 2, 27,180,109, 67,213,150,244,131,168, 87,125,182, 56,216,194,230, + 14, 40,219, 24, 10, 75,185, 40,179, 0, 68,138, 33, 99, 52,117,181,100, 28,123,250,125,135, 42, 11,190,249,250, 91,246,221, 35, +203,229,138,203,151,207,169, 31, 26,134, 97,164,235, 59,126,124,117,197,233,233,223,249,252,147,151, 60, 61,191,100,147, 28, 63, +189,122, 69,240, 35, 49,141, 12, 15,143,188,254,254, 53,127,255,227, 15, 64,226,195, 79, 62,226,163,103, 23,252,241,119,127, 97, + 28, 29,207,159, 63,195, 22, 53,187,253,192,216, 15, 60, 63, 63,193,212,154,239,223,188,229,110,191,227,217,233,154,167,109,203, +110,187, 99,215,117, 36, 45, 73,120, 33,143,196, 92, 46,220, 84,242,104, 76,198, 79, 70,226, 56,208,119,143, 18, 81,171,178,111, + 91, 65, 99, 35,109, 49, 97, 60, 35,201, 43,156,210, 12, 14,246, 33, 49, 90,195, 62, 40,238,247, 3, 62,202,216,170, 44,225,227, +207, 94,242,228,217, 5,203,213, 6,109, 11,252,212, 45,198,152, 51,173, 5,162, 18,197,137,130,158,210, 10,129,186, 44,208,186, +228,126,187,229,254, 97,199,197,115, 1,151, 40, 61, 79,176,229,240, 82,135, 92,102,217,157, 79,234,223,195,190, 79, 34, 82,243, +122, 39,139,236, 56,164,162,231, 23, 87,116, 13, 34,210, 82, 36, 51,209,225,210, 28,169, 42, 24,215, 36, 1, 74, 9, 20, 86,194, +128,242,133,169,146,140,212,229,208,203, 59,202, 28,120,145, 38, 22,123,158, 34, 77, 65, 17,199, 35,245,233, 61,156,186,144,233, +178, 87, 42,205,150,159,105,159,153,102,193, 92,204, 59, 84,117,184,212,141,202,124,128, 56,119,119,106,218, 87,170, 28,125,137, +158,247,251, 83, 74,157, 82, 71, 41,117, 90,172, 83,218,136,104,181,170, 43,233, 92,156, 35,134,129,126,232,185,190,125,196,154, + 18,239, 29,227,174,163, 92, 52, 24, 91,206,233,146,232,172, 85,200, 82,102,149,228, 51, 79, 49, 39, 15, 6, 72, 58, 98, 10, 75, +187, 60,225,163,143, 63, 96,247,112,195,240, 83, 36,120,241,133,187,190,199, 39, 77,145, 85,253,131, 11, 12, 58, 15, 58,180,252, + 46,125,136,212,133,248,243, 15, 43, 20, 89, 30,185, 8,182, 52, 88, 27,136,217, 90,153, 98,100, 63, 36,134, 78, 38, 48, 81, 75, + 98,153, 66,198,172,251,190,207, 73,108, 5, 69, 89,240,201, 23,159,114,246,228, 66,206, 6, 31, 4,176,226,123,146, 31,137,206, +145, 70,113,200,132,184,231,244,116,205,249,242, 35,206, 46, 46, 24, 66,162,239,123, 12, 26,239, 3,187,174,167,235,246,172, 55, + 39,212,109, 69, 12,129,166, 77,140,195,192,126,183, 23, 71,200, 28, 36,148,102,163,100,204,225, 72,115, 33,151, 69,151, 33,243, +229,139,210,100,186, 94,156, 2, 80, 51,222, 45,219,121, 21,248,144,178, 54, 72,163,172,194,121,121, 23,130, 15, 66,161,147, 21, +119, 14,110,153,135, 1,114, 95,101,180,182, 8,236,179, 72, 78, 2,231,231, 41,178,153,166, 61,249,159, 87,230, 48, 37,138,153, +122, 58,163,102, 51, 12,138, 36, 22,199,144,146, 20, 16,211,183,206,211,169,249,231,200,220,248, 73, 47, 50,219, 67,167, 77,107, +204,249,232,147,219,101,178,130,168,201,194, 41, 83, 7,155,161, 74,226, 58, 19, 91,121,140, 94, 92, 15, 70, 46,120, 91, 72, 2, +158,143, 2,106, 19, 46,128,207,129, 77,241, 0, 40, 51, 34,118,176, 55, 15,247,152, 66,198, 3, 46,120, 10, 85,160,146,128,245, + 99,138,120, 68,240,193, 20,149,168, 39, 24,198,129, 42, 87, 90, 43, 33, 46, 49, 80, 85, 21, 31,188,120, 70, 63,116, 60,236, 59, +170, 98,201,190,219, 51, 12, 3,198,192,230,100, 35,157,172,115, 82,213,104, 77, 12,145,182,173,137, 78,232, 97,137, 72, 24, 70, +217, 91, 28,161, 41, 39, 27,144,235,123, 54,231,167, 92, 92, 92,240,237,159,191,231,254,238, 62,219, 41,224,244,249, 19, 52,224, +122, 73, 77, 43,154,138,213,201,154,229,242,132,251,219, 59,238,175,111,196,154, 21, 3,186, 42, 24,251,142,245,106, 67, 82,138, +113,112,194,149,111, 11,201, 53,183, 37, 69, 85,227, 6, 9, 48,113, 99, 79,247,176, 35, 5, 81, 23,171, 66,146,163,146,149,180, +165,164, 4, 65,148, 66,200, 44,107,142, 88,197,242,127, 93, 18,229,187, 53,130, 42, 76, 41, 18,131,216,246,166,189,143,210, 80, + 88, 75,221,212,114, 64,120,151,119,128,153,197,174, 20, 70, 31, 10,172,122, 89, 99,202, 67, 42,145, 86, 98, 43,211, 74, 49,142, +176, 88,181,236,118,143, 88,163,248,226,147,143, 48, 85,197, 98,181,193,197,145,127,251,151,223,243,112, 29, 48,213,146,215,215, +247, 92,223, 93,243,252,226, 61,231,207, 55,104, 28, 42,122,134,199, 29,175,190,249,129, 31,191,125, 69,101, 10, 78,158,159,114, +254,236,148, 63,254,199, 95,233,187,192,243, 23,207, 81,101, 1, 73, 83, 90, 88,174,150,248, 20,120,245,230, 61,119,221,200,102, +189,224,108, 81, 19,250,129,237,118,151, 69, 60,224, 50, 7, 95,216,207,106, 14,188,169,202, 66, 96, 49,161,167,219,239, 24, 93, + 20,144, 79,182,153, 85, 22,154, 74,214, 24, 81,201, 1,232,130,236,183, 70, 10, 6,109, 24, 99,193, 93,231,232,131, 76,119,146, +210,124,250,233, 7,124,241,197,199,216,162, 70,233, 74,128, 40,147,130, 62,136,117,139, 36,228,185,152,196, 14,164,149,198,249, +129,148, 20,117, 14,153,217,109,183, 92, 93,223,115,126,186,198,110, 26,162,239,164, 2,152, 62,107,115,112,188,169, 76,251, 59, +120, 92,165, 58,159, 82,220,166,168,214, 52,163,215, 99,246,206,100, 18,149, 86, 63,131,195,198,201,251,154, 69,162, 42,201,115, +167,178,208,107,166, 33,164, 44, 78, 50,217, 14,150,223,159,249, 66,197,204, 30,114,249,158,122,246,172,199,201,194,118,228, 97, +151,169, 92,250, 25,113,110,158, 0,232, 9,247,121, 56,228,213, 17,124, 99,198,205,230,169,133, 49, 89,179,144,149,243, 19,227, + 34,205,135,247, 17, 59,123, 42,114,109, 94,198, 7,133, 54, 86,242,204,139,114, 70,125, 18,246,184, 33,224, 93,162, 90,148,220, +190,189,101, 81,172,169,219, 92,112, 68,233,152, 72, 42,243, 22,188, 4,125,100,139,211,196,233, 15, 25, 66,163,180,166,170, 42, + 46, 46,158,243,201, 39, 91,118,143, 35,209, 39, 58, 2, 70, 85, 36, 31,208,121, 71, 28, 82,192, 69,121,103, 99, 72, 4,159,121, +233, 70, 51, 6,185, 60, 68,209, 31, 73,201,176,247,114,217,140, 10,250, 81,138,160, 46,105,246, 41, 49,160,176,201,160,162, 33, + 5, 97,113, 72, 46, 71,162,170, 45,166,176,124,246,217,199,124,242,249,167,116,251, 78,124,231,209, 19,189,131, 32,171, 42,183, +223, 66,244, 44,155, 5, 47, 63,253, 21, 39,235, 13, 69,128,135,253,150,177,235,112,105,228,254,113,203,227,227, 35,163,247,104, + 99,217,247, 29,219,221,158,182, 45, 89, 46, 74,202,194,210,237,247, 89,251,160,230,110, 92,214, 35,249,179, 73,242, 12,235,121, +194, 36, 66, 61,165, 20,101, 97,133,247,159,117, 44,211,221, 39, 31,177,160,138,156,207,224,149,194,204, 83, 50,113, 83,121, 98, +244, 25,203,157,159, 43, 37,151,158, 60,230, 41, 43,202,115, 33,153,197,181, 41, 23,163, 58, 23, 16,146, 93,158, 43,238,172, 46, +215, 71,141, 79,140, 81, 38,110,185, 8,159,104,127, 49,175,148, 98,254,123,169,233, 92,158, 72,118,217,218,236,189,207,113,178, + 71,202,250,124,193, 74, 60,183,199,230,245,152,168,253, 21, 26,157, 69,132, 96,173,198, 68, 89,207,133, 28, 73,172, 77, 30,171, +103,236,186,115, 78, 68,208,218,100, 43, 99,110, 24,146,154, 17,237, 89, 14,148, 35,137,193,110,187,158,211,182,193, 69, 79,100, +162,115,201, 30, 77,229, 0,248,169, 10,251,249,232, 79,208,161, 86,105,162,146, 29,223,232, 28, 47, 95, 60,231,242,242, 9,111, +223, 93, 17,141, 69, 25, 1,138,140, 62, 96,173,166, 93,174,114,186,218,100, 85, 19, 57,126, 89,149,196, 32, 21, 88, 8, 14, 63, +142, 20, 86,207,163,253,196, 20,237,170,233,198,192,233,197, 83, 98,183,231,246,250, 74, 20,143, 6, 46, 78, 54, 92, 60,127,202, +238,254,158, 20, 2,157,243,156,159,158,178, 57,219,160, 76,193,187, 55,223,163,162, 40, 43,149,181,114,104, 39,205,170, 93,242, +184,221, 50, 6, 9, 39, 89, 52, 37,182, 48,216,166, 70, 23, 22, 29, 3,193,141,244,219, 45,227,232, 51,209, 72,147,130, 1, 43, +118, 56,157, 51, 55,157,203, 35,189, 20,133,240, 53,195, 26,196, 59,169,130,236, 74,108,102,189,203,136, 57, 30,166, 30, 25, 90, + 80, 87, 5,182,180, 2,243,241,249,176,153, 38, 8,249, 67, 70, 43,108, 93, 82, 54,117, 46, 28, 76, 70, 60,202,159, 35, 73,145, +165,180, 4, 57,180,207,214, 40, 21,217,108, 78,248,226, 87, 95,113,183,187,231,246,237, 3, 87,101,195,144, 28, 15,157,167,119, +142,239,127,248, 29,231, 27,205,197,201, 9,227,222,241,246,213, 45, 55,127,191,134, 2,218,179,154,197,186,230,251, 63,127,199, +208, 7,206, 47,159, 16,180, 37, 41,205,105,219,210, 2,239,110,238,120,253,112, 79, 63,194,249,233, 9,235, 69, 65, 28, 29,183, +143, 59,153,198, 40,133,243,158,168,103,123, 54, 6, 77, 32, 96,155, 10, 83, 90, 98,242,184,177, 99,219,239,228, 96, 72,134, 66, + 37, 10, 27,105, 43,185, 24, 5,124,169,112, 70,225, 80, 12, 78,147,148,197, 41,203,118, 76, 12, 65, 99,138,138,228, 29,159,125, +242,146, 95,127,245, 25,109, 83,226,130,102,140, 62,139, 24,167,113,176, 39, 5,135,138,129,232,243, 75,159,156,116, 31, 33,176, +125,220,179, 89,149, 44,235, 6,255,224,184,127,220,225, 93,194,212, 5, 12,129,148,198, 57,129,205,102,136,140,132,143,232,185, + 79,179,202, 30,172, 53,250,224, 32,137, 58, 91,143,244,113, 8,105,154, 15,148, 56, 41,226, 39,254, 52,122,238,222,167,229,161, +158,125,233,204,118,159,140,181,226, 8, 0, 54,223,194, 9,255,179,112,152,233,176, 56,116, 68,217,171,159, 14,193, 47, 41, 31, +134, 51, 48, 35, 31,148,115, 17,192,241, 5,192, 60,222,156,186,247,137,156, 23,227,225,123,147, 51,201,103, 83,123, 58,116, 99, +218, 28, 14,211,164,213, 65,127,128,116, 43,166,176,164,232, 73,126, 96,247,248, 72,215, 57,234,186, 96,217,212,140,143, 35,238, +177, 67,157,122,148,150, 16, 18, 66,144, 56,210,113,144,131,177,174, 50,188, 35,231,201,198, 72,178, 66,255, 75, 49, 10, 44,168, +169,249,240,163, 15,233,251, 1,247,167,191, 16,211, 32,156,124, 20, 10, 79, 80,137, 24, 13,189, 79,104,157, 50,196, 72, 81, 89, +249, 57,199,201,215, 13,248,172, 61, 24, 66,196,197,196, 46, 88,122, 39, 11,224,104, 4,203,156,180, 98, 12,129, 48,200,222,223, + 37,249,207,154,178,164,174, 43, 94,126,244,156,175,190,252,130,228,246,140,206, 65, 4,239, 70, 8, 14, 63,220,209, 22, 37, 95, +124,246,169,172, 39,218, 10, 84,129, 27, 2, 59,215,113,255,240,192,227,195,142,253,184,103, 28, 3,251,126, 96,177,168,217,156, +110,184,190,189, 99,191,223,163, 84,192,141,157, 40,203,173, 17, 61,195, 17,248,103,122,238, 98, 18,245,191,228, 6,228,115, 44, + 72,222,187,201, 57, 12,211,240,122, 70, 27, 76,207,173, 22,129, 93,138,136,235,202, 88, 66,210,196, 40,132, 76,151,209,227, 33, +201, 68, 32,101,214,130,140, 66, 50, 12, 38,239,150,195,116, 49,107, 69,200, 73,112,147, 56, 84,234,217,124,209, 78,185, 16, 57, +177, 48,205, 84,196,148, 19,227,242,127,231, 36, 60,108,178,141,198, 12, 4,155, 92, 32, 50,186,159,144, 68, 63,207, 47,152, 44, +165,193, 74,131,155,156, 71, 87, 85, 78,138, 75,226,112, 81, 25,184,228,115,145,100,165,208, 8, 94,231, 59, 87,190, 86,136, 14, +165, 42,249,157,166,148,243, 49, 2,170,208,179,202, 63,197,120, 72, 92,204, 62,123,171, 20,214,143, 35,122,185,204, 54, 24, 40, +140,158,211,152, 80,154,160, 36,223,247,120, 57, 55, 85, 43,179,202,208, 72,212,221,190,235,248,229,139, 47, 88, 47, 23,252,233, +155,239, 41,180, 97, 28, 3,253, 16,216,246, 29, 23,231,167, 84,149,165,235, 70,188, 27,209,209, 79,184, 30,148, 81,184, 16, 37, +125,205, 59,156,119, 88, 83,230,209,168,140,160,108, 33,202,247,213,102, 67, 89,215,220, 92,189,101,232, 59, 72,134,209,119, 60, +249,242,115,108, 81,240,250,250,154,211,205,154, 48,142,156,189,120,193,230,226, 41,221,190,231,245,143, 63,101,124,171, 88,166, +186, 97, 96,185, 88,128, 81,244,253,136, 11,145,101,145,177,173,198,228,240, 16,169,138,134,174,103,124,120, 20,183,109,238, 24, +198,201,158,128, 70,233,192, 56,142, 50, 54, 74,210, 53, 42,201,178,156,109, 70,211,174,184, 40,138,217,142, 20, 67,200, 59,206, + 12,251,183, 96, 10, 77,189,172,179,125,199,207,230,222,233,130, 48,211, 65,172, 53,101, 83,203, 37,146,212, 1, 10,148,101, 40, +198,104,154,166,198,249,128, 31, 53,109,219,178,222,172, 88, 45,107,182, 15,119,116,219,158,243, 39,167, 44, 86, 13,125,223,243, +238,237, 21,187,221, 14, 23, 91, 82,125,194,237,245,150,239,255,240,103,252, 24, 41,219,154, 85,219, 80,151,150,119,223,189,198, +123,205,229,139,103, 12, 57,175,232,188, 89,176, 46, 74, 94,189,123,203,235,187, 45, 33, 40, 46, 54, 45,203,170, 68,135,196, 67, + 55, 16,189, 39, 42,133,143, 89, 28,149, 4,198,163,180,149, 42, 84,107,170,186,145,228,228, 48,242,176,223,210,123,153,120, 24, + 20,133,137, 44,171,136,181, 98,232,112, 33, 17,117,201,232, 13, 99,132, 81, 27, 34, 5,189,215,184,232, 40,139,136, 1, 46, 63, +121,201, 87, 95,253,130, 77, 93, 51, 56,135,142, 35, 38, 6, 98,180, 36,111,179, 45, 44, 71, 75, 6,143,139, 41, 59,183,164,232, +236,134,158,166,136,124,245,233, 39, 92, 61,222, 97,135, 17,147, 12, 78, 91, 74, 83,225,138,152,201,136,114, 56,160,204,220, 97, +155, 44,252, 19,160,108,200, 86, 27, 17,204,201,100, 64, 32, 8,138, 44, 0, 59,222,128, 79, 99,232, 35, 94,187, 60, 39,241, 72, +113, 35,239, 45, 70, 68, 62, 81, 29, 70,225,105,162,219,229, 88,203, 73,140, 71, 18,100,110,242,135,175, 55, 5,145,164,163, 65, +177, 62, 90,133,169,204,130,159,167, 9,179, 15, 93,253, 39,194,157,250,121, 80,203, 20, 58,147, 59,149,185, 49,152, 44,114,147, + 94, 96,130,115,166,233,107,134, 60,118, 21, 81,233,212, 29, 42,209,178, 97,173, 20,210, 41, 69,252,184,167,239, 71,182, 59,207, +201,162,161,110, 74,134, 49,178,221, 62,114,190,123, 68,117, 11,148, 45,241,195, 32,150, 93, 65,105, 98, 39, 85,117, 2, 51,113, +238,195,132,253,140,121, 60,175, 41,202,154, 47,191,248, 8, 21, 3,127,250,250,123,222,187,187,153,112, 89,228,108,237,164, 19, + 46, 65, 67,162, 44, 21,198, 70,124,210,185, 40, 74,160, 45, 46,106, 92, 2, 31,149,248,214,141,172, 56,189, 87,217,161, 96, 72, + 14,185,212, 93, 0, 35, 12,143,166, 17, 24,206, 7,207,159,241,233, 39, 47, 40,213, 3,219,253, 72, 26, 19, 62, 70, 58,183,231, +163, 39, 23,172, 87, 95,176,222, 44, 89, 44,214,140,126,100,191,219,178,219, 63,208,237,132, 22, 57,142, 3,247, 15,123,246, 99, +143, 81, 5,103,231,167,156,157,175,121,124,216, 73,160,203,178,149,252,238,164, 41,109, 1, 70, 84,225, 40,127,152,188,228,137, +147,156, 89, 49, 11, 38,229,179,142, 49,227,182, 76, 94,115, 28, 34, 88,230,180, 74,201, 25, 80,132,228, 80, 70, 75,212,178, 58, +224,100, 33,101, 93, 82,132, 56,138,109,142, 60, 25, 80,162,141,209, 40, 74, 35,118, 82,151, 3,190, 38,191,246,196,227, 78,121, +165,147,142, 88, 12,218,154, 89, 4, 62,137, 58, 85, 46,150,205,244,243,133,108,160, 79, 30, 21,195, 28,152, 18, 73,164, 41, 49, + 48,133,153,253,160,142,154, 49,157,215,105,222,201,132, 5,157,115, 31, 38, 93, 88,126, 27,101, 76, 21, 68,148, 25,181, 36,178, +153, 56,103, 52, 4, 37,171,158,178, 20, 66,171,115, 35,133, 45,232,195, 40,244,188,200, 92,148,164,152, 40,172,205, 3, 46,153, + 10, 88,131, 68,126, 74, 98,143,166,208, 38,227,252,228, 31, 42,181, 33, 6, 47, 23,119, 74,194,255,213, 54,199, 46,200, 97,162, +149,100, 26,147,224,195,203,151,116,221, 72,183, 27, 40, 23, 53,251,174,199, 57,199,126,191,227,147,179,167,121,212, 16,242, 14, +193,230, 49, 97, 14,150,200,135,125,244, 97,174,248, 39,248,140,112,110, 69,124,100,219,138,126,251,136, 95, 84,244,227,128, 15, +142,122,209,242,201,231,159,240,246,213,155,156,157, 43,162,180,243, 39,103,148,117,205,143,223,126,203,254,110, 75, 81,201, 46, +102,159,211,143,218,186,166,239,122,188,115, 84,218,208,212, 21,218, 26,202,178,194,218, 66, 46, 24,239,185,185,121,100,169,242, + 33,119, 4, 29,208,153, 75, 29,134, 72,223,117,164, 32, 52,180,114,126,144,197,242,167,243,248,184,177, 6, 83, 8, 73, 40, 56, +151, 17,178, 41,235, 21,132, 19, 94, 55, 5,109, 91, 17,242,195, 45,227, 60,241,182,171, 24, 37,147, 28, 69, 81, 85,148, 77, 35, +227, 67, 83, 28,216,192, 28, 42, 84,171, 13,195, 56, 82,150,137,245,102,193, 98,181, 0,173,216,109,111,185,190,186, 33, 4,205, +122,179,225,139, 95,252, 2,245,155,200,191,252,219,111,121,255,211, 59,118,175,223,179,125,253, 30,109,107,150,139,146,170, 44, +168,140, 97,123,223, 19, 82,193,234,233,154, 46, 70,124,128,203,167,167,108,154,138,239,126,248,137,159,174,239,105,235,146,197, +162,102, 81, 22,104,149,232,247,123,252, 32, 60,106,175,100,210,145,178,218,127, 74,107,138, 49,202,186, 65, 37, 66, 72,236,187, +145,253,110,148, 75, 71,201, 88,138,162, 36, 88,131, 43, 34, 41,106,198, 24,197,226,145, 44,126,178,146, 97,177, 10,150,133,161, + 52,112,118,126,202, 39,159,127,132, 49, 37, 93,223,227,189,203, 69, 82, 68,199, 81,210,219,178,162, 58,196, 4, 73, 46,252, 20, +109, 6,204, 68,174,223,188,229,127,249,205,103,252,227, 63,255, 51,255,242,219,127,101, 55, 36,138,197, 90, 46,156, 2, 18,150, + 20, 68,133,157,166, 61,122,202, 32,149, 25, 46,147, 57,239, 71,104,212,164,244, 1,190,146, 59,134, 57,128,229,200, 64,145,226, +164, 94,211,115, 71, 57, 29, 96, 83, 23,160,163,196,183,106,100,135, 23, 0, 21,163,104, 98,142,157,110,211, 33,169, 14, 89,236, + 90,107,252, 44, 12, 58, 62,140,227,156,107,158,244, 97,213, 62, 9,165,226, 84,252,115,240,193, 79, 1, 20, 90, 31, 37,195, 41, +241,176,169, 16,231, 29,251, 20, 70, 49,255, 61, 84, 58,242,204,171,156, 65, 33,246,198, 9, 30,162,146, 76, 18, 81,134, 34, 23, + 49, 41, 4, 66, 24, 51,120,197,177, 44, 91, 78, 78,106,126,120,235,184,126,120,224,242,254,129,234,116,201,144,223, 52,109, 11, + 57, 4, 13,196, 40,207,151, 10,204,207, 79,210,154,232, 21, 16,112,120, 76, 84, 88, 6,138, 74,243,171, 47, 63,161,108, 42,254, +248,199,191,241,238,237, 13, 67, 47, 74,111, 10,131, 85, 30, 98,164,211,154, 24, 53,102,128,136,155,113,184, 54, 70, 98, 42,136, + 81,227,147, 20, 56,202, 38, 10, 52, 4, 77,159, 20, 67,148,210,175,200, 34, 48,171, 21,109, 93,115,182,174,249,224,242,132,139, +139,150, 56,220,176,115, 29, 97, 52,212, 85,129,169, 12,159,125,252, 57,159,125,244, 57,202,104,182,187, 29,125, 63, 16,188,227, +238,250,129,219,237, 13,209, 39,220,232,112,126,164, 31, 7, 30,119, 3,171,214,210,214, 5,103, 39,107,252, 56,242,112, 51, 96, + 10,176,149,166,169,234, 28,156, 19, 51,235, 64,203,153, 51, 13,114,210, 65, 79,145,147, 76,242,228, 53,205, 36, 82,165,213,236, +232,153,131,132,146,153,247,242, 49, 32,211, 74,131, 88,193, 98,152, 47,169,148,197,123,113, 26,213,207, 1, 46,242, 3,152,162, + 64,217, 66,246,222, 33, 96,109,145,185, 13, 65, 58, 98,125,224, 56, 76, 43,131,105, 85, 57,243,219, 99,204, 96, 30,147,197,123, + 54,163,109,165,137, 20, 20,192, 52,133,146,172,120,109, 68, 27, 18,189,188,191, 62,132,185, 89, 83, 74, 76, 82, 74, 11,183, 96, + 42, 82,230,125,183,210, 96,210,236,144, 73, 72,242,164,137,226,138, 49, 38, 39,123,106, 59, 91,232, 66, 56,250,189, 26,177,204, +153,217, 20,159,230, 9,220,180, 38,156,104,115,214,230,212, 40,239, 2,166, 48,217,167,151,178,173, 74,186,140,120,228,155,139, +121,158,162, 76, 86,238,102,200,134, 15,158,170, 50,124,252,225, 75,174,238,110,228,161,213,134,113, 16, 59,155, 78,134,205,233, +138, 16, 68,244, 69,148, 93, 74,231, 28,198,218,124, 81, 6,116, 82,120,231,242, 88, 62, 7, 8,228, 78,160, 40, 10,154,118,193, +118,216,211, 56,135, 29, 43,134,126,192,167,192,211,103, 23,216,178,225,250,234, 91, 78, 87, 75,250,113,100,181, 58,225,233,203, +231,140,187,129,119, 63,190,206,162,126, 57,153,134,113,164,104, 27,116,165,233,110,247,164, 8,117, 85, 9,122,212, 24,138,170, +202, 12,106,216,110,119,220, 60,222,178, 90, 84, 68, 47,151, 78, 80,138, 98,217, 10, 96,196,192, 56, 12, 56, 47, 86,141,144,226, + 33, 70,149, 56,199,103, 74, 30,119, 62,224,144, 10,204, 26,157, 71,163,242,240, 77, 44,235,144, 28, 33,168,220,181,136, 90, 62, + 17,177, 90, 81, 24,177, 53,149,117, 41, 88,198, 73,233,156,209,141, 38,123, 53,147,210,162, 19,240,176, 94,159,208, 52,181, 28, +210, 58,161, 2, 20, 70,176,165,133,213,148,149,230,244,244, 25,191, 30, 28,255,250,238,255,226,111,175,223, 16, 98,164, 89,174, +178, 19,192,176, 31, 6, 60,176, 56, 93,227,131, 38,244,158, 15, 94, 62,227, 98,189,226, 47,127,251,142,119,119,247,156,175, 22, +226, 69, 54, 26, 83, 64,232, 71,134,177, 99, 12,145,152, 71, 99,122, 82,168, 30,197,217, 90,107, 49, 85,133, 87, 10, 23, 2,219, +110, 36, 96, 81, 58,100, 79,183, 33, 40,232,148, 21,151,168, 86,164, 34, 99,131,149,161, 52,134, 66,103,146,154, 82, 20,170,100, +189,106,185, 56, 59, 65,141, 29,125,144,209,191,247, 97,238, 56, 85,146, 16,162, 24, 10, 92, 84, 4, 36,183, 32,132, 36, 43,160, + 20,184,122,119,203,105,163,216, 84,240,205, 31,127,143, 86,154,151, 31,188,164,108,151, 88,228, 80, 47,138,146, 20, 28,209, 79, +221, 93,230, 63,103, 26,154, 50,114, 48, 38, 45,217, 9,178,203,254,185, 8,135, 28, 23, 59,121,106,167,253,180, 34,231,204, 39, +153, 78,160,192, 28, 17,139, 38,188,107,154, 5,150, 86, 46, 67, 45, 69,226, 36,218,137,185, 35,229,120, 28,170,212, 12, 84,210, +121, 71, 31,242, 69, 31,166,206, 53,239,210,211,244,187,157, 68,240,147,128, 46, 15, 34,211, 17, 90, 79,229,110,251, 0,150,209, +217,239, 46,127, 23,163, 52, 97,222,159,103,172,108, 74,243,104, 82, 58, 41, 57, 68,201, 22, 52,163,138,217, 21, 50, 57, 11, 20, + 9,162,199,187,142,126, 24,197,206,105, 19,155,133, 69, 61,171,249,238,213, 13, 63,222, 93,115,242, 86, 83, 84, 53,182, 44, 49, +101,160, 40, 53, 38,149,224,178, 97, 62,201,187, 32,251, 99, 13,222, 19, 85,144,149, 95, 10,164,216, 99, 16, 95,251, 71,207,150, + 44,171,143,121,243,246,148,199,237, 35,143,119, 91,246,189, 35, 69,199,162,170,242,239, 90, 81,151, 50,141, 49, 74,158, 79,107, + 45,125, 26, 24, 59, 71, 72, 1,178,243, 39, 26,197,216,141,168,221,158, 82, 71,170,210,230,241, 53,180,139,130,243,197,154,245, +186,101,185,168,208,193,131,174,120,126,121,201,201,233, 57,171,118, 65, 76, 35, 94, 9,168,201, 19, 73,222,115,115,115,195,221, +195, 61,183,239,239,121,244, 59,116,210, 24,165,217, 15,123,170,166,230,163,243, 13, 42,137, 96,238,167, 31,127,162,208,145,243, +211,154, 16, 34,166, 44, 81, 70,225,131,156, 17, 42,133,108,191, 61, 60,115, 17, 17, 47,155, 92,192, 29, 70,243,211,144, 61,127, +180,241,103,149, 41,200, 50, 87,158,173, 40,103,217,212,237, 79,117,164,120,235,167, 21, 38, 57, 86,152, 44,176,148,207,199, 22, +242,204,198, 16, 15, 12,116, 45, 9,118,122,202, 22,208, 83,156,175,153, 39,203,198,216,159, 17, 22, 83,222, 81,147,139, 86, 50, +162, 59, 77,209,204,153,155, 16,145,203,178, 44, 44,123,142, 62,207, 49, 39,188, 25,157,195,150, 14, 86, 77,113,110, 29,176,230, + 19,195, 64,233, 52,167,218,153,194,162,181, 63,128,168,194,228,199,215, 68, 21,113, 97, 42,170,196,209, 50,120,143,177,249,157, + 82, 38,179, 49,244,156,124, 39, 57,159, 9, 91,148,242, 34,185,209,209,214,181,252,210,179,135,207,228,110,111,154,189, 31,198, +242,147, 17, 63,205, 54,157,209,121,190,248,226, 83, 86,155, 53,223,189,250, 81, 42,136, 28, 4,224,189,151,104,196,182,193, 57, + 63,255,165,165, 96, 8,114,200,207,162, 57, 25, 99,171,169,155,139, 83, 82, 89,164,106, 26,130, 15,220,223, 92,115,118,113,202, +216, 15,184,193,211,212, 37, 79,158, 62,225,230,234,138,190,235, 89, 94, 62,231,246,234,154, 95,252,250, 75, 86,103, 27,190,254, +215, 63,112,251,254, 26,211, 88,130,146,170, 85, 43, 77,221,212,196, 81, 56,195, 66,120,147, 0, 13, 91, 20,152,194, 80,150, 5, +119,143, 91,174,239,174, 81, 90, 30,228,193, 7,124, 72,148, 77, 77, 52,242,178,196,152, 24, 71, 71,138, 9, 63, 29,110, 70, 75, +167, 52, 65, 76,148, 84,166, 70,201, 72, 94,133,233,179,205, 89,209, 57, 4,160,176, 2,213,144, 10, 77,207,221,155, 54, 26, 21, + 19,182, 20,180,160,173, 43,138,186, 58, 88, 77, 72,243,131, 51, 29,164,193,123, 92, 63, 80,149, 53,205, 98,113,192,145, 34, 99, +157,213,114, 67, 83,181, 56, 21,121,184,189,103,119,183,227, 79,255,207,111,249,238,119, 95, 83,149, 21,205,122, 37, 98,173, 16, + 24,250, 1,128,118,181, 17, 43, 90, 55,240,201, 7, 47,249,224,197,115,126,255,135, 63,240,234,221, 21, 79, 78,207,114,146, 91, +160, 41, 42,188,247, 12, 67,207, 56,122,249,123,170,248,179,172,112, 9,130,144,209,111,217, 54,232,194,128, 22,145,163,104, 23, +100, 15,169,162, 71,197,188, 83,114, 96,130, 40,255,163, 18,175,120,102, 32, 97,173, 66,171, 64, 85, 89, 42,107,105, 74,120,184, +189,193, 35,185,196, 49, 39,224,201, 69, 22, 80, 99,196, 17,217,251,146, 65,149, 36, 83,160,146,240, 9,220,208,115,117,117,205, +221,253, 61, 31,126,120,193,221,195, 3,129,123, 76,115,194, 87,255,248, 37,206, 5,222,191,251, 9, 21, 35,182,172, 9,182, 64, + 17,231,144, 18,109,242,193, 50,237,185, 85, 58,140,234,166, 53,114, 86,242, 79,148, 55,149,195,100, 36,194, 81, 29,226,134,173, +154,169,138,233,200,250, 53,189,151, 90, 9, 78,117, 66, 54,235,255,228, 9, 15,242,139, 62,194, 22, 30, 18,212, 38, 17,220,196, +166,159, 70,253,234, 64,173,153,149,227,233,168,192, 62,138, 29, 20, 17, 84,174,102,212,145,130,127,154, 44,204,255,137, 81,243, + 97,125, 88, 37,168, 67,241,144, 69, 74,202, 48, 63, 27,154, 41,161, 46, 78, 63,108,238,192,164,120,141, 74, 96, 37, 49,229,113, +181, 53,244,221,192,197,122,141,243,240,246,250,150,119,251,123, 22,203, 53, 79,159,191, 96,185, 81, 24,151, 72,110,151,255, 62, + 10, 31, 35,133,130,132,100,110,235,232,112,201, 17,149, 65, 25, 48,110, 47, 59,102,101,169,234,146,139,243, 11,158, 63,253, 0, + 91,150,120, 23,233,186,142,110,223,163,109, 73, 83, 20, 50,233, 43, 12, 36, 73, 73,139, 41, 81, 20, 6, 23,101, 95,235,163, 80, + 50,227,152,232,198, 14,231, 70,130,243,121,138, 33, 66, 77,107, 12,117,101,105,139, 34,211, 21, 45,182, 90,176,168, 87,172,214, + 27,108, 81, 18, 99,228,254,238,142,183, 55, 55,196,116,205,190, 31,184,126,255,158,237,246,145,136,160,116,123,231,233,251,129, +213, 98,193,229, 7, 47, 88, 45, 10, 22,117,201,237,205, 21, 87,215, 29, 87, 87, 59,158,158,213, 60, 57,223, 16,177,184, 0, 46, + 56,148,242,121,146, 98,114, 72,203,225,252, 63,214, 88, 28,132,233,234,103,132,194, 89,124,150,142, 69,148,210,241, 78,121, 31, +114, 89,203, 94, 92,101,168,145,192, 87, 4, 15, 78, 58,218,250,170, 52,135,141, 21, 86, 58,126,161,173, 77,137,161, 82, 94,154, +156,106, 56, 9,214, 38,239,153,209, 42, 55, 80,105,102, 45,168,120, 8, 8, 51,121,106,230, 50,148, 72, 27,137, 34,158, 56,245, + 74, 39,138,170,248, 89,247,157, 66,152,223, 95,149,223,249,152, 18,209,167, 76, 43, 84, 98, 65,155, 35,203,213,220, 76,144,153, + 12, 58,163,143,149,150,160,176, 73,127,147, 68,193,203, 56, 12,244,222, 97,138, 2,239, 60,177,178,135,201, 64, 18, 90,105,140, + 50, 73, 33, 6,137,155,181, 90,146,142, 30,199,142,147,213,114, 62, 14,130, 23,143,170, 54,134, 99, 63,129, 66, 97,242,129, 16, +115, 85,164,163,198,185,200,229,139, 75, 76,105,185,186,190,163, 40, 75,124,240,132,232, 25,134,129,186,174,104,154, 5, 49,202, + 72,121, 63,116,108,218, 86, 42, 19,157, 73, 56, 90, 60,195,222, 11,165, 41, 29, 37, 64,151,182,162,105, 27,110,174,111,164,195, + 42, 45,247,183, 91,162,242,156, 92,156,178,104, 27,110,174,175, 41,219,101, 78,200, 9, 92, 92, 62, 33, 58,205,171,191,127,143, + 11, 1,107, 42,188,119, 12, 93,207,162, 89, 98, 75,131,219, 14, 16, 99, 22,108,200,136,198, 86,245, 28,200,113,123,123,207,246, + 97, 71,133, 37,196,196, 16, 60, 74,105,138,178,146, 60, 99,196,215,153,178,234, 53,102,117,187, 28, 64,121, 52,121, 44, 30,202, + 59, 40,149, 61,141,113, 62, 84, 19, 90, 89,202, 82,192, 18,126,148,209, 47,128,177,226, 72, 48, 40, 10,107,133,178, 85, 23,115, +133, 56,127, 54,250, 32,154, 34, 38,198,125,159,197,137, 13,153,136, 32, 59,165, 32,149,114, 81,214, 4, 21, 24,135,145, 34,105, +126,255,219,127,231,223,255,199,255, 77,219,174, 56,185,188, 32,185,128, 27, 71,156, 15, 84,198, 82,175, 86,244, 67,164,223,237, +248,244,229, 7,124,244,209, 11,126,247,187, 63,241,221,171,183,124,244,252, 57,126, 28, 25,156, 99,125,182,128, 49,225,123,199, +190, 31,101, 68,153, 69, 28,147,232, 73, 42,244,172, 6,175, 45,245,106,129,109, 42,130,115, 24, 20,139, 69,133,215, 80,214, 37, +139, 69, 67, 89, 21, 50,233, 40, 52,198,138, 24,205, 88,129, 55, 20,214, 82, 22, 22,107, 36,141,173, 46, 75,202,186,162,212,137, + 48, 70, 58, 63,144,188, 32, 51,135,190,163,239,247, 4, 63, 48, 14, 29, 93,215,177, 27, 70, 30,247,123, 30,134, 68, 28, 35,117, + 93, 80,150,134,167,167,167,188, 88, 47,241,225,142,183, 15, 59,234,122,205,217,121,195,203,143, 63,230,187,111,191, 97,177, 89, + 96, 75,139,177,133,124, 70,136,123, 67, 46,117,185,104,167,209, 91, 2, 73, 75,155,195, 27,117,238,228,142, 20,239, 90,147,162, +154,237, 98,211,255, 24,155,119,240, 41, 29,221,167, 33,119,239, 89,129,156,157, 4,106,138,134,140, 82, 8, 6, 4,228,164, 98, + 62,129,245,148, 3,159, 59,247, 24,228,157, 12, 65,216,159, 81,212,218, 58,102,187,215,228, 73,143,146, 73,144,142, 45, 62, 42, +230,110,233,144,220,165, 81,115,129, 49,195,155,142, 89,239,217, 54,164,227,193,199,126, 60, 98,213,202, 28, 77, 5,227,193,154, +167,243,126, 61,127, 33,147,117, 56, 17, 73, 16, 36,122,180, 74,212,182, 64, 37,195,245,237, 3,203,114,193,233, 47, 63,231,233, +229, 37,167,151, 47,105,154,138,251,135,183,236,238,110, 24,186, 45,168, 64, 85, 84,252,127,108,189,235,179, 37,201,117,221,183, +246,206,204,170, 58,207,251,236,238,153,233,121, 96, 64,144, 32, 33,145,180, 76, 6, 25, 10, 57,172,112,248,147, 62,234,111, 85, +132, 45,217,162, 40,134,105, 26, 10,210, 0, 72, 10, 32, 8, 2,152,193, 60,187,167, 31,247,117, 94, 85,149,153,219, 31,246,206, +172,186, 67, 51, 98,130,131,158,190,221,247,158,115, 42,115, 63,214,250,173,166, 91,160,233, 58,132,118,161, 65, 28,206, 68, 76, +174, 85, 56,201,204,107,175,204,152,128, 96,243,214,148,129, 52, 14, 24,198, 81, 39,154,146, 38, 84,105,214,192, 13, 10,108, 19, + 21,213,145,164,156, 85, 52,149,116, 84,220,114, 0, 40, 33, 83, 66, 28, 70, 36,137,112,228,192, 96, 68, 17,117,226, 56,135, 40, +192,254,254, 22, 55, 95,126,137,126, 24,209, 44, 91,220,188,189,195, 63,252,252, 19,128, 51,156,107,144,179, 78, 65,137, 3, 22, +139, 6,219,139,181,242, 4, 82, 66,219, 16, 48, 30,112, 28,239,177,110, 5,249,188, 5,179, 67,211,181,112,109,167,188,140,195, +160, 62,115,209, 76,118, 29, 13,107,102,248,124, 61, 52, 97,133, 81,247,214,147,143,155,173,248,178,124, 6,211, 23, 57, 70, 37, +176, 5,207, 24, 37, 35, 15,170, 99, 80, 32,144, 50, 34, 84,103, 36, 53,122, 23,134,230, 5, 43,105, 50,120,133, 36,197,148,224, +157,183,213, 85,170,155,235,199,207,156, 93,194, 54,105,170,141,169,216,216, 29,170, 35,115, 68, 24,205, 99,159, 37,215,221,125, +153, 68, 21,178, 97, 74,130, 16,172, 35,143,169,214,201,197,178,154,114, 70,206, 92,167, 10, 4, 85,223,107,148,185,190,167,132, +108, 9,119, 70,100, 45,188,137,172,213,172, 99, 54, 81,101,198,221,126,143, 62,141,104,187, 78,117, 22,147,157, 30,196, 48,254, +190, 78, 4,117,151, 33,240,141, 11,136, 41, 98, 72,163,101,225, 90,166, 50,212, 70,196,102,227, 41,115,253,242, 80,123,103, 34, + 0, 19, 29,132,224,112,253,244, 9,250,126, 64,127, 26,177,108,181, 83, 27,163,230,177, 95, 95, 92,162, 9, 14,251,211, 9, 49, + 70, 80, 18, 52, 78,179,129, 57,120,181,136, 56,143,190, 79, 40, 81, 90, 98,124,233,156, 52, 49, 40,197,136,227, 97,135,245,122, +141,148,128,225, 52,160,107,150, 88,175, 86,232, 79, 39, 28, 31, 30,112,246,236, 41,134, 97,192,229,147,103,120,239,249, 7,120, +243,197,215,184,125,245, 10,205,226, 12, 0,208, 31, 78, 96, 31,208, 45, 23, 24,226,128,126,236,181, 59,183,139,208,123,143,208, + 54,112,222,227,176,219, 99,255,112, 15, 98,143, 60, 70,236,135, 17, 99, 4,124,171,150,183, 20, 5,227,216, 27, 50, 49,171,168, +205, 96, 34,190, 12,223, 75, 46, 98, 90,249, 0, 0, 32, 0, 73, 68, 65, 84, 7,194, 89, 1, 4, 57, 34,103,135,204, 94,119,110, + 5, 70,195,250,240,251,224,181,138, 23, 13, 80,209,209,151, 83,132,165, 49,132, 93,104, 13, 75, 57,133, 38,148, 61,108,217,105, + 14,125, 15, 34, 77, 34, 35,239,117,180,196,198,108,206, 4, 70, 80,118,192,144, 17,156,195,127,255,241, 79,240,211,255,246, 99, + 60,125,231, 57,174,222,185,198,253,221,141,238,193, 79,163, 38, 87,181, 43,236, 78, 39,156, 14, 7,252,238,243, 15,240,252,249, +115,252,232,167,191,192,139,151, 95,224,227,231, 79,208,159, 70, 28,251, 19, 46, 46, 54, 64, 76, 56,246, 25,195,177, 87, 0,131, +163,170,148,134, 5,133, 72, 9, 61, 32, 66,123,118,134,197,102,139, 76,140,227,105, 4, 66,135, 69,187, 64,179,110,112,117,113, + 6, 31, 58,112,201,189, 22, 61, 44,154,166, 65,211, 54,104,219,128, 54,232,255,111,218,128,118,217, 96,201, 11,120, 86, 91,102, +202, 26, 9,155,179, 64, 28, 97, 56, 28,180, 43,146,136,152, 6,228,116,194,119,143, 39,156,246, 35, 94,237, 78,184,217,157,240, +229,171, 29,190,121,245, 22,183, 56,226,157,115,143,101,179, 64, 20,194,237, 97,135, 77,138,248,199,159,255,147,162,102,207, 47, +208,180, 11,136,141,207, 20, 3,171,227,118,112, 65, 67,186,234,241,213, 93,187, 14, 40,139, 40, 77,102,201,105, 68,106,231,212, + 93, 94,174, 22,153,185, 26, 93,178, 93,228, 66, 53,115,129,172, 19,170,187, 71, 19,220,144, 1, 63, 52, 40,104,250, 61,112,140, +156,168,254,253,146,181,252, 76,150, 88,165,241,142, 83,148,100, 1,205,148,219, 89, 5,110,169, 70,184, 78,235, 2, 45, 96,203, +222,176,192,169,138, 39, 93, 80,198,166, 26, 40,172,190,218,100, 99,214, 50,165, 85,209,160,198,103, 90, 90,153,203,181,104,157, +102, 0, 25, 36,138,178, 37,187,128,251,126,167, 5, 73,183,194,119, 62,248, 61,124,252,193,119,176,106,214,232,253,136,219,155, +175,113,255,246, 5, 98,218,225,108,123,141,230,157,239, 97,185, 88,195,119, 43,184,110,133,166,237,128, 16,244,243, 90,196,176, + 16, 72, 26, 85, 20,137, 1,201, 18, 43,239,222,188,198,235, 87,223, 32,132,128,245,114,137,182,245, 72, 57, 34, 14, 35,118,187, + 3, 78,195,128,224, 24, 77,112,112,206,226, 81,225,116,237, 40,130,197,178,209, 20,177,164,211,139, 33,247,106,161, 34, 53,102, +171,216, 86, 87,150,167,211, 9,199,227, 9, 34, 25,139,110,133,187,211, 3, 62,251,236, 51,228,156,177, 92,175,113,117,113,133, +203,235, 13, 30,238,143,104, 26,194,229,217, 19, 4, 31, 48,230,136,205,118, 1,113, 71,112,140,184,121,123,131,227,237, 11,172, +175,182,104, 90, 15,207, 1,205,194,225,252,124,186,184,227, 48, 42,172,216,200,111,236, 4,228,179,173, 69,230,185, 1, 12, 34, + 93, 33, 84,180,112,161,254, 49, 43,169, 15,147, 69, 77, 3,142, 48,107, 96, 74,158, 70,129, 19,161,238,144, 85, 0, 54, 57, 68, +136,203, 36, 83,159,163, 80, 0, 45,182,254, 33,159, 43,204, 69, 87,238, 82, 57, 7,201,216,254,222,121,184,144, 43,103, 29, 89, +116,189, 98,207, 3, 59, 21, 58,202,144, 49,142, 10,178, 10,164,244,201,193, 38,138,193,121,211,125,141, 96, 94, 64, 68, 35,109, +139,126,201, 59, 54,202,155, 64,144,234, 68,172,236,243,129, 12,162, 96,118,211, 92,159, 9, 85,238,139,121,212, 53, 0, 70,197, +182,130,156, 35,250,254,160,246,104,231,244,153, 51, 95,126,121, 10,116,114, 18,145,147, 5,173, 41, 3,133, 49,166, 4,134, 50, +127,139,218, 53, 91, 5, 29, 88, 45, 67, 41, 26, 28,197, 14,103,103,169, 83,176, 3, 96,115,177,193,243,119,223,197,155,215,223, +168,119, 91,128, 97, 24, 17,163, 98, 82, 23,171,133,142, 54, 82,172,123,143, 12,179,233,176, 67, 76, 64, 96, 66,223, 31,180,215, +200, 35, 64, 58, 98,106,130, 71,240, 13,142,135, 30,121, 20,141, 73, 61,233,104,127,115,190, 6, 64,232, 15, 61, 60,171,200, 44, +157, 70,124,240,241,247,225, 26,143, 79,127,253,107,156, 14, 35,206, 55, 1,227, 48,226,112, 56, 97,179, 92,162,109, 29, 78,247, +218,161, 44,156,175, 59,233,166,109,209,182, 45,152, 8,119,183, 55, 72, 49, 34, 48,225,148, 19,142, 49, 2,206,171, 53, 13, 90, +117,199, 24,225, 89, 33, 19, 81, 84,153,174,162,142, 60, 19,254,184,122, 56,178,125,216,203,104,182, 30,104,204,104, 2,219, 27, +155, 43, 38,147,152, 33, 73, 65, 5,206, 51,200,121, 52, 93,176, 75, 3, 54,204,214,157,103, 34, 32,136,238,247,179, 8, 22,171, + 21,124, 27, 42, 52,200, 59, 45, 56,250,227,128,225,176, 67,211,117,112,142,240,163,191,252, 27,252,226,239,255, 17, 31,253,246, +199,120,246,221,143,240,250, 55,159,163,223,157,144,135,136, 16, 60,224, 61,222,158,142, 64,138,248,253, 15, 63,194,213,243,231, +248,209, 47,127,129,155, 23, 95,227,253,235,119, 49,244, 61,134,211, 9, 23,103, 91,181,164,156, 18,198,126,192,105,140,176,173, +150,117, 91, 52,241,202,157, 71, 20, 65,179,104,113,126,177,133,115, 30,199,195, 17,251,253, 30,137,128,213, 98,129,203,205, 18, +109, 19,208,180, 94,133, 34, 78,199,234, 33,120, 44,151, 11, 52,173, 89, 15,201,193, 7,143,198, 82,244, 64, 25,177,216,168,224, +144, 89, 57,229,146, 19,218,182, 65,116, 12, 68, 7,162, 0,225, 6, 66, 11,248, 69,198,242, 60,225, 3, 73,248,237, 15,119,232, +111,215,120,115,119,131, 23,175, 31,240,112, 56, 96,177,244, 88, 54, 30,119,111,191,196,195,245, 37,186,119,159,163, 91,109,224, + 67,135,156, 71, 12, 54,129, 44, 66, 56,221, 83, 23, 75,155,242, 28, 28, 89,180,177,141, 10,171,165,147,117,199, 76,165, 35,209, +132, 12, 77,177,178, 3,160,130,154,104,134, 87,173, 34, 29, 61, 76,115, 13, 88, 82,208, 6,205,152, 88, 92,104,114,170, 10, 82, +223, 43, 39,100,155, 38, 56,210,117,134,204,243,133,138, 63, 93, 52, 8,199,153,133,168,170,243, 31,197,186, 91, 17,145, 39,166, +132, 84,208,136,106, 39,136,241, 40, 5,171,184, 1,168,136,155,114,210, 17, 42, 57,139,106,181,159, 39, 9, 18, 39, 16,143, 16, +239,167,196,171,226,215,111, 2,158, 60, 89,225,213,238, 1,199,225, 14,191,117,253,125,124,252,241,119, 16,105,135,111,238, 95, +224,254,205, 27,180,155, 45,182,207,127, 7,221,250, 2, 46,180,138,248,101, 6, 56,215, 46, 17,167,193, 58,174, 17, 50, 66,133, + 80, 57, 33, 90, 33, 73, 25,104, 88,211, 21,151,205, 2,247,187, 7,228, 56, 98,179, 93, 35,248, 18,206, 33,150,176, 24, 17, 73, +212, 9,145, 35, 36, 70, 28, 78, 7,220,221,238, 33, 36,232,218,128,237,102,141,245,178,173, 66, 66, 45,192, 20,194,162,208, 17, +194, 55,183,183,248,230,229, 43,220,221,223,227,236,226, 2, 31, 62,191,192,114,177,193,205,237, 3,238,110,238, 16,188,195, 7, + 31,190,131,111,190,126,141,251,253, 1,187,195, 30,155, 21, 99,211, 17,104, 56, 1,164,129, 92, 87,103,103, 24,211,104,169,132, + 45, 28, 7,237,204,179, 0,113,196,216, 31, 33,105, 0,104, 4,187,140,192, 25, 66, 1,217,208,193, 37,249,175, 64, 87,170, 37, +204,128, 80,152,141,225, 85, 77, 94, 56,233, 52, 67, 11,139,225, 79,201, 8,109, 98, 5,101,137,105,133,121,175,213,206,198,213, + 77, 77,112,172,171, 81,133,121, 41,183, 61,231,137,192,168,225, 96, 5, 76,164,206, 8,181,221,205, 4,107,236,234,247,109,198, + 11,213,146, 56, 69,125,167,113,180,255,158, 77,148,233,177,175,244,104,163, 67,230, 4, 71,186,230, 74,197,250, 70, 74, 89, 77, +201, 64,105, 41,155,114, 62, 34, 4,182, 16, 52,125,129,216,214, 16, 98,103, 54,163, 60,127,122,182, 11, 39, 43,132, 13,153,219, + 39,200,152, 16,154, 0, 39, 90, 4, 83,178, 21, 27, 79, 46, 29, 17, 45, 44,114,202,240,193,121, 28,227,160,135, 34,171, 47, 60, + 37,181,103, 72,214,221,142, 50,135,211, 36, 2, 40, 70,122,219,133,199, 28,241,193,179, 15,176,217,108,240,197,139,175,181, 42, +203,186, 87, 24, 83, 6,177,195,186,107, 17,109, 87,146, 99, 66, 19, 26,139,118, 52,152,189,229, 84,167,104,220, 69,152,159,144, +213,138,144,213, 4, 14,202, 9, 77,211,224,212, 31,245, 0, 13, 1, 67, 28,144, 70, 29, 35, 5,246,240, 43,135, 15,191,251, 49, + 94,125,243, 10,159,254,211, 63,162,235, 58, 52,161,197,253,253, 61,188, 48, 66, 8,182, 7, 31, 42,224, 35,165, 17, 77,104,177, +216,174,177, 88, 44,240,246,213, 27, 28, 31,246,117,159,152,114,134, 48,192, 77, 3,118, 30,128,211, 68, 35,110, 64,226, 52,248, + 70, 4,206, 62, 48,206,252,156, 41,103, 36, 35,124, 65,212,158, 35, 16,100,199, 70,183,210,172,102,176,128, 60, 89,135,132,170, + 65, 38, 83, 21,115, 80,143,190,111, 26,176,129,102,116,228,101, 29,161,117,233,253,169, 71,150,132,213,122,133,182, 13,112,152, +132, 80,148, 29,142, 55, 59, 60,220,223, 99,123,125, 6,231, 90,252,228,191,254, 21,126,249,211, 95,224,119,254,213, 15,240,209, +247, 62,198, 63,253,237, 63,224,246,245,141,198,218,182, 45, 50, 19,110, 15, 7,156,115,135,239,255,214,199,136, 97,129,159,254, +242, 87,216,189,126,131,139,139, 51,100,137,200, 99,196,118,179,134, 16,208, 15, 3, 82, 28,209, 15, 39,100,202, 8,142, 53,205, +140, 9,189, 36,149,209,216,196, 71, 88,112,126,125,137,205,102,141,211,208,131, 60,225,236, 98,131,243,179, 53, 46, 46,214, 88, +110,214,240, 77, 64, 19, 2, 22, 75, 77, 8,116,236, 33,142,209, 82,163,157, 77, 81,227,218,133, 34,134, 22, 46,146, 30,201,166, +210,173, 18,112, 19,213, 80,134, 39,197, 74,102, 86, 90,140, 56,134, 75, 30, 43,231,176,104, 22, 88, 95, 61,195,243,223, 18, 12, +247,123,156,134, 35,226, 16, 49, 14,162, 94,246, 20,225,216, 35,201, 80, 63,199,108,185,246,112, 14, 32, 21, 60,105,241,102, 76, +130,210,151, 23,229,185,154, 33,103,226,178,153,223,213, 14, 19, 73, 82,173,109, 37,250,148, 30,177, 95,167, 11,191, 76,105,138, +213,172,106, 44, 36,215,156,211,250,247,204,246,227,115,202,214, 92, 59,163,214, 29, 76,108,120,115,184,148,169, 1,230,235,117, +251,223,142, 38,184, 71,141,129,165, 41,126,184, 94,226,164,217,220,204,143,139,222, 18,124,161, 43, 42,253, 7, 98,153,238,185, + 68,218,153,120,136, 9, 77,187, 64, 94,157, 33,241,136, 63,249,131,167, 64, 22,172, 55,107,220, 63,188, 68,118,132,118,115,142, +119,223,125, 15,139,102,133,108,252,128, 42,236,163, 92, 63, 51, 41, 39, 27, 27, 7,133, 95, 85,224, 83, 86,187,147,125,223,224, +140,229,170,133,123,231, 10,235,195, 66,245, 66,134,181,229,192,216,172,151,112,238,168,142, 33, 82,128, 77,211, 4, 45,212, 45, +168,232,112, 58,162,239, 7,236,238, 15, 32,142,104,221, 99, 76,239, 56, 70,244, 49,162, 99,143,165, 79,184,216,122,180, 97,131, +183,111,223,224,126, 73, 88, 45, 28,134,211,136,251,251, 30, 55,183,111,224,112,194, 34, 48, 86,103, 1,199, 49, 99, 56,141, 8, +235, 13, 66,227, 16,211,104, 73, 94,140,101,179,134,227, 0,242, 37, 75, 60, 1,121,196, 24, 79,136,185, 7, 56,171, 88, 51,120, +211,160,104,161,151, 69, 84,243,100, 66,220,152,203, 25,205, 54,170,206,198,101, 39,100, 74,150,248,107,122, 14, 27, 79,171,200, + 83,187, 82,216,251,170,155, 2,182,248,209, 88,133,106, 57, 71,251,108,230,234,139, 39,227, 48, 4,203, 15, 47,159,175, 98,209, +148, 89,234, 32,147,230,192, 37, 73, 64, 78, 96,202,138,113, 22,169,133,107,209,148,232,133, 76,144, 20,145, 6, 29,189, 39,232, +157, 16,230,185,229, 68, 24, 44,193,212, 57,135, 56, 12,245, 89, 83, 85,189, 38,178,229, 49,218, 30, 63,129,217,171, 99,201, 10, +238,106, 89, 43, 83, 74,179, 75,147,226, 0,148, 86, 24,245, 57,117, 2, 36, 8,118,251, 7, 28, 79, 39, 92, 44, 22,104,125, 48, + 59,106,210,233, 0, 49,162, 36,139, 62,182,194, 48, 37,120,207, 30,105, 60, 34, 56,133,101,196,156,149, 38, 71, 58, 42,172,195, +123,152,159,214,249, 41,255,149, 21, 23,155, 18,240,252,253,119, 49,198, 1, 55,183,247,106, 61,138, 17, 73, 50,198,148,224,188, + 67,215,118,200,199, 35,164,208,228,202, 11,235,116,227,207, 76,232,251,193, 70,216,147,169,127, 62,118, 76, 49, 33,132, 0,239, +213, 99,222,118, 11,236,236,207,146, 20,209, 45,215, 0,128,119, 63,122, 31,139,213, 2,127,255,147,159,224,180,223,227,234,201, +123, 56,157,122, 28,142, 7, 44,187, 5,154,198, 3, 24,113, 60,246, 10,184,177, 12,219,139, 69,135,237,249, 22,146,129,151, 95, +124, 1, 14,161, 82,237,114, 22,197,245,153, 63, 50,165, 30,167,195, 9,190,211, 7,182,218, 44, 81, 24,245,172,187,107,153,239, + 33,115, 61,120,201, 18,176, 8, 25,206,172,108,206,132, 22, 21, 57,104,231,177, 67,134,247, 1,236, 25,190, 41,194, 11, 76, 31, +102,251,176,196, 97,192, 56, 70,197,203,182,109,253,208, 50, 17,226,168,171,139,241,120,194,229,147, 75,120,120,252,217,127,248, + 79,248,234,147,207,241,199,255,246, 95,227, 95,254,171, 63,196, 95,252,239,127,134,215, 47, 95,161,243, 1, 77,215, 33, 9,225, +254,126,143,103,231, 91,124,239,221, 15,240,230,116,192,205,219, 23, 56,221,239,176,106, 90, 85, 86,167,136,182,107, 1,118, 56, +245, 3, 36,103,156, 78, 39,164,156, 16,156, 67,112,202, 60, 31, 68,145,152,101,183, 47,142,112,113,121,137,235,235, 43,196,172, + 84,171,229,170,195, 71, 79,158,227,234,250, 28,155,205, 10,226,236, 62,178,244,167, 41, 77, 77, 69, 77,179, 44, 81, 72,177, 22, +187, 9,135, 58,189,238, 82,177,167,197, 74, 37,236, 64, 28, 97, 81,105,152,160,231,217,184, 9,173,218,144,114,196,226,162,195, +134, 50, 88, 60,136, 27,132,166, 69,227, 67,181, 83,145, 8, 28, 75,229, 83, 51,121, 93, 79, 85,219, 24, 87,107, 26,179,199,236, + 8,154,186,134,242,128, 51, 67, 72,197, 68, 36, 83,112, 6,160,190,118, 46,193, 64,150,151, 94,140, 69, 74,199,114,143,129, 24, + 37,235,185, 10, 93,245,162,214, 72,213, 89,119,100, 76,234, 42,234,195, 52,218,151, 25, 14,150,100, 26,145, 79, 47,189,212,177, +108,241, 0,147, 76,151, 62,131,235, 72,126, 98,223,232,196,162,176,237, 39, 5,181,233, 78, 72, 71,152, 57,171, 87,157,131, 37, +208,101, 65,138, 17,236,116, 82, 5,231, 16,184, 5,209, 57,252, 98, 1,102, 93, 19, 53, 97,169,106,247,174, 3, 53, 29,156,107, +145,169,172, 55,108,154, 96, 69,138,148,159,223, 82, 38, 73,236,115, 37, 9, 36,198,136,160, 73,187,128,156, 77, 32, 37, 88,173, + 22,102, 57,158, 62,139,141,103,132,192, 56,245,131,198,101,122, 7,231, 60, 72, 70,160, 97, 16,117,104, 90,143, 20, 19, 28, 57, +116,157,142,190,115, 82, 17,103, 74, 9,226, 84, 91,145,242, 9, 77, 23,112,213,158, 99,185, 55,241, 24, 0,166,140,247,222,187, + 70,219, 29,113,138,163, 78,229, 22, 45, 90,231,113,177, 88, 0, 57,105,136, 14, 1, 44, 65,237,175,161,177,117,169,250,240, 83, +210, 64,155, 20, 7,165, 40, 50, 43,143,196,137,254,190,236,149,132, 87, 4, 49,133,184,151, 19, 28, 89, 60,175, 21, 87,229,209, +161,250,156, 77, 66, 58, 50, 75,106,237,227,201,219,202,197,242,235,165, 92, 47, 50,197,251,206, 52, 37,229,211,165,111,183, 78, +181,162,165, 70,242,183,246,228,142, 38,226, 41,164,140,243,109,237, 53, 35, 54, 22, 77,190, 90,136,117,172, 47, 81, 44, 17, 84, + 38,197, 58, 19,144,116,189,160, 2,184, 2,226, 97,133,103,217, 61,168,162, 63,169,206, 42,158,221, 91, 69,155,149, 45,252, 12, +162, 14, 16,242, 83,193,235,216, 33,115,180, 66,200,153,213, 78,215,148, 81, 70,140,227,160, 69, 99,201, 92, 47,247,140, 20,113, + 43, 76, 96,152,144, 82,134,215, 17,114,198,186, 9, 90, 69,164,132,152,213, 35,200,165,186,112, 54,106,207, 70,126, 48,128,190, +243, 14,195, 64,224,214,225,201,211, 39,184,191,127,192,195,238,136,245,101,107, 62,195,140, 97,140, 88,175, 87, 54, 98, 87,187, + 71, 74, 73,153,231,182,103, 20, 59, 40, 78,199, 83, 85,233, 22, 47,172,166,233, 88,142,114,206, 8,109,139,100, 2, 52,231, 29, + 78, 15, 59,172,214, 11,128, 24, 93,215, 65,152,240,238,251, 31,224,246,238, 14, 95,126,250, 25,186,229, 6,237, 98,129,183, 55, +119, 85, 92, 69, 36, 56, 29,149,114, 23,156,138,243, 56,120,108,182, 91,172, 86, 43,124,246,171, 79,241,230,171,151,120,254,221, +239, 96,159, 6,196,172,251, 34, 31, 26,243,243, 38,140, 99,182,174, 39,219, 1, 9,251, 96,153,109, 77, 80,147,176, 96,161, 25, +150, 51,169,224,134, 60,117,109,206, 58,120,103,135,162,227, 41, 89, 75,170,165,132,192,141, 55,229,167,190,225,174,120,128,161, +235,145,113, 24,208, 52, 29,150,171, 85,245,168, 3,130,195,225,136,227, 97, 68,240,140, 39,207,158,226,238,237, 13,254,252, 63, +254,103, 28,223,220,225, 95,255,219,255, 9,127,240,167,127,132, 63,255,207,255, 21,175,191,250, 6,221,106,129, 54, 52, 24, 82, +194,105,183,199,187,215,215,120,247,226, 12, 95,190,126,131, 35, 9, 98,223,195, 81, 70,219,182,186, 70,112,122,145, 30, 71,165, + 65,197,126,172, 1, 39,141, 17,213,134,156,148,237,238,188,178,177, 9, 88,110,214,120,242,244,210,246,235,130,166,245,184, 60, + 59,199,245,211, 11,248,182, 5,123, 19, 40,185,169, 35,204, 37, 68, 66, 74, 70,247,140, 37,109,187, 59,169,124,241, 34, 24, 52, +235,150,125, 29,151,172, 99,253,198, 45, 40, 8, 85, 71, 66, 38,222,202, 73, 38,238,116,200,200, 36, 38,226,114,154, 62,229,117, +101,147,199, 17,132,108,107,164, 0,231,117,146,163, 86, 67,179, 22, 22,210,149,133, 71, 64, 38,108, 38, 89,230,182,198, 27,228, +234, 65,103,231, 38, 68,102,201, 63,128,211,161,156, 0, 9,201, 28, 4,122,144, 58,114,181,184, 43,157, 76,217,183, 51, 5, 67, +241, 90,114,148, 5,189,168, 27, 59,219,104,208, 0, 29,228, 64, 52,106,151,157,105,242,153, 63, 26,177,206,144,159, 50, 27, 27, +200, 99, 74,149, 42,226,139, 47,247,113, 32,134, 6, 93,231,218,237, 76, 14, 27,125,187, 93, 89, 79, 88,184, 20,217,174,191, 88, +166,114,241,228, 6,229, 73,180, 2, 36, 38,120,223, 32, 52,107, 69,194,218,251,108, 19,113,157,122, 21,197,115,213, 7, 36,227, +129,232,235,147,211,104,211, 13,189, 72,178,177,249, 69,178, 98,172,169,236,253, 81, 67, 65, 80,146, 22,205,123,188,112, 29,124, + 19,144,204,217,163,154, 58,103,224, 28, 70,107,122, 24,125,217,117, 14,236,216, 67,252,180, 90, 17, 17,237,178,237, 61, 93, 47, + 84, 41, 61,142,131,237, 96, 61,222,127,255, 28, 55, 55,183,240, 65,237,194,177, 87,180,106,211,248,186, 67,113,174,177,233,137, + 10,203, 36, 13, 72, 57,234,170, 35,235, 4,132, 89,201,161,146,117,228,159, 51, 35, 13, 38,248,179,215, 1, 54, 61, 97, 43,227, +138,171,130,185,104, 39,168,114, 85,178, 9, 56,213, 25,100,193,228, 36,181,182, 22, 33, 64, 20,226, 82, 34, 89, 43, 6, 78,228, +159, 3,141,108,244, 95,156, 62,185,186, 55, 38, 62, 2,234, 46,157,109,173, 73, 54, 45,214,179,215,142,130,122,161, 11,108, 69, + 85,200,158,177,196,124,103,107,112,117,151,238,192, 16, 86,164,108,140, 17, 77, 19,180,153, 29,244,188,115,206,193,121,195, 15, +155, 0,185,124,208,185, 94,248,172, 44, 9, 43, 46,196, 0,104,115,129, 51, 89,208,141,247, 30,125, 63, 89,162, 53,111,190,215, +240, 47,207, 22,141, 92,102,185,100,118, 55, 45,182, 0, 45,100, 60,114, 2,198,132, 46, 52, 70,233,210,219, 94,102,105, 82,206, + 43,220,131,102,182, 22,178,170,226,212,143,120,242,244, 2,103,103, 27,124,253,226, 27,196,164,144,252, 24,163, 6,155,228,140, +245,114,137, 56,246,246,231, 1,167, 99,143,230,108, 1,246,202,228, 46, 74,215,195,126,143,205,114,107,129,243, 82,173,111,154, +126,170, 34,130,197, 98,105, 22, 6,198, 97,191, 7,204,199, 28,154, 6, 33, 4, 92,190,243, 12, 87,151,215,248,219, 31,253, 24, +187,251, 7,156,175, 55,216, 31, 15, 56, 30,143, 88, 44, 23,245, 33, 60,158,142, 24,145, 0, 4, 64, 8,235,243, 51, 92, 63,121, +130,148, 18,190,252,228, 55, 56, 30, 79,240,193, 33, 15,132, 8,232,104,220,118,102, 57,101,165,163,177,122, 46,217, 78, 34,111, +202, 76,102, 77,105,170,228,180, 98,255,155, 71,251,149,125,168,144, 90, 70,156,121,142, 77, 9, 95,246,144, 44, 2, 23, 26,181, +181,248, 96, 36, 63, 83, 83, 22,182,113,204, 24, 98,130,243, 1,203,197,162,210,156, 98, 76, 56, 29, 15, 56,245, 61,182,155, 51, +156, 95,108,240,203,159,254, 19,126,244,151,127,141,241,216,227,223,252,187,255, 21, 63,248,195, 63,192, 95,252, 31,127,142,175, +127,241,107, 44,215,107,132,101,139,177, 79, 24,134,132,239,188,247, 62, 2,128,159,253,250, 19, 44,207, 46, 17,114, 2,245, 39, + 44, 87, 75,171,170,245,251, 56,142,131, 98, 31,147,160, 31,122, 16, 17, 58, 23, 64,142,209,167,132,209, 44, 34, 37, 29,169, 91, + 46,113,126,121,166, 16, 9, 34, 52, 33, 96,181, 94,224,242,226, 76,245, 12,193,215, 84,167, 66, 54, 19,210, 17, 96,113,255,151, +113,118,165,171,105,244,133, 30, 6,181, 50,183, 80, 21,130,142,225,133,205, 68, 8, 93,147,176, 98,117, 21,218, 96, 33, 37,118, +240,176,183,127,183,218, 33, 75,170,197, 45, 25,187, 93,178,238,236,168,248,155, 73, 31, 58,118,197,250,105,170, 7,201,186,223, +179, 42, 92, 89,214, 60,203,128,146, 90,164, 20, 42,149, 53, 9, 54,221, 41,248, 85, 59, 36,145, 39,174, 58,161, 6, 70, 20, 72, +139,204, 14,149,218,161, 87,113,141, 97, 47, 43,242,179, 58,134,234,129,147,203,115,111, 34, 33,177, 9, 71,166, 60, 27,239,219, + 8, 59,211,244,231,155,202,120,186,184,167,145,190,218,245,120,154,192, 25, 19,219,144,146, 54,154,215,191, 55, 39,139, 94, 38, +179, 60, 90, 23,196, 41, 65,188,114,193,179,117,107, 42,184, 12,112, 76,112, 78,167,120,236, 9,217,236,110, 78, 20, 72,194,194, + 64,154, 49,186,197, 86, 82,146,144,163,137,166,114,210, 51,142, 38, 80,185,102, 51,160,174, 62,138,170,155,140,183,175,202,242, +146, 93, 47,181, 16,159, 82,246,202,238, 89,195,117, 8,186,118, 42,175,121, 6,192,117, 85,130,234, 0,162, 76, 8,190, 65, 17, + 68,144, 23,156,157,175,113,127,247, 0, 31, 24,195, 16, 65, 0, 54,235,101, 45,208, 66,231,129,168, 32,146,108, 17,188, 98,249, +220,202,145, 31, 33,105,176,240, 31, 45, 38, 83, 65,173, 18,131,189, 87,216, 74, 78, 0,162, 1,128,148,169, 1,163,135, 74,241, +144,231,162,211, 45,247,129,174, 39,179,237,138,203,231,104, 18, 94, 16, 38, 67,237,172,128, 51,145, 93,177, 23,166,148, 12,219, + 44,243, 48, 61, 45, 60,130,155,241,206, 21,241, 45,217, 62,243, 51,161, 40, 27,248,166, 68,147,186, 58,246,214,175,205, 81,145, +173, 5, 20,149, 18, 16,199,168, 1, 44,150, 4, 26,188, 71, 28,181, 40, 43, 35,126, 2,204,235, 94,130,185, 72,177,234,230, 22, +243,164,119, 67,209,181, 56,175, 19, 59, 29, 39,152, 93,205,238,130,154,164,152,103, 22, 64, 67,125,139, 49,234,109, 13,143,253, +254,168,161, 55,182,186, 21,232,106,132,188, 22,249,222,138,107,253,250, 12, 63, 36,245,182, 53, 77,131, 49, 38,140, 57, 34,105, +232, 15, 4,122, 81, 57,195,221, 73,212, 16,150,202,203,240, 42,116,123,250,244, 41,152, 25, 47, 95,188,134, 11, 1, 41,234,216, + 70,204, 66,211,116, 30,177, 31,148,182,211, 27, 77,206, 70,133, 69, 96, 48, 14, 9,187,135, 29,182,171,245,116,212, 89, 20,167, + 99, 7, 68, 37,176,249,179,160,187,135,254,136, 49, 69, 44,150, 11, 16, 4,109,215, 98,177,238,240,222, 71, 31,224,225,225, 1, +159,127,242, 41,218, 38, 96,217,117,248,242,171, 47,209,134,133,141,101, 50,242, 41,227,112, 56, 32,153, 31, 52,112,198,245,229, + 57, 22,171, 5, 94,126,254, 5,190,254,252,107,192,105,232,138,228,172, 29, 52, 57,253,144, 64,128,152, 77,253,168, 74,201,148, + 50,136, 50,218, 16,208,178, 3,160, 85, 93, 76, 89,211,138,140, 30, 70, 54,170,203,164,162,182, 18, 82,146,189, 86,146, 17, 89, +187,107,167, 34, 41, 78,198,159,102,237, 12,181, 34,212,157,209,196,217, 86,109,128,103,143,197,114, 1, 14, 1, 57,103,244,125, + 15, 57, 70, 56, 71,120,250,236, 29, 44,207,151,248,217,255,253, 35,252,228, 47,255, 27,124,187,196,255,242,239,255, 29,190,243, +253,143,240,195,255,243,255,194,151,255,248, 25, 22,155, 45,156,103, 12,199, 17, 89, 24, 31, 93, 93, 97, 60, 28,241,171,111, 94, + 99,253,236, 2, 93, 43,192,205,128,197,217, 6, 16, 85,202, 18, 51,250,113,176,208, 29,194,233,116, 4, 73, 70, 23, 26,120, 31, +112, 76, 35, 70, 73,128,115, 16,219,191, 53,203, 22,219,139, 53,150,203,133,170, 89,187,128,229,178,195,249,170, 67,183,106,193, +193,178, 7, 36, 85,154, 98,230,108, 11,102,182,100,165, 12,103,163,212,210,177,149, 80,131, 98,187,172,214, 40, 11, 81,200, 60, +157, 16, 92,128, 42,102,139,209,131, 12, 85,252,152,202,129, 12,221,131, 82,114,112,112,122,169, 17,215,203, 80, 82, 6,156,190, +183, 40,130, 51, 71,179,195, 61,219, 94,176,168,182,243,148, 83,110,121,132,101, 52,174,124, 10, 55, 11, 65,209, 28,241,226, 79, + 39, 43, 14,234,218,189, 94,226, 58,226, 6, 25,201,171, 32,132,169, 64, 42,180,107, 41, 93, 20, 9, 43,197, 15,165, 27,176,206, +211, 46, 72, 49,125, 64,150,233, 96,205,214, 5,100, 34,123,221,102,238,148,146,186, 70,154, 59, 15,139,215,156, 25,240, 39, 56, + 14,230,150,167,105,199,154,171,122,223,222, 47,161, 26, 76, 36,246,170,145, 9,147,168, 36,205,229,136, 52,142,230, 3,214, 78, +145, 68,131, 4, 84,224,156, 53,151,193,246,249, 72,246,117,165,219, 35,130,211,216, 63, 43,192, 12,110, 98, 17,212, 19,239, 91, +119,207, 98, 22, 85,201,169, 22, 35, 69,204, 68, 36,134,252, 45,226, 48, 6,160, 35,122, 97,139, 91, 46, 99,101,139,113,214,194, +140,234,103,118, 10,189,177,206,152,201, 38, 12,211,175,251,224,208, 45, 3, 32,122, 22,165, 56, 34,120,143,148, 6,164, 60,194, +243,204, 19,157, 1,145, 1,217, 86, 8,217,214, 6, 4,213,165, 32,103,100,137, 10,216, 2, 79, 1, 37,163, 24,148, 69,166,180, + 30,113,112,108,219, 28,130,238,208, 83, 50,129,154, 22,243,106, 75,204,147,133,177, 20,101,132, 73, 27, 65,197,150,105, 59,249, + 92,138, 63,174,182, 72, 49, 15,183, 88, 24, 12, 25, 90, 49, 4,181,245,229,168,107, 10,204, 86, 60,100, 6,246, 74, 30,164,169, +232, 76,197, 47, 14,101,187, 80,137,112, 51,190, 3,123,135, 36,202, 14,136,214, 64, 58,187,212,199,126,152,128, 75, 41, 41, 27, +193,196,104,121,140,202,199, 48,125,144,166,178,165,234, 98, 16,251,111,222,123, 20, 58, 59,151, 34,207,238, 85, 88, 10,159,103, + 66,118, 19,221, 81, 89, 23,133,109,145,113, 60,236, 65,206,169,171, 33,234,185, 43,172,162,220, 44, 2,182,156, 22, 16,193,123, + 15,159,146, 86,109, 93, 23,144, 33, 10, 66, 72, 94,119, 97,166,182,117,166,248, 78,105, 52,251, 12, 85,235,137,247, 14, 79,175, +174,241,112,255,128,251,221, 3,218,237,185,190, 0,162, 7,125, 23,130, 42,215,247, 39, 52,112,136,233,104,241,116,100,149,143, +218,218, 78,135, 3, 36, 41, 76,164,116, 48,185, 8, 33,236,197,104,152,209, 52, 45, 6, 33,156,246, 71,184,214,163,105, 90, 36, + 34,116, 93,131,139,171, 39,184,188,186,194,175,254,251, 63,224,254, 97,135,179,245, 22,251,227, 1,253, 97,143,139,247,175,241, +112, 24,208, 6,135,135,253, 14,187,211,160,251, 79,239,176,234,214,184,186,190, 68, 63,236,241,245,151, 95,232,161, 47,202, 40, +143,217,216,212,214, 93, 71, 73, 54,246,102,229,103,155,152,207,123,167,234, 68, 18,196, 18,147,202,122,108,123, 82, 90, 87, 78, +105, 74,217, 18, 1,231, 34,212,176,221,183,148, 7, 32,154, 93, 68,149,153,228, 53,218,181,116,113, 37,151, 24, 4,244,199, 30, +200, 64, 56, 91,128, 91,173, 46,199,211, 17,121, 28,208,110,215,216, 62, 61,199,106,125,142,191,250,143,127,142, 95,254,240,111, +241,244,253, 39,248,253,255,249, 79,113,113,241, 20,127,243, 95,254, 6,191,249,245,103,104,183, 29, 32,132,227,160,235,136,103, +155, 37,222, 60,220,227,171,151,183, 56,187, 58,199,197,114, 3,218,239,225, 55, 45, 32,192,113, 28, 16, 33,136,163, 96,200,218, + 5,197,190, 7,167,136,165,111,176,244, 1,247, 57, 98, 72, 89,109, 94, 32, 68,100,132,174,193,102,179,197, 98,209,129, 3,161, +233, 90,172, 87, 75,108, 58,143,110,185, 4,135,160,151,143, 36,245,174, 98, 62,118,151,202, 6, 47,251, 55,237,226,109,223, 10, +211, 41,240, 84,236, 8, 9,200,252,168,229,178,155, 58, 39, 11, 62, 97,134,136,183,113, 36,108,111, 93,246,131, 86,253, 54, 70, +234, 35,171,158, 39,216,115, 13,137, 96,114,149,128, 86, 44, 44,165,227, 21, 33, 83,230,250, 71,121,234,117,119,205,100,227,243, +217,101, 81,224, 48, 76,179, 17,181,118,140,100, 12,109,204,119,150, 53,214,151, 31, 5,171, 80, 86,205,138, 24, 15, 66,139,117, +182,174,219,242,209, 83,198, 24,245,146,148,148, 43,248, 99, 10,110,153,141,220,203,190,148, 38,138,220, 4,187,153,101, 67,148, +168, 78,154, 0, 37, 52,223,173,203, 44,125,174,238, 80,243, 52,137,127,196,147,183,241, 73, 78, 24, 71,192,187, 17, 57, 36, 80, + 78, 64,142,112, 28,204,119,156,145, 69, 53, 14, 30, 77, 85, 49,151, 49, 38,137,165,218,217,254,223,154, 60, 32,169,254, 5,208, + 53, 11,114,170, 1, 30,117,192,158,202,248,159, 43, 44,138, 74,135, 90,215, 35,250,222,144,173,135,244,231,182, 40, 91,219,185, +184,194,225, 7,207, 86, 27, 19,126, 55, 75,174, 84, 65, 41,203,106,209,181, 37,103,101, 48, 72, 4, 92,104, 32,146, 16,130, 71, +244,108,185,244,185,108,166,237,103, 16,251,123,116,105, 72,222,217,133,109,136,107, 14,246,210,106, 96,149,140,163, 78,195,156, +254, 93,250,167, 69, 91,177,184,153,122,162,116,175,147, 32,213, 98,134,192,149,115, 36, 19,236,202,177,129, 98,148,189, 81, 38, + 44,229, 22,208,137,117, 89, 97,146,113,219, 81,177,197,100, 92, 2,102, 69, 57,235, 58, 22, 85,220,153, 69,115,203,153,189, 94, +150,164,151,158, 8, 16,205,247, 77, 70, 95, 76, 89,157, 94, 36, 19,112, 38,165,132,113,136, 72,163,128, 2, 35, 4,143,100,252, + 8,130, 66, 94, 74, 14,132,186,147,146,225,105, 85, 12,171, 57,246, 26,139,155, 75,113,104,251,239,224, 59,100,214,113, 11,113, +145, 47, 40,208,167,100,167,232,148, 73, 39,223, 99,180, 61,188, 53,190, 34, 58,149,145,172,188,130, 49,142, 54,117,200, 26,104, + 85, 86,103,133,190,199, 14,126, 76, 3, 60, 1, 45,121, 28, 83, 68,180, 81,147,238,218, 20,236,231,170, 15, 80, 15, 8, 2, 65, +116, 21,133,213,114,137,213,102,131,251,187, 61,250, 97, 64,107,149, 55, 19,161, 31,123, 52,173,238,234, 41, 9, 90, 7, 60,156, + 78,136, 67,170,241,137, 98, 33,247,135,251,131,249, 26,181,147,114, 2,133, 51,192,130,237, 99, 66,100,135,110,187,193,235,215, +111,112,255,240,128,235,213, 19,197,180, 18, 97,189,221,224,252,189,119,112,220, 31,240,205, 87, 47,176,104, 28,154,206,225,230, +229, 30,171,245, 6, 12, 70,159, 34,154, 16,112,123,119, 15, 25, 35,194,162, 69,235, 28,206,174,207,208,173, 87,248,252,147, 79, +113,251,118,143,197,114,129, 97, 60,232,216,202,242, 64, 83,130,118,232, 57, 43,249, 12,164,192, 11, 71, 8,206, 40,110,150,110, +151,146, 32,138, 34, 65,217,222,176,100, 10, 82, 85,163,207,196, 65,146,224,201,195, 81,182,177,156,178,163, 11,145,201, 57, 6, +123,243, 82, 90,212,104,129,184,164,190, 71,206, 64,183, 90,193,183,140,113,223, 99,216,159,224,156, 96,115,125,137,237,245, 21, +228, 48,226, 47,254,183,255,128,159,253,221,207,241,225,111,127,136,255,225, 79,255, 4,205,170,195,207,126,252,119,248,234,215, +159,193,115, 64, 76,154, 57,181, 12, 45,214,139, 6,111,110, 14,120,241,246, 45,206,175, 46,241,252,201, 19,184,177,215,108, 95, +100, 28,198, 94, 47,116, 17,156,178, 82,167, 82, 76,200,227,136,101, 8, 8,141,199, 46, 38, 12, 54,210, 36, 83,192, 54, 93,131, +237,249, 26, 93,167, 69,222, 98,177,194,102,179,194,178,107,208,173, 2, 66, 23, 42, 90, 82,100, 26, 1,147, 41,185,179, 9, 16, + 43,172,100, 30, 62, 34,246,186, 33, 91,151,150,170, 22,196, 82, 75, 0,176,145,171, 80, 71,208, 76,140,236, 44,168,132, 25, 26, +187, 18,166,157,189, 93,236,176,216,111,230,105, 55, 95,188,136,250, 30,185,233, 82,202,118, 89,155,202, 87,108, 84, 91, 46, 94, +154,221,146, 57, 43, 35, 32, 89,207,238,170,213, 75,106,112, 15,156, 67,182,101,130,142,246,196, 70,138,206, 46, 45,177, 3, 2, +117,189,193,179,215, 37, 33, 91, 26,157, 77,126, 68,217,212, 40, 43, 54,152,187, 67,140, 99,109,218,132,100, 90,125, 93,185,233, +133,161,104, 68,155, 88, 64,117, 32,197,194,163, 87,137,138,119,136, 38,167, 65, 25,113, 18,125,203, 2,199, 58, 13, 96,199,168, +113, 46, 50,229,175,235, 91,108, 59,105,168,128,215, 89,104, 69,204, 17, 46, 69,112,147,145,210,104, 90,128, 22, 44, 97,114, 72, + 8, 64, 22, 18, 84,240,208, 19,213, 75, 47,189,178,112, 40, 26,140,156, 99, 37,155,205, 87, 96, 37, 80,137, 10,218,216,214,109, +206, 20,199,206, 3,100, 32,170,148, 70, 11, 35, 73, 6,232,178, 72, 95,187,164,146, 76, 5, 38,204, 61, 4,179, 16,139, 8, 88, +236,215,202, 56,159,236,188,173,112, 33, 7,118,162,226, 58,209,213, 94, 51, 71,147,230,100,187,102,211,150, 88,247, 92, 87,169, +206,235, 25, 94, 18, 34,211, 48,197,156, 82, 57,155,138,214, 41,195, 37, 70, 98,155, 74, 85,164,235,148,147, 94,175,121,187, 30, +196, 70,254, 92,134, 53, 76, 21, 90, 35, 85,120, 13,100,196,250,123, 37, 51,178,165, 52, 10,105, 88, 12,201, 36,206,244,196,104, +131,234,115,250,148,202, 18,169,234, 24,146, 8,156,176,225,169,237,114,203,122,129, 43,178,219,193,177, 83,184, 76, 76, 32, 35, +210, 21,221, 65,140,154,222, 39,144, 42,238, 45, 86,109,101, 58,140,160, 68,112, 65, 59,245,190, 31, 12,251, 93, 38, 38, 9,174, +209,213, 0,103, 88,177, 67,136, 36,136, 24,225,114,107, 75, 38,157,237, 36,182,245,155,136, 62,105, 78, 87, 45,142, 8,209,103, +196,172,211,151,178, 2,139, 99,196, 48,232, 36, 70, 25,244,206, 62, 99,214,218,204,162,189, 29, 59,237,212, 23,139,133,250,156, + 71,221,169,179, 85,225,169,164, 24,241,212, 1, 84,184, 60,233, 55,120,245,228, 2,236, 24,247, 15, 59,196, 24,213,115,152, 84, + 65,156, 36, 97,213,174,116, 76, 13, 65,204,168, 86, 39,231,125,245,244,142,113,196,195,253, 61,156,111,244, 65,175, 27, 24,181, + 27,144, 9,195,154,229, 2,222, 51,246,247, 59, 36, 35,109, 65, 50, 22,203, 21,206,207,207,112,117,117,137, 95,127,250, 75,220, +188,126,139,213,122,141,225,212, 99,127,216,227,250,217, 37, 78,125, 15,199, 30,199,227, 9,187,187, 29,168,213, 75,120,177, 92, +224,233,179, 39,184,187,187,193,215,159,125,169, 25,201,150, 78, 52,230, 92,247,254, 89, 20,119,235,204, 67,152, 36,195, 5,160, +241, 30,142, 53,250, 83, 5,115, 50,137,180,136, 39, 92, 33, 96,157, 58,235, 20, 36,151, 69,166,121,116,161,249,224, 58,247, 99, +131,149,144, 69,243, 89,202, 87,201,204,101, 69, 64, 82, 74, 88,174,214, 8, 77,131,211,221, 30,253,152,177, 92,182, 56,187, 56, +195,229,179,107,220,188,188,195, 95,254,167, 63,195,203, 95,126,138,223,253,195,223,199,255,248,111,254, 24,199,113,192,175,126, +246, 9,190,250,244, 11, 72, 18,140,113,128, 11, 30,155,229, 2,173,235,240,226,245, 43,220,189,121,192,249,229, 6,191,245,252, + 41,154,152, 48,200,168, 56,213, 97,192,152,117, 28, 58,196, 97,218,113,143, 35,150,222, 97, 17, 2, 14, 49,227,148, 98,181,109, + 36,100,248, 38, 96,115,182,193,162,109,192,193, 97,185, 89,226,236,108,141,229,178, 67,215, 41, 6, 83,234,184,218,210,236,152, +106, 55, 83,226, 20,245,140,144, 9, 82, 82,186,156, 34, 54,201, 84,174, 41, 45, 76, 83,174, 14, 3,178,196,166, 98, 27, 99, 7, + 35, 86,193, 58,248,105,244, 43, 76,240,152, 89,159, 68,102,182, 38, 27,243,218, 30, 92,227, 20,233, 81,119,170,123, 65, 21, 69, + 41,127,157,107,150,121,205, 64, 43, 48, 39,251,239, 66,201, 14,204,137,229,159,231, 88, 86,102, 21,121,102, 91, 13, 23,209, 32, +151,126, 82,149,185, 83, 7,108,127, 86, 77,246, 83,155, 10, 21,211,122,214, 91,142,164, 62, 0, 0, 32, 0, 73, 68, 65, 84,103, +184,180,198,204,110,250, 89,166, 20,244,170, 18, 46, 93,125,185,153,245,123,180, 75, 0,122,128,210, 44, 52,166, 98, 99,105,222, +145, 79,142,150,114,166,150,195,185, 42, 8, 75,228,108,129, 42,193, 68,127,166, 67, 8, 84, 10,132, 4,146,132,148, 24, 76, 9, +217,141,234, 7, 22,117,129,144, 43,241,195,217,220, 54,108,171, 62,153,255,100,147, 94,129, 12, 32,146,139,218,153, 12,244,161, + 69,189, 47, 93,161,173, 21,185, 88, 15,137, 43, 51,190, 64, 79, 50, 37,164,104,122,136, 44, 51,119, 5,166,247,212,188,252, 21, + 26,196,182,115,207, 0,139,105, 39,236,117, 41, 5, 19,213, 45, 54,102,156,252, 92, 85,215,165,120,205, 57,153,248, 76, 38,159, +183,115,211,138, 37,103,229,175,155, 22,162,228,140, 18, 57,205, 18, 52, 93, 20,139, 3,216,116, 77, 51, 77, 80,174,207,158,250, +164,245,188, 83, 47,182, 32, 78,128, 21,155,210,177, 21,112,122,142,203,228, 52, 17,227, 35, 72,177, 64, 71, 43,124,169,212,233, +250,236,177,118,207, 37,150, 85, 83, 21,109, 85,130, 92,167, 68, 69, 67,162,161, 43,165,145, 42,232, 88, 86, 71, 69,202,128,215, +203,223, 57, 87, 39, 8, 57,217,107,236, 84, 67, 70,245,177,155, 64, 80,141,115, 0, 13,166,139, 49, 54,132,173, 89,185,132, 68, + 21, 98, 40, 38,160, 88, 41,176, 29,151,245,158,173,113, 69, 5,161,206,177, 22, 13,228,224, 29, 16,188, 22,210,100,141, 68,202, +209,114,213, 89,167, 80,206, 97,140,131, 78, 84,108, 18, 88, 86, 37, 25, 25,126,140, 81, 59,102, 8,198, 52,170,141,193, 94,212, +156,181,210,119,204,245,129,159,103,170, 3,140,245,102,139, 44, 25, 15,187, 93,221,167,232, 14,138,208,184, 6,109,211, 34,246, + 90, 77,159, 70, 37, 35,109, 54, 27,132,208,212,209,250,233,225,136,135,135,123,156, 95, 62,209,195, 12, 19,212,160,140,190, 37, +103,156,109, 54, 56, 62, 28,112,216, 29,180, 42, 49,229,225,246,108,141,235,119,158, 98, 28, 70,124,241,155, 47, 52,176, 33, 52, +120,251,246, 6,221,162, 67,235, 2,246,251, 30,228, 61,250,211, 9, 12,197,103, 66, 50, 54,231, 91, 52,139, 14,159,254,234, 19, +244,199, 19, 90,207,232, 29, 0,110,192, 93, 7,138, 59,173,130,163,230, 5,151, 11, 8, 32,116,126,129,224,212,162,148, 45,181, + 42,212, 1, 42,213, 81,229,132,220, 46, 54, 34,158,204, 64, 70, 51,202, 66,112,117, 84, 41,213, 42, 65, 76,134,170,164, 58,102, +209, 56,190,136, 69,171,123,233,253,221, 45, 56, 9,186,179, 51,172,207,207,113,126,126,134, 87,191,121,129,191,250, 47,127,133, +135,183,175,241,131, 63,249, 35,124,239, 15,126, 15,247,247, 59,124,249,217, 87,120,241,229, 75, 85,169, 15, 39, 52,139, 14,103, +231, 91,200,144,240,217, 23, 95,227,225,180,199,179,167, 87,248,157, 15,223, 71, 43, 35,118,135, 61, 98,142,216, 13, 73,217, 5, + 96,140,105,192, 24,245,131,158,199, 1, 11, 8,150,161,193, 49, 39,156, 82, 66, 20,173,250, 51, 52, 70,118,125,182, 68,183, 80, + 75,205,250,236, 12,103, 23, 91,108, 54, 75,116, 93, 3, 23,252,164,102,101, 87, 71,175,213,219,140,178,143,179,149, 67,137, 53, + 46,213,234,196, 35,157, 68, 90,245, 43,139,237, 75,102,118, 45,121,244,143, 72,217, 35, 23,225, 26, 61,242,188,146, 35, 27,197, + 27,207, 31, 19, 48,136,236,115,174, 46, 14, 87,189,181, 82, 46,158, 18,202,194,100,232, 96,170,154, 20,229, 61,179, 45, 29, 11, +191,186,136,200,164,186, 71, 42,203,191, 76, 45,236,123,203, 37, 29,205,138, 67,157, 34,100,211,141,147,121, 87, 5,148,179,117, + 20,217,148,219,229,179,154, 38,245,109, 1, 74,177,131, 56, 13,112, 42, 83, 61,229,216, 98, 86,176,150,139,128, 30,231,168,179, + 42,147,132, 4, 16, 55,179,226,209, 76, 28,255,136, 86, 99,228, 56, 54, 48, 77, 17,206,101,123,175, 11, 98, 89,249,235, 76, 51, +124,174,237,135,211, 56,192,147,211, 78, 56, 18, 50, 41, 3, 94,179,250, 2,178, 35,179,253,160, 58, 79,216,214, 87,230,226,171, + 17,156, 50, 23,168, 86, 31, 63,166, 2,163,172, 42,114, 70, 50,209,227,148, 54, 87,132,219,246,238,176, 3,185, 12, 73, 58,122, +134, 21, 2,169, 70,205, 78, 94,233, 41, 92,104,150,128, 7,211,102,216,197, 86, 52, 11,170,169, 96,136, 43,142, 10,178, 53,140, +152,178, 31,255,204, 73, 80,126,158,138,250,197,164,137,208,154,129, 45, 10,164,136, 3,173, 16,204, 82, 39, 18, 84,215,254, 78, +199,220, 85,110, 58,211,169,152,112,181, 60, 87, 92, 62,235, 82,127,136,106, 97, 43,255,206,117,164,163, 65, 52, 72, 2,158,175, + 92,236,153,240, 65, 49,170, 73, 18, 82, 42,185, 33,108,133,130,213,154, 52, 17, 42, 75,209, 86, 72,137,117,205,145,129, 52, 10, +208, 77,175,145,106, 13,236,247,214,204,243, 41,167, 93,162,177, 34, 60, 27, 63, 98, 10,216, 34, 34,196,146, 44, 39,101, 33,152, + 81,118, 16,204,140,224, 28,178,176,162, 43, 72, 35,133,231,175,159, 6,177,136, 33,112,181, 51,247,172,244,203, 84,249,248, 10, + 99,115, 94, 39,191,136,166,123,104,169, 36, 4,215,187, 65,114,134, 31,199, 81,169, 97, 6, 61,200, 53,210, 77,106,133, 24, 44, +228,132, 76, 64,163,211, 43, 65,227, 9,235,229, 18,135,225,128,195,126, 15,242, 77,133,169,100,209, 88,210,198, 57,236, 78, 71, +237,218, 98, 6,250,136,102, 17,208,118, 45,124,227,117,244,190,219, 79,208,255, 60,137,111,170, 45, 70, 20,168,191,232,150,184, +187,123, 64, 28, 5,237,218,188,170, 44,120,250,238, 51, 92, 61,185,198, 23, 95,124,133,187,155, 59,108, 67,139,177,239,241,246, +238, 14,207, 55,231, 56, 60, 28,145,179,171, 74, 80,110, 24,167,220,227, 34, 44,112,245,236, 18,187,187, 61, 94,127,254, 18, 45, +123, 56,214, 52, 53, 23, 24,228,189, 89, 86, 21,152, 67, 85,242, 41,104,156,195, 88,169, 72,230,223,116,172, 22,136,113,138, 27, +164,121,149, 94, 71,128,250,193,116, 94, 67, 41,200, 16,129, 40, 32, 25, 18,120,167,191,198,158,173, 27,211, 93, 88, 22, 32, 31, + 19, 92,240,144, 4,236, 31,246,240,158,176,186,186,192,242,252, 18,235,110,131,127,248,241,207,241,163,255,231,135,144,156,240, +187,191,255,251,120,242,189, 15,112,127,119,143, 55, 95,191,194,203, 47,223, 96,216,159,192, 46, 98,177, 94, 98,185, 90, 99,247, +112,196,203,111,222,128,136,240,241,187,239,224,163,247,222, 65, 32, 96,127,123,192, 24, 19, 30,134, 1, 67,102,253,160,201,136, + 49, 41,175, 45, 36,129,203,192,170,241, 56,165,140, 67,138,213,186,150, 33,224,224,176, 61, 95, 97,189, 94,130,136,176,218,110, +112,117,125,133,179,179, 37,218,174,133, 11,174,250,200, 11, 89,169,122,159,139, 0,206,172,148,147,215,213,136,116,117, 71, 94, +253,110,143, 56,248,101,214,163,214, 50,247,248, 82,169, 72, 73,174, 99,195,146, 62,102, 31, 66,219,143,107,202,142, 43,227,204, +146,142, 38,147, 77, 78, 15, 70, 5,153,168,103, 87,133,142,101,252,204,108,212,196,146, 1, 96,112, 11, 38,167,130, 48,210, 92, +248,154, 58,134,140,104, 49,148,229, 16, 41, 86, 21, 61,188, 83, 5, 64,213,112, 24,227,194,144, 37,240,229, 10,137,153, 21, 27, +132, 26, 19, 89, 46,146, 34,121,247,129,181,115,103,227, 8,152,103,158, 69,113,178,100,162, 78, 37,137, 80, 77,113,148,146,254, + 86,109, 54, 83,129, 84, 1, 53,179,226,137,137, 31,117, 62,165,216, 40,152, 99, 56,170, 83,153,100,175,111,205,188, 46, 19, 47, + 46,123,113,157,136,184, 52, 24, 83,131, 16, 49,128, 93, 48,229,115, 6,167,172,249,242,165,139,177,236,237,108,186, 9, 97,182, +125,120, 73,198,162,186,238, 23,115, 29,168,184,144,108,127,174, 5,163,131,106, 47,146,249,232,105,166,232,214, 66,199,174, 21, + 11, 28,202, 50,206, 46,253,233,242,172, 97, 77,179,247,164,184, 5,166,104, 91,169,138,111, 46, 90,141, 28,205,130, 39,102,206, + 83,213,126,233,158, 65, 50, 41, 19,203, 89,158,103,188, 1,154,130, 77, 72,166,201, 4, 42,116,104,114,233, 20,174,195,220,120, + 88, 0, 70, 69, 0,234,170,126, 34, 87, 81, 88, 9,112, 41,171,178, 18, 98, 34,217,236,151, 86, 88,242,172,232,128, 69,173, 22, +213,188,192, 38, 93,222,129, 26,130,156,160, 93,113,209,213, 8, 12, 96, 36, 90,152, 56, 15,120, 87, 9,117,243,162,159,202,164, +201,149, 21,193,100,211,131, 5,176, 80,176,137,134, 5, 35,193,123,228,129,144,199, 12,242, 14,222, 51, 88,212,202,231,157, 62, + 87, 99,140,200, 85,252, 51, 1,162, 10, 41,149,185,209,169,157,133,127, 37,158,196,162,213,107,111, 19, 30,176,158, 87, 62,171, +110,195,121, 61,167,142,199, 35, 78,167, 1, 93,219,226,225, 97, 6,116, 44,148, 73, 17,179, 81,235,101,239, 97,170, 66,136,238, + 6,196, 58,132,156, 19,146, 17,209, 20, 20,161, 63,112,138, 99, 61, 60,155,197, 18, 97,189,196,238,230, 30,135,195, 1,232, 86, + 72, 2,180,172,170,241,198,121,131,211, 36, 52, 96,156,134,193, 46,111, 61,240,195, 98,137,254, 97,135,251,219, 91,196, 58, 34, +153, 10,138, 84, 44, 59,106, 8, 68,138, 3,250,227, 9,146, 21,225,199, 12,172,183, 27,188,247,254,251,136,125,196,203,207, 62, + 71,104, 90,120,241,120,117,251, 90,195, 63,156,195,235, 87, 39,116, 87,107,244,227,104,234,195,132, 99, 31,113,121,181,197, 98, +177,196, 39,159,253, 74, 17,138,190, 3, 56,131,155, 22, 77,219, 66,156, 51, 30, 73,180,135,220,129,235,174,156,235,152, 44, 89, + 71, 30, 74,112,134,221, 13, 33,132,194, 53,179,169,104,174,184, 65,253,192,185, 41,107,151,160,251, 24, 78,234,159, 54,159,173, +142,109,163,118,118, 57, 35,245, 17, 36, 14,144,136,129, 18,218,229, 2,235,243, 51,108,214, 27, 56,110,240,179,191,249, 49,254, +254,175,254, 26,203,197, 10,191,251, 39,127,140,179,235,115,220,191,185,193,237,203,123,220,190,185,193,241,225, 14,193, 51,214, +155, 37, 34, 49,110,111,247,184,185,185,195, 50,180,120,239,250, 18, 31,189,255, 12, 52, 70,236,238,238,112,236, 7,220,143, 61, +142, 41,106,108, 98,178,238, 44,101, 4, 38, 52, 41, 98, 77, 14, 71, 33,236,210,128,129, 0, 98,143, 40, 25, 46,120,172,182, 43, +108, 87, 91,176, 35, 52,171, 22,151,215,151,216,110, 55, 88,174,151,150,120,105,187,227, 74,196,195, 52,218,155,141,186,197, 14, + 3,182,200, 95,153,141,223, 43,124,225, 17,100,134,230, 13,252, 36, 26,155,141,130,241, 40,252, 38, 87,106,155,254,154,183,135, + 94, 69, 77,122,217, 43,188, 36,231,217,136,216, 43,160, 73,155,109,243,126,179,155,105,192,202, 69,196, 19,167,217, 58,211,148, + 70, 8, 49,188,225, 47,205,124, 61, 41,246,105,194,106,126,155,246,198,162,135,152,230,150, 3,158,130,177,221,169,118, 48, 98, +186, 2,189,164,242,163, 20, 45, 56,182, 93, 60, 85, 92, 51, 28,215, 11,157,153, 17,163, 84, 65, 91, 81,215,235,138,192,176,170, + 41, 67, 17,223,249, 81,236,102, 33,198,233,247,102, 2, 52,214, 14,104,130,207,208,180, 79, 38,182,117,151,197,233, 90,117, 85, + 46,114,169,191, 39,104,177,203, 14,222, 59,139,156, 44, 49,173,154,232,231,146,218, 8,136, 11, 12, 68, 32, 6,167,162,128,170, + 5, 34, 17, 12, 57,129, 18, 87, 94, 56,219, 94,221,251,160,248, 90,131, 9,169,168, 77,170,224,203,113, 48, 22,190, 84,109,133, + 94,126, 73, 11,167, 52,106,240, 13,166,156,121,125,221,203,164,179, 48, 4,237,189, 21, 87,209,187,121,190, 56,249, 22,176,199, +217,168, 94,109,164,222, 20,251,182,255,166, 80,120,186,230, 35, 47, 1, 4, 54,145, 17, 69,242,138,228, 73,237, 95, 69,168, 5, +128, 50, 99,252,215,212,204, 50, 46,215, 86, 36, 74,130, 80,170, 64, 37, 27,104, 87, 48, 84, 89, 15, 86,203,158, 33, 99,133,116, +133,155,162,212, 36, 54, 49,255,187, 72,137,240, 85,189, 80,130, 89, 57,205,167,173,163,247, 0,207,192, 33, 90, 65,155,149, 32, + 89,198,246,129,108,149, 21,184, 58, 30, 18, 13,230,177,159,204,134, 57, 79,235, 19,216,196, 45,199,168,127,169, 69,173,234, 10, +199,108,175,198,138, 40,250, 39,207, 92,223, 43, 50,166, 75,202, 81,145,195, 73,215,209, 26,200,100,209,195, 94, 39,220, 16, 82, +221,133,137, 91,156,215,181,164,190,246,108, 10,250,100, 10,119, 19, 54,138, 10,111, 27,102, 28,119,123, 12,227,128,101,187,177, +103, 70,215, 72, 49, 70, 45, 68,139, 96, 55,101, 68, 16,124,203, 30, 45,123,228,113,180,132, 26,181,244,212,132,180,156, 13,121, +232,181, 98, 74, 26, 74,192,142,176, 92,180, 8, 66,216,237,118, 56,141, 3,150,139,141, 85,100,154, 41, 30,218,160,222, 63,243, +157,247,125, 95,197, 50,190, 13,104,155,128,215,183,247,120,216, 29,224,120, 30,239, 58,193, 44,138, 34, 20,208,162, 99, 28, 7, +192,105,252, 30, 81,192, 59,239,189,139,245,197, 26,223,124,245, 53, 14,251, 19,218,224,209, 63, 28,176,123,184,199,170,233,176, +123, 56, 96,116, 17,231,237, 10,247,135,111, 64, 89,144,251,140,166,243,120,242,236, 9, 30,238,238,113,220, 31,208,117,173,222, +170,204,160,166,129,111, 61,162,168,138, 61, 21, 52,167,100, 48, 5,123, 19, 52, 14, 50,137,178,134,157,119,118, 57, 69,181,145, + 56,135, 16, 2, 36,142, 22,194, 97, 7, 94, 1,214, 84,181,179, 90,129, 88,156, 78, 55, 10, 75,216, 41, 62, 80,204,111, 74, 36, + 24, 71, 85, 89,106, 93, 48,224,252,252, 12,155,179, 45,186,213, 18, 49, 71,252,236,135,127,141,127,252,209,223,225,250,217, 51, +124,255,143,254, 16,221, 34,224,230,245, 13,110,110,246,216,221,190,193,112,127,135,166,113, 88, 44, 91,236, 79, 42,122, 27,246, + 7, 60, 59, 95,227,233,249, 5,174, 47, 46, 0, 12,216,221,239,113,127, 56, 96, 31, 51,142,227,168,159, 7,167, 29, 73,204,234, +199, 92,101,193,202, 49, 14, 16,220,143, 73, 5, 64,236,116,123,237, 24,139,213, 2,103,219, 13,216, 49,154,229, 2, 23,215,103, +184,184,222, 98,179, 89,193, 7,175,161, 62,179,138, 25, 44, 83,200, 11, 38,229,121, 46, 77, 7,127,139,106, 54, 59, 0,101, 54, +214,214, 61,110, 25,194,203,163, 49,228, 28,154,242, 72, 89, 93, 68, 38,166,134, 21, 42,157,134,117,223,149, 10,199,240, 30,143, +208,170,101,252,154,146,204,168,104,222, 4,102, 42,156,203, 68,160, 18, 74, 66,164,238, 10,187, 36,132, 38, 63,113, 73,186, 42, +211,154,106,139,179, 78, 54,143,170, 17, 16,102,163,103, 57,187, 12,148,113, 15,113, 64,214, 3, 58,195, 79,241,197, 5,254, 2, +227, 99, 27,116, 70, 89, 55, 82,137,141,229,239,203,121,196,180, 53,178,174,220,148,201,154, 9,173,182, 38, 98,121, 20,163,172, +181,247,108,128, 90,224, 49,179,203, 73,102, 17,193, 37,197,170, 72,211, 40,149, 41,162, 77,188,108,146,193,108, 89, 11,229, 36, + 47,235, 15,155, 62,176, 68, 43,166, 29,132,163,137,217, 52,246,180, 20, 17, 46, 82, 73,146,213,247, 41,105,103, 89,201,141,179, + 8,227,218,213,229, 66,188,228, 10,174,201, 53, 4, 4, 96,105,144,144,144,211,160,159, 52,235, 34,203,154, 98, 82, 59,200,163, +139,154,121,194,109,215,169,137, 93, 36,197, 62,248,248, 51, 43,117,186,151,109,226,129, 71, 29,183,174,244,200, 2,117, 74, 98, +217,124,149, 48, 69,165,202,255,175, 75, 1, 96, 60,170,121,217, 46,224,252,173,175,169,203,134,164,151,146,169,180,245,108, 51, +171,102, 33, 51, 22,215,129,117,235,108,186, 83,153, 9, 65,237,211,103, 56, 89,170, 23,124,125, 52,189, 58,172, 2, 57, 12, 67, + 63,235,138, 11,153, 80, 11, 16, 85,143, 91,195, 36,140, 28,205,194,102,249, 26, 98, 65, 40, 37,158,181, 0,154,212,234,104, 9, +112, 65, 95,131, 18, 5,235,137,244,226, 44,148, 57,231,173,193,117, 32, 97,164,216, 87, 11,167,152, 68, 53,139, 1,205, 82,174, +217, 15,204, 89,157, 6, 57, 90,129,227, 76, 13,159,173,131,119,102,225,101,125,145,144,225, 3, 35,140, 94, 35, 87, 83,194,233, +212,163,235,214,186, 30,176, 7,160, 48, 97,200,120, 14,176,169,177,111, 66,128, 11, 30,135, 97, 68,140, 73,213,138, 36,149,154, +148,102, 17,171,206,130, 76,146,100,120,239,208, 44, 90,140,121,196,113,127,128,119,172,163, 13,171, 78, 29, 49, 26, 31,176, 63, + 30, 53, 41, 71,128,227,225,128, 5, 51,188,211, 81, 70,235, 28, 30,238, 30,176,223, 29,141,212,131,105,244,110,112, 4,136,142, + 92,136,245, 27, 31,143,163, 17,154, 24,203, 85,131,247, 62,120, 31,227, 16,241,246,155, 87,104,154, 6, 71,137,184,187,187,135, + 3, 35,199,132, 97,119,192,234,242, 82,199,158,113, 4, 11,112,236,123,188,243,225, 7, 0, 1,111, 95,189, 85, 56,129,131,142, +208,185, 1,107,118, 43, 78,125,143,126,136, 85,248,166,170, 80,253,247, 97, 76,232, 7, 65,183,230,154,189,235, 68, 52, 61,136, +161,162, 8, 27, 31,167,148,144,104,250, 51,164, 90, 36,162,217, 58, 88, 69, 94, 37,192,195, 83, 1,158,233,123, 44,132, 52,100, +244,253, 8,246, 14,139, 38, 96,181, 89,163, 91,175,208,116, 14,195, 97,192, 79,126,248,255,226,197,167,159,227,249,199, 31,224, +119,254,229,247,193,174,197,203,175, 95,227,238,237, 45, 78,135, 35,134,135, 29,216,121,116, 77,139, 55,187, 61,210,224,177,242, + 1,239, 92, 93,227,217,102,141,118,217, 32,187,136,227,253, 1,187,227, 1,187, 97,196, 67, 44,232, 83,237,138,198,164,169,114, +107, 98,172, 25, 24, 50,176, 31, 6, 36, 18,136,115,245,192,111,151, 29,206,206, 54,154,160,182, 92, 98,115,190,197,229,213, 5, +206, 47, 46,192, 77,128,140, 99,141,214,165,226, 69,181, 54, 69,136,204, 51,110, 34,160, 50,246, 44,151, 12, 21,130, 28,207,148, +236, 83,176, 9,196,122, 21,158, 96, 23,147,173,138,106,138,158, 38,165,105, 23,227,204,239, 41,179, 0, 30, 41, 24, 70, 0,177, +132, 23, 97,178,170, 60, 26,129,137,141,185,107, 81, 50, 21, 29, 25, 2,166,201, 71, 42,223,218, 7, 82,161,191, 73, 13, 6,155, + 96, 29, 84,240,176, 58, 57, 83,151, 2,235, 1, 1, 45, 14, 10,140, 72, 4,179,141, 59, 61,122,109,234, 58,195,124,213,243,144, +152,156,100,186,216,139,189,204, 94, 27,157, 10,152,136, 41,219,120,213,138, 22,199, 2,112,130,136,171, 62,106, 50,148,180, 88, +160, 77,165,103,208,236,253, 43,151,146,129,122, 38,149, 67,249,253, 92,159,155,137, 60,103, 76,255, 12, 80, 96, 35,155,161, 90, +214, 80,124,217,121, 84, 93, 91,101,142,179,173, 23, 60, 82, 28,244,235,184,176,195,167,113, 53, 91,232,144, 32, 35,142,217, 10, + 27,189,232,216, 32, 51, 41, 25, 51,128,185,178,190,245, 32,143, 53,105,140,156, 25,179,237,236,172,182, 46,153, 96, 68, 85, 84, + 89,252,239,181, 22,157,112,125,115,150,127,233, 46,235,106, 3, 4,145,104, 13,151,212, 75,176, 8,245, 10,184,165, 20, 1,211, +159, 39, 83,164, 35, 27,248,198,190,207,170, 85, 33, 45,247, 64, 74,198,147,108,162,181, 84, 38,101,186,119, 46,118,203,233, 51, +103, 30,124,179,243,149,119,149,121,178,171, 17,102, 19,143,162, 1,180, 60, 17,178,176,165,210,225, 22,171, 92, 1,206,120,207, +232,143, 61,134,168,121, 1,133, 29,207,153, 17, 9, 22, 77,171,133, 46,153,242, 60, 21, 65,163, 87,231, 73,182,137,115, 48,113, +118,206, 25, 57,233, 93,151,181, 35, 65, 91, 65, 50, 9, 77,219, 98,164,132, 56,166,234,129, 47,248,217, 82,124,165, 52,183, 95, +210,252,147,172, 34, 54,199,245, 51,236, 24, 85,167, 64,150, 84,201, 16, 93, 29,148,194,199,156, 81,236, 8,142, 2,124,136,122, + 54,165,140,254,208, 35,111, 71, 52, 22, 62, 22,156, 67, 38, 65,202,202,126, 39,115,157,193,123,248, 54, 52,112, 62,160, 63, 28, + 48,166, 8,112,152,198,125, 37,146, 81, 84,112,195,134,188,203,146,208,180, 11,116,203,165, 90,217, 78, 3, 4,218,165,213,113, +150,189, 64, 57,101,120,231,113,218, 31, 48,244, 3, 22,157,230, 95,251,208,192, 49,240,112,123, 91, 13,249,211,126,169, 18,168, + 43, 83,183, 13, 65,189,180, 57, 33,180,122, 57, 62,125,254, 46,206, 47, 47,240,250,197, 75, 28, 79, 39,116,237, 2, 47, 95,124, +137,227,195, 30,174,105,176,219, 29,176, 8, 1,103,103, 75,220,223, 29,213,194,145, 19,154,229, 2,151, 87, 23,184,125,243, 6, + 78,128, 16,116, 10, 17,135, 1,206,121, 27, 73, 10,134,195,136, 56,142, 86,193,114, 5,234, 40, 43, 62, 33, 24,182, 53,155,151, + 84, 82, 6,137,114,218, 51,165, 58, 70,142, 57, 65,216,169, 26,114, 38,116, 74,153,107,103, 57, 39,106,217,180,182,144, 18,148, +219,126, 26,129,156,177, 58,223, 98,181, 93, 97,209,117,104, 67,139, 55, 47,111,241, 15, 63,249, 41,110, 95,223,225,187,223,255, + 29,124,244,189,143,112, 24, 6, 60,220,188,192,254,110,135,120, 58, 34,237, 85,179, 16,217,225,245,161, 71,235, 58, 92,110, 22, +216,120,143,167,155, 53, 92,208, 11,105,220,159,176,219, 29,112,127, 60, 97, 31, 35, 6,139,162,117,222, 91, 87,145,113,206, 1, + 75, 8,134, 28,113, 31, 19,198,146, 36,199,122, 72,119,139, 22,155,179, 53,218,182,197, 98,187,194,230,108,139,237,118,131,243, +203, 11, 52,134,248, 85, 97, 89,177, 48, 21, 1, 24, 89,122, 81,217,169,231,106, 59,209,195,103,234,152, 80, 3, 17, 38,123, 26, + 74, 33,106, 94,254, 2,161, 33,139, 49, 68,185,212,205,134,166, 65, 10,206,200, 78, 60, 89,134,216,212,170,164, 42,228,210,137, + 43,121,202,246,172,197, 71, 92,186, 70, 46, 86,160, 89,150, 52, 19, 28,154, 89,110, 60,106, 55, 94,134,159,201, 8, 79, 98, 29, +141, 24,151, 26,246, 61,168,170, 53, 77,187, 75,235,136,116, 77,192, 54, 9,152,196,152,196,217,158,207, 9,201, 73,179,132,169, +226,247,174, 86, 56, 27,113,167,210, 85, 39, 19,113,150, 28,104, 76, 19, 4, 98,170, 81,155, 21,238,227,100,138, 22, 22,133,169, + 76,168,207, 89,212, 43, 77, 74,113, 18,174,252,234, 89,253, 82, 44,250,134, 3,157, 44,112,108,213,159,173,161,181,192,113, 38, +194,172,151, 75, 70,202, 17, 9,118,176, 59, 45, 95,136, 66,101, 7,192, 4,126, 49,151,244, 60,163,137, 25,157, 78,171,129, 92, +247,187,204,133, 59, 96, 93,187, 36,253, 92,137,174,159,100,102, 35,171, 41,102,196, 22, 87, 45,186,190, 48,219,215, 36,189, 20, +235, 78,231, 98,193, 57,160, 71, 30, 49, 6, 38,199, 0, 77, 19,168, 34,218, 52, 73, 39, 83,225, 56,228, 89, 4,174, 60,250, 11, +106, 64, 14, 85,180,159,253,217, 22, 71, 90,216, 78,182, 17,151, 42, 14, 52, 70, 72,156,126,222,199,168, 95,123, 78, 92, 9, 14, +178, 9, 65,237,232,105, 34,206, 49,234,164, 18, 50,137,255, 42,234,181,124,127,245,181,210, 92,164,224,180,161,236,179,146,230, + 98, 54, 30,125, 89,203, 25, 92,202, 57,167,208, 54,150, 42, 46, 20,201,186, 66,181,159, 95,201,121,152,180, 97,128, 21,181, 9, + 46, 56, 91,151,194,244, 78,132,225,168,164,206, 18, 28,147,108, 58, 75,100, 9,126,146,109,238, 85, 86,101, 9,206,117,213,159, +207,198,170,119,166,169,132,185, 8, 96,228,202,224, 85, 15, 80,162,198,137, 13,180,214,170, 48,218,143, 94,181, 83,136, 24,210, +160,185, 7,182, 50, 11, 94,215,124, 49,235,207,226,172, 80,105,152,181, 83,143,105,196,105, 28, 17, 37,163, 41,236,104, 76,187, +151,152, 45, 74, 15, 58,130,200,105, 64,219, 53,104,156,195,155,253, 30, 17, 90,193,162, 74,235,245, 98, 19, 17,140,167, 30,203, +243, 45,246, 55, 55, 64,210, 29, 79, 19, 2,154, 38, 96,191,219,227,230,237,107, 69, 59, 22,208, 70,158,196, 82, 92,156, 46, 73, +171,190, 56, 40, 80,193, 59,143,197,114,137,119, 63,250, 16,177, 31,113,247,250, 45, 22,139, 14,135, 67,143, 23,223,188,196,134, + 8,227, 56,226,230,126,135,237, 59,207,224,201,226, 72,163,210,133,174,223,125,138, 56,246,216,191,186,199,197,245, 37,214,231, + 75,132,125,208,137,128,247,182,243, 20, 12, 67, 95, 43,215,218,121,101, 96, 28,149,151,204,222, 16,128,105, 4,210,168, 30, 82, + 98,195, 36,114,149,141,150,139,203, 21,161, 21, 21,129, 67, 81, 65, 90,130,151,192,180, 11, 58,254, 98,114, 24,135, 17,253,169, + 7,224,112,118,190,193,122,179,212,113, 84,240,120,241,245, 43,252,252,239,127,142,124, 58,226,251, 63,248, 62,158,126,240, 62, +110,111,239,177,219,157,208,159,142, 72,125,143,120, 60,169,207, 17, 17,201, 5,108, 87,107,108,125,139,165,103,108,218, 86, 47, + 67, 38,196,152,176,127,216,227,126,127,196,110,136,232,101, 84,150,128, 87, 28,109,234, 7,108,157,195, 57, 49,250,152,176, 79, +130, 30, 2,177, 66, 15, 4, 52, 93,192,122,187,193,106,181,196,106,179,198,246, 98,131,245,102,133,139,203, 75,116,139,165,226, + 32,147,142, 48, 41,207,196, 42, 66, 53, 7,128,106, 92,167,177,166,133, 38,165,173,217, 93,166,238,207, 14,210,156,235,133, 90, +236, 62,168, 59,102,175, 59,101,153,101, 19, 81, 41, 14,184,122,137,115, 25,250, 90, 60,170,100,212,100,170,210,245,122, 31,234, + 58, 72,236,114, 43,157, 37, 74,212,174,161, 36,139,251,139, 81,248,239, 51,107, 19, 77, 76,244, 82,210,136, 36, 85, 23,176, 22, + 13, 57, 97,234, 14,202,142,206,172,165,165,195,202, 86, 8,176, 83,129, 13,102,152,216,122,249,215, 88, 72,219,169,210,132,216, +173,222,226, 2,120,171,188,118, 54,191,180,117,102,245,194,225, 42,158, 42,238, 19,201,102, 19, 42,119, 13,219, 97,139,210,221, + 41, 9, 47,101,245, 0,195,138, 34,194,183,244, 16, 52,141,238,139,149,167, 80,198,156, 21, 21,194,147,246,162,124,120,116,212, +156,193,190,211,169, 65, 25, 73, 67, 71,183,165,216,171,211, 49, 34, 16, 41,155,223, 89,113, 52,142,163,138,244, 48,137, 47,137, +169,126,134, 74,151, 87,132, 85,197,178,148, 69, 25, 13, 58, 57,164, 42,134,205, 54, 26,198, 44,121,143,202,122, 71,242,196, 64, +175,106,120, 59, 39,242,183,147,246,102,197, 81,249, 94,172, 8, 36,153,194,113,184,232, 63,100, 22,180, 83, 87,151, 82,147,245, +170,242,190, 28, 65, 37,225,172,194,113, 74,117, 33,149,214, 88, 10,111, 33,117,232, 20, 15,187, 78,119,242, 44,184, 69, 42,145, + 15, 89,191,207, 34,242, 36, 46,249,233,168, 54, 51, 45,124, 85,232,134,186, 86,147,199,151,186, 21, 86, 34, 58, 18,159,172,125, +152, 37, 4, 42,190, 89,239,142, 60,179, 31,143,182,227,119,136, 98,147,150,156,109,117, 42,255,140,136,232,131, 3,121, 45,220, +149, 4, 71,218,208,141,154, 81, 78, 78,159, 9,211,234, 99,180,207, 60, 21, 16,216, 28,192, 67,229, 31,189,120, 61,123,221,147, +155, 70,146,237,217,212,115, 30, 53, 30,186,132,115, 81, 8,198,112,112,104, 44, 58,187, 31, 6,139,171, 45,107,105,109, 30,188, +105,120, 60, 57,155,123, 0,222,219,146,112, 28, 7,228,152,192,237,132,136, 76,146,235,222,174,140, 67,200,148,140,231,171, 53, +250,253, 9,135,195, 81,143, 70, 27, 97,146, 61, 28,142, 29,134,113,212,240,150,174,197,105, 24,208,199, 1,107,241,232, 22, 29, +188, 99,188,190,125,131,120, 26, 42,181,199,209,196,142, 86, 31,175,175, 31, 14,199, 14,199, 81, 69,114, 78, 4, 31,124,231, 35, + 92, 94, 61,193,219,215,111,144,199,136,174,243,120,115,243, 6,167,161,199,101,187,194,253,195, 1, 99, 26, 17, 28,227,180,239, +213,235,151, 18,206,215, 91,156,159, 47,240,229,215, 95, 66,118, 25, 87, 79, 46,225, 60, 41,130,207, 84,251, 41,101, 28,135, 1, + 68,101, 87,147,145, 51,219, 67,156,209,180, 14,206, 25,200,193, 84,172,117, 60,235,120, 74, 99,179, 41, 71, 17, 0, 85,217,147, + 37,143, 21,138, 89,204, 78,173,112,229,112,182,195,181,239, 7,244,199, 17,204,140,171, 43,219, 71, 27,185,238, 55,191,250, 13, + 62,251,197, 87, 8,157,195,187,255,226, 7, 56, 63, 59,195,219,215,111,113, 58,244, 24,135, 17, 24, 71,196,211, 17,183,135, 3, + 70, 52,184,188,188,196,166, 91,160, 5,161, 21, 96,211,118, 32, 50, 16,130, 36,236,143, 59,220,236,118,184, 31, 34,142, 49,194, +123,134,247, 65,147,251,226,136, 5, 57,156, 59, 70, 63,246,216,165,132, 99,249,185,216, 65,136, 16, 26,135,245,122,133,237,102, +137,245,249, 25, 86,231, 91,108, 55, 11,156,157,159,163, 91,173,107,228, 92, 33, 51,101,171,121,156,104,249,166,217,218, 54, 13, + 33,122,228, 28, 96,158,118,195, 92, 99, 60,231, 49,165,198, 78, 22,216,159,107,183, 62,151,174,191, 4,157, 20, 66,149, 55,241, + 35,163, 12, 6,153,184,238,223,234,232,155,184,218, 83,136, 93, 77,189, 19,243, 60,147,117,235, 69,148, 86,138, 55, 24,133, 80, + 72,213, 41,108,129, 20,165,162,159, 18,231,116,124,230,106, 48,131,169,203,205, 95,207,165, 99,158,197,157,214, 11,187,238,213, + 80,187,121, 38,135,114, 98,207, 96,181, 38,252,145, 71,228,185,108, 35,102,178,139,141,216,131,105,180, 46,195,200,100,179, 52, + 54, 24,172, 36,219, 36, 1, 41, 87, 1, 81,249,154,154, 72, 87, 86, 36,140,218,225, 57,123, 47,179, 21, 67,158,125, 53, 69,121, +210,172,107,178, 75, 79, 95, 3,153, 46, 60,195,159, 78,174,133,137,201,174,127, 44,195, 7, 15, 14, 30, 57, 43, 3, 94,167, 11, +206,208,174,185,186,107,156,247,112,206, 4,100,153,181,192,116,133,138,230,235,165,154,163,129,111,188,142,255,227, 56,117,228, +197, 58, 20, 69,119,232, 4,169,122, 36,178,184,223, 82,128,178, 20,234,217, 52, 22,175, 9,121,101, 66, 41, 48,103, 5,215, 93, +120, 52,228,111, 85,153, 23, 71, 7,205, 19,254,102,119, 49,232, 81, 23, 93,247,233,229, 51,199, 84,127,207,100,142, 84, 77, 7, +177,126, 94,116,251, 58, 77, 18, 10,143,125,162, 0, 74,117,138, 40,187,223, 24,242,179,194, 23, 25, 51,209, 99,182,247,222,205, + 85, 90,117, 93,192, 12,196,146, 76, 87,132,127, 52, 21,232,206, 68,111, 69, 60, 91, 45,193, 38, 90,206, 89,249,244,222,115,117, +117,148, 2, 72,191, 70,139,116,228,172,128,153,148,208, 54,139,234, 38,240,222, 91,116, 44, 27,180, 72, 65, 47,222,235,123,209, +247, 39,227,173,163, 38, 99, 82, 86, 76,108, 52, 50, 29,170, 2,205, 89, 81, 72,117, 74,168,159,109,125,111,235,218,160,204,109, +108, 13,168, 28,156, 92, 39, 42,204, 2,223, 54, 24, 82, 70, 8, 81,241,237,195,136,135,251, 61,226, 59,217,214,139,250,155,199, +164, 13,167, 7, 91,116,185,218, 87,185,241, 94,199, 82,253, 48, 75, 66,130,133, 99,212, 1, 10, 50,153,202,209, 1, 77,215,162, +235, 90,220,159, 14, 24,134, 17, 76, 14,153,156,209,139,180,123, 10, 46,224, 56,140,240, 93,139, 28, 51,134,227, 73,211,129,136, +224,183, 75,100,114,120,120,232, 53, 71,151,138,253, 88, 67, 57,146, 5, 86, 40,126,147,225, 26, 66,112, 64,142, 9,153,129,197, +102,131,247,191,251, 33,100, 28,112,124,184, 3,123,193,144, 78,248,230,171, 87,202,120, 23, 65,127,218, 99,209,182, 16, 73,216, +237,119,200,172,202,214,203,139, 11, 60, 60, 12,120,249,242, 45, 64,132, 32, 9, 44, 12,215, 53,200,158, 16, 37,227, 56, 68,196, +227,193, 94,116,167, 68,171,152,140,173, 45, 26,254, 84, 58,182,186, 71,210,113, 46,152,171,226,154,146, 85,165,182,147,173, 99, + 45, 27,217,164,242,208,102, 76, 35, 54,167,194,187, 52, 8,142,111, 78,200,228,113,113,113,142,229,178, 3, 59, 66, 66,194, 39, +191,252, 28,159,254,221, 39, 8, 13,225,189,143,222, 71, 27, 58,188,121,115,143,195, 65,187,114, 22, 85,101,222,222,222,163,239, +123,188,255,252, 25,222,187,126, 7, 43,231,208, 49, 97,219,117, 5,173, 2, 48,176, 59,237,241,246,254, 1,247, 67,194,113, 28, + 65,153,224, 66, 11, 14, 65,215, 21, 89,240, 52,120,112,202,216,103,193,193, 48,147,196, 30,228, 60,124, 19,176, 92,173,112,182, +221,224,252,108,139,237,229, 26,155,229, 18,219,203,115, 44, 86, 75,213, 91,176,250,123,181, 89,178,177, 55,216, 12, 66,100, 96, +133,169, 59, 83, 36, 99, 48,223,168,138, 73,138,151,251,145,226,205, 46, 38,246, 14,217,171, 48,133, 88,234,126,110, 30, 12,161, + 29, 7, 27,204,196,213, 14,180,130,174, 72, 44, 60, 68,153, 4, 98,246, 35,118,190, 90, 71, 98,142,234,133, 22,227,181, 27, 96, +166,134,163,144,194,107, 64,113,194, 57,148,147,215, 46,255,249,120,181,136,228, 74, 26, 24,108, 95,204,152,128, 79,108, 93, 61, +207, 68,103,201,108, 59, 42,100, 19, 83,231,146,197,150,170,195,163, 28,164, 21,248, 97,187,121, 49, 49,167,136,122,116, 29, 49, +224,237,130,203,211,225,203,204,186, 50,114, 37, 52, 99,154, 42,148, 46, 50,231, 34, 52, 51,156,119, 78, 58,206,154,217,118,244, + 33,208,127,119,200,240, 98,187,119, 43, 86, 28, 79,214,194,250,220,243, 84, 96,241,108,237,224, 28, 35, 91, 52,237, 56,142, 24, + 99,210, 76,170,211, 17, 57, 14, 16,210,248,204, 44, 4,137, 58, 42,207,182,243, 85,251,144,126,102,114, 26, 17,211,128, 52, 70, + 19,115, 89,167, 39,105, 34,184,213, 76,121, 85,216,151,228, 59, 97,205,229,166, 44,200,200,136,172,218,163,226,159, 71, 30,167, + 88,100, 46,121, 3,102,241,146,137, 91,225,138,126,128,109,140, 77,186,190,211,215,137, 30, 11, 14,205,186,248, 88,228,134,202, +140,151,194, 29,192,227,164, 55, 88, 28,112,229, 38, 88,232,145,174,154,196,186, 96,195, 35,147,118,165, 37,199,174,124, 29,187, +242, 99,204, 18,212,184, 48,204, 93, 93, 48, 8,105,232, 21, 16,225, 73,159,108,253, 8,167, 73,168, 55,155, 34, 24,153,215,112, + 53, 4, 18,135,156, 11, 62,156,234,164,197, 27, 38, 91,170, 80,114, 38, 26,116, 30,173, 83,141, 51,149,137, 14, 17, 82,172,139, + 78,203,120, 48,162,167,155, 4,174, 90, 48,235,251,216,182, 65, 63,115, 86, 64,164,148, 17, 79, 81,159, 67,115,176,104,172, 77, + 68, 76,209, 52, 8,177,114,228,173,163, 67, 91, 74, 34,139, 50,206,220,128, 60, 44, 71, 62, 2,228, 53,233,209, 9,188,211,245, + 9,121,103,184,105,129, 39,160, 9, 30,141,243,154,249, 65, 4,146,136,195,241,136,113, 28,173,220, 38, 36, 33,140, 73, 16,147, + 77, 84,114, 66,150,164,151,186, 11, 29,198, 97,192,105, 24, 76,212, 51,141,160,146,237, 56, 11,239, 24, 0,130,247, 88,117, 11, + 28, 78, 35,142,167, 83,149,213, 23, 11, 7,179,131,243,250,245,135,227, 17,141, 37,255,220,237, 31, 16, 92, 64,183, 94, 99,213, +117,200,167, 30,167,253,193,170,250, 60, 27,241,145, 9,244, 74, 94, 47,170,229, 46,198, 17, 41, 3,239,126,248, 46,174,158, 92, +225,254,246, 6, 99,138, 8,190,193,171,175, 94, 99,216, 31,176,104, 29,198,126, 64, 28, 18,218,166,193,195,238,132,253,254, 0, + 98,194,246,108,141,166, 9,216, 61,220, 33,166,140, 54, 56,245, 35,146,192,135, 6, 96,143,148, 18,246,251,123,176,115,240,228, +108,199,111,194, 11,166,234,247, 77, 41,214, 3,204,147,109,144, 44, 93,139,205, 82, 19,105,186,244,189,243, 54,114, 86,234, 79, + 54, 27,140, 62, 36, 84, 99, 25, 29, 24,195, 41,225,176, 63,130, 59,224, 98,179,210,168, 70, 7,140,125,194,175,127,254, 37,190, +250,252, 43,108,222, 57,199,251,223,253, 16, 20, 24,251,195, 14,227,208, 35, 13, 3, 88, 18, 40, 70,220,188,121,139,200, 30,223, +251,237,223,198,251,239, 61,133, 79, 35,188, 0,231,109, 7, 72, 68,162, 8,120,198,233,212,227,213,219, 59,220, 31, 6,244,227, +136,152, 19,124,235,208,249, 22, 30, 4,196,136,179,166, 1,242,136,187,216, 99,200,122,160,137, 35, 32,120,184,198, 99,217, 53, + 56, 63,219,226,236,234, 2,203,139, 45, 86,203, 21,206, 46,207,209, 53,157, 90, 37,115, 68,202, 17, 49,153,160, 71, 50,216, 94, + 59, 85, 1,231,106,195, 18,202,179,232, 93, 86, 74, 90,233, 48, 72, 11,128,146, 93, 95, 9, 82,204,154, 97,206,108, 43,144, 0, +204, 59, 92,171,158,185, 86,219, 50, 3,133, 88, 6, 58,123,176, 97, 24,137, 92,245,171, 26, 26,162,230, 48,215, 40, 81, 83,182, +151, 29,221,156,187, 62,183,204, 20,213,188,126, 63, 86,200, 76,180, 12, 59,221, 77, 93,173, 57, 82, 10,168, 96, 45,112,105,230, + 99,101,204,243,213,245,226,102,158, 4,152, 42,152,225,218,225, 83, 85, 73, 59, 99, 68, 23,238, 3, 63, 42, 46,166,200, 74,154, + 14,116,155,108,100, 76, 66, 39,170,139,109,122,236,251,215,145, 84, 77, 49,195,183, 56,240,250,186,228, 41,152,102,150,242, 86, + 84,224,117, 47, 41,147, 53, 79,217,218,190,118,200,206,196,152,138,115,197, 35,206,125, 74, 17,195,233, 8,244,154,123,144,178, + 22,182,131,141, 45, 75, 33,137,172, 9,146,202,158, 24, 32, 24,225, 45,196,163, 78, 8, 76, 24,108,117,152, 42,158, 77,107, 67, + 4, 56, 86,138, 36,121,167, 60,127, 98, 19,219,250,106,149, 20,179,238,234, 42,147,173,196, 42,151,134,152,237, 79,166,215,103, + 63,247,152, 0, 0, 32, 0, 73, 68, 65, 84,133,170,228,108,154,250,101,209,127,236,210,203,179, 46, 60,127, 75,197,254,109,129, + 29,190,101,141,171,220,246, 89, 65,153, 19,234, 46, 55,211, 68,167, 19, 82,209,112, 9,169,145, 92,194,129,138, 8,211,220, 3, +182,174,210,226, 13,245, 89, 96,226, 10, 48, 19,203, 96,208,104,227,153,215,125, 50,209, 63,242,208,107,226, 93,130,119, 4,179, +105,163, 13, 94,117, 79, 52, 5, 21, 77,220,116, 32, 56,182, 98,212, 94, 27,131, 35, 57, 98,243,223,107, 10, 91,127, 74,255,108, +146, 81, 86, 45, 28,252,244,181, 16,244,253, 9, 41,198,170, 59,112,182,170, 72, 41,218,175, 79,239, 83,209,205, 8, 4,217, 52, + 59,176, 16, 46,170,231,147,113, 18,156,238,216, 27,118,117, 76,239,157, 83, 75, 30, 3, 28,212,194,167,233,111,197, 58,219, 32, +165, 3,250, 99,175,247,146, 37,129,150,105,102,153,173,193, 49, 56, 4,120,199,130, 67,212,234,195,151, 81,187, 76,244,155, 36, + 9,153,188,125, 36, 53,205,205,123,143,195,225,136, 49,233,174,204,147, 84, 79, 46,219, 14,161, 31, 7,244,199, 35,158, 92, 92, + 96,232, 7,196, 40,144,152,177, 88, 45,176,104, 90,236,246, 71, 60,220,189, 5,177, 87,166,181, 76,234,217,170, 29, 97, 85,125, +251, 16, 32, 73, 48,244, 17,221, 38,224,131,223,250, 46,144,129,211,241, 0, 2,208,247, 3,190,249,236, 43,172,182, 43, 12, 41, +227,176, 59, 34,120,173,188,246,251, 3, 98,140,184,222,158, 97,117,185,198,152, 70, 28,118,123,120, 7,120, 38, 19,223, 49, 68, +185,129, 24, 15, 71,245,216,123,101,214, 67,102,123, 41, 51,248,171, 96,193, 33,152,181,136, 72,115,134, 73, 13,165, 90,149, 71, +235, 68,202, 14,140, 38,238,119, 5, 76,176,155,198,170,230, 9, 30,134, 81,247,143, 62, 96,185,106, 17, 26,253,251,247,247, 9, +111,190,122,129,135,221, 78,237, 97, 79,158, 96,136,130,241,216, 27,241, 46,194, 19, 33,193,225,213,235, 27,196,156,241,123,255, +226,247,112,177,221,226,120,183, 3,197,136,149, 87, 21,240,152, 19,194,162, 67,148, 17,175,222,220,224,254,112, 66,159, 51,134, + 49,162,235, 26, 52,161,209,202,114, 28,113, 21, 60, 58,137,216,141, 35, 78, 57, 99,176, 85, 11, 57, 7,223, 4,248,198, 97,187, +217,226,242,233, 21,214,219, 53,186, 69,135,213,118,141,102,209,214, 24,197,108,123,212,156, 35, 28, 38,209, 86, 21,245, 84,162, +154,237,194, 11,253,156,228, 81,247, 65,252, 24, 47, 42, 82,172, 41, 38,169,149,199, 59,229,122,192, 49,215,195,113, 30, 24,162, + 34, 44,174,226, 60,153, 99, 89,193,143, 0, 15, 52, 75,127, 42, 22,174,249,255, 85,198, 2, 48, 3,177,148, 17, 50,215, 85,129, + 88,110,122, 21,216,160,100,152,103,164, 24,171,221, 75, 71,246, 30,160, 18, 23, 25,109, 15, 57, 11,214,168,187,118,174,137,115, +142,189, 10, 90,193, 85,177, 94,186, 18, 33,101,220, 23,161, 23, 88,197, 60, 73, 24,136,246,250,242,164,109,147,122,129,207,114, +172, 31,153, 1,181, 32,171, 71,155, 1,149,138, 87,189, 94, 34, 52,189,246, 5, 23, 90,130,106, 98, 38, 43,220, 39,202, 26,113, +174,224,158,218, 97,146,252,127,108,157,231,150, 28,199,177,173,119, 68,102, 86, 85,247, 24, 0, 4, 9,208,136,114,199,220,251, +254,143,115,238, 49,148, 68, 11,146,112, 51,211,221, 85,105,226,254,136,136,204,106,232, 44, 45,173, 37,137, 16, 48,232,174,202, + 12,179,247,183,119, 66, 45,238, 9,143,158,142,167,228,216,138, 44,130, 20, 53,171, 32, 29, 38,180, 77, 70, 8, 13,108, 55,171, + 12, 87,111, 67,208,168,106, 24,147,129, 87, 42,213,209, 1, 99, 28,234,205, 39, 59, 82,119, 94,111,195, 90,123,129,198, 73, 39, + 50,198, 97, 7,243, 46,129,205,196,104, 93, 27, 66,160, 79, 20,239,238,128,129, 77, 2, 28,162, 36,187, 96, 35,159, 8,145,251, + 43,246,207, 40,174,215, 52,253, 98, 71,232, 19,169, 81, 76,181, 46,128,148,182,139,147,237,151,173,173, 18,250, 38,155, 59, 13, +141, 72, 49,186,134,136, 65, 96, 70,174, 35,102,214,149,244,206, 83, 16, 83,172,251,229, 39,220,186, 46,166, 63,203, 52,172,124, +188,211, 87, 44,135, 4, 42, 98,196, 53,133,203,104,138, 31, 97,138, 22, 62,230,194, 59, 82, 86,123,107, 21, 49, 4,108,246,217, +148, 82, 80, 90, 65,138,140, 92,122, 89,131,214, 4, 49, 76, 72,115, 28,146, 2, 8, 46,167,179,137,103,117,205, 26, 2,163,229, + 13,165,180,190, 14,208,134,163,245,194, 56,144,114,227,139,105,117,200, 38,205,126, 54, 52,187, 16, 34, 9,230, 41,130, 80, 13, +192, 52,120,251, 33,234,185, 90, 43, 33, 68, 86, 22, 70,136, 40,165,225,178,173, 56,208, 1,156, 34,194, 22,118,200,102,155, 24, +214,106,193, 55, 32,172,121,179, 8, 74,203,125,222,245, 2, 78,161,242,240,128,121, 74, 16,129,117,246, 52,108, 51,246, 67,249, +101,183,174, 23,172,231, 85, 5,108,235, 10,169,170, 80,189,185,187, 69,101,198,249,241, 17,235,227,201,170,193,235,177, 82, 87, +148,154,226, 55,132,128, 92, 10,214, 13,248,226,155,215,120,249,213, 43, 60, 61, 60,160,150,140,152, 34,222,252,252, 11, 74,206, +184,189, 61,226,227,195, 25, 79, 79, 39,112,140,168,173,225,178, 93,144,107,198,146,148, 53,127, 58, 61, 33,136, 89, 88,164,162, + 85,193, 42,181,199, 74,230,220, 48, 77, 19,152, 85,213,158,237,139,237,252,118,219,163,106,245, 69, 61, 93,141, 73, 5, 61,129, +245, 75,232,168, 80, 30,226, 8,119, 66, 57,114,211, 81,239, 94, 68,213, 90,177,174, 27,136, 9,135,219, 3,210,164,170,243,135, +247, 39,252,227,191,255,129,199,199, 19, 94,126,254, 25, 94,188,124,137,117, 45, 88,183,162, 81,132,185,216,222,153,240,238,237, + 59, 4,102,252,223,255,243,239,184,191, 63,226,252,240,128, 73,128,133, 8,168, 5,107,217, 16,166, 4, 4,198, 47, 63,191,197, +251,167, 39,108,181,225,178,109,122, 16,198,136, 24, 35,164, 21,220,166,136, 91,102,156,214, 21, 79, 34,216,152,209, 2,129, 99, + 68,154,103,164, 41,225,230,230,136,151,175, 63,199,253,243,103, 88, 14, 11,238,159, 61,195,180,204,200, 37,163, 88,117, 62,196, +108,210,225, 17,227,229,165,157,144,135, 16, 40,130, 57,153, 64,108, 16,184,254, 89, 17,140,222, 57, 55,251, 61,189, 82,223, 95, +232,126, 49,244,209,154, 29, 32,220, 59,101,253,181,193,172, 46,163,179,236,179,194,110, 79,210,164, 46,234,148, 54,231, 70,251, +175,119,202,218,232, 0,180,235, 7,237, 2, 54, 90,221, 21, 53, 59, 72, 7, 39, 93, 55, 24, 60,197,149,245,165, 22,228,188,161, +228,172,233,135,110,225, 19, 50,107, 25,239,226, 90,197,246,199,232,251,127, 30,222, 65,219,197,177,230, 9,216,255,167,162, 89, + 87,214, 6,238,210,144,163, 54,245, 29,228, 45,167, 77,118,104,223,167,208,153,189,168, 9,144,157,205,167,131,210, 48, 46, 51, +218, 5,219, 52,207,122,166, 65,172,243, 3, 86, 33, 35,246, 73,177, 70, 34,251,238,158, 76, 8,216,119,149, 86,120, 83, 45,144, +156, 53, 29,177, 21, 13,236,104, 5,144,218, 17,187,170,139,208,247, 46,151,140, 92,183,190,154,168, 45,235,229,109,159, 77,109, +122, 81, 52, 91, 97, 40,248,165, 42,140,171, 86, 13, 3,242,125,179, 33,128,133,131,229,103,200, 46,120, 72,139,165,218, 77,243, + 97, 28,127,246,107,107,107,253, 98,247, 34,213,125,243, 99,116,108, 34, 81, 43,186,252,217,237,161, 60, 93, 31,178, 75, 51, 23, +190, 66, 86, 19,211, 85,110,129,119,191, 14, 75,246,130,108, 12, 94,248,106, 14,195,221,173,212, 12, 78, 72, 87, 99,246, 93,216, +174, 21,113,210,187,119, 29,102, 82,199,107,143,160, 28,251,187, 48,247,169, 69, 8,172, 84, 83, 75, 52, 75, 81,157, 68,209, 48, +172,125,122, 0,103, 91,212, 78,244,243, 44,134, 82,117,199, 30,246, 23,172,137,243,226, 20,251,116, 89,131,110, 26,242, 37,155, +155, 65,119,246, 68,172,231, 89,105, 87,241,174,216,227, 94, 13,167,110,227, 51, 85,191, 7,111, 14,135,101,150,153, 16,131, 65, +157,172,176, 36,227,147,164, 52, 33,197, 9, 8,220,127,253, 52,165, 30, 9,220,233,155,253, 50,186,246, 82, 68, 78,136, 13,122, +112, 52,235, 32, 53, 57, 42,154,208,193, 67, 72, 4,141,204, 95, 30, 2,182,124, 65, 46,181,127, 89,181, 42,156, 36,134,104, 51, +253,136,203,229,130,229,176, 32,197,132,211,195, 3, 68, 52,216,227,254,249, 51, 52,138,248,248,225, 35,202,186,234,126,196, 33, + 30,123,129,135,147,156,152,192, 8,184,228,130,121, 6,254,242,111,255,138, 86, 86,172,151, 19,152, 9,143,151, 13, 63,252,240, + 51,158,221,223, 65, 74,195,187,167, 39,220,163, 97,158, 3,214, 75, 70, 45, 21,135,227, 4, 74, 9,235,163,118,246,105,137,104, + 15,130, 82, 11, 40, 48,114,110,104,172, 35,167,178,163, 59,137,104, 39,227, 15, 92,237,254,211, 49, 71, 10,187,209, 43, 7, 70, + 76, 9,107, 51,192,128,141, 81, 7, 90,116, 39, 62, 49,129, 16,139, 62, 68, 13,130,198,130, 41, 69, 28, 14, 51,226,164, 7,194, +195,175,143,248,240,246, 17, 83, 32, 60,123,249, 28,105, 89,240,244,152,251,161,202,205, 5, 38,140,211,233,130, 16, 18, 94,191, +122,137,105, 78,168,151,130,155,116, 64, 61, 63,162,230, 13,185, 21,132, 41, 33, 78, 51,126,252,249,103,252,254,238, 17, 43, 53, +108,155,170,249, 15,243,132,101,158,192, 16, 76,194,184,143,140,135,211, 9,143, 85,176, 50, 41,142, 51, 6,164,121, 65,136, 1, + 83,100,188,122,253, 10,175,190,250, 28, 28, 19, 14,199, 35,226,148,176,149,162, 47,124, 72,102,143, 26,246, 47,208, 24, 39, 59, + 26,146,119, 40,153,230, 30,117,232,225,171, 42, 88,119, 36,212, 49,134, 53,193,150,244,233,206,117,128, 72,223,111,187,229,202, +187, 15, 25,220,125,177, 81,219, 30, 55,203,124,141, 50, 29,133,136,134,194, 48,239,178,175, 59, 60, 71,174,198,157,234, 51,114, +187,154,217, 91,204,106,198, 24, 94,236, 97,133,178, 75, 56, 68,219,233,235,218,166,182, 60,126, 95,179, 13, 9,105,151, 47, 46, +112,219,121,147,119, 40,109, 8,181,126,112, 57, 31,190,203, 17, 76, 91, 80,225, 59, 74, 45,230,157,164,133, 46,230,145,190, 34, +217,181,145, 32,110, 61, 81,177,203, 5,236, 29, 32, 26, 2, 69, 47,112, 84,197, 28, 70,150,188,107, 78,204,162,216,108,255,204, + 52, 46, 35, 21,146,202,136,163,221, 21,107,158,212, 71,228,254, 92,173, 62,244,236, 9,136, 28, 64, 4,108,167,179, 29,174, 26, + 85, 73,136,230, 93,142, 72, 33,162,150,166, 4, 56, 79,186,226, 6, 80, 49,149,177,232, 97,106,170,116,215, 31,244,213,154,141, +166,245,178, 54, 72,139,127,100,165,152, 98, 58,216,202,197,211, 5,205,253,225,184,105,119,122,200,181, 40,209,159,127,125,119, + 58, 98, 73, 69, 87,206,186,104,205, 44, 82,218, 49,170, 88,211, 71,193,216,173,130,134, 88,114, 55,246,234,246, 73, 31,225, 50, +233,196,194,227,135, 71,135, 95, 45, 30,221, 26, 59,177, 29,121,115, 74,224, 96, 68,116, 3, 6,174, 17,206,190,195,183, 97,136, + 77, 54,148,210, 81,188, 0,198,112, 25,176,105,147,154,193,139, 8, 64, 49, 38, 1,251,101,104,227,245, 24, 8,129,109, 90, 96, +232,214, 90,202,184, 67,100, 88, 15, 99, 12, 35,223,221,133,155, 0,162, 93,154, 34, 26,224,149,115, 69,222,114,183,190,134,228, +147,176,102,202,125,250,167, 41,157, 17, 0, 80,125,245, 96, 93, 55, 39, 65,172, 22,130, 37, 5, 19, 77, 72, 97,175,177, 82,119, + 15, 27,219, 97,158,103,117,142,225,220,239,142, 24, 35,114, 46, 56,157,158,240, 74, 94, 90, 14,132, 54, 41,106,195,212,194, 52, +196,136,196, 51, 98,110,197,212,182,187, 42,208, 21,192,208,170,180, 65, 5, 20,190,219,238,176, 10, 75,140,145, 90, 32,134,187, + 99, 27,233,125,252,248,132,187,103,154,208,182,173, 27,164, 54,188,248,252, 37,110,110,239,144,215, 51,158,158, 30,177,109,219, + 0, 47,248,180,117,208, 23,123, 39, 71, 32, 60,157,158,240,197, 55,175,240,249,235, 87, 88, 79, 43,106,222,192,203,132, 55, 63, +126,143,211,233,140, 63,124,126,143, 31,127,121,135,237,124, 1, 79, 51, 90, 21,108,219, 6, 2,227,112,184,193,122, 94, 81,106, +193,237,205, 1,113, 74, 26,103, 26, 25, 18, 2,182, 92, 17,142, 73, 69,123, 80, 85,107,148,134, 41,204, 32,206, 38,182, 40,246, +130, 74,183, 3,105,181,101,221,132, 87,148, 83, 64, 43,140,104,159,105,147, 48, 60,157, 96,128, 90,183,130,232,136, 20,168, 77, +192,161, 97, 10, 1,243,156,112, 88, 18,100, 43,120,247,118,195,246,177, 98, 90, 24,183,207,238, 16,166,132,188,105, 21, 29, 2, +148, 94, 71, 0,167,132, 45, 23, 4, 8,158,223, 29, 48,217,131,113,115, 56,162,254,246, 59,242,233,140,181,173, 72,203,130,229, +120,131, 95,222,188,193,207,111, 62, 32,115, 69,206,250,217,207,115,194, 60,205,106, 59,202, 5,207,227,132,135,243,138, 83, 41, +216,162, 9,182, 34, 99,158, 15,152,150, 25,204,130,175,190,124,133, 47,255,244, 45,230,192, 72,135, 25, 33, 37,228,214, 6,179, +217,129, 24,210,186, 64,112,207,133,110,125,151,214,118, 59, 85, 54,134, 57,131, 17,199,248,154,116,199,214,175, 23, 27,135,246, + 87,108,135,121, 21, 25, 21, 44,217, 14, 28,206,164,111, 35, 10,245,211,131,103,223,165,127,250,207,250,225,212, 6,253, 11,181, +129, 2,153, 90,223,247,217,218,185,168,213, 73,250,248,216,119, 94, 20,120, 12, 51,201,255,191,142,152,229,161,122, 39,205, 74, +102,183, 61, 18, 35,164,104, 22, 38, 86, 3,205,206, 50,197,108,138,124,219,221,161,175,125,120,228,115,219, 13,223,204,231, 75, +163,125, 86,190, 55,121,183,133, 29,119,222, 60,248, 14,158,177, 96, 13, 37,189,169,222,164,143, 87,125,202, 6,165,105,137,137, +158,132, 91, 31,199,235,247, 25,186,199, 30,187,142,189,214,134,148,162,117, 92, 99,133, 98,141,143,174, 61, 40, 2,148,205,215, + 31,245, 98,161, 10, 10,113, 20, 21,118,233, 11, 11,216, 18, 35,137, 53,145,144, 17, 16,172, 91,175,101, 32, 71,165,173,170,134, + 15, 24, 60,123, 23,180,118, 79,178,141,198,113,141, 88,239, 26,164, 90,213, 98,215,244, 66, 31, 23, 53,235,102,201,166,131, 42, +156,211, 11, 59, 24, 36,167,118, 46,127,181,159, 95,221, 19,216, 55, 58, 67,105, 54,158,183, 62, 73, 25,186, 5,236,146,224,135, + 88,115,156,171,157,179,190,203, 60,111,150, 51, 47,109,248,116,154,122,110,205,206,182, 43,136,253,207,223, 21,179,174, 8, 25, +213, 10,250,180, 83,113,193,138,176,245,224,154, 43,251, 92,247,172,155,198, 5, 10,242,146,214,208,136,112,105, 21, 91, 46,170, + 49,161, 1,166,209,204, 12, 49,154, 13,247,162,190,245, 0,157, 1,250, 42,165, 96, 57, 44,154,210,215,154,197,100, 87,112, 99, +164,152,250, 4, 46,176,224,124,190,216,100, 10, 96,210,105, 88, 21, 85,207, 95,119,198,246, 14,120,113,196,232,132,185,200, 46, + 52, 68, 15,104, 18,229,137, 35, 69,182,232, 92,189, 51,107, 19,132,164,246, 53,159, 18, 71, 63, 63,217,186,239,156,241,248,225, + 1,248, 51,174,154,138,214, 44, 85,175, 5,101,173,112, 5, 55, 3,186,244,135,195,126,113,112,209,129,113,156,149,137,172, 66, +129,209,101, 8, 66, 74,125,247, 73, 76, 72, 41,161, 86,193,251,247,239, 16, 99,196, 90, 86, 52,105, 40,107,198,243,103,247, 8, +199,128,167,243, 5,151,135, 71,148, 42, 35,113,113,183,183,236,187, 32, 64,171,171,214, 16,166,132, 47,191,249, 70,131, 20,182, + 13, 32,194,118, 94,241,195, 15,191,224,238,217, 13, 46,219,134,199,119, 79,106, 45,136, 1, 37, 87, 60,157, 51, 98,140,152, 98, +196,229,124, 65, 94, 11,136, 3, 82, 10, 56, 78, 9,105,153,148,193, 91, 27,242,249,210,199, 64,217, 94, 74, 88,148,163, 38,180, +237,119, 87,170,162, 84,117,226,158,245, 62, 97, 58, 44,136, 41,233,168, 40, 70, 85, 47,146,199, 28,180,157,152, 68, 44,160, 69, +109, 66, 33, 48,166, 41, 32, 6,194,249,105,197,239,191, 61,224,233,221,134,120,100,220,220,223,128,195,164, 49,135,202,213, 67, + 46,103, 84,169,136,179, 98,107, 67,173, 72,196, 8,243,132,195, 97,198,171,207, 94,160,126,120,196,211,227, 25,235,118, 70, 72, + 1, 55, 47,110,240,203,111,191,225,135,159,223,160, 82,197,165,168, 24,114,142, 17,199,105,198,148, 2, 40,103,220,134,132, 83, +221,240,176, 93,112,178,106,154, 66,196, 97, 57,224,120,179, 96,158, 19,190,120,245, 10, 95,124,251,149,170,125,205, 78,148, 91, +233,201, 98,212, 19,134,220,246,101, 69, 33,235,133, 84,219, 14, 68,209, 2, 74,110,168,185, 2, 98,226, 20, 11, 35,113, 90,152, +187, 11, 66, 24, 10,112,135,140, 18, 15,225,151, 39,114, 9,174,209,176,218,205,140, 29,158,194,100,106,255, 55,246,153,212, 87, +123,244, 33,198, 75, 41,234,100, 10,130,236,161, 43,125,140,183, 11,206,216, 17, 8,117, 92,187,239, 88,124, 36,238, 30, 89, 64, + 26,117,252,104,103,163,179, 9,254, 68,121, 5,228, 83, 9,242, 76, 0, 71,115,169, 37, 9,187, 80,145,145,247, 29,186, 66, 93, +122,176,138, 71,128,214, 49,209,112,190,184,103,194,211, 14, 10,202,123, 65,209, 78,231,224, 93,243,238,239,231, 69,145, 19,239, +252, 14,148, 54, 62,215, 43, 56,138,217,240,124,239,152,156, 12,230,216, 81,242,245, 91,236, 7,164, 22, 64,220,219, 98, 45,142, +212,121, 35,168,144, 92, 84,195, 83, 11, 2, 8, 85, 10, 90, 46, 64,105,144, 82, 45,126, 84, 47, 96,130,170,224, 69, 42,196,119, +230,173, 1, 85,167, 11,254,125,130, 90,207,247,214,207,143,175, 68,122,176,213,215,240,221, 27, 90, 91,148, 41, 15,169,186, 2, + 48, 15, 30, 25,168,169,138,185, 24,140,247,176, 31, 89,107, 1, 22,122, 78,132,238,192, 45,105,205, 59,205,158, 43,128, 46,242, +218,219,223,246,251,214,235, 21,214,126, 45,228,218,136,218, 87, 55, 87, 65,105,192,213,238,219,167, 38,154,176, 73, 87,191, 54, + 18,129, 59,216,232,138, 14,172, 66, 65,249, 84,172, 39,182, 81, 24,108,148,125,151,175,123,228,134,199, 39, 93, 15,187, 69,140, + 13,208,165,241, 24,193, 70,166, 98, 25, 2,106,117,132,243, 33, 0,108, 89, 27, 8, 7,180, 52,115, 23, 72, 19,112, 98, 68,203, + 66, 15, 70,137, 41, 57,107, 49, 64, 58,213, 9,129, 81,106, 69, 17, 30, 25, 19, 87, 89, 18,131, 1,224,246,229,106, 77, 48, 59, + 36,167,170,198, 63, 26,223, 61,250,218,204,222,239,101, 57, 96, 89, 22, 76,211,108,171, 64,237,208,153, 96, 46, 44, 70, 46, 21, +101, 83,210,165, 59, 39,116,176,204, 86, 92,234, 52, 44, 94, 74, 67, 41, 67, 84,209, 59, 22,210,142,160, 52, 69,180,198, 16,176, +149,140, 32,109,160, 41,161,190,207,188,106, 37, 28, 2, 97, 94,102,156, 63,126,192,186, 22,220,222, 29,177,174, 5,185, 84,112, +138,184,123,118, 7,146,128,243,199,143, 56, 63,124,212,234,213, 70,133, 46,220,184, 74,218, 34,177,240, 2,193,139,151,159,225, +197,231,159,161,228, 77,125,174, 68,248,229,231, 55, 88, 79, 23,188,248,242, 11,188,123,251, 59,182,173, 96, 54, 59, 76,206, 5, + 28,128,101,153,212,184,143,134,105, 94,208,214, 13,145, 9,203,205,130,105,153, 77, 77, 93, 81,214,162,149,157,219, 52, 88,103, + 69,185, 84,148, 98, 7, 82,147,142,254, 99,214,159, 33,128, 81,108, 39, 59, 77, 19,166,101,193,214, 46, 8,107, 64, 16, 61,130, + 26,177,117, 65,214,225, 51, 89,228, 36,161,133, 6, 4, 45, 90, 2, 69, 92,206, 25,231, 83,133, 84,194,124,191, 96, 94,110, 85, + 61, 91, 20, 6,195,108,241,122, 33, 96,185, 81,178,220,227,187,247,184,156, 47,184,191,187,195,221,237, 45,190,122,249, 18,143, +191,189,195,249,227, 71, 60,124,252,136,229,176,224,238,249, 11,252,250,235, 91,252,240,211, 27, 84,142,216,138, 10,134,230, 41, +225, 48, 77, 56,164, 4, 42, 77,115, 0,164,225,105,203, 88, 3,219, 4, 34, 98, 58, 28, 48, 31, 14, 88,150, 25,135,155, 3,158, +127,254, 2,204,193,132,147,214,161, 75,195, 68, 17,125, 21,103, 47,113,171,202,212,223,143,180,225,209,172,230,229,111, 61,205, +194,210,187, 58,132,134, 92,154,211, 21,237, 3,187, 46,125, 71, 62,238, 87,238,251, 45,103, 33,137,119,235, 14, 93,129,238, 89, +251, 52,200, 46,120,247,218,250, 24,111,191,111,220,115,234,251, 10,128, 53, 15,221,185,244,251,168, 93,146,157,145,206,119,250, +172,199, 12,219,222, 85,107, 72,157,242,216,232, 0, 66,101,248, 89,201, 98, 92, 45,122,180,185,253, 13,176,139,162,117,103,128, +126,102,230, 79,234, 93, 63,174,216,225,100,120, 90, 31,181, 75, 87,149, 19, 80, 9, 69,246,159,177,194,110,244, 48,149,221, 37, +189, 23, 47,238,162,177,165,237, 16,168,131,176, 5, 98,115, 21,168, 8, 13,182,210,114,117,184,143,235, 67, 48, 45,135,211,199, +236,189,103,123, 23,251,232,189, 40, 35, 91,189,197,220, 85,227,181, 86, 52,163,163, 81, 19, 48,151,221, 34, 65,212,166,217,209, +192,100,107,142, 33,200, 10,190, 31, 30,161,200,250,231, 85,181,169,181,214, 52,208, 37, 4, 27,213, 82,255,140,155, 99,119,253, + 96,165,206, 51,238, 41,112, 62, 98,214,144, 75,233, 5, 83, 19,117,213,120,226, 29, 59,234,212,139, 41,227,243, 59,105,111,223, + 25, 19, 26,164,238, 34, 68,119, 95, 12, 15,181,163,173, 39,228,234, 98,239,153, 26, 93, 16,167,214, 90, 71, 8,107,182,184,173, + 2,140,161, 31, 2,117,206, 60, 80, 13,166,229,151,179,185,181, 67,210,252,250,254,222,232,223, 59,133,128,205,178, 11,104,247, + 57,215, 42, 87, 49,168, 28,149, 58, 88,106, 70, 35,193,150, 11,242, 38,125, 42,234,107,181, 64,132,200, 90,208, 69,230, 62,146, +111, 6, 67,106,187,223,179, 20,125, 39, 98, 8,104, 85,159, 21,207, 82,143, 41, 98, 58,204, 42,172,139, 17,235, 89, 59, 95,101, +172, 19,226, 20, 33, 80, 56,151, 59, 3, 6, 3, 64, 58,127,159, 92, 51,149, 24,220,180, 64,136, 33,234, 68,134,199,119,144, 66, + 64, 12,186, 18, 82, 62,129,174, 18,167, 20, 49,207, 19, 82,138, 40, 77,179, 8, 66, 8, 54,106,215, 38,164,228,205, 62,163,169, +187, 63,138, 61, 63,129, 2,230,105, 82,167, 85, 46,234,191,228, 30,250, 80,205, 39, 25,117,196, 71,106,199,106,214,209,112,112, + 64,130, 62,112, 20,116,151, 92,136, 84, 13,205,140,199,199, 51,150,105,194,113, 62,224,231,223,222, 33, 23,193,237,253, 29, 62, +255,252, 57,106,206, 56,157,206, 88, 79,167, 94,193,195,189,160, 46, 74,234, 98, 28, 5,160, 76,211,132,249,120, 64,156,103,151, + 8,224,252,120,198,207,223,255,138,219,227, 1,185, 20, 92, 78, 39, 80, 36, 36, 11,204,216,242,134,105, 82,230,238,227,211, 3, + 14,135,103,186,234, 44,250, 34, 56,206,180,214,128,243,233,140,162, 89,107,136, 83, 66, 89, 51,152, 68,125,176,107, 81,207,178, +200, 63, 97, 28,117,220,107, 49,146, 28, 49,207, 9,233,152, 16,114, 70,156,162, 21, 68,150, 71,189,123,200,163, 52, 4, 12,136, + 3,235, 41,143,245, 92,112, 57,101,240, 20, 49,223,207,152,166,131,237, 75,204, 95,217, 42,164, 2,105, 90,112,115,119,196,225, +102,193,251, 55,239,241,254,237, 7, 28, 14, 11, 94,190,184,199, 31,190,248, 18,167,119,239,112,122,255, 30,143, 31,222, 67, 2, +240,226,139,207,240,254,225, 35,190,251,219,143,144, 56, 97,171, 21, 91,221, 48, 69,214, 11,253,112, 0, 89,218, 81, 34,193,135, +203,138, 26, 84,125, 61,165,132, 52, 77,224, 20,112, 56,204, 26,215,122,123,131,105,158, 16, 99, 64, 92,230,190, 58, 9, 28,187, +104,133,105,196,210,178,231, 9, 88,194, 24,172,128, 3, 44,169, 11,142,145, 52,145,161,235,122,237,162, 96, 3,191,184,192, 78, +200,226, 80,157, 58,231, 74,117, 47, 70, 3,237, 56,251,130, 98,240, 15, 14, 42, 64,171,173,129,164,218,158,219,121,228,225, 42, + 3, 29,144,238,151,118,241,146,170,178,119, 54, 45, 26, 86,185,209,137,154,138,159, 26, 40, 72, 23,210, 41,116, 38, 14,114,152, + 91,177,236,231, 80, 10,155,245,109,210,192, 98,162,182,160,201, 98, 38,167,233, 41, 81,221, 74,135,189, 61,167, 89,241,178,219, +149, 90,245,238,118, 57,111,238,106,109,200,101,211, 73,139, 11,171,124,207, 23, 24, 84, 70, 71,214,204,134, 37,159,240,201,135, + 63, 95,139,146,218,196,176,151,250,157, 48, 19, 40,144, 17,225,176,179,204,237, 83,203,164,255,103,191, 28,187, 0, 46,132, 94, + 80,140,131, 51, 24,122, 51,118, 68, 45, 51, 35, 82,236,212, 48,183, 3,138,184, 50,157, 76, 0,172,197, 28, 74,213,100, 45, 10, +218,233, 89,162, 91, 67,237, 65, 33, 26,229,107, 97, 84,117, 36,162,233,223,189,238,166,139, 90,180,214,106,118,224, 96,226, 53, + 49,218,157, 23, 57,181, 1, 84, 13, 75,218, 76,243, 64, 29,117,204, 96, 29,217,119,238,188,244, 38,107, 8, 33,185,115, 20, 70, +130,159,186, 28,212, 10, 70,125, 4,220,187,125, 23,195,237, 73,115, 54,154,222, 51,106,123, 29,226, 43, 38,167,100,217, 14,188, +250,127,183,189,186,230, 60, 40,132,136, 58,201,157,118,110,133,193,103,208,232, 90,163,251,245, 2, 72,208,106,209,188, 17,225, +126, 7, 4,203, 50, 47, 77,167, 37,193,130,130,106,177,207, 41,114,127,119, 82,136,136,193,138,187,160,103, 78,173,122, 94,182, +218, 52, 42,218, 46,117,157, 0, 41,135,164,212,138, 20,212,194, 54,207, 19, 16, 4, 40, 64,152,168,251,223,131, 17, 9,167, 20, +209, 74, 67,169,178, 19,215, 93,163, 50,216, 69,137, 52,226,144, 21,133,158,172,197,176,103,135,217, 70,239,218,189,115, 8, 61, +150,149, 99, 80,134, 61, 49, 10,106, 23, 5, 42, 1,207,178, 68, 90, 5, 73, 49,174, 3, 95, 77, 35, 57, 38, 76,211, 13,138, 84, +196,146,115, 23,180, 88,205,165,169, 79,174, 70,214,229, 45,182,156,193,104, 8, 8, 40,100,202, 73,123, 48,244,160, 72,152,162, +142,130, 63,190,127,192,225,230, 8, 68, 29, 25, 68, 0, 55, 47,110, 17,150, 5,173, 49, 78, 15, 15, 56,157,205,118,230, 35,160, +110,221, 29,190,187, 24, 35,230, 41, 64,234,132,229,230,160,104,199,192,216,106,197,111,191,252,138,199,143,239,113,243,249, 87, +184, 60, 61, 0,141,145, 44,209,108, 45,218, 93,164, 20,177,230,140,181,100,220, 48,237,118,174, 4, 9, 19,150,227, 17,231,167, + 13,231,167, 51,106, 4,210,178, 32, 36,128,182,172,214, 5, 85, 83,217,129, 61,230,236,100,163, 19,167, 7,185,215, 48, 78,201, + 40,108,161,251,139,137, 73, 35, 85, 93, 32,230, 98, 44, 31, 69, 66,119,106,235, 57,163, 93, 42,226, 50, 99, 62, 44,136,105,234, + 41, 72, 33,250,193, 10, 44,243,130,227,241,128,155,219, 5, 31,127,255,128,223,126,250, 5,203,225,128,175,191,124,133,175,191, +122,141,199,223,222,226,241,221,123,156, 30,158, 80,208,240,252,139,215,120,220,206,248,219,247,191,160,133,136, 34,130, 82, 50, + 34, 51,150, 52,225,176,204,122,248, 74,195, 18, 3, 30,214, 11,178,123, 30, 57,128, 99,212,240,156,195,130,195,237, 65,125,144, +243,140, 56, 39,164,121,214,184, 78,216,126,182, 41,114,214, 15, 35,183,238,121,186, 90,171,130,198,181, 35, 45, 71, 90,151, 88, +113,227, 45, 55, 15, 30,154, 83,202,100,140,155,121, 96,204,251,190, 61,152,160, 17, 77,254, 73,224, 54, 14, 87,238, 48, 15,146, +161, 24, 38,251,254,250,116,128,105,135,243, 20, 99,177,219, 72,221,252,245, 94,112, 80,208, 24,196, 79,149,176, 20,163,193, 72, + 6,191, 97,156,163,158,208, 85,245,229,102,199,138, 74,223,211,142,221, 5, 13,150,180,197,196,182,166,194, 72,230, 79, 24,226, +230, 79, 23, 23,197,181,253,248,212, 63, 76,139,135, 69, 86,152, 83, 43,230, 94, 25,214,249,190, 17,187, 26,227,234,142, 79, 47, + 3,234,217,216,110, 63,234,251, 84,247,188,251,247,105, 42, 20, 29,177,143, 14,180,251,178, 69, 16,253,123,180,194,153,254, 23, +207, 53, 58,120, 75, 11, 5, 87,250, 91,236, 74, 47, 44,200,254, 28,229, 72,232,247, 25,231, 25,221,129,232, 16, 30, 1, 66,180, +255,119,136,182,247, 28, 65, 86,204, 4, 50,174, 54,122, 34,158,190, 59,212,253,210, 86,104,214,214, 15,176,189, 99,192,131,116, + 52, 94, 19, 54, 2,166, 1,193, 38, 21, 34, 59, 90,251, 90,233,104,252,244,125,103, 93,180, 80,188, 10,104, 17, 15, 56,218,143, +204,109,172,221,157, 9, 3,141,170, 29,125, 27, 55, 80,195, 88, 17, 57,233, 91, 6,147,189,135,202,216,185,233, 5,184,152,224, + 76, 76, 47, 34, 68,125,133,235,133, 16,197,221, 37,239,230, 6,222,191, 39,227, 17,171, 93, 52, 75, 88,119, 83,135, 20, 76, 55, +208,100,204,139, 76, 63,147, 98,180, 2, 78,250,119, 15,201,182,127, 55,111,127,147, 46,176,109,187,176, 1,105, 90, 56,207,203, +108,132, 79,203, 59,175,213,102, 32,212,241,196,181, 89, 33,213,234,245, 20,103,183,137, 34,179,139,162,234,179,155,194,220, 65, + 88,108, 43, 20,134,130,197,180, 33,208,252,245, 42,202,153,143, 41,128, 67,210, 60, 10, 17, 3,111,185,107, 71,159,155, 42, 5, +181, 65,241,228, 24, 32,158,177,122, 84,216, 89,220,182, 13,213,237, 19,221,114,160,202,214,196, 1, 8,176,177,123,196,226,217, +211,236,222, 91,181,118,132, 24, 32,102,152, 71,171,120,255,240,132,151, 47,158, 35, 48, 33,215,140, 16, 25, 95,188,252, 66,199, +200,149,240,241,221, 71,148,186, 97, 50, 81,140,179,133,189,102, 12, 32,160, 54, 68, 98, 76,105, 66,109, 13,203,205, 81,171,150, +200,120,250,240, 30,111,190,251, 30,211, 28, 64,129,240,112,186,224, 64,132,196,186,151,201,185,130, 99,128, 24,106, 53,236, 52, +189,243, 20,177,214,128,138, 11,106, 46, 40,181, 98,173, 21,136, 42,206, 8, 28, 80, 75, 65, 14,140, 24,210,136, 60,172,186,183, +209,195,138,181, 90,178, 42, 45, 48, 35,164,128,120, 51,129, 26, 33,146,239,126,165, 91, 61, 60,199,184,143,123, 91,211,207, 29, +130,237, 2, 32, 50,230,195,130,180, 36, 16, 71,212, 18, 52,178, 47,160,251,143,231,229,128,233,118,193,243, 23,183,120,120,251, + 27,126,248,251, 79, 72, 49,224,207,127,252, 26,223,124,249, 21, 30,223, 62,224,225,237, 91,156,222, 63, 96, 45, 43, 94,125,253, + 53, 54,102,252,191,255,247, 29,114,141, 40, 66,200, 69,215, 15, 83, 76,184,155, 14,136,129,209,164,224, 48, 77,120,186,104,144, + 11,197,164, 20,167, 73,215, 19,105, 74,184,187,187, 3,197,128,152, 18,142,119,183,152,142, 71,240, 52,171, 47, 25,128, 20, 25, + 7, 17,128, 98, 66, 28,233,202,102, 27,111, 82, 83, 18,157,240, 96, 19,128, 59,158, 51,198, 48, 64, 13,204,182, 63,166, 78, 38, +243,180, 40,120, 55,181,139,168,148, 42, 59, 70,247,232,156, 73, 70, 62, 14, 3, 16, 14,138,102, 13,193,239, 57, 85,252, 6,197, +141,106,103, 80, 77, 53,223,174,176,153,173,234,190,212,119,154, 21, 98,107,145,216, 71,237,193, 19,219,200,125,232,102,213,106, + 74,162, 11, 59,250, 92,136, 1, 20, 20, 82,209, 74, 53,229,179, 97, 67, 91,129, 52,237,136,200,172,127, 12,178,201, 17, 84, 56, +103, 72, 86,118, 76, 40, 73, 15, 76,161,238,151,180,203,167,169, 0,203, 53,249, 76, 30, 12, 99, 73, 79,212,239,107,140,220,182, +182,235, 74, 76,217, 47, 29, 1,105,214, 51, 61,188, 32, 21, 26, 71,104,205,129, 24, 74, 25,187,108,120, 25,121,211,186, 87, 24, + 81,165,159,162,112, 7,230,180, 89,126, 55,117,244,108,237, 9,101, 26, 60,235,218, 31,142,161,219, 23,115,182,238, 47, 37,245, +232,187,248, 77,188, 32,242,184, 76, 79, 53,211,140,234,152, 8, 44,220,147,190,200,166, 21,128,244,233,129,127,158, 99,165, 42, +221,186, 8,195,198,238, 3, 80, 68,154,178,223,131,185,189, 13, 53,123,173,163, 30,235, 34, 31,167,147, 71,185, 82,235,207,163, + 79, 9,125,167,203, 38,100, 35,218, 87,120, 24, 10,239, 98,127, 14,201, 21, 24,199,181, 46,253,215,182, 81,220,117, 61,160, 12, + 40, 88,179, 85,131,199, 65, 51,116,239, 92,199, 28, 65,233,115,196, 29, 28, 83, 76, 20, 75, 8,157,219,175, 59,102,203, 87,104, + 13, 66,213,126,126,117, 12, 85,115,142, 56, 65, 48,144,234, 9,246, 86,205, 72,218,241,250,109, 21, 72,113,213,167,156,113, 94, + 21, 72, 70,162,231, 70,173, 43, 82,154,193, 70,138,243, 4, 72, 10,192,178,204,104,210, 84, 44, 7, 66, 46,254,198,219,100,143, + 8,155,197,103,251,251, 48,156, 30,220, 19,247,186,109,185, 53, 48, 53, 4,182, 46,221, 4,166, 45,171,120, 52, 37,107, 64, 44, +183,161, 65,144,162,250,219,131,185,133,132, 24,136, 9, 21,132,104,250, 48, 45,136,245,210,102, 14,154, 24, 72,140, 64,186, 78, + 10,162, 77,108,190, 92, 16,115, 45, 35,105,137, 20,165,231, 22,156, 37,205,200,109,195,150, 51, 38,195, 51, 22,114, 8, 22, 43, +199,153, 0, 14, 19,230, 24, 48, 45, 51,206,219,134, 42, 27, 14,135, 25, 37,107, 69, 28,231, 5,183,183, 71, 44,145,241,225,225, + 9, 31, 30, 63,104,142,237,126, 66,208,170,118, 14, 58,107, 64, 36,210,139,229,144,144, 46, 23, 28, 22, 29,191,183,188,225,237, + 63,126,193,195,233, 9,247,175, 62,199,227,227, 3,182,203, 25, 55, 83, 66,108,140, 86, 11, 96,118,130, 92, 50,168, 22, 28, 38, +237, 6, 99, 12, 72,203,132,144,207,192,198,248,240,254, 1,155, 48,230,227,140, 44,222,181, 0,144, 12,105, 12,132,180,131, 53, +216,120,151,199, 67, 69, 54, 94, 39, 14,136, 49, 34,197,197, 98, 98,181,203,149,102,178, 93,177,174,159,204, 30,199, 77, 69,111, + 34, 96,139,187, 13,199, 5,113, 94, 64, 20,141,105,157, 77,180, 97,202,200,101,198,225, 56,227,197,109,196,249,227, 71,252,253, + 63,126,134, 72,195, 95,254,245, 47,248,230,171, 87, 56, 63, 62,226,225,247,183, 56, 61, 60,226,148, 47,248,236,243,151,168, 9, +248,143,255,248, 79,172,155, 34, 77, 75,217, 16,152, 48,133,136,155,121,194,178, 36,180, 90, 49,135,136,117,219,240, 80, 50,132, + 24,115, 74,224,121, 70, 12, 1, 83, 0,158, 63,127,129,120, 88,176,173, 27, 62,123,118,139,195,113, 54,139,149,236,124,247,205, + 2,146,162,190, 20,141,108,119, 43,125, 87,217, 88, 16,144,140, 76,101,157,233,174,221,100,142, 29, 61, 67,246, 12, 32,232, 14, +182,149, 58, 2, 47, 48,160, 40,204,174, 6, 85, 6,248, 62,161,170, 83,210,122,248,135,118, 84,145, 89,153,222,158,105,224, 54, + 20,139,127,116,200,135,239, 81,181,219,110, 64,136, 26, 43, 26,147,161, 79,205,147,108, 99, 93, 54,144,135, 66, 88,184, 11,227, +252,103, 8,213, 56,112,100,104, 86,231,166, 27, 30, 54,216,206, 91,209,149,163,209,238, 23,137,104, 33, 72, 49,244, 67,197,247, +217,166, 13, 82,139,101,231,231,123,206,188,237,114,253,239,101, 42,246,144,162, 42,155, 75,247, 91,218,129,183, 11,103,114, 63, + 52, 90, 39,203, 57,255,190,106, 48,243, 46,212, 6,215,188,114,208, 46,123,222,186, 21, 17, 8, 34,216,104, 91, 93,128,183,235, +111,187,239,191,162,251,249, 41, 66,245, 29, 32, 35, 2,234,251, 8,138, 74,226, 34, 77,237,227,104, 63, 75, 8, 6,172,105, 38, +162,227,193,154,183,239, 94,215, 58,134,216, 4,208,178,146,230, 16,175, 65, 68,210,174, 11, 59,189, 44, 91,207, 62,191,102,173, +239,130, 88,108,212,222,120,156,175,161,237,112,169,181,234,119, 97,158, 58,247,222, 55, 43, 90,221,226,213, 90,181, 70,106,124, + 76,173,209,206, 81,128, 46, 46,116,134,122,221,197,174, 58,147, 30, 77,140, 55,194,134, 35,214,113,180, 23,109, 30,216,130, 62, +117, 98,195,146,198,225, 82, 18,178, 75,244,122, 82,235, 54, 68,246, 81, 15, 25, 76, 69,160, 65, 59,141,174,163,129, 77, 44, 40, +238,182,106,210, 67,148, 80, 27,216,132,178, 49,250,132, 40, 43, 0,166, 89, 31,205,102,243,100, 70,224,136,104,211,181,203,150, + 81, 1,204, 4, 84,169,200,165,129, 36,140,253,191, 21, 82, 69,128,155,121,193, 60,235,165, 30, 66, 80,152, 90,173, 61, 53,146, +195,100,234,242,114,101, 47,220, 79,143,156,110, 39,213, 96,105, 36,224,160, 80, 46, 45, 88, 9,145, 68,215, 9,139,169,226, 27, + 84, 95, 99, 43,161, 24, 35, 98, 76, 72, 41,129, 98, 64, 48,189, 75, 45,205, 50, 17, 10, 2, 17,110,166, 3,164,149,254,156, 69, +102, 43, 75,109,250, 11, 70,205, 5, 92, 74,233,208, 1,199,178,122, 0, 64,138, 17, 37, 23, 85, 53,183,106, 99, 18,116,143,160, + 86,196, 6, 35,153, 34, 82,140, 56, 61,157, 64,204, 72, 41,160,214,134, 72,192,237,253, 17,105,158, 65, 33,225,227,199,247, 40, +231, 51,144,102,179, 88,140, 17, 82,109, 21, 82,138,170,184, 67, 64,156, 34, 32,192,124,115,139,180,204, 0, 51,126,255,233, 55, +188,249,251,247,152,142, 11, 98, 10,120, 56, 61,170,240,128, 24,213, 90,177,101, 89, 64, 68,216,114,214,131, 78,244,241,156,231, + 4, 78,218,193, 83, 21,252,250,235, 91, 92,107,129,196,165, 0, 0, 32, 0, 73, 68, 65, 84,114, 70,156,102, 68,138, 40,155, 6, +208, 48, 71,165, 44,237,132, 64, 61, 23,152, 25, 81, 29,175,195, 43,206,100,118, 35,233, 80, 6, 31, 59,145,120,174,207,128,168, + 52,239,160,154,118,173,233,184, 96,138, 11, 4, 19, 74, 83, 33, 19,219,232, 55,196,136,101,154,112,115,156,113,115, 51,227,116, +190,224,239,255,253, 3,206,219, 5,127,253,243,183,248,211, 31,191,197,211,186,225,227,219,247,120,122,120, 68,121, 58,225,217, +171,207, 48,221, 31,240,223,255,245, 29,158, 30, 10, 16, 2,214,124,177,151, 36,225,144, 34,150,121,209,203,135,117,116,250,148, + 87,173, 26,231, 9,241,176, 32, 26, 68,232,249,203, 47,240,252,213,103,200,151,134,251,231,247,120,241,217, 75,101,113,123,242, + 81, 41, 40,101,179, 46, 66,201,253,110,229,169,230,247,173, 54, 46, 14, 28,109,245,224,163,197,112,229, 13,223,251,105, 83, 74, +152,166, 5,137,146,205,110,248,147,151,201, 21,242,123,208, 12, 13,178, 23,112,181, 87,239, 35,108,178, 9,139,237, 22, 9,154, + 93,172, 40, 85, 40,167,128, 9, 48,197, 53, 55,221,175,161,169, 75,130,153, 16, 98, 2,219,154, 37,116,255,181,141,126,237,191, +215, 90, 59,192,165, 86, 69,202,170,154,149,255, 41, 30,179,153,101,202,250,131,254,119,245,203,251,106,242,208, 87, 63,122,209, + 42, 36, 69,174,126, 63,241, 21, 3, 73, 63,232,101, 23, 89,171,158,120,189,212,187, 77,206, 62, 31, 88, 40,147,240, 46, 27,222, +236, 78, 16,182,253, 40, 58,130,214,187,226,253,159,239,227, 87, 49,172,166,119,175,123, 93,138,167,145, 48,209,142,245, 46, 87, +164, 62,218,229,219,247,252,119,203, 85,247,160, 31,117,161,112,239, 92,155, 21,218, 28,212,137, 51,207, 75, 15, 1,106,194, 22, + 20,227,209,183,165,131,111,164,212,142,166, 29, 33, 56, 59,177,191, 23, 39, 50,252,247,212, 4, 82, 85, 81,143,118,253, 29,184, + 0, 16, 70,155,140, 59, 45,130,243, 64, 58, 68,201,178, 26, 26, 10, 64, 5, 44,138,176,133,113,250,149, 88,233,194,185,177,184, +237,159, 7, 93, 91,172,252, 95,253,153,105, 58,234, 21,155,176, 40,247, 95,245, 27,254,185,245, 24,217, 54,240,181, 3,174, 72, +125, 71, 46,173, 90, 97, 38,154, 93, 1, 66, 4, 43,145,207,181, 18,254,188,209,238, 59,228,157, 6,131,232,170, 64,218,255,187, +213, 97,215, 59, 76, 19,102, 11, 28, 99, 18,204,129, 53, 79,220, 86, 44,238, 44, 82, 29,136, 42,193, 47,167,162,239,170,213,253, +181, 20,163, 2, 74, 71,146,131, 26, 90,174, 72,243,100, 26, 8, 29,129,151,173,154, 93,123,172,187,244, 82,199,152, 98,203, 39, +148, 73, 47,182, 2,141,100,198, 24,245,130,118,246, 97, 21, 16, 85,204,209,245, 62,176, 50, 73,211, 79,167,168,174, 26, 29,183, + 19, 82,156, 65, 8,102, 85,211,213, 72, 21, 1, 79,170, 35,209,252,119, 35, 8,152, 43, 38,132,128,117, 91, 81, 75, 65,244,238, +199,247,195,186,207, 84,165, 99, 49,229, 38,193,194,228,125, 7, 70,116, 5,133, 16, 2,166,105, 66, 8,132,117,205, 54,202,208, + 95,114,123,123,211,173,111, 2,193,229,227, 3, 74,190,104,248, 68,219, 1, 39,197, 59, 62, 19, 65,196,128,144, 18,106,107,184, +189,191,193,124, 60,226,114, 57,227,135,239,254,129, 82, 11,142,135, 91, 92,158,206,104,185, 42,108, 34,168,104, 35,133,128, 52, + 69,108,143,151,238,163,159,162, 96, 94, 52,238,181, 20, 5,204,172, 91,214, 10, 44, 55,196,201, 70, 94, 86,245,164, 20,116,143, + 66, 35, 29, 12,205,198, 76,212,224,110, 14, 5, 46, 40, 57, 42,164,212, 65, 30,100, 85,115, 16,173, 60,187,208,129,236,129,169, +118, 48, 6,198,180, 28, 16,211,162, 15, 97, 94,117,231, 22,128, 22, 26, 98, 92, 48,165,128,233, 38,225,112, 32,212,203, 3,126, +254,241, 3, 30, 62,158,241,199, 63,126,137,191,252,245, 79,216, 78, 23, 60,254,250, 59,206,239, 31, 81, 78,103, 28, 63,127,137, +105, 57,226, 63,255,235, 7,252,252,246, 35, 14,135, 35,182, 90, 84,157,159,162, 6, 6, 76,179,117,184,170,168, 62,175, 43, 26, +128, 52,205,136,135, 5,147,193, 57,158,191,122,137, 87, 95,191,198,135,143, 31, 48, 79, 1,207,190,120, 6, 49,216,129, 91,126, +202,150,141,120, 59,118,119, 14,234,113,221, 0,153,152,133,193,230,130, 9,112,134,238,232,159,198,174, 41,118, 37,180,142,234, +208, 47,180, 8,219,124,247, 68,175,110,149, 3,122,183,172,158,221, 93,215, 4,181,176,120,238, 58,153, 31,184, 7,188,176,177, +248,199,162, 87,161, 40,173,161, 72, 85,101, 52,252,249, 24,239,138,212,177, 94, 24, 29, 90,187,198,218, 98,100, 69,139,141,174, +155,231, 58, 91, 23,136,221,132, 97,196, 89, 50, 58,199,198,236, 80, 74,219,163,110,107,242,203, 62, 70,127,111,201,124,238,212, +199,180,109, 79,184,219,141,117,221,186,170, 53,186, 25,222, 56, 24,220,164,117, 58,217, 80,180,155, 73,200,104,104,109,191,199, + 37,135,234,132,127, 86, 17,185, 72,172,235, 6,184,235, 5,250, 69, 73,181, 59,112,174,166, 43, 50, 98, 90, 73,118,196, 48,163, +227,249,206,179,245, 16, 93,143,205,181,253,108, 12,187,212, 61, 70,206, 85, 39, 34,193,139,136,170, 66,173,238, 32, 80,120,150, + 96,104, 33,122, 42, 27, 13, 95,119,159, 48, 50, 1,141, 81, 90,237,235,150,161,211,208, 98, 86, 53, 66,154,246, 23,154, 99,117, + 13, 55, 45, 13,108,168, 86,245,112,107,241, 55,118,241, 54, 86, 22, 93, 45,233,175,106, 87,123,246,174, 31,161,107, 6, 60,253, + 47,207,228,192,203,114, 47, 38, 58,209,111, 15,191, 33,111, 98,168,103,213,139,140,231, 97,143,221,237, 2, 59, 18,115, 9, 40, +156, 72,237,190,186,174,213, 2,119,231, 71,103, 61, 3, 53,176,145, 17,132,123,234, 96, 35,157, 2,207,147, 10,199,136, 3, 18, +105, 65,124,146,172, 48, 24,182,245, 38,239, 4,174, 28,208,202,134,167,167, 83,127, 14,155,241, 34, 92, 88,182,143,194,109, 44, + 88,142, 11, 4,218,165, 83, 32,163, 14,142, 52,200, 0,160,116,132, 57, 15,188,119,191,144,141,195, 97,239,108,181,220,249, 24, + 39, 76, 83,236,162, 64,231,110,133,168,247, 69,240, 9, 72,107,192,164,231,114,163, 8, 72, 64,224,104,226,190, 77, 27, 76, 91, +181, 20, 17,204,199,163,230,162,180,210,249, 27,100, 68,211,128, 17,163, 27, 1, 21, 9, 85,170,157,172,228,202, 94, 87,125,163, + 35, 82, 27,164, 51,132, 25,204, 13,197, 44, 10,243, 60, 89,214,120,193, 97,158, 59,136,225,217,221, 45,242,182,169,229, 70, 8, + 31,223,189, 67,109,176,253, 55,153, 44, 15, 26, 61,186, 19,103,204,203,226,217,176, 88,142, 71, 16, 19,222,124,255, 51, 62,188, +125,135,105, 86,197,245,118,186, 32, 65, 61,209,218,185, 20, 37,158, 25, 58,144,109,239,178,204, 11, 14,203, 2, 98, 21,250,108, +165,216, 56, 60, 98, 91, 87,101,222,179,118, 40, 33, 48,184, 5,180,213, 81, 92, 46,128,145,222, 29,120, 80,131,238,211, 53,164, + 37, 37,173,162,136,117,188,167,163, 84,181, 14, 49, 93, 7, 86, 40, 43, 57, 98,154, 39,164, 52,155, 39,211, 66, 2, 96, 29, 98, +136,136, 41, 96,185, 73, 72,145,240,116, 90,241,248,246, 1,239,126,125,139, 87, 95,188,198,191,252,235,191,160, 20,205,146,127, +122,255,128,211,211, 19,158,189,252, 12,135,251, 59,252,215,119,127,195,143,191,188,197,124, 60, 32,183,134, 64, 74, 42, 98,105, +152, 56, 24,103, 91,223,224, 53,103,108,230, 53, 15,135, 5,243, 52, 97, 9, 1,207, 95,191,196,231,175, 95, 99,221, 52, 9,235, +254,229, 51,196, 56,161,212,166,137, 73, 61, 7,188,117,241,161, 95,244, 74,116,210, 10,159, 41, 96, 74,169,139, 83,164,139, 6, +197, 42,109, 87,102, 13,187, 81, 35, 61, 72, 72, 44,255, 73, 44,229, 74, 21, 50,104, 82, 70,204,103,183,174,216,222,137,130, 93, +236, 21,165, 20,228,172,209,181, 77,170,146,205, 44, 42, 86,204, 18, 70,113, 40,141, 53,206,177,245,223, 75,160,246, 22,112, 0, + 71, 30,126,208, 62,230,212,149, 74,224, 17, 87,220,233,115,174, 74,237,248,202,113,209,178,141, 50,105,119, 0,235,120,123,192, +111,196, 10,200,214,134, 24,211, 89,213,186, 91,108,187, 40,203,225,233,211, 64, 28,250, 39,223,125,207, 32,223,231, 72,187,149, +137,172, 27, 99,218,145,245, 8, 18, 24,181,177,237, 5, 13,148,179, 11,148,241,201, 19,219,138,105, 72,115,124,117,161,239,193, +158, 60, 87, 91, 83,112,146,237,131,155, 40,136,197, 47, 29, 63,200, 58,207,221,243,217,141, 44,201,104, 40,238, 85, 14,161,219, + 16,253,210,232,121,217, 80,129, 19, 44,201,203, 83,209, 26,154, 77,227, 70, 68,236,222,115, 60, 44,121, 54, 97,177, 61,186, 39, +183,193, 32, 56,123,254,125,109,173,255,111, 26, 66, 51,120,231,188,139, 48, 17,195,204,142,194,183,130,105,232,227,164,239,236, +113,141, 42, 38,116,247,136,174, 2,168,255,186,125,183,235, 20,191, 94,116, 16,118,251,119,190, 78,112,235, 89, 7,237, 74,109, + 73,178,191,228,229,147,243, 15, 59,107,222,128,219,200,222,206,105,247,200, 8, 15,218, 97,102,101,151, 5, 64, 99, 29,230,191, +175,152, 78, 34,197,128,105, 74,136,172,116,192, 24, 20,210, 21, 91, 67, 22, 1,170,174,228, 70,192,142,138,201, 30,159, 54, 92, + 46, 21,203,141,102,144,139,173, 63, 60,229, 15, 59,203,105,136, 17, 55,183,183,168,173, 97,154, 39,136,136,157, 21,106,137, 12, +150, 48,168, 12,139,113,255, 93, 5,230, 88, 51,220,106,219, 77,203,168,231,142, 56, 60,205, 5,165, 49,170, 37,217, 69,171, 2, + 82,138,231,113,198,211,217,237,126,250, 61,229,178,170,174, 45, 90,113, 16, 24,243, 50, 67, 88,144,107, 53,136, 14, 16,146,106, +147, 66, 76, 90,137,213, 58,158, 57, 87,108,251, 3, 85,237,133,231,192, 93,230,167,114,255, 17,226,187,135,123,184, 65,191,214, +138,227,114, 80, 4, 99,107,120,118,123,139,217,254,146,121,219,240,241,247,223, 48,197,212,169, 94,210, 81,160,182, 79,106,181, +115,213,107,171, 56, 28,143, 56, 62,187,197,122, 58,225,111,255,253, 29, 2,116,127, 93,214, 77, 67, 76,250, 75,172,163,161, 20, +244, 48, 98,179, 4,196,168,157,123,154, 82,215,247,104, 16, 73, 68, 41,122, 1, 93,206, 39,172,235, 10,105,192,180, 36,132, 52, +245,189,217,158, 63, 29,108,204, 68,226,156,105,182, 0,155,176,131, 81, 48, 82, 4,106,222,128, 43,225, 78,233, 57,192, 33, 6, + 76,203,130,148,102,212, 38, 40, 89,163, 26, 21,167,169,214,150, 20, 35, 14,139,122,133,215,211, 25,143,239, 30,240,219, 47,239, +240,252,238, 6,255,231,223,254, 12, 22,224,221,111,239,240,248,241, 17, 15, 15, 31,113,251,226, 25,142, 47,158,227,127,254,254, + 15,252,240,230, 55,164,121,210,238, 3,140, 37, 37,213, 40, 16, 89,146,153, 86,148,185, 86,172,185, 0, 28, 48, 31, 14,152,230, + 9,135,121,194,203, 47, 95,225,197,235,151, 16, 18,172,219,138,229,120,196,205,243, 27,179,111,208,110, 44,165,233,107,128, 34, +130,153,117,140, 45, 54,177,240, 49,241,136,137,108,150,112,103, 65, 47,130, 14, 2,169, 37,119,219,100, 41, 5,173, 20, 29, 75, +219,139, 94,107, 53,219, 14, 16, 67,234, 42,103,223,169, 67,254, 25, 26, 83,204,174,217,109, 82, 59,190, 66,175,215,196,226, 50, +101,247, 76, 59, 1,206,199,135, 49, 34,164, 89, 3, 86,236,197, 11, 20,236,178,208,124,101,241,151,201,126,159, 49,206, 70,223, +135,251,228, 40, 96, 40,167,199,103, 52, 78,112, 7,173,180,162,157,100,171,109, 88,146,154,244, 34, 70,236, 51, 38, 26, 32, 11, +197,137,211,232, 40, 33, 3,151,251,201,129,180,183,198,233,120, 82,122,148, 44,119,196,215, 40, 16, 92, 5,236, 28, 11,124,146, +187, 61,216,243,215,187,229,225,113,167, 46,222,114, 49,224,222, 79, 63,138, 23, 26,112, 21,241,188,119, 82, 53,117, 96, 21, 83, + 6,135,209,140,105,137,195, 67,252,103,247,169, 31, 89,138,156,255,239, 98,187,106, 17,218, 37,249, 82,183,237, 57,133,204, 59, + 89,231, 33,136, 40,153,108,255,239, 1, 32, 26,122, 3,218, 41,245,101,119, 97, 85,119, 67, 52,253,253, 34, 13,251, 27,174,146, +242,208,163, 76,193, 52,242, 81, 72,119,201,159, 66,146,122,238,252, 46,152,200,173,153,190,190,216, 55, 21,170, 5,104, 86, 72, +238, 32,105,114, 29,215,227,133,179, 10,216,118,176, 29,215,130,208,152,186,104,238,133, 95,242,228,146, 50, 43,130,121,104, 58, +118,246, 75,223,167, 19, 84, 5, 94,204,181, 20, 2,171, 93,141,157, 46, 57, 28, 71,190,202,113, 13, 1, 58, 76, 10,120,124, 92, + 85,115,210,179, 25,180, 8,230,206,106, 31, 60,150,195,113,193,188, 76,246,190, 48,242,154, 33, 69, 69,166, 97,231,239, 31, 24, +232,235, 48, 35,159,122, 48, 15, 80, 26, 12, 96, 19, 99, 26,249,235,164,240,162, 24,212, 30,215,133,130, 2, 20, 91,201,133, 48, +219, 59, 28, 16,130,122,208, 91, 85,235, 26,199,136,144,130,226,189,163, 70, 97,251,153,230,132,187,158,213, 82,205,101, 50,126, + 94,245, 18, 70, 26, 7, 54, 44, 21,167,211,177,170, 86,137, 34,232,163, 47,152, 76, 63, 68,214,139,209,170,213,117,213, 7,254, +217,221,173,238, 32,167,132,203,233, 9,235,227,166, 81,127, 78, 82,130,138, 34, 98, 84, 28,159, 56, 16, 65,212,199, 55, 31, 22, + 76, 41,225,251,191,125,143,247,191,189, 71,152, 21, 74,145,207,151,238,113,101, 81,235, 66, 43, 13, 83, 74,224,121, 2, 88, 20, +242,194, 1,211,113, 6, 72, 69, 70,211,116,192,241,112, 68,136, 9,231, 83,197,249,124, 65,173, 13,219,186,226,114,217, 80, 10, + 97, 57, 46,230,105,214,159, 37, 55,115,132,146, 81,147,172, 42,246,249,104,140, 81,199, 31, 85, 31,210,117,205,104,181, 32,197, +164,106,122, 35, 53,165, 16,144,230,164,160,153,192, 26, 23,185,173,246,224,113, 7,112, 76, 49, 98, 78, 0, 33, 35,159, 46,168, +107,193,195,239, 15,184,153,102,252,235,255,253, 55,196, 57,226,227,187,247, 88, 63, 92,240,240,254, 17, 55,207,159,225,230,197, + 11,252,207,223,254,129,191,255,248, 11, 66,156, 77,213, 45, 56, 76,179,122,113, 91,211,221, 87,208, 19,162,244, 11,157, 49,223, + 28, 48, 77, 9,199,153,241,242,243,207,240,217, 87,175,145,226,132, 92, 10,114,201, 56,222, 29,109, 12, 56,118,211,210,170,138, + 18, 69, 61,160, 26, 7,232,246,151, 29, 16,163, 9,106,206,200,219,182,139,153, 36,248,217, 95,107,189,122,201,217, 20, 82,253, +224,204, 14,216,216, 17,173, 68,237, 39,106,147,211,159, 67, 15,222, 48, 78, 39,123,193,166, 52,245,241,121,255,206,196, 70,194, +150,185,173, 54, 22,244,192, 29,213, 10, 84, 11, 20,210,125, 23, 40, 88,144, 72,208,189,159, 42,117,244,239,144, 11,234, 86,144, + 87,205,231,238, 99,185,214,180,139, 51, 63,150, 42,231, 91, 31,123, 19,211, 21, 61, 77,174, 40, 85,134,131,149,138, 86,178,117, + 3,238,200,170,253,100,225,224,234,122,116, 48,146,236,188,222, 96,238,145,165, 87,185, 10,178, 11, 58,150,129,106, 22, 59,172, + 59,176,196,221, 5, 59,118,188,142,100,135, 8,203,209,209,251,232,120,182,248,218,190,171,197,160,140, 57,119,191,181,138,108, + 23,227,126,175, 26,236,103,246,184,211,224, 35,112, 11, 21,231, 29, 9,175,115,231, 3,239, 46, 12,253, 53, 1,187,159, 61,120, +146,159,185, 26,140,168,135,125,208,146, 11,148,170,137,102,247, 65, 78,173,162, 90,250,215, 16, 98,106,209, 29, 3, 15,186, 97, + 19, 21,117,214,214, 35,118,247, 99,113,105,227,146,135,157,163,254,161,244, 14, 25,163,203,237,191,206,104,138,154, 24, 55,182, + 27,221,145, 46,109, 23,244,226, 46,130,182,235,186,219,149, 16,209, 47, 6,222, 37,197,117, 7, 5, 62, 33,211,185, 37,194,241, +198,221,182,122,205, 65, 39,187, 92, 53,194,182,237, 98, 87,101,100,209, 96, 76, 63,221,166, 75, 76,200,181,162, 88,152, 88, 52, +232, 10,184,107,139,117,253,213, 87, 87,114,149, 29, 65,204,120, 58,101,156, 62,174,218, 92,216,243, 93, 60,217,144,168, 67,111, +244,223, 13,199,155, 69,167,129,172, 13,105,222,242,136,106,118, 99, 97, 27,161, 47,236, 98, 62,217,135, 48,233,154, 78,255, 74, +212,133,179,105, 74,131, 21, 97,159, 65, 10, 64, 12,232, 69, 68, 35, 93,153,196, 20,205, 94,171, 33, 86,243,188,160,201,134,243, +249,178,211,102,145, 21, 11,154,104,234, 9, 71,101,219, 64, 34,253,125,240,115, 44, 54,214,160, 1,183,106, 97,247, 15,197,226, +227, 92,197, 89,131, 50,138,197,230, 52,110,213,137, 81, 71,197,143,143, 23, 83,225, 1,151,245,132,210, 26,238,110,110,240,225, +240,128, 16, 34,222,124,124,196, 41, 63, 97, 90, 22,235, 21,117,215, 22, 83, 64,136,138, 84,172,173, 34,215, 2,212,134,187,251, +123, 28,110,110,112,121, 56,225,151,255,250, 59,146,237, 81, 90,222, 80,242,138,184, 44,250,187, 16,144,107, 65,171, 43,142,203, +140,144, 98,255,181, 20, 2,230,152,208, 74,213, 25,127, 10,192, 69, 15,149,199,243, 25, 11, 8,199,229, 0, 1,225,116, 94,113, +179,108,184,155,143,152,150, 3,206,151, 51, 24,132,137, 25, 23, 84,125,152, 72,173,217, 1,132,100,182, 40, 50,251, 28, 53, 96, +219, 86,148, 90, 77,209,216,144,115, 54,203, 91, 66,140, 90,169, 5, 48,114, 85, 60,111, 98, 69, 0, 34, 68, 80, 72, 8,161, 98, + 78, 5, 4,198,118, 41, 64, 3,182, 83, 65, 20,198,159,255,229,175, 56,222, 29,240,240,251, 3,206, 15, 23, 60,188,125,135,155, +231,119,120,254,234, 37,190,255,199, 79,248,238,167,159,144,210,100,188,124, 96, 49,198,125, 43, 21,144,166, 83,136, 16,176, 1, +216,234, 6, 33,198,116, 92,144,150, 9,203, 28,241,234,243,215,248,242, 15,223, 96, 45, 5, 13,130, 75,222, 48, 29,149, 34,215, +170, 90, 23,153,213, 97, 80,179, 10,180, 82, 74, 8, 97,178,228, 50, 43, 6, 45, 62,195,247,210,125, 92,109,212, 51,118, 13,135, +143, 57,115, 70,176,233, 68, 12, 81,187,127, 27,223,249,197,184,199,174, 86,169,187, 28, 65,205, 60,231, 96,164, 56,139, 21,117, + 56,133,143, 69,155, 19, 1,221, 79,106,151, 41, 39,237,186, 9,164, 98,165,210, 76,200,103, 2,163, 24, 76, 48, 38,190,104, 68, +105,162,214, 21,102,144,249,188, 61, 89,172, 51,202,173,187,132, 77, 19, 36, 23,181, 0,217,244, 39,196, 56, 98, 84, 5,136, 20, +213,227,223,109, 81, 13,149, 70,128,205,245, 94,220,160, 50,221, 89,224,137, 91,108, 97, 65, 78, 59, 83,101,186,163,116, 75,173, +118,161,183,190, 26,104,187,224,143, 61,124,167, 23, 92,142, 37,197, 0, 46,245,233,179, 17,226,250, 72,217, 92, 9,194,116,181, +207,143,209,254, 78, 82, 32,136,166,252,109,198, 50, 81,106,161, 7,189, 0,172,160, 19,210,189, 44,177, 22,191,132,134, 16, 38, + 85,100, 75, 53,198, 61, 13,254, 57,211,224,250,203,216,103,179, 99, 80,141, 45,224, 42,237,102,214, 35,236, 24,243, 29, 56, 67, +212,197, 88,213,220, 44,112, 65, 86, 15,165,177,239,181,212,206,176,104,173,161,126,146,213,125, 45,116, 84,113,218,136,182,182, +207,181,217,106, 83,212, 46,204,230, 85, 38,132, 49, 45, 49,104,144, 72,222, 53,142,195, 94,133,189, 90,127, 47,234,130,158, 37, +108,105,147, 34, 46,168, 99, 27,119,203,248,236,233,186, 35,173,197,117, 39,166,241, 86,179,129,197,133,182,254,255, 23,155,240, +184, 48,144, 96,171,156, 29,217, 80,164, 42,118,181, 23, 48, 50,210,219, 10,161,212, 81,220, 5,243,161, 7, 75, 98, 19,115, 15, +120, 66, 33, 27, 35,133,125,162, 4,224,178, 21, 60,158, 54, 76, 11, 27,126, 91,163,158, 99, 48, 72, 26, 41,114, 58, 52,128,227, +140,101, 57, 66,154,190,135,144,136, 82, 76,226,197,131,182, 87, 81, 71,250, 51,253,111,227,119,179,118, 51,245,169, 16,135, 73, +155, 54,118, 95, 32, 33,116,112,143, 10,254,244, 41, 3, 8, 21, 28,180, 83,143, 97,181, 38, 36, 65, 74,195,182,109,136, 86,140, +232,107, 28, 17, 34, 97,107,130, 92,172, 40,170, 38,208, 76, 10,241, 42,230,226,136,213, 70, 32,201,242,137,201,170,161,224, 59, +157, 93,149,217, 28,245,111, 59, 1, 45, 4,128, 57, 38, 72, 17,212, 86, 16, 19,163,173, 5,151,156,149, 52, 87, 10,150,227, 1, + 89, 26, 78, 79,143, 64, 80, 1,133,127,217, 41, 36,179, 89, 40, 93, 43,214,134,124, 89,241,236,217, 51,220,221,220, 35, 36,198, + 63,254,243,123,188,253,240, 14,183,119,247,144, 42,200,235,170,135, 16, 15,197,110, 35, 29,253,205,243, 2,134, 50,212, 11, 59, +163, 88,191,144, 24, 2, 74,187, 96, 93, 47,144, 74,216, 46, 1,113,206,126, 5,129, 74,197,211,195, 35,166,103, 71,164, 20, 33, +152,112,190, 60,234, 5,212, 60, 88,130,187,151,158, 64, 72,156, 16,131,238,112,214,147,142,127,162, 93,158,109, 83,148, 98, 58, + 76, 6, 48,209, 47,161, 20,181,206, 48, 3,113, 78,160,121,177, 46,102, 67, 96, 5,255,215,220, 32, 20,176,157,129,146, 43,254, +248,215, 63,226,249,139, 59,156,222, 62,225,242,112,198,195,239,111,176,220, 63,195,179, 47, 62,199,247, 63,190,193,119, 63,252, + 12,142, 19, 2, 43,111,126, 73, 1, 83, 12, 40, 37,163,150,162,127,159, 24, 80,108, 44, 45,194, 72,135, 5,135,148,176,196,132, +151,175, 94,225,213,215,223,224,148, 87, 76, 41,225, 92, 42,206, 91,198,171, 47,238,251,184,213,187,202, 90, 93,160,150, 44,196, +135, 81,107, 67, 41,217,198,194, 35,123,222,255,101,154, 25, 21, 16,153,232, 40,144,147,182, 20, 24, 75, 78,150,115,248,140, 37, + 67,229,210,204,179,207, 54,194, 87, 50, 23, 76,133, 29,236, 32,241,157,181,119, 91,215,157,150,170,156,201,214, 73, 41, 37, 69, +112,216,225,214, 90, 49,116,172,168, 67,162,233,193, 46,174, 5, 48, 10, 32,211,142,215,221,148, 85,175, 1, 39,164,250, 10,120, +151, 80, 17,130,250,208, 21,109, 10, 5,250, 32, 40,144,130,117, 77, 65, 85,252, 36,209,113, 62, 0, 41,185, 11,191, 18,235,200, +121,143,216, 85,161,215, 96,120, 59, 63,187,217, 26, 34,248,101,219,187,115,116, 31,115,179, 21,138, 90,166,168, 23, 61, 42,224, +132, 22,240,134,146, 65, 51, 33, 95,199,167,181, 14,252,113,235, 95,143, 68, 53, 40,147,127, 7,176,127,214, 83, 10,187, 7,219, +212,199, 2,163,206,177,117,148, 74, 8,239, 4, 28, 14, 22,162,196, 16,112,119, 45, 64,236, 79,104,122,233, 43,211, 64, 32, 89, +186, 86, 68,196, 85,206, 3, 53,236,222,103,180,134,138, 2,174, 1, 20,141, 11,208, 4, 34,185,175, 7, 66,138, 87,133, 78,105, +150, 83,189,203,254,246,226,161,249,159,245,137,229,141,250,120,186,117,160,140,135,230,120,135, 92,247,129, 65,162,250,147,158, +158, 78, 52,198,255, 77,118,194, 79,187, 80, 6, 37,230,218,126,231,100, 65, 23,101, 90,145,231,173,245,248,231,158,168,103,107, + 86, 48, 26,170,145, 27,251, 82,252, 42,129, 15,210,108,146, 99, 54, 67,182,164,184,206,200,177, 80, 25, 91,137,105,145,101, 39, + 64,211,137,146,159, 3,165, 86,181,238, 34, 32,151, 13,185,232,228,140, 3,107,163, 64,132,100, 68, 57, 50,241,227,126, 53,235, + 84, 57, 69, 39, 52,156, 30,207,200,173, 98, 54,246,132,199,213,178, 21,141,250,243, 20,211, 23, 45, 88,150, 4,145,134,148,102, +148,186,106, 87,239,228, 75,140,104, 91, 66,179, 16,174,208, 89, 80,104,210,243, 38,184, 91, 55,165, 99,110,217, 50, 67,152, 26, + 18, 3,133, 9,161, 53, 4,179,249, 53, 5, 45, 96, 74,140,148, 38,136,173,190,117, 20, 31,177,174, 89, 21,252, 65,147, 58,153, + 8,145, 35, 2, 7, 76, 32, 72,205,250,249,132,164,157,185, 77,120,115,205,104,104,136,173,217, 95,196,104, 1,185, 84, 80,140, + 61,112, 68,177,155,122, 57,171, 80, 78, 80, 45, 12,128,155,165,179, 89,220,104,105,130, 41, 36,156,202,218,191,156,188, 21, 28, +231, 25,191,127, 60, 97,189,100,204, 81,195,225, 17, 72,247,227, 18,145,183,130, 82, 5, 37, 55, 48, 21, 84,105,184,125,113,135, +116, 55, 99,125,218,240,235,247, 63, 96,154, 34, 98, 36,180,173,162,172, 89,125,226, 48,188, 32, 68, 67, 71,152, 16,231,201,212, +178,163, 43,139,196,104,182,183,220,158, 50, 46,231, 21,156,108, 44,212, 76,133,106,194,136,167,211, 9,199,199, 39, 28, 38, 29, +251, 79,243,140,202, 5,113,215, 77,184,248,173,239,124, 2, 97, 91, 85, 80,182,220,206,104, 84,177,157, 78,224,152,112,156, 15, + 10, 99, 41, 69, 5,100, 89,187,224, 48,105,240, 12,113, 4,183, 10, 9, 85, 15,141, 38,200,181, 25,246, 18,200, 69,240,245, 55, +223,226,254,238, 25, 78,143,103,172, 79,103,156,126,123,135,112,127,143, 23,175,190,192, 15, 63,255,132,191,127,255, 70,153, 31, +236, 69, 86,192, 97,154, 80, 74, 85,241, 7, 65,255, 30,126, 82,147,210,243, 98,138,136, 83,196,171,175,191,196,235,111,191, 65, +169, 85, 15,230, 24,241,240,238, 29,238,110,143,184, 57, 44,168, 16, 5,199,193, 95,126,189,192,180,225, 77,125,127,181,247,135, + 7,203,135, 87, 53,177,189, 8,164,197, 87,107,202, 64,110, 36,157, 95,238,121,195, 77,218,128,173,128, 64,246,123,244,171,161, + 41,231,152, 24,170, 69,160, 10, 97, 65,181, 54,162, 39, 78,121, 86,114,140,163,243, 48,133,111,112,218,159, 5, 45,120, 60,105, +173, 2, 4, 45,217, 66, 52, 93,137,253,157,185, 85, 84,179,126,138,193, 69, 24,214, 85,217,120, 22, 34, 64, 86, 95, 50, 60,110, +181,209, 64, 5,155,240, 74, 58, 38,149,117, 71,237,151,166, 69, 32,239,173,126,238,131,213, 93,106,219,137,203, 67, 23,213, 4, +251,220,244, 82,178,142,130,209, 89,222, 93, 40, 7, 87,241, 15,203,229,126, 31,220, 76,245,175, 59,125, 66, 11, 12,106, 1,212, +170,121,196, 25, 21, 64, 69, 5, 7,160, 86,128,155, 0,145,187, 16,178, 59, 89,200, 63,103,101,252,235,251,136, 62,157,241,245, + 4,147, 11,153,164,179,249,153,154,217,231, 70, 23,184,167,255,145, 17, 47,135,168,208,108,123,126, 65,146, 42,223,175,146,245, +140,192,213, 68,193, 86, 96, 2, 87,234,157,101,109, 58, 95,210, 56,100,235, 64, 81,212, 18,107, 49,151,174, 92,103,211, 32, 48, + 70,196,185, 79,170, 28, 6, 84,107, 54,239, 60, 13,134, 60, 12, 12,212,154,185, 98,164,167,243,169, 24,145,187, 88, 76, 45,120, +117,160,180, 93,188, 72, 98,209,158, 24, 88,224, 61, 31,192,200,130,108,164, 70,116,135, 6,117,135,136,235,133,220,154,167,231, +186, 79, 10,212, 94, 32,238,193,247, 76, 65,183, 48,210, 8,120, 9,196,168,253, 66, 39,203,250,142, 8,216, 84,108, 22, 77, 68, +104, 22,185, 96,217,241,206,175,112, 29, 67,206, 10,247, 18, 8,166,164, 13, 25, 71, 86,202,154, 73, 69,138,219,138,137, 16, 34, + 27, 67, 72, 16, 34,112,202, 21,167,211, 69,149,236, 70,240,116,222,138,239,199,217,190, 23, 97,194,116,152, 16,226, 12,176, 58, + 15,202,118, 65, 41, 69,159,123,183, 41,154,109,215,249, 12, 74,146,172, 86, 44,235,148,150,186,102, 67, 17,207,149, 13, 93,171, +177,127,128,199, 27, 83, 0,102, 86,232, 22, 37,251,254, 11,120, 14, 72,105,238,113,229,243,164,187,245,143, 79,239, 81,132, 48, + 91,164,157, 64,227, 95, 83, 72,168, 85,215,146,193,237,177,240,169,159, 78,244, 74,205, 70,220,180,179,162, 74, 27,170,102,135, + 4,224,154, 82, 36,162, 84,155,102, 2,135, 67,140, 8, 81, 61,117,190,236,223,242,134,231,247,207,208, 90, 67,174, 27,110,110, + 15, 40,235, 5,151,243,134,152, 84,192,149, 98,232,227,104,183,152,229, 77, 47,190,249, 56,227,249,103, 47,192,129,241,230,251, +159,240,241,189,178,205,217,172, 31, 66,158, 61, 77, 61,125, 42, 26, 13, 44,165,136, 41,164,158,154,196,236, 66, 13, 29,109,157, + 79, 23,148,220, 16,130, 94, 84, 53,107, 7,199,182,159, 20, 8,214,203,138,156, 55, 16,128,155,227,130,155,195, 17,174,125, 38, +168,239,157, 44, 27, 92, 64, 40,173, 32,111, 43, 98,210,151,225,241,253, 35, 66,152,112,115,127,131,249,176,152,221,193,132, 53, + 4,164, 73, 17,171, 26, 90,209, 32,117, 3, 33, 43, 77,169,232,131, 83,138, 96,203,130, 47,191,124,141,219,219,123,108,107,198, +250,116,194,187,223,127, 3, 29, 23,188,124,253, 26,191,252,246, 59,254,246,247,159,144, 91,213,208, 21, 38,204,204, 56, 46, 51, +154, 8,182, 53,163,150,134, 52, 45,106,249,176,240, 20, 78, 81,139, 46, 6, 94,127,245, 37,254,240,167, 63,232,184,169, 53, 28, +110,110,112, 62,157,208, 32,184,127,118,175, 98, 64,182, 0, 13, 67, 50,122,110,181,171,122,115,206, 93, 44, 21, 66, 68,224,104, +126, 83, 26, 76, 50, 10, 90, 64,149, 2, 49, 65,220,232, 46,198, 97,143, 30,253,233,236,243,128,148,146, 2, 67, 60,102, 52, 68, +176,217,146,216,114, 57,197,146,199,196,158, 15,223, 37,182, 58,160, 53, 74,171,211, 98, 96,219, 76,136,231, 98, 58,150, 65, 10, + 52,113,144,231,222,179,137,127,170,135,110, 48,247, 93,158,170,237,131,146,201,124,231,198,132,152,162,226,125,197, 2, 34, 12, + 79, 90,107, 70,117,241, 27,196, 68, 61,109,164,197, 25, 97, 75, 80,250,229, 40,166, 44,215,240, 11,227,171, 95, 51,200, 52,235, + 27, 67,153,236,110, 13,217, 41,179, 97,221,181,123,200,175, 98, 36, 29, 41, 7, 23,103,113, 15,193,129,219,222,104, 40,243,197, + 4, 77,158, 40,181,211, 79,233,250,199,220, 3,221, 35,239,254, 60,222, 89,232,164,141, 24, 77,178,181, 68, 96,211,215,208,117, + 94,232, 85,218, 87,235, 36,183,102, 59, 98, 2, 20,214, 97, 19, 37, 95, 21,185, 38,136, 49, 96, 63,250,191, 97,215,209, 27,202, + 53,197, 62, 90,246,231,211,177,170,123, 43, 89, 23,132, 88, 71,172, 59,102,233, 64,154,214,106, 95, 57,117, 15,191,115, 12,118, +172, 5,234,217, 1, 67,205, 14,115,143,212, 82,122,197,224, 9,108,181,238,246,227,123,239,255,149, 64,116,183, 18,105,215, 22, +172,253,175,107,117,136, 79, 33, 59,177,157,214,181,157, 31, 64, 68, 93, 96,250,105, 60,182,211, 10, 5, 35,224,196, 57, 12,100, + 29,102, 8,187,160,176, 93,113,224, 44, 20,152, 96,215, 45,160,202, 28, 1, 98, 36,196, 96,220,244,214, 80,170,139, 94, 71,126, +185,223, 93,167,199, 21,231,203, 10, 13,129, 12,157, 80,184,143,138,243,226,133,154,224,112, 60, 2, 50, 28, 16,121,205,166,229, +209,127,174,231, 70,177,243, 93,174,132,159,180, 15,117,114, 90,164,115, 49,160,147, 6,213,251,120, 96, 81,208,233, 89, 36,187, +239, 20, 48, 37, 44,218,212,197,164, 35,123,160, 91,174,223,127,124, 64, 16, 75,160, 51,140, 47,243, 72,163,108,162, 17,197, 49, +106,199,239, 98,118, 47,148, 35, 72,247, 31, 77,164,123, 5,129, 6,166, 73,213,151, 40, 86,241,232, 31, 32,108, 12, 97, 59, 0, + 92,125, 94,107,237, 35,123,102,198,221,237, 13,206,219,134, 45, 23, 5,157,136,114,174, 67, 72,160, 86,213, 70, 87, 43,170, 52, +172,219,138, 38,108, 22,186, 9, 47, 63,255, 28, 55,247,183, 56,191,127,194,175, 63,255,140, 48,205, 16, 41,144,102, 59,220, 24, +108, 52,106,246, 40, 49,161, 89,138, 56, 76, 9,231,181, 98,221, 54, 76,193, 84,247,181,168,109,171, 10,182,146,193, 49, 98,138, + 13, 69, 51,230,187, 7,214, 61,197,101, 43,168,169, 90,210, 19,227,238,120,192, 41,158, 20, 56,227, 1, 52,212, 44, 29, 74, 64, + 80, 64, 68,173, 5,107,222, 84,240,112,183, 64, 64,216, 12, 8,224,214, 10,133, 98,204,134,146, 92, 65,161,170,205,193,216,211, + 1, 4, 41,250,136,124,241,234, 21,158,223,221, 64,114,193,229,233,140,247,191,191,199,114,115,139,207,190,248, 2,239,222,190, +197,247, 63,252,130, 75, 1,166, 37, 98,142, 17, 83, 36,220,164, 25, 16,224,124, 89, 53,212,102,158, 16,167,164,251, 44,142, 61, + 96,100, 78, 9,223,124,243, 26,127,248,246, 15,221,226,183, 44, 11,178, 8, 30, 31, 30,112,255,217,103,152,230, 5,210,170,170, + 57,141,165,225,138,117,181,103,196, 43,175,236,222,166,164, 35,248,193, 59,111,246, 82, 87, 25, 52, 53,191, 56, 52,117, 75,127, +237,182, 21, 29, 45, 55,128,194, 2,226, 4, 70, 67,222, 86,253,124, 12, 62, 65, 36, 8,211,212, 5, 34,181, 22, 45, 52, 88,172, + 35,147,206, 70,102, 87,132, 91,196,173,142,217, 27,234,166, 7,100, 76, 9, 49, 78, 96, 54,203,145,237,166,216,237, 50,180,231, +177,235,127,153,166, 73, 47, 76, 19, 71, 6, 98, 72,212,207, 55,196,136, 52, 77,250, 93, 86,197, 94,170, 51,142, 17, 16,140, 73, +174,233, 74, 32,179,101,217,243, 44, 50,226, 65,245,244,100,219, 35,203,200, 31,232, 72, 88,236,118,169,122,248, 50,135,157, 48, +234, 26,136, 2,139, 46,149, 93, 4,235,216,167,162,123,192,155,140,172,238,108, 23,168,238, 14,197, 0,114, 4,169, 1, 64, 53, +177,172, 82,247, 26,118,184, 82,227,154, 11, 25,215, 2,102,207,227,253,126,126,136, 4,181,160,182,124, 4,111, 7,197,115,189, + 7, 49,173,217,168,222,105,106, 3, 37,107,232, 86, 41, 72, 83,236, 41,121, 30, 61,218,176,179,206, 25,125, 12, 77, 64,209, 4, + 89,189,203, 55,215, 0, 25,207,156, 2, 36, 24,147,191,201,192,153,186,197, 87,118,123,104,207,176,223,215, 34,210, 84,213,156, +162, 21,236,114,181, 18,242, 46, 94, 61,206,158, 55,110,211, 21,183,198,238, 10, 51,234, 10,247, 1,185,146,174,231, 48,241,168, +140,213,147, 84,233,225, 62, 61, 45,112,167,240,215,241, 57,119, 75,160, 51, 33, 58,132,133,130,185,227, 77, 69, 46, 35,240,136, + 12,236,229,147, 0, 29,181, 59, 61,147,250,207, 19, 48,162, 98,217,124,242,205,118,252,173, 86,219,167,171, 0, 46,217, 51,225, +151, 59, 1,200, 46, 48,181, 54,193,133,175, 44,132,146, 27,158,206, 43,114, 89, 17,120, 66, 79,229, 53, 96,117,182,238, 92, 0, +117, 75,221,104, 56, 24, 8, 38, 60, 19,180, 92,237,251,245, 34, 71,250,218,161,235, 69, 26,140,138,103,128,182,174,197,224,142, +243,101, 27,155,117,184,148, 0, 83, 32,108,246, 14,116,190,133, 77,103,210,180, 96, 74, 11, 66, 32, 76,203,130,121, 89,240,244, +116,214,233,247, 60, 33,196,128,182,109, 96, 27,177,239,115, 19,216, 24, 24,213,127,246,170,158,252, 82, 43,162,152,250,181, 54, +233, 73, 74,189, 63,183, 67,131, 13,106,209,122, 38,180, 83, 58, 9,193, 80, 73,213,186, 69,110,130,195,225,160,150,177,156,177, +149,130,105,158,193,212,208,138,104, 53, 34, 10, 9,217,114,193,121,203, 40,165,130, 24,168, 53, 35,166,136,207, 62,127, 9, 10, + 1,111,126,248, 9,151,167, 51,194, 52, 97,187, 20, 61, 20, 57,106,154, 17,233,139, 26,205,239, 14, 2,164, 20, 28,167,132,211, +166,184,207,121,154,209,154,224,241,114, 65,110, 64, 44, 21, 91, 43, 88,150, 9, 85, 54,108,173, 34,182, 97,201,209,135, 45,163, +228, 13,210, 52,253, 77, 59,235,128,251,231, 17, 92,139,206, 28,169,161, 73, 70,105, 27, 66, 22,112,156, 0,106, 40,185, 34,205, +139, 66,115, 8, 40,219,134,154, 55,144, 84, 76, 49,154, 64, 75,201, 86,212, 54,212,118, 70, 99, 2,144, 76,217,169, 47,218,156, +102,188,248,226, 91,204,199, 4,217, 8,235,229,132,223,127,250, 25,247, 47, 95,225,254,245, 43,188,127,243, 43,254,254,195,175, +248,253, 82,112,115,156,112, 8, 1, 19, 1, 55,243, 1, 68,140,199,147, 90,244,152, 24,211,172,187,163,192, 73, 41, 97,196,152, + 67,196, 31,191,253, 6,175,191,125,133,181,102, 77, 15,154, 38,132, 41,226,237,175,191, 33,196,136,187,187, 91,163,167, 77,125, +132, 45,102,133,169,149,250,193,230,201, 88,251, 3,163, 39,147,241,200, 14, 47, 85, 95, 88,207, 41,142,182,115,231, 64, 0,162, +238,218,172, 56,148,162,227, 93,237,156,146,249, 89,175, 41,217,138,148,213,142,133,236, 34,108, 77, 71,190,129, 8, 85,198, 37, +161,103,107,177, 46, 38,216, 62,180,234,142, 29,238, 25,133, 37, 94,149, 1, 84, 33, 29,197, 27,222, 28,137,167,209,245,218,120, + 13, 70,190, 14, 49, 64,160, 89,194, 41,165, 93, 2,211, 80, 35,131, 77,152, 83, 75, 31,139, 18,196,160, 52,178, 11, 96,113, 17, + 97,238,177,155,174,226,245,125,103, 8,100,145,152,118, 41,197, 1,220,161,171, 60,244, 29,137,207,199,236,192,149,197,205, 47, +213, 62,146,247, 34, 44, 4,112,141,168, 53, 91,151,101,217,237,214, 85, 73, 53,129, 90,105, 59,177,156, 77, 9,120, 31,196, 34, +198, 66,101,180,170,209,195,112,159, 50,138,117, 32,209, 20,236,220, 87, 39, 62,245, 8, 59, 50,224,222, 58, 58,242, 89,170,217, + 31, 27, 2, 8,173,242, 53,152,197,216,241, 46, 92,172,214, 73, 15,177,166, 78, 76,122,168,139,104,206, 54,211,208,217, 55, 75, +106, 33,143, 90,165,214,213,229,189,168,178,157, 48, 35, 64, 32,216,154, 54, 34, 82, 42,216,215, 3,245, 90,244,233,211,164,234, +239, 80,207, 69,119,106, 98,216,177, 3,116,189,214,139, 76, 43, 90,219, 46,239, 0,198,115,124, 90,168,120, 0, 0, 32, 0, 73, + 68, 65, 84,240,137,192,222, 86, 41,246,129,249,164,134, 45,144,200,191,239, 79,145,184,251,247,186,237, 46,147, 38,205, 70,209, + 38, 34,244,247,236, 19,250,158, 91,250, 96, 43, 5,101,149, 72,119,114, 48,128,205, 92, 2,228,157, 46, 11, 66,212,149,169, 71, +186, 42, 7,192, 44,160, 65,197,102,170,250,102,156,183,140,243,233,130,214, 8,211, 18, 58,130, 90,164, 94,217, 68,165, 86,148, + 92, 48, 47,179,210,222,164, 32,198,128,203,101,181,181, 47,239,212,238, 86, 96,187,125, 76,194, 40,168,125, 93,197,205, 2,246, +168,243, 37, 56, 4, 36, 11, 98,209, 34, 41,244,207, 47,134, 69,181, 49,246,125,177,217,173,167,195, 12,106,132,148, 38,164,152, +112,185,188, 87, 82, 31,239, 86, 8,166,124, 15,113, 66,163, 19,106, 43,152,211,132, 64,140,203,122,129,228,138, 45, 16,182, 82, +176,149,130, 8,199, 98, 90,178, 69,163, 6, 65,188,242, 22,187, 13, 98, 63,146, 42, 68, 72,204, 72, 33, 40,121, 78, 4,201,148, +170,203,178,128, 4,200,173,161,136, 32,113, 66,226,128,210, 52,146,180,102,253, 75,231, 92,181,122, 7,247,151,239,112,123,192, +221,243,123,188,255,253, 29,222,252,240, 6, 20,185, 31,138, 4, 32,204, 51,152,253,162, 2,230,200,216, 74, 83,168,204, 86, 44, + 75, 59,129,161, 35,184,146, 11, 78,167, 21, 33, 45,200, 77, 21,183,199,227,130,119, 31, 46,104, 40, 22,109, 90, 1, 25, 54,161, +142,206, 21,133,233, 48, 19,150, 99, 68, 91, 5, 21, 69,177,144,165,161,110, 25, 56,120,231, 24,176, 44, 19,210,113, 65, 94, 43, +182,109, 69,206,185,115,153,117, 20, 11,100, 52,112, 61, 1,200, 93,100,209, 32,224,214, 80,203,134,103,247,247,248,226,229,159, + 16,166, 3,176,109, 56,157,206,120,255,227, 47,184,249,236, 57,238,191,122,129,223,127,251, 29, 63,252,227, 71,252,190, 94,112, +179, 44,184, 73, 17,145, 4,199,229, 6, 32,194,211,233,130,203,101, 85,181,251,205, 2,137,198, 57,247, 93, 36, 11,190,250,227, +215,248,246, 79,223,224, 82,139, 30, 68, 49, 65,152,241,248,248,132,243,233, 9, 95,126,249, 21,110,150,131,118,177, 83,234,135, +141,234, 55,164,163, 80, 91,175,234,155,141,150,232,250, 0,138, 81,201,132,165, 88,232,129,141,211,106, 67, 51,246,179, 18,161, +236,197, 35, 2,199,128,154, 27,106,174, 8, 38,216,114,254, 65, 12, 97,215, 37, 21, 20, 27,251,235, 88, 61,246,223,191, 89, 30, +117, 12,220,119,188,222,142,149, 90, 45,100, 68,192,209, 43,231,134,146,183,171,238,201,119,203,149,138,229, 21, 39,163,132, 21, + 48,212,218,214,227, 77, 99, 48,226,148, 41,137,141,152, 71, 96,227, 83, 3,141,117,180,231, 45,246,176,129,251, 40,163,117,145, +152, 31,216,222, 49,177, 71,151, 54,183, 91, 1, 34, 81,119,255, 33,118, 59,119,181,145,176,239,250,154, 40, 46, 51,154,114, 91, + 33, 62, 90, 84, 42,120,193,196, 79,112,139, 97,235,172,117, 64,181, 38,187,112,194, 29, 96,103,196,116,170,111, 86, 6, 20,167, +211,215, 84, 4, 37,162,254,217,128, 65, 89, 28,220,126,233,171, 7,238,236,242,235, 14,156, 93,128,103,234,222, 64,123,116,174, + 34, 51, 69, 4,185, 20,179, 49, 38,237,164,106,179, 4, 65,116, 40,142,114,201,119, 24, 84,244, 96, 63,197,125,218,178,168,167, +134,210, 80,244,171,189,176,237, 28, 0,229, 19, 62,188,147, 11,249, 58,119,187,255,179, 81,179, 57, 82,185, 88,222, 5, 72,145, +190, 16, 71,185, 10,132, 89,241,164, 84, 59,242,215,133,186, 98,205, 86,103, 62,224,147, 17, 60,239,211,245,104, 71,229,181, 78, +116, 23, 28, 67,123, 40, 12,212, 45, 84,119, 30,248, 94,196, 54, 45,198,201,236,102,246,116,219,190,221,178, 9,106,233,207,179, +236,224, 74, 2, 91,211, 4,213,108, 53, 79, 82,132,116, 94,132,199,198, 6,235,210,125,253,162, 43, 2,119, 79, 84, 93,163, 88, +177, 90, 81,241,116,186, 96, 91, 11, 74, 83, 43,156, 23,202,100, 43,148, 42,162,211,132, 38, 64, 99, 28,110,143,186,166, 50, 18, + 91,217,178, 82,227, 24,150,105, 95, 59,167,190, 51, 6, 44, 45,115,159,220,200,118, 97, 11, 60,134, 55,128,211,132,227,172,153, +230, 5,130,164,121, 84, 88,169,161, 81, 3, 7,199,188, 86, 76,139, 42,251,181, 17, 6, 98,156,193, 28,112,217, 46, 96, 36, 84, +108,216,234,134, 4,193, 20, 2, 98,152, 17,252,157, 43,213, 98,103, 35,114, 22, 19, 25,234,133, 94,155, 32, 2,154, 55, 77, 18, +145, 20,150, 11,225,216,197, 44, 61,232,158, 24,220, 61,197, 6, 21,176, 93,107,174,101,120, 71, 9,152,230,164, 99, 1,214, 23, + 47,111, 25, 47,238,159,225,230,230,128,173,102, 59, 12, 74, 71, 85,170,210,167, 33, 53,193,243,103, 47, 0, 38,252,250,211, 27, +156, 79, 79, 56,222, 31, 65, 85, 16,236,197, 92,230,132,167, 57,161,229,130, 41,178,237,216,212,231,120, 90, 5,147, 37,225,104, +102,182,160,148, 21, 92, 50, 40,205, 16,106,152,231, 73,119,147, 44,125, 39, 83,107, 65,147,145,227,221, 21,162,148, 84, 4,209, + 26, 82,100,136, 4,195,241, 1, 82, 26, 48, 1,136,201, 2,237, 19, 66, 82, 40,206,122, 94,145,171,230,100, 83, 72, 32,182,116, +165, 82, 65,181,233,102, 48, 50,168, 9,168, 85,112, 3, 90,201,248,226,245, 55,248,195, 55,127, 65,206, 27,234,182,162,109, 27, +126,253,241,103,220,188,120,134,207,190,124,141,143,239, 79,248,219,119, 63,224,253,229, 9, 55,135, 35,110,151, 25,129, 5,203, + 60, 65, 2,225,233,227, 25,219,229,130,210, 50,150,227,172, 98,138, 24, 65, 41,162, 72,195, 77,136,248,230,219,175,240,215,127, +255, 23,228, 77,191,203,233,112, 64, 54,209,201,195,195, 3,238,110,158,225,249,139, 23,246,146,169,165,136, 53, 55,242,106, 23, +200, 59,184,139,218,247, 70,158,181, 56, 2,182,169,128,132, 45, 59,120,223,109,169,162, 89,161, 19, 84, 13,161,234,110, 6, 83, +103,215, 86,209,182,210, 33,160, 54,211,213, 67,188, 53,228, 53,155,213,204,124,200, 66,144, 74,125,223, 75,126,169, 59, 72,137, + 99, 7,215,232,233,220, 12,114,100, 23,139,199,192,154, 96, 81,199,185, 10, 16, 18,174, 67,249,109, 84, 65, 61,202,130, 61,231, +213,118,138,225, 19, 82,234, 0,128, 52, 42,154,204, 69, 42, 4,146,125,194, 42, 70,134,184, 64, 80, 90, 1,113,210,231, 14,213, + 78, 62, 2,144,117,164, 15,210, 49, 51,219, 24,211,187,114,208, 63,125, 79,126,176,249,231, 26, 68,195,117, 90,169,253, 61,177, + 23, 90,191,167,178,237,246,198,122,184,215,221,238,212,119,178,159, 50,231,255, 57,114,140,204,187,204, 59,126,128, 5,153,104, +137,222,125,245,210,212,206,202,157,187, 29, 64, 20, 7, 46,118, 71,234, 83, 5,116,184,226, 27, 4, 99,225,147, 46,132,205,194, +104,169,112,102,203,106,187, 4, 56,180,253,133,111,241,200,172, 34,180,198,186,146,147,170, 77,206, 72,208,115,123,155, 89, 51, +177, 11, 63,225, 29, 77, 80, 60, 57, 15,150,200, 53,244, 3,253,123, 49,241,233, 72,143,195,136,110,237,163,114,186, 74, 81,219, + 79,195,252,153,197,142, 14,183,247,195,151, 82,123,148,177, 51,248,177,115,135,184, 90,219, 61,248, 93,240,183,163,249,249,228, +167,161, 90, 81, 3, 75, 89, 68,119, 59,136, 97,128,135,101, 80,140, 31, 97, 98, 64, 26,218,138, 38, 52,242, 50,155,139,130, 11, + 54,195,236, 6,211, 28,152,100, 5,176,220,132, 38,117,116,209,221,214, 47,184,172, 13,151,139, 34,134,131, 77,213,136, 2,130, + 23, 47, 13, 8, 8, 64, 83, 4,236,180, 48,110,239,111,181, 17, 72, 9,141, 24,219,186,105,145, 97,207,159,236,168,139,226, 57, +186,132, 14,112,242,117,142,176,241, 38,154, 65,211, 80,145, 82, 2,130, 6,157,181, 86, 17, 16, 17,109,181,170,157,181,254, 57, + 81, 4, 73, 4,137, 18, 34,235, 59,156,210,140,173, 20,228,109, 3,115, 67,176,194, 56, 64,155,101, 45, 0, 18, 88,204, 21, 17, +244,254,221,182, 21,185, 22, 4,142,253, 25,136,212, 69, 95,254,161,135, 97, 11,145, 1, 32,144, 43, 86,180,141,229, 77,249, 91, +106,235, 2,147, 20, 84, 16,176, 94, 54,164,168,177,139, 79,235, 19, 94, 60,191,195,237,225,136,183, 15, 79, 40,214,129,144, 9, + 76, 2, 7,108,185, 97,126,113,143,251,151,207,241,225,253, 3,222,254,242, 70, 85,144, 76,168, 91, 54, 70, 55,105,222,248,241, +136,252,116,178,234, 86,189,209,165, 10,132,129,121, 14,152,141,154, 84,115, 70,185,172,106,254, 23, 1, 85,181, 28, 88, 49,140, + 41, 6, 84,113,159,233,200, 91,175,165,161, 86,193, 60, 3, 83, 74,216,182, 85, 71, 44, 32, 76,209,104, 95,100,209,164, 14, 6, + 8,140, 86, 43,182,203,134,156, 11, 66, 12, 72,105, 82,220,174, 84,228,154,209,195,178, 57,116,120, 66,171,186, 6,248,230,155, +111,241,167, 63,254, 21,219,186,161,174, 25,229,178,225,183,159,127,198,241,217, 17,159,127,253, 26, 31, 62, 60,225,127,190,251, + 9,239,206, 79, 56, 46, 7,220, 45, 11, 18, 19,166, 89, 69, 22, 31,222, 63, 98, 93, 47, 64,107,152,166,164,126,245,148,204,158, +211,112, 31, 24, 95,255,241, 27,252,229,223,254,172, 20, 59, 1,166,155,131,122,132, 1, 92, 78,103,228, 92,240,234,203,103,186, +203,241, 24, 81,163,116,229, 98,161, 62,190,243,219, 41,146, 99, 84,225,154,131, 17,220, 23, 92, 90, 54,238,191, 90, 53,106, 46, +150, 3,110,214, 56,235,168,168,169, 13, 75,153,236,210,139, 33, 87,139,187,184, 68,147,167, 24, 49, 24,244, 1,181, 51,227,221, + 10,215,119,111, 86,112, 58,136,194, 78, 43, 93,221,184,199,119, 15,254, 40,106,117,114,106,109,143, 47,117,174, 35, 25,177,201, +193, 24,162, 87,173,147,223,106, 43,224, 20, 70,198,171,171,188,237,214,110, 85, 70, 6,187, 9,125, 90,109,195, 47, 79,193, 68, + 72,250,249,121,192, 77,140,170, 53,104,181,218,255,174,184,101,238, 83, 8,125, 47, 3,177,217,197,168,231,178, 19,212, 97,224, + 21,134, 42,117,185, 91,165, 64,215, 0, 23, 31, 59,162, 82,199,252,246,194,190,226,154, 98, 38,100,182,188,106, 17,194,214,157, + 83, 64,145, 98,244, 60, 30, 48, 20,242, 94,149,186, 45, 81,106, 67, 74, 19,136, 45, 2,181, 54,213,206,136, 32, 82, 68,228,235, +196, 61,247, 16,195, 71,192, 6,186,210, 3,184, 2,102,129,130,175, 16,101, 68,135,178, 77, 81,196, 11, 11, 75, 18, 20,232,184, + 87,159, 61,234, 5, 68, 45, 58,190,173,172, 10,114, 29,185,122,202, 90, 53, 94, 59, 91,108,245,128,204,136,180,222, 13,147,199, +168, 26, 3,220,109,187, 20,198, 72,218,199,228,173, 99,100,140, 98, 38, 99,111,142, 29,144, 72,118, 56, 98,215, 5,224, 42,212, + 72,159,139, 82, 11,106, 29,217, 10,213,242, 6,116, 63, 92, 60,111,204,222,171, 61,145, 86,174,152, 8,125, 37, 19,212,247, 2, + 25, 76,147,126,137,219,191, 60,115,158,168, 14, 30,125, 95,217,170, 27,137, 88, 11,249, 42, 21,165, 85,228, 54,194,109,174,216, +255, 54,254, 22, 66, 87, 41,184,109, 84,109,134,130,243,121,195, 86, 84,236,170,227,111,181,183,114,159, 34, 14,139, 99,149,134, +251,155,123, 76,211,162, 92,136, 24,177, 94, 46,216,182, 12, 56,139,160,138,190, 31, 84,122, 6,188,214,210, 14, 13,218,191, 47, + 35,122, 86,108,228,207,204,168, 92, 59,168, 43, 25, 38, 89, 45,105, 38, 44,110,110,205, 53, 84, 56, 39,180,168,172,150,211,229, +132,188,109,144,186, 33,248,125,195,140, 32,202,159,159,162,130,117, 20,181, 28, 33, 0, 46,235, 69,167,201,118,255, 2,132,216, + 97, 1, 98, 36, 48,225, 62,102,195,142, 48,228, 37,146,216,173,238, 94,100, 85,127, 3,243, 20, 1, 84, 21, 16,217, 88,110, 14, +202,128,127,248,248,255,201,122,179,102, 73,146,227, 74,243,168,154,153,123,108,119,205,165, 54, 20, 64,128,196, 16, 32,184,205, + 80,186,101,100,254,255,235, 60,140,180, 72,147,221, 32,216, 93,168,172, 37, 43, 43,151,187, 69,132,187,153,169,205,131,170,154, +251, 5, 31, 64,128, 64, 85,229,189, 17,238,102,186,156,243,157, 7,124,249,242, 18,219,221, 6, 8, 65,173, 85,228,184, 82,149, + 91, 10, 51, 46, 94,220, 66, 32,184,127,247, 51, 78,119,143,216,109, 55, 8, 20,244,139, 3,169, 92, 63, 37, 28, 14,123,220,159, +206,104, 82, 48,231,140,156, 5,149, 9,227, 54, 96,187,219, 32,206, 39, 77, 62, 42, 69, 85,198,137,187,103,148, 12,172, 79,149, +144, 6,224, 60, 47,228, 32, 10, 90, 85, 74, 33,148, 92,250, 75,151, 66, 64, 57,235, 67, 18, 99,194, 56,110, 85,192,101, 17,175, +129, 25,173, 86, 76,167, 19,242, 84, 45,253, 42, 32,196, 37, 38, 84,164,161, 5, 66,131,238,149,168, 9, 88, 26, 30, 30,158,240, +119,127,247,123,252,230,215,191,197,227,253, 3,166,167, 35,144, 43,222,191,125,135,253,213, 21,190,248,242,115,188,127, 60,225, +127,127,243, 29,126,190,191,195,110,191,195,197,110,139, 0,193,184, 25, 65, 0, 62,222, 29,173, 67,159, 49, 12, 3,226, 38,130, +147,138,115,216,162, 29, 63,255, 74, 85,238,197,192, 28,227,102, 3, 68,234,216,202,233,120,196,213,213, 21, 46,175,174, 58, 77, + 79, 33, 42, 70,255, 19, 49, 13, 90,123,150,235,172,240,153,128, 90,170, 41,118,213, 38,226,251, 61,102, 19,180, 84,253,223,155, +189, 44,181,137,121,189,139,170,168,193, 10,252,242,152,208,106, 59,111, 2,168,233, 58, 36,164, 96, 64,144,130,106, 12,250,192, + 1, 49, 69, 29,171, 86,243,193,122,243,211,154, 70,225,118,128, 11,245, 9,138,239, 9,181,227,145, 5,159,233, 2, 36, 45,177, + 59, 86,178,102, 59,188, 29,181,233,123, 80,165,205,244, 14,165,182, 2,145,166,169, 85, 45,168, 99,160, 19,204, 22, 5,113, 53, + 63,127,128,137,254,172,163,171,181,160,216,254, 81,247,254,250, 55,180,158, 29, 31,244,247, 78, 30,204, 97,241,170, 30,142,227, +151,186,103,135, 27, 64,163,209,130, 48,237, 69, 64, 15,230,104,207, 46,148,214, 11,121,233,214, 38,120,126,184,229, 64,115, 35, +212,182, 92, 4, 30, 22,243,204,147,142, 53, 87,221,132, 96,214,101,177,199,246, 66,215, 10,141,218,106, 50,208,250, 42,192, 27, + 9, 94, 5, 72, 57,112,167,173,163,105,215,233,119,182, 58,105,150, 29,176,136,204,200,124,203,214, 69,138,141,203, 13, 63,236, + 33, 65, 82,171,109, 73,130,229,215,103,171,235, 28,139,170,147,186,117,115,178, 2, 30, 46,133, 4,150,204,108,157, 88, 80,183, +196,214, 90,140, 46,136,190,187,175,134,254, 93,227,210,251, 78,219, 86, 47, 94, 40,118,155, 91,159,210,144, 5,230,180,174,124, +239, 9,125,213, 18, 33,163,254, 57,197, 5,122, 94, 32,186,214,101, 21, 20,244,159, 57,239, 90,212, 52,209,130,167,249, 5,108, +184,108,215, 72,196,224, 86,204,106, 23,144,241,252,217,214, 22, 85,223,185, 82,235,194, 57, 88, 11,213,121,137, 51,213,150,127, +149,104, 72,206,244, 7,230,156,113,158,179, 90,133,107, 70,140, 74, 13,101, 10,104, 34, 10,247,114,225, 99, 19,156,115,197,197, +229, 65,149,232, 28,144, 6,194,195,221,132, 50,103,157,210,132,230, 96,130,254, 46,123,184,139,131,146,158,197, 32, 18, 48,176, + 38,131,174,117, 5,204,209, 96, 84,202, 69,233,130,224,192, 61,211, 94, 57, 17, 13, 20, 34,184, 41, 22,188,161, 33,231, 25, 77, + 42,130,217,195, 9,238, 0, 80,251,116, 12, 17, 33, 64, 81,178,172, 63, 82,169, 64,205, 21, 37,102, 20,209,230, 86,157, 30,236, +209,132,125, 19,179, 10,130, 88, 88,204, 74, 33, 90,249, 5, 57,116, 28, 32,179, 75,250,195, 82,169,198,136,218, 4, 15,143,143, +136,156,240,242,246, 6,176, 75,192,237, 74, 62,230,189,190,189,197,205,237, 13,238,238,239,241,112,119,143,121,154, 12, 46,209, +129,144, 24,135,141, 98, 63, 83, 68, 35, 85, 30, 79,115, 69,129, 32,163,226,230,229, 13,198,113,131,156, 51,114, 54, 46, 57,169, + 48,131,216, 43,153,138,196, 9,104, 13,227,192,144, 2,148,162, 10,101,143, 12, 21, 49,171, 83,213, 15,118,136, 17,193, 58,250, + 33, 13, 24, 54, 91,181,170,249, 30,166, 84, 76,211,140, 92, 84, 41,158,226,208, 3, 56,134, 65, 15,246, 24, 20, 31,200,209, 85, +139, 51,202,249,140, 63,252,225, 15,248,253,223,253, 1,167,227, 17,167,251, 39,212, 83,198, 79, 63,253,132,237,213, 37, 94,127, +245, 5,238,239,158,240,167,111,222,224,221,253, 29,246,251, 45, 46,118, 91, 36,104, 72, 77, 26, 6,124,124,120,194,241,116, 66, + 41, 89,131,100,134, 8, 30,146,218,251,108, 18,242,171, 95,124,133,191,254,237,223, 32, 12,154, 62,151,134, 17,108,227,114,110, +132,233,116,198, 44, 5, 87,215,151,166, 14, 23, 80, 19, 85,169,155, 71,211, 49,193,213, 98, 66,229, 47,128, 27,176, 40, 83,191, + 48,186,104,206,192, 33,206,117,247, 60,129,102,240,150,104, 10,217, 82,149,174, 20, 77,161, 95, 74,182, 75, 51,246,177,162,147, + 11, 61, 57, 47,196, 4,138,209, 46, 33,191, 60,218, 51, 11,145, 62,203,250, 47,248, 72,214, 86,216, 29,185,104, 7, 8, 71, 70, +138, 81,197,108,180,172, 30,154,233,188, 84,196, 84, 49,231, 25, 37, 27,159, 62, 23, 11, 14,105,246,223,233, 63,211, 63,167, 82, +139, 70,233, 6, 94, 44, 75,213,146,238, 98,236, 85,123,195, 66, 14,235,163, 79,235,198, 74, 46, 29,181, 10,219, 79,106, 60, 43, + 47,201,107, 82, 61, 54,164, 95, 44,112,136,198, 74, 13,188,116,107,203, 5,188,134,103,136,163, 88,153, 58, 54,116, 73, 1,227, +110, 99,244,203,215, 65, 41,226, 84, 61,183,152,217,162,191, 86,183, 35, 45,138,123,145,102, 9,119,102, 41, 19, 60,179,221,249, +116,164, 54, 99, 59, 88,218,214,162, 68, 94,199,184,182,149, 58,121, 57,115, 5, 42,194,228,160, 7,170,143,129, 61,106,244,153, +138,204,159,109,167,231, 17,155,149, 83,119,233, 76,218,149,247,226, 92,164, 23,189,253,178, 93, 57, 14,220,179,239,236, 6,238, +104, 93,179,115, 22,181, 89,130,245,188, 12, 81, 53, 55, 49, 42,198,153,136,251, 89,180,184, 29,218, 51,145,166,195, 85, 28,171, +187, 96,102, 91,207, 74, 55,236,120,255,238,125, 18,180,160, 80,165,239,233, 29,199,235, 4, 51,223,115, 43,237,174,233, 62,222, +104,142,206, 75,144,214,250,103,237,207, 30,153,136,147,152,150, 41, 89,171,230,139,175, 70, 56,109,221, 48,144,139,103,127,168, + 53,212,215, 87,173,227,124,177, 68,221, 90,215,158,139,224, 52,205, 40, 85, 80,170,194,195,152,117,157,193, 68,200,115, 69,246, +130, 9,126, 14, 3, 23, 23, 7, 37,160,166,136,210, 42,242, 52,169, 46,170, 23,100,212, 85,229,221,191,223,211, 19,219,179,100, + 82, 47,100,217,227, 83,140, 19,146, 40,217,119, 94, 17,195,178,166, 48, 76,165, 22,161,222,189, 15, 35, 40, 70,133,162,149,130, +243,121, 70,173,130, 60,103, 45,129,205, 21, 67,204,202,126, 55,203,101, 12,177, 39, 60,138, 80,119,145, 21,107, 78, 98,127,232, +124,159, 99, 66,163,214,253,138,139,194,215, 57,202, 26,234, 16,123,104, 70, 50, 32, 71, 10, 10, 29,153, 69,208, 2, 35,218, 69, +250,243,135, 79,200,191,252, 13,110, 95,222,234, 23,158,140,244,196,212, 71, 42, 95,124,254, 2,148, 5,143,159,238, 48,157,206, +154, 26,213,204,182,196,172, 62,116, 19, 91,128, 26,166, 50, 67,114, 85, 40, 1,233,152,252,226,226, 2,113,136,104,164, 21, 76, + 48,116,100, 48,202, 80,109,130, 16, 18, 34,180,154,243, 42, 40,215,162,150, 40, 11,236, 0,150, 23,156, 89,201, 70,155,180, 55, +170, 92, 4,199, 4, 10, 22,137, 89, 21,157, 43, 32, 80, 26,187,160, 48,128, 48,110,212, 95, 93, 74, 70,218,140, 32, 84,148, 50, +227, 92, 51,104,158,241,187,191,251, 61,126,245, 55,127,141,143,111,223,227,225,195, 29,100, 46,120,252,120,135,195,197, 21, 94, +124,245, 37,238, 30, 30,240,199, 63,189,193,199,199, 71, 28, 46,246, 56,236, 54, 96, 17, 12,155, 13,246,155, 61,222,126,248,128, +167,199, 35,164, 22,140, 73, 51,124,213, 34,145, 16, 83, 66, 2,240,250,243, 87,248,235,223,252, 10, 45,169, 37, 99, 24, 6, 72, + 36,204, 70,101,147,154,113,127,255,128,171,235, 43, 92, 94, 93,118, 13,133, 86,240,150,204, 85,107, 95,184,113,207, 76,182, 3, +115,181, 47, 93,231,125, 55, 52,180, 96,253, 95,173,139,226,214, 64, 13,205,108,141, 49, 4, 29,123, 5, 54,250,154,244, 0,151, + 20, 55, 58,134,111,179,249,129, 93, 61, 10,112, 10, 42,234,177, 66,131, 81,122,170, 82,140, 73,189,162, 65, 87, 45,117, 22, 75, +115, 10,102, 67,203,230, 9,175,171, 52, 37, 19,114,217,152, 94, 86, 30,109,205,126,175, 32, 10,168, 69,119,218,218, 89, 51,164, + 49, 66,212,203,222, 21,190,190,163, 86,139,170, 44,151,182, 65,145,148,198, 21,150,110,184,182, 30,119,218,218, 10, 41,105,127, + 77,224, 69,169,222,172,184,164,198,139, 53,203, 96, 52, 76,246, 44,250, 8,223,246,197,205,216,228,142,173,212, 24,225,229,208, +106,118,145, 50,145, 9,199,100, 1,138,128,209,200,146,211,160, 25,206,122,169, 82, 15,146, 17,169,221,237,231,235, 3, 8,245, + 9, 15,170, 32, 14, 97,249, 44,205,233, 65,253,240,244,100, 41, 83,123,147,118,238, 61,137, 10, 4, 97, 2, 75,235, 17,161,228, + 43, 22,155, 64, 52, 91,205,168,144,108, 73,144,243,209,189,208, 51, 41,184, 53, 22, 46, 14, 52,119,143,217,114, 67, 76,224,158, + 65, 33,207,226, 96,155,136,217,121,237, 50, 91,137,194,244, 35,174, 54,138,102,163,217,201,138, 23, 79, 43,237,134,254, 53,110, +213, 11,206, 78,183,233,144,102,189, 87, 52, 9, 86, 80,173,156, 20,210,250, 30,219,139,233, 82,107,207,234,240,203,102, 41,198, +128,166, 51,127,123,135,168,123,238, 26,150,144,149,238,139,239,207,154, 21,134,125,218, 54,233,228, 38,196,103,177,219,212,156, + 51, 95,245,247,133,172,244, 36,246,103, 98,161,188, 73,169,198,109,104, 54, 41, 4,152, 23,203, 28,181, 10, 84,237,234, 69,138, +173, 90, 90,231,125, 72,107,152,179, 78, 91,114, 46,104, 80, 70,137,138,223, 84, 79, 80, 61,130, 88,116,181,118,185,223, 97,216, +140, 90,116, 12, 17,243,116,194,249,116, 70,205, 69,173,109,129,140, 90, 88,141, 79,207,171, 66,211,198,157, 78,176,107, 58,225, +233, 90, 35,131, 66, 50, 49, 34, 17,230,218, 64,164, 25, 30, 42, 68, 71, 31, 69,136, 84, 12, 33,129, 56, 96, 59,238, 16, 6,181, + 48,207,179, 21,190,128,106,220, 72, 87,121, 58,222, 23, 32,170,216,150, 89,233,114, 98,100, 82,145,138,220,170,134,117,197,128, + 90, 21,196,108, 42,200,214, 71,115,141,178,141,148, 24,196,110,223,208,131,161, 4,173, 14,124,124, 87,107, 69,226, 1,145,116, + 52,208,247, 49,208, 10,163, 22,193, 79,223,255,140,243,223, 31,113,117,117,192,144, 6,196,176, 69,149,251,142,158,188,188,188, +193,197,229, 21, 62,222,125,196,124,212,174, 51,164,136, 44, 21,151, 33, 33,142, 35,164,101, 32,207,104, 85, 16,226,136, 83, 86, +245, 98,173, 25, 28, 45, 43, 60, 4,164,210, 16, 88, 1, 57, 76,172, 73, 80, 73, 61,241,177, 54,196, 97,196,169,156, 80, 90, 85, +243,190, 77, 40,216, 40,105,141, 27,144,109, 7, 42, 38,192, 72, 17,117,183,211, 76,227, 24,144,203,132,132, 8, 48, 33,139,118, + 4, 67, 72, 61, 97,172, 73, 69,136, 9,195,102,192, 60, 77, 32, 2, 82, 26,193, 53, 35,207,132, 13, 2,254,143,127,254, 23,124, +253,235,175,240,225,187,159,112,247,238, 14,181,204,120,184,187,195,225,234, 10,175,191,252, 12, 79, 15, 19,254,215, 31,191,197, +251,167, 79,184,188, 60,224,176, 25, 16, 74,197,118,183,197,184, 25,241,227,167, 15,184,123,184, 71, 41, 51,134, 20,109, 36, 59, + 34, 36,133,119, 48, 69,220,188,186,194, 87,191,254, 5, 36,217, 14,103, 28, 45,248,198, 58, 11, 52,156, 78,103,180, 6, 92, 93, + 93,216,101, 94,148,202,228, 24, 84,160,231,191,195, 8,106,108,128,139,126, 33,182,165,162,100, 86,201,103, 0, 65,168,118,209, +140, 11,228,136,245, 82, 11,108,123, 38,219, 9,166,148,144, 98,196, 44, 25,181, 1, 69, 52,109, 40,250,120,210,166, 73,220,160, +126,212,160, 99,107, 38,128, 68,105,106,186, 43,244,180, 35, 85,241,214, 60,235,239, 90,147, 97, 84, 27, 90,105, 75,190,183,249, + 93,157,218,214,201, 89, 80,222,178, 90, 93,178,249, 95, 85,119, 18,120,232, 22, 60,110,174, 76, 39, 83, 80,215,101,172,234,197, +142,167, 93, 33, 24,223,160,185,187,213,186,151, 37,140, 67, 12, 38,209, 21,222,198,172, 15, 65,119,145,170, 28, 46, 32,108, 80, +101, 57,148,181,147, 50,145,145,119,147,180, 96, 73, 65,210, 15,107, 4, 6,213,188,220,113, 43,123, 27,155, 63,155,104,137,221, +100,168,255,191, 90,126, 56, 81, 53, 21,185,123,211,101, 57,164,155,114,173,123,146,163,131, 79, 5,224,224,237,116,120, 22, 16, + 3,142, 64,208,105, 13, 9, 33, 57,216, 39, 6, 16, 59, 26,212,118,184, 85,121,205,228,163,108, 52,212, 86, 44,250,215,124,226, +164, 5, 34,153, 85,183,231,173, 87, 81, 29, 71,183, 92, 54,160,114, 39, 2, 46,254,114,195,139, 54,107,117,219, 34,120,132, 21, +237, 96,127, 39, 76,207, 97, 50,250, 90,141,217, 23, 22,213,185,207,180,152, 86, 17,168, 48, 50,156,169,244,117,236,110,246,200, +160,197,180, 78, 5,170, 77,189,244,217, 16, 46, 43, 30,185,255,117,178,112,251,149,123,104,103,159, 78, 15,148,127, 47, 43,155, + 28,140,172,215,122,138,152,238,135, 45,216,162, 53,112,117, 94,131, 77, 85,136,141,159, 17, 12, 63, 12, 72, 49,139,163,211, 10, + 77,172,197,196, 43,176,148,246,241,145,128,218, 2,114,213, 14, 91, 12,118,166,253,194, 26,242, 36,144,202, 11, 18,183, 49,164, +101,157, 42,136,190, 3, 89, 8,181, 52,139, 87,206, 8,148, 16,195,128,104,223, 77,245, 98,135,212,134,157,155, 96,123,117, 1, +180,138, 24, 7,132, 68,200,247,130, 60,149, 30, 72,212, 26, 64, 49,232,164,205, 87, 44,221, 73,235,107,172,102,244, 56, 61, 27, +100,212, 28, 17,182,226,154, 34,117,102, 75, 10, 25, 28, 2,170,110,184,251,212,130,155,122,214, 41, 13, 72,195, 14, 73, 70,228, +118, 70,206,103, 61,207,188,252, 55, 30,130,152,123,128, 72,239,151, 16, 7, 48, 39,213, 35, 84, 5,164,229,105,198,102,127,129, +192,128,148, 89, 59,245, 96, 64, 6,141,195,109,160,208, 22,186, 23,120,201, 79,134,199,221,137, 90,149,154, 32,163, 97,140,108, +184,102,238, 85,169, 19,130,114, 46,248,240,241, 61,158,142, 71,188,188,185,196,213,237, 13, 30,222,255,140,153,124,103, 25,112, +184,216,163,214,138,211,241,136, 86, 42,242,108,116,125, 17,140, 67,194,118,136, 40, 19,161, 49, 35, 79, 74,226,137,126, 96, 17, +236, 66, 72,170, 42,103,125, 8,209,128,163,141,221, 67, 28,112,154, 39,112,217, 98, 23, 66, 15, 15, 24,198, 17, 1, 51, 90, 1, +106, 85,161, 76, 64,192,169,204, 58,250, 13, 58, 34, 77, 12,205, 97,158,102, 96,206,152,114,134,108,183,216,238,246,224, 52,116, + 10, 81,149,108,150, 39,198, 97,183, 5,170,102,244,166,113, 64, 74,140, 57, 87,108,247, 35,254,225,111,255,128, 23, 47, 95,224, +167,239,222,226,227,251, 79, 40,243,132,233,241, 9, 23,215, 55,120,249,250, 37,238, 30,158,240,199,255,120,131,251,135, 71,220, +222, 92, 99, 28, 6,180,121,194,102,183,193, 48,142,120,255,254, 14,159, 30,239, 81,207, 51,198, 20,144, 98, 0, 15, 17, 60, 4, +196,148,176, 29, 18,110, 95,238,241,139, 95,125,137, 33,141,104,212, 48, 14, 90, 36,149,234, 85,181, 86,180, 79,143, 79,184,190, +185,194,246,176,183, 39, 91, 64,164,190,251,138, 98, 7,149,139, 89, 66, 63,164,105,213, 21,192,208,143, 70, 73,208,120, 76, 14, +154,197,109, 20, 57,199,122,135, 16, 48, 12,163, 85,216,250,226,249,133,238, 99,252, 72,140,228,201, 72, 16, 85,240, 7, 2,135, + 6,110,209,190,123, 21, 71,185, 13, 41,164,128,136,173, 30,105, 33, 64,152, 80,167,138,124,158,236,130, 72,157, 40,133,160,175, + 78,128, 94, 20, 20, 22,111,109,235,154,109,223,129, 54,179, 21,233,116,194,245, 19,205, 46, 11,117, 67, 24,207, 29, 74,164,171, +157,174,165, 29,127, 99,152,123,130, 32,205,118,229, 16, 48,196, 14, 66, 35,200,193, 40, 83,214,209,169,109,202,138,252,186,182, + 11, 6, 52,148, 21,119, 61, 44, 59, 72,159, 48,240,146,108,198, 85, 39,103,194, 4, 10,234, 19, 47,246,115,181, 21,210, 4,180, +164, 26,172,199,242,205,166, 16, 66,250, 89,113, 85,251, 92,183,184,214,218,137,100, 85,124, 98,179,100,201,123,247,217,132,236, +176, 81,129, 99,224, 65, 57,255, 85, 44,245, 78,213,224,165, 20,180, 0,108, 2, 1, 33, 24, 18,117, 21,219, 89,107, 15,175, 89, +198,239,166,138, 71,232, 19,142, 37,187, 92, 22, 26,222, 74,104, 70, 43, 47, 61,179,138,222,168, 71, 76, 47,153,237, 30,119, 25, +140,205,175, 62,109,107,108,170,129,106,108,157, 80, 45,121, 76, 45,124, 75,119, 74, 28,236,112,247, 48, 25,238, 73, 98, 44, 97, + 89,123, 54, 49,235, 41,247, 34,233, 89,212,170,131,157,104,161,208,173, 59, 74,145, 98,107, 19, 47,170, 90,143, 26,110,180, 6, + 26,201, 18,161,203,230,109,183,112, 44, 2,161,144,102,120, 83, 89,206,115,215, 65, 41,171, 66,189,255,246, 55, 88, 97,195, 6, + 78,178,237,140, 16, 66, 51,116,141,159, 19, 85,122,168,145, 23,251, 20,104, 73, 72,107, 48,155,179, 18, 46,179, 40, 77, 17,162, +129, 75, 25,192, 92,117, 74,146,179,118,183,195,160, 54,184, 8,194, 44, 21,165, 11, 16, 9, 82, 51, 2,116,244,206, 70, 43, 36, + 0,211, 52,161,204,165, 71, 1,147, 52,133,228,180,250, 76, 27,225,223,181,167,174,249,187,194, 12, 12,196,200,164,103,144,144, + 38, 19,138, 71, 81,179, 6,107, 33,104, 1, 64,118,119,114,100, 32, 0,149,129,113,216, 33,141, 3,142,119,143, 56,205,211, 34, +238,101, 91,195, 64,167, 17, 3, 15, 29,244,149, 44,182,188,148,217,178, 31, 8,211, 52, 97, 87,206, 8, 67,244,226,113, 25, 81, +249, 78,178,227,103, 72, 3, 1,252,152, 35,163, 1, 49, 41,126,209,115,177, 99, 82,201,189, 10,125,150,209,117, 12, 9,185, 84, + 76,117,198,135,187, 71,140,105,131, 23,215, 87,234, 38, 49, 21,244,213,213, 21, 54,187, 45, 30,238,239, 81,138,210,133,148, 95, +171, 85, 75, 26, 24,227,160, 23, 39,106,133,200,132, 20, 9, 67,136, 22,110, 17, 49,152, 32,140,154,133,100, 72, 65, 19,160, 20, + 65, 26, 6, 8, 8,231,227, 25,173, 9, 54,187, 17,197, 42,219, 52, 68,112,100, 21, 27,152, 34, 87, 95,100, 32, 13,170,216,230, + 24, 49, 12, 91,203,184,173, 93,224,196,156, 16,134, 1,129,128, 58,159, 49, 79, 39,148, 50,161,200, 9,135,195, 14,227,102,196, +233,241,168,225, 33, 49, 64, 74,198, 97, 51,226, 31,254,225,239,113,115,115,137, 31,191,251, 1,159, 62,222, 35, 31,103,156,238, +143,216, 95, 95,227,229,235,207,112,255,120,198, 31,255,227, 27,220, 63, 30,113,113,115,129,253,120, 64,206, 39,236,183, 91,236, +182, 7,252,244,254, 35, 62,126,250,132,233, 52, 35, 4,253, 29, 98, 84,177, 24,167,132,113, 72,184,190,217,225,243,215,159, 35, +166, 4, 48, 97,220,237,128, 16, 80, 12, 18,226, 28,255,243,249,132,214, 4,215,215,151,136,198,233, 14, 97,232, 97, 6,209,172, +141,117,181, 91, 10,172,223, 27,135,160, 98, 60,115, 64,232,132,172, 41, 25,222,188,210,145, 21, 78,228,163,243, 30, 44, 1, 45, + 8, 66, 72, 58,234, 76,209, 2, 60,168, 35, 91, 99, 12,138,125, 52,197, 58,135,216,213,201, 68, 2, 72, 65, 43, 5, 82,116, 79, +199, 33, 34, 36,213, 50, 72,209, 20,185, 90,178, 9, 85, 84,117, 26,250, 51,109, 94, 86,166,158,119,207,166,241,224, 24,208,108, + 23,171,192,138,185, 59, 28, 52,135,161,160, 74,214, 81, 59,209,210,117,245,125, 28, 43,157, 46, 4, 32, 16, 56, 69,196,152, 0, + 35, 38,162, 7,225, 12,221, 78,196, 38, 80,117, 7, 77,111,161, 69,150, 60,233,181,110,128,160, 73,117,181,116, 74,154,183,133, + 30,100,226,185,232,145, 98,247,121,187, 55,217,223,113,119, 42, 52,114,127, 61,245, 3,121,109, 81, 18,243,146,147,237, 55, 23, +158,247,130,112,117, 7,156,171,160,201,112,179,108, 81,191,190,239,246,136, 86,114, 5, 59, 41,200,132,155,227, 86,165, 79, 60, +171, 95, 72,109,241,179, 47, 28,251, 69,207, 33, 6,183,233,228,181,102,204,115,247,105,117,127,127, 93,148,255, 29,222,130,103, +151,189,200,243, 75,116,253, 47, 71,249, 58,255, 93, 76, 0,217,173,154,208, 49, 50,153,206, 70, 86,232,108, 45,128,249, 25, 1, +174,154, 24,212, 98,233,208,215,207, 6,194,106, 43, 22,132,167,168,177,141,246, 59, 16,106,229,147,119,158, 72, 7, 62,149,188, +138, 94,109, 30,210,222,125,226,138, 73,181, 12,140, 90, 59,124, 70,177,219,161,175, 9,168,139,189, 20, 82, 20, 35,233,187, 29, + 66,207, 39,112,245,119, 23,207,185,126,162, 25,168,202,224, 46,253,207, 49,100,117,255,156,123, 14,187, 90, 48,171,185,108,164, + 22, 99, 20, 8,166, 90, 85, 43,149,171,253,126,122,206,107, 99,163,233,110,205,154, 16,152, 93,182,206, 21,135,203, 3,182,219, + 61,216,206,154,233, 84,113, 62,158,213, 54,234, 56,116, 11,251,241, 24,231,231,190,255, 21, 12,105, 37,254,140, 38,138,107, 22, + 7, 77,224,142,221,140,129,177,137, 65, 75,100,171,170,154,148, 69, 84, 41,132, 97,183, 5,199,128,167,211, 19,166, 41, 35,196, +212, 1, 85,108,180, 77,103,187,243,160,206, 2, 61,239,217,200,155, 74,226,244,152,106,215, 30,196, 53,130, 74,217,177,171,112, +142,213, 94,170,167, 19, 53, 50,204,167, 69, 80,218, 72,149, 89, 21,206,158, 8,229, 94,228, 92, 50, 38,169,248,244,225, 35,134, +113,192,213,197, 14,155, 52, 98,134,118,193,187,253, 14,200, 5, 79,143,143, 72,166,206, 45,185, 96,147, 34, 60,198, 35,198,136, + 54, 23, 80, 10,104,181, 42,247,118, 8,160, 73, 69, 15, 49, 38,148, 90,145,204,206,114,124,120,232,192,145,237,144,240,233,116, +198,124,174,136, 28, 16,168, 33, 79, 51,208,128,237,168,255,156,167,163,160,148, 10, 12, 98, 80,253,102,216,213,136,200,106,209, +113,106, 39,197,132,237,110,143, 48, 12,200,101,214,243,163,100, 75,134, 23, 28,246, 7,220,220,220,224,211,199, 15,152,167, 25, +105, 19, 80,206, 25, 23, 87, 7,252,250,215,191, 70, 24, 34,222,190,121,139,251,143,119, 56, 61,205,200,167, 51,174, 94,188,192, +213,171,107,220, 63, 62,225,143,127,122,131,135,167, 51,174, 47, 15, 24,134,132,167,199, 59, 92, 92,238,177,187,216,225,135,183, + 31,241,241,225, 30, 50,207, 8,129,145,198, 0, 78, 12, 74, 17, 41, 4,108,134,136,171,235, 61,174, 95, 92, 35,109,212,102, 54, +238,182,224, 20,113,158,206, 93, 72, 35,198,151,126,124, 60,226,246,246, 6,251,253,190, 67, 27,188,242,119,164, 33, 89,206,187, + 64,197, 94,227,184, 89,241,167, 93,212, 84,109,103,205, 93,160,227,175,168, 24, 91, 59,196, 0,110,202,220,246, 17,164,103, 15, + 83,212, 46,206, 43, 85, 52, 6, 5,243,214,214,128, 8, 94,242,162, 3,173, 0, 23,150, 22,104, 93,169, 52, 49,198,254,108,127, +134, 30,168,176,112, 34,106,161,219,189,217,118,236,128, 42,113,201,207,120, 15, 37, 33,182, 20, 54,237,200,137,158,195, 56, 90, +107,104,165,104, 21,238, 23, 2,233,103, 17,131,210, 3, 91, 63,154,213,227, 91, 91, 67,228,214,233, 91,126, 25, 5,142, 8,156, + 58,190,214,119,218,204,186, 95, 94, 20,200, 54,163, 36, 70,171,197,108,125, 98,107, 2,234,137, 78,100,186, 16, 80, 67,160,136, + 74,134, 68,245, 75,144,208,179,177,225,116,178,117,202, 23, 96,122, 11,233,106,127, 98,130,148,134,103,210,236, 85,160,137,191, +111,100,140,120,255,220, 59,135, 30, 43,223,115,211,134,221, 45,164,224,168, 22,212, 89, 16, 82,234,231,144,255, 44, 88, 65,111, + 58,216, 40, 40, 31, 94, 44,166, 86, 25, 7,140, 34, 21,200,232,124,126,113,231,128, 39,223,184,168,203,172,140,193,214, 40,232, +250, 33,159,182,232,136,184,149,188, 92, 68,171, 67,189, 85,233,110, 50,103,111,115, 47,151,184, 79, 30, 92, 88,216, 65, 77,173, + 62,243,157,183,254,190,105,210, 97,205, 85, 51, 36, 44,117, 82,207,156, 69,248,232, 23,178,172, 60,233,206,230,167,182,232, 70, +150, 34,198, 66,117, 68,186,152,235, 57, 15,126,161,134,246,239,212,136,118,180, 10,200,161, 16, 16,124,133, 99, 86, 81,113, 7, +197,234,217, 9, 86,112,156,203,180,216,162, 65, 61,244,169, 72,235,127, 70, 46,139,120,178, 59, 48, 68, 25, 10,173,169, 22, 3, +162,207,162, 54,124, 42, 6,211, 21,128, 21,154, 20, 48,166,132,193,190,131,156,139,217, 49,173, 16, 19,224,226, 98,143,180, 13, + 32,214, 28,137,211,227, 9,231,167,147,126,175,150, 93,208, 45,198,242,151,164, 5,211, 56,180,149,120,208, 50,224,153,164, 59, +100, 60, 44,225,245, 74,109, 0, 0, 32, 0, 73, 68, 65, 84,169,182, 10,230,134,113, 80,160,151,254, 94,138, 75, 86,125, 70, 68, +107,140,221,238, 2,219,205,128, 10,193,253,227,157,158,139, 62, 57,139,201, 32, 77,122,174, 14,105, 68,108,128,216,103, 43, 21, + 40,249,108,162,191, 96, 2, 76, 1,137,174,153,162,135,146, 52,172,171, 86, 90,198, 45, 14, 95,176,100, 50,183,120,249,248,109, +136,131,146,187, 8,253,176,175,162, 88, 82, 33, 65, 46, 21,224,136,159,127,254,132,214, 42, 94,220, 94,227,234,230, 6,143,247, + 15, 72,131, 50,178,207,211,132,167,199, 19,110,175, 14, 8, 32,141,164,227, 1,176,136,190,148,162,141, 55, 84, 60,193,134, 53, +165, 16, 16,147,118, 60,109,214, 3, 61,162,106, 7, 39, 64, 26, 19, 8,132,211, 52, 33, 50,212, 75, 46,217,210,189, 28,237, 71, +154,109,219, 8, 41,105, 24, 73, 76,140,221,102,163,163, 36,209,145, 62, 51, 97,220,108, 85,108,193, 1,243, 60, 99,122,154, 16, +134,100,113,120,130, 52, 50,110,110,111,113, 60,157,241,244,240, 0, 6, 97,206, 21,183,175, 95,225,247,191,253, 45,136,128,239, +191,127,139,251, 79, 15, 56, 61,158,113, 62,157,112,251,226, 37, 46,175,175,241,225,238, 19,254,247, 55, 63, 96, 42, 13, 55,183, +215, 24, 2, 35,159,102, 92, 94,238,177, 63, 92,224,205,219,119,184,187,187, 71,206, 5, 3, 3,105, 36, 85,210, 39,205,115, 79, + 67,194,203,171, 61, 46,111, 15,250, 51,198,128,221, 97, 11, 30, 35,230,236,116, 59,235, 22, 65, 56,159,180, 48,184,186,186,234, + 22, 14,221, 19, 87, 27,255,234, 33, 64,129, 17, 73,109,136,222, 49,198, 16, 76,117, 89,186,215,155, 2, 33,134,193, 84,217, 11, +120,165,154, 29,145, 45,186,146,221,227,233,234, 98, 19, 57,181, 10, 77,251, 98,173,122, 35, 51,106, 54,208, 70, 41,154, 49,128, +134, 92,102,237, 16, 98,210, 61,111, 41, 64, 17,195, 71,234,164, 70,170, 96, 72,186,118, 81, 49,147, 35, 98,205,254,101,108,119, +105, 90, 57,251,158,204,164,185, 70, 99, 91,246,198, 10, 40,209, 56,226,186,212,246,230,253,181, 72, 87, 50, 12,112,211,177, 57, +194,194,236,102,110,160, 48,152,213,175,174, 44,162, 6,178,160, 37, 1, 79,197, 47, 89, 85,192, 43,177,146,180,214,119,237, 4, +157,148,137,253, 89,221, 10,200, 4, 18,219,239, 89, 84,109,179,247,151, 93,247,103, 22, 63, 93, 95,160, 79, 50,106,191, 8,100, +229,239, 94, 14, 91,244, 52,175,101, 54,233, 10,109,239, 18,189,144, 82,208,139,249,214,155,115,234,101, 25,243, 27,170, 84,130, +253,125, 65, 45,158,234, 21,182, 44,109,114,193,151,203,182,161,147, 51, 91,145,176, 93,154, 98,191, 15,160, 5,208,218, 2,213, +125,212,180,248,156, 29, 14, 94,139,237,170, 85,232, 14, 49,208,137, 78,158,150,200,208, 37,242,180,245,184, 91, 21,187,181,191, +200,159,247,245,133, 62,195, 13,170, 38,247, 20, 50,143, 2, 86,212,238,114,169,119,166,189, 77, 63, 40,120, 56, 76, 83,161,113, + 47,104,106,183,122, 18,209,127, 10,106,241, 48, 22,136,244,226,220,223, 49,167, 5,118, 7,194,127,250,123,109,162, 98,223,165, +159,237, 78, 38,212, 98,162,106, 70,134, 61,175, 62,121,227, 85,118,124,103,223, 91,199, 46, 54, 5,242,128, 27,233,207,151,190, + 7,181,182,190, 66,241, 41,129, 88, 81,170,234,119, 69, 82,151,172,211, 69,189,212,171,186,120,138, 97,185, 99,194,144, 18,152, +129,156,181,147, 87,241, 32, 67, 74, 1, 18,176,191, 56,104,193, 19,245, 12, 57, 31, 79,152,143,249,217,196, 34, 4, 70, 37,177, + 34, 8,221, 10, 7,211, 8,244,231,201, 7,105, 6,131, 1,205,203,253,201, 13,173, 40,156,103, 59,170,192, 27,129,122,210, 91, +176,149,101, 41,130, 97,123,129,113, 24,241,240,248,132,227,227, 17,187,195, 14,212,106,119,109, 5,203, 83,108,173, 42,116,134, + 53, 55,130, 18, 48,213, 25,179,135,104,145, 62,183, 37,103,240,118,163,234,120,235, 3,122,166,121,199, 47,154,144,170, 11,160, +224, 15, 33,235,135, 35, 13, 82,129, 52, 90,232, 64,245,204,219,102, 35,198, 0, 20, 65, 43, 21, 3, 15, 56, 30, 79,120,120, 56, +225,230,230, 26, 87, 55, 23,120,255,243, 78, 5,120, 4,243, 47,235,113,185, 25,148,129,171, 34, 14,160,205, 25,105,171,192,153, +211,121, 54,153,127, 64, 28,146,122,255, 88,247,143,173, 78, 11,172,164, 1, 45, 2,105,187,197,241,233, 17, 85,148,168,165,176, +155,128,211,121,234, 60,203, 33, 2, 3, 1, 97,208, 24,210, 20, 71, 29,177, 86,245,238,213, 82, 16,199,136,205, 97, 15,204,106, +173,153,142, 71, 76,179,126,176,220, 0, 30, 18,168, 2,183,215, 47, 49,132,136, 31,254,252, 6,231,249, 17,151,219, 3,126,241, +245, 47,241,219,223,253, 14, 53, 87,252,244,237,247,120,248,112,143,251,199,123,148,169,225,197,235,215, 56, 92,238,241,254,227, + 71,252,249,219,239, 81,114,195,245,213, 78,147,235, 78, 5,135,139, 29, 54,135, 29,126,124,251, 14,159, 62,221, 97,158, 51, 66, + 96, 12, 67, 48,251, 75, 66,160,136, 49, 68,220,222, 92,225,240,226, 18,137, 3, 98, 72, 24, 47, 15,192,102,128,212,102,202, 74, +233, 86,160, 90, 43,206,211,132,155,235, 43,108,183,155,222,101, 19, 5, 27,119, 85,139,246,212, 17,120,150,220, 49,155, 77,234, + 42,192,197, 14, 27,144,118,139,150,138, 21,250,136,177, 64, 12,180, 17,109,164,100,139, 87,243, 26,235,136, 21,181,234, 75, 56, +207, 93,141,204,164,197,138,160,244, 46,210,253,186,205,246,149, 33, 16,132, 27,202, 92, 81,114, 0,178, 70, 81,166, 56,244,248, + 86, 14, 58, 2,115,111, 59, 27, 13,173,148,138, 22, 53, 32,168,239,143,221,219, 75,253, 30,177,139, 65,137,139,139,185,133,160, +193,171, 58,226,140, 65,215, 56, 68,203,232,185,138,160,213,162,251,115, 22, 4, 19,177,233,164,196, 70,103,196,136,148, 44, 9, +190, 90, 52,174,121,194,185,233, 56,206,161, 59,180, 74,180,107,210, 35, 73, 93,140, 68,100,133,142, 84, 13,168,208, 96, 88, 85, + 84, 55,210,145, 48,121, 0,146,237, 47,217, 52, 52, 62, 89, 91,217,197, 56, 4, 43, 28, 74,239, 89, 66,224,174,175,168,221, 94, +165, 32, 22,178,213,163,184, 2, 94, 13,246,104, 20,122, 82, 87, 15,142,113,222,190,214,251,253,130,139, 49,246,223,137, 61,100, + 69, 76,201,110,105,107,154, 32,103, 19,135,178, 34,164,137,238,128,121, 21,150,210,224,144,157,208, 47,115,216,212,167, 91,130, +220,161,111,234,249,102, 97, 85,109,237,111,127,182,162,228, 78,198,211,226,175, 24,187,220,152, 1,188, 34,182,209,130,251,245, + 74,215,217,248,210,178,138, 34, 77, 1, 95,171,165, 69,134,160, 66, 69,169,253,179,172,121,233,244,188,171,127,206,131,215, 41, +141,148, 2,167, 39, 5,203, 84,112, 5,122, 88, 97,120,171, 77, 30,124,122, 16, 83,210,169, 68,173,152,165, 90, 97,160,154,165, +102,130, 64,223,249,215,226,106,110,233,223,149, 22,226,234, 78, 80,183,140,116, 45, 69,105,213,166, 55, 43,196,176, 77,249, 22, + 42,161, 95,244, 10,181,162,158, 46, 8,187,208, 53,214, 58, 23, 45,150, 19,219,159, 81,128, 97,163,151,186, 2,119, 42,138,152, +176, 76,244,159,119,113,177,197,197,205,101, 95, 5, 73, 41,120,186,127, 82,113,165,235, 72,236, 92, 18,172, 10, 20, 24,147,129, +232, 57,116,201,197,163, 94,212, 88, 17, 87, 87, 20,201,253, 38, 97, 72,193,166, 29, 65,117, 23, 82,193, 80, 16, 88, 17,224,176, +189,196, 16, 70, 60, 61,126,111, 89, 4,140, 86, 26, 74,206, 72,141, 53, 37,174, 85,196, 72,125,106,199, 20, 77,108, 63,163,228, +108, 58, 32, 88,179,163, 34, 80,142,188,116,234,125, 28,103,146,184, 10, 32,218, 88,171,153,128,134, 65,214, 29, 39,101, 22, 55, +221,167,147,117,192, 98,156,110,183,200,204,181, 64, 0,140,227,136,135,167, 35, 30, 31,143,120,245,250, 18,215,215, 87,216,239, +119,152,207,103,173, 0,165, 98, 11,237, 46,121, 63,130,238, 25,114,202, 16,243,231,198, 52, 34,114,192, 24, 25, 40, 5,219, 65, +191,200, 96,208, 4,106, 13, 45,207,118, 25,233,139,125,216,141, 40, 85,211,218, 2, 17, 90,110, 72, 38,150, 58, 29,159,176,217, +110, 32, 41, 97,183, 9, 56, 14, 64, 76, 73, 59, 1, 16, 74,107,152, 37, 99,164, 45,198, 52, 96,179,217,162, 72,197,233,241, 1, +249,244,136,105,154,186,141,165,206, 51,102,110,248,236,197, 75,220,222, 92,227,155,111,191,197,221,199,119,120,241,234, 37,126, +253,183,191,197,175,126,243, 43, 76,211,132, 15,223,255,132,135,187, 71, 60, 61,158, 48, 72,192,205, 87,215,216,110,246,248,249, +253, 7,252,249,199, 31,145,198, 13, 46,175, 19,242,148, 81,167, 25,151, 55,215, 8,105,192, 15, 63,218,133, 62,205, 72, 32,140, +145,109,223, 60, 32,134,136, 49, 6,220, 92,239,113,251,106,167, 66,159, 20,177,185,220, 34, 13,106,183,152,107, 69,157, 51,170, + 85,199, 42,172, 56, 35, 72,195,213,229, 5, 82,138, 11,198, 84, 68,149,222,194,160, 32,207,144,167,250,238, 90,193,100, 85,105, +196,168,251,221, 58,247,248,200,192, 97,217, 93, 11, 41, 9,176, 45,116,186, 16,244,162,174, 34,125,215, 94,171, 94, 58, 14,236, +168, 77,144,155,218, 2, 57, 14, 74, 22,236, 47,151,216, 75,111,135, 40, 5,196,164, 93,113, 32, 65,133,146,252, 20,220,162, 59, +231, 92,171, 5,186, 4,125,177,109,181,227, 59,193, 92,178, 93, 98,218,178,201, 74, 68,197,196,150, 98, 88,128, 74,214, 85, 85, + 3,198,232,193,169,187,124, 19, 31,177, 98, 41, 81,103,181, 2,154,239, 88, 90, 1,153,178, 83,139,209,160,202, 94,143,233, 92, + 93, 20,196, 42, 14,115,171, 23, 89, 23,204, 28, 12, 46,146,123, 60,170, 62,255,171,203,134, 44,210,178, 17, 80, 21,255, 43, 54, + 38,100, 27,235, 11, 90, 47, 32,136,150,112, 17, 16,158,229, 44,244, 34,204,139, 0, 49,101,189,177,200,251, 57, 71, 58,230,182, +127,184, 2,115, 96,187,116,203,254,238,187, 68,248,122,174,153, 58, 91,139,188, 16,212, 9,224,211,133,234, 98, 52,211,108,192, + 38,128,108,118, 74,129, 90, 1,187,192,183,255,172, 86,152,144,152, 15,219, 4,185,160,103, 43, 0, 47,220,156, 29,239, 35, 91, +162,246,108,199,238,163, 99,142, 1,129,130,103,168,152,187, 64,139, 90,166,184,140,144,215,204,116, 43,110,200, 52, 36, 34, 22, +247,187, 14, 61,106, 42,166, 37,120,168,142,254, 12, 69, 68,237,157, 88,144,220, 94, 96, 20, 35,168, 45,145,162,134, 41, 22, 65, +181,159, 63, 37,127,159,107,239,208,215,212, 54,119,234,232, 63, 47,235,196,173, 74,183, 85, 49, 27,100,136, 85, 58, 89,173, 75, +173,173,233,229, 16,220,134,183,202,238,142,122,129, 17,251,248,158,204,158,173, 86,200,236, 0, 35, 16,106,109, 40, 69,250,200, +155,104,133, 3,110, 13, 69,128,154, 27,230,217,187, 87,237,236, 55, 73,217, 37,165, 86, 72, 34,108, 54, 90, 52,234, 56, 95, 51, + 64,124,237, 81, 50,112,113,125,109, 56, 94, 32,166, 1,143,247, 15, 56,157,207,125,116,175,247,133, 22, 47, 30, 54,165,208,162, + 21, 51,194,243,209,237,241,225, 14,253, 41,171, 16,155,214, 39,214,227, 56,232,251,109,159,119,149,220, 33,107,126,243,143,251, +107, 72, 35,156,143, 39,212,156,123,146, 96,100, 32, 17, 33, 55,221, 62, 12, 60, 32, 38, 61,235,213, 82,171,174,137,156, 51,164, + 85,132,160, 99,255, 82, 20,196, 51,112, 66, 92,231,251, 98,153,132,244,135,183,239,246,196, 84,198, 54, 2,204, 70, 89, 74, 49, + 42,163,183, 0,173, 54, 11, 40, 80,223,177, 87,132, 67,136,120,124,122,196,135,187,143,120,245,250, 5,110,111,110,176,223,111, +209,106,198,249,120, 70, 8, 1,227, 62,161, 65, 52,156,131, 3, 38,201, 8,194, 40,181,234,206, 36, 38,148,167, 25, 44,218, 85, +234,206,194,118, 46, 57,163,205,106,151, 17, 38,164, 33, 97,224, 1,211,211, 81, 31, 50, 34,108,134,134, 33, 6, 76,231, 51,206, +231, 51, 54,219, 17, 0,176,217, 14,216,111,107, 63,208, 17,180, 7, 11, 41, 97,123,216, 99,179,221,161, 53, 32,159, 39, 76,167, + 19,230,243,209, 19, 32, 64, 13,152,159,142,120,245,242,107,188,254,234, 51,252,240,211, 91,188,249,246,207,248,252,245,231,248, +135,127,254, 7,124,246,197,151,120, 58, 62,225,231, 31,222,225,252,120,196,221,195, 3,194, 56,224,234,250, 21,136, 4,111,223, +253,132, 31, 63,124,194, 16, 7,108,198,164,190,201, 82,113,117,121,137,237,110,135,111,223,252,128,159, 63,126, 64,157,179,229, +237, 6,251,252, 35, 82,100,164, 24,112,121,177,195,235,215, 47, 49,151,134,152, 26,246, 23, 23, 24,134, 81, 87, 7, 45, 67,102, +125, 65,164,101,181,125, 53,224,124, 44,184,186,190,192,102,187,241, 57,141,197,129, 54,176, 56,168,195, 33, 23,244, 44,171, 89, +109,111,122,249, 70,183,112,128, 13,242, 97,128,159, 30, 84, 99,251,183,213,200,207,119,186,170, 52, 94,196,153,250, 60,105, 86, + 58,168, 65,114, 54, 86,251,208,115,192,245, 98,179,161,176,100, 61, 48,141,234,167,153,226,165,119,157,186, 31, 87,150,114,206, + 89, 83,214, 34,161, 22,245, 61, 83, 82, 26,221,114, 57,182,197,243, 29, 66,159,248,196, 97, 48, 96, 76, 65,233,151,185,142,192, + 21,132, 99, 59, 84,179,166, 53,169, 32, 81, 20, 43,219,162,108, 73, 11,211, 29,174, 78, 64,146,129,139,102, 52,243,253,170,154, +127,161,212, 73,155,221, 4,162,186,146,186, 82,110,203,178,131,243, 11,147,171,217,242, 66,208,206,167,233, 33,199, 22,148,193, +254,185,147,142,242,106, 43,166,128,239,217,178,230,243, 14,157,234,197,157,104, 86, 93, 8, 0, 39, 87, 40,116,141,225,130, 97, +169,205,178, 20, 44,133,139,171, 90, 74,201, 71,187, 70,209,163, 96, 34, 57, 2,139, 98,127,189,251, 21,139,202, 36, 59,216, 27, +137, 9, 52, 3,194, 10, 27,235,241,162, 30, 57, 75, 29,127,210, 12, 90, 68, 93, 5,239,208,156,103,153,224,180, 44,149,123, 39, +110, 8, 96,219,166, 47,152, 84,135,243, 52,233,153,246,254,191,245,145, 54,173,172, 80,134, 98,237, 90, 5, 82,166,133,172,216, +226,207,199,223,122, 25,164, 24,123,106,155,228,210,225, 52,235,119,177,245,204,118,253, 69,168, 46, 96, 35,159, 2, 40, 58,119, +129,209,168,200, 80, 86, 24, 89,244,117,137, 67,165, 56,104,134,133,246,171, 75,160, 73, 41, 21,193, 82, 8, 59, 65,177, 71,183, +182,133,240, 71,100,223,181, 91,218,202, 51,162,160, 71,230,138, 16, 74, 89, 44,195, 61,243,189, 25,121, 81,164, 71,179,206,179, + 70, 89,207,181,232,207,193, 1, 97, 72, 42, 86,174,130,145, 53, 68,203,220,121,125, 34,201,204, 40,181,128, 34,112,251,226, 70, + 45,216, 49, 32,113,195,211,227, 17,199,199,220,247,219, 93, 16,222,117, 28,207,133,147,125,101, 34,205,173,234,234,254,114,240, + 19, 47,235, 41, 10,122, 38,111,134,132, 72,107,219,119, 65,106,164,193, 74, 85, 48,110,174,113,113,121, 1, 42, 25,231,211, 89, +161, 50, 28,186, 0, 29, 22,233,173,236, 31,234,107, 39,237,214,243, 2, 73,130,122,211,137, 44, 41,177, 86, 72,101,196,117, 16, + 0,185,232,200, 14, 18, 90, 5, 11, 84, 90,108, 62,160,134,138,138, 49, 42, 33, 77,154,147,149, 84,208, 16,147, 30, 52,165, 20, +139,103, 85,200,200,221,195, 19, 66, 32,236,183, 7, 92, 93, 30, 80,230, 51, 78, 31, 63, 32, 13, 35,104,183,197,148,207,168,121, + 82,191,178,161, 47,107,206,136, 49,170,160,202,169, 92,165, 96,191, 25, 65,118,104, 73, 46,186,147,173, 21,141, 25, 67,138,200, +245,140, 90,213,103,238, 31,142,176, 18,140,220,154, 18, 67, 80, 40, 76,204, 64,109,166,128,142,216,111,183, 24, 55,131,114,183, +107, 69,153, 39,204, 79,143,168,229,140,106,201,102,166,121,196,213,229, 37,190,252,226, 11, 60, 62,156,241,253,247,111,241,234, +243,207,240,143,255,252, 79,184,253,236, 21,238, 62,221,225,227,219,159,241,120,255,132,249, 84, 48,238,119,216,238, 15, 56,157, +207,184,127,124,192,221,253, 61, 54,105, 64,160,128,243,227, 3, 98, 72,184,121,121, 3, 10, 1,223,124,251, 6,239,127,190,135, +148, 25, 32,141,172,229,196,106, 91, 11,140, 52, 4, 28, 46, 6, 92, 93,239, 52,177,172, 17, 46, 15,215, 24,134,168,227, 92,129, + 37,215,233, 88, 87, 59,217, 1,167,211, 17,141, 10, 14, 87, 7,196,196,168,173,120,131,101,232, 95, 21, 91,248,197,174,145,186, +154, 3,239, 21, 49,172,131,108,166, 6, 94,118, 98,170,168,230,168,251,222,214,227, 63,105,133,106,125,174, 44, 21,169, 75,246, +183,237,242, 69, 4, 82, 50,178, 93,140,105, 72,102,117, 50,171, 74, 19,228,170,192,147,148,210,106, 28,153,156,164,164,212,174, +166, 43,157, 20, 19,116,229, 29, 86,249,210,161,235, 64, 22,241,155, 32, 26,102,146, 44,165, 43,215, 2, 22, 77,162, 10,145, 33, + 85,225, 51, 28, 3,196,178,208,165, 42, 76, 7, 6, 13,137, 72,170,170,247,231,132,116, 31, 12,182,181,194,226,136,214,253,179, + 79, 32,176, 62,236,165, 11,180,180, 75, 46,186,187, 51,109,128, 64,128,106, 5,136,225,194,200, 46,150,230, 42,167, 85,148,164, +111, 3, 21, 82,163, 57, 9, 36,220,199,214, 20, 8, 92,245,112,227,192, 96, 97, 21,156,145,114, 28, 32,238,138,113, 74, 31, 86, +227, 84, 88,154,158, 24, 74,150, 1,214,171,145,164,106, 88,143, 81, 40,153,150,241, 43, 75, 48,161,163,199,137, 54,176,212, 30, +164,228, 86, 0,189,168, 43, 24, 10,246,145, 90,117, 84, 31,162,241,189,139,118,135, 70,180, 91,160, 86, 97,149,216, 75,125, 74, +225, 66, 39, 18, 64,109,201,203,234,177,216,216, 94,253,214,209,132,139,205, 2, 90, 44,155,192,156, 34,122, 65, 7, 43, 48,100, +185,160, 97, 97, 43,182,178,232, 98,179, 21,145,108, 61,210,245,255,159,109, 74, 84,139, 22,167,244, 23,172,119, 15, 90, 97,219, +203,250, 51,211,224,248,100, 89,229,175, 47,216,215, 62,170,183,159,217,167, 46, 46,238, 18, 17, 20,152,243,103,149,180,232,110, + 0, 11, 71,214,115,192, 33, 48, 85, 59, 70, 83,206,117,173, 7, 69, 2, 23,245, 45, 40,233,172,162, 33,160, 9,247,139, 92, 28, +205, 44,189, 78, 84,251,150,216,237,140,134, 60, 23, 13,123, 41,217, 60,217,138, 32,143, 28,112,156,102,212, 90,177,219,142,136, + 49, 88,178,102, 69,206,181,235, 28,230, 82,112,253,234, 26, 87, 23, 7,156, 75, 70, 74, 3,206,231, 9,167,227, 9, 13,185, 23, +177,158, 81,222, 68,108, 26,161,146,231,158, 94,231,216,106,105,166, 61,117, 77, 4,119,219, 34,208, 84, 3,194,132, 97,136, 24, +134,193, 62,203, 96, 19,148, 12,178,189,120,147,130,221,230,128,237,120,129,227,253, 3,206,211, 73,221, 50,204, 26, 73, 12,255, +124, 10,134,141,166, 48, 6,142,157,192,106,190, 64,117,140, 16, 35,133, 1,129, 38, 72, 41,200, 83, 70, 8, 81,213,239,110,199, +112,165,109,143, 18,116,118, 55, 7,133,191,144, 82,218,208,128, 92, 10, 46,118, 59,221,155, 20,179, 16,152,159, 19, 28, 33, 77, +237, 95,196,250, 96,115, 76,248,112,127, 7, 17,193,126,183,199,126,183,199,253,112, 7, 74, 73,119,233,155, 29, 30, 30, 31, 48, +165,140, 97,136,120,178, 79,189, 24,224, 98,216,140,136,251, 4, 97,194,156,103,240, 48, 42, 20,102,158, 81,179, 10,159,226, 56, + 32,133,128,185,100, 28,143, 25, 97,163,158,105,176, 70,229, 5,138, 40,243, 19, 24, 98,118,181,164,105, 57,131,166, 97,165, 49, + 97,123,184, 64, 12,140,154, 51,242,121, 66,105, 19,202, 52,105,178, 84,205,168,243,172,146, 38, 14, 24, 54, 91,252,213,175,126, + 9,105,130,239,223,124,135,219, 23, 47,240, 15,255,248,247,120,245,226, 22,159,238, 62,225,227, 15, 63,227,254,195, 7,204, 21, +216, 94, 94, 96,220,111,113,124, 60,226,254,241, 17,199,115,198,126,127, 1,112,195,241,225, 9,227,102,131, 23, 55, 47,144, 91, +197,155,239,191,199,251,143,122,161,115, 83,143,121, 76,212, 81,146, 99, 34,221, 21, 93,108, 16, 55, 17, 21, 5, 99,218, 96,220, + 12,166,250,213,209,228,156,149,129, 76,102,123,170,181, 98,154, 38,236, 47, 54,184,184,216,154, 66,122, 65,186,118, 1,142,117, +191, 61, 66,210,170,250,238,141, 13,193, 44, 26,158,117,108, 35, 55,240,179,132, 50,106,106, 31,139,113,201, 94, 15,134,197,132, + 37, 88,209, 74,193,235, 76,235, 82, 50,230,233,100,254,111,141, 97,140, 67, 68, 83,169,114,199,248,114,228,190,143,107, 22, 88, + 65,172,163,208, 24, 24,115,182, 44,226, 16, 86,104, 91, 21,148,181, 78, 39,147,158,125, 80,107,134,241,152,116,100,106, 7, 70, + 21, 7,194, 4, 37, 86, 81,233,151,181, 34, 79, 75, 71, 31, 71, 94,246,108, 94, 29,251,174, 93, 25, 10, 90,233, 55,243,235,138, + 84, 19, 96, 89,153,200, 12,110, 98,136,226, 85,114,150,143,116,151, 69,154,238, 96,221, 91,236,145,175,118,105,120,196, 43,175, +252,234, 30, 7,170,157,182, 44, 35,127, 31,195,175,194, 55,124,111,216,136, 87,255, 60, 59,132,171,239, 60,235,146,161,110, 86, + 44,159,126,178, 37,163,245, 81, 52, 55,227,220,163,139,247, 52,177,173,233,158, 54,134, 69,204,135, 37,107, 94,133, 74,232, 17, +166, 20, 76,183,192,139, 32, 83,245,239, 11,185,175,209,115,118,186, 11,205, 52,175,221,119,192, 98,159,183,254,195, 57, 68,237, +166,209, 86,161, 29,210,119,235, 58,145,169,221, 75,189,228,180,219, 84,170, 9, 98,228,110,237, 99, 14, 29, 7,172, 25,235, 64, + 53, 74,153, 98,101, 77,161,173,153,166, 86,184,152,248,212, 38, 32,157,184,103, 73,136,181, 86, 76,115,214,103,131, 96, 54, 98, +233,241,182,110,129,114,235, 31, 76, 15,194, 33, 44,182,198,230,146,125, 23, 63, 58, 65, 81,122,225,133, 78,231,163, 62,173, 45, +213,146,212, 34,119,209,160, 54, 55, 11, 89,176,139,241, 22, 71,155,141,147,236, 44,175,102, 59, 52,193, 91, 17, 89, 70,230,173, + 26, 35,222,214, 60,173, 97, 46, 85, 47,107,131,253,196, 20,245,204,153, 84,143, 48, 12, 73,139, 38, 81,145,156, 79,134,171,193, +159, 94,221,222, 64,168,118,130,224,233,116,194,249, 52,233, 57,196,100, 58, 34, 90, 83,143, 45,213,111,113,132,201,138, 91,209, +224,144, 31, 66, 76,140, 38,193,156, 19,190, 95, 39,108,183,169, 63,147,221,209, 80, 69,239, 34, 34,212,198,184,185,125,137, 20, + 8,111,159,238, 48,231,169,139,182,165, 53, 67, 42, 91, 54, 1, 8, 28,163, 10,184, 61,240,201,194,181, 60,164, 42,218, 10,177, +172, 34,109,227,146,136,216,250,190, 11, 96,192,186,176,100, 96, 25,205,191, 54,202, 26, 19, 54,105,163, 2,133,162, 34,187, 44, + 25,185,248,174, 47,232,206,195, 64, 8, 49, 6,108,134,128,199,187, 71,204,231, 9,219,109,194,126,191,195,184,217, 96,191,223, + 99,122, 58, 97, 28, 19, 68,128,243,148,113,123,117,129,187,159, 63, 1,150, 75, 91, 1, 12,227,160, 47, 59, 19, 42,130,133, 19, + 4, 76,211,140, 96, 15,118, 28, 20,143,122,124,120,130,204, 0, 13,186,251, 97, 34,236, 46, 14, 32, 52,228,121, 66,140,205,188, +214, 9, 3, 1, 23,219,132,195,229, 65,255,154, 24, 81,202,132,233,116, 68,144,134,104, 84, 31, 33, 91, 45, 84, 61,244, 98, 98, +124,249,213,231,184,184,218,227,251,159,222,225,197,235, 91,252,254,239,126,135,203,171, 3, 62,125,122,192,207, 63,190,199,167, +119,239,208,152,113,243,249, 43,180, 16,113,255,233, 30, 79,119,247,168,129,113,216, 31, 80,203,140, 79, 31, 62, 96,127, 56,224, +246,234, 26, 79,211,132, 55,111,126,192,195,195, 35,100,206, 0, 10,226,144,144,172, 75,102,110,216, 15, 1,183,215, 59, 12,219, +104,140,121,221, 57, 14, 99, 66,138,193,212,218,106,237,153,103, 67, 54,138, 22, 86,231,124, 2,152,112,121,113,109,202, 74, 27, + 65, 59,174,212,108, 95,174, 48,214, 70,143, 86,135, 75,179,144, 24, 66,201,179, 42, 85, 99, 64, 16, 19,133,144,118,192, 58,210, +213,151, 60, 4, 54,237,131,197,237,250,168,147,212,211,238,209,151,181, 1, 77,114,223, 69,198,180, 49,165, 61,119,143,178,103, + 69, 55, 65,231,201,103, 0,148,180,123,175, 22,214,192,182,195, 76,113,128, 67,235, 20,173,234, 25, 97, 58,190,173,197, 64, 33, + 68,221, 50,231, 25, 0, 10,169,208,145,152, 4,187,124,197, 40, 27, 29,169,106,192, 21,118, 11,215, 66, 17,243, 8, 19,144,143, + 41, 61, 6, 84,158, 1, 91,208,196, 72,115, 22,233,217, 68,119,241, 38, 86, 83, 95,184, 66,110,216, 44, 77,160, 98,158,125,253, +206, 96,151,122,179, 11,219,173, 82,238, 59,103,167,131, 88,129, 80,154, 49,184,237,210, 98, 1,178, 84,237,198,155,217,172, 12, +232,210, 21,131,204,186, 99,195,194,124,247,253, 39,154,239,219,101, 21, 57,251, 60,255,194, 51, 51, 16, 21, 37, 93, 69,223, 41, +178,177, 61, 32, 64,100,187,100,213,130,231, 44,242,148,210,114,234, 82,195, 82, 59,154, 77, 8,122, 54, 53, 75, 40, 35, 67, 80, + 11,214, 86, 45, 49,165,252,178,239,239,103,119,179, 5, 38,245,204, 30, 99,189,235,247, 68,172,138,162, 30, 52,227,151,104, 80, +138, 32,170,142,238,245, 99,214, 6,162, 86, 91,123,152, 86,163,211, 25,225, 77,146,122,243, 37,120,124, 44,117,145,177, 10,198, +236,231, 55,173, 68,173,165, 43,192,165,106, 26,166, 67,104, 22, 72, 0,117, 39,130,143,180,189, 32,171, 77,150, 40, 94,219,235, + 55,114,155, 31, 33, 64,159, 51, 69, 58, 55,117,147,128,108, 55,175,214, 48,181,113,218, 59, 19, 66, 23,191,137, 52, 8,170, 53, + 79,188,216,252, 96,246, 84,210,247,170,218, 26, 64,154,238,191,115, 41,154,175,110, 20,184, 30,109,218, 8, 21, 21,121,178,188, + 8, 0,227, 48, 0, 12,204,150,127, 62, 14,140,113,140, 32,210,139,179,204,179,105, 93,244,243,186,185,185,198,139, 23,215,152, +138, 32, 68, 45, 80,142,199, 19,242, 52,171,125, 54,232, 61,230, 33, 43, 77, 17,119, 86, 80,152, 2,159, 91,199,194,146, 51, 29, + 52, 29, 94, 11,113,210, 39, 76,171,200,128,200,132,171,237,166,231,237, 17, 3, 98,206,135, 49, 24,167, 32, 4,220,190,120,173, +172,247,233,132, 34, 25, 33, 12,189, 24,213,220, 18, 99,191, 67, 35,134, 21,210,105, 66,230, 38,152,114, 70, 33,247,227,235,174, +190, 22,160, 88,129, 17, 93, 24, 35,230,113,237,123, 69,132, 46, 6, 91, 12,248,100, 99,182,138, 33, 37,164,144, 80,244,179, 64, + 45,210, 47,252,214, 20,190,160,127,168, 2, 61,134,113, 84,193,216,221, 35,190,124,249, 26,187,221, 14,145, 3,118,219, 29,242, +211, 73,163,228, 8, 56,207, 51,134, 52, 34, 13, 9,179, 20,204, 77,209,133,155,253,168,191,120,174,200,243, 25,227,238,128, 34, + 5,243, 92,176, 97, 31,225,232, 56,183,228, 9, 28,151,125, 25, 19, 99, 28, 71,228,170, 8,210, 97,187, 55,136,130,122, 23, 95, +190, 30,251,203,221,166,140,243,116,194,249,116, 66,106, 64,177,248,216,148,116,151, 93,160,221,230, 23,191,248, 18,175, 94,189, +196,249, 60,227,246,250, 22,191,252,237, 95,225,226,242,128, 79, 31, 62,226,135,111,222,224,167,183,111,113,177,191,196,213,237, + 75, 84,169,248,240,254, 45, 30,158, 78, 24,182, 7,140, 67,196,244,244,132,199,199, 71, 92, 94, 94,225,197,205, 13, 30, 78, 79, +248,246,207,111,241,248,240,132,156,103, 13,176, 73, 17, 27, 82,207, 54, 24,216, 15, 35, 94,223,236, 17,198,164,177,124, 99, 52, + 81,138,254,126, 61, 27,185,122,214,185, 94,150,100, 54,170,114, 46, 56, 28,148,132,231, 47,156,136, 44, 9, 92,176,156,224, 90, +128,106,236,109,195,231, 50, 27,162,180, 86, 43,238,138,138,196,130,174, 5,164,102, 11,167,214, 75,162,245,100, 34,221, 9,181, + 90, 84, 40, 99,128, 31, 77, 38, 50, 96, 69,211,177, 97,169, 74,131, 35,106,136, 33, 34,142,201, 88,234, 54, 46,101, 27,215, 70, +197, 23,207,243, 73, 89,208,172, 65, 7,205,240,145,106,141, 3, 34,121,199,236,161, 49,170, 70,247,216, 75, 72, 85, 64,143,237, +240,188,203, 36,243,198,242,192,207,130, 52,218, 42, 34, 82,204,150,197, 54,205, 82,181,181, 21,145,214, 1,232, 42,161,118, 15, +172,123,124,125,196,166, 29,124,180,103,111, 85, 60,253,101,240, 70,207, 18, 55, 14,180,229,119,251, 14, 48, 52,233, 75,238, 6, + 1, 69, 67,136,154,216, 73,140,106, 22,162,173, 63, 86, 92,251, 14,107,241,212, 69, 6,168,160,127,230, 61, 60,165, 73,151,210, + 50, 43,139,157, 68,255,247, 92,129,108, 1, 54,108,118, 46,207, 77, 96, 90, 58,240,102,207, 89, 99,151,230, 90, 14, 0,121, 28, +107, 1, 26, 33, 84, 70,115,116, 42,177, 18,194, 88,245, 53, 84,163,126, 14,188,208,245,224, 25,211,180,234,170,100,161,152,209, + 18, 60,102, 93,244,202,103, 95,237,239, 32,253,156, 84, 56,103, 12,120, 27,223,123,130, 95,223,205,183,234, 53,129,193,116,244, + 98,119,104, 12,200,134, 41,141, 87,193, 39,102, 15, 38,127,142,188,218,161, 30, 27,234,202,123,125, 39,165, 39,101,198,152,180, +238,168,106,115,107,196,154,183,109,188,113,125,215,237,217, 52,235, 99,239, 64,109, 82,193, 29, 43,107, 5, 98, 19, 20,180,197, +146,102,107,173,181, 82, 95,247,211, 75, 76, 52,122,206,189, 62, 19,186,187, 95,233,113, 86,222,201, 14,175,115,225, 91,177, 14, + 93, 4,197,166, 51,181, 8,178, 59,115, 86,240, 31, 23,223,214, 98,162,189, 20,144, 70, 21,244,206,101,134, 52,193, 48,166, 30, +187,155,171,142,234,155,176, 18, 15,153,112,123,123,133, 16, 19,166,233,140,113,136,168,101,194,244,116, 66,201,181, 11, 68, 3, +185, 53,180, 45, 98,207, 30,216, 66, 29,215,234,137,132, 88,227,126, 27,208,130, 94,254, 68,170,165,217,140, 3,134,237, 6,229, +116,182,169,101,132,200, 25,209,214,214, 2, 32,140, 91,140,155,173, 10,219,114,209, 84,207,173, 77, 85, 68,212, 85, 53, 21, 5, + 57,216, 59, 20, 99, 2, 7,234, 22,205,211,164,171,229, 38,246,252, 26,240,199, 67,133,162,131, 27, 86,203, 39, 29, 77, 53, 70, +245,234,157, 86, 21,159, 9, 41,246,195,160,187, 57, 11, 66, 40,181, 44,185,199, 22,205, 41, 22, 80, 16, 66, 0, 82,194,241,238, + 9, 63,189,255, 25,191,252,197,103,216, 29,246, 40,173, 33,109, 70,212,144,192, 81,189,125, 31, 63,222,161,197,128,184, 25,144, +103, 69,149,206,210, 48, 12, 7,147,243,219, 88,159, 4,210,253,201,232,182,172, 92, 4,121,158, 87,227, 55, 29, 1,141,195,136, +214, 84, 57, 62, 12, 3, 98, 8, 24,237,193,200, 83,198,116, 62,219, 94, 98, 70,145,130, 86,102,228, 34, 64, 27,177,217,108,109, +172,205,144, 66,248,234,235,207,240,197, 47,190,132,128,144,152,240,249, 47,191,198,118,179,193,221,167, 7,124,247,205,119,248, +225,155, 31,112,245,226, 26,175,191,248, 28, 15,199, 19,190,255,254, 7, 72,107,184,184,185, 70, 26, 6,220,127,252,128,251,251, + 35,110,174, 47,241,226,246, 18, 31, 62, 62,225, 63,190,249, 30,231,211, 17,179,253,236,155, 20,144,152, 32, 9,136,145,177, 79, +140, 23,183, 91,132, 77, 66,174, 13,135, 67, 2, 15, 17,115, 46,216,108,162, 10, 89,172,171,200,165,218,184, 76,119,159,145, 24, +243,156, 65, 17,216,237, 54, 8,161,117,145, 90,107,170, 44,133, 65, 34,200, 32, 17, 29,149, 26,168, 7, 94,144, 67, 55,208,204, +107, 78, 22,190, 96, 74, 98, 19, 83, 54,243,188,194, 32, 33, 13, 13,165,233,202, 67, 68,122, 50,145, 7,198,232, 14,136, 1, 40, + 61,138, 44, 95,216, 81,143, 28,151,157,103,179,132,138, 24, 2, 36, 4,197, 72,250,222,144,213,174, 70, 85, 39, 1,238, 33,134, +117, 60, 49, 68, 72, 35, 20, 20, 11,145,176,181, 3, 91, 50, 89, 13,198,206,214,238,185,228, 98, 34, 66,141,121, 93,239, 66,201, +212,194, 10,153,145, 69,144,213,180, 91,235,176, 38, 90,226, 66,181, 11,172,125,199,218,204,110, 85, 69, 59, 35,107, 23,236,130, + 82,127, 88,179, 60,103, 14,158,238,166, 63, 27, 57,194,214,231,156,158, 21,201,218, 5, 19, 25,139,221, 40,100,158,201, 78,171, +240,157, 30,224,226,212, 48, 98,104,244,193,210,149, 88,184,157,118, 46,198,173,119, 44, 43,108,244,175,133,198, 82, 64,243, 42, +134,149,108, 63,160, 17,165, 30,160,194,253, 66,100, 19, 27, 25,133, 95, 59,165, 64, 29, 83,189, 6,219,104, 19, 79,203, 10,128, + 26,162,217, 31,245,249,177,155,210, 16,190,110,222,232, 19, 5,255,188, 40,244, 92, 49, 10,181, 7,212,232,202,161,217,158,222, + 20,211, 33, 24, 69,112, 1,244,192, 14, 81,247, 93,187,194,222,191,215,190,175,181,103,182,227,116, 69, 52, 40,198, 27, 37,104, + 10,156,239,202,125,116,204, 6, 46,106,166, 70,215,130,194, 20,226, 6,225,107,108,233,147, 97, 13,141,145,110, 95, 10,129,148, +146,105,133,128,102, 39, 24,178,208, 46, 62,154, 91, 95, 71, 8, 22,223, 61, 7,178,252, 2,101,179,119, 56,116, 87,220, 99, 5, +108, 49,188,179,198,185, 65, 88,186, 79,188, 86,233,116, 56,177,139,188,152, 74,125, 46,106, 15,174,181,234,243,215,153, 0, 22, +239, 42,170,152, 7,128, 20, 20, 26,211,154,160,204, 90, 92, 13,195, 96,185,234,154, 98,168, 28, 14, 13,220,218, 94,108,176, 63, +236,213, 37, 96,113,197,167, 83,198,124,158, 0,169, 32, 54,228, 57,187,230,129,208, 26,171, 91,199, 87, 42, 13,214,156,232, 89, +162, 1, 72,254,174, 24, 18,221,116, 32,206,141,191,190,186,232, 12, 7, 37, 74, 2, 85, 50,136,131,138,106, 91,195,245,205, 23, + 72,227, 14,231,211, 17,249, 60,117,157, 90, 8, 17, 37,207, 56,158,158, 80, 73, 16,173, 81, 25,135,193,146, 35, 53,222, 58,215, + 25,167,227, 9,185, 89, 46,123, 92, 92, 60,173, 86,148, 57, 35,202, 42,227,149, 86, 15,110, 67, 67, 45, 6,167,143,254, 5,146, + 97, 45, 89, 71, 98,134,226,147,102, 68, 54, 83, 69,147,117,243, 32, 71, 80,186,157, 9,184,127,124,192,156, 51,174, 47, 47,145, + 56, 34, 83,198,197,197, 14, 82, 42,182,155, 45,222,151,247,170, 58, 30, 7,100, 57,226, 16, 7, 20, 99,166,199,144, 32,176, 61, + 75,113,138,153,193, 42,130, 61, 12, 13, 56, 77,115,127,201, 68,101, 36,216, 95, 28,108,191,200,216,142, 91,164,113,236,168,197, + 34,130,199,135, 7,205,246,230,136,102, 84,178, 64,172,137, 95, 28,144, 75, 6, 69,198,175,126,243, 43,124,249,245,151,216,236, +118,104, 76,184,186,190,198,225,176,199,211,211, 19,190,253,230, 13,126,248,238, 7,188,250,242, 21, 62,251,234,115,124,120,251, + 9,127,252,243,159,177,221,140,248,252,243,207,145, 69,240,225,253,207,168,185,224,179,207, 94, 97,191, 31,240,227,187,143,248, +246,155,119, 56,231, 35,230, 89,129, 2, 67, 2, 66, 84,169, 52, 19,227,144, 2, 94,190, 60, 96,115, 72,152,231,130,152, 6,164, +253, 96,133, 84, 67, 74,177, 7, 79, 72,107,168, 53, 63,131, 8, 85, 19,223,108,182, 27, 12, 67,242,225,144, 94,222,188,100,132, + 51,175,125,193, 62,174, 54,168, 9, 49, 22,221,172,134,182, 16, 12, 34, 66,189,109,240, 27,192,246, 76,122, 81,137, 84, 85,166, + 19,247, 63, 79, 29, 72,173,115,148,217, 90,143,129, 2,192,193, 42, 85,128,173, 19,114,202, 21, 72,109,119,154,121,253, 60, 74, +147,154,244,223,187,174, 34, 47, 93,221, 31,109,117, 64,213, 85,192,109, 97, 47, 4, 70,105,106, 11,241,182,174,212,210, 45, 73, +136,232, 32,144,142,226,236,221, 94, 91, 66,100,218,130,164, 90, 72, 99, 90,228, 58, 33, 12,182, 51,117,209,156,239,165,215,250, + 2, 49,177, 30,153, 58,189, 54,251,174,196,194, 47,236, 18,204,181, 88,118,117, 70, 13, 80, 44, 44,173,148,213,236,254,236,250, +172,235, 95, 34,115,177,228,198, 27,108,136,152,122, 59,203, 68,200, 88,137,180, 2,161,102, 43, 18,236,249, 32, 35, 6, 90,248, + 50,152,108,247,104,227, 77,215, 51, 48,169,119, 94,180, 22, 90,108, 90,109,253,220,160,103,117, 47, 14, 52,123, 30, 93, 31, 80, +107, 39,182, 85,131, 21, 33, 24, 49,176, 39,131,152,240,149, 88, 89, 7,230, 82, 32, 7,214, 4,215, 33,176,253, 30,188, 16,189, + 76,240,215, 72,208, 56,118,198, 62,218,115,107,216,250,226,238,223,217, 10, 42,179, 94, 69,232,206, 55, 35,152,144, 49,198, 96, + 99,241, 6,170, 98,188,115, 60,107,172,146,113,239,251,207,236,133, 20,180,113,209, 73, 8,247, 70,170,174, 38, 64,176,253, 53, +155, 8,146,176, 40,187,169,145,173, 60,168,235,102,214, 98, 24, 49,108, 45,131,193, 38, 80, 80,216, 15,117,202,159, 58, 11, 22, + 82,157, 7, 0, 50, 2,140, 12,108,153,233,130, 70, 1,185,106, 28,106, 45,130, 57, 23,228,108,163,119,127,191,157,123, 1,233, +221,186,190, 67,192,102, 76, 96, 98,204,121,134, 52, 96, 72, 17, 99, 74,102, 23, 19, 83,211,235,148, 44,109, 18,118,251, 45,246, +187, 13,178,173,236, 34, 3,247, 79, 39,204,115, 89, 86, 32,182, 70,107, 30, 34,179,230,235, 99, 85,228,216,123, 82,237,221,245, +192,181, 68, 1,213,211,231, 42,112,216,141,184,184,220, 40, 8,127,246,151, 0, 0, 32, 0, 73, 68, 65, 84,190, 89,128, 96,216, +218, 42,162, 69, 21, 41,179,254,242,242, 6, 32,224,124, 62,227, 52,205, 58,149,140, 9, 12, 21,101, 79,118, 7,168,246, 72, 69, +194, 10,159, 9, 0, 42,206, 83,214,132, 77, 79, 64,102,181,148,195,180,109,211,148, 17,213,186,195, 11, 24,194,255, 67,179, 15, + 76, 4,161, 41,121,173, 9, 33,215,210,119, 20,126, 40,228, 92,123,186, 20,200,129, 29,235, 7, 94, 71,135,105, 51,226,225,225, + 1,249, 84,144, 54, 35,118,155, 13, 62,157,142,184,184,188,192,241,241, 9,227,198,194, 81,102, 85, 43, 82, 10, 8,196, 40,121, + 66,107, 35,198,221,136,233, 60, 65,178, 96, 46, 19,134, 33,225,220, 57,194,170,212, 46,249,212,149,166, 14,207, 57, 92,236, 49, +110,182,104,173, 98,179,221, 88,165,174, 35,186, 82, 42,142,143,143,120,124,248, 4, 2, 43,161,136, 8, 67, 28,108, 63, 93,117, +100, 19,128,175,255,234, 43,124,246,249, 43,108,182,123,132, 24,177,189,220, 99,136, 3,238,239, 62,225,135, 55,111,241,246,135, + 31,241,197, 87, 95,226,197,203, 27,124,255,253, 79,248,211,191,255, 47,188,252,252, 53,190,248,252, 75, 60, 60, 62,224,167,239, +191, 7, 98,192,203,155, 91,108,182, 35,222,190,251,132,111,190,121,171,220,248, 58,161, 9, 99, 72, 1, 67, 20,139,242, 35,108, +108,135,190, 25, 19,202, 92,209, 56, 96,187, 79,170,220, 45, 98,169,108, 70,101, 11,213, 44, 35,234,157,117,242,150,100, 49,255, +164, 22, 50,205,198,244,234, 69,108, 38,128,140, 86,197,115,207, 93,102, 59,145,164, 54,180, 8,203, 96,111, 88,154, 30, 49,127, +167, 94,106,212,237, 51, 74, 68,106,230,183, 85, 5,142, 44, 60,132, 38,157, 75, 29,120,217,163, 58,254,147,204,214,209, 44,133, + 77,164,116,108,165, 90,171,150,196,177, 24, 83,191,160,157,218, 36, 22, 79, 26, 44, 11, 93,106,177,113,102,181,136, 97,177,196, + 57, 61,168,156, 24,229,188,116, 31,173,186,178, 63,172,186,109,216,231,247, 28,159, 28,116, 20, 38,203,116,192,255,108,162,214, +139,159, 42,139,104,135,157, 92,101,211, 44,169,210, 47,134, 42,158, 6,165,232, 71,177,203, 45,153,216, 78,164,162, 54,197,153, + 58,249,106,158, 38, 12,219,208, 5,114, 32,181,227,105,185,176,124,126,180,128, 35,187,224,203,105,102,158, 40,230,132, 49,197, +212, 82, 87,212, 19, 45, 94,240,110,107,178, 78,168,251,214,205,242, 8, 75, 33, 19, 11, 57, 17, 17,196, 96,124,255, 38,230, 52, + 97,251, 30, 93, 20, 39, 61,197,207,139,181, 46,182, 51,142,186,139,231,154, 41,209,117,101, 80, 77,155, 81,123,185,211,227, 67, +237,251, 97, 44,100,180,214,180,129,209,174, 28, 61,189,172,193, 9,120,254, 59, 18,106, 46,182,202,167, 46,156,243,189,247, 95, + 94,230,254,239,193,172,157, 11,231,221,153,243,170, 84,175, 69,208, 44, 13,113, 61, 77,210,117,140,231, 40,152,203,161, 35,106, +165, 43,159,157, 74,232,248,215,214,154,137,230,216, 34, 91,181,248,114,167,129, 72,179, 75, 1, 75,182,135, 61,207,197,246,235, +196,203,239, 77,157,170,230,212, 56, 45, 14,181,176,244,247,101,217,233, 47, 41,113,246,185, 26,208, 69,178,189, 15, 85, 48,103, + 35,200, 85,195,197, 22, 93, 99,166, 4,228, 92,250,119,222,204,150, 73,117,137,200, 77,195, 96, 43,221, 2,166,134, 20,162,118, +216,166,147,200, 70, 87, 27,198, 17,227,118,196,118,183, 5, 18,163, 76, 19,198,113, 68, 43, 13,199,167,163,190,207,254, 30,183, +149,179,203, 69,150,174, 75,240,113,188,137, 52, 23, 82,159, 57, 6,130,190,123, 41, 13,234,185,151,130,139,195, 14,155,205, 8, + 75, 33, 54,167,150, 66,100, 40, 41, 89,115, 24,119,184,184,190, 65,205, 5,243,108, 26,180,160,211, 32,128, 49,151,242, 12,209, +158, 82,194,208,161, 93, 58,197,154,115,198, 92, 50, 40, 69, 8, 83,207, 96,112,145,113, 19, 65, 36, 86,225,138,143, 91,201,118, + 64,193, 30,182, 92,139, 74,238, 45,254, 50, 24, 78,213,129, 8,173, 20,148,172,194,155,216, 61,185, 75,167, 16,201,196, 6,129, + 49,140, 1, 31, 62,125,194,211,233,136,235,235, 43, 92, 92, 93,224,135,239,222,224,197,203,151, 56, 31, 79,216,237,182, 72, 33, +224,241,233,136,253,197, 14,219,180, 81, 17,207,121, 66,184, 14, 24, 54, 35,166, 73,115,212,143,143,103, 23,112, 46,220,122, 52, + 60, 62, 30,193, 4,196, 0, 72, 84,145,202,102,187,197, 48,110, 80,234,140, 84,245,165,158,230, 9,231,227, 17,243, 84, 81,166, + 9,119, 15,103, 12, 41,224,229,229,128, 20,212, 51, 95, 74,198, 76, 51, 82,216,226,215,191,254, 37,126,241,171, 47,123, 64,197, +184,209, 29,255,251,119,239,241,238,167,143,120,255,225,103,252,226,235,175,113,243,242, 5,254,227, 79,127,194,255,252,227,127, +224,215,127,243,215,248,236,139,207,240,225,221,123,252,252,211, 59,108,182, 91, 92, 95, 41, 12,225,187, 31,222,225,205,247, 63, +163,230, 51,114,157, 33,181, 34,197,136, 20,122,191,131,205,144,112,125, 57, 32, 14,234, 44,104, 8, 72, 99, 64, 76,208,248,212, +202, 8,227,138, 20,213, 42, 90, 70,247,205,234, 75, 95,145,231,140,221,126,131,113, 76, 75, 56, 72,179, 21,137,120,231,217,122, +158,117,183,115, 48, 47,182, 25,207,201,118,110,121,173,118, 24, 91, 16,136,191, 48,108, 7,121,201,154, 59,111, 59,109, 30,130, + 41,164, 21,244, 83,114,177,164, 51,243, 91,114, 68,215,156, 64, 71,139, 94, 48,120,247,227,170, 97, 2, 27,168,163,154, 61,145, +108,199,191, 88,226,152, 25, 45, 24,154,178,138,141,110,205, 74,211,225, 17,170,166, 86,144,137, 93,244, 49,169, 0,198, 58, 16, +194,130,242, 92,198,166,139, 21, 46,152,167,125,157, 76,184,144, 25,171, 98,121,109,212,238, 66, 63,178, 29,170,194,244,108, 31, +106, 1, 40, 85, 76, 28, 21, 96,222,119,152,135,213, 47,236,218, 73,119,220,150,160, 25, 47, 10,180,160, 48,246,169,113,207,217, + 99,148,125,206,210,184,143,140,129,245,168,152, 58, 34,214,215, 49,202,115,231, 30, 59,219, 76,213,222,150,132,120, 19,157,249, +174,210, 47,245,197,155,223, 44, 72,166,153, 56,206,247,152, 36, 98, 83,166, 5,244, 65,190,139,247, 12,115,239,210,125, 39,207, +254,204, 88,134,128,225,107,201,127, 46,169,182,133, 88, 46, 27, 70,176,207, 73,201,125,205,247,145,102,167, 84,226, 93,232, 59, + 73,159,112,244,117,135, 5,112,244, 2, 96,197,203, 95,252,234,203,231,239, 42,108, 37,228,121, 80, 77,235,190,246, 42,106,201, + 76,131,254, 92, 93,211, 96,154, 38,130, 32,196, 4,145,134,105,242,132, 56,234, 69,138,171,176,253,207, 98, 7,251,180,149,218, +127,165,224,246,120,233, 78,222, 91,113,231,125,173,225,249,244,158, 59,224,226, 89,112, 48,228,239,226,167,127,238,119, 95, 10, + 92,113,154,103, 91, 68,111,205, 87, 63,102,177, 45,173,161,106, 22,145,242, 26, 98,131,136,185, 88, 58,241,208, 49,185,140, 97, + 72,134,165,214,234, 54, 48, 43,244,201,178,210, 75,209, 75,157,154, 96,179, 25, 49,164,132,205,102,131,105,154, 49,207, 51,118, +187, 45, 30,158,142, 56,157,166,133,243, 0,111,100, 44,210,185,162, 19, 55,217,133,180,238,224,233,185, 11,173,127, 46,222,229, +115,136, 54, 69,201,184,188, 86,215, 84,105, 98,177,205,182, 62,168, 5, 12, 65, 45,192,213,171, 91, 37,150, 86,189, 91,106, 46, + 86,108,234, 51,126, 62,159, 53,182,155,213, 33,228,140, 8, 13,119,209,231,113,206, 30,139, 78,189, 64,238,161, 85,166,142,143, +190,219,241,128, 3, 2, 20,242, 96, 68,167, 82,181, 26, 8, 65, 21,168, 9,140, 33,170,168, 77, 15,161,106, 80,142, 5,212,160, +140,111, 11, 60,176, 64, 12, 61, 68, 2, 30,166,130,143,143,119,120,113,251, 66,185,227,172,251, 81, 21,166, 48,246, 87, 23,120, + 58, 62,225,213,103, 47,177, 25, 20, 53, 59, 63, 60, 1,159, 85,140,219, 13, 30, 30, 30,113,158, 38,176,112,231, 63,187, 18,166, +150,138,199,187, 71,112, 8,184,188,220, 98,106,140, 22, 3,182,219, 45,234,192,168, 71,221, 41,230, 60,227,241,254,147,229,246, + 50,114, 41, 96, 38,108, 66,192,134,163,198, 14,182,134,105,154, 16, 66,196,111,127,247, 27,252,242,215,191, 0, 71,173, 86, 67, +140,104,212,240,227,119, 63,226,254,195, 29,106, 5,126,243, 55,191, 65,220,238,240,111,255,227,223,241,205, 55,127,198,223,254, +254,247,120,253,249, 75,124,247,237,247,248,240,254, 61, 46, 14, 23,184,188,220, 35,112,192,219,183,239,240,230,205,123,204,249, +132,106,193, 7, 49, 70,196,160, 68, 50,226,128, 97, 76, 56, 92, 36, 12,227,114, 40, 18, 11,134,164,136,222,146, 51,152, 71, 12, + 49, 46, 25,205,246,223,135,160,249,215, 28,128,124,206,104, 85, 83,231,124, 87, 36,165,168, 45,141, 93, 49,171,120,198,110,127, +178, 78,211, 45, 25, 30, 58, 33,198,113,151, 38,221,171,217, 71,130,173,244,113,144,139,165,216, 8,114,232,195,159, 6,105, 12, + 10, 17,145, 24, 82, 22,228,172,192,195, 72,150, 49,152, 72, 67,206,179,174, 89,204, 6,199,150,118,165,194,161,185, 7,206,232, +190,190,245, 20,174, 70, 13,115,205,234, 96, 48,127,188,179,205,251, 65, 12,141,241,108,181,117,218, 30,140, 57, 46,118, 40,123, +234, 20,173, 4, 76, 14, 41,105,107,112,147, 11, 73,215, 9, 92,150, 74,213, 89,217, 49, 44, 36, 48,251,191, 85,150,125,244, 34, + 86,109, 11, 89,206, 86, 90, 42, 36,204,102, 31, 12,230,248,104,203,229,215, 76,136,179, 66,248,250,239,228, 5,185, 43,238,189, + 32,161,238, 61, 90,208,112,220, 24,226, 86, 31, 87,251,175, 46,113,169,102,115, 52, 52, 40, 86,162, 62, 45, 98,176,136,233, 60, +167,220,139,178,142,161, 21,164, 72, 38,160,170, 8, 1,160, 24,187, 45,136, 77,100,232,107,138,208, 86,228, 56,178, 16, 25,167, +207,225,121,225,231,142, 3,240, 10, 23,107,133, 5,155, 19, 3, 34,157,199,173, 19,158, 37,105,172, 81, 89, 68,179,109, 9, 82, +113, 46,133, 67,116, 28, 10, 67,171, 48, 44,230, 53,239,159, 87,218,127, 39, 37,218, 86,131,170,101,161,154,207,190, 40, 24, 42, +197,212,247,255,204,206,202,119,157,133, 62,151, 20, 8,145,147,166,114,173, 87, 1,100, 59,115,159,246,212,176,128, 73, 68, 32, + 40, 54,194,111,102,191,139, 70,100,244, 66,188, 90, 52, 44,247,239,218, 3,119,200, 18, 49, 57, 44,231,131, 22, 19,188,224,155, +155,116, 27, 99,183, 2, 58,103,160,138,174, 31,204,194,150,179,141,221,237,203,100,183, 83,194,115, 23,244,239,139,204, 24, 98, +210,159, 47,183, 30,160, 3,131, 13,105,176, 73,209, 46,120,191, 69, 26, 19,134, 33, 97,140, 17,167, 73,249, 38, 49, 6, 60, 61, + 61,233,180,181, 65,201,149,212,116,250,128,214,125,242, 74,106,179, 41, 69, 87,175,219,239,215, 90, 15,166,129, 43,251,109,125, + 38, 82, 48, 14, 9, 23,251,173, 29, 3,173,199,208, 54,136, 82, 49,195,136, 92, 4,135,171, 27, 3,210,100,189,192,169, 89, 76, + 51, 44,182, 59, 91, 51,161,107,143,142,108,166,128, 0, 77, 99,203,211,140,196,154,197,209, 22,241,134, 90,144, 45, 23, 37,114, +199, 27,186,245, 69,255, 93,153,221, 38,236,108, 64,178, 74, 48,245,113,231,243,253, 92,239, 98,154, 30,162,226,177, 54, 30,219, +202,202, 42,130, 0,247,247, 71, 16, 11,174,247, 23, 24, 56, 32,180,134, 77, 76, 56,149, 25, 23,251, 3, 62,124,248, 8,196,136, +205, 56, 98,154, 79,168, 25,152,243,140,180, 29, 64,196, 56,231, 35,130,169,243,245, 2, 81,152, 70, 17,224,156, 43,120,127,192, + 54,204,224, 34, 56,151,170,121,221, 28,112,154, 51, 78,247, 15,152,230, 9,159, 62,190, 71,138,123, 12,155, 17, 41, 69, 92, 93, +238, 64,185, 32,215,108,230, 33, 96,179,137,248,199,127,250, 3,254,234,183,127,133,113,147,192,182,131,191,187,191,195,183,127, +254, 22, 79, 79, 79, 56, 12, 59,188,254,226, 11,112, 26,241,223,254,191,255,134, 31,223,190,197, 63,253,159,255,132,195,229, 30, +223,253,233, 27, 60, 30,143,120,249,226, 37,246,135, 61,230,154,241,195,119, 63,224,219, 55, 31, 81,235, 17,165,232,142, 40,133, +132,200,203,225, 62,164,136,195, 62, 34,140,128, 52, 45, 94, 74, 19,164, 16,117, 92, 84, 4,181, 50, 66, 92,198,148,210,148,194, +214, 68, 15,112,134,142,173,171, 20,164,113, 64, 76,193,206,103,187,200,130,138,162,214,213,189,250, 97,217,178,127,249,153, 45, +137,123,178,149,177,194,221,123, 77,128,216,248, 12,190, 91,135, 66, 98, 2, 67,211,214,138, 10,241,244,141,172, 40,197,198,245, +182, 87,132, 89,104,186,122,223,186,191,102,163,127,230,160,162, 72, 86, 33, 12, 92,188,102,137, 84, 26,184, 99,174,171, 44,125, +252, 87, 75,209,228,178,166, 99,108, 90,173,132,196,217,225, 70,192,114, 2,155, 43, 73,121,133,212, 68, 87,150, 90,156,137,180, +101, 85,229, 73,105, 70,209,210,231,158, 23, 40,133,219,210,154,174,177,154,169,228,253, 66,142, 41, 46, 35,112, 83,184,195,168, +111, 32,245,197,235,234,162,244, 14,200,242,208,144,115, 70,180, 66, 4,171, 43,160,181,134, 4,244,232, 93,189,231,170,137, 32, +107, 47, 78,168, 45, 23,149,216,122, 66, 12, 5,236,108,120,231, 99,123, 50, 89, 51, 12,108, 15, 2,177, 17,160, 59, 3,106,191, +224,165, 3,140,250, 88,179,135,159, 16, 74,109,198, 10,215, 61,108, 99,251,107, 25, 43, 95, 56,245, 85, 81, 8,106,233,233, 26, +157,200,171,180, 63,111, 74,184, 11, 36,105, 21, 52,226, 34,172, 30, 82, 2, 15, 31,209,103,181, 79,182,160, 7,104,235,206,130, +106,216, 83, 99,202,219,106, 17,127,225,131,119,208, 12,173,254, 92,101,100,149,110,255, 83, 24,142,142,196, 83, 12, 16, 49, 81, +226,124,238,164,178, 92,178,229, 39,104,204,112,206,217, 68,118,110,159,163,206,159, 95, 43,198,151,139,188, 46,207,145,173, 36, + 37,232, 72, 27,118,153, 3, 64,168,193, 40,108,158, 44,103,115, 22,115,182,132, 96, 68, 70,147,141, 70,103,204,219,133,191,214, +149,212,213, 78, 94,159,109, 35, 79,186, 91,132, 85,112, 93,138,210,248, 28, 80,134, 70,171, 8, 93, 89,212,133,254,252, 70, 70, + 26, 34,134,209,119,231,246, 93, 68,157, 42,250,116, 42,215,140, 22, 26,118,187,157,133,110,141, 90, 6,157, 39,108, 46, 47, 48, +231,134,227,241,132, 42, 25,209,102,160,106, 99,229,149, 70, 67,150, 72, 94,183,250,249,212,203, 27, 94, 47,236,204, 62, 26, 98, +128, 88, 4,234,237,229, 30,251,221, 70,175,240,214,148, 38,199,202,153,231,192, 72,148, 16,199, 3,118,151, 55, 16, 91, 87,151, + 50,235,247,100, 22, 63,133,241,216,249,138,166,133, 68, 85, 65, 42,135,132, 22, 52, 35, 37,159,158,148,110,167,143,187, 54, 44, + 34,168,204, 8,134,174,142, 13,188,202,121,213, 81,188,170,127,217,108, 14,158, 94,165, 74,216, 20,130,217, 53,124,148,217,172, + 58,182,142,223,114, 21, 21,117, 89,125, 78,229, 91,125, 16, 70,188,255,244, 17,196, 13,195, 97,135,221,245, 21,206, 85,253,216, + 81, 10,246, 23, 7,252,244,254, 29,202, 52, 97, 59, 38,204,159, 78,104,161, 97,154,102,108,247, 59, 20,139,134,205,168, 40, 77, + 76, 41,219,192,219, 8, 26, 85, 49, 63, 12,163, 70,103,206,130,153, 11, 34, 7,228,227,132,167,143, 15, 56, 61, 61, 98,154, 39, +204,167,130,225,146, 48, 14, 91,197,211,134,136,105,154, 48,231,140,141, 0,195,230, 10,255,248, 47,255,130, 47,190,126,133, 49, + 37,140,135, 3, 8,192,207,239,126,194,191,255,247,255,129,243, 57,227,139,175,190,194,245,139, 43,220, 63, 62,225,223,254,223, +127,197,195,116,135,255,250,127,255, 95, 72,156,240,237, 55,223, 2, 32, 92, 95,223, 96,140, 1,243,121,198,159,191,251, 17,111, +223,190,211, 80, 24,139,107,221,132,128,192, 62, 80,100,140, 67,192,238,192, 74,229, 3,129, 18,161,216, 33,226, 93,111, 46, 58, +218,217, 70, 85, 23,251,161, 82,109,148,222,164,161,133,170, 66,199,214,112,177, 25, 84, 76,200, 75, 21,222,114, 69, 13,154,237, +189,222,139,245,212, 43,170,125, 79, 19, 8, 22, 88,178,116,117,212,189,237,234,249,110,165, 32,166,100,129, 20,234,251, 37, 17, + 96, 86, 58, 28,113, 0,183,212,189,191,205, 67, 38,152, 65, 49,129, 97, 94,218, 20, 16,237,153,203,173, 34,196, 96, 93,167,128, +161, 98,145, 34,234,215,101, 39, 57, 53,152,247, 86, 15,209, 16, 7, 43, 46, 8,146,103,163,189,169, 94, 32, 82, 68,131,160,150, +220, 63, 15,173, 67,184,163, 97, 65, 14,210, 89,196, 65,125,131, 46,210,173,111, 48,194,161, 64, 21,247, 54, 63,126,150,220, 21, + 67, 80,133,187,237,213, 27,105,134,187,219,197, 52, 68,196, 26,102, 59, 84,249, 47, 46, 43, 50,122, 95, 91,237,110,117, 92,233, +161, 45, 38, 70,196,176, 26, 93,187, 62, 97, 65,140, 74, 83, 98, 28,181, 53,219,220,117, 1,139,122,189, 17, 67,124,231,109,184, + 75,177,110,208, 39, 3,108,211, 12, 72,235,104,224,190,155, 53, 10, 25,236, 80,119,202, 25,236, 2,232,151,187,193,143,148,162, +150,129, 20, 84,139, 81, 13, 70, 99, 19,159, 46,122,181, 46,134,140,167,207,171,113,240, 50,109,166,103,208,153,165,227,108, 43, +236,177,211,224, 74,247,184, 73,243,194,236, 47, 68,132,139,143,201,245,134,157, 38,183, 52, 53,173, 91, 68,219, 95,228,177,147, + 77, 79,132,150,166, 71,127, 54,115, 12,181,102, 88,222, 69, 81, 30, 12,170,228, 86, 51,226, 0,177,221, 84,240,206, 91,164,139, + 58, 67, 72,102, 21, 43,150,107, 30, 81,237, 29,105,133,150,117,154,141,105, 75,171, 8, 89,145,218,213, 87, 83,174,172, 39,179, +132, 90,215, 78, 38,134, 14,246, 76,186, 0,176,139, 69,187, 32, 89, 59,216,106, 35,110,106, 90, 76, 40,149, 81,215, 80,218,140, + 20, 93, 19,146,125,102,144,191, 8, 58, 53, 36,112,208,169, 92,140, 58,129, 43, 89, 58,176, 42, 70,133,208,148, 90, 81, 91,195, +126,191, 71, 72, 1, 28, 52,247, 33,231, 2, 64,149,227,247,247,247, 56,159,231,190, 67,119, 13, 7,155,242,221, 94,100,139, 79, +174,157, 27,175,117, 94,131,106, 47,185, 63,135,254, 78,166, 16, 64,173, 64, 80,112,121,245, 66,113,181,181,129,147,139,197,105, +113,165,196,128,139,155, 23,216,111, 47,208, 80, 32,181,160,230, 98,250,167,217,178, 32, 24,211,116, 66, 41,130,221, 86,159,125, +161,140, 97, 28, 13,140, 36,152,231, 25,243,164,120,108, 48,131, 90, 64, 2, 67,162,125, 78, 14,233, 81,228, 28,150, 4, 33,167, + 83, 17,235, 11,102, 53,138,194,230,109,247, 9,182,177, 1,117, 21, 42,217,178,213, 71,188, 17,170, 64,246,153,191, 10, 12,128, + 24, 26, 78, 57, 99, 58, 11,198, 49,225,242,234, 18, 15, 31, 62,153,103,156,113,216,239, 49,139,224,233,116,198,205, 56,224, 33, +106,133, 47,165, 96,140, 1, 3, 1, 79, 82,144,115,197,241,116, 2, 71, 85,226,115,220,128, 57, 32,143, 13, 97, 24, 48,132,128, + 22,128,199,243, 7,204,121,194,252,105,194,241,238, 3,178,104, 38,111,218,232,200, 54,134,132,218, 38,176, 20,200, 84,240,148, + 5,175,191,254, 26,255,242,255,252, 87,236,118, 35, 54,187, 13, 46,111,175, 49,213,140,239,223,252,136,127,255,215,127, 69,158, +102,252,205,239,126,139,195,213, 45,254,252,230, 71,252,143,127,251,239,184,184,186,193,127,249,199,255,130,121, 62,227,199,183, + 63, 32, 16, 99,216, 38, 4, 0,143,199, 19,190,125,251, 51,126,122,247,222,198,255,202, 30, 30, 82,180, 23, 74,125,213, 67, 10, + 24, 55, 1, 49, 89,204,125,208,233, 70, 17,193, 72,172,159,105, 46,200,133, 17, 6,117, 31,148, 82, 0,102,181,220,216, 75, 66, + 38, 34, 42, 69,176, 29, 6,108,118, 35, 34, 47,187,209, 78,112, 19,194,255, 79,215,155, 62, 75,118, 28, 87,158,199, 35,226,222, +204,124, 75,237, 85,168,194, 66, 16, 34,137, 2, 9, 2, 92,164,166,212,173,150,205,223, 59, 54, 54, 95,100, 54,102,211,221,195, + 97,183, 90, 77, 35,197, 85, 36, 69,144, 4,137,133, 4, 10, 64, 1,133,170,122, 75,102,222, 27, 17,238,243,193,221, 35,110, 22, + 52, 50,147,145, 0, 11, 15, 47, 51,111, 70,248,114,206,239,196, 88, 0, 26, 76,137,109, 9, 98,164, 7,177,212,170,150,161, 16, +204,251,108,209,162,182, 47,139, 22, 77, 75, 54,162,247, 47,142, 82,170,130,249,194,181,235,209, 61,147,104, 44,151,152, 21, 72, +130,237,238,205, 58, 85, 4,129,169,209,180, 6, 35,159,113,213, 67,197,199,116,206,160, 23,155,199, 21, 46,134, 73,141,205,163, +205, 92, 27,241, 76,199,229,122, 48,199, 24,144,179, 19,179, 82,179,236, 33, 18,132, 6, 19,225,117,209,152, 83,217,196, 0,231, + 33, 82, 19, 31, 81, 53, 0, 59,245, 61,176, 88,250,159,219,113,170,139,136, 22,234,226,254,133, 95,162, 60, 23, 29, 97,211,138, + 24, 88, 69,218,160,205, 68, 82,154,167,221, 8,105,128,186, 57,156, 15,109, 73, 95, 98, 99,123, 52,210, 91,191,196, 93, 4,233, +251, 99,226, 0,144,249,193,219, 53,165,152, 74,150, 2,202, 45, 26,188, 89,159,122, 90,179,151,164,250,231, 43,101,227,224,227, + 64, 49, 46, 14, 53, 50,181, 49,193, 48,181,165,232,212,166, 70, 4,182, 29, 52, 51, 88, 2, 16, 59,130,115,217,129, 55,246,121, + 88,200,191, 22,246, 91,113, 21, 31,235, 20, 15,109,207,236, 31,108,109, 17,154,228, 65, 57,246,221,105,219,230, 24,108, 50,160, + 19,128, 22, 84,211, 58,100,203,233, 50,194, 98,205,165,229,165, 87,214, 81,183,254, 12,133,211,136, 88,196,176,193,122, 92, 75, +224,124,144,234, 41,147, 45, 63, 68, 52,140,196, 87, 94, 66, 22, 17, 91,155, 77, 78,147, 2,185,105, 52,128, 62, 49,171,181, 64, + 92,216,230, 19, 54,139,198,205,108,118, 56,113, 11,159,192,201,239, 62,157,104,227,253, 5, 11, 29, 22,211,236,186, 1, 7, 21, + 41,252,200,114, 1,108,202,163,186,143,128,156, 5,185,104, 81,202,213,104,137, 22,134,163, 73,104, 61,204, 5, 13,152, 24, 48, + 12, 9, 41, 16,166,146, 81,185, 88,234,162, 77,108,132,181, 56, 73, 9,235,245, 26, 36, 58,225, 12, 1,152,230,140,184, 73,224, + 40,120,122,113,129,186, 47,182, 50,165,150, 43,160, 5,139,103, 28, 48, 36, 2,168,177,217, 30, 73,196, 50, 32,216, 72,131,108, + 32, 26, 96, 8,150, 81, 17, 18, 18, 8,199, 39, 27,164, 33, 45,210, 76, 67,211,135,104, 80,207,128,227,211,107,246,122,147,226, +187, 75, 54, 97,167, 21,210,194,200,211,132,200,190,138,141, 72, 65, 51, 79,198, 20, 49, 23,198,110,191,213,247,181,154,134,198, + 86,160, 3,169, 91,104,178,226, 58,233,152, 70, 85,208,186,175,116, 79,173, 81,133,173,155, 82,206,108,104, 99,201,106, 97,245, + 68,182, 39,100, 86, 72,101,240,110,197,108, 19,228,193,240,182,119, 90, 43, 62,113,151, 39,172,211,128,171, 87,174,226,236,179, +199, 24, 78,142, 16,230, 25, 49, 17,198,148, 80,166,130,116,237, 68, 31,234, 16, 81,166, 2,204, 5,171, 33, 90, 36,161, 86,146, +105, 92, 35,165,136, 52,174, 52,197,198,216,227,196,140, 60, 93,162, 78, 51,166,105,111,163,216,130, 16, 6, 68,138, 24, 19, 16, +136, 33, 60,131,114, 69,148,128,167,231,192,215, 94,187,133,255,252,191,253, 3,226, 42, 96,125,188,193,173,231,110, 99,218,205, +248,243,123, 31,224,237,183,254,136,205,152,240,218, 95,191,142,163,163, 35,252,246,247,111,227, 55,191,121, 11, 95,126,229,101, +188,252,202, 43,184, 56, 63,195,118,123,137,148, 18, 74,209, 29,210, 84, 5,239,127,252, 16,159, 63, 58, 3,184, 98, 46,234,227, + 28, 82, 68,244,179, 61, 0,113, 80,110, 48,155,224, 36, 69,103, 26,107,114, 15, 37, 83,247, 87,221, 45, 13, 11,255, 45, 87,237, +244,245, 99,208, 67, 81,147,141, 24,235, 43,167,230, 81, 53,123, 89,101,179, 64,104,231,171,221,132,137, 68,162, 94, 8, 94,212, +153,199,177,241,157,171,165, 83, 49, 23, 35, 9,162,229, 96, 7, 68,235,184, 84,213, 74,209,186,255, 64, 72,145, 12, 18, 86, 65, +208, 36,183,234, 65, 18, 86, 25,179, 37,151, 84,210,203, 32, 44,148,197, 77, 85, 13, 35, 1,138,134,201, 52,112,150,219, 41,163, +142,162,217,208,140, 61, 58, 51,244, 44,114, 34,196, 32,160,100,208, 6,163, 52, 85, 19, 35,105, 87, 71,186, 50,128, 40, 68,205, +198, 90,132, 62,154,131,189,247, 20,160,209,171,182,255, 38,179,246, 5,161, 86,241,195,120,250, 36, 93, 84, 69,141,137,170,135, +155, 78, 68, 66,251,185, 22, 8,170,244, 43,244, 49,184, 78,127,237, 34,182, 98, 35,164,100,107,137, 30, 84, 18, 2,117, 8, 73, + 8,234,169,247,113,182, 65,114, 98, 26, 44, 34,118, 65, 31,107,216, 76,123,239,130, 42,214,225,214, 25,137, 45,151,156,200,186, + 60,235,222,196, 70,250,174,125, 16, 99,160, 47,247,175, 45,194,210, 44,131,176,179, 37, 88, 96,134, 91, 23,169,169,202, 23, 8, +227, 3,152,140, 62,127, 41, 46, 60,239, 1, 7,118, 62,109,194,251,200, 88,220,182,193, 93, 22,236,169,142, 42, 18, 43, 45, 14, +212,199,233,136, 29, 3,219,214, 1,134, 38,118,159,126,180,179, 78, 67,124,168,217,223,220,209, 17,205,163, 92,133,148,204,102, + 7, 55,129, 80,165,168, 94,194,236,195, 58, 55,135,125, 38,106,135, 42,238,248, 16,106,127,174,229, 29, 56, 27,126, 17, 29, 27, + 66, 23,120, 22,174, 45, 46,217,129, 50,210, 52, 34, 70, 85, 19,183,183,234,141,170, 5,145,178,197, 53, 99, 94,249, 30,226, 8, + 86, 39,222,177,114, 17, 90,209,106,196, 68,253,172,169,141,200,231, 92,148, 32,200, 58, 78,214,193,153,173,178,204,142,231,163, +237, 94,147,144,217,111,201,114, 28,148, 73,162,232,102,106,137,125,171,205,216, 38, 6,142,182,230,170, 46,167, 50, 21, 92, 92, +238,155,139,166, 41,244,161, 36,204,182,190,177,166,181,138,163,210, 23,140,137,224, 13,130,126,230, 94,188,199,213,136, 92,129, +205,209,145, 98, 92, 99, 68, 24, 8,168,228,150, 16,212, 50,155,150, 99,192,213,171, 55, 26,192,169, 84, 70,206,147, 69, 94, 57, +242, 57,163, 74, 69, 92, 13, 88,173, 87,160,168, 88,243, 20,245,130,223,207, 10, 69, 43,149,205, 81,162,223,228,144, 92, 51, 19, + 44,123,130,145, 20,170, 82, 23,177, 69,253, 63,165,169,145, 85, 65,170,209,171,118,216,216, 67,230, 60,120, 33,105,164, 38,155, + 42,218,101, 66,182, 91, 81, 74,204, 24,181,130,156,230,140, 49, 38,156, 30,159,180,189, 83, 76, 9, 41, 68, 4, 36,112,169, 24, + 87, 27, 12,195, 10, 85, 8,243,126,194, 60,103,140,171, 17,235, 20, 81, 66, 66,145,162, 12,246, 33, 33,141, 43,189, 56,246, 5, +121,206,184,188,184,192,197,249, 25,202, 60,163, 72, 69, 45, 21, 20, 71,140,227, 26,177, 86,228, 42,144, 58, 67,242, 12,201, 26, +244,242,173,239,188,130,255,248,159,254, 3,194,138,112,122,245, 20,119, 94,184,139, 39,143,206,240,187,127,251, 61,222,126,231, + 93, 60,119,243, 54,238,127,227,107,160, 49,225,173,127,123, 11,127,122,251, 93,124,253, 27,223,192,205, 59, 55,112,241,244, 12, +219,221, 22, 57, 23, 8,107,162,218,246,178,224,143, 31,124,136,179,179,115,128,171, 90, 24, 68, 89,228, 1,162,168,200, 24, 17, + 7,141, 74, 12, 65, 48, 87,193,224, 97, 54, 76,150,136,109, 73,154,204,224, 26, 16, 19,108, 63,215, 57,253, 61, 25, 90, 16, 69, + 65, 52, 33, 18,198, 77, 50,245,246, 98,172, 44,189,250,174, 76,198,109,167, 22,239,217,178,164,101, 17,102,197,104,150, 32,216, +184,191,165, 80,153,121, 51,134,104,108, 2, 52,241,101, 23, 48,233,232, 13,194, 11,101, 50,244,242, 51, 11, 23,200,184,209,190, + 83,165, 67,239,238,179, 9, 87, 46, 96, 67,140, 45, 47,125, 97,216,106, 9, 85,205, 75,235,120,146, 5,117,139,165, 46, 14, 62, +135,229,216,185,204, 2, 34,141,104,196, 34,192,132, 93,161,141, 96,171,166,216,130, 60,228, 32,226,211,196,135,182, 51, 12, 54, +106,182,255,197,118,209, 21, 98, 80,152, 64, 29,250, 2, 83, 17,107, 26, 91, 56, 80,220, 67, 20, 72,212,255,156, 49, 9, 66,104, + 34,190,208,116, 1,104,204,111, 46, 11,129, 82,211, 12, 68,123,141,193, 70,225,181,199,115,134,106, 73,109, 81,223, 23, 81,120, + 10,217,197,165,214, 55, 37,157, 57,220,165,112,110,239, 51,215,250, 5, 79,119, 88, 20, 53,209, 38,126,123, 91,143, 16, 23, 68, + 36, 8, 23, 48,169,109, 41, 24,171,161,209,242, 14,236,135,221,134, 20,140, 5, 47, 45,205,204, 24,246, 68, 7,251,239, 46,128, +146,198,176, 23, 40,160,197, 30, 72, 21, 41, 73, 51, 48,153,151,218, 38, 61, 68, 16,163,103,122,185, 85,109, 53,226,190,111, 90, +140,255,185, 86,203, 40, 0,184,216,243, 99,242,146, 24, 2, 34, 6,101,125,248, 39,111,251, 85,174,140,100, 54, 51,242,120,105, + 43, 44, 26,189, 16, 93,165,174,224,148,174,162, 79, 33,160,136,189, 46,235, 58,217,153,240,254,121,216, 69,236,252, 5,134, 78, +223,220,151,190, 12, 51, 97,247, 85,114,251,226,245, 96, 79,199, 12,144,230,108,184, 3, 65,229, 50,172,238,168, 42, 10,158,241, +239,232,130, 9, 79,141, 60,199, 77,176,157, 6,245,104,231, 82, 80,102, 85,137, 47,145,211, 44,130,113, 53, 42,121,176,126,209, + 74,184, 94,173,241,228,243, 39,152, 47,102,196,193,166,127, 30,121, 27,151,192, 31,179,183, 9, 25,235, 67, 14,210,229, 26, 75, +136,186, 27,128, 98, 64, 28, 6,204,115,198,201,201, 6,171,213, 74,159, 63, 46,141, 93,223,136,126, 53,227,228,244, 30,142, 55, +167,200,134,154, 46,121,182,231, 71,140,167,175,231,181,178, 80, 20,188, 37, 8,216,108, 54, 88,175, 55, 32, 82,101,252,110,183, +213,233,164, 9, 38, 17,201, 24, 22,186,102, 21, 17,148, 82,244, 82, 87, 36, 44,233, 47,108, 15,190, 82,109, 67,251,130, 16, 69, +164,164, 21,152, 86,216,158,238,160,153,185, 66,202, 49,134,197,235,197,164,111, 36,172,139,130, 5,107, 8, 39,108,119, 23,216, + 93,158,225,234,241, 17,214,167, 71, 45, 93, 39,132,128, 20, 35,174, 28,173,177,207, 25, 97, 28, 48, 30,173,176,223,238, 81,230, +130,203,139, 11, 28, 29, 29, 41, 29, 46, 87,172,198, 21, 66, 84,177, 17, 69,165,166,213,221, 37, 46,167, 29, 46,119,151,152,231, + 61,198,213,136, 50,101, 72, 97,196,144,176, 30, 6,204, 16,228,108,214,146,185,160,112,193, 27,223,126, 3,247,191,254, 42, 32, + 5, 87,110, 92,195,189,123,119,240,241,195,199,248,245,143,126,142,247,223,127, 31, 95,122,237, 53,124,253,254,125, 84, 76,248, +245, 47,127,131, 7, 15, 62,193, 55,222,248, 6, 54, 87, 78,177, 61,187, 64,222, 77,152,182,123,221,117, 31, 31,225,236,209,231, +248,211, 95, 62,194,110,159, 33,149, 13, 79, 24,116,116, 99,230, 26, 10, 1, 33, 69, 12, 67, 68, 10, 64, 37, 29, 67,207,181, 98, +101,116,129,102,187, 18, 49, 52,160,190, 14, 49, 97, 29,132, 13, 66, 19,155,183,188, 84,229,154, 31,175, 55,122, 25, 5,235,202, + 89, 15,180, 16, 18,188,133, 20, 81, 95,123, 34,160,230,106,136,203,254,133,246, 17,143,198,251, 77,198, 37, 71,171,100,245,243, + 54,226, 90,240,221, 35, 45, 98, 37, 15, 47,119,129,237,149, 27,213, 78, 43,245, 16,196,226, 82, 77,192,213,192, 36,190,191,235, + 64, 20,177, 17,224,179,255,231,194, 73,191,196, 99,164,174, 26, 14, 74,115,227, 69, 78,182,119,101,114,224,110,238, 95,230,106, +217,237,234, 43,235, 23, 71,127,253, 58,193,112,141, 64,179,150, 64, 26,101,107,105,119,242, 92,105,223, 71,114,209,196, 55,103, +119,179, 88,236,232, 82, 54,100,157, 19, 75, 23, 66,121, 39, 4,210,148,182, 56,168,134, 32, 46, 60,251, 8,142, 42, 21,179,206, + 85,117, 76,176, 78,190,170, 93,102, 61, 70, 52, 44,118,142,212, 44, 99, 4,122,230, 77,182,208, 15, 39,228, 25, 15, 93, 42,218, +161, 90,204, 47, 27, 44,206, 20, 33, 52,191,117,138, 17,213,188,245,195,144, 48, 91,176, 71, 29,208, 92, 22, 65, 98,123, 31,225, +201,107,194, 54, 13, 65,135,149, 64,218, 30,218, 22,194,109, 90, 34, 44, 7,147, 1, 17, 75, 32, 51, 28,176,152,114, 82, 68, 32, +149,144,171, 24, 98,180,135, 12,249,115,228,225, 54,100,163,247,102, 61, 51, 95,185,126,198, 90, 84, 69, 77, 0, 82,253,132,139, +208, 44,187, 91,160, 25, 14, 82,116,199, 28,137, 16,134, 4,120,151, 46,130,146, 53,227,156, 82, 68, 37,211, 82, 64, 67,145, 68, + 76,165,109,142, 21, 15, 20, 42,165,182, 98, 39, 25,249, 16,139, 12,118,239, 94,155,199,193,191, 91,166,123,240,252,244,106, 46, +152, 24,226,194,202,133,182,206, 91,134,159,232,223,115, 43,149,180,189,125,191,170,180,128,201, 2,228,162, 54,182, 82,245,172, + 82,203,116,104,254,123, 90, 76,111,252,105, 27, 71,125,150,107, 41, 42, 32,164,168,254,116,155, 30, 12,227,168,133,138, 77,217, +146,173,174, 74,209, 81,123,150,130,243,139, 45, 74, 53,173,143, 49, 14, 66,208, 66,167,185, 19, 92,252,200,114,248,189,243, 73, +141,161,141,221,222,230,157,190, 14,230, 43,142,143, 55, 24,134,161, 89, 19,237,196,110,120,222, 90, 24, 71, 39,215,108, 90, 86, + 17,169, 98,222,239, 44,201,175, 96, 24, 87,136, 20, 48,205, 5,101,158,176, 30,244,175,171, 64,237,121,155, 35, 32, 16,246,251, + 75,181,229, 89, 88, 16, 69, 61, 15, 85,185,239, 34, 90,157,164, 36, 55,227,115, 59,144,244,232, 81, 69,173,126, 57,106, 97, 96, + 85,193,136, 54,214,244,180,158,170, 66, 12,210, 12,108, 50,146,151, 4,168, 2, 80,244,130, 18,219,213,184,157,178,102,198,229, +110,210, 75, 60, 37,172, 78,213, 14, 16,135,132,121, 55,225,234,181,107, 56,187,184,208,157, 70,178,189, 7, 87,228, 60,227,100, +115,138, 56,142, 8, 92,176,138,118,128,146,218,207,230,178,215, 12,109, 46, 22,185,169, 49, 24,181,152, 2, 54, 69, 67, 37, 22, + 68, 10,184,188,216, 34, 31, 39,252,195,127,250, 30,222,124,253,235,248,244,211,143,113,245,246,109, 60,127,239, 30,222,255,224, +207,248,233, 63,255, 28, 31,127,244, 0,223,120,227, 27,248,234, 27,175, 98,222,237,241,167,223,189,135,203,203, 61,238,191,254, + 85, 12,227, 10,187,167,231,184, 60, 59,199,167,159,125,134,227,147, 19, 92,187,118, 21,159,125,250, 25,222,251,240, 99,236, 38, +181, 91,228, 57,131, 65, 88,145, 42, 13, 42,122,182,113, 24,140,171, 30,180, 67,156,107, 5,101,224,104, 24,193, 4, 36, 27,147, + 87,219,117,105, 96,137,163,124, 21,226, 32, 54,242, 34,170, 0, 37,212,146,149, 7,239, 40, 95,239, 92,165,194, 49, 28, 28,244, + 48,142, 20,218, 23,131, 8,144, 74, 61,156, 66,200,198,233, 2,146,238,185,118,245,109, 74, 73, 41, 78, 20,109,109, 64,246,101, + 21, 48,172,235, 51,197,117,143,153,244,137,142, 10, 61,204,216,213,172,113,126,225,186, 61,134, 12,101,250,239,220, 45,166, 18, + 39,243, 26,199,118,121,122,196,235, 65,167,239, 24, 92,243,227,251, 88,184, 93,146, 62, 66,110,130,162,128,136,100, 73,104,110, +125,169, 45, 29, 76, 19,195,130, 9, 74, 53,223,218, 59,192, 46, 14, 13, 61,111, 27,106,101,242,137, 85, 49,255,188,152, 85,208, +215, 4, 62,186,243,105, 66,207,197,230, 5, 11, 58, 54,107, 31,217, 1,229,151, 50,130,219,194, 98,235,174, 74,158,144,231,217, + 18,180,164,141, 18, 29,141, 74, 22, 68, 66,210,150,230, 86,230,244, 78,155,164, 1,102, 53,140,199,118,246,193, 87, 37,164, 22, + 31, 4, 83,181, 27, 24, 6,207,164,165,177, 95,244, 76,160,152, 48,132, 81, 39,133,164, 35,197, 80, 11,162, 4,144,145,241,154, + 82,223, 8,135,190,127, 20, 19,221,181, 56, 74, 67,251, 54,192, 81,176,152, 18,135,205,184, 53,143,208,186,115,247, 72,249,165, + 37, 69, 87, 83, 75,167,159,142, 76, 67, 27,249,187,168, 48,196, 37, 31, 93, 87, 19,206, 88, 39, 16,138, 99,214,200,175, 0,168, + 77,141, 5, 37,207,218, 97,145, 0,177, 64,106, 86,181, 51,116,229,229,227,244, 20, 34, 42,233,133,174, 43,189,210, 84,211,174, + 64, 87,204,105,159, 90, 44, 53, 5, 68,164, 7,190, 21,202,250,123,198,131, 63,195,237,123, 66, 72,166, 89,233,252, 5, 28, 76, + 90,150,186,144, 46,178,164,133,166,202, 6,119, 66,112, 40, 69,206,140,108,184,219,154, 25, 37,203,129,175,221, 53, 55,254, 25, + 5, 67,214,166, 65, 27,143, 60, 23, 85,107,196,208,176,191, 14,164,201,181,152, 93, 46, 99,125,116,210,162,148, 55,195,128,186, +221, 97,123,118,105, 43, 34,187,203, 96, 26,131, 24, 13, 94, 35, 7, 97,102,186,255,145,102,203,142,160,102,205,107,240, 69,187, + 39, 39, 48,130, 8,214, 43,205, 13, 73,209, 34,141, 73, 64,131, 61,135, 34, 72, 99,194,149,107,215, 80, 75,209, 59, 85,180,235, + 86, 10,107, 65, 28,162,225,247,148, 59,225,248,219,128,138,148, 70, 21,125, 11, 99,154,247,216,239,118, 96,115,148,196,168,130, + 86,177, 38,161,154,117, 86, 4, 72,226,220,119,203,139,149, 0,112,136, 72, 80,203,131,144, 10,150,216, 8,104, 89, 11, 74, 0, + 0, 32, 0, 73, 68, 65, 84,115, 83,169, 54,122,212, 61, 82,149, 10,162, 1,140,164,112, 50, 34, 68,203,157, 21, 10,230, 57,212, + 47, 38, 83,176,204,218,128,189,101,226,130, 8,183,111,220,196,147, 71,159, 35,164,128, 9,140,147,227, 99, 92, 94,110,245,194, + 24, 6,236,109,220, 95,107, 69, 74, 3,198,213, 10,179, 0, 50, 85,228,105,198, 84, 38,236,231, 89,199,160,145,154,231,121, 29, + 18,136,146,117, 37, 58,142, 46,172, 99,218,139, 41, 35,142, 9,255,241,239,190,131,111,190,241, 26, 42, 87,220,251,210, 75,184, +121,247, 22,222,125,235, 93,252,175, 31,254, 24,243,126,198, 27,223,253, 54, 94,122,249, 37, 92,158,157,225,193, 7,159, 67, 6, +194,151,238,127, 25, 17,132,179, 71, 79,240,248,209,103,248,244,209,103,184,113,243, 22,174, 94, 59,197, 7, 15, 62,194, 71, 31, +127,134,125, 17, 72,206,168, 89,157, 4,131, 81,171,178, 70,110, 33,217, 23, 50, 82, 64,133, 17,196,172, 84, 44, 69,144,171, 32, + 66, 71, 49, 58,214,179, 29, 97, 20, 8, 21, 11, 99,233,120, 81,162, 2, 96, 4,177, 6, 95,172,215, 99,179, 75, 5, 97, 19, 41, +185,197,200, 68, 66,214,197,195, 62,235, 64,130,212,146,183, 13,167, 29,213, 78, 82, 97, 52, 54,240, 2, 42, 38, 42,112,162,216, +180, 22,206,222,246, 72,201, 34, 85,119, 84,246,250, 28, 47, 73, 77, 41,206,221, 82,133, 62, 94,103,143, 5, 53,140,163,238,114, + 23,170,109, 75,144, 99, 62,156, 6, 28,238,111,209, 44,127, 75, 53, 52,183,253, 42, 29,142,246,201,247,128,213,114,185, 85,111, +175, 89,217,150, 72,105,150,166, 32,139,208, 19,163,141,185,239,219, 71,145,170, 72,239, 35, 81,182,226,148,141,136, 39, 38,146, +107, 72,213,160,163,108,221, 83,106,229, 47,220, 11, 64, 9,157,208,197, 40, 10,247,177,207, 42, 88, 32,146,176,114,168,165,101, +197, 23,204, 83, 70,201,181,145,180,164, 90,222,183,229,216,123, 80, 4,216, 70,207,236,254,115, 79,122,245,130,188,219,252, 98, + 36,148, 98,129,162,100, 41,105,182, 26,136, 20, 80,169, 30,216, 92,197,112,195, 7,202,105,120,204, 39, 76,208,167,105, 96,154, +112,166,221,173, 43,131,189, 64,162,160, 23,170,111,197,181, 64, 9,150, 54,102, 29,118,117,188,110, 62,176,159, 57, 79,222,105, +152,220,162, 65,169, 21, 48,194, 69, 47, 24,183,108, 25,128,166,154, 1,174,131, 89, 60, 8, 92,249,230,228, 78, 0, 66, 19,200, + 37, 43, 42,170,129,145, 52, 81, 76,189,200,106,209,243, 61, 51, 90,199, 27,136,218,179,230,197,170, 79, 15,194,194, 54, 23, 77, + 35,226,164, 56, 37, 52,126, 81,121, 47, 11,180, 49,154, 7, 62, 52,113,230,178, 90, 94,218, 0,253,115, 90,254,245,114,237, 37, + 7, 23, 62, 31,176, 23,156,158, 87, 5,138,132,157, 51,114, 41,152,106,177, 92, 2, 28,252, 76, 9,138, 36, 15,164,233,146,227, + 56, 98,220,140,168,147,199, 58,195,226,107,213,250,184,218,172,192,246,217,207,147, 22, 57,171,113,108,247,137,164,136,179, 39, +231,152, 38,181, 11, 38, 11,111,169, 28, 52,130, 59,134, 5,124,199,139, 91, 89,240, 40,170, 81, 18,169, 57, 54, 28,153, 28, 76, +216, 54, 82, 4,134,132,245,106,108, 49,205, 18, 8, 67, 8, 80,121,177,226,163, 55,227, 9,174, 92,189,142,105,187, 69, 72, 35, +132, 42, 74, 85, 28,245,110,154,176, 73, 71, 42,158,166,130,176, 25,128, 90, 81,130, 96,218, 51,134,213,218, 28, 5, 26,153, 93, +252, 51,234,114, 34,123, 38, 52,161,176,146,238,235, 19, 28, 36, 81, 61,188,195, 21,141, 93, 5,234,251,171,185,168,157,104,140, +169, 51,114,205, 18, 82,237, 0,107, 30, 87,235,182,220,195,218, 98,245,236,167,238,237,195, 32, 17,108,142, 54,248,236,227,140, + 20, 70,112,101, 92,189,114, 5,159, 61,252, 20, 82, 9,227,166,179,202, 75,169, 40,165, 96, 28, 7,240,197, 5,166,253, 30,251, +237, 37,230,146, 81,131,238,145,200, 70, 31, 33, 16, 70, 74, 64, 8,152,230,172, 1,244, 85,197, 57,251,221, 14, 55,111,220,196, +119,255,250, 91,184,247,252, 93,148, 90,113,227,230, 77,156, 94, 57,197,191,254,252,151,248,201,143,126,138,147,211, 83,220,255, +230,107, 56,189,118, 29, 79,207,206,113,113,126,142,213,209,128,107,199, 87, 80,106,197,227, 71,143,240,240,195,135,120,248,232, + 33, 94,250,210, 75, 88, 29,109,240,167,119,255,140,143, 63,249, 28, 66,132,154,171,217, 48, 68,213,136, 16, 20, 41, 16,131,154, +251,131, 93, 45, 5, 40,152,246,128,139,160, 4,197, 42,174, 67, 68,145,170, 22,175, 34,154, 58,102,239, 35,123,114, 22, 83,195, +170,122, 32, 4, 17,176,222, 12, 58,129,177, 3,210, 57,117, 32,141,222, 12,238,120,176, 3,197,125,213,204,140,100,163, 77,241, +189,161,123, 38,133,218,248, 83, 21,168,166,122, 54,208,130,239,195,244,231, 20, 83,152,122,218, 22,236, 50,136,237,240,105,112, + 11, 4, 48,117,146, 23, 45,128, 34, 45,157,123,121, 1,183,184, 68,179,186,133, 5,182,213, 19,228,218, 62,217, 89,207,189,179, +234,140,103, 28,208,226,150, 23,189, 19,160,245, 31,179,247,151,186, 71, 89, 51,170,227, 98,196,235, 88, 87,135,152, 72,155,118, +160,125,214, 93,113,205,108, 17,171,140,131, 48, 15,233,184, 50, 93,241, 82, 80,189,132, 21, 19, 98,187,113, 15,211, 33, 12,154, +244, 22,146, 9, 33, 5, 53,168,207, 87,225, 55,154,224, 17,130,253, 12, 27,211,249,235, 57,216,203,179,153,249,193,141,181,238, + 34, 89,161, 0, 48, 33,194, 45,122,101,145,104,101,229, 30,231,246,190,166,164,164,184, 96, 99, 73, 93, 45,248,248,151, 90,100, +102,132,118,232,194,130, 48,216, 62,125,193,224, 14,209, 4,152, 13, 51, 43, 29, 8, 99, 59,206,222,113,121, 88,140, 44,246,154, +212, 38, 75, 7, 44,121, 7,250,112,143, 83,213,243,169, 11,235, 28, 15,171,212, 48,235,194, 66,104, 32,146,234,121,229, 14,235, +177,167,198, 87, 40, 20,131, 42,167,165, 34, 81,180, 14, 43, 34,141,105,145,210,166,171,129,104, 4, 64,253, 53,217,112,177,166, + 51, 49, 1,148,127, 39,116, 13,138, 14,157, 90, 36,156,197,168,254,248, 42,207,100, 9,160,211,218,184,173, 16,208, 18,215, 26, +131,130, 66, 75, 63, 59, 20, 29, 30, 78,190,218,119,166,217,149, 45,182,180,193,141,244, 63,167, 92, 80,170, 40,124,166,112, 43, + 36,220, 65, 2, 15, 7,114, 77,141, 8, 86,171, 1, 49, 4, 76, 57, 55,155,110,176,115, 38,141, 3, 40, 6,212,156, 81,230,140, +203,243,115,220,184,125, 83, 93, 45,165, 98,181, 26, 65, 53, 99,123,161,250,166, 97, 76, 8, 73,221, 32, 62,233, 81,241,119,215, + 35,201,129, 46,128,122, 22, 10,186,222, 0,158,115, 96, 64,140,213,230, 8,137, 9, 73, 98, 43,172,180, 8,202, 6,128,210,181, +203,205,155, 55, 90, 39,157, 70, 66,206, 85,163, 85, 89,191,167, 78, 87,172,181,106,209, 66,192,156, 43,114, 41, 88,173,109, 20, +207, 5,251,121,198,106,189,194, 92,170,194,195,156, 43, 99,191,243,152, 34,192,131,210, 57, 85,253,137,102,251,160,208, 47,101, + 18,198, 96,162, 11, 0, 58,238,112,118,176, 1, 11,216,208, 5,108, 2, 3, 29, 91, 24, 55,152,170, 14,241, 22, 57,203,100, 59, +182,167,103, 79,154,221, 71,131, 85,130,141, 48, 72, 5, 94,235, 99, 76,219, 9,113, 28, 52,106,179, 0,211,118,194,249,249, 25, + 88, 24, 57,207,200,101, 70, 46, 69,225, 20,105,180, 15, 66,139,246, 24, 18, 98, 32,204, 37,155, 31, 52, 66, 80, 48,149, 61, 94, +122,233, 5,252,245,223,126, 15,171,113, 0, 98,192,205, 91, 55,177, 57, 90,227,167, 63,249, 25,254,249, 7,255, 19,119,238, 61, +135, 87, 95,187,143, 97,179,198,229,249, 57,246,251, 29,142, 78, 79,176, 62, 62, 70,222, 79,248,244,225, 39,248,183, 95,253, 22, +105, 72,248,202, 87,191,134,253,180,199,111,127,251, 54, 46, 46, 46, 80,197,178,147,205,238, 20,130,142,105,114,101,100, 75,207, +138,198,195,214,138,156, 48,112, 84, 91,151,113,190,185, 42,121, 41, 37, 83,180, 87,237, 82, 57, 42,156,196, 71,129,181,170,250, +180,237,122,161,123,241,180,138,182,131,171, 0, 52,146,148,153,145, 72,195, 69, 74,163,101, 57,197, 77,215, 20,202, 32,175,202, + 17, 31, 82,183,168,185,168,195, 84,191,100, 59,110,239, 32, 28,152, 32, 82,109, 76,235,151, 92,181,195, 51, 54,166,186, 67, 50, +244, 31,139,189,139,162,133, 56,197,231,237, 44, 93, 81,238,225, 44,210, 65, 48,144,195, 67, 71,217,239,177,117,158, 98,149,181, + 78,121,164,237,186, 27, 62,116,177, 67,110,224,137,198,135, 70,247, 9, 91,106,151,170,108,141, 91, 30,108,166, 81,171,141,229, +173, 98,102, 71,154, 86, 5,153, 16, 14, 10, 9,135, 69,112,219,165,183,197, 94, 99,171,187, 48,174,181,202,134,127,100,115, 47, + 56,112,201,110, 72, 29, 60, 75, 23,243,148,204,136,232,234, 94, 63,120,197,254, 29, 93,223,208,197,114, 92,106, 43, 20,157, 71, +239, 66, 89, 49,117,185, 88,250,150,143,237, 93, 51, 16, 35,117, 44,168,117, 58,122,225,171,149,176,185, 4, 82,210,160,167, 69, +208, 78,180,110, 88,127,190,254,206,170,117, 88,248,207, 65, 95,216,237,251,180,131, 77, 49, 78,180, 80,251,219, 91,234,151, 45, +115, 87,179,115, 83,140,115,195,228, 43, 88, 37,218,243, 27,108,253, 89, 14, 14,115,103, 7,244,103,215, 5,141,116,176,127,238, +112, 65,157,108,214, 69,167,171,218, 3,105, 60, 3, 54,236,113, 8, 61,117,175, 88,232,137,178, 20,236,124, 12,212,158,149, 70, + 7, 92, 60, 83,203,201,217,146,154,216,132,122,102, 37, 36,187,232, 43,128,100, 69,135,239,229,197, 46,172, 20,163, 21, 35,220, +221, 3,114,232,251, 63, 12,179, 89,218, 53,165,133, 74,177, 0,165, 0,243,172,142,159, 82,209, 46,241, 16, 2,178,235, 89,120, +209, 60,120, 88,202, 48, 32,100, 65,158,125,170, 65, 13,212,148,198,161,129,163,118,151, 59, 80, 32,172, 55,155,182, 46,137,105, +192,110, 63, 97,191,219,163, 10, 99, 52,151, 72, 80,249, 79,155,112, 44,139,119,215,104,248,154, 78,163,217,186,205,219,109,135, +176,201, 95, 76, 17,113,136, 24,176,130, 76,165,179, 27, 66,128, 20, 43,200, 69,233,158,167, 87,111,160,204, 25,243, 52,227,202, +245, 27,120,242,232,115,212, 50, 25, 71, 67,139, 20,182, 0,180, 57, 79,160,144, 80, 75, 69, 26, 70, 28, 31, 29,131, 44,200,102, +183,219, 57,122,195,141, 21,102,193,212,223, 45,249,250,144,128, 4, 33,219,217,114, 67, 82,122,133, 8, 19,161, 36,131,205,176, + 84,164, 56, 42,234, 78,148, 54, 36, 20, 64, 40, 38, 80,114,139, 86, 31,211, 37,123,160,156, 37, 30,162,126,185,159, 94,238, 80, +172,154,139,195,160, 62, 75, 27, 99, 48, 1,167,167,199,138,144, 28,116, 95, 47,129, 80,168, 98, 63,237,193, 49, 26,108,165, 26, + 61, 45,154,234, 55, 88,215,160,251, 16,120,152, 66,101,236, 38,198,122, 3,220,255,218,171,120,253,245,111,180, 7,228,246,221, +187, 24,199, 1, 63,249,241,207,241,235, 95,191,133, 87,191,254,117, 60,247,194,115, 96, 22,236,119,123,196,148,112,237,218, 85, +196, 97,196,249,217, 22, 31,254,229, 3, 60,120,247,207,184,126,253, 6,238,220,189,131,207, 30, 61,198,159,255,252, 0, 83, 41, +200, 18, 80, 75,214,142,154, 8, 20, 42, 2, 1, 69, 88,227, 44, 77,253, 76,149, 81, 98, 64, 96, 66, 52,106,154, 6, 97,116, 75, + 79,206, 5, 41,105,136, 7, 23, 21,203,149, 80, 59,125,137,129, 2,103,244,107, 7,166,187,107, 32,165,149,121,101, 11,162, 36, +136,164, 86,117,162,218,232,215,137, 93,139,139,177, 29, 6, 96, 59,124,251,158, 11,178,240,149,122,236, 42,145, 9,130,106, 19, +149,212,214,129, 47,190,240,214, 45,185,117,107,217, 25,136,117, 88,190,163, 20, 55,136, 91,117,206,198,165,214,233,176,237,174, + 23, 89, 5, 58,198,229, 5,123, 91,143,213,152,186, 21,163, 86,110,135,183,209, 67, 90,214,123, 63,112,251,216, 50, 70, 45,114, + 36, 44, 85,246,110,126,233,211, 7, 95, 72,116, 8, 7,154,120,145, 60,132,195,125,200,139, 80, 24,102,134,148,218,197, 71,134, +149,164, 16, 77, 33,223,169,115,190, 91,119,213,186,239,251, 93,173, 30, 60,243,220,168,122, 98, 65, 24,149, 68,227,137,165, 11, +156, 40, 68,212,156, 59, 69,205, 73, 48,212,167, 53,125,151,140,230,183,109, 5,185, 1,103,132,130,189,158, 62,190,212,213, 80, +236, 49,156, 65,245, 11,108,202,238, 96, 16,150, 10,159, 8, 0, 82, 11, 10, 69, 12, 99, 50,125, 72, 81,139,154,237, 30,253, 23, +105, 66,201,182,102,241,207, 66,250,103, 73, 11,239, 78, 56, 76, 78, 99, 94,166,242, 73, 19,209,185, 95, 63, 4,195,149,134, 96, +207, 51,181,207,129, 2,125,129,156,217,104,110,134,254,121,118, 36, 29,218,197,102, 74,120, 4,163,169,169,214, 39, 14,250,204, +102, 35, 16, 18, 89, 1,111, 97, 74,193,207, 87,179,162, 69, 14,109, 95, 44,162,148, 89,182, 78, 87,120, 57,250, 94, 90, 6, 61, +214, 54, 52,251, 10,133,216,197,113,132,238,130,136,166, 0, 55, 75, 43,219, 68,169, 97, 82,151,218, 8,159,162,185,230, 5,210, + 38, 98,173,168,176,201,138,166,177, 85, 69,195, 86,165,202, 69, 91,165,136,165,153,105,242,167,145, 65,185, 34,141, 9,195, 48, + 96, 42,213, 4,114,104,147,159,113,189,106, 43,140,105, 63, 97,123,185,197,141,219, 55,144,134,136, 90,197,148,241, 1,219,237, + 30,211,222,211,206, 6,179,179,105,234, 94, 67, 87, 47, 96, 82,250,149,149, 22,163, 26, 60,101,207,166, 7,238,169,137, 38,222, +140, 49, 96,189, 94, 1, 5,216,239, 21, 99,221,232,141,204,160,164,123,176,148, 86, 56,189,114, 29,217,146, 53, 67,136,216, 79, +123,148,170,247,101, 33, 54,252, 53, 91,241, 50,216,122,154,112,229,248, 4,171,149, 42,223,119,251,189, 70,103,147,173,121,104, + 33, 96, 15,172,130,203,144,144,134, 1, 25,130, 4,143,218,108,248, 76,179,109, 24, 97,138,134,193, 40,101,179,138, 45,146,126, + 8,108,145,154, 48, 65, 74, 84,207, 13, 22,107, 81, 29,248, 54,142, 52,187, 43, 4, 18, 35, 98, 74,152, 12, 96, 63,164,136,241, +232, 72,233, 95, 80,139,210,122,189,198,118,187,195, 56,110,244,225,138, 10,183,152,107, 69, 37, 65,136, 73,199, 68, 85, 59, 39, + 56, 51,215, 90, 12, 21,146,233, 8,124,119,185,195,106, 88,227,245,215,238,227,205, 55, 94, 71, 26, 35,134,205, 10,183,238,220, + 70,201, 25,255,252,223,255, 23, 62,254,232, 9, 94,125,237, 62, 78,111, 28, 99,127,190, 67, 26, 86, 56, 57, 61,198,241,209, 6, +133, 11,222,249,227,251,120,255,157, 7,216, 79, 59,220,251,210,139, 88,173, 7,188,251,231,191,224,193,131, 79,149,210, 84, 52, +211, 55,152,224, 45,134,128, 65, 10, 50, 11, 50,107,158, 56,196, 14,244, 40, 72,172, 43,143,154, 43, 48,144, 90,203,132, 26,133, + 43,207, 21, 41, 18,114,228,150, 38,150, 76,225,238,170,107, 53, 44, 86,136, 65, 36, 42,107, 58,155,118,233, 5, 92, 3, 10, 85, + 16,169, 88, 72,186, 53, 90,247,198,198,156,103,235, 96, 34,162,169,103,101,209, 1,151,198, 34, 8, 38, 16,243, 56,213,118,177, + 11, 55, 65, 87, 52,193,144,223,114,236, 24,174, 32,135,149,190, 91,182, 60,228,196,158, 65,165,100,121,135,109,138, 1,234,138, +114,237, 36, 85,157,187,228,158, 3,181, 33, 75, 59, 93, 76,108, 15,205,173,135,106,221, 71,232,162, 52,127, 62,201,240,142,190, +110,106,126,237,208, 15, 90, 2,181, 85, 19, 75,191,100,156, 25, 45,182,127,247,215,215,223, 35,233,135, 9, 75, 19,201,249,120, +219,247,231,140,170, 43,151,216, 59,237, 6, 27,169,188, 0,159, 44,108, 69, 22, 73,235, 89,243,132, 67, 14,189, 47, 5,107,205, +141, 31,239,194, 59,239,240,196,130, 86, 84,120, 90,109,181,163, 16,144, 16, 8, 41,234,123,198,205,126, 71, 22,189, 44,118,132, +132,198, 62,111, 62,229, 69,126,188, 88, 56, 80, 36, 21,200,177, 84,148, 6, 60,177,125,165, 17, 13,131,233, 17,148, 39, 46,118, + 17, 44, 50, 42, 32, 45,239,193, 47,123, 11, 98,183,215,223, 35,101,123, 65,178, 12,127, 18, 21, 6,123,126,132,117,139,174,218, + 86,237, 4, 29, 76,128,150,227,231,131,201,142, 77,204,124, 74, 25,156,110,104,221,159,254,124,101, 76,132,230, 24, 18,151, 51, + 24,158,118, 97, 15, 21,103, 4,246,198,168,250, 78, 60, 6, 72,174, 40,149, 91,178,157,143,185,131,229, 10, 52,129,156,117,232, +209, 80,174,238, 22, 16,119,178,112,255,142, 52,165,188, 44,172,172,109,202,193,135, 74,122, 28, 58, 79, 58, 12,200,138, 98,110, + 47, 17, 83,201,152,102, 77,185,116,219,158, 63, 35,125,178, 33,205,246, 44, 16,172, 86,107,172, 40,224, 73,157, 80,185,154,166, +133, 48,174, 87,136,195,168, 80,173, 41,227,236,233, 25, 98,138,216,108,214, 32, 66,219,197, 87, 46,216, 93,110, 45,249,141,154, +238, 64,167,196,116,160,231,240,223,169, 26, 37, 18,232, 43,191,102,197,205,135, 33, 63,193, 38,215,171,213,160,223,167,105, 66, +186,118, 69,147, 75,163,226,204,199,116,140, 90, 5,171,163, 13,142,142, 79,112,118,118,142,113,189, 2, 23, 65,206,154,162,167, +105,147,250,204,212,146,181,235,142, 58,165,202, 16,172,143,142,176, 74, 9, 85,148,166, 90, 61,186,154,148,126,234, 41,163,174, +111, 65, 48,221, 21, 17, 82,225,174,248,236,116, 47,243, 10,198,128,113,225,233,108, 35, 90,178, 47, 42,187, 23,157, 13,215,201, +118, 40,140,128, 36, 16,113, 19, 36, 8, 52,227, 55, 80,192, 17, 69, 12, 81, 48,213, 10,206, 5, 76,192,250,120,141,243,179,217, +186, 20,198,112,180,130,156,111,205,231, 57, 34, 76, 51, 42, 8,251, 60, 35, 32,169,233, 62, 69,208, 20, 80,181,254,199, 16, 21, +115,203, 34, 40, 85, 48,205, 25,251,203, 61,174, 93, 61,198, 27,223,125, 19,247,191,126, 31, 18, 8, 71,167, 39,184,121,253, 22, +158, 94, 94,224,167,255,244, 63,241,232,201, 25,254,234,181,175, 99,179,217,224,226,236, 41,134, 33,226,250,245,171, 88, 31,159, + 96,187,223,227, 87,191,248, 21,126,254,195,159,224,165, 87, 94,193,253,251, 95,195,110,123,137, 63,252,238,109, 60,124,242, 57, + 36,110,192,181,162,102, 6, 56,160, 2, 24,135,128, 49, 6, 76,146,108, 4,110, 44,102,175,240, 45,177,136,106, 85,248, 67,173, +234, 39,117,241,116, 21,100, 48, 48, 19,134,177, 34,177,114,219, 71, 16, 88,130, 22, 0, 92, 17,109, 79,201, 2, 84, 53,178, 35, +174, 3,134, 16, 32, 69, 80, 9, 8, 52,107, 68, 31, 19,136, 45,132, 68,116,231,143, 0,141,240,228,160, 5, 69,128, 10,133,202, + 10, 28,109,172,167, 86,135,131, 64, 3,102, 6,170,242,206,210, 66, 76, 19, 40,104, 56,138, 45, 11, 93, 72,134,158, 0,160,158, +236,229,225, 40, 48,214,124,223,183, 70, 99, 71, 23, 84, 37,219, 29, 0, 77,236, 8,180,144, 17,143, 6,213, 93,104,109,254,215, +134, 82,197, 97,208, 70,231,185,123,226,149,142,202, 91,215,102,126,126,105, 92,252,216, 56,244, 22, 1, 3, 87, 50,105,114,154, + 41,199,155,152, 38,116,225, 25,250,200,209,247,186,234, 6,152, 81, 57, 55, 14,181,158,240,193, 28, 36,162, 14, 5,234,138,102, +221,189, 75,123, 93, 21,130,181, 40, 96,201, 59,119,160,135, 53,144, 31, 20,185,170,200,200,118,199,149, 21, 0, 45,246,122, 96, + 1, 40,108,251, 89, 9,164,218, 6, 19,191, 87,150,110, 1,164,190, 86, 16,174,141,128, 73, 20, 65, 82,155, 80,146, 2,129,197, + 99,120,165,141,247, 97,160, 31, 34, 54,208,137,118,195,209, 87, 21,105, 64,138, 65,129, 29, 53,219, 68,196,116, 57,165, 26, 13, + 80,223,107,182,184,232,232,133,196, 34, 37,175, 46, 2,100, 22,253, 58, 68,194, 65, 81, 25, 3,181, 41, 81,229,218,233,118,246, + 94,232,132, 65,157, 39,238, 14,240, 49,116,187, 11,217,214, 0,162, 81,161, 75,124,172,152,173,143,201,237,149,104,112, 24, 95, + 65,117, 93,137,116, 88,139,173, 88,150, 66, 53, 84,165, 96,198,102,151, 44, 54,213,178,201, 64, 10,139,110,218,172,105,232,150, +242,104,197, 70, 48,170, 96, 8,182,226,176,125, 50,217,106,199,139,100,178,201, 19, 91, 81,220,190, 11, 38, 78,117,219,106,240, +191,110, 69,172,115, 23, 84,233,190,223, 87, 76, 89,176, 47,150,137,224,133,107, 53,165,127, 91,233,233, 9, 30,130, 82,228, 56, +138,194,198,108,156, 60,172, 6,164,163,193, 86, 26, 5,219,139, 45,234, 92,113,245,218, 21,140,227,170,101,209,135, 0, 76,151, +151,152,118,154,122, 73, 81, 57,250, 13,251, 42, 17, 33,169,251, 4,149, 16, 88,133,121, 30, 75,193,188,116,223, 44,113,209, 22, +212,162,251, 15,164,113, 64, 12, 9,133, 8,185,102,140, 99,194, 16,148,248, 57, 23,253,254, 48, 49,142,174, 92, 7,210, 26,103, +151,239,227,185,163, 47,161,138,186, 23,132, 77, 23,179,200,116,119,205,166, 83,115,215,171, 35,164, 20, 17,165, 98,218,111, 33, + 92,144, 82, 68,141, 21, 41,104,243, 45, 76,136, 20, 91,190,132, 67,114, 82, 21, 65,240,177, 14, 4,194, 10, 16, 8, 33,169, 66, +219, 70, 43, 25,138,120,213,207, 52,182,139, 84, 88, 61,135, 49, 4, 20, 82,181,167, 11,140,220,180,175, 95,160, 2,193, 96,163, + 13,125,136, 74,158, 33,181,154,103,117,208, 63, 31, 35,114,173, 88,111,142, 32,128, 38,165,217,120,140, 88, 16,170,160, 74, 70, +245,221,191,141,138,210, 48,104,215, 41,140,146, 11,118,243,140,203,105,194,245,219,215,240,173,239,124, 7, 47,189,248, 2, 82, +140, 56, 62, 57,197,213,107, 87,241,254,123,239,225,119,191,254, 45, 74, 0,238,191,254, 58, 40, 37,156,157, 61,197,181,235, 87, +113,243,246, 45,172,143,142,240,241, 7, 31,225,135, 63,248, 33,126,243,187,183,112,255,235,247,241,181,175,124, 5,159,125,246, + 49,222,251,224, 33,118, 83,134,196, 21,106,158,180, 48, 49,208, 66, 68,194,144,214, 22, 98, 95, 16,163, 94,156,117, 46,139,131, +148, 77, 41,219, 89,209, 62,181,212, 42, 91,127, 30, 19, 99,158, 19,134,196, 22,105, 25, 81,161,149,183,106,223,244, 42, 11, 34, + 58,206, 21, 23,209, 72,123, 72,156, 58,214,152,214, 46, 2, 10,190,218,211,113, 24, 5, 79, 60,137,250, 5, 51,177, 17, 64,136, + 30,199,104,227,159, 24,146,205, 27, 11,138,232, 26,129, 16, 64,137, 26,136, 67,161, 48,161,193, 41,220,216,232,211, 2,223,243, +169, 10,185,218,239,193, 45, 56,129,109,167,217,128, 51,118,211, 68, 90, 10,162,200, 44,103,108, 5,137, 9,112,218,155,137, 47, + 10,123, 22,107, 6,181, 64,113,243, 49,123,100,104,104,249,213,225, 64,113,239,172,123,147,185,171,163, 34, 28, 94, 22,203,160, +141,246,191,153,197,222,115,203, 75,177,112, 10,227, 18, 40,199, 89, 90, 81,147,108, 76, 90, 23,179,112,106, 36, 51, 6, 73, 68, + 21,182,130,202, 14,106,234,173, 41, 91,113,157,153,181,240,243,221,170,225, 67, 75, 45,136,118,248,147, 33, 49,153,245,160,240, + 14, 19,118, 9, 56,153,143,184,175,179,154, 16,202, 58,113, 23, 56,149,162,150,191,224, 98, 44,116,172, 44, 89,192, 80, 41,188, + 88,185, 69, 87,112, 53,176, 17, 47, 20,224, 75,191,175,218,229, 98,123, 63,189, 56, 35, 75, 4, 0,213, 3,111,250,191, 23, 13, + 10, 28,238,222,121, 81, 4, 64,122,215, 8,219,241,186,255, 93,187,221,224, 88,255,150,181, 45,237, 81,176, 20, 57,136, 1,150, +180, 49,146, 69, 96, 72, 76, 97,145, 62,200,237, 59,239,165,199, 82, 28,136,198, 78,176, 34,156, 0,174, 5, 8, 81,233,140,162, +228, 76, 49, 81, 44, 98, 88, 76,198,148, 19,224, 64,151, 37,120,135,168,191,159,178,200, 85,239, 81,193,124, 56,105,225,110,135, + 21,146,150, 74,216,162,117,131, 42,253,109,176,209, 92, 44,181, 86, 92,238, 38,236,231,138, 57,231, 30,135,108, 98,221,217,166, + 69,178,208, 91,105, 36,115,194, 56, 36,204, 83,237,225, 59, 33, 96,189, 57,194, 16, 71, 84, 97,108,183, 91, 92, 92, 92, 32,141, + 9,155,163,141, 38,103,154,157, 11, 85,176,221,238, 91,190,250, 16,186,115,128, 28,109,237,233,147, 54, 61,245,162,182, 37, 13, +250,116, 46, 26, 28,138,122, 33,147,108, 90, 57, 40,142,212, 18,219,146, 89, 76, 3,172,127,179, 2, 30,184,118,122, 13,251,221, + 22,101,206, 24,199, 85,179, 55,171, 62,173, 54,199,136, 62,183,246,121, 8,176, 25, 7, 28,111,214, 24, 98,196, 52, 77,216,110, + 47,144, 72,215, 35, 43, 12, 90,124, 48, 25,127, 68,154,123, 73,106, 65, 20, 65,114, 26,148, 62,156,150,132,181, 24, 53,106,190, +147,205,138, 66, 58,236, 32, 22, 2, 16,166, 5, 75,152,186,245,103, 89, 53,123,160, 20, 33,160,148,140,139,253, 5,214,113,133, + 82,171, 86, 80, 70,215,209,120,199,128, 44, 25,168,212, 50,187, 93,145, 56,205,147,165, 58, 49,194,144, 48, 24,195,155,136,144, + 75,197,110,155, 81,184,226,175, 94,126, 25,247, 95,127, 13, 55,175,221, 64, 28, 19,110,220,186,137, 43,167,167,120,251,247,127, +196, 31,126,255, 71, 92,185,122, 13, 39,215,175, 98,158, 39, 76, 23,103,120,254,133,231,113,243,238, 29, 16, 34,126,254, 47, 63, +199, 15,255,249,135, 64, 5,254,238,123,223,195,245,219,215,241,254,159,255,130, 79, 62,253, 4, 69, 70,148, 10,204,251,130, 58, +207,198, 3,215,195, 32, 14,212,119, 51,193,118, 61, 49,128,130, 42, 57,105,209,193, 73, 96,165,119, 50, 12, 42,163,135, 64, 45, + 78,136, 11,216,239, 11, 86,134, 33,156, 11, 99,101, 15, 65, 38,198, 64,118,161, 55,171,138, 6, 33,136, 35, 85, 23,133,149,123, +113,153,184,211,192, 66,176,207,187,179,197,171, 0, 81, 42,184, 64, 21,213,100, 24, 97,104,234,154, 20,106,169,100,202, 49,176, +177,166,117, 96, 42,252,233,135,166,129,156,219, 8, 43, 52, 95, 53,117,194,149,203,139,204,174,149,107, 81,235, 82, 24,122, 33, +194,118, 41, 89, 71, 67,240,125,117,247, 19,183,157,186,127, 65,133, 23, 83,129,176,136,218,108,175,182, 33,112, 27, 15, 29, 61, + 32, 39, 70, 93, 67, 53,145, 24,168, 79, 30,154,216,198, 17,151, 6,106, 33, 62,216,211,123,103,175,217, 70,166, 12, 46, 89, 15, +105,138,109,164,215, 38, 20,250,129,104, 97,228, 19, 46, 31, 41, 91,103,227,177,140, 42,182, 43, 0,180,152,245,223,223,185,221, +195, 56, 64,184, 44,244, 17,177, 91, 8,237,242,246,157, 34, 68, 64, 92,213, 99,110, 97, 43,205,102,104,158,106, 38,209, 11,164, + 54,112,173,234, 36,220, 90,102, 23, 98,192, 50,194,211,249,230, 98, 83, 11,110,130, 68,207,137,208,149, 25, 43, 14,149,141,185, +109,196, 53,207, 83,111, 20, 48,116,145,224, 18,117,206, 86,116, 44, 71,208, 75, 75, 86,247,118, 47,210,219, 92,147, 32,198, 27, +144, 5, 96,135,173,144,140,139,188,120,234,197, 10, 55,192, 14,181,253,114, 85, 37, 85,115, 17,232,132,168,182, 14,118,201, 76, +199, 51,144,147, 92,139,217,147,108,148, 90,253,103,196,182,186, 33,203, 25,136, 33,130, 57, 55,217, 74, 48,234, 31, 91, 49, 12, + 49,190,164,116,226, 94, 12, 65, 79,241,197,232,123,105,253,244,177, 51,115,247,226,251, 89, 37, 30, 2, 68, 93, 56,185,228, 38, +182, 73, 3,235,115, 57,229,138,139,221,140, 57,171,104, 83, 63, 86,101,248, 87, 43, 60, 96, 43, 31, 89,228, 7,140,163, 34, 95, + 39,119, 70,133,128, 97, 53, 98, 92,143, 16, 0,121,206, 56, 59,187, 0,170, 96, 92, 15, 24,236,239,251,107,220,238,103, 76,211, +108,177,180,122,129,199, 72, 77,228,150, 12,128, 22, 99, 52,255,190, 79, 10,228, 64,151,208,214, 10,182, 82, 32,246,156, 19,178, + 46,122,133,213, 64,216, 85,205, 54, 79,105,176,230,137,129,149,189, 55,105,192,233,213, 43,184,188, 60, 71, 72, 9,227,176,194, +211,243, 71,200,251,157,105,131,170, 70, 79, 87, 65, 72,125,253, 38, 44, 24,134, 1, 39, 71, 27, 8,128,221,188,199,249,229, 57, +104, 72,109,234,229,206, 8,169,100,216,221,170,147,137, 42, 32, 6,146, 35,251,136, 4,158, 62, 7,179, 58, 4, 10, 42,161, 71, +209,240,139, 16,237, 33,235,234, 99,223,197,136,232,165, 84, 28, 89,215,134,174,232,108,218,208, 33, 55,194, 1, 50, 87,212, 81, +171, 57,105,136,197, 70,136, 64,140, 9, 37,207,122,114,143, 9,156,117,159, 94, 76, 16, 22, 98,192,230,104, 3,174, 10, 86,169, +181, 98,119,185,197,190, 8,190,249,205,215,240,230,155,223,212,156,221, 52,224,218,157, 27, 0, 37,252,203,143,127,138,207, 63, +123,132,219,207, 61,135,213,184,194,197,197, 57,136, 4, 47,191,242,101,220,125,225, 30, 46, 47, 46,241,253,239,255, 15,252,224, +251, 63,196,189,187,215,241,237,191,249, 54, 34, 5,252,254,173,183,240,249,227, 51,132,241, 8, 83,174,216,237,182,200,121, 66, + 2, 53,145,136, 48,163,150, 10, 30,187,231, 25, 7, 35,175,106, 8, 74, 15, 52, 8, 40, 85, 87, 30,136, 21, 41, 12,166, 52,214, +195,188, 66,253,234, 83, 46,136, 73,121,231,213,247, 94, 33, 34, 45,118,162, 92, 5,113,229,226, 36, 63, 88,251,214,170, 50, 43, +197,141,150, 34,182,165,162,125, 17, 45,105,214, 20,103,124, 59, 26, 85,161, 32,106,177, 32, 46, 8, 52,152, 8, 76, 26, 74,214, + 3, 69,204,240,173, 59, 82,145, 70, 3,115,123,155, 22, 4,108, 29, 17,218, 67,221,172, 97,206,165, 35,105,145,164,122,185,251, + 10,129, 45, 38,210, 82,218, 24,135, 8, 89, 19,218,181,142,185,154,109,202,133,101, 88, 80,162,250, 98,186, 1, 67, 84,197,219, + 11, 32,135, 52,185, 42,170, 93,220,150, 7,221,224, 27,230,111,247,127,183,120,167,107,241,195,149, 25,181,102,112, 41,144, 8, + 36, 12,112,212, 11, 22,187,120,247,119,251,175,231,151,136, 52, 21,181,226,101, 69, 42,184, 22,144,216, 37, 6, 82,150, 11,161, + 3, 62, 22, 62,109,191, 36,109,227, 96,135,113,143,158, 36,210, 53, 78,173, 5,204,165, 77,210,252,114,114, 93, 76,181, 61, 56, + 63, 11, 38,105,222,116,187,228,160,142,139, 54,218, 37, 82,172, 44,115, 3, 25, 53, 39,135,169,120, 91, 7,107,157, 64, 48, 13, + 14, 5,139, 17,165,222,129,250,127,209, 49,171,180, 11,208, 97, 68,135,177,182,214,164, 88, 65,209,117, 27,253,217,241, 98, 16, +129,192, 69,163, 49,101, 17,177,235, 34, 80, 23, 5,118,209,221, 66,169,103,141, 17,200, 68,142,139,226,169,133,219, 44,138,141, + 24,163, 5,101,233,243, 82,165,239,232,189,187,132,116,171,157, 78, 58,131, 50, 32,236,117,248,132,198, 59,252, 98,140, 2, 23, + 16, 75,179,145,213,131,198,204,199,246, 34,135, 66,201, 38,174,180,233,145,227,238,185,195,105, 21, 40,102,226, 76,145,254,123, +239,167,138,237,110,198, 60, 23,179,177,249,153, 36,246,123,201, 65,190,128,190,166,128,113, 72,144, 8,100,203,138, 79, 67,194, +184, 89, 33,164,136,185, 20,156,159, 95,168, 96,108, 8, 88, 29,173, 21,191,219,162,102, 35,246,251, 9,243, 60,155,158,192,154, + 22,155,184, 84,102, 12, 70,219,115,241,163, 88,176,144,167, 39, 46, 39, 58, 45,133, 16,142,232, 61,100,210,143,137,144,203,140, +152, 84,148,235,186, 51, 71, 5,159,158,158, 96, 53,142,120,252,248,115,196,113,176,187, 44,219,186, 84,223,143, 77, 26,145, 2, + 33,130,145,231,217,246,237,130,213, 48,226,120,115, 12, 1,176,221,109,177,221,109, 65,105, 88,224,107,237, 51,169, 86,156, 27, + 86,152,196,149,240, 97,161,202, 93,140,251,130, 24, 61, 78,248, 25,213,169,125, 24,204,166, 48,199,194,162, 98,150, 8,219,213, +145,235, 89,130, 70, 57,218,134,202, 38,169, 58, 2,201,165,106,172,234, 48,192, 27,252, 90,106, 67,150, 22,168, 66, 80,134,136, +202,164,113,171,182,231, 93,175, 6, 80, 21,236,171,126,144,187,237, 14,227,102,141, 55,255,230,155,248,171,175,188,162,135,230, + 56,226,214,237,219, 56,223, 94,224, 95,126,242, 19,148,153,241,220,115,119, 17, 67,192,147, 39,159,227,198,173,155,120,225,165, +123,184,126,253, 26, 62,252,240, 33,254,175,127,252,191,241,203, 95,188,141,215,223,248, 50,190,254,250,125, 92, 62,189,192, 31, +222,254, 19,206,183, 19, 40,141,216,207, 21,251,253,164,135, 85, 52, 68,168, 93, 80,213,216,190, 34, 74, 27, 67, 69,235,140,135, +148, 48,155,191,208,119, 60,213, 30,110,205,213, 37, 37,189, 26,162,151,171,216,158,135,177,155, 51,198, 33,130,107,192,156, 25, +107, 18,196,216,237, 71, 42,160, 10, 45,228, 68,204,243,192,181,244,124,232,202,144,100,135,172, 37,119,201, 98,220,189,136, 1, +131, 68, 21, 75,218,237, 14,146, 96,248, 79, 69,175,194, 51,184,205,178, 70, 38,176, 12, 20, 90, 32, 8, 16, 52, 48,199, 10, 14, +114,237, 82,116,181,250, 66, 40, 83, 25,157,184,172, 23,184, 90, 79, 8, 76,162,104,211,118,216, 24,138, 86,249, 59,168, 82, 21, +174, 99,118, 43, 39,143,117,209,139, 85, 73, 30, 37,106,251,248,166, 48, 95,136,180,156, 82, 39,237,178, 89,180, 37,193,189,201, +181, 89, 86,220,233,177, 84, 29, 7,219,145, 73,229,131, 78,189,218, 8,155,130, 78, 67,164,148,198, 0,240,253,104, 59, 68,253, +144,182, 3,197,199,170, 98,175,133,109, 36, 88,185, 34,207, 5,145, 9, 49, 9, 36, 38, 48,133,158, 80, 45, 11, 79,190,147,187, +170,118,248,186, 38,209, 10,191,178,210, 2,197, 70,227, 92, 43,164, 84,179,185, 85, 8, 23,152, 39, 73,199,173,174,186,150,165, +246, 96,137,216,181,231,223, 95, 63,107, 76,178,139, 26,219,129, 73,134, 75,102,239,228,168,229,184,235, 36,196,194, 94,200,247, +175,132,158, 0,222, 43, 21,223, 1,203,179, 41,109,207,172, 91,188, 56,194, 66,162,229,133,156, 79, 97, 28,232,212,212,208,204, + 8, 84, 45, 99,188,143,200,189, 88,108,153, 11,203, 20, 51, 90, 76,118,252,226, 95,236,175,151, 34, 49,103,197,187, 88,178,216, +244,138, 22,246, 60, 23, 53,250,149, 90,185,106,192, 16, 37, 35, 74, 82, 35, 76, 58,209, 48, 88,123,237, 19, 20,159, 82, 45,157, + 12, 75,148,140, 44, 10, 88, 79,193, 59,184,240,151,202,122, 43,114,155,136,213,249, 15,162, 34,190,237, 46, 99,154,248, 96,244, + 46, 85,192,193, 80,215,130, 69, 60, 49,218, 84, 41, 13, 17,101,206,168, 69, 87, 0, 33, 69, 12,171, 1, 34,192,126,183,195,110, +187,183,105,104,210,208,147, 5, 57, 79,170, 96,158,250,197,152, 82, 68,138, 73,121, 26,134,137, 78, 67,108,205,150,174,233,220, + 74,105, 69, 56,209, 98,202,183,176,192,186, 77,154, 84, 67,228, 78,157, 60,103,164,245,160,244,187, 32,168,147,186,115, 16, 2, +142,143,149,112,119,126,246, 4,247,238,189, 0, 0, 6,202, 41, 45, 59,133,125, 72, 72,179, 21, 35,250, 76, 29,173, 53,245,141, + 33,216,237,119,176, 52,115,125,206,165,219,195, 25,102,189, 92,148, 90,234, 56, 35, 29,171,146, 85,134,109, 91,105, 57,186, 61, + 17,104,145,241,196,254,176,163,117, 93, 78, 92, 82,126,123,128, 68,243,236,154,232,135, 77,209,233,191, 92, 36,189,228,220, 35, + 75, 73, 85,227, 76,234,217,219,239,247, 8, 41,160,100,139,106,116, 24, 3,107,181, 60,166,216,194, 10,106, 46,184,124,250, 20, + 87,111,221,194, 27,223,251, 46, 94,122,254, 69,236,230, 9,235,163, 53,238,220,189,131, 79, 62,250, 4, 63,249,201, 79,113,237, +244, 26,110,126,249, 30, 46,182, 23,216,109,119,184,247,226, 11,120,254, 75,207, 99,189, 57,194, 47,126,241, 75,252,159,255,251, + 63, 66, 42,227, 31,254,254, 59,120,241,229, 23,240,224,147, 15,240,231,119, 62, 70,221, 11,194, 56, 98,151,103, 76,251, 98, 85, + 53,217,238,138, 17,152,145,107,231, 60, 87,102,165, 73, 45,115,181, 83,194, 16, 34, 38,239,136, 88, 26,107, 57, 48, 33,154,250, +189,218,250,130,109,167,203,149,145,103,193, 60, 86,172,198,128, 90, 3, 50, 11, 98,101,136, 77, 77,170, 84, 12, 97,176, 48,174, +170, 49,178,236, 84, 56,221,193, 58,189, 74,191,172,172,187,243,172,227,248,228, 89,233, 46,206, 53, 37,102, 16, 32, 68, 29,173, + 71, 19, 12,233,216,216,246,219, 22, 11, 73,228, 81,146,118, 41,137,219, 28, 14, 35, 71,123, 55,100,221,153,232,184,213,163, 81, +219,161, 12, 27,167,250,195, 74,221, 19,237,251,204, 64, 62, 62,238,177,165,212,236, 59, 29,213,218,120,206,142,201, 12, 80, 61, + 72,197, 23,188,170,210,194, 86, 93,111,103,190,236,133, 93,200, 99, 31, 5, 93,217,190,172,137,136,122,142, 56,219,190,182,129, + 63, 76,164, 72,172,140,239, 72, 1,165,102,132,170,211,141,228, 49,150,210,213,254, 13,207, 99,209,150, 85,204, 10,199,172, 40, + 82, 95, 69,232,242, 86, 39, 32,139,221, 41,241, 66,180,229,221,126,101,112, 46, 16,174, 42,168,227,130, 82,138,234, 85,114, 70, +181,189,121,181,105, 64, 45, 89,249,236,158,139, 93,139,237,227,181, 56, 0,139,101, 83,251,184, 55,244,194,200, 52, 14,213, 82, +191, 28, 36,180, 64,212, 91,102,187, 77,245,220,146, 26, 18,130,116, 23,130,166, 11,194, 24,234,206, 31,239,151, 19,187,151, 24, +135,236,130,127, 47, 31,224, 39,116,102, 80, 0, 0, 32, 0, 73, 68, 65, 84,192,107,189, 24, 35,187,190,197,189,233,202,224, 46, +168, 32, 36,219,149,138,199,229,114,181,192, 30,179,159,121,209,227,197,161, 79,159,170, 78, 85, 14, 84,228, 11,157,132,255,203, +171, 77, 66, 90, 78,128,239,179,195,226,183, 92,172,153,200,167, 26,213,158, 91, 9, 58, 38,246, 11, 19,246,189, 95,128,113,164, + 37, 7, 30,142,223, 29, 6,211,194,113, 14,254,188, 23,250,193,211,144,244,247, 12, 42,148, 35, 94,118,220,140,121, 46,184,216, +237,176,205, 25,115,182,212,187,218, 39,183,122,169, 57,142,181, 83, 31,199, 65,241,168,197, 88,247, 49, 4,196, 33, 33,144,238, +149, 47, 47,183, 40, 89,243, 4,214,171,149,229,172,119,158,193, 52, 79,200, 57,183,140,249, 96, 25, 23,209,119,234,193, 70,215, + 20, 64, 76, 77,168,232,130, 90,242,208,160,229,116,204, 86, 42,108, 41,111, 33, 0, 99, 12, 6,158, 34,236,166, 9, 39,225, 8, + 41, 37,132,148, 48,109, 11,216,240,174,155,147, 19,236, 46,119, 40, 57, 99,189, 62, 69, 46, 21,149, 51, 74,169,205,109, 17,163, + 22, 19,115,102,204, 69,199,107, 21,181,173, 33,106, 21, 92,238,118,234,134,193,176, 72, 26,180,145,187,240,194,121,208,207,185, +228, 93, 74,128, 41, 95,185,119, 56,185, 58,204, 94,175,228,104,163,186,234, 93,131, 1, 40,252, 0,129,232,238, 43, 88, 92, 43, +139, 10, 24, 98, 74, 13, 94,194,172,130,187, 8, 96,206, 25,171,205,136,202,140,146,243, 1,165,104,174, 25,146, 2,144, 2,242, + 92, 90, 71, 53, 36,205,227,142,164, 93,255,148,103, 92, 60,126,130,151, 94,253, 10,222,252,235,111, 35,132,136,179,139, 11,220, +124,238, 54,238,222,187,139, 63,188,245,123,252,226, 23,191,192, 11, 47,188,128,171,215,111,224,225,167,159, 96,189, 90,227,213, + 87, 95,197,115,183,175, 99, 47,192,255,251, 95,126,128,127,252, 63,254, 27, 94,120,233, 6,190,243,183,223,194,102,181,198,219, +127,252, 35, 62,252,203, 39,136,195, 10, 60, 16,166,121,143,188,159, 52,119,156,180,226, 28, 66, 2,163,162, 86,233,151, 25, 52, + 70,143, 89,199,152,222, 24, 68,102, 12, 41, 32,215, 78,123, 34, 91, 82, 85,147,150,214, 92, 91, 36, 40, 27, 15, 93, 64,200,133, +177,203, 51,214,117, 64, 42,130, 41, 40,143, 93, 71,149, 1, 92, 42, 52,211,163, 67, 39,252, 98,107, 99, 62, 1,136, 43,106, 37, + 68, 75,220, 66,203,252,206,118, 80, 68, 32, 37,144,196, 86, 65,163,197,157, 0, 44,165,139,136,210, 8, 80,178, 3,128, 17,136, + 45, 67, 91,144,194,128,160,225,211,173,115,117,127,235,179,255,223,187,230,238, 57, 7,179,101, 87,203,161,200,135,251,238,171, +177,195, 68, 76, 61,111,240, 23, 33,227,112,115,219,125, 30,248,120,177,236,230,184,141,221,217,192, 64,120,166, 8, 96, 43, 34, +221, 53,224, 41, 95, 84, 77, 82, 39,202,174,247,247,200,127,166, 28,172, 2,168,115,100,108,164, 92,230,140, 48,132,118,200,234, +103, 84,141,197, 79, 45,211, 25,240, 61, 48,181,139, 89,105,125,154, 7,224,171,175, 96,130, 85,125,118,212,243, 78,198, 22, 8, + 14,236,177,127,190,214,170, 81,143, 37,219, 42,160,130,184,162,148,172,234,220, 92, 44, 73, 74,179, 11,230,202, 64,205, 16, 35, + 58,114, 45, 8,168,138, 60, 21,106,171, 53, 24,165,237,240, 66, 85, 49,104, 52,239, 0, 72, 93, 31,212, 24,180, 45,139,197, 4, +148,212,210,213, 42,161, 83, 45, 13, 34, 19,236,127,147,176, 96,118, 47, 58,242,103,215, 0, 95,200, 0,176,241,244,179,255,156, +119,215, 29,106,228,103,156,190,158, 12,181,218, 73,135,113,180,231,241, 32,205,203, 11,135,138, 3, 74,163,239,136,123,172,107, +119,140, 44,127,239, 3, 70, 62,250,120,159, 22,228,194,160,182, 21, 80, 20,155, 32, 72, 75, 65, 67, 35,167, 37, 24,145, 25, 77, + 21,107,207,248,146, 68,183, 20,122,178,105, 87, 84,207,208,105,137, 77,184, 72,238,227,161, 14,187,177,140,119, 54,114,214, 52, + 85,108,119,122,161, 23, 22, 20, 16, 10,215,166, 47, 96, 67, 72,171, 37,207,130,125, 82, 64, 26,186,203,138, 40,128,146,198,189, + 18, 8,151, 23, 91,148, 89,129, 94, 41, 5,108,142,143,148, 42, 87,251,121,151,115,214, 60,251, 90,219,115,212, 80,196,128,138, +217,168, 83,248, 24,130,108,172, 9, 6,192,129, 14,151,234,162, 89, 0, 64, 64,244,200, 85, 83,188,166, 97,208, 21, 23, 51, 86, +235, 17, 33, 37,245,234,148,140,146, 9,171,213, 26,167, 71, 39,248,236,209, 67, 84, 0,155,205, 26,101,222, 89,132,108,231, 8, +164, 16, 33,145, 48,237, 51,230,201,227,105,171, 38,137, 82,196, 52,103,156,159,109,181,249, 74,108,119, 75,135,228,168, 77, 57, + 88, 51, 57,163,120,112, 26, 57,101,170,237,188,170,165, 59,105, 69,191, 8,139,178, 39, 36,128, 81,116, 55,110,218, 83, 23, 46, + 85,158, 17,195,216,199, 56, 4,203,173,213,180, 33,191, 32,124,148,159,133,193, 89, 83,223, 56, 18,198,152, 80,102,139, 23,108, +105, 96,210, 14,125,103,193, 11, 23,203,238, 46,216, 77,123,188,246,221,111,225, 27,223,126, 19, 53, 23,100, 20,220,187,125, 7, + 39,167, 87,240,139, 31,253, 12,239,124,240, 46, 94,249,234, 87,112,229,248, 10, 30,124,252, 17,174,221,184,134,151,191,252, 50, +174, 28, 95,193,227,243,115,252,211,247,255, 9, 63,248,254,143,241,218,235, 47,225,245, 55,190,137,221, 52,227, 87,191,250, 45, +158,156,157, 35,174, 70,212,202,216,207, 51,114,222,105, 20, 51,148, 15, 29, 98, 68, 68,210,104, 64,206, 86,237,233,168,170, 66, +144,170,117,132,141,177, 46,198, 47,134,145,229,244, 50, 83,209,121,176,203,157, 33, 69, 15,192,198, 43,150, 10, 98, 96,222, 87, +236, 87, 25,227,160,184,220, 90, 67, 3,171, 8, 5,132,200,109, 84, 23, 99,178,182,217,134,249,226,153,221, 0, 87, 66, 45,177, +145,164, 66,176, 44,117,187, 20,117, 51, 98, 99, 81,183,232, 20, 6,211,220,114,217,131, 7, 92,112, 65,136, 38,174, 17, 55,130, +176,118,127,110,101,106,244,178, 69, 87, 98,241,139,158,117, 93, 77, 25, 27, 14,242,210, 28,111,234, 27, 60, 2, 69,219, 9, 90, + 84,176, 8,186,241, 30,135,116, 43, 63, 0,251,193, 46,205,173,209, 99, 26,235, 34,168,161, 95,230, 68, 94,132,218,133,106, 35, +207,212, 8,122,150, 98, 98,121,243,100, 27, 70,200, 33, 63,187,143, 43,123,130,149,171,251,170, 20, 72, 29,116,220,175,173,104, + 79, 64,131,125, 95,108,149,192, 22,228, 81,107,134,148,172, 99,115, 98,173,254,115, 70,172, 35, 66, 42,136,148,140,105,208,125, +221, 66,220,167, 66,110,167, 42,217,194, 65, 50,184,100,192,246,242,117, 46,200,101, 15,206, 69,247,127, 38,192,129,173,183,242, +156, 53,152,194,226, 65, 91,182,187,241,211,137,250, 45, 45,203, 61,164,253,253,208,236,173,125, 4, 75, 85,154, 80, 49,165,100, +135,191, 9, 42, 23, 35,104,178, 78,156,160,176, 20, 35,187,162,154,112, 16, 78,217, 19,252,255, 94,236,203, 76,247,150, 46,183, +176, 31,246,209,184,244, 93, 59,197,246,122,120, 65,107, 11,162, 44,254,182,222,240,194,171, 86,240, 34,163,251, 32,169,176, 29, +166,125, 26,176,188, 88, 93, 68, 71,238,187,231, 67,124,177,155, 48, 43,116,141, 66, 69, 39, 65, 69,150,197,133,173, 47,200, 86, + 32,173,240, 21, 19,222,165,230,213,111,207,170,131,212,154,127, 94,243, 42,162,135,214,160, 71,218,182,213,131,105, 91, 92, 68, +107, 95, 18,156, 93,236,177,221,103, 76,185,218, 37,165, 3,164, 16,163,117,199, 61,152,168,218,135, 56,164,161,165, 43,194,146, +212, 52,184,138,112,113,113,129, 60,101, 93,255,144, 32,174, 70, 12, 67, 50,157,143,218, 74,107, 41, 40,185,104,214, 56, 91, 99, + 73,131,190, 31, 81, 15,224,113, 88, 31,146,223,216, 39,206, 38, 89,103, 19,168,182, 72,218, 62,117,108,124, 71,115, 92,109, 78, +142,117,204, 47,192,122,189,105, 34,208,178,103,112, 74, 88, 31, 29, 3,129,113,190, 59,195,106, 28,177, 90,109,112,113,246, 24, +185,204,250,177,178, 96,202,123, 12,195, 0,150,128, 41, 23,108,247, 58, 49,163, 32,216,172, 79, 81, 1, 92, 94,158,227,241,231, +159,169,189,119,214,102,208,137,146,221,237, 64, 40, 96,212, 64,168,166,133, 74,108, 20,130,198,211,142, 98, 7, 67,247,236, 57, +232, 67,200, 17,139,164,214, 42,169,208, 43, 92, 49,175,186,127, 15,125,237, 98, 28,228,176, 36,105, 57,169, 42,104,220,225, 46, + 79, 96, 34,236,171, 89,153,172,171,228, 82,205,190,163,223, 1,120,104, 69, 85, 27,194,249,229, 37,110,222,185,137,191,253,246, +183,112,227,206, 45,156, 95, 92, 98,115,180,198,139, 47,126, 5, 82, 50,254,199,255,243, 3, 60, 58,123,140,215,190,249, 6, 2, + 17,158,158,157,225,149,175,188,130, 59,119,239,128, 64,248,232,193,135,248,111,255,245,191,227, 79,111,255, 30,127,255,159,191, +133,231, 95,124, 1, 31, 63,248, 4,239,188,247, 23, 48, 24,235,205, 49,230,185, 96, 63, 93,162,148,140, 24, 34, 10,103, 48,128, + 68, 17, 49,196, 70,255,137, 8,150,122,102, 25,206, 6,231,113, 32, 73,117,149, 9, 17,214,195,128,204,147, 86,226,230, 65, 85, + 31, 56, 48, 75, 65, 52, 24,137, 51,201,217, 86, 14, 44,140,221, 62,227,104,149, 80, 66, 64, 46,140, 58, 48,184, 18,226, 16,204, + 71,171,170, 89,142, 21, 44, 65,127, 47, 27,165,106,215,239,159, 33,155, 88, 38,116, 84,172,137,189,116, 87,108,163, 41,104,247, +199, 92, 77,196,148, 20,174,195, 26,114,162,158, 88,235, 28, 22, 74,244,234, 74,117, 34, 4,161,206,127, 55,151, 69,136, 29, 81, +202, 22, 90, 65, 70,140, 35,177, 75, 41,120,151,207, 7,227,199, 54,201,247,108,231,190,136,182,103, 36,244, 0, 21,102, 83, 80, +119,209, 88,104,151, 46, 26,145,172, 31,226,157,168,168,121, 42,125, 48, 31,220, 62,103,227, 83, 47, 72, 14,160, 36, 7,202,234, + 78,235,107,218,117, 19, 48,166, 64,144, 90, 80,115, 70,178,176, 33,177,130, 17,166, 95, 0,107,193, 87, 89, 3, 32,184, 22,176, +117,201,234, 49,158,155,195, 34,212, 25, 41,141,168, 33, 32,134, 81, 59,194, 5,194,211,187,116, 95, 85,148,154, 85,183, 82, 51, +196,126,118, 41, 25,156, 51,114,221, 67, 50, 35, 23,237,204,165, 48, 10,171,119,220,247,163, 92,139,193, 51, 12, 82,101,154, 5, + 50,149,187,176,134,121,224, 96,143, 75,205,145,161,193, 53,174,177,208,196,193, 24,163, 89, 82, 5,148, 52,215, 30, 30,116,211, + 18,195, 58, 50, 55,132, 94,212,233,122,207,180, 64, 20,190, 48,106, 95,146,224,218,193, 78, 70,143, 35,117,220,144,137, 65,221, +246, 5,207,253,118,109,134,209, 19,169,237,143,185,165,121,185,175,220,185, 9,169,229, 26,117,159,127, 83,226,179, 40,237,176, + 93,236, 11, 59, 27,245,216,210, 94, 32, 46,212,234, 49,180,110, 78, 22,194, 80,161,142,241,101,211,126,192,215, 71,132, 5, 21, +144, 90, 49,237, 84, 62,135,208, 4, 19, 40, 54, 12, 67,101, 84,191, 0,205,138,218,252,212, 30, 48, 42,210,132,191,204,130,237, + 60,227, 98, 59, 97,158,212,151,238,144, 21,231, 40,176,148,150,197,224,255,238, 20, 35, 98, 10, 11,129,116, 47,128,106,214, 32, +147, 46,116, 20,172,215,107,211, 50, 25,250,153,124,119, 95,144,109,132, 29,141,140, 23, 99,196,144,162,174,125, 83,106,211,142, +234, 9,137, 45,134, 89,139,126,198,225,251, 36,206,152, 8,218,112, 68,211,140,109, 54,107,228, 82,145,167, 9,227, 48,128,146, +133, 11,149,138,184,222,224,232,234, 85,148, 90,112,249,244, 2,183,239,220,209,201,243, 60,105, 35, 42,250,251, 78,211, 14, 39, +199, 87,192,149,177,219, 79,152, 38, 45,174,143,214, 9, 71, 71, 27, 48, 11,206,206,207,112,126,118,142,213,122,141, 42,192,148, +171, 77, 52,105,145,241, 14,157,136, 44, 34,145,147,238,117,177,176, 57,105, 54, 57, 72,227, 83,201, 48,149,193,131, 19, 26,113, + 9,173,187,140,182, 28, 83, 28, 98, 69, 74,209, 46, 14,244,238,196, 49,147,150, 86, 69, 33, 98,102,198,118,158,213, 84, 95, 5, + 89, 96,234, 72, 63, 56, 92,144,103,233, 94, 84, 49,213,138,237,110,143,219,119,239,226, 59,223,251, 14,214,227, 26,143, 30, 63, +193,213,235,215,241,226,203,207,227,193, 95, 62,194, 79,126,252, 83,172,143,143,240,250,155,111,162, 50, 16, 36,224,171,175,126, + 21,155,147, 99, 92,156,159,225,227, 15, 63,196,207,126,250,175,184,120,250, 20,127,255, 15,127,135,163,213, 9,222,250,205, 91, +120,240,241,167, 88, 31, 29, 35, 14, 27,228, 92,176,223,239, 81,242,132, 33,106,218,156, 24,199, 60,217,120,151,217, 56,224,232, + 94, 70, 54,219, 74, 72, 85, 47, 59,152, 45,202,163,248, 98, 68, 10, 1,243,194,159,233,190,198,226,151,109,176,139,207,118, 81, +108, 20,178,105, 82,228,226,152,180, 83, 42, 85, 9,110,163,231,133,179, 64, 11,241, 30,240,224,136, 85, 49,124,169,226, 56, 51, +210,160, 39,170, 22,108,177,117,170,234,231,236,112,144,118,105, 45, 58, 98,211,244,216, 69, 22,205, 50,194, 11,242,181,250,141, +137,185,217,104,136, 14,115,150, 27,131,156, 61,184, 2,205, 11, 30, 22,158,242, 62, 46,151, 3,219, 90,112,181, 62, 63, 67,168, + 91,140, 6, 97, 62,216,176, 16,179,181,145,157,141,209, 27,123,125,153, 31,190, 60,224,101, 49,254, 95,224, 98,141, 39,217,105, + 96,212, 47,238,229,104,211,119,119, 98,234, 95, 61, 84,117,109, 81,114,198, 80, 51,106, 77,182,175, 45,224, 98,107, 19,174, 77, + 8, 83,235,172,107,175,172,157, 50,215, 10, 46,179,237,153, 35, 66,141,168, 49,131, 34, 33,210, 96, 23, 98,112,199,125, 23,192, +178,152,230,163,152, 64,174, 64,138, 42,241,115,153, 81,203,140, 82, 38,189,212,171, 42,223, 81, 24, 69,170, 2, 66, 74,109, 73, +103, 66,253,125,110, 86, 44, 80, 23,102, 45, 48,156, 68, 93, 33,206, 96,187,216,169,173, 91, 82, 74, 22,178, 97,153,211, 49, 54, +160, 74, 31,157, 7,123,126,197,198,200,177,107, 34,252,223,177,120,110,104, 81,172, 45, 25, 5,203,188,117, 89,172, 90,184,101, +102,163, 79,128,252,192,119,148,174, 55, 46,222,185, 22,209,209,171, 77,129, 98,208, 29,124, 11,146, 97, 58,200,168,175,139,125, +237,129,135,223,225, 13,100, 93, 33,117, 39,133, 79, 87, 60, 32,199,115, 20,132,236,179,172, 11,148,173, 56, 91,194,236,153,132, +230, 71,119,228,115, 79, 81,139,157,206,215,244, 39, 90,108,136,137, 33,253,103,247, 88,213,158,203,208,127, 55,216,154, 81,112, +185,157, 85,245,158,171, 62,199,237,187, 29, 26,163,161, 77,207,236,210, 76,163,101,155,147, 11, 33,209, 96, 79,243, 62,107,193, +100, 69,248, 48, 68,172,199,149,193,197, 52,103,130,171,198, 79,151,202,106, 27, 52,183, 68,136,201, 8,142,214, 84,198,208,178, + 36,220,170,233,201,151, 30, 55,236, 98,222, 30, 7,219,223,155,104, 24,229, 52, 12, 24, 82,196, 60, 11,230,221, 78,215, 93, 5, +200, 53, 99,174, 25, 55,143, 79,176, 89,173,177,191,188,196,126,119,137,245,122,173,223, 89, 19,160,238,246,123,181,236, 22,195, + 38, 23,193,126, 55,129,115,134,144, 96,117,124,213,114, 55, 4,151,151,187,214, 8,151,170,147,115,137,132,234,150,212,150, 31, + 34,141,202, 72, 32, 36,207,103, 37,219,201,133, 20, 65, 49, 53,166,125,242,232,187, 16,123,149, 90,179, 94, 88,162,233, 77, 74, + 94, 58,140,102,116,224,134, 84,119,219,246,106,175, 2, 45,128, 98, 95, 25,163,125,241, 74, 72, 90,117, 20,221,243,129, 11,168, + 84, 68, 83,201, 78,147, 2,252,191,249,173,111,225,229, 87,191,134,105,127,137,207,159, 60,193,205, 91,183,112,237,230, 77,252, +242,103,191,198,175,127,245, 43,124,249,197, 87,112,227,185,155,224, 64,184,126,253, 42,238,220,185,141,185, 8, 62,250,224, 1, + 62,249,232, 99,252,250, 87,191, 1, 64,248, 15,127,251, 55,216,110,247,248,205,175,127,139, 71, 15, 31, 97,115,229, 20, 68, 1, +251, 73,243,167, 75, 41, 10,206, 97, 15, 4, 81,130, 15, 91, 92,101,176, 7,189,239,101,245,205, 46,208,248, 89,161,174, 44,119, + 98, 83,133, 96,136,177,241,200, 17,186,197,136,133,192, 81,143,226, 24, 52, 66,149,205,148,196, 85, 69, 40,211,196, 88,143,140, + 42, 64, 46, 9, 20, 24, 97,237,193, 8, 21,196, 10,244,168, 22,185, 26, 61, 89, 77,250, 40,222,194,166,245,159,197, 96, 5, 65, +135,173,196,152,140, 50,214, 57,219, 62, 22,141, 22, 81,233, 17,138,137, 72,145,171,208, 10, 89, 47,205, 78, 55, 67, 3,182, 4, + 43,240,212,155, 31,162,166,140,193, 18, 2,123,160,201, 51, 97, 28,149, 1,100, 11, 52, 89,248,139, 97, 15,168,215,215,236,194, +172,158,174, 85, 93,220,121,224, 85,246,248, 87,149,109,146,237,205,201, 10, 35,183,120,181,244,172,216,165, 84,203,176, 16,113, +219,219, 51, 93, 97, 12,125, 71,234, 65, 34,109,125, 37,198,159, 30, 54,136,171, 35,204, 23, 79, 80,242, 30, 20, 34, 50,235,159, + 9, 49,234,136,174, 86,237,224, 43, 91, 55,157,145,115, 6,138, 50, 24,234, 60,169, 31, 23, 2, 10, 17,113, 88,235,148, 39, 6, +237, 74,104,112,216,174, 77,103,208, 58, 20, 24, 36,165,150,220, 10, 5, 31,239,115, 45,138,245,204,213, 85, 80,173,144,111, 73, +112, 6, 84, 41,190,191, 76,212,223, 19, 67,148,182,189, 52, 45,158, 35, 43,140,171,104, 49, 26,131, 78,147, 66,140,136,163,226, +168, 75, 41, 24,135, 1,227,122,236, 35, 84,187,200,106, 53,193,164,232, 42,142,188,160,230,106, 54,159,120, 16,242, 3,170,118, + 38,135,131, 80,150,150,209, 78,221, 41, 33, 22, 58, 3, 91, 3, 85, 94,152,183, 4, 45,228, 70, 89, 10,116,112, 41,123, 92,175, + 61,149, 13, 76,115, 56,161,232,227,119,197, 1,179, 21,149,210, 16,169, 97,161,190, 6,122,131,227,185,233, 32,139, 81, 94, 88, +227,150,211, 33,181, 38, 42,244,105,145,148,180,200, 94,192, 51, 65, 44,135,110,115, 10,125, 95,219, 24, 5, 65,237,130, 14, 70, +241, 78, 58, 8, 58, 86,182, 22,228,185,224,236, 98,194,118,158, 49, 23,177, 81, 56,183,180,188,106, 93,186,152,136,182,218,244, +143,156,189,111,227,109, 69,198, 2, 57,103, 21,143, 53,171, 43, 99,181, 58,194, 24, 35,118, 69,159,189, 33, 13,106,189, 44,106, + 37,246,177,190,127,174,254,220,141,126, 17, 79,185, 33,116, 61,175, 64,216,195,146,208,168,141, 62, 73,246,191, 69, 16, 5,177, + 37,125, 78, 83, 74,184,188,216,107, 90,155,169,240, 11, 51, 46, 37,227,249,213, 26,235,180,198,231,103, 31, 65,132, 48,174,142, + 80,171,106, 81,106, 45, 38,230, 99, 93,175, 66, 47,235, 50,101, 20,154, 81, 10,227,244,232, 42,198, 24, 80,230,138,179,203, 45, + 36,168, 32,144, 91,113,168,153, 20,238, 44,107, 25, 3, 66,205, 6,156, 60, 64,195,177,160,128,168, 34,215,246,115, 33, 36,253, + 2,166,100, 95,136,210,198,182,122,217, 39, 83,184, 75,171,192,225,157,172, 8, 40,233,114, 63,196,164, 95, 70,219, 33, 83,112, +208,140,250,176,105, 8, 38, 36, 1,138, 3,113,170, 38,211,138,117, 13,119,158,127, 1,183, 94,122, 30,171,205, 10, 79, 31, 62, +196, 56,174,240,210,151, 95, 65, 92, 39,252,235,143,126,134, 15, 63,248, 11,190,246,218,125, 28, 31,159, 98,220,172,113,227,230, +117,220,188,121, 19,143, 31,125,142,143, 63,254, 12,159, 61,122,136,119,223,123, 7,155, 43, 27,124,249,185, 23,241,233, 7,143, +240,254,159,223,198,118, 59,225,248,202, 53, 84, 82, 11, 65,174, 5, 9, 1, 3, 17,102, 6,178, 17,216,162,161, 52, 53,245,204, + 84,190,161, 90, 40, 65,135, 97,212, 82, 80, 13,116, 32,139, 17,156,143,174, 98,138, 8,181, 52, 11,131, 64, 43, 79, 4,173,190, + 99, 12, 6,224, 80,193,152, 24,108,164, 50, 99, 55,205, 88,175, 35,134, 4, 76,161, 32, 14,250,224, 6, 97,131, 99, 84, 13,128, +168, 21, 28, 66,139,196,172,108,136, 68,219,179,115, 37, 21,128,164,103,124,216,206,212, 94,120,119, 21, 25,201, 86, 25,219,151, + 49,116,181,191, 78, 44,156,185,205, 45,108,132, 22, 93, 19, 91,209,208,216,245,162, 2, 75,103, 24,104, 49,208, 71,154,109,191, + 73,138, 9,165, 64, 7,249,231,135, 2,186, 30, 92, 18,162, 9,183,152, 16,216, 72,115, 11,197,240, 33,236,198, 46,220, 72,109, +130,224, 2, 66,255, 98, 7, 75, 32, 19,246, 21,135, 52,133, 57,168,186,242,173,205, 45,157, 43, 47, 54,169,128,116,181,191, 90, +143, 8, 33, 38, 12,235, 21, 30, 63, 58, 67,216,174, 17,106, 4, 86, 5, 41,142, 96,202, 10,123,178, 14,165,214,172,148,176,121, + 70,173, 51,192, 5,211, 60,163,238, 39,245,186,219, 52, 35,198, 29, 98, 36,196,113,196, 48,172,244, 2,118,213,188, 79, 72,170, + 93,198,134,230,204,101, 70,157, 38,148,156,173,131,207,237,243,236, 58, 11,173,206, 61,224,162,100,183,197, 73, 75,235, 19,223, + 69,138,119, 91, 38, 88, 36, 90,128,136, 24,136,100,251, 71,183,166,217,254,115, 84,235,145,242, 23,200, 18, 23, 53, 50, 19, 66, + 77,220,180, 12,114, 9, 44,232,226,109, 27,199, 51, 14, 57,229,194, 29, 85, 99,103,147, 82,235,106,179,105,130,124, 68, 29,192, +149, 90, 56, 18, 14,132,149, 11, 53,180,141,109,131, 61,223,234,191, 14,170,195, 16,110,251,109, 89,140,198, 5,212,210,233,218, +118,128, 23, 99,119, 54, 96,151, 61, 67, 36,157, 76, 24, 40, 44, 4,196,102, 99, 98, 67,201, 46, 44,111,213,247,238, 33, 54,244, +236, 65,164,176, 79,217, 40, 52, 81, 40, 57, 14, 25,174,150, 39, 91,163, 4, 91, 9, 85,112, 85, 64, 85, 11,147, 55,124,108,251, +110,219,244,100,191,207,184,216,238, 49,207,122,225, 22, 86,162, 97, 3,194, 26,128,201,167,182, 44,130, 24,147, 93,194,221,225, + 1, 97,219,145,103,237,236, 61,208, 37, 70,164,205, 26, 57, 0, 50, 91,135, 10, 19,110, 26, 31,164,159, 9,250,217, 68,155, 12, +197, 97, 84,113, 48,102,157, 46, 87, 89,100,207, 75, 11,244, 17,255, 61,154, 77,215,108,126, 54,181, 36, 0,171,205, 6, 20, 19, +230,124,137, 52, 36, 12,163,226,208,107,158, 65, 66,184,114,114, 21,165,206,216,238,118, 24,215, 35, 86, 70,146, 19,209,233,151, + 58, 75, 50,144, 2, 10, 9,234,180, 67,101,193, 64, 35, 66, 96,156,158, 94, 1, 34,176,219,205,120,252,228, 49,210,144, 32,201, + 52, 76,208,169, 6,147, 59, 68, 84,223,229,150,198, 38, 10,108,163, 16,247,178, 22,125, 64,146, 0, 17, 35,106, 48,248, 65, 76, +122,185,126,193, 36,178, 80, 92, 55,111,175,237, 6,171, 65, 55, 22, 98, 23, 87,202, 6,139,196,131,117, 79,181,234, 8,161, 64, +169, 85, 82,245,225, 42,121,198,201,102,133,219, 95,121, 5, 55,111,222,196,147,179,167,120,240,224, 67,220,185,241, 28,238,190, +252, 37, 92, 62,126,130,127,249,254,143, 80,171,224,165,175,125, 13,155,245,136, 43,215,175,224,185,231,239,130,136,240,238,187, +239,226,179,135,143, 49, 77, 91,124,244,224, 1, 78,142,175,224,202,213,171,248,211,187,239,225,179,135,143,148, 14,116, 50,224, +114,159, 49,229, 12, 46,186, 14, 24, 34,161,148, 46,104, 73, 4, 80, 76,168,182, 51,215,185, 44, 31, 84,214,203,202, 92,121,210, +116,240,126,113, 27,141, 41,147,152, 57,183,164,179, 2, 81, 11, 15,227,128, 49,221,113,165,218, 25,238,231,130,237, 92,176, 94, +173, 80, 43,154,205,136, 49, 32, 46, 60,179,176, 75,133,176,164,162, 85,245,147, 47,212,241, 46,107,141, 65, 45,108,126, 82, 30, +168,112, 77, 57,235,118,171,224,169, 78,118,153,213, 90,129,216, 71,213, 8,130,128,212,161, 52,210,179,193, 53,147,154, 90, 32, +141, 4, 45, 68, 92,228,131,166,164,230, 3, 58,156, 77,187, 13, 24,130, 62, 6, 53,193, 19, 25, 64,137,117, 33,216, 14, 80,157, + 48, 80, 15,117, 33, 90,172, 19,208,126,182,180, 32, 34, 19,151,145,251,249, 35, 32, 21, 18,120,225,147,118, 34,116,106, 16, 13, +255,153,181, 17,252, 96,151,123,109,124,108,106, 10,219,136,213,233, 41, 4, 1,187,203,115, 16, 2, 2, 18, 48,112,239,106, 44, + 82,152,185, 90,165, 63,131,231,108, 21,127,197,148,247,168, 69, 5, 68, 42,254,219,183,226, 59,173,214, 88,173,214, 10, 80,109, +171, 3,123, 63, 89,201,109, 82, 43,114,157, 81,231,185,249,214, 75,241, 93,185,135,225, 4, 32, 36, 4, 4,229,117, 27, 91, 65, +172,211, 38, 16,106, 0,170,179, 25,192,166, 57,162, 70, 35, 43,214,153, 17, 41,226, 52, 26, 70, 86,195, 40, 34,194, 16,221,232, +170,182,186, 24, 17,211,168, 81,201, 76, 29, 81,122, 48, 45,137,205,130,212,186,229, 86, 60, 30, 94,170, 90,224, 45, 49,193,104, +249,221, 93,212,216, 49,181,125,205,114,216, 89,131,186, 24, 83, 37, 31,138, 20,173,165,168, 69, 55, 4, 77, 83,124,118,212, 15, + 91, 49,121, 23,233,212, 72,135,134, 52,223, 4,154,179,228,176,112,133,229, 5,112,139,203,149,182, 71,231, 3,114, 94, 79,240, +242,149, 83,104,231,243, 82, 9,142,254,181, 55,129,167,137, 56,237,125, 8,212,169,132,174, 31, 8,182,170, 35,113,119,130, 94, +252, 62,166,191,220,237,177,155, 74,179,103,233,217,196,230,229, 95,190, 31,208, 72, 89, 44,162,155, 93,179, 5,160,212,162,240, + 25, 4,197,111,217, 26, 98, 24, 19,210,152,236,251,192,118, 68,216, 10,162, 20, 43,114, 66, 43,106, 34,117,142,125, 26,146, 58, +178, 16, 26,162,219,159, 41, 57,240, 80, 44, 26, 25, 31,191,163, 54, 60,112,144,128,113, 84, 21, 89,201, 5,227,106,196, 48,174, + 80, 45,174, 58, 33,226,232,228, 20,121,154,177,155,119, 88,175,214, 24, 82, 66,206,123, 0,162,187,255, 82,144,231,220, 28, 45, + 58,154,215,162,114,179, 89,225,228,228, 84,133,116,187, 29,114,174, 10,183,137,161,217,155,153,196,220, 49,189,128,237,137,151, +122,254, 37, 10,207,122, 59,185, 1, 17, 42, 50,104,136, 96,137,134,164, 52,242, 19,168, 39,252,144,134, 37, 52, 17, 6, 45, 70, + 80,118,248, 38, 19, 26,136,197, 76,122,220, 97,130,118,191, 51, 50,180,208,138, 46,176,215,220,234,129,112,231,206, 11,184,117, +231, 22, 88, 24,127,121,240, 17,106,174,120,225,249,151,112,251,206,109,252,229,157,247,240,135,223,255, 14,155,147, 19, 92,187, +121, 11, 49, 69,220,120,238, 54,238,221,123, 14, 79, 31,159,225,157, 63,190,139,203,237,165,237, 39,182,184,126,227, 42,246,151, + 5, 63,251,209, 47, 49,205,151,184,121,227, 22, 16, 34,246,151, 59,108,119, 91, 84,102,140, 16, 11,171, 39, 20, 18,112, 0, 70, +178,189,177,173, 21,230, 58,183,170, 86, 72, 59,247, 32,253,203,230,225, 45, 68,220, 17,138, 11,166, 37,155,216,193, 63,144,106, + 21,173, 3, 9, 14,184,215,172,221,115,176,112,149,156, 11,166,125,198,180, 30, 49, 88,254,114,182,252,117, 10, 85,213,236,177, + 23,105, 1,140, 96,137, 78,168,140, 0, 6, 69,238, 89,230,210, 59,113,229, 27,119,235, 24,232,153, 35,198, 3,100, 64,138, 19, + 37, 23,204,113, 35,207,181, 11, 13,213, 68,114,100,202, 90,106,129, 53, 96, 77, 51,163,102,127, 82,213,106, 76, 22,168,210, 80, +174,157, 83, 29,150,201,105,188,240,112, 83, 19,204, 31,192, 44,220,190,226,158,104, 22,229, 54,135,228,163, 83, 58,200,163,238, + 11,181,208,197, 86,206, 54, 15, 48, 42,213,194, 91,188,252,111,212, 53, 41,178, 16, 57, 53,178,157, 31, 20, 6,224, 0, 10,210, +234, 8, 39, 87,174,227,241, 39, 31,106,193,147, 19,234, 48, 33,166,164,233, 81,165, 66, 68, 43,251,106, 81,173,243, 52,169, 64, + 39, 23,228,170, 22, 30,170, 21,194, 74,100,244, 4,170, 52, 77,200,163, 38, 19, 82, 74,240, 64,186,101,225,206, 98, 22,156,105, + 6,115,213, 85, 79,173, 38,130,178,231,145, 18,168, 22,204,101, 97, 8, 20,219, 19, 88,193,199,140, 22,236, 33,164, 59, 89,130, +142, 11,117,186,164,107,132, 33, 18, 34, 6,200, 72, 8,182, 51, 76, 33, 42, 88,202, 98,157, 5,140, 33,173,144,210,208,246,170, +126,236, 7,231,228,187,181,138,208, 87, 60, 8,234, 34, 49,117,178, 35, 86,251,132,153, 26,107,163, 9,230, 14, 98,119,121, 81, +152,123, 49,135,198, 34, 0, 69,117, 43,176,244, 53,130,116,152, 12,140, 72,230, 5, 69,117,103,135,197,144, 74,224, 3,125,128, +123,210,149, 6,167, 59,105, 95,225, 45,247,185,173,121,111,191, 99,104,221,246,129,128,206,212,220,213,231,197,238, 46, 88,136, +226, 14, 83,234,168,217,145,237, 79,193, 99,227, 72,146, 21,130, 54, 97, 50, 29,148,123,189,157, 95, 87,196,160, 80,196,200,165, +224,236, 98,135,221, 92, 49, 89,212,106,101,143, 84,213,187,160,143,188,245,251,156,146,242,211, 37,244,130,172,150, 10,201,230, +227,134, 58, 12,128,170, 2,185,205, 90,155,188, 89, 97, 43,129,130, 62,199, 85,192,153, 15,186,116, 44,116, 48, 49, 70, 12,131, +198,133,235,179, 95,251,180,205,109,189,180, 8, 85, 33,210,130,245, 32, 63,190,139, 9,211, 16, 21, 25, 92, 11, 54, 71, 27,144, +169,239,115,158,177, 26,181,152,190,184,124,138, 58, 79,184,114,235, 10,134, 97,192,110,183,211,134, 85, 4,147,129,120, 98, 28, + 0, 9,200, 60,183,215,179, 62,222, 96,179, 94, 65,152,240,228,252, 41,170,148, 78,171, 51,187, 56,215,126,238, 53,168,146, 61, + 71,108,103,105,114,177, 10,185, 26,219, 95,128, 89, 56, 10,164, 85, 57,176,208, 7,207,136, 38, 35,242, 68,234, 66,161, 96, 35, +174, 96,149,220,210, 27, 28,130,238, 65, 83, 12,154, 46, 3, 66,102,133, 93,192, 15, 76,102, 4, 41, 56,190,118,138,187,215,174, +227,228,248, 20,143,159, 60,198,167,159,127,142,211,147, 99,220,123,254, 69,164, 20,240,251,223,252, 14, 15, 31,126,130, 91,207, +221,193,234,232, 8,235,163, 99, 60,255,226, 93,156,158, 94,197,123,127,122, 31,127,248,183,183, 48,172,142, 48,174, 3,118,251, + 61, 82,140,120,248,241, 67,252,225, 15,239,160,214,138,211, 43,167,168, 34,216,239,247,216,237,182, 10,195,167, 69,202, 17,235, + 3,146,162,134,109, 80, 8,150,102,103,227,107,144, 81,155, 22, 34,148,202, 13, 58, 81,165, 26,193, 44, 44, 6,121,178,168, 6, + 73,163, 99,161,176, 29,177, 48,129,118,180, 84,105,158,102,230,210, 34, 77,107,101, 76, 83,193, 52,101,172, 99, 64,169, 81,171, +101,174, 96,142, 42, 12, 99,181,133,176,180, 65,153,190, 6,239,118, 32,202, 4,151,128, 72, 5,137,135,142,137,173,104, 7, 16, +183,160,138, 37,137,171,127,225, 15,249,255,232,164, 53,223,247, 45, 67, 33,108,124,174, 13,118,213,236, 99, 44, 98, 45,163,114, +228,149, 23,223,128,242, 7,150, 32,219,238,182, 17,189,152, 40, 75, 69,148,220, 35,127, 67,119, 34,183, 0, 16,135,126,176,167, +146,117, 69, 50,123, 50, 19,185, 13,208, 20,190,190,171,149,104,133, 43, 31, 76, 14,104, 81, 21,245,110, 49, 52,203,214,146,220, +229,151, 64, 52, 18, 84,140, 1,215,175,223,197,167, 15,222,197,229,197, 99,172,214,107,240,156, 53,207, 58,160, 1, 42,106,173, +200,165,162,228, 25, 37,235, 62,125,218,103,221,103,107,130,134,253, 30,154, 71,174,211,173,162,227,250, 33, 35,173, 87, 72, 49, + 88,122,156, 52,116,109,169,186, 79, 47,165, 52,170, 28, 22,155, 9,102, 65,174,185,233, 72,180,248,172, 29,235,215,232,146, 42, +124,117, 18, 91, 35,113,241, 34,243,187,193, 86, 2, 40,169,115, 36,165,164,133,126,213,213, 22,151,172, 16,155, 52, 24,178,211, +124,204,212, 51, 12, 90,126, 58, 5,171,193,156,186,104,130, 82,207, 68, 55,171,148,174, 15, 67,235,106, 61,120, 37,132, 8,225, + 98, 26,160,208,255,153, 5, 37,184, 33,108,201, 82,197, 26, 20, 72, 47,101,152,236,145, 66,128,112,105,118,180,229,168,219,243, +184, 9,157, 46, 87,159, 1,191,148,131,212, 66, 28,236,203,253, 61, 13, 33,124, 33,253,239, 89,160, 14,183,128, 24,215,140, 72, + 3,200,248,250, 98,105,233, 11, 33,180,241,118, 27,139,247, 32, 84,125,159, 90,234,147,235, 97, 44, 21,175,150,182,170, 98, 17, + 92,236, 39,108,183,123,236,247, 51,114, 86, 54,135,107, 18,200, 38,114,174, 47,105,153,243, 49, 26,100,203, 10, 15,155,212, 72, + 99,120, 88, 19,200,192, 56, 36, 12,227, 96,142, 13,105,175, 77,117, 33,181,143,222, 45, 35,192, 87,124,148,200, 68,152, 73,247, +207,182, 90, 98,111,158,128, 5,129,179, 51,238,151,107, 72,167,173, 42, 18,153,145,134, 81,163,128,165,224,120,125,212, 86, 37, +243,156,241,220,221,231, 17, 82,194,118,187, 5, 40, 96,189, 62, 2, 48,160,148,138,148, 6, 92,238,247,170,137, 32, 49,223,188, +106,118,226, 64,255, 31, 95,111, 30,117,107, 86,149,247, 62,171,121,155,189,247,215,157,166,234,208, 22, 32,189,160,130, 10, 10, +210, 27, 41,108,144,144,136,193, 6, 52,168,177,185, 70, 99, 98, 12,247,218, 16, 53, 68,140, 13,234,189,106,140, 87, 4,177,215, + 32, 10,230,194,141, 32,222, 82, 1, 27, 16,132, 18, 4, 10,170, 63,253,249,250,189,223,247, 93,107,205,252, 49,231, 92,107,237, +239, 28, 46, 99,156,193,168, 26,167,206,217,223,222,239, 94,107, 54,207,243,123,128, 22,216,217, 57, 13,223,118, 88,133,136,253, +195,125,105,202, 92, 73,240, 83,251, 40,104, 13, 55, 12,249,252,147, 8, 35,189,149,145,142,149,131,198, 26,142,241, 84, 15,101, +146,246, 51,171,239,212,146, 36, 36, 57, 35, 42,119, 67, 6,222,153,146,230,101, 84, 41,169,226, 39, 39,193, 38, 38, 83,183,162, + 1,166, 20, 49,197, 4,159, 8,173, 55,232, 23, 27,216, 56,179,131,157,237, 45,132,113,137,139, 23, 47, 98,181, 26,112,106,231, + 20, 54,119,182,113,245,218, 21,156,191,231, 94, 32, 2,103, 31,240, 0,116,243, 30,139,173, 77,156,189,249, 38, 56,235,240,145, + 15,221,142, 79,126,226,110,108,237,108,161,109, 27, 44,143, 15, 1, 2,238,190,243, 30,220,121,215,221,112,206,163,237, 58, 16, + 1, 71,199, 43, 76, 97,132, 1,161,245,124, 33, 70,121, 16,157,229,216,217, 33, 6, 86,215, 58,158, 34, 40,233, 41,149,121,173, +248,102,133,101,110,144,179,197,179,170, 59,167,145, 81,181,127,230, 42,114,138, 1, 33, 73,206,180,181, 34,234,145, 56, 80, 81, +162,103, 91,140,116,151, 83, 8, 88,173, 70,204, 91,135, 16, 12,198,113, 66,223,122, 89,212, 9,214,147,228, 11,108,213,218,229, +100,124,158, 68,253,193,165,137, 85,188,164,252,107, 50, 18, 36,146,187,213,106, 61, 99,178,142,182, 10,129, 64, 30,237, 25,185, + 56,144, 43,116, 62,212,141,228,113,155, 92, 16,136, 37, 6, 42,130, 41, 33, 66,234,147,101,207,166, 47,153,233, 90,144, 16,178, + 82, 86,225,246,234,178, 32, 83, 81,198,170, 98, 64,167, 35,107,187,248, 90, 25,157, 59, 56,202, 98,161,164,129, 68, 86,131, 29, +196, 25, 98,213,150, 73,107,170,121, 5,138,104, 7,196,239, 77, 92,223,227, 59,145, 97,201,133,209,111,157,194,246,153,155,113, +233,222, 79, 2,105, 19,209, 77,156,209,233,121,138,146, 2,176, 90,141, 24, 70, 22,176,197, 24, 16, 40, 98, 28,163, 4,101, 72, + 34,158, 48, 16, 90,137, 30,142, 54,229, 12,246, 38, 77,104,125, 35, 35, 60,165,151,137,187, 36,196,236, 50, 33,177,165, 17,241, +120, 52, 74,231,103, 44,119, 38, 38, 99, 52,149, 51,206,147, 11, 30,181,166,252,188,231,169, 56, 81, 21, 14,149, 50, 78,217, 69, +209,224,168, 87, 88,176,207,227,241, 18,221,124, 14,231, 91,161,195, 69, 88,227,101,116, 95, 7,213,168, 95,172,250, 12,180,232, + 94, 11,154, 98,252,167,174, 8, 83,170,186,250,138,184,167,177,172, 44,238,148,228,172,234,192, 76, 18,177,171, 86,199,156,243, +110,229,178, 76, 41, 7,160,232,119,194,171,230,200, 25, 20, 38,170,194, 93, 72,162, 62, 85,207,225,116, 47, 39,168, 90, 97, 88, +164,148,149,230, 86,194,131, 40,208, 90,225, 90, 95,232, 60, 4,181, 21, 88,233, 6,138,255,138,245,174,186, 17,157, 70,164,138, + 73, 34,221, 85,182,157,234,121,136, 53, 17, 32,107,124, 66, 76, 56, 60, 90, 97, 57, 6,102,189, 11, 96,134,253,212,174, 76, 26, + 80, 94,143, 66,101,116,117,194,218,170,136, 56,133,210, 29, 39,130,186, 91,189,111,114,200, 77,134, 74, 69,101, 7,164,181, 28, + 1, 35, 9,135, 86, 46,120,223, 48, 85, 14, 33,101,139, 33,172,201, 5, 5,161,110,118, 76,245, 74,139,170, 34, 91,126,157,131, +107, 60,140,115, 88, 29, 14,216, 56,181,193,175,125,136, 72, 4,116,253, 12, 99, 28,177, 26, 71, 24,235,209,117,115, 76,227,128, + 36,142,142, 52, 44,225,173, 65,242,220,241, 91,111, 97,131,131,107, 44,186,206, 99,123,107, 19,214, 25, 28, 29,143,216,219,189, +186, 70,217,140, 40,159,115, 38, 31,202,106,148, 36,165, 77,207,102, 95, 60,229,149, 95, 81,190, 52,124,129,187,124,120, 70, 81, +194,195, 54,114,193, 37,206,126, 38,192,154,148,201, 94, 80, 97,136, 84,248,148,225, 11,134, 89,228, 6,152,136, 47,203,144, 18, + 2, 89,108,205, 90,220,180,181,129,185,109, 16,195,132,189,171,187,216, 61,175, 37, 53, 32, 0, 0, 32, 0, 73, 68, 65, 84,216, +135,137, 6, 27,243, 13,116,243, 30, 87, 47, 95,194,213,251, 47,160, 53, 6,179, 7,220,140,197,214, 6, 78,239,236, 96,235,212, + 41, 28, 44,143,240,143,183,127, 20,231,239,191, 15,231,206,221,140,190,235,176, 92, 45,113,229,242, 21,124,242,227,159,196,106, + 25,176,177,152,139,106, 60, 97, 90,141, 32, 50,232, 59, 15,227, 12,134,113,204, 48, 11,111,192, 17,166,134, 74,138,147, 8,176, + 52,216, 66,109,102,202, 1, 54, 34,102,168, 41, 83, 12,130,145,206, 77, 62, 12,189,160,157, 49, 44, 24,204,240, 19,181, 85,240, +175,148,191,172,188, 91, 42,150, 20,126,136,135, 33,226,120, 53,161,239, 57,189,109, 12, 1,109,240,240, 38,130,156,250,211,197, +139,235,164,107, 23, 64,140, 38,122,233, 72, 95,169,105, 92,161, 42,253,202,179,125, 70,125,180, 25, 32,152, 74,114,152, 41,135, + 8,219,132,144,201,116,122,216,240,112,207,179,162,150, 2,200,164,130,159, 84,110,184,181,197,246, 86,139, 10,171,144, 5,202, + 7, 55,139, 53,229,200, 17,207,166,140,211,100, 50,148,164,107,242, 78, 84, 6, 26,117,169, 86, 42,212, 30,103,147, 47,100, 77, +117, 35,201,235,182,206,230,149,137,174, 36, 77, 29,122, 44,221,139,130,132,180,104,201,171, 22,249,103, 37,211,169, 23, 80,211, +230, 76,215,226,204, 77, 15,199,222,181,203, 8,171, 37, 2, 13,128,111, 96,251, 30,198, 26, 4, 9,198,152, 38,238,204, 67,140, + 56, 88,174,176, 60, 94, 97, 26,121,156,207, 22,224,114,169,247, 77,135,190,111,224, 61, 23,145, 33, 37,206, 96,110, 44,219,114, + 36,114,210, 70, 98, 21,189,114,224, 5,170, 19,229,210,231,156,105, 3, 39,153,233,250, 62, 71, 0,211, 16,176, 26, 3, 86, 67, +192,106,226,131, 93,167, 72, 49,134,188,115,159,181, 30,243,190, 67,219,200, 8, 56, 70,132,196, 7,191, 21, 87,140, 5, 33,140, + 3,239, 77,187, 25,188,239,242, 84,204, 86,186, 7, 77,188, 77, 36,209,241,196, 42,244,100,168, 32,139, 76, 57,158,145,131,142, +226, 90,146, 24,151,115, 83, 78,104, 75, 18,102,147, 20,194,101, 66,246,105,131, 36,121,114, 77, 23, 35, 19,137, 20,185,216, 73, + 5,125, 28, 99, 16,122,153,231,117,130, 60, 79, 9,149,101,204,196,252, 29,178,206, 73,148,176,196,239, 86,157,163, 65, 29,150, + 85,186,123, 21,234,213,222,123,170,196,130,133,143,160,133,232,122,244,108, 9, 84, 42, 20,208,204, 33,169,237,136, 38,231, 15, +162, 17,188,178,174, 30,146, 49,160, 16,216,115, 29, 35, 14,143, 6, 28,173, 34,166,137,173,101, 49, 22,112, 83, 82, 74, 16, 27, + 93,101, 69,196,152,213, 68,101, 42, 24,166, 32,103, 84,177, 20, 90, 36,120,103,185, 75, 79, 5,233, 10, 33,251,165, 72, 8, 33, +173,133, 56,105,241,226,189,250,212, 27, 88,199, 99,251, 16, 70,192,248, 44,212,203,121, 10,217,243, 45, 54, 87,107, 5,159, 44, +211, 27, 73,203,115, 77,207,192,152, 41, 97,117, 60, 98,243,108,195,231, 37, 17,156,111,209,247,115, 12,203,145,239, 62,103, 49, + 91,244, 24,167, 37, 12, 69, 41,192,217,201,101,188,129,245, 77, 21, 30, 99, 49,155,245,152,207,103,176, 0,142, 15,143,113,176, + 60,100, 85, 65,226, 53, 88,204,250,166, 19,212, 68, 20,171,184, 14, 68, 61,193,192, 70, 25,169,185, 74, 60, 36,209,135,222,187, +138, 60,196, 48,112,170,220,143, 60, 50,230,212,176,236,175, 76,197, 77, 65,164,162, 5, 42,217,212, 85,196,223,188,109,113,118, +163,195, 86,219,161, 5,176,187,183,135,227,163, 35, 12,199, 43, 88, 56, 52,109,139, 64, 1,123,247,159,199,242,224, 16,109,223, +163,217,152,225,236,153, 51, 56,115,243, 89,120,111,112,254,252,121,220,121,199,157, 56, 58, 62,198,131, 31,248, 64,116,179, 22, + 87,174, 92,197,189,119,222,135,187, 62,117, 15,194, 56, 97,177,177, 1, 50, 14, 49, 5, 6,107,196,132, 89,207,127,239,209, 56, +201, 72,134, 47,219, 70, 38, 22, 9,128,245, 46,219, 77,172, 1, 38,245,228, 70,161,226, 16, 9, 93,138,149,167, 41, 78,249, 0, + 34,226,223,150,170, 47,161,213,170, 74,104, 76, 36,171,230, 36,113,148,190,117,153,168, 71,153,252, 84,196,115, 60,254, 34, 70, +199,142,132,213,152,208,119,196, 95,168, 38,160,245, 77,225, 71, 19,114,174,178, 90, 99, 18, 24,243,107, 33,105, 88,114,249, 91, + 83, 0, 48,201,122,120, 33, 80, 65, 99, 23,115, 80, 10, 95, 96,140,145, 52, 21,102,178,164,103, 49, 35,158, 11, 4,163, 22, 99, +147,178, 85, 11, 68, 48,142, 83,255, 40,135, 78,164, 12,222, 33,201, 9, 48,180, 30,192, 97, 43, 50, 93, 81, 5, 23, 1,147, 19, + 43, 93,146,231, 53,214,216,208,170, 66,143,160, 98, 95,203, 93,153, 65,241,138, 88,144, 51, 72, 16,229,175, 41,241,164,124,177, +215,208, 89,254, 25, 12,153, 53,193,214,186, 96, 42,229,137, 0,135,224, 80,134,149,206, 79,159,194,205, 15,122, 4,206,223,241, + 17,132, 97, 5,163, 41, 90,190,101,116,164,140, 12,167, 41,224,202,181, 3,220,127,109, 31,118, 42, 74, 93,111,141,192, 76, 56, +108,194,153, 17,253,172,197,230,172,193,172,111,225, 28,201,251,200,207,181, 33,158,208,164, 24,185, 35, 39, 73,206,130,201,222, +120, 29,199,102,210,153, 88, 24, 57,147, 97,196,193,209,128,227, 49, 96, 53,240,148, 45,196,136, 16, 18, 98,160,108, 37,243,214, +161,105, 45,182, 22, 1,155,179, 22,125,239, 65, 6,104, 99,194,184, 90,129, 34,179, 17, 28, 37,132,229, 18,221,230, 38,124,223, + 51,120, 70,248,166,117,160, 73,129,253, 0, 78,222,235,104, 10, 70, 85, 69,153,154, 16,104,132,229,158, 32,137, 93, 21, 47, 62, +196, 36,151, 29,171,250, 99, 82, 11, 20,229, 24, 91,146, 11,198, 18,114, 74, 29, 36, 86, 56, 85,196, 64, 83, 71,253, 74, 97,170, +133, 77,190,156,101,157, 22, 41, 22,154,158,136,105,213,223,158, 39,122,178, 95, 55, 21,110,151,170, 73,132, 66,119, 82,162, 19, +252, 4, 83,237,206, 83, 85, 84,150, 70, 75, 69,203,214, 49, 23,163,124,111, 81,196,205, 80, 66,159,203,157, 52,119,171,190, 96, +106, 29, 64, 83, 66, 8,132,229,225,132,131, 35,158, 38, 77, 49,137, 51,168,186,172, 67, 42,129, 35,196,161, 42,206,185,204, 47, +247,222, 75,179, 83, 5,149, 68,222,181,123,112,198,186,241, 60,101,212, 2,140,136, 65, 48, 12,160, 73,140,120,149, 16, 32, 67, +236,255,230, 93,122, 35, 99,110, 69,222, 58,149,118,115, 49, 22, 75, 17,147, 68,132,171,107,184, 80,225,121, 89,224,200,132,189, +166,235, 16, 98, 64,180, 9,173, 16, 71, 99,140,104,219, 25,250,217, 28, 71, 71,135,136,211,136,126, 99, 3,179,174,195,225,193, + 17, 23,120,214,194,131, 56,181, 88,167,178, 25, 46, 76,216,156,111, 96,163,157,129, 12,112,124,188, 47,250, 27,229, 97, 80, 78, +217,203, 43, 3, 1,107,173, 9,180,229,249,243,236,157,229, 50, 44, 74,133,170, 52, 42,107, 40,175,134, 10, 64,163, 48, 53, 21, + 21,235,172,227,177,101,133,217,139,105, 2,169, 61,194, 36, 57, 96, 29,172,229, 11,161,237,122,244,141,195,188,117, 24,143, 6, + 28,238,237, 99, 76, 1,113,156, 16,134,128, 4,131,174,105,144, 92,196,241,222, 1, 86,171, 21,250,197, 28,243,205, 77,236,156, + 59,135,179,103, 78,227,224,240, 16,187, 87,175,224,226,249, 11, 32, 10,120,240,131,110,134,107, 29,238,188,227, 62,124,228,246, +143,224, 96,111, 15,141,107,176, 88,116, 72,198, 96,156, 70, 68, 57, 96, 91,239, 49,107, 26, 89, 1, 4,238, 94, 44,131, 92,172, + 66, 39, 68,200, 23, 21,121,155,119,137, 50,110,211, 0, 14,121,232,189,141,136,162,252,189,110,245, 85, 91, 93,170,157, 22, 37, + 22, 18, 6,233,244,242,232, 23,154,236, 68,185,138,172,199,130, 33, 38,172,134, 1,199, 75,131, 69,231, 17, 91, 18,129, 74,226, +241, 75, 34, 68,177,193, 89,147, 16,172, 65, 71, 6, 54, 8,253,200, 17,195,133, 20, 9, 12,159,133, 54,214, 70, 97, 10, 83,166, +198,233,136, 91,175,213, 36,249,239, 42,126,169,107,199, 28,121,105,121,173,224,136, 56,245,139, 40,239, 59,121,121, 41,145,146, + 38,192,105, 55,168, 86, 31, 16, 18, 2, 11, 68, 36,131,253,186, 80,149,220,193,184, 92,244, 16,153,235,220, 8,218,229, 40,156, + 35, 73,226, 18,100,164,156,147, 12,172, 90,122,138,243,128, 52, 85,195, 22,182, 63,145,203, 83, 10, 85,213, 83,214, 12,208,154, +247, 87, 63,107,205,232, 78, 38,229,228, 57, 3, 11,219,181,216,190,249, 22,140,203,125,236,222,123, 55, 59, 48,220, 4,138, 22, + 49,112,198, 64,138,132,213,114,196,249, 11, 7, 56, 88, 13,128, 66,137, 34, 59, 22, 92, 99,248, 18,237,121, 93,113,176, 12, 56, +234, 18,118,182,182,208,247, 14,169,245,232, 26,199,212,112, 81, 13,135,192,170, 97, 50, 22, 49,129,129, 52,114,176, 58,219,200, +197,170, 1, 75, 1, 49, 38, 28, 47, 71, 92,219, 63,194,193, 48, 97,156,128, 24, 13,199,240,138,165, 51, 38, 13,226,113, 24, 40, +160,133, 3,204, 74, 50, 1, 26,244,125,131,193, 19, 64, 19,226,232,248,251, 77, 19,108,219,160,155,245,176,178, 79, 79,149, 54, +131,133,190,162,190,231, 23, 7,152, 36, 94,248,146,101, 94,123,181, 53,142, 52, 74,120, 82, 74,148, 63, 75, 99, 10, 78,153, 85, +226,190,178,253,149,194,153,177,150,204, 27, 79, 96, 4,167,250,200,189,216,251, 56,197, 46,173, 3,111,228, 25, 99,151,135,149, + 92,115, 41,164,212,155,173, 10,118, 93,215,153, 40,234,230, 26, 43,140,235, 68,151,181,211,198, 90, 46, 78,140,115,112, 39, 44, +158, 26, 59,171, 23,119, 86,222, 87,180,189,162, 4, 45, 96, 41, 50,200, 66, 56, 99, 20,247,231,214,138, 84, 53,254, 68,153, 86, + 28, 28, 28, 99,185, 28, 49,140,145,159, 35,177,127,250,166, 40,254, 83, 18,157,149,118,233, 34, 14,230,143,179,138,176,173,244, + 4,214, 18, 26, 88, 73, 90, 51,160, 32,159,119, 36, 24, 47,220,133, 41,149, 60,116, 57, 35,180, 0,178,170,219,112, 14, 38, 19, +251, 52, 23, 29,136, 6,156, 70,169,104,158, 58, 65,215,112,115, 83,118,234, 86,222,215, 6, 93,215, 96, 28,150, 8,227,132,198, + 55, 48, 6, 8, 33, 96, 54,219, 16,133,251, 10,209, 69,244,109,143,148, 60,134, 21,255,190,195,105,133, 49, 69, 25,255,107,145, +162, 41,137, 9,253,124, 14,215,121,196, 97,196,242,248, 8,118, 54,227, 48,165, 24,197, 5,104, 10, 88, 75, 9,145,196,254,121, +202, 96, 47, 89,111, 36, 98,113,141, 83,255,162, 45,121,185, 20,181, 67,143,121, 84, 97, 72,121,207, 90,141,169, 66,213,100,248, + 68, 25,151, 49,173,142,227, 22, 61, 26,103,209, 53, 14,190,235,208,180, 30, 49, 14,216,223,221,199,209,238, 62, 26,195, 8, 82, + 29,195, 52, 93,131, 48,142, 88, 30, 28,131,136,176,216,222,194,246,206, 14, 78,223,124, 22, 77, 55,199,197,251, 47,226,218,213, + 75,128, 1, 22, 27,115,204,186, 25,104,140,248,192,251, 62,132,143,252,227, 71, 65, 83,194,172,155,243, 97,110, 13,134,200, 86, + 2,239, 29, 90,231,208,200,107, 95, 6, 30,109,122,107, 89,145, 41, 16, 6,229,235, 6, 57,248, 53,222,145, 49,166, 30,132,144, +125, 80, 81, 56,197,140,115, 11, 44, 94, 2, 95,170,206, 74,213,175,149, 86, 82, 21, 41, 7, 48,104,197,157,145,170,150, 81,130, + 70, 14,162,100, 52,155, 89,162, 56,101,234, 17, 83,192, 56, 18,150,171, 9,203,213,132,190, 3,186,104,217, 34,225, 27, 36,203, +100,171,224, 4,107, 75, 12,167,209,174,203, 70, 7,216, 38, 11, 94, 20,237,202, 26,155,130,180, 76,242,217, 59, 88,217, 17,154, +220,129, 20,126,118,161,196, 89,203,209,185, 16,157, 5,178,151, 87,118,229, 32,161, 98,149, 24, 88, 67,142,255, 94, 56,238,232, + 53,111, 93, 45, 76, 57,243,221,149,170, 53,241, 72,200, 10,158, 84,217,212, 41, 71,106, 38,102,161, 91,137, 81, 52, 5, 75, 91, +135,132,104,229,171,161,114, 57, 39,155,202,132, 4, 57, 77, 54, 75,158,120,175, 47,163, 42,170, 82,203, 77, 77,150, 35, 84,123, +255,162, 28,182, 38,229,239,153,131, 71,191,216,192,206,185, 91,144, 34,176,119,249, 2,166, 20, 17,194,138,117, 26,146,102,119, +188, 26,225,189,129,179, 1, 33, 26,244,179,185,188,143, 38,235, 37, 66, 8, 18,191, 10, 28,197,132,213,181, 37,230,189,197,206, +188,197, 98,238, 49,107, 27,206,172, 38, 32,194, 98, 32,136,216, 53,201,202,130,173,171, 70,232,110,218, 17,134,105,194,209,114, +194,229,253, 99, 28,175, 38, 41, 2,116,109, 36, 9,142,214,202,119,138,187,166,113, 69, 56, 58, 26, 97,168, 67,211, 36, 12, 41, +192, 39,139, 16,128,198, 0,209, 4,172,210, 4,223, 26,108, 46,182, 97,155, 62,123,129,141,168,221,145, 63,155,178,202, 49,245, +200, 84,197, 81,178, 30,137,146, 9, 96, 43,103,131, 2,143,136,176,118,249,234, 51,171, 98,200,140,101,133, 6,142, 36,142, 77, +150, 34,159,100, 92,171,174,149, 24, 13,140,147,212, 11, 21, 16,162,222,163, 35,163,146, 85, 68,167, 29,154, 78,230,108,165,120, + 87, 32,158, 18, 24,181, 24,177, 25,115, 87,209,146,117,133, 39,159, 59,213,129, 50, 66,128,227,201, 81,201,112, 47, 25, 30,194, +191, 52,117,212,106, 9,186, 73, 2, 17,226, 61,186, 43,170,252, 74,201,199,170,126,182,243,237, 31, 45,113,180,154, 48,133,136, +148, 12, 38, 73,113, 52,112,133,121, 33,227, 97, 47,159,147,177,224,172,122,163,239, 33,101,138, 35, 79,181, 60, 44, 17, 92,235, +225,218, 6,218, 84, 71,217,169,123,114, 8, 9, 24, 83, 18, 68,112,132,215, 62,155,248,188,244,157,103,250,155, 76, 32, 41, 17, + 98,144,207, 71, 44,186,170,227, 1, 1, 86,244, 79, 78, 66,132,234,148, 89, 43,164, 61, 99, 35, 79,112,201, 32, 36,192,119, 13, + 12, 18,166,105,196,246,169, 30, 97,100,103, 10, 70,160,109, 91, 16, 18, 14,151, 71,120,192,153, 83,216,223, 93,130,198, 81, 38, + 38, 13,175, 14, 76,192, 56, 78,192,148, 48,107,123, 88, 99,112, 60, 12, 24,227, 18,189,183,152,178,155, 65,116, 58, 85,236,177, +218, 5,131, 36, 84, 18, 82, 78, 5,245,106,255, 81,244,166, 81, 30,182,236,131, 53,231,151, 18, 85,128,123, 86,199, 91,181,182, +201, 14,216, 42,165, 71, 61,152,196, 98, 9,223,116,232,218, 22,125,235,209, 72,133,185,191,187,143,176, 58,134, 9, 1,222, 57, +241,194,178,125,161,237, 90,132, 48, 98, 26, 7, 56, 0,179,173, 45,108,223,116, 22, 59,103,207, 96, 58, 94,225,227, 31,251, 24, +142,175,238, 97,177, 53,199,124, 49, 71,219,182,184,114,254, 18,110,255,224, 71,112,199,221,159,132, 49, 9,109,223,243, 23, 78, +128, 25,108, 99,225,117,156, 38,246,112, 24, 11, 95,224,222, 54,153, 12,196,106,106,155,119,177, 69, 16, 37, 30,205,138,198, 68, +114, 89, 38, 39,162, 46,107, 65, 33,101, 63,106,210,253,123, 5,163,208, 81, 32,199,166, 86, 95,238,236,139,229, 47, 72,177, 74, + 21,142,180,119, 18,254,146,216,198, 54,142, 30,199,195,132,249,216, 96, 24, 35,250, 38,162, 77, 65,190,162,145,131, 10, 92, 98, +223,120,138, 72, 82,113,166, 24, 17,228,226,231,145,165,238,124, 69,136,129, 40,227,115,147,237, 61, 32,151, 59, 35, 61,140, 20, +150,163,226, 49,245,147, 23, 40,135,128,103, 68,225,106,179, 15, 94,133, 91, 9,200,239, 21,239,100,141,138, 48,141,140, 15,245, +168,165, 40,194, 45, 61,200, 76,201,164, 54, 69, 97, 78, 18,194, 64,182, 16,172, 76, 69,127, 43,164,188, 18, 20, 82,179,219,243, + 1, 76, 54,195, 71,140,232, 8,106, 61,128,177, 21,239, 19,235, 29, 21, 42,218, 87,189,123, 49, 42, 28, 37,205,170,119,112, 13, + 48,223, 62, 35,195, 11,135,195,131,171,152, 86, 3, 86, 3,143,234,147, 97, 52,240,102,231, 48,235, 55,208,180,155,104,187, 5, + 91, 35,157,131,115, 45, 0, 96, 53, 14, 8, 81,196,145,196, 97, 47,199,203, 37,166,229, 10,171,209, 97,123, 17, 48,159,245,240, +158,177,180,214, 53,210,233,104,193,198,162, 36,235,171,192,136, 16,176, 26, 39,236, 31,174,176, 26,162,136,202,128,198,201,103, +100, 93,142,167, 53, 70, 70,253,134,208,185, 14,109,171, 95,163,132, 32,221, 90,140, 0, 57,135,136, 8,235, 91, 44, 54,182,209, +118, 51,222, 89, 58,151, 11, 88, 45, 26,217,194, 83,171,237, 21,110, 84, 33,132,173, 92,238,201, 22, 52, 48,225, 4,135,128,170, +168,209, 19,108,120, 67,249, 59,165,255,236, 68,245, 29, 41,101,208,141,129,226, 76,139, 56, 51, 67, 12,163,252, 55, 50,247,161, + 74,220, 90,111,229,109, 70,200,198, 74,232,166, 69, 76,149,232,166, 58, 21, 20,239, 58, 23,217,148, 81,182, 6,128, 55, 76,169, + 36,136, 29, 84,166,168, 58,102,215,227, 43,145,160, 78,243,235,144,221,120, 6,225,200,101,166,187,249, 74,116,135, 74,168,104, + 12,177,237, 76, 86, 49,199,203, 17,171,145, 47,249, 36, 23,164,243,182,206,207, 19,117, 54, 11,177,189,103,126, 61, 37,230,145, +152,106, 85, 89, 91, 69,141,177,240, 93, 3,231, 29,194, 20, 69,164,168, 48, 24,177,182, 81,201, 39,201,233,116, 0,140,179,240, +173,103, 49, 90,133,135,166,192,193,228,121, 90, 42,232,222,210,132,150,115, 65,133,178,200,124, 13,230,115,120,223, 32,132, 9, +134,128,166,233, 56, 88, 7, 60,189, 25,194, 74, 68,113, 22,125,219, 97, 26, 71,118, 89, 24,139,105, 28, 1,138, 48,214,243,212, +201, 16, 8,188, 10,110, 26,139, 89,219, 1, 22, 88,142,199, 24, 35, 79, 46, 35,231, 45, 50,109, 20,197,133, 81, 59,142, 88,171, + 21, 69,156,206, 25, 8,222,194,150, 17,170,225, 15, 94, 31,108,239, 88, 80,159, 18,143,249,214, 35, 48,217, 54,101,136,173, 46, + 73,204,249,220,245, 49, 74, 50, 2,232, 26,143,190,235, 96,189, 19, 59,206,136,105,201,138,192, 6,252,119, 36,112,146,143,107, +152, 32, 53,173, 6, 76, 99,128,183, 14, 27,103,206,224,204,185,179,240,237, 12, 87, 46, 92,194,149, 11, 23,177,187,183,139, 83, + 59,167,177,181,181,141,166,111,113,255,253,247,225,175,255,226, 61,216,189,182,135,182,105, 56, 14, 16,124,176, 33, 26, 9, 89, +144, 17,170,192, 44,162,124,217,188,133,140,154, 37, 75,222, 11,250,150,104, 13, 1,106,114,164, 33,242,104, 94, 5,112, 44, 34, + 72, 26, 80,143, 73,137, 78, 74, 16,203,116, 43,100, 72, 79, 74,108,111, 49,182,152,221, 72,186, 91, 85,207, 27, 61,184,156, 43, + 32, 26, 42,158,219, 24, 18,134, 49, 96,185, 10, 24, 70,194, 48, 0,171,102, 66,219,138,186,146, 28, 76, 76, 8,102,226,208, 10, +195, 32, 21, 36, 22,144,133, 20,120,167,149,211,127, 44, 43,134,181, 98,182, 14,107,161,146, 73,166, 24, 70, 61,174,133, 80,197, + 35, 70, 5, 95,184,181, 92,115,126,248,180,229,181, 82,108,241, 62,149, 17,141, 38,131, 70,138, 93,195, 22, 50,152, 30, 56, 10, +149, 17,209,161,149,192, 11, 85, 11,243,223,195, 2, 43, 99, 29,103, 24,136,144, 40,143, 59,173, 34,111, 3, 11,192, 76, 65,156, +154, 26,106, 79, 74,217,163, 92, 20,160, 14, 73,209, 93,170,106,233,112, 34,110,213, 92,255,207, 74, 32, 75, 84,129, 76,164, 59, +109,186, 25, 22, 91,167,121,250,208, 56, 76,199, 71,232,142, 7,172,198, 37, 26,111,224, 45,176,189, 88, 0,222,193,251, 5, 34, + 57, 46, 8, 27,207, 46, 1,199, 93,219, 48, 38, 76, 49, 98, 12, 35,251,217, 23,115, 92,187,188,139,203,215, 14, 17, 67, 68, 72, + 6,179, 89, 66,107,124,230, 46,112,168,138,131, 51, 9,222, 21, 95,114,140,220,193, 31, 45,249,207,242,214,160,109, 92,246,241, + 26,227,115,250,159,242,181,249,124,136, 72,113,196, 6, 89, 78,220,114, 22,243,206,163,119,178,218, 34,222, 71,110,109,159,194, +108,182,128,171,213,249,121,148,232, 10, 84, 40,179,198,203,232,252, 36, 43, 0, 84,118,162,202, 21,135,169, 48,194,168,124,189, + 39, 86, 51, 44,138, 43,221,189, 50,174, 37,170, 72, 36, 94, 82,140, 39, 70,253, 82, 21,196, 98,192,246, 41,100,149,121,186, 46, + 14, 86,199,226,121,194,107, 93,214, 75, 32,155,138,113,131,181,145, 43, 5,171, 60,103,150, 89,181,249,123,226,173, 69,168,214, + 14, 36,159, 41, 25, 35, 43,145, 2,106, 98,119, 7,119,210, 86, 68, 94,168,138, 92,214,191,200, 52, 49, 35,191,107, 78, 1,159, + 21,136, 9,187, 7, 75, 28, 30, 13,152, 34, 33, 38,195,221, 35,108,201,140, 16, 69, 65,164,144,119,211,186,158,211,233,157, 19, +101,191,194,186,116,106,226,156,201, 1, 63,117,100,112,227, 25, 69, 29,194, 40, 35,104,158,214, 41, 75,130, 18, 91, 25,217,202, +102,243,234, 50,198,200, 5,154, 41,161,186,217,106,105,145,137,126, 28, 25,142,220,196,218, 12, 75,115,240,146,115, 62,197, 1, + 83, 92,161,107,123, 76, 41,194,187, 78, 16,199, 35,200, 24,116,190,197,172,159,227,224, 96, 95,187, 10, 4, 17,247,150,188, 20, +153, 44, 38,194,188,155,161,235,122,164, 16,113,188, 60,226,115, 86,197,105, 82,189, 81, 92, 95,113, 22,109, 69, 42, 96, 47, 41, + 46,125,137,155,212,203,197,230, 31,198, 75, 38,179,165,117, 49, 74, 78, 20, 74,124, 33,235,240,145, 85,225,146,172, 4, 7,103, +120,215, 57, 12, 3,134, 21,241, 65, 58, 69, 56, 34,180,134, 32, 32, 75,102,206,183, 13,136, 2,166, 97,194, 52, 69,204,186, 57, +182,206,236, 96,123,103, 27,211, 52,226,158,187, 62,137,227,107,251,176,214, 97,123,103, 11, 59,167, 78, 1,148,112,247, 93,119, +226,142,143,126, 12,203,213, 49,186, 89,143, 73,230,130, 36,113,160, 86,138, 19,239, 27, 80, 12, 88, 77, 35, 98, 0,154,182,225, +116, 51, 65, 6, 70, 34, 6,127,104,151,169,165,112,133,202, 84, 75,151, 85,196, 98, 14, 67, 48, 37, 39,217,122,192,132, 28,166, +146, 91, 87, 61,170, 44,191, 63, 33,166, 28, 38,161, 23,122,231,188,168,104, 99,181, 3, 42,135, 81,118,192, 26, 17,117, 17,177, +189,109,156,112,176, 28,208, 53, 64,211, 38,116,193,161,137, 13,156, 75,162,184,228, 47,141,181, 46,175, 79,172,193,137, 75, 7, +217,186,167,171,134,242, 8,153, 76, 87,210,104, 67, 77, 8,178,213,196,194,164,147,135,174,228,255,146, 68,100,122,207, 54, 37, +105, 15,162, 8,160,152, 15,111,171, 17,163,149,131, 94,173, 43, 65,214,102,182,216,146, 44, 95, 30,121,207,132, 36,162, 32, 21, +115,202,170,160, 26, 93, 26, 83,108, 69,197,250,131, 53, 81, 86, 9, 2,225,159,201,137, 80,178,238,142,214,112,153,180,246, 86, + 93,151,223, 93, 3,105,178, 45, 80,167, 48,138,184,149,137, 68,219,207,144,232, 12, 96, 45,166,238, 0,227,108,137,217,176, 98, +143,250, 56, 65,222, 74, 4,242, 8,147,252, 64,142,139, 80,235, 45, 18, 12, 66,116, 24, 67,192, 52,178,120,105, 12, 1,243,102, +142,187,238,254, 20, 46, 31, 68, 88,187, 2,165, 9,169, 93,192,136,177,133,125,208,134, 59,126,135, 60,110, 54, 0,142, 87, 17, +203, 8,204,103,179, 12,249,113,226,255, 86,151, 67, 12,200,147, 26,166,121,121, 56, 52, 48,148,208,120, 66,215, 26, 52,222, 51, +216,200, 17, 90,223, 96, 62,159,163,155, 47, 96,125,203,123, 79,203, 33, 52,137, 18, 11, 30, 85, 27, 81, 32,215,213,103, 38, 83, + 35, 21, 38,194,201, 51, 36,164, 58,157,168,201, 7,150, 81,181, 41,173,227,133,233, 68,202,222,154, 40, 47,137,248,146,139, 28, +165, 42,106,119, 84,231, 9, 32,243, 57,202, 69,160, 29,247,141,254, 87,139,154,204, 73,133,191,177,107, 65, 66, 56, 97,197,100, +218,102, 2,156, 69,161,228,178, 11,135, 4,218,226,164, 3,134, 78, 52,136, 50, 32, 42,239,244,137, 49,163,208, 21,159,130,237, +173, 94,100, 54,251,252,181, 33, 65, 34, 70, 4, 38,224, 40, 4, 92, 61, 88,226, 96,152, 16, 67, 66, 10, 69, 32,151, 50, 19, 67, + 38,165,137,224, 69, 95,165,235,184, 72, 58,234, 70, 94, 75, 82,118,139, 56, 52, 45,107,108,198, 20, 81, 69,239, 0,134, 67,142, +248, 92,136,185, 16, 81, 34,157,181, 6,109,219,160,109,219, 28, 52,164, 1, 48,201, 10, 90, 85,246,238, 36, 69, 21, 23,169,242, +126, 57,157,216, 84,118, 93,203,228,203,166,109,185, 57, 29, 3,218,174, 65,223,181, 88, 13, 75,158,124, 38, 72,192,146, 5, 57, +139,166,235,112,124,229, 18, 23,219,198, 96,152, 6,192,122, 68, 50,121, 58, 75,196,154,148,217, 98, 11,214, 54,152,166,137, 61, +238,153,199,161,128, 47,130,177, 9, 38,150,172, 21,202,250,164,178,190,229, 68, 79, 25,191, 43, 33,208,106,149, 38,245,160, 46, +224,131, 88, 53,140,117,108,113, 54,124,128, 68, 50,194,128,150,184, 59,171, 32,124, 22,133, 36, 99, 49,142, 17,222, 17,171,122, + 41,193, 18, 11,180,180,219,241,198,195,120,126,200,195, 56,192, 24,131,157, 51,167,177,181,179, 13,215, 55,184,122,109, 23,187, + 23, 46, 97, 53, 44, 49,235,123,244,109, 7, 55,159,225,252,249,251,113,225,194, 37,158, 22, 88, 15,231, 91, 12, 33,178,182, 88, +244, 75, 22,156,170,227,196, 63, 63, 38,131, 64,128,153, 18,102,189, 69,219, 88,196,105, 66, 26,121, 47, 97, 29,171,218,163, 22, + 58, 21,180,209,100,207,166,201, 7,121,253,229,214, 75, 93,169, 94,217,106, 66, 92,189, 38,177,140, 88, 17, 31,165, 58,200, 27, +235, 22, 46,237,230,108,100,228,166,203,195, 19,190, 16, 72,186,229, 0,245,249, 79, 88, 46, 71, 44,123,143,126,178,152, 36,138, + 48, 37,246,104, 90,237, 70, 60,214,162, 41, 33,236,118, 62,200, 53,200, 33, 32, 4, 14,246, 17, 20,247, 9,134,180, 92,118,198, +101, 1, 71,238, 4,170,116, 44,165, 40,235,232,158, 84,113,234,184,251,138,201,100,118,174,194, 39, 72,245, 11,142,187,236, 84, +185,203, 57,212,194,115,202, 95,228,145,150, 45,203, 80, 22,175, 81, 61,226, 44,220,128, 60,146,180, 42,128, 51, 18, 22, 66, 37, +112, 4,235,246, 27, 77,253,226, 11, 89,187, 72,101,185, 99,173, 82, 32,221,153, 86, 66,171,181, 3, 61,199,188, 98, 13,204, 3, + 13, 38, 33,137,122,133,129,235, 90,204,204, 14, 26,223,192,119, 75, 52,227,132, 56, 13, 8,211,200,160, 13, 74, 8,196, 5,117, + 54, 74, 89,207,130, 55,147, 48, 69,135, 54, 38, 16, 45, 48,173, 38,172,134, 99, 28, 25,139,115,231,110,194,133,123,239,197,209, +146, 47, 6,227, 38,180,240,108,197,212, 46,219,121, 24,203,233, 87, 20, 34,198, 41, 97, 8, 3, 54,102, 51,244,222,228,137,146, +118,213, 10,194, 96, 58, 23,229,168, 91,190,192,185,248,109, 27, 66,227, 93,214, 79,120,239,209,182, 61,218,174,131,245, 94,194, + 90, 56, 42,147, 47,198, 98, 73,203,137, 94,116,242, 25,100,237, 73,141,117,213,202,152,108, 66, 82,224,138, 73, 21,105,176, 22, +153,149, 46, 39, 95,200, 81, 28, 24,206,100,212, 42, 40, 34,148, 16,175,220,201,145, 5, 40,136, 22, 65, 20,236,170, 50, 47, 23, +218,141,226, 95,233,211, 22, 23,186, 18, 42,187,255, 84,136,138,245,207, 47, 97, 48,174,202, 86, 72,137,178,159, 63, 83,213,100, +156,223, 52,130, 24, 21,100, 52, 18,115, 53,140, 68, 42,107, 2,162, 86,191,188, 11,183,217, 30,198, 23,127,153, 96, 81,226,221, +238,193,193, 18,123,135, 43,196, 41, 22,248,141,124, 79, 67,140,197,215, 94,253,172,108, 91,167, 42, 55, 93,147,202,162, 52,134, +252,253,116,150,155,174, 36, 36, 74, 21,252, 25, 99, 97,200,179, 8,155,204, 26, 75,215,129, 69,183,198, 26, 52, 77, 3,231, 61, +156,177,204,127,143, 92,200, 7, 16,154,234, 51,209,230, 41,115, 38, 84, 4, 44,158,125, 99, 11, 4,201, 24,160,109,249,204, 72, + 49,113,232, 80,235, 49, 12,128,107, 90,196, 24, 96,173,135,183, 22,125,215,195, 16, 97,247,218, 53,156, 62,179,131, 72, 9,203, +105, 64,180,158,181,151,188, 5,144,181,100,139,110,214,131, 76,194,209, 48, 96, 57, 12,114, 96, 72, 49, 17,153,183, 96, 73,242, + 38,168, 48,235, 11, 81, 78, 4,206,196, 83, 79,159, 52, 40,195,240, 94, 91, 31, 20,114,146,111,173, 21,136, 53,153,200,164,113, +155, 38, 59,133,116,124,239,132, 46, 21, 37,237,200, 32,197, 9, 99, 96,175, 99,103,128, 86, 44, 90, 78,148,143, 73,246,118, 67, + 76,216,104, 91, 44, 54, 55, 49,219,152, 99, 53, 5, 92,189,247, 60,174, 93,190,134, 89,239,177,177,177,129,166,109,209,247, 61, + 62,121,231, 39,241,183,127,253,126,236,156, 58,141,135, 60,244,129, 56, 60, 56, 70, 8,138, 7, 20,112,137,228,127,119,109, 3, + 66,196, 16, 98, 69,111,146, 92,107,239,100,180, 19,121, 4, 41,187,187,140,189, 36, 90,243, 2,194,154, 18,156,160,202, 53,193, + 16,169,221,130,139, 12,147,221, 81,249,122, 51, 60,118,169,191,185,245,157,110,170,253,187, 66, 91, 34,129,125,253,201,200, 23, + 81,146,152, 52,103, 90,124,119,211,100, 48,120,197,199, 58,172, 70,194,108, 74,104,124,204,234, 82,181,208, 24,107, 96,146, 5, +231,197,112, 87,227,178,101, 49,101,114, 86,182, 85,203,101,100,144, 78,248, 93,105,237, 64,170,199,141, 5, 24,163, 78, 10, 86, +155, 91,107,249, 98,183,137,151, 29,198,102,238, 55,170, 49, 63, 81,226,240, 18,161,112,105,234, 95,170, 48,176,170,204,206,163, +242,106,108,175,234,224,148,105,112,213,193,162,201, 75,106, 15,210,138, 54,179,222,245, 18, 79,185, 99,183, 80, 60,173, 17,177, +156, 88, 28,235,213, 76,213, 83,209,137, 80,143,252,158,213,225,214, 84,240,147, 36,187,104,227, 28,188, 92, 10,206, 90,192,123, + 88, 63, 33,134, 14, 29, 69,132, 48,241,229, 30, 57, 25, 79,114, 3, 25, 99, 26, 35, 34, 18, 26,242, 34,224, 35,196,174,197,209, +202,176,126,147,182,128, 48,224,202,149, 11,104,162,195, 20, 1,235,213, 78,229, 50,104, 68,121,225,220, 53, 79,152,183,156,226, +231, 27, 7,195, 71, 98,182,182,234,104, 88, 26, 72, 22, 68, 81,121,166,172, 77, 60,174,183, 34, 99,114, 14, 77,227,225,189, 99, + 30,183,231, 32, 23, 99,125,209, 88, 24,189, 20,227,154,162, 28, 39,187,107,176, 13,147, 55, 61, 38, 51,248, 73,246,162,100, 34, + 39, 68,154, 42, 87, 92,166, 11,154, 52, 89,127, 78,138, 64,205, 94,238,148,178, 56, 18,186,207, 53, 53, 0,169, 96,106,107,103, + 6,213, 80,170,234,251,162, 23, 89,173,209, 89, 91,237,213, 10,126,249,119,206,217, 60,118,206, 23, 54,164, 0, 47,213, 37, 63, +239,154,167,141, 66,218,131,172,255, 26,231, 17, 17, 51,156,165,252,253, 78,124,207,137,241,197,134,249, 0, 10,155, 97,215,149, +133, 51,156, 27, 49, 77, 1, 49, 78,152, 82,192,181,253, 99, 28, 31,143,153, 2, 25,136, 35,133,141, 49,226, 4, 33,129, 72,197, + 12,155,202, 44,132,200,130, 70, 21,122,102,103,157, 62, 75,206,112, 70,185,172,237, 82, 10,249, 92,129, 20,115, 44,168,229,206, +216, 90,159,133,185,214, 57,180, 93, 43,207,159,172, 41, 53,116, 10, 6,201, 48,122, 22, 18, 27,107,215,178, 46, 82, 30,233, 67, + 52,102, 10,235, 73,150,209,182, 6, 22, 97, 74,249, 62,224,152,227,136,105, 26,209, 52, 30,100, 13,186,174,199, 56, 14, 88, 13, + 43,248,166,193, 52,141,152,166, 99,105,244,202,106,146, 98, 68,211,122,180,109,135,144, 70, 28, 28,236, 97, 26, 3,136, 36,195, + 62,106,242, 26, 23,206, 49,165,146,121,143, 98,151, 84,176,145, 98,242,108, 34, 3,130,102,244,150,195, 89,169,103, 9,194, 92, + 54, 82, 81,231,252,112, 66,160, 88,168,113,181,143, 78,224,255,136, 17,105,154, 96,210, 4,155, 18,156, 84, 19,236, 51,245,136, +137, 48,133, 9, 48,192,246,230, 6, 54,111,186, 9,179,197, 22, 14,119, 15,112,255,157,119,225,112,119, 23,155,155,115,116,125, + 15,231, 57,240,254,206,143,223,129,219,223,255, 33,140,203, 17, 77, 43, 7,141,177,128,231, 55,217, 89,203, 42,251,206, 51,126, + 15,108,255,202, 49,145, 82,133, 38,217, 25,187,166, 65, 52, 22, 65,152,186, 78, 56,200, 26,221, 1,241, 59,159,180,109,161,242, + 52,234,142, 56,201,147,169,187,179, 84, 9,183, 76, 85, 73, 67, 82,215,184, 35, 55, 25, 80, 65, 6, 57,182, 50, 95, 92, 68, 12, +216, 32, 69,114, 42, 83,191, 80,255,194, 20, 49, 77, 9,135,171, 9,203, 49, 97, 24, 8,227,196, 43,128,164, 92,237, 68,153, 30, +150,244,192,212, 3, 44,234,195, 28,203,193, 67, 60,186, 39,129,104,212,246, 49, 40,254, 53,209,154, 7, 85, 71,142, 84,169,133, +197, 21,186,102,233,211, 28, 1,222,119,167, 58, 20,139,199,172, 73, 15,132,148, 87, 19, 84, 89,253,116,103,175,240, 12,181,201, +192,186,178,215,173,112,174, 73,103, 5, 70,199,123,146, 18, 39, 9, 76,154,190,166,239, 49,201,248,145, 89,230, 78,240,139, 69, +177,206,172,104, 91,166, 2,186,185, 61, 49,118,215, 3,195,185,154,245, 80,188,175,200, 5,143,122,105, 89,188,198,228, 58,143, +182,155,161,155,205,209,207, 55,209,204,230,232,230,155,152,109,238, 96,182,177, 35,255,126,142,118,214,161,233, 58,244,179, 5, +230,243, 5, 54, 55,230,216,152,205,176,152,117,152, 47,122,108,110,109,227,212,230, 54,182, 54, 22, 56,189,179,192,198,172,131, + 77,252,156,141, 19, 11,209, 52,235,193, 16, 79,146,172, 20,113,206, 89, 52, 77,131, 89,239,208,119, 45,218,206,162,109, 29,218, +174,129,111, 89,244,212,245,236,135,159,245, 45, 7, 82,204,103,232,250, 22,125,223, 97, 62,155,161,239,123, 52,109, 3,223,113, + 71,210,205, 59,248,174,129,245,250,115,154, 12, 12,209,105,148,138,109,179, 69,201,156,188, 0,141, 8,223, 28, 79, 44,114,215, + 38, 32, 25,138,194,157,136,153, 47, 64,213,138,178,128,145,202, 40,188,190,224,163,176, 20,212, 27,109,170,144, 24, 67,144, 76, + 3,246,184,123,239,139, 0,143, 40, 7,217,156,164,190,157,180,146,233,101,189,174,198, 79, 21,207, 30,235,223,165,148, 68,187, + 82,172,229,250,140,221,242,196, 47,194,203,127,242,157,152,109,158, 41,113,162,146, 97, 96,173,229,132, 51,153,132,212,192, 40, +181,152, 89,231, 36,182,215,225,150,199,127, 1, 94,241,154,183, 96,243,212, 57,185,208, 82, 25, 5, 35, 50,231,253, 96,133,203, +151,143, 48,142, 73, 84,233, 42, 68, 20, 33,163,236,254,163,118,146, 50,202, 79, 84, 86, 18,207,126,254,151,225,221,159,220,195, + 3, 31,242, 48,201,157,144, 0, 38, 99,209,116, 13,172,113,120,202, 51,254, 9,222,249,193,139,184,249,129,183,100,107,107,142, +144, 37,147,215,102,214,123, 56,225, 69,184, 70,217, 42,210, 68,200,123, 23, 19,227, 89, 73, 70,212,202, 34,120,198,243,110,197, +159,221,126, 1, 55, 61,224, 65,229,211, 73,218,200, 80,158,124, 88,235,114,247, 63,172, 86,240,190, 99,253,128, 32,134,185, 49, +228,239,185,111,231, 88, 30, 45,177, 60, 58, 70,215,244, 24,199, 9,227, 24,165,160, 68,198,161, 19, 17,230,237, 28,141,179, 24, +166,132,227,163, 35,196, 48,102,194,103,142, 6, 78,200,171, 6, 93,147, 27, 13, 43, 82,205,109, 34, 68,240, 26,217, 43,255,216, + 73, 6,175, 38,252,100,197,165, 42,157,115,164,157, 17,168, 74,204, 17,117, 89, 3,101, 20,187, 72,160, 24, 24, 27,203,121,133, + 28,234, 66,146, 56,156,149,231, 19, 22,253, 2,155, 27, 11,204, 23, 61,142, 87, 9, 23,174, 94,196,114,119, 23, 77,227,208,205, + 56,171, 54,141,156, 37,125,255, 93,119,227,158, 59,239,133,247, 45,156, 29, 48, 13, 44,244,130,177, 8,145,233, 67, 86, 84,176, +198,178, 16,108,138, 9,147,236, 70, 57, 86,134, 65, 51,164,149,176,236, 87,198,113, 64, 67,173,168,188, 53,126,209,172, 95,228, +218, 69, 57,131, 36,241,166, 5, 73, 41,153,211, 94,118, 71,182, 8, 10,185,186, 55,165, 83,205,105,106, 37,124,100,237,128, 65, + 13, 92, 83, 87, 1,149, 73, 65,162, 12, 91, 32, 97, 25,135, 24,177, 26,217,122, 52,235, 60, 86, 67,192,172, 99, 11, 31,144, 4, + 59,235,228,162, 54,249, 64,113,100, 17,193,233, 88, 41,138,111, 84, 80,152,144, 11,156,191, 72,140, 4,182,220, 18,240,115,226, +100,210,161, 90, 11,208, 90,199, 97,189,201,144, 26, 72, 6, 55, 89, 53,118, 85,113,147,130,234,204,156,118,102, 56,202,138, 67, +187, 40,147, 45, 56, 38, 91,129,170, 4, 59, 61, 21,180, 40, 81,235,160, 85,123, 15, 43,188, 73,187, 30, 41, 70, 75,103,197, 99, + 70,163, 97, 33,169,202,156, 54, 39, 26, 35, 83,237, 25, 11, 4, 62,147, 19,113,131,241,106,150,117,101,233,116, 1,173,103,170, +160,140,252,146,115, 25,191,236, 97, 17,237,196, 81,178, 94,118,190, 45,193, 43, 11, 64,167, 98,220,142,103, 31, 43,224, 49, 77, + 9,206, 71,120, 34, 80, 24, 96,199, 3, 12, 59,115, 44,151,252,221, 69,138, 8,193,192,194, 33, 26, 6,122, 88, 50,112,158,215, + 1,206, 26,116,141,231,164, 40, 57, 40, 21,104, 74,146,132,101, 29, 95, 26, 54,235, 77,100,234, 1, 11,239,197, 1, 32,128, 21, +239, 93,190, 72,116,191, 75,138, 26,210, 78,212,161, 8, 8, 85,185, 46,228,198,114, 57, 82,158,236,212, 59,220,108, 15,173,152, +255, 36,152,226,242,190,208,154,196,142,104, 93, 81,140, 12,120, 74,186,181,169,128, 49,213,127,147, 57,220,169,100,153,107,103, +242,137,148, 0, 0, 32, 0, 73, 68, 65, 84, 99, 95,237,100,215,119,247, 39, 47,250,148,237,152, 57, 21, 46,119,237,230,198,207, +144,116,136, 37, 91,160,232, 95, 50,133, 50,255,249,118, 77,117,159,214, 80,198,242, 90,173,201,194, 57,103, 44,238,251,248,251, +240, 91,255,233,235, 16,195, 42, 11,131,147,225, 66, 39, 77, 1, 33, 36, 92,217, 59,198,209,113,177, 54,166,170,200,200, 58, 23, +136, 5,208,251, 28,116, 3, 50, 55,212, 24,196, 84,132, 41,206, 59, 52,157,207,227,101,189,180,244,158, 90, 91,169,213, 19,143, +196, 97, 77, 77,227,242, 36,200, 91,143, 68, 3,130,120,193, 65, 37, 71,160, 96,113, 79,234, 95, 74, 62,134, 78, 28,173,179, 48, +212, 84, 77, 2,208,207,102,146, 5,194,119,153,177, 14, 9,132,206, 55,152, 45, 22,184,112,239, 93, 24,134, 21,218,174,195,209, +238, 46,199, 13, 19,147, 86,181, 16, 32, 34,244, 93, 7, 24, 96, 88, 45, 49,172,134,172,195,178,165, 83,200,175,136, 27, 50, 89, + 7,104, 94, 65, 69, 52, 52,242,140,121,103,202,248,216,217,226, 51,207,249,213,169, 84, 90, 70,114,190, 83,148, 56, 58, 91,141, + 71,101,252,166, 29,161, 21,161, 74, 99, 45, 83,214, 98,128,113, 13,227,238, 66,132,115, 30, 91,243, 29,108, 44,182,209,181, 6, +123, 7, 7,184,186,127, 8, 23, 34,102,139, 57,188,183,160, 52, 97,117,116,132,227,107,251, 56, 56, 56,196,225,225,129, 16,155, + 8, 9, 78,160, 40, 44,126,176, 0,230,242, 6,165,105, 66, 80,228,160,120,143,141,177,188,159,168,148,168, 36, 49,152,222, 53, + 88,197, 37,131, 52,116,132,168,245,144, 49, 57,159, 88,173, 72,166, 58,225,169,108, 21,229, 18,215,177, 76,117, 57, 74, 10, 15, +235, 20,132, 9, 47, 99, 61,189, 80, 26, 33, 12, 69, 29,253, 37,131,228, 36, 52, 65,170, 54, 15, 39, 66, 41,222,211, 59,235,100, +135,200,171,133, 41, 90, 28, 47, 7, 44,123,135, 85,103,177, 90,141,232,186, 6, 68,142, 59,238, 20, 69,208,193,200, 86,107,155, +172, 67,202,135, 85,172,198,236,137,117, 20,234, 9, 87, 76,174, 30,184, 89,185, 75, 41, 95,120,214,213,151, 56, 33, 80, 16,120, + 76, 9,180,112,198,113, 39,172, 23, 99,246, 31, 37, 17, 95,149,110, 54, 73,213,138,220,101,112,156, 41,163, 75,221, 26,199,218, +136,234, 61, 79, 26,170, 60,106,131,226,233,181,162,194,215,253,186,218,204, 52,177,208, 25,147, 11, 14, 61,188,109, 22,168, 32, + 39, 90,229, 36, 45,171, 95, 40,147,149,169, 25, 57,155, 61,203, 22,165,161, 43, 54, 57,205,211, 54, 40,118, 37,231, 12,144, 68, + 12,104, 36, 37, 46,185,108,131, 12, 20,129,136,181,112, 32, 22, 52,197, 44,190, 33,141,249, 69,130,153,181,112,216, 68, 75, 3, + 82, 88,225, 98,188,130,182,233,249, 2, 37, 73, 52,163, 0,136,184,149,201,131, 17,222,179,230,133,140,147,105,131, 23,102, 3, +114,118,129, 17, 13,137, 5,149, 36, 50, 21,211,169,219,193, 16,188,147,247,201,248,204,231,230, 28,120, 87, 15, 56,114,119,174, +221, 41,165, 50, 70, 45,157,186,196, 54, 27,170, 38, 78, 84,229,174,155,181,240, 33, 46, 0,101,247, 77,246,134,194,181,181,128, + 12, 32, 79,124, 52,227, 29, 89, 11, 47, 19, 40,133,135,104,150,131,190,102, 21,110, 10,204,106, 93, 47, 83,139,228,176,182,114, + 66, 85,168,102,240,207, 9,173, 10,107,117,101,175,175,225, 40,214,172,233, 78,242,238,191,210,206,144,196, 0,155, 28, 48, 99, +215,247,252,214,194,217,134, 45, 87, 32,196,241, 88,206, 76,205, 25,103, 85, 57, 69, 96, 90, 77,184,186,127,132, 41,138,195, 73, + 10, 37,103, 93,181,118,224, 75,147,159, 15, 3, 4,102, 79,164,152, 4,224, 99, 50,252,169,176, 8, 88,228,234, 27, 39, 29,109, + 40, 32,167, 53, 44,110,204, 52, 82,230, 2,248,188,194,180,214,228,201,137,245, 70,124,221,156, 61, 31,213,110,103, 25,178,198, + 77, 13,174, 67,174,150,243,132,139,119, 43, 46, 8,230,213, 91,129,232, 24,116,125, 7,219, 56, 68,112, 2,168,247, 27,236, 98, +113, 13,188,181,216,219,219,195,108, 54,131,241, 14,227,180,132,179, 30,132, 9,145,162,132,102,241,228,216,251, 6, 19, 37,172, +198, 21,166,176,130,247, 13,219,122,173, 4,169, 41,201, 21, 66,101,173,133,113, 40,208, 36,168,243,129,209,203, 81,186,130,148, +149,162,206,241,174,139, 12, 43,247,140, 99,225, 84,222,171,231,209,141, 65,253,217,164,108,185,176, 57, 7, 24,113,130,137,204, + 59, 78, 18, 75,216,245, 51,108,109,109, 99,107,107, 19, 41, 13,184,122,245, 26,174, 93, 57, 68, 99, 12, 22,139,158, 43,181, 56, +225,112,111, 15, 87, 46, 92,192,229,203,151,113,120,124,140,213, 24,177, 90, 13, 8, 97,130,243, 6,171, 24,145, 92, 66,211, 88, +236, 44, 58, 44,250, 14,222,114, 38,123, 20,240,132,107, 26,182,202, 89,147,195,229, 85,192, 21, 73, 99,240,184,107, 8,211,196, + 34, 63, 25, 57,231,139,142,207,216,124,177, 27, 81,197,174,187, 80,120,244,167, 41, 73,234,185, 53,176, 50,246, 35,120,171, 30, +208,245, 7,213, 84,150, 40,146,145,124, 50,134,213,228,218, 73,200,235, 82,177,202, 26,142, 84,242,232,167, 64, 24,166,132,229, + 42,224,120, 57, 97, 53,196, 18,178, 16, 19, 40,114,142, 54,165, 36,208,145, 88, 70,220,249,245, 72,200, 70,110, 40,249, 75,104, +171, 32, 20,189, 48,117, 60,168,227,200,226, 3, 46, 85, 48, 37, 65,222, 18,239,237,178, 80,144, 21, 81, 25,185,169, 66, 30, 22, +168, 69,190, 64,165,160,178,178, 27,212,247,184, 14,237,208,139,121,173,219,170,114,211, 57,109,207, 92, 71,229,178, 98,103, 43, +187,214,146,120,196, 73, 38,108,125, 52,107,123,123,183,214,229, 64, 92, 8,250,249,153,188,134, 58,113,121,115, 96,194,154,210, + 89,167, 94,250,135,169, 78,130,244, 27, 36, 2, 71, 99, 29,108,211,194,249, 6,222, 58,102, 97,219, 6,222, 55,240, 13,239,168, +219,166,229, 44,117,249,197,118, 30,135,198,115,186, 85,215,122,180,243, 22, 91,167, 78,225,244,153, 51,216,218,233,209, 47, 60, +186,126,134,118,222,161,237, 60,186,174, 69,235, 27, 52, 94, 11,123,135,166,113,104, 91,155,113,155,190,241,104, 27,207, 66,166, +198,160,241, 14,173,183,232, 26,143, 86,124,193,252,171, 69,211,182,112,206,195, 89, 15,239, 26, 56,219,242,106, 65,206, 17,227, +108, 53,250,160, 53,164, 46,219,228, 74, 44, 46,223,113,148, 69,168, 57,134, 87, 84,220, 5,121, 90,121,140, 43,173,132,142,221, +107, 22,196,201,157,183, 94, 96, 72, 84,193, 0, 11,213,206, 26, 43,100, 50,126,125,140,130,165, 18, 43, 90,228,180,153, 43,127, + 35,143,188,238,119,235, 44,116,221, 57,199, 92, 44,214,251,119, 48, 85,205, 90, 94, 11, 1,232,251, 5,158,243,178, 87,225,107, +127,244,143,241,229,223,245, 95,113,246, 33,143,173,152, 11, 22, 15,125,252,211,240,117, 63,246, 54,108,156, 58,151,127,190, 7, + 63,238,169,248,154, 87,255, 15, 44,118,206,194, 24,194,131, 30,247, 84,188,244, 63,189, 5, 15,122,236,231,225, 75,191,227,167, +241, 79,255,221,127, 5,172,195, 67, 31,255, 84,124,253,143,252, 1, 54,119,110, 6, 96,240,164, 91,191, 17, 47,250,215,191,128, +151,255,200, 31,226,165, 63,244,155,120,216,231, 61, 15,123, 71, 43,132, 41, 0, 49,225, 11,159,119, 43,254,242,206, 3,124,230, +231,124, 30,254,227,207,253, 10,222,241, 15, 23,240,214,191,254, 56,158,243,165, 95, 9, 39, 93,122,253,125,141, 66, 82, 84,235, +244,195, 30,245, 88,188,238, 45,183,225, 93, 31,185,132,215,190,225,205, 56,115,211, 57, 94,203, 74,128, 88,190,110,101, 2,248, +194,151,124, 35,222,250,238,143,224,175,238,216,195, 47,252,198, 91,112,250,236,205,121, 50,250,204, 47,126, 1,222,254,190,187, +240,216, 39, 62, 9,175,248,174, 31,194,171,223,240, 22,252,200,235,222,140,207,121,250,115,120, 53,106, 13, 54,182,182,240, 3, + 63,241,139,120,215,135,239,199,111,189,253,221,120,252,103, 63,249, 58, 61,196,151,125,213,203,240,155,239,248, 0,222,250,183, +119,225, 63,254,236,175, 99,231,212, 89, 22,114, 58,143,135, 61,250,115,240,147,175,127, 39,158,248,185, 95,132,231,124,197,183, +226,171,191,233, 85, 8,227, 50,127,167, 27,207,240,166,189,221, 93,108,110,109,227, 65, 15,127, 50,190,248, 69,255, 26,223,242, +189, 63,143,111,248,142,215,224,179, 62,247,185, 72,137,215,163,198,117,120,200, 35,159,128,127,246,178, 31,196,217,115,143,192, +215,125,243, 15,227,155,190,235, 39, 0, 16,218,217, 28, 47,121,217,247,224, 7, 95,243, 27,248,174,255,240, 51,248,146, 47,253, + 23,120,205,255,249, 7,216, 57,125,147, 60, 91, 88,155,222,144,145, 0, 28,103,181, 71, 98, 35,155,151,100, 27,181,172, 72,205, + 10,111,189, 4,141,228,233, 35,172, 43,135,101,160, 8,164,200, 64, 26, 75, 28, 2, 49, 1,113,224,204,103, 39,202,231,214,123, +108,204, 23,216, 90,108,160,177, 13,246, 15, 15,112,254,242, 69, 28,172,150,152, 45,122,204,103, 29, 44, 25,132, 97,194,222,181, + 3, 92,185,120, 21,123,187, 7, 24,134, 17,203,229,132,131,227, 37,150, 49, 50,105, 7, 6,102, 10,112,176,232,231,115,248, 89, + 15, 88, 32,192, 10,184,197,192, 55, 44,148,243,214,150,131,216, 22,193, 82, 74, 9, 83, 90,129,108,132,117, 30,211, 68,204,189, + 38, 81, 67, 86,227, 91,155,249,224, 34, 30,179,148, 61,157, 41,139,117,229, 66, 52,128,149,112, 27,187,230, 55, 44,130,170, 60, +218, 19, 11, 87,134,252, 24, 32,153, 4,146,132, 47,163,187,122, 50,153,208,102, 9,112, 17, 57,157, 10,194,147, 79, 41, 33,134, +128,113, 21, 48, 14,132,229,138, 19,189,210,196, 23,121, 20,155, 95, 74, 17, 49,141,140, 33,164,128, 16, 71,233,228,147,236,225, + 41, 79,183, 36, 91, 46,255,249, 76, 30,163,181,131, 88,211,231,202,238, 47, 85, 73, 66, 50,186, 36, 22,197, 25,101,120,231, 29, +165,142,189,101, 28,158, 44, 64,130,143,133,166,165,150,131, 46,143,196, 52,168,194, 36, 24, 19,175, 27,117,150, 7,149,100, 95, + 45,251, 80,195,204,121,115, 98, 71,171,126,214,148, 43, 99, 35, 83, 3,147, 69,121, 84,117,227,220,192, 57, 17, 5,105,241,198, +101, 43, 39,224,233, 56,207,100, 91,138,240,100,203, 47,216,162,172,207, 96,167, 2, 15, 33,209,127, 88,245, 77,123, 11,239, 91, +120, 47, 98, 51,215,192,249,134,211,158,156,208,224,172,205,174, 13,107, 9,174,225,203,182,111, 26, 52,125,135,173,237,109,220, +124,250, 38,222,125,123,143,153,239,209,250, 25,124,211,193, 54, 30,100,121,191,218,182, 13,186,174, 69,227,123,116, 93,195, 23, +187,227, 11,150,197,110,158, 67, 98,188,133,117, 4,231,141, 20, 26,173,136,227,216,102,103, 28,241,255,123,123,157,119,191, 20, +129,182, 26,155, 99,237,146,206, 86, 49, 99,214,186,248,188,131,150,239,202,218,231,158,116,183,171,254,236,152, 69,110,186,115, + 95,139, 59,149, 29,116,166,255, 81,210, 23, 81, 1, 98,152,247, 29, 73,242,237, 85, 87, 65, 38,119,172,172, 41,138,112,206,156, +232,210,175, 31,245,171,182, 67,159, 99, 75, 96,103, 75,146, 73,164,172,170,140, 88, 96, 73,126, 15, 96,241,148, 23,127, 15, 22, + 59,231,240,214,215,126, 11,222,253,166,215,226, 33,159,249,180, 74,199, 97,214, 38, 31,107, 5, 45,192,223, 45,148,104,226, 39, +223,250, 10,124,240, 29,191,137,183,255,242,127,200, 72,212,218,230,186, 58,218,197,109,191,243,227,248,245, 31,253, 23,248,216, +251,111,195, 11, 95,241,253, 72,193,178,243,134, 98,254, 25,127,228,231, 95,135, 15,253,237, 95,225, 37,207,126, 18,222,253,167, +111,199, 15,254,212, 47,193, 53,162, 96, 55,124,209, 36,163, 1, 60, 41,127,246, 47,253,230,239,198, 79,191,234,123,241,242, 47, +123, 58, 30,248,144,135,225, 59, 94,249,106,254,249, 37,108, 40,219,187,140,193,243, 94,240, 66,124,219,247,254, 0, 94,249,237, + 47,195, 11,159,241, 68,204, 23, 27,248,254, 87,255, 44,107,184, 28,143,238, 1,224, 59, 94,249, 99,248,212, 71,111,199,127,249, +174,111,196,237,127,243, 30,252,171, 87,254, 40,156,136,187,191,237,223,255, 48,110,122,192,131,241, 53, 47,120, 26, 94,253,202, +239,196, 51,158,119,107,166,233,129, 44,158,249, 37, 95,129,111,250,238,255, 3, 63,250,111,191, 25,223,250,226,103, 99, 54, 95, +224, 91, 95,249,163,188,126,170,234,208, 47,126,209, 55,226, 31,222,247, 46,252,238,175,188, 26, 20, 24, 80,228,141, 65,211,182, + 88, 45,143,112,184, 60,196, 23, 62,239,159,227,204, 3, 30,137,191,122,215,239,225,215,126,254,251,240,103,255,243,119,113,235, + 11, 95,142, 39, 61,245,185, 88,197,132,166,105, 68, 40, 12,124,193, 23,125, 37,254,226, 29,255, 29,111,252,229, 87, 33, 2,120, +254,139,190, 9,231, 30,120, 11, 94,255,139, 63,128, 63,250,253,255, 11,143,123,194,231,203,126,130,157, 84, 73,166,137, 36,145, +217,136, 9, 38,114, 64,146, 21,133, 87, 78, 8, 50, 57,164, 32, 2, 20, 96,197, 40,111, 41,194, 82, 18,137,191,128, 49, 13, 4, + 47, 74,104,172,129, 55, 4, 19, 2,194,184,196, 52,173, 0, 74,240,206,195,183, 29,102,243, 13, 44, 22, 11,204,230, 29,142,167, + 1,151,118,175,226,194,165, 61, 76,176,216,154, 45,208,123, 7, 36,194,106, 28,176,183,191,135, 43, 87, 47, 99,255,248, 8, 67, + 76,216, 95, 14, 56, 88, 46, 49, 6, 25, 31, 19, 23, 29, 91,125,143,214,122,244,243, 57,239,125, 4,169, 9, 27,225,188, 69,219, + 52,217, 90, 81, 87,197, 53,251,153, 69, 49,252,123,217,182, 25,242, 46, 42,211,198, 84,176, 80, 67,103, 78,166,136,165,162,214, + 52,150,113,132,154,229,140,202, 99,158,106,107,156, 78,224,177, 30,209,138,156,236, 36, 64, 13,185, 32, 99, 30,241, 17, 2,196, +218, 34,202,114, 67,156,186, 21, 82,194,114,156,176, 28, 39,172,166,128,229,106,192, 56, 78,108, 27, 73, 17, 41,133,236,183, 77, + 41, 48, 40, 40,175, 1, 40,139,185,214,194, 72,146, 78, 16,162,252, 60,220, 77, 83, 22,179,209,117,246, 21,134,155,199,204, 64, +224, 46, 59, 21, 10,152, 90,201, 44,203, 49, 65, 28,178,193, 24, 88,237,152, 83,126,239,248,103, 55, 25, 50,147,178,232,137,137, + 75,252,254, 83,238,138,214, 71,177,186, 82,178, 57,119, 59, 17,157, 16,182, 89,150,112,187,114,184,159, 12,103, 89,239,190,139, +216,200,161, 58,124,171, 29, 23, 17,239,171, 13, 85,209,175,166, 2,147,200,165,180,246,231, 75, 71,161, 99,109,141, 46,230, 3, +215,131,100, 5,198, 43, 1, 87,232,135,142, 95, 71,233, 22, 37,151,193, 88, 52,206,193,121, 22,133, 54,179, 57, 22,155, 59,152, +245, 51,204,102, 30,109, 99,209,117, 77,142,148, 52,214,163,241, 29,218,166, 71,211,205,209,246, 61,218,182, 65,211, 54,124,209, +183, 30, 93,215,161,109, 91, 22,138, 57, 7,111,125,198,180,168, 56, 75, 87, 92,122,152,114, 32,134, 91,139, 52,189,110,186,178, + 54,106,182, 57,196, 69,119,209, 39, 93, 5,181, 79, 60,157,216,119,235,251,155,233, 97, 84, 34, 43, 13,106,183, 70, 69,166, 51, + 37,110, 58,233,168,186, 2,191,212,123,114, 45,182, 84,228,119,210, 54,183,158,173, 14,209, 62, 32,235, 0,178, 5,120,237, 6, +174, 98,154,215,126,198,130,178,109,103,155,184,229,179,158,133,191,127,231,111, 98,255,234,125,184,114,247, 71,240,129,255,249, +134, 53,143,187, 49,184, 1,200,198,222,112,159,253,254,183,253, 42,206,127,226,239, 48, 28,239,175, 77, 93,245,189,253,240,159, +191, 9, 23,239,249, 71,236, 95,187,140,127,120,223,109,104,187, 30,179,141,109, 89, 45, 22,187,231,235,126,230,199,241,251,111, +248, 37, 92, 58,127, 63,110,123,199,255,192,198,214, 54,118, 78,159,225,103, 81,113,183,154,149, 97, 13,167, 96, 2,248,233, 87, +253, 59,252,253,251,222,139,187,239,248, 71,188,229,183,127, 21, 79,127,238, 11, 96,136, 49,168,177, 2, 65, 25,107,240,210, 87, +124, 39,254,232,119,127, 29, 31,124,223,123,113,254,222,187,241,251,191,254, 43,120,206,243,191, 28,173,111,224, 93, 17,166,190, +245,119,127, 21,127,254,182, 55, 99,255,202, 69,124,224, 61,255, 31,230, 27,155,216, 62,117, 26, 59,167,206,224,233,207,185, 21, +191,246, 75,175,197, 93,119,124, 28, 31,254,187,191,193,255,253,179,175, 89, 27,192,127,245, 55,124, 59,254,159, 55,253, 22, 62, +250,161,247,225,210,249,123,240,246, 55,255, 6,158,250,172, 47, 65,215,117, 37, 54, 28,192,123,223,249,251,184,116,255, 39,176, +119,245, 50, 66,148,213,153,181,104,187, 14,203,227, 35,180,179, 5, 30,241,216,207,199,167,254,225, 47,113,241,190, 79,224,240, +112, 15, 31,254,224, 95,226,189,127,254, 54, 60,227,185,255, 20,136, 81, 80,178,252, 51,254,233,219,127, 11,159,248,232, 7,112, +112,237, 26,250,110, 3,143,251,204,167,224, 47,222,245,135,184,122,249,126, 92,190,112, 15,110,251,211, 55,101,205,129,169,112, +236,245, 4, 50, 73, 86,129,215, 74,200,144, 19, 69, 30,128, 70,148,201, 58, 18, 21, 75, 21,241,204, 58,115,128, 19, 18,188, 33, + 52,158, 43,191, 24, 2,166, 97, 64, 10, 19, 90,239,208,185, 6,125,239, 49,235,231,232,186, 30, 33, 68, 28,236, 31,225,232,248, + 24,148, 8,253,172,197,188,239, 88, 53, 25, 9,227, 56,225,224,240, 16,123, 7,251, 88,174,142,177, 90,141, 56, 58, 92, 98,146, +120,189,144, 0, 34,139, 89, 99,177,209,118,152,119, 30,190, 33,184,100, 89,172,165,135,172,179,104, 26, 95,165, 24,137,197, 66, +224,247,124, 29,242,124, 34, 70,198,236, 89,103,224,155, 34,180, 98,117, 55,202,184, 59, 70,144,227,206,204, 56, 39, 38,127,135, + 41,198,220,125,235, 88,185,241, 13, 32, 36,173, 41,152, 74, 16,162, 98, 26, 35,251,115,201,171,215,104, 86,245, 31,202, 63,219, + 58, 82, 50,105, 17, 37, 20,164,148,224,100, 34, 97,133,202,150, 34,131, 30,134, 41, 97, 57, 76,152,173, 60,142, 26,131,190,225, + 81,172,111,188,116, 0,164, 1, 69,112,137,178, 77, 36,139, 45, 68,161,174,127, 54,137,176, 16, 73, 86, 24,196,187, 73,117, 59, + 80,162,234,208, 53,121,244,201,202,212,130,192,229,157, 61,241,206,248,132,242,152,189,221, 96,112,140,129, 84,156, 82,214,184, + 42, 41, 75, 56,200,206, 53,121, 39,121,163,195,168,190,116, 79,238,205,242,174, 93, 73, 94,122,105,194,150,221,170,118,108, 39, +128, 50,117, 12,102,254, 92,179,168,210,228, 76,114,163, 59,204, 42,104,134,242,142, 94,137,103,180, 38,148, 42,153,236, 0,208, + 2, 38,176,176, 17, 60, 21, 80,155,153,138,165,160,182,122, 83,136,119, 70, 62, 3,103,141, 96, 38, 45, 7,216, 56, 70, 61, 81, + 59,193,247, 29,220,106, 41, 98, 71, 43,113,147, 34, 69, 52,172,121, 96, 17,144,169,128, 59, 22,206, 23, 43, 20,191, 65, 73, 94, +151,172,230,115, 48,136, 20,208, 64, 94,233,161,250, 60,234,113,116,170, 86, 73,245,251,107, 78,220, 76,117,193, 86, 23,143,181, + 8,113, 29, 36, 83, 10, 71, 50, 10,102,209,116, 63,170, 2,128,132, 31,158,170,142,223, 40,197,204,174,237, 93,121,151, 43,103, +132,112,200,117, 92, 94,232, 99,246, 68, 84,107, 58, 65,136, 51,146,221,174, 19,136,170, 56, 41,106, 73,246, 49, 87,190,100,136, + 30,100,243,220,195, 96,172,197,238,197, 59,215,220, 52,165,160,193, 90,156,168,182,228,230,186,206,157,255,205,193,213,251,114, + 1, 72,245, 70, 81, 58,234,217,230, 25,124,254,179,190, 10,231, 30,254, 89,152,111,238,228,115,152, 55,170,133,227,241,190,247, +220, 86, 98, 64, 99, 42, 65, 75,177, 48,248, 41,239,181,203,170,238,232, 96,159, 53, 33,206,224,242,133,123,209,245, 51,108,110, +157,194,193,253,247, 22,254,186, 24,164, 31,249,184, 39,224,145,143,125, 2, 94,252,181,255, 50, 71,220,250,166,193,153,179,103, +177,119,237,162, 60,227,192,199, 63,252, 1, 1, 16, 37,118, 87,201,107,121,196,163, 31, 11,107, 45, 62,254,145, 15, 23, 29, 78, +109,105, 67,194,103, 60,230,241,248,140,199, 60, 30, 47,252,234,151,139, 54,196,195,251, 6, 59,167,207, 34,211,159, 0, 44,143, +119,209, 56, 73,228,195,148, 51, 24,250,182,195,181,221,171, 56,115,243, 67, 96,172,197,222,229,243, 89,245,159, 18,112,223,221, +159,192,179,190,248,197,216, 58,125,134,137,121,146,234,121,225,190,187, 16, 2, 55, 65,103,111,122, 16,140,181,184,112,255,167, +178,206, 71,159, 31,111,109, 33,231, 9,247,190,118, 68,192, 26,134,207, 24,225, 50,115,136,144, 41,227,205,202, 35,204,162, 20, +147,173, 64, 68, 9,206, 91, 52,162,192,158, 34,239,109,145, 18, 90,231, 49,111, 91,116, 93,139,249,108,134,166,109,112,112,120, +140,131,195, 35,132,196, 74,244,126,214,160,243, 30, 38, 37,241,222, 2,195, 56, 98, 24, 6, 28, 29, 47,113,116,180,194,241,193, + 18,203,113,132, 51,158,137, 64, 48,216,154,247, 56,189,104,132, 71, 63,129,162,146,210,108,134, 91,128, 98, 37,218, 41, 81,158, +206, 9,227, 58,153,108, 75, 34, 2, 66,152,208,182, 30, 77,227, 17,101, 76,157,177,144, 84, 56,229,245,120,150,201,234, 5,238, +200, 14, 68,179,158,133,236, 61,236,196, 1, 47,182,206, 5, 71, 1,158,104,154,136, 17,186, 88,198, 2,138, 70,193, 42,224, 70, +197, 56, 74,177,147,139,215,121, 95,128, 47,201, 32, 6,182, 32, 14, 99,196, 48, 69,172, 70,139,229, 42, 96,214, 79,104,186, 14, +214,202, 94, 26, 22,137,156, 72,239, 84,125,158,100, 60, 87,108, 55,168,114,157,141,245, 98, 53, 83,127, 61, 85,161, 30, 53, 44, + 35,201,218,166, 22,212,217,108, 73, 75,138,191,180, 69,177,172,248, 73,170,210,146, 50, 64,147, 10, 98,213, 24, 92, 71,126, 99, + 23,128,174, 13, 10,172,228, 70,190,250,172,112,181,197,215,171,135,159, 65,221,173,165, 28,149,123, 35, 59, 85,125, 9, 89, 73, +197,130, 81, 69, 9,178,160, 76, 47,117, 67, 5, 29,172, 41,127,200,108,127, 83, 52, 2,149,143, 93,233,140,150,212, 71,110,225, +200,139, 88, 11, 72, 54,149,231, 40, 50,120,201,100,145,134,136,145,146, 76, 36,172,229, 17,161,239,208,205,230, 8,195,132,129, +192,223, 31,103,179, 48,140,215,106, 92, 88,165,148, 64,177,232, 16,248, 92,224,221, 34,127, 86, 38, 91,107, 52, 77,208,216,234, + 34,177,117,226,221, 58,195,160, 78,207,251,116,162,181,122,157, 18, 69, 53, 28, 43,208, 15,110,192, 84, 87, 59,238,201, 32, 19, +213,211, 32, 11,217,214, 85,244,250,153,155, 74, 60,166,128, 26,182,193, 34, 7,220,168,237,137, 40, 86, 26,141, 18, 24,164,211, +128, 90,232, 86,175, 26,234,207, 60, 7, 6, 25, 35,254,107,147, 51, 2,234,160, 25, 53,113,187,134, 57,255, 81, 46,171, 34, 6, + 68, 78, 51,212,139, 32,159, 21, 55, 16,157,151,119,198,149, 60,133,234,250, 39, 2,108,211,226, 5,223,242, 26,236, 93, 62,143, + 63,252,229, 87,131,218,109,252,203,127,255, 99, 85, 51, 98,214, 24,239, 84, 21, 46,186,179,138,161, 42,106,242, 52,195,173,125, +127,140, 1, 26,239,208,116,252,179, 45, 87, 75,132, 41,172,125,127,173, 40,223,223,248,223,126, 14,127,240,155,191,202,223,113, +239,225,157,195,213, 75, 23,209,180, 46,119,255, 70,158,253,132,136, 40, 5,134,115, 22,253,108, 6, 0, 24, 86,171,181,207,162, +118, 35,164,148,240,123,175,255, 69,252,201, 91,126,155,169,116,214,192,187, 6, 49,174, 48,187,249,116,129, 74,165,130, 17,247, +190,133,177, 22,190,241,128,179, 88, 46,143, 49,235, 55,164,224, 15, 37,236,167,210, 29, 53, 77, 35,104, 89,126,158,167, 20,101, +101, 68,240, 82,156,196,105, 82,202,108,126, 47,212,178, 13, 74,136,210,171,170,149, 90,211, 92,173,194, 22,194, 20,132, 68, 22, + 17, 66,192, 36, 49,129, 4,176, 37, 32,176,216, 45,239,155,164, 40, 77, 49,113,150,183, 88, 71, 90,231,177,232,103,216,220,216, +194,230,230, 38, 98, 50,184,116,101, 31, 87,175,237,225,242,149, 75,104,188, 71,223,247,240,206, 33, 73,252, 99,136, 1,171, 48, +226,104,181,194,254,222, 33, 14,174, 29,226,232, 96,196, 56, 10,173, 8, 9,109,215,224,244,230, 28,219,155, 45,124,195, 7,215, +144,192,233, 85, 77,131,214,119,112,174,145,221,135,149, 17, 87, 25,141,193, 20,236, 97,166,183,155,170, 91, 72, 36,227,194,166, +232,162, 52, 12, 28,182,150,126,173,217, 83,168,174,132, 53, 22,143,202,104,217, 9,130,211, 40,103, 88, 56,227, 84,190,167, 44, + 26, 66,225, 58,103, 50,102,158, 26, 84,240,126, 37,103,129,100,116, 46, 73, 82,122,201, 5,238,214,199, 41, 97, 24, 2,139, 11, +199,136, 49, 4, 17,201,201, 24, 94,246, 97, 41,133, 44,124,171, 71,151, 53,135, 93,215, 0, 20,167,204,133,215,221,100,125,120, +214,194, 32, 99, 72, 2, 90,226,218,104,146, 15, 71,170, 14,162,210, 41, 27,129,205, 20,163, 83,201,116, 47,214, 58, 84, 52, 48, +166, 9,164,100,242,184, 20,134,214, 40, 98, 55, 18,208, 89, 43, 99,246,106, 37, 83,235, 1,138,104,111, 29,227,185,254,115,210, +117,209,174,230, 6, 59,204,147, 69, 64,253, 58, 56, 68,201,158, 96,131,235,100, 67, 56,245, 50,110,231,139,183,176, 9, 52,241, + 75, 9,142, 58,122,181,206, 8,223, 94,167, 20, 73,180, 33,178,159, 55, 14,125,187,192,214,198, 14,182,182,118,208, 47, 22,104, +186, 14,109,215,161,235,122,180, 77,199, 64, 13, 42, 43, 43, 43,163, 98, 43,222,108,107, 4,134,148,105,235, 38,191, 62,214,228, +184, 44,214,243,206, 85,235,166,234,189, 50,230,186, 95, 58,114, 87,206,195, 58, 62,245,211,188,143, 39,132,145,250,138,234,207, +178, 36,182, 81, 53, 74, 63,145,216,166, 54, 83,131,181,168,223, 12, 62, 18,131,177, 53, 36, 19, 28,202, 80, 41,151,199,232,148, +207,146,154,235,190,174, 5, 48, 5, 15, 45,207, 92, 16, 31,181, 66,173,244,245, 51,104, 74, 93, 3,252,243, 45, 15,174, 0, 0, + 54, 78,157,203,255,174,149, 11,196, 41, 44, 37, 43,248,125,126, 78,111,249,236,103,222,240,109, 35, 9,166,161,235,222, 87,194, +217,135, 60, 26,139,237,179,120,219,111,252, 20,110,255,155,191,196,249,251,239,203,154, 5,105,237,242, 52,179, 46,182, 79,174, + 56,107, 55,130, 94,176, 25,234, 34,105,105,222, 91, 60,244, 17,143,198,133,251,239,193,238,181,171,197,221,145,201,110,192,223, +191,255,175,241,132,207,249, 60,220,119,207,157,184,239,222,187,112,254,222,187,113,254,222,187,153,119,238, 74, 92,176, 21,109, + 64,202,150, 79,182, 26, 95,187,124, 9, 0,240,192, 7,223,146,207,158,141,205,173,210,196, 16,225,246, 15,254, 45, 30,247, 89, + 79,198,165,251,239,197,165, 11,247,226,226,253,119,227,234,229,243, 32, 10, 48,213, 28,196, 57,151, 3,128, 72,138, 93,215, 52, +136, 32, 28, 28, 30, 98,121,116, 13, 68, 9, 27, 59, 55,173,145,253, 31,124,203,163,176,123,237, 18, 72,138,178, 32,255,159,100, +181, 8, 3,236, 93,227,215,185,181,125, 10, 20, 9,105, 2,250,217, 2,154, 93,217, 58,139,206, 89, 52, 50,109,140,148, 16, 12, +255, 45, 4,130, 77, 73, 68, 80, 39, 14, 63, 71, 78, 84,197,172,172, 78,210,222, 84,225, 53, 8, 49, 97, 12,124,145, 53,198, 98, +209,180, 56,189,185,137,157,205, 13, 24,107,176,119,120,132, 75,187,123, 56, 88, 46, 97,189,199,230,214, 54, 12, 2, 82,140,152, +194,128, 41, 6,132,100, 48, 36,194,114, 90,225,242,165, 75,184,122,225, 10, 86,203, 21,166, 56, 33, 17,224, 93,143,249,108,134, +179,167,102,216,218,240,130, 73,180,240,221, 12,214,119,136,201, 48,219,189,181, 48,222,177, 66, 84,146,199,172,116,112,252,243, + 72,118,110, 66,142, 1, 53,164, 4, 68,139, 40,105, 80,206,250, 50,202,179, 26,185,170,222, 80,130, 73, 16,105, 67, 42, 32, 19, + 83, 82,173, 84,248,165,182, 24,235,106,206,119,144, 42,158,197,132,206, 26,120, 39, 97, 51,166, 40,237, 99, 1,213,101,139,148, +173, 18,191, 20, 7, 81, 4, 58, 44,218, 75,210, 41,132, 24, 17, 66,196,114, 8,152, 38,226,208,151,129,163,103, 65,236,107, 71, + 20,245,187,142,254,242, 1, 24,170,113, 32, 63, 19, 33,132,114, 48,166, 4, 10, 49,163, 81,213, 6,199,157,114, 44, 60,230,235, +198,125,180,230, 51, 78, 20, 51,193, 46,211,185,196,147, 94, 11,169,100, 99,125,226, 2,112,121, 62, 34,209, 61,114,233,248, 53, +184, 70,254,189,102,125, 87,107,170, 36, 43,133,128,212,135,191,145,131,218,194,220,144,156,119,221,193, 88,117,150,230,132, 32, +170, 22, 12,214,147,130, 84,167, 95,173, 29,130, 39,138, 5, 17,246,169,183, 53,166,176, 62, 90, 37,192, 36, 18,182,191,149,212, + 54, 15, 3,207, 34, 28,217,191,243, 69,235, 88,220,230, 12,218,174,195,124, 99, 7, 27, 91, 59,232,103,115,120, 81,216,155, 42, +170, 82,119,153, 92, 92, 52,112,190,205, 35, 78, 11, 57,200,124, 43,216, 89, 43,112, 14,119, 66,161,142,235,138,161, 53,116,232, +137,223, 91, 51,211,235,145,251,201,127, 62, 9,118,201,122, 20,181, 65,158,252,108,100,252, 85,255,119,133,214,118,242,243,172, +166,149,181,198, 44,131,152, 82,142,158,206,214,175,172, 19,184,126,159,205, 83, 41, 83, 68, 77,149,110, 37, 11, 76, 81,248, 5, + 68, 84,196,183, 39, 10,155,253,139,119, 97,247,194,157,120,226,115, 94,138,217,214, 77,120,240, 99,191, 0, 79,124,222,215, 86, +206, 47,131,195,107,231, 1, 0,143,121,218,139,240,192,199,124, 62,190,232,107,190, 31,219,231, 30, 94, 77, 45,234, 24,215,210, + 60,156,212,118, 28, 31,236, 1, 0, 30,242,232, 39,163,219,190, 25,255,228,197, 95, 15, 0,120,244, 19,159,148,237,134,154, 7, + 98,114,202,230, 58, 69,143,200,224,243,159,254, 44,252,222,159,253, 29,206, 62,224, 65, 25, 15,171,191,239,123,126,228, 39,241, +240, 71, 62, 26,143,123,226,231,226,203, 95,242, 13,120,203,239,188,158,133,189,149, 85,207, 72, 81,244,223, 94,251,159,241,212, +103, 60, 23,255,219,247,253, 48, 30,240,160,135,226,161,183, 60, 2, 47,120,209, 87, 97,231,244, 14,179, 20,164, 24,244,210,228, + 76, 33, 33,200,249,223,182, 13,238,186,243, 31,241,169, 79,124, 12, 47,251,214,127,131, 7, 60,248,161,120,198, 23,223,138,111, +252,246,239, 41, 42, 85, 0,111,248,249,159,192,231,126,225,179,240, 13,223,249, 74,220,116,238,193, 56,247,160,135,226,153, 47, +120, 17,102,243, 13, 52,222,231,103,179,109,123,118, 75,137,167,252,129,183, 60, 22,207,126,225,183,193,219, 22,135,135,135,176, + 22, 56,127,231,135,241,168, 39, 60, 19,103,207, 61, 28,179,249, 22,158,240,217, 79,195, 83,158,254,124,252,197, 59,223,140,198, +121,152, 16, 49, 76, 99,245,108,243, 10,245,210,133,123,112,225,190, 79,225,169,207,248, 10,108,204,119,240,168,199, 60, 25, 79, +127,230, 87,234,226, 11,173,116,235,206,154,204,252, 79, 49, 33,136,203,201,102,242, 9,140,236, 15,188, 84,227,252,137,135, 24, + 89,177, 40,153,198, 73, 2, 14, 10,204, 33,161,177, 22, 91,179, 30,219,139, 57,250,190,197, 42, 6, 92, 59, 60,192,149,253,125, +132, 56,162,237, 60,124,215, 72,180,220,192, 59, 43, 99,145, 44, 97,140, 35,246, 15,142,112,233,252, 21,236,239, 29, 34, 16,123, +249,136,120, 68,177,179,213,227,230,237, 14,157,183, 88, 69,130,157,245,240,139, 5,140,107, 96, 26,102,237, 54,206,160, 23,218, +143, 54,224, 94, 58,139,220, 61,137,207, 57,139,207,168,148,170, 4,137,230,147, 47,179,119,236, 71, 36,201,155, 54, 85, 55, 78, +178,251, 50,181,104,198,148,172, 97,165, 19, 24, 25,107,229,112,133, 84, 69,230,229,156, 55,148, 92,250, 42,211,216,105,167,110, +128,104, 74,204, 94,249,115,144, 37,247,234,217, 84,248, 71, 4,178, 96,110,156, 34, 86, 67,196, 48, 68,172, 86, 9,171,113,196, + 24,184,168,226,139, 56,112, 88, 74, 72, 72, 33,229, 75,182,190,216, 83, 12,252,251,180, 51, 38,246,125,166, 72, 72,129, 88,232, +101, 41, 91,225, 0,115,194,186,101, 50,201,170,102,228,175, 29,222, 58,118, 55,165,107, 39, 21, 55, 85,148, 59, 99, 52, 52,132, +170,221,179,126,241, 69,160,120,194,105,152,180, 19,177, 66,227,179,204, 52,213, 61,151,185, 1, 5, 78, 85,239, 53,233,236,198, +100,176,170, 1, 73, 73,214, 35,245,107, 2,200,178,134, 1,134, 64,214,102,242,156,130, 70,226,137,105, 2, 1,107, 5,246,154, +128, 43, 17,239,186, 69,134,203,155, 87, 43, 32, 37,183,134,141, 85, 10,152, 53,224, 46, 70,108,114,198,121, 88,223, 0,141,135, +109,153,147,221,246, 29,124, 35,116, 55,199,147,163,182,109,208,120,151,187,110,223,216, 76, 19,132,240,249,157,227,179,194,193, +100,129,156, 61,161,114, 47,197,212,186,198, 33,157,160, 52,166,235,168,141,159,198,118,118,226,179, 40, 76,133,180,158,178,118, +163,143, 73,159, 1,117,187,101, 8, 72,148, 34, 93,139,207, 80,249,222,169,144,223, 80, 91, 55, 77, 21, 78, 18,243, 20,192,152, +235, 19,250, 52, 98, 57,201,106, 47,174,189,214,106,162,115, 34, 65,236,228,251,161,207,194,159,255,214,171,209,111,156,194,139, +190,247,117,120,204,211, 94,136,219,111,251,189, 50, 82, 79,132,195, 75,247,226,131,239,120, 35, 30,241, 57,207,195, 23,252,243, +127,139,221, 11,159,196,135,254,228,141,213,151,162, 26, 59,215,227,120, 99, 74,136, 20,128,139,247,220,129,247,252,241, 27,241, +156,127,246, 45,248,230,239,127, 45, 94,255,179,175,193,123,255,236, 79,240,253, 63,249,139, 56,123,211,131,115, 35,147,225, 40, +149,135,154,119,239, 28, 22,211,111,108,224,225,143,122, 12,171,211, 13, 79,115, 85, 75,240,206,183,190, 9, 63,245,134, 55,227, +199, 95,247, 7,184,237,255,253, 35,252,218, 47,252,151,204,134,208, 51,214, 58,142, 20,125,223, 95,253, 5,190,243,235, 95,132, + 47,124,230,115,241,150, 63,255,123,252,218, 91,222,133, 23,126,213,215,179,133,178,241,249,247, 59,203, 44,139,152,166,156, 77, +223,181, 29, 98, 72,248,161,127,243, 10,156, 62,123, 19,222,244,167,127,135,151,188,252, 95,225,119,222,240,139,107, 43,156, 15, +189,255,175,240,191,127,219, 75,241,164, 47,120, 38,126,225,119,223,137,159,248,213,183,226,217,183,190,152,221, 97, 93,151,239, +130,144, 56, 19,133,153, 14, 9,109, 63,195, 98,243, 52, 55,171,227,136,214,123,124,236,131,127,138,243,119,253, 3,158,254, 37, + 47,195, 43,190,251,167,241,236, 47,249, 42,188,237,205,175,199,135,222,127, 27,156,117,152,166, 9,227, 48,230, 70,109, 34,194, + 20, 18,166, 49,225,191,191,241,103,208,207, 55,240,109,223,247,211,120,202,211,111,197,123,110,251, 99, 30,211,143,203,156, 52, +185,182,186,170,168,131,230,229, 95,243,124,229,145,194, 91,135,182,101, 47,169,118, 1,148,168, 92,144, 82,149,234,232,196, 59, +160,119, 22,243, 89,139,153,227, 61,247,106, 28, 48,140, 99,230,172, 55, 82, 61,241,136, 41,128,210,132,205,141, 51, 0, 5, 76, +199, 3,246,246,246,177, 18,154,206,209,225, 33,166,213, 10,105,154,224,136,176,181, 53,195,108,209,138,248,199, 1,182,145,136, +215,136,214, 54, 32, 3,236,156,218,193,230,246, 6,238,184,227,110,172,134, 9,135,171, 35, 76,203, 99,204,219, 22, 4, 96, 53, + 76, 24, 83, 68, 50, 14,141,115, 56,220, 63,148,148,157, 22,221,188,195,209,209, 17,198,101,128, 33,194,108,222,192,219, 6, 49, + 5, 44,135, 9,109,223, 35,233,135,231,121,236,184, 92,174,132,116,102, 16, 34, 48,197,136, 85,136,121, 55,231,173, 67,235,123, +248, 94,250,249, 16,176, 58, 90, 33, 37, 32,164,145,183,241,214, 2, 34, 32, 9, 32,116, 93, 7, 74,137, 71,228, 68,252,101, 64, + 9,120, 99, 26,159,218,123, 36,131,189, 42, 40,154,134, 81,167, 83, 80,110, 56, 71,100,246, 77,131,205,121,139, 83,155, 29,182, + 55,122,156, 61, 61,195,206,118,143,190,235,224, 61, 43,154,157,107,208,184,150,199,166,173,135,119,158, 65, 16, 78, 2, 91,244, +176,182, 46, 7, 54,104, 74, 26, 63, 11,158,249, 68,154,203,110,202,104,237,228, 1, 88,246, 66, 18, 3, 43, 95, 94,210,144, 28, +181, 82,230,253,171,203, 15,112, 6,246,240,147, 39, 98,187,188,112, 98,138,153,105,144, 40, 8,113,137, 95,191,117,110, 93, 64, +101,148, 83, 64,165,203,176,133,228,231, 20,234, 97,220,218,206,175, 0, 76,112, 93, 40,135,126,127,172,186, 28, 4, 88,146, 5, +124,153,166, 87, 93,114, 39,114,182, 41, 21,165,127, 14,213, 50,172, 39, 80, 17, 37,139,235, 18, 82, 50,234,219, 98, 20, 39, 81, + 94,171,104,100,105, 14,201, 38, 5,250, 68, 68, 68, 46,232,166, 9,211, 56,240,254, 55, 70,196,113,100, 39, 68,136, 72, 20, 4, +184, 34, 46, 15, 69,128,146,236,219,178,174, 35,193, 89,134,111,128, 72, 18,244, 10, 74, 85,117, 34,159,142,133,159, 82, 20,194, + 99,201,177,175, 39, 34, 39, 59,253,235,236,224,198,186,199, 0, 0, 20,185, 73, 68, 65, 84,138,159, 38, 52, 37,235, 75, 8,107, + 22, 82, 64,167, 38,234,123, 86, 49,108,172,130, 99,140,236, 96, 99, 22, 22,106,129, 91,130, 85,108, 38,102,106, 1, 33,200,153, +172, 95,176,102,189,104, 53,146,251,160,171, 51,214, 42,153, 60,153,163, 19,108,123,101,189,159, 60,184,235, 85,209,201, 81,119, + 45,152,131,193,117, 83, 32, 93, 95,105, 68,178, 70,203,162,226,206, 59,153,102, 4, 68, 76, 41, 98,127,127,137, 43,151,247,112, +254,210, 46,238,187,112, 21, 71,199, 1, 33,112,164,117, 18,215, 84,144, 44,113, 11,194, 48, 77,104,219, 22,190,113, 24,199, 9, +171,213,200,176, 41,231, 96, 45, 71,249, 26, 99,176,179,181,192,162,107,177,154, 6,132, 41,162,107, 25, 24, 19, 82,196,209,241, +128, 24,152,116,167,132,197,126,198,168,213,105,156,184,136, 74, 4,235, 60, 26,223,192, 25,131,249,162,197,230,230, 6, 92,211, + 99, 99, 62,199,185,237, 45, 32, 6, 92,219, 63,196,238,254, 1,108,107,177,181,189,133,123,239, 59,143,221,221, 61,132,192,212, +212,166,105,208,247,204,120,152,198, 17,137, 56, 77,206, 26,160,159,117, 2,178, 49,216,220,222,129, 73, 19, 30,245,152,207,192, +230,246, 38,124,235,177,177,117, 26,137, 34,174, 93,190,140,107, 87, 47,227,225,143,120, 20, 30,255,132,207,194,189,247,221,133, + 79,124,226,227,120,228,103,124, 6, 78,109,159, 66, 8, 19, 46, 94,188, 31,187,123,135,184,118, 60, 32,198,136,249,124,134,197, + 98, 3,227, 48,225,218,254, 53, 78, 22,133,224,177, 83,161,100, 58,111,185,193, 36,224, 41, 79,191, 21,207,125,254, 75,240,115, +255,249, 91, 65, 96,130,234, 56, 77,156,196, 56, 8, 37, 85,114, 88, 60,153,146, 29, 11, 65,226,145,169, 82,199,114,130,141, 97, +191, 39, 88, 44,213, 55, 14,243,190, 67,235, 29, 44, 37,172,134, 21, 66, 8, 8,148,144,172, 65,211,244, 60, 22, 8, 35, 99,244, + 92,139,190,221,192, 56, 92, 1, 82,196,234,120,194,229,139,151,113,116,120,192,248,200,196, 23, 85,227, 24,114,209,119, 22,222, + 38, 17, 56,108,194,192, 99,255,248, 16, 41, 4,204,186, 30,125,219,130, 18, 19,121, 8,149,208,167,218,173,241,104,132, 4,238, + 47, 4,172,170,186, 52,149,216,195, 66,132, 90, 38,230,212, 57, 13,117,168,129,132, 57, 97,200,249,108,183, 49, 2,142, 96, 21, +173,250, 42,157, 68,119,122, 81,236, 78,165,125,211,131, 44, 82,225, 19,203,104, 91,247,103, 86,212,238,218,185, 89,225,173,231, + 56, 74, 77,179, 50, 66,105,147, 11,137,133,103,124, 96, 69,129, 28,140, 83,131, 97,136, 56, 60, 26, 49,239, 61, 90,231, 88,201, + 31, 69, 0,105,185,136,112,106,159,113, 70, 68, 80, 38,119,199, 57,110,151, 20,147,203,196, 40,172, 41,183,145, 5, 69, 76, 75, +141,215,229,255,214,164,212, 68, 37, 13,205,230,224,244, 82, 16,100, 85,167, 8,131, 85,104,229, 52,130,149,120,252, 84, 46,195, + 28, 78, 91,172,129,149,186,222,202, 94, 57, 37,130, 35,147, 73, 97, 28, 87, 32, 64,162, 28, 94,148, 50,169,173,188,102,179,166, +174,207,227, 96, 37,232,153,178,179, 39,107,214, 73,103,154, 87,226,202, 62,213, 84,203, 72,170,214, 20, 70, 44,114, 68, 34,240, + 50,168, 8, 97, 74,230,195,122, 16,136,114,249,141,129, 33,254, 25,147,181, 5, 55,202,169, 6, 2, 97,226, 48, 23,155, 88, 31, + 79,158,199, 66,198,122, 16, 26,249, 30,200,107,119,200,252, 2,189, 24, 51,206,212,241, 84, 41, 81,125,121, 20,190,182,174,173, +244,114,173,223, 51, 47, 98, 59,157,108,213, 44,252,162,234, 94, 31, 83,223,232, 34, 95,223,225, 82, 65,174,214, 59,124, 82,215, +136,116, 52,100,242, 51,157, 47, 69,161, 34,241,115,106, 42,203,157,108,143, 21,253,106, 84, 83,162, 79, 90, 90,203,230, 6,241, + 41, 89, 10,146, 36,153,231, 76, 0, 75, 66,139, 84,129, 97, 18,206, 62, 23, 19,238, 58,241, 32,157, 96,212,103,189,129,190,183, + 21,126,216,160,232, 51, 18,174, 95, 23,145,174, 22, 44, 99,159,115, 36,180,234, 39, 82,225, 82, 12,227,132,163,227, 1,135, 71, +252,107,152,146,208,143,249,210,137, 72,176,137,119,145,214, 90,196,137,179,196,249, 71,144, 9, 95,109,134,209,116, 61,213,142, + 88, 84,194, 73,228,239, 94, 44, 81, 74, 98, 88,178, 25,219,139, 68,215,173, 36,172, 51, 25, 97,172,121,235,214, 0,129, 74, 26, +156, 58,161,120,141, 72, 37,204,230,196,218,231,164,215,159, 3,186, 90,198,184,198,129, 27, 31,239,114, 68, 47,135, 64,241,127, +211,118, 45,172, 37, 12,203, 37,156, 76,138, 33,211,181, 24, 18, 23,204, 18,183,173,175,117, 53,140, 44,148, 51, 54, 11, 92, 73, +190, 35,143,121,220,147, 48,141, 3,118,175, 93,194,153,155,206,225,233,207,254, 10,124,248,131,239, 6, 39,139, 19, 66, 96,157, + 91,140,194,218, 39,117,188, 27,120, 34, 35, 25,198, 60, 58,203, 2,174,202,239,106, 53,211, 21,132,198, 25,204,186, 22, 27,109, +131,148, 18,134,213, 50, 91,225,140,227,212, 26,238,172,132,137,155,136,115,180,157,135, 51, 30,136, 22,215, 46, 95,198,225,225, + 18,251,123,135,240, 14,204,108, 7, 97,214, 55,232, 54, 55,176,232, 45, 86,227, 17,194, 56, 96,115,243, 12,200, 54, 56, 60, 58, + 64,140,137,129, 25,179, 25,156,115,152,166,192,192, 12,199,193, 27, 44, 76, 43, 23,183, 19,188, 39, 18,119, 21, 78,172, 82,245, +151,208, 74,165,173, 29, 7, 3,208, 89,224,147,193, 33, 98,251,161, 68, 21,179,189,240,148,245, 27, 78, 68,217,237,163,157,165, + 21,174,126, 8, 50, 83, 23,209,158,142, 0,157,160, 77, 83, 8,114,121,151,117,105, 60, 33,104, 65,165,150, 45,155,175,130,157, +180, 48, 57,157, 73,211,147,166, 72, 88,141,129, 45,134,131,197,209,241,132,190,107,224,147,240,144, 67, 0, 44,224,200, 35, 4, + 11,239, 1, 99,116, 55,230,178, 90,216,218,117,242, 90,233, 52, 40, 11,180,114, 90, 31,149, 68,191,122,188,170,157,187, 38, 39, +113, 1,224,214, 53,180,242,254, 40,163, 58, 67,122,114, 40,142, 45, 24, 76, 83,162,157,172,177,217,189,129,156,252, 68,149, 26, +151,114, 80, 2, 36,252, 33,115,221,179, 42, 61,137, 91,130, 10,244, 5,213,235,160,117,146, 83, 29,167,169,128, 16, 50,149,189, + 74, 73, 88,226,112, 32, 9,171,201, 26,139,250,114,175, 60,214,150,170, 8, 78, 20,144,142,177, 0, 37, 11, 66,168,248,222,102, +205,183, 90, 11,165, 40,134, 28,165,188, 22,106, 98, 12, 91, 2,213,202, 4, 3, 68, 39,135,102,161, 75,230,203, 43, 70, 97, 65, +166, 2, 14,145,238, 95, 3, 51,235, 14, 82, 3, 98,200, 89, 32,176,181,179,230, 58,168,166,161, 8, 60,249,217, 77, 39, 45,108, +149,160,236,255,111, 20,159, 1, 71, 39, 70,215,121,212, 31, 83,245,109, 17,171,162,136, 57,141, 20,116, 42,234,226,103,197,103, + 10,162, 85, 54,121, 53,230,212, 65,128,174,138, 64, 69, 48,198, 10,250,147,221, 52, 36, 85,142,215, 64,106, 17, 45, 76, 8,197, + 28,115, 97,166, 26, 15,102,222,175, 11, 7,215,198,250,250,108,102,201,115, 37, 6, 61,177, 2, 40,200,252,130,152, 45, 59,189, +194,129, 84,126,252, 56,140, 88, 46, 7, 28,202,197, 30, 66,137, 87,205,131,123, 73,114,179, 6, 24, 19, 67,134,172, 53,124,225, + 80,170,158,221, 98, 52,208,162, 60,101,140,115, 41,202,115,108,109,206, 27,225,166,173,208,144, 69, 52, 92, 33,113,157,115, 48, +206, 51, 28, 21, 6,157,111, 74,124,181,156,139,109,211,136, 54, 40, 85, 22, 65, 20,242,159,173,146, 0,109,213, 24,138,104,147, + 82,130, 35, 96, 54,155, 9, 59, 33,102, 56,149, 34,139,187,182,197, 24, 88,183,212,183,179, 66, 16, 12,129, 5,225, 81,196,144, +114, 38,114, 86,199, 8, 77,194,208,166, 34,201,207,120,211,185,135,226,139,158,253,229,216,220, 58,133, 97,117,140,219, 63,244, + 94,188,227,109,191,205,174,151,152, 16, 66,194, 40,127, 46, 73, 50,162,206,254, 60, 4,121,234, 37,160,129, 59, 35, 81,138, 27, + 43, 66, 36,190,120,251,166,193,162,237, 96,157,193,106, 10, 24, 86, 3,156, 21,213,120,227,178, 45, 41, 6,254,192,156,179,112, +205, 12, 10, 14, 30,198, 3, 28, 29, 15,184,120,239,121,184,255,213,214,217, 37, 71,142,228, 72,216,129, 8,146,169,146,186,186, +123,108,214,108,239,127,136, 62,193,216, 92,103,119,186,164,204, 36, 25, 0,230, 1, 64, 68, 80,210, 67,155,149,117, 85,169, 36, + 50,201,192,143,187,127,235,138, 82, 92, 9,185,108, 11,214,178,224,183,245,119,188,189,110, 56, 30,255,143,199,255,157,168,219, + 11, 26, 45, 56,142, 7, 68, 61, 44,255,199,182,162, 44, 27, 0, 69, 43, 13, 84, 61, 71, 28,197,233, 90,203, 82,177,119,138, 13, + 65,169, 36, 89, 54,168, 59, 83,119,212,197,140, 20, 1, 95, 20,228,176,138,194,174, 31, 56,101,212,227, 60, 91,154, 2, 14,192, +129, 41,180,102,157, 36, 38,166, 40,170, 30,202, 65,110,117,216, 15,238,103, 16,226,192,118, 9,128,245,224, 18, 85,160,176,162, +192,208, 48, 24,234,224, 43, 11,129, 3, 42,192,209,229, 88, 28, 24,202, 4,154,188,148, 98,138,166,132,199,161,216,150,134,199, +206,120,127,156,120,125, 61,177,174, 5,197, 92, 40,215, 90,140,169, 99,180,155,251, 89, 87,243,158, 62, 3,152, 56, 0, 73, 83, +178, 65,146,112,143,111,184,203,191, 69,145,118, 15,181, 13, 44,107,242,212,193, 17,195,139,158,192,151, 15,109, 23,149,245,195, + 99, 16,240, 40,112,172,158,248,135, 0,142, 76, 12,246,232, 10,188,203,105, 51, 91,207,241,175,148,163,228,180, 35,165,128,174, +116, 53,123,186, 15, 6,100,195, 62,217,177, 34,177,157,166,221,214,148, 38,151, 41,102,185,106,228, 79,123, 76, 75,129, 37, 97, +242, 35,195,177,146,136, 20,177,238,141,227, 97,111,233, 80,152,200,181, 15,132,171,230,148,131,252,185, 68,140,114, 45,137,147, +144, 8, 5, 10, 23, 6, 23, 47, 44,137, 61,115, 90, 29,123,233,147,150,132, 72, 48,106,228, 59,120, 62, 56,245, 74,211,195,140, + 34, 65, 48, 81,181, 60,220, 28,157,146, 77, 95,199,228, 92,188, 99,225, 60,100, 52,138,197, 30,207, 28,135,254,116,248, 1,159, + 68,139,147, 91,226,115, 39, 63, 4,119,122,177,105,102,238, 3, 81,247, 54,246,162,220,177,165,220, 15,198, 62, 69,163, 49,190, +206, 91, 65, 25, 34, 25, 93, 22,115,236,150, 15,189, 6, 83,197,215, 24,242, 37, 47, 0, 53,254,178,239,143,175,110, 13,149,110, +129,185,104, 17,102,212,111,230, 65,104,215,234,122,183,158, 86,182,107,146, 28,245,194, 42, 71,219,179,169, 15, 0,132,125,245, +119, 30, 13,247,143, 29,191,126, 61,240,235,253,137,199,126, 66, 36, 19,252, 92, 85, 14, 85, 40,249,212, 79,180, 65,201, 39,162, + 91, 41,184, 31, 97,145, 69,243, 51, 36, 63,211,225, 71, 47,209,244,228,202, 13, 29, 42,227, 4, 60,233, 41,131,134,117, 93,124, +138, 97,145,226, 25,204,244, 14, 62,169,110,101,107, 32,172, 84,240,163,174, 29, 52, 35,166,254,251, 75,197,227,249,128, 54,141, +103, 93,193, 37, 24, 11, 25, 65, 77,212,215, 4,204,212,169,137,181,214,200,245,247, 36, 69, 98,160,197, 20,130, 99,146, 87,168, + 98,221,110, 56,143,134,199,227, 3,219,122,235, 46, 32,105,238, 56,106, 33,102,171,236, 12,135,125,119,140,173,193,115, 33,178, +153, 41, 4, 24, 27,254,253,175,191,240,239,127,253,117,117,133, 68, 32,132,136,225,104, 13,123,107, 80,177,142,171,229, 48, 40, + 87,168,245, 8, 77,205, 32,149,105, 31, 72,204,184,213,138,151,205,119, 15,135, 26,246,247, 59, 90, 19,135,209, 47,236,223, 40, + 1,123, 59, 32, 49, 82,113,193, 76,180,173, 77,208,142, 29,143,251, 3,239,255,249, 27,199,121,199,219,203, 11, 42, 23,220,182, + 5,191,253,252,137,219,219, 43,222, 94,111, 56,218, 59,158, 7,135, 16,103,129,178,251,104,215,117,117, 49,210, 82, 34,114,178, +160,218, 75,128,233,151,174, 88, 6,151, 56, 40, 25, 92, 43,112,138,123,216,227,129,236, 2,140, 28, 39, 70,140, 33,193,253,250, + 14,175, 58,221,243,190, 84,239, 79,204,147,219, 52,186, 61, 85,235, 25, 19, 20, 25,221, 48,237,188,104, 7, 26,132, 21,133, 9, +117, 89, 1,122,130, 72, 47,188,229, 92, 9,171,186,170, 62,223,211,133, 10,242,163, 13,178, 47,138,218, 94,201,134,152, 44,135, + 12,212, 83,210,226,251, 60, 13, 18, 68,188,231,193,168, 85,176,237, 39,238,143, 3, 47,183, 13,181, 12,190,188, 74, 67, 33,130, + 50,112,180, 36,112, 69,238,123, 86,189,113,208,149, 62,178,140,151, 19,208,247,186,156, 97, 42, 81,121,246,241, 30,212, 89, 2, +106,160, 34, 93,101,220,105,109,134,111, 83,220,124,127,102, 83, 82,150,117, 96, 70,102,165,251,191,207, 32,246, 61,114, 58, 22, +230,241, 90, 73,188, 48, 39, 73,202,199,196, 74,209, 65,105,198,216, 74, 92,195,236, 82, 39, 12,225, 52, 59,201,172,231,180,215, + 93,173, 87,248,116,152,240,244,189,135,159, 87,245,130,240, 21, 75,138, 84,116,252, 61, 76,162,244,189,190,153,116,160,195, 64, + 80, 78, 28,249, 72,171, 99, 34,104,104, 25, 56,126,207, 71,157,181,239,134, 53,198,168,158,102,154,157,188,139, 96, 11, 5, 36, + 67,100, 80,203, 84, 61,202,212,232, 83,199,168, 35,214,117, 66, 27,119,209, 88, 69,239, 10,231,188,243,121,207,126, 25,169,218, + 24,215,102, 72, 83,148,203,177,157, 41,221, 65, 66,145,205,224, 93,157,125,217,203,127, 22, 31,114, 47, 58, 8,198, 22,200,233, +188, 79,165, 63,159, 10, 23,127, 26, 8,210, 50, 72, 72, 64, 38, 61, 32, 40,237,165,196,163, 49,232,148,186, 79,182, 77,255,238, + 5,106,252, 69,205,158,215,212,136,252, 93, 51,173, 25,232,147,229,242,243,117,227, 24, 60,245,125, 58,141,113,255,117,146,193, + 93,156, 75, 23,108,201,117,234,161,145,185,127,127,238,120,127,236,248,117,127,226,227,254,196, 33, 2,179,214, 11,131,211, 12, +224,130,133, 13,133,128, 93, 21, 86,128, 82, 9, 77, 13,162,103,136, 61,227,186,112,233,158,254,101,241,116,195,243,244, 53,103, +141,244, 71,233,163,245,156,196,121,116, 55,151,130,227, 56, 70,208, 21,114,224, 73, 40,181,118, 0, 12, 68,240,178,222, 80,202, + 2,177,195, 87, 84, 34,222, 48,222, 86,188,127,124,196,132, 36, 68,204, 83,202,165, 70, 97,220, 53, 12, 57, 42,101,111, 98, 90, + 19,215, 12, 69,184,144, 30, 54,166,122,230, 16,154,109, 91,177,239,187, 55,186,111, 53,186,254,130,163, 9,246, 38,104,162, 17, + 45,189,248, 20,251, 56, 34,141,149,251, 36,131, 45,182, 23, 65,129,156, 29, 50, 94,145, 83, 76,113, 60,163, 68,196,153,235,126, + 13, 66,171,101, 64, 85, 17, 23, 49, 4, 39, 88, 99,175,107,102,193, 37, 95,240,163,250,254,235, 99,127,226,104, 2,131, 96,169, +174, 58,135,133,218,186,197, 94,182,174,254, 65, 20, 5,164,161,105,131,180, 19,231,115,199,254, 60, 60,244,254,182,130, 8,120, +253,249,134,223,254,248,137,223,255,248, 29,219, 90, 61, 87,249,136, 49, 80,169, 88,215, 23,240, 82, 81,150, 10, 57, 20,231,121, + 56,150, 50,197, 90,203, 10,170,165,211,121,206,122, 66,141,125,239, 64, 64,217, 10,240,244, 23,213,226, 74,141, 20,239,118,207, +121,153, 49,140, 0, 26, 8,135,156, 88,203,138, 98, 4, 38,141,125, 35,161,105,252,253, 56,192,136, 25, 5, 65, 35,106,205, 71, + 61,219,234,251,161, 22,195, 74, 83,212, 90,194, 51,207,240,136,144,156, 28,211, 24,141, 98,130,135,208, 36,248, 25, 89, 34,163, +187,163,129,188,205,221,147, 23, 5, 12,152,204,113,226, 16, 49, 8, 43,142,230,246,195,125, 55,220, 31,130,215,219,129,165, 16, + 42,209, 8, 31, 82,198, 34,236,157,156, 54,175, 57, 74,241,105,141,249,215, 70,210,254,120,236, 73,189,107,207,129,160,142, 32, + 29,162, 80,171,115,223, 79, 91, 80,232, 48, 65, 57,136,180, 67, 79,134,160, 39,253,215,158,248, 7,154, 20,244, 52, 70,121, 41, + 78, 67,190,152, 75,137,235,115,245,139, 11,220, 95,204,198, 83, 65,145, 88,214,208, 41,164, 62,160,112,228, 13,132,205, 14,152, + 84,253, 58,133,151,232,183,190,245, 76, 42,251,156, 62,151,147, 5, 88, 68,190,134,149, 73, 48,244, 43,131, 37, 94,195,178,199, + 96,182,216,185,122,135, 82,234,128,153,152,153, 31, 80,102, 48,153,119,203,126,208,149,220,179, 79,135,157, 98,236,255,109,142, +204,229,226,206,144,233,222, 58,140,201,119,224, 34, 45,246,235, 17,148, 17, 80, 28,228, 14, 55,178,191, 44,166, 38, 84, 70, 72, +145, 23,133,137,207,180,152,104,216, 37, 19,130,248,170,154,239,120,210,153,128, 24,208,164,204,143,176,192, 61,115,184, 0, 12, +246, 45, 7, 32,211,206, 75,117,172,109,174,104,116,138, 45, 51,137,128,167,146, 84, 50, 29,164,190,148,113, 76,209,165,152,133, +144, 74,144, 8,143, 49, 30, 63, 23,193, 65, 48,158,125,174,151,224,149,156,166,113,175, 14,198,215,247, 61,241, 87,223,119, 18, + 5,115, 90,133, 75, 84,245,119,126,126,158, 16,199, 35, 87,195,166, 92,218,196,203,170, 2,103, 83,220, 31, 39,222,223, 15,188, +127,236,120, 28,103,136, 37,253, 90,139, 26,208, 0, 98, 69, 45, 43,154,181, 32, 87, 18,106,241,213,129, 68,136, 21, 37, 27, 62, +154, 37,103, 47,240, 52, 34, 24,185, 2, 46, 36,164, 17,147, 28,222,117,170,190,107, 79, 42, 89,215,219,128,130,129, 16, 94,124, + 37,172,235, 2,131,196, 57, 6, 40, 9,182,178,130,137,112,180, 51, 72,109,220, 93, 50,184,132,128,161,187,136,208,181, 49, 20, +194, 84,233, 83,101, 3, 3,146,182, 89,191,138,219,143, 87, 80, 41,120,124,236,174, 85,130,130, 23,194,113, 42,142,125, 71,107, +242,137,101, 32,176,214, 2,124, 54,246,139,158,232, 25,110,168,224, 83,228, 57, 69, 42,145,177,233,197, 74, 90,176,105,178,132, + 18,121, 67, 91, 29, 76,224, 0,249, 6, 65, 5, 99,227,130,151,101, 65, 93, 60,138,243, 63,207,167,239,152,226,126, 44,133,177, + 70, 66,149,168, 64, 11, 67, 74,167, 19,192, 90, 67, 59, 5,164, 2,134,132,104,203, 1, 21,117, 91,177,217, 13,101, 49,252,241, +207, 63,241,251, 31,127,226,118,187,193,180,225,216, 21,173, 1,135, 24,164, 84, 44, 47, 47, 88,214, 13, 12,194, 67,119,127,105, +149, 5, 90,185, 35, 20, 77,189, 19,174,213, 71,221, 62,238,241,135,114,140,174,232,107,220,103, 79, 35, 27,244, 53,181,200, 81, + 39,194,169,138, 26,251,112, 85,129,178, 57,171, 3,132, 66,215, 66,192,163, 39,253, 97,221,234, 6,102,198, 71,123, 7,169, 0, + 92, 71,209,113,182, 62, 34, 73,241,147, 37,206, 53, 20,224,233, 57,231, 68,179, 98,234,196,227, 5,201,125,175, 76, 17,222, 16, +145,161,230, 34,183,124, 97, 22,206,113,141,224,104, 26,185, 2, 13,207,157,241,124,158,216,182, 10, 46, 26, 48, 30,134,168,248, + 8, 74,201, 17,172, 16,103,184, 43,129,217, 15,118, 19,241,240,136, 4,208, 36, 3,157, 57,152, 1,234,190,101,226, 73, 40, 54, +119, 25, 9, 18,196, 36, 20,163, 41,217, 41, 4, 57, 60,186,218,188,182, 61,217, 79, 37, 40,107, 60,249,126,237, 58,198,142,132, +174, 81, 56,240,183,182,180,194, 52,189, 99,226, 80,233,251,254,241, 2,207, 4, 45, 31,205, 79,162, 48,179, 47, 59, 76, 34,124, +107,237,235, 72,199,220,185, 50,141, 20,194,238, 81,214,169,136, 40, 35,221, 43,175, 95, 23, 90, 22,207,228,215, 12,220, 81,180, +176,153,114, 97,180,136,159, 52,230,206,119,207, 3, 63,177,147, 68, 10, 81,153,198,225, 37,240,192,177,111,132,196, 65,208,226, +179, 24, 33, 63, 29, 60, 19, 83,131, 82,188, 48,148,214, 99,112, 17,130,196, 11,122, 52,160, 80, 58, 81,187,122,198,251,236, 95, + 79,106, 97,138, 62,109,232, 25,250,100, 41,138,187,196,137,150,201,183,223,221, 6, 29,206, 19,135,201, 52, 98, 71,199, 32,167, +248,208, 15,149,252, 60,137, 72,188, 63, 98,223,101,185,174, 9, 44,175, 14, 59,105,135,252, 4,212,135,212,109, 88,221,230, 54, +225,119,241,197,199,237,107, 62, 14, 77,140,198, 97,209,133,145,243,218,194, 38, 58,224, 28, 5, 11, 30, 98,214,139,134, 37,139, + 85,238, 16,171, 57,205, 78, 97, 83,220,129, 64,245,196,243,249,196,199,251, 19,191,222, 31,184, 63, 14,156, 77,167, 66, 43,214, + 83,166,190,178, 49, 7, 72, 33,181, 60, 68,145,248,103,157,243,192, 97, 15,205, 61,120, 45,124, 33, 84,114,113,250,156, 73, 67, +154, 62,114, 76,181, 44, 11, 32,128, 74,235,255, 47,181, 67,149, 24,235, 82,163, 72,244,132,181,117, 41, 99,169,101,134, 82, 23, + 44,107,245, 3,189,233,104, 58,250,179, 53, 66,134,250,173, 73, 91, 45, 83, 56,126, 98,183, 31,244, 82, 37,128, 23,246,159, 63, +174,243,207,183, 55,112, 41,120, 62,239, 17,200,229, 41,144, 34, 59,246, 99,199,105,209,240, 22, 95, 93,138, 10,154, 74,127,235, +177, 13, 6, 72,166, 72, 22,248,159, 85, 9,177, 54, 57,228, 74,213,247,233,102,131,107,225, 34,241,177,208,227, 18,122, 35,152, +143, 85,127,108, 55,220,110, 43,192,140,231,113,224,253,126,199,126,182, 62,120,244,221,187,119, 98, 77, 37,170,126,247,100,171, + 24,246,251, 19,207,231, 30, 49,178, 14,123, 16,113,235, 13, 10, 97,251,241, 3,255,248,159,255,197,126, 54,252,252,243, 13,219, +143, 23, 87,129,198,192, 89, 34, 16,101, 89,111,216,222, 94,177,221,110,142, 30, 12,123,210,178, 84, 87,148,151,130, 90,151, 14, +138,168,225,173,231, 57, 49, 34,110,208,136, 78, 28, 35, 61, 36, 20, 36, 97, 28, 19, 13,200,149,146,254, 33,168,181,160, 44,117, + 84,181,166, 99, 23, 62,179,108, 99, 52, 93, 11, 97, 91, 23, 48, 49, 68,206,254,128, 46,203,218,177,171,246,169,226, 79, 69,102, + 2, 71, 44, 42,218,220, 53,118, 53,104, 22,145,121,216,147, 97, 90,243,197,152,209, 15, 97,183, 61,161, 87,118,173, 53, 28,231, +137,179,163, 89, 15,156,167,223,195,158, 57,175,158,149,172,131,150,226, 99, 32,139,226,109, 82, 4,107,216,165,242, 32,154, 41, + 43,157,190,214,175,179,126, 17, 55,125,206,252, 22,209, 47, 10,231,209,225,206, 73,119,218, 29, 59,170,218, 59, 45,149,152, 0, + 36,159, 96, 38,121, 1, 23,190,244, 72,221,116,143,177,246,196,167,145,229,157, 99,106,179, 1,239,193, 20, 51,154,157,178, 31, + 64,246,109, 82,218,176, 74, 77, 73,102, 70,211, 62, 29, 87, 1,217, 5,240, 97, 19, 94, 52, 69, 61, 17,233,153,105, 89,185,254, + 97,223,255,113,164,228,169,105,143, 74,189,238,149,109,250,249,228, 42, 64,163, 97,133, 34, 46,253,185,154,199,233, 57,153,224, + 72, 74,164, 46, 76,211, 81,152,230,227, 23, 19, 25,127, 41,101, 71, 54,127, 22,174, 89,252,179, 91, 33,133,118, 72, 27,159, 98, +160, 76,117, 36,103,229,139,190,135, 48,229,127, 19,200, 37, 67, 9, 47, 84,193, 16, 7, 39,103,193,139, 21,239, 62,115,202,210, +199,230,169,154, 87,111, 32,114,208,238,100, 66,185, 36, 49,186,224,138,134,150, 32,138, 44, 73,188,238, 20, 73,106,225,246,233, +125,162,141, 84,193, 47,246,203,217, 18,154, 34,102, 78,199, 15,127, 10,118,250,164,233,179,152,158,128,191, 9,198,153, 62,135, +106,190, 75,127,223,241,247,175, 59,254,254,245,192,243,233, 59,219,110,221,211, 76,104, 51,212,194,177,235,166,176,209,186,208, +210, 15,117, 30, 42,135, 32, 41, 90,144, 46,107, 41,113, 45, 16,191,230, 75,112,143,230,174,156, 8,203,178,198, 61, 26,176,155, + 20,197,114,224,192, 65, 6, 17,195,194,140,109, 89,134, 16, 25, 30, 87,206,196, 16,179,128,129,201, 39,161, 37,245, 48, 37, 34, + 23, 77,115,164, 4,142,181,147,223,251,101, 45,158,143, 1, 96,169, 91, 20,109,190,203,190,189,188, 64,196,109,162,173,157, 61, +232,232,148, 19, 71,172,164, 13, 22,186,165,224, 88, 92,110, 64, 52, 35,240,208,161, 49, 9,141,224,177, 30,119,142, 30, 23,157, +223,223, 82, 11,146,187,231,130,111,197,127, 1, 99,173, 92,242, 48,148, 43, 5, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, }; - -- cgit v1.2.3 From cb51710f25fe6736328d6a1b5c1cfccbfd7e567c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 14:58:27 +0000 Subject: pose_bone attributes, children, children_recursive, parent_recursive & parent_index() function. --- release/scripts/modules/bpy_types.py | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 70fecec0235..221e4d29ae8 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -42,6 +42,58 @@ class Object(bpy_types.ID): children = property(_get_children) +class PoseBone(StructRNA): + + def _get_children(self): + import bpy + obj = self.id_data + return [child for child in obj.pose.bones if child.parent == self] + + children = property(_get_children) + + def _get_parent_recursive(self): + parent_list = [] + parent = self.parent + + while parent: + if parent: + parent_list.append(parent) + + parent = parent.parent + + return parent_list + + parent_recursive = property(_get_parent_recursive) + + def parent_index(self, parent_test): + ''' + The same as 'bone in other_bone.parent_recursive' but saved generating a list. + ''' + parent = self.parent + i = 1 + while parent: + if parent == parent_test: + return i + parent = parent.parent + i += 1 + + return 0 + + def _get_children_recursive(self): + obj = self.id_data + bones_children = [] + for bone in obj.pose.bones: + index = bone.parent_index(self) + if index: + bones_children.append((index, bone)) + + # sort by distance to parent + bones_children.sort(key=lambda bone_pair: bone_pair[0]) + return [bone for index, bone in bones_children] + + children_recursive = property(_get_children_recursive) + + def ord_ind(i1,i2): if i1 Date: Mon, 23 Nov 2009 14:59:39 +0000 Subject: Replaced the blender.html file with a new readme.html The old file was very outdated, messy and included lots of excess information. The new one is more specific to Blender 2.5 and is more concise, to the point. Additionally this should mean we can avoid having a release_250.txt file in addition to this, to help clean up the install folder. --- release/text/blender.html | 558 ---------------------------------------------- release/text/readme.html | 73 ++++++ 2 files changed, 73 insertions(+), 558 deletions(-) delete mode 100644 release/text/blender.html create mode 100644 release/text/readme.html diff --git a/release/text/blender.html b/release/text/blender.html deleted file mode 100644 index fa4ddc916f0..00000000000 --- a/release/text/blender.html +++ /dev/null @@ -1,558 +0,0 @@ - - - - - A brief introduction to Blender - - - - - -

Blender v2.5 alpha 0

-



-

-
    -
  1. About - -

    -
  2. Package - Contents and Install -

    -
  3. Getting - Started: -

    -
      -
    1. Running - -

      -
    2. First - steps, The 3d View -

      -
    -
  4. Resources - -

    -
  5. Troubleshooting - -

    -
  6. (FAQ) A few remarks -

    -
-

1. About

-

Welcome to the world of Blender! -The program you have now in your hands is a free and fully functional -3d modeling, animation, rendering, compositing, video editing and -game creation suite. It is available for Unix-based (Linux, Mac OS X, -etc.) and Windows systems and has a large world-wide community.

-

Blender is free to be applied for any purpose, -including commercial usage and distribution. It's free and -open-source software, released under the GNU GPL licence. The full -program sources are available on our website.

-

For impatient readers, here the two most important -links:

-

www.blender.org -the main website
wiki.blender.org -the documentation website

-

back to top

-

2. Package Contents and Install

-

This is what you should get from a downloaded Blender -package:

-
    -
  • The Blender program - for some specific platform; -

    -
  • This text, with links - and the copyright notice; -

    -
  • A basic set of scripts, including importers and - exporters to other 3d formats. -

    -
-

The latest version for all supported platforms can -always be found at the main Blender site, along with documentation, -sample .blend files, many scripts, plugins and more.

-

If you are interested in the development of the -program, information for coders and the SVN repository with the -sources can be found at the developer's -section of the site.

-

Installation notes:

-

Installing is mostly a matter of executing a -self-installer package or unpacking it to some folder. Blender has a -minimum of system dependencies (like OpenGL and SDL), and doesn't -install by overwriting libraries in your system. There are also some -extra files needed for a good install, like standard python scripts, -but these are optional. Typically these will go to your -HOME/.blender/ directory. Below you find instructions for it per OS. -

-

Windows: The .zip download has a .blender -directory included, which can be manually copied.
Also note that -Blender comes with some dll files, which have to reside next to -blender.exe.

-

Linux, FreeBSD, Irix, Solaris: after unpacking -the distribution, you can copy the .blender directory from it to your -home directory. -

-

OSX: the .blender directory is in -Blender.app/Contents/Resources/. This is being located by default. If -you like to alter some of the files, copy this directory to your home -dir.

-

Other settings:
There are many paths you -can set in Blender itself, to tell it where to look for your -collections of texture and sound files, fonts, plugins and additional -scripts, besides where it should save rendered images, temporary -data, etc. If you're only starting, there's no need to worry about -this now. -

-

Python:
Blender 2.5x use Python 3.1 as -scripting language for im/exporters, UI buttons layout and other -areas like presets. On Windows, Python 3.1 is included in the zip -package from blender.org. -

-

On other platforms Python is usually a standard -component nowadays, so unless there's a version mismatch or an -incomplete Python installation, there should be no problems.

-

Even if you do have the right version of Python -installed you may need to tell the embedded Python interpreter where -the installation is. To do that it's enough to set a system variable -called PYTHON to the full path to the stand-alone Python executable -(to find out execute "import sys; print (sys.executable)" -inside the stand-alone interpreter, not in Blender). In Blender 2.5 -alpha 0, Python 3.1 is linked to your Blender binary, so you have -to use a Python 3.1.x version. -

-

back to top

-

3. Getting Started

-

Blender's main strength is at modeling, animating and -rendering 3d scenes, from simple cubes and monkey heads to the -complex environments found in videogames and movies with computer -graphics (CG) art.

-

Rendering is -the process of generating 2d images from 3d data (basically lit 3d -models) as if viewed by a virtual camera. In simple terms, rendering -is like taking a picture of the scene, but with many more ways to -influence the results. Blender comes with a very flexible renderer -and a Povray Render Exporter script. By animating -the data and rendering pictures of each successive -frame, movie sequences can be created.

-

In compositing -a set of techniques is used to add effects to -rendered images and combine these into a single frame. This is how, -for example, artists add laser beams, glows and dinosaurs to motion -pictures. Blender also has builtin support for video sequence editing -and sound synchronization.

-

The game -engine inside Blender lets users -create and play nifty 3d games, complete with 3d graphics, sound, -physics and scripted rules. -

-

Via scripting -the program's functionality can be automated and -extended in real-time with important new capabilities. True -displacement mapping, for example, is now part of the core program, -but before that it was already possible using scripts. Since they are -written in a nice higher-level programming language -- Python -in our case -- development is considerably faster and easier than -normal C/C++ coding. Naturally, they run slower than compiled code, -but still fast enough for many -purposes or for mixed approaches like some plugins -use.

-

Running:

-

Depending on your platform, the installation may have -put an icon on your desktop and a menu entry for Blender. If not, -it's not hard to do that yourself for your favorite window manager.

-

But for more flexibility, you can execute Blender -from a shell window or command-line prompt. Try "blender -h" -to see all available options.

-

Blender saves data in its own custom binary -format, using ".blend" as extension. The default start-up -configuration is saved in a file in your home directory called -.B.blend. To save your changes to it, click on File->User -Preferences->Save as Default or -use the Control+U shortcut directly.

-

First steps:

-

This is the point where we stop and warn -newcomers that 3d Computer Graphics is a vast field and Blender has a -lot of packed functionality. If you already tried to run it and fell -victim to the "too many buttons!" syndrome, just relax and -read this part of the F.A.Q. -

-

Hoping the explanations helped, let's start -Blender and take a look at it. At the top header you can see the main -menu. Under "File" you'll find entries to save, load and -quit. If someone ever -messes with your workspace and you can't find your way around: use -the menu File->New.

-

Blender's screen is divided in "areas". -Each of them has a top or bottom header and can show any of the -available built in applications (called "spaces", like the -3d View, the Text Editor, etc). If you started with a default -configuration, there should now be five areas: -

-
    -
  • A thin strip at the - top where you can see the main menus and some important basic - functions like search and the new Engine drop down menu; -

    -
  • On the left:

    -
      -
    • A big one, the - 3d View, - where you model and preview your scenes and the new toolbar on the - left; -

      -
    • A smaller one at the bottom, the - Timeline, - where you can playback your animations and change basic animation - settings.

      -
    -
  • On the right:

    -
      -
    • A small one on top, - the Outliner, which gives you access over your objects and - it's underlying data.

      -
    • Beneath that, the - Properties Window, which contains most buttons and settings. -

      -
    -
-

These are the five most important spaces, at least -when you are starting. At the left corner of each header you can find -the "Window Types" button, which is like the "Start" -buttom of many desktop environments. Clicking on it lets you change -what is shown in that area.

-

Highly configurable workspace

-

Blender's interface has been considerably improved -for the 2.5x series. Besides the goals of exposing functionality via -menus and adding tooltips for all buttons, there are even more ways -now to change your workspace.

-

Editor areas can be split and joined with the new -window split action zone. Dragging the zone inside the editor area -with LMB interactively splits a new window in between, dragging the -zone into another editor area joins it. Alt-LMB dragging the zone -swaps the area with another. -

-

There should be a button with "Default" in -the top header. It has some preset workspaces that can be tried now -for a tour of the possibilities. When you change your current setup -to something worth keeping, that same button has the option to save -the new screen.

-

The User Preferences space has many options there -that you may want to tweak, like turning button tooltips on/off, -setting paths, etc. Just remember to save your configuration if you -want to keep it for the next session). Since these preferences are -not saved in regular .blend files, the presets will retain working -even when loading files from others. Note however, that the -arrangement of the UI itself - its screens and windows - are always -saved in each file. -

-

The 3d View:

-

Mouse buttons and the toolbox

-

Pressing Shift+A while the mouse pointer is inside a -3d View space will open up the Add menu, where you can add new -objects to your scene.

-

This is how the mouse buttons work in this space: -

-
    -
  • Left button: anchor - the 3d cursor in a new location -- it defines where your next added - object will appear, among other things. -

    -
  • Right button: - selection. If you hold it and move, you can move the selected item - around. -

    -
  • Middle button: 3d space rotation or translation - -- choose which one in one of the User Preferences tabs. -

    -
-

Combinations of mouse buttons and Shift or Control -will give you additional options like zooming, panning and restricted -movement. 3d scenes can be seen from any position and orientation, -but there are some default ones you can reach with Numpad buttons or -the "View" menu in the 3d View's header.

-

Edit Mode

-

When you want to edit the vertices of a mesh, for -example, it's necessary to select the object and enter "Edit -Mode", either using the 3d View header "Mode" button -or by pressing TAB on your keyboard (press it again to return to -object mode).

-

And this was only the beginning ...

-

The above guidelines should have given new users -enough to start playing with the interface. The next section lists -online references that can actually teach about 3d and this program, -but it's a good idea to spend some time just playing with Blender, -looking at menus and finding what mouse actions do in each space.

-

back to top

-

4. Resources

- -

This short presentation is meant to guide -newcomers to Blender through their very -first steps, giving directions to -where you can find the resources you will need. We can't teach you 3d -in these few lines of text, that would take a lengthy book.

-

IRC users are invited to try #blenderchat or #blender -on irc.freenode.net .

-

There are also local Blender community sites in some -countries, that should be listed at the Community section of the main -site.

-

If you are a coder wanting to get in touch with -Blender development, a good read is the "Get Involved" page -at www.blender.org. -A good way to start is to follow the mailing lists for a while and -check bug reports, to see if you can fix one. On irc.freenode.net: -#blendercoders you'll find many active developers, here also the -weekly meetings take place.

-

Other useful links

-

In the realm of open-source cg programs, it's a -pleasure to mention other great projects that can help you achieve -your visions. Note that these programs are completely independent -from Blender and have their own sites, documentation and support -channels. Note also that this list is not complete and should be -updated on future versions of this text.

-
-
The Gimp -
- The mighty GNU Image Manipulation Program. In 3d work it is a - valuable resource to create, convert and, of course, manipulate - texture images. It is also useful for work with rendered pictures, - for example to add 2d text, logos or to touch-up, apply factory or - hand-made effects and compose with other images. -
-

-Renderers:

-
-
Povray -
- One of the best and most popular renderers in the world. There is a - script to export Blender scenes to be rendered with it, delivered - with 2.5. -
- Renderman-compliant: - open-source: Aqsis, Pixie. - Closed-source: 3delight. -
- The Renderman spec was created by Pixar years ago - to define both a standard and powerful representation of 3d data for - renderers and the expected quality of the renderization itself. - Think about 3d art from some movie -- it was much probably created - by Pixar's own Photorealistic Renderman (PRMan) renderer. This is a - good site to learn more: The - Renderman Academy. Neither Pixar nor its products are affiliated - with Blender. -
-

-back to top

-

5. Troubleshooting

-

If something isn't working, please read this entire -section before looking for help.

- -

General start-up and usage -problems

-

If the program crashes or something isn't -working properly, try running Blender in debug -mode: execute it as "blender --d" from a command prompt. This might give some info about what -is wrong. There are also other options that might be useful, "blender --h" lists all of them.
Most likely an immediate crash is due -to Blender's need for a compliant and stable working OpenGL.

-

Video card blues

-

Although OpenGL is cherished as an excellent cross -platform library, the enormous growth of different 3d cards have made -this a complicated affair for Blender. Unlike other programs - or 3d -games - Blender utilizes OpenGL for its entire GUI, including buttons -and pulldown menus. That means also the 2D options for OpenGL should -work good, something easily ignored or badly tested by 3d card -manufacturers, who target more at the latest SFX features for new 3d -games.
In general Blender performs very well on 3d cards from -renowned brands, such as NVIDIA, ATI or 3dLabs.

-

Scripts

-

To be sure that some functionality is scripted: -all scripts in Blender can be accessed from the "Scripts" -menu in the Scripts Window's header, even if the same functionality -is also in another menu somewhere. If you see an entry in one of the -submenus there, it refers to a script. Please don't report problems -with scripts to the bug tracker or other normal Blender channels. You -should find the author's site or contact email in the script's text -itself, but usually the Python & Plugins forum at -Blenderartists.org is -used for posting announcements, questions, suggestions and bug -reports related to scripts. It's the recommended place to look first, -specially if no site was specified at the script's window or source -file(s).

-

If some or all scripts that should appear in -menus are not there, running Blender in debug -mode can possibly inform what is wrong. Make sure the reported -dir(s) really exist.

-

The Bug Tracker

-

If you really think you found a new bug in -Blender, check the Bug Tracker entries at the -projects site and if it was not reported yet, please log in (or -register) and fill in detailed information about the error. A small -.blend file or script (if it is a problem with the Blender Python -API) showcasing the bug can help a lot.

-

back to top

-

6. (FAQ) A few remarks

-
    -
  1. Quick - tips. -

    -
  2. What's - up with the interface? -

    -
  3. How - good is Blender? How does it compare to other 3d programs? -

    -
  4. Something doesn't work, - what do I do? -

    -
-

Quick tips:

-

Rendering: -to see something when you render (F12) an image, make sure the scene -has a camera pointing at your models (camera view is NumPad 0) and at -least one light properly placed. Otherwise you'll only get a black -rectangle.

-

Setting texture map input to "uv" in the -Material Buttons window is not enough to assign a texture image and -uv data to a mesh. It's necessary to select the mesh, enter edit -mode, indicate face selection mode (modes can be accessed in the 3d -view's header), load an image in the UV/Image Editor window and then -define a mapping (or unwrapping). Only then the mesh will have uv -data available for exporting.

-

If you want the fastest possible access to -Blender's functionality, remember what a wise -power user wrote: "keep one -hand on the keyboard and the other on the mouse". Learn and use -the shortcuts, configure your workspace to your needs.

-

What's up with the interface?

-

Blender uses a couple of innovative paradigms in the -UI, not following more common, somewhat standard rules for user -interfaces. In the past years several of our interface concepts have -been adopted in more programs though, especially using a configurable -non-overlapping subdivision layout and the paradigm to never block -the UI from working by offering all editors and options in parallel. -
Typically free programs offer easy-to-use interfaces for large -audiences. Blender however is, like other high-end 3d tools, meant to -be a powerful production tool for professionals and 3d enthusiasts, -for people who are dedicated to become 3d artists with enough time -and motivation to master the software.
This also has its origins -in the 90ies, when Blender was born as an in-house studio tool, -optimized to speed up daily heavy work, and not to please everyone. -But it's true that you can consider Blender's interface to be not -very newbie-friendly. Luckily you only have to learn it once, and -once you get the basics it'll feel like 2nd nature!

-

Blender also has been considerably improved since the -2.3x series, exposing most functionality via menus, adding panels, -color "themability", tooltips for all buttons and -internationalization support. This is an ongoing effort or, better, a -goal to keep the best ideas in Blender's design while expanding and -making it more user-friendly.

-

Too many buttons!

-

Again, 3d Computer Graphics is a vast and fun -field. If you're only starting, Blender can seem daunting, specially -because of all its packed functionality. Don't let that upset you, -there is no need to care about all -those buttons right now -- or ever.

-

There are basic things all users should learn early -up:

-
    -
  • Start the program and - access the main menus; -

    -
  • Find and configure - user preferences; -

    -
  • Basic scene set-up: - how to add and transform (move, scale, rotate) lights, cameras and - objects; -

    -
  • Create and link - materials to objects, at least to color them; -

    -
  • Render your scenes. -

    -
-

One hour is enough time to assimilate and practice -that before going on with basic mesh editing and texturing, for -example. There are many different areas to learn about. Taste, -interaction with other users and your main interests (game art, -rendered stills, movies) will guide you and define the skills you'll -want to master. Then it goes like a spiral: practice something for a -while, study and find about new tricks or whole new areas, practice a -little more and so on. Soon you'll become pleased to have all those -buttons to play with. A few more months and you'll probably be back -asking for more ... -

-

How good is Blender?

-

If you ever get the impression that it's not possible -to create great looking or complex works with Blender, rejoice -- you -are just plainly uninformed, as browsing blender.org galleries and -community forums can easily confirm.

-

How does it compare to other 3d programs?

-

In short: it takes considerable dedication to become -good, no matter which program you work with, as long as it is good -enough not to get in your way. Blender has, like the others, its -strong and weak points.

-

Compared to commercial alternatives, Blender misses -some features and isn't as "newbie-friendly". It doesn't -come packed with "one-click" or "wizard" -functionality, where you get much faster results in detriment of -flexibility and value. It also isn't bundled with tens of megabytes -of sample models, texture images, tutorials, etc. (which only partly -explains how Blender can fit in such a small download).

-

Thankfully, these are relatively minor -shortcomings. Many of Blender's modeling, animation and -rendering/compositing features are up-to-par with the industry -standards. The pace at which features are being added or polished in -Blender is impressive, now that it's a well stablished open source -project. We get daily feedback from professionals and studios using -Blender, and results from the Blender Foundation's Open Movie/Game -projects such as Big Buck -Bunny and Yo Frankie! -have set a reference standard for what a program like Blender can -achieve. More: through plugins and scripting, many repetitive or -otherwise cumbersome tasks can be made trivial. But plugin and script -authors go further, teaching Blender new tricks, from importers and -exporters to more advanced "applications".

-

About goodies, there are many places where you -can get them (check resources). Besides the -many available Blender books, the main site and blenderartists.org -are the best ones to start. For free texture images, a simple search -for "free textures" should bring many results, just pay -attention to their licenses if you plan to release your work later.

-

Commercial packages might make it easier for newbies -to produce nice looking material, but only another newbie would -praise the results. There's a huge difference between what a skilled -artist and someone poking at buttons and using presets can -accomplish.

-

Last but best of all: Blender is open-source, free -for all to use, study and improve.

-
-

Thanks for reading, we hope you enjoy Blender!

-

Document version 1.2, November 2009

-

back to top

- - \ No newline at end of file diff --git a/release/text/readme.html b/release/text/readme.html new file mode 100644 index 00000000000..175e8763ef1 --- /dev/null +++ b/release/text/readme.html @@ -0,0 +1,73 @@ + + + + + + + + + +

Blender 2.5 Alpha 0

+


+

About

+

Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and Irix and has a large world-wide community.

+

Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.

+

For more information, visit blender.org.

+


+

2.5 BETA0

+

The Blender Foundation and online developer community is proud to present Blender 2.5 Beta 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release is available here.

+

What to Expect:

+

• Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49

+

• Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.

+

• Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is beta software, we're still working on it!

+

• Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.

+


+

Bugs

+

Blender 2.5 Alpha0 is unfinished software. If you encounter a bug, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.5. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.

+


+

Package Contents

+

The downloaded Blender package includes:

+

• The Blender application for the chosen operating system.

+

• Scripts for importing and exporters to other 3d formats.

+

• Readme and copyright files.

+


+

Installation

+

Windows: The download .zip contains a Blender folder. You may put this anywhere on your hard drive. To launch Blender, double-click on Blender.exe.
+Install scripts by putting them in the .blender/scripts folder next to the executable.

+

Linux, FreeBSD, Irix, Solaris: Unpack the distribution, copy the .blender directory from it to your home directory. Then run the Blender executable.
+Install scripts by putting them in the .blender/scripts inside your home folder.

+

Mac OS X: The downloaded package includes blender.app. Optionally copy this to your Applications folder, and add it to the dock by dragging it from there to the dock.
+Install scripts by putting them in the .blender/scripts inside your home folder. If the folder does not exist, you can create it manually.

+


+

Getting Started

+

When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties area on the right and a Timeline at the bottom.

+

Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.

+

Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.

+

For more information on how to use Blender, watch tutorials here or read the manual here.

+


+

Links

+

Users:

+

General information www.blender.org
+ Full release log www.blender.org/development/release-logs/blender-250/
+ Tutorials www.blender.org/education-help/
+ Manual wiki.blender.org/index.php/Doc:Manual
+ User Forum www.blenderartists.org
+ IRC #blender
+

+

Developers:

+

Development www.blender.org/development/
+ SVN and Bug Tracker projects.blender.org
+ Get Involved www.blender.org/community/get-involved/
+ IRC #blendercoders

+


+


+


+ +


+ + -- cgit v1.2.3 From f92524ab7d56b37f0d600d902a98c32dd24f0925 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 15:04:43 +0000 Subject: use lowercase filenames, they are prettyfied for the menu --- release/scripts/presets/sss/Chicken.py | 2 -- release/scripts/presets/sss/Cream.py | 2 -- release/scripts/presets/sss/Ketchup.py | 2 -- release/scripts/presets/sss/Marble.py | 2 -- release/scripts/presets/sss/Potato.py | 2 -- release/scripts/presets/sss/Skim_Milk.py | 2 -- release/scripts/presets/sss/Skin1.py | 2 -- release/scripts/presets/sss/Skin2.py | 2 -- release/scripts/presets/sss/chicken.py | 2 ++ release/scripts/presets/sss/cream.py | 2 ++ release/scripts/presets/sss/ketchup.py | 2 ++ release/scripts/presets/sss/marble.py | 2 ++ release/scripts/presets/sss/potato.py | 2 ++ release/scripts/presets/sss/skim_milk.py | 2 ++ release/scripts/presets/sss/skin1.py | 2 ++ release/scripts/presets/sss/skin2.py | 2 ++ 16 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 release/scripts/presets/sss/Chicken.py delete mode 100644 release/scripts/presets/sss/Cream.py delete mode 100644 release/scripts/presets/sss/Ketchup.py delete mode 100644 release/scripts/presets/sss/Marble.py delete mode 100644 release/scripts/presets/sss/Potato.py delete mode 100644 release/scripts/presets/sss/Skim_Milk.py delete mode 100644 release/scripts/presets/sss/Skin1.py delete mode 100644 release/scripts/presets/sss/Skin2.py create mode 100644 release/scripts/presets/sss/chicken.py create mode 100644 release/scripts/presets/sss/cream.py create mode 100644 release/scripts/presets/sss/ketchup.py create mode 100644 release/scripts/presets/sss/marble.py create mode 100644 release/scripts/presets/sss/potato.py create mode 100644 release/scripts/presets/sss/skim_milk.py create mode 100644 release/scripts/presets/sss/skin1.py create mode 100644 release/scripts/presets/sss/skin2.py diff --git a/release/scripts/presets/sss/Chicken.py b/release/scripts/presets/sss/Chicken.py deleted file mode 100644 index 6253de09376..00000000000 --- a/release/scripts/presets/sss/Chicken.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 9.436, 3.348, 1.790 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.439, 0.216, 0.141 diff --git a/release/scripts/presets/sss/Cream.py b/release/scripts/presets/sss/Cream.py deleted file mode 100644 index f0a5292b85c..00000000000 --- a/release/scripts/presets/sss/Cream.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 15.028, 4.664, 2.541 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.987, 0.943, 0.827 diff --git a/release/scripts/presets/sss/Ketchup.py b/release/scripts/presets/sss/Ketchup.py deleted file mode 100644 index caece1ea7ca..00000000000 --- a/release/scripts/presets/sss/Ketchup.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 4.762, 0.575, 0.394 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.222, 0.008, 0.002 diff --git a/release/scripts/presets/sss/Marble.py b/release/scripts/presets/sss/Marble.py deleted file mode 100644 index ea894f69800..00000000000 --- a/release/scripts/presets/sss/Marble.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 8.509, 5.566, 3.951 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.925, 0.905, 0.884 diff --git a/release/scripts/presets/sss/Potato.py b/release/scripts/presets/sss/Potato.py deleted file mode 100644 index 89407dff427..00000000000 --- a/release/scripts/presets/sss/Potato.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 14.266, 7.228, 2.036 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.855, 0.740, 0.292 diff --git a/release/scripts/presets/sss/Skim_Milk.py b/release/scripts/presets/sss/Skim_Milk.py deleted file mode 100644 index 2e5b19d4f53..00000000000 --- a/release/scripts/presets/sss/Skim_Milk.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 18.424, 10.443, 3.502 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.889, 0.888, 0.796 diff --git a/release/scripts/presets/sss/Skin1.py b/release/scripts/presets/sss/Skin1.py deleted file mode 100644 index 42fb1fac43a..00000000000 --- a/release/scripts/presets/sss/Skin1.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 3.673, 1.367, 0.683 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.574, 0.313, 0.174 diff --git a/release/scripts/presets/sss/Skin2.py b/release/scripts/presets/sss/Skin2.py deleted file mode 100644 index 52b649ecd8f..00000000000 --- a/release/scripts/presets/sss/Skin2.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 4.821, 1.694, 1.090 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.749, 0.571, 0.467 diff --git a/release/scripts/presets/sss/chicken.py b/release/scripts/presets/sss/chicken.py new file mode 100644 index 00000000000..6253de09376 --- /dev/null +++ b/release/scripts/presets/sss/chicken.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 9.436, 3.348, 1.790 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.439, 0.216, 0.141 diff --git a/release/scripts/presets/sss/cream.py b/release/scripts/presets/sss/cream.py new file mode 100644 index 00000000000..f0a5292b85c --- /dev/null +++ b/release/scripts/presets/sss/cream.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 15.028, 4.664, 2.541 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.987, 0.943, 0.827 diff --git a/release/scripts/presets/sss/ketchup.py b/release/scripts/presets/sss/ketchup.py new file mode 100644 index 00000000000..caece1ea7ca --- /dev/null +++ b/release/scripts/presets/sss/ketchup.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 4.762, 0.575, 0.394 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.222, 0.008, 0.002 diff --git a/release/scripts/presets/sss/marble.py b/release/scripts/presets/sss/marble.py new file mode 100644 index 00000000000..ea894f69800 --- /dev/null +++ b/release/scripts/presets/sss/marble.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 8.509, 5.566, 3.951 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.925, 0.905, 0.884 diff --git a/release/scripts/presets/sss/potato.py b/release/scripts/presets/sss/potato.py new file mode 100644 index 00000000000..89407dff427 --- /dev/null +++ b/release/scripts/presets/sss/potato.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 14.266, 7.228, 2.036 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.855, 0.740, 0.292 diff --git a/release/scripts/presets/sss/skim_milk.py b/release/scripts/presets/sss/skim_milk.py new file mode 100644 index 00000000000..2e5b19d4f53 --- /dev/null +++ b/release/scripts/presets/sss/skim_milk.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 18.424, 10.443, 3.502 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.889, 0.888, 0.796 diff --git a/release/scripts/presets/sss/skin1.py b/release/scripts/presets/sss/skin1.py new file mode 100644 index 00000000000..42fb1fac43a --- /dev/null +++ b/release/scripts/presets/sss/skin1.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 3.673, 1.367, 0.683 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.574, 0.313, 0.174 diff --git a/release/scripts/presets/sss/skin2.py b/release/scripts/presets/sss/skin2.py new file mode 100644 index 00000000000..52b649ecd8f --- /dev/null +++ b/release/scripts/presets/sss/skin2.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 4.821, 1.694, 1.090 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.749, 0.571, 0.467 -- cgit v1.2.3 From a2c0f3dac477c7753af3832f06859cb2d94782a6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 15:08:42 +0000 Subject: missing include for memset() --- source/blender/editors/object/object_transform.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 20d93083410..cb66384b1f8 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -26,6 +26,7 @@ */ #include +#include #include "DNA_anim_types.h" #include "DNA_action_types.h" -- cgit v1.2.3 From d92c151cb94cfaa0f87ff69ead628843ffdb0604 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 23 Nov 2009 15:17:37 +0000 Subject: Beta -> Alpha ;) --- release/text/readme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/text/readme.html b/release/text/readme.html index 175e8763ef1..5ae2532c455 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -19,12 +19,12 @@

Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.

For more information, visit blender.org.


-

2.5 BETA0

-

The Blender Foundation and online developer community is proud to present Blender 2.5 Beta 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release is available here.

+

2.5 ALPHA 0

+

The Blender Foundation and online developer community is proud to present Blender 2.5 Alpha 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release is available here.

What to Expect:

• Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49

• Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.

-

• Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is beta software, we're still working on it!

+

• Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is alpha software, we're still working on it!

• Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.


Bugs

-- cgit v1.2.3 From c0e26df2598936ddaa55834483094e0d56df6f65 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 23 Nov 2009 15:19:30 +0000 Subject: 2.5: fix python error when showing 3d view properties panel with no active bone. --- release/scripts/ui/space_view3d.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 23f64d5e557..21521e36cba 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1786,7 +1786,8 @@ class VIEW3D_PT_context_properties(bpy.types.Panel): def poll(self, context): member = self._active_context_member(context) if member: - return getattr(context, member).keys() + context_member = getattr(context, member) + return context_member and context_member.keys() return False -- cgit v1.2.3 From f4d3ce197b2eb46d7e27d40d3579d25f8de532e4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 15:20:56 +0000 Subject: links to Python API docs from splash and help menu --- release/scripts/ui/space_info.py | 9 +++++++++ source/blender/windowmanager/intern/wm_operators.c | 1 + 2 files changed, 10 insertions(+) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index e234f451c89..d4da07a18d9 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -269,6 +269,7 @@ class INFO_MT_help(bpy.types.Menu): layout.separator() layout.operator("help.report_bug", icon='ICON_URL') layout.separator() + layout.operator("help.python_api", icon='ICON_URL') layout.operator("help.operator_cheat_sheet") bpy.types.register(INFO_HT_header) @@ -342,6 +343,13 @@ class HELP_OT_report_bug(HelpOperator): _url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse' +class HELP_OT_python_api(HelpOperator): + '''Reference for operator and data Python API''' + bl_idname = "help.python_api" + bl_label = "Python API Reference" + _url = 'http://www.blender.org/documentation/250PythonDoc/' + + class HELP_OT_operator_cheat_sheet(bpy.types.Operator): bl_idname = "help.operator_cheat_sheet" bl_label = "Operator Cheat Sheet (new textblock)" @@ -375,4 +383,5 @@ bpy.ops.add(HELP_OT_blender_eshop) bpy.ops.add(HELP_OT_developer_community) bpy.ops.add(HELP_OT_user_community) bpy.ops.add(HELP_OT_report_bug) +bpy.ops.add(HELP_OT_python_api) bpy.ops.add(HELP_OT_operator_cheat_sheet) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 8eb980d0112..676ba89bad5 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -847,6 +847,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse uiItemO(col, NULL, ICON_URL, "HELP_OT_manual"); uiItemO(col, NULL, ICON_URL, "HELP_OT_blender_website"); uiItemO(col, NULL, ICON_URL, "HELP_OT_user_community"); + uiItemO(col, NULL, ICON_URL, "HELP_OT_python_api"); uiItemS(col); col = uiLayoutColumn(split, 0); -- cgit v1.2.3 From 190de2b664f613394e7e38f95668fedcd221402f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 15:22:23 +0000 Subject: remove F7 for running test.py, was useful when we had a py api but not text editor :) this gets rid of F7 next to all the presets --- source/blender/editors/screen/screen_ops.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index d26718febfe..ccc4deddb24 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3701,8 +3701,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_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); - - RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", F7KEY, KM_PRESS, 0, 0)->ptr, "path", "test.py"); + WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0); /* files */ -- cgit v1.2.3 From bd1de4b4e3de28be2386bf0a3bdd72d0ef7ff582 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 23 Nov 2009 15:41:57 +0000 Subject: made release log link point correctly to the release log. --- release/scripts/ui/space_info.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index d4da07a18d9..8198a735836 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -304,8 +304,8 @@ class HELP_OT_manual(HelpOperator): class HELP_OT_release_logs(HelpOperator): '''Information about the changes in this version of Blender''' bl_idname = "help.release_logs" - bl_label = "Release Logs" - _url = 'http://www.blender.org/development/release-logs/' + bl_label = "Release Log" + _url = 'http://www.blender.org/development/release-logs/blender-250/' class HELP_OT_blender_website(HelpOperator): -- cgit v1.2.3 From 66a013b06a0085dce68daa00940c9b092b1490a3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 16:04:19 +0000 Subject: use decorators for python attributes, added bone.length --- release/scripts/modules/bpy_types.py | 77 +++++++++++++++++------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 221e4d29ae8..43af9a4dc85 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -35,23 +35,36 @@ class Context(StructRNA): class Object(bpy_types.ID): - def _get_children(self): + @property + def children(self): import bpy return [child for child in bpy.data.objects if child.parent == self] - children = property(_get_children) - class PoseBone(StructRNA): - def _get_children(self): + def parent_index(self, parent_test): + ''' + The same as 'bone in other_bone.parent_recursive' but saved generating a list. + ''' + parent = self.parent + i = 1 + while parent: + if parent == parent_test: + return i + parent = parent.parent + i += 1 + + return 0 + + @property + def children(self): import bpy obj = self.id_data return [child for child in obj.pose.bones if child.parent == self] - children = property(_get_children) - - def _get_parent_recursive(self): + @property + def parent_recursive(self): parent_list = [] parent = self.parent @@ -62,24 +75,9 @@ class PoseBone(StructRNA): parent = parent.parent return parent_list - - parent_recursive = property(_get_parent_recursive) - def parent_index(self, parent_test): - ''' - The same as 'bone in other_bone.parent_recursive' but saved generating a list. - ''' - parent = self.parent - i = 1 - while parent: - if parent == parent_test: - return i - parent = parent.parent - i += 1 - - return 0 - - def _get_children_recursive(self): + @property + def children_recursive(self): obj = self.id_data bones_children = [] for bone in obj.pose.bones: @@ -91,7 +89,11 @@ class PoseBone(StructRNA): bones_children.sort(key=lambda bone_pair: bone_pair[0]) return [bone for index, bone in bones_children] - children_recursive = property(_get_children_recursive) + +class Bone(StructRNA): + @property + def length(self): + return (self.head - self.tail).length def ord_ind(i1,i2): @@ -100,12 +102,12 @@ def ord_ind(i1,i2): class Mesh(bpy_types.ID): - def _get_edge_keys(self): + @property + def edge_keys(self): return [edge_key for face in self.faces for edge_key in face.edge_keys] - edge_keys = property(_get_edge_keys) - - def _get_edge_face_count_dict(self): + @property + def edge_face_count_dict(self): face_edge_keys = [face.edge_keys for face in self.faces] face_edge_count = {} for face_keys in face_edge_keys: @@ -117,34 +119,29 @@ class Mesh(bpy_types.ID): return face_edge_count - edge_face_count_dict = property(_get_edge_face_count_dict) - - def _get_edge_face_count(self): + @property + def edge_face_count(self): edge_face_count_dict = self.edge_face_count_dict return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges] - edge_face_count = property(_get_edge_face_count) - class MeshEdge(StructRNA): - def _get_key(self): + @property + def key(self): return ord_ind(*tuple(self.verts)) - key = property(_get_key) - class MeshFace(StructRNA): - def _get_edge_keys(self): + @property + def edge_keys(self): verts = tuple(self.verts) if len(verts)==3: return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0]) return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0]) - edge_keys = property(_get_edge_keys) - import collections class OrderedMeta(type): -- cgit v1.2.3 From d1f314a2174a61dbfd054c3cd6da673520061dd8 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 23 Nov 2009 16:24:28 +0000 Subject: New CLICK event value. If RELEASE is not handled and last event was PRESS of same type, redo handlers with CLICK value (this means you can "click" key events too). Leftmouse+Ctrl to extrude now mapped to Click instead of Release. Release was used to avoid conflict with lasso, but it isn't safe with modal operators that use Press to confirm (subsequent Release then extruded). Click is semantically closer to what we want here. --- source/blender/editors/armature/armature_ops.c | 2 +- source/blender/editors/curve/curve_ops.c | 2 +- source/blender/editors/mesh/mesh_ops.c | 7 +++---- source/blender/makesdna/DNA_windowmanager_types.h | 4 +++- source/blender/windowmanager/WM_types.h | 1 + .../blender/windowmanager/intern/wm_event_system.c | 20 ++++++++++++++++++++ 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index be6f7d536f8..57eab530310 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -241,7 +241,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) 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); - WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index ac0d4c21e27..15ff971b9cf 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -220,7 +220,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf) keymap->poll= ED_operator_editsurfcurve; WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_PRESS, KM_CTRL, 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_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index dfc4ba8c6b8..1363d8b2102 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -284,10 +284,9 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0); - /* use KM_RELEASE because same key is used for tweaks - * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT - * */ - WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_RELEASE, KM_CTRL|KM_ALT, 0); + + /* use KM_CLICK because same key is used for tweaks */ + WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); 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); diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 5cdd74c8262..5e5c9856669 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -152,8 +152,10 @@ typedef struct wmWindow { short cursor; /* current mouse cursor type */ short lastcursor; /* for temp waitcursor */ short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */ - int pad3; + short last_type; /* last event information, used for click */ + short last_val; + struct wmEvent *eventstate; /* storage for event system */ struct wmSubWindow *curswin; /* internal for wm_subwindow.c only */ diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 891ed8358fb..3f0c52f0f2c 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -82,6 +82,7 @@ enum { #define KM_NOTHING 0 #define KM_PRESS 1 #define KM_RELEASE 2 +#define KM_CLICK 3 /* ************** UI Handler ***************** */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 56455f87d4d..534edde5d4a 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1153,6 +1153,22 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) if(CTX_wm_window(C)==NULL) break; } + + /* test for CLICK event */ + if (event->val == KM_RELEASE && action == WM_HANDLER_CONTINUE) { + wmWindow *win = CTX_wm_window(C); + + if (win && win->last_type == event->type && win->last_val == KM_PRESS) { + event->val = KM_CLICK; + action = wm_handlers_do(C, event, handlers); + + /* revert value if not handled */ + if (action == WM_HANDLER_CONTINUE) { + event->val = KM_RELEASE; + } + } + } + return action; } @@ -1333,6 +1349,10 @@ void wm_event_do_handlers(bContext *C) } } + /* store last event for this window */ + win->last_type = event->type; + win->last_val = event->val; + /* unlink and free here, blender-quit then frees all */ BLI_remlink(&win->queue, event); wm_event_free(event); -- cgit v1.2.3 From fe14b6d544b571514598ba55f267f0ba2a9bc544 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 23 Nov 2009 16:53:29 +0000 Subject: 2.5 bugfix: transformation constraint values did not have correct range. --- source/blender/makesrna/intern/rna_constraint.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 9ad06ec51d9..5bf3c52c989 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1256,73 +1256,73 @@ static void rna_def_constraint_transform(BlenderRNA *brna) prop= RNA_def_property(srna, "from_min_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum X", "Bottom range of X axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_min_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum Y", "Bottom range of Y axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_min_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_min[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Minimum Z", "Bottom range of Z axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum X", "Top range of X axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum Y", "Top range of Y axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "from_max_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "from_max[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "From Maximum Z", "Top range of Z axis source motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum X", "Bottom range of X axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum Y", "Bottom range of Y axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_min_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_min[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Minimum Z", "Bottom range of Z axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_x", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[0]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum X", "Top range of X axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_y", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[1]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum Y", "Top range of Y axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "to_max_z", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "to_max[2]"); - RNA_def_property_range(prop, 0.0, 1000.f); + RNA_def_property_ui_range(prop, -1000.0f, 1000.0f, 10, 3); RNA_def_property_ui_text(prop, "To Maximum Z", "Top range of Z axis destination motion."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } -- cgit v1.2.3 From 4cac7c88aa3614ecf4e46b580881399029e3f4da Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 16:58:24 +0000 Subject: bugfix: uninitialized values --- source/blender/python/intern/bpy_rna.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index cdf4f518b51..22beb79ef59 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -3494,7 +3494,7 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) else if(srna) { static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; char *id=NULL, *name="", *description=""; - int hidden; + int hidden= 0; PropertyRNA *prop; StructRNA *ptype; PyObject *type= Py_None; @@ -3533,7 +3533,7 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) else if(srna) { static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; char *id=NULL, *name="", *description=""; - int hidden; + int hidden= 0; PropertyRNA *prop; StructRNA *ptype; PyObject *type= Py_None; -- cgit v1.2.3 From 53667cc69368308fee360359271b438a69098bc9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 23 Nov 2009 17:07:30 +0000 Subject: 2.5 bugfix: 3d view zoom operator delta had wrong range. --- source/blender/editors/space_view3d/view3d_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index f53f7fdba9c..22dd7c6da87 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1001,7 +1001,7 @@ void VIEW3D_OT_zoom(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; - RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "", 0, INT_MAX); + RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "mx", 0, 0, INT_MAX, "Zoom Position X", "", 0, INT_MAX); RNA_def_int(ot->srna, "my", 0, 0, INT_MAX, "Zoom Position Y", "", 0, INT_MAX); } -- cgit v1.2.3 From 2dac330ac0f57d98fa5116c2ceb8e79231edd35a Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 23 Nov 2009 17:12:15 +0000 Subject: Remove forced sse compile flags on render for linux. This is very bad. Use user flags instead. --- source/blender/render/SConscript | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 795e7247597..63ef83a0cfe 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -31,8 +31,11 @@ if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') if env['OURPLATFORM'] == 'linux2': - cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] +# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no +# cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] +# cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] + cflags = env['CCFLAGS'] + cxxflags = env['CXXFLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): -- cgit v1.2.3 From e2a5862e8f30a83de7aca5da7b16e9f8ccd3376c Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Mon, 23 Nov 2009 17:27:00 +0000 Subject: Two files missing in case conversion in r24816. --- release/scripts/presets/sss/Apple.py | 2 -- release/scripts/presets/sss/Whole_Milk.py | 2 -- release/scripts/presets/sss/apple.py | 2 ++ release/scripts/presets/sss/whole_milk.py | 2 ++ 4 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 release/scripts/presets/sss/Apple.py delete mode 100644 release/scripts/presets/sss/Whole_Milk.py create mode 100644 release/scripts/presets/sss/apple.py create mode 100644 release/scripts/presets/sss/whole_milk.py diff --git a/release/scripts/presets/sss/Apple.py b/release/scripts/presets/sss/Apple.py deleted file mode 100644 index 474769cd36f..00000000000 --- a/release/scripts/presets/sss/Apple.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 11.605, 3.884, 1.754 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.430, 0.210, 0.168 diff --git a/release/scripts/presets/sss/Whole_Milk.py b/release/scripts/presets/sss/Whole_Milk.py deleted file mode 100644 index 4cb6ccf3dcf..00000000000 --- a/release/scripts/presets/sss/Whole_Milk.py +++ /dev/null @@ -1,2 +0,0 @@ -bpy.context.active_object.active_material.subsurface_scattering.radius = 10.899, 6.575, 2.508 -bpy.context.active_object.active_material.subsurface_scattering.color = 0.947, 0.931, 0.852 diff --git a/release/scripts/presets/sss/apple.py b/release/scripts/presets/sss/apple.py new file mode 100644 index 00000000000..474769cd36f --- /dev/null +++ b/release/scripts/presets/sss/apple.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 11.605, 3.884, 1.754 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.430, 0.210, 0.168 diff --git a/release/scripts/presets/sss/whole_milk.py b/release/scripts/presets/sss/whole_milk.py new file mode 100644 index 00000000000..4cb6ccf3dcf --- /dev/null +++ b/release/scripts/presets/sss/whole_milk.py @@ -0,0 +1,2 @@ +bpy.context.active_object.active_material.subsurface_scattering.radius = 10.899, 6.575, 2.508 +bpy.context.active_object.active_material.subsurface_scattering.color = 0.947, 0.931, 0.852 -- cgit v1.2.3 From 1c806f6bb454dca6f682ecd741bd2fe03b9617bb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 17:36:44 +0000 Subject: workaround for an error with BKE_reportf (actually BLI_dynstr_vappendf) fixes a crash that happens when formatting a python exception into a report. - for now use pythons string formatting function. happens when running the simple operator template so not sure if its worth re-tagging :S --- source/blender/python/intern/bpy_util.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c index 174d1aa342f..cd53ba9c069 100644 --- a/source/blender/python/intern/bpy_util.c +++ b/source/blender/python/intern/bpy_util.c @@ -416,6 +416,7 @@ int BPy_reports_to_error(ReportList *reports) int BPy_errors_to_report(ReportList *reports) { PyObject *pystring; + PyObject *pystring_format= NULL; // workaround, see below char *cstring; char *filename; @@ -439,14 +440,23 @@ int BPy_errors_to_report(ReportList *reports) } BPY_getFileAndNum(&filename, &lineno); + if(filename==NULL) + filename= ""; cstring= _PyUnicode_AsString(pystring); - + +#if 0 // ARG!. workaround for a bug in blenders use of vsnprintf BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno); +#else + pystring_format= PyUnicode_FromFormat("%s\nlocation:%s:%d\n", cstring, filename, lineno); + cstring= _PyUnicode_AsString(pystring_format); + BKE_report(reports, RPT_ERROR, cstring); +#endif fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing Py_DECREF(pystring); + Py_DECREF(pystring_format); // workaround return 1; } -- cgit v1.2.3 From 4c03ce91001ebb7f63c12e32902dd2cb7e487d1a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 17:55:52 +0000 Subject: fix for crashes displaying long strings in menu's --- source/blender/editors/interface/interface.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index f8490204968..819b153741d 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1960,7 +1960,7 @@ void ui_check_but(uiBut *but) sprintf(but->drawstr, "%s%.2f", but->str, value); } } - else strcpy(but->drawstr, but->str); + else strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); break; @@ -1978,7 +1978,7 @@ void ui_check_but(uiBut *but) break; case KEYEVT: - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); if (but->flag & UI_SELECT) { strcat(but->drawstr, "Press a key"); } else { @@ -1991,9 +1991,9 @@ void ui_check_but(uiBut *but) short *sp= (short *)but->func_arg3; if(but->flag & UI_BUT_IMMEDIATE) - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); else - strcpy(but->drawstr, ""); + strncpy(but->drawstr, "", UI_MAX_DRAW_STR); if(*sp) { char *str= but->drawstr; @@ -2011,25 +2011,25 @@ void ui_check_but(uiBut *but) strcat(but->drawstr, "Press a key "); } else - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); break; case BUT_TOGDUAL: /* trying to get the dual-icon to left of text... not very nice */ if(but->str[0]) { - strcpy(but->drawstr, " "); - strcpy(but->drawstr+2, but->str); + strncpy(but->drawstr, " ", UI_MAX_DRAW_STR); + strncpy(but->drawstr+2, but->str, UI_MAX_DRAW_STR-2); } break; default: - strcpy(but->drawstr, but->str); + strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); } /* if we are doing text editing, this will override the drawstr */ if(but->editstr) - strcpy(but->drawstr, but->editstr); + strncpy(but->drawstr, but->editstr, UI_MAX_DRAW_STR); /* text clipping moved to widget drawing code itself */ } -- cgit v1.2.3 From 052290d2b378d8639598b1ca75972a83c9fc41c0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 18:08:42 +0000 Subject: fixed some error reporting issues with calling operators --- source/blender/python/intern/bpy_operator.c | 2 +- source/blender/python/intern/bpy_operator_wrap.c | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index 409afee7d7d..c2504ed2c50 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -76,7 +76,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) Py_XINCREF(context_dict); /* so we done loose it */ if(WM_operator_poll((bContext*)C, ot) == FALSE) { - PyErr_SetString( PyExc_SystemError, "_bpy.ops.call: operator poll() function failed, context is incorrect"); + PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator %.200s.poll() function failed, context is incorrect", opname); error_val= -1; } else { diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index 3789c5b1258..0c0d043c4be 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -105,7 +105,11 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat py_class_instance = PyObject_Call(py_class, args, NULL); Py_DECREF(args); - if (py_class_instance) { /* Initializing the class worked, now run its invoke function */ + if (py_class_instance==NULL) { /* Initializing the class worked, now run its invoke function */ + PyErr_Print(); + PyErr_Clear(); + } + else { RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); if (mode==PYOP_INVOKE) { @@ -137,10 +141,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat Py_DECREF(args); Py_DECREF(item); } - else { - PyErr_Print(); - PyErr_Clear(); - } if (ret == NULL) { /* covers py_class_instance failing too */ if(op) @@ -149,9 +149,8 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat else { if (mode==PYOP_POLL) { if (PyBool_Check(ret) == 0) { - PyErr_SetString(PyExc_ValueError, "Python poll function return value "); - if(op) - BPy_errors_to_report(op->reports); + PyErr_Format(PyExc_ValueError, "Python operator '%s.poll', did not return a bool value", ot->idname); + BPy_errors_to_report(op ? op->reports:NULL); /* prints and clears if NULL given */ } else { ret_flag= ret==Py_True ? 1:0; @@ -159,11 +158,8 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat } else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) { /* the returned value could not be converted into a flag */ - if(op) { - fprintf(stderr, "error using return value from \"%s\"\n", op->idname); // for some reason the error raised doesnt include file:line... this helps - BPy_errors_to_report(op->reports); - } - + PyErr_Format(PyExc_ValueError, "Python operator, error using return value from \"%s\"\n", ot->idname); + BPy_errors_to_report(op ? op->reports:NULL); ret_flag = OPERATOR_CANCELLED; } /* there is no need to copy the py keyword dict modified by -- cgit v1.2.3 From e54fe21a43b8e64fc128dd7ee0ddf447db74f241 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 23 Nov 2009 19:26:59 +0000 Subject: Fixed a link and added irc.freenode.net for clarity --- release/text/readme.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/release/text/readme.html b/release/text/readme.html index 5ae2532c455..c51c48ef06c 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -5,10 +5,10 @@ @@ -48,22 +48,22 @@ Install scripts by putting them in the .blender/scripts inside your home folder.

When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties area on the right and a Timeline at the bottom.

Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.

Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.

-

For more information on how to use Blender, watch tutorials here or read the manual here.

+

For more information on how to use Blender, watch tutorials here or read the manual here.


Links

Users:

General information www.blender.org
Full release log www.blender.org/development/release-logs/blender-250/
Tutorials www.blender.org/education-help/
- Manual wiki.blender.org/index.php/Doc:Manual
+ Manual wiki.blender.org/index.php/Doc:Manual
User Forum www.blenderartists.org
- IRC #blender
+ IRC #blender on irc.freenode.net

Developers:

Development www.blender.org/development/
SVN and Bug Tracker projects.blender.org
Get Involved www.blender.org/community/get-involved/
- IRC #blendercoders

+ IRC #blendercoders on irc.freenode.net




-- cgit v1.2.3 From f421558ac7ac43357de29f9933075241ac770ac1 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 23 Nov 2009 19:59:42 +0000 Subject: Fixed weird wrong names in Add menu. --- release/scripts/ui/space_info.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 8198a735836..0142805ca29 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -192,12 +192,12 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_context = 'INVOKE_SCREEN' layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') - layout.operator("object.add", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE' - layout.operator("object.add", icon='ICON_OUTLINER_OB_EMPTY').type = 'EMPTY' + layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE' + layout.operator("object.add", text="Empty", icon='ICON_OUTLINER_OB_EMPTY').type = 'EMPTY' layout.separator() - layout.operator("object.add", icon='ICON_OUTLINER_OB_CAMERA').type = 'CAMERA' + layout.operator("object.add", text="Camera", icon='ICON_OUTLINER_OB_CAMERA').type = 'CAMERA' layout.operator_context = 'EXEC_SCREEN' -- cgit v1.2.3 From af1f5423670f35cd8bb922d86d2b79da81c437ed Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 23 Nov 2009 20:06:09 +0000 Subject: 2.5 bugfix: splash would crash when .Blog contained file names without a slash in them. Also removed the ctrl+alt+f1 shortcut key, was for testing. --- source/blender/windowmanager/intern/wm_operators.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 676ba89bad5..5116b9b39a0 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1126,7 +1126,9 @@ static EnumPropertyItem *open_recentfile_splash_itemf(bContext *C, PointerRNA *p tmp.value= i+1; tmp.icon= ICON_FILE_BLEND; tmp.identifier= recent->filename; - tmp.name= BLI_last_slash(recent->filename)+1; + tmp.name= BLI_last_slash(recent->filename); + if(tmp.name) tmp.name += 1; + else tmp.name = recent->filename; RNA_enum_item_add(&item, &totitem, &tmp); } @@ -2732,7 +2734,6 @@ void wm_window_keymap(wmKeyConfig *keyconf) /* debug/testing */ WM_keymap_verify_item(keymap, "WM_OT_redraw_timer", TKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_debug_menu", DKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); - WM_keymap_verify_item(keymap, "WM_OT_splash", F1KEY, KM_PRESS, KM_ALT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_search_menu", SPACEKEY, KM_PRESS, 0, 0); /* Space switching */ -- cgit v1.2.3 From 9702ea753773664e4b322b14ae507944734ee31d Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Mon, 23 Nov 2009 21:17:53 +0000 Subject: Improve links. --- release/text/readme.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/text/readme.html b/release/text/readme.html index c51c48ef06c..a9a98053a6a 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -20,7 +20,7 @@

For more information, visit blender.org.


2.5 ALPHA 0

-

The Blender Foundation and online developer community is proud to present Blender 2.5 Alpha 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release is available here.

+

The Blender Foundation and online developer community is proud to present Blender 2.5 Alpha 0. This release is the first official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. More information about this release.

What to Expect:

• Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49

• Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.

@@ -48,7 +48,7 @@ Install scripts by putting them in the .blender/scripts inside your home folder.

When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties area on the right and a Timeline at the bottom.

Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.

Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.

-

For more information on how to use Blender, watch tutorials here or read the manual here.

+

For more information on how to use Blender, watch tutorials or read the manual.


Links

Users:

@@ -57,13 +57,13 @@ Install scripts by putting them in the .blender/scripts inside your home folder. Tutorials www.blender.org/education-help/
Manual wiki.blender.org/index.php/Doc:Manual
User Forum www.blenderartists.org
- IRC #blender on irc.freenode.net
+ IRC #blender on irc.freenode.net

Developers:

Development www.blender.org/development/
SVN and Bug Tracker projects.blender.org
Get Involved www.blender.org/community/get-involved/
- IRC #blendercoders on irc.freenode.net

+ IRC #blendercoders on irc.freenode.net




-- cgit v1.2.3 From b7d717cead9000c4600d71ed15fc10ebc103c591 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 23:03:04 +0000 Subject: added a function to duplicate bPoseChannel's internal data - constraints, id-props etc. duplicate_pose_channel_data(), the code to do this was inline in editarmature.c duplicating editbones now duplicates posebone id-props also removed an if test for &channew->constraints since it will always be true. --- source/blender/blenkernel/BKE_action.h | 6 +- source/blender/blenkernel/intern/action.c | 42 ++++++++++++++ source/blender/editors/armature/editarmature.c | 78 +++++--------------------- 3 files changed, 60 insertions(+), 66 deletions(-) diff --git a/source/blender/blenkernel/BKE_action.h b/source/blender/blenkernel/BKE_action.h index e0b65c1996f..6029ce01794 100644 --- a/source/blender/blenkernel/BKE_action.h +++ b/source/blender/blenkernel/BKE_action.h @@ -140,7 +140,11 @@ void free_pose(struct bPose *pose); */ void copy_pose(struct bPose **dst, struct bPose *src, int copyconstraints); - +/** + * Copy the internal members of each pose channel including constraints + * and ID-Props, used when duplicating bones in editmode. + */ +void duplicate_pose_channel_data(struct bPoseChannel *pchan, const struct bPoseChannel *pchan_from); /** * Return a pointer to the pose channel of the given name diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index af3c4719e32..8fe80edabb9 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -640,6 +640,48 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan } } +/* makes copies of internal data, unlike copy_pose_channel_data which only + * copies the pose state. + * hint: use when copying bones in editmode (on returned value from verify_pose_channel) */ +void duplicate_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *pchan_from) +{ + /* copy transform locks */ + pchan->protectflag = pchan_from->protectflag; + + /* copy rotation mode */ + pchan->rotmode = pchan_from->rotmode; + + /* copy bone group */ + pchan->agrp_index= pchan_from->agrp_index; + + /* ik (dof) settings */ + pchan->ikflag = pchan_from->ikflag; + VECCOPY(pchan->limitmin, pchan_from->limitmin); + VECCOPY(pchan->limitmax, pchan_from->limitmax); + VECCOPY(pchan->stiffness, pchan_from->stiffness); + pchan->ikstretch= pchan_from->ikstretch; + pchan->ikrotweight= pchan_from->ikrotweight; + pchan->iklinweight= pchan_from->iklinweight; + + /* constraints */ + copy_constraints(&pchan->constraints, &pchan_from->constraints); + + /* id-properties */ + if(pchan->prop) { + /* unlikely but possible it exists */ + IDP_FreeProperty(pchan->prop); + MEM_freeN(pchan->prop); + pchan->prop= NULL; + } + if(pchan_from->prop) { + pchan->prop= IDP_CopyProperty(pchan_from->prop); + } + + /* custom shape */ + pchan->custom= pchan_from->custom; +} + + /* checks for IK constraint, Spline IK, and also for Follow-Path constraint. * can do more constraints flags later */ diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 3936bc92bb9..db499c72908 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -2599,40 +2599,16 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *edit */ if (src_ob->pose) { bPoseChannel *chanold, *channew; - ListBase *listold, *listnew; chanold = verify_pose_channel(src_ob->pose, curBone->name); if (chanold) { - listold = &chanold->constraints; - if (listold) { - /* WARNING: this creates a new posechannel, but there will not be an attached bone - * yet as the new bones created here are still 'EditBones' not 'Bones'. - */ - channew = - verify_pose_channel(dst_ob->pose, eBone->name); - if (channew) { - /* copy transform locks */ - channew->protectflag = chanold->protectflag; - - /* copy bone group */ - channew->agrp_index= chanold->agrp_index; - - /* ik (dof) settings */ - channew->ikflag = chanold->ikflag; - VECCOPY(channew->limitmin, chanold->limitmin); - VECCOPY(channew->limitmax, chanold->limitmax); - VECCOPY(channew->stiffness, chanold->stiffness); - channew->ikstretch= chanold->ikstretch; - channew->ikrotweight= chanold->ikrotweight; - channew->iklinweight= chanold->iklinweight; - - /* constraints */ - listnew = &channew->constraints; - copy_constraints(listnew, listold); - - /* custom shape */ - channew->custom= chanold->custom; - } + /* WARNING: this creates a new posechannel, but there will not be an attached bone + * yet as the new bones created here are still 'EditBones' not 'Bones'. + */ + channew= verify_pose_channel(dst_ob->pose, eBone->name); + + if(channew) { + duplicate_pose_channel_data(channew, chanold); } } } @@ -2701,43 +2677,15 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op) */ if (obedit->pose) { bPoseChannel *chanold, *channew; - ListBase *listold, *listnew; chanold = verify_pose_channel(obedit->pose, curBone->name); if (chanold) { - listold = &chanold->constraints; - if (listold) { - /* WARNING: this creates a new posechannel, but there will not be an attached bone - * yet as the new bones created here are still 'EditBones' not 'Bones'. - */ - channew = - verify_pose_channel(obedit->pose, eBone->name); - if (channew) { - /* copy transform locks */ - channew->protectflag = chanold->protectflag; - - /* copy rotation mode */ - channew->rotmode = chanold->rotmode; - - /* copy bone group */ - channew->agrp_index= chanold->agrp_index; - - /* ik (dof) settings */ - channew->ikflag = chanold->ikflag; - VECCOPY(channew->limitmin, chanold->limitmin); - VECCOPY(channew->limitmax, chanold->limitmax); - VECCOPY(channew->stiffness, chanold->stiffness); - channew->ikstretch= chanold->ikstretch; - channew->ikrotweight= chanold->ikrotweight; - channew->iklinweight= chanold->iklinweight; - - /* constraints */ - listnew = &channew->constraints; - copy_constraints(listnew, listold); - - /* custom shape */ - channew->custom= chanold->custom; - } + /* WARNING: this creates a new posechannel, but there will not be an attached bone + * yet as the new bones created here are still 'EditBones' not 'Bones'. + */ + channew= verify_pose_channel(obedit->pose, eBone->name); + if(channew) { + duplicate_pose_channel_data(channew, chanold); } } } -- cgit v1.2.3 From e968017951f8b38d4c33aac4225758687ba1e7d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Nov 2009 23:17:23 +0000 Subject: - new pyrna api functions srna & prop path_to_id(), useful when setting driver target paths. This means you can have a pose bone for eg and get the path... pose.bones["Bone"] uses rna internal functions, so will work for sequence strips etc. - StructRNA.get(), used for getting ID props without exceptions... val = C.object["someKey"] or.. val = C.object.get("someKey", "defaultValue") # wont raise an error - change rna property for testing if rna props are editable, test the flag rather then calling the function since the function depends on blenders state. - fix a python exception with the ID-Property popup UI (when editing in more then 1 step) --- release/scripts/modules/rna_prop_ui.py | 1 + source/blender/makesrna/intern/rna_fcurve.c | 2 +- source/blender/makesrna/intern/rna_rna.c | 7 ++- source/blender/python/intern/bpy_rna.c | 88 ++++++++++++++++++++++++++++- 4 files changed, 95 insertions(+), 3 deletions(-) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index ef853b395ea..3c12d4304d1 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -177,6 +177,7 @@ class WM_OT_properties_edit(bpy.types.Operator): exec_str = "item['%s'] = %s" % (prop, value_eval) # print(exec_str) exec(exec_str) + self._last_prop[:] = [prop] prop_type = type(item[prop]) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 67d562da23b..10a4a9f5fbd 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -649,7 +649,7 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable"); RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef"); - RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from"); + RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)"); //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates prop= RNA_def_property(srna, "id_type", PROP_ENUM, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 4218724d7df..f8adb1a79d8 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -428,7 +428,12 @@ static int rna_Property_unit_get(PointerRNA *ptr) static int rna_Property_editable_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; - return RNA_property_editable(ptr, prop); + + /* dont use this becaure it will call functions that check the internal + * data for introspection we only need to know if it can be edited so the + * flag is better for this */ +// return RNA_property_editable(ptr, prop); + return prop->flag & PROP_EDITABLE ? 1:0; } static int rna_Property_use_return_get(PointerRNA *ptr) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 22beb79ef59..b05483f8576 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1391,7 +1391,6 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args) return result; } - static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args) { char *name; @@ -1434,6 +1433,59 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *value) Py_RETURN_NONE; } +static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args) +{ + char *name= NULL; + char *path; + PropertyRNA *prop; + PyObject *ret; + + if (!PyArg_ParseTuple(args, "|s:path_to_id", &name)) + return NULL; + + if(name) { + prop= RNA_struct_find_property(&self->ptr, name); + if(prop==NULL) { + PyErr_Format(PyExc_TypeError, "path_to_id(\"%.200s\") not found", name); + return NULL; + } + + path= RNA_path_from_ID_to_property(&self->ptr, prop); + } + else { + path= RNA_path_from_ID_to_struct(&self->ptr); + } + + if(path==NULL) { + if(name) PyErr_Format(PyExc_TypeError, "%.200s.path_to_id(\"%s\") found but does not support path creation", RNA_struct_identifier(self->ptr.type), name); + else PyErr_Format(PyExc_TypeError, "%.200s.path_to_id() does not support path creation for this type", name); + return NULL; + } + + ret= PyUnicode_FromString(path); + MEM_freeN(path); + + return ret; +} + +static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self) +{ + char *path; + PropertyRNA *prop; + PyObject *ret; + + path= RNA_path_from_ID_to_property(&self->ptr, self->prop); + + if(path==NULL) { + PyErr_Format(PyExc_TypeError, "%.200s.%.200s.path_to_id() does not support path creation for this type", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(prop)); + return NULL; + } + + ret= PyUnicode_FromString(path); + MEM_freeN(path); + + return ret; +} static void pyrna_dir_members_py(PyObject *list, PyObject *self) { @@ -1890,6 +1942,34 @@ static PyObject *pyrna_prop_values(BPy_PropertyRNA *self) return ret; } +static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args) +{ + IDProperty *group, *idprop; + + char *key; + PyObject* def = Py_None; + + if (!PyArg_ParseTuple(args, "s|O:get", &key, &def)) + return NULL; + + /* mostly copied from BPy_IDGroup_Map_GetItem */ + if(RNA_struct_idproperties_check(&self->ptr)==0) { + PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties"); + return NULL; + } + + group= RNA_struct_idproperties(&self->ptr, 0); + if(group) { + idprop= IDP_GetPropertyFromGroup(group, key); + + if(idprop) + return BPy_IDGroup_WrapData(self->ptr.id.data, idprop); + } + + Py_INCREF(def); + return def; +} + static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args) { PointerRNA newptr; @@ -2182,12 +2262,15 @@ static struct PyMethodDef pyrna_struct_methods[] = { {"values", (PyCFunction)pyrna_struct_values, METH_NOARGS, NULL}, {"items", (PyCFunction)pyrna_struct_items, METH_NOARGS, NULL}, + {"get", (PyCFunction)pyrna_struct_get, METH_VARARGS, NULL}, + /* maybe this become and ID function */ {"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL}, {"driver_add", (PyCFunction)pyrna_struct_driver_add, METH_VARARGS, NULL}, {"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, NULL}, {"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, NULL}, {"path_resolve", (PyCFunction)pyrna_struct_path_resolve, METH_O, NULL}, + {"path_to_id", (PyCFunction)pyrna_struct_path_to_id, METH_VARARGS, NULL}, {"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL}, {NULL, NULL, 0, NULL} }; @@ -2203,6 +2286,9 @@ static struct PyMethodDef pyrna_prop_methods[] = { {"add", (PyCFunction)pyrna_prop_add, METH_NOARGS, NULL}, {"remove", (PyCFunction)pyrna_prop_remove, METH_O, NULL}, + /* almost the same as the srna function */ + {"path_to_id", (PyCFunction)pyrna_prop_path_to_id, METH_NOARGS, NULL}, + /* array accessor function */ {"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL}, {"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL}, -- cgit v1.2.3 From 727d9bb05900f7d40ca7ee8cfe78b913c475c0d8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 00:02:21 +0000 Subject: rig-generation from metadata, the idea is to input a simple rig with metadata matching preset definitions these are applied by adding constraints, drivers, control bones etc. making it possible to re-apply changes & improvements to many rigs at once. testcase makes a finger rig (like in BBB) from 3 bones, the base tagged with an id property "type":"finger". still missing is a way to update the driver dep's also fixed an error in the property UI when the active bone is not on the active layer. --- release/scripts/modules/rigify.py | 237 +++++++++++++++++++++++++++++++++ release/scripts/modules/rna_prop_ui.py | 4 + 2 files changed, 241 insertions(+) create mode 100644 release/scripts/modules/rigify.py diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py new file mode 100644 index 00000000000..cc2096d142d --- /dev/null +++ b/release/scripts/modules/rigify.py @@ -0,0 +1,237 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from functools import reduce + +# TODO, have these in a more general module +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + + +empty_layer = [False] * 16 + + +def gen_none(obj, orig_bone_name): + pass + +def get_bone_data(obj, bone_name): + arm = obj.data + pbone = obj.pose.bones[bone_name] + if obj.mode == 'EDIT': + bone = arm.edit_bones[bone_name] + else: + bone = arm.bones[bone_name] + + return obj, arm, pbone, bone + +def bone_basename(name): + return name.split(".")[0] + +def add_bone(arm, name): + '''Must be in editmode''' + bpy.ops.armature.bone_primitive_add(name=name) + return arm.edit_bones[-1] + +def gen_finger(obj, orig_bone_name): + + # *** EDITMODE + + # get assosiated data + obj, arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + + obj.animation_data_create() # needed if its a new armature with no keys + + arm.layer[0] = arm.layer[8] = True + + children = orig_pbone.children_recursive + tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) + + base_name = bone_basename(orig_pbone.name) + + # first make a new bone at the location of the finger + control_ebone = add_bone(arm, base_name) + control_bone_name = control_ebone.name # we dont know if we get the name requested + + # Place the finger bone + head = orig_ebone.head.copy() + tail = orig_ebone.tail.copy() + + control_ebone.head = head + control_ebone.tail = head + ((tail - head).normalize() * tot_len) + control_ebone.roll = orig_ebone.roll + + # now add bones inbetween this and its children recursively + + # switching modes so store names only! + children = [pbone.name for pbone in children] + + # set an alternate layer for driver bones + other_layer = empty_layer[:] + other_layer[8] = True + + + driver_bone_pairs = [] + + for child_bone_name in children: + obj, arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) + + # finger.02 --> finger_driver.02 + driver_bone_name = child_bone_name.split('.') + driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) + + driver_ebone = add_bone(arm, driver_bone_name) + driver_bone_name = driver_ebone.name # cant be too sure! + driver_ebone.layer = other_layer + + new_len = pbone_child.bone.length / 2.0 + + head = child_ebone.head.copy() + tail = child_ebone.tail.copy() + + driver_ebone.head = head + driver_ebone.tail = head + ((tail - head).normalize() * new_len) + driver_ebone.roll = child_ebone.roll + + # Insert driver_ebone in the chain without connected parents + driver_ebone.connected = False + driver_ebone.parent = child_ebone.parent + + child_ebone.connected = False + child_ebone.parent = driver_ebone + + # Add the drivers to these when in posemode. + driver_bone_pairs.append((child_bone_name, driver_bone_name)) + + del control_ebone + + + # *** POSEMODE + bpy.ops.object.mode_set(mode='OBJECT') + + + obj, arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) + obj, arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) + + + # only allow Y scale + control_pbone.lock_scale = (True, False, True) + + control_pbone["bend_ratio"]= 0.4 + prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) + prop["min"] = 0.0 + prop["max"] = 1.0 + + con = orig_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = control_bone_name + + con = orig_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = control_bone_name + + + + # setup child drivers on each new smaller bone added. assume 2 for now. + + # drives the bones + controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name + + i = 0 + for child_bone_name, driver_bone_name in driver_bone_pairs: + + # XXX - todo, any number + if i==2: + break + + obj, arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) + + driver_pbone.rotation_mode = 'YZX' + driver_pbone.driver_add("rotation_euler", 0) + + #obj.driver_add('pose.bones["%s"].scale', 1) + fcurve_driver = obj.animation_data.drivers[-1] # XXX, WATCH THIS + driver = fcurve_driver.driver + + # scale target + tar = driver.targets.new() + tar.name = "scale" + tar.id_type = 'OBJECT' + tar.id = obj + tar.array_index = 1 # Y scale + tar.rna_path = controller_path + '.scale' + + # bend target + tar = driver.targets.new() + tar.name = "br" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["bend_ratio"]' + + # XXX - todo, any number + if i==0: + driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' + elif i==1: + driver.expression = '(-scale+1.0)*pi*2.0*br' + + obj, arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) + + # only allow X rotation + driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) + + i += 1 + + +gen_table = { + "":gen_none, \ + "finger":gen_finger, \ +} + +def generate_rig(context, ob): + + bpy.ops.object.mode_set(mode='OBJECT') + + + # copy object and data + ob.selected = False + ob_new = ob.copy() + ob_new.data = ob.data.copy() + scene = context.scene + scene.objects.link(ob_new) + scene.objects.active = ob_new + ob_new.selected = True + + # enter armature editmode + + + for pbone_name in ob_new.pose.bones.keys(): + bone_type = ob_new.pose.bones[pbone_name].get("type", "") + + try: + func = gen_table[bone_type] + except KeyError: + print("\tunknown type '%s', bone '%s'" % (bone_type, pbone_name)) + + + # Toggle editmode so the pose data is always up to date + bpy.ops.object.mode_set(mode='EDIT') + func(ob_new, pbone_name) + bpy.ops.object.mode_set(mode='OBJECT') + + +if __name__ == "__main__": + generate_rig(bpy.context, bpy.context.object) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 3c12d4304d1..d19449f9404 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -69,6 +69,10 @@ def draw(layout, context, context_member, use_edit = True): pass rna_item = eval("context." + context_member) + + # poll should really get this... + if not rna_item: + return items = rna_item.items() items.sort() -- cgit v1.2.3 From d594320c7f7bfa2eab6638c588c103de49d8f826 Mon Sep 17 00:00:00 2001 From: Roland Hess Date: Tue, 24 Nov 2009 00:56:52 +0000 Subject: RNA update -- added RNA and functions for dealing with the clone UV layer for projection painting. This is just the guts -- someone smart can hook up the UI. --- source/blender/makesrna/intern/rna_mesh.c | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index a4fda162dc5..2eb360aa35c 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -268,6 +268,15 @@ static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render) else return (n == CustomData_get_active_layer_index(fdata, type)); } +static int rna_CustomDataLayer_clone_get(PointerRNA *ptr, int type, int render) +{ + Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_fdata(me); + int n= ((CustomDataLayer*)ptr->data) - fdata->layers; + + return (n == CustomData_get_clone_layer_index(fdata, type)); +} + static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render) { Mesh *me= (Mesh*)ptr->id.data; @@ -281,6 +290,18 @@ static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, else CustomData_set_layer_active_index(fdata, type, n); } +static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, int value, int type, int render) +{ + Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_fdata(me); + int n= ((CustomDataLayer*)ptr->data) - fdata->layers; + + if(value == 0) + return; + + CustomData_set_layer_clone_index(fdata, type, n); +} + static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data) { CustomDataLayer *layer= (CustomDataLayer*)data; @@ -309,6 +330,16 @@ static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); } +static PointerRNA rna_Mesh_clone_uv_texture_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + int index= CustomData_get_clone_layer_index(fdata, CD_MTFACE); + CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index]; + + return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); +} + static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) { Mesh *me= (Mesh*)ptr->data; @@ -325,6 +356,22 @@ static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) } } +static void rna_Mesh_clone_uv_texture_set(PointerRNA *ptr, PointerRNA value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + CustomDataLayer *cdl; + int a; + + for(cdl=fdata->layers, a=0; atotlayer; cdl++, a++) { + if(value.data == cdl) { + CustomData_set_layer_clone_index(fdata, CD_MTFACE, a); + mesh_update_customdata_pointers(me); + return; + } + } +} + static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr) { Mesh *me= (Mesh*)ptr->data; @@ -332,6 +379,13 @@ static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr) return CustomData_get_active_layer(fdata, CD_MTFACE); } +static int rna_Mesh_clone_uv_texture_index_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + return CustomData_get_clone_layer(fdata, CD_MTFACE); +} + static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) { Mesh *me= (Mesh*)ptr->data; @@ -341,6 +395,15 @@ static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) mesh_update_customdata_pointers(me); } +static void rna_Mesh_clone_uv_texture_index_set(PointerRNA *ptr, int value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + + CustomData_set_layer_clone(fdata, CD_MTFACE, value); + mesh_update_customdata_pointers(me); +} + static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max) { Mesh *me= (Mesh*)ptr->data; @@ -480,6 +543,11 @@ static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr) return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 0); } +static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr) +{ + return rna_CustomDataLayer_clone_get(ptr, CD_MTFACE, 0); +} + static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value) { rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 1); @@ -490,6 +558,11 @@ static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value) rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 0); } +static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value) +{ + rna_CustomDataLayer_clone_set(ptr, value, CD_MTFACE, 0); +} + static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value) { Mesh *me= (Mesh*)ptr->id.data; @@ -1108,6 +1181,12 @@ static void rna_def_mtface(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "active_clone", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "active_clone", 0); + RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_clone_get", "rna_MeshTextureFaceLayer_clone_set"); + RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning"); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "MeshTextureFace"); RNA_def_property_ui_text(prop, "Data", ""); @@ -1492,6 +1571,18 @@ static void rna_def_mesh(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index."); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + prop= RNA_def_property(srna, "clone_uv_texture", PROP_POINTER, PROP_UNSIGNED); + RNA_def_property_struct_type(prop, "MeshTextureFaceLayer"); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_clone_uv_texture_get", "rna_Mesh_clone_uv_texture_set", NULL); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source."); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + + prop= RNA_def_property(srna, "clone_uv_texture_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_clone_uv_texture_index_get", "rna_Mesh_clone_uv_texture_index_set", "rna_Mesh_active_uv_texture_index_range"); + RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index."); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + /* Vertex colors */ prop= RNA_def_property(srna, "vertex_colors", PROP_COLLECTION, PROP_NONE); -- cgit v1.2.3 From acdc3f4a44bb1fc88f9a3868c528f08017864817 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 24 Nov 2009 01:09:19 +0000 Subject: commenting out "Todo" labels from bge player stereo options the To Do was more like self-remaining since no one else is currently working with stereo :) I will get back to that once 2.5alpha0 is out. In the mean time let's have a cleaner interface. --- release/scripts/ui/properties_game.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index 6f62d35f8db..293c4786c7f 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -274,8 +274,8 @@ class RENDER_PT_game_stereo(RenderButtonsPanel): # stereo: if stereo_mode == 'STEREO': layout.prop(gs, "stereo_mode") - layout.label(text="To do: Focal Length") - layout.label(text="To do: Eye Separation") + # layout.label(text="To do: Focal Length") # to be done after 2.5alpha0 is out + # layout.label(text="To do: Eye Separation") # to be done after 2.5alpha0 is out # dome: elif stereo_mode == 'DOME': -- cgit v1.2.3 From 6ece64397912509d91beba077911d9396ab70f83 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 24 Nov 2009 02:07:57 +0000 Subject: removed mmb pan/rotate user preference - this is handled by key maps now --- release/scripts/ui/space_userpref.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index eb908d4b41c..4dfcc80ca1d 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1124,8 +1124,6 @@ class USERPREF_PT_input(bpy.types.Panel): sub.label(text="Select With:") sub.row().prop(inputs, "select_mouse", expand=True) - sub.label(text="Middle Mouse:") - sub.row().prop(inputs, "middle_mouse", expand=True) sub.separator() -- cgit v1.2.3 From 04c68559bb94145920ed1fbf5d35d55458327efe Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 24 Nov 2009 04:21:32 +0000 Subject: Keyframing Operator Tweaks for Durian: * Insert Keyframe (IKEY) now only shows the menu requesting to choose a KeyingSet to use if there is no active KeyingSet. To get the old behaviour, the "always_prompt" boolean property for the "ANIM_OT_insert_keyframe_menu" operator should be supplied. * After inserting/deleting keyframes without the menu, a popup menu confirming that the keyframes have been modified is shown. Please note that you do not need to click on this popup. TODO: Make the confirmation popup fade out after a fixed time. --- source/blender/editors/animation/keyframing.c | 90 +++++++++++++++++----- source/blender/editors/space_graph/graph_buttons.c | 2 +- source/blender/editors/space_text/text_ops.c | 2 +- 3 files changed, 71 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index b400739e91c..1854f602761 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -1003,11 +1003,18 @@ static int insert_key_exec (bContext *C, wmOperator *op) if (G.f & G_DEBUG) printf("KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success); - /* report failure? */ - if (success == 0) - BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); - else + /* report failure or do updates? */ + 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); + } + else + BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); + /* free temp context-data if available */ if (dsources.first) { @@ -1026,6 +1033,7 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot) /* identifiers */ ot->name= "Insert Keyframe"; ot->idname= "ANIM_OT_insert_keyframe"; + ot->description= "Insert keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ ot->exec= insert_key_exec; @@ -1034,19 +1042,22 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* settings */ + /* 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); + /* 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"); } /* Insert Key Operator (With Menu) ------------------------ */ - -/* XXX - * This operator pops up a menu which sets gets the index of the keyingset to use, - * setting the global settings, and calling the insert-keyframe operator using these - * settings +/* This operator checks if a menu should be shown for choosing the KeyingSet to use, + * then calls the */ -static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) +static void insert_key_menu_prompt (bContext *C) { Scene *scene= CTX_data_scene(C); KeyingSet *ks; @@ -1077,7 +1088,6 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) } /* builtin Keying Sets */ - // XXX polling the entire list may lag i= -1; for (ks= builtin_keyingsets.first; ks; ks= ks->next) { /* only show KeyingSet if context is suitable */ @@ -1087,8 +1097,25 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) } uiPupMenuEnd(C, pup); +} + +static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) +{ + Scene *scene= CTX_data_scene(C); - return OPERATOR_CANCELLED; + /* 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); + return OPERATOR_CANCELLED; + } + else { + /* just call the exec() on the active keyingset */ + RNA_int_set(op->ptr, "type", 0); + RNA_boolean_set(op->ptr, "confirm_success", 1); + + return op->type->exec(C, op); + } } void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot) @@ -1105,10 +1132,20 @@ void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* properties - * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically + /* 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); + /* 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"); + /* 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", ""); } /* Delete Key Operator ------------------------ */ @@ -1154,11 +1191,17 @@ static int delete_key_exec (bContext *C, wmOperator *op) if (G.f & G_DEBUG) printf("KeyingSet '%s' - Successfully removed %d Keyframes \n", ks->name, success); - /* report failure? */ - if (success == 0) - BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); - else + /* report failure or do updates? */ + 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); + } + else + BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); /* free temp context-data if available */ if (dsources.first) { @@ -1177,6 +1220,7 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot) /* identifiers */ ot->name= "Delete Keyframe"; ot->idname= "ANIM_OT_delete_keyframe"; + ot->description= "Delete keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ ot->exec= delete_key_exec; @@ -1185,10 +1229,14 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* properties - * - NOTE: here the type is int not enum, since many of the indicies here are determined dynamically + /* 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); + /* 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"); } /* Delete Key Operator ------------------------ */ diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 3e25a6e7c29..a13df292990 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -383,7 +383,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* Target ID */ row= uiLayoutRow(box, 0); - uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value: "); + uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value:"); /* Target Property */ // TODO: make this less technical... diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 09c74666b69..c7fcfb15c1c 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -2412,7 +2412,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) first= 1; } else { - BKE_reportf(op->reports, RPT_INFO, "Text not found: %s", st->findstr); + BKE_reportf(op->reports, RPT_ERROR, "Text not found: %s", st->findstr); break; } } while(mode==TEXT_MARK_ALL); -- cgit v1.2.3 From 1c4599522c832abf179714a6369f0e93acc9e685 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 24 Nov 2009 04:30:24 +0000 Subject: Add CLICK to keymap RNA --- source/blender/makesrna/intern/rna_wm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 3233c1d8443..203c7991142 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -42,6 +42,7 @@ EnumPropertyItem event_keymouse_value_items[] = { {KM_ANY, "ANY", 0, "Any", ""}, {KM_PRESS, "PRESS", 0, "Press", ""}, {KM_RELEASE, "RELEASE", 0, "Release", ""}, + {KM_CLICK, "CLICK", 0, "Click", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem event_tweak_value_items[]= { -- cgit v1.2.3 From 4dd78dcbdfdfdf1dd9acf028506ad65fb22c1de1 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 24 Nov 2009 04:59:52 +0000 Subject: Made select operator return FINISHED only when it did something (only PASSTHROUGH otherwise) --- source/blender/editors/armature/editarmature.c | 5 +++- source/blender/editors/curve/editcurve.c | 13 +++++---- source/blender/editors/include/ED_armature.h | 2 +- source/blender/editors/include/ED_curve.h | 2 +- source/blender/editors/include/ED_mball.h | 2 +- source/blender/editors/include/ED_mesh.h | 2 +- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/mesh/editmesh_mods.c | 9 ++++-- source/blender/editors/metaball/mball_edit.c | 6 +++- source/blender/editors/object/object_lattice.c | 6 +++- .../blender/editors/space_view3d/view3d_select.c | 33 ++++++++++++++-------- 11 files changed, 55 insertions(+), 27 deletions(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index db499c72908..78ba73ce5d5 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -1875,7 +1875,7 @@ void ED_armature_deselectall(Object *obedit, int toggle, int doundo) /* context: editmode armature in view3d */ -void mouse_armature(bContext *C, short mval[2], int extend) +int mouse_armature(bContext *C, short mval[2], int extend) { Object *obedit= CTX_data_edit_object(C); bArmature *arm= obedit->data; @@ -1946,7 +1946,10 @@ void mouse_armature(bContext *C, short mval[2], int extend) } WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, vc.obedit); + return 1; } + + return 0; } void ED_armature_edit_free(struct Object *ob) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 7801168dd83..e53b419c6ea 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -3055,7 +3055,7 @@ void CURVE_OT_make_segment(wmOperatorType *ot) /***************** pick select from 3d view **********************/ -void mouse_nurb(bContext *C, short mval[2], int extend) +int mouse_nurb(bContext *C, short mval[2], int extend) { Object *obedit= CTX_data_edit_object(C); Curve *cu= obedit->data; @@ -3111,12 +3111,15 @@ void mouse_nurb(bContext *C, short mval[2], int extend) } - } + if(nu!=get_actNurb(obedit)) + set_actNurb(obedit, nu); - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + + return 1; + } - if(nu!=get_actNurb(obedit)) - set_actNurb(obedit, nu); + return 0; } /******************** spin operator ***********************/ diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 1836729e419..2aa47311515 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -107,7 +107,7 @@ 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, short hits, short extend); -void mouse_armature(struct bContext *C, short mval[2], int extend); +int mouse_armature(struct bContext *C, short mval[2], int extend); int join_armature_exec(struct bContext *C, struct wmOperator *op); struct Bone *get_indexed_bone (struct Object *ob, int index); float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]); diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index fea684971b2..66a481ca5ac 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -50,7 +50,7 @@ void load_editNurb (struct Object *obedit); void make_editNurb (struct Object *obedit); void free_editNurb (struct Object *obedit); -void mouse_nurb (struct bContext *C, short mval[2], int extend); +int mouse_nurb (struct bContext *C, short mval[2], int extend); struct Nurb *add_nurbs_primitive(struct bContext *C, int type, int newname); diff --git a/source/blender/editors/include/ED_mball.h b/source/blender/editors/include/ED_mball.h index 6708a73e088..b21bcb0cc09 100644 --- a/source/blender/editors/include/ED_mball.h +++ b/source/blender/editors/include/ED_mball.h @@ -35,7 +35,7 @@ void ED_keymap_metaball(struct wmKeyConfig *keyconf); struct MetaElem *add_metaball_primitive(struct bContext *C, int type, int newname); -void mouse_mball(struct bContext *C, short mval[2], int extend); +int mouse_mball(struct bContext *C, short mval[2], int extend); void free_editMball(struct Object *obedit); void make_editMball(struct Object *obedit); diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index fa47426c70a..35e1f10b516 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -149,7 +149,7 @@ void EM_free_data_layer(struct EditMesh *em, struct CustomData *data, int type) extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs; void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em); -void mouse_mesh(struct bContext *C, short mval[2], short extend); +int mouse_mesh(struct bContext *C, short mval[2], short extend); int EM_check_backbuf(unsigned int index); int EM_mask_init_backbuf_border(struct ViewContext *vc, short mcords[][2], short tot, short xmin, short ymin, short xmax, short ymax); void EM_free_backbuf(void); diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index e48a98a65f1..1785b0303cb 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -102,7 +102,7 @@ void ED_object_constraint_update(struct Object *ob); void ED_object_constraint_dependency_update(struct Scene *scene, struct Object *ob); /* object_lattice.c */ -void mouse_lattice(struct bContext *C, short mval[2], int extend); +int mouse_lattice(struct bContext *C, short mval[2], int extend); void undo_push_lattice(struct bContext *C, char *name); /* object_shapekey.c */ diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index e14dedf6002..2d1452c8cb1 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -2222,7 +2222,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot) /* here actual select happens */ /* gets called via generic mouse select operator */ -void mouse_mesh(bContext *C, short mval[2], short extend) +int mouse_mesh(bContext *C, short mval[2], short extend) { ViewContext vc; EditVert *eve; @@ -2281,10 +2281,13 @@ void mouse_mesh(bContext *C, short mval[2], short extend) vc.em->mat_nr= efa->mat_nr; // BIF_preview_changed(ID_MA); } - } - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + + return 1; + } + return 0; } /* *********** select linked ************* */ diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 3751f8875f6..09200514c0f 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -517,7 +517,7 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot) /* Select MetaElement with mouse click (user can select radius circle or * stiffness circle) */ -void mouse_mball(bContext *C, short mval[2], int extend) +int mouse_mball(bContext *C, short mval[2], int extend) { static MetaElem *startelem=NULL; Object *obedit= CTX_data_edit_object(C); @@ -588,8 +588,12 @@ void mouse_mball(bContext *C, short mval[2], int extend) mb->lastelem= act; WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb); + + return 1; } } + + return 0; } diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c index b49c1eb5902..3f27ea407a2 100644 --- a/source/blender/editors/object/object_lattice.c +++ b/source/blender/editors/object/object_lattice.c @@ -298,7 +298,7 @@ static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel) return data.bp; } -void mouse_lattice(bContext *C, short mval[2], int extend) +int mouse_lattice(bContext *C, short mval[2], int extend) { ViewContext vc; BPoint *bp= NULL; @@ -315,7 +315,11 @@ void mouse_lattice(bContext *C, short mval[2], int extend) bp->f1 ^= SELECT; /* swap */ WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + + return 1; } + + return 0; } /******************************** Undo *************************/ diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 508bf56cc71..7f08a4b91e3 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -999,7 +999,7 @@ static short mixed_bones_object_selectbuffer(ViewContext *vc, unsigned int *buff /* mval is region coords */ -static void mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate) +static int mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate) { ViewContext vc; ARegion *ar= CTX_wm_region(C); @@ -1007,6 +1007,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, Scene *scene= CTX_data_scene(C); Base *base, *startbase=NULL, *basact=NULL, *oldbasact=NULL; int temp, a, dist=100; + int retval = 0; short hits; /* setup view context for argument to callbacks */ @@ -1153,6 +1154,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, basact->flag|= SELECT; basact->object->flag= basact->flag; + retval = 1; WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, basact->object); WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, basact->object); @@ -1172,6 +1174,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, /* so, do we have something selected? */ if(basact) { + retval = 1; if(vc.obedit) { /* only do select */ @@ -1205,6 +1208,8 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter, WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); } } + + return retval; } /* ******************** border and circle ************************************** */ @@ -1611,31 +1616,37 @@ static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event) short extend= RNA_boolean_get(op->ptr, "extend"); short center= RNA_boolean_get(op->ptr, "center"); short enumerate= RNA_boolean_get(op->ptr, "enumerate"); + int retval = 0; view3d_operator_needs_opengl(C); if(obedit) { if(obedit->type==OB_MESH) - mouse_mesh(C, event->mval, extend); + retval = mouse_mesh(C, event->mval, extend); else if(obedit->type==OB_ARMATURE) - mouse_armature(C, event->mval, extend); + retval = mouse_armature(C, event->mval, extend); else if(obedit->type==OB_LATTICE) - mouse_lattice(C, event->mval, extend); + retval = mouse_lattice(C, event->mval, extend); else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) - mouse_nurb(C, event->mval, extend); + retval = mouse_nurb(C, event->mval, extend); else if(obedit->type==OB_MBALL) - mouse_mball(C, event->mval, extend); + retval = mouse_mball(C, event->mval, extend); } else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) - PE_mouse_particles(C, event->mval, extend); + return PE_mouse_particles(C, event->mval, extend); else if(obact && paint_facesel_test(obact)) - face_select(C, obact, event->mval, extend); + retval = face_select(C, obact, event->mval, extend); else - mouse_select(C, event->mval, extend, center, enumerate); + retval = mouse_select(C, event->mval, extend, center, enumerate); - /* allowing tweaks */ - return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED; + /* passthrough allows tweaks + * FINISHED to signal one operator worked + * */ + if (retval) + return OPERATOR_PASS_THROUGH|OPERATOR_FINISHED; + else + return OPERATOR_PASS_THROUGH; /* nothing selected, just passthrough */ } void VIEW3D_OT_select(wmOperatorType *ot) -- cgit v1.2.3 From 2597d4966456f8f008af03ee6bae62feb9d6ac3c Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 24 Nov 2009 05:03:44 +0000 Subject: Extend handler return values to distinguish between events that have been handled and passed through and those that haven't been handled at all. This also solves a bug with Click event (not visible with keymaps that use Click in default) --- .../blender/windowmanager/intern/wm_event_system.c | 53 +++++++++++++--------- source/blender/windowmanager/intern/wm_operators.c | 2 +- source/blender/windowmanager/wm_event_system.h | 1 + 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 534edde5d4a..24a0bba310d 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -937,6 +937,10 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand retval= wm_operator_invoke(C, ot, event, properties, NULL); } + /* Finished and pass through flag as handled */ + if(retval == (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH)) + return WM_HANDLER_HANDLED; + if(retval & OPERATOR_PASS_THROUGH) return WM_HANDLER_CONTINUE; @@ -1110,7 +1114,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) /* modal+blocking handler */ if(handler->flag & WM_HANDLER_BLOCKING) - action= WM_HANDLER_BREAK; + action |= WM_HANDLER_BREAK; if(handler->keymap) { wmKeyMap *keymap= WM_keymap_active(wm, handler->keymap); @@ -1122,28 +1126,28 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) event->keymap_idname= kmi->idname; /* weak, but allows interactive callback to not use rawkey */ - action= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr); - if(action==WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */ + action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr); + if(action & WM_HANDLER_BREAK) /* not always_pass here, it denotes removed handler */ break; } } } } else if(handler->ui_handle) { - action= wm_handler_ui_call(C, handler, event); + action |= wm_handler_ui_call(C, handler, event); } else if(handler->type==WM_HANDLER_FILESELECT) { /* screen context changes here */ - action= wm_handler_fileselect_call(C, handlers, handler, event); + action |= wm_handler_fileselect_call(C, handlers, handler, event); } else { /* modal, swallows all */ - action= wm_handler_operator_call(C, handlers, handler, event, NULL); + action |= wm_handler_operator_call(C, handlers, handler, event, NULL); } - if(action==WM_HANDLER_BREAK) { + if(action & WM_HANDLER_BREAK) { if(always_pass) - action= WM_HANDLER_CONTINUE; + action &= ~WM_HANDLER_BREAK; else break; } @@ -1160,10 +1164,10 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) if (win && win->last_type == event->type && win->last_val == KM_PRESS) { event->val = KM_CLICK; - action = wm_handlers_do(C, event, handlers); + action |= wm_handlers_do(C, event, handlers); /* revert value if not handled */ - if (action == WM_HANDLER_CONTINUE) { + if ((action & WM_HANDLER_BREAK) == 0) { event->val = KM_RELEASE; } } @@ -1261,12 +1265,12 @@ void wm_event_do_handlers(bContext *C) for(win= CTX_wm_manager(C)->windows.first; win; win= win->next) { wmEvent *event; + int action = WM_HANDLER_CONTINUE; if( win->screen==NULL ) wm_event_free_all(win); while( (event= win->queue.first) ) { - int action; CTX_wm_window_set(C, win); @@ -1278,7 +1282,7 @@ void wm_event_do_handlers(bContext *C) wm_window_make_drawable(C, win); /* first we do priority handlers, modal + some limited keymaps */ - action= wm_handlers_do(C, event, &win->modalhandlers); + action |= wm_handlers_do(C, event, &win->modalhandlers); /* fileread case */ if(CTX_wm_window(C)==NULL) @@ -1287,7 +1291,7 @@ void wm_event_do_handlers(bContext *C) /* builtin tweak, if action is break it removes tweak */ wm_tweakevent_test(C, event, action); - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { ScrArea *sa; ARegion *ar; int doit= 0; @@ -1304,15 +1308,15 @@ void wm_event_do_handlers(bContext *C) if(wm_event_inside_i(event, &sa->totrct)) { CTX_wm_area_set(C, sa); - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { for(ar=sa->regionbase.first; ar; ar= ar->next) { if(wm_event_inside_i(event, &ar->winrct)) { CTX_wm_region_set(C, ar); - action= wm_handlers_do(C, event, &ar->handlers); + action |= wm_handlers_do(C, event, &ar->handlers); doit |= (BLI_in_rcti(&ar->winrct, event->x, event->y)); - if(action==WM_HANDLER_BREAK) + if(action & WM_HANDLER_BREAK) break; } } @@ -1320,8 +1324,8 @@ void wm_event_do_handlers(bContext *C) CTX_wm_region_set(C, NULL); - if(action==WM_HANDLER_CONTINUE) - action= wm_handlers_do(C, event, &sa->handlers); + if((action & WM_HANDLER_BREAK) == 0) + action |= wm_handlers_do(C, event, &sa->handlers); CTX_wm_area_set(C, NULL); @@ -1329,12 +1333,12 @@ void wm_event_do_handlers(bContext *C) } } - if(action==WM_HANDLER_CONTINUE) { + if((action & WM_HANDLER_BREAK) == 0) { /* also some non-modal handlers need active area/region */ CTX_wm_area_set(C, area_event_inside(C, event->x, event->y)); CTX_wm_region_set(C, region_event_inside(C, event->x, event->y)); - action= wm_handlers_do(C, event, &win->handlers); + action |= wm_handlers_do(C, event, &win->handlers); /* fileread case */ if(CTX_wm_window(C)==NULL) @@ -1350,8 +1354,13 @@ void wm_event_do_handlers(bContext *C) } /* store last event for this window */ - win->last_type = event->type; - win->last_val = event->val; + if (action == WM_HANDLER_CONTINUE) { + win->last_type = event->type; + win->last_val = event->val; + } else { + win->last_type = -1; + win->last_val = 0; + } /* unlink and free here, blender-quit then frees all */ BLI_remlink(&win->queue, event); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 5116b9b39a0..82506091bbd 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2037,7 +2037,7 @@ void wm_tweakevent_test(bContext *C, wmEvent *event, int action) } } else { - if(action==WM_HANDLER_BREAK) { + if(action & WM_HANDLER_BREAK) { WM_gesture_end(C, win->tweak); win->tweak= NULL; } diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h index b7c881629a2..78655a9fcd3 100644 --- a/source/blender/windowmanager/wm_event_system.h +++ b/source/blender/windowmanager/wm_event_system.h @@ -31,6 +31,7 @@ /* return value of handler-operator call */ #define WM_HANDLER_CONTINUE 0 #define WM_HANDLER_BREAK 1 +#define WM_HANDLER_HANDLED 2 struct ScrArea; struct ARegion; -- cgit v1.2.3 From 85301a57bf0a9295721894e9dd95eb5c42e13913 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 24 Nov 2009 05:57:47 +0000 Subject: Bugfix for Parenting to Bones: Reshuffled the code a bit so that the parent-type gets set before the parent inverse matrices are calculated. Thanks to Claas Eicke Kuhnen (cekuhnen) on Blender Artists for catching this. --- source/blender/editors/object/object_relations.c | 82 ++++++++++++------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index a6feefa2c5e..95f6f3802af 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -598,50 +598,10 @@ static int parent_set_exec(bContext *C, wmOperator *op) /* handle types */ if (pchan) - strcpy (ob->parsubstr, pchan->name); + strcpy(ob->parsubstr, pchan->name); else ob->parsubstr[0]= 0; - - /* constraint */ - if(partype == PAR_PATH_CONST) { - bConstraint *con; - bFollowPathConstraint *data; - float cmat[4][4], vec[3]; - - con = add_ob_constraint(ob, "AutoPath", CONSTRAINT_TYPE_FOLLOWPATH); - - data = con->data; - data->tar = par; - - get_constraint_target_matrix(scene, con, 0, CONSTRAINT_OBTYPE_OBJECT, NULL, cmat, scene->r.cfra - give_timeoffset(ob)); - sub_v3_v3v3(vec, ob->obmat[3], cmat[3]); - - ob->loc[0] = vec[0]; - ob->loc[1] = vec[1]; - ob->loc[2] = vec[2]; - } - else if(pararm && ob->type==OB_MESH && par->type == OB_ARMATURE) { - if(partype == PAR_ARMATURE_NAME) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_NAME); - else if(partype == PAR_ARMATURE_ENVELOPE) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_ENVELOPE); - else if(partype == PAR_ARMATURE_AUTO) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_AUTO); - - /* get corrected inverse */ - ob->partype= PAROBJECT; - what_does_parent(scene, ob, &workob); - invert_m4_m4(ob->parentinv, workob.obmat); - } - else { - /* calculate inverse parent matrix */ - what_does_parent(scene, ob, &workob); - invert_m4_m4(ob->parentinv, workob.obmat); - } - - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; - if(partype == PAR_PATH_CONST) ; /* don't do anything here, since this is not technically "parenting" */ else if( ELEM(partype, PAR_CURVE, PAR_LATTICE) || pararm ) @@ -683,6 +643,46 @@ static int parent_set_exec(bContext *C, wmOperator *op) ob->partype= PARBONE; /* note, dna define, not operator property */ else ob->partype= PAROBJECT; /* note, dna define, not operator property */ + + /* constraint */ + if(partype == PAR_PATH_CONST) { + bConstraint *con; + bFollowPathConstraint *data; + float cmat[4][4], vec[3]; + + con = add_ob_constraint(ob, "AutoPath", CONSTRAINT_TYPE_FOLLOWPATH); + + data = con->data; + data->tar = par; + + get_constraint_target_matrix(scene, con, 0, CONSTRAINT_OBTYPE_OBJECT, NULL, cmat, scene->r.cfra - give_timeoffset(ob)); + sub_v3_v3v3(vec, ob->obmat[3], cmat[3]); + + ob->loc[0] = vec[0]; + ob->loc[1] = vec[1]; + ob->loc[2] = vec[2]; + } + else if(pararm && ob->type==OB_MESH && par->type == OB_ARMATURE) { + if(partype == PAR_ARMATURE_NAME) + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_NAME); + else if(partype == PAR_ARMATURE_ENVELOPE) + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_ENVELOPE); + else if(partype == PAR_ARMATURE_AUTO) + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_AUTO); + + /* get corrected inverse */ + ob->partype= PAROBJECT; + what_does_parent(scene, ob, &workob); + + invert_m4_m4(ob->parentinv, workob.obmat); + } + else { + /* calculate inverse parent matrix */ + what_does_parent(scene, ob, &workob); + invert_m4_m4(ob->parentinv, workob.obmat); + } + + ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; } } } -- cgit v1.2.3 From d55ac4da2bae18c3623c8ffe656dc04330241c04 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 09:24:32 +0000 Subject: - added rna api function scene.update(), needed for rig generation to update driver deps - removed some warnings --- release/scripts/modules/rigify.py | 4 ++- source/blender/blenkernel/BKE_constraint.h | 2 +- source/blender/blenkernel/intern/action.c | 1 - source/blender/blenkernel/intern/constraint.c | 2 +- source/blender/blenlib/BLI_listbase.h | 2 +- source/blender/blenlib/intern/listbase.c | 2 +- source/blender/editors/object/object_relations.c | 35 ++++++++++-------------- source/blender/makesrna/intern/rna_scene_api.c | 27 ++++++++++++++---- 8 files changed, 44 insertions(+), 31 deletions(-) diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py index cc2096d142d..6f316a7ef4f 100644 --- a/release/scripts/modules/rigify.py +++ b/release/scripts/modules/rigify.py @@ -231,7 +231,9 @@ def generate_rig(context, ob): bpy.ops.object.mode_set(mode='EDIT') func(ob_new, pbone_name) bpy.ops.object.mode_set(mode='OBJECT') - + + # needed to update driver deps + context.scene.update() if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) diff --git a/source/blender/blenkernel/BKE_constraint.h b/source/blender/blenkernel/BKE_constraint.h index a8ccc84a7c3..e9110b99098 100644 --- a/source/blender/blenkernel/BKE_constraint.h +++ b/source/blender/blenkernel/BKE_constraint.h @@ -114,7 +114,7 @@ bConstraintTypeInfo *get_constraint_typeinfo(int type); void unique_constraint_name(struct bConstraint *con, struct ListBase *list); void free_constraints(struct ListBase *list); -void copy_constraints(struct ListBase *dst, struct ListBase *src); +void copy_constraints(struct ListBase *dst, const struct ListBase *src); void relink_constraints(struct ListBase *list); void free_constraint_data(struct bConstraint *con); diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 8fe80edabb9..cb6fef0bc30 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -153,7 +153,6 @@ void make_local_action(bAction *act) } } - void free_action (bAction *act) { /* sanity check */ diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 46fdec90528..0f3213cbc5d 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -3788,7 +3788,7 @@ void relink_constraints (ListBase *conlist) /* ......... */ /* duplicate all of the constraints in a constraint stack */ -void copy_constraints (ListBase *dst, ListBase *src) +void copy_constraints (ListBase *dst, const ListBase *src) { bConstraint *con, *srccon; diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h index 21b4c83bd88..bd735888f95 100644 --- a/source/blender/blenlib/BLI_listbase.h +++ b/source/blender/blenlib/BLI_listbase.h @@ -55,7 +55,7 @@ void BLI_sortlist(struct ListBase *listbase, int (*cmp)(void *, void *)); void BLI_freelist(struct ListBase *listbase); int BLI_countlist(struct ListBase *listbase); void BLI_freelinkN(struct ListBase *listbase, void *vlink); -void BLI_duplicatelist(struct ListBase *list1, struct ListBase *list2); /* copy from 2 to 1 */ +void BLI_duplicatelist(struct ListBase *list1, const struct ListBase *list2); /* create a generic list node containing link to provided data */ struct LinkData *BLI_genericNodeN(void *data); diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c index b3a4722d6d9..166f4ed029e 100644 --- a/source/blender/blenlib/intern/listbase.c +++ b/source/blender/blenlib/intern/listbase.c @@ -343,7 +343,7 @@ int BLI_findindex(ListBase *listbase, void *vlink) return -1; } -void BLI_duplicatelist(ListBase *list1, ListBase *list2) /* copy from 2 to 1 */ +void BLI_duplicatelist(ListBase *list1, const ListBase *list2) { struct Link *link1, *link2; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 95f6f3802af..ac7e76abc13 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -616,26 +616,21 @@ static int parent_set_exec(bContext *C, wmOperator *op) // XXX currently this should only happen for meshes, curves, surfaces, and lattices - this stuff isn't available for metas yet if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE)) { - switch (partype) - { - case PAR_CURVE: /* curve deform */ - { - CurveModifierData *cmd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Curve); - cmd->object= par; - } - break; - case PAR_LATTICE: /* lattice deform */ - { - LatticeModifierData *lmd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Lattice); - lmd->object= par; - } - break; - default: /* armature deform */ - { - ArmatureModifierData *amd= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Armature); - amd->object= par; - } - break; + ModifierData *md; + + switch (partype) { + case PAR_CURVE: /* curve deform */ + md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Curve); + ((CurveModifierData *)md)->object= par; + break; + case PAR_LATTICE: /* lattice deform */ + md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Lattice); + ((LatticeModifierData *)md)->object= par; + break; + default: /* armature deform */ + md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Armature); + ((ArmatureModifierData *)md)->object= par; + break; } } } diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 6b21f886712..05fd9889e31 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -44,16 +44,29 @@ #include "BKE_depsgraph.h" #include "ED_object.h" +#include "ED_anim_api.h" #include "WM_api.h" -static void rna_Scene_set_frame(Scene *sce, bContext *C, int frame) +static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame) { - sce->r.cfra= frame; - CLAMP(sce->r.cfra, MINAFRAME, MAXFRAME); - scene_update_for_newframe(sce, (1<<20) - 1); + scene->r.cfra= frame; + CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME); + scene_update_for_newframe(scene, (1<<20) - 1); - WM_event_add_notifier(C, NC_SCENE|ND_FRAME, sce); + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); +} + +static void rna_Scene_update(Scene *scene, bContext *C) +{ + /* added to update driver deps, copied from do_graph_region_driver_buttons + * but can be extended with update options */ + + /* rebuild depsgraph for the new deps */ + DAG_scene_sort(scene); + + /* force an update of depsgraph */ + ED_anim_dag_flush_update(C); } static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports, @@ -96,6 +109,10 @@ void RNA_api_scene(StructRNA *srna) parm= RNA_def_int(func, "frame", 0, MINAFRAME, MAXFRAME, "", "Frame number to set.", MINAFRAME, MAXFRAME); RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "update", "rna_Scene_update"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT); + RNA_def_function_ui_description(func, "Rebuild the scene dependancy graph."); + /* Add Keying Set */ func= RNA_def_function(srna, "add_keying_set", "rna_Scene_add_keying_set"); RNA_def_function_ui_description(func, "Add a new Keying Set to Scene."); -- cgit v1.2.3 From 82a1ec17ce62a3e19b4adbdd9632c5067f8efd97 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 24 Nov 2009 09:46:53 +0000 Subject: quicktime : small ui update to include the two qt import options in the output panel + pep8 fixes --- release/scripts/ui/properties_render.py | 34 +++++++-------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index bb634ee6fe9..edf1a9abda4 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -344,30 +344,11 @@ class RENDER_PT_output(RenderButtonsPanel): split = layout.split() split.prop(rd, "tiff_bit") - -class RENDER_PT_QTencoding(RenderButtonsPanel): - bl_label = "Encoding" - bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - rd = context.scene.render_data - return rd.file_format in ('QUICKTIME_QTKIT') # QUICKTIME will be added later - - def draw(self, context): - layout = self.layout - - rd = context.scene.render_data - wide_ui = context.region.width > narrowui - - split = layout.split() - - split.prop(rd, "quicktime_codec_type") - - split = layout.split() - - if rd.file_format == 'QUICKTIME_QTKIT': - split.prop(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True) + elif rd.file_format == 'QUICKTIME_QTKIT': + split = layout.split() + col = split.column() + col.prop(rd, "quicktime_codec_type") + col.prop(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True) class RENDER_PT_encoding(RenderButtonsPanel): @@ -476,7 +457,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel): scene = context.scene rd = scene.render_data wide_ui = context.region.width > narrowui - + row = layout.row().split() sub = row.row(align=True).split(percentage=0.75) sub.menu("RENDER_MT_presets", text="Presets") @@ -511,7 +492,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel): sub.label(text="Frame Rate:") sub.prop(rd, "fps") - sub.prop(rd, "fps_base", text="/") + sub.prop(rd, "fps_base", text="/") class RENDER_PT_stamp(RenderButtonsPanel): @@ -568,7 +549,6 @@ bpy.types.register(RENDER_PT_dimensions) bpy.types.register(RENDER_PT_antialiasing) bpy.types.register(RENDER_PT_shading) bpy.types.register(RENDER_PT_output) -bpy.types.register(RENDER_PT_QTencoding) bpy.types.register(RENDER_PT_encoding) bpy.types.register(RENDER_PT_performance) bpy.types.register(RENDER_PT_post_processing) -- cgit v1.2.3 From 0f280e631f48df114119f67e4c7a23cc6b120f80 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 24 Nov 2009 09:55:41 +0000 Subject: Spline IK Bugfix: "Y Stretch" option was broken in UI due to mismatch between RNA and scripts. --- source/blender/makesrna/intern/rna_constraint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 5bf3c52c989..74dabea318e 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1718,7 +1718,7 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "y_streching", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "y_stretch", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED); RNA_def_property_ui_text(prop, "Y Stretch", "Stretch the Y axis of the bones to fit the curve."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); -- cgit v1.2.3 From 78ce1fb6ca80dfbdde445f1b2dc01691f4ac69ab Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 24 Nov 2009 10:19:07 +0000 Subject: compile fix when compiling with WAIT_FOR_VSYNC = 1 (btw, is this still used ?) --- intern/ghost/intern/GHOST_WindowCocoa.mm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index 24abc9c45fc..b1b23963b3d 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -858,15 +858,18 @@ GHOST_TSuccess GHOST_WindowCocoa::installDrawingContext(GHOST_TDrawingContextTyp if (!s_firstOpenGLcontext) s_firstOpenGLcontext = tmpOpenGLContext; #ifdef WAIT_FOR_VSYNC + { + GLint swapInt = 1; /* wait for vsync, to avoid tearing artifacts */ - [tmpOpenGLContext setValues:1 forParameter:NSOpenGLCPSwapInterval]; + [tmpOpenGLContext setValues:&swapInt forParameter:NSOpenGLCPSwapInterval]; + } #endif - [m_openGLView setOpenGLContext:tmpOpenGLContext]; - [tmpOpenGLContext setView:m_openGLView]; - - m_openGLContext = tmpOpenGLContext; + [m_openGLView setOpenGLContext:tmpOpenGLContext]; + [tmpOpenGLContext setView:m_openGLView]; + + m_openGLContext = tmpOpenGLContext; break; - + case GHOST_kDrawingContextTypeNone: success = GHOST_kSuccess; break; -- cgit v1.2.3 From 96b6f32c54652f80c3736e4d1664e87f26648054 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 24 Nov 2009 10:55:52 +0000 Subject: Made render quality settings proper percentages. --- release/scripts/ui/properties_render.py | 4 ++-- source/blender/makesrna/intern/rna_scene.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index edf1a9abda4..2e2acbdb661 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -348,7 +348,7 @@ class RENDER_PT_output(RenderButtonsPanel): split = layout.split() col = split.column() col.prop(rd, "quicktime_codec_type") - col.prop(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True) + col.prop(rd, "quicktime_codec_spatial_quality", text="Quality") class RENDER_PT_encoding(RenderButtonsPanel): @@ -444,7 +444,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel): if wide_ui: col = split.column() col.prop(rd, "pixel_filter", text="") - col.prop(rd, "filter_size", text="Size", slider=True) + col.prop(rd, "filter_size", text="Size") class RENDER_PT_dimensions(RenderButtonsPanel): diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index babbf701bd6..bc9fa9d5573 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1625,7 +1625,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) /* JPEG and AVI JPEG */ - prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "quality", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "quality"); RNA_def_property_range(prop, 1, 100); RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies."); @@ -1720,7 +1720,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); - prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "quicktime_codec_spatial_quality", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "qtcodecsettings.codecSpatialQuality"); RNA_def_property_range(prop, 0, 100); RNA_def_property_ui_text(prop, "Spatial quality", "Intra-frame spatial quality level"); -- cgit v1.2.3 From 397b52bdc7b85831ee6b706133f76ffea83f6d59 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 24 Nov 2009 11:40:35 +0000 Subject: Removed split region operator. This was only for tests, and was not recoverable. --- source/blender/editors/screen/screen_ops.c | 54 +----------------------------- 1 file changed, 1 insertion(+), 53 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index ccc4deddb24..4712d1c5533 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1994,52 +1994,6 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot) ot->poll= ED_operator_screenactive; } -/* ************** region split operator ***************************** */ - -/* insert a region in the area region list */ -static int region_split_exec(bContext *C, wmOperator *op) -{ - ARegion *ar= CTX_wm_region(C); - - if(ar->regiontype==RGN_TYPE_HEADER) - BKE_report(op->reports, RPT_ERROR, "Cannot split header"); - else if(ar->alignment==RGN_ALIGN_QSPLIT) - BKE_report(op->reports, RPT_ERROR, "Cannot split further"); - else { - ScrArea *sa= CTX_wm_area(C); - ARegion *newar= BKE_area_region_copy(sa->type, ar); - int dir= RNA_enum_get(op->ptr, "type"); - - BLI_insertlinkafter(&sa->regionbase, ar, newar); - - newar->alignment= ar->alignment; - - if(dir=='h') - ar->alignment= RGN_ALIGN_HSPLIT; - else - ar->alignment= RGN_ALIGN_VSPLIT; - - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - } - - return OPERATOR_FINISHED; -} - -static void SCREEN_OT_region_split(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Split Region"; - ot->description= "Split area by directional position."; - ot->idname= "SCREEN_OT_region_split"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= region_split_exec; - ot->poll= ED_operator_areaactive; - - RNA_def_enum(ot->srna, "type", prop_direction_items, 'h', "Direction", ""); -} - /* ************** region four-split operator ***************************** */ /* insert a region in the area region list */ @@ -3592,7 +3546,6 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_area_join); WM_operatortype_append(SCREEN_OT_area_dupli); WM_operatortype_append(SCREEN_OT_area_swap); - WM_operatortype_append(SCREEN_OT_region_split); WM_operatortype_append(SCREEN_OT_region_foursplit); WM_operatortype_append(SCREEN_OT_region_flip); WM_operatortype_append(SCREEN_OT_region_scale); @@ -3692,16 +3645,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0); /* tests */ - WM_keymap_add_item(keymap, "SCREEN_OT_region_split", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT|KM_SHIFT, 0); - + WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_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); /* files */ -- cgit v1.2.3 From 2e7dbdf02574a3cf6a9787cba82f118263d3c623 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 24 Nov 2009 11:48:16 +0000 Subject: Depsgraph/Drivers * Removed ED_anim_dag_flush_update and ED_anim_object_flush_update. These were wrapping DAG_* calls and were intended be used instead of them when doing a DAG update from editors. That goes against the design in my opinion, no matter who calls the DAG, that should update the editors correctly, so any special checks in such functions for editors should be avoided. * Driver RNA properties now do updates again, including DAG scene sorting, text buttons no longer update as you type anymore, so this should be safe I think. * Remove scene.update() RNA function, all properties/functions should do this automatically, if changing some property or calling a function/operator does not do the correct update, that should be fixed. --- source/blender/editors/animation/anim_deps.c | 14 -------- source/blender/editors/animation/drivers.c | 4 +-- source/blender/editors/animation/keyframing.c | 10 +++--- source/blender/editors/animation/keyingsets.c | 4 +-- source/blender/editors/armature/poseobject.c | 8 ++--- source/blender/editors/include/ED_anim_api.h | 5 --- source/blender/editors/object/object_add.c | 6 ++-- source/blender/editors/object/object_edit.c | 5 ++- source/blender/editors/object/object_relations.c | 18 +++++----- source/blender/editors/object/object_transform.c | 4 +-- source/blender/editors/space_graph/graph_buttons.c | 8 ++--- source/blender/editors/space_view3d/view3d_snap.c | 8 +++-- source/blender/makesrna/intern/rna_fcurve.c | 39 +++++++++++++++++----- source/blender/makesrna/intern/rna_scene_api.c | 16 --------- 14 files changed, 69 insertions(+), 80 deletions(-) diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 9d39911548b..7a96c3b32a3 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -55,20 +55,6 @@ #include "WM_api.h" #include "WM_types.h" -/* ***************** depsgraph calls and anim updates ************* */ -/* ***************** only these can be called from editors ******** */ - -void ED_anim_dag_flush_update(const bContext *C) -{ - DAG_ids_flush_update(0); -} - -/* flushes changes from object to all relations in scene */ -void ED_anim_object_flush_update(const bContext *C, Object *ob) -{ - DAG_id_update_flags(&ob->id); -} - /* **************************** pose <-> action syncing ******************************** */ /* Summary of what needs to be synced between poses and actions: * 1) Flags diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index a91e67ffc91..e731faaf103 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -398,7 +398,7 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); // XXX @@ -462,7 +462,7 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); // XXX diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 1854f602761..bc706271359 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -1023,7 +1023,7 @@ static int insert_key_exec (bContext *C, wmOperator *op) } /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } @@ -1210,7 +1210,7 @@ static int delete_key_exec (bContext *C, wmOperator *op) } /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } @@ -1277,7 +1277,7 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) CTX_DATA_END; /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, NULL); @@ -1367,7 +1367,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); @@ -1437,7 +1437,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) if(success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, ND_KEYS, NULL); diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index d7406a7bcfd..39dd652e649 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -366,7 +366,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); @@ -444,7 +444,7 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op) if (success) { /* send updates */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* for now, only send ND_KEYS for KeyingSets */ WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 18750d96f86..846e6fcc23b 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -241,10 +241,10 @@ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob) /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ if ((ob->recalc & OB_RECALC)==0) { ob->recalc |= OB_RECALC; - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); } else - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); /* calculate path over requested range */ for (CFRA=sfra; CFRA<=efra; CFRA++) { @@ -355,10 +355,10 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op) /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ if ((ob->recalc & OB_RECALC)==0) { ob->recalc |= OB_RECALC; - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); } else - ED_anim_object_flush_update(C, ob); + DAG_id_update_flags(&ob->id); /* alloc the path cache arrays */ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 9e6a757baa2..af24402f3ca 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -481,11 +481,6 @@ void ED_nla_postop_refresh(bAnimContext *ac); /* --------- anim_deps.c, animation updates -------- */ - /* generic update flush, does tagged objects only, reads from Context screen (layers) and scene */ -void ED_anim_dag_flush_update(const struct bContext *C); - /* only flush object */ -void ED_anim_object_flush_update(const struct bContext *C, struct Object *ob); - /* pose <-> action syncing */ void ANIM_action_to_pose_sync(struct Object *ob); void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa); diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e58170ebab6..16be0e32e17 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -755,7 +755,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) if(islamp) reshadeall_displist(scene); /* only frees displist */ DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); @@ -951,7 +951,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -1480,7 +1480,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) copy_object_set_idnew(C, dupflag); DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 3f731696ef8..ecb9226e5f7 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1062,7 +1062,7 @@ void flip_subdivison(Scene *scene, View3D *v3d, int level) } } - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); } static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) @@ -1549,8 +1549,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) if(do_scene_sort) DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); - + DAG_ids_flush_update(0); } void copy_attr_menu(Scene *scene, View3D *v3d) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index ac7e76abc13..c0979e410fd 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -458,7 +458,7 @@ static int parent_clear_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -684,7 +684,7 @@ static int parent_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -772,7 +772,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -812,7 +812,7 @@ static int object_slow_parent_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -850,7 +850,7 @@ static int object_slow_parent_set_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); return OPERATOR_FINISHED; @@ -899,8 +899,8 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + DAG_ids_flush_update(0); DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); return OPERATOR_FINISHED; } @@ -992,7 +992,7 @@ static int track_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; } DAG_scene_sort(scene); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); return OPERATOR_FINISHED; } @@ -1172,7 +1172,7 @@ static int make_links_scene_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); /* one day multiple scenes will be visible, then we should have some update function for them */ return OPERATOR_FINISHED; @@ -1240,7 +1240,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index cb66384b1f8..c8f1bb55136 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -341,7 +341,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *op) CTX_DATA_END; if(armature_clear==0) /* in this case flush was done */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); @@ -1010,7 +1010,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op) CTX_DATA_END; if (tot_change) { - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); } /* Warn if any errors occured */ diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index a13df292990..97b3dd29ef9 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -235,13 +235,13 @@ static void do_graph_region_driver_buttons(bContext *C, void *arg, int event) DAG_scene_sort(scene); /* force an update of depsgraph */ - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); } break; } /* default for now */ - WM_event_add_notifier(C, NC_SCENE, scene); // XXX does this always work? + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); // XXX could use better notifier } /* callback to remove the active driver */ @@ -342,7 +342,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* 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, "Expr", 0, &driver_ptr, "expression", 0); /* errors? */ if (driver->flag & DRIVER_FLAG_INVALID) @@ -377,7 +377,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) uiItemR(row, "", 0, &dtar_ptr, "name", 0); /* remove button */ - but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable."); + but= uiDefIconBut(block, BUT, B_IPO_DEPCHANGE, ICON_X, 290, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete target variable."); uiButSetFunc(but, driver_delete_var_cb, driver, dtar); diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 933b12ae679..a23163f4a5c 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -543,7 +543,8 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op) } CTX_DATA_END; } - ED_anim_dag_flush_update(C); + + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -667,7 +668,8 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op) } CTX_DATA_END; } - ED_anim_dag_flush_update(C); + + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -1058,7 +1060,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) CTX_DATA_END; } - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 10a4a9f5fbd..0b295f4c613 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -89,16 +89,39 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) #include "BKE_fcurve.h" #include "BKE_depsgraph.h" +#include "BKE_animsys.h" static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) { ID *id= ptr->id.data; + ChannelDriver *driver= ptr->data; + + driver->flag &= ~DRIVER_FLAG_INVALID; // TODO: this really needs an update guard... DAG_scene_sort(CTX_data_scene(C)); - DAG_id_flush_update(id, OB_RECALC_DATA); + DAG_id_flush_update(id, OB_RECALC_OB|OB_RECALC_DATA); - WM_event_add_notifier(C, NC_SCENE, id); + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); +} + +static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr) +{ + PointerRNA driverptr; + ChannelDriver *driver; + FCurve *fcu; + AnimData *adt= BKE_animdata_from_id(ptr->id.data); + + /* find the driver this belongs to and update it */ + for(fcu=adt->drivers.first; fcu; fcu=fcu->next) { + driver= fcu->driver; + + if(driver && BLI_findindex(&driver->targets, ptr->data) != -1) { + RNA_pointer_create(ptr->id.data, &RNA_Driver, driver, &driverptr); + rna_ChannelDriver_update_data(C, &driverptr); + return; + } + } } /* ----------- */ @@ -641,7 +664,7 @@ static void rna_def_drivertarget(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_struct_name_property(srna, prop); RNA_def_property_ui_text(prop, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); /* Target Properties - ID-block to Drive */ prop= RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE); @@ -650,7 +673,7 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable"); RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef"); RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); prop= RNA_def_property(srna, "id_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "idtype"); @@ -658,17 +681,17 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_enum_default(prop, ID_OB); RNA_def_property_enum_funcs(prop, NULL, "rna_DriverTarget_id_type_set", NULL); RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used."); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); /* Target Properties - Property to Drive */ prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_DriverTarget_RnaPath_get", "rna_DriverTarget_RnaPath_length", "rna_DriverTarget_RnaPath_set"); RNA_def_property_ui_text(prop, "RNA Path", "RNA Path (from Object) to property used"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property used (if applicable)"); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); } @@ -727,7 +750,7 @@ static void rna_def_channeldriver(BlenderRNA *brna) /* String values */ prop= RNA_def_property(srna, "expression", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Expression", "Expression to use for Scripted Expression."); - //RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); // XXX disabled for now, until we can turn off auto updates + RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); /* Collections */ prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 05fd9889e31..89e9c2ee5ca 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -57,18 +57,6 @@ static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); } -static void rna_Scene_update(Scene *scene, bContext *C) -{ - /* added to update driver deps, copied from do_graph_region_driver_buttons - * but can be extended with update options */ - - /* rebuild depsgraph for the new deps */ - DAG_scene_sort(scene); - - /* force an update of depsgraph */ - ED_anim_dag_flush_update(C); -} - static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports, char name[], int absolute, int insertkey_needed, int insertkey_visual) { @@ -109,10 +97,6 @@ void RNA_api_scene(StructRNA *srna) parm= RNA_def_int(func, "frame", 0, MINAFRAME, MAXFRAME, "", "Frame number to set.", MINAFRAME, MAXFRAME); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "update", "rna_Scene_update"); - RNA_def_function_flag(func, FUNC_USE_CONTEXT); - RNA_def_function_ui_description(func, "Rebuild the scene dependancy graph."); - /* Add Keying Set */ func= RNA_def_function(srna, "add_keying_set", "rna_Scene_add_keying_set"); RNA_def_function_ui_description(func, "Add a new Keying Set to Scene."); -- cgit v1.2.3 From ff5276b0ce1c0c6c4dab56f9e42cb341a23abac8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 11:58:49 +0000 Subject: - use a generic bone class so all 3 bone types (Edit/Pose/Armature) - can have the same utility functions, length, parent_recursive, parent_index(), etc - change the wiki url to avoid redirects (from Luka) - removed pose prefix from pose_head/pose_tail/pose_matrix --- release/scripts/modules/bpy_types.py | 59 +++++++++++++++++------- release/scripts/ui/space_info.py | 2 +- source/blender/editors/space_view3d/drawobject.c | 2 +- source/blender/makesrna/intern/rna_pose.c | 8 ++-- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 43af9a4dc85..13d48f05d18 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -41,28 +41,28 @@ class Object(bpy_types.ID): return [child for child in bpy.data.objects if child.parent == self] -class PoseBone(StructRNA): - +class _GenericBone: + ''' + functions for bones, common between Armature/Pose/Edit bones. + internal subclassing use only. + ''' def parent_index(self, parent_test): ''' The same as 'bone in other_bone.parent_recursive' but saved generating a list. ''' + # use the name so different types can be tested. + name = parent_test.name + parent = self.parent i = 1 while parent: - if parent == parent_test: + if parent.name == name: return i parent = parent.parent i += 1 return 0 - @property - def children(self): - import bpy - obj = self.id_data - return [child for child in obj.pose.bones if child.parent == self] - @property def parent_recursive(self): parent_list = [] @@ -75,12 +75,19 @@ class PoseBone(StructRNA): parent = parent.parent return parent_list - + + @property + def length(self): + return (self.head - self.tail).length + + @property + def children(self): + return [child for child in self._other_bones if child.parent == self] + @property def children_recursive(self): - obj = self.id_data bones_children = [] - for bone in obj.pose.bones: + for bone in self._other_bones: index = bone.parent_index(self) if index: bones_children.append((index, bone)) @@ -89,11 +96,31 @@ class PoseBone(StructRNA): bones_children.sort(key=lambda bone_pair: bone_pair[0]) return [bone for index, bone in bones_children] - -class Bone(StructRNA): @property - def length(self): - return (self.head - self.tail).length + def _other_bones(self): + id_data = self.id_data + id_data_type = type(id_data) + + if id_data_type == bpy_types.Object: + bones = id_data.pose.bones + elif id_data_type == bpy_types.Armature: + bones = id_data.edit_bones + if not bones: # not in editmode + bones = id_data.bones + + return bones + + +class PoseBone(StructRNA, _GenericBone): + pass + + +class Bone(StructRNA, _GenericBone): + pass + + +class EditBone(StructRNA, _GenericBone): + pass def ord_ind(i1,i2): diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 0142805ca29..5eea68728d6 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -298,7 +298,7 @@ class HELP_OT_manual(HelpOperator): '''The Blender Wiki manual''' bl_idname = "help.manual" bl_label = "Manual" - _url = 'http://wiki.blender.org/index.php/Manual' + _url = 'http://wiki.blender.org/index.php/Doc:Manual' class HELP_OT_release_logs(HelpOperator): diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 496af5ef1b8..41eab057d40 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4329,7 +4329,7 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj static void draw_sb_motion(Scene *scene, Object *ob) { SoftBody *sb = 0; - if (sb= ob->soft){ + if ((sb= ob->soft)){ if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){ /* draw com */ float rt[3][3],sc[3][3],tr[3][3]; diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 5b5b331fea8..5b1f4dc42ed 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -675,7 +675,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Channel Matrix", "4x4 matrix, before constraints."); - prop= RNA_def_property(srna, "pose_matrix", PROP_FLOAT, PROP_MATRIX); + prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "pose_mat"); RNA_def_property_array(prop, 16); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -689,11 +689,13 @@ static void rna_def_pose_channel(BlenderRNA *brna) */ /* Head/Tail Coordinates (in Pose Space) - Automatically calculated... */ - prop= RNA_def_property(srna, "pose_head", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_float_sdna(prop, NULL, "pose_head"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Pose Head Position", "Location of head of the channel's bone."); - prop= RNA_def_property(srna, "pose_tail", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "tail", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_float_sdna(prop, NULL, "pose_tail"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Pose Tail Position", "Location of tail of the channel's bone."); -- cgit v1.2.3 From 2d4f112b18725a8237629e92996d4c2deb117c5b Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 24 Nov 2009 12:15:17 +0000 Subject: Fix wrong names in 3D view View menu --- release/scripts/ui/space_view3d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 21521e36cba..01318b82e0b 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -188,10 +188,10 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() - layout.operator("view3d.viewnumpad").type = 'CAMERA' - layout.operator("view3d.viewnumpad").type = 'TOP' - layout.operator("view3d.viewnumpad").type = 'FRONT' - layout.operator("view3d.viewnumpad").type = 'RIGHT' + layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA' + layout.operator("view3d.viewnumpad", text="Top").type = 'TOP' + layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT' + layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT' layout.menu("VIEW3D_MT_view_cameras", text="Cameras") -- cgit v1.2.3 From 284f66acf76f92ea987408a64d27601c7b28c331 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 24 Nov 2009 12:35:06 +0000 Subject: Fix for last commit, forgot to update collada. --- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/editors/animation/keyframing.c | 1 + source/blender/editors/animation/keyingsets.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 83f0debb60d..b844f74ff44 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -536,7 +536,7 @@ private: } DAG_scene_sort(CTX_data_scene(C)); - ED_anim_dag_flush_update(C); + DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index bc706271359..46da5babf1e 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -53,6 +53,7 @@ #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" +#include "BKE_depsgraph.h" #include "BKE_fcurve.h" #include "BKE_nla.h" #include "BKE_global.h" diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 39dd652e649..e91b1f11ae2 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -53,6 +53,7 @@ #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" -- cgit v1.2.3 From f21eb0603bd4d25a7677da0e34e1bdf02b709dcd Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Tue, 24 Nov 2009 12:55:04 +0000 Subject: Render Buttons: * Made Audio Section in "Encoding Panel" easier. --- release/scripts/ui/properties_render.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 2e2acbdb661..3f176e965b4 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -401,13 +401,16 @@ class RENDER_PT_encoding(RenderButtonsPanel): col.label(text="Mux:") col.prop(rd, "ffmpeg_muxrate", text="Rate") col.prop(rd, "ffmpeg_packetsize", text="Packet Size") + + # Audio: + layout.prop(rd, "ffmpeg_multiplex_audio", text="Audio") - row = layout.row() - row.label(text="Audio:") - row = layout.row() - row.prop(rd, "ffmpeg_audio_codec", text="Codec") + sub = layout.column() + sub.active = rd.ffmpeg_multiplex_audio + sub.prop(rd, "ffmpeg_audio_codec", text="Codec") + sub.separator() - split = layout.split() + split = sub.split() col = split.column() col.prop(rd, "ffmpeg_audio_bitrate") @@ -415,7 +418,6 @@ class RENDER_PT_encoding(RenderButtonsPanel): if wide_ui: col = split.column() - col.prop(rd, "ffmpeg_multiplex_audio") col.prop(rd, "ffmpeg_audio_volume", slider=True) @@ -552,4 +554,4 @@ bpy.types.register(RENDER_PT_output) bpy.types.register(RENDER_PT_encoding) bpy.types.register(RENDER_PT_performance) bpy.types.register(RENDER_PT_post_processing) -bpy.types.register(RENDER_PT_stamp) +bpy.types.register(RENDER_PT_stamp) \ No newline at end of file -- cgit v1.2.3 From 89f9d3873d5290dd34d32de5c55415e43ee1fe6a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 14:03:29 +0000 Subject: bugfix [#19983] clicking onto normal input of a material node crash actually happened when clicking on any input --- source/blender/blenkernel/intern/node.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 4c378d25a8c..a27c3b6494b 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1675,7 +1675,9 @@ void ntreeSocketUseFlags(bNodeTree *ntree) /* tag all thats in use */ for(link= ntree->links.first; link; link= link->next) { - link->fromsock->flag |= SOCK_IN_USE; + + if(link->fromsock) // FIXME, see below + link->fromsock->flag |= SOCK_IN_USE; if(link->tosock) // FIXME This can be NULL, when dragging a new link in the UI, should probably copy the node tree for preview render - campbell link->tosock->flag |= SOCK_IN_USE; } -- cgit v1.2.3 From d2c999020c0213334abe22bca01094809b0c91c5 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 24 Nov 2009 15:40:56 +0000 Subject: Updated icons. Thanks to jendrzych. Adds icon entries to the force fields. Also reverted last menu naming commit - this is apparently due to a bug in the Python API that will be fixed. --- source/blender/editors/datafiles/blenderbuttons.c | 12655 ++++++++++---------- source/blender/editors/datafiles/prvicons.c | 876 +- source/blender/editors/include/UI_icons.h | 24 +- source/blender/editors/object/object_add.c | 25 +- source/blender/makesrna/intern/rna_object_force.c | 24 +- 5 files changed, 7065 insertions(+), 6539 deletions(-) diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 28d6e2c70c4..4cbe959e5ea 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6103 +1,6562 @@ /* DataToC output of file */ -int datatoc_blenderbuttons_size= 195097; +int datatoc_blenderbuttons_size= 209771; char datatoc_blenderbuttons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, - 6, 0, 0, 0, 64, 11, 6,158, 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, 2,239, 68, 73, 68, 65, 84,120,218,236, 93,119,116, 20, 85, 31,189,111,118,182,111,178,233, 61,180,208, 33, -128, 52,165,247, 34, 29,145, 34,124, 40, 34, 42, 29, 69, 65, 80, 68,165, 5, 16,233, 82, 20,149,162,116, 20, 68,165, 41,189, 10, - 72,239,157, 16,210,251,102,235,204,188,239,143,236,172,155,101,147,221, 64, 64,196,185,231,204,217,157,118,231,245,119,223,239, - 53, 66, 41,133, 4, 9, 18, 36, 72,144, 32, 65,130,132,146, 3,145, 4,150, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 41,182, - 34, 35,132, 22,227,217, 54,222,114,218,143,230, 79, 59,231, 99,244, 59, 45, 65,206,230,118,206, 79,255, 37,238,108,254,180,114, -138,254,245,150,183, 56,156,222,166,169, 98,186,147,150,180, 59, 31, 23,103, 73,229, 35, 55,238,164,143, 33,222, 63,253,151,184, -179,249,211,198,233,154,126,188,225, 45, 46,167, 55,105,234, 33,220, 73, 75,218,157,143,139,243, 81,243, 81, 17,238,164,143,154, -150, 10,137,251, 79,241, 31, 0,251,184,196, 85,113, 64, 41, 37, 78,252,228,105,229,116, 14, 7,145,191, 36,221, 90,130,216, 83, -210,156, 46,225, 89, 82,248,148, 82, 74, 8, 33,123, 1, 52, 47, 73,191,151, 68,188,187,248,181, 68,120,139, 43,174,138,203, 89, - 82,233,254,113,115,150, 84, 94,114,229, 44,137,116,239, 46,222, 31, 99, 28,149,148, 59, 75, 36, 47, 61,142, 52,239, 38,253, 60, - 50,175, 43,103, 73,228, 37, 87,206,146, 72,247, 79,130,179, 36,242,146, 59,206,146, 72,247,133,197,189,100,193,122, 50, 66,192, - 53, 99,183,120,154,133,208,227, 18,153,222, 90, 92,158, 6,206, 18,142,163, 79,237,156, 37,217,154,105, 81, 82,113,244, 56,210, -187, 51,103, 73,241,187,242,148, 68, 60,185,227,124, 84,247, 22,226,206, 18,247,251,163,166,251, 39,197, 89,194,113, 84, 34,121, -201,133,179, 69, 9, 55, 2, 90, 56,157,127, 90,146,156, 37,149,151,220,184,243,145,227,201, 29,231,163,186,183, 16,119,150,184, -223, 75,162, 14,121, 92,188,207,156, 5,235,113,138,171,199, 85,153,149, 36,247,227,176,226, 60, 46, 75, 91, 73, 89,113,220,240, -238, 45, 65,186, 61, 37,237, 78,187,251,200,227,178,182, 62,237,144,242,146,148,151,158,182,188,228, 46,221, 80, 74, 63, 37,132, -124,242,180, 53,158,157, 57, 75, 74, 8,185,241,251, 35,229, 37,215,119, 75, 34, 47,121,224, 36,143,195,255, 37,157,159,158, 70, - 48, 79,139, 67,188, 29,223,243, 16,124, 45,158,230, 8,120, 76,238,108,241,111,240,251,227,112, 39, 33,228,211,199,228,247,127, - 75,152, 74,121, 73,202, 75, 79, 93, 94,114, 73,147, 45, 74,202, 50, 84,210, 13, 41, 87,206,146,248,134, 51, 71, 73,165,209,199, -237,247,146,204, 75,143, 35,238,255, 45, 40,182, 5,235,113,119,155, 60,205,156,143,131,251, 49,249,125,239,227,104, 29, 60,134, -113, 93, 37,238, 78, 74,233,167, 40,193, 46, 71,209,207, 37,233,214,199,217, 77,248, 56,210,230,227, 76,239, 37, 57,206,227, 49, -249,253,223, 18,239, 37,238,206,146,202, 75,110,226,252,145,221,234, 46,252, 74,186, 11,187, 36,211,230,227,228, 44, 9,238,199, -225,206,199, 21,247,255, 38, 48,144, 32, 65,130, 4, 9, 18, 36, 72,144, 80,162,144,214,193,146, 32, 65,130, 4, 9, 18, 36, 72, -120, 82, 2, 43, 42, 42,106,171, 86,171,173, 80,216,139, 6,131,225,126, 66, 66, 66, 75, 41, 8, 37, 72,144,224,177,160, 33,132, -193,223, 22,115, 1, 0,165, 82,235, 78,130, 4, 9,207, 48, 10, 29,131,165, 82,169, 98, 46, 94,188, 88, 73, 16, 4,240, 60, 15, -142,227, 28,191, 22,139, 5,205,154, 53, 43,246,248,173,240,240,240,125, 50,153,172,108,113,222,225,121,254, 78, 98, 98, 98,147, - 34, 10,238, 67, 0, 98, 8, 33,206,215,138,252, 5,144, 96,181, 90,235, 20,197, 73, 8,137,113,229, 43,132, 75,252, 95, 36,167, -191,191,255,113,150,101,163,221,113, 21,246, 95, 16,132, 27,201,201,201,141,164,100,250,100, 16, 30, 30,190,143,101,217, 98,167, -207,251,247,239, 23,154, 62, 35, 35, 35,255, 98, 24, 38,178, 24,148, 50, 65, 16, 46,223,191,127,191, 73, 97, 2, 68, 76,243, 30, - 4, 77,129,255,132,144,120,142,227,234,121,202, 71, 69,113,185, 73,163, 69,114, 58,139, 43,150,101,167,135,134,134, 14,201,203, -203, 51, 1,160, 50,153,140, 6, 5, 5,137,110, 3, 0,112, 28,151,146,145,145, 81, 67, 74,137, 18, 36, 72,120,166, 5,150, 32, - 8,140,217,108,198,149, 43, 87, 80, 72, 57,207, 63,196,247, 42,157,248,125,103,168,111,104, 24, 56,171, 21,186,224, 16, 7,119, -210,133,115,224,108, 86,112, 22, 11, 74,215,111, 32, 86, 94,168, 94,189,186,204, 3,103,244,140, 25, 51, 66,125,125,125, 97, 50, -153, 96, 50,153, 96, 54,155, 97, 50,153, 96,177, 88, 96,177, 88, 96,181, 90, 97,181, 90,193,113, 28,204,102, 51,118,237,218,229, -201,237,209, 83,167, 78, 13,213,235,245, 14, 62,241, 16, 57, 69, 94,155,205, 6,147,201,132, 63,254,248,163, 72, 78,150,101,163, - 19, 18, 18, 66, 21, 10, 5, 40,165, 16, 4, 1,148,210, 2,135, 43,202,151, 47,111,149,146,232, 19, 69,165,169,171,127, 9,245, -211,168,192, 9, 2, 58,215, 42,239,184,113, 99,217,122, 80,142,135,192,113,168, 56,188, 63,144,111,130, 65,181,106,213,138, 76, -159,148,210, 50, 83, 87,255,226,239, 45,103,106,106,170,177,106,213,170, 9,200, 31, 8, 90,152,133, 39,218,104, 52,134,138,110, -112, 21, 66, 12,195, 20, 56,182,111,223,142,206,157, 59,123,242,123,244,187,239,190, 27,106,179,217, 96,177, 88, 96, 54,155, 97, -179,217,192,113,156,227,224,121,222,113, 88, 44, 22, 28, 61,122,212, 91,203,213,140,182,109,219, 14,252,229,151, 95,116, 63,253, -244,147,174,108,217,178, 80, 40, 20,144,201,100,144,201,100, 96, 24, 6, 44,203,226,133, 23, 94, 32, 82, 18,148, 32, 65,194, 51, - 47,176,204,102,243,205,218,181,107, 83,251,255, 40,149, 74,165,112, 41, 56, 35, 43, 85,170,116,217,245, 61, 79, 93,135,190,161, - 97, 24, 95, 42, 16, 0, 48,241,118,154,163, 98,152,217,232, 57,199, 51,147,238,101, 1, 0, 52, 26, 13,136,115,179,185, 16,232, -116, 58,180,109,219, 22, 74,165, 18,245,234,213,131, 92, 46,119,123, 40, 20, 10,200,229,114,111, 42, 5,248,248,248,224,179,207, - 62, 19,197, 17,116,106, 21, 70, 52,170, 7, 53, 40,190, 58,119, 21, 22,129,130,101, 89,199,225, 13,167, 66,161,192,217,179,103, -193,178, 44,100, 50,153,227, 87,252,191,101,203, 22,244,236,217, 19, 44,203, 66,163,209, 0,255,161,217, 22, 79, 11,252, 52, 42, -188,182,248, 71, 0,192,221, 57,195, 29,113,119,116,232, 68,199, 51,101,222,234, 13, 66, 8,228,114, 57, 24,134, 41, 49,206,244, -244,116,227, 43,175,188,114,192,215,215,119,123,118,118, 54, 60, 8, 55,220,189,123, 23, 44,203, 22,154,222, 25,134,193,236,217, -179,113,237,218, 53,175,252,110, 50,153,240,245,215, 95,131,231,249, 2,188,226,127,215,107, 94,138,171, 41,237,218,181,235,255, -203, 47,191, 4, 16, 66,176,112,225, 66,200,229,114,116,234,212, 9, 65, 65, 65,216,177, 99, 7, 20, 10, 5,198,142, 29, 43, 37, - 62, 9, 18, 36, 20, 5, 57,128,231, 0,132,216, 13, 60, 57, 0,252,157,238,167,216,127, 67,156,206,255,116,195, 83,223,254,140, -120, 95, 60,183, 0, 80,186,185,158, 6, 64, 99, 63,204, 0, 14, 1,136,117,250,142,248, 30, 92,191,203,218, 11,194,230, 0,246, - 0,104, 33, 46,126,119,255,254,253, 14, 78,150,148,139,151, 47, 95,174, 34,106, 29,123, 87,161,130,227,184, 74, 98,183,161,104, - 29,106,211,166, 77,145, 45,122,206,106,125, 64,120,184,211, 80,238,186, 37, 10, 19, 46, 86,171, 21,189,123,247,206,143,129, 66, - 42, 27,231,195, 11,205, 6,139,197, 2,150,101, 81,185, 84, 8, 62,110, 95, 27,207, 83, 27, 12,185, 4, 92,150, 1,221,124,108, -184, 88,173, 14,150,222, 73,193,237,236, 92,176, 44,235, 21,167, 32, 8,133,138, 43,153, 76,134,197,139, 23,227,149, 87, 94,129, - 76, 38,243,138, 79, 66,201,131, 19, 4,183,233,176,176, 52,235, 77, 60,121,195,153,158,158,110,236,220,185,243, 17,149, 74,181, - 34, 44, 44, 44, 33, 62, 62,222,163,192,114, 21, 61,174,141,137, 47,190,248, 2,243,231,207, 71,203,150, 45,189,114,167,217,108, - 6, 33, 4, 75,151, 46,125,224,222,228,201,147, 31,248, 94, 81,156,246,134, 17, 19, 25, 25, 57,116,219,182,109,122,241,217,224, -224, 96,200,229,114,212,168, 81, 3,190,190,190, 56,112,224, 0,120,158,247, 58, 95, 74,144, 32,225,217,133, 59, 45,226,132,102, -227,199,143,175, 55,125,250,244,105, 13, 27, 54, 92,115,232,208,161,213,132,144,173, 78,101, 98,103, 59,199, 86,167,243,250, 46, - 34, 75, 14, 32,132, 16,178, 85,124,222,249,220,233,122, 27, 0, 74,241,124,252,248,241,177,211,167, 79,159, 54,110,220,184, 15, -227,226,226, 20,227,199,143,175, 57,125,250,244,105,226,119,220,185,195,217,130, 85,228, 42,192, 98,119,225,165, 75,151,224,105, - 92,170,167,245, 51,116,193, 33, 14,203,213,164, 50, 65,142,235,159,197,103, 58, 42,174, 5,117, 43, 64,167,211,161,253,164,207, -189,178, 12, 89, 44, 22, 36, 39, 39, 59,172, 10,158, 14,111, 57,181, 26, 53,118,189, 91, 3,119,211,148,248,244,112, 58,126, 57, -117, 13,114,185, 28, 47, 86,171,129, 14, 10, 95, 76, 40,163,196,187, 87,111,193,230,229, 88, 93, 74,169, 91, 97, 37,254, 23,187, - 74, 36,129,245,207,161,115,173,242, 14, 43,211, 81,223,214,142,235, 61, 13,103, 29,113,242,222,226,153, 0,128,150,117, 94,128, - 55,227,180, 61,113,166,165,165, 25,155,180,110,177,151, 55, 90,150,247,239,223,255,230,238,221,187, 53, 94, 53,231,220, 8, 44, -209, 74, 43,138, 43,150,101, 97,177, 88,188,242,187,197, 98, 41, 52,127, 40, 20,138, 98, 91,176, 0,192, 96, 48, 88, 54,111,222, -140, 5, 11, 22, 32, 40, 40, 8,237,218,181, 67, 68, 68, 4,214,175, 95, 15, 74, 41,134, 15, 31, 14,141, 70, 35, 90,171,165, 4, - 40, 65,194,127, 27, 69,105, 17,213,244,233,211,167, 57, 11, 24, 87, 65,227, 44,156, 92, 68,148,179, 72,139,245, 80,255,111,117, - 21, 77,226,119, 9, 33, 91,227,226,226, 58,123,112, 71,138,171,192, 42,114,153,125,179,217,124,179, 86,173, 90, 94,169,136,188, -188,188, 68, 79, 34,195, 93, 43,222,217, 42,224,227,227, 3,157,222, 7,140,151,229,173,205,102,115, 8,148,157, 59,119, 66,163, -209,160, 99,199,142,143,100,193,178, 90,173, 80, 42,228, 96,130,195,240,218,156,221, 72,203, 49, 58, 42,150, 61, 55,110,226,100, - 82, 50,222,109,216, 26, 58, 77, 50,114, 45, 22,175, 44,109,130, 32, 60, 32,174, 88,150, 69,239,222,189, 29,214, 3,231,113, 41, -144,186, 8,255,201,150,148,219,115,231,235,130,139,101,234, 97, 56,211,210,210,140,157, 59,119, 62,194, 27, 45,203,239,221,187, -119, 4,128,250,249,231,159, 47,182,192, 18,133,149, 92, 46,199,236,217,179, 49,127,254,124,199,125,111, 5, 22,199,113, 5,132, -211,213,171, 87, 11,124,203, 85,208, 21,213, 61, 74,243, 75, 73, 1,128, 16, 19, 19,227,120, 39, 60, 60, 28,254,254,254, 16, 4, - 1,130, 32, 64,173, 86, 67,163,209, 64,161, 80, 72,137, 78,130, 4, 9, 69,105, 17,227,184,113,227, 62, 36,132,108,181, 91,146, -206, 21, 33,164,220,161,190,139, 72, 75, 41,164,236,234,236, 78,100, 57,255, 23, 49,126,252,248, 88, 55,238,248,243, 1,129,229, -164, 26, 31,128,115,119, 97, 73, 85, 94, 69, 85, 96, 62,254,122,104,116, 58,200,100,140,199,253,149,196, 46, 66,177,192, 31, 50, -100, 72,145,227, 82,188, 29, 47,101,181, 90,193,176, 50,220, 15, 47, 7,158,217,239,120, 87, 60, 24, 86,142,219,225, 85, 32,187, -244, 23,228, 94, 86,180,174, 22,172,225,195,135,227,235,175,191, 6,195, 48,142, 48, 97, 89, 22, 21, 43, 86,196,205,155, 55,165, -156,246,148,136,171,194,174,243,188,224,181,213,197,221,115,105,105,105,198, 94,189,122,237,205,202,202, 90, 94,189,122,245,171, -200, 95,198,128,241,150,143,101,217, 2,194, 74, 20, 87,243,230,205, 43, 32,134,108, 54,155, 87, 13, 0,155,205,246,128,208,153, - 53,107, 86,129, 95, 0,104,212,168,145, 87,150, 96, 0,148, 97, 24,170, 80, 40,208,182,109, 91,212,172, 89, 19, 63,253,244, 19, - 4, 65,192,176, 97,195,160,209,104, 48,119,238, 92,112, 28,135, 25, 51,102, 72, 22, 44, 9, 18, 36, 20,165, 69,204,113,113,113, -231,226,226,226, 28,150, 36, 87, 11, 86, 33,232,100, 23, 83, 33,162, 56, 67,254, 88,170, 63,139,112, 67,231,194,132,151,243,181, -233,211,167, 79,115,227, 14, 71,183,228, 19,223,236, 57,241,252, 89,124,222,184, 54,128,130,221,130,139, 95,168, 2,157,143, 14, - 58, 95, 31,244,218,178, 31, 0,236,133,253, 56,175, 44, 88,162,192, 74, 75, 75, 43, 82, 92, 21,199,130,197, 40, 89,108,136,206, - 0, 85,202,193, 90,108, 5, 4,150,140,149,227,110, 80, 57, 48,114, 5, 88,158,243,138,147, 82,250, 64,151,224,128, 1, 3, 64, - 8,113,204,248,170, 85,171,150, 51,151, 84,227, 60,233,244,121,124, 25, 46,110, 28, 10, 0,104, 98, 48, 56,226, 98,106,173,191, -231,109,204, 57,187,215, 97,109,156,132,247, 31,138, 51, 45, 45,205,248,124,213,216, 35,138, 64,191,229,119,238,220, 57, 2,128, -233,211,167,143,127,173, 90,181,188,202,147,226,164, 9, 87,113,229,108,185, 18,127,109, 54,155, 87,126, 23,199, 66,121,130,216, - 93,232, 41,205, 83, 74,105, 96, 96, 32, 24,134,129, 94,175,135,143,143,143, 99, 6,173, 90,173,134, 86,171,117,140,223,244, 82, -176, 73,144, 32,225,191,139, 0, 81,224,216, 69, 82, 1,203, 18,165,180,179,179, 8, 42,172,171,208,110,113,218,231,225, 91,191, -216,133,153, 91,136,150, 52,151, 50,121,171,171, 56, 99, 69,197,232,252, 27, 17, 17,241,155,143,143, 79, 57,111,125, 93,156, 69, - 71,121,155,245, 1, 75, 22, 33, 4, 62,190, 62,208,248,232,160,241,245, 41,212,202, 85,148,192, 18, 45, 67, 98,101,179, 98,197, - 10,248,248,248,224,245,215, 95, 47,246, 24, 44,135,192, 82, 48,216,161,250, 3, 50, 37, 91, 64, 92,177, 44, 11,153, 92,142, 68, -159, 8, 48,114, 57, 88,206, 59,171, 88, 86, 86, 22, 88,150,197,199, 31,127,236,104,177, 59,139,171,226,248, 89,194, 99,106, 61, -241,182, 7,172, 78,133, 89, 91, 31,150, 83,180, 92, 41, 2,253,150, 87,169, 82,197, 97,185,210,106,181,226,236, 81,143, 96, 24, -198,173,184,114,157,241,199,178,108,126, 90,246, 48,219,209,217,130, 21, 23, 23,231,224,117,182, 92,137, 40, 78, 62, 18,221,186, -119,239, 94,156, 60,121, 18, 67,134, 12,129, 70,163,193,252,249,243,193,113, 28, 38, 79,158, 12,141, 70, 3,165, 82, 41, 37, 62, - 9, 18, 36,235, 85, 81,251,138,166,184,140,115, 34, 46,150,166, 20,119,194,202,185, 59,208,233,191,205, 13,175,197,165,235,208, -245,186,248,155, 22, 23, 23,183, 91,180, 92, 57, 93, 47,224,142, 66, 45, 88, 42,149,170,220,149, 43, 87, 28,139,140, 22,245,107, -177, 88,208,178,101, 75,175, 45, 97,226, 44, 66,150,149, 21, 16, 20, 90, 95, 31,104,245,190,208,248,248,184, 10, 13,226,169,240, - 22, 91,192,206, 2,235,147, 79, 62, 1,203,178,248,250,235,175, 1, 0,239,191,255,190,215, 99,176, 68, 78,240, 4,241,244, 58, -106,207,233, 9,203,247, 54, 36, 29, 60, 13,150,101, 17,218,160, 3,132,231,123, 34, 79,227, 3,150,231,188,158, 69,152,158,158, -142,155, 55,111, 66, 38,147, 97,244,232,209, 5,214, 42,114,157,153,182,115,231, 78,201,130,245, 79,100,112,129,243, 74, 76, 21, -199,202,232,204, 41,142,185,202,202,202, 90,126,231,206,157,163, 0,152,254,253,251,251,107,181, 90,124,243,205, 55,121, 0,148, -235,215,175,215,120, 18, 67, 98,186,241, 36,174,228,114,121,126, 90,246,174,112, 43,208,136,240, 52,224,221,155, 52, 47,186,149, - 16, 2,158,231,161,209,104, 10, 88,174,212,106, 53, 84, 42,149,148,240, 36, 72,144,224, 9,127, 22,227,217,250, 78, 98,233,207, -135,228,253,243, 81, 29,204, 22, 38, 48,204,102, 51, 46, 92,184,224, 45,143,215,139,142,150,170,247, 2, 38,221,203, 2, 33, 4, - 95, 53,170, 14,157,222, 7, 90,157, 14, 47,255,180,215, 81, 96,159,157,246, 62, 84, 58, 31, 68, 54,109,231, 85, 1, 46,118, 17, - 58, 11,172,204,204, 76,200,229,114, 76,153, 50, 5, 12,195, 96,198,140, 25,136,138,138,194,253,251,247,177,126,253,122,175, 44, - 88, 50, 94,134,136, 87,171, 66, 59,192, 15,250, 87,155, 33,160,237, 39,184,103, 97,113,200,164, 69, 51,211,121, 40,119,204,131, - 69,224,189,158, 81,197,113, 28,246,238,221,235, 58,144, 29,148, 82,199, 42,249, 54,155, 13, 86,171, 21, 51,102,204,128,180,147, -200,147, 71, 68,131,225, 8,169, 55, 24, 0,176, 37,238, 13,199,245,143,207,254,157, 62,103,127,159,191, 96,127,149,178,237,138, -197,153,150,150,102,124,177,101,163,125, 38, 65,254, 93,141, 26, 53, 10, 88,174,212,106, 53,177,159,123, 37,170, 25,134,129, 76, - 38,123,160, 91,176, 48,145,229,205, 24, 44,142,227, 28, 11,128, 22, 53, 94,241, 97, 44, 88,111,188,241, 6, 34, 34, 34, 28,150, -171, 73,147, 38, 65,163,209, 96,252,248,241,176,217,108,152, 55,111,158,148,248, 36, 72,144,240, 79,136,177,199, 6,183, 37,168, -201,100,186, 85,179,102, 77, 20,114, 47, 74,173, 86,203, 93, 10,231,200, 74,149, 42, 93,118,237, 42, 36,132,180,161,148,238,114, - 87,152, 19, 66,224,171,247,133,218, 71, 7,173,139,213, 74,237,171,135,202,199, 7,140, 66,238,174, 34,120,128, 83, 28, 59,226, - 44,176,196, 35, 43, 43, 11,114,185, 28, 11, 22, 44,128, 94,175,135,217,108,246,200, 41, 86, 54, 50,153, 12,121,119,115,112,113, -218, 46, 40,213,135, 80,161,221, 43,136,144,107,160, 56,176, 9, 70,222, 86,228, 66,163,238, 56, 43, 85,170,132,137, 19, 39, 62, -176, 60, 67, 97,136,138,138,242,232,247, 71,133,196,233,158,179,168, 89,174, 34, 4,202,187,123,206, 45,167,104,185, 50, 9,242, -239,110,222,188, 41, 90,174,252,180, 90, 45,150, 44, 89,146, 7,128,153, 60,121,178,182, 76,153, 50, 50,111,210,146, 76, 38,195, -156, 57,115,220,142,185,114, 39,182,138,147,143,156,223,109,222,188,185,219,133, 70,221,137, 54,119,156,162, 91,131,130,130, 28, -150, 43,158,231, 29,179, 7,197,213,226, 11,107, 76, 72,233, 83,226,148, 56,255, 59,156,207, 26,220,214,238, 9, 9, 9, 47, 22, -246, 66,133, 10, 21,174, 92,185,114,165,162,184,101,134,189,192, 84,152, 76,166, 74,141, 26, 53,242,104,202, 17, 4, 1, 42,149, - 10,148, 82,180,154, 56, 29,132, 1, 24, 20,172,188, 66, 27,183,134, 76,198, 66,200,223,146,195,227, 44, 66,163,209, 88,160, 82, -112,119,228,230,230,194,108, 54,123,189,250,182,201,100, 42,176,148, 2,161, 2,110,255,190,238,129,217,132,226,225,237,184, 28, -181, 90, 93,160,139,167, 40,120, 90, 83, 76, 66,201, 67,156,136, 0, 0,149, 27,117,132, 32,240,160, 60, 95, 96, 59,163,170,229, - 94,132, 64,121, 88,109,121, 48,155,205,158,204,140, 36, 53, 53,213,216,171, 87,175,189, 0,190,237,214,173,219,101,228,207, 96, -161, 62, 62, 62, 42,185, 92, 46, 0, 72, 7, 64, 51, 50, 50,252,238,221,187, 39,152, 76,166,210,158,220,249,203, 47,191,224,194, -133, 11,104,218,180,105,129,109,155, 68, 43,168,243,106,236,222,164, 79,177, 91,220,221, 10,238,133, 9, 56,111, 33,147,201,224, -231,231, 7,133, 66,129, 41, 83,166, 64,161, 80, 64,171,213, 2, 0,230,205,155,231, 88, 52, 85,130, 4, 9, 18,158,121,129,229, -169,188, 44,162,251,176,200,174, 66,142,227,226,203,148, 41, 83,172,143,241, 60,159,228, 65,176,197,175, 95,191, 94,225,108,117, -240,244, 75, 41, 77,242, 80,201,198,111,217,178, 69,225,206,154, 81,216,198,207,158, 56,121,158,143, 47, 91,182,108,161, 22, 18, -119,176,217,108,247,164, 36,250,228,192,243,124, 17,233,243,163,135, 77,159, 87, 43, 87,174,124,207,223,223,255,215,176,176,176, -180,131, 7, 15, 6,213,175, 95, 63,200,249,153,250,245,235, 71,184,188,102, 65,225,251, 16,130, 16, 18,223,173, 91, 55,183,105, - 94, 20, 75,110,210,103,188,167, 52,127,236,216, 49,133,243,251,133,241, 59,229,163,120, 47, 4,235,237,218,181,107, 51,206, 60, -133,165,125,155,205,150, 34,165, 66, 9, 18, 36,252,103, 5,150,209,104,188, 91,179,102, 77,174,144,123,119,138,122, 55, 53, 53, -181, 94, 73,123,192,106,181, 54,250, 55,112,166,164,164,212,147,146,219,211,141,199, 17, 71, 73, 73, 73,207,151, 52, 39,199,113, - 37,158, 62,109, 54, 91,163,199, 17,166,105,105,105, 13,165,148, 37, 65,130, 4, 73, 96,121, 1,111,151, 99,144, 32, 65,130, 4, - 9, 18, 36, 72,248,175,130,145,130, 64,130, 4, 9, 18, 36, 72,144, 32,161,100, 65,144,191,107,244, 3, 40,206,236, 0, 66, 72, -155,226,126,216, 19,191,196, 41,113, 74,156, 18,167,196, 41,113, 74,156,207, 30,167, 39,238,103,102,118,162, 56, 59,234,113, 28, - 0,218, 72,156, 18,167,196, 41,113, 74,156, 18,167,196, 41,113,254,215, 14,169,139, 80,130, 4, 9, 18, 36, 72,144, 32,161,132, -193, 74, 65,240,207,128, 16, 34,163,148,242, 37, 72, 25, 0,160,176, 13,221, 44, 0, 50, 30,198,153, 0, 20,246, 67, 92,168,200, - 6,192,106, 63,188, 88,106,254, 51, 38, 33, 33, 32,150,242,242,250,148, 16,185, 32,224, 84,233,210,165,254, 2, 94,180, 0,128, - 79,120,181,106, 62, 58, 77, 27,179,213, 82, 78, 37, 87, 94,200, 52,228,238, 52, 37, 93,190, 37,165, 16, 9, 18,254,145,114,169, - 11,128,207,236,121, 63,142, 82,186, 78, 10, 21, 9, 18, 74, 88, 96,249,250,250, 30,103, 24, 38,218,211,250, 58, 78, 25, 19, 60, -207,199,167,167,167,215,243, 50, 35,179, 0,122,249,248,248,180,148,203,229,141, 1,192,102,179, 29,204,205,205,221, 13, 96, 61, -165,148,123,200, 2, 66, 15,160, 55,128,126,246, 75, 63, 0, 88, 71, 41,205,126, 72,190,154,126,126,126, 27,229,114, 57, 77, 77, - 77,109, 0, 0, 65, 65, 65, 71,108, 54, 27,201,206,206,126,153, 82,122,166,152,124,140, 66,161,152,222,180,105,211, 38,132,144, -149,148,210,197, 37, 20,151, 42,134, 97,220, 10, 19, 65, 16,202, 62, 4,159, 2,128,223,130, 5, 11,130, 86,173, 90, 85, 59, 62, - 62,190, 6, 0, 68, 71, 71,159,237,223,191,255, 95, 35, 70,140, 72, 3,144,101, 23, 90,133, 34, 33, 33, 32, 54, 57,241,198,144, -164,228, 11,189, 1, 32, 60,162,198, 58,153,140, 81, 68, 69,157, 60,172, 13,238, 23, 92,185, 74,249,193,107,190, 89,160, 40, 91, -174, 20,254, 56,116,242,185, 17,163, 62,140, 85,135, 85,254, 66, 18, 89, 79, 14,122,189,254, 56,195, 48,209, 69,229,113,119,121, -158,231,249,248,180,180,180,122,133,113,178, 44, 27, 93, 84,121,225,238,154, 32, 8, 55, 82, 82, 82,220, 46, 25,225,231,231,119, -152,101,217,114,222,114,137,191, 28,199,197, 23,182, 68,140,159,159,223,113,153, 76, 22, 93,148, 63,221,221, 19, 4,225, 70,114, -114,114, 97,238,124,192,239, 37,225,206,135,225, 44,202,157, 98,121, 4, 96, 94, 80, 80,208, 11,105,105,105,255, 3,240, 97,118, -118,118, 45,153, 76,134,192,192,192, 15, 9, 33,215,252,252,252,150,101,101,101, 29, 2, 48,138, 82, 42, 72, 57, 70,130,132, 71, - 20, 88, 12,195, 68,223,187,119, 47, 84,167,211, 1,248,123,191, 60,113,147,103, 65, 16, 64, 41,117,252,114, 28,135,170, 85,171, -122, 43, 50,106,232,245,250, 13,227,199,143, 47,221,171, 87, 47,165,184, 37, 76, 66, 66, 66,165,141, 27, 55,254,111,202,148, 41, -159, 16, 66,122, 82, 74,207,122, 43, 90, 0,180, 6, 48,160,118,237,218, 61, 38, 77,154,164,104,213,170, 21,120,158,199,175,191, -254,218,116,242,228,201, 11, 8, 33,155, 0, 44, 7,240,187,183,133, 4, 33,164, 73,120,120,248,234, 3, 7, 14, 68,220,188,121, -147,239,213,171,215, 90, 0, 56,126,252,120, 12,207,243,164, 65,131, 6,191, 16, 66,250, 82, 74, 15, 20, 35,204,187,141, 24, 49, -162,231,240,225,195, 67, 94,127,253,245, 87, 1, 44,182,127, 75,220, 69,188,184, 27, 16, 58, 44, 87,148, 82, 69, 17,207,133, 23, -195,146,165,187,121,243,102, 64,163, 70,141,134, 38, 39, 39,191,235,204,155,148,148,132, 19, 39, 78, 88,167, 77,155, 54,231,208, -161, 67,139,202,149, 43,151, 1,192, 80, 24, 17,229,229,245,147,146, 47,244,110,214,112,129, 31, 0,172,223, 50,244,149, 99,127, -165,248,110,221,182,244,127, 74,181,194,188,234,171, 57,138,138, 21,202, 98,207,241,171, 56,122, 33,157,212,104,210,153,205,218, -186,178, 45,128,165, 82,246,124, 50,144,201,100, 81,241,241,241,161, 90,173,214,237,134,238, 46,227, 46,196,133, 75, 81,169, 82, -165,194, 11, 22,150,141,190,119,239, 94,168, 90,173,118,148, 29,174,101,134, 88,174, 56,210, 10,165,168, 92,185,178,181,136, 50, -169,204,157, 59,119, 66,181, 90,173,131,199,157,251, 92,133, 70,229,202,149,139,242,123, 1,119,122,195, 73, 41, 69,197,138, 21, -121, 79,126, 23,119,172,240,228,111,145,179, 92,185,114,180, 56,156,222,184,179,124,249,242, 86, 15,209, 63,239,242,229,203,195, - 75,149, 42,133,138, 21, 43, 30,122,225,133, 23,244, 58,157, 14,219,182,109, 67,181,106,213, 98,245,122,253,209,245,235,215,203, -199,142, 29,251,220,119,223,125, 7, 0, 35,164, 28, 35, 65,194, 35, 10, 44, 66, 8,116, 58, 29,214,174, 93, 91,232,182, 25,206, -255, 75,151, 46,237,213, 7, 9, 33,245,202,149, 43,183,247,192,129, 3,154,136,136,191, 23,176,182, 88, 44, 8, 8, 8,192,176, - 97,195,148, 93,186,116,169,216,174, 93,187, 35,132,144,230,148,210,227, 30,248,122,132,132,132, 44,252,248,227,143,195,250,244, -233,131,160,160, 2,139,100,163, 87,175, 94,120,249,229,151, 21,151, 47, 95,126,101,197,138, 21,175, 44, 94,188, 56,145, 16, 50, -130, 82,186,169, 40, 94,173, 86,219,173, 66,133, 10, 75, 14, 28, 56, 16, 26, 26, 26,138,152,152, 24,102,236,216,177, 21, 43, 85, -170,164,137,142,142,102,238,223,191,143,159,126,250, 41,170,111,223,190, 27,148, 74,229, 96,139,197,178,217, 11,191, 43, 3, 3, - 3,199,188,253,246,219, 65,217,217,217,220,201,147, 39,175,138,215, 85, 42,213,196, 6, 13, 26,212, 33,132,172,165,148, 46,127, - 24,203,149,221, 74,231,186,231,136, 77,188,239,165, 37, 75,121,234,212,169,192,134, 13, 27,110, 50,155,205,117,134, 12, 25,114, -103,218,180,105, 26,189, 94,175, 7, 64,178,179,179, 51, 62,251,236, 51,203,220,185,115, 63,168, 86,173, 90,235,195,135, 15,247, -120,238,185,231,108,118,241,246,160,192, 34,196,225,158,187,247, 82,176,247,144,160,156, 56,254,253,232,153, 83,203,221,254,243, -252, 93,129,213,232,241,243,190,115, 72, 74,203,197,111,135,207, 35, 60,200,151, 40, 84,242, 88,255,232,216,230, 89,247,206,239, -163,210,142,215,143, 29,132, 16,104,181, 90,252,252,243,207, 15,108, 49,229,110,251, 41,150,101,225,239,239,239,113, 55, 2,181, - 90,141,157, 59,119,186,221, 27,209,221,214, 59,126,126,126, 64, 17,155, 93, 19, 66,160, 86,171,113,240,224, 65, 48, 12,227,118, - 11, 31,215,107, 58,157, 14, 76, 17,123, 82,137,156,251,246,237,243,200, 37,254,250,248,248, 0,128,172,200, 76,169, 82,225,192, -129, 3,133,250,217,245,191,143,125, 63, 86, 79,156, 7, 15, 30, 44,176, 69,151,235,214, 93,206,231, 58,157,206,209,112, 43,180, -117, 22, 16,208, 32, 58, 58, 26,199,142, 29,195,250,245,235, 3, 99, 99, 99,113,245,234, 85, 16, 66, 48,109,218, 52, 82,189,122, -117,121, 98, 98, 34,154, 54,109,138, 31,127,252,177,145,148, 91, 36,252,131,144, 3,120, 14, 64, 8,242,119,141,201, 1,224,111, -175,123,148, 0,210, 0,104,236,135, 25, 64, 46,128, 96,251,187,169,246,178,197, 89, 32,164,160,224,166,208,245,237,220,226,142, - 18, 33, 78,247,196,111,184,158,187,254, 22,224,102,237,133,140, 88,137,181,160,148,238, 45,224, 35, 47,196,149,184,143,152,107, - 94,118,179,241,171, 74,167,211,109, 60,114,228,136, 38, 36,228,111,183,155,205,102,228,228,228, 32, 55, 55, 23, 57, 57, 57,240, -245,245,197,250,245,235, 53,173, 91,183,222, 72, 8,169, 68, 41, 53, 23,198, 9, 96,206,253,251,247,195, 56,142,131, 82,169, 44, -172,229,139,170, 85,171,226,195, 15, 63, 68,251,246,237,195, 91,182,108, 57, 7,192,166, 34, 56,161,213,106,151,156, 56,113, 34, - 84,171,213,226,202,149, 43,136,143,143,199,123,239,189, 87, 74, 16, 4,220,189,123, 23, 87,175, 94,197,189,123,247,176, 98,197, -138,208,238,221,187, 47, 1,176,185, 40,191,219,241,230,232,209,163, 43, 5, 6, 6, 50,159,127,254,121, 86,110,110,238, 87,246, -235,227,231,205,155,215,183, 89,179,102, 33,131, 6, 13, 2, 33,100, 13,165,244, 1,193,226,194,233,206,114,197, 3,184,232,242, - 90, 85, 23,203, 86,184, 61,241,101,186,225, 36, 0,252,218,181,107, 55,218,108, 54,215, 57,112,224,192,181,198,141, 27,151, 1, -112, 95, 76,116,126,126,126,186, 57,115,230,132,117,238,220,249,114,171, 86,173,234,180,107,215,110,116, 74, 74,202, 52,251,125, -234,202, 41, 8, 56, 21, 30, 81, 99,221,190,195, 35,122,239, 57,104, 81,188, 63,234,147, 59,165, 75,149,205, 58,117, 37,157, 63, -127, 35, 5, 57, 70, 14, 47,181,202,223, 88,188, 65,141,210, 88,184,246, 0,134,189,243,145,124,211,186,149, 47, 95,163,208, 1, -248,165,136,240,124, 36, 72,156,127,139, 12, 65, 16, 32,151,203,209,161, 67, 7, 16, 66, 30,216,107, 83, 46,151,227,240,225,195, -104,213,170, 21,228,114, 57,222,120,227, 13,175, 56, 89,150, 69,187,118,237, 28,251, 28, 58,243,185,138, 5,119, 90,192,213,239, -148, 82,176, 44, 11,134, 97, 10,221,224,218,149,211, 83,185, 36,186,179, 40, 46,231,123,158,220, 41, 90,143,188, 21, 87,222,114, -138,238,100, 89, 22,141, 26, 53,194, 95,127,253, 85,164,216,114,167, 43, 93,253,158,145,145,241, 90,165, 74,149,246, 45, 88,176, - 32, 16, 0,210,210,210, 28, 27,209,203,100, 50, 92,186,116, 9, 22,139, 5,159,126,250,169, 53, 59, 59,123,144,148,143, 36,206, -199,201, 89,148, 22, 1,208,108,252,248,241,245,166, 79,159, 62,173, 97,195,134,107, 14, 29, 58,180,154, 16,178,149, 82,218, 89, -252, 29, 63,126,124,236,244,233,211,167,141, 27, 55,238,195,184,184,184,115,132,144,173, 0,224,122,110,119,127,103, 23,241, 22, - 34,242,216,221, 82,224, 89,119,231,174,191,174,220,172,211, 5, 98,247, 28,113, 46,204,188, 21, 88,222,236,173,199,178,236,240, -105,211,166,133, 21, 37,174,114,115,115,145,144,144,128, 50,101,202,224,141, 55,222, 8, 91,176, 96,193,112, 0,179,138,160, 85, -200,100, 50, 28, 59,118, 12,201,201,201,168, 89,179, 38,202,149, 43, 87,224,129,235,215,175,227,215, 95,127, 69,102,102, 38,234, -214,173, 11,228,143, 47,114,139,231,158,123,238,211,170, 85,171,182,107,215,174, 29,167,209,104,112,234,212, 41,212,169, 83, 7, -107,215,174, 69,233,210,165,161,213,106,113,249,242,101,212,172, 89, 19,123,247,238, 69, 72, 72, 8,106,215,174,205,213,173, 91, -119,127,122,122,250,238, 91,183,110,125, 90, 72,194, 81, 68, 69, 69,125,248,246,219,111, 43, 19, 18, 18,132, 21, 43, 86, 28,162, -148, 30, 34,132, 12,254,232,163,143, 94,109,223,190,125,200,201,147, 39,179,255,252,243,207, 63,221,137, 43, 47, 45, 87,156,107, -101,196,243,188,217,104, 52, 90,204,102,179,141, 97,152, 91,132, 16, 11,207,243,133,245,237,168, 7, 12, 24, 80, 62, 53, 53,117, -216, 59,239,188,115,211, 46,174, 46, 33,127, 96, 59, 0,128,227, 56,115,110,110,110,118,195,134, 13,203,244,237,219,247,218,234, -213,171,135, 13, 24, 48, 96,253,242,229,203,115, 1, 24, 93, 9, 75,151, 46,245,151, 76,198, 40, 12, 57,129, 55, 54,172, 95,246, -238,175, 91,134,151,186,123,247, 94,197,160,224, 16,131,194, 39, 36, 97,253, 15,223, 29, 7, 96, 73, 72,201,198,153,235,137,144, -203,101,184,112, 55, 11,205, 94,236, 37,191,118,101,106, 19, 81, 96, 73,120,172,160,226,230,208,123,246,236, 41,210,130,117,248, -240, 97,200,229,114,104, 52, 26,204,157, 59,183, 72, 82, 81, 16,136,214, 33, 79, 34,134, 97,152, 34,203, 17, 81,100,136, 27,176, -187, 30, 95,126,249, 37,222,121,231,157, 2,223,176,139, 12,226,137,179, 48,247,149, 41, 91, 22,201, 73, 73, 5,174,121,179, 89, - 60,207,243,144,203,229,248,250,235,175,209,185,115,103,108,221,186,181,200,223, 14, 29, 58,128, 97, 24,234, 77,120, 54,106,212, - 8, 86,171,213,225,230, 75,151, 46,185,229, 93,188,120,177,167,202,172, 11,128,207,234,212,169,163,111,217,178, 37,246,237,219, -135,151, 95,126,217,108,181, 90,175, 0, 64,167, 78,157, 42, 47, 88,176, 64,121,226,196, 9, 4, 5, 5,201,239,220,185,243, 45, - 33, 68, 26,248, 46,225,241, 22, 70,110,180,136, 88,231, 77,159, 62,125,154,139, 48, 42, 0,241, 62, 33,100,107, 92, 92, 92,103, -103, 49,228,124,238,100,101,114, 22,111,177,206, 22, 40,103,241, 84,136, 40,115,117,183,243,243, 41, 5, 4,150,221, 67, 45,156, -173, 62, 98,161,235, 73, 92, 21,214, 82,116,133,159,159, 95,199,151, 94,122,201, 33,110, 76, 38,147, 67, 88,137,226, 74, 60,191, -124,249, 50,234,213,171,167,240,243,243,235,232, 65, 96,137,226, 13,145,145,145, 72, 77, 77,197,217,179,103, 81,166, 76, 25,216, -108, 54,108,223,190, 29, 89, 89, 89,144,203,229, 80, 40, 20,176, 90,139, 30,146, 80,181,106,213, 14,171, 86,173,170,183,114,229, -202, 12,177, 5,247,195, 15, 63,128, 82,138,144,144, 16,228,229,229, 33, 41, 41, 9,187,119,239, 6,199,113,240,241,241, 65, 76, - 76,140,178, 91,183,110, 77, 62,251,236, 51, 57,128, 79, 11,161,126,225,229,151, 95,214,235,245,122,140, 26, 53,138, 90,173,214, - 89,132,144, 6, 61,122,244,248,112,196,136, 17,129,183,110,221,178,188,249,230,155,199,173, 86,235, 28,123,124,200, 41,165, 54, - 15, 9,177, 80,203,149,205,102, 19,195,244,102,110,110, 46,130,131,131,203,120, 24,163, 5, 0,138,131, 7, 15, 54, 2, 32,155, - 60,121,178, 26, 64,146,179,184,178, 88, 44,200,205,205,133,193, 96,176,101,101,101, 37,143, 25, 51,134, 91,189,122,181,204,254, -206, 5,119, 2, 11,120,209, 82,189,186, 78, 73,169,236,163,165, 75,151,250,180,111,223,158,241,241,241, 65, 78, 78,142,254,183, -109,219,124, 90,183,108, 18, 51,109,250,204, 29,250,232,154, 73, 7, 79,221,192,189,196, 44, 88,108, 54,196, 68,248,229,219,191, - 36, 60,118,216, 39,168, 56, 44, 88,206, 98, 98,223,190,125,120,241,197, 23, 29,121, 93,161, 80, 20,176,116,121,226,100, 89, 22, - 47,190,248,226, 3, 22,157, 61,123,246,184,181, 54,121,130,179, 24,114, 21, 69,238,132, 23,195, 48,240,212,203, 44, 90,239,220, -137, 44,103, 43,190,139,104,243, 84, 73,128,101, 89,140, 24, 49, 2,114,185, 28, 99,199,142, 5,203,178,168, 93,187, 54, 88,150, - 69,195,134, 13, 33,151,203,209,170, 85,171, 98,251,253,200,145, 35,168, 83,167,142,195, 77,181,107,215, 70,253,250,245,193,178, - 44,154, 54,109, 10,185, 92,142,118,237,218,121,195,249, 97, 78, 78, 78, 45, 31, 31, 31, 92,190,124, 25, 50,153, 12,132,144,171, -148,210, 90, 0,240,246,219,111, 95,203,203,203, 43,111, 50,153,240,246,219,111, 19,139,197, 82,115,236,216,177, 31, 1,144, 4, -150,132,199, 89, 30, 21,208, 34, 78, 48,142, 27, 55,238, 67, 66,200, 86,209, 34,229,106,105,114,119,238,134, 95, 20, 65, 98,247, - 96,125, 23,241, 38,118, 29,118, 42,226, 93,139,139,160,114,237, 34,252,211,163, 5, 75, 44,116,189, 21, 88,158, 96, 50,153,158, - 11, 13, 13, 45, 84, 92, 57,255, 90, 44, 22,148, 43, 87, 14, 38,147,233,185,226, 86, 22, 17, 17, 17,176, 90,173, 88,182,108, 25, - 20, 10, 5, 20,138,191,117,133,197, 82,180,113,232,252,249,243, 55,143, 28, 57, 82,167,110,221,186, 1, 63,254,248, 99, 74,243, -230,205, 67,218,183,111, 15,141, 70, 3,163,209, 8,155,205,134, 6, 13, 26,160,106,213,170,136,143,143,199,111,191,253,150, 90, -169, 82,165,224,163, 71,143, 10,137,137,137,183,139,160,110,221,186,117,107, 16, 66,240,219,111,191,165, 81, 74, 79,104, 52,154, - 31,167, 77,155,230,111,177, 88,132, 87, 95,125,245,110,122,122,250, 24, 0, 54,149, 74, 53,171,125,251,246, 47,200,100,178,181, - 60,207, 47, 44,110, 2,117, 13, 91,131,193, 0,181, 90,237,205,146, 16,242,244,244,244, 26, 0,160,211,233, 2, 1, 92,115,164, -108,163,177,128, 8,182, 88, 44,166,192,192, 64, 29, 0,216,223,145, 23, 18, 31, 33, 90,173,118,195,237,219, 55,124,157,199,199, -249,251,251,163, 95,223,190, 76,227, 70,141,148,181,158,123,174,221,132, 47, 86,174,141, 12,210, 91, 98, 34,131, 96,227,109,216, -181, 99,187, 64, 5,219, 14,169,184,121, 50, 2, 75, 20, 25,174, 22, 44,185, 92,142,189,123,247, 62,112, 77,161, 80,224,171,175, -190,242, 74, 16,136, 98,170,176, 46, 50,151, 46, 45,226, 73,184,200,229,114,200,100, 50,124,253,245,215, 16, 4, 1,239,190,251, -110,129,110, 67,103,126, 47, 91,204,142,119,170,126, 34, 0,176, 32,126,182,202,241,190,171,123,197,242,210, 27,171,216,130, 5, - 11,188,178, 96,117,234,212,201,163, 96,117,238, 81,112,118,215, 95,127,253,229,150,119,233,210,165, 30,195,147,231,121,252,242, -203, 47, 14,113, 42,226,227,143, 63,126, 59, 58, 58, 58,108,255,254,253, 72, 76, 76,132,193, 96, 64,110,110, 46, 26, 52,104, 16, -211,166, 77,155, 83,137,137,137,183,206,159, 63,255,146,148,123, 36, 60, 65, 11,150, 57, 46, 46,238, 92, 92, 92,156, 91, 11,149, -171, 37,169, 40, 75,147,147,176,250, 19,246,174,193,113,227,198,125,136,252,225, 51,127,122,241,174,210,181,139,208,173,225,199, - 69, 53,126,230,174,208,245,166,155,208, 75,179, 57, 75, 8,129,201,100,114, 43,172,156, 69,129,213,106, 69,122,122, 58,120,158, -103, 31, 33,162, 30,184,230, 73, 96,157, 61,123,246,245,129, 3, 7, 38,248,249,249,213, 74, 73, 73, 73, 22, 4,161,213,225,195, -135, 67, 88,150,133, 94,175,135, 94,175,199,175,191,254, 10,173, 86,139, 17, 35, 70, 36,243, 60,191,207,215,215, 55,200,104, 52, -158, 78, 76, 76,156, 80,168,114,145,203, 91, 55,107,214, 12, 39, 78,156, 64,102,102,230, 31,132,144, 90,131, 6, 13,106, 91,170, - 84, 41, 50,117,234, 84,211,181,107,215,190, 4,144,162,211,233,150,173, 90,181,170,121,221,186,117,125,250,247,239, 15, 66,200, - 55,148, 82,147,183,126, 54, 24, 12, 5,132, 85,118,118, 54,114,114,114,160,211,233, 56, 47,195, 76,142,252,177, 84,226,120, 42, - 71,220,216,173, 87, 98,252, 80,150,101,105,254, 35, 84, 94, 24,159, 78,167,155,188,114,229, 74,141,235,228, 3,158,231,145,148, -148, 4,189, 94,143,143, 39, 76, 80, 76,122,111, 80, 29,153, 79,216, 97,134, 33,176, 88,105, 38, 21, 44,219, 13, 73,125,246, 75, -197,205,147,129, 40, 8,186,118,237,250, 64,183,160, 66,161,192,206,157, 59,209,189,123,119, 71,131,165,110,221,186, 30, 27, 85, -162, 32,232,210,165,139,195, 18,180,125,251,118,183,221,123,162, 5,202, 27, 33, 40, 62, 59,114,228, 72,176, 44,139,133, 11, 23, - 98,244,232,209, 96, 24, 6,179,103,207, 6,195, 48,152, 56,113,162,215,226,210, 89,184,220,154,153,255, 27, 61, 58, 27,105,139, -195, 0, 0,190,122,189,232,161, 98,149, 61, 44,203, 58, 44, 87,207, 61,247, 28,228,114, 57, 26, 54,108, 8,150,101, 29,150,171, -142, 29, 59, 58,135, 35,245,134,147,101, 89, 92,185,114,197,225,230,134, 13, 27, 22,176, 92,177, 44,139, 78,157, 58,121,227,204, -105,254,254,254,159, 85,173, 90,181,218,156, 57,115,228, 50,153, 12,173, 91,183,174,252,230,155,111,222, 14, 10, 10, 10,154, 60, -121,178,214,205, 59, 26, 0,181,170, 85,171,166,147,114,141,132,199,104,193,250,204,205,173, 0,231, 49, 85,197,224,219,234,252, -188,200,225, 42,138,236, 22,177,125,158,184,220,189, 91, 24,216,162, 90, 99,197, 17, 88,118,243,114,145, 31,211,106,181,103,146, -147,147, 27,106, 52,154, 2,226,202,157,208,146,201,100, 72, 76, 76,132, 86,171, 61, 83,146,145,231,169,139,208, 46,102,222,115, - 10,208, 54, 29, 59,118, 92,190,115,231,206,136, 93,187,118,225,232,209,163, 8, 9, 9,193,130, 5, 11,238, 39, 37, 37,189, 78, - 41,221,233,205,119,203,151, 47, 95, 93,167,211,225,208,161, 67, 0,176, 31,192,128, 97,195,134, 17,142,227,176,104,209,162, 60, - 0, 59,253,252,252, 54,109,220,184,241,185,154, 53,107, 42,119,237,218,149,115,244,232,209, 61, 94,138, 43, 94, 16,132, 7,132, -149,115,152,250,250,250,122, 99,193,178,249,249,249,157,205,206,206,238,101, 52, 26,179, 85, 42,149,111,118,118,182,217, 89, 88, -137,252, 44,203,202,175, 92,185,146, 0, 32,198,207,207,239, 44,156,186, 18, 11, 36, 48,150,109,221,186,117,107,214, 53, 14,146, -146,146,144,152,152, 8,171,213,138,186,117,235, 18, 25,177,201,210,239,156,126, 91, 42, 94,254,153, 2, 77,204,235,226,172, 63, -119, 51, 7,183,111,223,238, 56,103, 24, 6,246,105,251, 30,197,208,206,157, 59,139, 28,136,238,210, 69,232,209, 20, 46, 62,191, -104,209,162,252,237, 40,236,150, 43,134, 97, 48,110,220, 56,168, 84, 42, 76,157, 58, 21,227,198,141, 3,203,178, 30,187, 8,157, -133, 75,217,177,121,206,141,162,252, 76, 97, 31,239, 68, 8,113, 22, 89,196, 91,209, 86,148,245,206, 27,203,191, 51,167,248,158, - 90,173, 46,116,128,187, 11, 39, 41,194,223, 63, 19, 66,110, 68, 68, 68, 28,108,216,176,161,223,241,227,199, 49,123,246,108,133, -217,108, 46,189,107,215, 46,199,119,221,133,151,193, 96,208, 72, 57, 71,194,227,176, 94, 21,113, 59,197,101,252, 20,113,238,174, - 43,226,215,245,121, 56, 93,115,230, 77,113,169,199,156,175,187,138, 42,215,111, 56, 63,147,242,128, 5,203, 83, 33,225, 73,104, -121, 99,193,202,203,203,251,125,219,182,109,245,251,246,237,203, 22,213, 61,104, 48, 24, 16, 22, 22,134,115,231,206,113,121,121, -121,191,123, 97, 25, 43, 49,129,229, 38,194,119,133,135,135,203,108, 54, 27, 42, 86,172,136,168,168, 40,152, 76, 38,100,102,102, -202,188, 21, 87,132, 16, 69,189,122,245,100, 0,144,145,145, 1,228, 79, 39,173, 84,169, 82, 37,156, 56,113, 2, 25, 25, 25,155, - 1,180,153, 52,105, 82,237, 23, 94,120, 65,177,118,237,218,188, 33, 67,134,108,182,217,108, 83,189,180, 62, 88, 56,142, 43,199, - 48,140, 53, 51, 51,243,158,115,120,134,133,133, 5,234,116, 58,146,148,148,100,243, 70, 96,213,170, 85,235,216,157, 59,119, 48, -121,242,228,148,105,211,166, 85,202,201,201,201,200,202,202,226,156, 69,150,201,100, 98,130,131,131, 85,139, 23, 47,214, 0, 64, -173, 90,181,142, 21, 38,176, 12, 6, 67, 41,173,246,239,134,176,217,108, 70, 98, 98, 34, 18, 19, 19,145,148,148,132,156,156, 28, -196,196,196, 32, 47, 47,175,140, 84,188,252, 99, 2,171, 64, 55,153,115,254,118,174,192,139,147,215,157,133, 75,215,174, 93, 29, - 99,183, 68,139,152,120,108,216,176,193,117,224,184, 87, 2,107,209,162, 69, 24, 57,114, 36,212,106, 53,230,204,153, 83,160,139, -208, 85, 20, 8,130, 64,188,241,123,185, 15,140, 72,156, 31, 8,185, 92,142,160, 33, 73, 5,186,226,220, 8, 13,175,220, 57,109, -218,180, 18,233, 34,116,230, 44, 83, 38, 63,171,124,253,245,215,232,213,171, 23,246,239,223,255,208, 93,132,177,177,177, 63,108, -221,186,213,239,252,249,243,200,206,206, 70, 74, 74, 10,204,102, 51,226,227,227, 11,237, 5,176,151,229,106, 41,231, 72,120,194, -248,243, 9,243, 62,242,247, 88, 15, 21,183,215, 2,203, 27, 11,150,217,108,158, 51,106,212,168, 97,109,218,180, 9,244,245,245, - 69, 66, 66,194, 3,226, 42, 55, 55, 23, 62, 62, 62, 48, 26,141,216,178,101, 75,182,217,108,158,227, 73, 20,216,108, 54,132,134, -134, 34, 53, 53, 21, 66, 33,227,162, 25,134,129, 70,163, 65,110,110, 46, 10, 19, 3, 69, 85, 20, 86,171, 21, 54,155, 13, 54,155, - 13, 86,171, 21,197, 92,158, 73, 35, 46,216,106, 48, 24, 0,192, 16, 25, 25, 89, 94,173, 86,227,230,205,155, 0,112, 5, 64,203, -246,237,219,203,211,210,210,232,155,111,190,121,152, 82, 58,194,195,106,246,150,125,251,246,149, 3, 0,141, 70,115, 25, 0,226, -227,227,109,153,153,153, 5, 44,131, 90,173,150,118,239,222, 61,130, 82,138,125,251,246,149, 83, 40, 20, 20,133,172, 89, 5,192, -180,121,243,230,243,126,126,126,171,167, 79,159,222,183,115,231,206,231,106,212,168, 81,206, 96, 48, 36, 27,141, 70,163,201,100, -162, 50,153, 76, 17, 16, 16,160,222,177, 99,199,181,195,135, 15,183,209,235,245,171, 55,111,222,124, 30,128, 91, 75,155, 78,167, -139,207,203,203, 43, 43,198,169,179,184, 74, 76, 76, 4,165, 20, 55,110,220,128, 86,171,189, 35,149, 31,255,104,203,241, 1, 97, -229, 78,108,121, 43,174,156, 5,193,142, 29, 59,138, 92, 3,203, 91, 78,103, 49, 52,122,244,104,204,159, 63,255, 1, 11,214,212, -169,249,109,146, 9, 19, 38,120, 61, 6, 75,180, 86, 37,206, 15, 68,248,200,244, 2,110, 7, 0, 34,186,175,152, 75,178,177, 44, -139,201,147, 39, 63, 48,248,220,185, 11,207,203,174,188, 2,238, 76, 78, 78, 6,203,178, 8, 12, 12, 68,191,126,253,208,174, 93, - 59, 71, 87, 99,113,121, 47, 94,188,120,240,131, 15, 62,168, 25, 27, 27,139, 41, 83,166,164,251,251,251,251,190,245,214, 91,108, -102,102, 38, 41,202,130, 37, 9, 44, 9, 18, 30, 65, 96,137, 25,203,219, 89,132,238, 10, 73, 66, 72, 27,231,181, 50, 40,165, 89, -132,144,126,109,219,182,253,113,221,186,117,154,242,229,203,227,226,197,139, 72, 79, 79,135,197, 98,129, 66,161, 64, 68, 68, 4, - 50, 51, 51,241,221,119,223, 25,243,242,242,250, 81, 74,179,138,226, 4,240, 81,189,122,245,150,204,154, 53, 75, 93,187,118,109, -164,167,167, 35, 55, 55,183,192,170,211,122,189, 30, 26,141, 6,199,142, 29,195,246,237,219,141, 0, 62,242,192,233, 78,197,193, -106,181, 58,132,150, 39,129,229,194,169, 19,173, 56,121,121,121, 0,192,149, 46, 93, 58, 12, 0,110,220,184, 1, 0,183, 99, 98, - 98, 38, 84,168, 80,129,172, 90,181,138, 82, 74,119,185, 19, 87, 46,156,233, 77,155, 54,205, 0, 16,110,177, 88, 20, 0,144,149, -149,101, 13, 14, 14, 14, 85,169, 84,130, 70,163, 17,212,106,181,144,144,144,192,113, 28,167, 0,128,166, 77,155, 90, 0, 36,194, -105,172,135, 11,167, 0, 32,123,233,210,165,159,245,239,223,191, 97,163, 70,141, 98,135, 14, 29,122,246,205, 55,223,100,162,162, -162, 2,114,114,114, 76, 87,175, 94,205,248,226,139, 47,114,142, 28, 57,210, 70, 46,151,223, 94,186,116,233,103, 0,178,237,239, - 62,192,201,113,220,239,187,118,237,122,189,115,231,206,236,189,123,247,144,148,148,228, 16, 87, 73, 73, 73,168, 90,181, 42, 14, - 31, 62,204, 91,173,214, 93,197, 8,207,146,178,220, 72,156,249,141, 15, 42,230,245,194,132,149,216,136,242,150,211, 89, 12,245, -234,213,171,128,213, 74,161, 80, 96,227,198,141,110,203, 13, 55, 43,146,183,113, 93, 15, 74,116,211, 7, 31,124, 80, 64,172,125, -252,241,199,133, 58,205, 83,120,138, 60, 89, 95, 71, 21,156, 69, 88, 72, 62, 47,202,157, 98,217, 41,151,203,241,241,199, 31,123, -109,193,130,203, 24, 44,119,156,162,223,155, 55,111,142,188,188, 60,135,128, 45,204,130,229, 41, 60,121,158, 31, 57,127,254,124, -170,215,235, 95,200,206,206,254,223,157, 59,119, 86,228,229,229, 61,159,149,149, 85,164, 5,203,108, 54,171,164,124, 36,113, 62, -142,181,176,254, 19, 2,203, 94, 57,162, 84,169, 82, 5,246,182, 98, 24,166,192, 81,156,113, 4,246, 12,187,131, 16,210,163,113, -227,198,223,143, 28, 57,210,183,118,237,218,242,178,101,203,194, 96, 48,224,230,205,155, 56,119,238, 28,183,121,243,230,236,188, -188,188,255, 81, 74,119,120,193,183,146, 16,178,189,125,251,246, 19, 27, 52,104, 48,248,147, 79, 62,145, 85,174, 92, 25, 89, 89, - 89, 8, 8, 8, 64,104,104, 40, 46, 93,186,132, 45, 91,182,240,169,169,169, 75, 0, 76,162,148,166, 20,183,129,111,181, 90,241, -202, 43,175, 64, 16, 4,204,157, 59,215,121, 65, 52,111, 96,181, 90,173, 20, 0, 73, 77, 77, 5,128, 60, 81,112, 93,189,122, 21, - 0,238,148, 45, 91,214, 7, 0,118,237,218, 69, 0, 28,242,214, 93,206,150,172,170, 85,171,222,116, 45, 20, 69,203,149,104,245, -130,231, 13,154, 77,189,123,247, 78,206,203,203,107, 63,122,244,232,137,139, 22, 45,234,187,104,209,162, 7, 30,210,235,245,171, -103,207,158, 61,169,119,239,222,201,133, 89,175,236, 22,187, 9,175,189,246, 90,239, 51,103,206,248,170,213,106, 24, 12, 6,164, -165,165,193,106,181, 34, 38, 38, 6,201,201,201, 88,185,114,101,142,209,104,252, 84,202,142,255, 12,156, 5, 65, 97, 86, 44, 79, -226,170, 40, 43,206,207, 63,255,236,118,141,169,226,114,186,138, 12,111,215,166, 42,170, 49, 36, 46, 47,227,110,233,135,226,148, -107,238,120, 89,150,197,231,159,127,238, 88,108,213,157,229,170, 56, 22, 44,145, 51, 48, 48, 16, 0, 32,110,109,212,169, 83,167, -135,230,181,111, 27, 54,194,233, 27,211,198,140, 25,243, 89,213,170, 85, 43, 3, 80, 57,135,129,180,169,130, 4, 9, 37, 36,176, -120,158,143,175, 82,165, 74,129,130,205,211, 38,163, 54,155, 45,222,203, 76,189,157, 16, 18, 51,123,246,236, 81, 58,157,174, 77, - 94, 94, 94, 77,123,129,113,198, 96, 48,236, 50,155,205,243,138,179, 57,179, 93, 48, 13, 39,132,204,109,223,190,253,212, 86,173, - 90,245,124,239,189,247, 8,165, 20,139, 23, 47,166,215,175, 95,223, 0,224, 35, 74,233,245,135, 9,164,192,192,192,243,223,125, -247, 93,216,143, 63,254, 8,155,205,134,121,243,230,193,215,215,247,124,113,220,199,178,236,247,141, 26, 53,234,123,248,240,225, -213,148,210,179, 42,149,234,135,166, 77,155,246, 59,116,232,208, 58, 74,233, 5,150,101,127,104,216,176, 97,191, 99,199,142,109, -162,148,158, 46,134,243, 28,150, 44,142,115,223,163,232,206,114,229, 1,217, 3, 7, 14,180, 14, 28, 56,240,189,222,189,123, 47, -251,243,207, 63,159,207,204,204,172, 9, 0,254,254,254,103,234,215,175,127,108,221,186,117,151,236,150, 43,147, 39,191, 19, 66, -186,215,172, 89,115,211,148, 41, 83,116,177,177,177,108,197,138, 21,113,235,214, 45,156, 61,123,150,251,246,219,111,115,141, 70, - 99, 87, 74,105,134,148, 29,255, 57,129, 69, 41,133,191,191,127,129,198,147, 56,117,191,184,221,130,206, 21,178,184,165,142, 43, -111, 97,156, 30, 6,185, 2, 0,124,124,124, 28,139,146,122, 51, 52, 65, 16,138, 94, 79,141, 82,234,224, 20, 15, 47,196,149,199, - 25,127,246,173,106,188,230,244,102,153, 6,157, 78, 7,155,205,230,224,245, 98, 38, 39, 41,102,156,253, 12,224,231,138, 21, 43, - 94, 5, 80, 65, 18, 85, 18, 36, 60, 6,129,149,158,158, 94,239,113,126,216, 46,160, 38,217,143,146,226,188, 14,160, 55, 33,100, -214, 31,127,252, 33,246, 23, 76,246,180,159,161, 39, 92,188,120,177,179, 92, 46,255,106,245,234,213, 13, 40,165,240,243,243, 59, -114,235,214,173,183,138,195,193,113,220, 96, 66,200,187,226,172, 64,179,217, 60,152, 16,242, 62,165,212,224,116,223,113, 94, 92, -175, 3, 48, 83, 74, 35, 11,185,111, 46,134,184,114, 88,178, 0, 88,214,173, 91,151, 11,224, 20,254, 94,231,202,102, 63, 76,112, -234, 22,244, 16, 47,187, 9, 33, 21, 63,254,248,227,105, 50,153,172,181,193, 96,136,210,233,116,119, 57,142,251, 61, 47, 47,239, - 35, 74,105,154,148, 21,255, 57, 88, 44,150,123, 85,170, 84, 97,221, 53,156,138,170,192,139,106, 80,241, 60, 31, 95,169, 82, 37, -143,141, 50, 55,156,247,138, 72, 71,183, 99, 98, 98, 24,111,185, 68, 88,173,214,228,162,220, 25, 19, 19,131,226,114,122,242,123, -185,114,229,220,250,221,131, 16,188, 87, 68,249,241, 80,156, 69,133,103, 81, 48, 26,141, 25, 33, 33, 33,185, 38,147, 73,110, 54, -155,229, 28,199, 21, 48, 55,106, 52,154, 20, 41,231, 72,144,240,144, 2,235,223, 12,187,160,234, 82,130,124,102, 0,175,150, 0, -143,201,229,220, 80,212,121, 49,241, 56, 44, 64, 2,128,188, 18, 10,195, 84, 0,111, 74, 89,238,233, 67,106,106,234, 11, 37,205, -153,150,150, 86,226, 13,180,148,148,148,134,143,193,239,245,254,171,156, 69,225,222,189,123, 47, 72, 57, 67,130,132, 71, 3, 35, - 5,129, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 0,104,227,238, 70,113,102, 7, 16, 66,218, 20,247,195,158,248, 37, 78,137, - 83,226,148, 56, 37, 78,137, 83,226,124,246, 56, 61,113, 63, 51,179, 19, 41,165,143,237, 0,208, 70,226,148, 56, 37, 78,137, 83, -226,148, 56, 37, 78,137,243,191,118, 72, 93,132, 18, 36, 72,144, 32, 65,130, 4, 9, 37, 12, 73, 96, 73,144, 32, 65,130, 4, 9, - 18, 36, 72, 2, 75,130, 4, 9, 18,158, 12, 8, 33, 1, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9,255, 54,113, 85, 3, -192,148, 18,166,157, 98,231,149, 32,225, 63,145,135, 8, 33, 53, 37,129, 37, 65,130, 4, 9, 18,196,138,161, 99,249,242,229, 39, - 3,240, 41, 97,106,159,242,229,203, 79, 38,132,116,148, 66, 89,194, 51,154,119, 84,132,144, 87, 25,134, 57, 86,163, 70,141, 51, -177,177,177,167, 25,134, 57, 76, 8,233, 69, 8, 97,255, 83, 97,225,180, 41,242, 94, 0,160,148, 54,151,146,136, 4, 9, 18,254, -163,149, 3, 11, 96,112,223,190,125,187, 76,159, 62, 93, 89,170, 84,169,187,148,210,254, 37,200,191,234,238,221,187,209, 3, 6, - 12,200,221,189,123,247, 14, 0, 75,220,109,236, 46, 65,194,191, 48,239,148, 5, 48,216,199,199,103, 80,139, 22, 45, 2,186,118, -237,138,160,160, 32,112, 28,135,187,119,239, 98,235,214,173, 56,116,232, 80,130,197, 98,153, 15,224,107, 74,105,102, 33, 60,207, -140, 22, 33,148, 82,113,227,226, 22,118, 79,237,149,146,138, 4, 9, 18,254,131, 21,132, 30,192,248, 57,115,230, 52, 24, 60,120, -112, 57,147,201, 20, 31, 16, 16,112,163,164, 5,150,213,106,109,147,146,146,114,124,234,212,169, 88,188,120,241, 5, 0,113,197, -217,123, 85,130,132,167, 48,239,140,235,209,163,199,212,176,176, 48,166, 70,141, 26,136,136,136,128,217,108,134,209,104, 4,165, - 20, 44,203,130, 82,138,172,172, 44,236,219,183, 15,187,119,239, 54,103,100,100,124, 7, 96, 30,165,244,138, 19,207, 51,165, 69, - 28, 2,171,184,155,130, 74,144, 32, 65,194, 51, 84, 65,148,211,104, 52, 31,111,217,178,165,122,147, 38, 77, 66,115,114,114,110, -216,108, 54, 67,100,100, 36, 69,254,166,230,238,144, 69, 41, 29,225,134,107, 1, 0,191, 66,222,209, 91,173,214,250,169,169,169, -199, 1, 96,227,198,141, 24, 63,126,124,154,209,104,156, 76, 41,189, 41,197,132,132,127,105,254,185,124,241,226,197, 74, 60,207, - 35, 53, 53, 21,102,179, 25,121,121,121, 14,129, 37,147,201, 64, 41, 5,199,229, 27,107, 5, 65,192,137, 19, 39,176,107,215, 46, -122,227,198,141, 79, 40,165,147, 69,129,245, 44,105, 17, 73, 96, 73,144, 32,225,191, 94, 57, 52, 14, 15, 15,127,247,143, 63,254, - 40, 91,166, 76, 25,125,110,110,238, 53,142,227,108, 0, 16, 16, 16, 16, 43,147,201, 84,174,239,240, 60,111, 86,171,213, 7,220, - 89,183, 8, 33,171, 76, 38, 83, 19,119,239,217,223,229, 50, 50, 50, 78,137,231,167, 79,159,198,160, 65,131,172,137,137,137,115, - 40,165, 7,165, 24,145,240,111, 20, 88,167, 78,157,170,180,102,205, 26,212,169, 83, 7,213,170, 85, 67,110,110,174, 67,108, 89, - 44, 22,216,108,182, 7,222,203,206,206,198,187,239,190,123,133, 82, 90,249, 89, 20, 88,226,128,179,207,164, 49, 88, 18, 36, 72, -248, 47, 35, 49, 49, 49,213,223,223,255,190, 32, 8, 84,188,150,145,145,113,238, 97,184, 30,246, 61, 9, 18,254,165,176, 89, 44, - 22,212,171, 87, 15, 55,111,222,196,137, 19, 39, 28, 66, 43, 53, 53, 21, 9, 9, 9, 5, 30, 62,118,236, 24, 78,158, 60,137,102, -205,154,185,242,124,246,204,141,193,178, 43,199,230,118, 79,237,149,210,138, 4, 9, 18,254, 99, 45,240,114, 26,141,230,227,184, -184,184,160,151, 95,126,217,113,253,113,116, 17, 38, 36, 36, 56, 90,232, 82, 23,161,132,103, 36,255,116,143,140,140,252,118,216, -176, 97,126, 13, 26, 52, 64,124,124, 60,238,221,187,135,140,140, 12,212,174, 93, 27,177,177,177,184,126,253, 58,182,111,223,142, -147, 39, 79, 66,165, 82, 33, 58, 58, 26, 62,171,215,224, 43,130,243,148,210, 88, 39,174,103, 70,139, 56, 4,150, 4, 9, 18, 36, -252,199, 43, 9, 61,128,241, 67,134, 12,169,246,209, 71, 31,129, 16,130,200,200,200,172,146, 30,228,158,144,144,224, 71, 41,133, - 52,200, 93,194, 51,150,127,124, 1,140,137,137,137,121,127,200,144, 33,170,234,213,171, 35, 62, 62, 30, 41, 41, 41,200,200,200, -192,145, 35, 71, 0, 0, 81, 81, 81,136,138,138,194,165, 75,151,112,240,224,193,236,220,220,220,129,148,210, 31,159,201, 48,145, - 4,150, 4, 9, 18, 36, 56, 42, 9, 22,192,224,150, 45, 91,182, 91,188,120, 49, 42, 85,170, 84,226, 2,235,202,149, 43,126, 67, -134, 12,129,180, 76,131,132,103, 52, 15,133, 2,152, 80,189,122,245,193,131, 6, 13, 98,203,148, 41,131,123,247,238,225,143, 63, -254, 64,133, 10, 21,112,247,238, 93,236,222,189,219,146,146,146, 50, 23,192,116, 74,105,214,179, 26, 22,204, 99, 14,232, 54, 18, -167,196, 41,113, 74,156,255, 22, 78, 74, 41, 71, 41, 93,184,123,247,238, 37, 29, 59,118, 20, 30,135, 59, 59,118,236, 40,236,222, -189,123, 9,165,116, 97, 81,226, 74,138, 35,137,243,223,200, 73, 41, 77,166,148,142, 56,127,254,124,197,119,222,121,231,251, 41, - 83,166, 8,130, 32, 32, 52, 52, 20,235,215,175, 23,214,174, 93,251,109, 74, 74, 74,121, 74,233,184,103, 89, 92, 1,127, 15,114, -151, 32, 65,130, 4, 9,127, 87, 18,191, 18, 66,226, 1, 12, 46, 97,234,220,235,215,175,127, 78, 41, 61, 43,133,178,132,103, 60, - 15,221, 2,208,159, 16, 50,243,196,137, 19, 31, 1,160, 0,166, 80, 74, 47,252, 87,194, 64, 18, 88, 18, 36, 72,144,224,190,130, - 56, 75, 8,153, 80,194,180, 19, 40,165, 25, 82,232, 74,248, 15,229,163,115, 0,250,252, 23,253, 46,237, 69, 40, 65,130, 4, 9, -133, 87, 14, 25, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, 72,144, 32, 9, 44, 9, 18, 36, 72,144, 32, 65,130, - 4, 9, 15, 7, 2,160,176,153, 0,187,188, 38,121,136, 25, 10,158,248, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,124,246, - 56, 61,113, 23, 71,127, 60,213,160,148,122, 60, 96, 95, 47,171,184, 7,128, 54, 15,243,158,196, 41,113, 74,156, 18,167,196,249, -239,229,180, 55,222, 9,242,123, 73, 24,241,252,105,246,251,195,212,115, 79,202,239,255, 21,206,103,237, 96, 61,168, 75, 71, 32, - 17, 66, 4, 0, 2, 45,129,149, 73, 9, 33, 98, 4,148, 8,159,132,199, 96,218,204,143, 35,242,183, 14,151,226, 73,130, 4, 9, -197, 42, 59,100, 78,149, 44, 15,128, 39,132,224,105, 43, 75, 74,178,158,123, 28,126,255, 47,115,254,219,193, 22, 21, 80, 50,153, -108, 71,112,112,112,203,212,212, 84,193,126, 29, 74,165, 18, 12,195, 64, 46,151, 27,115,114,114,244, 15, 17, 9,223,132,133,133, - 13, 72, 75, 75, 19, 24,134,129, 90,173, 6, 33,196,193,153,153,153,169,255,167, 3,165,108,217,178, 25, 70,163,209,199,245,186, - 90,173, 54,221,190,125,219,247,191, 80, 64, 42, 20,138, 30,129,129,129,254, 41, 41, 41,148, 97, 24, 40, 20, 10,200,100, 50,216, -255,115,153,153,153,203,189,229, 11, 12, 12, 60, 22, 24, 24,232, 47,190, 79, 8, 65, 90, 90, 90,102, 82, 82,210,243, 0,160,209, -104, 14,234,116,186, 32,150,101, 33,147,201, 32,147,201,144,151,151,151,150,154,154,218, 88,170,174,254,157,216,176, 97,131,172, -125,212, 27, 21, 88,106,172,197, 48,212, 79, 16, 72, 22, 71, 52,167,183,223,251,230,154, 55,239,247,236,217,147,255,135,243, 64, - 99,123,203,226, 96, 9,241, 57,239, 79,104, 2,144, 10,224, 26,128,245,148, 82,227, 63, 29, 95, 42,149,106,110, 88, 88,216,160, -220,220,220, 60, 66, 8, 37,132, 32,191, 26,192, 3,191, 60,207,199,167,166,166,214,243, 80,201,202,149, 74,229,236,240,240,240, -215,242,242,242,242,236,124,148, 16,130,136,136,136, 2,124, 0, 96,179,217,226, 83, 82, 82,234,121,227,214,208,208,208,165, 26, -141,230,127,121,121,121, 6,187, 32,114,238,145,113,174,196,175,167,164,164, 52,245, 36, 8,148, 74,229,188,176,176,176,215,237, -126, 7, 33,132,134,132,132, 60,178,223,195,194,194, 94, 51, 24, 12, 5,252, 30, 26, 26,234,150,179, 48,191,187,227,116,118, 39, - 33, 4, 33, 33, 33,143,236,206,167,145,243,153, 21, 88, 0, 24, 66,200,230,198,141, 27,183,216,187,119, 47,115,241,226, 69,166, -106,213,170,224,121, 30,130,144,159,158,163,163,163,181, 15, 81,200,172,104,218,180,233, 43,251,246,237, 99, 54,111,222,204,212, -175, 95, 31,132, 16,240, 60, 15,158,231, 81,163, 70, 13,205, 35, 22, 98, 62, 44,203,190,171, 84, 42,155,115, 28, 87, 13, 0,228, -114,249, 5,179,217,188,151,227,184, 57,148,210, 92,111,120,172, 86,171, 54, 57, 57,249,129,176,137,137,137, 81, 62,172,219,244, -122,253, 33,134, 97, 98, 28, 1,108, 23, 26,238, 50,177,248, 75, 41,189,145,146,146,210,168, 48,206,128,128, 0, 7,103, 97, 28, -174,215, 4, 65,184,145,156,156,220,200,131,184,122,185,105,211,166,126,187,118,237, 34,119,239,222, 37, 26,141, 6,130, 32,128, -231,121,216,108, 54, 84,175, 94,189, 88,235,167,249,251,251,235,199,141, 27, 87,161, 67,135, 14,216,184,113, 35, 94,125,245, 85, - 52,105,210,228,138,120, 95,167,211, 5,157, 63,127,190, 82, 96, 96, 32,242,242,242,144,149,149,133,182,109,219,254,235, 51, 87, -131, 58,165,166, 16,134, 4, 58, 10,127,142, 79, 63,114,234,222, 35,175,171,228,239,239,127, 82,169, 84,134,137,241,202, 48,140, -219,184,118,190,102, 50,153,146, 82, 83, 83,235,120,200, 63,101, 1,116,145,201,100, 21, 89,150,173, 2,160, 44,199,113, 97, 0, -160, 80, 40,146,100, 50,217, 45,155,205,118,201, 98,177, 92, 5,240,179,125, 33, 65,183,104, 31,245, 70, 5,194,229,245,204, 49, - 11, 29,181,229,167, 87,206,187, 62,238,178, 86,149,247,107,251,168, 55, 54,120, 43,178,254, 65,113, 85, 46, 60, 60,252, 93,251, -255,251, 37,180, 9,179,159,201,100,106, 34,147,201, 84, 28,199, 33, 41, 41, 41,117,201,146, 37,183, 23, 44, 88,208,146, 16, 50, -203,211,194,163, 13,235,149, 62,206, 48, 76, 52,236,242, 65,160,124,252,225,227,119, 75,164, 98,146,201,100,243, 94,122,233,165, -215, 55,108,216,160, 61,113,226,132,182, 90,181,106,142,242, 73, 16, 4,184, 26, 30,202,149, 43, 87,100,240, 1, 96, 25,134,153, -219,179,103,207,190,171, 86,173,210,222,190,125, 91, 27, 25, 25,233,224,116, 22,111, 34, 34, 35, 35,189,114,107, 80, 80,208, 55, - 29, 58,116,232,191,114,229, 74,249,150, 45, 91, 52,193,193,193, 8, 10, 10,130, 66,161,120,224,217,198,141, 27,123, 90,137,159, - 97, 24,102, 94,183,110,221,250,175, 93,187, 86,123,244,232, 81,109,141, 26, 53, 32,147,201, 30,217,239,221,187,119,239,187,102, -205, 26,237,153, 51,103,180, 21, 43, 86, 4,195, 48, 96, 24,230, 1, 62,134, 97, 80,170, 84, 41,175, 56,187,118,237,218,119,221, -186,117,218,147, 39, 79,106,171, 84,169,226, 8, 79,167,238,185, 98,187,243, 41,231,124,246, 4,150,221, 92,186,170,113,227,198, -237,247,238,221, 43, 3,128,147, 39, 79, 34, 61, 61, 29, 81, 81, 81,240,241,241,129, 74,165,130,201,100,162,197, 44,180,190,177, -139, 43, 57, 0,108,250, 95,119,220,144, 3, 35,146, 45, 80, 40, 20,184,126,253, 58,100, 50, 25,125,132, 66,177,153, 94,175, 95, -249,227,143, 63, 6,212,169, 83,135, 73, 73, 73, 65, 76, 76, 12,210,211,211,159,223,183,111, 95,221, 55,222,120,227, 13, 66,200, -171,148,210,125,222,114,254,250,235,175,208,233,116,208,106,181,208,233,116,176, 88, 44,228,161, 3,154,101,163,111,221,186, 21, -234,227,227, 3, 65, 16, 28,135, 75,255,181, 3,130, 32,160, 82,165, 74, 86, 15, 5, 99,244,237,219,183, 67, 53, 26, 13, 40,165, - 5,248,120,158,135, 74,165,114,110, 41,128,231,121,196,196,196, 88, 61, 89,174, 68,113, 5, 0,171, 87,175, 70,120,120, 56, 66, - 67, 67,161,211,233,160,209,104, 10, 84,232, 94, 22,224,104,223,190, 61, 62,253,244, 83, 76,159, 62, 29, 99,198,140, 41, 80,192, -202,229,114, 4, 6, 6, 98,219,182,109,208,235,245, 40, 83,166, 12,228,114,249,191,223, 18,200,144,192,195,199,239, 56, 44,178, - 47,182,170,202, 54,168, 91,102,145, 61,134,193, 48,128, 32,228, 87,153,132,128,114, 54, 33,227,207,211,247, 38,122, 17,158,145, -183,111,223, 14, 85,169, 84, 94,185,131,231,121, 68, 69, 69,201, 60,228,159,142,177,177,177,155,134, 14, 29,170,168, 88,177, 34, - 81, 40, 20, 96, 89, 22, 44,203,138,233,177, 12,165,180,140, 32, 8, 45,146,146,146,232,130, 5, 11,102, 18, 66, 94,162,148,254, -234, 54,189, 83, 99,173, 28,179,208,113,255, 95,120,190,103,155, 15,176,109,253,184,231,155,214, 22,224,171, 53, 94,179, 91,110, -158, 86,113,165,215,104, 52, 31,239,223,191,191, 82, 78, 78, 78,118,147, 38, 77, 62, 38,132,188, 83, 18,155, 49,103,100,100,156, - 19,255, 43,149, 74,140, 26, 53, 10, 29, 58,116,240,111,219,182,237,104, 66,200, 91,148, 82,107,225, 74, 64, 22,125,240,216,205, - 80,241,188,107,251,154,138, 70,245,203, 36,229, 55,196, 92,159,166, 16,120, 33,254,232, 95,241,245,188,240,239,204, 30, 61,122, -244,219,176, 97,131, 15, 0, 44, 94,188, 24, 61,122,244, 64, 96, 96, 32,180, 90, 45, 20, 10, 5,228,114,121,129, 95, 15, 22, 33, - 25,128,153,125,250,244,233,185,106,213, 42, 95, 0, 88,181,106, 21,186,119,239,142,160,160, 32,248,250,250, 66,169, 84, 66, 38, -147, 21, 59,252,130,130,130,190,105,242,252,243, 3, 87,174, 92, 9, 0,248,232,157,119,208,225,133, 23,224,163,213, 64,171, 81, - 66, 12, 11,165, 76,142, 23, 71,140,244,228,111, 6,192,172, 30, 61,122,244, 94,187,118,173, 47, 0,156, 56,113, 2,201,201,201, - 8, 11, 11,131, 70,163,129, 82,169,116,248,153, 16, 2,141, 70,227,149,223,123,244,232,209,115,205,154, 53,190, 0,176, 98,197, - 10,180,111,223,222,225,119,149, 74, 5,133, 66, 81,224,112, 21,155,238, 56, 95,122,233,165,158,235,214,173,243, 5,128,229,203, -151,163, 77,155, 54, 8, 8, 8,112,132,167,200, 85,156, 56,122,154, 57,159, 73,129, 37,142,141, 10, 11, 11,235,189,127,255,126, -198, 73, 28, 64,165, 82, 65,165, 82, 65,169, 84, 58,186, 9,139, 81,104,145,176,176,176, 1,251,246,237,115,188,100,161, 15,152, -168,139, 93,113, 59,241,183,105,217,178,229,154,173, 91,183,170, 21, 10, 5,140, 70, 35,206,157, 59, 7,127,127,127, 40,149, 74, -116,235,214, 77,214,184,113,227,160, 22, 45, 90,108, 36,132,244,245,102,134, 2,165, 20, 62, 62, 62, 5, 4,214,163,118, 33,107, - 52, 26,108,217,178, 5, 50,153,204,109,193,229,252, 63, 52, 52,212, 27,127, 67,165, 82,225,208,161, 67,144,201,100,144,203,229, - 96, 89, 22,114,185, 28,191,252,242, 11,222,123,239, 61,164,166,166,130, 16, 2,185, 92, 14, 95, 95,143,189,155, 36, 48, 48,208, - 95, 20, 87,162,248,209,104, 52,144,203,229,132,101, 89, 34,118,225, 17, 66,136,183,125,234, 12,195,224,251,239,191,199,140, 25, - 51, 48,118,236, 88, 44, 93,186, 20,181,106,213,114, 22,159,200,206,206, 70, 64, 64, 0, 2, 2, 2,160, 86,171, 31, 58, 45, 60, - 77,112, 13,157,217,115,230,107, 33, 80,228, 15,242, 16, 0, 1,160,160, 16,168,128,164,123,215,240,201,167,159,123, 93,235,168, - 84, 42, 28, 60,120,208, 33,130, 88,150, 5, 33, 4,206,194, 72, 60,194,195,195, 61,242, 41, 20,138,207,126,250,233, 39,229,247, -223,127,143,181,107,215, 58,210,150, 78,167,131,191,191, 63,130,130,130, 28, 71,116,116, 52,249,246,219,111, 21,181,106,213,250, - 12,192,175,238,227,156,250,105,203, 79,175,220,179,205, 7, 0,128,158, 31, 80,100, 92,153,250, 28,147, 57,209,239, 41, 22, 87, - 44,128,241, 91,182,108,169, 30, 25, 25,169,214,233,116,183,227,226,226,130, 70,141, 26, 53,158, 16, 50,225, 17, 55,101,206, 18, -173, 52,106,181, 90,221,188,121,115,229,180,105,211, 80,161, 66, 5,188,241,198, 27,129,139, 23, 47,238, 6, 96,125, 81,229,145, - 51, 22, 44, 92,228, 79,105,126,250,161, 2, 45,240,155,158,124, 11,239,140,254,196, 43, 71,149, 42, 85,106,240,198,141, 27,125, -156, 45, 73,206,149,191,115, 25, 37, 30,133, 9, 2,187, 21,131, 41, 93,186,244,192, 31,126,248,193,193, 25, 28, 28,236, 40,151, - 88,150, 5,195, 48,216,191,127, 63,226, 62, 27,143,128,144, 72,204, 95,184,216,163, 59, 67, 67, 67,151,118,236,216,241,127, 43, - 86,172,112, 92,171, 89,190, 60, 58, 53,126, 1,161,193,122, 4, 7,228,151,109, 84, 32, 56,125,233,166,199,250, 8, 0, 83,170, - 84,169, 55,214,175, 95,239,227,220, 16, 20,253, 10, 0,121,121,121, 14,171,189,197, 98, 65,189,122,245,188,242,187, 51,167,104, - 93, 19,197,154,107, 89, 47, 54, 96,138,226, 44, 85,170,212, 64, 81, 0, 3, 64, 96, 96, 96, 1, 14,185, 92,142,245,219, 86, 62, - 80, 55, 60, 42,103,113,227,221,149,243,230,205,155,152, 54,109, 90,129,120, 23,173, 89, 81, 81, 81, 88,176, 96, 65, 81,156,238, - 80, 31, 64,136,211,185, 5,128,210,233, 55, 5,192,159,110,158, 19,175,203, 1, 60,103,191,199, 3,200, 1,224,239,134,175, 48, -158, 84,228,111,247, 19,226,242,188,235,119, 10, 10, 44, 66,136,152,123, 91, 2, 56,152,154,154, 42, 92,188,120,145, 57,113,226, - 4,228,114, 57, 66, 67, 67, 81,191,126,125,177,251, 12,114,185, 28, 58,157,142,248,251,251, 39,137, 21,174, 24,120,206,125,233, - 78, 66,134, 73, 79, 79, 23,118,238,220,201,172,122,169, 29, 44, 20,168,253,113, 28,218,119,238,140,237, 81, 74,200, 0, 60,127, - 49, 21, 90,173,150,149,203,229, 54, 49, 18, 68, 78,231,177, 89,174,226,136, 16,226,171,211,233,190,253,249,231,159,213, 12,195, - 32, 39, 39, 7,130, 32,160, 73,147, 38, 96, 24, 6,103,207,158,197, 71, 31,125,132, 77,155, 54,225,167,159,126,210,212,169, 83, -231, 91, 66, 72, 53, 74,105,142, 83,225,181,203, 93,226,244,245,245,133, 86,171,117, 8, 44,209,207,206,166,110,241,121, 74,233, -189,212,212,212,186, 69,113,242, 60,143,238,221,187,131, 16, 2,153, 76, 86,160,208,113,254, 85, 40, 20, 56,123,246,236, 3,137, -207,157, 48, 20,253, 10, 0, 90,173, 22, 62, 62, 62,216,179,103,143,227,126,237,218,181, 97,177, 88, 16, 28, 28,140, 11, 23, 46, -184, 43,184, 11,112,166,164,164,208,132,132, 4,178,106,213, 42,200,229,114, 4, 5, 5, 65,171,213,146,149, 43, 87,142, 87, 40, - 20,209, 38,147, 73,176, 88, 44, 80, 42,149,243, 69,107, 22,203,178,134,172,172,172,160,194, 56,101, 50, 25,134, 14, 29,138,247, -223,127, 31, 75,151, 46,197,219,111,191,253,128,133,203,100, 50, 33, 56, 56,216, 33,178,188,241,251,163, 11,160,199,204, 41, 80, -156, 59,185, 29,231,207,236,130,192, 11,224, 5, 10, 74,121, 8, 28,112, 98,231,145, 74,247,111, 36, 68, 81, 80,192,222,145,161, -202,202,229, 90, 4,171,170, 0,216,188, 39,213, 60,215, 83,250,100, 89, 22, 54,155, 13, 63,255,252, 51,174, 93,187,134, 29, 59, -118,192,104, 52, 58,194,177, 97,195,134, 24, 56,112,160, 91,129,229,202, 73, 41, 93,113,247,238,221,218, 77,154, 52, 33,153,153, -153,200,204,204,132,209,104, 4,207,243,224, 56, 14, 44,203, 66,173, 86, 67,163,209, 32, 44, 44, 12, 38,147,137,154,205,230, 21, -133,113, 10, 2,201,202,187, 62,238,242,182,245,227,158,239,249, 1,197,134, 25, 4, 21, 74,171,242,126, 63,238, 59,112,243,129, - 49,109, 1, 80,193, 94,234, 48, 0,181,241, 66,234,251,227,191, 24,254,196,227,168, 32, 6,207,153, 51,167, 65,147, 38, 77, 66, -179,179,179, 47, 10,130, 64, 95,126,249,101, 92,190,124,185,218,226,197,139, 7, 3, 88, 88, 92, 78, 66, 72, 75,251,253, 17,206, - 21,252,182,109,219, 94, 2, 48, 96,217,178,101,232,209,163, 7, 22, 47, 94, 28,235, 42,176,156, 57, 41,165,184,117,101, 63,110, - 93, 61, 0, 65,160, 78, 86,112,247,255,169,151,238, 52, 24, 12,166,191,254,250,203,103,217,178,101, 8, 13, 13, 69,185,114,229, -160,213,106,161, 86,171, 11, 84,174,206, 21,174,167,188,105, 52, 26, 77,183,110,221,242, 89,179,102, 13,130,130,130, 80,182,108, - 89,104,181, 90, 40,149, 74, 71, 67, 96,213,170, 85, 88,253,105, 63,220,186,116, 6,221, 59,181,245,232, 78,173, 86,251,191, 21, - 43, 86, 20, 48,121,132, 5, 4,128,149, 51,144,201, 9, 2, 90,191,148,111, 37,252,227,199, 66, 87,119,116,225, 36, 57, 57, 57, -166,163, 71,143,250, 28, 63,126, 28,130, 32,160,108,217,178,200,203,203,131, 94,175,119,248,127,231,206,157,232,214,173, 27,190, -255,254,123, 52,108,216,208,163,223,115,115,115, 77,103,206,156,241,249,225,135, 31, 16, 24, 24,136, 82,165, 74, 57,252, 46, 30, -114,185, 28, 50,153, 12, 49, 49, 49,200,202,202,130,143,143,143,199, 56, 58,113,226,132,207, 15, 63,252,128,128,128, 0, 68, 71, - 71, 59, 44,108,162, 40,154,177,232,211, 2, 28,106, 18,241,200,156,197,141,119, 87,206,151, 94,122, 9, 21, 42, 84,128, 94,175, -135, 78,167,115,112, 23,197,233,164, 69, 90, 80, 74,247,186, 68, 97, 8, 33,100,171,211,247, 59, 19, 66,182, 58,255, 22,246,156, -253,111,179,241,227,199,215,155, 62,125,250,180,134, 13, 27,174, 57,116,232,208,234,194,248, 10,227, 25, 63,126,124,236,244,233, -211,167, 57, 63,239,230, 59, 15, 90,176, 40,165,196,238, 57, 22, 0,170, 86,173,138,244,244,116,168, 84, 42,212,175, 95, 31,169, -169,169,240,241,241,129, 66,161, 0,165, 20,195,135, 15,151,141, 25, 51, 38,148, 97, 24,112, 28,231, 40,240, 11,233, 75, 23, 24, -134, 65,163, 70,141,112,206,222,243,211,190,115,103, 68, 71, 71, 67, 28,196,161, 86,171, 49,124,248,112,242,222,123,239,177,162, -245,130, 82, 10,163,209,136,136,136, 8, 77, 17, 93,111,239,108,220,184,209, 79,169, 84, 34, 39, 39,199,209, 69, 38,147,201,112, -241,226, 69,204,154, 53, 11,175,189,246, 26,238,220,185,131,200,200, 72,188,255,254,251, 62,211,167, 79,127, 7,192, 36, 79, 5, -177,143,143,143, 67, 92,105,181, 90,188,243,206, 59,108,227,198,141, 67,125,124,124,224,235,235, 11,177,187,143,231,121,148, 47, - 95,222,163, 20, 23, 4, 1,219,183,111, 7,203,178, 30, 45, 88,246,132,231, 21,231,209,163, 71, 29,226,204,185, 85, 68, 8,193, -185,115,231, 28, 98,206, 11, 78,202, 48, 12,116, 58, 29,194,195,195,161,209,104,160,213,106,201,154, 53,107, 38,148, 43, 87, 46, -226,189,247,222, 99,178,179,179,153, 70,141, 26,161, 71,143, 30,172, 32, 8,176, 90,173,136,141,141,245,104,105,219,187,119, 47, -150, 44, 89,130,183,223,126,219,173, 5, 75, 28, 4,169,215,255,227,115, 28, 74, 12, 2, 0, 43,103, 67, 94,174,209,209,133,203, -243, 60,206,236, 57, 85,233,198,169, 43,177, 91,215,124, 47, 7, 0,211,158, 31,157, 95,139,232,177,104, 93,229, 22,129,138,163, -123,210,173, 71, 61, 89, 6, 71,142, 28,137,137, 19, 39,162, 79,159, 62,216,185,115, 39, 62,250,232, 35,188,241,198, 27, 5, 44, - 88,222,192,102,179,125,245,234,171,175,190,189, 97,195,134, 42, 31,124,240, 1, 35, 90,176,180, 90,173, 56,134, 11,102,179, 25, - 70,163, 17,151, 46, 93, 18,222,124,243,205,203, 22,139,229,171,194,248, 56,162, 57,173, 85,229,253, 90, 62,154,169, 96,184,249, -185,111,147, 23,202, 26,137,166,110,214, 75,149,219,208,142, 3,202, 6,128, 82, 80, 1, 16, 40, 96, 54, 27, 48,124,248, 40,217, - 63, 25, 87,132,144,142,125,251,246,237, 50,120,240,224,114, 57, 57, 57,215, 57,142,179,137,247, 62,250,232, 35, 92,185,114,165, - 29, 33,228, 86, 97, 93,162,133,112, 70,151, 47, 95,126, 20,207,243,148, 16,114,141, 82, 26,111,191, 53, 31,128,223,222,189,249, -245, 71,116,116, 52, 0,196, 18, 66, 86, 1,200,114, 22, 99,206,230, 80,155,141,131,209,104, 46, 82, 88,137,231,148, 10,222,186, -145, 86,169, 82, 5, 93,186,116,129, 92, 46,119, 52,210,156,187,199, 92,133, 86, 81,229, 7, 0,129, 16,130,200,200, 72,116,236, -216, 17, 10,133,162, 0,167, 88,161,118,236,216, 17, 35, 39,125,140,175, 70,182,194,146, 87, 43,161,205,148,164, 34,221,153,151, -151,151,187,123,247,110,205,251,111,191,141,231, 42, 86, 68,176, 94,143,210, 97, 33,208,168,148, 80, 56,187,137,120, 54,170,211, -252,202, 78,144,201,100,168, 81,163, 6,146,146,146,112,243,230, 77,220,188,121, 19, 12,195,160, 73,147, 38, 14, 75,240,213,171, - 87, 49,105,210, 36,152,205,102,175,253, 94,177, 98, 69,180,106,213, 10, 74,165, 18, 90,173,182, 64,215,160, 24,166, 57, 57, 57, -168, 80,161, 2, 54,111,222,140,202,149, 43,123,228,172, 90,181, 42,154, 55,111, 94, 32, 60, 53, 26,141,163,222, 0,128,187, 71, -115, 29,223,136,138,138, 42, 22,231,142, 99,119,176,108,231,110,152, 45, 2,178,243,108, 5, 94,136, 8,214,227,192, 15, 31,120, -229,119,145,243,171,175,190, 66, 86, 86,150,163,238, 17,141, 37,162,113,162, 84,169, 82, 88,178,100, 73, 97,241, 35,106, 17, 82, -200,253,206, 94, 54,164,196,231,196,196,165,154, 62,125,250, 52,215,247, 61,241, 57,223,119,121,223,226, 34,202,146,138,236, 34, - 20,235, 5, 49, 19, 68, 69, 69, 65, 28,231, 33,102, 16, 71, 1,202,113,216,180,105, 19, 66, 67, 67, 29,135,159,159, 95,161, 9, - 90, 28, 39, 52, 50, 37,127,152,193,182, 72, 5,110, 1,232,148, 66, 29,227, 68,120,158,199,198,141, 27,225, 44, 96,124,125,125, -139,236, 46, 82, 42,149, 45,234,215,175,207,152,205,230, 7,196,213,244,233,211,209,183,111, 95, 84,174, 92, 25,130, 32, 32, 55, - 55, 23, 45, 91,182,148,207,159, 63,191, 69,113, 4,150, 86,155, 63,158,223, 98,177, 96,207,158, 61, 8, 8, 8, 64, 80, 80, 16, - 2, 3, 3,225,235,235, 43,206,132,164,158, 68, 6,165, 20,221,187,119,119, 84,124,206, 86, 43, 87,177,117,232,208, 33,175,186, -222, 40,165,120,225,133, 23,160,211,233,224,227,227, 3, 31, 31, 31,108,223,190,221,241,204,243,207, 63, 15, 65, 16, 16, 26, 26, -138,195,135, 15, 23,217,205, 73, 41,165, 10,133,194,241,188, 92, 46, 39, 43, 87,174, 28, 31, 19, 19, 19, 49,122,244,104, 70, 38, -147,225,228,201,147, 56,127,254, 60,202,150, 45,235,245,152,172,204,204,204,251,227,199,143,231,199,143, 31, 15, 0,136,141,141, - 69,102,102,102,178,120, 63, 59, 59, 59,173, 93,187,118, 5,198,101,164,166,166,166,253,235, 5,150, 32,128,179,114,200, 51,153, -144,155,147,231,176, 6, 37, 39, 36,249,127,240,222,187,242, 89,195, 95, 7, 0,188, 55,119, 33,114,150,254, 93,128,253,248,126, -223,208,151,102,173, 25, 7,160,155,135, 74, 7,102,179, 25,101,202,148,193,177, 99,199,144,147,147,131, 54,109,218, 20,176,144, -138, 97,234,201, 20, 79, 41,181, 16, 66, 26,119,238,220,249,207, 57,115,230,148,175, 86,173, 26, 49, 24, 12,200,203,203,131,243, -239,153, 51,103,232,234,213,171,111,228,229,229, 53,162,148, 90, 10,227,219,126,239,155,107,237,163,222,216,240,251, 73, 89,231, -208, 10,151,245,247, 50,202,115,105,247, 84,134,108,227, 37, 19, 79,207,131,242, 0, 15, 1,148, 19,192,219,187,183,254, 65,113, - 85,163,124,249,242,111,205,159, 63, 63,204,100, 50,221,179,217,108, 6,215,188,187,120,241, 98,116,236,216,241, 45, 66, 72,188, -167, 1,233,246,119,148,254,254,254, 31,237,217,179, 39,246,254,253,251,137,141, 27, 55, 30, 71, 8, 25, 77, 41,181, 84,169, 82, -197,239,248,241,227, 77,228,114,185, 50, 51, 51,243,172, 94,175,135,197, 98,169, 97,179,217, 44,245,234,213, 59,224, 54,126, 4, -192,102,179,193,104, 52, 35, 43, 43, 7, 22,171,205, 94,102, 10,224,121,206,254, 43,128,179,151,163, 74, 5,235, 91,183,102, 68, - 46,165, 20, 12, 33,153,199,207,220, 47, 85, 88,185, 84, 88, 87,150, 55,214, 43, 55,224,197, 89, 99, 65, 65, 65,144,203,229,248, -254,251,239,113,250,224,118, 40,101, 20, 60,103, 3,103,179,130,183, 89, 32,151,201,240,251,201,155,104, 91,213,215,155, 56,162, -193,193,193,232,212,176, 33, 58, 55,108,152, 63, 93,141,101,225,163, 82, 65,171, 80,231, 91,174, 0, 80,158, 1,188, 75, 74,130, -232,206,176,176, 48, 28, 63,126, 28, 35, 71,142,196,140, 25, 51,160,209,104, 28,179,153, 47, 94,188,136,117,235,214,161,109,219, -182,197,246,187,104,177, 27, 55,110, 28, 18, 18, 18, 48,119,238, 92,212,173, 91, 23,114,185, 28,153,153,153,104,212,168, 17,146, -146,146,188,226,116,238,198, 83, 42,149, 5,172, 77,162,240, 43,110, 28, 57,115,190,222, 61, 2, 91, 14,174, 6, 1,193,145, 31, -222, 45, 80, 23, 45, 94,187,191,216,156,159,124,242, 73, 1,119,122, 99,189, 42, 70,126,221,234,141,200,114,122,238,132,104, 92, - 29, 55,110,220,135,132,144,173,227,198,141,251, 48, 46, 46,238,156, 55,124,133,220,255,197,254,219,201,233,218, 9,143, 2,139, - 82, 74,149, 74, 37, 4, 65, 40, 32,170, 92, 7,212,138, 38, 63,103,147,162, 39, 49, 32, 8,130, 35, 49,184, 54, 87,101, 50, 25, - 14, 31, 62,140,195,135, 15, 23,184,190,108,217,178, 34, 43,112,142,227,170,249,250,250, 22,176, 94, 41, 20, 10,140, 27, 55, 14, -253,251,247,119,136, 43,133, 66,129,229,203,151,163, 94,189,122,176, 88, 44,213, 60,140, 71,201, 11, 15, 15,103,196, 2, 72,167, -211,145,145, 35, 71,202, 56,142,115,132,137,120,136, 99,211, 60, 37, 22,113, 86,202,142, 29, 59,188,178, 96,121, 59, 6,137, 82, -138, 83,167, 78, 21, 16,109,226, 44, 24, 0, 56,117,234,148, 99,124,150, 55,156, 50,153, 12, 60,207, 67,163,209, 16,133, 66, 65, - 20, 10, 69,180, 40,174,100, 50,153, 35,190,157,199,228,121,242,251,189,123,247, 90, 22,117, 63, 57, 57,249,153, 93,142,193,106, -179,193,152,103, 65, 78,174, 17,159,197,125,151,127,241, 51, 28, 5,112,180,241,224,145, 24,218,190,109, 43,151,126,126,111, 10, - 24, 71,165,184,113,227, 70,200,229,114,108,222,188, 25,122,189, 30, 93,187,118,133, 94,175,199, 7, 31,124,128, 62,125,250,120, -109,193,178,167,165, 44, 66, 72,227,119,222,121,231,207,207, 63,255,188,116,169, 82,165, 96,177, 88, 96,181, 90, 97,177, 88,112, -237,218, 53,172, 94,189,250,110, 94, 94, 94, 99, 74,105,150, 39,190,237,247,190,185,182,105,223,123, 9,109,250,244, 48, 94, 76, -218,134,196,196, 52,112,220, 61, 8, 60, 7, 43,151, 63, 35,153,231, 56,112, 28, 15,133, 66,166,255,124,234,187, 59, 5, 80, 48, - 12,177,244,236,217,179,195, 19, 18, 87, 1, 0, 6, 95,191,126, 61, 39, 40, 40,232,140,253,178, 62, 33, 33,129, 0, 64,100,100, - 36, 5,224, 60,192,125,176,125, 60,150,167, 77,155, 7,255,252,243,207,141,252,253,253, 45, 12,195,100,124,244,209, 71,165, 62, -253,244,211,193, 0,230, 93,186,116,233,187, 87, 94,121,197,207,185, 5,159,150,150,118, 98,240,224,193,184,116,233,210,119,238, - 77, 4,118, 11,150,201,132,148,180, 12, 12, 26, 60,193, 97, 58, 0,104, 1, 81, 65, 65, 49,100, 4,212, 0,144,154,116, 13,175, - 15, 26,169,242,212, 16,112, 87, 1, 22, 99, 12,142,179,101,200,145, 70,125,124,124,242,187,217, 54,175,198, 47, 95, 12, 6,120, - 43,168,205, 8, 88,243, 0,107, 46, 4, 75, 30,136, 66, 3,216,140,222,196, 19,245,241,241,129,143, 70,131, 80,127,255,252, 69, - 28,101, 50,200,229, 44, 4, 27, 64,120,226, 16,162, 2,239, 85, 90,167,193,193,193, 16, 4, 1, 26,141, 6,183,110,221,194,208, -161, 67, 97,181, 90,209,189,123,119, 88, 44, 22,152, 76, 38, 24,141, 70,196,196,196, 32, 47, 47,207, 43,191,139,229,188,216,219, -243,238,187,239,162, 94,189,122,152, 52,105, 18,198,142, 29,139,152,152, 24, 12, 25, 50, 4,171, 87,175, 70,108,108,108,145,188, -206,225, 41,114,138,241,226,218,149, 7,160,216,113,228,202,153, 63,238, 31, 15,196,251,168, 87, 91, 23,155, 51, 46, 46, 14, 41, - 41, 41, 15, 88,174,196,255, 81, 81, 81, 88,188,120,241, 67,229, 89, 39,107, 81,152,155,219,157,220, 88,158,234, 35,127,108,148, - 57, 46, 46,238, 92, 92, 92, 92,103, 66,200,214,184,184,184,206, 69, 88,176, 58,121,176,112,117, 66,254,152,171, 34,193,186,244, -125,182,112,182,140,136, 21,168, 88,145, 59, 23,238, 90,173, 22,155, 54,109,130, 56,163,195,249,153,162, 4,214,175, 33,118, 19, -177,221,114,229,124,222,165, 75, 23,148, 43, 87,174,128,245, 74,163,209, 20,153,104, 4, 65,192,237,219,183,113,246,236, 89, 52, -108,216, 16, 89, 89, 89,144, 51, 12,222, 59,115, 6,213, 95,125, 21, 22,187, 69, 70,169, 84,226,237,183,223,246,106,160,250,205, -155, 55, 3,156,207,131,131,131,227,155, 54,109, 26,117,236,216, 49,199,192,119,123,247,153, 67,104,120, 35, 94, 40,165,120,249, -229,151, 11, 88,173,156,197,149,243,177,109,219, 54,175,186, 8, 41,165,104,218,180,169,195,122,229,235,235,139,159,126,250,201, - 17, 87,205,154, 53,203, 31,175, 16, 22,230, 21,167,232, 15,251,192,118,152, 76, 38, 33, 39, 39,135, 57,113,226, 4,148, 74,165, -195, 98,167,209,104,160, 86,171,161, 82,169, 30,106, 70,208,127, 1,148, 10,176,216,108, 48, 26,141,200,205,205, 95, 33,228,218, -217,141, 5, 5,152,249,225, 39,167,137, 86,170,156,156, 28,252,254,251,239,248,241,199, 31, 81,183,110,221, 7, 6,185,123, 99, -193,114, 74, 79, 41,132,144, 38, 99,198,140, 57, 50,101,202,148,200,192,192, 64, 88,173, 86,220,185,115, 7,223,126,251,109, 66, - 94, 94, 94, 19, 74,105,138,247,129, 0,216,108, 28, 76,121,102,100,101,231,224,211,169,203, 11, 77,122, 0,144,158,124, 9, 93, -186,246, 82, 62,185, 56,162, 25, 0,134,186, 84,230,171,240,247,154, 85,217,148,210,254,197, 20,109, 45,103,204,152,209,167,110, -221,186,190, 89, 89, 89, 23, 0,224,205, 55,223,196,201,147, 39, 91, 19, 66,206, 81, 74,119, 19, 66, 98,235,212,169,211,250,205, - 55,223, 4, 0,124,253,245,215,216,186,117,235,239,148,210,221,133,165, 37,177,139, 48, 55,215, 8,189,127, 4,238,221,220,235, -209, 45, 10,153, 9, 84, 16, 60, 54,252,220, 89,173,156,203,167, 98,164, 31, 42,142,249, 19, 43,234, 14, 47,191,138, 14, 67,167, - 67, 43, 7,166,189,222, 24, 49,254, 0, 52,129, 80, 52,251, 0,196,191, 76,254,139, 67,127,246,138,127,236,146, 37, 56,121, 37, -127,133,151,232,144, 16,140,233,211, 7,212, 6, 28, 58,127, 30,107,119,239, 70,159,150, 45,161, 85,171,189,110,168,136,141,239, -107,215,174,225,208,161, 67,168, 90,181, 42,174, 94,189, 90, 96, 57, 9, 74,169, 87,254,167,148, 82,113,114,146, 74,165,130, 92, - 46, 71, 98, 98, 34, 58,119,238,236,104,224,239,221,187, 23, 99,198,140,193,192,129, 3,209,162, 69, 11,183,227, 98, 93, 57, 67, - 66, 66, 28,134, 3,215, 9, 8,206,221,182,197,137, 35,119,156, 34, 30, 54,222,157, 57,167, 78,157,234,118,162,132, 55,156,206, - 90,164, 8,156,112,177, 30, 65, 28, 15, 37, 10, 34,215,115, 0, 1,226,181,113,227,198,125,232,237,123,206,231,162, 5,204,219, -174, 74, 86,236,243,116, 87,201,138,230, 98,119,208,233,116, 24, 54,108, 24, 38, 78,156,136,224,224, 96,143, 99,103, 68,229, 90, - 20,126,254,249,193, 76,182,121,243,102, 79, 93,132, 23,253,252,252,234,181,106,213, 10, 89, 89, 89,184,123,247, 46,116, 58, 29, -170,127,241, 5,206, 12, 29,138,231,150, 44, 1,211,170,149, 99,145,212, 51,103,206, 64,163,209, 92, 44,174,197,192,215,215, 23, - 1, 1, 1,142, 62,117, 81,104, 57, 89,176,168, 23,137, 16,191,254,250,171,219, 86,226,195,140,193, 18, 51,255,145, 35, 71, 10, -140,191,114, 22, 60, 71,142, 28,113, 88,176,196,215,188,233,218,210,104, 52, 84,228,211,106,181, 8, 12, 12,132, 74,165,130, 70, -163, 41, 32,174,188,177,222,121, 90, 72, 84,163,209, 28,211,233,116,254,226,125,185, 92,142,156,156,156,204,180,180,180,231,255, -213, 93,132,160,224,172, 28,140, 70, 19,114,115, 74,126, 45, 73,113,194,201,166, 77,155,240,194, 11, 47, 60, 32,174,196,176,126, - 8,209, 17, 79, 8,105, 49,111,222,188,163,179,103,207, 14,200,205,205,197,119,223,125,151,149,155,155,219,194,105, 28,145,119, - 92, 2,133,205,106, 69,158,201, 12, 67,110,126, 24, 92, 63,183,241,153, 22,214, 85,170, 84,121,125,200,144, 33, 33, 57, 57, 57, -215, 5,225,111,123,202,236,217,179,113,253,250,245,215, 1,236, 6,176,100,234,212,169, 21,107,214,172, 89, 10, 0,166, 78,157, -122, 23,192,146,162,202, 14,171,189,139, 48, 55, 55,223,234, 97, 50,164,150, 76, 58,181,139,140,194,198, 92, 61, 76, 87,142, 56, -115, 89, 38,147, 97,248,240,225, 56,115,250, 52, 90, 71,102, 35, 38,220, 23, 52,251, 30, 20,173, 62,193,169, 20, 13,102,205,249, -181,216,220,235,156, 38,241,204, 90,183,206,237,189,235,221,186, 21,203,239,151, 47, 95,134, 70,163, 1,207,243, 15,212, 55,197, -245,191,179,112,153, 51,103, 14,198,140, 25,131,229,203,151,227,204,153, 51,120,238,185,231,208,166, 77, 27, 36, 39, 39,227,244, -233,211, 48,155,205, 94,187,211,121, 92,220,229, 27,231,177,235,208,111,184, 29,127, 19, 9,137,119, 31, 58,222,157, 57, 93, 5, -214,166, 93,127,225,229,182,117, 30,138,243,147, 79, 62, 65,114,114,114, 1,203,149,243,196,176,194, 44, 88,174, 90,196, 5,169, - 46, 99,157,196,115,139,139,216,113, 61,119,125, 30, 0,146, 1,200, 60,188,231,122,158, 26, 23, 23,183, 71,180,124,217,121,101, -133,141,191,114,219, 69, 40,138, 33, 49,131,184, 90,166,196,255, 58,157, 14,190,190,190,240,245,245,133, 94,175,247,104, 25, 18, - 5, 86,211, 27, 57, 5,198,114,137,150, 44, 0, 24, 56,112,224, 3, 22, 44,231, 5, 57,221,193,108, 54,239,221,187,119,111,237, - 46, 93,186,200, 46, 94,188, 8,153, 76, 6, 65, 16, 96,105,216, 16,207, 45, 89,130,179,239,190,139,230,183,110,193,100,181, 66, -173, 86, 99,251,246,237,214,188,188,188,189,197, 45, 47,156, 5,150, 78,167,131,159,159,159, 67, 96,120,163,202,197, 76, 91,212, -248, 6,241,112, 30,228,239, 77,102, 22, 43, 82,231,113, 55,132, 16, 24,141, 70,199, 96, 77,111,172,140,206, 93,132,206, 25,143, - 97, 24,248,251,251, 59, 10, 13,209,130,229,173,245,206,211, 66,162, 90,173, 86,127,233,210,165, 10,226, 50, 18,169,169,169,104, -213,170,213,149,127,125, 77, 43, 0, 86,142, 71,174,209,132, 92, 99, 94, 73,118,107, 1, 0,190,255,254,123, 92,187,118, 13, 86, -171, 21,113,113,113, 15, 8,171,226, 12,114,119,147,174,174,213,169, 83, 71,120,241,197, 23,113,228,200, 17,168, 84, 42, 27,165, -180,216,235, 87, 9, 84,128,149,227, 96, 50, 26,145,107, 48,252, 39, 44,151,151, 46, 93,202,242,245,245, 61, 12,192,231,202,149, - 43, 50,157, 78,135,242,229,203,195,100, 50,101, 1,200,178,135,175,133, 16, 50,253,237,183,223,158, 11, 0, 54,155,109,122, 81, - 99,218, 40,165,176,113,118,177, 94,130,225, 40,166,165,194,202,164,135, 89, 46,197,185, 66, 21, 4, 1,111,189,249, 38,218, 68, -102,227,165,186, 33, 48,220,191, 2,173, 95, 8,136,127, 89,204,154,243, 43,206,221,240,122,168, 37, 5,128,246,205,186,161, 86, -213, 7,151,247,106,210, 58,191, 45,118,224,247, 99, 72, 74, 77, 40,182,223, 13, 6, 67,161,150, 42,111, 45, 88, 34,167,184, 92, -138, 92, 46, 71,237,218,181, 81,169, 82, 37,236,217,179, 7,117,234,212,193,213,171, 87,113,245,234, 85,220,186,117, 11,103,206, -156, 65, 70, 70, 70,177,227,232,167, 29,107,145,145,147, 14,165, 66,137,244,204, 84,220,190,119, 19, 97, 65,225,143, 28,239,142, - 6, 66,167, 79, 1, 0,145, 33,126,197, 18, 88,206,156,159,127,254,249, 3,162,189, 4,150,222, 57,230,225,188,184,239, 63,118, -176,133, 88,133,140,129,129,129, 26,231,254, 83,134, 97,224,231,231, 71,102,204,152, 33, 99, 24, 6,190,190,190,240,243,243,131, -104, 22,244, 4,165, 82,105, 44, 91,182,172, 70, 76,128, 98, 6,212,235,245,178, 25, 51,102,144,101,203,150, 21,106,213,242, 48, - 6,107,118,255,254,253,223,136,143,143, 15, 8, 13, 13,197,253,251,247,161, 84, 42,243, 51, 69,203,150,104,122,227, 6,172,249, - 99,138,112,249,242,101,124,245,213, 87, 6,179,217, 60,187,184, 1,229,227,227,131,160,160, 32, 71,215,160,104,193,113, 18,139, - 94, 13,173, 44,202, 20, 47,182,248, 30,166,171,200, 85,100, 13, 30, 60,184,128,216,242, 22, 10,133,130, 19, 87,106,103, 24, 6, - 86,171, 21,117,234,212, 65,114,114,178, 35,179, 56, 91,238,188, 17, 88,158, 22, 18,101, 89, 22, 22,139, 5,205,154, 53, 3, 33, - 4, 11, 23, 46,124, 54,186, 29, 5,129,248,248, 4, 33, 50,178, 50, 66, 66, 77, 16,132,146,219,253,133,227, 56, 12, 25, 50,164, -128,197, 74,156,169, 40,118,241, 83, 74, 97,179,217, 30,122,209, 86, 49, 95, 63,202,250,111, 20,112,116,109, 25, 12,166,127, 93, - 20, 70, 71, 71,235,237, 93,134,174,112, 63,219, 15,127, 47,201, 64, 8,153, 18, 31, 31, 95,179, 74,149, 42,104,222,188, 57,182, -109,219,182, 25,192,143, 46,150,194, 47,197,255, 69,199,133, 61, 28, 77,102, 24, 12, 37,111, 13, 45,170,161,247, 40,194,109,226, -196,143,209, 38, 34, 19,221,159,243,195,138,173, 7,209,175,182, 6,176,168,138,205, 39,186, 37, 40,170, 28,202,213,104,240,192, -125,181, 95,126,215, 92,185, 26, 13, 32,187,123,181,216,126,119,118,179,155,165, 3, 30, 41, 60, 7, 13, 26,132, 15, 62,248, 0, -237,218,181,195,213,171, 87,177,111,223, 62, 92,189,122, 21, 35, 71,142, 68,108,108, 44,158,123,238,185, 98,113,110,217,181, 1, -217,185, 89, 96, 8,131,244,172, 52,152,204, 70,140, 29, 50,241,145,227, 93,196,205, 93,113, 0,128,141, 59, 79, 62, 52,231,135, - 31,126,136,196,196,196, 2,150,171, 71, 25,119,245,111,133, 91,129,149,150,150,230,182,191, 47, 36, 36, 36,169,109,219,182,161, -247,239,223,135,143,143,143, 71,113, 69, 8,105, 35,174,149,145,152,152,232,150,211,215,215,215,218,182,109, 91,121, 68, 68, 68, -129,217,131, 58,157,238,129,204,229,202,105, 47,152,114, 8, 33,111, 53,110,220,120,197,182,109,219,180,149, 42, 85, 66,118,118, - 54, 40,165, 88,190,124, 57,134, 15, 31, 14,181, 90,141,203,151, 47,163,107,215,174,121,121,121,121,111, 57,175,129,229,142,179, -176, 22,153,184,138,189, 27,113, 85,164,223,157, 51,233,188,121,243, 48,109,218, 52,124,248,225,135, 69, 70,204,210,165, 75, 1, -151,238, 60,119,156,148, 82,204,154, 53,171,196, 56,211,210,210,150,187, 88,159, 22,190,244,210, 75,236,221,187,119, 11,136, 42, -231,195, 77,129, 84,128,211,211, 66,162, 50,153, 12, 97, 97, 97,152, 50,101, 10,130,130,130, 16, 30, 30,254,128,229,197, 83, 28, - 61,100, 37,240, 88, 57,121, 42,156,248,124,250,199, 77,190, 91,181, 69,174, 82, 2,135,247,109, 68,118, 70, 98, 65, 11,172,245, -239, 41,209,202, 58,173, 97, 57,249,187, 87,238, 52,155,205,152, 57,115, 38, 62,253,244, 83,124,250,233,167,222,196,251, 35,249, -221, 27,145,229,150, 83,160, 68,171, 11,128, 90, 23,137,234,177, 1, 16,138,185, 86,231, 63, 20,239, 66, 66, 66, 2, 34, 35, 35, -113,245,234,213, 26, 50,153,172,128, 34,224,121,222,172, 86,171, 15,120,193,121,118,211,166, 77, 53, 39, 76,152,128,105,211,166, - 1,192,128,189,123,247,190, 66, 8, 49,121, 18,105,174,156, 2,165, 68,163,245,135, 90, 23,129,234, 53,252, 33, 8, 92,137,248, - 93,172,252, 92,173, 87,197, 92, 72,218,109, 89, 7, 0,127,254,190, 25, 19,223,173,129,229,191, 28,197,252, 99, 64, 45,255,100, - 84, 15, 73,129,144,114, 17,239,247,171,135, 89, 63, 28, 7, 0,236,219,235, 49,142,138, 92,215,216,100,180, 62,146,223,157, 45, - 85,206,223,241, 52, 6,203, 29,167,216, 56,204,201,201, 65,102,102, 38, 86,172, 88,129,215, 95,127, 29,201,201,201,184,117,235, - 22,174, 92,185,130, 53,107,214, 56,102,167, 23, 55,142,222,123,243, 35, 76,152, 53, 26, 20, 20, 85, 42, 84,199,184,161,159,162, -126,173,134,143, 28,239,174,240,100,189, 42,138,115,222,188,121, 15,149,150,254, 19, 2,171,168, 86, 4,195, 48, 8, 14, 14,118, - 36, 14,231,132,247, 48, 45, 93,153, 76, 6,142,227, 28, 99,123,196, 3, 0,186,116,233,130,159,127,254,217,155,153, 17,219, 8, - 33,255,171, 86,173,218,183,159,125,246,153, 79,243,230,205,217,200,200, 72,212,175, 95, 31,151, 47, 95,198, 47,191,252, 98, 91, -180,104,145, 33, 47, 47,111, 32,165,116,231,195,148, 75,226,214, 51,206, 71,113, 90, 57, 86,171,245,238,213,171, 87, 35,102,205, -154, 37, 99, 24, 6,115,231,206,117,100, 70,113,161, 86,103,236,219,183,143, 19, 4,161,200, 46, 25,155,205,118,247,234,213,171, - 17, 95,124,241,133,140, 16,226,224,100, 24, 6,206, 27, 43, 23,135,211,157,184, 20, 39, 60,184, 59,220,185,221, 93, 28, 23,181, -144, 40,203,178,184,124,249, 50, 38, 78,156, 8, 66, 8, 54,110,124, 54,198,232,156,185,152,186,236,185,234,161, 1, 93, 58, 52, -169, 9, 66, 96,181, 60,216, 3,228,147,145,235, 16, 87, 47,125,177, 22, 63,190,215,199, 27,177,115,237,192,129, 3,129, 51,103, -206,100,101, 50, 25,230,204,153, 83, 96,177, 95,215,120,223,191,127, 63,247, 48,221,123, 98,126,182, 90,173, 48, 26, 31,206,106, - 66, 41, 61, 20, 55,117, 66,219,149,223,255, 42, 39,196,130,195,123, 55, 34, 43,211,253,212,116,165,156,197,178, 21,155, 56,133, - 92,118,247, 31,142,186,249, 61,123,246,156,176, 97,195, 6, 22,192,185, 71,224,217,252,205, 55,223,116,232,213,171, 87, 96,197, -138, 21,241,221,119,223, 41,252,253,253,235, 18, 66,136, 59,145,230, 33, 28, 55, 79,159, 58,225,181, 21, 63,252,170,100,136, 21, -135,247,109, 68,150,139, 88,127,208, 26, 45,199, 55,203, 55, 89, 21, 10,249, 37, 79,229,186,179,245,170, 36, 43,196,174,253,135, -226,165,121,243, 81,190,126,123, 76,159,209, 6,223, 76,237,133,217, 47, 42, 96, 93,223, 15,181,122,174,196,234, 73, 29, 1, 0, -145,223,120,105, 29, 97, 21,184,227,198, 66,149,153,165,182,139,154,226, 89, 73, 69,191, 23, 85,134, 23,215,130,197, 48, 12,202, -149, 43,135,242,229,203,163,113,227,198,168, 83,167, 14, 90,182,108,137,211,167, 79,227,244,233,211, 24, 57,114,100,161,226,202, -155, 56,106,209,168, 45,142, 54,189,244,200,113,227, 26,239, 37, 1,111,210,210,144, 33, 67, 0,224, 63, 97,205, 98, 31, 38,240, -196, 4,249,168, 91,199,136,156, 22,139,197,209,245,230,188,174,146, 56,232,221,203, 25,122, 59, 9, 33,177, 31,127,252,241,187, -106,181,186,101, 94, 94, 94,101,187, 5,230,178,217,108,222,109, 52, 26,231, 80, 74, 51, 31,197,173,206,203, 50,184,115, 66, 81, -239,102,100,100,180,111,223,190,253, 78,150,101,203,185,110,196,235, 46, 3, 11,130,112, 43, 41, 41,169,200,169,234,105,105,105, -237,219,181,107,231,150,211, 93,193,224, 13,167,187,248, 17, 4,161, 80,113,229, 77, 1,228,105, 33, 81,150,101,161,211,233,240, -211, 79, 63, 33, 56, 56,248,153,202, 96,167,206, 39,207, 44,234,126,139, 96,213, 94, 0, 33, 47,125,177,246,206,158, 84, 75,153, - 22,193,202,219, 63,190,255, 74,233,162,222, 73, 77, 77,109,247,250,235,175,255,198,178,108, 57,215,240,119, 23, 23, 28,199,221, - 76, 76, 76, 44,246,178, 7,148, 82, 92,186,116, 73, 24, 52,104, 80,106, 74, 74, 74,175,135,241,255,184,137,243,103, 79,251,108, -120,208,139,109, 27,212, 7, 3, 88, 10, 31,212, 75, 9, 64, 89,185,236,238,152, 15,231,190,249, 79,198, 25,165,244, 36, 33,100, - 74,253,250,245, 71,162,208,117,193,243,199, 82,121,224,177, 18, 66,102,119,232,208,225,253, 17, 35, 70,248,183,107,215,206, 26, - 21, 21,117,194,217, 58,239,125, 58, 74,122,251,185,106, 33,209, 47,182,121,161, 61, 8,161, 22,139,217, 67,195, 8, 20,148, 82, -133, 66,126,233,216,169,132, 90,158,172,243,246, 29, 51, 74,188,107,126,216,176, 97, 24, 54,108,152, 35, 61, 45, 92,216, 20, 27, -206, 30, 64,207, 90,241, 48,127,213, 4, 68, 95,218,235,134, 30, 0,124,244,241,160,146,180,100, 22,152,124, 85, 82, 99,176,100, - 50, 25, 82, 83, 83,113,249,242,101, 36, 37, 37, 33, 47, 47, 15, 23, 46, 92,128,213,106, 69, 70, 70, 6,106,212,168,241,208,238, - 44,169, 56,250, 39, 57,255, 75,221,132,197, 18, 88, 28,199,197,123,218,245,220,102,179, 21,107,150,145, 92, 46, 55, 85,170, 84, -137,184,155,109, 32,254,215,233,116, 70, 47, 11,198, 76, 0, 19, 1, 76,180,239, 55,133,244,244,244, 71, 86,129, 60,207, 39,148, - 41, 83, 70, 86,152,112,177,135, 77,146, 7,183, 25, 0, 52, 44,225,138,160,196, 57,221,196,143,161,106,213,170,142,177, 92,174, -107,154,216, 55, 65, 45,114,212,173,167,133, 68, 13, 6,195,253,246,237,219,243,206,247,157, 23, 34,125,166, 65,232,237,142,175, -188, 81,102, 79,170,165, 12, 0,136, 34, 11,148,222, 46, 34,222,141, 0,154, 63,110,167,221,184,113,195,242,194, 11, 47,124,159, -147,147, 51,148, 82,250,208,163,244, 63,252,100,225,135,255,182,104,161,148,158, 4,240, 90, 9,240,156, 37,132, 12,158, 57,115, -102,175,153, 51,103, 86, 0, 16, 12, 64,237,173, 72, 43, 32,178, 46,164,148,248,218, 96, 28,199,197,151, 47, 95,190, 88,150, 26, - 79,101,188,205,102, 43,178,158, 56, 7, 63,124,120, 4,200,223,198, 45,205, 43, 78,147,201,148,222,176, 97, 67,121, 49,253,150, -236,173,223, 35, 34, 34, 16, 25, 25,233,248, 21,225,122,221,147, 59, 57,142,139,143,142,142, 70,112,112,112,161, 43,180,187,142, -185,242,134,179,164,227,168, 40,206,200,200,149, 37,206, 89, 82,122,225,153, 22, 88,226, 30,131, 37,137,164,164,164,199,178, 55, - 10, 45, 9,243,218,223,150,162,250,248,143, 34, 45, 45, 45,232, 81, 57, 60, 45, 36,154,148,148,212,242,191, 26,190,123, 82, 44, - 3, 30,184,102, 23, 91,255, 52, 12, 6, 67,105, 74,233, 67,141,204,239,217,179, 39, 15, 9,206,130,120,249,211,232,182,212,212, -212, 18, 47,211, 31, 71, 61,145,158,158, 94,243,191,234,247,199,225,206,127, 11,231,191, 29,140, 20, 4, 18, 36, 72, 40, 68, 24, - 72, 34, 73,130, 4, 9, 18, 30, 18, 4, 64,155, 66, 10, 87,175,103,238, 16, 66,218, 60, 68,225,189, 75,226,148, 56, 37, 78,137, - 83,226,148, 56, 37,206,255, 22,167, 39,238,146,158, 57,252, 79,182, 82, 31,219, 1,160,141,196, 41,113, 74,156, 18,167,196, 41, -113, 74,156, 18,231,127,237,144,186, 8, 37, 72,144, 32, 65,130, 4, 9, 18, 74, 24,146,192,146, 32, 65,130, 4, 9, 18, 36, 72, -144, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 36,176, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, - 72,144, 32,225,225, 65, 74,112, 61, 78, 9, 18, 36, 72,144, 32, 65,130, 4, 9,162,192, 34,132, 56, 84, 22,165,148, 72,193, 34, - 65,130, 4, 9, 18, 36, 72,120,162,130,228, 25,211, 34, 14,129, 37, 9, 43, 9, 18, 36, 72,144, 32, 65,194, 63, 41,176,158, 37, - 45, 82,192,130, 37,137, 44, 9, 18, 36, 72,144, 32, 65,194, 63, 37,176,158, 37, 45, 34, 89,176, 36, 72,144, 32, 65,130, 4, 9, - 79,133,192,122,102, 45, 88,207,146,114,148, 32, 65,130, 4, 9, 18, 36,252,187, 4,214,179,164, 69,164, 89,132, 18, 36, 72,144, - 32, 65,130, 4, 9,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,120,186,241, 88, 23, 26, 37,132,180,145, 56, 37, 78,137, 83,226, -148, 56, 37, 78,137, 83,226,148, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 4, 73, 96, 73,144, 32, 65,130, 4, 9, 18, 36, 72, - 2, 75,130, 4, 9, 18, 36, 72,144, 32, 65, 18, 88, 18, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, - 72,144,240, 15,129, 0,112, 59, 19,128, 82,186,203,107,146,135,152, 77,224,137, 95,226,148, 56, 37, 78,137, 83,226,148, 56, 37, -206,103,143,211, 19,119,113,244,199, 83, 13, 74,233, 99, 59, 0,180,145, 56, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,252, -175, 29, 82, 23,161, 4, 79, 45, 12,150, 16,194, 62,236,253, 39,197, 41, 65,130, 4, 9, 18, 36, 60, 77, 96, 11,169,224, 42, 2, -248, 16,128,159,211,229, 99,148,210, 56,151,231,126, 0,160,117,186,100, 0, 48,137, 82,122,213,139,111, 43,236,252, 42,251, 33, - 0, 48, 1, 48, 3,200, 1, 96,147,162,231, 31, 23, 87, 13, 1,116,182,255,223, 74, 41, 61, 92,156,251, 79,138,243, 73, 33, 50, - 50, 82, 19, 16, 16,208,238,228,201,147,202, 11, 23, 46, 96,255,254,253,116,217,178,101,214,140,140,140, 29, 9, 9, 9, 70, 41, -197, 60, 19,105,190, 61,128,113,246,211,233,148,210,237,143,200, 71,180, 90,237, 72,157, 78,215, 81,165, 82, 69,114, 28, 71,242, -242,242, 18, 12, 6,195, 78,142,227,190,160,148, 10, 15,193, 89, 63, 56, 56,120,112,108,108,108,165, 27, 55,110,220,189,115,231, -206, 42, 0,219, 1,180, 47, 93,186,116,255,152,152,152, 82,231,206,157,187,146,154,154,186,132, 82,250,231, 63,229, 78, 9, 18, - 36,129,229, 30, 19, 41,165,253, 92, 50,224, 3, 15,181,106,213,170,235,142, 29, 59,180,130, 32, 64, 60, 52, 26, 13, 7, 96,128, -135,239, 6, 29, 58,116,168,204,208,161, 67, 95, 74, 72, 72,168,151,147,147,243, 60, 0,104,181,218,163,161,161,161,127,206,155, - 55,111, 77,187,118,237,226,237, 66,171, 88,150, 17,185, 92,254,122, 64, 64, 64, 71,142,227,234, 80, 74, 33,151,203, 79,102,100, -100,108,183,217,108,223, 80, 74,109, 15, 81,152, 41, 89,150, 29,166, 82,169,218,115, 28, 87, 19, 0, 88,150, 61, 99, 54,155,183, -115, 28,247, 37,165,212,242, 16,156,106,165, 82, 57, 76,175,215,183,181, 88, 44, 53, 1, 64,169, 84,158,201,206,206,222,105,177, - 88,190,164,148,154,158,130,138,134, 5,208,153, 82, 42, 7, 0,153, 76,214,173, 97,195,134,101, 8, 33,130,184,227, 57,195, 48, -181,121,158,103,236,207,119, 38,132,252, 73, 41,229,138,195,249,194, 11, 47,148, 98, 89,150, 82, 74, 9,165,148, 97, 24,166, 86, -113, 56, 75, 10, 33, 33, 33,211, 4, 65,136, 44,234, 25, 63, 63,191,122, 39, 79,158,172,178,110,221, 58,254,171,175,190,202, 28, - 56,112,160,207,208,161, 67,217,133, 11, 23,126, 9, 96,148,235,243,193,193,193,179, 25,134, 9,246,230,251,130, 32,164,166,166, -166,142,150,138,164,127, 28,227, 22,237,202,105, 70, 41, 48,172,173, 47, 99, 23, 46, 15,141,168,168,168, 21,175,189,246,218, 43, - 53,107,214,100, 41,165,176,217,108, 48,155,205, 85, 14, 31, 62,220, 98,227,198,141,245, 0,244, 42,102,190,236, 60,110,220,184, -175, 39, 77,154, 20, 34,151,203,137,205,102,107,176,110,221,186, 23, 7, 15, 30,124,106,201,146, 37,207,245,238,221,219, 87,188, -254,201, 39,159,116, 32,132,188, 75, 41, 93,243,164,221, 41, 65,130,132,194, 5,150,206,158,153,147, 0, 28, 19, 45, 88,174, 15, -253,241,199, 31, 91, 88,150, 21, 45, 88,207, 27, 12,134, 48, 23,171,151, 59,148,237,223,191,127,195, 13, 27, 54, 76,235,221,187, -119,162, 86,171,173,212,163, 71,143, 28, 66,136,108,221,186,117,181,203,151, 47,175,233,210,165, 75,255, 86,173, 90,189,247,219, -111,191,237, 7,144,226,101,193, 83, 61, 48, 48,112,211,204,153, 51,203,180,111,223, 94, 17, 28, 28, 12, 74, 41, 18, 18, 18,162, -126,249,229,151, 23, 63,251,236,179,247, 8, 33,221, 41,165,231,139,211, 82,212,104, 52, 27, 62,251,236,179,136, 23, 95,124,145, - 13, 15, 15,135,201,100,194,133, 11, 23,218,108,223,190,189,217,210,165, 75, 71, 17, 66,122,122,219, 74,180,115, 62,239,231,231, -183,241,187, 15, 62, 8,107,240,250,235,108, 96, 96, 32, 40,165, 72, 73, 73,105,115, 96,229,202, 22, 67,102,206, 28, 69, 8,121, -153, 82,122,236,105, 74, 40, 74,165,146, 89,181,106,213,115, 74,165, 18, 0, 96,177, 88, 16, 27, 27,251, 72,187,157,203,229,114, -230,139, 47,190,168,195,178, 44,172, 86,171,144,147,147, 67,123,244,232,241,143,116, 91, 19, 66,162, 19, 18, 18,252, 20, 10,133, -219,251, 60,207,163, 89,179,102,229, 20, 10, 5,190,248,226, 11, 91,106,106,106,237, 5, 11, 22,156, 92,189,122,117,240,151, 95, -126,217,211,157,192, 98, 24, 38, 56, 62, 62,222, 45, 39,207,243,176, 90,173,224, 56, 14, 22,139, 5,213,170, 85,147, 74,163,167, - 3,101, 0,224,215,211, 38, 0, 8,124, 84, 50,157, 78, 87,181,111,223,190,108, 74, 74, 10,228,114, 57,172, 86, 43, 18, 19, 19, - 17, 27, 27, 43,251,254,251,239, 43, 23,151,175, 74,149, 42,131,227,226,226, 66,127,253,245, 87,235,247,223,127,111,110,211,166, -141, 98,224,192,129,250,102,205,154, 53,141,142,142,102,190,253,246, 91,243,174, 93,187,172,255,251,223,255, 84,211,166, 77, 11, -253,237,183,223, 94, 1,176,230, 73,187, 83,130, 4, 9,133, 11, 44, 17,199, 40,165,221, 0, 64,161, 80,212, 46, 85,170,212, 10, -142,227,194,237, 86,156, 68,185, 92,254,133,213,106,253,203, 94, 65,109, 22, 4,161,171, 39,203, 85,255,254,253, 27,254,246,219, -111,179, 14, 31, 62,156,149,150,150, 22,190,101,203, 22,211,123,239,189,119, 11, 0,110,220,184, 17,211,165, 75,151,168,225,195, -135,199,183,107,215,110, 94,203,150, 45, 71,236,222,189,123, 39,242,187, 30,139, 20, 87,177,177,177,135,246,237,219,231,235,239, -239, 95, 80,205,149, 45,139, 17, 35, 70, 40,186,118,237, 90,190,117,235,214, 7, 9, 33, 77, 41,165,103,189, 17, 66, 21, 43, 86, -220,245,199, 31,127,248, 4, 4, 4, 32, 51, 51, 19,137,137,137,200,203,203,131, 94,175, 71,239,222,189, 21,205,155, 52, 46, 53, -124,228,168, 93,132,144, 54,222,136, 44, 66,200,243,141,171, 87,223,181, 58, 46,206,199,118,231, 14, 52, 26, 13,114,115,115, 1, - 0,190,190,190,168, 87,174, 28,123,124,229,202,168,126, 99,199,138,156, 79, 92,100, 17, 66, 84, 0, 64, 41, 53, 19, 66,182,202, -100,178,110, 74,165,146,233,214,173, 27,118,237,218, 69, 76, 38, 19, 11, 0,106,181,154,235,214,173, 27, 52, 26, 13, 44, 22,139, - 0, 96,107, 97,150, 38,119,156,114,185,156,105,217,178,101,222,177, 99,199,210, 69, 78,173, 86,107,107,217,178,101,144, 82,169, -212,112, 28, 71,139,226,124, 76, 34, 18,215,174, 93, 43,112, 45, 39, 39, 7, 41, 41, 41, 72, 75, 75,131,217,108, 70,102,102, 38, - 4, 65, 32, 26,141, 38, 69, 16, 4, 48, 76,190,177,173, 48, 78,133, 66,129,203,151, 47, 23,184,198,113, 28, 12, 6, 3,204,102, - 51,172, 86, 43,114,114,114, 52,190,190,190, 21,171, 87,175, 30, 15, 96,115,122,122,250, 23,137,137,137,183,165,226,233, 31,193, -157,173,127,153, 74, 3,176, 0,184, 89, 2,124, 2, 0,236,223,191, 31, 73, 73, 73, 72, 77, 77, 69, 74, 74, 10,162,163,163,241, - 48,221,110,151, 46, 93,154, 87,187,118,109,114,234,212,169,159, 1,124,189,118,237,218,151,210,211,211, 23,143, 25, 51, 38,240, -243,207, 63, 79, 31, 59,118,236, 16, 0, 63,174, 93,187,246,245,154, 53,107,118, 57,115,230,204,220,127,194,157, 18, 36, 60, 6, -212, 7, 16, 98,255,159,106, 47,119,131,156,206, 79,219,243,173,248,156, 5,128,210,205,175, 8,241, 60, 5,192,159, 78,239,137, -231,143, 12,177, 43,134,138,135,187,135,194,194,194, 70,182,106,213,106,214,137, 19, 39,170,221,191,127, 63,224,254,253,251, 1, - 39, 78,156,168,214,170, 85,171, 89, 97, 97, 97, 35,197,231,236, 51, 11,224,116,238, 60,213, 82,113,232,208,161, 50,155, 54,109, -154,190,107,215,174,172,218,181,107, 91,254,248,227, 15,174, 93,187,118,201, 0, 56, 0, 92,187,118,237,146,119,239,222,205, 55, -104,208, 64,243,219,111,191,221, 61,120,240,224,236, 13, 27, 54,132, 1,144, 21,194, 9, 66,136,220,223,223,255,167,189,123,247, - 62, 32,174,156, 81,170, 84, 41,108,221,186, 85,239,239,239,191,153, 16,162, 40,194,157, 32,132,168,213,106,245,198,221,187,119, -251,248,250,250, 34, 57, 57, 25,114,185, 28,161,161,161,200,202,202, 66,226,253,251,184,125,229, 10, 24,139, 5,115,166, 78,246, -213,104, 52, 27, 8, 33, 74, 79,156,126,126,126, 27, 87, 79,155,230,147,182,107, 23, 78, 77,153, 2,171,213,234,232, 90,181, 90, -173, 56, 56,116, 40, 82,126,255, 29,223, 78,156,232,227,231,231,183,145, 16,162, 46,138,179, 36,224,204, 73, 8, 25, 10, 32, 29, - 64, 58, 33,100, 40,165,244,112,108,108,236,137, 11, 23, 46,160,105,211,166, 88,191,126,125,173, 49, 99,198, 12, 29, 51,102,204, -208,245,235,215,215,106,218,180, 41, 46, 92,184,128,216,216,216, 19,206, 99,165,188,225,220,187,119, 47, 90,181,106,149,177,126, -253,250,152,137, 19, 39, 78,155, 56,113,226,180,181,107,215,150,111,213,170, 85,198,220,185,115,205, 69,113, 62, 14,191, 59, 91, -150,156, 15, 65,248,187,110,137,140,140, 76,222,180,105, 19,122,247,238,205, 40,149,202,251,125,250,244, 81, 29, 56,112,128, 2, -216, 90, 28,119,154, 76, 38, 24,141, 70, 24, 12, 6,220,184,113, 67, 51,115,230,204, 38,159,126,250,105,133, 93,187,118, 69,125, -248,225,135, 67, 66, 66, 66, 78,134,135,135,151,121,210,126,151, 56, 1, 0,137, 0,172,246, 70,221,237, 71,225,108,221,186,117, -141, 10, 21, 42,132,173, 59, 23,128, 12, 69, 21, 8, 10,127, 8, 10,127,240, 65,245,113, 77,217, 1,165, 75,151, 14,243,245,245, -109, 88, 28, 78, 74,233,206,191,254,250,171, 3,165,116, 9,165,148,167,148,110, 24, 59,118,236, 32, 66,200,198,177, 99,199,190, - 77, 41,221, 96,191,190,236,244,233,211, 93, 40,165,187,255, 9,119, 74,105, 73,226,124,200, 6,126, 81, 90, 36,132, 16,178,149, - 16,178,117,252,248,241, 45, 1, 4,185,156, 55,114,126, 14,128,210,221,175,120, 56, 93, 15, 1,208,201,233,189,144,146,242, 15, -227, 20, 88,132, 82, 42,182,196,143, 17, 66,182, 0, 56,166, 80, 40,106, 63,247,220,115,221,182,109,219,230, 27, 18,242,247,119, - 67, 66, 66,176, 97,195, 6,223,234,213,171,119, 83, 40, 20,181, 1, 28,211,235,245, 91,224,166, 43,209, 14,255,161, 67,135,190, -244,234,171,175,102,215,174, 93, 27, 0, 50,207,159, 63,175,109,208,160,129,129,227, 56,194,113, 28,105,208,160,129,225,252,249, -243, 90,155,205,150, 83,191,126,125, 93,235,214,173,111,141, 30, 61,186, 63, 0,117, 17,126,232, 59, 99,198,140,232,128,128,128, -162, 18, 2,114,114,114, 16, 22, 22,134,161, 67,135,134,203,229,242, 55,138, 52,235,177,236,176, 25, 51,102,132,250,251,251, 35, - 35, 35, 3,209,209,209,176, 88, 44,184,124,249, 50, 76,134, 92,216,114,178, 97,203,206, 68,202,245,171,240,151,179,232,223,181, -115, 24,203,178,195, 60, 88, 71,134,125, 51,118,108,152,229,214, 45,220, 88,191, 30, 60,247,160, 97,134,179, 90,113,230,235,175, - 97,138,143,199,244, 65,131,194,148, 74,229,176, 39,108,185,250,156, 82,170,161,148,106, 8, 33,243, 26, 53,106,244,189, 70,163, - 25, 26, 23, 23,215,126,199,142, 29, 47,238,219,183,175, 5,199,113,114,142,227,228,251,247,239,111,106, 50,153, 88,149, 74, 5, -150,101,169,183,156, 13, 27, 54, 92,161,209,104,134, 44, 94,188,184,253,238,221,187,251, 31, 63,126,124, 24,207,243, 74,158,231, -149,199,143, 31,127,219,104, 52,202, 41,165,124, 97,156, 79, 26,114,185, 28, 10,133, 2, 26,141, 6, 77,154, 52,185,190,108,217, - 50, 91,116,116,180,124,227,198,141, 1,145,145,145,186,133, 11, 23,102,230,228,228,204,240,150,207,106,181,194,108, 54,195,104, - 52,194,100, 50,225,143, 63,254, 40, 55,124,248,112,214,100, 50,241, 93,186,116, 73,183,217,108,230,177, 99,199,234, 3, 3, 3, -223,147, 26,172,255, 8, 56, 0,185,118,129,101,118, 78,203,132,144,154,162, 53,214, 27,100,102,102, 46,253,230,155,111,162, 25, -149, 63, 14, 88, 58, 98,141,240, 25,118,248, 45, 68,114,153,247, 17, 26, 93, 1,175,188,242, 74, 40,165,116, 97, 9, 84,116,155, - 41,165, 61, 41,165,155, 30,230,253,199,237, 78, 66, 72, 25, 31, 31,159,245,122,189,254,128,143,143,207,122, 66, 72,153, 71,245, -115,187,138,164, 77,183,106,178,248,118, 21, 8,237, 86, 77, 22,223,174, 98,241,215,106,146,240,116,194, 69,139, 56, 35,133, 82, -218,153, 82,218,121,250,244,233,211,156,158, 23,207, 53, 94,242,119,166,148,118,118, 73,163, 91, 31,135, 95, 88,103,229, 40,122, -202,121,182, 96,169, 82,165, 86,172, 88,177,194,215,245,197,251,247,239, 35, 59, 59, 27, 19, 38, 76,240,125,245,213, 87, 71,221, -189,123,247, 53, 15,223, 82, 38, 38, 38,214,233,215,175,159,218,106,181,102, 8,130,192,100,103,103,179,126,126,126,188,248,128, -159,159, 31,159,149,149, 37, 55, 24, 12, 50,158,231,205,175,190,250,170,114,208,160, 65,245,156, 45, 88, 15, 72,218,144,144,182, - 29, 59,118, 84, 22,118,223,102,179,193, 96, 48,192, 96, 48,192,106,181,162, 73,147, 38,170,101,203,150,181, 3,176,184,176,119, - 84, 42, 85,219,182,109,219,202,211,211,211,225,231,231,135,219,183,111,227,230,205,155, 48,231,230,194,154,155, 13,107,110, 14, -184,156,108,208,236, 44,164, 93,189,132, 6, 85,171, 40,126, 80,169,218, 3,152, 93, 24,167, 94,175,111,219, 96,192, 0, 86,167, -211,161, 69,191,252,249, 3,191, 85,173, 10,202,243, 16,120, 30, 60,199,161,253,229,203,176,217,108, 96, 24, 6,245,211,211, 89, -253,202,149,109, 1,204,250, 39, 18,185, 74,165, 98, 87,173, 90,213, 87,169, 84,130, 82, 74, 44, 22, 11,118,236,216,241,200,156, - 43, 87,174,236, 47,114, 90,173, 86, 90,163, 70,141, 7, 50,146,217,108,166, 79, 75,102, 87, 42,149, 80,171,213,176, 90,173, 40, - 91,182,172,177, 95,191,126,135,166, 78,157, 90,154, 97, 24,157, 66,161,216,150,150,150, 54, 45, 33, 33,225,134,183,124, 54,155, - 13, 22,139, 5, 22,139, 5, 70,163, 17,215,175, 95, 15, 47, 87,174, 28, 25, 58,116, 40,159,151,151, 23, 51,127,254,252,107, 59, -118,236,208,206,152, 49,163, 7,128, 17, 82,113,251,228, 96,183, 66,251,149, 14, 98, 13,114, 25,114, 1,248,218,197, 64, 15, 66, - 72,131,106,213,170, 5, 92,184,112, 33,131, 16,114, 4,192, 26, 74,233,253,162,248, 4, 65, 32,130, 32,224,237,231, 51, 49,180, -161, 12, 54, 91, 22,178,178,178,112,251,246,109,156, 63,127, 30, 71,143,158,127, 40,119,170,213,234, 55,124,124,124,218,169,213, -234,178, 28,199, 49,185,185,185,183,243,242,242,118, 9,130,176,148,186,118, 35,120,129,199,229, 78, 17, 58,157,110,230,135, 31, -126,216,216,207,207, 15,127,253,245, 87,204,218,181,107,103,226, 17, 7,205,171,229,204,183,179,231, 46,140,138, 10,245,199,233, -125, 63, 71, 77, 91,178,238, 91, 0,209, 82, 42,126, 38,242, 33, 45, 68, 96,253, 9,160,147,125,118,121,231, 71,224,127,164,247, - 31, 74, 96, 21,226, 33,112, 28, 23,238,108,185,162,148,226,254,253,251,184,119,239, 30, 82, 82, 82, 16, 16, 16, 0,171,213, 26, -238, 77,253,154,147,147,243,124, 80, 80, 80,158, 92, 46, 55, 27,141, 70,104,181, 90, 65, 46,151, 83,251,119,136,125, 22, 34,111, - 54,155, 9,203,178, 54, 95, 95, 95, 31,179,217, 92, 5, 69,140, 21,163,148, 62, 31, 20, 20,228,246,158,217,108, 70,110,110, 46, - 12, 6, 3,114,115,115, 97, 54,155, 17, 22, 22, 6,142,227,234, 20,217,132,229,184,154, 33, 33, 33, 72, 72, 72,128, 70,163, 65, -124,124, 60, 44,185, 57,176,230,228,128, 51,100,131,207,202,130,144,157, 13,193,144, 13,155, 37, 15, 81,149,170, 66,156, 97, 88, - 24, 44, 22, 75,205,160,160, 32, 24, 12,127, 15, 39,163,118, 97,197,113, 28, 56,251,160,103,177,219, 48, 56, 56, 24,226, 12,195, - 39,212,106, 48, 19, 66,198, 48, 12, 51, 79,165, 82,177, 67,134, 12,193,253,251,247, 11,164,137, 33, 67,134, 56,198, 92, 53,107, -214,108,191, 90,173,230, 82, 82, 82, 96, 54,155,229,222,112,150, 45, 91,246,246,132, 9, 19,142, 89, 44,150,232,200,200, 72,127, -179,217,108,172, 92,185,114,164, 70,163, 9,179, 88, 44,124,189,122,245,150,106, 52, 26, 91,110,110, 46,229, 56,142, 60, 37,153, - 29,132,144,252, 56,226, 56, 4, 7, 7, 27, 82, 83, 83,143,102,100,100,244,125, 24, 62,155,205, 38,206,208,130,209,104, 4,165, - 20,127,253,245, 23,212,106,181,156,231,249,115, 28,199,105,229,114, 57, 24,251,224, 46, 9, 79, 44,158, 91, 84,241, 87,206,142, -107, 16,234,255, 92, 23,157, 65,171,148, 25,132,219,207,149,253,238,243,243,107, 95,237,255,134,239,164, 73,147,202, 4, 7, 7, -171,175, 93,187,102,154, 60,121,114,185, 85,171, 86, 17, 79,141,159,187,119,239,110,252,240,195, 15, 3, 59,118,236, 24,163, 82, -169, 72, 86, 86, 22, 82, 82, 82,144,148,148,132,155, 55,111,210,211,167, 79, 95, 55,155,205,235,139,227,206,200,200,200,101,195, -135, 15,127,181,110,221,186,114,209, 34,106, 48, 24,106,239,221,187,183,235,111,191,253,214, 20, 64,177,211,229,221,187,119,215, -127,244,209, 71,186, 14, 29, 58, 84, 81,169, 84, 76, 73,184,211, 25, 12,195,132,249,248,248, 96,215,174, 93,240,247,247, 7,195, - 48, 97,143, 26, 95, 38,171, 16, 21, 25, 30, 4,211,193,217,168, 18, 82, 6, 38,171, 16, 37,165,226,103,199,130, 85,200,173,250, -162, 5,202,131, 72, 50,142, 27, 55,238, 67, 66,200,214,113,227,198,125,232,206,130,101,255,203, 59, 63,231,244,188,185,196, 5, -150,151, 45, 29,220,187,119, 15, 9, 9, 9,184,119,239, 30,210,210,210,192, 48, 76, 81, 1, 82,192, 95,132, 16, 97,231,206,157, - 1,135, 14, 29, 50,212,175, 95, 63, 83, 28,223,194,113, 28,177,217,108,196, 62,238,133,220,190,125, 91,113,224,192, 1,255,139, - 23, 47,134, 33,127, 32,154,224, 33, 66, 30,184, 38, 10, 43,231,195,100, 50, 65,173, 86,123,229, 87,177, 2,252,235,196,137,124, -113,149,155, 99,239, 26,204, 2,159,157, 5,106,200,129,146,183, 65, 9, 10, 98,202,243, 58,252,156, 33,138, 43,171, 93, 96, 89, - 44, 22,216,108, 54, 8,130, 0,142,227,254,137,132,189,168,118,237,218,117,126,252,241,199,129,247,238,221,123,224,126,247,238, -221, 49, 98,196, 8, 12, 31, 62,252, 98,167, 78,157, 78,255,252,243,207, 24, 54,108, 24, 4, 65,120,142, 16,146, 69, 41,253,173, - 40,206,113,227,198, 29,191,123,247,238,158, 43, 87,174, 12, 9, 13, 13, 85,213,172, 89,243,106,205,154, 53,101, 63,254,248, 99, -216,155,111,190,121,226,197, 23, 95,188,245,251,239,191, 7,238,218,181, 75, 45, 8, 66, 93, 66,200,189,127,122, 29, 44,179,217, -236,176, 56,153, 76, 38, 88,173, 86,160,136, 65,237,158,210,166, 24,183, 28,199,137,220,228,199, 31, 55, 97,255,254,253,204,249, -243,231,162,135, 12, 25, 42, 14,164,151, 74,218, 39, 35,172, 58, 40, 25,242,213,152,231,130,212,239,213, 10, 50, 40, 89,146,123, -249,171, 15,115,111,150,214, 27,194, 74,105, 45,209,229,252, 35,167, 77,155, 26,113,241,226, 37,243,132, 9, 19, 46,244,233,211, - 39,244,189,247,222,171,182,113,227,198,166,132,144,111, 40,165,153,133,240, 42, 6, 14, 28,120, 52, 52, 52,180,252,146, 37, 75, -146,239,222,189, 27, 96,179,217,180, 54,155,205,106, 48, 24,174,229,229,229, 29,176, 90,173,187, 40,165, 39,138,227, 94, 95, 95, -223, 90, 3, 6, 12,144,103,102,102,194, 62,251, 22,201,201,201,104,220,184,177,108,203,150, 45,213, 31, 38, 12,210,211,211,103, - 19, 66,246,172, 94,189,186,157, 94,175,175,171, 82,169,194, 1,240, 57, 57, 57, 73, 6,131,225,212,195,184,179, 64, 57,199,243, - 73, 39, 78,156, 40,175,215,235,113,231,206, 29,240, 60,159,244,168,241,166, 86, 48,119,207,236,219, 82,170,106,112, 57, 28, 56, -116, 4,106, 5,115, 87, 74,205,207, 60,196, 49, 82,112, 22, 78,110,132,209,161,184,184, 56,205,244,233,211, 17, 23, 23,119,206, -157, 5, 75, 20, 90,113,113,113,231,196,231,156,158,223, 87,162, 2,171, 40,129,196,178,108, 98, 74, 74, 74,128,191,191,191, 67, - 88, 37, 36, 36, 32, 33, 33, 1, 74,165, 18,183,111,223,134, 82,169,188,239, 77,163, 67,163,209, 28,175, 93,187,118,229, 27, 55, -110, 40, 38, 79,158, 92,234,196,137, 19,250,198,141, 27,215,208,104, 52, 60,165, 20, 38,147,137,185,112,225,130,207,172, 89,179, -162,158,127,254,121,203,243,207, 63,127,114,221,186,117, 70, 20,177,232, 40, 33,228,216,253,251,247, 99,202,150, 45, 43,138,181, - 2,162,202, 89,104, 1,249, 93,155, 44,203,158, 44, 50, 80, 88,246,204,229,203,151,219,104,213, 42, 88,114,178, 97,205,205, 6, -151,147, 3, 62, 39, 11,124, 86, 22, 96,200,134,146,227, 32,231,109,208,168,213,184, 23, 31, 15,150,101,207, 20,197,169, 84, 42, -207, 36, 37, 37,181,241,247,247,119, 84,158, 54,142,203, 63,120, 30, 22,142,115, 88,176,228,114, 57,238,222,189, 11,165, 82,121, -230, 73,167, 96,134, 97,120,113, 41,134, 66,252,129,176,176, 48,161, 65,131, 6, 24, 54,108, 24,120,158,183, 71, 3,105, 65, 8, - 57, 64, 41,205, 45,140, 83, 16, 4,230,194,133, 11, 47, 93,187,118, 77, 38,151,203,153, 23, 94,120, 33,182, 73,147, 38, 22,165, - 82, 9,133, 66,193,230,230,230,250,238,218,181, 75,109,179,217,136,157,243,137,173,131, 37,166,157, 7,154, 66,246,193,232, 70, -163, 17,185,185,185,200,200,200, 96, 53, 26, 77,229, 26, 53,106, 28,177, 88, 44,235, 57,142,251,246,198,141, 27,217,133,113,218, - 5,153, 67,108, 9,130, 0, 74, 41,120,158,135,205,102,131, 66,161, 16,246,238,221,135, 89,115,102, 98,197,183,171,104,215,174, - 93,201,150, 45, 91, 32, 8, 66,188, 84,158, 62, 17,124,145,185,102,170, 26, 28,111, 48,239, 93,157,251,253,149,108,195,164,239, -231, 30,183, 40,101,217,245,154,135,213,140, 41, 87, 89,230,239, 31,192, 44, 94, 58, 47,237,135, 85, 27,174,221,185,115, 39,251, -203, 47,191,108, 88,185,114,101,191, 83,167, 78, 69, 1,112, 43,176,124,124,124,202,190,254,250,235,175,103,100,100, 40, 86,173, - 90,181,252,222,189,123,123, 41,165,215, 93,202,174, 58,132,144,207, 1,200, 1,132, 33,127,252,215, 78, 74,233,202,162,218,105, -132, 16,236,222,189,251,129,217,126,194,163,169,242,140,154, 53,107,214,186,114,229,202,230,196,196,196,239, 93,111,106,181,218, -174,177,177,177,175, 28, 59,118,236, 99, 74,233,181,226, 16,231,229,229,141,221,176, 97,195,231, 50,153, 44,146,231,249, 4,163, -209, 56,246,145, 45, 88, 54, 97, 80,220,226,181, 95, 27, 45,124,105,141, 82,118,199,100, 19,222,148,146,242, 51,109,189, 2,236, - 99,176,196,255, 0,136,203,249, 41,251,127,139,211,179, 41, 78, 86, 43,139,139,213,203,221,189, 20,148,224, 34,231,133,173,228, - 62, 30,192,243, 0,142,201,229,242,121,175,190,250,234,172, 31,126,248,193, 55, 59, 59, 27, 73, 73, 73, 72, 78, 78, 6,203,178, -208,235,245, 88,180,104,145, 49, 41, 41,105,158,243, 59,174, 43,190,139,121, 34, 56, 56,248,248,170, 85,171,194,191,250,234, 43, -246,181,215, 94,187,221,169, 83,167, 42,139, 22, 45,186,161, 80, 40, 40,207,243,196,108, 54,147,183,223,126,187,252,156, 57,115, -110,201,100, 50,109,239,222,189,137, 78,167, 59,102, 47,120,220,135,120, 74,202,206,159,126,250,233,165,209,163, 71,171, 44, 22, -139, 91,203,149,120,205,223,223, 31, 7, 15, 30,180,100,100,100,236,240, 96,181,216,185,237,215, 95,154,253,175, 79, 31,133, 45, - 39, 27,182,156,108,112,217,217,224,115, 50, 65,114,179, 33,231, 57,104, 20, 2,194,163,213,224,140, 62,248,229,207, 83, 54,179, -217, 92,228,130,132,217,217,217, 59, 15,172, 88,209,226,249, 50,101,216,131, 35, 71,194,106,179,161,195,229,203, 14, 81,101,181, - 90,177,185,102, 77,240,132,224,185,183,222,194, 85,142,227,178,179,179,119, 62,141,153,224,244,233,211,201,253,250,245, 59, 33, - 8, 66,157,226, 88,115,156, 42,159,156,220,220, 92,164,166,166,242,105,105,105, 38, 0, 72, 78, 78,206,216,178,101,203, 5, 65, - 16,158,127, 24,206,146,128,205,102,123,192,250,196,243,124,190,149, 49,223, 82,160,252,229,151, 95,154, 93,184,112, 65,113,246, -236, 89,236,223,191,255,185, 31,126,248, 97,124,153, 50,101,106,222,190,125, 59,209,147,104,115,183, 88, 47,236,227, 11,215,173, - 94,143,193,131, 7,147,196,196, 68,172, 89,179, 6,158, 22, 61,149, 80, 98, 48,128,227, 53,150,189,171,115, 59,253,122, 39,231, -240,125,227,100, 0,219,169,145,163,165, 74,149, 58, 93,183,110, 64, 48, 0,152, 77,124,120,197,138, 21,155,179, 44,171,180,167, -225,186, 65, 65, 65,139, 0, 52,113, 71,218,189,123,247, 70,161,161,161,181,127,251,237,183, 83,247,238,221,219,231, 42,174, 0, -160,114,229,202,159,157, 61,123,182,131, 92, 46, 39, 78,105,132, 2,112, 43,176, 90,180,104, 81,185, 76,153, 50, 65,191, 94,241, - 67,182,162, 2,168, 44, 11, 96,213,224,253,107,225,182,162, 26,162,163,143, 4,249,251,251, 63,151,153,153,121,170,152, 86,188, -210,189,123,247,254,101,217,178,101, 85, 95,124,241, 69, 37,128, 7, 4, 86,213,170, 85,123,252,254,251,239, 61,135, 12, 25, 82, -139, 16,210,197,203,221, 58,196,124,116, 27, 64,207,146,140,180, 29, 87,233, 46,216,215, 44,147,240,159,193,159,143,233,217,199, -134,194,186, 8,159, 23, 4,161, 43,195, 48,176, 90,173,113, 97, 97, 97,155,123,247,238,221,125,252,248,241, 62, 65, 65, 65, 14, -203,213,162, 69,139,140, 55,111,222,220,104,181, 90,255, 34,132, 76, 76, 72, 72,232, 26, 25, 89,104,189,144, 51,127,254,252,181, - 93,186,116,121,237,173,183,222, 50,214,172, 89, 83, 95,165, 74,149,188, 67,135, 14,249,180,109,219, 54, 91, 38,147,209,131, 7, - 15,250,150, 47, 95,222, 68, 8, 81,253,254,251,239,105, 71,142, 28, 41, 31, 23, 23,247, 13,242,167, 77, 23,134,213, 83,166, 76, -153,208,181,107,215,242, 65, 65, 65,200,206,206, 46, 32,178,196,255,106,181, 26,137,137,137,216,180,105,211,125,155,205,246,141, - 7, 75,198,151, 11, 23, 45, 30,213,178,193, 11, 81,122,173, 6,137,241,183,193,103,101, 0,134, 92, 40, 57, 27, 52, 74,138,168, - 10, 90,176, 50, 29,174, 37,230, 98,197,161, 63, 19, 57,142,251,178, 40, 78,139,197,242,229,136, 57,115, 70, 29, 94,188, 56,170, - 76,175, 94, 56,191,114,165,163, 75, 80, 20, 88, 60, 33, 40,221,186, 53, 24, 63, 63, 76, 91,178, 36,201, 98,177,124,249,164, 19, -132, 32, 8, 50,139,197, 82,148, 63, 32, 8, 66,252,249,243,231,215, 18, 66,114, 8, 33, 45,236,183,246,184,179, 94, 57,115, 50, - 12, 35, 84,171, 86,237,199,176,176,176,151, 0, 24,170, 85,171,246,163, 74,165,106,101,177, 88, 94, 16, 4, 33,254,175,191,254, -218, 68, 8, 73, 36,132,136,173,140, 39,186, 14,150,205,102,195,196,137, 19, 49,125,250,116,140, 27, 55,206,225, 95,177,155, 48, - 51, 51,179,220,129, 3, 7, 20,123,247,238,165, 75,150, 44, 73,123,237,181,215,252,223,122,235, 45,255,175,190,250,234, 93, 0, - 99, 11,227, 28, 59,118, 44,150, 44, 89,130,193,131, 7, 63,168,174,100, 50, 33, 62,254, 46, 76, 38, 19,157, 63,127,126,130, 92, - 46, 15,248,230,155,111, 52,111,190,249, 38,145,202,211, 39,130,143, 52,253, 62,126,199, 94,198,204,163,148,238, 17,111,232,245, -122,205,143, 63,254,196, 2,192,198, 13,155,228,148, 82, 63,113, 97,216,239,191,255, 94,221,184,113,227,208,194, 72, 55,108,216, -144, 57,121,242,228,160, 65,131, 6,189,184,103,207, 30, 45, 33,228, 87,123,161,159, 10,128, 7, 16, 12,224, 96, 72, 72, 72,196, -218,181,107, 43,180,107,215, 78,231,201,161, 57, 57, 57,223,172, 93,187,182,236,156, 3,126,248,213,240, 18,238, 10,189, 64,253, - 41, 2, 67,115, 80,205,231, 14,250,246,237, 27, 57,111,222,188,175, 1,212, 45,134,184,170,254,242,203, 47,255,180,108,217,178, -114,111,189,245, 86,252,193,131, 7,239, 18, 66, 62,115,243,104,218,128, 1, 3,110, 47, 95,190,188,130, 32, 8,219, 9, 33, 47, - 82, 74,175, 72,201, 71,130,132, 34,242,151,187,241, 75,132,144,205, 28,199,117,101, 89,118,139,243, 66,163, 97, 97, 97,163, 44, - 22, 75, 4, 33,132, 42, 20,138,196,164,164,164,121,206, 11,141,198,199,199,119,141,142,142,118,188, 99, 95, 44,211,121,173, 12, -125,135, 14, 29,218, 28, 62,124,120,193,214,173, 91,147,115,114,114,124, 54,108,216,160,153, 62,125,250,109, 65, 16,232, 7, 31, -124, 80,166,125,251,246,121, 60,207,223,127,235,173,183,202,151, 43, 87,238,173,139, 23, 47,238,114, 22, 88,110, 56, 65, 8,169, - 94,161, 66,133,131, 27, 55,110,212,251,251,251, 35, 57, 57, 25,233,233,233, 48, 24, 12,224,121, 30,114,185, 28, 41, 41, 41,152, - 60,121,114,118, 66, 66,194, 3, 11,141, 22,194,249,124,217,168,168,157,243, 62,155,232,235,207, 50, 72,187,116, 1, 92, 70, 26, -228,156, 13,165,170,251, 65,161,212,224,234,229, 28,188,187,122, 83,206,157,244,204, 7, 22, 26, 45,140,179, 94,197,138,187,150, -140, 25,227, 99,186,123, 23, 17,175,191,142,188,188, 60, 88,173, 86, 48, 12,131,235,243,230, 65, 17, 18,130, 9,235,214, 25,206, -221,185,211,218,117,161, 81,119,156,143,156, 0,156, 56, 9, 33, 67, 9, 33,142, 65,238,221,187,119, 47,240,236, 79, 63,253,132, -197,139, 23,195,108, 54,115,148,210, 81,148,210, 69,132, 16, 31,123, 43, 53,215, 19,103,217,178,101,239,196,198,198,254,201,243, - 60,107, 23, 23,244,252,249,243,117,111,222,188, 89,202,133, 83,236,186,230,158,148,223,131,130,130,230,253,246,219,111,101, 67, - 67, 67,137,243, 10,235,118,129, 8, 0, 24, 54,108, 88,235, 35, 71,142,168,106,215,174,109, 78, 77, 77,173, 31, 18, 18,242,199, -170, 85,171,130,123,247,238,157,112,238,220,185, 40, 87,206,224,224,224, 89, 27, 55,110,172, 80,161, 66, 5, 70,180,130,185,118, - 67, 14, 28, 56,176,205,170, 85,171,148, 47,189,244,146,217, 96, 48,132,249,250,250, 94,219,184,113, 99,112,183,110,221, 18,207, -157, 59, 23,241, 36,252, 46,113,186, 71,108,108,236,213,115,231,206, 85, 16,207,141, 70, 35, 82, 82, 82,144,154,154, 10,127,127, -127,180,109,219,246,250,205,155, 55, 43,184,227,180, 91,133,230, 46, 93,186,244, 69,157, 78,167,216,183,111,159, 97,215,174, 93, -166,219,183,111,115, 54,155,141, 70, 68, 68,176, 77,154, 52, 81,119,236,216, 81,167, 82,169,152,143, 63,254, 56,117,234,212,169, -193,132,144,185,148,210,119,221,113,214,169, 83,231,232,182,109,219,158, 39,132, 64, 38,147,193, 98,177, 34, 51, 51, 19,247,238, -197,227,252,249,243, 56,124,248, 48,118,236,216,113, 42, 55, 55,183,182,183,126, 39,132,252, 97, 54,155, 91, 40,149, 74,175, 5, - 61,207,243, 96, 89,118, 55,128, 54,148, 82, 65, 74, 75, 18,167,132,226, 89,176,196,193,185,207, 19, 66, 54,219, 47, 29,115, 93, -138,129, 16, 50,158, 16, 50,209,201,234,229,233,123,217,191,253,246,219,254, 54,109,218, 12,107,221,186,245,156,118,237,218,221, -191,127,255,126,204,236,217,179,163, 57,142,179,158, 63,127,158,185,118,237,218,237,227,199,143, 87,168, 84,169,210, 91, 23, 47, - 94,220,235,193,122, 37,186,245, 60, 33,164,113,203,150, 45, 55,189,245,214, 91,165, 27, 52,104,160,244,247,247, 7,203,178,184, -113,227, 6, 78,157, 58,101, 89,183,110, 93,124,102,102,166,215, 91,229, 80, 74,143, 17, 66,218,246, 30, 62,106,227, 91,221,187, - 4,191, 80,165,178, 50, 34, 34, 2, 48, 26,113,233, 78, 34,142, 92, 58,101, 93,182,255, 72,138,217,108,126,217,219,173,114,236, -156,109, 90,141, 25,179,113,210,255,254, 23,134,251,247,217,136,136, 8, 40,149, 74,220,188,121, 19,215, 4,129,155,177,116,105, - 82,118,118,246, 19,223, 42, 71, 92,179, 74, 16, 4, 22, 0, 52, 26, 13, 70,140, 24, 1,231,173,113, 22, 47, 94, 12,163,209, 8, - 0, 44, 33,228,115, 66,200,183,133, 89,173, 10,225, 44,253,235,175,191,150,118,230,172, 90,181,170, 59, 78,243,147,206, 8,233, -233,233, 19, 58,116,232, 16,199,178,108,161,171,213, 6, 4, 4, 32, 39, 39, 7, 28,199,241,247,238,221,187, 20, 16, 16, 0,185, - 92, 14, 74,169,219,124,148,150,150, 54,225,229,151, 95,158,194, 48, 76,161,150, 14,189, 94,127,251,143, 63,254,168,248,230,155, -111, 50,223,125,247,221,141, 65,131, 6,169,254,248,227, 15,254, 97,215, 52,146,240,248,224,220, 24,181, 55,222,104, 17,207,222, - 33,132,140, 61,113,226,132,122,240,224,193,117,255,247,191,255,233, 91,182,108,233,227,252,140,209,104, 20,126,254,249,103,195, -146, 37, 75,210,246,237,219,247,231,192,129, 3, 95, 66,254,248, 17,183,184,115,231,206, 47,211,166, 77,243,235,216,177, 99, 37, - 0,142,241, 87, 41, 41, 41,184,125,251, 54,206,158, 61,123,219,106,181,110, 41,166,183,134,245,235,215,239,215,229,203,151,151, -121,235,173,183,226,215,172, 89,179, 5, 64,150,155,231,124,122,244,232,209,117,249,242,229,101,222,126,251,237, 59, 0, 70, 74, - 43,188, 75,144,240,112, 2, 43, 75, 16, 4,152, 76,166, 48, 65, 16,186, 10,130, 0, 31, 31, 31,119,207, 61,159,144,144,208,213, -121,179,103,120,216,214, 6, 64,202,174, 93,187,118,174, 94,189,186,245, 7, 31,124,240,191,204,204,204,231, 79,159, 62,221, 0, - 0,228,114,249, 97,157, 78,119, 52, 46, 46,238,245,177, 99,199,166,120, 35,174, 92, 68, 86,181, 89,179,102,149,216,102,207,118, - 65, 84,241,203,245,155,134,125,163, 82,181,117,217,236,121,167,125,179,103,211,195,112,142,249,250,235, 97,250,245,235,159,218, -205,158,205,102, 51,247,210, 75, 47,125,195, 48,140, 96,111,181,178,102,179,249,117, 20,115,230,169, 43,103,247,238,221,191,147, -201,100,156,221, 50,196,152,205,230, 55, 30,133,179, 4, 43,207, 92, 0,195,139,122,166, 70,141, 26,171,182,108,217,210,175,107, -215,174,188,213,106, 77,238,210,165, 11,123,244,232, 81,202, 48,204,174, 66, 56,205, 0,222, 47,138, 51, 60, 60,188,204,194,133, - 11, 79,142, 28, 57, 82,191,122,245,234,192, 3, 7, 14,240,243,231,207,207, 78, 79, 79,255, 66, 42,158,158, 46,200,229,114,104, -181, 90, 88, 44, 22,164,164,164,192,211,146, 83,148,210,107,132,144, 78, 99,198,140,105, 58,102,204,152, 78,209,209,209,213, 75, -151, 46, 93,154, 97, 24,230,254,253,251, 41,119,239,222,189,101,181, 90,127, 7,240, 11, 0, 69,249,242,229,255, 2,176,170, 48, -190,180,180,180, 41,132,144,221, 43, 87,174,236,164,211,233,170,169,213,234, 64,155,205,198,228,228,228,164, 27,141,198, 11, 38, -147,105, 43,165,244, 80, 49,211,253,101, 66, 72, 75,150,101,127, 89,182,108, 89,213,251,247,239,151,221,187,119,111, 23,215,231, -234,214,173,187,124,249,242,229,101,134, 12, 25,114,109,245,234,213,197, 26,131, 37, 65,130, 36,176, 10, 98,154, 82,169,100, 97, -223,244, 89,180, 96,185,121,238,152,203,152,171, 44, 0,211,188,248,174,161,111,223,190, 55,251,246,237,251,185,221, 13, 50,228, - 47,197,192, 33,127, 4,191, 21, 30,150,102, 40,164,176,224, 0,124,109, 63, 74,170,226, 53, 33,127,189,155, 89, 79, 51,103, 9, -184,201, 76, 8, 25, 99,159,213, 4, 0, 99,254,250,235,175, 69, 46, 22,169,211,206,247, 61, 89,154,220,113,158, 58,117,202,149, -243,108,113, 56,255, 73,100,102,102,142, 90,184,112,225,177,113,227,198,169, 6, 12, 24,128,179,103,207, 98,250,244,233,230,204, -204,204,213, 15,203,153,152,152,120, 59, 60, 60,188,206,220,185,115,223,155, 51,103, 78, 55, 66,136,180, 23,225, 83, 2,163,209, -120,189, 86,173, 90, 32,249,179, 19, 40,199,113,142,217,159,246, 21,249,175,123, 89, 38,237,182, 31,158,240,185, 23,124,135, 1, - 28, 46,225,188,127,135, 16,210,233,214,173, 91,211, 46, 95,190,188,205,221, 51,231,206,157,251,169, 93,187,118,218,195,135, 15, -127, 88,220, 89,132, 18, 36, 72, 2,171, 96,134,187, 10,224,127, 94,100,204,184, 71,248, 54,239,133,181, 75,194,147, 21, 89,139, - 8, 33,223, 58, 89, 95,138,117,255, 73,113,254, 83,136,143,143,207, 0,224,216, 50, 36, 38, 38,230,129,113,106, 15, 43,178,144, -191,106,187,180,114,251, 83,132, 27, 55,110,116,248, 15,229,253, 59, 0,250, 21,118,223, 98,177,108, 1,176, 69, 74, 21, 18, 36, - 60,162,192,146,240,159, 22, 89,230, 71,185,255,164, 56, 37, 72,144, 32, 65,130,132,167, 25, 4, 64,155, 66, 42, 61,175,103, 7, - 16, 82,252,141, 54, 61,241, 75,156, 18,167,196, 41,113, 74,156, 18,167,196,249,236,113, 58,113,207, 41,228,214, 37, 23,190,175, -254,173, 22,139,199,118, 32,127, 26,175,196, 41,113, 74,156, 18,167,196, 41,113, 74,156, 18,231,195,124,231,173, 39,241,157,199, -113, 72, 27,202, 74,144, 32, 65,130, 4, 9, 18, 36,148, 48,220,142,193,218,176, 97,131, 76,252,255,202, 43,175, 12,228,121,222, - 49,125, 93, 38,147, 45, 92,179,102,205,183, 69,145,246,236,217,147, 47,138,211, 29, 60,125,199, 29,103,108,101,191, 33, 65,126, -218, 81,153, 89,121,115,111, 36,240,251, 77, 38, 83, 53,241,158, 90,173,190,240,237,183,223, 94, 41,105,119, 14, 28, 56,176,146, -235,119,202, 70,203, 91, 4,250,170, 71,164,103,230,206, 62,123, 37,231, 43, 41, 89, 61, 94,244,234,213, 75, 86,156,231,111,222, -244,103, 78, 34,226, 11,189, 78,209, 37,215, 96,251,130, 63, 49,113,193,179, 16, 14, 17, 17, 17, 85,244,122,125,127, 0,213,243, -242,242, 66,181, 90,109, 50,128,243,217,217,217,171,238,223,191,127,201, 91,158, 22,229,200,109, 0,165,237,167,119,246,220,164, -101,188,185,231, 9,237, 43, 16, 19, 5, 84,132,192,186,253, 42,117,108,112,249, 98, 69, 98, 18,232,131,215,219, 87, 36, 22, 74, -161, 32,128,121,251, 53,170,126, 86,210, 43, 33, 68, 15,160, 45,128, 88, 0,167, 1,236,160,148,230, 73, 57, 89,130,132,255,160, -192, 26, 56,112, 96, 51, 37, 75, 23, 64,160,254,160, 52,200,108, 54,203,149, 74, 37, 44, 22, 11,180, 26,205,151,131,223, 24,240, - 25, 8, 50,173, 2, 51,226,219,111,191,125,232,157,167,139,243,157,158, 61,123, 62, 48,205, 57, 64,175,153,178,231,231, 15, 2, -154,117,138,155,110,185,153, 62, 54, 39, 39,135, 81,169, 84, 48,155,205,240,243,243,107, 60,252,173, 65,117, 41, 67, 44, 10,181, -238,208,156, 57,115, 18, 31,214,157,239,190,251,110, 56,103, 53, 52,162, 54,170,180, 88, 44, 42,215,239,248,107,117, 51,246,252, -252,129,182,121,231,233,159, 1,144, 4,214, 83,132,124,113, 21,254,213, 59,125, 95, 24, 48,115,100, 27,248,183,152, 49, 22,192, -191, 90, 96, 17, 66,100, 49, 49, 49,195,202,148, 41,211,103,233,210,165,138,152,152, 24,168,213,106, 24,141,198,136,235,215,175, - 71, 12, 25, 50,164,121,249,242,229,215,222,184,113,227, 75, 74, 41,239, 5,101,233, 61,203, 63, 6, 0, 52,238, 63,185, 52, 33, -228,125, 0,121, 0,208,188,236,223,247, 90, 12,152, 92,154, 16, 50, 6, 5,103,255,222,167,148,186,157, 93, 70, 1,229,214,149, -179,208,245,213,247, 89, 66,200, 16,241,122,199, 74,192,182,239,231,225,197, 87, 70, 21,184,222,190, 60,216,159, 87,206, 66,231, - 87,223, 47,116,183,241, 23, 43, 49, 54, 65,160,133, 78,206, 97, 24,194,109,191, 74,221,109,252,155, 68, 41,221,238, 38, 44,219, - 35,127,163,101,183,207,119,174,202, 38, 89,109,188,219,133, 98, 21,114, 89,242,214,139,220, 3,239, 14,168, 67,108, 54, 62,191, -108, 85,176,224,253,252,252,246,124,244,209, 71,108,231,206,157,177,108,217,178, 38, 95,125,245,213, 91,132,144,223, 1,108,145, -150, 60,144, 32,225, 63, 38,176,148, 12, 93,178,125,245,226, 10,137, 41,233,232, 51,100, 60, 86,175, 94,141,140,140, 12, 4, 4, - 4, 64,169, 84,200, 23, 77, 27, 27,238,239,171, 13,239, 61,124,226, 18, 0, 85, 30,246,227,197,252, 78,197, 7, 10, 71,251, 66, -164,172,140,149, 43,149,114,102,237,218,181,200,204,204,132,191,191, 63,148, 74, 57, 51,111,242,104,141,191, 94,167,249,223,168, - 73, 77, 0,172,127, 88,119,114,198,220, 38, 63,127,191, 80,159,148,146,134,126, 35, 38,192,245, 59,114,133,130, 23, 43, 20, 41, - 73,253,115, 72, 77, 77, 37, 0, 16, 28, 28, 76, 11,138,171, 6, 3,230,140,110,135,119,103,239, 64,158,201,242,253,191,221,159, - 49, 49, 49,195,122,245,234,213,103,202,148, 41, 10,134,201,239,229, 55, 24, 12, 48, 26,141,136,138,138,194,158, 61,123, 20, 19, - 38, 76,232,243,211, 79, 63, 1,192,252,226,242,159, 59,119,174,108,233,210,165, 77, 0,208,165,166,175,235,189, 50,226, 61, 0, -240,245,245,245,200, 23,228,175, 51,159, 59,119,164,186,248,222,176,214, 81,124, 33,215, 77, 0,180, 69,113, 9, 2,101,119, 44, - 24, 82,232,253, 55,167,252,192,157, 94,191,191, 74, 76, 76,140,209,249,122, 33, 11, 37, 3, 64, 88,110,110,110,105,215,139,226, -243, 86, 27, 31, 90,216,247,218,141, 88,236, 86,120,217,120,176, 63,252,240, 3, 0,224,139,247,251,201,190, 62,154,202,178,108, -126, 81,251,249,231,159, 99,210,164, 73,202,237,219,183,119, 92,185,114,101, 71,251,214, 56,210,242, 7, 18, 36,252, 87, 4, 22, - 33,240,213,251,234,208,245,181, 17,248,109,219,118, 52,107,214,204,113,175, 92,185,114,120,165, 71, 23,252,180, 52, 14, 12,136, -239,163,124,252, 81,191,147,145,101,248,164, 67,159,249,147,239, 36,230, 30,222,186,245, 87, 52,109,218,180,192,251,255,235,253, - 18, 54, 46,154, 10, 66,169,226, 81,220, 41, 48, 84,161,215,235,240,242,160, 81,112,247,157,193, 3,186,110,125,177,231,188, 54, - 73,105,134, 57, 82,146,122,178,184,120,241,162,204,108, 54,191,162,215,235, 27,200,229,242, 48,149,127,105, 33,129,125, 62, 45, -133,196,220, 72, 14,205,107, 54,186, 77,216,139, 95,188,211, 18,239,206,222,129,185,171,143, 44,175,131,196,137,255,102,255, 70, - 68, 68, 84, 41, 83,166, 76, 1,113,149,147,147,131,220,220, 92,100,103,103, 35, 39, 39, 7, 12,195, 96,236,216,177,138,189,123, -247,246,137,136,136,216,229, 69,119,225,157,198,253, 39,231,139, 12,153, 60,119,226,196,137,230,208,208, 80,179, 86,171,165,172, - 66,149,211, 98,192,100, 95, 0, 96, 88, 69,206,220,185,115, 45, 81, 81, 81, 38,150,101,149,163, 70,141,242,106, 12,167,217,108, -166,206,156, 22,139,217,113,125,198,140, 25,150,176,176, 48,179, 86,171,165, 86,171,197,235,112, 56,115, 51, 29, 42,133, 12, 42, -133, 12,106,165, 28,190,101,235, 67,149,113, 22, 28,199, 97,230,204,153,214,240,240,112,139, 86,171,165, 74,165, 82, 49,114,228, - 72,143,238, 28, 56,112, 32,245,247,247,183,106,181, 90,197,164, 73,147, 30,216,151,239,143,211,247,160, 81,202,161, 85,177,168, - 88, 46, 26, 42,106,244,218,173, 50, 89,193, 30,109,149, 74,133, 38, 77,154,160,122,245,234,216,188,121,115, 11, 72,235, 75, 73, -144,240,236, 10, 44, 66, 72,115, 0,123, 0,128, 82, 74, 0,128, 1,197,167,131, 94,196, 91,175,246, 2,207, 11,249,163,226, 1, -200, 8,193,251,125,154, 65,224, 57, 8,240,184, 85,132,199,169,154,197,253,142, 51, 39, 37,140, 12, 0,170,148, 14,162,131, 95, -239, 11,129,207,239, 13,225, 1,200, 1,188,215,171, 9,120,222, 6,193,195,162,240,222,185, 83,192,199, 3,219,193,221,119,170, -148, 15, 99,204, 60, 7,226,180, 25,227,227,216, 4, 83,226, 44,136, 67,135, 14, 69,104,181,218,217,253,250,245,139, 28, 57,114, -164,146,103,253,217, 13,135,211,252, 62, 88,116, 56, 50,207,108,149,245,109, 89, 22,163,255, 87, 19,163,231,254, 33,138,171,183, -202,149,203,252, 87,199,145, 94,175,239,191,116,233,210, 7,196, 85, 82, 82, 18,147,155,155, 11,171,213, 42,228,228,228,128,231, -121,140, 27, 55, 78, 62, 97,194,132,254,132,144, 73,118, 30,179, 59,206, 61, 55,105, 25, 66,200,152,115,231,206,149,249,232,163, -143,172,173, 90,181,186, 83,174, 92, 57,131, 76, 38, 67, 68, 68,196,188,182,109,219, 6, 78,153, 50,197,218,177, 99,199, 91, 50, -153, 12, 21, 43, 86, 52,156, 61,123,182, 12, 0,141,183,126,119,230,252,246,143,133,212, 94,238,160,109,219,182,183, 43, 86,172, -104,144,201,100,184,242,243, 12,234,109,120,202, 89, 6,149,162,252, 28, 45, 53,104,124,128,140,252,211,182,109,219,198, 87,169, - 82, 37,151, 97, 24,156, 57,115, 38, 26,128,218, 19,167, 70,163,177,245,237,219,247,206,165, 75,151, 30,120, 30, 0, 88, 25,131, - 6, 85,236, 6,171,168, 58, 64,252,129, 66,221, 41,151,129,155, 48,172, 31,235,175, 6, 84,190,193,230,236,236,108,232,245,250, -124,139,152,213,138,191,254,250, 11, 13, 27, 54,108,190,126,253,250,189, 82,126,151, 56, 37, 78,103,163,203,131, 90,228, 89,176, - 96,237,113,245,140,192,115,168, 16, 21,132, 69,239,191, 12,142,227,193,243,130,253,224,193,113, 2,108, 86, 11, 60,232, 43,239, -172, 67,143,240,157, 0,189,102,202,111,107, 71, 6,180,238,246,121,235, 5,239,245,216, 41,216,108,224, 5,128,227, 5,240, 54, - 30,130, 32,192,102, 41,153, 53, 44, 5, 27,143, 10,145, 65, 88,240, 94, 15,184,126,103,225, 47, 59,186,252,177,101,172,182, 89, -231,233,239, 1,152, 41,233,246, 39, 99,185,210,106,181,179, 87,173, 90, 85,166,126,253,250, 12, 0,236,191,204,169, 62, 88,116, - 56,114,123, 92, 99,210,184,122, 16,146, 51,205, 24,245,229, 41,252,118, 56,121,155,171,184,250, 23,163,122, 76, 76, 76, 1,113, - 53,107,214,172,224, 69,139, 22, 69, 1,192,203, 47,191,124,175,117,235,214,169,151, 47, 95, 70, 68, 68, 4, 73, 77, 77,237, 4, - 96,148,189,240, 26, 67, 41, 93, 84, 8,175,161,116,233,210,166,144,144, 16,179, 40,132, 24,134, 1,203,178, 40, 93,186,180, 41, - 52, 52,212, 92,177, 98, 69,131, 66,161, 0,195, 48, 16, 5,158,151,133, 38,100, 50, 25, 68, 78, 87,235,142,200, 89, 28,200, 89, -167,231,233,131, 22, 35,134, 97,220,126,175, 48,168,213,106, 10,160,208,231,101,140, 83,241,200, 22, 61, 18, 96,249, 73, 42, 39, -132,236,161,148,226,228,201,147,184,113,227, 6, 20, 10, 5,194,195,195, 49,105,210, 36,152,205,249,101, 82,175, 94,189,154, 3, - 56, 35,229,102, 9, 18, 28,216,243, 44, 8, 43, 87,129,229, 80,143,148,210,189, 0,192,115, 54,240,188,224, 86,244, 88,109, 28, -108, 86,107,137, 56,160,168,239,240, 60, 95,228,119,196, 49, 88, 2,165,172, 91,113, 37,228,239, 27, 86, 34,238, 20,108,176,241, -128,187,239, 16,194,240,246,130, 94, 33,229,143, 39, 3,179,217,220,183, 95,191,126,145,162,184, 2,128,212, 28, 27,155,103,182, -201, 26, 87, 15, 66,221,150,189,112, 98,247,122,172,219,119, 15,229, 67,180,251,202,233,158, 9,113,133,188,188,188, 80,181, 90, - 13,131,193,224,176, 92, 45, 90,180, 40,202, 98,177, 48, 0,192,178,242,232, 20, 33, 74,205, 11,128,159,254, 62, 50, 50,178,130, -196, 2,139, 16,242, 57, 33,228,219,162, 86,206, 87, 40, 20, 14, 97,226, 44,124, 84, 42,213, 67, 9, 23, 17,162, 40, 83, 40, 20, -110,175,187,118,163,121,130,194, 89, 96,129,230, 91,177, 92, 68,150, 76, 38,131, 56,246,201, 19,148, 74,165,195,239,110, 11, 74, -153,211,247,100,197, 31,106,105,181, 90,145,155,155,139,204,204, 76,168,213,106,209, 2, 0, 66,200, 40, 0,239, 72, 57, 90,130, - 4,247, 90,228,153, 17, 88,200, 55,205, 17, 0,224,108, 86,183,162,103,229,142, 19,184,150,102, 67, 84,192,121,136,207,122,139, - 62,125,250, 44,143,136,136,104,224, 40, 36,181,190, 65,253,223,159, 1,222,106,129,191,138,226,157,158, 77, 11,136, 43,158, 23, - 96,181, 22,110,129,202,200, 50,124,242, 98,175,121,147,131,116,190,135, 93, 69,207,132, 13,151,122,166,101, 89,162, 9,123, 17, -153, 36,138,239,245,246,167, 3,157, 10,245,211,107, 23, 79, 28,237,173,187, 41, 97,228, 93, 70,126,245, 22,175,240,173,166,167, - 25,251, 38,189, 82,237, 71,103, 17, 23,234,227,179,181,253,203,115,218, 36,165, 75, 99,176,158, 20,148, 74,101,155,145, 35, 71, - 22,168,233,130,125,229,156, 86, 37,231, 15,158, 79, 37, 39,118,175,103,246,159, 75, 21,212, 10, 25, 13,161, 55, 98,158, 21,127, -107,181,218,228,188,188,188, 8,163,209,136,236,236,108,100,103,103, 23,204,208,114, 57,121,107,240,240, 96,185, 66, 9,155,213, -130,223, 86, 77,245,200,217,162, 28,185,221,188, 44, 74,119,169,233, 11,153, 92,153,115, 62, 38,102, 30,203,178, 96, 24, 6, 63, -127,249,193,168, 77,179, 71,248, 2,192,233,173, 95,102,191, 50,118,225,124,134, 97, 96, 54,155, 85,197,113,247,221,187,119,163, -205,102,179,201, 46,204, 68,193,135,155, 55,111,150, 50,155,205, 70,231,235,222, 64,163,245, 5,252,203, 1,218,208, 7,172,101, -183,110,221,138,180,217,108,121, 44,203,194, 98,177,120,165,134, 24,134, 81,156, 57,115, 38, 90, 16, 4,183,207, 87, 47, 31, 9, -132,215, 4,148,126, 94,251,217,190, 72,162,199,103, 8, 33,244, 89,106,181, 75,144, 80, 18,150,172,226,234,139,167, 89, 96,181, - 32,132,208,191, 51, 61,192, 89,173, 14, 97,149,111, 97,202,255,127, 51, 75,192,165, 43, 87, 49,119,238, 92,236, 61,254,158,223, -148, 41, 83, 84, 19, 38, 76, 48,247,233,211,103,182, 32, 8,181, 24,134, 57,221,179,103,207, 81,238, 62, 38, 8, 66,169, 19, 39, - 78, 56, 42, 59,155,205, 6, 95, 95, 95,248,250,250, 34, 54, 38,252, 1,113,197,217, 45, 88,180,112,225, 35, 3, 5, 64, 65, 57, -222, 6,222, 6,135,232, 73,203,178, 68,255,180,251, 84, 5,167,199, 43,139,127,154,212,175, 86,184, 8, 28, 50,201,225,143,181, -139, 39,142,158,178,108,153, 42,131, 15, 27,249, 74,239, 65,177,189, 94,233,143,126, 61, 94,108,110, 50,217, 54,179, 12, 4,155, -192,131,183, 9, 16, 40,101, 40, 80, 96, 12,150,132,199,135,212,212, 84, 98, 52, 26,203,250,251,251, 23,168,168, 34,116, 6,243, -216,222,149, 18,218,126,112, 32,210,100,229,161,146, 51,116, 84,183, 50, 9, 71,127, 90, 23,148,106, 78, 37,226,236,194,127, 57, -206, 95,187,118, 45,162, 84,169, 82,200,206,206, 6,199,113,194,203, 47,191,124,143,101,229,209,172, 92, 78, 58,191, 50, 92, 72, - 76, 76,176, 49,140, 12,148,242,232,208,107, 40, 81,169, 53, 10,171,197,194, 1, 24, 83,136,245,202,121, 41, 6,223,182,109,219, - 6,138, 51,251, 54,205, 30,225,235,116, 79, 95,183,110,221, 64,231, 89,132, 94,138, 97,210,167, 79, 31, 77,233,210,165, 9, 0, -252,185,234, 35,209, 90, 70,186,116,233,162, 46, 93, 58,127,124,253,239, 95,122,191,215,117,176,150, 2, 89, 55,129,172, 91, 15, - 88,174,186,116,233,162,138,137,137, 41, 86, 94,180, 15,108, 47,116,237, 45, 29,203, 1,137, 39,189,226, 26, 80,135,216, 62,106, - 6,118,118, 7, 6, 74,159, 32,115,131, 15,182, 31,149, 68,150, 4, 9, 94,161,128, 22,121, 38, 4,150,221, 20, 87, 32,115,115, - 54,235, 3,226,138,231, 5,168,121, 3,230,206,157,139,119,222,121, 7, 0, 20,163, 71,143,254,113,202,148, 41, 47, 9,130, 80, -139, 82,218,148, 16, 82, 84, 43,113, 79, 68, 68, 68, 18,165, 84,206, 48, 76,211, 47,191,252, 50,176, 67,135, 14,240,245,245, 5, - 21,232, 3,226,138,231, 5,216,204,150,124,197,231, 6, 1,122,205,148,109, 27, 70, 5,180,234, 54,179, 53,111,195, 78, 81, 92, -241,182,191,135,197,167, 37,197, 99,199,182,205, 88,178,120,105, 6, 8,189, 8, 10,129, 97,152,211,133,185, 81, 16,132, 90, 7, -254,188,208,180, 73,253,106,152,178,108,153,234,220,137,251, 63, 14,127,247,163,216, 94,175,244,199,250, 53,171, 32,179,102,156, -100,153,176,191,197, 21,207, 35, 37, 39,187,203, 31, 63,127, 32,141,193,250,135, 96,179,217,144,145,145, 1, 91,110, 6, 87, 47, -194,144,245,105,175, 80,115, 82,134,137,149, 11,121, 92, 85,125,178,121,119,250, 45,153, 86,171,125, 38,252,154,157,157,189,106, -200,144, 33,205,247,237,219,167, 96, 24, 6,217,217,217,104,217,178,101,106,138, 16,165,126,107,240,240,224,132,132,123,156, 94, -195,154, 21, 10, 57,146,147,147,133,230, 29,251, 26, 95, 25, 56, 42,242,157, 15,167,125,149,112,104,241, 34,111,190,225, 60,179, -207,245,222,215, 95,127,109,137,138,138, 50,169, 84, 42,229,128, 1, 3,188,234, 39,180, 88, 44,116,198,140, 25,102,215,217,130, - 22,139,133,206,157, 59,215, 18, 29, 29,109,214,104, 52,212,102,243, 60,236,128, 97, 8,247,230,148, 31, 56,142,227, 10, 88,173, - 68,113,101, 19, 72,238,130, 5, 11,172,209,209,209, 22,173, 86, 75, 85, 42,149,194, 27,119, 14, 31, 62,156, 6, 4, 4, 88,117, - 58,157, 98,236,216,177,143, 52,139,208,198,131,157,242,165, 99,153, 6,149,175,175, 47,114,114,114, 28,110,141,136,136,144, 68, -150, 4, 9,238, 27, 27,123,159, 5,203,149,171, 5,171,160,200,160, 66,110, 82,114,106,168,127,100, 5,216,108, 28,120,206, 6, -206,198,193,198,217, 48,230,245,238,136, 91,156,223, 19,102, 23, 89,109, 71,143, 30,253, 35,224,121,219,157,181,107,215, 78, 30, - 61,122,180, 62, 41, 41,105,251,242,229,203, 3,251,245,235,135, 49, 99,198,224,243,207, 63, 7,171, 84,195, 47,188,140,227, 59, -156,141, 3,111,227,144,156,150, 1, 74,105,174, 59, 62,113, 12, 22,165, 96,245,225,229,192,243,226,187, 54, 48,178,252,153,233, - 59,182,109, 70,191,215, 71, 64,174,242, 11, 88, 56,119,166, 49,182, 94,196, 75, 19, 6, 13,242, 60,242,157,128, 57,119,226,254, -143,195,223, 25,219, 86, 20, 87,155, 86,126,121,241,203, 81,109, 87,107,149,172,227, 59,188,205, 6,134,145, 73, 99,176,158, 32, -130,131,131,105, 74, 74,202,173,204,204,204,202, 58,157, 14,105,105,105, 72, 79, 79, 71,102,102, 38,204,217, 25, 92, 16,159,105, - 32, 92, 58, 88,150, 69,242, 93, 14, 60,207, 39, 62, 35,214, 43,220,191,127,255, 82,249,242,229,215,126,248,225,135,175,140, 27, - 55, 78, 46, 8, 2, 46, 95,190, 12, 10, 80,185, 66, 9,134, 97, 32,151,179,200,202,202, 22,180, 62,254,247,173, 84,166,149, 43, -148, 96,100,138,162, 22, 28,189,211, 98, 64,254, 50, 13, 12,171,200, 17,103,246, 41, 20, 10, 28, 89, 63, 43,187,197,128,201,122, - 0, 80,168, 52, 25,237,218,181,187, 93,173, 90, 53,195,241,227,199,203,192,101, 22,161,155,252,201,117, 31, 48, 86,166,213,168, - 13,109,219,182,189, 35,114,222,218,185, 48,187,255,208,143, 8,145, 41, 13,157, 59,119,190, 29, 27, 27,107,144,201,100,184,176, -121,102,118,247, 1, 99,213, 36,127,130,174, 91,108,191, 74,223, 60,189,126,127,149,169, 83,167,218, 58,118,236,120, 87, 28, 15, -118,235,214,173,200, 78,157, 58,169,230,204,153, 99,235,212,169, 83,124,141, 26, 53,114, 25,134,193,137, 19, 39,162,139,178, 76, -137,208,104, 52,182, 55,222,120,227,206,217,179,103, 31,106, 22,161, 39,148, 42, 85, 10,130, 32,160,101,203,150, 48,153, 76,146, - 37, 75,130,132,255, 0,220, 10, 44,171, 32, 12,127,245,131, 89, 11, 9,136,143, 0, 90, 96,150, 14,205, 47, 9,200,251,239,191, -167, 3,160, 17, 69,214,187,239,190,155,225,233, 99, 78,226,170, 94,191,126,253, 48,126,252,120,124,241,197, 23,252,231,159,127, - 46,187,112,253,174,181,231,232,207, 51, 93,190, 3, 74,105, 46,207, 99,184, 59,190,140, 44,195, 39, 77, 59, 77,255,236, 94, 82, -222,129, 94,239,197, 21, 40,181, 50, 73,254, 98,134, 75, 22, 47, 49,200, 85,126,186, 94,175,244, 7,128,182, 11,231,206,252,113, - 10,150,121, 22, 89,148, 84, 29,254,238,216, 0, 81, 92,125, 57,103,234,217, 0,146,180, 96,208,199,231, 31, 24, 53,239,231,131, - 31,155,118,154,222, 62, 57,221, 48, 79, 74, 82, 79, 6, 22,139,101,215,252,249,243,203, 78,152, 48, 65,153,158,158,142,212,212, - 84,100,100,100, 56,142,220,220, 92,132,135,135, 99,219,182,109,214,236,236,236, 35,207,146,223,111,220,184,241,229,150, 45, 91, -176,119,239,222, 62,227,198,141,147,135,135,135, 19, 63,191, 68, 98,179, 90, 0, 80,154,146,146, 34,104,125,252,239, 7,135, 69, -223, 73, 72, 76,174,106,179, 90, 32,240,214, 66, 71,145,219,151,105,120,255,220,185,115,101,103,205,154,101,113,158,217,247,202, -216,133,243,235,214,173, 27,184, 96,193, 2, 75,231,206,157,111,139,131,210,189, 25,228,190,227, 58, 70,157, 59,119,166,186, 43, -103,139,183,102,125, 35,114, 58,207, 46,236,242,222,210,111, 42, 86,172, 24, 24, 27, 27,123,187, 40,222,152,152, 24, 99, 68, 68, -132,165, 74,149, 42,185,114,185, 60,223,114,101,179,229,197,196,196, 8, 97, 97, 97,150,106,213,170,229, 22,119, 48,190, 70,163, -161,162, 21,204, 29,138, 51,139, 80, 46, 3,215,175, 95, 63,199, 74,238,239, 87,172,120,191,127,255,254, 17,163, 71,143,198, 55, -223,124,131,131, 7, 15,166,187,190,211,188,121,115,236,219,183,239, 51, 0,159, 72,185, 91,130,132,103, 88, 96,125,247,221,170, -223,225, 52,102,201, 29,166, 76,153,162,178, 91,174,218,190,243,206, 59, 48, 26,141, 1, 15,180, 96, 9,105, 35,174,149,225, 78, - 92,205,156, 57,115, 53,165, 52, 26, 64, 19,142, 23,142,126,245,237,138,150, 30, 13, 75, 78,156,148, 48, 50,134, 33,185, 74, 57, -253,107,241, 87,223, 21, 88,161,219, 62,168,189, 50, 8, 78, 47,156, 59,211, 8,160,173,171,200,234,217,179,103,158, 43,167,136, -193, 67,222,118,136,171,133,115,103,238,140,173, 87,250,165, 9,131, 38,187, 21,101,147, 63,121, 91,199, 48,164,145,243, 24, 44, -119,156,143, 10,137,243,111, 78,149, 74,181,122,205,154, 53, 29,155, 54,109, 90,166, 86,173, 90, 76,122,122, 58,114,115,115,145, -155,155, 43, 90,185,112,225,194, 5,225,246,237,219,247, 84, 42,213,154,103,201,239,246,237,111,230, 71, 68, 68,236,154, 56,113, - 98,255,212,212,212, 78, 25, 25,153, 65,191, 44,159,130, 23,123, 13, 33,205, 59,246, 53, 88, 40,171,142,191,159, 84,101,207,175, - 63, 4,254,182,246, 75, 88, 45,150,183, 8, 89,114, 65, 92,166,193,141, 59,243,196,229, 24,170, 84,169, 98,112, 22, 40,165, 75, -151, 54, 69, 70, 70,154, 99, 99, 99, 29,215,221,205,206,115,231,247,226,114,218,199,119, 25, 60,133,167, 40,214, 92,151,127,208, -106,181, 16, 69, 87,113,220,233, 60,123,210,109, 65,233, 97, 22,161, 51,231,242,147, 84,238,124,111, 57, 33,178, 85,171, 86,181, - 89,181,106, 85, 61, 0,127, 1,216, 1,192,102,127,207, 49, 24,158, 82,250, 41,128, 79,165,252, 46,113,254, 87, 57,255, 19, 2, -203, 19,196, 1,237, 0,152,119,223,125, 55,195,104, 52, 6,244,239,223,191,200,119, 18, 19, 19,191, 89,177, 98, 69, 1,113,213, -163, 71,143,215, 55,108,216,176, 43, 57, 57,249,161, 28, 31,160,215, 76,217,251,243, 7, 1,205, 59, 79,127, 7,192,231,238, 45, - 81, 16, 98,235, 69,188,180,112,238,204, 31, 93, 68,214, 74, 0, 61,220,165, 27, 0,104,247, 98, 55,252,240,221, 2,113,236,150, -230,236,241,123,191,245, 57, 57,201,237,236, 67,127, 31,213, 36,187, 59, 70, 67, 26,131,245, 68, 80,181,106, 85,254,208,161, 67, -163,135, 12, 25, 50,187,117,235,214, 81,221,186,117, 83,148, 42, 85, 10, 42,149, 10,215,175, 95,199,254,253,251,173, 55,110,220, -184,151,151,151, 55,186, 86,173, 90,252,179, 24, 6,247,239,223,191,100, 95, 68,116,148,216,173,164, 82,107, 20,125, 7,190, 19, -237,152, 69,184,246, 75,152, 77, 70, 0, 96,189, 89,166,129,101, 89,197,169, 83,167,202,136, 86, 42,171,213,170, 18,175, 31, 63, -126,188,140,184, 54,150,201,100,242,122, 22,225,227,226, 60,115,230, 76,180, 56,219, 81,156, 45,200,178,172,226,196,137, 19,209, - 34,167,217,108,246,106, 22,161, 82,169, 84,156, 58,117, 42,154,231,249, 18,155, 69,232, 34,136,183,219, 15,177,114, 18,197, 21, -177,119, 11, 74,221,131, 18, 36, 72, 2, 43,127, 32, 56,165,180,105, 49,148, 46, 91,182,108,217,118,175,188,242, 74, 1,113,213, -179,103, 79,126,211,166, 77,123, 34, 34, 34,146, 24,134,185, 84, 92,119, 56,198, 96,229, 47,168, 94, 0, 12,195,156,110, 82,191, - 26, 24,134, 57, 61, 97,208, 32,243, 20, 44, 43, 32,178, 54,255,184,174,125, 97,229, 33, 0, 4,133, 69,255,159,189,179, 14,143, -226,106,163,248,185,235, 30,119, 66, 66, 32, 68, 72,112,119,105,208, 98,165,184,182, 20,107, 11, 45, 20,135, 98,197,138, 21, 47, - 20, 40, 80, 28, 74,113,119,183,160, 9, 9, 16,226,238,182, 46,115,191, 63, 72,248, 66, 26,217, 13,180,165,116,126,207, 51,207, -238,222,153, 57,115,199,207,190,215, 48,240,179,177, 24,248,217, 88, 91, 0,205,129,210, 91, 31,150,149, 15,150,191,142,102,205, -154, 37,133,133,133, 13, 60,123,246,236,128, 43, 87,174, 4,169, 84,170, 42,132, 16, 72, 36,146,104,157, 78,119, 78, 36, 18,237, -254, 80,205, 85,105,232,245,122,227,212,185,203,182,115,185,124, 19,195,232,137, 94,175,255,204,146,251,124,234,212,169, 28,148, - 80,183,106,236,216,177, 37,166,255, 83,154,211,167, 79, 47,177,213,223,216,177, 99,203,108, 13, 88, 26,223,125,247,221, 59,107, - 69,104,166,233, 98,141, 20, 11, 11,107,176,254, 12,135,195,121, 84, 66,107, 65, 2,128,150,212, 66,143, 82,106,228,114,185,115, -109,108,108, 70, 41,149,202, 83,189,122,245, 26,223,187,119,111, 19,240,170,226,123, 69, 51,159,149,163,156,221,166,219,143, 19, -178,243,181,107,138,207, 43, 30,105, 42, 52, 89,235, 86, 45, 89,255,199,129, 61,189,147, 19,227,215,151,182,111,165, 25,169,210, - 90, 31,230,228,170,231,182,233,246,227,183, 89,185,106,182, 14,214, 63, 16,201, 2,176, 3,192,142,226,131, 61,255, 23,160,148, -106, 9, 33,147, 8, 33,133, 17,220, 73,145, 23, 87,173,255,255,159,155, 53,143,138,206, 43, 35,122,149,100,206,192,205, 37,173, - 87,214,188,191, 64, 51,165,140,129,155,203, 34,197, 66,189, 20, 0, 16,240,185,169,165, 13,234, 44,224,115, 83,223,209, 57, 36, - 5, 77,211,231,178,119, 52, 11,203, 7,110,176, 10,205, 79,105,148,214,207, 85, 89,152, 76,166, 31, 1,252,248, 46, 51,255,228, -121,222, 47, 0,126, 49,119,249,130, 58, 87, 67, 11,166,146,243,153, 17, 98,241,190,245,238,221,123, 3,128, 13,236,229,244,247, -176,127,255,126, 19,123, 20,222,120, 65,175, 39,132,252, 90,104,184,204,157, 87,108,185, 35,127, 65,190,254, 10,205,211,127,167, -222,177, 48,163,243,223,116, 14,217,136, 22, 11,203,127,193, 96,177,176,176,252,235, 76,150,182, 34,243, 88, 88, 88, 88, 88,254, - 26, 8,128,160, 82, 30,202,102,183, 14, 32,132, 4, 85,224,133,112,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150, -102,121,218, 69,215, 39,132,140,164,148,254,130,127, 35,244, 85, 95, 83,127,201, 4, 32,136,213,100, 53, 89, 77, 86,147,213,100, - 53, 89, 77, 86,179,130,219, 25,249,119,108,231,175,152, 56, 96, 97, 97, 97, 97, 97, 97, 97, 97,121,167,176,117,176,204,132, 84, -238,249, 61, 64,167, 21,196, 44,151,208,216, 67,115,216,163, 82,193, 99, 73,136, 3,128,174, 10,177,160,123,128,141,160,233,147, - 12,205, 13,165,222,116, 20,192, 97, 74,105, 22,123,132, 88, 88,254,134,251,208, 54,160, 50, 8,249, 28,160,255,111, 70,201,208, - 80,154,253,116,235, 27,203,217,212,248, 12, 28, 18, 80, 36, 73, 13,138, 77, 52, 43, 52,174,148,251,187,176,194,190, 77, 68, 68, -132,167,183,183,119, 12,128,236, 98,139,253,105, 30,165,148,150,241,204, 32, 14, 85,235, 13,145,138,165, 95,234,116, 58, 47,185, - 66,145,154,153,145,182, 33, 51,246,241,186, 34,139, 89,221,190,125,219,181,113,227,198,137, 0,242,202,211,100, 97,121,239, 13, - 22,241,249,212, 11, 70,206, 80, 80, 12, 2,193, 67, 26,185,255,211, 10,233,120,247,170, 4,134,215, 8, 64, 61,128,214,147, 73, -196,117,213, 58,125, 42, 67,233, 16, 26,177,247,129,197,122, 85,251, 28, 7,208,165,148,185,115,105,228, 62, 11, 13, 18,157,126, -247,202, 65,145,141,148,192,187,254, 39,147, 81,164,199,229,247,204,188, 72, 0, 12, 35,132,124, 36,149, 74,125, 84, 42, 85, 52, -165,244, 49,128,245,148,210,196, 10,106,114, 0, 12,151,203,100,157, 60, 21,194,122,177,233, 57, 9,121, 6,211, 85, 0, 75, 45, - 53, 68,132, 16,161,167,173,236,242,202,254,109,252,155, 6, 84, 7, 19,122, 5, 26,157,190,251,165,248,252,238,179,111, 38, 78, - 32,132,212,163,148,234,204,212,114, 5,192,163,148,198, 21,252,150, 1, 8, 4, 80, 21, 64, 36,128, 16, 74,169,242, 45,143,231, -191, 66,211,221,221,221,141, 97,152, 47,156,157,157, 63, 78, 73, 73, 57,206,225,112, 54,199,199,199, 39,254,195,151,227,198,194, -250, 19,230,126, 2, 24,101,201, 6, 36, 18, 73,138, 70,163,113, 2, 0,177, 88,156,170, 86,171,255,178, 86,127,127,231,182,254, -158,135, 5, 70,156,185, 22,210,169,104, 82,135, 22, 1,127, 94,142, 67, 2,206, 92, 11,109,245,230,114,129,166,146,158,129, 5, -189,166, 98,238,220,185,100,222,188,121,159, 85,171, 86,173, 58,135,195,121, 54,107,214,172, 55,186,176, 41, 62,111,246,236,217, -255,239,113,181, 4, 77,119,223,102,135,251,245,239,211,230,171,145,195,228,149, 28,229, 72, 74, 87,218,255,188,101,199,178, 29, - 59,118,117,253,162, 95,251, 78, 0,240,195, 15, 63,244,172, 92,185,114, 21, 46,151, 27,245,253,247,223,255, 86,150, 38, 11,203, -123,107,176, 72, 64, 31, 25, 52,180, 55, 64,134,181,110, 90,191,197,168, 33,221, 8,229,138, 49, 96,196, 20,163,197, 90, 85, 62, - 19,129,171,158, 95, 43, 48, 96,124,159,110, 65,156, 6,129, 85,224,234,104, 13,112,248,216,120, 34,218,126,205,146,239,215, 3, -104, 92,129,108,118,121,121,115, 55,146,178, 77, 32, 4, 32, 4,224, 16, 32, 95,195,160, 67,207,161,179, 45, 55, 72,132, 99, 35, - 37, 24,191, 91, 3,128,112,223, 83,115, 85,207,209,209,113,221,184,113,227,108,107,213,170,229, 42, 22,139,165,106,181,186,122, - 68, 68,132,215,204,153, 51,219, 19, 66, 22, 83, 74, 15, 90,168,233,225,237,238,182,111,205,248,225,141,106, 87,245, 4, 95,151, - 15, 70,171,172,252, 60,226, 69,211,209,235,247,143, 32,132,244,183,112,184,132, 25, 27,199, 14,241,175,169, 0,244, 33,215,193, -231,114, 33,181,182, 69,123, 30, 23, 92,130, 26, 67, 79, 71, 79,135, 25,227,177, 21,244, 96, 62,189,224,249,187,139,203,229,158, - 13, 10, 10,242,250,226,139, 47, 72,253,250,245, 17, 28, 28, 92,117,247,238,221, 65, 60, 30, 47,202,100, 50, 61, 6,240,140, 82, -106, 48,115,159,249, 0,124,185, 92,110,173,247, 89,211,205,205, 77,162,211,233,134,186,187,187,143,236,222,189,123,173,110,221, -186, 17, 95, 95, 95,132,135,135,215, 63,121,242,228,236, 58,117,234, 60,142,143,143,255, 69, 40, 20,110, 79, 76, 76, 84,155,163, -217,175, 38, 9,223,251,132,250, 85,116,126,177,125, 30, 9,192,173, 32,160, 49,215,140,207, 68, 0,115, 41,165, 73,230, 94, 76, - 26,141,198,169,240,253, 73, 8,113,250, 43,239, 47, 75,182, 69, 8,121, 74, 8,177, 43,248,142,178, 62, 57, 28, 14,140, 70,163, -210,104, 52, 86, 43, 71,211, 23,176,168, 90, 7,165,148,150,213,129,179, 4, 0, 58, 52, 15,200, 4, 65,104, 97, 4,235, 79, 75, - 49, 52,244,181,241,162, 8, 56,115, 61,212,238,141,168, 87, 49,230,206,157, 75,102,207,158,141, 57,115,230,116, 3,208,146, 97, -152,171,254,254,254,171,223,144,100,152,215,243,102,207,158,189,106,238,220,185, 4,111,140,122,251,127,236,170,212, 25,252,201, - 39, 61,218, 44,152, 49, 86,158,144,161,199,195, 40, 53,236,228, 2,204,158, 52, 70,168,213, 26,154,174,255,109,199,200,181,139, -167,108, 50,153, 76,237, 0, 52, 48,153, 76,247, 0,252, 86,150, 38, 11,203,123,101,176, 8, 33, 4,213, 62,109, 5, 19,134,121, - 86,118,238, 61,238,139,190,146, 64,127,111,104, 32, 71,116,186, 9, 39,142,157, 4,128,189,150, 69,153,250, 53,224, 9,176,125, -201,156, 73,126, 45, 27, 5,226, 73,130, 1,247, 18, 76, 80, 69, 25,192,229, 24, 96, 98, 40, 64,161,169,232,206,197,103, 25,113, -237,153, 14, 28, 2,112, 57, 0,135, 67,192,173,104,173, 51,147,238,249, 15, 91,131, 3,211, 83, 24,192,164,123,254, 30,154,171, -118, 62, 62, 62, 43,231,205,155,231,146,146,146, 98,119,239,222, 61,136, 68, 34,216,218,218,242,220,220,220,252, 86,174, 92,153, - 51,118,236,216, 73,132,144, 7,148,210,104, 51, 53,253,187, 52,168,117,227,151, 37, 63, 88, 27,110,159, 68,246,158,223,193,229, - 80, 8,100,114,120, 73, 36, 56,249,137,183, 93,239, 99, 81, 7, 9, 33,254,148,210, 4,115, 52,189, 93,236, 59,212,242,247, 71, -214, 31,107,241, 48, 75,131,147,137,106,124,222,190, 9,106,218, 73,208,210,104,130,139,140,223,174, 60,131, 69, 8,177, 5, 48, - 69,167,211,113, 4, 2, 1, 17,139,197,131, 23, 44, 88,160, 31, 48, 96, 64,124,225, 50, 45, 91,182, 68,203,150, 45, 73, 94, 94, - 94,213,139, 23, 47, 86,221,177, 99,135,145, 16,242,148, 82,122,184,244, 8,133, 52, 86,163, 81, 87, 22, 75, 36,170,159,215,175, - 95,222,170, 85, 43, 70, 36,250,255,232, 45, 21,209, 4, 0, 27, 27,155, 77, 62, 62, 62,100,218,180,105,137,239, 74,211,203,203, -235, 76,203,150, 45,219,118,232,208,129,215,188,121,115,184,185,185,189,158,231,224,224,128,150, 45, 91,146,184,184,184,218, 87, -175, 94, 93,127,230,204,153,213, 94, 94, 94, 23,163,162,162, 58,148,251, 70, 46,103, 12,210,242,230, 23,123,187,255, 82, 48, 28, -140,185,134,233,151, 18, 58, 48,254,119, 6,135, 8,145,111,220,184,209,169,112,204, 68,131,193, 0,147,201,244,250,179,112, 98, - 24, 6, 38,147, 9, 11, 22, 44, 48,153,121, 76,149, 40,232,212,185,200,196,148,244, 41, 20, 10, 29,204,140,100,133,186,138,178, -107,200,100, 50, 79, 0, 93,124,124,124,166, 20,157, 93,221,241,213,167, 82,169,140, 73,210,218,132, 2,104, 85,214,229, 62,111, -222,188,161,115,230,204,233,129,255,143, 41, 89,171, 79,159, 62, 23,139, 45, 87,171,224, 83, 73, 8,185,196,225,112,142, 2,216, - 10,224, 79, 17,113,169, 84, 62,106,220,151, 95,200,227,211,245,152,127, 48, 29, 91,175,228, 98,104, 75, 5,198,119,182,198,192, - 1,253,100,251,127, 63, 48, 10,192,166, 34,171,132,251,251,251,147,176,176, 48,214, 92,125, 88, 52, 4,224, 88,228,183, 14, 64, -225,208, 86,233, 5,247,133,125,177,244,162,203, 21,126,166, 21,164, 59, 22,172, 71,139,232,166, 1,184,251, 78, 13, 86,225, 24, - 88,101,142,133,229,213,251,196,240, 1,221, 59,125,252, 81, 51,112,196,182,120,158, 10,220,140,165,224,113, 12,224,128,226,246, -245,139, 20, 60,102,123,177,135, 65,169,145, 13,226,213,251,187, 90, 53, 3,127,220,188,228, 27,238,211, 84, 30,182, 94, 85, 65, -175,201, 71, 90,114, 44, 82, 19, 99,144, 20, 31,137,132,216,200,199, 0,153,109,174,230,159, 31, 70,128,137, 41,248,207,199, 20, -188, 30, 64, 74,122,104,149,175,105, 80,134, 85,243,171, 25,152, 37, 52, 1, 6,101,152, 25, 15,194,119, 62, 8,102,105,154,132, -144,246,222,222,222, 75,103,204,152,225, 30, 18, 18, 98,165, 84, 42,149, 39, 79,158,188, 28, 19, 19,227,236,226,226, 18, 55,102, -204,152,102,149, 42, 85,114,234,217,179,167,116,223,190,125, 51, 0,124, 97,134,102, 96,247, 38,117,111,110, 89,253,147, 44, 99, -255, 26,232, 34, 30,225, 68,146, 18,215, 83, 84,180,170,181,136,124, 93,219, 17,114, 17, 15, 63, 52,119,147,119,249, 35,226, 71, - 0, 3,205,217,247,128,202,174,213, 12,106, 21, 52,106, 3,182,135,103,170,207, 38, 40,157,136, 77,116,218,234,222, 77,196,220, -180, 68,120, 42,132,213, 43,114, 60,197,226,146, 71, 57,177,181,181, 69,235,214,173,225,239,239,207,107,213,170, 85, 45, 0,135, - 75,211,212,235,117,174, 12, 67,161, 80, 40, 36,246,246,246,182, 10,133, 34, 67,175,215,191,149, 38, 0,216,217,217,125,218,186, -117,107,222,238,221,187,211,163,162,162,110, 15, 24, 48, 32,210,202,202,234,141,104,175, 76, 38, 67,245,234,213,241,253,247,223, -243, 58,117,234, 84,174,166,179,179,115,251, 29, 59,118,128, 16,242,250,101, 93, 28, 79, 79, 79,184,184,184,160, 75,151, 46,188, - 79, 63,253,180,125, 89,199,179, 95, 77, 18, 94,104,158,250,214, 36,101,190,152,250,214, 36,148, 0,207,138, 71,178,138,107, 22, - 68,176,230,190,105, 98, 75, 47,102, 43,105,121, 51,206,123,106, 97, 52, 73, 44, 22,167,190,205,125, 84, 64,169,197,154, 34,145, -232,117,212,169,248,182, 74,210,228,112, 56,152, 57,115, 38, 8, 33,224,243,249, 16, 8, 4, 37,126,182,105,211,198,210,124,198, - 17, 66, 56, 2,129, 96, 10,143,199,251, 66,171,213,186,139,197,226, 68,147,201,180, 77,171,213, 46, 40,136,128,218,148,116,237, -150,166, 41,147,201, 60,159, 63,127,238, 83,218, 65,209,106,181,168, 85,171, 22,160,197,211,178, 52, 35, 34, 34, 60,171, 85,171, -230, 11,160,112, 40,181, 43,148,210, 86, 69,126, 23,229, 10,165,180,115,193,247,103, 47, 95,190,244, 44, 52, 88, 69, 53, 13,122, -189,151,187,147, 21, 30, 70,171,177,245, 74, 46,206,207,112,195, 71, 11, 18,209,171, 30, 15,254, 30,114, 24,245, 6,223, 62,125, -250,108,199,171,235,247, 46,128,158,125,250,244,241,227,114,185, 23, 0, 28, 2,144,243,119, 63,147, 89,205, 10,255, 49, 41,203, -139, 56, 18, 66,142, 21,217,126,215,194,223, 83,167, 78,157,190,104,209,162, 16, 66,200,177,162,233, 69,151, 43,250, 89,176,173, - 99,148,210,174,211,166, 77, 11, 92,188,120,241,194,194,101,255,145, 8, 22, 0,171, 52,141, 12, 87, 99,173,192,227,154,192,227, - 16,240,184, 0, 40, 65, 76,116, 4,242,114,179,175,209,200,223,163,204,139, 92,245,105, 94,167,110,173, 37,187, 86, 78,230,252, -122, 85,133,108,165, 6, 97, 15, 46,225,238,165, 67,201, 38,163,233, 16, 8,189, 7,112,130, 17,201,132, 83, 90,241, 94,187, 95, - 25,172, 2, 83,245,134,201,250,112, 32,132,116,246,243,243, 91, 52,115,230, 76,207, 7, 15, 30, 40,114,115,115,211,118,238,220, - 25,174,213,106, 31, 0, 88, 21, 27, 27,219,122,213,170, 85,210,101,203,150,117,168, 85,171,150,239,254,253,251, 85,102,104,214, -158, 52,108,224,205, 47,198,125, 43,126,186,111, 29,132, 79,131, 49,243, 81,186,233,124,146,106, 6,128,149,136,203,111,158,166, - 49,158,253,169,117,101, 78, 21,133, 0,222, 54,194, 54,230,230, 87, 44, 20,241, 40, 79, 12,157,206,136, 60, 29,163,163,148, 42, -123, 55,242,215, 83,153,131, 24, 0,120, 28,194, 51,227,198,206, 34,132,252, 40, 20, 10,103, 18, 66,104,195,134, 13, 31,214,172, - 89, 51,223,214,214, 22,106,181, 26, 90,173, 22, 2,129, 0,106,181, 26, 49, 49, 49,184,125,251, 54,108,109,109, 45, 58,174,249, -249,249, 80, 40, 20, 96, 24,230,173, 53, 77, 38, 19,217,176, 97,131, 44, 36, 36, 68,118,224,192, 1,231,241,227,199,103,212,168, - 81,227, 94,191,126,253, 94, 56, 57, 57,105, 31, 61,122,132, 27, 55,110, 32, 43, 43, 11, 77,154, 52, 49, 75, 83,167,211,129,199, -227, 65,173, 86, 67, 36, 18,129,199,227,193,104, 52,130, 97,152,215,166, 43, 63, 63, 31,153,153,153, 16, 8, 4,208,233,202,174, -214, 86,104,150,250,214, 36,116,223,169, 27,169, 48, 49,128, 62,215, 0,109,206,171, 73,151, 99,128, 38,219,208,119,194,242,218, -251,158,152,215,235,120, 97, 4,171, 40,101, 21,179,149,180,124,121,188,235,122, 80,101, 21,107,102,103,103, 75,108,108,108,166, -152, 19,145, 35,132,128,203,229, 66, 32, 16,128, 16,130, 86,173, 90, 97,248,240,225,168, 87,175, 30, 34, 34, 34,176,103,207, 30, -220,189,123, 23,124, 62,255,245,242,230,210,166, 77, 27,174, 88, 44,190,209,189,123,247,192, 25, 51,102,136,171, 84,169,130,167, - 79,159,122, 44, 94,188,120,202,185,115,231,122, 16, 66, 26, 80, 74,153,114,133, 10,139,254, 94, 21, 11,118,209,106,181,120,250, -244,169, 37,235,252, 57, 66,237,237, 29,195,225,112, 94, 48, 12,115, 21, 64, 45, 74,105, 43, 66,200, 73, 0,178, 98,139, 42, 41, -165,157, 9, 33,185, 0, 30,115, 56,156,103, 12,195,196,148, 84, 93, 74,161, 80,164,197,167,230, 58,219,203,197, 24,210, 66,142, -143, 22, 36,162,119, 3, 17, 68, 2,130,240,168,100,120, 87,171, 66, 30, 94, 59,220,160,192, 92, 53, 76, 74, 74, 2,128, 6, 0, -162,226,226,226, 92, 11, 13, 22,203,135, 65,113, 19, 84,104,156, 22, 45, 90,212,181, 36, 83, 85,194,189,249, 70,250,226,197,139, - 23, 22,249,253, 78, 27, 89,241,138, 58,199,178,111, 44,244, 58,118,112,247,173,143,244,196, 51,176,126,139, 34,209, 32,138,224, -219, 55, 0,208,109,102, 61,192,220,186, 73, 56, 82,217,182, 13, 11,199,114, 54, 94, 82, 33, 46, 49, 21, 55, 78,108, 67, 90, 82, -244, 86,128,142,167,145,251,115,223,250, 33, 89,181, 79,160,147,131, 61, 52,122, 10,134, 2,248,147,201,250, 96,204, 85, 55, 95, - 95,223,121, 55,111,222,244,212,104, 52,138,235,215,175,103,239,216,177,227,133, 78,167,219, 76, 41,221, 89,176,204,145,244,244, -244, 31, 40,165, 80, 40, 20, 60, 62,159, 47, 41,171,226, 39, 33,164,222,164, 47,134, 94,251,113,195, 22,241,139, 39, 15,177,234, -192, 9,100,171, 84,166, 75,169,234,158,148,210,194,127, 5, 23,188,109, 68, 9, 20,180, 50,159, 67,224, 42,227,187, 16, 66,196, -148,210,114,139,115, 93, 43,123,114, 12, 30, 94,184,106,212,160,146,189, 72, 8, 0, 85,125, 3,184, 15,212, 6, 92,127,244, 20, - 14,114, 43,129,153, 55,217, 44, 66,136,243,246,237,219, 57, 6,131, 33, 63, 34, 34, 2, 46, 46, 46,112,118,118,134,181,181, 53, -194,194,194,112,254,252,121,132,135,135,131, 97, 24,212,169, 83,199,162, 99,155,145,145,129, 71,143, 30,161, 75,151,143,199,167, -165,165, 90,217,218,217, 43,175, 93,189,178,172, 34,154, 12,195, 16, 0, 8, 12, 12, 68, 96, 96,160, 56, 33, 33,193,253,216,177, - 99, 78,243,231,207,143,245,244,244,220,165, 86,171,223,136, 20,152,107,176, 10, 12,203,107,243, 39, 22,139, 33, 16, 8,144,155, -155,139,148,148, 20,228,229,229,189, 42,179,177,177, 41,215, 96,189,233, 8, 25, 96, 71,139,123,127, 74,175, 57,204,201,194,235, -243, 79, 17,169,119,185,252, 95,244,240, 46,181, 88,147, 16, 50, 8,192, 20, 51,247, 5, 70,163, 17, 2,129, 0,141, 27, 55,198, -154, 53,107,112,247,238, 93, 28, 58,116, 8, 30, 30, 30, 24, 54,108, 24, 56, 28, 14, 66, 66, 66, 44,205, 34,115,243,230,205, 41, - 61,123,246, 12,220,190,125,187, 56, 38, 38, 6,225,225,225,176,177,177,193,154, 53,107, 68, 35, 71,142,244,190,120,241,226, 44, - 0, 75,203,221,215, 34,173, 5,221,220,220,250,214,170, 85,235, 79,203,184,184,184, 88,159, 62,125,218,169,208,120, 21,111, 97, - 88, 2,217,179,102,205,250,201,223,223,127,101, 65,177, 96, 75, 0, 50, 74,105,155, 3, 7, 14, 16, 0,232,221,187, 55, 37,132, - 92, 42, 88,254,241,254,253,251,219,134,133,133,209, 57,115,230,148,248, 76, 74, 75, 77,218,240,211,154,141, 63,253, 56,119,146, -112, 66, 23,107,244,110,192,135, 88, 64, 96, 37,229, 99,193,234, 77,134,251,183,175, 60,114,117,117, 61, 6,160,103, 82, 82, 18, - 92, 93, 93,243, 1, 60,227,114,185, 81, 38,147, 41,145,173,227,254,175,123,175,149,212,208, 97,100,225, 61, 89,154,113,178,196, -160, 21,141,112, 21, 50,109,218,180,192, 69,139, 22,221,121,151,251,194, 41,178,209,178,255, 66,241, 56,174, 46,206, 14,118, 83, -135, 53, 7,195, 0, 70, 19, 96, 52, 81, 40, 85,106, 60,125,114, 87, 5, 49, 57, 96,214, 22, 69,194, 37,243,103,124, 91,245, 97, - 60, 7,137, 89,122, 92, 62,188,145,166, 37, 69,127, 74, 35,247,125,254,174,204,149,139,147,195,165,221, 27,127,192,221, 72, 29, - 76,204, 43,127,197, 48,244,245,247, 15,228, 34,172,238,224,224,176,236,214,173, 91, 85, 68, 34,145,226,249,243,231,166,253,251, -247, 39,234,116,186,245,133,230,170,128, 65,245,235,215, 55,200,100, 50,228,231,231,107,245,122,125,126, 25,230,202,189, 77,189, -218, 87,126,220,176, 69,172,209,233,144,163,214,130,107,239, 84,220, 92,129, 16,210,172,173, 79,165, 74, 68,172, 0, 5, 16,157, -171, 79, 52,199, 92, 1,128,220,218,134,227,222,160, 13, 26,124,179, 6,185, 68, 65, 1,192,222,181, 18,167,237,151, 11,208,105, -213,101, 40, 57, 10, 75, 44,112,226,192,129, 3,227, 3, 2, 2,114,252,253,253,115, 50, 50, 50, 16, 26, 26,138,172,172, 44,172, - 90,181, 10, 79,159, 62, 5,195,188,146, 43,169,184,196, 12, 99,132,172,172, 76, 57,165, 20, 89,153, 25,178, 25, 51,102, 88, 87, - 68,211,100, 50,189,113,111, 85,170, 84, 9, 99,198,140, 17,168, 84, 42,155,216,216, 88,171,162,243,204,213,212,233,116,133,157, -240,129, 82, 10,157, 78,135,156,156, 28,232,116, 58,188,120,241,226,181,185, 42,216,190,101, 6, 75,159, 91,114, 37,123,117,134, -193,194, 7,217,235,222,151, 37, 18, 73, 74,225,131, 83, 44, 22,131, 16, 82, 82, 49,219, 59,233,173,185,112, 91,132, 16, 42,145, - 72, 82, 42, 96, 10,203,221, 31, 51,207, 59, 4, 2, 1,134, 15, 31,142, 59,119,238, 32, 34, 34, 2, 92, 46, 23, 74,165, 18, 42, -149, 10,237,219,183,135, 80, 40,180, 52,130, 69, 5, 2,193,160,233,211,167,139,163,162,162,144,158,158, 94, 88, 73, 30, 38,147, - 9,227,199,143,151,136, 68,162, 65,150,134,234, 19, 19, 19, 59, 62,127,254,220,183,248,148,156,156,156, 83,180,206, 96, 69, 57, -112,224, 0,233,221,187, 55,237,221,187, 55, 45, 52, 90,230,146, 29, 31,186,225,208,145, 99,103,191,251,126, 73,190, 74,153,135, -106,110, 18,228,231,229, 96,193,162, 31, 13, 55,111, 94,189, 52,101,252,232,166,251,247,239, 95, 12,224, 89,193, 42,207,246,239, -223, 63,244,251,239,191,255, 13, 5,221, 53,176,252,171, 34, 84,164,172,123,239, 93, 20,227,149,164, 81, 80, 76, 40,249, 75, 34, - 88,101, 62,116,188,251,213,117,118,176,191,184,125,237, 92,249,177, 39, 64,124, 92, 52,210,146, 98,208,160,105, 27, 60,125,242, - 16,140,193,116,144, 62,223, 95,110, 51,115,226,213,199,199,191, 70,192,151,173,155,214,196,146, 99,249,120, 30,124, 26,217,105, - 73,107,105,212,190,131,239, 98,103, 72,213, 62,129,206,142, 14,151,126, 91, 55,207,238,100, 40, 7,113,113,209, 56,252,219, 74, - 24,244,127,122,247,159,176,248,161,205,232,132,249,217, 41,208,229,153, 32,230,168,196,239,193, 69,248,194,209,209,113,251, 79, - 63,253, 52,186,105,211,166,210, 1, 3, 6, 60,207,202,202,154, 79, 41,221, 87,228,101,209,206,215,215,119,226,218,181,107,189, -227,226,226,112,254,252,249,231, 0,238,149,161, 25,207,229,114,215,159,255,109,211, 36, 73, 85, 63,172,154,254,157,241,192,221, -208,238,148,210,147, 69, 52,253,131,106,249, 28,155, 63,241, 43, 14,115,255, 20, 30,197,164, 32, 50, 71,123,222,220,124, 71,100, - 43, 13,124,145, 4,114,151, 42,120,158,111, 18,240,120,188, 59, 95,124, 49, 92,192,225,242,192,225, 9, 16,154,165,177,228, 37, - 46,191,115,231, 14,135,203,229,190, 97,204,139, 70,132, 44,141, 12, 89,130,185,154,197, 13, 86, 33, 70,163,145, 84, 84, 83,171, -213,162, 36,159, 92, 82, 93, 44,134, 97, 44,219,127, 93, 78,201, 46, 79, 99,153,193, 42, 26,145, 42, 90, 52, 88, 88, 95, 78,163, -209, 56, 73, 36,146,148,194, 98,190,119, 21,193,122,155,150,133,101, 21, 83, 90,146, 63, 14,135, 3,134, 97, 32, 16, 8, 80,167, - 78, 29, 28, 59,118, 12,118,118,118,176,178,178,130,149,149, 21, 36, 18, 9,236,237,237, 95, 27, 44, 14,199,236,214, 55, 84,171, -213,122,120,120,120,224,197,139, 23, 16,139,197,175, 39,145, 72,132,192,192, 64, 40,149,202, 74,248,160, 98,245,192,136,126, 65, - 61,214,237,248, 99,200,177, 99,199,191,212,107, 53, 53,253,252,124,233,189,155, 23, 31, 77, 25, 63,186, 19,107, 73,254,115, 17, -174, 99, 69, 77, 18, 33,228,216,212,169, 83,167, 87, 84,111,234,212,169,211, 75,138,104,189, 51,131, 85,232, 24, 75,114,142,133, -230,106,235,154, 57, 86,127, 60, 0,226,227,163,112,118,223,234, 60,131, 94,151,197, 48, 6,207,200,240,135, 0, 7,219,204,139, -151,209, 70, 61,186,180, 37,103, 67,116,200,205, 78,195,179,123,167,163,161, 22, 78,123,151,230,106,251,186,185,118, 71,159, 16, -196,197, 69,227,228,158,149, 57, 6,163,190, 29,141,220,255,224,109,180, 7, 11,133, 61,250,213,176,233, 58,188, 69, 34, 76, 45, - 77, 24,244, 52,172,179, 91, 75,210, 35,241,106,217, 45,189,254,106,210,210,210, 22,200,229,114,206,210,165, 75, 63,215,104, 52, -115, 40,165, 7,138, 92,132,237,171, 85,171,182,100,195,134, 13,238,177,177,177,194,107,215,174,101, 94,186,116,137, 2, 88, 84, -142, 25,152, 76, 8,225,214,171, 82,105,236,253,232,132,238,148,210, 83, 69, 52, 3,187,214, 15,184,190,101,209, 44,133,225,250, - 1,228, 39,197, 97,218,245,248, 92, 0,211,204,188, 49,236, 28, 28, 28,200,224,193,131,153,188,188, 60, 8,132, 66,198, 96, 48, -112,155, 53,107,102,250,246,219,111, 57,201,201,201,200,205,203,231, 17, 66,236, 40,165,153,229,104,205, 3, 48,190, 89,179,102, -164,113,227,198,183, 87,174, 92,121,166, 44,147, 82,145, 8, 86,185,129, 30, 51, 53, 25,134, 41,241,237,105, 48, 24, 72, 69, 53, -139, 70,176,202, 51, 88, 22, 71,176,180,165, 69,176,210, 44,142, 96,149,100, 86,138,154,195,162, 6,168, 34,117,176,254,130,135, -119,169, 38,202,146,252, 21,214,131, 19, 8, 4,120,248,240, 33, 42, 87,174, 12,189, 94, 15,133, 66, 1,133, 66, 1,185, 92,142, -188,188, 60,240,249,124, 88,184,207,140, 88, 44,142, 13, 13, 13,245,117,116,116,132,201,100,122,195,100, 61,127,254, 28, 50,153, - 44,193,210, 8,150,155,155,219,233,130, 86,132,111,224,226,226, 98,253, 46,142,107,209,200, 85,239,222,189, 43, 84,142,176,110, -209,164, 29, 0,118,244,233,211,103,251,227,155,199, 27,184,186,186, 30,247,247,247, 39, 0,192,182, 24,252,176,162, 87,165,148, -168,165, 21,139, 60,233,138,252, 78, 3, 64, 10,126,167, 21, 49, 96, 69,191,235, 74, 72,203, 88,180,104,209,197, 34,245,183,210, -254,182, 8, 22,241,238, 87,215,201,222,238,226,230, 85,115,172,246, 5, 3, 9,113, 81,184,124,112, 77,142,209,164,111, 7,134, - 38,221, 60,119,240, 0, 8, 84,136, 60,112, 25,216,103,198,163, 1,245,234,213,240,196,161, 16, 3,210,226,159,131, 82,102, 43, - 77,249, 77,245,214, 15,197, 2,115,181,117,205, 28,187, 63, 30, 18,196,199, 69,225,236,190,213, 57, 70,147,190, 93, 69, 58, 41, - 45,228, 11, 66,108, 57, 10,233,207, 67, 58, 54,234,227, 89,181, 18, 24,106, 0, 35,160,232, 53,217,129,247,236,190,234,144, 71, - 7,238, 62, 38,159,249, 50,254,230, 63,215,251,120,126,126,254, 15,132,144, 63, 40,165, 79,139, 60,220, 59,123,123,123, 47,252, -249,231,159,171, 36, 36, 36, 40,238,223,191,159,251,203, 47,191, 68, 49, 12, 51,143, 82,154,106,198, 69,254, 29, 33,100,115,209, - 62,116, 8, 33,181, 39,125, 62,240,230,192,207,190, 16, 71,157,219, 1,219,168,167,152,120, 61,209,244, 44, 75, 55,128, 82,154, -108,142,185, 18,137, 68, 7, 78,156, 56,241,162, 94,189,122, 68,169, 84,194, 96, 48, 32, 61, 61, 29,127,252,241, 71, 40,165, 20, -182,182,182, 56,113,226, 4, 51,112,224,192, 3,132,144,222,165,153,172, 34,221, 52,144,130,110, 26,154,156, 58,117, 42,172, 83, -167, 78,241, 37,153, 20,145, 72, 4,141,198,178,222, 62, 74,107,149, 88, 17,205,210, 34, 88,197,211, 45,209, 44, 44,166, 44,172, -220, 94, 60,189, 16, 46,151, 11,134, 97,254,148, 94,182,193,202, 46,217, 72, 41, 83, 43, 28,193, 42,218,218,175, 34,230,166, 40, -229,117,248, 89,145,150,133,239, 58,130, 85,120, 46, 4, 2, 1,142, 28, 57,130,207, 62,251, 12, 38,147, 9, 82,169, 20,114,185, - 28, 50,153, 12, 7, 15, 30, 68, 97, 55, 14,150,100,209, 96, 48,236, 92,180,104,209,244, 13, 27, 54, 72, 40,165, 16, 10,133,175, - 13,214,156, 57,115,212,122,189,126,167, 57, 6,235,117, 15,237, 12, 13,173,238, 88,118, 43,194,146,214, 41,165, 62,150,205,188, -121,243,134, 50, 12,211, 3,197,186, 98, 40,126, 53, 21,124,214,234,211,167,207,197,178,186,105, 0, 96, 59,111,222,188, 17, 12, -195, 20,246,130,250, 70,107,193, 34,203, 21,190, 75,124,251,244,233,179,189,120, 43, 66,150,127, 61,119,255,109, 25,230,149,110, -174,250,248, 59,217, 59, 92,220,180,114,142,213,174, 59, 64, 98, 92, 36,110, 28, 89,155, 99, 98, 12, 69, 77, 75, 11, 11,255, 30, -214,115,115,178, 65,230, 45, 53,114,211, 99, 1,138,251,111,111,174,250, 85,119,114,176,191,180,101,245, 28,187,253, 15, 56, 72, -136,141,194,165, 2, 19,248, 54,230,106,176, 80,216, 35,208,199,125, 75,255,206, 45,108,173,137, 1,198,152, 48,108, 30,214, 23, -193,221,244,104,222,207, 26,141,186, 40,224, 93, 87,220,247,196,166,204,143,220, 90,146, 47,254,201,104, 86, 49,115,213,173, 74, -149, 42,115,111,223,190,237,201, 48,140,226,242,229,203,121, 27, 54,108,136,212,104, 52,171, 41,165,199, 45,208, 44,106,174,234, - 77, 29, 57,236,218,194,159, 55,139, 67,131,239, 98,201,206,163, 80, 27,116,166,211,241,249,125,138, 22, 31,150,133, 80, 40,252, -225,194,133, 11,178, 90,181,106,145,140,140,140,215,145, 22,189, 94,143,156,156, 28,228,229,229, 65,171,213,162,126,253,250,156, -213,171, 87,203,198,142, 29,251, 3,128, 47,205,205,175, 66,161,128, 64, 32,128, 94,175,127, 29,193, 18,137, 68,176,182,182, 70, - 70, 70, 6,246,238,221, 11, 0,101, 70,197, 4, 2, 97, 18,135, 67, 42, 75,164, 82,173, 88, 44,102, 92, 93, 93, 75, 52, 86,150, -104, 22, 16,223,185,115,103,247,121,243,230,137,235,215,175,255,167, 8, 86, 69, 52, 41,165,170, 14, 29, 58, 72, 87,175, 94, 13, - 79, 79, 79,232,116,186, 55,140, 20,135,195,129, 64, 32, 64, 92, 92, 28,230,207,159, 15, 74,169,249,127,100, 52, 89, 6,212, 26, -234, 8,117,134,225,213,148,110,128, 42,213, 0,189,202,100,225,117,249,218,172, 20, 53, 65, 5,117,164,254,100,128,204,141, 16, -149, 87, 4,104,105,203,194,162,134, 77, 36, 18, 33, 59, 59, 91, 66, 8, 25, 84, 74,143,243,102, 71,176, 10, 13,214,211,167, 79, -177,125,251,118,116,233,210, 5,182,182,182,200,202,202,194,190,125,251, 16, 22, 22, 6,161, 80, 8, 66,136, 37, 81, 44,166,113, -227,198, 63, 94,189,122,181,219,128, 1, 3, 2, 38, 78,156, 40,169, 89,179, 38,158, 61,123,134,121,243,230,105,130,131,131, 35, -212,106,245, 60,152,211, 33,105, 65, 15,237,133,157,136,154,213,138,176,216, 58,197, 41,165,155,134,206,165,168, 21,237,194,225, -141,110, 26,138,114,227,198, 13,175, 42, 85,170,248,227, 85,203,192,194, 23,109,209,214,130,111,188,132,147,146,146, 26,130,109, - 69,200,242, 62, 27, 44, 80, 50,126,192,176,145, 86, 59,239, 16,196,197, 68,224,222,137,245,197,205,149, 57, 15,153,160,162,125, -101,136, 37,178,154, 12,121,213, 44, 57, 55, 61, 14,160, 92,139, 13, 86,113, 77, 80,230,187, 1, 67, 71,218,237,190, 71,144, 24, -247, 18,215, 15,175,179,216, 92, 21,213, 28, 34, 20,206,226,243, 56, 51, 62,110, 85, 79,208,178,174, 47,164,169, 81, 72,142, 79, -196,222,167,105,153, 17, 89,218, 47,174, 19, 61, 98, 94,106, 55,119, 25, 97,103,103,235,194, 71,215,209,246,118,183,142,230, 30, -170,212,142,163,167,122,186, 40,241, 26,157, 83, 98, 62,223, 1,229,105, 18, 66,170, 91, 89, 89, 45, 13, 14, 14,118, 20,139,197, - 86,247,238,221, 51,109,220,184, 49, 78,163,209, 44,163,148,238,169,160,166,123, 67,159,106,151, 23,174,219, 36,206, 87,170,160, -212,233, 33,114,118, 53,253,113,243,201,167,165,117,134, 89, 92,147, 16,210,246,243,207, 63,175,221,184,113, 99, 78, 81,115,165, -211,233,144,155,155,139,188,188, 60,228,230,230, 34, 55, 55, 23, 9, 9, 9,104,221,186, 53,167,118,237,218, 53, 9, 33,109, 41, -165, 23,139,107, 22,233,166, 97, 58, 0, 14, 33,228,238,195,135, 15,243, 59,117,234, 4,137, 68, 2,165, 82, 9, 15, 15, 15, 24, -141, 70,156, 56,113, 2,193,193,193, 74,134, 97, 46, 3,120, 88, 86, 62,213,106,149, 7, 33,132,163, 86,169,234, 12, 29, 58,180, -245,132, 9, 19,222,104, 90,238,228,228, 4, 59, 59, 59,139, 52, 1, 32, 51, 51,179,198,169, 83,167,190,125,248,240,225,119, 93, -186,116,177,158, 62,125,186,200,203,203, 11, 38,147,137, 83, 81,205,172,172, 44,235,251,247,239, 47,107,209,162,197, 87,157, 58, -117,226, 45, 92,184, 16,214,214,214, 48,153, 76,144, 72, 36,200,205,205,197,188,121,243,112,237,218, 53, 35,165,116, 93, 78, 78, -206,196,178, 52,223,232, 7,107,194,138, 50,155, 71,150,214, 15, 86, 9,231,189,196,136, 79,105, 6,168,164,229,255,142,251,168, -152, 97,131,141,141,205, 20, 0, 83, 74,233,113,222,236,123,179,208, 96,113,185, 92, 68, 71, 71, 99,227,198,141,127,234, 7,171, -176, 27,135,146,180, 75,217,119,122,233,210, 37, 19, 33,164,233,189,123,247,166, 12, 25, 50,228, 11,165, 82,233, 46,147,201, 18, - 13, 6,195, 54,181, 90, 93,216, 15,150,192,146,251, 93,169, 84,198,148,212,138,176,248, 50,128, 77,153,154,197,186,105,120,163, - 43,134, 98,171,189,209,133, 67,241,110, 26,138,106, 54,107,214, 44,138,195,225,132, 23, 20,181,135,163, 88,107,193, 34,154,190, - 73, 73, 73, 13, 93, 93, 93, 47, 3,144, 22,111, 69,248, 79, 60,147, 89, 77,214, 96,149, 98,176, 32, 62,119, 59, 26, 66, 73, 38, - 30,157,223,106,177,185, 42,177,228, 65,163,138,152,181, 59,182,174, 78,171,129, 50, 39,229, 25,141,218,147,250,246,103, 25,178, -115,119, 99, 32,150,101,227,193,185, 95,179, 77, 38, 77, 59, 26,241,251,195,138,203, 97,234,250, 19,251, 5,196,218, 14,143,190, -253, 12,137,217, 74,156,140,204,218, 71, 85,218, 47,119, 20,140,187,231,222,148, 92,221, 50, 35,121,125,203, 94,214,125, 29, 42, -241,177, 98,210, 54,136,167,218, 11, 26,125,212,234, 31, 29,163,176,176,226,251,170, 85,171,198,180,108,217, 82,222,183,111,223, -231,153,153,153,111, 84,124,175,128,102, 60, 33,228,231,227, 27,150, 79,178,175,213, 4,107,191,159,108,218,125,243,201, 27,173, - 10,203, 67, 32, 16,180,153, 58,117,170, 64,169, 84,254,201, 92, 21, 55, 88,185,185,185,120,244,232, 17,134, 13, 27, 38,122,248, -240, 97, 27, 0, 23, 75,201,215, 44, 66,200, 6,188, 26,139, 48,121,199,142, 29, 77, 15, 31, 62,220,116,252,248,241,130, 46, 93, -186,224,214,173, 91, 56,123,246,172, 94,175,215,223, 4,112,211,220,225,103, 10,250, 15,186, 79, 8,121,178,100,201,146,166, 92, - 46,119, 86,225,188,208,208, 80,108,221,186,181, 34,154, 70, 0,203, 8, 33, 63,239,216,177, 99,214,185,115,231, 62, 31, 58,116, -168,149,193, 96,192,211,167, 79,241,235,175,191, 86, 84,243, 91, 71, 71,199,153, 39, 78,156,216,118,230,204,153,158,131, 7, 15, -230,140, 27, 55, 14,107,214,172,193,239,191,255,206,152, 76,166,195,124, 62,127,104, 90, 90, 90,185, 13, 80,222,232, 7,171,140, -126,174,202,155, 95, 66, 4, 43, 17,175,122,104, 55,119, 76,194,114,117,223,166, 8,208,204,124, 39,189,245, 99,169, 96, 63,218, -180,105,243, 58,170, 72, 41,125,163,222, 92,161,177,178,180,136, 16,128, 77,193,117,186, 14,192, 26,188,217,139, 59, 23,255,239, -233,221, 92,197,128, 36,173, 77, 40,180,120, 90,246, 96,207, 54, 0, 69, 64, 57,106,217,179,102,205,250,105,246,236,217, 63, 21, -239,138,161,232, 66,197,187,112,152, 59,119, 46, 74,235,166, 1, 64,214,172, 89,179,126, 4, 0,127,127,127, 82, 80, 44,216, 0, - 5,173, 5,139,104,110, 47, 72,151,206,153, 51,103, 8,128,178, 52, 89, 88,254, 65,131, 5, 58, 61,244,234,110, 3, 0,123, 16, -206, 52,250,114,111,232, 91, 63,184, 24, 58,245,194,174, 57,107, 64,145, 69, 77,198, 41,239,100, 15, 24,238,140,208,171,187, 24, -128,216,128,112,166,210,151,191,191,117, 62,137,181, 29,242,230,141,193,239, 33,137, 52, 89,105,248,100,135, 78,247, 70,164,166, -160,206, 85, 63,183,150,100,175,173, 27,255,143,111,219,217,147,227,153, 67,222,139, 19,154,150,150,182, 80, 46,151,115,151, 45, - 91,246,185, 90,173,126,163,226,251, 91,188,112, 38, 19, 66,184,141,170,123,142,189,243, 34,166,135,185,197,130, 69, 94, 36, 66, - 55, 55,183, 39, 26,141, 6,132, 16,104,181,218,215,198, 42, 47, 47, 15, 57, 57, 57,175,127,235,245,122,164,165,165,193,195,195, - 3,132, 16,129, 5, 47,194, 43,132,144,224,121,243,230,181,154, 55,111, 94,157,130, 40,208, 21,139,138,198,222,212, 54, 0,184, - 34,145, 72, 19, 9, 33,238, 2,161, 72,121,227,198,141,115,111,169,169, 42,136,140,172, 88,177, 98,197, 2,153, 76,214, 48, 52, - 52,244,252,219,104, 22,152,167, 79,237,237,237,221,182,111,223,190,127,203,150, 45, 77,120, 60,222, 45, 66, 72,159,236,236,108, -139, 7,123, 38,111, 70, 4, 44,158, 95,140, 81, 48,111, 12,194,114, 35, 68,230, 68,192, 42,202, 95, 97,216, 76, 38, 83,254,204, -153, 51, 83,139, 27,174,226,209,170,194,223,122,189, 94, 99,230,189,100, 73,171,200,114,204, 5,201, 7,128, 87, 99, 11,190, 26, -254,198,220,193,158, 1,148, 58,182,229,236,217,179,233,220,185,115, 9,135,195, 57, 12,224, 25,135,195,121, 81,188, 18,122,209, -121,115,231,206,197,236,217,179,233,156, 57,165,255, 55, 45,212, 12, 11, 11,163, 92, 46,247, 60,128, 40, 46,151, 27, 93, 84,183, -104,122,225, 58,101,105,178,176,252, 99, 6,139, 70,238,143, 3,240,217, 59,253,103, 24,181,255, 28, 44, 24,203,204, 44,205,232, - 61, 49, 0, 6,191, 51, 61, 96,233,136, 70,109, 38, 21,252, 11, 92, 81,220, 92, 21, 37,241, 42, 61,236,218,156, 44,106,244, 81, -171,241, 5, 47,159,133,239,195, 73, 45,169,226,251, 59, 48, 89,127,170,248,110,193,203,230,140, 68, 34, 33, 74,165, 18,106,181, -250,141,104, 85,110,110, 46, 84, 42, 21,242,243,243, 95, 87, 78,207,207,207, 47, 44,238,162, 22,230, 81, 5,224, 36, 33,228, 12, -165,212,244, 46,246, 91,173, 86, 85, 46,120,177,113,223,149,102, 65, 67,131, 47,222,165,102, 70, 70, 70, 34,128,102,222,222,222, -194,136,136, 8, 93, 69,117,202, 27,200,217,220,129,158,223,101, 52,232,175,230, 93, 27, 54, 0,208,235,245, 53,254,130,200,218, -179,119, 44,248,107,135, 22, 1, 92, 20,237,251,167,188,193,158, 11,141, 25,197,175,165,228,145,146, 87, 14,146, 2,216,254,242, -229, 75, 79,134, 97, 98, 74,136, 36,189, 49,111,206,156, 57, 40,173,127,190, 98,154, 0,112, 40, 46, 46,206,205,100, 50, 37, 21, -211,125, 35,189, 44, 77, 22,150,127, 56,130,245,223,228, 55,157,110, 54,202, 25,108,184, 40, 73,215,233, 12, 0, 51,222,183,253, -120,151,230,170,136,102,120, 69,214, 51, 24, 12, 23, 0,192,209,209, 17,142,142,142,150,172, 87,209,124,154,254,130,125,255, 87, -104,190,141,185, 98,249,111, 65,179, 66,227, 0,124, 95,238,114,229,247,222,254, 39, 67, 84,240, 53, 11, 64, 86, 41, 30,167,172, -121,101,105, 2, 64, 46,128,220, 18,214, 45, 45,157,133,229, 31,129,195, 30, 2, 22, 22, 22, 22, 22, 22, 22,150,119, 11, 1, 16, - 84,202, 63, 6,179, 91, 7, 16, 66,130, 42,240,239,253, 28,171,201,106,178,154,172, 38,171,201,106,178,154,255, 45,205,242,180, -139,183, 70,126, 87,195,104,253,237, 20,182,108,249, 43, 38, 0, 65,172, 38,171,201,106,178,154,172, 38,171,201,106,178,154, 21, -220,206,200,191, 99, 59,127,197,196, 22, 17,178,176,176,176,176,176,176,176,188, 99,216, 74,238,255, 82, 8, 33,213, 1, 76, 7, - 96, 93, 36,249, 14,165,116, 81,177,229,118, 1,144, 22, 73, 82, 2,152, 71, 41,125, 97,201,246,184, 92,238,162, 86,173, 90,125, -121,237,218,181,229, 6,131, 97, 94, 5,242,235,233,234,234,250, 35, 33,164, 62, 0, 62, 33,228,101, 74, 74,202, 34,131,193,112, -238, 45,142, 65, 85, 23, 23,151,197, 0,234,114, 56, 28, 62, 33, 36, 34, 37, 37,101,190,193, 96,184,244, 22,154, 10,103,103,231, -230,148, 82, 23, 0, 92, 62,159,159,145,144,144,112,187,162,173,225,250,204, 13, 19,228, 42,141,124, 0,176,146,241, 12,251,103, -251,235,205, 77, 99,175,114, 22, 22, 22,150, 15,212, 96,245,247, 37,174, 38, 30,120,251, 67,105, 92,225,203, 7, 64, 29, 0,213, - 1,188, 0,240,144, 82,154,247,150, 70,225, 95,161,249, 30, 50,139, 82, 58,176,216,126,255,105,161,118,237,218,117, 63,115,230, -140,180,112, 24, 21,134, 97, 32,145, 72,140, 0,134, 89,112, 60,157, 6, 12, 24, 48,117,243,230,205,232,219,183,239, 76, 66,200, - 79,148,210,124,115,215,183,179,179,235, 93,181,106,213, 53,155, 54,109,114,108,210,164, 41, 17, 10,133,120,249, 50,194,125,212, -168, 81, 53,157,157,157, 15,167,164,164,124, 97,233,206,219,219,219, 15,170, 86,173,218,138,141, 27, 55, 58,180,104,209, 2,132, - 16, 4, 7, 7,187,127,251,237,183,117, 92, 92, 92,246, 36, 39, 39,127,101,169,166,131,131,131, 79,181,106,213,218,174, 93,187, - 86,210,188,121,115,136,197, 98, 60,124,248, 80, 62,122,244,104, 23, 23, 23,151,167,201,201,201,151, 45, 53, 87,143,131,143,246, - 52,234,181, 75, 0,128, 39, 16, 77,110,250, 83,238,209,204,224, 43,221,202, 75,235, 51, 23,135, 88,147,197,194,194,194,242, 1, - 26,172,222, 1,100, 30,120,152, 14,128,116,174, 78,246,156,141,226, 94,109,223,190,189,247,240,225,195, 73,189,122,245, 16, 28, - 28,236,179,103,207,158,143,121, 60, 94,132,201,100, 10, 6, 16, 98,110, 47,212,132, 16, 62,128, 64, 46,151, 91,255,125,214,124, -207,145, 21,236,119, 10,128, 59, 5,105,119,138, 47,116,225,194,133, 35, 60, 30,175, 48,130,213, 72,169, 84, 58,227,205,168,151, - 57, 84, 49, 24, 12, 8, 15, 15, 7,135,195,225, 3,240,194,159,135,190, 40,237,188,184,187,187,187,175,191,121, 39,216,158,240, - 36,200,210, 0,208,232, 33,148, 59, 99,243,214, 29,118, 19,190,249,234, 83, 43, 43,171,171,185,185,185,191, 89, 96,248,188, 60, - 60, 60,126,122,244,232,145,189, 84, 42, 5,195, 48,200,203,203,131,139,139, 11, 54,109,218,100, 51, 97,194,132,129, 18,137,228, -146, 90,173,254,221, 18, 83, 94,173, 90,181,182, 79,158, 60,145, 20, 14,244,172,211,233,224,238,238,142, 93,187,118,137,198,141, - 27, 87, 67, 36, 18,197,107,181,218, 72,115, 53,115,149, 70,190, 81,175, 93,178,125,221,156,202, 0, 48,244,171, 57, 75,132,121, - 86, 39,204, 73,203, 85, 26,143, 3, 96, 13, 22,203,223, 10, 33,164,190,131,131,195,129,244,244,244,203, 0,190,120, 23, 93,137, - 16, 66,220,120, 60,158, 23,165,212,166,224,119,182,209,104,140,162,148, 38, 86, 84,211,193,187,109, 55,136,164,159,129, 50,117, - 56, 0, 8,135,243,208,164, 87,109, 77,127,118,241,232, 91,105, 10, 37,159, 3,180, 14, 7, 96, 8,135,243,136, 49,170, 54,165, -133, 93, 60,201, 94, 25, 44,239,204, 96,245, 9, 32,182, 0,166,236, 89, 51,157,195,227,114,201,128,111, 22, 13,220,178,110, 25, -167,125,183, 62,175,139, 73, 90,182,108,137,150, 45, 91,146, 37, 75,150, 84, 63,127,254,124,245, 93,187,118, 25, 9, 33,143, 40, -165,123, 75,219, 88, 39,111,162,102, 0,241,199,126, 60,229,128,239,127,219,216,184,113, 99,136, 68, 34,188,141, 38, 0,116,168, -206,141,236,210,216,251,209,128,177,179, 98,154, 52,105, 70,223,133,230,191,136, 59,148,210, 30, 5, 15, 46, 91, 15, 15,143,230, - 70,163, 81, 12, 0, 60, 30, 79, 3, 96, 44, 45, 24,226,135, 16,114,152, 97,152,238, 22, 60, 24, 57, 0,102,119,239,222,125,230, -215, 95,127, 13, 15, 15, 15,140, 27, 55, 14, 6,131, 33,152, 16, 50, 11,192,226,242, 58,242,115,114,114,154,181,126,253,122, 59, -158, 80,134,122, 83,162,144,148,109, 4, 0,200, 69,192,145, 49, 20,227,198,141,179,186,119,239,222,124, 0,102, 27, 44, 39, 39, -167,121,155, 54,109,178,147, 74,165,160,148, 34, 63, 63, 31,121,121,121,200,207,207, 71,126,126, 62,190,250,234, 43,171,167, 79, -159,254, 8,192,108,131,229,236,236,220,124,237,218,181, 18,177, 88,140,252,252,124,129, 94,175, 39,121,121,121, 80,169, 84, 84, -167,211,233,199,142, 29, 43, 10, 9, 9,105, 3, 32,146,125,108,188, 55,102,128, 11,224, 19, 62,159,223,203,219,219,187,193,139, - 23, 47, 30, 24,141,198,131, 0, 14,190,237,159, 40, 66,200, 71,110,110,110, 11, 18, 19, 19,215, 82, 74,119,252, 87,142,169,179, -179,243,193, 27, 55,110, 84, 94,191,126,253,176,229,203,151,159,176,228, 30, 42,229, 79,111,211, 70,141, 26, 57,244,234,213,139, -239,226,226, 2,149, 74,133,136,136, 8,233,185,115,231, 28,197, 98,113,134, 86,171,189,105,201,185,114,240,109, 46, 7,207,106, - 79,211,182, 65, 45,250,126,250,137,194,217,222, 26,106,157, 9, 47, 98,146, 60, 78,157, 56,210,218,173,230,199, 55,244,250,156, -254,233,207,174,231, 91,170,217,182, 83,215, 22, 65, 31,125,164,176,182,177, 70,142, 82,143,151,209, 9,158, 23,207, 30,109,233, - 90,243,227, 43, 12, 49, 12, 78,121,124, 70,197,222,117, 44,150, 96,118, 37,119,169, 84, 90, 98,186,181,181, 53,218,182,109,139, - 69,139, 22,241, 0,212, 47, 58,239, 79,131,159, 2,162, 99, 27,166,193, 90, 38,226,120,120,120, 40,172,172,172,222, 90,243, 85, - 34,227,213,204,131,118,190,251,219,244, 97,231,118,173, 8, 84,230,101,243,139, 47, 34,151,203,225,235,235,139,153, 51,103,154, -167,249,150,252,221,154,174,174,174,126, 45, 91,182,172,127,225,242,101,155,196,196, 68, 81, 98, 98,162,232,204,133, 11, 54, 77, -155, 54,173,239,234,234,234, 87, 68,195,146,124,254,176,110,221,186, 89,135, 15, 31,230,180,108,217, 18,182,182,182,104,219,182, - 45, 78,156, 56,193, 91,190,124,249, 66, 0, 51,203,203, 39,135,195,105,209,178,101, 75, 2, 74,145,156, 99,196,237, 69,126,120, -184,204, 31,121, 26,138,204,156, 92,168,213, 26, 72,165, 82,113, 65,177,174,185,251,222,172,105,211,166, 4,192,107, 83,149,151, -247,106,202,207, 87, 66,167,211, 67, 36, 18, 41, 8, 33, 98,115, 53, 41,165, 46,205,155, 55, 7, 0,232,245,250,215,101,173,217, -217,217, 36, 39, 39, 7, 58,157, 14,124, 62, 95, 64, 8,225,153,171,105, 37,227, 25,120, 2,209,228,161, 95,205,137, 27,250,213, -156, 56,158, 64, 52, 89,167,200, 53,153,147,102, 37,227, 25,254,201,235,147, 16,226,200,229,114,127,245,246,246,126,202,229,114, -183, 19, 66, 92,222, 70,147, 16,210,144, 16,178, 80, 42,149,158,171, 81,163, 70,156, 76, 38,187, 64, 8, 89, 76, 8,105, 90, 17, - 77, 66,136, 80, 42,149, 94, 88,184,112,225,254, 7, 15, 30,244, 61,127,254,188,215,227,199,143, 63, 93,178,100,201, 30,185, 92, -126,149, 16, 34,125,155,123,211,203,203,107,203,237,219,183, 27, 54,107,214,108, 51, 33, 68,244, 46,238,119, 66, 8,151, 16, 82, -151,152, 57, 38,208,223,125,222, 9, 33,110,245,234,213,171, 44, 22,139, 17, 20, 20, 4, 0,109,222, 82,179,233,232,209,163, 93, - 38, 76,152,192,127,248,240, 33, 54,111,222,140,195,135, 15, 35, 53, 53, 21, 93,187,118, 21,180,107,215,206, 69, 36, 18, 53,181, - 72,147,103,181,231,155,111,199,119,154, 52,110,132,226, 81,172, 30, 91,207,197,226,208,205, 36,164,170,132,232,246,233, 80,235, -142, 61,250,117, 20,138,172,247, 88,170, 57,117,202,148, 78, 35, 63, 31,168, 8, 77, 98,112,228, 86, 50,110,133,231,192,200,183, - 65,151, 79,191,176,173,211,188,211,199, 60,240,183,189, 15,231,232, 67,215,252, 96, 35, 88,132, 16, 74,233,171, 65, 92,247,135, -210,172,222, 1,228,199,126, 95, 47,156, 73, 56,132, 86, 9,108, 22, 90,169, 90,128,210,222,222, 30, 42,149, 10, 90,173, 22, 2, -129, 0, 26,141, 6,177,177,177,184,117,235, 22,108,109,109, 45,218,112,110,110, 46,228,114, 57,228,114,249, 59,209,156, 54, 44, - 72,244, 50, 46, 77,116,250,214,165,214,171,190,252,189, 73,181,186,109, 30,127,212,111,220, 19, 43, 71, 55,205,227,199,143,113, -227,198, 13,100,101,101,161,113,227,198, 31,202,185,187, 83,240,156,190, 67, 8,177,109,217,178,165,251,233,115, 87,108,243, 53, -140, 85,116,138,129,207, 48, 12,164, 82, 87,227,222, 3, 71,114,250,126,218,141, 16, 66, 82, 1,220, 41, 48,181,119,202,121, 17, -136, 1,248,245,238,221,123,234,151, 95,126,137,136,136, 8,140, 24, 49, 66,125,231,206,157,140,102,205,154,217,111,218,180, 73, - 50, 97,194, 4, 92,190,124,121, 54, 33,228, 15, 0, 81,148, 82, 77, 41, 55,161, 64, 32, 16,192, 88, 96, 23,244, 38,230,181,175, -207,205,205, 5, 85,103, 65, 32, 16,112, 1, 56, 2, 48,171,158, 28,195, 48, 2, 62,159,255,218, 92,197,166,228, 34, 54, 85,133, -220,124, 29,212,106, 35,116,106, 10,174,212,158, 7, 68, 59, 3,136, 54,243,120,114,197, 98, 49,140, 70, 35,242,242, 94,101,163, - 48, 50,166,211,233,144,147,147, 3, 46,151, 43, 7, 96, 5, 32,211, 28,193, 87,149,215,113,168,160,184, 15,119,119,118,119,120, -113,124,154,190,247,156,167,175,211,172,100, 60,195,129, 9, 53,184,246,238,117,174,213,237,187,205,191, 48,237,159,172,127, 69, - 8, 17, 57, 58, 58, 94,220,191,127,127,141,234,213,171, 35, 42, 42,202,191, 79,159, 62,141, 9, 33,117, 45, 29, 51,145, 16, 34, -229,112, 56, 63,126,246,217,103, 95, 14, 24, 48,128,248,248,248,128,199,227,193,104, 52,186, 71, 68, 68,180,221,183,111,223, 20, - 30,143,183,201,100, 50,125,103,110,189, 62, 66, 8, 71, 40, 20,238,221,184,113, 99,171,198,141, 27, 99,251,246,237,184,115,231, - 14,211,176, 97, 67,206,144, 33, 67,224,233,233,217,120,200,144, 33,135, 8, 33, 93, 42, 18,201, 34,132,120, 14, 26, 52,168, 50, -151,203, 69,179,102,205, 4, 55,110,220,168, 7,224,198, 91, 30, 83,185,187,187,251,229, 54,109,218,212, 61,119,238,220,125, 66, - 72, 27, 75,234, 49, 18, 66,122,184,185,185, 45,177,182,182,182,181,224, 25,171, 74, 72, 72,152,104,193,120,164, 77,234,215,175, -143,152,152, 24,248,249,249, 65, 32, 16, 52, 37,132,140, 2,208, 9,192, 12, 75, 70,135, 32,132,184, 53,109,218,212,161, 77,155, - 54,100,241,226,197, 0, 0, 62,159, 15,147,201, 4, 14,135, 3, 62,159, 15,127,127,127, 18, 25, 25,105, 71, 8,113, 51,167,184, -208,193,187,109,183,102, 31,117,106,209,170,113,109,206,242, 3, 47, 96, 98, 76,224, 18, 35,120,132, 1, 99, 16, 65, 36,224,194, - 39,176, 1, 55, 60,228, 81, 99, 7,223,246,221,210,159,157, 61,106,142,102,167,110,221, 91,214,240,243,225,172, 58,244, 18,217, - 9, 79, 77, 9, 97, 87,210, 57, 92, 14,106,212,111,231,224, 19, 80,151, 91,183,113, 27,126, 98, 84, 72, 91,187,234,173,131, 50, - 95, 92,102, 77,197, 95,255,252,121,237, 69, 62, 24,131, 85,156, 3,161,116,150,149,144,120,237,219,183,155,147,150,167, 87, 70, - 68, 68,192,193,193, 1,174,174,174,176,182,182, 70,104,104, 40, 46, 92,184,128,103,207,158,129, 97, 24,212,169, 83,199,162, 13, -167,167,167,227,209,163, 71,176,181,181,125,103,154,213, 42, 59,226,235,202,142,130,148,140, 92,193,185, 59,207, 26,255, 50,237, -211, 0,142,255,167, 91, 52,154,255,191,251,117,186, 15, 99, 36,145,162,173, 5, 61, 60, 60,154,111,221,186, 85,160, 53, 66,225, - 51,234,230, 82,165,198, 36, 3, 0,153,152,171, 12, 94,226,251,221, 15, 63,252,160,252,252,243,207,253, 99, 99, 99, 23,149,167, - 43, 20, 10, 23,116,238,220,121, 18,165,148,255,205, 55,223, 0, 0,134, 14, 29,154,123,235,214, 45, 31, 74,105, 42, 33,196,109, -248,240,225,207, 47, 94,188, 40, 29, 63,126, 60,215,104, 52,134,242,120, 60, 74, 8,153, 71, 41,157,243,167, 16, 41,135,115,239, -254,253,251, 85,220, 60,125,225,105,207, 65,203,153,175,134, 83,179,151, 50,136,143,126,137,176,199,119,224,226,226, 98,237,234, -234,250,212,207,207, 79,159,144,144, 48, 37, 63, 63,127,125, 89,121, 20, 8, 4, 15,131,131,131, 93, 61, 61, 61,145,159,159,143, -248, 52, 21,198, 29,148, 34, 87,253, 42,104,193,135, 26,117, 43,251, 42, 36, 28,221, 29,103,103,103,189, 78,167,251, 62, 59, 59, -187,204,225, 62,248,124,126,198,227,199,143,229, 30, 30, 30,208,104, 52, 52, 51, 51,147, 40,149, 74,228,229,229,145,227,199,143, -247, 76, 74, 74,106,232,229,229, 69,220,221,221,231, 85,175, 94, 93,157,144,144, 48,194,156, 58, 94,251,103,251,235, 9, 33, 38, - 30,143,183,124,228,200,145,125,255,248,227,143,123, 7,230,212,232, 65, 41,213, 23, 60, 76,172, 3, 3, 3, 79,215,174, 29,224, -182, 99, 89,173,213,148,210,165,239,193,229,245,217,244,233,211,107,216,217,217, 97,244,232,209,152, 59,119, 46,102,205,154, 85, -125,244,232,209, 35, 1,252,100,193,131, 82,226,226,226,114,119,213,170, 85,254,205,155, 55,199,137, 19, 39,176,123,247,110, 68, - 70, 70, 26,189,188,188,120,141, 27, 55,198,236,217,179,209,177, 99,199, 17, 99,199,142,109, 77, 8,169,103,166,233,248,124,246, -236,217, 61, 90,180,104,129, 97,195,134,105, 47, 93,186,212, 23,192,153,179,103,207,182,187,124,249,242,129,157, 59,119, 74, 22, - 46, 92, 24, 52, 97,194,132,209, 0,214, 84, 96,255,123,182,106,245,106,108,227, 22, 45, 90, 96,201,146, 37, 29,223,198, 96, 17, - 66,132,246,246,246,199,183,111,223, 94,215,215,215, 23,131, 7, 15,174,215,183,111,223,227,132,144,246,148, 82,179, 30, 72,149, - 42, 85,250,241,240,225,195,222,165,149, 36,148,132, 86,171,181,251,228,147, 79, 22, 3,176,200, 96,237,218,181, 11, 19, 39, 78, - 68,157, 58,117,106, 55,105,210,100,195,168, 81,163,208,187,119,239,143, 8, 33,206,148, 82,165, 89, 47, 22, 30,207,171,107,215, -174,252,131, 7, 15, 2, 0, 90,181,106,133,160,160, 32, 60,121,242, 4,215,174, 93, 3,151,203,133, 76, 38, 67,243,230,205,133, -137,137,137, 94, 0,202, 53, 88, 28,145,244,179, 30, 93,187, 40,142,220, 74,130,137, 49,162,129,183, 21, 26,251, 59, 33, 60, 62, - 23,193, 79,227, 97,210, 9, 96,101,103,143,166,173, 59,216, 37, 39, 68,126, 6,160,252,250, 88, 34,233,103,189,122,124, 44, 63, -114, 51, 17,217,137, 97,244,197,157, 63, 46, 24, 52,202, 17, 0,112,239,252,158, 13, 46,246,146,246, 62,245, 27,112,219,180,239, -110,123,112,119,242,103, 0, 88,131,197,242,246, 6, 11, 0,242,244, 72,249,232,227, 79,113,255,254,125, 0, 64, 70, 70, 6, 50, - 50, 50,224,237,237,141, 53,107,222,124,110, 85,196,184, 48, 12,243,206, 53, 1,192,217,222, 10,131,187, 52,226, 93,123,180, 91, -172, 76, 75, 19,203,229,114,205,135,102,176,138, 98, 52, 26,197, 94, 94, 94,200, 85,131,228,168, 12,242,244, 61,175, 34,251, 14, -253, 47,201,117, 58, 29, 71, 46,151, 67,171,213,138,205,120, 17,240,123,244,232, 49,105,239,222,189,252,176,176, 48, 84,171, 86, - 13,122,189, 30,183,110,221,138, 47, 24,160, 24,148,210, 68, 46,151,155,200, 48, 76,245, 58,117,234, 96,209,162, 69,240,247,247, - 39, 93,186,116,153, 82, 96,178,152,162,154, 73, 73, 73, 63,142, 26, 53,170,221,190, 3,127,216,109,236,167, 70,110, 78, 46,242, -243,243,241,240,193, 61,100,166,104,240,203, 47,191, 64, 44,150, 16, 0,130,212,212, 20,193,248,241,227, 87,187,187,187,119,138, -143,143,239, 90, 90, 62, 19, 19, 19, 23,124,245,213, 87, 77,247,236,217, 99,147,151,151, 7,181, 90,131, 76,165, 20, 79, 87,190, - 26, 95,183,198,183, 79,177,110,237,122, 78,173, 42, 50, 7,149, 74,133, 47,191,252,114,133,155,155, 91,243,196,196,196,225,165, -105, 38, 36, 36,220,254,250,235,175,157,119,238,220, 41,214,233,116,122,147,201, 4,181, 90,205,217,179,103,207,148, 42, 85,170, -216,110,218,180,137,136,197,146,130,101,227, 5, 99,198,140,217,235,226,226,178, 51, 57, 57,121, 88, 57,199,148,203,229,114, 87, -238,216,177, 99, 72,191,126,253, 20, 73, 73, 73, 1,135, 15, 31, 22, 1, 80, 23, 44,226,218,190,125,251, 42,203,150, 45,115, 12, - 12, 12,156, 66, 8,225, 83, 74,255,209, 65,195, 29, 28, 28,198,246,232,209, 3,139, 23, 47,198,209,163, 71, 39,216,217,217,173, -152, 59,119, 46,220,220,220,190, 38,132,172,180, 96, 0,221,165, 63,253,244,147,191,191,191, 63,134, 14, 29,170, 59,119,238,220, -116, 0,135, 0,196, 92,189,122,213, 99,219,182,109,221,246,238,221,187,120,213,170, 85,226, 53,107,214,120,127,250,233,167, 43, - 1, 12, 47,247,254,118,118, 30, 63, 96,192, 0, 44, 91,182, 12,151, 46, 93,250,148, 82,122,162, 96,214, 73, 66, 72,183,133, 11, - 23,158,159, 57,115, 38,126,250,233,167,111, 44, 53, 88,132, 16,121,141, 26, 53,190,239,212,169, 19,174, 94,189,138,150, 45, 91, -162,105,211,166, 19, 8, 33,171, 41,165,233, 21, 48, 87, 28,185, 92,190,119,235,214,173, 45,171, 84,169,130,249,243,231, 99,210, -164, 73,216,178,101, 75,203,193,131, 7,239, 37,132,244, 42,126,207,148,132,181,181,181, 92, 42,149, 98,202,148, 41, 52, 50, 50, - 50,171,188,229, 43, 87,174,108,187, 98,197, 10, 98,107,107,107,109,174, 25, 22,139,197,205,106,214,172,137,217,179,103,227,236, -217,179,152, 57,115, 38,106,214,172,137,152,152, 24,244,239,223, 95, 58, 99,198,140,222, 0,204, 26,151,144, 82,106,109,111,111, -143,212,212, 84,240,249,124, 52,111,222, 28,135, 14, 29,130, 86,171,133,147,147, 19,178,179,179,209,168, 81,163, 66, 51,102,109, -222,209,164, 53, 29,236,172,145, 26,146, 0, 30,140,168,239,227,128,139, 79, 50,160, 55, 48,112,178,183, 65,114,106, 10,154,212, -116,135, 78,231, 1, 74,153,154,230, 40, 10,185,156,250, 34,177, 4,153,121,233, 72,120,122, 41, 67,111,210,142,202,142,188, 22, - 7, 0,118,213, 90,141,186,119,237,236,189, 62, 31,183,114,202, 87, 86, 6,161, 76, 35,214, 50,176, 88, 2,199,140, 27,229, 79, -105, 42,213,159, 75, 9,222,214,184,252, 21,154, 37,241, 33, 26,172, 66, 10, 7, 71,214, 25, 24,232, 12, 76,225,191, 88,168,213, -106,115,163, 98,134,211,167, 79,111, 31, 55,110, 28, 86,172, 88,129,231,207,159, 67, 32, 16,160,102,205,154,174,132, 16,121, 97, -196,165,126,253,250, 78, 28, 14, 7,225,225,225, 88,190,124, 57, 62,255,252,115,122,227,198,141, 45, 37,189, 40, 40,165, 15, 50, - 51, 51,215,142, 26,241,121,118, 86, 74, 44, 12,234, 44,164, 38,188,132, 86,153,141,249,139,126,132,202,192, 67,114,142, 30,201, - 57,122,112, 68,118,216,176,105, 43,183, 70,141, 26,157,120, 60, 94,215, 50,242,121, 43, 37, 37,101,211,152, 49, 99,178,147,147, -147, 95,239,159,206, 64,161, 51,188,121,189, 74,165, 82,172, 92,185,210,218,199,199,167, 7,159,207,111, 91,134,102, 82, 92, 92, - 92,216,152, 49, 99,116, 41, 41, 41,200,201,201,193,145, 35, 71,186, 85,169, 82,197,118,241,210, 21, 68,169,231, 33, 57, 91,143, -228,108, 61,132,114, 39,236, 61,240, 7,215,215,215,119, 32,159,207,111, 90,158,185,218,185,115,231,144,126,253,250, 41,150, 46, - 93,154,121,248,240,225,117,148,210,162, 39, 36,124,229,202,149,251,246,238,221,155, 55,105,210, 36,187, 37, 75,150, 76, 32,132, - 76,255, 7,195,243,109,251,245,235,231,199, 48, 12,246,239,223,255,152, 82,250,211, 31,127,252,113, 87,171,213,162,127,255,254, - 94,120, 85, 92,100,142, 78,195,129, 3, 7,126,217,178,101, 75,124,251,237,183,250,115,231,206,213,167,148,174,160,148, 70,211, - 87,196, 80, 74, 87, 95,190,124,185,206,216,177, 99,181,141, 26, 53,194,176, 97,195, 62, 39,132,180, 44, 71,183,217,128, 1, 3, -252, 25,134,193,158, 61,123, 30, 21, 49, 87,133,231,241,194,129, 3, 7,110,233,116, 58, 12, 26, 52,168, 42, 33,164,157, 5,251, - 46, 16,137, 68,251,127,248,225, 7,155,132,132, 4, 12, 25, 50, 68, 27, 30, 30,142, 57,115,230, 72,172,173,173, 79, 20,222, 3, -150, 32, 18,137,126,249,249,231,159,123,212,170, 85, 11, 99,198,140,209,173, 95,191,126,220,151, 95,126,169,171, 95,191, 62,214, -173, 91,215, 67, 40, 20, 90, 52, 4, 72, 98, 98, 98,118,104,104,168,125,121, 83,124,124,124,138,153,251, 44, 85, 40, 20, 55, 3, - 3, 3,115,107,214,172,217,192,104, 52, 34, 52, 52,244,229,246,237,219,153,154, 53,107, 98,237,218,181, 88,178,100, 9,186,118, -237, 10, 46,151,219,219,146,188, 42,149, 74,136,197, 98, 8, 4, 2, 4, 7, 7, 67,171,213, 66, 42,149, 66, 44, 22,131,203,229, -194,198,198, 6, 10,133, 2, 0,168,121,121, 5,205, 85, 25,192,231,115,192,227, 48, 8,139,201,129,222,192, 64, 44,224,130,207, - 35, 0,101, 96, 35,227, 67, 44,228,130, 67, 8, 99,166, 38,114,148,122, 8, 5, 28,240, 5, 66,194, 49,154, 36,175, 95,142, 60, -147, 68, 34, 17, 18, 7, 43, 17,196, 2,182, 79,110,150,119, 28,193, 42,140, 50,153, 99, 82,180, 90,237, 59, 55, 62,111,171, 89, -146, 57,124, 91,205,247,242, 36,242,120,154,103,207,158, 9,173,236,221, 24,123, 5, 63,171,202,231,215,172, 1,192, 78,206,203, -209,155, 12, 76, 98, 98, 34, 68, 34,145,198, 28, 45,141, 70, 51,130, 16, 50, 31, 64, 0,143,199, 59,182,117,235, 86,178, 99,199, - 14,219, 1, 3, 6, 68, 16, 66, 18, 2, 3, 3, 61,183,110,221,106, 5, 0,171, 87,175,166,123,247,238,237,136, 87, 93, 95, 36, -151,166,153,156,156, 60,135,207,231,223,248,234,171,175,214, 8,133, 66, 91,153, 76,102,127,245,234, 85,162,209, 83, 52,156, 30, -243,186,101,161,149,132,131, 43,211,172, 48,114,228, 72,238,211,167, 79, 23, 1, 56, 86,134,230, 20,145, 72,116,245,249,243,231, - 43,172,221,235, 58,202, 60,167, 91, 55,158, 22, 14, 0,240,116,224,131, 83,240, 60,204,206,206, 70, 90, 90, 26,190,252,242, 75, -219,136,136,136, 41, 0, 46,150,166, 25, 31, 31,127, 89, 36, 18,197,135,132,132,180,225,243,249, 66,153, 76,214,240,230,205,155, - 68,163, 99, 80,123, 74, 12, 50,243, 95,229,211, 78,206,195,189, 31,156,241,245,215, 95,243, 94,188,120,241, 35,128, 22, 37,254, -123,225,112,150, 20, 53, 87,147, 39, 79,126, 8,160, 42, 33,228,141, 34, 80,147,201, 68, 6, 13, 26,244, 4, 64,205, 73,147, 38, -217, 81, 74, 39, 16, 66, 50, 41,165, 27,255,238,107,201,202,202,106,241,168, 81,163,176,119,239, 94,100,101,101,173, 4,128,220, -220,220,159,118,237,218,181,103,196,136, 17,248,237,183,223, 22, 19, 66, 78,153, 17,197,234,220,191,127,127,156, 60,121, 18,231, -207,159,255,158, 82, 26, 90,202, 61,250,156, 16, 50,229,240,225,195,171, 6, 12, 24,128, 95,127,253,181, 19,128,171,101,232,182, -239,216,177, 35, 78,156, 56,129,140,140,140,117, 37, 45,144,157,157,189,254,200,145, 35, 77, 58,118,236,136, 69,139, 22,181, 7, -112,193, 12,163,225,111,109,109,189,117,213,170, 85, 13,107,213,170,133,129, 3, 7,106,244,122,125,167, 73,147, 38, 29,221,189, -123,183, 98,251,246,237, 13, 70,142, 28,121,155, 16,242, 5,165,244,150, 57,199,146,203,229, 46, 92,179,102,205,240, 54,109,218, - 96,194,132, 9,198,211,167, 79,119,167,148,158, 33,132, 68, 76,158, 60,249,248,242,229,203,185,203,150, 45, 27,206,229,114,211, - 76, 38,211, 63,101,170,127, 88,189,122,117,147, 14, 29, 58,224,229,203,151,184,117,235, 22,244,122,253,111, 55,111,222,188, 82, -189,122,245, 31,116, 58,221, 81,153, 76, 54, 84,161, 80, 4,214,173, 91,183, 29, 33, 68,106, 78, 61, 60, 66, 72,118, 68, 68,132, -204,201,201, 9,124, 62, 31,143, 30, 61,130,147,147, 19, 0, 32, 53, 53, 21, 53,107,214, 4,151,203, 69,118,118, 54, 0,228,152, -103,134, 56,143, 35,162, 19,171,218, 41,100,128, 73,140, 7,225,241,112,116,176,133,137,112,144,156,156,132,186,126,238, 32,132, - 32, 59, 35, 25,132,144, 39,230,104,154, 40, 19, 28,155,152, 90,201, 94, 33, 66,173, 38, 29,236,111,158, 74,219, 97, 93,173,197, - 72, 30,151,112, 69, 98,171,141,195,135, 13,115, 96, 24,138,236,140, 20,240, 56,156, 59,172,101, 96,169, 80, 4,171,180, 74,101, -175, 42, 75, 75,203, 52, 41, 98,177,248,117,244,196,130,127,118,239, 92,179, 60,254, 10,205,127, 48,210, 48,141, 16,114,152, 16, - 50, 45, 46, 46, 46,108,248,240,225,122,163, 94,155,119, 99,126,213,169,247, 23, 85, 25,115,115,142,235,152, 67,227,172,167,170, -114, 50,243, 86,175, 94,109,136,139,139, 11, 43,186, 78, 57,198, 52,150, 82,122, 98,219,182,109,235,247,239,223,143,154, 53,107, - 34, 52, 52,212, 73,169, 84,214,123,242,228,137,157,191,191, 63,118,236,216,129,189,123,247,174,160,148,158, 45,203, 92, 21,137, -174,157, 75, 74, 74,242,141,137,137,241,182,177,177, 49,216,216,216,160,120,203,194, 92, 53,131,140,236, 28,216,217,217,195,202, -202,202,171, 60, 77,173, 86,123, 34, 41, 41,201,135,177,245,107,229,147,190, 50, 39,120, 97,101, 4, 47,172,140, 19, 83,220,224, -106, 35, 68, 86, 86, 22,210,210,210,144,150,150, 6, 66, 8, 12, 6, 67, 13, 51, 52, 35, 19, 19, 19, 55,199,198,198, 30,118,118, -118,134, 66,161, 0, 5,144,156,109,192,195,101,254,120,184,204, 31,201,217, 6,228,230,229,161, 74,149, 42, 80, 40, 20, 53, 75, - 57, 63,156, 74,149, 42,117,233,215,175,159, 2, 0, 10,140,211, 71,148,210, 49, 37, 76,163,141, 70, 99,243,194,101, 39, 78,156, -104, 7,160,227,223,124, 61,113, 9, 33, 95,141, 24, 49,162,129, 88, 44,198,218,181,107, 35, 1,236, 44,152,189,127,253,250,245, -225, 0, 48,110,220,184, 64, 0, 19, 10,186, 72, 40, 21,129, 64, 80,191, 70,141, 26,184,121,243, 38, 0,252, 81,206,230, 15,220, -184,113, 3,213,171, 87,135, 88, 44,110, 88,206,178, 94,149, 43, 87, 70,120,120, 56, 0, 60, 40,101,153, 7,225,225,225,168, 92, -185, 50, 8, 33, 94,102,236,123,143, 14, 29, 58, 60,190,120,241, 98,195,102,205,154, 97,248,240,225,186,219,183,111,119,161,148, - 94,121,240,224, 65,219, 65,131, 6, 41,125,124,124,112,249,242,101,255, 65,131, 6,221,224,114,185,243,205,208,252,124,222,188, -121,211,122,246,236,137,121,243,230,209,125,251,246, 13,164,148,158, 41,184,191, 78,239,217,179,103,200,130, 5, 11,104,175, 94, -189, 48,119,238,220,105,132,144, 49,229, 68,131,114, 76, 38, 19,148, 74,165, 89, 33,120,115,151,119,112,112,232,220,161, 67, 7, -204,156, 57, 19,149, 42, 85,194,209,163, 71, 41,128, 99,148,210,171, 90,173,182, 21,165,116,185, 82,169, 60,116,243,230, 77,180, -111,223, 94, 0,224, 99,115,182,111, 52, 26,163, 47, 94,188,168,183,183,183,135,187,187, 59, 60, 60, 60,160, 84, 42,145,157,157, -141,154, 53,107,162, 73,147, 38, 80, 42,149, 56,118,236,152, 62, 59, 59,219,172,134, 40, 70,157,114,251,217,227, 7,115,236, 21, - 34,184, 59, 89,163, 74, 37, 59,228,103,167, 35, 45, 57, 17,245,107,120,160,117,253, 42, 72,207,209,225,244,177,131, 89,121,121, -170,237,102, 69,253,181,170,173,231, 78, 29,205,177, 85, 8,224,235, 23,136, 65,195,199,213,173, 91,175,241,217, 70,141,154,159, - 94,186,120, 97,237,143,154,214, 32,241,233, 26,156, 60,246, 71, 86, 78,110,238, 86,176,252,229,124, 40, 21,220,223, 48, 88,165, -144, 62, 97,194, 4,136, 68, 34,184,186,186,190, 54, 69,133, 38, 69, 40, 20,194,213,213, 21, 70,163, 17,123,246,236, 1,128,244, -114, 54,166,237, 62,102, 17,163, 53, 80, 21,159,207,127, 39,154, 5,145, 2,237,167,147,127,101, 78,221, 40,185,145, 75, 69, 52, -255, 5, 52, 42,232,211,170, 17,165, 52, 43, 58, 58, 58,190,239,167,221,115, 98, 34, 66,146,149,217,137, 73,185, 25,113, 73,113, -145, 79,146,167, 79,153,144, 19, 31, 31, 31, 87,208, 23, 86,163,196,196,196,238, 0,204,173, 75, 48,161,111,223,190, 63,143, 24, - 49,130, 62,124,248, 16, 0, 16, 28, 28,140, 97,195,134,209, 33, 67,134,172, 4, 48,181, 2,249, 86,170,213,234, 55,162, 31,122, - 19,243,186,104, 47, 55, 55, 23,137,137,137,208,233,116,102, 59,225,231,167,151, 61,203,140,190,103, 8,244,148, 33,208, 83, 6, -255,202, 82, 16, 99,254,107,115,149,150,150,134,148,148, 20, 0,208, 88,144,207, 92,173, 86,251, 70, 62,139, 22, 65,230,230,230, - 34, 57, 57, 25, 38,147, 73, 87,202, 67,130, 73, 72, 72, 56,189,119,239,222, 60, 0, 88,186,116,105, 38, 33,228, 60, 33,228,231, - 18,166, 13, 60, 30,239,122,225,178,203,150, 45,203, 4,112,226,111, 52, 87, 61,107,213,170,149, 53,109,218,180,181,223,124,243, - 13, 54,108,216,128,164,164,164,169,148, 82, 99,225,190,164,167,167, 79, 94,183,110, 29, 62,251,236, 51,204,154, 53,107, 89,189, -122,245,114, 9, 33,131, 74,211,116,116,116,116,231,241,120,184,127,255,126, 46,165,244,101, 57, 15,212,228,251,247,239,167, 16, - 66,224,234,234, 90,173,172,101,237,236,236,188, 21, 10, 5, 18, 18, 18, 0, 32,170,148,197,162, 19, 19, 19,169, 80, 40,132,155, -155, 91,245,242,246,223,214,214,118,242,230,205,155,121, 33, 33, 33,248,232,163,143,226, 47, 95,190,220,158, 82,122,169, 32,111, -247,131,131,131, 91,182,109,219,246,217,217,179,103,241,227,143, 63,146, 58,117,234,140, 41, 79,211,211,211,115,244,231,159,127, -142, 53,107,214, 96,227,198,141, 99, 40,165,251,139,237,243,238,117,235,214,141,219,184,113, 35,134, 15, 31, 14, 47, 47,175, 65, -101,233,197,196,196, 76,105,211,166, 77,240,243,231,207,205, 26,161,192,156,229, 9, 33,109, 27, 55,110,236,173, 86,171,177,117, -235,214,151,222,222,222,119,247,239,223, 63,129, 82,250,168,216,162,135, 14, 30, 60,136,193,131, 7,163, 78,157, 58, 91, 9, 33, - 3,204,120, 73, 38,198,196,196,164, 63,122,244,136,225,114,185,112,119,119, 71,151, 46, 93,208,191,127,127,212,169, 83, 7,169, -169,169,184,114,229, 10, 19, 17, 17,145,110,110,135,163,233,207, 46, 30,141,138,122,118,253,254,237, 43, 6, 30,151, 3, 15, 87, - 59,124, 18, 84, 23, 95,244,110,142,250,254,149, 16,147,170,198,133, 11,103, 13, 81, 81, 47,111,154,211,130,176, 80, 51, 44,244, -209,141,144,251,215,140,124, 30,129,191,159, 15,102, 78,159,108,187, 96,246, 20, 27,159,106, 30,120, 20,153,131,179,103, 78, 26, - 18,227,227, 46,178, 45, 8, 89, 44,165,188, 34,194,165, 27, 54,108,104,180,121,243,230,246, 19, 38, 76,144, 15, 29, 58, 20, 98, -177, 24, 42,149, 10,238,238,238, 48,153, 76, 56,117,234, 20,238,221,187,151,207, 48,204, 89, 20,107,254, 79, 8, 9, 42,218, 87, -198,169, 8, 42,121,213,121,165,170,209,225, 62,125,222,137, 38, 0,200, 95, 48, 86, 25, 85,116, 59, 86,239,191,214,107,215,233, -251,228,219, 1,173, 57,245,253, 42, 3, 0,156,157,157, 97,101,101,101,177,230, 59,120,105,253,229,154, 69,139,111,147,146,146, -194, 9, 33,169, 35, 70,140,240, 47,172,208, 46, 18,137, 52,113,113,113, 97,133, 29,141, 22, 95,167,188,124, 22,180,116,251,146, - 16,114, 36, 39, 39,231,244,164, 73,147,176, 96,193, 2, 28, 61,122,180, 37,165,244,122, 69,246,157, 82,106,242,242,242,202,190, -115,231,142,115,245, 26,245, 80,213,137,143, 86,223, 63, 7,165, 20,246, 82,138,188,236, 76, 60,120,112, 31,121,121,121,183, 45, -201,167,155,155, 91,118,106,106,170,131,147,147, 19, 50, 51, 51,145,158,158,254,218, 92,101,101,101, 33, 51, 51,147, 18, 66,174, - 90,160,169,244,246,246, 86,133,133,133, 9,157, 43, 87, 71, 53, 39, 1, 26, 79, 15, 7, 40,133,135, 29, 7,121,185,217,184,121, -243, 38,114,114,114, 46,149,166,201, 48,204,119,131, 6, 13,226, 2, 24, 50,105,210, 36, 59, 0,117, 38, 79,158,124,182,120, 75, - 65, 62,159,255,211,142, 29, 59,106, 22, 22, 37, 78,153, 50,101, 5,165,116,243,223,117, 45,217,219,219,127,119,252,248,113,133, - 94,175,199,234,213,171,177, 98,197,138, 45,148,210,223,139, 29,143,227, 92, 46,119, 29,135,195,249,234,235,175,191,198,168, 81, -163,164, 13, 26, 52,152, 80, 36,202,245,134,102, 66, 66,194,204,250,245,235,207, 74, 77, 77, 53,171,194,254,243,231,207, 71,214, -175, 95,127,102,106,106,234,146,178,206,145, 76, 38,147,153, 76, 38, 68, 69, 69,101, 81, 74,115, 74, 57,119, 26, 31, 31,159, 4, -147,201,228, 46,149, 74,237,202,187, 62,179,178,178, 22, 54,104,208, 96, 78, 74, 74,202, 25, 0,243,139,119, 57, 66, 41,125, 72, - 8, 9,252,230,155,111,198, 46, 94,188,184, 87,114,114,242,158,242, 52, 99, 98, 98, 22,182,109,219,246,251,103,207,158,109, 43, -173,168,151, 82,186,150, 16,162,223,177, 99,199,152,168,168,168, 69,101,105, 82, 74,143,161,140, 34,243, 18,180, 75, 92,190,168, - 38,151,203,157,188,120,241, 98,206,134, 13, 27, 64, 41, 93,102, 52, 26, 75,203,231, 35, 46,151,187,189,121,243,230, 67,247,239, -223, 47, 14, 12, 12, 28, 5, 96,119,121,215,167, 86,171,189,117,227,198,141, 38,209,209,209, 14,109,219,182, 21, 20,254, 49,201, -206,206,198,177, 99,199,244, 17, 17, 17,233, 74,165,242,150, 37,207, 16,163, 46,119,192,141, 11,135,119, 71, 63,127,210,180, 77, -167, 30,182, 58,189, 59, 68, 25, 92,100,103, 36,227,212,177,131, 89, 81, 81, 47,111,170, 84,217, 3, 44,209,212,107,115,250,223, -188,120,100, 79,124, 84, 88,147, 86,109,187,216,106,116,158, 16, 9, 56,200, 72, 73,192,169,227,135, 51,163,162, 34,175,106, 12, -218, 97,255,212,115,254,191,164,249, 33,134,227,202,157, 0, 8, 0, 4,201,229,242, 5,179,102,205, 90,118,251,246,237,101, 93, -187,118, 93, 38, 18,137, 22, 0, 8, 2, 32, 40,101,189,160,191, 83,179,161, 27,236,218, 86, 35, 87, 58,120, 19,102,116, 75, 91, -211,176,198, 50, 93,187,118,237,214,189,141,102, 69,167,191, 90, 19,192, 97,131,193, 64, 1, 36, 3, 56, 92, 48, 77, 43, 97,157, -105, 69,230, 39,199,198,198, 82, 0,135, 45,201, 39, 0,135,126,253,250, 49,121,121,121,180,111,223,190, 20,128,245,219,236,187, - 72, 36,106,219,170, 85, 43, 67, 74, 90, 38, 13,143, 76,160,183,130, 67,233,233, 11, 55,232,158,131,199,233,154,117, 27,105,237, -218,181,117, 0, 60, 45,209,228,241,120,237,218,182,109,155,145,146,146, 66,195,194,194,232,149, 43, 87,232,129, 3, 7,232,198, -141, 27,233,207, 63,255, 76, 43, 87,174,156, 2,192,217, 18, 77,137, 68,210,163,115,231,206,134,236, 92, 21,141, 74,200,160,143, -195,162,232,245, 59,143,233,169, 11,215,233,206,221,251,105, 64, 64,128,166, 60,205, 87,239, 49,238,154, 61,123,246,228, 82, 74, -105,143, 30, 61,226, 1,136,139,204,175,250,221,119,223,165, 82, 74,233,146, 37, 75, 50, 0, 76,255, 7,174,165, 78,149, 42, 85, - 10, 23, 8, 4,199, 1, 12, 41,103,189,254, 60, 30,239,168,139,139,203, 93, 0,159,252,221,247, 17,128,174, 78, 78, 78,183, 0, -116, 47,103,189,194,229,122,126, 8,247,251, 95,116,222,219,241,120,188, 43,120,213,199,149, 57,239,128, 31,184, 92,238, 9, 0, - 31, 89,146, 79, 0,110,114,185,188,133, 92, 46,239, 38,151,203,187,217,216,216,180, 0,224,246, 54,251,110,239, 19,212,205,163, - 94,247, 67,149,235,124, 28,227, 81,183,107,140, 87,253, 30,135,236,125,130,186,189,173,166,103,253, 30,135, 61,234,118,141,245, -168,219, 45,186,106,195, 30,135, 28,252,130, 58,127,104,231,253,125,214, 44,101, 59, 35,255,142,237,252, 37,121,183,112, 71,101, - 0, 62, 1,176,168,224, 83,246,182, 39,224,175,208,108,226, 10,223, 32,111, 18,214,197,143,151, 9,160,247,187,208,124, 15, 31, -142,219,116, 58, 29,213,104, 52, 84,165, 82,209,252,252,252, 55,140, 83, 81, 35,150,152,152, 72,227,227,227,105,108,108, 44,141, -142,142,166, 0,118, 90,154, 79, 43, 43,171,205,125,250,244, 49,241,249,252, 53,239, 98,223,237,236,236, 22, 53,110,220, 88,191, -106,213, 42,122,232,208, 33,186,105,211, 38,250,245,215, 95,211,154, 53,107,106,109,108,108, 6, 84, 68,211,197,197,101,166,159, -159, 95,198,150, 45, 91,232,206,157, 59,233,202,149, 43,233,140, 25, 51, 76,238,238,238,201, 10,133,162, 99, 69, 52,157,156,156, -126,105,209,162,133,254,151, 95,126,161,103,207,158,165,187,118,237,162,223,125,247, 29,245,247,247,215,202,100,178, 79,205,209, - 4,192,229,241,120,203, 71,143, 30,157,236,230,230,118,188,216, 60,105, 64, 64,192,221, 65,131, 6, 37, 2,152,194, 62,112, 89, - 77, 86,147,213,100, 13,214,135, 97,176,120, 22, 70,187,148, 0,254, 32,132, 28, 45,172,159,241, 14, 34,104,239, 92,243,102, 34, -125, 6,192,159, 16,194,123, 87,154,239, 33, 11,133, 66, 33,175,192,160, 22, 82, 82, 43,151, 59,110,110,110, 69,127,231, 0,176, -184,159,165,156,156,156, 47, 8, 33,227,138,117, 49, 80, 97, 50, 50, 50,166, 17, 66,246, 70, 70, 70, 46,178,177,177,169,111, 48, - 24, 12,185,185,185, 87,178,178,178,166, 80, 74,227, 43,162,153,148,148, 52,159, 16,114,100,230,204,153,147, 40,165,141, 56, 28, -142,198, 96, 48, 92, 74, 79, 79, 95, 68, 41, 77,171,136,102, 74, 74,202, 72,129, 64,240,107, 68, 68,196, 34,137, 68, 82,155, 97, - 24,157, 74,165,186,148,158,158, 62,158, 82,154, 98,230, 53,110, 2,240, 29, 33,100, 57,128,212, 98,243, 84,132,144,230,161,161, -161,246,148,210, 36, 54,166,206,194,194,194,242,223,168,131, 85,218, 11,227,157,155,150,127,139,230,123, 84,180,251, 2,192, 32, - 51,150, 91,244, 14,183,169,126,199,251,240, 24, 64,231,119,172, 25, 2, 96,200,187,212,212,235,245,183, 97,230,184,108,229,228, - 45,169,148,116, 61, 0,214, 92,177,176,176,176,124, 64,176,189,167,177,176,176,176,176,176,176,176,188, 99, 8, 94, 85,254, 46, -233, 95,181,217,173, 3, 8, 33, 65, 21,248, 55,127,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,102, 17,237,210, -198, 54, 13, 47,166,247, 11,254,141,252,197,149,211,216, 10,128,172, 38,171,201,106,178,154,172, 38,171,201,106,254,231, 38,182, -136,144,133,133,133,133,133,133,133,229, 29,195, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,176,176, -176, 6,139,133,133,133,133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44, 21,135, 20,180, 6,120,245,131, 16, 74, - 41, 37,236, 97, 97, 97, 97, 97, 97, 97, 97,249, 71,140,201, 7,226, 69, 88,131,197,194,194,194,194,194,194,194, 26, 44,214, 96, -177,176,176,176,176,176,176,176, 6,235, 95, 96,176, 10,119,134, 53, 88, 44, 44, 44, 44, 44, 44, 44,255,164,177,250, 80,188, 72, - 97, 37,247, 54,132, 16,138,119, 48,160, 45, 11, 11, 11, 11, 11, 11, 11, 75, 5,248,160,188,200, 27, 69,132, 44, 44, 44, 44, 44, - 44, 44, 44, 44,172,193, 98, 97, 97, 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11,203,135,206, 95,218,209, 40, 33, - 36,136,213,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44,172,193, 98, 97, 97, - 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,131,197,194,194, -194,194,194,194,194,242, 15, 65, 0,148,216, 18,128, 82,122,206,108,145, 10,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213, -100, 53, 89,205, 15, 79,179, 60,109, 75,252,199,123, 13,165,244, 47,155, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, -201,106,254,215, 38, 30, 27,196, 99, 97,249,151,115,128,112,145,229,231, 5, 74,221,192, 21, 38, 33,233,241, 75,204,166,204, 91, -107,166, 4,120, 66, 98,112,134, 81,156,134,148, 71,145,111,173,201,194,194,194,242, 31,130, 53, 88, 44, 44,255,118,210,252,125, -193,195, 34,112,224, 10,170,143,128, 99,192, 34, 0, 79,222, 90, 83,192,204,135,137,227, 14,170,127, 6, 39,191,197, 0, 66,217, -131,205,194,194,194, 98, 30,255, 72, 37,119,177, 88, 28, 44, 20, 10,127, 32,132,136,216, 83,192,242, 87, 65, 8, 17, 9,133,194, - 31, 36, 18, 73,240, 7,187,147, 59,106, 73,193, 49,117,214, 25,152, 74,167, 30,103, 59,169,180, 38, 95,112,140, 93,240,171,175, -252,173, 52,121,164,131, 70,207,120,236,188,163,114, 86,234,140, 53, 64,241,118,154,255, 63, 39, 54, 66,161,240, 20, 33,196,129, -189, 66, 63, 76, 2, 8,105,208,144,207,159, 88,131,144,118,132, 16,194, 30, 17, 22,214, 96,253,141,104,181,218,122,245,234,213, -155, 32, 20, 10, 99, 8, 33,221,255, 75, 7, 92,161, 80,220,176,182,182, 78,177,177,177, 73,177,182,182,190, 95, 94,250, 7,106, -124,124,157,156,156, 98,236,237,237,159, 21, 77,119,170,211,171,153, 79,139,161,179, 29, 2,123,182,126, 7,219,232, 46, 18,137, - 98, 26, 55,110, 60, 94,163,209,212,251, 96, 15,166,134,113, 6,135,219, 54, 36, 73, 37, 77,202, 53, 56, 7, 71,171, 20, 0,183, - 13,116,112,173,176,102, 14,227, 12,208,118, 15,227,213,178, 27,153,142,206, 87, 95,106,173,192,225,180,133,134,184,188,245, 3, -135,195, 25,195, 48, 76,123,129, 64,240, 45,251,248,253, 48, 17,114, 56,205,111,116,239, 62,127, 74,237,218, 99,253,129,110, 37, -153, 44,242,138,113, 53,106,212, 56, 73, 8,233,255, 14,159, 45, 63,250,251,251, 39, 16, 66,190, 97,207, 4,203,191,198, 96,245, -169, 74,154, 15,172, 70, 46,247,171, 74,242,250, 87, 35,249, 67,170,145,107,189,171,146,118, 21,221,240,149, 43, 87, 36, 97, 97, - 97, 78,173, 91,183,222, 35,145, 72,174, 17, 66,124, 42,162, 35, 22,139, 79,241,120,188, 62, 69,211,164, 82,233, 41, 30,143,215, -175, 88, 90,136, 84, 42,205,145, 72, 36, 47,205,212,125, 33, 20, 10,149, 98,177,248, 69,209,116, 30,143,215, 79, 38,147,157, 42, -150,214,167,120, 90,105,240,249,124,247,184,184, 56,167,248,248,120, 39,161, 80,232, 92, 52, 61, 54, 54,214, 41, 46, 46,238,141, -116, 75,225,243,249,237,228,114,249,129,226,105, 10,133,226,128,185, 26,114,185,252,119, 62,159,223,174,152, 49,252, 83, 90, 69, -205, 85,135, 14, 29,174, 37, 37, 37,121,216,216,216,216, 20,157,103,103,109,211,241,183, 45,235, 38,244,232,210, 97,140, 83,192, - 39,181, 42,168,239, 35,149, 74,175, 53,106,212,104,207,133, 11, 23,156,118,238,220, 41,253, 96,239,222, 3, 1, 2, 16,166, 21, - 67,169,227,211, 4,141,227,199,221,251,240, 30,196,169, 29, 13, 38,147, 29,192,109,131,109, 85, 68, 21,210,228, 25, 90, 50,148, - 58,159,143,230, 59,182,237, 59,150,123, 33,154,231,104, 48,153,236,193, 65,235, 10,105,254,255,220,240,185, 92,238,132,229,203, -151,115, 0,124, 77, 8, 17,254,151, 30,182,141, 43,145, 74, 31, 85,231,221,169,239, 70,154,191, 67, 67, 17, 40,147,201,238, 17, - 66,124,223,151,253,212, 49, 76,248,158,200,200,211,131,189,189,187, 78,169, 93,251,179,226, 38,171,224,251,148,197,139, 23, 15, - 9, 9, 9,113,172, 90,181,234, 40, 66, 8,231, 29, 28,139,149,139, 23, 47,158, 28, 18, 18,226,230,229,229, 53,247, 93,104,178, -188, 95,222, 29, 64, 91, 0, 31, 3,248, 8, 64,163,130,239, 13, 11,166,143,241,170, 87,132,162,159, 13, 11,214, 45,156,223,184, - 20,141,143, 75, 88,175, 97,145,244,162,191,139,127, 47,157,130,214, 0,180,232,103,241,169,159, 23,230,140,109, 86, 73,245,244, -232, 46,154, 31, 23, 73,179,194, 30,208, 7,191, 44,164, 99, 27, 58,170, 6, 86,197,143, 21,104,125, 64, 41,165, 52, 56, 56,152, -170,213,106,122,226,196, 9,198,217,217, 89, 35, 20, 10, 87, 2,144, 89,162, 37, 20, 10,243, 29, 29, 29,243, 36, 18,201, 86, 0, - 66, 74, 41, 68, 34, 81,190,139,139, 75,158, 88, 44,222, 1, 64, 68, 41, 69,199,142, 29,213,148, 82, 42, 18,137,148,230,232,118, -238,220, 89, 73, 41,165, 66,161, 80, 89,144,103,145, 88, 44,254,173, 65,131, 6,185, 34,145, 40,191, 32, 77, 40,149, 74,183, 54, -108,216, 48, 87, 44, 22,231,155,163,107,103,103, 23,103, 50,153,232,209,163, 71,169,147,147, 83, 98, 97,186,173,173,109,156,201, -100,162,135, 15, 31,166,142,142,142,137, 21, 56,166, 28,185, 92,190,180, 81,163, 70,217,114,185, 60,163, 72,218,178, 38, 77,154, -228, 20,166,153, 51,201,100,178, 12, 15, 15,143, 44,185, 92,190, 12, 0,135, 82, 10,185, 92,158, 81,165, 74,149, 76, 43, 43,171, -165,133,105,230, 76,110,110,110,163,156,156,156, 18,157,156,156, 18,109,108,108, 22,184,186,186, 38,167,165,165, 81, 74, 41,173, - 86,173, 90, 42,165, 20,142,181, 63,105, 86,189,249,144,217, 78,129,221,199,111,216,127,243,246,149, 39, 25,105,181,219,143, 89, -106, 93,187,135,181, 5,251, 47, 19, 10,133, 43, 93, 92, 92, 52,135, 15, 31, 54,165,164,164,208, 71,143, 30,209,164,164, 36, 90, -218,117,253,175,159,214, 5,184,211,141,126,123, 66,103,121,132, 93, 89,220,201, 64,163, 47,208, 93,159, 57, 26, 46,143,175, 20, - 65,127,246,255,157,110,172, 81,185, 66,154, 63,215,216,245,104,134, 71,248,154,185,227, 12, 49, 49, 49,116,226,208, 78,198, 51, - 99, 43,189,164, 27,252,247, 87, 72,243,255,231,104,192, 39,159,124,146, 31, 27, 27, 75, 3, 2, 2,148, 92, 46,119,248,127,165, - 53, 81, 35, 55, 84, 10,242, 21, 38, 60,218, 57,145,233, 22, 40,205,168,231,138,230,239,160, 21, 87,160,147,147, 83,250,182,109, -219,168, 66,161, 72, 5,224,251, 62,236, 43, 0,226, 15,116,223, 94,187,246, 97,166,119,111,211,246,218,181, 15,251, 3,221,241, -170, 91, 32, 2, 96,234,146, 37, 75,130, 13, 6, 67,240,214,173, 91,131,187,119,239, 30, 12, 96,226, 91,110,115,213,143, 63,254, - 72, 13, 6, 3,221,186,117, 43,237,222,189, 59, 5,176,218,220,245,229,114,121,245, 90,181,106,237, 8, 8, 8,136,173, 83,167, -142,174, 70,141, 26, 26, 95, 95,223,232,192,192,192,109, 34,145,200,139,109, 17,247,183, 93, 59,101,121,145, 70, 83,167, 78,157, - 6,128, 78,157, 58,117, 26,165,244,227,130,229, 62, 46,250,189,248, 39,165, 52,168,232,239,146, 52, 10,167,146, 52, 75,218, 70, -177,239,165,239, 79,225,206, 0,104, 13,224,114,241, 5,250, 84, 69,179,177,205, 42,169,213,105, 73,244,201,194,111,233,197,182, -238,244,122, 27, 23,250,108,194, 39, 52,105,231, 74,250,101, 93, 91, 85,239,170,104, 91, 17,131,117,248,240, 97,122,230,204, 25, -250,242,229, 75,154,146,146, 66,191,255,254,123,157, 76, 38,203,226,114,185,131,204,213,146, 72, 36, 57, 9, 9, 9,244,251,239, -191,215, 22, 68,155,170, 74,165,210,156,228,228,100,186,112,225, 66,157, 68, 34,137, 4,224, 35, 18,137,242, 95,190,124, 73,197, - 98,177, 89, 6, 75, 42,149,230, 60,121,242,132,138, 68, 34, 37, 0, 31, 71, 71,199,200,243,231,207, 27, 24,134,161,238,238,238, -185, 0,170, 58, 58, 58,190,184,112,225,194,235, 52,115, 13,150, 90,173,166,103,206,156,161,206,206,206,137,197,211, 79,158, 60, -249,134,241, 50,243,120, 58,187,186,186, 62, 40,204,159,151,151, 87, 26, 0,103, 55, 55,183,135,151, 47, 95, 54, 20,152,153, 52, -115,245, 92, 92, 92, 82, 83, 83, 83,233,234,213,171,181, 10,133,226, 62, 0,103, 23, 23,151,212,180,180, 52,186,118,237, 90,173, -149,149, 85, 48, 0,103,115,180, 28, 28, 28, 18,117, 58, 29,205,206,206,166,141, 27, 55,206,191,126,253, 58,205,205,205,165,148, - 82, 90,165, 74,149, 84, 74, 41,252, 90, 15,255,225,246,243,252,220,207, 39,175,219,231,213,104,224,194,211,119, 18,226, 55, 31, -186, 23,236, 16,216,163,147, 57,219,224,114,185,131,100, 50, 89,214, 79, 63,253,164,207,202,202,162,145,145,145,244,214,173, 91, -244,214,173, 91, 52, 37, 37,229,195, 52, 88,251,193,165, 27,253,122,208,141,126,193,219, 6, 59,164,231,221,223, 77,233,217,111, -232,203, 31,170,210, 89,157, 20,121,204, 70,191, 96,186,209,191, 55,157,211,154,103,145,230, 47, 53,186,209,141,126,193, 63,246, -241,204,120, 16,124,151, 94,190,124,153,174, 95,185,132,142, 13,170,164,100, 54,250, 5,211,159,107,244,178, 72,179,200, 36, 18, -137,158, 95,187,118,141, 94,185,114,133,206,157, 59,151, 74,165,210,216,183, 63, 14, 53, 4,244,103, 95, 79,186,206,167, 13,221, -226,227, 74, 47, 85, 44,111,127,181,185,106,239, 43,140, 79,127,112,136,210,204, 23, 52,121, 89, 0,237,228,199,127, 43,147, 85, - 96,174,210,162,163,163,105,114,114, 50, 93,177, 98, 5,181,178,178,122,175, 77,150, 31,208, 3,192,180,165, 75,151,190, 54, 87, -235,214,173, 11,126,252,248,113,176,135,135,199,137,183,216,214,234,165, 75,151,190, 54, 87,235,214,173,163,143, 31, 63,166,158, -158,158,113,229,173, 59,120,240, 96,105,179,102,205,130, 7, 13, 26,164,218,182,109, 27,141,142,142,166,143, 31, 63,166, 75,151, - 46,165,179,103,207,166,191,254,250, 43,237,213,171,151,178,113,227,198,183,123,247,238, 45,182, 48,111, 60, 74,169,176, 96,226, - 83, 74, 11, 13, 38, 15, 0, 31, 0,151, 53, 85,127,246, 6,165,121,145,210, 76, 84,105,198,170,248,188, 50, 12, 88,153, 70,173, -188,237,149,181, 63, 69, 67,168,151, 40,165,127,170,251,194,163,152, 55,242,187, 31,196, 81,219, 86, 32,101,239, 90,112,179, 83, -192,207,203,128,246,218,113, 24,174, 29,193,144,166, 77, 37, 18, 66,230, 87, 36,222, 39,145, 72,192,227,241,144,152,152,136,196, -196, 68,140, 26, 53, 74,112,237,218, 53,155,150, 45, 91,254, 34,151,203, 31, 18, 66,106,155, 17, 22,134,155,155, 27,198,142, 29, - 43,220,190,125,123, 53,133, 66,113,223,100, 50,241,157,157,157, 49,102,204, 24,193,254,253,251,171,216,216,216,220, 53,153, 76, - 2,161, 80, 8,115,235, 92, 18, 66, 32, 16, 8, 96, 52, 26,249,141, 26, 53,186, 23, 26, 26,234,213,186,117,107, 94, 88, 88, 24, -210,211,211,121, 13, 27, 54,124, 24, 26, 26,234,221,170, 85, 43, 94,100,100, 36,114,114,114,168,185,186, 58,157, 14, 34,145, 8, - 28, 14,231,141,116,173, 86, 11, 75,242, 88, 88,252,215,188,121,243,144, 71,143, 30,213,105,221,186, 53,239,201,147, 39, 72, 79, - 79,231, 55,110,220, 56,228,225,195,135,181, 91,180,104,193,123,246,236, 25,114,114,114,204,110, 98, 47, 22,139,225,232,232,136, - 33, 67,134, 8,247,239,223, 95,199,209,209,241, 17,143,199, 19, 58, 56, 56, 96,208,160, 65,194,253,251,247,215,117,118,118,126, -104,102,145, 33, 23, 0, 12, 6, 3, 70,141, 26, 37,179,178,178, 66, 92, 92, 28, 24,134,129,201,100, 2, 0,100,100,101, 60,126, -248,248, 73,216,144, 1,125, 90,171,245, 90,237,205, 59,247,158, 86,171,226,233, 78, 8,173, 82,206,177,172, 45,149, 74, 31,246, -239,223,127, 83,108,108,172,205,160, 65,131,248,209,209,209,200,200,200, 0,159,207,135, 88, 44,126,227, 24,127, 80,228, 6,216, -131, 65,251,152, 52,157, 72,100,227,174,144,187,250, 2,177, 87, 80,213, 81, 4, 46,135, 43,190, 27,169,146, 1,180, 61, 60,210, -237, 45,211,100,218, 71,166,234, 68, 6,187,154,114, 55,119, 15,100,100,100,160,114, 53,127,104,132,142,194, 27, 47,148,114, 16, - 11, 53,255,127,174, 90,250,248,248,184, 84,175, 94, 29,233,233,233,168, 87,175, 30,108,109,109,109, 9, 33,237, 43,124, 12,182, - 85, 17, 33, 23,205, 65,200,114,112, 57,115, 97,224, 45,194,139,180,122,248,165, 62,255,125, 42, 22,180,146, 11,111,237,222,179, -183,146,189, 71, 13,224,248,231,112,182, 17, 97,203,152,122,118,142,214,162,195, 21, 41, 46, 36,132, 4, 58, 59, 59, 95,184,125, -251,182,131, 88, 44,198,253,251,247, 17, 16, 16,128, 21, 43, 86, 56,218,218,218, 94,121, 31,138, 11, 41,165, 52, 12, 56,250,227, -163, 71, 91,119, 68, 68, 28, 27,236,237,221,117,144,175,239,130,209,253,251, 15, 31, 55,110, 28,150, 44, 89,130,195,135, 15,163, -121,243,230, 24, 57,114,164, 33, 54, 54,118,123, 5,139, 5,215, 46, 91,182,108,236, 55,223,124, 83, 92, 83, 31, 19, 19,243, 99, - 89,235, 6, 6, 6,186, 63,127,254, 60, 97,194,132, 9,245,118,236,216, 33,145, 74,165,200,206,206,198, 47,191,252,130,105,211, -166,129, 16, 2, 74, 41,126,253,245, 87,233,103,159,125,214, 40, 34, 34, 34,161, 74,149, 42,230, 84,223, 32, 0,196, 0,164, 5, -147, 12,128,116,247,238,221,214, 61,122,244,176, 42, 72,147, 0,144,176, 13,189, 74,164, 68, 47, 82,228,156, 31, 43,118,173,117, - 45,158, 86,124, 30,165,180,107, 89, 26, 22, 94,219, 93,205, 93,191,232,219,167, 13, 33,228,242,159,196,128,218, 46, 94,126,200, - 57,187, 31, 18, 30,129,132, 91, 48,241, 8, 56, 47, 31,163,178,152, 15, 3,165,129, 21,172, 63, 5,137, 68, 2,137, 68, 2, 66, - 8,178,178,178, 96,101,101,133,189,123,247,138, 87,175, 94, 93, 75, 42,149,222,180,182,182, 94, 84,158, 97, 1,128,103,207,158, -161,110,221,186,228,216,177, 99, 86,163, 71,143,230, 1, 64, 76, 76, 12,106,213,170, 69, 46, 94,188,168,152, 52,105, 18, 17,137, - 44,187,150, 5, 2, 1, 38, 79,158, 76,174, 95,191, 46,151, 74,165,120,242,228, 9,242,243,243, 49,105,210, 36,222,141, 27, 55, -228, 50,153, 12, 17, 17, 17,208,104, 52, 22, 25, 55,157, 78, 7,129, 64,240,198, 58,132, 16,232,245,122, 8,133, 66,179, 77,129, -131,131,195,236, 6, 13, 26, 28,184,116,233,146,189, 68, 34,193,227,199,143,161, 82,169, 48,127,254,124,233,181,107,215,236, 21, - 10, 5,194,195,195,161, 82,169, 44, 50,109,133,219,127,241,226, 5,124,124,124,200,241,227,199,157, 70,142, 28, 41, 46, 60,166, -190,190,190,228,196,137, 19,206,254,254,254,251,157,156,156,102,149,165,197, 48, 12,146,146,146, 16, 18, 18,130,151, 47, 95, 34, - 45, 45, 13,233,233,233,200,203,203,131,209,104,124, 85, 63, 46, 47,247,248,238,125, 71, 31, 74, 36, 18,105,128,175,143,199,227, - 39,161,169, 18,137, 68,234,233,225,225, 75,200,220, 18, 15,134, 66,161, 88, 36,145, 72,110, 30, 57,114,164,246,166, 77,155, 68, -233,233,233,136,137,137, 1, 33, 4, 98,177,248,245,196,229,114, 63,188,199, 15, 33, 4, 68,231, 3, 66,234,221,122,169,180,107, -217,117,128, 0,145,167, 0,198, 0,112,120,104, 83,219,157,119,248,177,210, 25, 20,181,161,133, 63, 96,198,201, 39,132, 0,250, -234, 0,105,112,230,185,209,190,249, 39, 99, 4, 9, 9, 9, 16, 8, 4, 16,137, 68,168,215,238, 83,222,238,135, 6, 23, 16,212, -129, 30,126,102,105,190,249,103,234,251,217,179,103,203,138,106, 14, 31, 62, 92,102,109,109, 61,187,194,230, 74, 41,109, 10, 19, -253, 54, 36, 65,237,185,224,120,178,255,203, 84,181, 63, 40,190, 3, 12,117,223,214,100, 17, 66,218,136,197,226, 72, 66, 72,139, -183, 50, 87, 10,225,205, 61,123,246, 86,178,171,252,202, 92,193,168, 1,248, 18,184, 56,218, 96,203,248,182,118,142, 54, 18,139, - 76, 86,129,185, 58,127,235,214, 45, 7,177, 88,140,224,224, 96, 8, 4, 2,136,197, 98,212,170, 85, 11, 27, 55,110,116,180,179, -179,123,175, 76,214,226, 71,143,182, 45, 10, 9,121, 54, 53, 48,208,191,167, 76,102,247,213,160, 65,214, 51,102,204, 56,118,228, -200,145,173, 31,127,252,113,250,157, 59,119,126,162,148,238,183,240,252, 16, 66,200,186,229,203,151,127, 85,104,216,102,204,152, -241,235,145, 35, 71, 22,125,252,241,199, 73,119,238,220,153, 64, 41, 93, 87,150, 70,126,126,254,145,153, 51,103, 90,127,242,201, - 39,133,191,113,237,218, 53,108,223,190, 29, 50,153,236,141,101,187,119,239,142, 17, 35, 70,216,234,116,186,223,203,210,116,114, -114, 10,186,117,235, 86, 0, 0, 1, 0, 81,161,193,122,242,228,137, 77,110,110,174,141, 92, 46,183,113,117,117, 85, 20,154,172, - 79, 62,249,196,134,207,231,183,100, 61,213, 27,148,232, 69,138, 26, 28,115,210, 42,186,188,185, 38,203, 34,131, 69, 41,189, 12, -160, 85, 73, 11,233, 51, 83, 32,130, 9, 18, 46,129,148, 91,196,100,129, 1, 47, 39, 21, 21,109,136, 91,244, 69, 40,145, 72, 32, - 22,139, 95, 71,114,114,114,114, 64, 8, 41,215,108, 20, 26, 7,185, 92, 14,181, 90, 13,189, 94, 15,177, 88,252, 58,205,104, 52, -194,104, 52, 66, 34,145, 64, 36, 18, 89, 28,193, 50, 24, 12, 8, 9, 9, 65, 68, 68, 4, 56, 28, 14,100, 50, 25, 12, 6, 3,158, - 62,125,138,132,132, 4,240,120, 60, 72,165, 82,139, 12,140,201,100,130, 80,248,231,250,189, 6,131,193,162, 8, 22,135,195,129, - 74,165,162,207,159, 63, 71,116,116, 52, 4, 2, 1,172,172,172, 32, 20, 10,145,150,150,134,248,248,248,215,105,150,228,175,112, - 89,137, 68, 2,165, 82, 89, 88,215,237,117,154, 86,171, 5, 33, 4, 92, 46,183,220,243, 99, 50,153,144,152,152,136,180,180, 52, -196,197,197, 33, 61, 61,253,181,201, 98,152,183,239,183,242,222,189,123, 52, 52, 52, 20, 90,173, 22, 34,145, 8, 98,177,248,141, - 79, 30,239, 3,236,234,109,125,160, 53, 12,252, 14,233,249, 6, 81,154, 94, 96,237, 28, 24, 4, 68,158, 4, 56, 60, 64,108,139, - 38, 53,171, 34, 38,203, 36, 11, 79,209,137, 65,208, 17,235,124,109,205,210, 52,241,219,167,229, 25, 68,209,122, 71,171, 26,181, -235, 35, 37, 37, 5, 34,145, 8, 34,145, 8, 13,154, 7, 33, 50,195, 36, 13, 77, 80, 75, 65,209,193, 44,205,255, 95, 79,213,228, -114,121,211, 22, 45, 90,144,162,154, 93,186,116, 1, 33,164, 22, 33,196,223,162,253, 95,227, 45,132, 94,218, 4,124,250,109,104, -146,202,237,240, 19,141,111,183,158,159,218,173, 60,151,234, 31,150,164,241, 2, 99,156, 8,170,175, 95, 81,147, 69, 8,105,173, - 80, 40,142,173, 89,179,198, 75, 44, 22,159, 36,132, 84,232, 5, 40,151,112, 55,124,255,213,128, 74,182,133,230,202,160, 2,120, - 18,128, 47, 1,120, 18,184, 56, 57, 96,254,136,246,118, 82, 49,255,160, 5, 70,117,247,186,117,235, 28,139,155,171,194,169, 94, -189,122,152, 53,107,150,163,157,157,221,174,127,248, 63, 64, 7, 27, 27,155, 29, 65, 65, 65,183, 18, 21,138, 17, 73,245,235, 11, -207, 91, 91,231,124,148,147, 99,237,249,228,137,222, 15,120, 12, 96,125, 92, 92, 92, 39,115,205, 21, 33,164,191,181,181,117,112, - 80, 80,144, 94,161, 80,196,174, 88,177,226,203,175,191,254, 26, 75,150, 44,193,204,153, 51, 55, 1,248,130, 82, 58, 61, 46, 46, -206,173, 60,115, 5, 0,201,201,201, 3,167, 76,153,146,158,158,158, 14, 0,168, 85,171, 22,178,179,179, 49,113,226, 68,124,251, -237,183, 0,128,186,117,235,130, 82,138,148,148, 20, 44, 91,182, 44, 37, 57, 57,121, 88, 57,127, 40,227,246,239,223,223, 72,175, -215,187, 23, 20, 3,138,178,179,179,173, 50, 51, 51, 21,122,189, 94,198, 48,140,204,198,198, 70, 14, 64, 58,100,200, 16, 94, 72, - 72, 72,128,209,104, 76, 96, 61,213, 27,230,165, 84, 47, 82, 65,142,191, 77,164,170,164, 8,152,217,193,138, 2, 33, 82,244,179, - 40, 92,130, 71,177,247,174,192, 46,176,254, 27,209, 43, 41,151, 64, 98,101,141,200,184, 24, 8, 64, 66,222,214, 96, 21,154,172, -208,208, 80,124,244,209, 71,170, 57,115,230, 60, 86, 42,149, 77,179,178,178,166,153, 99, 6,172,173,173,113,253,250,117,218,171, - 87,175,220, 85,171, 86, 25, 11,211,110,221,186, 69,219,183,111,159, 55,111,222, 60, 90,188, 88,206, 28,131,181,106,213, 42,218, -182,109,219,156,219,183,111, 83,153, 76, 6,169, 84,138, 85,171, 86, 25, 91,181,106,149,115,241,226, 69, 42,147,201,254,244,111, -167, 60, 83, 84,104,176,138,154, 30, 14,135, 3,134, 97, 44, 50, 88,169,169,169,115,195,194,194,250,180,107,215, 46, 37, 36, 36, -132, 90, 89, 89,193,218,218, 26, 83,167, 78, 85,213,173, 91, 55,245,209,163, 71,175,211, 44, 41, 42, 43,220,190, 66,161, 64, 72, - 72, 8,237,218,181,107,234,250,245,235, 53,133,105, 79,158, 60,161,157, 59,119, 78, 9, 9, 9,233,147,156,156, 60,175,188, 8, -214,203,151, 47, 95, 71,172, 52, 26, 13,210,211,211, 17, 23, 23,247,186,136, 80, 45,179,234, 52,160,111,183, 58,106,181, 90, 21, -250,236,121,108,173,154, 1, 78,106,181, 90, 21, 19, 27,251,140,210,217, 37,186,176,188,188,188,105,106,181,186,233,130, 5, 11, - 30,247,233,211, 71, 21, 30, 30,254, 39,115, 37, 22,139, 63, 76,131,197, 97, 92, 64,104,139,171,207,243,109,218,119,235, 39, 36, -201,119, 0,125, 62, 32,178, 5, 68,182,224,201,236,209,185,101, 93,238,182, 91,185, 46,160, 76, 51, 8, 68,238,229,106,242,169, - 51,192,180, 60,251, 76, 99,219,162,247, 88, 97,102,102, 38,184, 92,238,107, 51, 36,149,201,240, 81,207, 33,156, 95,239,104, 93, - 0,218, 28,132,235,110,110,118,133, 66,225,228,239,191,255, 94,144,149,149, 5, 14,135,243,127, 77,169, 20,163, 71,143, 22, 89, - 89, 89,205, 52,123,223, 15, 4, 8,192, 23, 53, 1, 67,191, 13, 79, 86,187, 29,121,164,246,253,110,209, 22, 73, 96,221, 70, 24, -213,198, 73,178,232, 68,106,192,195, 4,149, 23, 96,154, 0,163,174,129,165, 38,139, 16,210, 82,161, 80, 28,191,119,239,158,180, - 75,151, 46, 88,182,108,153, 76, 34,145,156, 36,132, 88,252,192, 87,230,155,190,158,183,250,183,148, 71, 63,117, 4,244,202, 87, -198,170,200,148,154,207, 96,214,150, 11, 57, 6, 3, 29, 96,174,166, 90,173, 30,250,197, 23, 95,100, 28, 60,120,240, 79,230, 74, - 44, 22, 35, 42, 42, 10, 11, 22, 44,200,204,204,204, 28,246, 79,154,171,175,191,254,122, 65,124,124,188,223,217,179,103,121,105, -105,105, 78,203, 55,111,206, 57,144,147,147,185,232,201,147,240,233, 53,107,250, 76,173, 93,123, 88,105, 93, 56,148,102,174,190, -250,234,171,221,241,241,241,245,206,157, 59,199, 79, 75, 75,115,255,234,171,175,176,116,233, 82,204,156, 57,115, 35,128, 81,133, -181,163,205, 69,167,211,133,103,101,101,117,237,216,177, 99,118, 86, 86, 22,106,215,174,141,110,221,186,193,197,197, 5,110,110, -110,232,209,163, 7,124,125,125,145,145,145,129, 1, 3, 6,100,166,165,165,117,164,148,150,217, 10, 61, 35, 35,227,197,174, 93, -187,158,127,253,245,215,245,227,227,227,107, 0,176,207,203,203,147,229,229,229,137,116, 58,157,196,214,214,214,182,110,221,186, - 14, 35, 71,142,148,223,191,127, 63, 32, 33, 33, 33, 15, 64, 52,107,171, 94,155,154, 82,189, 8,128,180, 2,163,163, 43,246,153, - 86,206, 60,115,215, 45,241,187, 25,203,149, 31,193, 42, 13, 61, 48,107,251,254,109, 26,161, 71,117, 88,251,213,129, 84, 44,134, - 68, 40,132,196,214, 30, 90,134,193,230,168,100,149,146,210,153, 21, 56,144,175,139, 7,197, 98, 49,242,243,243, 49,118,236, 88, - 77,223,190,125,179,163,162,162, 70,231,230,230,214,161,148, 62, 50,199, 12, 40,149, 74,204,153, 51, 71, 61,117,234,212,151,121, -121,121,245, 4, 2,129, 65,175,215,227,251,239,191,215,140, 25, 51, 38, 58, 59, 59,187,161, 64, 32,208, 91,250,178,229,243,249, -224,241,120,134,156,156,156,122, 83,166, 76,137, 88,176, 96,129, 90, 32, 16, 64, 32, 16, 24,114,115,115,107, 77,155, 54, 45,124, -218,180,105,106, 62,159,111, 81,100,172, 48, 34, 84,188,136,176,104,164,200, 92, 12, 6,195,133,212,212,212, 58,223,124,243,205, -131, 85,171, 86,169,228,114, 57, 68, 34,145, 46, 53, 53,181,246,151, 95,126,249,112,217,178,101, 42,185, 92,110, 81, 4, 75,175, -215,131, 97, 24,172, 89,179, 70,245,205, 55,223, 60, 76, 75, 75,171, 93,112, 65, 98,213,170, 85,170, 47,191,252,242, 65, 74, 74, - 74, 29,131,193,112,193,140,104,157, 41, 55, 55, 23, 60, 30, 15, 79,158, 60,209, 10, 4, 2,112, 56, 28,188,120,241,226,181,193, -178,179,179, 11,168, 83,171,166,255,111,187,247, 95,150, 8, 68,162,166,141, 26,212,120, 25, 29, 19, 79, 41,137, 46,231, 26,122, -164, 84, 42,235,196,197,197,141, 30, 62,124,120,246,119,223,125,167,201,207,207,127,227,133,195,231,243, 63,188,167, 16, 7, 82, - 16, 72,158,167,106, 21, 98,142,145,224,217,161, 87,230, 74,108, 3,136,109, 1,177, 45, 42, 85,114,199,157, 40,149, 2, 28, 8, - 97, 50, 56,153,113, 67,202, 64, 32,125,146, 2, 5, 95, 40, 33,201,201,201,175,141, 80,225,228, 85,189, 6,238,199,228,203, 65, -168, 8, 92, 88,210,149, 72, 87,123,123,123, 94, 82, 82,210,159, 52, 3, 2, 2,184, 6,131,161,163,217, 74,137, 38, 87,128,249, -250, 89,170,198,237,143,135, 42,223,241,139,126,149, 72, 76,217,192,189,213, 8,172,230,134,241,189,235, 10,103, 28, 78, 11,188, - 27,173,170, 6, 30, 29, 13, 38,223,209, 2, 99,208, 66,161, 80,156,188,123,247,174, 84,161, 80,224,229,203,151,104,212,168, 17, -126,249,229, 23,169, 84, 42, 61, 65, 8,105, 99,201,105,186,149, 76, 99,242,243, 76, 77, 39,239,143, 77,126,148,100,124,195, 92, -165, 41, 41,190,248,241, 72,118, 86,174,230,211,155,177,229,223, 71, 69,174,249, 7,217,217,217, 29,102,206,156,153,145,150,150, -246,198,181, 30, 19, 19, 83,104, 4,218, 80, 74, 67,254,169,203,211,218,218,122,208,162, 69,139,112,247,238, 93,116,233,210, 5, - 87,174, 92, 65,102,102, 38,246,156, 60,249,124,215,243,231,211, 11,235,100,149,212,133, 67,105, 88, 89, 89,125,183,104,209, 34, -220,187,119,239,181,102, 70, 70, 6, 22, 45, 90, 20, 15, 96,140,165,230,170,144,148,148,148, 59,225,225,225, 29,107,215,174,253, -116,205,154, 53,241,174,174,174,204,200,145, 35,241,197, 23, 95,192,209,209,209,180,114,229,202,216,150, 45, 91, 62,137,136,136, - 8, 82, 42,149,143,205, 56, 63, 52, 61, 61,253,250,166, 77,155,110,182,107,215, 78, 54,120,240, 96,167,195,135, 15,219,171, 84, - 42, 55,129, 64,224,172,211,233,132,161,161,161,188, 3, 7, 14,184, 62,125,250, 52, 74,173, 86,223,169,104,222,255,131,220, 45, -136, 70,157, 43,246,121,183,156,121,230,174, 91,218,247,242,150, 43,219,232,148, 55, 13,170,134, 57,163,107, 42, 84, 55, 6, 55, -161,201, 35, 91,208,148,126, 53,232,181,214,118,116,184, 55, 81, 14,173, 96, 55, 13, 38,147,137,166,164,164,208,148,148, 20, 58, -127,254,124,163, 68, 34, 81, 75,165,210,149,176,176,155, 6,185, 92,158,239,227,227,147,103,109,109,253,186,155, 6,133, 66,145, -239,231,231,151,103, 99, 99,243,186,155, 6,153, 76,150, 79, 41,165,114,185,220,172, 86,132, 86, 86, 86, 57,249,249,249, 84, 42, -149, 22,118,211, 32,176,182,182,222,228,227,227,147, 39,151,203, 11,187,105,224,219,218,218,110,240,245,245,205, 83, 40, 20,249, -102,182,208,139,139,143,143,167,241,241,241,180,114,229,202,137, 69,211, 99, 98, 98,104, 76, 76, 12,117,119,119,175, 80, 55, 13, -142,142,142, 75, 27, 54,108,152,233,232,232,152, 81, 36,109, 89,195,134, 13,179, 10,211,204,108,249,151,209,160, 65,131, 44, 71, - 71,199,215,221, 52, 56, 58, 58,102, 20,104, 91,212, 77,131, 68, 34, 25, 37, 22,139, 19,197, 98,113,162, 72, 36, 90, 80,165, 74, -149,212,125,251,246,209,149, 43, 87, 82,133, 66,241,170,155,134,128,238, 77,171, 55, 27, 54,221, 49,160,199,119,111,211, 77,131, - 84, 42, 93, 41,145, 72,212, 11, 23, 46, 52, 42,149, 74,106, 48, 24,104,193,195,235,195,106, 69,248,139,111,117,250,179,255,145, -136,121, 94,161,223,180,146,106, 30,207,175, 67,233,239,159, 80,122,226, 11, 74, 47, 76,166,119, 54,142,164,205,188, 68,166,235, - 19, 43, 63,163, 27,252,254, 48,171,107,133, 95,106, 85,167, 63,251,159,120, 62,215, 43,116,104, 75, 55,205,230,245, 43,233,237, -219,183,233,147, 39, 79,232,203,151, 47,233,137, 67,251,104,179,106,210, 87,154, 63,251, 31,177,164,187, 6, 0,205, 69, 34, 81, -254,138, 21, 43,232,173, 91,183, 94,107, 30, 57,114,132, 74,165, 82, 21, 96,102, 43,100,128,208,117, 1,159, 24,215,251, 93,155, -217, 94,158,159,113,108, 50,165,143,183, 81,250, 75, 32,165, 91, 27, 83,186,239, 99, 74,143, 14,163,183, 86,246,166,205,189, 4, - 6,186,193,239, 42,221, 18,208,222,220,124,242,249,252,220,131, 7, 15,210,196,196, 68,122,229,202, 21,122,239,222, 61, 26, 22, - 22, 70, 99, 99, 99,233,241,227,199, 41,159,207,215, 0,176,184,149, 98, 99,103,120, 6,249, 8,146, 30, 46,110, 78,233,225, 1, - 52,109,215, 32,218,181,166, 34,179, 73,101, 94,187,183,104,109, 85,215,222,222, 62,253,248,241,227, 52, 42, 42,138, 94,190,124, -153, 58, 57, 57,165, 3, 8,252,167,175,207,160,160,160,219,148,210,224, 46, 93,186, 4, 3, 56, 21, 20, 20, 20, 28, 25, 25, 25, -220,168, 81,163, 91, 40,163, 11,135,178, 52, 63,250,232, 35, 61,165,148,118,233,210,133, 2, 72, 12, 10, 10,162,145,145,145,180, - 81,163, 70,186,119,212,122,141, 11, 96, 24,159,207,223,108,103,103,119,209,214,214,246, 2,151,203,253, 5,192, 96, 75,158,119, - 37,104, 86, 2, 16,128, 87,253, 37, 53, 40,248,238, 6,182, 5,225,127,163, 85,164,185, 11,246,246, 66,243,207,170,145,203, 3, -171, 34,111, 64, 85,228,127,238, 77,174,125,234,133,118, 21, 25,109,187,208, 96, 29, 61,122,148, 86,174, 92, 89,169, 80, 40,174, - 1,240,169,200, 8,222,182,182,182,167,184, 92,110,159, 18,210,250, 21, 77,179,182,182, 14,177,177,177,201,177,178,178,122,105, - 78, 62,173,172,172,194,164, 82,169,210,202,202, 42,172, 88,151, 0, 61,236,237,237,143, 23, 75,235, 94, 60,173,180,125,119,113, -113,137, 75, 76, 76,164,105,105,105,212,195,195, 35,177,184,241, 74, 78, 78,126,195,120, 89, 58,122, 57,143,199,107,231,232,232, -120,160,188,180,178, 52,157,157,157,127,231,241,222,124,248,151,148, 86,145, 81,214, 1,248, 86,170, 84, 41,117,249,242,229, 84, - 46,151,167, 22,157,231,215,234,243,239,111, 63,207,207,253, 98,202,207,251, 28,107,244,172, 85,145,145,219, 1,248, 40, 20,138, -107,158,158,158,202,243,231,207,151,105,176,240,111, 29,181,126,127, 13, 1,221, 88,163, 57,221, 80,227,120,216,108,207,167,195, - 26,203,180,193,203,187, 80,122, 97, 50,189,245,243, 23,180,169,151,240,149, 17,218,232,127,146,254,234,219,138,174,174, 38, 52, - 75,115,179,119, 75,186,209,255,100,232, 44,207,167,159,212,119,212,237,222,182,145,190,120,241,130, 30, 57,176,139, 54,169, 90, - 96,174, 54,212, 56, 67,127,174,209,214, 44,205, 18, 76,214,150, 45, 91,232,139, 23, 47,232, 31,127,252, 97,150,185,122, 67, 19, - 32,244,231,128,158,198,245,126,215,166, 5,201,179,191,104, 44,214, 14,168, 43,212,245, 8, 20,232, 59, 84, 23, 24,155,121,242, - 76,117, 92, 57, 76, 13, 71,208, 14,126, 18, 45,221,224,119,149,110,168,209,209,220,124, 10,133,194, 88, 20,233, 19,167,248, 36, - 18,137,210, 74, 51, 88,229,157,247,198,206,240, 12,242, 21, 37,157,159,215,142,118,171,173,200, 48,199, 92,149,167, 9,160,174, -131,131, 67,250,214,173, 91,169,179,179,115,154, 57,230,234,239,184, 62,173,173,173,119,228,231,231, 7,159, 62,125, 58, 56, 40, - 40, 40,120,199,142, 29,193,215,174, 93, 11,150, 74,165, 59, 74,235,194,161, 6,208,177, 44, 77, 43, 43,171,224,188,188, 60,122, -250,244,105, 26, 20, 20, 68,119,236,216, 65,175, 93,187, 70,165, 82,105,240,123,117,111,178,154,236, 84, 17,131,245, 46, 79, 0, - 0, 58,120,240, 96,149, 84, 42, 77, 1,208,253,191,116,241, 57, 56, 56,220,112,118,118, 78,113,118,118, 78,113,116,116,188, 95, - 82,186,131,131,195,253, 15,249,198, 3,224, 43, 16, 8, 98,248,124,254,179,162,233,142, 1,221,155,122, 55, 31, 58,211, 57,176, -123,231,183,205, 39,128,238, 82,169, 52,165, 87,175, 94,202, 15,206, 96, 81, 10,186,186,154,176,208,100, 61,158,233, 25,214,173, -166, 84,255,203,132, 14,180,105,149, 98,230,106,171,167,200, 34,205, 2,147,245, 96,134, 71, 88, 91, 95,185,113,209,204,241,180, - 73, 85,201,155,230,202, 18,205, 98, 38, 75, 42,149,230,205,158, 61,219,236,200,213,159, 52, 55,251,121,208,159,253,119,190, 50, - 79,229, 77, 53, 54,211,181,126, 30,239,203,121,111,236, 12,207,143,124, 69, 33,230, 70,174,204,209, 4, 80,215,214,214,246,169, -185,145,171,191, 99,223, 1,116, 24, 61,122,116,112,100,100,100,240,203,151, 47,131,175, 93,187, 22,220,179,103,207, 96, 0, 29, - 74,234, 39, 75,223,171,151,182, 46,135, 51,190, 28,205,254,163, 71,143,166,145,145,145,244,229,203,151,244,218,181,107,180,103, -207,158, 20, 64,127,214,184,176, 6,235,125,157,254,145, 26,192, 10,133,226,254,193,131, 7, 79,169,213,234, 5,148, 82,237,127, -169, 16, 57, 45, 45,173,153, 37,233, 31,104, 69,198,103, 0, 60,255, 84,105, 63,228,240, 77, 0, 55,223,209, 54,142, 16, 66,206, -156, 58,117,106,134, 66,161,232,244,193, 29,196,177, 17, 58,172,241,190, 7,161,112,113,205, 74,210,169,223,119,161,100,209,233, - 27,158, 75,122, 57,197, 54,243,150, 69,129,207,252, 8,162,189,131, 97,209, 90, 11, 53,239, 64, 98, 88, 92,167,178,116,234,194, - 30, 32, 63,158,220,230,185,180,167,125,108,179,106,242, 88, 80,252, 8,145,234,166, 69,154,111,158,147,235,132,144,206,203,151, - 47,223,174, 82,169, 70, 80, 74, 47, 90,254,240,224, 36, 67,105,152, 5, 3,183, 38, 40,132,101,108, 76, 5, 14,158, 32,131,147, -242,190,156,178, 91,201, 52, 6, 64,224, 59,190,151, 30, 0,168,241,158,221,223,103, 8, 33,216,181,107,215, 32,127,127,255,106, -161,161,161, 47, 85, 42,213, 78, 74,233,153,162,117,149, 8, 33, 71,127,124,244, 72,185, 54, 52,244,186,142, 97,174,151,163,185, -167, 64,243, 59,127,127,255,192,208,208,208, 16,149, 74,181,156, 82,186,135,173,154,196,242,190,242,143, 24,172,220,220,220,250, -236,161,103,249, 27, 30,244, 90, 0,223, 23, 76, 31, 30, 69, 76, 86,125, 15,201,216,131,163, 37, 42, 80, 18, 15, 62,179,210, 98, -115, 85,130,201,106,228, 41,249,246,143, 81, 18, 21, 40,146, 65,241,211,219,152,171,162, 38, 11, 64,213, 10, 11,244, 14,213, 3, -136, 2, 33,209,152,131,210, 43, 71,207,193,235,191,217, 44,255,140,201, 2,112,166,156,101, 40,128, 11, 5,147, 57,154,123, 0, -176,134,138,133, 53, 88, 44, 44, 44,127,147,201, 58, 16,112, 23,233,220,137,224,160, 42, 96,140,129,210,152,140,177,209,186,183, -212,188,141,116,242, 13,184,240,133,208, 24,129,124, 93, 50, 70,191,133,230, 95,240, 6,199,171,186, 81, 37, 51,155,189, 52, 88, - 88, 88, 88,131,197,194,194,242, 54,188,138,234,196, 23, 76,239,175, 38, 11, 11, 11,203,127, 8, 2, 32,168,148, 63,136,231,204, - 22, 33, 36,168, 2,127, 64,207,177,154,172, 38,171,201,106,178,154,172, 38,171,249,223,210, 44, 79,219, 18,255,241, 94,243, 79, -180, 34,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,144, 39, 14, 88, 88, 88, 88, 88, 88, 88, 88, 88,222, 41,255, -104, 29, 44,169,131,175, 43,120,156,218,132,161,254, 0, 64, 57, 36, 12, 70,230,145, 42,253, 89,210,219,106, 43, 42,249,217, 81, - 8,247, 19,232,250,228, 37,132,103,190,173, 94, 45, 63,235, 94,206, 14,138, 65,201, 25, 57,219,159,132,229, 29,182,100, 93, 27, -155, 42,214, 98, 59,219,222, 90,189,161,166, 80, 32,136,213,103,231,254,146,153, 25,145,199, 94,126, 44, 44, 44, 44, 44, 44,255, - 49,131, 85, 37,176,229, 93,177, 88,226, 5, 0, 12,165, 96, 40,160,204,205, 14, 78,138,184,219, 17, 0, 28,189,234,159,230,139, -173,234, 51,244,213,124, 19, 3, 24,245,154,168,156,232, 91, 13,205,217,176,220,201,239,147,160, 14, 65,189,186,118,253,216,175, - 86,205, 90,222, 0,240,248,201,227,136, 99,199,142,135,203,157,252, 14,230,167,134,255,241, 54, 59, 70, 33,254,161, 65,131,186, - 45,238,221,187, 63, 15,192, 87,111,123,160,236,237,229, 99,207,252, 62,177,213, 71,189,150,201, 0, 88,100,176,196,118,182,189, -123,116,235, 84,119,210,184,209,156, 47, 38, 46,244,186,123,253,210, 18,133, 91,205,108,202, 24,206, 40, 83,250, 93, 45,109, 64, - 99, 22, 22, 22, 22, 22, 22,150, 15,204, 96,137,197, 18,175, 91,151,142,217,253,113, 45, 14, 0, 16, 84,207, 5,211,231,175,233, - 64, 8, 9, 7,128,238, 95,204,241,157, 55,109, 28,110,132,164,130, 82,138,186,213,237,209,185, 71, 31,179, 54, 42,113, 9,104, -216,175,111,223,129, 19, 39,126,215,253,197,139, 23,209,187,119,239,190, 10, 0, 45, 91,181,170,190,112,225,194,190,203,108,237, - 68, 18,151,128, 4,117,114,232,221,138,236,148,164,146,119,165, 0,159,218,131,246,254,186,134,211,166,227,167, 3, 36,149,188, - 23,169, 19, 34, 18,204, 89,215,209,209,241, 27, 62,159,111, 13, 0, 12,243,127,223, 83,173, 50,215, 5, 0,140, 38, 70, 97, 87, -201, 63,143, 43, 16,155, 68, 34, 65,104, 94,126,254,246,156,248,208,205,101,105,106, 13,134,192,111,199,124,198,121,240, 50, 3, - 94,129, 45,185, 43, 23,205, 0, 99, 50,216,142,159, 54,191,247,189,219,123, 1,204,190,204, 94,138, 44, 44, 44, 44, 44, 44,255, - 1,131, 5, 0,114, 9, 15,225,145,201, 0, 0, 27, 9, 48,118,212, 80,100,164,167,249,234,140, 12, 62, 31, 58, 24,247,195,146, - 16, 30,149, 6, 74, 41,124,221,165,102,111,148, 11,166,193,231,195, 63,111,125,250,204,153, 59,223,207,252,254, 55, 66, 94,245, -222,189,241,151, 77, 77,103,205,158, 53, 98,240,208,193,237, 15, 28, 56, 16,130,242, 70,170, 46,109,167,136, 98,205,210,197, 11, -132,241,233, 26,205, 55, 19,167, 50,223, 77,248,102, 37,128, 79,205, 89,151,207,231, 91,199,199,199,203, 57,156, 55,171,167,253, -184, 96,234,149,246,189,150, 61,143,142,205,126,112,250,200,145,134, 1, 1, 1,136, 79, 72,110,190,100,213,134, 58,174,222, 13, - 63,203,203, 85,247, 82,166,133,150,216,107,180,136,207, 15,153,187,228,231,186,140, 77,117,206,244, 17, 93, 16,232,237,134,132, -212,108,180,234,216,157, 23,124,247,110, 7, 0,172,193, 98, 97, 97, 97, 97, 97,249,128,224, 0, 0, 33,164,196, 14,251, 76, 38, -138,240,168, 36,132, 71, 37,225, 78, 88, 26,244,148,143,149, 75,230, 98,249,162,217,200, 84,115,240,199,141, 56, 60,139, 74,198, -179,168,100,164,103,229,255,105,253,226, 77, 45,151, 47,150,214, 91,185,210,122,105,135, 86,178, 54,118,182,182,182,207, 67,126, - 83,206,154,144, 82, 99,238,183,113, 2,190, 78, 20, 47,147,203,154,237,223,191, 47,192,217,209, 73, 38,151, 43, 38,203,220,235, -110,177,177,169, 99, 93,150,102,113,164,206, 53,186,119,255,184, 83, 59, 23, 23,103,102,244,202,224,176,154, 53,252, 13, 62,213, -125,154, 75,157,125,187,151,182, 78, 81, 77,134, 97,192,225,112,144,146,146,130,196,196, 68, 68, 70, 70,226,217,179,103,136,139, -139, 78, 97, 40,229,155,192,112, 92, 93,221,193,227, 9,225, 85,197, 19, 63,175, 92, 36,157, 63,103,122, 35,177, 76,120,152, 16, - 66, 74,210,212,100,102, 29, 56,113,234, 76,194,201,221, 63,155, 0, 32, 53, 43, 31, 23,238,190,192,253,208, 56,139, 78,214, 95, -209,116,149,213,100, 53, 89, 77, 86,147,213,100, 53,223, 7,205,210,188,200,191,218, 96,149, 70, 68, 92, 38,194, 35,147, 81,223, -191, 18,188,171,184,226,206,179, 44,236,188, 16,135, 45,167, 99,112,225, 97, 26, 24,158, 2,201,185,192,243,232, 20, 60,143, 73, - 47,171, 95,101, 0, 0, 87,196,239,247,237,183, 57, 19,107, 5,228, 54,185,116,114, 44, 42, 57, 62, 15,152, 50, 37,123, 44, 87, -196,239,103, 91, 89,177,123,234,196,241,131, 20, 82,169, 80,167,213,161, 90, 85, 79,241,184,175,199,126, 70,108, 69,187,205,221, - 25, 43,247, 0, 91,145, 68,178,121,254,156,201,162,159,254,120, 30,171,212, 65,121,240,102,202,203,239,166,206,202,228,241,197, - 63, 91,185, 7,216,154,171,101, 48, 24,160,213,106,161,211,233,160,215,235,145, 16,247,180,251,249, 63, 38,117,172, 90,217,174, -163, 72, 44, 6, 5,144,171, 54, 34, 50, 73,133,182, 31,181,231,214,175, 87, 47, 80,238, 90, 99,120, 73, 90,217,217,209, 57, 12, -229, 42,142, 29,218,197,221,119,246, 1,126, 59,118, 23,135, 47, 62,192,157,203, 39,141,148, 49,188, 30, 78, 66,225,230,227,171, -112,171, 29,163,168, 84, 39,229,245,228, 94,235, 30,251, 63,128,133,133,133,133,133,229,223, 69,169, 69,132, 26,141, 58,234,211, -126,131,225,234,228, 34,239,209,102,152, 32, 56, 34, 27,105, 73, 49,120,241,236, 9, 84, 26, 3, 4,182, 85, 1,177, 11,170,120, -121,226, 81,248, 97,253,234,165,199,243, 25,163, 54,170, 52,189, 30, 61,220,220, 93, 29,101,156,165, 75, 60,110, 61, 11,207,170, -191,107,230, 86, 12, 28, 40,119, 88,186,196,227, 86,244, 75, 25, 71, 42,166,205, 62, 27, 58,128,112, 8,197,148, 41, 19,209,163, -107, 39,124,254,217, 16,178,125,251,182, 38,230,238, 12, 3,254,218,105, 51,230, 10, 83,178,141,186, 59,207,242,181, 82,153, 68, -114,253,121,190, 50,208,203, 67,210,165,215,176,196,227,251, 55,255, 4, 96,168, 57, 90,133,198,202, 96, 48, 64,175,215, 3,128, - 9, 0, 56,156, 87,159, 25,121, 58,164,102,107,145,146,173,133,209,196,160, 87,191,161,146,187,247, 30, 14, 5, 80, 74,125, 44, -134, 49, 24, 13, 56,120,246, 62, 18,238, 30, 96, 8,135,155, 83, 88,201,189,208, 92,185,184,120, 92,233,218,107,136,163, 80,252, -170,184, 53, 79,169,197,246, 13, 75,216,171,148,133,133,133,133,133,229, 67, 49, 88,209, 33, 87, 27, 2,128, 95,195,142, 25,114, - 49,207,142,199, 33, 72,137,143,192,246,101,223,128, 97, 40,186,140, 88, 10,133,151, 11, 36, 2, 46,180,249, 25,249, 25, 47, 46, -217,151,181, 33, 66, 12,237,215,109, 76,240,250,114, 76, 53,171, 93,187,242,249, 0,176,107, 87, 62,127,204,232,202, 86,235, 55, - 70,121, 53,110, 81, 31,212,100, 66,215, 30,159,162, 95,255,126,136, 78, 86,225,247, 43,177, 80,170,117,102,141,127, 38,117,172, - 81,199,201,173, 82,167,111,135,117,146,241,184,132,248,120, 90,115,227,210, 12, 70, 46,151,111, 58,122, 55, 39,177, 87,175,254, - 14, 23, 78,236,107, 39,117,172, 81, 71,149,246,244, 97,121,122, 90,173, 22, 38,147, 9, 90,173, 22, 6,131, 1,118, 14, 85, 79, -180,255,116, 89,124, 82,114,222,241,228, 44, 77, 99,165,193,136,148,108, 45, 82,179,181,200, 86,234,225,162,176,133,209,160,171, - 85,154, 30,165,244,183,158,159, 14, 30, 2,128, 67, 56,198,173,121,137, 79,159, 21,206, 43, 52, 87,157,122, 12,116,188, 18, 28, -129, 23,247, 78,102, 81,198,104,120,117,224, 24,118,168, 18, 22, 22, 22, 22, 22,150,127, 25,156,255, 27, 32, 66, 75, 43,255, 76, - 72,201,132,189,156, 7, 71, 55, 47, 12,250,102, 57, 0,192,100, 50,128, 82,192,104, 50,175,135, 1, 74,249,103,191, 26,227, 21, - 85,197,139,228, 12, 26, 40, 85, 3,192,160,129, 82,117, 21, 47,146,243,213, 24,175,168, 60,141, 92,111, 52,153,112, 61, 36, 21, - 75,247, 62,197,172,109,143,113,234,158,249,221, 97,113,133,130, 49, 75, 22, 47, 18,240,184,132,132,196,228,231,199,103, 24,243, -185,124,190, 94, 42, 21, 82, 29,229,105,163,211,105,198, 71, 61, 63,123,193,225,146,225,101,233, 20,182, 28, 44, 44, 34, 44,140, - 96, 81, 74, 41, 1, 24,134,152, 76,241,233, 26,196,165,169, 17,151,250,255, 41, 37, 75, 91,106, 9,169,194,205,199,215,218, 74, -126,202,214,198,234, 51, 27,107,171,161, 50,137,237,105,133,155,143,111,113,115,117, 43, 36, 17, 17, 15,206,165,152,244,170,190, -121, 9, 15,157,243, 18, 30, 58,231,197, 63,110,192, 94,166, 44, 44, 44, 44, 44,255, 5,202,242, 34,255, 74,131, 69, 41, 37,133, -211,159,141, 17,240, 60, 38, 29, 66, 30, 3,247, 42,222,160, 69,108, 4, 5, 96, 52,153,119, 28, 14, 31, 78,140,175, 86, 93,201, - 76,158, 28,219,180,102, 45,251, 71, 99, 70, 87, 14,171, 89,203,254,209,228,201,177, 77,171, 85, 87, 50, 6, 35,223, 68, 11,250, -219, 42,236, 91,171,160, 59,126,115,119,165, 81,157,128,170,220,185,187,158,199,126,185,254, 89,184, 64, 32, 48,184, 59, 72,137, -167,179,148,235,225, 40, 17,106, 13, 28,173,111, 96, 61, 29, 56,164,158, 57, 6, 75,167,211,189, 49,101,164, 69,116, 63,243,251, -196, 30,149,156,109,135, 37,164,169, 17,155,170, 66, 92,154, 10,177,105, 42,168,180, 70, 60,126,250, 18,224, 10,158,148,164,105, -165,176, 59,189,123,231,111, 30,117,106, 84,115, 10,240,173,226,180,121,219,111, 30, 98,177,205,105,133,155,143,175,135,151, 95, -240,237,115,251, 28,111,133, 36, 34, 38,252, 94,178, 81,155,187, 91,153, 18,118,158,189,205, 88, 88, 88, 88, 88,254, 75,148,229, - 69,254,141,152,213,147,187,167,187, 51,110, 63,137, 66, 45,255,170,176,182, 82, 32, 44, 34, 30, 92, 14, 31, 28, 2, 24,140,230, -155, 32,170, 55,236, 93,177,194, 26, 49, 81, 50,206,250,159,163,188,190, 26,227, 21,181, 98,133,245, 77,170, 55,236, 5, 48,152, -210, 87, 99, 35, 22,118,108,106,178,160,251, 77,202, 24, 42, 59,219, 73,185,247, 94, 42, 51, 56, 28,174,214,222, 90,204,216, 91, -139, 56,246, 10, 33, 95,192,231, 50, 70,202,209,187, 59,121,105, 40,195,212, 49, 71,175,104, 17,161,201,100, 2, 33, 28, 83,129, - 1,147,197,101,168,145,163,225, 34, 37, 91,139,172, 60, 61,124, 42,201,112,238,194, 1,149,201,160,222, 85,146, 22,151, 47,176, -246,246,114,199,244, 31, 86, 64,173, 53,225,121, 66, 62, 4, 34,145,139,179, 75,224,195,193, 95, 78, 21,141,251, 37, 2,195,219, -217, 99,194,213,136, 4, 85,138,120, 42,123,155,177,176,176,176,176,176,252, 7, 12,150, 92, 42, 6,229,138,113, 53, 56, 2,126, - 1,181,177,237,200, 29, 84,175,213, 4, 73,121, 70, 80,112,202,109, 61, 88,200,119, 83, 85,247, 1,220,239,209,195,205,253,147, - 79, 42,181,167,148,127,118,253,134,156,120, 0,248,121, 79,107, 80, 0, 12, 67, 65, 41, 64,153, 87, 70,203,108, 8, 47, 38, 42, - 41,183,138,151,139, 12,161,241,122,173, 76, 36,224,216,202,132, 92, 71,107,161, 64,192,227,193, 68,137, 54, 41, 41, 66, 75,128, -104,115,228, 10,139, 6, 11, 63,165,114,215, 19, 31,245, 92,154, 22, 29,155,115,207, 39, 83, 85, 39, 71, 47, 4,165,128, 79, 37, - 25,158,220, 58,110, 74, 73,120,241, 92,157, 18,190,161, 36, 45,134, 1, 87,111,100,240,240,101, 14,178,149, 6,100,231,235,209, -188,109, 55, 65,243,160,238,184,250, 36, 29,140,209,128, 37,155,142,231,153,168,161, 31,165,161, 6,246,178,100, 97, 97, 97, 97, - 97,249,119, 99,214, 96,207, 38,134,194,193,222, 14, 98,153, 21,162, 82,244,200, 35, 78,200, 82, 81,152, 76,175, 34, 88,165, 5, -154, 8, 33, 65, 37,165, 31, 62,156, 24,127,232, 80,218,150,195,135, 19,139, 84,224,254,127,228,234,245, 39, 67,205,214, 36,212, -116,238,200,201, 75, 57,221, 27, 59,218,114,184, 92,181,128,207,209,242, 4, 92,189,128,199, 49, 8,120, 28,157,179, 21,159,123, -233,232, 30, 33, 37,184, 84,158,166, 70,163, 65, 80, 80, 16,186,116,233,130, 30, 61,122,160, 79,159, 62,240,245,173,225,196,225, - 18, 29, 37, 12,227, 40,204,131,183, 35, 1, 79, 19,135,243,123,126, 84, 61,185,126,232,161, 73,171,233, 70,139,148,105,190,161, - 73, 41,147,153,163,133, 70,111, 66, 86,190, 30, 89, 74, 61,140,142, 77,113,232, 70, 34,212, 58, 19, 98,130, 15,168,211,146,227, -191,209,164, 60,143, 42,211, 67,150,178,239,111, 3,171,201,106,178,154,172, 38,171,201,106,190, 15,154, 31, 26,102, 68,176, 40, -170,185,202, 80,189,146, 12, 26,189, 19, 52, 58, 19,148, 26, 19,114, 85,122,228,170, 12,136, 74, 86,225,201,145,183,207,200,171, -168, 21, 64, 10,190,131,188, 50,118,230,198,176,132,122,221, 15,203,151, 44,236,187,167, 94, 93,221,184,143, 93, 43, 63,138,210, - 37, 18,194, 81,115,184, 60,131,157,130,199, 15, 11,123,148,118,243,202,137, 86, 98,163,105, 72, 89, 58, 70,163, 49,167, 82,165, - 74, 0,222, 28, 42,167,134,183,164,199,245,227, 83,170,182,238,190,196,241,167, 5, 19, 85, 28,174,128, 33, 60,193, 19,147, 65, -189, 91,157, 18,254, 51, 45,163,194, 24, 71, 32,126,122,251, 65,104, 19, 27,187,202,120,145,160,132, 82, 99,132,222,200,192, 86, - 46, 64,252,227,211,250,168,176,123,251,242, 18, 30,110, 99, 47, 71, 22, 22, 22, 22, 22,150,255,136,193,210,104, 52, 81, 45,130, -186,129, 97, 40, 76, 20, 96, 76, 5,145, 38,230,255,209, 38,147, 65, 19,245,182, 25, 97, 24,211,157,181,191,108,233, 82,175, 81, -107,110,128,135, 28,185, 25,201,184,117,253,162, 17, 12,189,105,206,250,233,233,207,242,165, 46, 62,159,246,237,253,201,254,161, -159,143,206,110,213,182,173,204,201,201, 69, 27,159, 16,175,250,117,199, 78,195,233, 19,135, 91, 49, 48,246, 79, 79,127,158, 95, -150, 78,118,118,246,170,146,210, 63,106, 81,185, 57,128,170, 92, 30,209,169, 82,159,201, 44,217,183,244,132,184, 94, 11,127,152, - 19, 61,112,196,120, 97,181, 74,222, 72,205,225, 34, 42, 62, 25, 97, 87, 14,107, 19,158,221,253, 35, 55,254,254,112,246, 82,100, - 97, 97, 97, 97, 97,249, 15, 25,172,216,208, 87,253, 97,253,213,228, 37,167, 14,222,182,237,183,249,191,237,216,211, 92,163,211, - 85,162, 16,196,153,140,186,203,249, 38,204, 50, 87, 67,149,252,252,158,131,131,111,205, 95, 55,173,157,241,235,150,245,173,193, -152,252, 9, 16, 77, 9, 46,137, 13,166,161,229,153,171,178, 13, 92,222,198,246,159, 46, 83,103,100,228,255,102,233,186,170,244, -176,100,185,115,181,202, 27, 87,254,176,148,195,225,118, 48,153, 24, 62, 99, 50,188, 48,233, 53, 63,170,211,194,143, 80,203,154, - 75,178,176,176,176,176,176,176,252,219, 13,214,223, 69,102,102, 68, 30,128,113,111,171,147,158,254, 44, 31,192, 59,111,137,247, -248, 89,206,239, 0,126,175,232,250,249, 41, 47,211, 96,102, 47,242, 44, 44, 44, 44, 44, 44, 44,255,110, 56,236, 33, 96, 97, 97, - 97, 97, 97, 97, 97,121,183, 16, 0, 37,182, 4,176,100,164,236,138,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,100, 53, - 89,205, 15, 79,179, 60,109, 75,252,199,123, 13, 45,232, 49,253,175,152, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, -201,106,254,215, 38,182,136,144,133,133,133,133,229, 63,135,131,131,175,220,193,193, 87,110,238,242, 50,199, 0,103,153, 99,128, - 51,123,228, 88,204,133, 53, 88,111, 9, 33,132,248,121,201,199,118,104, 93,245,144,127, 53,105,143,127, 74, 83,238, 92,205, 81, -225,209,240,186,149,123,205,206,127,193, 62,138, 2, 3, 3,155, 6, 6, 6, 54, 37,132,136,222,133,166,204,217,111, 64,101,159, -166, 87,156,189,235, 93,148,187,248,246,126,215,121, 86,184,249,216, 43, 60, 26,252,174,168, 84, 39, 75,225, 86, 39, 87, 81,185, -193,101, 43,199,128,106,229,173,231,209, 99,145,255,188, 61, 33,187, 61,122, 44,242, 47,105,190, 93,231, 53,138, 57,123, 95, 44, -112,232,190, 68,206, 94,253, 21,195,163,197, 64, 27,183, 54, 19,237, 45, 93,207,221,175,105,136, 87,205, 86,169,149,124,155, 60, - 49,119,157,202,254,205,238, 87, 9,108,145, 82,217,175,217, 61,246,200,155,135,196,169, 90, 83,137,157,231,113,177,157,231, 9, -177,125,181,182,111,171,231,230,230, 38,169, 81,163, 70,167,166, 77,155,142, 10, 10, 10,250,182, 94,189,122, 35,171, 84,169,210, -129, 16,242,143, 53,178,146, 57,251, 77,211,242, 73,186,150, 79,210,101,206,126,211,202,127,190,250,207, 39, 28, 83, 34,225,152, - 18,229,206,254,243,223,151,115, 37,118,241,243,148, 57,251,173,176,114, 13,188, 35,117,246,237,102,233,250,118,118,118, 29,156, -156,156,122, 22, 78,118,118,118, 29,216, 59,224,221, 97,241, 5, 78, 72,125,190,220,213,240,173, 80, 44, 25,198,225,192, 42,245, -197,173, 74,239,243, 14, 58, 86,107,124,143,203,225,186, 23, 77, 51, 49,166,248,180,151,183, 27,188, 11,125,191, 42,146,225, 51, - 38, 15,158, 48,160,111,144,103, 80,215,111, 8,128,195, 37,190,240, 61, 26,222, 32,132, 83,149, 67, 0, 14,135,128, 67, 0,128, - 38,166,191,188, 93,175,162,154,133, 88, 59,121, 87, 21,202, 29,175,180,232,241,149, 75,240,185,157,219,100,142, 1,237,149,105, -161,143,222,129,177,114,244,246,246,110,232,235,235,107, 63,118,236, 88, 1, 0,252,244,211, 79,213,171, 87,175,158, 17, 17, 17, -113,151, 82,154, 86,161,135,155,147,255,224, 85,203,230,253,214,185,115, 23, 36,166, 43,177,100,197,186, 54,114, 23,223, 62,249, -201,207, 14,188,139,115, 98,107, 91,213,138,103,101,251,248,155,201,243,156, 58,181,105,200,205,215, 24,113,234,202,131,150, 59, -215,205,187, 99,229, 24,208, 40, 55, 45,244,101,105,235, 50,170,156,153,206,114,218,137, 81,229, 0,192,128,226,243, 43,201, 13, - 65,142, 18, 83, 39, 87, 17,239, 1,128,131,229,230,197,171,197,105,190, 72,228,201,225,112, 80,120,238,185,228,213,249, 55,232, -213, 49,241, 79,175,116,124, 31,238, 19, 43,207,198,201,224,242,236, 57,228,255,249, 35, 5,215, 41,161, 52, 55,233,217, 85,251, -119,112, 61, 89,215,172,110, 19,248,113,243, 22,191, 94,142,204,148,121,180, 30,127,156, 80,206,250,152, 43,203, 31,154,245, 50, - 17,139,109,143, 30, 61,234,216,169, 83, 39,107,231,154, 61, 47,155,245,199, 67, 40, 14, 56,118,236,136,160, 83,167,142, 22, 92, -159,126,237,193,225,236, 32, 0,159, 97,232, 79, 92,134,238,203,207,120, 22, 97,105,119, 42, 82,103,255,225, 28, 80,179,159, 51, - 12,200, 61, 85, 74,216,150, 10, 30, 91,174,196,201,111,152, 68, 44,158,232,227, 87,195, 55, 42, 50,226, 89,110,110,206, 10,117, -234,179, 45,148, 82,198, 34, 49,131,113,210,185,171,193,157,121,124, 62,233,244, 81, 99, 46,128,139,111,115,222,157,157,157,123, -174, 89,179,166, 90,211,166, 77, 1, 0, 70,163,209,106,255,254,253, 46, 63,252,240,131,204,156,123,168,148,253,173,228,232,232, -232, 33, 20, 10, 43, 1,128, 78,167, 75, 72, 75, 75,139,165,148, 38,148,123, 77,184,120, 59, 16,240,230, 93,189,114,133, 7, 0, - 45, 91,182,154,239,217,114,172, 45, 87, 32, 87,151,120, 56,116,121, 50, 0,227,111,221,190, 73, 0,160, 73,227,166, 83,101,142, - 1,107,149,105,161, 41,255,152, 9,118,246,111,204, 1, 38, 52,111,213,190, 87,191,254,131, 57,129, 62, 30,232,208,190,221, 20, - 0, 71, 45, 50, 0, 60,158,228,206,157, 59,222, 28, 14,135,107, 52, 26, 53, 77,154, 52,137,125,155,124, 85,242,107,118,131,128, - 83, 89,111,212,109, 74,123,121,111,126,241,107,143, 16,194,181,174, 92,111, 6,184,188, 17, 12,195,196,229,198,220,109,198, 26, -172, 34, 7,199,202,189,238,181,190,253, 6,213,252, 97,242, 72,241,234, 29,103, 97, 87,181, 81,104,102,228,157,128,247,117, 7, -185, 28,174,251,153, 51,167,157, 36, 34, 46, 0, 32, 95,109, 66,103, 51, 30,182, 54, 94,141, 47,113, 8,241, 43, 28,210,219,100, -212,139,121,124,161,134, 0, 0,121,213, 58,192,193,173,202, 5, 87, 87, 59,233,128,190, 65,158, 59,246,156,141,143,141,207, 40, -245,161,207,225,112,221, 15, 31, 57,234, 84,201, 94, 12, 30,151, 32, 95,109, 68,167, 46,221, 76, 37, 45,235,234,106,247,241,128, -190, 65,158,187,246,158,139, 77, 74,202, 60, 94,230, 67,220,213,183,190,204,218,249, 84,175, 81, 63,216,107, 56,118,152,181, 96, -149,195,149,147,187, 46,183,254,120, 48, 19, 19, 19,167,161,132,132,102,101, 38,125,155,159,244, 34,220,220,115, 44,151,203,171, -201,229,242, 58,157, 59,119, 22, 79,156, 56,145,223,166, 77,155,215,243, 71,142, 28, 41,184,116,233,146,235,178,101,203,186,184, -185,185,105,242,243,243, 31,230,231,231,191,164,148,154,204, 61, 39, 46, 46,142, 95,127,250, 73, 55,180,235,245, 21, 76, 12,193, -200, 47,199,227,244,201,131,163, 1,188, 19,131,101,144, 90,253, 48, 98,212, 68,199, 38, 13,235,114,231,237, 10,135, 68,200, 67, -199, 6,126,228,179,177, 51,109,182,172,158,183, 25, 64,235,146, 34, 87,140, 42,103,102, 77, 7, 93,255,238, 77,171,226,200,110, - 93,127,247,160, 41,224, 72,173,231,199, 30,158, 22, 6, 0,222,157,199, 41,108, 37,146, 53,110, 54, 92, 39,145, 41,109,141,119, -231,113,231, 34, 78,174,206, 43, 43, 47,124,145,200,115,207,238, 93, 62,182,114, 1,184, 92, 2, 30,135, 3, 46,151, 64,171, 55, -161,119,159,254,239, 42,194,200,149, 56,249,116,225, 0,159,189,122, 81, 99,171, 58,245,249, 9, 75,206, 9,225, 10,236,143, 29, -249,131,231,100, 45, 2,151, 75,192,229, 0, 92, 14, 65,116,138, 26,195,135,127,102,253,182, 70,189,115,115,167,134,151,214,182, -238,216,164,166, 93,237,189, 55,137,117,147,206,253,236,211, 53,210, 97,123, 14, 95,236,239,209,106,194,109, 74,153,165,113, 87, - 87,158, 41, 75, 71,171,213,166,116,236,212,217,138,240,100,210,115,135,182,181,226,113, 8, 12, 38, 10,163,137,194, 84, 48,118, -233,171,251,149,128,195, 33,160, 12,197,136, 17,195,209,177, 83,103, 21, 99,100,226,205,206, 48,135,179,227,212,185,235,142, 90, - 3,131,101,107,182,204, 83,230,164,205,139, 12,179,143,150, 58,251,142, 87,165, 60, 51,123,220, 10, 14,104,131,184,151, 79, 70, -237, 58,118, 11, 53, 3,106,192,196,188,202,167,159,187, 12,187,142,223,130,191,159,255,171,124, 51, 20,190,149,229,104,216,160, - 33, 0,108,177,252,248,182,225,201,156,253,119,119,239, 61,180,119,175,222, 3, 96,103,107, 5,157, 94,235,123,254,244,137, 95, -126, 94,179,164, 57, 33,100,152, 69,230,144,154, 94,191, 23, 40,195,188,117,148,201,205,205,205,177, 97,195,255,119,167,104, 52, - 26,225,229,229,133,132,132, 4,191, 10, 92, 75, 82, 87, 87,215,143, 55,110,220,232,212,165, 75, 23,190,139,139, 11, 0, 32, 57, - 57,185,210,169, 83,167,234,185,185,185,165, 38, 37, 37, 29,167,148,170, 74,211, 48, 25, 56, 2, 14, 15, 92,177, 88,250,106, 31, - 65, 56, 19,191, 30, 82,219,217,213, 77, 91,210,242,105,105,201,194,201, 95, 93, 36, 60,158,160, 96,121,112, 40,101, 72, 25, 81, -161, 32, 62,159, 47, 41,105,158,158,107,213,132,242,173,191,224,112, 57,175, 46, 86,163, 33, 45, 51, 38,184,134, 5,145,183, 64, -190, 80,240,243,192,161,163,154,245,238,213, 3,174,142,214, 56,119,237, 17, 70,127, 61,193, 96,212, 27, 86, 84,232, 29,201,229, -242, 82, 83, 83,163,109,109,109, 93,222,254,125, 75,170,158, 61,125,210,233,220,249, 11, 83,151,175, 92, 61,198,205,183,165,129, -161,244,245, 56,195, 30, 53,219,241,219,119,237,107,229,228,221, 68,188,122,246, 23,124, 54,130, 85,212,249,187, 5,124,219,167, -111,223,154, 95,141, 30, 41,254,118,205, 53,156,223,253, 83,250,187, 50, 87, 10, 39,191,166,132,203, 27, 69,184, 92, 25,225, 16, - 33, 99, 98,226,140, 58,221,124, 85,250,179,164,183,213, 54, 49,192,239,215, 83, 45,187,145, 41,170,239,216,119,200,201,217, 70, - 4,141,206,136,126, 3, 6, 99,199,142,223, 20, 14, 86, 66,104,116, 70, 44, 93,190, 60, 47, 63,250,184, 83,116, 92, 86, 66, 80, -183, 9,103, 94, 70,165, 62,137, 77,210,236, 43,253,193,192,129,147,181, 8, 11,246, 60,131,149,132, 15, 91,133, 0, 28, 14, 41, -250,224, 32,190, 85,100, 95, 87,174,236,216, 54, 49, 41, 43,167,136,230,206, 82,111, 54,215, 90, 29,173,109,221,118,127, 50,106, -129,205,243, 84, 30, 40,244,136,176, 18,163,239,176,113, 86,213, 92, 36,144,137,185, 54,145, 49, 9,174, 19, 39, 77,186,102,237, -228,221, 40, 39, 53, 34,178,188,253,174, 82,165, 74,175,174, 93,187, 74,191,251,238, 59,126,229,202,149,177,117,215,126,207,150, - 29,251,116, 75, 76, 74,169, 76, 41,133,179,147, 83,220,136,207,250, 28, 61,113,226, 68, 76, 92, 92, 28,127,201,146, 37,141,255, -248,227,143, 0, 75,254,137,154, 40,133, 70,107,130,169,224,197,152,150,163,181,244, 33, 75, 42, 85,170, 36, 74, 72, 72,208, 22, -190, 56, 8, 33,175, 15,166,188, 82,221,142, 31,181,110,204,219,120, 50, 10,249, 26, 19,100, 98, 62,162, 82, 84,104, 80,183, 22, -217,100, 50,214, 41, 73,115,120,223,143,103, 58,203,105,167,238, 77,171,194,201, 86,138, 95,215, 46,192,145,155,145,157, 82,242, - 9, 28,186, 47, 25,229, 42,226,181,119,148, 10,214,180,105,224,237,210,174,190, 39,238, 54,240,118,185, 18, 28,254,172, 86,223, - 21, 99, 19,242,249,231, 50, 79,142,205, 43,249,129,195,129,157, 66,136,205,167,162, 33, 21,243, 32, 19,243, 32, 19,189,250, 44, -122,254, 43,244, 47,214, 45,160, 50,151, 49, 13,183,114, 11, 24,222,191,111, 31,183,129,253,251, 80,112, 57,216,255,251,209, 30, - 59,119,238, 72,146,187,248,109, 54,113,184, 91,212,137,161,113,229, 30, 83, 14,224,100, 45,196,164,205, 79, 96, 37,225, 67, 33, -229,195, 74,202, 71,187,218,142,224, 86,176, 34, 1, 33,196,118,116,143,106, 93, 30,253, 22,212,214,207, 67,238,243, 48, 34, 39, -116,248,252,123, 43, 47,101,183,253,118,237, 79, 1,246,249,217, 58,222,172,137, 35,120,241,137,137,109,247, 31,189,220,206,173, -209,240,112,163, 94, 57, 61,245,225,190, 18, 35,182,113, 97, 55,234,185, 55,237, 35,214,231, 27, 30, 63, 12,143,247,206,210,138, - 16, 18,157, 11,153,152, 7,121,225,177, 21,243, 32, 19,243, 33, 23,243,144, 24, 31,133, 76, 37,247, 90,130, 61,167, 45,189,116, -195,104, 73,222, 53,122, 19, 30, 68,230,163,138, 95, 93,184,186,186, 65,215,101, 80,149,219, 23,126, 63, 44,115,173,177, 72,153, -244,116,186,185, 58,187,142,221,194,212,241,163,130, 9,112,191,224,229, 92,111,214,226,117,245,231, 77,253,234,141,180,137,115, - 87,215,175,168,185,150, 58,251,237,108,253,241,224,222,181,154,116,192,203,168, 40,156, 60,122, 15, 31,181,239,140, 46,221,122, - 65,167,211, 14,217,178,113,245, 93, 0,235,254,244,204,117,173,209,162, 86,205, 26, 59, 43,185,185, 85,102,152, 87,163,114, 80, - 10,180,104,221, 14,147,191, 29, 1,134, 82,212,169,215,168, 93,151,254, 99, 41, 45, 24,189, 35, 61, 35, 93, 25, 30, 22, 26,164, - 78, 9,187,109,246,177,212,104, 12,105,105,105,120,240,224, 1,158, 61,123,134,144,144, 16,100,100,100,192,218,218, 58,223,194, -125,181,170, 93,187,246,192, 11, 23, 46,136,109,109,109, 95,167,235,116, 58, 40, 20, 10, 12, 28, 56,144,223,161, 67,135, 74, 31, -127,252,241, 80, 66,200, 46, 74,105,110, 73, 58,234,140,231,137, 86, 46,254, 27, 90,183,105, 61, 6, 0, 36, 86,174,145,107,182, - 30, 13, 41,243, 94,179,118,243,108,214,172,185, 55, 40, 5, 1, 93,165, 76, 15, 79, 46, 35, 42, 36,187,117,235, 86, 53, 46,151, -251,250,253,202, 48, 12,214,255,186,215,255,236,213,199,189, 22, 47, 93, 38,182,146,137,144,150,163,195, 23,131, 62, 49,251, 29, - 44,117,241,239,210,188,121,235,195,243,230,126,207,147,203,100, 56,115,251, 37,198,126, 59, 73,147, 20,253,100, 25,101,248,235, -148,169,225,169,111,249,170,124, 39, 29, 94,251,184,203,161,232,222, 81, 60,122, 72,119,177,206, 96, 66,182,210, 0,173,222, 4, - 19, 67,145,163, 52, 32, 52, 54, 15, 14, 86,194,138, 72, 55, 4,224, 8, 32, 13,192,221, 98,191, 81,240, 29, 37,252, 78,127, 21, - 22,129, 61, 0, 29,128,162, 27, 47,252, 93, 90,122,225,250,161, 0,106, 20,104,154, 0,220, 1,144, 85,174,193, 34,132, 80, 74, - 41, 41,114, 17,191,241,187, 40, 2,161,188,239,212,177,131,197, 63,236, 10,198,249,221, 11,211,211, 34,110, 22,238, 0,156,188, - 27,223, 79,141,120,179,184,203,156,166,150, 18,183,128,202, 60,194, 93,209,186, 77,171, 14, 99,190,252, 18,126,213,220, 5, 38, -147,137, 62,121, 22,105,216,182,229,215, 97,214,149,107,173,204,141,127, 50,179, 48,212,104,105,243, 77, 19, 99,138, 47, 30,177, - 50, 49,166,248,242,242, 73, 8, 96, 35, 19, 96,195,137, 72, 80, 10, 16, 80, 88, 73,249,216,115, 41, 30,145,193, 7,115,187,214, -201, 85, 14, 92, 60,167, 93,219, 46,227, 46,132, 70,104,246,165,166,106, 78, 83, 74,147, 75,211,228, 16,128,199, 37,176,146,242, - 97, 45, 21,192, 70, 38, 0, 41,242,226, 42, 90, 44,216,166,203,184,179, 23,174,199, 76, 7,144, 70, 41,213,150,164, 41,113,241, -105,104,101,227,190,175,215,152, 37,138,199,241, 70,240,184, 64, 85, 23, 9,236, 20, 2,232,140, 4,209,105,250,130, 59,198, 6, - 99, 39,206,181,155, 58, 97,204, 9, 66, 2,106, 82, 26,170, 47,107,223, 85, 42,149,112,240,224,193,124,131,193,160, 31,248,197, - 55, 29,146,147,211,122,172, 95,245,163,200,201,201, 25, 42,141, 17,193, 33, 47,106,204,155, 55,183,234,209, 83,151, 14,205,153, - 52,250,112,167, 78,157,172,247,238,221,203, 88,114,222,211, 82,210,215,254,186,243,192,111, 63, 45, 91,136,240,152, 44,108,217, -184, 14,212,100,220, 80,230,157, 95, 68,147, 82, 74,167, 79,159, 46, 57,116,232,144,187, 76, 38,203, 85,169, 84,105,111,196, 31, - 56,132,151,146,169,130,131, 66, 8, 1,143, 3,103, 91, 49,156,172, 69,224,115, 1, 14, 33,166,146, 52,183,236, 59, 62,159, 81, -229,224,200,110, 93,255, 95,215, 46,192,231, 95,207,192,147,116,225, 41,142,212,122,254, 87,253,123, 77,117,148,152, 58,185,217, -112,156,218,213,175, 2,153, 88,128,105,227, 6,163, 81,112,180, 83, 66, 54, 51, 35, 77,205,173, 11, 96, 70,137,231,157, 67,192, -227, 18, 40,164,124,156,218,185, 52, 85,153,147,150, 83, 88,244,166,211,106, 98,204,122,234,149,112, 60,101,206,126, 83,235,215, -173,189, 96,204,200,225,156,230, 77, 27, 81, 14,135,143,244, 60, 29,161, 20,248,118,236,104,124, 53,122,132, 75, 92, 98,234,172, -117,235, 54,204,148, 59,213,248, 33, 63,245,233,156,178, 52, 57,228, 85,212, 71, 46,230, 65, 46,121,101, 88,228, 98, 30, 52, 58, - 19, 8, 1,215,214,179,126, 14,121, 21,185, 77,204,136, 46,249, 31,119,113, 77, 59,143,192,243,103, 35, 21,254, 89,251,178,110, - 70, 37,134,204, 15,126,148,114,135, 82,154,233,209,122,194, 80,189,145, 34, 95, 99, 68, 84,138, 10, 70, 61, 37,159,119,246,132, - 87,111,226,183,240,215,251,191, 17, 66,172, 10,141,115,113,205,248,155,251, 53, 14,181,122,245,251,105,245,198,187,203, 22,204, -224,166,231,232,192, 80, 10,177,144, 11,137,144, 87, 48,113,161, 86,230, 96,221,207,155,146,141, 32,189,232,165, 75, 70,139,158, - 75, 12, 29,244, 73,151, 86,123, 8, 32, 36, 28, 65,188,155,103, 21,207,143,186, 13, 19,127,212,125, 48, 76, 70,221, 84,153,179, -255, 69,101, 74,216,121,115, 52,107, 6,212, 0, 1,238,231,167,132,143, 6, 0,185,179,223, 6,127, 63,255,250,197,211,170, 87, -247,171,111,206,121, 47,120, 70,115, 36,142, 62, 35,171,251,215,154, 60,230,251,141, 85,162,146, 84,176,171,236,131,144,199, 15, -112,114,239,218,251,234,188,172,101, 39,143, 28,156,252,195,143,171,234,116,235,217, 23,135,255,216,251, 29, 33,100, 61,125,197, -185, 34,209,169, 65,219, 54,255, 82,153, 47, 20,193, 96,100, 96, 48,209, 87,159, 70, 19, 50, 51,179, 96, 48, 50, 16, 75, 21, 48, - 50, 4, 6, 19, 3,131,145,129, 86,103,148,141, 30,252,241,151, 0,110,151,148, 79,247, 26,109, 78, 11, 68, 34, 79,138, 87, 99, -203, 82, 74,193, 53,234, 56,174,174,174,187, 0, 64, 36, 18, 65, 36, 18,129, 97, 24, 4,135,167,125,237,232, 31, 52, 6, 5,198, -206,164,215,197,100, 69, 93,235, 88,218,190,187,184,184,116, 43,110,174, 52, 26, 13,242,243,243,113,245,230, 93,235,205,191, 29, -232, 20, 21, 19, 95,141,161,214, 90,133, 83,181,142, 0,186,149,118, 60,115,147,195,190,172,220,116, 36,231,187,175,134, 86, 95, -189,237,216,157,231,167,126, 40,179, 30, 86,213,160,169,186,239, 70,125,218, 96,241,170, 45,207, 51,175,253, 60,190,188,115,196, -227,241,248,105,105,105,175,239,239, 53,155,118, 55,184, 31,158,208,115,229, 79, 43,197,193, 47,243,240, 56, 42, 17, 67,131, 60, -240,198, 75,160, 12, 77,185,139,183,131,183,183,255,174,117,171, 22,243,158, 39,106,176,246,224, 29, 92, 56,188,225,106,114,234, -237, 78, 52, 57, 81, 93,145,103,200,219, 26,172,178, 52, 47, 62, 74, 71,190,198, 8,173,206, 8, 3, 67,145,171, 50, 32, 53, 91, -135, 92,149, 30,249,106, 35,134,182,247, 40,205, 68,151,229, 71, 28, 9, 33,199, 40,165, 93,241,170,123, 41, 97,145,223, 32,132, - 28, 43,200,215, 27,191,167, 78,157, 58,125,209,162, 69, 33,133,203, 22,166, 23, 46, 91, 86,122,145,245,237,167, 77,155, 86,115, -241,226,197, 11,155, 54,109,186,231,198,141, 27,145,102, 25,172,162, 59, 65, 8, 41,243, 0,139, 4, 60, 55,169,194,246,149,225, -248,127,192, 0, 85,106,182,201, 88,185,100,158,157,171, 79,147,152,164,231,183, 60,205,143, 90,249, 54,147, 72,164,199,151, 47, - 95,142,254,221, 90, 74, 98,211, 13,249,143, 98,213, 41, 74, 29,140, 78,142,190,194,249, 11, 23,203, 23, 47, 89,250,213,177, 35, - 76, 54,128,165, 37, 23,229, 53,188,199, 37, 69,234, 88, 17, 2,202,152,226, 51,163,238, 52, 0,128,183,169,107,165,212, 24,193, - 45,168, 59, 67, 8,160,210,154,192,229,146,212,236,240,125,161, 3,127,152,223,110,199,158,179,137,148, 99,147,167, 84, 70, 73, - 41,165,241,101, 71, 8, 8,114, 85, 6, 88, 75,249,176,145,243, 97, 45, 19,128, 91,228,230, 42, 44, 22,220,177,251, 76, 66, 76, - 76,198,221, 2,115, 85,170, 38,143,203,137,164, 38,131,134, 82,147,162,107, 67, 71, 56,217, 8,225,106, 43,130, 72,200,131,193, - 8,168,117, 12, 52, 58, 19,162, 83,213,200, 83, 75, 80,171,117,159,170,246,174,247,180,246,158, 13, 15,101,196,220,237, 85,166, - 41, 53,153,176,109,215,129,234,137,137, 41, 61, 78, 28,218, 41, 74,203, 53,224, 81,180, 18,169,217, 90,128,235,136,217, 11,215, -138,166,140, 31,217,115,219,238,223, 99, 62,106,217, 56,198,226,227,154, 26,182,163, 86,179,143, 55,116,237,218, 83, 18,114,251, - 4,158, 63, 56,191, 32, 63,197,252,250, 87,132, 16,206,254,253,251,141, 35, 71,142,204, 91,184,112, 97,229, 35, 71,142,120,165, -165,165, 61, 0, 96,176,177,177,241,247,173,238,249,240,204,169,147,149, 62,238,217,135, 31,159,174,134,181, 84, 0, 79, 39, 41, -110, 94, 61,109, 16, 10,249, 37,214, 39, 41, 40, 6, 28,224, 30, 52, 5, 71,110, 70,118, 10,201, 16, 95, 26, 49,124,104,204,153, - 43,225, 25,107,126, 59,243, 99, 37,185,225,129,152, 73, 91,115,175,129,183,203,212,177,131,177,104,245, 14, 92, 14, 14, 79, 85, -114, 92, 23, 36,105,141,103,231,244,155, 92, 74,200,252,149,177, 86, 72,248, 80,230,166,229,188, 8, 62,233,251,142,162,207, 67, -207, 28,218,193,201,204, 51, 32, 46, 93, 67, 18, 51,243, 96, 98, 40,108,164, 2, 24, 25,138,236,204,116,178,115,199,111,184,123, -247, 38, 7, 92,206, 23, 0,230,148, 89,156, 69, 94, 21, 9,202,197,252, 87, 17, 32,201,171, 79,131,137,129, 95,117,111,252,178, -102,133,149,131,147, 51, 90,180, 50,191,206,179,194,222,179,206,158,173,107,112,233,198,253, 54,151, 87,174,109, 40,119,115, 92, -109,229, 30,176,204,218,171,189, 70,171, 55, 33, 39, 59, 11, 66, 93, 28, 26, 85, 74,131,157,212,132,232, 92, 87, 60, 73,126, 46, - 47,175, 56, 43,253,241,193, 7,142, 53, 63,153,121,224,232,133, 69, 29,219,183,193,147,232, 92, 72,132, 60,136,133, 92,136,133, - 92,240,137, 9, 43,126,222, 96,200,202,201,235,154,254,228, 80,122, 5,174,207,115, 5,255,118, 95,189,220,156,171, 57,238, 88, - 61,115,251,136,201, 75, 58,118,250,100, 24,121,114,247,226,116, 0,231,205,251,131, 71,205, 74, 99, 24,106,246,181,239,228,221, - 96,215,214,109,187,251, 5,248, 84, 70, 74,182, 1,137, 89,122, 92,189, 31,129,237,155,103,102,103,165,188, 28, 4,125,126, 62, - 67,140, 57,167, 79, 29, 61,245,245, 55,147, 17, 88,179, 78,149,220,248, 92, 43, 0, 57,111,108,147, 75, 54, 14, 25, 62,170,159, -179,179,179,226,255, 17, 44, 10, 95,191, 0,116,233,254, 41, 78, 31,254, 3,161, 33,143,192,208, 87, 70,137, 97, 40,178,179, 50, -146,141, 6,221,182,210,242, 39, 20,139, 61,127,221,250,155, 15,135, 67,160, 55, 48,208, 25, 25,140,255,242, 51,221,232,111,167, -183,232,210,161,117,136,144,139,220,232,216, 36,155,155,247,159,214, 98,248,242,202,195, 39,174, 16,104,180, 38,228,168, 12, 56, -177,165,116,143, 35,177,243,108, 90,167, 89,207,225,163,191,255, 69, 36,226,114,244,129,190,149, 35, 91, 55, 9,140,243,112,115, -200,155,183,120,109,163,107,183,239,119,233, 59,112,184,120,168,127,125,226,102, 47, 81,124, 54,240,147,218, 50,123,143, 33,202, -140,216, 82,135, 54,227, 75,109,179, 61,188,170,171,254, 31, 33,242, 59, 72, 40,170,190, 97, 34, 8, 34, 85,201,225,189, 0,192, -213,205, 67,195, 23, 89,229, 89, 96, 64, 40, 0,172,222,180,187,193,195,103,137, 35,126,250,105,165, 52,248,101, 30, 30,188,204, -129, 72,192,129,222,192,128,152, 25,196,102, 40,119,212,140,105, 83,173,178,148, 38, 92,122,148,134,144,123, 23,169, 46, 95, 51, - 80,106,180,234, 37,115,246, 27, 2,192, 27, 64, 4, 33,116,163, 50,197,229, 48,165,151,140,150, 94,247, 12,243,234,127,178,181, -147,119, 85, 19, 79,212,133, 47,148, 53, 37,132, 6, 18, 10, 91,128, 38,100, 20,188, 83,205,117,104,202,148,103, 88,178,112, 22, - 86,109,254, 3,137, 25, 26, 88,155,226,112,120,203,124,124,183,104, 23,212, 90, 83, 89,215,120,153,126,164, 36, 67, 84,220,104, - 21,126, 47, 92,110,209,162, 69, 93,139,157,155,174,165,156,179, 63, 45, 87,184,254,226,197,139, 23, 22,153,175, 50,187,136,176, -112,103,202,218, 41, 43,199,128,106, 2, 43,185,200, 74,194,135,151,135, 43,250,143,153,227,224,226,211, 60, 85, 36,228,113, 15, -237,254,197, 46, 93, 45, 2,225,112,148,102, 23,111, 56,251, 55, 86, 40, 20, 39, 14,254,254, 7,170,121, 56, 9,118, 94,205,140, -186, 31,169,126, 29,210,205, 77,139, 17,122, 89,169,120,189, 62,249, 68,122,254,194,197,111, 75, 51, 88, 92,194,117,223,244,219, -239, 78, 10, 9, 31,132, 0,121,106, 35, 70, 12,249,244,237, 95, 95,148,225,126, 62,108, 8, 72,129,185,202,205, 72,198,244,201, - 99, 52, 50,195,243,208,216,232,216,132,160,110,223,157,207,205, 39,154,126,131,191,188, 27,250,108, 81, 86,249, 87,175, 33,190, -203,199, 93, 4,175, 34, 5, 0,151, 16, 48,148, 73,241,243,146,143,253, 83,177, 96,178,118, 83,121,134, 45, 47, 33, 60, 83,225, - 90,171,247,142,229, 95,111,114,115,118,178,151,203, 36, 84, 46, 21,145, 64,127, 31, 65,147, 38,205,132, 94,126,181, 5, 87,159, -170, 17,155,166, 70,100, 98, 14, 68,206,117,121,253,219,117,198,142,149, 19,219, 16, 66, 56,229, 85,124, 61,123,233, 86,183,205, - 63,255, 36, 74,201,214, 35, 44, 54, 31,201, 89, 26, 36,101,105,145,156,169,129, 92,194, 71,171,238, 35, 69,199, 15,111,236,246, - 81,203,198,171, 43,114,120, 35, 35,163,142, 71, 39, 36,245,169, 93,175, 17,118,108,223,218,210,214,182,170, 85, 86, 86,100,174, -185,103,103,254,252,249,194,197,139, 23,243,214,172, 89,147,219,164, 73, 19,151,105,211,166,117, 76, 77, 77,189, 83,165, 74, 21, -191,211, 7,183, 93,168,219,170, 71, 67, 48,122,199,150,173,219, 10, 68, 12, 15,103,142, 29,211,239,219,187, 51, 67,173,206, 27, - 93,166,209,144, 90,207, 79,201, 39,112,172, 84, 41, 68, 46, 52,181,231,113,178,159,101,158, 28,251, 27,128,131,222,157,199,157, -187,120, 47,252,217,255,216, 59,235,240,168,142,182,141,223,179,158,149,184, 59, 16, 8, 9, 33,193,221,221,181,104,161,148,182, - 72,169, 80,164, 45,148, 22,107,145, 82, 90,164,165,197,138,211,226, 90,220, 93,131, 67, 18, 8, 81,226,178,146,117, 57,243,253, - 17,121, 3,111,100, 67,233,215,183,116,126,215,181, 87, 54,187,231,220, 59,115,206,156, 57,247,121,198, 26,223, 76,244, 58,117, -243,113, 86,158,206, 92,251,201,225,201, 21, 86,184,124, 66, 32,224,243,224, 40, 21,128, 87, 84,155, 58,250,215,127, 12, 66, 60, -139, 35,165, 4,164,232, 47, 64, 8,210,242,146,162,237,232,147, 65, 40, 71,129,152, 84, 45, 10, 12,133, 33,248, 0, 15, 25,178, - 51, 83,241,243,242, 13,136,190,113, 29, 93,123,244,197,138, 53, 91, 48,230,173,193,134,202,212,120,188,162, 8, 86,169,232,149, - 66, 42, 0, 64,160,212, 90,176,235, 66, 10,106,214,224,217,125, 67, 0, 0, 71,133, 12, 42,141, 30, 60,145, 35,158,220, 60, 36, - 59,124,250,234,244, 47,191, 94,242,105,126,250,157,228,199,119,207, 35,204, 67,133, 26,254,102,220,207,112,194,141,220,234, 8, -171, 21, 2,158,232,186, 93,218, 57,247,163, 22,237,227,237,234,221,184, 65, 68,139, 96, 47, 23,232, 77,182,162, 40, 22, 31,235, -215,109, 66, 98, 66,234,187, 57,247,247, 70,191, 10, 39, 91,144, 25,159,237,224, 29,250,193,221,171, 39,159, 14,120,243, 3,248, -250, 7,213,183,255,166,101,159,153,178,217, 97,176, 8, 33, 60,183,106, 13, 54,110,220,188, 99,104,141, 32, 31, 28,191,154,128, -107,177,185,240,240,112, 7, 95,230,131,208,118,163, 93,238, 30, 89,246,134, 62,167, 96,163, 80, 36,123,175, 89,243, 86,160,148, - 34,230,225,253, 60,149,202,249,191,234,102, 93,218,163, 91, 0,156,158,107,134,242,172, 83, 95,225,236,118,203,104,182,225,217, -179, 84, 92,188,116,166, 97,209,118,118, 35, 17,241,113, 44, 58, 11,102, 11, 7,179,149, 67,219,118, 93, 76, 34,158,177,205,188, - 37,235,154,167,167,165,243,228, 78, 30,156,155,127, 29,145,175,196,108,188, 29,175, 18,153, 45, 28, 66,252,228, 21,106,122,250, -213,154, 63,117,234,164, 58,124,145, 20, 26,173,209,148,158,246,204,103,245,111,167, 11, 30, 62,186,235, 31,224,229,236,244,237, -210, 85, 34,181,129, 32, 75,101, 68,158, 70, 77,222, 28,247,153,223,218,159, 22,140, 0, 96,247,218,177,132,162,198, 31,199,206, -135,187, 58,138, 72,129,193,202,229,170,205,182, 55,251,255,185, 65,148, 69,230,106,236,146, 31,150,202,162,227, 53,184, 29,175, -130,131,136, 15,177,136, 7,147,133,131, 61,151, 19, 33,132, 87, 35,178,221,248,150,141,163,112,244, 86, 14,248,124, 30,244,154, -124,157, 0,185,177,141,219,119,149, 53,106,218, 28, 29,218,183,195,227,216,152,160,131,251,119,117,186,124,241,108,134,194, 43, -236,195,130,172,152, 61, 85, 42,231, 58, 29,223, 34,246, 25,237,235, 95,173,213,192, 97,163,157,131,131,252,137,151,135, 59,172, - 84,128,177,111,189, 97,247,149, 95,104,200,129,133, 95, 79,135,209,104,130,167,139, 24,148, 2,235,150,207,134,201,100,130,159, -187, 4, 42,173,165, 34, 99, 90,161, 31, 41, 47,234, 84,197,230,230,131,101,153,172, 23, 63, 39,132, 28,156, 54,109,218, 23, 0, -232,180,105,211,190, 40,254,127,193,130, 5,122, 0,105,118, 25,172,226, 76,149, 91, 81,250,133,214,118,245,242,187,176,125,227, - 79,174,249, 5,102, 56,136,248, 8, 8, 12,198,231,115,151,121,246,104,236,129,108,131, 12, 59,118,174,207, 51, 25,116,219,236, -107, 75, 14,109,236, 40,119, 58,186,113,243, 54,206,195,221,157,247,243,177,236,248, 92,141,181,164,233, 42,246,234,126,238,198, -209,213,190, 20,228,136,131,131, 67, 45,147,201,228, 90,217, 9, 93,119, 44,169,168,115, 46,121, 21,117, 42, 8,159,111,219,178, -101, 51,220,157,196, 48, 90, 56, 76,251,116,162,126, 84, 87,133,242,205, 33,195, 58,118,232,249,241, 41,161, 60,244,100,203,134, -161,180, 65,131, 6, 74, 62,159, 95,169, 94,238,211,107,255, 53, 90, 34,188,186,236,189, 25,159,141,154, 81, 70,179,160, 93, 29, -114, 53,233,119, 47, 0,120, 46, 34, 66,106,214, 20,111,221,177,111,226,160, 33, 67,191,244,175,223, 95,145,144,174,130,136,152, -209,164,142, 47, 78, 31,217, 67, 83, 19, 99, 39,217, 51,170, 40, 43, 59, 47,208,211,211, 27,209, 79, 11,240, 44, 87,143,140, 34, -115,149,158,111,132, 70,175, 65,189, 96, 63, 40, 85,170,192,151, 62,190,192,158,163, 71,143, 14,238,217,111, 40, 62,254,116, 78, -235, 95,127, 89,124, 71,225, 83,251,157,130,140,216, 51,246, 60, 25, 18, 66,242, 62,255,252,243,154,107,214,172,225,141, 24, 49, - 66, 31, 21, 21,229, 48,114,228,200,214,155, 54,109,114,144,201, 28,244,183,207,239,255,242,189,143,166,245, 91,189,236,155,250, -249,249,249,196,106,177, 28, 54,231,231, 79,211, 84, 98,226,146,247, 77,127, 68, 34,230,188,221,165,141,231,126, 55, 25,175,174, -132,154,134,145,136, 57,219,232,131, 89,230, 39,135,151,107,162,134,252,240, 81,154,146,155, 97,224,121,205,171,204, 92, 1, 0, -143, 79, 96,178,112,112,148, 10,193,227,241,138,205,187,239,250,109,135,101,158,206, 98, 8,249, 60, 8,248,133,209,205, 28,181, - 25, 31,140,238,103,247, 19,128,213, 70,161, 55, 89,161, 43,122, 26,212,168,115, 48,253,211,201,232,209,103, 0,222, 27, 63, 25, -249,122,224,198, 83, 13,204, 22, 75,165, 23, 5,143,240,160, 51, 90,241, 78,215, 96,228, 21,152,161,213, 91, 97,178,114,144,137, - 5, 16, 10,120,144, 59, 8,224, 36, 19, 2,148,138, 8, 33, 99, 1, 64, 40, 20, 26,204,102,243,230, 10,206, 19,170, 7,122, 67, -111,225,161,233,208,197,232,220,162, 54,238, 95,216, 37, 56,123,229,110,141, 79, 62,157,129,137, 99,250, 96,231,163,154,112,243, - 10,134, 66, 46,133,133,242, 0, 80,187, 58,228, 81, 58,139,243, 13, 31, 56,124,229,154,117, 49,115,103, 78,115, 80,106, 9, 36, - 34, 62, 78,157, 60,129,203, 87,111, 44,203,190,191,119, 51, 94, 33, 66,202,243,118,114,114,130,131,152, 15,147,217,104,178,191, -139, 2, 5, 5, 26, 42,188,195, 86, 22, 61,225, 55,180,113, 40,227, 51, 90,217, 13,129, 56,251, 69,174, 95,185,118,203, 8, 63, - 31, 47,236, 57,121, 7,235,215,252,136, 26, 13,122,227,194, 31,235,225, 92,189, 57,228, 65,173, 33,118,220, 49,150,199, 23, 68, -125,248,201, 23, 3, 27, 53,105,129,139,231, 79, 33, 43, 35,125, 37,165,143,236,138,104,240,133,228,227,142, 93,250,192, 96,178, -161, 77,167,222, 56,114, 96,207, 71, 40, 26, 60, 97,255,205,235,133,250, 25, 60,235,228, 73, 31, 11,179, 84, 38, 97,142,202,132, -148, 28, 61, 18, 51,180,216,251,251,175,212,254,250,194,212,164,109,189, 0,225,216, 69,167, 82, 2, 3,124,141, 66,163, 94, 26, -251, 36, 62,252,189,209,163,132, 53,106,133,243,178, 84, 70,100,171,140,200, 81, 25, 81, 96,176,162, 86, 64, 40,207, 98, 37, 45, -170,122,158, 61,156,197,194, 21, 7,158,194, 73, 46, 68,203,240,151, 31, 56,203,113,220,127,204,213,146, 66,115,117,231,169, 10, - 18, 17, 31, 18, 17, 15, 18, 17, 31, 86, 27,181,235,129, 69,234, 85,187,231, 7, 31, 78,240, 51, 89,129, 92,149, 9, 2, 62,129, -151,135,171,188, 73,253,225, 88,183,248, 35, 0,192,152,207,127,198,123,239,140, 68,157,186, 81, 80,230,231,251, 12, 31,212,115, - 9,128, 61,246,166,245,208,177, 51, 65,199,206, 69,127,254,193,212, 89,138, 33,125, 58,240,111,197,171,144,158,103,196,147, 88, - 77,149, 34,109, 0, 96,181,113,160,160,216,176,237, 32,164, 98, 1,178, 85,102, 80, 74,241,205,143,219,225, 40, 21, 34, 61,191, -176, 89,191,146, 58,158, 84,242,125,239, 63, 21, 63, 41,220, 63, 27,255,233,167, 85,105, 4,107,193,130, 5,247, 23, 44, 88, 80, -102, 68,172, 82,131, 85,145,185,114,113,245,189,184,127,219, 26,183, 61,209, 38, 92,217,113, 3,189,154,249, 66, 36,224, 65,230, -236,137,219, 79,181, 56,122,228, 55,229,161,253, 59,159,229, 9,117,223, 85,106,174,124,195, 26,202,165, 78, 39, 86,172,222,104, -245,240,242,194,230,243,121,169,249, 90,171,229, 63,205, 83, 22,114,227,232,234, 26, 86,206,210, 93,159, 17, 87,233,227, 44, 71, - 33, 90,240,203, 62, 0, 20, 28,199,129,114, 28,132, 14, 10,185,103,205, 22,153, 69, 21,156,131,128, 71, 12,165,175,124,202, 89, - 83,179,227, 43, 14,119, 18, 0, 78, 50, 33,182,157,125, 6, 0,153,124,205,205,135,111, 14, 41,108, 22, 52,152, 28,212,117,107, -214,164, 77,154, 52, 81, 74,165,210,151, 62,201, 85,109, 22,180,171,224, 60,121, 98, 2,176,200, 47,172,205,128,110,138,122, 77, -197, 60, 17, 26,133,249,226,244,209,189,244,202,145,117, 99,116,153, 49, 27,237, 44,128, 40, 48, 88,144,150,107,192,179, 92, 3, - 50,242, 13,200,200, 51, 34, 35,223, 0, 66, 8, 12, 38,235,159,186, 97,105,179, 98,118,108,222,184,182,175,209,140, 97,109,187, - 14,192,228, 89, 43,130, 55,175, 92,120, 66,234, 29,222,202,158, 14,180,148, 82, 27, 33, 36,113,244,232,209,245,127,251,237, 55, -126,100,100,164,254,225,195,135, 50, 0, 28, 0,179, 66, 33,147,254,250,211,130,163, 77,155, 54,253,253, 89,236,163, 83, 0,242, -237, 25, 73, 85,173,253,104, 73,184, 83,222,216, 32,121,203,110, 33, 62, 50, 4,201, 53,221,194, 21,183,191,243,234,244,201,252, -172,147, 75,179,210,141,214,227,217,122,126,131,103, 5, 66,187,250, 2, 90,140,134,164,129,131,134,130, 79,120, 48, 27,116, 73, -197,133,203,203, 89,140,217, 91, 30, 65,225, 32,132,163, 84, 0,133, 84,136,214, 17,110,168, 66, 61, 70, 45, 54, 14, 58,163, 13, -122,163, 21, 6,147, 21, 30,129,174, 88,179,121, 7,146,179,244,216,119, 61, 7, 49, 73, 26,132, 6,200, 65,105,229,213, 35,103, -179,104,251,188, 49,194,145,207, 35,224,243, 8, 47, 34,188, 54,242, 10,204, 16, 9,120, 16, 57, 72, 33,151, 8,224, 36, 21, 66, - 36, 18, 34, 43, 43, 11, 70,163, 17, 65, 65, 65, 14, 21, 91, 64, 10, 71,133, 20,161, 53,252, 96,182, 88,113,232,220, 3,204,155, - 52, 16, 93,218, 54, 6, 17, 42,240,200,216, 16,142,110,142,224,120, 60,152,173, 28, 76,102, 27, 0, 94,185,209,182,160,160,160, -142,114,185, 92,174,211,233, 52, 73, 73, 73,103,210, 31,237, 78,246,170,219,127,236,145, 99,167, 54,247,238,209, 5,209,119,238, - 99,231,158,253,231,115,220, 85, 83,139,247,137,140,140,108,238,225,225,161,200,205,205, 85,223,189,123,247,218, 75, 62,237, 18, -185,119,248, 39, 45, 90,183, 71,129, 50, 11,153, 41, 9,118, 63, 53,215, 9,118,196, 87, 11, 86, 52, 10,171, 29,214,200, 70, 11, - 13, 87, 68,144, 35,166,204, 90,222,168,102,104,237, 70,197, 3, 61,234, 4, 85, 60,173,154,220, 59,108,194,188, 31,126,121, 43, - 40, 48, 16,135, 47, 62,194,130, 25,227,163,229, 50,199,234, 1,222,174, 46,162,186,141,113,235,214, 37,120, 65, 12, 39,239,208, -128, 97,125,199, 5,116,235,209, 23,119,111,223,192,210, 69, 95, 95,214,242,165,243,237, 73,171,194, 59,196,179, 65,147,182,111, - 58,186,121, 67,169,210,192,209,213, 11,117,234, 53,121, 83,225, 29,242,121,209, 98,245, 47,103, 54, 40,133,209, 76,145,175, 49, - 35, 57,187,208, 92, 37,100,234,192,113, 85,232,243, 99,227,136,194, 65, 32,112,179, 60, 14,186,123,226, 20, 13, 14,244, 38,139, -190,254,148,111,134, 3,178,149,133,230, 42, 91,109, 66,182,202,132, 2,131, 5,110,114, 1, 56, 27, 87,229,167,237,252, 2, 51, - 28,139,250,201,218,184,151,239,243,253,203,250,109, 97,183, 99,211,250,255,240,195, 82,217,173,167,165,204,149,176, 48,122, 37, - 17,241, 97,227,184,162, 59, 77, 37,230, 94, 32,252,184, 95,207,206, 72,201,209, 23,141, 68, 38, 8,141,106, 10, 15, 41,135, 78, - 67,167, 1, 0,250,244, 44,236,103,252, 52, 93,139, 3, 87,178,129,231, 59,108, 87, 92, 23,235,245,252,213, 91,254,248,100,199, -246,223,157, 13, 54, 1, 86, 29, 78,132,206,104,133,131,136, 15,137,136, 15,169,136,255, 92,151,160,202, 13, 86, 97,159,186,228, - 28, 11,116, 6, 3,212,122, 11, 40,128,107,143, 11,160, 55, 89,161,210, 90,208, 60,220,245,207, 62,243,252, 1,160,215,139, 70, -232, 69,147, 84, 42, 2, 85, 22,215, 75,107, 20,111, 95,158,129, 43,221, 39, 11,128, 93, 15,130,130, 23,157, 98,233,255, 29,253, - 66,107,187,184,248, 94,220,255,251, 26,183,221,209, 70,156,190,157,139, 65,109, 2,160, 83,101, 96,225,130,207,242, 8,168,137, -199,231, 41,141, 6,253,238, 92,153,121, 30,125,240,196, 92, 97, 37,225, 25, 81, 79, 42,147,157,250,118,233, 42,179,151,183, 63, -183,251,138, 50, 75,165,179, 61, 23, 43,180, 25,141, 60,202, 81,145, 61,230,170,168,105,195, 60,235,163, 1,224, 40,197,236,165, - 59, 48,127,234, 80, 40,164, 35,100,132, 16,153,214, 96,197,164, 57,107,241,253, 87,239, 58,202, 36, 2, 16, 2, 24, 76, 54,188, - 53,108,128,125, 5,207, 96,197,147,171,191, 21,104,158, 30,124, 88,186, 89,176, 89,235, 30, 55,154, 53,107,166,116,117,117,133, - 84, 42,253, 79,100,194,206,202,186,172,209,130, 89, 74,164, 58, 58, 58,182,115,114,114, 42,173,167, 85, 42,149,123, 95,166,244, -105,148, 57,167, 50, 18,239, 54,109,213,161, 15,206, 28,221, 75,175, 28,254,117, 76, 85,230,216,113,117,115, 77,185,121,247, 73, - 29, 66,220, 10, 35, 88, 69,230,202,100,225, 16,236, 45, 67, 74,226, 19,184, 56, 59,167,216,171, 39,243, 10,239, 71,120,116, 60, - 1, 93, 87,144, 17,187,163,200,236, 12,151,251,132,223,185,127,239,214,188,222,111,126, 44,232, 58,104, 2,127,229,130, 15,191, -192, 11,157, 83, 43,192, 28, 19, 19,243,224,221,119,223,109,121,249,242,101, 27, 0, 29, 33,196,194,231,243,101, 38,147, 73,212, -161, 67, 7,213,163, 71,143,206,194,142,206,136,109,222,217,233, 65, 36,154, 30, 53, 67,155, 12, 15,118,212,116,233,208,166, 5, - 90,212, 13, 68, 74,155, 22, 0,240,113, 82,129, 34,172,245,251,191,110,171,225, 25,112,104,229,250, 3,243,199, 12,237, 60,201, -175,207,156, 31,210, 14,204,170,176,131,105,242,131, 51,221,202,178,239,133,205,134, 66, 40,164, 2, 56, 74,133,112,116, 16,194, - 98,165, 85,121, 82,164, 22, 43, 87, 24,193, 50, 89, 81,160,183,226,212,173, 76,100,168, 76, 80,106,204,208,155,109,160,160,133, - 79,159,118,212,226, 89,113, 23, 92, 74,206,125,112, 35,213,234, 31, 23, 59,237,186,144, 90, 50, 66,207, 89, 38,134,163,172,112, - 84,245,185,115,231,224,238, 94,249,211, 61,199,113,216,121,228, 26,126,216,112, 10, 71,214,125, 6, 7, 17, 31,245,250,205,193, -219,253,155,129,163, 28,158,196,220,207, 12,141,168,239,205,227, 73,193, 35, 4, 70, 11, 7,128,150,123, 60, 77, 38,147,123,114, -114,178,186, 86,173, 90, 62,254,254,254,131,248,124, 62,149, 0,198,189,191,231,233, 78, 30,220, 42,211,234,141, 54,153, 85,181, -174, 86,186,190, 87,104,104, 40, 8, 33,212,195,195, 67,116,234,212,169,130,168,168, 40,207,151, 52, 87, 60,169, 87,237,101,239, -189,255,201,160,154, 33, 33,216,177,117, 29, 40, 37,187,236,221,127,203,129,203,248,122,250,243, 35, 6,167,204, 90,222,232,251, - 57, 31, 63,247,217,251,211,127,104, 84, 81,157, 17, 16,217,241,179,240,240, 8, 92,190,159,138, 69, 95,190, 31,109,200,122, 58, -220,164,112, 31,103, 46, 72,159,220,160, 97, 99,248,184, 59, 33, 45,207,136,190, 35,250,163, 85,235, 54,184,123,251, 6,190,254, -234,211,203,208,153,186,210,236, 7,122,123,210,202, 81,225,248, 14,221,250, 11,245, 70, 51,150, 47,154,137,113, 83,231,161,121, -199, 62,194,123,183,174,140, 7, 48,215,222, 60, 27,205, 54,116,136,242, 40, 52,205, 22, 14,251,159,242, 5,101,149, 64, 1,159, -240, 26,132,184, 64,111,178, 66,173,179, 84,124,163, 18, 9, 51,148, 42,117,181,159,230,127,194,215, 26,172,200, 86,153,144,165, - 50, 34, 71,249, 31, 99,149,163, 50, 34, 91,101,130, 80, 64, 16, 27,159, 4,158, 80, 80,229,254,119,249, 5, 22, 52,173,237, 90, -120,141,190,100,107,136, 69,224,212,236,200,217,219, 3,127,248, 97,137,195,237, 4, 13,238, 60, 85, 23, 69,174,248,144, 8,121, - 16, 23,189,183,113, 64,101, 63,225,236, 85,179,198,168,119,199,116,114, 82, 72,145, 22,151, 5, 1,159,128,207, 39,112,246, 10, -132,179,196,128, 15,223, 31, 11, 15,119, 23, 36,231, 24,177,108, 79, 44,238, 60,120, 12, 78, 95,181,108, 47, 95,245,123,247,247, - 62,152,226,194, 19,138,177,233,104, 66, 97, 58,249, 54, 60,186,114,192,144,246,228,174,182, 64,157, 75, 65,109,118, 62,248, 19, -106,181, 21, 26,211,249,179,167,225,247, 13, 63,227,232,205,172,146,206, 89, 23,118,125,143, 79,166,127,131, 28,181,169,168,232, - 87, 28,185,122,225,255,236, 82,145,167,255,250,191,148, 41, 42,235,127, 82,244,191,169, 28, 13,211, 11,166,202,244,194,231,166, - 23,244,236,154,187, 79, 80, 81,228,202,217,213,231,226,190,109,171,221,118,223, 52,225,204,157, 66,115,101, 53, 42,241,203,162, -233,233, 58,165,186,109, 69, 19, 54,254,151,185,242,170, 29, 41,145,203,207,126,249,205, 50,163,183,127, 53,235,161, 91,234, 92, -141,193,246, 95, 97, 16,145, 76,110,147, 59,123, 26, 92,130, 27,254, 32,212,155,102,102,103, 63,208, 86, 22,105,226, 40,197,193, -171, 25,160,180,240,145,104,251,185,103, 40,122, 18,135,141, 43,108, 62, 57,126, 43, 11,130,162,126, 38,246,134,185,127, 89,245, -179,186, 87,148, 74,251,230,252,217, 37,205,130,205,235, 23, 70,174,156,156,156,224,226,226, 2,133, 66, 1,123,154, 8,139, 41, -111,180,160,163,163, 99,187, 91,183,110, 57, 56, 57, 57,129,207,231,195,104, 52,162,110,221,186, 47,117,129, 43,124,194, 63,104, -218,113,192, 23,173, 59,246,193,169, 35,187,233,149, 35,235,199, 86,117, 2,195, 94,157, 91, 30,248,250,235,217, 53,190,156,247, -147,196,209, 65,128,135, 5, 38,240, 8, 65,176,183, 12,238,114, 30,206,236,221,100, 24,218,167,165,221,147,218, 5, 6,250,111, -254,254,199,213,242,239, 23,206,233,224,232, 31,118, 74,243, 44, 38, 15, 0,180, 25,143, 22,201,124,194, 31, 4, 92, 58,118,168, -126,187, 1,240,246, 11,233, 82,133, 48, 47, 37,132,232,226,227,227,159,126,249,229,151, 97, 11, 23, 46,164,124, 62,159, 3, 32, - 89,186,116,169, 46, 46, 46,238, 22, 10,135,216,162,178,232, 85,167, 46,117, 39, 41,196,182,230,110, 50, 94,221, 16, 31, 25, 90, -212, 45,108,253, 28,218,171, 53, 2,131,130, 16,159,161,107,144,167,227,132, 5, 38,126,200,138, 85,119,174, 87,247,224,143,177, -234, 77, 15, 80,201, 36,176,229,149,217,226,142,239,197,209, 43, 71,169, 16, 28, 80,149, 39, 69,106,177,114, 48,154,109,208, 27, -109,208,155,172,208,154,108,208,153,108,224,104,225, 53, 65, 8,129,217,202,193,174,199,228, 23,202,190,147,155, 7, 66,170, 23, -142,122,117,148, 22, 78,217,224, 36, 19, 22,142,117,118,119,135,151,151,151, 93, 81, 80,147,185,240, 18, 55, 89,184,146,230,123, -147,217, 10, 74, 41, 98, 99, 99, 62, 75,124,250,180, 95,173,208, 90,109, 35,234,213,119,147, 73,120, 0, 80,174, 25,208,233,116, - 54, 71, 71, 71, 47, 55, 55, 55,222,179,103,207, 74, 76,115,173, 6, 29,172,123,118,239,194,192,129, 3, 10, 30, 94,187, 93, 50, - 84, 93,175,215,147, 86,173, 90, 57, 5, 6, 6,242,140, 70,163,186,106,199,128, 16,185,103,237,254,129,225, 45,231,189, 53,122, - 92,237, 14,157,187,227,244,201, 99,216,183,251,183,141,218,172,152, 99,118, 95,239, 97,225,255, 53,138,176,102,104,237,255, 26, - 69, 88,173, 70,104,185, 6,203,217,185,158, 83,189, 38,237, 3, 19,115,204, 56,124,248, 16,180,170,140,175, 76,166, 2, 29,132, -116,237,193,223, 86,188,251,222, 39,115,156,218,183,107, 3, 87, 39, 25, 4, 2, 62,110, 94,191,140,133,115,191,184, 12,157,169, -107,101,245,103, 73,126, 35, 34, 68,181,130,170, 77, 12,170, 25,137,155, 87,206,227, 73,236,189,251,183,175, 95,174, 91, 43,170, - 57, 60,253,130, 39,146,136,136,133,244,193, 3,115,101, 58, 38,131, 33,233,237, 81, 35, 81,122, 20, 97,139,134, 97,238,228,197, - 11, 0,128, 78,147,101,254,117,241,164,184,226, 81,132,156,217,148, 84,158,174, 42, 63,123,231,153,139, 87,167,246,235,213,157, -151,163, 54, 21, 70,172, 84,166,162,151, 17, 57,197,239,213, 70,132,250, 41, 16,115,255, 38,103, 80,229,236,170,226,117,105,120, -123,112,183, 7,197,101,151,227, 40, 8, 96,168,234,245, 77,133, 78, 99, 23,125,247,131,195,237,167, 5,184,147,160, 46,108, 18, - 20,242, 11,141,149,144, 87, 98,182, 10, 71,167, 87, 18, 13, 34,252,249,239,140, 26,134, 28,181, 25, 28, 7, 8,248,188,162,151, - 8,201, 26,130, 20,141, 14, 57,249,217,120,154,152, 4,101,198, 19,240,120, 60,120,248,213,134,189,225, 70, 27, 21,251,234, 76, - 52,106, 80,175,182,130,221,151,210, 33,147, 8, 96,212,100,226,240,182,197,217,198, 2,245, 60,189,174, 96,183, 62, 55, 46,205, -222,188,243, 8,201, 86, 23, 24,188, 37, 66, 62,118,108,248, 9,131,223,126,191,232,160, 20,254,249,108,198,215, 0,143, 32, 47, - 95, 3, 66, 72, 85,163,162,215, 43,249,255,101,120, 21, 26, 85, 55, 88, 50,153,251,137,125,191,175,118,187,244,148,135,107, 49, -249, 24,212, 38, 0, 22, 67, 62,150,125, 51, 57, 67,173,206,234,168,201,142,139,175,210, 47,241,120,221,134,190, 51,245,126, 72, -237, 8,227,233,123, 5, 9, 74,173,165,220,126, 12, 45, 6,125,121,255,198, 31, 63,246, 84, 89,226, 39, 40,252,234,218, 56,171, -117,145, 46, 43,102, 78, 57, 77,132,226, 57,203,118,148, 52, 15,126,190,112, 83,225,123,155, 13, 54,202,129,114,192,135, 95,253, - 2, 43,103, 3,103,179,129,179, 81, 88,108, 84, 86, 89,114,189,252,170,237,206,127,180, 61,252,205,185,255,221, 44,232,226,226, - 2,119,119,119,184,187,187,163,216, 16,253,217,102, 65, 39, 39, 39, 40, 20, 10,156, 63,127, 30, 82,169, 20,114,185,188, 74,186, -165,204,213,132, 38,237,251,253,212,177,239,187, 56,190,123, 21,189,126,238,192, 56, 93,102,204, 90,187, 35,241, 54, 27,177, 88, - 44,232,213,181,125, 82,244,253,199, 71,102, 76, 29,223,189,101,239,113,146, 22, 97,254, 48,152,108, 72, 77,124,130, 51,123,215, - 27,106,215,240, 61,218,169, 77,179, 36,139,197, 2,155,205, 86,233, 13,220, 96, 50,231,240,133, 82,249,176, 97,111, 10,175, 95, -187,182, 75,225, 85,123,135,141,240,110, 19,202,213, 35,132, 12,172, 87,175, 14,204, 22, 14, 58,157, 58,191,170,121,214,104, 52, - 79,215,173, 91, 87, 99,212,168, 81,178,136,136, 8,225,147, 39, 79,240,253,247,223,231,106, 52,154,167,246,106, 28, 59, 23,179, - 84, 64,242,227,196,156,121,120,176,163,166, 75,114,235, 22, 24,214,187, 53,126,255,227, 2,206,156,191,140,164, 2,197,173, 2, -171, 96,111, 74, 82,154,177,174,155,122, 87,223, 22,213,248, 59, 54,228,239,242,234, 48,125, 8,165,146, 99,217,103,102,105,237, -191,121, 3, 26,189, 5, 78,178,194,249,154,138, 35, 89,124, 66,236,118, 66, 4,120,122,254,242,205,200,198,161, 17,136,126,170, - 66,150,210, 8,189,209, 10,142,163,224, 64,225,238, 40,134,131,136,135,228,196,167,224,168, 57,161,138,183,136,236,118,109,219, - 9, 0, 2, 66,168, 64, 40, 16,128,162,112, 94, 68,169, 84, 90,224,229,229,101, 87, 4,203,108,181, 98, 96,247,102,104,222,164, - 30,250,141, 91, 12, 0, 56,185,113, 26, 92, 21, 66,252,190,121, 45,146,207, 46,217, 28,210,242,253, 99,247,238,222,127,227,126, -244,165, 55,123, 52,146, 54,240, 17,164,137,202,211, 43, 40, 40,216, 69, 8, 17,139, 68,162,238,109,219,182,117,219,181,107,151, -210,195,195,131, 19,139, 68,217,125,251,244,230,132, 34, 81, 94,241,182, 23, 47, 94, 20,142, 27, 55,206, 49, 63, 63, 63, 57, 51, - 51,243, 50,165,212, 82,241, 3, 96,120,103,240,240, 27, 8,113, 80, 72,101, 73, 45, 58, 15,243,107,210,188,153,115,255,129,131, - 33, 17, 75,112,252,216, 17, 44, 95,178,112,123, 65,250,195,119,170,114, 36, 95,197, 40, 66,149,202, 89, 27,247,224,118,126, 66, -150,201, 85,232, 18, 10,161,196,113, 28,113,246, 91,198,151, 40,102,121,214,239,239,180,115,255, 33,220,189,119, 15,110, 82, 11, -226,159,196,233,238,221,138,254, 89, 71,132,115,104,246, 3,157,189,233,148,229,218,222,104, 49,178,187,171,209,108,195,185, 83, -127, 24, 56, 43,215,253,242,217, 67, 79, 2,106, 55,113,136,108,210,201, 53,103,223,218,129, 0,126,175, 76, 39,245,225,127, 71, -108,131,194,154, 38,156, 60,117,194,217, 59,184, 46,159,128,192,108, 52, 32, 59,254,186, 85,151,249, 72,173, 74,189,107,215,168, -218,220, 20,124, 53,125,214,183, 19,154, 52,110, 44,167,112,120, 46, 98, 85,108,172,114,212, 38,120, 56,138,161, 87,103, 35,238, -250, 17,131, 46,155, 95,225,124,101, 86,147, 86,150,147,149, 89,210,148, 86,144, 25,211,188,162,237,115,178, 50,197, 86,147, 86, - 86,249,173,142, 15, 39,185, 24,119, 19,158,149,116,104,151, 8, 11,251, 94,137,133,252,146,126, 88,197,117, 65, 37,180, 23, 57, -184,224, 89,174, 1, 4, 20,156,205, 10,171,197, 4,141, 90,141,103,105, 25,200,204,200,132, 70,163,132, 76,225,138,200, 6, 77, -225, 40,119,192,237, 51,219, 65, 41,181,107, 94, 66, 11, 17,134, 53,105,222, 70,114, 47,177,176,175,149,131,144,226,192,111, 11, -115, 11,212, 89,109, 52,105,177,113, 85,173,139,173, 54,219,137, 59, 15,226,234, 6,248, 86, 39,183,158,168,176,121,205,143, 48, - 21, 69, 50, 45, 22, 27,238, 37,107,145,158,167, 67,114,252, 67,202,217,108, 39,240,154, 83,174,193, 18,137,133, 82, 39, 55, 63, -124, 61,124, 4,126,254,249, 23, 36,164, 60,195,242,175, 39,101,168, 53,217, 29, 52,105,113,177,118, 62, 5,118, 46,158, 43, 67, -155,241,104,209, 59, 63, 39,164,238,143,206,227,233, 77,180,194, 14, 60, 14,158,193,104,243,206,247, 71,245,154, 60,177,205,168, - 19, 28,216,252,206,111,101,105, 22, 58,102,152,230, 77, 25, 10,133, 84, 0, 66, 8,138,155, 5, 87,124, 61, 22, 50, 73, 97,219, -177,222,104,197,136, 73, 63, 96,243, 15,147, 65, 1, 12, 31,124, 65, 87, 94, 58, 75, 53,225, 5, 36, 37,102, 61,235,220,103,202, - 73,131, 89, 98,236, 61, 96,212,141,198,141, 27, 43,165, 82, 41,164, 82, 41,156,156,156,224,234,234, 10, 23, 23,151, 74,243, 94, -238, 36,162,165, 70, 11,242,120, 60,240,120, 60,200,229,114, 40, 20, 10,200,229,242, 10, 53,203, 53, 87,237,250,174,232,212,239, - 61, 28,223,189,154, 94, 63,119, 96,188, 46, 51,102,141,189,231,168,168, 89,231,246,192,129, 3,163,198,141, 27, 39,154, 53,117, -220,209, 63,142,157,137,221,113,112,117,159,252,124,101, 32,165, 20, 46,206,206, 41, 67,251,180, 60,208,161, 85,147,164,147, 39, - 79,114,191,253,246,155,145, 16,114,183,178,116,230,100,101,109, 60,121,226,212,236, 54,237,218, 99,237,134,223,218,221,127,240, -176,221,147, 39,113, 8, 12, 14, 65,245, 26,161,208, 17, 87,156, 58,123, 30, 5,202,172,141,246,164,243,133, 40, 22,201,207,207, -191, 52,116,232,208,174, 23, 46, 92,224, 13, 29, 58, 84,151,147,147,115,177,248,185,169,188,232, 85,105,205, 75,191,244,207, 6, -176,177, 90,251,209,219,159,153,149, 19, 1, 44, 12, 10, 14,194,153,243,151,113,249,194,213, 95,114,100, 65,115,222, 25, 49,122, -108,181,190,252,247,250,182,168,198,247,114,149, 97,235,234,239,249,251, 47, 39,254,144,152,107, 91, 11,224,107,123,206, 81,201, - 13, 67, 99, 70,171, 58,110,176,216, 40, 56, 90, 88,209, 58, 58, 8,203,172,112,203,210, 20,152, 36,239,140, 31, 55,238, 73,100, -189, 6,159,140, 24, 61, 94,212, 32, 36, 16,215, 30, 43, 1, 66,224,230, 35, 71,122,122, 58,206,237, 92,109,205,127,246,232, 23, - 62,159,155, 91,149,178,148,151, 24, 93,171,212,118, 99,115,114,114,112,230,204, 25, 20, 27, 43, 79, 79,207, 50, 13,214,139,154, -185,153,105, 23,191,254,110, 85,171, 49,111, 13, 64,239,246,117,113,246,250, 19,152,138,230, 91, 42, 30, 18,254,244,242, 74,241, -196,161, 33,166, 9, 3,107,171,245, 22,113,226, 87, 9,170,115,165, 71,185,190,168, 73, 41, 53, 17, 66,246,199,196,196,180,174, - 95,191,126,181, 67,135, 14,229,221,191,122,244,227,210,233,152, 50,101,138,226,231,159,127,150, 81, 74, 47, 26,141,198,120,187, -242,206,195,214,155, 55,110,184,155, 45, 28,206, 95,189, 93,167, 83,171, 6,224, 40,112,253,250,117,172,253,117,173,225,238,157, - 91,139,181,153, 62,115,203, 27, 32, 82,222,241,180,253,137, 81,132,197,154,148,158,177, 42,188,195,127,185,120,254,236, 12,137, - 95, 99,132,247,252,162,239,179,219,251,251,250, 68,116,131, 71, 72, 75,164,221,217,143,139, 71,183, 28,226,172,214,105, 14, 28, - 47, 73,155,253, 72,107,239,245, 94,140, 68, 42,251, 40,162, 81, 59, 36, 39, 37, 34, 33,238,222, 70,125,110, 92,154,194, 39,124, - 99, 90,106,210,248, 26,117, 91,225,194,209,223, 63, 46,207, 96, 85, 86,230, 3, 61,165,171, 15, 29,220, 63, 44, 53,117,165,143, - 86,111,144, 80, 74, 13, 18,177, 32, 67,193,211,108,179, 55,157,148, 62, 48,203,221,170, 15, 28, 60, 98,252, 31,203,151, 47, 17, -122,187,200,144,145,111,128, 90,111,134, 70,103, 6,143, 16,212,242,147, 67,167,201,195,217,157,223, 89, 76, 5,249, 67, 41,125, -108, 46, 79,179,112, 61, 65,250,225,148,247, 79, 67,236, 28,232, 87,163,211, 23, 21, 70,231, 52,105,119,250, 76,121,255, 64, 24, -165,180,147,194, 59, 92, 83,144,249,232,203,242,242, 78, 72,225,245,253,102,135, 64,152,173,133,243,135, 89, 57,192,198,113, 69, - 81, 61,128,150,180,219,147, 74,242, 78,184,109,127, 92, 68, 90,166, 18,122,147, 5, 70,147, 21,102,139, 13, 60, 62, 31, 46,174, - 46, 8,173,222, 16,206, 46, 78,200,204, 72,195,229,147,251, 17,123,231,236, 69, 66, 49, 71,151, 21,123,210,158,115, 36,146,186, -132,249,250,249,240,210,213, 38, 72,197,124,220, 58,123,200,108, 49, 25, 23,219, 99,174,202,210, 84,230,230,253,240,201,212, 79, -135,175, 95,183,193, 39,170,134, 19, 82,115,244, 72,205, 54, 64, 99,176, 20, 25, 48, 14,198,130, 28,220, 57,181, 33,195,102,208, -252,240,175, 53, 88,156,213,102,138,121, 28,143,105,115,190, 67,124, 98, 18,150, 47,248, 52,179,160, 10,230,170, 44,214, 77,168, -254,123,213,246, 40,154,146,100,110, 98,197,207,219, 47, 54, 11, 82, 14, 28,165, 56,112, 53,163,164, 89,144, 43,234, 81, 25,253, - 68, 89,165, 38,188, 59, 49,154, 45,122,125,166,243,163,199,139,243, 1,128,207,231,151,188,138,251, 74, 25, 12, 6,211,203, 52, - 11,190,216,161,157,227, 56, 56, 57, 57, 65, 42,149, 86,185,233, 81,238, 29, 54,172, 73,251,126, 63,117,234, 63, 6, 39,246,172, -161,215,207,238,127, 95,151, 21,179,186,202,125, 16,242,243,239, 19, 66,226, 22, 47, 94,220, 96,237,218,181, 53,166, 78,157, 26, -191,233,167,217,203, 1, 32, 55, 55, 23, 0, 16, 29, 29, 77,223,127,255,125,163,193, 96,120,154,159,159,127,147, 82, 90,105,211, -129, 62, 91, 54,127,237,138,133,145, 41,207,210, 7,132, 68, 54,133,103,141,166,240,169,213, 12,249, 26, 51,174, 61, 78, 67,252, -195,147,120,120,126,231, 33,157,194, 58,187,170,105,174, 95,191,126, 32,143,199,171, 94, 80, 80,224, 19, 17, 17, 81, 95, 46,151, - 71,215,175, 95,191,161, 64, 32, 72,189,113,227, 70, 98, 85,180, 18,207,172, 55, 86,107, 63,122, 89,146,198,177, 67,124,134,174, - 97,146,198, 49, 90, 39,113,158,156,117,114,169,209,187,235,226, 31,168, 57,231,254,142, 13,234, 93, 91, 87,127,207, 31, 49,118, -138,237,158,202,117,162, 64, 42, 62,190,224,237,168, 42, 52, 63,241,210, 39,140,234,247,159,105, 26,138, 34, 87, 69,239,237, 10, -199, 43,149,183, 85, 0, 62,151,250,213,253,233,222,196,113, 95,215,107,210,106,100,219, 30, 67,121, 86,145, 2, 71,247,172,164, - 79,239,156,218, 33,160,182, 25, 58, 59,102,239,175,180,217,199,100,170,212, 92,149, 25,121, 73,145,183,223,241,219,175,111,239, -218,179,123, 65,255,190,253,220, 87,124, 53, 4,223,173,218, 11,185, 84, 2,202,113, 24,218, 49,104,208,195,223,186,245, 9,244, -118,240,223,117, 58,245,220,135, 75,238,125,174,211,153, 99, 43, 27,229, 90,100,152,207, 59, 58, 58,102,183,110,221,186,185, 68, - 34, 33, 57, 57, 57, 2, 47, 47, 47,171,179,179,179, 41, 53, 53, 85,103, 52, 26,119, 81, 74,181, 85,201,167,217,194, 33, 33,211, -128,125,187,119,225,246,213,147,120,248, 48, 70,243,240,193,195, 31,137,128, 46, 41,200,136,205,123,153, 99,199,149, 57,138,144, - 86,121, 20,161,150, 47,157, 31,125,240,187,246,161, 29, 63,110,225, 94,179, 21, 92,131, 11,199,232,168, 82,239, 33,229,250,142, -125,154, 52,209, 96, 74,239, 89, 94,246, 28,251, 5,212, 8,165,124, 49, 46,157,249, 3,148,227,126, 1, 0,202,113,191, 68, 95, - 56, 52,190, 89,207,247,224,230, 85,173,126,241,216,249,170,106,139, 4, 60,237,225, 93,235,247, 36, 36, 36,224,209,163, 71,120, -252,248, 49,242,242,242,176,117,107, 66,149,206,143, 54, 47,225,184,194, 61,164,219, 27, 67,222, 60, 48,104,216, 91, 14, 53, 66, -163,120, 97, 1,174,112, 87, 8, 16,243, 56, 17,177, 55,238,112, 49,215, 14, 25,204,234,172,254,186,188,132,114, 13,159,220, 51, -194,155,240,232,180,226,181, 5, 91,180,104, 21,246,233,188, 5,205,221, 61,189,202,172,199,115,179,179,196,159,125,184, 63,236, -242,149, 75,118,173, 69,200,217,108,185, 99,223, 30,202,241, 11, 23,242, 68, 73, 92,154, 20,158,236,194,135,168,194,207, 41,103, -173, 52, 98, 63,122, 64, 27, 88, 57, 14, 90,189, 25,106,173, 17, 42,141, 1,233, 89,185,184,125,231, 14,206, 30,216,143, 39, 49, -183,159, 90, 76,166, 99, 60, 30,217,169,203,136, 57, 91,181,150, 37, 65, 13,119, 55, 55, 60,205, 43,128,131, 88,128,196,216, 27, - 70,173, 90,181,229,101,203,145, 46, 39, 54, 93,238, 29,214,117,232,208, 97, 71, 58,118,235,235,220,164,101,103,153,135,147, 11, - 68, 2,138,184,132, 52,220,188,120, 68, 27,127,251,156,218, 98, 42,232,254, 42, 86,105,249,199, 26, 44,181, 38,187,195,187,239, -140, 59,202, 19,240, 37,160,156, 65,167,203,239,254,103,204,213, 95, 5,165,182,212,183,135, 15,120,238, 89,192,202, 81,233,240, -193, 71,245,165,159, 13, 44, 54, 42, 27, 62,248,162,174,176,226, 40,191,195, 94, 73, 19,222,239,199, 83,147,146,114,175,231,229, - 25, 79,255,217,145,125,165,215, 22,172, 96,180,160, 54, 60, 60,188,196, 84,241,249,124,216,108, 54,187, 43, 32,145, 68, 58,166, - 99,223,119,201,137,189,107,232,181, 51,123, 39,232,178, 98, 87,189,252, 49,165,102, 0, 87, 9, 33,247,102,204,152,209,196,219, -219,219,123,230,204,153, 14,106,181, 90,184, 98,197, 10, 67, 78, 78, 78,134, 90,173,190, 76, 41,213,219,175,121,211, 2, 96,160, -194,187,118, 7,186,107, 77, 23, 23, 15,255,174,206,158, 1, 53,149,217,207,158,170,178,211,142, 1, 56, 81, 52,193, 99,149,104, -216,176, 97, 8,143,199, 27, 10, 32, 82, 46,151,215, 82, 40, 20, 18, 74,105, 56, 33,228, 62,199,113,119, 34, 34, 34, 14, 2,168, -210,249, 75, 60,179,222,216,118,194,175,191,229,233, 56,145,137, 39,250, 45,241,204,122, 35, 0,100, 30,155,170, 3,176,207,187, -195,180,129,251, 47, 39, 46,191,159,239,252,113,214,233,249,251,171,154,102,101,202,173, 90,175,170,252,235,211,238,167, 2,120, - 91,238, 29,246,253,221,232,203,179, 8,133,208, 6,235, 55,186,204,184, 27,175, 66, 95, 40, 20, 26,252,253,253,203, 28, 45, 40, -145, 72, 12, 21,159,243, 51, 86, 0,107, 9,105,191, 97,247,246, 13,111,239,221,191,111, 65,219, 78,253,221, 29, 2, 2, 80,221, -139, 96,195,180, 70, 31,159,140,206,190,214,247,211,115, 63,199,167, 25,238, 80, 74,171,212,223, 69,163,209,196, 18, 66,242, 11, - 10, 10,250, 81, 74, 83, 8, 33,129,249,249,249,183, 44, 22,203,221, 42, 27, 1, 14,111,182,104,209,116, 43, 33, 68, 64,173,220, -162,203, 66,254,111,134,244,135,169, 47, 99, 40, 74, 19, 85,221, 9,147,102, 46,107, 84,179, 86,237, 70,197,107, 17,214,173,230, -136,113,159,127,223,168, 90,141,208, 70,255, 89,159,176,226, 81,132, 52,237,166,158,120, 71,117,137, 57,182,248, 43,247, 39, 23, - 39, 72,221, 2, 20,218,156,196,188,252,196, 27,139,117, 89,222,139, 95,102, 98,201,210, 36, 60,190,191,100,237,226,207,167,166, - 63,123,186, 86,155, 21,123, 15, 0,180, 89,177,247,100,222,181,191,202,201, 72,157,154,155, 21,191,248,101,143,133, 86,171, 77, -219,178,101,139, 75,171, 86,173,120,222,222,222,200,206,206,198,233,211,167, 57,142,227,158, 85, 85,171, 32, 55,254, 52, 33, 53, -221, 54,174,250,105,145, 72,238,216,211,106,181,250, 81, 10, 8, 4,130,116,147, 78,125, 68,195,147,127, 74,243, 18, 42, 41,151, - 28, 1,192, 43, 94, 91,144,227, 56,178,104,249,134, 68,161,131, 99,153, 77,170, 22,131, 70,198,113,156,221,107, 17,230, 39,221, -168,249,170,174,111, 66,233,156,250,141,155,127, 97,177,152, 13, 40,236, 15,102, 0, 96,160, 20,185, 60, 30, 57,203,231, 44, 71, - 85,127,226, 33,138, 16, 56, 81, 34,128,163, 84, 0, 2,130, 2, 85, 30,173, 74,159,171, 50,207,119,102,204,125, 66,218, 7, 31, - 54,109, 31,117,234,248,161,193, 54,155,173,122, 81,201, 73, 48,234,181, 59, 10,210, 93, 55, 82,122,221,138,127, 1,228, 79,214, - 31, 85, 14, 33,254,175,107,134,135,200,250, 5,248,123,143, 74, 72,204,186, 22,159,162,219, 88,122,249,155, 63,171,153,146,146, -125, 58, 54, 81,187,166,244,242, 55,175, 42,239,114,175,176,174, 14,114,249,231, 6,189,118,147, 54, 35,102,195,171, 60,158,132, - 16,103,137, 68,210, 80,161, 80, 8,115,114,114,174, 82, 74, 85,255, 75,231,189, 65,131, 6, 65, 60, 30,175, 58,199,113,222, 0, -156, 81, 56,202, 35, 71, 32, 16, 60,187,113,227, 70,162, 61, 77,132, 47,210,230,157,157, 30,157,186,212,157,116,236, 92,204,210, -162,230,195, 18, 2, 6, 47,113, 24,217,179,195,148,141,187,247,253,215, 40,194,127, 98,153,255,255,210, 36,164,189, 64,225,155, -243, 54, 79,236,252, 77,167, 48,131, 46, 39,237,217,251,231,239,102, 95,165,148,106,254, 76, 58,197, 98,241, 8,179,217, 44, 21, -137, 68,122,147,201,180,229,127, 37,239, 50,239,240,119,121,160,118,175, 36,193,129,220, 40, 61, 24,165,188,116,146,136, 8,145, - 44, 27,174,186, 28,143,220,170, 26,171,191,231,188, 19,126, 84, 84, 84, 27,145, 72, 20,100,179,217,100, 38,147, 73,167,215,235, - 19, 18, 19, 19, 47,149,183, 32,249, 95,157, 78,133,119,237, 37, 34,145,100, 34, 0,152,205,198,101, 5,153,177,147, 42,218,183, -188,237,255,233,215,166,103,141, 38,113, 2,190,208, 19, 69, 19,106,115, 86,107,118, 70,252,181,208,191, 43,157,175, 29,180,104, -121,132,191,226, 5,160, 51,211,100,154, 76,147,105,150,177, 45,143, 29, 79,166,249,119,106, 58,248,214, 9,116,240,173, 19,104, -239,254,101,109,207,142, 39, 5,123,149,255, 18, 48,139,201, 96, 48,254,134, 7, 59,142, 29, 5,198,223,137, 62,237, 65,202, 95, -185, 61,131, 65, 80,184, 42,117, 89, 21,160,221,161, 63, 66, 72,231,151,168, 96, 79, 48, 77,166,201, 52,153, 38,211,100,154, 76, -243,223,165, 89,153,246,107,211,244,200,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,201,154, 8, 95,237,139, 7, 6,131, -193, 96, 48, 24, 12,198, 43,133, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, - 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131,241,242, 16, 74, 41,138,150,152, 34, 0,158,123,207, 96, 48, 24, 12, 6,131, -241,255, 98, 72, 94, 51, 47, 82, 98,176, 0,128, 82, 74,152,193, 98, 48, 24, 12, 6,131,241,119, 24,172,215,201,139, 60, 23,193, - 42,157, 57,118,170, 25, 12, 6,131,193, 96,252,127, 26,172,215,201,139,176, 38, 66, 6,131,193, 96, 48, 24,255, 51, 6,235,117, -241, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, - 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166, -201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, - 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,151, 24, 77, - 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, 0,157,153, - 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139,193, 96, 48, - 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96, -188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, 73,134,152, -201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, 6,131,193, - 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88, 12, 6,131,193, 96, - 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248, 55,240,151, 78, 52, 74, 8,233,204, 52, -153, 38,211,100,154, 76,147,105, 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102, -176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, - 57, 18,128, 82,122,194,110,145,151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, - 63,254,167,161,148,254,101, 47, 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, - 12, 6,131,241,138, 97, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, - 48,152,193, 98, 48, 24, 12, 6,131,193, 96,188, 60,132, 82, 10, 66, 8, 45,250,191, 61,165,244, 44, 59, 44, 12, 6,131,193, 96, - 48,254, 95, 13,201,107,230, 69, 74, 12, 22,165,148, 20,255,101,167,153,193, 96, 48, 24, 12,198,255,183,193,122,157,188, 8,239, - 5,231,216,158,157, 98, 6,131,193, 96, 48, 24,127,151,201,122, 93,188,200,115, 17, 44,118,106, 25, 12, 6,131,193, 96,252, 93, -230,234,117,242, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6, -131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, - 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, -152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145, -151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, - 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139, -193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6, -131,193, 96,188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, - 73,134,152,201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, - 6,131,193, 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88,204,100, - 49, 24, 12, 6,131,193, 96, 38,235, 47, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254,231,248, - 75, 39, 26, 37,132,116,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,139,193, 96, 48, 24, 12, 6,131,193, 12, 22, -131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, - 6,131,193,248,155, 32, 0,202, 28, 9, 64, 41, 61, 97,183,200, 75,140, 38,168, 76,159,105, 50, 77,166,201, 52,153, 38,211,100, -154,175,159,102,101,218, 85,241, 31,255,211, 80, 74,255,178, 23,128,206, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255, -182, 23,107, 34,100, 48, 24, 12, 6,131,193,120,197, 8,202,250, 80,216,108, 94,166,213,106,245, 2, 0,129, 64,144,101,185,246, -165,111, 69, 34, 66,160,147, 21, 88, 83, 36, 56,198, 66,233,241, 50, 52,143, 91,173, 86,215, 34,205,124,203,181, 47,187, 85,168, -217,244,155,163,207,109,127,117, 70,151, 50,226,139,124, 97,211,111,210, 94, 72,171, 95, 21,194,119,182,255,143,116,254, 83, 52, -255,205,136,154,207,203,180, 88, 10,203,145, 80, 40,200, 50, 95,173,184, 28,137,154,125,147,246,220,246, 87,102,120, 87,164, 41, -147, 74,114,107,250,123,254, 80,145,102,124, 90,206,100,173,206,224, 94,145,102, 85,175,205, 64, 95,223, 78,182,162,107,147, 15, -140, 73, 73, 75, 59,254,191, 84,150, 8, 33,141, 1,124, 9,192,169,212,199,119, 40,165,159,176, 82,201, 96, 48, 94, 59,131,101, -181, 90,189,110,238,153, 5,173, 17,232,244,214, 55, 94, 33,253, 87,109,253,175,109, 12,249, 98,229,253,109, 81,124,139,218,213, - 83, 96,118, 74, 75, 75, 35, 69, 21,230, 26, 0, 65,101,104,186,222,220, 51, 11, 58, 19,208,118,216, 28,215, 32,192, 41, 91, 36, -154, 34,149,203, 59,232,245,250,186, 0, 32,149, 74,239,235,181,218,211,158,102,243,247, 47,110, 95, 94, 6, 74,167,181,227,200, -111,188,194,251,175,250,216,198,113,226,103,215, 87,182, 53,228,196, 9,132, 86,227,138, 47,128,195,179, 0,155, 61, 7,228,185, -223, 29, 60,221, 93, 8,116, 20, 59, 56,212,119,113,117,109,195, 81, 90,135,227, 56, 98,179, 90, 31,168, 85,170,243,156,213,122, -219,106,210,186,223,220,191,128,171, 40,157, 47,230,101, 48, 32,216, 3, 12,146, 43, 20, 29,248, 66, 97, 75, 0,176, 89, 44,151, -180, 5, 5,167, 7, 0, 59,237,201,187,189,199,231,101,183,255,183, 97,177, 88,189,158, 30,157, 5,163, 5,104,248,198, 2,175, -122,111,110,220, 10, 0,166,172,219,222, 5,113,251,155, 1,128,188,102,239,171, 18,159,134,153, 0, 32, 72, 74,247,138, 61, 56, - 3, 70, 11, 80,167,247, 28,175,202, 52, 71,207,220,238,254,217,216,129, 18, 0, 56,182,235,167,218,167,118,255,210, 3, 0, 58, - 14,124,255,112,215, 55, 62,140, 5,128, 69,171,119,187,255,190, 96, 72,133,154,246, 93,155, 42,145, 42,238, 96, 45,147, 58,221, - 37, 80, 46,240,137,139,139,227, 1,128,159,159,159, 93,215,102, 0,224,156, 14,124,192,227,243,219,212,172, 85,171, 33, 0, 26, -255,228, 73,180,205,106,189,224, 11,172,120,197,101,233, 99, 74,105,159, 23, 76, 23, 43,144, 12, 6,227,245, 52, 88, 0,160, 53, - 2,103, 31, 3,237,154,215,195,216, 55,123, 42, 74,127,183,115,213,156,160,184,235,251,194,127,221,248, 61,175, 94,189,122,120, -250,244,169, 93, 63,166, 51, 1,103,226, 0, 40, 31, 58,230,203,229, 79,150,124,247,157, 83,151, 46, 93, 4,126,126,126, 32,132, - 32, 35, 35,163,249,137, 19, 39, 26, 79,154, 52,105, 60,148, 15,243,117, 38,104,206,196, 85,174, 91,156,214,186,181,171,225,203, - 15,135, 56, 3,192, 23,111,173,104,124, 61, 38,211,237,201,147, 39,157, 62,255,252,243, 92,254,233,211,191,120, 0,235, 51,129, - 20,123,210,185,233,192, 85, 7,231,244,223, 66, 70,124,248,225,174, 90,181,106, 41,130,131,131,137,163,163, 35,248,124, 62,242, -243,243,131,238,221,187,215,227,218,181,107,218, 19,103,215,136,111, 92,235, 27,159,229,208,204, 96, 87,222,245,105, 14,199, 28, - 29,239,143, 28, 48, 32, 96,200,144, 33, 14, 53,107,214, 4, 0, 60,121,242, 36,116,231,206,157,195,118,237,218, 53, 19,250, 52, -171,206, 4, 67,101,121, 47,209, 4,224, 0,180,116,241,242, 26,193, 23, 10,235, 90,173, 86,255,162,232,194, 51,155,197,114, 95, -153,149,181,229,197,237, 25,255,141,209, 2, 60, 76, 7, 58,183,105,136,145, 3, 59,203, 1,224,243,161,243,154, 39, 37, 60, 22, -153, 76, 38,212, 14,171,211,234,235, 5, 63, 28, 5,143,135,205,187, 79,148,108,111,143,230,157,135, 79, 49,235,235, 37, 72,187, -187,179,185, 77,245,184,131, 70,173,226, 3,128,147,179,243,192,157,219,126, 59,237, 23, 53,232,202,227, 28,179, 93,154, 21, 93, -155, 71,182,253,232,155,122,239,116,196,207,199,214, 9,131,130,130,112,247,238,221,170, 93,155,170, 24, 71,206,215,247,193,247, -159,126,234,211,182,109, 91, 40, 20, 10, 8, 4, 2, 88,173,214,206, 23, 46, 92,232, 60,107,214,172,247,161,138,209,218,123,109, -218,193,247,132,144, 14,163,199,126,236,219,179,223, 32, 12,236,222,138, 21, 68, 6,131,241,250, 26, 44,129, 64,144,213,101,212, -124,175, 54,205, 34,113,253,118,172, 42, 49, 57,189,160,248,187,188,251, 59,107,247,107,229, 31,113,238,220, 89, 24,141, 70, 92, -186,116, 9,183,111,223, 70, 66, 66, 2,198,141, 27,103, 20, 0, 99,202,209,204,111, 59,108,142, 43, 84,113,138, 80,113, 76,245, - 19,143, 30,241, 13, 6, 3,206,157, 59,135,252,252,124,136,197, 98, 4, 4, 4,160,107,215,174,130, 71,143, 30,185,117,234,210, -221,185,109,247,225, 79,225, 28, 90, 32, 16, 8,242,203,205,128, 64,144,213,233,173,111,188, 34, 66,171,225, 73, 98,154,234,203, - 5,191, 22,112, 28, 21,196, 39, 36,153,207,158, 61,139,134, 13, 27,226,248,241,227,238,121,121,121, 95,173, 88,177,226, 75,225, -183, 63, 47,179,152,114,167, 86,160,151,223,118,216, 28, 87,247,172, 29,193,167,142,236, 21,221,191,127, 95,180,114,229, 74,228, -230,230, 66, 44, 22,195,197,197, 5, 62, 62, 62,168, 93,187, 54,249,226,139, 47, 20,189,123,223,199, 71, 99, 6, 5,155, 67,222, -139, 41, 47,157, 37,121, 47, 72,146,121,168,143,213,220,253,199, 31,188,214,173, 91, 63,247,152, 94,163, 70, 13,116,235,214,205, - 97,196,136, 17, 53,135, 12,123,147,107,219,107,244, 19, 40,130,117,149,106,106, 83,164,238,186,203,126,157,135, 13,219, 63,103, -206, 28, 23, 31, 31, 31,200,229,114, 0,128, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 55,174,222,217, 38,104,219, 59, 37, 13, -242, 64,125, 69,199,243,223,138, 80, 40,200, 42,142, 26, 57,202,165,249, 41,169,153, 90, 0, 48,153, 76, 48,153, 76, 48, 26,141, -152,240,254, 56,254,152, 55,154,214, 10,110,243,241,173,132,103,153,121,117, 78, 92,113, 43,222,183, 50, 77,129, 46, 65,169, 76, - 62, 57,102,214,167,159,250,120,123,255,167,229,111,243,166, 77,252,188,188,188,206,179,102,205,138,160,178,246,202, 58,189,231, -184, 84,164, 89,209,181,169,140,253,163,250,215, 31,118,171,191,106,193, 65,216,108, 54, 92,190,124, 25,231,206,157,195, 15, 63, -252, 64, 15, 31, 62,172,114,146,203, 43,185, 54, 99, 28, 91,251,102,132,124,251,237, 46, 34,145, 72,176,111,223, 62, 60,122,244, - 8, 60, 30, 15,245,234,213,195,200,145, 35,209,185,115,103,159,177, 99,199,209,182,221,135,198,195, 57, 76,243,103,202, 18, 33, -132, 7,224,227,233,179,190,245,125,235,189, 15,176,232,235, 47,152,193, 98, 48, 24,175, 15, 69,163, 1,104,209,171, 29,165, 20, - 20,224,213,232,191,234,247, 29, 55,184, 63,106,244, 95,245, 59, 5,120, 20,224, 57, 1,213, 26, 52,104, 96, 81, 42,149,244,218, -181,107,116,194,132, 9,218,101,203,150,157,254,227,143, 63,118, 90,205,230,181,126,190,190,139, 41,192, 43,179, 71, 61,192, 11, - 6,156,101, 50, 89,118,114,114, 50, 61,116,232, 16,157, 61,123, 54,221,178,101, 11, 61,124,248, 48, 61,113,226, 4, 61,124,248, - 48,253,253,247,223,233,157, 59,119,104,108,108, 44,149,203,229,217,193,128,115, 5,154,124, 10,240,107,247, 95, 57,117,215,117, -203,156,176,254,171, 38, 81,128,239, 10,132, 55,104,208,192,182,115,231, 78,186,121,243,102,186,113,227, 70,122,231,206, 29,154, -147,147, 67, 5, 18,121,118,241,126,229,165,147, 2, 60,127,127,255,108,165, 82, 73, 3, 3, 3,169, 88, 44,166,222,222,222,180, -118,237,218,180,121,243,230,180, 71,143, 30,244,205, 55,223,164, 95,125,245, 21, 85, 42,149,212,193,193, 33,179,120,191,242, 52, - 27, 2, 82,185, 92,158,124,243,230, 77, 90, 30,122,189,158,230,228,228,208,163, 71,143, 82,185, 92,158,220, 16,144, 86,164, 41, - 5, 26, 69, 69, 69,101,231,228,228, 80,179,217, 76,147,147,147,233,189,123,247,232,163, 71,143,104,114,114, 50,213,235,245, 37, -218,177,177,177, 52, 36, 36, 36, 91, 10, 52, 42, 87,243,223,252, 42, 46, 19, 47,188,130,188,189,123,248,248,248,232,119,237,218, - 69,159, 61,123, 70, 55,108,216, 64,121,192,188,255,218,182, 2, 77, 49,208,181,117,235,214,182,203,151, 47,211, 91,183,110,209, -105,211,166,209,110,221,186,209,238,221,187,211, 89,179,102,209,212,212, 84,154,154,154, 74,123,244,232, 97, 19, 3, 93, 43, 43, -159,101, 93,155,206, 64, 80,239,222,189,245,102,179,153,198,199,199,211,186,117,235,166,242,129, 17,114, 32,162, 29, 32,169,172, -124,250, 3,174,190,190,190,233,151, 47, 95,166,187,119,239,166,193,193,193,217,124, 96,180, 19, 80,195, 9,168,193, 7, 70,215, -168, 81, 35,251,242,229,203, 52, 55, 55,151, 6, 5, 5,165,251, 3,174, 47, 91,150, 80, 56, 7,223,186,233,179,190,165, 49,169, - 90, 58,125,214,183, 20, 64, 50, 45,252,242, 56, 43,147,236,197, 94,255,190,215,127,121,145,127,248, 75, 80,202,104, 17, 66, 8, - 69,225,220, 88,101,162,231,243,231, 47, 90,180, 72, 96, 48, 24,240,235,175,191,106,134, 15, 29,186,219,197,197,197, 42, 20, 10, - 65,120,149, 15, 72,204,150, 72, 38,126,183,104,145,139,201,100,194,141, 27, 55,208,184,113, 99, 72, 36, 18,136, 68, 34, 8,133, - 66, 8,133, 66,248,250,250, 34, 43, 43, 11,117,235,214,197,103,159,125,230,188,112,254,252,137, 48, 26,191,174, 72,151,227,168, - 0, 0,108, 28, 39, 22, 1, 99,235, 55,105,178,248,139, 47,190,224, 57, 57, 57,193, 96, 48,192,104, 52,226,209,163, 71,112,119, -119,135, 76, 42, 19,192,168,173, 52,173, 60, 30,143,167, 80, 40,112,234,212, 41,172, 94,189, 26, 9, 9, 9, 72, 79, 79,135,163, -163, 35,234,214,173,139, 58,117,234,160, 93,187,118,136,143,143, 7,177,163,211,200, 3,129,224,131, 9, 99,198,120, 53,108,216, -176,204,239, 13, 6, 3,148, 74, 37, 84, 42, 21, 2, 2, 2, 48,104,208, 32,175,223, 54,111,254, 0, 86,235,247,101,109,239, 14, -248, 4,132,134,238,191,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138, -142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14,186,103,101, 53,202, 5,210,216,227, 69,229, 36,101, -102, 30,235, 10,120,140,120,243,205,195,183,239,220,105, 51, 98,196, 8,100,102,102,126, 33,156, 54, 77,105, 1,150, 84,182,127, - 24,224,236,230,235,187,254,219,111,191,229,101,100,100, 96,202,148, 41, 57,105, 73, 73,211,156,129,243, 0,112,242,200,145, 54, - 91,182,108, 89,184,121,243,102,143, 77,155, 54,241, 26, 54,108,184, 62, 44, 57,185,110, 12,160,170, 74, 58, 53,192,199, 75,151, - 46,117, 48, 24, 12,232,210,165, 75,188, 67, 66, 66,125, 43,160,183,119,255,116,224,131, 31, 62,251,204, 71, 34,145, 96,202,148, - 41, 57,186,164,164, 72, 43,144, 93,106,147, 68,207,167, 79,143,188,245,214, 91,247,238,220,185,227,177,100,201, 18,159, 55, 6, - 12,248, 0,192,188, 42, 68,172, 74,119,104, 15, 29, 61,246, 99,239,134, 77, 91, 96,211,218, 21, 88, 48,231,243,245, 0, 86, 17, - 66, 62, 4,240, 29, 43,121, 12,198,191, 54,232, 83,169, 23,249,199, 53, 17, 22,101,168,125, 69, 27,187,186,187, 55,142,140,140, -196,185,115,231, 16, 21, 21,117,205,197,197,197, 42,146, 72, 32, 20, 10, 65, 57,174,210, 31,147,202,229,157, 58,119,238, 44,184, -114,229, 10, 66, 66, 66, 32,149, 74, 75,140, 85,241, 75, 36, 18,193,215,215, 23,106,181, 26,157, 58,117, 18, 46, 95,190,188, 83, -101, 6, 11, 0,146,226,238, 41,178,175,124,251,230,154, 13,235,107,180,109,219, 22, 42,149, 26, 28,199, 65, 38,147,193,100, 50, - 65, 32, 16, 20, 54,245, 88,168,218,158, 3, 99,179,217,108,124, 62, 31, 33, 33, 33,152, 63,127, 62, 12, 6, 3, 68, 34, 17, 0, - 64,173, 86, 67,169, 84,226,222,189,123, 72, 76, 76, 68,209, 83,119,133, 56, 58, 59,247, 28, 50,100,136,184,172,239,140, 70, 35, - 84, 42, 21, 84, 42, 21,148, 74, 37, 12, 6, 3, 90,180,104, 33,254,227,224,193,158,200,205, 45,211, 96, 25, 29, 28,222,216,180, -105,147,151, 88, 44,134, 94,175,135, 70,163, 65, 74, 74, 10,146,146,146, 12, 89, 89, 89, 86, 71, 71, 71, 94,112,112, 48, 79, 34, -145, 72,250,247,239, 79,212,106, 53, 8, 33,232,221,187,183,251,214,205,155,135, 0,248,129, 93,202,246,113, 12, 48, 54, 50,153, -250, 52,107,218,244,212,181,235,215, 27, 78,156, 56, 17,119,238,220,249, 86,182,109,219, 89, 29,112,187,162,125,227,129, 15, 22, -151, 50, 46, 52, 41, 41,202,252,130,113, 9, 46, 52, 46,119,139,141,203,224, 42, 26,151,162,242,213,196,215,215, 23,135, 15, 31, - 70,114, 66,194,231, 85, 49, 87, 0,192,227,243, 91,183,109,219, 22,251,246,237, 67,106, 82,210,231, 47,152,171,194, 7, 36, 32, - 91, 16, 31,255,249,250,245,235,215,189,243,206, 59,224, 11, 4,173, 97,181, 86,229,103,254,171, 67,251, 59,227, 38, 98,253,234, -229,235, 1,188, 71, 41,229, 0, 92, 99, 37,142,193,248,247, 98,143, 23,249,167,192, 43,237, 26, 1,156,169,104, 99, 47, 47, 47, -127,133, 66,129,180,180, 52,212, 9, 15,207,146, 72, 36, 16, 11,133,112, 16,139,237,250, 49,157, 78, 23,229,231,231, 7,149, 74, - 5, 15, 15, 15,136, 68,162,146,151, 88, 44, 46,121,239,232,232, 8, 30,143,135,160,160, 32,232,116,186,168, 74,117, 51,239,121, -109, 91,254,254,132,203,103, 15,215, 24, 48, 96, 32, 92, 93,221, 16, 24, 24, 0, 47, 47, 47, 72,165, 82, 4, 6, 6,162,102,205, -154,244,251,239,191,135,204,171,158, 93, 21,120,105,211, 36, 16, 8, 96,179,217,144,153,153,137,152,152, 24,220,185,115, 7,151, - 47, 95,198,173, 91,183,160,209,104, 96,135,191,130, 78,175,175, 47, 16, 8,202, 52, 87, 74,165,178, 36,122,165, 84, 42,145,157, -157,141,196,196, 68, 20,104,181, 13, 42, 48,187, 3, 35, 35, 35,249, 0, 32,149, 74,209,160, 65, 3,172, 90,181,202,122, 96,239, -222,161, 17,151, 47,187, 5, 30, 61,234,178,102,229,202,161,131, 6, 13,178, 93,185,114, 5,106,181, 26, 15, 31, 62,132,167,167, -167, 64,236,224, 48,132, 93,198, 85,227, 38,160,245,208,104,186,183,108,217,242,169, 74,165,194,119,223,125,199, 19, 58, 58,174, -158, 3,240, 43,220,145,207,111,213,182,109, 91,236,223,191, 31,105, 73, 73,211,146,202, 48, 46, 73, 64,118,114,124,252,180,245, -235,215,163,107,215,174, 32, 2, 65,149, 59, 34, 53,111,222, 60,146,227, 56,220,189,123, 23, 46,192,213,170,238, 95,179, 86,173, -134, 10,133, 2,143, 30, 61,130,188, 40,186, 86, 22,114,224,124,116,116, 52,164, 82, 41,234, 68, 68, 52,170,226,207,124, 79, 8, - 73,127,103,220, 68,236, 62,114, 17, 0,176,126,245,242,204, 82,230,138,193, 96,176, 8, 86,165, 94,228, 31,103,176,236,204, 56, - 0, 64, 40, 20, 66, 44,145, 64, 44, 22, 23, 26, 35,137,164, 42,238, 20, 14, 14, 14, 37,134,170,180,177, 42,253, 94, 38,147,217, -101, 92, 0, 32,255,241,145, 54,239,189,251,142, 88, 34,145,192,100, 50,130, 82, 10,137,196, 1, 46, 46, 46, 8, 9, 9,129, 90, -173, 70,203, 86,237,140, 41, 74,209, 65,247, 58,253,239,188,204,129,178, 90,173,208,106,181,200,207,207, 71, 94, 94, 30,212,106, - 53,244,122,189,221, 67,202, 57,142,227,167,164,164,224,183,223,126, 67,110,110, 46,128,194, 14,212,197,166,170,248,239,211,167, - 79,177,121,243,102, 36, 36, 36, 84,233,252,180,105,211, 6, 7, 15, 30,228,183,239,212,105,237,241,224,224,180,227,193,193,105, -237, 59,117, 90,187,127,255,126,190,191,191, 63, 18, 19, 19,113,227,198, 13,228,231,231, 23, 23, 96, 70, 21,121, 2,228,235,242, -242,222,249,226,139, 47,168, 66,161,192,119,139, 23,215,159, 7, 12,183,215,184, 56, 87, 96, 92,156,255,156,113, 1,165, 20, 28, -199,193,102,179,189, 84,222, 8, 33, 68, 40, 20, 86,117,138, 4, 82, 5,253,146, 14,237,159,125, 53, 31,135,246,237, 44,254, 42, -142,153, 43, 6,131,241, 58, 34, 40,229, 24, 43,189,241,102,102,102, 62,211,106,181, 53,130,131,131,145,154,154,234, 21, 20, 20, -148, 36, 22, 10, 33, 18,139,237,234,131, 37,147,201,238,166,165,165,181,242,247,247,135,213,106, 45, 49, 83, 47, 54, 17, 22, 71, -101,110,221,186, 5,153, 76,118, 23,134, 10,103, 64,128,205,148, 95,173, 81,163, 70, 37,145, 32, 23, 23, 23,184,184, 56, 67, 34, -113,192,140, 25, 51,184, 37,223,127,191, 34,168,227, 28,213,219,147,190,160, 95,204, 91,251, 74, 15,160,189, 55, 36,153, 76,118, - 55, 48, 48,176,133,179,179, 51,118,239,222,141,196,196, 68,228,231,231, 67,167,211,193,104, 52, 66,167,211,193,100, 50,193,193, -193, 1, 17, 17, 17,112,114,114,194,137, 19, 39,238,194,104, 44,219, 84,230,230,238,190,123,247,110,139,166, 77,155,150, 68, 80, - 58,116,232, 64, 58,116,232,224, 81, 18, 53,211,233,144,147,147,131,107,215,174,225,196,137, 19, 32,132, 32, 46, 46,206,102,212, -235,127,103, 69,255,229, 48, 0,151,248,235,215,175, 27, 63,126,252,187,173, 90,181,130, 13,232, 1, 96,243,223,101, 92,138,185, -124,249,242, 61,155,205,214,170,118,237,218, 80, 2,205, 0,236,171,146,121,124,252, 56,218,106,181,118,170, 95,191, 62,118,239, -216,209, 6, 64, 98, 89,219,105,129, 54, 13, 27, 54,132, 94,175,199,195, 7, 15,110, 86,193, 92,173,157, 62,235,219,209,111,189, -247, 1, 54,173, 93,129,245,171,151,167,172, 91,181, 44, 16,128,153,149, 42, 6,131, 81, 21, 47,242, 90, 70,176, 84,249,249, 55, -163,163,163,209,168, 81, 35, 60,121,242,164, 41,229, 56,129, 72, 44,134, 88, 36, 2,207,142, 27,136, 94,171, 61,121,242,228, 73, -107,131, 6, 13, 80, 80, 80, 0,129, 64,240, 92,244, 74, 44, 22, 67, 40, 20, 66, 32, 16, 64, 38,147, 97,207,158, 61,102,189, 86, -123,178,210,232,144,141,179,241,120,188,146,155,152, 82,169,132, 78,167,199,252,249,243,241,227,247,223,191,105, 3, 38, 9,229, -158,250,191,243, 64, 27,116,186, 83,135, 14, 29,178,212,168, 81, 3,163, 71,143,198,164, 73,147, 48,105,210, 36,140, 31, 63, 30, -163, 71,143,198,200,145, 35, 49, 96,192, 0, 52,107,214, 12,158,158,158,136,137,137,177, 24,116,186, 83,229,233, 73, 12,134, 93, -163, 70,141,202, 42, 54,102, 90,173, 22, 26,141, 6, 42,149, 10,217,217,217,184,120,241, 34, 54,109,218,132,239,191,255, 30,123, -246,236,129,209,104,132,217,108,198,173, 91,183,242,229, 22,203, 14,118, 41,191, 60, 66, 96,247,133, 11, 23,224,230,230, 6,191, -128,128,118,118, 24, 23,212,175, 95, 31, 42,160, 77,185,215,214, 75, 24,151,231,140,143, 70,115,253,233,211,167,104,223,190, 61, -124, 3, 2,190,141, 0,164, 85,217,223,102,181,158,191,112,225, 2,222,122,235, 45, 4,215,168,241,173, 39,224,249,226, 54,158, -128,103,245,154, 53,191, 29, 61,122, 52,142, 29, 59, 6,155,213,122,190, 2, 83,213,152, 16,178,159, 16,114, 22, 64,226,232,177, - 31,143,126,161, 67,251, 96, 66,200, 22, 0, 83, 89,137, 98, 48, 24,175, 35, 85, 50, 88, 82,155,109,250,212,169, 83, 45, 60, 30, - 15, 3, 7, 14,116,220,183,127,255,160, 91,183,111,135,100,101,101,185,216,108,182, 74,181, 60,141,198,101, 83,167, 78, 85,154, - 76, 38,132,133,133, 33, 47, 47, 15, 54,155, 13, 2,129, 0, 2,129, 0,132, 16,240,120, 60, 40, 20, 10, 68, 71, 71, 99,221,186, -117,106, 79,163,113, 89,165, 55, 7,155,237,238,230,205,155,193,231,243,169,131,131, 3, 8, 33, 16, 8, 4, 88,178,100, 73,214, -143,192,110, 0,224,243,120, 38, 0,224,241,136,189,189,114, 43,109,159, 20,139,197,224, 10, 59,247, 87,186,173,171,209,184,116, -209,162, 69,154,135, 15, 31, 66,171,213,150, 68,219, 10, 10, 10, 74, 58,205, 43,149, 74, 16, 66,160,213,106,177,127,255,126,141, -171,209,184,180, 60,189, 92, 32, 35, 53, 46,174,111,211,166, 77,115,159, 62,125, 10,149, 74,133,187,119,239,226,196,137, 19,216, -190,125, 59,142, 29, 59,134,199,143, 31,195,106,181,194,223,223, 31,148, 82,236,221,187, 87,101,213,104,122,228, 2, 25,172,232, -151, 79, 53, 31,159, 78,222, 94, 94,201,158, 30, 30,169,213,124,124, 58,189,248,189, 51, 16, 27, 27, 27, 11,171,213,138,144,144, - 16,183,138,250, 97, 81,171,245, 66,177,113, 9,172, 81, 99, 97,112, 25,198, 37, 24,240, 12,174, 89,115, 97,177,113,161, 86,235, -133,170,166,217, 17, 88,254,233,167,159,234, 69, 34, 17,182,109,219, 22, 98,169, 85,235,145, 0, 24,174, 0,194,219, 3,162,202, -246,247, 5, 86,124,245,213, 87, 25,132, 16,108,217,178,197,195,185,102,205,123, 2, 96,148, 51, 80,205, 25,168, 38, 0, 70, 57, -215,172,121,111,219,182,109, 30, 86,171, 21,147, 38, 77,202,240, 5, 86, 84, 32,249, 49,165,180, 15,165,180, 45,165, 52,112,221, -170,101, 56,180,111,103,177,185,122,143, 82,122,141, 82, 58,146, 82,122,143,149, 56, 6,131,241, 58, 66,202,234,231, 36,108, 54, - 47, 19,160, 94,237,154,215,195,245,219, 49, 42, 15, 87,167,163,197,223,229,221,223, 89,187, 99,148, 83,189,159,127,254, 25, 66, -161, 16, 41, 41, 41,120,240,224, 1,156,156,156,240,230,155,111, 26,245, 26, 77,223,226,181, 8, 9, 33,157, 41,165, 39,138, 52, - 11,215, 59, 83,197, 41,106, 10,238,212, 56,114,232, 32,223,217,217, 25, 5, 5, 5, 37,211, 10,200,100, 50, 72,165, 82,220,184, -113, 3,189,250,244,179,101,203,218,150, 76, 52, 90,188,222, 89,105, 77, 16,194, 7,128,102,128, 44, 26,152,226,229,231, 55,245, -203, 47,191,148,118,235,214, 13, 34,145, 8, 1,213, 66, 51, 66,186,127,183,156,199, 35,214,212, 92,245,140,154,213,252,156, 31, -196, 37, 2, 32,133,107, 22, 22,173, 69, 88, 86, 58,131, 76,103, 67,246,108,252,222,169, 65,131, 6, 37, 81,177,204,204, 76,100, -101,101, 65,169, 84, 66,171, 45,156,234,225,224,193,131, 56,116,238,145, 90, 31, 48, 40,190,188,116,254, 39,239, 49,142,126,230, -171,213,183,110,222,200,247,244,244, 68,102,102, 38,178,179,179,161, 84, 42,161,215,235, 97,179,217,144,151,151,135, 95,215,111, -180,229, 42,218, 38, 20, 79,228, 88,161,166, 54, 69,234, 86,112,209,191, 97, 68, 48,125,247,221,119, 29,157,156,156,192,113, 28, -242,243,243,145,156,156,140,167, 79,159,226,220,185,115,218, 44,165, 9, 90,143, 46,169,197, 19,141,150,121, 60, 95, 85,161,250, - 39,106, 22,149, 37, 0,240,243,245, 77, 75, 74, 74,242,178,217,108,240,247,247,183, 42,243,242, 22,138,129, 99,142, 64, 58, 0, -154, 3,124,185,116,249,242,119,250,245,235,135, 38, 77,154,164,100,100,102, 86, 47,171, 44,129, 16,126, 24,224,172, 11, 8,184, -127,237,218, 53,159,228,228,100,188,245,214, 91, 57, 73, 79,158,148, 76,211,160, 2,218, 4,215,172,185,112,219,182,109, 30, 53, -106,212, 64, 84, 84, 84,134, 67,241, 52, 13,101,151,207,114,175, 77,101,236, 31,213,223, 31, 16,217,100,194,132, 9,176, 90,173, - 56,119,238, 28,174, 94,189,138,164,164, 36, 92,188,120, 81,233, 36,151, 15, 45, 94,139,176,188,242,217, 35, 84, 27,178,101,203, -102, 34, 18,137,176,126,253,122, 68, 71, 71, 3, 0, 26, 54,108,136,209,163, 71,195,106,181, 98,196,136,145,244,143, 24,105,124, - 69,229,147, 16, 18, 9, 96, 49, 10,205, 93, 19, 74,169, 3, 33, 36, 13, 64, 96, 85,250, 92,177,242,201, 52,153,230,191, 71,243, -117,163,210,181, 8,191,249, 5,206,207, 47,199, 49, 38,109,231,170, 57,130,214,109,218,134,207,153, 61,139,215,180,105, 83, 4, - 6, 6,162, 97,195,134, 72, 78, 78,150,184,184,184, 84,182,222, 89, 65,219,238,195,159,214,171, 87,207,101,218,180,105,206, 93, -187,118, 21, 6, 6, 6,130, 82,138,232,232,104,236,222,189,219,188,118,237, 90,181,206,187,143,242,230,233,223, 10,236, 89,239, -236, 42,160, 3, 48, 55, 32, 45,109,245, 7,239,191, 63,171, 65,163, 70,239,206,158, 61,155,167,144, 73,133,243,103,188,231, 0, - 0,223,252,180,221,185,223,160, 55,177,180, 22,208,110,120,217,235,188,149, 78,103,114,234,152,164,158, 3, 58,213,154,242,225, - 59,182, 33, 67,134,200,157,156,156, 16, 24, 24, 8, 87, 87, 87,196,199,199, 35, 53, 53,149, 30, 56,112,160,224,242,173, 88,225, -222, 99,215,147, 28,156,125,237, 89, 55, 80,211,182,219,224,132,158, 61,123,186,142, 26, 53,202,177,113,227,198, 66,137, 68, 2, -137, 68,130,204,204, 76, 60,126,252,216,124,224,192,129, 2,157, 87,143,252,155,167,183,105,236, 92,139, 80,223,118,216,156,199, -231,143,207,158,116,255,238,221,145, 28, 80,223,108, 54,251,219,108, 54,194,227,241,210, 57,142,187,107,214,104,214, 25, 27,206, - 94,194,214, 34,180, 15,155,205, 38,178,217,108, 80, 42,149, 56,126,252,184,224,201,147, 39, 95,222,190,125,251,203,180,180, 52, - 88, 44, 22,188,241,198, 27,104,216,176, 33, 78,159, 62,141,236,204,204, 3, 21,105,197, 0, 42, 73,106,234,232, 49, 99,198, 28, -222,188,121, 51,239,246,237,219, 30,235,215,175,255,181, 44,227, 50,114,228, 72, 46, 51, 57,121,180,177,130, 57,176, 42,185, 54, -115,142,108,251,241,118,255,129,131, 34,102,207,252, 82,216,178,101, 75,120,120,120,160, 77,155, 54, 48,155,205, 46,117,234,212, -169,236,218,212,180,237, 62, 52,190,126,253,250,242, 37, 75,150,248,188,243,206, 59,248,240,195, 15, 1, 0,122,189, 30,199,142, - 29,195,164, 73,147, 50,146, 5,205,180,149,149,207,162,200, 84,177,241, 58, 11,160, 45,128,120,214,161,157,193, 96,252,171, 13, - 22,240,159,245,206,206, 95,189,135,210,203,113, 20,226,251,192, 26, 52,234,201,184,169, 11,163,248, 22,181,171,144, 24,156,226, - 98, 99, 73,101,107, 18,150,172,119,230, 28, 90,224,254,244,247,166,243,191,249,102,226,210,165, 75, 59, 21, 79,197, 32,147,201, -238,234,181,218,147,158, 70,227, 50,157,115,232,201,170,174,157,151, 10,100, 2,120,223,245,230,205,229,189,251,189,177,200,193, - 45, 68,248,197,188,181, 6, 62,143,103,122,156,150,141,165,181, 0,185, 29, 3, 30,117, 38,224,190,210,215,154,233, 62, 40,230, -171, 79, 63,157,242,205,220,185, 77, 21, 10, 69, 59,179,213, 26,202,113, 28,192,113,113, 58,173,246, 44, 53,155,175, 25, 27,206, -252,222,193,217,151,218,189,110,160, 75, 29,141, 91,194,206,166, 27,214,173,251,120,199,142, 29,255,149,119,119,163,113,185,206, -165,206, 9,123,242, 94,122, 27, 3,112, 9, 89, 89,151,202,125,218, 0, 91,139,208,238,139,130,227,198,186,186,186,110,234,212, -169,147, 67,231,206,157,209,171, 87, 47,180,108,217, 18, 28,199,129, 82, 10,141, 70,131,237,219,183, 99,209,162, 69,113,213,129, -185,149,233, 25,129,147,146, 67,135,122,212,175, 95,127,125, 69,198,165,200, 92, 85,218,231,176,226,107, 83, 18,103,117,238,155, - 56,236,131,249,181, 76,234,116, 23,119,153,213,231,254,189,187, 60,251,175,205, 48,141, 45,122,123,179, 55, 6, 12,248,128, 47, - 16,180, 41, 26,209, 72, 31, 62,120,112,179,120,177,103, 52, 28,125,188,138,101,169,120,238, 57,214,161,157,193, 96,252,187, 13, -150, 64, 32,200, 42,142,242, 8, 4,130,172,248,189,227,222,172, 72, 68, 8,116, 42,138, 92,161,210,181, 8,139,222, 39, 2, 26, - 24,141, 95, 63, 55,137,104,169,209,130,194, 23,182,175, 74,166,242,129, 24, 88,141,189,145,245, 0,216,255,126,161, 94,211,111, - 62, 47,157,167,114, 15,200,115,191, 43,202, 51, 0,231, 81, 80,112, 30, 5, 5,101,206, 46, 45, 20,136,242, 42, 75,231,139,121, - 79, 6,212,127, 54,239,130, 42, 30, 31,193,159, 56,158,255, 54,158,229,228,236, 5,160, 8, 56,120,208,251,200,193,131, 67,166, - 76,158,252,134,175,159, 95, 77, 15, 15, 15, 87, 71, 71, 71,222,149, 43, 87,158, 90, 13,134,229, 13,128, 13, 69,209,211, 74, 49, - 2, 39,195,146,147,235, 14, 30, 48,224, 3, 34, 16,180, 46,109, 92,168,213,122, 49, 4, 88, 97,180, 99,246,246,170, 94,155,129, - 18,223, 78, 69,145, 43,240,237,188, 54, 83, 11,211, 49, 15, 86,235, 60,220,185, 83, 70,153,175,114, 89,250,134, 16,162, 1,155, -161,157,193, 96,252,155,248,139,215, 21,234,204, 52,153,230,235,162, 89,232, 81,224,196,142, 39,211,100,154, 76,147,105,190,122, -205,215,237, 37, 96, 22,147,193,176,251, 97,196,134,255, 52,119, 49, 24, 12, 6,131, 81, 46, 4, 64,231,114,110, 38,118,143, 14, - 32,132,116,126,137,155,213, 9,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52, 43,211,126,109, 70, 39,178, 38, 66,166, -201, 52,153, 38,211,100,154, 76,147,105,178, 38,194, 87,251,226,129,193, 96, 48, 24,152, 51,135,240, 0, 66,128, 57, 60, 96, 39, - 31, 24,204, 47,252,255,229, 25, 60,152,148, 57, 9,237,199, 31, 19, 71,118,196, 25,140,215, 27,214, 7,235,111,132, 16, 18,228, -227,227,179, 10, 0,201,200,200, 24, 75, 41, 77,102, 71,229,127, 15,119,119,247, 78, 86,171, 21, 42,149,234,228,235,152,191,186, -181,200, 0,202, 67,157,255,132,181,145,252, 32,142,110, 42,107,219,136, 80,242, 22,200,127,230,210, 34, 28, 30,222,127, 76,247, - 84,161,204,243,250,247,240, 92, 12, 0,123, 15,103, 79,253, 43,230,197, 34,132,212,246,244,244, 60, 42, 16, 8, 4, 54,155,237, -253,204,204,204,131,229, 27,160,193,124, 0,240,148,238,158,238,226,230, 49,237,171, 41, 68,104, 50,126,167, 52, 26, 12, 42,158, - 64,144, 32, 22,201, 46, 88,121,242,195,169,153, 61, 30,148,181,255,142, 29, 59,202, 93, 93, 59, 50,148,244, 8,143,136,232,211, - 40, 74, 26,191,120, 89,211,165,237, 66, 60,132, 79, 83,110, 41,126,217,148,188,202,211,213,191,207,196,247, 4, 7, 37,212, 54, -242,219, 95,105, 1,187,202,236,103, 1, 33,110,102, 32, 74, 40,145, 4,218,172, 86,111, 2, 80,190, 64,144,105, 49, 26, 83, 68, -192,157,105,148, 42, 95,119, 77,145, 68, 18, 96,179, 90,189, 1,224,127, 49,157,140, 74, 12,150,163,163,227, 13, 30,143, 23, 80, -122,145, 90, 94,209,130,206,197,159,149,254,142, 16, 2,155,205,150,154,151,151,215,184, 10, 21,161, 19,128, 33, 0,138,135,154, -111, 5,176,157, 82,170,126,201,138,213, 73, 36, 18, 77,149,203,229, 29,245,122,125, 93, 0,144, 74,165,247,181, 90,237, 41,179, -217,188,248,101,116, 9, 33, 2, 0,131, 21, 10, 69, 7, 30,143,215,129, 82, 74, 40,165,167, 11, 10, 10, 78, 1,216, 65, 41,181, -190,132,166,212,203,203,107, 94,120,120,248,240,233,211,167,231,186,187,187,135, 77,154, 52,233,186,167,167,231,111, 57, 57, 57, - 51, 40,165,250,255,133,194, 65, 8,169,233,227,227,179, 85, 40, 20,242, 83, 82, 82, 58, 0, 64, 96, 96,224,105,147,201,100,203, -202,202,122,147, 82,250,164,138,122,114, 0,205, 21, 10, 69, 99,133, 66,209,214,102,179,213,225, 56, 14, 28,199, 61, 44, 40, 40, - 56,103, 54,155,111, 0,184, 66, 41,213,254, 15,153, 96, 71, 47, 47,175,205,132, 16, 16, 66, 66, 41,165,154,215,173, 18,160, 60, -212,121,112,255, 81, 88,137,137,170, 27, 94,193, 1, 65, 80, 25,219,218,109,176,122,118,114,233,222,167, 79,125, 30, 0,152,205, -215,187, 3, 56,244,170,205,213,192,129, 3, 47,109,222,188,217,213,104, 52, 98,236,216,177, 91,157,157,157, 87,168, 84,170,233, - 21,237,231,232,232, 56,105,238,215, 63,201,138,234, 52, 47,142,227,188,210,211, 83, 66, 99, 30,221,237, 30, 19,115,111,190, 89, -187,231,138,153,242,199, 41,117,125, 31,217,147,142,136,154,164,119,191,193, 3,122,205,157, 59, 27,195,135, 14,175,118,255,190, - 65,234,239, 20, 47, 86,155,229,181, 60, 60, 2,250,126,254,197,183,228,202,229, 51,125,119,108, 95,123,234,243,119, 73, 71,102, -178,236, 58,183,228, 27,129,160,185,107,120,120,219,161,123,247, 66, 17, 24, 40, 16, 72, 36, 60, 0,176, 26,141,129, 5, 41, 41, -190,219,250,246,109, 54,135,144, 51,179, 40,189,202, 52,255,255, 53, 25,118, 26, 44, 30,143, 23,240,236,217, 51, 47,185, 92, 94, - 88, 9, 83, 10,155,205, 6,155,205,134,162,155, 34, 40,165, 37,127,173, 86, 43,194,195,195,237,122,130, 5,208, 17,192,219,237, -219,183, 31,180,120,241, 98, 97, 84, 84, 84,241,210, 30,109,190,248,226,139,159, 8, 33,187, 0,108, 0,112,210,222, 39, 92, 66, - 72, 55,185, 92,190,229,187,239,190,115,234,210,165,139,192,207,207, 15,132, 16,100,100,100, 52, 63,113,226, 68,227, 73,147, 38, -189, 79, 8, 25, 65, 41, 61, 90,133, 11, 58,210,209,209,113,231,128, 1, 3, 2,218,181,107,231, 16, 17, 17, 1,155,205,134, 91, -183,110,189,115,227,198,141, 97,187,118,237,154, 69, 8, 25,100,239,122,106,132, 16,162, 80, 40, 70,249,251,251,207,155, 57,115, -166,219,136, 17, 35,196,247,238,221,203, 15, 9, 9, 33, 23, 46, 92,240,220,190,125,251,251, 11, 23, 46, 28,236,232,232, 56,163, -160,160, 96, 35, 45,107, 29,163, 23,112,114,114,186,193,227,241, 2,236, 49,192, 0,236, 54,193,132,144, 6,213,171, 87,223,126, -254,252,249,234,137,137,137,182,254,253,251,111, 2,128, 83,167, 78, 69, 89, 44, 22,210,181,107,215,195,132,144, 33,148,210, 91, -118,230,189,158,155,155,219,190,225,195,135,187,213,172, 89, 83, 86,189,122,117, 34,151,203,193,231,243,161, 82,169,252,238,221, -187,215,249,234,213,171,250, 19, 39, 78,228, 17, 66,250, 82, 74,239, 84,225, 60,181,244,242,242, 26, 41, 20, 10, 35,173, 86,171, - 63, 0, 8, 4,130,103, 22,139,229, 94, 86, 86,214,102, 74,233,165,151,189, 64,188,189,189,127,156, 55,111,158, 71, 86, 86, 22, - 93,184,112,225,143, 0, 70,189,174,149,193,214,223,118,224,198,245,171, 0, 32, 34,132,144, 23,203, 31, 33,132,212, 9,133,232, -147, 79, 38,163,113,147,102,120,115,248,224, 74, 53,251,247,242,152, 43,230, 11,220,117, 38,227,213, 28, 21,111, 95,144,151,120, -192,136,193,141,227, 1,224,200,225,187, 3,154, 53,115,187,224,225,204,245,147,137, 37,205, 76, 54,107,238,222, 63,114,102, 86, -197, 76,249,251,251, 31,117,117,117,149,229,229,229,101,100,103,103,255, 50,112,224,192,111, 54,108,216,224,250,244,233, 83,164, -164,164, 96,226,196,137,138,212,212,212, 15, 36, 18,201,101,163,209, 88,110, 36, 75,163,209, 44,155,247,245,228,153,142, 78,174, -124,153, 84, 14,133,163, 19,170, 87, 15, 69,147,166,109,208,185, 75, 95,196,199,199, 52,223,254,251,218,104,126,250,206, 5, 54, -113,195,111,148,202,234,229,214, 75,117,195, 72,187, 98,115, 53,115,230,108,196, 62,122,164, 73, 76,224,125,244,199, 94,129,172, - 71,167,112,137,201, 92,144,120,229,242,153,234,205, 91,180, 7,128,198, 59,182,175, 61, 53,103, 4,233, 52,107,203,235,103,222, - 95,165,185,154, 43, 20,142,234,182,100,137, 87,195,247,223, 23, 21, 36, 36,152,227, 87,174,212,101,158, 59,103, 19, 72, 36, 52, -176,123,119,226,217,161,131,195,251, 15, 31,138, 46, 46, 92,216,118,190, 88, 28,242,133,201,180,133,105,254,255,105, 50,170, 96, -176, 8, 33,144,203,229,216,182,109, 27,132, 66, 33, 4, 2, 1,132, 66, 97,185,239,131,130,130,236,185, 72, 6,250,248,248,252, -180, 98,197, 10,239,110,221,186,193,193,193,161,228, 59, 62,159,143, 46, 93,186,160,115,231,206,194,180,180,180, 97,219,182,109, - 27, 54,127,254,252, 76, 66,200,135,148,210,221,149,232,118, 8, 11, 11,219,125,236,216, 49,169,193, 96,192,185,115,231,144,159, -159, 15,177, 88,140,128,128, 0,116,237,218, 85,240,232,209, 35,183, 46, 93,186,236, 38,132,244,166,148,158,182, 35,173,141,189, -188,188,206,238,216,177,195,161,126,253,250,228,241,227,199,104,216,176, 33, 0, 64,165, 82,161,127,255,254, 14, 35, 70,140,168, - 57,108,216,176, 43,132,144,118,148,210, 27,149,232, 53,242,241,241,217, 56, 96,192, 0,191,249,243,231, 59, 57, 58, 58, 34, 49, - 49, 49,221,199,199, 39,180,248,120, 15, 27, 54, 76,220,167, 79, 31,223, 69,139, 22, 45,219,185,115,231,167,132,144, 81,148,210, -155, 21,233, 22, 27, 97,153, 76,134,204,204, 76,108,221,186, 21, 31,124,240, 1,248,124, 62,178,178,178,176,125,251,118,124,244, -209, 71,197, 70,198, 46, 19, 44,151,203, 59,215,175, 95,255,215, 83,167, 78, 5,184,184,184,192,207,207,143,247,213, 87, 95, 69, -134,132,132, 72,171, 85,171,198, 79, 79, 79,199,238,221,187, 67, 70,142, 28,185,207,193,193,225, 29,131,193, 80,105,211,153,183, -183,247,186, 63,254,248, 35,232,254,253,251, 88,185,114, 37,242,242,242, 32, 22,139,225,226,226, 2, 31, 31, 31,132,134,134,146, -105,211,166,201,250,244,233, 35,251,240,195, 15,215, 1,104, 96,199, 57,170,239,229,229,181,106,216,176, 97, 33,115,230,204,113, -241,241,241, 65,241, 3,129, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 65,222,222,222, 79,179,178,178,198, 81, 74,111, 87,177, - 82,111,208,169, 83,167,222,253,251,247,231,167,167,167, 99,243,230,205,189, 9, 33, 13,236, 53,149,255, 52,110, 92,191,138,177, - 19, 38, 22,248, 5, 6,138, 14,236,255,189, 95, 65,193,234, 11, 10,158,139, 0, 0, 10, 56,165,181, 85,115, 69,235, 62,125,135, -137,122,246,234, 95,176,250,231,101, 10,123, 12,150,152, 47,112,223,182,101,124,202,185,139,113,117,142,158, 72,236,220,191,111, -103,158, 64, 20, 86, 19, 0,166, 76, 30, 35,222,187,255,196,138,110,157,171,165,183,109, 21,154, 50,116,196,202,192,170,152,171, -218,181,107,159,137,142,142,246,150, 72, 36,200,203,203,115, 95,189,122,245, 15,173, 91,183,230,197,199,199,227,209,163, 71, 72, - 72, 72,128, 74,165, 66,151, 46, 93, 20, 55,111,222,252, 5, 64,185, 6, 43, 91, 63,112, 94,136, 87,206,114,127,119,215,234, 6, -179,202,203,102,205,141, 56,117,226,118,189, 93, 59,116, 13,189,124, 2, 66,135, 13, 27,139,207,167,127, 43,220,179,107,227,204, -179,231,142, 1,168, 94,254, 12,254, 20, 45,191,152, 49, 29,106,141, 17, 35,134,143,193,200,225, 99,220, 41, 76,190,212,102,144, -155,244,249, 46,206,162,251, 7, 55,254,190, 99, 0,128,128, 82, 38,235, 36, 51, 89,229, 51, 87, 32,104,214,251,167,159, 60, 35, -223,123, 79,114,123,206, 28,109,206,185,115,250, 90, 61,123,230, 55, 28, 63,222, 8, 0,154,132, 4, 81,236,172, 89, 50,207,182, -109,165, 45,166, 78,117,181,153, 76, 62, 95, 19,210,244, 43, 74,175, 85, 85, 51,104,200, 16,219,204,245,235,155,156,155, 60,185, - 61,177, 88,248,221, 91,180,184,181,112,243,230,103,127, 70,243, 85,166, 51,237,236, 89, 99, 94, 72, 8, 26,246,239,159, 27,228, -229,101,124,149,121,255, 51,233,100,148, 81, 79, 81, 74, 65, 8,105, 7,224, 12,128, 57,148,210,217, 0,224,226,226,146,169, 84, - 42,189,118,239,222, 93,169,185, 18, 10,133,240,245,245, 69,104,104,104, 86,102,102,166,119, 5,149, 98, 10,199,113, 1,148,210, -146,104, 75,121, 24,141, 70,196,197,197,161, 94,189,122,169,148,210,192,138,154,112,100, 50, 89,252,163, 71,143, 60, 30, 60,120, -128, 27, 55,110, 32, 36, 36, 4,174,174,174, 16, 10,133,176, 88, 44, 80,171,213, 8, 11, 11,131, 68, 34, 65,163, 70,141,114,180, - 90,109, 72, 69, 77, 61,132, 16,137, 92, 46,143, 59,123,246,108, 96,195,134, 13,113,237,218, 53, 4, 6, 6,194,199,199, 7, 0, -144,144,144,128, 11, 23, 46,160,103,207,158,136,142,142,198, 27,111,188,145,162,213,106, 67, 41,165,198,242, 52,221,221,221,211, - 79,157, 58,149, 26, 21, 21,101,208,106,181,188,204,204, 76,225,185,115,231,172, 26,141, 70,161, 82,169,132, 74,165, 82,168, 86, -171, 5, 90,173, 86,200,227,241, 68,122,189, 94,120,242,228, 73,190,201,100,114,170,232, 56, 21,159,167,253,251,247, 35, 42, 42, - 10,187,119,239,198,148, 41, 83,112,241,226, 69, 4, 6, 6, 98,199,142, 29,152, 58,117, 42, 98, 98, 98,224,225,225,129,136,136, -136, 10,207, 17, 0,212,170, 85,235,241,221,187,119,107,138, 68,162,226,117, 23,139,215,179, 67,118,118, 54,158, 60,121,130,103, -207,158,161, 86,173, 90, 24, 62,124,248,147,212,212,212, 90,149, 21,180,128,128,128,236,251,247,239,123,212,171, 87, 15,153,153, -153,112,113,113,129,179,179, 51, 92, 92, 92, 74,222,135,132,132, 96,242,228,201,240,241,241,201,210,235,245,222,149,153,159,168, -168,168,163, 39, 79,158,244,112,114,114, 66, 70, 70, 6,212,106, 53, 4, 2, 1,100, 50, 25, 60, 60, 60, 74, 12,124, 92, 92, 28, -122,245,234,149, 19, 31, 31,223,173, 10, 17, 55,158,183,183,247,163, 59,119,238,132, 82, 74,145,156,156,140,152,152, 24, 76,152, - 48, 33,206, 96, 48,132,191, 78,107,234,149,234, 87, 37, 26, 53,122,172,168,127,223,126,186, 91, 55,142,112, 82,156, 69,211, 6, - 82, 37, 0, 92,187,165,119,209,163, 29, 26, 52,238,206,219,187,127,159,108,227,134,213, 66,112,240, 6, 65,204,131, 88,250,117, -121,218,189,187,185,188, 53,117, 98,247, 58,109, 91,181, 21,168,213,212,231,215, 77,107,154, 38, 61,141,247, 6,128,224, 26, 33, -153,239,190, 53,230,154,147, 19,201, 56,119,241,156,117,241,178, 35, 15, 15, 30, 85,110,178,227,220,132,132,134,134, 94,222,191, -127,191,135,151,151, 23,156,157,157,161,213,106, 97, 54,155,241,224,193, 3,195,182,109,219, 44, 78, 78, 78,142, 25, 25, 25, 80, - 42,149, 32,132, 96,255,254,253,201,148,210,224, 23,181,138,251, 96, 1,192,132, 30,117,132, 17, 29, 67, 93, 69, 18,171, 84, 42, -140,245, 5,177, 73, 8, 85,120,159, 58,117,185,222,233,179,231,223,236,217,123,168,103,139, 22, 29,240,237,252,207, 45,201, 25, -153, 13,149,186,190,143,202,234,131, 85, 39,148,116,236,255,198,128,193,115,231,206,198,236,153,115,112,112,255, 94,149, 66,206, - 51, 58,185, 8,157,219, 54,111,101,152,252, 65,191, 20, 93, 65,106,224, 15, 43,214, 12,239,210,109,112, 64,243, 22,237,113,229, -242, 25,236,216,190,246,134,200,102, 97,205,133, 47, 48,135, 16, 87,151,144,144,113, 31,199,197,137,110,207,158, 93, 96, 77, 75, -203,111, 60,105, 82, 78, 89,219,166, 30, 63, 46, 23,251,249, 57,185,246,237,235,182, 44, 56,152, 90,178,178, 86,149,213,135,168, - 44,205, 19, 10,133,203,239,135, 15,119,162, 66, 97,187,207, 62,255, 92,218,187,119,111,168,213,106,236,218,181, 11,171, 86,174, - 52,250,250,250,222,245,187,119, 47, 58, 82,173,254,210, 94,205,198,147, 38,229,216,108, 54, 50,120,234,212, 46,247, 19, 18, 58, -102,100,101, 85, 3, 0, 95, 55,183,148,198, 33, 33, 55,214, 29, 60, 24,243, 99,245,234,156,189,233, 92,115,228,136,247,206,196, -196,247,220,220,220,164,153, 89, 89, 2,137, 88,156,219, 60, 34, 98,199,207, 51,102,156,177,222,185, 35,114, 8, 8,112,114,238, -221,187,202,121,111, 60,105, 82, 78,158, 70, 35,248,248,155,111, 90, 37,101,102, 86, 43, 48, 26,107, 41, 53, 26, 31,155,197,194, -115,146,201,114,107,132,133,101,233,207,157, 75,175,161,211, 77, 92, 67,105,214, 95, 24,169,252, 47, 47,242, 58, 68,176,206, 80, - 74,255,107,180, 12,165,212,174,232,149, 80, 40,124,174, 57,170, 2, 68,132, 16,220,188,121, 19,238,238,238,240,241,241,129, 68, -242,252,226,128,217,217,217,184,120,241, 34, 30, 62,124,136,250,245,235, 3,128,168, 34, 65,137, 68,242,201,162, 69,139, 92, 76, - 38, 19,110,220,184,129,198,141, 27, 67, 34,145, 64, 36, 18, 61,103,254,178,178,178, 80,183,110, 93,124,246,217,103,206,243,231, -207,255, 4, 21,172, 33, 39, 16, 8, 62, 28, 51,102,140, 87,113,196, 42, 37, 37, 5,141, 26, 53, 42,249,222,211,211, 19,183,110, -221, 66,227,198,141, 17, 16, 16,128, 65,131, 6,121,109,222,188,249, 67, 0,139,203,125,146, 23,139,121, 81, 81, 81, 77,138, 34, - 68,224,241,120,177, 78, 78, 78,158,222,222,222,114, 39, 39,167,255,202,227,250,245,235,149, 60, 30,207, 82,217, 1,229,241,120, -200,200,200, 64,100,100, 36, 84, 42, 21, 0, 64,171,213,162, 86,173, 90, 80,171,213, 37,102,213,207,207, 15,122,125,197, 93,187, -234,215,175, 63, 59, 60, 60,188,107,251,246,237, 37, 66,161, 16,183,111,223, 70,195,134, 13,177,109,219, 54, 4, 5, 5, 65, 38, -147, 33, 46, 46, 14, 81, 81, 81, 56,123,246, 44, 60, 61, 61, 81,183,110, 93, 73,163, 70,141,206,231,229,229,157, 78, 76, 76,156, - 93, 65, 58,121, 10,133, 2,103,207,158,197,186,117,235,144,144,144,128,180,180, 52, 56, 58, 58,162, 65,131, 6,136,136,136, 64, -203,150, 45, 17, 23, 23, 7, 82, 73, 97, 34,132,248,132,134,134, 30,188,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, - 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14, 21, - 69,160, 50, 42, 59,174,174,174,174, 19,103,205,154, 21,232,229,229,133,196,196, 68,168, 84, 42,120,123,123,163,125,251,246,254, - 39, 78,156,152, 8, 96,201,235,114, 3, 43,238,208, 78, 8, 33, 7,246,255,222, 47,200, 87, 92,167,105, 67, 77,240,221,155,130, -154,135, 78, 60,174, 87,120, 60,130,239, 52,109,164,121,114,237,198,145,164, 3,251,127,191,250, 48, 22,251,236,105,194,206, 81, -241,246, 29, 61,145,216,185, 94,221, 54,252,229, 43,102,245, 27,251,110, 55,137,155,107, 27,162,206,218,142,139, 87,239, 6,127, - 53,123,154,215,215,179, 23, 30, 56,122, 34,209,150,163,226,205,179, 39,189,117,235,248,254,120,102,175,151, 71,129,249,103,220, -186,234, 12, 8, 91,160, 70, 72,109,168,213,106, 56, 56, 56, 56, 12, 31, 62,220, 54,125,250,116,157,147,147,147,140, 16,130,211, -167, 79,103, 1,232, 86,153,174,193,203,149,218,204, 22, 43, 21,243, 57, 74, 28,245,196,150, 39,190,247,224, 41,218,181,235,145, -217,164,113,195,249, 11,191, 91,242, 69, 72, 72,152,231,240, 17,227,132,139, 23,127,185, 18, 64,155,178,116, 30,198,209, 83, 17, - 53,137, 20, 64,175,185, 95,207, 70,124,124,156,235,216,183,149,115, 4, 18,169, 95,120,112, 43,199,149,235, 78,119,175, 85,171, -122,181,177,163,223,249, 99,245,250,117,189, 74, 71,178,126,255,109,245, 62, 66, 72, 39,123,142,237,191,136,122, 35, 15, 30, 68, - 65,114,178, 37,239,252,121, 67,167,159,126,202, 9,236,214,109,137,201,108,246, 40,174, 42,120,132,128, 20,119,145,224, 56, 34, -248,236, 51, 30, 21, 8, 96,113,117,125,123, 26, 80,187, 50,205, 41,233,233, 3,223,124,239,189, 94,251,142, 28, 65,245,234,213, - 75,238,103, 46, 46, 46,152, 58,117, 42, 38, 77,154, 36,185,117,235, 86,211,157, 59,119, 54, 93,252,221,119,222,211,128,129,246, -164,243,216,149, 43,174,227,231,206,157, 81,191,113,227,160, 77, 91,183, 74,106,214,172, 9, 0,120,242,228, 73,232,183, 11, 23, - 6, 71, 70, 69,101,206,255,228,147, 13,247,167, 79,175, 11,224,124, 69,154, 25,231,206,153,118, 38, 38,190,119,234,244,105,151, -200,200, 72, 0, 64, 76, 76,140,215,178,101,203,198,212, 29, 52,104,196,220,247,223,255,178,183,193,160,116,202,206,150,244,254, -241, 71,193,239,131, 7, 87,170, 89,156, 78, 0,104,255,206, 59,159,180,233,208, 33, 98,224,123,239,185, 5, 5, 5, 17,133, 66, - 1,179,217,140,180,180, 52,215,251,247,239,215, 60,168,209,168,247, 92,185,178,121, 77,209, 34,238,127, 17,101,122,145,127,186, -193,106, 79, 8,161, 0,218, 83, 74,207, 22,223,184,109, 54,155, 93,230, 74, 32, 16,160,168, 19,176, 93, 63, 74, 41, 69, 78, 78, - 14,114,114,114, 74,154,136,178,178,178,112,234,212, 41,196,197,197, 65, 40, 20, 66, 36, 18,193,108,174,124,109, 88,185, 92,222, -185,115,231,206,130, 43, 87,174, 32, 36, 36, 4, 82,169,180, 36, 93,197, 47,145, 72, 4, 95, 95, 95,168,213,106,116,234,212, 73, -184,124,249,242,206, 21, 25, 44,103,103,231,158, 67,134, 12, 17, 23,255, 95, 80, 80, 0, 62,159, 95, 98, 86, 10, 10, 10,144,151, -151, 7,165, 82, 9,131,193,128, 22, 45, 90,136, 15, 30, 60,216,179, 34,131, 85, 26,157, 78, 87,144,149,149,229,210,166, 77, 27, -215, 13, 27, 54,196,180,104,209, 34,236,185, 18,118,230,140,193, 96, 48, 8,121, 60,158, 93,235,220,109,217,178,165,228,216, 63, -123,246, 12, 43, 87,174, 44,249, 46, 46, 46, 14,203,151, 47, 47,153,151,163,162,115, 20, 30, 30,222, 99,243,230,205,141, 55,109, -218,148,207,231,243, 17, 19, 19,131,173, 91,183,130, 82, 10, 79, 79, 79,232,116, 58,100,102,102,226,244,233,211,176, 90,173, 80, - 40, 20,240,247,247,119,248,240,195, 15, 91,207,153, 51, 71, 8,160, 92,131,101,179,217,108,124, 62, 31,193,193,193,152, 57,115, - 38, 12, 6, 3, 68,162, 66, 95,169, 86,171,161, 84, 42, 17, 29, 29,141,196,196, 68, 84,118,115,113,112,112, 24,180,105,211, 38, - 47,177, 88, 12,189, 94, 15,141, 70,131,148,148, 20, 36, 37, 37, 25,178,178,178,172,142,142,142,188,224,224, 96,158, 68, 34,145, -244,239,223,159, 20, 27,205,222,189,123,187,111,222,188,121,104,101,230,136, 16,226, 89,167, 78,157, 47,198,140, 25,227, 80,186, -204,102,100,100, 96,224,192,129,178, 75,151, 46, 77, 39,132,108,165,148,102,191, 78,119, 49, 74, 41, 45, 40, 88,125,225,220,190, -159,234,220,189, 41,168,105, 50,229,183,232,210,115,162, 0, 0, 46,157, 93,223,226,238,205,123,144, 18,107,210,225, 99,139, 47, - 40, 20, 99,105,101, 17,192,158,157, 92,186, 7,121,137, 7,244,239,219,153,247,235,166, 53, 77,199,190,219, 77,226, 85, 99, 13, - 1, 0, 87, 81, 0, 90,218,166,240, 12, 70,173,195,175,155,214, 52,237,223,183,231,213,132,167, 73, 75,122,117,118,221,115,232, -164,242, 72, 69, 17, 66, 95, 31,161,191,155, 83, 46,220, 28, 27, 34, 56,196, 17,209,183,238, 96,223,238,243, 8, 13,111, 13,163, -209, 8,171,213, 42,239,211,167,143,110,219,182,109,134,216,216, 88,141, 94,175,111, 71, 41,141,173, 44,255,169,169, 15,184, 48, -159,230,102,145, 84, 98,213,168, 68,186,105, 95,238, 28,220,168, 89,215,198,174,190,254, 66, 79, 57,119,160, 67,187, 54, 91,127, -219,178,106,210,148, 79,191, 70,131, 6, 45, 90, 60,124,124, 56, 2,192,221, 50, 77,235, 19,122, 48, 50,148, 88,227, 31, 63,238, -149,148,152,152, 90,219,219,199,244, 68, 73, 45, 19,167,173,233,210,166,221,160,122, 53,235,180, 21,223,127,112,150, 76,254, 96, -204,111, 63,172, 88, 51,188,216,100,157, 59,119,180,221,236,217,137, 98, 0, 70,230,171,138,158,202, 37,146, 0, 69,112,176, 32, - 97,195, 6,125, 72,159, 62,249, 0, 96, 50,155, 61, 18, 18, 19,157,101, 50, 25, 40,165,176, 88, 44,207,245, 17, 46,238, 23, 28, - 25, 22,230,109,143,102,194, 87, 95,213,251,236,179,207,144,145,145, 1,171,213, 10,161, 80,248, 98,157, 13,173, 86,139,183,223, -126, 27, 63,126,247, 93,115,123, 52,109, 54, 27, 25, 63,119,238,140,207,103,204,168, 57,110,220, 56, 94,233,186,215,205,205, 13, - 59,119,237, 18,175, 88,177, 34,224,139, 31,127,124,251, 77,137, 36,190, 50,205,156, 90,181,224,150,153, 41, 45, 54, 87, 0, 16, - 22, 22,134,149, 43, 87, 74,222,125,247, 93,113,159, 62,125,190,191, 85,191,254,178, 37,173, 91, 63,118,175, 93,219, 73, 44,145, - 4,216,123, 60, 1, 64, 99, 48, 68, 46, 89,182,204,245,234,213,171,200,204,204, 68, 70, 70, 70,241,181,140, 38, 77,154,144,145, - 35, 71, 58,215, 8, 12,108,250, 23,159,238,255,242, 34,255,120,131, 85,148, 17, 82,148, 49, 82,234,166,248,156, 81,169,204, 96, -189, 12, 74,165, 18, 74,165, 18,107,215,174,133, 72, 36, 42,185,233, 2,128,201,100,178,199,172, 68,249,249,249, 65,165, 82,161, -118,237,218,207, 69,174, 68, 34, 17, 4, 2, 1, 68, 34, 17, 36, 18, 9,140, 70, 35,130,130,130,160,211,233,162, 42,210,212,235, -245, 13,220,220,220, 74,110,172, 70,163,177,196, 92, 21,167,215,100, 50, 33, 63, 63, 31, 5, 5, 5,208,104, 52,208,106,181, 13, -237,201, 47,199,113,184,119,239,222,147,176,176,176, 6,124, 62, 31, 10,133, 66,174,213,106, 75,250, 14,229,229,229, 97,227,198, -141,218,183,222,122,203, 99,255,254,253,149, 26, 44, 66, 8, 62,250,232, 35, 72, 36, 18,232,116, 58,252,242,203, 47,248,248,227, -143, 33, 18,137,160,209,104,176,114,229, 74, 76,158, 60, 25, 2,129, 0, 38,147, 9,203,150, 45, 43, 63,146,241,224, 65,194,149, - 43, 87, 26, 54,106,212,200,117,207,158, 61,217, 93,186,116,241,236,214,173, 27,164, 82, 41,244,122, 61, 44, 22, 11,154, 55,111, -142,240,240,112,100,101,101,225,240,225,195, 57,161,161,161, 30, 87,175, 94,229, 50, 50, 50,146, 42,187,121,151,138, 16,194,102, -179, 33, 51, 51, 19, 74,165, 18,217,217,217, 72, 75, 75, 67,106,106, 42, 4, 2, 1, 42,123,120,119,119,119,127, 35, 50, 50,146, - 15, 0, 82,169, 20, 13, 26, 52,192,140, 25, 51,172,122,189,126, 8,128,195, 69,155,245, 88,179,102,205,158, 11, 23, 46, 8,252, -252,252,240,232,209, 35,120,122,122, 10, 28, 28, 28, 42, 53, 88, 62, 62, 62,235, 15, 28, 56,224, 86,108,170,139,143,179, 78, 87, -120, 58, 6, 14, 28,232,182,105,211,166,245, 0,122,190,110, 55, 51, 5,207, 69,208,180,129, 84,121,232,196,227,122, 93,122, 78, - 20,248,214,156, 5, 0,104, 9, 8,142, 31, 90, 86,175,103,231, 90, 59,138,251,101, 85, 68,255, 30,158,139,251,244,169,207, 27, - 49,184,113,188, 64, 20, 86,115,203,166,101,222,110,174,109,254, 83, 73,240,221, 32,151, 2,225, 53,109,188,203,191,199,123, 79, -158, 24,102,218,186,225,189,248, 45, 59,110,116, 22,137,110,119, 4, 48,185, 60,237, 59,247,141,251,243, 53,254,117, 92, 69,103, - 8, 28,250,162, 97,131, 80,120,122, 42,241,203,234, 77,240, 15,106, 5,163,209, 8, 39, 39, 39,153,205,102, 51,243,249,252, 45, -246,152, 43, 0, 56,121, 82,201,213,173,171, 52,241, 53,156,245,131,143, 23, 15,232,210,163,111, 68,199,142,157,185, 99,199,143, -153, 91, 53, 52,167,119,236,216, 34,243,244,153,115,113, 25, 25,207, 66,195,195,235, 33, 54,230, 86,119,128,220, 3,202, 46,176, -247,226,232,145,154, 53,201,233,109,219,198,114,122, 46, 90,250,205,188,187, 61,122,245, 26, 21,217,182, 77, 91,238,248,137, 83, - 38, 49,114, 30, 42, 90,183,124, 54,106,216,144, 61,219,118,239,233,122,250,212,193, 90, 42,117,230,193,239, 86, 80,102,174, 74, - 63,156, 89,173,222, 2,137,132,151,125,250,180, 53,234,221,119,141,197,215,163, 76, 38,195,190,125,251, 32, 22,139, 75, 94, 34, -145,168,228,189,183,183,119,241,160, 42,187, 52, 1, 32, 61, 61, 29, 25, 25, 25,112,118,118,134,167,167, 39, 50, 50, 50,112,233, -210, 37,196,198,198, 66, 40, 20,162,123,247,238,224,149,211,119,249, 69,205,193, 83,167,118,169, 19, 21, 21,244,162,185, 2, 0, -179,217,140,188,188, 60,244,235,215,143,119,248,240, 97,159, 35,201,201,125,191, 2,182, 84,164,217,176, 87,175,220,204,157, 59, -203,252,237, 70,141, 26,145,139, 23, 47, 74,186,119,235, 54,105,202,188,121, 43,126,220,180, 41,197,102,181,250, 84, 37,239, 60, - 30,143, 71, 8, 65, 96, 96, 32,242,242,242, 80, 80, 80,216, 82,173, 80, 40,224,234,234, 10,139,197, 2,142, 82,225, 95,252,144, - 87,166, 23,249, 71, 27,172,162,204, 0, 64,251,210, 55, 20,142,227,236, 50, 87, 66,161,176,210, 62, 85,246, 68,181, 94,196, 30, -131, 85,156, 86, 7, 7,135,146, 11,172,180,177, 42, 78, 39,143,199, 3,159,207,135, 61,145,119,142,227,248, 26,141, 6,187,118, -237, 66,187,118,237, 74,154,159, 84, 42, 21,148, 74, 37, 84, 42, 21, 12, 6, 3, 18, 18, 18,112,242,228, 73,212,170, 85, 11,128, -125,147,182,198,199,199,223,168, 94,189,122,227,226,155,119,135, 14, 29, 2, 54,108,216,144,214,179,103, 79, 63, 74, 41,190,252, -242,203,156,230,205,155,123,148,190,185, 87, 6,159,207,199,165, 75,151, 80,171, 86, 45, 80, 74, 33, 18,137, 16, 19, 19, 3, 47, - 47, 47,112, 28, 7,129, 64,128,236,236,108, 56, 58, 86, 60,183,225,189,123,247, 70,191,243,206, 59,105,206,206,206,245,114,115, -115,211, 37, 18, 73,155,115,231,206, 5,154,205,102, 56, 57, 57,193,201,201, 9,135, 14, 29,130,139,139, 11, 62,249,228,147,100, -189, 94,127, 73, 46,151,123,235,245,250, 59, 25, 25, 25, 95, 86,229,124, 91,173, 86,104,181, 90,228,231,231, 35, 47, 47, 15,106, -181, 26, 6,131,161,210, 52,150, 69,155, 54,109,112,240,224, 65,254,130, 5, 11,126,141,143, 47,124, 16, 12, 9, 9,193, 39,159, -124,194,247,247,247, 71, 66, 66, 2,110,220,184, 1,179,217,140,202,194,207, 66,161,176,195,148, 41, 83, 90, 7, 5, 5, 17,179, -217, 12,142,227, 96, 52, 26, 81,252, 62, 57, 57, 25,117,234,212,225, 5, 7, 7,183, 32,132,116,176,103,192, 4,163, 16,117,214, -118,184,138, 2, 0,190, 27, 56,245, 10,104, 95,114, 50,146,172,172,172,121,195,199,241,223, 61,180,181,192, 59,230,177, 35, 2, - 67, 70, 34,160, 70, 63,140,121,199,134,217,223, 28,132,127, 96, 4,146,146,146,208,161, 67, 7, 81, 90, 90,218, 59, 0,166,218, -171,125,252,248, 21,219,177, 67,135, 7, 13, 30, 58,170,113,231,206, 61,173, 71,143, 30,194,189, 59, 71,239,191, 51,244,141, 44, -202, 21, 16, 23, 23, 89,244,227,199, 15, 67, 35, 35, 27,193,108,177,180, 1,102, 47, 2, 80,110,165,242,228, 9, 53,205,153, 51, -135,247,199,222,245, 35,135,143,120,187,126,167, 78, 93, 45, 71,143, 31,192,141,203,199,111,127,191,104,204,217, 5,203,182,119, -232,210,253,141,186, 14, 78, 87, 14, 69,214,213,191, 23,232, 20,244,132,149,148,114,110, 86, 14, 14, 28,138,234, 69, 30, 33,160, -148, 62,103,174, 94, 52, 88, 60, 30,175,210, 7,255,210,154,165,239, 69,197, 15,210,171, 86,173,130, 68, 34,129, 88, 44,134, 80, - 40,172,180,155, 69,105,205,251, 9, 9, 29, 55,110,217, 34, 41,203, 92,229,230,230, 34, 55, 55, 23, 5, 5, 5, 24, 54,108,152, -104,206,245,235,141, 42,211, 12,242,245, 53,202,165,210,204, 7, 15, 30,248, 69, 68, 68, 60,151, 94,181, 90, 13,169, 84,138, 45, - 91,183,138,122,247,234, 53,161,211,161, 67,223, 3, 80, 86, 53,239,132, 16,120,121,121,193,213,213, 21,132, 16, 88,173, 86,100, -100,100,224,254,253,251,184,126,253, 58,248,132, 88,255,202,115, 92,150, 23,121, 29, 34, 88,164,188,104,139,189, 6,139,207,231, -191,116, 20,171, 60,236,105, 34,148,201,100,119,211,210,210, 90,249,251,251,195,106,181,150, 24,172, 23,155, 8,139,163, 29,183, -110,221,130, 76, 38,187, 91,153, 38,165,180, 69,211,166, 77,177,123,247,110,156, 62,125, 26, 79,159, 62,133, 78,167,131,209,104, -132, 94,175,199,253,251,247,193,113, 28, 34, 35, 35, 33,151,203, 43,213, 4, 0,173, 86,155, 46, 20, 10,195,164, 82,233,127,154, - 59,124,125,145,155,155,203, 89, 44, 22,108,220,184, 81,237,227,227, 35,151, 74,165,118, 27, 86, 66, 8,178,178,178, 16, 16, 16, - 80,210, 7, 75,163,209,192,203,203,171,216, 80,192,104, 52,194,209,209,177,210, 38, 66, 74,169, 1,192,148, 82,218, 77, 6, 15, - 30,252,219,182,109,219,106,156, 56,113, 2, 87,175, 94,133,167,167, 39,230,207,159,255, 52, 49, 49,113, 56,165,244,250, 95,112, -129, 85,186, 77,110,110,238,174,187,119,239,182,104,218,180,105, 73,237,208,161, 67, 7,210,161, 67, 7,143,210, 33,253,236,236, -108, 92,187,118, 13, 39, 78,156, 0, 33, 4,113,113,113, 54,189, 94,255, 91, 5,191, 45, 10, 14, 14,222, 48, 99,198, 12,133,213, -106, 45, 41,219, 82,169, 20, 14, 14, 14, 16,137, 68,224,243,249, 72, 76, 76, 68,191,126,253,156,127,250,233,167,245,132,144,154, -148, 82, 51, 94, 19, 10, 56,165,245,218, 45,189,139,171,107,240,157, 75,103,215,183,104, 89, 84, 71, 92, 58,187,222,234,234, 26, -124,231,218, 45,189, 75,219, 64,165, 85, 81,137,206,222,195,217, 83,205,230,235,221,143, 28,190, 59, 96,202,228, 49,226,224, 26, - 33,153, 23,175,222, 13,110,105,155,194,147, 75, 1,173, 30,200, 83, 2,143,158,240,185,224, 26, 33,153,215,111,198,136,191,255, - 97,109,136, 78,111,218,115,232,164,242, 72, 37, 15, 99, 6, 66, 72,255,143,190, 16,158, 29, 53,218, 75, 44,118, 8,132, 38,255, - 38,170, 5,187, 99,200, 27, 97, 88,177,250, 38,156,156,220,224,237,237, 13, 30,143, 39,183, 55,239, 57, 57, 57,100,215,239,231, -223,125,235,237, 49,205,187,117,237,101, 61,114,244, 15,193,233, 99,251, 47,173, 95,253,197, 30,202,215,202, 8,213, 72, 3,131, - 2,238, 36, 60,141, 29,222,182,109, 87, 72,197,178, 90, 64,120,153, 5,182,100,224, 0, 69, 50,143, 7,135,183,222, 30,219,178, - 91,183,190,214,163, 71,247,226,232,161, 77, 87,102,205,170,118,232,233,179,173,162,203,215, 83, 29,250, 15,122, 63,255,224,225, -135,166, 55,250, 84,143,245,147, 55,208,131,241,252, 3,164, 64,144,105, 53, 26, 3, 3,186,117,227,235,146,146,132, 10,111,111, - 43, 0, 88, 44,150, 74, 13, 22, 0,206, 30, 77,123,211,162,211,233,192, 1, 86,123, 52, 51,178,178,170, 21, 61,124,151, 96,177, - 88, 74,204, 85,110,110, 46,148, 74, 37,228,114, 57,178,141, 70,111,123, 52,187, 54,107,182,113,206,236,217, 83,119,238,218, 37, - 42,109,174,138, 95, 66,161, 16,223, 46, 90, 36,250,248,211, 79,223,159, 32, 16, 76,172,202,241, 44,126, 88,231,243,249, 16, 8, - 4, 72, 74, 74, 66,114,114, 50,146,146,146,144,148,148, 4,169, 84, 10, 90,206,241,124,133, 17, 44,242, 58,149,221, 10,167,105, -168, 74, 39,119,123, 13,129,205,102,123,165, 6, 75,171,213,158, 56,121,242,100,179,254,253,251, 11,174, 92,185, 2, 31, 31,159, - 18,131, 85,252,183,184,217, 73, 38,147, 97,207,158, 61,102,173, 86,123,162,146,139,232,228,161, 67,135, 26,207,156, 57, 83, 56, -122,244,104, 60,120,240, 0,227,198,141,131, 82,169,132, 90,173, 70,110,110, 46,116, 58, 29,154, 53,107, 6, 7, 7, 7,220,185, -115,199,162,211,233, 78, 86, 82,112,104, 86, 86, 86,129,167,167,167,239,139,223, 13, 26, 52,200,251,231,159,127,214, 61,122,244, -200,210,170, 85, 43, 39,123,141, 70, 49,191,255,254,123, 73,100, 46, 54, 54, 22, 63,255,252,115, 73,159,171,155, 55,111, 98,241, -226,197, 37,115,151, 85,177,176, 95,175, 91,183,174,213, 98,177,160, 86,173, 90,240,247,247,135,193, 96,192,210,165, 75,173,127, -133,185,178, 23,131,193,176,115,212,168, 81,159, 71, 71, 71,251, 10, 4,130,194,208,117, 81,254,204,102, 51, 30, 63,126,140,251, -247,239,227,209,163, 71,200,203,203, 43,121, 0,184,117,235, 86,190,197, 98,217, 94,158,174,167,167,231,151,235,214,173,243,145, -201,100,207,149,231,226,232,103,113, 84, 52, 59, 59, 27, 46, 46, 46,232,212,169,147,215,201,147, 39,191, 4, 48,243,117,168, 12, - 8, 33,164, 85,115, 69,235,143,222,127, 27, 77, 27,105,158,220,189,121, 15,199, 15, 45,171, 7, 20,118,114,143,106, 20,249,228, - 90,180, 35,122,116,157,218,250,226,149,113, 21,118,114, 47,234, 67,117,168, 89, 51,183, 11,123,247,159, 88, 49,109,242,152,107, - 95,205,158,230,101, 48,106, 29,194,107,218,120, 64,161,185,186, 28, 45, 55,124, 61,123,204,181,133, 63,108,228,146,179,204,147, -174, 94,205, 47,119,116,111,105,211, 82,183, 54, 28,124,130,123,165, 5,215,232, 80,253,206,205,181,240,112,206,135, 99,173, 86, -232,209,173, 25, 78,156,188,139,164,103, 6,164,167,167,195,104, 52, 86, 56,237,193,163, 59,123, 70, 82, 66,131, 8, 37,201,132, - 71, 29, 70,142,122,175, 77,175, 94,125,233,193,131,251,173,123,247,108,185,176,125,243,242,157, 60,145, 80,160, 55, 57,155, 8, - 49,168, 56,158,227, 3,173, 54,183,176,242, 20,137,202, 15,183, 22, 77,200, 26, 81, 55,220,103,228,168,113,206, 61,123,244,163, -135, 14,237,229,182,111,219,120,122,251,218,168, 45, 28, 79, 45, 74, 79,209, 73, 84,106,139,138, 18,177, 75,129,154,211,101,198, -215, 52,248,245, 26,100, 6,227,249,251,128,209,152, 90,144,146,226,235,214,174,157,228,241,236,217, 50,239,102,205, 12,164,168, -143,112, 69, 6,139,207,231, 3, 60, 30,103,143,166,189,105,209,235,245,224, 0,203,203,104, 90,173,214,231,204, 85,177,193, 42, -142,103,216,163,185,122,214,172, 43, 65,221,186,229,157, 57,115,198,187,125,251,246, 68,163,209, 64,163,209, 60,103,178,252,252, -252, 72, 68,100,164,236,247,211,167, 67,102,218,121, 60,237,201, 59,143,199,251,203, 13,214,107, 23,117,173,232,203,226, 8,150, - 61, 6,203,206, 8,150,197, 98,177,192,203,203, 11, 57, 57, 57,229,222,240,121, 60, 30,164, 82,105,113, 27,112,133, 35,233,140, - 70,227,210,169, 83,167,126,216,163, 71, 15,143,176,176, 48,100,103,103,195,219,219, 27, 14, 14, 14, 37,125,195,138,245,110,222, -188,137,117,235,214,169,141, 70,227,210, 74, 52,151, 44, 90,180,232,131,129, 3, 7,186,249,248,248,192,213,213, 21,119,238,220, -129,171,171, 43,212,106, 53, 98, 98, 98,224,232,232, 88,210, 47,103,255,254,253, 26,163,209,184,164, 18,211, 70,207,157, 59,103, -118,116,116,188,147,157,157,205,207,203,203, 19,228,231,231, 11,212,106,181, 80,165, 82, 9,143, 28, 57,226,225,236,236,172, 59, -117,234, 84,118, 80, 80, 16,255,233,211,167,124,139,197,194,179,227,166,136,137, 19, 39, 66, 36, 18,193,104, 52, 98,233,210,165, -152, 58,117,106, 73,159,171, 69,139, 22, 97,198,140, 25, 37,134,121,205,154, 53, 85, 53, 89, 48,155,205,176, 88, 44,176, 88, 44, -118,153,222, 63,131, 61, 70,157, 82,154, 65, 8,233,221,180,105,211, 99, 59,118,236,112, 47,154, 83, 12,153,153,153,200,204,204, - 68,118,118, 54, 10, 10, 10, 96,181, 90,225,239,239,143,204,204, 76,236,221,187, 87,165,209,104,186, 85, 52,130,144,207,231,143, -106,211,166,141,224,197, 52, 20, 63,213, 21,155,118,137, 68,130,180,180, 52,116,232,208, 65,124,230,204,153, 81,255,116,131, 85, -108, 92,234,132, 66,212,167,239, 48, 81,131,198,221,117,215,110, 28, 73,146, 18,107, 82,207,206,181,118, 0,133,211, 52, 92,139, -118, 68,131,198,221,121,125,210, 77,205,148,249,171, 27, 68,212, 38,230,138,150,213, 1, 0, 15,103,174, 95,183,206,213,210,157, -156,136,224,235,217, 11, 15,252,186,105, 77,211,203,191,255,103,154,134,175,103, 23, 78,211,208,173,115, 53,235,131, 71,177,253, - 0,108,178,215,180,244,238,221, 39,122,245,218,205, 72,141,223,239,183, 98,161,139, 24,134,124, 64, 24,134, 54,205,157,112,245, -199,100,220,190,125, 59,195,100, 50,117,168,176, 44, 17, 26,116,255,193,189,218, 81,117, 35,124, 70,142, 26,235,212,187,119, 63, - 28, 60,184, 15,155, 55,174, 61,247,198,176,129,191, 62,203, 87,243,189,132, 50,145,140,114, 98,190,200, 89,224, 32,147,101,153, -211,210, 10, 43, 79,129,208, 9, 24,204, 85,208, 66,136,241, 99, 71, 56,119,236,220, 15,127, 28,218,135,205, 27, 87,159,253,170, -238,160,181,213, 27,214, 33,205, 26,125,247,126,245, 26,213,131,181, 5,153,106, 30, 17,155, 13, 6,206,241,187,141,137, 63,196, -207, 24, 21, 31,125,111,240,247,108, 20,225,115,220,217,220,179,103,211,143,159, 60, 17,121,182,110, 45, 77, 59,125, 90, 86,180, -114, 72,133, 6, 75, 32, 16,128,150,223,164,245,156, 38,217,180,137, 7,160,194,193, 85, 34,145, 8, 58,157, 14, 22,192,108,143, -166,239,209,163, 41, 79,158, 60, 9,117,115,115,123,206, 92,229,229,229,149,188, 55, 24, 12,208,233,116,144, 74,165,247,237,209, -204, 60,119,206,176,112,226,196,153,195,135, 13, 91,126,226,228, 73, 7,119,119,119,168, 84,170,231, 12,150,201,100, 66,199, 78, -157, 68,139,162,163, 71, 2,152,101,207,241,244,238,208,161,210,254,190,124, 62, 31,220, 95,220, 68,248,186,193,171,172,169,198, -222, 81,132,101,221, 24, 9, 33,157, 95,248,104, 70,227,198,141, 13,177,177,177, 8, 10, 10, 42, 49, 41,165,127,211,201,201, 9, - 46, 46, 46,184,121,243, 38,230,205,155,167, 7, 48,163, 34, 77, 74,169, 70,167,211, 13,237,210,165,139, 94, 32, 16, 32, 60, 60, -188,100,254, 43,142,227, 32, 22,139, 33,151,203, 17, 29, 29,141, 62,125,250,232,116, 58,221,208, 23,231,192, 42, 67, 83,165,211, -233,222,236,218,181,171,238,193,131, 7,104,211,166, 13,110,223,190,141,130,130, 2, 20, 20, 20, 32, 33, 33, 1, 17, 17, 17,208, -233,116,248,249,231,159,245, 58,157,238, 77, 74,169,170, 34, 77,141, 70,211,103,234,212,169,252,223,126,251,173,186,191,191,127, -221, 38, 77,154,132,117,234,212,169,230,128, 1, 3,130,123,246,236,233, 27, 26, 26,106,232,214,173,155,103,143, 30, 61, 60,117, - 58,157,240,226,197,139,233, 22,139,165, 71, 37,199,179,196,148,196,198,198,150, 52, 9, 10, 4, 2,228,228,228,148,204,180, 95, - 92, 25,149,101,128,203,211, 44,109,178,139,141, 85,177,209,170,172,238, 47, 71,179,210, 27,134, 88, 44, 46,142,112,210,202, 52, - 41,165,183, 30, 62,124,216,165, 93,187,118,183,222,125,247, 93, 77, 70, 70, 6, 28, 29, 29, 17, 18, 18,130,218,181,107,195,195, -195, 3,102,179, 25,123,246,236,209,238,221,187,247,174, 74,165,234,240,226, 28, 88, 47,106,242,120,188,132,178, 42,215,226,232, - 85,177,193,114,112,112,128,191,191,127,241,177, 77,168,202,241,124,201,200,210, 95,171, 89,100, 92, 58,117,236, 86,163,103,175, -254,206,123,247,239,147,253,248,203,134,135,109,251,125,184,210, 35,120,202,110,143,224, 41,187,219,246,251,112,229,143,191,108, -120,184,119,255, 62, 89,207, 94,253,157, 59,117,236, 86,227,193,253, 71, 97,207,173, 75, 88, 70, 58,101, 98, 73,179,182,173, 66, -149,231, 46,158,179, 46,252, 97,163,173, 85,203,158, 87,151, 47, 95,185,125,249,242,149,219, 91,181,236,121,117,225, 15, 27,109, -231, 46,158,179,182,109, 21,170,148,137, 37,205,236,201,251,248,177, 35,156,123,245,236,135,131, 7,247, 88,119,254,254,243,162, - 53,155,211,218,117, 24,144,154,153, 16,127,157, 66,183, 1, 30,142,119,240,240,225, 67,149,201,100,234, 80, 86, 7,247,178, 52, -199,141, 25, 81,218, 92,157,119,247,105,179,230,225, 67,216,142, 31, 63, 96, 57,121, 50, 90,127,254, 86,150,234,198,131,156,188, - 92,181,225,169, 86,163, 54,113, 28, 7,202,217,248,115,230, 20,118,196, 45,239, 28,181,106,213, 30,167, 78,108,197,198, 13,171, - 84, 28, 7,195,160, 29, 59,108,131, 7,207,166,193,213,170, 5,111,249,125, 43,233,221,183,191, 51, 5,184, 62, 3,251,185,252, -182,237, 55, 82,163, 86,141,106, 33, 33,133, 83,211,252, 35,203,210, 95,160, 57,139,210,124,117, 82,210,217,155, 63,253,100,244, - 30, 58,212, 77,236,237,237, 4,155,141, 20,215,239,229,189, 4, 2,193,115, 17,151,138, 52,253, 61, 60,158,237,223,191, 31,181, -107,215,134,191,191, 63, 74,247,129, 45,158, 72,219,221,221, 29,187,118,237, 2, 5,110,216,163,217,176,122,245,155,223, 46, 92, -104,226, 56, 14,249,249,249,255, 21,189,202,207,207, 7,199,113, 56,244,199, 31, 38,117, 65,193, 70,123,243,222,129,207, 47, 24, -222,182,237,130, 94,189,122,153,159, 60,121, 2,142,227, 80, 58,146,149,149,149, 5,133, 66, 1,131,209, 24, 72, 8,145,217,163, -153,117,228,136, 28,149,212,235, 47, 70,176,254,138,243,254,175,138, 96, 89,173, 86, 4, 6, 6, 62,183,244, 10,143,199,123,238, - 85,149, 17,132,148,210, 77,132,144,163,221,186,117,155,217,188,121,243,241, 51,103,206,228,135,133,133, 65,165, 82,193,213,213, - 21, 94, 94, 94,136,137,137,193,254,253,251,109, 57, 57, 57, 43, 1,204,181,103, 40, 60,165,244, 52, 33,164,119,189,122,245,182, - 77,155, 54,205,185,107,215,174,194,192,192, 64, 80, 74, 17, 29, 29,141,221,187,119,155,215,174, 93,171, 46, 50, 87,167,237, 76, -235, 49, 66,200, 27, 61,122,244,216, 50,106,212, 40, 71,155,205, 38, 76, 72, 72,128,209,104,132,197, 98, 65,114,114,178,249,224, -193,131, 5, 58,157,110, 4,165,244,152, 29,122, 55, 9, 33, 17,199,143, 31, 31,117,241,226,197,121,239,190,251,174,123,167, 78, -157, 68, 86,171, 21, 23, 46, 92,200,110,216,176,161, 87, 86, 86,150,121,215,174, 93,185, 6,131, 97,134,205,102,179,107,169, 28, - 66, 8,212,106, 53, 60, 60, 60, 96, 52, 26,193,113, 28, 76, 38, 19, 20, 10, 69,201,242, 70,148, 82, 84,165,211,252, 11,101,128, -111, 54,155, 49,108,216, 48,112, 28,135,165, 75,151,194,106,181, 86, 89,204,217,217,249,198,173, 91,183,122, 55,104,208,160,196, -180, 20,151, 33,137, 68, 2, 15, 15, 15,184,187,187,227,224,193,131, 16, 10,133, 55,236, 60, 71,183, 1, 52, 36,132,180,188,123, -247,238, 91, 0, 26,152,205,102,127,155,205, 70,120, 60, 94, 58,165,244,142, 90,173,254,213,222,165,114,178,178,178,230,189,253, -246,219, 13,183,110,221,170, 16, 8,254,115,105, 8, 4, 2, 72, 36, 18, 20, 79,106, 73, 41,133,201,100,194,151, 95,126,169,214, -106,181,243, 94,151,202,160,113,147,102, 88,253,243, 50,197,201, 83, 71,179, 31,198, 97, 95,233,169, 24, 20, 0, 46, 94, 25,183, - 79,153,191,186, 65, 90, 74,138,162,113,147,102,118,105,154,108,214,220,161, 35, 86, 6, 22, 45,149, 51, 47,225,105,210,146,173, - 27,222,139, 7,128,239,127, 88, 27,146,156,101,158,244,224, 81,108,191, 95, 86,158,105,102,178, 89,115,237,209,252,143,105,217, -162, 2,133,129, 82,122,149, 16, 82, 61,172,165, 97, 70,100,184,168,111, 90,166,229, 89, 65,129,233, 35, 74,105,188,189,121,111, -221,170, 29, 78, 29,251, 13,155, 55,110, 81, 83,142,111,240,240,240,160, 0,240,240,161, 7,125,248, 80, 73,255,211, 95,216, 69, -235, 41,203,158, 59, 99,250,248,201, 26,141,102,201,138,239, 42,158,112,182, 94,253,230,168, 87,191, 57, 62,252,232, 11,231,136, -186,225, 65, 0,176, 99, 7,181, 69,134,146, 3, 51,191,154,221,119,238,220,217, 80,107,140,152, 59,183,112, 89,157,152,123, 15, -254,120,242,132,154,216,173,233,121,102, 90,173, 87, 49,121,114,168, 46, 47,207,179,245,231,159,123, 8, 62,253,148, 87, 81, 39, -247,210,215,175, 61,154,215,239,220,249, 99,220,123,239, 61,155, 53,115,102,183,149,171, 86, 73,163,162,162,144,145,145,129,240, -240,112,248,251,251,227,248,241,227,216,181,125,187, 86,169,209,204, 0,240,139, 61,154,155, 14, 29,138, 9,171, 91, 55,103,213, -170, 85,126,189,122,245, 34, 90,173, 22, 42,149, 10, 42,149, 10, 70,163, 17, 69, 19, 57,211,216,184,184,135, 22,139,101,165,189, -121,183,101,103, 59,204,109,214, 44, 85,196,113,223,190, 49,112,224,212,185, 95,127, 45,169, 81,163, 6, 49, 26,141, 37, 81, 44, -179,217, 12,133, 66, 97, 54,153, 76,238, 0,116,246,104, 74,214,174,181,102,103,103,195,211,211,179,100,218,165,210,243, 10,106, - 52, 26, 80,202, 38,193,173,210,131, 66,121,247,112, 55, 55,183, 27, 2,129, 32,160,116, 52,171,172,181,237, 74,127,102,177, 88, - 82,179,179,179, 27,151,118,184,148,210, 19,229, 24,131, 16, 0,243, 59,118,236,248,198,148, 41, 83,200,153, 51,103,176,119,239, - 94, 26, 31, 31,191, 19,192,140,242, 42,199, 74, 52, 29, 37, 18,201, 39,114,185,188,115,241, 84, 12, 50,153,236,174, 86,171, 61, - 97, 52, 26,151,150, 55,123,123, 37,154, 78, 18,137,100,162, 92, 46,239,162,209,104, 26, 0,128,163,163,227, 45,173, 86,123,220, -104, 52, 46, 43,111, 1,233, 74, 52,165,206,206,206,243, 60, 60, 60,222,252,244,211, 79,221,207,157, 59,151,126,234,212, 41,145, - 82,169,220,106, 50,153,202, 93,236,185, 44, 77,119,119,247, 27,124, 62, 63,224,175, 56, 71, 0, 80,191,126,253,131,125,250,244, -233, 53, 98,196, 8, 88, 44, 22,252,242,203, 47, 56,126,252,248, 31,113,113,113,189, 43,122,250,124, 81,147, 16,226, 17, 16, 16, -112,102,252,248,241,193,195,134, 13,147,185,186,186, 66, 32, 16, 64,171,213,226,241,227,199,136,142,142,166,251,246,237, 43,184, -121,243,102,170, 78,167,107, 79, 41,205,177,247,120,254,153,167,228, 23, 53,133, 66, 97,187,192,192,192,223,103,205,154,229,216, -165, 75, 23,169,187,187, 59,248,124, 62, 44, 22, 11,210,211,211,113,239,222, 61, 28, 61,122, 84,187,115,231, 78,109,110,110,238, -176, 23,231,106,249,255, 74,231,171,212,140,168, 77,190,122, 97, 1,231,114,103,103,175,104, 91,123,210,217,171,179,107,207, 55, -222,104,210, 25, 0,118,237,186,126,226,143, 19,249,135, 94, 54,157,149,165,213, 30,205, 58,161,252, 89,247, 31,220,123,110, 34, -202,186, 17,145,177,117,162, 6,126, 99,143, 86,241, 76,238, 47,230,189,212,236,248,165, 99,184,207, 53,167, 22, 47, 8,253,197, -140,233,152, 63,111, 1,246,237,216,243,199,131, 39,244,224, 63,185, 44,253,149,154,197,139, 19,203,124,125,219, 46,229,184,233, -183,239,221, 83,148,126, 80, 43,142, 52,151,126,152,244,243,243,203, 74, 75, 75,243,182, 71,179,247,143, 63,154,117,114,185,100, -250,183,223,182, 43, 48, 24,218,205,157, 59, 87,112,253,250,117,252,252,211, 79, 86, 67,106,234,150,108, 96, 98, 89,173, 31, 21, -105, 6, 79,156,232,240,217,207, 63,143, 14,169, 85,203,235,173,183,222, 18, 10,133, 66,104,181, 90,164,164,164,224,216,209,163, -166, 7, 15, 31, 62, 80,171,213,125, 41,165,105,246,106,246,254,241, 71,179, 75, 72, 8,100,158,158,244,228,233,211,206,227, 62, -249,100,124,181,234,213,157,187,117,239, 46,116,114,114, 66,126,126, 62, 18, 18, 18,176,103,207,158,172,130,130, 2, 63, 74,169, -205, 30,205, 45, 23, 47,214, 59,116,246,236,160,111,190,249, 70, 28, 25, 25, 9,103,103,103,104, 52, 26,220,187,119, 15,103,207, -158, 53,174, 92,185, 82,165, 82,169,198, 91,173,214,253,127,213,121,255,215, 24,172,255,175, 11,143, 16,210, 24,192, 87, 69,255, -126,109,199,154,126,175, 77,165, 67, 8, 9,114,115,115, 91,109, 48, 24,168, 94,175, 31, 71, 41, 77,254, 95, 75, 39, 33, 68,208, -184,113,227,159,179,178,178, 90, 82, 74,225,236,236,124,233,254,253,251, 19, 40,165,214,170,106, 18, 66,248, 0, 90, 42, 20,138, -102,142,142,142,237,140, 70, 99,157,162,102,182,135, 90,173,246,172,217,108,190, 10,224, 18,165,212,246,119,230,189, 40,157, 93, -252,252,252,222,227, 56,174, 22, 33,196,197,102,179,193, 98,177, 40, 57,142,123,172, 82,169,214, 2, 56,254,119,167,243, 85,105, -214,173, 69, 6, 80, 30,234,148,103, 4,158, 51, 52, 47, 24, 7,194,225,225,253,199,116, 79, 21,202, 60,175,127, 15,207,197, 64, -225, 72,195,202,150, 28,122,206, 96,217, 97, 90,170,108, 46,107, 9,222,166,132, 6, 61, 95, 41,146,228,240,122, 3, 54,255, 25, -131,101, 47,117,195, 72, 59, 80,180,228, 40,174, 62,140,163,167, 94,215,186,238, 85,106, 46, 32,196,237, 39, 87,215, 75, 60,129, -192, 7, 0,175, 40,218,194,113,132,216, 40, 33,214,210,205, 88,165, 31, 40, 43,211, 52, 3, 81, 66,137, 36,208,102,181,122,103, - 0,138, 67, 54, 91, 35, 3,165, 5, 1,192, 87,209,148,198,188, 76, 58,205, 64, 20, 95, 34, 9, 58, 68,105,191,108,185,188, 94, -150, 94,239, 9,128, 42,228,242,135,106,173,118,163,193, 96, 88, 81,198,162,234,149,106,138, 36,146, 0,155,213,234, 13, 0, 60, -129, 32,107,155,209, 24,152,234,228,244,150,193,104, 12, 86, 40, 20, 22,147,201,164, 54, 24, 12, 35, 44, 22,203,201,170,228,253, -177,213, 26,113,145,199,107, 99,150,203,221,205,132,200, 77, 86,171,217,100, 54,167, 24, 12,134,187, 0,126,160,148, 62,249, 43, -207,251,107, 71,241,104,179,191,226, 5,160, 51,211,100,154, 76,147,105, 50, 77,166,201, 52,255,122, 77, 0, 50, 0, 65, 0,248, -255,196,188,191,110, 47, 1,179,152, 12, 6,131,193, 96,188, 22, 1, 19, 29,202,232,115,197,248,155,154, 8, 1,116, 46,231, 68, -217, 29,250,123,153,209, 4,118, 52, 37, 48, 77,166,201, 52,153, 38,211,100,154, 76,243, 53,211,172, 76,251,181,105,122,100, 77, -132, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 77,132,175,246,197, 3,163, 60,103,237, 77, 8,241,126,213,219, 50, 94,239, -178, 80,198,190,254,132, 16,255, 42,110,239,203,142, 58,131,193, 96,252,179,249,127, 55, 88,246,222,172,254,228, 77,237, 79, 25, - 30, 66,200, 2, 66,144, 86,248, 34, 11, 94,213,182,118,252,174,159,167,167,231,199,117,235,214,221,226,227,227,243, 33, 33,196, -171,138,251,135,202,229,242,101, 10,133,226,140, 66,161, 56, 35,151,203,151, 17, 66, 66, 95,209,121, 35,132,144,113, 14, 14, 14, -167,253,252,252,158, 73, 36,146,211,132,144,241,228, 37, 23,160, 36,132,212, 36,132, 76, 38,132, 76, 33,132,132, 85,101, 95,239, -200,254,219,189, 34,251,223,241,138,236,127,207, 35,170,111,168, 87,100,255,123, 94,145,253,239,120, 71,246,223,254, 23,148,215, -151, 62,191, 69,251, 38, 23,190, 42,223,151, 16,242, 3, 1, 82, 8, 65,234,159, 45, 75, 12, 6,131,193,248,123,169, 82, 39,247, -128,128,128, 30, 28,199, 13, 7, 0, 30,143,247, 91,106,106,234,225,151,184,225,124, 86,244,126, 17,165,116,250,159,217,206,142, -125,151, 80, 74,167, 86,221,156,225, 51,142,163,188,194,124,146,207,189,189,189,101,124, 62,255,191, 58, 14,218,108, 54, 25, 33, -248,144,227, 10, 23,168,228,241,200,103,132,144,101,148,210,204,151, 49,133, 35, 71,142, 92,178,108,217, 50, 7,153, 76,134,164, -164,164,174,227,199,143,111, 69, 8,153, 76, 41, 77,175,108,127,169, 84, 58,188,105,179,150,147,191,253,238,123,133,183,151,151, -220,106,227,204, 9,137,137,242, 47,167, 79,109, 38,149, 74,151, 85,180,200,241,139, 70, 10,192, 88,129, 64, 48,196,193,193,161, -166,193, 96,120, 98,181, 90,119,242,249,252,110,243,230,205,139,236,217,179,167,131, 90,173, 22, 91,173,214, 90,155, 55,111,158, -188,110,221,186, 30,132,144,126, 21, 13,183, 47,142,224, 80, 74,159,149,250,184, 71,114,114,114,148, 80, 40, 68,205,154, 53, 9, -128,152, 74,182, 47,129, 2,161,247, 47,236,136, 2,128,186,173, 7,199,222,191,176, 3, 69,239,255,130,135,129,231,203,130, 84, - 42,253, 69,175,215,167, 20,127, 95,148,206, 76,123,246, 37,132, 44, 47, 90,230, 39, 18,192,192,162, 77,119, 83, 74,239, 17, 66, -124, 28, 36,146, 79,244, 6, 3, 1, 64,254, 76, 89, 98, 48, 24, 12,198, 63,204, 96, 81, 74,223,122,252,248,177,140,227, 56,132, -133,133,141, 4, 96,183,193, 42,235,134,211,169, 83,167,134, 82,169,244,185, 89,139,245,122,189,152, 16,116,122, 25,211, 82,252, - 27, 38,147,145, 39, 20,138,193,227,145,201,245,234,213,171,150,147,147,115,142,199,227,109, 73, 77, 77,205,127,137,155, 44,214, -172, 89, 83,219,215,215,247,191,102, 87, 78, 79, 79, 23,247,235,215,183, 74,122,163, 9,145, 24, 37,146,102, 34, 66,124,109, 86, -171, 11, 0, 8, 4,130,252, 48,103,231,198,243,191,249, 70, 70, 8,225,114,115,115,161,215,235, 49,105,210, 36,233,131, 7, 15, -250, 3, 88, 81, 73, 26,107, 55,111,209,106,210,209,163, 71,234,168,243,242, 13,107,150,172,142,214, 11,132,218, 26, 17,117,196, - 63,175,222,232, 50,118,244,136,143, 8, 33,183,202, 90, 54,228, 5, 29, 30,128, 61,159,124,242, 73,221,222,189,123,139, 53, 26, -141,131, 94,175,175,182,101,203,150, 47, 27, 55,110,172,104,208,160,129,248,247,223,127, 39, 42,149, 10,148, 82, 89,120,120, 56, - 29, 50,100,136, 97,219,182,109, 31, 2, 88,110,143,225,245,245,245,157, 89,100,208, 75,151, 61,161,159,159,159,180,232,152,206, - 37, 4,147, 42, 50,215, 4,136,171,219,122, 48, 64, 80,235,254,133, 29, 14,117,219, 12, 54,128,226, 49, 1,226, 0,192,223,223, -127, 46, 80,106, 94,167,231,121,248,236,217,179,151, 90, 59,176,119,239, 62,160,148,254,226,239,239,127, 48, 51, 51, 51,146, 16, -140,179,247, 33,128, 16, 2,119,119,247, 55, 0,252, 8, 96,232,163, 71,143,234, 2, 64,120,120,184, 16,192, 61, 23, 23,151, 70, -198, 66,115,197, 96, 48, 24,140,127,161,193, 18, 1,192,185,115,231, 64, 41, 21,191, 76, 80,160,244, 13,103,226,196,137,240,245, -245,125,209,180,224,204,153,211,127, 38, 79,207,253,198,215, 95,127,173, 80, 42,149,157,127,253,245,215,182,254,254,254,139,159, - 61,123,118,165,146, 60,102, 18, 66, 22, 21, 69, 28, 32,145, 56,196,142, 31, 63, 62,186,232,235,106, 7, 14, 28,144,245,233,211, - 71, 7, 32, 17, 0, 36, 18, 7,127, 62,159, 87,187,176, 83, 27, 22, 85,100, 4, 7, 19, 18, 34, 22,139, 59,142,251,241, 71,107, -163, 62,125, 4,114, 79, 79, 2, 0,137,143, 30,185, 47,250,238,187, 86,249,241,241, 98,189,187,123,110,174, 86,171,143,141,141, -133, 68, 34, 33,124, 62,191, 81,101, 25,150,203,229, 31,127, 51,127,145, 92,157,167,212, 27,213, 5, 38,190,205, 98,116,148, 74, -109, 25, 25,153, 57, 10,153, 76, 55,253,171, 57,162,247,199,188,245, 49,128, 9,149, 72,125, 56,121,242,228, 58, 77,155, 54,245, -223,190,125, 59, 81,169, 84, 16, 8, 4,138, 6, 13, 26,160,113,227,198,182, 83,167, 78,145,234,213,171, 35, 50, 50, 18, 23, 46, - 92,192,165, 75,151, 72,195,134, 13,101,187,119,239, 30, 89,150,193, 42,195, 84, 79,110,209,162, 69,160, 66,161, 48,168,213,106, -188,251,238,187, 0,128, 46, 93,186,212,150,203,229,191, 20, 20, 20, 56,236,223,191,239,141,202,204,117,230,189,189, 67, 0,192, - 43,178,255, 29, 0, 81,160,120,156,117,111,111,189, 82,155,212,137,137,137,105,158,159,159, 95,210,217,176,120, 97,241,182,109, -219, 86,165,188,103, 18, 66, 22,245,237,219,231,115,128,160,125,251,246,153, 19, 39, 78,164,247,238,221, 27, 48,120,240,160, 78, -113,113,143,203, 77,231,139,229,104,248,240, 55,159,186,185,185,117,241,243,243,139, 3, 32, 16, 10,133,197,155,242,253,253,253, -221, 34, 35, 35,135, 41, 20,138, 4, 62,143, 87,157,130,210,202,202, 18,131,193, 96, 48,254, 1, 6,139, 16, 66, 75,221, 24, 72, - 5, 79,225, 57,183,110,221,242, 53, 24, 12, 32,132,228,216,113,131, 58, 81,250,134,195,231,243,127,230,241,200, 4, 66, 8, 34, - 35,163,158, 46, 93,186,180,172, 53,183, 76,145,145, 81, 79,249,124, 94, 13, 74, 41, 8,225,253,194,113,182,204,178, 52,203,187, - 33,138,197,146,207, 0,192,199,199, 55,254,240,225,195,166, 65,131, 6,225,187,239,190, 19, 77,155, 54,109,106,112,112,240,135, - 73, 73, 73, 25,229,165,179,232,255,233,222,222,222,178, 53,107,214,212, 30, 63,126,124,116, 90, 90,218,116, 0,240,243,243, 91, - 0, 32, 2, 64, 98,169,207,176,114,229,182,103, 99,198,140,137,205,204,204,156, 94,158,230, 27,132,212, 12, 14, 15,239, 56,247, -220, 57,202, 51, 26, 73,206,249,243,234,236,204, 76,203,147,236,108,217,134, 27, 55,122,127,185, 96,129, 48, 48, 40, 8,103,246, -239,247,200,209,233,178, 85, 70,163, 33, 51, 51,147, 90,173,214, 75,118,228,189,174,151,167,167,108,213, 15,191, 92,119, 20,242, - 57,111,127,127, 34,112,115, 17,242,100,206, 98,158, 64, 96,168, 17, 92, 75, 4,160,110,101,231, 72, 36, 18,141,236,218,181,171, -108,219,182,109, 36, 50, 50, 18, 46, 46, 46, 56,127,254, 60,110,221,186, 5,139,197,194,203,207,207, 71,147, 38, 77,240,237,183, -223, 34, 40, 40, 8, 74,165, 18,201,201,201, 30, 98,177,216,179,130,227,249,156,225,157, 58,117, 42, 2, 3, 3, 97,181, 90,145, -151,151, 7,171,213, 10,185, 92, 14, 0, 72, 76, 76,196,129, 3,251, 43, 45, 75,118,154, 35,180,104,209, 66, 67, 8,121,248, 98, - 4,171, 42,154,190,190,190, 27,179,178,178, 27,118,232,208, 1, 42,149,202, 52,107,214, 44,212,171, 87, 15,181,107,135,217, 83, -230,167, 75, 36,146,181, 65, 65, 65, 95,125,250,233,167,110,110,110,110, 48, 26,141, 31,165,167,167, 99,252,248,241, 0,128, 94, -189,122,133, 11, 4,130, 13,239,190,251, 46,170, 85,171,246, 72,163,209,196,220,186,117,107, 90, 65, 65,193,131,151,205,187,157, -199,135,105, 50, 77,166,201, 52,255,167, 52,237,245, 34,255, 40,131, 69, 41, 37,132, 16, 90, 89,134, 40,165,249,254,254,254,190, - 82,169, 20,148,210, 42, 55,183,217,108,182, 15, 61, 60, 60,178,166, 79,159,222,186,118,237,218,166, 15, 63,252,240, 94, 66, 66, -194,140,210,219, 84,175, 94,125,222, 79, 63,253,132,216,216,216,196, 5, 11, 22, 92,200,201,201,249,186,138, 39,125, 26, 33,100, -105, 81, 52, 44,103,255,254,253,245,206,157, 59, 55, 97,201,146, 37,158, 31,124,240,129,232,227,143, 63, 30, 1,224,187,202,116, -248,124,190,174,172,102,193,114,110,194,166,178,250,104, 21,211,135, 16,169,147, 88,220, 97,238,185,115,212,148,152,168, 91,247, -253,247,142,171,174, 93,155,101,161,212,219,203,203, 11,109, 90,181, 42,112,224,243,115,178, 50, 50, 56,175,154, 53,249, 9,135, - 15,123,232,197,226,180,109,219,182,169,114,115,115,247,218, 81, 40,213, 54,142, 51, 59,250, 7, 90, 7, 13,232, 90,247,250,213, - 91,143, 28, 61, 61,120,141, 27, 70, 70, 61,136, 77,188, 73,109, 54, 11, 33, 68, 93,153,142,179,179,115,237,220,220, 92,168,213, -106,120,122,122, 98,233,210,165,240,241,241,129, 78,167,195,229,203,151,105, 64, 64, 0, 57,119,238, 28, 2, 2, 2,144,157,157, - 13,147,201, 4,141, 70,147,101, 52, 26,245,229, 25, 94,129, 64,176,150,199, 35,239, 1, 64,181,106,213, 31,254,242,203, 47, 6, - 0,168, 83,167, 14, 6, 12, 24,128, 93,187,118,225,193,131, 7,224, 56, 14,148, 82, 67, 64, 64,224, 67, 30,143,212, 41,242, 72, - 47, 29,197, 41, 94,130,231,217,179,103, 3, 95,242, 66, 39, 62, 62, 62, 3,194,195,195, 71, 12, 31, 62,220, 36, 20, 10,161,211, -233,160,211,233,240,240,225, 67, 83,215,174, 93, 51,251,246,237,227,125,240,224,193, 10,211,105, 52, 26,159,250,249,249, 77,157, - 60,121,242,210,149, 43, 87, 58,125,249,229,151,176,217,108,224, 56,174,228,111,241,251,189,123,247, 34, 62, 62,126, 89,105,115, -197, 96, 48, 24,255, 22,236,245, 34,255, 40,131,245,255, 9,159,207, 95,117,236,216,177, 6,109,219,182, 21,116,234,212, 41, 50, - 32, 32, 32, 50, 53, 53,245, 30, 0, 4, 4, 4, 68,118,239,222, 61,210,203,203, 11,203,150, 45,211,241,249,252, 85, 47,121,146, - 74,223,236,162,125,125,125, 23,239,222,189,123,209,184,113,227,224,227,227, 19,241,255,157,103, 39,137,164,225,187, 75,151, 90, -133, 22, 11,239,199,197,139,157,190, 63,125,122,209,246, 29, 59, 4, 45, 90,180, 32,148, 82,220,189,115, 71,250,237,242,229,178, - 97,253,251, 39,198,196,199, 91,247, 29, 61,106,201,124,246, 44,239, 89,118,246, 76, 74,105, 94,101,250, 22,139,229,114,220,227, - 56,255,214, 29, 90,250,157,191,118,255,214,192,254, 61, 59, 10, 5, 60,242, 56,241,217, 13, 95, 31, 15,231, 51,167,143, 27, 44, - 22,203,229,202,116,180, 90,109,130,213,106,117,163,148,122,158, 57,115, 6,158,158,158,200,207,207,135,197, 98,129,201,100, 50, -233,116, 58,135,220,220, 92, 24, 12, 6, 24,141, 70, 56, 57, 57,225,238,221,187,153, 86,171,245, 84,121,154, 86,171,117,172,131, -131,195,124, 74,169,208,104, 52,166,157, 56,113, 2, 34,145, 40,208,217,217,121,186,197, 98, 65, 90, 90, 26, 46, 94,188,184,192, -108, 54,167, 20,239, 35, 22, 75, 60,141, 70,163,181,188, 78,238,246, 70,176, 94,150,128,128, 0,191,234,213,171, 79,158, 54,237, -179, 90,245,234, 53, 64, 78, 78, 14, 56,142,131, 66,161,128, 78,167,131,147,147, 19, 90,182,108, 25, 61,111,222,188, 60, 74, 49, -173, 50, 19,152,150,150,150, 27, 20, 20, 52,115,252,248,241,147,107,213,170, 21, 4, 0,161,161,161,232,218,181, 43, 14, 31, 62, -140,216,216, 88, 20, 20, 20,216,174, 95,191,126, 32, 45, 45,141,173,237,197, 96, 48, 24,204, 96, 85,157,204,204,204,236,128,128, -128, 35, 55,111,222,236, 61,100,200, 16,156, 57,115,230,109, 0,147, 1, 64, 34,145,188, 61,100,200, 16,220,188,121, 19,143, 30, - 61, 58,146,153,153,153,253, 42,126, 83, 44, 22, 27, 76,166,194, 96,148,131,131,131, 67, 21,119,175, 86,212, 52, 8, 0,213, 42, -248,172, 92,120, 2,129,111, 84,247,238,130,252, 91,183,212,107,174, 94,253,122,203,150, 45,130,214,173, 91, 19,139,217, 12, 27, -199, 33, 36, 36,132,116,234,220, 89,190,126,203, 22, 55,155, 86,123,238,155,207, 63, 63,191,250,221,119, 11, 98, 41, 77,180, 39, -129, 70,163,113,249, 71, 19,198,118, 57,121,250,156, 95,120,120,136,251,145,227,167,163,221,221,156,101,181, 67, 67,229,121,249, -249,182, 25,211, 62, 19, 24,141,198, 31, 43,211,209,235,245,123, 78,156, 56,209, 63, 48, 48,208,243,222,189,123, 48,153, 76,176, -217,108,232,212,169, 19, 40,165, 18, 0,156, 64, 32,192,163, 71,143, 96, 54,155,179,226,226,226,210, 30, 63,126, 44, 1,176,176, - 34, 93,131,193,144, 84,250,255,160,160,160,214,189,122,245,130,213,106, 69,247,238,221,177,127,255,254,214,105,105,105,107, 74, -109,146,244, 10,158,132, 64, 41,173,227,239,239,191,187,232, 35,187, 58,183,251,250,250,134,133,134,134,206, 91,176, 96,129, 48, - 48, 48, 16, 28,199,193,205,205, 5, 90,173, 30,185,185,185,136,136,136, 64, 96, 96, 32,190,253,246, 91,160,112, 4,160, 93, 17, -182,228,228,228, 4, 0, 31, 70, 68, 68,136, 52, 26, 77,164, 94,175,159,213,169, 83, 39, 68, 71, 71,227,242,229,203, 31,105,181, -218, 60,185, 92,110,241,243,243, 27,206,227,241,228,102,179,121,127, 86, 86, 86, 22,171,162, 24, 12, 6,227, 53, 55, 88,222,222, -222, 50, 7, 7,135, 55,223,123,239, 61, 23,142,227, 32, 18,137,162, 60, 60, 60,230,231,228,228, 20, 84,245, 71,117, 58,221,246, - 45, 91,182,116,253,225,135, 31, 68, 61,123,246,172, 25, 16, 16,208, 20, 0, 6, 14, 28, 88,211,209,209, 17, 91,182,108, 49,235, -116,186, 87, 54,167,145,197, 98,105,219,164, 73, 19,228,229,229, 33, 49, 49,241, 94, 85,246, 61,112,224,128, 12,133,253,174, 42, -252,172, 34,172, 38,147,171,139,191, 63,239,217,233,211,230, 60,181,218,183,109,187,118,196, 98, 54,131,199,227, 33, 55, 55, 23, -201,201,201,112,118,113, 33,143,226,226, 20,107, 63,251,236, 64,181,250,245,197, 54,147,201,189, 10,102, 66, 75, 8,121,251,163, - 15, 63,216,179,117,235,111, 30, 74,165, 58,222, 65, 42, 53, 73,196, 66,239,143, 63,252,192,150,151,151, 55,138, 82,106,207,121, - 90,184,117,235,214,238,221,187,119,191, 19, 20, 20,228,149,157,157,237,163, 84, 42,109,121,121,121,124, 20,246,165, 34, 0,112, -250,244,105,168,213,106,171,205,102, 59, 7, 96, 46,165,212,100,111, 90,221,220,220, 28, 59,116,232,208,220,219,219, 27,106,181, - 26, 30, 30, 30,104,216,176, 97,115, 55, 55,183,237,121,121,121,154, 87, 89,184,143, 31, 63,238, 72, 41,109, 78, 41, 69,247,238, -221,237,218,135, 16, 50,168, 87,175, 94, 66, 30,143, 7,189, 94, 7,137,196, 1, 10,133, 19, 28, 29,157, 81,187,118,109,164,165, -165,161, 91,183,110,230,184,184,184,205,233,233,233,127, 84, 53, 77, 42,149,170, 75,139, 22, 45,222,155, 48, 97, 2,108, 54, 27, -250,245,235,135,148,148,148,175, 18, 18, 18, 14,120,120,120,244,127,231,157,119,220,220,221,221, 49,101,202, 20, 41,128,165,172, -138, 98, 48, 24,140,127,184,193,170,168,205, 51, 32, 32,160,137,135,135,199, 71,142,142,142, 46,167, 78,157,146, 3, 64,235,214, -173,193,113,220, 42, 63, 63,191,159,211,210,210, 46, 86,229, 71,243,243,243,213,190,190,190,251, 46, 95,190, 60,120,224,192,129, - 56,126,252,248,168, 34,131,133,203,151, 47,227,233,211,167,251,242,243,243,213,175, 34,131, 1, 1, 1, 61,218,183,111, 63,176, - 73,147, 38, 56,120,240, 32,108, 54,219,165,170,236, 95,122,196, 32,202, 24, 69, 88,252,153, 93, 98,124, 62, 8, 33,176, 90,173, - 0,128,156,236,108,196,198,196, 32, 47, 63, 31, 70,131, 1, 90,157,206, 86,187,122,117,189,202,100, 18, 18,160, 74,109, 92,148, -210, 36,133, 66,145,172,211,105,189,220, 60, 92,245,114, 7, 7, 40,213, 42,209,141,235, 87, 52,148,210, 39,118,106,152, 8, 33, -237, 14, 31, 62, 60,147,207,231, 15, 81, 40, 20,152, 48, 97, 2,191,125,251,246, 16,137, 68, 48, 26,141, 80, 42,149,216,178,101, - 75,182,213,106,173, 81,100, 72, 20,114,185,124, 35,159,207, 79, 85,171,213, 95, 86,246, 27, 18,137,164,125,223,190,125,249, 70, -163, 17,115,231,206,197,204,153, 51,209,189,123,119,254,181,107,215,218, 3,216,255,170, 10, 54,199,113,232,210,165, 75,233, 78, -238, 15,237,217, 79, 40, 20,214,174, 85,171, 22,178,179,179,145,157,157, 13, 79, 79, 79,248,249,249,193,219,219, 27, 75,150, 44, -161, 75,151, 46, 61,107,179,217, 54,103,100,100,228,188, 68, 89, 28,254,246,219,111, 15, 27, 60,120, 48,180, 90, 45, 78,157, 58, -133, 86,173, 90,225,219,111,191,245, 60,127,254,252,123, 77,154, 52,129, 80, 40,196,217,179,103, 97, 54,155,211, 88,245,196, 96, - 48,254,109,188, 46,253,175, 42,141, 96,185,186,186, 58, 57, 56, 56,140,235,221,187,119,235,254,253,251, 99,254,252,121, 37,223, -241,120, 60,108,218,180, 73,177,103,207,158,207, 3, 3, 3,219,113, 28,247,203,179,103,207,242,236,253, 97,142,227,246,108,221, -186,181,103,139, 22, 45,100, 29, 58,116, 8, 41,186,249,154,182,110,221,170,227, 56,110, 79, 85, 51,242,226,164,143,254,254,254, -245, 4, 2,193,192,222,189,123,215, 27, 61,122, 52,238,223,191,143, 45, 91,182, 60,174, 93,187,246,133, 42, 74, 39, 86, 50,138, -112, 65,101,209, 44,190, 88,156,171,204,200,112, 81, 4, 5, 9, 93, 29, 29,211, 15, 30, 60, 24,216,185,115,103,146,146,146,130, -252,252,124, 24, 12, 6, 92,191,126,157, 19, 0, 73, 2, 87, 87,146,116,249, 50,225,139,197,185, 85, 61, 6,129,190,174,161, 95, - 77, 27, 95,205, 96, 48,212, 85,169, 84, 86,161, 80, 40, 12,240,113, 73,169, 98,225, 54,202,229,242,198, 0, 4, 28,199,233,220, -220,220,100,199,142, 29,131, 88, 44, 6, 33, 4, 81, 81, 81,112,112,112, 16,201,229,242,100, 0,240,241,241, 17,175, 90,181,202, -121,196,136, 17,231, 43,211,110,223,190,189, 32, 56, 56,184,107,237,218,181,113,233,210, 37, 60,124,248,240,217,149, 43, 87,252, - 27, 55,110, 12,127,127,255,174,237,219,183, 63,116,230,204, 25,235, 43,186, 72, 95,170,147,187,205,102,163,132, 16,240,120, 60, -112, 28,135,236,236,108,212,168, 81, 3, 43, 86,172,192,146, 37, 75,126,124,217, 62, 82, 17, 17, 17,162, 6, 13, 26, 12, 28, 60, -120, 48,158, 60,121,130, 5, 11, 22,228,103,101,101, 93, 58,118,236, 88,143, 9, 19, 38,240, 91,181,106,133,220,220, 92,172, 91, -183,206, 26, 29, 29,189, 51, 51, 51,115, 15,171,106, 25, 12, 6,227, 53, 52, 88,254,254,254,189,220,220,220,222, 27, 58,116, 40, - 63, 44, 44, 12,153,153,153,208,104, 10, 12,245,234, 69,114, 0,143,138,197, 34,179, 92, 46,199,216,177, 99, 17, 21, 21,213,244, -243,207, 63,111,226,227,227,179, 41, 35, 35, 99,151, 61, 63,156,153,153,169,243,245,245,221, 57, 97,194,132,133,183,110, 69,215, - 0,128,107,215,174, 61, 77, 75, 75,155,150,153,153,169,171,162,185, 42,158,204,146, 72,165,210,171,161,161,161, 9, 61,122,244, -112,234,223,191, 63, 60, 61, 61,113,243,230, 77,124,251,237,183,113, 38,147,105,230,171,186,129, 87, 5,171,209,152,113, 99,239, - 94,199,246,111,190,233, 52,177, 87,175,197, 31, 76,152,240,195, 87, 95,125, 37, 8, 11, 11, 35, 58,157, 14, 87,175, 94,165,187, -118,237,178,172,255,250,235,165,144,203,133,151,119,237, 18,155, 76,166,164, 42, 70, 71,218,245,236,222, 46,108,241, 15,203, 97, -208, 23,224,234,165, 63,144,159,159,141, 85,171,119,135, 5, 4, 4,180, 75, 77, 77, 61, 91,133,227, 89,251,248,241,227, 94,148, - 82,136,197, 98,204,157, 59, 23,126,126,126,112,114,114,130, 70,163,193,228,201,147,157, 63,249,228, 19,103, 0,184,127,255, 62, - 20, 10,133, 93,186, 49, 49, 49,141,198,143, 31, 47,179,217,108, 56,114,228,136,153,207,231, 47, 62,126,252,248,162,250,245,235, -139,218,183,111, 47, 91,191,126,125, 99, 0, 87, 94,149,193,122, 25,108, 54, 91,226,177, 99,199,162,134, 12, 25, 66, 5, 2, 1, - 81, 42,149,112,118,118,198,138, 21, 43,116,233,233,233, 47, 61, 65, 91,110,110,174,176,110,221,186, 34,142,227,176,115,231, 78, - 60,123,246,236,211,204,204,204,108, 63, 63,191, 35, 83,167, 78, 29, 23, 22, 22, 22,240,232,209,163,103,122,189,126,101, 90, 90, - 90, 42,171,154, 24, 12, 6,227,245,141, 96,189,121,228,200, 17, 62,199,113, 88,189,122, 53,110,222,188, 73,115,114,114,102, 18, - 66, 54, 58, 57, 57,217,114,114,114,222, 28, 51,102, 76,255,153, 51,103,146, 54,109,218,224,242,229,203,164, 70,141, 26, 3, 1, -236, 42,117,163,238, 92,209, 92, 25, 42,149,234,122,102,102, 70,141, 82, 19, 75,214,144, 72, 28,174, 87,114,243,127, 78,243,197, -201, 44,249,124, 94,179,185,115,231,106,125,125,125, 77,247,238,221,195,202,149, 43,185, 27, 55,110,156, 22,139,197,171,210,210, -210,140,246,104,190, 10, 74,107,138,173,214,155,155,167, 78,173,211,168, 95, 63,238,189, 41, 83, 10, 68, 82,233,199,139,151, 47, -255, 76,169,209,248,129, 16,234,238,236,156,180,122,238,220, 5,221,251,246, 45,184,127,246,172,195,173,227,199,133,158, 22,203, -237,170,164, 51, 53, 53,245,108,104,205, 32,108, 88,243, 3,204,102, 35,210,159, 21,250,179,156, 92, 21, 42, 50, 87,101,105, 90, -173, 86,213, 27,111,188, 33, 2, 32, 29, 57,114,164, 56, 43, 43, 11, 53,107,214, 4, 0,168,213,106,252,241,199, 31, 8, 15, 15, - 7, 0,220,189,123,183,228,125,101,233,116,116,116,236,220,182,109, 91, 36, 37, 37,225,193,131, 7,151,158, 61,123,166,244,247, -247,191,148,156,156,220,190, 73,147, 38,216,181,107, 87,167,242, 12, 86, 85,207,145, 61, 6,171,156,188, 47,220,179,103,207,224, -203,151, 47,247,158, 50,101,138,160, 99,199,142, 0, 0,173, 86,107,160,148,218, 94, 70,179, 52, 22,139,165,120,210, 83, 29, 0, - 20,153,169, 47,255,140,230,159, 45,159, 76,147,105, 50, 77,166,249,191,160,249,111, 50, 88, 86,142,227,112,230,204, 25,236,222, -189,219,102, 50,153,166,167,167,167,199,148,250,126,125, 96, 96,224,249,129, 3, 7,126, 31, 27, 27,203,127,240,224, 1,236,185, - 1,149,198, 96, 48, 88, 94, 92, 42,216, 96, 48, 88,254,108,166, 54,108,216,128,140,140, 12,115, 74, 74,202, 9,171,213,186,231, - 79,142, 70,252,211,163, 8,215, 83,106,124,147,144, 19,179, 90,183,238, 50,243,248,113,201,123, 95,124, 97,124,123,244,232, 79, -109, 38,147,133, 47, 18,113, 98,185,156,103,147, 72,132,247,207,158,117, 88,246,254,251,110,122,163,241,200,230, 42,116, 28, 47, - 21,193,194,219,239, 77,130,190, 84, 4,235,242,245, 88, 84, 53,130,101, 48, 24,234, 2,128, 84, 42, 77, 6,224,243,214, 91,111, -129,227, 56,232,245,122,104, 52, 26,164,165,165,169, 70,143, 30,109, 3, 0,185, 92, 46, 24, 56,112,160,147, 93, 7,178, 90, 53, - 31, 62,159,143, 67,135, 14, 65, 34,145,156, 2, 0,137, 68,114,234,248,241,227,237,135, 15, 31,142,192,192,192,160,226, 73, 80, - 42,210,241,142,236,191,157, 2,161, 32,168, 85,120,165,163,150, 87,100,255, 59, 4,136, 43,154,229,253, 97,195,134, 13, 1, 59, -251, 93,149, 38, 59, 59, 91, 11, 96,157,183,183,247, 31,159,126,250,233, 91,205,155, 55,111, 51,115,230, 76, 66, 41,253,211, 11, -163, 83, 74, 97,179,217, 88,173,195, 96, 48, 24,255,102,131, 69, 8,249,189, 67,135, 14,195, 40,165,124, 30,143,183,229, 5,115, - 5, 0, 72, 73, 73,121, 26, 16, 16,176,186,122,245,234, 37, 11, 64, 87,241,134,147, 73, 8,249,150,199, 35,159, 21,254, 95,245, -137, 37, 75, 45, 73,242, 25, 0,194,227,241, 55, 70, 71, 71,127,145,156,156,156, 93, 85,195, 87, 22,175, 98, 20, 33, 0,108,165, - 52, 97, 24, 33, 71,167, 68, 70,118,238,254,254,251,168,215,189,187,147, 95,112,176, 77,111, 54,115,119, 47, 92, 32,151,118,238, - 20,221, 58,126, 92,168, 55, 26,143,236,166, 52,185,170,233, 76, 77, 77, 61, 91, 51, 36,224,216,160,129, 61,187,134, 84,247, 3, - 0,196, 39,164, 33, 39, 79,117,172, 42,230,234, 5,163,213,111,197,138, 21,251, 69, 34,145,160,244,146, 51,102,179, 57,175,216, -132, 17, 66,252, 86,175, 94,253, 59,143,199, 75,170, 76, 47, 38, 38,230,216,172, 89,179,186, 63,125,250,244, 92, 74, 74, 74, 42, - 0,196,199,199,167,250,249,249,237, 78, 75, 75,235,145,156,156,124,152,218, 17,122,122, 97,177,103,220,191,176,195, 1, 64, 84, -241, 98,207, 47,187,214, 96,105,138, 76,249,226,128,128,128,125, 61,122,244, 24, 70, 8,201,248, 51,122, 10,133,194,170,215,235, -173, 28,199, 9,204,102, 51, 85, 40, 20, 86, 86,253, 48, 24, 12, 70,149,104, 2,160,120,229,144,226,192,137,231, 11,239, 77, 0, - 74, 47,229, 87,252,127, 54,128,235,165, 52, 74,127, 94,217,190, 0,144, 3,224, 78,209,103,127,206, 96,165,166,166, 30,134, 29, -139, 57,219,187, 93, 5, 6,105, 58, 33,100, 89,177, 89,250,179, 26, 86,171,245,149,172,223,198,227,241, 18,250,244,233, 83,165, -237, 43,219,230,119, 74,147, 62, 38,100,211,193, 31,127,108,112,100,229, 74,127,155,213,234, 78, 0,202, 23,139,115, 77, 38, 83, -162,167,197,114,187,170,145,171,210, 60,137, 79,237, 6, 0,181,107,215,166,113,113,113,127,122, 52, 6,165,244, 54,128,192, 74, -182, 73, 3,208,198, 30,189,148,148,148,253, 40, 99,164, 96, 90, 90,218, 1, 0, 7,236, 77, 87,201, 98,207, 0,143, 35,220,160, -186,173, 7,239, 4,192, 21, 47,246,252, 42, 73, 77, 77,141, 7,240,245,159,213,121,242,228,137,169,122,245,234,123, 23, 46, 92, -216,255,206,157, 59, 7, 83, 82, 82, 76, 96, 48, 24, 12, 70,149,204, 21, 33,228, 96,209,189,167,119,209, 67,254,193, 23,223, 23, -111, 83,188, 93,233,109,138, 53, 94,252,188,162,125, 1, 96,218,180,105, 95, 44, 88,176, 64, 6,192,238,190,184,130,255,133,163, -246, 42, 22,181,125,213, 11,227,166,166,166,174,249, 43,242,186,188,208, 64, 93,249, 43,143,103,108,108, 44,121,157,175,178,226, -197,158, 75, 17,249, 79, 72,119, 66, 66,194,166,246,237,219,255,150,146,146,194,162, 87, 12, 6,131, 81, 53, 60,203, 50, 68,229, -248,129,222, 21,125,255,220, 3,123, 25,219,149,245, 63, 33,228,224,130, 5, 11,122, 87, 37,193, 60,118,206, 24,140,255, 63,254, -142, 81,172, 12, 6,131,193, 40,155, 23,163, 86,197,166,235,197,255,167, 77,155,246, 5,170,208, 60, 8, 20,206,204,221,185,156, - 31,181,123,116, 0, 33,164,243, 75,100,234, 4,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 93,154,149,105,151,179,127,175, -242,154,244, 42,106, 46,124,241,125,101,251,218,177,237, 31, 85, 57, 16,127,217, 11, 64,103,166,201, 52,153, 38,211,100,154, 76, -147,105, 50,205, 63,249,106, 66, 41,237,133,194, 85, 78, 40,165,180, 23,165,180,251,180,105,211,166, 23,127, 54,109,218,180,233, -148,210, 78,197,219, 21,109, 83,178, 79,241,103, 47,254,125,241,179, 74,182,181, 59,205,255, 19,125,176, 24, 12, 6,131,193, 96, - 48, 42,224, 58,128, 38,165,162, 75,217, 0,238, 46, 88,176, 32,191, 84,223,168,108, 0,183, 1,212, 47,218, 46,187, 40,144, 84, -186,239,148,169,232,127, 83, 25,219,152,236,217,214, 94,152,193, 42,135, 6,190,252,175,131, 2,188, 26,151, 68,249, 10, 39,135, - 4, 87, 52,139, 64,201,116, 2, 28, 7, 74, 41,210,178,148, 55,239,100,210,175, 94,246,247,194,252,137,155,151,131,195, 82,142, -210,214, 69, 31,157, 85,229, 26, 39,221, 83, 81,165,189, 26,117,124, 72, 29, 7, 30, 62,229, 40,234, 1, 0,143,224,142,129,195, -119, 15, 51,232,195, 63,123, 60, 8, 33,164,174, 39,198,138,165,178,161,206, 46,174,181,242,243,115,226,204, 6,227,142, 7,217, - 88, 69, 95, 98,218,244,154,110,164, 57, 71,241, 5, 0,158,144,135,239, 99,115,233,105, 86,234, 24, 12,198,255, 19,252, 63,185, -127, 89, 83, 0,253,217,193, 69,148,157, 22,187, 76,214,139, 92,179,115,187,255,119,170,100,176,234,122,145,247, 65, 48, 27, 0, - 5,197,156,251, 89,244,151, 42,237,239, 71, 58, 59,240,249,107, 1,240, 13,102,219, 20,202,225, 92,153, 55,115, 30,218, 58,136, -248,223, 3,224, 12, 54,219,187,247,211,236,239, 15, 22, 25, 64,186, 11, 56,222,102,142, 82,161,141,163, 27, 65,113, 80, 33,194, -197,203,169,212, 80,149,180, 6, 5,120, 53,222,123, 45,189,235,233, 95, 38,162, 89,189,154,160, 54, 43,192, 89, 32,107,243, 41, - 78, 46,121, 11,205,234, 4,129,114, 22,128,179, 66,209, 99, 49,122, 68, 58,191,244,197, 17,230, 79,220,130, 61,188,238,173, 89, -179,214,199, 47, 36,130,112, 86, 51, 98,174, 29, 27,241,201,103, 51, 59, 70, 58,147, 72,123, 76, 86,125, 63,242, 94,205, 26, 97, -159, 78,154,253, 3,223,239,255,216,187,202,240, 42,142, 54,122,230,238,213,220,184,123, 66,144, 36, 36, 4,119, 2, 4,247, 2, -193,165,133,210, 22, 74, 41, 90,188, 64, 75,177, 22,167, 72,145,175, 5,138, 83,164, 80, 36,184,107,128, 16,146, 16, 8, 18,119, -151,171,187, 59,223,143, 72, 3, 68,110, 2,245, 61,207,179,207,189,107,103,103,103,102,103,206,188, 51,243,142,147,171, 49,199, -106,216,164,231,225,141,215,125, 55,255,151,134, 78,100,229,131, 4,186,205, 80, 33,229,107,139,177, 98,185,108,144,145,194,184, - 78, 65, 65,238, 83, 78,167, 63,224,231, 36,238,190,124,197,154, 70, 1, 93,122,154,112,185, 73, 34, 61, 15,223,253,251,246,186, -127,191, 97, 99, 79, 66,200,123,148, 82,190, 42,239,204, 83,204,136,220,249, 73, 79,137,152, 33, 62, 31,110,101, 80,133,169,175, -165,225,107, 79,134, 17, 90,185,155, 8, 74,112, 37, 44,153,238,169,206, 51,124,236,201,255, 8,133, 23, 8, 14, 18,138,189,143, - 82,104,138, 80,206, 9, 16,240,239,130, 72, 36,186,192,243,124,135,119,201, 73, 8,105, 73, 41,189, 41,196,238,127, 19, 85,179, - 96, 17, 44,122, 20, 21,107, 9, 78,135,122, 94,181,190, 1, 80, 37,129,165, 96,152, 29,119,158, 36, 59,128,213, 97,235,226,241, -251,180,122,128,213,235,192,177,122,112,172, 30, 44,171, 3,167,215,131,234, 53,152,255,227, 5, 64,155,139,166,126,158, 59, 0, - 56, 26,250, 12, 9, 21,253, 28,124, 53,200,138,104,179,177,103,211,210,207, 99, 83,243, 62, 63, 27,146,144, 86,207,158,204, 14, - 75,193, 79, 85, 17, 2, 23,126,152,132, 93,135,127,139, 91,251,191,252, 8,158, 82, 88,153, 25,121,143,232,253,200,117,231,209, - 11,177,107,118,168, 35, 0,192,220, 88,230,253, 65,200, 19,183,183, 73, 4, 59,133, 98,205,230,141,223, 59, 56, 90, 27, 17,246, -250, 50,176, 28, 7, 87,247, 94,204,236, 9, 35, 28, 23,173,222,182, 26,192,168,138,238,175,107, 79,124,189,106,251, 76,219,241, -219,117,183,130,220, 20,109,208,174, 57, 81, 84, 3,189,131,179,143,228,155,165,171,152,185, 51, 39, 77,173,107, 79,110, 69, 36, -211,176, 74, 10, 3,145,143, 29,142, 46, 93,182,162, 65,199, 30,189, 77,248,188, 84, 70,157,159,231,181,245,199,109, 95,213,109, -208, 92,217,214,207, 69,154,114, 96, 28, 81,229,102, 64, 39, 82,200, 59,214,235,108,166, 26, 57, 84,191,117,251,174, 9, 0,214, - 85,169,249, 87,170,123,154,231,171,223,154, 36, 20,109,239,223,188, 48,150, 75,184, 3,202,233, 1, 78, 87,242, 11, 78, 15,202, - 23,254,182, 24,247, 35, 0, 84, 75, 96,137, 40,186,158,189,122,199, 49, 57, 41,177,217,234, 21, 75,102,251,218,145,147,224,240, -115,120, 6, 46, 85, 85, 88, 10, 16, 32,224,239, 11, 66, 8, 75, 41, 21,191, 99,206,158,148,210, 19,111,201, 49, 29,192, 71, 69, -187,219, 40,165,203,223, 65,184, 92, 0, 56, 20,237, 38, 81, 74,133, 53, 80,255, 82,129, 5, 40, 64,121,224, 96, 63, 0, 48,170, -234,195, 40,160, 0, 97, 0,125, 62,250,246,232, 2, 27, 59, 7, 64, 95, 0,232, 10, 0,189, 10,208,231, 3,122, 21,210, 18,163, - 1, 93, 62,240,236, 36, 88, 74,229, 85,126, 43, 77, 54, 16,121, 0,157, 26,187,193,214, 92,129, 73,125,125,109,182,156,138,220, -182, 45,232,113,103, 0, 67, 12, 10, 43,165,104, 81,191, 14,214,110,203,143,248, 53, 56,165, 27, 0,244,106,100,115,170,133,175, -187,235,154, 29,234,136,223, 66, 50,186, 3, 64, 15, 63,243,147,205,189, 29,221,248,183,176,238,242,148,182,117,170, 81,135,112, -247, 55,131,207,137, 67, 78,142, 10,113, 47,118,194,210,185,137,136,227,209,190,178,251,141, 24,204,154,248,229,183,146,130,156, -100, 45,167, 75,229,108, 68,153, 98,177,156, 39, 72,184,164,201,231,179,184,201, 31,143,228,190,152,191,100, 22,128, 17, 21, 90, -131,236, 48, 97,229,202, 53,245,219, 52,173,107,151,244,203, 36,146,151,153, 12,150, 81,202,251,182,106, 3, 11, 79, 95, 62,249, -226, 74, 34,171,213, 25, 22,214,181, 16,127,125, 55, 94,222, 60, 68,252, 27, 7,202,127,218, 35, 29, 89,158,192,242,180, 37,254, -221,218, 53,223, 87,203,205,201,145, 82, 30, 60, 79, 65,121, 14, 31, 14,236,138,217,251,159,129,227, 56, 12,232,230,223,233,219, -177, 29, 41,207,243,160,148, 71,108, 82,122,193,249, 91, 17,157,162, 50,232, 45, 67, 44, 83, 13, 91,118,240, 15, 9,190, 89, 87, - 31,121, 12, 77, 71, 44,141, 32,192,213, 82,121,206,255,222,233,159,234, 2, 63, 86,183, 16, 34, 62,118,224, 94,158, 90, 6,183, -118,159, 48,155,247,156,178,205, 78,141,255,224,151,157, 27, 7,110,218,188,121, 23,128,113, 66, 49, 34, 64,192,191, 3,148,210, -119, 46,178,162,162,162, 18,223, 70,100,185,184,184,180, 3,240, 93,241, 72, 12, 66,200,119, 30, 30, 30,243,127,111,160,190,210, -198,203,230, 56,110, 68, 92, 92,220,229,138, 56,123,247,238,237, 4,192,163, 20,167, 7, 33,196,163,172,107, 45, 44, 44,184,214, -173, 91,191, 60,126,252,120,130,144, 67,254, 88,129, 21, 17,115, 96, 82, 99, 77, 98, 30, 0, 68, 24,144, 89, 95,233,218, 83,235, -185,101,219,191,122,127, 89,189, 26, 86,200,205,215, 34,232,238, 75,112,156, 30, 28,203, 22, 89,178, 88,112,172, 30,221, 26,218, -160,181,122, 28,214, 29,127, 12,150,227,151, 86,196,249, 58,116,148, 31,214,168,243,224,253, 60, 79,101,114,137, 40,219,203,213, -218,110,218,128,134,162, 73,125,235, 65,165, 99, 7,251,218,147,243, 97,201,116,171, 65,156,252,155, 46,139,104, 89,199, 56,182, -210,119,175,192,250,212, 98,104,239, 46,102, 84,147, 13,125,218, 51,228, 22,232,241, 44, 93,143, 36,117, 22,228, 36,209, 32, 78, -158,162,129,179,163,163,241,181,125, 51, 95, 88,139,115,196,118, 98, 86, 34,163,172,132,227, 41,131,172, 48,141,117,221, 46,226, -226,113, 89, 21,133,211, 72,105,250,126,187,174,189,204, 99,118,127, 66,140,188,186,193,174,177, 43, 94, 92,222,142,148,187,199, -145,151,151, 67,228,217, 89,176,183,174,141, 30, 35,134, 96,249,144,102,200,205,201, 5,147, 24,101, 46,147,200, 45,202,227,164, - 28, 70,172,252,118,177,163,152, 17, 21,198,103,241,198,233,161,210,104, 0,142,133, 66,204,131,208,226,115,122,112,122,157,178, - 65,224,204,241, 0,110, 85,246,238, 97,201,116, 79, 61, 59,210, 22,188,190, 46,213,171, 64,128,171,143, 82,104,137,232,241,181, - 39,195,154,116, 27,221,150, 18, 92,169, 78, 26,249, 89,163,119, 83, 15, 19, 99,227,156, 8,196, 29,252, 28, 81, 80, 80,251, 54, - 31, 97,216,135, 19,148, 91,182,108,233, 67, 8,249,180,244, 24,180, 63, 98,241, 83,129, 83,224,252,167,114,154,155,155,215,172, - 81,163,198,124,189, 94,223, 78, 42,149,218,235,116, 58,240, 60,159, 36,147,201,174,188,124,249,114, 97,118,118,246,243,191,219, -187,135,132,132, 24, 44,178, 12,225,148, 72, 36,120,252,248,241, 83, 67, 69,214,235,156, 18,137,228,231,171, 87,175, 98,255,254, -253, 0,128,200,200, 72,120,122,122, 26,151,117,239,139, 23, 47,140, 3, 2, 2,126,198,107, 43,112,188,206,249,240,225,195,154, -199,142, 29,195,193,131, 7, 1, 0,143, 31, 63,134,151,151, 87,153,225,185,122,245, 42, 51,124,248,240,154, 0, 18,254,232, 52, -250, 87, 10,172,162,245,117,201,235,255,203,192, 51, 55, 75, 89, 99,168, 57, 0,120, 86,213,135,133, 37,209,111, 27, 58, 74,186, -159, 59,184,161,157, 66, 42,194,130,173,211, 98, 83, 51,114, 91,138, 9,120, 0, 96, 41, 68,150, 38,178, 27, 75, 63,104,232,150, -153,167,198,175,183,227, 47, 63, 74,174,154, 41,244, 81, 2, 61, 3,192,226,247, 10,146,120,125,176,252,204,222,189,179,186, 55, -152,210,183, 1,142, 94,127, 57, 5, 64,165, 94,218, 41,207,131,242,108,201,160,246,162,166, 2,192,179, 40, 61,166,155, 7, 45, - 60,198, 87,205,130, 21, 64,136, 56,211, 14, 61,172,148,178,245, 99,199,126,108,166, 79,125,130, 12,173, 20,177,153,106, 36,169, - 36,200, 19,219, 33, 62,226, 33, 39, 34, 56, 83,185,149, 5, 57,224,212, 22, 86, 50, 19,145, 95,151,241,206, 57,167,231,100,202, - 40,203,152,245, 91,100,145,118,110,213, 75, 86,149,154, 79, 8, 42, 93, 68,219,220,220,194, 83,157,254,146,201,206, 76,131,133, - 67, 61,116, 31,220, 27, 95,247,242, 69,110, 78, 62, 82,175,255, 70,235, 56,154,145,232, 43,187, 48,183,135, 15,210,147, 19,161, -209, 3, 36, 95,147,161,214,170,243,202,141, 71, 17, 54, 79,254, 98,198, 48,119, 71, 91,227,226,201, 2,148,231,208,208,167, 22, -186,180,107,129, 51, 87,175,225,206,195, 72,240, 69,147, 5, 40,207, 35, 46, 37, 51, 89,173,227,182, 87, 41, 66, 57, 22, 84,175, - 46, 83,128,161, 26, 93,131,245,237,137,146, 3,230,181,172, 99, 58,102, 86,111,119, 83, 99, 57,129, 90,207, 65,173,213, 35,247, -218,122, 88,215,168, 15,165, 66, 65, 26, 67, 37, 6,160, 23,138, 18, 1, 2,126,199,160, 65,131, 20,201,201,201, 23,123,245,234, -229,219,165, 75, 23,101,219,182,109,145,159,159,143,160,160, 32,228,231,231,187,187,186,186,186, 7, 5, 5, 5,182,108,217, 50, -204,197,197, 37,224,192,129, 3, 85, 25, 35, 43,198,239,131,212,121, 0, 44, 33, 4, 69,199, 8, 0,254,109,214,161,149,201,100, -136,142,142,126,103,150, 44,169, 84, 10,181, 90,141,248,248,248,167,213,177,100,229,229,229, 73,157,157,157, 97,107,107, 11,142, -227,144,159,159,143, 35, 71,142, 32, 59, 59, 27, 60,207,195,200,200, 8,139, 86,110, 69,196,189,139,184,117,235, 22,178,179,179, -165,149,113,198,197,197,145,134, 13, 27, 66,163,209,128,101, 89,168,213,106,156, 61,123,182,100, 95, 44, 22, 99,198, 55,171, 17, -121,247, 34,238,223,191,143,184,184,184, 63,101,117,144, 42,104,145,127,165, 5,235,173,193,113,236,236, 45, 59,246,222,152, 61, -110, 8, 38, 12,237,236,186,112,195,161,206, 97,169,116, 7, 0,248,218,146, 15, 70,118,168,227,102,161,148,224,235,221,119, 1, - 74,103,191,237,243, 66,211,105,100, 61, 7, 50,229,240,173,232,139,115,134, 52, 70, 45, 71, 51,207,218,181,137, 44, 42,202,128, - 53,255,120, 22,150, 38,114,239, 94,141,108, 78,129,231, 97, 97, 42,175, 11,142,133,133,137,220,187,135,159,249, 73, 0,176, 80, - 74,235,150,101,233, 42, 15,205,220,164,159, 40,229,226, 79,140,155, 56,186,141,234,211,197,168,103,159, 64, 35, 19, 9,139,244, - 91, 65,200,145,184, 64,111,229, 14,141, 62, 3,113,207,163,184,115, 55,195,227,211,114, 53,211, 42, 13, 38,197,229,248,231,143, -109,107, 54,232, 98,153,118,124,110, 74,205,209,187, 61, 68,224, 69,185,187,250, 39, 27,219, 53, 55,186,253,244,121, 30, 79,223, -180,224,188,142,156,236,236,151,122, 14,142, 42, 78,108, 26,117,225, 39,204,234, 81, 31,153, 25, 41, 80,235, 88,100,171, 88,157, -131,133, 66,174,121, 30, 10,141,142,133, 86,207, 67, 98,225,140,160, 27, 15,211,120,189,190,220,181, 40,163,210,232,125, 0, 38, -165,143,213,182, 37, 13,103,154, 25,221,135, 94,133,232,184, 4,236,248,237, 70,227,162,235,170,223, 58,229,217,194,110,230, 82, -150, 43, 66,209,182, 58,131,219,125,236, 73,115, 35,133,244,251,239,166, 12,247,109,229,101, 37,231,227,110,128,240, 58, 24,115, - 98,168,100, 28,204, 93,107,129,215,230,210, 2,181, 58,235, 17, 32,120,102, 23, 32,160, 20,234,214,173,235, 96,110,110,254,232, -139, 47,190,176,234,223,191, 63, 14, 31, 62,140,156,156, 28,108,223,190, 29,107,214,172,193, 87, 95,125, 5,189, 94,143, 45, 91, -182, 40,127,249,229,151,230, 27, 55,110,140,115,119,119,175, 23, 29, 29, 93,217,130,234, 4,128, 28,128,164,168,238, 34, 0,248, - 19, 39, 78,160,103,207,158, 56,113,226, 4, 95,116,140, 35,132,232, 41,165,154,234, 10, 44,153, 76,134,236,236,236,119, 38,178, - 76, 76, 76, 32,147,201,144,155,155, 91,101,145,197,178, 44, 19, 23, 23,135,236,236,108,116,233,211, 7,171,151, 46, 69,135, 14, - 29,208,165, 75, 23, 80, 74,113,246,236, 89,116,110,227,135, 33,239, 5, 32, 60, 60, 28, 44,203, 26, 20,222,164,164, 36, 36, 39, - 39,163,123,159, 62,216,186,113, 35, 90,180,104, 1,111,111,111,176, 44,139,139, 23, 47, 98, 96,183, 54, 80,244,235,140,200,200, - 72, 33, 83,255, 83, 4, 86,104, 10,189,233,107, 75,142, 15,237,214,188,119, 31,127, 95,108,221,119,110,177,175, 47,217, 11, 0, -214,166,242, 69,239,119,168,133,176,152, 76,156,187,159,112, 60, 44,245,221,204,190,224, 57,216, 88,155, 41, 1, 70, 6,149,142, -103,205,158,161,210,129,201, 60,165, 80,182,155,137,145,125,194, 92, 91,248,186,186, 22,207, 34, 52,233,185, 10, 31, 60,124,234, -214,204,219,193, 13,156, 30,224,244, 48, 27,178, 27,248,198,184,210,112,248,215,148,159,153, 57,109, 74,235, 30,253, 6, 27,201, -148,230,224,114, 98,161, 79,122,136,244, 39,151,145,175,244, 68, 82,244, 51,236, 63,125, 43,251, 73, 92,122,142, 72,132,160,228, -108,205,244,168, 12,154, 87, 25,175, 90,143,165,243,231, 78,235,181,127,239, 62, 83,121, 45,127, 18,181,190,103,182, 76,204,202, -109,107, 54, 17, 21, 40,108,232,146,237,251,204,242,181, 88, 86, 25, 79, 65,126,206,161,179, 65,167,134,212,169,233,111,250,226, -206,111, 80,169, 53,208,232,129,122,205, 3,192,113, 84, 70, 68,132, 55, 99, 24,146,146,158, 9,162,231,146,175, 60,120,145,120, -245,193, 51, 70, 99, 90, 57,247, 43,153,142, 48, 19,251, 4, 52, 2,244, 42,188,215,174, 62, 86,239, 58,247, 57,128,209,111,151, -200,133, 22, 44, 10,248,215,179, 35, 63, 0,240,191,123,100, 77,221,166,253, 38,163, 42, 22, 44, 63, 91,210,195,175,182,211, 79, -171, 23,205,180,178,118,241,100, 8,175, 7,117,104, 0,228,196, 81, 18,119, 3,230,206, 45,192, 57,181,193,150,117, 43,242,120, -158,238,173,142,139, 10, 1, 2,254,205, 80,171,213,135,190,253,246, 91,171,222,189,123, 23, 91, 96,112,227,198, 13,108,219,182, - 13,198,198,175,150,147, 61,123,246, 4,165,212,106,193,130, 5,135, 0,180, 42,143,179,101,203,150,125, 54,108,216,144,208,168, - 81,163,103, 69, 34, 75, 10, 64, 20, 26, 26, 42,138,141,141, 37,150,150,150,212,201,201, 73,159,144,144,192, 3,224, 62,252,240, - 67,198,196,196,164, 78, 94, 94,222,165,234, 10, 44,153, 76,246, 78,198,100, 73, 36,146, 18, 94,169, 84, 10, 74,105,149, 68, 22, -199,113,226, 19, 39, 78,224,238,221,187,248,170, 81, 35, 76,113,118,134,149,149, 21, 46, 94,188, 8, 74, 41,140,141,141,145,145, -145,129,189,123,247,162, 99,199,142, 96, 89, 86,106, 8,239,193,131, 7, 17, 28, 28,140,111,154, 54,197, 20,115,115,152,152,152, -224,236,217,194, 94, 63,185, 92,142,232,232,104,156, 61,123, 22, 1, 1, 1, 66,166,254,163, 5, 86, 0, 33, 98, 98, 15, 7,157, - 86, 5,202, 82,128,192,201,215,151, 72,195,194,168,174,170, 15, 21,137, 48,119,221,142,227,189, 86, 77,238, 67, 62,233,219,216, -105,225, 79, 23, 62, 5,128, 49, 3,188,156,149,114, 49,214, 30, 13,163, 34, 17,230,190,139, 23,244,245, 37, 82,145, 8,159,118, -105,225,141,132, 44, 45,162, 18,178,206,135, 81,106, 80,151,206,185, 85, 35,177,243,215,139,177,107,118,170, 35, 40,165,176, 48, -145,123,127, 16, 18,229,246,211,137,224,152,149,251,213, 17,148,167,176, 80, 74,234,142, 14,111, 83,233, 44,194,102,110,210, 79, -102,207,156,222,166,239,232, 47, 20,108,196, 1,104,163, 78,131,215,169,144,163,147, 34,139,113, 64, 92, 76, 12,150,108, 57, 30, -155,147,175, 29, 18,154, 82, 53, 97, 25,153, 70,243,124,109, 73,255, 37, 95,207, 57,179,116,209, 2,147,130,103, 23,243, 24,194, -170, 24,247,246,226, 69, 95,173, 34,185, 26,237,224,168, 12,154, 91, 25,143,198, 20,203,190, 93,185,174,215,199, 35, 2, 35,188, - 60,219, 91,115, 9,207,173,213, 57, 57, 41,187, 79, 5, 59, 20,181, 12, 9, 0, 68,197,165, 35, 53, 59,159,229, 88,253, 37, 83, - 9, 22, 62, 50,196, 26, 88,132, 90,246,196,182,127,219, 6,195,109, 77,165, 80,229,101,193,206, 84,130,110, 45,106, 15,175,101, - 79,102, 62, 75,166,169,213, 78,104, 94, 15,170, 87,225,230,178,142,117, 41,167,175, 11, 78, 15, 93,200,207, 85,183,132, 17, 76, -153,208,206,196,204, 82,251, 66,132,124, 99,192,200, 6,196,204, 29, 48,247, 32, 18,159,193, 72,120,246,136,253,124,248,136,244, -231, 47,227,254,103, 99,132,229, 66, 17, 34, 64,192,171,136,142,142,126,127,246,236,217, 87, 91,180,104, 97,111, 99, 99,131,250, -245,235,227,215, 95,127,197, 23, 95,124, 81,114, 77,163, 70,141, 64, 41, 69, 70, 70, 6,190,253,246,219,164,132,132,132,247, 43, -226,140,136,136,120,188,115,231,206,182,190,190,190, 58,169, 84,154, 5, 64,158,149,149,165,200,200,200, 32,106,181, 26, 60,207, -243,230,230,230, 92, 66, 66,130,126,200,144, 33,154,235,215,175,215,206,207,207,143,121, 27, 11,150,171,171,107,104,122,122,122, - 54, 33,228,173, 92, 56, 72, 36, 18,136, 68, 34, 72,165, 82,216,216,216,216,230,229,229,241, 0, 50,171,227,194,129,101, 89, 52, -109,218, 20,167, 47,223,195,137,115,215,145,147,240, 24,159,126,252, 62,234,215,175,143,211,167, 79, 87, 59,205, 26, 54,108,136, - 83,103,175,226,234,221, 7,136,142, 12,193,231,159,126,140,122,245,234,225,212,169, 83, 66,134,126, 7, 2, 43,128, 16, 82,220, - 18,127, 67,174,250,216,146,134, 78,117,100, 63, 47,232, 81,219, 71,210,101, 1,136,196, 8, 7, 60, 79,181,153,187,100,125, 68, -125,123, 50,226, 97,114,229,179,189, 94,177, 98, 37,211, 71,245,236,200,158, 7,225,117,135,191,215,194, 21, 91,127, 85,206, 3, -128,193,109,107,226,246,147, 84,220,138, 76,217,243, 40,133, 62,122,219,151,171,111, 79,148,160,216,243,237,196,190, 1,238, 46, - 14,216,118,248, 42, 8,193, 33,131, 42, 90, 74,105, 11, 95,119,172,217,249,250,140, 65, 7,183,149,251,213, 17,167, 67,115,122, - 0, 64, 87, 31,227,147,205,106, 91,186, 85,102,201, 48,146,137,199,246, 8, 28,169, 96, 35,127, 5, 94,158, 5, 97, 53, 80,233, -120, 36,166,229,162,192,220, 21, 23,111, 60, 80,101,171,181,147, 31,165, 84,207,106, 23,150, 74,159, 53,114, 36, 49,249,249, 42, - 71,165,109,109,181,152,240, 52, 79,205,227,118,216,203,236, 71,137,244,177, 33, 28, 81, 81, 84,219,202,133,180,253, 97,199,254, -249, 18,169,108, 48, 67, 64,236, 44,140,109,127, 88,245, 13, 76, 77, 77,192,107,243,128,252, 84,244,255,108, 73,234,195,120, 93, - 77, 0,240,178, 33, 38,237,106, 73,119,136, 69, 36,238,252, 83,237,151,149, 61,131,232, 49,110, 68,183, 70, 18, 94,155,143,137, -223,238,195,230,153,125, 49,178,147,143,228,183,107,145,227, 0, 44,172,110, 90, 83,142, 5,213,171,208,106,206,229, 8, 2, 92, -165,128,255,221,253,139,234, 2,247, 12,230,104, 66,136, 68,236, 72,124, 26,184, 25, 75,249,184,107,224,227,174, 81,198,181, 13, -136, 91, 59, 66, 28,154,210,239,191,251, 42,127,235,214,109, 65,188, 8, 95, 87,230,242, 66,128,128,255, 42, 40,165,207, 44, 44, - 44,186,247,236,217,243,220,233,211,167,173,252,252,252, 0, 0,119,239,222, 5, 0, 52,109,218, 20, 94, 94, 94, 72, 78, 78,198, -208,161, 67,211, 18, 19, 19,187, 83, 74, 43, 28,211,155,155,155,251,236,224,193,131,118,121,121,121,141,231,205,155,151,236,238, -238,158,163, 86,171, 73, 86, 86, 22,207,178, 44, 44, 45, 45,101,141, 26, 53, 66,235,214,173,243,174, 95,191,238, 17, 27, 27,155, - 3,224, 69,117,194,223,183,111, 95, 92,190, 92, 56, 9,239, 93,248,197,146, 72, 36,240,243,243,115,126,246,236, 89,124, 81,252, -220,172, 70,156,150,252,127,240,224, 1, 46,221,139,131, 88,171,130, 44, 53, 1, 55, 15, 31, 68,159,177,227,193,178,213, 31,173, -240,224,193, 3, 28, 57,123, 19,198,114, 49, 30, 63,126,132,131, 7, 15,226,211, 79, 63,125, 43,206,106,162, 66, 45,242,143, 20, - 88,148,210, 75, 40,195, 11,109,237,218, 68, 38,207,195,130,110, 77,157,103, 12,246,175,205,232,115, 18,192,115, 60, 24, 9, 96, -103, 99,134,159,127,222, 83,115,207,190,125, 55, 26, 58, 75,214,241, 44, 59,247, 97, 50, 45,168,194,179, 23,172,218,119,117,240, -207,211, 2,196,159,246,168,107, 5, 0, 82,177, 8,107,127,125,196, 2, 88,240, 54, 47,213,202,133, 40,242,244,248,196,193,218, -124,222,236,143,122, 89, 5, 52,245,194,165, 91,161, 88,119,240,198,101, 89, 10,118, 26,156,169,121, 61, 94,215, 77,101,205, 34, - 4, 95,249,120, 74,142,163, 14, 82, 99, 75,232, 94, 94, 0,116,106,168, 53, 58,196,166,115,136,205, 80, 67,172,148,226,110,100, -156,202, 58, 9,199,171,251,206,132, 16,226, 95, 75,225, 52,111,241, 74, 23,181, 42,143,205,201, 76, 99,165,178,155, 18,165,145, - 60,177, 42, 60, 55,226,168,186,125, 77,105, 19,128,103,100, 10, 90, 48,103,234, 40,227,248,176,211,168, 35, 74, 0,161, 20, 70, - 62,189, 96,106,196, 72,219,122, 72, 99, 0,192,195,193, 92,246,237,215, 95,152, 79,158,249,117,165, 99,188,124, 9,145,214,111, -230, 48,217,207,221, 18,151,131, 35,112,249, 97,244,163,203,119, 31,215,235, 80,223, 9, 94, 46, 22,147,124, 9, 89, 22, 70,171, -110, 17, 45, 76, 24, 22,208,171, 75,102, 17,250,218,147, 97,205, 6,127, 89,230,236,193,242,224, 1,240,145, 28, 5, 97, 24,128, -136, 10,103, 52,198, 94,131,216,162, 22,221,179,255, 72,193,182,109, 59,191, 9, 75,165,130,213, 74,128,128, 74,144,149,149, 21, -162, 84, 42,187, 53,104,208, 96,251,196,137, 19, 77, 71,140, 24,225,244,241,199, 31,139, 0, 32, 57, 57,153, 95,179,102, 77,194, -247,223,127,159,157,150,150, 54, 90,167,211, 61, 52,164,193, 75, 8,185,254,227,143, 63,166, 94,186,116,169, 94,203,150, 45, 21, - 77,155, 54,229, 44, 45, 45,197,114,185,156,211,106,181,234,200,200, 72,254,217,179,103, 78, 89, 89, 89, 79, 0, 68, 85,167,251, -190,200, 90,181,144, 97,152,249,148, 82,191,119, 49, 6, 75,169, 84, 58, 2,120, 74, 8,169, 83,213,238,193, 55, 42,108,177, 24, -153,153,153, 40, 72,122, 4, 69,220, 19, 52, 48, 22,193,215,210, 4,102,102,102,111, 37,134,178,179,179,129,252,120, 92,189,250, - 0, 96, 89,152,155,155,195,220,220,252, 79, 23, 88,229,105,145,127,186, 5,235, 13,212,179, 35,159, 90,202,176,102,108,175,218, - 82, 15, 55, 23,104,226,238,226, 65,108, 30,230,182,108, 30,198,200, 77,213, 99,223,239,219, 52,112, 96, 13, 4,180,110, 70, 60, - 28,205, 39, 45, 91,181,233,179,122,246,228,139, 71,201,116,173, 33, 15,126,148, 66,159,251,216,145,109, 23, 66,226,198,185, 40, - 85,224,121,138, 11, 15, 19,241,240,101,230,182,240, 20,250,188, 42, 47, 81,207,137,116, 22, 67,180,143, 82,170, 48, 55, 54,206, -109,212,176,174, 77,231, 86, 13, 69,221,219, 55,133,148, 1,174,222,126,128, 41,171, 14,221,228,121,218, 43,216,192,238,193,194, - 25,131,175, 10,167,194, 25,131,250, 87,102, 12, 82, 74,105,225, 44,194,138,135,117, 49, 12, 73, 42,136,190,227, 32,177,246,132, - 42,234, 2, 94,102,242,136, 78,201, 69,142,216, 1,154,248,120,128,242, 49, 23, 41,173,118,110,182,177,177,177,171,233,235, 85, -123,253,142,131,208, 21,100,227,249,197,237,200,203, 76,196,162, 31,126,173,237,226,226,210, 62, 46, 46,238, 82, 21, 10, 25,175, -115,199,247,216,129, 2,140, 68,142,223, 54,238, 71,154,181, 17,108,148, 82,240,170, 84,140,157, 60,194,188, 71,151, 17,230, 0, - 16,253,248, 62,220,149, 42,131,120,117,214, 8, 28,220,193,219, 2,122, 21,118,156,186,175, 22, 1,221,119, 6, 61,138,234, 80, -215, 66, 49,216,223,221,114, 97, 66,214, 0, 84,211, 25,104,177, 5,171,196,162, 87,141,217,131, 7, 40,229,124,108, 73,212,190, -235, 41,198, 3,187, 52, 81, 74,197,132,208,188,120, 80, 35, 27,108,218,113, 32, 79,166,199, 22,161,234, 20, 32,192, 48, 20, 20, - 20, 4, 19, 66,234, 79,159, 62,125,216,156, 57,115,218, 25, 27, 27,215, 4,128,252,252,252,231,122,189,254, 50,128, 61, 85,153, -237, 87, 36,152,158, 18, 66,158,191,120,241,194, 97,247,238,221,230,248,221, 31,163, 10, 64, 54, 10, 29,102, 86,123, 6, 97,177, -152, 34,132,204,127,135,162,225, 68, 17,103,157,234,220, 47, 18,137, 56, 66, 8, 8, 33,144,203,229,184,114,229, 10, 6,245,234, -130,240,223,178,224,103, 97,130,230,163,199, 98,223,153, 51, 96, 24, 6,132, 16, 48, 12, 83,165,122, 68, 44, 22,227,234,213,171, - 24, 57,116, 32,228, 98,192,220,220, 28,211,167, 79,199,209,163, 71, 33, 22, 11,171,233,253, 33, 2, 11, 4, 11,207,108, 95, 34, - 5,167,199,177,237, 43,112, 60, 52, 79,251, 56, 21,115,189, 83,177,230, 32,114,249,212, 85, 59,199,157,185, 26,186,252,195, 33, -189,149, 29, 59,116, 65,199,128, 14,226,122,205,218,207, 3,176,182, 84, 69,221,185, 34, 95, 25, 28,143,111,182,156,138, 24,187, -239, 98, 36,129, 46, 23, 67,186, 54,163, 28,143,111, 42,169,252,223,224, 52, 55, 50,217,119,245,198, 13, 75,232,242,240,242,254, -121, 69,141,154,181, 1, 78,135,167, 79,159,224,251, 29,135,249,139,183, 31,255,172,101, 49, 49, 42,131,230, 27,202, 89,168,168, - 88,152, 27,203,188,123,248,153,159,228, 65, 97,161,148,214,165, 60, 7, 11,165,164,110, 87, 31,227,147,148, 82,106,106, 36,169, - 75, 57,125,165,156, 42, 45,187,121,199,143,219, 86,142, 25, 51,198, 56, 45, 46, 9, 9, 57,161,200,147, 57, 67,175,116, 69,212, -253,203,170, 2, 13, 91,105,229, 93, 81,124,166,165,165,165, 4,223,202,192,190, 31,150, 66,175,213, 32, 37,174, 80,163, 38,164, -229,192,204,198,249, 70, 85, 56,117, 44,159, 29, 56,226, 19,169,145, 41,140, 70, 6,246,150, 69,165,107,208,216,201,180,176,176, -200, 75, 69,248,217,171, 8,200, 47,212,107,207, 98, 69,112,111,232,100, 80, 56, 77, 21,210,137, 61,154, 56,227,121, 76, 34,174, - 60,138,223,241, 44,157, 38,212,178, 38, 59,162, 18,178,198,245,109,233,134,213, 71,195, 62, 47, 79, 20,149,199,233,107, 79,134, - 1,240, 47, 28,228,174, 2, 5,252,125,237,201, 48, 67,102, 14,150,197, 41,150, 98,248,202,147,209, 95, 30,184,147,214,119,198, -240,182,102,173, 91,247,148,129,213, 34, 87,165,209,135,101,210,156,183, 73,163,183,176, 78, 10,156, 2,231, 63,146,179, 72,236, -252, 92,180,189, 75,206,248,162,237,157,189,123,233,238, 64, 74,169,184,200,122, 85,225, 32,247,202, 56, 75,119, 7, 82, 74, 79, - 20, 89,175, 42,180, 98,189,206,201,243,124, 66,211,166, 77,173,250,244,233, 3,142,227,240,228,201, 19, 68,199,198,162,243,184, -207, 97, 97, 97,129,203, 33, 33,120,252,248, 49,230,207,159, 15,189, 94,143, 35, 71,142,196, 85,198, 41, 22,139,117,181,107,215, -150,246,235,215, 15, 44,203,226,217,179,103,136,143,143,199,148, 41, 83, 96,110,110,142,224,224,224, 18,206,180,180, 52,136,197, - 98,221,159,145,151,254, 59, 2, 11,224,192,233,145,125,102, 1,214, 94,129, 78,167, 71,221, 71, 41,180,116,159,246,166, 6,214, -228, 88, 72,104,196,243,224,107, 29,101, 72,121, 88,120, 79, 21, 16,153, 70, 19,155,185,138,115,161,203, 53,195,179,147,120,145, -156,155, 23,153, 70, 19,171,250, 18,148,231, 8,116, 5, 64,226, 93, 92,191,124, 9, 23,111, 62,192,157,135, 17,220,245,224,200, -125, 34, 30,223,132,165,209, 39,213,104,117,192,164,215,106,140,122,248,212,173,153,151,189, 27, 56, 22,148,215,195,124,200, 30, -140, 14,107,237,214,172,150,133, 91,161,229, 74, 15,203,143,206, 3, 43, 21, 21,242,221,137,209,109,241,175, 41, 31,144,155,149, -222,178, 83,251, 86,198,230, 62, 61,144,246, 52, 18, 79, 30, 92, 85, 5,135, 70, 93,191, 19,163,123, 43,235,136,179,179,115,187, - 78,237,189, 49,100,236,108,232, 10,178,241,236,226,143,200,203, 72,194,149, 27, 38,136,200,201,105, 5,192, 96, 11,214,245,104, -125, 61, 0,240,247,144,198,152, 66,227,240,126,239, 62,144, 19, 53,120, 77, 14, 72, 65, 26,162,226,181,217, 3,126,136,229, 0, - 64, 41, 39, 98, 99,154,109,102, 8,175,175,187,181,167,146,209, 99,231,153, 71,224,249,194,101,150,120, 30,155,118,158,143, 26, -247,205,200,198,240,117,179,108, 72,138,156,159, 24, 92,104, 82,180,189,179,239,235,186,234,115,243, 0, 94,135,171,147,172,234, -182, 93,155,209,182,186,150,176,135,241, 52, 30,192, 56, 31, 39,178,121,210,218, 83,243,154,158, 9,243,159,246, 81, 95, 51, 80, - 97, 97,116, 1, 2, 4,252,249,200,203,203, 27, 59,122,244,232,205, 18,137,196, 22, 0,225,121, 30, 60,207,139,151, 47, 95, 46, -225, 56, 78, 36, 18,137, 56,134, 97,216, 19, 39, 78,232, 57,142, 75, 85,171,213, 99, 43,227,100, 89, 54,106,252,248,241,181, 43, -155,113,184,119,239, 94,136,197, 98, 29,203,178, 81, 66, 74,188, 75,129, 69,241,117,155,145, 11, 22, 0, 32,160,248,234, 53,113, - 5, 0, 8, 73,167, 9,245,236,200,148,122,205,218, 47, 40,190,167,170, 1, 80,115,220,192,102,245,189,246, 2,128,134,114, 35, -171,243, 18, 57, 26,213,224, 70,205, 90,237,227, 41, 21,179,148,110, 19,241,248, 69,205, 34,220,144,153,115,229, 33, 33, 37, 43, -184,120, 1,103, 30,244,247,110,193, 34,119, 12,148, 82, 90,210, 45,184, 66,129,180,108, 77,165,126,156,174, 62,215,116,105,230, - 38,253, 36,232,218,253,177, 28, 71, 29, 24,134, 36,169,180,236,230,183, 21, 87, 0, 16, 23, 23,119,201,215,142, 4,133, 52,180, -239,106,163, 44,178,106, 21, 0,105, 5, 8,138, 75,201,189, 84, 29,206,204,124,125,223, 57,107,142,254, 42,147, 48, 98, 80, 90, -232, 8,148, 82,168,117, 92, 70,177, 8,107, 96, 77,156,166, 31, 97,247, 50, 12,137,174,140,239,214,227,196,213, 67,150,157,253, -226,209,203,204,109, 47, 50,105, 40, 0,188,200,164,161,117,172,201,188,168,164,220, 47, 66,163, 51, 87, 84,117,220, 4, 37,184, -210,108,200,130, 55,142,189,109,124,134, 39,208, 7, 0,250,215,179, 35, 93,134, 76,251,126, 26, 33, 16,150,137, 16, 32,224, 63, -132, 98, 43,150, 72, 36, 90,248, 14, 57, 79, 16, 66,122, 2,120, 90,133,123,110, 1,168,255,142,223, 45, 29, 64,186,144,202,127, -145,192,122,148, 66, 55,193,128,197,156, 13,189,174,220,251, 19,232, 89, 0,214,111,243, 18, 69, 28, 86,239, 50, 98, 66,146,233, -188, 63, 34,194,139,196,212, 31, 50,150, 39, 44,133,118, 3, 0, 47, 47, 47,250,228,201, 19,188,173, 23,220,240, 84,250, 0,175, - 45,185, 80,150,200, 6,208,214, 16,190,200, 52,250, 13,240,102, 23,240,211,116,186, 8,192,162,106,189,115, 53, 61,181, 27,156, -183, 82,232, 25,160,114,111,250, 2, 4, 8,248,119,138,172, 63,128,243,132, 16,179,255,113,129, 37,224,159,139,200,200, 72, 34, -196,130, 0, 1, 2, 4,148, 11,238, 15,224, 20,156, 14, 11,120, 5, 34, 33, 10, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 45, 8, -128,206,101, 74,241, 42,204, 14, 32,132,116,174,178,212,175,132, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127, 31,103, -101,220,255,154,217,137,180,212,224,229,119,189, 1,232, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249, 95,219,132, - 46, 66, 1, 2, 4, 8, 16, 32, 64,128,128,119, 12, 65, 96, 9, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, - 8, 16, 32, 64, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 80,125,144, 42,174, - 76, 34, 64,128, 0, 1, 2, 4, 8, 16, 32,192, 16,129, 85,180,190,110,241, 58,187,130, 23,112, 1, 2, 4, 8, 16, 32, 64,192, -159, 43, 72,254,101, 90, 68, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 65, 96, 9, 2, 75,128, 0, 1, 2, 4, 8, 16, 32, 8,172, -191, 55,138, 7,185, 7, 16, 66, 40,128, 0, 33,137, 5, 8, 16, 32, 64,128, 0, 1,127, 1,254, 85, 90,164,100,144,187, 96,189, - 18, 32, 64,128, 0, 1, 2, 4,252,165,162,228, 95,164, 69,132, 89,132, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64, -128, 0, 1, 2, 4, 8,248,123,227, 15,117, 52, 74, 8,233, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192, 41, 8, 44, - 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 4,150, 0, 1, 2, 4, 8, 16, 32, 64, -128, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 47, 2, 1, 80,230, 76, 0, - 74,233, 89,131, 73,170, 49,155,160, 50,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,125,156,149,113, 87, 69,127,252, -173, 65, 41,253,195, 54, 0,157, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,107,155,208, 69, 40,192, 80, 43,165, - 61, 33,196, 94,136, 9, 1, 2, 4, 8, 16, 32,160,114,136,223, 37,153, 15, 33, 29,199, 55,176, 63,240,217,131, 36,171,202,174, -181,179,179,219,172, 84, 42, 71, 20, 20, 20,228, 19, 66,248,210, 22, 53, 0,165,221,203, 63, 75, 73, 73,105, 91, 25,159, 92, 46, - 95, 99,111,111,255, 81, 94, 94, 94, 1, 33,132, 18, 66, 64, 8, 41, 22, 7,175,252,114, 28, 23,151,150,150,214,244, 31, 45,120, - 0,198,198,222,254,182,132, 97,156,171,122, 47,199,243, 47,146,147,146, 90, 85, 65, 92, 45, 37, 4, 51,138,254,127, 71, 41,157, -253, 47, 84,144,140, 33,151,249, 1,166,145,192, 16, 78, 36,250, 92, 2,108,208,240,252, 15, 69, 25,151,171,238,163,181,183, 73, -109, 66,209,144, 16,152, 83,138,108, 74,240, 64,214,156, 70,253, 69, 66,186,165, 68, 34, 25,108,105,105,105,154,146,146,114, 14, -192,175, 0,222,179,179,179,235,148,153,153,153,171,215,235,247, 83, 74,111, 86,135,187, 93, 35, 50, 83, 38,149,124,168,214,233, -191,189,122,159,254, 24,208,132, 88,179, 60,150, 41,164,226,182, 26, 45,251,221,149, 7,116, 91, 21,195, 74, 94,179,198, 87,121, - 89,138,131, 6,166, 59, 0, 28,177,180,244,146,219,154,157,147,200,152, 23, 89,201,121, 35, 6,166,164,196, 14,124,139,116,255, - 59,194,214,214,118,148, 72, 36, 90, 76, 41, 5,199,113,115,211,211,211,183,191,163,124, 53, 12,128,113,209,110, 62,165,116, 79, - 21,238,141, 6,224, 86,180, 27, 67, 41,117,175,232,184,128, 42,167,205,166,195,135, 15,143,235,208,161, 3, 86,175, 94,141, 77, -155, 54,189, 76, 77, 77, 93, 6, 96, 7,165, 84,251,103,243, 8, 2,171, 12,248, 18, 82,127, 76,247, 86,191,141, 29,212, 93,102, -192, 71,252,191,238,221,187,143,220,177, 99,135, 36, 50, 50,210,200,195,195, 3, 34,145,168, 68, 0,149, 46, 39,107,212,168,193, - 87,198,199, 48,204,218,254,253,251,143, 62,120,240,160, 50, 56, 56, 88,233,227,227, 83,194,199,243, 60, 94, 47,119, 61, 60, 60, - 42,228, 51, 55, 55,191,203, 48,140, 75, 89,226,172,188,255, 28,199,197,165,167,167, 55, 53, 32, 19,118, 3, 48,203,128, 40, 93, - 70, 41, 61, 93,209, 5, 18,134,113, 78, 72, 72,176,171,106, 90,185,186,186,234,170,240,209,216, 19,130, 25, 60, 79, 69, 0, 32, - 18,145,153, 70, 70, 70,155, 84, 42, 85,108,241,249,162, 52, 75,174, 74, 24, 92, 92, 92,122,240, 60, 63,172,144, 83,180, 39, 46, - 46,238,100, 85,238, 55, 51, 51,187, 43,147,201, 92,196, 98, 49, 41, 43, 93, 94,223,231, 56,142,234,116,186,184,140,140,140, 42, - 11,235, 75, 0,233, 14,180, 99, 25,102,178,181,141, 77,219,224,160, 32, 99, 63, 63, 63, 17,195, 48,179, 1,252,240, 54,223,141, -246, 54,169,205,233, 49, 72,165,151,247,150,187,127,229,165,137,254, 42,210, 72,162, 57,174,189, 77, 14,252,217, 34,139, 16,210, -253,131, 15, 62, 88,242,237,183,223,218,200,100, 50,209,254,253,251, 91, 77,153, 50,229,195,213,171, 87, 59, 15, 30, 60,216, 84, -171,213,242, 51,103,206,108, 71, 8,249,154, 82,122,180, 42,220,173, 27,145,150,222, 30,142,243, 39,140,232,136, 47,150,238,157, -224, 95,159,164, 25, 25, 75, 55, 13,104, 91,219,162, 94, 77, 75,124,189,249,250, 68, 0,219,170, 16, 86, 34,145, 72, 26, 57, 56, - 56,120,104, 52, 26,174,168,209, 70, 75,149, 9, 0, 0,141, 70,163,203,204,204, 60,241,182,113,243,133, 66,209,162,133,133,201, -153, 5,195, 62, 48,202,201,204,176, 95,251,219,175, 33, 7, 97,215, 96, 32,240,242,223, 84, 33,136, 68,162,197,241,241,241,142, -148, 82, 56, 58, 58, 46, 6,176,253, 29, 81, 27, 23,151,195,132, 16,227, 42,222,235, 86,234, 94, 55, 3,142, 87, 39,239, 43,196, - 34,209,120,153, 68,210,149,227,184,250, 69,121,232,161, 86,175, 63,195,242,252, 6, 74,169,250, 95,172, 3,102,140, 27, 55,174, -203,156, 57,115, 60,102,204,152,129, 25, 51,102,212,216,186,117,235,230, 37, 75,150,204, 36,132, 52,160,148,230,253,201, 60,130, -192,122, 77, 92,185,118,107,228,117,241,243, 15, 6, 73,249,131,107, 8, 70,125, 89,161,184,106,213,180,233,135, 59,118,236, 0, - 0,140,232,219, 23, 93,155, 55,135,169,137, 49,100,178,194,224, 16, 74, 32,149, 72,209,111,202, 84, 67, 62,140,239, 2, 3, 3, -135, 31, 60,120,208, 4, 0, 54,109,218,132,192,192, 64, 88, 89, 89, 65,169, 84, 66, 42,149, 66, 34,145,188,242,107,128, 96,115, -137,143,143,183, 83, 40, 20, 37,130,143,231,249, 87,182, 82,253,208, 96, 89, 22,158,158,158,134, 70,215,172,236,236,236,118,249, -249,249, 21,246,221,214,172, 89, 19, 0, 78, 27, 66,184,120,209, 55,224,217,124,136,197, 0,203, 2, 26,157, 8,124, 25,109,121, - 39, 39, 39,140, 31, 63, 30,111,179,254,100,239,222,125, 64, 41,221,228,236,236,124, 60, 57, 57,217,143, 16,140,173,142,101,139, - 82,250,254,211,167, 79,149, 60,207,195,219,219,123, 36,128, 42, 9, 44,177, 88,236, 18, 18, 18, 98, 39,151,203,203,181, 84,150, - 18,191,208,233,116,104,220,184, 49, 91,149,103,216, 3,110, 25, 34,209,199,141,154, 52,249,100,126,223,190, 70,119,239,222,149, -139, 68, 34,176, 44,139,229,203,151,179,148, 82, 11, 95,192, 44, 12,200,169, 32,127,206, 1, 48,170,200, 42,187,141, 82,186,252, -149,243, 20, 13, 85,122,121,239,103,121,253,154,183,168, 49, 19, 97,143, 30, 54,175,101,114, 4,166, 98, 77, 20,128, 63, 85, 96, -153,155,155, 15, 92,189,122,181,237,182,109,219,114, 30, 63,126,172,251,225,135, 31,108,199,142, 29, 91, 87,167,211, 97,220,184, -113,169,222,222,222,210,213,171, 87,219, 30, 62,124,184, 27,128, 42, 9, 44, 49,193, 55, 67,251,118,133, 90, 47,130, 94,207,218, - 58,218,154,254, 60,233,131, 0, 9,165, 90,236, 60, 26, 12, 61,203,255, 88, 69,203, 85,163, 1, 3, 6,184,239,217,179, 71, 28, - 30, 30, 46,246,241,241, 1,199,113, 37, 27,207,243,224, 56, 14, 94, 94, 94,111, 29, 47, 31, 2, 94, 54,246, 86,103, 90,245,236, - 97,228,168,144,195, 42, 51, 21, 99,164, 98,211,237, 74,205, 46, 0,173,255, 77, 21, 2,165, 20, 98,177, 24,177,177,177,176,179, -179, 51,178,178,178, 74, 4,240, 85, 70, 70,198,150, 63, 72,212, 87,219,178,245, 14,195,208, 92, 38, 22,255,178,243,199,181, 14, - 45, 90,183,102,236, 29,237, 16,249, 36, 6, 98,194,117, 14,185, 19, 28,240,225,167,211, 38, 17, 66, 6, 80, 74,111,255,219, 4, -128, 99,155,207,250, 59,250,127,190,137, 80, 30, 95,175,255, 53,119,233,119,107,148,227, 62,254,128,153, 50,101, 10, 92, 93, 93, - 61,250,247,239,255, 29,128, 79, 43,229,105,249, 89,127,135,214, 19, 54,129, 82, 44,248,254,215,220, 37,223,173, 81,126, 90, 13, - 30, 65, 96,189, 6, 63, 66, 44, 26,184,219, 95, 90, 52, 99,172, 9, 61,249,147,168, 32, 61, 5,229, 73, 24, 59, 59,187,205, 61, -122,244, 24,177,125,251,239,141,162, 86,126,126,232,223,209, 31,118,214,230, 80, 26,203, 10,171, 33,158,224,193,227, 23, 6, 9, - 1, 87, 87,215,113,191,252,242,139, 73,105, 17, 33,149, 74, 75,182,210,226,170,120,123,221,210, 81, 22, 20, 10, 5,206,158, 61, - 11,177, 88, 12,134, 97, 32, 22,139, 75,182,210,251, 12,195,192,222,190, 74, 67,147,150,153,155,155, 55,200,205,205, 53,203,202, -202,130,155,155, 91, 14,128,144, 82,231, 27,164,166,166,154, 85,133,144,103,243, 49,101,140, 15, 36,218,155,208, 74,154, 67, 37, -110,131,235,119,194,113,252,244, 37,196, 39, 36,193,191,101, 35,188, 63,108, 32,206,156, 57, 3,142,227,170, 90,224, 38, 19, 66, -190,123,239,189, 62, 51, 1,130,128,128,128,228, 73,147, 38,209,208,208,208,254,131, 6, 13,236,244,228,201, 83, 82,100,217,154, - 65, 8, 89,107,168, 37,139, 82, 42, 5,128,203,151, 47,131, 82, 42,171, 78,222,147,203,229,184,113,227, 6,138,187,131, 69, 34, - 17, 68, 34, 17, 24,134,193,177,167, 54,200,215,138, 80,144, 28,138,207,123,187,161,102,205,154, 16,137, 42, 31,114, 24, 0, 40, -174, 3,253,137, 68, 50,197,209,201,201,163,125,173, 90,202,179,103,207, 50, 0,224,238,238, 78, 19, 19, 19,179,142, 28, 57,146, - 43, 6, 54,185, 83,186,163, 34,113,229,230,230,214, 70, 36, 18, 45, 46,142,115, 66,200,119, 30, 30, 30,243, 75,210,141,231, 49, -172,139,149,100,210,164,201,210, 22, 1,133,141,146, 22,125,246, 32,231,217, 82, 31,146, 49,199,252,207, 46, 12,178,179,179,127, -246,242,242, 98, 82, 83, 83,207, 3,120,174,215,235,215,255,252,243,207,118, 99,198,140, 73,217,181,107,215, 4, 0,174,203,151, - 47,239,150,151,151,183,175, 42,188,109, 27,146,158, 77, 27,249,181,116,115,117,197,165,235,183, 33,149, 73, 44,198,143,234, 13, - 19, 19, 49, 86,108,251,141,143,142,203,152,112,229, 1,221, 81, 5,113,213, 96,224,192,129,174,123,246,236,145, 2, 64,104,104, - 40, 82, 82, 82, 96,109,109, 13,133, 66, 81,242,205, 23, 91,177,222, 86, 92,153,187, 90,223, 58,114,228,168,145,149,149, 5,214, - 79,157,132,247, 19,226, 96,198,136,160,215,195,227,223, 84, 25, 16, 66,188, 6, 12, 24,160,224, 56, 14,249,249,249,184,120,241, -162,185,145,145,145,185,139,139,203, 2, 0, 6, 11, 44, 35, 35,163,100,181, 90,109, 87, 84,142,166,168, 84, 42,123, 0, 5, 10, -133,194,168,232, 18, 85, 21, 45, 91, 49,165, 44, 84, 49, 6, 28,175,202, 59, 55,107,222,172,193,217, 67, 7,119,155,100,231, 38, -193,194, 50, 5, 34,100, 99,203,150, 13, 48, 50, 50,195,130, 5,115,196, 47, 58,119,116,238,214,115,192, 89, 66, 72,231,127,157, -200,162,100, 75,231, 62, 35,172,140,148,166, 69,117,137, 30,219,183, 78,130, 72, 36,194,252,249,243, 81,175, 94,189, 79, 8, 33, - 95, 82, 74, 51, 42,166,193,150,250,237, 6, 91,201, 20,133, 85, 49,207,233,241,195,222, 47, 10,121,102,143,197,208, 62, 53, 63, -121,176,139,156,170, 87, 11,185,133,229, 63, 84, 18, 17, 98,208,156,166,148, 74,139,246,148,210, 75,229,237,255, 35, 5, 22, 33, -132, 82, 74, 75,119,179,188,178, 95, 17,106, 16, 34,247,180, 52, 57,189,241,171, 73, 78,204,141,223,196,170,152,167, 72, 80,115, -176,248,189, 18,125,101,170,165, 82,169, 28,177,125,251,246, 87,244,151,155,189, 29,164, 82, 9, 36, 82, 2,139,182,189, 1, 0, - 89, 87,142,131, 16, 90, 94,197,252, 10,103,126,126,190,250,254,253,251, 38,219,182,109,131,157,157, 29, 60, 60, 60,160, 84, 42, - 75, 10,218,210, 91,177,208,122, 93, 96,189,206, 89,124, 94, 44, 22, 67, 36, 18,225,204,153, 51, 96, 89, 22, 3, 7, 14,124, 67, - 92,137,197,226, 50, 5, 91,121,211, 76, 41,165,167, 9, 33, 33,148,210,118, 69, 21,111, 8,165,180,125,169,103,119,179,181,181, -157, 5, 96,153,161,156, 12, 67,193,168,175,131,119, 89, 3,113,236, 36,104, 37, 13,113,225,106, 48,182,111, 94, 13, 0,240,168, -219, 12,131,250,247, 46,177,190, 25,194,249, 74,235,196,209,113, 71, 74, 74,106,227, 14, 29, 58, 32, 59, 59, 91,187, 96,193, 2, - 52,104,208, 0, 94, 94,222, 6,165, 81, 57, 5, 91,218,131, 7, 15, 28,213,106, 53, 8, 33,105, 6, 8,178,179,101,112,224,231, -159,127,134, 90,253,166,245,222,178,253, 18,124, 17,232,142,209,159,239,192,119,143,247, 99,227,198,141, 21,190,187, 18,104,160, - 54,175,179, 86,198,176, 13,190,157, 59, 65, 62,114,228, 72,102,244,232,209,136,137,137,193,152, 49, 99,212,103,206,156,209, 38, - 37, 38, 30,149,241,252,122,221,171,130,184, 92, 78,185, 92,190,243,244,233,211,216,191,127, 63, 0, 32, 50, 50, 18,158,158,158, -175, 84, 34,124,198, 1,228, 70,175,199,173, 99, 17,104,209,103, 15,110, 29, 27, 6, 46,235, 55, 73, 83, 79,100, 87, 37, 62,171, - 97,169, 56, 91,198,177,139, 0, 46,150,138,223, 47,119,237,218, 53, 8,192, 33, 74,233,117, 0,215, 1,236,173, 10,103, 33, 17, - 70, 15, 14,236, 7,177,212, 20, 17, 79,227,208,190, 85, 99,216,219,217, 33, 36, 60, 10,209,241, 25,201,132, 96, 84,247, 54,242, -101, 42,149,246,203,203,247,233,255, 42,227,116,117,117,173,121,224,192, 1, 73, 41,139, 51, 24,134,121,165, 65, 85,124,172,186, -249,179, 88, 92,153,186,152,220,250,102, 67, 27,227, 91, 15,119,193,211,189, 39,204,186,245,196,170,189,123, 16,151,150,173,102, - 11,216, 78,127,118, 26,253, 81,156,132, 16,175,192,192,192,235,187,119,239,182,136,141,141,197,229,203,151,225,225,225,129,130, -130,130, 74, 27,186,175,115,170,213,106,187, 82,162,169,120, 8,195, 94,141, 70, 83, 92, 80,210,170,132,179,188,177, 85, 85, 29, -115, 85, 70, 57, 47, 83, 72,165, 7,142, 28,218,107, 18, 22,113, 25,141, 26,182,132,137,185, 47,120, 46, 9,233, 25,121,200,124, -154,128, 69,139,190,195,130,175,230,226,215,195, 7, 77,188,125, 26,254, 66, 8,169, 83,186,187,240,159,158,238, 32,244,147,179, -199,118,109, 34,148,135, 42, 57, 66, 46,201,127,174, 28, 49,108, 0, 51,100,200, 16,252,250,235,175,120,244,232,209,166,242,196, - 85,105, 78, 66,241, 73,232,229,253,155, 64, 41, 84, 41, 17,114,169,234,185,242,131,225,131,152,247,135,118,197,205,243,107,209, -181,209,243, 80, 39, 59,244,207, 44,234, 36, 20, 51, 72,151, 43,112,205,232, 54,185, 89, 74,100, 93, 44,106, 67, 21, 11,171,139, - 40,116, 37,245,207,183, 96, 85, 69, 88, 21, 93,207, 52,145,137, 15,253,184,224, 51, 63,197,203, 80,169, 38,244, 6, 18, 52, 60, -221, 22,195,102,174, 41,231,158,130,130,130,252,168,168, 40,163, 81,253,251,163,181,159, 31, 28,173,173, 81,199,197, 5, 70,114, - 25,100, 82, 73,169,242,184, 74, 45, 16,234,237,237,141, 62,125,250, 64, 34,145, 64,169, 84,194,196,196, 4, 50,153,172, 76,235, -149, 68, 34, 49,216, 84,206, 48, 12, 66, 67, 67, 17, 29, 29, 13, 11, 11, 11, 92,187,118, 13,157, 58,117,122,195,138, 85, 90,148, - 85,197, 20,255,122,133, 95, 44,192, 96, 96,215, 96, 49, 56,142, 32,143, 54,132,226,229, 4, 20,144,198,208,104, 88,104, 52, 26, -252,239,170, 14,183,163,242,161,211,105,161,209,104,202,125,102, 69,214, 2, 7, 7,135,254,117,235,214, 29, 49,108,216, 48,173, - 68, 34, 65, 65, 65, 1, 10, 10, 10, 16, 30, 30,174,237,218,181,107,242,123,239,245,177, 63,126,252, 56,165, 20,223, 85,101, 28, - 22,165, 52,211,201,201,201, 81,161, 80,128, 82,154, 89,205,214,103,137,120,121, 29,163, 86,133, 65,204, 20,166,201,166, 77,155, -192,113, 28, 42,202,223,106, 66,206,125,181,100,165,249,183,107,126,132,185,149, 61, 46, 93,186,196,157, 58,117, 42,151, 0,145, - 79, 30, 61, 90,245, 30,112,226, 0,160,171, 74,248, 50, 51, 51,141, 60, 60, 60,224,226,226, 2,158,231,161,215,235, 17, 18, 18, -130,164,164, 36,164,167,167, 67,165, 82,193,202, 56, 11,181,173, 93,192,230, 94, 68, 98,232,215,112, 52,137,192,142,211, 90,125, - 19, 47, 60,248,203, 27,183,148,158, 0,112,226,237,137,224,108,231,224, 10, 17,213, 35, 33, 37, 29,253,122,117, 5, 35, 53,193, -139,216, 52, 52,244,173,229, 56,252,189, 54,142, 12, 97, 49, 99,217,158,241, 0,254, 87, 25, 93, 65, 65, 1, 23, 30, 30, 46,121, -240,224, 1, 24,134,129,153,153, 89,201,112,128,210,226,202,144,225, 0,149,137,171, 37,155, 58, 25,139, 36,249,200,225,206,226, -135,159,110,194,211,173, 19,182, 71, 60, 81,139,179,242, 58,175, 80,171, 35,255,209,221, 67,142,142, 99,121,158, 95, 64, 41,205, - 10, 12, 12,180,223,179,103,143,101,124,124, 60,130,131,131, 49,127,254,252, 84,142,227, 88, 74, 41,161,148,126,253, 14,242, 18, - 95,218,178,101,100,100, 84,108,217,202, 47,101,185,202,175, 70, 25, 32, 81, 42,240,185,141, 25,233, 43, 22,153,121,176, 57,121, - 47,210,180,244,104, 1,203,127, 79, 41,213, 87,116,175, 72, 36,250,232,224,190, 77, 78, 54,182, 60, 2,108, 59, 34, 49, 89,135, - 37, 83, 63, 64,122,122, 46,254,183,117, 41, 0, 25,116, 44,131,118, 1, 3, 96,103,231,140, 79, 62,254,196, 97,211,230, 31, 62, - 3,176,226,223, 98,192, 74,188,182,225, 48, 33,228,172,173,173,237,163,207, 62,249,196,214,195, 99, 36, 20, 10, 5,246,238,221, -139, 61,235,215,115,107,128, 65,155, 9,185, 48,150,210,195, 21,242,220,252,157,103,210,184,113,182, 62, 62,227, 32,151,203,113, -254,212, 79, 80, 39,253,156,219,171, 53,116, 5,106,244,170,209,135, 90,189, 60, 70, 50, 36, 18, 60, 5, 0,137, 2,137, 18, 32, -229, 53,186,127,188,176,122, 67, 96, 85, 21,181,164,202,235, 91,167, 14,110,108,203,171,196,218,171,199, 16,175,225,217,229, 79, -117,186,187, 89,116, 68, 5, 25,154,119,115,115, 67,199,166, 77,209,191,109, 91,136,197, 98, 40,100, 82,152, 42,140, 64,185, 66, -203, 85,113, 23,161,161, 90,175, 88,216, 88, 91, 91, 67, 42,149,150, 8, 43, 67,173, 87,229,113,242, 60, 15,177, 88,140,144,144, - 16,248,251,251,195,213,213, 21,251,247,239, 71,183,110,221,222,232, 50,172,170,184, 42, 22, 88,165,187,235, 74, 13,126,175,116, -112,251, 27,226, 64, 75,144,166,109, 8, 66,252,192,178, 0, 71, 1,141, 90, 13, 74, 1, 74, 1,189, 78, 11,181, 90, 93,242, 76, - 67,186, 94, 93, 92, 92,156, 60, 60, 60,166,206,154, 53,163, 78,131, 6,141,144,150,150, 6,158,231, 97, 98, 98,130,130,130, 2, -152,153,153,161,117,235,214,247, 22, 47, 94,156, 65, 41,102, 85,117,144,251, 59,232,206, 0, 0, 4, 5, 5,189,210, 61, 88,188, -229, 39,198, 97,244,196, 93,144,137,129,144,144, 16,212,173, 91,183, 50,113, 41,234,208,174, 13,174,223,139,100,199, 76, 95,163, -145,164, 7, 47,115,224,249,237,113, 64,242, 91, 84, 42, 72, 75, 75, 67,114,114, 50,250,246,235,135, 61,187,119,227,229,203,151, -240,245,245, 69,135, 14, 29, 96,103,103,135,151, 47, 95,226,246, 21, 13, 52,153, 25,200,208, 6, 67,105,218, 2, 71, 46, 69,105, -230,109,212, 70,253, 85,133, 2, 33,164, 25,128, 49,230,230,230, 53, 10, 10, 10,146,244,122,253,254, 34,209,223, 77, 34,145, 12, - 86, 42,149, 14,217,217,217, 47, 1,252,143, 82,122,167,210, 46, 35,133,194, 90,174, 48, 3,207,106, 32, 22,139,225,234,234, 1, -202,105,145,153,163,194,168, 33,125,112, 47, 36, 28,167, 46,220,100,245,122,126,157,161, 97,244,242,242, 66,122,122, 58, 24,134, -129, 82,169,132,177,177, 49,188,189,189, 17, 27, 27, 91, 34,174,170,219, 69,248, 33,224,101,230,102,114,115,241,134, 66,113,149, -148,144,136,248,151, 20,114,153, 12,155,183,108,202, 47, 72,202,108,241, 35, 16,249, 79, 47,252,121,158,255, 58, 62, 62,222, 78, - 44, 22, 59,176, 44,139,216,216, 88,220,189,123, 23, 19, 38, 76, 72, 78, 79, 79, 15,160,148, 86,235, 29, 21, 10, 69, 74,177,229, - 74,161, 80,164, 84,100,217,122,155, 49, 87,132,144, 90, 30, 46,166,103,182,174,158,226,214,172, 69,107,145, 82,108,150,153,247, - 52,201,255,234,229, 75,173, 39,172,254,223,103,132,144,174,148,210,103,229,221, 47,151, 72,122,180,108,211, 70, 12,154, 12,177, -204, 31,223,125, 59, 4,169,105, 57,200,204,200,133, 84,106, 12,173,158, 1,199, 19,180,246,111,139,159,118,236, 67,189,143,199, - 48, 50,137,164,203,191, 73, 96, 21, 97,233,247,223,127,239,230,237,237,141,237,219,183,227,194,206,157,120, 63, 59, 27,151, 68, - 34, 70, 47,145,216,156,208,235,183, 0, 56,108, 40, 79,189,122,245,240,227,143, 63,226,231,159,127,142, 25,209, 41,229,151, 41, - 35, 96,167,211,161,123,240, 99, 88,213,232, 3, 4, 63,134, 85, 19,111,212, 97,197,120, 74, 8,140, 94, 75,211,246,165,127,255, - 13, 2, 43,128, 20,246,199,149,252, 86,118,147,177,189,247,176,221, 35,187, 52,245,173,233, 34,210,239, 95,139,248, 2, 86, 61, -255,177,142,127,156, 75, 7,132, 85, 32, 14, 68, 34, 17,101, 24, 6,166, 70, 70,176,181,176, 40,108,105,138, 68, 0, 15,240,122, -128,112,133, 31, 31,229, 9,170, 50,249,153,231,121,200,100,178, 50, 7,180, 87,117,236, 85,105,206,220,220, 92,188,120,241, 2, -159,124,242, 9,148, 74, 37, 0, 32, 41, 41, 9,238,238,238, 16,139,197,136,143,143,199,249,243,231, 81,179,102, 77,200,229,242, - 42,169,172, 82,214,164, 6,132,144, 75, 0, 26, 36, 38, 38,154, 57, 58, 58,162,202, 22, 44,158,162, 64, 67,160,213,114,120,242, -228, 9, 18, 18, 18,240,226,249, 83, 52,203,207, 1, 5, 3, 74,105,149, 44, 88,142,142,142,222,158,158,158,139,151, 46, 93, 42, -113,117,117, 5,207,243,176,178,178, 64,126,190, 10,233,233,233,240,245,245,133,171,171, 43,190,251,238, 59,160,176,251, 40,249, -175,202,192,197,179, 69, 75,255,138, 68, 34, 76,124,207, 13, 25, 25, 38, 96,152,223,103,147, 86, 50, 6, 75, 10, 0, 1, 93, 3, -197,103, 78,157, 48,102,129,133, 73, 12,179, 80, 92,121, 58,234, 57,158, 87,150,119, 62, 54, 54, 22, 18,137, 4, 7, 15, 28, 64, - 70,114, 50, 26, 54,108,136,230,205,155,227,233,211,167,184,119,239, 30,172,173,173, 97,235,210, 10,151,158,235, 16,150,160,130, -185,185, 57,162,226, 68,127,217,212,127, 66, 72,239,206,157, 59,175, 95,181,106,149,131,131,131,131, 36, 53, 53,149,221,176, 97, - 67,183, 13, 27, 54,132,125,246,217,103,190,159,125,246,153,165,173,173,173, 56, 41, 41, 73, 63,117,234,212,110,132,144, 89,148, -210,189, 21,150, 23,198,166, 86,140,212, 24,132,136, 97, 97,110, 9,177,204, 24, 60, 43, 6,199, 3,102,230,182,184,126,239, 32, -174, 61,204, 29,155,146,142, 3, 6,124, 55,212,218,218,154, 50, 12, 3,107,107,235, 87,186, 6, 1,192,222,222, 30, 57, 57, 57, - 96, 24, 6, 18,137,164,202, 34,171, 88, 92, 45,217,208,201,132,148, 18, 87,121,105,214,184,112, 58, 60,171, 32, 41,211,255,223, - 32,174,138,203, 56, 74, 41,158, 63,127,142,130,130, 2, 92,185,114, 5, 95,127,253,117,234,235,226,202,222,222,254, 99, 51, 51, -179,175,242,242,242,190, 75, 76, 76, 92, 91, 25,111,145,101,234, 93,230,201,104,188,230,142,129, 16, 34,113,117, 84,156,190,119, -101,151,187, 57,125, 64, 16,253, 9,240, 36,231,145,233, 45,187,118, 61,155,245, 18, 53,222,248, 77,141,230, 99,103,159, 38,132, -120,151,103,201,226, 57,174,177,177,137, 41,128, 20, 4,223,189, 88, 34,174,210, 51,178,161,209, 49,208,104, 9,212, 58, 17, 58, -118,238,142,245, 63,252,140,248,148, 12, 20,207, 48,252,183,128, 16, 98,229,231,231, 55,110,208,160, 65, 88,184,112, 33,206,174, - 90,165,253,148,144, 28, 49, 64,127,227, 56,240,148, 18,145, 1,131,211, 95,231, 89,177, 98,197, 97, 0, 67,151, 77, 64,171,204, - 60,140,114,234, 67,173,106,244, 41,188,118,224, 76, 10, 0, 86,169,103,223, 24,170, 67,138,123,210,170,218,163,246,183, 21, 88, -148,210, 75,132, 16,148,254,173,232, 6, 11, 7,239,246, 95,206,156,180,166, 77,223,206,162,164, 79,253,145,149,163,209,206, 12, -215,139,226, 10,104,255, 48, 3, 45, 47,211, 55,108,192,189,200,194,239,215,197,206, 14, 51,134, 15, 7,101,129,107,143,194,176, -239,236, 89, 12,233,220, 25,198, 69, 51,248, 12,181, 54,149,101,181, 42,109,189,170,170,149, 41, 43, 43, 11, 7, 14, 28, 64,243, -230,205,161, 84, 42, 33, 22,139,209,160, 65, 3,132,135,135,163, 86,173, 90, 32,132,224,200,145, 35,232,223,191, 63,158, 61,123, -134, 86,173, 90,153, 84, 71, 96,133,133,133,153, 81, 74,219, 21, 91, 59,170, 11,141, 70,131,136,136, 8,244,233,211, 7,150,150, -150,112,118,222,131,179,167,119, 65,233,247, 62, 8, 65,149, 4, 22, 33,100, 96,175, 94,189, 36, 34,145, 8, 42, 85, 1,228,114, - 5, 76, 76,204, 96,106,106, 14, 47, 47, 47, 36, 36, 36,160, 91,183,110,186, 39, 79,158,252,156,152,152,248, 91, 85,195,106,111, -111,175,204,205,205,157,228,225,225,161, 40,106,229,118,180,177,177, 89,146,150,150,150, 87,197,194,161, 68, 88, 17, 66,192, 48, - 76,137,192, 18,139, 68,112,116,176, 43,217, 47, 26,127, 70, 42,224,202,137, 79,215,200, 1,192,205,205, 13,235, 55,255, 42,234, -213,171, 23, 38, 77,154, 4,189, 94,143,141, 27, 55, 2, 0,134, 13, 27, 6,157, 78,135, 95,126,249,165,240, 3, 18,139, 43,236, -115,190,123,247, 46,130,131,131,161,215,235,145,157,157,141,147, 39, 79,226,210,229,203,216,123,228, 28, 94, 62,127,138, 6,222, -238, 24, 51,230, 67, 72, 36, 18,236,216,177, 3,254,254,254,127,105,129, 32,149, 74, 63,216,186,117,171,243,246,237,219,179,142, - 30, 61,154,221,162, 69, 11,227, 53,107,214,216,173, 95,191,190,131, 86,171,197,228,201,147, 83,110,221,186,149,223,183,111, 95, -243, 45, 91,182, 56,215,169, 83,231, 61,148, 49, 46,171,168,219,103, 8,128,145, 1,205,205,197, 89,185, 42,240,172, 22,207, 95, -190, 64,118,158, 22, 60,167, 67, 76, 92, 2,242,212, 28,210, 51,114,209,160,113,215,239, 47, 94,188, 56,151, 16, 50,135, 82,122, -188,210, 70, 5,199,225,230,205,155,184,118,237, 26, 46, 95,190,140,232,232,232,146,115,102,102,102, 56,115,230, 12, 58,116,232, -240, 78,196, 85,110,106,161,184,202,138,201,248,215,136,171,162, 50,104,129,163,163,227, 2, 71, 71, 71, 69, 80, 80,144,121,141, - 26, 53,192,178,172,246,117,203, 85, 64, 64,192,151, 91,183,110,117,172, 85,171,214, 4, 0,107,171,251,188,242, 44, 91, 6,224, - 13,119, 12, 34, 17, 62,254,110,211, 56, 27, 83, 89, 76, 2,158,172, 44,242, 5,200, 0, 5, 57,192,197,221, 16,183,153,247, 98, - 66,191,153,150,179,182, 47,252, 24,192,198,242,136,163,158,197, 98,211,166,245,152, 50,121, 20,126,250,223,119,224,121, 49, 52, -122, 6,110, 30, 45,161,209,241, 32, 34, 49, 26, 54,110,138, 11, 23,175, 64, 34, 2, 14,108,223,244,175, 50, 93, 81, 74, 51, 8, - 33, 27,143, 28, 57,242,249,164, 73,147,192,243,188,236,171, 77,155, 84,169,169,169, 75, 81, 5,255, 85,101,240,244,223,180,105, - 83,228,172,245,169,135,167,140, 0,243,242, 24,201, 8,126, 12,171,129, 51, 41, 14,126, 75,208,196, 27, 25,202,178,171,248,203, -175,253,254,227, 45, 88, 37, 99, 83, 42, 82,140, 77,188,106,125, 99,110,101,249, 97,235,102, 62,214, 83, 39,124, 44,121,150,164, -198,233,166, 83,179,127, 93, 61,207, 36,134, 55,158, 28, 77,115,170,100,117,217,119,254,124,201,255,229,123,246,148,121, 46,113, -224, 64,131, 91, 98,229, 89,173,170,106,185, 2, 0,165, 82,105,209,165, 75, 23,116,234,212, 9, 3, 6, 12, 40, 25,115,213,168, - 81, 35,236,221,187, 23,129,129,129,184,127,255, 62, 28, 29, 29, 81,183,110, 93,212,173, 91, 23, 39, 78,156,168,106,198, 6,199, -113,240,243,243, 43,158, 69,216, 32, 46, 46,206,172,186, 9,169,209,104,144,158,158, 14, 43, 43, 43,200,100, 50,180,104,209, 28, -159, 79,108, 1, 27,199, 31,225,231,227,141,252,252,252,146,169,235,149, 65, 34,145,120,213,169, 83, 7,169,169,169, 72, 77, 77, -133,173,173, 45,156,156,156, 96,111,111,143,213,171, 87,211, 53,107,214, 92,226, 56,238,231,164,164,164, 42, 43, 66, 23, 23,151, -102, 54, 54, 54,159,167,164,164, 40, 74, 21,154,138,134, 13, 27,110,118,114,114,218,152,144,144,112,173, 42, 2, 75,167,211,129, - 16,130,223,158, 59, 33, 95, 75,144, 19, 23,140, 73,239,185,191, 34,184, 36, 18,137, 33, 3,117,243,135, 14, 29,106,231,234,234, -130,216,168, 71, 56,120,144, 98,213,170, 85,184,124,185,240, 59,143, 44,106, 16, 20,239,119,232,208, 1, 30, 30, 30, 85,114,110, -201,243, 60, 66, 66, 66,176,231,232, 37, 56,186,251, 32,230, 73, 4,238,157, 56,134, 26,182, 86,168,215,184, 41,244,122,253, 91, -185,208,120, 23,208,233,116, 91, 60, 61, 61,161,213,106,207, 1,216, 26, 18, 18,210, 63, 49, 49,113,245,175,191,254,234, 52,104, -208,160,132, 99,199,142, 77, 1,112, 56, 36, 36,100,244,226,197,139, 59,233, 11,187, 15,222, 0,195, 48, 63, 77,157, 58, 53, 96, -208,160, 65, 68, 42,210,107,131, 78,239, 16,179,172,158, 76,159,179,141,187,120,245,146,136,101,245,100,192,208,169,252,137,243, - 15, 69, 99, 39, 46,231, 26,181,236,133,208,208, 80,135,222,189,123, 47, 2, 80,161,192, 98, 24, 6, 28,199, 65, 34,145,148, 8, -232,178,174,169,138,245,106, 12, 80,203,204,221,228,230,146, 13,157, 77,136, 56,239, 95, 47,174, 0, 32, 45, 45,109, 51,128,205, - 86, 86, 86,201,198,198,198,200,205,205,125, 35,255, 17, 66, 20,222,222,222, 10,153, 76,134,174, 93,187, 90, 57, 58, 58, 70,138, - 68,162,181,241,241,241, 85, 86, 26,101, 89,182,170,235,166,193,210, 22,189, 91,180,109,108,250,216,124,161,169, 66,172,190, 95, - 35, 82, 97, 70, 0,100,107,236,159, 95,143, 30,146, 67, 82,228,141,154,118,104, 2, 51,177,113,239,242, 4,150,136, 97,238,101, -103,102,245,200,201,213,226,234,181, 80, 12, 29, 82, 7, 26, 29, 1,207,139,144,151,175, 1, 24, 9, 68, 0,134, 13,255, 0,148, -136,145,145,156, 0,134, 97, 30,226,223,135,217,227,198,141,235, 49,103,206,156,154, 69,254,171,220,139,252, 87,205, 32,132,212, -167,148, 22, 84,147,167,198,177,189,243,166, 29,189,242, 67,118,175,214,170, 39, 77, 10,231, 68, 89, 53,241, 70,134, 68,130,167, - 98, 6,233,148,190, 50,163, 20,197, 19,190, 74, 79,252,250,199, 11,172,202,224, 89,203,165,123,251,102, 77, 39,206,157, 51,215, -244,201,237,203,152,187,232,123,190, 78,211,110,217, 43, 15,159,202,205, 54,171,209,177, 32, 33,226,190,161,186, 2, 0,186,117, - 8, 68, 3,223,230,111,156,244,239, 80,232, 3,242,234,133,187, 72, 78,141, 55,184,146, 45, 18, 5,101,142,185, 50,100,106,126, - 25, 5, 65, 86,104,104,168, 93, 92, 92,220, 43, 3,218, 61, 60, 60, 64, 8,193,173, 91,183,112,243,230, 77, 12, 29, 58, 20, 98, -177, 24, 18,137, 4,151, 46, 93,202,173,142, 5, 11, 69,179, 8, 9, 33,221, 92, 92, 92,202,156, 61,104, 8,151, 74,165, 66,118, -118, 54, 78,159, 62,141, 58,117,234, 96,201,146, 37,112,114,180,199,220,185,211,192,243, 60,114,114,114, 74,252, 3, 25, 96, 29, -160,197,214, 33,158,231,145,154,154,138,154, 53,107, 98,195,134, 13, 88,189,122,245,247, 9, 9, 9, 85,158,229, 98,105,105,105, -166, 80, 40,198,246,238,221,219,191, 95,191,126,232,214,173,219, 43,231,119,237,218,101,114,248,240,225,153,174,174,174,237,121, -158,223, 20, 31, 31,159, 97, 8,239,143, 63, 22,186, 79, 82,182, 92,128, 89,131,106, 96,228,248, 29, 88,185,242, 16,228,114,249, - 43,149,237,194,133, 11, 43, 20, 47, 60,165,158,210,180,235, 9,211,102,174,176, 91,186,244, 44,206,158, 77,129, 72, 36,130,163, -163, 35, 68, 34, 17, 94,188,120, 1,145, 72, 4,119,119,119,136, 68, 34,196,199,199, 23,143,249,203,132,218, 48, 31,132, 34,145, - 8,106,181, 26,177, 49, 47, 17, 23, 21, 9,147,156, 36,216,154, 41,145,249, 40, 4, 13,198,124, 12,189, 94,255,119,104,209,158, - 1,112,166,212,161,131,132, 16, 61, 33,100, 56,128,125,148,210, 67, 69,199,183,161, 2,199,160, 45, 91,182,108, 52,103,206, 28, - 73,177,219, 12, 39,183,197,172, 78,167,227, 1,192,187, 65,187, 87, 84,254,211,167, 79,177,114,229, 74,228,231,231, 67, 90,133, -145,233,157, 59,119, 46, 25, 19, 41,149, 74, 97, 99, 99, 3,157, 78, 7,150,101,171,220, 53,104,237,238,242,253,173,224, 75,220, -131,168, 31, 84, 15, 31,159, 52,138,123,193, 35, 47,205,230, 95, 43,174, 94,183,100,185,184,184, 44,224,121,158, 82, 74,231,149, - 42, 91,229,110,110,110, 87,130,130,130,172, 89,150,197,186,117,235, 44,146,146,146, 44,218,181,107, 55, 11, 64,185, 2,171, 28, - 55, 13,229,161, 90,110, 26, 56, 14, 94,102,166, 22,200, 68, 28, 52, 54,250, 70, 89,214,108,198,153,196,143,239, 59, 69, 55,246, - 53,230,244, 53, 69, 57, 90, 56, 43, 45,192, 83, 90,174, 35, 52,141, 94,127,242,126,240,189,174,110,174,117,152, 95,143, 95, 70, -223,254,131,160,209,136,160,214, 19, 16, 70, 2,194, 72, 81,191, 65, 99,212,173,215, 0, 20,192,221,219,215, 89,173, 94,127,230, -223,148,246, 78,254, 19,135, 58,249,127,190, 22,148,167,101,248,193,170,217,191,127,255,165, 0, 38, 86,218, 43,209,106,226, 80, -135,214,133, 60,165,253, 96, 77,253,124, 28, 30,221,150,152, 95, 14,254, 86,218,173, 37,126, 75, 61, 75,160, 84,252, 62,139, 80, - 34,170,158,123,141,127,141,192,114,115,115,179,176, 51, 81,254,248,217,152, 15, 77,163, 31,220, 64, 92,200, 13, 92,187, 26,153, -185,251,151,163,241, 57,217,169, 99,170, 32,174, 74,186,243,108, 28,107,160,102, 25, 2,203,200,212, 22, 0, 80,211,183, 57,196, - 49,230, 85,122,145,178,172, 87,213, 17, 87,165, 43,229,178,124, 96,141, 29, 59, 22, 91,183,110, 69,155, 54,109,224,233,233, 89, -210, 82,174,170,149,236,117,107, 82,117,102, 15,150, 70,110,110, 46,220,221,221,177,101,203, 22, 60,124,248, 16,166,166,166, 24, - 58,116, 40,114,115,115, 75,132,149,161,131,220, 57,142,123, 25, 20, 20, 84,127,240,224,193, 84, 44, 22,147,172,172, 44,152,155, -155, 99,195,134, 13, 5,137,137,137, 23,170, 26, 54,103,103,231, 94, 86, 86, 86, 31, 13, 25, 50,132,241,246,246, 70,114,114, 50, -204,204, 76,181,132, 16, 25, 0,152,155,155,107,141,141,141,241,201, 39,159,160,126,253,250,205,103,206,156,217,204,193,193, 97, -103, 82, 82,210, 47, 21,229, 37, 66, 8,246,238, 45,236,157, 26,179, 54, 2, 90,109,161, 64,217,184,113, 35,138,198,178,253,222, - 21, 16, 21, 5, 24, 48, 51,197,196,196, 4,158,158,158,101,166,125,219,182,109,113,247,238,221,194, 46, 72,177, 24,118,118,118, -184,118,237,154, 65,211, 50,139, 29, 56,134,134,134,194,199,195, 6, 15,207, 6,193, 70, 41, 65, 67, 39, 7,184,180,109,143,200, -200,200,191,212,122, 69, 8,233, 11,160, 55,128, 19,148,210,195,132,144,129, 0,186, 21,239,163,138,142, 69, 89,150,165, 34,145, -136,196,198,198,234,148, 74, 37,177,178,178, 18,203,229,114,104, 52,154, 18,161,245,244,233, 83, 28, 63,126, 28,113,113,113,176, -178,178, 18,153,155,155, 67,167,211, 25, 52,163,148,227,184, 55,220, 51, 20, 61,183,202,226,106, 20,224,183,117,241,178, 26,114, - 17, 99,238, 99,211, 29,207, 30, 61, 85,229,165,101, 25,253, 23,196, 21, 0,100,102,102,110, 6,176,185,120,223,214,214,118, 52, -195, 48,115,205,205,205,205, 47, 93,186,100, 97,107,107, 75,118,236,216,161,159, 55,111, 94, 22,195, 48,153,132,144,213, 21,241, -149,227,166,225,109, 4,160,251,155,199, 16,150,150, 29,229, 46,177,116,226, 31,168,233,245,201,177,179,234,102, 74,234,216,146, -122,126,232,159, 18,126,117, 52, 27,213, 58, 57, 49, 73, 68,193,135, 85, 80, 6,111,155, 53,103,225,244,200,136,123,110, 10, 51, - 5,198,142,155,131,223, 78, 93, 0, 17, 73,112,229,250, 45,104,117, 28,210, 50,178, 49,100,216, 8,184, 56,218, 32,236,230,233, - 84,150,231, 55,252,187,196, 53,191,190,107,223,209,150,114, 35,101, 81,156,112,248,249,127,211, 32, 18,173,197,252,249,243,225, -231,231, 55,190,104,229,134,140,138,203, 15,126,125,253,246,195, 44,165,242, 66, 30,202,115,216,114, 96, 86,145, 31,172, 41,216, -176,249,151,250,245, 60,158,127, 85,145, 31,172,255,148,192,170, 81,163,134,220, 88,130, 79,172,140,164, 51, 62, 27,222,207, 54, - 37,234, 17,226,194,239, 21, 42,127,141, 74,159, 24,121,169,161, 1,133,118,231,215,252,111,208,138,186,168,212,234,202, 91,240, -175,115, 22, 87,180,175, 91,175,170, 34,174,202,226, 44, 45,178, 74,251,189,114,117,117,197,210,165, 75, 43,245,131, 85,198,187, - 23, 31,239, 6,160, 65,177,200, 66,225, 32,247,110,134,204, 28, 44,143,211,214,214, 22,233,233,233, 0,128,128,128, 0, 4, 4, -252, 62, 79, 65,167,211,149, 88,173, 76, 77, 77,223,176, 96,149,197,201,178,236,178,195,135, 15, 15,186,113,227, 70,239,105,211, -166,137, 59,118,236, 88,104,191,207,207, 87, 83, 3,214, 94, 43,131,115,248,169, 83,167, 24,158,231,177,101,203, 22, 4, 7, 7, - 83, 99, 99,147,201, 38, 38,166, 59,204,204,204,184,172,172,172,225, 31,127,252,113,191,175,190,250,138,180,109,219, 22, 55,110, -220, 32, 53,107,214, 12, 4,240, 75,101,239,126,235,214, 45,136, 68, 34,176, 25, 49, 24, 63,107, 31,140,141,196,136,136,136, 64, - 70, 70,198, 27,206, 71, 13,137, 79,158,231, 75, 42,238,226,173,109,219,182, 37,221,141, 45, 90,180, 0,195, 48,184,127,255,126, -153,221,173,175,113, 82,107,107,235,146,252, 33,149, 74,113,225,194, 5,124,243,205, 55,112,179,178, 64,102,248, 67, 56, 4,116, - 68,151, 15, 63,198,208,161, 67,193, 48, 12,172,172,172, 74, 44,189,149,189,251, 91, 10,170, 18, 78, 66, 72, 31, 31, 31,159,217, - 97, 97, 97, 46,245,235,215,247, 37,132, 4,248,249,249, 53,123,248,240, 97,241,190,132, 82,186,191, 42,156,119,238,220, 57,184, -126,253,250,113,163, 70,141,146,242, 60,207, 69, 71, 71,235, 1, 16, 7, 7, 7,230,206,157, 59,252,175,191,254, 10,149, 74, 5, - 23, 23, 23,145,179,179, 51, 57,115,230, 12, 31, 30, 30,126,139, 82, 58,199,208,119, 47,158, 41, 88, 60,152, 93,165, 82, 25, 36, -174, 94,231,172, 81,215,107, 73,167,118,222,174,105, 9,247,145, 24, 31, 5,117,134,165,254,194,233,107, 85, 18, 87,127,116, 26, -253,201,156, 11,159, 60,121,226,172,209,104, 32,147,201,176,113,227, 70,221,210,165, 75,195,210,210,210,252, 41,165,170,234,134, -179, 42, 14, 72, 43,227,204, 78,199,111, 71,142,222,105,102,210,127, 27,198, 39,164,150, 12, 92,164,132, 88, 29,178,247,245, 87, - 54,175, 31, 47, 58,177, 64,148,203, 21,252, 86, 30, 39,165, 84, 75, 8, 25,212, 63,112,216,185,189,123,247,152,204, 91,176, 0, -215,110, 61, 68,122, 86, 30,120,202,128, 39, 4,115,231,206,131,131,141, 21,114, 18,158, 20,104,116,186,254,175, 47,153,243, 79, - 79,119, 66, 68, 19,206,252,186, 99,173,136,128,207, 79,126, 44,103,114,163,148, 35,135,246, 23, 15, 26, 52, 8,135, 14, 29, 66, -104,104,232, 15,229,137,171,210,156,148,138, 38, 60,188,180,111, 45, 1,120, 85,234, 99,185, 56,239,185,242,131,225,253,197, 67, -135, 14,197,225,227,215,177,247,216,243, 77,123,126,165,199,240, 31, 67,185, 2,203, 84,140, 80,127,223, 90,206,109, 27,215, 83, -136, 57, 21,226,194,163,144,145,175,198,153, 71,209, 89, 34, 42,250,169,186, 15, 44, 28, 59, 33, 69, 76,204,147, 55,206,101,101, - 41,138,172, 49, 85, 91,246, 73, 36, 18,189, 98,189,122, 27,203, 85,233,112,218,219,219,191,178,236, 74,233, 10,187,120,140, 79, - 53, 92, 52,204,138,137,137, 49,139,137,137, 1,165, 20,183,110,221, 50,107,209,162,197,172,183,177, 94, 77,155, 54,237,149,229, - 65, 74,255,150,117,172, 50,164,166,166,230, 3,248,209,222,222,254,183,233,211,167,191,223,178,101,203,182,243,231,207, 39,148, -210,234, 70, 44,203,243, 60, 46, 94,188,136, 67,135, 14,113, 90,173,118,118, 98, 98,226,227, 82,231,127,114,117,117,189,210,175, - 95,191,149,145,145,145, 76, 88, 88, 24, 12, 17,114, 42,149, 10,158,158,158, 96, 89, 22,223,142,119, 69,110,110,125,176, 44, 11, -142,227, 96,108,108,252,202, 58,148,134,164,147, 72, 36,122,197, 50, 82,188,221,186,117, 11, 12,195,192,223,223, 31,247,238,221, - 43,177, 96, 85,102,113,210,233,116, 49,246,246,246,246, 11, 23, 46, 44, 9, 87,106,106, 42,130,130,130,208,178, 85,107,248,126, - 50, 22, 9, 9, 9, 88,189,122, 53,156,156,156,176,100,201, 18,100,100,100,128,101,217, 63,219,108,222, 61, 44, 44,204,101,248, -240,225, 41, 15, 31, 62,116, 57,126,252,184, 69,239,222,189,141,135, 13, 27,150,242,240,225, 67, 23, 66, 72, 59, 0,251,171,248, -253,204, 38,132,156, 90,178,100,201,172,137, 19, 39,182, 24, 53,106,148, 68, 34,145,240,241,241,241,236,158, 61,123,136,167,167, -167, 72, 42,149,146,211,167, 79,243,183,111,223,190,201,178,236,183,148,210, 43, 85,181, 50, 23,139,171,170,142,185, 42,198,100, - 59,249, 7,166,162, 84,255,245, 27,151,138,188, 61, 92,116, 59,247, 4,197, 94,185,241,228, 25,163, 97, 39,255, 8, 60,195,127, - 16, 12,195,236,247,241,241, 25, 61, 97,194, 4,163,110,221,186,201,191,250,234,171,236,220,220,220, 50,197, 85, 89,168,138,155, - 6, 84,209, 1,105, 41,252,111,246, 23,199, 39, 79,173, 63,186,214, 71, 14, 53,112, 54, 63, 5,153, 98, 70,100,102, 33, 66, 99, -119, 6,185,105, 79,109,143,157,219,254, 2,149,248, 85,163,148,222, 33,132,116,174, 87,191,209, 47,223, 46,249,214,238,203,153, - 51, 36,191, 28, 63, 9,202,234,112,235,210, 37,152, 72, 57, 26, 30,124, 54, 89,163,211,246,251, 55, 46,149,147,112,117,221, 94, - 66,200, 81, 43, 43,171, 7, 31,142, 26,229,233,227, 51, 12, 74,165, 18, 7, 15, 30,196,207,235,214,113,107,128,193,155, 9,185, - 55,150,210, 10,235,252,228, 27, 37, 60,247, 63,254,240, 67,175,198,141, 63,130, 82,169,196,129, 3, 7,176, 99,205, 26,131,121, -254, 51, 2, 11, 34,146,123,243, 73,116,222,173, 39,209,121,224, 41,229, 41,213,136, 68,136,205,215,233,150, 68, 62,139,171,150, - 24, 40,238, 34, 92,180,120,194,187, 84,230, 37,162,167, 58,211,178,203,169, 28,226,234,212,169,131,215, 45, 90, 21,253,215,235, -245,113, 6,210, 47,115,115,123, 99, 93,210,101,213, 13,107,113,183,159,161,226,202, 80, 63, 88, 0,144,156,156,156, 10, 96,133, -139,139,203,209, 30, 61,122, 12, 37,132, 36, 85, 51,141,246,118,232,208, 97, 40,165,148, 17,137, 68,187, 94, 19, 87, 0,128,216, -216,216,231, 46, 46, 46, 91, 60, 60, 60, 74, 22,128,174,136,147,231,249,231,245,235,215,215,149,149, 22,229,237,243, 60, 95,105, - 26,101,101,101,161,121,243,230,111,172, 57, 73, 41, 69,116,116,116,177,133,169, 36,238, 43, 18,110,121,121,121, 99, 63,255,252, -243,205, 18,137,196, 13, 0, 41, 22,183, 28,199, 49,223,127,255,189,130,227, 56, 6, 0, 17,137, 68,172, 68, 34, 81, 31, 58,116, -136,101, 89, 54, 70,163,209,140,253,147,203,129,125,132, 16, 9,128,204,176,176,176,118, 69,150,171,184,208,208,208,179,123,247, -238,181, 7, 42,119,159, 80, 78,222,188, 2,224, 10, 33,164,237,198,141, 27,103,143, 29, 59,182,249,208,161, 67,197, 1, 1, 1, -248,237,183,223,184,139, 23, 47,222, 82,169, 84,203,170, 42,172, 8, 33,121,238,238,238,133, 5,152,184,226, 81, 14, 44,203, 86, -216, 90,179,118,151,175, 31,241,169,147, 98,203,178,160,188,180, 4,237,117,125,158,118,206,118, 32, 20,255, 97, 36, 37, 37,125, - 65, 8,153,183,122,245,234,132,134, 13, 27,202,165, 82,169,214, 80,113, 85,212,240,177,175, 66, 30,225,171,153,183, 88, 66, 72, -207, 85, 93, 6, 30,109, 63,247,115,143, 46, 29,252,149,174, 53,236,156,195,163,146,241,244,198,111,249, 15,142, 45,126, 73, 53, -153,125, 41,165,172, 1, 92,183, 9, 33,117,166,205,152, 86,188,216,115,131, 78,103,142,208,255,208, 98,207,139,150, 47, 95,238, -233,227,227,131,131, 7, 15,226,204,174, 93, 24,146,150,134, 11, 12,195,136,164, 82,235, 99, 58,221, 10, 0,134, 8,163, 69, 43, - 87,174,244,242,243,243,195,254,253,251,113,122,199, 14, 12,174, 30, 79,121,104, 6,192,182,232,127, 26,128,199, 0,154, 0, 48, - 2,160, 1,144, 7,192,166,212,245,233, 69,231,138,207, 95, 6,240,167, 14,116, 45,183,116,122,248,228, 69,147,119,253, 48,149, - 74,149,225,233,233, 41,169,202, 61,122,189, 62,165,146, 2, 52,174, 86,173, 90, 6, 91, 41, 12, 17, 67,233,233,233, 77,255,168, - 8,127,219,177, 86,175, 8, 65,158,127,233,232,232,200, 23, 87,246,101,137,175,178,142, 81,224, 69, 85,158, 19, 23, 23,247, 12, -192, 55,213, 13,103, 92, 92,220, 73, 24,176,152,179,161,215, 1, 64, 70, 70,198, 59, 95,100,151, 80, 26,255,213, 87, 95, 85, 73, - 88,131,210,248, 10,210,250, 33,128, 22,127,247,210,149, 82,122,185,168,240, 1, 33,164, 63, 33,164, 39,128,211,148,210,131,239, -136,191, 68,104,109,217,178,101, 50,165, 20, 57, 57, 57,107,170, 42,172, 74, 9,255,243,239,234,221, 51,146,181,231,247,252, 16, -215, 81,149,165,155,188, 53, 79,187, 3, 2,138,211, 76,109,103,103,247,211,200,145, 35, 91, 2,216,254, 46, 56,223,194, 77, 67, -121, 97,124, 65, 8,105,120, 97,218, 55, 31, 94,176, 48,237, 5, 78,236, 13,173,232, 24,180,233,191, 1,248,209, 16, 43,120,233, -247, 5,176,178,104,251,207,160,200,127,213,228,209,163, 71, 99,222,188,121, 56,189, 98,133,238, 83, 66,178, 37, 0, 61, 85,216, -192, 20, 17, 96,166,161, 60, 31,124,240, 1,230,205,155,135, 19,223,126, 91, 45,158, 74, 96, 75, 8, 57, 14, 0,179,102,205,154, -179,116,233, 82,203,217,179,103, 55, 88,182,108,217,146,162,253, 71,197,231,139,210,180,247,236,217,179,235,149, 58,159, 11,224, -206,159,253, 33,253, 97, 27,128,206, 2,167,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,111,185,245, 42,148, 44,229,255,150, -247,191,212,177, 63, 51,188, 16, 9,109, 53, 1, 2, 4, 8, 16, 32, 64,192, 63,212, 10,119,252,109,206,255,161, 97, 3,208,185, - 28,203,214,217, 42,188, 96,231,106, 88,206,206, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,223,226,172,140,187,156,251, -123, 17, 66,142, 83, 74,123,151,247, 91, 44,168, 94,255, 95,234, 88,149, 87, 30,121, 43, 8, 93,132, 2,167,192, 41,112, 10,156, - 2,167,192, 41,112,254, 19,186, 8, 1,208, 89,179,102,205,254, 39,116, 17, 86, 48, 5,231, 32, 19, 31, 15, 51,153, 76, 41, 5, - 0,173,182, 64,231,236,140, 28, 96,224, 95,182, 16,173,128,127,172, 9,215,190, 72,204, 39,191,203,107, 5, 8, 16, 32, 64,192, -127, 6,169,197,150, 41, 0,169, 0, 72,209,190,182,232, 55,181,168,238,120,253,255, 43,231,255, 76,136,203, 19, 87,105,105, 74, - 27,177, 56,211,139,227,212,117, 1, 64, 44, 22, 69,164,165, 89, 70,218,216, 28, 76,171,142,200,178,181,183, 15,150, 48,140,179, - 33,215,234, 57, 46, 62, 45, 57,249, 21, 87,239, 20,248,199, 11, 59, 67,197,195,219,136,140, 63, 67,160,216,218,218,218,219,219, -219,191,103,102,102,214, 42, 43, 43,235,118,106,106,234,225,212,212,212,228,114,194,179,148, 16,204, 40,250,255, 29,165,116,118, - 5, 97, 55,248,218, 50,238,245, 84, 42,149,227, 9, 33,126, 69,239, 31, 90, 80, 80,176,145, 82,250,228, 63, 40,104,141, 0,244, - 19,139,197, 31,216,216,216, 52, 79, 74, 74,250,138, 82,186,186,154, 92, 98, 0,211, 44, 44, 44,134, 90, 88, 88,212,204,200,200, -120,150,147,147,179, 31,192, 74, 74,105,165, 83,158,191,158,228,212, 42,160, 91,192,151, 23, 79, 95, 92,180, 96,109,194,141, 55, -206,127,225,100,221,181, 75,155,121, 23,143, 93, 95, 56,123,189, 97,203, 35,149, 10,155, 8, 40, 25, 71,202, 23,181, 82,233,223, - 56, 93, 90, 2,152, 83, 20,230,149,148,210, 11,127,243,124,100,108,111,111,255, 45,128, 62, 98,177, 56, 44, 62, 62,254, 19, 74, -105,220, 59,226,150, 0,176, 2,144, 97, 72, 62,122, 45, 63, 54, 3,224,135, 66,119, 26,119, 12,113,197, 96, 96,185, 54, 74, 36, - 18, 45, 46,114,125, 51, 55, 61, 61,125,251,223, 53,109,228,114,249, 26, 7, 7,135,143, 84, 42, 85, 1, 33,132,150,246,215,200, -178,108, 92,106,106,106,211,127, 97,209,118,231,159, 22,224, 50, 5, 86,124, 60,204,196,226, 76,175,148,164,135, 67, 18, 18, 67, - 6, 3,128,147, 99,131,253,118, 14,245,247,197,199,203,116,205,186, 4,154, 72,148,226,141, 12, 35,105,164,214,106,108, 36, 98, - 73,154,142,213,223, 23,105,233,248,196,136, 67,101, 58, 73,148, 48,140,243,203,200, 11,118,172, 46, 3, 18,133, 19, 36, 70,110, -229, 6,202,201,201,169, 90, 47, 99,101, 85,219, 84, 39, 87, 76,150, 72,152, 46, 60,101,253, 40, 15,136,136, 36,148,229,244,231, -164, 26,205,170,140,140,168,220,234, 70, 84, 93, 27,226, 64,129,161, 32,232, 2,138, 51, 4,216, 27,145, 70,147,170, 80, 48, 24, - 36, 30,222, 82,100,148,190,119, 53,165,244,139,119,157, 97, 92, 92, 92, 44, 7, 12, 24,176,230,155,111,190, 49, 50, 49, 49, 33, - 49, 49, 49,221,102,206,156,217,206,197,197,101,106, 92, 92, 92,194,235, 98,143, 16,204,224,249, 66, 7,165, 34, 17,153,105,111, -111,175,100, 24,230,141,197, 67, 57,142, 83, 18,130, 9, 60, 95,184,224,184, 72, 68,102, 16, 66,214, 26, 34, 20,141,140,140,134, - 53,111,209,122,234,183,203, 87,154,216,219,217, 25,179, 28,175,123,241,242,165,241,151,179,191,104, 97,100,100,180, 86,165, 82, -237,169,234,123, 18, 66, 8,195, 48, 67,228,114,121,111, 0, 62, 69,135,195, 53, 26,205,113,142,227,246, 25, 90,145, 59, 56, 56, - 92,102, 24,166, 70, 85,158,205,113, 92, 76, 82, 82,146,127, 53, 43,174, 65,110,110,110, 63,182,111,223, 94,217,188,121,115,200, -100, 50,204,155, 55,111, 26,128,213,134, 8, 41,165, 82, 57,196,216,216,184, 86, 94, 94, 94,148, 74,165,250, 69, 38,147,117, 94, -187,118,173,107,155, 54,109, 76,147,147,147, 9,195, 48,246,199,143, 31,127,127,221,186,117,221, 8, 33,157, 42,171,220,178,163, -232,151,242, 62, 62,109,179,163, 46,124, 9,160,199,235,231, 89,181,226, 3,202,184,246, 86,209,123,177,168,194, 20,121, 66,136, - 72, 34,145,172,117,112,112, 24,173, 86,171,213, 0, 40, 33,132,218,219,219,151, 84, 52, 0,160,213,106, 51, 51, 51, 51,189, 43, -252,182,235,214,189,203, 48,140, 75, 5,233, 17, 23, 17, 17,241, 46, 42,172, 25, 73, 73, 73, 61, 37, 18, 9,113,117,117,101, 0, - 92,168,194,251,122, 1,152, 91, 84,201,108,164,148,114,132,144, 14, 64,225,247, 14,224,187, 98,193,198, 48,204, 70,111,111,239, -247,194,195,195, 55, 81, 74, 23, 85, 55,176, 14, 14, 14,155, 55,108,216, 48,184,111,223,190, 76,106,106,170,115,195,134, 13,119, - 3,104,251,150,194, 74, 6, 96,182,131,131,195,103,254,254,254,214,247,238,221,203, 32,132,108, 0,176,172, 34, 95, 83,132, 16, - 23, 0,157, 45, 44, 44, 58,205,157, 59,215,164,119,239,222,216,178,101, 75,207,173, 91,183,230, 17, 66,206, 1, 56,251,182,226, - 79, 36, 18, 45,142,143,143,119,164,148,194,209,209,113, 49,222,145,123,138,119, 13,134, 97,214, 14, 25, 50,100,244,238,221,187, -149, 47, 95,190, 84, 58, 59, 59,151, 56,189, 38,132, 84,187,254, 20,240, 39, 9, 44,153, 76, 41,229, 56,117,221,132,196,144,193, -237,218,127,111, 14, 0,151, 47,125, 62,216,206,161, 94,168, 76,166,140,148,155, 41, 14, 5,246,233,220,104, 96,239,246,196,197, -209, 14,113,137, 41,246,255,219,123,186,251,241,211, 23, 14,161,208,241, 87,153, 96,117, 25, 48,210,157,197,227,171,235, 96, 19, -144,128,245, 39,226,112,227,193, 11, 20,100,167,161,134,131, 17,150, 79,238, 10, 7, 75,101,181, 94,196,196,222,171,131, 72,161, -220, 55,124,216, 72,243,247,250,249, 72,220, 29, 28, 64,169, 28,145, 81,121,173, 79, 6, 93,104,246,203,129, 61,227, 77,236,189, -134,228, 37, 71, 26, 92,168, 53,113, 34, 70,249, 58,244, 19, 51,228,253,182, 45,234,117, 26,214,179,173,200,215,167, 14,194, 30, -133,119, 61,122,254,214,114, 95,123,209, 57,150,163, 59,141,165, 56, 18,156, 80,190, 35,190,178,132, 70,167, 78,157, 26, 27, 25, - 25,105, 75, 95,167, 82,169,100,132,160, 83,117, 68, 70,241, 51,180, 90,141, 72, 34,145, 65, 36, 34, 83, 27, 52,104, 80, 35, 45, - 45,237,178, 72, 36,218, 21, 23, 23,151, 89,149,248,156, 72,136, 44, 83, 44,110, 34,146,203, 29, 57,173,214, 26, 0,136, 76,150, -233, 98,105, 89,127,238,156, 57, 38, 12,195,240,233,233,233, 40, 40, 40, 32, 31,127,252,177, 34, 42, 42, 42, 16,192,186, 74,194, -136,173, 91,183,122, 57, 58, 58,106, 95, 63,151,152,152, 40,235,219,247,189,234, 20,216, 94, 45, 91,181,153,114,250,244, 41,159, -156,140, 76,245,214,213, 91,238,233, 21, 70,106,143,186, 94,210,141, 91,118,152,125, 50,122,196,231,132,144,251,148,210,200, 42, -112,186, 25, 25, 25, 29, 90,177, 98,133, 95,135, 14, 29, 36,118,118,118, 72, 78, 78, 70,120,120,184,223,249,243,231,251,237,216, -177, 99, 26, 33, 36,144, 82,106,136,199,117,207,115, 59,127,180, 51,182,178, 6,167,215,195,169, 65,227, 18,255,100, 79,207, 7, -129,213,233,192,235,245,240,233,221,175,208, 12,195,243,240,245,245,173,150,183, 92, 66,136, 83,189,122,245,126, 94,178,100,137, - 84,163,209,224,214,173, 91,184,112,225, 2,159,152,152,184,172, 50,113, 69, 8, 9, 90,176, 96,129,139,191,191,191,105, 90, 90, - 26, 56,142,179, 57,114,228,200,248,198,141, 27,155,185,186,186,202,118,238,220,137,188,188, 60,176, 44,107, 85,171, 86, 45,171, - 97,195,134,105,119,238,220, 57, 13,192,183,229, 89,174,114,162,232,151, 73,164, 86,119,239, 38, 31, 32,137,156,234, 62,181,135, -227, 73,179,218,164,196,146,213,163,118,109,211, 90,117,141,103,154,152,213,183,202,137, 63, 59,179, 71,237,218, 91, 79, 70, 85, -222, 8, 34,132,136, 68, 34,209,218,192,192,192,225,123,247,238, 85,134,135,135, 43,125,124,124,192,243,124,137,199,252, 98, 71, -177,158,158,158,134, 84, 88, 46,231,206,157,179, 51, 50, 50,122,195, 41,111,126,126, 62,250,246,237,251, 71,148,183, 85, 77,227, -175,159, 63,127, 62,232,208,161, 67, 35,102,204,152,225, 9, 96, 2,128,121,233,233,233,237, 1,192,218,218, 90, 6,224, 2, 33, -228,195,233,211,167,127, 58,107,214, 44,244,236,217,115, 30, 33,100,113,117,172,122,132, 16,198,198,198,166,103,223,190,125, 25, -189, 94, 15, 99, 99, 99,232,245,250,218,111, 41,174,228, 82,169,244,215, 21, 43, 86,116, 25, 54,108, 24,196, 98, 49,120,158,183, - 10, 10, 10,154, 63,122,244,232,182,132,144, 30,101,137, 44, 66,200, 7,159,126,250,233,128,145, 35, 71,162,105,211,166, 37,206, -101, 87,172, 88,129,133, 11, 23,154, 4, 5, 5,245,219,185,115,103, 63, 66,200, 47,148,210,106,251, 50, 43, 94, 47, 52, 54, 54, - 22,118,118,118, 70, 86, 86, 86,137, 0,190,202,200,200,216,242, 55,178, 42,126, 55,100,200,144,225,187,119,239, 54, 1,128,229, -203,151, 99,202,148, 41,176,183,183,135,137,137,137,160,104,254, 9, 2,171, 50, 20, 20, 20, 52,158, 61,241,125,136, 68,133,173, -196, 58, 53,221,176,116,206, 39,228,232,241,211,141, 43,186, 79,162,112,194,227,171,235, 32,119,157, 12,141,158,197,205, 7,207, -113,102,121, 55, 0,128, 87,143,185,208,232, 58, 21,103,116, 43,153,145,209,119, 90,142,187, 6, 7,135, 91,136,142, 78,173, 76, - 92,217, 58,216, 31,255,225,135,111,141,252,106,123, 67,199,234, 17,159, 18, 15, 66,228,112,113, 54,197,135, 31,244,144,180,111, -239,100,243,245,215,155,127, 51,182,245,234,159,159, 26, 89,169,163, 79,111, 91,178,189,109, 99,207,193,195,122,249,203,235,251, -213,131, 84,110,244,187,240,106,218, 20, 77,154, 54, 21,205,202,203,237,114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, - 84, 58,170,162,111,163,180,208,152, 52,105,210, 27, 11, 18, 39, 38, 38,226,226,197,183,234, 53,120,229, 25,223,124,243,141, 73, - 86, 86, 86,231,255,253,239,127,237,156,157,157, 87,196,199,199,223, 52,132,228,125, 66,106, 64, 46,239, 52,122,229, 74,190,209, -123,239, 49, 22, 14, 14, 34,158,227, 72,194,179,103,214,171,215,173, 11,200,120,250,212, 40,223,202, 42, 35, 83,165, 42,136,140, -140,132, 66,161, 32, 98,177,184, 89, 25, 5, 86, 50, 33,228, 59,145,136,204, 36,132, 64, 46, 87, 68,142, 27, 55,238, 94,209,233, - 26,199,142, 29, 83,246,233,211,167, 0,192,203, 66,179,183,194,153, 97, 68, 94,133, 3, 4,241,157, 33,194,210,216,216,120,226, -162, 37,223, 25,231,100,100,169,116,249,249,122, 59, 51, 19, 2, 19, 19, 38, 55, 39, 47, 39, 33, 41, 85, 61,247,171,133,226,177, - 31,142,156, 8, 96,188,161,226,170, 97,195,134,183, 15, 29, 58,100,103,109,109,141,172,172, 44,164,167,167,227,246,237,219,224, -121, 30,129,129,129,242,214, 45,154, 55,158, 51,247,203, 27,132,144, 86,134,136, 44, 99, 43, 27, 44,247,111, 4, 0,152,255, 50, -189, 36,125,182, 12,234, 93,114,205,194,184,108, 0,128, 66,161,120,155,165,158, 90,117,234,212, 73, 10, 0, 99,198,140,201,201, -205,205, 93, 10, 96, 55,173,192, 25,106, 17,166,125,249,229,151,206, 53,107,214,116,223,189,123, 55,242,242,242, 0,192,174,102, -205,154,240,246,246,230, 46, 94,188, 8, 47, 47, 47,152,154,154,226,242,229,203,184,121,243, 38,154, 52,105, 98, 42,149, 74, 7, -151, 39,176, 2,186, 5,124, 41,239,227,211,214,187,201, 7, 48, 49,115,196,214, 61,251,240, 56,120, 71, 91,141, 46,252,203,165, - 19,156, 71,170,168,124,148,139,167,233,172, 26, 77,219, 91,215,169,247, 30,220,155,220,179, 81,115, 87,158,207,251,172,214, 50, -177, 66,189, 99,193,138,132,244,242,196, 21,128,229,129,129,129,131,246,238,221,107, 1, 0, 15, 31, 62, 68,114,114, 50,108,109, -109,161, 80, 40, 32,145, 72, 74,214, 15, 53, 20, 70, 70, 70, 72, 76, 76,132, 78,167, 43,182, 90, 33, 55, 55, 23, 14, 14, 14,133, -234,230,107, 34, 90,176,192, 48,175,227,132, 16,255, 22, 45, 90,236,114,119,119,119, 45,125,188, 87,175, 94, 24, 58,116, 40, 0, -160,125,251,246,157, 6, 14, 28, 72,139,133, 96, 98, 98, 98,222,157, 59,119,186, 80, 74,111,149, 99, 93, 81,197,199,199, 99,250, -244,233,120,241,226,197,103,132,144,104, 0, 10,153, 76, 86,210, 46, 38,132,120,213,171, 87,111,237,148, 41, 83, 16, 21, 21,133, -176,176,176,219,213,237, 50,165,148,114, 30, 30, 30, 79,245,122,125, 83,150,101,161, 82,169,208,191,127,127,133,149,149, 85, 50, -195, 48, 17,105,105,105, 35, 40,165,137, 85,176, 90,185,139,197,226,245,211,167, 79,239,212,185,115,103,132,132,132,224,208,161, - 67, 24, 54,108, 24,186,119,239,142, 21, 43, 86,180,159, 48, 97,194, 44, 0, 11,202,160,232,180,113,227, 70,112, 28,247,198,183, -161, 80, 40,224,239,239, 15, 95, 95, 95, 28, 61,122,180, 19,128,106, 9, 44, 66,136,215,128, 1, 3, 20,197,162,250,226,197,139, -230, 70, 70, 70,230, 46, 46, 46, 11, 0,252,109, 4,150,187,187,251,184,189,123,247,154,148,238,237,145,203,229, 40,149, 15, 4, -252,221, 5,150, 86, 91,160, 19,139, 69, 17, 78,142, 13,246, 95,190,244,121, 73, 23, 33, 32,138,208,106, 11,116, 0,192,241, 20, - 57, 5, 44,140,228, 34,188, 76,202,197,163,103,105,101,125,164,175, 76,181,148, 24,185, 65,222,252, 37, 40,165,208,234, 56,104, -178,147,176,244,183, 2,132,199,169,161,205,207,132, 86, 87, 56,204,202,198,198, 70,124,250,244,201, 41,103,207,158,255,244,167, -159,126, 98,226,204,205,195,144,157,221,184, 44, 78, 43,171,218,166, 98, 99,163,253,155,126,152,103, 68,153,103,136,140,201, 71, - 29,151,230,176,177,112, 69, 82, 90, 62,174,133,157, 64,196,147,227,168,233,232,142,201, 19,187, 43, 22, 45,217,189,207,210,178, -166, 91,102,230,243,156,242,194, 89,132, 15, 54,159,138, 4,155,241, 12, 92,122, 20,184,220,132, 55,133,157,173, 27,154,116,112, -134,173,107,109,249,168,201, 11, 63, 0, 48,170, 44, 78, 74,105, 50,195, 48, 27, 69, 34, 50,158, 16, 2, 63,191,250,207,215,172, - 89,163, 45, 43,234,253,252,234, 63,103, 24, 81,205,194,101, 88, 68,155,120,158, 75,174, 36,156,175,136, 25,153, 76, 62,163,208, -188,239,248,236,228,201,147,218,129, 3, 7, 98,249,242,229,210, 89,179,102,125,225,238,238, 62, 33, 58, 58, 58,169,162, 52, 10, - 36,196,205,185,118,237,174,139,175, 93,163, 18,189,158,100,220,190,157,147,149,152,200, 38,229,230,202, 14, 68, 68,244,252,232, -139, 47,100,174,174,174,184,122,252,184,117,106,126, 62,205,210,104, 84, 89, 89, 89,148,101,217,219,229,188,251,108,123,123,123, -229,214,173, 91,189,198,141, 27,119, 47, 33, 33, 97,118, 81,193,176, 20,128, 47,128,151,165,142,225,135, 31,246,197,127,252,241, -199,145,201,201,201,179, 43, 10,103, 41,212,179,179,181, 85,238,217,188, 51,196,202,212, 72,100,227,226, 40,146,152,155, 75, 88, -185, 82, 74, 41,212, 53,107,214, 86, 2,168, 87, 78,156,157,125,173,144, 37, 70, 70, 70,135,126,253,245, 87, 59,137, 68, 2,142, -227, 96,107,107,139, 23, 47, 94, 32, 43, 43, 11,185,185,185,120, 30, 17, 14, 15, 87, 87,124, 61,107,166,227,132,153,179, 14, 17, - 66,154,150,174,196,202, 10, 39,167,215,189, 97,201, 43,103,129,240, 87,126, 13, 73,247,215,240, 34, 38, 38, 6, 38, 38, 38,240, -243,243, 51,185,118,237,218,149,242,196, 85,105, 78,133, 66, 49,184, 77,155, 54,166,123,246,236, 65,147, 38, 77, 96,110,110,142, -139, 23, 47,226,225,195,135,208,233,116,162,188,188, 60,152,154,154, 98,217,178,101,112,119,119, 71, 78, 78, 14, 98, 98, 98,172, - 37, 18,137, 77,121,156, 23, 79, 95, 92,148, 29,117,225,203, 36,114,170,251,214, 61,251,240,241,176, 33,112,160,207,174,152,215, - 38,139,186,246,105, 51,159, 50,174,189,141, 77, 27, 88,122,250,245,129, 84,102,130, 9, 51, 22, 34, 50,244,152,101, 65,110,200, -103,132,139,117, 5, 48,233,117, 78, 82, 24, 49, 34, 87, 87,215,143, 14, 28, 56, 96, 90,202, 2, 85,178, 14,105,233,197,217,203, - 91,136,189,204, 52,226, 56,232,116, 58,232,116, 58,112, 28,135,180,180, 52,228,230,230,194,194,194,162,240,130, 5, 0, 1, 33, - 20,101, 11,150,215, 56, 71,156, 61,123,214,213,216,216,248, 13, 11, 73, 90, 90, 26, 88,150,133, 82,169, 44,121,166, 94,175,135, - 90,173, 54,241,245,245, 29, 15,224, 86, 89,156, 60,207, 79, 29, 60,120,112,155, 91,183,110,213, 90,183,110, 29,180, 90,237,242, -164,164, 36, 12, 24, 48, 0, 60,207,163, 83,167, 78, 45, 41,165,143,231,206,157, 11, 0,152, 50,101,138, 62, 63, 63,127,156, 33, -239, 94,142,224,240, 29, 56,112, 96,173,115,231,206,161,109,219,182,208,104, 52, 88,177, 98,133,217, 15, 63,252, 96,182,115,231, - 78,219, 25, 51,102,252, 8,160, 91, 69,156, 69,194,106, 78,247,238,221,167,246,237,219,215, 56, 62, 62, 30, 22, 22, 22,216,183, -111, 31,150, 45, 91,118, 89,171,213,206,217,185,115,231,210, 67,135, 14,181, 29, 54,108, 24, 86,172, 88,241, 25, 33,100, 17,165, - 84, 95, 22,231,243,231,207, 97,107,107, 11, 51, 51, 51, 0,133, 11,217,223,191,127, 31,103,206,156, 65,221,186,117, 13, 17,141, -229,133,211, 43, 48, 48,240,250,238,221,187, 45, 98, 99, 99,113,249,242,101,120,120,120,160,160,160,160,210,101,197,222,245,162, -204,149,113,170, 84, 42,117, 76, 76,140,201,183,223,126, 11, 71, 71, 71,184,187,187, 67,161, 80,128, 16, 2,189, 94, 95,110,120, - 13, 9,103, 64, 0, 17,167,197, 91,246, 53,183,176,252,140, 82, 42,206,206,206,220,172, 67,214,193,168, 40,170,253,179,222,253, - 95, 41,176, 8, 33,148, 82, 74,138,127,157,157,145,147,150,102, 25,105,231, 80,127,159,157, 67,189,162,117,185, 68, 17, 12, 99, - 25,105,111, 95,144, 3, 0, 58,150,226,122, 68, 22, 66,158, 38,225,225,211, 36, 24,203, 13, 91,166, 70,163, 99, 11,231, 89, 82, - 10,117,222,239,141, 84, 93, 65, 38, 52,186,194,225, 28, 90, 77, 1,178, 83,195,200,160,254, 93, 20,159,126, 58, 22,142,142,206, -182,229,241,233,228,138,201, 19,166,244,180,176,178,144,224,248,181, 83,104, 89,183, 63, 20,114, 9,210,179,213, 0, 1,158, 60, - 59, 3,240,166, 8,141,140, 65,139,122, 74,116,235,234, 99,114,248,224,227, 47, 0,204, 51, 36,188,108,220,109, 72, 61,123, 64, -194,233,161, 79,123, 12, 62, 43, 26, 48,118,128,138,152, 32, 61, 49, 26, 17, 87,126, 49,104,137, 82,142,227, 38,216,216,216,164, -204,158, 61,219,223,203,203, 75, 59, 97,194,132,208, 23, 47, 94,204, 45,125,141,135,135,199,226,245,235,215, 35, 50, 50,242,229, -210,165, 75,175,166,165,165,125, 83,197, 15,115, 22, 33,100, 77,145, 53, 44,237,215, 95,127,109,112,249,242,229,241,171, 87,175, -182,253,236,179,207,164, 19, 39, 78, 28, 1, 96,121, 69,221,130,198,114,121,231,197,151, 47, 83, 54, 46, 78,243,243,247,223,203, - 54, 92,191, 62, 87,199,243, 78, 54,118,118,164,117,139, 22,249, 74,145, 40, 45, 61, 57,153,181,173, 85,139,121,113,230,140, 53, - 53, 50, 74, 56,121,242,100, 78, 94, 94,222, 47, 21,116,193, 20,148,213, 45, 88, 22, 28, 29, 29,181,101,141,209,170,160, 34,200, -225, 41,213, 89,214,244, 64,215, 78,173,235, 60,125,252,236,153,220,220,130,241,244,172,225, 29, 22,241,242, 22,207,178, 26, 66, - 72,142, 33, 92, 12,195, 12, 89,179,102, 77,125, 51, 51, 51,240, 60, 15,115,115,115,164,166,166, 66,171,213, 34, 39, 39, 7,218, -220,108,104,179,179,241, 48,250, 5,218, 4, 4, 96, 80,247,174, 62, 59,143,252, 58, 4,192,222,138,120,157, 26, 52, 46,177, 92, - 45,172, 97,253,123,159, 79,108, 86,137,216,250,182,177, 39,164, 38, 38,232, 50,117,214,219, 20,204,247,100, 50,217,137,192,192, -192,158, 95,124,241,133, 40, 49, 49,241, 20, 33,164, 13,165, 52,172, 66, 11,176,137, 73,237, 98, 65, 97,110,110,142, 53,107,214, -192,222,222, 30, 5, 5, 5,184,115,231, 14,117,113,113, 33, 23, 46, 92,128,139,139, 11,210,210,210,160,211,233,144,159,159,159, -164,213,106,203,237, 22, 47,234, 6,236, 49,181,135,227,201,199,193, 59,218, 58,147,231,119, 6, 79,107,255,244,241,195,136,152, -160, 51,215,190, 97,213,138,216,172,184,179, 51,107, 54,187,103,243,217,244,175,177,126,249, 2, 60,190,117, 57,195,222, 45,103, -131, 17,209,108,111,209,165,252,240,230,231,231,171,195,195,195, 77, 67, 66, 66, 64, 8,129,185,185, 57,148, 74,101,153, 34,203, - 80,112, 28, 87,242,155,150,150,134,212,212, 84, 68, 70, 70, 98,199,142, 29, 72, 72, 72,176, 89,109,110,150,100, 35,147,134, 72, -179,200, 28,157,142,222,171,132,110,115,151, 46, 93,134,184,185,185,153,150, 62,216,172, 89, 51,140, 29, 59, 22,155, 54,109,194, -245,235,215, 95, 89,239, 50, 41, 41, 41, 81,175,215,111,175, 32,109,179, 8, 33,221,251,247,239, 31,124,229,202, 21,179,109,219, -182,129,101,217, 50,183,173, 91,183,226,230,205,155,243, 40,165, 17,213,180,230,212, 29, 48, 96,192,229, 93,187,118, 89,164,166, -166, 34, 45, 45, 13,121,121,121,200,207,207, 7,199,113,240,246,246, 38, 44,203,122, 87,214, 29,104,107,107,123,226,210,165, 75, - 29,188,189, 11, 47,213,235,245,184,118,237, 26,222,123,239,189, 28,173, 86, 59,128, 82,154, 78, 8,153,125,240,224,193,235, 45, - 90,180, 64,179,102,205,172,162,163,163,173, 0,148,105,185,206,203,203, 67, 94, 94, 30, 36, 18, 9, 28, 28, 28,176,104,209, 34, -104,181,133,197,138,151,151, 87,105, 11,231,234,186,117,235,246,143,136,136, 88, 70, 41,221, 80, 78, 57, 51,150,231,249, 5,148, -210,172,192,192, 64,251, 61,123,246, 88,198,199,199, 35, 56, 56, 24,243,231,207, 79,229, 56,142,165,148, 18,157, 78, 23, 36, 22, -139,163,125,125,125,157,194,194,194, 18, 56,142,155, 71, 41,253,249, 47,236, 34, 36, 18,137, 4, 99,198,140,129, 88, 44,134,145, -145, 17,212,106, 53,244,122,125,137,136, 71, 21,187,159, 61, 61, 77,173,197,144,126,236,229,213,110,242,160, 73,189,109, 29,157, -156, 97, 97, 38, 71,120,120, 88,155,243,231,206,124,239,235,109,251, 3,175,213,255, 16,241, 34, 43,230, 79,120,191, 87,180,200, -191,180,139,112, 32,103, 99,115, 48, 45, 62, 94,166,147,201,148,145,197, 86,173, 66,113, 53,144, 3,246,128,213,233,139, 10, 8, - 90,180, 25, 40,176,244, 28,158, 62, 14,197,149,160, 95, 97, 83, 16,143,180,231,141, 0,105,125,104, 85,217, 80,107,117, 69,173, - 53, 14, 15,130,207, 33, 39, 59, 3,126, 77,123, 3, 34, 81,185, 93, 91,230,214,164,119,235, 38, 13,152,167, 49,161,104,230, 53, - 16,181, 92,218, 34, 58, 49, 7, 89,121, 26,100,230,168,209,200,111, 22, 82, 51, 85,200, 41, 80, 35,236,233, 78, 56, 59,213, 18, - 17,241,179, 78,134, 10, 44, 77,216, 33,104, 34,142, 66,234,222, 6, 50,239,247,192,184,251, 35, 38,228, 2, 30,156, 92,141,184, - 71, 87, 65,121, 14,142, 94,205, 97, 96, 5,190, 57, 40, 40,168, 81,187,118,237,196,157, 58,117,242,115,113,113,241,139,139,139, - 11, 5, 0, 23, 23, 23,191,238,221,187,251,217,217,217, 97,237,218,181, 5, 12,195,108,174,102, 37, 91,186,112,186,231,232,232, -184,226,208,161, 67,223,141, 29, 59, 22, 14, 14, 14,190, 21,221,155, 42,145, 52, 28,181,100, 9,149, 48, 12,221,187,126,189,244, -235, 83,167, 86,254,180,125,187,180, 99,135, 14,132, 82,138,251,247,239, 43,191, 93,191, 94, 57,188,111,223,151,209, 41, 41,236, -165,235,215,117,137,113,113,185, 41,249,249, 95, 39, 36, 36, 36,253, 21, 25, 88,175,215,223,120,241,252,153, 75,227,230,141,108, -239,133, 61, 15,235,214,169,117, 43,145, 72, 36,138,120, 22,125,195,214,214, 76,121, 46,232,172, 78,175,215,223, 48,132, 75, 46, -151,247,238,216,177,163, 56, 51, 51, 19, 78, 78, 78, 72, 77, 77, 69,124,124,124,161,133, 33, 59, 19,186,236,108,232,115,178,192, -229,231,225,249,157,219,104, 84,171,166,252, 64,225, 32,248,189,149,164, 73,153,150,169,210,150, 44,153,169, 41,100, 38, 38, 32, - 85,236, 30, 36,132,244,181,176,176,152,153,149,149,117,130, 82,186, 72,167,211, 77,152, 57,115,102,179,117,235,214,217, 44, 94, -188,216,236,147, 79, 62, 57, 64, 8,105, 68, 41,213,148,199,145,151,151, 23,197,178,172, 13, 0,187,115,231,206,193,206,206, 14, -217,217,217,197,150, 21,109, 65, 65,129, 34, 61, 61, 29, 26,141, 6, 90,173, 22,102,102,102,184,123,247,110, 38,203,178,191, 86, - 22, 62,179,218,100,145, 70, 23,254,165,181,143,113,130,142,181,108,159,146,193,103, 46, 88,145,176, 16,192,202, 30,181,107,111, -213,241,151,159, 63, 9, 61,102,249,226,206,197,140,132, 39,249,181,182,254,246, 44,183,130,120,164,132, 16,158, 16, 66,189,189, -189,145,150,150, 6,134, 97,160, 84, 42, 97, 98, 98,130,186,117,235, 34, 54, 54,182,218, 2,139,101,217, 18,113,117,252,248,113, - 36, 38, 38, 98,207,158, 61,112,117,117, 21, 1,176,141,141,141,237, 50,104,208,160, 22,214,214,150, 75,211,211, 51,151, 85, 16, -206,251, 0,204, 94, 75,167, 14, 54, 54, 54,231, 53, 26, 13,158, 61,123,134, 35, 71,142, 4, 80, 74, 47, 85,241,219,126, 70, 8, -233,238,239,239,191,163, 73,147, 38,181, 41,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,206,206,230,207, -156, 57,243, 19,128, 21, 85,173,184,139,226,215,123,192,128, 1, 87,119,239,222,109,153,158,158, 14,149, 74,133,252,252,124, 28, - 56,112, 0,109,218,180,129,141,141, 13,118,237,218,197, 82, 74,143, 85,192,165,176,176,176, 56,113,245,234,213,128, 58,117,234, - 32, 44, 44, 12,231,206,157, 67,141, 26, 53, 32,147,201, 48, 98,196, 8,179, 77,155, 54,125, 78, 8, 89, 38,145, 72, 22, 13, 24, - 48, 0, 28,199,225,218,181,107,233, 0, 50, 12,248,230,145,149,149,133,172,172, 44, 24, 25, 25,149,254,198, 8,128,109,171, 87, -175, 30, 61,121,242,100,212,174, 93,123, 17, 33,100, 83, 89, 11, 74,243, 60,255,117,124,124,188,157, 88, 44,118, 96, 89, 22,177, -177,177,184,123,247, 46, 38, 76,152,144,156,158,158, 30, 64, 41,141, 36,132,108, 12, 12, 12,252,116,213,170, 85,112,117,117, 69, -108,108,172,219,212,169, 83,119, 18, 66,240,103,139, 44,111,111,203,122, 50, 70, 62, 73, 42,149, 88,103,102,102,150,148, 29, 90, -173, 22, 26,141,230, 21,203,149, 84, 42,177,110,222,216,253, 55, 85, 65,238,156, 71,145,153,229, 46, 92,238, 91,199,162,129,210, -216,124,114,175,238,131, 70,116,237,222,143, 97,245,122,156, 62,125, 12,255,251,223, 70,116,240,247, 66,173, 58,245,241,249,196, - 73,230, 26, 45, 59,235,204,153, 83, 51, 91, 55,175,121, 42, 55, 39,107,118, 69,156, 2,202, 16, 88,101, 43,198,129,156,179, 51, - 50,139, 62, 24, 27, 75, 75,203,245, 28,199,117, 0, 62,134,196,196, 1, 97,119,111, 33, 35, 83, 2,141,138, 3, 79, 11, 69,150, - 65,130, 69,163,197,229,211, 71,177,102,245, 74,164,167,167,195,191, 93, 0,242,196,174,112,115,117,131, 90, 85, 80,244,177, 0, - 58,173, 30,182,246,238,184,119,239,129, 62, 39, 63,191,220,130, 72,170,208,249,184,217,123, 65,163,107, 5,133, 76,134,236, 92, - 45, 50,139,196,213,174,131,131,161, 41, 80,129,213,234,192,106,245,176,117, 27,128,186,246, 29,193,115,199,234, 85, 41,150,120, - 14,186, 23,151,161,123,113, 25, 70,173, 38,226,215,165,195, 94, 43,248, 12, 91, 16, 62, 57, 57, 57,213,197,197,229, 84,112,112, -112,239,193,131, 7,227,226,197,139,163, 0, 76, 45,170,220, 71, 13, 30, 60, 24,193,193,193,136,136,136, 56,149,156,156,252, 78, -124,118,200,100, 50,117,113, 43, 79,161, 80, 40, 42,185,214,185, 89, 96,160, 40,251,222,189,156,213,215,174, 45,216,186,109,155, -180,115,167, 78, 68,207,178,224, 57, 14,117, 60, 61, 73,215,174, 93,141,119,238,223,111,205,232,245, 55,167, 79,152,112,110,211, -200,145,185,183,242,242, 12, 29, 64, 94,163,168,107, 16, 0,106, 84,112,204, 96,104, 52,154,117,227,198,126,212,229,194,197, 75, -174, 53,220,157, 77,131,206, 93,126, 32,147, 75, 69,181, 60,106, 49, 89, 89, 89,226,175, 22,204, 54,210,104, 52,223, 27, 72,231, - 99, 99, 99,131,164,164, 36, 60,125,250, 20, 26,141, 6,122,189, 30,124, 65, 62,180,153, 89,208,102,103,128,168, 85,144,115, 28, -212,105,201,168, 81,171, 38,240,251, 12,195,202, 42,176, 50, 5, 86,241,175,194,204, 12, 82, 99, 19,136, 36, 18,131, 23, 45, 39, -132, 52,105,222,188,249,254, 95,126,249, 69,250,225,135, 31,182, 32,132,172,167,148, 70, 19, 66, 58,205,155, 55,239,246,250,245, -235,229, 99,199,142,245, 94,177, 98,197, 7, 0,202, 21,236,106,181,122,255,111,191,253, 54,220,221,221,221,238,225,195,135, 80, -171,213,224,121, 30, 61,122,244, 0,128,146, 60,243,248,241, 99,149, 90,173, 78, 9, 13, 13,205,137,142,142,214,194,128, 89,127, - 11,214, 38,220,152, 58,200, 37,208,222,193,249,166,194,168,134, 7,205,187,215,127,234, 32,151,229,171, 14,196,169, 79, 70, 69, -229,206,251,172,214,178,252,220,144,207, 44, 92,242, 54,156, 60,246,204,144, 89,190,180,120, 90,186,181,181, 53,196, 98, 49, 36, - 18, 9,164, 82, 41, 0,192,222,222, 30,217,217,217, 21,118, 17,150, 39,176,114,114,114,144,157,157,141,136,136, 8, 36, 38, 38, -226,198,141, 27,224, 56, 14,133,147, 20, 1, 23, 23, 23,220,190,125,219,180, 89,179,102,115,136,148, 92,160, 58,106,240,180,113, -134, 97, 38,143, 28, 57, 18, 90,173, 22, 67,135, 14,197,214,173, 91, 39, 3,184, 84,213,252, 78, 41,189, 73, 8,241,124,240,224, -129, 25,128,247,134, 12, 25,178,125,192,128, 1,184,116,233, 18,142, 29, 59, 22, 0, 32, 18,128, 10,192,210,162,133,149,151, 86, - 52,193,163,200, 21,195, 70, 91, 91,219,247,234,213,171,247, 96,192,128, 1,126,187,119,239,182, 72, 73, 73, 41,158,212,128, 23, - 47, 94,224,199, 31,127, 76,220,182,109, 91, 14,199,113,214, 34,145,232,183,172,172,172,242,102, 65, 43,140,141,141, 79, 94,189, -122,181,125,157, 58,117,112,246,236, 89,204,153, 51, 7,237,219,183,199,158, 61,123, 80,183,110, 93,212,175, 95, 31,118,118,118, -159,101,100,100,180,222,178,101, 75, 64,203,150, 45,177,107,215, 46, 36, 38, 38,110, 44,207,101, 67,101, 93,117,122,189,158, 0, -104,177,122,245,234,154,147, 39, 79,198, 47,191,252,130,198,141, 27,155, 63,123,246,108, 69,113, 25,251,154,192, 2,165, 20,207, -159, 63, 71, 65, 65, 1,174, 92,185,130,175,191,254, 58,181, 88, 92, 1, 64,239,222,189, 63, 93,181,106, 21, 6, 13, 26, 4,157, - 78,135,169, 83,167, 98,213,170, 85, 56,122,244,232, 55, 0,254, 52,129, 85,215,211,122, 89,243,102,237,103, 58, 58,215,193,174, -221,123,144,145,145, 81, 18, 39,197,241, 66, 41, 69,110,110, 46,146,146,146, 96,110,102,138,229, 43, 22,245, 28,255,201,104, 87, - 20,186,179,120,179,160,171,109,181, 98,224,208,143,166, 13, 29, 62, 26, 15, 31, 4, 99,231,246,205, 8,125,120,191,132,143,213, -235, 16, 25,126, 23,145,225,119, 97,239,224,142,174,157, 3,200,176, 97,195,122,140, 28, 62,196, 22,192, 31,230, 2,226,223,100, -189, 42,183,139,240,181, 15,198,198,210,210,242,209,190,125,251,172,253,253,253, 25,150,101,113,234,244,105,124,246,233,251,248, - 96,228, 44,232, 96, 9, 86, 43, 5, 47, 85, 24,244, 64,149,170, 0, 20, 20,249,249,249,184,126,253, 58, 40,207, 98,231,150,149, -160,148, 47, 17, 88, 0,133, 86,167,131,179,155, 55, 54,110, 93,204, 66, 34, 41,183, 32,203, 73,103, 56, 61, 75, 17,159, 18,131, -152,196, 80,152,155,186, 65, 44,113, 67,122, 86, 1,196, 34, 7,232,213,143,193, 21,153, 79, 11,242,227,160,210,189, 93,186,113, -217,111, 90, 73, 41,207, 27,124,127, 65, 65,193,254, 93,187,118,117, 93,181,106,149,180,103,207,158,181, 93, 92, 92,154, 3, 64, - 96, 96, 96,109, 83, 83, 83,236,218,181, 75, 87, 80, 80,176,255, 29, 90,120,218, 53,107,214, 12, 25, 25, 25,120,249,242,101,133, - 45, 15, 78,171,181, 54,177,179, 99, 82, 46, 92,208,167,102,102,186,118,236,216,145,232, 89, 22, 34, 66,144,145,157,141,232,151, - 47, 97, 97, 97, 65, 30, 61,126,108,242,253,231,159, 31,246,242,243, 19, 23,207, 48, 52, 4,199,142, 29, 83,162,112,220, 85,133, -199,170,248, 65,230, 19, 66, 70,125,254,249,231,135,127,254,121,151,121, 82,114,242, 19,185, 76,206,154,152, 24, 57,142, 28, 49, - 68,156,149,149, 53,156, 82,154,103, 40, 95,102,102, 38,158, 63,127, 14, 35, 35, 35, 72, 37, 18,240,170, 2,112,249,121, 80,103, -164,130,209,105, 33,227, 56, 88, 41,229,112,181,183,135,155,173,141, 65,156, 79,207, 7,149, 12,104, 47,221, 45,184,188,185, 15, -100,198, 38,144,153,154, 96,252,241,139, 69,173, 79, 41, 48,175,242,158, 97, 66,136,141,179,179,243,175,187,119,239,150,166,166, -166,226,254,253,251, 15, 40,165,217,132, 16, 83, 0,124,120,120,248,217,208,208,208,222, 69,179,232, 42,155,253,181,242,208,161, - 67, 93,252,253,253, 89, 15, 15, 15,227,228,228,100,183,244,244,116,146,152,248,234, 24,230, 19, 39, 78, 40, 84, 42, 85, 62,207, -243,135, 81,232,199,169, 82,255, 67, 83, 7,185, 40,174,223,195,196,246,221,106,212, 55,179,105,128, 12,246, 94,253,155, 15, 18, - 39, 78, 29,228,178,110,213,129, 56,181, 17,209,108, 39, 92,172,171, 88,161,222, 97, 96,122, 83, 27, 27, 27, 80, 74,113,251,246, -109, 92,189,122, 21,151, 47, 95, 70,116,116,244,239, 86,109,115,115,156, 57,115, 6, 29, 58,116,168,202,119, 9, 71, 71, 71, 88, - 90, 90, 98,231,206,157,216,179,103, 79,201, 64,247, 98,164,165,165, 65,169, 84, 98,213,170, 85, 38, 3, 7, 14,252, 6, 64, 87, - 3,133,112,205, 46, 93,186,244,114,116,116, 68,122,122, 58, 28, 28, 28,224,239,239,223,135, 16,226, 65, 41,125, 81,205,172, 63, -190, 91,183,110,139,190,254,250,107,232,245,122,140, 25, 51, 6, 79,158, 60,217,255,228,201,147, 53,110,110,110, 19,103,204,152, - 97,111,111,111,143,193,131, 7, 27, 3, 8, 44,143,196,202,202,106,233,230,205,155,135,247,234,213, 75,164,211,233,218,157, 63, -127, 30, 47, 95,190,132, 86,171, 5,203,178,136,138,138,194,132, 9, 19, 18,211,211,211,219, 83, 74,163, 12, 8,215,172,160,160, -160,246, 62, 62, 62, 56,126,252, 56, 2, 3, 3, 47, 88, 88, 88,120, 53,104,208,192,209,201,201, 9, 7, 14, 28,128,153,153, 25, -220,220,220,172, 22, 47, 94,220,177, 95,191,126, 56,126,252, 56,166, 76,153,114, 17,192,178,234, 68, 4,207,243,100,245,234,213, -126,171, 87,175,118, 41, 22, 87, 34,145, 8,251,246,237,195,131, 7, 15,250,150, 37,176, 40,165, 11, 28, 29, 29, 23, 56, 58, 58, - 42,130,130,130,204,107,212,168, 1,150,101,181,148,210, 72, 23, 23,151,120, 39, 39, 39, 11,185, 92,142, 57,115,230, 32, 39, 39, -231,131,199,143, 31,239,108,216,176, 33, 29, 49, 98, 4,124,124,124,156,255,204, 74,154, 17,145, 81, 75, 22, 78,199,157,123,143, -113,232,144, 20,119,238,220,129,189,189, 61,228,114, 57, 40,165,208,104, 52, 72, 77, 77,133, 94,167, 65,253,122, 53,177, 99,219, - 50,164,164,164, 2, 34, 82,238,208, 26, 34, 34, 35, 70,191,223, 31, 87,174,158,198,166, 77,155,145,151,151, 95, 78,163, 91,129, - 58, 94, 62,112,118,178, 67,108, 92, 44,136, 8, 54,127,228,187,254, 71,186, 8,127,135,133,133,197,154,189,123,247, 90,119,232, -208,129,201,207,207, 7,207,243,104,235,239,143,137,147, 39,227,216,238,221,240,108, 49, 20, 68,107, 2, 86,105,216, 44, 6,181, -170, 0,190,141, 91, 99,208,224, 33,136,137,142, 70,183,222, 3,160, 86, 23,148,180, 40,138, 45, 88, 90,173, 14, 54,118,174, 8, - 10, 10, 98, 48,102,204,163,114, 69,129, 78, 22, 18, 25,165,110,147,165,186,135,235,119,118, 66,167,209,161,126,253,121,208,241, -214,176,115,249, 4,122,253, 17,228,164,158, 47,236,174,176,238,128,184,152, 24,136, 24,233,163,234, 70, 24,159,159, 90,229,214, -213,107, 21,120,142,163,163,227,209, 27, 55,110, 12, 10, 12, 12,196,153, 51,103, 62, 40, 18, 88,184,113,227, 6,158, 63,127,126, - 52, 51, 51, 51,231, 93, 36,174,139,139, 75,143,128,128,128,192,102,205,154,225,248,241,227,224, 56,238,186, 65, 31,180, 68, 66, - 69, 34, 17,120,158, 7, 1,144,158,149,133, 39, 79,158, 32, 61, 45, 13,122,189, 30,249,121,121,188,143,151, 87, 30,229,121,211, -170,132,167,244,140, 65,148, 49,139,176,248, 88, 53, 68, 86,180,137,137, 73, 76,110, 94,158,173,153,165, 85,174, 66, 38,227,178, -179,178,179,195, 30, 61,212, 26, 88, 41, 20, 35, 60, 52, 52,212, 47, 33, 33, 1, 49, 49, 49, 96,243,115,193,104,180, 16,105, 10, -208,169,117, 43, 24,129, 66, 1, 30, 18, 94, 15, 9, 35, 65,110,225,108,187,240, 74, 69,185, 94,255,134, 37,139, 16, 82,216, 45, -104,108, 12,153,137,233, 43, 22, 45, 67,242,147, 92, 46,223,125,224,192, 1, 71,103,103,103, 44, 92,184, 16, 46, 46, 46,117,235, -215,175, 95,208,182,109, 91, 35,123,123,123,248,250,250,162,117,235,214, 56,121,242, 36, 0, 68, 85, 18,127, 44, 33,164,235,149, - 43, 87,166, 93,187,118,109, 16, 33,132,204,154, 53, 11,221,187,119,135, 66,161, 64, 65, 65, 1, 50, 51, 51,177,101,203, 22, 66, - 41,109, 92, 20, 86,119,133, 66,177,135, 16, 18,167, 82,169, 6,191,206,185,115,117, 3,167,148, 12,126,140,189,131,115,255,246, -221,106,212,239,216,173, 51,106,122,118, 68,199,110, 49, 0,176,204, 74,252,114,232,242, 47,253, 14,219,184, 90,253, 24,116,234, -204, 2,255,246, 29,231,206, 26,107,185,104,217,230,202,243, 62, 33, 4, 28,199, 65, 44, 22, 67, 36, 18,149,105,165, 18,139,197, - 96, 24,195,134,162,112, 28, 23,215,175, 95,191,146,253,132,132, 4, 27, 87, 87, 87, 81,177,229, 10, 0,178,179,179, 17, 27, 27, - 11,189, 94, 15,107,107,107,232,116,186, 6, 85,200, 87, 19, 63,252,240, 67,162, 82,169,240,209, 71, 31, 97,235,214,173, 24, 58, -116, 40,185,116,233,210, 68, 0,147,171,154,223, 69, 34,209,242, 25, 51,102, 76,155, 48, 97, 2, 50, 50, 50,112,226,196, 9,244, -232,209, 3,251,246,237,179, 61,113,226,196,146, 14, 29, 58,128, 97, 24, 28, 63,126, 28, 44,203, 62,174,136, 75, 42,149,190,215, -171, 87, 47, 81,108,108, 44,164, 82, 41,154, 54,109,138,184,184, 56, 20, 20, 20, 32, 62, 62, 30,147, 38, 77, 74, 42,178,234, 68, - 25,144, 46,146, 58,117,234, 76,168, 91,183, 46,206,156, 57,131,129, 3, 7, 94,210,235,245,189, 82, 83, 83, 39,100,102,102,126, - 55, 98,196, 8,248,249,249, 33, 50, 50, 18, 93,186,116, 65,155, 54,109,112,226,196, 9,124,244,209, 71, 23,245,122,125,175, 10, -252, 96,229,166,164,164,152,215,174, 93, 27,201,201,201,200,203,203,195,141, 27, 55,204, 46, 94,188,232,225,228,228,100,241,236, -217, 51,250,229,151, 95, 42, 39, 79,158,140, 53,107,214,224,254,253,251,216,185,115, 39, 58,118,236,168,127,250,244,105,153, 86, -214,180,180,180,205, 0, 54, 91, 89, 89, 37, 27, 27, 27, 35, 55, 55, 23, 38, 38, 38,159,184,184,184,196, 95,191,126,221,201,213, -213, 21,233,233,233,248,244,211, 79,161, 82,169,224,230,230, 86,103,241,226,197,136,141,141, 69,102,102,230,159, 90, 73,243, 28, - 15,128,135,135,171, 9, 78, 31,219,134,224, 7,207, 16,252, 32, 20, 50,121,225,224,118,149,170, 0,141,235,215, 65,139,166,205, -145,144, 24,143,159,119,110,131,149,141,115,133,229, 8,165, 20, 82, 49, 7, 31, 47, 7,236,222,185, 25,199, 79,156,195,206,159, -247,148,140,105, 19,139, 37,104,212,184, 5,154, 54,245,199,179,231, 81,216,182,109, 19,108,237, 92,133, 62,191,234,118, 17,150, -254,125,173,117,208,209,223,223,159,201,203,203,131, 90,173, 70, 82, 82, 18, 94,190,124, 9, 11, 75, 11, 60, 75,120,129, 0,165, - 14, 73,124, 14,194, 31, 60,226, 8, 35,185, 95,217, 3,123,181,111, 4,180,111,132,207, 62, 28, 90,126,226,131,194,216,204, 6, - 26,141, 6, 58,189,254, 41,214,173, 43,183,165,204,114,250,179,167,207,156,111,254,225, 7,239, 73,130,206,111,133, 94,203, 67, -165, 55, 71,190, 90,139,124,157, 4, 34,243, 30, 64,218, 37, 48, 98, 57, 90, 54,172,131,195,135, 78,234, 40,171, 63,103,112, 4, -217,251,129, 77, 14, 45, 37,176, 82, 94, 57,175, 48,181, 50,184,139,176, 84,156, 30,222,189,123,119,207, 86,173, 90, 41, 59,116, -232, 80,171,168,194,212,238,222,189,187,160,200, 58, 80, 85,213,255,138,247,118,103,103,231, 6, 98,177, 56,176,119,239,222, 13, - 70,143, 30,141, 71,143, 30, 97,215,174, 93, 79,189,188,188,174, 86, 40,172,100,178,244,188,148, 20, 11, 19, 15, 15,177,165,169, -105,194,201, 19, 39,220, 59,119,233, 66, 98, 98, 98,144,158,158, 14,181, 90,141,251, 15, 30, 80, 9,195,196, 17, 51, 51,209,227, -123,247, 68,140, 76,150, 94,133,160,190,172,100, 22,225,210,234, 90,179, 92, 29, 45,107, 47,152, 61,174,166, 90,173,246,203,201, -201, 97,197, 18,137,196,197,193, 34,186,138,221,141,199,207,158, 61,219,175,115,231,206,242,200,144,251, 96,179,179,161,205,206, -132,148,231, 96,213,184, 33, 24,157, 6,208,234,225,236, 67,161,206, 82,226,210,173,199,122,141, 70, 83,233, 74,237,197, 2, 75, - 84,202, 25, 32, 0,200, 76, 76, 32, 55, 53,131,220,196,228,245, 46, 68, 82, 73,122, 43,223,123,239,189, 78, 45, 91,182, 4,165, - 20, 91,182,108,129, 78,167,147,233,116, 58,104,181, 90,232,116, 58,228,228,228, 96,231,206,157,216,184,113,227, 53, 0, 63, 25, - 32, 82, 89,137, 68, 50,129,101, 89, 59,185, 92,174,179,181,181,149,238,223,191,191,196,109, 68,163, 70,141, 96,108,108,172, 33, -132,232, 0,192,193,193, 65,191,125,251,118,113,223,190,125,165,101,241,121,215,175, 59,189, 38,107,217, 94, 97, 84,195,195,204, -166, 1,106,122,118, 4, 0,116,233,253, 33,106,214,113, 67, 78, 90,136,135, 90,245,178,191, 84,156,105,249,104, 93,124,152, 81, - 47,191,209,249, 41, 23,159, 0,216,102,224, 55,132,206,157, 59,163, 91,183,110, 37,221,129,118,118,118,208,106,181,101, 78,231, -175, 8,197, 78, 68,191,254,154,136,176, 0, 88,109,110,150, 4,192,182,180,184,138,137,137, 65, 76, 76, 76,177, 85,184,210, 52, - 42,149, 86, 70,158,158,158,163, 26, 55,110,140, 19, 39, 78,224,206,157, 59,241,167, 79,159,118,246,247,247,135,135,135,199,104, - 66,200, 28, 74,203,247,161, 87, 86,151, 94,187,118,237, 62,159, 48, 97, 2, 66, 67, 67, 49,110,220,184,244,216,216,216,195,251, -247,239,255,104,193,130, 5,162,110,221,186, 33, 49, 49, 17,203,151, 47,231,174, 94,189,186, 2,192,194, 74,210, 61, 34, 54, 54, -214, 69,173, 86, 35, 35, 35, 3, 44,203,162,160,160, 0, 39, 79,158,196,206,157, 59,139,199, 35, 61, 53, 48,120, 86,254,254,254, -150, 79,158, 60,193,182,109,219,160,213,106,231, 82, 74,213,132,144,159,102,206,156, 57,199,222,222,222,188, 75,151, 46,104,220, -184,208, 23,220,190,125,251, 48,105,210,164,139, 90,173,182, 87, 37,113,176,202,193,193,225,147,113,227,198,213,157, 58,117, 42, -162,163,163,205, 78,156, 56,209,230,250,245,235,164, 88, 8, 89, 91, 91, 99,205,154, 53,152, 50,101,202, 79, 0,146,111,221,186, - 53, 42, 42, 42,234, 27, 74,233,166, 74,222,127,129,139,139,203, 2,158,231,149, 93,186,116, 57,185,114,229, 74, 50,104,208, 32, -104,181,218, 18,215, 7,150,150,150, 59,100, 50, 25,218,182,109,139,105,211,166,129, 97,152, 17,127,118, 69, 77, 41,135,130,204, - 80,112, 26, 75, 52,170,239,141, 70,126, 53,112,250,124, 48, 0,160,211, 0,127, 20,228,231, 98,251,246, 45,120,250,244, 9,196, - 18, 9, 44,172, 28, 12,250,134,180, 57, 17,200,210, 37,162,115,135,166,232,209, 45, 0, 63,237,216, 7, 86,175,195, 71, 31, 14, - 71,102, 86, 22,118,236,216,134,103,207,163, 32,150, 72, 96,109,227,244, 39,188,103,249, 90,228, 95,105,193, 42, 46, 80,120,158, - 71,124,124, 60,238,222,189,139, 23, 47, 94, 64,169, 84, 66,197,114,252,166,179, 87,121, 66,164,113, 60,165,215, 40, 91,226, 85, -248, 77, 14,142,139, 47,229, 97,214,220,210,210, 82,166,209,168,192,178,250, 82, 37, 21, 1, 8, 32, 21, 3,142, 78, 53, 17, 27, - 19, 75, 85,106,245,197, 10, 91, 96, 26,245,154,163,135, 15, 76,104,221,198,223,166, 71,167,175,113,248,200, 60,100,230,228, 64, -173,147, 32, 95,173, 67,129, 26,176,176,242, 66,179,250, 13,144,144,144,142,144, 59,151,242,196,154, 2, 67, 6,128, 62,249,126, -238,135,158, 31,126, 54, 29, 70,238,109,160, 9, 63, 12, 62, 47,185,196,130,165, 48,177,132,149,155, 15,178,242, 53, 56,112, 46, - 24, 0, 12, 94,146, 37, 57, 57,185,192,209,209,241,224,248,241,227,151,221,191,127,175, 38, 0,220,190,125,251,121, 66, 66,194, -172,228,228,228,130,170, 36, 96, 41,239,237,196,200,200,232,150,167,167,231,139, 30, 61,122,152,245,235,215, 15,182,182,182, 8, - 14, 14,198,183,223,126,251, 68,171,213,206,191,120,241, 98,133, 93, 58, 90,173, 54, 62,248,200, 17,179,128,247,223,183,152,222, -167,207,242, 9, 19, 38,172, 89,184,112,161,196,211,211,147,232,117, 58, 60,124,248,144,238,222,181, 75,191,113,246,236,213, 50, - 99, 99,241,237,163, 71, 37,172, 70, 19,255, 87,103, 98, 23, 23,151,246, 61,187,183,247, 89,177,106, 29,212,170, 60,220,186,254, - 27, 50, 51, 83,177,121,203, 33, 31, 23, 23,151,246,113,113,113,151, 12,180,100,236,251,241,199, 31,167,181,104,220,184,113, 45, - 87, 87, 60,140,126, 1, 25,207, 65,202,178, 96,116, 26,136, 88, 53, 92,253, 40,136,200, 20,137, 73, 57, 88,188,247, 96, 40,199, -113,251, 42,227,173,219,243, 61, 44,140,203, 6, 33, 4, 43, 91,249, 65,102,106, 2,169,177, 9,198,255,122,190, 68, 84, 29, 95, - 56, 27, 50, 19, 19,212,110,225,111, 72, 33, 84, 96,106,106,122,247,225,195,135,205,252,252,252, 48,109,218, 52,188,124,249, 18, - 60,207, 35, 57, 57, 89,157,152,152, 24,159,154,154,250, 18,192, 97, 0, 91,169,129, 45, 0,150,101,237,130,131,131, 1, 64, 10, - 0,231,206,157,131,147,147, 19,204,205,205,145,147,147,131,233,211,167,203,231,207,159, 15, 0,184,123,247,174,164,120,128,113, - 89,120, 24, 28,190, 34, 43,151,102,210,188,123,253, 51,216,123,245, 59,118,139, 69,151,222,163,113,230,248, 79, 56,127,250, 44, -172,196, 47, 95,192, 56,247,100,218,139,180,156,184,124,207, 31,124,154,124,196, 36,230,159,254, 97, 98, 95, 75,198,209,145, 63, - 48,107, 99,118, 86, 37,113, 0,134, 97, 74,198, 96, 21, 15,104,175,170,184, 42,141, 5, 11, 40, 79, 64,136,141, 76, 26, 18, 27, - 27,219,197,197,197, 5,201,201,201,136,141,141, 69, 76, 76, 12, 98, 99, 99, 81,167, 78, 29, 60,123,246, 12, 82,169,244,190,129, -180,195, 7, 15, 30,108,170,213,106,177,103,207, 30, 22, 64,239, 3, 7, 14,220,109,214,172,153,184,123,247,238,166, 27, 54,108, - 24, 14, 96,107, 21,130,105,108,102,102, 38,213,233,116,216,176, 97, 3, 98, 99, 99,219, 83, 74,195, 9, 33, 63, 12, 30, 60,120, -163,159,159, 95,157,208,208,208, 39,121,121,121,227, 41,165, 33, 6,148, 69, 31, 54,109,218,244, 0,207,243,238,157, 59,119, 54, - 94,181,106,149,217,227,199,143,225,226,226, 2,158,231, 31, 86,113,169,169,140,179,103,207,102,182,110,221,218,178,104, 64,251, - 98, 66,200, 55, 12,195, 44, 11, 12, 12, 52,223,189,123, 55, 78,156, 56, 1,173, 86,139,136,136,136,212,208,208,208,239, 1,172, -168,104, 2, 70, 81, 90, 63, 7, 48,147, 16,210,224,135, 31,126, 24,234,236,236, 60,252,250,245,235,228,202,149, 43, 88,185,114, - 37, 59,111,222, 60,113,145,248,121, 14,224,163,162,252, 62,199,192, 30,133,205, 0, 54,187,184,184,196,175, 92,185,210,244,202, -149, 43, 72, 74, 74,242, 4,208,162, 89,179,102, 59, 54,109,218, 4,107,107,107,196,198,198,162,117,235,214, 28, 33,100,132,165, -165,229,190, 6, 13, 26, 32, 36, 36,228,207, 42,226,244, 58,157, 22,102, 86, 53,145,151, 21,131,212,216,235, 80,154, 58,160, 91, -199,134, 40, 80,105,113,236,232, 47, 8,121,248, 0, 34,145, 8,246, 14,174,176,176,180, 65,100,228, 19, 0, 8,171,152, 83, 7, - 83,203, 26,200,203,142,133, 54, 37, 24, 70, 38,118, 24,253,126,127, 20,168,116, 56,116,248, 23,132,134,134,128, 97, 24, 56, 56, -186,194,220,162,144,147,208, 10, 57, 5, 84, 85, 96, 49, 12,115,225,212,169, 83, 3, 91,180,104, 33,126,250,244, 41,158, 62,125, - 90,156, 49, 89, 2,238, 96,114,200,145, 97, 21, 84,254,157,139,125,101,148, 94, 91,208,196,212, 52,254,113, 68,184,125,102, 70, - 50, 30,220,187,138,167,145, 15,241,226, 89, 56,116, 58, 53, 24,145, 8, 34, 70,132, 26, 53,235,225,234,181,235, 90, 45,199,221, - 40,143, 19, 0, 50, 50,162,114, 77,236,189,134, 44, 90, 56,231,248,148,233, 95, 25, 13, 26,184, 9, 33,143,195,144,199, 58,128, - 82,192,193,218, 24,141,106,205, 64,124, 66, 42,246,254,180,161,128,215,233, 70,148,246,129, 85, 22, 39, 0,216,167,193,119,227, -150,159,198,108,221,185,251,171,233,159,143,181,239, 27, 56, 2,178,140, 48,232, 19,130, 81,179, 89, 15, 16,185, 5, 78, 4,157, -199,165,187, 97,201, 60, 71,191,178, 79,199,255, 42,227, 44,141,236,236,236, 59,201,201, 73, 53, 75,121,109,175, 41,151, 43,238, - 84, 34,166, 58,191,230, 23,232, 21, 15,241, 12, 35,106,177,112,225,194,124, 71, 71, 71,109,104,104, 40,126,248,225, 7,254,238, -221,187, 23,100, 50,217,230,132,132, 4, 77,101,156,182,122,253,131,221,179,102,249, 54, 15, 12,164,195, 62,255,188, 0,114,249, -196,229, 43, 87,206, 74,205,204,116,162, 60, 15, 91, 43,171,184,229,179,103, 47, 29, 56,120,112,230,163,171, 87,141,174, 31, 57, - 98, 36, 99,217,224,202,194,249, 46, 80, 17,103, 92, 92,220, 37,207,218,110,216,190,117, 21,116, 58, 13, 18,227, 11, 13, 87,105, -233,217,168, 72, 92,189,206, 89,212,249, 31,248,229,252,249, 55,191,156, 50,217,161, 93,167,206,136,121,112, 31,186,140, 84, 16, - 61, 11, 9, 17, 35, 63, 69,137,148,228, 60,204,252,121,127, 74, 94, 65, 65,224,235,142, 28,203, 11,103,177,133, 74,110,102, 10, -169,177, 9,100, 38,166,175, 88,173, 20,102,102,144, 25,155, 64, 44,147,149, 53, 24,254, 13,206,188,188,188, 1, 3, 7, 14, 12, -185,125,251,182,229, 71, 31,125,132,214,173, 91,223, 83,169, 84, 29, 40,165,185,213,141, 79,177, 88,156,210,164, 73, 19, 59,137, - 68,194,142, 25, 51, 70,156,150,150, 86,226, 9, 61, 47, 47, 15, 39, 79,158, 68,241,148,251, 71,143, 30,161, 94,189,122,229,114, -126, 52,227, 97, 60,128,133, 83, 7,185, 44,191,249, 32,113, 34,128,101, 53,235,184,226,252,233,179,184,114,254,250,172,150,126, -252,186,158, 35,154,125,163,236, 48,120,186, 79,147,143, 24, 19, 51, 71,236, 56,244, 11, 19, 30,188,109,113, 65,193,195,218, 0, -190, 40, 47,156, 69,179,184,222,112,201,160, 82,169, 12, 18, 87, 21,229, 37, 10, 74,165, 89,100,206,160, 65,131, 90,220,186,117, -203,212,196,196, 4, 58,157, 14,148, 82,212,174, 93, 27, 98,177, 24,223,127,255,125,126, 90, 90,218, 60, 67, 56,141,141,141, 39, -116,235,214, 13, 17, 17, 17,184,115,231,206, 47,148,210, 16, 66,200, 47, 79,159, 62, 29,210,182,109, 91,252,244,211, 79, 19,202, - 19, 88,229,113,242, 60, 95,218,231, 81, 70, 81,222,125, 0,160,101, 85,223,189,200, 89,104, 27, 0,176,182,182,142,181,183,183, - 55,123,240,224, 1,220,220,220,160,211,233, 90, 84, 37, 47, 81, 74,245,132,144,245, 23, 47, 94,156,223,166, 77, 27, 76,152, 48, -161,253,197,139, 23,219,183,105,211, 6, 62, 62, 62, 56,127,254, 60,118,237,218,117,144,227,184,241, 0,178, 40,165, 92, 85,210, -168, 72, 48,134,212,175, 95,127,184,171,171, 43, 86,174, 92,169, 11, 9, 9,153,180,104,209,162,213,247,239,223,151,215,171, 87, - 79, 20, 18, 18,194, 87, 39,221, 45, 45, 45, 81,204,105, 97, 97,241, 84,171,213,182,144,201,100, 24, 48, 96, 0, 52, 26, 13, 18, - 18, 18, 56, 43, 43, 43,241, 95, 81,214, 81, 66,230,126,244,241,196, 31, 62,254,104,184,162,105,147, 70, 40,200,137,131, 42, 47, - 25, 5,185, 73,248,126,107, 16, 8, 17,193,214,214, 17,118, 14, 46,136,142,142,193,181,223, 78,104,243, 11, 84,107,100,122,126, - 89,197,156,159, 23,114, 54, 46,228, 44,200, 79,129, 42, 47,165,132,211,206,206,169,136, 51, 26, 87,175,159, 80,171,242,243, 87, -105, 41,249,238,143,124,247,255,156,192,202,204,204,156, 52,118,236,216, 14, 51,103,206,180,102, 89,150,177,178,178, 66,116,116, - 52,123,240,224,193,140,188,188,188, 73,213,122,168, 68, 18,226,233,229,221,161,111,223,190,236,123,239,245,145,142,252,176,187, -216,214,206, 14,217, 89,233,136,140,184,143,199, 97,193,240,244,110,136, 5, 11, 87, 3, 22, 22,149,206,212,201, 75,142,188, 96, - 98,239,213,251,235, 47,191,216,215,166,125, 87, 51,239,122, 13,165,141,106,155, 67,167,103, 17, 23, 23,135,163, 71, 30,232, 66, -239, 94,201,225, 89,237,144,252, 84,195,150,202,185, 88, 56,128,119,115,125,123,178,107,201,242,239,167,109,216,188,125,250,204, -137, 31, 25,183,245,239,130,135,103,127,194, 47,199,247,229,171, 53,218,229, 82, 6, 43, 31,166,209,130,170,198,129, 90,173,214, -191, 62,116, 68,173, 86,235,223, 54, 65,183,111,223,142,164,164, 36, 93,108,108,236, 89,150,101, 15, 87,101, 54,226, 58, 74,181, -129,132,156,253,210,223,191,251,151,167, 79, 43, 70,205,152,161, 29, 49,114,228, 23,208,104,116,144,201,168,216,216, 88, 4,185, - 92,242,232,234, 85,163,181,159,126,106, 69,180,218, 51, 63, 85,210,250,124, 13,239,124, 22, 97, 41, 11, 22, 70,125, 52, 5,170, - 82, 22,172, 27,119, 34, 81, 21, 11, 86, 81, 33, 30, 67, 8,105, 57,113,238,151,135,134,116,235,228,227,231, 94, 67,110,235, 81, - 3, 38, 14, 14, 72, 79, 77,197,213, 59,143,245, 11,247, 29, 10, 45, 18, 87, 6,249,133,225,121,190,100,150, 91,167, 73, 51, 65, - 24, 6, 40, 18, 2,197, 51,129, 60,154,181, 6, 17,139,193, 81, 30, 26,141,134, 26, 16,206, 56, 66,200,128, 17, 35, 70,156, 59, -126,252,184,168, 91,183,110,141, 14, 31, 62,204,191, 77,222,209,235,245, 46, 69, 66, 43, 71,169, 84,138, 71,143, 30, 13,189, 94, -143,130,130, 2,100,103,103, 35, 60, 60, 92, 51,104,208, 32,121,145,112,208, 15, 25, 50,164,210,242, 99,213,129, 56,245,212, 65, - 46,235,172,196, 47,135,230,164,133,120, 88,137, 95,190,104,233,199,175, 91,117, 32, 78,253,245, 20,139, 69,105, 47, 47, 69, 38, -230,159,254, 97,199,161, 95,152, 15,250, 15,224, 92, 76,158,204, 82,216,209,131, 29,251, 84, 90, 9,189,225, 84,244, 45, 60,224, -191, 2,157,142,222,179,182,182, 92,218,188,121,243, 57,171, 86,173, 50,177,181,181, 5,203,178,120,254,252, 57,214,175, 95,159, -159,153,153,185,152, 82,122,215, 16, 46, 47, 47, 47, 15,177, 88,140,189,123,247, 2,192,250,162,195,235, 15, 31, 62, 60,228,163, -143, 62, 66,141, 26, 53,124, 9, 33,114, 90,133,239,136, 82, 90,210,171,240,142, 43,246,103,107,215,174,117,118,112,112, 32, 39, - 79,158,100, 25,134, 57, 86, 13,154,165,187,118,237,106,197,243,124,167,182,109,219,162, 78,157, 58,197, 22, 79, 28, 57,114,100, - 31,199,113, 35, 42, 18, 86,134, 32, 60, 60,252, 74,108,108,236,208,105,211,166, 73, 87,173, 90,181,122,234,212,169,242,216,216, - 88,132,133,133,221,122, 11,206,107,177,177,177,131,139, 56,213,102,102,102,242, 37, 75,150, 96,202,148, 41, 52, 34, 34, 98,148, -149,149,213,206,191,170,146,142,120,146,190,179,126, 45,251,211, 11, 23,173,154, 95,187,150,199,184, 49,163, 7, 51, 94,158,245, -144,159, 29, 7,107, 27,123,184,184,214, 68,106, 74, 26, 78,157, 58,201,165,165,101,253,200,137,200,215, 79,158,164, 39,188, 13, -167,179, 75, 77,164,164,164,224,196,137, 19, 92, 86,102,206, 22,232, 69, 11,195, 94,102, 38, 67, 64,149,251, 60, 43,221, 0,216, - 88, 90, 90,238, 49, 51, 51, 75, 54, 51, 51, 75,182,180,180,220, 3,192,198,128,251, 58,151,252,167,148,121,101, 27, 56, 80, 1, -133,162, 37,196,226,169, 22,150,150, 39,205,205,205,211, 3, 2, 2,180, 63,252,240,131, 58, 60,252, 17, 31, 31, 31, 75,205,205, -205,115,138,175, 47,139,243,245,205,210,178,150,169,177, 99,189,249,230, 46,141,174,154, 56,250,230,154, 56,250,230,154,187, 52, -188,102,236,232,251,149,165,101, 45, 83, 67,194, 89,222, 86,211, 14,182,158, 54,216,224,109, 75, 84,158, 54,216, 80,211, 14,182, -134,190,123, 5,215, 44, 37, 4, 28, 33,224, 80, 56,157, 26, 85,229, 44,197,193, 51, 12,243,147,155,155,155, 3, 0,198,144,116, - 45,143,115, 36, 80, 99,164, 92,254,241,129, 89,179, 70,189,184,120,113, 68,206,243,231,195,178,159, 61, 27,124,127,223,190, 33, -235,135, 12, 25, 57, 76, 46,255,100, 32, 80,203, 80, 78, 71, 71,199,165,193,193,193,199, 13,221, 28, 29, 29,151, 86, 53, 62,107, -213,116, 62,221,173,115, 11, 58, 97,108, 32,157, 48, 54,144,118,235,220,130,214,170,233,124,186,186,105, 4,128, 48, 12, 51, 84, -169, 84,238, 49, 86, 42, 31, 26, 43,149, 15,149, 74,229, 30,134, 97,134, 2, 32,134,114, 90, 91, 91,223,181,183,183, 79,174,202, -102, 99, 99,115,175, 10,225, 28,230,225,225, 17, 43, 18,137, 86, 27,154,230, 6,112,182,102, 24, 38, 27,128,174,244, 38, 22,139, -227, 74, 93,227, 46,151,203,111, 40, 20,138,253,134,112,126, 55,183,222,252,107, 65,159,133,124, 55,183,222,252,215,207,125,222, -207,242,195,155,231,190, 78,255,188,159,229,135,134,132,211,206,206,238,162,157,157, 93,162,157,157, 93,162,189,189,125,133,155, -141,141,205,221,234,124,155,148, 82, 64,130,102, 54, 54, 54, 65,102,102,102,169,102,102,102, 41, 54, 54, 54,167, 1, 52,173, 74, -124,138, 68,162,101,190,190,190,106,134, 97,254,247,218,245, 43,106,215,174,173, 22,139,197,203,171,248,189,155,181,109,219,150, -123,240,224, 1,109,223,190, 61, 5, 96,249, 14,211,221,193,210,210,242,164,153,153, 89,140,169,169,233,247, 0,140,171,195, 89, -212,197, 60,171, 86,173, 90, 73, 1, 1, 1,180, 86,173, 90, 49, 0, 62, 3, 32,122, 71,225,108, 18, 24, 24,168,139,137,137,161, -148, 82, 26, 19, 19, 67, 3, 3, 3,117, 0,154,188, 5,103,179,114, 56, 71,190,109, 57, 95,213,173, 34, 78,159,154, 54,181,234, -214,177,220, 63,124,128, 63, 31,116,116, 53, 93, 48,103, 28,237,210,190, 30,245,174,109,121,200,211,211,218,243, 93,112,206,159, - 51,150,118,110,231,203,251,212,178,220,231, 83,211,166,214,159,249,238,255,182,141, 84,115,169,170, 42,155, 58,137, 33,222,101, -157,156,156,144,158,222, 66, 33, 22,251,203,229,242, 14, 34,145,232,114, 70, 90,218,231,133,166,123,112,127, 69,247,211,235,168, - 93,155,200,202, 91, 58,160, 58,156,175, 15, 80,175, 14,103, 85, 56, 12,229, 44,111,177,103, 94,163, 73,176,102,217,187,235,104, -249,113,240, 58,167,139,139,203,199, 60,207,123, 24, 26, 38,145, 72,244, 34, 46, 46,110,107,117,226,211,203,203,139, 62,121,242, -196,160, 65,146,127,117, 94,250, 47,113,238, 92,221,192,201,187,126,221,233, 15,131,195, 87, 20,117, 31,150,224,235,137, 86,166, -254, 29, 3,230, 93, 61,127,241,155, 5,235, 50,114,255,109,239, 78, 8, 17,149, 53, 14,174,120, 46,122, 85, 57,165, 82,233, 15, -205,155, 55,255,248,230,205,155,255, 99, 89,246,147,191,235,187, 23, 45,109, 36,163, 85,179,114, 27, 20, 78, 66, 72, 19,134, 97, -166,250,250,250,182, 8, 11, 11,187,197,113,220, 42, 74,105,240,223,141,243,143,202,159,190,158,214, 77, 41, 45,113,150,189, 56, -252,105,250,237,119,198, 73,121,142,167,204,162,199,207,210,238,253,217,239,254,159,235, 34,124,103,150,178, 34,129, 84, 33, 18, - 18, 98, 1,196, 2, 56,240,119,141, 48, 67,196, 85, 21, 45,136,201,127, 7,142,178,186, 11, 1, 92,127, 23, 92,175,139,165, 63, - 18,145,145,145, 68,248,172,255,126,120,127, 74, 72, 2,128,201, 77,203,112, 77, 85, 36,170,166,119,120,239, 95,219, 75,192,151, -115,188, 90,173, 91,157, 78, 55,142, 16, 50,181, 42,179, 15,255,162,247,166, 0, 52,127, 16,119, 48,128, 97,127,119,206, 63, 10, - 97, 79,210,239, 2,232,243,119,231,252,175, 67, 36, 68,129, 0, 1, 2, 4,252,227, 68,155, 74,136, 5, 1, 2,254,222, 32, 0, - 58,151,243, 1, 27,108,250, 35,132,116,174, 70, 1,113, 86,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,255, 22,231,127,169, - 37,244,135,109,248,147, 7, 0, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,207,228,252,183,109, 66, 23,161,128, 63, 28, -223, 7, 18,231,239, 3,137,243, 31,117,189, 0, 1, 2, 4, 8, 16,240,119,131,248,175, 14, 0, 33,196, 9,133, 14,242,106, 3, -120, 12,224, 10,165, 52,243, 45,248,108, 0, 12, 38,132, 12, 42,178,208, 29, 0,176,159, 82,154,102,200,253, 70, 70, 70,201,106, -181,218, 14, 0, 20, 10, 69,138, 90,173, 46,189,230, 0, 41,181, 1, 0, 45,222, 42, 26,176, 90,179,102,205,100,141, 70, 99,103, -192,227,179, 41,165, 33, 34,145,232,161,137,137,201,249,199,143, 31, 31,175,202,187,119,236,216,113, 20,195, 48,139, 1,128,227, -184,185,231,207,159,223,254, 7,166, 91, 11, 87, 39,135,159,116,122, 29,155,156,154, 49,143, 82,122,180,172,235, 54,246, 33, 75, -197, 4,211,139,254, 47, 31,127,140,206,174,136,183,170,215, 87, 16,190,166, 18,137,100,130,189,189,125,143,184,184,184,187, 0, -102, 80, 74, 43,245, 66,236,230,230,246,190, 88, 44, 30,193,113, 92, 45,134, 97,158,177, 44,187, 43, 38, 38,102,167, 80, 84, 8, - 16, 32, 64,128,128, 63, 76, 96,213,181, 33, 14, 20, 24, 10,130, 46,160, 56, 67,128,189, 17,105, 52,201,208,251,123,213, 37,122, - 61, 91,248, 76,169, 8,220,201, 40,209,150, 94,189,122,185,124,254,249,231,104,221,186, 53,110,222,188,217,234,199, 31,127,252, -144, 97,152, 16,158,231, 47, 0,184, 73,169, 65, 46, 17,140, 1,244, 5, 48,188, 71,143, 30,157, 23, 47, 94,204,212,171, 87, 15, - 42,149, 10, 23, 47, 94,244, 95,190,124,249, 26, 66,200, 89, 0,187, 1, 28,165,148,230,151,199,165, 86,171,237,138,181, 18, 33, -196,110,192,128, 1,119, 74,175, 17, 71, 8,129, 72, 36, 2,165,244, 6,128, 27, 60,207,223, 56,112,224, 64,108, 93, 66, 90,140, -245,144, 30,156,244, 92,235,242, 58,167, 70,163,177, 59,242,221, 18,136,229,114,104,114,115,208,106,244,239, 51,171,207,204,159, - 14,194,179, 96, 64, 51, 59, 44, 90, 19, 2,224, 97, 66, 66, 66, 72,251,246,237, 95, 84, 53, 49, 25,134, 89,124,234,212, 41, 71, - 74, 41,186,117,235,182, 24,192, 31, 34,176, 8, 33,242,150, 77, 27, 94, 56,246,203, 30, 69, 94, 70, 50,186,247, 29,178,139, 16, - 50,138, 82,250,203, 43, 98,169, 39,177, 39, 98, 76,255,116,201,110, 6, 0, 54,206, 25, 62, 99, 77, 55,178,110,242,105,154, 68, - 8,233, 0,148, 44,173,244, 29,165,244,194,198,158,196, 30, 12,102,126,186,100, 55, 1,128, 77,115,134, 79,223,216,147,172, 29, -127,162,106,179, 36, 9, 33,227, 71,141, 26,181,110,241,226,197,140,163,163, 35,226,227,227,187,251,250,250,122, 17, 66,124, 43, - 26, 28,236,225,225,177,175, 67,215,126,181, 2, 7, 13, 53,178,177,182, 68,124, 98,170,249,254, 61, 63,142,245,240,240,232,241, -226,197,139, 33, 66,113, 33, 64,128, 0, 1, 2,222,153,192,106,226, 68,140,242,117,232, 39,102,200,251,109, 91,212,235, 52,172, -103, 91,145,175, 79, 29,132, 61, 10,239,122,244,252,173,229,190,246,162,115, 44, 71,119, 26, 75,113, 36, 56,161,226,153, 45,122, - 22,226,160, 35,187, 1, 0,227, 63, 28,206,220,190,125,187, 78,147, 38, 77, 74, 86, 80,239,212,169, 19, 58,117,234, 68, 54,110, -220,216, 48, 40, 40,168,225,182,109,219,116,132,144,159, 40,165,191, 85, 80,153, 78,168, 93,187,246,242,117,235,214,201,219,183, -111, 15,185, 92, 94,114,206,196,196, 4,125,250,244, 65,159, 62,125,152,132,132,132,110,199,142, 29,235,246,221,119,223,105, 9, - 33, 95, 80, 74,215, 27, 18, 65,243,231,207,111, 82,198,225, 83,132,144, 40,150,101,239, 53,104,208, 32,214,155,144, 58,227,122, -182, 62, 51,190,141,167,113,185, 17, 45,147, 97,199,168,194, 58,186,180,192,122,113,254, 36, 76,204, 76,211,149,166,166, 33, 0, - 30, 2, 8,161,148, 62,140,138,138, 10,247, 33,164, 97, 75, 75,209, 79,219, 50,184, 6, 85, 16, 89,136,141,141,133,185,185,185, - 81, 64, 64, 64, 34, 33,228,171, 11, 23, 46,108,121,199,249,166,197, 87,211,199, 75, 51, 95,134, 32, 41,226, 6,166, 14,242, 87, - 78,254,254,215,111, 0,252, 82,177,240, 17,137,190,187,206,207,154, 12, 76, 2, 48, 47, 61, 61,189, 61, 0, 88, 91, 91,203, 0, - 92, 88,125, 11, 61,167,180, 33,213,118,179, 64, 8,145, 50, 12,179, 97,199,142, 29, 31,189,255,254,251,133, 75, 60, 92,189, 10, - 19, 19, 19, 44, 92,184,176,198,180,105,211,150,162,240,217,101, 90,174, 2,186,244,171,185,102,249, 55, 62,185, 25,217,154,205, - 27,246,223,113,246,243,102,198, 77,152,102,186, 94,175,117,112,115,115,123, 95,176,100, 9, 16, 32, 64,128,128,119, 34,176,188, -109,201,246,182,141, 61, 7, 15,235,229, 47,175,239, 87, 15, 82,249,239,139,187, 54,105,218, 20, 77,154, 54, 21,205,202,203,237, -114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, 84, 58,202,208,135, 23, 47, 22,187,184,175,125,199,252,172, 20, 5, 0, - 24, 91,216,169,231, 28, 73, 58,223,166, 77, 27,184,184,184, 72,207,157, 59, 55, 6,192,111, 21,208,204,121,252,248,177,156, 97, - 42,246, 99,234,228,228,132,129, 3, 7,194,219,219, 91, 22, 16, 16, 48, 7,191, 47, 91,241, 10, 20, 10, 69, 10, 33,196, 14, 0, -172,172,172,184,175,190,250,234, 1, 45, 2, 0,240, 60,127,131, 97,152, 27, 60,207,223, 58,122,244,104, 92, 61, 66,236,122, 55, -241,190, 50,126,228, 64, 37, 61,184,166, 92,113,160,206,201, 41,243,184,210,196, 56,213,200,216, 56, 68,174, 84, 60, 4, 16, 2, -224,161,179,179,115,120, 61, 66, 92, 90,122,123, 4,109,156, 50,220,212,144,184,108,210,164,137, 87,135, 14, 29, 20, 28,199, 33, - 63, 63, 31,155, 54,109, 50, 55, 50, 50, 50,239,209,163,199, 2, 0, 37, 2,203,151,144,250, 3,156,152, 79,190,138,103, 63,171, -134,128,177,104,219,170,233,203,239,151, 45, 48,107,218,178, 45,158, 92,248, 25, 25, 25,185,200,206,202, 3,207,243,111,172,252, - 59,254, 4, 77,222,216,135, 44,223, 56,123,248, 76, 34, 18,145,134,253,103,224, 61,135,236,137,132,144, 71, 0, 36,197,171,213, - 3, 16, 19, 66,156,252,252,252,150,215,233,218, 22,155,230,142, 4,229,121, 10, 96,185,161,214, 43, 66,136,157,169,169,233,209, -160,160,160, 22,205,154, 53,195,205,155, 55,241,252,249,115,140, 31, 63, 94,251,217,103,159, 73, 63,248,224, 3, 50,117,234,212, -207, 9, 33, 7, 41,165,215,222,248, 16,196,226, 17,125, 3,135,200,242,178,114,212, 58,173, 78,107,109,109, 78,213,249,234,220, -244,204, 28,213,224,161, 31,233, 30, 6,223, 28, 1,224, 13,129,245, 54,241, 41, 64,128, 0, 1, 2, 12, 70, 51, 0,182, 0, 82, - 1,220,121,109, 31, 69,255, 81,198,126, 26, 10,135,245, 88,151,226, 74, 67,225,240, 30, 91, 20,250,232,188, 13, 32,243, 93, 7, -152, 80, 74, 81,228, 80,184,216,177, 48, 41, 37,176,232,227, 84, 10, 54,227, 25,184,244, 40,112,185,111, 46,111, 68, 20, 22,200, - 86,113,136,125, 22,142, 81,147, 23,226,113,106,249, 30,180,123,213, 37,122,115, 25,196,166, 82, 64,170,180,208, 12, 91,118,250, -122,211,166, 77,213,115,218,139,122, 45,221, 88,104,217,154,250,201,112,180,154,114,240,244,179,103,207, 88, 39, 39, 39,188,255, -254,251,160,148,246,174,160, 98, 77,206,189,115,221, 46,162,119,107, 52, 79, 46,123, 24, 84,100,100, 36, 46, 95,190,140,152,152, - 24,212,170, 85, 11, 99,198,140, 73,161,148,218,151,199,217,189,123,247, 75,223,125,247, 93,187,149, 43, 87,134,236,216,177,163, - 13,165,101,175, 53,232, 75,136,113,195, 26, 14,119,182, 45,157, 89,139,156,252, 73, 82, 16,243, 20, 22,151, 84,164, 12,113, 71, - 19, 18,126,143,187,111,189, 28, 97,108,110, 10, 99, 51,147,228, 15,130,238,150, 88,174,138,126, 31, 55, 33,196,204,197,209,250, -238,222,213,243,156, 69,231,247, 41,164,155,111,144,202,196, 85, 64, 64,192,245,197,139, 23, 91, 38, 36, 36,224,236,217,179,168, - 81,163, 6, 10, 10, 10,176,106,213,170,196, 43, 87,174, 56, 21,133,215,190,185,183,123,200,166,105,163,205,165, 99,230,203,171, -154, 89,164, 98,241,250,235,167,246,125,102, 46,167,200, 74,120,142,168,240, 71,184, 29,246, 66,191,243, 76, 8,151,163,210,244, -162,148,158, 47,235,190, 9,254,164,206,133, 4,219, 99,167, 46,222,241,116,116,116,196,216,177, 99,145,148,148, 4, 74, 41,120, -158, 47,153,113, 49,103,206, 28,120,121,121, 97,212,208,247, 10,228, 25,193, 1,199,194, 12, 91,239,141, 16,226,231,238,238, 30, -116,225,194, 5,123,103,103,103, 92,185,114, 5, 73, 73, 73,112,112,112,192,185,115,231,176,108,217,178, 29,159,126,250,233,160, -197,139, 23, 43,134, 13, 27, 22,127,250,244,105,215,215,199,204,213,168, 81, 35,252,216,233, 43, 38,231, 14,159,126,102,105,106, - 12, 19,123, 43, 48,166,150, 42, 80,168,236,109,205,165, 67,250,117,174,253,242,229, 75,159,215,210,255,173,226, 83,128, 0, 1, - 2, 4,188, 82,150,151,169, 69,138, 37, 4, 33,228,120,145, 30,208, 2,144,149,218, 7, 33,228, 56, 0,188,190, 63,107,214,172, - 57, 75,151, 46,125, 84,188, 95,124,205,236,217,179,235, 45, 91,182,108, 73,171, 86,173,246, 94,191,126,253, 43, 0, 79,255, 84, - 11, 86, 49,216,184,219,144,122,246,128,132,211, 67,159,246, 24,124, 86, 52, 96,236, 0, 21, 49, 65,122, 98, 52, 34,174,252, 82, -168, 5, 43,193,111, 17, 84, 66, 8, 57, 23, 30, 30,142,136,136, 8,196,198,198, 66,169, 84,190,113,221,213,171, 87, 97,100,100, - 4, 71, 71, 71,131, 94,130,106, 95,117, 22, 28,210,196, 29, 38,173,218, 35,109,216, 56,156, 59,119, 14, 41, 41, 41,144, 74,165, -144,201,100, 96, 89,182, 82, 62,145, 72, 68,138, 18,129, 2, 40,211, 11,115, 0, 33, 98, 23, 43,147, 99, 27, 23, 76,242, 16,221, - 56, 46, 81,197, 60, 69,130,154,131,133, 33,150, 59, 19, 99, 40,141,149,137, 70, 70,202,215,197,213,147, 38,132, 72,140, 77, 20, -199,126, 90, 52,213,129,185,119, 78,161,122, 26, 2,105, 25, 28, 93,186,116, 25, 11, 96, 1,165, 52, 43, 32, 32,192,126,241,226, -197,150,241,241,241, 8, 11, 11,195,254,253,251, 83,217,194, 23, 37,148,210,175, 1,160, 21, 33, 10, 55, 91,139,211,235,231, 79, - 50,197,133,125, 50,140,153, 95,229,204, 98,238,211,231,183, 1, 31,124,250,217,186, 73,125,144,159,171,194,238, 51,247,112, 42, - 56,234, 61, 0, 87, 43, 26,215,182,254, 42,125, 74, 8,233, 20, 24, 24,120,255,242,229,203, 54,219,182,109, 3,203,178,101,110, -219,182,109,195,217, 43,193, 19, 13, 93, 76,151, 16,226,228,225,225,113,246,214,173, 91,182, 74,165, 18,103,206,156, 65, 86, 86, - 86,137,229,106,212,168, 81, 36, 43, 43,107,232,166, 77,155, 6,188,124,249,114,197,149, 43, 87,210, 81,184,108,211, 43, 25,129, - 97,152, 40,150,213,213,117,242,241,100, 6,245,105,219, 54, 47, 61, 4, 38,214, 13,112,243,126,212,241,236,172, 12, 21,195, 48, - 81,165,175,127, 23,241, 41, 64,128, 0, 1, 2,170, 44,194,142, 83, 74,123,151, 22, 76,175, 11,173,226,255,197,215, 45, 93,186, -180,119,105,241, 5, 0,203,150, 45, 91, 82,106,191,224,143, 8,171,248,119,189, 64, 40,128,128,178, 46,210,132, 29,130, 38,226, - 40,164,238,109, 32,243,126, 15,140,187, 63, 98, 66, 46,224,193,201,213,136,123,116, 21,148,231,224,232,213,220,208,103,170,235, -214,173, 11,181,186,112,232,149, 70,163,129,212,216, 82, 61,245,147,225, 10, 0,224,197, 10, 77, 41,149,105, 16,161,105,155, 14, -104,158, 76,113,219,190, 80,240, 22, 91,178, 22,141, 30, 13,169, 84, 10,169, 84,138,226,129,234,134, 8,172,162, 53,180,138, 87, -171,167,101,157,111, 42,151,236,222,187, 96, 66,115,249,203,135, 50, 77,232, 13, 36,104,120,122, 44,153,251,205,215,128,240, 42, -141,149,241, 70, 74,229, 67, 35, 19,227,210, 2, 43, 10, 0,168, 68,178,243,231,175, 39, 52, 48, 78,126,102,172,190,115, 14,137, -106, 94,103, 86, 54,205,215, 39, 79,158,180, 19,139,197, 14, 28,199, 33, 38, 38, 6,143, 30, 61,194,218,181,107,147,115,115,115, - 3,130,131,131, 35, 75,133, 87,212,204, 72,182,127,231,194, 73, 53,197, 33,151, 20,154,168,208, 50, 69, 91, 69,176,173,223,191, -219,123, 1, 13,127, 27, 59,114, 46,250,245,236,138, 15, 2,124,233,139,132, 12, 53,128, 51,148,210, 74,151, 65,162,148,198, 19, - 66,186,180,107,215,110, 87,163, 70,141,124, 40,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,201,201,209, - 5, 5, 5,173,161,148,254,104,224,135,166,180,180,180, 60,117,254,252,121, 91,165, 82,137,160,160, 32,168, 84, 42, 56, 58, 58, -226,179,207, 62,147, 45, 91,182,108, 71, 78, 78,206,160,165, 75,151, 42, 94,188,248, 63,123, 95, 29, 94,197,241,127,125,102,247, -122,238,141,187,160, 9, 9, 49, 8, 78,112,135,226, 46,197,161, 72,177, 34, 45,238, 69, 10, 20, 43,180,184, 22,119,119,119,135, - 16, 2,129,144, 16,119, 79,174,239,206,251, 71,164, 33, 68,110,128,190,191,126,219,123,158,103,159,123,215,206,206,206,204,206, -156,249,204,204,103, 66,215,157, 63,127,190, 34,114, 22,156,253, 36, 19,104, 52,154, 77,123,118,237, 88, 59,102,236, 56,231, 43, -247, 2, 47,171,179, 50,204,203,149,143,200,176,177, 82, 40, 86, 45,155, 95, 78,163,209,140, 44, 58, 62,175,125, 86,124, 26, 97, -132, 17, 70, 24, 81,148,237,162,120, 45, 82, 80, 52, 21, 22, 89,101, 17,103, 0,148,211,166, 77,155, 65, 8, 57,149,107,225, 82, - 2,136,254, 91, 4, 22,165,244, 58, 33, 4,148,210,235,197, 94,201,115,208,134,222,128, 54,244, 6,100,254,227,113, 98, 73,191, - 66, 47,205,127,118, 32, 58, 45,184,120, 69,173, 86, 11,118,236,216,145, 63, 46, 11, 0, 56,142,251,234,169,103,136,192, 66,238, - 18, 66,185, 2,235,147, 64, 84,146, 40,174,111,154,216,171,190, 53,151, 45,212,220, 58,137, 40, 53,175, 95,241, 86,155,253, 48, -149, 46,155, 81, 12,225,177, 31, 70, 34,226,230, 37,152, 40, 20, 17,195,111,188, 40,104,181,122, 14,224, 61, 0, 84,146,154, 93, - 62, 48,169, 95, 35, 7, 17, 68,154,211, 7, 17,173,230,213, 27,194,116,219,214, 20,157,201, 64, 41,197,251,247,239,145,157,157, -141, 59,119,238,224,240,225,195, 9,133,197, 85,110,120,175,109,253,169,127, 61,179,140, 88,145,230,225, 37, 68,171,121,181,135, - 33,162,170,122,183,134, 34,134, 92, 32, 12, 43,107,223,216, 27, 63,124,215, 13,171,182,158,208,107,236, 26,119, 92,123,252, 76, -239, 76,181,118,134, 33,226,170, 64,152,159, 3,240, 38,132, 72, 0, 52,239,219,183,239,153, 30, 61,122,224,250,245,235, 56,121, -242,164, 59,128,152,220,143, 96, 1, 0,123,228,204, 46, 12, 41,230, 67, 97, 68, 34,209,190, 75,151, 46,249, 56, 57, 57,225,210, -165, 75, 80, 42,149, 24, 61,122,180,102,236,216,177,162,193,131, 7,147,180,180,180,124,203,213,157, 59,119,146,138, 19, 87, 0, - 16, 25, 25,121,182, 98,197,138, 13,155, 52,105,210,181,178,123, 85,179,144,140,244,120,133,137, 84,118,243,250, 85,209,227,135, -119,215, 69, 70, 70, 62, 40, 58, 62, 47, 27, 28,159, 70, 24, 97,132, 17, 70,148, 88, 71,148,174, 69, 10, 89,162,202,200,159,119, -159,112,201,146, 37, 47,151, 44, 89,242,145,133,235,239,178, 96,149, 9, 92, 90,248,167, 1,231,249,178,188,228, 39,199, 44, 45, - 45,245, 50,153,236, 35,129,197, 27,200,153,124,116, 47, 66,190,255, 54,223,114,149,103,201, 66,187,193,159, 37,176,242, 44, 88, -185,131,161, 63, 10,132,220,190,106,191,125, 3, 90, 55,244,174,236,204,232, 14,172, 65,100,182, 94, 53,247,181, 86, 21,148, 65, - 59, 7, 22, 49,120, 58,159, 83,175,131, 84, 46,251, 32, 83,200, 11,139,171, 48, 0, 80, 56,120,244,216,217,175,121, 51,191,170, -110,140,126,255, 74, 68,101,235, 50,167,189,210,106, 67,178,232,145, 98,226,112,110,155, 54,109,230, 90, 91, 91, 75,215,174, 93, -107, 94,161, 66, 5,232,245,122, 77, 97,113, 37,183,175,218,111,255,224,118, 13, 61, 28, 44, 25,221,161,223, 16,161,228,178,215, -132,232,118,110, 48, 64, 92,217,152, 43,206,111, 88,252,189,204, 68, 34,132, 74,165,194,210,223, 15,225,194,237,128,142, 9, 47, -142,158, 7,112,254, 11,242,221,240,142, 29, 59,174, 90,176, 96, 1,116, 58, 29,134, 13, 27,134,119,239,222, 93,120,253,250,245, -154,242,229,203, 79,249,233,167,159,156, 28, 28, 28,208,187,119,111, 17,128,193,197,112,252,178,103,207,158,142,126,126,126,184, -126,253, 58, 82, 83, 83,225,232,232,136,177, 99,199,138,151, 44, 89,178, 51, 61, 61,189,215,226,197,139,165,239,223,191, 47,209, -114, 85, 40,111, 44,220,184,234,251,201,117,234, 55, 98,222,190,125,163, 15,175,219,148,185,122,233,228, 13, 75, 75,203,157, 31, -197,231,144,111,202, 28,159, 70, 24, 97,132, 17, 70,124, 53,156, 6,208,161,176, 85,171,176,248,202,179, 80, 21,220, 47,124,125, -238,249,191,101, 81,114, 65,129, 0, 26, 60, 61,158,207, 74, 48, 72, 52, 21, 70, 7, 79,162, 27, 89, 7,130, 25, 77, 25,136,228, -150,170, 78, 11, 46, 94, 41,238, 90,185, 92,110,176, 5,139, 87,171, 74, 19, 76,101, 18, 88, 44,203, 18, 0,231,120,158,191, 91, - 80, 96, 89, 56, 84,109, 58,107,234,132,213,141,122,180, 99,226,190,243, 71,106,166, 90,253, 83,160,158,143,204, 46, 89, 92,229, -168, 82, 93,168,137, 92,241, 66, 42,255,104,220, 85, 56, 0,200,236,171,212,157, 54,113,220,239, 45,250,117, 34, 9,163, 27, 33, - 37, 85,169,158,242, 82, 79,162,148,180, 87, 32,165, 87,139,162,187,124,249,242, 70, 0, 27,155, 53,107, 22, 39,151,203,145,153, -153,249, 73, 26,228,133,183, 97,143,118, 76,220,240,122, 72,206,210,170,127,122,169, 71,180,146,223, 87,154,184,178,181, 48, 61, -191, 97,209,247, 38,209,145, 97, 16,137, 68, 80, 40, 20,184,120,235, 5, 18, 2,142,125,137,176, 2,203,178,243,102,204,152, 49, -119,204,152, 49, 72, 74, 74,194,201,147, 39,209,190,125,123,236,221,187,183,194,153, 51,103, 86, 53,111,222, 28, 44,203,226,212, -169, 83,208,233,116,193,197,164,103,183, 17, 35, 70, 76,233,209,163, 7, 30, 60,120,128,152,152,152,143, 44, 87,169,169,169,125, -127,255,253,247, 30,161,161,161,165, 90,174, 10,161,110, 37,183,154,162,233,179,127,133, 58, 59, 94,144, 16,117,239,250,229,139, -204,221,228,228,100, 19, 0,105,159, 27,159, 70, 24, 97,132, 17, 70, 24,108,128, 41, 78,139, 36,228,138,167,132,162,246, 11, 8, -171,162,246, 73, 33,171,151,166,208,249,103,255,103, 22, 44,129,189, 47,244,113, 1, 5, 4, 86,252, 71,231,165,166, 86, 6,117, - 17,234,244, 16,108,216,150,239, 7, 75,154,148,148, 36,181,177,177, 81, 21, 20, 6, 38, 38, 38,112,114,114, 66, 74, 74, 10, 54, -109,218, 4, 0,165, 13,118,214,155,245, 24,128,186,253,134,225,161,139, 24, 84,167,205,183,100,109, 24, 50,228, 35,145, 37, 18, -137,242,198,126,149, 86,217,222, 39,132,132,241, 60,127,151, 82, 74,107,121,184, 46,148,202,229, 67,106, 87,119,179,249,225,251, -225,194,208,120, 53,174, 52,154,158,122,232,151,169,138, 8,170, 24,243,129,166,222, 46,133, 47,164,203, 31,187, 11, 91,174, 34, -107,122,184,206,148,154, 72,191,171,239,235,225, 48,109,210,247,194,208, 56, 53,185, 82,247,167,244,195,203,126, 50,121, 15,211, - 41, 17, 52,229,170, 1,201, 51,183,125,251,246,115, 41,165,148,231,249,217, 0, 80, 48,188,147,198,126, 39, 12,137, 85,225,114, -163,153, 41,135,127,153,106, 26,129,146,195,107, 91,189, 91, 67,123, 75,179,243, 27, 22,143, 49,137,137,250, 0,137, 68, 2, 83, - 83, 83, 68,196,165, 65, 40, 96,149, 95,146,217, 8, 33,146,166, 77,155, 78,253,254,251,239,241,226,197, 11,140, 30, 61, 58, 38, - 60, 60,252,200,254,253,251, 71,207,153, 51, 71,208,182,109, 91,196,196,196, 96,249,242,229,186, 91,183,110, 45, 6,176,188,200, -252, 40, 16, 12, 95,184,112, 33,141,142,142, 38,239,223,191,135,163,163, 35,198,141, 27, 39, 94,188,120,113,254,152,171,178, 88, -174,242, 16, 25, 25,121,221,221,173, 60, 58,159, 93, 13,189, 78,125, 61, 53, 41,252, 70, 80, 72,202,117, 43,177,120,114,163, 90, -213, 63, 43, 62,141, 48,194, 8, 35,140,248, 42,120, 88,202,254, 63, 14,165, 9,172,224,223,102, 14,117, 31, 58,230, 71,200, 42, - 52,132,250,213, 81,240,153,113,249, 22, 44,169,194, 18, 86,229,189,144,154,165,198,193,203,143, 1, 32,184, 44, 15,207,200,200, - 64,173, 90,181,176,126,176, 71, 11, 85, 70,146, 84, 6, 64, 45, 49, 83, 29, 19, 55,190,114,230,204,153,108,158,231,247, 1, 56, - 83, 10,205, 60, 31, 31,159,117,191,254,250,171,216,171,223, 80,100,222,187,249,209, 73,134, 97, 32,147,201, 32,145, 72,240,252, -249,115, 92,185,114, 69, 3, 96, 94, 41, 66,224,190, 94,175,127,118,240,224,193, 8,119, 87,151,118,205,234,212, 29, 63, 99,250, - 52,211,192,155, 23, 48,123,241, 58,190, 74,237,182,105, 75,247, 30,203, 72, 83,148,111,153, 29, 29,244,212,128, 87,125, 86, 72, - 92, 69,123, 85, 46,223,194,191,102,141, 31,103,207,158,105,246,242,230, 69,204, 89,182,129,186,251,181, 74, 91,118,248,120,122, -162, 73,197, 54,202,184, 87, 15, 12,137,195,107,215,174,109, 4,176, 49,111,191,112,120,167, 45, 88,195,123,212,105,151,178,116, -239,225,172,116,211,242,173, 74, 10,175,157,119,247, 6,229, 28,173,206,255,246,243, 40,147,216,168,112, 72, 36, 18, 40, 20, 10, -132,199,164, 98,238,234, 3, 89, 90,158,111,247,133,249, 77, 98,106,106, 42,209,106,181, 88,191,126, 61,194,195,195,253, 41,165, -225,132,144, 13,125,250,244, 89, 91,173, 90, 53,207,151, 47, 95, 6,103,102,102,142,161,148, 6, 21, 71, 98, 97, 97,225,111,107, -107, 75,238,222,189,139, 81,163, 70,105,198,141, 27, 39, 26, 52,104, 16, 73, 73, 73,249, 92,203, 21, 0,192,197,197,165,105,151, - 14, 13,208,176,245,232,235, 26, 85,234,141,208,160,157,215, 25,122, 91, 90,171, 70,245,207,138, 79, 35,140, 48,194, 8, 35,254, -219,230,184, 98,183,166,128,192,195, 26, 35,125,156, 69,177,187,126, 25, 71, 51, 66,238, 80,229,131,141, 52,253,232,119,244,244, -242, 65,244,204,111, 63,208,209, 29,124,168,167, 29,137,245,176,198,200,166,128,160,164,213,182,219, 87,133,174,181, 27,104,107, - 55,208, 14, 30,208, 1,152, 81,179,102,205, 99, 99,235,130,210,192, 61,148, 6,238,161, 99,235,130, 2, 24, 5, 64, 97,232, 10, -222, 0, 28, 1,108,170, 85,171,150,254,234,213,171,244,117,175, 86,244,137,167, 13, 29, 51,102, 12,157, 51,103, 14,253,246,219, -111,169,173,173,173, 30, 57, 14, 55, 29, 75,227,236,220,185,179, 11,165, 20,229,202,149,179,168,237, 85, 37,246,249,229,147,244, -198,174,181,116,235,216,238,180, 94, 53,175, 68, 7,207, 38,207,100,142, 85,107, 24,186,210,184,131,131,195,116, 74,105, 59, 74, -169, 35,165, 20,238,238,214,138,154,158, 85,162,159, 93, 58, 73,111,238, 94, 71,183,142,237, 78,235, 87,247, 78,114,241,106, 30, - 36,181,243,172,251,185,171,151, 23, 25, 94, 95,207, 68,251, 42, 13,158, 22, 23,222,130,156,149,235,246, 62, 30, 25, 29, 71,239, -223,191, 79,207,156, 57, 67,111,222,188, 73,119,237, 63, 78,203,215,233,149,105, 83,173,107,195, 47, 93,101, 29,128,121,135, 14, - 29,104,112,112, 48,253,230,155,111, 40, 0,243,207,225, 4,112, 44, 52, 52,148, 6, 4, 4,208, 25, 51,102, 80, 0, 59,190,255, -254,123,101, 90, 90, 26,109,213,170, 85, 56,114, 38, 41, 8, 62, 39,156,174,149,156,151,118,235,212,120,222,216, 81, 61,154,126, -105,124,254,147, 87,173, 55,114, 26, 57,141,156, 70,206,127, 26,231,191,109, 43,209,130,117, 45,167,245,191,177,154, 61,249,115, -241,242,223, 38,175,223,184,227,199,169,227,135,203, 27, 55,106,141, 23,151,182,227,240,169,253, 89, 42,181,102,185,136,197,175, - 47, 18,105,169,126, 36, 78, 7, 81, 97, 17,214, 34, 19, 43, 55,228,251, 80,122,155, 2, 80, 74, 55,148, 81, 36,198, 0, 24, 65, - 8,249,181,121,243,230,139,190,107, 88,183,251,216, 6, 45,160,211,233,176,107,215, 46,124,248,240,225, 8,128,153,148, 82,131, - 44,108, 47, 94,188, 72,244,169, 82,113,130,149, 76,244,227,152,111,187,217, 38,188, 11, 68,228,171, 39, 0, 0,181, 90,169,139, -121,115,221,175, 44,225,147,201,100,247,109,109,109, 95,219,218,218,166,112,234,204, 17, 82,129,217,236,209,125,187,216, 37,133, - 6, 33,226,101, 78, 15,168, 90,149,173,141,120,115,197,243,115, 68,114,197,138, 21, 37,114, 33, 70, 22, 25, 94,141, 74, 23, 27, -252,170,134, 33, 60,217,106,205,226,249,171,118,181,249,249,199, 33, 18, 51, 51, 51, 60, 14,120,139,217, 43,247,102, 41, 53,186, -118, 9,207,143,222,254, 90,130, 94,167,211, 25, 60,129,161, 24, 76,245,243,243,171,186,104,209, 34,247,193,131, 7,227, 75, 45, - 87, 5,241,238,125,228,180,102,205,154,121,191,125,253,184,185,149, 76,244,231,151,196,167, 17, 70, 24, 97,132, 17,255, 93, 24, - 52, 6,235, 69, 28,205, 6,176,192,213,158,108,152,190,104,213, 92,134,172, 30,194, 83,186, 93,207, 96,126, 72, 34, 77,248,194, - 10, 55,187,131, 39,209,183,233,250,173, 0, 0,132, 2,232,191,128, 43, 24, 64, 15, 66, 72,157,205,183, 31,204,202, 61,252, 51, -165,180, 76,125,181,166, 2, 4, 52,242,118,117,110, 92,211, 71,202,114, 74, 68,190,122,135,228, 44, 21, 46,190,252,144,202, 80, -102,123, 89,195, 21, 18, 18,114, 13, 0,124,171, 84,124,213,216,219,173,124,147, 90, 62, 38, 66,162, 65,100,224, 99,164, 41, 53, -184,240,242, 67, 26, 8,249,236,129,210, 95, 43,188,177,207,143, 61,180,173,222,173, 21, 33,228,210,140,177,253, 36,115, 87,238, -251,170,226, 10, 64,118, 84, 84, 84, 82,118,118,182,117,116,116,180, 6,159,233,220,141, 82,250,150, 16, 82,237,135, 31,126, 88, - 48,101,202,148, 31,127,249,229, 23,209,231,140,185, 42, 14, 41, 81, 31,142, 54,241,249,122,233,111,132, 17, 70, 24, 97,132, 81, - 96,149, 44, 20,226,104, 2,128, 49,110,110,100,210,187,119, 84,243,181, 2, 81,148,101,235, 11, 69,219, 67, 0,157, 62,155,128, - 33, 25,247,130, 63,100,222, 15,254,144, 9,158, 82,158, 82, 53,195, 32, 34, 75,171, 93,252, 38, 36,242,243,103,209, 17,194, 61, -124, 27,174,124,244, 46, 66, 69,121,158,242,148,106, 8, 65,172, 78,199, 47, 14, 8, 9, 59,254, 79, 8,111,194,243,163,183, 29, -188,187, 55,190,125, 63, 96, 82, 86,150,118, 93, 66,224,209, 59, 95, 49, 93,116,132,144,254,254,254,254, 67, 57,142,219, 64, 41, -213,125, 1,151, 6,192, 84, 66,200,145, 23, 47, 94, 28,184,115,231, 78,204,215, 16, 87,127,107,250, 27, 97,132, 17, 70, 24, 97, - 20, 88, 37,225,107,138,171,127, 34, 94, 4,135,214,250, 59,120, 3,130, 67,125,255, 23,194, 27, 27,120,228, 17,128,190,127, 71, - 88, 41,165, 23, 0, 92,248,154, 98,154, 16, 82, 9, 0,251, 85,196,213,223,152,254, 70, 24, 97,132, 17, 70, 24, 5,150, 17, 70, -252,207, 32,119,205, 72,189, 49, 38,140, 48,194, 8, 35,140,248,167,128, 0,104, 85, 76,165,117,201, 96, 18, 66, 90,125, 70,165, -120,201,200,105,228, 52,114, 26, 57,141,156, 70, 78, 35,231,127,139,243,191,212,250,255,219, 54, 24,167,176, 26, 57,141,156, 70, - 78, 35,167,145,211,200,105,228,252, 15,110,140, 81, 98, 26, 97,132, 17, 70, 24,241,183,117,147, 16, 34,201, 93,224,253,179,206, - 27, 97,196,255, 42, 4,159,241,177, 84,201,181,124,189,253, 27, 63,200,177,142,142,142, 35,170, 87,175,238, 37, 18,137,152,140, -140,140,249, 87,174, 92,153, 87,248,186, 38, 62,194, 71, 44, 3,151, 2,119, 2,132, 5, 24, 6, 28, 69,228,141,103,217,181,141, - 73,252,143, 46,120, 43,200,204,108, 79, 16,134, 21,115,122, 45, 56,157, 22,192, 95,203, 38,241,188,254,131, 94,163,106, 91,220, -253,142, 53,186,151,215,115,116, 41,192,255, 78,192,140,166,224,255, 32,148, 25, 77, 25,252, 78,120,140,130, 64,183, 28,122,225, - 20,129, 72, 48, 51,250,241,193,136,127, 67,156, 29, 58,116,136,253,146,251,123,246,236, 89,228, 2,159,206,206,206,167, 76, 76, - 76,220,138,187, 47, 43, 43, 43, 38, 58, 58,186,249,191, 60, 63, 54, 1,240, 27, 0,159, 66,167,130, 0, 76,160,148, 94,254,210, -103, 52, 35, 68, 96, 15,140, 20, 1, 63, 1,128, 22, 88, 22, 7,108,188,246,149, 38,104,124, 13,216,217,217,221, 16, 8, 4,238, - 89, 89, 89, 89,233,233,233,174,102,102,102, 33,114,185, 92,174,215,235,131,227,227,227,155,148, 49, 78,191, 71,238,146, 87,132, -144, 31, 41,165,191,151,229,188, 17, 70,252,171, 5, 22, 33,196, 3, 64,211,220,173, 73,157, 58,117,236,179,178,178, 64, 8,137, - 3,112, 3,192,117, 0,215, 41,165,111,190, 70,128, 88,150, 93,177,102,205,154,201,227,198,141,203, 95,164,249,249,243,231, 69, - 95,203,192,229,234,169,203,118, 15,159,191, 70,157, 86, 61,115, 5, 22, 3,100,199,162,121,171, 58,159, 91,200,154, 90, 90, 90, -206, 39,132,244, 98, 24,166,212,202,140,231,121,142, 82,122, 48, 37, 37,101, 46,165, 52,163, 44,207, 82,200,165, 58, 61,199, 21, -249, 12, 1,203,114,153, 89,170, 98,221, 87, 88, 91, 91,223, 97, 24,166,114,193,133,172,115,195, 95,228,255,130,251,122,189, 62, - 50, 33, 33,161,182, 1,113, 33,101, 4,162, 9,132,136, 90,131,225, 61, 0, 2, 2,230, 13,207,105, 46,242,122,237, 26, 74,169, -234, 75,196,149, 99, 57,215,155, 19,103, 46,117, 9,120, 21,132, 25, 99,191,197, 47,191,237,192,244, 9, 67,177,102,211, 94, 76, - 24,209, 15,222,222, 62, 37,114,112,148,204,159, 61,161,127,243, 69,107,246,212,153, 57,225, 91,249,162, 53,123,234,204,252,225, - 91,197,162,181,123,106,207,252,161,191,226,231,181,127,214,158,245, 67,127,179, 69,107,247,104, 1, 12,251,156,112,246,247,112, -206,130, 94, 95,116,235, 90, 32, 80,255,249, 38, 74,254,127,241,225, 14, 30, 60,184,186, 82,169,124,252,109,235,154, 75,107,120, - 56, 71, 21,117, 77, 82,108,148,115,200,235, 39,211,132, 34, 89,173, 46,211,118, 60, 47,137, 79, 34,145, 84, 14, 10, 10,114,231, -121, 30, 28,199, 65,175,215,231,255,106, 52, 26, 52,105,210,228,171, 76,136, 33,132,116, 2, 48, 63,231, 99,197, 18, 74,233,129, - 47,224, 82, 8, 4,130,137, 98,177,184,169, 94,175,247, 2, 0,161, 80,248, 74,173, 86, 95,215,235,245,171, 40,165,153,101,164, - 92, 29, 21, 21,229,173, 80, 40,160,213,106,243, 23,134,103, 89,214,179,124,249,242,235, 1,184,127,233,251,219, 3, 35, 27, 52, -106,180,102,208,228,201,172,242,198, 13,172,217,182,109, 53,210,211, 1, 96,125,105,247, 74, 36,146,243, 12,195, 84, 40,203,243, -120,158,255,160, 86,171,219,150,169, 82, 16, 8,220,163,163,163,237,156,156,156, 0, 0,114,185, 92, 94,112,191, 44,150, 43, 0, -203, 41,165, 50, 0, 96, 24,102, 77,131, 6, 13,252, 9, 33,122, 0,148,231,121,134, 16,210,143,231,121, 65,238,245,203, 9, 33, -219, 40,165,106, 99,213,108,196,191, 90, 96, 17, 66,206, 0,104, 90,167, 78, 29, 89,223,190,125,209,180,105, 83,184,187,187, 67, - 42,149,230, 20,222, 73, 73,246, 79,159, 62,237,125,227,198,141,222, 39, 79,158, 4, 33, 68, 9,224, 22,165,180,200,143,185, 85, -167,198,227,164, 10,201, 90, 0, 72,136, 76,138,137,124, 31,191, 54, 38, 38,102, 57, 45,176, 74, 52, 33,196,117,208,160, 65,147, -198,143, 31,143, 83,167, 78, 97,239,222,189, 80,171,213,200,200,200,192,149, 43, 87,138,105, 90,199, 35,229,202, 82, 64, 30, 6, -132, 95, 3, 76,236, 0,185,253,103, 71,136,165,165,229,252, 9, 19, 38,252,224,237,237,157,239,117, 92,167,211, 65,175,215, 67, -167,211, 33, 37, 37, 5,147, 38, 77, 66,174, 21, 15, 60,207,227,236,217,179,227, 70,140, 24, 1, 0, 19,139,226,244,175, 93,254, - 17, 67, 24,151, 60,219, 12,229,184,200,187, 79, 34,106,235, 57,142, 85,169,180, 69,174, 28, 46,149,138, 74, 20,119, 66,161,208, - 37,240,196, 9, 59, 70, 44, 6,229, 56,128,231, 65,121, 30, 64,129,141,230, 28,163, 28, 15,170,227,192,235,121,232,149,106,212, -253,254,123, 67, 10,199, 6, 66,177,108,111,255,239, 38, 59,212,171, 95, 95, 88,177,156, 19,244, 28,143,119,161,145, 14,143, 31, -221,107,120,112,231,250,209,132,144,126,148,210,207,242,147, 37, 54, 49,187,176,238,143,205, 46, 15,159, 6,224,242,213, 27,184, -116,229, 58, 0,224,252,213, 28, 58,134, 97, 74, 11,159,165,181,123,243,234,227,134,118,149,255,252,235, 22,201,184,161, 93, 5, -127,253,110,150,140, 27,218, 69,176,104,213,102,201,184,161, 93,132, 11,151,173,171, 65, 8,177,164,148,166, 20,199, 87, 92, 26, - 65,175,151,252, 25, 18,199, 2, 64,194,134, 13,208,197,199,195,105,238,220, 28,241,229,106,111,112,183,134,173,173,237, 35,161, - 80,232, 82,218,117, 58,157,174, 84,241, 59,120,240, 96, 63,165, 82,249, 72,175,215, 83,129, 64, 48,237,219,110,109,142,181,107, -236,151, 84,240,154,231,207,159, 89, 47, 94,124,162,235,129,199, 25,180,119, 45,211,199,167, 86, 12,174,221,113,202,142,103, 37, - 84,196,140, 90,173, 70,112,112, 48, 10, 46,190, 94, 80,207,126,166, 8, 98, 0,172,177,182,182,174,151,148,148,212, 31,192,140, -244,244,244,234, 44,203,194,202,202,106, 6, 33,228,157,185,185,249,150,180,180,180, 59,185, 86, 34,222, 64,222, 38,102,102,102, -187,142, 30, 61,106, 89,179,102, 77, 38, 33, 33, 1,149, 43, 87, 70,114,114,114,221, 27, 55,110,212, 26, 54,108,216, 48, 66,200, - 64, 74,233,141, 50, 4,183,170,137,137, 9, 29, 52,104, 16,225,184,191, 94,119,235,214,173,104,235,171,119, 27,213, 78,158,173, -210,208,180,203,193,230,163, 68, 34,209,173,176,176,176,180,178,198,135, 8,248,105,208,228,201,172, 34, 44, 12,138,103,207,208, - 63, 61, 93,240, 75,142, 53,171, 84,129,197, 48, 76,133, 93,251,182,187,139,197,226,252,114,169,184,141,227, 56,104, 53, 90, 44, -253,121,249,103,151,133, 38, 38, 38, 38, 78, 78, 78,113, 38, 38, 38, 38, 95,163,178,145, 72, 36,130,157, 59,119,246, 19,139,197, - 0, 0,141, 70, 3, 95, 95, 95, 98,172,134,141,248, 47, 90,176,190, 73, 79, 79, 7,199,113, 48, 53, 53, 5,203,178,133, 45, 40, -104,221,186, 53,154, 52,105,130,190,125,251, 34, 48, 48, 80,214,183,111,223,214,197,145,125, 59,185, 35,202,185,219,231, 86, 34, -188,227,237,211, 79,151,110, 93,120,200, 22,192,228, 2,151, 13, 27, 57,114, 36, 73, 74, 74, 66,175, 94,189,110,168,213,234,206, -148,210,244, 98, 45, 24, 60, 34,155,247,253, 22, 60, 37,178, 85,247, 55, 17,141, 74, 73, 25,134, 81,230,117, 17,126,102,133,208, -203,201,201, 9,251,246,237,131, 70,243,169,187, 47, 51, 51, 51,188,124,249,178,160,197, 13,245,235,215,103, 9, 33,189,138, 19, - 88,132, 48, 46,183, 31,134,217,229,237,119,108,237, 35,242,175, 93, 33,206,214,218,148, 2, 32, 51,103,206,204, 23,108, 0, 48, -127,254,124, 67,194, 9, 70, 40, 68,194,245,235,127, 21,192, 2, 6,140,136,128, 8, 1, 70,144,211, 91, 10, 10, 80, 14,224,245, - 0,175, 3,164,142,229, 12,225,174,235, 92,222,253,212,226,149,191, 91,168,117, 20,251,142, 95, 70,104,232,123,176, 12, 3, 87, - 55,119,180,105,214, 88, 88,171,142,127,185,101,243, 38,159, 36,132,124, 67, 41,125, 80,230,136,230,169,212,173,188, 13,182,108, -125, 12, 91, 75, 5,122,117,109, 15,153, 84,130, 95,126,219,142,159,167,143,133,187,107, 5,108, 92,189,168,216,219,205,205,205, - 23,212,172,230,233,186,253,192, 57, 52,109,210, 64,176,227,192,121, 52,107,210, 80,176,253,192, 57, 52,107,218, 88,176,227,192, - 57, 52,107,210, 72,184,227,192, 57,212,175, 93,205,237, 78,210,243, 5, 0,198, 22,255,206,133,210,168, 77, 78, 26,185, 11, 68, -249, 21, 64,216,232,209, 0,144, 47,176,202, 2,161, 80,232, 18, 29, 29,109, 87,218,117,165, 89, 9,114, 45, 87,143,244,122, 61, -226,227,227, 73,106,106, 42,181,176,176,232,122,110,227,140,163,109, 27,249, 37, 3,192,179,103,207,172,150, 44, 89,220,117,255, -163,116, 40,239,173, 35,127,158,184,206,247,239,220,244,209,241,165,131,107,245,236,217,243, 73, 81,188,106,181, 58,180, 70,141, - 26, 52,247,191,179, 68, 34, 17, 21,202, 19, 78,238,238,238,159, 88,169, 13,232, 58, 92,115,247,238,221,177,222,222,222,240,244, -244,188, 83,175, 94, 61, 51,185, 92,142,115,231,206,193,203,203,203,199,204,204,236,254,193,131, 7,133, 83,167, 78,245,219,182, -109, 27, 0,140, 51, 32,127,182,106,222,188,249,190, 83,167, 78, 73, 69, 34, 17,148, 74, 37, 94,190,124, 9, 11, 11, 11,136,197, - 98,116,233,210,133,109,216,176,161,117,179,102,205, 14,231, 54, 2, 12,158,209,164, 82,169,232,140, 25, 51, 96, 98, 98, 2, 19, - 19, 19,200,229,114,200,229,114, 40,164, 32, 27, 38,148,151,141,223,148, 42,155, 56,119,195,210, 93,191,207,187, 90,190,124,249, - 57,225,225,225,169,101,205, 11,202, 27, 55,160,120,246, 12, 40,240,237, 26, 10,115, 19, 43, 76,155, 54,173, 52, 11, 20, 68, 34, - 17, 26, 52,104, 80, 42,159,181,181,245, 17,129, 64,240, 81,139,148, 82, 42,157, 54,109, 26,247,230,205, 27, 57,195, 48,114,158, -231, 49,109,218, 52, 78,175,215, 75,237,237,237,239,240, 60, 31,151,144,144,208,189, 52,110, 74,169,154, 16,242, 35,195, 48,107, - 36, 18,137,160, 98,197,138, 31,102,207,158,125, 55,215,122, 9, 74, 41, 83,177, 98,197,186, 50,153,172,130, 90,173,214, 3,248, -209,104,189, 50,162, 4,212,202, 49, 2,231, 67, 3, 64,156,103,176,207,169,237, 96, 83,232, 56, 0, 36,230, 54, 16,237,139,217, - 79, 2, 16, 8,160, 42, 0,187,220,115, 15, 1, 36,127, 21,129, 69, 8,161, 5, 62,138,252, 10,197,212,212, 20, 15, 31, 62, 4, - 33, 4,166,166,166, 48, 51, 51,131,185,185, 57,210,211,211, 17, 24, 24,136,160,160, 32,132,133,133,129, 16, 2, 87, 87, 87,228, -125, 56, 5,184,242, 11,182, 61,191,158,130, 84, 33, 1, 33, 64,205, 22,213, 81,189,137, 47,234, 60, 8,153,224,228,228,180, 41, - 58, 58, 58,152, 16, 34,240,245,245, 29, 86,191,126,125,172, 92,185, 18,106,181,122,101, 81,226,170, 32,231,141,151,186,218,185, -149,210,148,221,231,222,153, 12,104,231,150, 29, 29, 29,189,162,172,145, 80,184, 0, 78, 76, 76, 52,120,173, 60,158,231,145,146, -146, 82, 34,103, 97,139,192,170, 53,235, 44, 50,210,226,176,240,151,221,208,233,116,152, 60,121, 50,120,158,207,223, 82, 83, 83, - 13, 10, 39,229, 10, 25, 21,152,156,141, 48, 0, 17, 0,229,251,228,232,137,240,125,235, 64, 40, 64, 56, 0,133,222,171, 48, 39, - 33, 68,202,138,100,251,231,253,178,214,226, 73, 80, 36,142, 95,126, 2,109,122, 20, 98,158, 29, 5, 0,184, 54,232,135, 3,106, - 22,245,170,187,225,135,153,203, 44,103,253, 48,112, 63, 33,196,179, 96,119,161, 33, 21, 26,165, 28, 22, 46, 88,128, 77,107, 87, - 98,217,202,181, 72, 79, 75,133, 80,104, 3, 0,208,235, 57,112,133,222,237,147,119,167,180,221,172, 41, 35,201,154,205,135,225, - 91,197, 1, 39, 47,222, 65,109,159, 10, 56,123,229, 1,234, 87,171,132,243,215, 31,163,126,245,202,184,126,239, 37, 38,143, 25, - 68,110,159,221,209,174, 44,105,180,122,245, 58,139,140,244, 56,156, 90,180, 19,241,235,215,227,195,216,177,168,155,123,205, 3, - 66, 32,114,113, 1, 68,165,167, 81, 97,188,122,245, 10,106,181,186,168,214, 61,188,188,188, 74, 77,119,165, 82,249, 88,175,215, -211,184,184, 56, 18, 23, 23, 7,185, 92, 78, 94,190, 12,224,124,124,124,187,209,160, 67,155, 1, 96,201,146,197,221, 14, 60, 78, - 71,246,157,181, 80,222,253, 13,162, 74,207,153, 77,243, 71,106, 71,204,221,248,184, 64,229,246, 81, 56, 99, 98, 98,190,201,251, -239,234,234, 26,244,230,205,155,170,121, 93,202,185, 93,133, 34,189, 94,239,158,215,109,168,215,235,161, 86,171,209,170, 85, 43, -182,164,119,183,180,180,172,239,229,229,133, 39, 79,158, 96,237,218,181, 86,205,155, 55,199,219,183,111, 65, 8,193,226,197,139, -137,183,183,183, 48, 49, 49, 17,109,219,182,197,145, 35, 71, 26,148, 22,159,132, 16, 83,185, 92,190,237,228,201,147, 82,134, 97, -144,145,145, 1,158,231,209,168, 81, 35, 48, 12,131,128,128, 0,204,156, 57, 19, 71,142, 28,193,177, 99,199,100,181,106,213,218, - 70, 8,241, 42,216,125, 95, 66, 26, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49, 50, 85,192,136, - 85, 31,212,172,212,134,247,169,209,200,109,200,248,197,204,138,217, 67,175, 0, 56,110,104,158, 7,114,198, 92,173,217,190,125, -109,255,180, 52, 6, 0,182, 16,194,107, 41, 93,102,200,247, 14, 0, 25,170, 84, 84,112,115,193,225,125,199,208,163,111,215, 34, -197,149, 80, 40,130, 72, 40,132,169,149, 73,169,156, 34,145,200, 62, 40, 40,200, 90, 40, 20,230, 91,228,117, 58, 93,220,236,217, -179,109, 59,116,232, 96,122,246,236, 89,166, 67,135, 14,188,141,141, 77,214,147, 39, 79,226,181, 90,173,117,195,134, 13, 13,206, -243,148,210,223,107,212,168, 81,243,232,209,163, 67,167, 77,155,246,104,202,148, 41, 11, 11,158, 95,190,124,249,130, 51,103,206, - 84,232,214,173,219,174,167, 79,159,254, 94,150, 50,228, 75,203,121, 35,231, 63,143,179, 56, 45,146, 11,123, 66,200,169, 2,231, - 59,230,237, 79,155, 54,109,198,146, 37, 75, 94, 18, 66, 78, 21, 60,158,119, 93, 46,247,169,162,246,115,239,181,154, 62,125,186, -239,210,165, 75, 23,251,251,251,239,187,115,231,206,251,175, 38,176,242, 94,164,224,203, 21,138, 72,164,167,167, 35, 61, 61, 29, - 17, 17, 17,216,176, 97, 67,238,135, 44,132, 64, 32,128, 64, 32,200, 31,175, 80, 28, 46,157,188,249, 27,128,223,106,213,170, 37, -124,113,247,224,217,159, 54,141,111, 89,187, 85, 77,246,241,229, 23, 61, 1,252, 12,224,155, 65,131, 6,217, 0,192,206,157, 59, - 19, 1,156,253,191,144,200,148,210,131,193,193,193, 63, 56, 58, 58,230,143, 65, 41,216, 77,168,215,235, 33,149, 74,145, 55, 86, - 69,165, 82, 97,195,134, 13,122, 74,233,193, 18, 56,241,230,229, 21, 4,191,188,154,115, 31,207,131,231,254,186,127,222,188,121, - 5,167,190, 98,116,174,165,164, 84,113, 87, 84,156,211, 66,191,133,142,127, 34,202, 62,233,134, 16,141,239, 57,112,172, 35, 79, - 4, 56,113,229, 41,132, 66, 33,248, 2,214, 75, 33,155,211, 58,126,249, 54, 26, 78,246, 62,232,220,111,164,195,209, 93,235,198, - 3,248,165,172,113,237,233,231,143, 9, 63,252,128,205,155, 54, 97,230,220, 5,249,234, 92,207,113,208,151, 26, 78,134,105, 88, -219, 27,153, 73,145, 96, 89, 22, 13,106,184,129,101, 89, 52,174,237, 1,150,101,209,168, 78, 85, 8, 4, 2, 52,171,239,141, 42, - 85,170, 64, 32, 16, 48,165,164, 59,222,188,188,140,224,151,215, 10,136,221,156, 52,209,198,196,124,114,189, 46, 38, 6,180,188, -117, 89,243, 22,134, 13, 27,150, 26, 17, 17,161, 45,124,174, 92,185,114,162, 27, 55,110, 88, 20,211, 61,151, 15,153, 76, 86, 75, - 32, 16, 60, 78, 78, 78,230, 77, 76, 76, 24,158,231,120, 31, 31, 95,246,220,198, 25, 71,243,174,153, 62,125,198,209,222,181,204, -186,237, 62,120,138,138, 42, 54, 34, 68, 40,209,127, 55,119,163, 72, 40,146, 25,228,161, 62,175,187,240,245,235,215, 40, 45, 60, - 69, 20,130, 31, 33, 37, 37,101,144,151,151,215,141,223,126,251,205,138, 16,130,155, 55,111,130,101,217,252, 45, 36, 36, 4, 12, -195,224,167,159,126,210,166,167,167, 15, 47,181,192, 18, 8,126, 56,124,248,176,185, 88, 44, 70, 70, 70, 70,254,119,195,178, 44, -130,130,130,176, 98,197, 10, 12, 26, 52, 8,225,225,225,112,114,114,194,228,201,147, 21, 75,151, 46,253, 1,192, 2, 3, 94,253, -185, 70,163,169,109, 98, 98, 2,169, 84,138, 60,161, 5, 0, 23, 94, 10, 3,178,179,179,171,217,216,216, 56,216, 94, 63,117,162, - 65,243,206,126,214,182,142,254,121, 2,203, 80,188, 3, 54,189,215,235,103,125,115,244,168,221,237,163, 71,249,187, 39, 78, 68, - 74, 51, 51, 55, 26, 76,160, 99,241,225, 93, 36,106,213,170,133,199,143, 31,163, 86,173, 90, 5,197, 18,196, 98, 49, 68, 34, 17, - 68, 34, 17,108, 44, 12, 26, 42, 65, 25,134,193,237,219, 31, 47, 55,218,184,113,227,228,171, 87,175, 42, 0,224,195,135, 15,180, - 99,199,142,169,129,129,129,112,119, 47,121, 24,154,131,131,195, 13,150,101, 43, 22,250, 86, 45,187,119,239,142,148,148,148,246, -221,187,119,111,148,123, 44,234,208,161, 67, 3, 0, 64, 44, 22,131, 97, 24, 14, 70,252,231, 81,154, 22, 41, 40,144, 10, 11,173, - 37, 75,150,116, 44,124,172,160,152, 42,234,127,193,123,151, 46, 93,186,184, 0,183,242,107,188,143,160,160,114, 44,173,176, 44, - 9,165, 9,172, 60, 60,126,252, 88,231,236,236,188, 57,248,105, 88, 75,183,234,174,144,201, 37,109, 8, 33,191, 73, 36,146, 73, - 3, 7, 14,196,189,123,247, 16, 16, 16,176,245, 75,151, 61,169, 86,173,218,121,137, 68, 82,161,152,238,144, 15, 47, 94,188,104, - 91, 76,133, 48, 55,119, 76, 89,177,131,220, 11,142, 7, 43, 56,200,189,216, 12,193, 83,232,180, 58,100,101, 43,255,170,188,115, - 5, 86, 86, 86, 22,250,244,233,243,145, 5, 43, 62, 62,222, 16,165,143, 21,199,143,227,226,193,131,104,239,231,135, 35, 15, 30, - 96,233,192,111,225, 89,193, 25,148, 35,160, 4, 8,223,187, 14, 73,233,153,216,115,249, 54,146, 51,178,209,191,113, 99,184,155, -217,148,204, 43, 20,181,174, 91,223, 95,116,233, 78, 32,132, 66, 1, 24,240,160,186,108, 56,121, 53, 3,203, 48, 48,183,175, 4, -145, 80, 8,161, 80,128,144,136, 68,120,249,214, 17,159, 18, 75, 91,127,142,192, 42, 95,161, 50,120,142,195,160, 65,131,176,111, -223, 62, 88, 59, 84,128,121, 57, 95,252,188,114, 19,218,183,106, 92,234,251,231,181,216, 5, 2, 1, 88,150,253,228, 55,239,191, - 33,214, 72,202, 83,104, 11,167, 17, 79, 65, 1,184, 44, 90, 4,151, 69,139,240, 32,247,153,222, 89, 89, 80, 42,149, 64, 61,159, - 50,137, 43,141, 70,131,136,136, 8,109, 76, 76,140,125, 17, 21, 83,156, 70,163, 41, 85,208,236,216,177,227,249,224,193,131,107, - 91, 89, 89, 61,122,254,236,153,174,186,159,159,240,236,134, 25,199,242,186, 7, 1,192,207,207, 47,121,198,140, 25,199, 6,244, -234,216,245,247,105,125,185,239, 23,236, 18, 72,100,178,218, 29,167,148, 60,208,189,192,247, 17, 90,189,122,117,106,200,181,217, -217,217,177, 37,164, 81, 39, 0,243,107,214,172,105,214,188,121,115,220,184,113, 3, 61,122,244, 80,107,181,218, 96, 0,232,208, -161,131,199,158, 61,123,196,129,129,129,176,181,181, 21,126,248,240, 97, 27, 33,164,196,129,239, 98,177,184, 89,157, 58,117, 24, -181, 90,253,137,184, 90,186,116, 41,250,245,235, 7, 15, 15, 15,240, 60,143,204,204, 76, 52,111,222, 92,184,118,237,218,102, 6, - 10,172, 9,158,158,158, 43,144, 51,139,176, 96, 89,248, 10,192,143,185,214,237,216,142, 61, 6,189,108,220,170,123,237,138, 85, -124, 29, 75, 35,180,183,183,159,206, 48, 76,111,158,231,217,244,244,244, 8, 13, 33, 85,188, 43, 86,180,111,216,181, 43,210,132, - 66,118,205,229,203, 76, 92,102,166, 2,128, 65, 93,141, 74, 93, 38, 42,184,229, 12,229,235,209,183, 43, 30, 63,126,140,158,253, -186, 65, 36, 18, 65, 32, 16,230,124,155,162, 28, 11,150,133,141,169, 97,154, 77,167,251, 36,175, 82, 74, 97,102,102,150,223,147, -145,119, 76,167,211,149, 88,249, 1,112, 63,176, 96,182,157,204,204, 28,156, 78, 7,159,174, 61,243,243,244,253, 45,191,203,192, -243,178,212, 15,161, 24,119,240,164, 16, 70, 24, 81,140, 21,171, 36, 45, 82, 80, 32,125,133,103,157,154, 54,109,218, 12, 0,116, -218,180,105, 51,242,246,151, 44, 89,162, 4, 16,245, 85, 4,214,151,138,171,188,110,132,146,208,162, 69,139,113,166,166,166,107, - 1,160,118,237,218,136,184, 23,133,136,123, 81,240,170,234,211,176,166, 95,237,180,126,253,250,193,218,218, 26, 83,166, 76,161, - 0,182,150,245,249, 33,111, 94, 42, 0, 80, 39, 39,167, 41, 0,224,228,228,228,247,224,193, 3,219,135, 15, 31,162, 78,157,191, -102, 20,106,181, 90, 52,106,212,168,164,138, 48, 3, 57, 99,169, 38,126, 61, 85,206, 67,171,213, 34, 59, 91, 9,141, 70, 11,189, -142,135, 94,175, 71, 45, 31, 83,236,218, 52, 45,231,152, 62,207, 90,150, 99, 37,115,113, 48, 69,173,106, 14, 58,134, 33,202,135, -207, 98,204,138,226,213,104, 52,120,254,225, 3,158,133,133, 1, 0, 58, 47, 89, 86, 98, 56,118, 93,190, 1,111,111,239,210, 66, -235,230,226,228,128,232,139,207,115, 10,109,101, 4, 30,222, 58, 0, 83, 83, 5, 0,192,167,105,127,136, 68, 57, 2, 43, 75,169, -133, 77,213,114, 32,148, 22, 59,189, 95,110,229,120, 94, 32,146, 86,160, 28, 15, 74,121, 80,158, 3,165, 60, 36,166,214, 38, 99, - 71, 13, 1,207,115,168, 91,183, 46, 8,203,130,211,169,209,171, 83,107,164,164,101,192,218,194,204,160,184, 21,137, 68,104,218, -180,169,172,184,243,111,223,190, 85, 22, 20,100, 37,167,145, 14, 89, 89, 74,168,213,106,104, 53,122,104,117,122,240,149, 69, 88, - 56,235, 91,232,181,122,100,247,245,207, 57,246, 67, 55,104, 53, 58,132,155, 48,140,159,183,173,142, 1, 81, 62, 9,140, 55, 43, - 77, 96,229,137,130,226, 80,212,152,191, 98, 68,214,179,193,131, 7,215,170,238,231,247,184,119, 43,191, 95, 95, 4,188,140,126, - 17,240,242,147,235, 42,120,248,133,126,191,116,223,100,161, 72, 86,203, 80,113, 5,124,220, 93,248,133,152,145,145,145, 81, 93, -161, 80,224,205,155, 55, 96, 89, 22,132,144,183,148,210,234, 0, 48,114,228,200,119, 2,129,192,149,101, 89,172, 95,191,158, 8, - 4,130,106,254,254,254, 51, 0, 28, 40,161, 33,231,101,106,106,250,145,245, 74, 36, 18, 97,218,180,105, 24, 48, 96, 64,190,184, - 18,137, 68,216,177, 99, 7,106,215,174, 13,141, 70,227,101,160, 8,126, 8,160,177, 1, 22, 62,146, 43,202, 75, 21,161,122,189, -126,112, 82,239,222, 85,112,253, 58, 26,186,186,122,215,170, 85, 11, 90,237, 95, 6,204,202,149, 43,151,203,200,200,136, 37,132, -252, 9,224,119, 74,233,211, 18,249, 84, 20, 31,222, 69,230, 53, 86, 81,183,110,221,124,139, 85, 65,235,149, 72, 36,130, 76,164, - 40,179,192,162,148, 34, 43, 43,139, 57,119,238,156,141,151,151, 23, 1, 0,111,111,111,114,239,222, 61, 43,153, 76,150,232,228, -228, 84,106,195, 87,102,102,142, 29,131,251, 0, 0,230,180,106,151,223, 32, 58, 55,127, 6,132, 66, 33, 90, 78,153,241, 73,190, -231,121,158,133, 17, 70,113,101,128, 22,249, 90,226,170,176, 5,107,201,146, 37, 47,151, 44, 89,242,137, 53,236,171, 89,176, 12, - 49,249, 27,218, 10, 42,140,149, 43, 87,162, 90,181,106, 37, 86, 64,107,215,174,197,238,221,187, 87, 82, 74, 67,202,250,252,142, - 45,107,250, 96,213,209,151,174, 30, 62, 4, 0, 22,252,208,137,201,202,202,194,237,219,183, 97,110,110,142,183,111,223, 26,154, -192,166,230,230,230,243, 25,134,233,197, 22, 30,217, 95,180,176,228,120,158, 63,152,150,150, 86,172,155, 6, 74, 1,173, 78,143, -172,108, 21, 52, 26, 13,126,248,105, 93,169,225, 88, 2, 16,173, 38, 67,208,180,137,191,172, 56, 11, 78, 93,223,166, 24, 51, 64, -254, 73,165,205,230,184, 2, 67,141,186, 57,107, 75, 63,185, 31, 0, 74, 1,142, 3,108,236,172,176,117,223,175, 37, 70,129,158, -227,115, 91,195, 28, 50,213, 28,188,234,119, 68,228,171,235,249, 22, 35,177, 40,167,107, 88, 36, 20,130,167, 36,199,123, 67,113, - 2, 72, 44,171,144, 18, 19,226,190,233,212, 11,140,232, 88, 13,135, 46, 61, 71,207, 86,213,113,245,126, 32,154,215,243,198,203, -224, 48,248,184, 87,196,250,109, 7, 65, 41, 50,254, 88,245,115,236, 95, 21,153,254,131, 33, 22,172,123,247,238, 41, 11, 91,173, - 10,254,210,210,235,193,156,174,192, 92, 11,150, 82,165,198,148,233, 6,185,227,201, 73,163,198,245,101,134, 92, 92,146,133,202, - 16, 1, 86,216,146,133, 82,220,172, 84, 6, 80, 27,152,250,127, 89, 96,114, 28,135,211,167, 79,231,167, 71, 81,233, 88, 48,237, - 12, 16, 55,248,240,225, 3, 2, 2, 2,224,239,239,143,180,180, 52, 8, 25, 6,147, 95,188,128,247,192,129,208,136, 68,224,121, - 30, 98,177, 24, 35, 71,142, 52, 56, 62,203, 88, 42,231,142, 99,227,104, 41,101,201,175, 29, 59,118,172,242, 38, 43, 11, 47,131, -130,208,106,222, 60, 0,192,233,211,167, 63,202, 19,147, 38, 77, 18, 7, 6, 6, 14,123,244,232,209, 48, 66,200, 74, 74,233,228, -226, 56,181, 84,149, 63, 6,171,119,255, 30,168,226, 85, 25,187,183,237,205, 63, 63,233,167, 9, 16, 10, 69, 16, 10,133,176,176, -176, 48,232,109, 10,150,221,217,217,217,204,161, 67,135, 92,154, 53,107, 38, 26, 49, 98, 4, 1,128, 77,155, 54, 49, 91,182,108, -145, 95,184,112, 65,100,110,110, 30, 83,170,168,212,106, 63, 73, 99, 66, 8,132, 66, 33, 68, 98, 17,192,243, 32,132,200,151, 47, - 95,190,224,229,203,151,117, 60, 61, 61,161, 86,171, 7, 18, 66,158, 24,253, 96, 25, 81,154, 22, 41,106, 44, 85,174, 21,170, 56, - 36, 20, 28,151, 85,156, 64, 43, 56, 38, 11,192, 87,153,108, 33, 40, 77, 84,177, 44, 91,170,117,138, 97,152, 82,187, 8, 39, 77, -154, 4, 83, 83,211,226, 42, 30,250,226,197,139,192,152,152,152, 77,148,210,117,159,243, 34,167, 46, 63,121, 57,127, 98,183, 12, -228,246,157, 90, 88, 88, 36,182,104,209, 34, 19,128,246,192,129,143, 27,196,106,181,186,216,138,219,220,220,124,254,150, 45, 91, -198,119,237,218,149, 41,236, 42,160, 96, 55, 94,222,166,211,233,112,224,192,129,241, 83,167, 78, 69,113, 86,175,188,202, 59, 59, - 75, 9,101,238, 0,231,119, 1,135, 12, 45,204,139, 61,165,176,116,130,139, 43, 87,108, 37,194,136,114,198, 8, 57, 84,240,203, - 63,102,106, 42, 5, 87, 2, 39, 33, 76, 72, 88,120,180,115, 57, 7, 43,188,139, 72,128,125,197,106, 72,137,250, 43, 30, 4, 2, - 22,194,220, 46, 66, 11, 51, 57, 18,226,227,193, 48,108,137,130,248,231, 61, 79,112, 63, 32, 12,135, 47, 61,133, 86,149,133, 85, - 59,207, 65,171,206,132, 86,149, 5,173, 42,231,119,241,212,239, 64, 8, 98,181,170, 76,143, 50,101, 96,129, 0,245,234,213, 43, - 86,224, 68, 69, 69, 25,104,193,162,249, 22, 44,165,170,140,105,100, 88, 75,169, 68, 11, 85,222,249,207, 21, 4,121,174, 27,100, - 50, 89,237, 29, 59,138,119,199, 80, 20, 28, 29, 29,207, 42, 20,138, 74,134, 94, 95, 6,167,163,139, 45, 44, 44,230,123,122,122, -122,173, 90,181, 74,200,178, 44, 90,182,108,233,241,221,119,223,125, 0,128,106,213,170, 57,229,149, 49,223,127,255, 61,189,119, -239, 94, 64, 78,219,162,120,136,197,226, 32,115,115,243,218, 45, 90,180, 64, 90, 90, 26, 34, 34, 34, 32,151,203,225,253,235,175, -120,241,253,247,240,219,176, 1, 76,139, 22, 32,132, 64, 44, 22,227,197,139, 23,144,201,100, 65, 37, 20,230,245, 0, 44, 3,208, - 16,127,117, 11, 82, 0,183, 1,252, 68, 41,189, 95, 68,121,199, 0, 0,199,243,165, 37,214,183, 83,166, 76, 65,170, 80, 8,116, -232, 0, 81, 72, 8,180, 90, 45,252,253,253, 81,187,118,142, 39, 14,127,127,127, 8, 4, 2, 84,175, 94, 29, 78, 78, 78, 88,191, -126,253,183,248,120,102,245,199,101, 87,166, 14, 31,222, 69,194,223,223, 63,223, 82,213,161, 67,135,124, 11,150, 80, 40,204,183, -100, 17,142, 53,168, 50, 43, 40,176,116, 58, 29, 17,137, 68,130, 81,163, 70,145,225,195,135, 83,157, 78,199,139, 68, 34,102,243, -230,205,228,222,189,123, 2,165, 82, 89,106, 3,220,183, 91, 47,204,105,157, 99, 4,253,185,146, 45,132, 34, 33,196, 34, 17,166, - 4, 69,230,167,139,217,142,125,226,165, 75,151,246,244,244,244,204,233,110, 7, 4, 70, 63, 88, 70,148, 98,224, 73, 40, 36,142, - 52, 5,246, 19, 0,144,220,253,132, 2, 66, 42, 1, 57, 51, 2,235, 20,186, 54,239,188,166,208,111,222,249,103, 95,227,125, 74, -106, 1, 7,223,189,123,215,189, 86,173, 90, 8, 15, 15,255,100,102, 91, 94,133, 37,151,203, 33,147,201,112,231,206, 29, 0, 8, - 46,142,236,202,149, 43,191, 33,199, 75, 50, 0,192,201,201,201,191,121,239,102,119,234,182,171,131, 61, 75,246,166,197,196,196, - 84,207,243,129, 67, 8, 33, 78, 78, 78, 3,132, 98, 65, 31, 87,223,242, 77,193,243,203, 46,157,184, 53,175,164, 23,113,245,240, -201, 4,160, 44, 48,139,112,197,231, 68, 8,195, 48,189,186,118,237,202, 4, 6, 6,162, 79,159, 62,216,189,123,119,177,215, 14, - 24, 48, 0,251,246,237, 67,215,174, 93,153,233,211,167,247, 42, 77, 96,229, 88, 71, 52, 95, 45, 51,190, 9,126,134, 93,123, 55, - 23, 59,198,200,206,206, 22, 0, 16, 31,159,144,127,172,118,237,146, 29, 49,243,122,205,197, 39,143, 30,248, 55,104,210, 82, 20, - 17,151, 10, 94,175,134, 42, 35,241,175, 22,110,106, 28,168, 94, 5,145,137, 21, 28,108,204,241,248,238, 5,141, 86,163,186, 88, - 18,231,248,174, 62,248,190,147, 23, 64,121,116,155,188, 21,167,214,141,203,239,222,105,212, 99, 2, 46, 31, 88, 99,240, 24,190, -194, 16, 10,133,120,241,226,133,178, 56,235, 21,203,178,165,250,212,250,203,202,168, 67,118,182, 18,217, 74,213, 87, 75, 35, 66, -136,173,189,189,253, 31, 86, 86, 86,210,162, 4, 20, 33,196,214,214,214,246, 15,107,107,107,169,161, 93,132,197,137,171, 92,191, - 88,143, 6, 15, 30, 92, 38,145, 37,145, 72, 42, 5, 7, 7,231, 59, 25, 45,233, 87,163,209,160,121,243,230, 2, 3, 11,203,147, -132,144,247,142,142,142,183,189,189,189,205,223,189,123,135,189,123,247,138,132, 66, 97,249,188,242, 35, 35, 35, 3, 44,203, 34, - 62, 62, 94, 7, 96,104,105, 93,100,106,181,250,250,245,235,215,107,116,234,212,137, 13, 10, 10, 2,203,178, 57,225,242,247,135, -223,134, 13, 8,152, 56, 17, 77,195,194,160,210,106, 33,149, 74,113,254,252,121,109,118,118,246,245,226,248,100, 50,217,166,208, -208, 80, 31,169, 84, 10,173, 86, 11,158,231,193, 48, 12, 17, 8, 4,141, 44, 44, 44,214, 2,168,243,241, 55,101,103, 55,114,210, - 47, 85, 57,189,158,139, 9,127,151, 80, 90, 28, 36, 37, 37,225,228,201,147,168, 95,191, 62,154, 54,109,138,168,168, 40,132,132, -132,160, 67,135, 14,249,215, 60,123,246, 12, 79,158, 60,129,155,155, 91,233, 22, 60, 86, 7, 55,207, 74, 16, 9, 69, 16,138,132, - 57,191, 66, 97,238,150,243, 63,239, 88,158,207,194,178, 88,176, 0, 64,161, 80,228,229, 11,190, 82,165, 74, 49, 49, 49, 49,142, - 0,216, 60, 7,172,134, 52, 86,242,234,136, 60,113, 37, 18,139,242, 45, 89, 0,144,154,154,170,234,218,181,235,159,106,181,122, - 8, 62, 99, 69, 17, 35,254,147,120,248,127,116,239,223, 34,176,218, 55,104,208, 96, 67,191,126,253, 90,174, 94,189, 26, 10,133, - 2, 49, 49, 49,249, 21,161, 88, 44, 70,185,114,229,144,156,156,140,141, 27, 55, 34, 50, 50,242, 10,128,145,134, 62, 56, 38, 38, -230,222,219,167,193, 73,205,123, 54,176,246,105, 80,213, 34, 34, 56,178, 62,128, 59,185,226,106,107,191, 73,237,135, 52,239, 94, - 23, 34,177, 16, 17,111, 99,255,191, 69, 8,203,178, 44, 33, 4,125,250,244, 49,232,250,190,125,251,226,250,245,235, 40,169, 59, -145,207,179, 96,101,171,144,165,252,122,141,179, 49,227, 7, 96,204,248, 1,249, 34,194,144, 46,150, 28,113,187,191, 4,129,165, - 93,125,106,255,198, 17, 53,235,250, 87,168,237, 83, 9,247, 31, 61,197,158, 13,127, 25, 21,182,253,182, 0,191,108,187,130,114, -246,150,208,170,179,112,246,208,230, 88,173, 58,123,245,103, 26,225,114, 68, 45, 33, 48,208,191,228, 71, 86,211, 60,129,229,235, -235, 91,172, 5, 43, 57, 57, 89, 89, 90,133,144,159, 70, 26, 29, 50,179,148, 80,102,127, 29,129, 69, 8,241,107,212,168,209,197, -131, 7, 15, 90,219,217,217, 33, 58, 58,250, 35,129, 69, 8,241,107,216,176,225,197,131, 7, 15, 90,219,219,219, 35, 34, 34,194, - 96,247, 32, 69,136, 43, 36, 36, 36,144,148,148, 20,222,210,210,178, 76, 34,139, 97, 24,168,213,106,188,122,245,202,208,199, 26, - 60,227,203,220,220,124,199,190,125,251,204, 19, 19, 19,193,178, 44, 94,189,122,245,209, 44,194,188,109,235,214,173,162,110,221, -186,109, 1, 80,163, 36, 62,189, 94,191,114,192,128, 1,195,162,162,162, 44,237,236,236, 16, 19, 19, 3,177, 88, 12, 74, 41, 72, -243,230,104,252,254, 61,180, 28, 7,153, 76,134, 55,111,222, 96,211,166, 77, 89,106,181,122,101, 49,233, 35, 54, 49, 49,113, 23, -137, 68,232,223,191,255, 71,231,118,238,220,137,206,181,217,218, 35, 90, 75, 50,245,144,170,227,100,223,156,101, 89,150,140,156, -178,204,163, 94,147, 14,190,175, 3,238,191, 75,136,139,188, 93,202,235,235, 52, 26, 13, 60, 61, 61,241,240,225, 67, 92,186,116, - 9, 45, 90,180, 64,211,166, 77,241,252,249,115, 92,184,112, 1, 79,158, 60, 1, 33, 4,214,214,214,121,195, 44, 74, 28,107,161, -201,210, 35, 62, 42,233, 19,107, 85,225,125,145, 72, 4,181, 88,107, 80, 26, 5, 5, 5,225,225,195,156,250, 39, 59, 59, 27, 2, -129, 64, 63,101,202, 20, 48, 12, 67, 3, 2, 2, 96,103,103, 71,127,250,233, 39, 78, 32, 16,232,195,195,195, 13,205,251, 57,214, -170, 92,113, 37, 16, 9, 63, 18,102, 60,207,103, 60,123,246,108, 4, 33,228, 57, 33, 36,207, 27,170,209, 15,150, 17,255, 42, 8, - 74,104,133,188, 7,208,138, 16,242,237,177, 99,199, 86,174, 93,187,214,182, 99,199,142, 72, 73, 73, 65,133, 10, 21,224,232,232, -136, 83,167, 78,225,204,153, 51,137, 28,199, 77,166,148,238, 46,226, 35,107, 85,156,175, 12, 74, 41,117,114,114, 58,168,206,204, -252,190, 86, 83, 47, 92, 57,112,115,137,163,163,227, 72,103,103,231, 31, 6,207,232, 50,164, 89,215, 58,120,243, 36, 20,247, 46, -188, 64, 92,120, 34, 6, 55,254,169, 68,206,194,131,220, 45, 44, 44,134,153,152,152,136, 1,104,139,104, 5,127, 52,139,176, 32, - 39,199,113,156, 70,163,193,254,253,251, 13, 18, 89,123,247,238,133, 74,165, 2, 87,168, 31,181, 32, 39,229, 41, 17, 8, 37,112, - 42,231, 9,173, 54, 11, 60,255,121,214,154,130,156,132, 16, 48, 12,131,119, 98, 49,236, 18, 19,113,255,254,125,131, 56, 10,182, -156,139,138, 79, 74,169,138, 16,210,127,205,162, 41,167,198, 78, 91,102,209,162, 65, 13,204,249,117, 39,180,218,109, 96, 88, 6, - 50,137, 8,181,234, 54, 4, 11, 53,254, 88,250, 99,106,118,122, 74,255,194, 75,230,124,194, 89, 82, 79, 10, 5, 56,158,199,165, - 27, 15, 12,126,247,252, 90,158,227, 32, 16, 8,240,246,237, 91,101, 81,179, 7, 89, 54,167, 59,147, 97,152, 34, 91,221, 31,167, - 17, 79,132, 34, 41,202, 85,240,134, 70,157,249, 85,210,200,206,206,238,199,163, 71,143, 90,231,185, 60,120,254,252, 57, 8, 33, -175, 10, 88, 67,126, 60,122,244,168,181, 82,169, 68, 64, 64, 64,222,146, 80,175,202,242, 29,229, 89,174, 18, 18, 18, 72, 76, 76, - 12, 76, 76, 76,152,231,207,159,171,171, 87,175,254, 8, 37,175,212,144,207,169, 82,169,194,138, 27, 31,169, 82,169,156,165, 82, -169,176,208,189, 78,238,238,238,111, 10,119, 21, 22, 21,206,180,180,180,251, 83,167, 78,173,213,174, 93, 59,252,248,227,143,201, -150,150,150,166,127,252,241,135,128,101, 89, 50,118,236, 88, 46, 62, 62, 62,115,243,230,205,230,199,142, 29, 67,106,106,234,157, -210,222,157, 82,154, 65, 8, 25,209,160, 65,131,157,231,206,157, 51,113,119,119, 71,122,122, 58, 40,165,216,177, 99, 7,198,142, - 29, 11,169, 84,138, 55,111,222,160,115,231,206,217,217,217,217, 35, 10,143,141, 44,192, 73, 8, 33,148,231,121,204,158, 61, 59, -223,169,104,158,147, 81, 83, 25,193,166, 73,149,229, 19, 54,167,201,191,157,179,121, 32, 0,112,122, 61,247, 58,224,254,187, 29, -235,230, 92, 21,137, 68, 55, 74, 73,163,153, 19, 38, 76,248,163, 67,135, 14, 50,133, 66,129,228,228,100,220,190,125, 27,119,239, -222,197,189,123,247,160,209,104, 96,109,109, 13, 75, 75, 75,196,196,196, 32, 40, 40, 72, 9, 96,102, 73,156, 98,185, 16,174, 85, -243,102,242,254,101,189,202,223, 23, 9, 33, 20,252, 53,147,208,144,188,212,164, 73, 19,212,171, 87, 47, 79,248,112, 31, 62,124, -136, 81,171,213,164,128,216,143,202, 19,226,229,203,151,215,111,221,186,149,150,196,121,111,211,122,156, 91, 56, 19, 98,145, 8, -147, 95, 69,228,139,173,157, 45,106, 66, 40, 22,193,171, 83,143,130,245,192,239,132,144,109,185,255,213,134,228,249, 47,104,240, - 24, 57,255,225,156,255, 25,129, 85,224, 3,216, 67, 8, 57,251,221,119,223, 45,245,243,243,251,110,213,170, 85, 68, 36, 18, 97, -222,188,121, 52, 58, 58,122,123,110,171, 35,229,115, 30, 78, 41,221,126,237,200,157,209,131,166,117, 37,147, 86, 15,110,244,232, -114, 64, 80,181, 6,238,168,214,192, 29,143,174, 4, 98,221,140,189,187, 57, 29, 55, 59, 38, 38,166,180,102,147,186, 85,195,170, -133, 7,185, 91, 95,191,122,217,186,172,179, 8,121,158, 63,184,119,239,222,241,221,187,119,103, 30, 60,120,240,201,152,171, 60, -103,124, 60,207,227,226,197,139,208,106,181,216,190,125, 59,207,243,124,241,126,176, 64,143,175, 89,189,116,208,246, 93,199,197, - 98, 17,193,221, 27,135,145,150, 82,178, 85, 78, 36, 18, 98,235,142, 35, 90,145, 72,248,186,168,243, 90,173, 54,226,242,229,203, -246,109, 57, 78,200, 48,204, 39,194,169, 56, 28, 60,120, 80,199,243,252,135, 82,210,229, 14, 33,194, 78, 63,255, 56,116,111,135, -222,223,217, 55,104,208, 72,104, 99,103, 15, 66, 8,226,227,226,241, 38,224,129,238,236,225, 45,113, 89,217, 25, 6, 45,149, 51, -116,197,181,252, 49, 87, 0,208,113,236,218,252,241, 87, 0,208,105,240, 84, 52,175,239, 3, 98,136,169,233, 47,113,197,235,245, -122,200,229,114,232,245,250, 34, 93, 53,152,155,155,203, 84, 42,149,146, 82, 10,142,227, 74, 52, 13, 81,224,171,167, 17,199,113, - 94, 41, 41, 41,200,202,202,194,221,187,119,233,162, 69,139, 18, 18, 18, 18,242, 7, 99,234,116, 58,175,228,228,100,100,102,102, -226,206,157, 59,116,233,210,165, 9, 73, 73, 73, 51,202,242, 13,201,100,178,218, 2,129,224, 81, 74, 74, 10,111, 98, 98,194,232, -116, 58, 93,245,234,213, 37, 50,153,204,224,133,206,163,163,163,219, 21,119,206,205,205, 45, 56, 56, 56,184, 10,199,113, 5,215, - 40, 20,169, 84, 42,247, 6, 13, 26, 24,210,181, 51, 97,219,182,109, 56,114,228, 72,221,244,244,244, 1, 31, 62,124,216, 9,160, -174, 64, 32,192,211,167, 79, 95,169, 84,170,126,221,187,119,223,145,146,146,114, 31,192, 4, 3,203,141,115,132,144,254, 94, 94, - 94,219,230,207,159,175,104,218,180,169,192,201,201, 9,117,234,212,193,155, 55,111,112,250,244,105,221,239,191,255,158,149,157, -157, 61,148, 82,122,177,228,100, 7,209,235,245, 16,139,197,249,155, 68, 34,129, 72, 36, 66,134,146, 98,248,175, 33, 74, 61,100, -202,149,243, 70,156,166, 0,137,141, 8, 73,140,143,141,184, 79, 8,185, 17, 29, 29,157, 86, 76,156,137, 85, 42, 85, 13, 71, 71, - 71, 1, 33,100,181, 86,171, 29, 50,110,220, 56,135,197,139, 23,163,106,213,170, 72, 76, 76,132, 92, 46,135,187,187, 59, 18, 18, - 18,240,224,193, 3, 46, 59, 59,123, 3,128, 5,148,210, 18,187, 29, 83, 19,210,225, 98, 95,254, 35, 75, 39,165, 20, 84, 15,232, - 56, 14,156,150, 66, 67,116, 16, 10,117, 16,137, 68,134, 84,146,148,231,121,164, 56, 58, 34,234,252,121,228,174, 42, 81,172, 21, -237,212,169, 83, 6, 36, 16, 15,177, 68,252, 81,183, 32, 33, 4, 34,177, 24, 66,177,232,147, 25, 49, 70,171,149, 17,255, 89,129, -149,251, 1,164, 2, 24, 73, 8,217,217,172, 89,179, 83,148, 82, 33,128, 14,148,210,155, 95,242,240,152,152,152,199, 78, 78, 78, -211,237, 93, 44,151,126, 51,160, 17,170,214,168, 0, 78,207,225,246,153,167,216,190,248,216,190,168,136,168,193,134,172, 77,198, -243,252,213,134,181,171, 50, 40,224, 91,219,201,201,137,255,156, 89,132,105,105,105,115, 39, 79,158,140, 31,127,252,177,204,179, - 8,139,187,230,249,171,248,145,126, 94,182, 46,157,190,105,220, 22,132,161, 26,141,186,132, 2, 15,249, 30, 71, 69, 34,225,235, - 7,207,162,171, 23,117, 93, 66, 66, 66,219, 33, 67,134, 92, 20, 8, 4,149,202, 18,231, 60,207,127,136,139,139,107, 89,122,154, -235,110, 19, 66,220, 79,238,219, 56,241,220,145,109,109,121,158,115, 35, 0, 88,129,232,157, 78,171, 61,175, 86,166,175, 50,116, -177,231,229, 35,253, 49, 97,205, 5,172,255,177, 19,198, 45, 61,128, 45,179,135, 99,250,175,123,177,236,199, 9, 88,180,246, 79, -204,153,208, 31, 61,191, 29,194, 83,194,220, 50,244, 61, 88,150, 61,183,113,227,198, 65,195,135, 15,207,159,140, 64, 41,253,168, - 64,215,233,116, 74,158,231,177, 97,195, 6, 30,192,185,146,248, 62, 78, 35, 66, 75, 26, 15,101,104, 26,165,167,167, 15,245,247, -247,223, 1, 64, 66, 41,125,155,146,146, 50,138, 82,154,191,132, 83,102,102,230,208, 6, 13, 26,236,160,148, 74, 8, 33,159,156, - 55, 4,185, 46, 27,106, 91, 90, 90, 62,202,181, 92, 73, 62,103,160,123, 73, 81, 93, 66,247, 33,103, 64,217,193,163,192,242, 55, -132,144,197,117,235,214, 45,184,216,243, 43, 0,181,203, 26, 40, 74,233, 69, 66,136,207,236,217,179, 39, 74,165,210,230,217,217, -217, 30, 0, 32,151,203,223,168,213,234,171, 74,165,114, 85,110,185, 85, 18,135,198,196,196,228,141, 94,175,247,181,181,181,205, -153, 33,155, 43,178, 0,224,196, 35,238, 17,165,250, 50,175, 26,127,230,204,153,138,150,150,150,109, 8, 33, 61, 41,165,158, 25, - 25, 25,234, 89,179,102,221, 61,114,228, 72,106,133, 10, 21,190,233,208,161, 3,177,178,178,194,195,135, 15,105, 82, 82,210, 97, - 0, 51, 12,153, 57,205,243,252,135,229,203,203,182,182, 96,105,141, 41,173, 86, 27,123,230,204, 25,155,118,241,241, 2, 43,158, -255,104,134, 99, 81, 19, 46, 94,191,126, 13,181, 90, 93,162, 19, 70,117, 90, 10, 90, 76,156, 10,228,206,230,204, 67,142,229,138, -130,106,140,122,202,136,255, 6,200,223, 50,141,185,140, 38, 68, 39, 39,167, 62, 82,185,100, 76, 5, 15,199,234,209, 33,241,129, - 25,105,217,187, 99, 98, 98, 54, 82, 74,185,207,229, 44,139,163, 81,163,153,247,239,227,252,203, 15, 22, 7, 74, 57, 80,158,130, - 82, 30, 60,207,229, 44, 68, 77,121, 80,142, 35,132,224,150, 58, 59,109,184,161,225, 36,132, 88,218,216,216, 44,160,148,182, 99, - 89,150, 41,104,252, 42,248, 63,215,114,117, 46, 33, 33, 97, 78, 97, 75,235,255, 98,124, 30, 58,116,168, 72,209,111,232, 44,194, -158, 61,123,114,101,252, 54,175,202,229,242, 34, 29,106,102,101,101,133, 71, 71, 71,183,249, 39,196,103,158,245,147, 26, 80,160, - 21,234,106, 47,243, 44,194,210, 56, 43, 86,172, 40,209,106,181, 53, 1,120, 0,176, 0,144,172,211,233,206, 37, 36, 36,196, 17, - 66,106, 3,152,157,123,219, 66, 74,233,163,255,203,239,157, 16, 34,179,177,177,217,198, 48,140,139, 33,247,235,245,122, 77,114, -114,242,160,130, 13,129,130,156, 54, 54, 54,143, 4, 2,129,139, 1, 60,145,137,137,137,181,141,229,167,145,243, 63,111,193,250, -187, 17, 29, 29,189, 31,192,254,175,201, 89,156,167,118, 35,254,255, 34, 43, 57,230,111, 73,135, 92,177, 52,246,191, 22,159,121, - 2,169,136,227,143, 1,144,191,225,219,108,254,191, 16, 47,244, 51, 91,138,185, 2,170,241,215, 12, 75, 88, 88,152, 26,192,157, -220,173,240,243, 30, 1,232,244, 15,138, 55, 37,128, 62, 95,139,175, 36,209,100,132, 17,255, 53, 48,198, 40, 48,194, 8, 35,140, - 48,194, 8, 35,140,248,186, 32, 0, 90, 21,211,178, 49,216,244, 71, 8,105,245, 25, 45,167, 75, 70, 78, 35,167,145,211,200,105, -228, 52,114, 26, 57,255, 91,156,255, 25,228, 57,124,252, 59, 54, 0,173,140,156, 70, 78, 35,167,145,211,200,105,228, 52,114, 26, - 57,255,107,155,177,139,208, 8, 35,140, 48,194, 8, 35,140, 48,226, 43,195, 96,129,165,112,240,242,178,173,232,183,195,170, 92, -245,231, 86,229,170, 63,183,173,232,183, 67,225,224,229,245, 95,140, 52, 66,136,140, 16,242,173, 80, 40,188,232,232,232,152, 78, - 8,153,248, 47,125, 79, 51, 66, 72, 79, 66,200, 2, 66, 72, 55, 66,136,201,215,228,111, 70,136,160, 47, 33, 99, 6, 17, 18, 62, -136,144,240,190,132,140,105, 70,200,191,110,217,140,249, 19,156,252,111,158,235,127,118,254, 4, 39,255, 34,207, 79,113,178,190, -127,177,247,154, 37, 99,157,173,190, 82,186,153,218,219,219,111,114,112,112, 8,179,183,183,255, 96,111,111,191,141, 16, 98,110, - 44,238,140, 48,194, 8, 35,254,255, 65,144, 91, 32, 55, 5,112, 13, 64, 51, 74,233,245,194, 23, 89, 85,168, 54,220,203,179,234, -143, 63,207,155, 73,108,109, 44,101, 58, 29,167,141,136,140,241,158,251,243,146, 67, 86, 21,170,173, 76,254,240, 98,203,103, 84, - 2,132,101,217, 62, 18,137,164, 35,128, 60,161,246, 74,173, 86,159,226, 56,110,191,161,179,130, 28, 28, 28,110,176, 44, 91,177, - 44,207,230, 56, 46, 60, 54, 54,182,209,103, 86, 94,189,202,151, 47,191,173,105,211,166, 38,117,235,214,133, 88, 44,198,236,217, -179, 39, 3, 88,101, 40,135,149,149,155,169, 86, 34,253, 65, 32, 22,183,166, 58,141, 47, 5, 5, 24, 73, 0,175, 87, 95, 22,169, -213, 43,147,147,223,101, 24, 24,150, 25, 0, 6, 35,103, 90,249, 22, 74,233,242, 47,201, 12,131,107, 18,157,142,203,201, 19, 34, - 1, 56,115,115,243,107, 51,103,206, 20,116,236,216, 17, 91,182,108,105,180,105,211,166, 17,132,144,203, 0, 78, 80, 74,223,125, -105,230,179, 7, 70, 54,104,212,104,205,160,201,147, 89,229,141, 27, 88,179,109,219,106,164,167, 3,192,250,178,230, 37,145, 8, - 61,109,108,132, 29, 41, 69, 77, 2, 16, 2, 60, 77, 72,226,207,104,181,220,126, 90,214,117,120, 62,230,254, 22, 31, 79,171,223, - 83, 86,142,180,119,116,150,164,147, 87,227,180,119, 87,103, 1,248,166,240,121,189, 74, 58,136,178,229, 58, 42,233,147, 8, 0, -191,126,161,184, 50,177,181,181,125,126,252,248,113,151,186,117,235, 10, 0,224,209,163, 71, 3, 59,118,236,216,130, 16,226, 75, - 41, 77,255, 63, 18,235, 82, 1,195,140, 17, 11,133,173, 57,142,171, 6, 0, 44,203,190,208,232,116, 23,245, 60,191,222, 80,159, -106, 70, 24, 97,196,191,218,120, 81,162, 22,249,159, 20, 88, 0,174, 81, 74, 9, 33,132,162,208, 84,111,133,189,167,183,143,143, -215,228,115, 71,119,150, 75, 75, 78, 85,253,246,235,174, 39,153,172, 40,203,195,203, 93,252,219,170,229, 22, 99, 38, 76,250, 65, - 97,239,121, 63, 51, 46, 40,176, 12,145, 88, 94, 38,147, 29, 89,177, 98,133,111,243,230,205,133,118,118,118,136,139,139,195,171, - 87,175,124,175, 92,185,210,117,231,206,157,147, 9, 33,221, 41,165,134, 44,124,229,126,121,215, 54, 59,185,149, 53, 56,157, 14, - 78,213,107,230, 59,200,123,123,229, 2,244, 90, 45,120,157, 14, 94, 29,187, 2, 0,120,158,135,183,183, 55,251,153,137,239,228, -227,227,179,123,241,226,197, 34,181, 90,141,251,247,239,227,234,213,171,124, 76, 76,204, 82, 67, 57, 20,246, 30,205, 25,153,124, -127,159,254,223,153,119,233, 88, 89, 88,222,222, 22,128, 9, 94,135,234, 27,156,189,112,165,206,209,253,219,191, 87,216,123,244, -201,140,123,115,181,100,145,102, 85,159, 16,178, 40,207,163, 51, 33,100, 89,165, 74,149,230, 20,188,166,240,186,118,148, 82, 8, - 4,130,184,140,140,140, 62,137,137,137, 79, 10,115,234, 56, 8,246,236,201,209, 15,179,198,124,203,222,186,117, 75,238,237,237, -173, 6,128,229,203,151, 99,193,130, 5,226,243,231,207,183,223,181,107, 87,123, 66,200,106, 74,233,137, 47,201,124, 34,224,167, - 65,147, 39,179,138,176, 48, 40,158, 61, 67,255,244,116,193, 47,192, 79,101, 17, 88,132,144,202, 14, 14,194, 67,147, 39, 13,241, -114,117,171, 47, 18,137,108,114, 22,215,214, 36,122,132,135, 63,233,185,244,151, 77,211, 8, 33, 61, 40,165,111, 13,228, 19, 0, -152, 15, 64, 10, 96, 22,128,217, 9, 9, 9,238, 28,199,193,193,193, 97, 54, 33,228, 24,128,159,109,109,109,105, 66, 66,194, 84, - 74,169,190, 36,203, 85,250, 59, 58, 43,150,184,182,171, 90,107, 16, 98,201,185,118,147,190,113, 60,107,230, 70,126,158,187, 38, -250, 46, 0,124,227,230,102,234,234, 41,159,170, 48,171,102,149, 30,117,105,234, 55,110,110,155,207,190, 51, 76, 96, 23, 22,153, - 0,224,228,228,180,124,215,174, 93,229,234,213,171,151,159,199,107,212,168,193, 46, 95,190,220,121,226,196,137,171, 1, 12, 49, -144,207,195,214,214,246, 60,199,113,234,164,164, 36,143,188,227,118,126,221, 27, 88,155,202, 91, 38,164,100,220, 72,124,121,236, -186,129, 92,117,165, 34,209,225, 19,187,215, 56,214,168,231,207, 40,108,236,160,138,138, 70,166, 78,219,234,234,237,123,205, 70, -140,249,105, 66,110, 26, 61, 48, 86, 49, 70, 24,241,159, 70,177, 90,228,127, 89, 96, 33,247,133, 62,129, 68, 34,158, 54,119,230, - 84,146,154,148,170, 84,103,100,106,244, 42,149,146, 17,242,170,231,175,222,199, 51, 2, 54,117,210,248,241,166, 83,103,204,156, - 6,160,191,161,226,202,207,207,239,193,145, 35, 71,236,172,172,172,144,150,150,134,164,164, 36, 60,120,240, 0,148, 82,116,239, -222, 93, 82,175, 78,157,154,179,102,207,190, 75, 8,241, 55, 68,100,201,173,108,176,188, 81,206, 26,177,115,194,146,242,158,131, - 77,189, 58,230, 95,179, 32, 50, 13, 0, 32,149, 74,243, 23, 10,254, 12,248,183,108,217, 82, 4, 0,195,134, 13, 75,207,200,200, - 88, 2, 96, 15,165, 52,202, 80,113,101,227,232,116,234,143, 13,203,101,213,220,220,161,213,233,241, 33, 54, 26, 2,161, 5, 92, - 92, 68, 24,210,191,181,176, 73, 3, 43,155, 69, 11, 55,157,150,219,122,116,203, 74,120,115,190, 56, 46, 11, 11,139,157,251,247, -239,199,129, 3, 7, 0, 0,111,222,188,129,187,187,187,188,180, 48, 4, 4, 4,184,118,238,220,121, 31,128, 42,165, 93, 91,216, -145,189, 68, 34, 65,163, 70,141,224,237,237,141,227,199,143, 55, 3,112,226, 75, 51,160,242,198, 13, 40,158, 61, 3,174,151,189, -177, 66, 8,169, 92,171, 86,133,123,103, 78,239,182, 57,125,230, 21,126,253,117, 27,222,189,203, 49,172,185,186,186,226,219,126, -189,132, 47, 94,220,241,233,217,243,219, 59,132,144, 70,148,210, 55, 6,208,206,223,188,121,243,140, 74,149, 42,161,103,207,158, -189,124,124,124, 28,204,204,204,176,113,227, 70, 56, 58, 58,186,106, 52,154,183,199,143, 31,119,138,141,141,197,248,241,227, 1, - 96,114,113, 68,205,218, 54,155, 37,233,228,213,184,106,173, 65, 80,152, 57, 98,243,222,253,120,253,120,103, 99,181,246,213,172, - 37, 99,157, 7, 40,169,100,176,139,187,233,180,138,181,155, 90, 87,241,233,140, 10,181,158,216,168,184,155,239,103,143,113, 93, - 42,144,170,118,206, 93, 17,157,244,201, 59,247, 58,196,250,166, 7, 89, 5, 92, 68, 18,165,115,249, 92, 97,149, 95, 16,113, 20, -157,155, 52,105,146,159,112, 97, 97, 97, 80,171,213,240,242,242, 98, 52, 26, 77,115, 3,227,213,163, 77,155, 54,183,206,156, 57, - 99,237,225,225,241,209,210, 45, 14,214, 22,109,175, 31, 89, 61,126,209,154, 63, 61,237,188,187,165,198, 7, 30,125, 81,154,184, -106, 88,191,214,165,179, 71,118, 43, 72,102, 4,196, 22,137, 0,159,132,144,125, 91, 65, 76,172,208,103,244, 36, 65,243,150, 45, -156, 91,127,211,227, 18, 33,164, 37,165,244,161,177,142, 49,194,136,255,180, 21,139,254, 91,222, 69, 80,192,186, 65,138,122, 49, -158,242,213, 29,236,172,101,171, 87,236,120,200,106, 53, 26, 19, 11, 51,173,185,153, 57,133,169, 25,171,213,105, 51,203,187, 87, - 18,241,148,175, 94, 20,121,225,169,154,132, 16, 34,147,201,142,156, 56,113,194, 78, 40, 20,130,231,121,216,218,218, 34, 52, 52, - 20,169,169,169,200,200,200,192,187, 87,175, 80,169,124, 57,204,155, 54,213,113,252,212,105, 71, 8, 33,181, 11,118, 23, 22, 53, -253,147,211,105, 11, 39, 80,113,139,251,126,244, 91, 18,103, 49, 8, 13, 15, 15,135, 66,161,128,175,175,175,226,246,237,219, 55, -139, 19, 87,133, 57,173,172,220, 76, 5, 10,217,129,223,255,152, 45,211,234, 2, 16, 24,146,140,170,149, 26,195,222,186, 60,162, -147, 53,184,247,224, 4, 2,158,239,129,155,115,121,140, 29,221, 66,186,116,249,161,253,150,150,149,203,167,164,188, 79, 47,138, - 51, 61, 61, 93, 81,185,114,101,148, 47,159,179, 46, 25,199,113, 8, 12, 12, 4,199,113,249,251, 5,127,119, 28,190, 2,125,250, - 7, 12, 26, 56, 16, 73, 73, 73,138,162, 56,133, 44,244,147, 70,124, 43,144, 9, 1,177,220, 74,147,153,153,153,111, 13,212,106, -181,120,250,244, 41,252,253,253,155, 30, 60,120,176, 68, 53,100,104,124,106,129,101,107,182,111, 95,219, 63, 45,141, 1,128, 45, -132,240, 90, 74,151, 25,154,151,236,236,132,135,207,157,221,101,195, 50, 65,176, 50,255, 5, 15, 30,124,128, 86,155, 19,222,164, -164,120,140, 27,147, 14,145,208, 20,199,143,255,105,237,229,213,232,112,110, 23, 25, 95, 74, 56,165,103,207,158,197,184,113,227, - 16, 24, 24,232,196,178, 44,238,223,191, 15,153, 76,134, 21, 43, 86,176, 94, 94, 94, 78,114,185, 28,231,206,157, 67, 92, 92, 28, - 41, 41,156,215,206, 95,251, 57,237,221,213, 89,177,228, 92,187,205,123,247,227,187,126,125,224, 64, 67,110,154,187,145,159,219, -116,106, 56,135,178,229, 58,202, 77,171, 91,186,251,118,130, 72,172,192,216,159, 22,224, 77,192, 73,203,236,140,231, 99, 8, 23, - 81, 14,185,107,243,125,180,216,241,193,158,220,218,189,119,106, 93, 44,255,176,130, 83,173,145,247, 1, 60,255, 75, 96,185, 10, - 8,195,153,231, 89, 43,223,190,125,139,119,239,222, 65, 32, 16, 64,169, 84, 66,175,215, 23, 25, 78,103,103,231,145,122,189,126, - 78,110, 58,239,112,116,116, 28,186,123,247,110,235,130, 2, 59,207,114,149,156,154,158,114,231,225,203,215,147, 70,246,108,118, -227, 94, 64,132,133, 95,215,240,212,103,199,210,138, 73, 35,169, 76, 44, 62,124,238,232,159, 10,221,251, 43,144,123, 53,131, 80, -225, 14, 78, 23,133,236,148, 44,100,188,139,129,250,143,117,168, 49,102, 34, 78, 30, 59,164,240,169, 86,251, 32, 33,196,157, 82, -170,249,140,111,211, 96, 24, 57,141,156, 70,206,127, 38,103, 73, 90, 4, 64, 45, 0,246,185,255,147,144, 51, 52,198, 6, 64, 34, -114,150,237,178, 7,160, 1, 32, 46,112, 79,225,253,130,215, 22,222, 47,248, 63, 41,247,191, 93,238,239, 67, 0,201,159, 45,176, -138, 87,147, 76,186,158,231, 37, 98, 91, 91,245,208,222,173,124, 47, 92,122,244, 84,110,109, 46,104,211,188, 86,211, 7, 47,222, -221,101,192,232, 8, 97, 12, 26,215,193,178,108,159,213,171, 87, 87, 51, 51, 51, 3,207,243, 48, 55, 55, 71, 66, 66, 2, 52, 26, - 13,210,210,210,160,206, 72,135, 54, 35, 29,207, 34,194,208,176,105, 51,244,104,215,198,235,207, 99, 39,250, 0,216, 87, 18,175, - 83,245,154,249,150,171, 5, 21,173,255, 50, 69, 68,164,230,139,173, 95,106,186, 67,164, 80,160,245,164,105, 95,146,240, 79,196, - 98,241,217,238,221,187,127, 51,101,202, 20, 38, 38, 38,230, 28, 33,164, 33,165,180,212,238, 81,173, 68,250,195,247, 63,116,180, -180, 84, 80, 28,188,120, 2, 77,106,246,131,137,152, 69, 82,186, 22,132, 0,175, 94, 30, 1, 33, 86,120,254, 38, 6,141,107,152, -161, 77, 91, 47,197,177, 67,175,166,224,175,241, 63,159, 36, 77, 74, 74, 10,226,227,227,161,211,233,160,211,233,208,179, 87, 47, -236,218,185, 19, 89, 89, 89, 80, 42,149,208,104, 52,224, 56, 14, 12,195,224,226,169,131,136,120,255, 10, 13,252,253, 81,156,233, -117,199, 19, 42, 36,132,220,123,253,250, 53, 94,189,122,133,200,200, 72, 72,165, 82, 56, 56, 56, 96,193,130, 5, 80,171,115,214, - 16,235,213,171, 87, 83, 0, 47,190,244, 67,122, 7,108,122,175,215,207,250,230,232, 81,187,219, 71,143,242,119, 79,156,136,148, -102,102,110, 52,228, 94,145, 8, 61,151, 47, 27, 93, 85, 46,151, 35, 50,124, 53, 60, 61, 69,152, 60,209, 26, 75,126, 73, 4, 0, -140, 31,231,130, 58,181,109,144,158,122, 8, 54,118, 51,176,118,237, 4,183,193,131, 87, 14, 4,176,163, 20,234, 89, 39, 78,156, -232,225,238,238,238,252,228,201, 19, 34, 22,139, 33,147,201, 32,147,201, 32,149, 74, 17, 31, 31,143,208,208, 80,186,124,249,242, - 40,228,116, 33, 22,139,220,110,192,111, 38,125,227,120,246,245,227,157,141,157,217,247,207,122,140,109, 20,246,252,222,147,140, - 11, 23,111, 47,212,171,164, 17,169,145,151,166, 86,174,243,196,102,204,143,243,177,110,249, 92,188,190,127, 35,217,190,124,250, -122, 25, 81,239,168,215,186, 8,171, 88,179,249,130, 49,179,123,235, 71, 14,238, 97,113,210,254,206,200, 51, 2,146, 16,155,248, -120, 5, 66,159, 40, 37, 85,106, 14,240,112,101, 52, 87,174, 92,145, 53,105,210, 4, 42,149, 42,223, 18,185,123,247,110, 94,175, -215, 23,217,237,172,213,106,231, 68, 69, 69, 57, 42,149, 74,180,107,215,110,252,138, 21, 43,228,121,107,200,113, 28,247,145,229, -234,231, 85,187,206,255, 48,103,253,213,243,251,126,113,250,121,218,208,102,253,199, 46,186,138, 98,214,121, 20, 48,204,152,147, - 71,183, 57, 72, 45,117,144, 89,181,129, 42, 78,137,215,155,190, 67,118,186, 10,117,126,158, 15, 64, 12,141,142,193,198, 78, 61, - 33,180,118,194,220,225, 67,157,102,110,220, 60, 26,192,106, 99, 59,222, 8, 35,140, 40, 4,123, 66,200, 41, 0,152, 54,109,218, -140, 37, 75,150,188, 36,132,156,162,148,118,204,109,208,157,162,148,118,204,187, 38,183,206,254,100, 63,239,218,194,251,133,255, - 79,159, 62,221,103,233,210,165,139,253,253,253,247,221,185,115,231,253,231, 8, 44, 38, 79, 49, 22,252,253,200,130,197,243, 55, -222,134,132,101,183,109, 93,223,249,228,181, 23,143,134, 12,233,208,178,119,231,198,109,222, 71,196, 7,185, 85,112,176, 9,120, -249,204,140,231,249, 27,134, 60, 76, 34,145,116,108,209,162,133, 32, 37, 37, 5, 38, 38, 38, 72, 72, 72, 64, 84, 84, 20,180, 90, - 45, 84,105,169, 80,167,165, 66,149,154, 2,109, 90, 10,222, 61,122,128,234,110,174,146,220, 65,240,165, 9,159, 34, 45, 83, 5, - 45, 89, 98, 83, 83, 72, 76, 77, 65,202,216, 61, 72, 8,233, 98,105,105,121,143, 16, 50, 43,183, 50, 26, 51,117,234,212, 68,158, -231,177,104,209, 34, 51,133, 66,113,144, 16, 34, 41,141,199,212,150,237,232, 95,195,151, 9, 10,125,142, 70,126,131,224, 81,185, - 61, 66,227,148, 72,204,208, 34, 62, 85,139, 58, 77,126, 67, 69,191,249, 40, 87, 99, 9, 94,125, 72,134,147,179, 59, 3,129,164, -196, 69,153,227,226,226, 62,218,223,183,119, 47,178,179,179,225,230,230,134,126,253,250, 97,234,212,169,232,215,175, 31,156,156, -156,208,191,119,103,204,157, 59, 23,241,241,241,165, 5, 85,237,225,225,161,174, 80,161,130,186, 66,133, 10,106,173, 86,139,204, -204, 76,164,166,166, 22,142,239, 9,101,254, 58,236,237,167, 59, 58, 58, 62,183,183,183,127, 41,149, 74,207, 60, 37, 36, 72, 93, -177,162,125,195,174, 93,137,119,239,222,108,184,137, 9,185, 14, 40, 12,225,178,177, 18,118,104,222,226, 27,113,106,202, 54, 0, - 57, 70,169,161, 67,108,113,235,186, 15,110,223,172,141,113, 99,220, 64, 24, 41, 8, 35, 70,118,214, 21,212,171,235, 47,178,176, - 32, 29, 75, 73,235,111, 1, 60,109,216,176,161,211,216,177, 99,137, 68, 34,193,248,241,227,181,195,135, 15, 15,238,215,175, 95, -240,229,203,151,185, 10, 21, 42,160, 92,185,114,164, 92,185,114,142, 0,158,230,222, 83, 34,204,220,200,207,106,237,171,155, 22, -238,242,247, 28,108, 26,100,234, 36, 61,231,174,136, 78, 90,184, 62,228,215,208,215,217,174,175,239,223, 72, 10, 14, 56,201,135, - 62,188,150, 24, 29,156,225,186,112,125,200,175,211,215, 69, 21,249, 49, 95,191, 14,254,200,169,235,218,236,172,108, 65,215, 78, -205,179, 71, 14,235,227, 97,165,240,217, 13,231, 54,126, 21,203,187,244,159,187,120,173,118,248,232, 31,180, 91,182,110,163, 25, - 25, 25, 72, 79, 79,199,218,181,107,245, 39, 79,158,140,226, 56,238,135,226,218, 62, 0,160,211,233, 48,114,228, 72,185,153,153, - 25, 34, 34, 34,242, 45,160, 0, 16,147,144,244,226,246,195,128,160, 73,163,122, 53,205, 82,171,213,231,175, 61,122,229,237, 94, -193,133, 16, 90,236, 4, 19,177, 80,216,186,118,189,122, 44,165,169, 32,130,242,120,183,115, 57,210, 99,147,145, 30,159, 12, 86, - 40,135, 30, 18,232,120, 49, 44,170,215,197,155,135, 79,224,108,107, 47,144, 8,133,198, 37,174,140, 48,226, 63,138,146,180, 72, - 65,145,180,116,233,210,197, 37,157, 47,240,171, 41,180,159, 47,160, 10,139,175,130,255, 1, 96,233,210,165,139, 41,165, 29,239, -220,185,179, 23,128,242,115,222,167, 84,181,193,170, 52, 75,166, 76,157, 5,115, 51,153,121,189,154,238, 14,199,206, 93,123,124, -227,206,163, 87, 21, 93,108,108,169, 78, 99,185,108,229, 58, 23,146,173, 52,116,144,183,151,141,141, 13,180, 90, 45,222,190,125, -139,200,200, 72,104,181, 90,232,179,178,160, 78, 77,133, 42, 37, 5, 92, 86, 6, 68, 28, 7,101, 66, 60,172, 77,164,192, 95, 51, - 12, 75, 19, 66, 69, 10,172,188, 95,169,153, 25, 36,166,102, 96,132,194, 34,187, 15,139,225,172, 85,183,110,221, 3, 1, 1, 1, -245, 90,181,106,181,144, 16, 98, 78, 41,253, 16, 21, 21,213,114,246,236,217,106,123,123,123,140, 28, 57,178, 42,128, 65,165,138, - 75,177,198,171,130, 67, 85,120,184, 14, 66,197,114, 45,144,154,165, 67, 66,186, 14,241,169, 90,108,252,205, 31,135,183,212,197, -173,195,141, 17,112,190, 53, 82,117, 14, 80, 56,117, 1,229, 52, 62, 37,113,222,185,115, 7, 27, 54,108,192,134, 13, 27,240,199, - 31,127, 96,221,186,117, 72, 73, 73,129,175,175, 47,194,195,195,113,246,236, 89,196,196,196,192,198,198, 6, 79,159, 62,197,198, -141, 27,241,224,193, 3, 67, 50,185, 65,215,148,181,175, 92,175,215, 15,142,233,218,181, 90,156,149,149,119,205,154, 53,191, 25, - 63,126,188,107,195,134, 13,243,207, 87,174, 92,185,188, 76, 38,139, 37,132,108, 33,132,212, 40,137,139, 7,106,218,218,250, 66, -163, 14,202, 77, 43, 33, 8,145,162, 69,235, 87,104,216,248, 17,180, 58, 17, 24, 34, 1,195, 72,161,215, 39,193,210,210, 9,148, - 18,223, 82,130, 56, 59, 33, 33,193,253,210,165, 75, 76,104,104, 40,164, 82, 41, 0,132,205,155, 55,111,221,175,191,254, 26,104, -109,109,205,157, 58,117, 10,199,142, 29, 67,199,142, 29,217,225,195,135,187,151, 43, 87,110, 67,105,239, 61,119, 77,244,221, 61, - 43,207,246, 21,234, 44,107, 72,101, 21, 43, 33, 75,209,101, 76, 51, 91, 57, 0,156,125,247, 46,195,174,124,250,210,172,140,231, -225, 22, 46,153,191,148, 54,192,157,210,185,252,227,224,160,123,123,142,158, 75,139,143, 75, 17,214,172,230,163, 92,178,224, 71, - 81,197, 74, 85,150,205,157, 58,202, 33, 42, 93,154,218,122,252,217,160, 35,231, 30,100, 14, 24,242,157,126,216,136,177,170,179, -231, 46, 30,229,121,190, 90,113, 51, 8,121,158, 71, 76, 76, 12, 94,190,124,137,144,144, 16, 36, 36, 36, 32, 49, 49, 17, 25, 25, - 25,249,221,138, 38, 25,233,167,215,109, 63,249, 76, 46,147,153,212,171,230, 94,254,254,147,192,120,185, 76,102,226, 94,169,188, - 7, 33,243,139, 44, 71, 56,142,171, 38, 53,145, 1, 32, 72, 13,184,129,204,148, 76,100,166,102, 34, 35, 57, 19,106, 45, 11,149, -154,129, 82,195,160, 66,211, 54,200,204, 82, 33, 51, 41, 13, 60,199,249, 25,171, 25, 35,140, 48,162,132,122,249,212,180,105,211, -102, 24,120,185,193,221,152,133, 5,215,180,105,211,102, 16, 66, 78, 77,159, 62,221, 7, 6,140, 89, 46, 10,165,186,105, 72, 76, -124,147,105,102,235,221,125,226, 79,115,206,238,221,186,222, 86,163, 81,134,219, 88, 42, 56, 83, 19,137,229,240,145,139,144,145, -153,210, 45, 51,217,240, 89, 79, 41, 41, 41,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,165, 18,156, 50, 11,202,148, 36, 48, 90, - 53, 68, 28, 7, 43, 19, 25, 42, 56, 57,160,162,189,131, 65,156,111,175, 92,200, 31,208, 94,176, 91,112,121, 93, 47,136,229, 10, -136, 77, 21,248,254,212, 53, 0,128, 72, 36, 2,102, 47, 52, 36, 17,109,156,157,157, 79,236,217,179, 71,148,144,144,128,167, 79, -159, 62,163,148,166, 17, 66, 76, 1,240,175, 94,189,186, 20, 16, 16,208,209,221,221, 29, 0,220, 74,227, 75, 79,100, 56,157,158, - 34, 34, 54, 12,161,145, 79, 96,101, 94, 25, 66, 19, 15,196,167,106, 33,145, 85,134, 78,253, 87, 47,163, 42,253, 3,148, 90,195, - 38, 58,106,181, 90,104,181, 90,232,116, 58,168,213,106, 12, 24, 48, 0,183,239,220,193,190, 99,151,241,254,221, 27, 84,173,228, -128,129, 3, 7,160, 70,141, 26,120,248,176,228,241,195,131,107, 18,221,204, 38, 16,172,252,134,129, 88, 97,173,174, 63,245,252, -125, 67, 68, 86, 73,173,141, 2,241,249,107,199,142, 29,171,188,201,202,194,203,160, 32,180,154, 55, 15, 0,112,250,244,233,252, -107, 52, 26, 13, 38, 77,154, 36, 14, 12, 12, 28,246,232,209,163, 97,132,144,149,148,210,162, 7,145, 83,224,244,233,187, 24, 53, - 42, 16, 9, 9, 57,227,176,247,239,253, 75,143,134,190,215,162, 93,135,156,158, 43, 11, 11, 11,172, 92,233,107, 80,124,114, 28, -135, 77,155, 54,229,119, 11, 2,128, 64, 32,104, 56,105,210,164,238, 69, 93, 95,165, 74, 21, 81,105,156,147,122,185, 72,159,126, -144,141, 49,175, 82,209,199,204,166, 58,146,116, 79,124,159, 68,197,140,155,212,203,101,245,202,131,145, 42, 25, 81,239, 32, 92, - 68, 57,129, 84,181,211,144, 48,190, 59,187, 86, 99, 81,113,200,206,216,132,244,153, 99,191,251,214,218,204,194, 46,107,203,186, - 37,150, 12,203,208, 19,143,180,169, 62,174,214, 22, 93,234,175,201, 28, 53,113,246, 19,141, 62, 98, 44, 34, 78,188, 41,201, 85, - 5,199,113,136,142,142, 70, 66, 66, 2,194,195,195,145,152,152,152,251,237, 39,126, 50, 19,181,140, 5, 33,148,225,225,248,112, -116, 11, 42, 14, 24,128, 58, 11, 23,128,227, 5, 80,102,115, 88,217,160, 37, 82,210,148, 80,243, 4, 78,181, 26,224,187, 51, 55, -193, 80, 14,216,184,222, 88,131, 24, 97,196,127, 87, 60, 21,171, 69, 10, 11,161, 37, 75,150,116,252,218,207, 47, 40,178,150, 44, - 89,242,114,201,146, 37, 95,244,172, 82,221, 52, 0, 64,122, 66, 96,136,117,133,234,209, 89,202, 76, 19, 59,123, 27,141, 66, 42, -225,211,210,179,216, 39, 47,158,105, 51, 99,222,190, 46,195,243, 94, 5, 4, 4,248, 70, 71, 71, 35,252,195, 7,232,149, 89, 96, -212, 26, 80, 85, 54, 90, 53,106, 0, 41, 0, 41, 67, 32,226,181, 16,176, 98,100,100,166, 3,192,171, 82, 43, 69,157,238, 19, 75, - 22, 33, 4, 98, 83, 83,136,229,114,136, 21,166, 31, 89,180, 12,177,208, 72, 36,146, 61, 7, 15, 30,116,116,118,118,198,130, 5, - 11,224,226,226,226, 89,173, 90,181,236,198,141, 27,203,236,237,237,225,237,237,141, 6, 13, 26,224,236,217,179, 0, 80,170, 79, - 40,157, 94,250,252,117, 24, 26, 38, 38,223,193,205,107,127, 64,163, 84,163,102,211, 63,160, 21, 84,132,173,207,124,240,111,119, - 35, 59,246,120,142,181,192,161, 19, 34,195,195, 64, 88,241,203, 50,102, 14, 60,127,254, 28,123,143, 95,135, 99, 5, 47,132, 7, - 7, 33,232,234, 37,220,182,181, 70, 69,111, 31,232,116,186, 18,223, 93,199, 65,240,243,250,124, 55, 13,146,228,228,100,137,149, -149,149, 58, 47,238, 28, 29, 29,191, 68,100,125, 59,101,202, 20,164, 10,133, 64,135, 14, 16,133,132, 64,171,213,194,223,223, 31, -181,107,215, 6, 0,248,251,251, 67, 32, 16,160,122,245,234,112,114,114,194,250,245,235,191, 69, 49,179,244, 24,130,167,122,125, -146,167,171,171,107,190,192,218,185, 43, 1, 79, 30,181, 6,129, 24,107,215,253,229,149,161,124,249,242,136,141, 9, 1, 33, 52, -160,148, 48, 46,116,112,112,152,237,232,232,232,250,235,175,191,178, 82,169, 20,163, 71,143,174,156,153,153, 89, 49,215,100,140, -233,211,167,231, 88,165,230,206,197,188,121,243,160, 86,171,179,139, 35,219,181,170,186, 83,124, 50, 63,204,222,193,185, 91,115, -155,138,213, 90,180,109,133,202,238, 45,208,162,109, 56, 0, 44,182, 18,132,245, 94, 62,203,247,168, 77, 57,171,109, 23,206, 93, -156,219,168,105,139,153,211, 70, 90,254,188,116, 99, 74,169, 99, 26,211, 62,236,200,120, 45,238,179,234,183, 13,187, 86,205,153, - 62, 65, 26,158,160, 73,137, 74,161,153, 10,137, 64,225,102, 79, 20,227,126, 90,248, 62, 58, 58,100, 50, 34,206,149, 58,115,146, -231,121,132,132,132,228,143,217, 83,169, 84,200,202,202, 66, 68, 68, 68,126, 23,161, 82,110,214,110,236,144, 78,126, 89, 74,101, -246,253, 23,193,225,179,198,247,247,207, 82, 42,179,131, 67,195,223, 80,186,166, 72, 21,198, 48,204,139,236,140,236, 86,217,169, - 42, 36, 60,125, 13,151,150, 21,160,211, 19,104,244, 28, 18,146, 50,160,214, 3, 28, 35,132, 79,239,129,224,136, 0,137,209, 81, - 96, 88,246,153,177,154, 49,194,136,255, 44, 74,117,211, 64, 8, 57,229,239,239,191,175,160,149, 41,239, 63, 0, 53,128,146,134, -236, 36, 20, 20, 81,121,221,134,197, 61,167, 16,239,103, 11,172, 18,187,123, 8, 33,196,175, 90, 5,167,229,115,191,117,225,245, -250,170,241,137,113,122,129, 64, 34, 44,103,174,140, 41,203,195,212,106,245,169, 75,151, 46,117,109,221,186,181, 36,248,197, 51, -104,210,210,160, 73, 75,133,144,215,195, 74, 86, 27,140, 86, 13,162,209,192,217,147,135, 42, 67,134,235,183, 3,116,106,181,250, -148,161, 2,139, 97,217,143,199, 93, 41, 20,144,152,154, 65,162, 80, 20,238, 66, 36,165,168,104,147,206,157, 59,183,172, 95,191, - 62, 40,165,216,180,105, 19,180, 90,173, 88,171,213, 66,163,209, 64,171,213, 34, 61, 61, 29,187,118,237,194,239,191,255,126, 27, -192,246, 82, 43, 49,189,230,210,249,139, 87,234, 14,237,223, 81,120,230,212, 74,232, 53, 28,148,196, 5, 89, 89, 58,100,106, 76, -192, 89, 15, 0,226, 78,131, 21, 72,225, 95,189, 50,142, 31, 58,162,133, 94,125,217, 16, 81, 85, 16, 42,149, 10, 17,225, 97,136, -124,247, 6,138,244, 88,216,154,153, 32, 59,228, 13,106, 12, 28, 4,141, 70, 83,230, 12, 82,174, 92, 57,240, 60,143,230,205,155, -231, 15,154,254, 92,145,149,148,148,132,147, 39, 79,162,126,253,250,104,218,180, 41,162,162,162, 16, 18, 18,130, 14, 29, 58,228, - 95,243,236,217, 51, 60,121,242, 4,110,110, 37, 27, 5, 19,147,117,103, 34, 35,158,246,234,210,165,139,232,222,189,123,160,148, -194,221,221, 12,102,166,114, 16, 70, 2, 47, 47, 59, 0, 57,218,191, 89,179,102, 72, 79, 15,209,167,164,208, 51,165,196,229, 30, - 66,200, 49,141, 70,243,182, 73,147, 38, 78,239,222,189,195,196,137, 19, 5,251,247,239,207, 51, 25, 99,218,180,143, 39, 73, 40, -149,197,119,205, 87,173,230,249, 99,101,189,101, 83,169,172, 98, 37, 51,155,234,168,236,222, 2, 0,208,186,227, 80, 84,174, 82, - 30,233,137,207, 43,169,148, 97,221, 68,130, 20,203,231,107,163, 2,101, 29,124,135,168,226,175, 5, 3, 48,196,113, 47, 85, 6, -239,143, 11, 23, 14, 56,112,236,196,217,145,237, 59,118, 22,234, 56,189,222,183,130,208,226,224,209,211,241, 81, 31,194,215, 32, -252, 92,192, 95,246,190, 18,173,118, 92,122,122, 58,228,114, 57, 2, 2, 2,212, 29, 58,116,144, 48, 12,131,183,111,223,230, 11, - 44, 59, 27, 43,239,134,117,124, 61,127, 94,181,235,188, 92, 34,145,180,109, 86,219, 43, 48,248, 67, 36,165, 36,172, 56, 94,141, - 78,119,241,197,211,103,205,109,157,170,176, 33,215,238,193,186,113,123,168,213, 12,148, 26, 30,106, 61,160,103, 69,112,172, 81, - 15, 22,110, 94,160, 0, 30,222,187,173, 83,235,116,231,141,117,140, 17, 70,252,167,173, 88,180, 36,113,148,251, 63, 25, 64,216, -146, 37, 75, 18, 11, 88,151, 18, 0, 60, 3,224,151,123, 93, 66,161,251, 18,144, 51, 27,176, 78, 1,158,132, 2, 66,171,224,127, - 77,161,107, 62,171,225, 87,170,155, 6, 0,176,177,177,177,171, 89,179,182,219,230,173, 7, 64, 41,197,235, 39, 43,144, 18, 31, -132,217,139,239,186,185,184,184, 52,141,140,140,188,110,200,195, 56,142,219,191,109,219,182,201,245,106,213,172, 89,201,197, 5, -207,194, 66, 33,162, 28, 68, 28, 7, 70,171,134,128,211,192,197,151, 3, 67, 20,136,142, 78,195,210, 61, 7, 2, 56,142,219, 95, - 26,175,103,251,206, 88, 16,153, 6, 66, 8,126,245,247,133,216, 84, 1,145, 92,129,239, 79, 92,201, 23, 85,167, 22, 76,135, 88, -161,128, 91,189,210, 29,184, 83, 74,179, 77, 77, 77, 31,189,120,241,162,142,175,175, 47, 38, 79,158,140,176,176, 48,240, 60,143, -184,184, 56, 85, 76, 76, 76, 84, 66, 66, 66, 24,128,163, 0, 54, 27,226, 41, 92,164, 86,173, 62,117,120,231, 88,255, 70, 77,109, -186,116,251, 29,199, 14, 77, 66,106, 90, 58,178,245, 50,100,169,244,200, 82,179,176,178,174,134,122,213,171, 35, 58, 42, 30, 47, -239,157,207, 20,168,179, 87,148,197,122,197, 48, 12,158, 61,123, 6, 87, 39, 83,188,185,121, 29, 54, 38, 66,248, 57, 57,192,169, - 97, 35,132,132,132,148,202, 33,100,161,255,246,219,111,243, 61,185,183,105,211, 38,116,192,128, 1,142,147, 38, 77,194,214,173, - 91,113,251,246,237, 79, 6, 94, 55,109,218, 20, 55,110,220,152, 15, 96,110,105, 70, 60,141, 70, 3, 79, 79, 79, 60,124,248, 16, -151, 46, 93, 66,139, 22, 45,208,180,105, 83, 60,127,254, 28, 23, 46, 92,192,147, 39, 79, 64, 8,129,181,181, 53,116, 57,162, 89, - 87, 28,153, 86,139,131,191, 44,219, 54, 99,213,170,223,125,250,247,239,143,195,135,247, 97,232,144,170, 32,140, 4,132, 72,208, -185, 83, 85, 44, 88,248, 16,245,234, 53,131,141,141, 16,171, 86, 30,127,175, 84,114,187, 12,136,202,159, 47, 92,184,224,164, 82, -169,144,154,154, 74, 21, 10, 5, 73, 74,202,153,161, 90,148, 5, 43, 59, 59, 91, 90, 28,209,139,199,175, 86,164,102,208, 20,154, -249,164, 91,178,254, 73,181, 22,109, 35,208,186,227, 16, 92, 60,181, 29, 87,206, 95,130,149, 32, 44, 20,242,140,179,137,161,137, -233, 49, 89,238, 27,188,106, 13,103, 35,179,206,111, 24,223,197,146,117,116,228, 15, 78,251, 61, 45,181,132,244,166,132, 16,146, - 28,184,251,196, 81,138,206, 13,252,235, 85,241, 45,239, 40, 78, 73,140,167,135,142,159, 13,208,134, 30, 62,153, 39,172, 74, 91, - 21,129, 82,186, 96,218,180,105,115,114,255,239,152, 53,107,214,240,165, 75,151,218,198,198,198,230,143,193,138, 79, 76,190,210, -160,195, 56, 46, 41, 53, 77,179,109,213, 79, 61,101, 82,137,120,214,210,109,215,116, 44,238, 21,199,171,231,249,245,189, 39,206, -158, 16,252,250,137,115, 69,153, 24,199,127,154,139,103, 23,174, 66,199,136, 48,234,210,125,168,181, 28, 82, 19,147,112,121,216, - 24, 40,236, 45,241,251,181,195,113, 60,207,255, 97,172, 98,140, 48,226,191,139, 18,180, 72, 81, 99, 92,226, 12,184,238,161, 1, - 60,127, 11, 12,154, 82,151,152,152, 24,127,227,198,125, 92, 59,245, 51,174,159,250, 25, 47,159, 60, 67,116,148, 6, 81,113, 42, -152,153,153,221, 45, 65,137,182, 42, 92, 41,100,103,103,119,159, 53,123, 78,172, 84,102,130, 38, 45, 91,194,193,214, 14, 38, 34, - 33, 88, 61, 15,150, 8,145,153, 96,129, 55,207,179, 49,117,219,238,248,204,236,236,238,133, 43,135,194,156, 5,142,131, 16, 2, -137,153, 41,196, 10, 83, 72, 76,205, 62,234, 46,148,154,153, 65,106,106, 6,129, 88, 92,212, 96,248, 79, 56, 51, 51, 51,123,244, -236,217, 51, 37, 45, 45, 13,195,135, 15,199,245,235,215,159,156, 63,127,222,236,217,179,103,178,248,248,248, 42,148,210, 54,148, -210,141,197,137,171,194,156,201,201,239, 50,168, 94,221,103,201,156, 31,148, 42,189, 53,122, 13,218, 15, 57, 19, 1, 61,199,131, - 2,112,178, 18,163, 97,171,133,136,215, 52,192,254, 13,139,178,121,173,170,127, 65, 31, 88,133, 57, 41,165,212,218,218,250,163, -119, 97, 24, 6,215,174, 93, 67,175,158, 61,208,182, 91, 87,216, 86,114,133, 93,171,246,104, 59,124, 20, 54,110,220, 8,134, 97, - 96,101,101,245,145, 69,163, 32,231,142, 39, 84,184,231, 57, 37,123,158, 83,178,253, 49, 21, 0, 24,184,123,247,238, 95,252,252, -252,174,222,190,125,123, 5,128, 62, 5,227,187, 64, 88,230, 21,180, 94, 21,147, 70, 51, 39, 76,152,160, 12, 14, 14,134, 92, 46, -135, 94,175,199,237,219,183,241,251,239,191,227,215, 95,127,197,147, 39, 79, 96,109,109, 13, 55, 55, 55,168,213,106, 60,124,248, - 80, 9, 96,102, 9,121,137, 79, 72,208,247, 88,187,118,105, 82,199,142,141,177,109,219, 58, 56, 56, 52,128, 80,224, 0,129,208, - 22,114,133, 39,182,108,254, 5,223,124, 83, 19, 39,142, 31, 72, 78, 76,210,247, 40,236,117,189,152,112,170,238,223,191,143, 13, - 27, 54,160,103,207,158, 81,189,122,245,226,210,210,210,242, 45, 88,121,171,164,207,203, 29, 67,166, 86,171, 37,197,113, 14,255, -233, 69,212,143, 63, 7, 44,136,139,141,170,127,253,234,221,111,175,156,191,132,247,193, 87,112,229,252, 37,220,188,114,103, 90, - 92,108, 84,253,154,117, 61, 68,221,135,143,253,113,231,145,195,172,194,204, 17, 59,143, 28,102,251,141,251, 97, 81,237,182, 45, -102,150,150,231,115,211,145,102,198,199, 77, 95,188,226,183, 76,189, 86,197, 44, 95,179, 62, 90,153, 16, 51, 19,121, 83, 43,139, -177, 94, 21,228,204,206,206,222,168, 84, 42,157,148, 74,165,147, 74,165,154, 25, 22, 22,214,100,242,228,201, 9, 28,199,229, 91, - 72,227, 95, 30,191,251,234,230,246,197,118, 54,150,178, 6,117,124,170,174,220,120,232, 90,120, 68,220,159,121, 62,176,138, 73, - 35, 85,166, 82,213,163,107,247, 1, 89,169, 41,106,248,255, 48, 13,188, 84, 1, 53, 7,232, 40, 11, 61, 17,224,197,207, 43, 33, -179, 50,197,158,208,199,217,105, 58,109,143,130, 62,176, 74,121,247, 47,105, 33, 27, 57,141,156, 70,206,127, 32,231,191, 13,130, - 60,197, 88,240,183, 48,156,157,157,155,116,233,220, 10,205, 58,206, 2,165, 20, 65,143,151, 33, 37,225, 53,156, 29, 36, 8, 9, - 79,247, 7,112,221,208, 7, 82, 74,195, 9, 33,245, 39,204,156,117,164, 87,155,150, 94,190,149, 42, 73, 42, 86,172, 0,185,157, - 29, 18, 19, 19,112,235, 94,160,110,209,222,131, 1,185,226,202,144,165,114,192,243,124,206,224,117, 0, 45, 39, 76, 5, 97, 89, - 32,215, 29, 67, 94,133, 88,169, 78, 3, 16,129, 0, 28,229,161, 86,171,169, 1,225,140, 36,132,244,232,223,191,255,229, 83,167, - 78, 49,109,219,182,173,113,244,232, 81,254, 75, 34, 59, 51,238,205, 85,133,189, 71,199, 69,211, 71,238,175,223,162,171,153,187, - 79,109, 81,237,138, 44,180, 58,130,232,168, 15, 56,117,228,129, 54,240,254,249,116,170, 87,245,201, 74, 40,121,169, 28,173, 86, - 27,110,111,111,111, 63,127,254,124,232,245,122,232,245,122,112, 28,135,196,196, 68,220,189,123, 23,213,234,212,131,215,144, 97, - 72, 72, 72,192,218,181,107,225,226,226,130,197,139, 23, 35, 57, 57, 25,122,189, 62,220,192,180,226, 0,156,207,221, 62, 18,178, -121,173,140,210,186, 7,221,220,220,196, 42,149,170,134,163,163,163,128, 16,178, 90,163,209, 12,153, 62,125,186,195,226,197,139, - 81,181,106, 85, 36, 38, 38, 66, 46,151,195,221,221, 29, 9, 9, 9,120,240,224, 1,151,157,157,189, 1,192, 2, 74,105, 66, 41, -225,123, 75, 8,169, 63,126,252,247, 71,126, 89, 58,210, 93,165,110, 38,182,178,106, 4, 74,245, 72, 72, 8, 67, 70,250,109,237, -194, 5,219,223,197,197,235,186, 83, 74,131, 13, 76,166,185, 99,199,142, 5,114,151,202, 9, 9, 9,121,234,229,229,229, 94,156, - 5,203, 16,172, 60, 24,169, 2,176,119,249,196, 6, 19,211, 19,159,187, 91, 9,194, 66,235,251,242,107, 87, 30,140, 84,205,159, -104,241,115, 98,216,245, 55, 49, 89,231, 55,236, 60,114,152, 29,212,173, 7,231,162, 8,158, 38,181,163,135, 90,116, 42, 53,125, -104,141, 26, 53,202, 17,146, 92, 57, 62,233,245,163,161,195, 71,246, 54, 23, 41,207,248,185, 36,185, 49,229,107, 74,159, 60,121, - 18,106,232,154,158,133,120,223, 16, 66,154, 76,159, 62,253, 60,165,244,163,177, 7,241,137,201, 87,252, 59,142,165,169,169,105, - 79,227, 3,143,191, 48,128,235, 1, 33,164,165,111,181,154,135,127, 89,188,212,190,217,132,201,130, 55, 87,175, 1,156, 14, 31, -174, 95, 3, 39,209,240, 43,239, 92,140, 75,211,106,187, 25,189,184, 27, 97,132,209,122, 85,146, 22,249,159, 20, 88,165, 33, 50, - 50,242,186,155,171,203,133, 55,111,154,180, 41,239, 98, 11, 0, 8, 9,141, 70, 84,156,250,130,161,221,131, 69,136,172,218,187, - 79,158,233, 35,145, 72, 58,146, 92, 87, 12,244, 51, 22,123,214,235,245,145,149, 42, 85, 42,230,108,209,174,154, 56,142,139, 51, - 48,156,215, 8, 33, 3,220,220,220,150,126,248,240,225, 8,165, 52,235, 75, 35, 60, 51,238,205, 85, 43, 43, 55,215, 59,151, 14, -255,112,239,218,169, 86, 84,175,169, 6, 0, 68, 32, 46,211, 98,207,153,153,153, 35, 71,143, 30,189, 81, 40, 20,150, 71,238,152, -178,188, 25, 95, 28,199,177, 90,173, 86,202,113, 28, 11,128, 48, 12,163, 23, 10,133,170, 35, 71,142,232,245,122,125,184, 90,173, - 30,249,165, 31,128,161, 56,115,230, 76, 69, 75, 75,203, 54,132,144,158,148, 82,207,140,140, 12,245,172, 89,179,238, 30, 57,114, - 36,173, 66,133, 10,237, 58,116,232, 64,172,172,172,240,240,225, 67,154,148,148,116, 8,192, 76, 74,105, 72, 25,194, 19, 66, 8, -241, 27, 57,234,143,190, 86, 86, 27, 59, 80, 10, 63, 80, 16,194,224, 69, 90, 26,127, 38, 59,155,251, 51, 87, 40, 26,202,167, 47, -100, 57, 91, 24, 16, 16,176, 29,128,176,168, 49, 88,101,130, 73,230, 9,149, 50,172, 7, 81,100, 31, 93,185, 38, 82, 5, 0,115, - 87,165,166, 1,216, 50,190,155, 21,255,234,241,150,101,206,102,193, 63,173, 57,154,188,205, 16,186,154, 53,107,186, 50, 12,211, - 7,128,175,157, 36,181,138,173, 56,141, 35,132, 54, 39,132,177, 1,240,220,219,219,251, 20,128,200,207, 76,231, 55, 0, 42, 20, - 62, 30,255,242,248, 93, 0,119,203,200,245,128, 16, 82,101,226,148, 73, 99,196, 66, 97,107,112, 92,245,133,199, 14, 82,227, 98, -207, 70, 24, 97,196,191,222,130,101, 8,222,133, 68,182, 5, 0, 15, 15, 15, 26, 28, 28,252,197, 10, 51, 87, 64,237, 67, 41, 94, -218, 75, 67, 98, 98, 98,237,191, 89, 81,239, 5,176,247,107,114,230, 10,168, 5,185,219,231,134,235, 5,128,122,255,215,173,141, -220,190,242,249,197, 93,211,166, 77,155, 15, 90,173,246, 82,110, 69,111, 1, 32, 89,167,211,157,211,104, 52,113,132,144,218, 43, - 87,174,204,243, 84,191,144, 82,250,232, 51,195,193, 3,216,147,187,125,237,119,220,227,228,228, 52,201,218,218,218, 77,165, 82, -137, 85, 42,149,168,160,246,151,201,100, 9,134,114, 89,152,146, 29, 34, 65,138,181,133, 41,249, 68, 64, 89, 57,227,176, 50, 43, -160,170,149, 51, 14, 27,202,247,228,201,147,144, 26, 53,106,236,102, 24,166, 18,165,212, 30,160,230,148, 34,129, 82,154, 40, 16, - 8,162, 2, 3, 3,163,254, 41, 5, 77,174,128, 90,145,187, 25, 97,132, 17, 70, 24, 5, 86, 97,188,121,243,134, 24,163,205,136, -130, 34,171,164,243, 97, 97, 97,106, 0,119,114,183,194,247, 62, 2,208,233,159,254,142,209,209,209, 53,191, 6,207,240,159, 94, - 68, 1,248,161,118, 17, 75, 46,207, 93,155,156, 1,224,199,230,157,203,198,249,244,233,211,112, 0,225,198,156,104,132, 17, 70, - 24,241,207, 2, 99,140, 2, 35,140, 48,194, 8, 35,140, 48,194,136,175, 11, 2,160,200,153, 0,101, 89, 41,251,115,102, 19,148, -198,111,228, 52,114, 26, 57,141,156, 70, 78, 35,167,145,243,223,199,249,159, 65,222, 44,187,191, 99, 3,208,202,200,105,228, 52, -114, 26, 57,141,156, 70, 78, 35,167,145,243,191,182, 9,140, 18,211, 8, 35,140,248,175,226,208,161, 67, 6, 45,250,217,247,167, - 45, 29, 21, 10,203,217,153,233,105, 75,247,173, 24,122, 52,239,120,207,158, 61, 57, 99, 44, 26, 97,132, 17, 69,161, 88,129,229, -234, 90,206,155,225,248,134,148, 50, 44,101,168,142,164, 43,247,191, 75, 78,254,200,125, 64,249,242,229, 45,132, 12, 58, 17, 74, -229,132,240, 28,207, 50,183, 67, 66, 34, 2, 13,125, 56, 33, 68,108,105,105, 57, 86, 36, 18,181,210,104, 52, 46, 12,195, 68,170, -213,234, 75,217,217,217,235, 10, 59, 28,252,191, 68,213,170, 85,251, 93,187,118,205,162, 81,163, 70,106,153, 76,166, 87, 42,149, -130,115,231,206, 73,190,249,230,155,212,183,111,223,126,214, 12, 67,103,103,231, 22, 91,182,108,169,220,182,109, 91, 84,169, 82, - 37,171, 79,159, 62, 34,127,127,127,209,240,225,195,223, 71, 69, 69, 93, 41, 11, 23, 33,196,155, 16,178,139, 16,194,242, 60, 63, - 48,119,134,225, 87, 7, 33,132, 1, 48, 2, 64, 87, 0,174, 0, 66, 0, 28, 3,176,201, 16,111,246, 69,240,245, 0,208, 30,128, - 95,238,161,103, 0,206, 80, 74, 15,127, 65, 24,123, 0,104, 79, 8,169,145,107,161,125,250,181, 56,133, 66, 97, 13, 0,208,233, -116, 79,255, 41,225, 36,132, 12,145,201,100,223, 1,128, 82,169,220, 76, 41,221, 94,230,192,108,244,162, 0,224,189, 44, 8, 0, - 16,248,147, 39, 12,221, 15,124, 95,198,217,196,197, 60, 11, 35, 95,145, 47,136,203,246,253,251,247, 95,252,231,159,127,206,165, -148, 30,255, 59,242,190,131, 67,185,117,191,174,217,228,244,195,216, 97, 75,145,179,130, 67,137,240, 33,164,181,152,101, 59,107, - 56,238,102, 32,112, 16,128,192,202,202,170,159, 88, 44,110,162,209,104, 28, 5, 2, 65,140, 70,163,185,145,150,150,182,151, 82, -170,251,226, 0, 6, 17, 75,109, 54, 28, 8,255,215, 58,108,148,129, 90,100,130, 88,120,210,148,146,110,101, 89,118,133,179,179, -243,136,212,212,212, 76,134, 97, 40,201, 65,110,212,230, 59,107, 38, 60,207, 71, 37, 39, 39,215,254,204, 52,146, 2,152,135,156, - 53,221,214, 80, 90,114,152,138, 9,231, 15, 78, 78, 78,221,210,211,211,179, 89,150,165, 5,194, 71, 0,128, 97, 24,194,243,124, -124, 82, 82,210, 64, 99,213, 94, 60,156,156,156, 24,145, 72, 52,136, 97,152,149,122,189,190,114,120,120,120, 10, 0,216,217,217, -249,197,199,199, 27,215, 2,253,218, 2,171,128, 91,250,102,148,210,235,174,174,229,188,123,118,237,190,120,212,200,209,132,101, - 25, 4,188,124, 41,248,118,224,144, 54, 86, 86, 86,206, 10,181,218, 11,132,240,217, 82,105,128, 78,167,141, 58,184,247, 79, 83, -207,170, 85, 57,142,227,177, 97,227, 31,223,184,186,150,155, 97,136,200, 34,132,120, 56, 56, 56,236,154, 54,109,154, 67,231,206, -157, 89, 7, 7, 7,132,133,133, 89,236,219,183,175,234,111,191,253,214,155, 16, 50, 48,215, 23, 79, 89, 63,228,198, 14, 86, 76, - 27, 83, 25,105,137, 12, 14, 25, 58, 92,142, 85,226, 2,165,244,230,231, 70, 82,118,118,246,184,236,236,236,122,117,234,212,161, - 91,183,110, 37,131, 7, 15,166,132, 16,162, 84, 42,119,224, 51, 93, 56,200,229,242,245,109,219,182,117,119,119,119, 15,121,247, -238, 93,251, 3, 7, 14,156, 25, 52,104,144,171, 92, 46, 15, 6,224, 81, 70,186,237, 73, 73, 73,126, 74,165, 18, 46, 46, 46, 91, - 1,212,250, 27,196, 21, 1,112,216,202,202, 74,181, 96,193,130,205,205,154, 53,115,142,142,142,230,166, 78,157,218,240,233,211, -167,237, 8, 33, 93, 13, 21, 89,132, 16, 75, 0, 27, 20, 10,133,201,212,169, 83,111,180,110,221, 58, 84,161, 80, 72,159, 63,127, - 46,156, 58,117,234, 8, 66, 72, 47, 0,163,202, 82, 8,231,113,218,218,218, 90,204,157, 59,247, 69,131, 6, 13,174,139, 68, 34, -209,235,215,175,133,211,166, 77, 27,243, 37,156,238,238,238,166,115,230,204,121, 88,163, 70,141, 56,169, 84, 42,122,247,238,157, -112,198,140, 25,163, 88,150,237,197,243,252,103,113, 90, 89, 89,153,205,152, 49,227, 81,211,166, 77, 19, 36, 18,137, 56, 48, 48, - 80, 48,125,250,244, 81,101, 9,167,181,181,117,115,107,107,235, 77,177,177,177, 2, 0,112,116,116,172,235,230,230,246, 91,158, - 63,180, 92,225,134, 92, 81,152,161, 82,169,250, 39, 37, 37,125,226,192,214,123, 89, 16,126,156,179,163,223,143,115,114,246,119, -230, 30, 47,109, 31, 24,108,112,222,247,174,156, 83,198,140,153,242,251,128,156,223,156,227,127,228, 6,117,125,101, 66,203, 34, -214, 8, 33, 93, 90,180,104, 49,239,202,149, 43,127, 52,107,214,108,234,238,221,187,237, 34, 34, 34,126, 33,132,148,235,219,183, -239,224,203,151, 47, 47, 73, 72, 72, 56,244,181,242,191, 88, 36,145, 16,134, 64, 38, 53, 49, 51,228,122, 33,195,116,188,211,165, -203,119,155, 95,191,174,249, 91, 80, 80,229, 44, 71,199,122,227,199,143,183,239,222,189, 59, 83,174, 92, 57,188,125,251,214,122, -247,238,221, 94,155, 55,111,238, 70, 8,153, 64, 41,253,240, 37,226, 42, 43, 21,213,212, 26,212,164, 20, 22,127,197, 17, 82, 37, - 90, 60,145, 7,145, 23,197,137, 44, 66,200,170, 46, 93,186, 12, 60,118,236,152, 98,247,238,221,138, 6, 13, 26,192,222,222, 30, -132, 16,112, 28, 7,158,231,193,243,124,238, 90,159,238, 95, 50,131,124,245,205,155, 55, 71,188,125,251, 22,195,135, 15,103, 1, -204, 42, 99,249, 51,169, 91,183,110, 29,142, 28, 57, 34, 59,120,240,160,172, 78,157, 58,112,112,112, 0,128,252,240, 81, 74, 81, -185,114,229,127, 93, 37,237,234,234, 74,197, 98, 49, 88,150, 5,165, 20, 60,207, 67,167,211, 65,163,209, 68,168,213,234,110,241, -241,241, 79, 12,229,178,183,183,103,164, 82,233, 96,153, 76,182,149,101, 89,232,245,250,171,110,110,110, 45, 56,142,131, 68, 34, -185, 10,252,149,127,254, 47, 80, 88,139,252,107, 44, 88, 5, 87,176,102, 56,190,225,168,145,163, 73,159,126,125, 99,223,134,188, -231, 5, 66,113,191,115,231,207,155,120,123,123, 51,234,117,235,160, 79, 72,128,110,226,196, 6,151, 46, 93,210,245,234, 55, 64, - 41,100,201,118,215,202,149, 76,246,239,221,231,112,228,240,161,134, 0, 2, 75,179, 92, 57, 56, 56,236,186,118,237,154,115,229, -202,149,145,154,154,138,176,176, 48,100,101,101,161,119,239,222,194,134, 13, 27, 58,247,236,217,115, 23, 33,164,145,161,150, 44, - 66,136,125, 21, 23,193,169, 95,231,244,246,248,166, 77, 67,185,115, 57, 55,208, 88, 21, 34,222, 5,213, 57,117,237,222,120,119, - 11,230,205,219, 52,218,145, 82, 26, 87,214, 72, 74, 76, 76,252,169, 91,183,110,135,155, 55,111,110, 43,145, 72,224,228,228, 68, - 58,119,238, 28, 31, 29, 29, 61,255, 11, 50, 18,114, 91, 93, 92,193,223,194,203,248, 24, 8, 23, 75, 75, 75, 88, 90, 90, 2,128, -243,151,100,136, 94,189,122,177,225,225,225,223,241, 60,239, 85,240,184,157,157, 93, 85,142,227, 82, 62,124, 8,175,170,212,104, -189, 70,143,157, 49,175, 79,207, 86, 22,119,238,220,225,219,182,109,171,190,113,227,198, 8, 0, 27, 12,124,204,134,234,213,171, -191, 91,189,122,181, 58, 56, 36,180, 82,192,171, 96,200,165, 34,174, 92,185,114,146,192,192, 64,245,236,217,179,179,214,172, 89, -179, 1, 64,175, 50, 4,125,195, 55,223,124,147, 50,107,214,172,248, 55,239, 66, 29,159, 5,190,161, 10,137, 72,103,111,111,199, - 62,122,244, 72,245,203, 47,191,240, 75,150, 44, 41, 51,231,128, 1, 3,162,167, 78,157, 26,154,144,148,234,156,146,154, 65,197, -217,217, 90, 23, 23, 23,193,213,171, 87, 51,127,255,253,119,245,212,169, 83,203,204,217,172, 89,179,216,133, 11, 23,134, 7, 5, -135, 56, 61, 9,120, 13,133, 68,168,115,112,176, 99,159, 60,121,146,189,100,201, 18,237,178,101,203, 12,226,148,203,229, 59, 15, - 28, 56, 32, 56,126, 60,199,104,115,247,238, 93,198,213,213,213,164,224, 53, 74,149, 26, 12, 1, 18, 19, 19, 77,252,253,253,119, - 2,112, 41,142,111,208,160, 65,177,101,201, 43,131,212,203, 12,182, 90,229, 9,171,209,163, 71, 23,231,155,107,128,119, 25, 68, - 86,251,246,237,103,158, 62,125,218,109,247,238,221, 43,247,236,217,163, 1, 0,169, 84,106,179,111,223,190, 37,189,123,247, 70, -239,222,189,103, 3,248,106, 2,139,163,156, 22, 0, 36, 82,137, 36, 40, 40,136,120,122,122,150,232, 8, 89,203,243,143, 54,191, -126, 93,251,123, 79,207, 58,201, 60, 95, 69,244,205, 55,153,147, 38, 77, 74, 76, 79, 79, 71, 88, 88, 24,180, 90, 45, 6, 15, 30, -204, 54,107,214,204,169,119,239,222,107, 9, 33, 61, 40,165, 90, 3,172, 56, 43,156,157,157, 71,164,165,165,101,230, 89,113,188, - 42,153, 10,154,212,208, 75,170, 87,209,137, 69,172, 94,212,105, 34, 79, 46,172, 35, 89,158,149,113, 11, 0, 68,217, 72, 16, 1, - 41, 69,148, 65,203,186,116,233,210,251,216,177, 99,150, 0,112,232,208, 33,100,103,103,163, 66,133, 10, 16,137, 68, 16, 10,133, - 16, 10,133,249,255,203, 82, 54, 17, 66,166, 40, 20,138,246,153,153,153,199, 40,165,107, 1,184, 55,106,212, 8,174,174,174, 0, -208, 48,247,154,129, 44,203,246,229, 56,110, 19,165,244, 88, 9, 92,227,187,116,233,210,250,200,145, 35,166,121,225,212,233,116, -112,117,117,133, 72, 36,130, 88, 44,206, 15,231,191, 17, 98,177, 24, 82,169, 20, 2,129, 0,148,210,188,245, 65,175,233,116,186, -241, 0,222, 91, 90, 90, 50, 41, 41, 41,134, 54,110, 89,129, 64,176,178, 64,218, 86,227, 56,110,187, 94,175, 47,175,213,106,205, -255, 9,239, 91, 80,139,252,175,167, 29, 83, 72, 57, 54,203,121, 65,134,101, 89, 6,239, 67,194,116,205,155,183, 28, 20, 30, 30, -174,168, 87,175, 30, 35, 20, 10,145,117,229, 10, 84, 15, 31, 66,161, 80,160, 91,183,110,194, 27, 55,110,152,153, 41,204,134,135, -190, 15,205, 96, 89, 6,148, 50,165,142,105,176,180,180, 28, 59, 99,198, 12, 7,119,119,119,232,245,250,124, 15,228,122,189, 30, - 17, 17, 17, 80, 40, 20, 24, 56,112,160,157,137,137,201, 88, 3, 51, 77, 69, 15, 87,187, 39,215,206,108,172, 53,105, 84,123,185, -135,201, 69,200, 35, 38, 64,113,232,123,120, 69,159,195,180,174,245,228, 23,214,207,174,233,230,100,245,132, 16, 82,177,172,145, -164, 82,169,110, 5, 4, 4, 12,191,126,253, 58, 15, 0, 87,175, 94,165,175, 94,189, 26,249, 37,173, 78,158,231,145,154,154, 10, -158,231,217,220,253,188,223,255,179,204,208,171, 87, 47, 54, 34, 34, 98,164,151,151,151,199,253,251,247,113,226,196, 9, 92,186, -116, 9,231,207,159,135, 88, 44, 46,223,179,103,207,132,132,164, 84,203,212,212, 52,105, 76,228,187,186,251, 54,109,114,138, 14, - 13,189,243,231,159,127,102, 34,167,219,208,144,180,234,161, 80, 40,100, 43, 87,174,204, 50,181,112,232, 80,175,126,227, 58, 66, -169,153,141, 72,162,176, 77, 75, 75,215, 62,123,246, 44,104,249,242,229, 30, 85,171, 86,181,204,237, 70, 51,136,211,198,198,198, -124,230,204,153, 90, 19, 83,219,198,117,234,213,247, 21, 75,205,172,132, 98, 19,171,134, 13, 27,118, 11, 10, 10, 10,157, 59,119, -174,115,141, 26, 53,236,202,194, 89,185,114,101,211,169, 83,167,170,205,204,173, 90,123,123,121,215,108,224, 95,183, 79,173, 90, -181, 6, 10, 4, 2, 46, 46, 46, 46,120,210,164, 73,206, 77,155, 54,181, 46, 11,167,165,165,165,233,194,133, 11, 53,149, 92,171, -246,232,212,169, 99,115,169,137,133,149, 88,102,106,165, 84, 42,185, 87,175, 94,189, 93,176, 96,129,179,159,159,159,141, 33,156, -217,217,217, 66, 27, 27, 27,248,250,250,194,219,213, 21,105,105,105, 56,114,228, 8,182,111,223,142, 45, 91,182, 96,239,222,189, -168,221,168, 13, 76, 77, 77, 17, 29, 29,141,244,244,116, 97, 81, 60,249,221,116,127, 7, 54,122,209, 63,248,177, 3, 70,143, 30, - 29, 85,130,184,194,232,209,163,163,198, 76,249,125, 64, 94, 23, 98, 73,150,171,150, 45, 91, 62, 63,115,230,204,187,221,187,119, -195,219,219, 27,109,219,182, 21, 3,192,216,177, 99,197,189,123,247,198,129, 3, 7,112,232,208,161, 64, 15, 15,143,219,132,144, - 46,134, 4,115,224,192,129,141,122,245,234,117,179, 87,175, 94, 79,251,244,233,179,105,228,200,145, 78, 5,207,199, 68, 71, 62, -210,104, 52,240,171, 89,199,100,225,214,251,253, 75,227,123, 5,236,222, 20, 20,180,125,233,203,151, 31,102,123,123, 91, 84, 8, - 13,181,218,177, 98,133, 77,222,226,217, 58,157, 14, 17, 17, 17,176,180,180, 68,255,254,253,109, 36, 18,201, 64, 3,242,207,170, - 46, 93,186, 12, 9, 15, 15, 87,108,222,188,217,241,233,211,167, 78, 49, 49, 49,142,151, 47,157,183,253,113,242, 88, 83,115,133, - 88, 28,157,144, 35, 80, 67,163, 33, 15,122,143, 70,148,194,162, 96,183,225, 71,173, 50, 23,151, 17,199,142, 29,115, 40, 80, 46, -127, 36,168, 10,255, 7, 67, 25, 43, 31,178,173, 98, 23, 18,111,225, 77,126, 40, 33,156, 29, 14, 30, 60,184, 60, 52, 52,180,105, -199,142, 29,215, 16, 66, 42, 20,113,141,109,243,230,205, 55,191,126,253,186,109,151, 46, 93,142, 18, 66,218, 20,219,122,116,113, -233,118,236,216, 49,235,188,125, 27, 27, 27, 72,165,210, 79,196,149, 72, 36, 2,195,252,251, 60, 15,177, 44, 11,129, 64,144,159, - 14, 2,129, 0, 44,203, 94, 96, 24, 38,130, 97, 24,173,161,226, 42, 87,188,176, 28,199,245,227,121, 62,147, 16, 2,161, 80, 8, -137, 68,210, 81, 44, 22,251, 10,133,194,127,196,251, 22,212, 34,255, 26,129,149,235, 48,242, 26, 0, 80, 66,178,158, 7, 4, 8, - 89,177,120,192,159,123,246, 72, 68, 34, 17, 62,124,248,128,192,192, 64,100, 95,190, 12,229,157, 59,136,139,139, 67,102,102, 38, -236,237,237,177,113,235, 86,185,134,163, 67, 95,191,121,195, 82,230,175,241, 4,197, 77,213,148, 72, 36,173,186,119,239, 94,172, - 16,139,142,142, 70,251,246,237,133, 44,203,182, 42, 34,131, 92, 42,148, 24,196,201,150,156,188,124,120,161,163,163, 56, 16,120, - 59, 9,200,120, 2, 80, 53,160,215, 0, 81, 47,128,211,243, 81, 33, 51,136,156, 95, 56,200,193,217, 68,112,146, 20,106,138, 25, - 48, 77,213,213,211,211,115,203,128, 1, 3, 24, 0,104,209,162, 5,241,244,244,220, 68, 8,113, 45, 33, 35, 95, 42,165,114,188, -151,146,146,130,222,189,123, 91,187,185,185, 93,234,221,187,183,117,222,241,207,229,204,235, 57,242,241,241, 73,146,201,100,123, - 9, 33, 18, 3, 62,184,124,206,240,240,240,239, 60, 61, 61,171,108,222,188,153,101, 89, 22,155, 55,111,198,254,253,251,113,235, -214, 45, 36, 37, 37, 41, 38, 77,154,100,126,234,210,189,115,183,111, 61, 56,177, 98,214, 20,235,110, 45,155,185, 90,166, 37,164, - 59, 59, 59,183, 66,206,152, 44, 67,194,217,126,220,184,113, 23,158,190, 10,177, 99,133, 34,145, 88, 40,144,217,218, 88, 84,112, -176,181,172,226,108,109, 89,197, 84, 44,180, 72, 79, 79,127,127,224,192,129, 76,228,140,207, 50,136,115,206,156, 57,207,130, 66, - 34,172, 25,161, 64, 32, 18,136,196, 22,230, 10,235,206, 29,219, 52, 7, 0, 25, 75, 36,233,233,233, 17, 59,119,238,204, 42, 11, -231,236,217,179,239,198, 36,164,216,137,164, 82, 86, 34, 17,230,199,165,165,153,194, 94, 46,145,200,178,179,179, 63,108,217,178, - 37,173, 44,156,211,167, 79,127,248, 50,248,131, 13, 97,192, 50, 32, 66, 75, 75, 83, 59, 91, 11, 83, 7, 59, 51,133,131,148,129, - 52, 61, 61, 61,108,231,206,157,233,134,112,106,181, 90, 97,124,124, 60,130,130,130, 80,174, 78, 29, 92,186,116, 9,229,203,151, - 71,239,222,189,209,183,111, 95,200,100, 50,180,240,175,134, 25, 51,102,224,221,187,119,208,235,245,226, 50,230, 37, 56, 57, 57, - 93, 43,238, 92,222, 56,170,226, 56,189, 43,147,124,113,101, 8,119, 81,215, 21,230,108,223,190,253,204,203,151, 47,187,237,218, -181,171,243,192,129, 3,111,237,218,181, 11,245,235,215,199,171, 87,175, 80,169, 82, 37,236,216,177, 3,125,251,246,189,181,118, -237,218,206,143, 31, 63,246,171, 92,185,242,140,210, 56,251,244,233, 51,166, 70,141, 26, 87, 98, 99, 99,253,147,147,147,125,143, - 28, 57, 50,180, 91,183,110,239,251,245,235,215, 50,223,130,165,211,237, 57,125,226, 48, 58,116,238,142,170, 62,190, 27, 6,207, -216, 93,173, 36, 78, 74, 41,125, 9,108,218, 30, 19,147,176, 71,165,202,238, 45, 20,154,152,220,191,111,117,232,143, 63,108, 10, -174, 4, 16, 21, 21,133, 78,157, 58, 9, 69, 34, 81,227,146,194, 73, 8, 89,214,181,107,215,222, 71,142, 28,201,183, 54,221,185, -115, 7, 47, 94,188, 64, 88, 88, 24, 82, 83, 83,209,114,100, 38, 70, 47,201,225, 30,189,132,162,205, 88, 42, 47,137, 51, 51, 51, - 83,121,244,232, 81,244,234,213, 11, 35, 70,140, 64,229,202,149,243, 69, 86, 97,113,117,253,193, 69,136,125,147,173, 26,109,194, -144,214,199, 97, 43,119,193,244, 98,194, 41,106,213,170,213,198,206,157, 59,131,227, 56,168, 84, 42, 30, 64,114, 81,186,161, 82, -165, 74,194,114,229,202,225,231,159,127,134,133,133,197,106, 66, 8, 91, 20,103, 86, 86,150,250,204,153, 51, 24, 56,112, 32, 38, - 76,152,128, 42, 85,170,228,135,115,231,238,253, 54,125,135,142,242,168,213,168,137,159,119,173,250,213, 51,212,108, 29,145,137, -213,119,164, 8,115,219,223,225, 58,224,255, 7,103, 94,183, 96,222, 70, 8, 1,203,178, 75, 89,150,237,201, 48, 12, 45, 11, 39, -207,243,122,189, 94,127, 95,175,215, 15,206, 19, 89, 44,203,130,101,217, 50,139,211,191,203, 21, 67, 65, 45,242,175,233, 34, 44, -184,228,137,142,199,201, 1,131,134,118,186,116,249,178,137, 88, 44, 70,104,104, 40,226,226,226,176,127,239, 94,238,160,157, 93, -182, 80, 40,164,253,183,111, 55, 29,246,221,119, 68, 40, 20,194,211,211, 19, 61,123,246,148,245,232,221, 47,222, 86, 40,220,111, -128, 66,117,204,235, 63, 31, 58,116, 40, 86,173, 90,245,209,249, 31,127,252, 17,123,247,238, 5, 33,196,193, 16,195,203,248,249, - 93, 93, 44, 43, 91,196,209, 39, 59,133,132, 53,177, 2,107, 2, 48, 34, 64,202,230,136, 44,134,133,250,241,149,100,166,254,129, -244,238,141,179,157,215,156,219,216, 11,192, 1, 67, 35,201,201,201,105,246,149, 43, 87,108, 39, 77,154, 68,211,211,211, 73, 76, - 76, 12, 93,188,120,177,237,152, 49, 99,102, 3, 24,244, 57, 17, 31, 29, 29,189,176, 67,135, 14,109, 79,159, 62,109, 63,104,208, - 32,115, 0,232,208,161, 67, 92,116,116,244,194, 47, 73, 80,145, 72,196,190,124,249,210,106,229,202,149,125, 39, 79,158,236,227, -235,235,235,144,154,154, 26, 22, 21, 21,213,179, 52,139, 27,207,243, 94,155, 55,111, 6,203,230,148,115, 12,195, 64, 44, 22, 67, - 44, 22,195,204,204, 44, 37, 36, 36,132,175,104, 47, 19,103,197,197,164, 89, 10, 44,133,196,209,193,218,194,193,177, 89, 82, 82, -210,125, 0,134,154,151,253,218,181,107,247,252,206,211,183,220,168, 65,205,171,152,136, 24,161,169, 76,202,202,196, 66, 66, 40, -229,180, 58,141,255,250,157, 87,183,121,120,120,120, 27,106, 34, 38,132,212,168, 95,191,254,229,167,175, 62,224,233,139,119,145, -182, 86, 38,214,237, 90, 52,172,154,119,190,122,221,250,125, 11, 92,158,106,208,135, 33, 16,248,213,169, 83, 39, 50, 46, 57, 11, -118, 86,230, 31, 9,105, 75, 27,187, 86, 0,144,149,150,182,190, 92,185,114,158, 2,129,160,146,161,225,108,220,184,113,204,227, -192,112, 56,216, 90, 89,229, 30,254,104, 76, 79, 98, 76,204, 6,119,119,119, 79, 67, 44,173, 26,141, 70,114,236,216, 49, 60,126, -252, 24, 11,125,124,240, 99,197,138,176,181,181,197,229,203,151, 65, 41,133, 66,161, 64,106,106, 42, 14, 28, 56,128,150, 45, 91, - 66,163,209,200,139, 19, 74,121,227,171,138, 19, 66,209,209,209,127, 75,139,178, 48,183,247,178, 32, 4,150,176, 82,230,153, 51, -103,118,239,222,189,123,137,183,183, 55,126,248,225,135, 70,171, 87,175,190,229,235,235,219,168, 69,139, 22,184,114,229, 10,134, - 14, 29,122,107,237,218,181,141, 70,141, 26,133, 13, 27, 54,224,253,251,247, 91, 75,122,126,159, 62,125,230, 13, 31, 62,124,214, -186,117,235,144,215,130,239,218,181,107, 94,217,184,173, 87,175, 94, 73,121,215, 30,220, 18,121,167,178,171,123,131, 49,227,167, -136,199,142, 26, 56, 13, 64,223, 82, 42, 10,234,228,228,148,161,111,210, 36,249,192,221,187,232, 35, 18,153,236,121,250, 20, 39, - 85, 42, 52,238,214, 45, 17, 0,166, 79,159,142, 93,187,118, 1,128,125, 73, 92, 46, 46, 46, 35,142, 30, 61,154,159, 87,172,173, -173, 33, 22,139,115, 68,144, 64, 8,150, 99,113,105,131, 28, 33,225,217, 24,189,132,226,143,233, 4,149,156,144, 85,163,106,137, -249, 17, 13, 27, 54, 68,122,122, 58, 88,150,133,169,169, 41,172,172,172, 62, 18, 87,233,153,169, 88,190,117, 30,226,171, 94, 67, -235, 19, 96, 8, 11, 60, 91, 4,100,188, 45,118, 73,167, 78, 43, 87,174,116, 84,169, 84,184,122,245, 42, 46, 95,190,252, 27,165, - 52,179,176,222,161,148,198,178, 44,187,125,217,178,101, 67,157,156,156, 48,122,244,104,143,197,139, 23,119, 5, 62,229, 37,132, -160,118,237,218, 80,169, 84, 16, 10,133, 48, 51, 51,131, 70,171, 23,246, 26, 48,194,181,130,155,175,100,241,138,197,140,189,149, - 0, 2,198, 10,193, 31,148,230,107, 86,253,188,230,222,205, 27,195,136,137, 77, 55,154,157, 24,243,191, 94, 73,115, 28, 7,157, - 78,151,183,238,170,107,158, 40, 18, 8, 4, 91, 88,150, 77,181,177,177, 57,150,152,152,104,144,208,226,121,158,227, 56, 46, 83, -167,211,165,232,116,186, 44, 66,136,130,101, 89,112, 28, 7,142,251,103, 76,136, 45,109,249,181,255, 57,129, 85,120,185,147,240, -240,240, 84, 43, 43, 43,231,170, 85,171, 50, 26,141, 38,167,235,225,208, 33,110,203,182,109,167, 85, 42,213,120, 0,162,117,191, -255,190,193,217,197,165,249,128,129, 3,137, 78,167, 67,135, 14, 29,196,167, 78,157,178,126, 23, 23,151, 97, 64, 4,126,244,188, -193,131, 7, 99,245,234,213, 0,128,113,227,198,229,155,208,137, 1,157,254, 10,115,180,111,219,177,182, 89,132,252, 55, 51,109, - 3, 93,102,197,119,166,247,228,153,178,218, 96,196, 2, 72, 89,240, 90,157, 62, 56,190,219,163,119,193, 94,222,178,228,164, 74, -173,124,154, 98,203,197, 93,237,203, 34,176, 76, 76, 76,234,154,154,154,226,209,163, 71,201,181,107,215, 78,165,148,154, 47, 92, -184,208,198,196,196,164,238, 23,168,244, 80, 66, 72,147,134, 13, 27,142,101, 24,166, 21,207,243,151,226,226,226,214, 81, 74, 67, - 13,204,132,163, 1,204, 69,129,113, 38, 26,141, 6, 12,195,128, 82,138, 62,125,250, 96,250,244,233,222, 47, 94,188,192,149, 43, - 87,172, 90,181,106,117,143, 16,146, 10, 96, 24,165,180, 88, 43, 89, 82, 82, 18,254,248,227, 15,176, 44, 11, 11, 11, 11,152,154, -154, 66, 42,149,162, 81,163, 70,177, 75,151, 46,245, 58,124,248,112,118,106,124, 60,145,101,164,169,137,181,181, 20, 78,229,219, - 13,238,214, 61, 0, 57,179, 9, 13,130, 92, 46, 55, 17, 67,157,193,112, 42,102,249,188,245, 2, 19,145,136, 72, 69, 2, 72,248, -108,118,198,210,159,169,148, 80, 97,174,117,149, 26,202, 41,149, 74, 69,114, 49, 85, 11, 37,140,206,132,161, 95,165,159, 85, 44, - 22,139, 36,194, 44,101,177, 98,150, 33, 44,203,178,146,178,112,202,100, 50,145, 66,204,169,139,125, 15, 6, 44,195, 48,197,114, -246,242, 33,244,224,216,252, 46,189,252,176,233,245,122,212,173, 91, 23,251,142, 95,197,153,203,119,144,248,225, 57,198,143, 30, - 10,119,119,119,156, 63,127,254,139,226, 33, 58, 58,186, 72,145, 85, 98,215, 98,238,184,171,146,186, 5, 63,226,158, 99, 94,234, -172, 68, 66, 72,151,198,141, 27,143,217,179,103,143,166, 93,187,118,226, 62,125,250,192,215,215,183,209,144, 33, 67, 0, 0,173, - 90,181,194,234,213,171, 27, 13, 25, 50, 4,251,247,239,199,145, 35, 71,212,205,154, 53,155, 74, 8,137,162,148,158, 41,166,194, -233,180,113,227,198,194,150, 65,232,245,122,232,116, 58, 71,189, 94,239,152, 91, 22, 97,205,154,181,137, 23,206,159,194,212, 25, -243, 97,103,235, 80,195,192,238, 29, 50,120,202,148,196, 29, 43, 86, 96,197,254,253,152, 82,169,146,201,174,192, 64, 92, 80,169, -112,224,202,149,196,220,231,148, 58,190, 41, 43, 43, 75,121,230,204, 25,179, 3, 7, 14,192,194,194, 2, 85,170, 84,201, 23, 67, - 12, 43, 3, 43,178, 68, 85,159,186, 0, 30, 0, 0, 42, 57, 33,203,179, 50,110, 17,130, 84,202, 64, 93, 66,126,132,131,131, 3, - 4, 2, 1,158,190,126, 0,211, 84, 51,212,242,169, 7,161, 80,136,140,172, 52,140, 89,209, 19,238, 63, 39,160,154, 39,160,140, - 3,238, 79,130, 46,246, 14, 86,102, 71, 96,125, 49,148, 53,203,151, 47, 15,181, 90,141,205,155, 55,211,220, 50,170,184,202,126, -230,175,191,254, 58,104,206,156, 57,108,157, 58,117, 0,160, 70, 81, 2, 43,183,204,128,179,179,115,190,240,235, 51,104,148,235, -200, 73,163,100,221,218, 52,135, 64, 96,131,212, 44, 29,146, 50,116,176,180, 81, 96,234,164, 94,210, 75,181,157,235,108, 92,251, -231, 9, 66, 72, 29, 90,208,100,248, 63, 8,173, 86, 11,158,231, 79, 51, 12, 51,139,101,217,159, 5, 2, 65,135,220, 83, 25, 12, -195,196,179, 44, 75,202, 82, 86,242, 60, 63, 64,175,215,175,212,104, 52,102,121, 22, 49,142,227,160,209,252,223, 79,220,255,210, - 53,142,255,177, 22,172, 79,186,241,116,186,170,234, 13, 27,144,117,233, 18,196, 23, 46,224,128,147, 83,166, 74,165,154, 76, 41, -141,200, 45,236,126,216,190, 99,199,237,206,119,239,154,105,130,130,224,250,226, 5,132, 22, 22, 53,202, 26,128,109,219,182, 33, - 61, 61, 29,105,105,105, 0,128,223,126,251, 13,233,233,233,121, 3,249, 74,127, 1, 17, 26, 57,216, 85, 66, 44,130,193, 11, 24, - 69, 88,213,236,250, 10,149,105,180,115,184,125, 86, 26,227,140,160, 15,245,228,202, 36, 77,125,194,106,160, 74,204,134,115,195, - 42, 16, 64,208,168, 44, 97,204, 51,157, 10, 4,130,228, 55,111,222,116,242,240,240, 56, 9,192,230, 75,251,251, 41,165,111, 1, -140,255,156,123, 89,150,157,251,254,253,123,187,173, 91,183,142, 93,184,112, 33, 45, 40,176,242,254,231, 13,138, 52, 55, 55,135, - 80, 40,180,191,115,231,142,125,189,122,245,214,231, 22,100,197,137, 73,216,219,219, 67, 40, 20,194,220,220, 28, 89,233, 41,242, - 63, 22,207,106,102, 98,105,111, 53,101,202, 20,102,240,224,193,239,214,175, 95, 95,222,161,106, 85,207,231,207,159,127,232,220, -179,215,227, 51,103,206, 0,192, 38, 3,131,254,236,197,139, 23, 98,119,183,138, 2, 94,167,228,229, 34, 64,250,108, 13, 47, 54, -117,128,148,101, 33, 32,160, 50, 19,185,221,219,176,176,104, 0,241, 6,198,227,211,224,224, 96,161,139,147,189, 32, 35, 75,149, - 42, 23,240,226,247, 15, 31,188,170, 92,167,174, 23, 0,168, 30,222, 57, 42,169,234, 99,250, 62, 62,193,204,213,213, 53,204, 16, - 78,189, 94,255, 44, 52, 52, 84,228,236,236, 44, 12, 14,126,251,167,181,153,169,147,149,189,125, 51, 0,208, 36, 39,220, 32, 74, - 85,180, 80, 40,116,142,142,141, 77,208,235,245,209,134,134,243,205,155, 55, 34, 23, 39,123,193,201,211,103,246, 57,200, 77, 28, - 45,100, 18,115, 41, 3, 34,165,124,154, 88,175,143,149,153,200,157,222,135,135, 39, 82, 74, 35,139,227,249,131, 31, 59, 32, 39, - 15, 76,217, 82,240,248,173, 91,183,112,245,209,123,152,179, 28,132,186, 44,220, 59,114, 0,221,199, 77, 44,245, 91, 10,252,201, - 19, 80, 47,219,235, 93,121,240, 71,194, 41,167, 11,208,177, 72, 33, 84,170,192, 42, 13, 27,189,174, 21, 18, 89,136,142, 46,185, -112,237,223,191,255,252,221,187,119,231, 79,226,120,245,234, 21, 90,180,104, 1, 0,152, 63,127, 62,218,182,109,139,122,245,234, -225,213,171, 87,112,119,119,199,149, 43, 87, 36, 44,203, 74, 6, 12, 24,176, 24,192,153,210,130,180,105,211, 38, 12, 29, 58,180, -168, 1,211,239, 0,168,136,165,103,230,244,165, 59,109,146,147, 18, 17,159, 16,251,180, 12, 45,114, 12,158, 50, 37,113,163, 70, -131, 61,247,239, 99,160, 92,110,178,227,237, 91,116,168, 87, 15,213, 90,180, 72, 52,164,172, 43,202,138, 99,109,109, 13,145, 72, - 4, 86,232, 4,129,216, 15,140, 72,132,154,141,253,176, 98,178, 60,123,208, 55, 88, 75, 8, 82, 37, 98, 60, 17,153, 32,182, 56, - 78,189, 94, 15,161, 80,136, 3,231,118,224,185,197,159, 64, 6,112,251, 73, 23, 76, 28, 58, 19, 63,173, 30, 1,143,197, 9, 48, -247, 0,226,239, 1, 15, 38, 49,124, 90, 40, 63, 92,157,128,179,148,210,164, 98, 4,155,151, 76, 38, 67, 86, 86, 22,130,131,131, - 63, 80, 74,211, 75,248, 30,226, 90,181,106, 21,207,178,172,163,179,179, 51, 0,148, 47,174, 65,206,243,124,254, 56,171, 93,123, - 14,218,212,104,226, 42,109,221,200, 27, 59, 79, 46,194,247,189,214, 66,200, 18,112,156, 22, 43, 87,119, 4,167,206, 68,175,206, - 35, 72,211, 86,238,126,151, 78,106,134, 3,216,252,191, 92, 73,107, 52,154,227, 90,173,118, 34, 33, 36,131,101,217,241, 66,161, -208,158, 97, 24,119,142,227, 6, 18, 66, 94,136, 68,162,138,142,142,142,201, 49, 49, 49,105,165,113, 37, 37, 37, 81, 0,219,114, - 55, 35,254,102, 48,185, 25,184, 41, 33,132, 18, 66,154,230,171, 92, 74,121,125,114, 50,168, 58,167,241, 35, 20, 10, 41,128,130, - 51,148, 76, 44, 44, 44,136,208,197, 5, 68,146,211,224,166,192, 87,179, 49,234,116,134,185,134,225, 57,176, 32, 90,208, 2, 2, - 62, 75, 74,176,200,166, 37,198,139,103, 35, 86,108, 81,240,139, 6,244, 20, 28,120,182,140,193,161,153,153,153,208,235,245,150, -110,110,110,167,245,122,189,101, 94, 23,192,255,161,217, 56,132,101, 89,140, 29, 59, 22,200,237, 74,211,104, 52,136,141,141,133, - 90,173,134, 70,163,193,251,247,239,145,150,150, 6,141, 70,131,151, 47, 95,162,114,229,202, 96, 89,214,177,148,214, 13,108,109, -109,225,232,232, 8,117, 86,186,252,240,166,213, 29,150,205,159,110,211,207,141, 50, 91,215,254,202,187,184,184, 36,249,248,248, - 56, 72, 36, 18,109,173, 90,181,212, 39, 79,158,188, 0,160,123, 25,252, 96,157, 89,176, 96, 65,189,122,245,234, 85,180, 80,200, -181, 18, 49, 11,137, 62,139, 74,212, 73, 84,160, 76,164, 21, 92, 42,106, 33, 87,212,237,211,167,143,216,144, 74, 49,143,243,167, -159,126,170,226,229,229,101, 99, 97, 38, 79, 23, 48,136, 18,113, 92, 84,202,163, 59, 23, 1, 64,100, 99,167,132, 92, 81, 55,119, - 12,157,193,156, 83,167, 78,245,113,118,118,182,102, 24,146,170,215,106, 63,228, 23,248, 42,101, 28, 43,145,102, 65, 34,109, 60, -108,216, 48, 97, 25, 57,189,170, 87,175,110,109,105,110,150, 42,100, 72,184,136,211, 71,200, 40, 23, 41,214,105, 19, 36,118,246, -153,144, 43, 26,246,235,215, 79, 80, 28,103,158,245,170,176,101, 72, 32, 16, 32, 42, 42, 10,217,209,207, 33,138, 10,130,159, 66, -136,250, 14, 54,144,203,229,165, 55, 86, 70,190, 34, 24,249,138, 4,190,167, 36,240, 61, 37, 5,247, 63,177, 54, 45, 72,195, 71, -215, 21,131,194,227,179, 62, 17, 87,133,238,205, 21, 89, 37,126, 79,127,254,249,231,140,230,205,155,199,183,109,219, 86,115,250, -244,105, 16, 66,112,229,202, 21, 68, 69, 69,161,109,219,182,160,148,226,222,189, 28,227,236,211,167, 79,209,170, 85, 43, 77,147, - 38, 77,162,254,252,243,207,185,134, 36,206,208,161, 67,161,211,233,144,153,153,137,228,228,100,156, 58,117, 10,126,126,126,212, -196,196,164, 59, 91,174,205,162, 94,195,103, 52,240,173, 94, 3,235,215,174,208,136, 5,194,165,101,236,246,192,160,201,147, 19, -211,106,214, 76,222,149,149,149, 61,216,204,204,196, 45, 34,194,234,209,249,243, 54, 90,173,214, 32,142, 60, 43,142,139,139, 75, -190,184, 18,137, 68, 16,136,109,193,202,171, 65,108,221, 22, 38, 14,221,113,245,137, 68,109, 46,199, 81, 83, 5,206,201, 45,240, -162, 4, 63, 88, 68,175,215, 67, 36, 18,225,218,227,179,240,155, 9,248,205, 4,162,235, 30, 71,223,137,237, 96, 51,254, 13,204, - 61,128,216,155, 64,234, 10, 63,232,222,155,167,171, 19,112,160, 56,113, 5, 0,106,181, 90,197,113, 28, 8, 33, 16,137, 68,226, - 2,167,110, 95,187,118, 13,151, 47, 95, 6,128,224,188,131, 41, 41, 41,148, 97, 24,200,229,114, 0,144,151,212, 77,150, 55, 30, -236,218,189, 27,214,125,123,116, 36,119,158, 93, 68, 67,191,126, 72,202,212, 34, 46, 77,139,212,108,192,167,206, 44,248,182, 58, -138,231,239, 51, 80,163,186, 47,203,138,229,131,240, 63, 14,141, 70, 51, 82,173, 86, 39,168, 84,170, 12,149, 74,149,152,157,157, - 61, 76,169, 84,118,210,235,245,183, 4, 2,129,167, 84, 42,125,108, 98, 98,114,188,124,249,242, 12, 0, 56, 59, 59, 51, 78, 78, - 78, 59,254, 23,223,181, 40, 45,242, 63, 47,176, 0, 92, 43, 60,176, 76, 47,145,188,212,143, 25, 3,139, 19, 39, 32, 12, 14,198, -144, 65,131,204, 76, 76, 76,214, 18, 66,106, 17, 66, 26, 42, 20,138,245,243,230,205, 51,181, 89,178, 4, 78, 55,110, 32,236,212, - 41,232,132,194,135,159, 19, 8,165, 82, 9,129, 64,144,111,121,145,203,229,121,253,193,165, 10, 24, 78,143,187, 81,113, 65, 16, -163, 34,120,208,204,115,233, 77,238,247, 11,153,101,119, 42,189,178,251,219, 44,145,251, 2,219,250,118,107, 43, 52,186,159, 69, - 4,153, 98, 11, 41,194,195, 35,192,129,191, 91,150,240,169, 84,170,180,172,172, 44,212,168, 81,195,250,209,163, 71,110,126,126, -126, 86,185,199, 31,124, 97,102,242,119,118,118, 62,232,226,226, 18,234,236,236,124,144, 16,226, 95,134,219,183,222,188,121, 19, - 44,203, 98,222,188,121,200,200,200,128, 86,171, 69, 82, 82, 18,194,195,195,161,209,104, 16, 25, 25,137,215,175, 95, 67,163,209, - 32, 44, 44, 12,106,181,218, 32, 97,107,106,106,138,212,164,120,249,254, 63,126,237,176,104,254,108, 89,218,219,199,136,140,142, - 3,207, 41,163,151, 47, 95,254,218,221,221,253,178, 86,171, 45,199,243,124, 83, 74,233, 70, 67,133,102,174,163,210, 91,158,158, -158,245,150, 47, 95,222,116,246,210, 45, 18, 83, 54,131,138, 77, 37,188,216, 84, 76,197,158,245, 49,124,238, 58,233,210,197, 11, -159, 62,123,246, 44,217, 16,167,155,121,156,245,235,215,247,137,141,141,109,228,231,231, 87,195,161,138,135, 84,226,236,148, 40, -118,170,144, 68,149,217,151,152,242,149, 58,173, 93,187,246,209,189,123,247,226,202,194,233,236,236, 92,237,247,223,127,175, 83, -190,124,249, 58, 82,115,115, 89,102,106,234, 38,117,106,242, 22,161,141,131,140,177,182,233,181,107,215,174,187, 23, 46, 92, 72, - 44, 11,167,183,183,183,239,226,197,139,107,213,172, 89,179,150,163, 71, 85,169,204,217, 37, 65,228, 92, 33, 94, 86,189,182,148, -169,224,218,115,245,234,213,247, 31, 62,124,152, 96, 8,167, 64, 32,224, 24,134,129, 80, 40,132, 92, 46,199,245,235,215,209,175, -123, 59, 56,216,153,193,163,106, 85, 52, 27, 57, 14,167, 79,159,134, 88, 44, 6,195, 48, 96, 24,230,139, 29, 90, 26, 34,132, 74, - 67,113,226,171, 52,110, 74,233,153,107,215,174,253, 50,120,240, 96,113,251,246,237,113,255,254,125, 12, 29, 58,244,214,145, 35, - 71, 0, 0,247,239,223,199,196,137, 19,111, 93,190,124, 25,163, 70,141, 66,139, 22, 45,196, 55,111,222, 92,111,136,243, 81,189, - 94,143,109,219,182, 65,175,215, 67,161, 80,192,202,202, 10, 29, 59,118, 68, 64, 64,192,168,237,219,183, 7,177, 66,225,183, 29, - 58,247,192,233, 19, 71,240,250,101,192,168, 29,139, 7,148,217,153, 47,195, 48,104, 63,104, 80, 98,162,143, 79,242,142,244,244, -236, 97,150,150, 38,158,177,177, 86, 87, 15, 30,180, 49, 32,255, 16,142,227,242, 69, 85,158,216,200,159, 89, 38,182,133, 64,238, - 11,129,105, 29, 60,127, 43,210, 9,235,210, 39,162,218,244, 85, 73, 78, 70, 9, 33,224,121, 30, 66,161, 16, 53,171, 52,196,219, -221, 57,199,171, 12, 0,106,237, 76,130, 93,131,156,110,193, 15,203,237,240,227,176,249, 16,178, 34, 93,105,110,115,120,158,127, -153,148,148, 4,129, 64, 0, 15, 15, 15, 7, 66, 72,158, 85,106,101,243,230,205, 23, 12, 28, 56,112, 25,128, 31,114,159, 95,161, - 87,175, 94, 78, 90,173, 22, 79,159, 62, 5,128,199, 37,164,125,254,172,193,228,244, 48, 73, 37,167,106,240,243, 26, 9, 75,203, -234,136, 74,214, 32, 58, 89,131, 45,127,116,197,227,155, 63,227,209,133,129,248, 16, 27, 11,153, 67, 55,112,122,181,239,255,122, - 37,157,144, 3,101, 66, 66,130, 94,171,213, 42, 53, 26,205, 91,173, 86,251,144, 82,234, 42, 20, 10, 47, 74,165, 82,115, 19, 19, -147, 38,114,185,124,187,135,135,135, 64, 38,147,109,151, 72, 36, 69, 10, 75,115,115,115, 98,110,110,206,154,155,155, 11,138,218, -242,174,115,117,117,165, 94, 94, 94,212,215,215,151,250,248,248,208,170, 85,171,210,138, 21, 43,166, 59, 58, 58,142,180,182,182, -102,255,198,215,189,246,111, 26,228, 94,216, 77, 3, 0,192,205,202,202, 84,167,211, 70, 94,188,120, 81,203, 48, 12, 76, 76, 76, - 48,120,232, 80,230,143,223,127,111,220,207,223,255,202,136,214,173,207, 94,185,124,185,102,189,122,245, 64, 41, 5,195, 48,216, -191,127,191, 82,165, 82, 38,149, 47, 95,222,194,144,194,162,224,135,147,158,158,158, 47,176,210,210,210, 96,111,111,111,112, 23, - 97, 86, 58, 46, 93, 62,247, 56,133,114,223,135,183,127,187, 74,187, 52,182,107,189, 84,158, 19,164,113, 58,164, 41, 41, 50, 84, - 16,220,103,172,234, 13,118,239,166,125,223,170,222,235,235, 65,119,146, 84,156,170, 76,179, 31,226,227,227,103,246,234,213, 43, -201,209,209,145,152,153,153,193,217,217,153,233,210,165, 75, 98, 68, 68,196,130,207,141,120, 27, 27,155,190,205,155, 55, 63, 25, - 21, 21,213,243,250,245,235, 21,111,220,184,209,179,121,243,230, 39,109,108,108,250, 26, 72,113, 96,198,140, 25, 89, 98,177, 24, -245,235,215, 71, 70, 70, 6, 52, 26, 77,169, 91,169, 22, 65,158,135, 84, 42,197,193, 45,171,219, 44,154, 63, 91,150,244,234, 46, -158,223,186,136,115,161,234,236,185, 75,215,220,147, 74,165,159,245,190,238,118,242,106,213,156, 76, 95, 77, 28,218, 39,122,250, -180,105,166, 47, 94,188,144,141,159,240, 3,194,226, 82,169,184,253, 74, 22, 77,103, 51,207,178,108, 72,135,111, 90,224,151,197, -115,154, 2, 24, 85,106, 69,109, 39,175,230,235,100, 26, 56,101, 68,191,144, 9, 19, 38,200,150, 46, 93,170,170, 91,183,174, 46, - 38, 38,198, 92, 97, 99, 87, 91,104,109,227, 31, 26, 27,103, 81,187, 78,157,183, 19, 38, 76, 80,149,149,115,206,156, 57, 38,183, -111,223, 22,181,108,217,146,198,199,199, 91,138,100,178, 6, 66, 83,243,166,209,137,137, 86,173, 90,181,122, 59,100,200, 16,238, -115, 56,223,188,121, 35,170, 93,187, 54,141,137,137,177, 52,177,182,173, 47,178,182,109,242, 62, 38,214,178, 70,205,154,193, 19, - 39, 78,212,149,196,217,107,221, 95,226, 68,161, 80,196,248,249,249, 97,238,220,185, 88,184,112, 33,122,247,238,141,208,176, 80, - 52, 29, 50, 2,149, 7,143,194,169,123, 15, 16, 29, 29,141,153, 51,103,194,221,221, 29, 66,161, 48,248,107, 20, 26,134,136,172, -226,186, 15,189, 43,147,107, 37,141,179, 42,141,187,103,207,158, 99,242, 92, 49, 12, 27, 54,236,214,218,181,107, 27, 13, 27, 54, - 12, 0, 80,191,126,125,252,252,243,207,141,102,205,154,117,107,209,162, 69,104,217,178, 37, 92, 93, 93, 75,245, 39,198,113, 28, -244,122, 61,250,245,235, 7,189, 94,143,132,132, 4,188,121,243, 6,155, 54,109, 2,165, 84, 10, 0,142, 78, 46,181,197, 98, 49, -158, 61,121,152, 61,123, 88,189, 63,203,208,136, 34, 5,191,173,204,204, 76,244, 28, 61, 58, 49,178, 74,149,228, 13,137,137,217, -195, 45, 45, 77, 42,125,248, 96,101,170,209, 56,151, 52,230,180,160, 24, 42,232,150,160,240,150, 55, 65,197, 80,228,113,142,234, - 55, 17,210,115,141,243, 69,150,162, 2,192,235,129,199,211,132, 24,219,109, 46,252,170,213,128,129, 51,214,238,221,191,127, 31, - 98,177, 24, 19, 39, 78, 36, 44,203,174, 38,132, 16, 74,105, 10,165,116, 46,165,116, 42,165, 84, 69, 8, 33, 18,137,100,227,208, -161, 67,161, 86,171,113,235,214, 45, 0,184, 92,156, 48,165,148,230,191,123,102, 50, 1,199,139,113,251,201, 57, 92,184,113, 8, -161, 81, 9,248, 16,175, 2, 4,230, 80,101, 69, 66,171,140,130, 38,245, 9,210,213, 38,255,186, 46,167,228,228,100,158,227, 56, - 13,199,113, 90,158,231, 43, 2, 48, 19, 8, 4, 16,137, 68,144,201,100, 3, 77, 76, 76,158,200,100,178,129, 98,177,184,200,251, -211,210,210,104, 90, 90, 26,151,150,150,166, 47,106,203,187, 46,207,247,150, 76, 38,131, 68, 34,129, 72, 36,138, 21, 8, 4, 3, - 9, 33, 7,240, 55,251,167, 42,168, 69,254,215, 81,148,163, 81, 80, 51, 89,159, 67,235,255, 48,239,213,111, 64,150,159,159,159, -165,179,179, 51, 8, 33,232,218,173, 27,105,126,253,186,169,208,201, 9,214,181,106,229,123,207,189,116,241, 34,206,157, 59,151, -117,250,216, 81,231,161,195,135,119, 66, 65,103,207,159, 70,158,192,205,205, 45,255,185, 49, 49, 49,121, 9, 8, 0, 72, 79, 79, -135,173,173, 45, 98, 98, 98, 96,160, 97,100,215,244,105,247,166,197,215,155, 89,185,158,169,144,156,205,138, 5, 71, 41,132,132, - 3,148, 20, 58, 14, 80,235, 40,106, 87, 98,173, 46, 40,245,150,167,238, 31,121, 15, 96, 87, 25, 45, 88, 87, 9, 33, 35,121,158, - 63, 4,128,185,126,253, 58, 31, 24, 24, 56,198,208, 1,233, 69,193,196,196,228,167, 43, 87,174, 88,253,244,211, 79, 41,167, 78, -157, 74,235,216,177,163,249,166, 77,155,172, 90,180,104,241, 19,128,125,165,246, 89, 82,170, 36,132,236,140,136,136, 24, 83,167, - 78, 29, 36, 39, 39, 67,171,213,226,241,227,199,112,119,119,199,163, 71,143,224,225,225,129,135, 15, 31,162,106,213,170,121, 83, -166,193,243,124,169,221,184,209, 17, 31, 20, 38,234, 20,179,232,251,103,240,250,249, 35,156, 9, 81,103, 47,223,182,255, 76,181, - 26,181,179,202, 90,128, 3, 64, 85,123,185,143,179,157,245,133,165,243,231,216,133, 93,221,143, 35,219,214,241,215,206,158,245, - 22,155, 98,100,179,190, 19,122,104,116, 40, 15, 64,210,160, 94, 29,250,141,197, 27, 94, 86, 17,177,151, 95,150,236,201,188,170, -189,220,199,201,214,250,252,242,165, 11, 77,223,157,221,142, 3, 27, 87,210,195,187,247,250,169,128,122,213,170, 85,107, 79, 8, -113, 4,160,207, 77, 35,131,150,160, 41,138,243,242,169, 83, 53, 85, 64, 61, 55, 55,183,246, 66,161,176, 98,174,149, 47,234,107, -112, 86,175, 94,189,125,110, 11,159,230,142,185, 42,211, 82, 57,195,134, 13, 91, 49,101,202,148,137, 58,157,206,186,128, 5,146, -221,180,105,147,128,227, 56,134, 82,170,101, 24, 70,123,254,252,121, 78,175,215, 71,171, 84,170,209, 95, 90, 96,244,232,209, 3, -247,238,221,155,143, 18, 6, 47, 23,170, 16, 4, 86, 86, 86,250,210,132,151,161,220,215,175, 95, 95,248,237,183,223, 78,223,183, -111,223,155,181,107,215,118, 30, 53,106, 20,246,239,223,143, 42, 85,170,224,217,179,103,152, 57,115, 38, 0, 52,154, 53,107,214, -137,173, 91,183,186,134,133,133,173, 48,196,106,171,215,235,177,119,239, 94,116,237,218, 21,182,182,182,112,114,114, 2, 33,228, -234,240,225,195,127, 7, 0,150,176, 34, 0, 80,171,212,106, 79,207, 58, 6, 91,108, 93, 93, 93,243,203,186,216,216,216,252,153, -127,109,190,253, 54,113,203,210,165,248, 83,169,196,112, 75, 75,147, 72, 23, 23,199, 19,239,222,141, 32,132,108, 42,206, 34,156, -103,197, 41, 77, 92,149,193,162,140,188,177, 77,246,246,246,152, 53,118, 9,150,252, 49, 11,111,113, 13, 85,250, 3, 47, 87, 1, - 93, 93,199,161,142, 95,125, 56, 57, 57, 25,154, 69,174,126,255,253,247, 15, 3, 3, 3,235, 84,175, 94, 29, 11, 22, 44,232, 50, -111,222,188, 11,132,144, 17,121,179,152, 9, 33,149, 88,150, 93,125,241,226,197,214,102,102,102,120,245,234, 21, 14, 30, 60,248, - 22,121, 35,244,139, 8,103, 94,165, 47, 20, 10, 81,190,156,135,234,117, 88,166, 73,124,212,109,220,186,121, 12, 85,252,126,128, -204,161, 19,172, 60, 23, 65, 27,180, 6,154,164, 11,176, 42,215, 17,145, 97,239,192, 10, 36, 1,255, 54,145,149,146,146, 66,173, -173,173,121,142,227,206,115, 28, 55,147,227,184, 69, 2,129, 32,111,252,173,175, 94,175,255,226, 25,129,121,190,183,242,120, 41, -165,114,129, 64,144,206,178,172,146, 16,242,183, 78, 55, 44,168, 69,254, 53, 22,172,143, 50, 52, 79,132, 85, 61, 60, 56, 17,131, -237, 93, 59,117,202,126,250,244,105,126, 43, 79,245,224, 1,178,206,157, 3,199,113,160,148,226,198,245,235, 24, 56, 96, 64,166, -144, 37, 91, 42, 85,170, 72, 9,253,203,247, 10, 33,228, 19, 63, 86, 34,145,168, 87,175, 94,189,242, 11,157,136,136, 8,200,229, -114,136,197, 98,240, 60, 15,189, 94, 15,150,101, 97,110,110, 14,189, 94,175, 41,226, 99,107, 85, 40, 49,116, 92,114, 86,207,173, - 29,250,199, 56,101,106,233, 72,139, 74,168, 32,146,229,127,148, 14,102, 4,157,253,132,176, 17,196,211,203, 43, 90, 71,243,234, -164,158,133,215,254, 42, 42,156,133,206,123, 84,175, 94,253,247,129, 3, 7, 50, 0,208,170, 85, 43,166,122,245,234,191, 17, 66, - 60, 74,184,167, 68, 78,169, 84, 42, 1,128,147, 39, 79, 38,191,121,243,166,221,201,147, 39,147, 11, 30, 55,144,115,211,178,101, -203, 96, 98, 98, 2,189, 94, 15,141, 70,147, 63,254,170,224,175, 86,171,133,141,141, 13, 78,159, 62, 13,142,227, 78,151, 22, 78, - 47,223,234,153,105, 2,139,184, 29, 39, 46,227,108,152, 54,179,172,226,170, 32,103, 21, 71, 69, 85, 7, 27,235,139,203, 23, 47, -180, 77,121,251, 24,145,145,145,244,252,185,211,119,149,148, 70,165,166,211,217, 41,153,180,106,182,154,202,234,186, 34,252,226, -198,169,116, 86, 19,232, 64, 62,237, 26, 46,200,233,227,168,168,234,108,107,125,126,229,138,165,166,169,193,143, 16, 19, 27,139, - 51,167, 79, 62, 85, 82, 26, 69, 41, 61, 76, 41, 29,194,243,124, 53,158,231,171, 81, 74,135, 20, 39, 90,202,202,169,213,106,171, -105,181,218,175,202, 89,214,112, 22,152, 65,136,249,243,231, 7, 71, 70, 70,142,138,139,139,235,145,183, 37, 39, 39,119,205,200, -200,232,152,157,157,221, 94,185,170,162,121, 86, 86,150, 93, 70, 70,134,163, 82,169,172, 77, 41,125,108,104,254, 44,140,130, 21, -108,116,116,244,188,232,232,104, 82, 98,254, 28,249,138,172, 95,241,253,238,131, 7, 15,218,127, 9,119,225,112, 38, 36, 36, 28, -218,187,119,111,141,202,149, 43,187, 14, 25, 50, 4, 27, 54,108,192,218,181,107,213, 0,176,117,235, 86,117, 1,203, 85,185,208, -208,208, 58, 69,117, 15, 22,228,100, 24,102, 87,155, 54,109,232,141, 27, 55,208,181,107,215,124, 7,160,155, 55,111,134, 94,175, - 79,111,217,178, 37, 15, 0, 74, 85,118, 58,229, 41, 52,218,162,251,217,139,138, 79,177, 88,252, 77, 65,127,127,121, 78,148,197, - 98, 49, 40,165,168,218,168, 81, 98,170,159, 95,242,182,180,180,236,121,213,170,153,141,240,244, 28,226, 5, 12, 40,138,147, 16, -242,145, 21,167,240,246, 57,223,102, 30,242, 56, 92, 92, 92,176,112,242, 74,184, 60,232,129,171,141,173, 81, 35,105, 8,218, 54, -238,140,170, 85,171, 26,204, 73, 41,165,241,241,241,163,230,204,153,195,139,197, 98,124,247,221,119, 56,114,228, 72,171,142, 29, - 59,134, 57, 59, 59,135,249,248,248,196,142, 25, 51, 38, 36, 49, 49,177, 99,253,250,245,145,156,156,140,209,163, 71,107,147,147, -147,123, 21, 28,199, 89, 56,156,121, 78, 49, 69, 34, 17,186,116,104,149,252,199,111, 43,249,150, 77,199,192, 68,102, 6,157,176, - 28,146, 51,117, 72,201,162,208, 72,234, 65, 44,146,160,173,191, 15,238,157,223,145,205,105,178,118,126,110,158,255,220,248,252, -255,193, 73, 41,165, 28,199,169,244,122,253, 86,158,231,103,231,245, 36,229,249,179, 42,108, 12, 45,107, 56,121,158,207,119,221, -144,203,173, 16, 8, 4,199, 89,150,245,201,155, 72,245,119,188,251,191, 13, 31,185,105,200,251, 37,132,231, 56,142, 71,165,202, -149, 76,195, 66,195,215,245,238,221,107, 88,251,246, 29, 76, 58,116,232, 32,245, 9,202,233,162, 56,121,242, 36,142, 28, 57,146, -125,225,194,133,116,137,144,221, 90,174,124, 57,123,142,227, 65, 72,201, 22, 18, 83, 83,211, 9, 51,102,204,144,165,165,165, 97, -237,218,181,124,141, 26, 53, 24,185, 92, 14,173, 86,139,173, 91,183,234,124,124,124,132, 12,195, 32, 45, 45, 13, 12,195,188, 54, - 80,241, 62, 39,132,180,253,189,121,247, 35,117,198, 14,181,246,110,222,192,178, 89, 57,103,232,106, 81, 68, 71,132,226,205,229, - 11, 41, 47,207,175, 78,130, 42,174, 59,165, 52,176,172,145,228,228,228, 52,247,194,133, 11,118,227,198,141,163, 42,149,138,132, -135,135,211,197,139, 23,219,125,247,221,119,115, 81,138, 47,156,146,190,163,212,212, 84, 16, 66,248,220,204,154, 87,184, 24,108, -126,165,148, 6, 16, 66,142,119,235,214,173, 75,203,150, 45, 17, 20, 20,148,223, 21, 88, 80, 96,229,205, 38, 92,178,100, 73, 42, -240,151,131,192,226, 32,145, 72,176,249,208,185,179,209,145, 31, 76, 42, 85,114, 83,153, 91, 90,242,159, 99,185, 2, 0, 49,195, -204,251,101,225, 28,187,196, 87,247, 72,192,221, 43,252,193,231,113,241,122,142, 22,237,161, 63, 35,154,230,170,254,146, 91, 47, - 12, 59,111,217,146,133,230,121,221,151,251,158,196,164, 19,142,142,251,178,166,198,255, 8,231,255, 1,114,102,248, 69, 19, 39, - 39, 39,154,215,133, 87,148,192, 42, 13, 69,117, 15,126, 46,247,251,247,239, 23,215,170, 85,107, 74,112,112,240, 65,111,111,239, - 81, 0,202,171,213,234,212, 89,179,102, 45,223,186,117,235, 48, 67, 44, 87, 0,176,127,255,254,213, 67,135, 14, 61,215,169, 83, -167,169, 60,207, 87, 47, 80, 33,189,183,179,179,203,247,200,149, 16, 23, 59,109,228,176,126,211, 50, 51, 83, 12,246, 83,167, 80, - 40, 70,204,154, 53, 75,154,149,149,133,245,235,215,243, 62, 62, 62, 76, 94, 99,104,247,238,221,122, 15, 15, 15, 65,175, 49, 99, - 18, 87,197,198,226,231,155, 55,179,166,249,250,214,216,246,230, 77,237,162, 44,236,121, 21,102, 81,150,171,188,225, 21,159, 81, -145,127, 36,176,242, 68,214,220,137, 75, 17, 21, 21, 5,145, 72, 4,119,119,119, 20,215,221, 84, 66,185,244,140, 16,210, 47, 60, - 60,124,231,250,245,235,197,245,235,215, 71,221,186,117, 33, 20, 10, 43,228,133, 87,163,209,224,249,243,231,152, 49, 99, 6,125, -240,224,193,119, 37, 45, 80,207,113, 92,188,135,135, 71,126,247, 17, 33, 36, 41, 93, 77,204, 15,120,213, 83, 12, 25,121,144,220, -122,120, 7,209, 90, 30,106, 29,143, 74,149,107,162, 89,187, 85, 56,113,246, 5, 23, 29, 22, 24,168, 83,166,108,249, 55, 86,220, -201,201,201,212,206,206, 78,159,107,148,104,152, 55,164, 38,111,102,232,151, 90,176,114, 27,236, 33, 60,207,199, 49, 12,211, 48, -215,247,150,153, 64, 32,184,204, 48,140, 13, 0,253,223,241, 94,133,181,200,191,166,139,240, 35,245,202, 50,183, 55,108,252,227, -155,253,123,247, 57,176, 44,227,240, 46, 36,228, 97,231,238, 61,163, 46, 94,188,104, 37, 50, 55,175, 11,128,215,140, 26,117, 87, -171, 86, 38,159, 58,126,188, 66,165, 74, 21,253,114, 23,123,166, 60,203,220, 46,233,129,153,153,153, 89, 55,111,222,204,158, 62, -125, 58,137,136,136,216, 99,111,111,223,231,236,217,179,138,238,221,187, 43,131,130,130, 14, 59, 56, 56,116,105,222,188,185,233, -148, 41, 83,212,153,153,153,235,202,144, 48,129,132, 16,175, 7,115, 86,124,251, 96,217, 31,173, 33, 96, 27, 66, 45, 4,120,221, -109,104, 51, 46, 2,216, 67, 41,253,172, 76, 33,151,203,253,228,114, 57,158, 62,125,154, 82,175, 94, 61,141, 74,165, 18, 45, 90, -180,200, 90, 46,151,251,125, 65, 70,162, 41, 41, 41,224,121, 94, 0,128,228,254,130, 47,251, 90, 57,125, 59,119,238,124,252,192, -129, 3,109, 58,116,232, 0, 87, 87, 87,232,116, 58,120,120,120, 64,163,209,192,221,221, 29,106,181, 26,243,231,207, 71, 90, 90, -218, 36, 67, 22, 17,150, 74,165, 16,139,197,168,234,229,155, 45,149, 74,241,185,226, 10, 0,228, 66,198,245,245,169,109,136, 79, - 74,228, 15, 60,139,139,203,214,114,109,131,227,179, 94, 22,190, 46,155, 67, 86,243, 33,227,163, 0, 64,205, 35,179, 68, 78, 49, - 92, 95,159,218,132,184,248, 68,236,127, 18,147,154,165,229,219,189, 46,130,179, 76,225,252, 31,225,236,181, 46, 8,205,190, 55, -252,218,131, 35,191,172,128,248, 28, 33,149,135,192,247,148, 96,163, 23,197,198,117, 69,250,184,250, 18,238, 92,203,212,241,220, - 74, 37,162, 95,191,126,211, 66, 67, 67, 23,230,250,187,218, 88, 22,174,109,219,182, 5, 3, 24, 90,210, 53,251, 86, 12, 61, 10, -224,104, 89,120, 51, 50, 50, 84,143, 31, 63, 86, 77,153, 50,133, 68, 68, 68,156,117,112,112,104,115,238,220, 57,147,238,221,187, -171, 3, 2, 2, 46, 59, 57, 57, 53,105,213,170,149,226,204,253,251, 81,217,239,222,157, 58, 21, 26,234,162,227,249, 83, 37, 9, -162,175, 37,174,242,248, 10, 90,134,242, 68,150,147,147, 19, 42, 84,168,240, 69,223, 61,165,244, 0, 33,228, 85,163, 70,141,142, - 12, 25, 50,164, 74,189,122,245,224,225,225,129,228,228,100, 68, 70, 70,226,214,173, 91,216,180,105,211,125,165, 82, 57,174,160, -101,181, 40, 36, 37, 37,125,178,140, 16,145, 89, 59,237, 88, 63,239,228,195, 91,117, 61, 26,119, 24, 44,243,117,226,241,255,216, -187,238,248,166,170,247,253,156,123,111,246,106,186, 7, 45, 45,171, 20, 1,129,150,189, 17, 20, 4,148, 33,227,167, 40, 75, 11, -136, 95, 69,144,161,236, 45, 8,130,202, 16, 4, 4, 68, 16,112, 34,160, 50, 4, 89, 2,130, 34,101, 83, 40,208, 61,210,149, 54, -205,186,247,252,254,104, 18, 67,233, 72, 74,193,130,121, 63,159,243,105,146,155, 62, 57,251, 60,231, 61,239,121, 95,147,153,226, -206,173,235,152, 61,125, 93, 97,202,173,171, 23,204, 86,115,191, 71,221, 7, 86, 5,210,132,231,249,111, 45, 22, 75, 77,155, 54, -182,202,124, 90,153, 76, 38,189,213,106, 29,198,113, 28, 47, 18,137, 54,177, 44, 91,207, 22,214,110, 30,165,148,123, 80, 4,235, -177,212, 96,149,148,248,248, 59, 23,234,212, 9,123,239,155,175,119,182,163,148, 97, 41, 33, 5, 90,173,247,174,219,183,111,223, -229, 5,187,174,143,143,122,196,107, 35, 6, 19,129,136, 8, 17,120,129,101,142,197,199,223,185, 80, 65,195,141, 26, 60,120,240, -199, 10,133, 98,154, 78,167,251, 83,171,213,254,213,180,105,211,185,148,210,233, 6,131,225,123,181, 90,125,178,109,219,182,243, -195,195,195,151, 83, 74,255,112,115, 80, 91, 81,108,255,181,169,138, 85,182,115, 0,120,113, 28,151,251,247,223,127,111,141,138, -138,122,145, 82,234, 69, 8,201,173, 44,102, 81, 81,209,255,114,114,114,252, 98, 99, 99, 45,107,215,174,141, 26, 54,108,216,148, -184,184, 56, 81, 81, 81, 81,188,155,101, 54, 18, 66,250, 12, 26, 52,104,157, 72, 36,234,202, 48, 12, 17, 4,129, 58, 61, 7,165, - 20, 60,207,255, 80, 81,189,136, 68, 34,253,179,207, 62,171,170, 80, 43, 37,145,232, 93, 94,100, 76,252,184,213, 7,227, 22, 22, - 89, 40,181, 10,116,212,229,180,130, 82,175,144,157,186, 76, 27,185,140, 89, 36,140,251,248,231, 11, 11,141, 22, 65,176, 10,116, -116, 89,152,110, 45,134,143, 8, 38, 0,140, 97, 86,124,129, 53, 43, 28, 6,239,246, 99,195,146,239,171, 90,236,154, 38,184,227, -101,217,230,142,225,194,168, 7,128, 93, 10,217,114, 87, 6, 12, 24,240,192,236, 73,204,102,243,212,231,159,127,126,174, 86,171, -253, 32, 35, 35,227, 79,173, 86,123,161, 65,131, 6,227, 4, 65, 88, 94, 88, 88,184, 75,173, 86, 63,215,162, 69,139,241, 17, 17, - 17, 27, 19, 40,221, 88, 30, 22,207,243, 73,118, 45, 14, 0,106,215, 62,217, 9,132, 51,145,176, 88, 44,137,174,228,143,231,249, -164,166, 77,155, 18,103,109, 86,201,191,206,226, 42,110,137, 77,111,131,185,115,231,182, 5,240, 20,128,166, 0,242, 0,220, 2, -112,130, 82,250, 83,165, 9,156, 33, 43,153, 16, 18,115,241,236,145,209, 87, 46,156,125,201,126, 91,144,101, 37,231,121,115,225, - 38,139, 33,123,221, 99, 78,174,144,158,158,254, 39,128,240, 7,129,109, 52, 26, 95, 36,132, 92, 98, 89,150,138, 68,162,151, 88, -150,253, 85, 16,132, 15, 76, 38,211, 22,190,186,184,124,127, 4,132, 60,200, 62, 72, 8,233, 86,213,241,138, 60,152, 30, 76, 15, -166, 7,211,131,233,193,244, 96, 62, 56, 76, 95, 95, 95, 5, 0, 19, 33,132,178, 44,171,100, 24,198,155, 82,106,224,121, 62,215, -106,181, 90,178,179,179,133, 7,145,207,255,132, 6,203, 35, 30,241,136, 71, 60,226, 17,143,252, 55,133,231,249,162,156,156, 28, - 1, 0,124,124,124, 10, 8, 33, 38, 74, 41, 79, 41,229,179,179,179, 5, 79, 13,185, 72,108, 1,148,122, 19,192, 29,102, 90,153, -219, 4, 21,225,123, 48, 61,152, 30, 76, 15,166, 7,211,131,233,193,124,252, 48,255, 51, 98,183,209,121, 16, 9, 64, 55, 15,166, - 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 90, 98, 60, 20,211, 35, 30,241,136, 71, 60,226, 17,143,120,164,106,197, - 99,131,229,166,216, 98,202,189, 14, 96, 0,128,186, 0,174, 3,216, 9, 96,149, 27, 1,143,157,241, 52, 0,166, 0,104, 7,160, - 54,128, 27, 0,142, 0,120,159, 82,170,247,212,120,233,226,239,239,255,158, 72, 36,210, 2,197, 78,241,236,127,157, 95,243, 60, -159,147,155,155,187,224, 1,245, 3,150, 82,202,187,147, 87,231,188, 57,255,181, 88, 44, 15, 44,159, 30,169,182,243, 72,125, 31, - 31,159, 45, 58,157,110, 8,165,244,138,167, 70, 60,242, 56, 73, 64, 64,192,104,179,217, 60, 77, 44, 22,207, 79, 79, 79, 95,253, -159, 39, 88,132,144,195, 0, 64, 41,237, 4, 0,106,181,250, 56,195, 48,181,109,207, 0, 0, 78, 30, 92, 75,253, 43, 8,194,141, -172,172,172,182,101,253,152, 66,161, 56,206,178,108,109, 66,136, 61,248, 44, 24,134,129,197, 98, 81,179, 44,155, 95, 6,102,162, - 78,167,107, 94, 77, 38, 69, 2,224, 71,111,111,239,162,185,115,231,174,234,220,185,115, 88,114,114,178,117,210,164, 73, 29,255, -250,235,175, 94,132,144,103,221, 33, 89,132,144, 54,132,144,141,205,154, 53,251,118,232,208,161,219, 91,181,106, 37,201,202,202, - 82,239,220,185,179,198,166, 77,155,206, 16, 66,134,184,235,170,226, 17, 88, 88,184,178,252,145,149,247,172,164,136, 68, 34,109, - 98, 98,162,218,214,103, 29,158,135, 45, 22, 11, 44, 22, 11, 10, 10, 10,208,180,105,211, 42,207,127,112,112,112, 52, 33,100, 69, -100,100,100,243,144,144,144,211, 0,198, 38, 39, 39,255,229, 78, 94,173, 86, 43, 40,165,142,124, 54,108,216,208, 51, 35,187,215, -135, 94,149, 72, 36, 61, 34, 35, 35, 91, 26,141,198,236, 27, 55,110,156,226,121,126, 6,165, 52,181,138,240,189, 0,204,144, 74, -165,173,234,214,173, 27,118,245,234,213, 59,102,179,249, 36,128, 57,148,210,220,170, 32, 87,157, 58,117, 58,186,114,229, 74,223, - 49, 99,198, 28, 37,132,180,247,144, 44,143,252, 91, 82,179,102, 77,109, 65, 65,193, 58, 0,209, 34,145, 40,200, 22,131, 48, 85, - 42,149,254, 41,151,203, 71, 30, 61,122, 52,199, 93, 76,158,231,103, 36, 36, 36, 4,181,110,221,122,113,227,198,141,103,103,102, -102, 22,153,205,230, 3,217,217,217,227, 41,165,121, 21,140,143,187,184,200, 35, 79,176,108,113,127, 58,223,245,128,227, 66, 19, - 18, 18, 2,212,106, 53,120,158,119,104, 7,236,139,153,179,123, 7,155,159, 37, 52,104,208,192, 92,193, 66, 19,150,152,152, 24, -160, 82,253,227,106,201,108, 54, 35, 40, 40, 72, 72, 74, 74, 10, 40, 25, 72,216,100, 50, 33, 52, 52,180, 58,249, 50,121,221,199, -199, 39,247,246,237, 59, 77,139,140,230, 57,175,253,239,221,247,134, 12,120,218,251,248,241,227,194,179,207, 62,107, 60,124,248, -240,235, 0, 92,114,142, 74, 8,241, 34,132,108,154, 52,105,210,108,153, 66,227,123,240,248, 5,227,166,157,187,147,154,213,175, - 69,198,143, 31,207,190,249,230,155,191, 69, 71, 71,111, 33,132,196,184,163,201, 82,171,213, 63, 73,165,210, 8,150,101, 97, 54, -155,111,235,116,186,103,170,209,194,216, 12,192, 89, 66, 72, 52,165,244, 79, 87,159,149, 39, 89, 89, 89, 48, 24, 12,247,164,134, - 13, 27,162,170, 93,144, 16, 66,184,176,176,176,239, 23, 46, 92, 88, 35, 53, 37, 5, 31, 46, 91,214, 26,192, 42, 0,173, 93,249, -255,244,244,244,123,242,217,160, 65, 3,120,196,173, 54,152, 50,123,246,236,133, 47,189,244, 18,120,158,135,193, 96, 8,185,118, -237, 90,163,105,211,166,245, 35,132,180,164,148,198,223, 39,190,127,100,100,228,165,113,227,198,249,180,108,217, 18,182,168, 18, - 33, 71,142, 28,105,189,126,253,250, 87, 8, 33, 13, 40,165, 25,247,243, 27, 62, 62, 62, 91, 62,251,236, 51, 95,133, 66,129, 31, -126,248,193,183,107,215,174, 71, 8, 33, 29, 42, 75,178, 8, 33,140,175,175,239,155, 0,158, 18, 4, 65, 2,224,100,118,118,246, - 60, 74,169,217,211, 99, 60, 82,158,248,249,249,189,154,159,159,191, 82, 42,149,138,189,189,189,161, 80, 40,236, 49, 8,107, 74, -165,210,154, 82,169,180,231, 83, 79, 61, 53,246,224,193,131,229,122,196,111, 27, 29, 52, 28, 12,153,195, 18,134, 5,128,134,145, -190, 26, 47, 47, 47,204,153, 51, 71,217,167, 79, 31, 37, 0, 28, 61,122,116,232,176, 97,195,186, 18, 66, 26,151, 69,178, 74,227, - 34,143,133, 6,139, 82,122,184, 68, 65, 33,151,203,177,125,251,118,176, 44,123, 87, 20,247,210, 94,215,172, 89,179,194, 31,179, -107,192,118,237,218, 5,141, 70, 3, 47, 47, 47,199, 2, 35,149, 74,113,224,192, 1,136, 68, 34,112, 28, 7,145, 72,132,230,205, -155,163,156, 0,243, 15, 68, 6, 54, 42, 14, 50, 89,154,243,198, 14,117,229, 24,240,230,172,193,133, 69,230, 22, 0, 10,114,178, -179,179, 79,127,243, 77,114,179,250,245,197, 91,182,108,105, 89,163, 70,141, 1,174, 18, 44, 0, 83, 98, 98, 98,190,102,229, 94, -126, 67,135, 13, 31, 58,146, 99,204,175,140,122,103,254,157,148,204,130,216,216,216,111,126,248,225,135,161,139, 22, 45,186, 56, -113,226,196, 41, 0,166,186,154,127,137, 68, 18,113,237,218,181, 72, 65, 16,240,228,147, 79, 86,155,112, 3,118, 2, 69, 41, 5, - 33,228, 46, 34, 85,222,179,138,196,174,177, 42, 45, 85,181,212,168, 81,163,193,203, 47,191,236,167,203,204,196,135,203,150,217, - 63,110, 94,209,113,161,253, 40,208,100, 50,225,133, 23, 94,120,153,231,121,206, 78,254,140, 70,163, 41, 55, 55,183,200,233,166, - 78, 6,165,244,105, 23,234,179,182, 82,169,252, 0, 64,180,193, 96,168, 1, 0, 74,165, 50, 73, 16,132,111, 11, 10, 10,166, 82, - 74, 13,149,108,167, 48, 0,141, 80,118,200, 38,186,112,225,194,171, 83,166, 76,137,127,216,152,132,144,136,192,192,192, 5, 3, - 7, 14,196,238,221,187,177,103,207, 30,139, 92, 46,231,134, 13, 27, 70,198,142, 29,235, 61,110,220,184,158, 0, 62,186,207,102, -238, 57,123,246,108,159, 39,158,120, 2, 59,119,238,196,185,115,231, 12,145,145,145,242,206,157, 59,131,227, 56,159,247,222,123, -239, 89, 0, 27,239,231, 7,116, 58,221,188,119,222,121,103,211,214,173, 91,213, 55,110,220,192,138, 21, 43,252, 6, 15, 30,124, -152, 16,210,201, 85,146, 69, 8,145, 2,120, 19, 64, 23,150,101, 59, 12, 27, 54,204,250,191,255,253, 79,196, 48,140,101,217,178, -101,254,235,215,175, 31,236,231,231, 23,157,153,153,233, 49, 51, 40, 71, 88,150, 53, 11,130, 32, 2, 32,163,148, 26, 43,122,255, - 56,149,221,215,215,119, 76,118,118,246,170,160,160, 32, 4, 6, 6,222,179,214, 26,141, 70,200,100, 50,113, 80, 80,208,103,125, -251,246, 21,125,247,221,119,101, 30,245, 17,150,204,248, 97,219,220, 26, 62,222,106, 0,192,242, 79,127, 46, 4,128,239,190,251, - 14,201,201,201,240,246,246, 70,227,198,141,217,185,115,231, 6,143, 31, 63,254, 67, 0, 35,203,194, 42,201, 69, 30, 11,130, 85, -214,194, 96, 15, 36,106, 39, 82,118,242, 83,242,181,157,148,149,168,168,253, 37, 38, 5,162,215,235, 29,228, 74,163,209,192,182, -168,194, 98,177,220,131,203,243, 60, 74, 70,213,118,229,250, 39, 33,100, 12,128, 3,148,210,235,174, 84,130, 51,230,142, 55, 26, - 96,147,116,210,139,118,151,231, 61,223, 41,254,187, 9,192,241,155, 35, 87,172,236,212,169,198,155,211, 63,158,101,200, 74,206, -124,239,229,231, 34, 34,131,124,229,202,156,244, 92,159,168,168,238,112, 10, 31,224, 66, 62, 59, 14, 29, 58,116,243, 47,191, 39, - 16,153, 76, 44,230, 88, 86,212,254,201,250,190, 97, 94,172,151, 26,240,186, 19,127,245,248,240,225,195,159,156, 56,113, 98, 7, -119,202,206, 48, 12, 52, 26, 13, 54,111,222, 12,198,206,104, 93, 44,123, 85, 73, 41,237,206,217, 9,148, 78,167,195,238,221,187, -209,171, 87,175,179,132,144,104,219, 87,206, 82, 74,145,151,151,135,148,148, 20, 4, 7, 7,159, 37,132,136,156,143, 11, 75, 98, -218,181,168,118, 50, 53,108,216,176,151,173, 86, 43,231, 52, 57,148, 36, 46,247,144, 23, 87,203, 30, 18, 18,242, 11,128,167, 89, -150,133,169,168,200,244,193,210,165,206,143,255,112, 38, 87,101, 97,218,243,202,243, 60,119,246,236, 89,145,125,204, 0, 16, 1, - 80, 2,240,179, 5, 85,253,219,133,250,108,160, 80, 40,142,239,218,181, 75,211,188,121,115, 34,145, 72, 96,181, 90,113,254,252, -249,176, 69,139, 22,141,218,191,127,255,179,132,144,134, 37,131,154,187,216,238,141,142, 28, 57, 82, 80,167, 78,157, 82, 9, 99, - 94, 94, 30, 87,191,126,253, 78, 0,226,255, 5,204,196,180,180,180,190, 79, 63,253,244,232,212,212,212, 75, 86,171,117, 50,128, -198,126,126,126,103,251,247,239, 15,185, 92,222,197, 21,130, 85, 94,187, 7, 4, 4,244,105,219,182, 45, 86,172, 88,129, 69,139, - 22,117,163,148, 30, 32,132,116,205,203,203,219,255,252,243,207, 67,171,213,246, 45,141, 96,185,218,151, 8, 33,245, 59,118,236, -248,217,156, 57,115,212,187,119,239, 70,100,100, 36,242,243,243, 49, 97,194,132,128,153, 51,103, 30, 34,132,116,182,147,172,178, - 48, 9, 33, 13,165, 82,233,198,173, 91,183,170,234,212,169, 83, 71, 44, 22, 51,117,234,212,129, 78,167, 67, 81, 81,145,116,254, -252,249, 79,202,229,242,191, 62,250,232,163,141, 0,250, 63,236,241, 94, 34,175,185, 0, 52, 0,180,238, 28,175,150, 83,246, 92, - 0, 82,199,224, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,245,234,213,233, 18,137,100, 25, 74, 9,229, 82, 26, 38,249,103, -209,106, 74, 8, 57,197,178,108,185,239, 75,154,128, 60,236,250,180,229, 57,148, 16,178, 28, 64,151,226, 41,159, 57,236,231,231, -247, 86,106,106,234, 45, 87, 49, 67, 66, 66,124,245,122,253, 71,193,193,193, 8, 12, 12,116,172, 29, 53,106,212,128,197, 98, 65, - 90, 90, 26, 40,165,200,201,201,129, 66,161, 64, 72, 72,200, 71,163, 70,141,218,185,102,205,154,172, 82, 49, 5, 44,122,126,240, -180, 25, 44,203, 50, 0,192,114, 42,213,184,119,129,136,136, 8,180,111,223, 30, 69, 69, 69,200,205,205, 69,163, 70,141, 56, 66, -200, 80,134, 97, 52,148,210,213,148,210,131,143, 51,129,183, 47, 72,179, 75,158,123, 18, 66, 32, 8, 2, 56,142,187,139, 96,149, - 76,118, 50,100,235,167,164, 34, 85,182,201,100,114,144, 43, 47, 47, 47, 7, 57,179, 90,173,101, 17,172,202, 48,243, 38,130, 32, -212, 38,132,172,113,149,100,149,148,161, 67,135,222, 99,207, 49,126,252,248,196,244,244,116,250, 66,247,166,202, 75,123,147, 83, -234,122,171,228,254,106,117, 45,153,183,143, 54, 43, 43,235, 4, 0,173, 27, 63, 81, 47, 38, 38, 70,190,233,155, 35,137,175,189, -189,112,110,243, 58,190,154, 38,161,126,222, 65, 94,114,137,138, 33, 5, 50,171, 37,209,199,199, 39,178, 18, 59, 50, 0,128, 86, -171, 5,199,113,213, 66,131, 69, 41,181, 18, 66,162, 9, 33,103,119,239,222,141, 86,173, 90, 57, 72,150,157,124,228,230,230,226, -252,249,243,232,216,177, 35, 0, 68,187, 98,139, 37, 8, 2,204,102, 51,204,102,179,131,184,136,197,226,123,136,139,253,187, 44, -203,254, 93,201, 34,204,245,246,246,238,216,165, 75, 23,201,182,237,219, 37,148,210, 2, 20, 7,164,214, 83, 90, 70,224,234, 18, - 98,181, 90, 29, 90, 53,145, 72,132,219,183,111, 59,180,192,118, 77,112,201, 35,242,178, 68, 42,149,190,243,213, 87, 95,105, 90, -182,108, 73,178,178,178, 32, 8,130, 99,114, 92,181,106,149,108,192,128, 1, 53,206,156, 57,243, 30, 42, 17,118, 6, 0, 41,139, - 8, 1,128, 70,163,177, 2,110,223, 62, 46, 21,211,106,181,146,118,237,218, 77,204,204,204,124,210, 96, 48,204,119,165, 31, 1, -248,193,150,236,115,202, 95,151, 46, 93, 50, 12, 26, 52, 72, 94,171, 86,173, 86,247,219, 87,235,215,175,223, 70, 36, 18,225,228, -201,147, 70, 0,246,157,244,225,115,231,206, 25,251,247,239, 47, 13, 11, 11,107,227,134,230,174,126,131, 6, 13,246, 5, 4, 4, -200,237, 26,203,129, 3, 7,138,214,174, 93,171, 78, 74, 74,130,217,108,198,148, 41, 83,208,187,119,111,248,249,249, 97,252,248, -241,129,139, 23, 47,222, 2, 32,166, 28, 76,153, 68, 34,217,124,237,218,181,200,224,224, 96,249,239,191,255,142, 38, 77,154, 32, - 51, 51, 19,169,169,169,208,235,245, 72, 77, 77,197,200,145, 35, 3, 62,252,240,195,144,106,180,214,228,136,197, 98, 40, 20, 10, -109, 78, 78, 78,238,125,224, 72, 1, 72,156,201,149, 84, 42,133, 84, 42,133, 76, 38,131, 32, 8,143, 69,144,224,114,218,191, 6, - 33,228,130, 88, 44,150, 42, 20, 10, 49,195, 48,144, 74,165,221,125,124,124,226,158,121,230,153,198,191,252,242, 75,130, 43, 56, - 69, 69, 69,155,165, 82,169, 40, 32, 32, 0, 0, 16, 25, 25,137, 38, 77,154,160,160,160, 64,200,205,205,133, 86,171,101,110,221, -186, 5,131,193,128,148,148, 20,132,135,135,139, 24,134,217, 12,224,217,210,240,142,157, 73,249, 20,192,167,246,247,254,254,254, -105, 0,228,246,247, 50,153, 12, 53,106,212, 64, 82, 82, 18,212,106, 53, 59,115,230,204,254,219,183,111,239, 71, 8, 25, 74, 41, -253,194, 9,106,246, 99,103,131, 69, 41,157, 69, 8,233, 84,218, 2,102, 59,143, 45, 83,115,101, 79,174, 16, 33,123, 32,202,192, -192, 64, 40, 20, 10, 40, 20, 10, 71,192, 81,158,231,239,193,183,237,232,221, 46,148, 82,169,196, 75, 47,189, 68, 87,175, 94, 61, -218, 70,178,174,185,250,191, 3, 87, 92,114,104,173, 74, 74,195,134, 13,143,191,247,222,123,125,126,253,245,215,164,230,117,106, -113,202,228, 91,122,153, 70,171, 69,104,205, 94,195,250,246, 63,135,226,219,132,174,202,181,252,252,124,121,221, 80,133,137, 97, -138, 72, 77, 41,167, 14, 86,138,165, 65,222,222, 53,196, 38, 99,186,198,219, 91, 98, 52, 26,115, 0,148, 27,156, 89,163,209,252, - 44,149, 74,195, 89,150, 5,203,178,240,243,243,243,162,148, 66,171,213, 34, 52, 52, 84, 21, 21, 21,117,133,227, 56, 48, 12, 3, -189, 94,127,235,230,205,155,221, 43,202,152,183,183,247,207, 82,169, 52,220, 30, 60,148,101, 89,199,133, 4,251,107,150,101, 65, - 8, 65, 97, 97,161, 75,152,148,210, 63, 9, 33,209,189,122,245,114,144,172,189,123,247,162, 71,143, 30,200,201,201, 65, 92, 92, -156, 51,185,114,233,120,208,217,168,157, 82, 10,177, 88,140,203,151, 47,223,117,116,109, 79,106,181,186,210,131,196,199,199,231, -232,192,129, 3,241,217,103,159, 81, 91,148,119, 37, 33,164,137,151,151,215,229, 11, 23, 46,184,100,231, 66, 41,133,217,252,207, - 87,237,125,220,121,124,185, 65,162,187,199,196,196,144,220,220, 92, 59,113,116,108,132, 88,150,197,202,149, 43,229, 45, 91,182, -156, 38,147,201, 38,138,197,226, 60,139,197,178,173,168,168,104, 62,165, 52,167, 58, 77, 62, 29, 58,116,120,251,206,157, 59,189, -195,195,195,119,221, 7,121,167, 45, 90,180, 48, 1,144,179, 44, 43,170,130, 5,140,181,245,173, 34, 59,201,167,148, 90, 99, 98, - 98,138,108,139,187,203, 17,144,253,252,252,182,236,217,179, 39, 52, 60, 60, 28, 22,139, 5, 86,171, 21,122,189, 30,135, 15, 31, -134,209,104,132,213,106, 69,100,100, 36,102,204,152, 81,244,214, 91,111,201,214,172, 89,147,174,215,235,135, 84, 0,251,214,206, -157, 59,149,193,193,193,114,131,193,128,248,248,120,196,196,196, 32, 63, 63, 31, 5, 5, 5, 40, 44, 44,132,217,108, 70, 94, 94, -158,150,231,121, 83,181, 89,104, 56, 14, 82,169, 20, 98,177, 56, 39, 60, 60, 28,132, 16, 89, 66, 66, 66,101,142,220, 52, 0,242, - 68, 34,145,196,153, 88, 73,165, 82,156, 60,121,114,170, 76, 38,251, 16,110, 4, 34, 46, 25,175,176,162,247,213,128, 96, 45, 23, -139,197, 82, 31, 31, 31,177,211, 58, 45, 86,169, 84, 8, 8, 8, 88, 1,160,167,139,229,110,230,227,227,227,152,223,155, 54,109, -138, 59,119,238,124,155,155,155,251, 74,122,122, 58, 24,134,217,204, 48, 76, 63, 59, 15,200,206,206, 70, 88, 88, 88,179,178,240, -218,197, 4,143, 6,161, 14, 13, 86,195,122, 62,170, 18,235, 20, 52, 26, 13,110,222,188,137,130,130, 2,122,245,234, 85, 50,102, -204, 24, 98, 50,153, 62, 39,132,156,160,148,222, 40,143,139, 60,234, 26,172, 82,207, 61,237, 71,132,165, 17,170,146,132,203, 21, - 34,100, 50,153, 84, 49, 49, 49,130,125,225,182, 39, 0,164, 44,130,101,211, 20,184, 45, 34,145, 72, 61,102,204,152,252,213,171, - 87,143, 34,132,172,165,148, 94,173,108, 37,237,250,122,107,224,162, 25, 83,102,248,132,212,170, 59,113,226,116,238,185,231,158, -251,125,211,166, 77,188,207, 19, 61,187, 30,252,249,139,192,143, 38, 76,218,187,103,207, 30,160,216,224,217, 85, 57,250,227,143, - 63, 6,141,127,115, 44,102,188,243,214, 79,154, 72, 63,137,138,248, 40,101,198,130, 12, 21,168, 65, 90,175, 65,239,111,118,237, - 74, 1, 80,110,164,121,185, 92, 30,126,245,234,213, 72,103, 2, 97, 54,155,161,213,106,177,105,211, 38,127,181, 90,237,175, 82, -169,192,113, 28,154, 52,105,226,170,134, 36,252,202,149, 43,145,106,181, 26,133,133,133, 48, 26,141,176, 88, 44, 16, 4, 1,132, - 16,136, 68, 34, 72, 36, 18, 40,149, 74,183,110,234, 57,147,172,189,123,247,162, 81,163, 70,200,206,206,198,165, 75,151,220, 38, - 87,206, 90, 33,103,123, 43,142,227,176,165, 78, 29,188,150,156,236, 32, 46,203,189,188, 48, 67,168, 92,116,135, 39,159,124,146, - 30, 59,118, 12, 63,253,244, 19,158,127,254,121,242,253,247,223,155,121,158, 23, 39, 37, 37,185,172, 13, 19, 4,193,145, 87,251, -124,237, 76,172,220, 37, 88, 86,171, 85, 45,145, 72, 80, 84, 84,228, 56,194,119, 78,181,107,215,134, 78,167,227,242,242,242,184, -228,228,100,197,188,121,243,254,119,232,208,161, 96, 0, 47,254,155,147,205,234,213,171,195, 95,123,237,181,219, 28,199,209, 30, - 61,122,188,124,235,214,173,190,193,193,193, 7,126,253,245,215,165, 0,234,187,139,231,239,239,255, 7,199,113,161, 42,149, 74, -188, 99,199, 14, 75,126,126,190, 56, 32, 32, 32,205, 78,104,237,117,109,177, 88, 18,115,115,115,155,187,130,231,239,239, 47,254, -228,147, 79, 44, 89, 89, 89,226,160,160,160, 52, 59,142, 82,169, 20,239,216,177,195,146,151,151, 39,214,106,181,127,228,228,228, - 84,136,151,153,153, 57,100,232,208,161, 71, 14, 28, 56,224,199,178, 44,110,221,186,133,172,172, 44,104,181, 90,108,222,188, 25, -225,225,225,216,185,115,167, 78,167,211,189,250,193, 7, 31, 76,211,235,245,174,184,108,232,216,170, 85,171,240,156,156, 28,104, -181, 90, 20, 20, 20,224,143, 63,254, 64,195,134, 13,145,156,156, 12,134, 97,160,213,106,177,106,213,170, 66, 66,136,174, 58, 44, - 50, 44,203, 58,180, 76, 78,164,168,168, 77,155, 54, 56,120,240,224,100,119, 72, 17,165,212, 36, 18,137,238, 34, 86,246,215, 98, -177,216,234,110,222,120,158, 23,219,108, 64,137, 43,239,171,129,116,146,203,229,226,146, 31, 22, 22, 22,138,131,131,131, 59,184, - 65,120,125,229,242, 98, 5, 83,120,120, 56,114,115,115,121,147,201, 52,120,243,230,205, 22, 0,136,137,137, 25,204,243,124,145, -213,106,101, 37, 18, 9, 10, 10, 10, 16, 16, 16,224, 91, 38, 32,131,201, 63,108,155, 23, 84,210, 6, 43, 56, 56, 24,209,209,209, - 48, 26,141, 72, 73, 73,193,225,195,135, 45, 60,207,127,185,122,245,106,193,223,223,127,196, 11, 47,188,192,158, 57,115,230, 13, - 0,111,151,199, 69, 30,105,130,101, 99,140,135, 0,116,182, 23,206,249,136,176, 60,205, 85, 9, 13, 22,169, 96,160,229, 36, 38, - 38, 42,149, 74,165,227, 51,139,197,130,144,144, 16, 65, 16, 4, 82,242,119,236,249,168,172,136, 68, 34,245,187,239,190,155,179, -106,213,170, 87,224,162,161,248,142, 55, 26, 96, 83, 9,114,245,233,162, 57, 43, 62, 89, 60,207,231,250,222,207,177,238,227, 37, - 60,207,227,204,147, 79, 62,217, 65,175,215,115, 94, 74, 11, 50,115,176, 23,197,126,176, 92, 34,131, 54, 95, 90, 27, 78,157, 58, -117,166,103,207,158,199, 54,124,245,141, 79,114,124,252, 9,105, 94,102,138,166, 94, 36, 39,174, 17,222, 47,191,168, 72, 60,120, -240, 96,127, 0, 47,148,135,197, 48, 12,226,227,227,145,144,144, 0,149, 74, 5,181, 90, 13,149, 74, 5,141, 70, 3,181, 90, 13, -181, 90,237,118, 29, 50, 12, 3,158,231,241,245,215, 95, 67,161, 80, 64,169, 84,222,149,236,228,234,126,218,166, 71,143, 30,208, -233,116, 80,169, 84,142, 99, 77,119,196,110,131,101, 50,153, 96, 50,153, 96, 54,155,121, 0, 34,142,227, 48, 50, 49,209,161,213, -113,135,184,148,148, 38, 77,154,208, 19, 39, 78,224,216,177, 99, 40, 40, 40,192, 39,159,124,130,224,224,224,167, 0, 76,119, 99, -199, 89, 39, 40, 40,168,199, 51,207, 60, 19, 98,177, 88,160,215,235,153,191,255,254, 27, 50,153, 12, 44,203, 34, 49, 49, 17, 91, -183,110,197,205,155, 55,237,218,195, 80, 66, 72, 45, 74,233,205,242, 22, 5,142,227, 28,187, 79,123,114,214, 98,177, 44,139,192, -192, 64, 4, 5, 5,225,211, 79, 63, 21,215,170, 85,171,247,191, 57,209, 44, 94,188,184,222,242,229,203,215,111,218,180,105,239, -144, 33, 67,182,159, 63,127,126,184,151,151,215,223, 7, 15, 30,156, 39,149, 74,133, 74,142,239,208,228,228,228, 0,231,143, 4, - 65, 80, 88,173, 86, 7,161, 45, 44, 44, 68,227,198,141, 93,198,187,112,225,130, 2, 0,230,205,155, 39, 2,160,176,187,255,176, - 99, 22, 22, 22,138, 26, 54,108, 24,234, 34, 25,184, 66, 8,233,208,173, 91,183,227,251,246,237,243, 14, 15, 15, 71, 82, 82, 18, -146,146,146, 80,175, 94, 61, 44, 88,176,160, 32, 47, 47,175,157,141, 84,125,239, 98,177, 67,188,189,189, 69,183,111,223,134,213, -106, 69,179,102,205,176,106,213, 42, 12, 30, 60, 24,141, 27, 55, 70, 94, 94, 30, 46, 92,184,128,141, 27, 55,122,139,197,226, 23, -254,237, 5,198,118,132, 85,102,170,140, 88,173, 86,141, 76, 38,203,147, 74,165, 18,187,253,213,225,195,135,221,214, 94, 57,111, -252,220,121, 95, 29,200,106, 73,145, 72, 36, 8, 10, 10,114, 25, 71, 42,149, 18,251,220,104,181, 90,145,155,155,203, 7, 7, 7, - 59,142,241,207,158, 61,203, 71, 68, 68,240, 44,203,178, 18,137, 4,132, 16, 40, 20,138, 50, 39,124,202,211, 57,207, 13,158,238, -184, 69,200,136,148,154,113,239, 22,111,246,207,158, 61, 11,179,217,140,195,135, 15, 91, 62,248,224,131,228,156,156,156,113, 0, -184,159,127,254,121,232,164, 73,147,216,128,128,128,110, 78,243,229, 61, 92,228,113,208, 96, 29,162,148, 18,155, 65, 57,177, 19, - 27, 74,233, 61,164,170, 44,194,101,211, 96,145,138, 6, 27,203,178,248,233,167,159, 28, 68,192,126,139,144, 82,138,170, 38, 88, -190,190,190, 5,173, 90,181,210,220,185,115,103,107,101, 53, 87,159, 46,154,179,226,253,121,179,124,178, 46,158, 64, 98,114, 10, -116,233,150, 51, 71,255,190,249, 45,128,111, 1, 0,107,158, 56,132, 81, 23, 87,186,138,249,132,191,162,233,147, 33,234,111,159, -238,217, 59,108, 80,236,219,204,235,175,191,222,126,232,208,161,185, 67,134, 12,121, 83,165, 82,213, 55,155,205,217,223,236,222, -157, 48,104,208,160, 90, 60,207, 15,173,200,103,136,197, 98,185,213,191,127,127, 71,221, 6, 5, 5,105,182,109,219, 22,168, 86, -171,241,242,203, 47,103, 36, 36, 36, 56,142,133,242,243,243,111,185,146, 71,179,217,124,171,105,211,166,101, 30, 11,218, 53,144, -238, 96,218,218,210,113, 91, 48, 43, 43, 11,151, 47, 95, 6,199,113,104,221,186, 53,142, 30, 61,138,246,237,219,187,117,131,176, -168,168, 8,225,225,225, 40, 42, 42, 66, 65, 65, 65, 33, 0,233,230, 90,181, 0, 0,111,100,101,225,143, 15, 62,192,239, 11, 23, - 86,170, 31, 53,109,218,148,158, 60,121, 18,127,255,253, 55,140, 70, 35, 94,125,245, 85,216,142, 7, 1,224, 25, 23,203,219,184, - 65,131, 6,251, 15, 30, 60,232,175, 86,171,161,215,235,161,215,235, 49, 98,196, 8,140, 30, 61, 26, 22,139, 5,171, 87,175,198, -119,223,125, 7,141, 70, 3,189, 94,143,130,130, 2,239, 94,189,122, 29, 39,132,116, 44,235,104,155, 82, 74,110,222,188,137,247, -223,127, 31,130, 32, 96,210,164, 73,136,140,140,116, 16,171, 91,183,110, 97,222,188,121,224,121, 30, 51,103,206, 68,189,122,245, - 96,177, 88,100,238,248, 25,171,106, 25, 63,126,252,245,111,191,253,118,239,157, 59,119,158, 93,180,104, 81, 39, 66,136, 48,113, -226,196,247, 53, 26, 13,127, 63,184,217,185,249,184,124,237,150,131, 0,149, 76,254,126, 62,110,227, 93,141,191,227,248,127,158, -119,198,227,225,235,227,237,110, 22, 11, 45, 22, 75, 65,191,126,253,180, 95,127,253, 53,169, 87,175, 30,110,220,184, 97,223,148, - 22, 86,194, 53, 67,146, 78,167,139,100, 89, 86,124,237,218, 53, 68, 68, 68,160, 85,171, 86,152, 63,127, 62, 50, 51, 51, 97,181, - 90, 17, 16, 16, 32, 88, 44,150,179, 38,147,233,183,127,123,129,113,214, 50, 57,167, 95,127,253,117,178, 76, 38,163, 0, 78, 2, -112,139, 96, 83, 74, 77, 53,107,214,188, 11,187, 50,218,171, 7, 72,130, 30,216,205,196,224,224,224,195,106,181,186,119,118,118, -246, 93, 90,172,118,237,218,153, 3, 3, 3,143,184,138,163, 82,169,178, 89,150,245, 5,128,164,164, 36, 40,149, 74,113,124,124, -252, 66, 66,200, 20, 0,168, 85,171,214, 66,157, 78, 39,174,101,155, 79,131,130,130, 96, 50,153,202, 52, 87, 57,126, 54,245,115, - 0,159, 59,173,189, 41,185,185,185,242, 37, 75,150,232, 23, 46, 92,104,224,121,222, 8,224, 96, 78, 78,142,195, 15, 86, 68, 68, - 68,174, 72, 36,242,209,106,181, 53,156,160,238,225, 34,143, 3,193,186,231,182,158, 51,233,113,133,100,185,162,133, 32,132,192, - 96, 48,220,165, 13,177,223, 34, 44,141, 96,217, 22,242, 74, 29, 17,218,200,149,124,219,182,109, 95,126,252,241,199,199, 92,253, - 63,103, 27,172, 53, 75,231, 46,178,147,171,115, 71,247,225,251, 75,185,153,147, 22, 46, 91, 94,217,202,110,232,175,108, 18, 20, -232,119,232,131,133,115, 53,215,247,126,142,237,107, 62,164,231, 78,159,110,121,250,244,233, 87,198,142, 29, 91,211,214,161,116, - 0,254, 2, 48,200,149, 91, 55, 25, 25, 25,119,217, 63, 69, 70, 70, 94,209,106,181,129, 50,153, 12,241,241,241,250,184,184, 56, -183,143, 94, 74, 98, 86,133,148, 36, 87,113,113,113,232,210,165, 11, 0,224,232,209,163,104,215,174,157, 91, 36,203, 98,177,228, - 60,241,196, 19, 14,109, 86,110,110,174, 0, 0,177, 41, 41, 88, 27, 28, 12,142,227,240,251,194,133,152,106,177, 96,190,200, 61, -211,156,102,205,154,209,211,167, 79, 35, 33, 33, 1, 86,171, 21,125,250,244,113, 38, 87, 46, 75, 80, 80,208, 59, 7, 15, 30,244, - 95,187,118,173,113,203,150, 45, 70, 65, 16,152,102,205,154,169,163,163,163,177,124,121,113, 55, 26, 52,104, 16, 38, 77,154,132, -184,184, 56, 40, 20, 10,116,232,208,129,159, 53,107, 86,192,184,113,227,222, 64,241, 53,252,210, 22, 24,218,189,123,119, 28, 57, -114, 4, 44,203,162,101,203,150,200,202,114, 92,238, 65, 96, 96, 96,105,207, 88,219,120,255, 87, 22, 34,142,227,232,225,195,135, - 23,117,234,212, 9,119,238,220,121, 54, 38, 38,230,147,225,195,135, 39,221, 47,174,183,151, 26, 77, 27,214,129,209,104,132,209, -104, 68, 72, 72, 8,242,243,243,113,253,250,117, 24,141, 70, 4, 6,104,221,198,139,110, 92,207,129, 23, 16, 16,128,130,130, 2, -220,188,121, 19, 38,147, 9,126,126,222,238,244,249,176,238,221,187,255,250,229,151, 95,250,110,220,184,209,212,185,115,103,201, - 39,159,124, 66, 52, 26, 13,210,211,211, 43, 91,228,195, 71,143, 30, 13,239,214,173, 91,212,197,139, 23,113,248,240, 97,152, 76, - 38, 68, 71, 71,227,234,213,171,104,211,166, 13,244,122,253,201,211,167, 79,255, 80, 29, 22, 24,251,241,157, 61, 29, 57,114,100, -170, 70,163,177, 0, 88,118, 63,125,241,246,237,219,210, 38, 77,154, 24,101, 50,153,196, 70,214, 62,252,183,250,118, 41,237,126, - 95, 55, 19, 43,152, 83,198,249,249,249,117,171, 93,187, 54,210,210,210,196, 18,137, 4,237,218,181, 51,183,104,209,194, 28, 20, - 20,244,134, 27,237,114, 81, 44, 22,119, 44,222, 68,240,184,125,251, 54, 40,165,147, 26, 55,110,252, 86,126,126, 62,178,178,178, - 36, 26,141,198,177,153,142,138,138,130,209,104,188,232, 6,201,156, 19, 17, 17, 49, 77, 44, 22,207,207,200,200, 88, 93, 74, 29, - 73,154, 54,109,170, 17,139,197, 48,155,205,198, 18,207,170,149,221, 91,149, 16, 44, 39,214, 88, 82,109, 94,225,241,160,171, 54, - 88,132, 16,152, 76, 38, 40,149, 74,199,209,147,179,231,246,210, 8, 86,101, 36, 44, 44, 12,173, 90,181,146,111,223,190,125,203, -146, 37, 75,142, 87, 6, 99,231,151, 95, 4,123, 9,133, 97,201, 39,247,224,242,185, 63,240,237,133,156,204, 73, 11,151,189,249, -220, 11, 47,166,149, 36,100, 59, 70, 85,140, 87, 63, 64,217,184, 70,160,239,161, 15, 63,120, 95,147,117,241, 4, 82, 82, 83,177, -231,228,233, 51, 38, 74, 47, 0,152, 84, 85, 13,234,124, 27,173,186,116, 84,103, 55, 13,153,153,153,184,112,225,130,157, 92, 69, - 3, 64,251,246,237,207,218, 73,214,153, 51,103, 16, 19, 19,115,143,155,134,123, 52, 13,217,217, 11, 74,252, 70, 55, 0,126,118, -162,207,113, 28,218, 77,155,230, 54,185, 34,132, 80,158,231,161,211,233,236, 59,195, 74,145, 43, 27, 86,187,194,194, 66,108,217, -178, 37,243,218,181,107, 97,181,107,215, 30,247,249,231,159, 47, 83, 40, 20,119,171, 56, 10, 11,209,173, 91, 55,140, 25, 51, 6, - 51,102,204, 16,134, 15, 31,206, 50, 12, 83,102, 4,123,158,231,197,181,106,213, 58, 0,224,169,139, 23, 47, 2,192,113, 74,105, - 59,251,243,242,158,185, 32, 66,126,126,190, 72,173, 86,151,234,226, 65, 92,124, 77,211,221, 35, 61, 7,230,177, 99,199,222, 95, -186,116,233,183, 19, 38, 76,184,118,159,152,165,106,176,122,247,238,141, 34,163, 5,137,105,185,224,121, 43, 12,230,116,183,241, -156, 53, 88,189,123,247,134,161,200,132,219, 41, 58, 88,173, 60,242, 13, 86, 87,219, 94,241,244,211, 79,255,188,109,219,182,160, - 19, 39, 78,128,231,121,225,234,213,171, 55,251,245,235,167,153, 56,113,162,175,147,141,169,187,242,241,139, 47,190, 56,224,216, -177, 99,186,168,168, 40,159,147, 39, 79, 34, 61, 61, 29, 86,171, 21, 79, 61,245, 20, 36, 18,201,237,133, 11, 23,138, 1,124, 92, - 93, 8,150, 84, 42,197, 31,127,252, 81, 37,196,202, 89, 36, 18, 73,165,143, 25, 31, 85, 57,121,242,100,210,216,177, 99, 27,106, - 52,154,229, 29, 58,116,232,226,235,235,203,120,123,123, 31,174, 81,163,198, 91, 77,154, 52,113,249, 52, 65, 36, 18, 13, 87, 42, -149,215,173, 86, 43,107,211,156, 3, 0,172, 86,171,132, 97, 24,212,170, 85,203,161, 52,105,217,178, 37,130,130,130,248, 75,151, - 46, 13,119, 21, 63, 61, 61,253,174, 91,133,165,200,168,118,237,218,113, 70,163, 17, 9, 9, 9, 71, 75,106,232, 31, 23,146, 85, -166,129, 10,195, 48,160,148, 66,214,188, 57, 82,246,237,195,215, 95,127, 93, 46,208,154, 53,107, 80, 82,165, 71, 8,233,230,236, - 43,195,126, 91,240,181,215, 94,115,124,231,204,153, 51, 14, 99,247, 62,125,250,220,133,121,234,212,169,123, 72, 86, 73,204, 50, - 26,247,226,142, 29, 59, 78, 47, 94,188,248,164,139,147,161, 3,211,110,131, 53,224,165,151, 83, 86,188, 63,227,252,198, 31, 14, - 52, 78, 49,208,148, 73, 11,151, 77, 40, 73,174, 92,197,124, 34, 72,245, 68,104,128,239,225,165, 31,188,239,101,215,134,109, 59, -155,154, 11, 43, 29,229, 78, 99,185, 82,118,103, 77, 34, 33, 68,168, 10,204, 74, 16,139,187, 48,157,221, 52,164,164,164, 56,200, -149,147,163,209,232,246,237,219,159,181,145, 43,251, 51,107,101,242,201,113, 28, 38,232,245,224, 56, 14,157,103,207,198, 83,115, -231,186, 93,118,158,231,193,113, 28, 34, 35, 35,221, 38, 87,206,152,148,210, 99,231,207,159,143, 24, 54,108,152, 58, 50, 50, 50, -158, 16, 34, 26, 49, 98,132, 16, 28, 28,204,252,254,251,239,160,148,162,125,251,246, 72, 75, 75,131, 32, 8,216,188,121, 51,134, - 13, 27, 70,254,250,235, 47, 42, 8,194,254,242,242,153,144,144, 48,170,107,215,174,107,138,138,138,184,172,172,172, 81,174, 62, -171,168,236, 59,118,236,184, 22, 25, 25,217, 9,101,187, 98, 16, 0,156,184, 31, 76,155,246, 46,234,126, 48,203,210, 96,125,245, -213, 87, 16, 4, 1, 97, 65, 90, 24,141, 70,148, 36,179, 21, 97,150,212, 96,109,223,190, 29,130, 32,160,102,176, 15, 76, 38, 19, -236,134,193, 21, 97,250,250,250,126,184,105,211,166,208, 75,151, 46, 33, 49, 49, 17,203,150, 45,187,149,147,147,211, 51, 39, 39, - 71, 58,107,214,172, 67, 47,189,244, 82,160, 32, 8, 70,119,199, 38,165,212, 72, 8, 25,222,182,109,219,205,243,230,205,187,209, -160, 65,131,154,237,218,181,211,102,101,101,101,252,249,231,159, 55,215,172, 89,163,178, 90,173,195,203, 58,122,122, 24,227,221, - 89,146,146,146,102,219,214, 25,183,136,149, 43,249, 60,117,234,212,187, 54,236, 83,174, 96, 63,172,178,223,239,205,196,138,242, -185,114,229,202, 68,148,240,111,230,110, 62, 79,157, 58,149,208,173, 91,183,185,129,129,129,179,100, 50, 25, 50, 50,138,131, 19, -216, 53,141,246,245,186,121,243,230,232,222,189, 59,174, 92,185, 50,119,218,180,105, 9,247, 83,159,182,141,118, 29, 0,175,116, -237,218,117,226,128, 1, 3,176,114,229, 74, 80, 74,215, 63,174,132,216,238,166,129, 56,255, 5, 0,139,197,114,231,250,245,235, -193,245,178,179,217, 16, 66,208,178,101, 75, 56,199, 16,180,219,229,216, 13,229,126,251,237, 55,171, 32, 8,229,250,156,226,121, -254,206,177, 99,199, 2,247,237,219, 39,178, 55,164,205, 88, 83, 72, 78, 78,102, 14, 29, 58,228,208,134,113, 28,135,195,135, 15, - 91,205,102,243,109,119, 11,117,229,202,149, 42,217,189,253, 22,151,240,214,207,123,190,243,107,221,170, 67,142,198,199,167,212, - 1,108,247,248, 94,110,199,226,152,249,139, 23,206,213,218,201,213, 87,103, 83,115,138,140,124,151,139, 25,133,231,170,186, 65, -243,243,243, 19,236,183, 5,245,122,253,237,234,210,209,236, 55, 8,131,131,131,207,162,196,109, 65,251,179,152,152,152,123,158, -185,165, 38, 17, 4,120,121,121, 57, 38, 7,119,237,174, 8, 33,212,126,100, 93,114, 60, 84, 70, 82, 83, 83,151, 76,155, 54,237, -153, 5, 11, 22,248,239,221,187, 87, 99,195, 68,255,254,253,211,207,159, 63,223, 1,128,180,160,160, 96,255,130, 5, 11,252,157, -226, 17,114,189,122,245, 74, 75, 75, 75, 91, 81, 65,125,222, 0,208,213,221,103, 21,201,128, 1, 3,226, 81,138,195,207,251,145, - 7,129,105, 23, 93, 78, 30,226, 19,146,108,177, 40, 5,240,183,210, 28,118, 83, 22,139, 21,186,188, 44,183, 53, 88,215,111, 38, -217, 66,131,241,224,249,100, 27, 94,177,161, 59,205, 46,116, 69, 59,208,126,249,242,229, 61, 25,134, 97,126,255,253,119,227,226, -197,139,239,100,100,100,244,161,148,222,182,245,179,206, 27, 55,110,220,226,130, 75,134,178,218,254, 2, 33,164,205,228,201,147, -223, 4,208, 30, 64, 77, 0,183, 1, 28, 5,240,113, 53,243, 56,190,236, 17,197,174,180, 60, 42, 55, 19,247,239,223, 63,187,111, -223,190, 92,120,120,248,123,225,225,225, 76,118,118, 54,244,122, 61, 24,134, 65, 80, 80, 16, 26, 53,106,132,160,160, 32,225,226, -197,139, 11, 38, 79,158, 92,161, 79,189,134, 13, 27,214,177, 88, 44,117, 25,134,169, 3,160, 14,165,180, 14, 33,164, 14, 0, 31, -155, 38, 76, 19, 17, 17,193,181,110,221, 26,173, 90,181,194,161, 67,135,176,115,231,206,207, 41,165, 63, 59,107,175,170, 98,238, -173,246, 26,172,236,236,236,238, 61,123,246,220,199,178,108,173,210, 22,172, 82,130, 50, 39,164,165,165, 61, 91,238,228,149,157, -221,253,173,183,222,218,199,178,108, 45,187,102,202,106,181, 26,117, 58,221,235,157, 59,119, 94, 37, 18,137,164,206,184,130, 32, -220, 74, 75, 75,123,168,177,244, 74,250,193,234,222,179,111,230,253, 98,170,196, 76,221,203, 63,174, 69, 90,122, 38,190, 58,155, -154,157,111,226, 59, 95,201, 40, 56,255, 32,242,159,144,144,208,163,186,118, 54, 27,145, 42,245,232,175,188,103, 46, 74,134, 11, -142, 68, 51, 42,200, 31,177,145, 44, 82, 69,229, 61, 79, 8,105, 59,118,236,216,233, 10,133,162, 37, 0, 20, 22, 22,254,158,156, -156, 60,215,126, 75,176,162,231, 30, 41, 91, 44, 22, 75, 98,163, 39,162,236,117,125,151,107, 6,231,215, 86,171, 53,209, 29,188, -210,112,156,223,243, 60,159, 88,129, 22,121, 66,171, 86,173,216, 9, 19, 38,164,237,221,187,215, 30,224,182,208,169, 95, 92, 65, - 57,206, 68, 93,236, 91, 70, 0,139,109,201, 35,213,112,174,115,231,253,191, 37,223,125,247,221,244,193,131, 7,111,244,241,241, -249,162, 78,157, 58, 81,129,129,129, 26,185, 92, 14,163,209,152,111, 50,153, 46, 95,185,114,101,200,180,105,211,110,184,130,181, -113,227, 70, 22,128, 88, 16, 4, 25,195, 48, 74, 0, 26, 66,136,183,157, 96, 17, 66, 96, 54,155,145,144,144,128,169, 83,167,242, - 7, 14, 28,248, 0,192, 76, 55,178,219, 2,128,191,211, 60,238, 15,192,132, 98,199,179, 25, 0, 78, 63, 50, 4,203,230,173,186, - 77, 21,119,186,242, 48,195,171, 75,165, 12, 53, 46,222,138, 53,139,239,138, 67,104, 39, 95,165,190,175,224,160, 47,215, 96, 29, -251,241,207,113, 75,140, 86, 42,152,173,194,136, 43,233, 5, 23,254,195, 19,143,181, 50,207, 92,192,125,186,138,242, 71,170,184, -188,241, 0,134, 86,246,185, 71,202, 97,203, 25, 25,205,171, 35,158,201,100,122,171,109,219,182, 31,241, 60,191,212, 98,177, 28, -245,180,148, 71,170,179,124,245,213, 87, 55,236,235,242,192,129, 3, 89, 0,216,177, 99,135,219,183,123,135, 13, 27,198,219, 2, -140, 23, 1, 40, 0,144,135, 98, 71,217, 4, 0, 10, 10, 10,178,147,147,147, 47,242, 60,127, 17,192,150, 74,220,160,245, 39,132, -252, 72, 41,237,109, 35,108, 63, 82, 74,123, 59,127,246,200, 16,172,255,170,236,136,251,103,129, 45, 73,156, 42,122, 95,150, 92, - 78,213, 31,190,223, 29,171, 71, 60,226,145, 71,102, 19,113, 27, 64, 31, 79, 77,120,228,145, 91,255, 42, 65,172,236,114,225,194, -133, 7,102, 10,240,168, 10,227,169, 2,143,120,196, 35, 30,241,136, 71, 60,226,145,170, 21, 2,160, 91, 25,187, 48,119,110, 7, -116,171,196, 46,111,191, 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 22,102, 37,165, 87, 5, 71,132,187,171, 29,195, -114, 54,226,172,234, 4,160,155, 7,211,131,233,193,244, 96,122, 48, 61,152, 30, 76, 15,230,125,166, 46, 83,166, 76,121, 23,197, -241,137,233,148, 41, 83,222,165,148,246, 42,166, 49,180,215, 67,206,139, 75,201, 99,131,229, 17,143,120,196, 35, 30,241,136, 71, -170,187, 28, 95,184,112, 97,225,194,133, 11,237, 6,237, 25, 0,136, 77,123,149, 81, 29, 51,252,175, 17, 44, 66, 72, 8,195,137, - 95, 22,137,165, 93, 64,133, 70, 0, 0,134,141,227, 77, 69,191, 90,173,230, 47, 40,165,201, 46, 96,148,122,227, 43, 10,120, 34, - 82, 43,255,222,200,243,226,219,249,166,129,151,139, 29,209,149,166,189, 43,215,225,219, 64, 66,218,201, 36,146, 95, 36, 90,109, -169,222, 5, 77, 57, 57,134, 34,147,233,153, 29,148, 30,243,244,125,143,120,196, 35, 30,241,200,163, 32,132, 16,165,183,183,247, - 1,134, 97,194,157, 62, 67,105,175, 1,128,231,249, 20,157, 78,247, 12,165, 52,243, 97, 98,150, 92,114, 81,198, 90, 94, 93,133, -179, 21,220, 78, 52, 42,140, 96,221, 32, 88,213, 33,170, 78,248,151,201,169,105,103,243,138, 76, 35, 47, 39,229,235,220,254, 81, -177,236, 53,173, 95,208,252,255, 27,254,150,111,100,253, 40, 18, 22, 86, 3,160,192,237, 59,137,129,215,175, 93,237,186,125,211, -199,227,197, 50,217, 84,115, 81,209,103,238, 98, 71, 2,202, 8,149,244,200,103, 83, 94,210,114,176,226,197,121, 95,238, 21,244, -230,154, 87,139,175,141,186, 44, 3, 9,105,231,237,227,243,243,226,125,251,228,234,102,205, 74, 18, 51, 8,130, 0,253,217,179, -242, 41, 61,122,252, 60,144,144,238, 30,146,245, 88, 78, 66, 65, 26,141,102,156, 72, 36,234,108, 54,155,195, 37, 18,201, 29,158, -231, 15,103,103,103, 47,167,148, 38,121,106,200, 35, 30,169,112, 12,149, 25, 96,252,223, 12, 62, 14, 0,106,181,250, 15,134, 97, - 66,157, 23,127,187,127,198,146,126, 30,157,252, 61,222,200,202,202,106, 91, 78,121,235,248,248,248,172, 2,208,162, 34, 71,199, -182,253,253,105,157, 78,247,186,205, 93, 75,105,120,106,111,111,239,217,132,144,129, 12,195, 84, 24,240, 87, 16, 4,158, 82,186, - 35, 59, 59,123, 38,165, 52,191,172,239,121,123,123,239,191,116,233, 82,139,128,128,128, 10,221,210, 88,173, 86,220,190,125,219, -191,101,203,150,191, 1,104,240, 32, 49,221,225, 34,143, 12,193,178, 53,182, 75, 17,172, 5, 1, 47,111,152,255,122,141,148, 91, -215,106,140, 90,176,181,126, 3, 63, 69,231, 75,153,133,169,174,254,160, 68,174,254,161,253, 83,189,187,140,121,115,130,242,207, -243,151,241,203,161, 19,200, 43, 48,130,101, 24,104,213, 10,212,175, 95,151, 44, 91,251,181,223,231,159, 46, 91, 42, 87,105,123, - 25,244, 57,207,187, 83, 32, 47, 5,247,222,164,126, 45,149,190, 62, 60, 32,240,120,167,103, 83,229,123, 63,158,125, 15,133,214, -247,220, 38, 87,251,247, 43,210,211,210,240,129,175, 47, 56,139, 5, 50, 66, 32, 39, 4, 50, 0, 42,169, 20, 29,190,252, 18,243, -119,239, 86, 76,237,213,203, 67,178, 30, 51, 81,171,213,195,235,215,175,191,120,221,186,117,190,181,107,215,134, 82,169,132, 78, -167,243,187,114,229, 74,179,183,223,126,123,168,151,151,215,180,220,220,220, 53,158,154,242,136, 71,202, 36, 27,205, 0,148, 26, -188,189,188,103, 15, 75, 24,134, 9, 77, 74, 74, 10, 80, 40, 20,224,121,222,230,189, 95,112,108,160,157, 15, 56,108, 14,102,209, -160, 65, 3,115, 5,243,198,202,244,244,244,110,206, 33,203,202, 59, 40, 73, 74, 74,234,214,176, 97,195,149, 0,158, 41,131,180, -204,126,243,205, 55,199, 53,110,220,216,174,245,177, 69, 45, 40,254,155,153,153,137,177, 99,199, 58,126, 67, 16, 4,236,219,183, -239,205,225,195,135, 3,192,219,229,148, 61, 60, 32, 32,128,140, 26, 85,190,175,161, 89,179,102, 97,214,172, 89,248,248,227,143, -137, 72, 36,210, 86, 80,159, 85,130,233, 42, 23,121,164, 8,150,203,157,146, 10,123,230, 45, 95, 55,114,206,176,246,100,195,219, -221, 34, 71,127,188,255, 68,195, 16,121,199, 11,201,134, 59, 46,104,174, 70,180,238,248,108,231,177,227, 38, 41,183,126,119, 16, - 87, 46,158,195,165,163,219,238,250, 78,243,103,134, 35, 53, 51, 31,195,199,188,163, 34, 44,215, 89, 44, 83,140, 48, 23, 21,110, -112, 37,111, 81, 64, 96,184, 84,242,191, 54,173, 26,137, 80, 51, 17,160, 64,251,152,122,162,176,159,255,254, 95, 62,172, 31, 95, - 6, 42,140, 37, 88,146, 92,109,125,225, 5,244, 48, 24, 16,136, 98,159, 22,246, 84, 8,224,114,223,190,104,240,237,183,152,253, -253,247,138,153,125,250,184, 77,178, 20, 10,197,231, 6,131, 97, 81, 37, 28,174,253,155,147,102,125,181, 90, 61, 53, 47, 47,239, -229,106,148,167, 96, 0, 25,165,196, 47, 20, 3,208, 82, 74,221,138,248, 43,147,201, 94,123,241,197, 23,151,173, 88,177, 66,145, -150,150,134,228,228,100,240, 60, 15,153, 76,134,200,200, 72,178,127,255,126,223, 73,147, 38, 45,209,104, 52,210,188,188,188,143, -220,200, 39, 35, 18,137,134,249,248,248,244, 13, 12, 12, 12,200,200,200,200,200,206,206,222,101, 52, 26, 55, 84,118, 39,111,195, - 28, 18, 17, 17,209, 55, 36, 36, 36, 48, 41, 41, 41, 51, 49, 49,241, 7,163,209,248, 57,165, 84,184,207, 58,109, 2,192,215,246, - 81, 74, 68, 68, 68,220,205,155, 55,211,171, 16, 51, 57, 34, 34,226,130,187,152,132, 16, 37,128,237, 0, 66, 42,248,106, 50,128, - 65, 54, 7,199, 30,249, 23,200,149, 45,244,212, 93, 68,170,188,103, 15, 91,228,114, 57,182,109,219, 6,145, 72, 4,145, 72,132, -236,236,108,132,134,134, 58,222,139,197, 98,199,235,154, 53,107, 86,136,199,243,124, 75,150,101,161,215,235,193,243,188, 35,229, -228,228,128, 82, 10,169, 84, 10,158, 47, 14,187,228,244,188,101, 57,245, 56, 48, 36, 36, 4, 91,183,110,133,201,100,186,231,185, - 70,163,193,249,243,255, 4, 5, 97, 89, 22,173, 90,181, 98, 8, 33, 3,203, 35, 88,118, 77, 81,108,108, 44, 88,150,117,132,190, -179,191,182, 39,158,231, 49,107,214, 44, 56,135, 16,123,152,152,143,252, 56,176, 21,146,150, 22, 38,164, 65,144,234,245,238, 93, - 90,127, 32,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,158,105, 18,140, 54,181, 21,200,208,229, 97,212,154, 83,121, - 73, 73,198, 86,231,179,242,175,148, 83,249, 33,106,109,192, 95,159,110,254,206,239,151, 19,151, 16,119,238, 44,206,238, 93, 85, -234,119,187,189, 56, 5, 13,155,180,192,147,245,130, 48,113,244,128,204,172,244,228,166,165,217,100,149,180,193,106,171, 22,111, - 94, 49,164,203,139, 77,154,105, 25,116,178,173, 87,251,173, 56,115, 34,149,127,235,135, 63,183,158,200, 55, 15, 45,193,148,239, -217, 90, 12,149, 74, 11, 63, 57,113, 66,158,158,158,142,173, 47,188,128, 24,131, 1,153, 34, 17,158,176, 88, 28, 36, 43, 7, 64, - 22,199, 33,200,106, 69,145, 70,131,160,175,191, 6,207, 48,152,210,163,135, 97,179,201,164,112,181,242, 85, 42, 85, 6,203,178, -124, 94, 94, 94,231, 71,129,100,217,200,213, 33, 66,136, 56, 55, 55,215,167, 26,228,135, 1, 48,103,228,200,145, 35,142, 28, 57, -114,253,250,245,235,221,108,158,132, 65, 8,225,234,214,173,123,176, 67,135, 14,117,214,175, 95,255, 25,128, 57,174, 16, 14, 66, - 72,141,218,181,107,255, 25, 23, 23,231,119,245,234, 85,232,245,122,136, 68, 34, 12, 25, 50, 4, 95,127,253, 53,196, 98, 49,164, - 82, 41,196, 98, 49, 58,118,236,152,121,243,230,205, 22,148,210, 91, 46,224,178, 94, 94, 94,159,175, 90,181,170, 94,159, 62,125, - 56,163,209, 8,158,231,177, 99,199, 14,203,204,153, 51, 19,178,178,178, 94,113,151,100, 17, 66,152,224,224,224, 13,159,125,246, - 89,253,167,158,122,138, 51, 24, 12, 16, 4, 1,187,119,239,182,188,247,222,123, 55, 82, 82, 82,134, 82, 74,249, 74,212,107, 51, -133, 66,209,240,245,215, 95,207,232,211,167,143, 25, 0, 78,159, 62,205,156, 59,119, 78, 83,187,118,237, 91,211,167, 79, 63, 91, - 9,204, 24,181, 90, 29, 53,106,212,168,204,222,189,123, 91,196, 98,177,112,236,216, 49,238,202,149, 43,154,136,136,136,248,247, -222,123,239,156, 27, 88,123,142, 31, 63,222, 41, 52, 52, 84,176, 77,234,212, 62,193, 51, 12, 67,109,127,113,249,242,101,174, 83, -167, 78,135, 40,165,207,195, 35, 15,115, 92,114, 0, 44,148, 82,232,116, 58,156, 60,121, 18,189,122,245, 2,128,104,219, 87,206, - 82, 74,145,151,151, 7,131,193,128,224,224, 96, 0, 16, 61,236,227, 66,173, 86,155,150,145,145, 17,240,253,247,223, 67, 36, 18, - 97,223,190,125, 88,189,122, 53,182,109,219, 86, 42,201, 10, 14, 14, 70,100,100,100, 98,114,114,114, 88, 57,115,122,174, 94,175, -215,228,230,230,130,231,121,156, 60,121, 18,235,214,173, 67, 64, 64, 0,252,252,252,224,239,239,143,150, 45, 91, 66,169, 84, 58, - 72, 86,135, 14, 29,242,244,122,189, 87,105,120,190,190,190,201, 19, 38, 76, 8, 62,115,230, 12, 44, 22, 75,169, 4,107,220,184, -113,206, 90, 36, 40, 20, 10,180,105,211, 38, 37, 43, 43,171,204, 13,136,191,191,127, 74, 70, 70, 70,208,185,115,231,238, 34, 63, -165, 17, 34,150,101,161, 86,171, 81,171, 86,173,180,148,148,148,160, 7,137, 89, 22, 23,121,228, 53, 88,182,137,170,243, 93, 26, -161,136,160,169,139,199, 13,148,131, 55,131, 90, 12,128,185, 16, 48,235, 33,152, 10, 65,196,114,192, 98,128,191, 84,135,237, 99, -162, 52,147,183,198, 95,124,194, 95,211,235, 98, 70,222, 79,165,106,190, 56,241,144,129,195,222,244, 77, 76,207, 67, 82, 90, 46, - 88,230, 31, 31,167,209,221,134,129, 99, 25,156,250,185, 88, 81,197,176, 44,114, 11,140,200,209,155, 49, 96,216, 56,159,207,150, -205, 24, 2, 96, 81,121, 5,105, 4, 68, 54, 82,169,250, 53,110, 20,206,160, 94, 10, 72,157, 93,197, 36,234,200,115,104,150, 29, -192, 54,248, 69,210, 79,159,111, 94, 16, 7, 92, 45, 15, 71,162,213,202,213,205,154, 97,177,175, 47,122, 26, 12,184,206,113,120, - 81,167,195,111,227,198,129,219,176, 1, 28, 0,227,136, 17,104,183,124, 57,206,251,248, 32, 36, 47, 15,230, 17, 35, 32, 57,115, - 6, 98, 47, 47,185, 59,149, 47, 22,139,205,235,214,173, 11,121,245,213, 87, 15, 17, 66,170, 53,201, 34,132,212,247,241,241, 57, -244,254,251,239, 7, 78,159, 62, 61,165,138, 48, 3,149, 74,229,142,130,130,130,113,238,238, 96,109,228,106,222,154, 53,107, 70, -199,198,198,106, 95,125,245, 85,122,253,250,117, 45, 0,187, 54,196,191, 67,135, 14,117,215,173, 91, 23,212,162, 69,139, 55, 71, -141, 26, 37, 38,132, 76,171,136,100,169, 84,170, 49,235,214,173,243,203,204,204,116,144, 43,145, 72,132,196,196, 68,200,229,114, - 71,176,115,145, 72,132,247,223,127,223,119,204,152, 49,227, 0,140,171, 40,191, 82,169,116,216,170, 85,171,234,117,239,222,157, - 75, 72, 72, 0,195, 48,144, 74,165,120,233,165,151, 68,133,133,133,225,115,230,204,137, 5,176,202,157, 58, 16,137, 68, 67,214, -174, 93, 91,191, 93,187,118,220,165, 75,151,208,166, 77, 27,156, 58,117, 10, 47,188,240,130, 40, 63, 63,191,214,164, 73,147, 70, - 2, 88,235,174,150, 73,161, 80, 52,254,245,215, 95,239,132,133,133, 57, 54, 32,181,106,213,226,123,245,234,165,187,116,233, 82, -212,137, 19, 39,178,218,180,105,115,219, 13,204, 26, 10,133,162,193,158, 61,123, 82,230,204,153,211,117,205,154, 53,125, 0,160, -101,203,150, 63,204,157, 59,247,160, 78,167,107,116,228,200, 17, 93,135, 14, 29, 18, 93,132, 12, 9, 14, 14,230,199,142, 29,171, - 42,239, 75,235,215,175,207, 1, 80,147, 16, 82,219, 22, 0,219, 35, 15, 65, 40,165, 86, 66, 72, 52, 33,228,236,238,221,187,209, -170, 85, 43,236,222,189, 27,189,122,245, 58,107,123,142,220,220, 92,156, 63,127, 30, 29, 59,118, 4,138, 3,188,255, 43,182, 88, - 60,207,131,227, 56, 36, 38, 38, 98,253,250,245, 88,176, 96, 1, 34, 35, 35, 97,177, 88, 28, 99,159,227, 56,136, 68, 34,187,182, -197,165, 69,223,106,181,226,244,233,211,248, 98,243,102, 76,155, 58, 21,106,181, 26, 0, 96, 54,155,161,203,206,134, 76, 38,115, -104,176, 42,168,203, 29,215,174, 93, 27, 23, 26, 26,122,215,209,160,253,175,109,206,130, 32, 8,176, 90,173, 40, 42, 42,194,178, -101,203,172,148,210, 29, 21,140, 73,135,198,107,220,184,113, 48, 26,255,137, 15,222,164, 73, 19, 0, 64, 68, 68, 4,154, 54,109, -234,120,207, 48, 12,117, 21,243,179,182,141, 97,112,250,118,212,172, 37, 0,128,208,208, 80, 68, 69, 69,217, 73,117,169,152,165, -113,145, 71,154, 96,149,197, 20, 47,222, 76, 93,244,234,164, 37, 75,148, 50, 86,244, 86,223, 39, 81, 83, 43, 6,228, 62, 16,119, -156, 12,162, 13, 47,238, 0,186, 27,192, 47,147,177,180,159,142,137,221, 82,244, 93, 93, 31, 31,255,235, 58,221, 61,198,117, 34, -177,172, 75,157,122,245,201,237, 20, 29, 56,142,131,210,203, 15,109,251,190, 13,150,101,160,210,250,129,240,134,127,212,156, 12, - 11,142,229,160,203, 55, 32,162,118, 61, 70, 42,147,119,169,136, 96,121,121,137, 86, 78, 28,220, 86,198,200, 50,129, 16,137,211, - 84, 44, 1,227,155,143, 9, 61, 34,229,177, 63,252,189, 18,185,150,174, 46, 85,140, 93, 99,101,181,226,183,113,227,208,117,237, - 90,252, 14, 64, 4, 32,102,237, 90, 92,142,141, 69,128,197, 2, 41, 0,214,104,132,181,196,153,189,139, 11, 15,250,246,237,139, -204,204,204,192,169, 83,167, 86,154,100,201,229,242, 47, 8, 33, 61, 69, 34,145,153, 16, 2,134, 97, 28,193,185,237,175,205,102, -179,152,101,217, 61,153,153,153,110, 31,237, 17, 66,234,123,123,123, 31, 58,126,252,120,160, 82,169,196,172, 89,179,170,132, 92, -169,213,234,223, 71,142, 28, 89,243,139, 47,190,248,137, 16,210,195, 85,146, 85,146, 92,173, 93,187, 54,103,253,250,245,159, 57, - 31, 5, 82, 74, 83, 8, 33, 27, 90,180,104,241,122,108,108,172, 22,192,232, 81,163, 70,161, 34,146, 37,149, 74, 59,215,169, 83, - 7, 58,157,206, 49,193, 74,165, 82, 0,128, 82,169,132,151,151, 23,196, 98, 49,140, 70, 35,162,163,163,137, 68, 34,105,239, 74, -158,213,106,117,207,126,253,250,113,199,142, 29, 67,106,106, 42,188,188,188,160, 84, 42,193,243, 60, 94,123,237, 53,241,242,229, -203,159,117,151, 96,133,133,133,245,233,218,181, 43, 23, 23, 23,135,155, 55,111,194,104, 52,226,202,149, 43,208,104, 52,120,229, -149, 87,196,139, 23, 47,126,206, 93,130, 5,160,113,108,108,108,154, 51,185,178,139, 82,169, 36,245,235,215,215,249,250,250,198, - 0,184,237, 14,230, 27,111,188,145,190,112,225,194,142,251,247,239,159,108,255,112,255,254,253,147, 0,224,163,143, 62, 58,226, -239,239, 31, 3,192, 85,130, 5, 74,169,240,127,255,247,127,183, 36, 18, 9, 68, 34, 17, 36, 18,201, 93, 73, 44, 22,131, 97, 24, -181,125, 74,121,140,181, 69, 45, 0,124,136,226, 27, 86, 83, 41,165, 39,171, 9,201,250,147, 16, 18,221,171, 87, 47, 7,201,218, -187,119, 47,122,244,232,129,156,156, 28,196,197,197, 57,147,171,127,203, 6, 11,130, 32, 64, 36, 18, 97,201,146, 37, 48,155,205, -216,178,101, 11,118,238,220,121,215, 28,170,209,104,240,241,199, 31,187,117,156,197,243, 60, 54,110,220,136,201,147, 38, 57,200, -149,109, 83,141,160,192, 64,248,250,249, 33, 62, 62,190, 66,130,149,157,157, 61,115,215,174, 93, 40,207,200,125,215,174, 93,142, -215,206, 70,238,174,228,147,101, 89, 24,141, 70, 60,253,244, 63,161, 92,223,120,227, 13,199,107,157, 78, 7,150,101,237,117, 65, - 92,197, 52, 80,160,175,236,159,207,122, 78,152,224,120,157,153,153, 89, 38,230,227,160,181, 42, 85,131, 85,154, 92, 77, 47, 88, -193,145,148,166, 11,199, 62, 51,172,102,128, 23,168, 62, 13,226,167,102,226,175, 12, 57,150, 44,219, 3, 0,120,231,165,230,104, -210,109, 30, 76,159, 63,131,113,109, 88,201,203,137,198,137, 0,166,223, 59,224,132, 6,161, 53, 66,240,215,245,243,224, 88, 22, - 18, 47, 63,120,249, 4, 66,176,154,144,155,126, 19,135,190, 89, 9, 0, 88,179,113, 7, 24,134, 1,199,177, 48,154,120, 68,214, - 12,129, 32, 8, 13,202,203,231, 19, 64,219,206,129,126,173, 34, 34,124, 8, 26,230,224,158, 8, 64,205,164,136, 76, 86,145, 54, - 42,121,203,236,220,188,182, 23,129,227, 21, 85,140,204,134, 18, 12, 64,188, 97, 3,126, 7,208,122,109,241, 90,117, 37, 54, 22, -170, 13, 27,160,180,125, 71, 74, 8,242,120,190, 82, 3, 28, 0,162,162,162,176,102,205,154,192, 49, 99,198, 84,138,100, 21, 21, - 21,205,215,104, 52, 93, 55,108,216, 16,216,175, 95,191,123,158, 95,191,126, 29, 29, 59,118, 76, 75, 77, 77,157,127, 63,228, 74, -171,213,226,206,157, 59,247,125,110,110, 39, 87,251,246,237, 11, 15, 13, 13, 69,116,116,180,255, 59,239,188,227, 14,201,154,238, - 76,174, 70,141, 26,245, 55,128, 0, 66, 72, 73,130, 66,108,207,158,116, 34, 89,185, 0, 22,151,179,243, 12, 87, 42,149, 72, 79, - 79,199,176, 97,195,112,245,234, 63, 10,207,144,144, 16,199,206, 46, 62, 62, 30,254,254,254, 32,132, 4,184, 82,102,127,127,255, - 64,147,201,132, 17, 35, 70,224,206,157,127,204, 21,107,212,168, 97,175, 83, 63,119,235, 49, 48, 48, 48,208, 96, 48,160, 67,135, - 14, 40, 42, 42, 2, 0, 12, 26, 52, 8, 34,145, 8,233,233,233, 16,137, 68,126,149,104, 30,191, 94,189,122,149,233, 34, 69,163, -209,152,189,189,189,159,112, 19,211,247,185,231,158, 75, 90,187,118,237, 61, 71,117,167, 78,157,122,222,199,199,103,191,143,143, - 79,125, 55, 49, 5,103, 50, 37, 22,139,239, 34, 88, 34,145, 8, 12,195, 8,120,252,229, 3, 0,246, 91,109,171, 1, 52,173, 70, -154, 44, 7,201,218,187,119, 47, 26, 53,106,132,236,236,108, 92,186,116,233, 95, 39, 87, 78,132, 4, 28,199, 57, 54,199, 50,153, - 12,209,209,209, 14,114, 69, 8, 65, 97, 97, 33, 56,142,179,207,215, 46, 77,126, 57, 57, 57, 8, 14, 10,130, 90,173, 70,189,200, - 72, 92,179,205, 35,246,215, 82,169, 20,132, 16, 88,173,214,138,234, 48, 31,197,182, 84,111, 87,117,243,216,201, 80,185,170,226, -144, 16, 8,130, 96,159,243,105, 85, 96,250,249,249, 65,175,215,187,138,249,232, 19, 44, 66, 72, 39, 0,135,224,116, 53,146, 16, -194, 60, 17,168, 90,191,112, 76,215, 97,207, 52,242,131, 33,227, 38,100,106, 63, 16,109, 4,150, 44,219,131,184, 27, 89, 0,128, - 37, 95,254,129,173,115,122, 2,114, 31, 68,121,101, 34, 72,205,245, 43,141, 96, 17, 80, 34, 80, 10,142, 45, 62,143,229, 56, 22, - 44,203, 64,151,145,130,229, 51, 71,219,200,213, 78,236, 62,114, 9,161,117, 26, 57,206,105, 65, 8, 64,203,239,212,254, 94,226, - 53, 99,250,183,150, 19,109, 14,160, 21,221,251, 5,111, 49, 72, 4,131,177,157, 67, 21,167,119, 21,173,185,152,107,110, 88,161, - 86,136, 16,135, 65, 59, 7, 64,236,244, 76,108,211,100, 49,246,173,177,237,214, 73, 37,136,134, 67,197, 27, 24, 24,136, 5, 11, - 22, 4, 78,153, 50,101, 11,220, 12, 12, 77, 41,189, 66, 8,233,252,218,107,175, 29,202,202,202, 10,140,138,138,130, 74,165,130, - 74,165, 66, 90, 90, 26, 6, 12, 24,144,150,154,154, 90, 89,237,216,230,145, 35, 71, 6,138,197, 98, 92,191,126, 29, 62, 62, 62, - 14, 98, 88, 89,114,165,209,104,126,223,191,127,127,120,221,186,117,113,249,242,101, 60,241,196, 19,216,190,125,187,255,139, 47, -190,232, 18,201,146,203,229,125,109,132, 9,177,177,177,218,216,216,216, 78, 0, 58, 85,244,219,177,177,177,218,183,223,126,251, -185,242, 8,150, 72, 36,186,163,211,233,130,228,114, 57,190,249,230, 27,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161, - 80,128, 82, 10,139,197, 98,159, 36,178, 92, 41,119, 70, 70, 70, 26,207,243, 97, 63,253,244, 19, 50, 50,254,241,137, 23, 30, 30, - 14,155,189, 70,166,187,117,153,156,156,156, 70, 8, 9,251,235,175,191,144,144,144,128, 30, 61,122,224,187,239,190, 67,243,230, -205, 1, 0, 38,147,169, 50,206,247,120,150,101,105, 57,237, 71, 0,120, 87, 37,166,109,209,114, 11, 83, 16, 4,193, 78,174,156, -255, 58,147,174, 10,126,243,113, 17, 47,231,253, 65,117,205,100,143, 30, 61,160,211,233,160, 82,169, 42, 92,128, 31, 54,193, 18, -137, 68,152, 61,123, 54, 70,143, 30,141,192,192, 64, 76,158, 60, 25, 28,199, 57,146,243, 73,128, 59, 18, 16, 24, 88,238,115,187, - 13, 86, 5,243,165,218,203,203,107, 54,195, 48, 3, 89, 23, 42,142,231,121, 94, 16,132, 29,185,185,185,229,186,105,176, 27,164, -187,210, 22,206,117, 80, 65, 94,239, 27,179, 52, 46,242, 40,139,189,116,135,108,170,185, 67,206,228,234,253,209, 93,134, 61,211, -200, 27, 63, 28, 56, 9,177, 57, 7, 48,229,151,211,178, 22, 16,177, 18,129, 94,162,208, 82, 43,159, 97, 47, 39, 38, 37,195,215, - 91,101, 35, 87,182,196, 48,104,210,168,120,243,186,251,200, 37,132,214,110, 4,142,101,193,177, 44, 84,114, 41,210, 82, 83,192, -113,204,229,178,126,182, 49,139,254,253,235,135, 69, 4, 6, 72,128,198,229, 12,128, 24, 53, 66,131, 37,232,238, 43, 11,111,204, -162,127, 5,132, 5, 82, 27,193,202, 7, 96, 26, 49, 2,209,107,215,226, 74,108, 44,110,198,198,162,214,218,181,192,136, 17, 16, -240,207,173, 66,190, 18, 26, 44,123, 71,180, 19,161,233,211,167,167,101,101,101, 13,169,228,110,241, 74,118,118,118,231,169, 83, -167,166,101,102,102, 66,161, 80, 32, 37, 37,229,190,200, 21, 0, 24, 12,134, 87,214,174, 93,155,118,232,208, 33,168, 84, 42,168, -213,234, 74, 19, 44,187,230,106,230,204,153, 53,195,194,194, 16, 31, 31, 15, 47, 47, 47,248,250,250,162, 73,147, 38, 56,118,236, -152,127, 88, 88,216, 79,182, 91, 70,229,229,233,251,181,107,215,230, 0,192,218,181,107,115, 8, 33,135, 9, 33,159, 18, 66, 86, -151, 72,159, 18, 66, 14, 59,127,215, 96, 48,124, 91, 30,182,201,100, 58,124,233,210, 37,170, 80, 40,192,178, 44,204,102, 51,100, - 50,153,163,189,236,134,185, 0, 96, 51, 60, 61,234, 74,217,243,243,243,247,126,254,249,231,150,176,176, 48, 60,249,228,147,136, -137,137, 65,155, 54,109, 16, 30, 30,142,217,179,103,155, 10, 10, 10,246, 86,130, 96,237,222,190,125,187, 37, 44, 44, 12, 49, 49, - 49,144, 74,165,104,210,164, 9, 66, 66, 66,176, 96,193, 2, 83,110,110,238,222, 74, 52,211,237,243,231,207,179,229,144, 91, 13, - 92,184,141, 91, 66,238,156, 62,125,154,109,221,186,245, 15, 37, 31,180,108,217,242, 7,149, 74,229, 5,192, 93,187, 62,234, 76, -170,164, 82,169, 35,217, 63,231, 56,238,191,160,193, 26, 7,224,111, 0,241, 0, 38, 87,167,140, 57,223, 22,204,202,202,194,165, - 75,151,112,230,204, 25,180,110,221, 26, 71,143, 30, 5,138,221, 52, 52,251, 23,243, 7, 74, 41, 68, 34, 17,162,162,162,240,246, -219,111, 99,207,158, 61,184,114,229, 10, 44, 22,139,131, 0,217,109, 46,221,209, 96,137,197, 98, 4, 6, 6,194, 98,177, 56,180, - 87, 0,112,237,234, 85,112, 28, 7, 65, 16, 96, 50,153, 42,212, 96,121,121,121,205, 94,183,110,221,155,153,153,153,193, 25, 25, - 25, 1,206, 41, 45, 45, 45, 32, 37, 37, 37, 32, 41, 41, 41,224,206,157, 59, 1,183,110,221, 10,184,121,243,102,240,162, 69,139, -222,244,242,242,154,237,234, 26,212,164, 73, 19,188,241,198, 27,142,180, 98,197, 10, 71, 58,116,232,208, 63,202, 14, 55,214,181, -168, 89, 75,208, 51,131, 58,210, 30,127,226, 72,113,239,140, 42, 15,243, 46, 46,242, 88,104,176,156,217, 39, 0, 52, 8, 82,204, -123,255,181,142,195,158,126,194, 11,223, 31,248, 3,115,190,189,113, 57,114,152,127, 84, 93,239, 12, 8, 25,151,240,206, 75,205, -177,228,203, 63, 0, 20, 31, 17, 10,233,113,160,217,241,160,234, 48,220,212,101,150,122,188, 96, 53, 21, 29,188,113,253,106,151, -168,198, 45,152,212, 76,253, 93, 55, 12,162, 59, 15, 0, 33, 4, 53,106, 55, 2,203,113, 96, 89, 6, 28,203, 66,171,145,225,210, - 95,127, 9, 70,131,225, 96,105,152,209, 0,231, 43,151,124,242, 82,247, 38, 50, 4,235, 1,185,244,159,217,247,198,128, 18, 43, - 3, 7, 52, 86, 99,120,146,175,252, 96, 90,209, 39,162, 2,243, 15, 0, 44,101,237,106,212, 82, 41, 10, 1,100,138, 68,104,179, -124, 57,174,198,198, 66,189, 97, 3, 88, 20, 91, 81,251, 47, 95,142,252,205,155,193, 88,173,160, 50,217,125,105,176,210,210,210, - 48,104,208,160,251, 34, 66,206,154,172, 49, 99,198, 28, 90,176, 96, 65,224,244,233,211,171, 12,115,242,228,201,135,190,252,242, -203,192, 90,181,106, 85,186,179,169, 84,170, 73,130, 32,104, 23, 47, 94,156,186,116,233, 82,148,180, 23,179, 17, 28,169, 86,171, - 93, 2,160, 75, 57, 80,115, 70,141, 26, 37, 6, 48,218,166,201,122,114,212,168, 81,199, 41,165,211, 74,212,239,172, 53,107,214, - 12,114, 58, 74,252, 20,192,242,242,242,152,151,151,183,250,237,183,223, 30,241,219,111,191,249,201,100, 50, 16, 66, 32, 22,139, - 81,175, 94, 61,155,230,181,216,224,149, 82,138, 9, 19, 38,100,166,167,167,187,228,166,193,104, 52,110,156, 51,103, 78, 23,131, -193, 16, 62,124,248,112,177,183,183, 55,210,210,210,240,225,135, 31,154, 54,110,220,120,167,160,160,192, 93, 91, 41, 88, 44,150, -141, 51,102,204,232,172,215,235,107,191,250,234,171,226,220,220, 92, 24, 12, 6, 76,156, 56,209,180, 97,195,134, 68,131,193,224, -182,163,222, 54,109,218, 92,191,117,235, 86,251,194,194,194,108,133, 66, 81, 82,187, 71,148, 74,101, 11, 0,155,221,193,140,142, -142,142,191,125,251,118,235,121,243,230, 29,182, 88, 44,162, 83,167, 78,245,177,147,171, 79, 62,249,228,144, 76, 38,235, 10,247, -141,241, 5,169, 84,122,151,198,170,228,107,142,227, 30,123, 13, 22,165,244, 16,138, 93, 95, 84, 43, 41, 73,174,226,226,226,208, -165, 75,241,144, 62,122,244, 40,218,181,107,135,163, 71,143,162,125,251,246,255,170,155, 6, 59,193,226, 56, 14, 47,190,248, 34, -186,117,235,134,154, 53,107, 58,198,185,179,145,187, 59, 36,195,106,181,162,113,227,198, 48,154, 76, 16,139,197,142, 35, 72,142, -227,224, 31, 16,128,235,215,175,187,164,193, 98, 24,102, 96,223,190,125,153, 11, 23, 46, 96,240,224,193,248,226,139, 47,202,252, -238,203, 47,191,140,109,219,182,161,111,223,190,204,187,239,190, 91,174,155, 6,187,113,185, 43,101,178,175,211, 21,105,240,170, - 10,211,153,139, 60, 54, 4,203,201,185, 23,106,251, 43,134,119,171,199,225,251,131,127, 96,206,247,183, 55,242,148,126,243,205, -217,236, 31, 39,183, 3,204, 59, 94, 66,147, 1,155,139,143, 5, 1, 8,233,113, 48,239,120, 25, 68,225,135, 35, 73, 34,228, 26, -204,187, 75,239,112,230, 47,190,219,178,242,237,214,171,218,251, 7, 7,120, 65,151,107,112,144,172,179,135,118, 2, 0,250,143, -154, 15,142, 45, 62, 58,212,168,100,144,139, 89,124,189,233,163, 76,179,185,168,212, 94, 37,136,152,209,175,182,173,231,229,229, - 69,129,134,226,187, 27,169,246,206,123,137, 86, 51,111,248,197,101,227,165,186, 42,205,242, 11, 57,163, 1,124,114,143, 6, 35, - 39,199,144,127,230,140,188,195,150, 45,184,212,175, 31,106,228,231, 35,206,219, 27,254, 86, 43, 84,118,109,213,134, 13,200,255, -226, 11,200,172, 86,192,203, 11, 89, 43, 87,194,122,254, 60,172,121,121, 6,119, 9,214,181,107,215,238, 91,203, 84, 26, 33,154, - 50,101,202,150,172,172,172, 33, 85,137,249,202, 43,175, 28, 58,112,224, 64, 96,101,113,242,243,243,199, 3, 24, 95, 5,249, 17, - 8, 33,211,108, 14,237, 70,199,198,198,106, 79,159, 62, 61,130, 16,178,138, 82,154, 98,171,219,128,145, 35, 71,190, 86,130, 92, - 85,120,139,144, 82,122, 91,165, 82,205, 29, 63,126,252,252,165, 75,151,170,236, 6,237,231,206,157,131,213,106,133, 72, 36, 2, -207,243, 24, 57,114,164, 62, 43, 43,107, 73, 89, 30,152, 75,193,181, 18, 66, 94,158, 63,127,254,200,143, 62,250,168, 55,203,178, -254, 60,207,103, 24, 12,134,159, 12, 6,195,218,202,220,162,178,213,195,208,233,211,167, 15, 93,182,108, 89, 95,134, 97, 2,172, - 86,107,102,126,126,254, 46,131,193, 80, 41,223, 90,199,143, 31,207, 88,181,106,213,141,140,140,140, 6,161,161,161,185, 42,149, -202,100, 50,153, 88,185, 92,174, 81, 42,149,209, 0, 78, 0,184,232, 14,230,153, 51,103, 82, 63,253,244,211, 4,163,209, 24,245, -233,167,159, 30,209,104, 52, 7, 8, 33, 68, 44, 22,123,203,229,242, 46, 0, 14, 3,184,230,150,234,157, 97, 4,103,109, 85, 73, -251, 43,137, 68,242, 95,177,193,170,118, 98,115,211,112,150, 82,138,204,204, 76, 92,184,112,193, 78,174,162, 1,160,125,251,246, -103,237, 36,235,204,153, 51,136,137,137, 57, 75, 8,121,232,110, 26,156, 53, 88,118, 34, 85,179,102, 77,199,123,231,228,100,131, -229,146,240, 60, 15,177, 88, 12,142,227, 16, 28, 18,226,248, 45, 74, 41,174, 95,191, 14,157, 78,231, 18,193, 98, 89,150, 37,132, - 96,240,224,193, 46,253,238,255,253,223,255,225,240,225,195, 96, 93,100,131, 44,203, 34, 34, 34,194,165,147, 22,184,104, 47,197, -178, 44, 66, 67, 67, 43,141,233,204, 69, 30, 27,130,229, 44,241,233,134,121, 47,127,120,236,221,139,169, 69,223, 92, 74, 43,124, - 27, 0,221, 17,167,248,165,137, 63,251,204, 51,245, 19, 97, 92,219, 30, 68, 83,236,116,141,234, 83, 64,148,129, 72, 20,106, 96, -214, 15,151, 83,173, 32,139,203, 88, 12,146,197, 50,197,180, 77,235, 62, 89, 58,114,204, 4, 85, 92,124, 26,114,245, 70,176, 44, -227, 60,105,130,227, 88,104,148, 50,132, 5,121,225,203,207, 62,204,207,207,203,153, 94, 86, 92,194,112,181, 56,182,107,139,186, - 82, 4, 21, 0, 69, 50,160,232,159,206, 74,255,234, 99, 91,213, 75, 40,169, 26,105,241,236,237, 2,217,119,183, 11, 98, 75, 35, - 88, 69, 38,211, 51,239, 62,251,236,207,243,126,252, 81,209,224,155,111,144,246,194, 11, 8,201,203,131, 20,184,203, 38,139,177, - 88, 0, 47, 47,100,126,241, 5, 10,121, 30, 75,135, 15, 47, 44, 50,155,187,187,169,129, 16,119,234,212,169,202,200,149, 51, 33, -130,155,118, 92,174,146,172,110,221,186, 29,162,148, 74,171,193,206,221, 78,178,204,167, 79,159,126,237,200,145, 35,241,184, 59, -224,103,206,145, 35, 71,226, 95,125,245, 85,178,126,253,250, 13, 0,102,184,234,120, 83,175,215,127,162,213,106,209,177, 99,199, - 25, 11, 23, 46,244,109,222,188, 57, 2, 2, 2,144,159,159,143, 51,103,206, 96,220,184,113,186,188,188,188,133,217,217,217, 75, -221,204, 51,111,211,212,172,173,202,122, 0,240,185, 45, 85,137,188,254,250,235,231,226,227,227,179,252,253,253, 91,137,197,226, - 39, 81,108,231,147, 10, 96,131,187, 68,200, 46,163, 71,143,254, 43, 62, 62, 62,179, 70,141, 26,173,109,152, 90, 0, 73, 0,214, - 85, 2, 51,249,143, 63,254, 8,109,209,162, 5, 35, 18,137, 40,203,178, 16,137, 68,148,227, 56,106,179,155,161, 0,176,107,215, - 46, 41, 0, 29, 60,242,176,199,166,195, 77, 67, 74, 74,138,131, 92, 57, 57, 26,141,110,223,190,253, 89, 27,185,178, 63,179,254, - 75,121,197,156, 57,115,176,102,205, 26, 84,228,129,220,118, 91,143, 84,132,103,215, 96,241, 60, 15,179,217,140,184,184, 56, 16, - 66,192,243,188,227, 88,208,238,162,193,106,181,150,123,251,156,231,121,222,100, 50,225,171,175,190,114,137,100,109,221,186, 21, - 69, 69, 69,224, 43, 96,110,206, 46, 21,154, 54,109, 10,157, 78,231,184,196, 19, 29, 29,237,248,158,217,108,118,139,176,218, 49, -163,162,162,144,153,153, 9, 63,191,226,123, 54, 97,175,196,254,163,108, 41,248,239,248,253, 37,174,186, 22,104,170,213,122, 25, - 37,150,111,159,111, 36,237, 60, 48,218, 11,181,131,212, 16,137,101, 72,206,179, 98,255,197, 60,172, 59,148,122,199, 96,225,123, - 95, 73, 47, 56, 95, 30,142, 76,233,245, 83,243,182,221,218,189,242,218, 56,165,222,200, 35, 33,225, 22, 50,210, 83,192, 16, 6, -193, 53, 66, 17, 30, 30, 1,185,132,193, 23,107,151, 22,156, 61,126,224, 88,126,158,174, 71, 89, 88,189,181,146,227,203, 94,104, -215,186, 78, 29, 53,129,213, 2,240, 22,192,106, 1, 4,219, 95,251,103,194,221,125,237,194,133, 28,250,238,159,186,223,127,204, - 49,149, 26, 83,106, 32, 33,237,188,189,189,127,158,243,253,247, 10,193,100,130,105,196, 8,200,141, 70,200, 9, 1,161, 20, 12, - 0, 34,147, 33,107,229,202, 98,114, 53,108, 88, 97, 78,110,174,219,161,114,252,253,253, 63,207,204,204,124,228, 60,185,251,250, -250, 78,173,140,187,135, 7,152,167, 0, 0, 57,118, 39,163, 37,118,210,254,118,173, 86, 37,112, 35,252,253,253,223,101, 24,166, - 13,165,212,151, 97,152,108, 65, 16, 78,164,167,167, 47,162,148, 94,247, 44,165,255, 90,123,219, 61,185, 87,116, 94,157, 14,224, - 45, 0,249,148,210, 4, 79,205, 61,244,118,106, 6,224, 44, 74,185, 45, 88,222,179,135, 37,190,190,190, 39,127,254,249,231,230, -181,107,215,102,156,205, 21,236,190,238,236,199, 88, 28, 87,172,135,248,237,183,223,172,131, 7, 15, 62,145,154,154,218,177, 44, - 76,141, 70,243,203,223,127,255,253,116,110,110,238, 61, 68,202,217,179,187,253,125, 65, 65, 1,198,140, 25,179, 47, 47, 47,175, -212, 80, 57, 90,173,118,217,210,165, 75,223,236,223,191, 63, 99,119, 43,225,156,236, 97,125,236,201,108, 54, 99,243,230,205,194, - 71, 31,125,244,113, 78, 78, 78,153, 71,132, 33, 33, 33,119,146,147,147, 67,237, 46, 19,202, 74,206, 18, 17, 17,145,146,144,144, - 16,242, 48, 49,255, 51, 4,203, 54, 40, 72, 84,128,114, 16, 5, 6, 50, 16, 26, 51,132, 72,172, 20, 87, 64,241,139,130, 43, 92, -117, 38,153,186,116, 68, 38, 86, 40,198,170, 85,222, 51,251, 15,121,195, 55,162, 78, 36, 9, 12,174, 1, 2, 6,105,169, 73,184, -117,227, 42,253,118,203,202,172,130, 60,221,236,194, 66,253,202,242,112, 26, 16, 82,183,142, 70,188, 93,194,163, 62,236,229, 40, - 17, 63,234,158, 29, 6, 0,179,136,185,124, 35,223, 50,248, 82, 57,139,164,157,100,205,216,185, 83,193, 53,108,120,143,131, 55, - 65, 16, 96, 61,127, 30, 75,135, 15,175, 20,185,242,136, 71, 60,114,223, 11,120,109, 84,236,227,202, 2, 32,241,223, 12, 42,252, - 31,111,163,106, 27,236,153, 16,162,244,241,241, 57,192,178,108,184, 93, 3,227,108, 19, 84, 74,160,231,132,180,180,180,174,148, -210,194,114, 48,235,168,213,234,149, 60,207,183,116, 37,216, 51,203,178,167,242,243,243,199,150, 23,236,249, 65,220, 34,244,243, -243,187,126,235,214,173, 58,246, 91,209,206,107,101,201,122, 0,128,107,215,174,161, 83,167, 78,183, 82, 82, 82, 34, 30, 38,230, -127,138, 96, 85,113,231, 14, 17, 75, 85, 67, 37,114,217, 83,130,197, 26, 5, 2,112, 34,209,101, 83,145,225,160,209,160,223, 84, -214,177, 96, 73,194,119, 63,121,160, 21, 20,126, 32, 33,237,164, 98,241, 47, 98, 47, 47,121,105, 95,181,230,229, 25,138,204,230, -103, 60,228,202, 35, 30,241,136, 71, 60,242, 8, 17,223,250, 62, 62, 62, 63,139, 68, 34,169, 51,137, 44,249,218,177,214, 89,173, - 69, 25, 25, 25, 61,202, 59,109,121, 16,152,143,188,216,153,166,171,201,206, 75, 92,252,110, 55, 87, 49,109,169, 83,117,199,124, -128,101,167, 85,136,217,201,134, 57,235, 17,201,103,167,234,138,233,196,195, 93,194,117, 7,211,213, 62,229,102, 62,105, 85,231, -243, 65, 97, 86,213, 56, 42, 37,159,244, 1,180,251,172, 71, 36,159,157,170, 27,102,201,254,227, 10,174,187,152,174,244,169, 74, -228,147, 86,117, 62, 31, 20,230,253,142,163,114,242, 73,239,183, 47,149,209,246,179,220,229, 30,143, 98,226,220,100,189,244, 1, -145, 60,226,132, 79,170, 43,166,115, 61, 84,165, 75,255, 7, 16, 30,224, 80, 85, 99,150,168,207,170,146, 89,182, 27, 35,135,225, -130,163, 80,119,202, 94, 21,237, 94,162,172, 85,130,235,140, 89, 85,117,233,140, 83, 85,253,254, 65, 99, 86,213, 88, 42,137, 89, - 21,253,190,180,118,127,128,109, 84, 85,249,172,146,177,244, 32,250,124, 41,253,231,190,113, 75, 98, 86,197, 88, 42,137, 89, 21, -253,254, 97, 96, 86,197, 88, 42, 13,179, 42,250,125, 89,109,255, 95,209, 20, 50,149,169,172, 7,164,178,172,242, 0,143, 15, 34, - 34,247,131, 32,153,132, 16,106,243, 96, 91,237, 49,171,184,141,102,217, 48,103, 85, 33,102,231,170,106,163, 7,209,223,157, 49, -171, 10,191, 36, 78, 85,180, 83,105,152,247,155,223, 50,242, 89,229,101,191,223,126,255,176, 48,171,184,141,170,100, 44,149,192, -236, 92,197,155,128,206, 78,239,103, 85, 37,102, 85,141,165, 82,242,121,223,237, 84, 26,230,253,230,183,140,124, 86,121,217,171, - 98, 13,121, 80,184,143,130,112,213, 33, 19, 15,130, 8,217, 7, 93, 85, 98, 63, 8, 45,206,131,210,180, 85,149, 22,167, 20,220, -195, 85, 8,119,168,170,243,105,203, 31,121,156,156,213,121,198,146,103, 44, 61,202, 99,169,180,126, 67, 41,157, 69, 8,153, 89, -157,250,121, 73,204,170, 34, 66,165,148,253,190,198, 82,201,255,173,138,177, 84, 1, 38,121, 16,229,175,234,241, 84, 29,133,169, - 46, 25,177,177, 90,250, 0,240, 58, 87,231, 6,120, 64,249,236,252, 40,148,253, 65,228,147, 16, 50,235, 1,149,253, 81,169, 83, -207, 88,242,140,165,106, 55,150, 74,244,201,206, 85,165, 25,170,234,141, 84, 73,204,170,248, 13,103,140,170,234,163, 15,186,236, - 85, 57,150, 30, 68,219, 63, 42,242,255, 3, 0, 76, 61, 50,167, 83, 88, 95, 69, 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, 4,115, 66, 73, 84, 8, 8, + 8, 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, + 69, 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, + 0, 0, 32, 0, 73, 68, 65, 84,120,156,236,157,119,120, 84,197,254,198,223, 57,101,251,166,147, 2, 9,164,208,187, 84, 73, 40, +130, 52, 37, 40, 72, 83,185, 8,130,254,108,216, 27,168, 40,136, 20,189, 10, 10, 94,145,107, 5, 68, 41, 54, 36, 94,154,210,171, + 20,149, 14, 10, 1, 18, 72, 39,117,251,238,153,223, 31,217,179,110, 54,219, 2, 27, 69,156,207,243,156,103,247,180,247,204,156, +250,158,239,204,153, 33,148, 82, 48, 24, 12, 6,131,193, 96, 48, 66, 15,247, 87, 39,128,193, 96, 48, 24, 12, 6,227,122,165,206, + 70, 43, 43, 43, 43,232, 16, 24, 33,100, 64,176,154,206,225,166,107, 93, 51,152,229,234,170, 41, 15, 33,212,188,201,169, 57, 61, +132,154,245,153,206,155,174, 85, 77, 57,191,193,234,214, 69,211,243,127,136,210, 25,212,121,127, 45,104, 6, 90,246, 42,210,233, + 87,251, 10,143,251,244,191, 73, 58,111,186,214, 52, 61,207,159, 96,116,235,170,233,158,238, 16,166, 51,224,121,127,173,104,250, + 91,254, 42,211,233, 83, 59,216,115,201,199,177,159, 30,104,221,235, 9,161, 46, 11,215,197,104,212,133,204,204, 76,226,166, 79, +174, 85, 77,153,172,172, 44, 42,235,135,130, 80,106, 57,217, 18,106, 77,143,253, 25, 42,166,103,102,102,146,172,172,172,173, 0, +110, 10,145,230, 22,167,230, 85, 31,119,143,188,134, 68,183,174, 38,171,174,154,161, 58,239,235, 91,211,125,218,213,156,171,158, +154,161, 56,239,189, 29,247, 80,106,134,234, 90,242, 88, 63, 36,215, 82,125,156,243, 94,206,159,171,214,245,212, 12,197,181,228, +169, 25,138,243,254,207,208,148,167, 95,205,181,228, 77, 51, 20,231,189,175, 99,127,181,186,127, 55,234, 20,209,170,207, 29,228, + 60, 16,125, 67,173, 25,234, 52,215,135,217, 12, 54, 2,115, 45,104, 34,180,199,104,186, 83,115,122, 8, 53,251,134,234, 24,213, +199,249,238,174, 25, 42,125, 79,157, 80, 28, 39,111,154, 87,155, 94, 31,233,188, 42,188,105, 94,237,121,255,103,105, 34,180,199, + 40, 36,215,146,135,102,200,174, 37,207,252,134, 34,162,225,174, 25,170,107,201, 75, 58,175,250, 56,121,211,188,218,244,250, 72, +231, 85,225, 77, 51, 20,207,144,250,210,253, 59, 81,167,136, 86,125, 81, 31,134, 8,168,190,248, 66,169, 93, 31, 81,157,250,138, +188,133, 42,170,227, 69,119,107, 8,229, 66, 22,125,146,113,166, 47, 36,111,184,127, 71,216,181,196,174, 37, 92, 99,215,146,183, +243, 38, 51, 51,115,122, 86, 86,214, 43,161,212,188, 90, 60, 53, 67,101,136,188,228,253,170,174, 37,207,117, 67,113, 45, 5,208, +188,170,136,179,175,252, 95,141,238,223,141,107,194,104, 1,127,156, 36, 33,126, 51, 1, 66, 28, 37, 11, 53,245,148, 78,249, 77, +244,154,206, 59,234, 33,157,206, 55,229, 87, 66,169,233,228,239,178, 79,217,181,196,174,165,144, 16,202,107,201,227,156, 12, 73, + 90, 67,125,158,123,211, 12,197, 54,220, 53, 66,117,142,214,119,222, 67,121, 45,213,199,177,255,219, 65, 41,173,183, 1,192, 0, +166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,234,192,154,119, 96, 48, 24, 12, 6,131,193,168, 39,136,211,153, 50, 24, + 12, 6,131,193, 96, 48, 66,140,207, 58, 90,137,137,137,107,181, 90,109, 51, 95,243,171,170,170, 46, 93,188,120,177, 95,253, 36, +139,193, 96, 92, 79, 16, 66, 56,252,241,149,179, 4,128, 82,246,150,199, 96, 48,254, 1,248, 52, 90, 42,149, 42,237,248,241,227, + 45, 36, 73,130,195,225,128,221,110,119,253, 90, 44, 22,244,233,211,167,206, 21,233, 19, 18, 18,182,241, 60,159, 82,151,117, 28, + 14,199,249,188,188,188, 94,190,230, 19, 66,118, 1, 72, 35,132,184, 79,243,251, 11,224,162,213,106,237,236, 79,147, 16,146,230, +169,231, 67, 75,254,239, 87, 51, 50, 50,114,191, 32, 8, 73,222,180,124,253,151, 36,233, 76, 65, 65, 65,134, 47, 77, 70,104, 73, + 72, 72,216, 38, 8, 66,157,207,207, 75,151, 46,249, 60, 63, 27, 53,106,116,136,227,184, 70,117,144,228, 37, 73, 58,121,233,210, +165, 94,190,140,136,124,206,251, 19,241, 60,159, 8, 33, 57,118,187,189,171,159,229,125,106,250, 57,231,253,106,186, 45,203, 9, +130, 48, 55, 46, 46,238, 33,131,193, 96, 2, 64,121,158,167, 49, 49, 49,114,218, 0, 0,118,187,189,240,242,229,203,237, 3,233, + 49, 24, 12,198,223, 9,159,102, 73,146, 36,206,108, 54,227,212,169, 83,240,113,191,119, 92,193,246, 90, 28,248, 97, 99, 92, 88, + 92, 60,236, 86, 43,116, 13, 98, 93,218,249,199,142,192,110,179,194,110,177,160, 73,183, 30,213, 27,112, 56,208,182,109, 91, 62, +128,102,210,235,175,191, 30, 23, 22, 22, 6,147,201, 4,147,201, 4,179,217, 12,147,201, 4,139,197, 2,139,197, 2,171,213, 10, +171,213, 10,187,221, 14,179,217,140, 77,155, 54, 5, 74,123,210,172, 89,179,226,194,195,195, 93,122,242, 32,107,202,186, 54,155, + 13, 38,147, 9, 63,254,248,163, 95, 77, 65, 16,146, 46, 94,188, 24,167, 80, 40, 64, 41,133, 36, 73,222, 42, 23,214,160,105,211, +166,214, 0,233,100,132,150, 22,179, 62,207,138,139,208,168, 96,151, 36, 12,237,216,212, 53,227,204,135,171, 64,237, 14, 72,118, + 59,154, 79, 30, 7,160,250, 67,146, 54,109,218,248, 61, 63, 41,165,201,179, 62,207,138, 12, 86,179,168,168,200,216,186,117,235, +139,168,254,244,217, 87,196, 39,201,104, 52,198,201,105,144,145, 13, 11,199,113, 53,134,245,235,215, 99,232,208,161,129,242,158, +244,228,147, 79,198,217,108, 54, 88, 44, 22,152,205,102,216,108, 54,216,237,118,215,224,112, 56, 92,131,197, 98,193,222,189,123, + 3,105,202,145,172,215, 7, 14, 28, 56, 49, 43, 43, 75,247,205, 55,223,232, 82, 82, 82,160, 80, 40,192,243, 60,120,158, 7,199, +113, 16, 4, 1, 55,222,120,227, 63,230,115,111, 6,131,241,207,193,167,209, 50,155,205,103, 59,117,234, 68,157,255, 19, 85, 42, +149,194,125, 62, 33,164, 81,139, 22, 45, 78,122,174, 23,168, 72, 49, 44, 46, 30, 83, 27, 71, 3, 0, 94, 62, 87, 44,107,225,141, +140, 27, 92,203,188,154, 91, 6, 0,208,104, 52, 32,238,175,209, 62,208,233,116, 24, 56,112, 32,148, 74, 37,186,118,237, 10, 81, + 20,189, 14, 10,133, 2,162, 40, 6,146, 3, 33, 4,122,189, 30, 51,102,204, 0, 0, 8,130, 0,157, 90,133, 71, 51,186, 66, 13, +138,255, 30, 57, 13,139, 68, 33, 8,130,107, 8, 70, 83,161, 80,224,240,225,195, 16, 4, 1, 60,207,187,126,229,255,107,214,172, +193,168, 81,163, 32, 8, 2, 52, 26, 13,240, 15,106,103,228, 90, 33, 66,163,194,248, 69, 95, 3, 0, 46,204,159, 12,160,250,216, +237,125,248,101,215, 50,201,255, 55, 6,132, 16,136,162, 8,142, 11,252, 61, 73,176,154, 37, 37, 37,198,187,238,186,107, 71, 88, + 88,216,250,242,242,114,191,154,148, 82, 92,184,112, 1,130, 32,248, 60,223, 57,142,195,188,121,243,240,219,111,191, 5,149,119, +147,201,132, 15, 62,248, 0, 14,135,163,134,174,252,223,115, 90, 32,156, 38,235,181, 65,131, 6,141,203,202,202,138, 34,132,224, +221,119,223,133, 66,161,192,144, 33, 67, 16, 19, 19,131, 13, 27, 54, 64,161, 80,224,185,231,158, 11, 42,141, 12, 6,227, 31,139, + 8,224, 6, 0,177,168, 14,244, 84, 0,136,116,155, 95,232,252,141,117, 27,255,201,139, 78, 55,231, 50,242,124,121,220, 2, 64, +233,101,122, 49, 0,141,115, 48, 3,216, 5,160,157,219,118,228,245,220,211, 81, 99,187, 2, 80,221,255, 16,128, 45, 0,250,202, +141,232, 93,186,116,233, 86,121,161,166, 77,155, 30, 63,121,242,100, 43,217,243, 56,139, 16, 21,118,187,189,133, 92,156, 40, 71, +139, 6, 12, 24,224,247, 13,223,110,173, 25,164,113, 47, 58,240,156,238,254,235, 11, 66, 8,172, 86, 43,198,140, 25, 3, 0, 62, + 31, 58,238, 67, 16,222, 13, 22,139, 5,130, 32,160,101,227, 88, 76, 27,220, 9,221,169, 13, 85,149, 4,246,178, 42, 12,211,219, +112,188, 77,103, 44, 62, 95,136,115,229,149, 16, 4, 33, 40, 77, 73,146,124,154, 44,158,231,177,104,209, 34,220,117,215, 93,224, +121, 62, 40, 61, 70,232,177, 75, 82,141,113, 95,231,102,176,231,103,176,154, 37, 37, 37,198,161, 67,135,238, 81,169, 84, 75,226, +227,227, 47,230,228,228,248,213,164,148,214, 50, 63,158, 47, 21,111,189,245, 22, 22, 44, 88,128,126,253,250, 5,149, 78,179,217, + 12, 66, 8, 22, 47, 94, 92,107,222,204,153, 51,107,109,207,159,166,243, 5,137,107,212,168,209,195,235,214,173, 11,151,151,109, +208,160, 1, 68, 81, 68,251,246,237, 17, 22, 22,134, 29, 59,118,192,225,112, 4,125, 93, 50, 24,140,235, 23,111, 94,196,141, 62, + 83,167, 78,237, 58,119,238,220,217,233,233,233, 95,236,218,181,235,115, 66,200, 90,121, 38,165,116, 40, 0,200,211,156,227,221, + 80,211,244,136, 0, 98, 9, 33,107,229,229,221,199,221,166, 15, 0,160,148,199,167, 78,157,218,110,238,220,185,179,167, 76,153, +242,194,156, 57,115, 20, 83,167, 78,237, 48,119,238,220,217,242,118,188,165,195, 29,249,181,212,111,171,194,114, 49,226,137, 19, + 39,124, 21, 35,186,160,148,250,189, 91,234, 26,196,186, 34, 89,175, 38,199,184,166,207,200, 41,117, 61,192, 22,118,105, 6,157, + 78,135,193,175,254,219,239,182,128,234,135,150,197, 98, 65, 65, 65,129, 43,202, 16,104, 8, 86, 83,171, 81, 99,211,147,237,113, +161, 88,137,233,187, 75,144,245,243,111, 16, 69, 17,183,180,105,143, 91, 21, 97,120, 41, 89,137, 39, 79,103,195, 22,100,157, 94, + 74,169, 87,131, 37,255,151,139, 80,152,209,250,235, 24,218,177,169, 43,234,180, 55,172,191,107,250,168,170,195,174, 99,242,244, +162, 55, 0, 0,253, 58,223, 24,240,122, 8, 70,179,184,184,216,216,171,127,223,173, 14,163,229,211,113,227,198,157,221,188,121, +179, 38,152,180,122, 51, 90,114,212, 86, 54, 89,130, 32,192, 98,177, 4,149,119,139,197,226,243,250, 80, 40, 20,117,142,104, 1, + 64, 85, 85,149,229,219,111,191,197,194,133, 11, 17, 19, 19,131, 65,131, 6,161, 97,195,134, 88,181,106, 21, 40,165,152, 60,121, + 50, 52, 26,141, 28,189, 14, 74,147,193, 96, 92,183,248,243, 34,170,185,115,231,206,246, 52, 50,238,227,238, 6,202,195, 76,201, +244,153, 58,117,106, 59,127, 9,112, 55, 93,242, 52,121,187,132,144,181,115,230,204, 25, 26, 32, 29,133,240,192,117,183,244,215, +124,191,217,108, 62,219,177, 99,199,160,220,132,193, 96,200,243, 55, 95,126, 48,121,222, 84,221,163, 4,122,189, 30,186,112, 61, +184, 32,239,187, 54,155,205,101, 84, 54,110,220, 8,141, 70,131, 33, 67,134, 92, 85, 68,203,106,181, 66,169, 16,193, 53,136,199, +248,249,155, 81, 92, 97,116, 61, 96,182,156, 57,139,131,249, 5,120, 50,189, 63,116,154, 2, 84, 90, 44, 65, 69,222, 36, 73,170, +101,178, 4, 65,192,152, 49, 99, 92,209, 4,247,122, 43, 96, 69,135,127, 25,222,206, 79,207,233,146, 71,164,234, 74, 52,139,139, +139,141, 67,135, 14,221,227, 48, 90, 62,205,205,205,221, 3, 64,221,189,123,247, 58, 27, 45,217, 96,137,162,136,121,243,230, 97, +193,130, 5,174,249,193, 26, 45,187,221, 94,195, 64,157, 62,125,186,198,182, 60,141,157,191, 98, 83, 74, 41, 37,132, 72, 0,164, +180,180, 52,215, 58, 9, 9, 9,136,140,140,132, 36, 73,144, 36, 9,106,181, 26, 26,141, 6, 10,133,194,167, 22,131,193,248,231, +224,199,139, 24,167, 76,153,242, 2, 33,100,173, 51,178,116, 4,240,105,168,188,209, 13, 53,205, 90, 45, 67, 4,252, 17,161,242, + 52, 91,238,255,101,166, 78,157,218,206, 75, 58,106, 21, 87,186,238,170, 30,205,238,215,192,189, 24, 49, 20,120, 43, 46,116,127, +144,233, 35,195,161,209,233,192,243, 28, 8, 33,126, 13,158, 92,116, 40,223,248, 31,122,232, 33,191,245, 86,130,173, 79,101,181, + 90,193, 9, 60, 46, 37,164,194,193,109,119,173, 43, 15,156, 32,226, 92, 66, 43,240, 39, 14, 65, 12,242,129,235, 25,209,154, 60, +121, 50, 62,248,224, 3,112, 28,231,218, 39,130, 32,160,121,243,230, 56,123,246,108, 80,154,140,208,227,203, 52,123, 78,119, 56, +164,160,163, 48,222,150, 43, 46, 46, 54,142, 30, 61,122,107, 89, 89,217,167,109,219,182, 61,141,234,230, 15,130,106, 68, 88, 62, + 87,220, 13,150,108,178,222,121,231,157, 26,166,200,102,179, 5,245, 34, 96,179,217,106, 25,158, 55,223,124,179,198, 47, 0,100, +100,100, 4, 21, 25, 6, 64, 57,142,163, 10,133, 2, 3, 7, 14, 68,135, 14, 29,240,205, 55,223, 64,146, 36, 60,242,200, 35,208, +104, 52,120,251,237,183, 97,183,219,241,250,235,175,179,136, 22,131,193,240,231, 69,204,115,230,204, 57, 50,103,206, 28, 87,100, + 9,240, 94, 84,231, 41,137,106, 83, 21, 43,155, 52, 84,215,181,242, 86,127, 11,190, 52, 61,141, 23, 80, 29,233,242,146, 14,207, +226,202, 63,191,175,195,188,163,135,241,239,158,157, 0,212, 44, 46, 92,116, 99, 43,232,244, 58,232,194,244, 24,189,102, 59, 0, + 56,111,250, 83, 2,106,218,108, 54,151,209, 42, 46, 46,246,107,178,234, 18,209,226,148, 2, 86, 39, 93, 6, 85,138, 16, 44,182, + 26, 70,139, 23, 68, 92,136, 73, 5, 39, 42, 32, 56,236, 65,105, 82, 74,107, 21, 21, 78,152, 48, 1,132, 16,215, 23, 98, 29, 59, +118,116,215, 98, 79,158, 63,153,188,253, 31,226,248,151, 15, 3, 0,122, 85, 85,185,142,197,172,142,127,124,223, 49,255,240, 86, + 87,244,241, 85, 60,115, 69,154,197,197,197,198,238,173,219,237, 81, 68, 71,124,122,254,252,249, 61, 0,184, 59,239,188, 51,178, + 99,199,142, 65, 93,147,242,199, 21,158, 38,203, 61,146, 37,255,218,108,182,160,242, 46,215,149, 10,132, 92,140, 24,232,156,167, +148,210,232,232,104,112, 28,135,240,240,112,232,245,122,215, 23,183,106,181, 26, 90,173,214, 85,191, 51, 72,227,198, 96, 48,254, +185, 68,201, 70,199,105,150, 0,212,172,147,229,110,134,124, 21, 33, 58, 35, 80,219, 2,108, 43, 11,213, 6,205, 43,114,100,205, +125,154,231,118,221, 17,128, 63, 58,166,148,127, 27, 54,108,248, 63,189, 94,159, 26, 32, 33, 46,234,210,120,169,195,246, 71,101, +120,217,100, 17, 66,160, 15,211, 67,163,215, 65, 19,166,175, 49, 47, 24,228,162, 67,158,231, 93, 15,157, 37, 75,150, 64,175,215, +227,222,123,239,173,115, 29, 45,192,105,180, 20, 28, 54,168,126, 4,175, 20,106,152, 44, 65, 16,192,139, 34,242,244, 13,193,137, + 34, 4,123,112, 81,178,178,178, 50, 8,130,128,105,211,166,185,222,224,221, 77, 86, 93,242,204,168, 31,168,227, 15, 83,226,171, +194,123, 93,143,145,167,166, 28,201, 82, 68, 71,124,218,170, 85, 43, 87, 36, 75,171,213,202, 95,155, 6,132,227, 56,175, 38,203, +243, 11, 65, 65, 16,170,207,229, 0, 95, 71,186, 71,180,230,204,153,227,210,117,143,100,201,212,229, 58,146,211,186,117,235, 86, + 28, 60,120, 16, 15, 61,244, 16, 52, 26, 13, 22, 44, 88, 0,187,221,142,153, 51,103, 66,163,209, 64,169, 84, 6, 22, 98, 48, 24, +215, 53,158, 94,196,131, 66,143,122, 80,196,195,212, 20, 2,181, 13,150,123, 49,161,219,127,247,183, 79, 89,215,226, 81,164,232, + 57, 93,254, 45,158, 51,103,206,102, 57,146,229, 54,189, 70, 58,220,241,234, 16, 84, 42, 85,234,169, 83,167, 92,141,149,250,251, +181, 88, 44,232,215,175, 95,208,145, 49,249,171, 67, 65,224,107, 24, 11,109,152, 30,218,240, 48,104,244,122, 79,195,225,247,169, +198,113,156,235,141,216,221,104,189,242,202, 43, 16, 4, 1, 31,124,240, 1, 0,224,153,103,158, 9,186,142,150,172, 9, 7, 65, + 14,253, 29,157,230,143,130,229, 51, 27,242,119,254, 2, 65, 16, 16,215,227, 86, 72,221, 71,193,160,209, 67,112,216,131,254,234, +176,164,164, 4,103,207,158, 5,207,243,120,234,169,167,106,180,117,228,249, 37,219,198,141, 27, 3,230,157, 17,122,168,100,175, + 49, 30, 68, 49, 98,192, 99,228,174, 41,215,201, 42, 43, 43,251,244,252,249,243,123, 1,112,227,198,141,139,212,106,181,248,232, +163,143, 12, 0,148,171, 86,173,242,235,182,220,205,121, 32,147, 37,138, 98,245,185, 28, 4,114,209,182, 60, 4,170, 24, 31,204, + 57, 47,167,149, 16, 2,135,195, 1,141, 70, 83, 35,146,165, 86,171,161, 82,169,130, 74, 31,131,193,248, 71,227,179,168,207, 11, +221,220, 76, 83,160,245,124,205,175,203,246,252,226,213, 32,113, 28, 7,179,217,140, 99,199,142, 5,171, 19,116,227,165,141,187, +222,136, 87,115,203, 64, 8,193,127, 51,218, 66, 23,174,135, 86,167,195,200,111,182,186,110,220,135,103, 63, 3,149, 78,143, 70, +189, 7, 5,212,147,223,196, 61,141, 86,105,105, 41, 68, 81,196,107,175,189, 6,142,227,240,250,235,175, 35, 49, 49, 17,151, 46, + 93,194,170, 85,171, 2,234, 90,173, 86,240, 14, 30, 13,239,105, 13,237,132, 8,132,223,211, 7, 81, 3, 95, 65,174, 69,192, 46, +147, 22,125, 76, 71,161,220,240, 14, 44,146, 35,232, 47,176,236,118, 59,182,110,221,234, 89,225, 29,148, 82, 87,171,251, 54,155, + 13, 86,171, 21,175,191,254,122, 80, 95,180, 49, 66, 75,195, 30,147, 17,219,245, 65, 0,192,154, 57,147, 92,211,167, 29,254,227, +252,156,247, 89,117, 7, 0,173, 82, 2,159,159,238,154,197,197,197,198, 91,250,101,108, 51, 73,226, 39,237,219,183,175, 17,201, + 82,171,213,196, 57, 30,148,185,230, 56, 14, 60,207,215, 42, 46,244,101,182,130,169,163,101,183,219, 93, 13,137,250,171,207,120, + 37, 17,173, 73,147, 38,161, 97,195,134,174, 72,214,171,175,190, 10,141, 70,131,169, 83,167,194,102,179,225,157,119,222, 9, 90, +143,193, 96, 48, 2, 16, 50,147, 20, 10,188,222, 73, 77, 38, 83,118,135, 14, 29,188,174, 96, 50,153, 18,213,106,117,141,187, 44, +113, 54, 94,234, 89,132, 72, 8, 25, 64, 41,221,228,169, 33, 71,111,194,194,195,160,214,235,160,245,136, 98,169,195,194,161,210, +235,193, 41,106,223,204,189,105,202,117, 75,220,141,150, 60,148,149,149, 65, 20, 69, 44, 92,184, 16,225,225,225, 48,155,205, 1, + 53,229,135, 14,207,243, 48, 92,168,192,241,217,155,160, 84,239, 66,179, 65,119,161,161,168,129, 98,199, 87, 48, 58,106,214,217, + 10, 70,179, 69,139, 22,120,249,229,151,107, 53,235,224,139,196,196,196,128,121,191, 90,152,166,119, 77,127, 95,197,202, 72,212, +225,109, 57,175,154,114, 36,203, 36,137,159,156, 61,123, 86,142,100, 69,104,181, 90,188,255,254,251, 6, 0,220,204,153, 51,181, +201,201,201,181,218,161,243,118, 46,241, 60,143,249,243,231,123,173,147,229,205,116, 5,147,119,249, 58,114, 95,247,166,155,110, +242,218, 96,169, 55,243,230, 77, 83, 78,107, 76, 76,140, 43,146,229,112, 56, 92, 95, 27,202,173,207,251,122,169,184, 30,206, 37, +166,201, 52,153,230, 63, 27,175, 79,249,139, 23, 47,222,226,107,133,102,205,154,157, 58,117,234, 84,115,185, 43, 14,231,141, 83, + 97, 50,153, 90,100,100,100, 4, 12,237, 72,146, 4,149, 74, 5, 74, 41,110,126,121, 46, 8, 7,112,168,249, 16,139,235,217, 31, + 60, 47, 64,170,238,234, 35,224, 87,135, 70,163,177,198,195,193,219, 80, 89, 89, 9,179,217, 28,240,179,116, 25,147,201, 84,163, + 9, 6, 66, 37,156,251, 97,101,173,175, 15,229, 33,216,122, 59,106,181,186, 70,209,143, 63, 2,181, 73,198, 8, 61,242, 7, 11, + 0,208, 50, 99, 8, 36,201, 1,234,112,212,232, 38,169,117,234, 45,144,168, 3, 86,155, 1,102,179, 57, 80,216,145, 20, 21, 21, + 25, 71,143, 30,189, 21,192,199,195,134, 13, 59,137,234, 47, 94,168, 94,175, 87,137,162, 40, 1, 40, 1, 64, 47, 95,190, 28,145, +155,155, 43,153, 76,166, 38,129,210,153,149,149,133, 99,199,142,161,119,239,222, 53,186,131,146,163,162,238,173,187, 7,115,126, +202,197,229,222, 90,132,247,101,228,130,133,231,121, 68, 68, 68, 64,161, 80,224,181,215, 94,131, 66,161,128, 86,171, 5, 0,188, +243,206, 59,174,198, 87, 25, 12, 6,227,122,228, 74,190, 58,228,253, 20, 43,250, 45, 66,180,219,237, 57,201,201,201,117,218,152, +195,225,200,247, 55, 95,146,164,156, 85,171, 86, 41,128,218,149,151,125,253, 82, 74,253,106, 82, 74,115,214,172, 89,227,250,206, +221,253, 33,229,237, 63, 33, 36,160,166,195,225,200, 73, 73,249,163,191,226, 96,140,153,205,102,203, 13,184, 16, 35,100, 56, 28, + 14, 63,231,231,139,190,214, 9,116,126,158,110,217,178,101,110,100,100,228,247,241,241,241,197, 59,119,238,140,233,214,173, 91, +140,251, 50,221,186,117,107,232,177,154, 5,190,251, 57, 4, 33, 36,103,216,176, 97, 94,207,121, 0, 46, 3,239,113,126,250,109, +106,158, 82,154,179,111,223, 62,133,251,250,190,244,221,174, 35,255,205,215, 87, 47,115,174, 83,167, 78,156,187,142,175,115,223, +102,179,121,109,215,134,193, 96, 48,254,206,212,217,104, 25,141,198, 11, 29, 58,116,240, 90,187,214,104, 52,158,247,183,110, 81, + 81, 81,215,186,110, 47, 16, 86,171, 53,227,239,160, 89, 88, 88, 24,242,188, 51, 66, 75,125, 28,163,252,252,252,238,161,214,180, +219,237, 33, 63, 63,109, 54, 91,200, 53, 1,160,184,184, 56,189, 62,116, 25, 12, 6,227,239, 66,157,141, 86,176,205, 56, 48, 24, + 12, 6,131,193, 96,252,211, 9,170, 21,106, 6,131,193, 96, 48, 24, 12, 70,221, 33,168,238,165,186, 22,117,249,154,128, 16,226, + 85,195, 31,129,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,253,105, 6,210,190,238,190,102,148,191,166,170,143, 1,192, + 0,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,234,192,138, 14, 25, 12, 6,131,193, 96, 48,234,137, 63,189, 83,105, + 70, 53,132, 16,158, 82, 26,116,139,250, 65, 16, 5,192, 87,135,113, 22, 0,151,175, 64,147, 0, 80, 56, 7,185,161, 35, 27, 0, +171,115, 8,162,233,250, 25,220,197,139, 81,237,168, 67,236, 70, 9, 17, 37, 9, 63, 55,105,210,248, 16,112,139, 5, 0,244, 9, +109,218,232,117,154, 1,102,171, 37, 85, 37, 42,143,149, 86, 85,110, 52,229,159,204,190,130,180, 50, 24,140,171,132, 16,114, 27, +128, 25,168,190,246,231, 80, 74, 87,254,197, 73, 98, 48,254,246,248, 52, 90, 97, 97, 97,251, 57,142, 75, 10,212, 62,143,140,179, + 47,179,156,146,146,146,160, 62,145, 39,132, 8, 0, 70,235,245,250,126,162, 40,246, 4, 0,155,205,182,179,178,178,114, 51,128, + 85,148,210,224, 58,104,171,173, 27, 14, 96, 12,128,177,206, 73,203, 1,172,164,148,150, 95,161, 94,135,136,136,136, 47, 69, 81, +164, 69, 69, 69, 61, 0, 32, 38, 38,102,143,205,102, 35,229,229,229, 35, 41,165,191,214, 81,143, 19, 69,113, 94,239,222,189,251, + 16, 66, 62,166,148, 46,188,146,116,121, 65,197,113,156, 87,131, 34, 73, 82,138,183,233, 1, 80, 0,136, 88,184,112, 97,204,178, +101,203, 58,229,228,228,180, 7,128,164,164,164,195,227,198,141, 59,244,232,163,143, 22, 3, 40, 67,181,225,242,201,197,139, 81, +237, 10,242,206, 60,148, 95,112,108, 12, 0, 36, 52,108,191,146,231, 57, 69, 98,226,193,221,218, 6, 99, 27,180,108,213,244,193, + 47, 62, 90,168, 72, 73,109,140, 31,119, 29,188,225,209,199, 95,104,167,142,111,249, 22, 51, 91,127, 30,225,225,225,251, 57,142, + 75, 2,124, 95,227,222,174,121,135,195,145, 83, 92, 92,236,245,122, 15, 15, 15,223, 47, 8, 66,146,175,117,125, 77,147, 36,233, + 76, 97, 97,161,215,166, 38, 34, 34, 34,118, 11,130,144, 26,172,150,252,107,183,219,115,124, 53, 45, 19, 17, 17,177,159,231,249, + 36,127,249,244, 54, 79,146,164, 51, 5, 5, 5,190,210, 89, 43,239,161, 72,231,149,104,250, 75,167,115, 25, 14,192, 59, 49, 49, + 49, 55, 22, 23, 23,255, 11,192, 11,229,229,229, 29,121,158, 71,116,116,244, 11,132,144,223, 34, 34, 34, 62, 44, 43, 43,219, 5, +224,113, 74,169,228, 75,139,193, 96,120,199,167,209,226, 56, 46, 41, 55, 55, 55, 78,167,211, 1,248,163, 63, 62,185, 51,105, 73, +146, 64, 41,117,253,218,237,118,180,110,221, 58,168,141, 18, 66,218,135,135,135,175,158, 58,117,106,147,209,163, 71, 43,229,174, +102, 46, 94,188,216,226,203, 47,191,252,215,107,175,189,246, 10, 33,100, 20,165,244,112,144,122, 28,128,254, 0, 38,116,234,212, +105,196,171,175,190,170,184,249,230,155,225,112, 56,240,253,247,223,247,158, 57,115,230, 66, 66,200, 87, 0, 62, 5,240, 67,176, + 55, 11, 66, 72,175,132,132,132,207,119,236,216,209,240,236,217,179,142,209,163, 71,175, 0,128,253,251,247,167, 57, 28, 14,210, +163, 71,143, 44, 66,200,221,148,210, 29, 65,101,188,154, 17,143, 61,246,216,157,147, 39, 79,142,187,247,222,123, 39, 2, 88,232, +220, 22, 1, 0,234, 44,252,174, 3,174, 72, 22,165, 84,225,103,185, 4, 4, 31,217,210,157, 61,123, 54, 42, 35, 35,227,225,130, +130,130, 39,221,117,243,243,243,113,224,192, 1,235,236,217,179,231,239,218,181,235,189,212,212,212,203, 0,170,124, 9, 81,135, +216, 45,191,224,216,152, 62,233, 11, 35, 0, 96,213,154,135,239,218,119,168, 48,108,237,186,197,255, 82,170, 21,230,101,255,157, +175,104,222, 44, 5, 91,246,159,198,222, 99, 37,164,125,175,161, 66,217,218,165, 3, 1, 44, 14, 34,157,140, 16,192,243,124, 98, + 78, 78, 78,156, 86,171,245,218,113,188, 71,189, 12,185, 1, 84,180,104,209,194,167,166, 32, 8, 73,185,185,185,113,106,181,218, +117,239,240,188,103, 0,128,251,233, 78, 41, 69,203,150, 45,125, 26,119,142,227,146,207,159, 63, 31,167,213,106, 93, 58,222,210, + 39, 35, 27,142,150, 45, 91,250,203,123,141,116, 6,163, 73, 41, 69,243,230,205,125, 70,163,229,188,203, 61, 96, 4,202,183,172, +153,154,154,234,243,218,247,166, 25, 76, 58,155, 54,109,234,247, 69, 8,192, 59, 39, 79,158,156,220,184,113, 99, 52,111,222,124, +215,141, 55,222, 24,174,211,233,176,110,221, 58,180,105,211,166, 93,120,120,248,222, 85,171, 86,137,207, 61,247,220, 13,159,124, +242, 9, 0, 60, 26, 64,143,193, 96,120,224,211,104, 17, 66,160,211,233,176, 98,197, 10,159,221,113,184,255,111,210, 36, 96,175, + 33,178,110,215,212,212,212,173, 59,118,236,208, 52,108,248, 71,131,216, 22,139, 5, 81, 81, 81,120,228,145, 71,148,183,221,118, + 91,243, 65,131, 6,237, 33,132,220, 68, 41,221, 31, 64,111, 68,108,108,236,187,211,166, 77,139,191,243,206, 59, 17, 19, 83,163, +209,109,140, 30, 61, 26, 35, 71,142, 84,156, 60,121,242,174, 37, 75,150,220,181,104,209,162, 60, 66,200,163,148,210,175,252,233, +106,181,218, 97,205,154, 53,123,127,199,142, 29,113,113,113,113, 72, 75, 75,227,158,123,238,185,230, 45, 90,180,208, 36, 37, 37, +113,151, 46, 93,194, 55,223,124,147,120,247,221,119,175, 86, 42,149, 15, 90, 44,150,111,131,200,187, 50, 38, 38,230,133, 7, 31, +124,176, 65,121,121,185,253,192,129, 3,167,228,233, 74,165,114,102,122,122,122, 55, 66,200,103,148,210, 15, 3,105,185,225,138, +100, 57,163,118,158,125,153,216,228,249, 65, 70,182,148, 63,255,252,115,116,122,122,250, 87,102,179,185,243, 67, 15, 61,116,126, +246,236,217,154,240,240,240,112, 0,164,188,188,252,242,140, 25, 51, 44,111,191,253,246,243,109,218,180,233,191,123,247,238, 17, + 55,220,112,131, 13,213, 38,174, 22,148, 16, 87,122, 46,228, 22, 98,235, 46, 73,249,242,212,103,146,222,152,149,122,238,167,163, + 23, 36, 65, 19,142,239,182, 29, 65,126,113, 37,254,183,251, 40, 18, 98,194,136, 66, 37,182,139, 76,106,119, 83, 89,238,209,109, + 87, 96, 60, 25,117,132, 16, 2,173, 86,139,239,190,251,174, 86,215, 85,222,186,181, 18, 4, 1,145,145,145, 1,123, 55, 80,171, +213,216,184,113,163,215,190, 23,189,117,233, 19, 17, 17, 1,192,119,167,218,132, 16,168,213,106,236,220,185, 19, 28,199,121,237, + 26,200,115,154, 78,167, 3,231,167,175, 43, 89,115,219,182,109, 1,181,228, 95,189, 94, 15, 0,181,250,164,116, 71,165, 82, 97, +199,142, 29, 62,243,236,249, 95,239,236,239, 53,144,230,206,157, 59,107,116,253,229,217, 37,152,251,184, 78,167,115,189,192,249, + 34, 42, 42,170, 71, 82, 82, 18,246,237,219,135, 85,171, 86, 69,183,107,215, 14,167, 79,159, 6, 33, 4,179,103,207, 38,109,219, +182, 21,243,242,242,208,187,119,111,124,253,245,215,245,210,168, 45,131, 17, 36, 34,128, 27, 0,196,162,186, 23,154, 10, 0,145, +168,126,246, 40, 1, 20, 3,208, 56, 7, 51,128, 74, 0, 13,156,235, 22,161,250,222,226,110, 16, 10, 81,179,243,233,110, 78,109, +185,135,138, 88,183,121,242, 54, 60,199, 61,127,189,106, 11, 0,144,149,149, 37, 63,204,250,102,102,102,110,173,145,179, 32, 76, +150,220, 79,153,231, 53, 77,107,119, 48,171,210,233,116, 95,238,217,179, 71, 19, 27,251, 71, 30,204,102, 51, 42, 42, 42, 80, 89, + 89,137,138,138, 10,132,133,133, 97,213,170, 85,154,254,253,251,127, 73, 8,105, 65, 41, 53,251,210, 4, 48,255,210,165, 75,241, +118,187, 29, 74,165,247, 42, 74, 28,199,161,117,235,214,120,225,133, 23, 48,120,240,224,132,126,253,250,205, 7,224, 50, 90, 94, + 52,161,213,106,223, 63,112,224, 64,156, 86,171,197,169, 83,167,144,147,147,131,167,159,126,186,177, 36, 73,184,112,225, 2, 78, +159, 62,141,220,220, 92, 44, 89,178, 36,110,248,240,225,239, 3,168, 97,180,188,105, 2,120,232,201, 39,159,108, 21, 21, 21,197, +253,251,223,255, 46,173,170,170,250,143,115,250,203, 11, 22, 44,184,167, 79,159, 62,113,247,221,119, 31, 37,132, 44,163,148,214, + 50, 46, 30,154,222, 34, 89, 14, 0,199, 61, 86,107,237, 17,233, 74, 64,245, 73, 88,234, 69,147, 0,136, 24, 52,104,208, 83,102, +179,185,243,142, 29, 59,126,235,217,179,103, 50,128, 75,112,158,124, 17, 17, 17,186,249,243,231,199, 15, 29, 58,244,228,205, 55, +223,220,121,208,160, 65, 79, 21, 22, 22,206,118,206,167,158,154,146,132,159, 19, 26,182, 95,185,109,247,163, 99,182,236,180, 40, +158,121,252,149,243, 77, 26,167,148,253,124,170,196,113,244, 76, 33, 42,140,118,220,113,115,117, 7,230, 61,218, 55,193,187, 43, +118,224,145, 39, 94, 20,191, 90,185,116,228,111, 20, 58, 0, 89,126,246,231, 85,193, 52,171,113, 22, 49, 65, 20, 69,220,122,235, +173, 32,132,212,234,203, 83, 20, 69,236,222,189, 27, 55,223,124, 51, 68, 81,196,164, 73,147,130,210, 20, 4, 1,131, 6, 13,114, +245,163,232,174,231,105, 26,188,121, 2,207,188, 83, 74, 33, 8, 2, 56,142,243,217,145,182,167,102,160,251,146,156, 78,127, 90, +238,243, 2,165, 83,142, 38, 5,107,178,130,213,148,211, 41, 8, 2, 50, 50, 50,112,232,208, 33,191,166,203,155,191,244,204,251, +229,203,151,199,183,104,209, 98,219,194,133, 11,163, 1,160,184,184,216,213,225, 61,207,243, 56,113,226, 4, 44, 22, 11,166, 79, +159,110, 45, 47, 47,191,175,150,160, 23,205, 80,192, 52,255,153,154,254,188, 8,128, 62, 83,167, 78,237, 58,119,238,220,217,233, +233,233, 95,236,218,181,235,115, 66,200, 90, 74,233, 80,249,119,234,212,169,237,230,206,157, 59,123,202,148, 41, 47,204,153, 51, +231, 8, 33,100, 45, 0,120,142, 59,211, 63,212, 77, 91, 4, 16, 43,235, 0,128,231,178,222,198, 61,127,125,104,255, 17,209,202, +204,204, 36,206, 76, 18,183,133,131, 54, 90,129,222,198, 0, 64, 16,132,201,179,103,207,142,247,103,178, 42, 43, 43,113,241,226, + 69, 36, 39, 39, 99,210,164, 73,241, 11, 23, 46,156, 12,224, 77, 63,178, 10,158,231,177,111,223, 62, 20, 20, 20,160, 67,135, 14, + 72, 77, 77,173,177,192,239,191,255,142,239,191,255, 30,165,165,165,232,210,165, 11, 80, 93,255,200, 43, 55,220,112,195,244,214, +173, 91, 15, 26, 52,104,144, 93,163,209,224,231,159,127, 70,231,206,157,177, 98,197, 10, 52,105,210, 4, 90,173, 22, 39, 79,158, + 68,135, 14, 29,176,117,235, 86,196,198,198,162, 83,167, 78,246, 46, 93,186,108, 47, 41, 41,217,156,157,157, 61,221,155, 46, 33, + 68,145,152,152,248,202, 3, 15, 60,160,188,120,241,162,244,233,167,159,238,160,148,238, 32,132, 76,126,241,197, 23, 39, 14, 30, + 60, 56,238,224,193,131,101, 63,253,244,211, 94,111, 38,203, 11,222, 34, 89, 53,234,181, 57,139,108,204, 70,163,209, 98, 54,155, +109, 28,199,101, 19, 66, 44, 14,135,195, 87,153,143,122,194,132, 9, 77,139,138,138, 30,121,226,137, 39,206, 58, 77,214, 9, 84, + 87,128, 7, 0,216,237,118,115,101,101,101,121,122,122,122,242,221,119,223,253,219,231,159,127,254,200,132, 9, 19, 86,125,250, +233,167,149, 0,140,158,130, 77,154, 52, 62,196,243,156,162,170, 34,250,204,234, 85, 31, 62,249,253,154,201,141, 47, 92,200,109, + 30,211, 32,182, 74,161,143,189,184,106,249, 39,251, 1, 88, 46, 22,150,227,215,223,243, 32,138, 60,142, 93, 40, 67,159, 91, 70, +139,191,157,154,213, 11, 78,163,197,168, 87,168,220, 9,245,150, 45, 91,252, 70,180,118,239,222, 13, 81, 20,161,209,104,240,246, +219,111,251, 21,149,141,129, 28, 45, 10,100,102, 56,142,243,123, 31,145,205,134,220,209,187,231,240,159,255,252, 7, 79, 60,241, + 68,141,109, 56,205,134,223, 40,153,187,129,241, 76, 95,114, 74, 10, 10,242,243,107, 76, 11,166, 83,122,135,195, 1, 81, 20,241, +193, 7, 31, 96,232,208,161, 88,187,118,173,223,223, 91,111,189, 21, 28,199,249,141,222,202,233,204,200,200,128,213,106,117,165, +249,196,137, 19, 94,117, 23, 45, 90,228, 55,141,114,197,247,206,157, 59,135,247,235,215, 15,219,182,109,195,200,145, 35,205, 86, +171,245, 20, 0,100,102,102,182, 92,184,112,161,242,192,129, 3,136,137,137, 17,207,159, 63,255, 49, 33,132, 85,144,103,212, 43, +222,188,136, 19,213,220,185,115,103,123,154, 24,119,228,249,132,144,181,115,230,204, 25, 10,252, 97,138,220,199,157,139,187,247, +173,218,103,234,212,169,237,220,198, 11,221, 77,148, 60,209,223,182, 61,150,175,209,111,171,203,104, 57, 51,214, 87, 30,231, 56, + 14,242,205, 55,144,201,242,245,230,232, 73, 68, 68,196,144, 59,238,184,195,101,114, 76, 38,147,203, 96,201, 38, 75, 30, 63,121, +242, 36,186,118,237,170,136,136,136, 24, 2,255, 70,171, 58, 35,130,128, 70,141, 26,161,168,168, 8,135, 15, 31, 70,114,114, 50, +108, 54, 27,214,175, 95,143,178,178, 50,136,162, 8,133, 66, 1,171,213,127,149,133,214,173, 91,223,186,108,217,178,174, 75,151, + 46,189, 44,191,209, 45, 95,190, 28,148, 82,196,198,198,194, 96, 48, 32, 63, 63, 31,155, 55,111,134,221,110,135, 94,175, 71, 90, + 90,154,114,216,176, 97,189,102,204,152, 33, 2,152,238, 67, 58, 99,228,200,145, 17,225,225,225,120,252,241,199,169,213,106,157, + 67, 8,201, 24, 57,114,228, 43,143, 62,250,104, 76,118,118,182,229,254,251,239,223,103,181, 90,255, 13, 0,132, 16,145, 82,106, +243,161, 5,192,127, 36,203,102,179,201,251,244,108,101,101, 37, 26, 52,104,144, 28,160, 14, 23, 0, 40,118,238,220,153, 1,128, +159, 57,115,166, 26, 64, 62,220, 76,150,197, 98, 65,101,101, 37,170,170,170,108,101,101,101, 5,207, 62,251,172,253,243,207, 63, +231,157,235, 28,131, 23,163, 5,220, 98,105,219, 86,167,164,148,127,113,241,226,197,250,193,131, 7,115,122,189, 30, 21, 21, 21, +225,255, 91,183, 78,223,191, 95,175,180,217,115,223,216, 16,158,212, 33,127,231,207,103,144,155, 87, 6,139,205,134,180,134, 17, + 0, 36, 86,241,246, 79,192,249, 33,139, 43,162,229,110, 42,182,109,219,134, 91,110,185,197,117,173, 43, 20,138, 26,145,175, 64, +154,130, 32,224,150, 91,110,169, 21,225,217,178,101,139,215,232, 83, 32,220, 77,145,167, 57,242,102,192, 56,142,171, 85,127,201, +155,166,175, 34, 77, 0,181,230, 5, 99,180,228,252, 62,250,232,163, 16, 69, 17,207, 61,247, 28, 4, 65, 64,167, 78,157, 32, 8, + 2,210,211,211, 33,138, 34,110,190,249,230, 58,231,125,207,158, 61,232,220,185,179, 43, 77,157, 58,117, 66,183,110,221, 32, 8, + 2,122,247,238, 13, 81, 20, 49,104,208,160, 96, 52, 95,168,168,168,232,168,215,235,113,242,228, 73,240, 60, 15, 66,200,105, 74, +105, 71, 0,120,224,129, 7,126, 51, 24, 12, 77, 77, 38, 19, 30,120,224, 1, 98,177, 88, 58, 60,247,220,115, 47, 2, 96, 70,139, + 81,111,120,122, 17, 55,140, 83,166, 76,121,129, 16,178, 86,142, 80, 1, 53, 35, 79,222,198, 61,113, 51, 67,114,209, 94, 55,212, + 52,113,114,177, 95,166,159,117, 45, 30,198,202,179,232,208,189, 72,210,127, 68, 75,190,249, 6,107,180, 2, 97, 50,153,110,136, +139,139,147,255,215, 50, 89,238,191, 22,139, 5,169,169,169, 48,153, 76, 55, 4, 20,174,185, 35,208,176, 97, 67, 88,173, 86,124, +248,225,135, 80, 40, 20, 80, 40,254,240, 23, 22,139,255, 96,209,209,163, 71,207,238,217,179,167,115,151, 46, 93,162,190,254,250, +235,194,155,110,186, 41,118,240, 61,164,226,140, 0, 0, 32, 0, 73, 68, 65, 84,224,193,208,104, 52, 48, 26,141,176,217,108,232, +209,163, 7, 90,183,110,141,156,156, 28,252,239,127,255, 43,106,209,162, 69,131,189,123,247, 74,121,121,121,231,252, 72, 15,236, +223,191, 63, 8, 33, 88,183,110, 93, 17,165,244, 39,181, 90,253,253,172, 89,179,162, 44, 22,139, 52,110,220,184,243, 37, 37, 37, + 79, 0,176,170, 84,170, 5,131, 6, 13, 74,231,121,254, 51,135,195,225, 63,108,224, 5,207,125, 91, 85, 85, 5,181, 90, 29, 76, + 83, 18, 98, 73, 73, 73,123, 0,208,233,116,209, 0,126,147,103, 24,141,198, 26,102,216, 98,177,152,162,163,163,117, 0,224, 92, +199,179,110, 24, 0,128, 16, 18,171,213,106, 87,159, 59,119, 38,204,189,254, 92,100,100, 36,198,222,125, 55,215, 51, 35, 67,217, +241,134, 27, 6,189,244,214,210, 21,141, 98,194, 45,105,141, 98, 96,115,216,176,105,195,122,137, 74,182, 13,117,205, 59,163,238, +184, 23, 29,122, 70,180, 68, 81,196,214,173, 91,107, 77, 83, 40, 20,248,239,127,255,235, 87, 87, 54, 6,178,169,242, 85,116,230, + 81,212,229,247, 70, 34, 71,217,121,158,199, 7, 31,124, 0, 73,146,240,228,147, 79,214, 40, 78,116,215, 15, 6,119, 19,216,250, + 21, 9,128, 5, 57,243, 84,174,245, 61,211,235, 92, 39,168, 40,217,194,133, 11,131,138,104,101,102,102, 6, 52,174,238, 37, 12, +238,233, 58,116,232,144, 87,221,197,139, 23, 7,220,159, 14,135, 3, 89, 89, 89, 46,147, 42, 51,109,218,180, 7,146,146,146,226, +183,111,223,142,188,188, 60, 84, 85, 85,161,178,178, 18, 61,122,244, 72, 27, 48, 96,192,207,121,121,121,217, 71,143, 30,189, 35, +168, 29,204, 96,212, 1, 63, 17, 45,243,156, 57,115,142,204,153, 51,199,107,196, 74, 94,200,115,220, 19,183,168, 84, 55, 84, 27, +162, 88,217,188,161,186, 90,205, 79, 65,172,171,244, 44, 58,244,151, 39,207,136,214, 12,121,220,253,230, 27, 76,241, 97,144,225, +116,129, 16, 2,147,201,228,213, 96,185,155, 3,171,213,138,146,146, 18, 56, 28,142, 43,110,235,203,219,155,108, 32,163,117,248, +240,225,123, 39, 78,156,120, 49, 34, 34,162, 99, 97, 97, 97,129, 36, 73, 55,239,222,189, 59, 86, 16, 4,132,135,135, 35, 60, 60, + 28,223,127,255, 61,180, 90, 45, 30,125,244,209, 2,135,195,177, 45, 44, 44, 44,198,104, 52,254,146,151,151,247,146, 47, 93, 81, + 20, 7,245,238,221, 27, 7, 14, 28,192,229,203,151, 55, 18, 66, 58,221,119,223,125,183, 52,110,220,152,204,154, 53,203,244,251, +239,191,191, 13,160, 64,167,211, 45, 91,182,108, 89,191, 46, 93,186,132,141, 27, 55, 14,132,144,197,148, 82, 83,176,121,174,170, +170,170, 97,176,202,203,203, 81, 81, 81, 1,157, 78, 23, 84,115, 25,148, 82, 17,213,117,173,228,250, 86,174, 99,227,140,102,201, +199,135, 10,130, 64,171, 23,161, 94, 77, 22, 0,232,116,186,153, 75,151, 46,213,120,126,164,224,112, 56,144,159,159,143,240,240, +112, 76,123,233, 37,197,171, 79,223,215,153,215,199,239,230, 56, 2,139,149,150, 82,201,178,190, 42,255,206,237,193,230,155,113, +117,200,198,224,246,219,111,175, 85, 92,168, 80, 40,176,113,227, 70, 12, 31, 62,220,245,226,210,165, 75,151,128, 47, 87,178, 49, +184,237,182,219, 0, 84, 71,134,214,175, 95,239,181,216, 79,142, 72,249,195,221,192,240, 60,143,199, 30,123, 12,130, 32,224,221, +119,223,197, 83, 79, 61, 5,142,227, 48,111,222, 60,112, 28,135,151, 95,126, 57,168,124,123, 26,152,236, 55,170,127,147,158, 42, + 71,241,162,120, 0, 64, 88,120,184,156,161,160, 52,229,188, 11,130,224,138,100,221,112,195, 13, 16, 69, 17,233,233,233, 16, 4, +193, 21,201, 26, 50,100,136,251,126,244,187, 1, 89, 83, 16, 4,156, 58,117,202,149,230,244,244,244, 26,145, 44, 65, 16,144,153, + 89,235,101,220, 27,179, 35, 35, 35,103,180,110,221,186,205,252,249,243, 69,158,231,209,191,127,255,150,247,223,127,255,185,152, +152,152,152,153, 51,103,106,189,172,163, 1,208,177, 77,155, 54,186,160,119, 6,131, 81, 7, 60,189,136, 27, 81,238,117,174,130, +213,115, 51, 81,174,113,160,118, 49,160, 51, 66,182, 45,144,150,183,117, 3, 33, 0,213, 14,210,219,204,186, 24, 45,103,216,217, +239,198,180, 90,237,175, 5, 5, 5,233, 26,141,166,134,201,242,102,184,120,158, 71, 94, 94, 30,180, 90,109,157,218,169, 10, 68, +160,162, 67,167,169,121, 90, 30, 39,132, 12, 24, 50,100,200,167, 27, 55,110,108,184,105,211, 38,236,221,187, 23,177,177,177, 88, +184,112,225,165,252,252,252,123, 41,165, 27,131,217,110,211,166, 77,219,235,245,122,236,220,185, 19, 0,182, 2,184,239,145, 71, + 30, 33, 54,155, 13,139, 22, 45,170, 2,176, 46, 50, 50, 50,107,213,170, 85,157, 59,118,236,168,220,180,105, 83,249,222,189,123, +127, 8,210,100, 57, 36, 73,170,101,176,220,247,105, 88, 88, 88, 48, 17, 45, 91, 68, 68,196,225,242,242,242,209, 70,163,177, 92, +165, 82,133,149,151,151,155,221, 13,150,172, 47, 8,130,120,234,212,169,139, 0,210, 34, 34, 34, 14,195,173,136,209, 29, 65, 16, +250,247,239,223,191,134, 89,182, 90,173,200,207,207, 71, 94, 94, 30,172, 86, 43,186,116,233, 66,120, 98,227, 75,206,255,242, 64, + 16,105,100,132, 24, 66, 8,149,175,117,249, 43, 65,207, 65, 16, 4,172, 95,191,222, 53,206,113, 28,156,159,251,251,210,116,153, +162,141, 27, 55,250,140, 98,121, 41, 58, 12, 24, 26,151,151,127,239,189,247,170,187,183,112, 70,178, 56,142,195,148, 41, 83,160, + 82,169, 48,107,214, 44, 76,153, 50, 5,130, 32, 4, 44, 58,116, 55, 48, 41,207, 25, 92,211,229,162, 67,155,179, 62, 20, 33,196, +221,108,249,141,104,185,155, 55,127,209,188, 96, 74, 2,220, 53,229,245,212,106,181,215,226, 83, 47,154, 62, 55, 64, 41,253,142, + 16,114,166, 97,195,134, 59,211,211,211, 35,246,239,223,143,121,243,230, 41,204,102,115,147, 77,155, 54,185,182,235,109,127, 85, + 85, 85,105,130, 74, 56,131, 81, 7,124,121, 17, 39,133, 30,245,171,136,123, 49,158,159, 95,207,229,225, 54,205, 93,183, 16, 53, +159, 99,238,211, 61,205,149,231, 54,220,151,169, 81, 63, 11, 8,208,188, 67, 93, 42,195, 7, 19,209, 50, 24, 12, 63,172, 91,183, +174,219,221,119,223, 45,248, 43, 54,172,170,170, 66,124,124, 60,142, 28, 57, 98, 55, 24, 12, 63, 4,210,117, 56,130,111, 96, 61, +144,209,242,132, 82,186, 41, 33, 33,129,183,217,108,104,222,188, 57, 18, 19, 19, 97, 50,153, 80, 90, 90,202, 7,107,178, 8, 33, +138,174, 93,187,242, 0, 80, 90, 90, 10, 84,127,106,218,178, 69,139, 22, 56,112,224, 0, 74, 74, 74,190, 2, 48,120,198,140, 25, + 93,122,244,232,161, 88,177, 98,133,225,161,135, 30,250,202,102,179, 77, 15, 70, 95,146, 36,139,221,110, 79,229, 56,206, 90, 90, + 90,154,235,190, 63,227,227,227,163,117, 58, 29,201,207,207,247, 91,223,203,137,173, 99,199,142,251,206,159, 63,143,153, 51,103, + 22,206,158, 61,187, 69, 69, 69,197,229,178,178, 50,187,187,217, 50,153, 76, 92,131, 6, 13, 84,139, 22, 45,210, 0, 64,199,142, + 29,247,193,135,209,170,170,170,106,172,213,254,241, 98,108, 54,155,145,151,151,135,188,188, 60,228,231,231,163,162,162, 2,105, +105,105, 48, 24, 12,201,193,228,149, 17,122, 60,191,146,115,191,190,221, 31,228,117,185,214,129, 63, 12,204,237,183,223,238,170, +219, 37, 71,200,228, 97,245,234,213,238,197,134, 64,144, 70,235,189,247,222,195, 99,143, 61, 6,181, 90,141,249,243,231,215, 40, + 58,244, 52, 7,146, 36, 5, 52, 69,130, 32, 32,245,121, 35,242, 22, 68, 67, 20, 69,196, 60,148, 95,163,136,206,139,225, 8, 42, +157,179,103,207, 14, 73,209,161,187,102,114,114, 50, 0,224,131, 15, 62,192,232,209,163,177,125,251,246, 43, 46, 58,108,215,174, +221,242,181,107,215, 70, 28, 61,122, 20,229,229,229, 40, 44, 44,132,217,108, 70, 78, 78, 14, 0,239,165, 2, 0, 96, 48, 24,212, + 1, 19,203, 96,132, 22,159, 69,122,245,164, 27,178,237,249, 45,150,115,175, 36, 26,200,104, 5, 19,209, 50,155,205,243, 31,127, +252,241, 71, 6, 12, 24, 16, 29, 22, 22,134,139, 23, 47,214, 50, 89,149,149,149,208,235,245, 48, 26,141, 88,179,102, 77,185,217, +108,158, 31, 32, 15, 54,155,205,134,184,184, 56, 20, 21, 21, 65,242, 81,127,154,227, 56,104, 52, 26, 84, 86, 86, 2, 62, 76,129, + 47, 40,165,176, 90,173,176,217,108,176,217,108,176, 90,173, 1,223,146, 61,208,202, 13,191, 86, 85, 85, 1, 64, 85,163, 70,141, +154,171,213,106,156, 61,123, 22,168,254,178,111,192, 45,183,220, 34, 22, 23, 23,211,251,239,191,127, 7,165,244, 1,234,191,117, +124,203,182,109,219, 82, 1, 64,163,209,156, 4,128,156,156, 28, 91,105,105,105,141, 72,161, 86,171,165,195,135, 15,111, 72, 41, +197,182,109,219, 82, 21, 10, 5,133,143, 54,175, 0,152,190,253,246,219,163, 17, 17, 17,159,207,157, 59,247,238,161, 67,135, 30, +105,223,190,125,106, 85, 85, 85,129,209,104, 52,154, 76, 38,202,243,188, 34, 42, 42, 74,189, 97,195,134,223,118,239,222, 61, 32, + 60, 60,252,243,111,191,253,246, 40, 0,175,145, 55,157, 78,151, 99, 48, 24, 82,228, 99,234,110,178,242,242,242, 64, 41,197,153, + 51,103,160,213,106,207,215,101,135, 50, 66,139,252, 82,229, 25,121,241,156, 22,172,201,146, 17, 4, 1, 27, 54,108,240, 25,213, +169,139,113,115, 55, 69, 79, 61,245, 20, 22, 44, 88, 80, 43,162, 53,107,214, 44, 0,192, 75, 47,189, 20,116, 29, 45,160, 58,122, +149,183, 32, 26, 9,143,149,212, 72, 59, 0, 16, 57,125,117,108,210, 77, 16, 4,204,156, 57,179, 86, 37,117,247,162,189, 32,139, +248,106,164,179,160,160, 0,130, 32, 32, 58, 58, 26, 99,199,142,197,160, 65,131, 92, 69,144,117,213, 61,126,252,248,206,231,159, +127,190, 67,187,118,237,240,218,107,175,149, 68, 70, 70,134,253,223,255,253,159, 80, 90, 90, 90, 29, 94,244, 17,209, 98, 70,139, +193, 8, 30,191, 17, 45, 0, 65,153, 44, 95, 55, 96, 66,200, 0,247,182, 54, 40,165,101,132,144,177, 3, 7, 14,252,122,229,202, +149,154,166, 77,155,226,248,241,227, 40, 41, 41,129,197, 98,129, 66,161, 64,195,134, 13, 81, 90, 90,138, 79, 62,249,196,104, 48, + 24,198, 82, 74,203,252,105, 2,120,177,107,215,174,239,191,249,230,155,234, 78,157, 58,161,164,164, 4,149,149,149, 53, 90,177, + 14, 15, 15,135, 70,163,193,190,125,251,176,126,253,122, 35,128, 23, 3,104,214, 66, 54, 88,178,225, 10,100,180, 60, 52,117,114, + 84,199, 96, 48, 0,128,173,113,227,198, 9, 0,112,230,204, 25, 0,200, 78, 75, 75,155,209,180,105, 83,178,108,217, 50, 74, 41, + 93,239,205,100,121,104,150,244,238,221,251, 50,128, 4,139,197,162, 0,128,178,178, 50,107,131, 6, 13,226, 84, 42,149,164,209, +104, 36,181, 90, 45, 93,188,120,209,110,183,219, 21, 0,208,187,119,111, 11,128, 60,184,213, 5,241,208,148, 0,148, 47, 94,188, +120,198,184,113,227,210, 51, 50, 50,218, 61,252,240,195,135,239,191,255,126, 46, 49, 49, 49,170,162,162,194,116,250,244,233,203, +111,189,245, 86,197,158, 61,123, 6,136,162,120,110,241,226,197, 51, 0,148, 59,215,173,165,105,183,219,127,216,180,105,211,189, + 67,135, 14, 21,114,115,115,145,159,159,239, 50, 89,249,249,249,104,221,186, 53,118,239,222,237,176, 90,173,126,247,127, 48,199, +168,174, 48,205,106, 77,185, 89, 1,127, 6, 75,126,153, 10, 86,211,221, 20,141, 30, 61,186, 70, 20, 75,161, 80,224,203, 47,191, +244,122,223,240,188,174, 60,243,238,222,198,215,243,207, 63, 95,195,180, 77,155, 54,205,103,210,252,105,202,121, 23, 69, 17,101, + 31, 36,214,252,234,208,199,117,238, 47,157,242,189, 83, 20, 69, 76,155, 54, 45,232,136, 22, 60,234,104,121,211,148,243,126,211, + 77, 55,193, 96, 48,184,140,172,175,136, 86,160,253,233,112, 56, 30, 91,176, 96, 1, 13, 15, 15,191,177,188,188,252, 95,231,207, +159, 95, 98, 48, 24,186,151,149,149,121,205,167,140,217,108, 86,249,219,159, 87, 11,211,252,103,106, 94,175,248,125,229,179,219, +237,104,220,184,113,141,190,179, 56,142,171, 49,212,165,158, 1, 0, 80, 74, 55, 16, 66, 70,244,236,217,243,179,199, 30,123, 44, +172, 83,167, 78, 98, 74, 74, 10,170,170,170,112,246,236, 89, 28, 57,114,196,254,237,183,223,150, 27, 12,134,127, 81, 74, 3,126, +117, 70, 41, 93, 74, 8, 89, 63,120,240,224,151,123,244,232,241,224, 43,175,188,194,183,108,217, 18,101,101,101,136,138,138, 66, + 92, 92, 28, 78,156, 56,129, 53,107,214, 56,138,138,138,222, 7,240, 42,165,180, 86, 25,106,160,205, 88,173, 86,220,117,215, 93, +144, 36, 9,111,191,253, 54, 8, 33,117,121,189,181, 90,173, 86, 10,128, 20, 21, 21, 1,128,193,217,186, 52, 78,159, 62, 13, 0, +231, 82, 83, 83,195, 0, 96,211,166, 77, 4, 64,176, 93,250, 80,184, 69,182, 90,183,110,125, 22,168,221,173,137, 60, 31,213,145, +172, 64,233, 54,141, 25, 51,166,192, 96, 48, 12,126,234,169,167, 94,126,239,189,247,238,126,239,189,247,106, 45, 20, 30, 30,254, +249,188,121,243, 94, 29, 51,102, 76, 1,124, 68,179, 0,160,170,170,234,165,241,227,199,143,249,245,215, 95,195,212,106, 53,170, +170,170, 80, 92, 92, 12,171,213,138,180,180, 52, 20, 20, 20, 96,233,210,165, 21, 70,163,113,122,144,121,102,132, 24,119, 99,224, + 43,170, 21,200,100,249, 66, 16, 4,124,247,221,119,181,162, 88,193, 84,126,247,149, 78,111,117,147,252, 69,197,252,189, 20,201, +205,210,120,214, 23, 19,197,224,218, 6,244,167, 43, 8, 2,254,253,239,127, 67, 16, 4,159,145,172,186, 68,180,100,205,232,232, +104, 0,128,220,101, 82,102,102,230, 21,235,210,234,238,200, 92,221,234, 16, 66,102, 63,251,236,179, 51, 90,183,110,221, 18,128, +202,125, 31,212, 49,138,207, 96, 48,156,248, 52, 90, 14,135, 35,167, 85,171, 86, 0, 2,119, 92, 42, 99,179,217,114,130,217, 40, +165,116, 61, 33, 36,109,222,188,121,143,235,116,186, 1, 6,131,161, 3, 80, 93, 89,190,170,170,106,147,217,108,126,135,214,161, + 19,104,167,113,154, 76, 8,121,123,240,224,193,179,110,190,249,230, 81, 79, 63,253, 52,161,148, 98,209,162, 69,244,247,223,127, + 95, 13,224, 69, 74,233,239,193,106,186, 19, 29, 29,125,244,147, 79, 62,137,255,250,235,175, 97,179,217,240,206, 59,239, 32, 44, + 44,236,104, 29,210, 87, 32, 8,194,167, 25, 25, 25,247,236,222,189,123, 41,165,244, 23,165, 82,185,164, 87,175, 94,227,119,239, +222,189,156, 82,122, 68, 16,132, 37, 61,122,244, 24,255,211, 79, 63,173,162,148, 30,170, 67,242, 92,145, 45,187,221,123, 73,163, +183, 72, 86, 0,202, 39, 78,156,104,157, 56,113,226,211, 99,198,140,249,240,167,159,126,234, 94, 90, 90,218, 1, 0, 34, 35, 35, +127,237,214,173,219,190,149, 43, 87,158, 64,117, 36,203,111,101,125, 74,105, 33, 33,100,120,135, 14, 29,190,122,237,181,215,116, +237,218,181, 19,154, 55,111,142,236,236,108, 28, 62,124,216,254,241,199, 31, 87, 26,141,198,219, 41,165,193,244,193,200,168, 7, +228,232, 83,100,100,100,141,151, 40,249,147,255,186, 22, 23,202,200,154,158, 47,104, 60,207,251,212,244,215,108,130,140, 94,175, +119, 53,110, 26, 76,149, 5,201, 87,125, 2,183,116,202,154,242, 16,132,201, 10,248,133,160,179, 11,156,160, 53,131,105,222, 65, +167,211,193,102,179,185,116,131,248,242,179, 78,110,145, 82,250, 29,128,239,154, 55,111,126, 26, 64, 51,102,174, 24,140,171,199, +167,209, 42, 41, 41,241,218,139,124,168,112, 26,169, 87,157, 67,168, 52,127, 7, 48,134, 16,242,230,143, 63,254, 40,151, 35,204, +164, 1,250, 75, 12,196,241,227,199,135,138,162,248,223,207, 63,255,188, 7,165, 20, 17, 17, 17,123,178,179,179,255,175, 46, 26, +118,187,125, 34, 33,228, 17,249, 43, 66,139,197, 50,145, 16,242, 56,165,180,210,109,190,107,188,142, 80, 0,102, 74,105, 35, 31, +243,205, 8,222,100,201,152, 0, 88, 86,174, 92, 89, 9,224,103,252,209, 78,150,205, 57,152,224, 86, 92,232, 55,113,148,110, 38, +132, 52,159, 54,109,218,108,158,231,251, 87, 85, 85, 37,234,116,186, 11,118,187,253, 7,131,193,240, 34,165,180,184,142,105, 99, +132, 16,139,197,146,219,170, 85, 43, 1,168,253, 2,229,239, 65,238,239,197,202,225,112,228,180,104,209, 34,224,203,153, 23,205, + 92, 95,243, 40,165,231,210,210,210,184, 96,181,100,172, 86,107,129,191,116,166,165,165, 5,157, 62,183,116,250,205,123,106,106, +170,215,188,251, 67,146, 36,159,121,183,219,237, 87,164,233,111,127,250,195,104, 52, 94,142,141,141,173, 52,153, 76,162,217,108, + 22,237,118,123,141,240,163, 70,163,169,107,169, 0,131,241,143,229,138,219,168,186,150,113, 26,171,219, 66,168,103, 6,112, 79, + 8,116, 76, 30,227,149,254,198,235, 72,125, 68,132, 36, 0,134,128, 75, 5, 1,165,180, 8,192,253,161,208, 98,132,150,162,162, +162, 27, 67,173, 89, 92, 92, 28,242, 23,181,194,194,194,244, 80,107, 22, 21, 21,133, 60,157,127, 23, 77,127,228,230,230,134,252, +156, 96, 48,254,169, 92, 89,153, 0,131,193, 96, 48, 24, 12, 6, 35, 32, 4,192, 0,111, 51,234,242, 53, 1, 33,196,171,134, 63, + 2,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,250,211, 12,164,125,221,125,205, 72, 41,173,183, 1,192, 0,166,201, 52, +153, 38,211,100,154, 76,147,105, 50,205,127,234,192,138, 14, 25, 12, 6,131,193, 96, 48,234, 9,102,180, 24, 12, 6,131,193, 96, + 48,234, 9,102,180, 24, 12, 70,189, 66, 8,105,217,164, 73,147, 99,173, 90,181,202, 37,132, 76,168,231,109,141, 77, 79, 79, 47, + 86,171,213, 27, 8, 33, 45,235,115, 91, 12, 6,131, 17, 12,204,104, 49, 24,140,122,131, 16,210,178, 67,135, 14, 59,142, 31, 63, +222,122,211,166, 77,141, 18, 19, 19,223,168,207,237,117,237,218,245,245,237,219,183, 71,175, 91,183,110, 96, 66, 66,194,182, 43, + 49, 91,132,144,150,201,201,201,199, 90,181,106,149, 67, 8, 25, 27,202,244, 17, 66, 38,100,100,100,148,168, 84,170,245,204, 8, + 50,174,119, 8, 33,237, 9, 33, 29,254,234,116,252,213, 48,163,197, 96, 48,234, 5,217,100,237,218,181, 43,198,100, 50,225,248, +241,227, 40, 44, 44,172, 75,175, 7,117,230,228,201,147,151,119,237,218,133,164,164, 36, 44, 95,190, 60, 54, 53, 53,117,123, 93, + 12,141,156,230, 99,199,142,181,222,180,105, 83, 98, 92, 92,220, 91,161, 76, 95,247,238,221,103,109,223,190, 61,106,195,134, 13, +131, 98, 99, 99,175,200, 8, 50, 24,215, 50,132, 16, 21, 33,228, 30,142,227,246,181,111,223,254,215,118,237,218,253,194,113,220, +110, 66,200,104, 66,200,117,217,118,103, 32,136,243,235, 1,100,101,101,109, 5,128,204,204,204,155,254,194,244, 48, 24,140,235, + 0, 66, 72,187,118,237,218,237,217,179,103,143,214,104, 52, 98,213,170, 85,120,229,149, 87,108, 37, 37, 37,219, 1, 84,121, 89, +229, 39, 0,255,161, 65,116,189, 69, 8, 9, 7,240, 8,128,110, 94,102,235,162,163,163,123,207,152, 49, 67,188,229,150, 91, 96, + 50,153, 48,114,228, 72,211,201,147, 39, 59, 81, 74, 79, 6,208,117, 25, 67,163,209,136,253,251,247,227,246,219,111,223, 96,179, +217, 6, 7,147,231, 96,136,136,136, 56,242,221,119,223,181,109,212,168, 17,206,156, 57,131,241,227,199, 23,230,231,231,247, 9, +148, 54, 6,227, 90,135, 16,146, 2,224, 65,189, 94,127, 95,223,190,125,163,110,191,253,118,196,196,196,192,110,183,227,194,133, + 11, 88,187,118, 45,118,237,218,117,209, 98,177, 44, 0,240, 1,165,180,212,155,206,245,232, 69, 8,165, 20, 89, 89, 89, 20, 64, + 95, 0,200,204,204,220,250,215, 38,137,193, 96,252,221, 33,132,236, 50, 24, 12,233, 6,131, 1, 21, 21, 21,104,220,184, 49, 68, + 81,244,186,108, 65, 65, 1,118,238,220,137, 71, 31,125,244,104, 94, 94, 94, 31,234,167,223, 75, 66, 72, 84,231,206,157,119,109, +222,188,185,101, 88, 88,152,107,186, 36, 73,176, 90,173,176,217,108,176, 90,173, 48,155,205, 48,155,205, 80, 42,149,208,104, 52, +136,142,142, 62, 76, 41,245, 89,132,225,105,178, 14, 30, 60,136,113,227,198, 21, 22, 23, 23,135,212, 4, 17, 66, 90,198,197,197, +109, 91,186,116,105,108, 90, 90, 26,206,159, 63,143, 73,147, 38, 21,157, 59,119,174, 55, 51, 91,140,191, 43,132,144, 41, 35, 70, +140,152, 21, 31, 31,207,181,111,223, 30, 13, 27, 54,132,217,108,134,209,104, 4,165, 20,130, 32,128, 82,138,178,178, 50,108,219, +182, 13,155, 55,111, 54, 95,190,124,249, 19, 0,239, 80, 74, 79,201, 58,215,171, 23,113, 25,173,204,204,204, 43,239,170,158,193, + 96, 48,220, 32,132,252, 90, 86, 86,214,222,108, 54,163,170,202, 91, 0,171, 54,103,206,156,193,132, 9, 19,142,230,229,229,245, +244, 22,217, 34,132,132,119,238,220,121,239,182,109,219, 90,154, 76, 38,148,151, 7,238,119, 94,169, 84, 66,173, 86, 35, 38, 38, +102, 55,165, 52,195, 71, 90, 83,218,183,111,191,127,247,238,221,209, 70,163, 17,135, 14, 29,194,216,177, 99,173, 37, 37, 37, 59, +224, 61,250, 6, 0, 37,168,238, 71,245,156, 23,189,100, 0,143, 3, 72,241,177,174, 46, 54, 54,182,215,178,101,203, 20, 77,155, + 54,133,193, 96,192,232,209,163, 75, 78,158, 60,217,141, 82,122, 54, 96,166, 24,140,107, 12, 66,200,201,227,199,143,183,112, 56, + 28, 40, 42, 42,130,217,108,134,193, 96,112, 25, 45,158,231, 65, 41,133,221,110, 7, 80,253, 98,116,224,192, 1,108,218,180,137, +158, 57,115,230, 21, 74,233, 76, 0,215,173, 23,249, 71,150,151, 50, 24,140,122,103, 76,247,238,221, 15,253,239,127,255, 83, 43, +149, 74,172, 89,179,198,103,209, 97,124,124,124,187, 37, 75,150,164,166,165,165, 97,225,194,133,109, 71,142, 28,249, 8,128,217, + 94, 52, 31,217,188,121,115, 75,147,201,132, 67,135, 14, 97,252,248,241,103,243,243,243,143,120, 44,163, 75, 77, 77,237,253,214, + 91,111,137, 93,186,116, 65,121,121, 57, 6, 14, 28,104, 0,240,160,159,180, 78,222,178,101, 75,180,209,104, 68, 69, 69, 5,250, +246,237,139,226,226, 98, 5,128,155,125,173, 96, 52, 26,145,146,146,210, 18, 64, 45,243, 22, 19, 19,243,209,249,243,231,251,105, + 52, 26, 63,155, 4,172, 86, 43,114,114,114, 16, 25, 25,137,181,107,215, 70, 55,107,214,236, 37, 0, 19,253,174,196, 96, 92,163, + 88, 44, 22,124,241,197, 23,232,220,185, 51,218,180,105,131,202,202, 74,151,233,178, 88, 44, 46,147, 5, 0, 28,199,161, 91,183, +110,104,209,162, 5,121,242,201, 39,199, 2,152,249,215,165,188,254,145,141,214,140,235,177, 92,148,193, 96,252, 53, 80, 74, 79, + 18, 66, 58, 13, 24, 48, 96,251,234,213,171, 27, 12, 25, 50, 4,205,154, 53, 19,239,184,227,142,216,170,170,170,254,238,203, 18, + 66,162,198,143, 31,191,255,194,133, 11,169,206, 73,222,234, 94, 1, 64,183,176,176, 48,185,110,211,217,252,252,252,174,158,197, +140, 42,149,106,253,207, 63,255, 44, 42,149, 74,252,244,211, 79,152, 48, 97, 66,209,217,179,103, 3, 21,203, 69, 90, 44, 22,240, + 60, 15, 0,200,201,201, 9,152,191,243,231,207, 67,146, 36,179,183,121, 28,199,169, 14, 28, 56,128, 70,141, 26,249,213,224, 56, + 14, 10,133,194,125,146,215, 58, 43, 12,198,223, 0,155,197, 98, 65,215,174, 93,113,246,236, 89, 28, 56,112,192,101,184,138,138, +138,112,241,226,197, 26, 11,239,219,183, 15, 7, 15, 30, 68,159, 62,125, 60,117,174, 75, 47, 34, 0, 64,102,102,230,244,172,172, +172,155,254,226,180, 48, 24,140,235, 8,167,217,234,125,219,109,183,109, 91,186,116,105,108,227,198,141, 17, 22, 22, 22,238,101, +185,203,132,144, 35,162, 40,166,122,211,241, 70,126,126,254, 17,111,117,185, 18, 18, 18, 58, 89, 44, 22, 28, 60,120, 16, 99,199, +142, 45,116,214,249, 10, 84,247,233,181,254,253,251,223,182, 97,195,134,104,181, 90,141, 35, 71,142, 4, 83,116,152, 13,224, 29, +111, 51, 10, 11, 11,199,246,233,211,103, 26,128,104, 31,235,234, 90,180,104,209,107,255,254,253, 10, 66, 8,178,179,179, 49,122, +244,232, 18, 0,239, 6, 72, 39,131,113,173,242,242,136, 17, 35, 62,126,228,145, 71, 34,122,244,232,129,156,156, 28,151,225,234, +212,169, 19, 58,118,236,136,223,127,255, 29,235,215,175,199,193,131, 7,161, 82,169,208,172, 89, 51, 84,190,249, 22,240, 22,108, +178,200,245,234, 69, 92, 95, 29, 50, 24, 12, 70,125, 64, 8,105,169, 80, 40,222,142,141,141,189, 33, 55, 55,247, 41, 74,233,114, +143,249, 81,163, 70,141, 58,178, 98,197,138,134,217,217,217,104,218,180,233, 26, 74,233, 48, 47, 58,223, 82, 74,111, 63,115,230, + 12,122,246,236,233, 53,162, 69, 8,153,144,144,144,240,106, 69, 69, 69,153,193, 96, 24, 29,108, 5,115, 66, 72,203,230,205,155, +111, 95,179,102, 77, 3,173, 86,139, 99,199,142,213, 91,101,248, 86,173, 90,237,216,183,111, 95,140, 40,138,248,233,167,159, 48, +126,252,120, 86, 25,158,241,183,135, 16, 18, 6,224,217,180,180,180,103, 30,122,232, 33, 85,219,182,109,145,147,147,131,194,194, + 66, 92,190,124, 25,123,246,236, 1, 0, 36, 38, 38, 34, 49, 49, 17, 39, 78,156,192,206,157, 59,203, 43, 43, 43, 39, 82, 74,191, +254,107, 83, 95,191, 48,163,197, 96, 48,254, 84, 60, 43,139,143, 26, 53,170,235,178,101,203, 26, 22, 23, 23, 99,239,222,189, 24, + 57,114,228,139,148,210, 90,117,180, 8, 33, 47,228,229,229,205, 2,128,195,135, 15,123,214,209,242, 89, 57,189, 14,233,106,153, +146,146,178,125,213,170, 85, 13, 98, 98, 98,112,252,248,113,140, 30, 61,250, 72, 85, 85, 85,251, 43,213,244, 68,171,213,110,200, +203,203, 27,168, 80, 40,176,123,247,110,140, 29, 59,150, 53,239,192,184,174, 32,132,196, 1,120,169,109,219,182, 15,222,119,223, +125, 66,114,114, 50,114,115,115,241,227,143, 63,162, 89,179,102,184,112,225, 2, 54,111,222,108, 41, 44, 44,124, 27,192, 92, 74, +105,217, 95,157,230,122,167, 62,123,172,198,223,164,199,112,166,201, 52,153,230,159,167, 9, 96,253,209,163, 71,169,140,195,225, +160,185,185,185,116,195,134, 13, 52, 33, 33,225, 8,128,112,111,154, 0,194,219,180,105,115,252,196,137, 19,244,252,249,243,212, +106,181,186, 52,142, 31, 63, 78, 1,108,189,218,116, 2,104,153,152,152, 88,176,101,203, 22,122,226,196, 9,154,144,144,112, 33, +148,121, 79, 73, 73, 41, 40, 44, 44,164, 63,254,248, 35,141,141,141, 45, 0,208,242, 90, 60, 70, 76,147,105, 94,173, 38,170, 95, +164,150,117,233,210,197,177, 96,193, 2,250,224,131, 15,210,228,228,100, 7,128,143, 0, 36,134, 58, 61,215,242,192,190, 58,100, + 48, 24,127, 54,170, 61,123,246, 64,165, 82,185, 38,252,242,203, 47,238,237,104,121,109,183,129, 82, 90, 78, 8,233, 57,100,200, +144,237, 11, 22, 44,104, 99,179,185,170,118, 96,203,150, 45, 0,224,181,114,122, 93,160,213,245,202,250, 12, 30, 60,248,157,152, +152,152, 27,242,242,242, 94,190, 90, 77,119,178,179,179,159,234,208,161,195,236,138,138,138,242,186, 20,109, 50, 24,127, 55, 40, +165,217, 0,198, 17, 66,222, 56,112,224,192,139, 0, 40,128,215, 40,165,199,254,226,164,253,233, 48,163,197, 96, 48,254,108, 38, +220,127,255,253,158,149,197,131,106, 25,158, 86, 87,156,207,200,204,204,244,108, 25,222,103,229,244,186,226, 52, 63,131, 66,161, +229, 69,123, 57,128,229, 1, 23,100, 48,174, 19, 40,165, 71, 0,220,249, 87,167,227,175,132, 25, 45, 6,131,241,167, 66,171,235, + 81, 77,186,138,245,203,225,189,157, 45, 6,131,193,184,230, 96,157, 74, 51, 24, 12, 6,131,193, 96,212, 19,204,104, 49, 24, 12, + 6,131,193, 96,212, 19, 4,192, 0,111, 51, 40,165,155,130, 22, 33,196,171,134, 63, 2,233, 51, 77,166,201, 52,153, 38,211,100, +154, 76,243,250,211, 12,164, 93, 23,255,241,183, 32,200,207, 56,201,149,124,210,136,235,228, 51, 85,166,201, 52,153, 38,211,100, +154,193,107,162,250, 37,158,160,186,212,132,147,199,175,181,116,122,166,249, 90,205,251, 63, 69,243,122, 29,252, 86,134, 39,132, +184,118, 22, 33, 68, 2, 32, 81,231,222,188, 26, 8, 33,242,129, 8,137, 30, 35,244, 56,143,145,220,139, 58,101,199,137,193, 96, + 4,131,219,189,131,199, 31, 15, 91, 7, 0, 7, 33, 4,215,218,189, 36,148,207,185,250,200,251, 63, 89,243,122,193,171,209,146, +119, 24,207,243, 27, 26, 52,104,208,175,168,168, 72,114, 78,135, 82,169, 4,199,113, 16, 69,209, 88, 81, 81, 81,171,223,178, 64, + 16, 66, 62,138,143,143,159, 80, 92, 92, 44,113, 28, 7,181, 90, 13, 66,136, 75,179,180,180,180,206,154,161, 38, 37, 37,229,178, +209,104,212,123, 78, 87,171,213,166,115,231,206,133,253, 21,105,250, 51, 33,132, 16,133, 66, 49, 34, 58, 58, 58,178,176,176,144, +202,157,223,242, 60, 47,119,132,107, 47, 45, 45,253, 52, 88,189,232,232,232,125,209,209,209,145,242,250,132, 16, 20, 23, 23,151, +230,231,231,119, 7, 0,141, 70,179, 83,167,211,197, 8,130, 0,158,231,193,243, 60, 12, 6, 67,113, 81, 81, 81,207,122,203, 36, +163, 94, 89,189,122, 53, 63, 56,113, 82, 51,129, 26, 59,114, 28,141,144, 36, 82,102, 39,154, 95,214,231,126,244, 91, 48,235,143, + 26, 53,202, 81,223,105,100,252,129, 74,165,122, 59, 62, 62,254,190,202,202, 74, 3, 33,132, 18, 66, 80,253, 24, 64,173, 95,135, +195,145, 83, 84, 84,212,213,155,142,219,195, 86, 84, 42,149,243, 18, 18, 18,198, 27, 12, 6,131, 83,143, 18, 66,208,176, 97,195, + 26,122, 0, 96,179,217,114, 10, 11, 11,189,106,122, 18, 23, 23,183, 88,163,209,252,203, 96, 48, 84, 57,141,145, 11,143,135,249, +239,133,133,133,189,125,233,200,105, 85, 42,149,239,196,199,199,223,235,204, 59, 8, 33, 52, 54, 54,246,170,243, 30, 31, 31, 63, +190,170,170,170, 70,222,227,226,226,188,106,250,202,187, 55, 77,247,116, 18, 66, 16, 27, 27,123,213,233,188, 22, 53,175, 39,124, + 69,180, 56, 66,200,183, 61,123,246,236,187,117,235, 86,238,248,241,227, 92,235,214,173,225,112, 56, 32, 73,213,231,117, 82, 82, +146,182,174, 27, 35,132, 44,233,221,187,247, 93,219,182,109,227,190,253,246, 91,174, 91,183,110, 32,132,192,225,112,192,225,112, +160,125,251,246,154,171,201, 12, 33, 68, 47, 8,194,147, 74,165,242, 38,187,221,222, 6, 0, 68, 81, 60,102, 54,155,183,218,237, +246,249,148,210,202, 96,116,172, 86,171,182,160,160,160,214,190, 73, 75, 75, 83, 94,105,218,194,195,195,119,113, 28,151, 38,143, +203,134,195,153,110,175,191,148,210, 51,133,133,133, 25,190, 52,163,162,162, 92,154,190, 52, 60,167, 73,146,116,166,160,160,192, +167,166,211,100,141,236,221,187,119,196,166, 77,155,200,133, 11, 23,136, 70,163,129, 36, 73,112, 56, 28,176,217,108,104,219,182, +109,157,154, 5,137,140,140, 12,159, 50,101, 74,179, 91,111,189, 21, 95,126,249, 37,238,185,231, 30,244,234,213,235,148, 60, 95, +167,211,197, 28, 61,122,180, 69,116,116, 52, 12, 6, 3,202,202,202, 48,112,224,192,186,108,226,154,164, 71,231,198,175, 17,142, +184,218,138,162,118, 71,201,158,159,115, 95,186, 90,221,200,200,200,131, 74,165, 50, 94, 62,174, 28,247,199, 55, 45,190,142,191, +201,100,202, 47, 42, 42,234,236, 79,151, 16,146, 2,224, 54,158,231,155, 11,130,208, 10, 64,138,221,110,143, 7, 0,133, 66,145, +207,243,124,182,205,102, 59, 97,177, 88, 78, 3,248,142, 86, 55, 72,232,149,193,137,147,154, 17,187, 97, 84,133, 89, 26,162,109, + 58,183,165,225,247, 41, 39,181, 42,195,247,131, 19, 39,173, 14,214,108,253, 85, 16, 66, 90, 2, 88,137,234, 14,165, 31,164,213, +237, 0, 93,141, 94, 34,128,219, 1,180, 84, 40, 20,169, 86,171,181, 8,192, 1, 0,155, 40,165,167, 8, 33,201,177,177,177,203, + 37, 73, 50, 23, 23, 23, 79,162, 94,186, 17, 74,239,218,100, 63,199,113, 73,112,218, 8,137, 58,114,118,239,191, 16,146, 7, 20, +207,243,239,220,113,199, 29,247,174, 94,189, 90,123,224,192, 1,109,155, 54,109, 92,247, 39, 73,146,224, 25,136, 72, 77,245,219, +247, 55, 1, 32,112, 28,247,246,168, 81,163,238, 94,182,108,153,246,220,185,115,218, 70,141, 26,185, 52,221, 77,156, 76,163, 70, +141,130, 74,107, 76, 76,204, 71,183,222,122,235,184,165, 75,151,138,107,214,172,209, 52,104,208, 0, 49, 49, 49, 80, 40, 20,181, +150,237,217,179,167,228, 69,194, 29,142,227,184,119,134, 13, 27, 54,110,197,138, 21,218,189,123,247,106,219,183,111, 15,158,231, +175, 58,239,195,135, 15,191,251,139, 47,190,208,254,250,235,175,218,230,205,155,131,227, 56,112, 28, 87, 75,143,227, 56, 52,110, +220, 56, 40,205,219,111,191,253,238,149, 43, 87,106, 15, 30, 60,168,109,213,170,149,107,127,186, 21,219,213, 57,157,215,184,230, +117, 67,173, 7,166, 51,140,186,172,103,207,158,131,183,110,221,202, 3,192,193,131, 7, 81, 82, 82,130,196,196, 68,232,245,122, +168, 84, 42,152, 76,166, 58,133, 1, 9, 33, 31, 57, 77,150, 8, 0, 95,253,107, 56,206,136,192,163, 5, 22, 40, 20, 10,252,254, +251,239,224,121,254,138, 67,139,132,144, 62,225,225,225, 75,191,254,250,235,168,206,157, 59,115, 69, 69, 69, 72, 77, 77, 69, 73, + 73, 73,247,109,219,182,117,153, 52,105,210, 36, 66,200, 61,148,210,109,193,106,126,255,253,247,208,233,116,208,106,181,208,233, +116,176, 88, 44, 36,240, 90,222, 17, 4, 33, 41, 59, 59, 59, 78,175,215, 67,146, 36,215,224, 81,190,237, 66,146, 36,180,104,209, +194,234, 79,147,231,249,164,115,231,206,197,105, 52, 26, 80, 74,107,232, 57, 28, 14,168, 84, 42,247, 55, 7, 56, 28, 14,164,165, +165,249,212,148, 35, 89,178,201, 2,128,207, 63,255, 28, 9, 9, 9,136,139,139,131, 78,167,131, 70,163,169,241, 96, 15, 6,158, +231, 49,120,240, 96, 76,159, 62, 29,115,231,206,197,179,207, 62, 91,227, 70, 43,138, 34,162,163,163,177,110,221, 58,132,135,135, + 35, 57, 57, 25,162, 40,214,105, 27,215, 34,132, 35,209,187,247,159,119, 69,104,111,185,185,181,208,163, 75,242,123,213, 99, 18, + 56, 14,144,164,234, 71, 39, 33,160,118,155,116,249,167, 95,114, 3,182, 68,206,243,124,163,115,231,206,197,185,183,172,238, 15, +135,195,129,196,196, 68,222,111, 90, 9, 25,210,174, 93,187,175, 30,126,248, 97, 69,243,230,205,137, 66,161,128, 32, 8, 16,132, +234, 91,132, 36, 73,201,148,210,100, 73,146,250,230,231,231,211,133, 11, 23,190, 65, 8,185,131, 82,250,189, 55, 61,129, 26, 59, + 86,152,165, 33,219, 15,161,251,168, 1,207, 99,221,170, 41,221,123,119,146, 16,166, 53,254, 6,224,154, 53, 90,132,144,150,237, +218,181, 59,180,119,239, 94,181,213,106, 69,143, 30, 61,246, 16, 66,186,208, 43,104,193,157, 16, 18, 5,224,173,169, 83,167,142, +123,248,225,135,249,200,200, 72, 40,149, 74, 84, 84, 84,224,183,223,126, 27,255,233,167,159, 82, 66,200,127, 0,132,101,103,103, +167,239,219,183, 15,253,250,245,123, 28,192,147,158, 90, 28,199, 39,237,220,119, 54, 78, 30,191,125,112, 7, 69, 70,183,228,124, + 0,168, 93, 32, 67, 33, 57,164,156,189,135,114, 2, 26, 49, 66,200, 27, 35, 70,140, 24,187,122,245,106, 61, 0, 44, 90,180, 8, + 35, 70,140, 64,116,116, 52,180, 90, 45, 20, 10, 5, 68, 81,172,241,235, 71, 75, 46, 54,122,227,206, 59,239, 28,181,108,217,178, + 48, 0, 88,182,108, 25,134, 15, 31,142,152,152, 24,132,133,133, 65,169, 84,130,231,253,158,142, 94,137,137,137,249,168, 87,247, +238, 19,151, 46, 93, 10, 0,120,241,137, 39,112,235,141, 55, 66,175,213, 64,171,169,126, 7,166, 20, 80,242, 34,110,121,244,177, + 64,249,230, 0,188, 57, 98,196,136, 49, 43, 86,172, 8, 3,128, 3, 7, 14,160,160,160, 0,241,241,241,208,104, 52, 80, 42,149, +174, 60, 19, 66,160,209,248,142, 3,184,231,125,196,136, 17,163,190,248,226,139, 48, 0, 88,178,100, 9, 6, 15, 30,236,202,187, + 74,165,130, 66,161,168, 49,120,154, 78,111,154,119,220,113,199,168,149, 43, 87,134, 1,192,167,159,126,138, 1, 3, 6, 32, 42, + 42,202,181, 63,101,173,186, 28,163,107, 89,243,122,163,134,209,114,238, 48, 46, 62, 62,126,204,246,237,219, 93, 79, 83, 65, 16, +160, 82,169,160, 82,169,160, 84, 42, 93,197,135,193, 66, 8, 33,241,241,241, 19,182,109,219,230, 90,201,226,113,115, 80,169, 84, +117,126,128,187,233, 15,232,215,175,223, 23,107,215,174, 85, 43, 20, 10, 24,141, 70, 28, 57,114, 4, 17, 17, 17, 80, 42,149, 24, + 54,108, 24,223,179,103,207,152,190,125,251,126, 73, 8,185,155, 6,241, 69, 3, 42,226,178, 87, 0, 0, 32, 0, 73, 68, 65, 84, +165, 20,122,189,190,134,209,186,218, 34,102,141, 70,131, 53,107,214,128,231,121,175, 55, 48,247,255,113,113,113, 1,245, 8, 33, + 80,169, 84,216,181,107, 23,120,158,135, 40,138, 16, 4, 1,162, 40, 34, 43, 43, 11, 79, 63,253, 52,138,138,138, 64, 8,129, 40, +138, 8, 11, 11, 88,234, 73,162,163,163, 35,101,147, 5, 84,155, 32,141, 70, 3, 81, 20,137, 32, 8, 68, 46,218, 35,132,144, 96, +203,220, 57,142,195,103,159,125,134,215, 95,127, 29,207, 61,247, 28, 22, 47, 94,140,142, 29, 59,186,230, 11,130,128,242,242,114, + 68, 69, 69, 33, 42, 42, 10,106,181,250,138,207,133,107, 9,207,189, 51,111,254, 2, 45, 36,138,234, 74, 32, 18, 32, 1, 20, 20, + 18,149,144,159,251, 27, 94,153,254,239,160,159, 62, 42,149, 10, 59,119,238,116,153, 33, 65, 16, 64, 8,129,187, 65,146,135,132, +132,132,128,122, 10,133, 98,198, 55,223,124,163,252,236,179,207,176, 98,197, 10,215,185,165,211,233, 16, 25, 25,137,152,152, 24, +215,144,148,148, 68, 62,254,248, 99, 69,199,142, 29,103, 0,240,106,180, 56,142, 70,104,155,206,109, 57,106,192,243, 0,128, 81, +207, 83, 92, 62, 53,235, 6,174,244,229,136, 96,243,248,103, 67, 8,105,217,161, 67,135, 29,187,118,237, 82, 27, 12, 6, 72,146, +132,239,191,255, 94, 59, 96,192,128,237,132,144,222,117, 53, 91, 41, 41, 41,107,118,237,218,213, 51, 54, 54, 22,101,101,101, 40, + 47, 47,135,205,102, 3,207,243, 72, 78, 78,198, 27,111,188, 65,134, 13, 27, 54,121,252,248,241, 38,141, 70, 35, 71, 54, 82,188, +105,121, 94,106, 11,223,125, 47,146,210,234,243,135, 74,180,198,111, 73, 65, 54,158,120,234,149,160,210,216,184,113,227, 7,191, +252,242, 75, 87, 53,137, 70,141, 26,213, 48, 1,238,247, 40,121,240,101, 12,224,172, 4,221,164, 73,147,137,203,151, 47,119,105, + 54,104,208,192,117, 95, 18, 4, 1, 28,199, 97,251,246,237,152, 51, 99, 42,162, 98, 27, 97,193,187,139, 2,166, 51, 46, 46,110, +241,144, 33, 67,254,181,100,201, 18,215,180, 14, 77,155, 34,179,231,141,136,107, 16,142, 6, 81,213,247, 54, 42, 17,252,114,226, +172, 95, 45,249, 57,215,184,113,227, 73,171, 86,173,114,165,211,253,190, 12, 0, 6,131,193, 21,197,183, 88, 44,232,218,181,107, + 80,121,119,215,148,163,109,178,105,243,188,215,203, 47, 50,254, 52, 27, 55,110, 60, 81, 54,194, 0, 16, 29, 29, 93, 67, 67, 20, + 69,172, 90,183,212, 51,143, 87,173, 89,215,227,238,169,153,157,157,141,217,179,103,187,238, 73,114, 84,143, 16,130,196,196, 68, + 44, 88,176,192,159,166, 55,186, 1,136,117, 27,183, 0, 80,186,253, 22,162,186,135, 9,207,229,228,233, 34,128, 27,156,243, 28, + 0, 42, 0, 68,122,209,243,165, 83,132,234,110,132, 98, 61,150,247,220, 78, 45, 4, 0,200,202,202,162, 0,176,102,205,154,126, +183,223,126,251,206,162,162, 34,233,248,241,227,220,129, 3, 7, 32,138, 34,226,226,226,208,173, 91,117,111, 23, 86,171, 21,162, + 40, 66,167,211,145,200,200,200,124,249,193, 43,239, 68,247,178,118, 55, 67,195,149,148,148, 72, 27, 55,110,228,150,221, 49, 8, + 22, 10,116,154, 54, 7,131,135, 14,197,250, 68, 37,120, 0,221,143, 23, 65,171,213, 10,162, 40,218,228,131, 33,107,186,215,221, +242, 52, 73,132,144, 48,157, 78,247,241,119,223,125,167,230, 56, 14, 21, 21, 21,144, 36, 9, 61,123,246, 4,199,113, 56,124,248, + 48, 94,124,241, 69,124,245,213, 87,248,230,155,111, 52,157, 59,119,254,152, 16,210,134, 82, 90, 33,107,120,209, 4, 0,132,133, +133, 65,171,213,186,140,150,156,103,247, 16,184,188, 60,165, 52,183,168,168,168,139, 63, 77,135,195,129,225,195,135,131, 16, 2, +158,231,107,220,124,220,127, 21, 10, 5, 14, 31, 62, 92,235, 36,244,102, 16, 37, 73, 66,175, 94,189, 0, 0, 90,173, 22,122,189, + 94,238,247, 13, 0,208,169, 83, 39, 88, 44, 22, 52,104,208, 0,199,142,213,238, 98,202, 83,179,176,176,144, 94,188,120,145, 44, + 91,182, 12,162, 40, 34, 38, 38, 6, 90,173,150, 44, 93,186,116,170, 66,161, 72, 50,153, 76,146,197, 98,129, 82,169, 92, 32, 71, +183, 4, 65,168, 42, 43, 43,139,241,165,201,243, 60, 30,126,248, 97, 60,243,204, 51, 88,188,120, 49, 30,120,224, 1,120,206, 55, +153, 76,104,208,160,129,203,108, 5,147,247,171,165,222, 53, 37,138, 35, 7,215,227,232,175,155, 32, 57, 36, 56, 36, 10, 74, 29, +144,236,192,129,141,123, 90, 92, 58,115, 49,145,130, 2,206, 2, 14, 85, 89,165,189,111, 3, 85, 43, 0,223,110, 41, 50,191,237, + 43,157,242,190, 17, 4, 1, 54,155, 13,223,125,247, 29,126,251,237, 55,108,216,176, 1, 70,163,209,181, 31,211,211,211, 49,113, +226, 68,175, 70,203, 83,147, 82,186,228,194,133, 11,157,122,245,234, 69, 74, 75, 75, 81, 90, 90, 10,163,209, 8,135,195, 1,187, +221, 14, 65, 16,160, 86,171,161,209,104, 16, 31, 31, 15,147,201, 68,205,102,243, 18, 95,154,146, 68,202, 12,191, 79, 57,185,110, +213,148,238,163,158,167, 88,253, 58, 65,179, 38, 42,195, 15,251,195, 38,126,187,227,217,129, 0,168,228,244, 14, 28, 64,109, 14, +169,232,153,169,111, 77, 14,148,206, 80,224, 77,211,205,100,197, 24,141, 70, 84, 84, 84,223, 30,148, 74, 37, 86,175, 94,221,224, +182,219,110,219, 70, 8,233,227,203,108,121,211, 12, 11, 11, 75,230,121, 30,135, 15, 31,198,251,239,191,143, 31,126,248, 1,249, +249,249,151, 27, 53,106, 20,209,183,111, 95,238,137, 39,158, 64,167, 78,157,240,201, 39,159,168, 3,105, 82, 74,145,125,106, 59, +178, 79,239,128, 36, 81,183,168,184,247,255,190,222,128, 60,211, 89, 85, 85,101, 58,116,232,144,254,195, 15, 63, 68, 92, 92, 28, + 82, 83, 83,161,213,106,161, 86,171,107, 60,100,221, 31,188,129,174, 77,163,209,104,202,206,206,214,127,241,197, 23,136,137,137, + 65, 74, 74, 10,180, 90, 45,148, 74,165,235,133, 96,217,178,101,248,124,250, 88,100,159,248, 21,195, 51,107, 87, 19,240,212,212, +106,181,255, 90,178,100, 73,141, 16, 72,124, 84, 20, 4,145, 3, 47, 18, 68,245,191, 3, 0,112,249,199,175,125,182, 14,233,161, + 73, 42, 42, 42, 76,123,247,238,213,239,223,191, 31,146, 36, 33, 37, 37, 5, 6,131, 1,225,225,225,174,252,111,220,184, 17,195, +134, 13,195,103,159,125,134,244,244,244,128,121,175,172,172, 52,253,250,235,175,250,229,203,151, 35, 58, 58, 26,141, 27, 55,118, +229, 93, 30, 68, 81, 4,207,243, 72, 75, 75, 67, 89, 89, 25,244,122,189, 95,205,170,170, 42,211,129, 3, 7,244,203,151, 47, 71, + 84, 84, 20,146,146,146, 92, 17, 55,217, 28,189,254,222,244, 26, 26,106,210,240,170, 53,235,122,220, 61, 53,135, 15, 31,142,102, +205,154, 33, 60, 60, 28, 58,157,206,165,237, 79, 83,246, 34, 0,250,102,102,102,110, 69, 77, 98, 9, 33,107,221,182, 63,148, 16, +178,214,253,215,215,114,206,191,125,166, 78,157,218,117,238,220,185,179,211,211,211,191,216,181,107,215,231,190,244,124,233, 76, +157, 58,181,221,220,185,115,103,187, 47,239,101, 59,181,112,217,233,204,204, 76,226,204,164, 0, 0,173, 91,183, 70, 73, 73, 9, + 84, 42, 21,186,117,235,134,162,162, 34,232,245,122, 40, 20, 10, 80, 74, 49,121,242,100,254,217,103,159,141,227, 56, 14,118,187, +189, 90, 76, 16,124,149,181, 75, 28,199, 33, 35, 35, 3, 71,156, 37, 66,131,135, 14, 69, 82, 82, 18,228, 74, 30,106,181, 26,147, + 39, 79, 38, 79, 63,253,180, 32, 71, 51, 40,165, 48, 26,141,104,216,176,161,207,152,173, 32, 8, 79,124,249,229,151, 17,114, 72, + 94, 46, 58,227,121, 30,199,143, 31,199,155,111,190,137,241,227,199,227,252,249,243,104,212,168, 17,158,121,230, 25,253,220,185, +115,159, 0,240,170, 47, 77, 25,189, 94,239, 50, 89, 90,173, 22, 79, 60,241,132,208,179,103,207, 56,189, 94,143,176,176, 48,200, +197,128, 14,135, 3, 77,155, 54, 13,104,205, 37, 73,194,250,245,235, 33, 8, 66,192,136,150,243, 4, 12, 74,115,239,222,189, 46, +147,230,254,150, 68, 8,193,145, 35, 71, 92,166, 46, 8, 77,202,113, 28,116, 58, 29, 18, 18, 18,160,209,104,160,213,106,201, 23, + 95,124,241, 82,106,106,106,195,167,159,126,154, 43, 47, 47,231, 50, 50, 50, 48, 98,196, 8, 65,146, 36, 88,173, 86,180,107,215, +206,111, 26, 9, 33,216,186,117, 43,222,127,255,125, 60,240,192, 3, 94, 35, 90,114,101,201,240,240,191,252, 91,136,144, 33, 1, +176,218,109, 48, 84, 26, 93, 69,187, 14,135, 3,191,110,249,185,197,153,159, 79,181, 91,251,197,103, 34, 0,152,182,124,237,190, + 90,195, 17,239,173,108,217, 55, 90,177,119, 75,137,117,175, 63,125,142,227,240,216, 99,143,225,229,151, 95,198,157,119,222,137, +141, 27, 55,226,197, 23, 95,196,164, 73,147,106, 68,180,130,193,102,179,253,247,158,123,238,121, 96,245,234,213,173,158,127,254, +121, 78,142,104,105,181, 90,185,142, 23,204,102, 51,140, 70, 35, 78,156, 56, 33,221,127,255,253, 39, 45, 22,203,127,125,233,217, +137,230,151,255,103,239,188,227,163,168,186, 62,254,187,179, 53,187, 73, 54,155, 94, 33,116, 17, 16, 41,130,248,208, 75, 64,233, + 40, 93, 16, 17, 81,138,240,170, 15, 69, 68, 30, 5, 36, 52, 41,138, 8,138, 40,160, 72, 40, 10,130, 72,145,222, 68, 65, 64,170, +196, 64, 72, 72,175,187,217,190,179,115,223, 63,178,179,110, 54,219, 18, 64, 4,231,251,249, 44,100,230,206,252,230,204,150,153, + 51,231,158,123,174, 82,174,255,161,110, 2, 83, 79,119, 99, 81,112,187, 39,107, 25,136,162,101,233,128, 71,186,209,158,163,106, +133,130, 82, 80, 14,224, 40, 96, 50,233, 48,113,226,228,170,247, 37,221, 37,156,157, 44,163,209,136,223,126,251, 13,157, 59,119, + 70, 70, 70, 6, 46, 95,190,140, 6, 13, 26, 96,253,250,245,145,195,134, 13,243,234,108,185,114,225,194,133,183,154, 53,107,182, +188,172,172,172,168,172,172,108, 57,128,141,148,210, 18, 66, 72,163,212,212,212,143,246,236,217,211,254,127,255,251,159,200, 37, + 71,199,253,251, 64, 41,172, 86, 22, 6,131,201,171,131,197, 47, 83,234, 43, 61,201,113,238,180, 97,195,134,232,211,167, 15, 36, + 18,137,227, 97,205,185,219,204,213,225,242, 2, 5,192, 17, 66, 16, 23, 23,135,158, 61,123, 66, 42,149, 86,208,228,111,172, 61, +123,246,196,164,217,239,224,211, 73, 93,176,106,100, 3,116,155,155,235,213, 78,189, 94, 95,118,240,224, 65,197,127, 95,121, 5, +205,234,215, 71,132, 74,133,154,209,145, 80,200,101,144, 58,219, 68,124, 7,217, 41,165,148, 16,194,137, 68, 34, 60,246,216, 99, +200,205,205,197,141, 27, 55,112,227,198, 13, 48, 12,131,118,237,218, 57,162, 48,215,175, 95,199,236,217,179, 97, 50,153,252, 62, +247,250,245,235,163, 75,151, 46,144,201,100, 80, 42,149, 21,186, 12,249,247, 84,171,213,162, 94,189,122,216,190,125, 59, 30,121, +228, 17,159,154,143, 62,250, 40, 58,118,236, 88,225,253, 84, 40, 20,142,251, 6, 0,100,252, 92,230, 56, 70,124,124,124,149, 52, +247,158,190,133, 53,251, 14,194,100,230,160,209, 91, 43,236, 16, 27,161,194,177,175,167,249,117,238,188,230,103,159,125,134,146, +146, 18,199, 53,136, 15,154,240, 65,138, 26, 53,106,224,147, 79,220, 71, 50,157,124, 17,183,247, 42,111, 14,141,135,237,248, 47, +151,124,254,252,249,243, 92,247,247,165,231,220,238,178,191,217,197, 57,243,248, 37,118,119, 21,230,248, 31, 67,124,124, 60,248, + 60, 16,254,135,194,195,178, 44,182,109,219,134,168,168, 40,199, 43, 36,196,125,175, 0,165,148,242,121, 68,147,242,203, 83,132, +126,140,147,226, 38,128, 94,249,229, 63, 12, 62,135,104,235,214,173,112,118,100,130,131,131,189,118, 35,201,100,178, 78,173, 90, +181, 98, 76, 38, 83, 37, 39,107,254,252,249, 24, 54,108, 24, 30,121,228, 17,112, 28,135,178,178, 50,116,238,220, 89,242,225,135, + 31,118, 66, 21, 28, 45,165,178, 60,239,223,108, 54,227,208,161, 67, 8, 13, 13, 69,120,120, 56,194,194,194, 16, 28, 28,204,143, +156,244,250, 11,231,147, 1,251,247,239,239,248,242, 57, 71,177, 92,157,174, 19, 39, 78,248, 50,207,145, 92,249,228,147, 79, 34, + 48, 48, 16, 65, 65, 65, 8, 10, 10,194,158, 61,123, 28,219,180,110,221, 26, 28,199, 33, 42, 42, 10, 39, 79,158,244,218,253, 73, + 41,165, 82,169,212,177,189, 68, 34, 33,235,215,175,127,171, 78,157, 58,177,111,188,241, 6, 35, 18,137,112,246,236, 89, 92,186, +116, 9,181,106,213,242, 59,103,171,164,164, 36,251,173,183,222,178,189,245,214, 91, 0,128, 38, 77,154,160,164,164, 36,143,111, +215,104, 52,133,221,187,119,175,144,183, 81, 80, 80, 80,232,243, 13,248,135,195,113, 28, 88, 11, 11,189,209,136, 50,173,222, 17, + 29,202,203,202, 85, 79,123,243,117,201,226,137, 47, 2, 0,222, 92,182, 2,218,213,127, 93,200,190,125,115,104,212,128, 15, 54, + 77, 7,208,207,155,190, 94,175,135,201,100, 66, 98, 98, 34, 78,159, 62, 13,173, 86,139,110,221,186, 85,136,152,242,239,169,175, + 16, 61,165,212, 76, 8,105,219,187,119,239, 95,150, 46, 93, 90,183, 81,163, 70, 68,167,211, 65,175,215,195,249,255, 11, 23, 46, +208,141, 27, 55,166,233,245,250,255, 80, 74,205,158,244,246,220,254, 60,181, 71,252, 75, 91,126, 58, 43,234, 29, 85,239,154,234, +118,113, 93,182,240,182, 92,167, 49, 92, 53,218,232, 37, 80, 27, 96, 3, 7,202,114,176,217,187,189,238, 23, 10,133,226,163, 99, +199,142,133, 27,141, 70,156, 57,115, 6, 35, 70,140, 48, 23, 20, 20,200, 0,224,249,231,159, 55,111,216,176, 65, 86,175, 94, 61, +172, 95,191, 62,242,217,103,159,221, 12,224, 49,127,116, 41,165, 95, 1,248,202,117,125,120,120,248,135,183,110,221,234,228,156, +243,195, 63,172, 2,112,251, 80, 73, 57,192,106,181,194, 96, 48,161,180, 84, 11,179,197,106,191,102,114,176,217, 88,251,255, 28, + 88,251,117, 84, 38, 21, 7,183,108, 26, 91, 70, 41, 5, 67, 72,201,175, 23,178,221,102, 92,243,223, 11,119, 93, 92,254, 68,179, +220, 96, 35,246, 81,102,225,225,225,144, 72, 36,248,234,171,175,112,254,248, 30,200, 68, 20, 54,214, 10,214,106,129,205,106,134, + 68, 36,194, 79,103,111, 32,233, 81,223, 3,185, 9, 33, 52, 34, 34, 2,189,158,122, 10,189,159,122,170,124,120,155, 88,140, 32, +185, 28, 74,105, 64,121, 36, 11, 0,181, 49,240, 24,206,171, 8,199,219, 25, 29, 29,141, 95,127,253, 21,147, 38, 77,194,130, 5, + 11,160, 80, 40, 28,163,159,175, 92,185,130,148,148, 20, 36, 37, 37, 85,249,220,249, 8,222,244,233,211,145,149,149,133,101,203, +150,161,101,203,150,144, 72, 36, 40, 41, 41,193,127,254,243, 31,228,230,122,119, 48,121, 77,224,175,238, 61,153, 76, 86, 33,250, +196, 59,128, 85,253,140,156, 53, 95,236, 31,139, 29,199, 55,130,128,224,212,215,175, 87,184, 23,125,178,233,104,149, 53,103,205, +154, 85,193, 78,127,162, 89,254,226, 18,117,242,103,187, 51,246, 85,134,233,211,167,207, 32,132,236,156, 62,125,250,140,228,228, +228,139,254,232,121,104,223,101,255,191,151,211,186, 51,240, 64, 37, 71,139, 82, 74,101, 50, 25, 56,142,171,224, 92,185, 38,222, +242,161, 64,231, 80,163, 55, 24,134, 1,199,113,142, 47,133,235, 99,155, 72, 36,194,201,147, 39,113,242,228,201, 10,235,215,172, + 89,227,245, 70,206,178,108,163,224,224,224, 10,209, 44,169, 84,138,233,211,167, 99,196,136, 17, 14, 39, 75, 42,149,226,203, 47, +191,196, 19, 79, 60, 1,179,217,220,200,155,173, 82,169, 84, 31, 19, 19,195, 0,229, 23,162,192,192, 64, 50,105,210, 36, 17,203, +178,142,247,132,127,241,185,107,190,190, 52,196, 62,138,101,239,222,189,126, 69,180,252,205, 81,162,148,226,220,185,115, 21,156, + 55,126,212, 12, 0,156, 59,119,206,145,191,229,143,166, 72, 36,130,205,102,131, 66,161, 32, 82,169,148, 72,165,210, 4,222,201, + 18,137, 68,142,207,219, 57,103,207,215,185,223,190,125,187,179,183,246,188,188,188,135,182,140,131,197,106,133, 65,111,134,182, +204,128,247,146,191, 40, 95,249, 30,126, 6,240,115,219, 87, 39, 97,124,143,164, 46,168,152, 7,224, 19,231,155,227,214,173, 91, + 33,145, 72,176,125,251,118,168, 84, 42,244,237,219, 23, 42,149, 10,211,166, 77,195,144, 33, 67,252,142,104, 1, 0,165,180,148, + 16,210,246,255,254,239,255,126, 89,180,104, 81,205, 26, 53,106,192,108, 54,195, 98,177,192,108, 54, 35, 53, 53, 21, 27, 55,110, +204,208,235,245,109, 41,165,165,190,244,246,220,254, 60,117,219,145, 55,179,186, 13,121,214,112, 37,247, 71,228,228, 20,130,101, +111,131,179,177,176,176,229, 35,152,109, 44, 11,150,181, 65, 42, 21,169, 22,189,255,250, 62, 14, 20, 12, 67,204, 3, 7, 14,124, +166, 42,239,201,157,160, 86,171,155,228,231,231,227,143, 63,254,192, 11, 47,188,144, 83, 88, 88,120, 25, 64, 87, 0, 40, 44, 44, + 60, 54, 98,196,136, 70,235,214,173,139,169, 93,187, 54,130,130,130,124,134, 92, 9, 33, 65, 0,198, 3,232,142,242, 60, 16,158, + 34, 0,115, 34, 35, 35,229,103,206,156,169, 20,253, 63,114,228, 8, 0,184,141, 98, 82,216, 35, 90, 70, 35,242, 11,139, 49,230, +213,153,246,245,246,127,105,197,109,199,189,134, 0, 0, 40,200, 77,197,139, 99, 38,121, 29, 53,193,113,156,219, 27, 97, 21,114, +116,202,143, 91, 30, 41,226,223, 3, 4, 5, 5,149,119,191,109,223,136, 93, 31,188, 10,216, 44,160, 86, 3, 96,209, 3,150, 50, +112,102, 61,136, 84, 1, 88, 13, 94,117,237,122, 52, 40, 40, 8, 65, 10, 5,162,212,234,242, 34,144, 34, 17, 36, 18, 49, 56, 43, + 64,108,246,145,218, 28,192,249, 81, 24,132, 82, 74, 35, 34, 34,192,113, 28, 20, 10, 5,110,222,188,137,241,227,199,195, 98,177, +160,127,255,254, 48,155,205, 48, 26,141, 48, 24, 12,168, 83,167, 14,244,122,189, 95,231,206, 95,231,249,222,159,215, 95,127, 29, + 79, 60,241, 4,102,207,158,141,169, 83,167,162, 78,157, 58, 24, 55,110, 28, 54,110,220,136, 38, 77,154,120,213,117,126, 63,121, + 77,254,115,113,237,226, 3, 80,229,207,200, 85,179,124,124, 0, 42,125,238,147, 71,118,173,178,230,252,249,243,145,159,159, 95, + 41,146,197,255, 29, 31, 31,143,149, 43, 87,122,213,245,114, 60, 62,122, 20,237,166,185,151,203,118, 64,121,174,213, 47, 0, 76, +201,201,201, 23,147,147,147,123, 19, 66,118, 38, 39, 39,247,118,217,206,151,142,107,123,190,191, 54, 59,174,194,246, 80, 93, 39, +224,175, 72, 9,127, 35,181, 31, 12,192, 95, 23,121,165, 82,137,109,219,182,129, 31, 1,226,188,141, 59,120, 71,235,135, 72,123, +232,216, 30,201,114, 94,238,211,167, 15,106,215,174, 93, 33,154,165, 80, 40,188,126,121, 56,142, 67,122,122, 58, 46, 94,188,136, + 54,109,218,160,180,180, 20, 18,134,193,155, 23, 46,160,241,200,145, 48,219, 35, 52, 50,153, 12,175,188,242,138, 95, 9,237, 55, +110,220, 8,117, 94,142,136,136,200,108,223,190,125,252,233,211,167, 29, 9,242,246,110, 53,135,195,225,143, 19, 67, 41,197,115, +207, 61, 87, 33,138,229,236,100, 57,191,126,252,241, 71,192,143,174, 67, 74, 41,218,183,111,239,136,102, 5, 7, 7,227,187,239, +190, 3, 80,254, 89,117,232,208, 1, 0, 16, 29, 29,237,151, 38,127, 30,246, 4,120, 24,141, 70, 78,171,213, 50,103,206,156,129, + 76, 38,115, 68,240, 20, 10, 5, 2, 2, 2, 32,151,203,171, 53,130,232,223, 0,165, 28,204, 86, 43, 12, 6, 3,202,202,202, 43, +139,164,254,190,181,194, 54, 22,147,166,218,250,124,212, 74,171,213,226,167,159,126,194,183,223,126,139,150, 45, 91, 86, 74,134, + 7,124, 71,180,254,178,153,230, 19, 66,218, 77,153, 50,229,212,220,185,115,227,194,194,194, 96,177, 88,112,235,214, 45,172, 93, +187, 54, 75,175,215,183,163,148,250,125,129, 1, 5,172, 86, 22, 70,189, 9,165, 26, 45,222,125,255, 75, 79, 91, 50, 0, 80,148, +119, 21,125,250, 14,170,118, 25,149,234,144,149,149,245, 70,187,118,237,222,215,106,181, 37,122,189,126, 16,128,197, 78,205,250, +194,194,194,246,125,251,246, 93, 26, 22, 22,214, 50, 47, 47,111,134, 31,146,211,111,222,188, 57, 35, 49, 49,177,194, 74,123,244, +241,145,188,188,188,225, 29, 58,116,120, 7, 64,152, 83,115, 48,128,189, 0,220,222,125, 40,229, 28, 93,135,101,101, 6,168,212, +177,184,125,227,176, 79, 67,164, 34, 35, 40,231,185, 27,145,119, 12,220, 69,177,156,175, 79, 85,248,254, 80, 62, 39,144,191, 97, + 63,243,220, 72, 60, 51,126, 62,148, 18, 96,222,139,109, 81, 71, 13, 64, 17, 6,105,135,105, 32,234,196,242, 29,199,127,239,151, +254,212, 85,171,112,246,143,242,202, 48, 9,145,145,152, 50,100, 8,168, 21, 56,113,233, 18, 54, 29, 60,136, 33,157, 59, 67, 25, +224, 54,229,205,227,185, 75,165, 82,164,166,166,226,196,137, 19,120,244,209, 71,113,253,250,245, 10,101, 40, 40,165,126,157, 63, +165,148,242,131,152,228,114, 57, 36, 18, 9,114,114,114,208,187,119,111,199,131,254,225,195,135, 49,101,202, 20,140, 30, 61, 26, +157, 58,117,114,155, 55,235,170, 25, 25, 25,233, 8, 32,184, 14, 84,112,238,206,173,202,103,228, 78,147,167,186,159,187,179,230, +220,185,115,221, 14,168,240, 71,211,217, 23,241,194, 25, 84,140, 38,129,207,151,226, 29, 35,215,101, 0,161,252,186,233,211,167, +207,240,119, 63,231,101, 62, 34,230,162,235, 19, 49, 80,222, 39,234,188,146,191,217,242, 97,100,119, 4, 6, 6, 98,194,132, 9, +152, 53,107, 22, 34, 34, 34,124,230,214,240,158,172, 55,190,255,190,242,143,109,251,246,237,190,186, 14,175,132,132,132, 60,209, +185,115,103,148,150,150, 34, 35, 35, 3,129,129,129,104,252,193, 7,184, 48,126, 60,154,173, 90, 5,166, 75, 23, 16, 82, 94,108, +245,194,133, 11, 80, 40, 20, 87,188, 26,226, 2, 33, 4,193,193,193, 8, 13, 13,117,244,185,243, 14,151, 83, 68,203,167, 7, 71, + 41,197, 15, 63,252,224,246,169,177, 58, 57, 90,252, 69,224,212,169, 83, 21,242,179,156, 29,159, 83,167, 78, 57, 34, 90,252,110, +190,236,180, 63,229, 81, 94, 79,169, 84, 34, 44, 44, 12,114,185, 28, 10,133,162,130,147,229, 79, 52,207, 87, 65, 82,133, 66,113, + 58, 48, 48, 80,205,183, 75, 36, 18,104,181,218,146,194,194,194,214,190,108,253, 39,195,129,130,181,176, 48, 24,140, 40,211,250, +126,106,175, 42,252,192,148,109,219,182,225,201, 39,159,172,228,100,241,239,117, 85,161,148,102, 18, 66, 58, 45, 95,190,252,231, + 37, 75,150,132,150,149,149,225,139, 47,190, 40, 45, 43, 43,235, 68, 41,205,172,146, 22, 71, 97,181, 88,160, 55,154,160, 43, 43, +127, 15,254,188,184,213,199, 94,127, 47,148,210,141, 0, 54,242,203,110,146,126,255, 4,224,247, 69, 21,192,147,137,137,137,200, +201,201,169,176, 50, 61, 61, 29, 54,155,205, 68,203,235,100,189,228,116, 60, 17,165,212,107, 28,134, 82, 90, 30, 29, 53,152, 80, + 86, 86, 30, 5, 49,234, 10,170, 96,146,103,120,103,195, 83, 78, 86,117,186,120,136,125,164,179, 72, 36,194,196,137, 19,113,225, +252,121,116,141,211,160, 78, 76, 48,168,230, 54,164, 93,254,135,115,249, 10, 44, 94,234,118,208,170, 87, 82,156, 6,251, 44, 78, + 73,113,219,246,103, 63,175,189,238, 14,248,115,191,118,237, 26, 20, 10, 5,108, 54, 91,165,251, 77, 85,207,223,217,129, 89,186, +116, 41,166, 76,153,130, 47,191,252, 18, 23, 46, 92, 64,179,102,205,208,173, 91, 55,228,229,229,225,252,249,243, 48,153, 76,126, +219,233,156, 55,119, 45,237, 18,246,159,216,141,244,204, 27,200,202,201,168,146,125,158, 52,121,248,207,125,219,254,223,240, 92, +146,215,210,123, 30, 53,223,125,247, 93,228,229,229, 85,136,100, 57, 15, 32,243, 20,209,114,245, 69, 92, 40,112,201,133,226,151, +205, 46, 78,143,235,178,235,246, 0,144, 7, 64,228, 99, 63,215,229,130,228,228,228, 67,124, 36,204,174, 43,162, 62,242,179, 0, + 15, 5, 75,249, 55,133,191, 57, 59, 71,129,248,191, 3, 3, 3, 17, 28, 28,140,224,224, 96,168, 84, 42,159,145, 34,222,209,106, +159,166,173,144,235,197, 71,182, 0, 96,244,232,209,149, 34, 90,206,133, 61,221, 97, 50,153, 14, 31, 62,124,184,121,159, 62,125, + 68, 87,174, 92,129, 72, 36, 2,199,113, 48, 63,245, 20,154,173, 90,133,223, 95,127, 29, 29,111,222,132,209, 98, 65, 64, 64, 0, +246,236,217, 99,209,235,245,135,189, 26, 91, 25,226,236,104, 5, 6, 6, 34, 36, 36,196,225,104,248,227,165,243, 63, 94,111,249, + 15,252,203,121, 48,128, 47,248,156, 52,254,197,223, 96, 9, 33, 48, 24, 12,142,164, 78,231,237,189,193,119, 29, 58,255, 0, 25, +134,129, 90,173,118, 92, 60,248,136,150,191,209, 60, 95, 5, 73,149, 74,165,234,234,213,171,245,248,242, 19, 5, 5, 5,232,210, +165,203, 31,158,244, 30, 24, 56,192,194,218, 80,102, 48,162,204,224,189,235,161, 42,240,223,181,175,190,250, 10,169,169,169,176, + 88, 44, 72, 78, 78,174,228, 96, 85, 37, 25,222, 21, 74,105,106,139, 22, 45,184,167,159,126, 26,167, 78,157,130, 92, 46,183, 82, + 74,171, 92,255,138,163, 28, 44, 44, 11,163,193,128, 50,157,174, 90,182, 60,128, 56,188,234,203,151, 47,195,108, 54, 99,246,236, +217,182, 95,126,249,229, 16,128, 87, 1, 71, 29,167,225, 29, 59,118,156,211,171, 87, 47, 53, 33,100, 50,165,244, 75, 79,130,148, + 82, 88, 89,187,211,126, 23,223, 71,254,187,228,233,154, 84,157, 50, 43,206, 55, 86,142,227, 48,246,229,151,209, 45, 78,131, 1, + 45, 35,161,203,254, 3,202,144, 72, 16,117, 45, 44, 94,250, 3, 46,166,249,157,138, 73, 1,224,233,142,253,240,248,163,149,203, +131,181,235, 90,254, 76,118,236,167,211,200, 45,200,242,219, 78,160,252,220,117, 58,157,199,200,149,191, 17, 45, 94,147,216,203, +172, 72, 36, 18, 52,111,222, 28, 13, 26, 52,192,161, 67,135,208,162, 69, 11, 92,191,126, 29,215,175, 95,199,205,155, 55,113,225, +194, 5, 20, 23, 23, 87,201, 78,137, 68,130,239,246,110, 66,177,182, 8, 50,169, 12, 69, 37, 5, 72,191,125, 3,209,225,190, 75, +184,120,211,116, 14,168, 52,236,245, 46, 0, 32, 46, 50,164, 74,142,150,179,230,194,133, 11, 43, 57,239,119,161,100,207,105, 31, +203, 85,221,255,111,195,237, 85, 88, 38,147, 25,194,194,194, 20,206,253,171, 12,195, 32, 36, 36,132, 44, 88,176, 64,196, 48, 12, +130,131,131, 17, 18, 18, 2, 62, 92,232, 11,153, 76,102,168, 85,171,150,130,255, 34,242, 63, 68,149, 74, 37, 90,176, 96, 1, 89, +179,102,141,219,253,190,255,254,123, 95, 57, 90, 75, 70,140, 24,241, 82,102,102,102,104, 84, 84, 20,178,179,179, 33,147,201,202, +127, 28,157, 59,163,125, 90, 26, 44,229, 57, 71,184,118,237, 26, 62,253,244, 83,157,201,100, 90,226,231,251,227, 32, 40, 40, 8, +225,225,225,142, 46, 67, 62,162,227,228, 52,250,149,130,233, 45, 68,207, 63, 1, 86, 21,103, 71,139,191,193,190,250,234,171, 21, +156, 46,127,145, 74,165, 44, 95,249,157, 97, 24, 88, 44, 22,180,104,209, 2,121,121,121,142, 31,141,115, 36,207, 31, 71, 75, 34, +241, 94,144, 84, 44, 22,195,108, 54,163, 67,135, 14, 32,132, 96,197,138, 21, 15, 71,119, 36,199,145,160,160,112,196,197, 61,130, +200, 40, 35, 56,127,146, 71,252,132,101, 89,140, 27, 55,174, 66, 4,139, 31,217,200,119,253, 83, 74, 97,181, 90,125,141,150,242, + 8,255,187,246,231,247,237, 81, 3,112,116,121,233,116,198,106,235,220, 47,162,162,162,218, 16, 66,182,187,172, 46, 2, 48,135, +186,169,224,110,199,241, 65,103,100,100,160, 71,143, 30,216,189,123,183,232,219,111,191,237,186, 99,199,142, 75,245,234,213,203, + 24, 60,120,112,141, 87, 94,121, 69,222,161, 67, 7, 20, 20, 20,160,101,203,150,239, 1,248,210,147, 29,212,222, 5,107, 48,154, +160,211,221,253,232,168,183, 7,190,234,192, 95,115,102,205,122, 7,221, 98, 75,208,191, 89, 8,214,237, 60,142,225,205, 21,128, +217,191, 66,187,206,240,182,132,197,213, 70,173, 38,109, 42,181,203, 85,229, 93,118,181,154,180, 1,147,113,189, 74,218,174, 93, +111,174,215,203,234, 68,244,156,223,207, 49, 99,198, 96,218,180,105,232,222,189, 59,174, 95,191,142, 35, 71,142,224,250,245,235, +152, 52,105, 18,154, 52,105,130,102,205,154, 85, 73,115,199,254, 45,208,148,149,130, 33, 12,138, 74, 11, 97, 52, 25, 48,117,156, +207, 58,199, 62,237,228,185,177, 63, 25, 0,176,117,223,217,106,107,190,253,246,219,200,201,201,169, 16,201,186,147,188,172, 7, + 29,183,142, 86, 97, 97,161,219,126,192,200,200,200,220,164,164,164,168,236,236,108, 4, 5, 5,249,116,178, 8, 33,221,168,189, +214, 70, 78, 78,142, 91,205,224,224, 96, 75, 82, 82,146, 36, 54, 54,182,194,104,195,192,192, 64,199, 54, 46, 83,140, 56, 52, 1, +128, 82,170, 37,132,140,109,219,182,237,186, 31,127,252, 81,217,160, 65, 3,104, 52, 26, 80, 74,241,229,151, 95, 98,226,196,137, + 8, 8, 8,192,181,107,215,208,183,111, 95,189, 94,175, 31, 75,157,106,104,185,211,116,115, 30, 96, 24,198, 81, 21,223,141,147, +229,245,220,121, 13, 0, 88,190,124, 57,230,205,155,135, 25, 51,188,167,122,172, 94,189, 26,112,233,230,115,167, 73, 41,197,226, +197,139,239,154,102, 97, 97,225,151,206,237,129,129,129, 43, 6, 12, 24, 32,206,200,200,168,224, 92, 57,191,220, 92,152, 42,104, +250, 42, 72, 42, 18,137, 16, 29, 29,141,185,115,231, 34, 60, 60, 28, 49, 49, 49,149, 34, 49,190, 62,163,234,112,175, 53,109,148, + 59,179,104,254, 59,237,190,216,176, 67, 34,151, 1, 39,143,108,133,166,184, 98,119,146,201,242,215, 80,106, 89,139,174, 48,159, +253,201, 47, 59, 77, 38, 19, 22, 46, 92,136,119,223,125, 23,239,190,251,174, 87,155,236,159,187, 79, 77,111,248,227,108,185,213, +228, 40, 81, 6,134, 34, 32, 48, 14,141,155,132,130,163,172,135,189,171,160,121,135,248,161,249,203,233,211,167,251,134,135,135, + 35, 51, 51, 51, 82, 34,145,244,117,110, 52, 24, 12,168, 85,171,214, 35, 0, 28, 83, 89,121,210,156, 52,105,146,105,230,204,153, +242,161, 67,135, 98,192,128, 1, 24, 58,116,168, 92, 42,149,214,167,148,194, 98,177, 32, 51, 51, 19, 63,253,244, 19,242,243,243, + 43,165, 51, 56,107,114,148, 18,133, 82,141,128,192, 88, 52,126, 76, 13,142,171,218,251,232,201, 78,254, 38,232, 26,205,170, 98, + 65,106,183,215, 58, 0,248,229,167,237,152,245,250, 99,248,114,215,207,248,240, 52,240,184, 58, 15,141, 35,243,193,229, 95,193, +127,135, 63,129,197, 95,255, 10, 0, 56,114,216,187, 38,202,211,128, 60,218, 96, 52,120,157, 68,195,163,157,174, 61, 55,252, 53, +213,121, 27,111, 17, 45,119,154,252, 67,162, 86,171, 69, 73, 73, 9,214,173, 91,135, 23, 95,124, 17,121,121,121,184,121,243, 38, +254,248,227, 15,124,243,205, 55,142,209,236, 85,177, 83, 34,145,224,205,151,223,198,204,197,111,128,130,162, 97,189,198,152, 62, +254, 93,180,122,252,169,106,159,187,107, 68,139,199, 87, 52,203,155,230,178,101,203,170,245, 93,122, 88,169, 82,191, 2, 31,217, +138,136,136,112,124, 73,156,191,128,213,121,242, 21,137, 68, 96, 89,214,145,251,195,191, 0,160, 79,159, 62,248,254,251,239,253, + 25, 73,241, 35, 33,228,249, 70,141, 26,173,125,239,189,247,130, 58,118,236, 40,142,139,139, 67,171, 86,173,112,237,218, 53,236, +218,181,203,186,114,229, 74,157, 94,175, 31, 77, 41,221, 87,101, 35, 1,194, 79,105,227,252,170,176,129, 15, 27, 45, 22, 75,198, +245,235,215, 99, 23, 47, 94, 44, 98, 24, 6,203,150, 45,115,252, 40,249,130,175,206, 28, 57,114,132,229, 56,206,107, 87,141,213, +106,205,184,126,253,122,236, 7, 31,124, 32, 34,132, 56, 52, 25,134,113,104, 58,219,229,143,102,165, 19,183, 95,104, 60, 57, 89, +238,108,119,197, 87, 65, 82,177, 88,140,107,215,174, 97,214,172, 89, 32,132, 96,235,214,127, 86, 14, 79,117,185,112,165, 96, 77, +179,198, 81,161,125,158,105,215, 20,132,192, 98,174, 92, 13, 33,168,184, 60, 73, 94,214,162, 43, 6,124,176, 9,223,190, 57,196, +167, 46,165, 52,245,216,177, 99, 97, 11, 23, 46, 20,139, 68, 34, 44, 93,186,180, 66,209, 96,215,207,253,232,209,163,108,117,186, +253,248,223,179,197, 98,129,193, 80,189, 40, 10,165,244, 68,242,251, 51,147,214,127,245,131,132, 16, 51, 78, 30,222,138,210, 18, +247,233, 12, 50,137, 24,107,214,109, 99,165, 18, 81,245,146, 78,238, 30, 31,247,239,223,127,232, 71, 31,125,212,216, 93, 99, 70, + 70, 6, 56,142,243,150, 92,115,211,104, 52,226,246,237,219,208,235,245, 91,222,122,235, 45,203, 15, 63,252,240,210,179,207, 62, +139,102,205,154, 33, 54, 54, 22,217,217,217, 72, 77, 77,197,186,117,235,232,241,227,199,183, 0,152,224,205, 32, 74,233,246,249, +239,207,124, 97,221,215, 63,200, 24, 98,193,201, 35, 91, 81,234,226,180,187, 34,149, 74,240,249,151,219, 44, 82,169,228,170,183, +237,248, 73,227,239, 70, 36,203,149,190, 35,198, 99,192,242, 15, 81,183, 85, 15,204, 95,208, 13,159,191, 63, 8, 75,158,150,194, +178,121, 56, 30, 31,184, 30, 27,103,247, 4, 0,196,125,238,159,158, 68, 44,197, 45, 55, 17,171,146,210,242, 4,120,173,182,106, + 81, 83,254,220, 1,207,215,240,170, 70,180, 24,134, 65,237,218,181, 81,183,110, 93,180,109,219, 22, 45, 90,180, 64,231,206,157, +113,254,252,121,156, 63,127, 30,147, 38, 77,242,232,100,249,178, 83, 34,145,160,211,127,146,240,115,123,175, 31,105,149, 53,171, + 27,245,246,165,233,238,187, 52,126,252,120, 0,248, 87, 69,183,170,236,104, 57,143, 80,184,147, 46, 5,103, 77,179,217,236,232, +146,115,174,203,196, 39,199,251, 57,162,111, 31, 33,164,201, 59,239,188,243,122, 64, 64, 64,103,189, 94,255, 8, 0, 4, 6, 6, + 94, 51,153, 76, 7, 13, 6,195, 82, 74,105,201,157,216,234, 92,206,193,157, 9,222,246, 45, 46, 46,238,209,163, 71,143,125, 98, +177,184,182,243, 15,215, 57, 65,208, 25,142,227,110,230,230,230,122, 29,226, 94, 88, 88,216,163,123,247,238,110, 53,157,255,175, +138,166, 43,252,104, 81, 79, 78,150,187,227,184,226,171, 32,169, 88, 44, 70, 96, 96, 32,190,251,238, 59, 68, 68, 68, 84,197,188, +127, 60,231, 46,229, 45,244,214,222, 41, 66,126, 24, 64,228,128, 15, 54,221, 58, 84, 96, 78,236, 20, 33, 75,255,246,205, 33, 53, +189,237, 83, 80, 80,208,253,197, 23, 95,220, 45, 22,139,107, 3, 21,223,127,119,159, 5,203,178, 55,114,114,114,170, 92, 46,129, + 82,138,171, 87,175,114, 99,198,140, 41,200,207,207, 31, 84,213,253, 1, 96,250,172, 15,151,204,123,111, 98,248,211, 73,109, 90, +129, 1,204,158,147,127, 41, 1,168, 88, 34,202,152, 50, 99,217,203,213, 57,214,221,130, 82,170, 33,132,180,125,238,185,231, 38, +160,124,104,184, 43, 55, 1, 44,247, 34,177,188, 70,141, 26,143,137, 68, 34, 57,128, 89,148,210,116, 66,200,199,199,143, 31,239, + 14,224, 73,145, 72, 20,107,179,217,110,163,124,206,199, 77,148,210,115,190,108, 58,119, 41,247,149,102,141, 34, 19,158,238,246, +100, 15, 16, 66,205,102,239, 73,212,132,128,130, 82, 42,149, 74,174,158, 62,151,245,184,231,237, 42,204,192,113,215,187,236, 39, + 76,152,128, 9, 19,202,125, 72, 74, 41, 86,172,104,143, 45,191, 31,195,192,199, 51, 97,250,180, 29,136,202,235, 87,189,130,157, + 0,240,246, 59, 99,238,154,109,206,231,206,219,119, 55,114,180, 68, 34, 17, 10, 10, 10,112,237,218, 53,228,230,230, 66,175,215, +227,242,229,203,176, 88, 44, 40, 46, 46,198, 99,143,249, 85,134,205,173,157,119,235, 51,186,159,154,255, 38, 7,139,167, 74,142, + 22,203,178,153,190,102, 89,183, 90,173, 85, 26,149, 36,145, 72,140, 13, 26, 52, 32,238, 70, 39,240,127, 7, 6, 6,250,245, 56, +109,119,164,102, 1,152, 69,236,191,140,162,162,162, 59,246, 6,109, 54, 91, 86, 98, 98,162,200,147, 3, 3, 0, 44,203,122, 29, +117, 64, 41,213, 1,240, 30,223,173, 34,247, 66,211, 21,137, 68,162,123,244,209, 71, 29,185, 94,174, 53, 81, 8, 33, 80, 40, 20, + 94,179,115,125, 21, 36,213,233,116,217, 61,122,244,176, 57,183, 59, 23, 52,125,168, 33, 52,189,231,208,151, 18, 15, 21,152, 19, + 1,128,119,182,224, 57,255, 7,148, 82, 3,128,142,247,218,180,180,180, 52,243,147, 79, 62,249,149, 86,171, 29, 79, 41,173,118, + 54,255,140,255,173,240,167, 36,194, 63, 10, 74,169, 6,192,188,106,238,155, 14,160,139,203,186,115, 0,124, 58, 84,222, 56,119, + 57,255,174,215, 22, 99, 89, 54,179,110,221,186, 0,252,143,220,248,186,198, 91,173, 86,175,247,137,139, 8,193,140, 83, 64,249, + 96,236,242,150, 0, 0, 32, 0, 73, 68, 65, 84, 52,113,133,126,105, 26,141,198,162,167,158,122,170, 74, 97, 23,150,101,189, 94, + 67,156,207, 61, 54, 54, 22,113,113,113,142,255,121, 92,215,251,178,147,101,217,204,132,132, 4, 68, 68, 68,120,172,248,238,154, +147,229,143,230,221,254,140,188,105,198,197,173,119,183,203,125,177,243, 97,161, 74,142, 22, 63,135,225,221, 36, 55, 55,247,158, +204,185,226,181, 67,191,138, 20, 22, 22,186,123,170,253, 87, 80, 88, 88, 24,238,123, 43,239,248, 42, 72,154,155,155,235,181,160, +233,195,204,161,124,243,168, 74,235,236, 78,215,253, 70,167,211,213,244, 85,118,192, 19, 3, 7, 14,188,123,153,255, 2,247,140, +130,130,130,187,126, 77,191, 23,247,137,162,162,162,166,119, 91,243, 65, 57,247,123, 97,231,131,162,249,176, 32,100,169, 9, 8, + 8,184,165,186, 78,150,128,128,128,128,192, 95, 16, 0,221,220, 53, 84,101,164, 15, 33,196,173,134, 55,124,233, 11,154,130,166, +160, 41,104, 10,154,130,166,160,249,240,105,250,210,190,219, 35,141,239, 59,124,189,157,123,241, 2,208, 77,208, 20, 52, 5, 77, + 65, 83,208, 20, 52, 5, 77, 65,243,223,250, 18,186, 14, 5, 4, 4, 4, 4, 4, 4, 4,238, 17,130,163, 37, 32, 32, 32, 32, 32, + 32, 32,112,143, 16, 28, 45, 1, 1, 1, 1, 1, 1, 1,129,123,132,224,104, 9, 8, 8, 8, 8, 8, 8, 8,220, 35, 4, 71, 75, + 64, 64, 64, 64, 64, 64, 64,224, 30, 65,236,163, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4,238, 50, 98, 0,216,181,107,151,195,219, +234,213,171, 87,213,102,208, 20, 16, 16, 16, 16, 16, 16, 16,184, 67, 30, 86, 95,196, 49, 5,207,195,116, 82, 2, 2, 2, 2, 2, + 2, 2, 15, 30, 15,163, 47,226,200,209,114,246, 36, 5, 4, 4, 4, 4, 4, 4, 4,254,110, 30, 70, 95,196,225,104, 61,140, 94, +164,128,128,128,128,128,128,192,131,195,195,232,139, 84,136,104, 61,140,158,164,128,128,128,128,128,128,192,131,193,131,234,139, + 16, 66, 40, 33,132, 58, 47, 59,254, 22, 70, 29, 10, 8, 8, 8, 8, 8, 8, 8, 84, 29, 66, 8,165,148, 18, 79,255, 3, 66, 29, + 45, 1, 1, 1, 1, 1, 1, 1,129,106,193, 59, 83,206,203,206,209, 44,224, 30, 59, 90,132,144,110,130,166,160, 41,104, 10,154, +130,166,160, 41,104, 10,154, 15, 51,206, 14, 23,165,148, 56, 47,139,221,239, 34, 32, 32, 32, 32, 32, 32, 32, 32,224, 47,206,145, + 44,193,209, 18, 16, 16, 16, 16, 16, 16, 16,184, 75, 56,231,100,185, 46, 11, 57, 90, 2, 2, 2, 2, 2, 2, 2, 2,247, 8, 33, +162, 37, 32, 32, 32, 32, 32, 32, 32,112, 7,184, 38,193, 11, 93,135, 2, 2, 2, 2, 2, 2, 2, 2,119, 17,215, 17,136, 60, 4, +128,219,145, 3,148,210,253,254,138, 87,103,244,129, 47,125, 65, 83,208, 20, 52, 5, 77, 65, 83,208, 20, 52, 31, 62, 77, 95,218, + 85,241, 63,254, 41, 16, 66, 58, 2, 56, 4,160,147,253,255,191, 28, 47, 74,233, 61,123, 1,232, 38,104, 10,154,130,166,160, 41, +104, 10,154,130,166,160,249, 48,191,202,221,169,191,254,119,126, 9,201,240, 2, 94, 33,132,136, 9, 33, 30,187,152,125,181, 11, + 8, 8, 8, 8, 8,252, 27,224,115,180, 92,167,227,113,123,131, 36,132,212, 7, 48, 3, 64,136,211,234,211,148,210,100,151,237, +190, 6,160,116, 90,165, 3, 48,155, 82,122,221, 15,155,164,118,125,185,253,197, 1, 48, 2, 48, 1,208, 2,176,250,161, 33,112, + 15, 33,132, 60, 5,160,183,253,239,157,148,210,147, 85,105,127,216,136,139,139, 83,132,134,134,118, 63,123,246,172,236,242,229, +203, 56,122,244, 40, 93,179,102,141,165,184,184,120,111, 86, 86,150,225,126,219, 39,112,231, 16, 66,122, 0,152,110, 95,156, 79, + 41,221,115,135,122, 68,169, 84, 78, 10, 12, 12,236, 41,151,203,227, 88,150, 37,122,189, 62, 75,167,211,237, 99, 89,246, 3, 74, + 41, 87, 13,205,126, 97, 97, 97, 47, 53,108,216,176,254,205,155, 55,111,103,101,101,125, 13, 96, 51,128, 65,113,113,113,195,107, +213,170, 21,127,245,234,213,235, 69, 69, 69,159, 83, 74,183,223, 47, 59, 5, 4,254, 77, 80, 15,249, 89,128,231,100,248, 89,148, +210,225,206, 43, 8,169,172,209,165, 75,151,190,123,247,238, 85,114, 28, 7,254,165, 80, 40, 88, 0,163,124,216, 20,126,226,196, +137,196,241,227,199, 15,200,202,202,122, 66,171,213,182, 6, 0,165, 82,249,115, 84, 84,212, 47,203,151, 47,255,166,123,247,238, +153, 40,119,184,252,134, 16, 34,150, 72, 36, 47,134,134,134,246,100, 89,182, 5,165, 20, 18,137,228,108,113,113,241, 30,171,213, +250, 57,165,180,202,206, 27, 33, 68, 38, 22,139, 39,200,229,242, 30, 44,203, 54, 5, 0,177, 88,124,193,100, 50,237, 97, 89,246, + 99, 74,169,185, 26,154, 1, 50,153,108,130, 74,165, 74, 50,155,205, 77, 1, 64, 38,147, 93,208,104, 52,251,204,102,243,199,148, + 82, 99, 85, 53,239, 54,246, 40, 85,111, 74,169, 4, 0, 68, 34, 81,191,167,158,122, 42,145, 16,194,241,245, 65, 24,134,105,110, +179,217, 24,251,246,189, 9, 33,191, 80, 74,217,251,106,120, 53,137,140,140,156,199,113, 92,156,183,109, 66, 66, 66,158, 56,123, +246,108,195,148,148, 20,219,167,159,126, 90, 50,122,244,232,160,241,227,199,139, 87,172, 88,241, 49,128,201,174,219, 71, 68, 68, + 44, 97, 24, 38,194,159,227,115, 28, 87, 80, 80, 80,240, 70, 53,205, 23,184,123, 76, 95,185, 95,219,129, 82, 96, 66, 82, 48, 3, +224,142, 28,173,248,248,248,117, 47,188,240,194,208,166, 77,155,138, 41,165,176, 90,173, 48,153, 76, 13, 79,158, 60,217,105,235, +214,173, 79, 0, 24, 84, 21, 61, 66,200,203,211,166, 77,155, 59,103,206,156, 8,137, 68, 66,172, 86,107,189,148,148,148, 22,175, +188,242,202,255,173, 94,189,186,198,224,193,131,131,249,245,179,102,205,106, 69, 8,169, 67, 41,253,224,239,182, 83, 64,224,223, +134,155, 28,173,247, 40,165,239, 2,158, 29,173, 64,251,142,185, 0, 78,219,215,157,118,221,232,192,129, 3, 59,196, 98, 49, 31, +209,106,173,211,233,162, 81, 49, 10,230,142, 90, 35, 70,140,120,106,203,150, 45,243, 6, 15, 30,156,163, 84, 42, 27, 60,251,236, +179, 90, 66,136, 40, 37, 37,165,121,221,186,117, 21,125,250,244, 25,209,165, 75,151, 55,119,239,222,125, 20, 64,190,159, 39,217, + 56, 44, 44,108,219,194,133, 11, 19,123,244,232, 33,141,136,136, 0,165, 20, 89, 89, 89,241,187,118,237,122,250,189,247,222,123, +147, 16,210,159, 82,122,201, 31, 61,187,102, 43,133, 66,177,229,189,247,222,139,125,250,233,167,197, 49, 49, 49, 48, 26,141,184, +124,249,114,183, 61,123,246,116, 88,189,122,245,100, 66,200, 64, 74,233, 47, 85,208,108, 29, 18, 18,178,245,139,105,211,162,219, +188,248,162, 56, 44, 44, 12,148, 82,228,231,231,119, 59,182,126,125,167,113, 11, 23, 78, 38,132, 60, 71, 41,173,244,126,223, 79, +100, 50, 25,179, 97,195,134,102, 50,153, 12, 0, 96, 54,155,209,164, 73, 19,143, 30,252,131, 6, 33, 36, 33, 43, 43, 43, 68, 42, +149,186,109,183,217,108,232,208,161, 67,109,169, 84,138, 15, 62,248,192, 90, 80, 80,208,252,163,143, 62, 58,187,113,227,198,136, +143, 63,254,120, 32,220, 56, 90, 12,195, 68,100,102,102,186,213,180,217,108,176, 88, 44, 96, 89, 22,102,179, 25,141, 26, 53,186, +235,231, 36, 80, 45, 18, 1,224,135,243, 70, 0, 8,187, 83,177,192,192,192, 71,135, 13, 27, 38,206,207,207,135, 68, 34,129,197, + 98, 65, 78, 78, 14,154, 52,105, 34,250,234,171,175, 30,169,170, 94,189,122,245, 70,207,159, 63, 63,242,135, 31,126,176,108,216, +176,193,156,148,148, 36, 25, 61,122,180,170, 67,135, 14,141, 18, 18, 18,152,181,107,215,154,246,237,219,103, 29, 49, 98,132, 44, + 57, 57, 57,114,215,174, 93,125, 0,248,116,180,238,182,157, 2, 2,255, 66, 14, 81,151, 73,165, 1,188, 11,248, 46,239,112,154, + 82,218, 15, 0,164, 82,105,243, 26, 53,106,172, 99, 89, 54, 6, 0,196, 98,113,142, 68, 34,249,192, 98,177,252, 6, 0,132,144, +237, 28,199,245,245,161, 23, 62, 98,196,136,167,118,239,222,189,248,228,201,147,165,133,133,133, 49, 59,118,236, 48,190,249,230, +155, 55, 1, 32, 45, 45,173, 78,159, 62,125,226, 39, 78,156,152,217,189,123,247,229,157, 59,119,126,237,224,193,131,251, 80,222, + 37,233, 17, 66, 72,227, 38, 77,154,156, 56,114,228, 72,176, 90,173,174,208, 86,171, 86, 45,188,246,218,107,210,190,125,251,214, +237,218,181,235,113, 66, 72,123, 74,233,239, 62,236, 4, 33,164,117,253,250,245,247, 31, 56,112, 32, 40, 52, 52, 20, 37, 37, 37, +200,201,201,129, 94,175,135, 74,165,194,224,193,131,165, 29,219,181,173, 49,113,210,228,253,132,144,110,254, 56, 91,132,144,214, +109, 27, 55,222,191, 49, 57, 57,200,122,235, 22, 20, 10, 5,202,202,202, 0, 0,193,193,193,120,162,118,109,241,175,235,215,199, + 15,159, 58,149,215,252,219,157, 45, 66,136, 28, 0, 40,165, 38, 66,200, 78,145, 72,212, 79, 38,147, 49,253,250,245,195,254,253, +251,137,209,104, 20, 3, 64, 64, 64, 0,219,175, 95, 63, 40, 20, 10,152,205,102, 14,192,206, 7, 53,154,197, 35,147,201,144,154, +154, 90, 97,157, 86,171, 69,126,126, 62, 10, 11, 11, 97, 50,153, 80, 82, 82, 2,142,227,136, 66,161,200,231, 56, 14, 12, 83, 30, +208,243,164, 41,149, 74,113,237,218,181, 10,235, 88,150,133, 78,167,131,201,100,130,197, 98,129, 86,171, 85, 4, 7, 7,215,111, +220,184,113, 38,128,237, 69, 69, 69, 31,228,228,228,164,223,237,243, 19,240,139, 91, 59,127, 51,214, 4, 96, 6,112,227, 46,232, +113, 0,112,244,232, 81,228,230,230,162,160,160, 0,249,249,249, 72, 72, 72, 64,117,186,227, 82, 83, 83, 87, 62,246,216, 99,228, +226,197,139,123, 0,172, 72, 73, 73, 25, 85, 84, 84, 52,125,202,148, 41, 97,139, 22, 45, 42,154, 58,117,234,124, 0, 95,166,164, +164,188,250,232,163,143,246,188,114,229,202,234,251, 97,167,128,192, 61,160, 21,128, 72,251,223, 5, 40,191,238,134, 59, 45,159, + 71,249,239,150,223,206, 12, 64,230,230,127, 30,126, 57, 31,192, 47, 78,251,241,203, 85,198, 57, 71,203,121, 61, 3, 0,187,118, +237,162,252,203,221,206,209,209,209,147,186,116,233,178,248,204,153, 51,141,178,179,179, 67,179,179,179, 67,207,156, 57,211,168, + 75,151, 46,139,163,163,163, 39,241,219,217, 51,238,225,180,236, 60, 68, 83,122,226,196,137,196,109,219,182,205,223,191,127,127, +105,243,230,205,205, 7, 14, 28, 96,187,119,239,158, 7,128, 5,192,118,239,222, 61,239,224,193,131,182, 54,109,218, 40,118,239, +222,157,113,252,248,241, 37, 91,182,108,137, 6, 32,242,160, 9, 66,136, 68,173, 86,127,119,248,240,225, 74, 78,150, 51, 53,106, +212,192,206,157, 59, 85,106,181,122, 59, 33,164, 66,136,193,141,102, 64, 64, 64,192,214,131, 7, 15, 6, 5, 7, 7, 35, 47, 47, + 15, 18,137, 4, 81, 81, 81, 40, 45, 45, 69, 78,118, 54,210,255,248, 3,140,217,140,165,239,207, 9, 86, 40, 20, 91, 8, 33, 50, + 95,154, 33, 33, 33, 91, 55,206,155, 23, 84,184,127, 63,206,205,157, 11,139,197,226,232,114,181, 88, 44, 56, 62,126, 60,242,127, +250, 9,107,103,205, 10, 10, 9, 9,217, 74, 8, 9,240,166,121, 55,112,214, 36,132,140, 7, 80, 4,160,136, 16, 50,158, 82,122, +178, 73,147, 38,103, 46, 95,190,140,246,237,219, 99,243,230,205,143, 79,153, 50,101,252,148, 41, 83,198,111,222,188,249,241,246, +237,219,227,242,229,203,104,210,164,201, 25,231,252,172,123,109,231,189,212,180,217,108, 21, 94, 28,247,215, 61, 38, 46, 46, 46, +111,219,182,109, 24, 60,120, 48, 35,147,201,178,135, 12, 25, 34, 63,118,236, 24, 5,176,179, 42,118, 26,141, 70, 24, 12, 6,232, +116, 58,164,165,165, 41, 22, 46, 92,216,238,221,119,223,173,183,127,255,254,248, 25, 51,102,140,139,140,140, 60, 27, 19, 19,147, + 88, 21,205,170, 34,104,122, 36, 7,128, 5,229, 15,119,233,119,162,217,181,107,215,199,234,213,171, 23,157,114, 49, 20,197,210, +134,224,164,106,112, 82, 53,108,225,173,144, 42,123, 6, 53,107,214,140, 14, 14, 14,126,170, 42,154,148,210, 13,191,255,254,251, +147,148,210,119, 41,165,133,148,210,197, 83,167, 78,125,143, 16,114,116,234,212,169,115, 40,165,139,237,235,231, 94,190,124,185, + 13,165,116,227,253,176,243, 78, 17, 52,255,157,154, 62,124,145, 72, 66,200, 78, 66,200,206,183,222,122,171, 51,128,112,151,229, +255, 56,111, 7, 64,230,238,127,254,229,180, 62, 18, 64, 47,167,253, 34,221, 28,219, 39,212, 62,145,180,243,139,111,115,140, 58, +236,213,171, 23,233,213,171, 23,223,112,154, 16,178, 3,192,105,169, 84,218,188, 89,179,102,253,126,252,241,199,224,200,200,191, +142, 31, 25, 25,137, 45, 91,182, 4, 55,110,220,184,159, 84, 42,109, 14,224,180, 74,165,218, 1, 55, 93,140,118,212,227,199,143, + 31, 48,114,228, 72, 77,243,230,205, 1,160,228,210,165, 75,202, 54,109,218,232, 88,150, 37, 44,203,146, 54,109,218,232, 46, 93, +186,164,180, 90,173,218, 86,173, 90, 5,118,237,218,245,230, 27,111,188, 49, 2, 64,128, 7, 77, 0, 24,182, 96,193,130,132,208, +208, 80,111,111, 0,180, 90, 45,162,163,163, 49,126,252,248, 24,137, 68,242,146,183, 55, 76, 44, 22, 79, 88,176, 96, 65,148, 90, +173, 70,113,113, 49, 18, 18, 18, 96, 54,155,113,237,218, 53, 24,117,101,176,106, 53,176,106, 74,144,255,231,117,168, 37, 98,140, +232,219, 59, 90, 44, 22, 79,240,166, 41,147,201, 38,124, 62,117,106,180,249,230, 77,164,109,222, 12, 27, 91, 57,248,195, 90, 44, +184,240,217,103, 48,102,102, 98,254,152, 49,209, 50,153,204,171,230,221,196, 30,201, 90, 68, 41, 85, 80, 74, 21,132,144,229,255, +249,207,127,190, 82, 40, 20,227,147,147,147,123,236,221,187,247,233, 35, 71,142,116, 98, 89, 86,194,178,172,228,232,209,163,237, +141, 70,163, 88, 46,151, 67, 44, 22,187,117,208, 31, 6, 36, 18, 9,164, 82, 41, 20, 10, 5,218,181,107,247,231,154, 53,107,172, + 9, 9, 9,146,173, 91,183,134,198,197,197, 5,174, 88,177,162, 68,171,213, 46,240, 87,207, 98,177,192,100, 50,193, 96, 48,192, +104, 52,226,192,129, 3,181, 39, 78,156, 40, 54, 26,141,182, 62,125,250, 20, 89,173, 86,211,212,169, 83, 85, 97, 97, 97,111,222, +203,243, 18,240, 8, 11,160, 12,229,142,150,137, 95, 73, 8,145, 19, 66,154,242, 17, 95,127, 40, 41, 41, 89,253,249,231,159, 39, + 48,114, 53,142,153,123,226, 27,238, 61,236, 13, 89,129,188,196,255, 34, 42,161, 30,134, 14, 29, 26, 69, 41, 93,113,167, 6, 83, + 74, 63,162,148,118,160,148, 46,175,206,254,247,218, 78, 66, 72, 98, 80, 80,208,102,149, 74,117, 44, 40, 40,104, 51, 33, 36,177, +186, 90, 60,221,235,147,110,253, 26,137, 50,187,215, 35,180, 95, 35, 81,102,247,250, 85,175,245, 36,240,207,196,197, 23,113, 38, +159, 82,218,155, 82,218,123,254,252,249,243,248,149, 78,203, 10,127,244,121, 13,231,117,118, 7,235,142,224, 71, 26, 58,191,248, + 54, 71,215,225,174, 93,187, 40,127,114,206,163, 11,107,212,168,177,110,221,186,117,193,174,162,217,217,217,208,104, 52,152, 57, +115,102,240,200,145, 35, 39,103,100,100,188,224,195, 14, 89, 78, 78, 78,139,225,195,135, 7, 88, 44,150, 98,142,227, 24,141, 70, + 35, 14, 9, 9,177,241, 27,132,132,132,216, 74, 75, 75, 37, 58,157, 78,100,179,217, 76, 35, 71,142,148,141, 25, 51,230, 9, 56, + 69,180, 92,137,140,140, 76,234,217,179,167,204, 83,187,213,106,133, 78,167,131, 78,167,131,197, 98, 65,187,118,237,228,107,214, +172,233, 14,224, 19, 79,251,200,229,242,164,164,164, 36, 73, 81, 81, 17, 66, 66, 66,144,158,158,142, 27, 55,110,192, 84, 86, 6, + 75,153, 6,150, 50, 45, 88,173, 6, 84, 83,138,194,235, 87,209,230,209,134,210,175,229,242, 30, 0,150,120,210, 84,169, 84, 73, +109, 70,141, 18, 7, 6, 6,162,211,240,242,113, 6,187, 31,125, 20,212,102, 3,103,179,193,198,178,232,113,237, 26,172, 86, 43, + 24,134, 65,171,162, 34,177,106,253,250, 36, 0,139,189,190,171,247, 8,185, 92, 46,222,176, 97,195, 48,153, 76, 6, 74, 41, 49, +155,205,216,187,119,239,253, 48,229,190, 34,147,201, 16, 16, 16, 0,139,197,130, 90,181,106, 25,134, 15, 31,126,226,253,247,223, +175,201, 48, 76,160, 84, 42,253,177,176,176,112, 94, 86, 86, 86,154,191,122, 86,171, 21,102,179, 25,102,179, 25, 6,131, 1,127, +254,249,103, 76,237,218,181,201,248,241,227,109,122,189,190,206,135, 31,126,152,186,119,239, 94,229,130, 5, 11,158, 5,240,218, + 61, 60, 53, 1, 23,236, 81,233,144,154,225, 98,157, 68,132, 50, 0,193,118,167,224, 89, 66, 72,155, 70,141, 26,133, 94,190,124, +185,152, 16,114, 10,192, 55,148,210,108,111,122, 28,199, 17,142,227,240, 74,235, 18,140,127, 74, 4,171,181, 20,165,165,165, 72, + 79, 79,199,165, 75,151,240,243,207,126,167,139, 86, 32, 32, 32,224,165,160,160,160,238, 1, 1, 1,181, 88,150,101,202,202,202, +210,245,122,253,126,142,227, 86,243,133,124,170,194,189,178,147, 39, 48, 48,112,225,140, 25, 51,218,134,132,132,224,183,223,126, +171,179,105,211,166,133,184,195,228,250, 0, 9,179,118,201,178, 21,241,241, 81,106,156, 63,242,125,252,188, 85, 41,107, 1, 36, +220,145,161, 2,255, 8,156,125, 17, 23,126, 1,208,203, 62,194,189,183,155,118,191,184,211,253, 61,225,156,159,229,218,230,112, +180, 60,156, 24, 88,150,141,113,142,100, 81, 74,145,157,157,141,219,183,111, 35, 63, 63, 31,161,161,161,176, 88, 44, 49,126,216, + 33,215,106,181,173,195,195,195,245, 18,137,196,100, 48, 24,160, 84, 42, 57,137, 68, 66,237,199, 33,246, 81,139, 54,147,201, 68, +196, 98,177, 53, 56, 56, 56,200,100, 50, 53,132,151, 92, 50, 74,105,235,240,240,112,183,109, 38,147, 9,101,101,101,208,233,116, + 40, 43, 43,131,201,100, 66,116,116, 52, 88,150,109,225,205, 80,150,101,155, 70, 70, 70, 34, 43, 43, 11, 10,133, 2,153,153,153, + 48,151,105, 97,209,106,193,234, 52,176,149,150,130,211,104,192,233, 52,176,154,245,136,111,240, 40,248, 17,137,158, 48,155,205, + 77,195,195,195,161,211,253,149,110, 70,237, 14, 22,203,178, 96,237,201,209,124,119, 98, 68, 68, 4,248, 17,137,127, 7,246,156, +172, 41, 12,195, 44,151,203,229,226,113,227,198, 33, 59, 59,187,194,119, 98,220,184,113,142,156,172, 14, 29, 58, 28, 13, 8, 8, + 96,243,243,243, 97, 50,153, 36,127,151,157,127, 55,132, 16, 16, 66,202, 63, 35,150, 69, 68, 68,132,174,160,160,224,231,226,226, +226, 97,213,209,179, 90,173,252,136, 46, 24, 12, 6, 80, 74,241,219,111,191, 33, 32, 32, 64, 98,179,217, 46,178, 44,171,148, 72, + 36, 96,236,201, 95, 2,127, 15,132,144, 78, 13,213,178, 37,201,109,162,212,205,250, 4,234,148, 50,145,142, 75,111, 86,235,139, + 69,151, 54,141, 28,241, 82,240,236,217,179, 19, 35, 34, 34, 2, 82, 83, 83,141,115,230,204,169,189, 97,195, 6, 2, 31, 15, 65, +183,110,221,250,118,198,140, 25, 97, 61,123,246,172, 35,151,203, 73,105,105, 41,242,243,243,145,155,155,139, 27, 55,110,208,243, +231,207,255,105, 50,153, 54, 87,197,206,184,184,184, 53, 19, 39, 78, 28,217,178,101, 75, 9, 80, 30, 33,213,233,116,205, 15, 31, + 62,220,119,247,238,221,237, 1, 84,249,123,153,145,145,177,249,237,183,223, 14,124,230,153,103, 26,202,229,114,230,110,216,233, + 12,195, 48,209, 65, 65, 65,216,191,127, 63,212,106, 53, 24,134,137,174,174, 22,143,209,194,197,199,197,132,195,120,124, 9, 26, + 70, 38,194,104,225,226,239, 84, 83,224,159,129, 39, 95, 4,229, 57, 84,160,148,246,246,225, 44, 25,166, 79,159, 62,131, 16,178, +115,250,244,233, 51, 92, 27,157,246,179, 57,111,231,180,189,201,117, 31,127,241,228,108, 85,169,208, 36,199,113,184,125,251, 54, +178,178,178,112,251,246,109, 20, 22, 22,130, 97, 24,175,245, 35,156,109, 32,132,112,251,246,237, 11, 61,113,226,132,174, 85,171, + 86, 37,124,254, 11,203,178,196,106,181, 18,123, 94, 12, 73, 79, 79,151, 30, 59,118, 76,125,229,202,149,104,148, 39,172,121, 77, +198,116,247, 16,199, 59, 88,206, 47,163,209,136,128, 0,111,189,144,127,193,223, 8,127, 59,115,166,220,201, 42,211,218,187, 12, + 75, 97,211,148,130,234,180,144,217,172,144,129,130, 24,245,126,105, 58,231,251, 0,112, 56, 89, 22,187,163,101, 54,155, 97,181, + 90,193,113, 28, 88, 55, 93,139,247, 26, 74,233,202,230,205,155,183,248,246,219,111, 71,223,190,125,187, 82,123,255,254,253,241, +218,107,175, 97,226,196,137, 87,122,245,234,117,254,251,239,191,199,132, 9, 19,192,113, 92, 51, 66, 72, 41,165,116,247,223,110, +244, 61,198,100, 50, 57, 34, 80, 70,163, 17, 22,139, 5,240,146,252,238,138,235,119,147,255,108, 89,150,229,181,201,183,223,110, +195,209,163, 71,153, 75,151, 46, 38,140, 27, 55,158, 79,184,191,203,103, 34,224, 14, 66,200, 51, 50,134,124, 58,165, 89,120,192, +155,143,135,235,100, 98, 82,118,237,211, 25,101, 55,106,170,116,209, 53,148,230,132,218,234,184,121,243,222,143,189,114,229,170, +105,230,204,153,151,135, 12, 25, 18,245,230,155,111, 54,218,186,117,107,123, 66,200,231,148,210, 18, 15,186, 1,163, 70,141, 58, + 21, 21, 21, 85,123,213,170, 85,121, 25, 25, 25,161, 86,171, 53,208, 98,177,112, 58,157,238,134,193, 96,216,111,177, 88,246, 83, + 74,207, 84,197,222,224,224,224,199, 71,141, 26, 37, 41, 41, 41,129, 88, 44,134,197, 98, 65, 94, 94, 30,218,182,109, 43,218,177, + 99, 71,227,234,188, 7, 69, 69, 69, 75, 8, 33,135, 54,110,220,216, 93,165, 82,181,148,203,229, 49, 0,108, 90,173, 54, 87,167, +211,157,171,142,157,206,216,108,182,220, 51,103,206,212, 85,169, 84,184,117,235, 22,108, 54, 91,110,117,181,120, 2,164, 76,198, +133, 35, 59,106, 60, 26, 81, 27,199, 78,156, 66,128,148,201,184, 83, 77,129,127, 60,124, 14, 21,156, 29, 40, 55, 14,210,137,228, +228,100,197,252,249,243,145,156,156,124,209, 85,132,215,160,148,246, 78, 78, 78,190,200,111,231,180,253,145,234, 26,232, 53,162, +229,197,131,132, 88, 44,206,201,207,207, 15, 85,171,213, 14, 7, 43, 43, 43, 11, 89, 89, 89,144,201,100, 72, 79, 79,135, 76, 38, +243, 26, 66,183, 99, 84, 40, 20,191, 54,111,222,252,145,180,180, 52,233,156, 57,115,106,156, 57,115, 70,213,182,109,219,199, 20, + 10,133,141, 82, 10,163,209,200, 92,190,124, 57,104,241,226,197,241,173, 91,183, 54,183,110,221,250,108, 74, 74,138, 1, 94,138, +151, 18, 66, 78,103,103,103,215,169, 85,171, 22,128,191, 70,116,241, 47,103,135, 11, 40,239,242, 20,139,197,103,189, 25, 42, 22, +139, 47, 92,187,118,173,155, 50, 64, 14,179, 86, 3, 75,153, 6,172, 86, 11,155,182, 20,182,210, 82, 64,167,129,140,101, 33,177, + 89,161, 8, 8,192,237,204, 76,136,197,226, 11,222, 52,101, 50,217,133,220,220,220,110,106,181,218,113, 19,181,178,108,249,203, +102,131,153,101, 29, 17, 45,137, 68,130,140,140, 12,200,100, 50,175,154,247, 2,134, 97,108,124, 9, 7,119,200,100, 50, 68, 71, + 71,115,109,218,180,193,132, 9, 19, 96,179,217,128,242,122,135,157, 8, 33,199, 40,165,101,127,155,177,119, 25,119,206, 45,159, +180,110, 48, 24, 80, 86, 86,134,226,226, 98,177, 66,161,120,228,177,199, 30, 59,101, 54,155, 55,179, 44,187, 54, 45, 45, 77,227, + 73,211,238,152, 1, 40,119,186, 56,142, 3,165, 20, 54,155, 13, 86,171, 21, 82,169,148, 59,124,248, 8, 22, 47, 93,136,117,107, + 55,208,190,125,251,146, 29, 59,118,128,227,184,204,123,115,150, 2, 46,124, 80,242,205,251, 1, 96,109, 58,211,225,141,101, 95, +253,161,209,205,254,106,217,175,102,153, 72,243, 68,199,232,166,117,106, 63, 34, 82,171, 67,153, 79, 86, 47, 47,252,122,195,150, +212, 91,183,110,105, 62,254,248,227,167, 30,121,228,145,144,115,231,206,197, 3,112,235,104, 41,149,202,250, 47,189,244,210,168, +226,226, 98,233,186,117,235, 82,178,179,179,127, 5,112,137, 82,234, 8,105, 19, 66,122, 17, 66,190, 68,249,200,167,104,148, 95, +231,142, 81, 74,231,120,177,151, 35,132,224,224,193,131,149, 70, 7,114,119,230,157,171,235,213,171, 55, 56, 45, 45,237,104, 78, + 78,206,115,174,141, 50,153,108,118,131, 6, 13,122, 92,188,120,241, 61, 74,233, 15, 85, 17,214,235,245, 83,183,108,217,178, 72, + 36, 18,197,217,108,182, 44,131,193, 48,245, 14,236, 4, 0, 24,173,220,152,228, 79, 54,125,102, 48,219,106, 42,100,162, 91, 70, + 43,247,242,157,106, 10,220,127,188,249, 34,176,231,104,241,127, 3, 32, 46,203,231,236,127,155,157,182,205, 7, 28, 81, 44,179, + 75, 20,204, 93, 91, 62,170, 89, 44,221,221,136, 67,222,233,242, 84, 25,254, 45, 0,173, 1,156,150, 72, 36,203, 71,142, 28,185, +248,235,175,191, 14,214,104, 52,200,205,205, 69, 94, 94, 30,196, 98, 49, 84, 42, 21, 86,174, 92,105,200,205,205, 93,238,188, 15, +117,169, 32,111,199, 24, 17, 17,241,235,134, 13, 27, 98, 62,253,244, 83,241, 11, 47,188,144,222,171, 87,175,134, 43, 87,174, 76, +147, 74,165,212,102,179, 17,147,201, 68, 94,121,229,149,186, 75,151, 46,189, 41, 18,137,148,131, 7, 15, 38,129,129,129,167, 81, +158,160,234,150,252,252,252,125,223,125,247,221,128, 55,222,120, 67,110, 54,155,221, 70,178,248,117,106,181, 26,199,143, 31, 55, + 23, 23, 23,123, 77, 54, 50,153, 76,251,126,252, 97, 87,135,231,135, 12,145, 90,181, 26, 88,181, 26,176, 26, 13,108,218, 18,144, + 50, 13, 36, 54, 22, 10, 41,135,152,132, 0,176,134, 32,236,250,229,156,213,100, 50,121, 45,108,168,209,104,246, 29, 91,183,174, + 83,235,196, 68,241,241, 73,147, 96,177, 90,241,204,181,107, 14,231,202, 98,177, 96,123,211,166,176, 17,130,102, 99,199,226, 58, +203,178, 26,141,102,159, 55,205,251,197,249,243,231,243,134, 15, 31,126,134,227,184, 22,168, 66,116,231,159,142,213, 90,241,247, +197, 59, 68,172,221, 9,206,203,203,147,237,218,181,171,195,229,203,151,165,191,255,254, 59,142, 30, 61,218,236,235,175,191,126, + 43, 49, 49,177,105,122,122,122,142, 59, 77,103,231,205, 93,209, 95,216,243, 15, 83, 54,110,198,171,175,190, 74,114,114,114,240, +205, 55,223,192, 87,241, 84,129,187,134, 14,172, 77, 97, 62,188,177,172,215, 15,183,180, 39,179, 13,115, 0,236,161, 6,150,214, +168, 81,227,124,203,150,161, 17, 0, 96, 50,218, 98,234,215,175,223, 81, 44, 22,203, 0, 32, 40, 40,168,101,120,120,248, 74, 0, +237, 92, 5, 9, 33,162, 33, 67,134,180,137,138,138,106,190,123,247,238,115,217,217,217, 23, 41,165, 63,187,110, 87,183,110,221, +153, 87,174, 92,105, 37,145, 72,136,211,190, 30, 13,237,212,169,211, 35,137,137,137,225, 63,252, 17, 2,141,180, 30,168,168, 20, + 16, 7,192,166,126, 28,233,210, 70, 72, 72, 56, 21,174, 86,171,155,149,148,148,156,243, 40,226, 6, 66, 72,231, 1, 3, 6,172, + 93,183,110, 93, 66,199,142, 29, 41, 33,132,113, 45,233, 80,183,110,221,238, 39, 79,158,108,241,242,203, 47,175,178,143, 72,246, + 59,121,152, 82,154, 14, 96, 96, 85,108,242,197,222,235,116, 63,236, 53,207, 4,254, 53, 84,165,228, 66,181,202, 51,220, 9,222, +122,246, 60,117, 29,182,230, 56,174, 47,195, 48,176, 88, 44,201,209,209,209,219, 7, 15, 30,220,255,173,183,222, 10, 10, 15, 15, +119, 68,178, 86,174, 92,105,184,113,227,198, 86,139,197,242, 27, 33,100, 86, 86, 86, 86,223,184, 56,143,247, 7,237,135, 31,126, +184,169, 79,159, 62, 47,140, 29, 59,214,208,180,105, 83, 85,195,134, 13,245, 39, 78,156, 8, 74, 74, 74,210,136, 68, 34,122,252, +248,241,224,186,117,235, 26, 9, 33,242,159,126,250,169,240,212,169, 83,117,147,147,147, 63, 71,249,112,107, 79,108,156, 59,119, +238,204,190,125,251,214, 13, 15, 15,135, 70,163,169,224,108,241,127, 7, 4, 4, 32, 39, 39, 7,219,182,109,203,182, 90,173,159, +123,123,195, 88,150,253,120,197,202, 79, 38,119,110,243,100,188, 74,169, 64, 78,102, 58,108,165,197,128,174, 12, 50,214, 10,133, +140, 34,190,158, 18, 98, 81, 32, 82,115,202,176,238,196, 47, 57, 44,203,126,236, 77,211,108, 54,127,252,218,210,165,147, 79,126, +242, 73,124,226,160, 65,184,180,126,189,163,171,144,119,180,108,132,160,102,215,174, 96, 66, 66, 48,111,213,170, 92,179,217,236, + 85,243, 94,192,113,156,200,108,246, 92,236,222,108, 54,131,227,184,204, 75,151, 46,109, 34,132,104, 9, 33,157,236, 77,135, 30, +228,104, 22, 80,238,104,205,154, 53, 11,243,231,207,199,244,233,229,179,176,152,205,102, 71,247, 97, 73, 73, 73,237, 99,199,142, + 73, 15, 31, 62, 76, 87,173, 90, 85,248,194, 11, 47,168,199,142, 29,171,254,244,211, 79, 95, 7,224,246, 41,221,106,181, 98,234, +212,169, 88,181,106, 21, 94,125,245,213, 74,237, 34,145,136,203,204,204,128,209,104,164, 31,126,248, 97,150, 68, 34, 9,253,252, +243,207, 21, 47,191,252,242, 67,227,192,254,195,121, 91, 49,252,157,255, 67,249, 53,102, 57,165,244, 16,223,160, 82,169, 20,223, +126,251,157, 24, 0,182,110,217, 38,161,148,134,240, 5,102,191,250,234,171,128,182,109,219, 70,185, 19,164,148,218, 2, 2, 2, + 76, 11, 22, 44, 8, 31, 51,102,204,211, 7, 14, 28, 8, 37,132,180, 1,240, 43,128, 92,148, 59,215, 81, 0, 46, 69, 68, 68,168, + 82, 82, 82,226,187,119,239, 30,232,203, 80,173, 86,251,249,166, 77,155,106, 45, 61, 22,130, 31,116, 3,144,193, 13, 2, 85, 83, +132, 69,105,209, 40,232, 22,134, 13, 27, 22,183,124,249,242,207, 0,180,244,247,228, 9, 33,195,250,247,239, 63,127,221,186,117, +113, 99,198,140,201, 57,123,246,108, 46,128,117,110, 28,190,130,145, 35, 71,102,175, 95,191, 62,150, 82,250, 9, 33, 68, 70, 41, +221,234,239,113, 4, 4, 30,118,156, 42,195, 59,224,157, 47,226, 46,191,137, 16,178,157,101,217,190, 98,177,120,135,115,193,210, +232,232,232,201,102,179, 57,150, 16, 66,165, 82,105, 78,110,110,238,114,231,130,165,153,153,153,125, 19, 18, 18, 28,251,216,139, +110, 58,215,218, 80, 61,243,204, 51,221, 78,158, 60,249,209,206,157, 59,243,180, 90,109,208,150, 45, 91, 20,243,231,207, 79,231, + 56,142, 78,155, 54, 45,177, 71,143, 30,122,155,205,150, 61,118,236,216,186,181,107,215, 30,123,229,202,149,253,112,114,180,220, +104,130, 16,210,184, 94,189,122,199,183,110,221,170, 82,171,213,200,203,203, 67, 81, 81, 17,116, 58, 29,108, 54, 27, 36, 18, 9, +242,243,243, 49,103,206, 28, 77, 86, 86, 86,165,130,165, 30, 52, 91,215,138,143,223,183,252,189, 89,193,106, 49,131,194,171,151, +193, 22, 23, 66,194, 90, 81,163,113, 8,164, 50, 5,174, 95,211,226,245,141,219,180,183,138, 74, 42, 21, 44,245,164,249, 68,253, +250,251, 87, 77,153, 18,100,204,200, 64,236,139, 47, 66,175,215,195, 98,177,128, 97, 24,252,185,124, 57,164,145,145,152,153,146, +162,187,120,235, 86, 87,234, 82,176,212,157,230,157,226,172, 73, 8, 25, 79, 8,113, 36,195,247,239,223,191,194,182,223,125,247, + 29, 62,249,228, 19,152, 76, 38,150, 82, 58,153, 82,186,146, 16, 18, 4, 0,206, 78,214,189,182,243, 94,104,134,135,135, 47,223, +189,123,119,173,168,168, 40,226, 92,177, 29,248, 43,183,110,194,132, 9, 93, 79,157, 58, 37,111,222,188,185,169,160,160,160, 85, +100,100,228,129, 13, 27, 54, 68, 12, 30, 60, 56,235,226,197,139,241,174,154, 17, 17, 17,139,183,110,221, 90,175, 94,189,122, 12, + 31, 21,115,237,158, 28, 61,122,116,183, 13, 27, 54,200, 6, 12, 24, 96,210,233,116,209,193,193,193,169, 91,183,110,141,232,215, +175, 95,206,197,139, 23, 99,255,142,115, 23, 52,221,211,164, 73,147,235, 23, 47, 94,172,199, 47, 27, 12, 6,228,231,231,163,160, +160, 0,106,181, 26, 73, 73, 73,127,222,184,113,163,158, 59, 77, 66, 72,243,129, 3, 7,190,247,217,103,159,117, 11, 12, 12,148, + 30, 57,114, 68,183,127,255,126, 99,122,122, 58,107,181, 90,105,108,108,172,184, 93,187,118, 1, 61,123,246, 12,148,203,229,204, + 59,239,188, 83,240,254,251,239, 71, 16, 66, 54, 82,251,244,103,174,154, 45, 90,180,248,249,199, 31,127,108, 77, 8,129, 72, 36, +130,217,108, 65, 73, 73, 9,110,223,206,196,165, 75,151,112,242,228, 73,236,221,187,247, 92, 89, 89, 89,115,127,206,157, 16, 18, + 14,224,136,201,100,106, 40,147,201,252,118,236,109, 54, 27,196, 98,241, 85, 0,221, 41,165,153, 15,219,231, 46,104,222, 63,205, + 7, 25,226, 84, 17,222,239,100,120,187, 3,214,154, 16,194, 79, 74,122,218,181,132, 3, 33,228, 45, 66,200, 44,251, 98,107, 63, + 82, 4, 52,187,119,239, 62,218,173, 91,183, 9, 93,187,118, 93,218,189,123,247,236,236,236,236, 58, 75,150, 44, 73, 96, 89,214, +114,233,210, 37, 38, 53, 53, 53,253,215, 95,127,173,215,160, 65,131,177, 87,174, 92, 57, 12,239,209, 44,222,214, 75,132,144,182, +157, 59,119,222, 54,118,236,216,154,109,218,180,145,169,213,106,136,197, 98,164,165,165,225,220,185,115,230,148,148,148,204,146, +146, 18,191,167,224,161,148,158, 38,132, 36, 13,158, 56,121,235,216,254,125, 34,158,108,248,136, 44, 54, 54, 22, 48, 24,112,245, + 86, 14, 78, 93, 61,103, 89,115,244, 84,190,201,100,122,206,213,201,242,161,217,173,203,148, 41, 91,103, 63,255,124, 52,178,179, +197,177,177,177,144,201,100,184,113,227, 6, 82, 57,142, 93,176,122,117,174, 70,163,249,219,167,224,225,235,104,113, 28, 39, 6, + 0,133, 66,129,215, 94,123, 13,206, 83,238,124,242,201, 39, 48, 24, 12, 0, 32, 38,132, 44, 34,132,172,125,208,163, 88, 60, 69, + 69, 69, 51,159,121,230,153,100,177, 88,236,177,234,109,104,104, 40,180, 90, 45, 88,150,181,221,190,125,251,106,104,104, 40, 36, + 18, 9, 40,165,110,127, 71,133,133,133, 51,159,123,238,185,185, 12,195,184,141,124, 0,128, 74,165, 74, 63,112,224, 64,253,151, + 95,126,153,249,226,139, 47,210,198,140, 25, 35, 63,112,224,128,141, 82,186,237,110,156,151,192,221,195,249,161,212,254, 16,231, +177,148, 2,165,244, 55, 66,200,210, 95,127,253, 53,114,194,132, 9,117,158,127,254,121, 85,231,206,157,131,156,183, 49, 24, 12, +220,247,223,127,175,251,228,147, 79, 74,143, 30, 61,122,115,244,232,209,109, 80,158, 95,226,150, 91,183,110,237,154, 55,111, 94, + 72,207,158, 61, 27, 0,112,228,103,229,231,231, 35, 61, 61, 29,191,255,254,123,186,197, 98,217, 81,133,243, 41, 36,132,204, 30, + 58,116,232,162,245,235,215,199,141, 25, 51, 38, 39, 37, 37,229,119,148, 23, 45,118, 69,221,191,127,255,166,235,215,175,143, 29, + 51,102, 76, 14,128, 57,148, 82, 33,143, 80, 64,224, 47, 58,185,230,105,121,205,209, 2, 80,202,113, 28,140, 70, 99, 52,199,113, +125, 57,142, 67, 80, 80,144,187,237, 90,103,101,101,245,117,158, 84, 26, 62,166,203, 1,144,191,127,255,254,125, 27, 55,110,236, + 58,109,218,180,231, 75, 74, 74, 90,159, 63,127,190, 13, 0, 72, 36,146,147,129,129,129, 63, 39, 39, 39,191, 56,117,234,212,124, +248,225,100,241,216,157,173, 70,139, 23, 47,190,107,147, 74,219, 29,163,250, 31,111,222, 54,225,115,185, 60,201,101, 82,233,125, +246, 73,165,171, 52, 1, 52,175, 57,229,179,207, 38,168, 54,111,254,199, 78, 42,109, 50,153,216, 1, 3, 6,124,206, 48, 12, 7, + 0, 54,155, 77,108, 50,153, 94, 68, 21, 71,170, 62, 40,216, 29,198,137,222,182,121,236,177,199, 54,236,216,177, 99,120,223,190, +125,109, 22,139, 37,175, 79,159, 62,226,159,127,254,153, 50, 12,227,246,169,142, 82,106, 2,240, 95,111,154, 49, 49, 49,137, 43, + 86,172, 56, 59,105,210, 36,213,198,141, 27,195,142, 29, 59,102,251,240,195, 15, 53, 69, 69, 69, 62,231,167, 19,248,123,145, 72, + 36, 80, 42,149, 48,155,205,200,207,207,119, 59,218,217, 25, 74,233, 65, 66, 72,207, 41, 83,166, 60, 59,101,202,148,158, 49, 49, + 49,117,107,213,170,165,100, 24, 6,183,111,223,102,179,178,178,242,172, 86,235, 62, 0,219, 0,160,110,221,186, 35, 1,172,241, +164, 87, 88, 88, 56,151, 16,114,112,253,250,245,189, 2, 3, 3, 27, 5, 4, 4,132, 89,173, 86, 70,171,213, 22, 25, 12,134,203, + 70,163,113, 39,165,244, 68, 85,206,137, 82,154, 66, 8, 41,120,225,133, 23,214,174, 91,183, 46, 33, 45, 45, 77,251,235,175,191, + 62,227,186, 93,163, 70,141,142,173, 95,191, 62,246,229,151, 95,206, 78, 73, 73,169, 82,142,150,128,192,191, 1, 74,233, 97,120, +200, 89,246,116,211,156, 39,147,201,196,176, 79,166, 54, 76, 1, 0, 0, 32, 0, 73, 68, 65, 84, 46,109,199, 93,132,229,180, 75, + 78, 86, 41,128,121,110,182,115, 69, 55,108,216,176, 27,195,134, 13, 91,100,183, 65,132,242, 18, 14, 44,202, 51,254, 45,240, 81, +210,193, 29,180,124,174,189,207,236,175,187,130,221,233, 89,140,187, 88, 56,244, 94,104,222, 41,124, 29, 45, 66,200, 34,251,170, + 41,191,253,246,219, 74,231,109, 8, 33,231,157,219,237,142,196,191,134,146,146,146,201, 43, 86,172, 56, 61,125,250,116,249,168, + 81,163,240,251,239,191, 99,254,252,249,166,146,146,146,141,190,247,118, 79, 78, 78, 78,122, 76, 76, 76,139,101,203,150,189,185, +116,233,210,126,132, 16, 97,174,195,127, 8, 6,131,225,207,199, 31,127, 28,164, 60, 97,137,178, 44,235, 24, 45,106,175,240,255, +167, 47, 13, 74,105, 33,128,213,246, 23, 8, 33, 97, 40, 31,101, 88, 72, 41,117,125,144,156,226,135,222, 73, 0, 39,125,109, 87, + 21,236, 14,225,139,169,169,169,243,254,252,243, 79,183,142,218,245,235,215, 15,181,107,215, 46,248,252,249,243,111, 83, 74,119, +221,205,227, 11, 8, 60,236,184,117,180, 40,165,215, 1, 60,239,107,103, 15,163, 11,253,197, 6,223,209, 47,129,191, 17,123,206, +213, 90,251,223,149,156, 40, 95,237, 15, 59,153,153,153,197, 0, 28, 83,145,212,169, 83,167, 82, 30, 91,117,176, 59, 85,175, 65, +168, 4,255,143, 34, 45, 45,173, 82,100,231, 78,161,148,186,235,150,187,239,216, 7, 1,180,241,212,110,181, 90,103, 1,152,229, +169, 93, 64, 64,192, 51, 66,245,105,129, 10, 80, 74, 77,222,156, 40, 95,237, 2, 2, 2, 2, 2, 2,255, 54, 72,229,185, 14, 59, + 58,218, 0,184,157,140,179, 42,163, 9, 8,169,250,132,158,190,244, 5, 77, 65, 83,208, 20, 52, 5, 77, 65, 83,208,124,248, 52, +157,180,151,122,104,186,234,162,247,105, 85,109,184,223, 84, 24,125, 72, 41,189,103, 47, 0,221, 4, 77, 65, 83,208, 20, 52, 5, + 77, 65, 83,208, 20, 52,171,121,156,177,127,199,113,238,178,205, 20, 64, 71,126,249,161, 28, 65, 38, 32, 32, 32, 32, 32, 32, 32, +112, 63,160,254,212,209,218,178,101,139,136,255,123,232,208,161,163,109, 54,155, 99,216,187, 72, 36, 90,241,205, 55,223,172,245, +118,144,129, 3, 7,218,188,105,186,195,215,113,220,105, 54,121, 36,100, 92,120,136,114,114, 73,169,126, 89, 90,150,237,168,209, +104,108,196,183, 5, 4, 4, 92, 94,187,118,237, 31,119,219,206,209,163, 71, 55,112, 61, 78,173, 4, 73,167,176,224,128,215,138, + 74,202,150,252,254,135,246,129, 11,113, 62,104, 12, 26, 52,200,235,103,228,202,141, 27,106,230, 44, 98, 63, 80, 5, 74,251,148, +233,172, 31,216,206,204,250,232, 94,217,246,119, 18, 27, 27,219, 80,165, 82,141, 0,208, 88,175,215, 71, 41,149,202, 60, 0,151, + 52, 26,205,134,236,236,236,171,190,246,231,233, 84,155,164, 3,168,105, 95,188,117,232, 6, 77,244,167,205, 23, 61,234, 17, 35, + 5,228,132,192,178,231, 58,117, 76,160,249,116,125, 98,228,104,229,245, 61,234, 19, 51,165,144, 18,192,180, 39,149,250, 55,251, +251, 3, 0, 33, 68, 5, 32, 9, 64, 19, 0,231, 1,236,165,148,250, 55, 19,189,128,128,192, 3,129,107,161, 82,231,101,183,142, +214,232,209,163, 59, 72,197,228, 35, 10,170, 6,104,184,201,100,146,200,100, 50,152,205,102, 40,149,138,143, 95, 25, 51,250, 61, + 48, 40,177,178,120,109,237,218,181,213,158,233,186, 42,199, 25, 56,112,224, 65,215,253, 67, 85,138,185,135,190,159, 22,218,161, +215,130,249,230, 27, 5, 83,181, 90, 45, 35,151,203, 97, 50,153, 16, 18, 18,210,118,220,216,177, 45, 25, 9, 53, 75,165,129, 39, +150, 46, 93,234,118, 46, 58,127,120,253,245,215, 99, 44, 22,227,127, 56,142,147,153,205,102,185,235,113, 66,148,129, 11, 14,125, + 63, 77,217,177,247,252,247, 0, 8,142,214, 63,136,114, 39, 43,230,211,255, 27,246,228,168,133,147,186, 65,221,105,193, 84, 0, + 15,180,163, 69, 8, 17,213,169, 83,103, 66, 98, 98,226,144,213,171, 87, 75,235,212,169,131,128,128, 0, 24, 12,134,216, 63,255, +252, 51,118,220,184,113, 29,235,214,173,187, 41, 45, 45,237, 99, 74,105,165,135, 9, 55,212, 60,244,229, 59, 0,128,182, 35,230, +212, 36,132,252, 23,128, 30, 0, 58,214,250,171,173,211,168, 57, 53, 9, 33, 83, 80,113,180,112, 54,165,212,109,145, 76, 10,200, +118,174, 95,140,190, 35,255, 43, 38,132,140,227,215,247,108, 0,252,248,213,114, 60, 61,116,114,133,245, 61,234, 66,252,253,250, +197,232, 61,242,191, 30,103, 53,127,186, 1, 99,229, 56,247, 5, 98, 1,128, 97, 8,187,231, 58,117, 55,193,112, 46,165,180,210, +124,164,132,144, 30, 40,159,208,217,237,246,189, 31, 21,231, 90,172, 54,183, 5,103,165, 18, 81,222,206, 43,108,165,125, 71,181, + 32, 86,171,173,252,218, 42, 21,195, 22, 18, 18,114,232,237,183,223, 22,247,238,221, 27,107,214,172,105,247,233,167,159,142, 37, +132,252, 4, 96, 7,165, 52,213,211,185, 8, 8, 8, 60,120,248, 93, 25, 94, 44,194,170, 29, 91,215,214,203,205, 43,192, 11, 47, +191,137,141, 27, 55,162,184,184, 24,161,161,161,144, 73,165,146,101,139,222,137, 81,169, 2, 99, 94, 24, 59,117, 21,128,134,213, + 53,168,138,199,169, 95,233,132,236, 5, 77,197, 34, 70, 34,147,201,152, 77,155, 54,161,164,164, 4,106,181, 26, 50,153,132, 89, + 58,255, 45,133, 74, 21,164,120,105,252,244,118, 0, 54, 87,215, 78,179,185,172,221,183, 27,215,170,242,243,243, 49,234,213,169, +112, 61,142, 84, 42,181, 1,229, 55,150,234, 30, 67,224,206, 41, 40, 40, 32, 0, 16, 17, 17, 65, 1,103, 39,171,205,168,165,111, +116,199,235, 75,246, 66,111, 52,127,117,127,173,188,115,234,212,169, 51, 97,208,160, 65, 67,230,206,157, 43,101,152,242,129,195, + 58,157, 14, 6,131, 1,241,241,241, 56,116,232,144,116,230,204,153, 67,190,251,238, 59, 0,248,176,170,250, 23, 47, 94,172, 85, +179,102, 77, 35, 0,244,105, 26,236,218,150,200,183, 1, 64,112,112, 48,124, 17,174, 14, 52, 93,188,120,170, 49,191,223,132,174, +241, 54, 15,235,141, 0,148,222,180, 56,142,138,247,126, 52,206, 99,251,203,115,191,102,207,111, 62,218,176, 78,157, 58, 6,231, +245, 30, 10, 46, 3, 64,116, 89, 89, 89, 77,215,149,252,246, 22,171, 45,202,211,241,186,191,246,137, 91, 7,204,106,131,248,235, +175,191, 6, 0,124,240,223,225,162,207,126, 46, 16,139,197,229,151,218, 69,139, 22, 97,246,236,217,178, 61,123,246,244, 92,191, +126,125, 79, 66,200, 50, 79,142,170,128,128,192,131,133,107,101,120, 30,183,142, 22, 67, 72,176, 42, 56, 8, 3,135,189,130,221, +187,127, 68,135, 14, 29, 28,109,181,107,215,198,160,231,250,225,155, 47,151, 2,128,239,171,172, 23,238,244, 56,197,165,186,255, + 61, 61,228,163, 57,183,114,202, 78,238,220,185, 19,237,219,183,175,176,255,176,193, 3,241,213,231,139, 64, 41,149,222,137,157, +132, 50,210, 96, 85, 32,134,190,240, 42,220, 29,103,236,168,254, 59,123, 12, 90,222, 45,183, 80,231,105, 4,133,192, 61,226,202, +149, 43, 34,147,201, 52, 84,165, 82,181,145, 72, 36,209,114,117, 77, 46, 75,220,186, 48,159,212, 73,203,139,210,119,120,163, 91, +244,211, 31,252, 95,103,188,190,100, 47,150,109, 60,245,101, 11,228, 60,208,181,128, 98, 99, 99, 27, 38, 38, 38, 86,112,178,180, + 90, 45,202,202,202,160,209,104,160,213,106,193, 48, 12,166, 78,157, 42, 61,124,248,240,144,216,216,216,253,126,116, 35,222,106, + 59, 98, 78,185,179, 33,146,148,205,154, 53,203, 20, 21, 21,101, 82, 42,149, 84, 44,149,107, 59,141,154, 19, 12, 0,140, 88,170, + 93,182,108,153, 57, 62, 62,222, 40, 22,139,101,147, 39, 79,246,171, 60,140,201,100,162,206,154,102,179,201,177,126,193,130, 5, +230,232,232,104,147, 82,169,164, 22,139,231,201,204, 93,185,112,163, 8,114,169, 8,114,169, 8, 1, 50, 9,130,107,181,130,188, +248,119,176, 44,139,133, 11, 23, 90, 98, 98, 98,204, 74,165,146,202,100, 50,233,164, 73,147,124,218, 57,122,244,104,170, 86,171, + 45, 74,165, 82, 58,123,246,236, 74,213,157, 15,156,191, 13,133, 76, 2,165, 92,140,250,181, 19, 32,167, 6,119, 50,110, 17,137, + 42,246,116,203,229,114,180,107,215, 14,141, 27, 55,198,246,237,219, 59, 1, 16, 28, 45, 1,129, 7, 28,215, 40,150, 51, 98, 0, +216,181,107, 87, 71,216,103,157,238,213,171, 87,249,108,211,160,152, 50,225, 57,188, 52,106, 40,108, 54,142,207,164, 7, 97, 8, +198,191,216, 19, 28,231,187, 71,130,250, 49,196,179,170,199,113,214,164,132, 17, 1, 64,189,196, 88, 58,246,165,231, 97,227,184, +242, 50,168, 0, 32, 2, 94, 25,245,116,249,186,187, 96,167, 8, 54,188, 57,238, 89,184, 59, 78,195,122,113, 12,107, 49,130, 56, + 77,246,232,143,102, 85, 17, 52, 43,114,226,196,137, 88,165, 82,185,100,248,240,225,113,147, 38, 77,146,217,196,106,241,150,147, +133, 33,211, 86,158,140,211,155, 44,162, 97,157,107,225,141,231,155,226,141,101, 7,120, 39,107,108,237,218, 37, 15,244,103,164, + 82,169, 70,172, 94,189,186,146,147,149,155,155,203,148,149,149,193, 98,177,112, 90,173, 22, 54,155, 13,211,167, 79,151,204,156, + 57,115, 4, 33,100,182, 93,199,228, 78,243,208, 13,154, 72, 8,153,114,241,226,197,196,183,223,126,219,210,165, 75,151, 91,181, +107,215,214,137, 68, 34,196,198,198, 46, 79, 74, 74, 10,155, 59,119,174,165,103,207,158, 55, 69, 34, 17,234,215,175,175,251,253, +247,223, 19, 1, 40,252, 61,119,103,205,181, 7, 86,240, 79,125, 72, 74, 74, 74,175, 95,191,190, 78, 36, 18,225,143,239, 23, 84, +154,211,198,147,166, 68,204,160, 65,124, 72,249, 2, 33,128, 34, 8, 40, 46, 95, 76, 74, 74,202,108,216,176, 97, 25,195, 48,184, +112,225, 66, 2,128, 10,249, 94,238, 52, 21, 10,133,117,216,176, 97,183,174, 94,189, 90,105,123, 0, 16,139, 24,180,105,104, 15, + 96,197,183, 0, 50,143,121,180, 83, 34, 2, 59,115,194,112,177, 58, 0,144, 7, 71,152, 52, 26, 13, 84, 42, 21, 0,192, 98,177, +224,183,223,126,195, 83, 79, 61,213,113,243,230,205,135, 61,188, 93, 94,207,253, 78, 16, 52, 5,205,127,178,166, 59, 95,228, 65, +193,117,126, 67,119, 57, 90,135, 92, 79,202,102, 99, 81,187,102, 52, 22,188, 51, 26, 54, 27, 7,155,205, 6,214,254,191,205,102, +131,213,226,247, 52,132, 94,185,147,227,132,170, 20,115,127,220,244, 90,104,151,254,139,186, 38,191, 61,106,159,205, 6,112,156, + 21, 86, 43, 96,227,172,224,108, 54, 88,173,254, 63, 37,123,195,202,113, 72, 76,136, 65,242,219,163,224,122,156, 13,223,108,238, +115, 96,199, 84,101,135,222,243,223, 4,176,240,174, 28, 80,192, 43, 87,174, 92, 17, 41,149,202, 37, 27, 54,108, 72,108,213,170, + 21, 3, 0, 71,175,177,242,105, 43, 79,198,237, 73,110, 75,218, 54, 14, 71, 94,137, 9,147, 63, 62,135,221, 39,243,126,116,117, +178, 30, 96, 26,215,169, 83, 7,192, 95, 78,214,226,197,139, 35, 86,174, 92, 25, 15, 0,207, 61,247,220,237,174, 93,187, 22, 92, +187,118, 13,177,177,177,164,160,160,160, 23,128,201, 0, 64, 8,153, 66, 41, 93,233, 65, 87, 87,179,102, 77, 99,100,100,164,137, +119,136, 24,134,129, 88, 44, 70,205,154, 53,141, 81, 81, 81,166,250,245,235,235,164, 82, 41, 24,134, 1,239,232,249, 3, 33, 4, + 34,145, 8,188,166, 51, 34,145, 8,188,102, 85,144,136,157,182,119,113,207,248,227,184, 59,158, 39, 2, 2, 2, 40, 0,143,219, +139, 24,167,203,163,216,123,134,192,151,103,169,132, 16,114,136, 82,138,179,103,207, 34, 45, 45, 13, 82,169, 20, 49, 49, 49,152, + 61,123, 54, 76,166,114,127,119,208,160, 65, 29, 1, 92,240,203, 64, 1,129,127, 7,149,124,145, 7, 9, 74, 41,113,151,163, 85, +225,170, 98,247, 38, 1,148, 59, 64,229,206,142, 27,231,199,202,194,106,181, 0,212,251,164,170,254,224,237, 56, 54, 27,231,245, + 56,124,142, 22,199, 81,177, 91, 39,139,227,192, 90,171, 52,143,180, 71, 56,155, 21, 28,103,173,228,100,113, 54, 27, 8, 97,202, +227, 91, 20,119,212, 69, 41,224, 63, 38,147,105,216,208,161, 67,227,120, 39, 11, 0, 10,180, 86,177,222,100, 21,181,109, 28,206, +180,236, 60, 8, 81,106, 57, 82,142,220, 70,148, 90,121,228, 33,113,178,160,215,235,163, 2, 2, 2,160,211,233, 28,145,172,149, + 43, 87,198,155,205,102,198,108, 54, 51, 41, 41,155, 19, 54,238,187, 86, 99,195,158,107, 53, 86,111, 59, 83,163,184,184,180, 49, +165, 84, 65, 41, 85, 0, 88, 68, 8,145,123,211,151, 74,165, 14, 7,197,217, 1,146,203,229,213,114, 96,120,120,231, 76, 42,149, +186, 93,239,218,189,230, 11,169,179,163, 5, 90, 30,213,114,130,119,236,248,220, 40, 95,200,100, 50,199,185,187, 67, 44,114, 58, +158,168,234,169,152, 22,139, 5,101,101,101, 40, 41, 41,249,203,234,242,235,218,228, 42,139, 9, 8, 60,228, 56,251, 34, 15, 26, +188,179,229,188,206,245, 42,116, 8,246,217,167, 89,171,197,173,243,179,249,251,227,184,149,163, 67, 76,196,105, 80, 15, 51, 85, +123, 98,200,144, 33, 95,198,198,198, 58,230,211,146, 43,130,194,199,190,246, 46, 88,214,130, 96, 5,131,151, 71, 60, 93,193,201, + 42,143,104,153, 93, 31, 88, 29, 20,151,234,254,247,244,160, 15,231,132,168,194, 79,186, 58, 63,201,235,206, 12, 44,214,152, 18, + 24,230, 23, 20,147, 88,219,160, 87,222, 29,205,239,199, 48,204,249, 77,159,204,122,195, 95,187, 41, 97, 36, 3,199, 45, 31, 75, +197, 65,141,148,140,246,200,180, 81, 79,126,235,236,204,133,133,133,237,236, 62,112, 89,183,220, 34, 33, 71,235,239, 66, 38,147, +117,155, 52,105, 82,133, 59, 94, 68,176,132, 85,202, 37,182,227,151, 10,200,153,131,155,153,163, 23, 11,184, 0,169,136, 70,210, +180, 58,247,203,206,187,141, 82,169,204,211,235,245,177, 6,131, 1, 26,141, 6, 26,141,166, 66,187, 88, 34, 33, 99, 95,157, 24, + 33,145,202, 96,181,152,177,123,195,251, 62, 53, 59,213, 38,233, 29,107,161,102,159,166,193, 16, 73,100,218, 75,117,234, 44, 23, +139,197, 96, 24, 6,223,127, 60,109,242,182, 37,175, 5, 3,192,249,157, 31,107,134, 78, 93,241, 33,195, 48, 48,153, 76, 94, 29, + 54, 87, 50, 50, 50, 18, 76, 38,147,209,238,160,241,161,117,220,184,113,163,134,201,100, 50, 56,175,247, 7,133, 50, 24, 80,215, + 6,148, 21,243,209, 9, 33,184,121,243,102,156,213,106,213,139,197, 98,152,205,102,191,188, 34,134, 97,164, 23, 46, 92, 72,224, + 56,206,237,246,141,235,198, 1, 49, 77, 1, 89,136,191, 38, 58,210, 32,124,109,227,238, 9, 88, 64,224, 95,142,195, 23,121, 80, +112,254, 13,123, 26,117,216,105,215,174, 93, 78, 87, 5, 10,214,106,181, 59, 89,127, 57, 61, 54, 27,135,172,124, 35,174, 93,251, + 3,203,150, 45,195,241, 83,255, 13,153, 59,119,174,124,230,204,153,166, 33, 67,134, 44,225, 56,238,113,134, 97,206, 15, 28, 56, +208,237, 83, 26,199,113, 53,206,156, 57,227,184,233, 89,173, 86, 4, 7, 7, 35, 56, 56, 24, 13,235, 39, 84,114,178,108, 54, 27, + 44, 94,186, 14,249, 28, 45, 66, 57,106,181,218, 96,227, 56,135,243, 83,172, 49, 37,236,216,127,182,158,211,230,143,240,127,180, +107,213,168,146, 22,207,144,113,179, 29,231,177,233,147, 89,111,204, 93,179, 70, 94,108,139,156, 52,116,224, 75, 77, 6, 13, 29, +129, 97,207, 62,211,209,100, 54,111, 23, 49,148,179, 58,142, 7, 6, 20, 21,114,180, 4,238, 29, 5, 5, 5,196, 96, 48,212, 82, +171,213,142,117,148, 82,196, 6,234, 76, 83, 7, 55,200, 74,154,118, 44,206,104,177, 65, 46, 97,232,228,126,137, 89, 63,127,151, + 18, 94, 96, 42, 32,252,104,196, 7,156, 75,169,169,169,177, 53,106,212,128, 70,163, 1,203,178,220,115,207, 61,119, 91, 44,150, + 36,136, 37, 18,210,123,232, 68, 46, 39, 39,203,202, 48, 34, 80,106,195, 51,131,198, 17,121,128, 66,106, 49,155, 89, 0, 83,168, +251,121, 42,157, 75, 56, 4, 39, 37, 37,133,241, 35, 1,183, 45,121, 45,216,169, 77,213,178,101,203, 48,231, 81,135,254, 32,147, +201,200,144, 33, 67, 20, 53,107,214,252,127,246,206, 59,172,201,243,123,227,247,121,179,195, 94,202, 16,193,129, 3,197, 81,103, + 29, 40,182,174, 58,106, 91,113,214,109, 93, 85,171,182,142,170,117,111,109,221, 86,107,173,181,184,253,214,106, 29,117,180,206, +186,177, 46,112,225, 64,182, 40, 35, 16, 66,230,251,252,254, 32,161, 1, 3, 36,136,182,246,151,207,117,229, 10,121,199,253, 62, +111,128,112,115,158,115,206, 67, 0,112, 57, 98, 26, 0, 64, 44, 22, 83,215,174, 93,101, 1, 1,121,121,248,191,175,181,126, 77, +109, 47, 7, 6,100, 62, 2, 50, 31, 23,216, 46, 16, 8,208,181,107, 87,105,149, 42, 85,108,250, 93, 52, 38,192, 23,217,187,203, + 81,168, 7,146,175, 90,165, 53,176, 1,233,166,181,130,240,155,247, 56, 72,156, 60,213,111, 79, 62,114,177,184,227,237,102,203, +142,157,124, 10,121,145, 55, 7,227,218,134, 39, 1,132, 25,159, 81, 32, 71,171,115,231,206,167, 96,238, 30, 25,160,211,107, 95, + 48, 89, 6,131, 1, 34, 82, 99,197,138, 21, 24, 55,110, 28, 0,136, 39, 76,152,176,119,222,188,121, 31,242, 60, 95,143, 49, 22, + 74, 84,244,103, 5,199,113, 39,125,125,125, 83, 24, 99, 34,142,227, 66,215,174, 93,235,209,169, 83, 39, 56, 59, 59,131,241,236, + 5,147,101, 48,240,208,106, 53, 47,228, 96,152,112,119,145,207,251,109,247, 88,247,119,186, 45,125,215,192,243,199, 76, 38,139, + 55, 24, 0, 62,239,164,231, 79, 19,112,244,240, 62,172,255,118,125, 58,136,221, 6, 3,207,113,220,245,162,198,200,243,124,189, +179,151,163, 67, 91, 54,174,133,121,223,127, 47,189, 21,153,180,119,244,248,169, 33, 61,122,247,195,238, 29, 17,224,244, 25, 87, +205, 77,150, 65,199, 35, 51,253, 89,215, 19,246, 28,173,127, 12,157, 78,135,244,244,116,232,178,211,245,141,124,149,153,179,122, +148, 87,167,164,231, 10, 69,124,142, 62,216,229,169,250, 68,218, 99,129,131, 67,177, 93, 3,222, 24, 20, 10, 69,196,200,145, 35, + 91,159, 62,125, 90,204,113, 28, 20, 10, 5,218,180,105,243, 44,149,175, 32, 27, 54, 98,180, 87, 98, 98,130,222, 69, 46, 84,139, +197, 34, 60,125,250,148,111,221,169,175,170,247,224,113,126,227,166, 45,220,144,248,231,186,162,242,179, 10, 96, 94, 9, 88,120, +223,198,141, 27, 53, 21, 42, 84,200,149, 74,165,146,129, 3, 7, 90, 53,127,168,209,104,216,226,197,139,213,133,171, 11, 53, 26, + 13, 91,177, 98,133,198,223,223, 95, 45,151,203,153, 78, 87,114,222, 39,199,145,254,147,121,219,244,122,189, 62,127,155,233, 51, + 71, 32, 16, 64,199, 83,246,234,213,171,181,254,254,254, 26, 7, 7, 7, 38,149, 74,197,214,140,115,244,232,209,204,221,221, 93, +235,232,232, 40,158, 52,105,210, 75, 85, 29,234, 12, 16,206, 91,155,223,222, 65,234,236,236,140,172,172,172,252,177,250,250,250, +190,112,142,221,108,217,177, 99,193,139,188, 89,156, 44, 42, 71,203, 98, 2, 3, 15,100,167, 60,125, 86,222,203,187, 18,244,122, +189,241,161,131, 94,167,195,216,225,189,241,205,183,121,253, 30,141,102,171,221,132, 9, 19,246,162, 80,190,151, 37,118,238,220, + 57,119,194,132, 9, 46, 41, 41, 41, 71,126,252,241, 71,143,190,125,251, 98,226,196,137, 88,186,116, 41, 68, 18, 25, 60,202, 85, +204,191,142,233,186,207, 82,211,192,192,178, 45,233,153,114,180, 24,131,208,179, 92, 32,116, 6, 29,120,157, 14, 58,157, 14, 36, +200,187,181,163,135,247,161,239,160,209, 16, 73, 93,220,215,172, 88,162, 10,105,228,251,225,244,161, 67, 45,253, 87, 95, 88,156, +187, 21,153,180,119,244,184, 73,237, 76, 38,235,127, 17,223,222,254,122, 74,183,237, 82,137, 48,255, 58, 58,158, 7,199, 9,236, + 57, 90,175, 17, 47, 47, 47,150,154,154,250, 56, 35, 35,163,134,163,163, 35,158, 63,127,142,180,180, 52,100,100,100, 64,173, 72, +215,123, 26, 50,148,164, 79,131, 80, 40,196,211, 56, 61, 12, 6, 67,242,127, 36,154,133,164,164,164, 59, 85,171, 86,221, 57,117, +234,212,222, 83,166, 76, 17,241, 60,143,187,119,239, 2, 68, 76, 36,150,128,227, 56,136, 68, 66,100,102, 42,120, 7, 39,183, 36, + 45, 19, 56,136,196, 18,112, 2,113,113,101,194, 79,194, 6,230,181,119,224,132,226, 44, 83, 37,160, 88, 44,198,133,221,203, 20, + 97, 3,231,186, 0,128, 88, 42, 79,111,223,190,125,108,173, 90,181,148, 87,174, 92, 9, 68,161,170,195,194, 16,160,255, 96,224, + 36,129,131, 92,166,108,215,174,221, 19,147,230,227, 99,107, 20,253, 70, 77, 35, 18, 72,148, 93,186,116,137, 13, 9, 9, 81, 10, + 4, 2, 68,239, 91,162,248, 96,224, 36, 25,253, 93,211,251, 2, 71,238,179, 79,174,239, 62, 83,115,254,252,249,186, 78,157, 58, +197,153,242,197, 30, 63,126,236,215,185,115,103,233,242,229,203,117,157, 59,119,142,175, 83,167, 78, 54,199,113,136,140,140,180, + 88, 69, 88, 24,185, 92,174, 27, 50,100,200,147,155, 55,111,150,170,234,176, 36, 42, 86,172, 8,158,231,209,166, 77, 27,228,230, + 90, 14, 8,218,205,150, 29, 59,111, 54,133,251,104, 21,219, 25, 94,167,215,141, 30,254,217,236, 53, 0,253,221,229,143,177,191, + 3, 75, 12,244,197, 23,159, 59, 2,144,155,204,214,248,241,227,211, 75, 26,132,153,201,106,212,183,111, 95,124,249,229,151,248, +250,235,175, 13, 75,151, 46, 21,220,185,247, 72, 59,112,212,204,140, 66,215, 1, 3,203,230,117,252,104, 75,122,233,153,202,153, +161,157, 23,205, 78, 72,201, 57, 59,112,228,244,252, 79, 47, 3, 0, 5,249, 26, 0, 96,253,183,223, 42, 69, 82, 23,199, 30,189, +251, 1, 64,187, 53, 43,150,236,157,135,239, 75, 54, 91,140,130, 71,143,159,228,110, 50, 89,107,151,207,191,233, 74, 41,171,199, +124, 30,149,159, 93,111,250,107,224,225,140,189,161,157, 23,117,120,154,166, 92, 89,210,123, 96,167,108,208,104, 52,199, 87,173, + 90, 85,105,250,244,233,146,180,180, 52, 60,123,246, 12,233,233,233,249,143,236,236,108,248,248,248,224,183,223,126,211, 42, 20, +138, 11,255,244,120,203,146,135, 15, 31,174,221,191,127, 63, 78,157, 58,213,107,202,148, 41, 34, 31, 31, 31,114,117, 77, 33,157, + 86, 3,128,177,212,212, 84,222,193,201, 45,201,203,219,255, 73, 98,242,211, 96,157, 86, 3,222,160, 45, 50,219,220,216,222,225, +139, 91,183,110, 85, 90,182,108,153,198,188, 18,176,247,164, 53,171, 26, 54,108,232,177,122,245,106, 77,151, 46, 93, 98, 77,201, +235,214, 36,195, 31,125,128,207,110,221,186, 81,187,176,102,216,176,101,155, 76,154,230,213,136, 93, 63,223,176,169, 90,181,106, + 30, 33, 33, 33,177,197,233, 86,169, 82, 69,229,235,235,171,169, 89,179,102,182, 72, 36,202,139,100,233,116, 57, 85,170, 84,225, +189,189,189, 53,181,106,213,202,182, 53,105, 95, 46,151, 51,224,197,158, 87, 38,108,169, 58, 20, 9,160,239,219,183,111,126,103, +248, 47,170, 85, 75,234,215,175,159,239,132, 9, 19,176,105,211, 38,252,249,231,159,105,133,207,105,221,186, 53, 78,159, 62, 61, + 27,192, 76,171, 6,108,199,142,157,127, 21, 37,246,209, 42,204,230,205, 17,191,195, 44,167,201, 18,243,230,205,147, 26, 35, 89, +237,198,141, 27, 7,149, 74,229, 94,248, 24, 34,106,107,234,181, 97,201,100, 45, 89,178,100, 59, 99,204, 31, 64, 75,131,129,191, +184,241,251,205,109, 74,186, 25,115, 77, 70,156,128,227, 40, 91, 34, 98,127,125,251,221,166, 2, 29,191,141,201,239, 53, 64,184, +190,102,197, 18, 21,128,118,133,205, 86,120,120,120, 78, 97, 77, 19, 35, 70,142,200, 55, 89,107, 86, 44, 57, 22,210, 40,224,195, +233, 67,231, 90, 52,103,115,103, 14,119,228, 56,106,110,158,163,101, 73,243,101,177,107,254,173, 41,149, 74,183,239,216,177,163, + 83,104,104,104, 96,189,122,245,184,180,180, 52,100,103,103, 35, 59, 59, 47,248,233,229,229,133,232,232,104, 62, 54, 54, 54, 65, + 42,149,238,248,167,198,249, 42, 52,141,203,234,172,242,245,245, 61, 62, 99,198,140,126,207,158, 61,235,156,158,158,225,121, 96, +243, 92,116,236, 49,146, 90,119,234,163,212, 48,161, 44, 62, 41,165,230,201, 67,219, 60, 14,239, 92, 11,173, 70, 51,156,232,219, +219,166,246, 14, 22,198,153, 99,106,227, 80,179,102, 77,165,185, 81, 9, 8, 8,200,245,243,243, 83,135,132,132,228,111,183, 84, +205,103,233,222,109,213, 52,230,127, 41,139,211, 4,144,111,218, 10,183,141,112,112,112,128,201,124,217, 50, 78,243,106, 75, 75, +148, 84,117,104,174,249,227, 85, 38, 50,223,247, 35,145, 32, 34, 34,162,109, 68, 68, 68, 35, 0,127, 1, 56, 10, 64,103, 60, 47, + 63,105,158, 49, 54, 11,192,172,146,238,253,101,176,107,218, 53,255,205,154,111, 50,102, 57, 90, 38,194, 24, 99,167,128, 34,140, + 86, 73,152, 18,223, 1,112,227,199,143, 79, 87,169, 84,238,253,250,245, 43,246,156,228,228,228, 77, 91,182,108, 41, 96,178, 62, +250,232,163, 65,123,246,236, 57,254,244,233,211,210, 12, 3,238, 46,242,121,167,126,157,236,222,186,203,162,113, 0,150, 90, 60, +136,129, 15,105,228,251,225,154, 21, 75,246,162,160,217,250, 9,192, 71, 22,206, 32, 0,104,255, 94, 55,108,219,188,198,148,219, + 37,191,121, 37,225,112,175,171,115, 44, 86, 43,186, 57, 73,231, 24,199, 49, 1,246, 28,173,215, 66,112,112,176,225,220,185,115, + 19, 70,142, 28,249,205,187,239,190, 91,161, 91,183,110,226,138, 21, 43, 66, 42,149,226,193,131, 7, 56,115,230,140,246,225,195, +135, 9, 57, 57, 57, 19,234,213,171,103,205,122,127,111, 28, 73, 73, 73,119,140,205, 72, 63, 51,253, 55, 37,149,201,197,125, 6, +143,243,207,175, 58,220,185, 22,234, 92, 21, 0, 8,137,104, 41, 17,253, 80, 68, 66, 60, 0, 64, 40, 20,138,175, 93,187, 22,104, +138, 90,105,181, 90,169,105,251,149, 43, 87, 2, 77,189,181,114,115,115,173,174, 58,124, 85,154, 55,110,220,240, 55, 85, 71,154, +170, 11,133, 66,161, 56, 50, 50,210,223,164,169, 86,171,173,170, 58,148, 72, 36,226,107,215,174,249, 27, 12,134, 50,171, 58, 52, + 97, 52,198, 71,140, 15, 0,121, 6,203,104,178, 76, 57, 29,246,105, 67, 59,118,222,108, 78, 22, 94, 84, 26, 70, 63, 81, 42,163, +101, 74,124,183,246,120, 34, 18, 86,170, 84,169,125,239,222,189, 11,152,172,240,240,112,195,207, 63,255,124,210,215,215, 55,133, +227,184,146,150, 9,121, 81,215,148,163, 5,136, 10,239,227, 56,238,122,203,198,181,192,113,220,245,233, 67,135,170,231,225,251, + 2,102,107,223,222, 93, 29,138,144,101, 0,224, 89,190, 2,250, 14, 26,141,190,131, 70,187, 3,104, 1, 20, 93,173, 88,220, 56, +236,188, 58,154, 55,111,158,116,251,246,237,190,199,142, 29,235,115,250,244,233,182, 57, 57, 57,149,136, 8,114,185,252,177, 70, +163, 57, 46,149, 74,183,255, 87, 77, 86, 81,104,181, 90,253,148,217,203,182, 8,132, 98, 61,207,107, 73,171,213, 14,134, 13,191, +231, 83,166, 76,225, 96, 33,247,106,204,152, 49, 22,183,255, 83,154, 83,167, 78,181, 88, 37, 56,102,204,152, 98,171, 7,139,226, +243,207, 63, 47,179,170, 67,107,176, 27, 42, 59,118,254,123, 20,238,159,101,162, 84, 70,139,227,184,235, 22,170, 11, 9, 0,179, + 84,209,199, 24,211, 11, 4,130,217,110,110,110,195,149, 74,229,111, 31,125,244,209,248,240,240,112, 3,144,151, 32, 95,154, 49, + 0,121, 57, 90, 97, 93, 23, 79,200,200, 86,175, 46,188,175,112,228,201,100,182,214,174, 92,178,110,239,158, 29,225,201,137,241, + 22, 43,176, 76, 6,173,168,125,150,182,103, 42, 84,179,195,186, 46, 30,151,174, 80,217,115,180, 94, 51,193,193,193, 6, 0, 17, + 0, 34, 10, 47, 42,253,255, 1,198,152,154,136, 38, 18,145, 41,162, 59,241,225,137,149,249, 63,219, 68,171,110,152,239, 43, 38, +154,149,100,205, 2,209,150,206, 43,110,223, 43,208, 76, 41,102,129,232,226, 72,177, 81, 47, 5, 0,196, 34,193,211,162, 22,143, + 22,139, 4,165, 11,197, 23,194,172,193,225,236,178,208,179, 99,199,206,235,199,230, 28, 45,147, 9, 42,138,162,250,100, 21,135, +193, 96, 88, 12, 96,177,173,231, 21,199,205,123, 89,223, 1,248,206,218,227,141, 57, 89, 3,140, 15,139, 24,158,223,178,249,222, +194,195,195,215, 3, 88,111,235,121,118, 74,199,238,221,187,255, 95, 69,169, 74,130, 49,182,142,136,126, 48,126,173,182,118, 95, +161,227,202,124, 97,227, 87,164,121,164,228,163,202, 78,239,192,109,189,119, 89, 94,175,152,113,216, 35, 92,118,236,188,193, 88, +138,102, 21, 91,117,104,199,142,157, 55,139, 18, 76, 84,201,237, 76,236,216,177, 99,199, 78,169,177,180,152,180, 9, 2,208,182, +136,147,172,174, 38, 32, 34,139, 26, 37, 12,170, 88,125,187,166, 93,211,174,105,215,180,107,218, 53,237,154,255, 61,205,146,180, +205,207, 39,162, 97,140, 49,171,103,174,254, 73,138, 44,104, 97,140,189,178, 7,128,182,118, 77,187,166, 93,211,174,105,215,180, +107,218, 53,237,154,165,188,206,176,215,113,157, 50, 24, 39, 43,252, 48,237,179, 79, 29,218,177, 99,199,142, 29, 59,118,236,188, + 4,204,214,100,120, 59, 47, 66,129, 31, 76, 7,143,169,121, 47,176,132, 61,249,101,214, 63, 58,160, 55, 24, 34,242, 2,208,197, + 89, 38,126,191,182,155,184,217,205,231,185,231,148, 90,195,175, 0,246, 49,198, 74, 92, 97,192,142, 29, 59, 47, 15,185,215,174, + 8,162,193, 0,251,187,236,146,103, 81, 44, 35,122,115,129,227,220,106, 13, 2, 71,181,205, 54,169,192,176,145,165, 71,197, 89, +212,253,187, 36,221, 45, 38, 38, 38, 48, 40, 40, 40, 22, 64, 70,161,195, 94,216,199,140, 97,129,162, 52,189,170, 52,232,239, 32, +115, 24,165,209,104, 42, 59, 57, 59, 63, 77,123,158,186, 62,237,201,141,181,102,135,185, 92,188,120,209,183,105,211,166,137, 0, +178, 74,210,180, 99,167, 44,177,208,176, 52,223,124,189,180,209,162,234,221, 43, 67,207, 13, 0,195,199, 32, 92, 99, 15,119,119, + 47,149, 78,208, 71, 21,192, 11,155, 0,104, 0,176, 6,142,114,217, 91, 42,141,246, 41,207, 88,127, 22,179,243, 47,155,245,170, +244, 56, 8,160, 83, 17,123,103,179,135,187,102,217, 36,200,179,105,151, 79,255, 44,117,115, 32, 4, 53,252,104, 18,204, 58, 56, +255,155, 32, 34, 57,128,129, 68,244,174,131,131, 67,245,156,156,156,199,140,177, 27, 0,214, 49,198, 18, 75,169,201, 1, 24,226, +228,232,216, 49,208, 89,210,224,201,179,204,132, 44,157,225, 12,128,165,182, 26, 35, 34,146, 4,186, 59,158, 90,209, 59, 44,184, + 89,237,106,224,163, 78, 35, 87,163,125,255,100,124,246,251, 51,207, 39, 78, 32,162, 6,140, 49,141,149, 90,190, 0,132,140,177, + 56,227,107, 71, 0, 33, 0,170, 0,120, 8,224, 22, 99, 76, 89,140,132, 53,215,120, 35, 52,253,253,253,253,120,158, 31,234,237, +237,221, 57, 37, 37,229, 32,199,113,223,199,199,199,151,234,251, 93,134,108, 48,229, 87, 88,251, 12, 96,184, 45, 23,144,203,229, + 41,185,185,185,229, 1, 64, 38,147, 61, 85,169, 84,175,172, 74,240,117, 94,235,181, 64,248,228,232,217, 91, 29,205, 55,181,111, + 89,251,197,227, 56,170,125,244,108, 84,171,130,199,133, 24, 96,225, 51,208,216,125, 21,179,103,207,166, 57,115,230, 12,170, 90, +181,106, 53,142,227,238,206,152, 49,163, 64,235,155,194,251,102,206,156,249,119,231, 86, 11,154,254, 53,154,239,235,213,187, 71, +216,167,195, 6, 58, 85, 40,231,132,164,103, 74,207,111, 55, 69, 44,139,136,216,214,101,104,175,118, 29, 1, 96,238,220,185, 31, + 84,172, 88,177,146, 64, 32,120,244,213, 87, 95,253, 84,156,166, 29, 59,175,128,147,204,150, 69,165, 75,130,106,247,112, 68, 46, + 11, 7,104, 96,235,102, 13, 91, 14,239,223,149,152, 64,134, 62,159, 76,214,219,172, 85,105,144, 20, 2,213,188,186, 33,181,199, +247,232,218,150,107, 20, 82, 9,190,229, 92, 1, 78,132, 13,135, 30,123,174, 94,242,213, 58, 0, 77, 75, 49,204, 78, 15,206,111, + 71, 82,134, 1, 68, 0, 17,192, 17,144,157,203,163,253, 7, 3,102,194,102,163, 68,156,155, 3, 97,252,246, 92, 0, 40,114,221, +184,127, 18, 34,106, 80,174, 92,185,181, 99,199,142,117,175, 91,183,174,175, 76, 38,115, 80,169, 84,213, 98, 98, 98, 42, 79,159, + 62,189, 29, 17, 45, 98,140,253,108,163,102, 64,144,191,223,174,213,227,135, 52,169, 87, 37, 16, 34, 77, 54,120,181,178,226,189, +152,251,205, 70,172,219,253, 9, 17,245,102,182, 45,195, 48,109,195,152,254,193,117,156, 1,237,173, 63, 33, 18, 8,224,224,234, +142,118, 66, 1, 4,132, 90, 3,142, 60,158, 10, 43,214,123, 51,118, 68,159,154,247, 37,109, 19, 8, 4,199,218,182,109, 91,121, +232,208,161,212,176, 97, 67, 68, 70, 70, 86,217,190,125,123, 91,161, 80,248,200, 96, 48,220, 0,112,151, 49,166, 43, 65,214,164, + 45, 2, 80, 67, 32, 16,212,253, 55,107,250,249,249,201, 53, 26,205, 0,127,127,255, 97,239,191,255,126,221,174, 93,187, 82,141, + 26, 53,112,231,206,157,134,135, 15, 31,158, 89,191,126,253, 27,241,241,241,223, 73, 36,146, 45,137,137,137, 42,107, 52,203, 18, + 34, 26, 6,192,207, 24,224,152,109,197,115, 34,128,217,140,177,226,250,104, 21, 32, 55, 55,183,188,233,239, 40, 17, 89,236,119, + 85, 86,216,114, 45, 34,138, 38, 34, 15,227,215, 40,238,153,227, 56,232,245,122,165, 94,175,175, 90,130,102, 13, 0,214, 45,222, +152, 7, 99,140, 21,215, 8, 90, 14, 0,237, 91,212, 78, 3, 33, 10, 0,192,179,168, 23,142,226, 89, 84,190, 1, 99,168,125,244, +207, 40,143, 2, 81,176, 66,204,158, 61,155,102,206,156,137, 89,179,102,117, 5, 16,202,243,252,153,224,224,224, 85, 5, 36,121, + 62,127,223,204,153, 51, 87,206,158, 61,155, 0, 88, 52, 68, 30,149,234,247,251,240,195,110, 97,243,167,141,113, 74,120,174,197, +181, 71, 42,120, 56,137, 49,115,226, 72,137, 90,173,107,182,238,167,136, 97,107, 22, 77,222,104, 48, 24,222, 1,208,200, 96, 48, + 92, 1,240, 83,113,154,118,236,188, 2,194,200,150, 69,165, 45, 65, 68,132,170,221, 91,193,128,129,129, 21,189,195,199, 14,237, + 41, 15, 9, 14, 66, 46,156,240,248,153, 1,135, 14, 28, 6,128,157,182,140,138,170,244,106, 36, 20, 99,203,146, 89, 19,107,134, + 54, 9,193,205, 4, 29,174, 36, 24,144,243, 72, 7, 1,167,131,129,103, 0,131,229,165,238,173, 32, 62, 93,143,179,119, 53,224, + 8, 16,112, 0,199, 17, 4,182,124, 76,153,195,107,238,205,221,124, 53,228, 89, 10, 15,240,154,123,165, 29,211,171,130,136,222, +169, 94,189,250,138, 57,115,230,248,164,164,164,120, 92,185,114, 5, 82,169, 20,238,238,238, 66, 63, 63,191,154, 43, 86,172,200, + 28, 51,102,204, 68, 34,250,139, 49,246,216, 74,205,224, 78,141,234,158,251,110,201, 92, 87,221,197,195,200,216,241, 63, 8, 56, + 6,177,163, 19, 42,203,229, 56,252, 97,144, 71,248,129, 71, 63, 19, 81, 48, 99, 44,193, 26,205, 32, 31,207,246,117,131,131,145, +190,119, 13,174,165,231,226,112,162, 10,131,219,189,141, 58, 30,114,132,234, 13,240,113, 20,189,131, 18,140, 22, 17,185, 3,152, +172,209,104, 56,177, 88, 76, 50,153,172,223,252,249,243,181,125,250,244,137, 55, 29, 19, 26, 26,138,208,208, 80,202,202,202,170, +114,226,196,137, 42, 17, 17, 17,122, 34,138,102,140,237, 43, 74, 87, 46,119,120,146,155,171,170, 40,147,203,115,190, 93,183,238, +235, 86,173, 90,241, 82,233,223,171,194,148, 70, 19, 0,220,220,220, 54, 86,175, 94,157,190,252,242,203,196,178,210,172, 92,185, +242,209,208,208,208, 54,237,219,183, 23,182,104,209, 2,126,126,126,249,251,188,188,188, 16, 26, 26, 74,113,113,113,245,206,156, + 57,179,238,232,209,163,171, 42, 87,174,124,226,209,163, 71,237,139,211, 44,107,140,145, 42,216, 96,156,190,179,208, 8,249,141, +132,136,156, 54,108,216, 80,222,180, 38,163, 78,167,131,193, 96,200,127, 54, 61,120,158,135,193, 96,192,252,249,243,173,234, 13, +103,140,124,154, 12,132,233,193, 91,122,150, 72, 36, 94,214, 13, 22, 81,190,210,140, 90,142,142,142,129, 0, 58, 85,175, 94,125, +178,249,238,106,229,242,158,149, 74,101,108,146,218, 45, 10, 64,171, 23, 52,254,198,109,206,156, 57, 3,102,205,154,213, 13,127, +175, 89, 89,183, 71,143, 30, 39, 10, 29, 87,215,248,172, 36,162,147, 28,199,253, 10, 96, 51,128, 23, 34,228, 14, 14, 78,195,199, +142, 26,234, 20,255, 76,139,121, 63, 63,195,230,211, 10, 12, 8,117,198,248,247, 92,209,183, 79, 47,199,221,255,219, 51, 28,192, + 70,179, 83,238, 4, 7, 7,211,237,219,183,237, 38,235,191, 69, 99, 0,229,204, 94,107, 0,152, 87,179,188,149, 0, 0, 32, 0, + 73, 68, 65, 84,150,204,122,134,188,223, 11,207, 66,219,205,143, 51, 61,167, 26,183,151, 51,158,199,204,116, 83, 1, 92, 46,205, +224, 88,222,186,134, 22, 63,192,132, 0,112,240,224, 65,214,185,115,103, 50, 61, 91, 84,169, 28,126,104, 72,159,247, 59,118,126, +183, 57, 56,153, 59,238, 61, 5,206, 63, 97, 16,114, 58,112, 96,184,248,231, 9, 6, 33,191,165,208,133,139,140,116, 80,229,240, +207,235,214, 9, 89,252,253,146,207, 4,209, 79,133,216,124, 38, 7,218,220,108,164, 38, 63,193,211,196, 88, 36,197, 63, 68,194, +147,135, 55, 0,154,105,173,230,139, 55, 14, 24,120,228,253, 15,200, 3,121,239,167,197,202,203,146, 53,181,202,219, 85,106,132, +132,164, 75, 12,128, 86,121,187,228,107,151,253, 98,155, 69,105, 18, 81,187,160,160,160,165,211,166, 77,243,191,117,235,150,139, + 82,169, 84, 30, 62,124,248, 84,108,108,172,183,143,143, 79,220,200,145, 35,155, 87,168, 80,161,252,135, 31,126,232,176,115,231, +206,105, 0,134, 90,161, 25,242,254,219,111,157,223,180,106,185,227,243,221,171,161,137,185,142, 67, 73, 74,252,153,146,195,170, +184, 74,105,116,189,114,112,146, 10, 49,183,133,159, 83,167,189, 49,139, 1,244,181,230,222,107, 87,244,173,170, 83,229, 32, 87, +165,195,150, 59,105,170, 99, 9,202,242,228,246, 56,117, 85,248,219, 50, 65,106, 34, 2,157, 37,213,108,185,119, 19, 50,153,229, +213, 83,220,221,221,209,186,117,107, 4, 7, 7, 11, 91,181,106, 85, 23, 64,190,129, 41,172,169,213,106,124,121,158,193,217,217, + 89,238,233,233,233,238,236,236,252, 92,171,213,190,148, 38, 0,120,120,120,116,111,221,186,181,112,251,246,237,207, 30, 61,122, +116,177, 79,159, 62, 15, 93, 92, 92, 10, 68,127, 29, 29, 29, 81,173, 90, 53,124,245,213, 87,194,142, 29, 59,150,168,233,237,237, +221, 46, 34, 34, 2, 68,148,255, 71,187, 48,129,129,129,240,241,241, 65,167, 78,157,132,221,187,119,111,103,190,239,117,252,124, + 26, 35, 90, 5,186,157, 23, 55,253,102,233,120, 43,190,239, 79, 77,209, 37,153, 76,102, 85,167,246, 18, 52,139,156,238,148, 74, +165,249, 81,168,194,215,178,164,201,113, 28,166, 79,159, 14, 34,130, 72, 36,130, 88, 44,182,248, 28, 22, 22,102,235, 56,227,136, +136, 19,139,197,147,133, 66,225, 80,181, 90,237, 47,147,201, 18, 13, 6,195,143,106,181,122,190, 49, 34,234,102,233,103,183, 40, + 77, 71, 71,199,192,123,247,238, 85, 47,234, 77, 81,171,213,168, 91,183, 46,160, 70,116,113,154, 49, 49, 49,129, 85,171, 86,173, + 1,192,180, 68,219,105,198, 88, 43,179,215,230,156,102,140,189,103,252,250,238,131, 7, 15, 2, 97, 52, 90,230,154, 58,173,182, +178,127,121, 23, 92,123,172,194,230,211, 10,252, 62,205, 15,239,206, 79,196, 71, 13,132, 8, 14,112,130, 94,171,171,209,163, 71, +143, 45, 0,106, 32,239,143,228, 7, 61,122,244,168, 41, 16, 8,254, 0,240, 11,128,204,226,238,253,101,176,107,150, 45, 37,120, +145,114, 68,116,192,236,250, 93, 76,175,167, 76,153, 50,117,225,194,133,183,136,232,128,249,118,243,227,204,159, 1,192,244,245, +151, 95,126, 25,178,104,209,162, 5,166, 99,203,250,158, 0,219,166, 14, 93, 82,115, 29,113,230,137, 11,132, 2, 3,132, 28, 65, + 40, 0,192, 8,177,143, 99,144,165,200, 56,203, 30,254,239,145, 53, 66, 84,165, 71,139,250,111,213, 93,178,109,197, 36,238,135, + 51, 57,200, 80,230,226,246, 95, 39,113,249,228, 47,201, 6,189,225, 23, 16,187, 2,112,145,120,200,223, 97,172,244, 93,192,243, +140,150,209, 92, 21, 48, 91,255, 29,136,232,189,154, 53,107, 46,156, 62,125,122,224, 95,127,253,229,172, 80, 40, 82,183,110,221, +122, 71,173, 86,255, 5, 96,229,147, 39, 79, 90,175, 92,185,210, 97,217,178,101,237,235,212,169, 83, 99,215,174, 93, 57, 86,104, +214,155, 56,176,239,249,161, 99,199,201,162,119,173,133, 36, 58, 18,211,175, 63, 51,252,158,148, 51, 13,192, 10,196,101,183, 72, +205,213, 31, 91,222,186, 34, 87,201, 89,140, 32, 55,137,229,191, 20, 22,144, 73,164, 66, 38,148, 65,163,209, 35, 75,195,107, 24, + 99,202,240, 38,193, 90,230,232, 37, 3, 0, 33, 71, 37,254, 76, 50,198,210,137,104,177, 68, 34,153, 78, 68,172,113,227,198,215, +234,212,169,147,237,238,238, 14,149, 74, 5,181, 90, 13,177, 88, 12,149, 74,133,216,216, 88, 92,188,120, 17,238,238,238,214, 14, + 17, 0,144,157,157, 13,103,103,103,240, 60,255,210,154, 6,131,129,214,175, 95,239,120,235,214, 45,199, 61,123,246,120,143, 31, + 63,254,121,173, 90,181,174,244,234,213,235,126,249,242,229,213,215,175, 95,199,185,115,231,144,158,158,142,183,223,126,219, 42, + 77,141, 70, 3,161, 80, 8,149, 74, 5,169, 84, 10,161, 80, 8,189, 94, 15,158,231,243,205, 87,118,118, 54,210,210,210, 32, 22, +139,161,209, 88,149,246, 86,166,152, 34, 90,230, 20, 55,253,102,233,248,146, 40,235, 60,169,226,166, 59, 51, 50, 50,228,110,110, +110,147,173,137,208, 17, 17, 4, 2, 1,196, 98, 49,136, 8,173, 90,181,194,144, 33, 67,208,160, 65, 3,196,196,196, 96,199,142, + 29,184,124,249, 50, 68, 34, 81,254,241,214, 18, 22, 22, 38,144,201,100,231,222,127,255,253,144,105,211,166,201, 42, 85,170,132, +232,232,232,128, 69,139, 22, 77, 62,126,252,120, 55, 34,106,196, 24,227, 75, 20, 50, 77, 9,230, 77, 23,118, 82,171,213,136,142, +126,193, 71, 21,119,206, 11, 4, 5, 5,197,114, 28,119,159,231,249, 51, 0,234, 50,198, 90, 17,209, 97, 0,142,133, 14, 85, 50, +198,222, 35, 34, 5,128, 27, 28,199,221,229,121, 62,214, 82, 58,149,179,179,115,106,252, 83,133,183,167,147, 12,253, 91, 58,225, +221,249,137, 8,111, 36,133, 84, 76,184,243, 40, 25, 65, 85, 43,209,181,179,251, 26, 33,207,100, 53, 78, 74, 74, 2,128, 70, 0, + 30,197,197,197,249,194,104,180,236,252, 55, 40,108,134, 76, 6,106,225,194,133, 93, 10,111,179,100,156, 10,111, 95,180,104,209, + 2,179,215,165, 46,198,178,144, 12, 31,102,140,114,253,109,180, 14, 30, 60, 88,188, 3,225,241,209,129,159,183, 95,120, 87, 75, +129, 33, 13, 91,226,239,232, 16, 67,228,197,115, 0,216,143, 86, 13,198,175,171,156,115,112,252,113,253,130, 49,220,134,147, 57, +136, 75,124,138,115,135,126, 68,106,210,227,205, 0, 27,207, 30,238, 86,216,114,115, 22,175, 81,165, 71, 72,121, 47, 79,228,106, + 25,120, 6,224, 5,179,245,223,128,136,186,214,168, 81, 99,206,249,243,231, 3,115,115,115,157,255,252,243,207,140,136,136,136, +251, 26,141,230,123,198,216, 86,227, 49,251,159, 61,123, 54,151, 49, 6, 23, 23, 23,161, 72, 36,146, 23,151, 32, 74, 68, 13, 38, + 14, 29,112,118,241,250, 77,178,251, 55,175, 97,229,158, 67,200,200,201, 49,156,124,170,250,128, 49,102,250, 47,225,143, 32, 55, +105, 2, 3,171, 40,226, 8,190,142, 34, 31, 34,146, 49,198, 74,156,230,245,173, 24,200,233, 2, 42,227,140, 62, 23, 21, 60,165, + 18, 0,168, 82,163,182,224, 47,149, 14,127, 94,143,134,151,147,139,216,154,123,103,140,205, 32, 34,239, 45, 91,182,112, 58,157, + 46, 59, 38, 38, 6, 62, 62, 62,240,246,246,134,171,171, 43,110,223,190,141,223,127,255, 29,119,238,220, 1,207,243,168, 95,191, +190,149,239,106, 30,207,159, 63,199,245,235,215,209,169, 83,231,241,169,169, 79, 93,220, 61, 60,149,103,207,156, 94, 86, 26, 77, +158,231, 9, 0, 66, 66, 66, 16, 18, 18, 34, 75, 72, 72,240, 63,112,224, 64,249,121,243,230, 61, 9, 12, 12,220,166, 82,253,157, + 62,165, 86, 91,215,196,221,100,156,114,115,115,243, 77,160, 76, 38,131, 88, 44,134, 66,161, 64, 74, 74, 10,178,178,178, 0, 0, +110,110,110,255,136,209,178, 20,161, 42,203,227, 95, 5,197, 77,119, 18,209,199, 0, 38, 91, 56,237, 5,136, 8,122,189, 30, 98, +177, 24, 77,155, 54,197,234,213,171,113,249,242,101,252,242,203, 47, 8, 8, 8,192,192,129, 3,193,113, 28,110,221,186,101,235, + 16,249,243,231,207, 79,254,224,131, 15, 66,182,108,217, 34,139,141,141,197,157, 59,119,224,230,230,134,213,171, 87, 75,135, 13, + 27, 22,116,226,196,137, 25, 0,150,150, 36,100, 94, 93,232,231,231,215,179,110,221,186, 47, 28,227,227,227,227,122,228,200,145, +242, 38, 3, 86,184, 34,209, 2, 25, 51,102,204, 88, 30, 28, 28,188,194, 56, 93, 24, 10,192,145, 49, 22,182,103,207, 30, 2,128, +240,240,112, 70, 68,166, 63, 72, 55,118,239,222,221,230,246,237,219,108,214,172, 89, 22, 63,147, 82,159, 38,173, 95,190,122,195, +242,197,179, 39, 74, 38,116,114, 69,120, 35, 17,100, 98,130,139,131, 8,243, 87,109,212, 93,189,120,250,186,175,175,239, 1, 0, + 31, 36, 37, 37,193,215,215, 55, 27,192, 93,129, 64,240,200, 96, 48, 36,218,115,225,223, 44, 44,121, 17, 99, 84, 57,201,248,181, + 69, 3,101, 45,133, 35, 94, 38,190,252,242,203,144,133, 11, 23, 94, 42,141,166,201,100,153, 39,193, 19, 17, 35,162, 48,198,216, +169,252,140,165, 34,167, 12, 77, 8, 57, 95, 31,111, 47,143, 41, 3, 91,128,231, 1,189, 1,208, 27, 24,148, 57, 42, 68,223,188, +156, 3, 25,237,177,106, 68, 82,201,146,121,211,198, 85,185, 22,207, 33, 49, 93,139, 83,251, 54,176,212,164,199,221,217,195, 93, +131,203,202,100,249,148,247, 58,185,125,195, 92, 92,126,168,129,129,207,243, 89, 60,207,242,191,254, 47, 64, 68,213,188,188,188, +150, 93,184,112,161,146, 84, 42,117,190,119,239,158, 97,247,238,221,137, 26,141,102,157,201,100, 25,249,184, 97,195,134, 58, 71, + 71, 71, 40,149,202, 92,173, 86,155, 93,140,201,242, 15,107, 80,239,244,226,245,155,100,185, 26, 13, 50, 85,106, 8, 60,203, 23, + 54, 89, 32,162,230,109,170, 87,168, 64, 50,103, 48, 0,143, 21,218, 68,107, 76, 22, 0, 56,185,186,113,254,141,194,208,232,179, +213, 80,144, 51, 3, 0, 79,223, 10, 92,155, 81,243,209,113,229, 41, 40, 57,103, 91,172,112, 98,223,190,125,227,107,215,174,157, + 25, 28, 28,156,249,252,249,115, 68, 69, 69, 33, 61, 61, 29, 43, 87,174, 68,116,116, 52,120, 62, 79,206,210, 52, 74, 73,240, 60, +143,244,244, 52, 39,198, 24,210,211,158, 59, 78,155, 54,205,181, 52,154, 6,131,161,192,239, 86,133, 10, 21, 48,114,228, 72,113, + 78, 78,142,219,147, 39, 79, 92,204,247, 89,171,169,209,104, 76, 77,242,192, 24,131, 70,163, 65,102,102, 38, 52, 26, 13,238,223, +191,159,111,178,140,215,255,199, 34, 90,166,175,229,114,121,138, 41, 65, 84, 38,147,129,136, 44, 77,191,149, 73,247,103,211,181, +136,136,201,229,242,162, 22,147,182,136,209,236, 89,196,214,241, 25, 12, 6,136,197, 98, 12, 25, 50, 4,151, 46, 93, 66, 76, 76, + 12, 4, 2, 1,148, 74, 37,114,114,114,208,174, 93, 59, 72, 36, 18,211,117,173,149,101, 98,177,248,227,169, 83,167,202, 30, 61, +122,132,103,207,158,153,146,233, 97, 48, 24, 48,126,252,120,185, 84, 42,253, 24, 54,134,238, 19, 19, 19, 59,220,187,119,175, 70, +225, 71,114,114,114,166,121, 78, 97,105,217,179,103, 15,133,135,135,179,240,240,112,102, 50, 92,214,146, 17, 31,181,254,151,253, + 7,142,125,254,213,146,236, 28,101, 22,170,250,201,145,157,149,137,249, 11, 23,235,206,159, 63,115,114,242,248, 17,205,118,239, +222,189, 8,192, 93,227, 41,119,119,239,222, 61,224,171,175,190,250, 9,198, 54, 15,118,222, 28, 44,121, 17,243,223,189,178,152, +222,179,164, 97,156, 62,148,151, 82,210, 84,113,216, 26,200, 51, 94, 70,211,117, 18,176,114,234,144,130,122,189,229,237,229,121, + 98,203,154,217, 78, 7,110, 2,241,113,143,145,154, 20,139, 70,205,194, 16,125,243, 26,120,157,225,103,118,111,119,137,229,233, + 84,185, 71,245,224, 90,181, 71,181,110, 86, 7, 75, 14,100,227, 94,228, 17,100,164, 38,173, 97,143,118,217, 84, 9, 87,164,126, +149, 30, 33,222,229,188, 78,254,180,118,142,199,225, 40, 14,113,113,143,177,239,167, 21,208,105, 95,240, 0,135,108,213,150,243, + 26, 73,118, 70, 10, 52, 89, 6,200,184, 28,203, 9, 65,175, 17,198,216,253,114,229,202,109, 89,190,124,249,136,102,205,154, 57, +244,233,211,231, 94,122,122,250, 60,198,216, 46,211, 49, 68,244, 78,141, 26, 53,190, 88,179,102, 77, 80, 92, 92, 28,142, 29, 59, +118, 31,197, 36,250, 49,198,226, 5, 2,193,186,223,127,218, 56, 81, 94,165, 38, 86, 78,253, 92,191,231,114,212,251,140,177,195, +102,154,193,109,235, 86, 63, 48,239,139, 79, 57,254,234,111,184, 30,155,130,135,153,234,223,173, 29,119, 76,134, 82, 39,146,202, +225,228, 83, 9,247,178, 13, 98,161, 80,120,105,232,208, 33, 98, 78, 32, 4, 39, 20, 35, 42, 61,215,170,138, 59, 35, 78,151, 46, + 93,226, 4, 2, 65, 1,131,110, 30, 33, 50, 97,109,164,200, 22,172,213, 44,108,180, 76,232,245,250, 23,182, 91,171,169, 86,171, + 97,201, 47, 91,202,213,226,121,254,149,220,127, 73,152, 71,168,204,167, 12, 77,249,116,185,185,185,229,229,114,121,138,105,250, +175,172, 34, 90, 47, 83,137, 88,220,244,165, 45,227,227, 56, 14, 60,207, 67, 44, 22,163,126,253,250, 56,112,224, 0, 60, 60, 60, +224,226,226, 2, 23, 23, 23,200,229,114,120,122,122,230, 27, 45,142,179,186, 74,135,169,213,234,128,128,128, 0,220,191,127, 31, + 50,153, 44,255, 33,149, 74, 17, 18, 18, 2,165, 82, 89, 1,255,169,216, 61,240, 73,175,182,221,214, 70,236,237,127,224,192,193, + 81, 90,117,110,157,154, 53,107,176, 43,231, 79, 92,159, 60,126, 68,199,146,207,182,243, 95,194, 20,141, 50,207,181,154, 50,101, +202,212,210,234, 77,153, 50,101,170,165, 8, 87, 41, 57,137,188,169, 62,211, 51, 0,163,209, 50, 57, 72, 75, 78,210,100,178, 54, +175,158,229,178,247, 47, 32, 62,254, 17,142,237, 90,149,165,211,106,210,121, 94, 23,248,240,206, 53,128,195,143, 86, 13,129, 99, + 77,186,117,106, 67,199,110,105,160,200, 72,197,221, 43, 71, 30, 67, 37,249,178, 12,110, 46,223,100,109, 89, 59,219,227,215,155, +132,184,184,199, 56,188, 99, 69,166, 78,175,125,135, 61,220,109,115, 31, 46,115,250, 73, 36,221,122,213,114,235, 50, 52, 52, 17, + 6, 50,224,227,232,219,239,249,133, 82,183,196, 51,197, 87,134,189,106, 82, 83, 83,231, 59, 57, 57,113, 75,151, 46, 29,156,155, +155, 59,139, 49,150, 31, 85, 36,162,118, 85,171, 86, 93,178,126,253,122,255, 39, 79,158, 72,206,158, 61,155,118,242,228, 73, 30, +192,162,226, 52, 13, 6,195, 36, 34, 18, 52,168, 84, 97,204,213,199, 9,239, 51,198,126, 51,211, 12,233,210,176,246,159,155, 22, +206,112,214,253,185, 7,217, 73,113,248,242,207,120, 5, 0,171,190,135, 68,228,225,229,229, 69,253,250,245,227,179,178,178, 32, +150, 72,120,157, 78, 39,104,222,188,185, 97,220,184,113, 92,114,114, 50, 20, 89,217, 66, 34,242, 96,140,165,149,160, 53, 7,192, +248,230,205,155, 83,211,166, 77, 47,174, 88,177,226,168,105,159, 37, 83, 81,154,136, 86, 73, 88,171,201,243,188,197,191,162, 58, +157,238,133,223,183,210, 68,180,204,177,100,180,254,201,136,150, 37,211, 98,110, 18,205,141, 80,105,114,180,202,154,226,204,148, + 45,227, 51,229,201,137,197, 98, 92,187,118, 13, 21, 43, 86,132, 86,171,133,179,179, 51,156,157,157,225,228,228,132,172,172, 44, +136, 68, 34,155,242,179, 0,240, 50,153,236, 73, 84, 84, 84,141,114,229,202,193, 96, 48, 20, 48, 91,247,238,221,131,163,163, 99, + 2,108,140,104,249,249,249, 29, 49, 86, 29, 22,192,199,199,199,213, 22,157,162, 48,143,100,133,135,135,151,106, 94, 97,237,194, +137, 17, 0, 34,122,244,232,177,229,198,249,131,141,124,125,125, 15, 6, 7, 7, 19, 0,216, 43, 12,255, 27, 20,231, 69, 0,164, + 22,138, 68,105,204, 94,167, 2, 32,227,235, 84, 32,223,136,153,127,173,177,176,237,249,194,133, 11, 79,152,229,119,165,226,229, + 48,181,120, 40,144,183, 92,108, 68,139,130,122,189, 85,222,211,227,196,247, 43,103,185,236,138, 4, 18,226, 30,225,212,207,171, + 51,245, 6,237, 59,224, 89,210,249,227, 63,239, 1, 33, 7, 15,247,156, 2,118, 21, 39,149, 7,143, 6, 13,106, 5,226,151, 91, + 58,164,198,223, 3, 99,252,102,150,242, 83,137,201,217, 37, 97, 50, 89,155, 87,207,242,216,123,141, 16, 31,247, 8,199,118,173, +202,212, 27,180,239,148,166,217,169,137,161, 68,238, 2, 71,217,186,254,237, 27,247, 12,172,234, 15,158,233,192,139, 25, 62,154, +228, 37,188,123, 53,231,151,128,246,130, 93,124, 54, 63, 42,254,252, 63,215,205, 60, 59, 59,123, 46, 17,237,101,140,229,103,177, + 18,209,123, 65, 65, 65, 11,190,253,246,219, 74, 9, 9, 9,206, 87,175, 94, 85,124,247,221,119,143,120,158,159,195, 24, 43,177, + 50,139, 49,246, 57, 17,125,111,222,131,135,136,234, 77, 28,220,247,124,223, 65, 67,101,143,142, 71,192,253, 81, 52,190,248, 51, +209,112, 55, 93,211,135, 49,150, 92,146, 38, 17,121, 72,165,210, 61,135, 14, 29,186,223,160, 65, 3, 82, 42,149,208,233,116,120, +246,236, 25,246,238,221, 27,197, 24,131,187,187, 59, 14, 29, 58,196,247,237,219,119, 15, 17,133, 23,101,182,204,218, 59,144,177, +189,195,219,191,253,246,219,237,142, 29, 59,198, 3, 47,154, 21,169, 84,138,220, 92,219,186,132, 20, 85,197, 88, 26,205,162, 34, + 90,133,183,219,162,105,154,190, 52, 37,193, 23,222,110, 66, 32, 16,128,231,249, 23,182,191, 14,204, 77,139,121,117,160, 53,199, + 23, 71, 73,141, 67, 75, 83,137,104,162,172, 34, 90, 0,242, 35, 90,251,247,239,199,160, 65,131, 96, 48, 24,224,224,224, 0, 39, + 39, 39, 56, 58, 58,226,231,159,127,134,169,253,131, 45, 67,212,233,116, 91, 23, 46, 92, 56,117,253,250,245,114,198, 24, 36, 18, + 73,190,209,154, 53,107,150, 74,171,213,110,133, 21, 70, 43,191,227, 59,207,162,170,149, 43,190,234,208,210, 57, 69,228,107,185, +205,153, 51,103, 0,207,243,221, 80,168,133, 67,161,227, 10,180,126, 40,174,189, 3, 0,247, 57,115,230,124,194,243,188,169,155, +106,129,234, 66,179,227, 76,127, 75,106,244,232,209, 99, 75,225,170, 67, 59,111, 60,165,106,187,240,154, 8,163,191, 27,149, 18, +144,223, 75, 43, 12, 40,198,104, 81, 80,143,224,242,158, 94, 39, 54,174,152,229,178,237, 18,144, 24,247, 16,231,246,175,201, 52, +240, 58,115,243,210,210,166,161, 16, 53,240, 43,239,134,180, 11, 42, 40,158, 61, 1, 24,174,150,238,158,204, 36,171,244,170, 86, +222,203,243,228,166, 85,179, 60,118,255,197, 33,225,201, 35,156, 52,154,193,151, 49, 89,253, 36,146,110, 33,213,253, 55,245,126, +175,133,187, 43,233,161,143,189,141,239, 7,246, 68,100, 87, 45, 90,244,114, 69,147, 78,206, 8,122, 75,214,243,208,198,180,119, +253, 66,105,232, 63, 25,221, 42,100,178,186, 86,170, 84,105,246,197,139, 23, 3,121,158,119, 62,117,234, 84,214,250,245,235, 31, +228,230,230,174, 98,140, 29,180, 65,211,220,100, 53,152, 50,108,224,217, 5,223,126, 47,139,138,188,140, 37, 91,127,133, 74,167, + 49, 28,137,207,238, 97, 62,173, 88, 28, 18,137,100,238, 31,127,252,225, 88,183,110, 93,122,254,252,121,126,228, 69,171,213, 34, + 51, 51, 19, 89, 89, 89, 80,171,213,104,216,176, 33,183,106,213, 42,199, 49, 99,198,204, 5, 48,202,218,241, 58, 59, 59, 67, 44, + 22, 67,171,213,230, 71,180,164, 82, 41, 92, 93, 93,241,252,249,115,236,220,185, 19, 0,138,141,146,137,197,146, 36,142,163,138, +114, 7, 7,181, 76, 38,227,125,125,125, 95, 56,198, 86, 77, 35,241,239,189,247,158,255,156, 57,115,100, 13, 27, 54,204,223,104, +138,104,149, 70,147, 49,150,211,190,125,123,135, 85,171, 86, 33, 48, 48, 16, 26,141,166,128,161,226, 56, 14, 98,177, 24,113,113, +113,152, 55,111, 30, 24, 99, 47,253, 15,141,173,152,155, 22,115, 51,100,204,161,122,193, 8, 89, 27, 49, 42,105,106,208,214, 74, + 68,115,227, 38,149, 74,145,145,145, 33, 39,162,143, 45,181,120,176, 37,162,101, 50, 90,209,209,209,216,178,101, 11, 58,117,234, + 4,119,119,119,164,167,167, 99,215,174, 93,184,125,251, 54, 36, 18, 9,136,200,150,168, 22,223,180,105,211,197,103,206,156,233, +218,167, 79,159,218, 95,124,241,133,188, 78,157, 58,184,123,247, 46,230,204,153,147, 27, 25, 25, 25,163, 82,169,230,192,154,198, +166,198,142,239,166,102,164, 86, 85, 29, 22, 58,167, 48, 69,180,119,120,207,226,193, 5, 91, 63, 20,104,239, 96,206,185,115,231, + 42, 87,170, 84, 41, 24,121,149,132,192,139,213,133,230, 92, 78, 74, 74,106, 12,123,213,161,157,215, 8, 99,236, 20, 17,153,162, + 89, 38, 94,172, 58,124,241, 76, 26,223,103,224, 48,151,173,151, 8,113,177, 49,184,114,104, 93, 97,147, 85, 34, 68,212,214,188, +215,134, 76,238, 88,135,167,188,114,102,197,179, 56,128, 9,108, 54, 90,133, 53,193,248,207,251, 12, 24,230,177,253, 10, 33, 49, +238, 1,254,220,183,214,102,147,101,174,217, 79, 34,249, 74, 36,160,233,157, 91, 53, 16,183,124,171, 58, 28,159, 62, 70,114,124, + 34,118, 70,167,166,197,164,171,135,254, 73, 90,196, 62, 80,127,223,233, 19, 15, 15,119, 31, 17,186,140,240,244,184,240,171,226, +151, 10,239,112, 90,166,101, 11, 19,207,178, 89, 22,199, 89, 6,148,164, 73, 68,213, 92, 92, 92,150, 70, 70, 70,150,147,201,100, + 46, 87,174, 92, 49,108,216,176, 33, 46, 55, 55,247,107,198,216,142, 82,106,250, 55,174, 94,245,212,130,181, 27,101,217,202, 28, + 40, 53, 90, 72,189,125, 13,123,207,223,236,206,138,104,170, 89, 88,147,136,218, 12, 30, 60,184, 94,211,166, 77, 57,115,147,165, +209,104,160, 80, 40,144,149,149, 5,133, 66, 1,133, 66,129,132,132, 4,180,110,221,154,171, 87,175, 94, 29, 34,106,195, 24, 59, + 81, 88,211,172,189,195, 84, 0, 28, 17, 93,190,118,237, 90,118,199,142, 29, 33,151,203,161, 84, 42, 17, 16, 16, 0,189, 94,143, + 67,135, 14, 33, 50, 50, 82,201,243,252, 41, 0,215,138, 27,167, 74,149, 19, 64, 68,156, 42, 39,167,254,128, 1, 3, 90, 79,152, + 48,161, 64, 73,122,249,242,229,225,225,225, 97,147, 38, 0,164,165,165,213,250,237,183,223,198, 93,187,118,237,243, 78,157, 58, +185, 78,157, 58, 85, 90,185,114,101, 24, 12, 6,174,180,154,233,233,233,174, 87,175, 94, 93,214,178,101,203, 79, 59,118,236, 40, + 92,176, 96, 1, 92, 93, 93, 97, 48, 24, 32,151,203,161, 80, 40, 48,103,206, 28,156, 61,123, 86,207, 24, 91,155,153,153,249, 69, + 73,154, 47,139,133,239,187,197, 8, 80, 81, 70,200,210,241,175, 99,156,133,140, 27,220,220,220, 38, 3,152, 76, 22, 90, 60, 88, +171, 9,252, 29,209, 18, 8, 4,120,252,248, 49, 54,108,216,240, 66, 31, 45, 83,251, 7, 75,218, 69,220, 59, 59,121,242,164,129, +136,154, 93,185,114,101,114,255,254,253,135, 42,149, 74,127, 71, 71,199, 68,157, 78,247,163, 74,165, 50,245,209,178, 88,189, 91, +212,251,169, 84, 42, 99, 45, 85, 29, 22, 62, 6,112, 43, 86,179, 80,123,135, 2, 45, 28, 10,157, 86,160,245, 67,225,246, 14,230, +154,205,155, 55,127,196,113,220, 29,227, 20,252, 29, 20,170, 46, 52,211,172,145,148,148,212,216,215,215,247, 20, 0,135,194, 85, +135,255,196,103,178, 93,243,255, 15,172,164,134,165,150,207,130,236,248,197,199,144,200,211,112,253,247,205, 54,155, 44, 75,168, +115,115, 98,102,108,127,242,150, 70,157, 11,101,102,202, 93,246,104,135, 77, 97,125,139, 16, 28,143, 95,142,133,204, 49, 3,127, + 29,255, 33,195, 96,200,125,135,197,252,239, 90,201, 39, 22, 37,135, 47,191, 61,188, 71, 76,174, 30,184, 62,110, 16, 18, 51,148, + 56,252, 48,125, 23,203, 81,143,138, 48,174,235,231,223,140,206,108,154,150,188, 46,244, 35,215,158, 94, 21, 68,248,102,226,143, +144, 77,241, 20, 55,121,183,213, 63,186, 6,162, 41, 65,126,229,202,149, 35, 67, 67, 67,157,122,246,236,121, 47, 45, 45,173, 64, +130,124, 41, 52,227,137,232,219,131,235,191,158,232, 89,247,109,172,249,106,146, 97,251,249,155, 5,170, 16, 75, 66, 44, 22,135, + 77,153, 50, 69,172, 84, 42, 95, 48, 89,133,141,150, 66,161,192,245,235,215, 49,112,224, 64,233,181,107,215,194, 0, 20,238, 40, +109, 26,215, 12, 34, 90,143,188,181, 14,147, 35, 34, 34,154,237,219,183,175,217,248,241,227,197,157, 58,117,194,133, 11, 23,112, +236,216, 49,173, 86,171, 61, 15,224, 60,179,114, 89, 27,150,215,127,232, 42, 17,221, 92,178,100, 73, 51,129, 64, 48,195,180, 47, + 42, 42, 10,155, 55,111, 46,141,166, 30,192, 50, 34,250, 54, 34, 34, 98,198,241,227,199, 7, 15, 24, 48,192, 69,167,211, 33, 58, + 58, 26, 63,252,240, 67,105, 53,199,149, 43, 87,110,250,161, 67,135,126, 60,122,244,232, 7,253,250,245,227,198,142, 29,139,213, +171, 87,227,127,255,251, 31,111, 48, 24,246,137, 68,162, 1,169,169,169, 47,181,142, 98,105, 49, 70,128, 18,145,215,241,221,218, + 53, 15, 75,212,125,153,169, 65, 43,199,109,245, 18, 64, 69, 97,186,143,176,176,176,252, 40, 35, 99,172, 64, 94,157,201, 96,217, + 58,117, 8,192,205,248,115,186, 22,192,106, 20,236, 10, 47,192,223,157,227,173, 85,172,157,164,118,139,130, 26,209,197, 47, 42, +237, 6, 48, 88, 14,101,253, 77,198,140, 25, 51,150,207,156, 57,115, 57, 21,106,225, 96,126, 80,225,214, 15,179,103,207, 70, 81, +237, 29, 0,164,207,152, 49, 99, 49, 0, 4, 7, 7,147,113,186,176, 17,140,213,133,102,154, 91,140,219, 29,102,205,154,213, 31, + 64,113,154,118,236,188, 54,138,201,209, 98, 83,163,206,108,215, 1,240, 4,113, 95,178, 7, 59, 45, 54,168,179, 5,198,179, 41, +127,108,155,181, 26, 12,233,204,160,183,170, 31, 77,137,240,130,105, 81,103,182,241, 0,185,129,184, 41,236,193,255, 94,122,156, +228,234,129,172, 57, 35,241,191, 91,137, 44, 89,169,251, 48, 66,163, 41, 16,185, 49,230,100,245,242, 11,165,157,238,126,162,189, +227,222,241,164,131,105,253, 95,246,178,101, 66,106,106,234, 2, 39, 39, 39,193,178,101,203, 6,171, 84,170, 2, 9,242,165,133, + 49, 54,137,136, 4, 77,170, 5,142,185,116, 63,182,155,181,211,133, 38,136, 72,226,231,231,119, 51, 55, 55, 23, 68, 4,181, 90, +157,111,176,178,178,178,144,153,153,153,255, 90,171,213, 34, 53, 53, 21, 1, 1, 1, 32,162, 98,123,106, 21,250,131,120,154,136, + 34,231,204,153,211,106,206,156, 57,245,145, 23, 21, 58, 93,218, 41, 51,163,225, 57, 45,151, 59, 36, 18,145,191, 88, 34, 85,158, + 59,119,238,248, 75,106,230, 32, 47, 82,242,205, 55,223,124, 51,223,209,209,177,113, 84, 84,212,239, 47,163,105, 52, 81,221, 61, + 61, 61,253,182,108,217,178,123,211,166, 77,111, 11,133,194, 11, 68,212, 35, 35, 35,227,159, 94, 84,122, 56,172, 91,227,208,252, +185, 68,202,186, 73,233,171, 48,110, 6,131, 33,123,250,244,233,249, 90,166,123, 43, 28,189, 50,189,214,106, 95, 44,141,182, 68, + 73,121,110,133, 40,193,100, 80, 54, 0,228,173, 93,152,183,172,142,181,139, 74, 3, 40,114,237,204,153, 51,103,178,217,179,103, + 19,199,113,251, 0,220,229, 56,238,126,225,100,117,243,125,179,103,207,198,204,153, 51,217,172, 89,179,138, 28,169, 73,243,246, +237,219, 76, 32, 16,252, 14,224,145, 64, 32,120,108,174,107,190,221,116, 78,113,154,118,236,188, 46,138, 52, 90,236,225,238, 56, + 0,131,202,242, 98,236,209,238,227,200, 75,100, 44, 59,205,199, 59, 98, 1,244, 43, 43, 61, 30, 88, 58,180, 73,216, 68, 0,196, +128,111, 10,155, 44,115, 18,207,176,125,190, 45,104, 97,147,119, 91,141, 7, 0, 2, 22,148,213, 56, 94, 6, 75, 9,242, 47,139, +165, 4,121,107, 49, 24, 12, 71,229,114, 57, 41,149, 74,168, 84,170, 2,209, 43,133, 66,129,156,156, 28,100,103,103,231, 39,177, +103,103,103,155,166,193,108,250,111,212,104, 86, 14, 19,209, 81,198, 88,169, 87, 20, 48, 71,165,202,169, 8, 0, 68, 36, 40, 43, + 77, 99, 65,194,208,178,212,124,254,252,121, 34,128,230, 65, 65, 65,146,152,152,152,215, 95, 98, 88, 4,101, 17, 29,122,213,148, +181,113, 3, 0,173, 86, 91,171,172, 53, 25, 99,119, 75, 62,202, 38,193, 31,218,183,172, 45,128,121,239,160,146, 22,149, 6, 0, + 80, 54, 24,126, 40, 98,140,140,242,156, 36, 3,176,229,193,131, 7,129, 60,207,199, 90,136, 44, 21,216, 55,107,214, 44, 48, 75, +101,180, 47,106, 2,192, 47,113,113,113,126, 6,131, 33,169,144,110,129,237,197,105,218,177,243, 58,177,101, 9,158,255, 23,108, +213,104,102,162,132, 69,141,205, 73,250,147, 77, 3, 48,237,213,141,168,116,148,165,201, 50,211,180,217,100, 1,128, 78,167,251, + 3, 0,202,149, 43,135,114,229,202,149,116,184,249,121,165,185, 28,202,202,188,188,137,154,255, 38,147,101,231,223, 13, 75,143, +138, 3,240, 85,137,199,149,220, 13,190,224,241,127,155,155,116, 0,233, 69,120,157,226,246, 21,167, 9, 0, 10, 0, 10, 11,231, + 22,181,221,142,157,127, 20,155,146, 3,236,216,177, 99,199,142, 29, 59,118,236, 88, 15, 1,104,107,105,135, 45,213, 4, 68,100, + 81,163, 56, 74,210,183,107,218, 53,237,154,118, 77,187,166, 93,211,174,249,223,211, 44, 73,187,112,245, 50, 43,163,229,185, 94, + 39, 5,198,109,170,132,121, 21, 15, 0,109,237,154,118, 77,187,166, 93,211,174,105,215,180,107,218, 53, 75,121,157, 97,175,227, + 58,175,242, 97,207,209,178, 99,199,142, 29, 59,118,222, 32,218,213, 32, 95,161, 1,220,225, 24,150, 80, 22,122,239, 5, 81, 5, + 0, 40, 43,189,255,143, 16,145, 47,128,206,102,155, 14, 50, 99, 49,144,221,104,189,161, 16, 81, 53, 0, 83, 1,152,175, 69,118, +137, 49,182,176,208,113,219, 0, 56,152,109, 82, 2,152,195, 24,187,111,203,245, 4, 2,193,194, 86,173, 90,141, 58,123,246,236, +215, 58,157,110, 78, 41,198, 27,232,235,235,187,152,136, 26, 2, 16, 17,209,131,148,148,148,133, 58,157,174,212, 13,239,136,168, +138,143,143,207, 34, 0,111,113, 28, 39, 34,162,152,148,148,148,121, 58,157,174,240,114, 31,182,104, 58,123,123,123,183, 96,140, +249, 0, 16,136, 68,162,231, 9, 9, 9, 23, 89, 41,171,231,122,204,190, 45, 86, 40,245, 34, 0,112,113, 20,234,118,207, 12,214, + 90,187,173,180,247, 96,199,142,157,255, 8, 68,130,194,155, 58, 84,197,124, 98,248,194, 0, 80,135, 42,180,234,200, 35,124, 97, +233, 84, 0,128,165,130,155, 66,154, 29,170, 98, 62, 99,121, 26, 29,130,104,217,145, 7, 37, 20,119, 89,161,105,226, 59,128, 27, +102,205, 2,231,175,160, 48,232, 31,160, 51, 51,155,226, 52, 54, 96,254, 14, 40,193,104,245,174, 65,190, 6, 33,132,187,163, 88, +156,241, 68,103, 0,245, 1, 84, 3,112, 31,192, 53,198, 88,214,203,140,236, 77,209,252, 23, 50,131, 49,214,215,124,131,165, 62, + 68,239,188,243,206,251, 71,143, 30,117, 48, 45,207,194,243, 60,228,114,185, 30,192, 64,107, 47, 68, 68,229,251,244,233, 51,229, +251,239,191, 71,207,158, 61,167, 19,209,114,198, 88,182,181,231,123,120,120,132, 87,169, 82,101,245,198,141, 27,203,189,253,118, + 51,146, 72, 36,120,240, 32,198,127,248,240,225,117,188,189,189,247,165,164,164, 12,181, 86,203,132,167,167,231,199, 85,171, 86, +253,102,195,134, 13, 94, 45, 91,182, 4, 17, 33, 50, 50,210,127,220,184,113,245,125,124,124,118, 36, 39, 39,127,106,171,166,151, +151, 87,245,170, 85,171,182, 89,179,102,141,188, 69,139, 22,144,201,100,184,118,237,154,211,136, 17, 35,124,124,124,124,162,147, +147,147, 79,217,162,215, 99,246,109,241,141,200, 95, 63,208,107,213, 75, 0, 64, 40,150, 78,106,182, 92,241,107, 90,228,233,174, + 37,109,235, 49, 27,191,216,205,150, 29, 59,118,204,249,216, 15, 62,140, 97,226,209, 31,190,226, 0,160,253,224,185, 99, 63,246, +195,215, 91, 19, 81,226,122,179, 86,234,125, 49,160, 2, 86,111, 73, 64,202,203,140,243, 59,128, 27, 39, 20,142,109,210,180,169, +215,232, 63,255,140,209, 2, 63,190,140,222,155,130,209, 92,189, 64,145, 70, 43,188, 54,205,129, 16, 83, 1,208,123,213,104,199, +177, 71,130, 51,237,218,181, 11, 26, 50,100, 8, 53,104,208, 0,145,145,145,213,119,236,216,209, 89, 40, 20,198, 24, 12,134, 72, + 0,183,152,149, 93,173,137, 72, 4, 32, 68, 32, 16, 52,252, 55,107,254,203,113, 4, 0, 34, 74, 1,112,201,184,237, 82,225,131, +254,248,227,143,253, 66,161,208, 20,209,106,162, 84, 42,189, 81, 48, 10,102, 13,149,116, 58, 29,238,220,185, 3,142,227, 68, 0, + 42,227,197, 37, 53, 44, 66, 68,254,254,254,254,235,206, 95,138,244, 36,161, 28,233,185, 0,114,181,144, 56,121,227,251,205, 17, + 30, 19, 62,251,180,187,139,139,203, 25,133, 66,241,147,181,131, 33,162,202, 1, 1, 1,203,175, 95,191,238,233,224,224, 0,158, +231,145,149,149, 5, 31, 31, 31,108,220,184,209,109,194,132, 9,125,229,114,249, 73,149, 74,245, 63, 27, 52,157,171, 86,173,218, +230,230,205,155,114,211,130,210, 26,141, 6,254,254,254,216,182,109,155,116,236,216,177,181,164, 82,105,188, 90,173,126,104,173, +166, 66,169, 23,233,181,234, 37, 91,214,206,170, 8, 0, 3, 62,157,181, 68,146,229,114,200,154,109, 10,165,254, 32, 0,187,209, +178,243, 90, 33,162,134, 94, 94, 94,123,158, 61,123,118, 10,192, 80, 86, 6,145, 6, 34,242, 19, 10,133,149, 25, 99,110,198,215, + 25,122,189,254, 17, 99,172,212, 13,117,189,130,218,116,133,212, 97, 16, 24, 95,159, 3, 64, 28,119,205,160,205,217,252,236,238, +137, 95, 95, 74, 83, 34, 31, 12,176,250, 28,192, 19,199, 93,231,245, 57, 27, 83,111,159,176,169, 65,243,171,228, 66, 38,106, 84, +245,177,126, 97,204,178,208,235, 93, 5,190, 28, 15,110,219, 99, 88, 61,173, 56, 6,232,244,217,103,159,249,124, 58,106, 20, 13, + 26, 56,176,218,169,179,103,169,181, 45,171, 21,188,129,176, 98, 18,246, 45, 26,173, 30,181,201, 29,192,228, 29,171,167,114, 66, +129,128,250,124,182,176,239,166,181,203,184,118, 93,123,228, 79,159,132,134,134, 34, 52, 52,148,150, 44, 89, 82,237,247,223,127, +175,182,109,219, 54, 61, 17, 93,103,140,237, 44,234, 98, 29,131, 72,197, 3,178,206, 53,133,202, 62, 95,253,180,161,105,211,166, +144, 74,165,120, 25, 77, 0,104, 95, 77,240,176, 83,211,160,235,125,198,204,136,125,251,237,230,172, 44, 52,223, 32, 46, 49,198, +186, 1, 0, 17,185, 7, 4, 4,180,208,235,245, 50, 0, 16, 10,133,185, 0,198, 48,227,210, 65, 68,180,143,231,249,247,173, 21, + 38, 34, 14,192,204,247,223,127,127,250,232,209,163, 17, 16, 16,128,177, 99,199, 66,167,211, 69, 18,209, 12, 0,139,152, 49, 91, +177, 40,202,151, 47, 63, 99,221,186,117, 30, 66,137, 35, 26, 76,126,132,164, 12, 61, 0,192, 73, 10,236, 31,201, 48,118,236, 88, +151, 43, 87,174,204, 3, 96,181,209, 42, 95,190,252,156,141, 27, 55,122, 56, 56, 56,128, 49,134,236,236,108,100,101,101, 33, 59, + 59, 27,217,217,217,248,244,211, 79, 93,162,163,163, 23, 3,176,218,104,121,123,123,183, 88,179,102,141, 92, 38,147, 33, 59, 59, + 91,172,213,106, 41, 43, 43, 11, 57, 57, 57, 76,163,209,104,199,140, 25, 35,189,117,235, 86, 24, 0,171,141,150,157, 87, 11,229, + 77, 87,124, 40, 18,137, 62, 10, 10, 10,106,116,255,254,253,191,244,122,253,207, 0,126,126,217,127,166,136,232, 93, 63, 63,191, +249,137,137,137,107, 24, 99, 17,101, 51,226,127, 63,222,222,222, 63,159, 59,119,174,226,186,117,235, 6,126,253,245,215,135, 96, +195,239, 80, 97,140,255,252, 54,107,210,164,137,215, 71, 31,125, 36,242,241,241, 65, 78, 78, 14, 98, 98, 98, 28,142, 31, 63, 94, + 78, 38,147, 61, 87,171,213, 86, 47, 59, 5, 0, 94, 53, 90, 56, 65,232,178,163, 89,155,182, 45,123,118,255,208,217,219,211, 21, + 42,141, 1,247, 99,147, 2,126, 59,180,191,181, 95,157,206,231,180,218,204,222,207,238,254,105,117,196,221,164,217,166, 99,151, +150,109,223,125,215,217,213,205, 21,153, 74, 45, 30, 60, 78, 8, 60,113,236,215, 80,223, 58,157, 79,243,164,235,151,114,227,232, +107, 95,152,221,156,177,128, 80, 41,243,172, 87,191,121,131, 43,237,135,204,107,196, 24, 3,199,176,170,112, 52,107, 44, 32, 92, + 5,232,109,213, 3, 99,140, 8,203,204,163, 89,249,211,138, 28,168, 67,101, 20, 63, 77,105,164, 61, 32,117,243,240,104, 58, 98, +216, 48,202, 82, 40,112,237,218,181,156,214,133, 76,214,242, 10, 16,159,230, 80,105, 95, 28,238,217,240, 22,252,171, 41, 92, 29, +105,254,218,234, 62, 90, 14, 14, 14, 22,183,187,186,186,162, 77,155, 54, 88,184,112,161, 16, 64, 67,243,125,172,240, 34,171,128, +244,192,250, 47, 26,169, 5,193, 0, 0, 32, 0, 73, 68, 65, 84,225,234, 40,229, 2, 2, 2,156, 93, 92, 92, 94, 90, 51,111, 35, + 95,185,121, 0,123,239,242, 79, 83, 7, 30,223,246, 77,136, 50, 43, 67, 84,248, 16, 39, 39, 39,212,168, 81, 3,211,167, 79,183, + 78,243, 37,121,221,154,190,190,190, 53, 67, 67, 67, 27,254,113,234,148, 91, 98, 98,162, 52, 49, 49, 81,122,244,143, 63,220,154, + 53,107,214,208,215,215,183,166,153,134, 45,227,156,187,118,237,218, 25,251,246,237,227, 66, 67, 67,225,238,238,142, 54,109,218, +224,208,161, 67,194,175,191,254,122, 1,128,233, 37,141,147,227,184,150,161,161,161, 4,198,144,156,169,199,197,133, 53,113,109, + 89, 48,178,114, 25,210, 50, 21, 80,169,114,225,224,224, 32, 51, 78,247, 90,123,239,205,155, 53,107, 70, 0,242,205, 85, 86, 86, +222, 35, 59, 91, 9,141, 70, 11,169, 84,234, 76, 68, 50,107, 53, 25, 99, 62, 45, 90,180, 0, 0,104,181,218,252,255,240, 50, 50, + 50, 40, 51, 51, 19, 26,141, 6, 34,145, 72, 76, 68,197, 78,183,155,107,186, 56, 10,117, 66,177,116,210,128, 79,103,197, 13,248, +116, 86,156, 80, 44,157,164,113, 86, 24,172,217,230,226, 40,212, 89,210, 44, 43, 74,210, 36,162,114, 2,129,224,135,160,160,160, +104,129, 64,176,133,136,124, 94, 70,147,136, 26, 19,209, 2, 7, 7,135,227,181,106,213,138,115,116,116,252,131,136, 22, 17, 81, +179,210,104, 18,145,196,193,193,225,143, 5, 11, 22,236,254,235,175,191,122,254,254,251,239,149,111,220,184,209,125,201,146, 37, + 59,156,156,156,206, 16,145,229, 15,172, 18,198,105,162,114,229,202,155, 46, 94,188,216,184,121,243,230,223, 19,145,180,164,227, +173,209, 36, 34, 1, 17,189, 69, 86,174, 53,244,186,191,239, 68,228,215,160, 65,131,138, 50,153, 12,109,219,182, 5,128,176,151, +212,108, 54, 98,196, 8,159, 9, 19, 38,136,174, 93,187,134,239,191,255, 30,251,246,237,195,211,167, 79,209,165, 75, 23,241, 59, +239,188,227, 35,149, 74, 45,126,255,139,212, 20,186,236,248,108,220,248,142, 19,199,126,226,124,253,137, 22,155,143, 63,193, 47, +231,147,240, 52, 71,130,174,221, 7,184,118,232,214,171,131, 68,234,186,195, 86,205, 41,147, 39,119, 28, 54,184,175,115, 84, 18, +143,253, 23,146,113,225, 78, 38,244, 34, 55,116,234, 62,212,189,126,139,142,157,133, 16,253,104,227,189,151,154,162, 52, 55, 2, +111,127,246,217,103,229, 38, 45,219,250,167, 95,227, 15, 87,165,166, 35,212,220,248, 84, 7,220, 60, 28, 29, 63,188,211,186,245, + 39,242,188, 53, 31,139,213, 44,160,215,176,219,234,167,233,104,101,158,159,213,202, 3,213,140,211,138,130,163, 63,124,197, 49, +194,216,143,253,224, 83,156, 38, 0,156, 4,122,126, 54,126,188,200,213,221, 29,107,215,174,133, 90,169, 44,144, 51,251,110, 69, +116, 60,238, 32,140,175, 18,236, 31,221, 38,144,206, 88,255,206,188, 25, 88,154, 62,204,255,163,113,240,224, 65,214,185,115,103, + 2,128,221, 81, 44, 61,188, 54, 45,238, 53,122,193,116,226,136, 85, 10,105, 30, 85,161,106,109,165,167,167, 39,114,114,114,160, + 86,171, 33, 22,139,145,155,155,139, 39, 79,158,224,194,133, 11,112,119,119,183,105, 48, 10,133, 2, 78, 78, 78,112,114,114, 42, + 19,205, 47, 7,182,149, 62,136, 75,149, 30,185,112,178,245,202, 81,255,123,187,234, 91, 97, 55,222,237, 53,246,166, 75, 57,191, +220, 27, 55,110,224,220,185,115, 72, 79, 79, 71,211,166, 77,109, 26,231,191,152, 75,198,207,235, 75, 68,228, 30, 26, 26,234,127, +228,248,105,247,236, 92,222,229,113,138, 78,196,243, 60, 28, 28,124,245, 59,247,236,207,236,217,189, 43, 17,209, 83, 0,151,140, +230,246,133, 41, 70,115,140, 6,165,102,120,120,248,148, 81,163, 70, 33, 38, 38, 6,159,124,242,137,234,210,165, 75,207,155, 55, +111,238,185,113,227, 70,249,132, 9, 19,112,234,212,169,153, 68,180, 23,192, 35,198,152,197,181,218, 24, 99, 98,177, 88, 12,189, +209, 54,104, 13, 60, 76,254, 94,161, 80,128,169,210, 33, 22,139, 5, 0,202, 1,176, 42,143,142,231,121,177, 72, 36,202, 55, 89, + 79, 82, 20,120,242, 52, 7,138,108, 13, 84, 42, 61, 52, 42, 6,129,131,167, 16,120,236, 13,224,177, 53,154, 0, 4, 50,153, 12, +122,189, 30, 89, 89,121,195, 48, 69,202, 52, 26, 13, 50, 51, 51, 33, 16, 8,156, 0,184, 0, 72,179, 70, 48, 47,201, 29,191, 24, +167, 1,113,121,235,251, 94,247, 15,126,169, 13,159, 21,157,191,205,197, 81,168,219, 51,161,150,192,211,191,254,217,183,122,254, + 24,108,218,246, 79,230,103, 17,145,180, 92,185,114, 39,118,239,222, 93,171, 90,181,106,120,244,232, 81,112,143, 30, 61,154, 18, +209, 91,204,198, 53, 25,137,200,129,227,184,197,131, 6, 13, 26,213,167, 79, 31,170, 94,189, 58,132, 66, 33,244,122,189,127, 76, + 76, 76,155, 93,187,118, 77, 22, 10,133, 27, 13, 6,195,231,214,230,253, 17, 17, 39,145, 72,118,110,216,176,161, 85,211,166, 77, +177,101,203, 22, 92,186,116,137,111,220,184, 49,215,191,127,127, 4, 6, 6, 54,237,223,191,255, 47, 68,212,169, 52,145, 45, 34, + 10,252,248,227,143, 43, 10, 4, 2, 52,111,222, 92,124,238,220,185, 6, 0,206,217,170, 83, 72,211,201,223,223,255, 84, 88, 88, +216, 91,199,143, 31,191, 74, 68, 97,182,228, 57, 18, 81, 55, 63, 63,191, 37,174,174,174, 86,127, 40, 42, 20,138,156,132,132,132, + 47,152,245,235,157,190,221,176, 97, 67,196,198,198,162,102,205,154, 16,139,197,205,136,104, 56,128,142, 0,166, 49, 27, 86,155, + 32, 34,191,102,205,154,121,133,133,133,209,162, 69,139, 0, 0, 34,145, 8, 6,131, 1, 28,199, 65, 36, 18, 33, 56, 56,152, 30, + 62,124,232, 65, 68,126,214, 76, 35,122, 5,181,233,218,252,221,142, 45, 91, 53,173,199,125,189,231, 62, 12,188, 1, 2,210, 67, + 72, 60,120,157, 20, 82,177, 0,213, 67, 26, 9,238,220,186,222,212,171, 70,187,174,207,238, 30, 43,113, 26,209, 43,168, 77,215, +142, 93,223, 15,173, 85,179, 58,183,242,151, 7,200, 72,136, 54, 36,220, 62,253,140, 19,112,168,213,240, 29,175,234,181,223, 18, +188,213, 52, 76,148,248,232, 86, 27,143,106,173,219,166,221, 63, 85,230,198,202, 26,102, 3, 2,255, 10, 94, 31,118,105, 23, 38, + 78, 74, 76, 84,238,218,243,235,205, 28, 29, 46, 0,192, 41,128, 58, 1,245,234, 54,105,210,122,227,162, 69,158,190,190,190,162, +126,125,250,232,191,187,122,245,234, 48,192,226,212,239,108, 64,224,229,227,211,118,196,136, 17,130,164,196, 68,182,235,231,131, + 55, 76,122, 0,224, 0,212,173,231, 31,220, 5,202, 59, 54, 77, 83,118, 5, 36,222, 62, 62,181,134, 15, 31,142,228,196, 68,108, +137,136,200,206, 5,206, 3,121, 81,172,253, 2,172,169, 93,213,103,208,164,161,239, 83, 69, 95, 47,140,152,249, 93,179, 54,218, +167, 85, 79,224,239,200,150,185, 23,121,211, 48,153,172,194,102,171,200,255,206,247, 68,177, 25, 46, 18,170,188,107,215,118, 46, + 53, 75,171,140,137,137,129,151,151, 23,124,125,125,225,234,234,138,168,168, 40,252,241,199, 31,184,123,247, 46,120,158, 71,253, +250,245,109, 26,208,179,103,207,112,253,250,117,184,187,187,151,153,102,213,138,229, 48,186, 98, 57,113,202,115,133,248,248,165, +187, 77,191,251,178,123,109, 46,184,251,166,220,220,191, 61,128, 70,243,223, 88,161,196,188,186, 48, 32, 32,160,197,230,205,155, +197,106, 61,156,171, 15, 63,191, 84,153,107,112, 4, 0, 71,153, 64, 25,185,164,198,231,115,231,206, 85, 14, 30, 60, 56,248,201, +147, 39, 11,139, 86,204, 67, 34,145,204,127,239,189,247, 38, 50,198, 68,159,125,246, 25, 0, 96,192,128, 1,138, 11, 23, 46, 84, +103,140, 61, 37, 34,191, 33, 67,134,220, 59,113,226,132,195,248,241,227, 5,122,189, 62, 74, 40, 20, 50, 34,154,195, 24,155, 85, + 88,143,227,184, 43, 87,175, 94,173,228, 23, 88, 3,129,158, 28, 66,167,231, 45,215,230,233,192, 35,254,241, 3,220,190,113, 9, + 62, 62, 62,174,190,190,190,209, 53,107,214,212, 38, 36, 36, 76,206,206,206, 94, 87,220, 24,197, 98,241,181,200,200, 72,223,192, +192, 64,100,103,103, 35, 62, 53, 7, 99,127,118,128, 66,149, 23,196, 16, 65,133,183, 42,214,112,150,115,154, 75,222,222,222, 90, +141, 70,243, 85, 70, 70, 70,177,203,136,136, 68,162,231, 55,110,220,112, 10, 8, 8, 64,110,110, 46, 75, 75, 75, 35,165, 82,137, +172,172, 44, 58,120,240,224, 7, 73, 73, 73,141, 43, 87,174, 76,254,254,254,115,170, 85,171,166, 74, 72, 72,248,196,154, 28,176, +221, 51,131,181, 68,100, 16, 10,133, 95, 15, 27, 54,172,231,222,189,123,175,236,153, 85,171, 27, 99, 76, 11, 0, 68,228, 26, 18, + 18,114,164, 94,189,218,126, 17,203,234,174, 98,140, 45, 45, 73,243, 53, 48,104,234,212,169,181, 60, 60, 60, 48, 98,196, 8,204, +158, 61, 27, 51,102,204,168, 54, 98,196,136, 97, 0,150, 91, 43, 66, 68,114, 31, 31,159,203, 43, 87,174, 12,110,209,162, 5, 14, + 29, 58,132,237,219,183,227,225,195,135,250,202,149, 43, 11,155, 54,109,138,153, 51,103,162, 67,135, 14,159,140, 25, 51,166, 53, + 17, 53,176,210,124, 12,158, 57,115,102,183,150, 45, 91, 98,224,192,129,234,147, 39, 79,246, 4,112,244,216,177, 99,239,156, 58, +117,106,207,214,173, 91,229, 11, 22, 44,104, 59, 97,194,132, 17, 0, 86,151,226,254, 63,104,213, 42,111, 13,229,150, 45, 91, 98, +201,146, 37, 29,240, 18, 70,139,136, 36,158,158,158, 7,183,108,217,242, 86,141, 26, 53,208,175, 95,191, 6, 61,123,246, 60, 72, + 68,237, 24, 99, 86,125, 32, 85,168, 80, 97,241,190,125,251,130,138,154, 89,176,132, 90,173,246,248,240,195, 15, 23, 1,176,201, +104,109,219,182, 13, 95,124,241, 5,234,215,175, 95,239,237,183,223, 94, 63,124,248,112,132,135,135,191, 75, 68,222,140, 49,165, + 53, 66, 66,161,176,114,151, 46, 93, 68, 63,255,252, 51, 0,160, 85,171, 86,104,219,182, 45,110,222,188,137,179,103,207, 66, 32, + 16,192,209,209, 17, 45, 90,180,144, 36, 38, 38, 86, 6, 80,162,209,226,164, 14,131,186,117,233,228,188,255, 66, 18, 12,188, 30, +141,130, 92,208, 52,184, 60,238,196, 43, 16, 25, 29, 15,131, 70, 12, 23, 15, 79, 52,107,221,222, 35, 57,225,225, 32, 0, 37,231, +107, 73, 29, 6,125,212,173,179,211,254,243,137,200, 72,188,205,238, 95,218,251,135, 46, 87,249, 9, 0, 92,249,125,199,122, 31, + 79,121,187,234, 13, 27, 9,194,218,189,239,254,243,246,228, 65, 0,254, 17,163,117,170, 34, 54, 4,138,158, 13,152,212, 55,148, +137,220,253, 47, 57,235,116,107, 76,251, 58, 0,237, 39, 79,157,250,246,208, 97,195,100, 60,207, 99,235, 79, 63, 41,174, 95,189, +122,167,184,106,191, 53, 64, 96,207,110,221,164,206, 46, 46, 24, 55,118, 44,156,117,186, 19,166,125, 82,224,221,113, 19, 39,182, +248,244,211, 79,229,235,231,140,186,210, 97,200,188,134, 60, 99,100,105,154,178, 48,199,129,198, 67,186,117,131,179,139, 11, 62, +251,236, 51,144, 86,123,196,180,239,128, 16, 39, 6,127, 16,218,180,111,215,150, 32, 16,182, 31, 56,139,251,177,169, 55, 78, 36, +225,193,203,190, 63,255, 6,108,206,209, 50,145,165, 69,202,187,157,187,227,234,213,171, 0,128,231,207,159,227,249,243,231, 8, + 10, 10,194,234,213, 5, 63,191, 74, 99, 96,120,158, 47,115, 77, 0,240,246,116, 65,191, 78, 77,132,103,175,111,151, 41, 83, 83, +101, 78, 78, 78,249, 78,235,191, 98,180,204,209,235,245,178,202,149, 43, 67,161, 2,101,230,232,156,158,237,200,139,248,123,245, + 62,233,164,209,104, 56, 39, 39, 39,168,213,234, 98,167,209,128,188,156,138,110,221,186, 77,220,185,115,167,232,246,237,219,168, + 90,181, 42,180, 90, 45, 46, 92,184, 16,207,242, 22, 66, 6, 99, 44, 81, 32, 16, 36,242, 60, 95,173,126,253,250, 88,184,112, 33, +130,131,131,169, 83,167, 78,147,141,102,171,192, 47,119, 82, 82,210,226,225,195,135,191,179,107,207, 94,143, 13,189, 84, 80,100, + 42,144,157,157,141,107,127, 93, 65, 90, 74, 46,190,251,238, 59,200,100,114, 2, 32,126,250, 52, 69, 60,126,252,248, 85,254,254, +254, 29,227,227,227,187, 20, 53,206,196,196,196,249,159,126,250,105,179, 29, 59,118,184,101,101,101, 65,165,202, 69,154,210, 1, +209, 43,242,214,241,173, 53, 46, 26,107,215,172,227,234, 86,114,244,202,201,201,193,168, 81,163,190,241,243,243,107,145,152,152, + 56,164, 40,205,132,132,132,139,163, 71,143,246,222,186,117,171, 76,163,209,104, 13, 6, 3, 84, 42, 21,183, 99,199,142,201,149, + 42, 85,114,223,184,113, 35,201,100,114,227,177,241,226,145, 35, 71,238,244,241,241,217,154,156,156, 60,176,132,247, 84, 32, 16, + 8, 86, 68, 68, 68,244,239,213,171,151,115, 82, 82, 82,237,125,251,246, 73, 1,168,140,135,248,182,107,215,174,210,178,101,203, +202,133,132,132, 76, 38, 34, 17, 99,236, 31, 93,156,220,203,203,107, 76,183,110,221,176,104,209, 34,252,250,235,175, 19, 60, 60, + 60,190,153, 61,123, 54,252,252,252, 70, 19,209,138,146,242,242,204, 88,186,124,249,242,224,224,224, 96, 12, 24, 48, 64,115,252, +248,241,169, 0,126, 1, 16,123,230,204,153,128, 31,127,252,177,235,206,157, 59, 23,173, 92,185, 82,182,122,245,234,160,238,221, +187,175, 0, 80,228,247,200,132,183,183,247,248, 62,125,250, 96,217,178,101, 56,121,242,100,119,198,216, 33,227,174,195, 68,212, +117,193,130, 5,191, 79,159, 62, 29,203,151, 47,255, 12, 54, 26, 45, 34,114,170, 85,171,214, 87, 29, 59,118,196,153, 51,103, 16, + 26, 26,138,102,205,154, 77, 32,162, 85,140,177,103,182,104, 25,245, 56, 39, 39,167,157,155, 55,111, 14,173, 84,169, 18,230,205, +155,135,137, 19, 39, 98,211,166, 77,161,253,250,245,219, 73, 68, 31, 21,254,157,177,132,171,171,171,147,131,131, 3, 38, 79,158, +204, 30, 62,124,152, 94,210,241, 21, 43, 86,116,255,230,155,111,200,221,221,221,170,194, 23, 34,146,203,100,178,230,117,234,212, +193,204,153, 51,113,236,216, 49, 76,159, 62, 29,117,234,212, 65,108,108, 44,122,247,238,237, 48,109,218,180,112, 0, 86,173,123, +200, 24,115,245,244,244,196,211,167, 79, 33, 18,137,208,162, 69, 11,252,242,203, 47, 80,171,213, 40, 95,190, 60, 50, 50, 50,208, +164, 73, 19, 0,128, 80, 40,180,178, 56,135,213,241,242,112,197,211, 91, 9, 16, 66,143,134,213,189,112,226,230,115,104,117, 60, +202,123,186, 33,249,105, 10,222,174,227, 15,141, 38, 0,140,241,117,172, 81,148, 8,184,134, 82,153, 28,105, 89,207,144, 16,125, +242,185,214,160, 30,158,241,240,108, 28, 0,120, 84,109, 53,252,202,217, 99, 87,122,116,110, 85, 62, 91, 89, 17,196,248, 38,214, +141,179,108,233, 17,128,138,142, 50,225,128, 3, 27,190, 36, 61,207,227,189, 33,243, 27,119,244, 70, 14, 82,128,114, 64,229, 30, +189,123, 55,255,252,243,207, 37,247, 98, 98,248,241, 99,199,102,252,117,249,242,201,223,128, 43,197,105,102, 3,213,218,181,107, + 7, 14,192,111, 71,143, 42,159, 1,241, 0,224, 13, 84,124,255,195, 15, 91, 77,157, 50, 69,242,224,241, 99,254, 66, 76,246,254, + 7, 79,217,194,230, 30,184,190, 35, 54,239,152,226, 48, 0,117, 77,186, 71,142, 28, 97, 42,227, 56,194, 42, 98,116,135, 22, 33, + 77,251,119,107,133,248,228,231, 88,242,253,126,220,184,151,116,196,147,199,199,101,240, 22,253, 43, 40,174,131,125,137, 57, 90, +150, 62, 83,115,114, 94,156, 61,120, 89, 3,243, 42, 52, 45,241, 95, 52, 90, 38, 76,139, 48,107,116, 60, 52,186,188,207,110,181, + 90, 13,149, 74, 85,220,105,249, 48,198,116, 71,142, 28,217, 50,118,236, 88,124,243,205, 55,184,119,239, 30,196, 98, 49,234,212, +169,227, 75, 68, 78, 64, 94, 4,166, 97,195,134,229, 57,142,195,157, 59,119,240,245,215, 95, 99,240,224,193,236,220,185,115,155, + 44,253,193, 96,140,253,149,150,150,182,102,248, 39,131, 51,210, 83,158, 64,167, 74,199,211,132, 7, 80, 43, 51, 48,111,225, 98, +228,232,132, 72,206,212, 34, 57, 83, 11, 78,234,129,245, 27, 55, 11,106,213,170,213, 81, 40, 20, 22,105,180, 24, 99, 23, 82, 82, + 82, 54,142, 28, 57, 50, 35, 57, 57, 57,255,254, 52, 58, 6,141,174,224,207,171,131,131, 3, 86,172, 88,225, 90,189,122,245,110, + 34,145,168, 77, 49,154, 73,113,113,113,183, 71,142, 28,169, 73, 73, 73, 65,102,102, 38,246,239,223,223,181, 82,165, 74,238,139, +150,126, 67, 74,173, 16,201, 25, 90, 36,103,104, 33,113, 42,143,157,123,246, 10,106,212,168,209, 87, 36, 18, 21,153, 99,100, 50, + 89, 91,183,110,237,223,171, 87, 47,231,165, 75,151,166,237,219,183,111, 45, 99,204,252, 27,114,103,197,138, 21,187,118,238,220, +153, 53,113,226, 68,143, 37, 75,150, 76, 32,162,169, 69,126,147, 94, 49, 68,212,166, 87,175, 94, 53,121,158,199,238,221,187,111, + 48,198,150,239,221,187,247,178, 90,173, 70,239,222,189, 43, 35,111, 26,201, 26,157,198,125,251,246, 29, 21, 26, 26,138,113,227, +198,105,143, 31, 63,222,144, 49,246, 13, 99,236, 49,203, 35,150, 49,182,234,212,169, 83,245,199,140, 25,163,110,210,164, 9, 6, + 14, 28, 56,152,136, 66, 75,208,109,222,167, 79,159, 96,158,231,177, 99,199,142,235,102, 38, 11, 0,192, 24,251, 99,207,158, 61, + 23, 52, 26, 13, 62,254,248,227, 42, 68,244,142, 13,247, 46,150, 74,165,187,231,206,157,235,150,144,144,128,254,253,251,171,239, +220,185,131, 89,179,102,201, 93, 93, 93, 15,153,126, 7,108, 65, 42,149,126,247,237,183,223,118,171, 91,183, 46, 70,142, 28,169, + 89,183,110,221,216, 81,163, 70,105, 26, 54,108,136,181,107,215,118,147, 72, 36, 54, 45, 45,146,152,152,152, 17, 21, 21,229, 89, +210, 35, 62, 62,222,170,242,124, 34,114,112,118,118, 62, 31, 18, 18,162,168, 83,167, 78, 35,189, 94,143,168,168,168, 7, 91,182, +108,225,235,212,169,131, 53,107,214, 96,201,146, 37,232,210,165, 11, 4, 2, 65,184, 45, 99, 85, 42,149,144,201,100, 16,139,197, +136,140,140,132, 90,173,134,131,131, 3,100, 50, 25, 4, 2, 1,220,220,220,224,236,236, 12, 88, 89,141, 70, 4,166,200,209, 65, + 36,226, 32,228,120,220,142,205,132, 86,199, 67, 38, 22, 64, 36, 36,128,241,112,115, 20, 65, 38, 17,128, 35, 42,185,119, 83,158, + 38, 50,149, 90, 72,196, 28, 68, 98, 9,113,122,131,220,180,143, 19, 26,228,114,185,132,188, 92,164,144,137,255, 69,203, 2, 83, +222,251, 53, 8, 16, 57, 6, 4,244, 92,246,245,215, 18, 69,118, 54,186,119,239,158,246,248,242,229, 8, 21,112,185,117, 9,239, + 41, 39, 20, 86, 15,107,221, 26,145, 87,175, 34, 43, 61,253, 62,144,151, 28, 47,241,243,235,181, 98,197, 10,137, 42, 55, 23,221, + 63,250, 40,227,222,217,179, 91,227,178,113, 96,135, 21, 38, 11, 0, 4, 98,177,143, 73, 55, 51, 61, 61, 29,200,107, 33,225, 93, +206,105,209,167,125, 59, 32, 43, 39, 23,147, 22, 71,240, 87,111, 39,141, 62, 19,143,206,123, 19,145,249,114,111,198,191, 11, 34, + 26,102,254, 48,109, 47,177, 97, 41,207,191,248,243,106,201,172,168,213,234,151, 26,224,171,208,180,100, 18, 95, 86,243,223,136, + 80, 40,204,189,123,247,174,196,197,211,143,247,116, 22,165, 87, 26,124,214, 21, 0, 60,156,132,153, 90,131,142, 79, 76, 76,132, + 84, 42,181,152, 67, 85,152,220,220,220, 79,136,104, 30,128,218, 66,161,240,192,230,205,155, 41, 34, 34,194,189, 79,159, 62, 49, + 68,148, 16, 18, 18, 18,184,121,243,102, 23, 0, 88,181,106, 21,219,185,115,103, 7,228,181,204, 40, 50,164,156,156,156, 60, 75, + 36, 18,157,251,244,211, 79, 87, 75, 36, 18,119, 71, 71, 71,207, 51,103,206, 80,174,150,161,241,212,216,252, 74, 68, 23, 57,135, +211, 95,186, 96,216,176, 97,130,232,232,232,133, 0, 14, 20,163, 57, 89, 42,149,158,185,119,239,222, 55,174,254,111,149,115, 12, +156,234,218,244,203, 59, 0,128, 64, 47, 17, 56,227,231, 98, 70, 70, 6, 82, 83, 83, 49,106,212, 40,247,152,152,152,201, 0, 78, + 20,165, 25, 31, 31,127, 74, 42,149,198,223,186,117, 43, 76, 36, 18, 73, 28, 29, 29, 27,159, 63,127,158,114, 53, 60,234, 77,142, + 69, 90,118,222, 56, 61,156,132,184, 50,215, 27,163, 71,143, 22,222,191,127,127, 49,128,150,150,244, 56,142, 91, 98,110,178, 38, + 77,154,116, 13, 64, 21, 34, 42, 48, 53,106, 48, 24,232,227,143, 63,190, 9,160,206,196,137, 19, 61, 24, 99, 19,136, 40,141, 49, +182,161,168,177,190, 42, 92, 92, 92, 22, 13, 31, 62, 28, 59,119,238, 68,122,122,250, 10, 0, 80, 40, 20,203,183,109,219,182,227, +147, 79, 62,193, 79, 63,253,180,136,136,126,179, 34,170,245, 94,239,222,189,113,248,240, 97,252,254,251,239, 95, 49,198,162, 44, + 29,196, 24,187, 71, 68,147,247,237,219,183,178, 79,159, 62,248,225,135, 31, 58, 2, 40, 46, 65,182, 93,135, 14, 29,112,232,208, + 33, 60,127,254,124,173,165, 3, 50, 50, 50,214,237,223,191,255,237, 14, 29, 58, 96,225,194,133,237, 0,252, 81,210,125, 19, 81, +176,171,171,235,230,149, 43, 87, 54,174, 91,183, 46,250,246,237,155,171,213,106, 59, 78,156, 56,241,215,237,219,183, 59,111,217, +178,165,209,176, 97,195, 46, 18,209, 80,198,216,255,177,119,222,225, 77, 86,253, 27,191, 79,246, 78,186, 55,133,178, 58,217,202, + 20, 1, 41, 5,169, 2,226, 68,134,138, 32,188,130, 8, 34, 67, 81,212, 87, 4, 89, 34,200, 84, 4,101, 41,252, 80, 70, 69, 68, + 81,144, 77, 11,148, 82, 74,161,165,123,164, 51, 93,105,179,207,239,143, 38, 53,212,142,180,101,191,231,115, 93,231, 74,114,158, +231,220,207, 57, 79,210,228,238, 25,223,115,166, 49, 61, 0,224,114,185,159,173, 89,179,102,226,192,129, 3, 49,107,214, 44,211, +225,195,135, 71, 80, 74,127, 35,132, 36,205,153, 51, 39,106,197,138, 21,220,229,203,151, 79,228,114,185,249,102,179,249, 94,153, +235,255,174, 94,189,186,119, 68, 68, 4,146,147,147,113,230,204, 25, 24, 12,134,239, 79,159, 62,125,188, 67,135, 14,255,213,235, +245, 7,100, 50,217, 4,133, 66, 17,214,173, 91,183, 39, 8, 33, 82, 71,230,233, 17, 66, 52, 73, 73, 73, 50, 15, 15, 15,240,249, +124,196,198,198,194,195,195, 3, 0,144,151,151,135, 78,157, 58,129,203,229, 66,163,209, 0,112,236,199,150, 16,206,229,164,212, +236,182, 46, 10, 25, 96, 22,227,226,181, 76,184,187, 57,195, 76, 56,200,205,205, 65,183, 32, 63, 16, 66,160, 41,204, 5, 33, 36, +206, 17, 77, 51,181,196,164,103,231,249,186, 42, 68,232,220, 59,194,245,244,175,249,219, 84,237, 30,155,204,227, 18,174, 72,172, +220, 56,241,149, 87,220, 44, 22, 10, 77,161, 26, 60, 14,167,193,185,173,119,138,221,233,200, 24,208, 78,124, 49, 98,226,167,221, + 8, 5,173, 52,224,187,111,213, 40,150, 2,221, 86,191,255,190,147,171,155, 27, 94,126,249,101, 75, 97, 86,214,239, 90,192,161, +192,202,109, 59,116,240,148, 43, 20, 56,121,242, 36,184, 64, 10, 0,108, 6,130,151,206,153,227,234,225,229,133,215, 38, 78,180, +168,211,211,143, 86, 58, 48,164,123,139,110,187,118,124,155, 46,199,170,155,195,197, 91,239,142,232, 47,146, 73, 68,248,108,195, + 79,200, 40,168,216,117, 58, 7, 27,154,126, 39,238,127, 26,237,209,170,111,242, 89,245,164,234, 91,231, 5,212, 54, 43, 98,177, +184,166, 55,197, 81,236, 67, 48,220, 46,205,198,184, 19,154,247, 10, 66,200,124, 66,200, 62, 66,200,252,140,140,140,132,137, 19, + 39, 26, 76, 6, 93,217,169, 79,219,206,187,176,184,205,212,211, 31,121, 79,253,249, 45,213, 60,109, 73, 81,217,234,213,171,141, + 25, 25, 25, 9,246,101, 26,210,166,148,166, 83, 74,127,217,186,117,235,186,221,187,119,163, 83,167, 78,136,143,143,247,168,168, +168,232, 30, 23, 23,231, 18, 28, 28,140,109,219,182,225,135, 31,126, 88, 73, 41, 61,210,144,201,178, 97, 52, 26,127,207,201,201, + 9, 76, 75, 75,107,239,228,228,100,116,114,114, 66,237,149,136,165,149, 22, 20,106, 74,224,226,226, 10,165, 82, 25,208,152,166, + 78,167,251, 37, 39, 39,167,163,197, 57,232,241,142, 5,171, 74, 98, 62,107,133,152,207, 90,225,151,185, 62,240,118, 18,162,184, +184, 24,249,249,249,200,207,207, 7, 33, 4, 70,163, 49,196, 1,205,155,217,217,217,223,164,167,167,239,243,244,244,132, 66,161, + 0, 5,144,171, 49,226,210,242, 96, 92, 90, 30,140, 92,141, 17,165,101,101,104,211,166, 13, 20, 10, 69,157, 67, 20,132, 16,142, +175,175,239,240, 23, 95,124, 81, 1, 0, 86, 3, 53,152, 82, 58,181,142, 52,197,100, 50,245,179,157, 59,123,246,108, 23, 0, 67, + 27,171,235,237,196,186, 34,238,205, 73,147, 38, 61, 34, 22,139,241,213, 87, 95,221, 4,176,221,122,120,247,186,117,235,174, 1, +192, 91,111,189, 21, 6, 96, 22,169, 39, 18,180, 13,129, 64,208, 35, 36, 36, 4,167, 79,159, 6,128,159, 26,185,252,158, 83,167, + 78,161, 67,135, 14, 16,139,197,143, 54,114,110, 64,171, 86,173,112,237,218, 53, 0,184, 88,207, 57, 23,175, 93,187,134, 86,173, + 90,129, 16,210,232,231,136, 16, 50, 50, 34, 34,226,242,159,127,254,249,104,223,190,125, 49,113,226, 68,253,217,179,103,135, 83, + 74,143, 95,188,120,113,208,216,177, 99, 43, 58,118,236,136, 99,199,142, 5,143, 29, 59,246, 20,151,203,253,212, 1,205,215, 62, +249,228,147,249,163, 70,141,194, 39,159,124, 66,127,252,241,199,151, 41,165,191, 1, 0,165,244,240,174, 93,187,198, 47, 90,180, +136,142, 30, 61, 26, 31,127,252,241,124, 66,200,212,134,244, 42, 42, 42, 74,204,102, 51, 42, 42, 42, 28,234,146,119,244,124, 55, + 55,183, 39, 35, 34, 34,176, 96,193, 2,248,250,250,226,192,129, 3, 20,192, 65, 74,233,223, 58,157,238,113, 74,233,138,138,138, +138,159, 79,159, 62,141, 33, 67,134, 8,112,235, 22, 35,245, 98, 50,153, 82,255,252,243, 79,131,171,171, 43,252,252,252,224,239, +239,143,138,138, 10,104, 52, 26,116,234,212, 9,189,123,247, 70, 69, 69, 5, 14, 30, 60,104,208,104, 52, 14, 45, 88, 49,233, 43, +190, 59, 18,181,183,196, 85, 33,130,159,135, 10,109,124, 93, 80,174, 41, 64,126,110, 54,122,132,248, 99, 64,143, 54, 40, 40,209, +227,240,193,189,197,101,101,218,239, 28,209, 52,234,180, 91,126,255,245, 64,137,179, 66,128,192,160, 48,140,157,248, 86,183,110, +221,123, 29,233,217,179,223,225,101, 75, 62,235, 50,184, 79, 8,201, 44,168,194,161,131, 63, 21,151,148,150, 58, 52,108,122,187, +249, 24,224, 86,169, 58, 30, 95,187, 47,230,155,208, 97,147,190, 73,200,196, 42, 0, 48,114,185,193,195,159,124, 18,153,153,153, +216,187,123,119,142, 22,136,117, 84, 79, 34,145,112, 0,160,164,164, 4,162,234,221, 66, 96, 2,130, 34, 35, 35,145, 95, 80,128, + 29,219,183,231, 31, 2, 46, 52,165,158, 79, 3, 66,169,164,186, 67,176,164,164, 4, 4, 40, 5, 0,194,195,240,158,157, 58, 32, +191,168, 20,127,158, 75, 40,111, 83,137,255, 52,164,243,160, 78,132,111,104,142, 86, 99,253,161, 5,179,102,205,130, 72, 36,130, +183,183,119,141, 57,178,153, 21,161, 80, 8,111,111,111,152, 76, 38,236,218,181, 11, 0, 26,156,195,192, 1,116, 35,166, 46,182, +232,140, 84,203,231,243,111,139, 38, 0,112, 56, 28,221,179,115,190,181,252,122,170,238, 69, 49,205,209,124, 0,232,105,141,137, +213,147, 82, 90,156,154,154,154,249,194,179, 35, 74,210,146,174,228, 86,104,178,115, 74, 11, 51,114, 50,110,198,229,190, 55,119, + 86, 73,102,102,102,134, 53,150, 86,207,236,236,236, 17, 0, 28,157,107, 48,235,133, 23, 94, 88, 63,105,210, 36,122,233,210, 37, + 0, 64, 76, 76, 12, 94,121,229, 21, 58,126,252,248, 85, 0,230, 53,163,222, 21,149,149,149,183,244,134, 24,204,150,154, 33,191, +210,210, 82,100,103,103, 67,175,215, 59,236,136,175, 31, 94,158, 88,148, 26,109, 12,107, 45, 67, 88,107, 25,130, 91, 73, 65, 76, +229, 53, 38, 43, 63, 63, 31,106,181, 26, 0, 28,234,213,179, 82,170,211,233,110,169,167,253,208,100,105,105, 41,114,115,115, 97, + 54,155,235,252, 33,163,148, 90,178,178,178, 14,255,240,195, 15,101, 0,176,108,217,178, 34, 66,200, 31,132,144,245,117,164, 13, + 60, 30,239,164,237,220,229,203,151, 23, 1,248,165, 46,221, 59, 1, 33,100, 84,231,206,157,139,231,207,159,255,213,140, 25, 51, +176, 97,195, 6,228,228,228,204,163,148,154,108,109, 41, 40, 40,152,179,118,237, 90,188,250,234,171,248,240,195, 15,151,119,239, +222,189,148, 16, 82,239,252, 10,119,119,119, 63, 30,143,135, 11, 23, 46,148, 82, 74, 27,156,236, 74, 41,205,189,112,225,130,154, + 16, 2,111,111,239,118, 13,157,235,226,226,210, 94,161, 80, 32, 43, 43, 11,176,254,199, 92, 7,169,217,217,217, 84, 40, 20,194, +199,199,167, 67, 35,205,135,179,179,243,156,111,190,249,134,119,229,202, 21, 12, 30, 60, 56,243,216,177, 99, 67, 40,165,127, 89, +235,118, 33, 38, 38,166,255,160, 65,131, 18,143, 28, 57,130,207, 63,255,156,116,237,218,181, 65, 83, 4, 0,173, 91,183,158,242, +218,107,175, 97,205,154, 53,216,184,113,227, 84, 74,233,238, 90,109,222,185,118,237,218,183, 54,110,220,136,137, 19, 39, 34, 32, + 32,160,193,185, 42,105,105,105,115, 7, 14, 28, 24,115,253,250,117,135,118, 60,112,228,124, 66,200,160, 94,189,122,181,175,172, +172,196,150, 45, 91,146,219,183,111,127,126,247,238,221,179, 40,165,181,127,176,127,222,187,119, 47,198,141, 27,135,174, 93,187, +110, 33,132,140,105,236,250,148,210,236,180,180,180,130,216,216, 88, 11,151,203,133,159,159, 31,134, 15, 31,142,151, 94,122, 9, + 93,187,118, 69, 94, 94, 30,142, 31, 63,110, 73, 74, 74, 42,112,100,197, 33, 0, 20, 36,254,121, 32, 37, 37,241,228,133,179,199, +141, 60, 46, 7,254,222, 46,120, 38,188, 27, 94,127,174, 31,122, 4,251, 34, 45,175, 18, 71,143, 30, 49,166,164, 36,159,118,100, +197,161, 77, 51, 33, 62,246,212,149, 11, 39, 76,124, 30, 65,112, 80, 71, 44,120,111,142,243,162,133,115,157, 58,182,243, 71,236, +205, 18, 28,249,237,144, 49, 59, 51,227,207,123,181,226,240, 24, 32,144,139,136,140,203,225,192,204, 17, 85,112,173,129,140, 59, +133,134, 6,122,122,121, 33, 42, 42, 10, 28,192,225, 21,161,199, 0,129, 92, 94, 61, 10, 94, 94, 94, 14,155, 94,251,160,160, 32, +255,214,173,241, 75, 84, 20,184, 22,203,213, 1, 77, 12, 48,122, 13,144,218,235, 18,160,234, 63,173,160,104,223,202, 35,200, 89, + 37,195,217,216, 27,208, 25,233,185,237,197,184,167,241,200,238, 20,181,135, 13,155, 50,116,184,108,195,134, 13, 61,191,249,230, +155, 33,179,102,205,146, 79,152, 48, 1, 98,177, 24, 90,173, 22,126,126,126, 48,155,205,248,245,215, 95, 17, 29, 29, 93,110,177, + 88,142,160, 86,216, 0, 66, 72,184,125,172,141, 95,147,168,132, 16,194, 1,180, 61,247, 61,255,252,109,209, 4, 0,249, 13,139, +178,176,141,126,219,234,221, 39, 70,239, 56,124,129,188, 61,102, 0,167, 71, 80, 43, 0,128,167,167, 39,148, 74,101,147, 53, 91, +202,221,208,180, 31,214,205,201,201,185, 70, 8,201,155, 52,105, 82,176,109,226,187, 72, 36,170,202,200,200, 72,176,154,172,127, +149,105,172,158,214,149,113,255, 33,132,236, 47, 41, 41, 57,252,238,187,239, 98,209,162, 69, 56,112,224, 64,127, 74,233, 73, 71, +235, 89, 75,211, 28, 16, 16,160, 57,119,238,156,103,135,144,238,104,235,193,199,227, 31, 92, 7,165, 20,174, 82,138, 50, 77, 17, + 46, 94,188,128,178,178,178,179, 77,169,167,143,143,143, 38, 47, 47,207,205,195,195, 3, 69, 69, 69, 40, 40, 40,168, 49, 89,197, +197,197, 40, 42, 42,162,132,220, 26,179,165, 17,205,138,246,237,219,107, 19, 18, 18,132,158,173, 58,160,157,135, 0,189,222,187, + 6, 80, 10,127, 23, 14,202, 74, 53, 56,125,250, 52, 74, 74, 74,254,170, 79,211, 98,177,188, 51,118,236, 88, 46,128,241,239,190, +251,174, 11,128,174,115,230,204, 57, 82,123,101, 33,159,207,255, 98,219,182,109,157,108, 67,140,115,231,206, 93, 73, 41,253,198, +145,122, 54, 23,123, 77, 87, 87,215,119,162,162,162, 20, 6,131, 1,171, 87,175,198,202,149, 43, 55, 83, 74,111, 89, 81, 73, 41, +141,226,114,185,107, 57, 28,206,155,211,166, 77,195, 27,111,188, 33,125,228,145, 71,102,225,159, 94,175, 91, 52,179,178,178, 22, +244,232,209,227,195,188,188, 60,135, 38,246, 95,191,126,125,114,143, 30, 61, 22,228,229,229, 45,173,175,158, 0, 32,147,201,100, +102,179, 25, 41, 41, 41,197,148,210, 58,135,156, 40,165, 85, 29, 59,118,204, 50,155,205,126, 82,169,212,165,161,182, 3, 64,113, +113,241,103,143, 60,242,200, 71,106,181,250, 55, 0,159,214, 14, 85, 66, 41,189, 68, 8, 9,155, 49, 99,198,244, 37, 75,150,140, +206,205,205,253, 87,156,166,218,154,105,105,105,159, 13, 26, 52,232,131,196,196,196,173,245, 13, 1, 83, 74,191, 34,132, 24,182, +109,219, 54, 53, 37, 37,229, 95, 43,130,237, 53, 41,165, 7,209,192, 80,122, 29,218,117,158,111,175,201,229,114,231, 44, 89,178, +132,179, 97,195, 6, 80, 74,151,155, 76,166,250,234, 25,203,229,114,191,235,215,175,223,132,221,187,119,139,195,194,194,222, 0, +176,179,190,182,219,208,233,116,103, 78,157, 58,213, 59, 53, 53,213,109,208,160, 65, 2,160,250, 31, 20,141, 70,131,131, 7, 15, + 26,146,146,146, 10, 42, 42, 42,234, 28,134,173, 79,211,164, 47, 29,115,234,232,190,157,169,215,227,250, 12, 28, 54,210, 89,111, +240,131,168,144, 11, 77, 97, 46,126, 61,184,183, 56, 37, 37,249,180, 86,171,169,211, 8,214,167,105,208,149,188,116,250,207,253, +187, 50, 83, 18,122, 63, 62,104,184,115,149,190, 53, 68, 2, 14, 10,213, 89,248, 53,106, 95, 81, 74,202,205,191,171,140,186, 87, +154,162,217, 18,106,107,114, 3,240, 41, 55, 55,122,210,148,167,187, 65,226,236,119,145, 15,172,238, 7, 72,220, 60, 61, 5, 0, +112,253,250,117,200,129, 52, 71, 53,213,128,176,131,117,148, 74,171,213,130, 15,232, 95, 5,248,238,238,238, 18, 0, 72, 76, 76, +132, 20, 72,111,106, 61,203, 1,153,212, 78,151, 3,104, 11,121,240,109,175,148, 17, 0,200,204, 45,132,222,136,122,127, 55, 30, +116,108, 61, 90,117, 77,138,111, 44,248,162, 5,192, 25, 66,200,133,165, 75,151, 62,190,126,253,250, 1, 51,103,206, 20, 62,249, +228,147, 56,127,254, 60,126,255,253,119,189, 78,167, 59, 6,224,184,245, 71,217,145,202,220,118,205,221,213,231,189,208,211,151, +184, 24, 44,149, 63, 45, 88,127,232,177, 54, 94, 78,212,100,182,144,184,184, 56,156, 58,117,170,201,154, 15, 2,214,105, 50, 61, + 9, 33,251,172, 89,231,106,135,112,176, 14, 23,218,122,176,122,214, 53,231,206, 1, 46,242,120, 60, 26, 20, 20, 68,172,219,211, +212, 57,223,198, 81,114,115,115, 95,158, 59,119,238,111, 63,238,249,137,183,119,154, 4, 37,154,146,234, 47,224, 18, 13, 10,213, +217, 56,122,244,168, 33, 63, 63,255,141,166,104,230,231,231,255,103,204,152, 49, 63,238,220,185,211,165,184,184,184,198,104, 21, + 23, 23,195, 98,177, 96,243,230,205,249,106,181,186,225,205, 82,107,145,147,147, 51,241,221,119,223,221,179, 99,215, 30,222,145, +121,206, 40,183, 69,159,175, 40, 65, 97, 94, 14, 14, 28, 56,160, 43, 40, 40,152, 81, 95,121, 74,169,153, 16,242,246,216,177, 99, + 1,171,217, 58,125,250,244, 91,132,144,175,108, 63,230,132,144,182,239,188,243,206, 24,187,121, 92, 43,239,246,170,195,194,194, +194, 69,189,123,247, 94,153,159,159,127,211, 96, 48,236,166,148,214, 25,165,223,108, 54, 79, 35,132,156,250,234,171,175, 94,114, +115,115,243,204,205,205, 93, 82,159,230,237, 50, 6,181, 73, 79, 79,159,223,163, 71,143,247,242,242,242,234,189, 54, 0,220,184, +113,227, 77,235,121, 75, 27, 58,207,122,237, 40, 0, 81,141,156, 99, 66,117,104, 11,135,194, 91, 80, 74,247, 1,216,231,192,121, +155, 96,221,120,246,110, 99, 54,155,151,117,238,220, 89,108, 50,153,142, 52, 54, 31,208, 98,177, 76,158, 57,115,102,230,236,217, +179,187,153,205,102, 71,239,129, 17,192,223,132, 16,159,130,130,130, 0, 0, 78, 0,192,227,241, 52, 26,141,166, 89, 91,240, 88, + 35,190, 63,229, 22, 56,228,233,221, 91,215,188, 74, 45,230,174,132, 16,112, 57,220, 75,101,229,218, 45,142,246,100,213,161, 25, +233, 22, 56,228,105,117, 86,218,107,212, 98,238, 10, 16, 11,143,199,137, 45, 43,215,126,157,159,112,228,158,109,193, 51,193, 23, +158, 92,130,105,191,125,251, 1, 1,128, 33,175,253,183, 91, 27, 39,200, 77, 26,104, 96,253, 46,207,201,201,129, 51,208,232, 74, + 84, 27, 82,192,100,176,206,137, 46, 46, 42,130, 20,168,204, 1,120,252,118,222, 0, 0, 32, 0, 73, 68, 65, 84,184,214,121,151, + 68,157,155, 11,121, 19,244,108,240, 1, 67, 45,221, 18, 0, 34,219,116,206,162,210, 10,192,241,184,134, 15, 28,246, 61, 88,182, +231, 53,134,139, 82,234,112, 66,245,254,122,207, 0, 88,108,125,148, 53,114,126,248,189,208,236,237,141,192,240,246, 36, 97,120, + 16,175, 8,192,115,183, 67,179,169,233, 78,107, 2,216,170,215,235,105, 85, 85, 21,213,106,181,180,188,188,156, 2,216, 87, 71, +153,125,217,217,217, 52, 51, 51,147,166,167,167,211,212,212, 84, 10, 96,123, 83,235,169, 84, 42,191,121,254,249,231,205,124, 62, +127,205,237,104,187,139,139,203,226, 94,189,122, 25,190,252,242, 75,250,243,207, 63,211,175,191,254,154, 78,155, 54,141,118,234, +212, 73,231,228,228, 52,166, 57,154, 94, 94, 94, 11,130,130,130, 10, 55,111,222, 76,183,111,223, 78, 87,173, 90, 69,223,127,255, +125,179,159,159, 95,174, 66,161, 24,218, 28, 77, 15, 15,143, 77,143, 61,246,152, 97,211,166, 77,244,200,145, 35,116,199,142, 29, +244,157,119,222,161,193,193,193, 58,153, 76,246,172, 35,154, 0,184, 60, 30,111,197,148, 41, 83,114,125,124,124,162,106, 29,147, +134,134,134,158, 31, 59,118,108, 54,128,185, 15,203,231,147,105, 50, 77,166,217,114,205,241,190,240, 25,210, 22, 38,122,252, 3, + 74,143,127, 64,195,219,194,242,178, 15,124, 41,192,149, 10, 4, 47, 13,232,223,127,185, 0,120,137, 2,220, 58, 83, 93,245, 4, +184, 98, 46,247,185,126,189,122, 45, 23, 0, 99,108,231,138,185,220,231, 6,244,239,191,156,207,229,142,171, 87,175, 1, 77, 10, +112, 5, 60,222,220,126,125,250,172,224, 1,239,217,242,158,104, 75,174,190, 51,172, 21,237,223,154,220, 24,231, 1,105, 67,154, +245,220,143,201,183,251, 30,223,237,212,220, 15, 2,239,118,127, 8, 31, 20,205, 38, 92,251, 78, 27,173, 14,168, 30,182,217,103, +151,230,215, 81,102,126,173,115,182, 2,232,208,204,251, 41,185,157,109, 7,208,217,205,205,237, 80,135, 14, 29,242,219,180,105, +147,237,236,236,188, 19,128, 95, 11, 53,195,188,188,188,190,247,244,244,188,238,237,237, 29,235,230,230,246, 5, 0,247,150,104, +242,249,252, 94,158,158,158,127, 5, 4, 4,104, 90,183,110,173,118,115,115,219, 5,192,179,169,154, 0,188, 81,199,151, 10, 0, + 1, 0,239,135,233,243,201, 52,153, 38,211,188, 13,154, 0, 55,162, 29,150, 12,105, 11,211,144,182, 48, 71, 4,224, 11,123,131, +242, 20, 32,105,174, 41,122, 5, 16,213, 62,191, 81,189, 70, 52, 41,192,237, 11,200,107,151, 25,238,135, 80, 71, 52,235,185, 31, + 15,132,209,178,213,211,250, 61, 63,217,190,222,141,134,119,168, 11,106,157, 36,123, 59,121, 80, 52,239, 23, 40,165, 55,128,198, +131,189, 81,187, 8,242,183,225,154,142, 5,228,114, 92,239, 50,128, 39,111,179,230, 21, 0,227,111,167,166,193, 96, 56, 11, 7, +247,125,107, 8, 74,105,157, 75,175,105,245,112,182, 67,203,178, 25, 12,198,255, 16,148,154, 15, 3,243,134, 4,146,213, 60, 51, + 56,135,146,105,150,253,225, 3,255, 4, 62,110,146, 38, 0,108,169, 99,123,158,102,233,217,105, 2,192, 73,224, 95,187, 59, 68, +181,112,186,201,131,132,245,123,126, 83,147,226,104, 49, 24, 12, 6,131,193,184,119, 28, 73,172,251,159, 52,198,125, 69, 20,185, +117,143,195,154,121,159, 4, 64,120, 93, 37,104, 19, 86, 82, 16, 66,234,212,104,136,198,244,153, 38,211,100,154, 76,147,105, 50, + 77,166,249,240,105,218,105,215,183,176,226, 90, 45,189,123,178, 96,228,118, 65,172, 99,138,119, 70,252, 1, 13,155,192, 52,153, + 38,211,100,154, 76,147,105, 50,205,187,171,249, 32, 83,171, 55, 11,192, 63, 6,145, 13, 29, 50, 24, 12, 6,131,193, 96,180,128, +134,122,221,152,209, 98, 48, 24, 12, 6,131,193,104, 1,132, 16,111, 84,111, 81, 21,101,125,100, 61, 90, 12, 6,131,193, 96, 48, + 24,183,137, 72, 74,233,166,186, 34,195, 55,182,215, 33,131,193, 96, 48, 24, 12, 6,163, 17,108,243,180,154,186,215, 33,131,193, + 96, 48, 24, 12, 6,163, 1, 26,154,163,117,203,170,195,168,168, 40, 26, 25, 25, 73,238, 74,173, 24, 12, 6,131,193, 96, 48,106, +241, 32,122, 17,187, 30,172,168,218,193,169, 89,143, 22,131,193, 96, 48, 24, 12, 70, 11,176,245,104, 89,135, 13,111,201, 99, 70, +139,193, 96, 48, 24, 12, 6,163, 5, 52,212,163,197, 1,170,187,233,238,122,173, 24, 12, 6,131,193, 96, 48,172, 60,200, 94,132, + 82,186,201,154,254,181, 93,146,109,213,225, 64,107, 3, 91,188,113, 46,131,193, 96, 48, 24, 12, 70, 51,120, 96,189, 8, 33,196, +219, 58,108,232,253,175, 99,119,114, 11, 30, 6,131,193, 96, 48, 24,140,135, 29, 91,252,172,186,226,104, 49,163,197, 96, 48, 24, + 12, 6,131,209, 2, 26,218,235,144, 25, 45, 6,131,193, 96, 48, 24,140, 59,196, 29,141, 12, 79, 8, 9,103,154, 76,147,105, 50, + 77,166,201, 52,153, 38,211,124,216,177, 69,132,175,221,187,197,194, 59, 48, 24, 12, 6,131,193, 96,180,128,218,115,179,236, 95, +179,189, 14, 25, 12, 6,131,193, 96, 48,238, 16,172, 71,139,193, 96, 48, 24, 12, 6,163, 5,216, 86, 28,218,191,182, 61,103, 70, +139,193, 96, 48, 24, 12, 6,163,133,212,183,177, 52, 27, 58,100, 48, 24, 12, 6,131,193,104, 1,181, 39,192,219,191, 38, 0,234, + 92, 57, 64, 41,253,189, 9, 23,104,242,234,131,198,244,153, 38,211,100,154, 76,147,105, 50, 77,166,249,240,105, 54,166,221, 20, +255,113,191,208,208,100,120, 80, 74,239, 88, 2, 16,206, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 48, 39, 0,222, 0, + 38,219, 37,111,219, 49, 54, 71,139,193,120,208,217, 67,184, 40, 14, 10, 0,165, 62,224, 10,115,144,115, 57, 25, 11,169,165,197, +154,234,208,214,144, 24, 61, 97, 18,231, 67, 29,123,179,197,154, 12, 6,131,241,144, 66,171, 55,147,174,115,142, 22, 51, 90, 12, +198,131, 78,126,112, 32,120, 88, 12, 14,188, 65, 13, 73,112, 15, 93, 12, 32,174,197,154, 2,203,167, 48,115,252, 64, 13,137,240, + 8, 90, 2, 32,254,182,212,151,193, 96, 48,254,135,184,235,147,225,249,124,190,154, 16, 98, 17,137, 68,123,235,218,229,154,193, +184, 93, 16, 66,188, 37, 18,201, 94, 66,136, 69, 32, 16,168,239,117,125,238, 8,219, 58, 75,193, 49, 63,169, 55, 90,124,127,189, +172,241,208,234,204,129,224,152,134,227,219, 64,121,139, 52,121, 36,162,202, 96,241,223,126, 78,235, 89,161, 55,133,128,162,101, +154, 86, 8, 33, 78, 66,161,240, 87, 66,136, 91, 75,181, 24,247, 39,161,132, 60,242, 40,159, 63, 59,132,144, 39, 8, 33,228, 94, +215,135,193,184,215,220,117,163,101, 50,153, 60, 50, 50, 50,200,215, 95,127, 61, 66,169, 84, 38,241,249,252,249,132, 16,193,221, +174,199,189, 66,161, 80,156, 82,169, 84,106, 39, 39, 39,181, 74,165,186,208, 88,254,195, 8, 33, 36,208,195,195, 35,205,213,213, + 53,209, 62,223,163,235,232,190, 29, 31,155,176,208, 45,108,212,128, 22,234, 11,248,124,254,124,149, 74,149,180,105,211,166, 17, + 9, 9, 9,196,104, 52,122,180,168,210,247, 43, 85, 22, 79,112,184,131,174,228,104,165, 57,165, 70,207,152, 84,173, 2,224, 14, +132, 30,205,255, 39,166,196,226, 9,208, 39, 46,101, 86,202, 78, 21,185,123,254,157,172, 83,130,195, 25,132, 42,226,213,210,234, +114, 56,156,169, 22,139,101,136, 64, 32,120,187,165, 90,140,251, 19, 33,135,211,239,212,136, 17,159,206,237,210,101,122, 48,240, +116, 93,102,139, 84,243, 86, 72, 72,200, 33, 66,200, 75,183,235,218,132,144,207,131,131,131,179, 8, 33, 51,110,151, 38,131,225, + 8,132,144,238,214, 71,111,235, 54, 60, 53,223,193, 14, 27,173,231,219,146,126, 47,183, 35,199, 94,108, 75,202, 94,106, 71,202, +199,183, 35, 39,158,107, 75,158,104, 78,133,252,252,252,208,183,111, 95,110,122,122,186,100,198,140, 25, 11, 69, 34, 81, 10, 33, +100,104,115,180,164, 82,105,180, 76, 38,203,224,243,249,183,212, 69, 38,147, 69,203,229,242, 12, 62,159, 63,216, 62, 95,169, 84, +158, 82,169, 84,106,165, 82, 89,167,153, 81, 40, 20,209, 42,149, 74,173, 80, 40,162,237,243,249,124,254, 96,133, 66,145,169, 84, + 42,107,231, 63,161, 84, 42, 51,106,231,215, 7,159,207,247,203,200,200,240,200,204,204,244, 16, 10,133,158,246,249,233,233,233, + 30, 25, 25, 25,183,228, 55, 5, 62,159,255,132, 92, 46,207,144,201,100,255,170,163, 92, 46,207,168,221,166,250,176,187,119,245, +221,211,102,189,239, 64,181,201,138,136,136, 56,145,147,147,227,239,228,228,228,100,127,204, 69,229, 52,244,251,205,107,103,141, + 28, 30, 49,213, 35,244,153,206,205,212, 31, 42, 18,137, 82,102,206,156,185, 48, 51, 51, 83,210,171, 87, 47,174, 64,240,144,250, +248, 61,161, 2, 16,203,227, 22, 74,221,175,102, 85,185, 71,142,120,158,119, 49,163,210,221,104, 54,187, 0,220,129,216,218, 70, +212, 44, 77,158,177,191,133, 82,207, 63, 82,249,238,131, 94,152,206, 61,154,202,115, 55,154,205,174,224, 96, 64,179, 52,173, 16, + 66,248, 92, 46,119,214,138, 21, 43, 56, 0,166, 17, 66,132,205,213,122, 16,233,229, 75,124, 7,119,224,157,235,225, 67,250,221, + 46, 77, 66, 72,152, 76, 38,139, 38,132, 4,222, 46,205,150,162,183, 88,174,237,186,121,243,240,184,246,237,159,154,219,165,203, +171,181,205,150,245,249,220, 37, 75,150,140,191,114,229,138,123,219,182,109,223, 32,132,180,248,159,126, 66,200,170, 37, 75,150, +204,185,114,229,138, 79, 64, 64,192,199,183, 67,147,113, 95, 33, 4, 48, 8, 64, 36,128,193, 0,122, 90,159, 63,106, 77,145,168, +142,162, 96,255,248,168,181,172,237,120,175,122, 52, 34,235, 40,247,168, 93,190,253,235,218,207,109,116,183, 62, 70,210,234,213, +134,145, 53, 71, 40,165, 56,120,240, 32,181,127,172,157, 94, 12,192, 71,211,251,250,106,175, 30,216, 65,203, 51,110,210,226,132, +139,244,226,166,207,232,244, 71,221,181, 47,183,197,231, 77,156,153, 79, 41,165,116,251,246,237,244,232,209,163, 84,163,209,208, +248,248,120,218,179,103,207, 74,169, 84,250, 7,128,128,166,232, 41, 20, 10,245, 31,127,252, 65, 35, 34, 34, 74,228,114,249,114, + 0, 28, 74, 41,148, 74,165,250,228,201,147, 52, 34, 34,162, 68,161, 80,172, 2,192,165,148,226,217,103,159,205,163,148, 82,119, +119,247,236,186,244, 70,142, 28, 89, 76, 41,165, 42,149, 74,109,173, 47, 87,161, 80,172,122,243,205, 55,203,207,159, 63, 79,157, +157,157,109,249, 28,165, 82,185,124,218,180,105,229, 49, 49, 49, 53,249,141, 37, 23, 23,151, 12,179,217, 76, 15, 28, 56, 64, 61, + 60, 60,106,234,224,236,236,156, 97, 54,155,233,190,125,251,234,173, 91, 3,247,148, 35,151,203,151,141, 27, 55,174, 44, 53, 53, +149,186,186,186,170,237,242,151, 79,152, 48,161, 44, 61, 61,157,186,185,185, 57, 84, 71, 87, 87, 87,245,169, 83,167,232,232,209, +163, 75,237,239,169,171,171,171,250,244,233,211,182,252,101,182,252,134,146,143,143,207, 27, 30, 30, 30,217, 30, 30, 30,217, 78, + 78, 78,139,188,189,189,115,243,243,243, 41,165,148,182,107,215, 46,143, 82, 10,247, 46,207,244,237,208,111,252, 66,143,176, 17, + 51, 55,236, 62,125,246,120, 92, 97,126,151, 33, 83,151,169,186,140, 84, 53,225, 30, 4,136,197,226, 63, 30,127,252,241,202,212, +212, 84, 90, 94, 94, 78,163,163,163,233,223,127,255, 77,175, 94,189, 74,173,159,187,123,190, 50,229,182,166,181,161,126,116, 99, +208,174,248, 15,253, 19,142, 47, 25,102,164,169, 71,233,142, 87,221,141,199,102,250, 38,209,245,193,255, 71, 55,134,180,106,150, +230,250,144, 29,177,239,251, 95, 91,243,241, 91,198,180,180, 52, 58,123,194, 48,211,111,211,125,147,233,134,224,221,205,210,252, +231, 61, 26,243,204, 51,207,148,167,167,167,211,208,208,208, 10, 46,151, 59,241,158,223,195,187,148,122,250,192, 55, 60, 80,152, + 21,187,125,182,229,233, 48,105, 97,119,111,244,107,169, 38,128, 48, 15, 15,143,130,173, 91,183, 82,133, 66,145, 7, 32,240, 94, +183,211, 90, 47, 18, 12,140,248,174, 75,151,125,150,231,158, 51,127,215,165,203,190, 96, 96, 4,170,195, 9, 17, 0,243,150, 46, + 93, 26, 99, 52, 26, 99,182,108,217, 18, 51, 98,196,136, 24, 0,179, 91,120,205, 47, 63,255,252,115,106, 52, 26,233,150, 45, 91, +232,136, 17, 35, 40,128,213,142,150,151,203,229, 29, 58,119,238,188, 45, 52, 52, 52,189,107,215,174,250,144,144,144,170,192,192, +192,212,176,176,176,173, 34,145,168, 73,191, 73, 44, 53, 63, 53,226, 69,122,206,155, 55,111, 62, 0, 58,111,222,188,249,148,210, + 72,235,247,122,164,253,243,218,143,148,210,112,251,215,117,105,216, 82, 93,154,117, 93,163,214,115,219,103,208,182,234,208,219, +250,122,114,205, 49, 91,163, 14, 30, 60, 56,224,224,193,131,199,106, 55,238,249,182,232, 59,189,175,111,101,101,126, 14,141,251, +236,109,250,231, 32, 63,122,114,160, 23, 77,156,245, 12,205,217,190,138,254,167,155,179,246,185,182, 24,228,232,141,180, 25,173, +189,123,247,210,125,251,246,209, 95,126,249,133,198,197,197,209,194,194, 66,186,125,251,118,179,171,171,107,165, 72, 36, 90, 2, + 64,226,136,158, 82,169, 84, 83, 74,169, 78,167,163,139, 22, 45,170, 82, 40, 20, 23, 0,120, 90,141, 18,213,104, 52,116,201,146, + 37, 85, 42,149, 42, 22,128,143,155,155, 91,198,205,155, 55,169,167,167,103,157,102,198,217,217, 89,125,237,218, 53,234,236,236, +172, 6,224,235,236,236, 28,183,127,255,126, 3,165,148,102,102,102, 82, 23, 23, 23, 53, 0, 79, 87, 87,215,139, 7, 15, 30, 52, + 80, 74,105,118,118, 54,117,113,113,113,216,104, 85, 86, 86,210,223,126,251,237,150, 58,216,242, 15, 29, 58,116,139, 1,115,224, +126,122,170, 84,170,152, 31,126,248, 65,111, 54,155,105, 92, 92, 28, 85,169, 84,106, 0,158, 78, 78, 78, 23,118,239,222,173, 55, +155,205, 52, 33, 33,193, 97, 51,216,166, 77,155, 60, 74, 41, 53,153, 76,116,195,134, 13, 58,219, 61,181,229,235,245,122,186,110, +221, 58,157, 82,169,140, 1,224,217,144,150,155,155, 91,182, 94,175,167, 26,141,134,246,234,213,171,252,228,201,147,180,180,180, +148, 82, 74,169, 85, 15, 65, 3, 38,254,247,236,245,242,210,215,230,172,253, 49,160,231,203,159, 29, 62,151,149,249,205,207,209, + 49,110, 97, 35,135, 57,208,126,137, 64, 32, 88,226,237,237, 93,117,244,232, 81,179, 94,175,167, 55,110,220,160,167, 78,157,162, +103,206,156,161,209,209,209, 52, 46, 46,238,225, 51, 90,187,193,165, 27,131, 70,210,141, 65, 49, 91,199,185, 21,148, 93,216, 73, +233,145, 25, 52,249,191,109,233,135,195, 20,101,150,141, 65, 49,116, 99,240,115,244,163, 1,188, 38,105,110, 10,121,154,110, 12, +138,249,252,249,214,133, 23, 99,206,211, 99,199,142,209,117,171,150,210,233,225,190, 21,150,141, 65, 49,116,125,200,232, 38,105, +218, 37,145, 72,116,253,196,137, 19,244,248,241,227,244,227,143, 63,166, 82,169, 52,189,229,247, 33, 68, 64,215, 7,182,166, 95, + 7, 14,160,155, 59,122,211,191,154, 87,183, 59,153,122,250,192,119, 72,160, 48,179,224,226,207,148, 22,221,160,185,203, 67,233, +176, 32,126,139,204,150,213,100,229,167,166,166,210,220,220, 92,186,114,229, 74,170, 84, 42,239,107,179, 21, 4,140, 4, 48,127, +217,178,101, 53, 38,107,237,218,181, 49,151, 47, 95,142,241,247,247,255,165, 5,215, 90,189,108,217,178, 26,147,181,118,237, 90, +122,249,242,101,218,186,117,235,140,198,202,142, 27, 55, 78,218,183,111,223,152,177, 99,199,106,183,110,221, 74, 83, 83, 83,105, +108,108, 44, 93,182,108, 25, 93,184,112, 33,253,246,219,111,233,232,209,163, 43,122,245,234,117,246,185,231,158, 19, 55,177,110, + 60, 74,169,208,154,248,148, 82,155,209,228, 1,224,219,254,249,103,233,159,212,144, 23,161,245,152,169,250, 12, 86,237, 99, 13, + 24,177, 6, 13, 91, 99,215,163,244, 86, 83, 85, 87,178,239, 90,253, 43, 50, 50,114, 0,106,193,163,248,100,242, 59,255, 21,167, +108, 93, 9,245, 15, 95,129,171, 81,131, 95, 86, 8,221,137, 40, 24, 79,236,199,248, 62,125, 36, 18, 66, 62,173, 93,174, 49,196, + 98, 49, 36, 18, 9, 68, 34, 17, 52, 26, 13,146,147,147,209,183,111, 95, 78,116,116,180,120,242,228,201, 51, 36, 18, 73, 58, 33, +100, 84, 99, 58,182, 30,233, 83,167, 78, 97,210,164, 73,162,109,219,182,117,117,119,119,191,100, 54,155,133, 0,144,144,144,128, + 23, 95,124, 81,180,115,231,206, 78, 62, 62, 62, 23, 12, 6,131, 84, 36, 18,129,203,229,214,171, 39, 20, 10, 97, 52, 26, 69, 29, + 59,118,140,189,116,233, 82,216, 83, 79, 61,197, 79, 75, 75,195,205,155, 55, 97, 52, 26,133,129,129,129,151, 47, 92,184,208, 53, + 50, 50,146,159,145,145,129,180,180, 52,212, 49, 13,161, 94,125,189, 94, 15,145, 72, 4, 14,135,115, 75,190, 78,167,131, 80, 40, +116, 88,139,207,231, 63, 17, 28, 28,124,249,210,165, 75,221, 71,142, 28, 41, 56,127,254, 60, 50, 51, 51, 97, 54,155,133, 33, 33, + 33,151, 47, 93,186,212,109,196,136, 17,130,216,216, 88,168,213,234, 91,174,215, 16,182,243, 46, 93,186,132,177, 99,199, 10,127, +253,245,215,110,222,222,222,177, 38,147, 73, 8, 0,151, 47, 95,198,139, 47,190, 40, 60,124,248,112,247, 86,173, 90,197, 54, 50, +148,200, 5, 0,163,209,136, 55,222,120, 67,166, 84, 42,145,145,145, 1,139,197, 2,179,217, 12, 0, 40, 44, 46,188,124,233,114, + 92,194,248, 49,207, 15,168, 52,232,116,167,207, 69, 95,109,215,166,181, 31, 33,180, 77, 67,245, 36,132,140,146, 74,165,233,159, +127,254,249,204,148,148, 20, 81, 80, 80, 16, 39, 54, 54, 22, 26,141, 6, 66,161, 16, 98,177, 24, 34,145, 8,124, 62,223,161,118, + 63, 80,148,134,186,194,130, 33,105,249,122,145,200,201, 79, 33,247, 14, 4,210,143,163,173,187, 8, 92, 14, 87,124,254,166, 86, + 6,208, 33,240, 47,112,109,154,166,101,200,205, 60,189,200,232,210, 73,238,227,231,143,194,194, 66,180,106, 23,140, 42,161,187, +240,212,141, 10, 57, 72, 19, 53,173, 16, 66,250,119,236,216,209,171, 67,135, 14, 40, 40, 40, 64,247,238,221,225,236,236,236, 76, + 8, 25,210, 84,173, 26,182,182, 17,161, 20,253, 0,206,114,152,201,199, 48,242, 22,227, 70,126,119,108,234,113,223,188,225,189, +124,137,175, 82, 46, 60,179,115,215, 15,190,174,254, 33, 64,212,107,240,116, 18, 97,243,212,238, 46,238, 42,209,190,230, 12, 35, + 18, 66,194, 60, 61, 61,143,158, 61,123,214, 77, 44, 22,227,194,133, 11, 8, 13, 13,197,202,149, 43,221,157,157,157,143,223, 15, +195,136,148, 82,154, 0, 28,248, 60, 54,118,203,182,164,164,131,227,218,183,127,106,108, 96,224,162, 41, 47,189, 52,241,173,183, +222,194,210,165, 75,177,111,223, 62,244,235,215, 15,147, 39, 79, 54,166,167,167,127,215,156,235, 16, 66,190, 90,190,124,249,244, + 25, 51,102,212,214, 52,164,165,165,125,222, 80,217,176,176, 48,191,235,215,175,103,205,154, 53,171,251,182,109,219, 36, 82,169, + 20, 26,141, 6, 95,127,253, 53,230,207,159, 15, 66, 8, 40,165,248,246,219,111,165,175,190,250,106,207,164,164,164,172, 54,109, +218, 56, 50,173,131, 0, 16, 3,144, 90,147, 12,128,116,231,206,157,170,145, 35, 71, 42,173,121, 18, 0, 18, 66, 72,179,135,226, + 31, 98,234,244, 34, 54, 8, 33, 7,237, 95, 83, 74,159,170,157, 87,251, 24,165,244,169,134, 52,154, 66, 61,215,139,170, 29, 25, +222, 30,251, 95,222,129, 81, 81, 81,199,254, 37, 10,116,241, 10, 8, 66,201,145,221,144,240, 8, 36, 92,107,226, 17,112,146, 47, +163,149,152, 15, 35,165, 97, 77,173,172, 88, 44,174, 49, 91, 18,137, 4, 2,129, 0,229,229,229, 48, 26,141,120,239,189,247, 68, + 71,142, 28,113,229,112, 56,255,215,152,142,189, 97, 74, 76, 76, 68, 72, 72, 8, 57,112,224,128,231,180,105,211, 36, 0, 32, 20, + 10, 81, 82, 82,130, 14, 29, 58,144, 67,135, 14,121,188,255,254,251,242,134,204, 12, 33, 4, 2,129, 0, 51,102,204,144,156, 59, +119,206,197,199,199, 7,201,201,201, 40, 42, 42,130, 92, 46,199,140, 25, 51, 36,103,207,158,117,247,241,241, 65,106,106, 42, 74, + 74, 74, 32,151,203,155,108,180, 4, 2,193, 45,101, 8, 33, 48, 24, 12, 16, 10,133, 14, 27, 34,149, 74,181, 35, 38, 38,198, 93, +165, 82, 33, 54, 54, 22, 38,147, 9, 42,149, 10,211,167, 79,151,196,196,196,184, 59, 57, 57, 33, 33, 33, 1,148, 82, 40,149,202, + 38,213, 17, 0, 44, 22, 11, 18, 18, 18,208,166, 77, 27, 28, 63,126,220, 99,202,148, 41, 98, 91,254,141, 27, 55,224,231,231,135, +227,199,143,123,200,100,178, 29,245,105, 89, 44, 22,228,228,228,224,202,149, 43, 72, 78, 78, 70,126,126, 62, 10, 10, 10, 80, 86, + 86, 6,147,201, 4, 0,144,150,149, 70,237,252,241,192, 37,137, 68, 34, 13, 13,236,232,127, 57, 46, 62, 79, 34,145, 72, 91,251, +251, 7, 18,242,113,189, 55,131, 16,242,127, 73, 73, 73,174,175,190,250,170,224,250,245,235,200,206,206, 6,159,207,175,249,108, +217,146, 72,244,144,125,151, 17, 66, 64,244, 29, 65, 72,247, 51,201, 21, 46,253,159, 26, 35,192,205, 95, 1,139, 17,224,240, 48, +176,139, 31,111,223,229, 10, 79, 80,116,129, 14,193,128, 3,111, 60, 33, 4, 48,116, 0,200, 35,191, 93, 55,185,246,123,102,170, + 32, 43, 43, 11, 2,129, 0, 34,145, 8,221,159,120,150,183,243,146,209, 11, 4, 93, 97, 64,144, 67,154,118, 72, 36,146, 15, 22, + 46, 92, 40,179,215,156, 56,113,162, 76,165, 82, 45,108,214, 61,216,218, 70,132, 10,105, 31,152,232,140, 43, 89,218, 54,139,162, +114, 67,146,242, 42,131, 64,233, 44,192,216,173,165,102,139, 16, 50, 80, 44, 22,223, 36,132, 60,214, 92,141, 94,190,196, 87,169, + 16,158,222,181,235, 7, 95,151, 86,213, 38, 11,166, 42,128, 47,129,151,187, 19, 54,207, 28,228,226,238, 36,105,146,217,178,154, +172, 63,206,156, 57,227, 38, 22,139, 17, 19, 19, 3,129, 64, 0,177, 88,140,206,157, 59, 99,227,198,141,238, 46, 46, 46,247,149, +217, 90, 18, 27,187,117,241,149, 43,137,243,194,194,130, 71,201,100, 46,111,142, 29,171,122,255,253,247, 15,238,223,191,127, 75, +100,100,100,193,185,115,231,190,160,148,238,110,138,182,117, 50,253,218, 21, 43, 86,188,105, 51,110,239,191,255,254,183,251,247, +239, 95, 28, 25, 25,153,115,238,220,185, 89,148,210,181, 13,105,148,151,151,239, 95,176, 96,129,234,153,103,158,177,189,198,137, + 19, 39,240,221,119,223, 65, 38,147,221,114,238,136, 17, 35, 48,105,210, 36,103,189, 94,223,224,111,146,167,167,231,224, 51,103, +206,132, 2, 16, 0, 16,193,106,180,226,226,226,156, 74, 75, 75,157,228,114,185,147,183,183,183,194,154, 47,121,230,153,103,156, +248,124,126,179, 63, 99, 15, 41,117,122, 17, 27,181, 77, 83,125,121,205, 61,223, 17,106,151,167,148,230,208,122,246, 57, 4,236, +140, 86,100,100,228, 49, 0,143,215,117,146,161, 72, 13, 17,204,144,112, 9,164, 92, 59,179, 5, 11,120, 37,121, 77,252,202,173, +166,246,143,161, 68, 34,129, 88, 44, 6,159,207,135,209,104, 68, 73, 73,137, 67, 58, 54, 83,160, 84, 42, 33,151,203, 81, 89, 89, + 9,147,201, 4,177, 88, 12, 0, 80,169, 84, 80, 42,149,224,243,249, 53, 63,194,181,123,147,236,225,112, 56, 16, 8, 4,144,201, +100,200,201,201, 65, 90, 90, 26, 44, 22, 11,228,114, 57,100, 50, 25,132, 66, 33,178,179,179,145,157,157, 13, 74, 41,100, 50, 25, +100, 50,153,195,230, 8, 0,204,102, 51,132,194,127,207, 3, 54, 26,141, 77,234,209, 50,153, 76,184,122,245, 42,210,211,211, 33, + 22,139,107,218, 42, 18,137,112,227,198, 13,228,230,230, 66, 42,149, 66,169, 84, 66,165, 82, 57,172,107,107,139, 66,161,128, 68, + 34, 65,113,113, 49,180, 90,109,205, 61, 85, 42,149,144,201,100, 40, 41, 41, 65, 94, 94, 94,131,109, 55,155,205,200,206,206, 70, +126,126, 62, 50, 50, 50, 80, 80, 80, 80, 99,182, 44,150,150,199,191, 60,126,252, 56,146,147,147, 65, 41,133, 72, 36,170,121,127, +237, 31,109,245,126,104, 88, 23,166,130,145, 31, 81, 80,110, 20,229, 27, 4, 42,207,176,112,224,230, 33,128,195, 3,196,206,232, +221,169, 45,210,138,205,178,107,106,189, 24, 4, 67,177, 54,208,217, 33, 77, 51,127, 72,126,153, 81,148,106,112, 87,134,116,233, + 1,181, 90, 13,145, 72, 4,145, 72,132, 71,250,133,227,102,161, 89, 26,159, 85, 41, 5, 69,132, 67,154, 86, 8, 33,237,228,114, +121,159,199, 30,123,140,216,107, 14, 31, 62, 28,132,144,206,132,144,224, 38,181,127, 77,123, 33, 12,210,222,224,209, 25,241, 57, + 90,159,125,113, 85,129, 79,143,122,214,229,203,223,243, 66,174,230,234, 2, 64,141,239,128, 26,122, 52,215,108, 17, 66, 6, 40, + 20,138,131,107,214,172, 9, 16,139,197,135, 8, 33,253,155,163, 35,151,112, 55,124,240,230, 24, 95,103,155,201, 50,106, 1,158, + 4,224, 75, 0,158, 4, 94, 30,110,248,116,210, 16, 23,169,152,191,215, 81, 77,137, 68,178,115,237,218,181,238,181, 77,150, 45, +117,239,222, 29, 31,126,248,161,187,139,139, 75,189,255,252,220, 13, 8, 33, 17, 78, 78, 78,219,194,195,195,207,100, 43, 20,147, +114,122,244, 16,254,161, 82,149, 12, 46, 41, 81,181,142,139, 51, 4, 1,151, 1,172,203,200,200, 24,230,168,201, 34,132,188,164, + 82,169, 98,194,195,195, 13, 10,133, 34,125,229,202,149,255,153, 54,109, 26,150, 46, 93,138, 5, 11, 22,124, 13,224,117, 74,233, +123, 25, 25, 25, 62,141,153, 44, 0,200,205,205,125,121,238,220,185, 5, 5, 5, 5, 0,128,206,157, 59, 67,163,209, 96,246,236, +217,120,251,237,234, 69,177,221,186,117, 3,165, 20,106,181, 26,203,151, 47, 87,231,230,230,190,210,144,166,217,108,206,216,189, +123,119, 79,131,193,224,135,234,225, 65,145, 70,163, 81, 22, 21, 21, 41, 12, 6,131,204, 98,177,200,156,156,156,228, 0,164,227, +199,143,231,197,199,199,135,152, 76,166, 44, 71,218,255,191, 66, 67, 94,164,153, 68, 53,167,144,173,231,170,174, 30,177,186,104, +180, 71, 43, 50, 50,146,216, 63,218,195, 37,136, 77,143, 62, 14,151,176, 30,183,244,102, 73,185, 4, 18,165, 10, 55, 51,210, 32, + 0,185,210,212, 70,216,140, 85,109,179, 85, 82, 82,130,169, 83,167, 86,190,240,194, 11,133, 22,139,229,217,198,116,108, 63,242, + 42,149, 10, 42,149, 10,241,241,241,116,244,232,209,234,149, 43, 87, 86,218,242,149, 74, 37, 18, 19, 19,105, 68, 68, 68,222,194, +133, 11,203, 27, 50, 90,182, 30,173, 37, 75,150, 84, 14, 28, 56, 48,255,202,149, 43,212,102,166,228,114, 57,150, 47, 95, 94, 57, +104,208, 32,245,249,243,231,169, 45,175, 41, 61, 90, 28, 14,167,198,104,217,151,225,112, 56,176, 88, 44, 77, 50, 90, 21, 21, 21, + 47, 71, 70, 70,170, 19, 18, 18,168,173,157, 42,149, 10, 43, 87,174,172, 28, 50,100,136,250,202,149, 43,212,150,167, 84, 42, 29, + 54,131,182,235, 43, 20, 10, 40,149, 74,196,199,199,211,136,136, 8,245,234,213,171,171,236,243,175, 94,189, 74, 71,140, 24,161, + 46, 43, 43,123,185, 62, 45,139,197,130,228,228,228,154, 30,172,170,170, 42, 20, 20, 20, 32, 35, 35,163,102,232,176, 82,166, 28, + 54,230,133,167,187, 86, 86, 86,106,227, 19,175,167,119,238, 20,234, 81, 89, 89,169, 77, 75, 79, 79,164,116, 97,189,110,140, 82, +250,236,107,175,189, 86, 56,127,254,252,202,210,210,210, 58, 77,150,237,241,161,130, 99,241, 2,161,143,253,125,189,220,105,200, +211, 47, 10, 73,238, 57,192, 80, 14,136,156, 1,145, 51,120, 50, 87, 60,217,191, 27,119,235,153, 82, 47, 80, 75, 95, 8, 68,126, +141,106,242,169, 39, 96,233,127, 36,177,202,249,177,231,166, 11,139,138,138,192,229,114,107, 76,145, 84, 38,195,224, 81,227, 57, +223,158,211,121, 1,180, 31, 8,183,113, 77, 43, 66,161,112,206, 7, 31,124, 32, 40, 46, 46, 6,135,195,249, 71, 83, 42,197,148, + 41, 83, 68, 74,165,114,129,195,109,223, 19, 42, 0, 95,212, 27,160,111, 95,203,173,242,217,127,185, 50,232,157, 37,155, 37, 97, +221,122,226,141,129, 30,146, 37, 81,121, 97,151, 50, 42,219, 2,230,153, 48,233, 31,105,170,217, 34,132,244, 87, 40, 20, 81,209, +209,209,210,225,195,135, 99,249,242,229, 50,137, 68,114,136, 16,210,228, 47,254,138,114,243,180, 79, 86,127,175,142,253, 98, 40, + 96,168,168, 54, 88,118, 41,175,220,130, 15, 55, 31, 45, 49, 26,233, 24, 71, 53, 43, 43, 43, 39,188,254,250,235,133,123,247,238, +253,151,201, 18,139,197, 72, 73, 73,193,162, 69,139,138,138,138,138, 94,105,106,125,111, 23,132,144,136,105,211,166, 45,202,204, +204, 12, 58,114,228, 8, 47, 63, 63,223, 99,197, 55,223,148,236, 41, 41, 41, 90, 28, 23,119,237,189, 78,157, 58,206,235,210,229, +149,250, 66, 63,212,163,249,210,155,111,190,185, 51, 51, 51,179,251,239,191,255,206,207,207,207,247,123,243,205, 55,177,108,217, + 50, 44, 88,176, 96, 35,128, 55,168,117,178,140,163,232,245,250,107,197,197,197, 79, 13, 29, 58, 84, 83, 92, 92,140, 46, 93,186, +224,233,167,159,134,151,151, 23,124,124,124, 48,114,228, 72, 4, 6, 6,162,176,176, 16, 99,198,140, 41,202,207,207, 31, 74, 41, + 77,110, 72,179,176,176, 48,105,199,142, 29,137,211,167, 79,239,158,153,153, 25, 2,192,181,172,172, 76, 86, 86, 86, 38,210,235, +245, 18,103,103,103,231,110,221,186,185, 77,158, 60, 89,126,241,226,197,144,204,204,204,114, 0,105, 77,169,247,195, 76, 67, 94, + 4, 64,190,213,240,232,107, 61,230, 55,114,204,209,178,117, 62,119,224,188, 26,172, 97, 29,106,146, 45,191,209, 95, 94, 3,240, +225,119,187,183, 86, 9,253, 59, 64, 21,212, 21, 82,177, 24, 18,161, 16, 18,103, 87,232, 44, 22,124,147,146,171,173,160,212,241, + 47, 74, 43,246,195,134, 98,177, 24, 92, 46, 23,235,214,173, 51,245,233,211,167,234,232,209,163,107,180, 90,173, 63,165,244,231, +198,116,236, 77,193,234,213,171,181, 51,102,204,184,148,151,151,215, 85, 44, 22,235,109,249,107,214,172,209,142, 31, 63, 62, 46, + 51, 51,179,187, 84, 42,213,214, 55, 63,203,166,103, 29,218,208,229,229,229,245,156, 56,113, 98,194,186,117,235, 42,164, 82, 41, +100, 50, 25, 68, 34,145, 62, 47, 47,175,235,127,254,243,159, 75,203,150, 45,211, 74, 36, 18,200,100,178, 38, 13,203, 81, 74,255, +101,168,236,243, 29,197,104, 52, 30,205,203,203,235, 58, 99,198,140,139, 95,126,249,101,133,205, 0,217,215,113,197,138, 21, 90, +185, 92,222,164, 30, 45,219,121, 50,153, 12,171, 86,173,210, 78,159, 62,253, 82, 94, 94, 94, 87,145, 72,164,183,203,175,152, 54, +109,218,197,188,188,188,174, 70,163,241,104,125, 90,102,179,217, 92, 90, 90, 10, 30,143,135,184,184, 56,157, 64, 32, 0,135,195, +193,141, 27, 55,106,140,150,139,139, 75,104,215,206,157,130,191,223,185,251,152, 68, 32, 18,245,233,249, 72, 72,114,106, 90, 38, +165, 36,181,161,122, 82, 74,127,174,170,170,242, 63,113,226,196,154,161, 67,135, 86,125,253,245,215, 38, 30,143,247,175, 31,159, +135,207,104, 65, 10, 2,201,245, 60,157, 66,204, 49, 17, 36,254, 92,109,178,196, 78,128,216, 25, 16, 59,195,215,215, 15,231, 82, +180, 10,112, 32,132,217,129, 24, 98,148,202, 64, 32,141, 83, 67,193, 23, 74, 72,110,110,110,141, 33,178,165,128, 14, 33,184,144, + 86, 46, 7,161, 34,112,209,148, 16, 36, 79,185,186,186,242,114,114,114,254,165, 25, 26, 26,202, 53, 26,141,142,135,118,201, 54, +123, 3,150, 55, 19,115,171,188,127,186, 84, 17, 52,115,241,183, 18,137, 89, 3, 68,175, 70, 88, 59, 31,204,124,174,155,240,253, +253,249, 97,231, 83,181,237,192,165,111,192, 82,238,238,168, 52, 33,228, 49,133, 66,113,232,252,249,243, 82,133, 66,129,228,228, +100,244,236,217, 19,155, 54,109,146, 74,165,210, 95, 8, 33, 3,155,208,102,156,201,165,105,229,101,230, 62,115,118,167,231,198, +230,152,110, 49, 89,249, 21, 20,175,127,190, 95, 83, 92, 90,245,236,233,244,250,255,126,106, 67, 41,189,168,209,104, 34, 22, 44, + 88, 80,152,159,159,127,203,103, 60, 45, 45,205,102, 8, 6, 82, 74,155,252,207,239,237, 66,165, 82,141, 93,188,120, 49,206,159, + 63,143,225,195,135,227,248,241,227, 40, 42, 42,194,174, 67,135,174,239,184,126,253, 61,219,156,173,186, 66, 63,212,135, 82,169, +124,103,241,226,197,136,142,142,174,209, 44, 44, 44,196,226,197,139, 51, 1, 76,109,170,201,178,161, 86,171,207, 93,187,118,109, +104,151, 46, 93,174,174, 89,179, 38,211,219,219,219, 50,121,242,100,188,254,250,235,112,119,119, 55,175, 90,181, 42,189,127,255, +254,113, 73, 73, 73,225, 21, 21, 21,151, 27,211,163,148,210,130,130,130, 83,155, 54,109, 58,243,196, 19, 79, 72, 39, 76,152,224, +190,111,223, 62, 87,173, 86,235, 35, 18,137, 60,244,122,189,240,234,213,171,220, 61,123,246,120,197,199,199,167, 84, 86, 86,158, +107,110,221,255, 7, 57,143,234,222,169,223,107, 61,158,111,228,152,163,101,235,123,222,216,121, 53, 80, 74, 55,217, 39,251, 3, +141,166,177,237,240,209,148, 78, 10,237,169,113,189,105,238,228,199,168,250,197, 16,122, 98,128, 11,157,216,158, 84, 76,104,102, +120,135,172,172, 44,170, 86,171,105, 97, 97, 33,253,225,135, 31,168,151,151, 87,133, 66,161,104,114,120, 7, 47, 47, 47,117,105, +105, 41,125,244,209, 71,139,220,221,221,107, 66, 17,120,123,123,171, 43, 42, 42,104,239,222,189,139, 60, 60, 60,106,194, 59,248, +249,249,101, 80, 74,105,235,214,173,235, 92,217,231,229,229,165, 54,153, 76,212,203,203,203, 22, 34,129,239,226,226,178,190, 87, +175, 94, 69,106,181,154,122,123,123,215,132, 78,112,119,119, 95,222,179,103,207, 91,242, 29,168,111, 70,102,102, 38,205,204,204, +164,173, 90,181,202,182,207, 79, 75, 75,163,105,105,105,212,207,207,175,201,225, 29,220,221,221,151,213,174, 75,115,235,232,239, +239,175,174,172,172,164,125,251,246,189,229,158,250,251,251,171,171,170,170,108,249, 14,133,119,144, 72, 36,111,136,197,226,108, +177, 88,156, 45, 18,137, 22,181,105,211, 38,239,199, 31,127,164,171, 86,173,162, 10,133,162, 58,188, 67,232,136, 62, 29,250,190, +242,158,123,232,200,119, 90, 18,222, 65,161, 80,252,225,229,229, 85,177,103,207, 30,170,211,233,168,209,104,164, 54,240, 48,173, + 58,220, 20,216,129,174, 15,222,159,244, 73, 64,252,140,199,165, 85,151, 63,237, 74,233,255, 61, 67,233, 47,175, 83,122,116, 14, + 61,183,113, 50,237, 27, 32, 50,159,156,221, 42,145,110, 8,250,201,161,144, 12,155, 58,119,160,235,131,127,185,254,113, 64,252, +132,254, 62, 85,223,172, 91, 69,207,158, 61, 75,227,226,226,104,114,114, 50,253,229,231, 31,105,223,118,210,106,205,245,193,251, +155, 18,230, 1, 64, 63,145, 72, 84,190,114,229, 74,122,230,204,153, 26,205,253,251,247, 83,169, 84,170, 5, 28, 92,181, 12, 16, +186, 62,116,148,105, 93,208,223,239, 15,145,151, 21, 30,156, 67,233,229,173,148,110, 10,163,116, 75, 47, 74,127,140,164,244,192, + 43,244,204,170,231,104,191, 0,129,145,110, 8, 58, 78, 55,134, 14,113,180,158,124, 62,191,116,239,222,189, 52, 59, 59,155, 30, + 63,126,156, 70, 71, 71,211,132,132, 4,154,158,158, 78,163,162,162, 40,159,207,175, 2,208,228, 85,141,189, 60,209, 58,188,163, + 32,231,210,146,126,148,238, 27, 67,243,119,140,165, 79,117, 82, 20,245,110,197,123,162,185,159, 1, 0,221, 92, 93, 93, 11,162, +162,162,104, 74, 74, 10, 61,118,236, 24,245,240,240, 40, 0, 16,118,175, 63,159,225,225,225,103, 41,165, 49,195,135, 15,143, 1, +240,107,120,120,120,204,205,155, 55, 99,122,246,236,121, 6, 13,132,126,104, 72,115,240,224,193, 6, 74, 41, 29, 62,124, 56, 5, +144, 29, 30, 30, 78,111,222,188, 73,123,246,236,169,191, 29,117, 70,245,162,157, 87,248,124,254, 55, 46, 46, 46,127, 58, 59, 59, + 31,229,114,185,155, 0,140,115,228,123,174, 1, 77, 31, 0,161, 0, 30,177,166, 16,107, 30, 91,113,248, 63,148, 28, 62,241,185, + 0,244,123,181, 29, 57,246,114, 91,148,141,105,139,242,215,218,147, 19,207, 6,160,193, 47, 10,212,177,187,183,205,104, 21, 21, + 21,209,139, 23, 47,210, 1, 3, 6, 84,200,100,178, 44, 0, 67, 29,170,112, 45, 77, 55, 55,183,104, 15, 15,143, 12, 30,239,214, + 47, 45,187,252,193,246,249, 30, 30, 30,167,188,189,189,213,238,238,238, 23,234,210,116,115,115,139,246,246,246, 86,187,185,185, + 69,219,151,227,114,185,195,221,220,220,178,106,231,243,120,188, 39, 60, 60, 60, 50,106,231,215,213,118, 74,171,156,237,170,185, + 0, 0, 32, 0, 73, 68, 65, 84, 13, 85,118,118, 54,205,207,207,167,254,254,254,183, 24,173,204,204, 76,154,155,155,123,139, 1, +115, 68,179,177,186,212,151, 95,159,166, 3,247,180,201,239,187,221,177, 64, 95, 95,223,188, 21, 43, 86, 80,185, 92,158,103,127, + 44,232,241,215, 62, 56,123,189,188,244,245,185,235,127,116, 15, 25,213,185, 41,109,183, 59,111,168, 76, 38,203, 26, 52,104, 80, +197,141, 27, 55,168,141,186,140,150,163,154, 77, 73,119, 69,115,119,136,128,110, 12,233, 71, 55,132, 68, 37, 44,108,125,245,149, + 94, 50, 93,204,138,225,148, 30,157, 67,207,172,127,157,246, 9, 16, 86, 27,162,141,193,135,232,183,129,143,211,213,237,132, 14, +105,126,211,190, 63,221, 24,124, 40,254,195,214, 87,159,233,225,174,223,185,117, 35,189,113,227, 6,221,191,103, 7,237,221,214, +106,178, 54,132,252, 70,215,135, 12,114, 72,243,214, 99,253, 68, 34, 81,249,230,205,155,233,141, 27, 55,232, 79, 63,253,228,144, +201,186, 69,211,206,104,205, 15,151,107, 94,239, 37,214,141,233, 38,212,143, 12, 19, 24, 34, 58, 8, 76,125, 91,243,204, 93,189, + 57,150, 16,119,208,136, 32,137,142,110, 8, 58, 78, 55,132,252,235,123,165,190,122, 10,133,194,116,216,197,212,169,157, 68, 34, + 81,126,125, 70,171,177,247,189,151, 39, 90,135, 7,138,114,254,248,228, 9,250,116, 23, 69,161, 35, 38,171, 49, 77, 0,221,220, +220,220, 10,182,108,217, 66, 61, 61, 61,243, 29, 49, 89,119,227,243,169, 82,169,182,149,151,151,199, 28, 62,124, 56, 38, 60, 60, + 60,102,219,182,109, 49, 39, 78,156,136,145, 74,165,219,172,231,255,203,108,133,212,250,254,175,173,169, 84, 42, 99,202,202,202, +232,225,195,135,105,120,120, 56,221,182,109, 27, 61,113,226, 4,149, 74,165, 49,205,254, 59,186, 3,109,103,154,255,187, 9,213, + 49,180,110, 73, 53,199,238,240,133,235, 52, 90, 26,141,134,206,156, 57, 83, 47, 22,139,181, 2,129, 96, 62, 0,193,195,246,129, +169, 79,211,205,205,237,148,167,167,167,218,211,211,243, 22,179,103,159,239,230,230,118,225, 94,215,243, 78,106, 2, 8, 20, 8, + 4,105,124, 62, 63,209, 62,223, 61,116, 68,159,246,253, 38, 44,240, 12, 27,241,100, 75,234, 9, 64, 32, 16, 8,230,139,197, 98, +237,236,217,179,245,229,229,229, 15,151,209,162, 20,116,117, 59,161,205,108, 93, 94,208, 58,225,233, 78, 82,195,166, 89, 17,180, + 79,155, 90, 38,107, 75,107, 81,147, 52,173,102,235,226,251,254, 9,131, 2,229,166,197, 11,102,210,222,109, 37,183,154,172,166, +104,222,122,188,159, 84, 42, 45, 91,184,112,161,195, 61, 89,255,210,252, 38,200,159,110, 12,222, 86,109,162, 26, 73,235,131,190, +166, 95, 5,249,223, 47,239,123, 47, 79,180, 30, 28, 40,186,226,104, 79,150, 35,154, 0,186, 57, 59, 59, 95,117,196,100,221,173, +182, 3,136,152, 50,101, 74,204,205,155, 55, 99,146,147,147, 99, 78,156, 56, 17, 51,106,212,168, 24, 0, 17,118,231,212,152, 45, +195,232,209,186,110, 28,206,204, 70, 52, 95,154, 50,101, 10,189,121,243, 38, 77, 78, 78,166, 39, 78,156,160,163, 70,141,162, 0, + 94,186,157,239,209,157,120,223,153, 38, 75, 60,220,101,196, 98,113,158,147,147,147,187, 92, 46,143,170,170,170,154, 78, 41,205, +185,219,117,184,151,228,231,231,247,109, 74,254,195, 8,165, 52, 17, 64,235,218,249,121, 87,246,157, 6,112,250, 54,232, 27, 0, + 44, 38,132,124,183,113,227,198, 53,203,151, 47, 31, 37, 22,139,243, 27, 45,248, 32, 49, 61, 73,143, 53,237,163, 33, 20, 46,233, +228, 43,157,247,193,112, 74, 22, 31, 62,213,122,233,104,143,244,190,237,101, 41,224, 91, 62, 7,209,157,195, 43,169,186, 38,106, +158,131,196,184,164,107, 43,233,188,207, 70,130,124,126,104,107,235,101,163, 92,211,251,182,147,167,131,226,115,136,180,167,155, +164,105, 7,165,244, 36, 33,228,201, 21, 43, 86,124,167,213,106, 39, 81, 74,255,108,178,136,130,147,139, 10,227, 66, 24,185,157, + 64, 81,255,132, 70, 74,181,224,112,227,144,135,251,102, 51,241, 51,185, 52, 13, 64,147, 67,225, 52, 4,165,244, 34,170,135,163, +238, 27, 40,165,191, 17, 66,176, 99,199,142,177,193,193,193,237,226,227,227,147,181, 90,237,118, 74,233,111,118,231, 80, 66,200, +129,207, 99, 99, 43,190,138,143, 63,169,183, 88, 78, 54,162,185,203,170,249, 78,112,112,112, 88,124,124,252, 21,173, 86,187,130, + 82,186,235,206,183,136,193,104, 25,119,221,104, 85, 86, 86, 54,107, 31, 63, 6,163,169, 88, 77,252,232,123, 93,143, 59,134,157, +217,234,225, 47,153,190,119,138, 68, 11, 74, 50,193,183,172,106,178,201,186, 85,243, 28, 36,198, 37, 61, 91, 75,222,254,233, 13, +137, 22, 20,185,160,248,162, 37, 38,203, 6,165,244, 36,128,182,205, 22,120, 46,222, 0, 32, 5,132,164,226, 35,212, 63,137,250, + 35,212,252,219,205,184,251, 88, 77,213,111,141,156, 67, 1, 28,181, 38, 71, 52,119, 1, 96,198,138,241,192,113,215,141, 22,131, +193,184,141, 76, 79,210, 99, 79,232,121, 20,112,103,131,131,182,128, 41, 13, 21,166, 92, 76, 79,213,183, 80,243, 44, 10,200, 12, +112, 17, 8,161, 41, 9,229,250, 92, 76,105,129,230,237,166,250, 71,186,126, 35,213,188, 48,168, 12, 6,131,209, 44, 8, 33,147, +169,221, 74, 67,251,215,204,104, 49, 24, 15, 58,213,189, 60,153,214,116,255,106, 50, 24, 12,198, 67, 78,109,195, 5, 84,239,201, + 20, 94,215,201,148,210,223,155, 32, 92,167, 70, 67, 52,166,207, 52,153, 38,211,100,154, 76,147,105, 50,205,135, 79,179, 49,237, +166,248,143,251,133,186, 34,195,215, 24,174, 59, 57,211, 30, 15,200, 74, 7,166,201, 52,153, 38,211,100,154, 76,147,105,222, 91, +205,135, 53, 57,190, 65, 31,131,193, 96, 48, 24, 12, 6,227, 95, 16, 66,186, 91, 31,189,173, 91,240,120,219,142,221,211, 57, 90, + 82,183, 64,111,240, 56, 93,136,133, 6, 3, 0,229,144, 4,152, 44,177,218,130,196, 22,135,124, 80,248, 6,185, 80, 8,119, 19, +232,159, 47,203,186, 86,212, 82,189,206, 65,170,209,158,110,138,177,185,133, 37,223,197, 37,148,237,107, 74, 89, 39,167, 54, 42, +177,139,243,115, 58,131,177,147, 80, 32, 72, 55,104, 74, 55, 21, 21, 37,149,181,180, 78, 12, 6,131,193, 96, 48,238, 11,186, 3, +184, 0, 32,146, 82,186,201, 58,148,216,240,100,248, 54, 97,253,207,139,197,146, 0, 0,176, 80, 10, 11, 5, 42, 74, 53, 49, 57, + 73,231,135, 2,128,123, 64,143,195,124,177,178,135,133, 86, 31, 55, 91, 0,147,161, 42,165, 36,245,204,163,142,212, 72,238, 17, +244, 76,120, 68,248,232,167,158,138, 12,234,220,169,115,123, 0,184, 28,119, 57,233,224,193,168,107,114,143,160,189,229,121,215, +126,106, 73,139, 41,196,255,125,228,145,110,143, 69, 71, 95,248, 4,192,155, 45,209, 2, 0, 87, 87,249,244,223,254,111,246,227, +131, 71, 47,151, 1,104,146,209, 18,187, 56, 63, 55,242,233, 97,221,222,125,107, 10,231,245,217,159, 5,156, 63,249,215, 82,133, + 79, 39, 13,181, 24,127,171, 80,191,248,119, 67, 27, 39, 51, 24, 12, 6,131,193,184,239,137,178,154,171,168,218, 7,234, 53, 90, + 98,177, 36,224,204, 95, 7, 93,126, 58,145, 1, 0, 8,239,238,133,247, 62, 93, 19, 65, 8,185, 6, 0, 35, 94,255, 40,240,147, +249,111,225,212,149, 60, 80, 74,209,173,131, 43,158, 28,249,188, 67,181,145,120,133, 62,250,226, 11, 47,188, 60,123,246, 59, 35, +110,220,184,145,186,115,231,206,191, 1,160,255,227,143,119,248,236,179,207, 94, 88,238,236, 34,146,120,133,102, 85,230,198,159, +111, 76,171, 78,125,223,246,190,161, 29,187,140,253,225,219, 53,156,129, 67,159, 29, 35,241,109,191,184, 50, 43, 41,203,145,178, +238,238,238, 51,248,124,190, 10, 0, 44,150,127,252, 79,187, 86, 92, 47, 0, 48,153, 45, 10, 23,223,224, 50,174, 64,108, 22,137, + 4,241,101,229,229,223,149,100,198,127,211,144,166,206,104, 12,123,123,234,171,156,139,201,133, 8, 8,235,207, 93,181,248,125, + 88,204, 70,231,153,243, 63,125, 46,250,236, 15, 0, 22, 30,107, 78, 59, 25, 12, 6,131,193, 96,220,123,104,117,220,198, 77,118, +175,107,158, 55, 56,116, 40,151,240,112,237,102, 46, 0,192, 73, 2, 76,127, 99, 2, 10, 11,242, 3,245, 38, 11, 94,155, 48, 14, + 23, 18,114,112, 45, 37, 31,148, 82, 4,250, 73, 29,174, 16, 23,150, 71, 94,155,248,218,128,195,191,253,118,238,131, 5, 31,124, + 79, 72,117, 52,240,141,155,190,238,243,225,194, 15, 39,141,155, 48,110,200,158, 61,123,174,160,214,206,216,142,194, 35,138, 53, +203,150, 44, 18,102, 22, 84, 85,205,152, 61,207,242,206,172, 25,171, 0, 60,235, 72, 89, 62,159,175,202,204,204,148,115, 56,183, + 78, 95,251,124,209,188,227, 67, 70, 47,191,158,154,174,185,120,120,255,254, 71, 67, 67, 67,145,153,149,219,111,233,151, 27,186, +122,183,127,244,213,178,210,202,209, 21,249,241,117, 70,161, 22,241,249, 87, 62, 94,186,190,155,197,169, 3,231,189, 73,195, 17, +214,222, 7, 89,121, 26, 60, 62,116, 4, 47,230,252,249, 8, 0,199,154,211, 78, 6,131,193, 96, 48, 24,247,158,134, 86, 29,114, + 0, 32, 42, 42,170,206,192,127,102, 51,197,181,148, 28, 92, 75,201,193,185,132,124, 24, 40, 31,171,150,126,140, 21,139, 23,162, +168,146,131,159, 78,101, 32, 49, 37, 23,137, 41,185, 40, 40, 46,255, 87,121, 90,107,137,230,138, 37,210,238,171, 86,169,150, 69, + 60, 46, 27,232,226,236,236,124,253,202,247, 21, 31,206, 82,135,124,252,118,134,128,175, 23,101,202,228,178,190,187,119,255, 24, +234,233,238, 33,147,203, 21,115,100,126,221, 54, 59, 57,117, 85, 53,164, 89, 27,169,103,200,136, 17,145,195,158,240,242,242,180, + 76, 89, 21,147,208, 41, 36,216,216,177, 67,199,126, 82,207,192, 17,245,149,177,215,180, 88, 44,224,112, 56, 80,171,213,200,206, +206,198,205,155, 55,145,152,152,136,140,140, 84,181,133, 82,190, 25, 22,142,183,183, 31,120, 60, 33, 2,218,180,198,250, 85,139, +165,159,126,244, 94, 79,177, 76,184,143, 16, 66,234,210,172, 42, 42,222,243,203,175,191,101, 29,218,185,222, 12, 0,121,197,229, + 56,122,254, 6, 46,196,103, 52,212,148, 6,235,121,187, 96,154, 76,147,105, 50, 77,166,201, 52,239, 7,205,250,188,200,131, 0, +165,116, 83,237,100, 59,214,224,170,195,164,140, 34, 92,187,153,139, 30,193,190,104,223,198, 27,231, 18,139,177,253,104, 6, 54, + 31, 78,195,209, 75,249,176,240, 20,200, 45, 5,174,167,170,113, 61,173,160,161, 56,205, 0, 0,174,136,255,226,219,111,151,204, +238, 28, 90,218,251,175, 67,211,225,235,126, 61,116,238, 92,205,116,174,136,255,162,115, 43,197,206,121,179,103,142, 85, 72,165, + 66,189, 78,143,118,109, 91,139,223,154, 54,253, 85,226, 44,218,233,104, 67,149,126,161,206, 34,137,228,155, 79, 63,154, 35,250, +226,167,235,233, 21,122, 84,236, 61,173, 78,126,103,222,135, 69, 60,190,120,189,210, 47,212,217, 81, 45,163,209, 8,157, 78, 7, +189, 94, 15,131,193,128,172,140,171, 35,254,248,233,221,161,109, 91,185, 12, 21,137,197,160, 0, 74, 43, 77,184,153,163,197,160, +193, 67,184, 61,186,119, 15,147,123,135, 76,172, 75, 75,163, 73, 45,177, 80,174,226,224,207, 59,184, 63, 30,185,136,239, 15,158, +199,190, 63, 47,226,220,177, 67, 38,106, 49,214,108, 83,161,240,233, 24,168,240,233,146,166,240,237,170,174, 73,126,157,163, 29, +173, 51,131,193, 96, 48, 24,140,187,143,117,165,225,228,218, 43, 14,129, 6,134, 14,171,170, 42, 83,158,125,113, 28,188, 61,188, +228, 35, 7,190, 34,136, 73,210, 32, 63, 39, 13, 55, 18,227,160,173, 50, 66,224,220, 22, 16,123,161, 77, 64,107,196, 94,219,103, + 88,189, 44,170,220, 98,210,165,212,167, 55,114,164,143,159,183,187,140,179,108,169,255,153,196,107,197, 61,118, 44,216,130,151, + 95,150,187, 45, 91,234,127, 38, 53, 89,198,145,138,105,223, 87, 39,140, 33, 28, 66, 49,119,238,108,140,124,106, 24, 94,123,117, + 60,249,238,187,173,189, 29,109,168, 5,252,175,230,191,255,177, 80,173, 49,233,207, 37,150,235,164, 50,137,228,228,245,242,138, +176, 0,127,201,240,209,175,100, 71,237,254,230, 11, 0, 19, 28,209,178, 25, 44,163,209, 8,131,193, 0, 0,102, 0,224,112,170, + 31, 11,203,244,200,211,232,160,214,232, 96, 50, 91, 48,250,197, 9,146,243,209,151, 38, 0,168,103,190,150,197, 98, 52, 25,177, +247,200, 5,100,157,223, 99, 33, 28,110,137,109, 50, 60, 80,109,178,188,188,252,143, 63, 53,122,188,187, 80, 92, 61, 12, 91, 86, +161,195,119, 27,150, 58,218,124, 6,131,193, 96, 48, 24,247, 0, 90,107,251, 29, 66, 72, 77, 94,189, 70, 43,245,202,223,143, 2, + 64,208,163, 67, 11,229, 98,158, 11,143, 67,160,206, 76,194,119,203,103,192, 98,161, 24, 62,105, 25, 20, 1, 94,144, 8,184,208, +149, 23,150, 23,222,248,203,181,161, 74, 16, 98, 28,178,118, 99, 86,192,127,166,182, 83,238,216, 81,206, 7,128, 29, 59,202,249, + 83,167,180, 82,174,219,152, 18,208,235,177, 30,160,102, 51,158, 26,249, 44, 94,124,233, 69,164,230,106,241,127,199,211, 81, 81, +169,119,104,127, 53,169,123, 72, 87, 15, 31,223, 97,111,191, 50, 76,198,227, 18,210,177,181,138,155,145,111, 52,113,185,124,243, +129,243, 37,217,163, 71,191,228,118,244,151, 31,159,144,186,135,116,213,230, 95,189,212,152,158, 78,167,131,217,108,134, 78,167, +131,209,104,132,139, 91,219, 95,134, 60,187, 60, 51, 39,183, 44, 42,183,184,170, 87,133,209, 4,181, 70,135, 60,141, 14,154, 10, + 3,188, 20,206, 48, 25,245,157,235,211,163,148,126, 63,234,217,113,227, 1,112, 8,199,180,165, 44,251,106,162,237,152,205,100, + 13, 27,249,178,251,241,152, 36,220,136, 62, 84, 76, 45, 38, 99,245,141,179,176, 45, 80, 24, 12, 6,131,193,184,207,177,155,167, + 21,101,157, 28, 15,192,206,104,217,198, 70, 35, 35, 35, 73,173,178,200, 82, 23,193, 85,206,131,187, 79, 0,198,206, 88,129,239, +191,152, 5,179,217, 8, 74, 1,147,217,177,200, 4,148,242,143,188, 57, 53, 32,184, 77, 0,215,125,236,203,210,202,237, 59,180, +146,177, 47, 75, 43, 59,117,118, 45,121,115,106, 64, 74, 89,149,127, 63,147,217,140,147, 87,242, 16,151, 82,130,184,212, 82,200, + 37,142,135,249,226, 10, 5, 83,151, 46, 89, 44,224,113, 9,185,146, 86, 94,158, 89,104, 42,231,242,249, 6,169, 68, 72,245,148, +167, 75, 45,160,133,131, 71,189, 90,121, 96,219,151, 19, 1, 76,171, 79,199,182,210,208,214,147,101,123,164,148, 82, 2, 88, 44, +196,108,206, 44,168, 66,185,193, 8,117,241, 63, 70,139,152,234, 31, 57, 85,248,116, 12, 84, 41, 93,126,229,114,185, 34, 74, 1, +163,193,244,130,194,167,227,208,178,236,235,137,246, 38,235,204,149,108, 36, 93,252, 93,109, 54,104,199, 85,168, 19,254,112,184, +241, 12, 6,131,193, 96, 60, 4, 52,228, 69,238,119,108, 61, 88,117,246,104, 53,212, 32, 74,129,235,105, 5,104,227,231, 14,191, + 54,237,145,120, 53,246,159, 99, 0, 76,102,199,230,174,237,219,151,157,185,114,165,202, 50,107, 86, 73,159,165, 75,253, 79, 79, +157,210, 74,213,169,179,107,201,156, 57,233,125, 86,174, 84,157, 62,114,134,111,166,214,120, 93,182,216, 92,214, 48,255, 14,194, +233,217, 53,180, 45,247,227, 29,215,211,255,184, 92,150, 39, 16, 8,140, 94,206, 98,162,144, 11,185, 92, 14, 95,168, 51,114,116, +129, 97,221,185, 7, 56,213,209, 91,235,195,102,180,106, 15, 29, 22,230, 39,141,248,237,255,102,119, 26, 56,106,153, 75, 86,126, + 37, 74,244,220,154,161, 67, 46,135,224,242,213, 52,128, 43,136,171, 75, 83,169,112, 57,188,115,251,247,254, 43,151, 46,130,193, +100,198,155,179, 62,192,171, 19,198, 29, 86,248,116, 28,234, 31, 16, 20,243,247,129, 45,210,161, 83,214, 35,237, 90,116,174, 73, + 87,186,139,153, 44, 6,131,193, 96,252,175,241, 32,154, 43, 27,181, 86, 29,214,221,163,213, 16,173,253, 60,113, 54, 46, 5,157, +131,219, 66,165, 84, 32, 33, 41, 19, 92, 14, 31, 28, 2, 24, 77,142,155, 33,106, 48,254,176,114,165, 10,105, 41, 50,206,186,245, + 41, 1,111, 78, 13, 72, 89,185, 82,117,154, 26,140, 63, 0, 24, 71,105,245,222,139,182, 0,169, 14,118,150, 85,107, 91,140,173, + 60, 93,164,220,232,228,138, 66, 14,135,171,115, 85,137, 45,174, 42, 17,199, 85, 33,228, 11,248, 92,139,137,114, 12,126, 30, 1, + 85,212, 98,233,234,136,158,253,208,161,217,108, 6, 33, 28, 51, 0, 88, 44, 22, 89, 70, 97, 37, 74,170,184, 80,107,116, 40, 46, + 51,160,163,175, 12,191, 31,221,163, 53, 27, 43,119,212,165,197,229, 11, 84,237, 3,252,240,222,127, 87,162, 82,103,198,245,172, +114, 8, 68, 34, 47, 79,175,176, 75,227,254, 51, 79,244,214,166, 36, 76,124,194, 21,179,254, 78,202,210,170,197,243, 28,111, 53, +131,193, 96, 48, 24,140,123,141,253, 28,173,218, 56,100,180,228, 82, 49, 40, 87,140,191, 99,146, 16, 20,218, 5, 91,247,159, 67, +135,206,189,145, 83,102, 2, 5,167,209,213,134, 54,222,153,167,189, 0,224,194,200,145, 62,126,207, 60,227, 59,132, 82,254,145, +117, 27, 74, 50, 1, 96,253,174, 1,160, 0, 44, 22, 10, 74, 1,106,169, 54, 92, 14, 67,120,105, 41, 57,165,109, 2,188,100,136, +207, 52,232,100, 34, 1,199, 89, 38,228,186,171,132, 2, 1,143, 7, 51, 37,186,156,156, 36, 29, 1, 82, 29,145,171, 61,116, 40, +149,123,255, 50,120,212,178,252,212,244,146,232,142, 69,218,174, 37, 6, 33, 40, 5, 58,250,202, 16,119, 38,202,172,206,186,113, +189, 82,125,109, 67, 93, 90, 22, 11,184, 6,147, 5,151,146, 75,160,169, 48, 66, 83,110, 64,191, 65, 79, 11,250,133,143,192,223, +113, 5,176,152,140, 88,250,117, 84,153,153, 26, 95,164, 52,222,232,120,163, 25, 12, 6,131,193, 96,220,107,172, 43, 13, 35, 81, + 29, 25, 62, 18,168, 21, 71,171, 49,204, 22, 10, 55, 87, 23,136,101, 74,164,168, 13, 40, 35, 30, 40,214, 82,152,205,213, 61, 90, +245,117, 60, 17, 66,194,235,202,223,183, 47, 59,243,231,159,243, 55,239,219,151,109, 55,209,251,159,158,172,154, 71,203,191,141, + 86,125,154,132,154,127,223,127,232,175,146, 17,189,220,157, 57, 92,110,165,128,207,209,241, 4, 92,131,128,199, 49, 10,120, 28, +189,167,146,207,253,235,192, 46, 33, 37,248,171, 49,205,170,170, 42,132,135,135, 99,248,240,225, 24, 57,114, 36,158,127,254,121, + 4, 6,134,120,112,184, 68, 79,137,197,226, 46, 44, 67,123,119, 2, 94, 85, 6,254,216,245,185, 54,238,228,207,151,204,186,170, +167,169,221, 88,231, 45,154,148, 90,138, 74,116,168, 50,152, 81, 92,110, 64,113,133, 1, 38,247, 62,248,249, 84, 54, 42,245,102, +164,197,236,169,204,207,205,156, 81,165,190, 94,239,170,205,134,218,222, 18,152, 38,211,100,154, 76,147,105, 50,205,251, 65,243, + 1, 39,210,106,172, 34,107,199,209,114,160, 71,139,162,157,183, 12, 29,124,101,168, 50,120,160, 74,111, 70, 69,149, 25,165, 90, + 3, 74,181, 70,164,228,106, 17,183,191,229, 53,172,238,197, 2,136,245, 57, 72,181,193,115,180, 79, 75,104,208,255,119,197,210, +207, 94,216,213,189,155,254,173, 72,239, 86,177, 41,250,108, 66, 56,149, 28, 46,207,232,162,224,241, 19, 18, 98,243, 79, 31,255, +229,113,177,201, 60,190, 33, 29,147,201, 84,226,235,235, 11,224,214, 45,120, 66,218, 75, 70,158,140,154,219,118,192,136,165,238, + 95, 44,154,173,229,112, 5, 22,194, 19,196,153,141,149, 59, 43,213,215,214,211, 6, 38,148,113, 4,226,171,103, 47,198,247,118, +114,105,133, 27, 89, 21,168,168, 50,193, 96,178,192, 89, 46, 64,230,229,195,134,148,132,232, 31,203,178, 46,109,117,176,169, 12, + 6,131,193, 96, 48,238, 51,108,243,180,108,143,141,134,119,176, 81, 85, 85,149,242, 88,248,211,176, 88, 40,204, 20,176,152,173, + 61, 79,150,127,122,159,204,198,170, 6,123, 98, 28,193, 98, 49,159,251,106,211,230,225,221,123, 14,224,134,250,203, 81, 90,152, +139, 51, 39,255, 52,193, 66, 79, 59, 82,190,160, 32,177, 92,234,213,241,217, 23,158,123,102,247,132,215,166,104, 30, 31, 52, 72, +230,225,225,165,203,204,202,212,126,187,109,187,241,240, 47,251, 30,183,192,244, 82, 65,193,245,127,135,176,183, 67,163,209,124, + 89, 87,254,224,199, 90,245, 3,208,150,203, 35,122,109, 94,162,172, 41,109, 43,200,202, 24,253,217,127, 63, 74,125,121,210, 76, + 97, 59,223,246,200, 43,225, 34, 37, 51, 23, 9,199,247,233,178, 18,207,255, 84,154,121,161,206, 64,167, 12, 6,131,193, 96, 48, +238,127, 90, 52, 71, 43, 61,190, 58,158,214,157,166, 44, 55,111,220,214,173,223,127,250,253,182, 93,253,170,244,122, 95, 10, 65, +134,217,164, 63, 86,110,198,135,142,106,104,115,175, 71,187,185, 5,118,250,246,235,175,222,255,118,243,186, 1,176,152,131, 9, +144, 74, 9,254, 18, 27,205, 19, 26, 51, 89, 13, 81, 80, 80,182,113,200,179,203, 43, 11, 11,203,191,111,106, 89,109, 65, 66,174, +220,179, 93,171,141,171,254,187,140,195,225, 70,152,205, 22,190,197,108,188, 97, 54, 84,125, 94,153,127,109,127, 67,189, 97, 12, + 6,131,193, 96, 48,238,111, 8, 33,147,107, 7, 45,117,184, 71,235,110, 81, 84,148, 84, 6,224,173,150,234, 20, 20, 36,150, 3, +184,237, 43,247, 46, 39,150,252, 31,128,255,107,110,249,114,117,114, 62, 28,140, 74,207, 96, 48, 24, 12, 6,227,193,163,182,225, + 2, 28,156, 12,207, 96, 48, 24, 12, 6,131,193,168,159,218,115,180,106,242, 1,212,185,114,160, 41, 59,115, 55,103,245, 65, 99, +250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,248, 52, 27,211,110,138,255,120, 16, 32,119,114,122, 16, 33, 36,252,118,223, + 48,166,201, 52,153, 38,211,100,154, 76,147,105, 62,124,154, 15, 50,181,123,177,128, 38,172, 58,100, 48, 24, 12, 6,227, 97,195, +205, 45, 80, 14,212,204,235,109, 20,153,123,168, 39, 0, 84,228,199,171,239,100,189, 24, 15, 38,246,251, 28,214,158,163,213, 44, +163, 69, 8,225,115,120,194,183,197, 18,249, 43,132, 3,101,185,166,192,247,118, 84,244, 65,132, 16, 66, 2,219,200,166,181,106, +229, 62, 40, 51, 75,253, 93, 66,178,118,223,189,208,148,123,182,115, 39, 66,231,159,136, 69,247, 89,105,102,220,161,150,214,161, + 86,125, 68,161,161,161,221, 0, 32, 62, 62,254, 34,165, 84,215, 82, 77,153,103,208, 24,103,165,211, 27, 6,139,222,172,173,208, +174, 47,207, 77,220,211,242,154,254,131,194,167,163, 43,120,138, 13, 48,155, 6,129,130, 11, 46,239, 18,209, 85,189, 94,154, 31, +159,220, 80, 57,255,145,139,131, 39,190, 16,185, 96,243,143, 81,159,166,239,155,159, 80,251,184,203,147,107, 20,211,199, 71,204, + 93,187,107,223,146,130,253,115,154,189,138,245,127, 25,255,199, 94,118, 50,241,188,184,217,127, 45, 47,108, 74, 57,191,160, 62, + 87,248,124,190,187,193, 96,200,203, 74, 60,211,201,145, 50,173,130,251, 94,224,114, 57, 62,102,147, 37, 51,227,218,169, 71,154, + 87,227,255, 45, 36, 30,237,250,192,100,122,143, 2, 4,132,183,162,170, 48,249,207,150,232,249,248,248, 72, 84, 42,213,227, 74, +165,178,149, 84, 42, 21, 23, 23, 23, 87, 22, 23, 23,167,167,165,165, 29,165,148,154,110, 87,189,155,130,204, 51,104, 62,225,147, +133,214,231, 31, 87,168,175, 45,110,232,124,185,103,240,167,132, 67,231, 91,159, 47, 46, 87, 39, 44,184, 27,245,108, 12,177, 87, + 80,107, 46,197, 91, 92, 14,175,175,201, 98, 92,164, 85, 39, 30,104, 74,121, 23, 23,151, 8, 30,143, 39,177,189, 54,153, 76,149, + 69, 69, 69,191,221,254,154, 62,252,216,247,104, 53, 57,142, 86, 29, 98, 92,190, 72,122,226,229,215,222,236,180,228,163,121,226, + 85,155,127,134, 88,238, 28, 95, 85, 94, 28,122,251,170,124,251,112,111,215, 43,154,203,225,250,217,231,153, 45,230,204,252,228, +179,183,229, 75, 55,168,141,100,226,251,115,198,205, 26,243, 66,120,235,240,167,102, 16, 0,117,154, 34,133,255,163,167, 8,225, +180,229, 16,128,195, 33,224, 16, 0,160,217, 5,201,103,255,181,201,181,163,154, 54, 84, 30,237,219, 10,229,238,199, 31, 27,249, +166, 87,204,239,219,183,202,220, 67,135, 84,228,199,199, 54, 84,198, 17, 8, 33,238,237,219,183,127, 52, 48, 48,208,117,250,244, +233, 2, 0,248,226,139, 47, 58,116,232,208,161, 48, 41, 41,233, 60,165, 52,191, 57,186, 50,143,224,113, 95, 46,255,228,251, 39, +159, 28,142,236,130, 10, 44, 93,185,118,160,220, 43,240,249,219,101,182,156,157,219, 42,121, 74,231,203, 51,230,124,226, 49,108, +224,163,220,242, 42, 19,126, 61,126,177,255,246,181,159,156, 83,186,135,246,108,200,108, 89,180, 37, 11, 60,229,116,152, 69, 91, + 2, 0, 99,106, 31,247,149, 27,195,221, 37,230, 97,222, 34,222, 69, 0,123, 27,173, 75,192, 99,135,249, 34, 81,107, 14,135, 3, +219,123,207, 37,213,239,191,209, 80,153,150,121,245,248,208, 22, 53,246, 54,161,108,221, 43, 23, 92,158, 43,135,252, 83, 63, 98, +253,156, 18, 74, 75,115, 18,255,118,109,233, 53, 8, 33,170, 78, 29,156,194, 34,251, 61,246,237,177,155, 69, 50,255, 1, 51,163, + 8,229,172, 75, 59,190,226,146, 35,229,197, 98,177,243,129, 3, 7,220,135, 13, 27,166,242,236, 52,234,152, 35,101,228, 66,113, +232,193,131,251, 5,195,134, 57,126,155,101, 30, 65, 67,192,225,108, 35, 0,223, 98,161, 95,112, 45,244,199,242,194,196,164,166, +134, 97,145,122, 6, 79,228,128, 58,252, 61, 99, 1,137,214,170, 19, 54, 55,229, 26,246,240,197,170,193,124,129,224,237,182,129, +157,187,103,165,222,136,174, 40, 47, 91,105,172,210, 28,107,178,144,209,244,238,239,127,199, 60,201,227,243,201,176,193,189,184, + 0, 90,100,180, 60, 61, 61, 71,173, 89,179,166, 93,159, 62,125, 0,252, 63,123,231, 29, 30, 69,245,190,253,251,204,238, 38, 91, +147, 77,175, 36,161,147, 16,122,239, 77,122, 40,210,164,168, 52,169, 42,162,162,128,168,136,128,240, 85, 58, 34,138,128, 72, 7, +233,132, 38, 37,128, 74, 13, 53, 64,130,144, 70,122, 79,118,179,125,119,206,251,199,110, 98, 8,155,100, 3,250,254, 44,231,115, + 93,115,101,103, 50,115,239,153,217,118,207,115,158,243, 28,192,108, 54,187,238,221,187,215,111,225,194,133,114, 56,240, 25,178, + 7, 33, 36,208,219,219, 59,216,217,217, 57, 16, 0, 12, 6, 67,106,118,118,118, 50,165, 52,181,170, 99, 21,126,117,189, 8,132, +159, 95,188,112, 65, 8, 0,157, 59,119, 89, 20,210,249,109,119,129,147, 66,107,111,127,147, 65, 37, 7,240,238,229, 43,151, 8, + 0,180,107,219,126,142,220, 59,252,235,255,203,200,150,212, 55,172, 45, 7,188,215,177, 75,175,161, 35, 71,189,198, 53,170, 31, +140,222,189,122,204, 6, 80, 45,163, 37, 20, 10,165, 87,175, 94,173,203,113,156,192,108, 54,235,218,181,107,151,252, 34,237, 10, + 12,237,240, 27, 1, 23,100, 52, 27,190,207,126,124,125, 17,165,244,169,137, 99, 8, 33, 2,101, 80,139,121, 16, 8, 39,241, 60, +255,164, 40,233, 90,135, 23,121,190,191, 19, 47, 60,215, 97, 89, 56,161,243,204,209,227,167, 55,126,247,253,143, 36,239,172, 58, +139,200,117,115,114,254,174, 38, 11, 0, 4,156,160,198,201, 83, 39,125,100,206, 2, 0,128, 90,103, 70,191,190,125,171, 60,206, +173, 86,219, 40,142,144,208,146,169,196, 45,102,163, 68, 40,114,214, 17, 0, 32,214, 81, 4, 94, 1, 53,207,250,251,123,200, 70, +191,210, 51,100,219,174,159, 83,146, 83,114,207, 87,164,199,113,130, 26,135, 14, 31,241, 9,244,148, 64, 40, 32, 80,107,205,232, +219,127,160,197,222,190,254,254, 30, 17,163, 95,233, 25,178, 99,247,233,228,244,244,188,200,202,218, 41,243,111,208, 82,174,244, + 61, 49,116,202, 66, 79, 29,231,129, 79, 23,175,246,186,112,124,199,249,174, 17,175,241, 73, 73, 79,116,148,144,123,249,121,233, + 51,213,233,191,199, 86,121,210,176,126, 16, 20, 10, 69, 29,133, 66,209,172, 95,191,126,146, 89,179,102,137,186,117,235, 86,250, +255,201,147, 39, 59, 69, 69, 69,249, 47, 91,182,172,127, 64, 64,128, 78,173, 86,223, 82,171,213,143, 41,165,118,207,197, 30,126, +126,222,111, 13, 27, 50, 16, 61,134,190, 9, 11, 79, 48,121,250,187, 56,121,124,255, 84, 0,127,138,209, 50,201, 92, 23, 78,154, + 50,203,187, 93,235,230,130,207,119,196, 66,234, 44, 68,159, 86,161,100,252,219, 31,187,109, 90,243,249, 70, 0, 93,203, 31, 19, + 60,120, 73, 24,175, 41,252,184,177,151, 97,212,160,246,181,113,120,167, 97, 84,141,158,179,193,201,148,165,145,173,186,253,102, +184,184, 75,165,107, 3,220, 4, 62, 98, 75,246,218,186,253,102,156,126,116,124,141,170,178,182,136,196,226,144,157, 59,118,212, +119,119,113,130,144, 35, 16, 8, 8,132, 2, 14, 58,131, 5, 35, 94, 25,245,103,156, 46, 8, 33, 2,169, 79,253,254, 28, 48, 30, + 0,120,224, 7,109,214,195, 99,213,121, 77,136,192,201,243,232,225, 3, 66, 31,165, 24, 2, 1,129,128, 3, 4, 28, 65, 98,166, + 22, 19, 39,142, 87,190, 96,251,188,251,117,244,105, 29,245,117,215, 62,237, 26,123, 52,221,125,137, 40,219,245, 27,233,153,163, +147,141,219,117,232,220,168,224, 46,239, 93,161,148,255,234,201,197, 85,149,222, 73,235,245,250,204, 62,125,251,185, 18,161, 92, +118,250,224,150, 46, 66,142,192,100,161, 48, 91, 40, 44,182,185, 81,173,159, 87, 2,142, 35,160, 60,197,164, 73, 19,209,167,111, + 63, 13,111,230, 83, 42,211,126, 10,142,219,118,226,244,175,222,122, 19,143,101,107, 55,125, 94, 92,152,253,121,252, 3,207, 68, +153,111,131,119, 53,153,113, 14,207,131,193,129,182,122,242,248,238,148, 29, 71, 47,163,113,120, 67, 88,120,107, 59, 67,107,200, +177, 35,242, 50,194, 66,195,172,237,230, 41, 26, 4, 41,208,186, 85,107, 0,120, 46,163, 37,146,184,126,218, 53,226,245, 5, 3, + 70, 76,128,143,183, 55, 56,106, 26,112, 58,114,199, 0,145, 84,249,129, 73, 91,184,172, 90, 98,212, 82,250,187, 64,121,254,133, +211, 75, 2, 2, 2,188, 91,183,254,163, 28,163,217,108, 70,173, 90,181,144,154,154, 26, 90, 93, 45, 66,136,204,223,223, 63,226, +187,239,190,243,233,223,191,191,200,207,207, 15, 0,144,145,145, 17,120,226,196,137, 22, 1, 1, 1, 89,233,233,233,145,148, 82, + 77, 69, 26, 22, 19,231,196, 9, 33,144, 72,100, 0, 0, 10,194,205,122,235,245,166,190,254, 1,118, 35,245,217,217, 25,206, 31, +190,121,142, 8,133, 78,182,253,193, 81,202, 19,123,251, 2,128,135,135, 71, 79,145, 72, 36,181,247, 63,163,192,181, 29, 21, 41, +223,224, 4,156,245,205,106, 54,101,231, 37, 69, 55,116,244,252,229,190,161,141, 68,206, 78,235,199,140,157,210, 97,248,208,193, +240,247, 86,226,244, 47,183, 49,245,173,247, 76,102,163,105,133,163, 58,101, 17, 8, 4,194,172,172,172, 68,119,119,119,191,231, + 57,254, 41, 45,142,212,254,249,228,113,159,211,103,206,206, 89,190,106,205,180,128, 6,157, 77, 60,165,165,243, 24, 7, 55,238, + 33,234, 53,224, 21, 87,159,186,237, 36,107,230,191, 33,122,209,231,251, 59, 97,175,203,176,132,106,127,136,156,165, 46,175,124, +242,225,219,146,133,219, 47, 35,114,221,212,156,226,194,108,239,146,255, 41,148,238, 55,212,133,249,207, 68,104, 28,193,197, 39, +180, 61, 17, 8,167, 16,129, 64, 78, 56,226,204, 91,248, 39,102,131, 97,145, 38, 39, 46,253,121,244,202,194,243, 20,251,126,203, +170,214, 49,132,162,222,182,221, 7,124,124,221,196,208, 25, 45, 24, 57,250, 53,108,221,186,213,197, 91,233, 12,157,193,140,175, +150, 47, 87,169, 19, 35,125, 18,159,228,167,246, 28,248,222,169,199, 9, 89,119,147,211,117,123, 42,212, 35, 28,124,148, 98, 44, +222, 21, 7, 87,169, 8,238, 46, 78,224, 56, 82,230,255,127,116, 23,166,165,231, 23,150,209,220, 94,145,166,220,191, 73, 31,165, +123,192,206, 33, 83, 22,187, 61,204, 18,130,194,136, 71,174, 18,188, 50,110,134,107, 29, 63, 41,228, 18,129, 91,124, 82,170,255, +172, 15, 62,248, 69,233, 83,183, 77, 97,214,163,248,170,206,187,102,205,154, 67, 7, 12, 24, 32,123,255,253,247, 69, 65, 65, 65, +248, 97,199,222,144,206,125, 70, 12, 76, 75,207, 12,162,148,194,215,199,231,201,164,241, 35,142, 28, 59,118, 44,233,201,147, 39, +162, 47,191,252,178,237,129, 3, 7,194, 81,141, 59, 83, 11,165,208,233, 45,176,216,126, 32,179, 11,171,215, 19, 73, 8, 33,129, +129,129,226,212,212, 84,125, 73,148,129, 16, 82,122, 49, 21,129,205,251,188,212,181,173,240,187,227, 9, 80,235, 44,144, 75, 68, + 72,200,212,160, 85,243, 38,228,123,139,185,153, 61,205,137,175, 68,124,236,171,160,125, 7,181,175, 13, 31,119, 25, 54,127,189, + 24,135, 47,197,247,205, 84, 19,120, 13,250,114,138,191, 88,216,203, 91,230,180,182, 91,171,186,126, 61, 90,134,224, 90,171,186, +126, 23,162, 99,227,154,188,178,226,237, 84,181,232,116,222,241,183,237, 26, 46, 1,199,193,195,197, 9,155, 78, 38, 65, 38, 17, + 66, 46, 17, 66, 46,182,254, 45,251,250, 63, 15,210,128,240, 32, 1,111,153,232, 26, 16, 62,113,212, 43, 35, 2,198,140, 26, 65, + 33,224,176,119,223,145,193,219,183,111, 75, 87,248,133,110,180,112,130, 77,218,180,123, 79,170,210, 34, 28,224,163,116,198, 7, + 27,239,194, 85, 42,130,139, 76, 4, 87,153, 8, 61,154,122, 67,240,156, 69, 96, 8, 33,238, 83, 7,215,233,127,123,107,207,238, +161,193,138,250,183, 30, 21,222,155,184,232,250,170,168,130,238, 51,191, 94, 25,238,169, 46, 48, 8, 63,157, 53, 73,152,146,150, +214,125,239,145,243, 61, 2,218, 76,140, 53, 27,139, 63,202,186,181,199,110, 4,247,201,131,223, 90,212,104, 63, 66, 98, 84,155, +238,220,138, 77,169,155,175, 23, 35, 38,177, 8,114,137, 16,138,146,107, 43, 17, 66, 46, 17, 65, 33, 17, 34, 45, 37, 1,121,197, +130, 95, 82, 61,185,238, 52,234,183,106,117, 81,233,140, 22,220,140, 87,163,102,104,115,248,251, 7,192,208,255,213,154, 87,206, +238, 59, 36,247,111,184,164, 56,253,254, 71,142,234,236, 56,122, 25,115,222,157, 18, 77,128, 27, 0, 64,129, 22,159, 46, 93,215, +242,243, 57,111, 62,181,109,214,130, 53, 45,171,211,190,178,136, 36,174, 31,247, 24, 50,125, 65,231, 94, 67,160,202,203,196,111, +167,246,160,207,128, 97,120,117,194, 59,112,115,243,250, 74, 36, 81,222, 50,233, 10,207,150, 63,206,197,191, 97,167, 38,141, 27, +110, 15, 12, 8, 8,226,121,235, 44, 31,148, 2,157,186,246,192,135, 51, 39,129,167, 20,205, 90,180,233,209,127,212,219,148,218, +102, 3,201,201,205, 41,142,125,112,175,167, 54,243,193, 21, 71,219,167,211,233, 76,217,217,217,184,121,243, 38,226,226,226, 16, + 19, 19,131,220,220, 92, 40,149,202,106,117,189, 19, 66, 92,155, 54,109, 58,230,236,217,179, 18,119,119,247,210,237, 6,131, 1, + 46, 46, 46, 24, 51,102,140,168,119,239,222,129, 17, 17, 17, 99, 9, 33, 59, 40,165, 69,246,116,180,185, 15,211, 92,253,194,190, +237,218,173,235, 52, 0,144,186,250,199,175,253,225, 72, 76,101,207, 45, 85, 6,132,116,232,208,177, 46, 40, 5, 1, 93, 93,156, + 19,155, 81,209,190, 66,161, 80,126,249,242,229, 58, 2,129,160,244,247,149,231,121,124,179,121,119,216,207, 23,239, 12, 93,250, +213, 50,137,171, 92,140,236, 66, 3,222,120,117,136,195,191,193, 50,191,176,254, 29, 59,118, 61,244,249,130, 79,132, 10,185, 28, +167,174, 60,198,219, 51, 63,208,165, 39,222, 93, 70,121,209,186,226,172,216,234,253,200, 61,203,159, 50, 50,174,126, 13, 5, 92, + 6,245,145, 76,125,125,144,196, 96,178,160,160,216, 4,189,209, 2, 11, 79, 81, 88,108,194,189,100, 21,188, 92,157,159, 71,186, + 53, 0,111, 0,217, 0,174,149, 91,135,237, 49,236,172,231,192, 26, 27,241, 4, 96, 0, 80,246,201, 75,214, 43,218, 94,114,252, + 61, 0, 13,109,154, 22, 0, 87, 1,228,151,111, 96,249,132,248,210,174,195,200,200, 72, 26, 17, 17, 81,250,141, 95,126,189, 60, + 98, 39, 81,128, 92,233, 13, 74,239,163,204,111, 27,124,253,107,228,174,255,246,123, 15,165,187,103, 82, 97,126,110,136,237, 73, +170, 28,145, 32, 13, 8, 15, 18, 18,193,138,174,221,186,244,158, 54,125, 58, 66,235,212,112,178, 88, 44,244,110, 92,188,105,203, +166,205,227,148, 65, 77, 86, 21,165,220,253,184, 36, 4, 89,221, 81, 14, 22,222,146, 82, 62,130,101,225, 45, 79,221,221,218,211, + 36, 4,112, 83, 56,227,219,227, 9,160, 20, 32,160, 80,202, 69,216, 21,149,130,248,232,253, 69, 3,154, 21, 21,143, 89,250, 89, +143,238,253,103,156,189,247, 72,154, 12, 36, 92, 0, 0, 32, 0, 73, 68, 65, 84,183, 39, 43, 75,119,146, 82,154, 81,145, 38, 71, + 0,161,128,192, 85, 38,130, 82,230, 4, 55,185, 19, 72,153, 31,176,178,221,133,221,250,207,248,249,236,175, 73, 31, 1,200, 46, +155, 15, 85, 86, 83,234, 87,191,181,171, 91,141, 61, 67,167,125,233,114, 39,197, 12,161, 0,168,237, 39,133,135,139, 19, 12,102, +130,196,108,163,245, 24,184,225,237, 89, 11, 60,230,188, 55,237, 24, 33,225,141, 41,189,103,172,236,220, 53, 26,141,243,107,175, +189, 38, 50,153, 76,198, 49,111,188,211, 59, 35, 35,123,240, 55,171,255, 39,246,241,241,133, 70,103, 70,116,204,239, 13, 63,255, +124, 65,237, 35, 39,162, 14,126,246,193,212, 67,125,251,246, 85,238,222,189,155,175, 76,179, 60,217,153, 57, 95,111,222,254,211, +214,149,203,190, 64,108, 82, 62, 54,125,183, 14,212, 98,254,182,178, 99,202,106, 82, 74,233, 71, 31,125, 36, 61,120,240, 96, 13, +185, 92, 94,164,209,104,202,118, 97,114, 28, 71,132,153,121, 26,120,185, 56,195, 73,200,193,215, 93, 2, 31,165, 24, 34, 1,192, + 17, 98,177,167,185,105, 79,228, 34, 94, 83,136,195, 59, 13,163, 54,127,189, 24, 19,222,154,135,187, 57,206, 39, 56,153,114,209, +155,163,134,206,241,150, 90,250, 6,184,113, 62, 61, 90,214,132, 92,226,132,185, 51, 94, 67,155,232, 68,159,212, 2,126, 94,182, + 86,208, 28,192, 60,123,231,206,113,214, 8,150,139, 76,132, 19,219,191,202, 42, 46,204, 46, 44,233,146, 51,232,117, 73,149,157, +115,101,215, 83,238, 27, 58,167,101,243,166,139,167, 77,158,200,117,108,223,134,114,156, 8, 57, 42, 3,161, 20,152,249,246, 84, +188, 57,117,146,223,147,180,172, 79,215,173,251,246, 99,133, 79,195,133,234,172,251,159, 85,166,201, 17,107, 20, 72, 33, 17, 66, + 33,181, 26, 23,133, 68, 8,157,193, 2, 66, 32,112, 15,105, 89, 72,172,145,220,180,220, 68,251,119,224,229, 53, 61,130, 27,157, +249, 57,222, 37, 44,127, 79,254,165,132,180,152, 69,209,183, 51,175, 82, 74,243,130,187,190, 55,214,104,166, 80,235,204, 72,200, +212,192,108,164,100, 66,191, 16,212, 26, 78, 66,191,216,124, 99, 43, 33,196,181,196, 64,151,215, 76,185,180, 87,231,213,100,232, +200,149,107,190,187,182,108,241, 60, 65, 78,161, 1, 60,165,144, 56, 11, 32,117, 22,218, 22, 1,180,197,133, 88,183,254,251, 12, + 51,200, 80, 26, 21,101,174,172,157,207,192,211, 87,135,244,239,178,139, 0,206,132,115, 74, 9, 8,169, 25,242,210,192,113,146, +151, 6,189, 6,139,217, 48, 71,238, 27,118,174, 56,243,193, 25, 71, 52, 27,135, 55, 4, 1,110,168, 51, 99,167, 2,128,194, 55, +244,219,176,208,176,150,229,183,213,171, 23,250,140,209,170,172,157, 78, 82,215,183,220, 61,188,231,133, 54,106,238, 83,167, 73, + 87,226,226, 89, 3, 9, 15,111, 98,231,250, 79,183,241, 58,195,130, 51,145,123, 22,175,218,116,224,149,151,250, 14,193,230,111, +254, 55, 23,192,217,242,154,148,231, 95,221,178,113, 67,144,200, 89, 12,147,153,135,201, 66,173,127,205, 22,228,229,229,195,100, +230, 33,145,185,192,204, 19,152, 44, 60, 76,102, 30,122,131, 89, 62,245,181,136,233, 0, 74,141, 86, 89,205, 26, 13,187,157,116, + 18,139, 67, 40,172,115,215, 82, 74, 33, 48, 27, 56,127,127,255, 29, 0, 32, 22,139, 33, 22,139,193,243, 60,162, 99,179,223,242, + 14,235, 57, 13, 54,131,103, 49, 26,146,242, 19,126,233, 83,209,185,251,249,249, 13, 44,111,178,116, 58, 29,212,106, 53, 46, 94, +186,166,220,184,245,167,190, 9, 73, 41,117,120,170,212,187,248,212,233, 3, 96, 96, 69,215,179, 40,227,193,244,160,246,147,185, +247,223, 28, 91,111,205,150,163, 87, 31,158, 88, 56,183,162,107, 13, 0,181,123,206, 49,188, 63,101, 88,171,165,171, 55, 61,204, +251,101,253,187, 85,189, 70, 66,161, 80,148,157,157,157, 84,178,190,246,251,157,173,110,196,166,190,188,106,229, 42, 73,244, 99, + 21,238, 36,164, 97,108,207, 96, 60,245, 35, 80,137,166,194,175,174, 87,221,186, 97, 59,214,173, 94, 42,124,152,166,195,215,251, +175,226,236,161,111, 47,102,100, 93,233, 75, 51,210,236,118,121, 86,165,105,111, 55, 7,246,113, 72,243,220,237, 28,168,117,102, +232, 13,102,152,120,138, 34,141, 9, 89, 5, 6, 20,105,140, 80,107,205, 24,219, 43,216,238,113, 85,248, 17,111, 66,200, 81, 74, +233, 0, 88,203, 82, 57,151, 89, 7, 33,228,168,173, 93, 79,173,207,153, 51,231,163, 37, 75,150,196,148,236, 91,178,189,100,223, +202,182,151, 57,222,115,238,220,185,141,151, 46, 93,250, 69,251,246,237,119,253,246,219,111,241,176, 99,180, 42,141,104,149,156, + 76,100,100,100,165, 23,154, 16, 82, 71,230,234, 41,118,149,138, 80,187, 86, 48,198,127,180,217,203,213,195, 55, 75,226, 44, 20, + 28, 63,126,194, 35,215,160, 0,199, 9,138, 43,211, 40,139,139, 79,131, 14, 82,169, 44,114,249,242,229, 24, 53,176,179, 52, 57, +199,164,190,157,172,205, 44, 54,192,236,227,221,192,121,209, 23, 75, 21, 75,191,252,234,205,163,135,249, 2, 0, 95,217,211,112, +171,213,250,186,128,148,201,193, 34, 4,148,183,164,228, 37, 92,109, 5, 0, 47,146,139,165,214,153, 32,176,229,214, 16, 2,104, +116,102, 8, 4, 36,171, 32,118,207,189, 49, 11, 23,245,216,182,235,231, 52,202,185,169,138,139, 19,100,148,210, 74,187, 38, 8, + 71, 80,164, 49, 65, 41, 19,193, 77, 33,130, 82,238, 4, 65,153, 15, 89, 73,119,225,182,157,167, 82,147,146,114,175,193,106,178, + 42,212, 20, 10,184,120,106, 49,233, 40,181,184, 12,104,237, 13, 31, 55,103,248,187,139, 33,118, 22,194,100, 6,180, 6, 30, 58, +131, 5,137, 89, 90,168,180, 82, 52,233, 58,162,182,167,255,117,189,103, 72,235,131,185, 73,215,134, 86,214, 86,139,197,130, 45, + 59,126,170,151,150,150, 57,248,216,193,237,226,236, 34, 19,110, 39, 22, 35,171, 64, 15, 8,188, 49,255,139,175,197,179,223,157, +252,242,150,157,251,146, 94,234,220, 54,169,154,151, 21,197, 89, 15,182, 53,233, 16,241,237,128, 1, 47, 75, 99,174, 28,195,195, +155,103, 22,171, 51, 29,207,207, 34,132,112,123,247,238, 53, 79,158, 60, 89,245,197, 23, 95, 4, 29, 62,124,184, 86,118,118,246, + 77, 0, 38, 55, 55,183,176, 6,245, 66,110,157, 58,113, 60, 48,226,229, 17,162,148, 28, 45,148, 50, 39,132,248,200,112,233,226, + 73,147,179,179,200,110,190,137,173,123,112,116,141,158,179,113,248, 82,124,223,152, 92, 73,212,164,137, 99,147, 78, 93,136,205, + 93,187,245,212,255, 2, 21,166,155, 18, 62,123,237,245, 86,117,253,230,188,253, 26,150,172,217,134,243,209,177, 89,197,156,255, +226,116,189,249,231,207, 70,126,104,183,173, 2,206,106,176, 93,164, 34, 20, 23,101, 23,254, 30,125,188, 65,117,175, 87, 5,140, + 61,117,112, 27,151,167, 50,225, 73,142,142,164,229,169, 96,225, 41,220,100, 78, 48,243, 20, 5,121, 57,100,251,182,173,184,118, +237, 18, 7, 1,247, 6,128,207, 42, 19,227,136,181,171, 80, 33, 17, 89, 35, 66, 82,235, 95,147,133, 71,104,189,186,216,176,118, +133,171,151,143, 47, 58,117,233,238,112, 3, 93, 60, 67,154,237,250, 97, 45,162,126,187,209,237,252,170,175, 91, 43, 2,188,215, +184,214, 8, 95,166,172,213, 75,167, 55, 90, 80, 88,144, 15,103,195, 19,180, 9,204,134,135,204,130,196, 34,127,220,205,120,168, +168, 42, 23, 42,231,206,254,155,222,141,135,124,252,211,145,179, 75,250,244,234,134,187,137, 69,144, 58, 11, 33,113, 22, 64,226, + 44,128,136, 88,176, 98,253,183,166,252, 66,213,128,156,187, 7,115, 28,110,176,141,226,172, 7,167, 97,189,251, 5, 96, 29,104, +178,109,205,199, 63, 78,250,240,203, 62,125,135,140, 35,119,175,157,251, 8,192,153,138, 21,254,192,194, 63,123, 42,246,182,241, +118,182, 85,132,212,213,123,245,123, 31,127, 53,163,247,128, 17, 16, 8,132, 48,153, 76,216,183,123, 27,126,248,122,254, 3,131, + 58,119, 28,165,148, 39,196, 99,242,158,109,235, 71,124,248,233, 10,210,184, 89,155,182,246,116,120, 1,249,238,245,137, 83, 70, +250,250,250,186,252, 17,209,162,104, 16, 26,142,254,131,134,225,228,161, 3,184, 23,115, 27, 60,181, 26, 38,158,167, 40,200,207, +205, 48,155, 12, 91, 42,106,155,179, 68, 18,178,249,135,173,245, 57,142,192,104,226, 97, 48,243,120,119,250,120,195,212,153, 31, +117,234,223,187,107,140,179, 0, 69,137,201,233,110,151,110,220,111,194,139, 20, 65, 19,103,173,112,210,233, 45, 40,212,152,112, +108, 83,197, 94, 71,234, 17,210,190, 89,135,151, 39, 78,253,100,131, 88, 44,224,140,141, 26, 4,197,119,109,215,232, 73,112,128, +151,234,243,165, 95,183,249,229,202,141,254,175,140,153, 40, 25, 27,214,146, 4,120, 74, 93,198,143, 25,210, 84,238, 25,252,122, +113,110,114,133, 83,166,137,100,238, 5,193,181,234,149,118, 49,202,252, 66,247, 19,138,218,101,247,161, 4,241,154,140,216,161, + 0,224, 31, 16,172, 19,137, 93, 43, 77, 21,120,234, 88,219,251,120,205,247, 59, 91,221,138, 75,155,180,114,229, 42, 89,244, 99, + 21,110, 62, 46,132,216,137,131,209,196,131, 56, 24,212,230,169, 96,202,188,185,115, 92,243,139, 45,136,186,157,141,152,235,231, +168, 65,173, 27, 35, 51,187, 14,149,251,134,190, 14,160, 46,128, 71,132,208,239,138, 51,253, 14, 81, 26, 85,237, 65, 6, 60,111, +189, 95, 86,250,212,173,109, 17,138,251,139,156,229,237, 9,161,141, 8,133, 59, 64, 83,115,109,191,169,149,158,115,153,199,197, +153,113,248,242,139, 79,177,122,227, 1,164,229,234,160,180, 60,193,161, 77,139,240,254,146, 29,208,234, 43,206,106,168,202,143, +216, 51, 70,229, 13, 87,201,227,146,253,150, 44, 89, 50,224,169,118,218,254,255, 76,251,203,109, 47,123,252,210,165, 75,191, 40, +243,255,103,186,166,171,204,209, 42, 57,169, 42, 78,174,129,183,127,200,111,135, 14,238,119,207, 87, 27, 33,113, 18, 32,184, 86, + 61,124,182,246,144,119,191, 86, 94,200, 49, 42,177,115,195,178, 60,157, 70,181,187,162, 39, 43,139,212, 55,172,173,139,139,203, +177,253,251, 14,160, 78,176,143,211,246,139,121, 9, 55,226,181,165,161,222,162,236, 36,231, 90,174, 26,225,208, 33, 67,100,103, +206,158,155,137, 10,140,150,128, 8,106,124,191,117,159,143,139, 84, 4, 66, 0,149,214,140, 73,175, 15,115,164, 9,149, 67,121, +193,196,113, 99, 65,108, 38,171, 40, 55, 3, 31,205,158,174,147,155, 30,222, 75, 78, 76, 78,237, 57,240,253, 51, 69,106,162, 27, +249,218,244,107,247,226,150, 60,227,108,159,129, 55,165,244,143,232,239,100,141, 28, 0, 2, 66,192, 83, 62, 51,180,150,226,237, +103,186, 11, 51,244,223, 87,101,220, 84,169,177,121, 46,254, 77,134,111, 91,254,214,247, 1,190, 62,158, 10,185,148, 42,100, 98, +210, 40,172,190, 83,187,118, 29,156,107,133, 54,117,186,120, 95,139,228,108, 45,226,211, 10, 33,246,109, 46, 28,213,163, 31,182, +173,154,213,141, 16,194,149, 79, 82, 44,207,207, 81,151, 7,110, 92,191, 82,156, 89, 96,196,131,100, 53, 50,242,117, 72,207,215, + 35, 35, 79, 7,133, 84,132, 46,131, 38,139, 35, 15,125, 55,240,165,206,109,215, 84,239,194, 90,137,143, 79,136, 76, 76, 77, 31, +209,180, 69, 27,108,251,241,135,206,238,238,181, 93,243,243,227,237,134,250,237, 64, 23, 45, 90,228,188,116,233, 82,225,218,181, +107,139,218,181,107,231, 55,119,238,220, 62, 89, 89, 89, 87,107,214,172, 25,122,114,255,150,179,205,187, 12,110, 13,222,232,221, +185,107,119, 39, 49, 47,196,169,163, 71,141,123,118,111,207,213,106, 85, 83, 43, 19,230,100,202, 69,153,106, 2,239,192,192, 24, +133,179,165,151,144, 43,136,203, 59,254,246, 86, 0,251,235,246,155,113,250,220,245,216,184, 86,209,137, 62,103,163,127,207,202, +211, 24, 27, 60, 58,254, 94,165, 95,188, 2, 66, 32, 18,112,112,145, 10,193,217,190, 85, 93, 2,155,253, 14, 66,188, 1,235,123, +139,128,216,254, 2,132, 32, 45, 47,233,134, 3, 57, 27,132,242, 20,136, 77, 41,134, 90,103, 13,205,215,240,146, 33, 59, 51, 5, +223,172,217,130, 27,215,175,161,119,191, 65, 88,247,253,118, 76,122,125,132,174, 42, 53,142,179, 69,180,202, 68,179, 20, 82, 33, + 0,130,130, 98, 19,246,253,242, 4,117,107,115, 14,255, 48, 0,128,139, 66,134, 66,149, 22,156,147, 11, 30, 69, 31,147, 29, 63, +119,101,238,199, 11, 87,126,144,159,126, 59,249,247, 59, 23, 17,234, 85,136,218,129, 70,196,100,184,226,122,110, 45,132,214,171, + 3,206,233,154, 67,218, 57, 49, 77,190, 60,196,237, 27,208,170,121,120,251, 16, 31, 55,104, 13, 22, 91, 84, 75,128, 31, 54,111, + 69, 98, 66,202,196,156,152,131, 55, 28,111,109,197,168, 51, 31,103, 75,124,235,191,121,231,202,153,248, 33, 99,222,132,127, 96, +176,221,238,103,123,216, 51, 80,246,182,217, 51, 95,246,112,150,187,207,157,245,233,242, 25,189, 35,134,227,242,197, 51,184, 25, +243, 8,109,219,182, 70,191,151, 71, 65, 85,148, 23,182,119,235,170, 94, 0, 78, 10,197,230, 25,109, 58,244, 32,188,197,130,135, + 15,238, 62,178,167,165, 73,123,112, 19,128,107,217,109, 50,239,134,205, 20, 74,143,155,122,163, 5,169,169, 41,248,245,183,168, + 22,182,253, 28, 70,236, 36,192,169, 27, 89, 48,154,120, 24,205, 60,186,116,237,101,112,226,244,157, 23,175,220,220, 46, 61, 45, +157,147,187,122,241, 30,129, 13,157,252,197, 70,253,173,199,133, 78, 70, 19,143, 58, 1,242, 74, 53,189, 3,234,125, 49,107,214, +187, 13, 5, 78, 82,168,138,245,134,244,180, 84,191, 13, 59,207,169,239, 63,184, 19, 88,195, 71,233,250,191, 85,223, 57, 21,233, + 8,178, 10,245,200, 83, 21,145, 49, 83, 62, 12,216,248,245,146, 87, 1, 56, 60, 55, 45,161,168, 29,121,234, 98,152,187,139, 19, + 81,235,204,124,110,145,209, 50,230,101,199,111, 44,236, 97, 51, 89,147, 87,174, 88, 37,187,241, 88,133, 91,143, 11, 33,113, 18, +192,217,137,131,193,196,195,145,143, 19, 33,132,171,221,184,235,212, 14,173,154,224,228,205, 28, 8, 4, 28,180,170,124,141, 16, +185,113,173,186,245,150,181,108,211, 14,221,187,117,197,239,113,177,193, 71, 15,239,123,233,210,175,231, 51, 20, 62,161,111,169, +179, 98, 15, 84,167,173,106,141, 70, 96,114,246, 27,239, 31, 88,179,227,208, 81,227,149, 33,193,129,196,199,203, 19,102, 42,196, +228,215,135, 57,252,201,183, 26,115, 96,233,194,185,208,235, 13,240,118,115, 6,165,192,230, 53,159,193, 96, 48, 32,192, 83,140, +194, 98, 83,133,199, 87,229, 71, 42,138, 66, 85,135,178,102,172,178,237,132,144,163,115,230,204,249, 8, 0,157, 51,103,206, 71, + 37,235, 75,150, 44,209, 2, 72,179,115,124,105,215, 97, 89,227, 85,218, 63, 92, 89,119, 33,113,118, 14,245,242, 15,185,116,234, +228, 9,229,193, 91, 60, 46, 31,184,142,136,182,254,112, 18,114,144, 41, 3,112, 43,161, 16,145,251,215, 23, 28,218,245, 93,170, + 94,175,183,107,136,202, 34,243,171,223,202, 69,238,122,242,199,109,187,121, 47, 79, 79,238,155, 83,217,143,115, 85,230,210, 46, +173,184, 43,135,249,235, 39, 55,248, 83,144, 19, 18,137,164,158,193, 96,112,175, 76,143,167,192,230, 83, 73,182, 36,222, 23,203, +123, 41,129, 8, 4,150,109,219,183,193,203,213, 25,122, 19,143, 57, 31,188,163, 29,219, 91, 81, 48,230,149, 81, 61,186,247,159, +113, 86, 36,175,127,166, 67,139,250,180,121,243,230, 5, 2,129,160, 74,189,220,248,171,207,140,174, 8,171, 37,123, 99,222,135, + 99,231,217,233, 46,116, 40,113, 87,149,126,231, 23, 0, 79, 69, 72, 72,221,186,206, 59,246, 30,122,103,248, 43, 35, 63, 14,108, +246,178, 34, 33,189, 16, 78,196,136,214, 13,253,113,238,196, 1,154,146, 24,247,110, 85, 38, 11, 0,178,178,243,130,188,189,125, +113, 35, 94,141,212, 92, 45, 50,108, 38, 43, 61, 95, 15,149, 86,133,166, 33, 1, 40, 40, 44, 12,114,164,157,246, 32,192,129,147, + 39, 79,142,232, 63,120, 36,102,124,176,160,211,166,245,203,110, 43,252, 26, 76, 80,103,196, 69, 85,117, 44,165,148, 18, 66,242, +102,207,158, 93,247,251,239,191,231, 94,125,245, 85,109,147, 38, 77, 36,175,189,246, 90,167,173, 91,183, 74,100, 50,137,246,214, +197,195, 31,191,241,246,156,193, 27, 86, 47,106,150,159,159, 79,204, 38,211,113, 99,126,254, 28, 85, 21,102, 46,249,208,220, 7, + 36,124,193,184, 94,157,189, 15,123,200,184, 70, 98,106, 24, 69,194, 23,236,166,247,230, 27, 31, 29, 95,163,106,242,202,138,183, +211, 10,248,121, 58,206,103,113, 85, 38, 11, 0, 56, 1,129,193,108,129,139, 84, 4,142,179, 69, 48, 41,239,255,195,238,227, 50, +111,165, 51, 68, 2, 14, 66,129, 53,218,153, 83,100,196,155,227, 7, 59,120, 5, 41,111,182, 80,104, 13,102,104,108,119,135,170, +162, 28,204,253,224, 61,244, 27, 56, 4,111, 76,125, 15,249, 90,224,122,188, 10, 70,147,169,202, 15, 5, 71, 56,104,244,102, 76, +232, 29,130, 60,181, 17,197, 90, 51, 12,102, 30, 50,103, 33, 68, 66, 14,114,137, 16,174, 50, 17, 64,169, 83,201,151,137, 72, 36, +210, 25,141,198,109, 21,182,144, 82,212, 10,242,133,214,196,161,205,200,101,232,217,190, 1, 98,126,217, 39, 60,127,249, 78,237, +153, 31,204,195, 59,147, 6,226,167, 7,117,225,225, 19, 2,133, 92, 10, 19,229, 0, 56, 86, 58,132,210,249,188,127,216,208,209, +223,126,191, 57,246,243, 79,231, 72, 10,138, 9,196, 78, 2,156, 61,115, 26,151,174, 92, 95,157, 29,115,176,194,118, 61, 15, 34, +202,249,186,186,186, 66,226, 44,128,193,168, 55, 56,122,156,133,167,160, 64, 11,133,111,232,183,128, 53, 31,203,194,195,206,182, +170,141,150, 72,170,156, 51, 99,246,162, 47,122, 71, 12,199,169,163, 63, 97,239, 79,187, 45,237,251, 78, 20,108,255, 97, 61, 58, +245, 28,132, 78,189, 71,226,248,129,173,239,137,164,202,240,201,239,124,178,176, 75,143,254, 56, 21,249, 19, 50, 51, 82,150, 59, +218, 94,129,136,204,232,209,107, 32,116, 6, 11, 58,191, 52, 0, 39,142, 28,120, 27,182, 65, 22,142, 82,222,140,243,224,204,239, +189, 59, 67,148, 85, 96, 16,101, 23, 25,144,146,173, 65, 66,166, 6,135,118,109,114, 56,140, 71, 96,104,221,165,105, 13,209,228, + 47,207, 62, 9,170,225,175, 23,233,181,210,184, 71,143,195,222, 24, 63, 86, 84,187, 94, 24,151, 85,168, 71,118,161, 30, 57,133, +122,168,117,102,212,171, 81,159, 51,153, 73,251,234,180, 27, 0,188,148,206,162,117, 71,226,225, 42, 23,161, 67,216,243, 15,180, +229,121,254, 15,147,181,210,106,178,110,199, 23, 66,236, 36,128,216,137,131,216, 73, 0,179,133, 58,116,227, 34,245,105,208,255, +205,183,166, 7, 24,204, 64,110,161, 1, 66, 1,129,143,151,187,188,117,179,209,216,188,236,109, 0,192,164,217,223,224,141, 9, +175,161, 97,163, 38, 40,200,207,247, 27, 61,188,255, 74, 0, 14, 25, 45,158,231,113,236, 84, 84,240,169, 11, 55,102,191, 57,107, +190,226,149,129,221, 5, 55, 31, 23, 34, 61, 79,143, 71,113,170,106, 69,222, 0,192,108,225, 65, 65,177,101,247, 81, 72,157,133, +200, 46, 52,130, 82,138, 69,107,247,192, 69, 42, 66,122,190,181,187,191, 50, 42,243, 35, 64,197, 17, 41, 71,177, 29,159,141, 63, +242,184,236,234,150,141,104, 45, 89,178, 36,102,201,146, 37,118, 35,100,192,179,201,240,213,154, 84,218,217, 89, 17,230,229, 25, +112,249,212,137, 99, 46, 7,110, 89,112,238, 86, 46,134,119,174, 1,117, 94, 50,190,250,224,149, 60, 2,106,224, 4,130, 2,189, + 86,179, 95,171, 45, 94, 76, 41, 53, 86,166, 39,243, 15,109, 33,151,186,158, 94,183,225, 71,179,151,143, 15,182, 93,204, 75,201, + 47, 54,151,218, 91,139,197, 68,174,159,220, 80,219,204,155,250,106, 51, 30, 86,121,123,203, 83, 56, 45, 89,127, 8, 0, 5,207, +243,160, 60, 15,145, 68, 33,247,174,219, 62, 19, 0, 44, 60,149, 8, 57,162,179,157,185,245,226,241,230,148,236,199,149,135, 65, + 9, 0,165, 76,132,221,231, 83, 1, 32, 83,160,138,190, 63,230, 21,107,119,161,206, 32, 41,106, 84,183, 46,109,221,186,117,129, + 84,106,119,112,137, 67, 84,183,187,208, 17,232,163, 71, 6, 0, 95, 6,132,118, 30,210, 71,209,180,141, 51,231,132,150,161,254, + 56,119,242, 32,189,124, 98,243, 36, 77,102,236,143, 14,233, 80, 10,181,206,132,180, 92, 29, 82,115,117,200,200,215, 33, 35, 79, +143,140,124, 29, 8, 33,208, 25, 94,172,252, 77,113, 86,236,222,109, 63,110, 28,164, 55, 98, 84,151,222, 67,240,222,252,117, 33, +219,190, 93,122, 90,234, 27,214,209,145, 68, 91, 74,169,133, 16,146, 56,126,252,248,102, 59,119,238, 20, 52,110,220, 88,123,255, +254,125, 25, 0, 30,128, 81,161,144, 73, 55,125,189,228,100,155, 54,109,118,165,198, 61, 56, 11, 32,223,145,225,249, 53,187,141, + 23,135,185,230, 77, 14,150,119,232, 83,199, 79,134, 96,185,170, 79,152,226,214, 87, 62, 47,205,252, 34,235,204,170,172,116,189, +249,231,108,173,160,121,170, 90,228, 80,174,160, 73,175, 75, 26, 58,124, 20, 4,132,131, 81,167, 73, 2, 0, 16,107,226,249,103, +219, 31, 64, 33, 17,193, 69, 42,132, 66, 42, 66,167,112, 15,135,238,112, 75, 46,129,201,194, 67,163,183, 64,171, 55, 67,103, 48, +195, 43,200, 29,223,111,219,139,228, 44, 45, 14, 93,203, 65,108,146, 10,245,107,200, 65,105,213, 95,147,188,197, 84, 60,112,216, +171, 46, 2,142, 64,192, 17, 46, 60,172, 1,242,212, 70, 56, 9, 57, 56, 73,164,144,139,133,112,149,138,224,228, 36, 66, 86, 86, + 22,244,122, 61,130,131,131, 37,149, 54,144,167,112, 81, 72, 81,191,118, 0,140, 38, 51,142, 93,184,135,197,239, 14, 69,175, 46, +173, 64, 68, 10, 60,208,183,128,139,135, 11,120,142,131,209,204,195, 96,180, 0,224, 42,140,190, 5, 7, 7,247,144,203,229,114, +141, 70,163, 74, 74, 74,138, 74,127,176, 63,217,167,209,203,147, 79,156, 58,187,109, 64,191, 94,184,113, 59, 6, 63, 29, 56,124, + 49,199,179,112, 86,201, 49,141, 27, 55,110,231,229,229,165,200,205,205, 45,186,115,231,206, 85,199, 47,239, 31, 16, 66,136,220, + 55,108,102,251, 78,221,160, 46,200, 66,230,147, 4,135,239,162, 27,134,184,224,147, 37,235, 90,134, 54, 8,109,105,161, 86,227, + 21, 30,236,130,247,231,175,105, 89,183,126,131,150, 37, 3, 66, 26, 6, 43, 42,213, 17,201, 93,123,191, 62,249,253, 37,131,134, +143,195,217, 83,135,177, 98,241, 7,219,228, 74,239,134, 30,238,202,230,141,219,245,198,197,211,135, 33,113,241,131,187,167, 95, +167, 87, 39,188,213,115,248,171, 83,112,233,226,105,172, 94,250,209, 86,139, 94,181,195,145,182, 42,124,235,120, 55,111,221,101, +140,139,135, 47, 10, 10, 85,112,113,247, 65,195,166,173,199, 40,124,235,204, 86,103, 62,126,174, 82, 46,128,181, 75, 82,111,164, +200, 87, 27,241, 36, 91,139,196, 12,171,209,226,249,106,228, 4, 89,120,162,144, 8,133, 30,166,223,131,239,156, 62, 75, 67,130, +124,201,151, 11, 63, 16, 24, 33, 65,118,129,213,100,101, 23, 25,144, 93,104,128, 90,103,130,135, 92, 8,222, 82,241,200,192,138, +200, 87, 27,225, 98,203,163,117, 52,202,104,143,245, 63,236, 14,189, 21,151,246,242,138, 21,171,100, 55,227,203,152, 44,145, 53, +154, 37,118, 18,192,194,243,128, 3,159,120,145, 80, 52, 99,112,255,158,120,146,163,181,142, 90,230, 8,234, 55,105, 3, 47, 41, +143,151, 70,206, 1, 0, 12,236,111, 45, 95, 18,159, 94,140, 35,151,179,129,167, 19,187, 43,165, 88,171, 21,108,216, 30, 57,115, +239,158, 93, 74,157, 69,136,239,142, 39, 66,163, 55, 67,226, 36,128,216, 73, 0,169,147,224,169,124,236,170, 48, 91,172, 57,119, +201, 57, 38,104,116, 58, 20,105, 77,160, 0,174,254,174,134,214, 96, 70, 97,177, 9,237,194, 42,141,157, 56, 66, 36,128,136,146, +149,178,209,173, 10, 34, 82,246,184, 86, 86,163,100,255,242, 26,229,255,103,211,171,214, 8, 46, 97,121,231, 88,118,221, 89,225, +209, 80,233,233,125,249,196,241,163,138, 3,183,120, 68,221,182,154, 44,147, 54, 7,203,103,143, 78, 41, 42,200,233, 78, 41,173, +180, 0,100, 89,228,222,225, 77,165, 50,217,217,255,173,250,206,232,227, 27,200,239,191, 92,144, 85,168,177, 60, 21, 67,180,232, +245, 28,229,169,147, 35, 38, 11, 0, 56,142, 24,231,191, 61, 4, 60,165,248,108,213, 94,124, 49,107, 36, 20,210, 87,101,132, 16, + 89,177,206,140,119, 23,108,196,242, 79, 38,186,200,196, 66, 16, 2,232, 12, 22,188, 62,106,136, 67,237, 45,214,153,241,232,202, + 78,181, 42,254,232,253,178,221,133,109, 59,245,187,222,182,109,219, 2,119,119,119, 72,165,210, 63, 34, 21, 14, 80,209,232,194, +172, 2,164,184,184,184,116,117,117,117, 45,171, 87, 92, 80, 80,112,208, 97,241, 50,168, 10,114,206,102, 36,222,105,211,177,251, + 64, 68,157, 60, 72, 47, 31,223, 52,169, 58, 53,122,220, 61,220,159, 68,223,121,212,144, 16, 15,107, 68,203,102,178, 12, 38, 30, + 33,190, 50, 60, 73,124, 4, 55,165,178,202,209,108, 37,200,124,194, 6, 19,142, 78, 37,160,155,213, 25,113,123,109,166,103,180, +220, 47,236,118,204,221,155,139, 7,140,153, 33,236, 61,124,186,224,219, 37,111,125,132,114, 73,172,149, 96,140,141,141,189, 55, +113,226,196, 14,151, 46, 93,178, 0,208, 16, 66, 76, 2,129, 64,102, 48, 24,156,186,119,239, 94,248,224,193,131,243,176,147,180, + 88,158,206, 19,126,242, 34, 98, 85,191,186,245, 91,143, 14,113, 81,245,234,222,185, 61,218, 55, 10,194,147,206,237, 1, 96, 70, +146, 90, 17,218,105,218,166,221,181,189,107, 28,251,246,135, 35, 95, 76, 26,217,243,221,128,129, 11, 86,164, 29,153, 95,105, 34, +106,242,189, 40, 59, 5,156,108, 9,242, 82, 17, 20, 82, 33, 92,164, 34,184, 72, 68, 48,153, 29,187,195,181, 65, 77,102,222, 26, +209, 50,152,161,214,154,113,246,102, 38, 50, 10, 13, 40, 80, 25,161, 53, 90, 64, 65,173,119,163, 14,124,155,103, 61,252,197,173, +228,177,123, 72,203,194, 13,107,151,185,238,251, 37,165,116, 68,159, 82,230, 12, 23,153,117, 52,246,133, 11, 23,224,233, 89,245, +221, 62,207,243,248,233,196, 85,172,216,114, 22, 39, 54,127, 8,137,147, 0, 77, 7, 47,192,184,151,219,130,167, 60, 30,197,198, +100,214, 15,111,230,203,113, 82,112,132, 64,111,226, 1,208, 10,175,167,193, 96,240, 76, 78, 78, 46,170, 87,175,158, 95, 96, 96, +224,112,129, 64, 64,197,128,254,224,174, 60,205,153,163, 59,100,197, 90,189, 69,102, 46,220, 92, 47, 93, 27, 81,191,126,125, 16, + 66,168,151,151,151,211,217,179,103,213, 77,154, 52,241,174, 72,183, 50, 8, 33,156,212,167,193,234, 55,166,205, 28, 94,183, 78, + 29,236,221,177, 25,148,146,125,142, 30,191,253,200, 37, 44,156,251,244, 8,195,247,231,175,105,185,124,193,140,167,182, 77,155, +187,162,210, 81,135, 82,177, 98,214,208,209,147,113,253,234,111,248,106,193,251,187,244,234,188,113, 38,179,105, 68, 94,122,252, +174,218,225,109, 65,141, 42,156,218,179, 12, 35, 95,155, 36,238, 61, 96, 56, 46, 93, 60,141, 47, 62,154,182, 93, 83,144, 53,222, +209,250, 95, 60, 21, 77,237,222,231,101,145, 86,111,196,154, 47, 63,197,148, 89,139,209,174,199, 64,209,221,155,151,167, 2,248, +220,209,115,214, 27, 45,232,222,196,203,106,158, 77, 60, 14,199, 11,132,246,222,129, 66, 1,225,154,215,113,131,214, 96, 70,145, +166,226,174, 36, 0, 16, 58,137, 50, 10, 10,139,106,126,253,197, 76, 65,177,206,140,236, 66, 3,178, 10,245,200, 41,248,195, 96, +229, 20,234,145, 93,104,128, 72, 72, 16,247, 56, 9,156, 72, 88,237,252,188,124,181, 9,109, 26,184, 3,176, 26,154,231,193, 36, +116,109,123,226,252,173,161, 43, 86,172,148,220, 74, 80,225,118,124,145, 45,146, 37,128, 88,196,193,217,246,216,194, 3, 85, 61, +133,210,167,110,237,177, 19, 39,189,228,170,144, 34,237, 97, 22,132, 2,107,137, 24,165, 79, 16,148, 98, 29,222,154, 54, 25, 94, +158,110, 72,206,209, 99,245,129, 56,220,190,247, 59,120,109,245, 78,123,205,119,187,250,190,241,230,251,110,156,200, 25, 91, 79, + 38, 88,219, 41,176,224,193,229, 35,186,180, 71,119,138,213, 69,185, 20,212,226, 96, 0,128, 80,179,197,250,118,251,226,179, 57, +216,181,229, 27,156,140,206, 42, 77,222,250,101,223,114,204,156,187, 8, 57, 69, 6,192, 78,242,125,101,126, 4,214, 64, 68, 73, + 36,234,153,245, 50,230,200,222, 58,177,173, 27, 42,208, 48,148, 51, 87,134,114,219, 13,229,244,158,169,253, 71, 41,221, 80,101, +215, 97,121,228,238, 62,141,149, 46,202,223,142, 31, 63, 34, 63,120,155,150,154, 44,163, 38,135, 46,158, 49, 48,165,168, 32,187, +119,181, 76,150, 79,131,198, 98,185,252,252,199,139, 86,235,125, 3,107,154,143,221, 44,202, 85,233, 44,207,132, 69,156,100,114, +139, 92,233,173,115, 11,105,177, 66,164, 53,124,154,157,125,175,210,228,122, 2,235, 29,211,209, 43, 25,160,212,122,139,180,231, + 66, 42,108,119,230,176,240,214,110,149,159,111,102, 65,104,203, 67,113, 4, 66,128,245,223,125, 83, 20,209,164,176,120,204, 23, +159,149,118, 23,182,107,102,141,100,185,186,186,194,205,205, 13, 10,133, 2,142,116, 29,150, 80,209,232, 66, 23, 23,151,174, 55, +111,222,148,184,186,186, 66, 32, 16, 64,175,215,163, 81,163, 70, 14,235,150, 69,225, 23,246,102,155, 30, 67, 62,234,212, 99, 32, +206,158,216, 79, 47,159,248, 97,114,117, 11, 33, 70,244,236,112,100,225,194,207,106,127,188,248,107,177,139, 68,136,251,106, 3, + 56, 66, 16,226, 43,131,167,156, 67,212,193,173,186,145, 3, 59, 56, 92, 28, 47, 40, 40,112,219,242,181, 27,228,203,151, 46,232, +238, 18, 24,122, 86,149, 26,155, 7, 0,197, 25, 15,190,148,249,133,221,171,241,219,169, 99,205,186, 14,129,111, 64,157, 94,142, +106,218,186, 16, 53,143, 31, 63,142,255,248,227,143, 67,151, 46, 93, 74, 5, 2, 1, 15, 64,188,106,213, 42,205,195,135, 15,111, +194, 58, 52, 23, 85,253,216,188,212,171,209,187, 10,103, 75, 59, 15, 25,215,168,142,159, 12,237, 27, 89,123, 69, 71, 70,116, 66, + 80,112, 48, 30,103,104,154,231,105,120,145,218, 32,168,179,238,187,219,215,106,121, 9, 38,153,181,134,123,168,162,152,172, 61, + 8,254, 72,144, 47,137,102,185, 72, 69,224,129,234,220, 57, 82,147,153,135,222,104,129, 86,111,129,214, 96, 70,177,193, 2,141, +193, 2,158, 90, 63, 19,132, 16, 24,205,124,201, 83, 58,222, 62, 2,184,122,120,161, 78, 45,235, 40, 89, 23,169,181,212,131,171, + 76,100, 29, 35,237,233, 9, 31, 31,159,170, 27, 72, 41, 12, 70,235, 71,220, 96,226, 75,187,245, 13, 70, 51, 40,165,136,139,139, +253, 48, 49, 62,126,112,189,250,245,186,132, 55,109,230, 33, 19,115, 0, 80,161,209,210,104, 52, 22, 23, 23, 23, 31, 15, 15, 15, + 46, 53, 53,181,212, 60,215,107,222,221,124, 96,255, 62, 12, 29, 58, 68,125,255,234,173,210, 33,238, 90,173,150,116,236,216,209, + 53, 40, 40,136,211,235,245,142,230,255,217,174, 1, 33,114,239, 6, 47, 7,133,117, 88,252,250,248, 41, 13,186,247,236,139,115, +103, 78,225,208,254,157, 63, 22,103,197, 58, 92, 57, 59, 52, 52,236,153, 81,135,117,235, 55,120,102,212, 97,205,218,245, 43, 53, + 90,225, 77, 91,183,165, 68,136,147, 71,247, 80, 29,103,156,102, 77,120, 39,123,118,175,255,228,243,209, 83,231,214,237, 63,104, + 52, 94,127,109, 28,132, 66, 1,162,126, 62,130,229, 11,222,139, 84, 23,102,141,117, 36, 77, 0, 0, 72,120,184, 83,189,224,154, +239, 4,215,109,140,232,203, 23,241, 40,238,110,204,173,107,151, 26,213,107,210, 14,222, 1, 33,239,144,240,240,165,244,222,189, + 74,123, 43, 0,192,160,211, 37,141, 27,251, 26,202,142, 58,108,223, 34,212,243,169, 55,160,109, 69,163,202, 50,110, 90,246,238, +195,146, 81,135,188,209,144, 84,145,110, 97,126,246, 79, 81,191, 94,153, 53, 56,162, 47,151, 83,100,176, 70,176, 10, 13,182, 69, +143,156,146,199, 69,122,212, 15, 80, 32, 54, 38,154,215, 21,230, 56,108,136,109,205,210,141, 27,209,231, 30,240, 71,242, 63, 1, +170,204,111, 44, 15, 21,185, 78,254,242,171, 21,146, 91,241,106,220, 78, 40,178,118, 21,138, 4, 86,131, 37,226, 74, 77,151,117, + 52,123,229,152,137,224,139, 9, 99, 71, 33,167,200, 8,158, 7,132, 2,206,182, 56, 33, 89, 69,240, 68,165, 65, 78,126, 54,226, + 19,147, 80,144,241, 8, 28,199,193, 43,160, 1, 28, 13, 63, 90,168,179,191,198, 64,155, 12,143,232, 34,220,255, 91, 58,100, 98, + 33,244,170, 76, 28,223,189, 44, 91,175, 46, 90,172,213,168,247,107,115, 31, 62,147,139, 84, 17, 28, 33,217, 69,106,157,175, 88, + 36,192,222, 45, 95, 99,196,184,105,182,139, 98,253,243,225,188,133, 0, 71,144,151,175, 2, 33,164,186, 81,210,242,193, 23,199, + 18, 58,171,167,249, 66, 84,187,142, 22,207,211,227,167, 78, 28,145,255,146, 40,198,213,216,116,155,201,202,230, 23,189, 29,145, +162, 42,204,235, 67, 41,141,171, 86, 11, 56,174,207,200, 9,179, 98,234, 52, 8,215,159,187,171, 78, 40, 40, 54, 85,152,231,208, +126,248,199, 49,215, 35,215,246, 47, 52, 61,158,174, 8,104,100,225,205,230, 47, 53, 89,177, 11,236,182,147,194,121,193,234,189, +165,221,134,179,151,110,181, 62,182, 88, 96,161, 60, 40, 15,188,245,201,122,152,121, 11,120,139, 5,188,133,194,100,161,178,170, +154,235, 19, 80,115,127,254,131, 61, 97, 99, 62,127,182,187,208,205,205, 13,158,158,158,240,244,244, 68,137, 49,114,148,138,186, + 11, 93, 93, 93,161, 80, 40,112,241,226, 69, 72,165, 82,200,229,242,106,233,150,160,240, 11,155,222,186,219,224,175,123, 12,154, +136,159,247,127, 71,175, 93, 56, 50, 69,147, 25,187,209,209,227, 45, 22, 11, 49,153, 76,136,232,221, 45,233, 70,204,239, 39,230, +205,154,218,183,195,128, 41,226,246,161,129,208, 25, 44, 72, 73,124,132,168,131, 63,232, 26,212,246, 63,249, 82,231,182, 73, 38, +147, 9, 22,139,165,202, 31,114,157,193,152, 35, 16, 73,229,163, 70,141, 17, 93,187,122,117,159,194,167,193, 94, 11,225,110, 17, +202, 55, 37,132, 12,109,218,180, 33,140, 38, 30, 26, 77, 81,213, 3, 11,202,161, 82,169,226, 55,111,222, 92,123,236,216,177,178, +240,240,112,209,163, 71,143,176,124,249,242, 92,149, 74, 85,101,221,176, 18, 78, 93,136, 93, 37, 36,249, 15,157,121,227,232, 16, + 23, 85,175,228, 78,237, 49,106, 64, 39,236,138,252, 5, 81, 23, 47, 33, 73,173,184,169, 54, 11, 15, 62, 73, 74,211, 55,242, 40, +218, 55,168,125, 77,193,222, 45,249,251,124,186,207,125,133, 82,241,169,236,168,249, 14,143,182,181, 14,218, 48,193, 85,102,173, +247, 84, 18,217, 18, 16,226,176, 35, 34, 64,252,197, 75,209,141, 91,213, 15,199,141,248, 66,100, 21,232,161,213,155,193,243, 20, + 60, 40, 60, 93,156, 33,113,226,144,156, 24, 15,158, 26, 19, 28,109,155, 21,154,221,181, 75, 87, 33, 64, 64, 8, 21,138,132, 66, + 80, 88,235, 43, 74,165, 82,181,143,143,143, 67, 17, 45,163,217,140,161,125,219,162, 93,235,166, 24, 60,197, 90, 51,243,204,143, +115,224,174, 16, 97,215,182,141, 72, 62,191,114, 91,157, 14,211, 78,221,189, 19, 51, 44,230,198,111, 99,250,181,148, 54,247, 19, +166, 57, 85,164,167, 86,171,247, 17, 66,156,157,156,156,250,118,233,210,197, 99,223,190,125, 5, 94, 94, 94,188,179,147, 83,246, +160,129, 3,120,145,147, 83, 94,201,190,191,254,250,171,104,202,148, 41, 46,249,249,249,201,153,153,153,151, 40,165,149,134, 76, +228, 62, 97, 61,193, 97, 39, 8,145, 40,164,178,164,246, 61, 71, 5,180,110,215, 86,249,242,208, 17, 16, 59,139,241,243,169, 19, + 88,179,114,233, 30,117,250,253, 9, 14, 95, 70,252,121,163, 14, 83,146, 19,226, 53, 90,125,147,198,173,186,145,139,167, 14,206, + 32,196,123,165, 64,236,186,172,231,208,105,117,227,211,212, 88,179,228, 67,184, 43,229, 72,120,244, 64,251,240,254,157,245, 38, + 93,209,135,142,154, 44, 0,144,229, 90,134,181,127,173,175,187,222,104,193,133,179,145, 58,222,204,247,189,116,254,216,163, 26, + 13, 90, 75, 26,183,126,201, 61,231,208,198,161, 0,118, 85,165,147,114,255,217, 8,110,112,104,155,132, 51,103, 79, 43,125, 67, + 26, 9, 8, 8,140,122, 29,178, 31, 95, 51,107, 50, 31, 20, 21,166,220,113,104, 20,110,238, 19,124, 50,119,254,255,166,183,110, +213, 74, 78, 33,121, 42,130, 85, 98,176,114,138, 12,240,114,113,134,182, 40, 27, 15,175,157,208,105,178, 5,149,214, 59, 51, 27, +138,101, 57, 89,153,165, 93,108,234,204,216,118,149,237,159,147,149,233,108, 54,146, 10, 88,246, 0, 0, 32, 0, 73, 68, 65, 84, + 20, 87,249,219,193,113, 2,184,202,157,113, 39, 33,181, 52,241, 93, 44,178,230,102, 57,139, 4,165,121, 90,192,179,249,108,118, +232,230, 36,113, 67,106,174, 14, 4, 20,188,197, 12,179,201, 0, 85, 81, 17, 82,211, 50,144,153,145, 9,149,170, 0, 50,133, 59, + 26, 55,111, 3, 23,185, 4,183,162,246,128, 82,234, 80, 93, 67, 19, 17,133,182,110,215, 89,124, 55,209,154,139, 37, 17, 81, 28, +217,185, 52, 87, 93,148,213, 89,149, 22,247,208, 17,141,178,152, 45,150,211,183,239, 61,108, 84,195,191, 22,185,249,168, 16,219, +190, 95, 11,131, 45,178,105, 50, 89,112, 55,185, 24,233,121, 26, 36, 63,190, 79,121,139,229, 63, 51, 33,117,133, 70,139, 80, 8, +155, 54,110,136,222,175,190,140,111,190, 89,143,199,241,137,252,226, 25,253,147,213,170,130,126,142,154,172,178,179,123, 23,103, + 60,248,114,194, 55, 9, 41,135,111,228,113, 90, 67,229,243, 91, 73,188, 67,208,121,194,242,147, 90, 85,158,179, 69,175, 17, 30, +217, 54, 97,167, 61, 77, 0,224, 8, 12,139,223, 31, 9,133, 84, 8, 66, 8, 74,186, 11,215, 45,156, 12,153,216,218,183,172,213, +155,241,234,187, 43,176,109,197,123,160, 0, 70,143,248,229,169,161,153,101, 53,203,116,237,213, 72, 74,204, 74,237, 57,240,253, + 51, 58,163, 88, 63, 96,200,216,235,173, 90,181, 42,144, 74,165,144, 74,165,112,117,117,133,187,187, 59,220,220,220, 96,143, 10, + 52, 43, 28, 93,200,113, 28, 56,142,131, 92, 46,135, 66,161,128, 92,254,236, 40,156,170,102, 75, 87,248,133, 77,111,221,117,208, +186,151, 6,191,129,159,247,111,160,215, 46, 28,153,170,201,140,253,190,178,107, 93, 94,147,231,249, 91, 67,135, 14,109, 50,101, +202, 20,167,249,179,166,156,140, 60, 21, 21,183,247,232,134,129,249,249, 5, 65,148, 82,184, 41,149, 79, 70, 14,236,112,164,123, +199,214, 73,103,206,156,225,119,238,220,169, 39,132,220,169,170,157, 57, 89, 89, 63,158, 57,125,246,179,206, 93,187, 97,227,150, +157, 93, 99,238,221,239,250,232,209, 67, 4,133,212, 65,173,218,245,161, 33,238, 56,123,254, 34,212, 5, 89,118,115,200, 42, 58, +119, 91, 84,139,228,231,231,255, 54,114,228,200,222,191,252,242, 11, 55,114,228, 72, 77, 78, 78,206,175,176,221, 71, 85, 20,205, + 42,171,249,219,250,151,179, 1,252, 88,179,219,248, 61,169,198,130,119, 0, 44, 13, 14, 9, 70,212,197, 75,184,244,203,149,245, + 57,178,224, 5, 19, 94, 29, 63,185,230, 32,193, 27,131,218,215, 20,248,184,203,176, 99,195,114,193,225, 75,137, 43, 18,115, 45, + 27, 1, 44,172,172,157,229,201, 85, 25,209,177,161, 7, 76, 22, 10,158, 90,191,112, 93, 36, 34,187, 95,188,246, 52,133, 6,241, +132,169, 83,166, 60,106,220,180,249,204, 87,199, 79,117,106, 94, 39, 8, 87,127, 47, 0, 8,129,135,159, 28,233,233,233,184,240, +211, 6,115,126,234,131,245, 2, 1,255, 76,183, 79,101,237,204, 75,188, 81,175,204,126,147,115,114,114, 16, 21, 21,133, 18,131, +229,237,237,109,215,104,149,215,204,205, 76,251,117,225, 87,223,117,156,244,250, 16, 12,232,214, 8,231,175, 61,130,193, 86,175, +169,100, 40,121,252,165,111,157,223, 25, 89,199, 48,125,104,131, 34,173,201, 57,241,147,132,194, 11,101, 71,197,150,215,164,148, + 26, 8, 33,135, 99, 99, 99, 59, 53,107,214,172,230,177, 99,199,242, 98,174,156,156, 81,182, 29,239,191,255,190,226,155,111,190, +145, 81, 74,127,213,235,245,207, 68,221,237,158, 59,135, 29,209,215,175,123, 26, 77, 60, 46, 94,185,213,240,165,142,205,193, 83, +224,218,181,107,216,184,105,163,238,206,237,155,203,138, 51,253, 62,175,200,188, 84,116, 61, 29, 53, 85,246,246, 43,171,153,158, +154,184,236,231,200,159,182,181,238, 58, 16, 99,222,250,252,243,168,200,157,159,181,236, 60,128,107,216,186, 55,162, 47,157,197, +233, 99, 39,254,103, 84,231,125, 70,171,152,135,180,162,118,138,165,178,183,195, 91,118, 69,114, 82, 34, 18, 30,222,253, 81,155, +251, 48, 77,225, 23,246, 99, 90, 74,210,212,218,141, 58,226,151,147,187,102,160, 2,163, 85,213,123, 62,200, 91,186,225,216,209, +195,163, 82, 82,190,245, 43,214,234,196,148, 82,157,216, 89,152,161,224, 42, 30,161,254,236,235,126,207, 40,247,168, 53,116,196, +171, 83, 35,215,172, 89, 41,242,117,147, 33, 35, 95,135, 34,173, 17, 42,141, 17, 28, 33,168, 23, 32,135, 70,149,135,243, 63,125, +101, 50,168,243, 71, 82,250,187,177, 34, 77,133,111,216, 34,128,190,245,254,180,115,112, 86, 6, 5,212,126,233,163, 74,163,117, +170,180,219, 3,223,159,118, 36,148, 82,250,146,194, 55, 76, 85, 50,215,161,189,115, 39,196,250,249, 30,211, 61, 8, 70,179,181, +254,152,153, 7, 44, 60,111,139,242, 1,180,180, 63,255,217, 15,252,211,154,132,223, 29,249, 43,210, 50, 11,160, 53,152,160, 55, +152, 97, 52, 89,192, 9, 4,112,115,119, 67,253, 90, 45,160,116,115, 69,102, 70, 26, 46,157, 57,140,184,219,231,127, 37, 20, 11, + 52, 89,113,103, 42,214,252, 3, 39,169, 91,168,127,128, 31,151, 94,100,128,212, 89,128,155,231,143, 25, 77, 6,253, 50, 71, 76, +150, 61,205,130,220,188, 21, 51,103,125, 48,250,135,205, 91,252,154,212,118, 69, 74,142, 22, 41,217, 58,168,116,214,251, 28,179, +133,135, 94,157,131,219,103,183,100, 88,116,170,231,170,100,255, 79,164, 66,163,101, 54,234, 84,251, 78, 92,245,156,243,217, 87, +130,223, 31, 61, 54, 45,122, 39, 34, 69,171, 46,234, 95,237, 72, 86, 25, 54, 79,175, 85,229, 29,209,211,216, 74,154,124,158, 88, +233, 94,207,116, 23, 82, 30, 60,165, 56,114, 37,163,180,187,144,183,101, 94,222,120, 84, 80,169, 86,249,174,189,219,177,170,237, + 90,109,166,242,193,239,203,242, 1, 64, 32, 16,148, 46, 37,185, 84, 58,157,174,210, 81, 72,149, 20, 35,125,170,223,155,231,121, +184,186,186, 66, 42,149, 86,187, 75, 82,238, 27, 58,170,117,183,193, 95,191,244,242, 36,156, 62,240, 61,189,118,254,240, 52, 77, + 86,108,133,117, 61, 42, 34, 63, 63, 63,134, 16,242,112,217,178,101,205, 55,110,220, 88,123,214,172, 89,143,183,126,253,217, 26, + 0,200,205,181,206, 1,124,227,198, 13, 58,109,218, 52,189, 78,167,139,207,207,207,143,174,106, 0, 4, 0,104,179,101, 95,108, + 92,183,180,241,147,212,244, 33,117, 26,183,129,119,237, 54,240,171,215, 22,249, 42, 35,174,254,158,134,199,247,207,224,254,197, +159,142,105, 20,230,207,170,219,230,102,205,154, 5,113, 28, 87, 75,173, 86,251,133,135,135, 55,147,203,229, 55,154, 53,107,214, + 66, 40, 20,166, 92,191,126,189,242, 55, 79, 57, 18,163,126,208,215,236, 54,126,117,146,202,165,251,227, 12, 77,139, 36,149,203, + 13,141, 88,249, 94,214,153, 85,122,223,222,203, 86, 80, 99, 78,204,222, 45, 69,251,118,108, 88, 46,120,117,242,251,150,187,133, +238,239, 8,165,206, 63, 47, 25,215,196,225,231, 32,132, 75,159, 62,118,240, 31,229, 29,108,145, 44,219, 99,135,194,244, 5, 5, +183, 10, 1,204,150, 6, 52,250,250,238, 59, 83, 22, 54,109,221,241,181, 46,253, 70,114,102, 39, 5, 78, 30,248,150,198,223, 62, +187, 87, 72, 45,243, 52, 14,204, 6, 80, 21, 6,131,161, 74,147,101,143,194, 39,242,110,123,119,110, 26,183,239,192,254, 37, 47, + 15, 26,236,185,238,147, 87,240,213,119, 7, 33,151,138, 65,121, 30, 35,123, 4, 15,191,191,179,207,192, 32, 95, 73,224,190,115, + 41, 23,222, 90,121,119,182, 70, 99,140,171, 42, 18, 99, 51,206, 23, 93, 92, 92,178, 59,117,234,212, 78, 44, 22,147,156,156, 28, +161,143,143,143, 89,169, 84, 26, 82, 82, 82, 52,122,189,126, 31,165,212,225, 40, 35, 0, 24, 77, 60, 18, 50,117, 56,180,127, 31, +110, 93, 57,131,251,247, 99, 85,247,239,221, 95, 75,132,116,165, 58, 35, 46,175,106,133,103,225,237,142, 58,180,191,173, 50, 44, +122,213,142,173,235, 23,245,208,232,244,227,154,117,136, 64,205,134, 29, 57,163,201,130, 59,215,206,225,220, 79, 43,191, 50,168, +114,231, 60, 79,251, 74, 8,168, 81,187, 62, 21, 56,227,183,168, 72, 80,158, 95, 15, 0,148,231,215,223,248,229,216,212,182,253, +223,128,135, 79,205,102,132, 16,226,104,190, 87, 89,156,132, 92,241,241,125, 63, 28, 72, 72, 72,192,131, 7, 15,240,251,239,191, + 35, 47, 47, 15, 59,118, 36, 84,235,245, 41,206, 75,248, 89,225, 89,167,207,176, 87,198, 28, 25, 62,234,117, 73,237,250, 77,184, +208, 26,238,240, 84, 8, 17,251,123, 34,226,174,223,230, 99,175, 30,211, 25,139,178, 94,214,228, 37, 84,104,252,228,222,225,190, +132,163,115, 74,230, 46,108,223,190, 99,232, 7,139,151,180,243,244,246,177,251, 61,158,155,157,229,252,225, 91,135, 67, 47, 93, +254,205,161,185, 14,121,139, 37,119,242,184,145,188,192, 58, 81, 40, 74,227,212, 4, 0, 45,137, 98, 89,183, 83,222, 92,101, 4, +127,252,144,206, 48,243, 60,138,181, 70, 20, 21,235, 81,168,210, 33, 61, 43, 23,183,110,223,198,249, 35,135,241, 40,246, 86,188, +201, 96, 56,197,113,228, 39, 77, 70,236,249,170,244,158,130, 19,214,246,244,240, 64,124,158, 26, 18,103, 33, 18,227,174,235,139, +139, 10, 43,156,141,164, 42, 52, 57,113,233,114,223,208,222, 35, 71,142, 58,209,163,207, 32,101,235, 14, 61,101, 94,174,110,112, + 18, 82, 60, 76, 72, 67,244,175, 39,138, 31,223,186, 80,100, 50,168,251,254, 25,179,190,252,157,113,104,212,161, 81, 95, 60,112, +244,224,174,251, 5, 2,161, 51,207,155,245, 70,131,126,216,139,152,172,191, 10, 74, 45, 41,227, 70, 91,147,219, 75,238, 13,204, + 60,149,142, 30,113, 82, 91,246, 94,193,100,161,178,209, 35,126,213, 0, 0,229, 43, 78,236, 43,237,218,219,245,115, 74, 82, 82, +238,181,188, 60,253,185, 23, 29, 9, 88,118,238,194, 74, 70, 23, 22,135,133,133,149,154, 43,129, 64, 0,139,197,226,240, 23,145, +147, 88, 58,169,199,160,137,228,244,193,239,233,213,168,131,211, 53, 89,113,223, 61,111,123,109,198,233, 10, 33,228,238,188,121, +243, 90,251,250,250,250,126,250,233,167,146,162,162, 34,209,186,117,235,116, 57, 57, 57, 25, 69, 69, 69,151, 40,173, 56,113,249, + 89,205,104, 19,128,161, 10,223, 6,221,233,190,239,123,185,121, 5,246, 86,122,215,168, 91,144,157, 26, 95,152,157,118, 10,192, +105, 91,161,200,106,209,162, 69,139, 58, 28,199,141, 4,208, 88, 46,151,215, 83, 40, 20, 98, 74,105, 24, 33, 36,134,231,249,219, +225,225,225, 71, 1, 84,235,245, 75,140,250, 65,223,101,250,166,157,121, 26,222,201,192, 57,237, 76,140,250, 65, 15, 0,153,167, +102,105, 0, 28,242,237, 62,103,232,225, 75,137,107, 98,242,149, 51,178,206,125,225,240,220,119, 37, 20, 60,185, 89,175,234,189, + 28, 67,155, 22,147, 2, 96,156,220, 55,116,249,157, 27,151,230, 19, 10,145, 5,230, 69,154,204,135,215,255, 12,125,145, 72,164, + 11, 12, 12,180, 59,186, 80, 44, 22, 87,154,191, 98, 43,154,184,145,144,110, 91,246,239,217, 50,238,224,225, 67, 75,186,188,244, +178,167,164, 70, 13,212,242, 33,216, 50,167,229,140, 51, 55,178,175, 14,250,224,194, 55,143,211,116,183, 41,165,213,202,135, 81, +169, 84,113,132,144,124,181, 90, 61,152, 82,250,132, 16, 18,148,159,159,127,211,100, 50,221,169,182, 33,224, 49,166,125,251, 54, + 59, 8, 33, 66,106,230,191,188, 36, 18,236,212,165,223, 79,121, 30, 99, 81,150, 38,181, 92,241,238,167,171, 91,214,173,215,160, +101,201, 92,135,141,106,186, 96,202,236,229, 45,107,214,174,223,242,143,249, 15, 43, 31,117,104,139,220, 78,216,191,233,203, 11, + 55, 46,159,251,200,203,191,102,205,140,148,199,247,159,252,126,115,161, 89, 91,248, 92, 19, 51,151, 37,225,247,152,149, 27,151, +205,158,149,158, 26,191,177, 56, 43,238, 46, 0, 20,103,197,221,149,249, 54,248, 36, 39, 35,101, 86,110,214,227,101,207,123, 45, +138,139,139,211,182,111,223,238,214,177, 99, 71,206,215,215, 23,217,217,217, 56,119,238, 28,207,243,124,149, 19, 64,151, 71,157, +251,248, 28, 33,117, 61,126,252,238,235, 47,157,228, 46,253,205,102,115, 0,165,128, 80, 40, 76, 55,104,138, 78,168, 56,249, 7, + 52, 47,161,138,247, 37, 79, 0,112, 37,115, 23,242, 60, 79,190, 92,179, 37, 81, 36,113,177, 59, 63,162, 73,167,146,241, 60,239, +240, 92,135,249, 73,215,235, 86,247,188, 42,130, 80,186,160, 89,171,118, 31,153, 76, 70, 29,172,249, 98, 58, 0, 58, 74,145,203, +113,228,188,128, 55,157,116,100,106,181, 10,245, 9, 92, 41, 17,194, 69, 42, 4, 1,129,186, 48,143, 86, 39, 39,203, 30,197,153, +177, 49,132,116, 11, 57,110,216, 51,246,236,207,199, 70, 88, 44,150, 90,182,119, 78,130, 94, 91,188, 87,157,238,254, 35,165,215, + 94,108,216,250, 63,131,200, 18,179, 85,161,209,178,153, 42,135, 39,187,252,191, 34, 55,190,234,106,181,213, 33, 61, 51,111, 75, +159,151,103,209,132,196,172,171,201, 25,250, 31,105,153,105,117, 94, 84,243,201,147,236,115,182,238,194,103,194,251,207, 59,186, +176, 4,163, 78,251,191, 85,243, 70, 65,167, 45,222,170,201,138,219,242, 34, 90, 37,216,140,212,121, 66,136,114,250,244,233, 45, + 20, 10,133, 40, 39, 39,231, 10,165,180,240,121, 53,213,153,113,231, 0,156, 3,240, 66,119,224, 37,220,184,113,227,113,243,230, +205,183,113, 28, 87,139, 82,234, 75, 41, 85,194,106,100,115,132, 66, 97,234,189,123,247,170,253,101, 14, 0, 84,239,114, 92,109, + 16,212, 55, 83,247, 19,229,255, 39,242,244,249, 57, 41,207,242,189, 64, 46,249,219,228, 24, 20,103,198,198, 0,248, 19, 42,245, + 62, 77,101,117,178, 28,165,172,225,138,138,252, 97, 28,231,172, 92,244, 82,168, 78,211,123,102,234,194,139,119,178,175, 80, 74, + 29,174,182,253,172, 54,205,118,118,118,214, 18, 66,130,156,156,156,180, 6,131,225,246,243,232,216, 76,254,115,141, 76,172, 8, + 30,228,122,203,150,142,127, 61,241, 32,149,154, 99,155,209,217, 98, 91,254, 84,212, 25, 15, 22,194,214,253, 93, 22, 77,102,220, + 34, 0,139, 94, 68,251,218,181,107, 71,150, 45, 91, 86,184,102,205,154, 96,139,197, 34, 51, 24, 12, 26,173, 86,155,144,146,146, +242,219,243,232, 81,250,200, 0,224, 29,219, 82,109, 52, 57, 15, 50, 20,190, 13, 86,119,104,223,225, 29, 0, 32,160,171, 19,206, +175,126,183,178, 99, 20,190, 13,180,101,247,175,108,174,195, 63, 19,117, 86,220,122, 0,235,255,178, 39,160,124,246,152,225,131, + 1, 91, 97,110,222,108,126,238, 50, 30, 79,201, 90, 63,243,155,240,156,147,164,255, 27,160,148,166, 3,216, 0, 88,135, 60,254, +101, 79,228,104,190, 10,211,100,154, 76,243,191,165,233,200,236, 4,213,213,116, 20,166,201, 52, 1,235, 60,187, 0,224,200,164, +235, 21,237,255, 79, 61,247,191,171,230, 63, 25, 82,110, 66,105,224,143, 81,136, 14,207, 28,206, 96, 48, 24,127, 22,213, 25, 17, +199, 96,252, 21, 56,106,176,158,119,127,198,127,139,138, 74, 59, 0,214,180,166,158, 21, 28,228,176, 83, 37,132,216,213,168,162, + 81,149,234, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,223,167, 89,149,246, 63, 49, 82,102, 39,162, 21,105,235, 62,180, 22, +102,251,171, 22, 0, 61,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 75, 11,128,201, 37,143, 29,159, 59,134,193, 96, + 48, 24, 12, 6,131, 81, 45, 88,142, 22,131,193, 96, 48, 24, 12,198, 11, 96,175,235,176,228, 1, 51, 90, 12, 6,131,193, 96, 48, + 24, 47, 0,173, 36, 25,158,117, 29, 50, 24, 12, 6,131,193, 96,188, 0, 37, 17, 45, 66,136, 63, 33,100,114,217, 8, 23, 51, 90, + 12, 6,131,193, 96, 48, 24,127, 2,148,210,244,242,209, 45, 66, 41, 69,100,100, 36,141,136,136, 32, 0,158,122,204, 96, 48, 24, + 12, 6,131,241,255,131,127,178, 23, 33,132,248, 3,136, 40,179,169,180,188, 67,105, 68, 43, 50, 50,242,175, 43, 17,207, 96, 48, + 24, 12, 6,131, 81, 5,255, 84, 47, 82, 18,201, 42,179,148, 78,154, 93,106,180, 34, 34, 34,200, 63,245, 4, 25, 12, 6,131,193, + 96,252,243,249, 55,122,145,167,114,180,254, 73, 97, 58, 6,131,193, 96, 48, 24,255, 62,254,109, 94,132,149,119, 96, 48, 24, 12, + 6,131,193,120, 1, 42,203,209, 34,182, 82,241, 12, 6,131,193, 96, 48, 24,140,231,128, 16, 50,185,236,104,195,178,235, 44,162, +197, 96, 48, 24, 12, 6,131,241,130,216,169, 14,111,221,206, 34, 90, 12, 6,131,193, 96, 48, 24,127, 13,127,105,193, 82, 66, 72, + 79,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 51, 37, 21,225,109,143, 39,219,114,182, 0,176,202,240, 12, 6,131, +193, 96, 48, 24, 47, 74, 4,165,116, 67,153,220,172,210,196,120,102,180, 24, 12, 6,131,193, 96, 48,254, 4,236, 77, 46,205,140, + 22,131,193, 96, 48, 24, 12,198, 11, 80,222, 96,149, 93,103, 70,139,193, 96, 48, 24, 12, 6,227, 47,130, 25, 45, 6,131,193, 96, + 48, 24,140,191, 8, 2,192,238,200, 1, 74,233,105,135, 69,158, 99,244, 65, 85,250, 76,147,105, 50, 77,166,201, 52,153, 38,211, +252,247,105, 86,165, 93, 29,255,241,119,161, 76,101,248, 72,219,223, 63,186, 15, 41,165,127,217, 2,160, 39,211,100,154, 76,147, +105, 50, 77,166,201, 52,153,230,191,121, 1, 48,185,236,223,178, 11,235, 58,100, 48, 24, 12, 6,131,193,120, 65,202,213,209, 42, +173, 18,207,166,224, 97, 48, 24, 12, 6,131,193,120, 1,168,157,178, 14, 37,176,136, 22,131,193, 96, 48, 24, 12,198, 11, 80,126, +158,195,178,235,204,104, 49, 24, 12, 6,131,193, 96,252, 9,216,155, 88,154, 25, 45, 6,131,193, 96, 48, 24,140, 23,164,108,142, +214, 83,219,109, 89,242,136,140,140,164, 17, 17, 17,228,255,160,109, 12, 6,131,193, 96, 48, 24,255, 74, 47,194, 1,127,156, 88, +100,100, 36,253,191,110, 16,131,193, 96, 48, 24,140,255, 30,255,100, 47, 66, 8,241, 47, 25,109,104, 91,252, 75,254,199, 70, 29, + 50, 24, 12, 6,131,193, 96,188, 24, 17,101, 71, 30,218,186, 15, 55, 0,204,104, 49, 24, 12, 6,131,193, 96,188, 48,246, 18,225, + 1,150,163,197, 96, 48, 24, 12, 6,227,111,194,191,209,139,148, 26, 45, 6,131,193, 96, 48, 24, 12, 70,245,177, 23,205, 42,233, + 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 79,128, 16, 50,185,124,149,120, 86, 71,139,193, 96, 48, 24, 12, 6,227, 5,177,103, +178,128,191,216,104, 17, 66,122, 50, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254,155, 41, 63,161, 52,155, 84,154,193, 96, + 48, 24, 12, 6,227, 79,130, 77, 42,205, 96, 48, 24, 12, 6,131,241, 23,193, 38,149,102, 48, 24, 12, 6,131,193,248,139, 97,147, + 74, 51, 24, 12, 6,131,193, 96,252, 5, 84, 52,169, 52,203,209, 98, 48, 24, 12, 6,131,193,120, 1, 42,203,209, 34, 0,236,142, + 28,160,148,158,118,244, 9,158,103,244, 65, 85,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,247,105, 86,165, 93, 29,255, +241,119,229,169, 82, 15,148,210,191,108, 1,208,147,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,191,180, 0,152, 92,242, +152,117, 29, 50, 24, 12, 6,131,193, 96,188, 0, 21, 77, 40, 13,176, 28, 45, 6,131,193, 96, 48, 24,140, 23,130,178, 58, 90, 12, + 6,131,193, 96, 48, 24,127, 13,132, 16,127, 91, 69,248,146,191, 45, 74,254,199,140, 22,131,193, 96, 48, 24, 12,198,139, 17, 97, +139,106,149,252,101, 70,139,193, 96, 48, 24, 12, 6,227,207,162,162, 58, 90,132, 82,138,200,200, 72,106, 91,239, 22, 17, 17,113, +254,255,119,227, 24, 12, 6,131,193, 96,252,183,249,183,122,145,210,136, 86, 68, 68, 4, 1, 16,245,127,216, 22, 6,131,193, 96, + 48, 24,255, 97,254,141, 94,164,212,104,217,156,100,183,255,195,182, 48, 24, 12, 6,131,193,248, 15,243,111,244, 34,165,229, 29, +108, 46,146,193, 96, 48, 24, 12, 6,227,255,132,127,170, 23, 33,132,248, 3,136, 0, 16,105,251, 91, 90,242,129,213,209, 98, 48, + 24, 12, 6,131,193,120, 49, 34, 40,165, 27,158,154,122,199, 6,177,149,138,103, 48, 24, 12, 6,131,193, 96, 60, 7,246, 42,195, +151, 24, 46,102,180, 24, 12, 6,131,193, 96, 48,254, 34, 88,215, 33,131,193, 96, 48, 24, 12,198, 11, 82, 54,170, 85,182,251,240, + 47, 45, 88, 74, 8,233,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249,111,166, 36, 55,171,100, 41,107,186, 88,101,120, + 6,131,193, 96, 48, 24,140,191, 8,214,117,200, 96, 48, 24, 12, 6,131,241, 2,148,143, 98,149,237, 58,100, 70,139,193, 96, 48, + 24, 12, 6,227, 5, 41, 95,214,161, 4,214,117,200, 96, 48, 24, 12, 6,131,241, 2,216, 43,239, 80, 2, 51, 90, 12, 6,131,193, + 96, 48, 24,127, 2,246, 12, 23, 1, 96,119,228, 0,165,244,116, 53,132,171, 61,250,160, 42,125,166,201, 52,153, 38,211,100,154, + 76,147,105,254,251, 52,171,210,174,142,255,248,187, 80, 89,193, 82, 80, 74,255,178, 5, 64, 79,166,201, 52,153, 38,211,100,154, + 76,147,105, 50,205,255,234,194,186, 14, 25, 12, 6,131,193, 96, 48,254, 34, 28, 54, 90,132, 16,111,145, 72,244,145, 76, 38,251, + 70, 38,147,125, 39, 18,137,150, 17, 66,220,171,251,132, 10,133, 98,134,191,191,255, 3,127,127,255,148,144,144,144, 99,174,174, +242,153,117, 37,164, 11, 33, 68, 84, 93, 45, 59,109,228, 8, 33,161,132,144,153, 50,153,236,190, 84, 42, 77, 36,132,108, 35,132, +204, 36,132,120,189,136,246,162, 64, 50, 44,102,230,203, 7, 23, 5,146, 97,229,158, 51,194,207,207,239, 34, 33,164,247,139,181, +254, 15, 70,203, 73,207, 17, 10,146, 60, 66, 65,146, 71,203,159,191, 40,156,171,171,235,107, 1, 1, 1,151,188,188,188, 82, 3, + 2, 2,126,149, 74,165,195,171,115, 60, 33,196,199,207,207,239,171,224,224,224,184,192,192,192, 85,182,217,201,255,182,116,145, +144,206,237, 37, 36,187,131,152,168, 58,137,201, 55, 29,196,164, 87,111, 66,100,207,163, 69, 8,233, 68, 8,249, 73,169, 84,222, + 20,137, 68, 71, 9, 33, 67,109,239,175,161, 34,145,232,168, 82,169,188, 73, 8,249,137, 16,210,233, 57,180, 57, 66,200, 87,132, +144, 84, 66,200, 23,182,245,183,131,131,131, 85,205,154, 53, 75,108,214,172,217, 15,245,235,215,127,221, 81, 61,185, 92,222, 43, + 56, 56,120, 95, 72, 72, 72, 98,135, 14, 29,242,106,212,168, 17, 27, 20, 20,180, 69, 34,145,116,171,110,219, 24, 12, 6,131,241, + 39,227, 64,120,112, 32,128, 37, 0,214,222,190,125, 59,154, 82, 26, 77, 41,141,190,125,251,118, 52,128,111, 0, 44, 69, 5, 33, +196,242,219, 61, 61, 61, 23, 44, 90,180, 72,151,158,158, 78,179,179,179,105, 92, 92, 28, 93,249,241,108,190,143,135,144,214,241, +118,215,248,251,251, 63, 10,169, 81, 99, 87, 35, 5, 55, 27, 64,221,234,132, 43, 1,184, 75,165,210, 43, 31,127,252,177,250,226, +197,139,106,131,193,160,230,121, 94,157,150,150,166, 62,125,250,180,186, 99,199,142,106, 0,239, 2, 16, 60, 79, 8,244,243, 0, +156,167,155, 62,161,159, 7,224,124,217,237, 97, 97, 97,247,120,158,167,195,134, 13,211, 3, 8,124,145,176,106, 32, 32,105,228, + 10,183,225, 10,100,154,183, 44,164,116,221, 44, 58, 92,142,228,231,209,244,241,241, 57, 52, 99,198,140,162,212,212, 84,170,215, +235,105,114,114, 50,157, 50,101, 74,161,143,143,207,118, 7,175,167,103,147, 38, 77, 50, 47, 93,186,196, 23, 20, 20,208,168,168, + 40,190,113,227,198,153, 0,252, 29,120,207,244, 44,215,150, 13, 1, 1, 1,199,170,179,248,248,248,108,172,238,107,212, 86,140, +100, 99,244, 57, 74,175,157,162,135,135,181,167, 43, 91,213,160, 67, 61,156, 11, 58, 57,227,237,174,128,176, 26,239,165, 17, 93, +187,118, 45,190,115,231,142, 37, 55, 55,151,222,187,119,143,159, 52,105,146, 14, 64,204,164, 73,147,116,247,238,221,227,115,115, +115,233,157, 59,119, 44, 93,187,118, 45, 6,240,134,163,237,132,245,230,102,243,103,159,125, 70, 41,165,116,209,162, 69,180,105, +211,166,180, 71,143, 30, 84,173, 86, 83, 74,105, 34,165,244, 7,179,217, 60,206, 17, 77,165, 82,249,218,140, 25, 51,212, 26,141, +134,150,192,243, 60, 45, 40, 40,160,107,215,174, 45,246,243,243, 59, 6,192,235,121,222,243,213, 93,152, 38,211,100,154, 76,243, +191,186, 0,240, 7, 48,185,204, 82,250, 91, 89,213,129,163,103,207,158, 93, 98,170,142,119,234,212,233,234,184,113,227,162,199, +141, 27, 23,221,169, 83,167, 40, 0, 39,175, 95,191, 30,253,225,135, 31, 70, 3, 24, 93,217, 11, 1,192,189, 67,135, 14, 5, 25, + 25, 25,180,126,253,250,180,102,205,154, 52, 35, 35,131, 82, 74,233,181, 17, 45,233,153,134,160, 79, 46, 28,167,167, 14,252, 68, + 39,249, 11,105,103,127,165,201,223,207, 47,215,203,203,107, 49,108,147, 95, 87,244,226, 2, 24,210,176, 97, 67, 85, 76, 76,140, +250,225,195,135,234, 5, 11, 22,168,123,244,232,161,110,210,164,137,122,232,208,161,234, 53,107,214,168,141, 70,163,122,227,198, +141,106, 87, 87,215,152,242,102,235, 69,140,150, 80, 40, 92,125,251,246,109,250,232,209, 35, 10,224,171,138, 52, 1, 40,221,220, +220,250,186,187,187,191,235,230,230,214, 23,128,146, 82,138,250,128,162,153, 18,193,111, 55,171, 19,118,116,116,207,186,107,123, +182,110, 57,220,133, 43, 48,125, 61,139,210, 97,193,207,101,180,148, 74,229,107, 51,103,206, 84,233,245,122,170,209,104,168, 90, +173,166, 26,141,134,170, 84, 42, 58,122,244,232, 34,137, 68, 50,164, 42, 77, 47, 47,175,133, 23, 46, 92, 48,103,100,100,208, 11, + 23, 46,208, 99,199,142,209,117,235,214,241, 62, 62, 62, 43, 28,120,195, 61,165,233,231,231,247,243,169, 83,167,162,111,220,184, + 17,125,229,202,149,104,147,201, 20,109, 52, 26,163,141, 70, 99,244,209,163, 71,163,247,239,223, 31,189,123,247,238,104,131,193, + 16,109, 48, 24,162,245,122,125,116,237,218,181, 79, 84,247, 53,106, 35,198, 19,195,197,195,148,174,120,147, 22,254,111, 26, 45, +120,175, 63,205,154,210,133,126,211,186, 6,237, 34,197,145,178,239,163,202, 52, 69, 34,209,249,196,196, 68,126,238,220,185,134, +240,240,240,194, 9, 19, 38,232,244,122, 61,165,148, 82,189, 94, 79, 39, 76,152,160, 11, 15, 15, 47,156, 59,119,174, 33, 33, 33, +129, 23, 10,133,167, 29,109, 39,128,165, 37, 38,235,252,249,243,180, 44,106,181,154,246,232,209, 35,177,105,211,166, 63,212,170, + 85,107, 76, 85,154, 10,133, 98,240,156, 57,115,212,212, 14, 38,147,137,170, 84, 42,154,144,144,192,215,172, 89, 51, 13,128,103, +117,175,103,117, 23,166,201, 52,153, 38,211,252,175, 46, 0, 38, 87,180, 94,233, 69,252,240,195, 15,163, 41,165,209,243,230,205, +139,134, 53,178,229, 4, 64, 97, 91,132, 0, 70,205,153, 51, 39,154, 82, 26, 61,123,246,236,104, 0, 3, 43,122, 33, 0, 12,220, +187,119,175,113,213,170, 85,212,215,215,151,250,249,249,209,213,171, 87, 83,158,231,105,198,209,237,244, 76, 67,208,251, 31,141, +165,148, 82, 26,183,248, 45,122,166, 33,232,227,245,159,211, 87, 95,125, 85, 35,147,201, 70,219,211,180,173,123,180,108,217, 82, +165,213,106,213, 91,182,108, 81,203,100,178,107, 0,194, 1,136, 96, 29, 85,169, 0,240,122,120,120,120,209,221,187,119,213, 59, +119,238, 84, 3, 88,224,200, 27, 6, 64, 93, 0,221,229,114,249,208, 57,129,162,135,116,211, 39,116,142, 47,238, 0,104, 12,192, +219,182, 79,192,236,217,179, 41,165,148, 6, 5, 5, 93,168,224,220,149, 77,154, 52,153,253,240,225,195,249, 38,147,105,254,141, + 27, 55,230, 55,104,208, 96,238,160,218,254,237, 15,142,238,213,162,240,243,105, 45,232,242,247,154, 44,235,215,166,231,174,145, +221, 70,143,175,229,117,113,130,143, 68,243,138, 82,160, 26, 37,123, 74,199,161, 55,118, 96, 96,224,149,228,228,228, 82,115,165, + 82,169,104,106,106, 42,141,143,143,167, 23, 47, 94,164,254,254,254,103,170,210,244,243,243,187,151,156,156, 76,215,175, 92, 73, +135, 53, 14,163, 93,220, 92,104, 87,119, 23,218, 74, 33, 41,110, 8,180,170,226, 13,247,140,209,186,121,243,102, 52,128,104, 0, +209,185,185,185,209,185,185,185,209,249,249,249,165,219, 0, 68, 23, 22, 22, 70, 23, 22, 22, 70, 27, 12,134,232, 58,117,234, 84, +219,104,117,148,160, 99, 91, 9,242,218,139,161, 29, 24,232,149, 54,173,182,151,229,242,232,246, 52,255,205, 30,116, 85,139, 64, +218,201, 25,111, 59,248,186, 15,116,118,118,142, 2, 48, 11,128, 0,192,216,190,125,251,106, 40,165,180,111,223,190, 26, 0, 99, +109,219,103, 10,133,194,211, 0,250, 58,210, 78, 0, 92,189,122,245,138, 41,181, 70,178, 0,252, 86,175, 94,189,226,166, 77,155, +210,166, 77,155,210,160,160, 32, 21,128,177, 85, 93,207,146,165,110,221,186,113, 90,173,150, 82,106, 53,128, 5, 5, 5, 52, 45, + 45,141, 62,126,252,152,198,196,196,208,107,215,174,209,196,196, 68,186,103,207, 30,139,155,155, 91,100,117,175,103,117, 23,166, +201, 52,153, 38,211,252,175, 46,120, 58,154, 53,217,174,209, 58,122,244, 40, 45,119,208,255,174, 95,191, 30, 61,103,206,156,232, +242, 78,173,188,248,188,121,243, 74,162, 94, 75, 42,218, 47, 48, 48,112, 99, 92, 92, 28, 29, 59,118, 44, 13, 13, 13,165,161,161, +161,116,220,184,113,180,176,176,144,170,127,191, 75,207, 52, 4,189,246, 74, 43, 74, 41,165,170,251, 55,232,153,134,160,209,175, +118,160,183,110,221,162, 53,106,212, 56, 85,201,243, 31,249,245,215, 95,179,183,111,223,158, 1, 96,155,205, 96,181, 3,176, 90, + 42,149,110,134,181,187,176, 38, 0,247,250,245,235,231,105, 52, 26,245,176, 97,195,212, 0,130, 43,209,236, 26, 26, 26,250,104, +227,198,141, 52, 43, 43,139,230,229,229,209, 47, 59, 54,160,116,211, 39,116, 81,171,154,252,250,245,235,245,179,102,205, 42,246, +240,240, 56, 10, 32, 96,216,176, 97,102, 74, 41,237,210,165, 75,166, 61, 61, 55, 55,183,190, 15, 31, 62,156,175,211,233,230, 23, + 20, 20,204,207,203,203,155,127,248,224,193,249,125, 26, 55, 24, 91,248,249,180, 22, 7, 71,247,106,209, 47,208,125,232,138,222, +173,167,166,206,125, 99,216,188, 14,225,247,117, 75,223, 57, 55,162,182,239, 87, 21,181,177,178,197,219,219, 59, 93,175,215, 83, + 0,207, 44,143, 30, 61,162,158,158,158,201,255,143,189,243, 14,139,234,218,218,248,187,103,206, 20, 96,128,161, 51, 52, 81, 41, + 98, 3, 68, 99, 23, 77,236,177, 43,246,114,173,137,229,106, 52,106,140, 5, 36, 81, 99,137,177,197, 36, 38,182,136, 70, 44,196, + 24,177,199,130, 26, 43, 40, 2,162, 32, 72,147, 94,102,134, 25,134,233,251,251,131,242, 17,165,154,228,222,155,228,252,158,103, + 63, 48,115,246,121,207,218,103,206, 97, 22,251,172,189, 86, 67, 26, 54, 54, 54,171, 62,152, 48,222, 48,170,185, 11,125,190,125, + 53,213, 93,250,129,234,206, 30,164,201,155,150,208,225, 18, 59,121, 87, 62,103, 69, 99,237,145, 72, 36,151,238,222,189,251, 27, + 71,171,164,164,164, 86, 71, 75, 46,151, 71,107, 52,154,104, 47, 47,175,243,111, 50,246,154,173,171, 0, 30,189, 77,185,247, 99, +166,245,162, 5,115,223,161,131,196,188,180,223,113, 19, 77, 0,112, 13,192,228, 38,238,199, 1,176,177,202,161,218,180,105, 19, +165,148, 82, 47, 47, 47, 37, 0,206,239,176, 71,220,186,117,235,212, 89,179,102,233,219,180,105,147,223,163, 71, 15,233,189,123, +247,232,245,235,215,233,217,179,103,233,137, 19, 39,104, 92, 92, 28,125,249,242, 37,125,246,236, 25, 29, 50,100,136, 20, 64,239, +223,123, 78,217,198, 54,182,177,237,207,108,175,250, 34,127,135,198, 1,128,200,200, 72, 58,100,200, 16, 18, 25, 25, 73, 1,128, + 16, 34, 6, 96,210,169, 83,167,130,141, 27, 55,110,165, 21, 53,124,136, 31, 67,198,246, 53,227, 61,234,107,198,123,228,199,144, +177,132, 16, 66, 41,253,118,253,250,245,159,250,249,249,229, 0, 48, 37,132, 72, 80, 11,148,210, 94,182,182,182,200,200,200,128, + 88, 44,134, 88, 44, 70, 70, 70, 6, 40,165,208, 83, 64, 71, 1,181, 86, 11,149, 74,133,114, 35,133,202, 8,200, 21, 10, 72, 36, + 18,104,181, 90,143,218, 52, 9, 33,254,227,198,141,243,240,245,245, 45, 88,190,124,121, 54,128, 89, 0,246,207,156, 57,243,210, +175,191,254,234,171, 80, 40,138,227,227,227,203,219,183,111, 63, 8,128, 36, 41, 41,105,202,174, 93,187, 48,109,218, 52, 0,232, + 93,135,102,251, 33, 67,134,156,141,139,139,243,152, 60,121, 50,174, 93,187,134,205,155, 55,163,176,176,144, 2,128, 90,173,166, + 6,131, 65,219,189,123,119,237,246,237,219, 59, 7, 6, 6,222,109,217,178, 37, 23, 0, 82, 83, 83,147,235,208,108,229,238,238, + 14,181, 90,141,130,130, 2,196,197,197,193, 66, 44, 70,108,118,161, 99,159, 47,190, 46, 90,121,234, 18,111, 66,103, 95,155,197, +253,123,168, 55, 92,188,230,221,214,217,209, 81,163,213, 73,158,229,228,101,215,166,215, 16,124, 62, 63,163,176,176, 16, 26,141, + 6, 42,149, 10,114,185, 28, 69, 69, 69, 40, 44, 44, 68,118,118, 54,248,124,254,243,134, 52, 44,139,139,163, 82,111, 93, 39,199, +190,217, 4, 15,125, 49,152,147, 59,192,252,244, 21, 60, 53, 5,216,179,250, 61, 11,141,173,253, 90,177,165,101,137,181,181,245, +183,132, 16,175,134,244, 2, 2, 2, 80, 84, 84,132,162,162, 34,216,218,218,194,218,218, 26,214,214,214,144, 74,165,144,201,100, +144,203,229,240,246,246,134,191,191, 63, 14, 29, 58,244, 38,195,126,141,219,106,154,162,135, 97,238,165,167,217,224,139, 68,104, +105,109,238,222,217,130,216,212,213,159, 16,242, 14,159,207, 63,110,107,107,123,145, 16, 50,159, 16, 34, 34,132,204,183,181,181, +189,200,227,241, 70, 2, 88, 71, 41, 61,220, 68, 51, 54,172, 93,187,246,163,164,164, 36,179, 71,143, 30, 97,249,242,229, 8, 13, + 13, 69,114,114,242,151,148, 82, 99,229,113,231,217,217,217,157,225,114,185,223, 17, 66,222, 37,132, 12,114,118,118,238,219,128, +238,200,165, 75,151,150,119,236,216,241,217,147, 39, 79, 70,222,186,117,171,211,146, 37, 75,100,233,233,233,120,246,236, 25,156, +156,156,224,230,230, 6,133, 66,129,146,146, 18,140, 28, 57, 82,108,105,105, 57,177,137,182,179,176,176,176,252,199,120,213, 23, +249, 43,241,106, 30,173,154,175,107, 93,117,104,102,102,182, 54, 58, 58,186,155,159,159, 31, 3,224, 24, 0,248,114, 17, 52,178, +123,135,253,167,190,221,228, 23,177,125,181,223, 64, 63,239,253,190, 92, 84,173, 98, 59,211,169, 83, 39,235,232,232,232,238, 66, +161,240,223,117,216, 81, 17,168,101,109, 13,177, 88, 12, 43, 43, 43, 88, 91, 91,195,104, 52, 66, 81, 86, 14,165, 1, 40, 45,215, + 64, 38,147,161,180,242,181, 66,173,133, 82,169,172,222,183, 22,250,204,154, 53,171, 96,215,174, 93,249, 57, 57, 57,155, 0,180, +159, 54,109,218,136,157, 59,119,226,202,149, 43,229,239,250,120,218,174,239,213,225,211,182, 57,201, 33, 62, 60,204, 6, 16, 21, + 21, 21,133,238,221,187,131, 16, 50,190, 54, 65, 83, 83,211,175,142, 30, 61,106, 26, 31, 31, 15, 79, 79,207,248,241,227,199,143, +221,180,105,147,135, 72, 81,124, 19, 0,244, 69,185,241, 11, 22, 44, 88,179,126,253,250,130,130,130, 2,109, 89, 89,153,195,240, +225,195,145,145,145,129,151, 47, 95,254, 90,235,192, 41,125, 22, 19, 19, 67,101, 50, 25, 82, 82, 82, 16, 19, 19, 99,186,102,205, +154,206, 6, 14,103, 68, 22, 44,166, 79,235,209,169,243,228,174, 29,112,248,246, 35,254,141,167,169, 86,157,154,187, 88, 63,204, +204,105,161, 35,104,208, 33,170,141,210,210,210, 29,159,126,250,169, 66,161, 80, 32, 43, 43, 11,143, 31, 63,198,147, 39, 79,144, +150,150,134,205,155, 55, 43,138,139,139,119, 54,164,225,108,194,124,184,101,201, 76,194, 36,252, 10, 60,186, 14,148,149, 2, 42, + 5,212,137,209, 56,144,152,139,221, 39,127, 20,164,103,100, 88,133,135,135,207,106,214,172, 89, 52, 33,196,187, 62, 61, 74, 43, + 62, 66, 14,231,183,151, 28, 33, 4, 28, 14,167, 20, 64,174, 72, 36,202,180,176,176,200,228,112, 56,185,148, 82,229,155,140,253, + 85, 56,122,104,193,229, 2, 2, 83,112,120,117,151,246, 36,132,140, 29, 63,126,252,209,204,204,204,129, 41, 41, 41,221,118,238, +220,249,169,137,137, 73,236,206,157, 59, 63, 77, 73, 73,233,150,153,153, 57,112,252,248,241, 71, 9, 33,141, 94, 13, 8, 0, 94, + 94, 94, 11, 66, 66, 66,176,121,243,102,248,251,251,195,219,219,187,108,237,218,181, 59, 0,172, 38,132,252,219,219,219,251,230, +130, 5, 11,102,228,231,231, 75,178,178,178,252,191,252,242,203,247,118,236,216,241, 86,118,118,182, 73, 3,210, 61, 7, 12, 24, +179,227,101,243, 0, 0, 32, 0, 73, 68, 65, 84,128,115,231,206, 1, 64, 14,165, 52,165,168,168, 72,159,157,157,141,214,173, 91, +163,115,231,206, 80, 40, 20, 80, 40, 20,144, 74,165,112,119,119,135,209,104,236,214, 20,219, 89, 88, 88, 88, 88,154, 70,109,137, + 75,107,117,180, 76, 76, 76,172, 3, 2, 2,208,178,101, 75,107, 84, 22,158,182, 21, 48, 31, 47,158, 53,193,204, 60,250, 60, 72, +204, 47, 24,223,171,157,153,173,128,249,184,114, 23,198,221,221, 93, 24, 16, 16, 0,145, 72,228, 82,199,241,175,229,230,230, 34, + 32, 32, 0, 86, 86, 86, 16,139,197, 8, 8, 8,128, 86,171,133,172,180, 20, 74, 3, 80,166, 51, 66, 38,147,161,184, 32, 15,101, + 6, 64,111, 97,139,180,180, 52,112,185,220,212, 58, 52,157, 60, 61, 61, 11, 98, 99, 99, 11, 0, 68, 1,120, 63, 52, 52, 20, 43, + 86,172, 64,112,112,240, 81,179,156, 23, 3,142,158,251,201,246,200,218,121,246,222, 2, 50, 1,128, 54, 51, 51, 19, 86, 86, 86, + 16,137, 68,181, 58, 6,129,129,129, 29, 69, 34, 17, 14, 30, 60, 72,179,178,178,122, 80, 74, 79, 80, 74, 83, 9,169,112,246, 76, + 57,144, 81, 74,119, 68, 71, 71,119, 89,179,102,205,211,126,253,250,241,186,118,237,138,117,235,214, 1,192,153,218, 52,165, 82, +233,157,169, 83,167,106,174, 94,189,138,196,196, 68,209,169, 83,167,130,214,173, 91,215, 46, 61, 61, 93,248,243,217,243,131,195, + 50,229, 65,155, 46,222, 48, 89,127,225,218, 29, 59, 75, 81,219, 22,118, 54,136, 73,127,201, 55,112,113,175,142,113, 87,211,149, +207,204,122,219,148, 23, 19,104,194,205,121,219,148, 23,221,153,207,204,148,203,229,225,167, 79,159,190,176,100,201, 18, 69,126, +126, 62, 44, 44, 44, 80, 84, 84,132, 13, 27, 54, 40, 98, 98, 98, 78,170,213,234,159, 27,210, 53, 24,105, 71,183,230,205,128,231, +177,213,239,105,141, 20,247, 52,124, 12,125,127, 17,124, 90,183,134, 70,163, 65,251,246,237, 73,104,104,168, 72, 44, 22, 47,107, + 72,243, 85, 39, 11,128,158, 16,146, 75, 41,125,169, 80, 40,178, 76, 77, 77,211,249,124,126,122,113,113,113, 22,165, 52,175, 33, +189,134, 32,132,112, 40, 7, 31,118,111,239, 5, 8, 77,145, 94,164,200,190, 87, 74,139,107,235,107, 97, 97, 49,115,247,238,221, + 38,251,246,237,211, 45, 88,176, 64,253,222,123,239,241, 84, 42,149,195,123,239,189,199, 91,176, 96,129,122,223,190,125,186,221, +187,119,155,152,155,155,143,126, 19, 91,116, 58, 29, 98, 99, 99, 55, 37, 37, 37,137, 40,165, 31, 0, 88,180,118,237,218,105, 73, + 73, 73, 38,187,118,237,194,137, 19, 39,112,226,196, 9,140, 24, 49, 2, 11, 23, 46, 68, 72, 72, 72,125,227, 50,243,243,243, 11, +176,181,181,197,245,235,215,179, 41,165,233,132,144,142,230,230,230, 22, 35, 70,140,192,192,129, 3, 81, 94, 94, 14,173, 86, 91, +237,104,113,185, 92, 88, 89, 89,217,190,137,237, 44, 44, 44, 44, 44, 13, 83,229,100,189,234,108, 49, 0, 80, 53, 85, 55,100,200, + 16, 82,115,227,171, 95,140,134,146,124, 72,149,101, 72,147,149, 33,163,196,248,155,109, 70,227,111, 95,191, 74,118,118,246,207, +183,111,223,158, 25, 16, 16,192,100,103, 87, 60, 17, 11, 8, 8, 64, 89, 89, 25,178, 31,221,133,210, 8,136, 60,125,161, 84, 42, + 81,242,228, 33,204,253,186,193,118,200,100,124,177,107,151,186,168,168,232,155,218, 52, 5, 2, 1,207,213,213,181, 32, 53, 53, + 85, 15,160, 88, 44, 22, 15,104,214,172, 25,174, 93,187, 6, 0,135, 41,176, 5, 49, 87,129,235, 17,160, 21, 83, 42,230,238,238, +238,200,207,207,135, 66,161,184, 86,155,230,237,219,183,147,116, 58, 93,251,225,195,135,147,239,191,255,254, 24, 33, 36, 24,192, +227,149, 18,112, 31,101,230, 65,105,128, 9, 33,164,191,181,181,245, 7, 33, 33, 33,125, 23, 44, 88,128,211,167, 79,227,226,197, +139, 90, 84,196,130,221,126, 85,147, 82, 42, 35,132,236, 89,186,116,105, 87, 14,135,243,254,165, 75,151,244,222,222,222,114,173, + 86,107,104,229,227,195, 9, 14,253,132, 63,255,253, 57, 86, 69,101, 72, 24,216,202,169, 59, 33, 64,194,203,252,244,164, 82, 90, + 84,223, 57,237, 45,100,206,140,239,229, 23, 56,115,252, 48,115,145,103, 91, 40,227,238, 74,246, 28, 63,251, 69, 31, 83,102,104, +158, 74, 63, 66, 44, 22, 7, 93,187,118,109,190, 70,163,105, 41, 20, 10,159, 75,165,210,237,165,165,165, 13, 58, 89, 12,195, 12, +241,117,115,181,150, 22, 23,195,164,114, 38, 74,174, 51,162, 80,173, 71,162,149, 55, 38,186,186, 85, 63, 6,205,205,205,133, 68, + 34, 33, 6,131, 97, 88,125,154, 23, 47, 94,196,208,161, 67, 1, 0, 82,169, 20,132, 16, 16, 66, 10,125,124,124,242,132, 66, 97, + 17,159,207,151,111,217,178,165,188,188,188, 28, 12,195,152, 24, 12, 6,110, 67,118,214, 71, 23, 17,113, 8, 52, 37, 95,189, 55, +252,237,126,254,109, 91,211,168,251,143, 72, 73, 89,249,129,186,250,151,150,150,126,233,229,229,197, 20, 23, 23,255, 12, 32, 81, +167,211, 29, 57,118,236,152,201,148, 41, 83,202,143, 31, 63, 62, 9,128,199,214,173, 91,131, 20, 10, 69,173,213,217,235, 34, 57, + 57,249,203,245,235,215,127,180,106,213, 42, 28, 58,116,104, 1,128, 21, 0,224,229,229, 53, 34, 36, 36, 4, 91,182,108,193,161, + 67,135,140,137,137,137,103,141, 70, 99,242,146, 37, 75,252, 28, 29, 29, 11,115,114,114,146, 67, 67, 67,235,146,237, 52,104,208, + 32,245,205,155, 55, 5,165,165,165, 55, 8, 33, 31,204,157, 59,119, 86,151, 46, 93,228,227,199,143, 55, 47, 46, 46,150,154,153, +153, 9,246,238,221,107,205, 48, 12,148, 74, 37, 8, 33, 40, 45, 45,213, 52,197,118, 22, 22, 22,150,255, 36,117,249, 34,127, 5, +104, 85,185,157, 90,168,126,150, 82,115,128,101,101,101,121, 25, 25, 25,173, 95,190,124,169, 7,160, 7,128, 34,141,254,179,245, +123, 35,246,141,238,234, 37,202,209,233,112,234,126,124, 89,145, 70,255, 89,229,238,250,151, 47, 95,150,166,167,167, 91,168, 84, + 42, 69, 29,199,250,245,171,175,190, 82, 93,189,122,213, 34, 37, 37, 5, 6,131, 1, 29, 59,118,196,179,103,207, 80,146, 24, 11, + 81,235,142, 16,245, 30,138,248,232,251,136,185,120, 25, 47, 20, 26,253,211,213,235,101, 10,165, 50, 68,163,209,156,170, 77,144, +199,227, 21, 87,140,143, 26, 0, 64, 46,151, 63, 86, 40, 20,189, 28, 29, 29,145,144,144, 32, 82, 26,176, 48,232,227, 47,118, 82, + 74, 13,252,138,149, 98,139,199,143, 31,143, 7, 15, 30, 0,192,131,218, 52,229,114,249,130,217,179,103, 95, 61,120,240, 32,147, +146,146, 50,112,223,190,125, 3,159, 62,125, 74, 73,113,134,225,102, 25, 15, 30,211, 22,190,245,181,187,207,197,161, 67,135,194, +201,201, 9,123,247,238,197,246,237,219,117,243,230,205, 75,218,190,125,251, 91, 0,142,212,241, 33,200, 0,156,183,179,179,155, +223,174, 93,187, 82,165, 82,137,162,162, 34,100,103,103,195,198,214,150,163, 7,167,187,189,149,213,145,159,115, 75, 69,204,249, + 59,184,155,149, 83,239,108, 86, 55, 62, 51,117, 66,159, 14,129,255, 94,245,177, 57,110,158, 2,153, 29, 2,186,239, 83, 44,250, + 87,144, 69,185,250, 72,239, 78, 12, 51, 69,166,215,135, 1, 56, 81,159,206,171, 16, 66, 6,245,234,213,235,232,250,245,235, 77, + 87,110, 94,143,173,173, 93,160, 47, 42, 66,129,218,128, 66,181, 30,242,146, 68, 36, 36,196,195,214,214, 14, 47, 94,188, 64,121, +121, 57,158, 60,121, 66,185, 92,110,189, 14,156, 78,167,171,121,140,170,199,133, 82,161, 80, 88,196,227,241,242, 24,134, 41, 78, + 73, 73, 81,150,151,151,131,195,225,136, 12, 6,131,105, 35,108,117,181,179,179, 91, 2, 96, 52,128,211,165,133,133, 59, 2,120, +176, 2,131, 62, 45, 29,108, 7,175,126,111,138, 93, 51,103, 7,105, 74,210,115,221, 55, 23,110, 21,150,171,241, 89, 93, 90,148, +210, 51,168, 49, 35, 73, 8, 89,116,252,248,241, 89, 0,246,211,138,186, 91,151, 1,124,221,144, 77,181,176,250,228,201,147, 31, +173, 90,181, 10,166,166,166,213,201, 83, 77, 77, 77, 77, 0,224,135, 31,126, 64, 66, 66, 66,151,170,120, 45, 0, 71, 27,161,233, +225,235,235,155, 18, 17, 17, 33, 0,224, 60,119,238,220,110, 59,119,238,196,191,254,245,175,130,248,248,248,174, 21, 51,176,196, +227,253,247,223,191,119,232,208, 33,107,163,209,136,146,146, 18,104, 52,154,186,102,134, 89, 88, 88, 88,254, 39,248,171, 58, 91, +132,144, 0, 74,105, 76,101, 98,239, 33, 0, 34, 41,165, 57, 64, 13, 71, 11,168, 24, 32, 0,148,151,151,127,233,238,238, 46, 6, +224, 6, 96, 40,128,211,143, 13, 56,129,167,105,136,125,145,245, 49, 80,225,120, 61, 54, 84,127,137,143,187,119,239,158,166,121, +243,230,143, 0,124, 90,155, 17,148, 82,185,157,157,221,186, 37, 75,150,108, 88,183,110, 29,195, 48, 12,174, 94,189,138,219, 23, + 34,141, 79,110,220, 37,105, 42,131, 74,126,127,233, 75,134, 26,238, 56,170,138,227, 30,150,225, 36,165, 52,171,190,129, 41,149, +202,140,228,228,100, 65,187,118,237, 12, 15, 31, 62,180,163,148,254,120,246,236,217, 94,203,151, 47,199,181,107,215,142, 92, 42, + 55, 76,164,212,120,140, 16,194, 0,152, 56,108,216,176, 15,130,130,130,224,239,239,175, 5, 80,107,196, 53,165,244, 38, 33,100, + 98,102,102,230,158,101,203,150, 89, 45, 91,182, 12, 28, 14,135,212, 60, 87,133,133,133,120,244,232, 17,198,143, 31, 47,187,117, +235,214,194,190,125,251,206,232,217,179, 39,206,157, 59,231,220,136, 15,227,215, 39, 79,158,140, 18,139,197, 36, 57, 57, 25,114, +185, 28, 55,111,222,228,185,187,187,119, 63,118,236,152,176,101,203,150,136,143,139,195,217,137, 19,135, 16, 66,220, 41,165,233, +181,233,152,242,200,252,105, 99,135,153,171,111,254, 12,196, 68, 1, 0, 20,242, 82,168, 94,196, 34,168,179,151,229,181, 39,105, +115, 81,177, 10,179, 73,216,216,216, 44,218,186,117,171,200,219,219, 27, 31,174,223,140, 37,171,150,227,125, 7,119,200, 95,102, +160,208, 0, 8,204,204,176,110,245, 42, 12, 27, 59, 30, 14, 14, 14,136,139,139,163,123,247,238, 85,202,100,178, 45,245,233, 86, + 57, 90, 92, 46, 23,132, 16, 0, 80,202,100, 50,133, 64, 32,144, 49, 12, 83,100, 48, 24,242,206,236,218,209,145, 83,148, 55,157, + 16,194, 53, 53,114,206, 84, 46,182,168, 53, 62,207,138, 16,119, 79, 15,143,184,239,246,238, 21,117,233,210,133,220,191,127,127, +254,220, 57,179,103,141,246,109,113,118,100,191, 64, 72,156, 36,106,163, 86, 35, 61,123,250,140,238,235,227,103,175,107,136,113, + 89, 52,165,170,198,158, 7, 74,233, 81,212,112,122, 8, 33, 19, 0,140, 5, 16, 65, 41, 61, 76, 8,153, 6, 96, 36,128,147,117, + 5,200, 19, 66, 56, 0,190, 29, 51,166,162,152,128, 74,165, 42,171,122,223,207,207,175,230,177,234,159, 14,126, 5, 51, 51, 51, + 11, 19, 19,147,231,231,206,157, 51, 29, 63,126,188,245,134, 13, 27, 94,254,235, 95,255,114, 57,114,228,200,151, 0, 94, 16, 66, +124, 0,120, 42,149, 74, 3,135,195,129,143,143, 15,118,239,222,173, 48, 24, 12,251,155,114, 28, 22, 22, 22,150,255, 6,127, 53, + 39,171,146, 0, 0, 49, 0,134, 84, 46, 32,156, 3,160,254,162,210, 0,214,199,198,198, 86,229,208,154, 91, 79,191, 57, 43, 86, +172,136,126,240,224, 65, 52,128,141, 13, 45,115,100, 24,230,199,121,243,230, 81, 71, 71, 71,133,131,131,195,143, 60, 46,119,150, +155, 41, 2,240, 6, 75,221, 1,244, 10, 11, 11, 27,241,229,151, 95, 14, 1,208, 5, 0,207,197,197, 37, 59, 55, 55, 87,113,235, +214, 45, 69,143, 30, 61, 20,118,118,118,249,190,190,190,138,173, 91,183, 42,116, 58,157, 98,201,146, 37, 10,188,146,239,171, 14, +109, 19, 0,243, 5, 2,193,143,109,218,180,137, 93, 61,252, 29,221,230,133,179,232, 52, 47,123, 5,128, 47, 1,204, 3, 96, 5, +128, 23, 20, 20,244,203,147, 39, 79, 46,248,250,250,238,105,132,174,115,187,118,237,174, 28, 61,122,244, 65, 68, 68, 68,244,178, +101,203, 30,216,218,218,102, 37, 37, 37, 25,203,203,203,105, 73, 73, 9,149, 74,165, 52, 50, 50,210, 96, 99, 99,179,171, 46,157, + 94, 66,110, 14,189,120,184,214, 20, 14,153,171, 38,211, 30, 2,206,203, 55, 89,134, 42, 18,137,138,139,138,138,104,110,110, 46, + 77, 73, 73,161, 39, 79,158,164,131,186,119,166,225,239,143,166,135,103,142,160, 91, 6,117,166, 93, 44, 76,148, 18, 11,243, 7, + 22, 22, 22,249, 86, 86, 86,223, 2,240,170, 79, 83, 34,145, 92, 82,171,213,213,233, 27, 92, 93, 93,163,125,124,124, 34,124,125, +125,191, 56,125,250,244,162,109,219,182,141,120,187,133,251, 71, 27, 6,118, 87,149, 93, 62, 78, 75,143,125, 73, 87,116,244, 46, +247,229, 98,108, 93,154, 46,182, 54, 97,215,175, 93, 51,210, 74,244,122, 61, 61,245,227,143,116,220,224,254,177,178,243, 63,124, +119, 35,100,193,209, 37, 29,189, 79,245, 48,193, 4,188,146,168,180,182, 22, 96, 14,219, 64, 75,206,238,119,155,217,228,244, 18, +115,190,236,106, 1,235, 26,159,217, 56,111,111,239, 20, 74,105, 78,235,214,173, 83, 0, 28,110,221,186,117,205,215,211,235,248, +172,171,147,147,174, 93,187,150,162,162,138, 2, 7, 64,240,250,245,235,163, 41,165,209, 94, 94, 94, 55, 41,165,240, 23,193,174, +183,152,243,221,112, 15,199,162,222, 98,206,119,254,162,215,179,185, 83, 74,225,206, 71,171, 94,246,102, 55, 70,120, 57,149,246, +113, 17, 71, 29, 62,176,111,243,187,239,190,187, 23,192, 46, 0,159,218,218,218,222,152, 48, 97, 66,194,161, 67,135, 18,182,110, +221,170, 77, 74, 74,162, 51,102,204, 80, 10,133,194, 79,223,228,122, 96, 27,219,216,198, 54,182, 53,220,240,255,153,225,157, 42, + 95, 55, 42, 97,233,176,143, 62,250, 40,154, 82, 90,149, 75,107, 74, 45,125,134,175, 90,181, 42,154, 82, 90,149, 29,254,213,100, +162,181,101,113, 95,187,123,247,110, 42, 20, 10,191,123,195,193,212, 76,224, 41, 25, 57,114,100, 87,185, 92,254,150,163,163,227, + 91,168,152,117,114,179,179,179, 75, 57,114,228,136, 66,165, 82, 41, 40,165, 10,189, 94,175,120,240,224,129,162, 79,159, 62, 10, + 84,164,128,104, 84,134,240,154,109,165, 4, 55,239,175,158, 73, 87, 74,112,243,149,125, 39,239,223,191,255, 92,106,106,234,207, +150,150,150,203, 27,163, 9,192,205,222,222, 62,216,198,198,230,130,157,157,221, 74, 27, 27,155, 28,173, 86, 75, 75, 74, 74,232, +179,103,207,232,181,107,215,232,237,219,183,169,141,141, 77, 86, 93,118,246, 53,101,238,148,108,158, 79,141,251,215, 83,205,206, +143, 41, 0, 42,221,182,130, 22,126, 21, 74,239,207, 30, 72,251,152,112,127,109,234,249,164,148,194,202,202,234,219, 31,127,252, +209,152,156,156, 76,207,156, 57, 67, 35, 35, 35,233,194,133, 11,105, 43,103, 39,117, 87, 1, 39,175,151,144,185,240, 38, 9, 75, +213,106,117,180, 92, 46,143, 86, 40, 20,209,109,218,180,137,238,220,185,115, 68,215,174, 93,191, 56,126,252,248,162, 13, 27, 54, +140,232,107, 33,124, 86,118,249, 56,165,203, 6, 83, 58,191, 39,125, 62,171, 15,125,199,148,121, 84,167,166,163, 99, 86, 85,182, +118,165, 82, 73,163,162,162,232,149, 43, 87,168,196,206, 78, 30,104,202,157,211, 67,136,222, 61, 44, 97,213, 88, 59,223, 22,115, + 14,220,249,234, 51,131,234,220, 33,250,195,180,193,250, 62, 86,156,221, 53,250,133, 83, 74,115,198,140, 25,243,130, 82,154,115, +242,228,201, 76, 74,105,206,232,209,163, 95,208,138,169,225,163,181,105,190,146,156,116,127,165,147, 53,127,237,218,181,209,148, +210,232,181,107,215, 70, 3, 21, 73, 84,123,139, 57, 7,239,238,217, 98, 84, 71, 30,164,199,103, 12, 49,244, 22,115, 14,214,106, +167, 21,243,115,204,254,109, 84,115,225, 48,253,113,225, 36, 67, 79,137,229,117,111,111,239, 45,139, 22, 45,138,184,125,251,246, + 99,131,193,144,144,146,146,146,176,107,215,174,132,110,221,186,221,180,181,181,141, 21, 8, 4,243, 26,250,140,254,136,198,106, +178,154,172, 38,171,201,182,215, 91,157,235,221, 41,165, 63, 19, 66, 68,148,210, 37, 65, 65, 65,216,184,113,227,184,246,237,219, + 79,112,113,113,177, 7,128,236,236,236, 50, 0,242,160,160, 32, 4, 7, 7, 99,243,230,205, 95,208,138, 88,150,255, 24,148,210, + 92, 66,136,235,130, 5, 11,242, 55,108,216, 96,156, 49, 99, 70,107, 74,105, 28, 33,164,213,164, 73,147,230, 51, 12, 19,228,238, +238,238,155,147,147, 83,160, 82,169, 14, 3,216, 67, 43,159,153, 54, 21, 33, 7,134, 78,205,157,112,129, 3, 67,213,123,132,144, +193,193,193,193,227, 71,143, 30,173,221,182,109,155, 94, 46,151,159,110,164,221,153, 0, 62,169,122,109,107,107, 43,121,244,232, +209, 60, 7, 7, 7, 78, 74, 74, 10,212,106, 53,146,147,147,141, 0,126,170, 75, 67,161,167, 59,190, 62,121,201,103,201,228,161, +150,101,137, 15,193,231,114,161,227, 9,144,123,231, 2,246, 71, 37,202,149, 90, 52,152,194,161, 54,164, 82,233,231, 11, 23, 46, +156,180,124,249,114, 19,119,119,119,242,235,175,191,226,216,177, 99,234,252,252,252, 65,148,210,235,111,162, 9, 84, 44,150, 16, + 8, 4, 0,128, 21, 43, 86,128,195,225,240,242,243,243, 5,132, 16, 33, 33,196,140, 16,194,213,165, 38,192, 40, 47, 65, 94,137, + 20,153,121,210,122,245, 12, 70,227,177,187,119,239, 46,238,208,161, 3,231,254,253,251, 40, 40, 40, 64,114,114, 50, 53, 80,122, +244,122,153,190, 73, 1,235, 0, 96,102, 99, 59,210,223, 90,200, 17, 28, 8, 70,160,134,195,253,198,136, 49, 0,230, 87,110,222, + 79, 8,225, 3, 40,106,211,166,205,219, 79,158, 60, 49,109,211,166,141, 42, 49, 49,241, 28, 33,196, 5,192,193,218, 52, 77, 77, + 77, 11, 1, 20,158, 60,121, 18, 0,102, 83, 74,141,132,144,142, 33, 33, 33, 57, 81, 81, 81, 88,187,118,109, 30,128,221, 0, 96, +110,109, 59,220, 87,204, 39,130,239,215,162,155, 26,156,157, 70, 90,235,226, 2,115, 7,199,119,218,137, 56,224,237, 91,131,183, + 36, 62, 28,129, 94,219, 62, 52, 52, 52, 74,161, 80,168,195,195,195, 53,211,167, 79,231, 38, 37, 37,221, 3,112, 3, 21,143, 53, +245, 77, 61, 23, 44, 44, 44, 44, 44, 77,163,150,180, 14,181,199,104,189, 10,165,244, 7, 66, 72,225,230,205,155,223, 1, 96,121, +252,248,241, 78,173, 90,181, 2, 0, 60,123,246,204,204,199,199,231,169,159,159,223, 19, 0,119, 40,165, 13,174,102,171,164,234, + 15,127,147,226, 82,234, 33,126,249,242,229,228,208,161, 67,122,160,194, 9,170,252,114,217, 1, 96, 71,125,113, 62,191, 23,111, +111,239,254,107,214,172,209,236,219,183,207,240,233,167,159,158,166,148, 38,189,137, 78,113,113,241,214, 41, 83,166, 76, 10, 9, + 9, 17, 91, 88, 88,144,216,216, 88,227,254,253,251,229,197,197,197, 91,235,218,231,174, 70, 31,222, 91,200,140,150, 42,143,247, + 31, 23,208,220,226,201,130, 33,120,118,247, 6, 14, 95, 79, 40, 77, 42, 86, 93,188,175,215, 31,123, 19, 91, 40,165,201,132, 16, +255,224,224,224, 21, 90,173,118, 52,143,199,187, 39,151,203, 67, 41,165,181,230, 8,107, 12, 58,157, 46,175,101,203,150,175, 30, + 71,103, 52, 26, 41,165,148,167,215,235, 69, 54, 90, 99,100,200,246,125,239, 79,247, 17, 11, 11, 11,165,248, 62, 73,174,174,177, +216,226, 53, 10, 10, 10,190,152, 53,107,214,191, 66, 66, 66,172, 45, 45, 45, 73,124,124, 60, 13, 15, 15, 87, 20, 20, 21,109,124, + 19, 27,203, 74,138, 47,158, 57,113, 60,168,167, 70, 79,194, 94,148, 82,134, 75,206,213,176,245, 18,128, 75, 0, 64, 8,153, 76, + 8, 25, 3,224, 20,165,244,251,122, 53,203,202, 46, 2, 16,140, 25, 51, 6,177,177,177,227, 0,252, 0,224,232, 39,159,124,210, + 53, 56, 56, 24,161,161,161, 8, 9, 9,233, 15,224, 66,105, 73, 81,100,196,209,195, 19,251,232,116,156,176,180, 82, 35,151, 67, +206,214,170, 89,152,119,233,220,165,203,195,223,178,116, 38,223, 94,184, 97, 44, 51,210,135,211,166, 77, 43,209,104, 52, 23, 0, +236, 4, 16, 75, 41,101, 87, 23,178,176,176,176,252, 7,161,175,172, 58,172, 25,163, 85,175,163, 85,185,243,101, 0,151, 9, 33, +146, 30, 61,122,172, 23,139,197, 34,131,193,128,226,226,226,151, 0,182, 87,206,206, 52,133,112,153, 76,182, 76, 40, 20,214,154, +178,161,169, 80, 74,203, 9, 33, 14,109,218,180,225, 1, 80,215,178,253,143,113,178, 40, 78, 38, 39, 37, 91,130,226,100,213, 91, + 73, 73, 73, 71,125,125,125, 71, 36, 38, 38,222,162,148,214,250,197,216, 40,233,138, 60, 72, 29, 22, 46, 92,248, 33,128, 17, 0, +126, 42, 46, 46,222, 74,235, 8,132,175,226,186, 90, 31,244, 22,195, 76,122,152,150, 59, 79, 99,164, 45, 4, 28, 78,170, 82, 75, +191,186,167,215,255,240,166,182, 84,218,147, 12, 96, 70,101,251,221, 20, 22, 22, 54,152,228,147, 16, 66,174, 63,207,190,147,144, +153, 95,219, 98,139,218,108,204, 33,132,248, 47, 89,178,100,137,209,104, 28,203,225,112,126, 44, 44, 44,108,240,156,213,133, 84, + 99, 88,252,205,213,251,252,237, 6, 99, 63, 33,135,115, 65,161, 51,124, 92, 91, 63, 90, 17,248,222,168,236,240,207,159, 63,255, + 46, 52, 52,180, 93, 72, 72, 8,190,254,250,235,170,101,151,151, 67, 66, 66,242, 13, 6,131, 91,104,104, 40,246,236,217,163, 7, + 0,181,206,184,116, 95,212, 67,206, 55, 70,227, 96, 30,135,115, 78,173, 51, 46,173, 77,179,184, 92, 63,127,103,196,121,173,214, +104,236,207, 5, 57,151,163, 49,174, 86,171,105,218,155,140,153,133,133,133,133,229,207,167, 65, 71,171, 10, 74,105, 46,254,128, + 47, 94, 74,105, 10, 0,203,149, 43, 87,254, 94,169,154,154,249,127,152, 88, 29,172,201,166, 95, 2,248,114,205,166,240,154,199, +189, 7, 52,156, 84,180, 49, 84, 58, 8,255,174,108,141,230,190, 94,127, 4,117,164,148,248, 43, 81,233, 16, 31,175,108,141,221, + 39, 11, 21,181, 44, 23,255,222,227, 63, 44,163, 57,168, 88, 69,248,135, 65, 41,141, 65,197, 42, 20,188,124,249,178,234, 61, 10, +224,113,101, 67, 85, 78,185,187, 74,154, 15, 96, 82, 35,237, 28,247, 71,218,201,194,194,194,194,242,251,168,237,209, 97,213, 47, +141,118,180, 88, 88, 88, 88, 88, 88, 88, 88, 88, 94,231,213, 71,135, 53, 33, 0,250,213,177, 83,163, 3,219, 9, 33,181,106, 52, + 96, 84,189,250,172, 38,171,201,106,178,154,172, 38,171,201,106,254,253, 52, 27,210,254, 79, 47,172,251,211,249, 51,151, 52,226, + 47,178,164,148,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,174,230,223,181,213, 90, 84,154,133,133,133,133,133,133,133, +133,165,113, 16, 66, 2, 42,127, 58, 17, 66,230, 84,150,226, 1, 80, 71,140, 22,175,203,250, 60,189, 94,239, 0, 0, 12,195,228, +235,238,173,118,170,173, 95,117,127,160,175, 30,248,174, 82,112,182,174, 98, 57,252,171,154,151,244,122,189,117,165,102,137,238, +222,234,129,245,106,118, 94,119,225, 55,253,239,174,234, 95,203,200,184,188,206,235,178, 95,177,181,193, 50, 56,213, 84,214, 72, +252,179,237,252,171,104,254,147,225,119, 93,159,167,211, 85, 92, 71, 60, 30,147,175,189, 91,255,117,196,239,178, 46,251, 55,253, +239,172,114,172, 79,211,204, 84, 88,228,233, 98,255, 69,125,154, 41,217,133, 75,148,101,229,182,245,105, 54,245,222,116,115,114, +234,107,168,188, 55,185,192,236,204,236,236,255,204,189,217, 72, 8, 33,157, 0,172, 6, 96, 89,227,237, 88, 74,233, 7,111,170, +201,194,194,194,242, 95,160,206, 18, 60,181, 58, 90,122,189,222, 33,250,199, 16, 40,213, 64,223,169,235, 28, 60, 70,238,121,109, + 85,155,190,188, 68, 32,141, 15,247,229,234,228,214,246,140,214, 50, 59, 59,155, 0, 0, 33,228, 59, 0,205,106,209,180,142,254, + 49, 4,101, 26, 32,112, 66,168,117, 51,192,178,128,207,255,208, 84, 36,122, 91,165, 82,181, 3, 0, 83, 83,211,120,149, 82,121, +213, 94,171,221,250,106,255,186, 70, 86,211,214,119,166,172,115,104, 61,114,207, 66,131,209, 40,120,121,255,155,192,242,194, 36, +134,167, 87,239, 94, 9,156, 11, 1, 94,115,170,234,208,251,255,227,142,253,216,150, 7,188, 35, 48, 49,241,183,178,182,238,101, +164,180,141,209,104, 36, 6,189, 62, 65, 46,147,221, 48,234,245,143,244, 26,165,109,244,233,207,140,245,217,249,234, 88,198, 2, +204,143, 64,144,200,220,252,109, 46,143,215, 29, 0, 12, 58,221,175, 74,133,226,234, 40,224, 68, 99,198,222,216,243,243,166,253, +255,105,232,116,122,135,212, 11, 33, 80,235,128,128, 49,159, 57,248, 77,250,254, 8, 0,104,242, 31, 57, 42,146, 78,119, 1, 0, +145,231,208,187, 66, 73, 64, 30, 0, 48,233, 57, 14,207,206,172,130, 90, 7,180, 25, 26,234,208,144,230,244,224, 99,182,203,231, +140, 22, 2,192,197,147, 95,182,186, 18,241,245, 96, 0,120,103,244,220,115, 3,198, 44,120, 6, 0,155,191,141,176, 61,250,217, +184,122, 53, 27,119,111,202,248,178,164, 51, 94, 26,121,142,149,155,136,145, 36, 37, 37,113, 0,192,217,217,185, 81,247,166, 43, + 32,206, 1,230,115,184,220, 94,158, 94, 94, 1, 0,104,202,243,231, 49, 6,189,254,166, 19,176,251, 15,190,150, 22, 82,250,219, +228,172,149,181, 48, 89, 88, 88, 88,254, 74, 68, 86, 58, 87,145,175,110,168,115,213,161, 82, 13, 92, 79, 6,122,119,245,195,156, + 73,239,154,215,220,118, 98, 79,104,179,164,251, 63,181,222,247,253, 86,142,159,159, 31, 82, 83, 83, 27,101, 69,153, 6,184,150, + 4, 64,250,196,162, 68, 36,122,190,109,203, 22,203,254,253,251, 51,206,206,206, 32,132, 32, 55, 55,183,235,229,203,151, 59, 45, + 94,188,248,125, 72,159,148,148,105, 80,122,173, 17, 41, 64,171,108,109,215,170, 57, 86, 47, 24, 39, 6,128,149, 83,119,119,186, +255, 52,207,230,249,243,231,125, 63,250,232,163, 34,238,213,171, 95,219, 1, 7,242,128, 6,243,126,149,105,128, 67, 63,223, 53, + 17,231,252,224, 49,121,193,130,147, 94, 94, 94,230,238,238,238,196,194,194, 2, 92, 46, 23, 37, 37, 37,205,226,226,226, 6,223, +187,119, 79,121,249,250,119,130, 7,247,134,167,228,155,116, 41,111,212,216, 85,217, 38, 23, 45, 44,226,167,140, 26,229, 58,110, +220, 56, 19, 79, 79, 79, 0,192,243,231,207,189, 79,156, 56, 49,225,228,201,147,193, 80,101,235,203, 52, 40,111,104,236,213,154, + 0, 76,128,238, 86, 14, 14,147,185, 60, 94, 59,189, 94,239, 2, 0, 12,195,188, 52,232,116,241,210,252,252,195,175,246,103,121, + 29,181, 14,120,146, 3,244,235, 21,128, 41,163,251,137, 0,224,163,241,235,187,166,191, 72,230,107, 52, 26,180,242,105,211,227, +211,207,190,184, 0, 14, 7, 97, 17,151,171,251, 55, 70, 51,246, 73, 42, 66, 62,221,134,236,199, 39,186, 26,100,201,111,151,202, +101, 92, 0,176, 20,139, 71,159, 8,255,225,170,179,111,208,157,228, 66,109,163, 52,235,187, 55,207,135,239,114,202,138,187,218, +246,171,139,251,121,205,154, 53,195,227,199,143, 27, 53,246,234,107, 67,246,212,194,232,228,148,176,117,217, 50, 73, 96, 96, 32, +204,205,205,193, 48, 12,244,122,125,191,155, 55,111,246, 11, 9, 9,153, 11,217, 83,101, 99,239,205, 70,176,149, 16,242,246,244, + 57, 11,157,222, 29, 17,132,209,131,122,252, 33,162, 44, 44, 44, 44,255, 41, 8, 33,115,104,197,170,195,234,149,135,180,198, 42, +196, 90, 29, 45,134, 97,242,251, 79,219,224,208,171, 75,123,220,127,244, 76,150,150,145,163,168,218, 86, 28,127,162,213,136, 30, + 46,109,163,162,174, 67,173, 86,227,215, 95,127,197,163, 71,143,240,226,197, 11,188,247,222,123,106, 6,152, 93,135,102, 73,224, +132, 80,107,200,146,204,189, 5, 79, 91, 92, 78, 76,228,150,151,151, 35, 42, 42, 10, 37, 37, 37, 16, 8, 4,112,117,117,197,128, + 1, 3,152,196,196, 68,155,190,253, 7,137, 3, 7, 77, 76,133,216, 91,193, 48, 76, 73, 93, 3,100, 24, 38,191,239,212,117, 14, +109,189,155,227,121, 90,182,108,245,103,251, 20, 70, 35,101, 82, 94,164,107,175, 95,191,142,128,128, 0, 92,186,116,201,182,184, +184,120,205,238,221,187, 87,243, 54,125,181, 67,167, 41,170, 53, 25,100, 77, 59,109,243,143,187, 95, 57,127,138, 31, 31, 31,207, +255,230,155,111, 80, 84, 84, 4,129, 64, 0, 43, 43, 43, 72, 36, 18,180,106,213,138,172, 92,185,210,124,232,208,120,252,123,118, +144,187,214, 99,214,211,186,236,172, 30,187, 34,221,204, 78,126,209, 51, 34, 50,146,211,179,103,207,223,252,219,222,178,101, 75, + 12, 28, 56,208,100,242,228,201,158,227, 38, 76, 50, 6, 14,153,254, 28,230,238,101, 13,106, 42, 51, 77,109,203,110, 59,247,155, + 48,225,116,104,104,168,149, 68, 34,129, 72, 36, 2, 0,200,100, 50,215,180,180,180,174,193,193,193, 99,238,198,134, 51,129, 67, + 51,179, 33,114, 83,213,119, 62,255,169,240,120, 76,126,213, 44,146,133,200,180, 36, 51, 43, 79, 9, 0, 26,141, 6, 26,141, 6, +106,181, 26,243,230,190,199,157, 61,166,179,151,123,175,133, 15, 95,188,204, 43,110,115,249,142, 77,213,190, 13,105, 50,101, 47, +164,210,140, 95,102,135, 44, 91, 38,113,116,252,255, 39,130, 97,135, 14,113,139,139,139,251,133,132,132,180,165,102,125,164,109, +134,134, 90,213,167, 89,223,189, 41,125, 22,217,226,211, 5, 3,253,247,124,118, 6, 6,131, 1,183,111,223, 70, 84, 84, 20,190, +248,226, 11,122,238,220, 57,153,165, 72,212,192,189,249,212,162,167, 83,174,199,166, 77, 39,137, 80, 40,196, 79, 63,253,132,196, +196, 68,112, 56, 28,248,249,249, 97,202,148, 41,232,215,175,159,100,206,156,247,104,224,160,241, 41, 16,251,148,254,158,107,137, + 16,194, 1,176,240,227,144, 77, 78, 83,103,205,199,230, 79, 87,178,142, 22, 11, 11,203, 95,145,200, 26,206,214,235, 80, 74,113, +230,204, 25, 90,217,122, 83, 74, 65, 1, 78,203,145,123,142, 30,127, 96,140,108, 57,114,207, 81, 10,112, 40,192,177, 4,154,119, +232,208, 65, 39,149, 74,233,189,123,247,232,188,121,243,148, 59,118,236,184, 26, 25, 25,121, 66,175,213,238,117,118,114,250,156, + 2,156, 90, 35,239, 1,142, 59, 32, 54, 51, 51, 43,200,200,200,160,103,207,158,165,107,215,174,165,135, 15, 31,166,231,206,157, +163,151, 47, 95,166,231,206,157,163, 71,143, 30,165,177,177,177,244,217,179,103, 84, 36, 18, 21,184, 3,226,122, 52,185, 20,224, +182, 26,249,205,210,147,247,117,161, 62, 35,247, 44,166, 0,215, 26,104,221,161, 67, 7,195,137, 19, 39,104, 88, 88, 24,253,254, +251,239,105,108,108, 44, 45, 44, 44,164,140, 80, 84, 80,181, 95, 93,118, 82,128,227,226,226, 82, 32,149, 74,169,155,155, 27, 21, + 8, 4,212,209,209,145,182,106,213,138,118,237,218,149, 14, 30, 60,152, 78,154, 52,137,174, 89,179,134, 74,165, 82,106, 98, 98, +146, 87,181, 95, 93,154, 1,128,169, 72, 36,202,136,142,142,166,117,161, 82,169,104, 97, 97, 33,189,112,225, 2, 21,137, 68, 25, + 1,128,105,125,154,166, 64, 71, 95, 95,223,130,194,194, 66,170,213,106,105, 70, 70, 6,141,139,139,163,137,137,137, 52, 35, 35, +131,170, 84,170,106,237,103,207,158, 81, 15, 15,143, 2, 83,160, 99,157,154,255,228, 86,117, 77,188,210,154, 57, 58, 14,150, 72, + 36,170,147, 39, 79,210,151, 47, 95,210,131, 7, 15, 82, 14,176,254,181,190,245,104, 10,128, 1, 61,123,246, 52,220,190,125,155, + 62,124,248,144,174, 88,177,130, 14, 28, 56,144, 14, 26, 52,136,134,132,132,208,172,172, 44,154,149,149, 69, 7, 15, 30,108, 16, + 0, 3, 26,186, 62,107,187, 55,197, 64,179,161, 67,135,170,180, 90, 45, 77, 73, 73,161,237,218,181,203,226, 2,147, 69, 64,219, +222,128,176,161,235,211, 5,176,118,114,114,202,185,125,251, 54,141,136,136,160,238,238,238, 5, 92, 96,186, 37,208,210, 18,104, +201, 5,166,183,108,217,178,224,246,237,219,180,168,168,136, 54,107,214, 44,199, 5,176,126,211,107, 9, 21, 5,182,247,127, 28, +178,137, 62,205, 82,210,143, 67, 54, 81, 0, 25,180, 98,227,165,255,250,245,192, 54,182,177,237, 63,222, 94,243, 69,254, 38,173, +122,213,225,144, 33, 67, 8,128,107,245,185,108, 42, 46,119,195,230,205,155,153,242,242,114,236,219,183,175,116,236,152, 49,199, +123,247,234,149,210,194,221, 93, 74, 56,156, 6,107, 23, 22, 8,133,139, 54,111,222,108,165,209,104,240,224,193, 3,116,234,212, + 9, 18,137, 4,230,230,230, 48, 55, 55,135,131,131, 3,124,124,124,144,159,159, 15, 11, 11, 11, 44, 95,190, 92, 92, 32, 20, 46, +106, 72,215,104,164, 12, 0, 24,140, 70, 1, 31,152,227,241,214, 91, 15,130,131,131, 57,182,182,182,176,177,177,129,185,185, 57, + 18, 19, 19,161,209,104, 96,102,106,214,168, 36,173, 28, 14,135, 99,110,110,142, 43, 87,174, 96,225,194,133,232,222,189, 59,172, +172,172, 96, 97, 97,129,118,237,218, 97,192,128, 1,152, 61,123, 54, 82, 82, 82, 64, 26, 17, 84,146,192, 48,243,103,207,158,237, + 16, 16, 16, 80,235,246,242,242,114, 72,165, 82, 20, 20, 20,192,213,213, 21, 65, 65, 65, 14, 9, 12, 51,191,214,206, 0,108, 1, +137,171,183,247,233,123,247,238,217,137, 68, 34,132,133,133,225,212,169, 83, 56,127,254, 60,206,158, 61,139, 51,103,206,224,167, +159,126, 66, 65, 65, 1, 0,192,219,219, 27,199,142, 29,179, 51,119,112, 56, 99, 11, 72, 26,115, 14, 88,128,244,188,188,139,237, +114,115,237, 38, 79,154,116, 67,161, 80, 96,242,228,201,216,176,113,227, 74, 94, 35,179,209,251, 0, 98, 27, 39,167, 3,155, 54, +109,226,228,230,230, 98,212,168, 81,133, 91, 55,110,156, 25,115,225,130,103,244,249,243,158, 27, 66, 67,103,246,238,221,187, 48, + 43, 43, 11,135, 14, 29,226, 56, 54,107,118,192, 7, 16, 55,213,206, 82, 96,225,246,237,219, 77,202,203,203,209,191,127,255, 20, + 99,124,188,143, 30,248, 65, 1, 36, 94, 3,180, 13,237,159, 3,204, 95,190,124,185, 68, 40, 20,226,195, 15, 63, 44, 44, 75, 79, +111,175, 7,190,151, 1,105, 50, 32, 77, 15,124, 95,154,154,218,126,234,212,169,133, 66,161, 16,219,182,109,147,228,252,127,209, +237, 70, 65, 8,233, 68, 8, 57, 77, 8,185, 14, 32,123,250,156,133,211, 3, 58,119,195,161,189,187,241, 89,232, 71, 7, 0,140, + 37,132, 28, 6, 80,231,140, 51, 11, 11,203,223,155,198,248, 34,255,139,212,146, 25,190,154,106,167, 35, 50, 50,146, 2,232, 83, +159,144,181,173,109,167,246,237,219, 35, 42, 42, 10,190,190,190,247,172,172,172,244,124,161, 16, 60, 30, 15,212,216,112,141,104, + 83,145,168,111,191,126,253,152, 59,119,238,192,195,195, 3,166,166,166,224,241,120,191,105,124, 62, 31, 78, 78, 78,144,203,229, +232,219,183, 47,111,231,206,157,125,161, 86,127,218,144,118,122, 82,156,121,193,157, 77,147,190, 59,120,160,101, 96, 96, 32,100, + 50, 57,140, 70, 35,204,204,204,160,209,104,192, 48, 76,197, 35, 32, 29,149, 55,104, 40, 0,131,193, 96,224,114,185,240,240,240, +192,134, 13, 27, 80, 94, 94, 14, 62,159, 15, 0,144,203,229,144, 74,165,136,139,139, 67, 90, 90, 26, 40,165, 13,214, 83,180, 16, +139,223, 29, 55,110,156,160,182,109,106,181, 26, 50,153, 12, 50,153, 12, 82,169, 20,229,229,229,232,214,173,155, 32,242,204,153, +119, 81, 84, 84,107, 97,105,181,137,201,152, 67,135, 14, 57, 8, 4, 2,168, 84, 42,148,150,150, 34, 51, 51, 19,233,233,233,229, +249,249,249,122, 11, 11, 11,142,187,187, 59, 71, 40, 20, 10, 71,142, 28, 73,228,114, 57, 8, 33, 24, 58,116,168,237,145,176,176, +113, 0,234, 93, 1,199,242,255, 92, 4,212, 29, 53,154, 97, 93, 58,119,190,114,239,254,253,128, 69,139, 22, 33, 54, 54,118,147, + 89,120,248,245, 50,224, 81,125,251,166, 0,243, 63,175,225,192,208,244,116, 95, 45, 80, 80,163, 75,154,123,106,234,249,169, 83, +167, 62,142,141,141,181,219,182,109,155,100,236,168, 81,243, 1,172,111,138,141, 22, 98,241, 91, 78, 78, 78, 56,119,238, 28, 50, + 94,188,248, 72, 15,168,154,178, 63,135,203,237, 25, 24, 24,136,159,126,250, 9, 89,233,233, 31,233,127,107, 35, 0,160, 0, 40, + 96, 82, 82, 62, 58,112,224,192,254, 25, 51,102,128,203, 48, 61,161,215,215, 38, 87, 23,175, 5,190,207,120,111, 17, 14,124,187, +243, 0,128, 89,148, 82, 35,254,160,146, 86, 44, 44, 44,127, 77, 26,227,139,252,175,242,170,179, 69, 43, 31, 37, 54,105, 70,203, +193,193,193,197,220,220, 28,217,217,217,104,211,186,117,190, 80, 40,132,128,199,131,137,160, 86,255,225, 53,202,202,202,124,157, +157,157, 33,147,201, 96,103,103, 7, 62,159, 95,221, 4, 2, 65,245,239, 22, 22, 22,224,112, 56,104,214,172, 25,202,202,202,124, + 27,212,205,139,115, 8,223, 57,119,222,237,235,115,109,188,172, 0, 0, 32, 0, 73, 68, 65, 84,231, 90,142, 26, 53, 26,214,214, + 54,112,115,115,133,131,131, 3, 76, 77, 77,225,230,230, 6, 79, 79, 79,186,117,235, 86,152, 57,248, 53,234, 15,121, 77,231,137, + 97, 24, 24, 12, 6,228,229,229,225,233,211,167,136,141,141,197,237,219,183,241,240,225, 67,148,150,150,162, 17,126, 22,202, 84, + 42,127,134,121,125, 50, 77,173, 86, 67, 42,149, 66, 42,149, 86, 59, 90, 5, 5, 5, 72, 75, 75,131, 66,169,236, 80,151,158,181, +173,237,232,246,237,219,115, 1,192,212,212, 20, 29, 58,116,192,158, 61,123,244, 63,159, 58, 53,190,237,237,219, 54,110, 23, 46, + 88,125,247,205, 55,227,131,130,130, 12,119,238,220,129, 92, 46,199,147, 39, 79, 96,111,111,207, 8, 76, 76,216, 90,121, 77, 36, + 26, 80,218,149,150, 14,234,222,189,123,170, 76, 38,195,150, 45, 91, 56, 60, 11,139,111, 67, 1,110,189, 59,114,185, 61, 2, 3, + 3,113,250,244,105,100,167,167,175, 72,175,197,129, 73, 7, 10, 50, 82, 82, 86, 28, 56,112, 0, 3, 6, 12, 0, 97,152, 38, 7, + 42,117,237,218,181,189,209,104,196,227,199,143, 97, 5,220,109,234,254,158, 94, 94, 1, 85, 51,191, 34,224, 70, 93,253, 68,192, +141,152,152, 24,152,154,154,162, 77,219,182, 29,155,120,152,173,132,144,156, 25,239, 45, 66,196,249, 91, 0,128, 3,223,238,204, +195,255, 59, 89, 44, 44, 44,255,112,254,170, 51, 90, 64,133, 99, 85,179, 85,189,223,164,132,165, 85, 14, 5,143,199,131, 64, 40, +132, 64, 32,168,112,144,132,194, 70,107, 16, 66, 96, 98, 98, 82,237, 88,213,116,176,106,254,110,102,102,214, 40, 7, 6, 0, 74, +146,207,247,154, 53,115,134, 64, 40, 20, 66,163, 81,131, 82, 10,161,208, 4, 86, 86, 86,240,240,240,128, 92, 46, 71,247, 30,189, +213,153, 82,254, 25,219, 54, 35, 99,155, 50,230, 42,244,122, 61,148, 74, 37, 74, 74, 74, 80, 92, 92, 12,185, 92, 14,149, 74,213, +232,165,232, 70,163,145,155,153,153,137, 31,126,248, 1, 69, 69, 69, 0, 42, 2,173,171,156,171,170,159,169,169,169, 8, 11, 11, +195,139, 23, 47,128, 38,124, 62,189,122,245,194,153, 51,103,184,125,250,246,221,123,201,221, 61,251,146,187,123,118,159,190,125, +247,158, 62,125,154,235,226,226,130,180,180, 52, 60,120,240, 0, 37, 37, 37,160,148,178,235,231,223,128,231, 64, 73, 89,113,241, +140,149, 43, 87, 82,115,115,115,108,249,252,115,255,245,192,196,250,246,169,233,192,136,235,113, 96,196,191,207,129, 1,165, 20, + 70,163, 17, 6, 67,163,178,152,188, 6, 33,132,240,120,188,166,166, 86,104,116,231,154,129,239,203,215,108,192,217,159, 78, 84, +109, 74, 98,157, 44, 22, 22,150,191, 58,180,158, 90,135, 12, 80,237, 65, 86,255,172,139,188,188,188,151, 74,165,178,165,187,187, + 59,178,178,178, 28,154, 53,107,150, 46,224,241,192, 23, 8, 64, 56, 13,251, 4,102,102,102,143,179,179,179,123,184,184,184, 64, +175,215, 87, 59, 85,175, 62, 58, 4, 42,102,105, 30, 62,124, 8, 51, 51,179,199, 40,175, 55,115, 2, 12,154,146,230, 29, 59,118, +172,158, 25,178,178,178,130,149,149, 24, 66,161, 9, 86,173, 90,101,220,182,117,235,238,102,239,132,202,254,181,120, 37, 93,185, +126,111,131,118, 54,133,198,126, 49,153,153,153, 61,118,115,115,235, 38, 22,139, 17, 17, 17,129,180,180, 52,148,148,148,160,172, +172, 12,106,181, 26,101,101,101,208,104, 52, 48, 49, 49, 65,219,182,109, 97,105,105,137,203,151, 47, 63,134, 90, 93,171, 94, 73, + 81, 81,196,227,199,143,187,117,238,220,185,122, 70,229,237,183,223, 38,111,191,253,182, 93,213,235,178,178, 50, 20, 22, 22,226, +222,189,123,184,124,249, 50, 8, 33, 72, 74, 74, 50,168, 85,170,163,191,119,220,255, 84,202,129, 95,185, 7, 14,236,127,255,253, +247,103,246,232,209, 3, 6, 96, 48,128,176,186,250,255,217, 14, 76, 21,183,111,223,142, 51, 24, 12, 61, 90,181,106, 5, 41,208, + 5,192, 79, 77,217,255,121,114,114,140, 94,175,239,235,239,239,143,136,227,199,123, 1, 72,171,173,159, 18,232, 21, 16, 16, 0, +149, 74,133, 39, 9, 9,209,141,209,174,116,178,246,126, 28,178,105,250,212, 89,243,113,104,239,110, 28,248,118,103,230,254, 61, + 59,220,208,136,248, 49, 22, 22,150,127, 6,141,245, 69,254, 23,169, 45, 70,171,202,249,106, 84, 96,120, 21,178,146,146,232,152, +152,152,150, 29, 59,118,196,222,189,123, 59,119,239,214,237, 37, 95, 32,208, 11,248,124,112, 26,241, 69,162, 82, 42,127,249,229, +151, 95,186,140, 28, 57,146,185,115,231, 14, 36, 18, 73,181,163, 85,245,147, 97, 24, 80, 74, 97,102,102,134, 31,127,252, 81,171, + 82, 42,127,105, 72,215,104, 48, 26, 56,149,142, 30,165, 20, 82,169, 20,124, 62, 31, 95,124,177, 13,187,182,110,157,100, 0, 78, +120,139,236,151, 1, 48,105,202,120,255, 72,202,203,202,174,156, 61,123,182, 83,112,112, 48,207,213,213, 21, 82,169, 20, 37, 37, + 37, 40, 42, 42,130, 92, 46,135, 92, 46, 71, 73, 73, 9,164, 82, 41, 76, 76, 76, 16, 27, 27,171, 43, 47, 43,187, 82,151,158,176, +188,252,228,180,105,211,150,199,196,196, 56, 49, 12, 3,157, 78, 7,163,209, 8,163,209, 8,173, 86,139,228,228,100,196,199,199, + 35, 49, 49, 17,197,197,197,224,241,120,224,114,185,120,248,240, 97,137, 72,167, 59,254,159, 28,251,223, 13, 30, 16,113,243,230, +205,153, 83,166, 76,129,179,171,107,111,100,101,213,217,183,166, 3,115,170, 30, 7, 70,246, 6, 14, 76, 77,148,165,165,247, 83, + 83, 83,123,244,233,211, 7, 78,174,174,155,218,102,101, 93, 74,104, 66,156,150, 65,175,191,113,243,230,205,190, 83,167, 78,197, +222,189,123, 55,217,167,166,158, 47,120,229, 49,167, 61, 96,223,194,211,115,211,244,233,211,113,241,226, 69, 24,244,250, 58,103, +232, 94,201,248,222,124,250,156,133,110,175, 4,190,239, 33,132, 44, 0,176,165,169, 99,101, 97, 97, 97,249, 95,163,190, 25,173, + 38, 61, 58, 52, 53, 24, 62, 94,186,116,169,142,195,225, 96,244,232,209, 22, 63,157, 62, 29,244,240,209, 35,143,252,252,124, 43, +131,193,208,160,150,189, 90,189, 99,233,210,165, 82,141, 70, 3, 31, 31, 31, 20, 23, 23,195, 96, 48,128, 97, 24, 48, 12, 3, 66, + 8, 56, 28, 14,204,205,205, 17, 19, 19,131,253,251,247,203,237,213,234, 29, 13,233, 26, 12,134,199, 97, 97, 97,224,114,185,212, +196,196, 4,132, 16, 48, 12,131,109,219,182,229,239, 2, 34, 0,128,203,225,104, 0,128,195, 33,141,141,222,109,240,185,165, 64, + 32,128,177, 98, 17, 64,131,125,173,213,234,237,155, 55,111, 46,125,242,228, 9,148, 74,101,245,236,155, 66,161,168, 14,174,151, + 74,165, 32,132, 64,169, 84,226,244,233,211,165,214,106,245,246,186,244,138,128,220,172,164,164,225,157, 59,119, 46, 74, 77, 77, +133, 76, 38,195,227,199,143,113,249,242,101, 28, 59,118, 12, 23, 47, 94, 68,114,114, 50,244,122, 61, 92, 92, 92, 64, 41,197,169, + 83,167,100,250,210,210,193, 69, 64,110, 35,207,193, 63,146,230, 18, 73, 95, 71, 7,135, 12,123, 59,187,172,230, 18, 73,223, 87, +183,139,129,103,207,158, 61,131, 94,175,135,135,135,135, 77,125,113, 90, 84,175,191,121,243,230, 77, 76,157, 58, 21,110, 45, 91, +110,116, 7,236, 95,237,227, 14,216,187,123,122,110,172,114, 96,168, 94,127,179,169, 54, 91, 0, 59,151, 45, 91,166,226,243,249, + 8, 15, 15,247,208,121,121, 37, 50,192, 68,115,160,117, 31,128,223,208,254, 78,192,238, 53,107,214,228, 18, 66,112,248,240, 97, + 59,177,167,103, 28, 3, 76, 19, 3,205,197, 64,115, 6,152, 38,246,244,140, 11, 15, 15,183,211,235,245, 88,188,120,113,174, 19, +176,187, 30,201,133,148,210, 97,148,210, 64, 74,169,219,254, 61, 59,112,246,167, 19, 85, 78,214, 44, 74,233, 61, 74,233, 20, 74, +105, 92, 83,199,202,194,194,194,242, 87,130,212, 22, 7,197,235,178, 62, 15,160, 14,189,187,250,225,254,163,167, 50, 59,107,203, + 11, 85,219,138,227, 79,180,122,199,215,210,239,171,175,190, 2,143,199, 67,102,102, 38, 18, 18, 18, 96,105,105,137, 73,147, 38, +169, 85,165,165,195,171,106, 29, 18, 66,250, 81, 74, 47, 87,106, 86,212, 83,147, 37,153,123, 50,177, 45,207,159, 61,195, 21,139, +197, 80, 40, 20,224,112, 56, 48, 49, 49,129,153,153, 25, 76, 77, 77,241,224,193, 3, 12, 25, 54,194, 80, 96, 22, 88,157,176,180, +170,158, 90, 77, 77, 16,194, 5,128, 46,128, 89, 12,240,161,131,179,243,210,213,171, 87,155, 14, 28, 56, 16,124, 62, 31,174,205, +189,115, 61, 6,109,217,201,225, 16,125, 86,145,124,149,103,115,103,113, 66, 82, 26, 0, 82, 81, 19,177,178,214, 97,109,118, 54, +211, 92,247,248,241,251,173,150, 29, 58, 84,196,163, 75,165, 82,228,229,229, 33, 63, 63, 31, 82,169, 20, 74,165, 18, 0,112,230, +204, 25,156,141, 74,148,171, 92,131, 82,234,178,243,255,199,254,212,194, 89,123,183,197,145,176,239,185,246,246,246,200,203,203, + 67, 65, 65, 1,164, 82, 41, 84, 42, 21, 12, 6, 3,138,139,139,177,239,192,247,134, 34,243,192, 23, 85, 9, 33,235,213, 84,102, +154,218, 40,110,185, 4,180,117,167, 51,103,206,180,176,180,180,132,209,104, 68, 73, 73, 9, 50, 50, 50,144,154,154,138,168,168, + 40,101,190, 84, 3,165, 93,255,172,170,132,165,181,158,207, 63,234,162,250, 43,106, 86, 94, 75, 0,224,236,228,148,157,158,158, +238, 96, 48, 24,224,226,226,162,151, 22, 23,111, 20, 0, 23, 45,128, 28, 0,180, 16, 88,189,125,231,206, 25, 35, 70,140,192, 91, +111,189,149,153,155,151,215,162,182,107, 9,132,112,125, 0,113,153,171,107,252,189,123,247, 36, 25, 25, 25,152, 58,117,106, 97, +250,243,231, 43,170,226,181,100, 64, 47,119, 79,207,141,225,225,225,118, 45, 91,182,132,175,175,111,174, 73, 70, 70,187,167,128, +172,142,235,179,206,123, 83,250, 44,178,197,220, 81,237,223,154, 55,111, 30,244,122, 61,162,162,162,112,247,238, 93,164,167,167, +227,214,173, 91, 82, 75,145,104,124, 85,173,195,186,174,207,193,222, 74,143,195,135,195, 8,159,207,199,129, 3, 7, 16, 19, 19, + 3, 0, 8, 8, 8,192,244,233,211,161,215,235, 49,121,242, 20, 26,249,212, 52,165,190,235,147, 16,210, 30,192,231,168,112,242, +222,162,148,154, 16, 66,178, 1,184, 53, 37, 38,235, 47,121, 45,177,154,172, 38,171,201, 82,131, 6,107, 29,174,251, 26,226,223, +150,249,152,157,125, 98, 79, 40,211,179, 87, 96,235,208,181, 33,156,206,157, 59,195,205,205, 13, 1, 1, 1,200,200,200, 16, 90, + 89, 89, 53, 84, 79, 77, 17, 56,104, 98,170,159,159,159,213,138, 21, 43,196, 3, 6, 12,224,185,185,185,129, 82,138,152,152, 24, + 68, 68, 68,104,247,238,221, 43, 47,115, 28, 38,141,190,250,131,162, 49,245,212,238, 2,101, 0, 62,113,205,206,254,118,254,220, +185, 33, 29, 58,118,156,185,118,237, 90,142,185,153, 41,111,195,170, 89, 38, 0,176,238,203, 99,226, 17, 65,147,176,221, 11,232, + 61,177,246, 58,114, 53,237,204,200,154,157,254,238,168,190, 94, 31, 46,152, 97, 24, 55,110,156,200,210,210, 18,110,110,110,176, +182,182, 70, 74, 74, 10,178,178,178,232,207, 63,255,172,184,253,240, 25,239,212,197,251,233, 38, 98,167,198,212, 37, 44, 13, 28, + 56,246,197,187,239,190,107, 61,109,218, 52,139, 78,157, 58,241,132, 66, 33,132, 66, 33,242,242,242,144,156,156,172,253,249,231, +159, 21,101, 14,131, 75,162,175,134,151, 54,178,214,161, 42,112, 66,104,242,141, 75,107, 23,199, 63,126, 60,197, 8,248,107,181, + 90, 23,131,193, 64, 56, 28, 78,142,209,104,124,172, 45, 45,221,175, 14, 88,187,141,173,117,216, 56, 12, 6, 3,223, 96, 48, 64, + 42,149,226,210,165, 75,204,243,231,207, 87, 63,122,244,104,117,118,118, 54,116, 58, 29,198,140, 25,131,128,128, 0, 92,189,122, + 21, 5,121,121, 63,215,167,245, 20,144, 9,179,178,166,207,158, 61,251, 92, 88, 88, 24,231,209,163, 71,118, 7, 14, 28,216, 87, +155, 3, 51,101,202, 20, 99, 94, 70,198,116, 53, 32,171, 75,175,129,123,179,240,124,248,174, 71, 35, 71, 7,181, 93, 27,188,154, +215,189,123,119,216,217,217,161, 87,175, 94,208,106,181, 86,109,218,180,105,232,222, 44, 13, 28, 52, 62,197,223,223, 95,180,109, +219, 54,201,140, 25, 51,176, 96,193, 2, 0,128, 74,165,194,197,139, 23,177,120,241,226,220, 12,166,139,178,161,235,179,114,166, +170,202, 1,187, 14, 32, 16, 64, 10, 27,248,206,194,194,242,119,132, 16, 18, 64, 41,141, 33,132, 56, 1, 24, 2, 32,146, 82,154, + 3, 52,162,214,225,141,187,113,168, 89,230,163, 2,167, 4,125,179,105,207,223, 91,186,209,151,171,147, 91,243, 72,185,101,210, +179,103,164,161,154,135,213,245,212,196,222, 10,219,212,163,157, 55,172, 91,183,104,251,246,237,125,171, 82, 56,152,153,153, 61, + 86, 41,149,191,216,171,213, 59,202,196,222,191, 52,181, 54, 95, 22,144, 7, 96,174,117,116,244,206,161, 35,198,108, 54,177,241, +224,173, 92,191,183,156,203,225,104,146,179, 11,176,221, 11, 16, 53, 98,129,100,153, 6,136,151, 58,233,243,108,131,158,174, 89, +182,236,195,117,159,124,210,217,220,220,188,183, 86,175,247, 54, 26,141,128,209,152, 84,166, 84, 94,167, 90,237, 61,117, 64,240, + 86, 19,177, 19,109,116, 93, 66,171, 54,165, 54, 47, 78,116, 62,184,127,255,194,227,199,143,191, 54,118, 91,181,122,103,153, 85, +155,203,141, 25,123,205, 62,229,192,175,200,207,255,181,174,190, 4,108,173,195,198,194, 24,141,115,172,173,173, 15,245,237,219, +215,164, 95,191,126, 24, 50,100, 8,186,119,239, 14,163,209, 8, 74, 41, 74, 75, 75,113,236,216, 49,108,222,188, 57,169, 5,240, + 73, 67,122,106,224, 23,225,217,179,131,253,253,253, 15,212,231,192, 84, 58, 89, 13,198, 36,214,127,111, 10,147,244,226,225,105, + 19,230,111,240,210,200,115,172,108,205,244,146,248,184,199,156,198,223,155, 62,165,134,152, 99, 93,198,140, 26, 53,159,203, 48, +189, 42, 87, 64,210, 39, 9, 9,209, 85, 69,165, 17, 48,253, 82, 19,175,165,170,220,117,108,224, 59, 11, 11,203,223,149, 0, 0, + 49, 0,134, 80, 74,191,173, 12,142,175, 59, 24,158, 97,152,252,170, 89, 31,134, 97,242, 83, 78,189, 55,169, 62,117, 30,208,183, +114, 38, 11, 13,214, 58,172,252, 61, 13, 40,133, 90,253,233,111,146,145,214, 88, 93,200,123,165,127,163,135, 10,160, 4,120, 10, +189,122, 40,242, 19,128,211,115, 43,244, 58,175,251,168,230,152,234,218,247,183,118,242,139,203,129, 27, 80, 40,110, 64,161,168, + 53,104,151,199,240,139, 27,178,243,213,177,103, 0,242,223, 59,246, 87, 53,235, 60, 25,111,216,255,159,204,203,194,194, 83, 0, +204, 93,207,156,113, 60,127,230,204,184, 15,151, 44, 25,227,228,236,236,105,103,103,103,109, 97, 97,193,185,115,231, 78,170,190, +188,124,103, 7,224, 96,229,108,106,131,168,129, 95,124, 50, 50,218,141, 29, 53,106, 62, 97,152,158, 53, 29, 24,170,215,223,242, + 0,118,215, 55,147, 85, 69, 83,239, 77, 55,161, 83,223,202,153, 44,112, 27,121,111,102, 85,216,177, 30,122,253,122,196,190,158, + 13,229, 13,238,205,117,132,144, 82,176,129,239, 44, 44, 44,127, 95, 34, 43,157,171,200,215,182,252,153,245,125, 0,244, 99, 53, + 89,205,191,139, 38, 42,130,222, 45,255,215,237,100, 53, 89, 77, 86,147,213,252, 43,106,254, 93, 91,147,210, 59,176,176,252,147, +161, 21,193,233,141, 42,225,196,194,194,194,194,242,207,161, 70,108, 86, 53,180, 50,229, 3, 1,208,175,182,157,104, 19, 86, 19, + 16, 66,106,213,168,143,134,244, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,251,105, 54,164,221, 20,255,227,127, 5, 66, +200, 28, 90, 25,155, 69, 95,201,169, 85,107,122,135, 63,240,192,127,137, 37,165,172, 38,171,201,106,178,154,172, 38,171,201,106, +254,119, 53,255,202,212, 55,163,213,164,132,165, 44, 44, 44, 44,127, 87, 66, 67, 9, 7, 32, 4, 8,229, 0, 39,184,192, 88,110, +197,235, 55,103,236, 88, 82,107, 50,219,133,147,109, 44,126,143, 46, 11, 11,203,255, 22,148,210, 28, 90, 71, 81,105, 54, 70,235, +191, 8, 33,164,153, 68, 34,217, 3,128,228,230,230,206,161,148,102,252,183,109, 98,121, 29, 91, 91,219,190,122,189, 30, 50,153, +172,193,212, 11,127, 69,218,121,145, 81,148,131, 54,213,111, 80,100, 36, 36,209, 67,181,245,109,235, 77,166,130,252,127, 46, 46, + 98,196,147,248,100,250, 99, 99,143, 69, 8,225, 12,238,231,182, 27, 0,206, 93,206,156, 79,255,132,188, 90,132,144, 86,246,246, +246, 23, 24,134, 97, 12, 6,195,220,188,188,188, 51,117,245, 29, 59,118, 44, 23, 0,120,244,234,199,118, 54,173, 87,124,240, 62, +225,149,169,247, 75,213, 42,165,140,203,227,190, 16,242, 36, 55,193,117, 57, 87,162,232,150, 80,219,254,199,143, 31,175,179,138, +119,123,111, 50,184,117,219,182,195, 58,250,154,166,124,190,163,243,246,222, 30,118,188,212,204,135,230,155,190,145,237,177,180, +105, 62,108,218,120,219, 51,140, 25,153,178,111, 95,161,162, 46, 13,150,215,249,140, 16, 27, 45,224,203, 19, 10,221, 12,122,189, + 35, 1, 40,151, 97,242,116,106,117, 38, 31,136, 93, 65,169,244,239,174,201, 23, 10, 93, 13,122,189, 35, 0,252, 47,218,201,242, + 91,234,116,180, 44, 44, 44, 30,112, 56, 28,215,154,197,112,171,234, 9, 86,189, 87,115, 27, 33, 4, 6,131, 33,171,184,184,184, + 83, 99, 15, 78, 8,177, 4, 48, 14, 64,213, 18,245, 35, 0,142, 81, 74,223, 40,224,152, 16, 98,201,231,243,151,138, 68,162,119, + 84, 42, 85, 59, 0, 48, 53, 53,141, 87, 42,149, 87,180, 90,237,231,111,162, 75, 8, 97, 0,140, 53, 55, 55,127,155,195,225,188, + 77, 41, 37,148,210,171, 10,133,226, 10,128,227,148,210,198,150,244,169,169,105,234,224,224,176,190,117,235,214, 19, 63,254,248, +227, 34, 91, 91, 91,159,197,139, 23,223,183,183,183,255,161,176,176,112, 21,165,180,209, 53,234,254, 76, 8, 33,158, 18,137,228, + 8,143,199,227,102,102,102,190, 13, 0,110,110,110, 87, 53, 26,141, 33, 63, 63,127, 18,165,244,121, 19,245, 68, 0,186,154,155, +155,119, 50, 55, 55, 15, 52, 24, 12,109, 42,235, 51, 62, 81, 40, 20, 81, 90,173,246, 1,128, 59,148, 82,229,159, 49,158, 55,129, + 16, 98,225,224,224, 16, 70, 8, 1, 33,196,155, 82, 90,250,223,182,233,143,134,114,208, 38, 33, 62,209,167,234,117,219,118,173, +235,238, 76,208,172,150,190,141,118,180,222,233,237, 52,108,248,240,254, 28, 0,208,232,206, 13, 67, 19,139, 95, 55, 4, 33,164, +213,232,209,163,127, 13, 11, 11,179, 86,171,213,152, 51,103,206, 17,177, 88,188, 91, 38,147,125, 92,223,126,150,230,214,139,183, +108,187,104, 86, 81,255, 26, 14, 70,163,193,225,229,203,231,222, 9,113,191, 14,138,143,191,189, 65,149,120,229,142,145,240,222, +211,162, 87, 98, 99,236,104,235, 73,134,142, 24, 59,106,200, 39,159,172,197,196,241, 19,155,199,199,151,155,186, 88,166, 8,138, + 85, 34, 47, 91,123,135,225,159,172, 59, 65,110,222, 56, 53, 60,236, 64,232,149,153, 51,237,222, 97,157,173,134, 33,132,144,117, + 12,211,213,186,117,235,192,241,167, 78,193,220,205,141, 97,132, 66, 14, 0,232,213,106, 55, 69,102,166, 83,248,240,225, 93, 66, + 9,185, 22, 66,233, 93, 86,243, 63,175,201, 82, 59,117, 58, 90, 28, 14,199,245,229,203,151, 14, 34,145, 8, 64, 69, 26, 8,131, +193, 0,131,193, 80, 93,188,152, 82, 90,253, 83,175,215,163,117,235,122,254, 64, 87, 66, 42,254,146,189, 3,224, 95,125,250,244, + 9,250,252,243,207,121,190,190,190, 85, 37, 67,122,173, 92,185,242, 75, 66,200, 73, 0, 7, 1,252,210,216,255,120, 9, 33, 3, + 69, 34,209,225, 45, 91,182, 88,246,239,223,159,113,118,118, 6, 33, 4,185,185,185, 93, 47, 95,190,220,105,241,226,197,115, 9, + 33,147, 41,165, 23, 26, 86,171,214,108,111, 97, 97,113, 98,212,168, 81,174,189,123,247, 54,105,219,182, 45, 12, 6, 3, 30, 62, +124, 56,227,193,131, 7, 19, 78,158, 60, 25, 66, 8, 9,162,141,172,215, 70, 8, 33,230,230,230,211, 92, 92, 92,214, 7, 7, 7, +219, 76,158, 60, 89, 16, 23, 23, 87,226,225,225, 65,110,222,188,105,127,236,216,177,185, 27, 55,110, 28,107, 97, 97,177, 74,161, + 80,124, 79, 27, 17, 64,103,105,105,249,128,195,225,184, 2, 13, 59,194, 0, 26,237, 12, 19, 66, 58,180,104,209,226,216,141, 27, + 55, 90,164,165,165, 25, 70,142, 28,121, 8, 0,174, 92,185,226,171,211,233,200,128, 1, 3,206, 17, 66,198, 81, 74, 31, 54,114, +236,126, 54, 54, 54, 63, 77,156, 56,209,198,211,211,211,172, 69,139, 22, 68, 36, 18,129,203,229, 66, 38,147, 57,199,197,197,245, +187,123,247,174,234,242,229,203,197,132,144,225,148,210,215, 19, 56,213,173,221,221,193,193, 97, 10,143,199,107,175,215,235, 93, + 0,128, 97,152,151, 58,157, 46, 46, 63, 63, 63,140, 82, 90,103, 34,215,134,112,116,116,220,181,126,253,122,187,252,252,124,186, +113,227,198, 93, 0,166,189,169,214,255, 58, 71,126, 56,142, 7,247,239, 2, 0,159, 16, 66, 94,189,254, 8, 33,164,141, 55,248, + 31,124,176, 4,157,222,234,130, 73, 19,199, 54,168, 57,164,159,219, 22,158,128,111, 91, 94, 94,254,171,172, 76,125,220,209,214, +106,220,196, 9, 67,147, 0,224,220,249,107,227,186,116,177,185, 42, 54, 19,142, 53, 49, 49,233,174,211,104,139, 34, 47,103, 46, +107,172,189,132,144, 86, 46, 46, 46, 23,172,173,173,205,138,139,139,115, 11, 10, 10,190, 30, 61,122,244,186,131, 7, 15, 90,167, +166,166, 34, 51, 51, 19,139, 22, 45, 50,207,202,202,154, 47, 20, 10,111,171,213,234, 58,103,182, 74, 75,139,119,172, 92, 49, 34, + 88, 44,182,227,138,204, 44, 97, 33,182,129,135,167, 63,186,118, 31,134,193, 67,102, 34, 57, 41,166,235,193, 3,159,196,188,124, +121,249, 51,115,155,150,235,164,210, 22,117,254, 93,106,231, 67,122, 87, 57, 89,193,193,107,241, 44, 49,177, 52,237, 5,231,223, +145,167, 24,179,193,125, 91, 11,245,154,220,180,155, 55, 78,181,232,217,107, 36, 0,116, 10, 59, 16,122,101,225,100,155,190, 59, + 15, 23,255,237,156,248, 63, 10, 66, 8,249,132,199,155, 54,112,219, 54,135,128,185,115,249,138, 23, 47,180, 41,223,124, 83,150, + 23, 21,101, 96,132, 66,234, 54,104, 16,177,127,251,109,147,185, 79,158,240,111,109,220, 24,184, 65, 32,240, 88,169,209, 28,102, + 53,255,115,154,255,116,106, 4,195, 87,199,106, 85, 61, 62,172,211,209, 34,132, 64, 36, 18, 33, 60, 60, 28, 60, 30, 15, 12,195, +128,199,227,213,249,123,179,102,175, 85,246,168, 77,115,180, 68, 34,249,114,247,238,221,142, 3, 7, 14,132,137,137, 73,245, 54, + 46,151,139,254,253,251,163, 95,191,126,188,236,236,236, 9,225,225,225, 19, 54,108,216,144, 71, 8, 89, 64, 41,141,104, 64,247, +109, 31, 31,159,136,139, 23, 47,154,150,151,151, 35, 42, 42, 10, 37, 37, 37, 16, 8, 4,112,117,117,197,128, 1, 3,152,196,196, + 68,155,254,253,251, 71, 16, 66,134, 82, 74,175, 54,194,214, 78, 14, 14, 14,215,143, 31, 63,110,226,239,239, 79,146,147,147, 17, + 16, 16, 0, 0,144,201,100, 24, 57,114,164,201,228,201,147, 61, 39, 76,152,112,135, 16,210,155, 82,250,160, 1,189,142, 18,137, +228,251, 81,163, 70, 57,111,216,176,193,210,194,194, 2,105,105,105, 57, 18,137,196,187,234,124, 79,152, 48, 65, 48,108,216, 48, +167,205,155, 55,239, 56,113,226,196, 50, 66,200, 52, 74,105,116,125,186, 85, 14,177,153,153, 25,242,242,242,112,228,200, 17,204, +159, 63, 31, 92, 46, 23,249,249,249, 56,118,236, 24,254,253,239,127, 87, 57, 52,141,114,134, 69, 34, 81, 63,127,127,255,125, 87, +174, 92,113,181,178,178,130,179,179, 51,103,205,154, 53,237, 61, 60, 60, 76,155, 55,111,206,205,201,201, 65, 68, 68,132,199,148, + 41, 83,126, 50, 49, 49,153, 81, 94, 94,222,224, 35, 53, 71, 71,199,253,145,145,145,205,226,227,227,241,205, 55,223,160,184,184, + 24, 2,129, 0, 86, 86, 86,144, 72, 36,240,246,246, 38, 43, 86,172, 48, 27, 54,108,152,217,130, 5, 11,246, 3,232,208,144, 38, + 33,196,223,193,193, 97,207,132, 9, 19, 60, 66, 67, 67,173, 36, 18, 9,170,254, 49,144,201,100,174,105,105,105, 93,131,131,131, +131, 28, 29, 29, 83,243,243,243,223,163,148, 62,106,112,240,191,213,239,208,183,111,223,161, 35, 71,142,228,230,228,228, 32, 44, + 44,108, 40, 33,164, 67, 99,157,203,191, 26, 15,238,223,197,156,121,139, 20,206,110,110,252,139, 23,246,141,150, 74,219,222,183, + 50,173, 40, 72, 45, 85, 65,251, 78,111,238, 91, 3, 6,206,228,191, 59,100,164,226,219,175,118,152, 55,198,209,226, 9,248,182, + 71, 14,127,145,113,227,230,131,246,151, 46,223, 29, 52,122,248,112,202,231, 91,121, 0,192,178,197, 31,240, 34, 78,159, 62,208, +191, 95,151,236, 94, 61, 59,101, 76,154,188,164,225, 63, 34,149, 16, 66, 90,181,106,213,234, 90, 76, 76,140,163, 80, 40, 68,113, +113,177,237,183,223,126,251, 69,207,158, 61, 57, 41, 41, 41, 72, 76, 76,196,139, 23, 47, 32,147,201,208,191,127,127,243,232,232, +232,175, 1,212,233,104,105, 57,239,172,119,110,174,219,105,107, 42,106,161, 53,200, 29,168, 46,167,237,165,200, 75,126, 71,195, + 84, 1,142, 78,173,189,255, 53, 61, 4,159,172, 59,201,251,225,200,166,224, 95, 46, 31, 5, 56, 45,234,174, 8, 64,209,125,229, +170,143, 33, 47, 85, 99,242,196,217,152, 50,113,182, 45,133,198,137, 26,202, 69, 26, 85,137,149, 5,255,201,153,221,123,191, 24, + 5,192,181,134,179,245, 11,235,108,213,205, 39, 12,211,101,232,151, 95,218,183,159, 53, 75,248, 40, 52, 84, 89, 24, 21,165,242, +122,247,221,146,128,247,223, 87, 3, 64,233,139, 23,252,103, 33, 33,102,246,129,129,166,221,150, 46,181, 54,104, 52,146, 79, 9, +233,188,134,210,123, 77,213,108, 54,110,156, 33,248,192,129,183,162,150, 44,233, 67,116, 58,238,160,110,221, 30,110, 12, 11,123, +249,123, 52,255, 72, 59,179,175, 95, 87, 23,123,120, 32, 96,228,200,162,102, 14, 14,234, 63,114,236,191,199, 78,150, 10,104, 69, +217,157,170,204,240, 0, 42, 87, 29, 70, 70, 70,246, 6,112, 13, 64,232,144, 33, 67,214, 2,128,149,149, 85,158, 84, 42,117,136, +136,136,104,208,201,226,241,120,112,114,114,130,183,183,119,126, 94, 94,158, 99, 93, 6, 16, 66, 50,141, 70,163, 43,165,180,122, +246,165, 46,212,106, 53,146,146,146,224,231,231,151, 69, 41,117,171, 71,211,194,204,204, 44, 37, 49, 49,209, 46, 33, 33, 1, 15, + 30, 60,128,135,135, 7,172,173,173,193,227,241,160,211,233, 32,151,203,225,227,227, 3,161, 80,136,142, 29, 59, 22, 42,149, 74, +143,250, 30, 1, 17, 66,132, 34,145, 40,233,250,245,235,110, 1, 1, 1,184,119,239, 30,220,220,220, 32,145, 72, 0, 0, 47, 94, +188,192,205,155, 55,241,238,187,239, 34, 38, 38, 6, 99,198,140,201, 84, 42,149,222,148, 82,117, 93,154,182,182,182, 57, 87,174, + 92,201,242,245,245, 45, 87, 42,149,156,188,188, 60, 94, 84, 84,148,190,180,180,212, 92, 38,147,241,164, 82, 41, 79, 46,151, 51, + 74,165,146,199,225,112,248, 42,149,138,247,203, 47,191,112, 53, 26,141,101,125,231,169,234,115, 58,125,250, 52,124,125,125, 17, + 17, 17,129, 15, 63,252, 16,183,110,221,130,155,155, 27,142, 31, 63,142,165, 75,151,226,233,211,167,176,179,179, 67,219,182,109, +235,253,140, 0,192,203,203, 43,249,241,227,199,158,124, 62,191,170,174, 99, 85,189, 60, 20, 20, 20,224,249,243,231,120,249,242, + 37,188,188,188, 48,113,226,196,231, 89, 89, 89, 94,245,233, 1,128,171,171,107, 65,124,124,188,157,159,159, 31,242,242,242, 96, +101,101, 5,177, 88, 12, 43, 43,171,234,223, 61, 60, 60,176,100,201, 18, 72, 36,146,124,149, 74, 85,175,141,132,144, 14,190,190, +190, 23,126,249,229, 23, 59, 75, 75, 75,228,230,230, 66, 46,151,131, 97, 24,152,153,153,193,206,206,174,218,145, 79, 74, 74,194, +144, 33, 67, 10, 83, 82, 82, 6, 54, 97, 6,142,227,232,232,152, 24, 27, 27,235, 77, 41, 69, 70, 70, 6,158, 62,125,138,121,243, +230, 37,149,151,151,183,254, 51, 98,139,254, 91,212,136,187,226, 79,155, 62,135, 63,106, 68,119,205,147,248, 51, 68,104,124,138, + 14,237, 45,101, 0,240, 48, 78, 46, 86,115,124,208,166,221, 80,250,227, 79,191, 10,190, 63,248, 45, 15, 70, 56,130,224,105,194, + 51,250,105, 93,218, 3,223,113,158,245,193, 7, 51,218,247,233,217,155, 83,170, 84, 58,124,253,245,182,142, 41, 41, 79, 28, 0, +192,195,163, 77,254,220,185,139,163, 45, 68,162,252,107, 55,175, 27,183,111,223, 31,119,225, 74,246,222,134,236, 37,132,120,120, +123,123,223, 62,125,250,180,157,131,131, 3,196, 98, 49,148, 74, 37,180, 90, 45, 18, 18, 18,202,195,195,195,117,150,150,150, 22, +185,185,185,144, 74,165, 32,132,224,244,233,211, 25,148, 82,247, 87,181,170, 98,180, 0, 96,222,224, 54,188,182,239,120, 91,243, +133,122, 83, 83,222, 51, 39, 16,131,144, 80,115,199,115, 23, 30,250,157,187,116,111,210,168,209, 31,218,247,234, 61, 10,193,171, +131,116,217,217, 25, 1, 90,244, 74,172, 45, 70,171,141, 55,121,103,228,152, 81, 99, 63,249,100, 45,214, 6,135,226,204,233, 83, + 50,115, 17, 71,109,105,197, 19, 7,118,237, 81,190,100,254,136, 76,133, 34,219,237,147,205,225, 19,135,140, 88,226,218,179,215, + 72,220,188,113, 10, 97, 7, 66, 31, 16, 83,202, 62, 70,124,133, 80, 66,172,173, 60, 60,222, 91,152,148,196,127,180,118,173, 66, +159,157, 93,210,105,241,226,194,218,250,102, 93,186, 36, 18, 56, 59, 91, 90, 15, 31,110,179,195,221,157,234,242,243,247,212, 22, + 99, 84,155,230,101,115,115,171,163,231,206,245,165, 60, 94,239,229, 31,125,100, 58,116,232, 80,200,229,114,156, 60,121, 18,123, +190,249, 70,237,228,228,244,216, 57, 46, 46,166,189, 92,190,186,177,154,157, 22, 47, 46, 52, 24, 12,100,236,210,165,253,227, 95, +188,120, 39, 55, 63,191, 57, 0, 56,217,216,100,118,242,240,120,176,255,204,153,167,187, 90,180, 48, 54,214,206,239,206,159,119, + 60,145,150, 54,203,198,198,198, 52, 47, 63,159, 17, 10, 4, 69, 93,219,182, 61,254,213,170, 85,215,244,177,177,124, 19, 87, 87, + 75,241,208,161, 77, 30,123,167,197,139, 11,139, 75, 75,153,133,235,214,245, 72,207,203,107,174, 80,171,189,164,165,165, 18,131, + 78,199,177, 52, 51, 43,106,233,227,147,175,138,138,202,105, 89, 86,182,232, 59, 74,235,172,172,242,123,169,205, 23,249,171, 80, +203,170,195,215,106, 29, 94, 27, 50,100,200,107,171,107, 40,165,141,154,205,226,241,120,191,121, 76, 85, 15,124, 66, 8,162,163, +163, 97,107,107, 11,137, 68, 2,161,240,183,197, 7, 11, 10, 10,112,235,214, 45, 60,121,242, 4,254,254,254, 0, 42,254,163,174, + 11,161, 80,248,193,230,205,155,173, 52, 26, 13, 30, 60,120,128, 78,157, 58, 65, 40, 20,130,207,231,255,198, 9,204,207,207, 71, +187,118,237,176,124,249,114,241,134, 13, 27, 62, 64, 61, 53,234, 24,134, 89, 48,123,246,108,135,170, 25,172,204,204, 76,116,236, +216,177,122,187,189,189, 61, 30, 62,124,136, 78,157, 58,193,213,213, 21, 65, 65, 65, 14, 97, 97, 97, 11, 0,124, 94,151,166, 64, + 32,224,248,250,250,190, 5, 0, 34,145, 8, 28, 14,231,153,165,165,165,189,163,163,163,200,210,210,242,181, 49, 30, 56,112, 64, +202,225,112,116,245,141, 29,168,120, 92,152,155,155,139,246,237,219, 67, 38,171,168,224,162, 84, 42,225,229,229, 5,185,188, 34, + 36, 77,173, 86,195,217,217, 25, 42, 85,253,161, 95,254,254,254,107, 91,183,110, 61,160, 79,159, 62, 66, 30,143,135, 71,143, 30, + 33, 32, 32, 0,225,225,225,104,214,172, 25,204,204,204,144,148,148, 4, 95, 95, 95, 92,191,126, 29,246,246,246,104,215,174,157, +176, 99,199,142, 55,254,143,189,243,142,111,170,122,255,248,231,100, 39, 77,247,222,165, 20,186,203, 94,178, 71,153, 45,130, 8, +136,162,160, 32,160,162, 32, 32,130, 40, 40,234, 23, 1,145,161, 32, 75,101, 20,217,203, 50, 11, 20, 16, 25,178, 4, 90,104, 11, +216, 22,186,210,116, 37,109,118,110,238,249,253, 65, 83, 75, 77,155, 20,240,251,133,159,121,191, 94,121, 53,185, 57,247,115,159, +115,115,155,251,228,156,231, 60, 79, 89, 89, 89,106, 78, 78,206,167, 13,216,201,113,116,116,196,169, 83,167,240,227,143, 63, 34, + 59, 59, 27, 5, 5, 5,112,114,114, 66,235,214,173, 17, 19, 19,131,206,157, 59, 35, 43, 43, 11,196,202,197, 68, 8,241, 13, 15, + 15, 79,254,253,247,223, 61, 41,165,216,188,121, 51,170,170,170,160,215,235,193,225,112, 32, 22,139,225,230,230,134,222,189,123, +195,203,203, 11,225,225,225,216,190,125,187,231,192,129, 3, 15, 86,143, 72, 21, 89, 59,175,110,110,110, 83,230,205,155, 23,228, +237,237,141,156,156, 28, 40, 20, 10,248,248,248,160,103,207,158, 1,199,142, 29,155, 2, 96,169, 53,141,103, 5,115,224, 59, 33, +132, 28, 61,242,195,176,240,166,229, 45, 90, 69, 58, 4,237, 78,246, 9,218,150, 92, 28, 11, 0,113,209, 62,105,195, 18, 29,238, +255,145,150,124,255,232,145,189,151,110,102, 98,183, 45, 83,219, 10,181,110, 71,202,177, 11, 3,218,180,106,203, 46, 90, 56, 35, +225,157,183,199,139,188,125,198, 65,118,111, 47,142,157,184, 28, 60, 99,250,155, 94, 95, 47, 89,119, 40,229,216, 5,142, 66,173, +251,216, 22,123, 35, 34,130,191,221,176,170,179,103,101,201, 78,220,190, 37,132,196, 41, 14, 97, 97, 17, 80, 42,149, 16,139,197, +226,151, 95,126,217, 52,123,246,108,181,179,179,179, 3, 33, 4,169,169,169,197, 0,250, 91,211,213,122,187, 81,147,193,200, 80, + 33,151,165,196, 73, 67, 76,101,194, 27,233,127,162, 95,124, 47, 89,215,142,113,255,153, 61,127,201, 71,225, 17,109,188,222, 24, +255, 25,255,139, 79, 95, 89, 13,130,110,150,116,110,102,209, 19, 49,205,136, 4, 64,194,252,207, 63,197,221,187, 89,110, 19,198, + 86,124,198, 19, 73,252,163, 66,186, 56,173,254, 49,117, 64,243,230,161, 77,166, 77, 30,126,224,155,239,190, 73, 64,173,145,173, + 13, 63,205,219, 71, 8,233, 99,203,185,253, 23,209,242,213,228,100, 84,221,187,103, 44,251,245, 87,109,159,239,190, 43, 9,234, +223,127,169,222, 96,240, 52,127, 85,112, 8, 1, 49,135, 78,176, 44,225,205,156,201,161, 60, 30,140,110,110, 99,103, 1, 17,214, + 52,167, 23, 22, 14,123,101,252,248,132,125,135, 15, 35, 52, 52,180,230,126,230,234,234,138, 25, 51,102,224,253,247,223, 23, 93, +189,122,181,195,206,157, 59, 59,124,189,120,177,207, 44, 96,152, 45,118, 30, 61,127,222,109,210,252,249,115, 90,181,107, 23,188, +105,203, 22, 81,179,102,205, 0, 0,119,238,220, 9, 95,248,213, 87, 33,113, 45, 90,200,254, 51,117,234,134,180,217,179, 99, 1, +252,218,144,102,209,233,211,250,157, 57, 57,227, 79,164,166,186,198,197,197, 1, 0, 50, 50, 50,188,151, 47, 95,254,102,236,240, +225,163,231,191,245,214,199,137, 90,109,133,179, 92, 46, 74,252,246, 91,222,214, 17, 35,172,106,154,237, 4,128,158,111,188, 49, +181, 91,175, 94, 49,195,198,143,119, 15, 14, 14, 38,142,142,142, 48, 24, 12, 40, 40, 40,112, 75, 75, 75,107,150, 92, 89,169,220, +115,254,252,230,117,213,197,226,255, 33, 44,250, 34,207, 2,230,145, 44, 75,239,153, 29,173,158, 7, 14, 28,160, 0,122, 38, 36, + 36,156, 2, 30,220,192, 77, 38,147, 77, 78, 22,143,199, 67,117,176,176,173, 6,161,164,164, 4, 37, 37, 37, 53, 83, 71,197,197, +197, 56,113,226, 4,178,178,178,192,231,243, 33, 16, 8, 96, 48, 88,175, 65, 43,149, 74,227,227,227,227,121,231,207,159, 71, 88, + 88, 24, 36, 18, 73,141, 93,230,135, 64, 32,128,159,159, 31,148, 74, 37,250,244,233,195, 95,177, 98, 69, 60, 26,112,180, 92, 92, + 92, 6,141, 28, 57, 82,104,126, 93, 85, 85, 5, 46,247,193, 15, 95,157, 78,135,170,170, 42,148,149,149,161,162,162, 2, 90,173, + 22,207, 61,247,156, 48, 57, 57,121, 16, 26,112,180,106,163, 86,171,171,138,139,139, 93,187,117,235,230,182, 97,195,134,140,231, +158,123, 46,178,246,251, 39, 79,158,212,106,181, 90, 62,135,195,177,169,142, 94, 82, 82, 82,205,185,207,207,207,199,234,213,171, +107,222,203,202,202,194,138, 21, 43,106, 74, 1, 52,244, 25, 69, 69, 69, 13,220,188,121,115,187, 77,155, 54,149,115,185, 92,100, +100,100, 96,203,150, 45,160,148,194,203,203, 11,106,181, 26, 50,153, 12,169,169,169, 96, 24, 6,142,142,142, 8, 8, 8, 16, 79, +158, 60,185,235,103,159,125,198, 7,240,105,125,218, 38,147,201,196,229,114, 17, 18, 18,130,185,246, 8, 50, 90, 0, 0, 32, 0, + 73, 68, 65, 84,115,231, 66,171,213, 66, 32,120,224, 95, 42,149, 74, 84, 84, 84,224,202,149, 43,200,201,201,129,181,155,140, 88, + 44, 30,190,105,211, 38,111,161, 80, 8,141, 70,131,202,202, 74,220,191,127, 31,185,185,185,218,226,226, 98,198,201,201,137, 19, + 18, 18,194, 17,137, 68,162,161, 67,135, 18,179,195,153,152,152,232,177,121,243,230,151, 96,197, 73, 34,132,120, 69, 71, 71,127, +244,230,155,111,214,204,109, 83, 74, 81, 84, 84,132, 97,195,134, 57,156, 61,123,118, 54, 33,100, 11,165, 84,222,144,206,179, 6, +165,148, 86, 84,196, 92,188,116, 44,163,197,238,100,159,160,220, 60, 83,151, 25, 31, 44,225, 1,192,218, 53, 11,186,236, 78,206, +255, 45, 42, 84,118,127,231,158,136,139,174,174,233, 13,126, 70,132, 16, 78,239, 30,126,131,125, 60, 92, 71, 14,123,254,121,250, +253,247, 75,219,190,243,246,120, 81, 72,196, 12, 0, 64, 0,223, 27,125,152,207,137, 90,115, 71,252,253,247, 75,219, 14,123,254, +197, 43,217,217, 57,107,250,244,244,223,126,226, 84,225, 47, 13,141, 24,122,123,136, 3, 28, 68, 42, 4,132,197, 32, 50, 90,138, +171,127,100, 96,215,142,115,136,142,237, 4,157, 78, 7,134, 97,164,131, 7, 15, 86,111,219,182, 77,155,153,153, 89,169,209,104, +122, 80, 74, 51,173,245, 63, 47, 47,157,141,244,237,100, 16, 72, 68, 76,165, 66,160,158,245,241,206, 17,109, 59,246,107,231,230, + 23,192,247,146,178,191, 12,236,219, 97,203,143,235,231,190,255,241,188, 45,104,223,161,223,115, 55, 51,126,141, 1,112,221,146, + 86,250, 29,154, 28, 23, 78,152,187,183,111, 39,228,230,228,228, 69,248,248,234,239, 84, 80,227,148, 89,235,250,118,235, 49,188, +101,179,232,238,194,155,233,167,200,220,153, 47,253, 60,127,209, 55, 47,163,218,217, 58,158,242,115,143,177, 99,207, 9, 1,212, + 59, 58,254,111, 67, 32, 18, 5, 58,134,132,240,178, 55,108,208,132, 13, 30, 92, 14, 0,122,131,193, 51, 59, 39,199,197,193,193, + 1,148, 82, 24,141,198,135, 98,136,205,113,195,113,145,145, 22, 71,198,235,106,102,127,242, 73,203,153, 51,103,162,168,168, 8, + 12,195,128,207,231, 63,212, 94,173, 86, 67,165, 82, 97,236,216,177,248,118,241,226, 78,182,104,154, 76, 38, 50,105,254,252, 57, + 31,206,153,211,108,226,196,137,156,218,223,189,238,238,238,216,185,107,151,112,229,202,149,129, 31,125,251,237,216, 87, 68,162, +187,214, 52, 75,154, 55,135,187, 76, 38, 49, 59, 89, 0, 16, 25, 25,137,213,171, 87,139,198,141, 27, 39, 28, 60,120,240,146,171, +173, 90, 45, 95,218,181,235,109,143,136, 8,103,161, 72, 20,104,235,249, 4,128, 74,173, 54,110,233,242,229,110, 23, 46, 92,128, + 76, 38, 67, 81,209,131,223,163,132, 16,180,111,223,158,188,250,234,171, 46, 77,131,130, 58, 88,254,148,158, 24,127,243, 69,158, + 21,106, 79, 21,154,121, 40, 70,171,186, 67,164,186,131, 53, 87,131,201,100,122,200, 97,177,230,104, 61, 10, 21, 21, 21,168,168, +168,192,250,245,235, 33, 16, 8,106,110,190, 0,160,215,235,173,238,175, 86,171, 91,248,251,251, 67,161, 80, 32, 34, 34,226,161, +145, 44,129, 64, 0, 30,143, 7,129, 64, 0,145, 72, 4,157, 78,135,224,224, 96,168,213,234, 22, 13,105,106, 52,154,214,238,238, +238, 0, 30,220, 96,117,186, 7,223,121, 58,157,174,198, 94,189, 94,143,242,242,114, 84, 85, 85,161,178,178, 18, 42,149,170,141, + 45,253,101, 89, 22, 55,110,220,184, 19, 25, 25,217,154,203,229,194,209,209, 81,170, 82,169,106, 98,139,202,202,202,176,113,227, + 70,213,107,175,189,230,185,127,255,126,171,142, 22, 33, 4,239,190,251, 46, 68, 34, 17,212,106, 53,190,255,254,123,188,247,222, +123, 16, 8, 4,168,172,172,196,234,213,171, 49,109,218, 52,240,120, 60,232,245,122, 44, 95,190,188, 94,173,244,244,244,236,243, +231,207,183,105,219,182,173,219,158, 61,123,228,125,251,246,245,234,223,191, 63, 36, 18, 9, 52, 26, 13,140, 70, 35, 58,117,234, +132,168,168, 40, 20, 23, 23,227,208,161, 67, 37,225,225,225,158, 23, 46, 92, 96,139,138,138,114, 27,178,179,182,243,196,227,241, + 96, 50,153, 32,147,201, 80, 81, 81, 1,185, 92,142,130,130, 2,228,229,229,129,199,227,193,218,143,121, 15, 15,143, 23,227,226, +226,184, 0, 32,145, 72,208,186,117,107,204,153, 51,135,209,104, 52, 35, 1, 28,170,110, 54,112,221,186,117,123,206,156, 57,195, +243,247,247,199,173, 91,183,224,229,229,197, 19,139,197, 86, 29, 45, 95, 95,223,159,126,249,229, 23,119,179,115,109, 62,207,106, +245,131,143, 99,216,176, 97,238,155, 54,109,250, 9,192,160, 6, 13,125, 6,113,149, 64,208, 58,206, 89,177, 45,185, 56,118,198, + 7, 75,120, 81,113, 15,126,188, 78,152, 8,222,215,139,167,199,142, 30,226,124,192, 85,162,108,112,148, 25, 0, 6,198, 7,173, +124,254,249,190,156,151, 71, 37,102, 9, 4,174, 97,107,214,126,230,237,237, 51,238,175, 6, 28,103,120,120, 58, 35, 44, 68, 72, +118, 30,184,233, 61,107,246,231,186,164, 77,223,220,253,121,107,242, 0, 33, 63,165, 31,128,183,234,211,206,188, 83,177, 95,173, + 19, 71, 43, 75,175, 17,119,159, 46,104,221, 42, 18,222, 94,229, 88,247,211, 54,132, 54,109, 15,157, 78, 7,103,103,103, 7,147, +201,100,224,114,185, 73,182, 56, 89, 0,112,252,120, 5, 27, 27, 91,161,231, 86,178,204, 59,239,125,253, 66,223,129,207,199,244, +238, 29,207, 30, 77, 57,106,232,210,198, 80, 56,176,127,107,217,225,148,149, 89,133, 5,127,134,199,182,232,138,244,180,212, 1, + 0,185, 1, 88,190, 96,111,100,209,195,205,154,145,212,109,219, 38,176, 26,246,138,228,139, 47,175, 15, 76, 72, 24, 19,215,189, + 91,119, 54,229,216, 9,189, 16, 37, 55,157,187,118,206,127,103,252,192, 61, 63, 36, 45,239,119,248,208, 79,205, 21,202,220,228, +159,126,170, 63, 4,225,223,136,137, 97,124,120, 34, 17, 71,158,154,202,180, 24, 55, 78, 7, 60,248,127,116,112,112,192,190,125, +251, 32, 20, 10,107, 30, 2,129,160,230,185,143,143,143,121,241,149, 77,154, 0, 80, 88, 88,136,162,162, 34,184,184,184,192,203, +203, 11, 69, 69, 69, 56,123,246, 44, 50, 51, 51,193,231,243, 49, 96,192, 0,112,234,137,109,174,171, 57, 98,198,140,190,209, 45, + 90, 4,215,117,178, 0,192, 96, 48,160,172,172, 12, 67,134, 12,225, 28, 58,116,200,247,240,189,123,207,127, 2,252, 45,216,188, +182,102,155,132,132, 82,217,206,157, 22,143,221,182,109, 91,242,219,111,191,137, 6,244,239,255,254,244, 47,191, 92,249,237,166, + 77,247, 77, 12,227,219,152,190,115, 56, 28, 14, 33, 4, 65, 65, 65, 40, 43, 43, 67, 85,213,131, 25,108, 71, 71, 71,184,185,185, +193,104, 52,130,165,148,111, 73,243, 73, 81,159, 47,242, 44, 96,118,170,136,133,204,240, 60, 0,168,238, 20, 0,244, 52,191, 65, + 8, 1,203,178, 54, 57, 89,124, 62,223,106,204,149, 13, 70,254,109,155, 45,142,150,217, 86,177, 88, 92,243,143, 86,219,193, 50, +219,201,225,112,192,229,114,173,222,196, 1,128,101, 89,110,101,101, 37,118,237,218,133, 30, 61,122,212, 76, 75, 41, 20, 10, 84, + 84, 84, 64,161, 80, 64,171,213, 34, 59, 59, 27,199,143, 31, 71,243,230,205, 1, 27,147,191,222,189,123,247, 82,104,104,104, 59, +243, 77,188, 87,175, 94,129, 27, 54,108, 40, 24, 52,104,144, 63,165, 20, 31,127,252,113, 73,167, 78,157, 60,107,223,228,173,193, +229,114,113,246,236, 89, 52,111,222, 28,148, 82, 8, 4, 2,100,100,100,192,219,219, 27, 44,203,130,199,227, 65, 46,151,195,201, +169,225, 28,137, 55,110,220,120,253,141, 55,222, 40,112,113,113,105, 89, 90, 90, 90, 40, 18,137,186,157, 62,125, 58,200, 96, 48, +192,217,217, 25,206,206,206, 56,120,240, 32, 92, 93, 93, 49,117,234,212,123, 26,141,230,172, 84, 42,245,209,104, 52,215,138,138, +138,108,154,246, 49,195, 48, 12, 84, 42, 21,202,203,203, 81, 86, 86, 6,165, 82, 9,173, 86,107,213, 70, 75,116,235,214, 13,201, +201,201,220, 5, 11, 22,252,112,247,238,131, 31,134, 97, 97, 97,152, 58,117, 42, 55, 32, 32, 0,217,217,217,184,116,233, 18, 12, + 6, 3, 40,165, 13,254,243,242,249,252, 94,211,167, 79,239, 26, 28, 28, 76, 12, 6, 3, 88,150,133, 78,167,131,249,249,189,123, +247, 16, 29, 29,205, 9, 9, 9,121,142, 16,210,203,150,133, 21,118, 30, 32,187,183, 23, 1,124,111,128,227, 12,170,217,139,210, +146, 71, 43, 27, 89, 92, 92,252,229,204, 79,126, 27,247,237, 34,131, 79, 94, 33, 16, 25, 55, 20,225, 49,125,240,250,171, 12, 22, + 44,222,133,224,144, 72,228,230,230,162, 87,175, 94,130,130,130,130, 55, 0,204,176, 85, 59, 37,229,188,233,232,193, 67,195, 71, +188, 52,166, 93,124,252, 32,230,200,145,131,184,113,237, 72,218, 27, 47,189, 88, 76,217, 42,226,238, 42,185,146,113,235, 98,120, +203,214, 61,161,103, 76,221,128, 79, 23, 1,168,247, 75,229,206, 29,170,255,236,179,207, 56, 7,246,254,244,234,203,163,199,182, +234,211,167,159,241, 72,202, 47,184,116, 46,229,143, 37,139,222, 60,181, 96,249,246, 94,125, 7,188, 24,235,229,115,246, 96, 92, +132,110,124,144,135, 75,163, 82,166,252,155,224,137,197, 44,170,191, 23, 57,132,128, 82,250,144,147, 85,215,209,226,112, 56, 86, + 7, 0,106,107,154,161,148,214,252,160, 94,179,102, 13, 68, 34, 17,132, 66, 33,248,124,190,213,240,139,218,154,105,217,217,189, + 55, 38, 37,137, 44, 57, 89,165,165,165, 40, 45, 45, 69, 85, 85, 21, 70,141, 26, 37,248,236,226,197,182,245,200,213,104, 6,251, +249,233,164, 18,137, 44, 61, 61,221, 63, 38, 38,230, 33,123,149, 74, 37, 36, 18, 9,146,182,108, 17, 36, 38, 36,188,221,231,224, +193, 37, 0, 26,204,127,101,169,239,132, 16,120,123,123,195,205,205, 13,132, 16, 48, 12,131,162,162, 34,164,165,165,225,226,197, +139,224, 18,210,232,116, 70,141,193,146, 47,242, 44, 97,201,201, 2,254, 26,209,178,120, 53, 54,198,209,226,114,185,143, 60,170, + 85, 31,182, 76, 29, 58, 56, 56, 92, 47, 40, 40,232, 18, 16, 16, 0,134, 97,106, 28,173,186, 83,135,192,131,209,143,171, 87,175, +194,193,193,193,226,112,127,109, 77, 74,233,115, 29, 58,116,192,238,221,187,145,154,154,138, 63,255,252, 19,106,181, 26, 58,157, + 14, 26,141, 6,105,105,105, 96, 89, 22,113,113,113,144, 74,165, 86, 53, 1, 64,165, 82, 21,242,249,252, 72,137, 68, 82,179,205, +207,207, 15,165,165,165,172,209,104,196,198,141, 27,149,190,190,190, 82,137, 68, 98,179,227, 74, 8, 65,113,113, 49, 2, 3, 3, +107, 98,180, 42, 43, 43,225,237,237,109,118, 44,160,211,233,224,228,228,100,117,234,144, 82,170, 5, 48,189,150,118,251, 17, 35, + 70,252,188,109,219,182,166,199,142, 29,195,133, 11, 23,224,229,229,133,255,252,231, 63,127,230,228,228,188, 76, 41,189,104,147, +145,141,192,150,107,168,180,180,116,215,245,235,215,159,235,208,161, 67,205,183, 68,175, 94,189, 72,175, 94,189, 60,205,175,213, +106, 53,228,114, 57,126,255,253,119, 28, 59,118, 12,132, 16,100,101,101,153, 52, 26,205,207, 13, 28, 91, 16, 18, 18,178, 97,206, +156, 57,142, 12,195,212, 92,219, 18,137, 4, 98,177, 24, 2,129, 0, 92, 46, 23, 57, 57, 57, 24, 50,100,136,203,119,223,125,247, + 19, 33,164, 25,165,212,250,133,250,140, 80,161,129,225,234, 13,165, 75, 92,180, 79,218,218, 53, 11,186, 76,152, 8,243,212, 33, + 19, 23,237,157,118,245,134,204,165,157, 55, 12,174,194,134,117, 14, 29,187,255,142,222,120,104,240,161,195, 39, 71,126,240,254, + 84,126, 88, 88,116,241,177, 19,151,131,251, 48,159, 19, 15, 79,103,148,150, 40,145,115, 79,134,187,185,122, 26, 22, 22, 93,124, +233,247,235,162,197, 75,151,133,171,212,218,237, 39, 78, 21,254,210,144, 54,165, 84, 75, 8, 25,186,100,133,232,212,152, 55,218, + 11, 37, 18,127,148,149, 92, 71,112,176, 23,134, 36,182,196,143,155,206,194,197,197, 29, 62, 62, 62,224,112, 56, 82, 91,251, 94, + 82, 82, 66,118,109,253,117,220,107, 99,223,236,212,191, 95, 2,115,248,200, 1, 94,234,209,253,103,127, 90,251,209, 30,202, 85, + 57, 16, 90, 41,105, 18,234,123,237,206,237,171, 47,247,142, 31, 5,137,192,169, 57, 16,101,241,130,173, 89, 96, 64,113,143,195, +129,248,181,177, 19, 58,247,239,255, 60,115,228,200, 94, 28, 57,184,233,252,188,121, 77, 14,254,153,191, 69,112,238, 98,158,120, +232,240,183,202,147, 15,221,212,191, 56, 56, 52,211, 95,218,250,169,200,161,247, 52,193,229,241,100,140, 78, 23, 20,216,191, 63, + 87,157,155,203,119,244,241, 97, 0,192,104, 52, 90,117,180, 0, 88,156,130,174,171,105,171, 45,106,181, 26, 44, 96,209,217,168, +171, 89, 84, 92,220,164,250, 71,120, 13, 70,163,177,198,201, 42, 45, 45, 69, 69, 69, 5,164, 82, 41,228, 58,157,197, 41,206,186, +154,253, 58,118,220,248,217,167,159,206,216,185,107,151, 0,248,203,201, 50, 63,248,124, 62, 22, 46, 90, 36,120,239,131, 15,222, +122,155,199,155,210,152,243, 9, 60,248,209,206,229,114,193,227,241,144,155,155,139,123,247,238, 33, 55, 55, 23,185,185,185,144, + 72, 36,160,245,156,207, 39,197,179, 26,159, 5,252, 53,117, 88,123, 10,209,166,244, 14,141, 9,134,183,213, 49, 48,153,234, 77, +164,252, 55,108,113,180, 84, 42,213,177,227,199,143,119, 28, 58,116, 40,239,252,249,243,240,245,245,173,113,180,204,127,205,211, + 81, 14, 14, 14,216,179,103,143, 65,165, 82, 53, 88,159, 73,173, 86, 31, 63,120,240, 96,187,185,115,231,242, 95,127,253,117,164, +167,167, 99,226,196,137,168,168,168,128, 82,169, 68,105,105, 41,212,106, 53, 58,118,236, 8,177, 88,140,107,215,174, 25,213,106, +117,131, 41, 14, 40,165,180,184,184,184,202,203,203,203,175,238,123,195,135, 15,247, 89,181,106,149,250,214,173, 91,198, 46, 93, +186, 56, 3,182, 57, 28,102,182,110,221, 90, 51, 82,151,153,153,137, 85,171, 86,213,196,100, 93,190,124, 25, 95,127,253,117, 77, +238,179,198, 64, 41,189, 24, 27, 27,203, 24,141, 70, 52,111,222, 28, 1, 1, 1,208,106,181, 88,182,108, 25,243, 79, 56, 89,182, +162,213,106,119,142, 25, 51,230,195, 43, 87,174,248,241,120,188, 7, 67,218,213,253, 51, 24, 12,184,125,251, 54,210,210,210,112, +235,214, 45,148,149,149,213,252, 16,184,122,245,106,185,209,104,220, 94,159,174,151,151,215,199, 63,254,248,163,175,131,131,195, + 67,215,179,121, 52,212, 60, 74, 42,151,203,225,234,234,138, 62,125,250,120, 31, 63,126,252, 99, 0,115,255, 27,253,254,167, 33, +132,144,222, 61,184,237,223,123,103, 40,134, 37, 58,220,223,157,156,255,219,215,139,167, 87, 7,195,123,167, 13, 75, 12,184,255, + 71,134, 43,134,191,176,183,253,137, 83, 36,175,161, 88,186,234, 24,171,125, 29, 59,186,167,238,222,191,255,167,217, 51,223,191, + 60, 99,250,155, 94,106,205, 29,113, 88,136,144, 0,192,221, 92, 61,189,150,206,106,191, 94,242,254,229, 5,139,190,227,200, 74, + 43, 38, 94,184, 80,127,122,131,218,206, 75,108, 4,196, 97, 81, 61, 10,194, 35,186,134,158, 63,155, 4, 71, 7, 13, 34,163,218, +163,127,191,231,144,122,242, 42,138,228, 90, 20, 22, 22, 66,167,211, 53,152, 46,225,214,181, 61,175, 82, 66,131, 9, 37,247, 8, +135,138, 95, 29, 51,190, 91, 66,194,243, 52, 57,121, 63,179,119, 79,210,153,237,155, 87,236,228, 8,248, 60,141,222, 69, 79,136, + 86, 1,206,141,244, 42,213,131, 31, 52,124,145,160,254,225,215,234,196,174, 49,177, 81,190,175,142,153,232, 50,104,224, 16,122, +240,224, 94,118,251,182,141,169,219,215,183, 72, 98, 57, 74, 65,225,125,181, 72,161, 52, 42, 40, 17,186, 86, 41, 89,181,236,110, + 51,173,127,194,240,255, 55, 78,251,147,194,160,211,229, 85,221,191,239,231,222,163,135,232,246,167,159, 58,248,116,236,168, 37, +213, 49,196, 13, 57, 90, 92, 46, 23,224,112, 44,126,233,213,213,180,213, 22,141, 70, 3, 22,176,184, 72,201,154, 38,195, 48, 15, + 57, 89,102, 71,171, 26,155,236, 92, 59,111,222,249,224,254,253,203, 78,158, 60,233,211,179,103, 79, 82, 89, 89,137,202,202,202, +135,156, 45,127,127,127, 18, 19, 23,231,176, 53, 53, 53,204,210, 23,147,165,243,105, 75,223, 57, 28,206, 63,238,104, 61,203, 88, + 26,201, 50,211, 96, 9, 30,243,136,150, 45,142,150,141, 35, 90, 70,163,209, 8,111,111,111,148,148,148,212,123,227,231,112, 56, +144, 72, 36,230, 57,226, 6, 87,222,233,116,186,101, 51,102,204,152, 60,112,224, 64,207,200,200, 72,200,229,114,248,248,248, 64, + 44, 22,215,196,142,153,245, 46, 95,190,140, 31,127,252, 81,169,211,233,150, 89,209, 92,186,104,209,162,119,134, 13, 27,230,238, +235,235, 11, 55, 55, 55, 92,187,118, 13,110,110,110, 80, 42,149,200,200,200,128,147,147, 83, 77,220,206,254,253,251, 43,117, 58, + 93,131,113, 63,106,181,154,158, 62,125,218,224,228,228,116, 77, 46,151,115,203,202,202,120,229,229,229, 60,165, 82,201, 87, 40, + 20,252,195,135, 15,123,186,184,184,168, 79,156, 56, 33, 15, 14, 14,230,254,249,231,159, 92,163,209,104,213,123, 37,132, 96,202, +148, 41, 16, 8, 4,208,233,116, 88,182,108, 25,102,204,152, 81, 19,147,181,104,209, 34,204,153, 51,167,198,113, 94,183,110,157, + 53,201,135,160,148,194, 96, 48,192,104, 52,194,104, 52,218,228,252, 62, 14,182, 56,236,148,210, 34, 66, 72, 98,135, 14, 29,142, +238,216,177,195,163, 58, 39, 25,100, 50, 25,100, 50, 25,228,114, 57,170,170,170,192, 48, 12, 2, 2, 2, 32,147,201,176,119,239, + 94, 69,101,101,101,255,134, 86, 28,114,185,220, 49,221,186,117,227,213,181,193,252, 43,207,236,188,139, 68, 34, 20, 20, 20,160, + 87,175, 94,194,147, 39, 79,142,193, 51,238,104,153, 29,152,232,112, 8,250,245, 31, 39,136,142,237,172,255, 35, 45,249,126, 84, +168,236,254,232, 33,206, 7, 0,224,234, 13,153,203, 31, 25,174,136,142, 77,164,253,250,187,181,147, 21,173,109, 17, 19, 65, 12, + 13,149,235, 1, 0, 23, 7,209,136,190,241, 29, 11,156,164, 82,206,215, 75,214, 29,250,254,251,165,109,119, 30,248, 43,189,195, +215, 75, 30,164,119,232, 27,223,145,189,117,243,214, 8, 0,245,167,119,168,227,188, 36, 38, 14,190,242,227,134, 31,113, 43,237, +132,255,135, 83, 90, 10,203,100, 70, 72, 28,131,208,174,181, 15,214,110,184,142, 63,254,248,163, 72,175,215,247,106,168,239,148, +208,224,180,244, 27, 17, 45, 98, 99,124, 95, 29, 51,193, 57, 49,113, 8,146,147,247, 97,243,198,245,167, 95, 28, 53,236,135,252, +114, 37,215,155,239, 32,112,160,172,144, 43,112,225, 9, 68,146, 98,189,254,193, 26, 8, 62, 95,236, 12,140, 96, 27,152, 57,196, +164, 9,163, 93,122,199, 15,193,129,131,251,176,121,227,218, 83,159,196, 14, 95, 31,218, 38,154,116,108,187,248,173,208,166,161, + 33,170, 42,153,146, 67,132, 6,173,150,117, 90,188, 49,231,155,187,115,198,220,189,114, 99,196, 18,251,170,195,135,184,182,121, +208,160, 14,239,221,185, 35,240,234,218, 85, 82,144,154,234, 64, 30, 84, 34,105,208,209,226,241,120,160,245, 79,117, 61,164, 73, + 54,109,226, 0,104,112, 17,150, 64, 32,128, 90,173,134, 17,168,239, 75,240, 33, 77,191, 35, 71,238,223,185,115, 39,220,221,221, +253, 33, 39,171,172,172,172,230,185, 86,171,133, 90,173,134, 68, 34, 73,179, 69, 83,118,250,180,246,171, 41, 83,230,190, 60,106, +212,138, 99,199,143,139, 61, 60, 60,160, 80, 40, 30,114,180,244,122, 61,122,247,233, 35, 88,116,229,202,171, 0,230,217,114, 62, +125,122,245,178, 26, 15,204,229,114,193,254,195, 83,135,207, 58,150, 70,179,128, 6,226,138,204, 78,147,173,171, 14, 45,221, 32, + 9, 33,241,117, 54,205,105,215,174,157, 54, 51, 51, 19,193,193,193, 53,206, 74,237, 99, 58, 59, 59,195,213,213, 21,151, 47, 95, +198,151, 95,126,169, 1, 48,167, 33, 77, 74,105,165, 90,173,126,169,111,223,190, 26, 30,143,135,168,168,168,154,252, 89, 44,203, + 66, 40, 20, 66, 42,149,226,202,149, 43, 24, 60,120,176, 90,173, 86,191, 84, 55,135,150, 5, 77,133, 90,173,126,165, 95,191,126, +234,244,244,116,116,235,214, 13,127,252,241, 7,170,170,170, 80, 85, 85,133,236,236,108,196,196,196, 64,173, 86, 99,213,170, 85, + 26,181, 90,253, 10,165, 84,209,144,102,101,101,229,224, 25, 51,102,112,127,254,249,231,208,128,128,128,216,246,237,219, 71,246, +233,211,167,217, 11, 47,188, 16, 50,104,208, 32,191,240,240,112,109,255,254,253,189, 6, 14, 28,232,165, 86,171,249,191,253,246, + 91,161,209,104, 28,104,229,124, 2,120,224,156,100,102,102,214, 76, 21,242,120, 60,148,148,148,212,100,238, 55,127, 41, 89,114, +132,235,211, 52,195,178,108,141,131,101,118,184,172,221, 3,234,209,180,122,227, 16, 10,133,230, 17,207,191,181,181,240, 25, 93, +189,121,243,102,223, 30, 61,122, 92, 29, 55,110, 92,101, 81, 81, 17,156,156,156, 16, 22, 22,134,136,136, 8,120,122,122,194, 96, + 48, 96,207,158, 61,170,189,123,247, 94, 87, 40, 20,189,234,230,208,170,171,201,225,112,178, 45,125,201,154, 71,179,204,142,150, + 88, 44, 70, 64, 64,128,249,220,102,219,208,247,199,226, 31,215,172,118, 96,250,244,238,223,116, 80,194, 80,151, 61,251,206, 10, + 87,172,220,123,189, 93, 60,214,121, 52, 81,238,247,104,162,220,223, 46, 30,235, 86,172,220,123,125,207,190,179,194, 65, 9, 67, + 93,250,244,238,223, 52, 61,237, 86,228, 67,117, 15, 45,216, 41, 22,139, 59,119,235,218,174,252,228,153, 83,236,130, 69,223,113, +122,247,122,241,202,250, 31,246,236, 89,255,195,158, 61,189,123,189,120,101,193,162,239, 56, 39,207,156, 98,187,117,109, 87, 46, + 22,139, 59,219,210,247, 73, 19, 70,187, 36, 12, 26,130,228,228, 61,204,206,173,171, 22,109,219,149,213, 99,252,228,211,178,204, +204, 63,104,113,222, 17,240, 57,185,184,121,243,166, 66,175,215,247,178, 20, 8,111, 73,115,226,155,163,107, 59, 89,191,122,248, +118, 91,119,243, 38, 76, 41, 41,191, 24,143, 31,191,162,249,245,106,177,226, 82,122, 73, 89,129,188,236, 79,165,178, 84,207,178, + 38,152, 76, 38,238,103,159, 61, 8,216,173,239, 51,234,210,165, 39, 78, 28,219,130,141, 27,214, 40, 88, 22,218,225, 59,118,152, + 70,140,248,148,134, 52,105, 18,146,180,117, 11, 73,124,126,168, 11, 5,216,193,195,134,184,254,188,237,103,210,180,121,211, 38, + 97, 97, 15, 82,218, 60,147,215,210, 63,160, 57,143,210,114,101,110,238,169,203,223,125,167,243,121,233, 37,119,161,143,143, 51, + 76, 38, 98,254,126,175,239,193,227,241, 30, 26,129,105, 72, 51,192,211, 51,127,255,254,253,136,136,136, 64, 64, 64, 0,106,199, +200,154, 19,114,123,120,120, 96,215,174, 93,160,192, 37, 91, 52,219,132,134, 94, 94,248,213, 87,122,150,101, 81, 94, 94,254,183, +209,172,242,242,114,176, 44,139,131, 7, 14,232,149, 85, 85, 27,109,237,123, 47, 46,183,234,229,238,221, 23, 36, 36, 36, 24,238, +220,185, 3,150,101, 81,123,100,171,184,184, 24,142,142,142,208,234,116, 65,132, 16, 7, 91, 52,139, 15, 31,150,214,179,166,163, +134,186, 35, 90,255,196,231,254, 44, 99,142,207, 50, 63,106, 59, 93, 13,142,104, 49, 12,131,160,160,160,135, 74,186,112, 56,156, +135, 30,141, 89,113, 72, 41,221, 68, 8, 57,210,191,127,255,185,157, 58,117,154, 52,119,238, 92,110,100,100, 36, 20, 10, 5,220, +220,220,224,237,237,141,140,140, 12,236,223,191,223, 84, 82, 82,178, 26,192,124, 91,150,208, 83, 74, 83, 9, 33,137, 45, 91,182, +220, 54,107,214, 44,151,126,253,250,241,131,130,130, 64, 41,197,149, 43, 87,176,123,247,110,195,250,245,235,149,213, 78,150, 77, +193,203,148,210,163,132,144, 23, 7, 14, 28,152, 52,102,204, 24, 39,147,201,196,207,206,206,134, 78,167,131,209,104,196,189,123, +247, 12,201,201,201, 85,106,181,122, 52,165,244,168, 13,122,151, 9, 33, 49, 41, 41, 41, 99,126,251,237,183, 47,199,141, 27,231, +209,167, 79, 31, 1,195, 48, 56,115,230,140,188, 77,155, 54,222,197,197,197,134, 93,187,118,149,106,181,218, 57, 38,147,201,166, + 18, 60,132, 16, 40,149, 74,120,122,122, 66,167,211,129,101, 89,232,245,122, 56, 58, 58,214,148, 77,162,148,162, 49,193,245,181, + 97, 24,134,107, 48, 24, 48,106,212, 40,176, 44,139,101,203,150,129, 97,152, 70,139,185,184,184, 92,186,122,245,106, 98,235,214, + 15, 18,190,115,185,220,154,107, 72, 36, 18,193,211,211, 19, 30, 30, 30, 72, 78, 78, 6,159,207,111, 48,203,190,153,234, 76,239, +109, 8, 33,157,175, 95,191,254, 26,128,214, 6,131, 33,192,100, 50, 17, 14,135, 83, 72, 41,189,166, 84, 42,127,176,181, 4, 79, +113,113,241,151, 99,199,142,109,179,101,203, 22, 71, 30,239,175,127, 13, 30,143, 7,145, 72, 4,115,114, 76, 74, 41,244,122, 61, + 62,254,248, 99,165, 74,165,250,178,177,231,226,105,165, 93,251,142, 88,187,106,185,227,241, 19, 71,228, 55,179,176,187,118, 10, + 7, 87, 33,112,226, 20,201,147, 21,173,109, 81,112,255,190, 99,187,246, 29,109,210, 52,234, 13,165,175,140,158, 22, 92, 93,130, +231,227,236,236,156, 53, 73,155,190,185, 11, 0,139,151, 46, 11,151,149, 86, 76,188,117,243,214,136, 53,107,182,118, 54,234, 13, +165,182,104,254,229,188, 36, 41, 64,161,165,148, 94, 32,132,132, 14,126,233,240,156,230, 77,157,159, 47, 46,213,228, 87, 85,169, +223,165,148, 90, 92, 50,111,137,174, 93,122,224,196,209,159,177,121, 99,146,146,178, 92,173,167,167, 39, 5,128,155, 55, 61,233, +205,155, 21,244,175,184, 98, 87, 21,159,254, 49,127,218,187,125,166, 41,148,101, 75,151,174,108, 56,113,109,203, 86,157,208,178, + 85, 39, 76,126,247, 35,151,152,216,168, 96, 0,216,177,131,154,226,194,201, 47,115, 63,249,244,249,249,243, 63,133,178, 82, 7, +115,185,158,140, 27,233, 7,238,220,161,182,173, 2,250, 23, 49,151, 97, 46, 96,218,180,112,117, 89,153, 87,215, 15, 63,244,228, +125,240, 1,167,161, 96,248,218,255,191,182,104, 94,188,118,237,192,196,241,227,243,231,205,157,219,127,245,154, 53,146, 22, 45, + 90,160,168,168, 8, 81, 81, 81, 8, 8, 8, 64, 74, 74, 10,118,109,223,174,170,168,172,156, 3,224,123, 91, 52, 55, 29, 60,152, + 17, 25, 27, 91,178,102,205, 26,255,132,132, 4,162, 82,169,160, 80, 40,160, 80, 40,160,211,233, 80,157, 16,154,102,102,101,221, + 52, 26,141,171,109,209,236,250,225,135,158, 38,185, 92, 60,191, 99,199, 60, 1,203, 46,124,113,216,176, 25,243, 63,255, 92,212, +180,105, 83,162,211,233,106, 70,181, 12, 6, 3, 28, 29, 29, 13,122,189,222, 3,192,223, 70,171, 44,105,138,214,175,103,228,114, + 57,188,188,188,106,210, 53,213,206, 75, 88, 89, 89, 9, 74,169, 61,153,238, 35, 64,234,187,151,187,187,187, 95,226,241,120,129, + 64,195,181,243,106,111, 51, 26,141,121,114,185,188, 93,173, 54,241,148, 82,139,241, 80,132,144, 48, 0,255,233,221,187,247,139, +211,167, 79, 39, 39, 79,158,196,222,189,123,233,221,187,119,119, 2,152, 83,223,151,164, 21, 77, 39,145, 72, 52, 85, 42,149,198, +155, 83, 56, 56, 56, 56, 92, 87,169, 84,199,116, 58,221,178,250,178,193, 91,209,116, 22,137, 68, 83,164, 82,105,223,202,202,202, +214, 0,224,228,228,116, 85,165, 82,165,232,116,186,229,180,158, 66,213, 86, 52, 37, 46, 46, 46, 95,122,122,122,190,242,193, 7, + 31,120,156, 62,125,186,240,196,137, 19,130,138,138,138, 45,122,189,190,222,162,210,150, 52, 61, 60, 60, 46,113,185,220,192,127, +226, 51, 2,128, 86,173, 90, 37, 15, 30, 60, 56, 97,244,232,209, 48, 26,141,248,254,251,239,145,146,146,114, 32, 43, 43, 43,177, +190,125, 44,105, 18, 66, 60, 3, 3, 3, 79, 78,154, 52, 41,100,212,168, 81, 14,110,110,110,224,241,120, 80,169, 84,184,125,251, + 54,174, 92,185, 66,247,237,219, 87,117,249,242,229, 60,181, 90,221,147, 82, 90, 98, 77,243,113,177,164,201,231,243,123, 4, 5, + 5,109,157, 55,111,158, 83,223,190,125, 37, 30, 30, 30,224,114,185, 48, 26,141, 40, 44, 44,196,141, 27, 55,112,228,200, 17,213, +206,157, 59, 85,165,165,165,163, 40,165,167,254, 23,118, 62, 73,205,152, 8,242, 73,157, 66,209,245,102,123,111,168,173, 45,118, +246,233,233, 63,100,196,139, 3, 7, 0,192,142, 93,135, 14, 31, 63, 89,208, 96, 81,233,134,236,180,102,171, 45,154,209,225,220, +121,105,233, 55, 30, 74,104, 25, 27, 19,151, 25,221, 98,216, 23,182,104,153, 51,195,215,237,123,173,108,251,127, 81,103,154,213, + 92,120,250,163, 57,179,241,159, 47, 23, 96,223,142, 61, 7,210,239,208,154, 50, 65,207,226,181,244, 79,106, 18,242,160, 8,178, +131,159, 95,247,101, 44, 59,251,143, 27, 55, 28,107,255, 96, 51,143, 60,215,254, 81,233,239,239, 95, 92, 80, 80,224, 99,139,102, +226,183,223, 26,212, 82,169,104,246,194,133, 61,170,180,218, 30,243,231,207,231, 93,188,120, 17,171,190,251,142,209,230,229, 37, +201,129, 41,150,102, 67, 26,210, 12,153, 50, 69, 60,115,213,170,215,195,154, 55,247,126,237,181,215,248,124, 62, 31, 42,149, 10, +247,239,223,199,209, 35, 71,244,233, 55,111,166, 43,149,202,231, 41,165, 5,182,106, 38,126,251,173,193, 53, 44, 12, 14, 94, 94, +244,120,106,170,203,196,169, 83, 39, 53, 9, 13,117,233, 63, 96, 0,223,217,217, 25,229,229,229,200,206,206,198,158, 61,123,138, +171,170,170,252, 41,165, 38, 91, 52,147,126,251,173,229,193, 83,167,134,127,241,197, 23,194,184,184, 56,184,184,184,160,178,178, + 18, 55,110,220,192,169, 83,167,116,171, 87,175, 86, 40, 20,138, 73, 12,195,236,175,207,206,127, 59,245, 77, 29,214,235,104, 61, +161,131, 90,253, 32, 8, 33,237, 0,124, 82,253,242,115,106,189,102,224, 51,251, 69, 97,161, 77,176,187,187,251, 90,173, 86, 75, + 53, 26,205, 68, 74,233,189,167,205, 78, 66, 8,175, 93,187,118,171,138,139,139, 59, 83, 74,225,226,226,114, 54, 45, 45,237,109, + 74,105,189,115,245,245,105, 18, 66,184, 0, 58, 59, 58, 58,118,116,114,114,234,161,211,233,162,171,167,223,110,170, 84,170, 83, + 6,131,225, 2,128,179,148,210,191,173,152,248,111,246,189,218,206,190,254,254,254,227, 89,150,109, 78, 8,113, 53,153, 76, 48, + 26,141, 21, 44,203,222, 86, 40, 20,235, 1,164,252,175,237,124, 82,154,177,205,201, 11,148,131,232,154, 55, 27,136,187,170,235, + 64, 16, 22, 55,211,110,211, 61,182,218, 73, 8,225, 12,140, 15, 90, 9, 60, 88,153, 72,173,148, 50,122,200,209,178,193,121,177, +133,135, 52,155,243,198, 82, 66, 31,210, 36,148,220,139,106,249,194,102, 91,180,234,115,180,108, 37, 54,146,244, 0, 69,103,150, +226,194,205, 44,122,162, 62, 59,159, 20,255, 31, 52, 23, 16,226,254,157,155,219, 89, 14,143,231, 11,128, 83, 61,250,194,178,132, +152, 40, 33, 76,237,233,173,218, 63, 44,173,105, 26,128, 22,124,145, 40,200,196, 48, 62, 69,128,227, 65,147,169,173,150,210,170, + 64,224,147, 43,148,102, 60,138,157, 6,160, 5, 87, 36, 10, 62, 72,233, 16,185, 84,218,178, 88,163,241, 2, 64, 29,165,210,155, + 74,149,106,163, 86,171, 93, 89,119,230,194, 22, 77,129, 72, 20,104, 98, 24, 31, 0,224,240,120,197,219,116,186,160, 60,103,231, +215,180, 58, 93,136,163,163,163, 81,175,215, 43,181, 90,237,104,163,209,120,188, 49,125,191,205, 48, 49,191,113, 56,221, 12, 82, +169,135,129, 16,169,158, 97, 12,122,131,225,190, 86,171,189, 14,224, 27, 74,105, 77,250, 17,187,163,213, 8,204,171,211,254,137, + 7,128,120,187,166, 93,211,174,105,215,180,107,218, 53,237,154,255,188, 38, 0, 7, 0,193, 0,184, 79,179,157,255,134, 7,128, + 9,230,231,214, 39,178,237,216,177, 99,199,142, 29, 59, 79, 61,148, 82, 53, 44,196,100,217,249,223, 66, 0, 88, 92, 57, 64, 27, + 49, 36,248, 40,171, 15,172,233,219, 53,237,154,118, 77,187,166, 93,211,174,105,215,252,255,167,105, 77,187, 49,254,199,211, 2, +105,160,214,225, 63, 61,116,246, 76, 12, 87,218, 53,237,154,118, 77,187,166, 93,211,174,105,215,252,223,106,254,127,125, 60, 94, +129,194,255,199, 16, 66,124, 8, 33, 22,203, 34, 60, 78, 91, 59,207, 30,143,243,249, 18, 66, 2, 8, 33, 1,141,108,255,183,234, + 1,118,236,216,177, 99,231,217,228,191,238,104,217,122,211,122,204,155,219, 99, 57, 62,132,144, 5,132,160,224,193,131, 44,120, + 82,109,109, 56,174,191,151,151,215,123,177,177,177, 73,190,190,190,147, 9, 33,222,141,220, 63, 92, 42,149, 46,119,116,116, 60, +233,232,232,120, 82, 42,149, 46, 39,132,132, 63,142, 77,181,180, 9, 33,100,162, 88, 44, 78,245,247,247,207, 23,137, 68,169,132, +144, 73,132, 52,162, 86,208,195,122,145,132,144,249,132,144,207, 9, 33, 45, 27,179,175, 79,220,208,237,222,113, 67,175,121,199, + 13,189,225,217,226,249,112,239,184,161, 55,188,227,134, 94,243,137, 27, 90,111,121,157, 71,229,113, 62,223,234,125,239, 61,120, + 88,223,151, 16,242, 13, 1,238, 19,130,188,199,189,150,236,216,177, 99,199,206,211, 65,163,130,225, 3, 2, 2, 94,164,148, 78, + 4, 64, 9, 33,107,243,243,243,119, 53,102,255,234, 27,207,204,234,231,139, 40,165,179, 31,167,157, 13,251, 46,165,148,206,104, +164,141, 62,132, 96, 38,203, 82, 14, 0,112, 56,228, 67, 31, 31, 31, 7, 46,151,251,183, 0, 67,147,201,228, 64, 8, 38,179, 44, + 37,213,109,103, 18, 66,150, 83, 74,101,141, 57,166,249,184,175,190,250,234,210,229,203,151,139, 29, 28, 28,144,155,155,219,111, +210,164, 73, 93, 8, 33,211, 40,165,133,214,246,151, 72, 36, 47,119,232,216,121,218,194,197, 75, 28,125,188,189,165,140,137, 53, +100,231,230, 56,124, 60,107, 70, 71,137, 68,178,188,161, 98,202,117,236, 32, 0, 38,240,120,188,145, 98,177,184,153, 86,171,189, +195, 48,204, 78, 46,151,219,255,203, 47,191,140, 27, 52,104,144, 88,169, 84, 10, 25,134,105,190,121,243,230,105, 63,254,248,227, + 64, 66,200, 16,218,192, 50,125,243,136, 14,165, 52,191,214,230,225,185,185,185,237, 4, 2, 1, 9, 11, 11,227, 0,184,102,165, +125, 13, 20, 8, 79, 59,179,163, 5, 0,196,118, 29,145,153,118,102, 7,170,159,219,210, 69,155,177,116, 45,136,197,226,213, 90, +173,246,158,249,253,106, 59,255,246,121, 91,218,151, 16,178,130, 62, 40, 31,212, 14,192,107,213, 77, 55, 81, 74, 47, 17, 66,124, +197, 34,209, 84,141, 86, 75, 0,144,199,185,150,236,216,177, 99,199,206,127, 23, 66, 72, 27, 74,233,149,234, 25,137, 4, 0, 7, +204,247,238,198,174, 58,124, 39, 43, 43,203, 17, 0, 34, 34, 34,222, 6, 96,179,163,101,233,198,211,167, 79,159, 54, 18,137,228, +161, 44,200, 26,141, 70, 72, 8,250, 60,138,243, 98, 62,134, 94,175,227,240,249, 66,112, 56,100, 90,203,150, 45,155,148,148,148, +156,230,112, 56, 73,121,121,121,229,141,234,237, 3, 77,172, 91,183, 46,194,207,207,239,111,217,154, 11, 11, 11,133, 67,134, 60, +223, 40,189,215, 9, 17,233, 68,162,142, 2, 66,252, 76, 12,227, 10, 0, 60, 30,175, 60,210,197,165,221,127,190,248,194,129, 16, +194,150,150,150, 66,163,209,224,253,247,223,151,164,167,167, 15, 5,176,210,138,141, 17,157,158,235,242,254,145, 35,135,163,149, +101,229,218,117, 75,215, 92,214,240, 4,234,208,152, 40,193,170,181, 27,221, 38,188, 62,250, 93, 66,200, 85,106,161, 28, 73, 29, + 29, 14,128, 61, 83,167, 78,141, 77, 76, 76, 20, 86, 86, 86,138, 53, 26, 77,147,164,164,164,143,219,181,107,231,216,186,117,107, +225,214,173, 91,137, 66,161, 0,165,212, 33, 42, 42,138,142, 28, 57, 82,187,109,219,182,201, 0, 86,212,163, 89,227,248,114,185, +220,101,145,145,145,243,170,251, 44,168,213,134, 31, 19, 19, 35, 5,128,140,140,140,207, 8,193,212,234,237, 22,157,108, 2,100, +197,118, 29, 1, 16, 52, 79, 59,179, 67, 28,219,109,132, 22, 20,183, 9,144, 5, 0, 1, 1, 1,243,129, 90,121,161, 30,230,102, +126,126,254, 35,213, 38, 76, 72, 72, 36,132,144,157,254,254,254,187,138,139,139, 67, 9,193,155, 13,217,249,144,205,132, 16, 15, + 15,143,177, 0, 22, 0, 24,127,243,230,205, 54, 0, 16, 29, 29, 45, 0,112,201,217,217,185,139, 65,175,127,102, 43,215,219,177, + 99,199,206,191,156, 54, 0,174, 0, 72,160,127,149,224, 89, 11, 52,222,209, 18, 2,192,233,211,167, 1, 64,244, 8,134,212,220, + 72, 72,117, 49,100, 63,191,135,195, 81, 10, 11, 11,113,242,164, 77, 85,114,108, 58,198,231,159,127,238, 88, 81, 81, 17,255,195, + 15, 63,116, 15, 59, 40,117,184, 0, 0, 32, 0, 73, 68, 65, 84, 8, 8,248, 58, 63, 63,255,124, 67, 59, 83, 74,101,132,144, 69, +213, 35, 16, 16,137,196,153,147, 38, 77,186, 82,253,118,147, 95,126,249,197, 97,240,224,193,106, 0, 57, 0, 32, 18,137, 3,184, + 92, 78,196,131,160, 55, 44,106,200, 33, 28, 65, 72,152, 80, 40,236, 61,241,219,111,153,182,131, 7,243,164, 94, 94, 4, 0,114, +110,221,242, 88,180,120,113,151,242,187,119,133, 26, 15,143,210, 82,149, 74,147,153,153, 9,145, 72, 68,184, 92,110, 91,107, 29, +150, 74,165,239,125,241,159,133, 82,101, 89,133, 70,171,172,212,115, 25,163,206, 73,226, 96,146, 21, 21,151, 58, 74,164,234, 15, + 63,249, 84,248,206,155, 99,222, 3,240,182, 21,169,201,211,166, 77,139,238,208,161, 67,192,246,237,219,137, 66,161, 0,143,199, +115,108,221,186, 53,218,181,107,103, 58,113,226, 4, 9, 13, 13, 69, 92, 92, 28,206,156, 57,131,179,103,207,146, 54,109,218, 56, +236,222,189,251, 85, 88,112,180,234, 58,215, 92, 46,231,253,168,168,168,214, 82,169, 84, 31, 17, 17,129, 55,223,124, 19,148, 82, +196,199,199,199, 57, 58, 58,238, 82,169, 84,194,140,140, 91,221,173, 57,217,178, 27,123, 71, 2,128,119,220,208,107, 0, 90,128, +226,118,241,141,189,181,167, 31,163, 51, 50, 50, 58,149,151,151,215, 4, 35,154, 11,152,119,239,222,221,218,233,172,193,124, 45, + 12, 30,156,248, 33, 64, 72,124,124,124,197,228,201,147, 57,183,110,221,122,229,133, 23,134,198,101,101,221, 70,125,118,214,185, +142,200,216,177,175,203, 28, 29, 29,135,249,251,251,103, 0,224, 9, 4, 53,126, 38,215,199,199,199,171,101,203,150,111,185,187, +187, 23,115, 57, 28,111, 10, 74,173, 93, 75,118,236,216,177, 99,231,169,226, 64,181,115,117,160,238, 27, 60, 0, 56,112,224, 64, + 77,102,218,132,132,132,122,127, 85, 83, 74,101,127,252,241, 71,144, 90,173,182, 56, 93, 98,161,253,177, 90,207,101, 92, 46,119, + 21,135, 67,222, 38,132, 32, 46,174,197,159,203,150, 45,179, 84,211, 75, 31, 23,215,226, 79, 46,151,211,148, 82, 10, 66, 56,223, +179,172, 73,102, 73,211,146,125,132,144, 69, 66,161,104, 38, 0,248,250,250,221, 61,116,232,144,126,248,240,225, 88,188,120,177, + 96,214,172, 89, 51, 66, 66, 66, 38,231,230,230, 22,213,103,103,245,235,217, 62, 62, 62, 14,235,214,173,139,152, 52,105,210,149, +130,130,130,217, 0,224,239,239,191, 0, 64, 12,128,156, 90,219,176,122,245,182,252, 55,223,124, 51, 83, 38,147,205,174, 79,243, + 69, 66,154,133, 68, 69,245,158,127,250, 52,229,232,116,164,228,215, 95,149,114,153,204,120, 71, 46,119,216,112,233, 82,226,199, + 11, 22,240,131,130,131,113,114,255,126,207, 18,181, 90,174,208,233,180, 50,153,140, 50, 12,115,182, 62,205, 90,196,122,123,121, + 59,172,249,230,251,139, 78,124, 46,235, 29, 24, 64,248,238,238, 60,142,131,179,144,203,227,232,154, 54, 9, 23, 2,136,173,231, +156,213,104, 10, 4,130, 87,251,245,235,231,176,109,219, 54, 18, 23, 23, 7, 87, 87, 87,252,250,235,175,184,122,245, 42,202,203, +203, 57, 70,163, 17,237,219,183,199,194,133, 11, 17, 28, 28,140,138,138, 10,220,187,119,207, 83, 40, 20,122, 53,112, 62, 31,186, +158,102,206,156, 9, 63, 63, 63, 48, 12,131,178,178, 50, 48, 12, 3, 71, 71, 71, 0, 64, 94, 94, 30,246,239,183, 92,145,165,161, +207,189,158,246,120,238,185,231, 42, 9, 33, 55,235,188,117,179, 86, 27,171,154, 1, 1, 1, 91,229,242,146,129,189,123,247, 70, +121,121,185,241,211, 79, 63, 69,203,150, 45, 17, 17, 17, 97,177,125,157,107,126,182, 72, 36,250, 33, 36, 36,228,155, 41, 83,166, +248,185,187,187, 67,167,211,125, 92, 84, 84,132,183,222,122, 11, 0, 48,104,208,160,150,124, 62,255,208,184,113,227, 16, 26, 26, +154, 95, 86, 86,118,239,242,229,203,111,170, 84,170, 27,143,218,119, 91,176,107,218, 53,237,154,118,205,167, 77,211, 86, 95,228, +105,164,122,154,112,109,173,215, 53,207,121,192,131, 14, 29, 56,112,128,218,208,177,210,192,192,192, 32,137, 68, 2, 0, 54, 21, +128,173,141,201,100,154,236,233,233, 89, 60,123,246,236,174, 17, 17, 17,250,201,147, 39,223,200,206,206,158, 83,187, 77,104,104, +232,151,223,125,247, 29, 50, 51, 51,115, 22, 44, 88,112,166,164,164,164, 81,117,204, 40,165,179, 8, 33,203, 0,160,176,176,176, +100,255,254,253, 45, 79,159, 62,253,246,210,165, 75,189,222,121,231, 29,193,123,239,189, 55, 26,192, 98,107, 58, 92, 46, 87,109, +105,186,208, 18,126,126,126,122, 75, 49, 92,102, 6, 19, 34,113, 22, 10,123,205, 63,125,154,234,115,114,212, 63, 46, 89,226,180, +230,247,223,231, 25, 41,245,241,246,246, 70,183, 46, 93,170,196, 92,110, 73,113, 81, 17,235,221,172, 25, 55,251,208, 33, 79,141, + 80, 88,176,109,219, 54, 69,105,105,233, 94,107,199, 39,132, 40, 89, 74,245,142,129,193,198,225, 67,251,198, 93,188,112,245,150, +147,183, 39,167, 77,235,184,150,183, 50,115, 46,131,101, 13,132, 16,139, 53, 25,107,227,226,226, 18, 81, 90, 90, 10,165, 82, 9, + 47, 47, 47, 44, 91,182, 12,190,190,190, 80,171,213, 72, 75, 75,163,129,129,129,228,244,233,211, 8, 12, 12,132, 92, 46,135, 94, +175, 71,101,101,101,177, 78,167,179, 88,155,145, 82, 42,227,241,120, 63,113, 56,228,117, 66, 8,154, 54, 13,203, 93,185,114,165, +158,101, 89, 68, 71, 71,227,133, 23, 94,192,238,221,187,145,150,150,102, 30,121,210,135,132, 52,201,229,112, 72,200,131,221, 31, +125, 84,199, 92,218, 39, 63, 63,127,216,163,236, 79, 8,225,248,251,251,143, 14, 15, 15,127,251,229,151, 95, 54, 10,133, 66,168, + 84, 42,243,185, 48, 14, 28, 56,168, 98,240,224, 68,151, 3, 7, 14, 52,104,167, 78,167,187,235,227,227, 51,126,218,180,105, 73, +171, 87,175,118,155, 51,103, 14, 88,150, 5,165, 20, 12,195,212, 20,253,102, 89, 22,123,246,236,193,157, 59,119,190,172,237,100, +217,177, 99,199,206,191,133, 70,248, 34, 79, 29,181, 98,179,106, 48, 59, 91,255,245,204,240, 92, 46,119,205,209,163, 71, 91,119, +239,222,157,215,167, 79,159,184,192,192,192,184,188,188,188, 27, 0, 16, 24, 24, 24, 55, 96,192,128, 56,111,111,111, 44, 95,190, + 92,205,229,114,215, 60,202, 49,234,220,244,174,248,249,249,125,189,123,247,238, 69, 19, 39, 78,132,175,175,111,204, 19,233, 72, + 35,112, 22,137,218,140, 91,182,140,225, 27,141,156,111,191,254,218,121, 73,106,234,162,237, 59,118,240,158,123,238, 57, 66, 41, +197,245,107,215, 36, 11, 87,172,112, 24, 53,116,104, 78,198,221,187,204,190, 35, 71,140,178,252,252,178,124,185,124, 46,165,180, +204,154,190,209,104, 60,151,149,149,229,223,173,199,115, 1,167,126,191,113,117,248,208, 65,189,249, 60, 14,185,157,147,119,201, +207,215,211,229,100,234, 49,141,209,104, 60,103, 77, 71,165, 82,101, 51, 12,227, 78, 41,245, 58,121,242, 36,188,188,188, 80, 94, + 94, 14,163,209, 8,189, 94,175, 87,171,213,226,210,210, 82,104,181, 90,232,116, 58, 56, 59, 59,227,250,245,235, 50,134, 97, 78, +212,167,201, 48,204, 56,177, 88,252, 57,159,207, 23, 10, 4,130,130, 75,151, 46, 65,169, 84, 54,113,117,117, 93,204, 48, 12, 10, + 10, 10,112,250,244,233, 15,156,157,157,115, 0, 64, 44, 22, 67, 40, 20,121,232,116, 58,166,190, 96,120, 91,160,244,209,107,120, +250,249,249, 5, 55,109,218,116,254,135, 31,206,140,110,213,170, 53,228,114, 57, 88,150,133, 84, 42,133, 90,173,134,179,179, 51, + 58,119,238,156, 61,127,254,252, 66, 74, 49,193,154, 51, 40,147,201,228, 1, 1, 1,147, 39, 78,156,248,121, 68, 68, 68, 83, 74, + 41,194,195,195,209,175, 95, 63, 28, 58,116, 8,153,153,153, 80,169, 84,166,243,231,207,255, 92, 80, 80,240,203, 35, 27,110,199, +142, 29, 59,118,254, 87,212,196,102,213, 30,205, 2,254, 7,142,150, 76, 38,147, 7, 6, 6, 30,190,124,249,114,226,200,145, 35, +113,242,228,201,177, 0,166, 1,128, 72, 36, 26, 59,114,228, 72, 92,190,124, 25,183,110,221, 58, 44,147,201,228, 79,226,152, 66, +161, 80,171,215, 63, 24,156, 18,139,197,226, 70,238,222,164,122,202, 16, 0,154, 52,176,173, 94, 56, 60,158, 95,139, 1, 3,120, +229, 87,175, 42,215, 93,184,240,121, 82, 82, 18,175,107,215,174,196,104, 48,192,196,178, 8, 11, 11, 35,125,226,227,165, 63, 37, + 37,185,155, 84,170,211, 95,124,248,225,175,107,199,141,171,202,164, 52,199, 22, 3,117, 58,221,138,183,223, 26, 31,159,122,242, +215,128,152,168,102,238,135,143,166, 94,241,240,112,113,136,104,222, 92, 90, 90, 94,102,154, 51,235, 3,158, 78,167,251,214,154, +142, 70,163,217,115,236,216,177,161, 65, 65, 65, 94, 55,110,220,128, 94,175,135,201,100, 66,159, 62,125, 64, 41, 21, 1, 96,121, + 60, 30,110,221,186, 5,131,193, 80,156,149,149, 85,112,251,246,109, 17,128,175, 26,210,213,106,181,185,181, 95, 7, 5, 5,245, + 77, 72, 72, 0,195, 48, 24, 48, 96, 0,246,237,219,215, 55, 61, 61,125, 73,173, 38, 42, 91,250,221, 16,213, 35,100,209, 1, 1, + 1,187,171, 55,217, 20, 4, 31, 24, 24, 24, 23, 30, 30,190,250,171,175,190, 18, 4, 6, 6,130, 82, 10, 55, 55, 87,168,213,106, +148,148,148, 34, 38, 38, 6, 65, 65, 65,248,234,171,175, 0,224,103, 91, 71,220,242,243,243,111, 3, 24, 25, 19, 19, 35,168,168, +168,104,215,183,111,223,229,241,241,241,184,114,229, 10,126,253,245,215, 81, 34,145,168,216, 96, 48, 48,126,126,126, 19, 8, 33, +206, 6,131, 97, 75, 73, 73,137,213,213,166,118,236,216,177, 99,231,169,192, 28,163, 85,147, 37,190,209, 35, 90, 49, 49, 49, 82, +133, 66,241, 90,147, 38, 77,132, 0, 32,145, 72, 98,154, 53,107, 54,227,206,157, 59,149,141,181, 70,173, 86,111, 79, 74, 74,234, +247,205, 55,223, 8, 6, 13, 26,212, 44, 48, 48,176, 3, 0, 12, 27, 54,172,153,147,147, 19,146,146,146, 12,106,181,250,137,229, + 68, 50, 26,141,221,219,183,111,143,178,178, 50,228,228,228, 52,106, 90,230,151, 95,126,113,192,131,184,172, 6,183, 53, 4,163, +215,187,185, 6, 4,112,242, 83, 83, 13,101, 74,165, 95,247, 30, 61,136,209, 96, 0,135,195, 65,105,105, 41,238,221,187, 7, 23, + 87, 87,114, 43, 43,203,113,253,204,153,191, 52,105,213, 74,104,210,235, 61,108,213,167,148,170, 8, 33,175,191, 59,249,157, 61, + 91,182,252,236, 85,161, 84,222,145, 72, 28,116, 34,145,192,119,202,187,239,154,202,202,202,198, 80, 74,171,108,144,250,106,203, +150, 45, 3, 6, 12, 24,112, 45, 56, 56,216, 91, 46,151,251, 86, 84, 84,152,202,202,202,184,120, 16,107, 69, 0, 32, 53, 53, 21, + 74,165,146, 49,153, 76,167, 1,204,167,148,218, 52,197, 10, 0, 77,154, 52,113,233,216,177, 99, 79, 47, 47, 47, 40, 20, 10,120, +120,120,160,117,235,214, 61,155, 52,105,242, 67, 78, 78,142,194, 86, 29, 91, 72, 73, 73,113,162,148,118,162,148, 98,192,128, 1, + 54,237, 99, 50,153,222, 72, 72, 72, 16, 16, 66,160,209,168, 33, 22, 75, 32,149, 58,194,201,201, 25, 17, 17,145, 40, 40, 40, 64, +255,254,253,245,119,238,220, 89, 85, 88, 88,216,232,107, 84,161, 80, 12,233,220,185,243,244,183,222,122, 11, 12,195, 96,200,144, + 33,184,127,255,254,146,236,236,236,109,254,254,254,163,223,120,227, 13, 47, 15, 15, 15, 76,159, 62, 93, 2,224,179,198,234,219, +177, 99,199,142,157,255, 62,117, 99,180,106, 83,227,104, 53, 52, 39,234,231,231,215,205,221,221,253, 99,141, 70, 35, 52, 79,201, + 16, 66,132, 94, 94, 94,251,252,253,253, 23, 20, 20, 20, 52, 42, 40,174,188,188, 92,233,231,231,183,239,220,185,115, 35,134, 13, + 27,134,148,148,148, 49, 0, 48,108,216, 48,156, 59,119, 14,127,254,249,231,190,242,242,114,171, 49, 69,182, 16, 24, 24, 56,176, +103,207,158,195,218,183,111,143,228,228,100,152, 76,166,179,214,247,250,139,218, 43, 12, 97, 97,213,161,121,155, 77, 98, 92, 46, + 8, 33, 96, 24, 6, 0, 80, 34,151, 35, 51, 35, 3,101,229,229,208,105,181, 80,169,213,166,136,208, 80,141, 66,175,231, 19,160, + 81,115, 95,148,210, 92, 71, 71,199,123,106,149,202,219,195,205, 93,227,224, 32, 66,133, 82, 33,184,116,241,124, 21,165,244,142, +141, 26,122, 66, 72,143, 67,135, 14,205,229,114,185, 35, 29, 29, 29,241,246,219,111,115,123,246,236, 9,129, 64, 0,157, 78,135, +138,138, 10, 36, 37, 37,201, 25,134,105, 10, 0,132, 16, 71,169, 84,186,145,203,229,230, 41,149,202,143,173, 29, 67,175,215, 15, + 74, 76, 76,228,233,245,122,124,241,197, 23,152, 55,111, 30, 6, 12, 24,192,187,120,241,226, 32, 0, 91, 26,211,231,134, 96, 89, + 22,125,251,246,173, 29, 12, 95, 55, 40,222, 34,124, 62, 63,174,121,243,230,144,203,229,144,203,229,240,242,242,130,191,191, 63, +124,125,125,177,100,201, 18,186,124,249,242,195, 6,131, 97,149, 92, 46,111,116,236, 88, 96, 96,224,132,177, 99,199, 78, 24, 49, + 98, 4,170,170,170,112,238,220, 57,116,233,210, 5,139, 22, 45,242, 59,125,250,244,180,246,237,219,131,207,231,227,228,201,147, + 96, 24,230,126, 99,245,237,216,177, 99,231, 89,231, 89,140,207,178, 70,131, 35, 90,193,193,193,174, 38,147,233,131,193,131, 7, +247, 29, 58,116, 40,250,247,239,255,208,251, 91,182,108,113,218,181,107,215,130,160,160,160, 1, 6,131,225,171,198, 76,245,177, + 44,187,103,203,150, 45,131,158,123,238, 57,135, 94,189,122,133, 1,128, 72, 36,210,111,217,178, 69,205,178,236,158,198,118,164, +110,242,200,128,128,128,150, 60, 30,111, 88, 98, 98, 98,203,215, 95,127, 29,105,105,105, 72, 74, 74,186, 29, 17, 17,113,166,145, +210, 57, 86, 86, 29,154,183,213, 11, 87, 40, 44,173, 40, 42,114,117, 12, 14,230,187, 57, 57, 21, 38, 39, 39, 7,197,199,199,147, +251,247,239,163,188,188, 28, 90,173, 22, 23, 47, 94,100,121, 64, 46,207,205,141,228,158, 59, 71,184, 66, 97,163, 23, 27, 4,249, +185,133,127, 50,107, 82, 19,173, 78, 27,171, 80, 40, 24, 30,159,207, 15,244,117,109,212, 13,155, 82,170,147, 74,165,237, 0,240, + 88,150, 85,187,187,187, 59, 28, 61,122, 20, 66,161, 16,132, 16,180,104,209, 2, 98,177, 88, 32,149, 74,239, 1,128,175,175,175, +112,205,154, 53, 46,163, 71,143,254,213,154,118,219,182,109,249,161,161,161,207, 71, 68, 68,224,220,185,115,184,113,227, 70,238, +185,115,231, 66,218,180,105,131,224,224,224,231,219,182,109,187,227,242,229,203,198,198,246,187,158,126, 60, 82, 48,188,201,100, + 98, 9, 33,224,112, 56, 96, 89, 22,114,185, 28, 77,155, 54,197,202,149, 43,177,108,217,178, 47, 10, 10, 10,246, 63,138, 61, 49, + 49, 49,130,214,173, 91,143, 25, 49, 98, 4,238,222,189,139, 5, 11, 22,148, 20, 22, 22,166, 30, 57,114,228,197,183,222,122,139, +219,165, 75, 23,148,150,150,226,167,159,126, 98, 46, 93,186,244, 99, 81, 81,209,166, 71, 57,142, 29, 59,118,236,216,121,186,168, +215,209, 10, 14, 14, 30, 33, 16, 8,166,191,244,210, 75,220,200,200, 72,200,100, 50, 56, 59, 59, 27, 9, 33,124, 0,112,117,117, + 53, 74, 36, 18, 76,154, 52, 9,173, 90,181,234, 54,115,230,204, 46, 1, 1, 1, 43,243,243,243, 55,218,114, 96,153, 76,166,246, +243,243,219,249,246,219,111,127,117,245,234,149,166, 0,240,251,239,191,255, 89, 80, 80, 48, 75, 38,147,213,187,130,207, 18,181, +146, 98, 18,137, 68,114, 33, 60, 60, 60,123,224,192,129,206, 67,135, 14,133,151,151, 23, 46, 95,190,140,133, 11, 23,102,233,245, +250,185, 39, 79,158,100, 26,163,253, 36, 96,116,186,162, 75,123,247, 58,245,124,229, 21,231, 41, 9, 9, 95,191,243,246,219,223, +124,242,201, 39,188,200,200, 72,162, 86,171,113,225,194, 5,186,107,215, 46,227, 79,159,127,190, 12, 82, 41,255,220,174, 93, 66, +189, 94,159,219,152, 99, 4, 6, 6,246, 24, 52,160, 71,228,215,223,172,128, 86, 83,133, 11,103, 15,160,188, 92,142, 53,107,119, + 71, 6, 6, 6,246,200,203,203, 59,101,171, 22, 33, 36, 34, 37, 37,197,155, 82, 10,161, 80,136,249,243,231,195,223,223, 31,206, +206,206,168,172,172,196,180,105,211, 92,166, 78,157,234, 2, 0,105,105,105, 53,233, 25,172, 81, 80, 80,208,121,210,164, 73, 78, + 12,195,224,240,225,195,122, 66,200,199,199,142, 29,251,161, 69,139, 22,194,110,221,186, 57,109,218,180,169, 11,128,147,141,233, +119,125, 60,106, 48, 60,165,244,246,209,163, 71,219,143, 28, 57,146,242,249,124, 82, 81, 81, 1, 87, 87, 87,172, 92,185, 82, 85, + 88, 88,248,183,252, 40,182,194, 48,140,208,193,193, 65, 72, 41,197,206,157, 59,145,155,155,251, 70, 73, 73, 73,145,143,143,207, +238, 15, 62,248, 96, 70,100,100,100,104, 70, 70, 70,110,101,101,229, 34,153, 76,150,253,168,199,177, 99,199,142, 29, 59,255,125, +204, 65,240,141,202, 12,111, 50,153, 38, 29, 57,114,132,203,178, 44,214,174, 93,139, 75,151, 46, 81, 7, 7,135,143, 29, 28, 28, +190,147, 72, 36, 38,141, 70, 51,241,205, 55,223, 28, 61,111,222, 60, 78,183,110,221,112,238,220, 57, 78,211,166, 77,199, 0,168, +113,180, 8, 33,241, 13,229,218, 80, 40, 20, 23,101,178,162,166,181, 18, 84, 54, 21,137,196, 23,173,116,230, 33, 77, 11, 73, 49, + 59,206,159, 63, 95,229,231,231,167,191,113,227, 6, 86,175, 94,205, 94,186,116, 41, 85, 40, 20,174, 41, 40, 40,208,217,162,249, + 36,168,173, 41,100,152,203,155,103,204,136,110, 59,100, 8, 59,126,250,244, 42,129, 68,242,222,215, 43, 86,204,172,168,172,244, + 7, 33,212,195,197, 37,119,237,252,249, 11, 6, 60,255,124, 85,218,169, 83,226,171, 41, 41,124, 47,163,241,143,198,216,153,151, +151,119, 42,188, 89, 48, 54,172,251, 6, 6,131, 14,133,249,185, 0,128,146, 82, 5, 26,114,178, 44,105, 50, 12,163,120,241,197, + 23, 5, 0, 36,175,190,250,170,176,184,184, 24,205,154, 53, 3, 0, 40,149, 74, 28, 56,112, 0, 81, 81, 81, 0,128,235,215,175, +215, 60,183,102,167, 84, 42,125,190, 75,151, 46,200,205,205, 69, 90, 90,218,241,130,130,130, 82,127,127,255,227,247,239,223, 31, +212,190,125,123,236,217,179,103, 48,234,113,180, 26,251, 25,217,226,104, 89,210,148, 72, 36,179,118,239,222,253,198,217,179,103, + 71,206,152, 49,131,223,167, 79, 31, 0, 64,101,101,165,154, 82,106,122, 20,205,218, 54, 25,141, 70,176, 44, 11,119,119,119, 21, + 0, 84, 59, 85, 13, 38,146,253,167,175, 79,187,166, 93,211,174,105,215,124, 26, 52,255,159, 96,123,102,120, 74, 41,195,178, 44, + 78,158, 60,137,221,187,119,155, 12, 6,195,132,130,130,130,235,181,154,172,240,247,247, 79,121,241,197, 23, 55,102,100,100,112, +211,211,211, 97,203,141,168, 54, 90,173,214, 88,183, 36,177, 86,171,125,236,169,163, 13, 27, 54,160,168,168,200,112,255,254,253, + 99, 12,195,236,121,204,213,139,143,189,234,240, 39, 74,117,175, 16,114,108, 94,215,174,125,231,166,164,136,198,127,244,145,110, +236,235,175,127, 96,210,235,141, 92,129,128, 21, 74,165, 28,147, 72,196, 79, 59,117, 74,188,252,173,183,220, 53, 58,221,225,205, +141, 8, 48, 7,106, 70,180, 48,118,252,251,208,212, 26,209, 58,119, 49, 19,141, 29,209,210,106,181,177, 0, 32,145, 72,238, 1, +240,125,237,181,215,192,178, 44, 52, 26, 13, 42, 43, 43, 81, 80, 80,160,120,253,245,215, 77, 0, 32,149, 74,121,195,134, 13,115, +182, 69, 55, 44, 44,204,159,207,231,227,240,225,195,224,243,249, 7, 0,128,207,231, 31, 72, 73, 73, 25, 52,106,212, 40, 4, 4, + 4,132, 17, 66, 8,181,226, 37,249,196, 13,221, 78,129,112, 16, 52, 7, 0, 16, 52,247,142, 27,122,141, 0, 89,213, 89,227,111, +182,105,211, 6,176, 49, 46,171, 54,213,139, 59,150,121,122,122,238,152, 57,115,230,219, 29, 59,118,236, 55,111,222, 60, 2,128, +219, 88, 45, 75, 48, 12,243, 88,169, 39,236,216,177, 99,199,206,211,137,121,181, 97, 93,234,117,180, 8, 33,107,123,244,232, 49, + 1, 0,151, 16,178, 58, 63, 63,255,122,221, 54, 5, 5, 5,153, 1, 1, 1,139, 67, 67, 67,107, 10, 77, 55,198,168,234, 76,238, + 11, 57, 28, 50,243,193,235,198, 39,168,172, 85,234,100, 38, 0,194,225,112, 55, 94,185,114,229,163,123,247,238,201, 27,235,248, + 89,226, 73,172, 58, 4,128, 45,148,102,143, 34,228,200,244,184,184,248, 1,111,189,133,150, 3, 6, 56,251,135,132,152, 52, 6, + 3,123,253,204, 25,114,118,231, 78,193,213,148, 20,190, 70,167, 59,188,155,210,123,141,181, 51, 47, 47,239, 84,179,176,192,163, +195,135, 13,234, 23, 22,234, 15, 0,184,155, 93,128,146, 50,197,209,198, 56, 89,181,209,106,181, 67, 86,174, 92,185, 95, 32, 16, +240,104,173, 82, 54, 6,131,161,204,236,140, 17, 66,252,215,174, 93,187,149,195,225,228, 90,211, 75, 79, 79,223, 55,119,238,220, + 97, 57, 57, 57, 71,239,221,187,151, 3, 0,185,185,185, 57,254,254,254, 27, 11, 11, 11,135,229,230,230,238,178,230,100, 1,127, + 43, 42,141,180, 51, 59,196, 0, 90,152,139, 74, 63,106, 45,195,218, 84,167, 86,248,216,207,207,111, 75,191,126,253,222, 4,240, +200, 57,189, 0, 64,175,215, 27, 53, 26, 13, 99, 50,153,120, 6,131,129,234,245,250, 39, 18,139,102,199,142, 29, 59,255, 34,218, + 3, 48, 87, 34, 49, 15,160,120,213,121,174, 71,117,185,192,106,204,175,229, 0, 46,214,210,168,189,221,218,190, 0, 80, 2,224, + 90,245,182,191, 81, 55,119,214,223, 50,195, 91, 34, 63, 63,127, 23,108, 40, 26,109,107,187,250,160,148,206, 38,132, 44,175,126, +254, 72, 89,192,107,107, 48, 12,243, 68,234,195,113, 56,156,236,193,131, 7, 55,170,189,181, 54, 91, 41,205,125,143,144, 77,201, +223,126,219,250,240,234,213, 1, 38,134,241, 32, 0,229, 10,133,165,122,189, 62,199,203,104,252,163,177, 35, 89,181,185,115, 55, +175, 63, 0,132,135,135,211,219,183,111,131, 82,250, 88,171, 55, 40,165,127, 0, 8,178,210,166, 0, 64, 55, 91,244,242,242,242, +126, 6,240,115,221,237, 5, 5, 5, 91, 1,108,181,213,174,154,162,210, 0,135, 37,236,240,216,174, 35,118, 2, 96,205, 69,165, +159, 36,133,133,133, 25,168,206,243,246, 56,228,228,228,232, 66, 67, 67, 55, 47, 92,184,240,213,171, 87,175,110,203,207,207,183, + 56,141,109,199,142, 29, 59,118, 44,210, 30,128, 23, 33, 36, 25, 0, 40,165,137, 0, 64, 8, 73,174,251,220,220,198,220,174,118, + 27,179, 70,221,237, 13,237, 11, 0,179,102,205,250,104,193,130, 5, 14, 0,108, 42,198, 92, 59,113,233,127, 61, 97,169, 37, 30, +213,193,122,210, 26,181,201,203,203, 91,247, 36,245,204,172,120,224, 72, 53, 88,216,250,113,201,202,202,250,127,183, 60,182, 54, +230,162,210,181,136,251,159, 24,210, 72,178,179,179, 87,246,236,217,115, 77,126,126,254,127,125, 65,134, 29, 59,118,236, 60,227, +120, 89,114,140, 44, 53,180,224, 92,213,139,165,118,150, 94, 19, 66,146, 23, 44, 88, 96, 85,175,214, 62, 53, 35, 90, 28, 91,119, +178, 99,199,206,227,243,191, 88,245,106,199,142, 29, 59,118, 44, 83,119, 20, 11,120,224,124,213,125, 61,107,214,172,143, 80,207, +180, 97,117, 27, 63, 66,200,132,234, 85,135, 15,197,107, 17, 0,241,245, 28,220,230,213, 4,132, 16,139, 26, 13, 97, 77,223,174, +105,215,180,107,218, 53,237,154,118, 77,187,230,255, 63, 77,107,218,245,236,159, 80,223, 84, 95, 67,211,136,117,159, 91,219,215, +134,182, 22,211,252,212, 74,239,240,208, 95,115,135,254,177, 7,128,120,187,166, 93,211,174,105,215,180,107,218, 53,237,154,118, +205,199,124,180,167,148, 38,224, 65,213, 20, 74, 41, 77,160,148, 14,152, 53,107,214,108,243,182, 89,179,102,205,166,148,246, 49, +183,171,110, 83,179,143,121, 91,221,191,117,183, 89,105, 91,223,249,152, 80,251,121,237,215, 79, 69,140,150, 29, 59,118,236,216, +177, 99,199, 78, 3, 92, 4,208,158,254, 53,218, 36, 7,112,125,193,130, 5,229,181, 98,167,228, 0,254, 0,208,170,186,157, 28, +248, 91,204,149,190,250,181,222, 66, 27,189, 45,109, 45, 65,107,197,100,209, 58, 43, 16,237,142, 86, 61,180,246,227,126, 30, 28, +232,221, 14,168, 30,245, 99, 89, 0, 0,251,192, 91, 5,173,118, 91,193,178,160,148,162,160,184,226,242, 53, 25,253,228, 81,143, + 23, 25, 64,220,189,197,226,101, 44,165, 93,171, 55,157, 82,148,234,222,191,161,160, 21,182,106, 68,251,146,104, 49, 7, 31,176, + 20, 45, 1,128, 67,112, 77,203, 98,241,205, 34,218,232,124, 82,117, 33,132,144, 88, 47, 76, 16, 74, 28, 94,114,113,117,107, 94, + 94, 94,146,101,208,234,118,164,203,177,166,230, 92, 52,130,102,238,164, 19, 75,241, 17, 0, 14,159,131, 37,153,165,212,166,149, + 28,118,236,216,177,243, 4,120,220,188,120,150, 82, 7, 61,238, 34, 36,123,130, 61,235, 88, 74,104,254,187,141,237,254,103, 52, +202,209,138,245, 38,111,129,224, 83, 0, 20, 20,159,165, 21,211,239, 27,181,191, 63,137, 23,115,185,235, 1,112,181, 6,211,116, +202,226,180,165,118,132,131,238, 98, 1,119, 9, 0, 86,107, 50,141, 75, 43,176, 61, 94, 44, 46,144, 12,224,177,156,205, 44,165, +124, 19, 75, 55,130, 34,217, 81,128,223,206,229, 81,109, 99,108, 13, 14,244,110,183,247,247,194,126,169,223, 79, 65,199,150,205, + 64, 77, 12,192, 26,225,208,237, 3, 28, 95,250, 26, 58, 70, 7,131,178, 70,128,101,224, 56,240,107, 12,140,115,121,228,127,146, +200, 0,226, 30,226,233,125, 99,221,186,245,190,254, 97, 49,132,101, 12,200,248,253,232,232,169, 51,231,246,142,115, 33,113,182, + 56, 91,173,252,201,248,102, 77, 35, 63,120,255,211,111,184,126,254, 65, 82,214,168, 99,138,178,111,182, 89,177,104,238,174, 86, +254,100,201, 31, 5,116,189, 45,182, 16, 66, 72,140, 23, 38,242, 68,194, 17, 18,177,180,185, 90, 93,121,219,100, 48,238,136,243, +231, 13, 88,252,245,178,214, 61,251, 14,114, 52, 85, 22,113,140, 44, 98,182,111,219, 26,242,237,202, 85,131, 8, 33,207, 83, 74, +217,198,244,153,165,152,153,185,105,194, 32, 62,143, 75,162,223, 88,199,133,141, 75,102,235, 18,227, 67, 94, 38,212,122,122, 9, + 74,240,107,186,140,254, 45,181,132, 45, 68,251,144, 31, 8, 69, 4, 8,118, 18,138,173,105,197,180,248, 81,116,236,216,177,243, +244,194,225,112, 82, 89,150,237,245, 36, 53, 9, 33,157, 40,165,255,232, 42,115, 59, 79, 63,141, 27,209, 34,248, 34,237,206,125, + 55,152, 12,136,141, 8,251, 28, 64,163, 28, 45, 49,151,187,241, 98,150,204, 23,140, 1,235,190,124,123,155,222, 8, 48, 70, 3, + 76,140, 17, 38,198, 8,134, 49,192,100, 52,130, 26,117,152,251, 99, 42,160,175, 68,187,184,240,141, 0,252,108, 61, 6,159,114, + 54, 95, 62,115,212,157,232, 21,248,249,251, 5,239,222,151, 87,189,123,236, 90, 65, 73,172, 15,153,157, 94,140,159, 26,227, 16, +164,174,158,130,164, 61, 7,242,150,255,160,186,197, 82, 10,119,103, 73,228,232,196,180,160, 77,251, 82,239, 47,219,168,189, 5, + 0, 46, 82, 97,228,152,107, 89,193,141, 57, 15,117,241, 22,139,151,173, 89,245,173,175,159,135,132, 48,103,191, 2, 99, 50, 33, + 40, 36,129, 59,123,242,104,191, 47,150,174, 95, 10, 96,108, 67,251, 71,249,144,152,136,102,209,211, 55, 30, 56, 27,172, 82, 22, +235,143,110,249,232, 14,116, 48,250, 6, 68,243, 63, 95,240, 13,119,206,135, 83,166, 69,249,144, 11,183,100, 52,189, 33, 29, 66, + 8, 39,218, 27,251, 22,124,245,117,203,222, 3, 19, 29,217, 42, 57, 87,171,170,138, 88,247,227,250, 79,163, 90,118,112,232, 22, + 23, 40, 40,222, 49,137,104, 42,203, 96,224,136, 69,189, 99,227,157, 53,175,142, 50,174,219,144, 52, 25,192,138,198,244,217, 84, +107,218,154,101, 31,253,215, 37,161,232,118,245,124,234, 68, 83,193, 69, 80,147, 17, 48, 25,106,254,194,100, 4,101, 31,252,237, + 56,233, 71,192, 66, 14, 47, 91,224, 80,244, 59,118,230,162,159,172,168,176,253,210,175,255, 51, 59,198,155, 28,130, 9,155,111, +150,225, 84, 99, 29, 76, 59,118,236, 60,189, 16, 66, 24, 74,233, 19,157,233, 33,132, 12,162,148, 30,124, 76,141, 15, 0,140,175, +126,185,158, 82,186,248, 9,216, 21, 8,192,183,250,101, 17,165, 52,239,113, 53,255,205, 60, 20,252, 94,231,117, 99, 47, 40, 49, + 40, 11,236, 28, 10, 0,146,198, 26, 66, 1, 49, 8, 23, 48,170, 48,100, 96, 95,120,122,251, 2, 70, 53, 96, 80, 3, 70, 13, 96, + 84, 1, 70, 13, 74, 10,115, 1,131, 10,184,123, 8, 12,165,162,198, 30, 7, 58, 5,144,185, 3,125,218, 4,195,203, 69,140, 41, + 67, 98, 60,215, 30,206, 92,191,254,104, 70, 60,128,151,108,178,149, 82,116,108,209, 28,203,215,171,110,237,191, 92,220, 31, 0, + 18, 90,123, 30,238, 24, 19, 18,180,108,163,246,214,129,107,101, 3, 0, 96, 96,156,203,161, 14,145,126,193,236, 99,140,250,178, +148,118,243,111,210,156,152,174,174, 1,171,204,131, 82,169, 65, 94,246, 38,184, 5,180,229,152, 88,244,176,182,191,132,139, 89, +239,205, 89,200, 87, 43,101,122,214, 32, 55,121,113,203,185, 60, 33, 75,144,127, 74, 87,197, 86,152,222,159,240, 26, 51,253,147, + 47,103, 1, 24,221,144, 78,140, 55, 38, 47, 89,178,172, 69,151,118, 81,222, 69,187,166,144,170,114, 25, 24,174,131,104,200,115, + 93,224, 26, 30,195,202, 78, 46, 33,194,176,120,184,122,132, 33,255,236, 22,228,156,223, 77,186,182, 25, 38,250,233,103,193,171, +168,199,209, 10,247, 34, 93,251,119,239,176, 45, 44,216,223,143, 82, 22, 44, 75, 65, 89, 19,222, 24,222, 15,179,183,223,133,201, +100,194,139,253,187,246, 89, 56,177, 55,101, 89, 22,148,178,184, 95, 84,170, 62,113,225, 86,159, 59,101,244,130,181,190, 83,130, + 95, 91,117,234,213,245,218,229,243, 81,198,204, 95,208,110,244,130, 91, 4, 56, 83,243, 62,208,245,202,145,159,162,128, 31,173, + 73, 89,132, 16, 66,162,189, 97,202, 57,252, 21,130,187, 79,224,174,249,249,176,151, 66,158, 63,102,215,166, 85,195,191, 95,179, + 38, 9,192,164, 71, 18,182, 99,199,206, 83, 7,165,244,137, 59, 91,185,185,185, 5,143,227,108, 5, 6, 6,118, 7,176,200, 28, +161, 65, 8, 89, 20, 26, 26, 90, 83,253,130,101, 31,250,173,167, 48,153, 76,163,243,242,242, 44,206, 22,153, 73, 76, 76,244, 7, + 16, 90, 75, 51,148, 16, 18,106,169,173,171,171,171,169,115,231,206, 57,201,201,201, 5,143, 98,255,191,141,186, 14, 23,208,120, + 71,235,214,189, 29, 83,218,232, 10,171, 0,224,150,181,198,180,206, 18, 77,173,209,244,213,134, 79, 95,251, 42,182,137, 59, 42, + 85,122, 28,189,148, 3,147,201, 8, 19,195, 84,143,108, 49, 48, 49, 70,244,111,229,137,206,218, 73, 88,145,156, 1,198,196, 46, +104, 72,179, 46, 6,202,190,220, 58,126,228,118,150,165, 66, 17,159,163,136, 8,242,240,158,254, 98, 43,206,148, 33,177,208, 24, +152,145, 49, 62,228, 68,186,140, 62,148,140,180, 94, 77,246,239, 41,143,168,165,109, 38, 11,219,108, 92,222, 26,229, 67, 58,142, + 74,236,235, 76,117, 10, 24, 75,238,162, 82,109,196,221, 82, 35,138,180, 21, 16,145, 66,155, 52, 89,138,150,129, 1,126, 14,191, +109,251, 48,219,131,171,228,121,115, 25,129,144,195,192,196, 82, 46,173, 72,215,185, 71,245,229,155,227,182, 26,178, 83,226,224, +244, 90,247,126, 9, 46,247,182, 76, 32,146,136,254,240,110, 19,132,236,211, 27, 80,124, 41, 25,165, 5, 57,196, 89, 91, 1, 31, +143,102, 24, 56,250, 37, 44,126,169, 61, 42,149,149,224, 22,222,113, 17,242, 69,174,245,105, 82, 19, 70, 47, 89,248,165, 31,143, +203,121,112, 62,205, 15,147, 17, 26,157, 14, 48, 49, 16,243, 88, 16,106,126,207, 8,147,209,224,208,114,216,135,111, 3,184, 96, + 73,179, 54,233, 50,250,115,172, 55,233, 6,214, 24, 69,141, 26, 16,224, 76, 90, 49,173,113,126, 98,124,200,203,109,251,191,222, +141, 18,252,218, 80,223,235, 35,206, 3,137,237, 66, 29,165, 82,229, 45,228,237,124, 23,119, 32,166, 62, 93,198,227,229, 55, 38, + 59,172, 93,187,118, 48, 33,228,173,218, 49,106,182,126,238,141,193,174,105,215,124, 86, 53, 93, 92, 92,154, 54,105,210,100,174, +209,104,236, 46, 16, 8,124, 12, 6, 3, 88,150, 45, 18, 10,133,191,230,228,228,204, 87, 40, 20,127, 62, 13,118,214,230,218,181, +107, 54, 59, 91,182,104,242,249,124,100,100,100,220,182,213,217,170,171,201,231,243, 55,159, 57,115, 6,219,183,111, 7, 0,100, +102,102, 34, 60, 60, 92,106,105,223,236,236,108,105,207,158, 61, 55,163, 78, 69,143,186,154,215,175, 95,111,250,203, 47,191, 96, +231,206,157, 0,128,140,140, 12, 68, 68, 68, 88,180,231,204,153, 51,220, 87, 94,121,165, 41,128,135, 28,173,127,226, 51,122,214, + 49,231,206,170, 91,243,144, 7, 0, 7, 14, 28,160, 9, 9, 9,164,238,115, 11,220, 13,118, 19,182,129,214, 4, 0,119, 27,107, + 68,122, 17, 93,216,202,143, 63,224,248,206,149,221,197, 2, 14,230,173,155,126, 95, 94, 86,217,137, 71,192, 2, 0, 67,193,113, +115, 20,158, 91, 48,166, 85,112,121,149, 22,251,127,207, 63,157, 38,107,220, 16,105, 90, 1, 77, 1, 80,115,227,143,243, 32, 17, + 99, 22,167,108,221, 58,107, 64,203,247,135,180,196,190,179, 57,239, 3,176,154,245,157,178, 44, 40,203,212, 4,191, 3, 0, 88, + 22, 96, 31, 46, 10,204,130, 62,216,198, 54,110, 68,171, 39, 33,188,114,111, 12,116,119, 16,126, 55,113,226,155,206, 70,121, 22, +202,244, 2,220, 47,215,162, 72,195, 71, 21,207, 27,249,183,174,155, 56, 4, 41,214,180, 8,129,146, 50, 90, 87, 55,161, 35, 39, +174,239,219, 1,202,195, 31,149, 11, 9,195,117,126,225, 11,215,146,227,223,228, 48, 42,185,138, 16, 88,173,173,231,226,226, 26, +174, 45,205,225, 42,202, 75,224,234, 27,139, 1, 35, 19,241, 89, 66, 12, 42,149, 42,200,203,206,209,230,126,206, 36,247,215, 36, +204, 25, 24,141, 82, 89, 33,116, 70,128,168,116,101, 90,189,182,170, 62, 77,202,193,154,169, 51,102,190, 28,226,231, 37, 53, 47, + 42,160,172, 9,173,162,195,208,183,123, 71,164,156,249, 13, 23,175,103,130,173, 94, 84, 64, 89, 22,121,197,229, 50,173,193,180, +161, 81, 39,212,196,128, 26,255, 30,134, 87, 29,151,213,232, 41,195, 22, 62,196,193, 4,124,210,169,185,211,184, 89,137, 33, 78, + 82, 17,129,214,104,130, 86,111, 68,229,111,223,193,163, 73, 11, 56,136,197,164, 13, 52, 60,192,250,185,181, 99,231,223,196,136, + 17, 35,196, 50,153,236,100, 66, 66, 66, 76,223,190,125, 29,186,117,235, 6,149, 74,133,163, 71,143, 66,165, 82,133, 4, 5, 5, +133, 28, 61,122,116, 88,167, 78,157,210, 3, 3, 3,123,238,216,177,163, 49, 49,180, 60,252, 21,204,206, 2, 96, 8, 33,168,222, + 70, 0,176,244, 49,234,220, 10,133, 66,228,230,230, 62,241,145,173,252,252,124,155,157,173,218, 84, 85, 85, 9, 2, 2, 2,224, +229,229, 5,147,201, 4,149, 74,133,189,123,247, 66,161, 80,128,101, 89, 72, 36, 18,124,177,100, 29,110, 93, 57,137, 11, 23, 46, + 64,161, 80, 8,172,105,230,229,229,145, 86,173, 90, 65,167,211,129, 97, 24,104,181, 90, 28, 59,118,172,230, 53,143,199,195,204, +207,151, 34,243,210, 73, 92,189,122, 21,121,121,121,255,149,106, 35,141,240, 69,158, 58,234,142, 98,213,230,191,190,234,208,100, + 98,102,175,221,184,245,220,236, 73, 47, 97,242,168,248,160,249, 43,119,199,167,203,233, 70, 0,136,241, 34, 99, 94,237,213, 60, +216,213,129,143,207,182, 92, 2, 40,157,253,184,199,187, 81, 74, 51, 99,125,201,251,123, 46,228,158,252,232,165, 54, 8,243,115, + 14,111,214,140, 8,239,220,177,161,166, 32,203,192,205, 81, 20,153,208,218,243, 48, 88, 22,174, 78,162, 40,152, 24,184, 58,138, + 34, 7,198,185, 28, 2, 0, 87, 7, 65,148,165,145,175,250,104, 31,252,127,236,157,119,120, 20,213,247,198,223, 59, 51, 91,146, + 77,239, 61, 33,148, 36, 16, 66,145,222,131, 82,132,192,143, 34, 85,148,246,165,136, 40, 32, 72, 21, 65, 80,154, 82,165,131, 10, +130,116, 68, 32, 40, 69,169,210,164,166, 0,129, 80, 66,122,239,217, 62,115,127,127, 36, 27,151,144,178,155, 32, 42,206,231,121, +246,217,236,206,204, 59,119,118,147,236,187,231,158,115,174,116,172, 66,206,141,181,106,230,225, 59,162,119, 87,203,158,189,251, + 91, 90, 75,244,200,188,114, 2,121, 18,111,232, 28,253,160,214,101, 33,225, 81, 44,255,235,229, 59,137, 25,249,234,169, 85, 14, +147,226, 92,226,163,123, 46,181, 27,119,117,200, 56, 58, 39,173,246,200, 31,252, 25, 8, 76,254,206,126,169, 86,174, 45, 45,175, + 62,124, 84, 32,208,231, 35, 58,101,201,203,205,125,162,227,225,213,143,109, 86, 0, 0, 32, 0, 73, 68, 65, 84,161,228, 57,155, +216,211,223, 97,102,143, 70,200,206, 74,131, 74,171, 71,174, 82,175,117,183,183,144,171, 31, 69, 66,173,213, 67,163, 19, 32,177, +247,194,137, 75, 17, 25,130, 78,247,115, 69,154,177, 25,244, 38, 0,107,227,231,234,186,144, 38, 51,108, 45,111, 66,167, 68, 92, + 66, 18,182,135, 95,122,173,100,191,106, 67, 5,125,241,244,115, 9,134, 36,249,234, 36,193, 55,112, 35, 45, 45, 45,164, 95, 47, +155,242,118,112,155, 64, 71,185,144,112, 9, 68,208,194,138,231,160,148,241,176,243,169, 3, 65,147, 79,139, 84,170,156, 40, 64, +236,244, 46, 34, 98, 68,253,250,245,221,237,236,236,162,166, 77,155,230,216,175, 95, 63,252,248,227,143,200,203,203,195,182,109, +219,176,106,213, 42,204,159, 63, 31, 58,157, 14,155, 55,111, 86, 28, 56,112,160,229,250,245,235, 19,252,252,252, 26,198,197,197, +165, 84, 33, 77, 0,200, 1, 72, 80,252,217, 69, 0, 8,199,142, 29, 67,207,158, 61,113,236,216, 49,161,228, 57,158, 16,162,163, +148, 86,107, 61, 81,153, 76, 6,153, 76,134,220,220,220, 23, 98,182, 36, 18, 9,172,173,173, 33,147,201,144,159,159,111,182,217, +210,235,245,108, 66, 66, 2,114,115,115,209,181,119,111,172, 92,188, 24,157, 59,119, 70,215,174, 93, 65, 41,197,169, 83,167,208, +165, 93, 8, 6,255, 95, 40,238,220,185, 3,189, 94,111,210,120, 83, 82, 82,144,154,154,138, 55,123,247,198,150,245,235,209,170, + 85, 43, 4, 5, 5, 65,175,215,227,204,153, 51, 24,208,189, 29, 44,250,118, 65, 76, 76, 76,245, 47,254, 63,196,139,204,209,170, + 49,145,105,244,114,176, 11, 57, 58,164,123,203, 94,189,219, 7, 99,203,158, 95,191, 8, 14, 38,187, 1,192,201, 70,254,249,187, +157,235, 32,250,105, 54,126,189,153,116, 52, 58,253,197, 84,107, 8, 60,156,157,108, 21, 0, 43,131, 82, 43,232,109, 31,162,202, + 4,102,129, 82, 40, 58,206,192, 59,189,163,125, 90, 5,251,248, 24,170, 14,173,123,174,192,240,136, 7,190, 45,130,220,125,193, +235, 0, 94, 7,219,193, 63, 0, 11,203,141,228, 62, 67,251,218,242,147, 51,166, 78,105,219,163,239, 32, 75,153,194, 14,124, 94, + 60,116, 41, 17,200,188,127, 14,133,138, 0,164,196, 61,196,222,227, 87,114,239, 39,100,230, 49, 12, 78,164,230,170, 63,142,205, +162, 21, 70,139, 12,168,116, 88,252,233,156,169, 97,123,119,239,177,145,215,105, 79, 98,215,246,204,149,113,122,185,139,127, 51, +166,200,194,153, 46,218,182,199,182, 80,131, 37, 85,233, 20, 21,230, 29, 60,117,226,151,193,245,106,183,183,121,252, 71, 56,148, + 42, 53,212, 58,160, 97,203, 80,240, 60,149, 17,134, 8,182, 44, 75,210, 50,179, 65,116,124,234,249, 91,143,147, 47,220,122,200, +170,109,170,214, 54,134, 35,236,135,189, 67,155, 2, 58, 37,254,175, 99, 35,172,220,249,235, 7, 0, 70,154,163,241, 28, 66,113, + 68,139, 2,237, 27,186,146,141, 0,218, 95, 59,180,170,126,243,190,147, 1, 51, 34, 90, 33, 46,164, 71, 72, 93,207,239, 86,126, + 62,195,209,201, 59,128, 37,130, 14,212,189, 49,144,151, 64, 73,194, 37,216,121,181, 2,239,217, 14,155,215,124, 85, 32, 8,116, +119,117, 90, 91,136,136,188,202,168, 84,170,131, 75,151, 46,117,236,213,171,184, 29, 81, 65, 65, 1, 46, 93,186,132,173, 91,183, +194,202,234,217,255,147, 61,123,246, 4,165,212,113,222,188,121, 7, 1,180,169, 72,179, 93,187,118,189,215,172, 89,147,212,180, +105,211,135, 40, 54, 91, 82, 0, 76,100,100, 36, 19, 31, 31, 79, 28, 28, 28,168,167,167,167, 46, 41, 41, 73, 0,192,143, 26, 53, +138,181,182,182,174, 87, 80, 80,112,214,220,241, 27,140,150, 76, 38,123, 33, 57, 91, 18,137, 4,132, 16,200,100, 50, 72,165, 82, + 80, 74,205, 50, 91, 60,207,115,199,142, 29,195,181,107,215, 48,191,105, 83, 76,241,242,130,163,163, 35,206,156, 57, 3, 74, 41, +172,172,172,144,149,149,133,221,187,119,227,245,215, 95,135, 94,175,175, 50,162, 5, 0,251,247,239,199,245,235,215,177,176,121, +115, 76,177,179,131,181,181, 53, 78,157, 42,158, 13,148,203,229,136,139,139,195,169, 83,167, 16, 26, 26, 90,221, 75, 23, 41,193, +228, 95,158, 80, 66, 56,226, 6,119,173, 70, 9,170,167, 0,129,103,112, 48,145, 70, 71, 83,173,185, 39,101, 24,204, 89,179,253, +104,216,138,201,189,201,216, 62,175,121, 46,248,238,244,123, 0, 48,250,173, 64, 47,133,156,195,234,159,162, 41,195, 96,142,185, +186,229, 17, 28, 76,164, 12,131,247,186,182, 10, 66, 82,142, 6,177, 73, 57,191, 69, 83,106,210, 84,207,175, 43,222,193,247,135, +207,196,175,250, 94,117,151, 82, 10,123,107,121,208,240,219,177,190,223, 29,187,254,116,249, 94,213, 93, 42, 80,216, 43, 36,245, + 71,222,105, 87,101,213, 97, 11, 95,233,216, 89, 51, 62,110,215,103,228, 52, 11,253,221,125,208,196, 30,135,160, 85, 34, 79, 43, + 69, 14,235,142,132,167, 79,177,104,243,209,248,188, 66,205,224,200, 52,243, 12,102, 76, 6, 45, 8,118, 33,253, 22,125, 54,251, +228,226,207,231, 89, 43, 31,158, 41, 96,137, 94,201,214,234,196,125, 62,127, 5,201, 87,107, 6,197,102,209,252,170,116,212, 54, + 88,178,116,249,154,176, 49,195,250,223, 13, 12,232,228,196, 39, 61,114, 82,229,229,165,253,240,203,117,119, 20,127, 83, 36, 0, + 16,155,144,137,244,220, 66, 61,175,215,157,181,145, 96, 65,148, 41,209,193, 18,234,184, 17,151,126, 29, 26,191,237, 98, 35,133, +178, 32, 7,174, 54, 18,116,111, 85,247,237, 58,110,100,198,195, 84, 90, 97, 51,184, 42, 17,116,160, 58, 37, 46, 47,121,189, 62, +229,117,245,193,235,160,189,189,195,108, 25, 74, 48,101, 98, 71,107, 91, 7,205, 99, 6,133, 86,128,165, 51,136,173, 31, 96,231, + 79, 36, 13, 6, 33,233, 97,148,254,131,183,135,101, 62,122,146,240,141,179, 37,106, 92,249, 35, 34,242,170, 17, 23, 23,247,238, +172, 89,179, 46,180,106,213,202,205,217,217, 25,141, 26, 53,194,225,195,135, 49,109,218,180,210,125,154, 54,109, 10, 74, 41,178, +178,178,176,116,233,210,148,164,164,164,119, 43,211,140,138,138,186,251,253,247,223,119, 12, 14, 14,214, 74,165,210, 28, 0,242, +156,156, 28,139,172,172, 44,162, 82,169, 32, 8,130, 96,103,103,199, 39, 37, 37,233, 6, 15, 30,172,190,120,241, 98,221,194,194, +194,184,234,140,223, 96,178,124,124,124, 34, 51, 51, 51,115, 9, 33, 53,110,253, 96, 48, 89,206,206,206, 46, 5, 5, 5, 2,128, +236,234,180,126,208,235,245,104,222,188, 57,142,159,187,129, 99,191, 94, 68, 94,210, 61,188, 55,230, 93, 52,106,212, 8,199,143, + 31,175,238,240,208,164, 73, 19,252,114,234, 2, 46, 92,187,133,184,152,219,248,224,189, 49,104,216,176, 33,126,249,229,151,106, +107,254, 7, 9, 47,147,155, 85,186, 84,143,193,104,133,134,135,135, 27,190,153, 63,103, 95, 27,184,144, 38,158,245,100, 59,230, +245,168,219, 64,210,117, 30,136,196, 18,251, 2,126,105, 55,103,209,218,187,141,220,200,176,136,212,170,171,195,140,137, 76,165, + 81, 13, 93,201,174, 91,119,234,191,253,127,173,124,176,229,176, 98, 46, 0, 12,234, 80, 27, 87,239,167,227, 74, 76,218,174,168, + 52, 26,101,230, 69, 62, 71, 35, 55,162, 0,197,174,165, 31,246, 9,245,243,118,199,214, 31, 47,128, 16, 28, 52,229, 88, 74, 41, +109, 21,236,135, 85,223,151,173, 48,116,247, 93,190, 87,117,247,120,100, 94, 15, 0,232,214,192,234,231, 22,117, 29,124,171,138, +108, 88,202,184,113, 61,250,191, 99,161,143, 57, 12, 60, 57, 5,162, 87, 67,169, 21,144,156,145,143, 34, 59, 31,156,185,116, 75, +153,171,210, 76,142, 50,211,100, 25,136, 78,167, 15,155,122,144,167, 5,133, 74, 15,133, 75, 93, 21,203, 8, 66,129,154,226,106, +244,147,188,168,100,122,207, 20,141,216, 88,170,105,227, 77, 58,108,220,190,247, 83,137, 84, 54,136, 37, 32,174,246, 86, 46, 27, + 87, 44,132,141,141, 53, 4, 77, 1, 80,152,142,126,239, 47, 74,143, 72,212,214, 6,128, 64,103, 98,221,177,142,116, 59,199,144, +132,223, 30,104, 62,169,234, 28, 68,135,241,195,186, 55,149, 8,154, 66,124,184,116, 15, 54,205,232,131,119,222,104, 32, 9,255, + 61,102, 60,128, 5,213,185,118,160,184, 32,129,234,148,104, 51,251,220, 93, 2, 92,160, 64,251,107,123, 63,175, 15,220, 48, 89, +163, 25, 33, 18,206,131, 52,104,236,107, 37, 21, 18,126,135,144,240, 59,101,125,218,129,248,118, 36,196,189, 57,253,122,217,252, +194, 45, 91,182,158, 16, 24,124, 86, 85,171, 12, 17,145,255, 42,148,210,135,246,246,246,111,246,236,217,243,215,227,199,143, 59, +134,132,132, 0, 0,174, 93,187, 6, 0,104,222,188, 57, 2, 3, 3,145,154,154,138, 33, 67,134,100, 36, 39, 39,191, 73, 41,173, + 52,231, 55, 63, 63,255,209,254,253,251,221, 10, 11, 11,155,126,242,201, 39,105,126,126,126,121, 42,149,138,228,228,228, 8,122, +189, 30, 14, 14, 14,178,166, 77,155,162,109,219,182, 5,151, 46, 93,170, 21, 31, 31,159, 15,224, 73,117,198,223,167, 79, 31,156, + 59, 87, 92,180,247, 34,250,106, 73,165, 82,132,132,132,120, 61,124,248, 48, 17, 0,170,211, 87,203,248,227,229,214,173, 91, 56, +123, 35, 1,156, 70, 9, 89,122, 18, 46,255,184, 31,189,199, 77,128, 94, 95,253, 44,134, 91,183,110,225,208,169,203,176,146,115, +184,119, 47, 10,251,247,239,199,123,239,189, 87, 35,205,106, 82,169, 23,249, 39, 67, 41, 77, 6, 80,110,158, 22, 7, 0, 97, 97, + 97,103, 81, 78, 87,219,186,117,137, 76, 94,128,121,221,155,123, 77, 31,212,190, 46,171,203, 75,130,192, 11, 96, 37,128,171,179, + 45,118,236,216, 85,123,215,158, 61,151,154,120, 73,214, 8,122,253,156,136, 84, 90,100,198,184,230,173,216,115, 97,208,142,169, +161,220,123, 61,234, 59, 2,128,148, 99,176,250,112,148, 30,192, 60,179,175,210,136, 54,222,196,162, 64,135,177,238, 78,118,115, +103,253, 47,204, 49,180,121, 32,206, 94,137,196,154,253,151,206,201,210,240,189,169, 58, 84,208,161,172,127, 42,175,234, 16, 66, +213,121,151, 60, 79,221,165, 86, 14,208, 62, 57, 13,104, 85, 80,169,181,136,207,228, 17,159,165, 2,167,144,226, 90, 76,130,210, + 41, 5, 71,171, 20,170, 0, 66, 8,105, 95,199,194,243,211, 47,150,123,171,148, 5,250,188,236, 12,189, 84,118, 89,162,176,148, + 39, 87,125,244,159, 92, 74,160,170, 78,181,165,205, 0,129,149, 89,208,162,217, 31,141,176, 74,140, 62,142,122, 76, 18, 8,165, +176,108, 16, 6, 27, 75, 86,218,193, 95,250, 20, 0,252,221,237,100, 75, 63,155,102, 55,121,198,103, 85,230,128, 5, 19, 34,109, +212,194,125,114,136,159, 3,206, 93,191,139,115, 17,113, 81,231,174,221,107,216,185,145, 39, 2,189,237, 39, 5, 19,178, 36,154, +154, 31, 33, 5, 0, 80, 61,160, 83,149, 86, 29, 6,187,145,161, 45, 6,125, 82,110,181, 97, 69,248, 3, 66, 12, 79, 65, 88, 22, + 32, 76,113, 5,100,252,239,224,236,235,208, 93,123, 15, 21,109,221,250,253,194,232,244,154,247,175, 17, 17,121,213,201,201,201, +185,173, 80, 40,186, 55,110,220,120,219,135, 31,126,104, 51,108,216, 48,207, 49, 99,198, 48, 0,144,154,154, 42,172, 90,181, 42, +233,235,175,191,206,205,200,200, 24,169,213,106, 35,170,210,163,148, 82, 66,200,197,111,190,249, 38,253,252,249,243, 13, 91,182, +108, 41,111,214,172,153,224,224,224,192,201,229,114, 94,163,209,168, 98, 98, 98,248,135, 15, 31,122,228,228,228, 60, 0, 16, 91, +157,105,253,146,232,213, 2,150,101, 63,165,148,134,188,136, 28, 45,133, 66,225, 9,224, 1, 33,164,158,185,211,134,101,225, 56, + 14,217,217,217, 40, 74,137,130, 69,194,125, 52,182, 98, 16,236, 96, 13, 91, 91,219, 26,153,162,220,220, 92,160, 48, 17, 23, 46, +220, 2,244,122,216,217,217,193,206,206,238,165, 27,173,138,188,200,191,129,178,149,134,192,159, 9,242, 21,254, 2, 53,116, 37, +239, 57,200,176,106, 92, 88, 93,169,191,175, 55,212, 9,215,112, 43,190, 0,115, 90,183,140,102,229, 54,170,113,239,246,105,222, +127, 64, 45,132,182,109, 65,252, 61,236, 38, 45, 89,177,225,253,134,110,100, 90, 84, 42, 93,109,202,160,162,210,232,163, 6,174, +100,235,233,219, 9,227,189, 21, 74, 8, 2,197,233,136,100, 68, 60,201,222,122, 39,141,150, 91,242, 91,225, 88, 61, 73, 23, 14, +204, 30, 74,169,133,157,149, 85,126,211, 38,245,157,187,180,105,194,188,217,169, 57,164, 44,112,225,234, 45, 76, 89,113,240,178, + 32,208,176,235, 38, 78, 27, 22, 87, 24, 62,107,160,138, 43, 12,117,207, 84, 24, 82, 74,105,113,213, 97,229,105, 95, 44, 75, 82, +138,226,254,112,151, 56, 5, 64, 25,123, 26, 79,178, 5,196,165,229, 35,143,115,135, 58, 49, 17,160,194,211, 51,148, 86,251,183, +218,217,217,217,181,118,112, 96,221,181,219,247, 67, 91,148,139, 71,103,182,161, 32, 59, 25,159,111, 60, 92,215,219,219,187, 83, + 66, 66,194, 89, 83,181, 8, 33,129,191, 30,221,229, 10, 10,176, 18, 57,194,215,239, 69,134,147, 37,156, 21, 82, 8,202,116,140, +155, 60,204,174, 71,215, 97,118, 0, 16,119,239, 38,252, 20,202,170, 36, 1, 0, 90, 39,244, 31,212, 57,200, 30, 58, 37,182,255, +114, 83,197, 0,111,126,127, 34, 42,182,115,125,123,139, 65,237,253, 28, 22, 36,229,188,133,106, 54, 21, 53, 68,180, 12, 84,167, +218,112, 31,165,124, 3, 23, 18,187,231, 98,154,213,128,174,205, 20, 82,142, 16, 90,144, 8,106,233,140, 13,219,247, 21,200,116, +229,127, 91, 17, 17, 17,121,158,162,162,162,235,132,144, 70, 31,127,252,241,208,217,179,103,119,180,178,178,170, 13, 0,133,133, +133,143,116, 58,221, 57, 0,187,204,169, 14, 44, 49, 78, 15, 8, 33,143, 98, 99, 99,221,118,238,220,105, 15,192,162,100,179, 10, + 64, 14,128,212,154, 84, 28, 26, 76, 21, 33,228,211,170,246, 53, 67,243, 88,137,102,189,234, 28,207, 48, 12, 79, 8, 1, 33, 4, +114,185, 28,231,207,159,199,192,176,174,184, 19,158,131, 16,123,107,180, 28, 57, 14,123, 78,158, 4,203,178, 32,132,128,101, 89, +179, 62, 71, 56,142,195,133, 11, 23,240,206,144, 1,144,115,128,157,157, 29, 62,254,248, 99,252,244,211, 79,224, 56,113,149, 62, + 83, 49,152, 42,243,250,104, 17, 44, 56,185,109,145, 20,188, 14, 71,182,125,133,163,145, 5,154,123,233,152, 19,148,142, 85,251, +145, 47,164,175,248,126,252,201, 11,145, 95,142, 26,220, 75,241,122,231,174,120, 61,180, 51,215,176, 69,167,185, 0, 74,141, 22, + 33,164, 75,101,189, 54,120, 1, 11, 55,255,114,119,220,158, 51, 49, 4,218,124, 12,238,214,130,242, 2, 22, 86,118, 49,229,105, +218, 89, 90,239,185,112,233,146, 3,180, 5,120,114,243, 55,139, 90,181,235, 2,188, 22, 15, 30,220,199,215,219,127, 20,206, 92, +189,183, 67,163,199,135,177, 89,180,208, 84, 77, 0,128,160,135,157,149, 44,168, 71,136,221,207, 2, 40,236, 21,210,250, 84,224, + 97,175,144,212,239,214,192,234,103, 74, 41,181,177,148,212,167,252,243,222,173,172,166, 82,163,223,180,253,219,173,203, 71,143, + 30,109,149,145,144,130,164,188, 72, 20,200,188,160, 83,248, 32,246,230, 57,101,145, 90, 95,229,135,120,101,175,103, 70, 70, 70, +218,245, 43, 89,216,179,113, 49,116, 26, 53,210, 18,138,189,106, 82, 70, 30,108,157,189, 46,153,163,169,213, 11,185,253,135,141, +149, 90,218,192,242,157,254,189,100,177,153,106,188,230,105, 3, 0,160, 5,233,184,115,234, 2, 66, 11,207, 2, 0, 30,198, 51, +240,107,226,105,210, 56,109, 44,164, 31,246,104,230,133, 71, 79,147,113, 62, 42,113,251,195, 76,154, 84,199,137,108,143, 77,202, + 25,223,167,181, 47, 86,254, 20,253, 1, 42, 48, 71, 21,105, 6,187,145,161, 0,218, 23, 39,195, 43, 65,129,246,193,110,100,168, + 41,149,134,229,105,114, 82,188,189,252,231,184, 79,246,253,145,209,103,250,219, 29,108,219,182,237, 41,131, 94,131,124,165, 90, + 23,157, 77,243,170,163, 89, 83, 68, 77, 81,243,223,170, 89, 98,122,118,148,220, 94,164,102, 18,202,244,117,170,137, 38,240,236, + 52, 33,165,148, 43,137,102, 85,154, 12, 95,149,166,241, 52, 33,165,244, 88, 73, 52,171,210,168, 86, 89, 77, 65, 16,146,154, 55, +111,238,216,187,119,111,240, 60,143,251,247,239, 35, 46, 62, 30, 93,198,127, 0,123,123,123,156,187,125, 27,247,238,221,195,167, +159,126, 10,157, 78,135, 67,135, 14, 61,215,225,189,172, 38,199,113,218,186,117,235, 74,251,246,237, 11,189, 94,143,135, 15, 31, + 34, 49, 49, 17, 83,166, 76,129,157,157, 29,174, 95,191, 94,170,153,145,145, 1,142,227,158,155,105,248, 43,126,151,254,237,148, +103,178,128,202,147,225,121,240, 58,228,158,156,135,213,231,161,213,234, 80, 63, 42,141, 62, 54,218,190,161,177, 19, 57,114, 59, +242,238,163,235,191,191, 46, 67, 90, 68,241, 49,102, 16,147, 65,147, 91,248,112,249,208,230,219,226,225,207,120,156,154, 95, 16, +147, 65,205,154,234, 2, 0, 42,240, 4,218, 34, 32,249, 26, 46,158, 59,139, 51,151,111,225,143,136,187,252,197,235, 49,123, 24, + 1, 11,163, 51,232,125,179, 53, 41,133,117,216, 74,140,136,120,224,219, 34,208,205, 23,188, 30, 84,208,193,110,240, 46,140,140, +110,235,219,162,142,189,111,113, 36, 75, 7,135,255,253, 6, 44,183,168, 84,239,143,167,218,205,237,107,203,223,202,207,201,108, +253, 70,167, 54, 86,118, 13,122, 32,227, 65, 12,238,223,186,160,188, 30, 25,123,241,143,167,218, 26, 69, 75,188,188,188, 58,190, +209, 41, 8,131,199,205,130,182, 40, 23, 15,207,124,139,130,172, 20,156,191,100,141,187,121,121,109, 0,156, 53, 85,235, 98,156, +174, 33, 0,180,247,151, 62,181,129,218,253,221, 94,189, 33, 39, 42, 8,234, 60,144,162, 12,196, 38,106,114,223,218, 24,207, 3, +128, 66, 78, 56, 43,154,107,107,138,110,176,159, 83,128,130,213,225,251,147, 81, 16,132,226,229,155, 4, 1, 27,190,255, 45,118, +252,194,119, 94, 67,176,175, 67, 19, 66, 8, 49, 39,228, 79, 40, 58,252,177,231,179,250,170, 95,231, 2,130, 22, 23, 38, 57,214, +239,176, 58,171, 3,170, 25, 25,139, 72,164,137, 0,198, 55,240, 36,155, 38,173,254,101,110,243,147,209,237,167,254,175,143, 45, +168,184, 0,187,136,136,200,203,167,160,160, 96,220,200,145, 35, 55, 73, 36, 18, 23, 0, 68, 16, 4, 8,130,192,125,249,229,151, + 18,158,231, 25,134, 97,120,150,101,245,199,142, 29,211,241, 60,159,174, 82,169,198, 85,165,169,215,235, 99, 39, 76,152, 80,183, +170, 10,197,221,187,119,131,227, 56,173, 94,175,143,125, 97, 23,244,138, 82, 94,179,210,170,219, 59, 80,124,214,238,157,121,243, + 0, 16, 80,204, 47, 99,178, 0, 0,183, 51,105, 82, 67, 87, 50,165, 97,139, 78,243, 12,199,152, 59, 56, 21,207, 15,104,209, 40, +112, 55, 0,168, 41,255,142,185,199, 3, 64,158, 90, 57,168,105,139, 54,123, 4, 74, 57, 61,165, 91, 25, 1, 7, 84,122,220, 49, +165,210,174, 34,146,210,114,174, 27, 22,138, 22, 64,255,156, 46, 44,105,227, 64, 41,165,165,211,133, 95, 89, 32, 35, 87, 93,101, + 31,168, 11,143,212, 93, 91,248, 74,199,158,248,253,230, 56,158,167,238, 44, 75, 82,148, 26,253,166,154,154, 44, 0, 72, 72, 72, + 56, 27,236, 74, 78,220,110,226,214,205, 89, 81,252, 92, 70, 17,144, 81,132, 19, 9,105,249,103,171,163,153, 93,168,235, 51,123, +213, 79,135,101, 18,150, 3,165,197, 13, 69, 41,133, 74,203,103, 25,204, 88, 99, 39,226,249,241, 33,253,110,150, 37,113, 85,233, + 93,185,151,188,114,240,146, 83,211,162,158,100,111,125,156, 77, 35, 1,224,113, 54,141,172,231, 68,230,198,166,228, 79,139,140, +203,254,202,220,188, 10, 74,112,190,197,224,121,207, 61,103,142, 70,121,220, 73,162,183, 0,244,107,232, 74,186, 14,158,250,245, + 84, 66,204,251,246, 44, 34, 34,242,239,198, 16,213, 98, 24,166,218, 69, 58,229,104, 30, 35,132,244, 4,240,192,140, 99,174, 0, +104,244,162,198, 80,162,153, 9, 32,243, 69,106,254,215,169, 86,195,210,168, 52,186, 1, 38, 44, 26,109,234,126, 21, 30,159, 68, + 79, 1,112,170,238,241, 70, 26,142, 53,209, 40,203,237, 84, 58,247, 69,234, 25, 40, 49, 85,127, 73,174, 79,116, 26,237, 14, 0, + 1, 1, 1,244,193,131, 7,160,148,214, 40,169,240, 78, 58,189,133, 50, 75, 57,148,229,118, 38, 77, 2,208,193, 20,189,152, 12, +186, 16,120,126,106,248, 65, 38,253, 28,192,231,213, 25, 99,117, 59,191,155, 74, 84, 26, 61, 9, 84,221,157, 95, 68, 68,228,213, +227, 69,118,134, 55,210,172,209, 2,211, 34,255, 76, 42,107, 88,202,252,125,195, 18,249,171,184,127,255, 62,169,169,201, 18, 17, + 17, 17,121,133,225,107,120, 43, 15, 90,195,155,200, 43, 64,121,213,135,162,209, 18, 17, 17, 17, 17, 17, 17, 17,169, 33, 21, 45, + 42, 77, 0,116, 41,239, 0,115,170, 9, 8, 33,229,106, 84, 70, 85,250,162,166,168, 41,106,138,154,162,166,168, 41,106,190,122, +154, 85,105,191,114,213,140,212, 40,201,249, 69,223, 0,116, 17, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212,124,149,111, + 0,198, 86,244, 88,156, 58, 20, 17, 17, 17, 17, 17, 17, 17,249,139, 16,123, 3,137,136,136,136,136,136,136,136,212,140, 42, 23, +149, 22, 17, 17, 17, 17, 17, 17, 17, 17,169, 6,180,170, 69,165, 69, 68, 68, 68, 68, 68, 68, 68, 68,170, 71,181, 22,149, 22, 17, + 17, 17, 17, 17, 17, 17, 17,169, 26, 90, 73,103,120, 82,146, 29, 47, 34, 34, 34, 34, 34, 34, 34, 34,242, 2,120,174, 51,124,120, +120, 56, 53,190, 23, 17, 17, 17, 17, 17, 17, 17,121,153,188,170, 94, 68,156, 58, 20, 17, 17, 17, 17, 17, 17, 17,169, 1,229,229, +104, 25, 16,141,150,136,136,136,136,136,136,136, 72, 13,168, 44, 71,203,208,176, 52,180, 36, 84, 23,250,114,134, 36, 34, 34, 34, + 34, 34, 34, 34,242, 12,175,164, 23, 41, 77,134, 15, 15, 15,167, 97, 97, 97,228,111, 30,143,136,136,136,136,136,136,200,127,148, + 87,209,139,136, 85,135, 34, 34, 34, 34, 34, 34, 34, 34, 53,192,184,202,176,236, 99,113,173, 67, 17, 17, 17, 17, 17, 17, 17,145, + 23, 64,121, 73,241,127,169,209, 34,132,116, 17, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212,124,213, 49,152,172,178,102, + 75,172, 58, 20, 17, 17, 17, 17, 17, 17, 17,169, 1,166, 84, 29,138,136,136,136,136,136,136,136,136, 84, 3, 66,200, 88, 66, 72, +175,146,159,123, 25, 71,181,196,136,150,136,136,136,136,136,136,136, 72, 13,160,148,110, 38,132,120,148, 24,172,112, 74,105,178, + 97,155,104,180, 68, 68, 68, 68, 68, 68, 68, 68,106, 64,153,188,172, 48, 66, 72,233,116,162,104,180, 68, 68, 68, 68, 68, 68, 68, + 68,106, 64,101, 57, 90, 4, 64,185,149, 3,148,210, 83,166,158,160, 58,213, 7, 85,233,139,154,162,166,168, 41,106,138,154,162, +166,168,249,234,105, 86,165,109,142,255,248,167, 80, 94, 91,135, 82,243, 69, 41,253,203,110, 0,186,136,154,162,166,168, 41,106, +138,154,162,166,168, 41,106,254, 87,111, 47,188,234,176, 25, 33,150, 47, 90, 83,228,239,135, 16,226, 70, 8,113,251,187,199, 33, + 34, 34, 34, 34, 34,242, 79,231, 47,171, 58, 12, 38,228,127,255, 11,113,217,216,136, 16,219, 8, 74,139, 42,219,215,213,213,117, +147, 66,161, 24, 86, 84, 84, 84, 72, 8, 17, 12,207,151, 56,101,227,117,129, 30,166,165,165,117,168,234,220,114,185,124,149,155, +155,219,255, 10, 10, 10,138, 8, 33,148, 16, 2, 66,138,151, 75, 42,123,207,243,124, 66, 70, 70, 70,115,115,175,239,159, 4, 1, + 88,103, 55,183,171, 18,150,245, 50,247, 88, 94, 16, 30,167,166,164,180, 49,249, 92,132, 44, 38, 4,211, 75,126, 94, 70, 41,157, +101,238, 57,255,241, 16,194,154,178, 91, 8, 96, 19, 3, 12,230, 25,230, 3, 9,176, 78, 45, 8, 27, 1, 0,148,242,213, 61,181, +230, 42,169, 75, 40,154, 16, 2, 59, 74,145, 75, 9,110,201, 90,210,216,234,234,213, 4, 66, 72,127,137, 68,210,199,214,214,214, + 58, 51, 51,243, 44,128,221, 0,134, 56, 57, 57,117,202,203,203, 43,208,233,116, 63, 81, 74, 15, 86, 71,187, 99, 83, 50, 67, 38, +149,140, 82,105,117, 75, 47,220,164,223,134, 54, 35, 78,122, 1, 75, 44,164, 92, 7,181, 70,191,236,252, 45,186,213,204,177, 18, + 20,167, 63, 0, 0,165, 37,255, 60,204, 97,191,137,239, 59, 0, 28,114,112, 8,148,187,216,254, 42,145,177,143,115, 82, 11,134, + 13, 72, 75,139, 31, 80,131,247,253,159,136,139,139,203, 8,134, 97,190,160,148,130,231,249, 57,153,153,153,219, 94,132, 46, 33, +100, 14, 0,251,146,135, 57,148,210, 47,106,168, 23, 7,192,183,228,225, 83, 74,169, 95, 77,244,254,203, 16, 66, 54,252,248,227, +143,227, 59,119,238,140,149, 43, 87, 98,195,134, 13, 79,210,211,211,151, 0,216, 78, 41,213,188,108,157, 87,145, 23,102,180, 26, + 18,210,115, 68,247, 86,155, 38, 14,234, 73, 38,143,248,164, 82,147,229,226,226,242,205,155,111,190,249,206,246,237,219, 37, 49, + 49, 49,150,254,254,254, 96, 24,166,212, 8, 25,255,191,172, 85,171,150, 80,145,142, 1,150,101, 87,247,235,215,111,228,254,253, +251, 21,215,175, 95, 87, 52,104,208,160, 84, 79, 16, 4,148,253,255,235,239,239, 95,169,158,157,157,221, 53,150,101,189,129,231, + 77, 90, 69, 63,243, 60,159,144,153,153, 89,165,121, 35,132,116, 7, 48,179,170,253, 0, 44,161,148, 30,175,108, 7, 9,203,122, + 37, 37, 37,185,154,160,245, 12, 62, 62, 62, 90, 83,247, 45,142,100, 97,186, 32, 80, 6, 0, 24,134,204,176,176,176,216,168, 82, +169,158, 26,182, 3, 0,165, 52,213,156, 49,120,121,121,189, 69, 41, 29, 7,128, 18, 66, 54, 39, 38, 38, 30, 48,231,120, 91, 91, +219,107, 50,153,204,155,227,184,210, 55,195,248,125, 41,251,152,231,121,170,213,106, 19,178,178,178,204, 54,216,103, 1,242, 38, +208, 81,207,178,147,157,156,157, 59, 92, 63,113,194, 42, 36, 36,132, 97, 89,118, 22,128,141,230,234, 25,163,185, 74,234,242, 58, + 12, 84,234,228,189,228,126,243, 3,213,113,243, 99, 44, 37,234,163,154,171,100,223,203, 54, 91,132,144,225,195,135, 15,159,188, +116,233, 82,103,153, 76,198,236,221,187, 55,112,202,148, 41,253, 87,174, 92,233, 60,104,208, 32, 27,141, 70, 35,204,152, 49, 35, +152, 16,226, 74, 41, 93,111,142,118,219,166,164,117,144,191,199,167, 19,135,189,142,105,139,119, 79,108,223,136,100, 88, 90, 73, + 55,188,213,161,174,125,195,218, 14,248,108,211,197, 15, 1,152,108,180, 8, 33,132,227,184, 54,158,158,158, 1, 42,149, 74, 15, + 0,174,174,174,165,127,232, 44, 91,236,159, 52, 26,141, 38, 43, 43,107,159, 57, 99, 45,143,105, 22, 22,173, 90,217, 91,159,156, + 55,116,184,101, 94,118,150,219,234,240,195,183,247,195,181,241, 0,224, 73, 77,181,255, 73, 48, 12,243, 69, 98, 98,162, 7,165, + 20, 30, 30, 30, 95, 0,216,246,130,164,237, 13,255,135, 9, 33,246, 85,236,107, 10,190, 70,122,190, 85,236, 91, 37,132, 16, 11, +142, 97, 38,200, 36,146,110, 60,207, 55, 2, 0,150,101, 35, 52, 58,221, 73,189, 32,172,163,148,170,106,122,142,127, 48,211,199, +143, 31,223,117,246,236,217,254,211,167, 79,199,244,233,211,107,109,217,178,101,211,162, 69,139,102, 16, 66, 26, 83, 74, 11, 94, +178,206,191,146,242,114,180, 12,188, 16,163, 21, 76, 72,243, 55,154,212, 59, 48,105,196, 96, 8,251, 87, 17,140,248,164,194,125, + 93, 92, 92,190,105,211,188,249,168,237,219,183, 3, 0,134,245,233,131,110, 45, 91,194,198,218, 10, 50, 89,241,112, 8, 37,144, + 74,164,232, 59,229,163, 42,207, 77, 8, 89,214,191,127,255,183,247,239,223,111, 13, 0, 27, 54,108, 64,255,254,253,225,232,232, + 8,133, 66, 1,169, 84, 10,137, 68,242,204,125, 85,176, 44,235,157,152,152,232,106, 97, 97, 1,160,216,248, 9,130,240,204,205, +104,158, 26,122,189, 30, 1, 1, 1, 85,234,150, 48, 51, 55, 55,183, 99, 97, 97, 97,165,115,186,181,107,215, 6,128, 74,141,150, +129, 47, 62, 95, 8, 65, 95, 8,142, 3,244,122, 64,173,101, 32,148,243,221,222,211,211, 19, 19, 38, 76,120,206,120,154, 67, 88, + 88, 47, 66, 8,217,239,233,233,121, 32, 45, 45,205,159, 16,140, 1,170, 21,233,122,255,254,253,251,214, 0, 16, 24, 24, 56, 1, +128, 89, 70,139,227, 56,239,219,183,111,187,202,229,242, 10, 35,151, 70, 38, 24, 90,173, 22,175,189,246,154,222,156,115,184, 1, +190, 89, 12, 51,166,105,179,102, 99,231,245,237,107,113,245,234, 85, 11,134, 97,160,215,235,241,229,151, 95,234, 41,165,246,193, +128,109, 52,144, 87,145, 6, 33,100, 54,128, 17, 40,142,210,110,165,148,126,249,204,118,138, 38, 74,157,188,215,195,130,190, 45, + 91,213,154,129,232,168,136,150,117,172, 15,193,134, 83,199, 2,120,169, 70,203,214,214,182,207,202,149, 43, 93,182,110,221,154, +119,239,222, 61,237,198,141, 27, 93,198,141, 27,103,163,213,106, 49,126,252,248,244,160,160, 32,233,202,149, 43, 93, 14, 30, 60, +248, 58, 0,179,140, 22, 71,176,112, 72,159,110, 80,233, 24,232,116,122, 23, 15, 23,155, 29,147,134,135, 74, 40,213,224,251,159, +174, 67,167, 23,190, 53, 85,171, 36,146,213,102,192,128, 1,117,118,237,218,197,221,189,123,151,171, 95,191, 62, 4, 65, 0,207, +243,208,233,116, 0, 0, 65, 16, 80,175, 94, 61,179, 94,131,242, 24, 5, 4, 58,187, 57,158,108,211,179,135,165,135,133, 28,142, +217,233, 24, 45,229,108,182, 41,212, 59, 1,180,173,241, 9,254, 65, 80, 74,193,113, 28,226,227,227,225,234,234,106,233,232,232, +152, 12, 96,126, 86, 86, 86,133, 21, 85,255,118, 8, 33, 45,101, 28,119,224,251,111, 87,187,183,106,219,150,117,243,112, 69,204, +253,167,224, 8,223,229,246, 31,215, 67, 71,189, 55,117, 18, 33,228, 45, 74,233,213,191,123,172, 47, 26,143,118,239,247,243,104, +255,193, 6, 66, 5,124,182,246,112,254,226,101,171, 20,227,199, 12,103,167, 76,153, 2, 31, 31, 31,255,126,253,250, 45, 3,240, + 94,149, 58,173,223,239,231,222,118,226, 6, 80,138,121, 95, 31,206, 95,180,108,149,226,189,106,232,252,155,161,149, 84, 29,214, +216,104, 5, 19, 82,167,161,143,235,137,197,211,223,147,208,159,191, 99,138, 50,211, 80,145,149,113,117,117,221,212,163, 71,143, + 97,219,182,109, 43,125,174, 77, 72, 8,250,189,222, 30,174, 78,118, 80, 88,201,138, 63,142, 4,130, 91,247, 30,155,100, 8,124, +124,124,198, 31, 56,112,192,218,240,216,211,211, 19, 82,169,180,244,102,108,178, 12,183,178,145,143,242,176,176,176,192,169, 83, +167,192,113, 28, 88,150, 5,199,113,165, 55,227,199, 44,203,194,205,205,172,212,165, 37,118,118,118,141,243,243,243,109,115,114, +114,224,235,235,155, 7,224,182,209,246,198,233,233,233,182,230, 8, 10,250, 66, 76, 25,221, 0, 18,205,101,104, 36, 45,161,228, +218,225,226, 31,119,112,244,248, 89, 36, 38,165,160,125,235,166,120,119,232, 0,156, 60,121, 18, 60,111,222, 76, 7,165, 52,149, + 16,178,172,119,239, 94, 51, 0, 66,186,116,233,146, 51,113,226, 68,230,238,221,187,111,247,235,215, 55,228,254,253, 7, 0, 0, +134, 33,211, 9, 33,171,205,136,108,201, 0,224,220,185,115, 0, 32, 55,107, 80, 37,200,229,114, 92,186,116, 9,134,105, 98,134, + 97,192, 48, 12, 88,150,197,145, 7,206, 40,212, 48, 40, 74,141,196, 7,189,124, 81,187,118,109, 48, 76,213, 41,137,161,128,197, + 69,160, 31,145, 72,166,120,120,122,250,119,170, 83, 71,113,234,212, 41, 22, 0,252,252,252,104,114,114,114,206, 79, 63,253,148, +207, 1, 27,252, 40,221, 94,153,201,242,245,245,109,199, 48,204, 23,134,215,156, 16,178,204,223,223,255, 83,195,118, 65, 16, 48, +180,171,163,100,210,164,201,210, 86,161,197, 95, 78, 90,245,222,133,188,135,139, 27,144,172,217,118,213,121, 77,106, 66, 94, 94, +222,158,122,245,234,177,153,153,153, 23, 1,196,233,116,186,153, 59,118,236,112, 29, 61,122,116,218,206,157, 59,151, 0,240, 92, +186,116,105,104, 97, 97,225, 94,115,116, 59, 52, 33, 61,155, 55, 13,105,237,235,227,131,179, 23,175, 66, 42,147,216, 79, 24,209, + 11,214,214, 28,190,218, 26, 46,196, 37,100, 77, 60,127,139,110, 55, 69,171,196,100,181, 28, 48, 96,128,255,174, 93,187,100, 0, +112,251,246,109,164,164,164,192,197,197, 5,150,150,150,144, 72, 36, 96, 89, 22, 18,137,196,236,215,160, 44,163,128, 64, 59, 31, +167, 43,135, 14,253,100,233,232,104,143,181, 31, 77,194,187,105,169,176,183,177,134,174,160,176,242,208,248,191, 12, 66, 72,224, + 91,111,189,101,193,243, 60, 10, 11, 11,113,230,204, 25, 59, 75, 75, 75, 59,111,111,239,121, 0, 76, 54, 90,150,150,150,169, 42, +149,202, 21, 0, 44, 44, 44,210,148, 74,165, 27,128, 60,185, 92,110,248, 63, 93, 80,114, 62,147,166, 19, 43,152, 38,124,106, 20, +201,122,106,198,101,150,213,110,209,178, 69,227, 83, 7,247,255, 96,157,155,159, 2,123,135, 52, 48,200,197,230,205,235, 96,105, +105,139,121,243,102,115,143,187,188,238,213,189,231, 91,167, 8, 33, 93, 94, 57,179, 69,201,230, 46,189,135, 57, 90, 42,108, 0, + 0,130, 94,135,109, 91, 38,129, 97, 24,124,250,233,167,104,216,176,225, 88, 66,200, 39,148,210,172,202,101,176,185, 81,199, 65, +142, 50,139,226,183, 88,224,117,216,184,123, 90,177,206,172,113, 24,210,187,246,216, 91, 59,201, 47, 13,235, 32, 31, 0, 40,133, + 82,194,224, 41, 90,210, 52,131, 70,120,120,120,167,176,176,176,179, 21, 61,254,167, 67, 8,241, 0, 16,102,252,156,193,124,113, +225,225,225, 52, 44, 44,172,212,121,148,125, 92, 25, 77, 9,113,118,179, 83,156,218, 48,127,146, 53,119, 57,156, 85, 62,125,128, + 36, 21, 95,250,151, 67,203,148,104, 42, 20,138, 97,219,182,109,123,198,135,249,186,185, 66, 42,149, 64, 34, 37,176,239,208, 11, + 0,144,115,254, 40, 8, 41,223,100,149,213, 44, 44, 44, 84,221,188,121,211,122,235,214,173,112,117,117,133,191,191, 63, 20, 10, + 5, 44, 44, 44,158, 49, 87,198,134,171,172,209, 42,171,105,216,206,113, 28, 24,134,193,201,147, 39,161,215,235, 49, 96,192,128, +231, 76, 22,199,113,229, 26,183,178,154, 70,207, 31, 39,132,220,166,148,118, 44,249, 0,190, 77, 41,237,100,116,238,238, 46, 46, + 46, 51, 1, 44, 49, 85,147,101, 41, 88,213, 69, 8,222,171,192,197, 79,130, 70,210, 4,167, 47, 92,199,182, 77, 43, 1, 0,254, +245, 91, 96, 96,191, 94,165,209, 56, 83, 52,141,241,242,242,218,157,158,158,209,227,245,215, 95, 71,118,118,182,110,254,252,249, +104,220,184, 49, 2, 3, 3,203,221,223, 20, 77, 74,105,234,237,219,183,125,148, 74,165, 73,211,142,229,105, 18, 66,176, 99,199, + 14,168, 84,207, 71,245, 29, 58, 45,194,180,254,126, 24,249,193,118, 44,187,183, 23,235,215,175,175,244,218, 21, 64, 99,149, 93, +189,213, 50, 86,223,120,201,236,247,229,239,190,251, 46, 59,114,228, 72, 60,125,250, 20,163, 71,143, 86,157, 60,121, 82,147,146, +156,252,147, 76, 16,214,106,159, 53,198, 21,106,202,229,242,239,143, 31, 63,142,189,123,139,125, 73, 76, 76, 12, 2, 2, 2,172, +140,247, 23,178,246, 33, 63,110, 45,174, 28,185,139, 86,189,119,225,202,145,161,224,115,194, 37,205, 3,144, 91,217,181,215,148, +242, 52, 41,165,123, 1,148,154, 40, 66,136,229,206,157, 59,251, 2, 56, 92,178, 13, 0, 86,152,163, 89, 44,132,145,131,250,247, + 5, 39,181,193,221, 7, 9,232,212,230, 53,184,185,186,226,246,157, 88,196, 37,102,165, 18,130, 17,111,182,147, 47, 81, 42, 53, +159,156,187, 73,191,169, 66,147,120,123,123, 7,238,219,183,175,244,255,136,193, 84, 25, 12,150,225,177,193,120,155, 60,206, 50, +140, 2, 2,109,188,173,175, 44, 92,215,206,234, 74,196, 78, 4,248,245,132, 67,207, 94,248,230,196, 9,220,143,138, 86,105,138, +244,111,152,171,105, 14, 47, 83,147, 16, 18,216,191,127,255,139, 63,252,240,131,125,124,124, 60,206,157, 59, 7,127,127,127, 20, + 21, 21, 85,249,133,183,172,166, 74,165,114, 53,154,214, 51,164, 54,124,161,209,104, 12,111,134,225, 15,177,194,233,196, 50,154, +207, 77, 19, 86, 39, 39,171,156,255,243, 50, 11,169,116,223,161,131,187,173,163,239,158, 67,211, 38,173, 97,109, 23, 12,129, 79, + 65,102, 86, 1,178, 31, 36,225,243,207,151, 97,222,252, 57, 56,252,227,126,235,160, 6, 77, 14, 16, 66,234, 25, 79, 35,254,219, +223,119, 16, 58,246,212,145,157, 27, 8, 21,160, 76,189, 43,151, 20, 62, 82, 12, 27,250, 22, 59,120,240, 96, 28, 62,124, 24, 81, + 81, 81, 27, 42, 50, 89,198,154,132, 98,108,228,185,189, 27, 64, 41,148,105,119,229, 82,229, 35,197,240,183, 7, 94,125,252,137, + 0, 0, 32, 0, 73, 68, 65, 84,178,239, 14,233,134,203,191,173, 70,183,166,143, 34, 61, 93,209, 47,187,100,242,144, 99,145, 41, +183,192,239,150, 87,201,101, 35,179,117, 6, 0, 49, 50, 88,103,240,103, 14,230,191,129, 48, 90,220, 29,126,108,217,232, 86,105, + 68,203, 28,131, 5, 0,129,132, 88, 43,100,210, 43,219,230,189,239,169,120, 26,197,169, 35, 47, 33, 73, 45,208,141, 79,244,194, + 21, 66, 44,175, 83,170, 44,123, 76, 81, 81, 81, 97,108,108,172,229,136,126,253,208, 54, 36, 4, 30, 78, 78,168,231,237, 13, 75, +185, 12, 50,233,159,223, 62,205,121,101, 9, 33, 52, 40, 40, 8,189,123,247,134, 68, 34,129, 66,161,128,181,181, 53,100, 50, 89, +185,209, 44, 83,191,229, 82, 74,193,178, 44, 34, 35, 35, 17, 23, 23, 7,123,123,123,252,254,251,239,120,227,141, 55,158,139,106, +149,140,195,140, 81,255, 57, 29, 89,206,243,199, 97,226,148,161, 1,158, 39, 40,160, 77, 96,241,100, 34,138,200,107, 80,171,245, + 80,171,213,248,230,130, 22, 87, 99, 11,161,213,106,160, 86,171, 43, 60,103, 69, 16, 66, 24, 79, 79,207, 97, 1, 1, 1, 19,134, + 14, 29,170,147,201,100, 40, 44, 44, 68, 81, 81, 17,162,162,162,116, 61,122,244,204,233,221,187,151, 93,120,120, 56,165, 20,203, +204,204,211,202,244,242,242,242, 41,153,158,205, 52,231,122,141,198, 87,106, 98,202, 50, 98, 69, 52, 56,182,248, 61,217,176, 97, + 3,120,158, 7,165,180,194, 55, 73, 69,200,175,243, 23, 45,183, 91,186,234, 91,216, 57,186,225,236,217,179,252, 47,191,252,146, + 79,128,152,251, 81, 81, 43,254, 15, 56,182, 15, 48, 57,183, 13, 0,178,179,179, 45,253,253,253,225,237,237, 13, 65, 16,160,211, +233, 74,163, 47,153,153,153, 80, 42,149,112,180,202, 65, 93, 39,111,232,243,207, 32, 57,242, 51,120, 88,223,197,246,227, 26, 93, +179, 64,220, 50,231, 92,127, 5,148,210,239, 0,124, 87,115, 33,120,185,186,251,128,161, 58, 36,165,101,162,111, 88, 55,176, 82, +107, 60,142,207, 64,147,224, 58, 30,111,255, 95, 59, 15,150,232, 49,125,201,174, 9, 0,190,169, 74,174,160,160,128,191,123,247, + 46,110,223, 46,246,187,182,182,182,176,178,178,122,230,111,156, 97,152, 26, 69,180, 12, 38,107,209,134, 55,172, 24, 73, 33,242, +248, 83,216,186,227, 58,154, 4,245,194,198, 43,127,168,248,212,172, 46, 95,169, 84, 49,213, 62,193, 63, 0, 15, 15,143,113,130, + 32,204,163,148,230,244,239,223,223,109,215,174, 93, 14,137,137,137,184,126,253, 58, 62,253,244,211,116,158,231,245,148, 82, 66, + 41,253,172,166,231,162,148, 10,248,211, 96,189, 48, 8, 33, 18,133, 5, 62,112,182, 37,125, 56,198,214, 95,159, 87,240, 56, 67, + 67,127, 42,210, 11, 95, 83, 74,117,149, 29,203, 48,204,255,246,239,217,224,233,236, 34, 32,212,229,117, 36,167,106,177,232,163, +225,200,204,204,199, 55, 91, 22, 3,144, 65,171,103,209, 49,244, 45,184,186,122, 97,236,152,177,238, 27, 54,109,124, 31,192, 87, + 47,250, 58,254, 46,146,127, 95,247, 35, 33,228,148,139,139, 75,212,251, 99,199,186,248,251,191, 3, 11, 11, 11,236,222,189, 27, +187,214,174,229, 87, 1, 3, 55, 17,114,122, 28,165, 63, 86,170,115,249, 79,157, 73,227,199,187, 52,104, 48, 30,114,185, 28,191, +253,242, 29, 84, 41, 59,242,195,218, 66, 91,164, 66, 88,173,222,212,241,201, 17,146, 37,145,224, 1, 0, 72, 44,144, 44, 1,210, +202,200,253,219, 12,150,129,112, 67,158,150,225,158,214,180, 51, 60,149,200, 34,182, 76, 30,226,231, 6, 53,209, 92, 56,130, 68, +181,192, 47,189,175,101,111,228,210,105,209,229,152, 44, 0, 96, 24, 70,240,245,245,197,235,205,155,163, 95,135, 14,224, 56, 14, + 22, 50, 41,108, 44, 44, 65,249,226, 72,150, 97,234,176,146,207,196,103, 48, 24, 28, 39, 39, 39, 72,165,210, 82,131,101,106, 52, +171, 34, 77, 65, 16,192,113, 28,110,223,190,141,246,237,219,195,199,199, 7,123,247,238, 69,247,238,221,159,155, 74, 52,215,100, + 1,197, 70,203,120, 26,207, 40, 73,190,202, 36,248,178,168, 52, 4, 25,154, 38, 32, 36, 4,122, 61,192, 83, 64,173, 82,129, 82, +128, 82, 64,167,213, 64,165, 82,149,158,211,148, 41, 89, 15, 15, 15,223,218,181,107, 47,152, 49, 99,122,131, 38, 77,154, 34, 61, + 61, 29,130, 32,192,202,202, 10, 69, 69, 69,176,181,181, 69,219,182,109, 31, 47, 88,176, 32,153, 82,140, 53, 55, 25,190,166, 24, + 94,243, 19, 39, 78, 60, 51,109,104,184, 21, 38, 39, 96,228,135, 59, 33,227,138,167,150, 12, 57, 60,149,192,116,238,216, 14, 23, +111,196,232,255, 55,125,181, 90,146,121,125,137,187, 32,108, 75, 0,170,125, 93,148, 82,100,100,100, 32, 53, 53, 21,125,250,246, +197,174, 31,126,192,147, 39, 79, 16, 28, 28,140,206,157, 59,195,213,213, 21, 79,158, 60,193,213,243,106,168,179,179,144,165,185, + 14,133, 77, 43, 28, 58, 27,171,158,187, 94,243,183, 84, 29, 2, 0, 33,164, 15,128,225,182,182,182,181,139,138,138,146,245,122, +253, 62, 0,251, 0, 12,228, 56,110,160, 66,161,240,200,203,203,123,132,226,106,162,159,170,210,179,180,176,112,146, 91,216, 66, +208,171,193,113, 28,124,124,252, 65,121, 13,178,243,148, 24, 49,184, 55,110,220,190,131, 95, 78, 95,214,235,116,194, 26, 19,134, + 71, 89,150,165,129,129,129, 72, 75, 75,131, 68, 34,129,165,165, 37,172,173,173, 49,107,214, 44,172, 93,187,182,212,100, 85,215, +104,141, 2, 2,109,125,173, 47,127,177,174,216,100,165, 36, 37, 35, 53, 65, 2, 23, 39, 55,172, 89,187,170, 48,251, 73, 74,171, +111,129,127,181,201, 2, 0, 65, 16, 62, 75, 76, 76,116,229, 56,206, 93,175,215, 35, 62, 62, 30,215,174, 93,195,196,137, 19, 83, + 51, 51, 51, 67, 41,165,213,186, 70, 11, 11,139, 52, 67, 36,203,194,194, 34, 13,168,112, 58, 49,199, 40,146,149, 83,137,100,185, +211,132,132,144, 58,254,222, 54, 39,183,172,156,226,219,162, 85, 91, 70,193,217,102, 23, 60, 72,105,127,225,220,217,182, 19, 87, +126,243, 62, 33,164, 27,165,244, 97, 69,162,114,137,164, 71,235,118,237, 56,208, 84,112,178,246, 88,182,116, 48,210, 51,242,144, +157,149, 15,169,212, 10, 26, 29, 11, 94, 32,104,219,190, 3,190,219,190, 7, 13,199,140,102,101, 18, 73, 87,188, 66, 70,171,132, +197, 95,127,253,181,111, 80, 80, 16,182,109,219,134,211,223,127,143,119,115,115,113,150, 97, 88,157, 68,226,124, 76,167,219, 12, +160, 82,163,101,172,211,176, 97, 67,124,251,237,183,216,177, 99,199,211, 97,111,164, 29,152, 50, 12,174, 90, 45,222,188,126, 15, +142,181,122, 3,215,239,193,177, 89, 16,234,233, 57, 60, 32, 4,207,180,131, 10, 15, 15,239,100,124,255,111,130, 22,175,109, 88, +238, 20, 59, 7, 32, 52, 60, 60,156, 26,223, 87, 37,168,112, 13, 28,191, 99,240,235,126, 33,117,125,137,110,239,106,196, 23,234, + 53,159,220,211,202,238, 23,208, 41,209,148,174,170,232, 56,134, 97, 40,203,178,176,177,180,132,139,189,125,113,152,159, 97, 0, + 1, 16,116, 0,225,139, 13, 0, 21, 8,204, 41,154, 22, 4, 1, 50,153,172,220,196,119,115,115,179,140, 53,243,243,243,241,248, +241, 99,140, 29, 59, 22, 10,133, 2, 0,144,146,146, 2, 63, 63, 63,112, 28,135,196,196, 68,252,246,219,111,168, 93,187, 54,228, +114,185, 89,110,203, 40,186,212,152, 16,114, 22, 64,227,228,228,100, 91, 15, 15, 15,192,220,136,150, 64, 81,164, 38,208,104,120, +220,191,127, 31, 73, 73, 73,120,252,232, 1, 90, 20,230,129,130, 5,165,212,172,136,150,183,183,119, 72, 64, 64,192,198, 37, 75, +150, 72,189,189,189, 65, 41,133,131,131, 61,138,138,138,144,145,145,137,224,224, 96,248,248,248, 96,217,178,101, 0,176,235,101, +155, 44, 99, 12,213,165,198,247, 12,195,224,195,255,243, 69, 86,150, 53, 88,246,207,234,211, 42,114,180,164, 0, 16,218,173, 63, +119,242,151, 99, 86,122, 96, 65, 10,203, 46,168,234,155, 8,165, 84,199, 11,130,162,162,237,241,241,241,144, 72, 36,216,191,111, + 31,178, 82, 83,209,164, 73, 19,180,108,217, 18, 15, 30, 60,192,141, 27, 55,224,228,228, 4, 23,239, 54, 56,251, 72,139,232, 36, + 37,236,236,236, 16,155,192,252,109, 45, 3, 8, 33, 99,186,116,233,242,233,138, 21, 43, 92,221,221,221, 37,233,233,233, 65,235, +214,173,107,178,110,221,186, 73,239,191,255,190,219,251,239,191,239,224,226,226,194,165,164,164, 4,126,244,209, 71,205, 8, 33, +181, 41,165,203, 43,211,180,178,178,113,100,165, 86, 32,132,131,189,157, 3, 56,153, 21, 4, 61, 7, 94, 0,108,237, 92,112,241, +198,126,252, 30,145, 63, 46, 45, 19, 85, 86, 7, 82, 74,169,147,147, 19, 24,134,129,147,147,211,115,145,234,137, 19, 39, 98,203, +150, 45,165,211,136,230, 98, 48, 89,139,214,189, 97, 77, 74, 76, 86, 74, 60, 7,162,174,141, 35, 63, 94,202,201,126,146,210,254, + 85, 48, 89, 0, 74,139,122, 30, 61,122,132,162,162, 34,156, 63,127, 30,159,125,246, 89,122, 89,147,229,230,230, 54,198,214,214, +118,126, 65, 65,193,178,228,228,228,213, 85,233,150,152,168,103, 40,111, 58,209,212, 22, 15,229, 77, 19, 18, 66, 36, 62, 30, 22, +199,111,156,223,233,103, 71,111, 17,196,141, 5,238,231, 69,217, 92,113,237,216,179, 69, 24,243,218,250,133,181, 90,142,155,117, +156, 16, 18, 84, 81,100, 75,224,249,215,172,172,109, 0,164,225,250,181, 51,165, 38, 43, 51, 43, 23,106, 45, 11,181,134, 64,165, +101,240,122,151, 55,177,118,227, 14, 36,166,101,193, 80,145,248,170, 64, 8,113, 12, 9, 9, 25, 63,112,224, 64, 44, 88,176, 0, +167, 86,172,208,188, 71, 72, 30, 7,208,112,158,135, 64, 41, 97, 76, 72, 98, 47,171,243,213, 87, 95,253, 8, 96,200,146,137,104, +147, 93,128, 17,158,189,169, 99,173,222,197,251, 14,152, 65, 1,192, 49,253,212,179, 31,153, 97, 97, 97,196, 48,179,102,238, 12, +219, 63, 29, 46, 44, 44,236,108,120,120, 56,140,239, 43, 59,192,214,189,126,207, 89, 31, 79, 92,218,162,123, 7,146, 60,181, 43, +178,242, 84,250,217,209, 90, 89,130,178,114,147,101,204,199,235,214,225, 70, 76,241,223,177,183,171, 43,166,191,253, 54,168, 30, +248, 61, 42, 26,123, 78,157,194,224, 46, 93, 96, 85, 82,241, 87, 21,134, 15,209,242,162, 88,198,209, 44,115,163, 78, 57, 57, 57, +216,183,111, 31, 90,182,108, 9,133, 66, 1,142,227,208,184,113, 99,220,185,115, 7,117,234,212, 1, 33, 4,135, 14, 29, 66,191, +126,253,240,240,225, 67,180,105,211,198,186,106,213, 63, 49,152,158,232,232,104, 91, 74,105, 71, 67,244,163,186,168,213,106,220, +189,123, 23,189,123,247,134,131,131, 3,188,188,118,225,212,241,157, 80,132,188, 11, 66, 96,150,209,226,121,126, 84, 88, 88,152, +148, 16, 2,165,178, 8, 22, 22,150,176,178,178,134,141,141, 45, 2, 3,131,144,148,148,132,238,221,187,107, 98, 99, 99,215, 39, + 39, 39,155,149, 24, 13, 0,193,193,193, 86,185,185,185,239,214,170, 85, 75, 6, 0,150,150,150,193,117,235,214,157, 22, 27, 27, +155,111,142,142,177,193, 34,132,128,101,217, 82,163,197, 49, 12, 60,220, 93, 75, 31,151,228,167, 85,248, 75, 64, 8,201, 75,204, + 84,203, 1,192,215,215, 23,107, 55, 29,102,194,194,194, 48,105,210, 36,232,116, 58,172, 95, 95, 92,100, 55,116,232, 80,104,181, + 90, 28, 56, 80, 92, 36,201,113, 92,165, 97,147,107,215,174,225,250,245,235,208,233,116,200,205,205,197,207, 63,255,140,179,231, +206, 97,247,161, 95,241,228,209, 3, 52, 14,242,195,232,209,163, 32,145, 72,176,125,251,118,180,111,223,222,156,151,224,133, 35, +145, 72,134,109,217,178,197, 99,219,182,109, 57,135, 14, 29, 42,108,221,186,181,124,213,170, 85,174,107,215,174,117,209,104, 52, +152, 60,121,114,218,229,203,151,213,125,251,246,181,218,188,121,179, 71,221,186,117,187, 2,120,206,104, 17, 66,172, 0, 12, 6, +240, 78,104, 75, 59, 46, 39, 95, 9, 65,175,193,163, 39,143,145, 91,160,129,192,107,241, 52, 33, 9, 5, 42, 30,153, 89,249,104, +252, 90,183,175,207,156, 57, 51,135, 16, 50,155, 82,122,180,170,113, 70, 69, 69,225,242,229,203,120,242,228, 9, 30, 61,122,244, +204,182, 49, 99,198, 96,199,142, 29,102, 71,180,202, 55, 89, 44,136,186, 14,142, 30,186,146,147,246, 32,249,149, 49, 89, 0, 64, + 41,157,231,225,225, 49,207,195,195,195,226,196,137, 19,118,181,106,213,130, 94,175,215,148,141,100,133,134,134,126,178,101,203, + 22,143, 58,117,234, 76, 4, 80,165,209,122, 25, 48, 12,198, 44,219, 48,222,217, 70,246, 52, 9,247,151,151,244, 18,100,129,162, + 60,224,204, 15,224,218,205,125, 60,177,239, 12,135,153,219, 22,140, 65, 37, 21,178,177, 15,227,177, 97,195, 90, 76,153, 60, 2, +223,125,179, 12,130,192, 65,173, 99,225,235,223, 26,106,173, 0,194,112,104,242, 90,115,156, 62,115, 30, 18, 6,216,183,109,195, + 75,186,194,151, 3,165, 52,139, 16,178,254,208,161, 67, 31, 76,154, 52, 9,130, 32,200,230,111,216,160, 76, 79, 79, 95, 12, 51, +250, 95,149,163,211,111,195,134, 13, 49, 51,215,166,255, 56,101, 24,216, 39, 71, 72,214,245,123,112, 28, 48,131, 98,255, 82,130, +102, 65,200, 82,148,255, 17,127,174,204,253, 43, 1, 7, 20, 59, 73,227,251,242,104, 22, 88,103,161,157,163,195,168,150,141, 3, +157,167, 79,122,143,123,152,162,194,129, 90,111, 23,252,246,253, 26,171, 20,189,252,235, 7, 84,105,146,201, 50,176,231,183,223, + 74,127,254,114,215,174,114,183, 37, 15, 24, 96,146,150, 32, 8, 21, 70,177,204,141,100, 1,128, 66,161,176,239,218,181, 43,222, +120,227, 13,188,245,214, 91,165, 57, 89, 77,155, 54,197,238,221,187,209,191,127,127,220,188,121, 19, 30, 30, 30,168, 95,191, 62, +234,215,175,143, 99,199,142,153,117, 14,195, 52, 94, 72, 72,136,161,234,176,113, 66, 66,130, 89,213,134,198,168,213,106,100,102, +102,194,209,209, 17, 50,153, 12,173, 90,181,196, 7, 31,182,130,179,199,183, 8,105, 16,132,194,194,194,210,242,247,170,144, 72, + 36, 33,245,234,213, 67,122,122, 58,210,211,211,225,226,226, 2, 79, 79, 79,184,187,187, 99,249,242,229,116,245,234,213,191,104, +181,218,245,233,233,233,102, 71,178, 60, 60, 60, 58, 56, 58, 58,126,162, 84, 42,101, 70,223,112,101, 46, 46, 46, 63,121,122,122, + 46, 78, 74, 74, 50,103,141, 77,104,181, 90, 16, 66, 16,254,200, 19,133, 26,130,188,132,235,152,244,127,126,207, 24, 47,137, 68, + 98, 74, 66,111,225,144, 33, 67, 92,125,124,188, 17, 31, 27,133,253,251, 41, 86,172, 88, 97,168,138, 68, 76,201, 23, 3,195,227, +206,157, 59,195,223,223, 31,212,140, 94, 25,130, 32,224,246,237,219,216,245,211, 89,120,248, 53,192,211,251,119,113,227,216, 17, +212,114,113, 68,195,215,154, 67,167,211,213,168,245,198,139, 64,167,211,109, 13, 8, 8,160, 26,141,230, 44,128,181, 17, 17, 17, + 35,146,147,147, 39, 31, 62,124,216,115,224,192,129, 73, 71,142, 28, 89, 5, 96, 91, 68, 68,196,248,207, 63,255,252, 13,189, 94, + 95,110,181, 32,203,178,223,125,244,209, 71,161, 3, 7, 14, 36, 82, 70,167, 57,113,124, 59,167,215,235,200,199,179,183,242,103, + 46,156,101,244,122, 29,121,107,200, 71,194,177,223, 34,152,113, 31,126,201, 55,109, 29,134,200,200, 72,247, 94,189,122,125, 14, +160, 82,163,101,136, 84, 85, 20,161,100, 89, 22, 35, 70,140,192,238,221,187, 77,190,238,209, 64, 29, 91, 63,235,203,139,214,117, +177, 38, 92,129,145,201,170,139,163,135,174,228,164,222, 79,122,165, 76, 22, 0,100,100,100,108, 2,176,201,209,209, 49,213,202, +202, 10,249,249,249,207,253,254, 17, 66, 44,130,130,130, 44,100, 50, 25,186,117,235,230,232,225,225, 17,195, 48,204,234,196,196, +196, 10, 29, 71,121,211,132,229, 77, 39,214,164,234,208,193, 5,189, 90,117,120,205,230,158,221, 2, 27, 11, 78,117,179, 86,140, +133, 45, 1,144,171,118,123,116, 49,110,112, 30, 73,147, 55,109,222,185, 25,108, 57,171, 94,168,192,104, 49, 44,123, 35, 55, 59, +167, 71, 94,190, 6, 23,126,143,196,144,193,245,160,214, 18, 8, 2,131,130, 66, 53,192, 74,192, 0, 24,250,246,112, 80,194, 33, + 43, 53, 9, 44,203, 70,152,246,234,254,171,152, 53,126,252,248, 30,179,103,207,174, 93,210,255,202,175,164,255,213,116, 66, 72, + 35, 90, 69,243,241, 74,116,106, 29,217, 61,119,234, 79,231, 55,230,134,181, 85,222,111, 22, 4, 0,112,108, 22,132, 44,137, 4, + 15, 56, 22,153,148,226,153, 52,163,176,176,176, 78,198,247,255, 38,202, 38,193, 27, 63, 54, 41, 71, 43,160,142,247,155,157, 90, + 52,255,112,206,236, 57, 54,119, 46,158,193,204,133,107,105, 64,243,174,249,155,206,223,208, 20, 88,249,247,200, 79,191,255,187, +137, 99,161, 0,240,230,235,253,209, 56,184,229,115, 27,219,119, 46,238, 37,121,225,244, 53,164,166, 39,154, 36,104, 48, 81, 21, +229,100,153, 82,210, 95, 22,165, 82,153, 19, 25, 25,233,154,144,144,240, 76,226,187,191,191, 63, 8, 33,184,114,229, 10, 46, 95, +190,140, 33, 67,134,128,227, 56, 72, 36, 18,156, 61,123,214,172,104,140, 81,116,233, 54,165,180, 19, 33,164,187,183,183,119,185, +213,134,166,104, 41,149, 74,228,230,230,226,248,241,227,168, 87,175, 30, 22, 45, 90, 4, 79, 15, 55,204,153, 51, 21,130, 32, 32, + 47, 47, 15, 60,207,155, 26,209, 18, 12,209, 34, 65, 16,144,158,158,142,218,181,107, 99,221,186,117, 88,181,106,213,231, 73, 73, + 73,135,205, 29,163,175,175,175, 61,207,243, 31,247,238,221,187,107,223,190,125,209,189,123,247,103,182,255,240,195, 15, 54, 7, + 14, 28, 88,236,227,227,243,166, 86,171, 93,146,154,154,154,110,138,238,183,223, 22,183, 95, 82,180,158,135,153, 3,107,225,157, + 9,219,177,124,249, 65,200,229,127,118,140, 96, 89, 22, 11, 22, 44,168,212,196, 8,148, 6, 72, 51, 46, 38, 77,157,241,149,235, +226,197,167,112,234, 84, 26, 24,134,129,135,135, 7, 24,134,193,227,199,143,193, 48, 12,252,252,252,192, 48, 12, 18, 19, 19, 13, + 57,129,217, 40,167,234,177, 60, 24,134,129, 74,165, 66,252,211, 39, 72,136,141,129,117, 94, 10, 92,108, 21,200,142,186,141,198, +163,199,148,246,127,250, 59,161,148,238, 0,176,195,232,169,175, 8, 33, 26, 66,200, 91, 0,126,164,148, 26, 34, 26,159,151,220, +202,165,117,235,214, 77,103,207,158, 45, 49,180,219,240,244,253, 66,175,213,106, 5, 0, 8,106,220,241, 25,183,255,224,193, 3, + 44, 95,190, 28,133,133,133,144,154,210,232, 14,197,166,213, 80, 97,104,140,225,177, 57, 38, 11, 0,156,252,188,191,190,114,253, + 44,127, 43,118,163, 50,226,222,207,150,201, 79, 25, 48,154, 87,215,100, 25, 67, 41,157,231,237,237, 61, 79, 16, 4, 74, 41,157, +107,120,158, 16, 34,247,245,245, 61,127,226,196, 9, 39,189, 94,143, 53,107,214,216,167,164,164,216,119,236,216,113, 38,128, 10, +141, 86,121,211,132,229, 77, 39,194,168,234, 80, 46,151, 59, 86, 50,196,231,170, 14,121, 30,129,182, 54,246,200, 70, 2,212,206, +186,166, 57, 78,250,172,147,201, 99,110,122,198,189, 22,108,197,235,106, 51,121, 26,120, 41,236, 33, 80, 90,126,105, 52, 0,181, + 78,247,243,205,235, 55,186,249,250,212, 99, 15, 31, 61,135, 62,253, 6, 66,173,102,160,210, 17, 16, 86, 2,194, 74,209,168,241, +107,168,223,176, 49, 40,128,107, 87, 47,234, 53, 58,221,201, 74,198,249,175,195,179,253,135, 67, 60,219,127,176, 26, 84,160,229, +244,209,170,221,175, 95,191,197, 0, 62,172, 74,199,173,205,135, 67,220,219, 22,235, 24,247,209,250,232,131,241,136,186, 42,177, + 59,119,125,169,180,123,107,132,167,159, 34, 80, 88,252, 89,117, 40, 97,170,223,154,227,159, 74,165, 85,135, 21,225,235,235,107, +239,106,173,248,246,253,209,163,108,226,110, 93, 66, 74,244, 21,252,126, 46, 38,123,207,129,131, 89,133,153,105,163,205, 48, 89, +165,211,124, 78,238,181,224,223,224,121,163,101, 97,237, 2, 0,240,111,208, 18,172,149,121,109,132,202,139,102, 85,199,100, 25, + 48,152,171,178,137,239,227,198,141,195,150, 45, 91,208,174, 93, 59, 4, 4, 4,148,254,179, 55, 55,106, 86, 54,186, 84,157,106, + 67, 99,242,243,243,225,231,231,135,205,155, 55, 35, 34, 34, 2, 54, 54, 54, 24, 50,100, 8,242,243,243, 75, 13,150,169,201,240, +148,210, 7, 39, 78,156,104, 49,104,208, 32, 42,145, 72, 72, 78, 78, 14,236,237,237,177,110,221,186,194,228,228,228,112,115,199, +230,235,235, 59, 80, 42,149, 78, 29, 60,120, 48, 27, 20, 20,132,212,212, 84,216,218,218,234, 8, 33, 18, 0,176,183,183,215, 89, + 90, 90, 98,252,248,241,104,210,164, 73,135,233,211,167,183,243,242,242, 90,151,152,152, 88, 97,111, 37,195,116,161,225, 3,117, +244,234,187,208,104,138,141,202,250,245,235, 81,146,235, 86, 74,108,108, 44, 96, 66, 37,139,181,181, 53, 2, 2, 2,202,125,239, + 59,116,232,128,107,215,174, 21, 79, 77,114, 28, 92, 93, 93,241,251,239,191,155, 84, 73, 69, 75, 26, 65, 70, 70, 70,162,129,191, + 51, 34, 78,157,128,179, 66,130, 38,158,238,240,238,208, 9, 49, 49, 49,127, 91, 52,171,164, 55,213,123, 0,186,160,248,119,112, + 43,128,113, 70,143,215, 81, 74,191, 54, 71, 83,175,215, 83,134, 97, 72,124,124,188, 86,161, 80, 16, 71, 71, 71, 78, 46,151, 67, +173, 86,151, 26,174, 7, 15, 30,224,232,209,163, 72, 72, 72,128,163,163, 35, 99,103,103, 7,173, 86,155,109,138,126, 96, 96, 32, +220,221,221,159, 73,124, 31, 61,122, 52, 0,243, 77,214, 8, 32,100,203, 23, 75,106,201, 25,214,174,129,243,155,120,116,247,177, +138,209,192,226,191, 96,178, 0, 32, 59, 59,123, 19,128, 77,134,199, 46, 46, 46, 35, 89,150,157, 99,103,103,103,119,246,236, 89, +123, 23, 23, 23,178,125,251,118,221,220,185,115,115, 88,150,205, 38,132,172,252, 27,135, 11, 0,160, 20,209, 25,185,177,126, 18, + 7, 79,225,150,138, 94,156, 28, 63,179,126,182,164,158, 11,105, 24,130,126,105,119, 46,140,212,199,182, 77, 77, 78, 97, 40,132, +232,138, 52, 4, 65,216, 58,115,246,130,143, 99,238,222,240,181,176,181,192,184,241,179, 17,254,203,105, 16, 70,130,243, 23,175, + 64,163,229,145,145,149,139,193, 67,135,193,219,195, 25,209,151,143,167,235, 5, 97,221,203,188,206,191, 26, 74,133,181,221,250, +140,116,144, 91, 22,167,153, 10, 2,143, 29,223, 76, 5,195,172,198,167,159,126,138,144,144,144, 9,132,144,207, 42,106,241, 96, +128, 16, 97,109,163, 78, 67, 29,164,242, 98, 29, 42,240,216,188,111,102, 73, 31,173, 41, 88,183,233, 64,163,134,254,143,230, 87, +214, 71,235, 85,160,108,213,161,129, 10,141, 86,173, 90,181,228, 86, 18,140,117,180,148, 78,127,255,237,190, 46,105,177, 81, 72, +184,115, 3, 0,160,211, 42,181,201, 49,209, 85,182, 66, 47,105,240,102, 60, 21, 68, 43,155,186, 82,169,170,254, 70, 95, 86,211, +240,129, 91, 54,154,101,142,201, 42, 79, 19,192,115, 31,180, 44,203,194,199,199, 7,139, 23, 47,174,178,143, 86, 57,215,110,120, +190, 59,128,198, 0,140,147,225,187,155, 82,105, 88,145,166,139,139, 11, 50, 51,139, 59, 36,132,134,134, 34, 52,244,207,122, 6, +173, 86, 91, 26,197,178,177,177,121, 46,162, 85,158,166,165,165,229,204,131, 7, 15,142,186,120,241,226,160,105,211,166, 73,222, +120,163,184, 93, 80,126,126,126, 17, 53, 97,109,183,178,154, 60,207,143, 63,126,252, 56, 43, 8, 2, 54,111,222,140,107,215,174, + 81,133, 66,241,137, 66,161, 88,107,105,105,201, 43,149,202,113, 99,198,140, 25, 54,127,254,124,166, 67,135, 14,184,116,233, 18, + 83,187,118,237,225, 0,182, 87,164,105,224,202,149, 43, 96, 24, 6,250,172,167,152, 48,115, 15,172, 44, 57,220,189,123, 23, 89, + 89, 89,207, 53, 49, 53,229,245, 52,142,148, 24,110, 29, 58,116, 40,157,134,108,213,170, 21, 88,150,197,205,155, 55,203,157,134, + 45,163, 73,157,156,156, 74,127, 63,164, 82, 41, 78,159, 62,141,133, 11, 23,194,215,209, 30,217,119, 34,224, 30,250, 58,186,142, + 26,131, 33, 67,134,128,101, 89, 56, 58, 58, 2,207,174,245, 89,225,181,215,132, 50,154,163, 26, 52,104, 48, 60, 58, 58,218,187, + 81,163, 70, 30,145,145,145,157, 67, 66, 66,252, 34, 34, 34, 12,143,229, 48, 33, 55,199, 88,243,143, 63,254,216,191,118,237,218, +241, 35, 70,140,144, 10,130,192,199,197,197,233, 0, 16,119,119,119,246,143, 63,254, 16, 14, 31, 62, 12,165, 82, 9,111,111,111, +198,203,203,139,156, 60,121, 82,184,115,231,206, 21, 74,233,108, 83,174,157,231,249,103,218, 56, 24,126,254,225,135, 31,204,189, +118,212,170, 31,184,232,141,142, 65, 62, 25, 73, 55,145,156, 24, 11, 62,215, 69,123,244,208, 17,181, 57, 38,235, 37,188, 71, 47, + 83,115,193,253,251,247,189,212,106, 53,100, 50, 25,214,175, 95,175, 93,188,120,113,116, 70, 70, 70,123, 90, 78, 69,121, 89,205, +106, 86, 29,102, 85,162,249, 92,213, 97,110, 38,194, 15,253,244, 71, 11,235,126, 91, 49, 33, 41,189, 52,177,145, 18,226,120,208, + 45,184,189,162,101,163, 68,230,216, 60, 38,159, 47, 10,175, 64, 19,148, 82, 13, 33,100, 96,191,254, 67,127,221,189,123,151,245, +220,121,243,240,251,149, 8,100,230, 20, 64,160, 44, 4, 66, 48,103,206, 92,184, 59, 59, 34, 47,233,126,145, 90,171,237, 71,203, + 44,197,243,111,127,223, 9, 97, 38,158, 60,188,125, 53, 67, 32, 20,166,222,147,179,249,177,138,119,134,244,227, 6, 14, 28,136, +131, 7, 15, 34, 50, 50,114, 99, 69, 38,203, 88,147, 82,102, 98,196,217, 61,171, 9, 32, 40,211,239,201,185,130, 71,138,225,111, +247,227,134, 12, 25,130, 31,143, 94,196,238, 35,143, 54,236, 58, 76,143,188,200,107,250,167, 81, 54,138,101, 76,133, 70,203,134, + 67,100,251,224, 58, 94, 29, 94,107,104,193,241, 74, 36,220,137, 69, 86,161, 10, 39,163,226,114, 24,202, 84,187,183, 78,241, 63, + 72, 41,158, 62,189,255,220,182,156,156,226,236,184,252,124,243,150,149, 98, 24,230,153,104, 86, 77, 34, 89,198,227,116,115,115, +123,102, 57, 23,227, 15,110, 67, 14, 80, 53, 90, 59,204,124,250,244,169,237,211,167, 79, 65, 41,197,149, 43, 87,108, 91,181,106, + 53, 19, 53,136,102, 77,157, 58,181, 52,106, 85,246,190,188,231,170,162, 36, 41,125,149,179,179,243,190,233,211,167, 79,104,213, +170, 85,183,121,243,230, 17, 0,230,151,113, 1,160,148,234, 5, 65,192,153, 51,103,112,240,224, 65, 94,171,213,142, 77, 74, 74, + 50,206,117, 88,227,233,233,121,178,127,255,254,219,239,221,187,199, 70, 71, 71,195, 20, 67,167, 84, 42, 17, 16, 16, 0,189, 94, +143,165, 19,124,144,159,223, 8,122,189, 30, 60,207,195,202,202,234,153,117, 46, 77,121,159, 24,134, 1,207,243,207, 25,173, 43, + 87,174,128,101, 89,180,111,223, 30, 55,110,220, 40,141,104, 85, 21,129,210,106,181, 79,221,220,220,220, 22, 44, 88, 80, 58,174, +244,244,116,156, 56,113, 2,173,219,180, 69,240,216,113, 72, 74, 74,194,202,149, 43,225,233,233,137, 69,139, 22, 33, 43, 43, 11, +122,189,254,101,135,211,123, 68, 71, 71,123,191,253,246,219,105, 17, 17, 17,222, 71,143, 30,181,239,213,171,151,213,208,161, 67, +211, 34, 34, 34,188, 9, 33,109, 97,102, 18, 52,207,243,179, 8, 33,191, 44, 90,180,104,230,135, 31,126,216,106,196,136, 17, 18, +137, 68, 34, 36, 38, 38,234,119,237,218, 69, 2, 2, 2, 24,169, 84, 74,142, 31, 63, 46, 92,189,122,245,178, 94,175, 95, 74, 41, + 61,111,170,190,113,254,157,161,194,208, 20,147, 85,150,201,174,242,225, 54, 76,122,251,181,235, 23, 51, 65,254,222,218,239,119, +157,136, 63,127,233,254, 67, 86,173,159,252, 45, 80, 97,107,128, 87, 25,150,101,247, 54,104,208, 96,228,196,137, 19, 45,187,119, +239, 46,159, 63,127,126,110,126,126,126,185, 38,171, 60, 94, 70,213, 33,128,111,102, 77, 59, 58,249,163, 70, 35,235,252,207,189, + 22, 78, 21,166, 33,155, 99, 25, 91,123, 6,175,249,177,200,207,120,224,114,228,215,109,143, 81, 69, 95, 54, 74,233, 31,132,144, + 46, 13, 27, 53, 61,176,116,209, 82,215, 79,102, 76,151, 28, 56,250, 51,168, 94,139, 43,103,207,194, 90,202,211, 59,215, 79,165, +170,181,154,190,244, 85,235, 10, 15, 32,233,194,154,221,132,144,159, 28, 29, 29,111,141, 26, 49, 34,160, 65,131,161, 80, 40, 20, +216,191,127, 63,118,172, 89,195,175, 2, 6,109, 34,228,198,184,226,158,122, 21,146,122,169, 84,231,230,152, 81,163, 2, 95,123, +237,127, 80, 40, 20,216,183,111, 31,182,175, 90,101,178,206,191, 25,242,103,103,248,240,146,123, 19,250,104, 49, 36,255,242,253, +184,130, 43,247,227, 10, 32, 80, 42, 80,170,102, 24,196, 23,106,181,139, 98, 30, 38, 84,203, 20, 24,166, 14, 63,255, 98, 98,117, + 14,175, 80,211, 96,126,170, 91,210, 93, 22,158,231, 19,140,215, 72, 51,254,144,174,232,103,157, 78,151, 96,162,252, 18, 95,223, +231,214, 64, 53, 59, 47,203,128, 97, 58,208, 84,147,101,106, 31, 45, 0,200,200,200, 72, 6,240,137,135,135,199, 15,221,186,117, + 27, 3,192,180,196,185, 50, 16, 66, 54,119,234,212,105, 44, 0,150, 16,178, 49, 49, 49,241,185,132,210,164,164,164, 24, 47, 47, +175, 47,253,253,253, 75, 23,154,174, 76, 83, 16,132, 71,141, 26, 53, 42,109, 32, 90,214, 72,149,247, 88, 16,132, 42,223,163,156, +156, 28,180,108,217,242,185, 53, 45, 41,165,136,139,139, 51, 68,156, 0, 20,191,246,149, 25,184,130,130,130,113, 31,124,240,193, + 38,137, 68,226, 11,128, 24, 76, 46,207,243,236,215, 95,127,109,193,243, 60, 11,128, 48, 12,163,151, 72, 36,170,131, 7, 15,234, +245,122,253, 83,181, 90, 61,174,170,113,190, 96,246,145,226,165, 24, 10,163,163,163,131, 74, 34, 89, 9,145,145,145, 55,119,239, +222,237, 2, 96, 79,117, 68, 75,140,211,121, 66, 72,135,245,235,215,207, 26, 55,110, 92,203, 33, 67,134,112,161,161,161, 8, 15, + 15,231,207,156, 57,115, 69,169, 84, 46, 49,199, 96, 1, 0, 33, 36,215,199,199, 7, 0,170,252,123,231,121,190,210, 68, 94, 39, + 63,249,218, 97,239,121, 90,108, 94,114,162, 32, 35, 73,115, 81, 87,160,153,189, 13,136, 52,103, 60,175, 26, 41, 41, 41,211, 8, + 33,115, 87,174, 92,153,212,164, 73, 19,185, 84, 42,213,152,106,178, 94, 22,148, 82, 61, 33,164,231,138,174, 3,126,234, 52,231, + 3,255,174,157,219, 43,124,106,185,122,221,137, 77,197,131, 75,225,133,183,142,124,241,132,170,179,251, 80, 74,171, 92,223,148, + 82,122,149, 16, 82,111,234,244,169,134, 69,165, 27,191,113,242, 16,253, 15, 45, 42,253,249,151, 95,126, 25,208,160, 65, 3,236, +223,191, 31, 39,119,238,196,224,140, 12,156,102, 89,150,145, 74,157,142,104,181, 95,193,180,198,197,159, 47, 95,190, 60, 48, 36, + 36, 4,123,247,238,197,241,237,219, 49,168,122, 58, 21,209, 2,128, 75,201,207, 25, 0,238, 1,104, 6,192, 18,128, 26,197, 75, + 59, 57, 27,237,159, 89,178,205,176,253, 28,128,191, 50, 17,182,234,206,240,101,137,184,255,184,217,139, 30,133, 82,169,204, 10, + 8, 8, 48,171,230, 90,167,211, 85, 58,135,171,215,235, 19,234,212,169, 3,192,244,238,236, 85,153,162,204,204,204,230,166,142, +207, 92,106,154,139,101, 12, 47, 8, 79, 60, 60, 60,132, 18,221,242,206, 85,238,115, 20,120,108,206,121,146,147,147,239, 1,168, +122,133,239, 10, 72, 76, 76, 60, 0, 19, 22,141, 54,117, 63, 0,200,202,202,122,225,139,249, 18, 74, 19,231,207,159,255,231, 99, + 19, 12, 54, 40,173,208,124, 82, 74, 35, 0,180,122,161,131,252, 11,160, 37, 75,239, 16, 66,152,200,200,200, 49, 37,211,219,167, + 0,108,164,197, 29,189,107,170, 95,106,184, 54,111,222, 60,153, 82,138,188,188,188, 85,230, 26, 44, 3,169,169,169,102,231, 9, + 86, 68, 86,170,230,183, 93, 27, 19, 94, 87,230,104, 39,111, 41,208,152,180,222,226,127, 1, 74,169,202,213,213,245,187,119,222, +121,167, 53,128,109, 53,213, 43,111, 58,177,166, 80, 74, 31, 19, 66,154,156,158,186,112,212,105,123,155, 48,240, 92, 16, 52,204, + 17,104, 50,195, 1,124,107, 74, 84,220, 72, 75,133,226, 54, 37,149,246,132,123,213, 40,233,127, 53,121,228,200,145,152, 59,119, + 46,142,127,245,149,246, 61, 66,114, 37, 0,253,165,248,139, 38, 67,128, 25,166,234, 12, 31, 62, 28,115,231,206,197,177,165, 75, +171,165, 83, 5, 46,132,144,163, 0, 48,115,230,204,217,139, 23, 47,118,152, 53,107, 86,227, 37, 75,150, 44, 42,121, 28,101,216, + 14, 0,148,210, 94,179,102,205,106,104,180, 61, 31,192, 31, 53, 28, 67,165,148,205,209, 42, 53, 92,198,223,216, 95,244, 13, 64, + 23, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69,205, 26,222,194,138, 45, 75,197,247, 21,253,108,244,220,203, 28,111,233, +173,218, 75,240,136,136,136,136,136,136,136,136,252,157, 24, 71,177,170,179,253, 5,142,195,144,163, 85, 10, 45,137,104, 17, 20, +151,112, 63, 7, 53,163,234,129, 16, 82,174, 70,101, 84,165, 47,106,138,154,162,166,168, 41,106,138,154,162,230,171,167, 89,149, +118, 5,199,135, 17, 66,142, 82, 74,123, 85,116, 95,162,249,220,207, 70,207,189,176,180,131,114,174,101, 44,173, 32, 71,235, 47, + 13,151,225, 95, 18,174, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243,239,213,172,226, 22,134,226,214, 55,116,230,204,153, +179,232, 63,108,234, 16,128, 7,128,177,198, 55,195,182, 74,166, 14,247,179,137,137,176,149,201, 20, 82, 0,208,104,138,180, 94, + 94,200, 3, 6,252,109, 11,222,138,252, 59, 33,132,184, 1, 0, 53, 97,241,105,115,246, 21, 17, 17, 17, 17,249,207,144, 78, 75, + 34, 85, 0,210, 1,144,146,199,154,146,251,116,160, 56, 9,190,204,207,207,108,255,171,160,148, 38, 3, 40,183, 90,190, 2,163, +181,159,205,200, 80, 56,115, 92,118, 32,207,171,234, 3, 0,199, 49,119, 51, 50, 28, 98,156,157,247,103, 84,199,108,185,184,185, + 93,151,176,172,151, 41,251,234,120, 62, 49, 35, 53,245,153,214,241, 20,248,215, 27, 60, 83, 77, 68, 77,204,198,203, 48, 42, 46, + 46, 46,110,110,110,110,255,103,107,107,219, 38, 39, 39,231,106,122,122,250,143, 21,173,123, 72, 8, 89, 76, 8,166,151,252,188, +140, 82, 58,171, 34, 93,115,246, 45,231,216, 0,133, 66, 49,129, 16, 18, 2, 0,148,210,200,162,162,162,245,148,210,231, 27,182, +189,226, 16, 66, 44, 1,244,229, 56,110,184,179,179,115,203,148,148,148,249,148,210,106,117,243, 38,132,112, 0,166,218,219,219, + 15,177,183,183,175,157,149,149,245, 48, 47, 47,111, 47,128,229,148,210, 42, 75,165, 63,155,228,217, 38,180,123,232, 39,103,142, +159,249,124,222,234,164, 75,207,109,159,230,233,212,173,107,187,185,103,142, 92, 92, 48,107,109, 98,165,221,167,203, 25, 27, 3, +192,208, 52, 79, 64,241,183,214, 23,218, 94,159, 20,175, 94,208, 27, 64, 40,128, 51, 0,142,152,114,221, 21,104,181, 6, 48, 27, +197, 99, 94, 78, 41, 61,253,194, 6,250, 23, 64, 8,177,114,115,115, 91, 10,160, 55,199,113,209,137,137,137, 99, 41,165,166,182, +177,249,171,198,196,161,184,204, 63, 4,197,109, 56,254,160, 38,180,112, 48, 5,103,103,231, 94, 28,199, 77, 40,105,237,178, 62, + 35, 35,227,165,228,246, 84, 7,185, 92,190,202,221,221,253,127, 74,165,178,136, 16, 66,141,251, 61,234,245,250,132,244,244,244, +191,172,114,254,111,228, 47,173, 24,172, 41,164, 76, 55,120,160,138, 62, 90,137,137,176,229,184,236,192,180,148,136,193, 73,201, +183, 7, 1,128,167, 71,227,189,174,238,141,246, 36, 38,202,180, 45,186,246,183,150, 40,184,245, 44, 43,105,170,210,168,157, 37, +156, 36, 67,171,215,221,100, 52,116, 66,242,221,131,229, 54, 91,148,176,172,215,147,152,211,174,122,109, 22, 36, 22,158,144, 88, + 62,215, 75,170, 20, 79, 79,207,106, 93,168,163, 99, 93, 27,173,220, 98,178, 68,194,118, 21,168, 62,132, 10, 0, 67, 36,145,122, + 94,247,171, 84,173, 94,145,149, 21,107,214,122,132,198,212,119, 38,238, 20, 24, 2,130,174,160, 56, 73,128,221,119, 51,104,138, +169,199,155,106, 34,106,104, 54,140,143, 93, 73, 41,157,102,234,177,166,226,237,237,237,240,214, 91,111,173, 90,184,112,161,165, +181,181, 53,121,250,244,105,247, 25, 51,102,116,244,246,246,254, 40, 33, 33, 33,169,204,120,220, 8,193,116, 65,160, 12, 0, 48, + 12,153,225,230,230,166, 96, 89,246,185,222, 70, 60,207, 43, 8,193, 68, 65,160,164,100,223,233,132,144,213,166, 24, 70, 75, 75, +203,161, 45, 91,181,253,104,233,151,203,173,221, 92, 93,173,244,188,160,125, 28,247, 68,241,201,204,105,173, 44, 45, 45, 87, 43, +149,202, 93, 85,105,148,133, 16, 99, 98, 54,159, 0, 0, 32, 0, 73, 68, 65, 84, 66, 88,150, 29, 44,151,203,123, 1,104, 80,242, +244, 29,181, 90,125,148,231,249, 61,166,126,160,187,187,187,159, 99, 89,182,150, 57,231,230,121,254,105, 74, 74, 74,251,170,247, +124, 30, 66,200, 64, 95, 95,223,111, 59,117,234,164,104,217,178, 37,100, 50, 25,230,206,157, 59, 21, 64,165, 70,203, 96,168, 20, + 10,197, 96, 43, 43,171, 58, 5, 5, 5,177, 74,165,242,128, 76, 38,235,178,122,245,106,159,118,237,218,217,164,166,166, 18,150, +101,221,142, 30, 61,250,238,154, 53,107,186, 19, 66,222,168,234, 67, 46, 55,150,126, 34,239,221,160, 67,110,236,233, 79, 0,244, + 40,187, 93,175,178, 24, 78, 89,159, 94, 74,122, 35, 30,102,148,214, 19, 66, 24,137, 68,178,218,221,221,125,164, 74,165, 82,161, +184,247, 26,117,115,115, 51,108, 7, 0,104, 52,154,236,236,236,236, 32, 83,117,141,244,131, 0,140,182,183,183, 31,249,241,199, + 31, 59,244,232,209, 3, 59,119,238,124,127,203,150, 45,217,132,144,239, 0,124, 67, 41,189,103,166,236,244,148,148,148,158, 18, +137,132,248,248,248,176, 0, 76, 54, 90,132,144, 64, 0,115, 80,252, 97,179,158, 82,202, 19, 66, 58, 3,197,127,239, 0,150, 25, +140, 27,203,178,235,131,130,130,254,239,206,157, 59, 27, 40,165, 21,174, 71, 89, 21,238,238,238,155,214,173, 91, 55,168, 79,159, + 62,108,122,122,186, 87,147, 38, 77,126, 0,208,161,186,122, 70,215, 50, 74, 46,151, 79,105,220,184,113,240,189,123,247, 98,242, +242,242,150,163,248,245,172,240,111,138, 16,226, 13,160,139,189,189,253, 27,115,230,204,177,238,213,171, 23, 54,111,222,220,115, +203,150, 45, 5,132,144, 95, 1,156,170,169, 9,228, 56,110, 66, 66, 66,130, 51,165, 20, 30, 30, 30, 19, 80,197,226,230,127, 23, + 44,203,174, 30, 60,120,240,200, 31,126,248, 65,241,228,201, 19,133,151,151, 87,105,243,108, 66, 72,181, 63, 63, 69,106,134,193, + 84,153,220, 71, 75, 38, 83, 72,121, 94, 85, 63, 41,249,246,160,142,157,190,182, 3,128,115,103, 63, 24,228,234,222, 48, 82, 38, + 83,196,200,109, 45, 14,246,239,221,165,233,128, 94,157,136,183,135, 43, 18,146,211,220,190,217,125,252,205,163,199, 79, 31, 68, +113, 3,177,114,209,107,179, 96,169, 61,133,123, 23,214,192, 57, 52, 9,107,143, 37,224,210,173,199, 40,202,205, 64, 45,119, 75, +124, 57,185, 27,220, 29, 20,255,207,222,119,135, 69,113,246, 93,159,123,251,194, 46,189,119,177, 0,246,130, 37, 42, 70,176,196, +130, 37, 98, 55,198,222, 81,209,216, 75,140, 70,197, 68,141, 45,177,199,130,221,216, 98,197, 94,177,162,130,138,160, 52,233,189, +110,111,115,127,127, 80,130, 8,203, 98,146,247,249,222,247,225, 92, 23, 23,236,236,204,153,223,220,192,236,153, 95,253,172,139, + 20,219,121,250,177,132,198,199, 71,141, 28,109, 54,224,235, 38, 92, 55,123,123, 80, 42, 64, 76,172,164,211,229,171,183,218,157, + 58,121,116,186,216,206,115,184, 36, 51,198,224,155,155,183, 35, 49,146,170,241, 53,135, 77,190,237,210,161, 89,247,145,125,187, +176,154, 54,105,132, 55,175,163,190, 58,119,243,241,250,166,118,172, 27, 90, 29, 13, 17,241,112, 54, 60,173,250,134,126, 85, 9, +142,158, 61,123,118, 17, 8, 4,234,138,251, 41,149, 74, 30, 33,248,226,115,196, 70,217, 57, 84, 42, 37,139,203,229,131,197, 34, +115, 91,182,108,217, 36, 39, 39,231, 22, 33,100, 95,106,106,237,188, 5,179, 8,225,231,115, 56,222, 44,129,192, 65,167, 82, 89, + 1, 0,225,243,243,157, 45, 44, 90, 44, 93,178, 68,204,102,179,153,220,220, 92,200,100, 50, 50,105,210, 36, 97,108,108,108, 0, +128,173, 53,216,136, 61,123,246,120, 58, 56, 56,168, 42,191,151,158,158,206, 31, 56,112, 64,109, 76, 44,227,244,252,162, 99,231, + 57,161,161, 87,154, 20,229,229, 43,246,108,218, 21,174, 17, 26, 43,235, 55,241,226,110,223,125,208,108,242,184,111,102, 18, 66, + 94, 80, 74, 13,158, 87, 71, 8,113, 53, 50, 50, 58,189, 97,195,134,230,126,126,126, 92, 91, 91, 91,100,102,102, 34, 42, 42,170, +249,205,155, 55,191, 62,120,240,224,119,132,144, 0, 74,169, 33, 29,220, 61,110,132,236,179, 21, 89, 90, 65,167,209,192,177,101, +155,178,120, 62,222,223,188, 10,173, 90, 13, 70,163, 65,147,126, 95, 3, 40, 25, 1,212,180,105,211,207,234,186, 75, 8,113,108, +214,172,217,161,181,107,215,242,148, 74, 37, 30, 63,126,140, 91,183,110, 49,233,233,233,122, 27,226, 18, 66, 56,132,144,171, 43, + 86,172,112,246,241,241, 49,201,201,201,129, 78,167,179, 62,123,246,236,244, 54,109,218,152,186,184,184,240, 67, 66, 66, 32,145, + 72,160,213,106, 45, 27, 52,104, 96, 57,114,228, 72, 85, 72, 72,200,119, 0,126,170,138,115,229,108,199,142, 69,177,116, 89, 6, +105,208,219,203,123, 12, 50,200,149,222,115,251, 56, 92, 54,109, 72,202, 61, 91,125, 26, 54, 52,105,208, 88,180, 80,108,218,194, +178, 40,245,250,194, 62, 13, 27,238,185, 28, 91,243,195, 16, 33,132,197, 98,177,182, 4, 4, 4,140, 58,118,236,152,113, 84, 84, +148,113,147, 38, 77,192, 48, 76,121, 7,254,178,134,179, 30, 30, 53, 78, 10,171,138,127,221,212,169, 83, 23, 14, 27, 54, 12, 45, + 91,182, 44,111,138,250,253,247,223, 99,225,194,133, 22,119,239,222,253,238,232,209,163,223, 17, 66,126,162,148, 46,170, 5,117, +197,251,109,109,127,199, 43,227,227,227,135,158, 62,125,250,155, 5, 11, 22,120, 0, 8, 4,176, 60, 55, 55,183, 43, 0, 88, 89, + 89,241, 1,220, 34,132,140,159, 63,127,254,180, 69,139, 22,161,111,223,190,203, 9, 33,107, 62,199,203, 71, 8, 97, 91, 91, 91, +247, 29, 56,112, 32, 91,163,209, 64, 36, 18, 65,163,209, 52,172, 45, 79, 37, 78, 2,224,183, 41, 83,166, 76,155, 58,117, 42, 44, + 44, 44,160,209,104, 60,143, 29, 59,182,103,249,242,229, 29, 9, 33, 19,170,178,149, 16, 50,102,218,180,105,131, 71,143, 30,141, +182,109,219,130,195, 41, 89,198, 13, 27, 54, 96,213,170, 85,226,171, 87,175,126, 29, 18, 18,242, 53, 33,228, 20,165,244,179,123, +161, 49, 12, 3, 14,135,131,228,228,100,216,218,218, 10, 44, 45, 45, 67, 9, 33,187,115,115,115,207,124,254, 85,255,179, 32,132, +252, 60,124,248,240, 81, 71,142, 28, 17, 3,192,250,245,235, 49,103,206, 28,216,217,217, 65, 44, 22,255,167,205,251,175, 70, 69, +143, 86,229, 62, 90,159,213,222, 65, 38,147,181, 89, 60,235, 91,176, 88, 37, 79,141,141,234,187, 34,120,201,100,114,238, 66,104, + 27,125,199,113,133,142,136,190,191, 21, 2,151, 32, 40, 53, 90, 60,122, 25,143,107,235,123, 1, 0, 60,251, 44,133, 82, 93, 50, + 83,143, 82,106,201, 55, 50,250, 89,165,211, 61,128,189,253, 99,124,248,160, 55,182, 42,182,243,244,179,177,183,187,176,115,231, + 79, 70,205, 27,122, 65,173,213, 32, 53, 43, 21,132, 8,224,236,100,130,241, 99,250,112,187,118,117,180, 94,185,114,215, 69,145, +141,231, 32,105,118, 76,141, 13, 67,189,108,200,129, 46,109, 60,134,141,244,247, 17,180,104,222, 12, 60,129, 81,249,123,222,109, +219,194,187,109, 91,214, 34, 73,113,207, 39, 79,195,123,254,113,245,145,210,203,134,156,136,206,166, 99,245, 80,150,119,185, 36, +132, 96,246,236,217, 40,123,250, 46, 67,102,102, 38,110,222,188, 81,229, 49, 6,226,163,115,172, 89,179,198, 36, 63, 63,191,207, +222,189,123,187, 57, 56, 56,172, 73, 79, 79,191,111, 8,201,183,132,212,131, 64,208,125,220,198,141, 76,235, 1, 3,216,230,246, +246, 44, 70,167, 35,105,113,113, 86,155,182,110,245,205,123,255,222, 72,106,105,153,151, 47,151,203, 98, 98, 98, 32, 20, 10, 9, +135,195,105, 87,153,135, 82,154, 73, 8,249,153,197, 34, 11, 9, 33, 16, 8,132, 49, 83,167, 78,125, 94,250,118,189,243,231,207, + 27,247,239,223, 95, 6, 32, 17, 0, 4, 2,161, 19,155,205,242, 44, 73, 32,196,207,134, 8, 76,145, 72, 52,107,245,218,159, 68, + 69,121, 5,114,181, 84,170,177, 49, 21, 19, 34, 54, 97, 23, 21, 22, 23,167,166,103, 43,151,254,176,138, 61,101,252,232, 89, 0, +166, 27,180,128,132,184,182,106,213,234,201,233,211,167,109,173,172,172, 80, 80, 80,128,220,220, 92, 60,121,242, 4, 12,195, 32, + 32, 32, 64,208,169, 67,251, 54, 75,150, 46,123, 72, 8,233,104,136,216, 18, 89, 90, 99,189, 79,107, 0,192,247,137,185,101,231, +193,238,161,253,202,247, 89,149, 82, 8, 0, 16, 10,133,127,103,132, 84,199,238,221,187,243, 0, 96,194,132, 9, 69,197,197,197, +193, 0,142, 80, 61, 77, 85, 75,241,221,178,101,203,156,234,215,175,239,118,228,200, 17, 72, 36, 18, 0,176,173, 95,191, 62,188, +188,188,116,183,111,223,134,167,167, 39, 76, 76, 76,112,247,238, 93, 60,122,244, 8,222,222,222, 38, 60, 30,111, 24,170, 17, 90, +190,189,124,151, 9,250, 55,233,226,229, 61, 6, 98, 83, 7,236, 57,122, 28,209,225, 7,187, 40,213, 81,203,130, 3,157, 70,203, +169, 96,172,179,135,201,162,122,109,187, 90, 53,106, 54, 0,110,222,207,173, 21,186,123,241,203,103, 52, 88,199, 17, 42, 14,174, +216,144,150, 91, 21,111,105,184,112,125, 64, 64,192,208, 99,199,142,153, 3, 64,100,100, 36, 50, 51, 51, 97, 99, 99, 3,161, 80, + 8, 46,151, 91, 62,159,244, 51, 49,118,251,246,237,229,162, 77,171,213,130,210,146, 41, 0,198,198,198,248,242,203, 47,209,186, +117,107,156, 57,115,102, 44,128, 79,132, 22, 33,196,167, 67,135, 14,135,221,220,220, 92, 42,110,247,247,247,199,136, 17, 35, 0, + 0, 93,187,118,237, 62,100,200, 16, 90, 38, 8,211,211,211, 37, 79,159, 62,237, 73, 41,125, 92,149, 65, 44, 22, 75,158,154,154, +138,249,243,231, 35, 33, 33, 97, 6, 33,228, 3, 0, 33,159,207, 47,219,133, 79, 8,241,108,214,172,217,150, 57,115,230, 32, 54, + 54, 22,111,222,188,121,242,185,161, 84, 74,169,206,221,221,253,189, 70,163,105,171,213,106, 33,151,203, 49,104,208, 32,161,165, +165,101, 38,155,205,126,155,147,147,243, 77,105, 78,138, 65, 32,132, 8, 1,108,156, 58,117,234,180, 5, 11, 22,224,198,141, 27, + 56,119,238, 28, 70,143, 30,141,160,160, 32,136,197,226,113, 65, 65, 65, 15, 81, 50,208,188, 50,186,111,223,190, 29, 58,157,238, +147,255, 13,161, 80, 8, 31, 31, 31, 52,109,218, 20,231,206,157,235,142, 10,243, 81,107, 3, 66,136, 91, 64, 64, 0,159, 97, 24, + 72,165, 82,220,190,125, 91,108,100,100, 36,118,118,118,158, 4,224,255, 27,161,229,230,230, 54,245,216,177, 99,229,138,202,209, +209, 17, 2,129, 0, 21,254, 14,234,240, 31, 66,101, 47, 86, 69, 84,121, 39, 82,169,100,106, 14,135,245,214,209,161,229,137,187, +119,102,150,135, 14, 1,214, 91,149, 74,166, 6, 0, 29, 67, 81, 36,211,194, 72,192, 66, 98, 70, 49, 94,199,229, 84,117,226,143, + 74, 52,185, 70,174, 16,180, 79, 4,165, 20, 42,181, 14,202,194, 12, 4, 95,148, 33, 42, 69, 1,149, 52, 31, 42,117, 73, 26,150, +181,181, 53, 39, 52,244,242,156,235,215,111, 78,219,191,127, 63, 59,197,204,236, 13, 10, 11,219, 84,197,105,105,217,208,132, 35, + 50, 58,177, 99,231,114, 35,202,142, 67, 76,146, 20,141,156,219,195,218,220, 5, 25, 57, 82, 60,120,115, 9,111,223, 93, 64,125, + 7, 55, 4,205,234, 45, 92,189,246,200,113, 11,139,250,174,249,249,241, 69,213,217, 89,138, 49,187,174,196, 64,155, 23, 7, 93, +110, 44,116,197,105,159,236, 32,182,113,133,183,159, 19,108, 92, 26, 10,198, 6,173, 26, 3, 96,108, 85,156,148,210, 76, 54,155, +189,131,197, 34,211, 8, 33,104,217,178, 85,202,198,141, 27,213,159, 16, 2,234,150, 45, 91,165,176,217, 44,231,146, 27, 59,107, + 59,195,232, 50,171,226,172, 98,173, 51, 9, 33, 63,243,249,130, 5, 0, 96,111,239,144,124,241,226, 69,245,208,161, 67,177, 97, +195, 6,254,194,133, 11,151, 58, 59, 59, 79,168, 28,222,171,204, 25, 64,136,171, 83,195,134, 95,173,121,240,128,114, 53, 26,146, +247,228, 73, 81, 65,122,186, 54,163,184,152,127,242,237,219,190, 19,231,205,227,187,184,184,224,254,133, 11, 86,217, 82, 41, 45, + 80, 42,229, 5, 5, 5, 84,171,213, 62,169,138,147, 82,186,216,206,206,206,120,207,158, 61,158, 83,167, 78,125,158,150,150,182, + 24, 0, 28, 29, 29,131, 1, 52, 5,144, 88, 97, 27,118,238, 60,158, 58,105,210,164,152,204,204,204,143, 66,166,122,174,189,153, +173,141,173,241,209, 93, 33, 17,150, 38, 70, 44, 27,103, 71, 22,215,220,156,163,229, 27,241, 24, 64, 94,223,165,161, 8, 64,179, +106,214,236, 35, 78, 66, 8, 49, 50, 50, 58,253,231,159,127,218,114,185, 92,232,116, 58,216,216,216, 32, 33, 33, 1, 5, 5, 5, + 40, 46, 46, 70,252,219, 40,184,187,184, 96,229,162,133, 14,129, 11, 23,157, 38,132,180,173,248, 97, 86,149,157, 58,205,199,191, +234, 50, 23,127,101, 84,204,179, 48,240,218, 43, 35, 33, 41, 41, 9, 98,177, 24,205,155, 55, 23, 63,120,240,224, 94,117, 34,171, + 34,167, 80, 40, 28,214,185,115,103,147,163, 71,143,194,219,219, 27,102,102,102,184,125,251, 54, 34, 35, 35,161, 86,171, 89, 18, +137, 4, 38, 38, 38, 88,183,110, 29,220,220,220, 80, 84, 84,132,164,164, 36, 43, 46,151,107, 93, 29,231,237,208,219,171, 11, 99, +111, 45,203, 32, 87,122,239, 57,122, 28,147, 70, 14,135, 61,141,187,103,214,144,172,254,170,127,231,239, 41,219,165,159,200,164, +165,133, 71,243,254,224,241,197, 8, 92,176, 10, 49,175,206, 91,200,138, 35,102, 16, 93,178, 11,128,217,149, 57, 75, 61, 34, 44, + 23, 23,151,137, 39, 79,158, 52, 41,219,206,102,179,203,103, 30, 86, 28, 2, 95,221,192,119, 67,214,147, 16,130,132,132, 4,216, +218,218, 66, 44, 22,151, 15, 16,143,138,138,194,163, 71,143, 80, 54,141,162, 26,206,111,174, 95,191,238, 34, 18,137, 42,239,131, +156,156, 28,104,181, 90, 24, 27, 27, 67,167,211, 65,173, 86, 67,163,209, 64,161, 80,136,155, 54,109, 58, 29,192,227,170, 56, 25, +134,153, 59,108,216,176,206,143, 31, 63,110,176,117,235, 86,168, 84,170,245, 25, 25, 25, 24, 60,120, 48, 24,134, 65,247,238,221, +191,160,148, 70, 47, 93,186, 20, 0, 48,103,206, 28,141, 84, 42,157,250, 57,215, 94,122,253, 77,135, 12, 25,210,224,198,141, 27, +232,210,165, 11,148, 74, 37, 54,108,216, 96,186,115,231, 78,211,144,144, 16,155, 5, 11, 22,236, 3,208, 75, 31,103,233,239,107, +189,189,189,253,180,145, 35, 71, 26,149,206, 48,197,193,131, 7,177,114,229,202, 99, 0,150, 94,190,124,121,197,185,115,231,198, + 76,156, 56, 17, 43, 87,174, 12, 66,169,208,170,138, 51, 62, 62, 30, 54, 54, 54, 48, 53, 53, 5, 0,168,213,106,188,120,241, 2, +215,174, 93, 67,227,198,141,107,188, 38, 61,118,186, 5, 4, 4,236, 59,122,244,168, 73,114,114, 50,238,222,189, 11,119,119,119, +200,100,178, 26,103,195,214,226,127,211, 96,232,227,148,203,229,138,164,164, 36,241, 79, 63,253, 4, 7, 7, 7,184,185,185, 65, + 40, 20,130, 16, 2,141, 70, 3, 90,141,174, 54,196, 78, 95, 95,194,201, 73,181, 24,104,102,110, 49,131, 82,202, 41, 44,204,223, +165, 70,193, 31,177,177,244,147, 8,132,161,156,255, 77, 32,132,180,161,148, 62, 39, 21,102, 30,150, 61,140,112, 0,224,226,197, +139,212,223,223,159,148,125,119,114, 66, 81, 78,142, 69,140,173,125,139,227,182,246,205, 74,231,126,177,222,178,217, 22, 49,118, +118,178, 34, 0, 80,107, 41,194,222, 22, 32,226,125, 6, 34,223,103, 64, 36, 48,204,249,162, 84,107, 75,234, 51, 41,133, 66,242, +215, 67,171, 90,150, 15,165,186, 36,221, 67,165,148,161, 48,251, 13, 25, 58,168,167,112,218,180, 41,112,112,112,178,169,134, 14, +106,129, 48, 40,112, 78, 95,115, 75,115, 46, 46, 60,184,130, 47, 26, 15,130, 80,192, 69,110,161, 2, 32,192,187,184,107, 0, 99, +130, 87, 49, 73,232,208,204, 24,189,190,106, 34, 62,243, 71,244, 60, 0,203, 13,177, 87,155,242, 4, 60,143, 62,224,234, 52,208, +228, 68,131, 41,248, 0,136,236, 33, 39, 98,228,166,127,192,219,123,167, 74, 10, 78,107,128, 78,167,155, 97, 99, 99, 83,176,116, +233, 82,223, 70,141, 26,169,167, 79,159,254, 50, 49, 49,241,163,177, 54,245,234,213,251,101,251,246,237,120,255,254,125,234,154, + 53,107,110,103,103,103, 47, 51,196,198, 50, 80, 74, 23, 17, 66, 54, 3, 64,122,122,122,206,217,179,103,189,239,220,185, 19,180, +121,243,102,187,153, 51,103,242,103,206,156, 57, 30,192,143,213, 29, 63,139, 16,190, 72, 32,232,177,230,238, 93,170, 77, 73, 81, + 30,218,182,141,255, 91, 88,216, 82, 53,195, 56, 90,219,218,146, 78, 29, 58, 72,141, 89,172,156,220,204, 76,173, 77,131, 6,236, +132,107,215,172,168,145, 81,218,229,203,151,139, 36, 18, 73,181,163,115,216,108,182,172,170,112, 97, 85,112,112,112, 80, 85,149, +195, 85, 29, 8, 33, 69, 12,165,106,243,250,245,233, 87,221, 59, 54,122, 31, 29, 23, 39, 52, 55,103,123, 52,114,247,122,253, 54, +225, 9,213,233, 20,132,144,162,154,153, 0, 54,155, 61,124,243,230,205, 45, 76, 77, 77,193, 48, 12,204,204,204,144,157,157, 13, +149, 74,133,162,162, 34,168,138, 11,161, 42, 44, 68,228,135, 4,116,246,245,197,208,222, 95, 53, 9, 57,251,231,112, 0,199,244, +241, 58,182,108, 83,238,201, 90, 85,207,170,124,251,202,228,130,114,209,245, 83, 27, 15,240,196, 98,244,156, 91,155, 72,212,199, +160,148, 62,231,243,249,151, 2, 2, 2,250,206,155, 55,143,149,158,158,126,133, 16,210,153, 82,250, 70,223,113, 98,177,184, 97, + 78, 78, 14,138,139,139, 97,102,102,134,205,155, 55,195,206,206, 14, 50,153, 12, 79,159, 62,165,206,206,206,228,214,173, 91,112, +118,118, 70, 78, 78, 14,212,106, 53,164, 82,105,134, 74,165,170, 54, 92, 94, 26, 30,236, 51,183,143,195,229,232,240,131, 93,156, + 72,252,211, 97,223,117,125, 31, 29,249, 54,233,234,181, 7, 63,106, 21,194,228,130,148,235, 11,235,183,123,110, 61, 99,254, 74, +252,186,126, 5,162, 31,223,205,179,115, 45,250,205,136, 40, 15,116,232, 89,189,189, 82,169, 84,241,246,237, 91,147,151, 47, 95, +130, 16, 2, 51, 51, 51, 24, 27, 27, 87, 41,182,106,139, 82,143, 89,217,121, 32,149, 74,193,227,241, 96,101,101,133,189,123,247, +150,127,240,186,187,187,235,163,217,213,179,103,207,225,174,174,174, 38, 21, 55,182,107,215, 14, 83,166, 76,193,142, 29, 59, 16, + 22, 22,246,209, 60,205,140,140,140,116,141, 70,115,160, 58, 66, 74,105, 1, 33,164,247,160, 65,131,194,239,221,187,103,186,119, +239, 94,104,181,218, 42,191,246,236,217,131, 71,143, 30, 45,167,148,190,173,245, 2,148,172, 65,227,193,131, 7,223, 61,124,248, +176,121,118,118, 54,114,114,114, 32,145, 72, 32,149, 74,161,211,233,224,229,229, 69,180, 90,173,222,188, 55, 66, 8,139,205,102, +159,221,182,109, 91,255, 73,147, 38,129,195,225, 64,165, 82, 97,219,182,109, 88,184,112, 97, 38,128,177,148, 82, 53, 33,100,233, +129, 3, 7,198, 12, 24, 48, 0,173, 90,181,106,162,143, 83, 34,145, 64, 34,145,128,203,229,194,222,222, 30,171, 87,175,134, 74, + 85,114, 91,241,244,244, 44, 59, 47, 27,192, 46, 79, 79,207,254, 49, 49, 49, 27, 40,165, 63, 87,197,229,224,224, 48,136, 82, 58, + 89,167,211, 21, 7, 4, 4, 88, 29, 61,122,212, 36, 53, 53, 21,225,225,225, 88,190,124,121, 62,195, 48, 58,134, 97,136, 92, 46, +143,183,179,179, 11, 23, 8, 4, 70, 50,153, 44, 47, 55, 55,119, 45,165,244,202,231,172,235, 63, 1, 66, 8,225,114,185,152, 48, + 97, 2, 56, 28, 14,140,140,140,160, 80, 40,160,209,148,212,103,148, 10,173, 90,133,165, 61, 60, 76,172, 56,224, 77,242,244,252, + 50,104,232,236,126, 54, 14,142, 78, 48, 55, 21, 32, 42,234, 77,231,155, 55,174,109,107,234,101,179,147, 81,105,118,190, 77, 40, +248,215,135,221, 87,214, 34,255,246,249,254, 97,180, 1,240, 28, 21,102, 30,162,180, 10,177,154, 59,209, 16,157,181,245, 31, 57, +169,169,124, 53,159,111, 28, 3,148,120,185, 74, 68,214, 16, 29,112, 20, 90,181,166,244, 70, 65, 75,191, 12, 20, 90, 26, 29,222, + 71,191,194,189,171,127,194, 90,150,138,156,248,214, 0,175, 5, 84,242, 66, 40, 84, 37, 79,254, 12,163,195,203,240, 27, 40, 42, +204, 67,243,182,253, 0, 22,235, 81,117,124,102, 86,164, 95, 39,239,150,236,247, 73,175,208,206,115, 8, 26, 56,119,193,135,244, + 34, 20, 72,148,200, 47, 82,160,117,243, 69,200,206,151,163, 72,166,192,155,247, 33,112,114,108,192, 34,156,184,238, 48, 80,104, + 41,223,156,134,242,237, 57,240,220, 58,131,239, 53, 0,108, 55, 31, 36, 69,220,194,203,203,155,144,242,250, 62, 40,163,131,131, +103,251,154,137, 0, 16, 66,182, 93,185,114,165,125,231,206,157, 57, 61,122,244,104,229,232,232,216, 42, 45, 45,237, 37, 0, 56, + 58, 58,182,234,219,183,111, 43, 27, 27, 27,108,217,178, 69, 78, 8,217,102, 16,105, 37, 84, 10,183, 61,177,179,179, 91,115,250, +244,233,109, 83,166, 76,129,173,173,109, 11,125,199,102,115,185,173,198,174, 93, 75,185,108, 54, 61,246,235,175,188,149, 87,174, +108,220,127,224, 0,175,155,159, 31,161,148,226,197,139, 23,198, 63,253,250,171,241,168,129, 3, 19, 63,100,101,105,239,132,133, +169,211, 83, 82,138,179,164,210,149,105,105,105, 6, 23, 6,252,147,208,104, 52, 15,227, 19,226,157,218,118,104,109,243, 60, 42, +254,117,175,110,157, 58,177, 88, 44, 86,116,220,135, 48, 27, 27, 83,227,107, 87,175,169, 53, 26,205, 39,213,110, 85, 65, 32, 16, +244,235,214,173, 27, 39, 63, 63, 31,142,142,142,200,206,206, 70,106,106,106,137,199,161, 48, 31,234,194, 66,104,138, 10,160,147, + 74, 16,255,244, 9, 90, 55,168, 47, 56, 89,146, 44,175, 87,104,149, 61,101, 86,246,174, 84,244,108,241, 77, 76,192, 23,139, 65, +106, 25, 54, 36,132, 12, 52, 55, 55, 95, 88, 80, 80,112,137, 82,186, 90,173, 86, 7, 46, 92,184,176,221,214,173, 91,173,215,172, + 89, 99, 58,121,242,228,147,132,144,214,148, 82,101,117, 28, 18,137, 36, 86,171,213, 90, 3,176,189,113,227, 6,108,109,109, 81, + 88, 88, 88,230,105, 81,201,100, 50, 97,110,110, 46,148, 74, 37, 84, 42, 21, 76, 77, 77,241,236,217,179,124,173, 86,251,103, 77, +246,153, 54, 36,171,149,234,168,101, 86, 77, 68,105,106,173, 69,215,172, 60, 38,127,197,134,180, 85, 0, 54,246,105,216,112,143, +154,185, 27,255,238,213,121,139,132,167,183,243,210,222, 73, 27,236,185, 24, 87,109,142, 22,165,148, 18, 66, 24, 66, 8,245,244, +244, 68,118,118, 54,216,108, 54,140,141,141, 33, 22,139,177,120,241, 98,108,219,182,173,214, 66,139, 16, 34, 20,137, 68,107, 89, + 44,214,112, 51, 51, 51, 27,157, 78,135, 69,139, 22,161,127,255,254,224,243,249, 80,171,213,229, 30,205, 50, 47,149, 62, 79, 7, +165,244, 5, 0,211, 74,231,240,179,182,182,190,169, 84, 42, 17, 23, 23,135,179,103,207,250, 82, 74,239, 24,100,224, 95,188,113, +132,144,222, 62, 62, 62, 7,189,189,189, 27, 82, 74,209,162, 69, 11,140, 24, 49, 2, 33, 33, 33,120,249,242, 37, 10, 11, 11,153, +107,215,174,237, 7,176,161, 54,220,132, 16, 82,186,190, 94,131, 7, 15,190,127,228,200, 17,139,220,220, 92,200,229,114, 72,165, + 82,156, 60,121, 18,157, 59,119,134,181,181, 53, 14, 31, 62,172,165,148,158,215,195,197, 98,177, 88,123,119,238,220,217,127,226, +196,137,248,237,183,223,112,236,216, 49, 12, 24, 48, 0,195,135, 15, 71,118,118,182,221,250,245,235,199, 16, 66,246, 2, 88, 49, + 98,196, 8, 72, 36, 18, 60,125,250, 52,202, 16, 91, 53, 26, 13, 10, 10, 10, 80, 80, 80, 0, 35, 35,163,178,181, 1, 74, 82, 39, + 66, 54,109,218, 52, 50, 40, 40, 8, 13, 26, 52, 88, 81, 90, 20,244, 73,149, 40,195, 48, 83, 83, 83, 83, 45, 56, 28,142,149, 86, +171, 69,114,114, 50,158, 61,123,134, 25, 51,102,228,229,229,229, 77,161,148,126, 32,132, 44,157, 48, 97,194,234,185,115,231,150, +255, 45,205,157, 59,247, 2, 33,164,247,255,180, 55,199,203,203,162, 25,159, 45,152,205,227,113,173,242,243,243,203,239, 29, 42, +149, 10, 74,165,242, 35, 79, 22,143,199,181,106,223,198,237,162, 92, 86,188,228,117, 76,126,181, 3,210,155, 54, 50,111,105, 44, + 50, 11,242,239, 61,244,155,175,122,127,205,214,106, 52, 8, 13, 61,143,223,127,223, 14, 63, 31, 79, 52,104,212, 2, 51,103,205, + 54, 83,170,180,139,174, 93,187,178,176, 83,251,250, 87,138,139, 10, 22,235,227,252, 47,199,197, 82,113,245, 73, 83, 84, 14, 0, + 84,173, 32,135,232,156,156,144, 15, 0,132, 16,107, 11, 11,139, 95,117, 58,157, 31, 48, 9, 92,177, 61,222, 60,123,140,188,124, + 46,148,114, 29, 24, 90, 34,182, 12,129, 82,169,194,221,208,115,216,188,105, 35,114,115,115,225,243,165, 47, 36, 28, 23,184,186, +184, 66, 33, 47,113,100, 80, 10,168, 85, 26,216,216,185,225,249,243,151,154, 34,169,244, 78,117,124, 60,161,186,137,171,157, 39, +148,234,142, 16,242,249, 40, 44, 86, 33,191, 84,100, 29,254, 99, 24,148, 50, 57,180, 42, 53,180, 42, 13,108, 92, 7,163,177, 93, + 55, 48,186,243, 85,134,146,170, 5,163,131, 58,225, 46,212, 9,119, 97,212,113, 22,254, 12, 30,249,209,219,134,206,221,205,202, +202,202,114,116,116, 60,255,226,197,139, 65,195,134, 13,195,173, 91,183, 38, 3,152, 6, 0, 66,161,112,242,176, 97,195,240,226, +197, 11,188,126,253,250,124, 86, 86,214, 63, 50,120,149,207,231,203,149,202,146,207, 88, 99, 99, 99, 97, 13,251, 58,181, 11, 8, + 96, 21, 62,127, 94,180,233,193,131, 21,123,246,238,229,245,232,222,157,104,180, 90, 48, 58, 29, 26,121,120,144,175,190,250, 74, + 20,114,226,132, 21, 91,163,121, 52, 63, 48,240,198,142,209,163,139, 31, 75, 36,134, 38,154,215, 43, 13, 25, 2, 64, 61, 61,219, + 12,134, 82,169,220, 58,117,210,184, 30,119,238,222,119,113,117,113, 50, 13,189,118,231,165,192,136,207,106,224,222,144,157, 95, +152,199, 89,181, 98,137,145, 82,169, 52, 84,180, 54,177,182,182, 70, 70, 70, 6,222,191,127, 15,165, 82, 9,141, 70, 3, 70, 38, +133, 42,191, 0,170,194, 60, 16,133, 28, 2,157, 14,138,156, 76,212,107, 80, 31,248,171, 34, 81, 47,170, 10, 23, 86, 12, 21, 10, + 77, 77,193, 19,137,193,226,114,171, 12,119, 85,195,233,221,190,125,251, 19,167, 78,157,226,141, 31, 63,190, 3, 33,228,215,210, + 15,136,238,203,151, 47,127,242,235,175,191, 10,166, 76,153,226,181, 97,195,134, 49, 0,118, 85,199,163, 80, 40, 78, 92,188,120, +113,148,155,155,155,109,100,100, 36, 20, 10, 5, 24,134, 65,159, 62,125, 0,160,252,111, 38, 58, 58, 90,174, 80, 40,178, 94,189, +122, 85,244,225,195, 7, 21, 12,168, 18, 92,177, 37,237,225,220,161,206, 1,118,246, 78,143,132, 70,245,220,169,228,249,160,185, + 67,157,215,255,114, 50, 69,113, 57, 54,182,120,249,140, 6,235,164,197, 17, 51,204,157, 37,191, 93, 62, 95,189,200,170, 0, 74, + 74,203,217,173,172,172,192,225,112,192,229,114,193,227,241, 64, 8,193,172, 89,179,176,123,247,110,189,161,195, 74,107, 40, 52, + 49, 49,121,189,114,229, 74,231, 41, 83,166,240,132, 66, 33,242,243,243,113,248,240, 97, 76,152, 48, 1,191,255,254,123,149,249, + 47, 53,133,148, 42,131,205,102, 7,141, 30, 61, 26, 42,149, 10, 35, 70,140,192,158, 61,123,130, 0,220,169, 21, 9, 0, 74,233, + 35, 66,136,199,203,151, 47, 77, 1, 12, 24, 62,124,248,129,193,131, 7,227,206,157, 59, 56,127,254,188, 47,128, 24, 0,114, 0, +193,164,100,136,115,176,190, 66, 16, 82,210,194, 97,187,141,141,205,128,102,205,154,189, 28, 60,120,112,243, 35, 71,142,152,103, +101,101,149, 21, 63, 32, 33, 33, 1,251,246,237, 75,223,187,119,111,145, 78,167,179, 98,177, 88, 23, 11, 10, 10,170,171,154, 38, + 0,246,110,218,180,105, 92,105, 56, 16,167, 78,157,162, 27, 55,110, 36,203,151, 47, 71,126,126, 62,252,252,252,176,115,231,206, +217, 18,137,164,213,198,141, 27, 39, 13, 29, 58, 20,171, 86,173,130, 84, 42,173,182, 50,182,166, 84, 51,141, 70, 67, 0,116,218, +180,105,147, 91, 80, 80, 16, 78,157, 58, 5,111,111,111,163,248,248,248, 29, 0, 38, 86,222,191,204,147, 24, 31, 31, 15,153, 76, +134,251,247,239, 99,197,138, 21,249, 21, 68,214,236,105,211,166,173,158, 61,123, 54,214,174, 93, 75, 35, 35, 35,179, 6, 15, 30, +108,183,123,247,110,118,163, 70,141,102,163,100,232,250,255, 8, 26,123, 88,173,107,223,174,235, 66, 7,167, 70, 56,124,228, 40, +242,242, 74,234,154,232, 95,141, 50, 65, 41, 69,113,113, 49, 50, 50, 50, 96,102,106,130,245, 27, 86,247,157, 62,121,156, 11, 74, +218, 96,124,130, 38, 13, 45, 55, 12, 25, 49,241,187, 17,163,198, 33,242,101, 56, 66, 14,236,194,171,200, 23,229,124, 90,141, 26, + 49, 81,207, 16, 19,245, 12,118,246,110,248,170,135, 47, 25, 57,114,100,159,209,163,134,219, 0,248,215, 90, 71,252, 47,246,102, +125,210, 71,171, 98,206, 86,149,161,195,138, 7,151,138,172,215,199,143, 31,183,242,241,241, 97,107,181, 90, 92, 9, 13,197,140, +105,223, 98,204,232, 69, 80,195, 2, 90, 21, 15, 12, 79,239,103,120, 57,228,114, 25, 40, 40,164, 82, 41,194,194,194, 64, 25, 45, + 66,118,111, 4,165, 76,185,208, 2, 40, 84,106, 53,156, 92,189,176,125,207, 26, 45,184,220, 39,213,241, 21,229,178,117, 26, 45, + 69,106, 86, 18,146,210, 95,193,204,196, 21, 28,174, 43,114, 11,100,224,176,236,161, 81, 68, 67, 87,234, 86,149, 73, 83, 32, 87, +255,189,223,159,174,240, 83,239, 41,173,197, 77, 87, 46,151, 31, 58,116,232, 80,223, 95,126,249,133,239,239,239,239,233,232,232, +216, 9, 0,134, 12, 25,226,105,106,106,138, 67,135, 14,169,228,114,249,161,191,101,100, 5,104, 52,154,110,237,219,183, 71,126, +126, 62, 18, 18, 18, 94,234,219, 87,167, 82, 89,137,109,109,217, 89,183,110,105,178,243,243, 93,186,117,235, 70, 52, 90, 45, 88, +132, 32,175,176, 16, 31, 18, 19, 97,110,110, 78, 94, 71, 71,139,183,205,156,121,198,179,121,115, 78, 89, 69,162, 33, 56,127,254, +188, 49, 74,242,178,244,110,171, 13, 40,165, 82, 66,200,184,192,192,192, 51,135, 14, 29, 54,203,204,202,140, 17,240,249, 90,177, + 88,232, 56,250,155,233,156,130,130,130, 81,148, 82,137,161,124,249,249,249,136,143,143,135,145,145, 17,120, 92, 46, 24,185, 12, + 58,169, 4,138,188,108,176,213, 42,240,117, 58, 88, 26, 11,224, 98,103, 7, 87, 27,235,154, 9, 81, 82, 93, 88,150,248, 94, 49, + 92,184,190,125, 19,240, 69, 98,240, 77,196,152,126,225, 54, 0,128,199,227, 1,203,171,141,238,150,131, 16, 98,237,228,228,244, +231,145, 35, 71,120,217,217,217,120,241,226,197, 75, 74,105, 33, 33,196, 4, 0, 19, 21, 21,117,253,213,171, 87,253, 74,171,238, +106,170, 22,219,120,250,244,233,158, 62, 62, 62, 90,119,119,119, 81,102,102,166,107,110,110, 46, 73, 79,255, 56,215,249,210,165, + 75, 66,185, 92, 46,101, 24,230, 12, 74,250, 64,213,216,191,104,238, 80,103, 97,216,115,204,234,218,171, 94, 11, 83,235,150,200, +211, 62,111,241,232,101,250,172,185, 67,157,183,254,114, 50, 69, 97, 68,148, 7,136, 46,217,133, 35, 84, 24,148,196, 76, 41,165, +214,214,214,136,138,138, 66, 88, 88, 24, 62,124,248,128,248,248,248,143, 4,213,228,201,147, 17, 18, 18, 98,144, 71, 75, 36, 18, +173,253,225,135, 31,156,131,130,130,120,101,219,216,108, 54, 2, 3, 3, 81, 88, 88,136, 61,123,246, 32, 48, 48,176, 42, 59, 12, + 49, 23, 0, 64, 8,169,223,179,103, 79,127, 7, 7, 7,228,230,230,194,222,222, 30, 62, 62, 62,253, 9, 33,238,148,210, 4,131, +137, 62,198,244, 94,189,122,173, 94,185,114, 37, 52, 26, 13, 38, 76,152,128,119,239,222,157,120,247,238,221,102, 87, 87,215, 89, + 11, 22, 44,176,179,179,179,195,176, 97,195, 68, 0, 2,170, 35,177,180,180, 12,222,181,107,215, 40,127,127,127,150, 90,173,254, +242,230,205,155, 72, 76, 76,132, 74,165,130, 86,171, 69,108,108, 44, 2, 3, 3,211,115,115,115,187, 82, 74, 99, 13,176,107,252, +210,165, 75,199,205,154, 53, 11, 63,253,244, 19,126,248,225,135,253,102,102,102,205, 91,183,110,221,230,135, 31,126,192,252,249, +243,225,230,230, 6, 43, 43,171,198,203,151, 47,111, 50,119,238, 92,108,221,186, 21, 43, 86,172,216, 15, 96,223,231, 44, 4,195, + 48,100,221,186,117,173, 54,109,218,228, 80, 38,178, 88, 44, 22,142, 31, 63,142,231,207,159,247,175,230,152,157,246,246,246,147, + 29, 28, 28,248,215,174, 93, 19,187,185,185, 65,171,213,106, 74, 69,214, 54, 87, 87,215, 25,177,177,177,240,247,247, 71, 92, 92, +220, 33, 74,233,152,174, 93,187, 74,231,206,157,107,108,100,100,100,246, 57,118,126, 46,216, 44, 50,118,237,170,249,120,250, 60, + 26,167, 79,243,240,244,233, 83,216,217,217, 65, 32, 16,128, 82, 10,165, 82,137,236,236,108,104,212, 74,180,104, 86, 31, 7,247, +174, 67, 86, 86, 54,192, 34,213,166,220, 16, 22,249,102,220,183,131,112,239,126, 40,118,236,216, 5,137, 68, 90,229,126,124,190, + 16,141, 60,155,192,201,209, 22,201, 41,201, 32, 44, 24,118,211,251, 76,252, 47, 15, 29, 2,168, 69,123,135,138, 48, 55, 55,223, +124,236,216, 49, 43, 63, 63, 63,182, 84, 42, 5,195, 48,232,226,227,131, 89, 65, 65, 56,127,228, 8, 60, 58,140, 0, 81,137,161, + 53, 54,172,234, 65, 33,151,161,105,155, 78, 24, 58,108, 56,146, 62,124, 64,175,126,131,161, 80,200,202,159, 48,128, 18,143,150, + 74,165,134,181,173, 11,174, 94,189,202,198,132, 9,213,230,152,232,212,252,136,152, 88, 69,231, 2,249,115,132, 61, 13,129, 90, +169, 70,139, 22,203,161,102,172, 96,235, 60, 25, 26,205, 89, 20,101,223, 4, 0,152, 90,249, 33, 37, 41, 9, 44, 54,239,181, 65, +198, 86, 1, 70,250,105, 1,100,109,110,186, 5, 5, 5,133,142,142,142,127,132,133,133,125, 19, 16, 16,128,171, 87,175, 78, 2, +128,128,128, 0,132,133,133, 33, 62, 62,254,143,130,130,130,194,207,181,175, 34, 28, 29, 29, 7,248,249,249,141,104,215,174, 29, + 46, 92,184, 0, 74,233, 61, 67,142, 99,115,185,148,197, 98,129, 97, 24, 16, 0,185, 5, 5,120,247,238, 29,114,115,114,160,209, +104, 32,149, 72,152, 38,158,158, 18,202, 48, 38, 53,146, 85, 64,197, 10, 67, 84, 81,117, 88,182,173, 54,156, 0, 64, 41,253, 32, + 22,139,147,138, 37, 18, 27, 11,115,139, 98, 62,159,175,203, 47, 40, 40,124,243, 58, 82,101,224,135, 67, 25,162, 94,189,122,213, + 60, 45, 45, 13, 73, 73, 73,208, 74,139,193, 86,170,192, 82,202,208,189, 83, 71, 24,129, 66, 8, 6, 92, 70, 3, 46,155,139,226, +146,234,188, 26,195, 29,101, 66, 31,248,203,179, 69, 8, 41, 9, 23,138, 68,224,139, 77,202,223, 43,189,158, 26, 13, 21, 8, 4, + 71, 78,158, 60,233,224,228,228,132, 85,171, 86,193,217,217,185,113,139, 22, 45,100, 93,186,116, 49,178,179,179, 67,211,166, 77, +209,169, 83, 39, 92,190,124, 25, 0,244,174, 1,165, 84, 75, 8,249,234,222,189,123,223, 61,120,240, 96, 40, 33,132, 44, 90,180, + 8,189,123,247,134, 80, 40,132, 76, 38, 67,126,126, 62,118,239,222, 77, 40,165,109, 74,109,117, 19, 10,133, 71, 9, 33, 41,114, +185,124, 88,101,206,144, 77, 45, 29,179,242,152, 9,118,246, 78,131,186,246,170,215,162, 91,175, 30,168,239,209, 13,221,122, 37, + 1,192, 58, 75, 78,226,136,245,203,154,159,177,118,177,220,119,245,202,181, 21, 62, 93,187, 45, 93, 52,197, 98,245,186, 93,249, + 53,230,211, 17, 66,192, 48,204, 71,189,131, 42,191, 63,102,204, 24, 28, 63,126,188,198,117,100,177, 88,195,167, 76,153,194,171, +184,173, 44,100,220,175, 95, 63, 4, 4, 4,124, 36,180,172,173,173, 97,111,111,143,196,196, 68, 0,168,178, 50,178, 10,204, 26, + 63,126, 60,145,203,229,152, 56,113, 34,246,236,217,131, 17, 35, 70,144, 59,119,238,204, 2, 16,100, 32, 71, 69,155,215, 47, 88, +176,224,187,192,192, 64,228,229,229,225,210,165, 75,232,211,167, 15,142, 31, 63,110,115,233,210,165,181,126,126,126, 96,179,217, +184,112,225, 2,180, 90,173,222, 94, 95, 60, 30,111,128,191,191, 63, 43, 57, 57, 25, 60, 30, 15,109,219,182, 69, 74, 74, 10,100, + 50, 25, 82, 83, 83, 49,123,246,236,140,220,220, 92, 95, 67,255,143,120, 60, 94,208,172, 89,179,112,236,216, 49, 44, 90,180,232, + 0,128,137,133,133,133, 67, 31, 60,120,112,108,224,192,129, 72, 77, 77,197,153, 51,103,176, 98,197, 10, 50,102,204, 24,252,246, +219,111,152, 61,123,246,126, 0, 19,245, 84, 72, 22,103,101,101,153, 53,108,216, 66, 8, 89, 54, 0, 0, 32, 0, 73, 68, 65, 84, + 16,153,153,153,144, 72, 36, 56,115,230,140,237,229,203,151,221,157,156,156, 76,227,227,227,117, 63,254,248, 35, 63, 40, 40, 8, +155, 55,111,198,139, 23, 47, 16, 18, 18,130,110,221,186,105,227,226,226,170,244,146,149,182,108, 56, 99,105,105,121, 77, 36, 18, +161,184,184,184,172,178,116,222,162, 69,139, 2,131,131, 75,156,236,105,105,105, 24, 59,118,236,104, 66, 8,179,114,229, 74, 99, + 30,143, 7,133, 66, 81,181, 42,249,151,192,232, 24, 0, 12,220, 93,196, 8, 61,191, 23,225, 47,227, 16,254,242, 21,248,130,146, + 36,120,185, 92,134, 54, 45, 26,161, 67,219,246, 72, 75, 79,197,161,144,189,176,180,118,210,123, 31,161,148,130,199,209,161,137, +167, 61,142,132,236,194,133, 75, 55, 16,114,232,104,121,206, 27,135,195, 69,235, 54, 29,208,182,173, 15,226,226, 99,177,119,239, + 14,216,216,186, 84,203, 87, 7,253, 40, 15, 29, 86,252, 94, 17, 12,195,116,243,241,241, 97, 75, 36, 18, 40, 20, 10,100,100,100, + 32, 49, 49, 17,230, 22,230,136, 75, 75,128,175,177, 26, 25, 76, 17,162, 94,190,214, 17, 54,247, 69, 77, 39,244,239,218, 26,232, +218, 26, 51,198,143,168,118, 31, 10, 10,145,169,117, 73,232, 70,171,125,143,173, 91,171,125,114,214,234, 52,215, 67,175,221,108, + 63,126,204, 0,238,213,155,123,160, 81, 49,144,107,204, 32, 85,168, 32, 85,115,193, 50,235, 3,228,220, 1,155, 35,192, 23,173, + 26,225,204,233,203,106,170,213,220,168,142,175, 50, 56,118,205,161,205,252, 43, 36,205, 72, 63,142,232, 9, 77, 44, 13, 14, 29, +150, 65,167,211, 29, 63,124,248,240,215, 29, 59,118, 52,246,243,243,107, 8, 0, 2,129, 64,125,248,240, 97,153, 78,167,171,249, +211,161, 18, 72,165,110,240, 14, 14, 14,109,120, 60,222,136, 1, 3, 6,180, 25, 55,110, 28,222,188,121,131, 67,135, 14,197, 52, +106,212, 72,111, 15, 49, 54,159,159, 43,201,202, 50, 23,187,187,115, 44, 76, 76,210, 46, 95,186,228,214,163,103, 79,146,148,148, +132,220,220, 92, 40, 20, 10,188,120,249,146,114,217,236, 20, 98,106,202,138,126,254,156,197,230,243, 13,253,176, 1, 62,174, 48, +172,170,234,176,108, 91,173,225,226, 96,209,112,197,162,169,245, 21, 74, 69,243,162,162, 34, 45,135,203,229, 58,219,155,127,168, + 13,135, 82,169,188,112,253,250,245,175,123,244,232, 33,136,137,120, 1,109, 97, 33, 84,133,249,224, 49, 58, 88,182,105, 5,182, + 90, 9,168, 52,112,106, 66,161, 40, 48,198,157,199,209, 26,165, 82, 89, 99, 83,195, 50,161,197,170, 36, 12,248, 98, 49, 4, 38, +166, 16,136,197,149, 5,131,222, 39, 57, 66,136,241,128, 1, 3,186,127,241,197, 23,160,148, 98,247,238,221, 80,171,213,124,181, + 90, 13,149, 74, 5,181, 90,141,162,162, 34,132,132,132, 96,251,246,237, 15, 0,236,175,201, 70, 74,169,150,203,229, 6,106,181, + 90, 91,129, 64,160,182,177,177,225,157, 56,113,162,188,221, 68,235,214,173, 33, 18,137,148,132, 16, 53, 0,216,219,219,107, 14, + 28, 56,192, 25, 56,112, 32,175, 42, 62,175, 22,141,231,215,215, 90,116, 21, 26,213,115, 55,181,110,137,250, 30,221, 0, 0, 61, +251,141, 71,253, 70,174, 40,202,137,112, 87,200, 19, 7,241, 56,249, 22,175,183,166,190, 49,242,111, 62, 78,154,117,251, 29,170, + 46,239,175,202, 94,176, 88,172,106,195,177,134,136, 44, 66, 8,203,204,204,204,166, 44,207, 7, 0,114,115,115,145,158,158,142, +168,168, 40,120,121,121, 33, 47, 47, 15, 78, 78, 78, 80,169, 84,104,215,174, 29,228,114, 57, 54,109,218,132,251,247,239, 63, 64, +105,101,100, 13,231, 48,242,240,240, 24,219,166, 77, 27, 92,186,116, 9, 79,159, 62, 77, 13, 13, 13,117,242,241,241,129,187,187, +251, 56, 66,200, 18, 74,171,239,193, 87, 5,159,232,203, 47,191,156, 25, 24, 24,136, 87,175, 94, 97,234,212,169,185,201,201,201, +103, 78,156, 56, 49,113,197,138, 21,172, 94,189,122, 33, 61, 61, 29,235,215,175,215,221,191,127,127, 3,128, 85,250,248, 40,165, +111,147,147,147,157, 21, 10, 5,242,242,242,160,213,106, 33,147,201,112,249,242,101,132,132,132,100,150,138,172,247,134,218,215, +170, 85,171,166, 44, 22, 11,199,142, 29, 3,128,101,148, 82,134, 16,114,102,208,160, 65,169, 63,254,248,163,211,226,197,139, 49, +105,210, 36,168,213,106,252,244,211, 79, 88,188,120,241, 69,148,136, 44,125, 55,209, 95,236,237,237, 39, 79,157, 58,181,241,220, +185,115, 17, 22, 22,102,251,236,217,179,182, 47, 94,188,128,139,139, 11,114,115,115, 57, 86, 86, 86,216,188,121, 51,230,204,153, +115, 10, 64,206,195,135, 15,135,199,199,199, 7, 83, 74,215,215,176,158, 59,157,156,156, 38, 83, 74,169, 76, 38, 75, 92,180,104, +209,250, 53,107,214, 96,206,156, 57,120,253,250, 53, 10, 11, 11, 97, 98, 98, 66, 22, 44, 88, 48,118,217,178,101,152, 48, 97, 2, +149, 74,165,219, 13, 93,143,127, 10,148,234, 32,203,127, 5,157,210, 2,173, 91,120,161,117,243,122, 8,189, 25, 14, 0,232, 62, +216, 7, 50,105, 49, 14, 28,216,141,247,239,223,129,195,229,194,220,210,190, 70, 78,134, 97,160, 42,122,139, 2,117, 58,122,248, +181, 69,159, 94,190,216,127,240, 56,180, 26, 53, 38,142, 31,133,252,130, 2, 28, 60,184, 23,113,241,177,224,112,185,176,178,254, +247, 27,161,234,211, 34,255,155, 97, 80,182,168, 70, 83,146,248,158,154,154,138,103,207,158, 33, 33, 33, 1,198,198,198,144,107, +117,204,142,235,247, 25, 66,120, 41, 12,165, 15,168,182,188, 75,241,167, 28, 58, 93,106,133,142,181,102, 22, 22, 22,124,165, 82, + 14,173, 86, 83,225, 83,133, 0, 4,224,113, 0, 7,199,250, 72, 78, 74,166, 10,133,226,182, 62,219,120, 74,197,230,115,103, 78, + 6,118,234,236, 99,221,167,251, 74,156, 57,187, 28,249, 69, 69, 80,168,185,144, 42,212,144, 41, 0,115, 75, 79,180,107,209, 18, +105,105,185,136,120,122, 71,194, 81,202, 12, 73, 20,125,183,109,233,120,143,241, 51,230,195,200,173, 51,148, 81,103,192, 72, 50, +203, 61, 90, 66,177, 5, 44, 93,155,160, 64,170,196,201, 27,225, 0, 96,240,168,151,204,204, 76,153,163,163,227,225,192,192,192, +159,194,195,159, 57, 3, 64,120,120,120, 74,122,122,250,194,204,204, 76,131, 43,238,128,143,186,193, 19, 99, 99,227,240, 70,141, + 26,165,249,251,251,155, 13, 26, 52, 8,214,214,214,120,241,226, 5,130,131,131,223,170,213,234,249,183,111,223,214, 27,234, 81, +169, 84,169,225,103,207,154,250,126,251,173,249,252,254,253,215, 7, 6, 6,110, 94,181,106, 21,215,195,195,131,104,212,106, 68, + 70, 70,210, 35,135, 15,107,182, 47, 94,188,137, 47, 18,113,158,156, 59,199,213, 42,149, 53,245,104,250,215,225,236,236,220,181, +111,239,174, 77, 54,252,178, 21, 10,185, 4,143,195, 46, 34, 63, 63, 27,187,118,159,110,226,236,236,220, 53, 37, 37,229,142, 33, + 60, 58,157,238,248,190,125,251,190,235,208,166, 77,155, 6, 46, 46,136,252,144, 0, 62,163, 3, 79,171, 5, 91,173, 4, 75,171, +128, 75,115, 10,194, 50, 65,122, 70, 17,214, 28,251,227,149, 33,194,184,113,223, 1, 88,149, 82, 8, 66, 8, 54,118,108, 14,190, +137, 24, 60,145, 24,211,255,188, 89, 46, 12, 46,172, 90, 12,190, 88,140,134, 29,106,110, 8, 79, 41,149,153,152,152, 60,139,140, +140,108,215,188,121,115,124,247,221,119, 72, 76, 76, 4,195, 48,200,204,204, 84,164,167,167,167,102,103,103, 39,162,164,255,207, +158, 26, 62,196,202,161,213,106,109,195,195,195, 1,128, 7, 0, 55,110,220,128,163,163, 35,204,204,204, 80, 84, 84,132,249,243, +231, 11,190,255,254,123, 0,192,179,103,207,184, 21, 5, 74,101, 68,134, 71,109, 40, 40,166,249, 84,242,124, 80,158,246,121,139, +110,189,146,209,179,223, 56, 92,187,176, 31, 55, 67,175,195,146,147,152, 0, 81,241,229,156,132,156,162, 20,169,199,206, 38,222, + 19,217,233,210,208,157,179, 6, 90,176, 29, 28,152,147,139,182, 23, 22,232,179,213,195,195, 3,118,118,118,229, 57, 90, 28, 14, + 7, 19, 38, 76, 0,165,212, 32,145, 85,186,142,140,169,169,105,182, 66,161,176, 19, 10,133,200,200,200, 64,108,108, 44,226,226, +226,202, 91, 7, 48, 12,163,153, 55,111, 30,119,230,204,153,216,177, 99, 7,110,223,190,253, 0,192, 74, 74,169,161, 15,107,163, +134, 13, 27,102,162, 82,169,112,244,232, 81, 45,128,126, 39, 79,158,124,214,174, 93, 59, 78,239,222,189, 77,126,251,237,183, 81, + 0,246, 24,200, 5, 0, 34, 83, 83, 83,158, 90,173,198,111,191,253,134,228,228,228,174,148,210, 40, 66,200,206, 97,195,134,109, +111,222,188,121,163, 87,175, 94,189,147, 72, 36,211, 41,165, 17, 53,145,101,102,102,142,111,219,182,237, 73,134, 97,220,122,244, +232, 33,250,229,151, 95, 76,163,163,163,225,236,236, 12,134, 97, 34,105, 45, 71, 88,189,123,247, 46, 42, 61, 61,189,137,175,175, + 47, 46, 95,190,188,142, 16,178, 22,192, 79,211,166, 77,115,250,240,225, 3,218,180,105, 3, 75, 75, 75, 68, 71, 71, 23,167,167, +167,111, 7,176, 68,143, 39, 11, 0, 64, 41,141, 7,176,144, 16,210,114,231,206,157, 35, 44, 45, 45,191,120,241,226, 5,238,221, +187,135, 13, 27, 54,224,251,239,191, 71,151, 46, 93,240,221,119,223,229, 0, 24, 81, 26,210, 54,168,111, 94,153,103, 11, 0,218, +182,109,155, 22, 28, 28,140,137, 19, 39,210,223,127,255,125,203,225,195,135,131, 70,141, 26, 5,160,228, 51,112,236,216,177,244, +208,161, 67, 99,245, 21, 2,252, 75,208,168,213, 42,152, 90,214,135,164, 32, 9,217,201, 97, 48, 54,177, 71,175,110,173, 32,147, +171,112,254,220, 41, 68, 68,190, 4,139,197,130,157,189, 11,204, 45,172, 17, 19,243, 14, 0,244, 85, 27,107,212,106, 53, 76, 44, +234, 65, 82,152, 12, 85, 86, 56,140,196,182, 24,247,237, 32,200,228,106,156, 62,115, 10,175, 94, 69,128,205,102,195,222,193, 5, +102,230, 37,156,132,234,229,172, 3,170,238,167, 85,163,208, 98,179,217,183,174, 92,185, 50,164, 67,135, 14,156,247,239,223,227, +253,251,146,135,155,252,252,124, 45,129,238,143,204,136,179, 35,171, 59,150, 16,210,163,172, 58,163,226,236, 66,177,137, 73,106, +244,219, 40,187,252,188, 76,188,124,126, 31,239, 99, 34,145, 16, 23, 5,181, 90, 1, 54,139, 5, 22,155,133,122,245,155,225,254, +131, 48,149, 66,171, 13,171,142, 19, 0,242,242, 98,139,197,118,158,195, 87,175, 90,114, 97,206,252, 31,140,134, 14,217,129,136, +232, 55,144,104,237, 65, 41, 96,111, 37, 66,235, 6, 11,144,154,150,141, 99,251,127,147, 49,106,245, 55, 21,123,104, 85,197, 9, + 0,118, 57,104,186,125,247,254, 9,123, 66,142,252, 48,127,230, 20,187,129, 1,223,128,159,247, 6,154,180,112,212,111,215, 7, + 68, 96,142, 75, 87,111,226,206,179, 55,153,140,142,254, 96,151,139,223,107,226,172,136,130,130,130,135, 25, 25,233,206, 21,186, +192, 59, 11, 4, 66,189,213,113,149, 57, 73,165,142,243,108, 54,203,123,245,234,213, 26, 59, 59, 59,245,171, 87,175,176, 99,199, + 14, 38, 60, 60,252, 42,139,197,218,150,150,150,166,168,137,211, 70,163,121,121,100,209,162,166,237, 3, 2,232,200,153, 51,101, + 16, 8,102,173,223,184,113, 81,118,126,190, 35,101, 24,216, 88, 90,166,172, 95,188, 56,120,200,176, 97,249,175,239,223, 55, 10, + 59,123,214,136,175,213,134,215,100,231, 63, 1,125,156, 41, 41, 41,119, 60, 26,186,226,192,158, 95,160, 86, 43,145,158,250, 1, + 0,144,147, 91, 8,125, 34,171, 50,103,105,213, 85,192,178,239,191,127,180,108, 78,144,253,151,221,123, 32,233,229, 11,168,243, +178, 65, 52, 90,112, 9, 7,210, 44, 99,100,101, 74,176,240,208,137, 44,137, 76, 22, 80,249, 67,162, 58, 59,203, 60, 86, 2, 83, + 19,240, 68, 98,240,197, 38, 31,121,177,132,166,166,224,139,196,224,240,249, 85,121,105, 62,225,148, 72, 36,131,135, 12, 25, 18, +241,228,201, 19,139,137, 19, 39,162, 83,167, 78,207,229,114,185, 31,165,212,160, 49, 83, 85,113,114, 56,156, 44,111,111,111, 91, + 46,151,171,157, 48, 97, 2, 39, 39, 39,167,188,179,186, 68, 34,193,229,203,151,225,229, 85, 82,213,255,250,245,107, 52,107,214, +172, 90,206,137, 11, 34, 83, 1,172,154, 59,212,121,253,163,151,233,179, 0,172,171,223,200, 5, 55, 67,175,227,222,205,176, 69, + 95, 52,103,182,246,253,166,221,143,198,126,195,230, 55,241,158,200, 22,155, 58,224,224,233, 83,236,168,240,189,107,100,178,200, +134, 0,230, 85,103, 39, 33, 4,148,210, 79, 90, 57,176,217,108, 28, 62,124,184,182,215,126, 98,207,158, 61,211,166, 78,157,202, + 75, 79, 79,199,219,183,111, 33,149, 74, 33, 20, 10, 17, 26, 26,170, 5,240,219,225,195,135, 67, 15, 31, 62,220, 27, 37,125,113, +170, 20, 88,213,253,222, 69, 34, 81, 96,175, 94,189,240,246,237, 91, 60,125,250,244, 20,165, 52,130, 16,114,234,253,251,247,195, +187,116,233,130,253,251,247, 7,162, 26,161, 85, 29, 39,195, 48, 21,123, 38,229, 1, 0,165,244, 37,128, 47,106,121,237,101, 9, +188,157, 1,192,202,202, 42,217,206,206,206,244,229,203,151,112,117,117,133, 90,173,238, 80, 19, 95,101,206,194,194,194, 95,182, +109,219,246,251,248,241,227,241,227,143, 63,126,115,226,196,137,111,250,246,237, 11,127,127,127,236,219,183, 15, 17, 17, 17,235, +168, 1, 99,197,170,186,246, 82,225, 24,209,180,105,211, 25, 46, 46, 46,216,176, 97, 3, 34, 35, 35,131, 87,173, 90,181, 56, 34, + 34, 2, 94, 94, 94,130, 55,111,222, 84,251, 48, 89,211,125,201,212,212,212, 84,163,209,224,236,217,179,143, 41,165,115, 8, 33, +182,155, 55,111, 30, 33, 22,139,145,151,151, 39,127,245,234,213, 40, 74,233,185,218,112,126, 14, 62,249, 29, 17,178,116,226,164, + 89, 59, 39, 77, 28, 37,108,235,221, 26,178,162, 20,200, 37,153,144, 21,103, 96,219,158,171, 32,132, 5, 27, 27, 7,216,218, 59, +227,195,135, 36, 60,184,120, 73, 37,149,201, 55,243, 53,204, 58,253,156, 51, 75, 56,219,148,112,202,164, 89,144, 75,178,202, 57, +109,109, 29, 75, 57, 63,224,126,216, 37,133, 92, 42,253, 69, 69,201,207,213,113,254,183,131,212,118,214, 97, 69,228,231,231,207, +158, 50,101,138,223,194,133, 11,173,180, 90, 45,219,210,210, 18, 31, 62,124,208,254,241,199, 31,121, 18,137,164, 70,215,121, 85, +224,112,185, 17, 30,158, 94,126, 3, 7, 14,212, 14, 24,208,159, 55,122,124,111,142,141,173, 45, 10, 11,114, 17,243,246, 5,162, +223,132,195,195,171, 21, 86,172,218, 4,152,155,215, 56, 72, 82,146, 25,115, 75,108,231,217,111,229,178,121,199, 59,119,253,202, +212,171, 89, 43, 94,235,134,102, 80,107,180, 72, 73, 73,193,185,179, 47,213,175,158,221, 43, 98,180,170,225,210,108,195, 70,240, +220, 46,121, 42,218,213,194,142, 28, 94,187,126,219,119,191,237, 58, 48,127,225,172,137,162, 46, 62, 61, 17,121,125, 63, 78, 93, + 56, 46, 85, 40, 85,235,121,108,108,140,204,161,181,242, 66, 1,128, 66,161, 80, 87, 46,136, 82, 40, 20, 85, 53, 49,173, 21,246, +237,219,135,204,204, 76, 85, 98, 98,226, 21,173, 86,123,162,186, 97,207, 85, 97, 43,165,170, 0, 66,174, 47,243,241,233,189, 44, + 52, 84, 56,118,193, 2,213, 55,163, 71,207,131, 82,169, 6,159, 79, 57, 34, 17, 11, 2, 1,247,245,253,251, 70, 91,166, 77,179, + 36, 42,213,181,253,122,218, 6, 84,129,127,188,234, 16, 40,247,104, 97,236,196, 57,144, 87,240,104, 61,124, 26,131,218,120,180, + 0,128, 82,154, 68, 8,249, 98,214,210,101,167,135,247,234,222,164,185, 91, 61,129,141,123, 61,136,237,237,145,155,157,141,251, + 79,163, 53,171,142,159,126, 85, 42,178, 12,234, 43,195, 48, 76, 73,146, 59,128,238,179, 23,130,176,217, 64,105, 27,135,178,202, + 33,247,118,157, 64, 56, 28,232, 40, 3,165, 82, 89, 99,146, 22,165, 52,133, 16, 50,248,155,111,190,185,113,225,194, 5, 86,175, + 94,189, 90,159, 57,115,166,118, 49,236, 74,208,104, 52,206, 0,192,225,112,138,140,141,141, 57,227,198,141,131, 70,163,129, 76, + 38, 67, 97, 97, 33,162,162,162,148, 67,135, 14, 21, 0,128, 72, 36,210, 12, 31, 62,188,198,251,199, 47, 39, 83, 20,115,135, 58, +111,181,228, 36,142, 40,202,137,112,183,228, 36, 38,124,209,156,217,250,203,201, 20,197,202, 57,230,171,115, 18,239,196,164, 75, + 67,119, 30, 60,125,138, 61,102,208, 96,157,179,248,221, 34,161, 45,253,163, 91,149, 41,204,127,129, 16,242, 73,115, 82, 67, 68, + 86,101, 20, 23, 23, 47, 94,190,124,185,127,126,126,190,115,239,222,189,121, 77,154, 52,193,163, 71,143,112,225,194, 5,237,195, +135, 15,147,165, 82,233, 18, 74,169, 2,192,213, 90,147, 3,240,244,244,116,231,112, 56,101,161,180, 95, 75, 55,255,122,230,204, +153,225, 19, 39, 78, 68,189,122,245,154, 18, 66, 4,180, 22,255, 71,148,210,242, 40,195, 63, 9, 66, 72,220,150, 45, 91,156,236, +237,237,201,229,203,151,181,108, 54,187,214,158, 27, 74,233, 62, 66, 72, 7,141, 70, 51,105,242,228,201,232,218,181, 43,180, 90, + 45, 14, 29, 58,132,189,123,247, 26, 36,178,106, 66, 76, 76, 76,120,114,114,242,151,243,230,205,195,134, 13, 27, 22,207,155, 55, + 15,201,201,201,136,137,137,169, 49,117, 69, 31,138,138,138,228, 73, 73, 73,198, 29, 59,118,108,235,234,234,250,106,236,216,177, +205, 38, 78,156,136,117,235,214,209,219,183,111, 15,161,148, 94,254,187,182,127, 14,222,190,203, 13,105,209,192, 46,116,213,234, + 95,190,111,216,192,125,234,132,113,195,216,158, 30,205, 32, 45, 76,129,149,181, 29,156, 93,234, 35, 59, 43, 7, 87,174, 92,214, +229,228, 20,236,211,177,200,202,119,239,114, 63,237,176, 93, 11, 78, 39,231,250,200,202,202,194,165, 75,151,116, 5,249, 69,187, +161, 97,173,122,147,152,111,240,103,201,127, 35,168,158, 89,135,196,144,196,219,210,202,195, 45, 37,237, 29, 74,188, 92,249,249, +249,179, 41,165,159,182,131,255,248,184,114,197, 75, 42, 55, 81, 27, 58,148,135,139, 23, 91, 66,163,249,194,220,196,164, 59,101, +152,118,173, 90,181, 18, 15, 27, 54,140,241,241,233,196, 55, 53, 53, 37, 77,155, 54, 47, 42, 44, 40,176, 4, 0, 10,232, 42,115, + 86, 70,217, 80,105, 14,155,219, 67,167, 83,183, 40,177,181,230,161,210,134, 40,243, 6,118,196,134,195, 96, 5,139,144,113, 12, +165,251,181, 44,172,140,203,164,213,142, 6, 50,132,179, 66,216,175,108,228,140,222,155, 80, 53, 79,247,229,161, 67, 22,139, 29, +226,224,224,176, 36, 37, 37, 37,139, 82,170,211,199,165,143,179,108, 4, 79,191,160, 32,141,247, 87, 95,105, 45, 93, 92, 24, 74, +169, 46, 33, 60,156, 60, 60,119,142,251,240,220, 57,161, 70,169,188,117,146,210, 56, 67, 56, 29, 29, 29,131,207,159, 63,111,112, +238, 85,255,254,253,223,148,229,109,233,179,179, 34, 26, 54,112, 14,109,224,238,244, 85, 3,247,146,240,116, 92, 66, 26,226, 18, + 82,175,198,198,165,244,170,238, 24,125,156,132,252, 53, 84,154,148,182,112,160, 6, 12,149,174,204,105,109,109,253,140,195,225, + 56,235,189,224, 74,208,233,116,105,217,217,217,229,227,172,106,176,115,164,187,187,251,186, 15, 31, 62,156,214,233,116,115, 12, + 61, 71, 13,156,157,216,108,246, 37,157, 78,247, 81,108,144,195,225,100,149,137, 49, 66,136,155, 64, 32,248, 40, 25, 94, 31,231, +250,101,205,191,239,216,165,203,160,135,247,238,157,153,191,250,213, 71,121, 67,179, 6, 89,142, 31, 57, 99,246,207, 71,127,219, +178, 96,235,153,188,143, 42,207,170,244, 54,219,217,221, 6,224, 81,250,190,222,235, 44, 93,203,143,202,209,171,240, 12, 11, 77, + 76, 76,130, 1, 12,103, 24,198,154, 16,146, 67, 41, 61, 86, 65,100,213,136,234,174,157,205,102,175,107,220,184,241,236,232,232, +232,163, 90,173,118, 66,133,253, 55, 52,108,216,112, 70, 98, 98,226,175, 26,141,102,190,161,156,132, 16,211, 46, 93,186,228,111, +217,178,133, 53,103,206, 28,220,185,115,199,146, 82,154,111,136,141,250,236, 44,125,207,222,194,194,226,119,157, 78,215,132, 82, +122,190,184,184,120, 49,165,180,198,196,239, 42,214,147, 0, 24,238,228,228, 52,223,195,195,195,227,221,187,119, 17,169,169,169, +235, 43,123,131,254,134,157,254, 95,127,253,245,249,205,155, 55, 19, 23, 23, 23, 36, 39, 39, 35, 40, 40,136,158, 61,123,182, 63, +165,244,147, 30, 70,134,112,150,190,191,116,218,180,105,171, 71,143, 30, 13,160, 68,208, 6, 7, 7,211,139, 23, 47,142,165,148, +134,124, 14,231,231, 64, 31,103,211, 6, 54, 13, 40, 91,183,166, 85,243, 38, 67,190,253,102, 16,121,248,244, 29, 30, 61, 12, 67, + 74, 90,218, 25,134,197, 90, 18, 19,147, 83,101,168,183, 54,156, 97, 79, 99,240, 40, 44,140,166,167,165,159, 4,101, 47,123, 19, +151,109,208,125,190, 14, 85,139, 44,192, 64,161,245, 55, 78, 90,189,208,170, 10,142,142,142,200,205,237, 32,228,112,124, 4, 2, +129, 31,139,205,190,149,151,157, 29, 4, 24, 38,180,254, 9, 59,107, 66,195,134,132, 95,221, 72,130,207,225,172,156,200,254, 57, +156,181,225, 48,148,179,186,161,210,140, 82,153,102,165,213, 62,219, 74,171, 95,131,202,156,206,206,206,147, 24,134,209,219, 74, +187, 34, 88, 44, 86, 66, 74, 74,202, 71,225, 20, 67,215,211,195,195,131,190,127,255, 30,148,210, 26,147, 41,255,211,127, 75,255, + 77,156, 33,155, 90, 58,122,181,104, 60, 63, 50, 60,106, 67,105, 88,177, 28, 43,103, 89,154,248,116,243, 93,126,255,230,237, 31, + 87,108,205,251,232, 97,232,127,218, 78, 66, 8,139,214,182,186,229, 51, 57, 9, 41,105, 18, 90, 91, 78, 30,143,183,179,125,251, +246,147, 30, 61,122,244,187, 86,171,253, 36, 92,241,185,118,126, 46,254, 19,156,132, 16,127, 54,155, 61,207,211,211,179,117, 76, + 76,204, 11,157, 78,183, 65,159,200, 50,212, 78, 66,200, 18,119,119,247,233, 60, 30, 79, 32,145, 72,242,211,210,210,150, 83, 74, + 79,252, 29,206,218,194, 16,206,166, 30, 86,109, 41, 45,111,186,189, 38,234,125,110,181, 45,144,106,205, 73, 25, 29, 67,217,171, +163,227,114,158,235,219,191, 78,104,125,140,191, 21, 58,252,167, 80, 38,148,244, 34, 45, 45, 25, 64, 50,128,147,255,186, 65,159, + 9, 67, 68, 86,109,240, 57,226,232,223,224,168,140, 82, 33, 21, 86,227,142, 6,160,178,104,250, 55,241,238,221,187,255, 83,213, + 42,255, 87,240,237,156,136, 52, 0, 65,109,253, 62,125,175, 84, 92,205,247, 27,240, 63,109,213,167,248, 28,145,245,185,156,250, + 68,150, 62,168,213,234,169,132,144,185,180, 22,213,138,255,215, 80, 42,170,244, 10,171,207,228, 93, 11, 96,237, 63,205,251, 79, +227,205,187,220,103, 0,106, 8,176,255,231, 57,255,155, 80,149, 39,171, 12,255, 99, 66,171, 14,117,168, 67, 29,234,240,207,224, +191, 89,100,213,161, 14,255,191,162,162, 87,171,162,240, 34, 0,122, 84,117, 64,109, 92,130,132,144, 42, 57,244,193, 0, 23,110, + 29,103, 29,103, 29,103, 29,103, 29,103, 29,103, 29,231,255, 49,206,255,139,168,156,159,245,209,107, 90, 90,245,244,111,124, 1, +232, 81,199, 89,199, 89,199, 89,199, 89,199, 89,199, 89,199, 89,199,249,127,249, 11,192,228,234, 94,215,133, 14,235,240,175, 99, + 91, 0,113, 2,128,153,167,169, 65,205, 77,107,187,127, 29,234, 80,135, 58,212,161, 14,255, 73, 80, 74,119, 87, 23, 58,252,143, + 11, 45, 66,136, 35, 74, 26,237, 53, 4, 16, 13,224, 30,173, 69,185,114, 21,124,214, 0,134, 17, 66,134, 2, 0,165,244, 36,128, + 19,180,134, 86, 20,101, 48, 50, 50,202, 84, 40, 20,182, 0, 32, 20, 10,179, 20, 10, 69,197, 89, 6,164,244,171, 34,104,201,105, +104,181,137,173,245,235,215,207, 84, 42,149,182, 6,156,190,144, 82, 26,193, 98,177, 34,197, 98,241,205,232,232,232, 26,199,187, + 84, 68,183,110,221,198,178,217,236, 53, 0,160,211,233,150,222,188,121,243, 64,109,142,175, 13, 8, 33, 29, 92, 28,237,247,171, + 53,106,109,102,118,222,114, 90, 77,233,246,246,254, 36,152, 67, 48,191,244,231,245,211,207,235,111, 97, 81,219,253,245,216,215, +150,203,229, 6,218,217,217,245, 73, 73, 73,121, 6, 96, 1,165,180,198,174,198,174,174,174,223,114, 56,156,111,116, 58, 93, 3, + 54,155, 29,167,213,106, 15, 39, 37, 37, 85, 89,218, 93,135, 58,212,161, 14,117,168, 67, 25,104, 53, 9,241,181, 18, 90,141,173, +137, 61, 5, 70,128,160, 39, 40,174, 17,224,216,219, 28,154, 97,232,241,254,141,137, 70,163, 45, 57, 39,143, 5,221,229, 88,214, +110,127,127,127,231,153, 51,103,162, 83,167, 78,120,244,232, 81,199,125,251,246,141,103,179,217, 17, 12,195,220, 2,240,136,234, +105, 35, 80, 6, 66,136, 8,192, 64, 0,163,250,244,233,211, 99,205,154, 53,236,102,205,154, 65, 46,151,227,246,237,219, 62,235, +215,175,223, 76, 8,185, 14,224, 8,128,115, 84, 79,111, 24,133, 66, 97, 91,166,153, 8, 33,182, 67,134, 12,121,130, 10,226,170, +116,190, 26,161,148, 62, 36,132,132,233,116,186, 71, 39, 79,158, 76,110, 76, 72,135, 41,238,188, 63,102,199,171, 62,233,153,164, + 84, 42,109,207,254,188, 22, 28,129, 0,202,226, 34,116, 28,247, 87, 21,232,181,239,231,131, 48, 90,176, 65,243,253, 86,111,142, + 0, 16,153,150,150, 22,209,181,107,215, 4, 3,151,181, 28,108, 54,123,205,149, 43, 87, 28, 40,165,232,213,171,215, 26, 0, 7, +106,203, 97, 8, 8, 33,130, 47,218,182,186,117,254,212, 81,161, 36, 47, 19,189, 7, 14, 63, 76, 8, 25, 75, 41, 61, 85,113,191, +237,125,137, 29,225, 96,254,180,181, 71,216, 0,176,125,201,168, 5,155,123,145,173, 65,161, 52,131, 16,226, 7,148,143,108,250, +153, 82,122,107,123, 95, 98, 7, 54, 22, 78, 91,123,132, 0,192,142, 37,163,230,111,239, 75,182, 76,191, 84,187,170, 74, 66,200, +244,177, 99,199,110, 93,179,102, 13,219,193,193, 1,169,169,169,189,155, 54,109,234, 73, 8,105, 74,245, 36, 17,187,187,187, 31, +247,237,249,117,253,128,161, 35,140,109,172, 45,144,150,158, 99,122,252,232,239, 83,220,221,221,251, 36, 36, 36, 12,175,221, 42, +213,161, 14,117,168, 67, 29,254, 91,240,183,218, 59,120, 59, 18, 35,169, 26, 95,115,216,228,219, 46, 29,154,117, 31,217,183, 11, +171,105,147, 70,120,243, 58,234,171,115, 55, 31,175,111,106,199,186,161,213,209, 16, 17, 15,103,195,211,244, 87,194,104,180,224, + 92, 61,123, 4, 0, 48,125,252, 40,246,147, 39, 79, 26,121,123,123,151, 55, 4,236,222,189, 59,186,119,239, 78,182,111,223,222, +234,234,213,171,173,246,238,221,171, 38,132,236,167,250,155,208, 5, 54,108,216,112,253,214,173, 91, 5, 93,187,118,133, 64, 32, + 40,127, 79, 44, 22,163,127,255,254,232,223,191, 63, 59, 45, 45,173,215,249,243,231,123,253,252,243,207, 42, 66,200, 60, 74,233, +175,213,113, 86,196,242,229,203,219, 86,177,249, 10, 33, 36, 86,171,213,190,104,217,178,101,178, 23, 33,141,166,246,237,116,109, +122,103, 15, 81,117, 60, 28, 62, 31, 7,199,150,124, 86, 87, 20, 90, 9, 55, 47, 67,108,106,146,107,108, 98, 18, 1, 32, 18, 64, + 4,165, 52, 50, 54, 54, 54,170, 9, 33,173,190,176, 96,237,223,155,167,107,105,136,173, 0,192,102,179,145,156,156, 12, 51, 51, + 51, 35, 95, 95,223,116, 66,200, 15,183,110,221,170,182,236,244, 51,209,225,135,249,211,121,249,137, 17,200,120,251, 16,115,135, +250, 24, 7,109,251,243, 71, 0,167,244, 29, 68, 8,139,245,115, 24,179, 40,168,100, 24,239,242,220,220,220,174, 0, 96,101,101, +197, 7,112,107,211, 99,244,157,211,185,134, 14,148,122,249, 9,143,205,102,255,118,240,224,193,137,223,126,251,109,201,232,136, +251,247, 33, 22,139,177,106,213,170,122,223,125,247, 93, 48,170, 25, 4,236,234,234,250,173,111,207,175,235,111,217,240, 99,211, +226,188, 66,229,174,223, 78, 60,117,108,238,197,154, 22,248,157,201, 22,181,210,222,213,213,245,219, 58,207, 86, 29,234, 80,135, + 58,212,161, 42, 84,231,205, 2,106, 16, 90, 94, 54,228, 64,151, 54, 30,195, 70,250,251, 8, 90, 52,111, 6,158,224,175, 70,209, +222,109,219,194,187,109, 91,214, 34, 73,113,207, 39, 79,195,123,254,113,245,145,210,203,134,156,136,206,166, 99, 13, 53,172,108, + 40,237,154,129,118,221,164, 5, 89, 66, 0, 16,153,219, 42,150,156,205,184,217,185,115,103, 56, 59, 59,243,110,220,184, 49, 1, +250,251,165, 44,137,142,142, 22,176,217,250,251,161, 58, 58, 58, 98,200,144, 33,240,242,242,226,251,250,250, 46,193, 95,227, 48, + 62,130, 80, 40,204, 34,132,216, 2,128,165,165,165,238,135, 31,126,120, 65,105,121,100,144, 82, 74, 31,178, 88,172, 71, 12,195, + 60, 62,119,238, 92, 74, 51, 66,108,251,121,123,221,155, 62,122,136, 49,253, 99,115,181, 34, 65, 81, 84, 84,229,118, 99,177, 40, +219, 72, 36,138, 16, 24, 11, 35, 1, 68, 0,136,116,114,114,138,106, 70,136,243, 23, 94,238, 87,183,207, 25,101,162,247,194, 74, +225,237,237,237,233,231,231, 39,212,233,116,144, 74,165,216,177, 99,135,153,145,145,145, 89,159, 62,125, 86, 0, 40,255, 3,104, + 74, 72,139,193,142,236,201, 63,164,106,103, 24,194, 91, 17,132, 16,243, 46, 29,219, 38,110, 91,183,194,180,237, 23, 93,240,238, +214, 33,228,229, 21,163,176, 64, 2,134, 97, 62,153, 48, 60,253, 18,205,220,222,159,172,223,190,120,212, 66,194, 98,145, 86,131, + 22, 96,128,125,225, 44, 66,200,107, 0, 92, 62,159, 95,182, 43,135, 16,226,216,188,121,243,245,141,190,234,130, 29, 75, 71,131, + 50, 12, 5,176,222, 80,111, 22, 33,196,214,196,196,228,220,213,171, 87, 59,180,107,215, 14,143, 30, 61, 66,124,124, 60,166, 79, +159,174,154, 49, 99, 6,111,204,152, 49,100,238,220,185, 51, 9, 33,127, 80, 74, 31, 84, 62,158,195,225,124, 51, 48, 96, 56, 95, + 82, 80,164, 80, 41,213, 42, 75,107,115, 70, 41, 85,200,114,242,139, 20,195, 71, 77, 82,189,126,254,248, 27, 0,159, 8,173,191, +179,158,117,168, 67, 29,234, 80, 7,131,209, 14,128, 13,128,108, 0, 79, 43,189, 70,233,207,168,226,117, 14, 74,162, 82, 86, 21, +184,114, 80,146,246, 99,131,146, 30,159, 79, 0,124,118,202, 18, 80,125, 87,120,160,180, 51,124,105,131,226,178, 70,197,229, 98, +193,203,134,208,232,108, 10,109, 94, 28,116,185,177,208, 21,127, 58, 62,137, 8,205, 81, 40,215, 33, 57, 46, 10, 99,131, 86, 33, + 58,187,250,142,220,254,141,137,198,140, 15,142, 9, 15,224, 25,155, 43, 71,174, 11, 13,107,219,182,173, 98, 73, 87,150,127,240, +246, 18, 79,215,220,201,163,208,113,206, 31,161,113,113,113, 90, 71, 71, 71,124,251,237,183,160,148,246,211,115,113,153,197, 79, +195,108,223,246,235,132,246,153, 85,167, 73,197,196,196,224,238,221,187, 72, 74, 74, 66,131, 6, 13, 48, 97,194,132, 44, 74,169, + 93,117,156,189,123,247,190,253,243,207, 63,119,221,184,113,227,203,131, 7, 15,118,174, 46,220,212,148, 16, 81,171,122,246, 79, +247, 6, 47,108, 64, 46,239,231,202,146,222,195,252,142,252,147,235,119,116,116,164,105,105,127,173,221, 79,158, 14, 16,153,153, + 64,100, 42,206, 28,115,245, 89,185, 39,171,244,123,180, 55, 33,166,206, 14, 86,207,142,109, 90,238,196,186,121, 92,200,219,245, + 80,175,151,199,219,219,219,211,215,215, 55,108,205,154, 53, 22,105,105,105,184,126,253, 58,234,213,171, 7,153, 76,134, 95,126, +249, 37,253,222,189,123,142,165,246,218,181,247,114,139,216,241,221, 56, 51,222,132,239, 5,250, 56,171, 2,143,195,249, 53,236, +202,241, 25,102, 2,138,130,180,120,196, 70,189,198,147, 55, 9,154,144,107, 17,186, 34,185,210,159, 82,122,179,170,227, 2,125, + 72,163, 91,105, 54,231,175,220,126,234,225,224,224,128, 41, 83,166, 32, 35, 35, 3,148, 82, 48, 12, 83, 94,165,177,100,201, 18, +120,122,122, 98,236,136, 1, 50, 65, 94,184,239,249, 55,244,153, 33,118, 17, 66,154,187,185,185, 93,189,117,235,150,157,147,147, + 19,238,221,187,135,140,140, 12,216,219,219,227,198,141, 27, 88,183,110,221,193,105,211,166, 13, 93,179,102,141,112,228,200,145, +169,161,161,161, 46,149,115,234,234,213,171, 23,117, 62,244,158,248,230,153,171,177, 22, 38,198, 16,217, 90,129, 45, 54, 85, 80, + 16,153,189,173, 5,111,248,215,221, 27, 37, 38, 38, 54,169,120,204,223, 93,207, 58,212,161, 14,117,168,195, 95,184,120,241, 34, +245,247,247, 39,101,223, 43,189,237, 79, 8,185, 80,170, 7, 84, 0,248, 21, 94,131, 16,114, 1, 0, 42,191, 94,180,104,209,146, +224,224,224,215,101,175,203,246, 89,188,120,113,179,117,235,214,173,237,216,177,227,177,176,176,176, 31, 0,188,255, 59,182,255, +237,206,240,218,148, 39,224,121,244, 1, 87,167,129, 38, 39, 26, 76,193, 7, 64,100, 15, 57, 17, 35, 55,253, 3,222,222, 59, 85, +162, 13,107,192,197,183,148, 75, 8,185, 17, 21, 21,133,183,111,223, 34, 57, 57, 25,198,198,198,159,236,119,255,254,125, 24, 25, + 25,193,193,193,193, 16,243, 64, 85, 31,207, 99,141,240,118,131,184, 99, 87,228,140,156,138, 27, 55,110, 32, 43, 43, 11, 60, 30, + 15,124, 62, 31, 90,109,181,195,221,203,193, 98,149, 76,252, 45,243, 98, 85,181,143, 47, 33, 28,103, 75,241,249,237, 43,102,187, +179, 30, 94,224,202,147,222, 35, 77,161,131,185, 1,246, 26,137, 69, 48, 22, 25,167, 27, 25, 25, 87, 22, 89,239,188, 9,225,138, +196,194,243,251, 87,207,181,103, 63,191, 33,148,191,143, 0,175, 10,142,158, 61,123, 78, 1,176,130, 82, 90,224,235,235,107,183, +102,205, 26,139,212,212, 84,188,121,243, 6, 39, 78,156,200,214,150, 92, 40,161,148,174, 4,128,142,132, 8, 93,109,204, 67,127, +253,126,182, 9,110, 29,231, 99,194,247, 6, 88,250, 49,204,154,244,191, 56,120,204,180, 25, 91,103,247,135,180, 88,142, 35,215, +158,227, 74,120,236, 0, 0,247,245,229,189,253,122,159,190, 39,132,116, 15, 8, 8,120,113,247,238, 93,235,189,123,247, 66,171, +213, 86,249,181,119,239, 94, 92,191, 23, 62,139, 82,131, 69,150,163,187,187,251,245,199,143, 31,219, 24, 27, 27,227,218,181,107, + 40, 40, 40, 40,247,100,141, 29, 59,150, 20, 20, 20,140,216,177, 99,199,224,196,196,196, 13,247,238,221,203, 69,201, 56,168,143, +254, 16,216,108,118,172, 86,171,110,236,208,164, 17,103,104,255, 46, 93, 36,185, 17, 16, 91,181,196,195,151,177,231, 11,242,115, +229,108, 54, 59,182,226,254,255,196,122,214,161, 14,117,168, 67, 29,106,135, 50,113, 85, 81, 56, 85, 22, 92,101, 63,151,237, 23, + 28, 28, 92,254,186,236,152,117,235,214,173,173,240, 90,246, 79,216, 86, 83, 50,188, 47, 33,132, 2,240,173,106, 39,229,155,211, + 80,190, 61, 7,158, 91,103,240,189, 6,128,237,230,131,164,136, 91,120,121,121, 19, 82, 94,223, 7,101,116,112,240,108,111,168, + 45,138,198,141, 27, 67,161, 40, 73,205, 82, 42,149,224,137, 44, 20,115, 39,143, 18, 2, 0,195, 17,150,171, 38, 61,133,124, 31, +193,164,179, 31,218,103, 82, 60,177, 43, 17,192,101,158,173,213,227,198,129,199,227,129,199,227,149, 15,159, 53, 68,104,149, 14, + 69, 5, 83, 18,190,250,196, 8, 66, 8,105, 43,224, 30, 57,182, 34,176,189, 32, 49,146,175,124,245, 16,105, 74,134,158,207,212, + 93, 52,100,114,178,177,200, 56,213,200,216, 56,210, 72, 44,170, 40,180, 98, 1,128,114,185, 33,135, 86, 6,182, 20,101,198,137, + 20, 79,111, 32, 93,193,168, 77,171,166, 89,121,249,242,101, 91, 14,135, 99,175,211,233,144,148,148,132,215,175, 95, 99,203,150, + 45,153,197,197,197,190,225,225,225, 49, 21,236,101,181, 51,226,159, 8, 89, 53,187, 62, 39,226,142, 80, 25,251,170, 74,241,166, + 15, 54, 45, 6,245, 26,224,219,234,226,148,209, 75,241,117,223,175, 48,198,183, 41, 77, 72,203, 83, 0,184, 70, 13, 24, 96, 77, + 41, 77, 37,132,244,252,242,203, 47, 15,183,110,221,186, 9,165, 20, 45, 90,180,192,136, 17, 35, 16, 18, 18,130,151, 47, 95,162, +168,168, 72,125,245,234,213,205,148,210,125, 53,241,149, 94,151,177,133,133,197,149,155, 55,111,218, 24, 27, 27,227,234,213,171, +144,203,229,112,112,112,192,140, 25, 51,248,235,214,173, 59, 88, 84, 84, 52, 52, 56, 56, 88,152,144,144,240,107,104,104,104, 61, + 0, 44, 74,233, 39,127, 4, 42,149,106,247,145,144, 3, 91,103, 4,206,116,186,249,232,205, 13,165,164,216,204,205, 45,185,200, +198, 66,108,178,249,167,149,174, 42,149,106, 74,133,243, 86, 88,207,219,159,181,158,117,168, 67, 29,234, 80,135, 79,224,123,241, +226,197,106,181, 8,240,151,120,170, 44,182, 12, 65, 5, 17, 38, 95,180,104,209, 18, 66,200,133, 82,143,151, 28,192,167, 33,187, +171, 38,142, 66, 0, 0, 32, 0, 73, 68, 65, 84, 90,160,198, 28, 45, 74,233, 29, 66, 8, 40,165,119,170,101, 97,116, 80, 39,220, +133, 58,225, 46,140, 58,206,194,159,193, 35, 43,157,228,243, 71,132,245, 95,117,237,166, 82,169,228, 28, 56,112,160, 60,111, 11, + 0,116,186,154,199, 35,214, 22,181, 17, 90,165, 66,239, 19, 35,220, 5,226, 59,187,231, 12,253,194, 74, 39,227,170,238,159, 71, +170,146,209,110,120,175,150, 61, 45,160, 63, 47,169,134,243,108,208, 20, 36,223,187, 14, 99,177, 56,121,226,221,200,138, 94,172, + 8, 0,241, 0,224, 46, 52,189,113, 98,238, 72, 31,123, 30,120,170,139, 39,145,166,100,148, 59, 19, 53,251,182, 84,193, 87, 22, +110,139,143,143,135, 76, 38, 67, 88, 88, 24, 78,157, 58,149, 93, 89,100,149,218,123,251,247, 5,223,116, 48, 45,206,224,169,158, + 94, 71,154,146, 81,122,214,184, 10,128, 77,203, 65,157,121, 44,114,149,176,216, 70,125,187, 52, 69,208,164, 65,216,244,251,159, + 90,149,109,151,126, 91,207, 93, 26, 38, 81,170,151, 24, 34,178, 42,216, 28, 1,160, 41, 33, 68, 0,192,111,196,136, 17,151, 6, + 15, 30,140, 59,119,238,224,252,249,243, 30, 0,210, 1,128, 16,178, 10,128, 29, 74,170, 17,171,155, 28,207,226,241,120,199,174, + 95,191,222,204,209,209, 17,215,175, 95,135, 92, 46,199,180,105,211, 84,129,129,129,188,177, 99,199,146,194,194,194,114, 79, 86, + 88, 88, 88, 46,170, 17, 89, 0,144,146,146,114,217,205,205,173,211,151, 95,126, 57,168,190,135,151,105, 92,113, 81,150,177,177, +208,232,222,157, 91,188,167,143, 31,252,154,146,146, 82, 62,180,245,227,245,188, 97,240,122,214,161, 14,117,168, 67, 29,170,135, +191,191,255,157,139, 23, 47,194,223,223,255,142,190,253,244,165, 19, 25,120, 28, 55, 56, 56,248,117,112,112,240, 71, 30,175,191, +131, 42, 66,135, 23, 41,165,233,192,103,246,209,210, 21, 38,125,178,141, 50,134, 11,173,170, 60, 85, 22, 22, 22, 90, 35, 35,163, +143,132, 22, 99, 32,103,222,153,163,136,155, 62,170,220,147, 85,230,217, 66,239,177,159,236, 91, 75,143, 86, 24,128,143,140, 16, +217,121,141, 60, 54,186,103,231,166,245,157, 88,154, 19, 91,144, 34,211, 42, 86, 68,171, 21,111,139,233,128, 55, 85, 36, 89,151, +115,106, 53, 16,138,140, 62, 24,137, 69,149, 69, 86, 34, 0,136,237, 61, 7, 31, 28,233,231,219,202,171, 33, 75,123,252, 23,164, +202, 52,146, 69, 81,106,117,156,148,158,174,138,143, 82,186,226,171,175,190, 90, 97,101,101, 37,220,186,117,171,153,155,155, 27, +180, 90,173,170,178,200, 18,217,121,141, 60, 62,182,119,103, 79,123, 11,150,230,143,109, 72,150,235,100, 91,226, 52, 7,119,214, +176, 6, 54, 45, 7,117,182, 54, 19,135,238, 92, 59,221,200, 88,192,133, 66,161,192,186,237,127,224,234,131, 87,253,178, 35,207, +132, 2, 8,173,129, 66, 31, 38,246,235,215,111,211,170, 85,171,160,209,104, 48, 97,194, 4,196,198,198, 94,141,142,142,222,226, +234,234, 58,111,193,130, 5,142,246,246,246, 24, 54,108, 24, 15,192,216,106, 56,126, 58,114,228, 72,191, 86,173, 90,225,206,157, + 59, 40, 40, 40,128,131,131, 3, 2, 3, 3,249,193,193,193, 7,139,138,138,134,174, 93,187, 86, 24, 31, 31,175,215,147, 85, 17, + 58,157,110,245,174, 77,211,231,181,251,194,135,245,254,125,140, 54,169,125, 87,214,173,235,231,239, 90, 89, 89, 29, 44,219, 71, +100,231, 53,242,248,184, 62,181, 94,207, 58,212,161, 14,117,168,195, 63,134,139, 0,252,203, 94, 84,244,110, 85, 20, 97,101, 30, +171,138,175, 43,239, 95,250,254,199,249, 71,159,129,202, 30,173, 82,225,245,113,142, 86,197, 36,248,154,192, 72,179, 63,217,102, + 72,152,207,191, 49,209, 76,105, 7,206,146,174, 44,240, 68, 22,138,254,171,174, 85,153, 60, 13, 0, 34,145,200, 96,143, 22,163, + 84,232,125,159, 84,232, 24, 80,139, 28,173, 43,148,210,143,132,150,185,189, 87,215,101, 11,103,111,246, 25,220,155,149, 57,169, + 35, 10, 36, 74,229,130, 55, 90, 38, 69,166, 95,100, 1, 0,116,154, 4, 99,145, 56, 82, 40,250, 40, 47, 43, 9, 0,140,236, 26, +181, 95, 52,103,230,246,110, 35,251,147,236,105, 62,200, 47,144, 43,231,189,214,146, 84, 57, 29,250,134,210, 91, 85,209,221,184, +113, 99, 23,128, 93,190,190,190,153, 34,145, 8, 18,137,228,147,223, 65,153,189,157, 7,247,102,101, 78,236,128, 60,169, 90,185, +224,181, 22,105,114,230,152, 62, 83,109, 90, 14,234,108, 99,110, 18,186,115,205,116,227,180,148, 68,240,120, 60,136,197, 98, 92, +187, 31,137,236, 87,103,255,142,192, 2,155,205,254, 97,201,146, 37, 43,102,204,152,129,220,220, 92,156, 63,127, 30,125,251,246, +197,209,163, 71,221, 46, 93,186,180,201,207,207, 15,108, 54, 27, 23, 46, 92,128, 70,163,121, 87, 21, 7, 33,100,208,228,201,147, +231, 13, 30, 60, 24, 79,158, 60, 65,122,122,250, 71,158,172,130,130,130, 17,219,183,111, 31,156,144,144, 80,163, 39,171, 18,218, +187, 55,108,195, 91,188,124, 35,148,178, 44, 78,118,234,163, 59, 55,174,177, 30,230,229,229, 25, 3, 40,252,220,245,172, 67, 29, +234,240,255,216,251,238,240, 40,170,239,253,247,206,246, 77,239,101,129, 4, 76, 76, 72,129, 0,129, 64,232, 65, 80, 48,160,136, + 32, 82, 4, 27,168, 84, 41, 18, 64,164, 67,148, 14,162,128,138, 20,169,210,164, 75, 51, 81,122, 79, 2,161, 10, 73, 72, 66,122, +207,102,219,204,253,253,177,217,117,217,108, 11,224,239,171,126,246,125,158,121,118,103,238,189,239,156,153,217,157, 57,115,206, +185,231,216, 97,135,109, 48, 17, 4,175, 67, 65,173, 18, 85, 96,106,221, 64,193, 50,181, 78,140,172, 96, 74,163,246,107,207, 75, +126, 83,176,201,162,197,247,109, 6, 77, 94,170,126,157,171,202,127,162, 93,226,236, 97,147,235, 80,173, 1,127,205,122,125, 30, + 45, 73, 81, 81,145,196,203,203,171,198, 80, 65,112,112,112,128, 76, 38, 67, 73, 73, 9,214,173, 91, 7, 0,214,130,162, 53, 46, +111, 14, 69,204,160,247,113,177,161, 8, 84,173,210, 91,182,214,188,251,174,190, 19, 33, 4, 66,161, 80, 23, 27,102,237,161,123, +158, 16,242, 16,192, 89, 74, 41,141, 14, 13,154, 43,113,116,124,183,117, 84,176,215,248, 79, 62, 16, 60,200, 87,224,100,199,169, +165, 63,127, 57,197, 41,139, 58,141,202,160,165,150,149, 44,224,254,235,223,110, 54,182,100, 61,106, 21, 26, 52, 93,226, 32,249, +176, 93,179, 80,191,132, 9,159, 8, 30,228, 41,200,201,152,207,202,119,125,245,153,195,159,112,158,148, 69, 75, 76, 42, 89, 70, +152,249,234,171,175,206,164,148, 82,142,227,102, 0,128,161,188, 19, 70,127, 40,184,255,184, 6, 39, 58, 78, 47,217,245,229, 20, +231, 44, 88,150,215, 59,234,141, 14,190,238, 46, 71,215, 44, 24,229,144,155,157, 1,177, 88, 12,103,103,103,100,229,149, 65,192, +231, 89,204,147,102, 13,132, 16,113,151, 46, 93,166,124,242,201, 39, 72, 73, 73,193,199, 31,127,156,155,153,153,185,123,251,246, +237, 31,127,241,197, 23,252, 87, 94,121, 5,185,185,185, 88,180,104,145,250,143, 63,254, 88, 0, 96,145, 41, 30, 62,159,255,193, +220,185,115,105, 78, 78, 14,249,243,207, 63,225,239,239,143, 49, 99,198,136, 22, 44, 88,160,143,201,170,143, 37, 75,135, 71,143, + 30, 37,133, 4, 7,224,181,195,203,161, 81, 43,146, 74,139, 50,147,211,239,151, 36,121,136, 68, 19, 59, 70, 71, 61,213,249,180, +195, 14, 59,236,176,227,185,224,162,149,245,255, 83,152,114, 29,234,190, 88, 83,180,238,172,154,254, 94,200,123,163, 38, 67, 26, +216, 1,138,155,123,192, 85,230,233, 45, 90, 18, 39,119,120, 4,132,163,180, 74,129,157, 39, 46, 3,128, 73, 11,132, 57, 84, 84, + 84, 32, 58, 58, 26,171,135,135,118,171,169, 40,146, 72, 1, 40,196, 46, 53,123, 69,157, 78, 30, 58,116,168,154,227,184,109, 0, + 14, 89,161,153, 21, 25, 25,249,245,146, 37, 75, 68,225,131,222, 67,229,185,223,159,104,100, 24, 6, 82,169, 20, 98,177, 24,215, +175, 95,199,201,147, 39,149, 0,102, 89, 34, 36,132,156,215,104, 52,215,182,109,219,246, 40, 36,168, 97,207,174,109, 98,198, 78, +155,154,224,124,227,247, 95, 49, 99,193,215,220,139,173, 95, 41, 75,220,186,183,162,204, 41,224,165,234,156,244,171, 54, 28,234, + 53, 60,169,100,229,132,191, 16,208, 45,182, 85,203,201, 51,102, 76,119, 73,251,253, 24,190,248,106, 13, 13,105,209,189,236,171, + 93,251,202, 11, 29, 26,191, 44,207,187,121,193, 50,165, 22,191,253,246,219, 90, 0,107,117,235,198,242, 38,204, 89,193,133,182, +233, 89,146,184,117, 87, 85,185,115, 64,119, 75,242,250, 68,244,107,223,200,223,227,232,170,121, 31, 57, 60,206,206,132, 88, 44, +134,147,147, 19, 50,115, 75, 49,115,249,142, 42, 21,199,245,180, 69, 38, 11, 16, 59, 59, 59,139, 85, 42, 21, 86,175, 94,141,204, +204,204, 88, 74,105, 38, 33,100,205,192,129, 3, 87, 54,111,222, 60, 44, 45, 45,237, 78,101,101,229, 40, 74,105,186, 57, 18, 55, + 55,183, 88,111,111,111,114,246,236, 89,124,244,209, 71,202, 49, 99,198, 8,135, 13, 27, 70, 74, 74, 74,158,214,146, 5, 0,104, +216,176, 97,151,215,227,219,163, 67,143,143,147,148, 53,165,201, 15,210, 55, 38, 49,244,180, 36,186,101,212, 83,157, 79, 59,236, +176,195, 14, 59,254, 55, 96, 41, 24,222, 98, 53,234, 46, 0, 63,212, 19, 35, 35, 27, 8, 31,111,250,114, 12,173,184,127,134,202, + 47,172,165,229,123, 62,164, 7, 23, 13,163,135, 86,141,167, 31,199, 71,210, 48, 31,242, 56,212, 19, 35,187, 0,124,250,100,245, +234, 39,170,123,191,218, 20,234, 30,193,160, 61,130, 65,227, 67,161, 6, 48,173, 85,171, 86,123, 71,199,128,210, 27, 91, 40,189, +177,133,142,142, 1, 5,240, 17, 0, 39, 83, 50, 25,115,214,110,243, 7,176, 46, 58, 58, 90,115,234,212, 41,122,107, 64,119,122, + 37,204,139,142, 26, 53,138,126,241,197, 23,116,240,224,193,212,219,219, 91, 3,173,191,212,223, 26,231,107,175,189,214,144, 82, +138, 70,141, 26,185,181, 14,127,241,241,245, 19,251,105,242,166,149,244,135,209,253,104,219,230,225,133,126, 97,157,175, 73,253, +155,182,180,116,238, 12, 57,253,252,252,166, 82, 74,123, 82, 74,253, 41,165, 8, 9,241,116,106, 21,246, 98,206,181,227,251,233, +239,155,191,166, 63,140,238, 71,219, 69, 69, 20, 53, 12,143, 75,151,248,132,197,216,194,105,106, 49, 41,111,179,176, 66,223, 23, +219, 95, 53, 39,175, 33,231, 11, 49,111,237,123,148,147, 71,207,159, 63, 79, 15, 29, 58, 68,127,255,253,119,186,105,251, 62, 26, +208,102, 64,165, 87,243,190, 29, 44,237,219, 22, 57, 1,184,198,199,199,211, 59,119,238,208, 94,189,122, 81, 0,174, 79,195, 9, + 96,239,131, 7, 15,104,106,106, 42,157, 54,109, 26, 5,176,225,147, 79, 62,145,151,149,149,209,238,221,187,103, 2, 96, 96,244, + 91,180, 85,206,160, 38, 13, 18,223,232,211,105,214,232,143,222,236,242,172,231,243,121, 45,118, 78, 59,167,157,211,206,249,191, +192,249,111, 94,106,245,144, 17, 6,159,173,116,109, 22, 45, 90,191,105,173, 1,107,155,251,146,159, 22, 44, 90, 53,113,245,218, + 13,147,167,140,253,192,177, 83,199, 30, 72, 57,254, 35,118, 29,216, 94, 85,163, 80, 46, 18,242,176, 36,165,144, 90,205, 67,113, + 48,157, 10,140,183, 17, 66, 28, 60,130,161,207,193,116,183, 4,160,148,214, 43,182,152,106, 35,251, 71, 16, 66,150,196,197,197, +205,255,176, 67, 76,191,209,237,187, 65,173, 86, 99,211,166, 77,200,200,200,216, 13, 96, 58,165,212, 38,139, 91, 74, 74, 74, 97, +228,139,141,199,121, 72,133,147, 71, 13,126,195,187,224,222, 13, 60,186,121, 5, 0,160, 80,200,213,185,183,147, 90,212, 71, 62, +169, 84,122,222,219,219,251,150,183,183,119, 9,171,168, 28, 33,225,187,204,248,248,237,215,125,138, 30,164, 35, 43, 77,235, 25, + 85,212, 84,171,178,110,159, 12,171, 15,175, 14,141, 27, 55, 22, 59, 10, 48,210,164,188,202, 26,245,227, 59, 55, 91,218,194, 83, +173, 80, 46,152,189,108,211,203,243, 38,191, 43,118,113,113,193,229,212,187,152,177,116,107,149, 92,169,238, 89,112,125,207,115, +113,143, 81, 74,161, 86,171,109,158,232, 96, 6, 83, 90,180,104,209,116,254,252,249, 33,195,135, 15,199,179, 90,178, 12,113,239, +207, 71, 9, 93,187,118,141,184,123,235,114,156,135, 84,248,211,179,156, 79, 59,236,176,195, 14, 59,254,103, 16, 79, 41, 93,167, +203, 16, 95,235, 74,188, 2,216, 24,163,149,146, 71,171, 1,204, 9,242, 37,107,166,206, 95, 54,147, 33,203,223,229, 40,253, 81, +195, 96,246,253, 66, 90, 55, 50,190, 30,160,148, 86,199,135, 17,205,203,125, 7,243, 1, 64,192,183, 26, 63,101,137,235, 14,128, + 55, 9, 33,109,190, 59,125,225,243,218,205,243, 40,165,245,242,229, 58,243,145,218, 49, 34,168, 65,167, 86,145, 18, 30, 43,199, +163,155,247, 80, 92, 85,131, 99,105, 25,165, 12,101,126,172,175, 92,247,239,223,255, 13, 0,154,189,216,248,102,167,136,224,128, +206,209,145, 14, 2,162,196,163, 27,151, 81, 38, 87,226,215,180,140, 50, 16,242,212, 1,213,207, 75,222,199,215,247, 94,244,142, +122,163, 59, 33,228,248,180,209,131,196, 51,151,110,123,174, 74, 22,128,234,236,236,236,162,234,234,106,207,156,156, 28, 37,158, + 50, 73, 28,165,244, 46, 33,164,249,248,241,227,231, 76,154, 52,105,242,151, 95,126, 41,124,154,152, 44,115, 40,201,206,216,211, + 57,242,249, 93,127, 59,236,176,195, 14, 59,254,251,208,197,105, 25,199,107,213, 43,189,195,253, 60, 90, 0, 96, 84,112, 48,153, +112,239, 30, 85, 62, 47,225, 76, 89,186,158, 5,181,138, 85,159,167, 38, 96, 72,197,185, 59, 25,149,231,239,100, 84,130,163,148, +163, 84,193, 48,200,170, 82,169, 22,220,190,255,232,233,103,221, 17,194, 94,188,155, 41,191,116, 47,171,134,114, 28,229, 40, 85, + 18,130,199,106, 53,183, 32,245,254,195,125,255, 4,121, 11,174,239, 57,237, 23,209,175,211,233,243,169, 19,170,170, 84, 95, 23, +220,216,115,230,169,229, 50, 2,165, 84, 77, 8, 25, 18, 27, 27,251, 30,203,178,107, 40,165,234,103,224, 82, 2,152, 66, 8,217, +157,146,146,178,227,204,153, 51,185,120, 14, 74, 22,128,191,239,250,219, 97,135, 29,118,216,241,159, 4,125,218,162,210,230,240, + 60,149,172,127, 34, 82,238, 60,136,254, 59,120, 83,239, 60,104,246,119,240, 62,111,121, 31,223,216,125, 9,192,219,207,147, 83, + 7, 74,233,175, 0,126,125,142,124, 23, 9, 33, 77, 0,240,158,139,146,133,191,239,250,219, 97,135, 29,118,216,241,223,196, 51, +215, 58,180,195,142,127, 50,168, 54, 18,241,185, 40, 89,118,216, 97,135, 29,118,216, 81, 95, 88,178,104, 17, 0,221,205, 12, 58, +110,235, 14, 8, 33, 38, 57,172, 8,101,145,223,206,105,231,180,115,218, 57,237,156,118, 78, 59,231,127,143,243,191, 8, 66,136, + 63,180,217,234,245, 89,235,245,202,215,223, 60,221,241, 95, 49,165,212,206,105,231,180,115,218, 57,237,156,118, 78, 59,231,255, + 45,231,191,121, 1, 48,194,240,211,112, 97,158,135, 38,103,135, 29,118,216, 97,135, 29,166, 64, 8, 17,215, 22,146,127,170,118, + 59,236,248,183,192,112,214,161, 97,204, 86,189, 99,180, 8, 33, 47, 2,218, 41,246,207, 79,188, 58,251, 24,237,239,239, 63, 34, + 42, 42, 42, 92, 40, 20, 50, 21, 21, 21,179, 79,158, 60, 57,203,184, 95,231, 72,193, 37, 30,131,134, 6, 35, 1,194, 3, 24, 6, + 44,197,163,228,107,213,173,255, 46, 25,237,120,118, 16, 66, 2,165, 46,222,191, 16,134, 39, 98, 53, 42,176,106, 21,128,191,202, + 49,113,156, 38, 67,163,172,121,197,220,120,255,150,253, 2, 52, 44, 77, 4,184,111, 8,152,143, 41,184,111, 9,101, 62,166, 12, +190, 33, 28, 62, 2, 95,189, 8, 26,193, 36,190,144, 63, 61,231,242,206,172,255, 31,199,244,119,227,231,159,127,230, 61,203,248, +254,253,251,155, 44, 32,218,160, 65,131, 3, 14, 14, 14,193,230,198, 85, 85, 85,229,230,228,228,196, 61,203,190,255,233, 32,132, +116, 6,176, 10, 64,164, 81, 83, 58,128,113,148,210, 19,207,186,143,174,132,240,125,129,145, 66,224, 51, 0, 80, 1, 95,229, 1, +107,127,123, 78, 19, 57,158, 7,124,124,124,146,249,124,126, 72, 85, 85, 85, 85,121,121,121,144,139,139,203,125, 71, 71, 71, 71, +141, 70,115, 39, 63, 63,191,115,125,184, 8, 33,159,160,182,148, 22, 33,100, 50,165,244,155,250,180,219, 97,199,191, 5,244, 89, +102, 29, 18, 66, 66, 1,116,169, 93, 58,183,105,211,198,183,170,170, 10,132,144, 60, 0,201, 0,146, 0, 36, 81, 74,111, 63, 15, + 97,121, 60,222,226, 21, 43, 86, 76, 28, 51,102,140,190, 24,244,245,235,215, 77,247,101,208,240,212,254,227, 62, 23, 83,110,163, + 77,247,254,208, 42, 90, 12, 80,149,139,184, 30, 49, 79,181,127, 66,136,179,187,187,251,108, 66,200, 0,134, 97,172, 62,212, 56, +142, 99, 41,165, 59, 75, 74, 74,102, 82, 74, 43,234,179, 47, 39, 71,137, 90,195,178, 38,247,193,231,241,216,202,170, 26,179,105, + 47, 60, 61, 61,207, 48, 12,243,130, 97,193,236, 90,249, 77,126, 55, 92,215,104, 52,143, 10, 10, 10,172, 42,161,132, 16, 9,195, + 23,142, 35, 68,216, 3, 12, 23, 10, 16, 16, 48,183, 57, 86,121,140,211,168, 86, 80, 74, 45, 87,243,182,204, 29,232,223, 40,232, +247, 79,167, 39, 54, 76,189,153,142,105,163, 7,227,203, 85, 27, 48,117,220,123, 88,177,110, 43,198,141, 24,132,136, 8,227,231, +221,147, 96, 41,153, 61, 99,220,144,184,249, 43,182,180,153, 62,110,176,227,252, 21, 91,218, 76, 31, 63,216,105,254,202, 45,173, +167,143, 31,226, 52,111,229, 79,173, 63, 31, 63,196,101,254,202, 45, 42, 0,239, 63,141,156,131, 67, 27, 84, 17,141,198,228,219, + 54,229,243, 21, 91,110,103, 59, 62, 13,239,179, 98,248,240,225, 81,114,185,252,242,224, 30,173, 18, 91,134, 54,200, 54,213,167, +232,113,118,131,251,183,174, 36, 8,132,210,232,215, 19, 54,152,254, 19,213, 66, 44, 22,191,144,158,158, 30,194,113, 28, 88,150, +133, 70,163,209,127, 42,149, 74,116,238,220,249,185, 76,156, 33,132,244, 1, 48, 27,218,248,208,133,148,210, 29,207,192,229,196, +231,243, 63, 21,137, 68, 93, 52, 26, 77, 56, 0, 8, 4,130,155, 10,133, 34, 73,163,209, 44,163,148, 86,214,147,114,121,118,118, +118,132,147,147, 19, 84, 42,149,190, 0, 61,143,199, 11, 11, 8, 8, 88, 13, 32,228,105,101,213,193, 23, 24,217,190, 99,199, 21, +195, 38, 78,228,201,147,147,177, 98,253,250,229, 40, 47, 7,128,213,214,198,138,197,226,163, 12,195, 4,214,103,127, 28,199,101, + 40, 20, 10,179, 47, 43,166,192,231,243, 67,114,114,114,124,100, 50, 25, 0,192,209,209,209,209,112,221, 86,212, 90,169, 22, 81, + 74,165, 0,192, 48,204,138,246,237,219,199, 18, 66, 52, 0, 40,199,113, 12, 33,100, 16,199,113,252,218,254,139, 8, 33,235, 41, +165,138,122,237,200, 14, 59,254, 1,208, 37, 42, 53,213,102,246,230, 73, 8, 57, 4,160, 75,155, 54,109,164,111,191,253, 54,186, +116,233,130,144,144, 16, 72, 36, 18, 0, 64, 81, 81,145,239,213,171, 87,223, 74, 78, 78,126,107,255,254,253, 32,132,200, 1,252, + 65, 41, 53,249,167,238,222,167,211, 24,137,147,120, 37, 0, 20, 60, 42,202,125,244,103,254,202,220,220,220, 69,212,160, 26, 53, + 33, 36,104,216,176, 97, 19,198,142, 29,139, 3, 7, 14, 96,235,214,173, 80, 40, 20,168,168,168,192,201,147, 39, 77, 11, 90,157, +143,146,147,137,128,227, 3, 32, 51, 9,112,240, 1, 28,125,109, 59, 51, 38,224,238,238, 62,123,220,184,113,227, 35, 34, 34, 64, +169, 54,139,185, 90,173,134, 70,163,129, 90,173, 70, 73, 73, 9, 38, 76,152, 0, 64, 27,223,198,113, 28, 14, 31, 62, 60,102,196, +136, 17, 0,240,169, 41,206,216,214, 1,151, 24,194, 52,212,217,106, 40,203, 62, 58,123, 37,171,181,134,101,121, 53, 53, 42,147, +149,202, 37, 18,161, 69, 37, 79, 32, 16, 52,188,241,203, 47, 62,140, 72, 4,202,178, 0,199,129,114, 28, 0,131,133,106,183, 81, +150, 3, 85,179,224, 52, 28, 52,114, 5, 98, 62,249,196,234,121, 32,132,180, 23,136,164, 91,135,124, 56,209,175,109,187,118,130, +198,141,100,208,176, 28,238, 61,120,228,119,249,210,185, 14, 59, 55,174,254,152, 16, 50,136, 82,250, 84,121,182, 68, 14, 46,191, +126,253,237,119, 13, 47, 94, 77,197,137, 83,201, 56,126, 50, 9, 0,112,244,148,150,142, 97, 44,123,181, 9, 33,238,158, 33,113, + 81, 99,222,235,235, 56,111,201,247,226, 49,239,245,229,255,245,249,157,120,204,123,175,243,231, 47,251, 78, 60,230,189,215, 5, +115,191,250,186, 37, 33,196,157, 82, 90, 98,142,207,220, 53, 34, 26,141,248,167,251,121, 60, 0, 40, 88,179, 6,234,252,124,200, +102,206, 4, 0, 12, 9,242,181,217,221,225,237,237,125, 73, 32, 16, 52,180,214, 79,173, 86, 91, 85,130,135, 15, 31,222, 66, 46, +151, 95,210,104, 52,148,207,231, 39, 12,126,227,229,189, 61, 59,181, 40, 50,236,115,253,250, 53,207, 5, 11,126,233,187,227,114, + 5,125, 43,218,249,242,129,197,195, 91,247,158,180,193,108,133,122,142,227, 24,133, 66,129, 59,119,238,232,226, 13,140, 97,210, + 18,102, 13,132, 16, 6,192, 10, 79, 79,207,182, 69, 69, 69, 67, 0, 76, 43, 47, 47,143,226,241,120,240,240,240,152, 70, 8,185, +231,234,234,250,125, 89, 89,217, 25,104,173, 70, 54,149, 12, 32,132,116,118,113,113,217,180,103,207, 30,247, 86,173, 90, 49,133, +133,133,104,210,164, 9,138,139,139, 99,146,147,147,163,223,127,255,253,247, 9, 33,239, 80, 74,147,235, 33,110, 83, 7, 7, 7, + 58,108,216, 48,194,178,127, 29,238, 15, 63,252,128, 87,154,105,130, 63,234,233, 88, 93,163,164,101, 39,238,184,126, 36, 20, 10, +255,120,248,240, 97, 89,189, 78, 6, 0, 33,240,217,176,137, 19,121, 78, 15, 31,194,233,218, 53, 12, 41, 47,231,127,169,181,110, + 89, 85,180, 24,134, 9,220,180,245,199, 16,145, 72, 4,141, 70,163, 87, 6,117,247, 40,181, 90, 13,149, 74, 5,181, 90, 13,150, +101,161, 86,169,177,112,222, 87,245, 21, 81, 15, 7, 7, 7, 7,153, 76,150,231,224,224,224,240,212, 36, 6, 16,139,197,252,141, + 27, 55, 14, 18,137, 68, 0, 0,165, 82,137,102,205,154,153,188,255,217, 97,199,191, 17,198, 41, 30,168, 13,233, 29,122,149,151, +151,131,101, 89, 56, 59, 59,131,199,123,242,185,239,233,233,137, 30, 61,122,160,115,231,206,120,251,237,183,113,227,198, 13,233, +219,111,191,221,195, 28,217,224,137,189,209, 40, 68,171, 0,169,213,156,255,233,131, 87, 19,127,152,251,179, 55,128,137, 6,221, +222, 31, 57,114, 36, 41, 42, 42,194,128, 1, 3,146, 21, 10,197,107,148,210,114,115,156, 44,135, 71,113,111, 15, 1, 71,137,116, +217,249,239,136,178, 70, 78, 25,134,145,235, 92,135, 22,142,205, 44, 8, 33, 3,100, 50, 25,182,109,219, 6,165,178,110,186, 48, + 23, 23, 23,164,165,165,233,215,121, 60, 30,218,181,107,199, 35,132, 12,128, 25, 69,139, 16,166,225,233,139, 15,125,116,235,189, +123, 68, 10, 99, 91, 7,230,121,123, 58, 83, 0,100,250,244,233, 0,160,127,192,205,158, 61,219, 22, 57,193, 8, 4, 40, 72, 74, +210,111, 99,248, 12, 24, 33, 1, 17, 0, 12, 95,235, 69, 5, 5, 40, 11,112, 26,128, 83, 3, 18,255, 70,182,112,199, 52, 8, 8, + 57,176, 96,233, 55,110, 10, 53,197,182,125, 39,240,224,193,159,224, 49, 12,130,130, 67,240,114,215, 78,130,232, 54,177,141,190, +154, 53,113, 63, 33,164, 23,165,212,166, 2,216, 79,128,163,146,224, 0, 47,124,255,195,101,120,187, 59, 97, 64,223, 87, 33,149, +136,241,229,170, 31, 49,111,234,104,132, 4, 5, 98,237,242,249,102,135,187,186,186,206,105,213, 60, 44,232,199, 29, 71,208,165, +115,123,254,134, 29, 71,209,181,115, 7,254,143, 59,142,160,107,151, 78,252, 13, 59,142,160,107,231,142,130, 13, 59,142,160, 93, +235,230,193,103,138,174,207, 1, 48,218,252, 49, 27, 93,163,151,181,215, 40,132, 47,212, 63, 8, 30,126,252, 49, 0,232, 21,173, +250, 64, 32, 16, 52,204,201,201,241,177,214,207,154,213,160,214,146,117, 73,163,209, 32, 63, 63,159,148,150,150, 82, 55, 55,183, +190, 71,214, 78,219,243, 74,199, 22,197, 0,112,237,218, 53,143,133, 11, 23,244,221,126,169, 28,242,115, 95,147,159,126, 73,226, +134,188,214,229,210,190,196,225,209,253,251,247,191, 98,138, 87,161, 80, 60,104,217,178, 37,173,253,222, 64, 44, 22, 11, 13,219, + 9, 33,178,144,144,144, 58, 86,107, 27, 92,138, 43,206,158, 61, 59, 58, 34, 34, 2, 97, 97, 97,103,218,182,109,235,226,232,232, +136, 35, 71,142, 32, 60, 60, 60,210,197,197,229,252,206,157, 59, 5, 83,166, 76,105,177,126,253,122, 0, 24, 99,249, 12,105,103, + 65,197,197,197,109, 59,112,224,128, 68, 40, 20, 66, 46,151, 35, 45, 45, 13,174,174,174, 16,137, 68,120,253,245,215,121, 29, 58, +116,240,236,218,181,235,174,218,151, 1,155,103, 64,213,212,212,208,105,211,166,193,193,193, 1, 14, 14, 14,112,116,116,132,163, +163, 35,156, 36, 32,107,198, 5, 72,199,174, 43,149,126, 58,115, 77,226,166,111,102,157, 10, 8, 8,248, 34, 51, 51,179,212, 86, +110, 29,228,201,201,112,186,118, 13, 48,248,239,218, 10, 87, 71, 15, 36, 36, 36, 88,236,195,231,243, 33, 20, 10,209,190,125,123, +171,124,158,158,158,187,249,124,254, 19,111,166,148, 82, 73, 66, 66, 2,123,251,246,109, 71,134, 97, 28, 57,142, 67, 66, 66, 2, +171,209,104, 36,190,190,190,103, 56,142,203, 43, 40, 40,232,103,141,155, 82,170, 32,132, 76,102, 24,102,133, 88, 44,230, 55,110, +220, 56, 99,198,140, 25,103,161,181,102,130, 82,202, 52,110,220, 56, 70, 42,149, 6, 42, 20, 10, 13,128,201,118,107,150, 29, 22, + 16, 13,192,240,183,170, 4, 32,170,253, 94, 4,109,220,137,151,209,118, 0, 40,132,246, 69,209,215,204,122, 17,128, 27, 0,154, + 2,240,169,109,187, 8,160,184,190, 2, 90,180,104, 17, 66,168, 65, 71,253,131,197,217,217, 25, 23, 47, 94, 4, 33, 4,206,206, +206,112,113,113,129,171,171, 43,202,203,203,113,227,198, 13,164,167,167,227,225,195,135, 32,132, 32, 40, 40, 8,168,253, 3, 25, +112,233,111,112, 91,150, 28,128,196, 73, 12, 66,128, 86,221,162, 16,213,185, 25,218, 92,184, 63, 78, 38,147,173,203,201,201,185, + 67, 8,225, 55,107,214,236,253,118,237,218, 97,233,210,165, 80, 40, 20, 75, 77, 41, 89,134,156,201,105,234,214, 0, 32,147,201, + 38,109, 62,114,207, 97,104,207,224,234,156,156,156,197, 79,113,114,158,184, 17, 23, 22, 22,218, 92,139,143,227, 56,148,148,212, + 53,148, 24,114, 26, 91, 8,150,173,248,218,173,162, 44, 15,115,191,220, 12,181, 90,141,137, 19, 39,130,227, 56,253, 82, 90,106, +250,222,109, 44, 39,101,141,140, 12,140,118, 33, 12, 64,248, 64,192, 64,173, 94,145,185,237,107, 16, 10, 16, 22,128,209,113, 25, +115, 18, 66, 36, 60,161,116,251,172, 47, 87,186, 93, 73,127,132,125, 39,174, 64, 85,158,141,220,107,123, 0, 0, 65,237, 7, 97, +135,130,135,182, 81,193, 24, 63,253, 43,247,207,199,191,179,157, 16, 18,102,232, 70,180,229,193, 70, 41,139,185,115,230, 96,221, +202,165,248,106,233, 74,148,151,149, 66, 32,240, 2, 0,104, 52, 44, 88,163, 99,171,115,236,148,246,252,124,210, 72,178,226,187, + 93,104,246,162, 31,246, 31, 59,131,214,145,129, 56,124,242, 2,218, 53,111,130,163, 73,151,209, 46,234, 5, 36,157, 75,195,196, + 81,195,200,233,195, 27,122, 90, 58,159,198,215,104,249,242,175,221, 42,202,243,112, 96,254, 70,228,175, 94,141,140,209,163, 17, + 83,219,231, 2, 33, 16, 54,108, 8, 8, 81, 7,214,142,253,230,205,155, 80, 40,234, 62, 75,196, 98, 49,194,195,195, 77,142, 49, +228,148,203,229,151, 53, 26, 13,205,203,203, 35,121,121,121,112,116,116, 36,105,105,169,108,100,100,179, 55,104,250,207,223, 1, +192,194,133, 11,222,216,113,185, 28,213,103, 86, 66,126,118, 21,132, 77,174, 51,235,102,143, 84,141,152,185,246, 50,254,122,200, + 61, 33,103,110,110,110, 47,221,247,160,160,160,244,219,183,111, 55,213,185,154,107, 93,136, 66,141, 70, 19,162,115, 39,106, 52, + 26, 40, 20, 10,116,239,222, 93,255, 6,102,234,216,221,221,221,219,133,135,135,227,202,149, 43, 88,185,114,165, 71, 92, 92, 28, +238,222,189, 11, 66, 8, 22, 44, 88, 64, 34, 34, 34, 4,133,133,133,120,229,149, 87,176,123,247,238, 58,154,129,137,223,167,179, +163,163,227,250,253,251,247, 75, 24,134, 65, 69, 69, 5, 56,142, 67,135, 14, 29,192, 48, 12, 82, 83, 83, 49,125,250,116,236,222, +189, 27,123,247,238,149, 70, 71, 71,175, 39,132,132, 27,186,245, 45, 92, 35, 90, 83, 83, 67,197, 98, 49,196, 98, 49, 36, 18, 9, + 36, 18, 9, 68, 34, 17, 42,107,128, 17,203, 50, 20, 60,137, 23, 23,217,178, 99,240,187, 99, 23, 48,139,103,188,119, 18,192, 62, + 43,156, 79, 64, 5,124,181,226,199, 31, 87, 14, 41, 43, 99, 0,224,123, 66, 56, 21,165, 38,205, 78,166, 56, 43,107,202, 16, 24, +212, 16,187,182,239,197,155, 3,251,214, 25,195,231,243, 33, 16, 8, 33, 20, 8,224,226, 81,215,171,109,204, 41, 20, 10,125,211, +211,211, 61, 5, 2, 1, 40,165, 96, 89, 22, 42,149, 42,239,243,207, 63,247,142,143,143,119, 62,124,248, 48, 19, 31, 31,207,185, +187,187, 87, 93,184,112, 33, 95,163,209,120,118,234,212,201,170,156, 6,109,223,180,108,217,178,213,158, 61,123,222, 75, 72, 72, +184, 52,105,210,164,185,134,237,139, 22, 45,154,115,232,208,161,192, 55,222,120, 99,211,213,171, 87,191, 49, 24,247,220,211, 3, +216, 57,255,249,156, 7, 15, 30,212,223,136,227,227,227,141,173,157,190,132,144, 3, 6,251,239,173, 91, 79, 72, 72,152,182,112, +225,194, 52, 66,200, 1,195,237,186,126, 0,160,219,102,188, 94, 59,214, 99,234,212,169,205, 18, 19, 19, 23,196,198,198,110, 59, +115,230,204,159,168,167,162,101, 53, 70, 75,167, 92, 25, 42, 92, 70, 4, 40, 47, 47, 71,121,121, 57,178,178,178,176,102,205,154, +218, 63,180, 0,124, 62, 31,124, 62, 95, 31,207, 96, 14,199,247,255,190, 10,192,170,232,232,104, 65,202,217,157,135, 63, 91, 55, +246,165,214,221, 91,241, 46,159, 72,233, 15, 96, 30,128, 94,195,134, 13,243, 2,128,141, 27, 55, 22, 2, 56, 92,159,131,124, 94, +160,148,238,188,115,231,206,120,127,127,127,125,140,138,161,251, 80,163,209, 64, 34,145, 64, 23,203, 82, 83, 83,131, 53,107,214, +104, 40,165, 59, 45,112,226,118,218, 73,220, 73, 59,165, 29,199,113,224,216,191,198,207,154, 53,203,112,138, 40, 62,174,181,156, + 88, 3,103,234,156, 83,163, 79,163,237,117,148, 51, 35, 48,140,112,108,255,119, 70,251,115,132,143, 95, 78, 94,133, 64, 32, 0, +103, 96,205, 20,240,180,111,203,105,119,115, 32,243,141,196,107,131, 70,250,237,217,244,245, 88, 0, 95,218, 36,180, 1,194,162, + 98, 49,110,252,120,124,183,110, 29,166,207,156,163,215,210, 53, 44, 11,141, 85, 57, 25,166, 67,235, 8, 84, 22, 61, 2,143,199, + 67,251,150,193,224,241,120,232,212, 58, 20, 60, 30, 15, 29,219, 52, 5,159,207, 71,215,118, 17,120,241,197, 23,193,231,243, 45, +250, 34,181,215,232, 4,238,164,253,102,160,244, 82, 80, 0,170,220,220, 58,253,213,185,185,160, 1,158,245, 58, 94, 74, 41,222, +127,255,253,210,172,172, 44,149,113, 91,163, 70,141,132,201,201,201,110,102,220,118,122, 72,165,210,104, 62,159,127,185,184,184, +152,115,112,112, 96, 56,142,229, 34, 35,155,241,142,172,157,182, 71,215,103,234,212,105,123,222,138,118,121, 99,243,206, 3, 84, +216,184, 35, 33, 2,177,230,195,153,107,133, 2,161,212,166,140,247, 58, 55,226,173, 91,183,204,185, 17, 13,143,201,162,235,167, +164,164,100, 88,120,120,120,242,170, 85,171, 60, 8, 33,248,253,247,223,193,227,241,244,203,253,251,247,193, 48, 12, 62,251,236, + 51, 85,121,121,249, 7,214,100,227,243,249,227,119,237,218,229, 42, 18,137, 80, 81, 81,161,255,223,240,120, 60,164,167,167, 99, +241,226,197, 24, 54,108, 24, 50, 51, 51, 33,147,201, 48,113,226, 68,167,196,196,196,241, 0,230,216,112,232,215,149, 74,101,107, + 7, 7, 7, 72, 36, 18,232, 20, 46, 0,248, 53, 77,144, 90, 93, 93,221,220,203,203,203,207, 59,233,192, 47,237,227, 94,107,225, +233,237, 31,139, 90, 69,203, 86,220, 3,214, 61, 96,217,207,123,237,217,227,115,122,207, 30,238,220,254,253,143,196, 21, 21,107, +109, 29, 79,213, 12, 50,238, 63, 66,116,116, 52, 46, 95,190,140,232,232,191, 46,169, 80, 40,132, 72, 36,130, 80, 40,132, 80, 40, +132,151,187, 77, 33, 20,148, 97, 24,156, 62,125, 26, 44,203, 66,169, 84, 66,169, 84, 34, 34, 34,162,248,212,169, 83, 78, 0,112, +255,254,125, 58,116,232,208,210,243,231,207,163,101, 75,203,245,212,253,252,252,146,121, 60, 94, 99,195,109, 12,195,184,247,235, +215, 15, 37, 37, 37,175,246,235,215,175, 99,237,182,236,159,127,254,121, 40, 0,136, 68, 34, 48, 12,243, 84,174,105, 59,254, 91, +208, 41, 87,134, 10,151, 49,116,138,146,225, 58, 33,228,192,194,133, 11,123, 27,111, 51, 84,170, 76,125, 55, 28,155,152,152,184, +192,128, 91, 94, 95,217,109,138,209, 34,132, 80,107, 55, 77, 75,176,166,104,233,112,249,242,101,117,131, 6, 13,190,187,115,245, +225, 75,193, 81, 65,144, 58,138, 95, 38,132,172, 18,139,197, 19,222,121,231, 29,156, 59,119, 14,169,169,169, 63,208,103,156,133, +211,188,121,243,163, 98,177, 56,208, 84,155, 66,161,200, 72, 73, 73, 49, 25, 75, 86, 82, 82, 50,179, 54,230,204,108, 48,188, 97, +188,152, 97, 48,188, 57, 89, 40, 71,161, 86,169, 81, 85, 45,255,235, 33, 94,171,104, 85, 85, 85, 97,224,192,129, 79, 88,180,242, +243,243,173, 30, 31, 33, 4,139,247,237,195,177,157, 59,241,106,139, 22,216,125,225, 2, 18,223, 25,140,176,192, 6,160, 44, 1, + 37, 64,230,214,175, 81, 84, 94,137, 45, 39, 78,163,184,162, 26, 67, 58,117, 66,136,139,151,101, 94,129,176, 71, 76,187, 88,225, +241, 51, 55, 32, 16,240,193,128, 3, 85, 87, 67, 22,222, 21, 60,134,129,171,111, 19, 8, 5, 2, 8, 4,124,220,207, 42, 68,120, +179, 54,162, 3, 34, 73, 15, 60,133,162,213, 40,176, 9, 88,150,197,176, 97,195,176,109,219, 54,120,250, 5,194,181, 81, 51,204, + 91,186, 14,175,118,239,100,113,172,206,218,162, 83,244,121, 60, 94,157, 79,221,119, 91,172,147,148,163, 80, 25, 95, 35,142, 2, +148,162,225,252,249,104, 56,127, 62, 46,212,238, 51,162,170, 10,114,185, 28,104,107, 57, 88,255, 9,126, 74,161, 84, 42,145,149, +149,165,202,205,205,173,243, 4,244,243,243,203, 83, 42,149, 86, 21,155, 13, 27, 54, 92, 31, 62,124,120,107, 15, 15,143, 75,215, +175, 93, 83, 71,181,104, 33, 56,188,102,218, 94,157,219, 16, 0, 90,180,104, 81, 60,109,218,180,189, 67, 7,244,238,251, 77,194, +219,236, 39,115, 54,241,197, 82,105,235,222,147, 44, 7,196,235,160, 80, 40, 30, 68, 69, 69, 89, 22,164, 22,213,213,213,143,205, +181,233, 2,223, 91,181,106,229, 18, 23, 23,135,228,228,100,188,249,230,155, 10,149, 74,117, 7, 0,226,227,227, 67,183,108,217, + 34,186,113,227, 6,188,189,189, 5, 25, 25, 25,235, 9, 33, 22, 3,228, 69, 34, 81,215, 54,109,218, 48, 10,133,162,142,146,149, +152,152,136, 65,131, 6, 33, 52, 52, 20, 28,199,161,178,178, 18,113,113,113,130,149, 43, 87,118,133,109,138,214,184,176,176,176, +197,208,206, 58, 52,188, 23,222, 4, 48, 25, 0, 10, 11, 11, 31,247,126,115, 88, 90,167,238,253, 90, 55,126,177,153,191, 53, 66, + 95, 95,223,169, 12,195,188,197,113, 28,175,188,188, 60, 75, 73,200,139, 17,129,129,190, 29,250,246, 69,153, 64,192, 91,113,226, + 4,147, 87, 81,225, 4,192, 38, 23,100,141,186, 10,129, 65,218, 80,191, 55, 7,246,197,229,203,151,209,255,237, 55, 32, 20, 10, +193,231, 11,180,255, 77,161,214,162,229,230,229, 98, 11, 37,212,106,109,201, 81,221, 75,165, 74,165,130, 74,165,130, 46, 52,203, +193,193, 65,223,166, 80, 40,204,190,144,215, 34,100,199,156, 25, 62, 82, 23, 87,176,106, 53, 34,251,246,215,255,166,207,127,255, +141, 20, 28, 39, 45,205,120,128, 49, 59,247, 63,215,250,182,118,252,119,112,240,224, 65,106,194,154,165,135,161,162,244,172, 32, +132, 28, 72, 72, 72,152, 6,128, 38, 36, 36, 76,211,173, 47, 92,184, 80, 14,192,228, 36, 35, 43,124,230, 99,180,158, 85,201, 2, + 80,199,213, 99,140,110,221,186,141,113,118,118, 94, 9, 0,173, 91,183, 70,214,185,108,100,157,203, 70,120,211,200, 14,173, 90, +180, 46, 27, 52,104, 16, 60, 61, 61, 49,105,210,209,182, 74,163, 0, 0, 32, 0, 73, 68, 65, 84, 36, 10,224,135,250,238,255,254, +237, 52, 39, 0, 84, 38,147, 77, 2, 0,153, 76,214,226,194,133, 11,222, 23, 47, 94, 68,155, 54,109,244,253, 84, 42, 21, 58,118, +236,104,150,167,214,197,240, 41,204,196, 91, 61, 13, 40,229,160, 82,169, 80, 93, 45,135, 82,169,130, 70,205, 65,163,209, 32, 58, +210, 25,155,214, 37,104,183,105,116,214, 51,173,213,172,161,159, 51,162,155,251,169, 25,134,200, 47, 94,203, 53,121,199, 84, 42, +149,184,158,145,129,107, 15, 31, 2, 0, 94, 91,104, 57,240,117,211,137,100, 68, 68, 68, 88,147, 54,184,161,204, 15, 57,199,174, +107,111,222,242, 44, 92,252, 99, 7,156,157,157, 0, 0,145, 93,134, 64, 40,212, 42, 90, 85,114, 21,188,154, 54, 2,161,212,108, + 90, 0, 71, 15,255,163,124,161, 36,144,178, 28, 40,229, 64, 57, 22,148,114, 16, 59,123, 58,140,249,248, 61,112, 28,139,152,152, + 24, 16, 30, 15,172, 90,129, 1,125,122,160,164,172, 2,158,110,182, 61, 36,132, 66, 33,186,116,233, 34, 53,215,126,247,238, 93, + 57, 80,119, 6,102,157,163,166,156, 86,209,170,146, 67,161, 80, 64,165,212, 64,165,214,128,125, 65,136,185,159, 15,134, 70,165, + 65,245,219,177, 80,169, 53,224,198,191, 1,149, 82,141, 76, 7,134,105, 17,225,173,102, 64,228, 87,110,228, 91, 20,152, 82, 10, +157,114, 96, 14,166, 98, 2, 77, 97,195,134, 13,215,134, 15, 31, 30, 29,213,162,197,229,183,186,183, 88,146,146,154,150,147,146, +154, 86,167, 95, 96,104,139, 7,159, 36,110,155, 40, 16, 74,163,109, 85,178,128, 39,221,136,207,136,105, 21, 21, 21, 81, 78, 78, + 78,184,125,251, 54,120, 60, 30, 8, 33,119, 41,165, 81, 0, 48,114,228,200,123,124, 62, 63,136,199,227, 97,245,234,213,132,207, +231, 55,143,141,141,157, 6,192,172,162,165,209,104,194,157,157,157,159,176,102, 9,133, 66, 36, 36, 36, 96,232,208,161,122, 37, + 75, 40, 20, 98,195,134, 13,104,221,186, 53,148, 74,165,105,159,172, 17,168,182, 24,189,101, 13, 31, 0,199,113, 90,247, 43,103, + 69, 43,214,202, 59,188,232,173,183, 94, 68, 82, 18, 58, 4, 5, 69, 68, 71, 71, 67,165,250,203,160, 25, 20, 20,212,168,162,162, +226, 49, 33,228, 39, 0,223, 80, 74,175, 90,226, 83,215,112,200,184,175, 13, 63,189,124,249, 50, 98, 98, 98,244, 22, 44, 67,107, +150, 80, 40,132, 84,228,100, 77, 60, 45,103,173,162,197,113,218,251, 82, 69, 69, 5,147,148,148,228, 21, 22, 22, 70, 0, 32, 44, + 44,140, 92,189,122,213,195,193,193,161, 48, 56, 56,216,234, 11,176,212,197, 21, 27,134, 15, 4, 0,124,209, 93,235,177, 39,132, +224,200,236,105, 16, 8, 4,120,105,210,180, 39,250, 43,149, 74,112, 28,247, 76,105, 75,236,248,111,192,154,146, 5,212,181,104, + 61, 11, 12, 45, 90, 11, 23, 46, 76, 91,184,112, 97, 29,235, 88, 61,249,172, 91,180,106, 59, 62,149,194,165,251,179,154,195,210, +165, 75,209,188,121,115, 75, 2, 98,229,202,149,216,188,121,243, 82, 74,233,253,250,238,191,247, 75,173, 34,177,108, 79, 90, 80, +104, 36, 1,128, 57,227,251, 48, 85, 85, 85, 56,125,250, 52, 92, 93, 93,113,247,174,109,105,191, 8, 33,206,174,174,174,179, 25, +134, 25,192, 51,158, 1, 96, 2, 44,203,178, 28,199,237, 44, 43, 43, 51,155,222,129, 82, 64,165,214,160,170,186, 6, 74,165, 18, +227, 63,251,218,170, 28, 11, 1,162, 82, 86,240,187,116,142, 53,169, 68, 16, 66, 16,211,188, 43, 70,189,227, 84,231,225,205, 99, + 0,134, 1, 90,198,104, 45, 46, 87, 47,164,129,227, 0,150, 3,188,124,220,241,195,214, 37,150,118, 77, 52, 44, 87,251,118,204, +162, 82,193, 34,188, 93,111, 60,186,153, 4, 64,107, 65, 18, 9,181, 46, 99,161, 64, 0,142, 18,109,214, 7, 51, 16,138,164,129, + 37,185,247, 67,214, 29, 72,193,136,222,205,241,243,241,235,232,223, 61, 10,167,206,223, 64, 92,219, 8,164,221,121,136,200,144, +198, 88,189,126, 39, 40, 69,197,183,203,230,233, 45, 36, 28,167,201, 48, 43,164,129, 69,235,220,185,115,114, 99, 43,150,225,167, + 53, 43, 17,160,253,253,233, 44, 90,242, 26, 5, 38, 77,181, 41,157,143,246, 26,117,106,103, 86,209, 51,132, 37,139,149, 45,138, +152, 33, 54,108,216,112, 29, 86,210,179,188, 0,160, 53, 48,197, 38,194,191, 9, 44,203,226,224,193,131,250,235, 97, 12, 66,200, + 19, 22, 72,107,224, 56, 14, 25, 25, 25, 72, 75, 75, 67,187,118,237, 80, 86, 86, 6, 1,195, 96, 98, 74, 10, 34,222,121, 7, 74, +161, 16, 28,199, 65, 36, 18, 97,228,200,145, 54,159,207,122,161,246, 30, 73, 41,107,145,156, 16,178,164,119,239,222, 47,222,174, +170, 66, 90,122, 58,186,207,154, 5, 0, 56,116,232,144,190,143, 82,169,196,132, 9, 19, 68, 55,110,220,120,255,210,165, 75,239, + 19, 66,150, 82, 74, 39,154,161,132,154, 42,244, 49, 90,111, 13,126, 19, 47,134,189,128,205, 63,110,213,183, 79,152, 60, 14, 2, +129, 16, 2,161, 0,110,174,110, 54, 29,141, 90,173,214, 43,173,213,213,213,204,161, 67,135, 26,246,232,209, 67, 56,110,220, 56, + 2, 0,155, 55,111,102, 86,173, 90,229,120,236,216, 49, 97,131, 6, 13,234,250,209,141,160, 81, 61,233, 25, 39,132,128, 16, 2, +129, 64, 0,161, 72, 8,112, 28, 8, 33,142,139, 22, 45,154,147,150,150,214, 38, 44, 44, 12, 10,133,226, 29, 66,200, 21,106,207, +163,245, 63, 15,157,219,208,156,194,101, 42,214,170,214, 42,101, 14, 5,134,113, 91,230, 20, 53,195,152, 45, 0,245,158,148, 97, +115,140,150, 41,240,120, 60,171,214, 42,134, 97,172,186, 14, 39, 76,152, 0,103,103,103,147,109, 74,165,146,166,164,164,220,200, +205,205, 93, 71, 41,181,174,133,152,192,129, 19, 87,210,102,127,250, 70, 5,106,125,171,110,110,110,133,221,186,117,171, 4,160, +218,177,227,201, 23,100,133, 66,145, 97,142,199,213,213,117,246,247,223,127, 63,182,111,223,190,140,113,138, 1, 67,247,158,110, + 81,171,213,216,177, 99,199,216, 41, 83,166, 0,102,172, 96,186,135,120,117,149, 28,242,218, 64,232,123,169, 63,219,118, 96, 22, + 30, 20, 78,110,254,104,248, 66,148,217,135, 9, 35,212,198, 16,249, 6,252,245, 0,115,118,150,128,181,192, 73, 8,115,255, 97, +102, 78,131, 70,126, 30,184,151, 85, 0,223,198,205, 81,146,253,215,121,224,243,121, 16,212,186, 14,221, 92, 28, 81,144,159, 15, +134,225, 89, 84,140,231,109,185,130,243,169, 15,177,235,248, 85,168,106,170,176,108,227, 17,168, 20,149, 80,213, 84, 65, 85,163, +253, 92, 48,229, 67, 16,130,199,170,154,202, 80, 75, 92,198,224,243,249,104,219,182,173, 89, 69, 39, 59, 59,219, 70,139, 22,213, + 91,180,228, 53,245,188, 70, 54, 64,231, 58,180,214,254,180,138,129, 46,229,131, 84, 42,109,189, 97,131,249, 52, 14,166,224,239, +239,127,216,201,201,169,137,173,253,235,145,188,116,129,155,155,219,236,176,176,176,240,101,203,150, 9,120, 60, 30, 94,122,233, +165,208, 15, 63,252, 48, 3, 0,154, 55,111, 46, 3,180,247,152, 79, 62,249,132,158, 59,119, 46, 21,192, 66, 75,132, 34,145, 40, +221,213,213,181,117, 92, 92, 28,202,202,202,144,149,149, 5, 71, 71, 71, 68, 44, 89,130,148, 79, 62, 65,139, 53,107,192,116,235, + 6, 66, 8, 68, 34, 17, 82, 82, 82, 32,149, 74,211,205,241, 17, 66,218, 2,248, 10, 64, 7,252,229, 46,164, 0, 78, 3,248,140, + 82,122,222,120,140,238,198,192,114,156,181,139, 53,120,210,164, 73, 40, 21, 8,128,248,120, 8,239,223,135, 74,165, 66,187,118, +237,244, 86,246,118,237,218,129,207,231, 35, 42, 42, 10, 50,153, 12,171, 87,175, 30,140, 39,103, 98, 63,129,154, 74, 21, 50,238, + 63, 66,108,108,172,222,114, 21, 31, 31,175,183,104, 9, 4, 2,189,101,139,152, 78,209,103,124,252,212,240, 37,153,101, 89,194, +231,243,249,159,126,250, 41,121,243,205, 55,169, 82,169,228, 68, 34, 17,179,107,215, 46,114,234,212, 41,126, 85, 85,149,213, 23, +241,102,111, 12,192, 23, 61,180, 70,209,121, 77,188, 33, 16, 10, 32, 18, 10, 49, 41,253,145,254,186,184,108,216, 38, 74, 76, 76, +236, 31, 22, 22,166,117,195, 3,124,123, 30, 45, 59,172, 88,179, 10,140,148, 36,165,193,122, 1, 0, 82,187, 94, 0,232, 21,170, + 2,104,103, 16,182, 49,234,171,107, 87, 26,125,234,218,235,117, 15, 5,158,168,117,168, 7,181, 33,189,195,157,179,103,207,134, + 68, 71, 71, 35, 51, 51,179,206, 76, 56,221,131,203,209,209, 17, 82,169, 20,103,206,156, 1,128, 59,230,200, 78,158, 60,185, 10, +218,172,203, 0, 0,153, 76, 22, 27,247, 86,215, 51, 49, 61,219, 96,203,194,173,101,185,185,185, 81,180, 54,135, 14, 33,132,200, +100,178,161, 2, 17,127, 96, 80,179,128, 46,224,184,175,142,255,242,199, 44, 75, 7, 25, 20, 26, 89, 9, 64,110, 48,235,176,222, +179, 15, 1,128, 97,152, 1,125,251,246,101,110,220,184,129,129, 3, 7, 98,243,230,205,102,251, 14, 29, 58, 20,219,182,109, 67, +223,190,125,153,169, 83,167,154, 77,239,240,164,181,196, 54,247,144, 45,184,125,247, 26, 54,109,251,222,108, 12,146,143,143, 54, + 30, 43, 63,191, 80,191,173, 77,180,101,207, 8,167, 81, 30,187,114,233, 66,108,251,206, 47, 9,179,242, 74,193,105, 20,168,169, +248,107,124,117,105, 30,168,166, 6, 66, 7, 15,248,121,185,226,242,217, 95,149, 42,101,205, 49, 75,156, 99,251, 70,226,147, 62, +225, 0,229,240,198,196, 31,112,224,235, 49,250, 55,232,142,111,142,195,137, 29, 43,108,142,241, 51,134, 64, 32, 64, 74, 74,138, +220,156, 53,139,199,227, 89,205,201, 5,232,172,142,106, 84, 87,203, 81, 45,127,234, 60,172,117, 64, 8,241,246,245,245,253,214, +195,195, 67, 98, 74,145, 34,132,120,123,123,123,127,235,233,233, 41,177,213,117,104, 12,163,188, 90,151,134, 15, 31, 94, 47,101, + 75, 44, 22, 55,185,115,231,142, 62, 89,169,165, 79,165, 82,137,184,184, 56,155,146,151, 82, 74,247, 19, 66,254,244,247,247, 63, + 29, 17, 17,225,122,239,222, 61,108,221,186, 85, 40, 16, 8, 2,116,247,143,138,138, 10,240,120, 60,228,231,231,171, 1,188,103, +205,117,166, 80, 40,146,146,146,146, 90,246,233,211,135,151,158,158, 14, 30,143,167,149, 43, 54, 22, 45,214,172, 65,234,167,159, +162,203,195,135,168, 81,169, 32,145, 72,112,244,232, 81, 85,117,117,117,146, 57, 62,169, 84,186,238,193,131, 7,145, 18,137, 4, + 42,149, 10, 28,199,129, 97, 24,194,231,243, 59,186,185,185,173, 4,208,198,176,191,143,143,143,207,200, 9, 95, 54,101, 53, 26, + 54, 55,243, 94,129,181,115, 80, 84, 84,132,253,251,247,163, 93,187,118,232,210,165, 11,178,179,179,113,255,254,125,188,250,234, +171,250, 62,215,174, 93,195,149, 43, 87, 16, 28,108,214, 3,175, 7,199,168, 17,220,180, 9,132, 66,161,214, 66, 36, 16,214,190, +248, 8,244,150, 44,161, 64, 8, 1, 95, 0,137, 84, 98,149, 15,181, 22, 45, 66, 8, 24,134, 1, 33, 4, 82,169,246,189,133,199, +227,113, 13, 27, 54,204, 45, 46, 46,246, 7,192,147, 74,165, 96, 89,214,166,151, 22, 64,251,140,208, 41, 89, 66,145, 80,111,217, + 2,128,210,210,210,154,190,125,251,254,164, 80, 40,222,197, 83, 84, 40,177,227,127, 18, 23,255,143,198,218,138,120, 74,233, 58, + 83, 65,241,150,126,224,175,182,111,223,126,205,160, 65,131, 94, 90,190,124, 57,156,156,156,144,155,155,171,127, 32,138, 68, 34, + 52,106,212, 8,197,197,197, 88,187,118, 45, 30, 61,122,116, 18,192, 72, 91, 37,202,205,205, 61,119,247,234,157,162,184,254,237, + 61, 35,219, 55,117,203,186,243,168, 29,128, 51,181, 74,214, 15,131, 38,188,250,110, 92,191, 24, 8, 69, 2,100,221, 53, 27,111, +251,220,193,227,241,120,132, 16, 12, 28, 56,208,166,254,111,191,253, 54,146,146,146, 96,201,205,200,233, 44, 90,213, 53,168,146, + 63,191,151,181, 81, 99,134, 98,212,152,161,122,101,194, 22,215, 11, 0,200,100,219,205,182,113, 26,213,242, 3,219,215,142,104, + 21, 19, 27,216, 58,178, 9,206, 95,186,138, 45,107,254, 50, 50,172, 95, 53, 7, 95,174, 63,137, 70,190,238, 80, 41,170,112,248, +231,239, 30,171, 20,213,203, 45,237,207,154,145,134, 33, 4, 54,230,169,252,107, 76,173,242, 36, 16, 8,208,172, 89, 51,179, 22, +173,226,226, 98,185,181, 7, 3, 80,123,141,148,106, 84, 86,201, 33,175,126, 62,138, 22, 33,164, 69,199,142, 29,143,237,220,185, +211,211,199,199, 7, 57, 57, 57, 79, 40, 90,132,144, 22, 29, 58,116, 56,182,115,231, 78, 79, 95, 95, 95,100,101,101,217,156, 86, + 68, 7, 3, 37, 11, 5, 5, 5,164,164,164,132,115,119,119,175,151,178,197, 48, 12, 20, 10, 5,110,222,188,105,235,110,109,158, + 33,230,234,234,186, 97,219,182,109,174,133,133,133,224,241,120,184,121,243,230, 19,179, 14,117,203, 15, 63,252, 32,124,227,141, + 55,190, 7, 96,113, 90,155, 70,163, 89, 58,116,232,208,247,179,179,179,221,125,124,124,144,155,155, 11,145, 72, 4, 74, 41, 72, + 92, 28, 58,253,249, 39, 84, 44, 11,169, 84,138,219,183,111, 99,221,186,117, 85, 10,133, 98,169, 41, 46, 66,136,200,193,193, 33, + 68, 40, 20, 98,200,144, 33, 79,180,109,220,184, 17,175,181,230,181, 30,209, 67, 92,169,129, 68,145, 39,237,117,152,199,227,145, +145,147,190, 10,109,219, 57,190,217,173,212,243,247, 10,242, 30,157,182,114,248,106,165, 82,137,176,176, 48, 92,188,120, 17,199, +143, 31, 71,183,110,221,208,165, 75, 23, 92,191,126, 29,191,254,250, 43,174, 92,185, 2, 66, 8, 60, 61, 61,117,225, 23, 22, 99, + 48,148,213, 26,228,231, 20,213,177, 94, 25,175, 11,133, 66, 40,228,117, 38,183,154, 68,122,122, 58, 46, 94,188,168, 79, 45,195, +227,241, 52,239,188,243, 14, 40,165,244,193,131, 7,112,118,118,166,195,135, 15,103,249,124,190, 38, 59,219,182,248, 96,157, 82, +165, 83,178,248, 66,193, 19, 10, 26,199,113, 21,215,174, 93, 27, 65, 8,185, 78, 8, 89, 84,187,217,158, 71,203,142,127, 51, 14, + 18,131, 90,135,128, 13, 22, 45, 74,233,159, 0,186, 19, 66, 6,239,221,187,119,233,202,149, 43,189,123,247,238,141,146,146, 18, + 4, 6, 6,194,223,223, 31, 7, 14, 28,192,161, 67,135, 10, 89,150,157, 72, 41,173, 99,250, 33,132,116, 55,151,107,131, 82, 74, +101, 50,217, 78, 69,101,229, 39,209, 93,194,113,114,199,239, 11,253,253,253, 71, 54,104,208, 96,252,240,105,175,191,219,181,111, + 27,220,190,242, 0,231,126, 77, 65, 94,102, 33,134,119,250,204, 34,167,113, 48,188,155,155,219,251, 14, 14, 14, 34, 0,117,238, + 54,198,179, 14, 13, 57, 89,150,101,149, 74, 37,182,111,223,110,147,178,181,117,235, 86,212,212,212,128, 53,242,175, 26,114, 82, +142, 18,190, 64, 12, 89,163, 48,168, 84, 85,224,184,167,179,222, 24,114,234,222, 64,239,137, 68,240, 41, 44,196,249,243,117, 60, + 28, 38, 17, 31,255,132,101,179,206,249,164,148,214, 16, 66,134,172,152, 63,233,192,232,132,175,220,186,181,111,137, 47,150,108, +132, 74,181, 30, 12,143,129, 84, 44, 68,116, 76, 7,240,160,192,183,137,147, 75,171,203, 75,134, 80,163, 82, 60,117, 56, 45,121, + 88, 40,192,114, 28,142, 39, 91,206,121,106,234,186,179, 44, 11, 62,159,143,187,119,239,202, 77,205, 54,228,241,180,110, 78,221, +155,186, 37, 78,202,113, 68, 32,148,160, 81, 96, 4,148,138,202,231,114,141,124,124,124, 38,239,217,179,199, 83,151, 42,225,250, +245,235, 32,132,232,181, 25, 93,187, 92, 46, 71,106,106,170,174,212, 84, 29,109,199,210,255, 72,103,201, 42, 40, 40, 32,185,185, +185,112,112,112, 96,174, 95,191,174,136,138,138,186, 4,203,149, 31,244,156, 53, 53, 53, 15,205,197, 79,214,212,212, 52,144, 72, + 36, 2,163,177,178,144,144,144,219,198, 46, 68, 83,114,150,149,149,157,159, 50,101, 74,116,207,158, 61, 49,121,242,228, 98,119, +119,119,231,111,191,253,150,207,227,241,200,232,209,163,217,252,252,252,202,239,190,251,206,117,239,222,189, 40, 45, 45,173, 83, +101,192,196,239,179,130, 16, 50,162,125,251,246, 27,143, 28, 57,226, 16, 18, 18,130,242,242,114, 80, 74,177, 97,195, 6,140, 30, + 61, 26, 18,137, 4,183,111,223,198,107,175,189, 86, 93, 93, 93, 61,194, 56,118,210,128,147, 16, 66, 40,199,113,152, 49, 99,134, + 62, 57,169, 46, 89,169,179,148, 96,221,132, 23, 28,199,125, 87,230, 56,248,139,239,222, 1, 0, 86,163, 97,111,165,158,191,183, +225,235, 47, 78, 9,133,194,100,115,114,214, 98,250,184,113,227,190,141,143,143,151, 58, 57, 57,161,184,184, 24,167, 79,159,198, +217,179,103,113,238,220, 57, 40,149, 74,120,122,122,194,221,221, 29,185,185,185, 72, 79, 79,151, 3,152,110,137, 83,228, 32, 64, + 80,168,110,230,175,214,130, 37, 48,152,109,104,104,221, 18, 10,234, 78,236, 51,197,217,185,115,103,180,109,219, 22,128,118, 22, +117, 70, 70, 70,174, 66,161, 32, 6, 74,127, 54,160, 85,200, 3, 2, 2, 52,155, 55,111,166,150, 56,207,173, 91,141, 35,115,167, + 67, 36, 20, 98,226,205, 44,189,210,181,177, 91, 43, 8, 68, 66,132,247,121, 83, 63,150, 82,250, 13, 33,100,125,237,119,133, 57, +206,231, 1, 59,231, 63,159,243,223, 12, 74,105, 46,128,250,149,224, 49, 24,188,133, 16,114,248,195, 15, 63, 76,108,209,162,197, +135,203,150, 45, 35, 66,161, 16,179,102,205,162, 57, 57, 57, 63, 66,251, 22, 98,182,180,137, 21,238, 31,127,219,125,230,227, 97, + 9,125,201,132,229,195, 59, 94, 58,145,154,222,188,125, 8,154,183, 15,193,165,147, 55,240,245,180,173,155, 89, 53, 59, 35, 55, + 55, 55,211, 10,149,162,123,135,166,198,193,240,158, 73,167, 78,120,214,119,214, 33,199,113, 59,183,110,221, 58,182, 95,191,126, +204,133, 11, 23,234,196,100,209,218,178, 59, 28,199,225,216,177, 99, 80,169, 84,248,241,199, 31, 57,142,227,204,231,209, 2,221, +183, 98,121,226,176, 31, 55,237, 19,137,132, 4,103,147,119,161,172,196,178,149, 78, 40, 20,224,135, 13,187, 85, 66,161,224,150, +169,118,149, 74,149,117,226,196, 9,223, 87, 88, 86,192, 48, 76, 29, 5,202, 28,118,238,220,169,230, 56, 46,195, 82, 31, 74,233, + 25, 66, 4,125,230, 77,126,111,107,252, 91, 31,250,182,111,223, 81,224,229,227, 11, 66, 8,242,243,242,113, 59,245,130,250,240, +174,239,243,170,170, 43,108, 42,193,243,222,226,223,244, 49, 89, 0,208,123,244, 74,125,124, 22, 0,244, 25, 62, 5,113,237, 34, + 65,108, 49, 61,213,130,101, 89, 78,163,209,192,209,209, 17, 26,141,198,100,138, 7, 87, 87, 87,105, 77, 77,141,156,106, 19, 49, + 90, 52, 21, 81,224,185, 95, 35,150,101,195, 75, 74, 74, 80, 85, 85,133,179,103,207,210,249,243,231, 23, 20, 20, 20,232,131, 54, +213,106,117,120,113,113, 49, 42, 43, 43,113,230,204, 25,154,152,152, 88, 80, 84, 84,100, 41,168,179, 14,164, 82,105,107, 62,159, +127,169,164,164,132,115,112,112, 96,212,106,181, 58, 42, 42, 74, 44,149, 74,109, 46,168,158,147,147, 83, 39,153,171, 14,193,193, +193,119,238,220,185,243, 34,203,178,134, 53, 16,133, 53, 53, 53, 33,237,219,183,183,197,229, 51,110,253,250,245,216,189,123,119, + 76,121,121,249,208,140,140,140,141, 0, 98,248,124, 62,174, 94,189,122,179,166,166,102, 80,191,126,253, 54,148,148,148,156, 7, + 48,206, 22,121, 41,165, 71, 8, 33, 67,194,195,195,215,207,158, 61,219,169, 75,151, 46,124,153, 76,134, 54,109,218,224,246,237, +219, 56,120,240,160,250,155,111,190,169,170,174,174,126,143, 82,106,201,173, 77, 1, 16,141, 70, 3,145, 72,164, 95,196, 98, 49, +132, 66, 33, 42,228, 20, 31, 44,185, 47,215, 64, 42, 95, 58,107,196, 65, 10,144,199, 89,247, 11,243, 31,103,157, 39,132, 36,231, +228,228,152, 44,193, 19, 28, 28, 44,170,169,169,105,233,239,239,207, 35,132, 44, 87,169, 84,195,199,140, 25,227,191, 96,193, 2, + 52,109,218, 20,133,133,133,112,116,116, 68, 72, 72, 8, 10, 10, 10,112,225,194, 5,182,186,186,122, 13,128, 57,148, 82,139,238, +200,210,194,114, 52,244, 11,120,194,242, 73, 41, 5,101, 1,181,130, 5,171,162, 80, 18, 53, 4, 2, 53,132, 66, 19, 25,117,141, +160, 83, 52, 75,252,253,193,165,166,226,220,185,115,160,148,154,181,170,133,133,133, 89,229, 4,229, 32, 18,139,158,112, 23, 18, + 66, 32, 20,137, 32, 16, 9,235,204,156,177, 91,177,236,248,175,195,214, 88,139, 82, 0, 35, 9, 33, 27,187,118,237,122,128, 82, + 42,128,214, 31,249,251,179,236, 60, 55, 55,247,178, 76, 38,155,234,219,208, 61,177,215,208,142,104,218, 50, 16,172,134,197,233, + 67, 87,241,227,130,189,219,178,179,178,135, 83, 27,124, 74, 28,199,157,234,208,186, 41, 3,131, 92,221, 50,153,140,123,154, 89, +135,101,101,101, 51, 39, 78,156,136,201,147, 39,215,123,214,161,185, 62,215,111,230,143,108, 17,238,221,176, 79,175, 78,175,128, + 48, 84,169, 52,127, 95, 33, 4,250,204,165, 66,161,224,214,133,107, 57, 81,166,250, 21, 20, 20,188,242,238,187,239, 30,227,243, +249, 54, 7, 49, 3,218, 34,179,121,121,121, 47, 89,235, 71,169,250, 52, 33, 36,100,255,182,181,159, 30,217,189,254, 21,142, 99, +131, 9, 0, 30, 95,120, 79,173, 82, 29, 85,200,203,151, 25, 91,178,204, 97,209,200, 88,140, 91,241, 43, 86, 79,238,131, 49,137, + 59,240,253,140, 15, 48,117,201, 86,124, 53,121, 28,230,175,252, 9, 95,140, 27,130,254,131,223,229, 40, 97,254,176,245, 56,120, + 60,222,145,181,107,215, 14,251,224,131, 15,244,147, 22, 40,165, 79,220,216,213,106,181,156,227, 56,172, 89,179,134, 3,112,196, + 18,223,147,215,136, 80, 75,241, 82,182, 94,163,242,242,242,247, 98, 99, 99, 55, 0, 16, 83, 74,239,150,148,148,124, 68, 41,213, +151,134,170,172,172,124,175,125,251,246, 27, 40,165, 98, 66, 72,157,118, 91, 80,155,234,161,181,187,187,251,165, 90, 75,150,248, +105, 2,226, 45,128,103,193,173,104,213,133, 88,251,255,213,151,213, 33,132, 44,136,137,137, 49, 44, 42,125, 19,128,205, 74,161, + 1,239, 49, 66, 72,228,140, 25, 51, 62,149, 72, 36,113,213,213,213,161, 0,224,232,232,120, 91,161, 80,156,146,203,229,203,106, +239, 91,150, 56,148, 14, 14, 14,183, 53, 26, 77, 51,111,111,111,237,140,218, 90,101, 11, 0,126,185,196, 94,162, 84,211,198, 18, +135, 41, 28, 58,116,168,177,187,187,251,203,132,144,254,148,210,176,138,138, 10,197,140, 25, 51,206,236,220,185,179,172, 73,147, + 38,189,226,227,227,137,135,135, 7, 46, 94,188, 72,139,138,138,118, 1,152,102,203, 76,107,142,227, 50, 22, 45, 90,100,173, 91, +157, 49,150,218, 85, 42,213,227, 67,135, 14,121,245,204,207,231,115, 28,135, 62,125,250,232,219, 76, 77,204,184,117,235, 22, 20, + 10,133,197,100,142,138,178, 18,116,251,116, 10, 80, 59,251, 83, 7,173, 37,139,130, 90,184,255,217, 97,199,127, 17,228,111,153, +254,172, 35,183,209,180, 40,147,201, 6, 74, 28,197,163, 2, 67,253,163,114,238,231,223,168, 40,171,222,156,155,155,187,150, 82, + 90,231, 70,110, 43,103,125, 18,150,254, 91,204,170,255, 70,206,191,242,104,177,160,148, 5,229, 40, 40,229,192,113,172,182,224, + 53,229, 64, 89,150, 16,130, 63, 20,213,101,102, 51,131, 27,203, 73, 8,113,247,242,242,154, 67, 41,237,201,227,241, 24, 67, 99, +152,225,247, 90, 75,214,145,130,130,130, 47,140, 45,175,255,198,243,249,243,207, 63,155, 84,254,109,157,117,216,191,127,127,182, + 62,114,202,100,178, 83,142,142,142, 38, 19,115, 86, 85, 85,101,230,228,228,188,108, 74,206,231, 5, 91, 57,117,214, 80,106,195, + 13,205,200, 5, 95,239, 89,135,214, 56, 27, 55,110, 44, 86,169, 84,173, 0,132, 16, 66,220, 0, 20,171, 84,170,163, 5, 5, 5, +121,132,144,214, 0,102,212, 14,155, 75, 41,189,100, 11,231,243,130,137,255,145,212,203,203,107, 61,195, 48, 86, 11,158, 3,128, + 70,163, 81, 22, 23, 23, 15, 51,124, 33, 48,228,244,242,242,186,196,231,243,173,114,105, 52,154, 71,133,133,133,102, 21,236,127, +227,127,211,206,249,191, 13,227, 32,120,195,245,127,196,108,143,156,156,156,237, 0,204, 71,104, 63, 5,204,101,126,183,227,255, + 47,170,138,115,255,150,235, 80,171, 52,153, 45, 18,253, 95,133, 78, 81, 50,177, 93, 95,199,240,121,194,198, 52, 14,255,231,176, + 69,193, 50, 51,238, 60,108, 72, 82, 90, 31, 60,124,248, 80, 1,224, 76,237, 98,188,191, 75, 0,250,212, 25,244,127, 4, 74,169, + 28,128,109, 51,127,108,128, 37,229,201, 14, 59,254, 87,241,143, 80,180,236,176,195, 14, 59,236,176,195, 14, 59,254,197,208,207, + 58,212,173,235,190, 16, 0,221, 77,141,168,143, 73,144, 16, 98,146,195, 18,172,241,219, 57,237,156,118, 78, 59,167,157,211,206, +105,231,252,239,113,254,207,129,214, 38,142,252, 59, 22, 0,221,237,156,118, 78, 59,167,157,211,206,105,231,180,115,218, 57,255, +203, 11,128, 17,230,214,173,167,204,182,195, 14, 59,236,176,195, 14, 59,236,176,227,169, 96,179,162,229,228, 23, 30,238,221,184, +197, 6,143, 70, 81,215, 61, 26, 69, 93,247,110,220, 98,131,147, 95,120,248,223, 41,220, 63, 21,132, 16, 41, 33,100,176, 64, 32, + 56,230,239,239, 95, 78, 8, 49, 89,122,231,223, 14, 66,136, 11, 33,164, 63, 33,100, 14, 33,228, 13, 66,136,195,243,228,239, 74, + 8,255,109, 66, 70, 13, 35, 36,115, 24, 33,153,111, 19, 50,170, 43, 33,255,185,184,193,217,227,100,177,191, 31, 25,114,120,246, + 56, 89,172,201,246, 73, 50,207,243,199,222, 90,177,112,116, 3,143,231,177, 63, 66,136,179,175,175,239, 58, 63, 63,191,135,190, +190,190, 25,190,190,190,235, 9, 33,174,207,131,219, 14, 59,236,176,195, 14,147, 56, 72, 8, 25,161, 91, 96, 16,163,197, 7,128, +131, 7, 15,118, 1,240, 27,128,174,241,241,241, 73,198,163, 61, 2,155,127, 16, 30,214,116,242,188, 89,211,136,159,143,151,131, +134,229, 84, 15, 30,102, 69,204,156,151,248,179, 71, 96,243,165,197, 25, 41,223,215, 87, 34, 66, 8,225,241,120, 3,197, 98,113, +111, 0, 58,133,237,166, 66,161, 56,192,178,236,118, 90,107,123,179, 6, 63, 63,191,100, 30,143,215,184, 62,251,102, 89, 54,243, +241,227,199,230,179,150, 90, 0, 33,100, 64, 64, 64,192,250, 46, 93,186, 56,196,196,196, 64, 36, 18, 97,198,140, 25, 19, 1, 44, +179,149,195,195, 35,216, 89, 37,150,140,231,139, 68, 61,168, 90,217,140,130, 2,140, 56,149,211, 40, 78, 8, 21,138,165,197,197, +247, 42,172,179, 0,132,144,105, 0,134, 67, 59, 29,253,123, 74,105,253,146,236, 24, 97,120, 43,162, 86,179,218,223,132,144, 15, +214,213,213,245,183,233,211,167,243,123,247,238,141,239,191,255,190,227,186,117,235, 70, 16, 66, 78, 0,248,133, 82,122,239, 89, +246, 5, 0,190,192,200,246, 29, 59,174, 24, 54,113, 34, 79,158,156,140, 21,235,215, 47, 71,121, 57, 0,172,174, 15, 15, 33,132, + 8,133,232,239,229, 37,232, 77, 41, 90, 17,128, 16,224,106, 65, 17,119, 72,165, 98,183,211,250,214,247,121,146,123, 48,158,156, +142,191,165,190, 28,101,247,232,231,226, 62,225,157,202,238,157,250, 28, 64, 47,227,118, 77,141,100, 24,229, 53,234, 45,167, 87, +178, 0, 44,121, 90, 89,107,229,117,240,246,246,190,190,111,223,190,134, 49, 49, 49,124, 0,184,116,233,210, 59,189,123,247,238, + 70, 8,105, 70, 41, 45,127, 22,254,103,144, 75,194,103,152, 81, 34,129,160, 7,203,178,205, 1,128,199,227,165, 40,213,234, 99, + 26,142, 91, 77,109,204,201,102,135, 29,118,252,119, 97, 77, 23,249, 39,131,218,144, 25,254,183,248,248,120,114,240,224, 65, 10, +163, 41,226, 78,190, 97, 17,145,145,225, 19,143,236,217,216,168,180,184,180,102,213,226,141,151,171,248,162,234,144,136, 16,225, +170,101,139,220, 71,141,155, 48,222,201, 55,236,124,101, 94,250, 13, 91, 5, 34,132, 4, 72,165,210,221,139, 23, 47,110, 22, 23, + 23, 39,240,241,241, 65, 94, 94, 30,110,222,188,217,236,228,201,147,125, 55,110,220, 56,145, 16,210,143, 82,106, 45, 35, 60, 0, +132,156,216,180,222,199,209,195, 19,172, 90, 13, 89, 84, 43,157,127, 20,119, 79,254, 10,141, 74, 5, 78,173, 70,120,239,190, 0, + 0,142,227, 16, 17, 17, 97, 91, 81,192,186,114,203, 34, 35, 35, 55, 47, 88,176, 64,168, 80, 40,112,254,252,121,156, 58,117,138, +203,205,205, 77,180,149,195,201, 55, 52,142,145, 58,110, 31, 56,228, 67,215,215,123,191, 32, 8,240,245, 6,224,128, 91, 15, 52, +237, 15,255,122,178,205,158,237, 63,126,226,228, 27, 58,176, 50,239,246, 41, 75, 60, 30, 30, 30,237, 8, 33,243,117, 25,162, 9, + 33, 95, 53,105,210,228, 11,195, 62,198,117,243, 40,165,224,243,249,121, 21, 21, 21, 3, 11, 11, 11,175, 24,115,170, 89,240,183, +108,209,234, 17,159,143, 26,204,251,227,143, 63, 28, 35, 34, 34, 20, 0,176,104,209, 34,204,153, 51, 71,116,244,232,209, 87, 55, +109,218,244, 42, 33,100, 57,165,244, 23, 91,143,219, 20,132,192,103,195, 38, 78,228, 57, 61,124, 8,167,107,215, 48,164,188,156, +255, 37,240, 25,234,161,104, 17, 66, 94,240,243, 19,252, 60,113,194,187,225, 65,193,237,132, 66,161, 23, 40,165, 80, 41, 11, 67, + 51, 51,175,244, 79,252,114, 93, 2, 33,228, 77, 74,169, 77, 25,107,137,214,162, 54, 27,128, 4,192,231, 0,102, 20, 20, 20,132, +176, 44, 11, 63, 63,191, 25,132,144,189, 0,230,121,123,123,211,130,130,130, 41,148, 82,179,181,122,102,143,147,197,150,223,163, +159, 63, 38, 65, 61,155, 70, 15,195, 99,114,164,231,132, 94,254,135, 93,130,201,188,153, 43,114,206, 2, 64,175,224, 96,231,160, + 48,199, 41, 78, 46,205, 61,202,179,143, 79,233, 21, 28,252,221,225,123,182, 41,218, 70,114, 19, 0,144,201,100,139, 54,109,218, +212,168,109,219,182,250,223,120,203,150, 45,121,139, 22, 45,106,240,233,167,159, 46, 7,240,174,141,124,161,222,222,222, 71, 89, +150, 85, 20, 21, 21,133,234,182,251,180,232,215,222,211,217,241,165,130,146,138,228,194,180,189, 73, 54,114,197, 72,132,194, 93, +191,108, 94,225,223,178,109, 44,227,228,229,131,154,236, 28, 84,170, 85,221, 79,157, 62,215,117,196,168,207,198,213, 94, 35,203, +117,152,236,176,195,142,255, 58,204,234, 34,255,102,232,221, 52,181, 7, 86, 7, 98,177, 40, 97,230,244, 41,164,180,168, 84, 94, + 83, 94,161, 84,215,212,212, 48, 66, 90,147,114,227,207,124,134,207, 43,253,116,220, 88,231,132,169,211, 19, 0, 12, 49, 53,222, + 24,132,144,128, 22, 45, 90, 92,216,189,123,183,143,135,135, 7,202,202,202, 80, 84, 84,132, 11, 23, 46,128, 82,138,126,253,250, +137,219,182,105,211,234,243, 25, 51,206, 18, 66, 98,109, 81,182, 28, 61,188,176,168,163,182, 22,237, 23, 15,139,116,251,193,186, + 1,189,245,125,230, 60,210, 86,203,144, 72, 36,250,130,196, 79,129,216,151, 94,122, 73, 8, 0,239,191,255,126,121, 69, 69,197, + 66, 0, 91, 40,165, 54, 85, 90,117,242, 13,141,243,242,151, 29,248,118,205, 34,105,243,224, 16,168,212, 26,100, 60,206, 1, 95, +224,134,134, 13,133,120,119, 72, 15, 65,231,246, 30, 94,243,231,174, 59,232,232, 29,250, 70, 85,193,237,163,230,184,220,220,220, + 54,110,223,190, 29, 59,118,236, 0, 0,220,190,125, 27, 33, 33, 33,142,214,100, 72, 77, 77, 13,122,237,181,215,182, 1,120,209, + 90, 95,227,196,248, 98,177, 24, 29, 59,118, 68, 68, 68, 4,246,237,219,215, 21,192, 51, 41, 90, 0, 32, 79, 78,134,211,181,107, + 64, 82, 82,189,199, 18, 66, 94,136,142, 14, 60,119,232,224,102,175,131,135,110, 98,201,146,245,184,119, 79,107,104, 11, 10, 10, +194,224, 65, 3, 4, 41, 41,103, 34,251,247, 31,124,134, 16,210,145, 82,122,219, 6,218,217,223,125,247,221,180, 38, 77,154,160, +127,255,254, 3, 34, 35, 35,253, 92, 92, 92,176,118,237, 90,248,251,251, 7, 41,149,202,187,251,246,237,147, 61,126,252, 24, 99, +199,142, 5,128,137,230,136,186,190,210,245,115,113,159,240, 78, 77,163,135,193,201,197, 31,223,109,221,142, 91,151, 55,118, 82, +168,110,126,190,112,116,131,161,114, 42, 30,222, 48,196, 57,161,113,235, 46,158, 47, 70,190,134,192,232, 43, 94, 53,236,239,127, +206, 24, 21,148,200,151,212,108,156,185, 56,167,168,206, 49, 15,248,153,215,172, 60,221, 35,245, 24,138, 40,157,201,213, 42, 88, +250, 27, 18, 75,241, 90,231,206,157,245, 23,238,225,195,135, 80, 40, 20, 8, 15, 15,103,148, 74,165, 77, 57,177, 8, 33,161, 47, +191,252,242, 31,135, 14, 29,242, 12, 13, 13,125,162, 36,140,159,167,219, 43, 73,187,151,143,157,191,226,167, 48,159,136, 55, 74, +243,111,236, 73,177,194, 21,211,161, 93,244,241,195,187, 55, 59,145,202, 44,136,220, 10, 1,174, 8,247,183,253, 0,226,224,129, +129, 31, 79,224,199,189,212,173, 65,143, 94,111, 30, 39,132,188, 68, 41,189,104,139,140,118,216, 97,199,127, 19,230,116,145,127, + 51,244,138,150,129, 22,249, 4, 56,202, 69,249,250,120, 74,151, 47,222,112,145,167, 82, 42, 29,221, 92,149, 2, 87, 23,142, 56, +187,242, 84, 74,117,101, 96, 80,160,136,163,156,201, 18, 36,212,104,138, 39, 33,132, 72,165,210,221,191,252,242,139,143, 64, 32, + 0,199,113,240,246,246,198,131, 7, 15, 80, 90, 90,138,138,138, 10,220,187,121, 19, 77, 2, 26, 97, 86,194, 20,255,177, 83, 18, +118, 19, 66, 90, 27,186, 17,141, 57, 1,128, 85, 63, 89, 55, 90, 87,130,197, 24,186,109,198,109,166, 56,205,224, 65,102,102, 38, +156,156,156,208,172, 89, 51,167,211,167, 79,255,110, 78,201, 50,230,244,240, 8,118,230, 59, 73,119,124,243,237, 12,169, 74,157, +138, 27,247,139,209,180, 73, 39,248,122, 6, 32,167, 88,137,115, 23,126, 65,234,245, 45, 8,110, 16,128,209, 31,119,147, 36, 46, +250,121,187,187,251, 11, 1, 37, 37,127,150,155,226, 44, 47, 47,119,122,225,133, 23, 16, 16,160,173,123,198,178, 44,110,220,184, + 1,150,101,245,235,134,159, 27,118,157,132,166, 60, 3,195,222,121, 7, 69, 69, 69, 78,166, 56, 5, 60,104, 38,140, 24,204,151, + 10, 0,145,163,135,178,178,178, 82,111, 29, 84,169, 84,184,122,245, 42, 98, 99, 99,187,236,220,185, 51,201,210, 73,178,245,124, +170,128,175, 86,252,248,227,202, 33,101,101, 12, 0,124, 79, 8,167,162,244, 43, 91, 56, 9, 33,196,199, 71,176,235,200,225, 77, + 94, 60, 38, 29, 30,174, 95,226,194,133, 12,168, 84, 90,121,139,138,242, 49,102, 84, 57,132, 2,103,236,219,247,147,103,120,120, +199, 93,181,174, 51,206, 28,103, 45, 36,135, 15, 31,198,152, 49, 99,112,227,198, 13, 25,143,199,195,249,243,231, 33,149, 74,177, +120,241, 98, 94,120,120,184,204,209,209, 17, 71,142, 28, 65, 94, 94, 94,157, 31,153, 33,231,111, 71,127,155, 87,118,239,212,231, +143,201,145,158,223,109,221,142, 15, 7, 13,132, 31,189,255,187,107, 48,153,247,114,159, 14, 95, 80, 94,163,222,142,206, 81,238, + 33,205,250, 64, 40,114,194,232,207,230,224,118,234,126,247,234,138,235,163, 8,155,213, 8,181,181,255, 12, 57,233,206,254,236, +202,173,103,162,143, 5, 92, 12,148, 69,143, 60, 15,224, 58,244,138, 86, 16,159, 48,172,107,237, 24,220,189,123, 23,247,238,221, + 3,159,207,135, 92, 46,135, 70,163, 49, 41,103,131, 6, 13, 70,106, 52,154, 47, 0, 64,165, 82,109,240,247,247,127,111,243,230, +205,158,134,138,182,206,146, 85, 92, 90, 94,114,230, 98,218,173, 9, 35,251,119, 77, 62,151,154,229,214,162,111,102,233,181,189, +101,102,174,145, 68, 42, 18,237, 58,178,231, 39, 39,245,159, 39,225, 24,222, 21, 2,167, 16,176,234,108, 84,151, 84,161,226, 94, + 46, 20,223,126,141,150,163, 62,197,254,189, 63, 59, 69, 54,111,189,147, 16, 18, 66, 41,213,215, 63,170,199,127,211,102,216, 57, +237,156,118,206,127, 38, 39, 96, 94, 23, 1, 16, 13,192,183,246,123, 17,180, 33, 51, 94, 0, 10,161, 45, 7,230, 11, 64, 9, 64, +100, 48,198,120,221,176,175,241,186,225,247,162,218,239, 62,181,159, 23, 1, 20, 91,146,155, 16,226, 15, 32, 30,218,216,172,120, + 0,160,182,102,134, 39,132, 41,103, 89, 78, 44,244,246,169,121,255,173,151,154,255,122,252,210, 85, 7, 47, 23,254, 43, 93, 91, +117,185,144,242,231, 89,194, 16, 53, 33,140, 77,113, 31, 60, 30,111,224,242,229,203,155,187,184,184,128,227, 56,184,186,186,162, +160,160, 0, 74,165, 18,101,101,101, 80, 84,148, 67, 85, 81,142,107, 89, 15,209,161, 75, 87,188,217,243,229,240,159,246,254, 50, + 16,192, 54, 75,188,178,168, 86,122, 75,214,156,198,158,250,237,179,179, 74,245, 74,215,151,173, 66, 32,116,114, 66,143, 9, 9, +182,136,106, 18,148,210, 43, 34,145,232,112,191,126,253,122, 77,154, 52,137,201,205,205, 61, 66,198, 17,252, 55, 0, 0, 32, 0, + 73, 68, 65, 84, 8,233, 64, 41,181,234, 54, 85,137, 37,227, 63, 25,223,219,221,221,137, 98,231,177, 95,208,185,213, 32, 56,136, +120, 40, 42, 87,129, 16,224,102,218,110, 16,226,129,235,183,115,209,169,165, 11, 94,126, 37,220,105,239,207, 55, 39,225,175,248, + 32, 99,144,146,146, 18,228,231,231, 67,173, 86, 67,173, 86,163,255,128, 1,216,180,113, 35,170,170,170, 32,151,203,161, 84, 42, +193,178, 44, 24,134,193,177, 3, 59,145,245,231, 77,180,143,141, 5,204,152,100, 55, 92,161, 2, 66,200,185, 91,183,110,225,230, +205,155,120,244,232, 17, 36, 18, 9,252,252,252, 48,103,206, 28, 40, 20,218, 26,101, 3, 6, 12,232, 2,192,162, 37,195, 22,220, + 3,214, 61, 96,217,207,123,237,217,227,115,122,207, 30,238,220,254,253,143,196, 21, 21,107,109, 25, 43, 20,162,255,162,175, 62, +110,234,232,232,136, 71,153,203, 17, 22, 38,196,196, 79, 61,177,240,203, 66, 0,192,216, 49, 13,209,166,181, 23,202, 75,127,134, +151,207, 52,172, 92, 57, 46,120,248,240,165,239, 0,216, 96,133,250,243, 95,126,249,229,205,144,144,144, 6, 87,174, 92, 33, 34, +145, 8, 82,169, 20, 82,169, 20, 18,137, 4,249,249,249,120,240,224, 1, 93,180,104, 81, 54,180,174, 69,179,168,117, 15,246,154, +208,203,255,240,173,203, 27, 59, 53,224,253,121,237,205,209, 29, 31, 94, 63,119,165,226,215, 99,167,231,106,106, 36, 89,165,143, +142, 79,121,161,205, 21,175, 81,147,103,227,235, 69, 51,113,235,124,114,177,111, 64,249,106, 41, 81,108,104,219,163, 46,103,215, +174,179,249,163,102,188,165, 25, 57,252, 77,183,253,190,103, 70, 30,226,147,130,199,133,151, 23,227,193, 21,185,248,197, 86, 67, + 67,131, 24,229,201,147, 39,165,157, 59,119, 70, 77,141, 54,236,137,199,227, 97,243,230,205,156, 70,163, 49,233,142, 86,169, 84, + 95,100,103,103,251,203,229,114,244,236,217,115,236,226,197,139, 29,117, 53,234, 88, 86,155,136, 94,103,201,154,183,108,211,209, +241, 95,172, 62,117,116,219,151,178,121, 9,239,117, 29, 50,122,254, 41,152,169, 35,201,103,152, 81,251,247,172,247,147,184,171, + 33,245,120, 25, 53,121,114,220, 90,247, 33,170,203,107,208,102,222,108, 0, 34, 40,213, 12,214,246,233, 15,129,167, 12, 51, 63, +120, 79, 54,125,237,119, 31, 3, 88,110,229, 26,217, 97,135, 29,255,123,240, 37,132, 28, 0,128,132,132,132,105, 11, 23, 46, 76, + 35,132, 28,160,148,246, 6, 0,221,119, 93, 31, 0, 48,181,174,235,107,188,110,252,125,234,212,169,145,137,137,137, 11, 98, 99, + 99,183,157, 57,115,230, 79, 88, 81,180,160,173,255,188,206,184, 20, 15, 80, 59,235, 48, 62, 62,158, 24,126, 26,130,227,184,228, +187,127, 62,172,126,185,123,219,134, 7,146, 82, 46,190,251,110,252, 75, 3,251,116,126,229, 65,102,209,205,224, 64, 63,175,180, +180, 20, 23,142,227,146,109, 57, 75, 98,177,184,119,183,110,221,248, 37, 37, 37,112,112,112, 64, 65, 65, 1,178,179,179,161, 82, +169, 80, 83, 86, 10, 69, 89, 41,106, 74, 75,160, 42, 43,193,189, 75, 23, 16, 21, 28, 36,174, 13,150,183, 8,157,213,197,216, 82, +101,104,217, 18, 57, 59, 67,236,236, 12, 82, 79,183, 33, 33,228,117,119,119,247,115,132,144,207, 1, 64,165, 82,141,154, 50,101, + 74, 33,199,113,152, 63,127,190,139,147,147,211, 78, 66,136,216, 26,143,179, 55,175,119,108,203,102, 76,250,131,235,232,216, 98, + 24, 66, 95,120, 21, 15,242,228, 40,172, 80, 33,191, 84,133, 54,157, 87,161,113,139,217,104,212,114, 33,110,102, 20, 67,214, 32, +132, 1, 95,108,177,248,115, 86, 86,214, 19,235,219,182,110, 69,117,117, 53,130,131,131, 49,104,208, 32, 76,153, 50, 5,131, 6, + 13,130, 76, 38,195,144,183, 94,195,204,153, 51,241,248,241, 99,107,162, 42, 66, 67, 67, 21,129,129,129,138,192,192, 64,133, 74, +165, 66,101,101, 37, 74, 75,255,170,207, 91,123,190,199, 89, 35, 50,134,175,175,239, 84,127,127,255,235,190,190,190,105, 18,137, +228,208, 85, 66,210,107, 2, 3,125, 59,244,237, 75, 34,222,122,139,151, 33,149,146, 36,192,201, 42, 17, 0, 47, 15, 65,124, 92, +183, 94,162,210,146,245, 0,180, 70,170,247,222,245,198, 31, 73,145, 56,253,123,107,140, 25, 21, 12,194, 72, 64, 24, 17,170,171, + 78,162,109, 76,172,208,205,141, 88,252, 45,213, 6,190, 95,237,208,161,131,108,244,232,209, 68, 44, 22, 99,236,216,177,170, 15, + 62,248,224,206,160, 65,131,238,156, 56,113,130, 13, 12, 12, 68,163, 70,141, 72,163, 70,141,252, 1, 92,173, 29, 99, 17, 46,193, +100,158, 66,117,243,119,183, 16,199, 63, 89,120,181,175, 84,139,251,207, 92,156, 83, 52,119,245,253, 37, 15,110, 85, 7,221, 58, +159, 92,116, 39,117, 63,247,224,226,111,133, 57,119, 42,130,230,174,190,191,100,234,215,217, 38,255,212, 73, 73,224,118, 31, 72, + 82, 85, 87, 85,243,251,246,137,171, 30,249,254,192, 80, 15,167,200,205,104,240,114,139,198, 1, 13,135,204, 92,176, 82,245,193, +199,227, 85,223,255,176,158, 86, 84, 84,160,188,188, 28, 43, 87,174,212,236,223,191, 63,155,101,217,241,102, 68,228, 1,128, 90, +173,198,200,145, 35, 29, 93, 92, 92,144,149,149,165,183,136, 2, 64,110, 65, 81,202,233,139,169,233, 19, 62, 26,208,165, 74,161, + 80, 28,253,237,210,205,136,144,192,134,132, 80,179, 19, 81, 68, 2, 65,143,214,109,219,242, 40, 45, 5,225, 7,224,222,198, 69, + 40,127, 92,140,242,252, 98,240, 4,142,208, 64, 12, 53, 39,130, 91, 84, 12,110, 95,188,130, 6,222,190,124,177, 64, 96, 47,157, +101,135, 29,255,163,176,164,139,232, 64, 41,237,157,152,152,184,192, 82,187,193,167,210,104, 93,175, 72, 25, 43, 97,134,223, 1, + 32, 49, 49,113, 1,165,180,247,153, 51,103,182, 2,176, 88, 72,221,128, 99,132,238,211, 48, 75,188, 85,173,131, 87,163, 92, 56, +105,202,231,112,119,149,186,198,180, 10,241,219,119, 36,233, 82,242,153, 75, 55, 27, 55,242,242,166,106,165,251, 87, 75,191,110, + 72,170,229,182, 6,131,135,123,121,121, 65,165, 82,225,238,221,187,120,244,232, 17, 84, 42, 21, 52, 85, 85, 80,148,150,162,166, +164, 4,108, 85, 5,132, 44, 11,121, 65, 62, 60, 29, 36,192, 95, 51, 18,173, 29,160, 73, 69, 75,247, 41,113,113,129,216,217, 5, +140, 64, 96,210,173,104,134, 51, 58, 38, 38,102, 71,106,106,106,219,238,221,187,207, 37,132,184, 82, 74, 51,178,179,179, 95,154, + 49, 99,134,194,215,215, 23, 35, 71,142,108, 10, 96,152, 53, 46,177, 72, 25, 30,232,215, 20,161, 65,195,208,184, 81, 55,148, 86, +169, 81, 80,174, 70,126,169, 10,107, 87,197, 98,215,247, 49,248, 99, 87, 39,164, 30,237,129, 82,181, 31,156,100,175,131,178,202, + 72, 75,156,199,142, 29,195,156, 57,115, 48,119,238, 92,204,159, 63, 31,115,231,206, 69,118,118, 54,154, 53,107,134,204,204, 76, + 28, 62,124, 24,185,185,185,240,242,242,194,133, 11, 23,176,108,217, 50,252,241,199, 31, 86,143,219,150, 9,159,148, 82, 16, 66, +234,229, 75,215,104, 52,195,115,251,246,109,158,231,225, 17,209,170, 85,171, 94, 99,199,142, 13,234,208,161,131,190, 61, 40, 40, + 40, 64, 42,149, 62, 38,132,124, 79, 8,105,105,137,139, 3, 90,121,123, 55,131, 82,145, 14, 0, 32, 68, 0, 66, 36,232,214,227, + 38, 58,116,186, 4,149, 90, 8,134,136,193, 48, 18,104, 52, 69,112,119,151,129, 82,210,204,138,136, 51, 10, 10, 10, 66,142, 31, + 63,206, 60,120,240, 0, 18,137, 4, 0, 30,206,154, 53,235,235, 37, 75,150,220,240,244,244,100, 15, 28, 56,128,189,123,247,162, +119,239,222,188, 15, 62,248, 32,164, 81,163, 70,107,172, 29,247,204, 21, 57,103,183, 44, 61,252,182, 64,237,222, 82, 34,109,220, + 4, 85, 78,175,143,234,234,237, 8, 0,135,239,221,171,240, 9, 40, 79,172,170,184,158,233,214,176,242, 75,107,129,240,148,206, +228, 46,223, 73, 63,183,101,207,145,178,252,188, 18, 65,171,230,145,242,133,115, 38, 11, 27, 55,121,241,171,153, 83, 62,242,203, + 46,151,148,246, 24,123, 56,125,247,145, 11,149, 67,223,253, 80,243,254,136,209, 53,135,143, 28,219,195,113, 92,115,115, 51, 14, + 57,142, 67,110,110, 46,210,210,210,112,255,254,125, 20, 20, 20,160,176,176, 16, 21, 21, 21,122,119,163, 67, 69,249,193,175,127, +220,127,205, 81, 42,117,104,219, 60, 36,224,252,149, 27,249,142, 82,169, 67, 72,147,128, 80, 66,102,155,188,143,176, 44,219, 92, +226, 32, 5, 64, 80,154,154,140,202,146, 74, 84,150, 86,162,162,184, 18, 10, 21, 15, 53, 10, 6,114, 37,131,192, 46, 47,163,178, +170, 6,149, 69,101,224, 88,182,133,181,243,105,135, 29,118,252,239,130, 16,114, 32, 33, 33, 97,154,141,221,109,118,111, 26, 43, + 94, 9, 9, 9,211, 8, 33, 7,166, 78,157, 26, 9, 27, 98,154, 41,165,235,140, 23, 93,155,213,244, 14,133,133,183, 43, 93,188, + 35,250,125,250,217, 23,135,183,254,176,202, 71,161,168,206,244,116,119, 98,157, 28, 68, 94,239,143,156,143,138,255,199,222,119, +135, 69,113,182, 95,159,103,182,178,133,222, 23, 80, 1, 69, 80, 81, 32, 34, 98, 71,141, 38, 98, 87, 44,177, 71,163, 73, 52, 70, + 99, 12, 70,141,189, 36,175,209,104, 98,130,198, 18, 53, 26, 27,198,222,137, 37,118,197,130,138,162,244,222,235,246,221,153,231, +251, 67, 32, 72, 40,139, 49,191,247, 77, 62,206,117,141,203,206,206,156,185,103,132,217,123,238,114,238,178,194, 33,101, 38,202, + 17, 0, 64, 97, 97, 33, 18, 18, 18, 32,145, 72, 32, 20, 8,192,170,213, 96,213, 74,168, 11,243,193,232,181, 16,178, 44,108,164, + 18, 52, 85, 56,161,153,163,147, 73,156,207,162,206, 84, 22,190, 87, 77, 23,254,167, 67, 43,136,100,114,136,204,229,248,224,216, + 5, 0,128, 80, 40, 4, 22, 46,171,151,147, 16, 98,231,226,226,114,100,247,238,221,194,220,220, 92,220,189,123,247, 30,165,180, +152, 16, 98, 14,128,123,252,248,241,185,152,152,152,254, 94, 94, 94, 0,208,188, 62,190,146, 60,134, 53, 24, 41, 82,179,146,144, +152, 22, 13, 27, 75, 15, 8,164, 45,145, 83,164,135, 88,226, 1,131,246,143,236,163,166, 36, 25,106,189,105,141,145, 58,157, 14, + 70,163, 17, 70,163, 17, 58,157, 14,239,189,247, 30,174, 92,189,138, 95,126, 61,143,132,231, 79,225,237,238,132,113,227,198,162, + 67,135, 14,184,122,245, 79, 51,110, 95,194,132, 0, 98,152,223, 13,252,181,111, 51, 16,201,109,181, 29, 63, 59,125,163,174,237, + 43,156, 45, 74,105,189,158, 43, 33,228,235,254,253,251,183,120,170, 84,226, 97,108, 44,122, 47, 94, 12, 0, 56,113,226,196, 75, +231, 50,123,246,108,209,163, 71,143,222,189,125,251,246,187,132,144,181,148,210,154,139,205, 41,112,252,248, 53, 76,155,246, 8, +185,185, 47,234,181,247,238,249,195, 47, 77, 76,208,227,173,208, 23, 25, 45, 43, 43, 43,172, 93, 91,159,143,245, 2, 44,203, 98, +243,230,205,149,233, 66, 0,224,243,249,157,103,207,158, 61,180,166,237, 91,180,104, 33,172,143,115,118,152,171,217,221,100,201, +135,150, 45,154,181,177,176,107,135,124, 67,180,111,116,122,230,140,217, 97,174,223,172,221,159,166,145, 16,237, 79,132, 77,117, +227,155,105,118,152, 98,227,243,147, 27,116, 86,205, 38,238,200,202, 45,153, 63,125,202, 59,182, 22, 86, 14,202, 45,223,173,178, +102,120, 12, 61,114, 91, 95,212,198,211,214,106, 80,199,245,101,211,102, 45,140,214, 25, 83,167, 35,245,200,211,186, 36, 46, 88, +150, 69, 70, 70, 6,114,115,115,145,146,146,130,188,188, 23,233,215,188,188,188, 63,117,174, 54, 4,132, 16,168, 83, 82,144,124, +104, 11,154,141, 29,139,192,101, 75,193,114,124,168, 85, 44,214,118,234,133,194, 98, 53,180, 28,129,226,141, 78,152,114,226, 50, + 24,202, 2,155, 26,164,236,209,136, 70, 52,226, 95, 4, 83,228, 29, 42, 28,162, 85,171, 86,213,155,237,106, 40,170, 58, 91,171, + 86,173,122,184,106,213, 42,147,143, 85, 61,101, 88,245,125,189,242, 14, 0, 80,146,251, 40,222,182,105,187, 12,165, 90, 41,117, +116,176,215, 74,205,196, 92,113, 73, 41, 47,250,193, 61,125, 89,230,179, 39, 13, 56,143,199, 49, 49, 49,190, 25, 25, 25, 72, 73, + 78,134, 81,173, 4,163,213,129,106, 84,232,221,165, 19,204, 0,152, 49, 4, 66, 78, 15, 62, 79,132,210,178, 18, 0,120, 92, 31, + 41,107, 48, 84, 61,217,202, 69,100,110, 14,145, 76, 6,145,220,188,242, 51,192,180,136,141, 88, 44,222,189,127,255,126,103, 23, + 23, 23, 44, 93,186, 20,174,174,174, 62,109,219,182, 85,117,237,218, 85,226,232,232,136,214,173, 91,163, 83,167, 78, 56,121,242, + 36, 0,212,171, 41,101, 48,154,221,127,146,132,206,121, 5, 87,113,249,194, 15,208,169,181, 8,232,254, 3,244,252,102,176,111, +179, 4,220,179, 93, 80,101, 29, 6, 0, 72,157, 6, 32, 45, 37, 9,132, 39,122, 88, 23,103,213,243,168,248,249,222,189,123,216, +115,248, 34,156,155,182, 66, 74, 92, 44, 98,127, 59,135, 43,246,182,104,218,170,117,101, 26,168, 86, 27, 89,240,151,111,172,148, +119, 16, 23, 20, 20,136,109,108,108,180,192,139,107,231,236,236, 92,163, 13, 38, 58, 91,239,204,153, 51, 7, 69, 2, 1, 16, 26, + 10, 97,124, 60,244,122, 61, 58,118,236,136,192,192, 64, 0, 64,199,142, 29,193,231,243,209,174, 93, 59, 40, 20, 10,108,220,184, +241, 29,212,210,213,199, 16,220, 53, 26,243,125, 60, 61, 61, 43, 29,173, 29, 59,115, 17,125,251, 77, 16,136,176,225,187, 63,212, + 28,154, 52,105,130,172,204,120, 16, 66, 99,234,177,113,153,147,147,211, 66,103,103,103,207,175,191,254,154,103,102,102,134,247, +223,127,223,163,172,172,172, 25, 0,172, 94,189, 26,243,230,205, 3, 0, 44, 90,180, 8,139, 23, 47,134, 86,171, 85,213, 70,182, +115, 93, 59, 69, 78, 1,247,174,163,147,203,144, 16,187,102,109,123,246,237, 13, 15,175,158,232,217, 55, 5, 0, 86,218,240,147, + 70,252,103,129,239, 33, 59, 55,155,109,103, 78,157, 93,212,165,123,207,249,225, 83,173,151,175,222, 84, 88,111,205, 99,113,242, + 79,165, 79, 68, 35,215,125, 27,177,115,221, 23,243,102,154,165,228,234, 10,211, 11,105,153, 92,204,151, 55,119, 36,242, 25,115, +151, 37,100,100,196,127,130,212, 83,245,118, 90,114, 28,135,248,248,248,202,154, 62,141, 70, 3,165, 82,137,212,212,212,202,223, + 25,181,204,226,173,233, 19, 7,248, 41,213,106,213,141, 7,113, 41, 11, 62, 26, 19,172, 84,171, 85,113,137, 41, 79, 41, 93, 95, +163, 55,198, 48,204, 3, 85,169,170,183,170, 72,131,220,187, 79,224,218,171, 41, 12, 70, 2,157,145, 69,110,126, 41,180, 70,128, +101, 4,104, 51, 98, 28, 88,194, 71, 94, 70, 58, 24, 30,239, 94,125,246, 54,162, 17,141,248,215,162, 94,121, 7, 66,200,177,224, +224,224, 95,128, 63,162, 78, 21, 63, 3,208, 2,168,171,148, 39,183,170, 51, 85,145, 78,172,237, 56,213,120, 77, 66, 77, 53, 90, +245,202, 59,148,239, 72,252,218, 54, 85,252,103,209, 24, 87,206,104,244,206,201,203, 54,242,249, 98,129,155,165, 58,211,212,131, + 3,128, 86,171, 61,118,238,220,185,193,111,190,249,166, 56,238,193, 61,232,138,139,161, 43, 46,130,128, 51,194, 70,210, 30,140, + 94, 11,162,211,193,197,135,131,166, 84,130,139, 87, 98, 12, 90,173,246, 88,125,188, 21,142, 22,195,227,189, 92,151, 37,151, 67, +108,110, 1,177, 92, 94, 61,181, 88,167, 83, 64, 8,145, 14, 28, 56,176, 87,199,142, 29, 65, 41,197,230,205,155,161,215,235, 69, +122,189, 30, 58,157, 14,122,189, 30, 37, 37, 37,216,185,115, 39,190,255,254,251, 43, 0,182,215,103, 35,103,212,157, 59,125, 54, +170,195,164, 49,253, 5, 39,142,173,133, 81,199, 66, 77, 92,161, 84, 26, 80,166,147,130,181, 29, 11,100, 31, 7,143,111,134,224, +118, 30, 56,124, 32, 82, 15,163,246,124,125,188,192,203, 14,151, 78,167, 67,106, 74, 18,210,158, 63,133,188, 36, 11,246, 22, 82, +168,226,159, 34, 96,220,248, 87,138, 78,184,185,185,129,227, 56,132,132,132, 84, 22, 87,215,116,124, 83,156,173,252,252,124, 28, + 61,122, 20, 29, 59,118, 68,247,238,221,145,158,158,142,248,248,120,244,235,215,175,114,155,123,247,238, 33, 58, 58, 26,205,155, +215, 29, 36,204, 43, 48,156, 72, 75,189, 27, 54,104,208, 32,225,245,235,215, 65, 41,133,151,151, 5, 44,204,101, 32,140, 24,173, + 90, 57, 0,120,241, 12,208,163, 71, 15,148,148,196, 27, 11, 11,233,137,186, 56, 41,165,187, 9, 33,191,234,116,186,103,221,186, +117, 83, 60,127,254, 28,179,102,205,226,239,221,187, 23, 0, 16, 30, 30,142,240,240,151,155, 41,212,234,218, 83,247,222,109,125, + 62,245, 48, 90,119, 55,147, 52,115,183,176,107, 7, 15,175,158, 0,128, 55,251, 79,130, 71,139, 38, 40,201,187,239,174, 81, 39, + 13, 17,242, 11,173,239,111, 72,127, 36, 9,245,157,168,201,185, 16, 7,192, 20, 1, 96,170,142,219,155,157, 34, 24,187,239,215, + 35, 39,167,246,235, 63, 80, 96, 96,141, 70,223,166, 2,171,253,135,142,231,164, 39,167,172, 71,202,169, 10,199,178,206, 39, 11, +150,101,217,146,146, 18,200,100, 50,196,196,196,104, 67, 67, 67,197, 12,195,224,217,179,103,149,142,150,131,157, 77,235,206,129, +190, 62,203,215,237, 60, 45, 19,139,197,125,123,180,111,245, 40, 46, 57,141, 82,146, 84, 27,175,206, 96, 56,251,224,238,189, 16, +123, 69, 11, 94,252,133,235,176,237,218, 15, 90, 45, 3,181,142,131,214, 8, 24,121, 66, 56,251, 7,193,170,121, 43, 80, 0,183, +174, 95, 49,104, 13,134, 90, 37, 77, 26,209,136, 70,252,251, 81,135, 47,146, 91,197, 49, 42, 0,144,180,106,213,170,188, 42,209, +166, 92, 0,247, 0,248,149,111,151, 91,109,191, 92,188,232, 30, 12,172,194,147, 11, 84, 58, 92, 85,127,214, 85,219,198,164, 7, +192,170, 53, 90, 85,215,215, 43,239, 0, 0,118,118,118, 14, 1, 1,237,155,255,184,117, 31, 40,165,120, 18,189, 6,133, 57,177, + 88,184,242, 90,115, 87, 87,215,238,105,105,105, 23, 77, 49,130,101,217,189,219,182,109,251, 36,232,141,128, 0,119, 87, 87,220, + 75, 74,132,144,178, 16,178, 44, 24,189, 22,124, 86, 7, 87, 95, 22, 12,145, 35, 35,163, 24,171,119,239,139, 97, 89,118,111,125, +188, 62,253, 6, 98,105, 90, 49, 8, 33,248, 58,216, 23, 34,115, 57,132, 50, 57, 62, 56, 18, 85,233, 92, 29, 91, 58, 15, 34,185, + 28,205,131,234, 23,132,167,148,170,204,205,205,111, 63,120,240, 32,208,215,215, 23,159,124,242, 9,146,146,146,192,113, 28,178, +179,179, 53,153,153,153,233,185,185,185, 73, 0, 14, 1,248,209, 20,229,113,161, 86,243,205,177,131, 59,166, 7,119,233,110, 55, +104,200,247,248,245,192,108, 20, 21,151, 64,101,148, 64,169, 49, 66,169,229,193,198,182, 45,130,218,181, 67, 70,122, 14, 30, 94, + 63, 93,198,215,170,214,212,127, 85,255, 0, 33, 4,209,209,209,240, 84,152,227,233,229,139,176,147, 10,224,167,112,130,162,115, +151, 74,125,169,186, 32,224,193,248,206, 59,239, 84, 42,195,247,233,211, 39,113,236,216,177,206,179,103,207,198,214,173, 91,113, +229,202,149, 63, 21,104,119,239,222, 29,151, 46, 93, 90, 2, 96, 81, 61,244, 6,157, 78, 7, 31, 31, 31,220,186,117, 11,231,206, +157, 67,207,158, 61,209,189,123,119,220,191,127, 31,103,206,156, 65,116,116, 52, 8, 33,176,181,181,133,225,133,243,108,168,141, + 76,175,199,254, 47,191,218,246,249,186,117,223,183, 25, 51,102, 12, 14, 30,252, 5,147, 38,122,131, 48, 98, 16, 34,198,192, 1, +222, 88,186,236, 22,130,130,122,192,206, 78,128,117,107, 15, 39,168,213,236,206,122, 47, 2,176,252,204,153, 51, 10,141, 70,131, +162,162, 34, 42,151,203, 73,126,254,139,142,214,154, 34, 90, 42,149,202,172, 54,162, 7,119, 30,175, 41, 42,165,133,180, 44,122, + 72,129, 49,186,109,207,190,169,120,179,255, 68,156, 61,182, 29, 81,167,207,193,134,159,148, 8, 89,233,201,188,196,188,146, 76, +165, 87, 68,171, 55, 38,243,210,148,167, 35, 62, 26,100,205,115,118,230,246,135,127, 95, 92, 84, 27, 55,165,148, 18, 66, 72,193, +163, 93, 71, 14, 81, 12,236, 20, 28,212,194,183,137,179,168, 48, 47,135, 30, 56,124, 50, 70,159,120,240, 40,202, 29,172,250,166, + 44, 80, 74,151,134,135,135,127, 81,254,243, 79, 11, 22, 44,152,188,122,245,106,251,172,172,172,202, 26,173,156,188,130,168, 78, +161, 51,216,252,162, 98,221,182,117,115,135, 75,204,196,162, 5,171,183, 93, 48,240,112,189, 54, 94, 35,199,109, 28, 49,107,225, +204,184, 39,209, 46,205, 36, 34, 28,158,187, 8,247,206,252, 6, 3, 35,196,180,115, 55,160,213,179, 40,202,203,199,249,119, 63, +132,220,209, 26,223, 95, 56,152,205,113,220, 15,117,217,218,136, 70, 52,226,223,141, 58,124,145,154, 52,246,178, 77,216,174,190, +247,175, 5,213,163, 88, 85, 97, 82, 11, 94, 94, 94, 94,206,165, 75, 55,112,225,216,114, 92, 60,182, 28, 15,163,239, 33, 35, 93, +135,244,108, 13, 44, 44, 44,174,213,182, 31, 33,164,119, 53, 67,168, 74,165, 26,186, 96,225, 23, 89,102, 18, 41,186,245,234, 5, + 39,123, 7, 72,133, 2,240,140, 28,120, 68,128,178, 92, 43, 60,189,175,194,103,219,118,229,148,169, 84, 67,171,127, 73, 84,231, +172,178, 30,132, 16,136, 45,204, 33,146,155, 67,108,110,241, 82, 26,209,204,194, 2,102,230, 22,224,139, 68, 53, 21,205,255,137, +179,172,172,108,216,240,225,195, 11,139,139,139, 49,121,242,100, 92,188,120, 49,250,244,233,211, 22,247,238,221,147,228,228,228, +180,160,148,246,161,148,110,170,205,201,170,206, 89, 80,240,188,148, 26,181, 35, 87,125,241,177, 90, 99,180, 69,216,248,189,144, + 49,169, 48,178, 28, 40, 0,133,141, 8,157,123, 47, 67,142,174, 19,246, 70,172, 80,113,122,205,152,170, 26, 90,213, 57, 41,165, +212,209,209, 17,213, 62,199,185,115,231, 16, 54,124, 24,250, 14, 25, 12,123,119, 79, 56,244,238,135,190,147,167, 33, 34, 34, 2, + 12,195,192,206,206, 14,168, 18,225,168,202,249, 83, 52, 21,236,190, 79,201,238,251,148,108,191, 67,249, 0,198,237,218,181,235, + 75, 63, 63,191,223,174, 92,185,178, 6,192,200,170,199,170, 98,203,226,170,209,172, 90,254,143,230,207,156, 57, 83, 29, 23, 23, + 7,153, 76, 6,163,209,136, 43, 87,174,224,251,239,191,199,215, 95,127,141,232,232,104,216,218,218,162,121,243,230,208,106,181, +184,117,235,150, 26,192,252,218, 56, 41,165, 92,110,174,113,216,134, 13,171,243,251,247,239,138,109,219,190,131,147, 83, 39, 8, +248, 78,224, 11,236, 33,147,251, 96,203,143, 95,226,237,183, 3,112,228,240,190,130,188,124,227,176,234, 42,238,181,216,169,185, +113,227, 6, 34, 34, 34, 48,124,248,240,244,176,176, 48,182,184,248,133,216,109,120,120,120,229,100,246,197,229, 53,102, 90,173, +246,165, 48,117, 85,206,201,115, 31,164,127,186, 60,102,105,118, 86,122,199,139,191, 93,123, 39,234,244, 57, 36,196, 69, 33,234, +244, 57, 92,142,186, 26,158,157,149,222, 49,160, 67, 75,225,208,201,211, 63,221, 17,121,144, 39,183,112,198,142,200,131,188,209, + 51, 62, 94,209,190,111,207, 90,207,189,234,101, 0, 64,203,114,178,231,173, 92,243,109,153, 81,175, 97,254,179,126, 99,134, 58, + 55,115, 62, 42, 90, 49,107,137,102, 85,229, 84,169, 84,155,212,106,181, 66,173, 86, 43, 52, 26,205,252,164,164,164,110,159,124, +242, 73, 46,203,178,149,209,210,156,135,135,175, 61,190,188,125,165,131,157,181,164, 83, 96, 27,239,181,155, 14, 92, 72, 73,205, +254,185, 66, 67,171,150,255, 35, 77,153, 90, 51,108,240,208,177,202,162, 66, 45,130, 63, 14, 7,103, 38,135,150, 5, 12,148, 7, + 35,225,227,193,242,181,144,216,152, 99,119,226, 29, 85,177, 65, 63,172,170,134, 86, 61,231,254,202,104,228,108,228,108,228,252, +223,228,252, 39,131, 16,226, 76,170,204, 58, 44,215,213, 2, 80, 30,209,170,175,165,210,197,197,165,219,160,129,189,209,163,255, + 2, 80, 74, 17,123,231, 43, 20,230, 62,129,139,147, 24,241, 41, 37,193, 0, 46,154,106, 12,165, 52,133, 16,210,113,230,252, 5, +145, 97,125,122,181,242,117,119, 23, 55,107,214, 20, 50, 7, 7,228,229,229,226,247,235,143, 12, 43,246,236,143, 41,119,178, 76, + 25,193, 3,142,227, 94, 20,185, 3,232, 53,243, 51, 16, 30, 15, 40,151,113,168,248, 98,116, 15,236, 4,194,231,131,165, 28,180, + 90,109,189, 69, 90,148,210, 52, 66,200,176, 49, 99,198,156, 63,118,236, 24,211,183,111, 95,255, 67,135, 14,189,122,101, 48,128, +178,236,167,191,201, 29, 91,246, 95, 49,111,234,222,142, 61, 7, 91,120,181,105, 47,108,223,140, 7,189,129, 32, 35, 61, 25,199, + 34,111,234, 31,221, 56, 93, 66,141,154,145,202,220,186, 71,240,232,245,250,148, 22, 45, 90, 56, 70, 68, 68, 84, 22,195,179, 44, +139,188,188, 60, 92,187,118, 13,109, 3,131,208,106,226,187,200,205,205,197,134, 13, 27,208,164, 73, 19, 12, 24, 48, 0, 5, 5, + 5, 48, 26,141, 38, 93, 87, 74, 41, 11,224,116,249, 2,224, 15,135,182, 60,160, 66,235, 75, 27, 54,111,222, 92,164,209,104,252, +157,157,157,121,132,144,111,116, 58,221,132,121,243,230, 57,175, 92,185, 18,222,222,222,200,203,203,131, 76, 38,131,151,151, 23, +114,115,115,113,243,230, 77, 86,165, 82, 69, 0, 88, 74, 41,205,173,137,179,138,125,207, 8, 33, 29, 63,250,232,131,200, 47, 87, + 79,245,210,104,123,136,108,108,186,128, 82, 35,114,115,147, 80, 90,114, 69,191,108,233,246,231,217, 57,134,161,148,210, 56, 83, +206, 25,192,162,233,211,167, 3,229, 35,120,226,227,227,239,182,106,213,202, 11,168, 57,162,101, 10,214,238, 79,211, 0,216,243, +159, 89,157,102,149,228,221,247,178,225, 39, 37,118,244,229, 54,172,221,159,166, 89, 50,203,106,121, 94,210,197,167,153,202,211, + 17, 59, 34, 15,242,198, 15, 25,198,186,202,227,194,205, 28,232,129,158, 3,234,230,165,148, 82,127,127,127, 55, 66, 10, 60,114, +242,159,220,158, 52,121,234, 8, 75,161,250,132,159,107,126,115,166, 73,128, 89,116,116,116, 98,125,209,172, 90,120,159, 18, 66, +186,205,155, 55,239, 52,165,244,165,218,132,156,188,130,168,224,254,211,105, 81, 81,241,221,156, 71,135,235,213, 82,163,148,222, + 36,132,244,242,109, 27,112,240,203,149,171, 29,123,204,252,132,255,244,183, 11, 0,107, 64,242,197, 11, 96,197, 58,110,237,213, +179,217,197,122,253, 16,218,168, 10,223,136, 70,252,127, 13, 83,228, 29,254,135, 17, 90,189, 24, 30,229,179, 15,235, 21, 44, 5, +128,180,180,180,139,205, 61, 93,207, 60,125,218,173, 79, 19, 87,123, 0, 64,124, 98, 6,210,179,181,103, 76, 77, 27, 86, 69,185, +179,213,126,215,209, 19, 35,197, 98,113,127, 82, 46,225, 64, 95, 97,168,180,209,104, 76,115,119,119,175,229,211,154,165,158, 88, +150,173, 41,220, 88,147,157, 23, 8, 33, 99,155, 55,111,190, 58, 57, 57, 57,146, 82,170, 52,101,191,186, 80,150,253,244, 55, 27, +155,230,158, 87,207, 29,252,248,250,133, 99,189,169, 81,215, 22, 0, 8, 95,212,160,161,210,101,101,101, 83,223,127,255,253, 77, + 2,129,160, 9,202,107,206, 42,106,176, 88,150,229,233,245,122, 51,150,101,121, 0, 8,195, 48, 70,129, 64,160,137,140,140, 52, + 26,141,198, 20,173, 86, 59,245, 85,237, 55,165,195,176, 42, 78,156, 56,209,204,218,218,186, 15, 33,100, 56,165,212,167,180,180, + 84,187,112,225,194,171,251,247,239, 47,113,119,119,127, 43, 52, 52,148,216,216,216,224,214,173, 91, 52, 63, 63,255, 0,128,249, +148,210,248, 6,216, 19, 79, 8,241,155, 58,237,135, 81, 54, 54,155, 66, 41,133, 31, 40, 8, 97,240,160,184,152, 59,161, 82,177, + 63,151, 59,140,166,242, 25,241,114, 36,109, 89, 76, 76,204,118, 0,130,154,106,180, 26, 4,105,217, 17,141, 58,105, 24,145,171, + 14,173, 93,159,166, 1,128, 69,235,138,138, 1,108,249,104,136, 13,247,248,206,150,175, 92, 44,226,230,174, 63, 84,176,205, 20, +186,128,128, 0, 79,134, 97, 70, 2,240,117, 16, 23,181,176, 23, 21,179,132,208, 16, 66, 24, 59, 0,247, 91,183,110,125, 12, 64, +218,171,152, 74, 95,140, 43,106, 90,125,125,206,195,195,215, 0,212, 26,197,174,133,235, 38, 33,164,197,172, 57,179, 63, 20, 9, + 4,111,130,101,219, 45,251,117, 63,109, 28, 42,221,136, 70, 52,226,223,132,234,181, 89, 21, 48,201,209, 2,128,231,241,105,125, + 1,192,203,203,139, 62,123,246,172,193, 95,184,213, 81,238, 72,253,130,122, 84,223,235, 67, 94, 94, 94,251,191,178,127,125,160, +148,238, 1,176,231,117,114,150, 59, 82, 75,203,151, 87, 2,165,244, 1,128,160,215,102,212,171,217, 64,202,181,180,150,212,182, + 77,159, 62,125,146,245,122,253, 57, 0,169,132, 16, 43, 0, 5,122,189,254,180,193, 96,200, 38,132,180, 95,187,118,109,133,242, +253, 50, 74,233,237, 87,180,131, 3,176,187,124,121,173,160,148,238, 86, 40, 20,179,109,109,109,155,107, 52, 26,145, 70,163, 17, + 86,125, 6,144, 72, 36,117, 70,221,170,194,202,156,252, 36,228, 23,218, 90,153,147, 63, 57, 82, 54, 46, 56,168, 86,198,120,219, +184,224,160,169,124,209,209,209,241,254,254,254,187, 24,134,113,167,148, 58, 2,212,146, 82,228, 82, 74,243,248,124,126,250,163, + 71,143, 76,154,193,249,127,129,114, 71,106, 77,249,210,136, 70, 52,162, 17,255, 42,212, 85,163,101,178,163, 85,129,184,184,184, +127, 98, 72,175, 17,127, 19,234,115,184,147,146,146,180, 0,174,150, 47,213,247,189, 13,160,158, 4,217,127, 31, 25, 25, 25, 1, +175,131,103,242,220, 7,233, 0, 62,110, 95,195,104,231, 69, 27, 10, 74, 1,124, 26, 50,176, 97,156,119,239,222, 77, 1, 96, 82, + 42,184, 17,141,104, 68, 35, 26,241,247,160,166,104, 86,117, 29,173, 70, 52,162, 17,141,104, 68, 35, 26,209,136, 70,188, 2, 42, +156,170,154,116,180, 8,128, 26, 59, 7,104, 3, 38,115,191, 74,247, 65,125,252,141,156,141,156,141,156,141,156,141,156,141,156, +141,156,255, 62,206,127, 43,106,114,178, 0,128,188, 66, 83, 82, 67, 14,218,251,117, 95,240, 70,206, 70,206, 70,206, 70,206, 70, +206, 70,206, 70,206,127, 31,231, 63, 25,141,169,195, 70, 52,162, 17,141,168, 1, 7, 14, 28, 48,105,168,232,168,185, 91,250,203, +229,214, 11,203, 74,138, 87,255,178,102,210,161,138,245,195,135, 15, 55,185,163,181, 17,141,104,196,191, 23,175, 84, 12,239,233, +233,214,154, 97,185,206,148, 50, 60,202, 80, 3, 41, 81,239,125, 94, 80,240,146,236, 64,147, 38, 77,172, 4, 12, 6, 16, 74,101, +132,112, 44,199, 99,174,196,199,167, 62,170,141,179, 58, 8, 33, 34,107,107,235,233, 66,161,176,183, 78,167,115,101, 24, 38, 77, +171,213,158, 83,169, 84,223, 85, 23, 46,252,111,194,219,219,123,244,133, 11, 23,172,186,116,233,162,149, 72, 36, 70,181, 90,205, + 63,117,234,148,248,237,183,223, 46,122,246,236,217, 43,117, 36,186,184,184,244,220,178,101,139, 71,223,190,125,209,162, 69, 11, +229,200,145, 35,133,193,193,193,194,201,147, 39, 39,164,167,167, 71, 53,132,139, 16,210,154, 16,178,147, 16,194,227, 56,110, 92, +121, 71,226,107, 7, 33,132, 97, 24,102, 42, 33,100, 8,165,212,147, 16, 18, 79, 41, 61,196,113, 92,173,194,173,245,240, 13, 3, +208,143, 97,152, 0, 0,224, 56, 46, 26,192, 9, 74,169,201,157,119,255,151,156, 82,169,212, 31, 0, 84, 42,213,221,215,197, 73, + 8,241, 7, 0, 74,233, 43,113, 18, 66, 38, 74, 36,146, 41, 0,160, 86,171,127,164,148,214, 59, 14,234, 79,216,212,138, 6, 44, +137, 5, 0, 68, 47,242, 1, 0, 52,232,253,212,199,166, 55,200,108,106, 69,107,226,107, 16, 71, 53, 16, 66,250,141, 25, 51,102, +229,207, 63,255,188,136, 82,122,248, 85,121,234,130,147,147,219,119, 95,175,223,172,248,120,250,187,171,241, 98, 34, 68,157,104, + 67,200,155, 34, 30,111,160,142,101, 47, 63, 2,246, 3,224,219,216,216,140, 22,137, 68,221,116, 58,157, 51,159,207,207,212,233, +116,151,138,139,139,247, 80, 74,107,157,128, 96, 50, 98,137,181, 94, 5, 39,194,253, 49,231,141, 50,208, 10,165,200,130, 15, 45, +252,203,252,127, 17,132, 16, 6, 47,244,118, 12, 0,182,190,138,156, 7,143,199,251, 88,161, 80, 12, 41, 41, 41, 81,241,120, 60, +250,130,150,188,248, 7, 0,195, 48,132,227,184,156,252,252,252,113,175,215,250,255, 93, 16, 66,154,226,197,117,109, 86,190, 74, + 0,192, 17,192,125, 0, 31, 83, 74,203,254, 59,150,253,255,135, 26, 34, 90,199, 41,165,153, 64,185,163, 85, 69,238,190, 71,104, +104,232, 69, 79, 79,183,214,195, 7, 15, 93, 57,109,234,251,132,199, 99, 16,243,240, 33,255,157,113, 19,251,216,216,216,184,200, +181,218, 86, 32,132, 83,153,153,197, 24, 12,250,244,253,123,126, 54,247,241,246,102, 89,150, 67,196,166, 31,222,246,244,116,251, +220, 20,103,139, 16,210,210,201,201,105,103,120,120,184,211,192,129, 3,121, 78, 78, 78, 72, 74, 74,178,250,229,151, 95,188,191, +253,246,219, 17,132,144,113,229, 90, 62, 13, 61,217,174, 78, 54, 76, 31,115, 9,233,133, 82, 22,165, 6,156,207, 82,227, 12,165, +244,114, 67,185, 42,160, 82,169,102,168, 84,170,160,192,192, 64,186,117,235, 86, 50, 97,194, 4, 74, 8, 33,106,181,250, 39,188, +162,244,131, 76, 38,219,216,183,111, 95, 47, 47, 47,175,248,231,207,159,247,219,183,111,223,137,241,227,199,123,202,100,178, 56, + 0, 45, 27, 72,183, 61, 63, 63,223, 79,173, 86,195,213,213,117, 43,128, 55, 94,197,166,186, 64, 8, 33, 60, 30,239,144,139,139, + 11,253,234,171,175, 14,251,249,249, 57, 22, 20, 20, 24, 63,253,244,211,222,215,175, 95,127,155, 16, 50,208, 84,103,139, 16, 98, + 77, 8,217,228,228,228,100,183,122,245,234,103,237,219,183,191, 47, 22,139, 69,113,113,113,210,217,179,103,207, 98, 24,102, 4, +165,116, 42,165,166,127, 65, 84,112,186,184,184,216,173, 92,185, 50, 41, 32, 32, 32, 70, 40, 20, 10,227,226,226,100,159,125,246, +217,199,175,202,201, 48, 76, 68,112,112,176,245,162, 69,139, 30,123,123,123, 95,229,241,120,162,180,180, 52,102,241,226,197,211, +121, 60, 94, 24,199,113,211, 94,197, 78, 71, 71, 71,235,197,139, 23, 63, 14, 14, 14,190, 46, 20, 10,133, 79,158, 60, 97,194,195, +195,167, 55,196, 78, 91, 91,219, 16, 91, 91,219,205, 89, 89, 89,124, 0,112,118,118,238,208,188,121,243,111,171,206,180,172, 40, + 13, 48, 24, 12,165, 26,141,102, 76,126,126,126,141, 66,184, 19,230,109, 24, 0, 0,223,234, 43,222,191,120,173,239, 61, 16,113, +212,148,243, 14,112, 38, 20, 0, 70,127,178,102,240,139,215, 23,235,191, 86, 2,124, 62,159,219,233, 76,104,116,166,233,146, 49, +132,144, 65, 61,123,246, 92, 28, 21, 21,245, 67,143, 30, 61, 62,219,181,107,151, 67,106,106,234,151,132, 16,183, 81,163, 70, 77, + 56,127,254,252,170,220,220,220, 3,166,242,213, 7,145, 80, 44, 38, 12,129,196, 76,106, 97,202,246, 2,134,233,127,117,208,160, + 41, 63, 62,121, 18,240,109,108,172,135,210,217, 57,232,163,143, 62,114, 28, 58,116, 40,227,230,230,134,103,207,158,217,238,218, +181,171,213,143, 63,254, 56,132, 16, 50,147, 82,154,252,202,198,197, 18,107,101, 17,218,106,117, 8,160, 20, 86, 21,171, 9, 65, +145, 88,143,104, 89, 44,121,240, 63,224,108,125,177,125,251,246, 69,207,158, 61,195,170, 85,171, 0,224,187,134,236, 76, 8,153, + 61,100,200,144,208,200,200, 72,201,254,253,251, 37,129,129,129,112,114,114, 2,240, 66, 63,144,150, 11, 83,123,120,120,252, 13, +166,255,239,194,214,214,118,107, 66, 66, 66,136, 76, 38,123,105,125,124,124,188,191,151,151, 87, 49,128, 79, 26,194, 71, 8,105, +106,111,111,191,155,227, 56,109,126,126,254,187, 0, 96,110,110,254,179, 76, 38,179,206,204,204,252,252,239,122,144,169, 64,117, + 95,228,239, 60,214,235,198,159, 10,224,107, 18, 44,173, 58, 49,155, 97,185,206,211,166,190, 79, 70,142, 30,149,245, 44, 62,129, +227, 11, 68,163, 79,157, 62, 45,109,221,186, 53,163,253,238, 59, 24,115,115, 97,152, 53,171,211,185,115,231, 12, 97,163,199,170, + 5, 60,178,221,211,195, 93,186,119,207, 47, 78,145, 7, 15,116, 6, 80,167,163, 69, 8, 17, 57, 57, 57,237,188,112,225,130,139, +135,135, 7,138,138,138,144,148,148, 4,165, 82,137, 17, 35, 70, 8, 58,119,238,236, 50,124,248,240,157,132,144, 46,166, 70,182, + 8, 33,142, 45, 92,249,199,190,254, 98, 68,203,183,251,116,150,185,184, 53, 7,205,210, 32,245,121,108,224,177, 11,215, 63,242, +178, 98,158, 62, 43,166,253, 41,165, 38,137,149, 86, 69, 94, 94,222,220, 33, 67,134, 28, 12, 9, 9,177, 23,139,197, 80, 40, 20, +100,224,192,129, 60,194,242, 46, 0, 0, 32, 0, 73, 68, 65, 84, 57, 25, 25, 25,181,234, 71,153, 96, 47, 0,128, 97, 24,182,234, + 43, 33,175,244, 96,239,106,109,109, 13,107,107,107, 0,112,121, 85,155,202,143,207, 88, 89, 89,125,103,110,110, 62,188,164,164, + 68,205, 48, 12, 37,132, 80,153, 76, 38,177,182,182,190,247, 56,246,169, 66,171,213,182, 88,243,205,143,235,123,118,245,179, 56, +123,246, 44,134, 14, 29, 74,207,156, 57, 51, 21,128, 73,115,234, 8, 33,155,134, 12, 25,162, 90,184,112,161,230, 89,124,146,203, +227,167,241, 68,102, 38,226,236,236,236, 4, 55,111,222,228,175, 91,183,206,108,241,226,197,155, 0, 12,111,128,221,155, 70,141, + 26,165,159, 51,103, 78,230,147,103, 9, 14, 15, 30, 63,163,114, 51,129,209,206,206,150,119,253,250,117,238, 85, 56, 25,134,137, +152, 59,119,110,201,212,169, 83, 11,243, 11,138,157, 10, 75,202,168, 88,192, 51, 56, 57, 57,241, 15, 31, 62,172,221,189,123, 55, + 51,101,202,148, 8, 0, 97,166,114, 2,136, 24, 56,112, 96,105,120,120,120, 81, 92,124,162,211,131, 71, 79, 33, 21, 11, 12,142, +142, 14,188, 91,183,110,233,215,172, 89,195, 44, 95,190,220, 36, 59,101, 50,217,142,125,251,246,241, 15, 31,126,113,239,187,118, +237, 26,227,233,233, 41,173,186,141, 90,163, 5, 67,128,188,188, 60,105,112,112,240, 14, 0,174,213,121, 2,150,196, 98,194, 60, + 96,198,140, 25, 13, 26, 18, 15, 0, 1,206, 31, 33,186, 30,249, 91, 46,162, 21, 29,253,201,154,193,124, 62,159,155, 50,101, 74, + 86,245,207, 53, 26, 13, 1, 48, 48,160, 1,206, 86,191,126,253,230, 31, 63,126,188,249,174, 93,187,214,238,222,189, 91, 7, 0, +102,102,102,118,191,252,242,203,170, 17, 35, 70, 96,196,136, 17, 11, 1,188, 54, 71,139,165,172, 30, 0,196,102, 98,113,108,108, + 44,241,241,241,169,179,184, 85,207,113,183,127,124,242,164,253, 7, 62, 62,129, 5, 28,215, 66,248,246,219,101,179,103,207,206, + 43, 41, 41, 65, 82, 82, 18,244,122, 61, 38, 76,152,192,235,209,163,135, 98,196,136, 17, 27, 8, 33,195, 40,165,250,250,236,224, +241,120,107, 92, 92, 92,222, 43, 46, 46, 46,171,136,234,180,114, 55,231,119,243, 55,138,219,181, 48,136,132, 60,163,112,192, 44, +142,156,249,142, 40,125, 60,240, 59, 0, 8, 85,200, 21, 2,127,217,209,178,116, 35, 30,172, 0,203,237,155, 73,223,204,141, 87, + 45, 42, 75,166,181, 58, 75,132,144, 97, 50,153,108,176, 82,169, 60, 80,254,229,220,178,127,255,254,184,126,253, 58, 0,116, 6, +240, 29, 33,164, 39,195, 48,239,112, 28,183,133, 82, 90,215, 40,183,143, 6, 13, 26,244,102,100,100,164, 57, 0, 28, 56,112, 0, + 6,131, 1,158,158,158, 16, 10,133, 16,137, 68, 16, 8, 4,149,211, 65,254,127, 2,195, 48,226,251,247,239, 67,161, 80,188,180, +158,199,227, 1, 64,183, 87,160, 92, 24, 31, 31, 31,124,231,206, 29,132,132,132, 44,108,219,182,237, 91, 23, 47, 94,116,202,207, +207, 71, 72, 72,200, 6, 0,127,171,163, 5,188,236,139,252,221,199,250,191, 66,229,172,195,242, 19,235, 1, 0,148, 50, 60, 30, +143, 65, 66,124,146, 33, 36,164,215,248,148,148, 20,121, 80, 80, 16, 35, 16, 8,160,140,138,130,230,214, 45,200,229,114, 12, 25, + 50, 68,112,233,210, 37, 11, 11,185,197,228,196,132,196, 82, 30,143, 1,165, 76,189, 53, 15,214,214,214,211, 63,255,252,115, 39, + 47, 47, 47, 24,141,198, 74, 69,115,163,209,136,212,212, 84,200,229,114,140, 27, 55,206, 65, 42,149, 78, 55,229, 36, 8, 33,205, + 90,122, 58, 68, 95, 56,177,233,141,217,211,250,201, 90, 74,207, 66,150, 58, 19,242, 3, 31,160, 85,198, 41,132, 15, 14,146,157, +217,184, 48,160,185,194, 38,154, 16,210,172,126,198,151,161,209,104,126,143,137,137,153,124,241,226, 69, 14, 0,126,251,237, 55, +250,248,241,227,169,127,229, 41,148,227, 56, 20, 21, 21,129,227, 56, 94,249,251,138,215, 87,165,252,203, 32,132, 48, 22, 22, 22, + 17,111,189,245,214,168,228,228,100,201,201,147, 39,109, 83, 82, 82,236, 18, 19, 19,237, 91,182,108,201, 95,181,106,213,113,141, + 86,207, 51,176, 84,103,100, 13,165,153, 15, 31,198, 23,102,103, 71,111,219,182, 77, 77, 8, 25, 98,226, 49,134, 57, 59, 59,219, +206,155, 55, 15, 68, 32,237,224,221,170,173, 23, 79, 32,177,100, 4, 34, 75,181, 90,195, 38, 36, 36,164,206,155, 55,207,221,207, +207, 79, 81,158, 94, 51,137, 83,161, 80,216,205,153, 51, 7,124,177,185,127, 59,191,128,230, 34,177,204,156, 39,144,152, 7, 5, + 5,245,136,143,143,207, 8, 15, 15,119, 14, 12, 12,108, 16,103, 96, 96,160,245,148, 41, 83,140,102, 18,243, 96, 15, 15,207, 86, +237,218,180, 10,109,217,178,229, 96, 62,159,111,204,205,205, 77, 30, 55,110,156,243,128, 1, 3, 28, 27,194,233,224,224, 96, 29, + 30, 30,110,116,107,234,217,183,239,155,125, 58, 10, 37,230,150,124,145,204, 74,165,210,176, 79,158, 60, 73, 94,176, 96,129,179, +191,191,191,131, 41,156, 42,149, 74, 96,103,103, 7, 95, 95, 95,180,246,244, 68,113,113, 49, 34, 35, 35,177,125,251,118,108,217, +178, 5,123,246,236, 65,251, 46,125, 96,110,110,142,140,140, 12,148,148,148, 8, 76,177,243,117,130,139,104, 69,191,213,189, 55, +240,253,247,223,207,152, 50,101, 74,150, 68, 34,225,170, 47, 54, 54, 54,236,152, 49, 99,178,199,125,246,205,192,138,212, 98,109, + 32,132, 12,234,213,171,215,253, 19, 39, 78, 60,223,181,107, 23, 90,183,110,141,190,125,251,138, 0, 96,250,244,233,162, 17, 35, + 70, 96,223,190,125, 56,112,224,192,163,150, 45, 91, 94, 33,132, 12, 50,197,206,113,227,198,117, 9, 11, 11,187, 28, 22, 22,118, +119,228,200,145,155,167, 78,157,250,210, 55, 87,102, 70,218,109,157, 78, 7,191,128, 64,233,178,173, 55,198,212,199,247, 24,216, +181, 57, 54,118,251,234,135, 15,147, 23,182,110,109,213, 52, 49,209,230,167, 53,107,236, 42,134,116, 27, 12, 6,164,166,166,194, +218,218, 26, 99,198,140,177, 19,139,197,245,166,187, 8, 33,235, 6, 13, 26, 52, 49, 37, 37, 69,254,227,143, 63, 58,223,189,123, + 87,145,153,153,233,124,254,220,105,251, 79, 63,153,110,110, 41, 23,137, 50,114, 95, 56,170,137, 25,144,197, 38,160, 11,165,176, +170,154, 78,124, 21, 16, 5,145, 72,221,200,183,205,187, 88, 61,157,179,207,127,100,248,175,254,214,118,110,102,159,215, 97,103, +187,175,190,250,106,255,209,163, 71, 71,119,233,210,229, 32, 33, 68, 82,195, 54,102,237,219,183,143,220,183,111,223,196,174, 93, +187,254, 78, 8,241,173,141,207,213,213,117,200,175,191,254,106, 91,241,222,206,206, 14,102,102,102,127,114,178,132, 66, 33, 24, +198,164,241,189,255, 26,228,230,230,190,211,173, 91,183,253,253,250,245,211,222,185,115, 7,185,185,185,112,113,169,124,214,254, +211, 67,141, 9,176,145, 74,165,112,115,115,131,151,151,215,232, 75,151, 46, 57, 25, 12, 6, 36, 38, 38, 34, 39, 39, 39,250, 53, +154, 94, 43,170,250, 34,255, 36,144,151,231, 28,190, 7,224,120,197,103,149,191,149,229,179,133, 46, 0, 0, 37, 68,121, 63, 38, + 70,192, 19,137,198,254,188,123,183, 88, 40, 20, 34, 57, 57, 25,143, 30, 61,130,234,252,121,168,175, 94, 69,118,118, 54,202,202, +202,224,232,232,136, 77, 91,183,202,116, 44,157,244,228,233, 83, 30,101,254,168, 55,168,173, 35, 65, 44, 22,247, 30, 58,116,104, +173, 14, 89, 70, 70, 6,250,245,235, 39,224,241,120,127,106, 43,173,206, 73, 8, 33, 10,123,114,244,252,193,101,206,206,162, 71, +192,179,217, 64,105, 52, 64,181,128, 81, 7,164, 63, 0,142, 47, 65,211,178, 88,114,122,217,120, 39, 23, 41,255,104, 69, 78,191, + 62, 59,171, 28,195,211,199,199,103,203,216,177, 99, 25, 0,232,217,179, 39,241,241,241,217, 76, 8,241,172,109,159,250, 56, 85, + 42,213,245,194,194, 66,140, 24, 49,194,182,121,243,230,231, 70,140, 24, 97, 91,177,254, 85, 57,203, 97,219,166, 77,155,124,137, + 68,178,135, 16, 82,239, 13,182, 42,167,149,149,213,119,253,250,245, 27,190,123,247,110, 33, 0, 92,184,112, 1, 71,143, 30,197, +195,135, 15, 17, 23, 23,199, 5, 4, 4,216,127,179,101,127,196,119, 63,236, 88, 55,184,179,159,162, 71,135,128, 86,242,178,194, + 50, 71, 71,199,206,148, 82,207,154, 56,107, 64,191, 37, 75,150, 60,122,252, 60,217,146,225, 11,248, 66, 1, 95,108, 97, 33,115, +180, 54,151,185,218, 72,205, 92,196, 12,145,171, 84,170,172, 61,123,246,112, 0,250,153,202,185,108,217,178,132,199,207,146,173, + 8,195,231, 11,248, 2,161, 92, 46,181,122,187,111, 72, 32, 0, 8, 65,133, 37, 37, 37,217,219,183,111,215, 55,132,115,209,162, + 69, 49, 5, 69,101,214,124,129, 64,192,231,243, 42,175,165, 76, 34,177,151,138,197, 34,173, 86,155,190,126,253,122,117, 67, 56, +151, 44, 89,242,232,201,243, 20, 27,134, 16, 30, 33, 12,223,194, 92,102,107,107, 41,181,183,151, 75,236,164,124,158,168,164,164, + 36,125,231,206,157, 38,113,234,245,122, 97,118,118, 54, 30, 63,126, 12,183,192, 64,156, 61,123, 22, 77,154, 52,193,136, 17, 35, + 48,106,212, 40, 72, 36, 18,244, 12,110,139,121,243,230,225,249,243,231,208,235,245,226,154, 56, 43,235,164,170, 65,161, 80,220, +169,227, 92,254,180,111,117, 59, 3,156, 9,253, 86,247,222,192,170, 14, 86,109,252, 54, 54, 54,108, 77,209,174,234,156,253,250, +245,155,127,254,252,249,230, 59,119,238, 28, 56,110,220,184,223,119,238,220,137,142, 29, 59,226,241,227,199,112,119,119,199, 79, + 63,253,132, 81,163, 70,253,190, 97,195,134,129,119,238,220,241,243,240,240,248,147, 67, 80,157,115,228,200,145, 31,250,251,251, + 71,101,101,101, 5, 23, 20, 20,248, 70, 70, 70, 78, 26, 50,100, 72,194,232,209,163,123, 85,108,195, 26, 12,187,143, 31, 57,136, +208,129, 67,225,221,198, 55, 98,194,231,187,218,214,197, 73, 41,165, 15,129,205,219, 51, 51,115,119,107, 52,170, 17, 2,129, 84, +122,227,134,205,129, 31,126,176,171,218,233,157,158,158,142, 1, 3, 6, 8,132, 66, 97,215,186,236, 36,132,124, 53,120,240,224, + 17,145,145,145,214,192,139,168,206,213,171, 87,241,224,193, 3, 36, 37, 37,161,168,168, 8,189,166,150,225,253, 85, 47,184,223, + 95, 69,209,103, 58,149,213,197,105, 10,164, 77,137,147,173, 5,255,202,164,245,222,211,223,139,104,205,151,219, 8,240,243,103, +113,200,126,166,169,140, 22, 86,179,147, 4, 7, 7,239, 10, 11, 11, 35, 58,157, 14, 58,157, 78, 71, 41, 85,215,196,237,226,226, + 98,214,174, 93, 59, 76,157, 58,149,177,176,176,216, 80,155,157, 74,165, 82,123,226,196, 9,140, 27, 55, 14, 51,103,206, 68,139, + 22, 45, 96,109,109, 13,129, 64,128, 29,187,246,218,141,154, 52,173,229, 27, 93,186,249,181,126,163, 99,187, 82, 45, 47, 80, 40, +181,153, 82,253, 30,255, 42,231,110, 10,254, 23, 56,219,182,109,219,229,230,205,155,226,110,221,186, 33, 57, 57, 25, 2, 65,229, +243, 84,101,163,198,171,216,185,100,201, 18,177, 70,163,193,189,123,247, 48,126,252,248,116,189, 94, 63,235,175,216,105, 42,170, +250, 34,255, 36, 80, 74, 55, 87, 91, 42, 51, 4,213, 35, 90, 75, 0,192,192,225,232,216,241,147, 84,199,142, 29,147,138, 68, 34, + 36, 39, 39, 35, 51, 51, 19, 59,182,111,103,123, 58, 56,148,246,117,113, 41,217,177,125, 59,213,233,116,160,148,194,199,199, 7, +195,135, 15,151, 12, 27, 49, 58,135,148,168,247,214,103, 16, 33,196,185, 34,191, 62,105,210,164, 63,125,254,233,167,159,194,194, +194, 2,132, 16, 39, 19,206, 47,236,163, 37,131, 93,173, 61,172,178,105,214,142, 2,240,204, 0,190, 57,192,183, 0,204, 44, 1, +177, 57, 32,146, 66,123, 39,170,128,161,125,147,134,118,125,215, 5, 13, 75,245, 64,161, 80, 44,140,138,138,178,191,115,231, 14, + 45, 41, 41, 65,102,102, 38, 93,185,114,165,189, 66,161, 88, 88,255,222, 53, 35, 35, 35, 99, 89,104,104,104,246,248,241,227, 45, + 79,157, 58,229, 54,126,252,120,203,208,208,208,236,140,140,140,101,175,202, 9, 0, 66,161,144,247,240,225, 67,155,229,203,151, +143, 2,112,219,215,215, 55,223,213,213,245,118,121,209,100,157, 48, 55, 55,175,116,178,128, 23,209, 53, 62,159, 15,129, 64, 0, +133, 66,161, 43, 40, 40, 96,187,190,225, 41,241,177,100, 12, 10,177, 80, 98, 35, 49,115, 53,183,176, 12,202,207,207,191, 79, 8, + 49,105, 62, 33, 33,196,191, 67,135, 14, 2,150, 10,184,247,199,246, 84, 76,159, 24,226,240,253,242, 41, 77,214, 47,123,207,229, +171,197,147,125,150,205, 29, 19,194,112,156,198,221,221,221,169,162,160,189, 62, 48, 12, 19,208,190,125,123, 62, 7, 1, 30, 63, + 77,202, 78, 78, 75, 47,125,179, 71,112,101,228,178,181,127, 64, 95,123,123,251,110, 62, 62, 62,237, 77,213,132,145, 72, 36,254, +222,222,222,124,134, 39, 32,182,214,230,110,230,114,137, 99,197,103, 22, 86, 86,157,108,236,237,195, 24, 74,139,157,157,157, 29, + 36, 18,137,127, 3,206,157,207, 65, 8, 71, 7, 27, 75,123, 59, 43,121,223,144,206, 45,130, 59, 5,183,108, 27,212, 49,184,205, + 27,237,135, 17,163,177,196,211,211,211,161,162, 72,190, 46,104,181, 90,179,221,187,119, 99,249,242,229,104,215,180, 41, 92, 92, + 92,224,224,224,128,171, 87,175,226,230,205,155,176,182,182, 70, 78, 78, 14,214,172, 89,131, 67,135, 14, 65,175,215,155,155, 98, +103, 85,152,226,108,213, 5,163,209,200, 84,119,176,106,227,151, 72, 36, 92, 69,145,124,109, 56,113,226,196,174,138, 72,214,199, + 31,127,220,229,155,111,190,249, 61, 54, 54, 22,114,185, 28, 55,111,222,196,164, 73,147,126,223,176, 97, 67,151,105,211,166, 97, +251,246,237, 72, 72, 72,216, 90, 23,223,200,145, 35, 23, 79,158, 60,121,253,197,139, 23, 25, 71, 71, 71, 88, 91, 91, 99,240,224, +193,216,186,117, 43,223,104, 52,110, 11, 11, 11,187, 27, 22, 22,118,151, 77, 61, 51,127,255,150,149, 87, 99,238,223,197,135, 31, +205, 17,233,140,134,122,135, 94, 82, 74,169, 90, 46, 47, 53,118,235, 86,176,207, 96, 80,141, 20, 10,165,150,119,239,218, 28,221, +182,173,210,217,154, 55,111, 30, 44, 45, 45,129, 23, 5,204,181,194,213,213,245,189, 67,135, 14, 85,222, 15,109,109,109, 33, 18, +137, 32, 20, 10, 33, 16, 8,192,227,241,112, 46, 66,134, 31,230,189,240, 47,126,152, 71,112,230, 59,242,151,102,179,202, 92,137, +175,181,163,232,238, 7, 63,181,241,243,237,101,139,171,191,100, 97,101,232,157,180,155,251,114,103,107,114,106, 29,165,244,198, +167,159,126,218, 58, 39, 39, 7,183,110,221,194,173, 91,183,150,215,180, 17,165, 84,115,228,200,145, 47,203,202,202,224,225,225, +129, 65,131, 6,117, 35,132, 4,214,180, 45, 33, 4,237,219,183,199,128, 1, 3, 16, 18, 18,130,118,237,218, 65,167, 55, 10,194, +198,190,231,253, 48, 33,215,101,229,154,149,210,168,223, 34,153,223,127,191,200,219,117,240,140,101,112, 72,159,245, 66,115,231, +235, 68,106,231,252, 87,206,255,159, 0, 51, 51,179,111, 46, 94,188,232,164,215,235, 17, 19, 19,131,153, 51,103,254,213,153,161, +149, 1, 16, 55, 55, 55, 92,184,112, 1, 99,198,140,209,100,103,103, 55,104,190,233, 95, 65, 85, 95,228,223, 2, 62,240,231, 73, +217, 41, 41, 41, 69, 54, 54, 54, 46,222,222,222,140, 78,167,123,145,146, 56,112,128,221,178,109,219,113,141, 70,243, 17, 0,225, +119,223,127, 31,225,226,234, 26, 50,118,220, 56, 98, 48, 24, 16, 26, 26, 42, 58,118,236,152,237,243,236,236,122, 7, 34, 87,127, +218,152, 48, 97, 2,190,249,230, 27, 0,192,140, 25, 51, 0,188, 8,173,215,244, 84, 82, 29,114, 75,244,235,219,191,189, 69,170, +236, 91, 11,125, 39, 67, 89,179,231,230,215,101,101,146,246, 96, 68,124,152,241,192,233, 13,198,184,156, 33,183,159,199,181,106, + 45, 41,200,119,239,221,166, 59,182,156,221,217, 15,192, 62, 83, 47,146, 84, 42,237, 32,151,203,113,251,246,237,130,246,237,219, + 23, 81, 74, 45,151, 45, 91,102, 39,149, 74, 59,152,202, 81, 29,148,210, 68, 66, 72,183,206,157, 59, 79,103, 24,166, 55,199,113, +231,178,179,179,191,163,148, 38,154,178, 63, 33,228,125, 0,139, 80,165, 14, 69,167,211,129, 97, 24, 80, 74, 49,114,228, 72,204, +155, 55,175,245,131, 7, 15, 16, 21, 21,101,211,187,119,239,235,132,144, 34, 0,239, 82, 74,107,140,154,149,148,148,168,111,222, +188, 41,137,138,138, 2,199,113,176,177,177,129,133,133, 5,196, 98, 49, 6, 15, 30, 44, 15, 15, 15,239,117,250,244,233,156,146, +102, 77,120,102,153,233, 74,177, 92,110, 14, 39,151,174,211, 70,191, 19, 75, 41,173,183, 19,171, 2,102,102,102, 34, 9,223,168, + 33,172,150,249,234,139, 13,140, 84, 40, 36,102, 66, 62,196,156, 10,243,191, 92, 65,132,148,229,163,129,249,121,161, 80, 40, 52, + 23, 67,199, 19,241, 12, 82,130,215, 34, 14,199,227,241, 68,102, 66,104,107,251, 92,192, 48, 12,195, 48, 66, 0, 70, 83, 57,197, + 98,177,208, 92, 76,107,229,148,240, 8,143, 16, 34,194,139,238,172, 63, 33,192,153,208, 42, 81,164, 74, 30,142,227,208,181,107, + 87, 28,143,186,141, 3, 71,207, 33, 47,249, 62, 22,124,246, 49, 2, 3, 3,113,236,216,177, 58,109,170,168,209,170, 9, 25, 25, + 25, 80, 40, 20,119, 50, 50, 50,106,108,176, 8, 88, 18, 91, 99,141, 22, 23,209,138,142,251,236,155,129, 53, 69,169,106,228,255, +194,242, 5, 87, 29, 53, 90,132,144, 65, 93,187,118,253,112,247,238,221,186,183,222,122, 75, 52,114,228, 72,248,250,250,118,153, + 56,113, 34, 0,160,119,239,222,248,230,155,111,186, 76,156, 56, 17,123,247,238, 69,100,100,164,182, 71,143, 30,159, 17, 66,210, + 41,165, 39,106,226,228, 56,110,192,166, 77,155, 94, 90,167,215,235, 97, 52, 26, 97, 48, 24,156,141, 70,163,115,249,189, 8,235, +215,111,200, 59,115,250, 24, 62,251,124, 9, 28,236,157, 76,114,174,121, 60, 30,153, 48,103, 78,222, 79,107,214, 96,205,222,189, +152,227,238, 46,221,249,232, 17,206,104, 52,216, 23, 21,149, 87,126,156,122,107, 51,149, 74,165,250,196,137, 19, 22,251,246,237, +131,149,149, 21, 90,180,104, 1, 27, 27, 27, 8, 4, 2, 48, 60, 9,120, 66,107,120,183,233, 0,224, 38, 0,192, 93, 1,165,143, + 7,126, 39, 4, 69,148,169,253,119,184, 54,152, 53, 37,205, 28,155,154, 93,252,112,187,175,149,133,131, 16,167,190, 75,193,233, +111, 83, 15,105,242,176, 22, 70, 60,169,163, 89,163,189,135,135, 7,114,114,114,112,226,196, 9, 37,128,175,107, 59, 6,199,113, + 95,126,255,253,247,159,126,254,249,231, 98, 31, 31, 31, 0,240, 7,112,171,166,109,101, 50, 25, 92, 92, 92, 42, 29,203,145,227, +167,121, 78,157, 61, 77, 50,164, 79, 8,248,124, 59, 20, 41, 13,200, 47, 53,192,218, 78,142,207,102,135,153,157,107,239, 18,184, +105,195,207, 71, 8, 33,129,244,239, 20,139,252, 47,195,214,214,214, 63, 63, 63, 31,137,137,137, 24, 63,126,124,122, 94, 94,222, + 89,165, 82, 57, 41, 35, 35, 3, 0, 10, 94,129,178,210,153,247,247,247, 71,135, 14, 29, 48, 98,196, 8, 51,149, 74, 21,230,233, +233,233, 2,160,211,235,178,189, 38, 84,247, 69,254, 45,168, 85,222, 65,108, 48,120,107, 35, 34,160, 60,119, 14,162, 51,103,176, + 79,161, 40,211,104, 52,159, 80, 74, 83, 1,128, 16,242,241,246,159,126,186, 50,240,218, 53, 11, 93,108, 44, 60, 31, 60,128,192, +202,202,164,155, 79, 85,108,219,182, 13, 37, 37, 37, 40, 46, 46, 6, 0,124,251,237,183, 40, 41, 41, 65, 69, 45, 67,189, 39, 32, + 68, 23, 39, 7,119,100, 33, 14, 28,159,145, 39,121,171, 58,202, 53,230, 25, 46, 41,142,202, 98,198, 5,177,201, 65, 50,117,190, +174, 35,225,233,160,201, 83,193,165,115, 11,240,193,239,210, 16, 27, 43,242,254,124, 62,191,224,233,211,167, 3, 90,182,108,121, + 20,128,221, 95,173, 7,160,148, 62, 3,240,209,171,236,203,227,241, 22, 37, 36, 36, 56,108,221,186,117,250,178,101,203, 40,240, +135,163, 85,241, 51,159,207, 7,165, 20,150,150,150, 16, 8, 4,142, 87,175, 94,117, 12, 10, 10,218,136, 23, 55,180, 63,129, 97, + 24,234,235,235,139,132,132, 4,240,249,124, 88, 90, 90,130, 51,234,177,100,246, 52,176, 60, 49,127,238,220,185,254, 67,135, 14, +141,217,186,117,171,193, 34,184,115,167,252,252,252,135, 31,142, 25, 27,115,248,240, 97, 29,199,113,155,106,226,172,225,156,239, +198,197,197,241, 92, 21,142, 60,106, 84,113, 50, 33, 96,118,127, 61, 21,201,157, 96,198,231, 81, 33, 97, 32, 54,147, 88, 38,166, +165,229,115, 28,247,216, 20, 78,142,227,162, 19, 18, 18, 36,142, 14,182,124,149, 90, 87, 38, 17, 80, 81, 82,244,237,248,102, 1, +237, 61, 1, 64, 19,125,243,130,216,187,149, 36, 41, 59, 87,230,238,238,110, 18,167, 90,173,190,155,158,158,206,115,116,116,228, + 39,167,166, 29,177,146,203,236, 45,172,172, 58, 2,128,190,180,248, 38,163,213,230,242, 4,124,199,220,252,252, 2,181, 90,157, + 96,234,185, 63,127,254,156,239,236,236,192, 59,117,230,252, 81, 71,169,216,193, 92,196,183, 16, 19, 66,164, 60, 82, 34, 52,114, +121,102, 82,169, 67, 98, 90, 90, 1,165,180,214, 8,225,234,162,177, 67, 0,128, 97,150,236,173,194,141,251,247,239,227,228,239, +143, 33,163, 58, 16, 77, 49,206,108,255, 17, 99,230,126,254,151,235,254,234,115,182,106, 67,157,209,172, 77,173, 42, 35, 89,229, +252,200,168,167, 16,126,204,152, 49, 75,118,237,218, 85, 89,128,242,248,241, 99,244,236,217, 19, 0,176,100,201, 18,244,237,219, + 23, 65, 65, 65,120,252,248, 49,188,188,188, 16, 21, 21, 37,230,241,120,226,177, 99,199,174, 4, 80,163,163, 85, 21,155, 55,111, +198,164, 73,147,106, 42,172,126, 14, 64, 67,172,125,202,230,173,222, 97, 87,144,159,135,156,220,172,187,245,241, 85,128, 16,130, + 9,115,230,228,109,210,233,176,251,198, 13,140,147,201,164, 63, 61,123,134,208,160, 32,180,237,217, 51,207,148,123, 93, 69, 84, + 71,163,209, 64, 32, 16,192,194,194, 2,182,182,182, 16, 10,133,224, 9, 20,224,139,252,192, 8,133, 8,232,234,135, 53,159,200, + 84,227,223,198, 6, 66, 80, 36, 22, 33, 90, 40,173,185, 86,135, 16, 66,100, 77, 48,152, 82,148,168, 82,241, 91,133, 67, 98,213, +140, 88,202, 45, 4,103, 38,111,244,177,178,112, 16,226,228,134,100,156,217,152,118, 80,147,133, 5, 0,158,215,213, 93, 44, 22, +139,219, 90, 89, 89, 33, 53, 53, 21, 41, 41, 41,143,234, 42,240,167,148,170,130,131,131,227,197, 98,113,107,123,123,123, 0,168, +177,101,144, 16, 66, 56,142,171,172,195,218,185,123,191,157,127, 55, 79,179, 55,187,180,198,142,163, 43,240, 65,216, 6, 8,120, + 4, 44,171,199,218,111,250,131,213,150, 33,108,224,123,164,123,111, 47,191,115, 71,117,147, 1,252, 88,239, 5,254,135, 34, 45, + 45,237,163,110,221,186,173, 44, 45, 45, 45, 84, 42,149, 99, 0,192,195,195,163, 41,195, 48, 98, 0,181,102, 71,234,144,133, 16, + 62,120,240, 0,230,230,230, 72, 79,255, 99, 38,125,106,106, 42, 56,142,107,176,195,254,255, 19, 8, 33, 1,148,210,104, 66,136, + 51,128, 80, 84,145,119, 96, 0,224,248,241,227,221,143, 31, 63, 78,143, 31, 63,222,189, 98, 39,142, 82,206, 88, 80, 0,170,125, +113,109, 5, 2, 1, 5, 80,181,163, 73,106,101,101, 69, 4,174,174, 32,226, 23,165, 31,180, 74, 78,248,175,194, 96, 48, 77, 90, +134, 99,193, 3,209,131, 86, 9, 98, 40,205, 8, 86,216,245,194, 71,162,133,200, 18, 89,253,177, 49,165,128,145,130, 5,103,146, + 72, 97, 21, 80,165, 82, 9,163,209,104,221,188,121,243,227, 70,163,209,250, 5,221,127,239, 73,137,101,217,120, 30,143,135,233, +211,167, 3,229,209, 31,157, 78,135,172,172, 44,104,181, 90,232,116, 58, 36, 36, 36,160,184,184, 24, 58,157, 14, 15, 31, 62,132, +135,135, 7,120, 60, 94,173,225,116, 66, 8,165,148,194,205,205, 13,205,154, 53, 3,143, 80,108,249,106, 49,230,207,156,134, 81, + 30, 28,182,125,183, 22, 61,122,244,104,229,238,238, 30,204,231,243, 89, 39, 39, 39, 97,100,100,228, 17,150,101, 7, 55, 64, 71, +235,196,188,121,243,154,181,105,211,198,193,202,194,220, 32, 22,241, 32, 50, 40,169, 88,155, 79,249,170, 60,184,185, 53, 53, 66, + 34,245, 26, 55,110, 28, 11, 19,190, 28, 43, 56, 63,249,228, 19,103, 31, 31, 31, 75,107, 43,115,165, 72,192,203, 17,130,230, 21, +223,191,117, 29, 0, 68,246, 14, 26,152, 73, 91,143, 31, 63,222,216, 16,206,133, 11, 23,122,216,219,219, 91, 49,160,165,172, 94, +255, 71,190, 93,171,203, 39, 2,129, 26, 66, 81,251, 25, 51,102,144,134,112,126,250,233,167,238,173, 91,183,182,178,178,144,149, +241, 5,188, 76, 33,199,101,154,129,203, 18,232,244,133,102,246,118, 42, 72,229, 1,227,198,141,171,149,179, 34,154, 21, 30, 30, +158, 90,117, 61,143,199, 67, 65, 65, 1, 52, 89, 49, 16,166,199,194, 79, 46, 64,160,189, 53,196, 98,113,101,235,123,109,191,174, +181,213,104, 85, 69,133,179,101,234,190,237,151,214,145, 2,220,212,234, 78,117,221,172,114,254, 58,255,158,126,254,249,231,207, + 67, 66, 66,114,250,246,237,171, 59,126,252, 56, 8, 33,136,138,138, 66,122,122, 58,250,246,237, 11, 74,105, 69, 87, 27,238,222, +189,139,222,189,123,235,186,117,235,150,254,243,207, 63, 47,170,247, 4,241,162,140,193, 96, 48,160,172,172, 12, 5, 5, 5, 56, +118,236, 24,252,252,252,168, 84, 42, 29,202,115,235,179, 34,108,242,231,157,124,219,249, 99,227,134, 53, 58, 17, 95,176,218, 20, +206, 10, 16, 66, 48,254,147, 79,242,138, 3, 2, 10,118, 42,149,170, 9, 22, 22,210,230,169,169, 54,183, 79,159,182,211,235,235, +109, 54, 4,240, 71, 84,199,213,213,181,210,201, 18, 10,133,224,139,236,193,147,181,133,200,182, 47,164, 78, 67,241, 91,180, 88, +107, 41,195, 33,115, 57, 78,201,172, 80,171,180,131,212, 13, 43, 58,141,116,142,236, 60,202,249,188,180, 9,182, 18, 66, 24, 66, + 8, 67,249, 36,114,226,218,150,205,237,155, 73,112,109,127, 22,206,108, 76,251, 85,147,133,197, 0,158,213,247,119,174,215,235, + 53, 44,203,130, 97, 24,240,249,252,170, 53,162, 87,126,253,245, 87,220,190,125, 27, 0, 42,101,123, 74, 75, 75, 89, 30,143, 7, + 51, 51, 51, 0,144,215,198,203,178, 44, 4, 2, 1, 4, 2, 1, 46, 92,191,100, 59,106, 88,127,114,245,222, 89,116,246, 27,141, +252, 50, 61,178,139,245, 40, 82, 1,109, 2, 23,192,183,247, 33,220, 79, 40,133,127, 59, 95, 30, 79, 36, 27,111,210,197,253, 31, + 5, 33,164,169,131,131,195, 85, 59, 59,187, 40, 66, 72, 83, 66, 72, 83, 11, 11,139, 43, 10,133, 34,150, 16, 50,136, 82,122, 56, + 35, 35,195,167,172,172,172, 51,165, 52,153, 82,154,156,151,151,215, 51, 39, 39,167, 83, 93,205, 90,182,182,182, 91, 75, 74, 74, + 62,102, 89,118, 96,249,242, 54,203,178,254,113,113,113,173,253,253,253, 31,121,122,122,222,245,244,244, 60,233,233,233,121,196, +211,211,243, 72, 72, 72,200, 55, 21,114, 15,127, 39,106,242, 69,254, 65,168, 40,117, 9, 45,151,122, 8,173,248,160, 34, 36,115, +161,122, 1,154, 81, 44,126,104,252,240, 67, 88, 29, 57, 2, 65, 92, 28, 38,142, 31,111, 33,149, 74, 55, 16, 66,222, 32,132,116, +150,203,229, 27, 23, 47, 94,108,110,183,106, 21, 20,151, 46, 33,233,216, 49, 24, 4,130, 26,195,190,245, 65,173, 86,131,207,127, + 17, 92,211,233,116,144,201,100, 96, 89, 22, 64,253, 41, 32,214,136,107,233,217,177, 16,161, 25, 56,208,178, 83, 37,221,110,140, +142, 95,224,112,172,196,195,235,153, 82,232,181,212,190,163,195,134,166, 93,110, 40, 9,191, 76,100,101,134,148,148, 84,176,224, + 26,148,111,214,104, 52,197, 74,165, 18,254,254,254,182,183,111,223,110,238,231,231,103, 83,190,254,230, 43,156,110, 37, 8, 33, +193, 46, 46, 46,251, 93, 93, 93, 19, 93, 92, 92,246, 19, 66,130, 27,176,251,214,203,151, 47,131,199,227, 97,241,226,197, 40, 45, + 45,133, 94,175, 71,126,126, 62, 82, 82, 82,160,211,233,144,150,150,134, 39, 79,158, 64,167,211, 33, 41, 41, 9, 90,109,253, 15, + 36, 28,199,193,194,194, 2, 26,117, 25,126, 88, 49, 31, 11,195,103,163,248,249, 29,164,101,100,195,202, 82,134,143, 62,250,136, +103,109,109,205,177, 44,219,204,104, 52,246,102, 89, 54,194, 84,135,179, 92,180,240,119, 55, 55, 55,223,175,190,250,170,245,252, + 21, 17, 66, 11,126, 25, 21,155,155,113, 34,115, 49, 21,181,234,136, 73, 11, 54, 8,215,175,251,250,233,181,107,215,210, 77, 17, +239,172,224, 12, 8, 8,104,153,158,158,238,231,227,227,227,109,215,212, 93, 44,118,118, 41, 18, 58, 55, 41,161, 90,205, 13,226, +210,164,107, 68, 68, 68,204,149, 43, 87, 50, 26,194, 41,147,201, 90,237,216,177,195,215,209,209,209, 87, 32,145,152,169,138,139, +247, 25, 85,202,253, 60, 43,107, 51,198,194,234,237, 67,135, 14,221, 57,120,240, 96, 86, 67, 56,189,188,188,124, 86,172, 88,209, +166,109,219,182,109,156, 60,154,139, 37, 46,110,249,102,174, 77,243, 37,109,253,196,112,109,246,214,198,141, 27,239, 94,187,118, +205, 36, 78, 30,143,103,100, 24, 6, 2,129, 0, 82,169, 20,167, 78,157,194,135,147, 71,195,205,197, 22,222, 62, 62,232,245,193, +199, 56,120,240, 96,101, 13, 15,143,199,171,245, 27,253,167, 85, 31, 29, 13,112, 38,119,176,169,213, 29,108,106,117, 39,192,153, +252,201,169,170,116,182,202, 63,175,105, 27, 83, 80, 91, 29, 86,125,206, 22,165,244,196,133, 11, 23,190,156, 48, 97,130,168, 95, +191,126,184,113,227, 6, 38, 77,154,244,123,100,100, 36, 0,224,198,141, 27,152, 53,107,214,239,231,207,159,199,180,105,211,208, +179,103, 79,209,229,203,151, 55,154,162,253, 99, 52, 26,177,109,219, 54, 24,141, 70,200,229,114,216,216,216,160,127,255,254,136, +137,137,153,182,125,251,246, 88,158, 64,240, 78,232,192, 97, 56,126, 36, 18, 79, 30,198, 76,251,105,229,216, 6,139, 2, 51, 12, +131,126,227,199,231,229,181,105, 83,240, 83, 73,137,234, 93,107,107,169, 79, 86,150,205,111,251,247,219,213,183, 47, 33,132,176, + 44, 91,233, 92, 85, 56, 29, 21, 11, 95,100, 15,190,204, 23,124,243, 64,220,127, 38, 52, 8, 58,208,104, 97,123,250,184, 46,253, + 44,129,136,153, 52,116,190, 7,134,206,247,192,160,185,238, 19,165, 77,176, 69,214, 4,239,247,155,217, 44,196, 51,208, 18, 37, + 57,122, 28, 91,155,148,172,201,199, 42, 0, 79, 76,249, 59,231, 56,238, 81,122,122, 58, 68, 34, 17,154, 52,105,210,146, 16, 82, + 81, 23,184,117,202,148, 41, 51,150, 46, 93, 58, 27,192,210,242,115,146,135,132,132,180, 41, 43, 43, 67, 92, 92, 28, 0,220,174, +141,151, 82, 90,217,101, 88, 80,146, 36,118, 87,180,133, 95,171,169,176,182,110,135,244, 2, 29, 50, 10,116,216,242,195, 96,220, +185,188, 28,183,207,140, 67,114, 86, 22, 36, 78, 67,192, 26,181,181,118, 51,254, 67,176, 48, 62, 62, 62,120,255,254,253, 33, 0, + 22,182,109,219,246, 90, 74, 74, 74,167, 75,151, 46,121,187,186,186,110,168,119,239, 90, 80, 33, 11,145,148,148,244,210, 82, 46, + 11,161,163,148, 6, 80, 74,251, 81, 74, 7,149, 47,179,254,146,214,155,233,248,147, 47,242, 15,194,241,234,221,134, 21,168, 94, + 12, 15, 0,104,110, 99, 99,110, 48,232,211,206,158, 61,171,103, 24, 6, 82,169, 20, 19, 38, 77, 98,126,248,254,251,174,163,131, +131,163,222,123,243,205,147, 81,231,207, 7, 4, 5, 5,129, 82, 10,134, 97,176,119,239, 94,181, 70,163,206,111,210,164,137, 85, +245,131, 84, 71,213,218, 43, 74, 41, 74, 74, 74, 42, 29,173,226,226, 98, 56, 58, 58,154,156, 58, 84,150,224,220,249, 83,119, 10, + 41,251, 65, 74,191,103,235,244,171,179, 6, 7, 21,113, 44,191,152, 53,160, 88, 77, 81,170, 1,255, 6, 99, 19, 52,193,107,136, + 62,161,119,208,147,139,177, 87,243, 53,172,166, 65,221, 18, 57, 57, 57,243,195,194,194,242,157,157,157,137,133,133, 5, 92, 92, + 92,152, 65,131, 6,229,165,166,166, 46,109, 8, 79, 85,216,217,217,141, 10, 9, 9, 57,154,158,158, 62,252,226,197,139,205, 46, + 93,186, 52, 60, 36, 36,228,168,157,157,221, 40, 19, 41,246,125,254,249,231, 74,145, 72,132,142, 29, 59,162,180,180, 20,229, 93, + 62,117, 46,117,161, 34,237, 40, 20, 10,177,233,171, 69, 88, 24, 62, 27, 5,177, 55,112,255,247,179,184,144, 69,176, 96,197,215, + 16, 10,133,175,164,245,229,229, 32,107,219, 86, 97,254,120,214,164,145, 25,243,194,195,205,239,222,189, 43,152, 49,115, 22, 77, +202, 44,128,168,223, 26, 30,186,207,103,238, 41,237, 17,250,118, 47, 44, 94, 56,167, 45,165,180, 30,117, 38,160,181,131,172,173, +175,194,252,209,156,247, 70,199,207,156, 57, 83,178,122,245,106, 77,112,112,176, 58, 59, 59, 91, 34,179,182,241,225, 91, 90,249, + 38,101,102,201,131,131,131, 19, 62,248,224,131,162,134,114, 46, 88,176, 64,122,250,244,105,126, 88, 88,152,177,176,176, 80, 46, +144, 72,252,137,216,172, 67,110, 97,161,229,240,176,176,103,195,135, 15, 87,113, 28, 55,173, 33,156, 95,124,241,133,244,201,147, + 39,252,224,224, 96, 67, 86, 86,150,185,204,214,206,143,103,101, 19,152,152,153,109,209, 33, 40,232,249,140, 25, 51,148,117,217, + 89,213, 73, 49, 55, 55, 79,239,220,185, 51,214,174, 93,139,245,235,215,227,173,183,222, 66,204,195, 24,132,206,152,141,214,239, +207,194,145,171,215,145,158,158,142,101,203,150,193,207,207, 15, 66,161,240, 73,141,164, 83, 31,147,232, 76, 74,162, 51, 41,193, +212,199,164,226,125, 77,155,102,100,100, 64,177,180, 24, 47,109, 95, 3,110,127, 81,115,164, 43,192,153,220,169,171, 14,171, 62, +103,107,248,240,225, 31, 86, 72, 56,188,251,238,187,191,111,216,176,161,203,187,239,190,120,208,238,216,177, 35,150, 47, 95,222, +101,193,130, 5,191,175, 88,177, 2,189,122,245,130,167,167,103,189,141, 47, 44,203,194,104, 52, 98,244,232,209, 48, 26,141,200, +205,205,197,211,167, 79,177,121,243,102, 80, 74,205, 0,192, 89,225,218, 94, 36, 18,225, 94,244, 45,213,194,119,131,126,174,143, +179, 2, 85,239,117, 28,199,161,172,172, 12,195,223,127, 63, 47,173, 69,139,130,136,188, 60,213,100,107,107,169,123,114,178,141, +185, 78,231, 82, 87, 77, 42, 33, 4, 28,199, 85, 58, 86, 21, 14, 87,245,165,252,139,210, 36,232, 85,220,137, 75,187, 50, 0, 0, +221,198, 42, 48,104,174,251, 68,103, 47,233,183, 93,199,188, 8,122, 31, 92, 30, 79, 75, 51,216,213, 48,224, 81, 3, 34,214, 55, +110,220,184, 1, 43, 43, 43,132,133,133,137, 25,134, 89, 5,188, 40,126,167,148,126, 71, 41, 93, 87,193, 37, 22,139,215,140, 27, + 55,142, 41, 42, 42,194,253,251,247, 1,224,124, 77,132, 21,117,167, 21,231, 94, 86, 64,192,114, 34, 92,137, 62,133, 51,151, 14, + 32, 49, 61, 23,201, 57, 26,128,111, 9,141, 50, 13,122,117, 58,116, 69,209, 40,209, 74,107,162,251,167,225,111,145, 91,248, 27, +100, 33, 94, 27,170,250, 34,255, 36, 80, 74, 51,171,118, 27, 86, 21, 48,173, 73,176, 20,212, 66, 50,242,192,198, 31, 44,195, 70, +143, 85,250,249,249, 89,187,184,184,128, 16,130,193, 67,134,144,144,139, 23,205, 5, 10, 5,108,223,120,163, 50, 29,113,238,236, + 89,156, 58,117, 74,121,252,215, 67, 46,147, 38, 79, 30, 0, 96, 71,109,198, 16, 66,248,205,155, 55,175, 60,110,102,102, 38,196, + 98,113,101, 77, 68, 73, 73, 9,236,237,237,145,153,153, 89,107,170,163, 26,118,206, 11,191, 30,158, 19, 52,223, 35,200, 92, 64, + 78, 42,179,192, 82, 10, 1, 97, 1, 53,133,129, 5,180, 6,138,246,238, 60,155, 51,106,163,245,177, 27,145, 9, 0,118, 54,228, + 2,106, 52,154,223, 8, 33, 83, 57,142, 59, 0,128,185,120,241, 34,247,232,209,163, 15, 77, 45, 92,175, 9, 82,169,116,110, 84, + 84,148,205,220,185,115, 11,143, 29, 59, 86,220,191,127,127,203,205,155, 55,219,244,236,217,115, 46,128, 95,234,219,159, 82,170, + 38,132,236, 72, 77, 77,253, 48, 48, 48, 16, 5, 5, 5,208,235,245,184,115,231, 14,188,188,188,112,251,246,109,180,108,217, 18, +183,110,221,130,183,183, 55, 88,150,133, 70,163, 1,199,113,181,166,119, 43,110,230, 5,121,185, 64,126, 10, 50,110,156,196,211, + 7,119, 16,149, 65,240,221, 47, 71,209,164,153,199, 43,233,212,120, 59,202,218,184, 56,216,158, 89,189,228, 11,135,164,223,246, + 34,114,219,119,220,133,147, 39, 91,139,204, 49,181,251,232,143,135,233, 12,104, 10, 64,212, 41, 40, 16,253,172,159,176,210,102, +200, 58,255,176,110, 37,107,111, 71, 89, 27,133,189,237,233,255, 80,210,133,222, 0, 0, 32, 0, 73, 68, 65, 84,172, 90,106,254, +252,212, 79,216,183,105, 45, 61,184,107,143,159, 6, 8,106,211,166, 77, 63,134, 97,172, 0,104,202,235,188, 76, 26,109, 83, 19, +231,185,163, 71, 3, 52, 64,208,225,195,135,251, 73,165, 82, 39, 0, 6,149, 74, 21,255, 87, 56,207, 31, 59, 22, 80, 97, 39, 33, +196, 1,128,158, 82,250,220, 84,206, 10,140, 24, 49, 98,249,172, 89,179,194, 89,150,181,175, 88,103, 48, 24,120,107,214,172,225, +115, 28,199,163,148,234, 25,134,209,159, 62,125,154, 53, 26,141, 25, 26,141,230,125, 83,185,107,194,176, 97,195,112,253,250,245, + 37,120,209,132, 97, 18,212,106,245, 75,117, 90,117,165, 41, 77,225,191,120,241,226,178,119,222,121,103,222, 47,191,252,242,116, +195,134, 13, 3,167, 77,155,134,189,123,247,162, 69,139, 22,184,119,239, 30,230,207,159, 15, 0, 93, 22, 44, 88,112,100,235,214, +173,158, 73, 73, 73,181,117,199, 85,194, 96, 48,192,104, 52, 98,207,158, 61, 24, 60,120, 48,236,237,237,161, 80, 40, 64, 8,249, +109,242,228,201,223, 3, 0,143,240,132, 0,160,213,104,181, 62, 62,129, 38, 71,112, 61, 61, 61, 43,239,117, 89, 89, 89,149,157, +130,125,222,121, 39,111,203,234,213,248, 89,173,198,100,107,107,105,154,171,171,243,145,231,207,223, 35,132,108,174, 45,114, 84, + 17,213,169,207,201, 50, 53,194,172,206,196,231,191,174, 76,116, 2,240, 86,183,177, 10,116, 27,171, 64,224, 32, 7,194,240, 8, + 30,156,201, 71,204,185,130,131,134, 18,252, 70, 27, 48, 46,135, 82,250,200,214,214,246, 72,247,238,221, 7,182,106,213, 10, 83, +166, 76,249, 64, 40, 20, 10, 13, 6,195,204, 10,153, 7, 66,136, 37,195, 48, 75,183,111,223,254,158,141,141, 13, 46, 95,190,140, + 75,151, 46,253, 70, 41, 77,169,229, 58, 2, 64,165,102, 86, 19,183,150,154, 39, 73,101,210,156,244, 43,248,253,242,175,104,225, +247, 49, 36, 78, 3, 96,227,179, 2,250,216,245,208,229,159,129,141, 91,127,164, 37, 61, 7,143, 47,142, 49,213,246,255,117, 84, +200, 45,196,196,196,212, 40,183,208, 80,180,109,219,182,203,165, 75,151,196, 26,141, 6, 23, 46, 92, 64,135, 14,149,189, 93,255, +213,249,157, 85,125,145,127, 18, 72, 29, 67,165,107,252,214, 36, 28, 17,120,183,108,201, 10, 25,108, 31, 60, 96,128,234,238,221, +187,149, 79,125,154,155, 55,161, 60,117, 10, 44,203,130, 82,138, 75, 23, 47, 98,220,216,177,101, 2, 30,217,226,238,222,140, 18, +250,135,118, 75, 77,173,244, 66,161, 48, 44, 44, 44,172,242,230,147,154,154, 10,153, 76, 6,145, 72, 4,142,227, 96, 52, 26,193, +227,241, 96,105,105, 9,163,209,248,167, 16, 76,117, 78, 74,169,129, 45, 80, 14,223, 26, 58, 38, 83, 81,166,167, 83,173,220,209, + 84, 40,169,252,227,116,178, 32, 24,232, 39,128, 29, 63,135,158, 95,243,102, 6,167,205, 31, 78,171,205, 22,171,175,229,159, 16, +210,178, 93,187,118,223,143, 27, 55,142, 1,128,222,189,123, 51,237,218,181,251,150, 16, 82,235,168,156,250, 56,205,204,204,196, + 0,112,244,232,209,130,167, 79,159,190,117,244,232,209,130,170,235, 77,228,220,252,213, 87, 95, 65, 42,149,194,104, 52, 66,167, +211, 85,214,103, 85,125,213,235,245,176,179,179,195,241,227,199,193,178,236,241,122, 56,225,214,180, 25,136,125,115,236, 56, 26, +133, 75,121,194, 6, 59, 89, 85, 57, 91, 56,203,189,157,236,108,207,254,103,229, 50,251,194,103,119,144,150,150, 70, 79,159, 58, +126, 77, 77,105,122, 81, 9, 93, 88, 88, 70,189, 85, 90,106,214,193, 19, 41,103, 55,125, 70, 23,116,131, 1, 53,116, 13, 86,229, +108,227, 44,247,118,177,183, 61,253,245,127, 86,154, 23, 61,187,131,204,172, 44,156, 56,126,244,174,154,210,116, 74,233, 65, 74, +233, 68,150,101,125, 89,150,245,165,148, 78,172,205,121,105, 40,167, 82,169,108,171, 84, 42,219,190, 78, 78,142,227,218,114, 28, +103, 50,103, 85, 71,101,221,186,117,177,153,153,153,227,114,114,114,250, 86, 44,133,133,133,189,203,202,202,122,168, 84,170,174, +234,117,205, 44,149, 74,165, 67,105,105,169,179, 90,173,110, 79, 41,189, 83, 19,103,125,168,170, 58,157,145,145,177, 56, 35, 35, +163,198,200, 75, 85, 78,102,218, 99,178,251,235, 57,191,110,218,180,169,222, 22,251,186,248,171,219,153,155,155,123, 96,207,158, + 61,254, 30, 30, 30,158, 19, 39, 78, 68, 68, 68, 4, 54,108,216,160, 5,128,173, 91,183,106,171, 68,178,220, 18, 19, 19, 3,107, + 74, 27,190,100, 39,195,236,236,211,167, 15,189,116,233, 18, 6, 15, 30, 92, 41, 36,250,227,143, 63,194,104, 52,150,244,234,213, +139, 3, 0,181, 70, 85, 66, 57, 10,157,190,230,252,123, 77,215, 83, 36, 18,189, 93, 85, 47,176, 66,140, 89, 36, 18,129, 82, 10, +239, 46, 93,242,138,252,252, 10,182, 21, 23,171, 22,183,109,107,241,158,143,207,196, 86,192,216,154, 56, 9, 33, 47, 69,117,170, + 47,166, 70,178,170,114, 82, 74,115,212, 25,152,242,235,202,196, 83, 21,145, 45, 51, 57, 31,154, 82, 35, 14,173, 78,204,213,228, +226, 71, 0, 53, 58, 63,117,157,123, 65, 65,193,140,213,171, 87,107,173,173,173, 49,108,216, 48,172, 88,177, 98,114,151, 46, 93, +138, 29, 29, 29,175,123,121,121, 61, 24, 57,114,100,230,157, 59,119,102,132,132,132, 32, 46, 46, 14, 95,127,253,117, 81, 97, 97, +225,152,186, 56, 9, 33,149,145,188, 65,161,189, 11,126,248,118, 45,215,171,251,135,144, 74, 44, 96, 16,184,161,160,204,128, 66, + 37,133, 78, 28, 4,145, 80,140,190,193,109,112,253,244, 79, 42, 86,167,220, 81, 27,231,235,192,255, 1,231,107,145, 91,168,110, +231,235,144,133,248, 59,206,253,159,140, 26,116,180, 94,142,104, 85,180, 84, 86,188, 18,194,177, 44,203,193,221,195,221, 60, 41, + 49,229,187, 17, 35,194,222,237,215, 47, 84, 26, 26, 26,106,214, 38,246, 69,234,226,232,209,163,136,140,140, 84,157, 57,115,166, + 68, 44,224,109,117,107,226,230,200,178, 28, 8,169, 61, 98, 2, 0,230,230,230, 51, 63,255,252,115, 73,113,113, 49, 54,108,216, +192,249,251,251, 51, 50,153, 12,122,189, 30, 91,183,110, 53,180,105,211, 70,192, 48, 12,138,139,139,193, 48, 76,205,169,142, 63, +159,224,125, 66, 72,223,239, 67,134, 70, 6, 78,159,100,219, 58,164,147,117, 15, 55, 23, 24,222,160,200, 72, 77,196,211,243,103, + 10, 31,158,254, 38, 31,154,236,161,148, 82,147,135, 94, 87, 64,161, 80, 44, 58,115,230,140,195,140, 25, 51,168, 70,163, 33, 41, + 41, 41,116,229,202,149, 14, 83,166, 76, 89, 4,192,212, 84, 95,117,144,162,162, 34, 16, 66, 56, 0,149,175,104,128,172, 1,165, + 52,134, 16,114,120,200,144, 33,131,122,245,234,133,216,216,216,202, 20, 97, 85, 71,171,162,251,112,213,170, 85, 69, 0,106,105, +228,255, 3, 2,129, 0, 27,118, 28, 64, 81, 97, 30, 28, 29, 21, 48,147, 72, 94, 89,113, 89,196, 48,139,191, 92,246,133, 67,222, +227,235, 36,230, 90, 20,183,255,126,118,142,145,165, 53, 43,254,151,102, 80, 0, 96,234,171,205, 99,120,139,191, 92,185,212,178, + 34,173,249, 75,116,102, 9, 97,233,140, 87, 50,240,159,198,249,127, 12,133, 66,129,140,140, 12,162, 80, 40,104, 69, 90,175, 54, + 71,171, 58, 8, 0,142,227, 42,183,173, 41,109,248,170,252, 9, 9, 9, 43,223,120,227,141, 57,113,113,113,251, 91,183,110, 61, + 13, 64, 19,173, 86, 91,180, 96,193,130,255,108,221,186,245, 93, 83, 34, 89, 0,176,119,239,222,111, 38, 77,154,116,106,192,128, + 1,159,113, 28,215,174,210,118, 66, 18, 28, 28, 28, 42, 83,184,185,217, 89,225, 83,223, 29, 29, 94, 86, 86,104,178,206,157, 92, + 46,127,111,193,130, 5,102, 74,165, 18, 27, 55,110,228,218,180,105,195, 84, 60, 20,237,218,181,203,216,178,101, 75,126,216,135, + 31,230,173,203,202,194,242,203,151,149,225,190,190,254,219,158, 62,109,143, 26, 34,238, 21, 15,142, 53, 69,178, 42,202, 46, 94, + 5,148,210, 12, 66,200,148, 95, 87, 38,254, 8,224,173, 78, 35,156,112,248,171, 68, 20, 38,233,254, 3, 35,158,215,213, 53, 88, + 7,103, 26, 33,164,111,118,118,246,225, 47,190,248,194,178,125,251,246,240,245,245, 21,200,229,242,160, 10,185,152,226,226, 98, +156, 59,119, 14, 17, 17, 17,186,135, 15, 31, 14,161,148,214,154,174, 98, 89, 54,167,101,203, 23,207,180,132, 16, 74, 8,201, 47, +209, 18,203,125,173,130,228, 19,167,238, 39,191,223,186,138, 12, 61, 7,173,129,131,187, 71, 0,122,188,181, 14, 71, 78, 62, 96, + 51,146, 30, 61, 50,168, 11,183,188,242,197,249,223,192,223, 34,183,240, 55,200, 66,188, 22, 84,247, 69,254, 45,168,241, 47,148, +227, 49, 87, 34, 54,253,240,246,222, 61,191, 56,241,120,140,211,243,248,248, 91, 3,135, 14, 79, 63,123,246,172,141,208,210,178, + 3, 0, 78, 55,109,218, 53,189, 86, 93,112,236,240,225,166,238,238,205,252,202,135, 74, 83,142,199, 92,169,235,128,101,101,101, +202,203,151, 47,171,230,205,155, 71, 82, 83, 83,119, 59, 58, 58,142, 60,121,242,164,124,232,208,161,234,216,216,216,131, 78, 78, + 78,131, 66, 66, 66,204,231,204,153,163, 45, 43, 43, 51,121,240, 40,165,244, 17, 33,164,213,205, 47,214,188,115,243,171, 31,222, + 4,159,215, 25, 90, 1,192, 25,174, 64, 95,122, 22,192,110, 74,169,201,122, 71, 85, 33,147,201,252,164, 82, 41,238,222,189, 91, + 24, 20, 20,164,211,104, 52,194, 21, 43, 86,216,202,100, 50,191, 87,225, 43,183,151, 22, 22, 22,130,227, 56, 62, 0, 82,254, 10, +174,225,189,248,163, 6, 14, 28,120,120,223,190,125,125, 66, 67, 67,225,233,233, 9,131,193,128,150, 45, 91, 66,167,211,193,203, +203, 11, 90,173, 22, 75,150, 44, 65,113,113,241,236, 58,244,111, 64, 8,129,209,104,172, 44,182,117,113,109,250, 66,167,231, 47, +200, 88,200, 4,140,231,147, 99,219,144,147,159,199,237,187,151,157,173,210,179,125,227,114,148, 15,171,111,167, 98,161, 12,153, +248, 81, 58, 0,104, 57,212, 57,113, 94, 38,130,231,211,227, 63, 34, 59, 39, 15,123,163, 51,139,148,122,238,173, 39, 53,112, 54, +200,206,127, 8,103,192,146, 88, 12, 55, 81, 16,164, 54,141, 43, 83, 97,170, 67, 85, 27,162, 51, 41,225, 34, 90, 81,108,218, 86, +163, 70,214, 95,225, 47,143, 84, 29, 6, 0, 66, 72,234,232,209,163,195, 19, 19, 19,151,149,235,101,153, 36, 53, 82,129,109,219, +182,197, 1,248,179,114,114, 21,252,178,102,210, 33, 0, 38,107,197, 1, 64,105,105,169,230,206,157, 59,154, 57,115,230,144,212, +212,212,147, 78, 78, 78,125, 78,157, 58, 37, 29, 58,116,168, 54, 38, 38,230,188, 66,161,232,214,187,119,111,249,137, 27, 55,210, + 85,207,159, 31, 59,150,152,232,106,224,184, 90, 69,207, 8, 33,175,213,201,170, 64,133,179,117,104,121,226,151,135,191, 76,236, +205,105,113, 80, 87,136,107, 0,210,254, 2,231, 37, 66, 72,235,177, 99,199,238,235,223,191,127,167,214,173, 91,163, 73,147, 38, +120,250,244, 41,114,115,115,113,255,254,125, 28, 61,122,244,168, 70,163,169,119,160,118,126,126,254,159,198, 19, 17,137,173,226, +167,141,139,143,222,250,189, 67,203,174,161, 19, 36,190, 10, 14, 58, 61, 69,106,242,115, 44, 89,184, 69,149,153, 28,247, 72,111, +212, 15,249, 23,104,104, 93,138,143,143, 15,224,241,120,175, 85,110,225, 85,101, 33, 26,241,106,168,241,175, 52, 62, 62,245,145, +167,167,219,231,255,143,189,235, 14,143,162,234,187,231,206,204,246,150, 77, 47, 36, 36,180, 16, 58, 38, 84,233,130,130,196,130, + 72,249, 68, 4, 68, 64,196, 87, 17, 5, 81, 64,233, 8,130,160, 34, 10,130, 2, 86,192, 6, 2, 22,192, 68,138, 2,146, 87,165, +132, 78, 32,189,109,122, 54,219,102,238,247, 71,118,150, 77,200,110,118, 3, 8,248,238,121,158,121,118,102,239,204,217, 59,147, +205,206,153, 95,253,250,171,109, 61, 40,101, 88, 74, 72,133, 94,239,191,227,202,149, 43,197,206,251, 53, 15, 8,208, 62, 57,225, +201,145, 68, 32, 18, 66, 4, 94, 96,153,131, 23, 46,164,187,181, 24,153,205,230, 73, 35, 71,142,124, 71,165, 82,205, 54, 24, 12, +255,213,235,245,127,118,236,216,113, 1,165,116,142,209,104,252, 78,171,213, 30,190,251,238,187, 23, 69, 71, 71,175,162,148,186, +204, 66,169, 11,118, 33,181, 9,110, 98,196, 26, 2, 66,200,124, 74,169, 31,199,113, 37,127,255,253,247,231,113,113,113,143, 81, + 74,253, 8, 33, 37, 13,229,172,170,170,250, 79,113,113,113,208,196,137, 19,173,235,214,173,139, 27, 59,118,236,204, 19, 39, 78, + 72,170,170,170, 60,170,176, 46,130, 82,106, 34,132, 60, 60, 98,196,136,245, 18,137,164, 63,195, 48, 68, 16, 4,234, 52, 14, 74, + 41,120,158,223,142,122,174, 11,207,243,153,173, 91,183, 6,112,245, 9,186,174,248, 92,171,213,154,121,205,155, 46, 80,102,230, +167,190,191,239,196,146, 42, 43,165, 54,129, 78, 58,157, 91, 81,103,202,217,145,211,180,173,199,156, 85,194,212,119,126, 60,185, +196,100, 21, 4,155, 64,159,118,197,233, 13,238, 20, 78, 0,152,169,255,228, 27,172,253,196, 17, 24, 47,186, 19,107,111,223, 72, +136, 86, 39,120, 89,177,153,121,186, 58, 88,190, 62,193,215, 80,126,160,166,232,242, 22,195,134, 13,187,105,241, 40, 22,139,101, +214, 67, 15, 61,180, 64,175,215,191,153,159,159,255, 95,189, 94,127,178, 85,171, 86, 83, 5, 65, 88, 85, 89, 89,185, 67,171,213, + 62,216,185,115,231,105, 49, 49, 49, 27,211, 40,221,232,142,139,231,249, 76,209,170, 3,128,138,255,151,162,144,112, 22, 20, 86, +171,213,107,129,100, 23, 91, 47, 2,104,130,234, 2,188,231, 40,165,215,117,109, 40,165, 89, 0,122, 16, 66,154, 2,232,143,234, +250,125,197, 0, 46, 2,248,131, 82,250, 87,131,185,141,133, 89,132,144,132, 83, 41,251,159, 62,115, 50,101,148,152, 93,200,178, +178,227,188,165,114,147,213, 88,180,254, 95, 32,178, 0, 96,110,108,108,172, 31,128, 14, 0,114,113,181,144,113, 26,128,183, 27, + 74,234,226,127,230,158,134,242,249, 80, 29,163,229,236, 46,172, 49,118, 51,191,139,132,144, 1,244, 6,247, 67,242,113,250, 56, +125,156, 62, 78, 31,167,143,211,199,249,239,227,188,147,225, 46, 24,254,250,237,206, 62,248,224,131, 15, 62,248,224,131, 15,255, +227,112,105,209, 2, 80,103,230,128, 55, 74,181, 33,217, 7,245,241,251, 56,125,156, 62, 78, 31,167,143,211,199,233,227,252,247, +113,254,175,193,231, 58,244,113,250, 56,125,156, 62, 78, 31,167,143,211,199,121,203, 57,239,100,248, 92,135, 62,248,224,131, 15, + 62,248,224,131, 15, 55, 9,162,168,170, 43, 40,222, 39,180,188, 4,169,238, 89,247, 12,128, 97, 0,154, 3, 56, 15, 96, 27,128, + 53,212,243, 54, 21,206,124, 58, 0, 51, 1,244, 64,117,247,250,139, 0,246, 3,120,131, 82,234,182,204,193,255, 50,130,131,131, + 95,149, 72, 36,122,160,186,181,137,248,234,188,206,243,124,113, 73, 73,201,226,155,241,249,132, 16,214,211,172, 44,113,174,206, +115,115,126,181, 90,173, 55,109,158, 62,220,158, 32,132,180, 12, 8, 8,248,212, 96, 48, 60, 78, 41, 61, 83,255, 17, 62,248,112, +231, 32, 36, 36,228,105,139,197, 50, 91, 42,149, 46,202,203,203,123,255, 86,207,231,159,130,171,204, 67,135,208,218,185,115,103, + 50, 0, 36, 38, 38,246, 1, 0,173, 86,123,136, 97,152,166,246,131, 1, 92,237,133, 87, 59,245, 95,124, 21, 4,225, 98, 97, 97, +161,203, 2,106, 42,149,234, 16,203,178, 77, 9, 33, 96, 24,198,177, 88,173, 86, 45,203,178,101, 46, 56, 51, 12, 6, 67,167, 6, +159,249, 13, 4,169,158,212,247,254,254,254, 85, 11, 22, 44, 88,211,183,111,223,168,172,172, 44,219,140, 25, 51,122,255,249,231, +159,137,132,144,251,189, 17, 91,132,144,238,132,144,141,119,221,117,215, 55, 99,198,140,217,210,181,107, 87, 89, 97, 97,161,118, +219,182,109,141, 54,109,218,116,140, 16,242,184,183, 37, 46,110,119, 16, 66, 56, 87,245,204,220,141,213,134, 68, 34,209,103,100, +100,104,129,234, 18, 22,118, 97, 5,171,213, 10,171,213,138,138,138, 10,116,236,216,224, 50,103, 46, 17, 30, 30, 30, 79, 8, 89, + 29, 27, 27,219, 41, 34, 34,226, 40,128, 41, 89, 89, 89,127,122, 51, 87,155,205, 6, 74,169, 99,158,109,218,180,185,225,243,252, + 55,131, 16,242,148, 76, 38, 27, 20, 27, 27,219,197,100, 50, 21, 93,188,120,241, 8,207,243,175, 81, 55, 69, 47,189,228,247, 3, +240,154, 92, 46,239,218,188,121,243,168,179,103,207,166, 91, 44,150,195, 0,230, 83, 74, 27, 92,210,197,137,191,101,159, 62,125, + 14,188,247,222,123,129,147, 39, 79, 62, 64, 8,233,233, 19, 91, 62,220, 42, 52,110,220, 88, 95, 81, 81,177, 30, 64,188, 68, 34, + 9, 83, 40, 20, 80, 42,149, 57,114,185,252,191, 74,165,114,252,129, 3, 7,138,235, 37,169, 5,158,231, 95, 75, 75, 75, 11,235, +214,173,219,178,118,237,218,205, 43, 40, 40,168,178, 88, 44,123,139,138,138,166, 81, 74, 75,221, 29, 91, 91,139,220, 41, 16, 93, +135,206, 46,196, 26,174, 67,123, 95,161,190,206, 7,113, 28, 23,153,150,150, 22,162,213,106,193,243,188,195, 90, 32,222,212,156, + 99,187,236,117,154,208,170, 85, 43,183, 85,132, 37, 18, 73, 84, 70, 70, 70,136, 70,163,113,188,103,177, 88, 16, 22, 22, 38,100, +102,102,134, 40, 20,138, 26,251,155,205,102, 68, 70, 70,222, 78,181, 80,158, 9, 8, 8, 40,185,114, 37,189, 99,149,201, 50,127, +194,127, 94,121,245,241, 97,247,250, 31, 58,116, 72,184,255,254,251, 77,201,201,201,207, 0,240,168,200, 42, 33,196,143, 16,178, +105,198,140, 25,243, 20, 42, 93,224,190, 67, 39, 77,155,182,237,204,188,171,101, 19, 50,109,218, 52,246,185,231,158,251, 53, 62, + 62,254, 83, 66, 72,130, 55,150, 45,173, 86,251,131, 92, 46,143, 97, 89, 22, 22,139,229,138,193, 96,184,175,193,103,123,131, 65, + 8,185, 11, 64, 10, 33, 36,158, 82,250, 95, 79,199,220,161,176,176, 16, 70,163,241,154,165, 77,155, 54,158,246,202,244,102,254, + 92, 84, 84,212,119, 75,150, 44,105,148,147,157,141,183, 86,174,236, 6, 96, 13,128,110,158, 28,159,151,151,119,205, 60, 91,181, +186,241, 53,175,254,205, 32,132,204,156, 55,111,222,146, 81,163, 70,129,231,121, 24,141,198,136,115,231,206,181,157, 61,123,246, + 35,132,144, 46,148, 82,175,234,208,213,193, 31, 28, 27, 27,155, 58,117,234,212,128, 46, 93,186,192,222,165, 34, 98,255,254,253, +221, 54,108,216,240, 4, 33,164, 21,165, 52,255,122, 62, 35, 32, 32,224,211, 15, 63,252, 48, 80,165, 82, 97,251,246,237,129,253, +251,247,223, 79, 8,233,213, 80,177, 69, 8, 97, 2, 3, 3,159, 3,112,143, 32, 8, 50, 0,135,139,138,138, 22,210, 6, 84,117, +247,225,127, 11, 65, 65, 65, 79,149,149,149,189, 39,151,203,165,254,254,254, 80,169, 84,224, 56, 14, 28,199, 53,150,203,229,141, +229,114,249,224,123,238,185,103,202,190,125,251,220, 86,216,191, 59, 62,108, 28, 24, 50,159, 37, 12, 11, 0,109, 98, 3,117,126, +126,126,152, 63,127,190,250,225,135, 31, 86, 3,192,129, 3, 7,198,140, 29, 59,182, 63, 33,164,157, 43,177, 85,151, 22,185, 83, +224, 42,227, 16,168,217, 84, 58,217,121,128, 16, 2,165, 82,137, 45, 91,182,128,101,217, 26, 93,227,235, 90,111,220,184,113,189, + 19, 17, 45, 98, 59,118,236,128, 78,167,131,159,159,159,227, 70, 35,151,203,177,119,239, 94, 72, 36, 18,112, 28, 7,137, 68,130, + 78,157, 58,213, 89, 48,243,102, 98,120, 91, 66, 1, 96,235,179,213,243, 26,190,186,186, 8,228,214,103, 91,161, 87,115, 37,134, + 61, 55,119,100,101,149,165, 51,128,138,226,162,162,162,163, 95,127,157,117, 87,203,150,210, 79, 63,253,180, 75,163, 70,141,134, +193, 67,161, 5, 96,102, 66, 66,194, 87,172,210, 47,104,204,216,113, 99,198,115,140,229,137, 73, 47, 45, 74,207, 46,168,152, 56, +113,226,215,219,183,111, 31,179,116,233,210, 83,211,167, 79,159, 9, 96,150,167,243,151,201,100, 49,231,206,157,139, 21, 4, 1, +237,219,183,191,109,218, 24,136, 66,138, 82, 10, 66, 72, 13, 65,229,110,172, 62,136, 22,172,186,150, 27,141, 70,141, 26,181, 26, + 61,122,116,144,161,160, 0,111,173, 92, 41,190,221,169, 62, 55,162,232, 34, 52,155,205,120,244,209, 71, 71,243, 60,207,137, 34, +208,100, 50,153, 75, 74, 74,170,156, 50,123,242, 41,165,247,214, 55, 23, 66, 72, 83,181, 90,253, 38,128,120,163,209,216, 8, 0, +212,106,117,166, 32, 8,223, 84, 84, 84,204,162,246, 6,190,222,130, 16, 18, 5,160, 45, 92,183,130,162, 75,150, 44, 57, 59,115, +230, 76,143, 5,205,141,226, 36,132,196,132,134,134, 46, 30, 62,124, 56,118,238,220,137, 93,187,118, 89,149, 74, 37, 55,118,236, + 88, 50,101,202, 20,255,169, 83,167, 14,198,117, 20,113,180, 99,240,188,121,243, 2, 90,183,110,141,109,219,182,225,175,191,254, + 50,198,198,198, 42,251,246,237, 11,142,227, 2, 94,125,245,213,251, 1,108,188,158, 15, 48, 24, 12, 11, 95,122,233,165, 77,159, +127,254,185,246,226,197,139, 88,189,122,117,208,200,145, 35,147, 9, 33,125, 60, 21, 91,132, 16, 57,128,231, 0,244, 99, 89,182, +215,216,177, 99,109,255,249,207,127, 36, 12,195, 88, 87,174, 92, 25,188, 97,195,134,145, 65, 65, 65,241, 5, 5, 5,190,240, 3, + 55, 96, 89,214, 34, 8,130, 4,128,130, 82,106,170,111,251, 22, 79,247,134, 34, 48, 48,112,114, 81, 81,209,154,176,176, 48,132, +134,134, 94,115,175, 53,153, 76, 80, 40, 20,210,176,176,176, 15,135, 12, 25, 34,249,246,219,111, 93,186, 0, 9, 75, 94,219,254, +197,130, 70, 1,254, 90, 0,192,170, 15,126,172, 4,128,111,191,253, 22, 89, 89, 89,240,247,247, 71,187,118,237,216, 5, 11, 22, +132, 79,155, 54,237, 45, 0,227, 93,113,213,214, 34,119, 10,106,187, 13,157,183,221,198,104, 9,130,224,104, 88, 42, 10, 42, 81, + 4,213, 94,183, 19,215, 56,190,118, 70, 2, 33,132,148,151,151, 59, 68,150, 78,167,131,253,230, 10,171,213,122, 13, 47,207,243, + 32,132, 80,119,156, 46, 78,120, 50,128,189,148,210,243,245,237, 91,155,115,235,179,173,176, 73, 62,227, 49,177,132,250,224,151, +170, 95, 55, 1, 56,116,105,252,234,247,250,244,105,244,220,156,119,230, 26, 11,179, 10, 94, 29,253, 96, 76,108, 88,160, 82, 93, +156, 87, 18, 16, 23, 55, 16,213, 21,149, 61,157,103,239, 49, 99,198,108,254,233,247, 52,162, 80, 72,165, 28,203, 74,122,182,111, + 25, 24,229,199,250,105, 1,191,244, 11,103, 15,141, 27, 55,174,253,244,233,211,123,121,115,238, 12,195, 64,167,211, 97,243,230, +205, 96, 60,232,157,115, 51,178, 70,234,248,187,115,176, 11, 41,131,193,128,157, 59,119, 34, 49, 49, 49,133, 16, 18,111,223, 37, +133, 82,138,210,210, 82,100,103,103, 35, 60, 60, 60,133, 16, 34,113,118, 35,214,230, 20,173,170,162,168, 26, 59,118,236,104,155, +205,230,248, 62,215, 33, 96,128, 90, 34,198,211,115,143,136,136,248, 9,192,189, 44,203,194, 92, 85,101,126,115,197, 10,231,225, + 63,156, 69,150, 43, 78,113,174, 60,207,115, 41, 41, 41, 18,241,127, 6,128, 4,128, 26, 64, 16,165, 20, 12,195,252, 93,199,177, +181,175,103, 43,149, 74,117,104,199,142, 29,186, 78,157, 58, 17,153, 76, 6,155,205,134,227,199,143, 71, 45, 93,186,116,210,158, + 61,123,238, 39,132,180,161,181,154,167,187,227,116, 66,219,253,251,247, 87, 52,107,214,172, 78,225, 88, 90, 90,202,181,108,217, +178, 15,128,107, 68,209, 63,192,153,145,155,155, 59,228,222,123,239,125, 58, 39, 39, 39,213,102,179,189, 12,160, 93, 80, 80, 80, +202,208,161, 67,161, 84, 42,251,193, 3,161,229,238,239, 30, 18, 18,242,240,221,119,223,141,213,171, 87, 99,233,210,165, 3, 40, +165,123, 9, 33,253, 75, 75, 75,247, 60,244,208, 67,208,235,245, 67, 80,135,208,242,244,187, 68, 8,105,217,187,119,239, 15,231, +207,159,175,221,185,115, 39, 98, 99, 99, 81, 86, 86,134, 23, 95,124, 49,228,245,215, 95, 79, 34,132,244, 21,197,150, 43, 78, 66, + 72, 27,185, 92,190,241,243,207, 63,215, 52,107,214,172,153, 84, 42,101,154, 53,107, 6,131,193,128,170,170, 42,249,162, 69,139, +218, 43,149,202, 63,223,126,251,237,141, 0,134, 54,100,158,222,192, 29, 39,169,238,158,161, 3,160,247,198,237,234,230,220, 75, + 0,200,197,109,137, 68, 2,133, 66, 1,133, 66, 1,185, 92,142,211,167, 79,207, 81, 40, 20, 43,225,244, 91,236,142,147, 92,189, +105,117, 36,132, 28, 97, 89,214,237,118,237,208,144,127,250,122, 2, 0, 33, 36,146, 16,178, 10, 64, 63, 0, 12,195, 48,201, 65, + 65, 65,207,231,228,228, 92,246,148, 51, 34, 34, 34,176,188,188,252,237,240,240,112,132,134,134, 2,213, 68,104,212,168, 17,172, + 86, 43,114,115,115, 65, 41, 69,113,113, 49, 84, 42, 21, 34, 34, 34,222,158, 52,105,210,182,181,107,215, 22,214,201, 41, 96,233, + 67, 35,103,191,198,178, 44, 3, 0, 44,167,209, 76,125, 5,136,137,137, 65,207,158, 61, 81, 85, 85,133,146,146, 18,180,109,219, +150, 35,132,140, 97, 24, 70, 71, 41,125,159, 82,186,207,235, 11,116,155,195, 93, 48,252,188,218,126, 81, 66, 8, 4, 65, 0,199, +113, 53,132, 86,237, 69, 20, 69,246,239,171, 91, 11, 10, 33,132, 49,155,205, 14,145,229,231,231,231, 16,105, 54,155,205,149,208, +242,250, 68, 3, 3, 3, 59, 8,130,208,148, 16,178,214, 83,177, 85, 27, 99,198,140,185, 38,222, 99,218,180,105, 25,121,121,121, +244,209,129, 29,213,169,187,179,178,155,251,107,148,193, 90,109, 19,133,127,128,190,176,176,240, 55, 0,122, 47, 62,162, 69, 66, + 66,130,114,211,215,251, 51, 38,188,176,100, 65,167,102,129,186, 14,145, 65,254, 97,126, 74,153,134, 33, 21, 10,155, 53, 35, 32, + 32, 32,214,219,121,179,108,117,179,119,189, 94, 15,142,227,110, 11,139, 22,165,212, 70, 8,137, 39,132,164,236,220,185, 19, 93, +187,118,117,136, 45,251, 56, 74, 74, 74,112,252,248,113,244,238,221, 27, 0,226, 61,137,213, 18, 4, 1, 22,139, 5, 22,139,197, + 33, 96,164, 82,169, 56,236, 16, 48,226,190, 44,203, 94, 35, 98, 60,196, 2,127,127,255,222,253,250,245,147,125,177,101,139,140, + 82, 90,129,234,198,215,229,148,186,104,144, 93, 11, 54,155,205, 97,101,147, 72, 36,184,114,229,138,195, 42, 44, 90,134,107,187, +206, 93, 65, 46,151,191,244,229,151, 95,234,186,116,233, 66, 10, 11, 11, 33, 8,130,227, 71,114,205,154, 53,138, 97,195,134, 53, + 58,118,236,216,171,104, 64, 59, 27, 0,196,149, 32, 2, 0,157, 78,103, 3,224,109,243,203, 58, 57,109, 54, 27,233,209,163,199, +244,130,130,130,246, 70,163,113, 81,125, 36,246,239,196,118,251, 82, 77, 76,200,159,169,169,169,198, 17, 35, 70, 40,155, 52,105, +210,213,203,121, 93,131,150, 45, 91,118,151, 72, 36, 56,124,248,176, 9, 64,178,253,237,228,191,254,250,203, 52,116,232, 80,121, + 84, 84, 84,119, 79,185, 8, 33, 45, 91,181,106,245,115, 72, 72,136, 82,180, 96, 14, 31, 62, 92,178,110,221, 58,109,102,102, 38, + 44, 22, 11,102,206,156,137, 7, 30,120, 0, 65, 65, 65,152, 54,109, 90,232,178,101,203, 62, 5,144,224,134, 83, 33,147,201, 54, +159, 59,119, 46, 54, 60, 60, 92,249,251,239,191,163, 67,135, 14, 40, 40, 40, 64, 78, 78, 14,202,203,203,145,147,147,131,241,227, +199,135,188,245,214, 91, 17,215,113, 41,110, 52,138,165, 82, 41, 84, 42,149,190,184,184,248,122,226,220,228, 0,100,192, 85,145, + 37,151,203, 33,151,203,161, 80, 40,174,171, 47,235,157, 0, 66, 72, 35, 66,200, 73,169, 84, 42, 87,169, 84, 82,134, 97, 32,151, +203, 7, 6, 4, 4,156,184,239,190,251,218,253,244,211, 79,105,158,240, 84, 85, 85,109,150,203,229,146,144,144, 16, 0, 64,108, +108, 44, 58,116,232,128,138,138, 10,161,164,164, 4,122,189,158,185,124,249, 50,140, 70, 35,178,179,179, 17, 29, 29, 45, 97, 24, +102, 51,128,251,235,226, 59,120, 44,251, 3, 0, 31,136,219,193,193,193,185, 0,148,226,182, 66,161, 64,163, 70,141,144,153,153, + 9,173, 86,203,190,254,250,235, 67,183,108,217,242, 8, 33,100, 12,165,244, 19, 39,170,107,180,200,157,132,186,226,180, 0,187, +208, 74, 76, 76,156,187,115,231,206, 62,181, 15, 18,133,150,184,212,101,201, 18, 23, 79, 4, 17, 33, 4, 60,207, 35, 52, 52, 20, + 42,149, 10, 42,149, 10,132, 16,199,251,181,249,237, 79,248, 94,159,172, 90,173,198,168, 81,163,232,251,239,191,255,180, 93,108, +157,243,244,216,225,171, 83, 29, 86,172,218,104,211,166,205,161, 87, 95,125,245,225, 95,126,249, 37,179, 83,179, 38,156, 58,235, +114,185, 66,167,215, 35,178,113,226,216, 33, 67,255, 66,117,246,161,167, 56, 87, 86, 86,166,108, 30,169, 50, 51, 76, 21,105, 44, +231,180,225,106,169, 60,204,223,191,145,212,108,202,211,249,251,203, 76, 38, 83, 49, 0,151, 77,160, 1, 64,167,211,253, 40,151, +203,163, 89,150, 5,203,178, 8, 10, 10,242,163,148, 66,175,215, 35, 50, 50, 82, 19, 23, 23,119,134,227, 56, 48, 12,131,242,242, +242,203,151, 46, 93, 26, 88,223,196,252,253,253,127,148,203,229,209, 12,195,128, 16, 2,150,101, 29,137, 11,226, 58,203,178, 32, +132,160,178,178,210, 35, 78, 74,233,127, 9, 33,241,137,137,137, 14,177,181,123,247,110, 12, 26, 52, 8,197,197,197, 56,113,226, +132,179,200,242,200,109,232, 28,252, 78, 41,133, 84, 42,197,233,211,167,107,184,180,197, 69,171,213,122, 66, 89, 39, 2, 2, 2, + 14, 12, 31, 62, 28, 31,126,248, 33,165,148, 18, 0,106, 66, 72, 7, 63, 63,191,211, 39, 79,158,244, 40, 14,134, 82, 10,139,229, +234,174,226,119,220,249,255,203, 83,176, 44, 59, 48, 33, 33,129,148,148,148,136, 2,210,241, 64,196,178, 44,222,123,239, 61,101, +151, 46, 93,102, 43, 20,138,233, 82,169,180,212,106,181,126, 81, 85, 85,181,136, 82,234,117, 80,235,205, 68,175, 94,189, 94, 72, + 79, 79,127, 32, 58, 58,122, 71, 67, 57, 40,165,180,115,231,206,102, 0, 74,150,101, 37,245, 30, 80, 15, 8, 33, 44, 0,240, 60, + 95, 37,138,125, 74,169, 45, 33, 33,161, 10,213, 55,121,214, 83,174,160,160,160, 79,119,237,218, 21, 25, 29, 29, 13,171,213, 10, +155,205,134,242,242,114, 36, 39, 39,195,100, 50,193,102,179, 33, 54, 54, 22,175,189,246, 90,213,243,207, 63,175, 88,187,118,109, + 94,121,121,249,227,245,208, 62,191,109,219, 54,117,120,120,184,210,104, 52,226,194,133, 11, 72, 72, 72, 64, 89, 89, 25, 42, 42, + 42, 80, 89, 89, 9,139,197,130,210,210, 82, 61,207,243,230, 6, 95,136, 27, 12,142,227, 32,151,203, 33,149, 74,139,163,163,163, + 65, 8, 81,164,165,165, 53,196, 21,167, 3, 80, 42,145, 72,100,206, 2, 75, 46,151,227,240,225,195,175,202,100,178, 58,173, 89, +174, 64,107, 5,114,214,183,125,171, 65, 8, 89, 37,149, 74,229, 1, 1, 1,142, 39, 74, 65, 16,164, 26,141, 6, 33, 33, 33,171, + 1, 12,246,132,135, 82,122, 87, 64, 64,128,227,247,189, 99,199,142, 72, 79, 79,255,166,164,164,228,137,188,188, 60, 48, 12,179, +153, 97,152, 71,236,252, 40, 42, 42, 66, 84, 84,212, 93,174,248,122, 36,132, 63, 13, 66, 29, 22,173, 54, 45, 2, 52,206,227, 58, +157, 14, 58,157, 14,151, 46, 93, 66, 69, 69, 5, 61,123,246, 44,153, 60,121, 50, 49,155,205, 31, 19, 66,126,163,148, 94, 4, 92, +107,145, 59, 1, 13,138,209, 2,174,186, 14,235, 18, 86,181,133,151, 39,130,200,108, 54,107, 18, 18, 18, 4,241, 6, 46, 46, 0, +136, 43,161,133,106,203,129,215,144, 72, 36,218,201,147, 39,151,189,255,254,251,147, 8, 33,235, 40,165,103, 27,194, 3, 0, 59, +190,250, 60,116,233,107, 51, 95, 11,136,104,210,124,250,244, 57,220,131, 15, 62,248,251,166, 77,155,248,128,214,131,251,239,251, +241,147,208,183, 95,156,177,123,215,174, 93, 64,117, 96,180,167, 56,240,253,247,223,135, 77,123,110, 10, 94,123,233,249, 31,116, +177, 65, 50, 13, 9, 80, 43, 76, 21,249, 26, 80,163,188, 69,171, 7,190,222,177, 35, 27,192, 49,119, 36, 74,165, 50,250,236,217, +179,177,206, 66,194, 98,177, 64,175,215, 99,211,166, 77,193, 90,173, 54, 88,163,209,128,227, 56,116,232,208,193,163,137,201,229, +242,232, 51,103,206,196,106,181, 90, 84, 86, 86,194,100, 50,193,106,181, 66, 16, 4, 16, 66, 32,145, 72, 32,147,201,160, 86,171, +189,202,236,115, 22, 91,187,119,239, 70,219,182,109, 81, 84, 84,132,212,212, 84,175, 69, 22,112,213, 74,228, 28,143,197,113, 28, + 62,109,214, 12, 19,178,178, 28, 2,102,149,159, 31, 94, 19,188,174,188, 1, 0,104,223,190, 61, 61,120,240, 32,126,248,225, 7, + 60,244,208, 67,228,187,239,190,179,240, 60, 47,205,204,204,244,216, 58, 38, 8,130, 99,174,226,239,182,179,192,242, 86,104,217, +108, 54,173, 76, 38, 67, 85, 85,149,195,181,239,188, 52,109,218, 20, 6,131,129, 43, 45, 45,229,178,178,178, 84, 11, 23, 46,252, + 79, 82, 82, 82, 56,128,199,188,190, 0, 55, 16,239,191,255,126,244,132, 9, 19,174,112, 28, 71, 7, 13, 26, 52,250,242,229,203, + 67,194,195,195,247,254,242,203, 47, 43, 0,180,172,151,160, 22,130,131,131,255,224, 56, 46, 82,163,209, 72,183,110,221,106, 45, + 43, 43,147,134,132,132,228, 2, 87,155,169, 3,213, 77,150, 75, 74, 74,234,205, 92, 14, 14, 14,254, 35, 56, 56, 88,250,238,187, +239, 90, 11, 11, 11,165, 97, 97, 97,185, 34,143, 90,173,150,110,221,186,213, 90, 90, 90, 42,213,235,245,127, 20, 23, 23,215,203, + 87, 80, 80,240,248,152, 49, 99,246,239,221,187, 55,136,101, 89, 92,190,124, 25,133,133,133,208,235,245,216,188,121, 51,162,163, +163,177,109,219, 54,131,193, 96,120,234,205, 55,223,156, 93, 94, 94,238, 73,169,135,222, 93,187,118,141, 46, 46, 46,134, 94,175, + 71, 69, 69, 5,254,248,227, 15,180,105,211, 6, 89, 89, 89, 96, 24, 6,122,189, 30,107,214,172,169, 36,132, 24, 60,185,142, 55, + 27, 44,203, 58,172, 78, 78,226,168,170,123,247,238, 72, 74, 74,154,225,141, 56,162,148,154, 37, 18, 73, 13,129,229,180,238,177, +192, 18,193,243,188,212, 30, 35, 74, 60,217,190, 13,208, 71,169, 84, 74,107,191, 89, 89, 89, 41, 13, 15, 15,239, 85,215, 1,117, +129,227,184, 64,165,178,218,224, 20, 29, 29,141,146,146, 18,222,108, 54,143,220,188,121,179, 21, 0, 18, 18, 18, 70,242, 60, 95, +101,179,217, 88,153, 76,134,138,138, 10,132,132,132, 4,186, 36,100,240,242,246, 47, 22,134,213,142,209, 10, 15, 15, 71,124,124, + 60, 76, 38, 19,178,179,179,145,156,156,108,229,121,254,179,247,223,127, 95, 8, 14, 14,126,242,209, 71, 31,101,143, 29, 59,246, + 44,128, 23, 68,170,127, 75,140,150, 51,196,172,195, 62, 0,146, 0,244, 21, 79,210,217,117,232,206,146, 85,203,162,229,246,203, +200,178,108,113, 70, 70,134, 90,173, 86, 59,222,179, 90,173,136,136,136, 16, 4, 65, 32,181, 63, 71,156, 71, 67, 33,145, 72,180, +175,188,242, 74,241,154, 53,107,158,128,135, 1,229, 91,159,109,133, 77, 78,219, 59,190,250, 60,244,131,165,243, 87,191,187,116, + 97,192,249, 31, 62,198,250,119,150,243, 60,143, 99,237,219,183,239, 85, 94, 94,206,249,169,173, 40, 40,198,110, 84,215,209,242, + 72, 20,146,234, 90, 92, 31, 29, 57,114,228,216,224,193,131, 15,126,244,229,215, 1, 89, 23, 46,252, 38, 47, 45,200,214,181,136, +229,164,141,162, 31, 41,171,170,146,142, 28, 57, 50, 24,192,163,238,184, 24,134,193,133, 11, 23,144,150,150, 6,141, 70, 3,173, + 86, 11,141, 70, 3,157, 78, 7,173, 86, 11,173, 86,235,245, 53,100, 24, 6, 60,207,227,171,175,190,130, 74,165,130, 90,173,174, +177,136, 34,235,122,254, 54,131, 6, 13,130,193, 96,128, 70,163,113,184, 59,189,129, 24,163,101, 54,155, 97, 54,155, 97,177, 88, +120, 0, 18,142,227, 48, 62, 35,195, 97,229,241, 70,192,212, 70,135, 14, 29,232,111,191,253,134,131, 7, 15,162,162,162, 2,239, +190,251, 46,194,195,195,239, 1, 48,199, 91, 46,167, 32,125,190,180,180, 84, 82, 90, 90,234,176, 14, 74, 36, 18,135,197,208, 19, +240, 60, 47,229, 56,206,241, 52, 42, 46,206, 86, 45,150,101, 17, 26, 26,138,176,176, 48,124,240,193, 7,210, 38, 77,154, 60,224, +237,156,111, 36,150, 45, 91,214, 98,213,170, 85, 27, 54,109,218,180,251,241,199, 31,223,114,252,248,241,113,126,126,126,127,239, +219,183,111,161, 92, 46,111,144, 10,150, 72, 36,145, 89, 89, 89, 33,206,111, 9,130,160,178,217,108, 14, 97, 91, 89, 89,137,118, +237,218,121,204,119,242,228, 73, 21, 0, 44, 92,184, 80, 2, 64, 37,150, 13, 17, 57, 43, 43, 43, 37,109,218,180,137,244,132,143, + 82,122,134, 16,210,107,192,128, 1,135,126,254,249,103,255,232,232,104,100,102,102, 34, 51, 51, 19, 45, 90,180,174, 99, 17, 43, + 0, 0, 32, 0, 73, 68, 65, 84,192,226,197,139, 43, 74, 75, 75,123,216,197,213,119, 30,158,118,132,191,191,191,228,202,149, 43, +176,217,108,184,235,174,187,176,102,205, 26,140, 28, 57, 18,237,218,181, 67,105,105, 41, 78,158, 60,137,141, 27, 55,250, 75,165, + 82,183,191, 29,255, 4,236,174, 45,151, 75, 67, 96,179,217,116, 10,133,162, 84, 46,151,203,196,248,172,228,228,100,175,173, 89, + 34,106, 63,220,213,183,125, 43, 33,138,214,218,144,201,100, 8, 11, 11,243,152, 71, 46,151, 19,241,183,209,102,179,161,164,164, +132, 15, 15, 15,119,184,247, 83, 82, 82,248,152,152, 24,158,101, 89, 86, 38,147,129, 16, 2,149, 74,229,242, 7,159,242,116,254, +131, 35,231, 56,178, 14, 25,137, 90, 55,245,149,234,135,254,148,148, 20, 88, 44, 22, 36, 39, 39, 91,223,124,243,205,172,226,226, +226,169, 0,184, 31,127,252,113,204,140, 25, 51,216,144,144, 16, 71, 28,109, 93, 90,228, 78, 66,109,151, 97,237, 96,248,164,196, +196, 68, 98, 79,173, 36,246, 3, 64, 41,189, 70, 92,185, 18, 94,246,155,132,219, 59,175,232,114,250,225,135, 31, 28,130, 64,204, + 58,164,148, 94,195, 43,206,163,161, 8, 12, 12,172,232,218,181,171, 46, 61, 61,253,243,134, 28, 47,138,172, 37, 11, 94, 15, 48, +156,250, 29, 25, 89,217, 48,228, 89,143, 29,248,251,210, 55, 0,190, 1, 0,172,109,157,132, 73,167,222,243,148,179,117,176,170, + 99,251, 8,237, 55,247, 14,126, 32,106,196,196, 23,152,103,158,121,166,231,152, 49, 99, 74, 30,127,252,241,231, 52, 26, 77, 75, +139,197, 82,244,245,206,157,105, 35, 70,140,104,194,243,252, 24, 87,105,176, 34,172, 86,235,229,161, 67,135, 58,174,109, 88, 88, +152,238,139, 47,190, 8,213,106,181, 24, 61,122,116,126, 90, 90,154,195, 93, 84, 86, 86,118,217,147, 57, 90, 44,150,203, 29, 59, +118,116,233, 46, 20, 45,146,222,112, 2, 53,179, 11, 11, 11, 11,113,250,244,105,112, 28,135,110,221,186,225,192,129, 3,232,217, +179,167, 87, 25,135, 85, 85, 85,136,142,142, 70, 85, 85, 21, 42, 42, 42, 42, 1,200, 55, 55,105, 2, 0,120,182,176, 16,127,188, +249, 38,126, 95,178, 68,252,108, 79,167, 9, 0,232,216,177, 35, 61,124,248, 48,254,254,251,111,152, 76, 38, 60,245,212, 83,176, +187, 13, 1,192,227,146, 25,132,144,102, 97, 97, 97,131, 6, 15, 30, 28, 1, 0, 21, 21, 21,228,200,145, 35, 80, 40, 20, 32,132, + 32, 59, 59, 27, 59,118,236, 64,102,102, 38, 8, 33,240,247,247,143, 36,132, 52,161,148, 94,114,197, 73, 41, 37,151, 46, 93,194, + 27,111,188, 1, 65, 16, 48, 99,198, 12,196,198,198, 58, 4,214,229,203,151,177,112,225, 66,240, 60,143,215, 95,127, 29, 45, 90, +180,128,213,106, 85, 16, 47,234,148,221,104, 76,155, 54,237,252, 55,223,124,179, 59, 61, 61,253,254,165, 75,151,246, 33,132, 8, +211,167, 79,127, 67,167,211,121, 84,244,213, 21,138, 74,202,112,250,220,101,135, 16,170,189, 4, 7, 5,120,205,119,246, 66,186, +227,120,158,119,230,227, 17, 24,224,239,237, 20, 43,173, 86,107,197, 35,143, 60,162,255,234,171,175, 72,139, 22, 45,112,241,226, + 69,241,225,180,178, 1, 37, 29, 50, 13, 6, 67, 44,203,178,210,115,231,206, 33, 38, 38, 6, 93,187,118,197,162, 69,139, 80, 80, + 80, 0,155,205,134,144,144, 16,193,106,181,166,152,205,230, 95,189,157,236,141,134,179,213,201,121, 73, 78, 78,158, 33,147,201, + 40,128,195, 0,188, 18,218,148, 82,115,227,198,141,107,115,223,146,239,117, 93,184,153,153,140,225,225,225,201, 90,173,246,129, +162,162,162, 26, 86,173, 30, 61,122, 88, 66, 67, 67,247,123,202,163,209,104,138, 88,150, 13, 4,128,204,204, 76,168,213,106,233, +133, 11, 23,150, 16, 66,102, 2, 64,147, 38, 77,150, 24, 12, 6,105, 19,251,239,105, 88, 88, 24,204,102,179,203, 48,150, 67, 41, + 57, 31, 3,248, 88,220, 14, 12, 12,204, 46, 41, 41, 81, 46, 95,190,188,124,201,146, 37, 70,158,231, 77, 0,246, 21, 23, 23, 59, +234,104,197,196,196,148, 72, 36,146, 0,189, 94,223,200,137,234, 26, 45,114, 39,193,173, 69, 11,112,212,175,168,125, 80,157,150, +172,186,196,150, 39, 86, 9, 66, 8,140, 70, 99, 13,235,136,152,117, 88,151,208,178,223,208, 27,228, 58,180,139, 44,229, 23, 95, +124,241,217, 59,239,188,115,208,211,227,156, 99,180,214,174, 88,176, 84, 20, 89,127, 29,252, 25,223,165,150, 20,204, 88,178,114, + 85, 67,230, 3, 0,109,130,213, 29,194, 66,131,146,222, 92, 60, 95,119,254,135,141,216,178,246, 45,250,215,209,163, 93,142, 30, + 61,250,196,148, 41, 83, 26,163,250,139,101, 0,240, 39,128, 17,158,100,233,228,231,231,215,136,143,138,141,141, 61,163,215,235, + 67, 21, 10, 5, 46, 92,184, 80,126,226,196, 9,175, 93, 50,181, 57,111, 4,106,139,172, 19, 39, 78,160, 95,191,126, 0,128, 3, + 7, 14,160, 71,143, 30, 94,137, 45,171,213, 90,220,186,117,107, 0,213,214,173,146,146, 18, 1, 0, 38,102,103, 99, 93,120, 56, + 56,142,195,239, 75,150, 96,150,213,138, 69, 18,239, 66,119,238,186,235, 46,122,244,232, 81,164,165,165,193,102,179,225,225,135, + 31,118, 22, 89,222,156,115,187, 86,173, 90,237,217,183,111, 95,176, 70,163, 65, 69, 69, 5,202,203,203, 49,118,236, 88,140, 28, + 57, 18, 38,147, 9, 91,183,110,197,246,237,219,161,213,106, 81, 81, 81,129,138,138, 10,255,196,196,196, 67,132,144,222,174, 98, + 11, 41,165,116,224,192,129,216,191,127, 63, 88,150, 69,151, 46, 93, 80, 88,232, 72, 6, 66,104,104,104, 93, 99, 44,170,255,223, +111,201, 13,137,227, 56,154,156,156,188,180, 79,159, 62, 72, 79, 79,191, 63, 33, 33,225,221,113,227,198,101, 94, 47,175,191,159, + 22, 29,219, 52,131,201,100,130,201,100, 66, 68, 68, 4,202,202,202,112,254,252,121,152, 76, 38,132,134,120,147,159, 82,205, 23, +223,174,133,131, 47, 36, 36, 4, 21, 21, 21,184,116,233, 18,204,102, 51,130,130, 60, 23, 90,132,144,168,129, 3, 7,254,242,217, +103,159, 5,110,220,184,209,220,183,111, 95,217,187,239,190, 75,116, 58, 29,242,242,242,188, 61, 85, 17,201, 7, 14, 28,136, 30, + 48, 96, 64,220,169, 83,167,144,156,156, 12,179,217,140,248,248,120,156, 61,123, 22,221,187,119, 71,121,121,249,225,163, 71,143, +110,175,159,234,230, 67,116,235, 57, 89,158,102,233,245,122, 11,128, 85,184,142,239,226,149, 43, 87,228, 29, 58,116, 48, 41, 20, + 10,153, 93,180, 53,200,154,117, 51,112,189,153,140,238, 16, 22, 22, 54, 53, 40, 40,104, 64,211,166, 77,145,155,155, 43,149,201, +100,232,209,163,135,165,115,231,206,150,176,176, 48,143, 18,115, 0, 64, 46,151,159,146, 74,165,189,171, 31, 38,120, 92,185,114, + 5,148,210, 25,237,218,181,123,190,172,172, 12,133,133,133, 50,157, 78,231,120,168,142,139,139,131,201,100, 58,229, 41, 63,203, +178,243, 99, 98, 98,102, 75,165,210, 69,249,249,249,215,148,133, 32,132,200, 58,118,236,168,147, 74,165,176, 88, 44, 53,196,102, + 93, 90,228, 78,128,167, 49, 90,164,174, 19,244,196,109,232,105,140, 22, 33, 4,102,179, 25,106,181,218,225,146, 18,191,147, 98, +236, 79,109,161,213, 16, 68, 69, 69,161,107,215,174,202, 45, 91,182,124,186,124,249,242, 67, 13,225,216,246,217, 39,225,126, 66, +101, 84,214,225, 93, 56,243,247, 49,124,115,178,184, 96,198,146,149,207, 61,248,232, 99,185,206,251, 13, 95,157,138,173,147,234, +231,107, 25,162,110,215, 40, 52, 48,105,197,178, 37, 58,195,169,223,145,157,147,131, 93,135,143, 30, 51, 83,122, 18,192,140,134, +204,177, 46, 56,103,175, 53, 84,164,222,104, 56,151,119, 40, 40, 40,192,201,147, 39, 69,145, 21, 15, 0, 61,123,246, 76, 17,197, +214,177, 99,199,144,144,144,112, 77,121,135,218, 40, 42, 42,170,209,178,198, 94,198, 33, 72, 20,252, 28,199,161,199,236,217, 94, +139, 44, 66, 8,229,121, 30, 6, 67,117,120, 75,143, 30, 61, 26, 36,178, 0, 32, 44, 44,236,165,125,251,246, 5,127,244,209, 71, +165,155, 54,109, 42, 20, 4, 65,210,177, 99,199,200, 78,157, 58,145,205,155, 55, 3, 0, 70,140, 24,129, 25, 51,102,224,196,137, + 19, 80,171,213,232,217,179, 39, 63,119,238,220,144,169, 83,167, 62,139,234, 58, 73,215,128,231,121,105,147, 38, 77,246, 2,184, +231,212,169, 83, 0,112,136, 82,218, 67, 28,119, 55,230, 1,132,178,178, 50,137, 86,171,173,179, 52,132,180, 58,173,211, 91, 87, +159,131,243,224,193,131,111,172, 88,177,226,155, 23, 95,124,209, 33, 34, 27,200, 9,224, 90,139,214, 3, 15, 60, 0,163,201,130, +140,220, 18,240,188, 13, 70,139,119,130,166,182, 69,235,129, 7, 30, 64,101,149, 25, 87,178, 13,176,217,120,148, 25, 61,187,151, + 19, 66, 84,247,222,123,239,143, 95,124,241, 69,216,111,191,253, 6,158,231,133,179,103,207, 94,122,228,145, 71,116,211,167, 79, + 15,116,138, 65,245, 22,239, 60,246,216, 99,195, 14, 30, 60,104,136,139,139, 11, 56,124,248, 48,242,242,242, 96,179,217,112,207, + 61,247, 64, 38,147, 93, 89,178,100,137, 20,192, 59, 13, 33,191,209, 16, 45, 78, 71,142, 28,185, 33, 2,203, 25, 50,153,172,193, +238,199, 59, 21,135, 15, 31,206,156, 50,101, 74, 27,157, 78,183,170, 87,175, 94,253, 2, 3, 3, 25,127,127,255,228, 70,141, 26, + 61,223,161, 67,135,203,158,242, 72, 36,146,113,106,181,250,188,205,102, 99,203,203,203, 81, 81, 81, 1, 0,176,217,108, 50,134, + 97,208,164, 73, 19,135,241,164, 75,151, 46, 8, 11, 11,227, 83, 83, 83,199,121,202,159,151,151, 87, 35, 11,177, 14, 76,234,209, +163, 7,103, 50,153,144,150,150,118,192,121,192,149, 22,185,221, 81,219,109, 8,120,208, 84,154, 97, 24, 80, 74,161,232,212, 9, +217, 63,255,140,175,190,250,202,237,135,172, 93,187, 22,168,101,234, 35,181,186,123,139,217,133, 19, 38, 76,112,236,115,236,216, + 49, 71, 80,252,195, 15, 63, 92,131,243,200,145, 35,215,136,173,218,156,117, 33, 47, 47,239,212,214,173, 91,143, 46, 91,182,236, +176,219, 73,215,193, 41,198,104, 13, 27, 53, 58,123,245, 27,175, 29,223,180, 99, 95,187,108, 35,205,158,177,100,229,139,181, 69, +150,167,156,173,195, 52,173, 35, 67, 2,147,151, 47, 91,226, 39, 90,199,190, 72,201, 41,129,141,122, 32,209,234,230,116, 5,103, +203, 34, 33,164,222,155,151, 39,156,222,162, 54,167,115,121,135,236,236,108,135,200,162, 87, 11,150,198,247,236,217, 51,197, 46, +178,196, 49,155, 59, 78, 87,224, 56, 14, 47,150,151,131,227, 56,244,157, 55, 15,247, 44, 88,224,241, 60, 69,240, 60, 15,142,227, + 16, 27, 27,235,181,200,114,230, 36,132,244,168,172,172,196,198,141, 27,203,206,157, 59,215,172,105,211,166, 83, 63,254,248,227, +149, 42,149,170,198, 49,149,149,149,120,240,193, 7,241,254,251,239, 99,224,192,129,214,113,227,198,201, 25,134, 25, 80, 23,167, +136,180,180,180, 73,253,251,247, 95, 91, 85, 85,197, 21, 22, 22, 78,242,116,172,190,115,223,186,117,235,185,216,216,216, 62,112, + 93,194, 65, 0,240,219,245,112,174, 90,181, 10, 0,226,174,135, 83, 68,109,139,214,151, 95,126, 9, 65, 16, 16, 21,166,135,201, +100, 66,237,107, 93, 31,103,109,139,214,150, 45, 91, 32, 8, 2, 26,135, 7,192,108, 54, 67, 12, 32,174,143, 51, 48, 48,240,173, + 77,155, 54, 69,166,166,166, 34, 35, 35, 3, 43, 87,174,188, 92, 92, 92, 60,184,184,184, 88, 62,119,238,220,164, 81,163, 70,133, + 10,130,224,214,109, 84,215, 60, 41,165, 38, 66,200,184,187,239,190,123,243,194,133, 11, 47,182,106,213,170,113,143, 30, 61,244, +133,133,133,249,255,253,239,127, 47,173, 93,187, 86, 99,179,217,198,185,114, 73,253, 19,255,239,206,200,204,204,156,135,106,107, +170, 87, 2,203,147,121, 30, 57,114,228, 21, 59,247, 81, 79,184,255,169,115,191,222, 76,198,250,230,249,222,123,239,101,160, 86, +125, 52,111,231,121,228,200,145,180, 1, 3, 6, 44, 8, 13, 13,157,171, 80, 40,144,159, 95,221,236, 64,180, 60,218,143, 65,167, + 78,157, 48,112,224, 64,156, 57,115,102,193,236,217,179,211,220,113,122, 48, 7, 14, 64, 51, 0, 79,244,239,223,127,250,176, 97, +195,240,222,123,239,129, 82,186,193,155,115,185, 93, 65,235,107, 42,157,152,152, 72,156, 95, 1,192,106,181,166,159, 63,127, 62, +188, 69, 81, 17, 27, 65, 8,186,116,233,226,136,207,113,142,219, 17, 3,234,126,253,245, 87,155, 32, 8,110,107, 86,241, 60,159, +126,240,224,193,208,159,127,254, 89, 34,254, 65,237, 65,157, 66, 86, 86, 22,147,148,148,228,176,142,113, 28,135,228,228,100,155, +197, 98,185,226,237, 9,159, 57,115,230,134, 60,205,253,122, 34,237,249, 31,119,125, 27,212,173,107,175, 98, 93, 64, 64,157,255, +200, 98, 5,121,119, 32, 28,179,104,233,226,249,122, 81,100,125,153,146, 83, 92,101,226,251,157,202,175,252,235, 70,204,211, 25, +101,101,101,105, 98,118, 97,121,121,185,215,215,238,102, 65,204, 56, 12, 15, 15, 79, 65,173,236, 66,113, 44, 33, 33,225,154, 49, +111, 32, 8, 2,252,252,252, 0,192, 57,163,213, 99, 16, 66,168,232,202,182,207,235,186, 98, 4, 40,165, 7,143, 31, 63, 30, 51, +118,236, 88,109,108,108,236, 5, 66,136,100,252,248,241,150,176,176, 48,233,129, 3, 7,172, 0, 72,159, 62,125,184,156,156, 28, +154,153,153,105,120,232,161,135,202, 38, 76,152, 16,248,231,159,127,202, 4, 65,112,251, 3,102, 79,135,238,239,237, 88,125, 24, + 54,108,216, 5,212, 81, 56,244,122,112, 51, 56, 69, 24,138, 75,113, 33, 45,211,222,235, 82, 0,127, 57,215, 17, 87,101,181,218, + 96, 40, 45,172,159,196, 9, 69, 37,101, 56,127, 41,211,222,114,140, 7,207,103,217,249,170, 3,226,105, 81,101,189, 28, 18,137, +164,231,170, 85,171, 6, 51, 12,195,252,254,251,239,166,101,203,150,165,231,231,231, 63, 76, 41,189, 2, 0,132,144,190, 27, 55, +110,252,212,131, 82, 14,117,130, 82,122,146, 16,210,253,229,151, 95,126, 14, 64, 79, 0,141, 1, 92, 1,112, 0,192, 59,222,198, +253,220,100,172,172,127,151,219,146,187,193,184, 83, 50, 25,247,236,217, 51,111,200,144, 33, 92,116,116,244,171,209,209,209, 76, + 81, 81, 17,202,203,203,193, 48, 12,194,194,194,208,182,109, 91,132,133,133, 9,167, 78,157, 90,252,242,203, 47,215, 91,147,175, + 77,155, 54,205,172, 86,107,115,134, 97,154, 1,104, 70, 41,109, 70, 8,105, 6, 32, 0, 0,186,116,233,162,139,137,137,225,186, +117,235,134,174, 93,187, 34, 41, 41, 9,219,182,109,251,152, 82,250,163,200, 81,151, 22,185, 29,112,178, 19,233, 67, 4, 36, 81, + 6,125,219,252, 65,147, 79,197, 19,218, 58,229,218,251,131,171,204, 67,151, 22,173,162,162,162,129,131, 7, 15,254,153,101,217, + 38,118,130, 26, 55, 46,103,151, 31, 0, 8,130,144,150,155,155, 91,103, 49, 51,103,206,231,159,127,254,103,150,101,155,136,150, + 42,155,205,102, 50, 24, 12,207,244,237,219,119,141, 68, 34,145, 59,243, 10,130,112, 57, 55, 55,247, 31,237,213, 87,187,142,214, +192,193, 67, 10,174,151, 83, 35,101,154,159,217,249, 33,114,243, 10,240,101, 74, 78, 81,153,153,239,123, 38,191,226,248,245,242, +214,133,180,180,180, 65, 55,131,247, 70,192, 46,168,234,116, 9,186, 27,243, 16,249, 30, 20, 36,117,219,163,142, 82, 74,236, 98, +235,134,252,147,231,228,228, 44,159, 61,123,246,125,139, 23, 47, 14,222,189,123,183,206,254, 25, 24, 58,116,104,222,241,227,199, +123, 1,144, 87, 85, 85,237, 89,188,120,113,240,252,249,243, 3, 1, 4, 2, 64, 98, 98, 98,110,110,110,174,167,173,156,254,103, + 97,181, 90, 51,218,182,174, 54,140,137,101, 24, 68, 99,129,243,186,205,102,203,240,134,175, 46, 30,231,109,158,231,221,242,177, + 44,251, 98,215,174, 93,217, 23, 95,124, 49,119,247,238,221, 98, 35, 93,135, 66,179, 7,192,187, 44, 74,234, 9,236, 98,106,153, +125,241,225, 54,195,157,146,201,248,237,183,223,206, 25, 57,114,228,198,128,128,128, 79,154, 53,107, 22, 23, 26, 26,170, 83, 42, +149, 48,153, 76,101,102,179,249,244,153, 51,103, 30,159, 61,123,246, 69, 79,184, 54,110,220,200, 2,144, 10,130,160, 96, 24, 70, + 13, 64, 71, 8,241,135, 93,104, 17, 66, 96,177, 88,144,150,150,134, 89,179,102,241,123,247,238,125, 19,192,235, 94, 76,183, 51, +128, 96, 92,253, 29, 15, 6, 96, 70,117, 1,219,124, 84, 91, 54,111, 10,136,128,164,214, 41,148,156,138, 39, 46,131,244, 73,125, + 77,165,235, 2,173,174,126,237,113, 21,100, 79, 80, 15,103,244,141,252,172,235,193, 24,211,178,207,177,118, 89,141, 62,135, 0, + 92,111,215,227, 0, 44, 49,218,166,188,243,227,137,229, 38, 27, 21, 44, 54,225,201, 51,121, 21, 39,111,210,212,111,123,184, 19, + 82,215,147, 17, 71, 61,232, 15,232, 33,207, 13,123,146,162,148, 30, 39,132,220, 61,101,202,148, 57, 42,149,170, 11, 0, 84, 86, + 86,254,158,149,149,181, 64,204, 42,172,111,220, 7,215,200,207,207,175,183,150,213,173,224, 51,155,205,207,223,125,247,221,111, +243, 60,191,194,106,181, 30,168,255, 8, 31,124,184,117,248,242,203, 47, 47,194,126, 95, 30, 62,124, 56, 11, 0, 91,183,110,245, + 58, 27,120,236,216,177, 60,173,110,100, 94, 5,160, 2, 64, 41,170, 11,110, 19, 0,168,168,168, 40,202,202,202, 58,197,243,252, + 41, 0,159, 54, 32,227, 54,152, 16,242, 61,165,244, 1, 0, 16,215,157,223,187,217,112, 18, 91,215,192,163, 96,120, 31,170,177, +245,196,213, 27,109,109, 1, 85,223,182, 43,156,206, 41, 79,198,117, 62,193,250,112,103,130, 82,122, 1,192,152,134,142,251,112, +231,193,238, 34,124,184,222, 29,125,240,225, 54, 67, 67, 4,150,136,147, 39, 79,222,180, 16,129, 91, 13,103, 55, 97, 93, 46, 67, + 17,117, 89,179, 0,159,208,242,193, 7, 31,124,240,193, 7, 31,124,112, 9, 49, 70, 75,220, 22, 99,181,156,247,169, 29,159,229, +188, 77, 0, 12, 64, 29,240, 50,155,160, 78, 14,119,168,143,223,199,233,227,244,113,250, 56,125,156, 62, 78, 31,231,191,143,179, +129, 72,172,199,117,184,243, 38,124, 38, 0, 64, 12,126, 63, 25, 79,230,182, 73,161,115,235, 10,134,119, 39,180,106, 4,123,222, +232, 5,192, 0, 31,167,143,211,199,233,227,244,113,250, 56,125,156, 62,206,235, 92,250,205,156, 57,243, 21, 84,247, 63,166, 51, +103,206,124,133, 82,154, 88, 45, 99,104,226,205,252,236, 19, 9,232,115,242, 46, 80,113, 57,145,128, 62, 46,174,201, 68,113,113, +126,223,231, 58,244,193, 7, 31,124,240,193, 7, 31,110,119, 28, 90,178,100, 73,229,146, 37, 75,196,192,247,124, 0,132, 86, 91, +179,220,102,148, 95, 47,236,110,194,122, 19,165,104,125, 45,120,254,105, 16, 66, 34, 24, 78, 58, 90, 34,149,247, 3, 21,218, 2, + 0, 24,246, 4,111,174,250,197,102,179,124, 66, 41,205,106, 40,119,107, 66, 90,183,208, 43,183,155,120, 94,154, 94,102, 30,118, +138,210, 35, 13,225, 25, 78, 72, 15,185, 76,246,147, 92,175,175,179, 74,161,169,184,216,104, 50,155,239,219, 74,169,199, 45,126, +124,240,193, 7, 31,124,240,225, 86,130, 16,162,246,247,247,223,203, 48, 76,180,211,123,168,107, 29, 0,120,158,207, 54, 24, 12, +247, 81, 74, 93,150, 59,186, 25,156,181, 96, 6,208,160,123,249,141,134,183,174, 67, 14,168,209, 91,168,222,142,217,173,194, 53, +189,226,154, 69,127,150,149,147,155, 82, 90,101, 30,127, 58,179,204,224,237, 36, 57,169, 98,130, 62, 40,108,209,255,141,123, 62, + 48,182,101, 28,137,138,106, 4, 80,224, 74,122, 70,232,249,115,103,251,111,217,244,206, 52,169, 66, 49,203, 82, 85,245,161,183, +220,109, 8, 81, 71,107,228, 7, 62,156, 57, 74,207,193,134,199, 22,126,246, 67, 27, 66,162, 78, 86,151,150,240, 24,195, 9,233, +161, 15, 12,252,113,201,158, 61, 74,127,123, 1, 80, 17,148,210,234,254,122,127,253,165,124,245,190,251,126, 28, 78,200, 64,159, +216,250,247,129, 16, 18,166,211,233,166, 74, 36,146,190, 22,139, 37, 90, 38,147,165,243, 60,159, 92, 84, 84,180,138, 82,122,221, +125,250,124,240,225,223, 14,226,166,145,185,187,177,127, 2, 90,173,246, 15,134, 97, 34,237,115, 1, 0, 71, 39,146,218,117, 34, +157,234, 69, 94, 44, 44, 44,188,219, 21, 39, 33,164, 89, 64, 64,192, 26, 0,157,235, 43,152,108,119, 53, 29, 53, 24, 12,207,208, +234,236,227,186,248,180,254,254,254,243, 8, 33,195, 25,134,169,183,161,176, 32, 8, 60,165,116,107, 81, 81,209,235,148,210, 50, + 87,251,249,251,251,239, 73, 77, 77,237, 28, 18, 18, 82,175,149,198,102,179,225,202,149, 43,193, 93,186,116,249, 21,128,203, 10, +221, 55,130,211, 27, 45,114, 43,225, 46,243,176, 46,212,213,235,208, 45,129, 32, 96,244, 71,139,158,105,148,125,249, 92,163, 73, +139, 63,111,217, 42, 72,213, 55,181,160, 50,199,211, 15,148, 41,181,219,123,222,243, 64,191,201,207,189,168,254,239,241,211,248, + 41,233, 55,148, 86,152,192, 50, 12,244, 90, 21, 90,182,108, 78, 86,174,251, 42,232,227, 15, 86,174, 80,106,244,137,198,242,226, +135,188, 57, 33,181,138,155, 53,227,145, 46,234,192, 0, 30, 16,120,188, 52,184,163,250,213,239, 83,102, 1,120,197, 83, 14,135, +200,218,187, 87,149,151,155,139,249, 17, 17,224,108, 54, 40, 24, 6, 10, 66,160, 96, 24,168, 21, 10, 12,218,176, 1, 11,118,239, + 86,205,185,255,126,159,216,250,151, 65,171,213,142,107,217,178,229,178,245,235,215, 7, 54,109,218, 20,106,181, 26, 6,131, 33, +232,204,153, 51,119,189,240,194, 11, 99,252,252,252,102,151,148,148,172,189,213,243,244,193,135,219, 21,246,234,231,117, 54,137, +119, 55,246, 79,129, 97,152,200,204,204,204, 16,149, 74, 5,158,231,237,221, 0, 4,199,131,180, 93, 8, 1,112, 20,170, 69,171, + 86,173, 44,238, 56,181, 90,237,123,121,121,121, 3,156, 91,161, 57,243,212, 70,102,102,230,128, 54,109,218,188, 7,160,206,194, +220,254,254,254,243,158,123,238,185,169,237,218,181, 3, 0,199, 60,197,215,130,130, 2, 76,153, 50,197,241, 25,130, 32,224,231, +159,127,126,110,220,184,113, 0,240,130,155,115,143, 14, 9, 9, 33,147, 38,185,175, 81, 52,119,238, 92,204,157, 59, 23,239,188, +243, 14,145, 72, 36,110, 59,180,223, 40, 78, 79,181,200, 63, 9, 71, 48,124,173, 10,241,181,118,219, 73,106,246, 59,116, 4,231, +123,237, 58,100,168,176,107,225,170,245,227,231,143,237, 73, 62,122, 97, 64,236,211,239,236,249,173, 77,132,178,247,201, 44, 99, +122,125,199,114, 82,197,147,221,122,223,223,119,202,212, 25,234,207,191,221,135, 51,167,254, 66,234,129, 47,106,236,211,233,190, +113,200, 41, 40,195,184,201, 47,105, 8,203,245,149, 42, 84, 79, 90,170, 42, 63,242,100,110,109, 8, 9,109, 19,160,250, 79,183, + 46,109, 37,153,202, 51, 8,243, 87,162,103, 66, 11, 73,212,143,127,255,167, 13, 33,111,159,164,180,222, 94,133,181, 69,214,250, + 81,163,208,203,106, 69, 8,203,130, 37, 4, 44, 0,134, 16, 84,153, 76, 56, 58,122, 52,186,108,222,140,215,119,236, 80,205,123, +240, 65,175,197,150, 74,165,250,216,104, 52, 46,165,222, 23,110,187,101, 32,132,180,212,106,181,179, 74, 75, 75, 71,223,234,185, +136, 32,132,132, 3,200,175,253,116, 76, 8,145, 2,208, 83, 74,189,234, 44,172, 80, 40, 38, 60,246,216, 99, 43, 87,175, 94,173, +202,205,205, 69, 86, 86, 22,120,158,135, 66,161, 64,108,108, 44,217,179,103, 79,224,140, 25, 51,150,235,116, 58,121,105,105,233, +219, 94,204,147,145, 72, 36, 99, 3, 2, 2,134,132,134,134,134,228,231,231,231, 23, 21, 21,237, 48,153, 76, 31, 53,244,201,222, +206,249,120, 76, 76,204,144,136,136,136,208,204,204,204,130,140,140,140,237, 38,147,233, 99, 74,105,131, 26, 53,219,121,195, 1, +116,128,189, 90, 61,128,236,152,152,152, 19,151, 46, 93,242,174, 75,179,123,206,172,152,152,152,147,222,114, 18, 66,212, 0,182, + 0,136,168,103,215, 44, 0, 35,168,151,214,108, 31,174, 31,162,144,162,148,130, 16, 82, 67, 80,185, 27,251,167,161, 84, 42,241, +197, 23, 95, 64, 34,145, 64, 34,145,160,168,168, 8,145,145,145,142,109,169, 84,234, 88,111,220,184,113,189,124, 60,207,119, 97, + 89, 22,229,229,229,224,121,222,177, 20, 23, 23,131, 82, 10,185, 92, 14,158,175,110,231,228, 52,222,197, 21, 31, 33,100,120, 68, + 68, 4, 62,255,252,115,152,205,230,107,198,117, 58, 29,142, 31,191,218,100,132,101, 89,116,237,218,149, 33,132, 12,135, 27,161, + 69, 72,117,209,205,137, 19, 39,130,101, 89, 71, 75, 61,113, 93, 92,120,158,199,220,185,115, 97,255, 91,185, 61,247,155,193,121, +187,193, 93,133,120, 74,105, 54,128, 58, 99,180, 92, 53,142, 5, 0,180, 10,211, 60, 51,109,212,189,149,179,199, 39,210, 87,199, +220, 71, 95, 30,213,151,222,223,187,253,183, 44,199,145,195, 39,175, 32,210, 15,248,120, 74,231,232,168, 32,245,241,118,129,218, +150,181,143,167, 53, 27, 74, 71,168,212,186, 55,158,121,254, 37,205,206, 95,255,198,149,244, 43,215,136, 44, 0,248,227,167,143, +145,157,149,137,148,212, 12, 60,254,228,179, 26,157, 78,255, 6, 33, 36,162, 46,206,218,240,211, 74,223,156, 57,162,167,162,220, +154,133, 50,127,128,109, 38,131, 68, 85,129, 25, 15,116,144,235,180, 82,151,173, 42,156, 57,229, 50,217, 79, 75,246,236,113,136, +172, 30, 38, 19,228, 60, 15, 27,207, 59, 68,150,217,102,131,209,108, 70,120,121, 57,206,143, 27, 7,106,181, 98,246, 55,223,168, +228, 50,217, 79,158,204, 83, 4,195, 48,131,117, 58, 93, 18, 33,228,154,107, 87,223, 60,111, 20,188,225,180,139,172, 36, 66,136, +219, 86, 75,255,212, 60, 9, 33, 12, 33,100,225,248,241,227,143, 53,111,222,124,159, 93, 88,137, 99, 92,243,230,205,247,140, 31, + 63,254,191,132,144,185,132,144,107,190,235, 46, 56, 27, 69, 68, 68, 44, 90,189,122,181,234,236,217,179,200,204,204,132,213,106, +197, 99,143, 61, 6,158,231, 97, 52, 26, 97, 54,155,177,116,233, 82,117, 96, 96,224, 44, 66, 72,116,125,156,118, 94,214,207,207, +111,227,166, 77,155, 38, 94,186,116, 41,236,151, 95,126, 97,254,254,251,239,208, 21, 43, 86,140, 11, 12, 12,220, 76,170, 27,174, +122,124,238,226,249,135,135,135,127,244,221,119,223, 61,115,252,248,241,200,175,191,254, 90,242,251,239,191,135,127,240,193, 7, + 79,133,135,135,111, 38,132,184,116, 53,184,251, 27, 17, 66,238, 82,169, 84,253,167, 79,159, 46, 28, 58,116, 40,243,208,161, 67, +153, 43, 87,174, 68,175, 94,189,122, 44, 88,176, 32,190,129,156, 9, 90,173,246,158,233,211,167, 11,251,247,239,207, 58,124,248, +112,198,242,229,203,153,123,238,185,167,231,226,197,139, 59,184, 58,206, 5,231,150, 67,135, 14,245, 73, 79, 79,111,154,145,145, +209, 36, 35, 35, 35, 38, 35, 35, 35, 38, 51, 51, 51, 58, 59, 59,187,113, 78, 78, 78, 84, 94, 94, 94, 84,114,114,114, 79, 0,159, +121, 51,207,134,194,199,121, 21,246,239,114, 10,165, 20, 6,131, 1, 59,119,238, 4,170,173, 87,119, 57,139,172,210,210, 82,100, +103,103,139, 99,156, 59,206,155, 52, 79,240, 60,239, 16, 82, 63,255,252, 51,198,143, 31, 15,131,193,224,120,143,227, 56,199,186, +120, 76,125,156, 0, 28, 34,234,240,225,195,152, 52,105, 18, 86,174, 92,137,207, 62,251, 12,223,127,255, 61, 12, 6,131, 67,108, +217,108,182,122, 57, 11, 10, 10, 32, 8,158, 61, 51, 81, 74, 81, 82, 82, 82,239,185,139,112, 22, 64, 28,199, 93, 35,138,196,197, +197,103,221,112,206,219, 25,174, 42,194,123, 2,199,151,219,110,170,235,235, 60, 24, 23, 19, 54,107,217,212,225, 74,240, 22, 80, +171, 17,176, 84, 2,150,114, 8,230, 74, 16,169, 18,176, 26, 17, 44, 55, 96,203,228, 56,221,203,159, 95, 56,213, 58, 88,151,120, + 42,191,244,135,186, 62,136,225,164,143, 15, 31,251, 92, 96, 70, 94, 41, 50,115, 75,192, 50, 87,239,123,241, 3,198,130, 99, 25, + 28,249,177,218,112,197,176, 44, 74, 42, 76, 40, 46,183, 96,216,216,169, 1, 31,174,124,237,113, 0, 75,221,157, 72,123, 66, 98, +187, 71, 4, 60,210,166, 77, 99,230,148, 60, 21,241,247, 31, 0, 47, 0,116,255,131,184,171, 40,132,109,245,147,236,145,246,132, + 44,250,155,210,179,238,120,228,122,189,210,191, 67, 7,204,143,136, 64,111,171, 21, 82, 74,113,111,110, 46,254,154, 58, 21,166, +175,190, 2, 3, 64,250,232,163,232,183,106, 21,126,141,136, 64,152,209,136,226,105,211, 16,252,195, 15,144,234,116,117, 6,205, +187,130, 84, 42,181,172, 95,191, 62,226,169,167,158, 74, 34,132,244,189,157, 45, 91,132,144,150, 1, 1, 1, 73,111,188,241, 70, +232,156, 57,115,178,111, 16,103,168, 90,173,222, 90, 81, 81, 49,213,219, 39, 90,187,112, 90,184,118,237,218,167, 39, 78,156,168, +127,234,169,167,232,249,243,231,245, 0, 68,235, 72,112,175, 94,189,154,175, 95,191, 62,172,115,231,206,207, 77,154, 52, 73, 74, + 8,153, 93,159,149, 71,163,209, 76, 94,191,126,125, 80, 65, 65, 1,202,203,203, 29, 63,178, 25, 25, 25, 80, 42,149,142,166,234, + 18,137, 4,111,188,241, 70,224,228,201,147,167, 2,152, 90,223,124,229,114,249,216, 53,107,214,180, 24, 56,112, 32,151,150,150, + 6,134, 97, 32,151,203, 49,106,212, 40, 73,101,101,101,244,252,249,243, 39, 2, 88,227,205, 53,144, 72, 36,143,175, 91,183,174, +101,143, 30, 61,184,212,212, 84,116,239,222, 29, 71,142, 28,193,163,143, 62, 42, 41, 43, 43,107, 50, 99,198,140,241,112,241,132, +229, 10,132,144,112,149, 74,213,238,151, 95,126, 73,143,138,138,114,252,176, 52,105,210,132, 79, 76, 76, 52,164,166,166,198,253, +246,219,111,133,221,187,119,247,184, 97, 57, 33,164,145, 74,165,106,181,107,215,174,236,249,243,231,247, 95,187,118,237,195, 0, +208,165, 75,151,237, 11, 22, 44,216,103, 48, 24,218,238,223,191,223,208,171, 87, 47,143,122, 18, 2,136, 8, 15, 15,231,167, 76, +153,162,113,183,211,134, 13, 27,138, 1, 52, 38,132, 52,165,213,141,182,125,248, 7, 64, 41,181, 17, 66,226, 9, 33, 41, 59,119, +238, 68,215,174, 93,177,115,231, 78, 36, 38, 38,166,216,199, 81, 82, 82,130,227,199,143,163,119,239,222, 64,117, 35,249, 91, 18, +171,197,243, 60, 56,142, 67, 70, 70, 6, 54,108,216,128,197,139, 23, 35, 54, 54, 22, 86,171,245, 26,177,101, 23, 68, 30,153, 96, +108, 54, 27,142, 30, 61,138, 79, 54,111,198,236, 89,179,160,213,106, 1, 0, 22,139, 5,134,162, 34, 40, 20, 10,135, 24,115, 7, + 74,233,214,115,231,206, 77,141,140,140,172,225, 50, 20, 95, 1, 64,163,209, 64, 16, 4,216,108, 54, 84, 85, 85, 97,229,202,149, + 54, 74,233, 86,119,188,162,184, 99, 89, 22, 83,167, 78,133,201,116,181, 15,121, 7,123, 76,114, 76, 76, 12, 58,118,236,232,216, +102, 24,198,173,208,112,230,252,240,238,118, 48, 58,237, 29, 55,119, 57, 0, 32, 50, 50, 18,113,113,113, 8, 15, 15,119,201, 89, +151, 22,185,213,168, 29,147,213,160, 24, 45, 87,157,178, 79, 93,202, 89,250,212,140,229,203,213, 10, 86,242,252,144,246,104,172, +151, 2,202, 0, 72,123,191, 12,162,143, 6, 0, 80,195, 69,224,167,151,177,226, 17, 3, 51,241,211,170,111,155, 7, 4, 4,159, + 55, 24,174, 9,194,147, 72, 21,253,154,181,104, 73,174,100, 27,192,113, 28,212,126, 65,184,123,200, 11, 96, 89, 6, 26,125, 16, + 8,111,116,236,203, 50, 44, 56,150,131,161,204,136,152,166, 45, 24,185, 66,217, 15,245, 8, 45,157,159,100,205,244,145,119, 43, + 10,109, 25, 80, 54, 86,128, 23,111,167, 17, 50, 48,129,101,120,113, 80,172,114,226,246,191,215, 0,184,199,147, 11,195,218,108, + 8, 97, 89, 88, 40,197, 95, 83,167, 34,126,221, 58,164,216,199,226,215,173, 67,202,196,137, 8,144, 72, 32,103, 24, 80,171,245, + 26,159,190, 39, 32,132, 96,200,144, 33, 40, 40, 40, 8,157, 53,107, 86,131,197,150, 82,169,252,132, 16, 50, 88, 34,145, 88, 8, + 33, 96, 24,198,209, 4, 92, 92,183, 88, 44, 82,150,101,119, 21, 20, 20,120,237,242, 35,132,180,244,247,247, 79, 58,116,232, 80, +168, 90,173,198,220,185,115,189,165,168,139, 51, 84,171,213,254, 62,126,252,248,198,159,124,242,201, 15,132,144, 65,158,138,173, +218, 34,107,221,186,117,197, 27, 54,108,248,208,217, 69, 72, 41,205, 38,132,124,212,185,115,231,103, 38, 78,156,168, 7,240,244, +164, 73,147, 80,159,216,146,203,229,125,155, 53,107, 86,227,169, 86, 46,151, 3, 0,212,106, 53,252,252,252, 32,149, 74, 97, 50, +153, 16, 31, 31, 79,100, 50, 89, 79, 79,230,172,213,106, 7, 63,242,200, 35,220,193,131, 7,145,147,147, 3, 63, 63, 63,168,213, +106,240, 60,143, 9, 19, 38, 72, 87,173, 90,117, 63,188, 20, 90, 81, 81, 81, 15,247,239,223,159, 59,113,226, 4, 46, 93,186, 4, +147,201,132, 51,103,206, 64,167,211,225,137, 39,158,144, 46, 91,182,236, 65,120, 41,180, 0,180,155, 56,113, 98,174,179,200, 18, +161, 86,171, 73,203,150, 45, 13,129,129,129, 9, 0, 60, 22, 90, 0,218, 61,251,236,179,121, 75,150, 44,233,189,103,207,158,151, +197, 55,247,236,217, 51, 3, 0,222,126,251,237,253,193,193,193, 9, 0, 60, 21, 90,160,148, 10,255,247,127,255,119, 89, 38,147, + 65, 34,145, 64, 38,147,213, 88,164, 82, 41, 24,134,209,218,119,191,243, 30,159, 61, 4, 33,164, 51,128,183, 80,157,145, 53,139, + 82,122,248, 22, 79, 9,128,163, 73,124,124, 98, 98,162, 67,108,237,222,189, 27,131, 6, 13, 66,113,113, 49, 78,156, 56,225, 44, +178,110, 85,140, 22, 4, 65,128, 68, 34,193,242,229,203, 97,177, 88,240,233,167,159, 98,219,182,109, 53,126, 67,117, 58, 29,222, +121,231, 29,175,220, 92, 60,207, 99,227,198,141,120,121,198, 12,135,200, 2, 0,169, 84,138,176,208, 80, 4, 6, 5,225,194,133, + 11,245, 10,173,162,162,162,215,119,236,216, 1,119,193,240, 59,118,236,112,172, 59, 7,195,123, 50, 79,150,101, 97, 50,153,112, +239,189, 87, 91,197, 62,251,236,179,142,117,131,193, 0,150,101,197,107,225,209, 5, 96, 89, 22, 70, 10, 12, 81, 92,125,111,240, +139, 47, 58,214, 11, 10, 10, 92,114,186,210, 34,183, 27, 92,100, 29,198, 83, 74, 83,236, 33, 18,137, 0,118,218,221,137,238, 99, +180,206,230, 85,172,230, 72,118,199, 37, 83,238, 27,219, 56,196, 15,180, 60, 23,210,123, 94,199,159,249, 74, 44, 95,185, 11, 0, +240,210,168, 78,232, 48, 96, 33,204, 31,223,135,169,221, 89,217,232, 12,211,116, 0,115,106,115, 81, 42,180,138,108, 20,129, 63, +207, 31, 7,199,178,144,249, 5,193, 47, 32, 20,130,205,140,146,188, 75, 72,250,250, 61, 0,192,218,141, 91,193, 48, 12, 56,142, +133,201,204, 35,182,113, 4, 4, 65,112,153,233, 0, 0,109, 8,185,123,104,203,240,174, 81,209,122,114,194,255, 18, 90,134, 4, +214,220,225, 46, 57, 98,179, 52,164,187, 70,217,165, 13, 33,119,159,164,244, 80, 61,215, 17,114,134, 1, 67, 8, 84, 82, 41, 76, + 95,125,133, 20, 84, 11, 44, 0, 72,153, 56, 17,204,183,223, 66, 43,151,131, 37, 4,156,221, 4,237, 45,196, 12,151,184,184, 56, +172, 93,187, 54,116,242,228,201, 13, 18, 91, 85, 85, 85,139,116, 58, 93,255,143, 62,250, 40,244,145, 71, 30,185,102,252,252,249, +243,232,221,187,119,110, 78, 78,206, 34,111,231,232, 44,178,244,122, 61,210,211,211,175,219,175, 46,138,172,159,127,254, 57, 58, + 50, 50, 18,241,241,241,193, 47,189,244,146, 55, 98,107,142,179,200,154, 52,105,210,223, 0, 66, 8, 33,181,133, 10,177,143,181, +119, 18, 91, 37, 0, 92,186,145,109, 54, 91,180, 90,173, 70, 94, 94, 30,198,142, 29,139,179,103,175, 26, 64, 35, 34,170, 61,216, + 49, 49, 49,184,112,225, 2,130,131,131, 65, 8, 9,241,228,156,131,131,131, 67,205,102, 51,158,124,242, 73,164,167, 95, 13,103, +108,212,168,145,120, 77,131, 60,225,113, 70,104,104,104,168,209,104, 68,175, 94,189, 80, 85, 85, 5, 0, 24, 49, 98, 4, 36, 18, + 9,242,242,242, 32,145, 72,188,230, 4, 16,148,152,152,232,178,180,138, 78,167,179,248,251,251,183,246,146, 51,240,193, 7, 31, +204, 92,183,110,221, 53,137, 45, 71,142, 28,121, 40, 32, 32, 96, 79, 64, 64,128, 71,238,115, 39, 8,206,162, 74, 42,149,214, 16, + 90, 18,137, 4, 12,195, 52, 56, 70,237, 14,194,155, 0,196, 44,184,247, 1,116,188,133,115,169, 1,103,177,181,123,247,110,180, +109,219, 22, 69, 69, 69, 72, 77, 77,189,229, 34, 75,132, 32, 8,224, 56,206,241,144,172, 80, 40, 16, 31, 31,239, 16, 89,132, 16, + 84, 86, 86,130,227, 56,241,247,218,163, 31,191,226,226, 98,132,135,133, 65,171,213,162, 69,108, 44,206,217,127, 71,196,117,185, + 92, 14, 66, 8,108, 54,247,134,147,225,128, 0, 0, 0, 17,188, 73, 68, 65, 84, 60,123,230,224, 11,112, 19,111,213, 64, 80, 0, +245,186,240, 34, 34, 34, 32, 8,130,248,155, 95,159, 37,193, 35,206,160,160, 32,148,151,151,123,202,121, 91,194,133, 69, 43, 30, + 64, 10,128, 68, 74,233, 58,123, 96,124,141,242, 14,125, 0, 36,193, 41,165,146, 16,194,180, 14,213,108, 88, 50,185,255,216,251, +218, 6,193,152,127, 9, 10,109, 16,136, 62, 6,203, 87,238,194,137,139,133, 0,128,229,159,253,129,207,231, 15, 6,148, 1,136, +243, 43, 64,152,150,123, 4,117, 8, 45, 2, 74, 4, 74,193,177,140,221,119,203,130,101, 25, 24,242,179,177,234,245,167, 1, 0, +107, 55,110,195,206,253,169,136,108,214,246,170, 31,151, 16,128,186,255,114, 7,251, 73,215, 77, 30,218, 77,153, 75,178,161,143, + 80, 65,161,168,165, 31,253,165, 32, 49, 12,166,244,141, 84, 29,221, 81,181, 14, 64,189, 55, 10, 5,195, 84, 7,191, 19, 82,103, + 32, 27, 99, 31, 99, 9,169,174,254,234,161, 15,221, 25,162, 96,209,104, 52, 8, 13, 13,197,226,197,139, 67,103,206,156,249, 41, +188,108, 64, 77, 41, 61, 67, 8,233, 59, 97,194,132,164,194,194,194,208,184,184, 56,104, 52, 26,104, 52, 26,228,230,230, 98,216, +176, 97,185, 57, 57, 57, 13,181,150,109, 30, 63,126,124,168, 84, 42,197,249,243,231, 17, 16, 16,224, 16,136, 13, 1, 33, 36, 84, +167,211,253,190,103,207,158,232,230,205,155,227,244,233,211,104,221,186, 53,182,108,217, 18,252,216, 99,143,121, 36,182,148, 74, +229, 16,187,112,194,196,137, 19,245, 19, 39, 78,236, 3,160, 79,125,159, 61,113,226, 68,253, 11, 47,188,240, 32,220, 8, 45,137, + 68,146,110, 48, 24,194,148, 74, 37,190,254,250,107,104, 52, 26,168, 84, 42, 68, 68, 68,192, 96, 48, 64,165, 82,129, 82, 10,171, +213, 42,254, 88, 20,122,114,222,249,249,249,185, 60,207, 71,253,240,195, 15,200,207,191, 90, 91, 47, 58, 58, 26, 37, 37, 37,224, +121,222,211, 90, 50, 14,100,101,101,229, 18, 66,162,254,252,243, 79,164,165,165, 97,208,160, 65,248,246,219,111,209,169, 83, 39, + 0,128,217,108,110, 72, 17, 63,158,101, 89,151, 63,126,246, 39, 80,255, 27,201,137,234,155,151, 87,156,130, 32, 8,162,200,114, +126,117, 22, 95,245,124,230,191, 5,126, 78,235,183,172, 84, 66,125, 24, 52,104, 16, 12, 6, 3, 52, 26,205,109, 21,159, 35, 90, +180,230,205,155,135,167,159,126, 26,161,161,161,120,249,229,151,193,113,156, 99,113,246, 12,120,131,144,208, 80,183,227, 98, 64, +188, 59, 16, 66,180,126,126,126,243, 24,134, 25,206,122,112,225,120,158,231, 5, 65,216, 90, 82, 82,226,182,188,131, 24,184,238, +201,223,194,249, 26,212, 51,215,235,230,172, 75,139,220, 14,168,157,109, 88,151, 69, 11, 87,179, 14,175,105, 5, 36,158,101,146, +221,100,151, 4, 92, 21, 89,111, 60,221,111,236,125,109,253,177,125,239, 97, 72, 45,197,128,217,229,223, 13,224,173, 32, 82, 53, + 66,253, 36,145,117, 13, 19,134, 61,157,145,153,133, 64,127,141, 93,100,217, 23,134, 65,135,182,213, 15,179, 59,247,167, 34,178, +105, 91,112, 44, 11,142,101,161, 81,202,145,155,147, 13,142, 99, 78,187,250,216,246, 28, 25, 58,180,101, 84,140,127,160, 4, 5, +193,102,132,135,170,234,222, 49, 65,139,200,112, 25, 6, 6, 42,162,219,115,100,168,235, 19,169,142, 33, 16,133,150,197,102,131, +244,209, 71, 29,238,194,148,137, 19, 17,191,110, 29,248,135, 31, 70,133,229,106,166,111, 67, 44, 90,226, 23, 82, 20, 68,115,230, +204,201, 45, 44, 44,124,220,107,162,234, 57,159, 41, 42, 42,234, 59,107,214,172,220,130,130, 2,168, 84, 42,100,103,103, 95,151, +200, 2, 0,163,209,248,196,186,117,235,114,147,146,146,160,209,104,160,213,106, 27, 44,180, 68, 75,214,235,175,191,222, 56, 42, + 42, 10, 23, 46, 92,128,159,159, 31, 2, 3, 3,209,161, 67, 7, 28, 60,120, 48, 56, 42, 42,234, 7,123,192,172,187, 57,125,183, +110,221,186, 98, 0, 88,183,110, 93, 49, 33, 36,153, 16,242, 1, 33,228,253, 90,203, 7,132,144,100,231,125,141, 70,227, 55,238, +184,205,102,115,114,106,106, 42, 85,169, 84, 96, 89, 22, 22,139, 5, 10, 69,181, 13,156,101, 89,148,150,150,194,104,172,118,115, + 31, 59,118, 12, 86,171,245,128, 39,231, 94, 86, 86,182,251,227,143, 63,182, 70, 69, 69,161,125,251,246, 72, 72, 72, 64,247,238, +221, 17, 29, 29,141,121,243,230,153, 43, 42, 42,118,123,194,227,140,172,172,172,157, 91,182,108,177, 70, 69, 69, 33, 33, 33, 1, +114,185, 28, 29, 58,116, 64, 68, 68, 4, 22, 47, 94,108, 46, 41, 41,241,154, 19,192,149,227,199,143,187,252,165, 84, 42,149, 58, + 0,245,102,239,214, 66,250,209,163, 71,217,110,221,186,109,175, 61,208,165, 75,151,237, 26,141,198, 15,128,183,113,127,212, 89, + 92,201,229,114,199, 34,190,207,113,220,255,130, 69,107, 42,128,191, 1, 92, 0,240,114, 61,251,254,163,112, 14,124, 47, 44, 44, + 68,106,106, 42,142, 29, 59,134,110,221,186,225,192,129, 3,128, 61, 64,254, 22,206, 15,148, 82, 72, 36, 18,196,197,197,225,133, + 23, 94,192,174, 93,187,112,230,204, 25, 88,173, 86,135, 16, 18, 99, 50,189,177,104, 73,165, 82,132,134,134,194,106,181, 58,172, + 89, 0,112,238,236, 89,112, 28, 7, 65, 16, 96, 54,155,235,181,104,249,249,249,205, 91,191,126,253,115, 5, 5, 5,225,249,249, +249, 33,206, 75,110,110,110, 72,118,118,118, 72,102,102,102, 72,122,122,122,200,229,203,151, 67, 46, 93,186, 20,190,116,233,210, +231,252,252,252,230,121, 50, 79,150,101,209,161, 67, 7, 60,251,236,179,142,101,245,234,213,142, 37, 41, 41,201,235,224,117,150, +101, 17, 55,119, 57, 6,231, 83,199,178, 43,152, 56,150, 19, 47, 77,114,199, 89, 67,139,220, 46, 16,179, 13,157, 27, 75,215, 6, +165, 52,155, 82,186, 78,116, 23, 58, 23, 47,173, 29, 12, 15, 0,104, 21,166, 90,248,198,132,222, 99,239,109,237,135,239,246,254, +129,249,223, 92, 60, 29, 59, 54, 56,174,185,127, 62,132,252, 84,188, 52,170, 19,150,127,246, 7,128,106,215,161,144,119, 2,180, +232, 2,168, 54, 10,151, 12, 5,117,186, 29,108,230,170,125, 23,207,159,237, 23,215,174, 51,147, 83, 80, 94, 35,253, 51,190,239, + 48, 16, 66,208,168,105, 91,176, 28, 7,150,101,192,177, 44,244, 58, 5, 82,255,252, 83, 48, 25,141,251,234,226,236, 75, 8, 23, +166,145,173, 30, 53,176,131, 34, 75,150,135,224,112, 53,164,146,106, 17, 64, 47, 14,171,185,179,146, 3,218,105, 49, 46, 51, 80, +185, 47,183,106,117, 95, 66,182, 39,185, 8,192, 20, 4, 1, 26,185, 28, 85, 38, 19,140, 54, 27,250,174, 90,229,112, 23, 50,132, +224,191, 0,218,175, 90,133, 67, 95,125, 5,157, 76, 6,200,229, 30,103,133, 56, 67,124, 66,202,205,205,197,136, 17, 35,174, 75, + 16, 1, 87, 45, 91,147, 39, 79, 78, 90,188,120,113,232,156, 57,115,110, 24,231,203, 47,191,156,244,217,103,159,133, 54,105,210, +164,161, 84,208,104, 52, 51, 4, 65,208, 47, 91,182, 44,103,197,138, 21, 53,158, 20,197,107, 97, 54,155,229,122,189,126, 57,128, +126,110,168,230, 79,154, 52, 73, 10,224,105,187,101,171,253,164, 73,147, 14, 81, 74,103, 59,239, 68, 8,153,187,118,237,218, 17, + 78, 46,198, 15, 0,172,114, 55,199,210,210,210,247, 95,120,225,133, 39,127,253,245,215, 32,133, 66, 1, 66, 8,164, 82, 41, 90, +180,104,225,200,162,145, 72, 36,160,148,226,197, 23, 95, 44,200,203,203,243,168,188,131,201,100,218, 56,127,254,252,126, 70,163, + 49,122,220,184,113, 82,127,127,127,228,230,230,226,173,183,222, 50,111,220,184, 49,189,162,162,194,219, 88, 42, 88,173,214,141, +175,189,246, 90,223,242,242,242,166, 79, 61,245,148,180,164,164, 4, 70,163, 17,211,167, 79, 55,127,244,209, 71, 25, 70,163,209, +235,130,191,221,187,119, 63,127,249,242,229,158,149,149,149, 69, 42, 85,205,135, 22,137, 68, 66,212,106,117,103, 0,155,189,225, +140,143,143,191,112,229,202,149,110, 11, 23, 46, 76,182, 90,173,146, 35, 71,142, 56,130,225,223,125,247,221, 36,133, 66,209, 31, +222, 7,237, 11,114,185,188,134, 5,171,246, 58,199,113,255,122,139, 22,165, 52, 9,213, 37, 51,110, 43,212, 22, 89, 39, 78,156, + 64,191,126,213,255,210, 7, 14, 28, 64,143, 30, 61,112,224,192, 1,244,236,217,243,150,150,119, 16,133, 22,199,113,120,236,177, +199, 48, 96,192, 0, 52,110,220,184, 70,182,161,184,238,141,216,176,217,108,104,215,174, 29, 76,102, 51,164, 82,169,195, 53,201, +113, 28,130, 67, 66,112,254,252,121,143, 44, 90, 12,195, 12, 31, 50,100, 8,115,242,228, 73,140, 28, 57, 18,159,124,242,137,203, +125, 71,143, 30,141, 47,190,248, 2, 67,134, 12, 97, 94,121,229, 21,183,229, 29,196, 32,116, 79,206, 73,188, 79,215,103,209,187, + 81,156,206, 90,228,118,131, 83,105,135,107, 64,106,214,208, 2,112, 85,108,213, 85,176, 20, 77,131, 85,227, 6,180,224,240,221, +190, 63, 48,255,187, 43, 27,121, 74,191,254, 58,165,232,251,151,123, 0,150,173,163,208, 97,216,230,106,119, 33, 0, 33,239, 4, + 44, 91, 71,131,168,130,176, 63, 83,130, 18,163,165,206, 14,218, 54,155,229,147,111, 63,125,239,133,110,107,122, 6,135,135,248, +193, 80, 98,116,136,173,148,164,109, 0,128,161,147, 22,129, 99,171, 93,138, 58,141, 2, 74, 41,139,175, 54,189, 93, 96,177, 84, +213,249,237, 42,147, 48, 79,191,114,119, 11, 63,153,218,138,210, 48,138,182,193, 87,147,254, 72,211,106,206, 26,130,235, 46,127, + 4,157, 40,194,168,230, 26,221,219, 39,139,159, 6,176,186, 54,167,169,184,216, 88,252,231,159,202, 65,235,215,227,200, 19, 79, +160, 17,207, 35, 57, 34, 2, 1, 18, 9,252,228,114, 48,132,192,248,253,247, 56,244,245,215, 8,149,203, 1,173, 22,182, 5, 11, + 96, 74, 77,133,181,172,204, 88,155,207, 29, 8, 33, 56,119,238,220,117, 91,157,156, 33, 10,163,153, 51,103,126, 90, 88, 88,248, +248,141,228,124,226,137, 39,146,246,238,221,235,222, 30,238, 6,101,101,101,211, 0, 76,187, 1,243, 17, 8, 33,179,237,133,241, +158,158, 56,113,162,254,232,209,163, 79, 18, 66,214,136, 79, 19,132,144,144,241,227,199, 79,168, 37,178,234,205, 58,164,148, 94, +209,104, 52, 11,166, 77,155,182,104,197,138, 21, 26, 49,240,253,175,191,254,130,205,102,131, 68, 34, 1,207,243, 24, 63,126,124, +121, 97, 97,225,114, 87, 21,157,235,224,181, 17, 66, 70, 47, 90,180,104,252,219,111,191,253, 0,203,178,193, 60,207,231, 27,141, +198, 31,140, 70,227,186,134,100, 93,217,175,195,152, 57,115,230,140, 89,185,114,229, 16,134, 97, 66,108, 54, 91, 65, 89, 89,217, + 14,163,209,216,160,218, 92,135, 14, 29,202, 95,179,102,205,197,252,252,252, 86,145,145,145, 37, 26,141,198,108, 54,155, 89,165, + 82,169, 83,171,213,241, 0,126, 3,112,202, 27,206, 99,199,142,229,124,240,193, 7,105, 38,147, 41,238,131, 15, 62,216,175,211, +233,246, 18, 66,136, 84, 42,245, 87, 42,149,253, 0, 36, 3, 56,231, 13, 39,195, 48,130,179,245,170,118,124,150, 76, 38,251, 95, +137,209,186,237,224, 92,222,161,160,160, 0, 39, 79,158, 20, 69, 86, 60, 0,244,236,217, 51, 69, 20, 91,199,142, 29, 67, 66, 66, + 66, 10, 33, 68,242, 79,103, 30, 58, 91,180, 68, 65,213,184,113, 99,199,182,243,226, 20,163,229, 17,120,158,135, 84, 42, 5,199, +113, 8,143,136,112,124, 22,165, 20,231,207,159,135,193, 96,240, 72,104,177, 44,203, 18, 66, 48,114,228, 72,143, 62,247,255,254, +239,255,144,156,156, 12, 79,220,140,118,126,196,196,196,212,187,143, 29, 30, 9, 32,150,101, 17, 25, 89,167, 99,203, 35, 78,103, + 45,114,187,192,217, 77,232, 42,227,144,186,232,115, 8,184, 8,134,191,144,103, 92, 56,250,173,131,175,156,202,169,250, 58, 53, +183,242, 5, 0,116,235, 9,213, 79, 29,130,217,251,238,107,153, 1,211,186,158, 32,186,234,226,109,180, 60, 27, 68, 29,138, 12, +161, 17,230,110, 63,157, 99, 3,169, 51,254,133, 82,154, 37, 85,168,102,111, 90,255,238,138,241,147, 95,212,156,184,144,139,146, +114, 19, 88,246,234,151, 87, 12,130,215,169, 21,136, 10,243,195,103, 31,190, 85, 86, 86, 90, 60,135,186,232,123,216, 88, 43,157, +212,191,115,115,185, 52,188, 2,113,237, 71,128, 85, 92, 45, 50, 75,115, 92,120, 7,123,252,132,251,175, 84, 40,190,189, 82, 49, + 9,117, 9, 45,179,249,190, 89, 3, 7,254, 56,127,215, 46, 85,151,141, 27,113, 97,252,120, 68, 24,141,144,219, 93,137, 12, 33, +208, 72,165,208, 72,165,213, 34,107,229, 74, 24,109, 54,172,122,226,137, 74,147,217, 60,208,197,117,174, 19, 86,171, 85,218,167, + 79,159, 27, 38,178, 68,216,185,188,138,243,242,132,147, 16,210,119,192,128, 1, 73,148, 82,249,141,228,110,224,124, 68,177,101, + 57,122,244,232,132,253,251,247, 95, 64,205,198,162,197,251,247,239,191,240,212, 83, 79,145, 13, 27, 54,124, 4,224, 53, 79, 11, +120,150,151,151,191,171,215,235,209,187,119,239,215,150, 44, 89, 18,216,169, 83, 39,132,132,132,160,172,172, 12,199,142, 29,195, +212,169, 83, 13,165,165,165, 75,138,138,138, 86,120, 57,103, 30,213,150, 27,175,173, 87,110, 56, 5, 0, 31,219,151, 27,130,103, +158,121,230,175, 11, 23, 46, 20, 6, 7, 7,119,149, 74,165,237, 81, 29, 7,148, 3,224, 35,120, 41,136, 68, 60,253,244,211,127, + 94,184,112,161,160, 81,163, 70,221,236,156,122, 0,153, 0,214, 55,128, 51,235,143, 63,254,136,236,220,185, 51, 35,145, 72, 40, +203,178,144, 72, 36,148,227, 56,106,143,171,161, 0,176, 99,199, 14, 57, 0,175, 91,132,249,112,125,112, 46,239,144,157,157,237, + 16, 89, 78, 5, 75,227,123,246,236,153, 98, 23, 89,226,216, 45,137, 47,163,148, 98,254,252,249, 88,187,118, 45,234,171,104,110, +207,238,115,107,214, 17, 45, 87,162,136,178, 88, 44, 56,113,226,132,163,102,151,232, 46, 20, 75, 59,216,108, 54,183,217,234, 60, +207,243,102,179, 25, 95,126,249,165, 71, 98,235,243,207, 63, 71, 85, 85, 21,248,122, 20,156,115, 41,134,142, 29, 59,194, 96, 48, + 56,146,125,226,227,175,150,202,179, 88,220, 22,194,119,201, 25, 23, 23,135,130,130, 2, 4, 5, 85,231,227, 68, 61,113,213,216, + 99,171,248,119,214, 15,118,103,209, 34,158,150, 36,232,168,215,251,153,100,214,111, 30,106, 43,239, 59, 60,222, 15, 77,195,180, +144, 72, 21,200, 42,181, 97,207,169, 82,172, 79,202, 73, 55, 90,249, 7,206,228, 85, 28,119,199,163, 80,251,253,208,233,238, 1, + 61,158,152, 48, 85, 93,110,226,145,150,118, 25,249,121,217, 96, 8,131,240, 70,145,136,142,142,129, 82,198,224,147,117, 43, 42, + 82, 14,237, 61, 88, 86,106, 24,228,138,235, 1,189,236,208,202, 71,123,116,107,214, 76, 75, 96,179, 2,188, 21,176, 89, 1,193, +254, 42,190, 39,212,252,206,157, 60, 89, 76, 95,249,175,225,247,239,139,205,117,246,172, 26, 78, 72, 15,125, 64,192,143,115,119, +236, 80, 9, 22, 11, 10,167, 77,131,202,102,131,194,254, 84, 2, 0,144,203, 97, 91,176,160, 90,100,141, 30, 93, 89, 82, 92,236, +117, 11,158,224,224,224,143, 11, 10, 10,238,184,202,240,129,129,129,179, 26, 82, 38,226,102,193,158,249, 87, 76, 41,181,212,122, +159, 3, 16, 44, 90,185, 26,192, 27, 19, 28, 28,252, 10,195, 48,221, 41,165,129, 12,195, 20, 9,130,240, 91, 94, 94,222, 82, 74, +233,249, 27, 49,119, 31,188, 7,185, 90, 25,190, 62, 63,118, 30,128,231, 1,148, 81, 74,211,110,250,196,124,168, 1,209,125,136, + 58,178, 11,221,141,253, 83, 8, 12, 12, 60,252,227,143, 63,118,106,218,180, 41,227, 28,198, 32,214,202, 19,221, 91, 28, 87,109, +143,248,245,215, 95,109, 35, 71,142,252, 45, 39, 39,167,183, 43, 78,157, 78,247,211,223,127,255,125,111, 73, 73,201, 53,130,202, +185, 82,188,184, 93, 81, 81,129,201,147, 39,255, 92, 90, 90, 90,103, 11, 30,189, 94,191,114,197,138, 21,207, 13, 29, 58,148, 17, +203, 81, 56, 47,212,222, 46, 72, 92, 44, 22, 11, 54,111,222, 44,188,253,246,219,239, 20, 23, 23,187,116, 29, 70, 68, 68,164,103, +101,101, 69,138,165, 22, 60, 41, 42, 26, 19, 19,147,157,150,150,230,178, 27,195,205,224,188, 19, 65,106, 53,151, 6,188, 16, 90, +118, 2, 18, 23,162, 30, 65,129,225, 12,132,118, 12, 33, 50, 27,197, 25, 80,252,164,226, 42,215, 28,203,162, 30,185,206,164, 42, +213, 20,173,198,255,245,161,143, 63, 27, 24,211, 44,150,132,134, 55, 2, 1,131,220,156, 76, 92,190,120,150,126,243,233,123,133, + 21,165,134,121,149,149,229,239,185,227,105, 67, 72,179, 38, 58,233, 86, 25,143,150, 16,207,163, 86,127,170,218,160, 0, 44, 18, +230,116, 90,153,117,196, 73, 55,110, 31, 81,108,205,254,230, 27,149,172,101,203,107, 10,197, 9,130, 0, 83,106, 42, 86, 61,241, + 68,131, 68,150, 15, 62,248,112,125, 32,132, 52, 69,253, 53,178,172, 0, 50,110,149,197,228,127, 29,228, 54,110, 42, 77, 8, 81, + 7, 4, 4,236,101, 89, 54,218,190, 93, 35,102, 72, 92, 23, 95, 5, 65, 72,203,205,205,237, 79, 41,173,116,195,217, 76,171,213, +190,199,243,124,151,250, 98,154, 40,165, 96, 89,246, 72, 89, 89,217, 20, 87, 33, 8, 55, 43,235, 48, 40, 40,232,252,229,203,151, +155,137, 89,212,206,247,202,218,215, 1, 0,206,157, 59,135, 62,125,250, 92,206,206,206,118,233,103,188, 25,156,183, 43, 92,212, +209,186,126,139,214,141, 6, 33, 36, 66, 42,215,140,145, 41, 21,247, 8, 86, 91, 28, 8,192, 73, 36,167,205, 85,198,125, 38, 99, +249, 38, 87,238,194,127, 18,195, 9,233, 33,151,201,126,146,234,116,202,186,174,147,181,172,204,104, 50,155,239,243,137, 44, 31, +124,240,193, 7, 31,238, 20,144,234, 78, 31, 63, 74, 36, 18,185,125,219,121,236,154,253,109, 54, 91, 85,126,126,254,255,183,119, + 70,185, 13,194, 48, 24, 54,187, 82, 47,208, 61,236,161, 18,119,106,118,167,188,183,151,232,121,216,195,226, 45,242, 28, 72,240, +111, 8, 19,191, 52,105, 98,234, 87, 7,255,134, 16,134,185,205,221,125,241, 96,254, 23, 53, 79,180, 98,140, 83,109,247,214, 97, + 24, 62,166,138,119, 86,101,255,248,182,216, 59, 99,111,166,227,216, 23,187,226, 54, 48,175,244,253,120,236,231, 56,142,225, 0, +113, 34,115, 4,101,114,206,107,185, 45, 76,249, 59, 40,206, 42,223,247,192,172,169,165,149,113,206,122,116,101,222,103,107,169, +163, 56,145, 57,130, 48,165,127,106,184,173,204, 60,110, 96,156,139,190,239,133,105, 61,134,204,196, 89,244,104,173,151, 4,247, + 74,149,231,166, 30,197, 79, 28,114, 63,173,252,111,218, 45, 67,214,108,103,120, 41,175, 39, 1,242,147, 14, 85,246, 41,217,131, +201,106,153,112,213,200,225,181, 3, 15, 52, 83,236, 79,148, 66, 58,160, 63,169,162,225,104,165, 30,217,201,204,180, 15,196, 88, + 33,220,156,137,218,151,218, 65, 17, 25,167, 7, 51,223,102,241,170,100, 34,124,175,229, 29,201, 68,213,146,248, 60,164,150, 60, + 60,175,248,199,204,149, 76, 68, 45, 73, 38,194,247, 91, 48,121,187,165,150, 52, 38,194,247,165,220, 91,185,123,137,111, 23,166, + 9,215,159,113,200,219,135, 60,241,106,234, 60,233,185,131, 60, 94, 36,137,158, 16, 49, 19,201, 99,102,154,233,119,207, 36,108, +142, 66, 98, 6, 32,243, 29,149, 35, 15,191,231, 76, 20, 95,114, 16,121,210,152,214,120, 11,113,154,164, 49,173,190,223,138, 73, +216, 28, 65,106, 73, 48, 97,181, 36,199, 27, 99, 12, 72, 38,170,150,148, 56,205,121,210,152,214,120, 11,113,154,164, 49, 17,231, + 16, 47,238, 30,122, 93,134,233,117, 25,166,233, 77,247, 68,106, 88,250,243,195,219,155, 86,180,188,228, 49, 33, 34,250,237,199, +129, 62,161, 33, 39, 91, 94, 43,111,168, 85, 29,133,251, 4,226, 96,171, 79,172, 20, 95,119,125, 88,182,210, 89, 75,103, 45, 81, +103,181,164,249,102, 28,199, 16, 99,188, 35,153, 86, 73, 38,106, 66,164,140,221, 84, 75,242,179,136, 90, 90, 96,154, 86,156, 75, +227,183,112,247, 82,169,135, 22,209,138, 62, 90,123,136, 77, 2,190, 50, 33, 2,175,146,161,229, 20, 39, 95,137,118, 61,118,114, +136, 51, 93, 41,223,145,204,164,163,236,211,179,150,206, 90,130, 8, 89, 75,194,147,144, 88,209, 62,215,152,136,239,200, 25, 40, +143,122,143, 29, 89, 75, 30,185, 63,154,190, 0, 58, 46,240,138,133, 98, 60, 69, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/datafiles/prvicons.c b/source/blender/editors/datafiles/prvicons.c index 2c606230345..5d6b63c1d80 100644 --- a/source/blender/editors/datafiles/prvicons.c +++ b/source/blender/editors/datafiles/prvicons.c @@ -1,409 +1,477 @@ /* DataToC output of file */ -int datatoc_prvicons_size= 12878; +int datatoc_prvicons_size= 15052; char datatoc_prvicons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, - 68, 82, 0, 0, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, 8,124, - 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, 88,116, - 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, 0, 32, - 0, 73, 68, 65, 84,120,156,237,125,121,124, 20, 85,186,246, 83, 85,221,213, 91, 58, 59, 36, 16, 32, 48, 64,192,128, 65, 68, 17, - 66, 8,171, 10, 40,174, 51, 46, 31,200,111,116,188, 92,113, 70,199,141, 77, 16,163, 51,138,128,224, 40,138,203,160, 32,202,117, -197, 65,244,122, 85, 28, 29, 81,194,146, 24, 64, 48, 4, 66, 32, 9, 9, 16,204,218,221,233,164,151,170,250,254,232, 84,165,186, -187,186,187,122,203, 98,215,195,175, 72,117, 45,167,158,115,234,121,207,121,207,123, 78, 85, 17, 28,199, 65,129,130, 88, 5,217, -221, 4, 20, 40,232, 78, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166, -161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26, -138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, - 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, - 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24, -128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, - 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128, -130,152,134, 98, 0, 10, 98, 26,138, 1, 40,136,105, 40, 6,160, 32,166,161, 24,128,130,152,134, 98, 0, 10, 98, 26,138, 1, 40, -136,105,168,186,155, 64, 87, 98,252,248,241,233, 44,203,238, 6, 48, 58, 90,215,160,105,186,174,176,176, 48, 61, 26,105, 15, 31, - 62, 92,147,148,148, 52,129, 97, 24, 99, 52,210, 7, 0,181, 90,109,219,191,127,255,238,104,165,223,211, 16,148, 1,244,102, 1, -117,112,255,110,253,250,245,244,148, 41, 83, 80, 92, 92,140,140,140, 12,104,181, 90, 80, 20, 5,130, 32, 64,146,157, 13, 34, 65, - 16,126,215,197,219,248,223, 86,171, 21, 51,103,206, 76,139, 52,119,192, 37,254,196,196,196,137,207, 61,247, 28, 57,125,250,116, -148,148,148, 32, 35, 35, 3, 52, 77, 67,165,114,221, 70,138,162,124,158,239,111, 31, 15,187,221,142,169, 83,167,106, 34, 70,186, - 23, 64,182, 1,248, 18,144, 70,163, 1, 69, 81, 32, 73,210, 75, 28,129,132,227,185, 30, 45, 1,241,220,159,127,254,121,205,148, - 41, 83,134, 0, 64,113,113, 49,218,219,219, 17, 31, 31, 15,149, 74, 37,228,129,207,135,175,197,223,254, 51,103,206, 68,154, 58, -128, 78,241,175, 89,179,134,156, 62,125,186, 30, 0, 14, 30, 60,136,209,163, 71, 35, 49, 49, 81,224, 47, 22, 57,111, 20, 0,100, -109,167, 40, 42,106,252,123, 50,100, 25,128,148,128, 14, 28, 56,128,209,163, 71, 35, 33, 33,193,167,128, 60,197, 18,104,223,233, -211,167, 35,158, 65,158,251,186,117,235, 52, 83,167, 78, 29,194,111, 39, 73, 18, 44,203, 10,199, 5, 18,183, 92,195,136, 52,164, -196, 15,248,175,209, 67, 17,127,172, 34,160, 1,248, 18, 16, 69, 81,224, 56, 78, 56, 78,142,192,229,236,139, 36,120,238,107,215, -174,213, 78,155, 54,109,176,120,159,248,166,135, 35,254,104,113, 7,124,139, 31,112, 23,179, 56, 63,161,138,223, 51,189, 88,129, -223, 92,135, 42,160, 80,197, 31, 73, 17,137,185, 79,159, 62,125,176,231,126,222,239,143,148,248, 35,205,223,159,248,121,254,158, -235,138,248,131,135,207,156,203, 21, 16,128,144,196,239,235,184, 72, 32, 16,119,192,117,211,249, 78,111,164,196, 31, 41,254,129, -196, 15,192,203,231,247,220, 39,206,167,212,246, 64, 70, 19, 43,144, 52, 0, 57, 2, 82,171,213, 33,215,244,209,116,129,196, 46, -155,103,171, 37,134, 70,163,241,186, 94,176,254,126, 52, 12, 64,142,248,121,254, 82, 80,106,254,224,224, 85, 2,114, 5, 68,211, -180,219, 13,247, 39,144, 96, 12, 35, 28,136, 59,235,226,254, 10, 0,216,108, 54, 84, 86, 86,162,186,186, 26,141,141,141,208,106, -181,146, 66, 14,183, 35, 28, 14,252,137,223,102,179,225,204,153, 51,168,174,174, 70, 83, 83, 19,244,122,189,151,216,195, 17,127, - 44,214,254,128,135, 1,200, 17, 80, 85, 85, 21, 26, 27, 27,161,211,233, 4, 65, 68,162,230, 15, 87, 60, 0,192,178,236,238, 13, - 27, 54,208,249,249,249, 67, 88,150, 69,109,109, 45,142, 31, 63,142, 19, 39, 78,160,190,190, 30,241,241,241, 72, 78, 78, 70, 66, - 66, 2,140, 70,163, 91, 63, 32, 18,125,129,112,145,148,148, 52,225,249,231,159, 39,243,243,243,245, 12,195,160,182,182, 22,101, -101,101, 40, 47, 47, 71,125,125, 61,140, 70, 35,146,146,146,144,152,152, 8,163,209, 8,149, 74,229, 37,124, 32,116,241,199,162, - 17,184,149, 4,203,178,187, 59,226,252,130,128, 74, 75, 75, 5, 1, 25,141, 70, 36, 39, 39, 35, 49, 49, 17, 6,131,193, 45,254, - 31,174,248, 35,228, 66,140,206,206,206,198,166, 77,155, 80, 94, 94, 14,138,162,144,150,150,134,148,148, 20,244,239,223, 95, 24, - 52,162,105, 26, 90,173, 86, 16, 80,160,248,127, 48,251,194, 1,195, 48,198,236,236,108,188,242,202, 43, 56,125,250, 52, 40,138, - 66,159, 62,125,144,154,154,138,156,156, 28,168, 84, 42,104, 52, 26,208, 52, 45,140,191,248,170,245, 1, 69,252,114,224,233, 2, -141, 30, 53,106, 20, 94,126,249,101,148,151,151, 67,165, 82, 33, 45, 45, 13,201,201,201,184,244,210, 75, 5, 1,105, 52, 26,104, -181, 90,168,213,106,168, 84,170,136,137, 63, 18,181,168,217,108, 70, 92, 92, 28,242,243,243,145,152,152, 8, 0, 66,235,194, 95, - 75,173, 86,123,137,200,151,200,187, 58, 10,100, 50,153, 96, 52, 26,145,151,151,135,164,164, 36, 97,187,120,180,151,162, 40,104, - 52, 26,129,191, 84, 43,160,136, 95, 30,188,250, 0, 38,147, 9, 6,131, 65, 16, 16,127, 83,197,238, 14,111, 4, 26,141, 70,248, - 29,108,180,199,215,190,112, 97, 48, 24,144,147,147, 3,134, 97, 0,120,143, 64,147, 36, 9,138,162,160, 86,171,133,191, 82, 45, - 64,168, 29,225,112, 17, 31, 31,143, 49, 99,198, 8,252,197, 16,215,248,158,226, 87,220,158,208,224,101, 0,188,128, 60, 71, 73, -197, 2, 82,169, 84,130,112,104,154,118, 19, 80,184, 46, 81,216, 25,234,112,113, 56,142,147, 20, 63,127, 61,113,205, 31,169,190, - 64, 36,248,243,181,187,211,233, 12, 40,218, 72,138,159,119, 7, 99, 13, 94, 57,230,107,119,150,101,189,110, 44, 47,244,130,215, -255,141,226, 95,106,193,136,140, 36, 24, 28,221,185,210,167,168,194,133,248, 70,242, 70, 32, 94, 60, 7,192,130,169,249,187,162, - 35, 44, 53,175,199, 95,116, 71, 74,252,114,250, 5,254,142,137, 37, 72, 26,128,248, 6,120,222,100,146, 36,241,236, 3,179,209, -208,210,134,231,222,250, 22, 37,199,107,133,115,119,191,177, 8, 70,131,123,120,177,201,212,134, 83,213,191, 98,243,142,125,248, -169,180, 90, 50,205, 72,137,159, 79,219,215, 0, 87, 36,230,250,248,218,199, 95, 47, 18,144, 19,213, 9, 69,216,138,248,189,225, -229,116,243, 55,148,175, 93,248,133,239,240,242,219,211, 83,227,177,240,247, 19,221,206,165, 36,106,212,212,164, 56, 76,188,236, -119,216,252,183,121,152, 60,110,152,112,141,104,245, 1,194,169,189,195, 17,127,180, 38,195,117,149,248, 99,181, 47,224,211, 0, -124, 9, 64,188, 62, 36, 35,197,237, 92, 74,229,219,151, 86, 81, 20, 22,221,145,239,247, 26,145, 66,164,196, 47, 55, 60, 26,233, - 86,140,135, 34,254,232, 67,178,253,227,111,100, 32, 67, 48, 26,180,110,231, 81, 18,130, 16,255, 30, 51, 98, 0,174,202, 25, 18, - 85,241,251,227, 31, 73,195,144,218, 30, 9,120,250,245,252, 54, 32, 60, 97, 43,226,151,134,151, 1,200,185,233,190,106,188, 64, -157, 74,146, 36,241,246,234, 63, 70, 93,252,129,150,104, 24, 70,180,160,136, 63,186,144,108, 1, 60, 59,145,114, 7,174, 40, 74, -126,216, 51, 26,226,247,197, 63, 18,181,190, 34,254,223, 38, 36,251, 0,114, 69,236, 41, 96, 74,226,216, 71,215,238,232, 82,241, - 71,195,229,233,106,241,139,163,112,138,248,163, 11,217,125, 0, 57, 3, 87, 36,229,222, 7,104,183, 59,177,167,184,188,203,196, -239,201, 63, 18,226,247,183, 47,218, 80,196, 31,125,200,234, 3,248,243,235,197,224,195,160, 78,134, 69, 93,189, 9,111,124,188, - 23,109, 54, 71,151,139, 95,108, 0,209,234, 8, 71, 19, 82,177,121, 69,252,209, 65,192, 62, 64,160, 78,173, 24, 99,110,121, 86, -242, 34, 93, 37,126,241,245, 0,255, 81,160,112, 12, 35,154,144, 18,169, 34,254,232,193,103, 11, 0, 4, 14,131,122,138,225,216, -167, 79,128, 32, 8, 48, 44,135,186,122, 19, 94,251,240, 7,236,248,186,164, 75,197, 47,206, 67,164,107,253,174,112,123, 60,161, -136, 63,186,144, 84,165,156,154, 95, 74, 16,252, 62, 90,173,194,160,254, 41, 88,117,255,245,208,105,212,138,248, 67,132, 34,254, -232,195,167, 1,200, 17,191,167, 40, 60,247, 25,116, 26, 76,187,106,100,151,100,196, 31,127, 69,252, 10,124, 33, 96, 39, 56,152, - 48,168,212,121, 27, 87,222,217,101,153,145,226, 31,174,191,175,136,255,183, 13,159, 97, 80, 57,226,151,114,129,124,237,235, 74, - 68,170,214,239,206, 60, 4, 35,126,229, 1,247,208, 33,217, 2,200,245,255,125,245, 1,186, 83, 56, 60, 15, 69,252, 10,228, 32, - 96, 31, 32, 24, 23, 72, 17,127,100,161,136, 63,250,240, 59, 21, 34,144,248, 45, 86,155,219,185,158,191,187, 11,189, 89,252,188, -168, 21,241,119, 13,100,133, 65,125,185, 68,167,107,234,221,206, 43,175,186,216, 37,164,253,193,159,240,123,186,248,121, 40,226, -239, 58, 72, 26,128, 28,241,215, 92,104,194, 11,111,127,227,118,222,218, 55,191,196,169,234,158,103, 4,114,132,223, 83,196, 47, -134, 34,254,232,195,111, 24,212,151,248,239,124,108, 51, 14, 29, 63,235,149, 88,209,209, 74, 92,123,239, 63, 48,242,119,233,216, -246,220, 61, 72, 73,140,235,146, 76,120, 66, 17,191, 2,185,240, 25, 6,245, 23, 9,250, 96,195,194, 30,209,225,149,130, 34,126, - 5,193, 32,232, 48,168,248,119, 79,133, 28,225,119,229,244,140, 80,161,136, 63,250, 8, 42, 12,218, 27,196, 47,167,198, 87,196, -175,128,135,236, 48,104,111, 16, 63, 15, 69,252, 10,228, 34,232, 62, 64, 79,135,221,110,199,169, 83,167, 36,253,252,104,139, 95, -173, 86,135,157,134,211,233, 68,121,121, 57,128,174,127,105, 21, 77,211, 93,122,189,158, 0,175, 18,118, 56, 28,168,168,168,232, -150,206, 98,184, 2,210,104, 52,117,147, 39, 79,142,202,119,122,131,225, 16,234,185, 58,157,206,150,155,155,219,173,223,233,213, -233,116, 61, 99, 52,179,139, 64,136,191,244, 56,105,210,164, 11, 54,155,173,219, 5,180,119,239,222,168,124,105, 93,129, 2, 79, -184, 25,128, 2, 5,177,134,158,223, 35, 84,160, 32,138, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, - 80, 16,211, 8,106,164,165,227, 59,194,187, 1,140,142, 18, 31,208, 52, 93, 87, 88, 88, 24,149, 48,168,194, 63, 48, 98,141,191, -108, 3,224, 63,162,221,241, 29, 97, 20, 23, 23, 99,192,128, 1,208,104, 52,194,167, 82, 61, 7,204,130, 93,111,107,107,195,140, - 25, 51,162, 50, 14,193,243,239,248,144,118,175,229,207,151,127, 81, 81, 17, 50, 50, 50,188,248,251,226,231, 57,144, 41,181,221, -108, 54, 99,246,236,217, 49, 85,254,178, 12, 64,252, 5,249, 41, 83,166, 12, 1,128,226,226, 98,216,108, 54, 36, 36, 36, 8,159, - 78, 10,244, 58,244, 64,251, 78,159, 62, 29, 12,119,217, 16,243,207,207,207,239,181,252,215,173, 91, 39,148,255,129, 3, 7, 48, -106,212, 40,196,199,199, 75,242,151, 51, 29,220,115,255,153, 51,103,162,202,191, 39,150,127, 64, 3, 16,147,159, 58,117,234, 16, -225, 68,149, 10,226, 65, 52, 57, 4,229,100, 42,210,248,173,240, 95,179,102,141,102,218,180,105, 2,127,138,162,132, 79,217, 6, -203,213,215,254,104,160,167,151,191, 95, 3, 16,213, 60,218,169, 83,167, 14, 22,239,227, 39,150,121,126,138, 52, 28,242,145,190, - 9,191, 21,254,107,214,172,209,206,152, 49,195,139,191,248,122,114,133, 31,232,152,104,240,239,201,229,239, 51, 10, 36, 38, 63, -109,218,180,193,158,251,121,191, 13, 8, 92,248,193, 52,103,145,194,111,133,191,148,248, 1, 87, 11, 32,151,191,220,188,196, 98, -249, 75,182, 0,129,200,139, 51, 16, 73,242,145,186, 1,191, 21,254,190,196, 47,230, 15,200,251, 14,130,156, 99, 34, 53, 93, 92, - 78,249,239,218,181, 11, 9, 9, 9,208,106,181, 80,169, 84,110, 45,154,167, 97,120,110, 19,231,121,233,210,165,145, 53, 0, 15, -159, 77,146, 60,224,154,186,236,121, 81,185, 5, 30,205, 38,248,183,194,127,205,154, 53, 26, 95,226, 23,243,231,121, 75,241,151, - 43,124,241, 49,145,226, 31,168,252,111,191,253,118, 12, 24, 48, 0,241,241,241,160,105, 26,106,181, 90,104,213,186,178,252,221, - 12,192, 87,135, 5, 0,108, 54, 27,170,170,170, 80, 85, 85,133,166,166, 38,104,181, 90, 47,194,225,146, 15,247, 6, 4,226, 95, - 89, 89,137,234,234,106, 55,254, 23, 47, 94, 20, 62, 6, 62,112,224,192,128, 60, 43, 42, 42, 0,184,124,215, 75, 46,185, 36, 42, -252,215,173, 91,231,214,225,229,249,159, 57,115, 6, 85, 85, 85,168,175,175,135, 78,167,147,245,174,163, 96, 91,134, 72,240,151, - 42,127,139,197,130,195,135, 15,163,164,164, 4,199,142, 29, 67,107,107, 43, 12, 6,131,219, 7,216,229,214,252,252, 58, 73,146, - 88,182,108, 89,228, 12,128,101,217,221, 29,113,218, 33, 44,203,162,182,182, 22,101,101,101, 56,113,226, 4, 26, 26, 26, 16, 23, - 23,135,148,148, 20, 36, 36, 36, 32, 62, 62, 94, 32, 45, 55,252, 22,237, 40, 74, 40,252,139,139,139,113,235,173,183,226,179,207, - 62, 19,106, 85, 41,191,146,223, 94, 88, 88,136,187,239,190, 27, 91,182,108, 65,118,118,118,196,249,119,196,249,135,176, 44,139, -154,154, 26, 28, 63,126, 28,101,101,101,168,175,175, 71, 92, 92, 28,146,146,146,144,148,148, 4,131,193,224,183, 2,234,106,241, - 7, 83,254,179,103,207, 70, 82, 82, 18,140, 70, 35,244,122,189, 48, 22,224, 75, 79,209,212,143,167, 11, 52, 58, 59, 59, 27,155, - 54,109,194,169, 83,167, 64, 81, 20,250,246,237,139,212,212, 84,244,239,223, 31, 52, 77, 67,165, 82, 65,163,209, 8,190,155,216, -151, 14,245,149,132, 17,188, 9, 65,243, 47, 41, 41,193,161, 67,135, 64, 16, 4,210,211,211,125,214, 62,252,178,111,223, 62, 20, - 22, 22,130,227, 56,220,123,239,189, 81,225,255,242,203, 47,163,188,188, 28, 36, 73, 10,252, 71,143, 30, 45,212,150, 26,141, 6, - 58,157, 78,248, 29,138,248,125,237,143, 4,127,169,242,223,187,119, 47, 8,130, 16, 62, 4,174, 82,169, 4,183, 71,220, 7,144, - 83,243,139, 91,128,229,203,151,135, 85,254, 94,125, 0,139,197, 2,163,209,136, 41, 83,166, 32, 49, 49, 81,216,206, 23, 26, 73, -146, 80,171,213, 80,171,213,208,104, 52, 32, 73, 82,248,172,103,176,133, 29,141, 78,100,176,252,139,138,138,132, 99,246,239,223, - 15,192,229,222,240, 11,255, 91,188,157, 95,143, 6,127,179,217, 12,189, 94,143,188,188, 60, 36, 36, 36,120, 9,128, 23, 12, 77, -211,160,105, 90, 40,123,185,131, 72,129,246,135, 11, 95,229,191,104,209, 34,175,242,215,106,181,194,186,167, 17,116,149,126,188, - 12,192, 96, 48, 96,204,152, 49, 96, 24, 70,136,209,242,224, 51, 64, 81, 20,212,106,181,144, 25,169, 81,200, 80,200, 71,226, 6, - 4,203,191,162,162, 2, 53, 53, 53, 24, 48, 96,128,236,107,152,205,102, 24,141,198,168,240,215,235,245,184,244,210, 75,193,178, -172,215, 64, 17, 95,102, 60,127,113,237,201,239, 11,183, 79, 16, 46,124,149,255, 27,111,188,225,102,204,252,125, 16,115,231,247, -121,254,245,181,141, 32, 8,172, 88,177, 34,178, 6,192, 55, 77,226, 48, 27, 31, 30, 19, 23,162,184,230,151,170,253, 25,134, 65, -109,109, 45,206,158, 61,139, 11, 23, 46,160,190,190, 30, 77, 77, 77,104,109,109,197,250,245,235,163,118, 3,130,229, 15, 64, 16, -127, 65, 65, 1, 72,146, 68,110,110, 46,178,179,179,145,146,146,130,134,134, 6,148,150,150,162,176,176, 16, 44,203,162,160,160, - 0, 70,163,209, 45,189, 72,243,167,105, 26, 44,203,122, 9,198, 83,196,226,138,103,194,132, 9,168,171,115, 61,143,159,158,158, -142,162,162, 34,217,125, 51,241,254, 72,240,151, 42,255,135, 30,122, 40, 40,253,132, 82,121, 70,196, 0,248, 90, 5,144,110,230, -197,191, 41,138,130,201,100, 66,117,117, 53,206,159, 63,143, 95,127,253, 21, 77, 77, 77, 48,153, 76,176, 90,173, 48,153, 76,104, -105,105, 65,115,115, 51, 90, 90, 90,132,245, 13, 27, 54, 68, 69, 60,161,240, 23,131, 36, 73, 44, 88,176, 0,153,153,153,194,182, -126,253,250,161, 95,191,126, 24, 54,108, 24,182,109,219,230,118,124, 52,248,243,254, 49,239,110,249, 18,191, 88, 72,205,205,205, - 24, 60,120, 48,202,202,202, 0, 0,179,103,207,134,201,100, 66,114,114,114,151,138, 31,240, 93,254, 27, 55,110,244, 42, 43,169, -218,125,201,146, 37, 33,247, 37, 67,129,151, 1,240,133,202,175, 7, 34,242,204, 51,207,120, 9,188,165,165, 5,102,179, 25, 44, -203, 34, 62, 62, 30,195,135, 15,199,184,113,227,144,149,149,133,167,158,122, 42,170, 55, 33, 88,254, 0, 80, 87, 87,135,180,180, - 52,228,230,230,186,137,159, 32, 8,193, 13,201,204,204, 68,110,110, 46, 0,215,172, 67,157, 78, 23, 21,254,124, 58, 82,226,103, - 89, 22,143, 60,242, 8,206,157, 59,135,167,159,126, 26,163, 71,143, 6, 73,146,104,105,105,193,196,137, 19,113,246,236, 89,161, - 53,104,110,110, 70, 74, 74, 10, 8,130,192, 47,191,252,130, 37, 75,150, 96,208,160, 65,120,237,181,215,220,198, 64, 60,175, 17, - 46,124,149,255, 35,143, 60, 18,118,237, 30, 13, 35,246,251,141, 48, 57, 68,222,125,247, 93,144, 36,137,129, 3, 7, 98,248,240, -225,152, 52,105, 18,134, 15, 31,142,172,172, 44,100,101,101, 9,145, 21,254, 28, 95, 6, 16,169, 26, 40, 88,254, 0,144,150,230, -154, 65,155,157,157,237,150,134, 39,248,253, 58,157,206,235, 58,145,226, 47,174, 17, 61,111,248,163,143, 62,138,113,227,198,225, -233,167,159,198,242,229,203,145,158,158,142,249,243,231,227,253,247,223,199,132, 9, 19, 96,177, 88, 64,146, 36,178,179,179,177, -101,203, 22,204,159, 63, 31,219,183,111, 7,195, 48,216,182,109, 27, 62,249,228, 19, 44, 90,180, 8,111,190,249,166, 79, 81, 69, - 42, 15, 71,143, 30,133, 74,165,194,165,151, 94, 42,108,235,105,226, 7,100,124, 41, 62, 16, 9, 0, 56,123,246, 44,180, 90,173, -108,193, 69, 83,252,161,240,231,145,146,146, 34,172,123,118,160, 61,247,139,211,143, 52,127, 95,229,200,215,252, 44,203, 98,243, -230,205,248,207,127,254,131, 85,171, 86, 97,225,194,133,152, 51,103, 14, 14, 29, 58, 4,146, 36,113,227,141, 55, 34, 62, 62, 30, -239,188,243, 14, 22, 45, 90,132,212,212, 84,180,182,182,226,134, 27,110,192,174, 93,187,100,151, 71,168, 32, 73, 18, 26,141, 6, - 35, 71,142,132, 74,165, 2,195, 48, 97, 9, 60,154,238,155,223, 47,197,203, 33, 1,192,167,248,125, 21,112, 52,197, 31, 10,255, -134,134, 6,161,195,219,175, 95, 63,159,105, 55, 52, 52, 0,112,189,126,145,166,233,168,240, 7,124, 27,240,223,255,254,119, 44, - 91,182, 12,111,190,249, 38,246,238,221,139,156,156, 28,124,250,233,167, 56,119,238, 28,138,138,138,208,222,222, 14,173, 86,139, -210,210, 82,140, 26, 53, 10,227,199,143, 71, 93, 93, 29,142, 31, 63,142, 17, 35, 70,224,137, 39,158, 16, 2, 16,209,138,194,241, -233,100,103,103,187,137,255,197, 23, 95,116,171, 84, 60,239,145,231, 54,185,251,158,124,242,201,176,248,202, 50,128, 64, 29,143, - 96,172,150, 63, 94,236,131, 71, 18,161,240,231,107,246,210,210, 82,193, 0,196,105,240,253,128,210,210, 82, 0,157,239,208,140, -134,248,253,149,107,118,118, 54, 6, 12, 24,128,111,191,253, 22, 99,199,142,197,209,163, 71, 81, 90, 90,138,178,178, 50,124,253, -245,215,194,224,211,184,113,227, 48,127,254,124,140, 24, 49, 2,173,173,173, 72, 73, 73,193,217,179,103, 17, 23, 23,135, 49, 99, -198, 68,117, 28, 64,156,142,184,230,247,236, 3, 4,186, 55,114,195,185,225,194,103, 31,128,255, 27,168,105, 18,103, 90,174,224, -162, 37,254, 80,249,243, 40, 44, 44,196,176, 97,195,144,153,153, 9,207, 55,230, 85, 85, 85,161,176,176, 48,106,156,197,220,125, - 25, 0, 73,146,184,227,142, 59, 80, 80, 80,128,157, 59,119,162,180,180, 20, 59,119,238,196,158, 61,123,176,114,229, 74, 76,156, - 56, 17, 0,112,240,224, 65, 44, 94,188, 24, 15, 63,252, 48,230,206,157, 11,154,166,177, 98,197, 10, 60,240,192, 3, 81, 31, 7, -224,121,243,127,249,235,189,240,194, 11, 94, 45, 64, 56, 53, 63,191,190,106,213,170,176,184,250, 53, 0, 57,214, 41, 38, 37,199, -114,197,233, 71, 11,193,242,231,111, 12,203,178,216,182,109,155,223,113, 0,241,241,209,230,207,115,228, 56, 14, 38,147, 9, 77, - 77, 77,216,190,125, 59, 22, 46, 92,136,243,231,207,163,172,172, 12,123,246,236,193,247,223,127,143,196,196, 68,225,248,204,204, - 76,204,154, 53, 11,121,121,121,200,207,207, 71, 90, 90, 26,102,206,156,137,119,222,121, 7, 11, 23, 46, 68,106,106, 42,146,146, -146,162,210, 1, 22,243, 23,167,255,232,163,143,202,210, 72, 87,213,252, 60,252,126, 35, 76, 14, 65,241, 57, 93, 21,107,246,135, - 80,249, 3,174,129, 48,185,215,136, 38, 60,203, 53, 55, 55, 23,131, 7, 15,198,132, 9, 19,144,151,151,135, 57,115,230,160,168, -168, 8,187,119,239,198,202,149, 43,221,196,207, 47, 9, 9, 9, 88,181,106, 21,182,111,223,142, 21, 43, 86, 96,198,140, 25,184, -112,225, 2, 94,120,225, 5, 28, 58,116, 8,245,245,245, 56,115,230, 76,196, 91, 0, 95,229,190, 97,195, 6,183,167,191, 60,243, - 41, 62, 55,208, 62,241,181,162,210, 2, 4, 27, 69,233, 14,203,245,135, 80,163, 64, 61, 1, 98, 94, 60,223, 11, 23, 46,160,172, -172, 12, 53, 53, 53,176, 88, 44, 56,114,228, 8, 28, 14, 7,202,203,203, 49,113,226, 68,159,101,158,155,155,139, 87, 94,121, 5, -107,215,174, 69,109,109, 45,110,185,229, 22,104, 52, 26, 24, 12, 6,244,237,219, 87,242,156, 72, 64,170,252, 31,123,236,177, 30, - 85,243,243,136, 72, 20,168, 39,137, 63, 20,254, 86,171, 21,122,189, 94,246, 84, 8,150,101,163,218,154,249, 18, 37,159, 15,146, - 36,161,211,233,132,145,108,127,101, 47,158, 98,236,201, 89, 92, 54,145,230,238,201,107,253,250,245,110,199,120,254, 13,166,230, - 23,167, 19,149, 22,192,147,188, 63, 95,218,243,216,238, 20,127,168,252,245,122, 61, 0,249, 83, 33,162, 45,126,207,114, 77, 79, - 79,199,172, 89,179, 48,113,226, 68,100,103,103,227,198, 27,111,196,169, 83,167, 48,126,252,120, 28, 60,120, 16,153,153,153,146, -121,219,191,127, 63,230,206,157,139,182,182, 54, 24, 12, 6,108,221,186, 21,229,229,229, 56,122,244, 40, 50, 50, 50, 34, 46,126, -207,124,136,185, 44, 89,178, 36,232, 90,191, 43,244, 19,112, 36, 56, 80, 71,210,243,120,241,254,195,135, 15, 99,199,142, 29, 56, -119,238, 28,170,170,170,144,156,156, 28,181,140,132,195,159,135,120, 42, 4,191, 79,106, 42, 68, 87,240, 23,231,163,168,168, 8, - 38,147, 9,205,205,205,120,251,237,183, 65,211, 52, 38, 77,154,132, 5, 11, 22,224,175,127,253, 43,102,205,154, 37, 76,157,230, -243,102, 54,155, 81, 80, 80,128, 3, 7, 14,192,102,179, 97,215,174, 93,104,110,110,198,170, 85,171,144,146,146,130,228,228,228, -168,138,255,224,193,131,160, 40, 10, 19, 38, 76, 0, 0,172, 91,183,206,109,191,191, 26,223,243, 24,127,215,137,120, 11, 16,140, -120,124, 25, 0,203,178,120,235,173,183,208,210,210, 2,131,193,128,182,182, 54, 84, 87, 87, 11,243,237,163,137, 80,248,243,115, -123,196, 83, 33,120,225, 19, 68,231, 56, 0,191, 63,154, 46,144, 84,153,146, 36,137,228,228,100,164,166,166, 98,222,188,121, 88, -182,108, 25,230,206,157,139,172,172, 44, 44, 89,178, 4,121,121,121, 88,181,106, 21,114,115,115, 65, 16, 4,246,239,223,143,130, -130, 2,252,243,159,255, 68, 92, 92, 28,172, 86, 43,182,110,221,138,173, 91,183, 34, 43, 43,171, 75,106,126,154,166, 49, 98,196, - 8, 97, 94,147,248,225,117,185, 46,115, 87,120, 14, 62, 59,193, 82,196,142, 30, 61,138,207, 62,251, 12,231,207,159, 71, 85, 85, - 21,146,146,146,220, 50,205,147, 95,189,122, 53, 42, 43, 43, 49,104,208, 32,180,180,180,160,161,161, 1,109,109,109, 96, 24, 6, -233,233,209,255,250, 81, 48,157, 45,160,115,110,143,212, 84, 7,241,120, 0,191, 63,218,209, 44,127,188,183,109,219,134, 7, 30, -120, 0,141,141,141,104,108,108,196,220,185,115, 49,121,242,100,108,223,190, 29,155, 54,109, 2, 69, 81,152, 59,119, 46, 14, 28, - 56,128,184,184, 56, 97, 0,108,254,252,249,216,188,121, 51, 94,122,233,165,168,243, 39, 73, 18, 87, 94,121,165, 32,126,130, 32, -176,118,237, 90, 33,111,129,254,202, 21,126,212, 91, 0,126, 97, 24, 6,239,189,247, 30,172, 86, 43,226,227,227, 81, 89, 89,137, -154,154, 26, 28, 60,120, 80,200, 48,255,151, 32, 8,124,240,193, 7, 80,171,213,168,168,168,128,213,106, 69, 93, 93, 29,154,155, -155,193, 48, 12,238,186,235,174,176, 8, 7,130,220,154, 69,170,160,197, 83, 33, 60,197,207,239,239, 10,248,226,125,236,216, 49, -212,212,212, 96,198,140, 25, 56,113,226, 4, 6, 14, 28, 8,163,209, 8,173, 86,139,199, 31,127, 28,171, 87,175, 6, 65, 16,176, - 90,173,176,219,237,104,107,107, 19, 90,128,219,110,187, 13, 55,223,124, 51,142, 28, 57,130,177, 99,199, 70,157, 59,224,254,210, -171,101,203,150, 5,236,139,117,101,205,207, 67,214,108,208,127,252,227, 31,168,173,173,245, 91,163,139,201, 27,141, 70, 97, 54, - 32,195, 48,112, 56, 28,224, 56, 14, 79, 60,241, 4, 86,172, 88, 17,245, 76,201, 21, 63, 95,208,252,220, 30,241, 84, 8, 62, 29, - 0, 94, 83, 33,162,237, 2,249,226,189,116,233, 82,188,249,230,155, 48,153, 76, 24, 54,108, 24,190,252,242, 75,188,250,234,171, -184,231,158,123, 48,123,246,108,212,214,214, 10, 17,162, 93,187,118, 9, 51, 66,111,187,237, 54,168, 84, 42, 20, 20, 20,224,193, - 7, 31,196, 15, 63,252, 16, 21,238,190,242,192,183, 0,190,230, 2,137,207, 9,246, 58, 81, 27, 9, 22, 47, 59,118,236, 0, 77, -211,146, 53,250,188,121,243,188, 44,247,221,119,223,197,226,197,139, 81, 93, 93,141,184,184, 56, 36, 39, 39, 99,249,242,229,184, -242,202, 43,195, 34, 43, 23,114,197,207,139,152,159,219, 35,119, 42, 68, 87,185, 64,158,188, 7, 14, 28,136, 79, 63,253, 20,115, -230,204,193,125,247,221,135,161, 67,135, 98,227,198,141,216,182,109, 27, 26, 26, 26,112,251,237,183,131, 32, 8,108,217,178, 5, -205,205,205,216,186,117, 43, 54,111,222,140,155,111,190, 25, 5, 5, 5,248,250,235,175,221, 34, 92,209,230, 47,206,199,242,229, -203,123, 84,205,207, 67, 86, 39, 56, 46, 46, 14,191,252,242,139, 87,141,190, 98,197, 10,183,103, 50,121, 12, 29, 58, 20,159,124, -242, 73,151,102,196, 31,127,127,226, 23, 67,238, 84,136,174,200,131, 20,247,215, 94,123, 13,247,223,127, 63, 62,251,236, 51,172, - 95,191, 30,151, 93,118, 25, 8,130,192,194,133, 11,177,126,253,122,193,144,203,203,203,177,106,213, 42,100,101,101, 97,227,198, -141, 56,124,248, 48, 30,124,240, 65,100,102,102, 98,235,214,173, 81,231, 46, 85,254,207, 61,247, 92,192,217,160,161, 92, 43,106, - 45,128,152,252, 91,111,189,133,199, 31,127, 92,232, 80,137,107,244,238,178, 92,127,144, 35,126, 49,111,222,165,145, 59, 21, 34, -218, 46,144, 47,238,106,181, 26,155, 55,111,246,218,159,154,154,138,195,135, 15, 11,227, 25, 63,255,252, 51, 82, 82, 82,132,227, -198,142, 29, 27,117,183, 39, 80, 30, 30,127,252,113,191, 21, 83,119, 65, 86, 20,104,232,208,161,248,240,195, 15,123, 28,121, 95, - 8, 54, 10, 20,172,152,187, 35, 10,228, 79, 60, 73, 73, 73,104,104,104, 64,159, 62,125, 0, 0, 25, 25, 25,194,227,144,221, 1, - 41,142,207, 62,251,172, 91,222,248,245, 96, 16,137, 26,223, 19, 65, 77,134,235, 13,226, 15,135,191,220,169, 16, 61,137, 63,191, - 93, 60,177,173,187, 70,223,253,241, 95,185,114,101,143,212,143,172, 78,176,191, 8, 74, 79, 68,176,252,121,151, 70,238, 84,136, -174,158, 11,228, 47, 15,190,142,235, 78,244, 38,253,120,221,197,222, 68, 94, 10,161,240,231,197,236, 57, 21, 66,124,156,120, 42, - 68, 87,186, 64,188, 97, 42,226,247,198, 83, 79, 61, 5,167,211, 25, 86, 26,126, 91,128,222, 38,126, 30,161,242,151, 59, 21, 34, -154, 8,165,214,239, 41,226,231,209, 85,250, 9,247,121, 96,192,199, 23, 98,122,179,248,129,224,249,243,225, 77,185, 83, 33,162, - 29, 14,237,205,226, 7,122,151,126,188, 90, 0,135,195,129,138,138, 10, 55,194, 93, 69, 94,173, 86,135,157, 70, 40,252,121,151, -198,243,173, 16,124,220,154, 55, 2,126, 42, 4,127,252,201,147, 39, 35,206,191,181,181, 21,167, 79,159,246, 18,141,167,224, 61, -183, 69, 2,221, 85,254,145, 66, 40,252, 9,113, 13, 55,105,210,164, 11, 54,155, 45, 42,223,137,149, 11,141, 70, 83,183,119,239, -222,144,102,204,245,118,254,185,185,185, 23,236,118,123,175,229,223, 27,203,159,240, 28,242, 87,160, 32,150, 16,253,167,212, 21, - 40,232,193, 80, 12, 64, 65, 76, 67, 49, 0, 5, 49, 13,197, 0, 20,196, 52, 20, 3, 80, 16,211,240,249, 90, 20, 5, 10, 34,141, -142,239, 8,239, 6, 48, 58, 90,215,160,105,186,174,176,176, 80,118, 24, 84, 49, 0, 5, 93, 2,254, 35,218, 29,223, 65, 70,113, -113, 49, 50, 50, 50,220, 62,184, 46,158, 99, 37, 30, 56,147, 90,247, 28, 88, 35, 8,215,179,208, 51,103,206, 12,106, 28, 66, 49, - 0, 5, 81,135,248, 11,242, 83,166, 76, 25, 2, 0,197,197,197,104,111,111, 71,124,124,188,240,145,108, 57, 19,255,252,237, 63, -115,230, 76,208,220, 84, 6,131,174,192,102,179,175, 96, 24, 86,150, 49, 16, 4, 97,231, 56,174,128,227,184,213, 65, 95, 45, 10, - 48, 24, 12,227,108, 54,219, 88,134, 97,228,246,103, 88, 0,197, 28,199, 29,142, 38, 47,185,232,237,252, 3,129, 23,255,186,117, -235, 52, 83,167, 78, 29,194,111, 39, 73,210,109, 78, 85, 32,113,203, 53,140, 96, 65,218,108,246, 21,101,199,143,170, 28,118, 43, -228, 44,167, 78,158,112, 0, 8,127, 26, 94,132, 96,179,217,198,158, 56,254, 51,105,183,183, 66,206, 82, 94, 94,206, 2, 24,215, -221,188,121,244,118,254,254,192,139,127,237,218,181,218,105,211,166, 13, 17,239, 19,127,161, 51, 28,241,139, 91,141, 80,160, 98, - 24, 86,149, 57,120, 8,218, 90, 27,193, 50, 76,199,230,206,233, 17,158, 19, 37,250,165, 39, 95, 0, 48, 52,164,171, 69, 1, 12, -195,144,131, 6, 15,134,205,218, 4,198,193, 4, 60, 62, 35, 61,197, 10, 32, 62,250,204,228,161,183,243,247, 5,177,248,167, 79, -159, 62,216,115,191,248,219,192,225,136, 63,220,217,166,130,219,195, 48, 78,176,172,143,135, 11, 68, 86,192,114,108,224,187,212, - 13, 96, 28, 12, 88, 56,164,119,138,102, 47, 51,140,179, 71, 78,126,234,237,252,197, 8, 36,126, 0,194, 23,238, 1,223,143, 81, -134, 98, 24,193,194,197,128, 47, 82, 78,188,112,194,199,154,221,254,113,172, 10, 64, 59, 65, 16, 25, 65, 95, 45,218, 96,221, 23, -134, 95,208,185,128, 98, 9, 0, 12, 65, 16,134,238, 35,234, 3,189,157, 63,220,125,126, 95,226, 7, 0,141, 70, 35, 25,201,241, -116,107,130, 53,140, 96,161, 2, 0, 83,115, 29, 74,246,125,140, 54,107,179,203, 22, 56, 81,165, 47,172,187, 86, 40, 74,213,103, -241,226,135,219, 55,108,120,169, 74,165,162,132, 99, 68,135, 19,158, 27, 57, 14, 94,204, 56,142,115,219, 70,145,164, 83,163, 85, - 61,211,218,106, 43, 8, 54, 19, 45, 77, 23, 81, 82,184,195,229, 70,248, 59,144, 5, 8,138,210, 45, 94,252, 16,179, 97,195,198, -255,199,127,209, 92, 26,157, 41, 49,140, 55,127, 79, 80, 20,197,106, 52,228,161,214, 86,251, 79,242,153,187,208,219,249,243, 16, - 71,123,196, 29, 94, 0,176,217,108,168,172,172, 68,117,117, 53, 26, 27, 27,161,213,106, 37,133, 28,110, 71, 56, 88,168, 92,153, - 39, 96, 48,104, 65,145,122,240, 66,119, 25,130, 32,125,215, 95,215,111,227,194, 63,206,197, 99, 15,223, 15,134,115,181,205, 4, -231, 29,155,237,140,215,138,174,198,111,115,219,228,250, 85, 85, 85,165,186,114,194,140, 21, 0, 10,130,205,132,154, 36, 97, 52, -106,161,166,244,194, 54, 22, 0, 24,119, 57,117,252, 82,255,247, 31,111,192, 99, 15,255, 5, 12,239, 91,116,252,161, 36, 10,208, -109, 11,229,181, 91,216, 88, 93,125,134, 28, 63,225,234,177, 0,130, 22, 80,111,231, 47,112,102,217,221, 27, 54,108,160,243,243, -243,135,176, 44,139,218,218, 90, 28, 63,126, 28, 39, 78,156, 64,125,125, 61,226,227,227,145,156,156,140,132,132, 4, 24,141, 70, -183,126, 64, 36,250, 2,161, 64, 5, 0, 78, 39,139, 22,147, 21,214, 86,139,203,245,225,247,186,173, 11,255,225,208,193, 47,161, -209,197,129, 36, 41,247, 22, 2,238,221,103,183, 71, 13,196,173, 4,231,214, 58, 0,224,208,212,220, 2,150,149, 23,138,245,132, -131,101,209,210, 98,133,213,106, 6, 24,248,169, 69, 93, 74, 41, 41,250, 18, 90,109, 7,127,184,185,216, 34, 48, 96,124, 61,249, - 40,113,129,166,150, 22, 4, 17,202,116, 67,111,231, 47,194,232,236,236,108,108,218,180, 9,229,229,229,160, 40, 10,105,105,105, - 72, 73, 73, 65,255,254,253, 65,211, 52, 84, 42, 21,104,154,134, 86,171,133, 74,165, 18,250, 2,145,234, 8, 7, 11, 21, 0,144, - 20, 1,131, 65, 3,138,208, 74,138, 83,122,221, 9,116,116,218,196, 45, 4, 33, 58,151,112,115,131, 56,209,118,215, 89, 28, 0, -162, 35, 93,130,179, 7, 77,158, 7, 69, 2,250, 56, 13, 72, 82, 15,136, 98,203,110,247,159, 17,254,235,248,223, 33,240, 39, 37, - 78, 96, 1, 80,110,189, 79,183, 63,240, 82, 17,107, 11,145,125,239,231, 47,134,217,108, 70, 92, 92, 28,242,243,243,145,152,152, -232,226,231,241, 14, 80,181, 90, 13,154,166,161,209,104, 64, 81, 20, 24,211,175, 40,127,249,143,176,212,158,130, 46,181, 31,250, - 93,115, 31,250, 95,243,167,174,139, 2, 49, 78, 22, 38, 83, 43,172, 22,139, 80,143,187,215,222,156,100,205, 46, 54, 10,215,111, - 79,227,113,107, 56, 60,210,117,191,134,217,210, 22, 52,121, 30,140,131,129,185,197, 2,171,197,210,113,203, 61,110,174,140, 90, - 21,112,211,158,248, 84,209,201,190, 83, 49,155,219,229,145,149, 64,111,231, 47,134,193, 96, 64, 78, 78, 14,152, 14,247,173,211, - 21,238,124, 11, 31, 69, 81, 80,171,213,194,223,218,239,223, 69, 60,247, 43, 38,255, 97, 38,172, 86, 59, 14,125,253, 50, 90, 43, - 15, 35,235,191, 94, 4,225,225, 38, 69, 58, 10,212,209, 2,144, 48,232, 52, 32, 56,109,199,102,119,113,250,111, 21, 60,143,247, - 45,114, 78,212,187,246,236, 99,216,237, 97,188,223, 69, 77, 65,175,215, 0,208,116,110,115,171, 13,189,107, 66,247, 85,207,218, - 80,114,213,245,203,171, 38,117,193,102,243, 17,194,148,131,222,206, 95, 4,222,197,145,122, 17,174, 88,180, 20, 69, 9,211, 31, -250, 78,188, 25,199,254,253, 22, 26,207,213,162,239, 37,227,144, 55, 39, 13, 71,126, 44,198,145,167,102,227,210,165, 31, 65,147, -144, 42,187, 35, 28, 52, 95, 0, 96,156, 12, 90,204,109,104,181, 88, 0,248, 18,185,184, 54,247, 45,108,241, 73, 82, 29,105,222, -245, 17,210,233, 88,111,181,134,222, 2,176, 14,166,195,135,118,241,247,245,214, 18,198,253, 63, 63, 9,138,255,120, 39, 38,149, - 78,123,123,232, 46, 68,111,231, 47, 6,239,215, 3,238, 31,200, 16, 11,223, 51,220,105, 24, 48, 18,163,150,126,140,146,231,239, -192,104, 7, 48,224,242,201,184,252,154, 25,168,248,169, 8, 63, 45,155,140,203, 86,236, 68,220,160, 75,162,210, 17,118,181, 0, - 36, 9,189,222,213, 2,136,197,233,202,132,235, 64, 95,181, 55,159,209,206, 51,208,233, 50,137,211,233,248,143,115, 75,164, 51, - 93,135, 35,244, 22,128,164, 40,232,245, 90,184,213,160, 0, 14, 20,151, 99, 79,225, 73,152,173, 54, 56,108,237,176,182, 59, 96, -179, 57,208,222,110,131,205,214,142,246,246,200,212,122, 60, 58,110,238, 66,169,125,106,181,154,205,201,201, 42, 43, 46, 62,246, -227,111,141,191, 24, 4, 0, 10, 53, 0, 0, 17,191, 73, 68, 65, 84,226,112,164, 88,160,156,195,134,179,239, 46,131,233,248,143, - 96,108, 54,112, 28,235,210, 9,203,186,214, 1, 16, 36,137,159,127, 58, 9, 34, 33, 3, 3, 46, 25,133,161,227,174, 66,124,114, - 18, 74,158,156,133, 81, 15,252, 19,125,175,156,237, 55,252, 25,122, 11,192, 48, 48,153,172,104,181,180,186,251,254, 98,209,139, - 5,223,241,191,103,132, 72,236,239,187, 27,140,111,215,135, 95, 55,183,134,238,131,178, 12,131, 22,139, 21, 86,179,213,109,251, -158,194, 50,124,248,225,199, 72, 77,237,214, 55,117, 0, 0,206, 84,158, 33,115, 46,155, 48, 18,128,151,128,122, 59,127, 49,196, -174,136, 88,164, 23,190,122, 13,134,246, 26, 92,126,211,181, 80,209, 52, 8, 82, 5,130, 82,117,252,165, 0,130, 2, 8,210,181, -168, 52,224,156, 54,192, 97, 69,159,223,141, 64, 94, 82, 31, 28,120,253, 47,104, 61,187, 8, 67,127,191, 68, 82,252, 97,183, 0, - 6, 61, 13,112, 90, 55,113, 30, 58,114, 26, 63,236, 43,131,181,205, 14,155,205, 1,187,221, 1, 91,199,226, 90,119,194,102,115, - 8, 29,158,112, 65,146, 36, 75, 16,132,228, 80, 63, 65, 16,109, 28,199,173,224, 56,238, 5,175,243, 0, 24,245, 26,128,209,186, -109, 87,171, 73,164,166,166,162,241,226, 47,112, 48,145,173, 45,131,133,181,165, 30, 14,135, 67, 50,204, 24,152,127, 25, 88, 38, - 50,157,212, 80,225,143,191, 39, 60, 13,128, 36, 73,176,246, 54,232,245, 58,208,176,129, 96, 24,128, 83, 1,156, 26, 32, 85,224, -160, 5,152, 86,128, 84,185, 12,193, 97,117,233, 80,173, 5,156, 54, 24, 18, 19, 48,249, 15, 55,163,248,203,119, 96,169, 60,138, -203, 22,191, 3,130,144, 14,157, 6,139,206, 22,192, 98,133,197,212, 10,113,205,190,191,184, 28,239,125,176, 3,169, 41,169, 65, - 39, 28, 34,124, 22,112, 77,109,141, 46,123,212, 21,107, 0,120, 25,128,131,101,209, 98,182,194,220, 98,133,187,127, 76,129, 1, -224,112,216,224,112, 88, 61, 79,235, 82,248,187,190, 63,254,252,185,172,163,123, 13, 32,152,242,147,234,244,166, 77, 91,128,202, - 45, 15,227, 68,201,215,110, 35,161, 36,165,198, 37,179,254,128, 65,253,141, 32,193,130,160, 84,112,201,128, 5,199, 56, 1, 16, - 0, 99,135,154, 0, 38,220,112, 61, 14,253,251, 59, 28,255,231, 99,184,116,209,139, 97,139, 31, 16,181, 0, 58,157, 6,156,211, -229,131,242, 46, 11, 77,107, 92,239,200,175, 43, 5,227,236,222, 27, 96, 51, 91,224,112, 58, 37,223,125, 71,145, 36,244,122, 53, -224,112,241,231, 71, 72, 53, 90,254,240,224, 90,168,214,214,118,234,182,249, 75,238,254,240,221,181, 91, 12, 6,173,159,147,131, - 72,215,207,161,254,248,243,145,127, 70,162, 51,235, 15,255,251,229,143,253,223,125,239,139, 73,167, 42,170,178,109,237,118,131, -205,238,212,165, 36,199,159,203, 28,216,175,226,134, 27,166, 29,188,243, 15,215, 86, 6,149,160,204,172,250,234,164,234,210, 6, - 35,123,249, 78,161, 69,176, 55,212,162,116,253,157, 24, 49, 97, 50, 50, 6,247, 1,103, 51,129,160,104, 16,201, 67, 65, 14,201, - 7, 17,159, 1, 16, 36,184,230, 42,176,167,190, 1,123,254, 48,208,214,136, 49, 83,167, 96,239,206, 93, 56,251,245, 88,100,206, -186, 39, 44,241, 3, 66, 11,192,194,108,178,194, 98,110,117,243,203,217,142,206,137,211,209, 6,167,195, 51, 74, 35,233,169, 68, - 13, 38, 83,179,207,125, 12,203,194,220, 98,133,197, 98,113, 15,110, 48,162,152, 95, 16,110,218, 29, 11,150, 46, 56, 89, 94, 53, -238,142, 5, 75,153,207, 62,220,176, 37, 84,206, 98,176,126, 4, 28, 73,254, 53,181, 23,181,127,186,255,111,127,172, 56, 83,227, -245, 45,212,139,191, 54, 13,190,248,107,211,224,162,146,210,233,255,243,254, 23, 7, 86, 63,185,104,199,232, 81,195, 77,225,242, -247,132,191, 89,158, 36, 73,194,124,234, 39,148,191,122, 31, 46,159,115, 35,146, 18,105,112,173,191, 2, 42, 45,136, 33, 83, 64, -101,205, 1, 33,126, 52, 50,109, 52,200,190,163,192,156,248, 2,206, 35,219, 65,181,215, 99,252,172, 25,216,243,246,227, 24,116, -245, 93, 32,213, 26, 95, 52,228,113,117, 17, 38,160,215,209,208,235, 53, 48,232, 53, 48,232,181,208,235, 53,208,105, 93, 31, 93, -115,205, 10,101,187,117, 1,231,251, 6,184,106, 80, 23,103, 99,199,162,215,107,160,213,187,124,106,214,115,154,165,159,101,233, -170,141,147, 79, 85,156, 29,195,113, 28,121,170,226,236,152,165,171, 54, 78,150,123,174,255,197,183,128, 35,201,255,238, 69, 79, -221, 35, 37,126, 15, 16,199,203,206, 76, 88,176,240,169,197,199,126, 41,143, 15,151,191, 91,194,126, 98,244, 36, 73,226,226,143, - 31,161,226,159,127,193,132,155,111, 69,146,222, 14, 88,235, 93,247, 54,126, 0,136, 97,215,130, 97, 89,148, 86,214,227,227,255, -156,196,182, 47, 75,241,195,207, 53,176,218, 28,192,240, 89,224,172,141,112,254,252, 62,232,243,133,232, 51,112, 16, 46,150,124, - 35,139,147, 63,116,182, 0,150, 54,152, 76, 86,239, 57, 59, 28,231, 34,232, 71,128, 82,224, 34,220, 66,112,254,106, 80, 7,139, - 22,139, 21,150, 22, 15, 63,149,101,248, 89,101, 96,101,220,192,175,191, 61,144,254,213,238,125,179, 29, 14,167, 14, 0, 28, 14, -167,238,171,221,251,102, 79,155, 58,182,252,154,233, 87, 93, 8,135,191, 63, 4,230,223,241, 83, 70, 30, 30,252,243,109, 59, 31, - 91,246, 82, 54,195,176,234, 97, 67, 7,254,116,253,156,188, 31,114, 39,142, 62,103,212,235,156,187,191, 43, 26,180,235,243, 31, -243, 78, 85,156,189, 2, 0, 76,230,214,190,119,223,255,183,135,118,127,254,210,179,241, 70, 67,120, 95,154, 16, 65, 42, 10, 68, - 18, 4, 42,223, 43, 64, 91,121, 33, 38,221,124, 19,104,219,175,224, 28, 78, 16, 36, 5, 16, 12,184,193,249, 96, 88, 14, 21,231, -154,241,213,193,106, 56, 25, 22, 37, 39, 47,226, 84,109, 51,254,235,250, 81, 88,112,205, 72,112, 19, 31, 1,202,191, 2,103,185, -136,126,253, 47,195,217,221, 91,208,239,170,235,194,226,218,209, 7, 32,160,213,209, 96,156,180, 56,242, 9,157,150,239, 19,116, -198,106, 35,135, 32, 13,196,223,245, 41, 64,175,209,128,213,187,119, 17, 52, 26, 45, 4,217, 4,160,223,216,100, 86, 63,249,244, -230, 63, 89, 90,219,220, 62, 18, 96,105,109, 75,121,242,233,205,127,186, 98, 76,246,218,228, 36, 99,200,161, 36,198,223, 55, 5, -252,242, 7, 0, 6,172,204,231,144,174,187, 58,247,220,161,146,147,111, 3,192,202,165,127, 44, 18,239, 27,122,247,128,227,247, -221,125,243,241,213, 27,222,249,105,235, 59,159,255, 23,199,113,100, 83,147, 57,163,224,239,111, 78,222,176,250,193,239,252, 38, - 44,243,155, 8,158, 97, 80, 62, 2, 84,250,210,221, 48,210, 44,174,186,118, 26, 40,214,138, 54, 58, 29, 78, 66,131, 56,107, 57, - 8, 16, 96, 13,253,192, 57,157,216,247,203, 5,156,107,104, 69,113,217, 5, 88,218, 92,197,253,225,119,229,184, 53,111, 48, 52, -125,115, 64, 18, 36,184,182, 38, 36,100,196,227,248,225, 34,127, 84,100,129, 4, 92, 45,128,197,210, 14,147,169, 13, 45,102, 43, - 76, 29, 11,195,176,252, 67, 48, 81, 88, 56, 25,139,251,241,190,192, 50, 12, 44, 86, 43,204,102, 27, 90,204, 86, 97, 17, 68,195, - 6,110,226,231,221,179,234, 79,109,109,237,241, 6,131,174, 65,156,182,193,160,107,104,107,107,143,159,119,207,170, 63,185,218, -145,208, 22,191,179,121,252,242,103, 59,140,199,247, 98,179,181,147, 31,124,188,123, 48,255,123,229,210, 5, 69, 43,151, 46, 40, -242,117,252,242, 71,230,149,204,156,118,197, 78,254,250,223,124,123,112,142,205,214, 78, 30, 63, 81, 97,252,223,175, 10,251, 75, -157, 19, 76, 24, 65,236,242,216,155,206,227,231, 85, 87, 35, 61, 85,143,156,241,217,160,156,173,104,110,105,199,119, 91, 94, 3, -107,109, 2, 8, 10, 28, 99, 7,227,116,130, 97, 24,212,254,106,198,247,135,207, 10,226, 7, 0, 45, 77, 1, 28, 11,135,195,193, - 95, 0,148,154,134,163,205, 18, 4, 43,105, 8, 45,128, 78,171,134,211, 78, 67, 60, 98,165,211,209, 29,235,209,104, 1,130,131, - 63, 3, 32, 41, 10, 26,173, 26, 14,155, 26, 64,103, 45,170,215,119,214,160,129,198, 42, 62,255,120,237,107,252,250, 37,227,230, -189,206,175, 23,239,217,252,184,112, 80, 56,227, 29,126, 78, 13,151,255,226, 21, 47, 79,255,110,207,161,217,159,127, 85,184,247, -173, 77,203,254, 69,146,100,192,230,245,169,199,239,253,246,187, 61, 37,215, 57,157,140,166,221,102,143,159,124,237,253,171,218, -172, 54,227, 93,119,206,122,103,214,204, 43,207,121,243,151,159,119,222, 0,218, 47, 86,225,216, 51, 55, 32, 39, 63, 15,233,125, -227, 0,214,137,186, 11, 45, 56,242,159,239, 17, 55, 96, 4, 28,173, 45, 32, 18, 40,112,237,173, 96, 27, 78,161, 13,122, 12,239, -175,135,231,173,158, 62,166, 31, 24,198, 9,212,254,228,242, 4,212,122,216, 29, 28,116,201,225, 15, 16, 10,125, 0,139,165, 13, - 38, 97, 36,210, 53,215,135, 97, 59,134,171, 59,106,227,238,132,191,235,179, 12, 3,171,217, 6,179,104, 36,149, 5, 58, 69, 35, -199, 7,242,157,122,136,231,201, 79, 71, 30,127,105, 56,156, 78,162,168,228,196, 4,155,221, 17, 87,244,211,241, 25, 87,223,240, -240,224, 87, 95,124,236,141,172,161, 3, 37,171,199,186,186, 70,205,194,191,174,157,223,216,104, 74,227, 56, 78, 8,183, 52, 55, - 91,250,245,237,147,120,250,209, 7,239,240,241,186,149,224, 92, 32,130, 32, 80,254,250,159,145, 51,121, 18,210, 18, 9,112,148, - 26, 85,167, 47,160,226,200, 49, 92,185,250, 59, 92, 60,248, 57, 26,203,191, 66,106,223, 75, 0,243, 5,224,135,213,176, 93,251, - 38, 38,100, 37,225,246,252, 76,124,123,164, 14,118, 39,131,137,151,244,193, 13, 19,250,195,225,112, 64,115,240, 69, 0, 0,153, -152,137,230, 38, 51,146, 70, 78,148,197,201, 31,132, 22, 64,163, 85, 67,111,231,163, 62, 0,192, 65,175,227,127,247,132, 22,192, -247,245, 73, 0,106,173, 26,250,142, 56,186,203, 93,101, 93,177,117,184,220, 8,132,250, 44,127,132,222, 1,224,207,135,247,207, -223,181,238, 75,128, 79, 63,251, 86,110, 83,179,185,159,235, 60, 86,117,238,124,253,136,187,238,253,219,226,249,183, 95,253,241, - 3,247,221,122,212,243,248,180,180, 68,219,204,169,227, 14,190,251,193,238,223, 51, 12, 43, 52, 55, 36, 73, 58,243,115,199,252, -232,235, 58,193, 56, 65,188, 1, 56, 77,191, 34,121,192, 36,112,156, 29, 39,142,156, 64,253,197,102,140, 95,179, 7,234,184, 68, - 12,152, 62, 31,251, 62,127, 5,131, 71,143, 6, 89,251, 19, 84,109, 77,208, 22,254, 29,230, 43,151,226,150,220,254,184, 37,183, -127,103, 95, 2, 44,212, 7, 95,132,186,250, 63, 0,169, 2,219,111, 28, 78,254,239,247,152,180,250, 37,217,156,124,193,245, 68, - 24,223, 7,224,107,160, 14, 3,112, 58, 88,215,143, 16,162, 64,129, 16,108,140,200,159, 1, 56, 88,192,106,110, 71,139, 91, 20, -133, 5,239, 50,178,108,176,195, 72,226, 84, 34,133, 80,249,119, 60, 14,239,195,128,246, 20, 30,201, 19, 63, 73, 71, 81,164,131, - 86,171,108,223,252,231,167,241,183,221, 56,229,100, 90, 90,146,215, 52,207, 7, 22,222,116,244,218, 25, 87,156, 89,244,240, 11, - 11, 47,212, 53, 13,101, 89, 86,149,152, 24,119,126,229,210,187, 10,125, 26,170,204,130, 16,183, 0,241, 35,115,113,224,255,190, -129,195,106,129,113,216, 21,184,252,111, 31,128, 82,187, 30,134, 87, 27, 18, 48,112,246, 66, 84,252,242, 3, 70,102, 92, 1,166, -226, 27,196, 29,123, 11,244,133, 98, 88,114, 22,194,158,154, 3,150,160, 64, 55, 28, 69,220, 47,111, 67,115,126, 31, 0,128, 28, - 48, 30, 53,181, 77,232,115,217, 12,196,101, 12,151, 71,202, 15, 68,125, 0, 26, 14, 59,237,166, 76,157,142, 6,135,158,209, 2, -120, 57,134, 34, 80, 36,160,213,171,225,112,184, 71, 81,244, 90,181,104, 80, 41, 68,254,161,158,231,153,140,223,145, 96, 63,252, -225,106, 17,164, 6,162, 54,188,252,209,101, 45, 45,173,125, 19,227, 13,231,155, 77,173,253, 0,128, 32, 8,246, 95,239, 61,189, -142,143, 88,249, 26,192, 26, 54,180,191,229,203,157,107, 94,184,247,254,231,111, 62,114,180, 98,210,149,151,143,216,175, 86,147, -156,111,165,203, 47, 7,222, 0, 70,222,247, 50,172, 53,101,160,141,201,208,166,244,247, 26, 23, 24, 50,247,207,248,254,254,215, -144,144,156,139,126,163,255, 0,230,196, 23,160,235,127, 70,242,183,127,145, 40, 36, 26,212,176,153,104,114, 38,224,196,193,111, - 49,125,211, 33,217,124,252, 65, 5, 0, 44,195,194, 98,109,135,217,220, 57,218,203,193,213, 55,112,245, 1,196,157,208,174, 29, - 1, 22,248,248, 49, 64,134,101, 97,182,218,208, 98,113,143,163, 59,120,241, 50,242, 7,114, 0,128,166, 85,173,118,187,211, 0, - 0,159,127, 85, 56,224,250,107,175,170,113,187,158,236,148,228,157,229,151, 63,223,127,145,176,160,236,172,204,139,255,179,121, -121,193,144,193,233,173,185, 87, 63,180,166,221,102,143,119, 58, 25,205, 83,207,108,157,254,226,154,251,191, 10,196,136, 2,184, - 45,175, 60,250,201, 71, 59,247,148,220, 48,103, 98,181, 63, 43, 13,102,194,163, 56, 10,100,204, 28,229,123,254,190, 70,135,188, -117, 63,160,248,239, 55,163,185,111, 50, 70, 92,182, 0,196,133, 18,112,230, 11,224,204,231, 1,150, 1, 17,151, 6,194,216, 15, - 68,122, 14, 42, 79,159, 71,229,177,125,200, 91,243,111,104,147, 67,250,142,159, 23, 72, 0, 32, 72, 2, 90,141, 10, 58, 45, 13, -157, 86, 13,173, 86, 13,157, 70, 13, 93, 71, 13, 20, 94,248, 50,130,163,193, 62,115, 65, 66,175, 38,161,215,104,161,215,168, 59, -151, 14,254, 12, 24,183,119,235, 4, 90, 18,226, 13, 23,249,164, 55,109,222,117,227,174,175, 14, 12, 16,239,143, 56, 2,241,103, -164,121, 94, 61, 99,220,185,225, 89, 3,205, 42, 90,205, 78,155, 50,230, 11, 62,185,127,239, 57,124,211,154,141, 31, 93,238, 43, -127,207,108,120,255,202,191,173,251,159,171,248,223,183,220,148, 95,169,162,213,172,191, 50,145, 11, 57, 79,110,137,247,233, 82, - 51, 48,121,195, 62,112, 41, 35,241,227,174,175, 80,209,148,136,166,164, 60, 48, 87, 60, 0,118,194, 35,104, 73,191, 6, 85,214, -126, 40,252,247, 65, 52, 90, 40, 76,127,245,103,196,103, 70,238,131,229,157, 45, 64,107,187,240, 92, 46, 63, 25,206,238,100, 59, -126, 69,218, 5, 10,190, 21,241,123,125, 7, 11,139,213, 6, 75, 71, 13,202,223, 48,135,184,214, 10,226,227,214,151,102,255,238, -208,183,123, 14, 13, 1,128,170,179, 23,115,150, 63,185, 57,103,249,147,155, 37,143,253,185,240,245,255,150,151,106, 56,252, 25, -255,231, 3, 88,185,100,222, 15,251, 15, 30,159,220,212,108,201,224, 56,142,220,182,253,235,255,222,187,239, 88,241,245,215,142, -255,113, 90,126, 78,181,213,106, 87,237, 59, 88,218,255,139,221, 69,147, 43, 78,159, 31, 7,128,163,212, 4,179,244,161,219,139, -195,230,239,129,160,223,240,160, 82, 35,231,254,141, 48,159, 45, 67,195,177, 31, 81,115,120, 55, 26,190,221, 14,142,113, 34, 41, -235, 10,164,140,189, 6, 99,110,204, 67,210,240,200,191, 18, 85, 5,116,180, 0,180, 26,118,173,218,109, 50,156, 94,199,191,227, -170,179, 19,220, 53, 14,144,212, 85,252,143,164,106,212,106,104, 52,158, 62, 52,127, 86,112, 46,208, 51, 79, 44,248,230,250,219, - 43,198, 53, 52,154, 50, 3, 31, 45, 51, 93,127,209, 36, 57,252, 3, 68,163,140,122,218,185,105,195, 3,255, 88,248,224,139,139, -205, 22,107, 95, 0,168, 56,125,238,138, 23, 95,221,121,197,139,175,238,148, 58,133,248,225,199, 99, 19,150, 62,248,123,153, 6, - 16,222, 92,160, 64,207,242, 18, 4,129,132,204,108, 36,100,102,227,119,215, 73, 62,148, 22, 21,144, 4, 65,176,237,237, 54,180, -181,219, 97,182,180,193, 98,105,131,197,226,106, 13, 56,182,195,165, 97,157,238,147,210,162,190,112, 94,139,211,233, 4, 65, 16, - 82, 86,192,217,218,219, 97,181, 57, 96,177,182,187, 22, 75, 59, 44, 22,107,135,102, 92, 35,136,193, 44, 52, 77, 50,255,122,119, -229,154,105,121, 57,159,244, 73, 77, 56, 67,171, 85,173,190, 10, 80,110,154, 86,215, 51,183, 82,150, 29,144,191,220, 80,236,168, -145, 3, 77,111,188,244,192,186,145,195, 7,236,247,113, 45, 1, 67, 50,211, 15,189,254,210,131,210,205,154,143,124, 6, 74,147, - 71, 40,226, 15,103, 74,115, 56, 80, 25,244,154, 95, 79,148,157, 72,235,155,214, 31,214,214, 70, 97, 46, 16,195, 48, 72, 73, 27, - 8,198,233,128,169,165, 81, 56, 33,208,135,181,229,124,119, 59,208, 68, 57,207,107,112, 28,135,242,138, 90,104,181,244, 89,207, - 99, 13, 6,109,123, 89, 89,185, 46,173,111, 63, 88,173,141, 66, 69,197,178, 14,100,244,205, 0,227,112,160,165,165, 62, 48, 41, - 15, 16, 20,152,167,159,152,255, 21, 0,191,157, 73,171,156,135,201, 89, 6,149,213,231,161,211,209, 94,134, 20,144, 63,203,160, -197,220, 36,155,247,144,193,233,166,173,175, 63,186,101,231,231,251,190,251,191,221,197,227,107,106,235,135, 54,183, 88, 50, 84, - 42,170, 77,163, 81, 91,134, 14, 78, 47,253,253, 13,121,123,103, 76,205, 57, 7, 0, 86,171,188, 7, 93, 42, 42,206,195, 32,193, - 95, 10,189, 69,252, 0,160,210,106,212, 37, 31,239,216, 49,251,207,247,223,139,227,165,135, 93,115, 50, 88, 14, 14, 7,131,153, -179,167,163,169,241, 28,204,226,232, 68, 32, 3,144,113,209,192, 70,228,109, 0,133, 7,142,183, 51, 12,187,207,243, 88, 61, 77, -215,239,248,100,199,192, 69,139,238, 69, 89,217, 97, 48, 14, 7, 28, 44,224,112,176,152, 49,107, 38,154,154,106, 96,181,118,239, -195, 60, 96, 89, 20, 30, 56,193,112, 28, 91,231,185,203, 47,255,235,102,162,165,177, 86, 38,127,247,198,241,154,233, 99, 42,175, -153, 62,166,210,215,209,178, 12, 87,148,244,190,226,147, 12, 35,193,223, 19,189, 73,252, 0,160,210,171,201,191,124,188,227,179, -147,191,191,245, 22,234,206,187, 30,193,201,178, 18, 48, 12,131,172,145, 99,209,167, 79, 95, 28, 41,250, 20,182,246,206, 41, 18, -129, 16,168, 5, 8, 36,126,169, 99,206,214,214,227,227, 79,247, 58,236,118,231,147,158,199, 38, 16,170,189, 31,237,248,236,246, - 91,111,185,137,184,253,174, 71, 81, 94, 86, 2,134,113, 32,107,228,229,232,155,154,134, 35,197,187,130,124,229, 71,228,227, 60, -181,181,245,248,104,231, 94,214,225,112,122,249,219,126,249,167,245, 67,217,225,207, 96,179,186,119,142,187, 26,213,213,245,120, -127,199, 30, 73,254, 82,144, 35,252, 80, 94,100, 27, 13, 16, 28,199, 97,208,160,212, 69, 13,245,150,141,119,222,113, 3, 53,247, -250,235,144, 53,252,119,104, 53,215,227,116,121, 17,236,182,206,218, 95,142,120, 3,217,136, 44, 3, 0, 7,134, 97,113,225, 98, - 51,142, 28,171,108,219,249,249, 65,134, 97,157, 15, 57,157,220,155, 82,199,103,102,166,100,215,215, 91, 39,253,191, 59,230, 18, - 55,204,189, 14,195,135, 14,133,213, 90,143,202,242, 98,180,183,119,207,179,192, 44,203,224,124, 93, 11, 74,142,156,113,238,216, -181,143,115, 56, 28,251, 56,142, 43,147, 58,182,147,255, 77,196, 77,115,175, 67, 86,214, 96, 88,173, 77,168,174, 40,129, 35, 66, -252,131, 53, 30,150,101,112,254,124, 19, 14, 29, 57,229,124,239, 95,254,249,243,184,226,138, 43,184, 3, 7, 14,192,102,179,117, -139,248, 79,158, 60,137,121,243,230,161,184,184, 88,118,179, 66,240,130, 76, 72, 72, 24,166,166,216,151,219,237,206,203,172, 86, - 91, 31,241, 68,169,238, 0, 65,128,165,105,245, 89,150,101,247, 57, 28,204,147, 28,199,157,244,119,124, 74, 74, 74, 60,197, 57, -243,172,118,123, 74,107,107,187, 22, 8,252, 74,240, 40,131,211,209,116, 43,199,178,117,237, 78,103, 49,199,113, 45,254, 14,238, -237,252,129, 78, 3,176,219,237,221, 82,243,135, 98, 0,194, 28,146,150,150,150, 83, 0,102, 69,133, 89, 23,160,161,161,193, 4, -224,139,128, 7,246, 80,244,118,254, 60,236,118, 59, 78,157, 58, 37,233,231, 71,219,237, 81,171, 37,223,153,224, 23,202,103, 82, - 21, 68, 12, 26,141,166,110,242,228,201,221,250, 22, 47,141, 70, 19,176,163, 46, 6, 33,203,175, 87,160,224, 55,138,158,209, 21, - 87,160,160,155,160, 24,128,130,152,198,255, 7,109, 43,244, 49, 78,182, 48,112, 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, 0,192, 0, 0, 0,192, 8, 6, 0, 0, 0, 82,220,108, 7, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, + 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, + 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, + 0, 32, 0, 73, 68, 65, 84,120,156,237,125,121,156, 20,197,221,254, 83,125,205,204,206,206, 30,236,194, 94,200,130,200,181, 34, + 32, 40, 1,228, 88, 48, 70, 64,209,168, 81,140, 33, 26, 77, 66, 98,242,198, 55,106,162,198, 11,242,198, 68, 5,209,188,106,140, + 49, 94, 16,125,127, 49, 30,241, 74,226,145, 40,162, 34,114, 9,114, 45,187,171, 92,123,176,176,247, 28, 59, 71,119,215,239,143, +217,158,237,233,233,158,233,185,150,197,237,103, 63,179, 51,221, 93, 93,245, 84,245,243,173,250,214,209,221,132, 82, 10, 11, 22, + 6, 43,152, 19, 77,192,130,133, 19, 9,203, 0, 44, 12,110, 80, 74, 35, 31, 0,203,149,143,178,109,240, 93,222, 27,110,154,230, +252,114,245,249,234, 56,213,219,218,223,122,233,234,241,136,119,142,206,113, 35,142,186,113,197,137,191, 60, 1,199,242,120,101, +160, 87, 38,154,253,137,226, 55,228, 19,111,127,162,242, 77,230,250,104, 63,218,178,141,163, 15,109,222,116,243, 26,175, 76, 12, +174,109,204,183, 94,124,102, 62, 81, 45, 0,165,244, 9,245,119, 28, 92, 72, 41,125,130, 82,186,205, 96,255, 19, 0, 64, 8, 89, +174,108, 19, 66,150, 43,129,212,191,141,210, 85,199, 99,246, 28,147, 28,117,161,141, 95, 21,247,133, 70,156,180,199, 53,233, 62, + 97,176, 29, 21, 78, 57, 95,155, 31,163, 50,209, 73,207,112,191,230,120, 76, 89,153,189, 62, 58, 72, 84,182, 23,234,149,157,118, + 59, 81,153,196, 3, 33,164, 28, 64,115,130,248, 18, 34,161, 11,100, 80, 24,111, 18, 66,150,247,146, 72, 26,218, 2, 55,147,174, +153,115,210,225,152, 10,167,222,237, 55,147,224, 20, 55, 62,147,225, 99,210, 75,151,135, 22,122, 6,161,124,122,119,197,148,173, + 65,217, 24,114, 52,202,123, 18,101,114, 33,165,244,141, 20,206,139, 66, 66, 3,208,179, 42, 74,105,147, 89, 75, 77, 38, 94, 19, +233,154,182,240, 84, 56, 38,203, 41,219,101, 96, 16, 62,233, 22, 32, 21,232,181,198,170,150, 36,166,108, 13,202,198,144,163, 81, +222,147, 40,147, 55, 9, 33, 75, 82, 56, 47, 10, 92, 42, 39,169,107, 2, 29, 82,203, 21, 66,234,154, 36, 89,130,169,158,151, 12, + 71,157, 99,122,113,196,212, 90, 9, 56,189,169, 9,167,221,206, 56,122,227, 87,220, 17,211,249, 75,245,250,152,141,223, 76, 28, +137,210, 53, 10, 71, 41,109, 34,132, 92,152, 40, 92, 66, 30,212,154, 7,176, 48,136, 97, 13,131, 90, 24,212,176, 12,192,194,160, +134,101, 0, 22, 6, 53, 44, 3, 72, 3,132,144,242, 84,135,223, 44, 12, 16,232,204,242, 37,154, 89, 77,102,182, 54,238, 57,113, +102, 0, 19,206,226,170,247,233,165, 29,143, 71,170,233, 26,229,217, 12, 95,163,176,122,113,170, 57,105,243,169,141, 83,111, 59, +206,185,134, 51,172, 38,174,101,170, 51,227, 70,231, 37,154, 65,143, 59, 99,159,169, 79, 50, 6,160,187, 95,239, 98,152, 61,199, + 40,141, 68,225, 18, 8, 44, 33,143,116,210,213, 11,147,204,121,102,202, 49,153,112,102,242,145,236,117,137, 87,134,102,211, 72, +182,172,147,201, 95, 38, 63,105,185, 64,169,204,214,154,156, 1,204,202, 76,179, 94,124, 25, 74, 55,153,243, 18,206,162, 26,193, + 76,184, 84,103,139, 51,113, 45,227,165, 77, 77,142,207,167,122,205, 83, 69, 90, 6,160,151,169, 68, 25, 53, 58, 78,163,103, 30, +179, 53,211,108, 52,139,154, 86,186,201,156,167, 23,214,172, 56,204,132, 51,226,145,136, 95, 38,174,101,188,180,147, 89,226, 96, + 50, 92, 70,160, 59, 19,108, 48,171, 22, 51,163,105, 98,246, 45,149,115,226,206, 52,166, 56,211,252,102, 18,181,167,110,186, 41, +158, 23, 51, 43,171, 23,214,160,140, 50, 58,139,171,153, 45, 54, 74,211,204,117, 73,106,102, 60, 78,126,227,149,149,118, 59, 42, +108,111, 43,113,161,217,138, 35, 30,172,153, 96, 11, 39, 29,146,113,169, 18,198,101, 25,128,133,193, 12,107, 30,192,194,160,134, +101, 0, 22, 6, 60, 8, 33, 89,115, 83,190, 18, 6, 96,205,200,126,181, 65, 41, 37,218,125,132,144,106, 66, 8, 85,125,170, 83, +141, 92,119,210, 2,250, 51,140,166,238,201, 84,109,155,189,183, 51,238,236,168,222,121, 6,124,210,186, 87, 89,143,115,162, 60, +105,227, 78,162,108,226,206,160, 38,251, 1, 80, 13,128, 2,168,238,221,166,170, 99, 84,249,214,134, 49,216,214,134,167,154,180, +180,219,134,105, 39,147,190,122,159,118, 91,179,175, 90, 47, 13,117, 60,166,203, 77, 79,252,102,127,107,191, 19, 29, 79,244,173, +151,150, 25,110,201,156,103, 54, 47,233,114, 55, 83,142,241,226, 73,250, 66,170, 68,166, 21,146,217,111,163,184,140,210, 50,155, +118, 42, 60,140,210,208,132,175, 86, 11,223,136,111,188, 79,202, 46, 80,178,247,128, 38, 64,202,179,163,137,226, 73, 6, 26,206, +111, 26,140,123,235,230, 41, 25,238,217,114,215,180,190, 50,165,148, 36,242,159,123,143,207, 87,111, 83,149,203, 97,214,255, 54, + 74,155,106,220, 23,189,244,212,219, 70,113,107,227,233,197,251,148, 82, 66, 41, 93,111,134,163, 30, 82, 54, 0,154,220, 61,160, + 17, 49,233,137,136,166, 49, 59,154, 40,158, 36,207,127,130, 82,218,164,196,165,254, 86,113, 50,138,219, 52,247, 84,242,102, 6, +122, 34, 49, 16,142,246,248,251,128,190,208,204, 26,131,217,180,213,233,233,109,107, 17, 71,252, 0, 48, 63, 45,255, 31, 58, 51, +193, 52,205,251, 68,245,206,161,225,251, 55,163,190,245,206, 69,242,247,223,234,114, 64,156, 89, 70,154,230,189,202, 58, 48, 53, +203,172,199,147,234,204,252,102,114,146,199, 32,237,184, 53,174, 34,114, 69,116,154,237,249,102,106,108, 19,233,255, 90,239,152, +186,197,210, 51, 60,213,190,249, 42,195, 80,243, 76,154,151, 53, 17,102,225,164, 68,111,173,175,110, 57,230,167,226, 10, 89, 6, + 96, 97, 80,227, 43, 49, 15, 96,193, 66,170,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 1, +129, 61,211, 8,221, 51,141,208,221,103, 71,143,233, 43,251,247, 76,139,158,131,216,125, 54,169,214,134,215,134, 49,131,148,158, + 13,106,193, 66,166,113,250,182,240, 24,127,175,136,137,222, 49, 53,136,140,247, 79,223, 70,137, 18, 62, 21,241, 3, 86, 11, 96, +161,159,160, 8, 52,158, 80,247, 76, 35,148, 50,177,147, 89,122, 45, 3, 0,236,158, 70, 86, 42,191,245,140,196, 12,172, 22,192, +194,128,192,158,105,132,234,137, 56, 94,203, 48,113, 27, 93,185,103, 26, 89,145, 78,186, 86, 11, 96,161, 95, 64, 25,204, 87,215, +240,122, 45,129,218,215, 87,127,235,157,167,141, 47, 85, 88, 51,193, 22, 6, 53,172, 22,192,194,160,134,101, 0, 22, 6, 53, 44, + 3,176, 48,168, 97, 25,128,133, 65, 13,203, 0, 44, 12,106, 88, 6, 96, 97, 80,195, 50, 0, 11,131, 26,150, 1, 88, 24,212,176, + 12,192,194,160,134,101, 0, 22, 6, 53, 6,213, 98,184,233,211,167,151,202,178,252, 46,128,137,217, 74, 67, 16,132,150,141, 27, + 55,150,102, 35,238, 49, 99,198,216, 10, 11, 11,103, 72,146,228,202, 70,252, 0,192,243,124, 96,211,166, 77,239,102, 43,254,129, +134,164, 12,224,100, 22, 80, 47,247,247,215,172, 89, 35,204,155, 55, 15, 91,183,110, 69, 69, 69, 5,236,118, 59, 88,150, 5, 33, + 4, 12,211,215, 32, 18, 66, 98,126,171,247,233,237,247,249,124,248,250,215,191, 94,146,105,238, 64, 88,252, 5, 5, 5, 51,239, +187,239, 62,102,193,130, 5,216,190,125, 59, 42, 42, 42, 32, 8, 2, 56, 46,124, 25, 89,150, 53, 60, 63,222, 49, 0,224, 56, 14, + 62,159, 15,213,213,213,182,140, 18, 31,224, 48,109, 0,122, 2, 42, 47, 47,143, 8,136, 97, 24, 16, 66,116,133,163,254, 29,111, + 95,182, 4,164,112,127,224,129, 7,108,243,230,205, 27, 5, 0, 91,182,108,129,223,239, 71, 94, 94, 30,120,158,143,201,131,250, + 99,180, 95,123,236,203, 47,191,204, 52,117, 0,125,226,191,255,254,251,153, 5, 11, 22,228, 0,192,230,205,155, 49,121,242,100, +184, 92, 46,112, 28, 7,150,101,163, 68,174, 24, 5,208, 39,126,245, 62,245,126,229,251,192,129, 3, 89,225, 63,144, 97,202, 0, +244, 4,180,105,211, 38, 76,154, 52, 9,121,121,121,224, 56, 14, 28,199, 69,137,193,232,119,188, 99,217, 16,144,194,125,245,234, +213,182,234,234,234, 81,202,126,134, 97, 32,203,114,148, 17, 38, 35,124,163,227,153,134,158,248,129,176,104, 37, 73,130,122, 91, + 65, 42,226, 31,172, 72,104, 0, 70, 2,226, 56, 14,178, 44, 3,136, 21, 79, 42,226,207,134,128, 20,238,171, 86,173,178,207,159, + 63,127,100, 84,198, 57, 46,101,241, 27, 29,203, 52,140,196,175,240, 87,144, 9,241,107,195, 12, 22,196,205,117, 60, 1, 41,133, +151, 41,241, 43,219,153,130,154,251,130, 5, 11, 70,106,143, 43,126, 63,165, 52, 35,226,207,180, 17,196, 19,191,194, 95, 11, 75, +252,201,195,112, 24,212,140,128, 24,134,137, 18, 80,186,226,207,148,128, 18,113, 87,248,171,211, 76, 87,252, 12,195, 68,117,162, +211, 65, 34,241, 43,252,141,220,151, 84,197, 63, 24,221, 33, 93,211, 55, 35, 32,197,133, 80, 4,148, 9,241,103, 66, 64,106,151, + 77,219,106,169, 97,179,245, 13,118,100, 66,252,153, 50, 96, 51,226, 7,140,107,109, 75,252,201, 33,166, 20,205, 10, 72, 16, 4, + 0,136, 18,110,186,226, 79, 87, 64,234,206,186,186,191, 2, 0,129, 64, 0, 7, 15, 30,196,225,195,135,209,214,214, 6,135,195, +145,208,157, 49,227,242,104,143,167,131,120,226, 15, 4, 2, 56,112,224, 0, 14, 31, 62,140,142,142, 14,228,228,228,196,136,217, + 18,127,242,136, 42, 41, 51, 2, 58,116,232, 80, 68, 64,106, 55, 98, 32,248,255,178, 44,191,251,224,131, 15, 10,115,231,206, 29, + 37,203, 50, 26, 27, 27,177,119,239, 94,212,214,214,162,181,181, 21, 46,151, 11,133,133,133, 40, 44, 44,140, 12, 31, 42,174,203, +137, 22, 63, 0, 20, 22, 22,206,120,224,129, 7,152,185,115,231,230, 72,146,132,198,198, 70,212,212,212,160,174,174, 46,138,127, + 65, 65, 65,132,191, 90,248, 64,122,226, 31,140,134, 16, 85, 90, 70, 2,218,191,127, 63,142, 31, 63,174, 43,160, 76,250,255, 25, +112,129, 38, 86, 85, 85,225,177,199, 30, 67,109,109, 45, 56,142, 67, 73, 73, 9,138,138,138, 80, 94, 94, 14,158,231,193,243, 60, + 4, 65,128,221,110, 7,207,243, 81,121, 72,197,229,209,126,210,129, 36, 73,174,170,170, 42,252,225, 15,127, 64, 93, 93, 29, 88, +150, 69,105,105, 41,138,139,139, 49,105,210,164,136,216,109, 54, 27,108, 54, 91, 84, 63,128,101, 89, 75,252, 41, 64,235, 2, 77, +156, 48, 97, 2, 30,125,244,209,168, 11, 48,100,200, 16, 76,158, 60, 25, 28,199,129,231,121,216,108, 54,216,237,246,132,227,255, +253,237, 2, 1,128,219,237,134,211,233, 68,117,117, 53, 10, 10, 10, 0,244, 77,180, 41,105, 8,130, 16,201, 7,195, 48, 49,147, + 96,233,244, 5,210, 69,119,119, 55, 92, 46, 23,230,205,155,135,194,194, 66, 0,177,162,213, 26,129, 94,127,192, 18,191, 57,196, +148,156, 34,160,121,243,230, 33, 63, 63, 63,170,102, 83,220, 5,165, 22, 85,215, 66,122,174, 68, 42,134,145, 46,156, 78, 39,166, + 76,153, 2, 73,146,148, 55, 10, 70,226, 85,210, 82, 12, 89,201,139,194, 61,149,137,175, 76, 27,176,211,233,196,228,201,147,163, + 38,185, 20,168, 69,173, 22,191,214, 8, 82, 17,191, 82,153, 13, 54,196,228, 88,239, 2,104,107, 80, 69, 64, 44,203, 70, 4,148, +169,254, 64,218, 25,226, 56, 8,130, 16, 51,203, 11,244, 93,108, 69,236,138,225,198, 91, 6,145,108, 95, 32, 93, 40, 21,139, 40, +138, 9, 93,154, 76,138,127,176, 34, 38,231,106, 1,169, 71,119,212, 23,122,229,159,254,131,173,123, 26, 33,245,206, 4, 39,139, + 93,175,222,105, 40,172,116,161, 94, 23,163,204, 81,196, 91,162,145,168,230,239,239,142,176,222,186, 30, 61, 49,235,137,215, 18, +127,242,208, 53, 0,165, 86, 49, 18,208,189, 55, 44, 70,107,167, 15,247, 61,253, 30,182,239,107,140,156,251,238, 19,215, 35, 47, +215, 17, 21,182,189,203,135,250,195,199,241,228,203,159, 96,219,222,195, 0,226, 15,151,166, 11,181, 47,158,138,128,211, 57,150, + 41,104,125,114,189,213,158,153,232,240, 14,118,241, 3, 58, 51,193,132,144,136, 75,160,184, 58,138,127,168, 30,118, 43, 45,206, +195,143, 46,159, 21,117, 46,167,114,131, 20,129, 20, 23,230, 98,230,148, 83,241,212, 61,203, 48,103,218,105,225, 68,179, 56, 19, +156,140,128, 51, 41,254, 76, 27,129,130,254, 18,127,188,153,229,175, 50,116, 13,192,172,239, 62,178,124, 72,116,100, 44, 99,120, + 30,203, 48,184,254,202,185, 9,211,200, 4,210,173,217, 79,228, 40, 80, 60,119, 71,189, 79,217,159, 41,241, 15, 86,232,182,129, +137, 46,188,242,219,229,180, 71,157,199, 38, 24, 9,154, 50,254, 20,124,109,210,168,126, 17,191,153,124,100,234, 88,166,196,175, + 32,153,149,158,201,134,177,196, 31,141, 24, 3,208, 19,144,217, 81, 27, 51, 35, 65,107,239,253, 94,214,196,175,206,131,154,191, + 89, 1, 15, 4,241,171, 97,137, 63,251, 48,108, 1,128,248,190,186,222,133,103,152,248,226,207,102,205,175,199, 63,219,226,207, + 84,199, 93, 11,163, 78,176,246,152, 37,254,244, 97,216, 7, 72,228,255,235, 93,124,197, 5, 82,135,189,121,213,203,253, 46,254, +100, 4, 60,208,196,175,133, 37,254,236, 66,183, 5, 72,217, 5,226,162, 93,160, 64, 72,194,134,173,117,134, 98,202, 22,140, 90, +176, 76,186, 60,150,248,191, 26,208,237, 3,168, 93,136, 68,174,140, 26,108,239,113, 81,146,113,172,205,141, 63,189,248, 17,122, + 2,161,126, 23,127,188, 78,240,201, 32,254,120,162,181,196,159, 89,152,238, 3,152,153,184,154,116,201,111,117, 19,233, 47,241, +107,249,103, 82,252,153,156,171,136, 7,173, 72, 45,241,103, 23,134, 45, 64, 60, 97, 24,137, 97,247,107,119,129, 97, 24,136,146, +140,150,214,110, 60,254,183, 15,241,242, 59,219, 7,132,248, 51,213, 17,238, 79, 88,226,207, 62,116,199,239,146, 89,200,166,119, +158,192,115,168,172, 40,198,138,159, 46,129,195,198,247,187,120,146, 21,183, 37,254,193, 11,221, 22, 64,249, 78, 36,126,173, 40, +180,199,114,236, 2,230,127,109,124,191,139, 39,211, 46,143, 37,254,175, 46, 12,251, 0,102,196,175,103, 0,218,243, 30,189,235, +170,126,201,136,154, 67, 38, 93,158,254, 22,191, 26,102,132,109,137, 63, 61, 36,116,129,226,137, 95, 43,142,254, 28,237,137, 7, + 75,252,150,248,205, 34, 97, 39, 56,153, 97,208,129, 32,254, 84,133,111,137,127,112, 34,238, 98,184,100,135, 65, 7,130,120,180, + 60, 82,237, 11,156,104, 88,226,239, 31,152, 90, 10, 97, 36,126,143, 47, 16,117,174,199, 23, 24, 16,226, 57,153,197,175,119,111, +174,122,201,179, 37,254,204, 34,169, 97, 80,237,144,225,129,198,182,168,243,234, 15, 31,239, 23,210,241,112, 50,139, 95, 15,137, +214,251,107,143, 89, 72, 14,166,111,136,209,138,165,177,165, 19, 15, 62, 27,253, 34,145,251,159,252, 23,234, 15, 31,235, 55,242, + 70,208, 51, 86, 75,252, 22,244, 96,106, 24, 84, 43,150,111,255,226, 73,124,182,239, 72,204,121, 91,118, 29,196, 55,190,255, 16, +198,159, 90,138,191,220,255,125, 20, 21,228,102, 61, 3,122, 72,101,236,127,160,193, 18,127,255,192,112, 53,104, 60,255,255,111, + 15,253, 40,242,123,160, 33,149, 81,160,129,134,100,110,115,180,144, 30,210,186, 39,120,160,226,100, 22,191, 2, 75,252,253, 3, + 93, 21, 91,226, 63,177,176,196,223,127, 48,188, 39,248,100, 20,191, 2, 51, 35, 64, 39, 3, 44,241,103, 31, 9,159, 10,113,178, +137, 63, 24, 12,162,190,190, 62,102,189, 82,127,136,159,231,249,180,227, 16, 69, 17,117,117,117, 0,250,223, 0, 6,163,145,197, + 24, 64, 40, 20, 66,125,125,125,148,224,251, 75,252,233, 10,200,102,179,181,204,153, 51, 39, 43,239,233, 77,134, 67,170,231, 58, + 28,142,192,172, 89,179, 78,232,123,122, 29, 14, 71, 32,113,168,175, 14,136,242, 4,101, 0, 56,231,156,115,142, 6, 2,129, 19, + 46,160,143, 63,254, 56, 43,111, 90,183, 96, 65,139, 40, 3,176, 96, 97,176, 97,224, 59,245, 22, 44,100, 17,150, 1, 88, 24,212, +176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168,145,212, 43, 66,122,223, 35,252, 46,128,137, 89,226, 3, 65, 16, + 90, 54,110,220,152,149, 97, 80,139,127, 98, 12, 54,254,166, 13, 64,121,137,246,154, 53,107,132,121,243,230, 97,219,182,109,168, +168,168,128,205,102,139,122,215, 46,128,152,111, 51,191, 9, 33,232,233,233,193,130, 5, 11,178, 50, 15,161,240,239,125, 15,242, + 73,203, 95, 41,255,173, 91,183,162,188,188, 60,242,182, 72,189, 39,117,104,103,189, 19,229,203,237,118, 99,209,162, 69,131,170, +252, 77, 25,128,250, 13,242,243,230,205, 27, 5, 0, 91,182,108, 65, 32, 16, 64, 94, 94, 94,212,139,221,146, 93,138,172, 62,246, +197, 23, 95, 36,195,221, 52,212,252,231,206,157,123, 82,243, 87,202,255,147, 79, 62,193,196,137, 19, 77,243, 55,147,143, 3, 7, + 14,100,157,255, 64, 43,255,132, 6,160, 38, 95, 93, 93, 61, 74,217,207,178, 44,100,213, 91, 34, 83,185, 9,165, 63,238,202, 74, +196, 95,153, 8, 28,232,252, 87,175, 94,109, 88,254,137, 4, 98, 70, 68, 39,170,252, 21,156,168,242,143,107, 0,170,194,183, 87, + 87, 87,143, 84, 31, 83, 22, 78, 81, 74, 51, 70, 62,211, 23,192, 12,127, 32,115,133,159, 45,254,171, 86,173,178,207,159, 63, 63, +134,191,146, 94, 38,132,159,141,167, 94,159, 12,250, 49, 28, 5, 82,147,215, 22,190,146,129, 84, 11,190, 63,150, 41,127, 85,248, +175, 90,181,202,190, 96,193,130, 24,254,106,193,102, 74,252,131,177,252,117, 91,128, 68,228,149, 12, 24, 93,132,116,158,199,153, + 9,124, 85,248, 27,137, 31, 8, 47,149, 78,100, 4,169,184, 69,153,228, 31,175,252, 95,127,253,117, 20, 22, 22, 70, 58,193,122, +121, 81,126,107,191,149,223, 12,195,224,214, 91,111, 77,171,252, 99, 12, 64,227,179,233,146, 7, 0, 65, 16, 98,246,165, 42,158, + 76, 54,191, 95, 21,254,171, 87,175,182, 25,137, 7, 0,108,182,190, 85,211,201, 26,113,188,227,153,226,159,168,252,151, 46, 93, +138, 83, 78, 57, 5,121,121,121, 16, 4, 1, 60,207,199,140,102,245, 71,249, 71, 25,128, 81,135, 5, 0, 2,129, 0, 14, 30, 60, +136,195,135, 15,163,189,189, 29, 57, 57, 57,113,239, 28, 75,150,124, 38, 46, 64, 42,252, 91, 90, 90, 34, 15,163,170,172,172, 76, +200,191,190,190, 30, 64,216,119,157, 48, 97, 66,191,241,247,251,253, 56,120,240, 32, 14, 30, 60,136,214,214, 86, 56, 28,142,148, + 90,169, 68,199,179,197,223,227,241, 96,199,142, 29,216,190,125, 59,246,236,217, 3,183,219, 13,167,211, 9, 65, 16, 34,163, 64, +102,107,126,117, 11,240,171, 95,253, 42, 45,254, 81, 6, 32,203,242,187,189,227,180,163,100, 89, 70, 99, 99, 35,246,237,219,135, +253,251,247,163,173,173, 13, 46,151, 11, 67,134, 12, 65, 97, 97, 33, 92, 46, 87,100,252, 54,149,103,240, 24,237, 79, 7,169,240, +223,182,109, 27, 46,187,236, 50,188,241,198, 27, 16, 4, 33,174,112, 8, 33,216,184,113, 35,174,189,246, 90, 60,243,204, 51, 56, +253,244,211, 51,206,191,119,156,127,148, 44,203,104,104,104,192,222,189,123,177,127,255,126, 28, 59,118,204,176,252, 7,130,248, +147, 41,255, 69,139, 22,161,160,160, 0, 46,151, 11, 57, 57, 57,176,217,108,145, 22,160,191,245,163,117,129, 38, 86, 85, 85,225, +177,199, 30, 67, 93, 93, 29, 88,150, 69, 73, 73, 9,138,139,139, 81, 81, 81, 1, 65, 16,192,178, 44,108, 54, 27,236,118,123,164, +230, 76,165,179,146,165, 38, 56,105,254,219,183,111,199,103,159,125, 6, 66, 8, 74, 74, 74,162,120,168,239,136, 83,190, 63,249, +228, 19,108,220,184, 17, 0,240,195, 31,254, 48, 43,252, 31,125,244, 81,212,214,214,130,101, 89, 12, 27, 54, 12, 69, 69, 69,152, + 52,105, 18,120,158, 7,199,113, 17,254,202,118, 38,196,159,237,242,255,248,227,143, 35, 2,231, 56, 14, 60,207, 71, 68,175,180, + 0, 64,252, 26, 95,123,140, 16,130,219,111,191, 61,163, 6, 0,143,199, 3,151,203,133,234,234,106, 20, 20, 20,196, 36,200, 48, + 76,132,188, 50, 11,169,231,187,165,218, 34,164,139,100,249,111,221,186, 53, 50, 23,176,105,211, 38, 0, 97,247, 70,249,104,183, +213,251,178,193,223,237,118,195,225,112, 96,206,156, 57,200,207,207,143, 49, 72,165,188, 5, 65,136, 24,180,153, 73, 48, 51,198, +145,205,242,255,233, 79,127, 26, 83,254,118,187,221,208,255,239, 47,253,196, 24, 64, 78, 78, 14, 38, 79,158, 12, 73,146, 34, 23, + 89,129,146,176, 98,193, 44,203,130,231,249, 24, 23,232, 68,118, 36,147,229, 95, 95, 95,143,134,134, 6, 12, 31, 62,220,116, 26, + 30,143, 7,185,185,185, 89,227, 63,105,210,164,168, 73, 58,109,139,148,168,252, 83, 17,127,134, 90, 0,195,242,127,226,137, 39, +162,106,112,181, 49,107,107,251, 68, 53,191,250,247, 29,119,220,145, 86,249,199, 24,128, 98,157,138,107,163, 71, 64,177, 86,245, +183,182, 48, 37, 89, 66,243,177, 6, 52, 30, 61,130,150,214,163,104,235,108, 69, 87,119, 7,124, 61, 94,252,230, 23,107,178, 34, +158, 84,248, 3,136,136,127,229,202,149, 96, 24, 6,179,102,205, 66, 85, 85, 21,138,138,138,208,214,214,134,189,123,247, 98,227, +198,141,144,101, 25, 43, 87,174, 68,110,110,110, 84,124,153,228,207,113, 28, 4, 65,128, 44,203, 81,252,245,202, 75,237,126,206, +152, 49, 3, 71,143, 30, 5, 0,148,150,150, 98,203,150, 45, 9, 13, 67,207, 56,210,133, 81,249,255,252,231, 63, 79, 74, 63,253, + 85,121,198, 24,128,226,147, 17, 66,116,155,121, 45, 89,183,183, 27,141, 71, 15,163,165,181, 25,173,157,199,209,217,213, 1,143, +183, 27, 61, 1, 31,186, 61,221,232,118,119,161,203,221,137,110, 79, 23,186,221, 93,232,118,119,226,158, 95, 62,152,181, 11,144, + 44,127, 53, 24,134,193,213, 87, 95,141,202,202,202,200,190,178,178, 50,148,149,149,225,180,211, 78,195,186,117,235,162,194,103, +131,191,250,241,232, 70,110,150,242,173,124, 58, 59, 59, 81, 89, 89,137,125,251,246, 1, 0, 22, 45, 90,132,238,238,110, 20, 21, + 21,245,171,248, 1,227,242,127,228,145, 71,162,202,220,168,118,191,229,150, 91,146,106,193,210,205, 67,140, 1,168,107, 70, 51, + 68, 30,122,234,183, 81, 2,239,114,119,162,219,221, 5,143,207, 13, 89,150,225,114,230,225,212,202, 49,152, 50, 97, 26, 70,143, + 28,139, 85,127,252,117,220,248,210, 69,178,252, 1,160,165,165, 5, 37, 37, 37,152, 53,107, 86,148,248,149,139, 8, 0,149,149, +149,152, 53,107, 22, 0,160,167,167, 7, 14,135, 35, 43,252,181, 34, 81,127,100, 89,198, 77, 55,221,132,166,166, 38,252,230, 55, +191,193,196,137, 19, 65, 8, 65,103,103, 39,102,206,156,137, 35, 71,142, 68, 90,131,206,206, 78, 20, 23, 23,131, 16,130,221,187, +119,227,150, 91,110,193,136, 17, 35,240,248,227,143, 71,220, 38, 61, 65,165, 11,163,242,191,233,166,155, 50, 54, 82,152, 73,253, +196,125, 81,182, 25, 34,127,123,243, 57, 48, 12,131,138,146, 83,112,106,229, 24, 76,159,114, 14, 70,143, 24,131,209, 35,199, 98, +204,200,113, 24, 86, 92, 26, 21, 94, 49,128,108, 93,128,100,249, 3, 64, 73, 73,120, 5,109, 85, 85, 85, 76, 28,106, 40,199, 29, + 14, 71, 76,252,153, 52, 0, 61,254,132, 16,220,124,243,205,152, 54,109, 26,254,231,127,254, 7,191,250,213,175, 80, 90, 90,138, +101,203,150,225,175,127,253, 43,102,204,152, 1,143,199, 3,134, 97, 80, 85, 85,133,103,159,125, 22,203,150, 45,195,115,207, 61, + 7, 73,146,176,110,221, 58,188,242,202, 43,184,254,250,235,241,244,211, 79, 27,138, 42, 19, 32, 36,188, 50, 51, 47, 47, 15,165, +165,225,165,249,253, 33,254,140, 24,128,222, 5, 72,212,235,222,245, 78, 3,108,130,205, 52,193,108,139, 63, 89,254, 10,138,138, +138, 34,191,181, 29,104,237,113,117,252,153,228,175,196,171, 23,127,115,115, 51, 46,190,248, 98,200,178,140, 39,159,124, 18,235, +215,175,199,221,119,223,141,229,203,151,227,130, 11, 46,136, 12,231, 94,124,241,197,200,203,203,195,186,117,235,112,253,245,215, +163,184,184, 24, 94,175, 23, 23, 93,116, 17, 94,127,253,117, 67, 81,101,210,128,135, 14, 29,138,138,138, 10, 4,131, 65,200,178, +156, 49,129,103,186,242, 76,216, 2,152,233,120,152, 21,191, 81,211,158, 73,241,164,194,191,173,173, 45,210,225, 45, 43, 43, 51, +140,183,173, 45,252, 70,156, 80, 40, 4,158,231,179,194, 95,207,128, 21,190,247,220,115, 15,110,187,237, 54, 60,245,212, 83,248, +248,227,143, 49,121,242,100,188,246,218,107,104,106,106,194,230,205,155,225,247,251, 97,183,219,177,111,223, 62,156,126,250,233, +152, 62,125, 58, 90, 90, 90, 80, 83, 83,131,113,227,198,225,206, 59,239,196,154, 53,107,116,203, 67,175, 66, 72, 39, 15,133,133, +133, 81,226,255,253,239,127, 31, 85,169,104,243,169,253, 54,179,143, 97, 24,220,125,247,221,105,149,127, 92, 3, 48,211, 52,169, +201,153, 21, 92, 54,197,159, 10,127,165,102,223,187,119,111,196, 0,212, 92,149,126,192,222,189,123, 1,244, 61,194, 49,219,252, +181,124,171,170,170, 48,124,248,112,188,247,222,123, 56,243,204, 51,177,107,215, 46,236,221,187, 23, 53, 53, 53,120,251,237,183, + 81, 95, 95, 15,150,101, 49,109,218, 52,124,247,187,223,197,184,113,227,224,245,122, 49,100,200, 16, 28, 57,114, 4, 46,151, 11, + 83,166, 76, 73,120,125, 50,197, 95, 93,243,223,116,211, 77,105,213,238,217,154,193, 54,124, 58,180,242, 59, 17, 17,117,184, 84, + 12, 38,211, 72,133,191,130,141, 27, 55,226,180,211, 78, 67,101,101, 37,180, 79,204, 59,116,232, 80,100, 6, 88,157, 86, 54, 16, +207,128,175,188,242, 74,172, 92,185, 18,175,190,250, 42,246,238,221,139, 87, 95,125, 21, 27, 54,108,192, 93,119,221,133, 25, 51, +102, 0, 0, 54,111,222,140, 95,252,226, 23,184,241,198, 27,113,209, 69, 23,129,231,121,220,113,199, 29,184,225,134, 27,250, 69, +252,122,229,255,208, 67, 15, 69,141, 10,169,243,153,108,205,175,109, 1,210,129,169, 62, 64, 60,129, 43, 68,204, 90,180, 54,141, + 76, 35, 21,254,202,133,145,101, 25,235,214,173,139, 59, 15,160, 14,159, 77,254,234, 15,165, 20, 93, 93, 93,232,232,232,192,243, +207, 63,143,229,203,151,163,185,185, 25, 53, 53, 53,216,176, 97, 3, 54,108,216, 16, 53,107, 92, 89, 89,137,133, 11, 23, 98,246, +236,217,152, 59,119, 46, 74, 74, 74,112,222,121,231, 97,221,186,117, 88,190,124, 57,138,139,139, 81, 88, 88,168, 59, 79,144, 41, +254,218,188,220,124,243,205, 25,237,236,102,170,252,211, 30, 5,210,134, 51, 35,184,108,137, 39, 29,254, 64,120, 34, 44,153,248, +179, 5,109, 13, 58,115,230, 76,140, 28, 57, 18, 51,102,204,192,236,217,179,177,120,241, 98,108,217,178, 5,239,190,251, 46,238, +186,235,174, 40,241, 43,159,130,130, 2,172, 88,177, 2,207, 63,255, 60,238,188,243, 78, 44, 88,176, 0,205,205,205,120,232,161, +135,240,217,103,159,161,173,173, 13, 7, 14, 28,200,138,168,244,202,255,193, 7, 31, 52, 60,174,221,103,230,152,242,157,241, 22, + 64,143, 68, 42,157,218,108,142,244, 36, 66,178,252, 7, 18,244, 42,150,163, 71,143,162,166,166, 6, 13, 13, 13,240,120, 60,216, +185,115,103,228, 61, 2, 51,102,204, 48, 44,251, 89,179,102,225,209, 71, 31,197,170, 85,171,208,216,216,136,203, 46,187, 12,130, + 32,192,233,116, 98,216,176, 97, 89,187, 62,122,229,255,203, 95,254,114, 64,213,252, 10,226,186, 64,102, 8,170,207,233,111,242, +122, 72,133,191, 50,177,101,118, 41, 68, 54, 93, 32, 37, 15,218,188, 40,219,138,219, 98,183,219,117, 39,156,180,253, 45,189, 69, +114,218,178,202,180,248,245,202,255,129, 7, 30,208, 13,147, 74,205,175,142, 39, 43, 45,128,150,124, 60,129,171, 73, 39, 90,119, +210,159, 72,134,191, 50,177,101,118, 41, 68,182,197,175, 45,215,210,210, 82, 44, 92,184, 16, 51,103,206, 68, 85, 85, 21, 46,190, +248, 98,212,215,215, 99,250,244,233,216,188,121,115,228, 70, 30,109,158, 55,109,218,132, 37, 75,150,160,167,167, 7,185,185,185, +120,246,217,103, 81, 91, 91,139, 93,187,118,161,162,162, 34,171,215, 70,203, 69,189,196, 33,149,190, 64,182,202, 60,225,107, 82, + 19,145, 4,140,199,219,119,239,223,129,215,223,121, 9, 71, 91,143,162,161,233, 16, 10,242, 11,179,146,137,116,249, 43, 80, 47, +133, 80,142,233, 45,133,200, 54,180, 6,176,117,235, 86,116,119,119,163,163,163, 3,107,215,174,133,205,102,195,172, 89,179,112, +245,213, 87,227,191,255,251,191,177,112,225, 66, 20, 20, 20, 68,229,203,237,118, 99,229,202,149,248,244,211, 79, 17, 12, 6,241, +218,107,175,161,179,179, 19, 43, 86,172, 64, 81, 81, 17,134, 12, 25,146, 85,241,239,222,189, 27, 46,151, 11,163, 71,143, 6, 0, +172, 94,189, 58, 38,111,122,121,141, 23, 70,175,156,178, 54, 10,100,214, 66,149, 12,171,247, 73,178,132,255,251,251, 51,232,246, +116,193,233,116,193,223,112, 0, 71,154, 14, 97,243,206, 79,178,222, 18,164,194, 95,153, 64, 82, 47,133, 80, 47, 69, 86,126, 43, +199,179,237, 2,169,243,161,112, 30, 50,100, 8,138,138,138,240,157,239,124, 7,183,221,118, 27, 46,188,240, 66,140, 27, 55, 14, +183,220,114, 11,102,207,158,141, 21, 43, 86, 68, 12,116,211,166, 77, 88,185,114, 37,254,252,231, 63, 35, 55, 55, 23, 62,159, 15, +207, 62,251, 44,214,174, 93,139,177, 99,199,102,181, 86, 85,226, 45, 46, 46, 70,121,121, 57, 24,134, 1,165, 20,183,222,122,235, +128,170,249, 21, 36,124, 73,158,154,224,222,186,207,241,214,250,215,209,210,214,130,134,166, 67,200,207,139,189,225,132, 16,130, +255,125,234,126, 52, 30, 61,130,242,146, 10,116,117,119,162,179,187, 3,129, 96, 0, 84,150, 49,180, 40,251,111, 96, 74,166,128, + 1,192,110,183, 3,208, 95,234,160,158, 15, 80,142,103,243,162, 36,226,189,110,221, 58,252,236,103, 63, 67, 71, 71, 7,218,219, +219,177,100,201, 18,204,153, 51, 7,207, 63,255, 60,254,240,135, 63,128,101, 89, 44, 89,178, 4,159,126,250, 41,114,115,115,209, +208,208, 0,167,211,137,101,203,150,225,201, 39,159,196,195, 15, 63,156,117, 97, 17, 66, 48,124,248,240,136,248, 25,134,193,170, + 85,171, 98,102,130,213,249,213,238, 83,127,199, 75, 39,235, 45, 0,195, 48,144,100, 9, 47,255,243,255,224,243,123,145,151, 87, +128, 35,205,135,209,120,244, 8,182,238,250, 84, 87, 84,127,127,235, 5,216, 4, 27, 14, 28,174,135,215,231,193,241,246, 99,232, +114,119, 66,148, 68, 44, 93,242,221,180, 8, 39, 66, 50,226,215,142, 2,169,151, 66,104,197,175, 28,239, 15, 24,241,222,189,123, + 55, 26, 26, 26,112,238,185,231, 98,255,254,253, 24, 62,124, 56,242,242,242,224,112, 56,112,251,237,183,227,222,123,239, 5, 33, +225,103,100, 6, 2, 1,244,244,244,192,233,116,162,167,167, 7, 87, 92,113, 5, 46,189,244, 82,236,216,177, 3, 83,167, 78,205, + 42,119, 69,184,234,135, 94,221,118,219,109,166,175, 77,127,142,206,197,109, 1, 20,130,143, 63,247,123,180,180, 54, 27,214,232, + 90,242, 46,103, 30,246,214,237, 2,207,241, 16, 37, 17,161, 80, 16, 0,240,203, 31,223,141,155,127,116, 71,214, 51,101, 86,252, +202,133, 82,214,246,168,151, 66, 40,241, 0,136, 89, 10,145,237,137, 48, 35,222,183,222,122, 43,158,126,250,105,184,221,110,140, + 25, 51, 6,111,189,245, 22, 30,123,236, 49, 92,119,221,117, 88,188,120, 49, 26, 27, 27,193, 48, 12, 28, 14, 7, 94,127,253,117, + 60,243,204, 51, 88,182,108, 25,174,184,226, 10,240, 60,143, 21, 43, 86,224,134, 27,110,192, 71, 31,125,148, 21,238,234, 60,104, +243,113,255,253,247,155, 90, 11,148, 76,185,102,165, 5, 80, 34, 86,147,127,253,221,151, 96,183,217,117,107,244,203, 47,248, 78, +140,229,254,233,254,231,176, 98,205, 47,209,208,116, 24, 78,103, 46, 10,243,135,224,198, 31,252, 10,103, 78, 60, 59, 45,178,102, + 97, 86,252, 74, 97, 43,107,123,204, 46,133,200,182, 95,106,196,123,196,136, 17,120,245,213, 87,177,120,241, 98,252,232, 71, 63, +194,232,209,163,241,200, 35,143, 96,221,186,117,104,107,107,195,210,165, 75, 65, 8,193, 51,207, 60,131,174,174, 46,172, 93,187, + 22, 79, 62,249, 36, 46,185,228, 18,172, 92,185, 18,239,188,243, 78,212, 8, 87, 54,249,107,203, 95,253,248,146,129, 80,243, 43, + 48,245,166,248,220, 28, 23,106,190,216, 19, 83,163,223,188,252, 78,220,180,252,246, 24,242,163, 78, 25,141,117,191,127,165,255, +114,145,128,127,188,130, 87,195,236, 82,136,108,243, 55,250, 60,254,248,227,184,254,250,235,241,198, 27,111, 96,205,154, 53,145, +133,109,203,151, 47,199,154, 53,107, 34,143,117,169,171,171,195,138, 21, 43, 48,118,236, 88, 60,252,240,195,216,177, 99, 7,110, +184,225, 6, 84, 86, 86, 98,237,218,181, 89,231,175, 87,206,247,221,119, 95, 84, 24,237,119, 42,149, 74, 86, 91, 0,245,231,225, +255,121, 10,191,125,228, 14, 52, 29,109,128,211,153,139,130,188, 66,252,252,251,183,225,204,137,103,159, 48,203,141, 7,179,226, + 87,187, 56,132, 16,211, 75, 33,250, 99, 34, 76,143, 63,203,178,120,234,169,167, 98,142, 21, 23, 23, 99,199,142, 29,200,201,201, + 1, 0,236,218,181, 43,234,118,200,169, 83,167,102,221,237, 73,196, 95,185,121,125,160,212,252, 10, 76, 13,131,158, 58,226, 52, + 60,253,192,223, 6, 28,121, 61, 36, 35,126,109, 77,148, 76, 26,217, 68, 50,252, 9, 9, 15,145,182,183,183, 99,232,208,161, 0, +128,138,138,138,172,142,243, 39,195, 93,225,255,187,223,253, 46, 42,140, 58,108, 50, 88,177, 98, 69, 70,249, 38,108, 1,146, 25, + 69, 25, 40, 72,149,191,217,165, 16, 3,129,187, 54,140,222,194,182,254, 22,127,188, 60,220,121,231,157, 3, 82, 63,166, 70,129, +140, 10,125,160, 34, 89,254,138, 75, 99,118, 41, 68,127,184, 64,201,136, 63, 94,235,118, 34,112, 50,233, 39,198, 4, 79, 38,242, +122, 72,133,191,178,173, 93, 10,161, 14,167, 94, 10,145,237,252, 91,226, 55,135, 95,255,250,215, 16, 69, 49,173, 56,146, 90, 11, + 52,208,197,175, 32, 85,254,102,151, 66,100, 19,233, 10,127, 32, 92,159,254,210, 79, 38,250, 3,134, 45,192,201, 42,254, 84,248, + 43, 2, 55,187, 20, 66, 59, 71,144,105,156,204,226, 63,217,244, 19,211, 2,132, 66, 33,212,215,215, 71, 21,104,127,145, 87, 38, +164,210, 65, 42,252,149, 99,218,167, 66, 40,190,190, 34,120,101, 41,132, 18,190,182,182, 54,227,252,125, 62, 31,190,248,226,139, + 24, 81,199,187,187, 46, 83,226, 63, 81,229,159, 41,164,194,159,168,107,179,115,206, 57,231,104, 32, 16,200,254,106,181, 56,176, +217,108, 45, 31,127,252,113, 74, 47,106, 62,217,249,207,154, 53,235,104, 48, 24, 60,105,249,159,140,229, 79,178,221,156, 91,176, + 48,144,113,226, 7, 98, 45, 88, 56,129,176, 12,192,194,160,134,101, 0, 22, 6, 53, 44, 3,176, 48,168, 97, 25,128,133, 65, 13, +195,199,162, 88,176,144,105,244,190, 71,248, 93, 0, 19,179,149,134, 32, 8, 45, 27, 55,110, 52, 61, 12,106, 25,128,133,126,129, +242, 18,237,222,247, 32, 99,235,214,173,168,168,168,136, 60,224, 75,153, 45, 86,160,158, 56, 83, 79,250,169,161,221,239,243,249, +240,245,175,127, 61,169,121, 8,203, 0, 44,100, 29,234, 55,200,207,155, 55,111, 20, 0,108,217,178, 5,126,191, 31,121,121,121, +186,175, 73, 53,187, 4, 68,125,236,203, 47,191, 76,154, 27,231,116, 58, 86, 6, 2,193, 59, 36, 73, 54,101, 12,132,144, 32,165, +116, 37,165,244,222,164, 83,203, 2, 28, 14, 71,117, 48, 24,156, 35,203,178,217,254,140, 4, 96, 61,165,180,255,110,145,138,131, +147,157,127, 34, 40,226, 95,189,122,181,173,186,186,122,148,178,159, 97,152,200,251, 3,128,228,111,100, 50, 58,158, 44,152, 64, + 32,120, 71,205,190, 93, 92, 40,232,131,153, 79,125,109, 77, 8, 64,102,111,203, 73, 3,193, 96,112,206,254,253,187,152, 80,168, + 7,102, 62,117,117,251,101, 0,213, 39,154,183,130,147,157,127, 60, 40,226, 95,181,106,149,125,254,252,249,163,212,199,148, 55, + 73, 2,201,139, 95,121, 62,106, 38, 22, 2,114,146, 36,115,149, 35, 71,161,199,219, 14, 89,138, 94, 91,173,183, 72,162,172,116, +200, 81, 0,163, 83, 74, 45, 11,144,101,153, 25, 57,242, 84,248, 61,237,144,229,104,254,122,183,176, 87,148, 22,122, 0,244,207, + 51, 26, 77,224,100,231,111, 4,181,248, 23, 44, 88, 48, 82,123, 92,241,251,227,189, 10, 54,149, 86, 33, 89,244,190,144, 22,144, + 36, 49,230, 2, 64,103,157,144, 36, 83, 41,233, 84,178, 13, 25, 16,101, 29,254, 58, 79,113,144, 56, 71,246, 31,237,144, 44, 78, +118,254, 26, 36, 18, 63, 0, 30, 79, 27,159, 0, 0, 26, 61, 73, 68, 65, 84,195, 55,196,167, 42,126,165, 85, 72, 22,170, 51,104, + 88,240,189, 31, 74, 41,104,120,111,248, 67,195,203,131, 41,149, 56, 0,126, 66, 72, 69,210,169,101, 21,114, 88, 48,234,143,126, + 56, 6,128, 72, 8,113,245, 39,187,196, 56,217,249,135,161,246,249,141,196, 15, 0, 54,155, 45,242, 59, 19,226, 79,171, 5,232, +238,108,193,246, 77, 47,161,199,219, 5, 0,160,138,243, 67, 85,110, 80,239,111,150, 99,135,254,242,151, 55,250, 31,124,240,225, + 67, 28,199, 70,142,169,130, 17,237, 78, 74, 17,195,140, 82, 26,181,143,101, 24,209,102,231,126,235,245, 6, 86, 38,155,137,238, +206,163,216,190,233, 37,248,124, 93,189,123,228,200,151, 86, 70, 12,225,156,183,220,114,147,248,192, 3,191,191, 81,121,190,190, + 62,250,206,148,229, 88,254, 90, 48, 12, 35, 11, 2,243, 97, 79, 79,104,125, 82,228,113,242,243, 87,160, 30,237, 81,119,120, 1, + 32, 16, 8,224,224,193,131, 56,124,248, 48,218,218,218, 12, 95, 52,158,110, 71, 56, 89,112, 0,192,178, 4,185, 78, 59, 56, 18, +236,149, 45, 85,137,159,106, 12,129,186,150,127,111, 9,126,113,227, 79, 33, 83, 25, 20, 20,164,183,124, 9,244,198,110, 17,181, +143, 70,142,133, 35, 85,194, 29, 58,116,136, 59,123,198,185,119, 0, 88,153,108, 38, 24,142, 65,110,174, 29, 28, 19,236,187,236, +154, 31,170, 77,225,135,215, 44,193,205, 55,254,180,247, 65, 87, 50,148,134, 48,170, 1,101,244,246,169,127,200,189,191,194, 59, + 15, 30, 62,200,156,253,181,115,231, 0, 88, 63,216,248, 71,168,201,242,187, 15, 62,248,160, 48,119,238,220, 81,178, 44,163,177, +177, 17,123,247,238, 69,109,109, 45, 90, 91, 91,225,114,185, 80, 88, 88,136,194,194, 66,184, 92, 46,112, 28,103,216,161,237, 15, +241, 3,189, 6, 32,138, 50,186,186,124,240,122, 61,145, 3,234,251, 4,162,238, 25,160, 64,199,230,183, 96,119,228,130, 48, 28, + 34,102,162,106, 42,212, 61,135,152,251, 13,148,198,133,246,109, 80, 0,237,237, 29,144,101,115, 67,177, 90,136,162,140,206, 78, + 31,124, 62,119,100, 95,180, 7, 33, 71,253,220,177,249, 95,176,231,184, 0,134,131,186,182,213, 9, 29,179,165, 19, 28, 0,208, +222,222,134, 36,134, 50,191, 82,252, 85,152, 88, 85, 85,133,199, 30,123, 12,181,181,181,224, 56, 14, 37, 37, 37, 40, 42, 42, 66, +121,121, 57,120,158, 7,207,243, 16, 4, 1,118,187, 29, 60,207, 71, 70,131, 50,213, 17, 78, 22,189, 45, 0,131, 28,167, 13, 12, + 9, 63, 38, 60, 92, 57,107,221, 32, 26,221, 39,166, 34, 40,148, 78,155, 90,244,209,225,162, 13,169, 55, 66,213, 87,164, 37,160, +169,223,221,207, 49, 12,114,114,237, 96,152,240,155, 94,244,175,185,164,217, 31,130,140, 16,116, 79,136, 58, 89,229, 74,168,118, + 51,170, 42, 89, 6, 0,109, 7, 54, 9,156,236,252,213,112,187,221,112, 58,157,168,174,174, 70, 65, 65,223,227,243,129,190, 91, + 35, 5, 65, 0,207,243,176,217,108,225,167,143,119, 31, 71,221,163,223,131,167,177, 30,142,226, 50,148,159,127, 61,202,191,241, +253,148, 12, 35, 89,244,182, 0, 18,186,187,125,240,245,182, 0, 17,205,210,228,133, 29,251, 91, 57,187,239, 95,244,254,176, 1, +120,188, 61, 73,147, 87, 32,138, 98,152,191,199, 29,125, 32,202,135,214,212,139, 49,154,145, 13,246,171,142,246,253,139,217,239, +241,249,147, 35,173,194,201,206, 95, 13,167,211,137, 41, 83,166, 64,146,164,168, 39,107, 40,223, 12,195,128,227, 56,240, 60, 15, +134, 97,192,243, 60, 26, 63,120, 14,249,104,197,156,165,231,195,231, 13,226,179,183, 31,129,231,192,103, 24,251,195,255, 5,195, + 11, 73,181, 10,201,130, 3, 0,134,101,224,204,177,129,129,195,208,245,209,186, 44,138,138, 99, 92, 31,170,218,210, 49,152,168, +115, 85,255, 66,161, 16, 82, 5,195, 49,200,205, 17,192, 32,199,176,198, 83, 95,124,125,239, 66,142,173, 71,163,220,138, 88, 31, + 67,157,146, 40, 6, 83, 96, 30,198,201,206, 95, 13,142,227, 32, 8, 66,204, 44, 47,128,200, 75,253, 20,191, 95, 89,254, 48,108, +230, 37,216,253,159,167, 49,188,169, 1,195, 38,156,141,217, 23,148, 96,231, 71,159, 98,231,175, 23,225,140, 91, 95,132,189, 96, +168,233,190, 64,210,124, 1, 64, 18, 37,116,187,125,240,122, 60, 26,161, 70,254,105,106,255,222,111, 3,145,171, 3, 81,221,237, +232, 52, 40, 40,220,105,181, 0, 50,186,187,125,240,120, 60,136, 18,137, 81,109, 24,219,211,212,236,215, 57, 57, 74, 52,177,181, +168,199,151,186,128, 78,118,254,106,112, 28, 7,150,101,193,178,108,212, 19,247,244,196,170, 24, 66,238, 41, 19, 48,241,182,151, +177,125,245, 82, 76, 12, 2,195,167,205,195,212,111,124, 3, 95,110,219,140,109,183,205,193,153,119,190,134,220, 17, 19,178, 55, + 10,196,176, 12,114, 28, 54, 64,238,237, 3, 68,185, 41,250, 46, 11,160,105, 33,194, 59, 84,191, 35,161,117,126,107,226, 1, 69, + 48,152, 70, 11,192, 48,200,201,177,171,248,135,235,187, 79,183,212, 98,195,166,122,120, 60, 62,248,253, 65,248,131,193,240,183, + 63,136, 96,239,239, 76,162,247, 98,232, 46, 19,225, 56, 78,158, 50,101,194,182, 45, 91, 62,255,231, 87,141,191, 26,106, 95, 92, + 45, 80, 26, 10,224,240, 95,110, 69,247,190,143, 32, 5, 2,160, 84, 14,187,216,178,220,231, 42, 49, 12, 62,223,186, 31,108,193, +112,148,143,159,136, 83,207,154, 1, 87, 81, 33,182,221,125, 62, 78,255,217,159, 49,236,236, 69,113,221,161, 84, 16,105, 1,186, +220, 62,120,221, 94, 0,177, 53,187,161,176,161,250,173,221, 79,181, 34,143,236, 84,197,213, 23,222,227, 73,221, 7,149, 69, 17, +157,221, 62,248, 60,225, 62,140, 82,123,110,216, 88,131, 23, 94,252, 59,138,139,139, 83,142, 59, 83, 56,120,240, 48,115,198,228, +179,167, 1,136, 17, 80,182,249,203,178, 72, 24,134,163,122,251, 1, 64,239, 88, 50,252,213, 80,139, 81, 45,210,230,183,254,136, + 92,127, 19,166, 93,122, 1, 88, 65, 0, 97,121, 16,150, 3, 97,194, 31, 48, 12, 64, 24, 0, 4,224,108,128,232, 7, 66, 62, 12, + 29, 53, 22,179,243,139,240,233,159,254, 11,222, 35,215, 99,244,183,110,201,252, 40, 16,195, 50,112, 58, 4, 16,217, 22, 37,230, +237,159,127,137, 15, 55,214,192,219, 19, 64, 48, 40, 34, 16, 8, 34, 16, 20, 17, 12,134, 16, 8,132,194,223, 65, 17,146,148,153, +213, 17, 12,195,200,132, 16,221,139, 65, 8,233,161,148,222, 65, 41,125, 40,230, 60,197,135,150,237, 81,126, 45, 39,112, 40, 46, + 46, 70,231,177,154,164,125,220, 96, 48,196,132,164, 16, 3, 0, 60,203,203,130,192,199, 25,106, 73, 12, 95,103, 43, 68, 81,212, + 29,166, 72,200,191,181, 22,162,104,190,130,144,101,145,136, 34, 37, 84, 18, 73, 80, 18, 25, 42,202,132,112, 12, 21, 88, 78, 38, + 44,215, 91,247,136,164,167, 39,200, 50, 0,108, 54, 65,226,109,188, 28,207, 16,124,221,198,252,181,208, 19,166, 28,236,129,195, +233, 0, 79,253, 32,162, 8, 80, 30,144,121,128, 97, 65,249, 28, 32, 20, 8, 15,235, 18, 6, 8,249, 0, 42, 3,172, 0,136,126, + 56,243,243, 49,231,242, 75,176,245,173,191,192,115,112, 23,206,188,229, 57, 16, 18,107, 4, 41,143, 2, 73,162, 4,183,167, 7, + 30,183, 55,202, 0, 62,217, 82,135,255,247,194,203,253, 89,131, 26,230,160,161,161,193, 81,117,250, 89,247, 3,136, 49, 0, 81, +148,209,237,241,194,211,237,137, 62, 32, 43,199,253, 16,131, 62, 83, 4,100, 89, 36, 62, 95,128,235,234,236,180,185,189, 94,129, + 16, 66,115,115, 93,193,130,252,188,128,195, 33, 72,102,106, 75, 61, 4,227,164,159,144,127,208,103,202, 0,100, 89, 38,162, 36, + 17,159,183,135,243,122,220,130,183,199,207, 5,131, 1, 78, 18, 69,134,229, 56, 89, 16,108,162,195, 97, 23, 57,150,165, 61, 61, + 62,174,219,237,177, 49,132,208,252,188,188, 64, 81,241,144,158,156, 28,135,104,148,191,120,252,213,208,186, 64,202,167,100,254, +213, 56,248,204,141,216,191,237, 95, 80,207, 75, 51, 44,143,170, 69, 87, 98,196,240, 92, 48,160, 0,219, 59, 21, 36,137,136, 44, + 32,144, 2,224, 65, 49, 99,201,133,248,236,189,247,176,247,137,155,113,198,245,255,155,182,248, 1,165, 5, 96, 24, 56, 28, 2, +100,201, 22,229,162, 8,130,128,226,162, 98,180,183,236,131,164,115, 1, 82, 82, 66,178,177,244, 30, 14,184, 61, 8,137,162,238, +179,239, 24,134, 65,142,221, 6, 89,180, 71,237,183,219, 5, 0, 50,100, 89,214, 27, 35,137,129, 40,138,196,231,243,241, 45, 71, +143, 59,119,236,220, 87,242,215,151,255, 51,213,225,176, 5, 47, 94, 50,123,247,148,137, 19, 90, 74, 74,135,122,115,114,114, 66, + 28,151,138, 17, 24,167, 31,159,127,239,185,178, 94,247, 85, 21,187, 28,174,209, 59, 59, 58,236,199,219,218,114,106,235, 14, 20, +109,218,188,103,196,161,134, 99, 69,221,157, 62,103, 65, 65,174,103,100,101, 73,235,244,179,170,142,148,149, 12,241, 29, 58,210, +146,247,194,203, 27,102,129, 80,233,187, 87,156,251,241,215,102, 76,105, 44, 97, 75,125, 54, 27,163,223,156, 39,209,254,169, 71, +127,148, 79, 78,233, 40,156,126,251,107,145,237, 96, 91, 35,246,174,249, 54,198,205,154,135,138,145,195, 64, 3,221, 0,103, 7, + 41, 28, 5,118,228, 57,128,171, 28, 32, 12,104,231, 65,200,117,239, 64,110,222, 1,244, 28,199,228,121,115,241,241,107,111,226, +200, 59,103,162,114,225,117,105,137, 31, 80, 90, 0, 73,134,219,221, 3,183,219, 23, 61,246, 79, 41, 40, 40,196,144, 15, 98, 40, +245, 81,154,116,160,116,144,186,187, 58, 12,195,200,162,140,110, 79, 15, 60,221, 62, 68, 15,248,201,125,223, 9,222,239, 37,138, + 34,241,121,125,124,211,209,163,185, 91,182,238,174,248,199,127,246, 44,254,247,251,155, 29,255,248,199, 63,112,247, 93,119,156, +122,237, 85,254,127,157,125,214,196,198,242,210, 82, 79,142, 51, 5, 35,136,147,126,124,254,137, 13, 88,105,181,142, 29, 63,158, +211,112,164, 41,127,237,243,111, 77,157, 56,101,246,164, 95,255,246,143, 76, 89, 89, 25,236,118, 59,142, 28, 57,130,109,219,182, +141,123,250,169,167,100, 57,212,190,167,181,189, 51,111,243,214,125,229,219,182,109,195, 47,110, 90, 62,121,194,248, 83, 91,135, + 20,230,251,109, 54,206,192,159, 53,111, 1, 90, 3,208,250,236,238,250,109,168,251,227,143, 49,245,130,111,162,176,192, 14,234, + 61, 6,112,118, 48,149,231,128, 25,179, 16, 68,125,107,100,201, 25, 96,134, 77,132, 84,243, 38,196, 29,127, 1,219,115, 28,211, +207,159,143, 13,107,111, 71,229, 55,174, 6,195,219,140,104,152, 66,111, 11, 64,194, 45,128,104,131,186, 35,235,176,135, 35, 15, +175, 2, 77,203, 5, 54,134,105, 25, 25, 7,100, 24,244,214,160, 66,212,126,229, 5,216,137, 4,164,212,252, 77, 71,143,230,110, +222,178,123,248,219,239,213, 44, 90,191,254, 67,135, 40,138, 56,239,188,243,112,202, 41,167,228, 92,119,237, 53,139, 36, 42,191, + 53,253,108,185, 33, 21, 35,136,151,126, 34,254,189,153, 48, 60, 63, 20, 8, 50,237,109,237,246,109, 91,119,151, 61,247,226,134, +243,215,174,251,191,194, 41, 83,166,192,231,243,245,142, 22,249, 49,108,216, 48, 44, 94,188, 24, 11, 23, 46,100,158,120,226,137, + 51, 86,175, 94, 21,202,205,205,197,216,177, 99,209,218,218,149, 31,244,251,185, 80, 64,100,100,123, 80,183,195,156,168, 2, 81, +160,238,140,234,137,255,216, 71, 47,162,233,141, 7, 49,227,210,203,225,100,125,128,207, 13,176, 54, 16, 87, 57, 48,250, 60, 72, +148, 98,255,129, 86,236, 62,208, 6,175, 63,132,211, 42,242,113,246,248, 18, 8, 99, 23,131,110,250, 3,164,186,183, 33, 12, 29, +135,161,167,140,192,177,237,255, 70,217,215, 46, 48,197,203, 8,125, 45,128,199, 7,119,183, 55,106, 20, 39,188,216, 42, 44,254, + 19,109, 0,241,210, 23,101,197,135,246,169,231,133,194,252,229,200,134,238,185,178, 44, 18,191,175,135,107,106,106,201,221,188, +101,215,240,119,214,215, 46,122,127,253, 6,135, 40,138,240,122,195,163, 98,227,199,143,199,179,107,255,146,115,237,247,174, 94, + 8, 74,223,154,126, 54, 26,134,151,151,184,227,249,204,201, 32, 46,127,196, 55, 96, 89,150, 73, 79,192,207,118,116,117,216,159, +123,241, 63,231,124,178,105,103, 33,207,243,104,110,110,198,227,143, 63,142, 15, 62,248,128, 30,109,110,236, 41, 45,171,112,204, +155, 55,143, 44, 95,190, 28,223,255,254,247, 49,122,244,104,149, 59, 73, 33, 81,137,136, 52, 68,228,222, 86, 39, 38,157, 20, 90, +128, 40,241, 3, 56,248,255, 86,162,167,110, 35,102, 95,122, 41,248,192, 49,208,144, 8, 66, 88, 0, 12,104,229, 92, 72, 50, 69, +125, 99, 59,254,245,233, 33, 4, 69, 9, 59,235,143,227,143, 77, 93,248,225,133,167,227,154,243, 39, 0,179,110, 6,234,222, 6, +245, 28, 67, 89,249, 20, 28,126,231,233,204, 24, 0,195, 16, 56,236, 2,164,144,210,156,132,199,254,237,142,112,159, 32,101, 3, +200, 76, 39, 33, 28, 85,156,135,248,134,125,104, 33,170, 6,149,229,190, 62, 0, 12, 46, 42, 0,132, 66, 34,211,222,209,105,223, +178,117, 87,197,219,235,247, 47,126,255,253, 13,118, 81, 20,177,115,231, 78,204,156, 57, 19,199,143, 31, 71,125,125, 61,198,142, + 29,139,103,215,254, 37,231,154,107,150, 45, 34, 4,255,116,204,226, 14,241,101,165, 94, 67,159, 89,139, 56, 53,104, 92,254, 9, + 12, 24,178, 8, 41, 36,145, 80, 32,200,130, 8,197,161, 80, 8,159,127,254, 57,174,191,254,199, 98,249, 80,254,179,111, 46,158, + 86,207,210, 9,228,192,145,163,133,207, 60,253,248,153, 47,189,244,210,208, 85,171, 86,145, 9, 19, 38, 68,162, 8,143,121,244, +166, 33, 27,148, 85, 18, 45,128,182, 19, 44, 7,123,176,255,225,107,225,178,201,248,218,249, 11,192,202, 94,244,240,165, 16,137, + 13,185,190, 58, 16, 80, 72,206, 82, 80, 81,196,198,221,205,104,110,243, 98, 91,109, 11,188, 61,225,185,161,191,189, 95,135,111, +205, 25, 5, 97,232, 25, 96, 8, 3,218,211,129,252,138, 60,236,219,177,197, 20,167,120,136,180, 0, 30,143, 31,221,238,222,158, +126,239, 24,190, 44,135,151, 59, 83, 12, 4, 3,136,239, 67,123, 60,126,116,119,247,141, 84,200, 80,106,206,222,111,157, 11, 40, +203, 50,233,241,251,217,246,142, 14,199, 63,223,221, 49,243,131, 15,183, 68,196,191,116,233, 21, 82, 83, 83, 51, 11, 0, 75,151, + 94, 33,189,240,194,223,216, 49, 99,198, 96,221,186,231, 29,215, 94,243,237,121, 85, 19, 78,125, 49,191, 48,207,207,178,140,204, + 48, 76,194,156,198,245,225,227,242,239,251,211, 5,195, 80,150,103,100,135,211, 17, 28, 55,186,104,203,130, 5,243,206,234,238, +234, 12,126,235,226, 25,235,207,156, 60,246,168, 32,216,196,206,246, 14,231,191,215,239,158,191,119,223, 23,195,114,115,115,213, +249, 7, 0,136,162,204, 82, 74, 40, 40,161,178,129, 1,164,210, 2, 16, 66, 16,236,104,198,222,251, 47,199,200, 9, 99,113,234, +184, 74, 64,242,162,179, 59,136,141,175, 60,135,115,174,188, 26, 32, 4, 84, 12, 64, 18, 69, 80, 73, 66, 83,171, 27, 31,126,222, + 16, 53,249,106, 23, 88,128,202, 8,133, 66,176,133, 35, 6,203,219, 16,234,241,232,166,159, 12, 34, 45,128,221, 46, 64, 12, 9, + 81,171, 63,115,148, 81, 8, 42,135, 63, 90,152, 27,192,201, 8,226, 25, 0,195,132,107, 75, 81, 12,215,152, 74,200, 8,255, 56, +144, 68,137,136,162,196,128,216, 10,125, 62, 31,246,237,219,135,107,174, 94,214, 67, 16,240, 0, 24, 10, 0, 4,129,246,107,174, + 94,150,187,118,221,115,142,202,202, 74,240,130, 93,160,146, 76,168, 72,205,207,188,196,109, 1, 18,240,143,123,135, 24, 96,227, + 57,169, 40, 63,175,231,202,111, 45,216,221,217,217,253, 5, 75, 8,117,185, 92,254,252,188, 60, 63, 24,192,235,245,216, 64, 56, +254,200,145, 35, 81, 67,218,148, 82,108,223,190, 29,229, 37,133,109,246, 28, 94,228,121,197,152,211,107, 1,148,111,255,177, 67, +216,253,219,139, 48,105,238, 28,148,150,228, 2,178,136,150,163, 93,216,185,126, 61,114,135,143, 67,200,219, 13,146,199,130, 6, + 61,144,218,234, 16, 32, 78,140,173,112,198,220,137,187, 96,114, 25, 68, 49, 4,182,113, 91, 88,135,124, 14,130, 33, 25,142, 33, +233,191,138,160,175, 5,240,246,160,219,237,139, 74, 92,148,194,125,128,176, 27,164, 35,231,254,124,183, 64,130, 62,128,199,231, + 67,183,218,135,238,221, 15, 0, 48,104, 1, 0, 80,142,231,164, 92,167, 35, 48,122, 68,238,167,115,102,207,152, 26, 8,248, 67, + 23,157, 63,101,203,171,255,220, 60, 69, 9,196,115,156,116,209,249,103,124,240,131,235,174,154, 68, 88, 91,193,148,211, 43,182, +229,186,156, 1,142,231, 36, 0,212,204, 27,228,227,118,194, 77,240, 55,238,195,200, 36, 24, 10, 50, 65,127,128,149, 66, 18, 97, + 9,161,148,202,196,231,243, 9,161, 80,144, 37,132, 80, 89,146,200,194,249, 85, 31, 95,250,205,133, 83, 65,216, 72,207, 90, 12, + 73,236,208,226,220,198,101,151,207,223, 94,224,116,249,109, 60, 39,197,185, 21, 51, 97, 30, 21, 40,174, 79,221,159,126,138, 73, +115,206, 65, 73, 33, 1,101,120, 28, 58,112, 20, 95,236,216,133,179,239,125, 31,199, 54,191,137,182,218,183, 80, 60,116, 2,224, +110, 6,249,240, 62,248,207,127, 10, 51,199, 13,193,210,185,149,120,111,103, 11,130,162,132,153, 19,134,226,226,153, 21, 8,133, + 66,176,111,121, 24, 0,192, 20, 84,162,179,195,141,194,241, 51, 77,115, 50,130,170, 5,224, 17, 10,132, 71,129, 20, 56, 28,189, + 45,130, 44,131,154,172, 1,162,145, 57, 3,137,223, 2, 48,176,219, 5, 4,237,118,168, 47, 84,142,122, 28,221,224, 2,218, 4, + 94, 26, 90, 92,232, 91,182,244, 27, 59,151,120,186,247,139, 65,137,117,123,189,118, 96,115,212, 98,144, 49, 99, 78, 57,126,230, +148,113,255,228, 5, 78,204,115,185, 2, 67,139,243,125,188,192,107, 23,233, 27, 35, 65, 31, 32, 62,127, 99, 3,146,164, 16,233, +236,236,182,213, 29, 56, 52,228,197, 87, 54, 76,170, 63,208, 84,198,178,125,171,253, 29, 14, 91,224,155,139,167,127, 94, 85, 53, +234,216,148, 73, 99,254, 33,201, 18, 35, 74, 34, 19, 10, 73, 44, 75, 64,157, 46,167,127,104,113,145,215, 85,232,242, 19,150,208, + 56,157,109,115,249, 68,159, 1,136,221,199, 49,100,248, 57,160, 8,162,118,103, 45,142,183,116, 96,250,253, 27,192,231, 22, 96, +248,130,101,248,228,205, 63, 96,212, 25, 19,193, 52,110, 7,231,239,132,125,227, 61,240, 76,191, 13,151,206, 42,199,101,231, 84, + 68,226, 2,149,192,111,126, 20,220,161,247, 1,134,131, 92, 54, 13,181,255,248, 0,179,239,123,196, 52, 39, 35,168,250, 0, 61, +125,125,128,222, 90, 95, 18, 41,178, 62, 10,100,210, 72,226,117,130,195, 62,180, 79,197, 63,236, 71,132,223,160,217, 91,251, 27, + 92, 64,142, 1,117, 58,156, 65,174,140,147,134, 6, 10,124,221, 94,159,208,212,216,172, 37, 70,115,115,236,129,242,210,146,174, +156, 28,123,200,158, 99, 19, 5,158,147, 57, 6,212,172,107, 16, 15,233,240, 15,244, 4,216,174,142, 78,251,186,231,223, 62,235, +201,181,175, 78, 26, 59,118,108,212,113,175,215,139, 25,103, 79,201,187,245,231,195, 95, 43, 46, 42,240,130, 2,221, 30,175,205, +237,118,219, 41,165,132, 99, 56,217, 97, 19, 68,129,101,100, 6,233,231, 71, 61,246,159, 63,225, 28,124,250,175,127, 35,228,243, +192,117,218, 89,152,250,155,191,130,229,109,225,155, 98,114, 11, 48, 98,241,143,240,197,158, 13, 24, 63,252,108, 72, 95,252, 27, +185,187,159,134,112,116, 43, 60,147,150, 35, 88, 60, 9,148,176, 16,218,118, 33,119,207, 90,216,154, 63, 1, 0, 48,195,167,163, +161,177, 3, 67,167,156,139,220,138, 49,105,113, 5, 52,125,128,144, 35, 92,227, 40,139,216,114,114, 4, 80,164, 49, 10,148, 17, + 40,203,177, 19,251,208, 57, 14,117,141, 31,230,175,108,199, 29,135,231, 64, 29,156, 77,148,237,172, 36, 82,137, 48, 28,137, 9, + 44,138, 18, 35,209, 16,161,176, 33,216, 19, 96, 37, 81, 34, 34, 47, 17,158,231,204,117,130, 77,244, 1,146,229, 47,203, 50, 9, +132,130,140,183,167,135, 63,220,208, 54,108,252,248,241,104,105,105,137, 10,211,210,210, 2,134, 99, 72, 32, 20,100,125,254, 30, + 46, 20, 18,217,154,186, 67, 67,223,124,251,243,185,146, 4, 97,226,132,161,219,190,117,113,245, 30,135,195, 22, 98,121,214,144, +100, 50, 45,128, 50,252, 57,254,199,143,194,123,100, 31, 4,215, 16,216,139,202, 99, 38,198, 70, 94,248, 19,124,240,147, 63, 34, +127,200, 44,148, 77,188, 28,210,254,127, 66,104,253, 28, 67,222,251,175,216, 72, 89, 1,236,105, 95, 71,135,152,143,253,155,223, +195,185,127,220, 97,154, 79, 60,168,250, 0,126,184, 61,225,217, 94,165,182, 13,137, 18, 34,143, 72, 57,209, 6,144,200,135,246, +248,225,233,173, 65,149,144,162, 40,246,141, 32,154,185,128, 50,192, 16, 74, 99, 23,228, 81,210,213,237,113,144, 35,148,242, 54, + 78, 98, 8, 67,121, 27, 47,230,187,242,252,133, 5,121,254,156, 28,187,152,216, 8,210,225,111,208, 2,200, 50, 36, 73, 34, 84, +150, 8, 97,123, 7, 76,101, 25,199,142, 29, 67, 77, 77, 13,238,190,251, 46,217,239,235,106, 95,124,222,228, 29,238,110,159, 35, + 24, 8,242,235, 63,218, 61,210, 19,112,125,237,131, 13,155, 5,159,207,135,217,231,124,109,230,194,249,238,250, 96, 97,190,207, + 38,240,146,113, 62,146,155, 8, 83, 62,174,202,211, 13,103,132, 57,155, 3,179, 87,127,136,173,247, 92,130,206, 97, 69, 24, 55, +229,106,144,163,159,129,186,155, 65,221,205,128, 44,129,228,150,128,184,202, 64, 74, 39,225,224,151,205, 56,184,251, 19,204, 89, +245, 30,236, 67, 82,122,143, 95, 12, 56, 0, 32, 12,129,221,198, 33,100,231,163, 22,195, 69,106, 36,163, 81,160, 12,192,108, 47, + 33,209, 60,128,221,206, 33,232, 80,143,250,200,166, 91, 0, 68,133,146, 65,136, 38, 49, 98, 31,242,240,159,222,168, 86,211,117, + 56,132,192,165, 75,102,109, 59,103,230,196,195, 37,252, 80,175,205, 38,196,157, 15,136, 63, 19,156,152,191,190, 0,251,230, 56, +212, 79,228, 56,124,248, 48,102,207,158,141,215, 95,127,131,121,228,145, 71,138, 63,219,190,173,250,189, 15,255,227,158, 56,105, +170,235, 7, 63,186,139, 95,184,112, 33,188, 94, 47,234,234,234, 32, 75,129, 46,150, 37, 50, 97,137,254,232, 79, 84, 90,230, 96, +230,198, 21,229,227, 40,174,192,220,135, 54, 97,207,159,111,198, 71,175,191,141,242, 49, 99, 80, 56,116, 52, 92,227, 74, 65, 24, + 6,158,214,227,232, 58,222,138,166,255,108,134,125,232, 72,156,251,248, 46,112,142,220,196, 36, 76,130, 3, 0, 89,146,225,245, + 6,208,237,233,137,186, 73, 37, 20,146,122,127,157, 72, 23,168, 23, 9,231, 1,130,232,114, 71,175, 88, 12, 6,195,226,144, 77, +172, 5, 2, 0, 6,160, 28,207, 74, 54,155, 61, 84, 94, 86,216,186,125,251,246,242,178,178, 50,212,127,113,192,198,113, 92,153, + 58,172,223,239,199,180, 51, 79,119,157, 62,126,196,139, 5,121,121,126, 62,209,124, 64,130,181, 64,241,248, 71,250, 1, 49, 81, +202, 32, 12,237,109, 28,251,146,190,238,186,107,165,123,238,249, 45,123,209, 69, 23,225,206, 59,239,132, 32, 8, 60,207,243, 67, +120,158, 7,165, 20,173,173,173,120,229,149, 87,112,239,189,191,241, 92,121,201,244, 77, 46,151,211,207,115,108,220, 17,173, 84, + 58,193,137,196,223,119,140,197,164,159, 60, 2,247,145, 26,180,237,254, 8, 13,159,189,131,182,247,158, 7,149, 68, 20,142, 61, + 11,197, 83,207,199,148,111,206, 70,225,152,105,166, 57,152, 69,164, 5,176,217,120, 56,236, 66,212, 98,184,156,222,135, 20,156, +216, 62, 0, 20, 18,198,199, 24,192,110,231,224,236, 29, 53,137,140,163,231,244,254, 48,154,221,212,129,192, 50,114,158,203, 22, +184,228,130,233,187,190,243,237,203, 71,174, 94,243,191,121,211,166,197, 22,252,193,131, 7, 65,194,211,167,136, 55,202,212,135, + 56,199, 19,240, 55,154,156, 2,100, 16, 66,168, 32,176, 98,190,203,225, 13, 6,131, 56,118,236, 24, 10,242,184,166, 63, 62,242, + 59,255,203, 47,191, 60,102,233,210,165, 56,227,140, 51,112,202, 41,167,160,161,161, 1,187,118,237,194, 11, 47,188,128, 99,205, +181,251,111,254,241,249,159,158, 50, 98, 88, 71, 65,129,203,207,243,140,156, 76, 45,111,132,228,197,223,183,157, 95, 89,133,252, +202, 42,156,122,193,242,180,121,152, 5, 71, 8,145, 3,254, 0,211,227, 15,134,251, 0,125, 55,252, 66,150,195,247,117, 82, 89, + 60, 97, 6,160,208, 9,134, 66, 32, 36,182,115, 10,128, 6,253, 65,226,243, 7,209,229,241, 35,114, 17,101, 64,150, 57,200, 0, + 68, 49, 24,246,167, 77,128, 16, 34,231, 58, 29,129,211, 70, 86,180,126,111,233,244, 55,127,247,235,155, 38, 54,181,116, 20,107, +125,181,130, 60,135,231,226, 69,103,237,204,117, 58,123, 88,134, 72,178, 44,199,157, 15,232,189,125, 81,207,138, 19,242,135, 44, + 26,206, 99,240, 28, 43,229, 56,115, 2, 23,124, 99,234,206,169,103,158, 94, 8,128,187,240,188,169, 59,198,140, 41,111,171,173, +111,218,247,236,159, 87,143,104, 62,214, 57,164,167, 39,228,116, 56,120,111,217,176,130,246,179,167,141, 62,180,236,210,139,154, +139,139, 10,188,249,121, 46,127,142,205, 38, 34,193,124, 70,239, 13, 69,166, 60,214, 68,194, 55, 58,126, 34,192, 57,115,108,199, +107,106,246,151, 12, 43, 41, 67,143,167, 61,178, 22, 84, 18,101, 12, 47, 25, 1, 73, 12,161,187,171, 93,247,228, 68, 47,217, 54, + 51, 79, 70, 19,148, 41,237,237,132,215,127,217, 0,187, 93, 56,162, 61,238,116,218,124, 53, 53, 53,206, 97,195, 42,224,119,183, +247, 45,128, 22,101, 20,149,141,128, 40, 6,209,221,169,207,223, 8,178, 44,139,206,252, 28,207,216,211, 42, 67, 63,190,110, 88, + 91, 32, 24,224,169, 36, 19, 74, 41, 33,132, 80, 48, 4, 2,207,139,185,185, 57,126,123,142,224, 15,133, 68, 89,146,226,184, 56, +178,140, 47, 15, 54,194,225,176,117, 39,203, 95, 22, 69,120, 60,157,198, 75,129,100, 81,206,205,177,247, 76,157, 50,254,200,105, +163, 43, 94,130, 12, 56, 93,142,128,221,102, 15,149, 13, 45,110,159, 62,109,252,193, 96, 48,196,201,162,204, 48, 28, 35, 11, 2, + 47,230, 56, 28, 33,167,211, 22,180,219,236, 34,195, 48,114, 80, 20,251, 30,241,164,151, 6,100,124,249,101,179, 46,127, 61,164, +242, 80,171, 19, 5,206,110,227,183,191,244,242,203,139,254,235, 39, 63,192,190, 61, 59,194, 79,137,150, 40,130, 33, 25,231, 46, + 94,128,142,246, 38,184, 61, 6,119, 3, 37, 50, 0, 19, 4, 18, 27, 81,120, 77,210, 39,155,107,252,146, 36,127,162, 61,238, 16, +184,230, 23, 95,126,249,180,159,253,244,135,216,183,231, 51,136, 98,184,182, 12, 6,101, 44,184,224, 92,116,182, 55,193,231,247, + 39,219,186, 83, 6, 76,200,238,176, 75,188, 32,248, 37, 81,100, 36,205,179, 76,121,142,145, 57,142,151, 32,129,250,253,193,184, +153,144,101, 25,155,182,214,138,146, 36,198, 24,112, 60,254, 95,191,224, 92,116,118, 54,193, 23,255,153, 61, 20, 4, 98,158,203, +225,181,219,120, 63, 0, 8, 2, 39,133, 39,195,108,112, 74, 14, 38, 16,148, 24,197,120,121,142,149,121,150,145, 9, 67,168, 36, +201, 84,146, 18,223, 42, 42,203, 50, 54,110,174,209,229,175, 69,178,181,254,137, 20, 63, 0,112, 57, 60,243, 95, 47,189,252, 70, +237,183, 46,187,148,253,246,119,111, 66,237,254,237, 16, 69, 9,227,198,159,137,161,195,134, 97,231,150,215, 16,240,167,104, 0, +137,214, 10,153,104, 34, 40,165, 56,210,216,138,151, 94,251, 56, 20, 12,138, 49, 79, 44,200,145,185,127,190,244,210,235, 63,187, +252,178,203,200,183,191,123, 51,106,107,183, 67, 20, 69,140, 31, 63, 21,195,134, 13,195,231, 91, 95,135,223,159,242,205, 60, 50, + 0,153, 50,132, 48,154,231,203, 82, 2, 26,146, 66, 8, 73, 72,104, 92,135, 27,142,225,197,191,127, 36, 7,131,210,122, 67,254, +151, 95, 70,190,125,205,205,168,173,217, 14, 89, 20, 49,118,252, 84, 12, 43, 45,197,222,237,111, 34,152,152, 63, 5, 32, 50, 76, +120,101,170,198, 29,147, 89,134,144,190,251, 16,101, 26,146,228,240,123,102, 96,238, 73, 28, 7, 15, 31,195, 11,127,223,160,203, + 95, 15, 39,139,248, 1,128, 80, 74, 49, 98, 68,241,245,109,173,158, 71,174,186,242, 34,246,194, 11, 47,192,216, 49,167,194,235, +110,197,151,117, 91, 16, 12,196,185, 23, 52, 93, 3,136,211, 70, 72,146,140,163,199, 58,177, 99,215,129,158, 87,223,220, 44, 73, +178,248,115, 81,164, 79,233,133, 29, 49, 98,232, 89,109,199,187, 23, 95,117,229, 69,100,201,197, 75, 48,246,180, 83,225,243,181, +226, 96,253, 22, 4,253,153,121,226, 89,178,144, 69, 25, 77,199,218,177,125,199,151,226,203,175,109,146,131,162,248, 22,165,244, + 51,189,176, 17,254, 87,125,147, 92,188,100, 9,198,142, 61, 21,126, 95, 59, 14,127,185, 29,193,160, 87, 21,105, 22,249,106,183, +101, 25, 77, 71,219,177,117,199,151, 98,216,120,141,249, 43, 56,235,172,179,232,167,159,126,138, 64, 32,112, 66,196, 95, 91, 91, +139,171,174,186, 10, 91,183,110, 53, 29, 57, 81,106,225,252,252,252,211,120, 78,126,212, 31, 16,167,248,124,129,161,148,210, 19, +250, 14, 97, 66, 32, 11, 2,127, 68,150,229, 79, 66, 33,105, 5,165,180, 54, 94,248,252,252,252, 33, 60, 43, 45,246, 7,197, 82, +175, 55,144, 3, 36,126, 36,120,150, 65,109, 54,190,155,138,242,145,160, 36,173,167,148,182,197, 11, 60, 96,249, 83,249, 72, 48, +152,152, 63,208,103, 0,193, 96, 48, 97, 71, 56, 27, 72,197, 0, 34, 79, 99,238,234,234,170, 7,176, 48, 43,204,250, 1, 93, 93, + 93,237, 0,158, 59,209, 60, 82,197,201,206, 95, 65, 48, 24, 68,125,125,125,204,227, 10,251,195,237,225,121,221,103, 38,196,133, +245,154, 84, 11, 25,131,205,102,107,153, 51,103, 78,250,139,244,211,228,144, 76,120, 98,166, 35,106,193,194, 87, 21, 39,212,207, +183, 96,225, 68,195, 50, 0, 11,131, 26,255, 31,244, 45,114, 84,193,188, 23, 3, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index a3dd6426f99..f4a7d615895 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -394,18 +394,18 @@ DEF_ICON(ICON_BLANK654) DEF_ICON(ICON_BLANK655) /* EMPTY */ -DEF_ICON(ICON_BLANK660) -DEF_ICON(ICON_BLANK661) -DEF_ICON(ICON_BLANK662) -DEF_ICON(ICON_BLANK663) -DEF_ICON(ICON_BLANK664) -DEF_ICON(ICON_BLANK665) -DEF_ICON(ICON_BLANK666) -DEF_ICON(ICON_BLANK667) -DEF_ICON(ICON_BLANK668) -DEF_ICON(ICON_BLANK669) -DEF_ICON(ICON_BLANK670) -DEF_ICON(ICON_BLANK671) +DEF_ICON(ICON_FORCE_FORCE) +DEF_ICON(ICON_FORCE_WIND) +DEF_ICON(ICON_FORCE_VORTEX) +DEF_ICON(ICON_FORCE_MAGNETIC) +DEF_ICON(ICON_FORCE_HARMONIC) +DEF_ICON(ICON_FORCE_CHARGE) +DEF_ICON(ICON_FORCE_LENNARDJONES) +DEF_ICON(ICON_FORCE_TEXTURE) +DEF_ICON(ICON_FORCE_CURVE) +DEF_ICON(ICON_FORCE_BOID) +DEF_ICON(ICON_FORCE_TURBULENCE) +DEF_ICON(ICON_FORCE_DRAG) DEF_ICON(ICON_BLANK672) DEF_ICON(ICON_BLANK673) DEF_ICON(ICON_BLANK674) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 16be0e32e17..e3d2ef336fc 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -235,19 +235,18 @@ void OBJECT_OT_add(wmOperatorType *ot) /********************* Add Effector Operator ********************/ /* copy from rna_object_force.c*/ static EnumPropertyItem field_type_items[] = { - {0, "NONE", 0, "None", ""}, - {PFIELD_FORCE, "FORCE", 0, "Force", ""}, - {PFIELD_WIND, "WIND", 0, "Wind", ""}, - {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""}, - {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""}, - {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""}, - {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""}, - {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""}, - {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""}, - {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""}, - {PFIELD_BOID, "BOID", 0, "Boid", ""}, - {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""}, - {PFIELD_DRAG, "DRAG", 0, "Drag", ""}, + {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""}, + {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""}, + {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""}, + {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""}, + {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""}, + {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""}, + {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""}, + {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""}, + {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""}, + {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""}, + {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""}, + {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""}, {0, NULL, 0, NULL, NULL}}; void add_effector_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */ diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 9e764419f19..0669344ec82 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -984,18 +984,18 @@ static void rna_def_field(BlenderRNA *brna) static EnumPropertyItem field_type_items[] = { {0, "NONE", 0, "None", ""}, - {PFIELD_FORCE, "FORCE", 0, "Force", ""}, - {PFIELD_WIND, "WIND", 0, "Wind", ""}, - {PFIELD_VORTEX, "VORTEX", 0, "Vortex", ""}, - {PFIELD_MAGNET, "MAGNET", 0, "Magnetic", ""}, - {PFIELD_HARMONIC, "HARMONIC", 0, "Harmonic", ""}, - {PFIELD_CHARGE, "CHARGE", 0, "Charge", ""}, - {PFIELD_LENNARDJ, "LENNARDJ", 0, "Lennard-Jones", ""}, - {PFIELD_TEXTURE, "TEXTURE", 0, "Texture", ""}, - {PFIELD_GUIDE, "GUIDE", 0, "Curve Guide", ""}, - {PFIELD_BOID, "BOID", 0, "Boid", ""}, - {PFIELD_TURBULENCE, "TURBULENCE", 0, "Turbulence", ""}, - {PFIELD_DRAG, "DRAG", 0, "Drag", ""}, + {PFIELD_FORCE, "FORCE", ICON_FORCE_FORCE, "Force", ""}, + {PFIELD_WIND, "WIND", ICON_FORCE_WIND, "Wind", ""}, + {PFIELD_VORTEX, "VORTEX", ICON_FORCE_VORTEX, "Vortex", ""}, + {PFIELD_MAGNET, "MAGNET", ICON_FORCE_MAGNETIC, "Magnetic", ""}, + {PFIELD_HARMONIC, "HARMONIC", ICON_FORCE_HARMONIC, "Harmonic", ""}, + {PFIELD_CHARGE, "CHARGE", ICON_FORCE_CHARGE, "Charge", ""}, + {PFIELD_LENNARDJ, "LENNARDJ", ICON_FORCE_LENNARDJONES, "Lennard-Jones", ""}, + {PFIELD_TEXTURE, "TEXTURE", ICON_FORCE_TEXTURE, "Texture", ""}, + {PFIELD_GUIDE, "GUIDE", ICON_FORCE_CURVE, "Curve Guide", ""}, + {PFIELD_BOID, "BOID", ICON_FORCE_BOID, "Boid", ""}, + {PFIELD_TURBULENCE, "TURBULENCE", ICON_FORCE_TURBULENCE, "Turbulence", ""}, + {PFIELD_DRAG, "DRAG", ICON_FORCE_DRAG, "Drag", ""}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem falloff_items[] = { -- cgit v1.2.3 From 6d7bb6593f472e297558b0ad67716224ed77c135 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 24 Nov 2009 15:45:45 +0000 Subject: Forgot this file. --- release/scripts/ui/space_view3d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 01318b82e0b..21521e36cba 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -188,10 +188,10 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() - layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA' - layout.operator("view3d.viewnumpad", text="Top").type = 'TOP' - layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT' - layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT' + layout.operator("view3d.viewnumpad").type = 'CAMERA' + layout.operator("view3d.viewnumpad").type = 'TOP' + layout.operator("view3d.viewnumpad").type = 'FRONT' + layout.operator("view3d.viewnumpad").type = 'RIGHT' layout.menu("VIEW3D_MT_view_cameras", text="Cameras") -- cgit v1.2.3 From f28975dbc493288403bf26e5018213c21a2e131c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 16:19:15 +0000 Subject: avoid operator type lookups when its known --- source/blender/editors/interface/interface.c | 2 +- source/blender/python/intern/bpy_operator.c | 4 +++- source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_operators.c | 9 +++++++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 819b153741d..49679b21a66 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2963,7 +2963,7 @@ PointerRNA *uiButGetOperatorPtrRNA(uiBut *but) { if(but->optype && !but->opptr) { but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr"); - WM_operator_properties_create(but->opptr, but->optype->idname); + WM_operator_properties_create_ptr(but->opptr, but->optype); } return but->opptr; diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index c2504ed2c50..6ae63f2ab65 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -230,7 +230,9 @@ static PyObject *pyop_getrna(PyObject *self, PyObject *value) //RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr); /* XXX - should call WM_operator_properties_free */ - WM_operator_properties_create(&ptr, ot->idname); + WM_operator_properties_create_ptr(&ptr, ot); + + pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr); pyrna->freeptr= TRUE; return (PyObject *)pyrna; diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index a99c90e01a1..a965b484087 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -193,6 +193,7 @@ int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int con void WM_operator_properties_alloc(struct PointerRNA **ptr, struct IDProperty **properties, const char *opstring); /* used for keymap and macro items */ void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring); +void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot); void WM_operator_properties_free(struct PointerRNA *ptr); void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type); void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 82506091bbd..7c92eadd1f9 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -466,7 +466,7 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i PropertyRNA *prop_default; char *buf_default; if(!all_args) { - WM_operator_properties_create(&opptr_default, ot->idname); + WM_operator_properties_create_ptr(&opptr_default, ot); } @@ -520,12 +520,17 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i return cstring; } +void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot) +{ + RNA_pointer_create(NULL, ot->srna, NULL, ptr); +} + void WM_operator_properties_create(PointerRNA *ptr, const char *opstring) { wmOperatorType *ot= WM_operatortype_find(opstring, 0); if(ot) - RNA_pointer_create(NULL, ot->srna, NULL, ptr); + WM_operator_properties_create_ptr(ptr, ot); else RNA_pointer_create(NULL, &RNA_OperatorProperties, NULL, ptr); } -- cgit v1.2.3 From dcd1642121a14ddc3191399fb7120fe0a15437ce Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 17:12:32 +0000 Subject: RNA api - EditBone was missing 'selected' - renamed 'selectable' to --> 'restrict_select', matching object mode. - renamed 'active_pchan' --> 'active_pose_bone' --- release/scripts/ui/properties_data_bone.py | 2 +- release/scripts/ui/space_view3d.py | 2 +- source/blender/blenkernel/BKE_context.h | 2 +- source/blender/blenkernel/intern/context.c | 4 ++-- source/blender/editors/armature/editarmature.c | 2 +- source/blender/editors/screen/screen_context.c | 4 ++-- source/blender/makesrna/intern/rna_armature.c | 9 +++++++-- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 3b8911b3896..40877a6be08 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -284,7 +284,7 @@ class BONE_PT_properties(BoneButtonsPanel): # reload(rna_prop_ui) obj = context.object if obj and obj.mode == 'POSE': - item = "active_pchan" + item = "active_pose_bone" else: item = "active_bone" diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 21521e36cba..edc526f3c55 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1775,7 +1775,7 @@ class VIEW3D_PT_context_properties(bpy.types.Panel): if obj: mode = obj.mode if mode == 'POSE': - return "active_pchan" + return "active_pose_bone" elif mode == 'EDIT' and obj.type == 'ARMATURE': return "active_bone" else: diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index 7f64538b10d..947ec914fa4 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -248,7 +248,7 @@ int CTX_data_selected_editable_bones(const bContext *C, ListBase *list); int CTX_data_visible_bones(const bContext *C, ListBase *list); int CTX_data_editable_bones(const bContext *C, ListBase *list); -struct bPoseChannel *CTX_data_active_pchan(const bContext *C); +struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C); int CTX_data_selected_pchans(const bContext *C, ListBase *list); int CTX_data_visible_pchans(const bContext *C, ListBase *list); diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index 21549f6b147..164e7a23d92 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -878,9 +878,9 @@ int CTX_data_editable_bones(const bContext *C, ListBase *list) return ctx_data_collection_get(C, "editable_bones", list); } -struct bPoseChannel *CTX_data_active_pchan(const bContext *C) +struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C) { - return ctx_data_pointer_get(C, "active_pchan"); + return ctx_data_pointer_get(C, "active_pose_bone"); } int CTX_data_selected_pchans(const bContext *C, ListBase *list) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 78ba73ce5d5..ce3e4cc8f8d 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -5149,7 +5149,7 @@ static int pose_select_parent_exec(bContext *C, wmOperator *op) bPoseChannel *pchan,*parent; /* Determine if there is an active bone */ - pchan=CTX_data_active_pchan(C); + pchan=CTX_data_active_pose_bone(C); if (pchan) { bArmature *arm= ob->data; parent=pchan->parent; diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 1ddc19a5ec0..cd80bcde19f 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -64,7 +64,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult "scene", "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", "visible_bones", "editable_bones", "selected_bones", "selected_editable_bones", - "visible_pchans", "selected_pchans", "active_bone", "active_pchan", + "visible_pchans", "selected_pchans", "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}; @@ -240,7 +240,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } - else if(CTX_data_equals(member, "active_pchan")) { + else if(CTX_data_equals(member, "active_pose_bone")) { bPoseChannel *pchan; pchan= get_active_posechannel(obact); diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index f1164cda675..8d84257e219 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -439,8 +439,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects."); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "selectable", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_UNSELECTABLE); + prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_UNSELECTABLE); RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); @@ -610,6 +610,11 @@ static void rna_def_edit_bone(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Locked", "Bone is not able to be transformed when in Edit Mode."); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED); + RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + prop= RNA_def_property(srna, "head_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL); RNA_def_property_ui_text(prop, "Head Selected", ""); -- cgit v1.2.3 From 1aebd524a222a084d96d07c1a3d41f0d5de6ad3a Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 24 Nov 2009 19:47:57 +0000 Subject: Fix for continuous grab on X11. Need to stop accumulating warp coordinates after the first cursor warp (store time of new generated event and skip warp for events time smaller). There's some interesting X11 code in there, if people are curious. --- intern/ghost/intern/GHOST_SystemX11.cpp | 75 ++++++++++++++++++++++++++++++--- intern/ghost/intern/GHOST_SystemX11.h | 9 ++++ 2 files changed, 79 insertions(+), 5 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index ff4a5956a12..3f5f52aa2ed 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -23,6 +23,9 @@ * * Contributor(s): none yet. * + * Part of this code has been taken from Qt, under LGPL license + * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). + * * ***** END GPL LICENSE BLOCK ***** */ @@ -126,6 +129,8 @@ GHOST_SystemX11( m_xclip_out= XInternAtom(m_display, "XCLIP_OUT", False); m_incr= XInternAtom(m_display, "INCR", False); m_utf8_string= XInternAtom(m_display, "UTF8_STRING", False); + m_last_warp = 0; + // compute the initial time timeval tv; @@ -310,6 +315,61 @@ static void SleepTillEvent(Display *display, GHOST_TInt64 maxSleep) { } } +/* This function borrowed from Qt's X11 support + * qclipboard_x11.cpp + * */ +struct init_timestamp_data +{ + Time timestamp; +}; + +static Bool init_timestamp_scanner(Display*, XEvent *event, XPointer arg) +{ + init_timestamp_data *data = + reinterpret_cast(arg); + switch(event->type) + { + case ButtonPress: + case ButtonRelease: + data->timestamp = event->xbutton.time; + break; + case MotionNotify: + data->timestamp = event->xmotion.time; + break; + case KeyPress: + case KeyRelease: + data->timestamp = event->xkey.time; + break; + case PropertyNotify: + data->timestamp = event->xproperty.time; + break; + case EnterNotify: + case LeaveNotify: + data->timestamp = event->xcrossing.time; + break; + case SelectionClear: + data->timestamp = event->xselectionclear.time; + break; + default: + break; + } + + return false; +} + +Time +GHOST_SystemX11:: +lastEventTime(Time default_time) { + init_timestamp_data data; + data.timestamp = default_time; + XEvent ev; + XCheckIfEvent(m_display, &ev, &init_timestamp_scanner, (XPointer)&data); + + return data.timestamp; +} + + + bool GHOST_SystemX11:: processEvents( @@ -405,10 +465,15 @@ GHOST_SystemX11::processEvent(XEvent *xe) window->getCursorGrabAccum(x_accum, y_accum); if(x_new != xme.x_root || y_new != xme.y_root) { - /* when wrapping we don't need to add an event because the - * setCursorPosition call will cause a new event after */ - setCursorPosition(x_new, y_new); /* wrap */ - window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new)); + if (xme.time > m_last_warp) { + /* when wrapping we don't need to add an event because the + * setCursorPosition call will cause a new event after */ + setCursorPosition(x_new, y_new); /* wrap */ + window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new)); + m_last_warp = lastEventTime(xme.time); + } else { + setCursorPosition(x_new, y_new); /* wrap but don't accumulate */ + } } else { g_event = new @@ -907,7 +972,7 @@ setCursorPosition( int rely = y-cy; XWarpPointer(m_display,None,None,0,0,0,0,relx,rely); - XFlush(m_display); + XSync(m_display, 0); /* Sync to process all requests */ return GHOST_kSuccess; } diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index 782f08f6737..d76c3991beb 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -266,6 +266,10 @@ private : /// A vector of keyboard key masks char m_keyboard_vector[32]; + /* to prevent multiple warp, we store the time of the last warp event + * and stop accumulating all events generated before that */ + Time m_last_warp; + /** * Return the ghost window associated with the * X11 window xwind @@ -281,6 +285,11 @@ private : XEvent *xe ); + Time + lastEventTime( + Time default_time + ); + bool generateWindowExposeEvents( ); -- cgit v1.2.3 From 6c55047b4019a3491934bae38bbf229e6b0e6a48 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Nov 2009 20:15:24 +0000 Subject: disallow dynamic sized rna arrays to be returned as mathutils types since it gives unpradictable results if in one case it returns a vector and another a rna float array. --- source/blender/python/intern/bpy_rna.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index b05483f8576..1693268a19c 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -140,18 +140,20 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) PyObject *ret= NULL; #ifdef USE_MATHUTILS - int type, subtype, totdim; + int subtype, totdim; int len; + /* disallow dynamic sized arrays to be wrapped since the size could change + * to a size mathutils does not support */ + if ((RNA_property_type(prop) != PROP_FLOAT) || (RNA_property_flag(prop) & PROP_DYNAMIC)) + return NULL; + len= RNA_property_array_length(ptr, prop); - type= RNA_property_type(prop); subtype= RNA_property_subtype(prop); totdim= RNA_property_array_dimension(ptr, prop, NULL); - if (type != PROP_FLOAT) return NULL; - if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) { - ret = pyrna_prop_CreatePyObject(ptr, prop); + ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */ switch(RNA_property_subtype(prop)) { case PROP_TRANSLATION: -- cgit v1.2.3 From 5b722b1e8755c2d3b0c981087f3016f16a2b891a Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 24 Nov 2009 22:44:29 +0000 Subject: BGE: replace mesh works for Soft Body (including reinstantiation of physics soft body mesh). Even a static mesh can be used as replacement: the mesh will be instantiated with the soft body settings of the object. The position and orientation of the soft body is preserved after the replacement. Known limitation: the velocity of the soft body is reset aftet the replacement. This is because soft body don't have a well defined velocity. --- .../gameengine/converter/KX_converter.vcproj | 16 +- .../gameengine/rasterizer/RAS_rasterizer.vcproj | 12 +- .../Converter/BL_BlenderDataConversion.cpp | 26 +- source/gameengine/Converter/BL_MeshDeformer.cpp | 2 +- source/gameengine/Converter/BL_MeshDeformer.h | 4 +- .../gameengine/Converter/BL_ModifierDeformer.cpp | 2 +- source/gameengine/Converter/BL_ModifierDeformer.h | 4 +- source/gameengine/Converter/BL_ShapeDeformer.cpp | 2 +- source/gameengine/Converter/BL_ShapeDeformer.h | 4 +- source/gameengine/Converter/BL_SkinDeformer.cpp | 6 +- source/gameengine/Converter/BL_SkinDeformer.h | 4 +- source/gameengine/Converter/BL_SkinMeshObject.cpp | 156 ------- source/gameengine/Converter/BL_SkinMeshObject.h | 67 --- .../gameengine/Converter/KX_SoftBodyDeformer.cpp | 120 +++++ source/gameengine/Converter/KX_SoftBodyDeformer.h | 102 +++++ source/gameengine/Ketsji/KX_BlenderMaterial.cpp | 3 +- source/gameengine/Ketsji/KX_BlenderMaterial.h | 3 +- .../gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp | 127 +----- source/gameengine/Ketsji/KX_Scene.cpp | 25 +- .../Physics/Bullet/CcdPhysicsController.cpp | 503 +++++++++------------ .../Physics/Bullet/CcdPhysicsController.h | 2 + .../Physics/Bullet/CcdPhysicsEnvironment.cpp | 6 +- source/gameengine/Rasterizer/CMakeLists.txt | 1 + source/gameengine/Rasterizer/RAS_MeshObject.cpp | 124 +++-- source/gameengine/Rasterizer/RAS_MeshObject.h | 12 +- source/gameengine/Rasterizer/SConscript | 2 +- 26 files changed, 603 insertions(+), 732 deletions(-) delete mode 100644 source/gameengine/Converter/BL_SkinMeshObject.cpp delete mode 100644 source/gameengine/Converter/BL_SkinMeshObject.h create mode 100644 source/gameengine/Converter/KX_SoftBodyDeformer.cpp create mode 100644 source/gameengine/Converter/KX_SoftBodyDeformer.h diff --git a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj index 4e05c05ff51..474ecb36f46 100644 --- a/projectfiles_vc9/gameengine/converter/KX_converter.vcproj +++ b/projectfiles_vc9/gameengine/converter/KX_converter.vcproj @@ -525,10 +525,6 @@ RelativePath="..\..\..\source\gameengine\Converter\BL_SkinDeformer.cpp" > - - @@ -561,6 +557,10 @@ RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp" > + + - - @@ -650,6 +646,10 @@ RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.h" > + + diff --git a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj index a8e1eb9428b..1554248f192 100644 --- a/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj +++ b/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj @@ -43,7 +43,7 @@ lay:(1<<20)-1; // all layers if no object. if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL) @@ -743,14 +742,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, tangent = (float(*)[3])dm->getFaceDataArray(dm, CD_TANGENT); } - // Determine if we need to make a skinned mesh - if (blenderobj && (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj))) - { - meshobj = new BL_SkinMeshObject(mesh); - skinMesh = true; - } - else - meshobj = new RAS_MeshObject(mesh); + meshobj = new RAS_MeshObject(mesh); // Extract avaiable layers MTF_localLayer *layers = new MTF_localLayer[MAX_MTFACE]; @@ -877,7 +869,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, if (kx_blmat == NULL) kx_blmat = new KX_BlenderMaterial(); - kx_blmat->Initialize(scene, bl_mat, skinMesh); + kx_blmat->Initialize(scene, bl_mat); polymat = static_cast(kx_blmat); } else { @@ -1736,30 +1728,34 @@ static KX_GameObject *gameobject_from_blenderobject( bool bHasDvert = mesh->dvert != NULL && ob->defbase.first; bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert); bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob); + bool bHasSoftBody = (!ob->parent && (ob->gameflag & OB_SOFT_BODY)); if (bHasModifier) { BL_ModifierDeformer *dcont = new BL_ModifierDeformer((BL_DeformableGameObject *)gameobj, - kxscene->GetBlenderScene(), ob, (BL_SkinMeshObject *)meshobj); + kxscene->GetBlenderScene(), ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); if (bHasShapeKey && bHasArmature) dcont->LoadShapeDrivers(ob->parent); } else if (bHasShapeKey) { // not that we can have shape keys without dvert! BL_ShapeDeformer *dcont = new BL_ShapeDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); if (bHasArmature) dcont->LoadShapeDrivers(ob->parent); } else if (bHasArmature) { BL_SkinDeformer *dcont = new BL_SkinDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); } else if (bHasDvert) { // this case correspond to a mesh that can potentially deform but not with the // object to which it is attached for the moment. A skin mesh was created in // BL_ConvertMesh() so must create a deformer too! BL_MeshDeformer *dcont = new BL_MeshDeformer((BL_DeformableGameObject*)gameobj, - ob, (BL_SkinMeshObject*)meshobj); + ob, meshobj); + ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); + } else if (bHasSoftBody) { + KX_SoftBodyDeformer *dcont = new KX_SoftBodyDeformer(meshobj, (BL_DeformableGameObject*)gameobj); ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont); } diff --git a/source/gameengine/Converter/BL_MeshDeformer.cpp b/source/gameengine/Converter/BL_MeshDeformer.cpp index 0abc344a844..516100394f6 100644 --- a/source/gameengine/Converter/BL_MeshDeformer.cpp +++ b/source/gameengine/Converter/BL_MeshDeformer.cpp @@ -41,7 +41,7 @@ #include "RAS_IPolygonMaterial.h" #include "BL_DeformableGameObject.h" #include "BL_MeshDeformer.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" diff --git a/source/gameengine/Converter/BL_MeshDeformer.h b/source/gameengine/Converter/BL_MeshDeformer.h index 1749d438d21..0a8c34992e2 100644 --- a/source/gameengine/Converter/BL_MeshDeformer.h +++ b/source/gameengine/Converter/BL_MeshDeformer.h @@ -50,7 +50,7 @@ public: virtual void Relink(GEN_Map*map); BL_MeshDeformer(BL_DeformableGameObject *gameobj, struct Object* obj, - class BL_SkinMeshObject *meshobj ): + class RAS_MeshObject *meshobj ): m_pMeshObject(meshobj), m_bmesh((struct Mesh*)(obj->data)), m_transverts(0), @@ -73,7 +73,7 @@ public: // virtual void InitDeform(double time){}; protected: - class BL_SkinMeshObject* m_pMeshObject; + class RAS_MeshObject* m_pMeshObject; struct Mesh* m_bmesh; // this is so m_transverts doesn't need to be converted diff --git a/source/gameengine/Converter/BL_ModifierDeformer.cpp b/source/gameengine/Converter/BL_ModifierDeformer.cpp index 0cdca74fea5..dfdc53acdf9 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.cpp +++ b/source/gameengine/Converter/BL_ModifierDeformer.cpp @@ -36,7 +36,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" #include "PHY_IGraphicController.h" //#include "BL_ArmatureController.h" diff --git a/source/gameengine/Converter/BL_ModifierDeformer.h b/source/gameengine/Converter/BL_ModifierDeformer.h index 5cc84c7d1e4..ef3a074630f 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.h +++ b/source/gameengine/Converter/BL_ModifierDeformer.h @@ -50,7 +50,7 @@ public: BL_ModifierDeformer(BL_DeformableGameObject *gameobj, Scene *scene, Object *bmeshobj, - BL_SkinMeshObject *mesh) + RAS_MeshObject *mesh) : BL_ShapeDeformer(gameobj,bmeshobj, mesh), m_lastModifierUpdate(-1), @@ -65,7 +65,7 @@ public: struct Scene *scene, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, BL_ArmatureObject* arma = NULL) : diff --git a/source/gameengine/Converter/BL_ShapeDeformer.cpp b/source/gameengine/Converter/BL_ShapeDeformer.cpp index 9b6d3f61705..c1761637d4e 100644 --- a/source/gameengine/Converter/BL_ShapeDeformer.cpp +++ b/source/gameengine/Converter/BL_ShapeDeformer.cpp @@ -36,7 +36,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" //#include "BL_ArmatureController.h" #include "DNA_armature_types.h" diff --git a/source/gameengine/Converter/BL_ShapeDeformer.h b/source/gameengine/Converter/BL_ShapeDeformer.h index ca3770d4006..46db0f71f6c 100644 --- a/source/gameengine/Converter/BL_ShapeDeformer.h +++ b/source/gameengine/Converter/BL_ShapeDeformer.h @@ -45,7 +45,7 @@ class BL_ShapeDeformer : public BL_SkinDeformer public: BL_ShapeDeformer(BL_DeformableGameObject *gameobj, Object *bmeshobj, - BL_SkinMeshObject *mesh) + RAS_MeshObject *mesh) : BL_SkinDeformer(gameobj,bmeshobj, mesh), m_lastShapeUpdate(-1) @@ -56,7 +56,7 @@ public: BL_ShapeDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma = NULL) diff --git a/source/gameengine/Converter/BL_SkinDeformer.cpp b/source/gameengine/Converter/BL_SkinDeformer.cpp index ecc45b2da1a..ea7242b0225 100644 --- a/source/gameengine/Converter/BL_SkinDeformer.cpp +++ b/source/gameengine/Converter/BL_SkinDeformer.cpp @@ -35,7 +35,7 @@ #include "GEN_Map.h" #include "STR_HashedString.h" #include "RAS_IPolygonMaterial.h" -#include "BL_SkinMeshObject.h" +#include "RAS_MeshObject.h" //#include "BL_ArmatureController.h" #include "DNA_armature_types.h" @@ -59,7 +59,7 @@ extern "C"{ BL_SkinDeformer::BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, BL_ArmatureObject* arma) : // BL_MeshDeformer(gameobj, bmeshobj, mesh), @@ -77,7 +77,7 @@ BL_SkinDeformer::BL_SkinDeformer( BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, // Blender object that owns the new mesh struct Object *bmeshobj_new, // Blender object that owns the original mesh - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma) : diff --git a/source/gameengine/Converter/BL_SkinDeformer.h b/source/gameengine/Converter/BL_SkinDeformer.h index 9c6f5db2b95..28f2d0bf644 100644 --- a/source/gameengine/Converter/BL_SkinDeformer.h +++ b/source/gameengine/Converter/BL_SkinDeformer.h @@ -55,14 +55,14 @@ public: BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, BL_ArmatureObject* arma = NULL); /* this second constructor is needed for making a mesh deformable on the fly. */ BL_SkinDeformer(BL_DeformableGameObject *gameobj, struct Object *bmeshobj_old, struct Object *bmeshobj_new, - class BL_SkinMeshObject *mesh, + class RAS_MeshObject *mesh, bool release_object, bool recalc_normal, BL_ArmatureObject* arma = NULL); diff --git a/source/gameengine/Converter/BL_SkinMeshObject.cpp b/source/gameengine/Converter/BL_SkinMeshObject.cpp deleted file mode 100644 index 4eb01df410b..00000000000 --- a/source/gameengine/Converter/BL_SkinMeshObject.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - * Deformer that supports armature skinning - */ - -#ifdef WIN32 -#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning -#endif //WIN32 - -#include "MEM_guardedalloc.h" - -#include "DNA_key_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" - -#include "RAS_BucketManager.h" -#include "RAS_IPolygonMaterial.h" - -#include "KX_GameObject.h" - -#include "BL_SkinMeshObject.h" -#include "BL_DeformableGameObject.h" - -BL_SkinMeshObject::BL_SkinMeshObject(Mesh* mesh) - : RAS_MeshObject (mesh) -{ - m_bDeformed = true; - - if (m_mesh && m_mesh->key) - { - KeyBlock *kb; - int count=0; - // initialize weight cache for shape objects - // count how many keys in this mesh - for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) - count++; - m_cacheWeightIndex.resize(count,-1); - } -} - -BL_SkinMeshObject::~BL_SkinMeshObject() -{ - if (m_mesh && m_mesh->key) - { - KeyBlock *kb; - // remove the weight cache to avoid memory leak - for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) { - if(kb->weights) - MEM_freeN(kb->weights); - kb->weights= NULL; - } - } -} - -void BL_SkinMeshObject::UpdateBuckets(void* clientobj,double* oglmatrix,bool useObjectColor,const MT_Vector4& rgbavec, bool visible, bool culled) -{ - list::iterator it; - list::iterator sit; - - for(it = m_materials.begin();it!=m_materials.end();++it) { - if(!it->m_slots[clientobj]) - continue; - - RAS_MeshSlot *slot = *it->m_slots[clientobj]; - slot->SetDeformer(((BL_DeformableGameObject*)clientobj)->GetDeformer()); - } - - RAS_MeshObject::UpdateBuckets(clientobj, oglmatrix, useObjectColor, rgbavec, visible, culled); -} - -static int get_def_index(Object* ob, const char* vgroup) -{ - bDeformGroup *curdef; - int index = 0; - - for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++) - if (!strcmp(curdef->name, vgroup)) - return index; - - return -1; -} - -void BL_SkinMeshObject::CheckWeightCache(Object* obj) -{ - KeyBlock *kb; - int kbindex, defindex; - MDeformVert *dvert= NULL; - int totvert, i, j; - float *weights; - - if (!m_mesh->key) - return; - - for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++) - { - // first check the cases where the weight must be cleared - if (kb->vgroup[0] == 0 || - m_mesh->dvert == NULL || - (defindex = get_def_index(obj, kb->vgroup)) == -1) { - if (kb->weights) { - MEM_freeN(kb->weights); - kb->weights = NULL; - } - m_cacheWeightIndex[kbindex] = -1; - } else if (m_cacheWeightIndex[kbindex] != defindex) { - // a weight array is required but the cache is not matching - if (kb->weights) { - MEM_freeN(kb->weights); - kb->weights = NULL; - } - - dvert= m_mesh->dvert; - totvert= m_mesh->totvert; - - weights= (float*)MEM_callocN(totvert*sizeof(float), "weights"); - - for (i=0; i < totvert; i++, dvert++) { - for(j=0; jtotweight; j++) { - if (dvert->dw[j].def_nr == defindex) { - weights[i]= dvert->dw[j].weight; - break; - } - } - } - kb->weights = weights; - m_cacheWeightIndex[kbindex] = defindex; - } - } -} - - diff --git a/source/gameengine/Converter/BL_SkinMeshObject.h b/source/gameengine/Converter/BL_SkinMeshObject.h deleted file mode 100644 index 838c6c3cb95..00000000000 --- a/source/gameengine/Converter/BL_SkinMeshObject.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef __BL_SKINMESHOBJECT -#define __BL_SKINMESHOBJECT - -#ifdef WIN32 -#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning -#endif //WIN32 - -#include "RAS_MeshObject.h" -#include "RAS_Deformer.h" -#include "RAS_IPolygonMaterial.h" - -#include "BL_MeshDeformer.h" - -class BL_SkinMeshObject : public RAS_MeshObject -{ -protected: - vector m_cacheWeightIndex; - -public: - BL_SkinMeshObject(Mesh* mesh); - ~BL_SkinMeshObject(); - - void UpdateBuckets(void* clientobj, double* oglmatrix, - bool useObjectColor, const MT_Vector4& rgbavec, bool visible, bool culled); - - // for shape keys, - void CheckWeightCache(struct Object* obj); - - -#ifdef WITH_CXX_GUARDEDALLOC -public: - void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_SkinMeshObject"); } - void operator delete( void *mem ) { MEM_freeN(mem); } -#endif -}; - -#endif - diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.cpp b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp new file mode 100644 index 00000000000..bee8751548a --- /dev/null +++ b/source/gameengine/Converter/KX_SoftBodyDeformer.cpp @@ -0,0 +1,120 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifdef WIN32 +#pragma warning (disable : 4786) +#endif //WIN32 + +#include "MT_assert.h" + +#include "KX_ConvertPhysicsObject.h" +#include "KX_SoftBodyDeformer.h" +#include "RAS_MeshObject.h" +#include "GEN_Map.h" +#include "GEN_HashedPtr.h" + +#ifdef USE_BULLET + +#include "CcdPhysicsEnvironment.h" +#include "CcdPhysicsController.h" +#include "BulletSoftBody/btSoftBody.h" + +#include "KX_BulletPhysicsController.h" +#include "btBulletDynamicsCommon.h" + +void KX_SoftBodyDeformer::Relink(GEN_Map*map) +{ + void **h_obj = (*map)[m_gameobj]; + + if (h_obj) { + m_gameobj = (BL_DeformableGameObject*)(*h_obj); + m_pMeshObject = m_gameobj->GetMesh(0); + } else { + m_gameobj = NULL; + m_pMeshObject = NULL; + } +} + +bool KX_SoftBodyDeformer::Apply(class RAS_IPolyMaterial *polymat) +{ + KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController(); + if (!ctrl) + return false; + + btSoftBody* softBody= ctrl->GetSoftBody(); + if (!softBody) + return false; + + //printf("apply\n"); + RAS_MeshSlot::iterator it; + RAS_MeshMaterial *mmat; + RAS_MeshSlot *slot; + size_t i; + + // update the vertex in m_transverts + Update(); + + // The vertex cache can only be updated for this deformer: + // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) + // share the same mesh (=the same cache). As the rendering is done per polymaterial + // cycling through the objects, the entire mesh cache cannot be updated in one shot. + mmat = m_pMeshObject->GetMeshMaterial(polymat); + if(!mmat->m_slots[(void*)m_gameobj]) + return true; + + slot = *mmat->m_slots[(void*)m_gameobj]; + + // for each array + for(slot->begin(it); !slot->end(it); slot->next(it)) + { + btSoftBody::tNodeArray& nodes(softBody->m_nodes); + + int index = 0; + for(i=it.startvertex; i= 0); + + MT_Point3 pt ( + nodes[v.getSoftBodyIndex()].m_x.getX(), + nodes[v.getSoftBodyIndex()].m_x.getY(), + nodes[v.getSoftBodyIndex()].m_x.getZ()); + v.SetXYZ(pt); + + MT_Vector3 normal ( + nodes[v.getSoftBodyIndex()].m_n.getX(), + nodes[v.getSoftBodyIndex()].m_n.getY(), + nodes[v.getSoftBodyIndex()].m_n.getZ()); + v.SetNormal(normal); + + } + } + return true; +} + +#endif diff --git a/source/gameengine/Converter/KX_SoftBodyDeformer.h b/source/gameengine/Converter/KX_SoftBodyDeformer.h new file mode 100644 index 00000000000..b55b2a745c0 --- /dev/null +++ b/source/gameengine/Converter/KX_SoftBodyDeformer.h @@ -0,0 +1,102 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef KX_SOFTBODYDEFORMER +#define KX_SOFTBODYDEFORMER + +#ifdef WIN32 +#pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning +#endif //WIN32 + +#include "RAS_Deformer.h" +#include "BL_DeformableGameObject.h" +#include + + +class KX_SoftBodyDeformer : public RAS_Deformer +{ + class RAS_MeshObject* m_pMeshObject; + class BL_DeformableGameObject* m_gameobj; + +public: + KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj) + :m_pMeshObject(pMeshObject), + m_gameobj(gameobj) + { + //printf("KX_SoftBodyDeformer\n"); + }; + + virtual ~KX_SoftBodyDeformer() + { + //printf("~KX_SoftBodyDeformer\n"); + }; + virtual void Relink(GEN_Map*map); + virtual bool Apply(class RAS_IPolyMaterial *polymat); + virtual bool Update(void) + { + //printf("update\n"); + m_bDynamic = true; + return true;//?? + } + virtual bool UpdateBuckets(void) + { + // this is to update the mesh slots outside the rasterizer, + // no need to do it for this deformer, it's done in any case in Apply() + return false; + } + + virtual RAS_Deformer *GetReplica() + { + KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this); + deformer->ProcessReplica(); + return deformer; + } + virtual void ProcessReplica() + { + // we have two pointers to deal with but we cannot do it now, will be done in Relink + m_bDynamic = false; + } + virtual bool SkipVertexTransform() + { + return true; + } + +protected: + //class RAS_MeshObject *m_pMesh; + +#ifdef WITH_CXX_GUARDEDALLOC +public: + void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_ShapeDeformer"); } + void operator delete( void *mem ) { MEM_freeN(mem); } +#endif +}; + + +#endif + diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp index f5086ca89ac..bab7c54a310 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp @@ -58,8 +58,7 @@ KX_BlenderMaterial::KX_BlenderMaterial() void KX_BlenderMaterial::Initialize( KX_Scene *scene, - BL_Material *data, - bool skin) + BL_Material *data) { RAS_IPolyMaterial::Initialize( data->texname[0], diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h index 088d17ea741..c5f5e23c6e7 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.h +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h @@ -33,8 +33,7 @@ public: KX_BlenderMaterial(); void Initialize( class KX_Scene* scene, - BL_Material* mat, - bool skin + BL_Material* mat ); virtual ~KX_BlenderMaterial(); diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp index 04e82d21cf4..bae32c74d1a 100644 --- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp +++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp @@ -32,12 +32,12 @@ #include "MT_assert.h" +#include "KX_SoftBodyDeformer.h" #include "KX_ConvertPhysicsObject.h" #include "BL_DeformableGameObject.h" #include "RAS_MeshObject.h" #include "KX_Scene.h" #include "SYS_System.h" -#include "BL_SkinMeshObject.h" #include "BulletSoftBody/btSoftBody.h" #include "PHY_Pro.h" //todo cleanup @@ -79,126 +79,6 @@ extern "C"{ #endif //WIN32 - - class KX_SoftBodyDeformer : public RAS_Deformer - { - class RAS_MeshObject* m_pMeshObject; - class BL_DeformableGameObject* m_gameobj; - - public: - KX_SoftBodyDeformer(RAS_MeshObject* pMeshObject,BL_DeformableGameObject* gameobj) - :m_pMeshObject(pMeshObject), - m_gameobj(gameobj) - { - //printf("KX_SoftBodyDeformer\n"); - }; - - virtual ~KX_SoftBodyDeformer() - { - //printf("~KX_SoftBodyDeformer\n"); - }; - virtual void Relink(GEN_Map*map) - { - void **h_obj = (*map)[m_gameobj]; - - if (h_obj) { - m_gameobj = (BL_DeformableGameObject*)(*h_obj); - m_pMeshObject = m_gameobj->GetMesh(0); - } else { - m_gameobj = NULL; - m_pMeshObject = NULL; - } - } - virtual bool Apply(class RAS_IPolyMaterial *polymat) - { - KX_BulletPhysicsController* ctrl = (KX_BulletPhysicsController*) m_gameobj->GetPhysicsController(); - if (!ctrl) - return false; - - btSoftBody* softBody= ctrl->GetSoftBody(); - if (!softBody) - return false; - - //printf("apply\n"); - RAS_MeshSlot::iterator it; - RAS_MeshMaterial *mmat; - RAS_MeshSlot *slot; - size_t i; - - // update the vertex in m_transverts - Update(); - - - - // The vertex cache can only be updated for this deformer: - // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) - // share the same mesh (=the same cache). As the rendering is done per polymaterial - // cycling through the objects, the entire mesh cache cannot be updated in one shot. - mmat = m_pMeshObject->GetMeshMaterial(polymat); - if(!mmat->m_slots[(void*)m_gameobj]) - return true; - - slot = *mmat->m_slots[(void*)m_gameobj]; - - // for each array - for(slot->begin(it); !slot->end(it); slot->next(it)) - { - btSoftBody::tNodeArray& nodes(softBody->m_nodes); - - int index = 0; - for(i=it.startvertex; i= 0); - - MT_Point3 pt ( - nodes[v.getSoftBodyIndex()].m_x.getX(), - nodes[v.getSoftBodyIndex()].m_x.getY(), - nodes[v.getSoftBodyIndex()].m_x.getZ()); - v.SetXYZ(pt); - - MT_Vector3 normal ( - nodes[v.getSoftBodyIndex()].m_n.getX(), - nodes[v.getSoftBodyIndex()].m_n.getY(), - nodes[v.getSoftBodyIndex()].m_n.getZ()); - v.SetNormal(normal); - - } - } - return true; - } - virtual bool Update(void) - { - //printf("update\n"); - m_bDynamic = true; - return true;//?? - } - virtual bool UpdateBuckets(void) - { - // this is to update the mesh slots outside the rasterizer, - // no need to do it for this deformer, it's done in any case in Apply() - return false; - } - - virtual RAS_Deformer *GetReplica() - { - KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this); - deformer->ProcessReplica(); - return deformer; - } - virtual void ProcessReplica() - { - // we have two pointers to deal with but we cannot do it now, will be done in Relink - m_bDynamic = false; - } - virtual bool SkipVertexTransform() - { - return true; - } - - protected: - //class RAS_MeshObject *m_pMesh; - }; - // forward declarations @@ -608,7 +488,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, physicscontroller->SetObject(gameobj->GetSGNode()); - +#if 0 ///test for soft bodies if (objprop->m_softbody && physicscontroller) { @@ -620,6 +500,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, gameobj->SetDeformer(softbodyDeformer); } } +#endif } @@ -651,7 +532,7 @@ bool KX_ReInstanceBulletShapeFromMesh(KX_GameObject *gameobj, KX_GameObject *fro shapeInfo = spc->GetShapeInfo(); - if(shapeInfo->m_shapeType != PHY_SHAPE_MESH || spc->GetSoftBody()) + if(shapeInfo->m_shapeType != PHY_SHAPE_MESH/* || spc->GetSoftBody()*/) return false; spc->DeleteControllerShape(); diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index d397d0db541..2aff57961d8 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -53,7 +53,6 @@ #include "SCA_JoystickManager.h" #include "RAS_MeshObject.h" -#include "BL_SkinMeshObject.h" #include "RAS_IRasterizer.h" #include "RAS_BucketManager.h" @@ -83,6 +82,7 @@ #include "BL_ModifierDeformer.h" #include "BL_ShapeDeformer.h" #include "BL_DeformableGameObject.h" +#include "KX_SoftBodyDeformer.h" // to get USE_BULLET! #include "KX_ConvertPhysicsObject.h" @@ -1076,7 +1076,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj->SetDeformer(NULL); } - if (mesh->IsDeformed()) /* checks GetMesh() isnt NULL */ + if (mesh->GetMesh()) { // we must create a new deformer but which one? KX_GameObject* parentobj = newobj->GetParent(); @@ -1097,12 +1097,14 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u blendobj->parent->type == OB_ARMATURE && blendobj->partype==PARSKEL && blendmesh->dvert!=NULL; // mesh has vertex group + bool bHasSoftBody = (!parentobj && (blendobj->gameflag & OB_SOFT_BODY)); + bool releaseParent = true; if (oldblendobj==NULL) { std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl; - bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false; + bHasShapeKey= bHasDvert= bHasArmature=bHasModifier=bHasSoftBody= false; } if (bHasModifier) @@ -1114,7 +1116,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj, m_blenderScene, oldblendobj, blendobj, - static_cast(mesh), + mesh, true, static_cast( parentobj ) ); @@ -1127,7 +1129,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u newobj, m_blenderScene, oldblendobj, blendobj, - static_cast(mesh), + mesh, false, NULL ); @@ -1142,7 +1144,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u shapeDeformer = new BL_ShapeDeformer( newobj, oldblendobj, blendobj, - static_cast(mesh), + mesh, true, true, static_cast( parentobj ) @@ -1155,7 +1157,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u shapeDeformer = new BL_ShapeDeformer( newobj, oldblendobj, blendobj, - static_cast(mesh), + mesh, false, true, NULL @@ -1168,7 +1170,7 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u BL_SkinDeformer* skinDeformer = new BL_SkinDeformer( newobj, oldblendobj, blendobj, - static_cast(mesh), + mesh, true, true, static_cast( parentobj ) @@ -1179,10 +1181,15 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u else if (bHasDvert) { BL_MeshDeformer* meshdeformer = new BL_MeshDeformer( - newobj, oldblendobj, static_cast(mesh) + newobj, oldblendobj, mesh ); newobj->SetDeformer(meshdeformer); } + else if (bHasSoftBody) + { + KX_SoftBodyDeformer *softdeformer = new KX_SoftBodyDeformer(mesh, newobj); + newobj->SetDeformer(softdeformer); + } // release parent reference if its not being used if( releaseParent && parentobj) diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 69b63affeef..98e67afdd44 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -161,338 +161,265 @@ btSoftBody* CcdPhysicsController::GetSoftBody() #include "BulletSoftBody/btSoftBodyHelpers.h" - -void CcdPhysicsController::CreateRigidbody() +bool CcdPhysicsController::CreateSoftbody() { - - //btTransform trans = GetTransformFromMotionState(m_MotionState); - m_bulletMotionState = new BlenderBulletMotionState(m_MotionState); - - ///either create a btCollisionObject, btRigidBody or btSoftBody - - //create a collision object - int shapeType = m_cci.m_collisionShape ? m_cci.m_collisionShape->getShapeType() : 0; //disable soft body until first sneak preview is ready - if (m_cci.m_bSoft && m_cci.m_collisionShape && - (shapeType == CONVEX_HULL_SHAPE_PROXYTYPE)| - (shapeType == TRIANGLE_MESH_SHAPE_PROXYTYPE) | - (shapeType == SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)) + if (!m_cci.m_bSoft || !m_cci.m_collisionShape || + (shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&& + (shapeType != TRIANGLE_MESH_SHAPE_PROXYTYPE) && + (shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)) { - btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); - rbci.m_linearDamping = m_cci.m_linearDamping; - rbci.m_angularDamping = m_cci.m_angularDamping; - rbci.m_friction = m_cci.m_friction; - rbci.m_restitution = m_cci.m_restitution; - - - - - - - btVector3 p(0,0,0);// = getOrigin(); - - - btSoftRigidDynamicsWorld* softDynaWorld = (btSoftRigidDynamicsWorld*)m_cci.m_physicsEnv->getDynamicsWorld(); - - PHY__Vector3 grav; - grav[0] = softDynaWorld->getGravity().getX(); - grav[1] = softDynaWorld->getGravity().getY(); - grav[2] = softDynaWorld->getGravity().getZ(); - softDynaWorld->getWorldInfo().m_gravity.setValue(grav[0],grav[1],grav[2]); //?? + return false; + } + btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + rbci.m_linearDamping = m_cci.m_linearDamping; + rbci.m_angularDamping = m_cci.m_angularDamping; + rbci.m_friction = m_cci.m_friction; + rbci.m_restitution = m_cci.m_restitution; - //btSoftBody* psb=btSoftBodyHelpers::CreateRope(sbi, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2); - - btSoftBody* psb = 0; - - if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE) - { - btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape; - - //psb = btSoftBodyHelpers::CreateFromConvexHull(sbi,&transformedVertices[0],convexHull->getNumPoints()); - - { - int nvertices = convexHull->getNumPoints(); - const btVector3* vertices = convexHull->getPoints(); - btSoftBodyWorldInfo& worldInfo = softDynaWorld->getWorldInfo(); - - HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); - HullResult hres; - HullLibrary hlib;/*??*/ - hdsc.mMaxVertices=nvertices; - hlib.CreateConvexHull(hdsc,hres); - - psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, - &hres.m_OutputVertices[0],0); - for(int i=0;i<(int)hres.mNumFaces;++i) - { - const int idx[]={ hres.m_Indices[i*3+0], - hres.m_Indices[i*3+1], - hres.m_Indices[i*3+2]}; - if(idx[0]appendLink( idx[0],idx[1]); - if(idx[1]appendLink( idx[1],idx[2]); - if(idx[2]appendLink( idx[2],idx[0]); - psb->appendFace(idx[0],idx[1],idx[2]); - } - - - - hlib.ReleaseResult(hres); - - - } - + btVector3 p(0,0,0);// = getOrigin(); + //btSoftBody* psb=btSoftBodyHelpers::CreateRope(worldInfo, btVector3(-10,0,i*0.25),btVector3(10,0,i*0.25), 16,1+2); + btSoftBody* psb = 0; + btSoftBodyWorldInfo& worldInfo = m_cci.m_physicsEnv->getDynamicsWorld()->getWorldInfo(); - - - - - } else + if (m_cci.m_collisionShape->getShapeType() == CONVEX_HULL_SHAPE_PROXYTYPE) + { + btConvexHullShape* convexHull = (btConvexHullShape* )m_cci.m_collisionShape; { + int nvertices = convexHull->getNumPoints(); + const btVector3* vertices = convexHull->getPoints(); + + HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); + HullResult hres; + HullLibrary hlib;/*??*/ + hdsc.mMaxVertices=nvertices; + hlib.CreateConvexHull(hdsc,hres); - btSoftBodyWorldInfo& sbi= softDynaWorld->getWorldInfo(); - - if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE) - { - btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape; - btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape(); - - ///only deal with meshes that have 1 sub part/component, for now - if (trimeshshape->getMeshInterface()->getNumSubParts()==1) - { - unsigned char* vertexBase; - PHY_ScalarType vertexType; - int numverts; - int vertexstride; - unsigned char* indexbase; - int indexstride; - int numtris; - PHY_ScalarType indexType; - trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - - psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris); - } - } else + psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, + &hres.m_OutputVertices[0],0); + for(int i=0;i<(int)hres.mNumFaces;++i) { - btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape; - ///only deal with meshes that have 1 sub part/component, for now - if (trimeshshape->getMeshInterface()->getNumSubParts()==1) - { - unsigned char* vertexBase; - PHY_ScalarType vertexType; - int numverts; - int vertexstride; - unsigned char* indexbase; - int indexstride; - int numtris; - PHY_ScalarType indexType; - trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - - psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,(const btScalar*)vertexBase,(const int*)indexbase,numtris); - } - - - //psb = btSoftBodyHelpers::CreateFromTriMesh(sbi,&pts[0].getX(),triangles,numtriangles); + const int idx[]={ hres.m_Indices[i*3+0], + hres.m_Indices[i*3+1], + hres.m_Indices[i*3+2]}; + if(idx[0]appendLink( idx[0],idx[1]); + if(idx[1]appendLink( idx[1],idx[2]); + if(idx[2]appendLink( idx[2],idx[0]); + psb->appendFace(idx[0],idx[1],idx[2]); } - + hlib.ReleaseResult(hres); } - if (m_cci.m_margin > 0.f) + } else + { + if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE) { - psb->getCollisionShape()->setMargin(m_cci.m_margin); - psb->updateBounds(); - } - - - m_object = psb; + btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape; + btBvhTriangleMeshShape* trimeshshape = scaledtrimeshshape->getChildShape(); - //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS;//btSoftBody::fCollision::CL_SS+ btSoftBody::fCollision::CL_RS; - - //psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RS + btSoftBody::fCollision::VF_SS;//CL_SS; - - - //btSoftBody::Material* pm=psb->appendMaterial(); - btSoftBody::Material* pm=psb->m_materials[0]; - pm->m_kLST = m_cci.m_soft_linStiff; - pm->m_kAST = m_cci.m_soft_angStiff; - pm->m_kVST = m_cci.m_soft_volume; - psb->m_cfg.collisions = 0; - - if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS) - { - psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS; - } else - { - psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS; - } - if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS) - { - psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS; + ///only deal with meshes that have 1 sub part/component, for now + if (trimeshshape->getMeshInterface()->getNumSubParts()==1) + { + unsigned char* vertexBase; + PHY_ScalarType vertexType; + int numverts; + int vertexstride; + unsigned char* indexbase; + int indexstride; + int numtris; + PHY_ScalarType indexType; + trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); + + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + } } else { - psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS; + btBvhTriangleMeshShape* trimeshshape = (btBvhTriangleMeshShape*) m_cci.m_collisionShape; + ///only deal with meshes that have 1 sub part/component, for now + if (trimeshshape->getMeshInterface()->getNumSubParts()==1) + { + unsigned char* vertexBase; + PHY_ScalarType vertexType; + int numverts; + int vertexstride; + unsigned char* indexbase; + int indexstride; + int numtris; + PHY_ScalarType indexType; + trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); + + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + } } + } + if (m_cci.m_margin > 0.f) + { + psb->getCollisionShape()->setMargin(m_cci.m_margin); + psb->updateBounds(); + } + m_object = psb; + + //btSoftBody::Material* pm=psb->appendMaterial(); + btSoftBody::Material* pm=psb->m_materials[0]; + pm->m_kLST = m_cci.m_soft_linStiff; + pm->m_kAST = m_cci.m_soft_angStiff; + pm->m_kVST = m_cci.m_soft_volume; + psb->m_cfg.collisions = 0; + + if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_RS) + { + psb->m_cfg.collisions += btSoftBody::fCollision::CL_RS; + } else + { + psb->m_cfg.collisions += btSoftBody::fCollision::SDF_RS; + } + if (m_cci.m_soft_collisionflags & CCD_BSB_COL_CL_SS) + { + psb->m_cfg.collisions += btSoftBody::fCollision::CL_SS; + } else + { + psb->m_cfg.collisions += btSoftBody::fCollision::VF_SS; + } - psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */ - psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */ - psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */ - psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - - psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */ - psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */ - - psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */ - psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */ - psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */ - psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */ - psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */ - psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */ - psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */ - psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */ + psb->m_cfg.kSRHR_CL = m_cci.m_soft_kSRHR_CL; /* Soft vs rigid hardness [0,1] (cluster only) */ + psb->m_cfg.kSKHR_CL = m_cci.m_soft_kSKHR_CL; /* Soft vs kinetic hardness [0,1] (cluster only) */ + psb->m_cfg.kSSHR_CL = m_cci.m_soft_kSSHR_CL; /* Soft vs soft hardness [0,1] (cluster only) */ + psb->m_cfg.kSR_SPLT_CL = m_cci.m_soft_kSR_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ - psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */ - psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */ + psb->m_cfg.kSK_SPLT_CL = m_cci.m_soft_kSK_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ + psb->m_cfg.kSS_SPLT_CL = m_cci.m_soft_kSS_SPLT_CL; /* Soft vs rigid impulse split [0,1] (cluster only) */ + psb->m_cfg.kVCF = m_cci.m_soft_kVCF; /* Velocities correction factor (Baumgarte) */ + psb->m_cfg.kDP = m_cci.m_soft_kDP; /* Damping coefficient [0,1] */ + psb->m_cfg.kDG = m_cci.m_soft_kDG; /* Drag coefficient [0,+inf] */ + psb->m_cfg.kLF = m_cci.m_soft_kLF; /* Lift coefficient [0,+inf] */ + psb->m_cfg.kPR = m_cci.m_soft_kPR; /* Pressure coefficient [-inf,+inf] */ + psb->m_cfg.kVC = m_cci.m_soft_kVC; /* Volume conversation coefficient [0,+inf] */ + psb->m_cfg.kDF = m_cci.m_soft_kDF; /* Dynamic friction coefficient [0,1] */ + psb->m_cfg.kMT = m_cci.m_soft_kMT; /* Pose matching coefficient [0,1] */ + psb->m_cfg.kCHR = m_cci.m_soft_kCHR; /* Rigid contacts hardness [0,1] */ + psb->m_cfg.kKHR = m_cci.m_soft_kKHR; /* Kinetic contacts hardness [0,1] */ - if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL) - { - psb->generateBendingConstraints(2,pm); - } + psb->m_cfg.kSHR = m_cci.m_soft_kSHR; /* Soft contacts hardness [0,1] */ + psb->m_cfg.kAHR = m_cci.m_soft_kAHR; /* Anchors hardness [0,1] */ - psb->m_cfg.piterations = m_cci.m_soft_piterations; - psb->m_cfg.viterations = m_cci.m_soft_viterations; - psb->m_cfg.diterations = m_cci.m_soft_diterations; - psb->m_cfg.citerations = m_cci.m_soft_citerations; + if (m_cci.m_gamesoftFlag & CCD_BSB_BENDING_CONSTRAINTS)//OB_SB_GOAL) + { + psb->generateBendingConstraints(2,pm); + } - if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL) - { - psb->setPose(false,true);// - } else - { - psb->setPose(true,false); - } + psb->m_cfg.piterations = m_cci.m_soft_piterations; + psb->m_cfg.viterations = m_cci.m_soft_viterations; + psb->m_cfg.diterations = m_cci.m_soft_diterations; + psb->m_cfg.citerations = m_cci.m_soft_citerations; + if (m_cci.m_gamesoftFlag & CCD_BSB_SHAPE_MATCHING)//OB_SB_GOAL) + { + psb->setPose(false,true);// + } else + { + psb->setPose(true,false); + } + + psb->randomizeConstraints(); - - psb->randomizeConstraints(); + if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS)) + { + psb->generateClusters(m_cci.m_soft_numclusteriterations); + } - if (m_cci.m_soft_collisionflags & (CCD_BSB_COL_CL_RS+CCD_BSB_COL_CL_SS)) - { - psb->generateClusters(m_cci.m_soft_numclusteriterations); - } + psb->setTotalMass(m_cci.m_mass); + + psb->setCollisionFlags(0); -// psb->activate(); -// psb->setActivationState(1); -// psb->setDeactivationTime(1.f); - - //psb->m_materials[0]->m_kLST = 0.1+(i/(btScalar)(n-1))*0.9; - psb->setTotalMass(m_cci.m_mass); - - psb->setCollisionFlags(0); + ///create a mapping between graphics mesh vertices and soft body vertices + { + RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh(); - ///create a mapping between graphics mesh vertices and soft body vertices + if (rasMesh && !m_softbodyMappingDone) { - RAS_MeshObject* rasMesh= GetShapeInfo()->GetMesh(); - - if (rasMesh && !m_softbodyMappingDone) + //printf("apply\n"); + RAS_MeshSlot::iterator it; + RAS_MeshMaterial *mmat; + RAS_MeshSlot *slot; + size_t i; + + //for each material + for (int m=0;mNumMaterials();m++) { - - //printf("apply\n"); - RAS_MeshSlot::iterator it; - RAS_MeshMaterial *mmat; - RAS_MeshSlot *slot; - size_t i; - - //for each material - for (int m=0;mNumMaterials();m++) + mmat = rasMesh->GetMeshMaterial(m); + + slot = mmat->m_baseslot; + for(slot->begin(it); !slot->end(it); slot->next(it)) { - // The vertex cache can only be updated for this deformer: - // Duplicated objects with more than one ploymaterial (=multiple mesh slot per object) - // share the same mesh (=the same cache). As the rendering is done per polymaterial - // cycling through the objects, the entire mesh cache cannot be updated in one shot. - mmat = rasMesh->GetMeshMaterial(m); - - slot = mmat->m_baseslot; - for(slot->begin(it); !slot->end(it); slot->next(it)) + int index = 0; + for(i=it.startvertex; isetSoftBodyIndex(0); + btScalar maxDistSqr = 1e30; + btSoftBody::tNodeArray& nodes(psb->m_nodes); + btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]); + for (int n=0;nsetSoftBodyIndex(0); - btScalar maxDistSqr = 1e30; - btSoftBody::tNodeArray& nodes(psb->m_nodes); - btVector3 xyz = btVector3(vertex->getXYZ()[0],vertex->getXYZ()[1],vertex->getXYZ()[2]); - for (int n=0;nsetSoftBodyIndex(n); - } + maxDistSqr = distSqr; + + vertex->setSoftBodyIndex(n); } } } } } } - - m_softbodyMappingDone = true; - - - - + } + m_softbodyMappingDone = true; + btTransform startTrans; + rbci.m_motionState->getWorldTransform(startTrans); -// m_object->setCollisionShape(rbci.m_collisionShape); - btTransform startTrans; + m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ()); + m_MotionState->setWorldOrientation(0,0,0,1); - if (rbci.m_motionState) - { - rbci.m_motionState->getWorldTransform(startTrans); - } else - { - startTrans = rbci.m_startWorldTransform; - } - //startTrans.setIdentity(); - - //m_object->setWorldTransform(startTrans); - //m_object->setInterpolationWorldTransform(startTrans); - m_MotionState->setWorldPosition(startTrans.getOrigin().getX(),startTrans.getOrigin().getY(),startTrans.getOrigin().getZ()); - m_MotionState->setWorldOrientation(0,0,0,1); + if (!m_prototypeTransformInitialized) + { + m_prototypeTransformInitialized = true; + m_softBodyTransformInitialized = true; + psb->transform(startTrans); + } + m_object->setCollisionFlags(m_object->getCollisionFlags() | m_cci.m_collisionFlags); + if (m_cci.m_do_anisotropic) + m_object->setAnisotropicFriction(m_cci.m_anisotropicFriction); + return true; +} - if (!m_prototypeTransformInitialized) - { - m_prototypeTransformInitialized = true; - m_softBodyTransformInitialized = true; - GetSoftBody()->transform(startTrans); - } -// btVector3 wp = m_softBody->getWorldTransform().getOrigin(); -// MT_Point3 center(wp.getX(),wp.getY(),wp.getZ()); -// m_gameobj->NodeSetWorldPosition(center); +void CcdPhysicsController::CreateRigidbody() +{ + //btTransform trans = GetTransformFromMotionState(m_MotionState); + m_bulletMotionState = new BlenderBulletMotionState(m_MotionState); - } else - { - btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); - rbci.m_linearDamping = m_cci.m_linearDamping; - rbci.m_angularDamping = m_cci.m_angularDamping; - rbci.m_friction = m_cci.m_friction; - rbci.m_restitution = m_cci.m_restitution; - m_object = new btRigidBody(rbci); - } + ///either create a btCollisionObject, btRigidBody or btSoftBody + if (CreateSoftbody()) + // soft body created, done + return; + + //create a rgid collision object + btRigidBody::btRigidBodyConstructionInfo rbci(m_cci.m_mass,m_bulletMotionState,m_collisionShape,m_cci.m_localInertiaTensor * m_cci.m_inertiaFactor); + rbci.m_linearDamping = m_cci.m_linearDamping; + rbci.m_angularDamping = m_cci.m_angularDamping; + rbci.m_friction = m_cci.m_friction; + rbci.m_restitution = m_cci.m_restitution; + m_object = new btRigidBody(rbci); // // init the rigidbody properly @@ -580,6 +507,20 @@ bool CcdPhysicsController::ReplaceControllerShape(btCollisionShape *newShape) m_collisionShape= newShape; m_cci.m_collisionShape= newShape; + if (GetSoftBody()) { + // soft body must be recreated + m_cci.m_physicsEnv->removeCcdPhysicsController(this); + delete m_object; + m_object = NULL; + // force complete reinitialization + m_softbodyMappingDone = false; + m_prototypeTransformInitialized = false; + m_softBodyTransformInitialized = false; + CreateSoftbody(); + assert(m_object); + // reinsert the new body + m_cci.m_physicsEnv->addCcdPhysicsController(this); + } /* Copied from CcdPhysicsEnvironment::addCcdPhysicsController() */ diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h index 02d723472f6..dcb0af62cf9 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h @@ -71,6 +71,7 @@ public: m_meshObject(NULL), m_unscaledShape(NULL), m_useGimpact(false), + m_forceReInstance(false), m_weldingThreshold1(0.f), m_shapeProxy(NULL) { @@ -372,6 +373,7 @@ protected: void GetWorldOrientation(btMatrix3x3& mat); void CreateRigidbody(); + bool CreateSoftbody(); bool Register() { return (m_registerCount++ == 0) ? true : false; diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 22722c0927a..5cd20a3ec12 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -375,9 +375,7 @@ m_scalingPropagated(false) //m_dynamicsWorld->getSolverInfo().m_solverMode= SOLVER_USE_WARMSTARTING + SOLVER_USE_2_FRICTION_DIRECTIONS + SOLVER_RANDMIZE_ORDER + SOLVER_USE_FRICTION_WARMSTARTING; m_debugDrawer = 0; - m_gravity = btVector3(0.f,-10.f,0.f); - m_dynamicsWorld->setGravity(m_gravity); - + setGravity(0.f,0.f,-9.81f); } void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl) @@ -884,7 +882,7 @@ void CcdPhysicsEnvironment::setGravity(float x,float y,float z) { m_gravity = btVector3(x,y,z); m_dynamicsWorld->setGravity(m_gravity); - + m_dynamicsWorld->getWorldInfo().m_gravity.setValue(x,y,z); } diff --git a/source/gameengine/Rasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/CMakeLists.txt index 0ae17af7634..ec485d82fee 100644 --- a/source/gameengine/Rasterizer/CMakeLists.txt +++ b/source/gameengine/Rasterizer/CMakeLists.txt @@ -34,6 +34,7 @@ SET(INC ../../../intern/string ../../../intern/moto/include ../../../extern/glew/include + ../../../intern/guardedalloc ../Expressions ${PYTHON_INC} ) diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp index ffc18e5612f..1143d9441c8 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp +++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp @@ -25,6 +25,12 @@ * * ***** END GPL LICENSE BLOCK ***** */ +#include "MEM_guardedalloc.h" + +#include "DNA_object_types.h" +#include "DNA_key_types.h" +#include "DNA_mesh_types.h" +#include "DNA_meshdata_types.h" #include "RAS_MeshObject.h" #include "RAS_IRasterizer.h" @@ -93,15 +99,35 @@ STR_String RAS_MeshObject::s_emptyname = ""; RAS_MeshObject::RAS_MeshObject(Mesh* mesh) : m_bModified(true), m_bMeshModified(true), - m_mesh(mesh), - m_bDeformed(false) + m_mesh(mesh) { + if (m_mesh && m_mesh->key) + { + KeyBlock *kb; + int count=0; + // initialize weight cache for shape objects + // count how many keys in this mesh + for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) + count++; + m_cacheWeightIndex.resize(count,-1); + } } RAS_MeshObject::~RAS_MeshObject() { vector::iterator it; + if (m_mesh && m_mesh->key) + { + KeyBlock *kb; + // remove the weight cache to avoid memory leak + for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) { + if(kb->weights) + MEM_freeN(kb->weights); + kb->weights= NULL; + } + } + for(it=m_Polygons.begin(); it!=m_Polygons.end(); it++) delete (*it); @@ -430,39 +456,6 @@ void RAS_MeshObject::AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* } } -void RAS_MeshObject::UpdateBuckets(void* clientobj, - double* oglmatrix, - bool useObjectColor, - const MT_Vector4& rgbavec, - bool visible, - bool culled) -{ - list::iterator it; - - for(it = m_materials.begin();it!=m_materials.end();++it) { - RAS_MeshSlot **msp = it->m_slots[clientobj]; - - if(!msp) - continue; - - RAS_MeshSlot *ms = *msp; - - ms->m_mesh = this; - ms->m_OpenGLMatrix = oglmatrix; - ms->m_bObjectColor = useObjectColor; - ms->m_RGBAcolor = rgbavec; - ms->m_bVisible = visible; - ms->m_bCulled = culled || !visible; - if (!ms->m_bCulled) - ms->m_bucket->ActivateMesh(ms); - - /* split if necessary */ -#ifdef USE_SPLIT - ms->Split(); -#endif - } -} - void RAS_MeshObject::RemoveFromBuckets(void *clientobj) { list::iterator it; @@ -560,3 +553,64 @@ void RAS_MeshObject::SchedulePolygons(int drawingmode) } } +static int get_def_index(Object* ob, const char* vgroup) +{ + bDeformGroup *curdef; + int index = 0; + + for (curdef = (bDeformGroup*)ob->defbase.first; curdef; curdef=(bDeformGroup*)curdef->next, index++) + if (!strcmp(curdef->name, vgroup)) + return index; + + return -1; +} + +void RAS_MeshObject::CheckWeightCache(Object* obj) +{ + KeyBlock *kb; + int kbindex, defindex; + MDeformVert *dvert= NULL; + int totvert, i, j; + float *weights; + + if (!m_mesh->key) + return; + + for(kbindex=0, kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next, kbindex++) + { + // first check the cases where the weight must be cleared + if (kb->vgroup[0] == 0 || + m_mesh->dvert == NULL || + (defindex = get_def_index(obj, kb->vgroup)) == -1) { + if (kb->weights) { + MEM_freeN(kb->weights); + kb->weights = NULL; + } + m_cacheWeightIndex[kbindex] = -1; + } else if (m_cacheWeightIndex[kbindex] != defindex) { + // a weight array is required but the cache is not matching + if (kb->weights) { + MEM_freeN(kb->weights); + kb->weights = NULL; + } + + dvert= m_mesh->dvert; + totvert= m_mesh->totvert; + + weights= (float*)MEM_callocN(totvert*sizeof(float), "weights"); + + for (i=0; i < totvert; i++, dvert++) { + for(j=0; jtotweight; j++) { + if (dvert->dw[j].def_nr == defindex) { + weights[i]= dvert->dw[j].weight; + break; + } + } + } + kb->weights = weights; + m_cacheWeightIndex[kbindex] = defindex; + } + } +} + + diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h index c9ca8152a7e..820d537ab10 100644 --- a/source/gameengine/Rasterizer/RAS_MeshObject.h +++ b/source/gameengine/Rasterizer/RAS_MeshObject.h @@ -70,9 +70,9 @@ private: struct fronttoback; protected: + vector m_cacheWeightIndex; list m_materials; Mesh* m_mesh; - bool m_bDeformed; public: // for now, meshes need to be in a certain layer (to avoid sorting on lights in realtime) @@ -80,7 +80,8 @@ public: virtual ~RAS_MeshObject(); - bool IsDeformed() { return (m_bDeformed && m_mesh); } + // for shape keys, + void CheckWeightCache(struct Object* obj); /* materials */ int NumMaterials(); @@ -132,13 +133,6 @@ public: /* buckets */ virtual void AddMeshUser(void *clientobj, SG_QList *head, RAS_Deformer* deformer); - virtual void UpdateBuckets( - void* clientobj, - double* oglmatrix, - bool useObjectColor, - const MT_Vector4& rgbavec, - bool visible, - bool culled); void RemoveFromBuckets(void *clientobj); void EndConversion() { diff --git a/source/gameengine/Rasterizer/SConscript b/source/gameengine/Rasterizer/SConscript index 4bcc0f72588..8bc99f1596e 100644 --- a/source/gameengine/Rasterizer/SConscript +++ b/source/gameengine/Rasterizer/SConscript @@ -4,7 +4,7 @@ Import ('env') sources = env.Glob('*.cpp') -incs = '. #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna' +incs = '. #intern/guardedalloc #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/BlenderRoutines #extern/glew/include #source/gameengine/Expressions #source/gameengine/SceneGraph #source/blender/blenkernel #source/blender/makesdna' defs = [ 'GLEW_STATIC' ] -- cgit v1.2.3 From 7b6bc0225d1bcddbd3a8958c87b8be688b4f8699 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Tue, 24 Nov 2009 23:24:56 +0000 Subject: Add guardealloc for RAS_MeshObject.cpp (and clean whitespace). --- source/gameengine/Rasterizer/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile index eafa2ded2f2..d4cc6ab2652 100644 --- a/source/gameengine/Rasterizer/Makefile +++ b/source/gameengine/Rasterizer/Makefile @@ -37,8 +37,9 @@ CCFLAGS += $(LEVEL_1_CPP_WARNINGS) CPPFLAGS += -I$(NAN_GLEW)/include CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include +CPPFLAGS += -I$(NAN_STRING)/include CPPFLAGS += -I$(NAN_MOTO)/include +CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include CPPFLAGS += -I../../kernel/gen_system CPPFLAGS += -I../../blender/makesdna CPPFLAGS += -I../SceneGraph @@ -48,7 +49,7 @@ CPPFLAGS += -I../Expressions CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings + CPPFLAGS += -fpascal-strings endif ############### -- cgit v1.2.3 From ce4b63aa3f4f892703e6223a2546e067b446a98c Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 25 Nov 2009 08:28:57 +0000 Subject: Fix for [#20008] In the Graph Editor, clicking on the eye doesn't update the GUI As part of this, fixed a typo in rna flags which was causing some strange behaviour with icons earlier. Reverted the workaround for this, too. --- source/blender/editors/animation/fmodifier_ui.c | 32 ++++++++++------------ source/blender/editors/interface/interface.c | 1 + source/blender/editors/interface/interface_utils.c | 5 ++-- source/blender/makesrna/RNA_types.h | 2 +- source/blender/makesrna/intern/rna_fcurve.c | 32 ++++++++++++++++++++-- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index b1241bd274c..2448f1b8596 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -111,16 +111,6 @@ static void validate_fmodifier_cb (bContext *C, void *fcm_v, void *dummy) fmi->verify_data(fcm); } -/* callback to set the active modifier */ -static void activate_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) -{ - ListBase *modifiers = (ListBase *)fmods_v; - FModifier *fcm= (FModifier *)fcm_v; - - /* call API function to set the active modifier for active modifier-stack */ - set_active_fmodifier(modifiers, fcm); -} - /* callback to remove the given modifier */ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) { @@ -636,6 +626,10 @@ void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id uiBlock *block; uiBut *but; short width= 314; + PointerRNA ptr; + + /* init the RNA-pointer */ + RNA_pointer_create(id, &RNA_FModifierFunctionGenerator, fcm, &ptr); /* draw header */ { @@ -645,31 +639,33 @@ void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id row= uiLayoutRow(box, 0); block= uiLayoutGetBlock(row); // err... - uiBlockSetEmboss(block, UI_EMBOSSN); - /* left-align -------------------------------------------- */ subrow= uiLayoutRow(row, 0); uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT); + uiBlockSetEmboss(block, UI_EMBOSSN); + /* expand */ - uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_EXPANDED, B_REDR, ICON_TRIA_RIGHT, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is expanded."); + uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY); /* checkbox for 'active' status (for now) */ - but= uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_ACTIVE, B_REDR, ICON_RADIOBUT_OFF, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is active one."); - uiButSetFunc(but, activate_fmodifier_cb, modifiers, fcm); + uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY); /* name */ if (fmi) - uiDefBut(block, LABEL, 1, fmi->name, 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one."); + uiItemL(subrow, fmi->name, 0); else - uiDefBut(block, LABEL, 1, "", 0, 0, 150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier active one."); + uiItemL(subrow, "", 0); /* right-align ------------------------------------------- */ subrow= uiLayoutRow(row, 0); uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT); + /* 'mute' button */ - uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_MUTED, B_REDR, ICON_MUTE_IPO_OFF, 0, 0, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 0, "Modifier is temporarily muted (not evaluated)."); + uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY); + + uiBlockSetEmboss(block, UI_EMBOSSN); /* delete button */ but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete F-Curve Modifier."); diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 49679b21a66..23ad50d448b 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2235,6 +2235,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short but->bit= type & BIT; but->bitnr= type & 31; but->icon = 0; + but->iconadd=0; but->retval= retval; if( strlen(str)>=UI_MAX_NAME_STR-1 ) { diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index cb6cc5dcacf..ecd8c9720c8 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -69,11 +69,10 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind else value= RNA_property_boolean_get(ptr, prop); - // XXX: when to do TOG, and when to do ICONTOG? for now, let's just do TOG, since ICONTOG causes too much trouble everywhere else if(icon && name && strcmp(name, "") == 0) - but= uiDefIconButR(block, TOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconButR(block, ICONTOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else if(icon) - but= uiDefIconTextButR(block, TOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); break; diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 5e29827270f..ff01f76fe71 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -140,7 +140,7 @@ typedef enum PropertyFlag { PROP_ANIMATEABLE = 1<<1, /* icon */ - PROP_ICONS_CONSECUTIVE = 1<12, + PROP_ICONS_CONSECUTIVE = 1<<12, /* hidden in the user interface */ PROP_HIDDEN = 1<<19, diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 0b295f4c613..19e4f90f7e7 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -252,6 +252,30 @@ static int rna_FCurve_modifiers_remove(FCurve *fcu, bContext *C, int index) return remove_fmodifier_index(&fcu->modifiers, index); } +static void rna_Fmodifier_active_set(PointerRNA *ptr, int value) +{ + FModifier *fm= (FModifier*)ptr->data; + + /* don't toggle, always switch on */ + fm->flag |= FMODIFIER_FLAG_ACTIVE; +} + +static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr) +{ + FModifier *fm, *fmo= (FModifier*)ptr->data; + + /* clear active state of other FModifiers in this list */ + for (fm=fmo->prev; fm; fm=fm->prev) + { + fm->flag &= ~FMODIFIER_FLAG_ACTIVE; + } + for (fm=fmo->next; fm; fm=fm->next) + { + fm->flag &= ~FMODIFIER_FLAG_ACTIVE; + } + +} + #else static void rna_def_fmodifier_generator(BlenderRNA *brna) @@ -629,12 +653,13 @@ static void rna_def_fmodifier(BlenderRNA *brna) prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED); RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be evaluated."); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); + RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1); // XXX this is really an internal flag, but it may be useful for some tools to be able to access this... prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE); @@ -647,7 +672,9 @@ static void rna_def_fmodifier(BlenderRNA *brna) prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_ACTIVE); RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one being edited "); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Fmodifier_active_set"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_Fmodifier_active_update"); + RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1); } /* *********************** */ @@ -809,7 +836,6 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve modifier."); - /* Constraint collection */ func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); -- cgit v1.2.3 From 802779eb2d266f6a1de717fe9e7dcadc9774a7d3 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 25 Nov 2009 09:25:58 +0000 Subject: Assorted fixes - compile + drivers: * Fixed a few compile warnings for scons+mingw * Driver variables are now added with the ID-type set to ID_OB (objects) by default since this is more convenient --- source/blender/blenkernel/intern/fcurve.c | 3 +++ source/blender/blenkernel/intern/sequence.c | 2 +- source/blender/editors/animation/drivers.c | 10 +++++++--- source/blender/editors/interface/interface_draw.c | 4 ++-- source/blender/editors/object/object_vgroup.c | 3 ++- source/blender/python/intern/bpy_rna.c | 2 +- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index c451168a005..e90fccf6b29 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -731,6 +731,9 @@ DriverTarget *driver_add_new_target (ChannelDriver *driver) dtar= MEM_callocN(sizeof(DriverTarget), "DriverTarget"); BLI_addtail(&driver->targets, dtar); + /* make the default ID-type ID_OB, since most driver targets refer to objects */ + dtar->idtype= ID_OB; + /* give the target a 'unique' name */ strcpy(dtar->name, "var"); BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64); diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index 07969704521..1920e82b4ab 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -2007,7 +2007,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int } } } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions - Scene *sce= seq->scene, *oldsce= scene; + Scene *sce= seq->scene;// *oldsce= scene; Render *re; RenderResult rres; char scenename[64]; diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index e731faaf103..d7d3c21607f 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -53,6 +53,7 @@ #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" @@ -175,14 +176,17 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla fcu= verify_driver_fcurve(id, rna_path, array_index, 1); if (fcu && fcu->driver) { - fcu->driver->type= type; + ChannelDriver *driver= fcu->driver; + + /* set the type of the driver */ + driver->type= type; /* fill in current value for python */ if (type == DRIVER_TYPE_PYTHON) { PropertyType proptype= RNA_property_type(prop); int array= RNA_property_array_length(&ptr, prop); - char *expression= fcu->driver->expression; - int val, maxlen= sizeof(fcu->driver->expression); + char *expression= driver->expression; + int val, maxlen= sizeof(driver->expression); float fval; if (proptype == PROP_BOOLEAN) { diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 92bbd1c6573..762ec541bff 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -468,8 +468,8 @@ void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect extern char datatoc_splash_png[]; extern int datatoc_splash_png_size; ImBuf *ibuf; - GLint scissor[4]; - int w, h; + //GLint scissor[4]; + //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); diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 99bfea38c49..d9c21a9c9a5 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1786,4 +1786,5 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "group", vgroup_items, 0, "Group", "Vertex group to set as active."); RNA_def_enum_funcs(prop, vgroup_itemf); -} \ No newline at end of file +} + diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 1693268a19c..56981e0fe0a 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1473,7 +1473,7 @@ static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args) static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self) { char *path; - PropertyRNA *prop; + PropertyRNA *prop = self->prop; PyObject *ret; path= RNA_path_from_ID_to_property(&self->ptr, self->prop); -- cgit v1.2.3 From c410a0e8552878adbeda41621dfb00663657fc61 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 10:13:24 +0000 Subject: rna py api, generic rna function driver_add(), now returns the driver added (or a list of drivers if all channels are set) --- source/blender/python/intern/bpy_rna.c | 37 +++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 56981e0fe0a..fd5e1ddf75c 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -39,6 +39,9 @@ #include "BKE_global.h" /* evil G.* */ #include "BKE_report.h" +#include "BKE_animsys.h" +#include "BKE_fcurve.h" + /* only for keyframing */ #include "DNA_scene_types.h" #include "DNA_anim_types.h" @@ -1358,7 +1361,7 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args) char *path, *path_full; int index= -1; /* default to all */ PropertyRNA *prop; - PyObject *result; + PyObject *ret; if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index)) return NULL; @@ -1387,10 +1390,38 @@ static PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args) return NULL; } - result= PyBool_FromLong( ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)); + if(ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)) { + ID *id= self->ptr.id.data; + AnimData *adt= BKE_animdata_from_id(id); + FCurve *fcu; + + PointerRNA tptr; + PyObject *item; + + if(index == -1) { /* all, use a list */ + int i= 0; + ret= PyList_New(0); + while((fcu= list_find_fcurve(&adt->drivers, path_full, i++))) { + RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr); + item= pyrna_struct_CreatePyObject(&tptr); + PyList_Append(ret, item); + Py_DECREF(item); + } + } + else { + fcu= list_find_fcurve(&adt->drivers, path_full, index); + RNA_pointer_create(id, &RNA_FCurve, fcu, &tptr); + ret= pyrna_struct_CreatePyObject(&tptr); + } + } + else { + ret= Py_None; + Py_INCREF(ret); + } + MEM_freeN(path_full); - return result; + return ret; } static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args) -- cgit v1.2.3 From 50e3bb7f5f34516718c9d0cd36c0ff1677bf2e55 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 10:39:02 +0000 Subject: RNA: FModifier generator coefficients wrapped, implemented by Campbell. --- source/blender/makesrna/intern/rna_fcurve.c | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 19e4f90f7e7..8d6a91191f4 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -276,6 +276,33 @@ static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr) } +static int rna_FM_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + FModifier *fm= (FModifier*)ptr->data; + FMod_Generator *gen= fm->data; + + if(gen) + length[0]= gen->arraysize; + else + length[0]= 100; /* for raw_access, untested */ + + return length[0]; +} + +static void rna_FM_get(PointerRNA *ptr, float *values) +{ + FModifier *fm= (FModifier*)ptr->data; + FMod_Generator *gen= fm->data; + memcpy(values, gen->coefficients, gen->arraysize * sizeof(float)); +} + +static void rna_FM_set(PointerRNA *ptr, const float *values) +{ + FModifier *fm= (FModifier*)ptr->data; + FMod_Generator *gen= fm->data; + memcpy(gen->coefficients, values, gen->arraysize * sizeof(float)); +} + #else static void rna_def_fmodifier_generator(BlenderRNA *brna) @@ -311,6 +338,14 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Polynomial Order", "The highest power of 'x' for this polynomial. (number of coefficients - 1)"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + + prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE); + RNA_def_property_array(prop, 32); + RNA_def_property_flag(prop, PROP_DYNAMIC); + RNA_def_property_dynamic_array_funcs(prop, "rna_FM_get_length"); + RNA_def_property_float_funcs(prop, "rna_FM_get", "rna_FM_set", NULL); + RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); + /* coefficients array */ // FIXME: this is quite difficult to try to wrap //prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE); -- cgit v1.2.3 From b40307df1630e7bd51a181878bd61693b32dd817 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 11:05:11 +0000 Subject: add access to bone add/remove from rna. eg. bone = arm.edit_bones.new("SomeBone") arm.edit_bones.remove(bone) regify (WIP) --- release/scripts/modules/rigify.py | 170 +++++++++++++++++++-- source/blender/collada/DocumentImporter.cpp | 5 +- source/blender/editors/animation/keyframing.c | 4 +- source/blender/editors/armature/armature_intern.h | 1 - source/blender/editors/armature/editarmature.c | 34 ++--- .../editors/armature/editarmature_generate.c | 4 +- .../blender/editors/armature/editarmature_sketch.c | 2 +- source/blender/editors/include/ED_anim_api.h | 2 +- source/blender/editors/include/ED_armature.h | 3 +- source/blender/makesrna/intern/rna_armature.c | 29 +++- source/blender/makesrna/intern/rna_fcurve.c | 10 +- source/blender/makesrna/intern/rna_pose.c | 2 +- 12 files changed, 213 insertions(+), 53 deletions(-) diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py index 6f316a7ef4f..2655079003a 100644 --- a/release/scripts/modules/rigify.py +++ b/release/scripts/modules/rigify.py @@ -22,7 +22,6 @@ from functools import reduce # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get - empty_layer = [False] * 16 @@ -42,10 +41,44 @@ def get_bone_data(obj, bone_name): def bone_basename(name): return name.split(".")[0] -def add_bone(arm, name): - '''Must be in editmode''' - bpy.ops.armature.bone_primitive_add(name=name) - return arm.edit_bones[-1] +def add_stretch_to(obj, from_name, to_name, name): + ''' + Adds a bone that stretches from one to another + ''' + + is_editmode = (obj.mode == 'EDIT') + if not is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + stretch_ebone = arm.edit_bones.new(name) + stretch_name = stretch_ebone.name + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() + tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + + + # Now for the constraint + bpy.ops.object.mode_set(mode='OBJECT') + from_pbone = obj.pose.bones[from_name] + to_pbone = obj.pose.bones[to_name] + stretch_pbone = obj.pose.bones[stretch_name] + + con = stretch_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_name + + con = stretch_pbone.constraints.new('STRETCH_TO') + con.target = obj + con.subtarget = to_name + con.original_length = (head-tail).length + con.keep_axis = 'PLANE_X' + con.volume = 'NO_VOLUME' + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + #else: + # bpy.ops.object.mode_set(mode='OBJECT') + def gen_finger(obj, orig_bone_name): @@ -64,7 +97,7 @@ def gen_finger(obj, orig_bone_name): base_name = bone_basename(orig_pbone.name) # first make a new bone at the location of the finger - control_ebone = add_bone(arm, base_name) + control_ebone = arm.edit_bones.new(base_name) control_bone_name = control_ebone.name # we dont know if we get the name requested # Place the finger bone @@ -94,7 +127,7 @@ def gen_finger(obj, orig_bone_name): driver_bone_name = child_bone_name.split('.') driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) - driver_ebone = add_bone(arm, driver_bone_name) + driver_ebone = arm.edit_bones.new(driver_bone_name) driver_bone_name = driver_ebone.name # cant be too sure! driver_ebone.layer = other_layer @@ -119,7 +152,7 @@ def gen_finger(obj, orig_bone_name): del control_ebone - + # *** POSEMODE bpy.ops.object.mode_set(mode='OBJECT') @@ -161,10 +194,10 @@ def gen_finger(obj, orig_bone_name): obj, arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) driver_pbone.rotation_mode = 'YZX' - driver_pbone.driver_add("rotation_euler", 0) + fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) #obj.driver_add('pose.bones["%s"].scale', 1) - fcurve_driver = obj.animation_data.drivers[-1] # XXX, WATCH THIS + #obj.animation_data.drivers[-1] # XXX, WATCH THIS driver = fcurve_driver.driver # scale target @@ -189,20 +222,133 @@ def gen_finger(obj, orig_bone_name): driver.expression = '(-scale+1.0)*pi*2.0*br' obj, arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) - + # only allow X rotation driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) i += 1 +def gen_delta(obj, delta_name): + ''' + Use this bone to define a delta thats applied to its child in pose mode. + ''' + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='OBJECT') + + delta_pbone = obj.pose.bones[delta_name] + children = delta_pbone.children + + if len(children) != 1: + print("only 1 child supported for delta") + + child_name = children[0].name + + delta_head = delta_pbone.head.copy() + delta_tail = delta_pbone.tail.copy() + delta_matrix = delta_pbone.matrix.copy() + + children = delta_pbone.children + + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + + # XXX -probably should allow via the UI + for ebone in arm.edit_bones: + ebone.selected = ebone.head_selected = ebone.tail_selected = False + + # Select for deleting + delta_ebone = arm.edit_bones[delta_name] + delta_ebone.selected = delta_ebone.head_selected = delta_ebone.tail_selected = True + + bpy.ops.armature.delete() + + bpy.ops.object.mode_set(mode='OBJECT') + + + # Move the child bone to the deltas location + obj.animation_data_create() + child_pbone = obj.pose[child_name] + + # ------------------- drivers + fcurve_driver = child_pbone.driver_add("rotation_euler", 0) + #fcurve_driver = obj.animation_data.drivers[-1] # XXX, WATCH THIS + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + mod = driver.modifiers.new('GENERATOR') + + + + obj, arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + bpy.ops.object.mode_set(mode='EDIT') + + + bpy.ops.object.mode_set(mode=mode_orig) + + +def gen_arm(obj, orig_bone_name): + """ + the bone with the 'arm' property is the upper arm, this assumes a chain as follows. + [shoulder, upper_arm, forearm, hand] + ...where this bone is 'upper_arm' + """ + + def validate_chain(): + ''' + Sanity check and return the arm as a list of bone names. + ''' + # do a sanity check + obj, arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + shoulder_pbone = arm_pbone.parent + + if not shoulder_pbone: + print("could not find 'arm' parent, skipping:", orig_bone_name) + return + + # We could have some bones attached, find the bone that has this as its 2nd parent + hands = [] + for pbone in obj.pose.bones: + index = pbone.parent_index(orig_pbone) + if index == 2: + hands.append(pbone) + + if len(hands) > 1: + print("more then 1 hand found on:", orig_bone_name) + return + + # first add the 2 new bones + hand_pbone = hands[0] + forearm_pbone = hand_pbone.parent + + return shoulder_pbone.name, orig_pbone.name, forearm_pbone.name, hand_pbone.name + + shoulder_name, arm_name, forearm_name, hand_name = validate_chain() + + + obj, arm, hand_pbone, hand_ebone = get_bone_data(obj, hand_name) + + # Add the edit bones + hand_ik_ebone = arm.edit_bones.new(hand_name + "_ik") + + hand_ik_ebone.head = hand_ebone.head + hand_ik_ebone.tail = hand_ebone.tail + hand_ik_ebone.roll = hand_ebone.roll + + gen_table = { "":gen_none, \ "finger":gen_finger, \ + "delta":gen_delta, \ + "arm":gen_arm, \ } + def generate_rig(context, ob): + # add_stretch_to(ob, "a", "b", "c") + bpy.ops.object.mode_set(mode='OBJECT') @@ -233,7 +379,7 @@ def generate_rig(context, ob): bpy.ops.object.mode_set(mode='OBJECT') # needed to update driver deps - context.scene.update() + # context.scene.update() if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index b844f74ff44..f50df355a82 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -94,9 +94,6 @@ extern "C" char *CustomData_get_layer_name(const struct CustomData *data, int type, int n); -// armature module internal func, it's not good to use it here? (Arystan) -struct EditBone *addEditBone(struct bArmature *arm, char *name); - const char *primTypeToStr(COLLADAFW::MeshPrimitive::PrimitiveType type) { using namespace COLLADAFW; @@ -592,7 +589,7 @@ private: } // TODO rename from Node "name" attrs later - EditBone *bone = addEditBone(arm, (char*)get_joint_name(node)); + EditBone *bone = ED_armature_edit_bone_add(arm, (char*)get_joint_name(node)); totbone++; if (parent) bone->parent = parent; diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 46da5babf1e..e8d78d2ea8e 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -502,7 +502,7 @@ static short visualkey_can_use (PointerRNA *ptr, PropertyRNA *prop) /* get first constraint and determine type of keyframe constraints to check for * - constraints can be on either Objects or PoseChannels, so we only check if the - * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for + * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for * those structs, allowing us to identify the owner of the data */ if (ptr->type == &RNA_Object) { @@ -600,7 +600,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_ /* handle for Objects or PoseChannels only * - constraints can be on either Objects or PoseChannels, so we only check if the - * ptr->type is RNA_Object or RNA_PoseChannel, which are the RNA wrapping-info for + * ptr->type is RNA_Object or RNA_PoseBone, which are the RNA wrapping-info for * those structs, allowing us to identify the owner of the data * - assume that array_index will be sane */ diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index 012610bfd25..f53b70120d5 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -137,7 +137,6 @@ struct EditBone; struct ListBase; EditBone *make_boneList(struct ListBase *edbo, struct ListBase *bones, struct EditBone *parent, struct Bone *actBone); -struct EditBone *addEditBone(struct bArmature *arm, char *name); void BIF_sk_selectStroke(struct bContext *C, short mval[2], short extend); /* duplicate method */ diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index ce3e4cc8f8d..ebb9848baf4 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -141,7 +141,7 @@ void ED_armature_validate_active(struct bArmature *arm) } } -void free_edit_bone(bArmature *arm, EditBone *bone) +void ED_armature_edit_bone_remove(bArmature *arm, EditBone *bone) { if(arm->act_edbone==bone) arm->act_edbone= NULL; @@ -305,7 +305,7 @@ void ED_armature_from_edit(Object *obedit) fBone->parent= eBone->parent; } printf("Warning: removed zero sized bone: %s\n", eBone->name); - free_edit_bone(arm, eBone); + ED_armature_edit_bone_remove(arm, eBone); } } @@ -1035,7 +1035,7 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel) free_pose_channel(pchan); /* get rid of unneeded bone */ - free_edit_bone(arm, curbone); + ED_armature_edit_bone_remove(arm, curbone); BLI_freelinkN(&ob->pose->chanbase, pchan); } } @@ -1684,7 +1684,7 @@ static void delete_bone(bArmature *arm, EditBone* exBone) } } - free_edit_bone(arm, exBone); + ED_armature_edit_bone_remove(arm, exBone); } /* context: editmode armature */ @@ -2245,7 +2245,7 @@ void undo_push_armature(bContext *C, char *name) /* *************** Adding stuff in editmode *************** */ /* default bone add, returns it selected, but without tail set */ -EditBone *addEditBone(bArmature *arm, char *name) +EditBone *ED_armature_edit_bone_add(bArmature *arm, char *name) { EditBone *bone= MEM_callocN(sizeof(EditBone), "eBone"); @@ -2269,14 +2269,6 @@ EditBone *addEditBone(bArmature *arm, char *name) return bone; } -/* default bone add, returns it selected, but without tail set */ -static EditBone *add_editbone(Object *obedit, char *name) -{ - bArmature *arm= obedit->data; - - return addEditBone(arm, name); -} - /* v3d and rv3d are allowed to be NULL */ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d) { @@ -2301,7 +2293,7 @@ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d) ED_armature_deselectall(obedit, 0, 0); /* Create a bone */ - bone= add_editbone(obedit, "Bone"); + bone= ED_armature_edit_bone_add(obedit->data, "Bone"); VECCOPY(bone->head, curs); @@ -2367,7 +2359,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op) } } - newbone= add_editbone(obedit, ebone->name); + newbone= ED_armature_edit_bone_add(arm, ebone->name); arm->act_edbone= newbone; if (to_root) { @@ -2484,7 +2476,7 @@ static EditBone *add_points_bone (Object *obedit, float head[], float tail[]) { EditBone *ebo; - ebo= add_editbone(obedit, "Bone"); + ebo= ED_armature_edit_bone_add(obedit->data, "Bone"); VECCOPY(ebo->head, head); VECCOPY(ebo->tail, tail); @@ -3110,7 +3102,7 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone /* step 3: delete all bones between and including start and end */ for (ebo= end; ebo; ebo= ebone) { ebone= (ebo == start) ? (NULL) : (ebo->parent); - free_edit_bone(arm, ebo); + ED_armature_edit_bone_remove(arm, ebo); } } @@ -3465,7 +3457,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op) ED_armature_deselectall(obedit, 0, 0); /* Create a bone */ - bone= add_editbone(obedit, name); + bone= ED_armature_edit_bone_add(obedit->data, name); VECCOPY(bone->head, curs); @@ -5623,7 +5615,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode EditBone *root = NULL; float angleLimit = (float)cos(scene->toolsettings->skgen_angle_limit * M_PI / 180.0f); - parent = add_editbone(obedit, "Bone"); + parent = ED_armature_edit_bone_add(arm, "Bone"); parent->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; VECCOPY(parent->head, head->p); @@ -5652,7 +5644,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode { VECCOPY(parent->tail, previous); - child = add_editbone(obedit, "Bone"); + child = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(child->head, parent->tail); child->parent = parent; child->flag |= BONE_CONNECTED|BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; @@ -5858,7 +5850,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg) if (lastBone == NULL) { EditBone *bone; - bone = add_editbone(obedit, "Bone"); + bone = ED_armature_edit_bone_add(obedit->data, "Bone"); bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; VECCOPY(bone->head, head->p); diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c index 124528811c7..41907cf06a3 100644 --- a/source/blender/editors/armature/editarmature_generate.c +++ b/source/blender/editors/armature/editarmature_generate.c @@ -294,7 +294,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * IT_head(iter); - parent = addEditBone(arm, "Bone"); + parent = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(parent->head, iter->p); if (iter->size > 0) @@ -309,7 +309,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * { IT_peek(iter, index); - child = addEditBone(arm, "Bone"); + child = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(child->head, parent->tail); child->parent = parent; child->flag |= BONE_CONNECTED; diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index 7bb2fa9009d..eee56070e91 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -1538,7 +1538,7 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk) if (bone == NULL) { - bone = addEditBone(arm, "Bone"); + bone = ED_armature_edit_bone_add(arm, "Bone"); VECCOPY(bone->head, head->p); VECCOPY(bone->tail, pt->p); diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index af24402f3ca..59efa01cc35 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -311,7 +311,7 @@ typedef enum eAnimChannels_SetFlag { ACHANNEL_SETFLAG_TOGGLE } eAnimChannels_SetFlag; -/* types of settings for AnimChanels */ +/* types of settings for AnimChannels */ typedef enum eAnimChannel_Settings { ACHANNEL_SETTING_SELECT = 0, ACHANNEL_SETTING_PROTECT, // warning: for drawing UI's, need to check if this is off (maybe inverse this later) diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 2aa47311515..cbc86e58233 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -116,7 +116,8 @@ void ED_armature_sync_selection(struct ListBase *edbo); void ED_armature_validate_active(struct bArmature *arm); void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d); -EditBone *addEditBone(struct bArmature *arm, char *name); /* used by COLLADA importer */ +struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name); +void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *bone); void transform_armature_mirror_update(struct Object *obedit); void clear_armature(struct Scene *scene, struct Object *ob, char mode); diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 8d84257e219..36fd457e173 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -93,6 +93,15 @@ static void rna_Armature_act_edit_bone_set(PointerRNA *ptr, PointerRNA value) } } +EditBone *rna_Armature_edit_bone_new(bArmature *arm, char *name) +{ + return ED_armature_edit_bone_add(arm, name); +} + +void rna_Armature_edit_bone_remove(bArmature *arm, EditBone *ebone) +{ + ED_armature_edit_bone_remove(arm, ebone); +} static void rna_Armature_redraw_data(bContext *C, PointerRNA *ptr) { @@ -661,8 +670,8 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) StructRNA *srna; PropertyRNA *prop; -// FunctionRNA *func; -// PropertyRNA *parm; + FunctionRNA *func; + PropertyRNA *parm; RNA_def_property_srna(cprop, "ArmatureEditBones"); srna= RNA_def_struct(brna, "ArmatureEditBones", NULL); @@ -679,6 +688,22 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) /* todo, redraw */ // RNA_def_property_collection_active(prop, prop_act); + + /* add target */ + func= RNA_def_function(srna, "new", "rna_Armature_edit_bone_new"); + RNA_def_function_ui_description(func, "Add a new bone."); + parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the bone."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "bone", "EditBone", "", "Newly created edit bone."); + RNA_def_function_return(func, parm); + + /* remove target */ + func= RNA_def_function(srna, "remove", "rna_Armature_edit_bone_remove"); + RNA_def_function_ui_description(func, "Remove an existing bone from the armature."); + /* target to remove*/ + parm= RNA_def_pointer(func, "bone", "EditBone", "", "EditBone to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); } static void rna_def_armature(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 8d6a91191f4..da14d937e6c 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -276,7 +276,7 @@ static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr) } -static int rna_FM_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) { FModifier *fm= (FModifier*)ptr->data; FMod_Generator *gen= fm->data; @@ -289,14 +289,14 @@ static int rna_FM_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION return length[0]; } -static void rna_FM_get(PointerRNA *ptr, float *values) +static void rna_FModifierGenerator_coefficients_get(PointerRNA *ptr, float *values) { FModifier *fm= (FModifier*)ptr->data; FMod_Generator *gen= fm->data; memcpy(values, gen->coefficients, gen->arraysize * sizeof(float)); } -static void rna_FM_set(PointerRNA *ptr, const float *values) +static void rna_FModifierGenerator_coefficients_set(PointerRNA *ptr, const float *values) { FModifier *fm= (FModifier*)ptr->data; FMod_Generator *gen= fm->data; @@ -342,8 +342,8 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna) prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE); RNA_def_property_array(prop, 32); RNA_def_property_flag(prop, PROP_DYNAMIC); - RNA_def_property_dynamic_array_funcs(prop, "rna_FM_get_length"); - RNA_def_property_float_funcs(prop, "rna_FM_get", "rna_FM_set", NULL); + RNA_def_property_dynamic_array_funcs(prop, "rna_FModifierGenerator_coefficients_get_length"); + RNA_def_property_float_funcs(prop, "rna_FModifierGenerator_coefficients_get", "rna_FModifierGenerator_coefficients_set", NULL); RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); /* coefficients array */ diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 5b1f4dc42ed..ed1bb373b6e 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -120,7 +120,7 @@ static IDProperty *rna_PoseBone_idproperties(PointerRNA *ptr, int create) if(create && !pchan->prop) { IDPropertyTemplate val = {0}; - pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseChannel group"); + pchan->prop= IDP_New(IDP_GROUP, val, "RNA_PoseBone group"); } return pchan->prop; -- cgit v1.2.3 From 4c5b43052035a5aa3b34b77acb558f06147f0292 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 11:47:53 +0000 Subject: ED_armature_edit_bone_remove wasnt clearing references from other bones, only affects rna api access --- source/blender/editors/armature/editarmature.c | 44 +++++++++++++------------- source/blender/editors/include/ED_armature.h | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index ebb9848baf4..323d76da6d9 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -141,7 +141,7 @@ void ED_armature_validate_active(struct bArmature *arm) } } -void ED_armature_edit_bone_remove(bArmature *arm, EditBone *bone) +static void bone_free(bArmature *arm, EditBone *bone) { if(arm->act_edbone==bone) arm->act_edbone= NULL; @@ -154,6 +154,22 @@ void ED_armature_edit_bone_remove(bArmature *arm, EditBone *bone) BLI_freelinkN(arm->edbo, bone); } +void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone) +{ + EditBone *curBone; + + /* Find any bones that refer to this bone */ + for (curBone=arm->edbo->first; curBone; curBone=curBone->next) { + if (curBone->parent==exBone) { + curBone->parent=exBone->parent; + curBone->flag &= ~BONE_CONNECTED; + } + } + + bone_free(arm, exBone); +} + + /* converts Bones to EditBone list, used for tools as well */ EditBone *make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone) { @@ -305,7 +321,7 @@ void ED_armature_from_edit(Object *obedit) fBone->parent= eBone->parent; } printf("Warning: removed zero sized bone: %s\n", eBone->name); - ED_armature_edit_bone_remove(arm, eBone); + bone_free(arm, eBone); } } @@ -1035,7 +1051,7 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel) free_pose_channel(pchan); /* get rid of unneeded bone */ - ED_armature_edit_bone_remove(arm, curbone); + bone_free(arm, curbone); BLI_freelinkN(&ob->pose->chanbase, pchan); } } @@ -1671,22 +1687,6 @@ static EditBone *get_nearest_editbonepoint (ViewContext *vc, short mval[2], List return NULL; } -/* warning, wont clear the active bone */ -static void delete_bone(bArmature *arm, EditBone* exBone) -{ - EditBone *curBone; - - /* Find any bones that refer to this bone */ - for (curBone=arm->edbo->first; curBone; curBone=curBone->next) { - if (curBone->parent==exBone) { - curBone->parent=exBone->parent; - curBone->flag &= ~BONE_CONNECTED; - } - } - - ED_armature_edit_bone_remove(arm, exBone); -} - /* context: editmode armature */ EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo) { @@ -1783,7 +1783,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op) if (arm->layer & curBone->layer) { if (curBone->flag & BONE_SELECTED) { if(curBone==arm->act_edbone) arm->act_edbone= NULL; - delete_bone(arm, curBone); + ED_armature_edit_bone_remove(arm, curBone); } } } @@ -3102,7 +3102,7 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone /* step 3: delete all bones between and including start and end */ for (ebo= end; ebo; ebo= ebone) { ebone= (ebo == start) ? (NULL) : (ebo->parent); - ED_armature_edit_bone_remove(arm, ebo); + bone_free(arm, ebo); } } @@ -5660,7 +5660,7 @@ EditBone * subdivideByAngle(Scene *scene, Object *obedit, ReebArc *arc, ReebNode if (parent == root) { if(parent==arm->act_edbone) arm->act_edbone= NULL; - delete_bone(arm, parent); + ED_armature_edit_bone_remove(arm, parent); parent = NULL; } diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index cbc86e58233..f054e229147 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -117,7 +117,7 @@ void ED_armature_validate_active(struct bArmature *arm); void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d); struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name); -void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *bone); +void ED_armature_edit_bone_remove(struct bArmature *arm, EditBone *exBone); void transform_armature_mirror_update(struct Object *obedit); void clear_armature(struct Scene *scene, struct Object *ob, char mode); -- cgit v1.2.3 From e57792feb4f784ff42e219cab425f9afcedf422d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 11:59:57 +0000 Subject: Sculpt: tweak to memory statistics graph, showing both % and MB. --- intern/guardedalloc/intern/mallocn.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index 0ce14514e89..5f7c725f5b5 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -402,11 +402,13 @@ void MEM_printmemlist_stats() } totpb= b+1; +#define MEM_IN_MB(mem) ((double)mem/(double)(1024*1024)) + /* sort by length and print */ qsort(printblock, totpb, sizeof(MemPrintBlock), compare_len); - printf("\ntotal memory len: %.3f MB\n", (double)mem_in_use/(double)(1024*1024)); + printf("\ntotal memory len: %.3f MB\n", MEM_IN_MB(mem_in_use)); for(a=0, pb=printblock; aname, pb->items, (double)pb->len/(double)(1024*1024)); + printf("%s items: %d, len: %.3f MB\n", pb->name, pb->items, MEM_IN_MB(pb->len)); { uintptr_t other= mem_in_use; @@ -419,7 +421,7 @@ void MEM_printmemlist_stats() "memory = [\n"); for(a=0, pb=printblock; aname, (double)pb->len/(double)(1024*1024)); + printf("[\"%s (%.3f MB)\", %.3f],\n", pb->name, MEM_IN_MB(pb->len), MEM_IN_MB(pb->len)); other -= pb->len; if((double)pb->len/(double)mem_in_use < 0.025) @@ -437,12 +439,14 @@ void MEM_printmemlist_stats() "pie(fracs, labels=labels, colors=colors, autopct='%%1.1f%%%%')\n" "title(\"Memory Usage: %.3f MB\")\n" "\n" - "show()\n", (double)other/(double)(1024*1024), (double)mem_in_use/(double)(1024*1024)); + "show()\n", MEM_IN_MB(other), MEM_IN_MB(mem_in_use)); } free(printblock); mem_unlock_thread(); + +#undef MEM_IN_MB } /* Prints in python syntax for easy */ -- cgit v1.2.3 From 6c881a7a6d9a5168ebbc5aa5339ed4324aef2154 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 25 Nov 2009 12:00:31 +0000 Subject: AnimSys - Transform Locks + RNA: The Animation System now respects the Transform Locks too (i.e. lock x-location, etc.) when writing settings. This means that it is no longer necessary to set up "constant drivers" to make sure some values don't get accidentally animated. Internally, added a new callback for properties in RNA, which is responsible for checking if the item at some array-index is editable. This needs to be manually called for each place which uses rna to set settings for arrays (see the code changes in anim_sys.c for changes how to do this; the same thing needs to be done in the UI code too, and probably in py-api too) --- source/blender/blenkernel/intern/anim_sys.c | 36 +++++++---- source/blender/makesrna/RNA_access.h | 1 + source/blender/makesrna/RNA_define.h | 1 + source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_access.c | 20 +++++++ source/blender/makesrna/intern/rna_define.c | 10 ++++ .../blender/makesrna/intern/rna_internal_types.h | 5 +- source/blender/makesrna/intern/rna_object.c | 70 ++++++++++++++++++++++ source/blender/makesrna/intern/rna_pose.c | 70 ++++++++++++++++++++++ 9 files changed, 201 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 5ebcec63cd4..a6f733708c7 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -697,20 +697,26 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i switch (RNA_property_type(prop)) { case PROP_BOOLEAN: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value); + if (RNA_property_array_length(&new_ptr, prop)) { + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value); + } else RNA_property_boolean_set(&new_ptr, prop, (int)value); break; case PROP_INT: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value); + if (RNA_property_array_length(&new_ptr, prop)){ + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value); + } else RNA_property_int_set(&new_ptr, prop, (int)value); break; case PROP_FLOAT: - if (RNA_property_array_length(&new_ptr, prop)) - RNA_property_float_set_index(&new_ptr, prop, array_index, value); + if (RNA_property_array_length(&new_ptr, prop)) { + if (RNA_property_editable_index(&new_ptr, prop, array_index)) + RNA_property_float_set_index(&new_ptr, prop, array_index, value); + } else RNA_property_float_set(&new_ptr, prop, value); break; @@ -1434,20 +1440,26 @@ void nladata_flush_channels (ListBase *channels) switch (RNA_property_type(prop)) { case PROP_BOOLEAN: - if (RNA_property_array_length(ptr, prop)) - RNA_property_boolean_set_index(ptr, prop, array_index, (int)value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_boolean_set_index(ptr, prop, array_index, (int)value); + } else RNA_property_boolean_set(ptr, prop, (int)value); break; case PROP_INT: - if (RNA_property_array_length(ptr, prop)) - RNA_property_int_set_index(ptr, prop, array_index, (int)value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_int_set_index(ptr, prop, array_index, (int)value); + } else RNA_property_int_set(ptr, prop, (int)value); break; case PROP_FLOAT: - if (RNA_property_array_length(ptr, prop)) - RNA_property_float_set_index(ptr, prop, array_index, value); + if (RNA_property_array_length(ptr, prop)) { + if (RNA_property_editable_index(ptr, prop, array_index)) + RNA_property_float_set_index(ptr, prop, array_index, value); + } else RNA_property_float_set(ptr, prop, value); break; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index f8d9b4d333b..d35e5632053 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -640,6 +640,7 @@ int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRN StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index); int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h index 5ed0fb5194d..37abe44f128 100644 --- a/source/blender/makesrna/RNA_define.h +++ b/source/blender/makesrna/RNA_define.h @@ -155,6 +155,7 @@ void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive); void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *updatefunc); void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable); +void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable); void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength); void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set); diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 526178d7b26..3d4e128c3ac 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1763,7 +1763,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr rna_print_c_string(f, prop->description); fprintf(f, ",\n\t"); fprintf(f, "%d,\n", prop->icon); fprintf(f, "\t%s, %s|%s, %s, %d, {%d, %d, %d}, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), rna_property_subtype_unit(prop->subtype), rna_function_string(prop->getlength), prop->arraydimension, prop->arraylength[0], prop->arraylength[1], prop->arraylength[2], prop->totarraylength); - fprintf(f, "\t%s, %d, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable)); + fprintf(f, "\t%s, %d, %s, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable)); if(prop->flag & PROP_RAW_ACCESS) rna_set_raw_offset(f, srna, prop); else fprintf(f, "\t0, 0"); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index ce2e256004e..669810bb39b 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -982,6 +982,26 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop) return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); } +/* same as RNA_property_editable(), except this checks individual items in an array */ +int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + ID *id; + int flag; + + prop= rna_ensure_property(prop); + + /* if there is no function to do this for a given index, + * just resort to doing this on the whole array + */ + if (prop->itemeditable == NULL) + return RNA_property_editable(ptr, prop); + + flag= prop->itemeditable(ptr, index); + id= ptr->id.data; + + return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); +} + int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop) { int flag; diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 891911d5765..9bf5afdac48 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1732,6 +1732,16 @@ void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable) if(editable) prop->editable= (EditableFunc)editable; } +void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable) +{ + if(!DefRNA.preprocess) { + fprintf(stderr, "RNA_def_property_editable_array_func: only during preprocessing.\n"); + return; + } + + if(editable) prop->itemeditable= (ItemEditableFunc)editable; +} + void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func) { if(!DefRNA.preprocess) { diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h index 46ed1fa055f..8a35f831c96 100644 --- a/source/blender/makesrna/intern/rna_internal_types.h +++ b/source/blender/makesrna/intern/rna_internal_types.h @@ -55,6 +55,7 @@ struct GHash; typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr); typedef int (*EditableFunc)(struct PointerRNA *ptr); +typedef int (*ItemEditableFunc)(struct PointerRNA *ptr, int index); typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create); typedef struct StructRNA *(*StructRefineFunc)(struct PointerRNA *ptr); typedef char *(*StructPathFunc)(struct PointerRNA *ptr); @@ -152,8 +153,10 @@ struct PropertyRNA { UpdateFunc update; int noteflag; - /* callback for testing if editable/evaluated */ + /* callback for testing if editable */ EditableFunc editable; + /* callback for testing if array-item editable (if applicable) */ + ItemEditableFunc itemeditable; /* raw access */ int rawoffset; diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index d42e862052f..148f9614dcb 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -577,6 +577,71 @@ static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value) } } +static int rna_Object_location_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_LOCX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_LOCY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_LOCZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_scale_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_SCALEX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_SCALEY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_SCALEZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_rotation_euler_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_Object_rotation_4d_editable(PointerRNA *ptr, int index) +{ + Object *ob= (Object *)ptr->data; + + /* only consider locks if locking components individually... */ + if (ob->protectflag & OB_LOCK_ROT4D) { + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (ob->protectflag & OB_LOCK_ROTW)) + return 0; + else if ((index == 1) && (ob->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 2) && (ob->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 3) && (ob->protectflag & OB_LOCK_ROTZ)) + return 0; + } + + return PROP_EDITABLE; +} + static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr) { @@ -1397,11 +1462,13 @@ static void rna_def_object(BlenderRNA *brna) /* transform */ prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "loc"); + RNA_def_property_editable_array_func(prop, "rna_Object_location_editable"); RNA_def_property_ui_text(prop, "Location", "Location of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "quat"); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); @@ -1411,11 +1478,13 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too... RNA_def_property_float_funcs(prop, "rna_Object_rotation_axis_angle_get", "rna_Object_rotation_axis_angle_set", NULL); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "rot"); + RNA_def_property_editable_array_func(prop, "rna_Object_rotation_euler_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); @@ -1428,6 +1497,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "size"); + RNA_def_property_editable_array_func(prop, "rna_Object_scale_editable"); RNA_def_property_ui_text(prop, "Scale", "Scaling of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index ed1bb373b6e..8d43d72c02e 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -445,6 +445,71 @@ static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C, return remove_constraint_index(&pchan->constraints, index); } +static int rna_PoseChannel_location_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_LOCX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_LOCY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_LOCZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_scale_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_SCALEX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_SCALEY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_SCALEZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_rotation_euler_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTZ)) + return 0; + else + return PROP_EDITABLE; +} + +static int rna_PoseChannel_rotation_4d_editable(PointerRNA *ptr, int index) +{ + bPoseChannel *pchan= (bPoseChannel*)ptr->data; + + /* only consider locks if locking components individually... */ + if (pchan->protectflag & OB_LOCK_ROT4D) { + /* only if the axis in question is locked, not editable... */ + if ((index == 0) && (pchan->protectflag & OB_LOCK_ROTW)) + return 0; + else if ((index == 1) && (pchan->protectflag & OB_LOCK_ROTX)) + return 0; + else if ((index == 2) && (pchan->protectflag & OB_LOCK_ROTY)) + return 0; + else if ((index == 3) && (pchan->protectflag & OB_LOCK_ROTZ)) + return 0; + } + + return PROP_EDITABLE; +} + #else static void rna_def_bone_group(BlenderRNA *brna) @@ -634,16 +699,19 @@ static void rna_def_pose_channel(BlenderRNA *brna) /* Transformation settings */ prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "loc"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_location_editable"); RNA_def_property_ui_text(prop, "Location", ""); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "size"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_scale_editable"); RNA_def_property_ui_text(prop, "Scale", ""); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "quat"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); @@ -653,11 +721,13 @@ static void rna_def_pose_channel(BlenderRNA *brna) prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_array(prop, 4); // TODO: maybe we'll need to define the 'default value' getter too... RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "eul"); + RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_euler_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); -- cgit v1.2.3 From 9a31f37d19de8ab6f45ac0622bd620e80cff9abf Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 12:04:11 +0000 Subject: Sculpt: math lib functions * swap v2/v3 * multiply-and-add (madd) v3 * inline v3 short/float conversion --- source/blender/blenlib/BLI_math_matrix.h | 1 + source/blender/blenlib/BLI_math_vector.h | 12 ++++- source/blender/blenlib/intern/math_matrix.c | 18 ++++--- source/blender/blenlib/intern/math_vector.c | 14 ----- source/blender/blenlib/intern/math_vector_inline.c | 59 +++++++++++++++++++++- 5 files changed, 79 insertions(+), 25 deletions(-) diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h index 53476e4d03c..5667fb79332 100644 --- a/source/blender/blenlib/BLI_math_matrix.h +++ b/source/blender/blenlib/BLI_math_matrix.h @@ -82,6 +82,7 @@ void mul_m4_v4(float M[4][4], float r[3]); void mul_project_m4_v4(float M[4][4], float r[3]); void mul_m3_v3(float M[3][3], float r[3]); +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]); void mul_transposed_m3_v3(float M[3][3], float r[3]); void mul_m3_v3_double(float M[3][3], double r[3]); diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index 26602353425..d1d88b29630 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -54,6 +54,9 @@ MINLINE void zero_v3(float r[3]); MINLINE void copy_v2_v2(float r[2], float a[2]); MINLINE void copy_v3_v3(float r[3], float a[3]); +MINLINE void swap_v2_v2(float a[2], float b[2]); +MINLINE void swap_v3_v3(float a[3], float b[3]); + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float r[2], float a[2]); @@ -72,6 +75,11 @@ MINLINE void mul_v3_v3fl(float r[3], float a[3], float f); MINLINE void mul_v3_v3(float r[3], float a[3]); MINLINE void mul_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f); +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f); +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]); + MINLINE void negate_v3(float r[3]); MINLINE void negate_v3_v3(float r[3], float a[3]); @@ -136,8 +144,8 @@ void print_v2(char *str, float a[2]); void print_v3(char *str, float a[3]); void print_v4(char *str, float a[4]); -void normal_short_to_float_v3(float r[3], short n[3]); -void normal_float_to_short_v3(short r[3], float n[3]); +MINLINE void normal_short_to_float_v3(float r[3], short n[3]); +MINLINE void normal_float_to_short_v3(short r[3], float n[3]); void minmax_v3_v3v3(float r[3], float min[3], float max[3]); diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index edab1cc2440..47b99bce8ab 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -338,15 +338,19 @@ void mul_m4_v4(float mat[][4], float *vec) vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3]; } -void mul_m3_v3(float mat[][3], float *vec) +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]) { - float x,y; + r[0]= M[0][0]*a[0] + M[1][0]*a[1] + M[2][0]*a[2]; + r[1]= M[0][1]*a[0] + M[1][1]*a[1] + M[2][1]*a[2]; + r[2]= M[0][2]*a[0] + M[1][2]*a[1] + M[2][2]*a[2]; +} - x=vec[0]; - y=vec[1]; - vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2]; - vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2]; - vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2]; +void mul_m3_v3(float M[3][3], float r[3]) +{ + float tmp[3]; + + mul_v3_m3v3(tmp, M, r); + copy_v3_v3(r, tmp); } void mul_transposed_m3_v3(float mat[][3], float *vec) diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 8d36c3ac524..366380b5276 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -283,20 +283,6 @@ void print_v4(char *str, float v[4]) printf("%s: %.3f %.3f %.3f %.3f\n", str, v[0], v[1], v[2], v[3]); } -void normal_short_to_float_v3(float *out, short *in) -{ - out[0] = in[0]*(1.0f/32767.0f); - out[1] = in[1]*(1.0f/32767.0f); - out[2] = in[2]*(1.0f/32767.0f); -} - -void normal_float_to_short_v3(short *out, float *in) -{ - out[0] = (short)(in[0]*32767.0f); - out[1] = (short)(in[1]*32767.0f); - out[2] = (short)(in[2]*32767.0f); -} - void minmax_v3_v3v3(float *min, float *max, float *vec) { if(min[0]>vec[0]) min[0]= vec[0]; diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c index 6830f44ae1b..cb629312712 100644 --- a/source/blender/blenlib/intern/math_vector_inline.c +++ b/source/blender/blenlib/intern/math_vector_inline.c @@ -58,6 +58,19 @@ MINLINE void copy_v3_v3(float r[3], float a[3]) r[2]= a[2]; } +MINLINE void swap_v2_v2(float a[2], float b[2]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); +} + +MINLINE void swap_v3_v3(float a[3], float b[3]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); + SWAP(float, a[2], b[2]); +} + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float *r, float *a) @@ -76,7 +89,7 @@ MINLINE void add_v3_v3(float *r, float *a) { r[0] += a[0]; r[1] += a[1]; - r[1] += a[1]; + r[2] += a[2]; } MINLINE void add_v3_v3v3(float *r, float *a, float *b) @@ -102,7 +115,7 @@ MINLINE void sub_v3_v3(float *r, float *a) { r[0] -= a[0]; r[1] -= a[1]; - r[1] -= a[1]; + r[2] -= a[2]; } MINLINE void sub_v3_v3v3(float *r, float *a, float *b) @@ -139,6 +152,34 @@ MINLINE void mul_v3_v3(float r[3], float a[3]) r[2] *= a[2]; } +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f) +{ + r[0] += a[0]*f; + r[1] += a[1]*f; + r[2] += a[2]*f; +} + +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]) +{ + r[0] += a[0]*b[0]; + r[1] += a[1]*b[1]; + r[2] += a[2]*b[2]; +} + +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f) +{ + r[0] = a[0] + b[0]*f; + r[1] = a[1] + b[1]*f; + r[2] = a[2] + b[2]*f; +} + +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]) +{ + r[0] = a[0] + b[0]*c[0]; + r[1] = a[1] + b[1]*c[1]; + r[2] = a[2] + b[2]*c[2]; +} + MINLINE void mul_v3_v3v3(float *v, float *v1, float *v2) { v[0] = v1[0] * v2[0]; @@ -254,5 +295,19 @@ MINLINE float normalize_v3(float n[3]) return d; } +MINLINE void normal_short_to_float_v3(float *out, short *in) +{ + out[0] = in[0]*(1.0f/32767.0f); + out[1] = in[1]*(1.0f/32767.0f); + out[2] = in[2]*(1.0f/32767.0f); +} + +MINLINE void normal_float_to_short_v3(short *out, float *in) +{ + out[0] = (short)(in[0]*32767.0f); + out[1] = (short)(in[1]*32767.0f); + out[2] = (short)(in[2]*32767.0f); +} + #endif /* BLI_MATH_VECTOR_INLINE */ -- cgit v1.2.3 From 90cc7c8abd7b4c36002031edba8b75207fb98086 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 12:27:21 +0000 Subject: Sculpt: CCGSubsurf new functions to update normals, update subdivision levels, copy coordinates from face grids, and stitch together face grids. --- source/blender/blenkernel/intern/CCGSubSurf.c | 1470 +++++++++++++++---------- source/blender/blenkernel/intern/CCGSubSurf.h | 5 + 2 files changed, 903 insertions(+), 572 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index cee032f364e..86595dea8fb 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -1130,6 +1130,643 @@ CCGError ccgSubSurf_processSync(CCGSubSurf *ss) { return eCCGError_None; } +#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset) +#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) +static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, + CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, + int numEffectedV, int numEffectedE, int numEffectedF) { + int i,ptrIdx; + int subdivLevels = ss->subdivLevels; + int lvl = ss->subdivLevels; + int edgeSize = 1 + (1<normalDataOffset; + int vertDataSize = ss->meshIFC.vertDataSize; + + for (ptrIdx=0; ptrIdxnumVerts; S++) { + for (y=0; ynumVerts)%f->numVerts]->flags&Edge_eEffected) + for (x=0; xflags&Edge_eEffected) + for (y=0; yflags&Vert_eEffected) + NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, gridSize-1)); + } + } + + for (ptrIdx=0; ptrIdxnumVerts; S++) { + int yLimit = !(FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected); + int xLimit = !(FACE_getEdges(f)[S]->flags&Edge_eEffected); + int yLimitNext = xLimit; + int xLimitPrev = yLimit; + + for (y=0; yflags&Vert_eEffected) { + NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+1), no); + } + } + + if (x==0 && y==0) { + int K; + + if (!yLimitNext || 1numVerts, 0, 1), no); + if (!xLimitPrev || 1numVerts)%f->numVerts, 1, 0), no); + + for (K=0; KnumVerts; K++) { + if (K!=S) { + NormAdd(FACE_getIFNo(f, lvl, K, 0, 0), no); + } + } + } else if (y==0) { + NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x), no); + if (!yLimitNext || xnumVerts, 0, x+1), no); + } else if (x==0) { + NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y, 0), no); + if (!xLimitPrev || ynumVerts)%f->numVerts, y+1, 0), no); + } + } + } + } + } + // XXX can I reduce the number of normalisations here? + for (ptrIdx=0; ptrIdxnumFaces; i++) { + CCGFace *f = v->faces[i]; + NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1)); + } + + length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]); + + if (length>FLT_EPSILON) { + float invLength = 1.0f/length; + no[0] *= invLength; + no[1] *= invLength; + no[2] *= invLength; + } else { + NormZero(no); + } + + for (i=0; inumFaces; i++) { + CCGFace *f = v->faces[i]; + NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1), no); + } + } + for (ptrIdx=0; ptrIdxnumFaces) { + CCGFace *fLast = e->faces[e->numFaces-1]; + int x; + + for (i=0; inumFaces-1; i++) { + CCGFace *f = e->faces[i]; + + for (x=1; xnumFaces-1; i++) { + CCGFace *f = e->faces[i]; + + for (x=1; xnumVerts; S++) { + NormCopy(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, gridSize-1), + FACE_getIFNo(f, lvl, S, gridSize-1, 0)); + } + } + for (ptrIdx=0; ptrIdxnumVerts; S++) { + for (y=0; yFLT_EPSILON) { + float invLength = 1.0f/length; + no[0] *= invLength; + no[1] *= invLength; + no[2] *= invLength; + } else { + NormZero(no); + } + } + } + } + } +} +#undef FACE_getIFNo + +#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize) +#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize) +#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize) +#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize) +static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, + CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, + int numEffectedV, int numEffectedE, int numEffectedF, int curLvl) { + int subdivLevels = ss->subdivLevels; + int edgeSize = 1 + (1<q, *r = ss->r; + int vertDataSize = ss->meshIFC.vertDataSize; + + for (ptrIdx=0; ptrIdxnumVerts; S++) { + for (y=0; ynumVerts; S++) { + for (x=0; xnumVerts, 1, fx); + void *co3 = FACE_getIFCo(f, nextLvl, S, fx, 1); + void *co = FACE_getIECo(f, nextLvl, S, fx); + + VertDataAvg4(co, co0, co1, co2, co3); + } + + /* interior face interior edge midpoints + * o old interior face points + * o new interior face midpoints + */ + + /* vertical */ + for (x=1; x1.0) { + for (x=0; xnumFaces; i++) { + CCGFace *f = e->faces[i]; + VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize)); + numFaces++; + } + + VertDataMulN(q, 1.0f/(2.0f+numFaces)); + + VertDataCopy(r, co0); + VertDataAdd(r, co1); + VertDataMulN(r, 0.5); + + VertDataCopy(co, q); + VertDataSub(r, q); + VertDataMulN(r, sharpness); + VertDataAdd(co, r); + } + } + } + + /* exterior vertex shift + * o old vertex points (shifting) + * o old exterior edge points + * o new interior face midpoints + */ + for (ptrIdx=0; ptrIdxnumEdges; i++) { + CCGEdge *e = v->edges[i]; + float sharpness = EDGE_getSharpness(e, curLvl); + + if (seam && _edge_isBoundary(e)) + seamEdges++; + + if (sharpness!=0.0f) { + sharpCount++; + avgSharpness += sharpness; + } else { + allSharp = 0; + } + } + + if(sharpCount) { + avgSharpness /= sharpCount; + if (avgSharpness>1.0) { + avgSharpness = 1.0; + } + } + + if (seam && seamEdges < 2) + seam = 0; + + if (!v->numEdges) { + VertDataCopy(nCo, co); + } else if (_vert_isBoundary(v)) { + int numBoundary = 0; + + VertDataZero(r); + for (i=0; inumEdges; i++) { + CCGEdge *e = v->edges[i]; + if (_edge_isBoundary(e)) { + VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); + numBoundary++; + } + } + + VertDataCopy(nCo, co); + VertDataMulN(nCo, 0.75); + VertDataMulN(r, 0.25f/numBoundary); + VertDataAdd(nCo, r); + } else { + int cornerIdx = (1 + (1<<(curLvl))) - 2; + int numEdges = 0, numFaces = 0; + + VertDataZero(q); + for (i=0; inumFaces; i++) { + CCGFace *f = v->faces[i]; + VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx)); + numFaces++; + } + VertDataMulN(q, 1.0f/numFaces); + VertDataZero(r); + for (i=0; inumEdges; i++) { + CCGEdge *e = v->edges[i]; + VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize)); + numEdges++; + } + VertDataMulN(r, 1.0f/numEdges); + + VertDataCopy(nCo, co); + VertDataMulN(nCo, numEdges-2.0f); + VertDataAdd(nCo, q); + VertDataAdd(nCo, r); + VertDataMulN(nCo, 1.0f/numEdges); + } + + if ((sharpCount>1 && v->numFaces) || seam) { + VertDataZero(q); + + if (seam) { + avgSharpness = 1.0f; + sharpCount = seamEdges; + allSharp = 1; + } + + for (i=0; inumEdges; i++) { + CCGEdge *e = v->edges[i]; + float sharpness = EDGE_getSharpness(e, curLvl); + + if (seam) { + if (_edge_isBoundary(e)) + VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); + } else if (sharpness != 0.0) { + VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); + } + } + + VertDataMulN(q, (float) 1/sharpCount); + + if (sharpCount!=2 || allSharp) { + // q = q + (co-q)*avgSharpness + VertDataCopy(r, co); + VertDataSub(r, q); + VertDataMulN(r, avgSharpness); + VertDataAdd(q, r); + } + + // r = co*.75 + q*.25 + VertDataCopy(r, co); + VertDataMulN(r, .75); + VertDataMulN(q, .25); + VertDataAdd(r, q); + + // nCo = nCo + (r-nCo)*avgSharpness + VertDataSub(r, nCo); + VertDataMulN(r, avgSharpness); + VertDataAdd(nCo, r); + } + } + + /* exterior edge interior shift + * o old exterior edge midpoints (shifting) + * o old exterior edge midpoints + * o new interior face midpoints + */ + for (ptrIdx=0; ptrIdx1.0) { + avgSharpness = 1.0; + } + } else { + sharpCount = 0; + avgSharpness = 0; + } + + if (_edge_isBoundary(e) && (!e->numFaces || sharpCount<2)) { + for (x=1; xnumFaces; i++) { + CCGFace *f = e->faces[i]; + VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx-1, 1, subdivLevels, vertDataSize)); + VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx+1, 1, subdivLevels, vertDataSize)); + + VertDataAdd(r, _face_getIFCoEdge(f, e, curLvl, x, 1, subdivLevels, vertDataSize)); + numFaces++; + } + VertDataMulN(q, 1.0/(numFaces*2.0f)); + VertDataMulN(r, 1.0/(2.0f + numFaces)); + + VertDataCopy(nCo, co); + VertDataMulN(nCo, (float) numFaces); + VertDataAdd(nCo, q); + VertDataAdd(nCo, r); + VertDataMulN(nCo, 1.0f/(2+numFaces)); + + if (sharpCount==2) { + VertDataCopy(q, co); + VertDataMulN(q, 6.0f); + VertDataAdd(q, EDGE_getCo(e, curLvl, x-1)); + VertDataAdd(q, EDGE_getCo(e, curLvl, x+1)); + VertDataMulN(q, 1/8.0f); + + VertDataSub(q, nCo); + VertDataMulN(q, avgSharpness); + VertDataAdd(nCo, q); + } + } + } + } + + for (ptrIdx=0; ptrIdxnumVerts; S++) { + VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1)); + } + VertDataMulN(q, 1.0f/f->numVerts); + VertDataZero(r); + for (S=0; SnumVerts; S++) { + VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1)); + } + VertDataMulN(r, 1.0f/f->numVerts); + + VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f); + VertDataAdd(FACE_getCenterData(f), q); + VertDataAdd(FACE_getCenterData(f), r); + VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); + + for (S=0; SnumVerts; S++) { + /* interior face shift + * o old interior face point (shifting) + * o new interior edge midpoints + * o new interior face midpoints + */ + for (x=1; xnumVerts, 1, fx-1), + FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1), + FACE_getIFCo(f, nextLvl, S, fx+1, +1), + FACE_getIFCo(f, nextLvl, S, fx-1, +1)); + + VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1), + FACE_getIECo(f, nextLvl, S, fx+1), + FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx), + FACE_getIFCo(f, nextLvl, S, fx, 1)); + + VertDataCopy(nCo, co); + VertDataSub(nCo, q); + VertDataMulN(nCo, 0.25f); + VertDataAdd(nCo, r); + } + } + } + + /* copy down */ + edgeSize = 1 + (1<<(nextLvl)); + gridSize = 1 + (1<<((nextLvl)-1)); + cornerIdx = gridSize-1; + for (i=0; iv0, nextLvl)); + VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl)); + } + for (i=0; inumVerts; S++) { + CCGEdge *e = FACE_getEdges(f)[S]; + CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts]; + + VertDataCopy(FACE_getIFCo(f, nextLvl, S, 0, 0), FACE_getCenterData(f)); + VertDataCopy(FACE_getIECo(f, nextLvl, S, 0), FACE_getCenterData(f)); + VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], nextLvl)); + VertDataCopy(FACE_getIECo(f, nextLvl, S, cornerIdx), EDGE_getCo(FACE_getEdges(f)[S], nextLvl, cornerIdx)); + for (x=1; xnumVerts, 0, x), co); + } + for (x=0; xsubdivLevels; int vertDataSize = ss->meshIFC.vertDataSize; - int i,ptrIdx,cornerIdx; - int S,x,y; - void *q = ss->q, *r = ss->r; + int i, j, ptrIdx, S; int curLvl, nextLvl; - int j; + void *q = ss->q, *r = ss->r; effectedV = CCGSUBSURF_alloc(ss, sizeof(*effectedV)*ss->vMap->numEntries); effectedE = CCGSUBSURF_alloc(ss, sizeof(*effectedE)*ss->eMap->numEntries); @@ -1172,10 +1807,6 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) { } } -#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize) -#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize) -#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize) -#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize) curLvl = 0; nextLvl = curLvl+1; @@ -1388,645 +2019,340 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) { } for (curLvl=1; curLvlcalcVertNormals) + ccgSubSurf__calcVertNormals(ss, + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF); - /* interior face midpoints - * o old interior face points - */ - for (S=0; SnumVerts; S++) { - for (y=0; yflags = 0; + } + for (ptrIdx=0; ptrIdxflags = 0; + } - /* interior edge midpoints - * o old interior edge points - * o new interior face midpoints - */ - for (S=0; SnumVerts; S++) { - for (x=0; xnumVerts, 1, fx); - void *co3 = FACE_getIFCo(f, nextLvl, S, fx, 1); - void *co = FACE_getIECo(f, nextLvl, S, fx); - - VertDataAvg4(co, co0, co1, co2, co3); - } + CCGSUBSURF_free(ss, effectedF); + CCGSUBSURF_free(ss, effectedE); + CCGSUBSURF_free(ss, effectedV); +} - /* interior face interior edge midpoints - * o old interior face points - * o new interior face midpoints - */ - - /* vertical */ - for (x=1; xfMap->numEntries); + num = 0; + for (i=0; ifMap->curSize; i++) { + CCGFace *f = (CCGFace*) ss->fMap->buckets[i]; + + for (; f; f = f->next) + array[num++] = f; } - /* exterior edge midpoints - * o old exterior edge points - * o new interior face midpoints - */ - for (ptrIdx=0; ptrIdx1.0) { - for (x=0; xnumFaces; i++) { - CCGFace *f = e->faces[i]; - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize)); - numFaces++; - } + arrayV = CCGSUBSURF_alloc(ss, sizeof(*arrayV)*ss->vMap->numEntries); + arrayE = CCGSUBSURF_alloc(ss, sizeof(*arrayE)*ss->eMap->numEntries); + numV = numE = 0; - VertDataMulN(q, 1.0f/(2.0f+numFaces)); + for (i=0; iflags |= Face_eEffected; + } - VertDataCopy(r, co0); - VertDataAdd(r, co1); - VertDataMulN(r, 0.5); + for (i=0; ivMap->curSize; i++) { + CCGVert *v = (CCGVert*) ss->vMap->buckets[i]; - VertDataCopy(co, q); - VertDataSub(r, q); - VertDataMulN(r, sharpness); - VertDataAdd(co, r); - } + for (; v; v = v->next) { + for(j=0; jnumFaces; j++) + if(!(v->faces[j]->flags & Face_eEffected)) + break; + + if(j == v->numFaces) { + arrayV[numV++] = v; + v->flags |= Vert_eEffected; } } + } - /* exterior vertex shift - * o old vertex points (shifting) - * o old exterior edge points - * o new interior face midpoints - */ - for (ptrIdx=0; ptrIdxeMap->curSize; i++) { + CCGEdge *e = (CCGEdge*) ss->eMap->buckets[i]; - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; - float sharpness = EDGE_getSharpness(e, curLvl); + for (; e; e = e->next) { + for(j=0; jnumFaces; j++) + if(!(e->faces[j]->flags & Face_eEffected)) + break; + + if(j == e->numFaces) { + e->flags |= Edge_eEffected; + arrayE[numE++] = e; + } + } + } - if (seam && _edge_isBoundary(e)) - seamEdges++; + *verts = arrayV; + *numVerts = numV; + *edges = arrayE; + *numEdges = numE; +} - if (sharpness!=0.0f) { - sharpCount++; - avgSharpness += sharpness; - } else { - allSharp = 0; - } - } +/* copy face grid coordinates to other places */ +CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF) +{ + int i, S, x, gridSize, cornerIdx, subdivLevels; + int vertDataSize = ss->meshIFC.vertDataSize, freeF; - if(sharpCount) { - avgSharpness /= sharpCount; - if (avgSharpness>1.0) { - avgSharpness = 1.0; - } - } + subdivLevels = ss->subdivLevels; + lvl = (lvl)? lvl: subdivLevels; + gridSize = 1 + (1<<(lvl-1)); + cornerIdx = gridSize-1; - if (seam && seamEdges < 2) - seam = 0; + ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); - if (!v->numEdges) { - VertDataCopy(nCo, co); - } else if (_vert_isBoundary(v)) { - int numBoundary = 0; + for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; - if (_edge_isBoundary(e)) { - VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); - numBoundary++; - } - } + for (S=0; SnumVerts; S++) { + CCGEdge *e = FACE_getEdges(f)[S]; + CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts]; - VertDataCopy(nCo, co); - VertDataMulN(nCo, 0.75); - VertDataMulN(r, 0.25f/numBoundary); - VertDataAdd(nCo, r); - } else { - int cornerIdx = (1 + (1<<(curLvl))) - 2; - int numEdges = 0, numFaces = 0; + VertDataCopy(FACE_getCenterData(f), FACE_getIFCo(f, lvl, S, 0, 0)); + VertDataCopy(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx)); - VertDataZero(q); - for (i=0; inumFaces; i++) { - CCGFace *f = v->faces[i]; - VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx)); - numFaces++; - } - VertDataMulN(q, 1.0f/numFaces); - VertDataZero(r); - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; - VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize)); - numEdges++; - } - VertDataMulN(r, 1.0f/numEdges); + for (x=0; x1 && v->numFaces) || seam) { - VertDataZero(q); - - if (seam) { - avgSharpness = 1.0f; - sharpCount = seamEdges; - allSharp = 1; - } + if(freeF) CCGSUBSURF_free(ss, effectedF); - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; - float sharpness = EDGE_getSharpness(e, curLvl); + return eCCGError_None; +} - if (seam) { - if (_edge_isBoundary(e)) - VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); - } else if (sharpness != 0.0) { - VertDataAdd(q, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); - } - } +/* stitch together face grids, averaging coordinates at edges + and vertices, for multires displacements */ +CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF) +{ + CCGVert **effectedV; + CCGEdge **effectedE; + int numEffectedV, numEffectedE, freeF; + int i, S, x, gridSize, cornerIdx, subdivLevels, edgeSize; + int vertDataSize = ss->meshIFC.vertDataSize; - VertDataMulN(q, (float) 1/sharpCount); + subdivLevels = ss->subdivLevels; + lvl = (lvl)? lvl: subdivLevels; + gridSize = 1 + (1<<(lvl-1)); + edgeSize = 1 + (1<1.0) { - avgSharpness = 1.0; - } - } else { - sharpCount = 0; - avgSharpness = 0; - } + VertDataZero(FACE_getCenterData(f)); - if (_edge_isBoundary(e) && (!e->numFaces || sharpCount<2)) { - for (x=1; xnumFaces; i++) { - CCGFace *f = e->faces[i]; - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx-1, 1, subdivLevels, vertDataSize)); - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx+1, 1, subdivLevels, vertDataSize)); - - VertDataAdd(r, _face_getIFCoEdge(f, e, curLvl, x, 1, subdivLevels, vertDataSize)); - numFaces++; - } - VertDataMulN(q, 1.0/(numFaces*2.0f)); - VertDataMulN(r, 1.0/(2.0f + numFaces)); + for (S=0; SnumVerts; S++) + for (x=0; xnumVerts; S++) { + int prevS = (S+f->numVerts-1)%f->numVerts; + CCGEdge *e = FACE_getEdges(f)[S]; + CCGEdge *prevE = FACE_getEdges(f)[prevS]; - for (ptrIdx=0; ptrIdxnumVerts; S++) { - VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1)); - } - VertDataMulN(q, 1.0f/f->numVerts); - VertDataZero(r); - for (S=0; SnumVerts; S++) { - VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1)); + for (x=1; xnumVerts); - - VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f); - VertDataAdd(FACE_getCenterData(f), q); - VertDataAdd(FACE_getCenterData(f), r); - VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); - - for (S=0; SnumVerts; S++) { - /* interior face shift - * o old interior face point (shifting) - * o new interior edge midpoints - * o new interior face midpoints - */ - for (x=1; xnumVerts, 1, fx-1), - FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1), - FACE_getIFCo(f, nextLvl, S, fx+1, +1), - FACE_getIFCo(f, nextLvl, S, fx-1, +1)); - VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1), - FACE_getIECo(f, nextLvl, S, fx+1), - FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx), - FACE_getIFCo(f, nextLvl, S, fx, 1)); - - VertDataCopy(nCo, co); - VertDataSub(nCo, q); - VertDataMulN(nCo, 0.25f); - VertDataAdd(nCo, r); - } + for (x=0; xv0, nextLvl)); - VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl)); - } - for (i=0; inumVerts; S++) { - CCGEdge *e = FACE_getEdges(f)[S]; - CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts]; - - VertDataCopy(FACE_getIFCo(f, nextLvl, S, 0, 0), FACE_getCenterData(f)); - VertDataCopy(FACE_getIECo(f, nextLvl, S, 0), FACE_getCenterData(f)); - VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], nextLvl)); - VertDataCopy(FACE_getIECo(f, nextLvl, S, cornerIdx), EDGE_getCo(FACE_getEdges(f)[S], nextLvl, cornerIdx)); - for (x=1; xnumVerts, 0, x), co); - } - for (x=0; xnumFaces); } -#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset) -#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) - if (ss->calcVertNormals) { - int lvl = ss->subdivLevels; - int edgeSize = 1 + (1<normalDataOffset; + for (i=0; iv0, lvl)); + VertDataCopy(EDGE_getCo(e, lvl, edgeSize-1), VERT_getCo(e->v1, lvl)); - for (S=0; SnumVerts; S++) { - for (y=0; ynumVerts)%f->numVerts]->flags&Edge_eEffected) - for (x=0; xflags&Edge_eEffected) - for (y=0; yflags&Vert_eEffected) - NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, gridSize-1)); - } - } + for (x=1; xnumFaces); + } - for (ptrIdx=0; ptrIdxnumVerts; S++) { - int yLimit = !(FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected); - int xLimit = !(FACE_getEdges(f)[S]->flags&Edge_eEffected); - int yLimitNext = xLimit; - int xLimitPrev = yLimit; - - for (y=0; yflags&Vert_eEffected) { - NormAdd(FACE_getIFNo(f, lvl, S, x+1, y+1), no); - } - } + VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); - if (x==0 && y==0) { - int K; + for (S=0; SnumVerts; S++) + for (x=1; xnumVerts, 0, 1), no); - if (!xLimitPrev || 1numVerts)%f->numVerts, 1, 0), no); + for (S=0; SnumVerts; S++) { + int prevS = (S+f->numVerts-1)%f->numVerts; + CCGEdge *e = FACE_getEdges(f)[S]; + CCGEdge *prevE = FACE_getEdges(f)[prevS]; - for (K=0; KnumVerts; K++) { - if (K!=S) { - NormAdd(FACE_getIFNo(f, lvl, K, 0, 0), no); - } - } - } else if (y==0) { - NormAdd(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, x), no); - if (!yLimitNext || xnumVerts, 0, x+1), no); - } else if (x==0) { - NormAdd(FACE_getIFNo(f, lvl, (S-1+f->numVerts)%f->numVerts, y, 0), no); - if (!xLimitPrev || ynumVerts)%f->numVerts, y+1, 0), no); - } - } - } + VertDataCopy(FACE_getIFCo(f, lvl, S, 0, 0), FACE_getCenterData(f)); + VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx), VERT_getCo(FACE_getVerts(f)[S], lvl)); + + for (x=1; xflags = 0; + for (i=0; iflags = 0; + for (i=0; iflags = 0; - for (i=0; inumFaces; i++) { - CCGFace *f = v->faces[i]; - NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1)); - } + CCGSUBSURF_free(ss, effectedE); + CCGSUBSURF_free(ss, effectedV); + if(freeF) CCGSUBSURF_free(ss, effectedF); - length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]); + return eCCGError_None; +} - if (length>FLT_EPSILON) { - float invLength = 1.0f/length; - no[0] *= invLength; - no[1] *= invLength; - no[2] *= invLength; - } else { - NormZero(no); - } +/* update normals for specified faces */ +CCGError ccgSubSurf_updateNormals(CCGSubSurf *ss, CCGFace **effectedF, int numEffectedF) { + CCGVert **effectedV; + CCGEdge **effectedE; + int i, numEffectedV, numEffectedE, freeF; - for (i=0; inumFaces; i++) { - CCGFace *f = v->faces[i]; - NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize-1, gridSize-1), no); - } - } - for (ptrIdx=0; ptrIdxnumFaces) { - CCGFace *fLast = e->faces[e->numFaces-1]; - int x; + if (ss->calcVertNormals) + ccgSubSurf__calcVertNormals(ss, + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF); - for (i=0; inumFaces-1; i++) { - CCGFace *f = e->faces[i]; + for (i=0; iflags = 0; + for (i=0; iflags = 0; + for (i=0; iflags = 0; - for (x=1; xnumFaces-1; i++) { - CCGFace *f = e->faces[i]; + return eCCGError_None; +} - for (x=1; xsubdivLevels; - for (S=0; SnumVerts; S++) { - NormCopy(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, gridSize-1), - FACE_getIFNo(f, lvl, S, gridSize-1, 0)); - } - } - for (ptrIdx=0; ptrIdxnumVerts; S++) { - for (y=0; yFLT_EPSILON) { - float invLength = 1.0f/length; - no[0] *= invLength; - no[1] *= invLength; - no[2] *= invLength; - } else { - NormZero(no); - } - } - } - } - } - } -#undef FACE_getIFNo + ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); + ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF, + &effectedV, &numEffectedV, &effectedE, &numEffectedE); - for (ptrIdx=0; ptrIdxflags = 0; - } - for (ptrIdx=0; ptrIdxflags = 0; + for (curLvl=lvl; curLvlflags = 0; + for (i=0; iflags = 0; + for (i=0; iflags = 0; - CCGSUBSURF_free(ss, effectedF); CCGSUBSURF_free(ss, effectedE); CCGSUBSURF_free(ss, effectedV); + if(freeF) CCGSUBSURF_free(ss, effectedF); + + return eCCGError_None; } +#undef VERT_getCo +#undef EDGE_getCo +#undef FACE_getIECo +#undef FACE_getIFCo + /*** External API accessor functions ***/ int ccgSubSurf_getNumVerts(CCGSubSurf *ss) { diff --git a/source/blender/blenkernel/intern/CCGSubSurf.h b/source/blender/blenkernel/intern/CCGSubSurf.h index fbd0aecc0a5..d51cf0128c3 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.h +++ b/source/blender/blenkernel/intern/CCGSubSurf.h @@ -59,6 +59,11 @@ CCGError ccgSubSurf_syncFaceDel (CCGSubSurf *ss, CCGFaceHDL fHDL); CCGError ccgSubSurf_processSync (CCGSubSurf *ss); +CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces); +CCGError ccgSubSurf_updateNormals(CCGSubSurf *ss, CCGFace **faces, int numFaces); +CCGError ccgSubSurf_updateLevels(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces); +CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **faces, int numFaces); + CCGError ccgSubSurf_setSubdivisionLevels (CCGSubSurf *ss, int subdivisionLevels); CCGError ccgSubSurf_setAllowEdgeCreation (CCGSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData); -- cgit v1.2.3 From a1bf207be31f4bb578e920bc472cc3471a6554ca Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 13:11:44 +0000 Subject: Sculpt: Subsurf * Now uses the CCG DerivedMesh also in object mode, used to be edit mode only. * Create CD_ORIGINDEX layer on demand, to save memory. * Removed ss_to_cdderivedmesh function, and instead create ccgdm and then convert that to cddm, to avoid code duplication. * Added and implement DerivedMesh interface functions to obtain face grids. * Store edge/face flags more memory efficient. * Export CCGDerivedMesh struct in BKE_subsurf.h --- source/blender/blenkernel/BKE_DerivedMesh.h | 18 +- source/blender/blenkernel/BKE_subsurf.h | 53 +- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 17 +- source/blender/blenkernel/intern/multires.c | 4 +- source/blender/blenkernel/intern/particle_system.c | 7 +- source/blender/blenkernel/intern/subsurf_ccg.c | 961 +++++++++------------ source/blender/editors/mesh/editface.c | 10 +- source/blender/editors/sculpt_paint/sculpt.c | 2 +- 9 files changed, 495 insertions(+), 579 deletions(-) diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index d9b0c4bc357..6bce7575556 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -67,6 +67,16 @@ struct PBVH; #define SUB_ELEMS_EDGE 2 #define SUB_ELEMS_FACE 4 +typedef struct DMGridData { + float co[3]; + float no[3]; +} DMGridData; + +typedef struct DMGridAdjacency { + int index[4]; + int rotation[4]; +} DMGridAdjacency; + typedef struct DerivedMesh DerivedMesh; struct DerivedMesh { /* Private DerivedMesh data, only for internal DerivedMesh use */ @@ -135,6 +145,12 @@ struct DerivedMesh { void *(*getEdgeDataArray)(DerivedMesh *dm, int type); void *(*getFaceDataArray)(DerivedMesh *dm, int type); + /* optional grid access for subsurf */ + int (*getNumGrids)(DerivedMesh *dm); + int (*getGridSize)(DerivedMesh *dm); + DMGridData **(*getGridData)(DerivedMesh *dm); + DMGridAdjacency *(*getGridAdjacency)(DerivedMesh *dm); + /* Iterate over each mapped vertex in the derived mesh, calling the * given function with the original vert and the mapped vert's new * coordinate and normal. For historical reasons the normal can be @@ -189,7 +205,7 @@ struct DerivedMesh { /* Get the BVH used for paint modes */ - struct PBVH *(*getPBVH)(DerivedMesh *dm); + struct PBVH *(*getPBVH)(struct Object *ob, DerivedMesh *dm); /* Drawing Operations */ diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h index f6dc22f650a..7b8adb7cb8e 100644 --- a/source/blender/blenkernel/BKE_subsurf.h +++ b/source/blender/blenkernel/BKE_subsurf.h @@ -34,21 +34,60 @@ struct DerivedMesh; struct EditMesh; struct MultiresSubsurf; struct SubsurfModifierData; +struct _CCGSubsurf; +struct _CCGVert; +struct _CCGEdge; +struct _CCGFace; +struct PBVH; +struct DMGridData; +struct DMGridAdjacency; -struct DerivedMesh *subsurf_make_derived_from_derived( - struct DerivedMesh *dm, - struct SubsurfModifierData *smd, - int useRenderParams, float (*vertCos)[3], - int isFinalCalc, int editMode); +/**************************** External *****************************/ -struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( +struct DerivedMesh *subsurf_make_derived_from_derived( struct DerivedMesh *dm, struct SubsurfModifierData *smd, - struct MultiresSubsurf *ms, int useRenderParams, float (*vertCos)[3], int isFinalCalc, int editMode); void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]); +/**************************** Internal *****************************/ + +typedef struct CCGDerivedMesh { + DerivedMesh dm; + + struct _CCGSubSurf *ss; + int freeSS; + int drawInteriorEdges, useSubsurfUv; + + struct {int startVert; struct _CCGVert *vert;} *vertMap; + struct {int startVert; int startEdge; struct _CCGEdge *edge;} *edgeMap; + struct {int startVert; int startEdge; + int startFace; struct _CCGFace *face;} *faceMap; + + short *edgeFlags; + char *faceFlags; + + struct PBVH *pbvh; + + struct DMGridData **gridData; + struct DMGridAdjacency *gridAdjacency; + struct _CCGFace **gridFaces; + + struct { + struct MultiresModifierData *mmd; + int local_mmd; + + int lvl, totlvl; + float (*orco)[3]; + + Object *ob; + int modified; + + void (*update)(DerivedMesh*); + } multires; +} CCGDerivedMesh; + #endif diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index f9abaa9da02..5a911fcb13b 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1886,7 +1886,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos mask &= ~CD_MASK_ORCO; DM_set_only_copy(orcodm, mask); - ndm = mti->applyModifier(md, ob, orcodm, useRenderParams, !inputVertexCos); + ndm = mti->applyModifier(md, ob, orcodm, useRenderParams, 0); if(ndm) { /* if the modifier returned a new dm, release the old one */ diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index a07965c2a58..e64d8a24934 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -184,21 +184,21 @@ static ListBase *cdDM_getFaceMap(DerivedMesh *dm) if(!cddm->fmap) { create_vert_face_map(&cddm->fmap, &cddm->fmap_mem, cddm->mface, dm->getNumVerts(dm), dm->getNumFaces(dm)); - printf("rebuild fmap\n"); } return cddm->fmap; } -static struct PBVH *cdDM_getPBVH(DerivedMesh *dm) +static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; - if(!cddm->pbvh) { + if(!cddm->pbvh && ob->type == OB_MESH) { + Mesh *me= ob->data; + cddm->pbvh = BLI_pbvh_new(); - BLI_pbvh_build(cddm->pbvh, cddm->mface, cddm->mvert, - dm->getNumFaces(dm), dm->getNumVerts(dm)); - printf("rebuild pbvh\n"); + BLI_pbvh_build(cddm->pbvh, me->mface, me->mvert, + me->totface, me->totvert); } return cddm->pbvh; @@ -1627,6 +1627,11 @@ DerivedMesh *CDDM_copy(DerivedMesh *source) int numEdges = source->numEdgeData; int numFaces = source->numFaceData; + /* ensure these are created if they are made on demand */ + source->getVertDataArray(source, CD_ORIGINDEX); + source->getEdgeDataArray(source, CD_ORIGINDEX); + source->getFaceDataArray(source, CD_ORIGINDEX); + /* this initializes dm, and copies all non mvert/medge/mface layers */ DM_from_template(dm, source, numVerts, numEdges, numFaces); dm->deformedOnly = source->deformedOnly; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 47b2914b0f5..fc14afaf07f 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -193,7 +193,7 @@ static DerivedMesh *multires_subdisp_pre(DerivedMesh *mrdm, int distance, int si if(simple) smd.subdivType = ME_SIMPLE_SUBSURF; - final = subsurf_make_derived_from_derived_with_multires(mrdm, &smd, NULL, 0, NULL, 0, 0); + final = NULL; // XXX subsurf_make_derived_from_derived_with_multires(mrdm, &smd, NULL, 0, NULL, 0, 0); return final; } @@ -1247,7 +1247,7 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i smd.levels = smd.renderLevels = mmd->lvl - 1; smd.flags |= eSubsurfModifierFlag_SubsurfUv; - result = subsurf_make_derived_from_derived_with_multires(dm, &smd, &ms, useRenderParams, NULL, isFinalCalc, 0); + result = NULL; // XXX subsurf_make_derived_from_derived_with_multires(dm, &smd, &ms, useRenderParams, NULL, isFinalCalc, 0); for(i = 0; i < result->getNumVerts(result); ++i) MultiresDM_get_subco(result)[i] = CDDM_get_verts(result)[i]; multiresModifier_disp_run(result, MultiresDM_get_subco(result), 0); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 075c6f6207f..ffb35d5cf2f 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -287,12 +287,12 @@ void psys_calc_dmcache(Object *ob, DerivedMesh *dm, ParticleSystem *psys) if(psys->part->from == PART_FROM_VERT) { totdmelem= dm->getNumVerts(dm); totelem= me->totvert; - origindex= DM_get_vert_data_layer(dm, CD_ORIGINDEX); + origindex= dm->getVertDataArray(dm, CD_ORIGINDEX); } else { /* FROM_FACE/FROM_VOLUME */ totdmelem= dm->getNumFaces(dm); totelem= me->totface; - origindex= DM_get_face_data_layer(dm, CD_ORIGINDEX); + origindex= dm->getFaceDataArray(dm, CD_ORIGINDEX); } nodedmelem= MEM_callocN(sizeof(LinkNode)*totdmelem, "psys node elems"); @@ -948,7 +948,8 @@ static int psys_threads_init_distribution(ParticleThread *threads, Scene *scene, if(totpart==0) return 0; - if (!finaldm->deformedOnly && !CustomData_has_layer( &finaldm->faceData, CD_ORIGINDEX ) ) { + if (!finaldm->deformedOnly && !finaldm->getFaceDataArray(finaldm, CD_ORIGINDEX)) { + printf("Can't create particles with the current modifier stack, disable destructive modifiers\n"); // XXX error("Can't paint with the current modifier stack, disable destructive modifiers"); return 0; } diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 7197437bfd4..e465d17f498 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -53,11 +53,12 @@ #include "BKE_subsurf.h" #include "BLI_blenlib.h" +#include "BLI_edgehash.h" #include "BLI_editVert.h" -#include "BLI_math.h" #include "BLI_linklist.h" +#include "BLI_math.h" #include "BLI_memarena.h" -#include "BLI_edgehash.h" +#include "BLI_pbvh.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -68,25 +69,6 @@ #include "CCGSubSurf.h" -typedef struct _VertData { - float co[3]; - float no[3]; -} VertData; - -struct CCGDerivedMesh { - DerivedMesh dm; - - CCGSubSurf *ss; - int drawInteriorEdges, useSubsurfUv; - - struct {int startVert; CCGVert *vert;} *vertMap; - struct {int startVert; int startEdge; CCGEdge *edge;} *edgeMap; - struct {int startVert; int startEdge; - int startFace; CCGFace *face;} *faceMap; -}; - -typedef struct CCGDerivedMesh CCGDerivedMesh; - static int ccgDM_getVertMapIndex(CCGSubSurf *ss, CCGVert *v); static int ccgDM_getEdgeMapIndex(CCGSubSurf *ss, CCGEdge *e); static int ccgDM_getFaceMapIndex(CCGSubSurf *ss, CCGFace *f); @@ -136,7 +118,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, int useAgin } else { ifc.vertUserSize = ifc.edgeUserSize = ifc.faceUserSize = 8; } - ifc.vertDataSize = sizeof(VertData); + ifc.vertDataSize = sizeof(DMGridData); if (useArena) { CCGAllocatorIFC allocatorIFC; @@ -156,7 +138,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, int useAgin ccgSubSurf_setUseAgeCounts(ccgSS, 1, 8, 8, 8); } - ccgSubSurf_setCalcVertexNormals(ccgSS, 1, BLI_STRUCT_OFFSET(VertData, no)); + ccgSubSurf_setCalcVertexNormals(ccgSS, 1, BLI_STRUCT_OFFSET(DMGridData, no)); return ccgSS; } @@ -340,7 +322,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, if(!dmtface || !tface) return; - /* create a CCGSubsurf from uv's */ + /* create a CCGSubSurf from uv's */ uvss = _getSubSurf(NULL, ccgSubSurf_getSubdivisionLevels(ss), 0, 1, 0); if(!ss_sync_from_uv(uvss, ss, dm, dmtface)) { @@ -348,7 +330,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, return; } - /* get some info from CCGSubsurf */ + /* get some info from CCGSubSurf */ totface = ccgSubSurf_getNumFaces(uvss); edgeSize = ccgSubSurf_getEdgeSize(uvss); gridSize = ccgSubSurf_getGridSize(uvss); @@ -372,7 +354,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, int numVerts = ccgSubSurf_getFaceNumVerts(f); for (S=0; Sseam) { - flags |= ME_SEAM; - } - } else { - if (edgeIdx!=-1) { - MEdge *origMed = &medge[edgeIdx]; - - if (dlm) { - flags |= origMed->flag&~ME_EDGE_STEPINDEX; - } else { - flags |= (origMed->flag&ME_SEAM)|ME_EDGEDRAW|ME_EDGERENDER; - } - } - } - - return flags; -} -#endif - /* face weighting */ static void calc_ss_weights(int gridFaces, FaceVertWeight **qweight, FaceVertWeight **tweight) @@ -471,360 +422,6 @@ static void calc_ss_weights(int gridFaces, } } -static DerivedMesh *ss_to_cdderivedmesh(CCGSubSurf *ss, int ssFromEditmesh, - int drawInteriorEdges, int useSubsurfUv, - DerivedMesh *dm, MultiresSubsurf *ms) -{ - DerivedMesh *result; - int edgeSize = ccgSubSurf_getEdgeSize(ss); - int gridSize = ccgSubSurf_getGridSize(ss); - int gridFaces = gridSize - 1; - int edgeBase, faceBase; - int i, j, k, S, x, y, index; - CCGVertIterator *vi; - CCGEdgeIterator *ei; - CCGFaceIterator *fi; - CCGFace **faceMap2; - CCGEdge **edgeMap2; - CCGVert **vertMap2; - int totvert, totedge, totface; - MVert *mvert; - MEdge *med; - MFace *mf; - int *origIndex; - FaceVertWeight *qweight, *tweight; - - calc_ss_weights(gridFaces, &qweight, &tweight); - - /* vert map */ - totvert = ccgSubSurf_getNumVerts(ss); - vertMap2 = MEM_mallocN(totvert*sizeof(*vertMap2), "vertmap"); - vi = ccgSubSurf_getVertIterator(ss); - for(; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { - CCGVert *v = ccgVertIterator_getCurrent(vi); - - vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v; - } - ccgVertIterator_free(vi); - - totedge = ccgSubSurf_getNumEdges(ss); - edgeMap2 = MEM_mallocN(totedge*sizeof(*edgeMap2), "edgemap"); - ei = ccgSubSurf_getEdgeIterator(ss); - for(; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { - CCGEdge *e = ccgEdgeIterator_getCurrent(ei); - - edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e; - } - - totface = ccgSubSurf_getNumFaces(ss); - faceMap2 = MEM_mallocN(totface*sizeof(*faceMap2), "facemap"); - fi = ccgSubSurf_getFaceIterator(ss); - for(; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { - CCGFace *f = ccgFaceIterator_getCurrent(fi); - - faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f))] = f; - } - ccgFaceIterator_free(fi); - - if(ms) { - result = MultiresDM_new(ms, dm, ccgSubSurf_getNumFinalVerts(ss), - ccgSubSurf_getNumFinalEdges(ss), - ccgSubSurf_getNumFinalFaces(ss)); - } - else { - if(dm) { - result = CDDM_from_template(dm, ccgSubSurf_getNumFinalVerts(ss), - ccgSubSurf_getNumFinalEdges(ss), - ccgSubSurf_getNumFinalFaces(ss)); - } else { - result = CDDM_new(ccgSubSurf_getNumFinalVerts(ss), - ccgSubSurf_getNumFinalEdges(ss), - ccgSubSurf_getNumFinalFaces(ss)); - } - } - - // load verts - faceBase = i = 0; - mvert = CDDM_get_verts(result); - origIndex = result->getVertDataArray(result, CD_ORIGINDEX); - - for(index = 0; index < totface; index++) { - CCGFace *f = faceMap2[index]; - int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); - FaceVertWeight *weight = (numVerts == 4) ? qweight : tweight; - int vertIdx[4]; - - for(S = 0; S < numVerts; S++) { - CCGVert *v = ccgSubSurf_getFaceVert(ss, f, S); - - vertIdx[S] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); - } - - DM_interp_vert_data(dm, result, vertIdx, weight[0][0], numVerts, i); - copy_v3_v3(mvert->co, ccgSubSurf_getFaceCenterData(f)); - *origIndex = ORIGINDEX_NONE; - ++mvert; - ++origIndex; - i++; - - for(S = 0; S < numVerts; S++) { - int prevS = (S - 1 + numVerts) % numVerts; - int nextS = (S + 1) % numVerts; - int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3; - - for(x = 1; x < gridFaces; x++) { - float w[4]; - w[prevS] = weight[x][0][0]; - w[S] = weight[x][0][1]; - w[nextS] = weight[x][0][2]; - w[otherS] = weight[x][0][3]; - DM_interp_vert_data(dm, result, vertIdx, w, numVerts, i); - copy_v3_v3(mvert->co, - ccgSubSurf_getFaceGridEdgeData(ss, f, S, x)); - - *origIndex = ORIGINDEX_NONE; - ++mvert; - ++origIndex; - i++; - } - } - - for(S = 0; S < numVerts; S++) { - int prevS = (S - 1 + numVerts) % numVerts; - int nextS = (S + 1) % numVerts; - int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3; - - for(y = 1; y < gridFaces; y++) { - for(x = 1; x < gridFaces; x++) { - float w[4]; - w[prevS] = weight[y * gridFaces + x][0][0]; - w[S] = weight[y * gridFaces + x][0][1]; - w[nextS] = weight[y * gridFaces + x][0][2]; - w[otherS] = weight[y * gridFaces + x][0][3]; - DM_interp_vert_data(dm, result, vertIdx, w, numVerts, i); - copy_v3_v3(mvert->co, - ccgSubSurf_getFaceGridData(ss, f, S, x, y)); - *origIndex = ORIGINDEX_NONE; - ++mvert; - ++origIndex; - i++; - } - } - } - - *((int*)ccgSubSurf_getFaceUserData(ss, f)) = faceBase; - faceBase += 1 + numVerts * ((gridSize-2) + (gridSize-2) * (gridSize-2)); - } - - edgeBase = i; - for(index = 0; index < totedge; index++) { - CCGEdge *e = edgeMap2[index]; - int x; - int vertIdx[2]; - - CCGVert *v; - v = ccgSubSurf_getEdgeVert0(e); - vertIdx[0] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); - v = ccgSubSurf_getEdgeVert1(e); - vertIdx[1] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); - - for(x = 1; x < edgeSize - 1; x++) { - float w[2]; - w[1] = (float) x / (edgeSize - 1); - w[0] = 1 - w[1]; - DM_interp_vert_data(dm, result, vertIdx, w, 2, i); - copy_v3_v3(mvert->co, ccgSubSurf_getEdgeData(ss, e, x)); - *origIndex = ORIGINDEX_NONE; - ++mvert; - ++origIndex; - i++; - } - - *((int*)ccgSubSurf_getEdgeUserData(ss, e)) = edgeBase; - edgeBase += edgeSize-2; - } - - for(index = 0; index < totvert; index++) { - CCGVert *v = vertMap2[index]; - int vertIdx; - - vertIdx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); - - DM_copy_vert_data(dm, result, vertIdx, i, 1); - copy_v3_v3(mvert->co, ccgSubSurf_getVertData(ss, v)); - - *((int*)ccgSubSurf_getVertUserData(ss, v)) = i; - *origIndex = ccgDM_getVertMapIndex(ss, v); - ++mvert; - ++origIndex; - i++; - } - - // load edges - i = 0; - med = CDDM_get_edges(result); - origIndex = result->getEdgeDataArray(result, CD_ORIGINDEX); - - for(index = 0; index < totface; index++) { - CCGFace *f = faceMap2[index]; - int numVerts = ccgSubSurf_getFaceNumVerts(f); - - for(k = 0; k < numVerts; k++) { - for(x = 0; x < gridFaces; x++) { - if(drawInteriorEdges) med->flag = ME_EDGEDRAW | ME_EDGERENDER; - med->v1 = getFaceIndex(ss, f, k, x, 0, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, k, x+1, 0, edgeSize, gridSize); - *origIndex = ORIGINDEX_NONE; - ++med; - ++origIndex; - i++; - } - - for(x = 1; x < gridFaces; x++) { - for(y = 0; y < gridFaces; y++) { - if(drawInteriorEdges) - med->flag = ME_EDGEDRAW | ME_EDGERENDER; - med->v1 = getFaceIndex(ss, f, k, x, y, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, k, x, y + 1, - edgeSize, gridSize); - *origIndex = ORIGINDEX_NONE; - ++med; - ++origIndex; - i++; - - if(drawInteriorEdges) - med->flag = ME_EDGEDRAW | ME_EDGERENDER; - med->v1 = getFaceIndex(ss, f, k, y, x, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, k, y + 1, x, - edgeSize, gridSize); - *origIndex = ORIGINDEX_NONE; - ++med; - ++origIndex; - i++; - } - } - } - } - - for(index = 0; index < totedge; index++) { - CCGEdge *e = edgeMap2[index]; - unsigned int flags = 0; - char bweight = 0; - int edgeIdx = GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e)); - - if(!ccgSubSurf_getEdgeNumFaces(e)) flags |= ME_LOOSEEDGE; - - - if(edgeIdx != -1 && dm) { - MEdge origMed; - dm->getEdge(dm, edgeIdx, &origMed); - - flags |= origMed.flag; - bweight = origMed.bweight; - } - - for(x = 0; x < edgeSize - 1; x++) { - med->v1 = getEdgeIndex(ss, e, x, edgeSize); - med->v2 = getEdgeIndex(ss, e, x + 1, edgeSize); - med->flag = flags; - med->bweight = bweight; - *origIndex = ccgDM_getEdgeMapIndex(ss, e); - ++med; - ++origIndex; - i++; - } - } - - // load faces - i = 0; - mf = CDDM_get_faces(result); - origIndex = result->getFaceDataArray(result, CD_ORIGINDEX); - - for(index = 0; index < totface; index++) { - CCGFace *f = faceMap2[index]; - int numVerts = ccgSubSurf_getFaceNumVerts(f); - int mat_nr; - int flag; - int mapIndex = ccgDM_getFaceMapIndex(ss, f); - int faceIdx = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f)); - - if(!ssFromEditmesh) { - MFace origMFace; - dm->getFace(dm, faceIdx, &origMFace); - - mat_nr = origMFace.mat_nr; - flag = origMFace.flag; - } else { - EditFace *ef = ccgSubSurf_getFaceFaceHandle(ss, f); - mat_nr = ef->mat_nr; - flag = ef->flag; - } - - for(S = 0; S < numVerts; S++) { - FaceVertWeight *weight = (numVerts == 4) ? qweight : tweight; - - for(y = 0; y < gridFaces; y++) { - for(x = 0; x < gridFaces; x++) { - mf->v1 = getFaceIndex(ss, f, S, x + 0, y + 0, - edgeSize, gridSize); - mf->v2 = getFaceIndex(ss, f, S, x + 0, y + 1, - edgeSize, gridSize); - mf->v3 = getFaceIndex(ss, f, S, x + 1, y + 1, - edgeSize, gridSize); - mf->v4 = getFaceIndex(ss, f, S, x + 1, y + 0, - edgeSize, gridSize); - mf->mat_nr = mat_nr; - mf->flag = flag; - - if(dm) { - int prevS = (S - 1 + numVerts) % numVerts; - int nextS = (S + 1) % numVerts; - int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3; - FaceVertWeight w; - - for(j = 0; j < 4; ++j) { - w[j][prevS] = (*weight)[j][0]; - w[j][S] = (*weight)[j][1]; - w[j][nextS] = (*weight)[j][2]; - w[j][otherS] = (*weight)[j][3]; - } - - DM_interp_face_data(dm, result, &faceIdx, NULL, - &w, 1, i); - weight++; - } - - *origIndex = mapIndex; - ++mf; - ++origIndex; - i++; - } - } - } - } - - MEM_freeN(faceMap2); - MEM_freeN(edgeMap2); - MEM_freeN(vertMap2); - - MEM_freeN(tweight); - MEM_freeN(qweight); - - if(useSubsurfUv) { - CustomData *fdata = &result->faceData; - CustomData *dmfdata = &dm->faceData; - int numlayer = CustomData_number_of_layers(fdata, CD_MTFACE); - int dmnumlayer = CustomData_number_of_layers(dmfdata, CD_MTFACE); - - for (i=0; iedgeMap[0].startEdge) / (edgeSize - 1); @@ -1121,7 +719,7 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) med->v1 = getEdgeIndex(ss, e, x, edgeSize); med->v2 = getEdgeIndex(ss, e, x+1, edgeSize); - edgeFlag = dm->getEdgeData(dm, edgeNum, CD_FLAGS); + edgeFlag = (ccgdm->edgeFlags)? &ccgdm->edgeFlags[i]: NULL; if(edgeFlag) flags |= (*edgeFlag & (ME_SEAM | ME_SHARP)) | ME_EDGEDRAW | ME_EDGERENDER; @@ -1147,7 +745,7 @@ static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) int grid; int x, y; int lastface = ccgSubSurf_getNumFaces(ss) - 1; - char *faceFlags = dm->getFaceDataArray(dm, CD_FLAGS); + char *faceFlags = ccgdm->faceFlags; memset(mf, 0, sizeof(*mf)); @@ -1169,7 +767,7 @@ static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) mf->v3 = getFaceIndex(ss, f, grid, x+1, y+1, edgeSize, gridSize); mf->v4 = getFaceIndex(ss, f, grid, x+1, y+0, edgeSize, gridSize); - if(faceFlags) mf->flag = faceFlags[i*4]; + if(faceFlags) mf->flag = faceFlags[i*2]; else mf->flag = ME_SMOOTH; } @@ -1177,6 +775,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; + DMGridData *vd; int index; int totvert, totedge, totface; int gridSize = ccgSubSurf_getGridSize(ss); @@ -1188,20 +787,25 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) CCGFace *f = ccgdm->faceMap[index].face; int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); - copy_v3_v3(mvert[i++].co, ccgSubSurf_getFaceCenterData(f)); + vd= ccgSubSurf_getFaceCenterData(f); + copy_v3_v3(mvert[i].co, vd->co); + normal_float_to_short_v3(mvert[i].no, vd->no); + i++; for(S = 0; S < numVerts; S++) { - for(x = 1; x < gridSize - 1; x++) { - copy_v3_v3(mvert[i++].co, - ccgSubSurf_getFaceGridEdgeData(ss, f, S, x)); + for(x = 1; x < gridSize - 1; x++, i++) { + vd= ccgSubSurf_getFaceGridEdgeData(ss, f, S, x); + copy_v3_v3(mvert[i].co, vd->co); + normal_float_to_short_v3(mvert[i].no, vd->no); } } for(S = 0; S < numVerts; S++) { for(y = 1; y < gridSize - 1; y++) { - for(x = 1; x < gridSize - 1; x++) { - copy_v3_v3(mvert[i++].co, - ccgSubSurf_getFaceGridData(ss, f, S, x, y)); + for(x = 1; x < gridSize - 1; x++, i++) { + vd= ccgSubSurf_getFaceGridData(ss, f, S, x, y); + copy_v3_v3(mvert[i].co, vd->co); + normal_float_to_short_v3(mvert[i].no, vd->no); } } } @@ -1212,8 +816,10 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) CCGEdge *e = ccgdm->edgeMap[index].edge; int x; - for(x = 1; x < edgeSize - 1; x++) { - copy_v3_v3(mvert[i++].co, ccgSubSurf_getEdgeData(ss, e, x)); + for(x = 1; x < edgeSize - 1; x++, i++) { + vd= ccgSubSurf_getEdgeData(ss, e, x); + copy_v3_v3(mvert[i].co, vd->co); + normal_float_to_short_v3(mvert[i].no, vd->no); } } @@ -1221,8 +827,9 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) for(index = 0; index < totvert; index++) { CCGVert *v = ccgdm->vertMap[index].vert; - copy_v3_v3(mvert[i].co, ccgSubSurf_getVertData(ss, v)); - + vd= ccgSubSurf_getVertData(ss, v); + copy_v3_v3(mvert[i].co, vd->co); + normal_float_to_short_v3(mvert[i].no, vd->no); i++; } } @@ -1236,7 +843,7 @@ static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) int gridSize = ccgSubSurf_getGridSize(ss); int edgeSize = ccgSubSurf_getEdgeSize(ss); int i = 0; - int *edgeFlags = dm->getEdgeDataArray(dm, CD_FLAGS); + short *edgeFlags = ccgdm->edgeFlags; totface = ccgSubSurf_getNumFaces(ss); for(index = 0; index < totface; index++) { @@ -1291,7 +898,7 @@ static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) if(edgeFlags) { if(edgeIdx != -1) { - flags |= (edgeFlags[i] & (ME_SEAM | ME_SHARP)) + flags |= (edgeFlags[index] & (ME_SEAM | ME_SHARP)) | ME_EDGEDRAW | ME_EDGERENDER; } } else { @@ -1317,7 +924,7 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) int gridSize = ccgSubSurf_getGridSize(ss); int edgeSize = ccgSubSurf_getEdgeSize(ss); int i = 0; - char *faceFlags = dm->getFaceDataArray(dm, CD_FLAGS); + char *faceFlags = ccgdm->faceFlags; totface = ccgSubSurf_getNumFaces(ss); for(index = 0; index < totface; index++) { @@ -1339,7 +946,7 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) mf->v4 = getFaceIndex(ss, f, S, x + 1, y + 0, edgeSize, gridSize); mf->mat_nr = mat_nr; - if(faceFlags) mf->flag = faceFlags[index*4]; + if(faceFlags) mf->flag = faceFlags[index*2]; else mf->flag = flag; i++; @@ -1438,7 +1045,7 @@ static void ccgDM_foreachMappedVert(DerivedMesh *dm, void (*func)(void *userData for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); - VertData *vd = ccgSubSurf_getVertData(ccgdm->ss, v); + DMGridData *vd = ccgSubSurf_getVertData(ccgdm->ss, v); int index = ccgDM_getVertMapIndex(ccgdm->ss, v); if (index!=-1) @@ -1455,7 +1062,7 @@ static void ccgDM_foreachMappedEdge(DerivedMesh *dm, void (*func)(void *userData for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); - VertData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); + DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); if (index!=-1) { @@ -1524,7 +1131,7 @@ static void ccgDM_drawEdges(DerivedMesh *dm, int drawLooseEdges) { for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); - VertData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); + DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); if (!drawLooseEdges && !ccgSubSurf_getEdgeNumFaces(e)) continue; @@ -1552,7 +1159,7 @@ static void ccgDM_drawEdges(DerivedMesh *dm, int drawLooseEdges) { int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); for (S=0; Sss; - CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); + CCGFaceIterator *fi; int gridSize = ccgSubSurf_getGridSize(ss); - char *faceFlags = DM_get_face_data_layer(dm, CD_FLAGS); + char *faceFlags = ccgdm->faceFlags; + int step = 1; //(fast)? gridSize-1: 1; +#if 0 + if(ccgdm->pbvh && ccgdm->multires.mmd && !fast) { + CCGFace **faces; + int totface; + + BLI_pbvh_get_grid_updates(ccgdm->pbvh, (void***)&faces, &totface); + if(totface) { + ccgSubSurf_updateFromFaces(ss, 0, faces, totface); + ccgSubSurf_updateNormals(ss, faces, totface); + MEM_freeN(faces); + } + + /* should be per face */ + if(faceFlags && faceFlags[0] & ME_SMOOTH) + glShadeModel(GL_SMOOTH); + + BLI_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL); + + glShadeModel(GL_FLAT); + + return; + } +#endif + + fi = ccgSubSurf_getFaceIterator(ss); for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); @@ -1629,8 +1262,8 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) int drawSmooth, mat_nr; if(faceFlags) { - drawSmooth = (faceFlags[index*4] & ME_SMOOTH); - mat_nr= faceFlags[index*4 + 1]; + drawSmooth = (faceFlags[index*2] & ME_SMOOTH); + mat_nr= faceFlags[index*2 + 1]; } else { drawSmooth = 1; @@ -1642,14 +1275,14 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT); for (S=0; Sno); glVertex3fv(a->co); @@ -1660,12 +1293,12 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) } } else { glBegin(GL_QUADS); - for (y=0; yfaceFlags; int a, b, i, doDraw, numVerts, matnr, new_matnr, totface; doDraw = 0; @@ -1737,8 +1370,8 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, v numVerts = ccgSubSurf_getFaceNumVerts(f); if(faceFlags) { - drawSmooth = (faceFlags[index*4] & ME_SMOOTH); - new_matnr= faceFlags[index*4 + 1] + 1; + drawSmooth = (faceFlags[index*2] & ME_SMOOTH); + new_matnr= faceFlags[index*2 + 1] + 1; } else { drawSmooth = 1; @@ -1770,8 +1403,8 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, v glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT); for (S=0; Sss; MCol *mcol = DM_get_face_data_layer(dm, CD_MCOL); MTFace *tf = DM_get_face_data_layer(dm, CD_MTFACE); - char *faceFlags = DM_get_face_data_layer(dm, CD_FLAGS); + char *faceFlags = ccgdm->faceFlags; int i, totface, flag, gridSize = ccgSubSurf_getGridSize(ss); int gridFaces = gridSize - 1; @@ -1932,8 +1565,8 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, int mat_nr; if(faceFlags) { - drawSmooth = (faceFlags[origIndex*4] & ME_SMOOTH); - mat_nr= faceFlags[origIndex*4 + 1]; + drawSmooth = (faceFlags[origIndex*2] & ME_SMOOTH); + mat_nr= faceFlags[origIndex*2 + 1]; } else { drawSmooth = 1; @@ -1958,8 +1591,8 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, } for (S=0; Sss; CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); int i, gridSize = ccgSubSurf_getGridSize(ss); - char *faceFlags = dm->getFaceDataArray(dm, CD_FLAGS); + char *faceFlags = ccgdm->faceFlags; for (i=0; !ccgFaceIterator_isStopped(fi); i++,ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); @@ -2099,7 +1732,7 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *u origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f)); - if(faceFlags) drawSmooth = (faceFlags[origIndex*4] & ME_SMOOTH); + if(faceFlags) drawSmooth = (faceFlags[origIndex*2] & ME_SMOOTH); else drawSmooth = 1; if (index!=-1) { @@ -2113,14 +1746,14 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *u } for (S=0; Sno); glVertex3fv(a->co); @@ -2174,7 +1807,7 @@ static void ccgDM_drawMappedEdges(DerivedMesh *dm, int (*setDrawOptions)(void *u for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); - VertData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); + DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); glBegin(GL_LINE_STRIP); @@ -2204,7 +1837,7 @@ static void ccgDM_drawMappedEdgesInterp(DerivedMesh *dm, int (*setDrawOptions)(v for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); - VertData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); + DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); glBegin(GL_LINE_STRIP); @@ -2236,7 +1869,7 @@ static void ccgDM_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *us if (index!=-1) { /* Face center data normal isn't updated atm. */ - VertData *vd = ccgSubSurf_getFaceGridData(ss, f, 0, 0, 0); + DMGridData *vd = ccgSubSurf_getFaceGridData(ss, f, 0, 0, 0); func(userData, index, vd->co, vd->no); } @@ -2249,6 +1882,22 @@ static void ccgDM_release(DerivedMesh *dm) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; if (DM_release(dm)) { + /* Before freeing, need to update the displacement map */ + if(ccgdm->multires.modified) { + /* Check that mmd still exists */ + if(!ccgdm->multires.local_mmd && BLI_findindex(&ccgdm->multires.ob->modifiers, ccgdm->multires.mmd) < 0) + ccgdm->multires.mmd = NULL; + if(ccgdm->multires.mmd) + ccgdm->multires.update(dm); + } + + if(ccgdm->pbvh) BLI_pbvh_free(ccgdm->pbvh); + if(ccgdm->gridFaces) MEM_freeN(ccgdm->gridFaces); + if(ccgdm->gridData) MEM_freeN(ccgdm->gridData); + if(ccgdm->gridAdjacency) MEM_freeN(ccgdm->gridAdjacency); + if(ccgdm->freeSS) ccgSubSurf_free(ccgdm->ss); + MEM_freeN(ccgdm->edgeFlags); + MEM_freeN(ccgdm->faceFlags); MEM_freeN(ccgdm->vertMap); MEM_freeN(ccgdm->edgeMap); MEM_freeN(ccgdm->faceMap); @@ -2256,6 +1905,262 @@ static void ccgDM_release(DerivedMesh *dm) { } } +static void *ccgDM_get_vert_data_layer(DerivedMesh *dm, int type) +{ + if(type == CD_ORIGINDEX) { + /* create origindex on demand to save memory */ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGSubSurf *ss= ccgdm->ss; + int *origindex; + int a, index, totnone, totorig; + + DM_add_vert_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); + origindex= DM_get_vert_data_layer(dm, CD_ORIGINDEX); + + totorig = ccgSubSurf_getNumVerts(ss); + totnone= dm->numVertData - totorig; + + /* original vertices are at the end */ + for(a=0; avertMap[index].vert; + origindex[a] = ccgDM_getVertMapIndex(ccgdm->ss, v); + } + + return origindex; + } + + return DM_get_vert_data_layer(dm, type); +} + +static void *ccgDM_get_edge_data_layer(DerivedMesh *dm, int type) +{ + if(type == CD_ORIGINDEX) { + /* create origindex on demand to save memory */ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGSubSurf *ss= ccgdm->ss; + int *origindex; + int a, i, index, totnone, totorig, totedge; + int edgeSize= ccgSubSurf_getEdgeSize(ss); + + DM_add_edge_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); + origindex= DM_get_edge_data_layer(dm, CD_ORIGINDEX); + + totedge= ccgSubSurf_getNumEdges(ss); + totorig= totedge*(edgeSize - 1); + totnone= dm->numEdgeData - totorig; + + /* original edges are at the end */ + for(a=0; aedgeMap[index].edge; + int mapIndex= ccgDM_getEdgeMapIndex(ss, e); + + for(i = 0; i < edgeSize - 1; i++, a++) + origindex[a]= mapIndex; + } + + return origindex; + } + + return DM_get_edge_data_layer(dm, type); +} + +static void *ccgDM_get_face_data_layer(DerivedMesh *dm, int type) +{ + if(type == CD_ORIGINDEX) { + /* create origindex on demand to save memory */ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGSubSurf *ss= ccgdm->ss; + int *origindex; + int a, i, index, totface; + int gridFaces = ccgSubSurf_getGridSize(ss) - 1; + + DM_add_face_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); + origindex= DM_get_face_data_layer(dm, CD_ORIGINDEX); + + totface= ccgSubSurf_getNumFaces(ss); + + for(a=0, index=0; indexfaceMap[index].face; + int numVerts = ccgSubSurf_getFaceNumVerts(f); + int mapIndex = ccgDM_getFaceMapIndex(ss, f); + + for(i=0; iss); + numGrids= 0; + + for(index=0; indexfaceMap[index].face; + numGrids += ccgSubSurf_getFaceNumVerts(f); + } + + return numGrids; +} + +static int ccgDM_getGridSize(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + return ccgSubSurf_getGridSize(ccgdm->ss); +} + +static int ccgdm_adjacent_grid(CCGSubSurf *ss, int *gridOffset, CCGFace *f, int S, int offset) +{ + CCGFace *adjf; + CCGEdge *e; + int i, j= 0, numFaces, fIndex, numEdges= 0; + + e = ccgSubSurf_getFaceEdge(ss, f, S); + numFaces = ccgSubSurf_getEdgeNumFaces(e); + + if(numFaces != 2) + return -1; + + for(i = 0; i < numFaces; i++) { + adjf = ccgSubSurf_getEdgeFace(e, i); + + if(adjf != f) { + numEdges = ccgSubSurf_getFaceNumVerts(adjf); + for(j = 0; j < numEdges; j++) + if(ccgSubSurf_getFaceEdge(ss, adjf, j) == e) + break; + + if(j != numEdges) + break; + } + } + + fIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, adjf)); + + return gridOffset[fIndex] + (j + offset)%numEdges; +} + +static void ccgdm_create_grids(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGSubSurf *ss= ccgdm->ss; + DMGridData **gridData; + DMGridAdjacency *gridAdjacency, *adj; + CCGFace **gridFaces; + int *gridOffset; + int index, numFaces, numGrids, S, gIndex, gridSize; + + if(ccgdm->gridData) + return; + + numGrids = ccgDM_getNumGrids(dm); + numFaces = ccgSubSurf_getNumFaces(ss); + gridSize = ccgDM_getGridSize(dm); + + /* compute offset into grid array for each face */ + gridOffset = MEM_mallocN(sizeof(int)*numFaces, "ccgdm.gridOffset"); + + for(gIndex = 0, index = 0; index < numFaces; index++) { + CCGFace *f = ccgdm->faceMap[index].face; + int numVerts = ccgSubSurf_getFaceNumVerts(f); + + gridOffset[index] = gIndex; + gIndex += numVerts; + } + + /* compute grid data */ + gridData = MEM_mallocN(sizeof(DMGridData*)*numGrids, "ccgdm.gridData"); + gridAdjacency = MEM_mallocN(sizeof(DMGridAdjacency)*numGrids, "ccgdm.gridAdjacency"); + gridFaces = MEM_mallocN(sizeof(CCGFace*)*numGrids, "ccgdm.gridFaces"); + + for(gIndex = 0, index = 0; index < numFaces; index++) { + CCGFace *f = ccgdm->faceMap[index].face; + int numVerts = ccgSubSurf_getFaceNumVerts(f); + + for(S = 0; S < numVerts; S++, gIndex++) { + int prevS = (S - 1 + numVerts) % numVerts; + int nextS = (S + 1 + numVerts) % numVerts; + + gridData[gIndex] = ccgSubSurf_getFaceGridDataArray(ss, f, S); + gridFaces[gIndex] = f; + + adj = &gridAdjacency[gIndex]; + + adj->index[0] = gIndex - S + nextS; + adj->rotation[0] = 3; + adj->index[1] = ccgdm_adjacent_grid(ss, gridOffset, f, prevS, 0); + adj->rotation[1] = 1; + adj->index[2] = ccgdm_adjacent_grid(ss, gridOffset, f, S, 1); + adj->rotation[2] = 3; + adj->index[3] = gIndex - S + prevS; + adj->rotation[3] = 1; + } + } + + ccgdm->gridData = gridData; + ccgdm->gridFaces = gridFaces; + ccgdm->gridAdjacency = gridAdjacency; + MEM_freeN(gridOffset); +} + +static DMGridData **ccgDM_getGridData(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + + ccgdm_create_grids(dm); + return ccgdm->gridData; +} + +static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + + ccgdm_create_grids(dm); + return ccgdm->gridAdjacency; +} + +static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + //int gridSize, numGrids; + + if(ccgdm->pbvh) + return ccgdm->pbvh; + + /*if(ccgdm->multires.mmd) { + ccgdm_create_grids(dm); + + gridSize = ccgDM_getGridSize(dm); + numGrids = ccgDM_getNumGrids(dm); + + ccgdm->pbvh = BLI_pbvh_new(); + BLI_pbvh_build_grids(ccgdm->pbvh, ccgdm->gridData, numGrids, gridSize, + (void**)ccgdm->gridFaces); + } + else*/ if(ob->type == OB_MESH) { + Mesh *me= ob->data; + + ccgdm->pbvh = BLI_pbvh_new(); + BLI_pbvh_build(ccgdm->pbvh, me->mface, me->mvert, + me->totface, me->totvert); + } + + return ccgdm->pbvh; +} + static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, int drawInteriorEdges, int useSubsurfUv, @@ -2268,17 +2173,14 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, int index, totvert, totedge, totface; int i; int vertNum, edgeNum, faceNum; - int *vertOrigIndex, *faceOrigIndex; /* *edgeOrigIndex - as yet, unused */ - int *edgeFlags; + short *edgeFlags; char *faceFlags; int edgeSize; int gridSize; int gridFaces; int gridSideVerts; - /*int gridInternalVerts; - as yet unused */ int gridSideEdges; int gridInternalEdges; - /* MVert *mvert = NULL; - as yet unused */ MEdge *medge = NULL; MFace *mface = NULL; FaceVertWeight *qweight, *tweight; @@ -2286,11 +2188,6 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, DM_from_template(&ccgdm->dm, dm, ccgSubSurf_getNumFinalVerts(ss), ccgSubSurf_getNumFinalEdges(ss), ccgSubSurf_getNumFinalFaces(ss)); - DM_add_face_layer(&ccgdm->dm, CD_FLAGS, CD_CALLOC, NULL); - DM_add_edge_layer(&ccgdm->dm, CD_FLAGS, CD_CALLOC, NULL); - - CustomData_set_layer_flag(&ccgdm->dm.faceData, CD_FLAGS, CD_FLAG_NOCOPY); - CustomData_set_layer_flag(&ccgdm->dm.edgeData, CD_FLAGS, CD_FLAG_NOCOPY); ccgdm->dm.getMinMax = ccgDM_getMinMax; ccgdm->dm.getNumVerts = ccgDM_getNumVerts; @@ -2306,9 +2203,14 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, ccgdm->dm.getVertData = DM_get_vert_data; ccgdm->dm.getEdgeData = DM_get_edge_data; ccgdm->dm.getFaceData = DM_get_face_data; - ccgdm->dm.getVertDataArray = DM_get_vert_data_layer; - ccgdm->dm.getEdgeDataArray = DM_get_edge_data_layer; - ccgdm->dm.getFaceDataArray = DM_get_face_data_layer; + ccgdm->dm.getVertDataArray = ccgDM_get_vert_data_layer; + ccgdm->dm.getEdgeDataArray = ccgDM_get_edge_data_layer; + ccgdm->dm.getFaceDataArray = ccgDM_get_face_data_layer; + ccgdm->dm.getNumGrids = ccgDM_getNumGrids; + ccgdm->dm.getGridSize = ccgDM_getGridSize; + ccgdm->dm.getGridData = ccgDM_getGridData; + ccgdm->dm.getGridAdjacency = ccgDM_getGridAdjacency; + ccgdm->dm.getPBVH = ccgDM_getPBVH; ccgdm->dm.getVertCos = ccgdm_getVertCos; ccgdm->dm.foreachMappedVert = ccgDM_foreachMappedVert; @@ -2383,17 +2285,12 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, medge = dm->getEdgeArray(dm); mface = dm->getFaceArray(dm); - vertOrigIndex = DM_get_vert_data_layer(&ccgdm->dm, CD_ORIGINDEX); - /*edgeOrigIndex = DM_get_edge_data_layer(&ccgdm->dm, CD_ORIGINDEX);*/ - faceOrigIndex = DM_get_face_data_layer(&ccgdm->dm, CD_ORIGINDEX); - - faceFlags = DM_get_face_data_layer(&ccgdm->dm, CD_FLAGS); + faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(char)*2*totface, "faceFlags"); for(index = 0; index < totface; ++index) { CCGFace *f = ccgdm->faceMap[index].face; int numVerts = ccgSubSurf_getFaceNumVerts(f); int numFinalEdges = numVerts * (gridSideEdges + gridInternalEdges); - int mapIndex = ccgDM_getFaceMapIndex(ss, f); int origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f)); FaceVertWeight *weight = (numVerts == 4) ? qweight : tweight; int S, x, y; @@ -2414,8 +2311,6 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, weight[0][0], numVerts, vertNum); - *vertOrigIndex = ORIGINDEX_NONE; - ++vertOrigIndex; ++vertNum; for(S = 0; S < numVerts; S++) { @@ -2430,8 +2325,6 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, w[otherS] = weight[x][0][3]; DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w, numVerts, vertNum); - *vertOrigIndex = ORIGINDEX_NONE; - ++vertOrigIndex; ++vertNum; } } @@ -2449,17 +2342,11 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, w[otherS] = weight[y * gridFaces + x][0][3]; DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w, numVerts, vertNum); - *vertOrigIndex = ORIGINDEX_NONE; - ++vertOrigIndex; ++vertNum; } } } - for(i = 0; i < numFinalEdges; ++i) - *(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i, - CD_ORIGINDEX) = ORIGINDEX_NONE; - for(S = 0; S < numVerts; S++) { int prevS = (S - 1 + numVerts) % numVerts; int nextS = (S + 1) % numVerts; @@ -2483,16 +2370,13 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, &w, 1, faceNum); weight++; - *faceOrigIndex = mapIndex; - - ++faceOrigIndex; ++faceNum; } } } - faceFlags[index*4] = mface[origIndex].flag; - faceFlags[index*4 + 1] = mface[origIndex].mat_nr; + faceFlags[index*2] = mface[origIndex].flag; + faceFlags[index*2 + 1] = mface[origIndex].mat_nr; edgeNum += numFinalEdges; } @@ -2507,12 +2391,11 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, set_subsurf_uv(ss, dm, &ccgdm->dm, i); } - edgeFlags = DM_get_edge_data_layer(&ccgdm->dm, CD_FLAGS); + edgeFlags = ccgdm->edgeFlags = MEM_callocN(sizeof(short)*totedge, "edgeFlags"); for(index = 0; index < totedge; ++index) { CCGEdge *e = ccgdm->edgeMap[index].edge; int numFinalEdges = edgeSize - 1; - int mapIndex = ccgDM_getEdgeMapIndex(ss, e); int x; int vertIdx[2]; int edgeIdx = GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e)); @@ -2534,25 +2417,16 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, w[1] = (float) x / (edgeSize - 1); w[0] = 1 - w[1]; DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w, 2, vertNum); - *vertOrigIndex = ORIGINDEX_NONE; - ++vertOrigIndex; ++vertNum; } - for(i = 0; i < numFinalEdges; ++i) { - if(edgeIdx >= 0 && edgeFlags) - edgeFlags[edgeNum + i] = medge[edgeIdx].flag; - - *(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i, - CD_ORIGINDEX) = mapIndex; - } + edgeFlags[index]= medge[edgeIdx].flag; edgeNum += numFinalEdges; } for(index = 0; index < totvert; ++index) { CCGVert *v = ccgdm->vertMap[index].vert; - int mapIndex = ccgDM_getVertMapIndex(ccgdm->ss, v); int vertIdx; vertIdx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); @@ -2564,8 +2438,6 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, DM_copy_vert_data(dm, &ccgdm->dm, vertIdx, vertNum, 1); - *vertOrigIndex = mapIndex; - ++vertOrigIndex; ++vertNum; } @@ -2577,10 +2449,9 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, /***/ -struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( +struct DerivedMesh *subsurf_make_derived_from_derived( struct DerivedMesh *dm, struct SubsurfModifierData *smd, - struct MultiresSubsurf *ms, int useRenderParams, float (*vertCos)[3], int isFinalCalc, int editMode) { @@ -2588,16 +2459,16 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr; int useSubsurfUv = smd->flags & eSubsurfModifierFlag_SubsurfUv; int drawInteriorEdges = !(smd->flags & eSubsurfModifierFlag_ControlEdges); - DerivedMesh *result; + CCGDerivedMesh *result; if(editMode) { smd->emCache = _getSubSurf(smd->emCache, smd->levels, useAging, 0, useSimple); ss_sync_from_derivedmesh(smd->emCache, dm, vertCos, useSimple); - return (DerivedMesh *)getCCGDerivedMesh(smd->emCache, - drawInteriorEdges, - useSubsurfUv, dm); + result = getCCGDerivedMesh(smd->emCache, + drawInteriorEdges, + useSubsurfUv, dm); } else if(useRenderParams) { /* Do not use cache in render mode. */ CCGSubSurf *ss; @@ -2611,12 +2482,10 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); - result = ss_to_cdderivedmesh(ss, 0, drawInteriorEdges, - useSubsurfUv, dm, ms); + result = getCCGDerivedMesh(ss, + drawInteriorEdges, useSubsurfUv, dm); - ccgSubSurf_free(ss); - - return result; + result->freeSS = 1; } else { int useIncremental = (smd->flags & eSubsurfModifierFlag_Incremental); int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr; @@ -2641,13 +2510,9 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); - - return ss_to_cdderivedmesh(ss, 0, drawInteriorEdges, - useSubsurfUv, dm, ms); - - /*return (DerivedMesh *)getCCGDerivedMesh(smd->mCache, - drawInteriorEdges, - useSubsurfUv, dm);*/ + result = getCCGDerivedMesh(smd->mCache, + drawInteriorEdges, + useSubsurfUv, dm); } else { if (smd->mCache && isFinalCalc) { ccgSubSurf_free(smd->mCache); @@ -2657,28 +2522,16 @@ struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( ss = _getSubSurf(NULL, smd->levels, 0, 1, useSimple); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); - /*smd->mCache = ss; - result = (DerivedMesh *)getCCGDerivedMesh(smd->mCache, - drawInteriorEdges, - useSubsurfUv, dm);*/ - - result = ss_to_cdderivedmesh(ss, 0, drawInteriorEdges, - useSubsurfUv, dm, ms); + result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm); - ccgSubSurf_free(ss); - - return result; + if(isFinalCalc) + smd->mCache = ss; + else + result->freeSS = 1; } } -} -struct DerivedMesh *subsurf_make_derived_from_derived( - struct DerivedMesh *dm, - struct SubsurfModifierData *smd, - int useRenderParams, float (*vertCos)[3], - int isFinalCalc, int editMode) -{ - return subsurf_make_derived_from_derived_with_multires(dm, smd, NULL, useRenderParams, vertCos, isFinalCalc, editMode); + return (DerivedMesh*)result; } void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]) diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 5d94fb32438..cda15c606ed 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -99,15 +99,17 @@ void object_facesel_flush_dm(Object *ob) int totface; int i; - - if(me==NULL || dm==NULL || !CustomData_has_layer( &dm->faceData, CD_ORIGINDEX)) + if(me==NULL || dm==NULL) + return; + + index_array = dm->getFaceDataArray(dm, CD_ORIGINDEX); + + if(!index_array) return; faces = dm->getFaceArray(dm); totface = dm->getNumFaces(dm); - index_array = dm->getFaceDataArray(dm, CD_ORIGINDEX); - mf= faces; for (i= 0; iob = ob; - ss->tree = dm->getPBVH(dm); + ss->tree = dm->getPBVH(ob, dm); ss->fmap = (need_fmap)? dm->getFaceMap(dm): NULL; } -- cgit v1.2.3 From f1fa79a59554cb36ebee0a569a7b0f442fef6646 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 13:17:09 +0000 Subject: fix for error in sequencer ui from recent changes --- release/scripts/ui/space_sequencer.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 1922809e28b..8ac77a50d55 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -188,19 +188,19 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.operator("sequencer.effect_strip_add").type = 'ADD' - layout.operator("sequencer.effect_strip_add").type = 'SUBTRACT' - layout.operator("sequencer.effect_strip_add").type = 'ALPHA_OVER' - layout.operator("sequencer.effect_strip_add").type = 'ALPHA_UNDER' - layout.operator("sequencer.effect_strip_add").type = 'GAMMA_CROSS' - layout.operator("sequencer.effect_strip_add").type = 'MULTIPLY' - layout.operator("sequencer.effect_strip_add").type = 'OVER_DROP' - layout.operator("sequencer.effect_strip_add").type = 'PLUGIN' - layout.operator("sequencer.effect_strip_add").type = 'WIPE' - layout.operator("sequencer.effect_strip_add").type = 'GLOW' - layout.operator("sequencer.effect_strip_add").type = 'TRANSFORM' - layout.operator("sequencer.effect_strip_add").type = 'COLOR' - layout.operator("sequencer.effect_strip_add").type = 'SPEED' + layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD' + layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT' + layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER' + layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER' + layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS' + layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY' + layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP' + layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN' + layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE' + layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW' + layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM' + layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR' + layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED' class SEQUENCER_MT_strip(bpy.types.Menu): @@ -212,8 +212,8 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.operator("tfm.transform", text="Grab/Move").mode = TRANSLATION - layout.operator("tfm.transform", text="Grab/Extend from frame").mode = TIME_EXTEND + layout.operator("tfm.transform", text="Grab/Move").mode = 'TRANSLATION' + layout.operator("tfm.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND' # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator layout.separator() -- cgit v1.2.3 From 134935a8db7fe6137bb8a508771757beeb68b2b3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 13:40:43 +0000 Subject: Sculpt: Grid based PBVH * PBVH can now be created contain both from face grids or standard meshes. The former is much quicker to build for high res meshes. * Moved some drawing code into pbvh (mostly for the frustum test). * Moved ray intersection code into pbvh. * GPU buffers also can be built from either mesh or grids now. * Updated sculpt code to work with this. The ugly part is that there is now a macro for iterating over vertices, to handle both cases, and some duplicated code for e.g. undo. * Smooth brush does not work yet with grids. --- source/blender/blenkernel/intern/cdderivedmesh.c | 73 +-- source/blender/blenkernel/intern/subsurf_ccg.c | 13 +- source/blender/blenlib/BLI_pbvh.h | 110 +++- source/blender/blenlib/intern/pbvh.c | 487 ++++++++++++++--- source/blender/editors/sculpt_paint/sculpt.c | 643 ++++++++++++----------- source/blender/gpu/gpu_buffers.h | 10 +- source/blender/gpu/intern/gpu_buffers.c | 134 ++++- 7 files changed, 969 insertions(+), 501 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index e64d8a24934..3007564e333 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -197,7 +197,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) Mesh *me= ob->data; cddm->pbvh = BLI_pbvh_new(); - BLI_pbvh_build(cddm->pbvh, me->mface, me->mvert, + BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert, me->totface, me->totvert); } @@ -393,60 +393,6 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm) } } -static int nodes_drawn = 0; -static int is_partial = 0; -/* XXX: Just a temporary replacement for the real drawing code */ -static void draw_partial_cb(PBVHNode *node, void *data) -{ - /* XXX: Just some quick code to show leaf nodes in different colors */ - /*float col[3]; int i; - if(is_partial) { - col[0] = (rand() / (float)RAND_MAX); col[1] = col[2] = 0.6; - } - else { - srand((long long)data_v); - for(i = 0; i < 3; ++i) - col[i] = (rand() / (float)RAND_MAX) * 0.3 + 0.7; - } - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); - - glColor3f(1, 0, 0);*/ - GPU_draw_buffers(BLI_pbvh_node_get_draw_buffers(node)); - ++nodes_drawn; -} - -/* Adapted from: - http://www.gamedev.net/community/forums/topic.asp?topic_id=512123 - Returns true if the AABB is at least partially within the frustum - (ok, not a real frustum), false otherwise. -*/ -int planes_contain_AABB(PBVHNode *node, void *data) -{ - float (*planes)[4] = data; - int i, axis; - float vmin[3], vmax[3], bb_min[3], bb_max[3]; - - BLI_pbvh_node_get_BB(node, bb_min, bb_max); - - for(i = 0; i < 4; ++i) { - for(axis = 0; axis < 3; ++axis) { - if(planes[i][axis] > 0) { - vmin[axis] = bb_min[axis]; - vmax[axis] = bb_max[axis]; - } - else { - vmin[axis] = bb_max[axis]; - vmax[axis] = bb_min[axis]; - } - } - - if(dot_v3v3(planes[i], vmin) + planes[i][3] > 0) - return 0; - } - - return 1; -} - static void cdDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], int (*setMaterial)(int, void *attribs)) @@ -468,26 +414,11 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, if(cddm->pbvh) { float (*face_nors)[3] = CustomData_get_layer(&dm->faceData, CD_NORMAL); - BLI_pbvh_update(cddm->pbvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, - face_nors); - /* should be per face */ if(dm->numFaceData && mface->flag & ME_SMOOTH) glShadeModel(GL_SMOOTH); - if(partial_redraw_planes) { - BLI_pbvh_search_callback(cddm->pbvh, planes_contain_AABB, - partial_redraw_planes, draw_partial_cb, NULL); - } - else { - BLI_pbvh_search_callback(cddm->pbvh, NULL, NULL, - draw_partial_cb, NULL); - } - - is_partial = !!partial_redraw_planes; - - //printf("nodes drawn=%d\n", nodes_drawn); - nodes_drawn = 0; + BLI_pbvh_draw(cddm->pbvh, partial_redraw_planes, face_nors); glShadeModel(GL_FLAT); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index e465d17f498..30766931a0b 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -819,6 +819,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) for(x = 1; x < edgeSize - 1; x++, i++) { vd= ccgSubSurf_getEdgeData(ss, e, x); copy_v3_v3(mvert[i].co, vd->co); + /* TODO CCGSubsurf does not set these */ normal_float_to_short_v3(mvert[i].no, vd->no); } } @@ -1230,8 +1231,7 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) char *faceFlags = ccgdm->faceFlags; int step = 1; //(fast)? gridSize-1: 1; -#if 0 - if(ccgdm->pbvh && ccgdm->multires.mmd && !fast) { + if(ccgdm->pbvh && ccgdm->multires.mmd) { // && !fast) { CCGFace **faces; int totface; @@ -1252,7 +1252,6 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) return; } -#endif fi = ccgSubSurf_getFaceIterator(ss); for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { @@ -2135,12 +2134,12 @@ static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm) static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) { CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; - //int gridSize, numGrids; + int gridSize, numGrids; if(ccgdm->pbvh) return ccgdm->pbvh; - /*if(ccgdm->multires.mmd) { + if(ccgdm->multires.mmd) { ccgdm_create_grids(dm); gridSize = ccgDM_getGridSize(dm); @@ -2150,11 +2149,11 @@ static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) BLI_pbvh_build_grids(ccgdm->pbvh, ccgdm->gridData, numGrids, gridSize, (void**)ccgdm->gridFaces); } - else*/ if(ob->type == OB_MESH) { + else if(ob->type == OB_MESH) { Mesh *me= ob->data; ccgdm->pbvh = BLI_pbvh_new(); - BLI_pbvh_build(ccgdm->pbvh, me->mface, me->mvert, + BLI_pbvh_build_mesh(ccgdm->pbvh, me->mface, me->mvert, me->totface, me->totvert); } diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 360a9937498..5c5277dc091 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -27,6 +27,7 @@ struct MFace; struct MVert; +struct DMGridData; struct PBVH; struct PBVHNode; struct ListBase; @@ -44,12 +45,12 @@ typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data); /* Building */ PBVH *BLI_pbvh_new(void); -void BLI_pbvh_build(PBVH *bvh, struct MFace *faces, struct MVert *verts, +void BLI_pbvh_build_mesh(PBVH *bvh, struct MFace *faces, struct MVert *verts, int totface, int totvert); +void BLI_pbvh_build_grids(PBVH *bvh, struct DMGridData **grids, int totgrid, + int gridsize, void **gridfaces); void BLI_pbvh_free(PBVH *bvh); -void BLI_pbvh_set_source(PBVH *bvh, struct MVert *, struct MFace *mface); - /* Hierarchical Search in the BVH, two methods: * for each hit calling a callback * gather nodes in an array (easy to multithread) */ @@ -69,6 +70,14 @@ void BLI_pbvh_search_gather(PBVH *bvh, void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, float ray_start[3], float ray_normal[3], int original); +int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], + float ray_start[3], float ray_normal[3], float *dist); + +/* Drawing */ + +void BLI_pbvh_node_draw(PBVHNode *node, void *data); +int BLI_pbvh_node_planes_contain_AABB(PBVHNode *node, void *data); +void BLI_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3]); /* Node Access */ @@ -84,11 +93,11 @@ typedef enum { void BLI_pbvh_node_mark_update(PBVHNode *node); -void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, - int *totvert, int *allverts); -void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, - int **face_vert_indices, int *totface); -void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node); +void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, + int **grid_indices, int *totgrid, int *maxgrid, int *gridsize); +void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, + int *uniquevert, int *totvert); + void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); @@ -96,6 +105,91 @@ void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]); void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]); +void BLI_pbvh_get_grid_updates(PBVH *bvh, void ***gridfaces, int *totface); + +/* Vertex Iterator */ + +/* this iterator has quite a lot of code, but it's designed to: + - allow the compiler to eliminate dead code and variables + - spend most of the time in the relatively simple inner loop */ + +#define PBVH_ITER_ALL 0 +#define PBVH_ITER_UNIQUE 1 + +typedef struct PBVHVertexIter { + /* iteration */ + int g; + int width; + int height; + int skip; + int gx; + int gy; + int i; + + /* grid */ + struct DMGridData **grids; + struct DMGridData *grid; + int *grid_indices; + int totgrid; + int gridsize; + + /* mesh */ + struct MVert *mverts; + int totvert; + int *vert_indices; + + /* result: these are all computed in the macro, but we assume + that compiler optimizations will skip the ones we don't use */ + struct MVert *mvert; + float *co; + short *no; + float *fno; +} PBVHVertexIter; + +void BLI_pbvh_node_verts_iter_init(PBVH *bvh, PBVHNode *node, PBVHVertexIter *vi, int mode); + +#define BLI_pbvh_vertex_iter_begin(bvh, node, vi, mode) \ + /* XXX breaks aliasing! */ \ + BLI_pbvh_node_verts_iter_init(bvh, node, &vi, mode); \ + \ + for(vi.i=0, vi.g=0; vi.ggrid.offset; \ + vi.skip= subm->grid.skip; \ + vi.grid -= skip; \ + }*/ \ + } \ + else { \ + vi.width= vi.totvert; \ + vi.height= 1; \ + } \ + \ + for(vi.gy=0; vi.gyco; \ + vi.fno= vi.grid->no; \ + vi.grid++; \ + } \ + else { \ + vi.mvert= &vi.mverts[vi.vert_indices[vi.gx]]; \ + vi.co= vi.mvert->co; \ + vi.no= vi.mvert->no; \ + } \ + +#define BLI_pbvh_vertex_iter_end \ + } \ + } \ + } + #endif /* BLI_PBVH_H */ diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index c2f0705d8c2..023db54eb1c 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -32,6 +32,7 @@ #include "BLI_ghash.h" #include "BLI_pbvh.h" +#include "BKE_DerivedMesh.h" #include "BKE_mesh.h" #include "BKE_utildefines.h" @@ -87,12 +88,12 @@ struct PBVHNode { /* For internal nodes */ int children_offset; - /* Pointer into bvh face_indices */ - int *face_indices; + /* Pointer into bvh prim_indices */ + int *prim_indices; int *face_vert_indices; - unsigned short totface; - unsigned short uniq_verts, face_verts; + unsigned int totprim; + unsigned int uniq_verts, face_verts; char flag; }; @@ -101,14 +102,22 @@ struct PBVH { PBVHNode *nodes; int node_mem_count, totnode; - int *face_indices; - int totface; + int *prim_indices; + int totprim; int totvert; + int leaf_limit; + /* Mesh data */ MVert *verts; MFace *faces; + /* Grid Data */ + DMGridData **grids; + void **gridfaces; + int totgrid; + int gridsize; + /* Only used during BVH build and update, don't need to remain valid after */ BLI_bitmap vert_bitmap; @@ -201,12 +210,12 @@ static void update_node_vb(PBVH *bvh, PBVHNode *node) BB_reset(&vb); if(node->flag & PBVH_Leaf) { - int i, totvert= node->uniq_verts + node->face_verts; + PBVHVertexIter vd; - for(i = 0; i < totvert; ++i) { - float *co= bvh->verts[node->vert_indices[i]].co; - BB_expand(&vb, co); + BLI_pbvh_vertex_iter_begin(bvh, node, vd, PBVH_ITER_ALL) { + BB_expand(&vb, vd.co); } + BLI_pbvh_vertex_iter_end; } else { BB_expand_with_bb(&vb, @@ -220,28 +229,28 @@ static void update_node_vb(PBVH *bvh, PBVHNode *node) /* Adapted from BLI_kdopbvh.c */ /* Returns the index of the first element on the right of the partition */ -static int partition_indices(int *face_indices, int lo, int hi, int axis, +static int partition_indices(int *prim_indices, int lo, int hi, int axis, float mid, BBC *prim_bbc) { int i=lo, j=hi; for(;;) { - for(; prim_bbc[face_indices[i]].bcentroid[axis] < mid; i++); - for(; mid < prim_bbc[face_indices[j]].bcentroid[axis]; j--); + for(; prim_bbc[prim_indices[i]].bcentroid[axis] < mid; i++); + for(; mid < prim_bbc[prim_indices[j]].bcentroid[axis]; j--); if(!(i < j)) return i; - SWAP(int, face_indices[i], face_indices[j]); + SWAP(int, prim_indices[i], prim_indices[j]); i++; } } -void check_partitioning(int *face_indices, int lo, int hi, int axis, +void check_partitioning(int *prim_indices, int lo, int hi, int axis, float mid, BBC *prim_bbc, int index_of_2nd_partition) { int i; for(i = lo; i <= hi; ++i) { - const float c = prim_bbc[face_indices[i]].bcentroid[axis]; + const float c = prim_bbc[prim_indices[i]].bcentroid[axis]; if((i < index_of_2nd_partition && c > mid) || (i > index_of_2nd_partition && c < mid)) { @@ -269,8 +278,8 @@ static void grow_nodes(PBVH *bvh, int totnode) /* Add a vertex to the map, with a positive value for unique vertices and a negative value for additional vertices */ static int map_insert_vert(PBVH *bvh, GHash *map, - unsigned short *face_verts, - unsigned short *uniq_verts, int vertex) + unsigned int *face_verts, + unsigned int *uniq_verts, int vertex) { void *value, *key = SET_INT_IN_POINTER(vertex); @@ -293,7 +302,7 @@ static int map_insert_vert(PBVH *bvh, GHash *map, } /* Find vertices used by the faces in this node and update the draw buffers */ -static void build_leaf_node(PBVH *bvh, PBVHNode *node) +static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) { GHashIterator *iter; GHash *map; @@ -302,13 +311,13 @@ static void build_leaf_node(PBVH *bvh, PBVHNode *node) map = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp); node->uniq_verts = node->face_verts = 0; - totface= node->totface; + totface= node->totprim; node->face_vert_indices = MEM_callocN(sizeof(int) * 4*totface, "bvh node face vert indices"); for(i = 0; i < totface; ++i) { - MFace *f = bvh->faces + node->face_indices[i]; + MFace *f = bvh->faces + node->prim_indices[i]; int sides = f->v4 ? 4 : 3; for(j = 0; j < sides; ++j) { @@ -341,15 +350,22 @@ static void build_leaf_node(PBVH *bvh, PBVHNode *node) node->face_vert_indices[i]= -node->face_vert_indices[i] + node->uniq_verts - 1; node->draw_buffers = - GPU_build_buffers(map, bvh->verts, bvh->faces, - node->face_indices, - node->totface, node->vert_indices, + GPU_build_mesh_buffers(map, bvh->verts, bvh->faces, + node->prim_indices, + node->totprim, node->vert_indices, node->uniq_verts, node->uniq_verts + node->face_verts); BLI_ghash_free(map, NULL, NULL); } +static void build_grids_leaf_node(PBVH *bvh, PBVHNode *node) +{ + node->draw_buffers = + GPU_build_grid_buffers(bvh->grids, node->prim_indices, + node->totprim, bvh->gridsize); +} + /* Recursively build a node in the tree vb is the voxel box around all of the primitives contained in @@ -368,21 +384,25 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, BB cb_backing; /* Decide whether this is a leaf or not */ - if(count <= LEAF_LIMIT) { + // XXX adapt leaf limit for grids + if(count <= bvh->leaf_limit) { bvh->nodes[node_index].flag |= PBVH_Leaf; - bvh->nodes[node_index].face_indices = bvh->face_indices + offset; - bvh->nodes[node_index].totface = count; + bvh->nodes[node_index].prim_indices = bvh->prim_indices + offset; + bvh->nodes[node_index].totprim = count; /* Still need vb for searches */ BB_reset(&bvh->nodes[node_index].vb); for(i = offset + count - 1; i >= offset; --i) { BB_expand_with_bb(&bvh->nodes[node_index].vb, (BB*)(prim_bbc + - bvh->face_indices[i])); + bvh->prim_indices[i])); } - build_leaf_node(bvh, bvh->nodes + node_index); + if(bvh->faces) + build_mesh_leaf_node(bvh, bvh->nodes + node_index); + else + build_grids_leaf_node(bvh, bvh->nodes + node_index); bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb; /* Done with this subtree */ @@ -397,7 +417,7 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, cb = &cb_backing; BB_reset(cb); for(i = offset + count - 1; i >= offset; --i) - BB_expand(cb, prim_bbc[bvh->face_indices[i]].bcentroid); + BB_expand(cb, prim_bbc[bvh->prim_indices[i]].bcentroid); } } @@ -405,16 +425,16 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, for(i = offset + count - 1; i >= offset; --i) { BB_expand_with_bb(&bvh->nodes[node_index].vb, - (BB*)(prim_bbc + bvh->face_indices[i])); + (BB*)(prim_bbc + bvh->prim_indices[i])); } bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb; - end = partition_indices(bvh->face_indices, offset, offset + count - 1, + end = partition_indices(bvh->prim_indices, offset, offset + count - 1, axis, (cb->bmax[axis] + cb->bmin[axis]) * 0.5f, prim_bbc); - check_partitioning(bvh->face_indices, offset, offset + count - 1, + check_partitioning(bvh->prim_indices, offset, offset + count - 1, axis, (cb->bmax[axis] + cb->bmin[axis]) * 0.5f, prim_bbc, end); @@ -425,21 +445,18 @@ void build_sub(PBVH *bvh, int node_index, BB *cb, BBC *prim_bbc, prim_bbc, end, offset + count - end); } -/* Do a full rebuild */ -void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totvert) +static void pbvh_build(PBVH *bvh, BB *cb, BBC *prim_bbc, int totprim) { - BBC *prim_bbc = NULL; - BB cb; - int i, j; + int i; - if(totface != bvh->totface) { - bvh->totface = totface; + if(totprim != bvh->totprim) { + bvh->totprim = totprim; if(bvh->nodes) MEM_freeN(bvh->nodes); - if(bvh->face_indices) MEM_freeN(bvh->face_indices); - bvh->face_indices = MEM_callocN(sizeof(int) * totface, - "bvh face indices"); - for(i = 0; i < totface; ++i) - bvh->face_indices[i] = i; + if(bvh->prim_indices) MEM_freeN(bvh->prim_indices); + bvh->prim_indices = MEM_callocN(sizeof(int) * totprim, + "bvh prim indices"); + for(i = 0; i < totprim; ++i) + bvh->prim_indices[i] = i; bvh->totnode = 0; if(bvh->node_mem_count < 100) { bvh->node_mem_count = 100; @@ -449,10 +466,22 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv } } + bvh->totnode = 1; + build_sub(bvh, 0, cb, prim_bbc, 0, totprim); +} + +/* Do a full rebuild with on Mesh data structure */ +void BLI_pbvh_build_mesh(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totvert) +{ + BBC *prim_bbc = NULL; + BB cb; + int i, j; + bvh->faces = faces; bvh->verts = verts; bvh->vert_bitmap = BLI_bitmap_new(totvert); - bvh->totvert= totvert; + bvh->totvert = totvert; + bvh->leaf_limit = LEAF_LIMIT; BB_reset(&cb); @@ -474,13 +503,50 @@ void BLI_pbvh_build(PBVH *bvh, MFace *faces, MVert *verts, int totface, int totv BB_expand(&cb, bbc->bcentroid); } - bvh->totnode = 1; - build_sub(bvh, 0, &cb, prim_bbc, 0, totface); + pbvh_build(bvh, &cb, prim_bbc, totface); MEM_freeN(prim_bbc); MEM_freeN(bvh->vert_bitmap); } +/* Do a full rebuild with on Grids data structure */ +void BLI_pbvh_build_grids(PBVH *bvh, DMGridData **grids, int totgrid, + int gridsize, void **gridfaces) +{ + BBC *prim_bbc = NULL; + BB cb; + int i, j; + + bvh->grids= grids; + bvh->gridfaces= gridfaces; + bvh->totgrid= totgrid; + bvh->gridsize= gridsize; + bvh->leaf_limit = MAX2(LEAF_LIMIT/((gridsize-1)*(gridsize-1)), 1); + + BB_reset(&cb); + + /* For each grid, store the AABB and the AABB centroid */ + prim_bbc = MEM_mallocN(sizeof(BBC) * totgrid, "prim_bbc"); + + for(i = 0; i < totgrid; ++i) { + DMGridData *grid= grids[i]; + BBC *bbc = prim_bbc + i; + + BB_reset((BB*)bbc); + + for(j = 0; j < gridsize*gridsize; ++j) + BB_expand((BB*)bbc, grid[j].co); + + BBC_update_centroid(bbc); + + BB_expand(&cb, bbc->bcentroid); + } + + pbvh_build(bvh, &cb, prim_bbc, totgrid); + + MEM_freeN(prim_bbc); +} + PBVH *BLI_pbvh_new(void) { PBVH *bvh = MEM_callocN(sizeof(PBVH), "pbvh"); @@ -490,34 +556,27 @@ PBVH *BLI_pbvh_new(void) void BLI_pbvh_free(PBVH *bvh) { + PBVHNode *node; int i; for(i = 0; i < bvh->totnode; ++i) { - if(bvh->nodes[i].flag & PBVH_Leaf) { - GPU_free_buffers(bvh->nodes[i].draw_buffers); - MEM_freeN(bvh->nodes[i].vert_indices); - MEM_freeN(bvh->nodes[i].face_vert_indices); + node= &bvh->nodes[i]; + + if(node->flag & PBVH_Leaf) { + if(node->draw_buffers) + GPU_free_buffers(node->draw_buffers); + if(node->vert_indices) + MEM_freeN(node->vert_indices); + if(node->face_vert_indices) + MEM_freeN(node->face_vert_indices); } } MEM_freeN(bvh->nodes); - MEM_freeN(bvh->face_indices); + MEM_freeN(bvh->prim_indices); MEM_freeN(bvh); } -void BLI_pbvh_set_source(PBVH *bvh, MVert *mvert, MFace *mface) -{ - bvh->verts = mvert; - bvh->faces = mface; -} - -static void do_hit_callback(PBVH *bvh, PBVHNode *node, - BLI_pbvh_HitCallback cb, void *data) -{ - if(cb) - cb(node, data); -} - static void pbvh_iter_begin(PBVHIter *iter, PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data) { iter->bvh= bvh; @@ -646,7 +705,7 @@ void BLI_pbvh_search_callback(PBVH *bvh, while((node=pbvh_iter_next(&iter))) if(node->flag & PBVH_Leaf) - do_hit_callback(bvh, node, hcb, hit_data); + hcb(node, hit_data); pbvh_iter_end(&iter); } @@ -667,6 +726,9 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, float (*vnor)[3]; int n; + if(bvh->grids) + return; + /* could be per node to save some memory, but also means we have to store for each vertex which node it is in */ vnor= MEM_callocN(sizeof(float)*3*bvh->totvert, "bvh temp vnors"); @@ -688,8 +750,8 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, if((node->flag & PBVH_UpdateNormals)) { int i, j, totface, *faces; - faces= node->face_indices; - totface= node->totface; + faces= node->prim_indices; + totface= node->totprim; for(i = 0; i < totface; ++i) { MFace *f= bvh->faces + faces[i]; @@ -792,11 +854,20 @@ static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode) node= nodes[n]; if(node->flag & PBVH_UpdateDrawBuffers) { - GPU_update_buffers(node->draw_buffers, - bvh->verts, - node->vert_indices, - node->uniq_verts + - node->face_verts); + if(bvh->grids) { + GPU_update_grid_buffers(node->draw_buffers, + bvh->grids, + node->prim_indices, + node->totprim, + bvh->gridsize); + } + else { + GPU_update_mesh_buffers(node->draw_buffers, + bvh->verts, + node->vert_indices, + node->uniq_verts + + node->face_verts); + } node->flag &= ~PBVH_UpdateDrawBuffers; } @@ -877,6 +948,53 @@ void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]) copy_v3_v3(bb_max, bb.bmax); } +void BLI_pbvh_get_grid_updates(PBVH *bvh, void ***gridfaces, int *totface) +{ + PBVHIter iter; + PBVHNode *node; + GHashIterator *hiter; + GHash *map; + void *face, **faces; + int i, tot; + + map = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + + pbvh_iter_begin(&iter, bvh, NULL, NULL); + + while((node=pbvh_iter_next(&iter))) { + if(node->flag & PBVH_UpdateNormals) { + for(i = 0; i < node->totprim; ++i) { + face= bvh->gridfaces[node->prim_indices[i]]; + BLI_ghash_insert(map, face, face); + } + + node->flag &= ~PBVH_UpdateNormals; + } + } + + pbvh_iter_end(&iter); + + tot= BLI_ghash_size(map); + if(tot == 0) { + *totface= 0; + *gridfaces= NULL; + BLI_ghash_free(map, NULL, NULL); + return; + } + + faces= MEM_callocN(sizeof(void*)*tot, "PBVH Grid Faces"); + + for(hiter = BLI_ghashIterator_new(map), i = 0; + !BLI_ghashIterator_isDone(hiter); + BLI_ghashIterator_step(hiter), ++i) + faces[i]= BLI_ghashIterator_getKey(hiter); + + BLI_ghash_free(map, NULL, NULL); + + *totface= tot; + *gridfaces= faces; +} + /***************************** Node Access ***********************************/ void BLI_pbvh_node_mark_update(PBVHNode *node) @@ -891,16 +1009,32 @@ void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert, i if(allvert) *allvert= node->uniq_verts + node->face_verts; } -void BLI_pbvh_node_get_faces(PBVHNode *node, int **face_indices, int **face_vert_indices, int *totface) +void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert) { - if(face_indices) *face_indices= node->face_indices; - if(face_vert_indices) *face_vert_indices= node->face_vert_indices; - if(totface) *totface= node->totface; + if(bvh->grids) { + *totvert= node->totprim*bvh->gridsize*bvh->gridsize; + *uniquevert= *totvert; + } + else { + *uniquevert= node->uniq_verts; + *totvert= node->uniq_verts + node->face_verts; + } } -void *BLI_pbvh_node_get_draw_buffers(PBVHNode *node) +void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize) { - return node->draw_buffers; + if(bvh->grids) { + if(grid_indices) *grid_indices= node->prim_indices; + if(totgrid) *totgrid= node->totprim; + if(maxgrid) *maxgrid= bvh->totgrid; + if(gridsize) *gridsize= bvh->gridsize; + } + else { + *grid_indices= NULL; + *totgrid= 0; + *maxgrid= 0; + *gridsize= 0; + } } void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]) @@ -936,7 +1070,7 @@ static int ray_aabb_intersect(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); - + copy_v3_v3(bbox[0], bb_min); copy_v3_v3(bbox[1], bb_max); @@ -988,3 +1122,194 @@ void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, BLI_pbvh_search_callback(bvh, ray_aabb_intersect, &rcd, cb, data); } +/* XXX: Code largely copied from bvhutils.c, could be unified */ +/* Returns 1 if a better intersection has been found */ +static int ray_face_intersection(float ray_start[3], float ray_normal[3], + float *t0, float *t1, float *t2, float *t3, + float *fdist) +{ + int hit = 0; + + do + { + float dist = FLT_MAX; + + if(!isect_ray_tri_v3(ray_start, ray_normal, t0, t1, t2, + &dist, NULL)) + dist = FLT_MAX; + + if(dist >= 0 && dist < *fdist) { + hit = 1; + *fdist = dist; + } + + t1 = t2; + t2 = t3; + t3 = NULL; + + } while(t2); + + return hit; +} + +int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], + float ray_start[3], float ray_normal[3], float *dist) +{ + int hit= 0; + + if(bvh->faces) { + MVert *vert = bvh->verts; + int *faces= node->prim_indices; + int *face_verts= node->face_vert_indices; + int totface= node->totprim; + int i; + + for(i = 0; i < totface; ++i) { + MFace *f = bvh->faces + faces[i]; + + if(origco) { + /* intersect with backuped original coordinates */ + hit |= ray_face_intersection(ray_start, ray_normal, + origco[face_verts[i*4+0]], + origco[face_verts[i*4+1]], + origco[face_verts[i*4+2]], + f->v4? origco[face_verts[i*4+3]]: NULL, + dist); + } + else { + /* intersect with current coordinates */ + hit |= ray_face_intersection(ray_start, ray_normal, + vert[f->v1].co, + vert[f->v2].co, + vert[f->v3].co, + f->v4 ? vert[f->v4].co : NULL, + dist); + } + } + } + else { + int totgrid= node->totprim; + int gridsize= bvh->gridsize; + int i, x, y; + + for(i = 0; i < totgrid; ++i) { + DMGridData *grid= bvh->grids[node->prim_indices[i]]; + + for(y = 0; y < gridsize-1; ++y) { + for(x = 0; x < gridsize-1; ++x) { + if(origco) { + hit |= ray_face_intersection(ray_start, ray_normal, + origco[y*gridsize + x], + origco[y*gridsize + x+1], + origco[(y+1)*gridsize + x+1], + origco[(y+1)*gridsize + x], + dist); + } + else { + hit |= ray_face_intersection(ray_start, ray_normal, + grid[y*gridsize + x].co, + grid[y*gridsize + x+1].co, + grid[(y+1)*gridsize + x+1].co, + grid[(y+1)*gridsize + x].co, + dist); + } + } + } + + if(origco) + origco += gridsize*gridsize; + } + } + + return hit; +} + +#if 0 +static int nodes_drawn = 0; +static int is_partial = 0; +/* XXX: Just a temporary replacement for the real drawing code */ +static void draw_partial_cb(PBVHNode *node, void *data) + + /* XXX: Just some quick code to show leaf nodes in different colors */ + /*float col[3]; int i; + if(is_partial) { + col[0] = (rand() / (float)RAND_MAX); col[1] = col[2] = 0.6; + } + else { + srand((long long)data_v); + for(i = 0; i < 3; ++i) + col[i] = (rand() / (float)RAND_MAX) * 0.3 + 0.7; + } + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); + + glColor3f(1, 0, 0);*/ + GPU_draw_buffers(BLI_pbvh_node_get_draw_buffers(node)); + ++nodes_drawn; +} +#endif + +void BLI_pbvh_node_draw(PBVHNode *node, void *data) +{ + GPU_draw_buffers(node->draw_buffers); +} + +/* Adapted from: + http://www.gamedev.net/community/forums/topic.asp?topic_id=512123 + Returns true if the AABB is at least partially within the frustum + (ok, not a real frustum), false otherwise. +*/ +int BLI_pbvh_node_planes_contain_AABB(PBVHNode *node, void *data) +{ + float (*planes)[4] = data; + int i, axis; + float vmin[3], vmax[3], bb_min[3], bb_max[3]; + + BLI_pbvh_node_get_BB(node, bb_min, bb_max); + + for(i = 0; i < 4; ++i) { + for(axis = 0; axis < 3; ++axis) { + if(planes[i][axis] > 0) { + vmin[axis] = bb_min[axis]; + vmax[axis] = bb_max[axis]; + } + else { + vmin[axis] = bb_max[axis]; + vmax[axis] = bb_min[axis]; + } + } + + if(dot_v3v3(planes[i], vmin) + planes[i][3] > 0) + return 0; + } + + return 1; +} + +void BLI_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3]) +{ + BLI_pbvh_update(bvh, PBVH_UpdateNormals|PBVH_UpdateDrawBuffers, face_nors); + + if(planes) { + BLI_pbvh_search_callback(bvh, BLI_pbvh_node_planes_contain_AABB, + planes, BLI_pbvh_node_draw, NULL); + } + else { + BLI_pbvh_search_callback(bvh, NULL, NULL, BLI_pbvh_node_draw, NULL); + } +} + +void BLI_pbvh_node_verts_iter_init(PBVH *bvh, PBVHNode *node, PBVHVertexIter *vi, int mode) +{ + memset(vi, 0, sizeof(PBVHVertexIter)); + vi->grids= bvh->grids; + vi->grid_indices= node->prim_indices; + vi->totgrid= (bvh->grids)? node->totprim: 1; + vi->gridsize= bvh->gridsize; + + vi->totvert= node->uniq_verts; + if(mode == PBVH_ITER_ALL) + vi->totvert += node->face_verts; + vi->vert_indices= node->vert_indices; + vi->mverts= bvh->verts; +} + diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 873bbc2baa6..c9e351458ad 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -267,13 +267,21 @@ typedef struct SculptUndoNode { struct SculptUndoNode *next, *prev; char idname[MAX_ID_NAME]; /* name instead of pointer*/ - int maxvert; /* to verify if totvert it still the same */ void *node; /* only during push, not valid afterwards! */ float (*co)[3]; short (*no)[3]; - int *index; 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 */ } SculptUndoNode; static void update_cb(PBVHNode *node, void *data) @@ -284,33 +292,54 @@ static void update_cb(PBVHNode *node, void *data) static void sculpt_undo_restore(bContext *C, ListBase *lb) { Object *ob = CTX_data_active_object(C); + DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, 0); SculptSession *ss = ob->sculpt; SculptUndoNode *unode; MVert *mvert; MultiresModifierData *mmd; int *index; - int i, totvert, update= 0; + int i, j, update= 0; sculpt_update_mesh_elements(C, 0); for(unode=lb->first; unode; unode=unode->next) { if(!(strcmp(unode->idname, ob->id.name)==0)) continue; - if(ss->totvert != unode->maxvert) - continue; - index= unode->index; - totvert= unode->totvert; - mvert= ss->mvert; + if(unode->maxvert) { + /* regular mesh restore */ + if(ss->totvert != unode->maxvert) + continue; - for(i=0; iindex; + mvert= ss->mvert; - copy_v3_v3(tmp, mvert[index[i]].co); - copy_v3_v3(mvert[index[i]].co, unode->co[i]); - copy_v3_v3(unode->co[i], tmp); - - mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + for(i=0; itotvert; 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(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; jtotgrid; j++) { + grid= grids[unode->grids[j]]; + + for(i=0; itree, NULL, NULL, update_cb, NULL); BLI_pbvh_update(ss->tree, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); - /* not really convinced this is correct .. */ - if((mmd=sculpt_multires_active(ob))) { - mmd->undo_verts = ss->mvert; - mmd->undo_verts_tot = ss->totvert; - mmd->undo_signal = !!mmd->undo_verts; - - multires_force_update(ob); - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - } + if((mmd=sculpt_multires_active(ob))) + multires_mark_as_modified(ob); } } @@ -346,6 +368,8 @@ static void sculpt_undo_free(ListBase *lb) MEM_freeN(unode->no); if(unode->index) MEM_freeN(unode->index); + if(unode->grids) + MEM_freeN(unode->grids); } } @@ -369,9 +393,7 @@ 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 i, totvert, allvert, *verts; - - BLI_pbvh_node_get_verts(node, &verts, &totvert, &allvert); + int totvert, allvert, totgrid, maxgrid, gridsize, *grids; /* list is manipulated by multiple threads, so we lock */ BLI_lock_thread(LOCK_CUSTOM1); @@ -385,23 +407,46 @@ static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) strcpy(unode->idname, ob->id.name); unode->node= node; + BLI_pbvh_node_num_verts(ss->tree, node, &totvert, &allvert); + BLI_pbvh_node_get_grids(ss->tree, node, &grids, &totgrid, &maxgrid, &gridsize); + unode->totvert= totvert; - unode->maxvert= ss->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"); - unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); 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 */ - memcpy(unode->index, verts, sizeof(int)*allvert); - for(i=0; ico[i], ss->mvert[verts[i]].co); - VECCOPY(unode->no[i], ss->mvert[verts[i]].no); + { + PBVHVertexIter vd; + + 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; } + + if(unode->grids) + memcpy(unode->grids, grids, sizeof(int)*totgrid); return unode; } @@ -428,57 +473,41 @@ static void sculpt_undo_push_end(SculptSession *ss) undo_paint_push_end(UNDO_PAINT_MESH); } -/************************ Looping Over Verts in a BVH Node *******************/ +void ED_sculpt_force_update(bContext *C) +{ + Object *ob= CTX_data_active_object(C); -typedef struct SculptVertexData { + if(ob && (ob->mode & OB_MODE_SCULPT)) + multires_force_update(ob); +} + +/************************ Brush Testing *******************/ + +typedef struct SculptBrushTest { float radius_squared; float location[3]; - MVert *mvert; - int *verts; - float (*origvert)[3]; - int i, index, totvert; - - float *co; - float *origco; - short *no; float dist; -} SculptVertexData; +} SculptBrushTest; -static void sculpt_node_verts_init(Sculpt *sd, SculptSession *ss, - PBVHNode *node, float (*origvert)[3], SculptVertexData *vd) +static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test) { - vd->radius_squared= ss->cache->radius*ss->cache->radius; - copy_v3_v3(vd->location, ss->cache->location); - - vd->mvert= ss->mvert; - vd->origvert= origvert; - vd->i= -1; - BLI_pbvh_node_get_verts(node, &vd->verts, &vd->totvert, NULL); + test->radius_squared= ss->cache->radius*ss->cache->radius; + copy_v3_v3(test->location, ss->cache->location); } -static int sculpt_node_verts_next(SculptVertexData *vd) +static int sculpt_brush_test(SculptBrushTest *test, float co[3]) { - vd->i++; - - while(vd->i < vd->totvert) { - float delta[3], dsq; + float distsq, delta[3]; - vd->index= vd->verts[vd->i]; - vd->co= vd->mvert[vd->index].co; - vd->origco= (vd->origvert)? vd->origvert[vd->i]: vd->co; - vd->no= vd->mvert[vd->index].no; - sub_v3_v3v3(delta, vd->origco, vd->location); - dsq = INPR(delta, delta); + sub_v3_v3v3(delta, co, test->location); + distsq = INPR(delta, delta); - if(dsq < vd->radius_squared) { - vd->dist = sqrt(dsq); - return 1; - } - - vd->i++; + if(distsq < test->radius_squared) { + test->dist = sqrt(distsq); + return 1; } - + return 0; } @@ -667,7 +696,6 @@ static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) float t[3], bb_min[3], bb_max[3]; int i; - //BLI_pbvh_node_get_original_BB(node, bb_min, bb_max); BLI_pbvh_node_get_BB(node, bb_min, bb_max); for(i = 0; i < 3; ++i) { @@ -700,12 +728,8 @@ static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float va } } -static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], const short no[3]) +static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], float fno[3]) { - float fno[3] = {no[0], no[1], no[2]}; - - normalize_v3(fno); - if((dot_v3v3(view_vec, fno)) > 0) { add_v3_v3v3(out, out, fno); } else { @@ -716,6 +740,7 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], cons /* 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) { + 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}; @@ -728,23 +753,39 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] /* threaded loop over nodes */ #pragma omp parallel for private(n) schedule(static) for(n=0; ncache->original) { - while(sculpt_node_verts_next(&vd)) - add_norm_if(out_dir, nout, nout_flip, unode->no[vd.i]); + 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])) { + normal_short_to_float_v3(fno, unode->no[vd.i]); + add_norm_if(out_dir, nout, nout_flip, fno); + } + } + BLI_pbvh_vertex_iter_end; } else { - while(sculpt_node_verts_next(&vd)) - add_norm_if(out_dir, nout, nout_flip, ss->mvert[vd.index].no); + BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + if(vd.no) { + normal_short_to_float_v3(fno, vd.no); + add_norm_if(out_dir, nout, nout_flip, fno); + } + else + add_norm_if(out_dir, nout, nout_flip, vd.fno); + } + } + BLI_pbvh_vertex_iter_end; } { @@ -787,21 +828,25 @@ static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t /* threaded loop over nodes */ #pragma omp parallel for private(n) schedule(static) for(n=0; ntree, 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); - ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + sculpt_clip(sd, ss, vd.co, val); + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -860,23 +905,27 @@ static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int for(iteration = 0; iteration < 2; ++iteration) { #pragma omp parallel for private(n) schedule(static) for(n=0; nmvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + 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 fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + float avg[3], val[3]; + + 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; + } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -891,20 +940,24 @@ static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int #pragma omp parallel for private(n) schedule(static) for(n=0; nmvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + 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 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; + } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -921,26 +974,29 @@ static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int t #pragma omp parallel for private(n) schedule(static) for(n=0; nco; - sculpt_node_verts_init(sd, ss, nodes[n], origco, &vd); - - while(sculpt_node_verts_next(&vd)) { - const float fade = tex_strength(ss, brush, origco[vd.i], vd.dist)*bstrength; - const float add[3]= {vd.co[0]+fade*grab_delta[0], - vd.co[1]+fade*grab_delta[1], - vd.co[2]+fade*grab_delta[2]}; - - sculpt_clip(sd, ss, vd.co, add); - ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + origco= sculpt_undo_push_node(ss, 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, 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]}; + + sculpt_clip(sd, ss, vd.co, add); + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } + } static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) @@ -962,40 +1018,43 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int #pragma omp parallel for private(n) schedule(static) for(n=0; nco; - sculpt_node_verts_init(sd, ss, nodes[n], NULL, &vd); + origco= sculpt_undo_push_node(ss, 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 fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + int index= vd.vert_indices[vd.i]; + float *disp= &ss->layer_disps[index]; + 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; + + if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { + /* 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]; + } + 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]; + } - while(sculpt_node_verts_next(&vd)) { - const float fade = tex_strength(ss, brush, vd.co, vd.dist)*bstrength; - float *disp= &ss->layer_disps[vd.index]; - 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; - - if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { - /* persistent base */ - val[0] = ss->layer_co[vd.index][0] + (*disp)*offset[0]; - val[1] = ss->layer_co[vd.index][1] + (*disp)*offset[1]; - val[2] = ss->layer_co[vd.index][2] + (*disp)*offset[2]; - } - 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]; + sculpt_clip(sd, ss, vd.co, val); + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } - - sculpt_clip(sd, ss, vd.co, val); - ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -1009,27 +1068,31 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in #pragma omp parallel for private(n) schedule(static) for(n=0; ncache->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); - ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + BLI_pbvh_vertex_iter_begin(ss->tree, 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]; + + add[0]= vd.no[0]/32767.0f; + add[1]= vd.no[1]/32767.0f; + add[2]= vd.no[2]/32767.0f; + 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; + } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -1038,36 +1101,42 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float co[3]) { float outer_dist[FLATTEN_SAMPLE_SIZE]; - int outer_index[FLATTEN_SAMPLE_SIZE]; + float outer_co[FLATTEN_SAMPLE_SIZE][3]; int i, n; for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { - outer_index[i] = 0; + zero_v3(outer_co[i]); outer_dist[i]= -1.0f; } #pragma omp parallel for private(n) schedule(static) for(n=0; n outer_dist[i]) { - outer_index[i] = vd.index; - outer_dist[i] = vd.dist; - break; + 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(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { + if(test.dist > outer_dist[i]) { + copy_v3_v3(outer_co[i], vd.co); + outer_dist[i] = test.dist; + break; + } } } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } co[0] = co[1] = co[2] = 0.0f; for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) - add_v3_v3v3(co, co, ss->mvert[outer_index[i]].co); + if(outer_dist[i] >= 0.0f) + add_v3_v3v3(co, co, outer_co[i]); mul_v3_fl(co, 1.0f / FLATTEN_SAMPLE_SIZE); } @@ -1122,41 +1191,45 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **node #pragma omp parallel for private(n) schedule(static) for(n=0; n FLT_EPSILON) - mul_v3_fl(val, fade / bstr); + 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; + + /* Find the intersection between squash-plane and vertex (along the area normal) */ + point_plane_project(intr, vd.co, area_normal, cntr); + + 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; + } 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; - } - else - mul_v3_fl(val, fabs(fade)); + mul_v3_fl(val, fabs(fade)); - add_v3_v3v3(val, val, vd.co); + add_v3_v3v3(val, val, vd.co); - sculpt_clip(sd, ss, vd.co, val); - ss->mvert[vd.index].flag |= ME_VERT_PBVH_UPDATE; + sculpt_clip(sd, ss, vd.co, val); + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } } } + BLI_pbvh_vertex_iter_end; BLI_pbvh_node_mark_update(nodes[n]); } @@ -1312,7 +1385,7 @@ char sculpt_modifiers_active(Object *ob) ModifierData *md; for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(md->mode & eModifierMode_Realtime && md->type != eModifierType_Multires) + if(modifier_isEnabled(md, eModifierMode_Realtime) && md->type != eModifierType_Multires) return 1; } @@ -1346,9 +1419,7 @@ struct MultiresModifierData *sculpt_multires_active(Object *ob) void sculpt_update_mesh_elements(bContext *C, int need_fmap) { Object *ob = CTX_data_active_object(C); - DerivedMesh *dm = - mesh_get_derived_final(CTX_data_scene(C), ob, - CTX_wm_view3d(C)->customdata_mask); + DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, 0); SculptSession *ss = ob->sculpt; if((ss->multires = sculpt_multires_active(ob))) { @@ -1611,36 +1682,6 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P } } -/* XXX: Code largely copied from bvhutils.c, should be unified */ -/* Returns 1 if a better intersection has been found */ -static int ray_face_intersection(float ray_start[3], float ray_normal[3], - float *t0, float *t1, float *t2, float *t3, - float *fdist) -{ - int hit = 0; - - do - { - float dist = FLT_MAX; - - if(!isect_ray_tri_v3(ray_start, ray_normal, t0, t1, t2, - &dist, NULL)) - dist = FLT_MAX; - - if(dist >= 0 && dist < *fdist) { - hit = 1; - *fdist = dist; - } - - t1 = t2; - t2 = t3; - t3 = NULL; - - } while(t2); - - return hit; -} - typedef struct { SculptSession *ss; float *ray_start, *ray_normal; @@ -1652,53 +1693,16 @@ typedef struct { void sculpt_raycast_cb(PBVHNode *node, void *data_v) { SculptRaycastData *srd = data_v; - MVert *vert = srd->ss->mvert; - int i, totface, *faces, *face_verts; + float (*origco)[3]= NULL; if(srd->original && srd->ss->cache) { - SculptUndoNode *unode; - - unode= sculpt_undo_get_node(srd->ss, node); - - if(unode) { - /* intersect with coordinates from before we started stroke */ - BLI_pbvh_node_get_faces(node, &faces, &face_verts, &totface); - - for(i = 0; i < totface; ++i) { - MFace *f = srd->ss->mface + faces[i]; - /*if(face_verts[i*4 + 0] >= unode->totvert) abort(); - if(face_verts[i*4 + 1] >= unode->totvert) abort(); - if(face_verts[i*4 + 2] >= unode->totvert) abort(); - if(f->v4 && face_verts[i*4 + 3] >= unode->totvert) abort();*/ - - if(ray_face_intersection(srd->ray_start, srd->ray_normal, - unode->co[face_verts[i*4+0]], - unode->co[face_verts[i*4+1]], - unode->co[face_verts[i*4+2]], - f->v4? unode->co[face_verts[i*4+3]]: NULL, - &srd->dist)) { - srd->hit = faces[i]; - } - } - - return; - } + /* intersect with coordinates from before we started stroke */ + SculptUndoNode *unode= sculpt_undo_get_node(srd->ss, node); + origco= (unode)? unode->co: NULL; } - /* intersect with current coordinates */ - BLI_pbvh_node_get_faces(node, &faces, NULL, &totface); - - for(i = 0; i < totface; ++i) { - MFace *f = srd->ss->mface + faces[i]; - if(ray_face_intersection(srd->ray_start, srd->ray_normal, - vert[f->v1].co, - vert[f->v2].co, - vert[f->v3].co, - f->v4 ? vert[f->v4].co : NULL, - &srd->dist)) { - srd->hit = faces[i]; - } - } + srd->hit |= BLI_pbvh_node_raycast(srd->ss->tree, node, origco, + srd->ray_start, srd->ray_normal, &srd->dist); } /* Do a raycast in the tree to find the 3d brush location @@ -1721,7 +1725,7 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou srd.ray_start = ray_start; srd.ray_normal = ray_normal; srd.dist = FLT_MAX; - srd.hit = -1; + srd.hit = 0; srd.original = (cache)? cache->original: 0; BLI_pbvh_raycast(ss->tree, sculpt_raycast_cb, &srd, ray_start, ray_normal, srd.original); @@ -1730,7 +1734,7 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou mul_v3_fl(out, srd.dist); add_v3_v3v3(out, out, ray_start); - return srd.hit != -1; + return srd.hit; } /* Initialize stroke operator properties */ @@ -1794,20 +1798,25 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) /* Restore the mesh before continuing with anchored stroke */ if(brush->flag & BRUSH_ANCHORED) { - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - SculptUndoNode *unode; - - /* this could benefit from multithreading... */ + PBVHNode **nodes; + int n, totnode; - for(unode = lb->first; unode; unode = unode->next) { - float (*co)[3]= unode->co; - short (*no)[3]= unode->no; - int *index= unode->index; - int totvert= unode->totvert; + BLI_pbvh_search_gather(ss->tree, NULL, NULL, &nodes, &totnode); - for(i = 0; i < totvert; ++i) { - copy_v3_v3(ss->mvert[index[i]].co, co[i]); - VECCOPY(ss->mvert[index[i]].no, no[i]); + #pragma omp parallel for private(n) schedule(static) + for(n=0; ntree, 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]); + } + BLI_pbvh_vertex_iter_end; } } @@ -1831,14 +1840,8 @@ static void sculpt_flush_update(bContext *C) rcti r; int redraw = 0; - if(mmd) { - if(mmd->undo_verts && mmd->undo_verts != ss->mvert) - MEM_freeN(mmd->undo_verts); - - mmd->undo_verts = ss->mvert; - mmd->undo_verts_tot = ss->totvert; + if(mmd) multires_mark_as_modified(ob); - } BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); @@ -2024,10 +2027,14 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) { ToolSettings *ts = CTX_data_tool_settings(C); Object *ob = CTX_data_active_object(C); + //MultiresModifierData *mmd = sculpt_multires_active(ob); if(ob->mode & OB_MODE_SCULPT) { multires_force_update(ob); + /*if(mmd && mmd->sculptlvl != mmd->lvl) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA);*/ + /* Leave sculptmode */ ob->mode &= ~OB_MODE_SCULPT; @@ -2035,8 +2042,10 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) } else { /* Enter sculptmode */ - ob->mode |= OB_MODE_SCULPT; + + /*if(mmd && mmd->sculptlvl != mmd->lvl) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA);*/ /* Create persistent sculpt mode data */ if(!ts->sculpt) diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h index eceb0cdeca4..5531ccc813b 100644 --- a/source/blender/gpu/gpu_buffers.h +++ b/source/blender/gpu/gpu_buffers.h @@ -126,13 +126,17 @@ GPUDrawObject *GPU_drawobject_new( struct DerivedMesh *dm ); void GPU_drawobject_free( struct DerivedMesh *dm ); /* Buffers for non-DerivedMesh drawing */ -void *GPU_build_buffers(struct GHash *map, struct MVert *mvert, +void *GPU_build_mesh_buffers(struct GHash *map, struct MVert *mvert, struct MFace *mface, int *face_indices, int totface, int *vert_indices, int uniq_verts, int totvert); -void GPU_draw_buffers(void *buffers); -void GPU_update_buffers(void *buffers, struct MVert *mvert, +void GPU_update_mesh_buffers(void *buffers, struct MVert *mvert, int *vert_indices, int totvert); +void *GPU_build_grid_buffers(struct DMGridData **grids, + int *grid_indices, int totgrid, int gridsize); +void GPU_update_grid_buffers(void *buffers_v, struct DMGridData **grids, + int *grid_indices, int totgrid, int gridsize); +void GPU_draw_buffers(void *buffers); void GPU_free_buffers(void *buffers); /* called before drawing */ diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index a6adf8a16a1..65b81835cf9 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -30,6 +30,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include #include #include "GL/glew.h" @@ -388,11 +389,12 @@ typedef struct { } VertexBufferFormat; typedef struct { - unsigned int vert_buf, tri_buf; - unsigned short tot_tri; + GLuint vert_buf, index_buf; + GLenum index_type; + unsigned int tot_tri, tot_quad; } GPU_Buffers; -void GPU_update_buffers(void *buffers_v, MVert *mvert, +void GPU_update_mesh_buffers(void *buffers_v, MVert *mvert, int *vert_indices, int totvert) { GPU_Buffers *buffers = buffers_v; @@ -414,11 +416,9 @@ void GPU_update_buffers(void *buffers_v, MVert *mvert, memcpy(out->no, v->no, sizeof(short) * 3); } glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - - //printf("node updated %p\n", buffers_v); } -void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, +void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, int *face_indices, int totface, int *vert_indices, int tot_uniq_verts, int totvert) @@ -428,14 +428,15 @@ void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, int i, j, k, tottri; buffers = MEM_callocN(sizeof(GPU_Buffers), "GPU_Buffers"); + buffers->index_type = GL_UNSIGNED_SHORT; /* Count the number of triangles */ for(i = 0, tottri = 0; i < totface; ++i) tottri += mface[face_indices[i]].v4 ? 2 : 1; /* Generate index buffer object */ - glGenBuffersARB(1, &buffers->tri_buf); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->tri_buf); + glGenBuffersARB(1, &buffers->index_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB); @@ -470,24 +471,129 @@ void *GPU_build_buffers(GHash *map, MVert *mvert, MFace *mface, /* Build VBO */ glGenBuffersARB(1, &buffers->vert_buf); - GPU_update_buffers(buffers, mvert, vert_indices, totvert); + GPU_update_mesh_buffers(buffers, mvert, vert_indices, totvert); buffers->tot_tri = tottri; return buffers; } +void GPU_update_grid_buffers(void *buffers_v, DMGridData **grids, + int *grid_indices, int totgrid, int gridsize) +{ + GPU_Buffers *buffers = buffers_v; + DMGridData *vert_data; + int i, totvert; + + totvert= gridsize*gridsize*totgrid; + + /* Build VBO */ + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBufferDataARB(GL_ARRAY_BUFFER_ARB, + sizeof(DMGridData) * totvert, + NULL, GL_STATIC_DRAW_ARB); + vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + + for(i = 0; i < totgrid; ++i) { + DMGridData *grid= grids[grid_indices[i]]; + memcpy(vert_data, grid, sizeof(DMGridData)*gridsize*gridsize); + vert_data += gridsize*gridsize; + } + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + + //printf("node updated %p\n", buffers_v); +} + +void *GPU_build_grid_buffers(DMGridData **grids, + int *grid_indices, int totgrid, int gridsize) +{ + GPU_Buffers *buffers; + int i, j, k, totquad, offset= 0; + + buffers = MEM_callocN(sizeof(GPU_Buffers), "GPU_Buffers"); + + /* Count the number of quads */ + totquad= (gridsize-1)*(gridsize-1)*totgrid; + + /* Generate index buffer object */ + glGenBuffersARB(1, &buffers->index_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); + + if(totquad < USHRT_MAX) { + unsigned short *quad_data; + + buffers->index_type = GL_UNSIGNED_SHORT; + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned short) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); + + /* Fill the quad buffer */ + quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + for(i = 0; i < totgrid; ++i) { + for(j = 0; j < gridsize-1; ++j) { + for(k = 0; k < gridsize-1; ++k) { + *(quad_data++)= offset + j*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k+1; + *(quad_data++)= offset + j*gridsize + k+1; + } + } + + offset += gridsize*gridsize; + } + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + } + else { + unsigned int *quad_data; + + buffers->index_type = GL_UNSIGNED_INT; + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned int) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); + + /* Fill the quad buffer */ + quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + for(i = 0; i < totgrid; ++i) { + for(j = 0; j < gridsize-1; ++j) { + for(k = 0; k < gridsize-1; ++k) { + *(quad_data++)= offset + j*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k+1; + *(quad_data++)= offset + j*gridsize + k+1; + } + } + + offset += gridsize*gridsize; + } + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + } + + /* Build VBO */ + glGenBuffersARB(1, &buffers->vert_buf); + GPU_update_grid_buffers(buffers, grids, grid_indices, totgrid, gridsize); + + buffers->tot_quad = totquad; + + return buffers; +} + void GPU_draw_buffers(void *buffers_v) { GPU_Buffers *buffers = buffers_v; glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->tri_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); + + if(buffers->tot_quad) { + glVertexPointer(3, GL_FLOAT, sizeof(DMGridData), 0); + glNormalPointer(GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, no)); - glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), 0); - glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)12); + glDrawElements(GL_QUADS, buffers->tot_quad * 4, buffers->index_type, 0); + } + else { + glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), 0); + glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, no)); - glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, GL_UNSIGNED_SHORT, 0); + glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, buffers->index_type, 0); + } } void GPU_free_buffers(void *buffers_v) @@ -496,7 +602,7 @@ void GPU_free_buffers(void *buffers_v) GPU_Buffers *buffers = buffers_v; glDeleteBuffersARB(1, &buffers->vert_buf); - glDeleteBuffersARB(1, &buffers->tri_buf); + glDeleteBuffersARB(1, &buffers->index_buf); MEM_freeN(buffers); } -- cgit v1.2.3 From fffce6c5545c3072d2dd266dfe5c133b760baebe Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 14:07:12 +0000 Subject: Sculpt: Multires * Displacement coordinates are now stored differently, as a grid per face corner. This means there is duplication of coordinates, especially at low subdivision levels, but the simpler implementation justifies it I think. * ToDo: conversion of existing multires files (2.4x or 2.5x), loading them may even crash now. * Editmode preservation/interpolation code also has not been updated yet. * Multires now works on the CCGDerivedMesh grids instead of CDDerivedMesh, which should be more memory efficient. * There are still bad memory peaks (if you're using 32bit) when subdividing or propagating displacements. Though at least there should be no huge memory blocks allocated, which windows is now to have trouble with. * Still found some weird spike artifacts at lower multires levels, some also happening before this commit. Perhaps computation of tangents needs to be tweaked more. * Multires modifier now has viewport, sculpt and render levels. Also the levels have been made consistent with subsurf, previously the same level of subdivision was one less for multires. * Both multires and subsurf modifier now can have their subdivision level set to 0 for no subdivision. --- source/blender/blenkernel/BKE_modifier.h | 2 +- source/blender/blenkernel/BKE_multires.h | 20 +- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 212 ---- source/blender/blenkernel/intern/customdata.c | 8 + source/blender/blenkernel/intern/displist.c | 6 +- source/blender/blenkernel/intern/lattice.c | 2 +- source/blender/blenkernel/intern/modifier.c | 95 +- source/blender/blenkernel/intern/multires.c | 1396 +++++++--------------- source/blender/blenloader/intern/readfile.c | 14 +- source/blender/blenloader/intern/writefile.c | 6 - source/blender/editors/object/object_modifier.c | 13 +- source/blender/editors/sculpt_paint/sculpt.c | 10 +- source/blender/makesdna/DNA_modifier_types.h | 8 +- source/blender/makesrna/intern/rna_modifier.c | 64 +- 15 files changed, 582 insertions(+), 1276 deletions(-) diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index 245db7e35ff..3018f89178e 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -228,7 +228,7 @@ typedef struct ModifierTypeInfo { * * This function is optional (assumes never disabled if not present). */ - int (*isDisabled)(struct ModifierData *md); + int (*isDisabled)(struct ModifierData *md, int userRenderParams); /* Add the appropriate relations to the DEP graph depending on the * modifier data. diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index a331479cad1..53ead3a5eda 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -39,23 +39,6 @@ typedef struct MultiresSubsurf { int local_mmd; } MultiresSubsurf; -/* MultiresDM */ -struct Object *MultiresDM_get_object(struct DerivedMesh *dm); -struct Mesh *MultiresDM_get_mesh(struct DerivedMesh *dm); -struct DerivedMesh *MultiresDM_new(struct MultiresSubsurf *, struct DerivedMesh*, int, int, int); -void *MultiresDM_get_vertnorm(struct DerivedMesh *); -void *MultiresDM_get_orco(struct DerivedMesh *); -struct MVert *MultiresDM_get_subco(struct DerivedMesh *); -struct ListBase *MultiresDM_get_vert_face_map(struct DerivedMesh *); -struct ListBase *MultiresDM_get_vert_edge_map(struct DerivedMesh *); -int *MultiresDM_get_face_offsets(struct DerivedMesh *); -int MultiresDM_get_totlvl(struct DerivedMesh *); -int MultiresDM_get_lvl(struct DerivedMesh *); -void MultiresDM_set_update(struct DerivedMesh *, void (*)(struct DerivedMesh*)); - -/* The displacements will only be updated when - the MultiresDM has been marked as modified */ -void MultiresDM_mark_as_modified(struct DerivedMesh *); void multires_mark_as_modified(struct Object *ob); void multires_force_update(struct Object *ob); @@ -64,10 +47,9 @@ struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData* struct Object *, int, int); struct MultiresModifierData *find_multires_modifier(struct Object *ob); -int multiresModifier_switch_level(struct Object *, const int); void multiresModifier_join(struct Object *); void multiresModifier_del_levels(struct MultiresModifierData *, struct Object *, int direction); -void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int distance, +void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple); int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *dst, struct Object *src); diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 5a911fcb13b..b715b1531de 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1535,7 +1535,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier md->scene= scene; if (!(md->mode&eModifierMode_Realtime)) return NULL; - if (mti->isDisabled && mti->isDisabled(md)) return NULL; + if (mti->isDisabled && mti->isDisabled(md, 0)) return NULL; if (mti->type==eModifierTypeType_OnlyDeform) { int numVerts; diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 3007564e333..b3e75549028 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -1810,215 +1810,3 @@ MFace *CDDM_get_faces(DerivedMesh *dm) return ((CDDerivedMesh*)dm)->mface; } -/* Multires DerivedMesh, extends CDDM */ -typedef struct MultiresDM { - CDDerivedMesh cddm; - - MultiresModifierData *mmd; - int local_mmd; - - int lvl, totlvl; - float (*orco)[3]; - MVert *subco; - - ListBase *vert_face_map, *vert_edge_map; - IndexNode *vert_face_map_mem, *vert_edge_map_mem; - int *face_offsets; - - Object *ob; - int modified; - - void (*update)(DerivedMesh*); -} MultiresDM; - -static void MultiresDM_release(DerivedMesh *dm) -{ - MultiresDM *mrdm = (MultiresDM*)dm; - int mvert_layer; - - /* Before freeing, need to update the displacement map */ - if(dm->needsFree && mrdm->modified) { - /* Check that mmd still exists */ - if(!mrdm->local_mmd && BLI_findindex(&mrdm->ob->modifiers, mrdm->mmd) < 0) - mrdm->mmd = NULL; - if(mrdm->mmd) - mrdm->update(dm); - } - - /* If the MVert data is being used as the sculpt undo store, don't free it */ - mvert_layer = CustomData_get_layer_index(&dm->vertData, CD_MVERT); - if(mvert_layer != -1) { - CustomDataLayer *cd = &dm->vertData.layers[mvert_layer]; - if(mrdm->mmd && cd->data == mrdm->mmd->undo_verts) - cd->flag |= CD_FLAG_NOFREE; - } - - if(DM_release(dm)) { - cdDM_free_internal(&mrdm->cddm); - MEM_freeN(mrdm->subco); - MEM_freeN(mrdm->orco); - if(mrdm->vert_face_map) - MEM_freeN(mrdm->vert_face_map); - if(mrdm->vert_face_map_mem) - MEM_freeN(mrdm->vert_face_map_mem); - if(mrdm->vert_edge_map) - MEM_freeN(mrdm->vert_edge_map); - if(mrdm->vert_edge_map_mem) - MEM_freeN(mrdm->vert_edge_map_mem); - if(mrdm->face_offsets) - MEM_freeN(mrdm->face_offsets); - MEM_freeN(mrdm); - } -} - -DerivedMesh *MultiresDM_new(MultiresSubsurf *ms, DerivedMesh *orig, int numVerts, int numEdges, int numFaces) -{ - MultiresDM *mrdm = MEM_callocN(sizeof(MultiresDM), "MultiresDM"); - CDDerivedMesh *cddm = cdDM_create("MultiresDM CDDM"); - DerivedMesh *dm = NULL; - - mrdm->cddm = *cddm; - MEM_freeN(cddm); - dm = &mrdm->cddm.dm; - - mrdm->mmd = ms->mmd; - mrdm->ob = ms->ob; - mrdm->local_mmd = ms->local_mmd; - - if(dm) { - MDisps *disps; - MVert *mvert; - int i; - - DM_from_template(dm, orig, numVerts, numEdges, numFaces); - CustomData_free_layers(&dm->faceData, CD_MDISPS, numFaces); - - disps = CustomData_get_layer(&orig->faceData, CD_MDISPS); - if(disps) - CustomData_add_layer(&dm->faceData, CD_MDISPS, CD_REFERENCE, disps, numFaces); - - - mvert = CustomData_get_layer(&orig->vertData, CD_MVERT); - mrdm->orco = MEM_callocN(sizeof(float) * 3 * orig->getNumVerts(orig), "multires orco"); - for(i = 0; i < orig->getNumVerts(orig); ++i) - copy_v3_v3(mrdm->orco[i], mvert[i].co); - } - else - DM_init(dm, numVerts, numEdges, numFaces); - - if(!CustomData_get_layer(&dm->vertData, CD_ORIGINDEX)) - CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts); - if(!CustomData_get_layer(&dm->edgeData, CD_ORIGINDEX)) - CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges); - if(!CustomData_get_layer(&dm->faceData, CD_ORIGINDEX)) - CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_CALLOC, NULL, numFaces); - - CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, numVerts); - CustomData_add_layer(&dm->edgeData, CD_MEDGE, CD_CALLOC, NULL, numEdges); - CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numFaces); - - mrdm->cddm.mvert = CustomData_get_layer(&dm->vertData, CD_MVERT); - mrdm->cddm.medge = CustomData_get_layer(&dm->edgeData, CD_MEDGE); - mrdm->cddm.mface = CustomData_get_layer(&dm->faceData, CD_MFACE); - - mrdm->lvl = ms->mmd->lvl; - mrdm->totlvl = ms->mmd->totlvl; - mrdm->subco = MEM_callocN(sizeof(MVert)*numVerts, "multires subdivided verts"); - mrdm->modified = 0; - - dm->release = MultiresDM_release; - - return dm; -} - -Mesh *MultiresDM_get_mesh(DerivedMesh *dm) -{ - return get_mesh(((MultiresDM*)dm)->ob); -} - -Object *MultiresDM_get_object(DerivedMesh *dm) -{ - return ((MultiresDM*)dm)->ob; -} - -void *MultiresDM_get_orco(DerivedMesh *dm) -{ - return ((MultiresDM*)dm)->orco; - -} - -MVert *MultiresDM_get_subco(DerivedMesh *dm) -{ - return ((MultiresDM*)dm)->subco; -} - -int MultiresDM_get_totlvl(DerivedMesh *dm) -{ - return ((MultiresDM*)dm)->totlvl; -} - -int MultiresDM_get_lvl(DerivedMesh *dm) -{ - return ((MultiresDM*)dm)->lvl; -} - -void MultiresDM_set_orco(DerivedMesh *dm, float (*orco)[3]) -{ - ((MultiresDM*)dm)->orco = orco; -} - -void MultiresDM_set_update(DerivedMesh *dm, void (*update)(DerivedMesh*)) -{ - ((MultiresDM*)dm)->update = update; -} - -ListBase *MultiresDM_get_vert_face_map(DerivedMesh *dm) -{ - MultiresDM *mrdm = (MultiresDM*)dm; - Mesh *me = mrdm->ob->data; - - if(!mrdm->vert_face_map) - create_vert_face_map(&mrdm->vert_face_map, &mrdm->vert_face_map_mem, me->mface, - me->totvert, me->totface); - - return mrdm->vert_face_map; -} - -ListBase *MultiresDM_get_vert_edge_map(DerivedMesh *dm) -{ - MultiresDM *mrdm = (MultiresDM*)dm; - Mesh *me = mrdm->ob->data; - - if(!mrdm->vert_edge_map) - create_vert_edge_map(&mrdm->vert_edge_map, &mrdm->vert_edge_map_mem, me->medge, - me->totvert, me->totedge); - - return mrdm->vert_edge_map; -} - -int *MultiresDM_get_face_offsets(DerivedMesh *dm) -{ - MultiresDM *mrdm = (MultiresDM*)dm; - Mesh *me = mrdm->ob->data; - int i, accum = 0; - - if(!mrdm->face_offsets) { - int len = (int)pow(2, mrdm->lvl - 2) - 1; - int area = len * len; - int t = 1 + len * 3 + area * 3, q = t + len + area; - - mrdm->face_offsets = MEM_callocN(sizeof(int) * me->totface, "mrdm face offsets"); - for(i = 0; i < me->totface; ++i) { - mrdm->face_offsets[i] = accum; - - accum += (me->mface[i].v4 ? q : t); - } - } - - return mrdm->face_offsets; -} - -void MultiresDM_mark_as_modified(DerivedMesh *dm) -{ - ((MultiresDM*)dm)->modified = 1; -} diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 7b754025b6c..4844595513f 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -381,6 +381,7 @@ static void layerDefault_origspace_face(void *data, int count) osf[i] = default_osf; } +#if 0 /* Adapted from sculptmode.c */ static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v) { @@ -426,9 +427,12 @@ static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, fl add_v3_v3v3(out, d2[0], d2[1]); } +#endif static void layerSwap_mdisps(void *data, int *ci) { + // XXX +#if 0 MDisps *s = data; float (*d)[3] = NULL; int x, y, st; @@ -447,11 +451,14 @@ static void layerSwap_mdisps(void *data, int *ci) if(s->disps) MEM_freeN(s->disps); s->disps = d; +#endif } static void layerInterp_mdisps(void **sources, float *weights, float *sub_weights, int count, void *dest) { + // XXX +#if 0 MDisps *d = dest; MDisps *s = NULL; int st, stl; @@ -496,6 +503,7 @@ static void layerInterp_mdisps(void **sources, float *weights, float *sub_weight copy_v3_v3(d->disps[y * st + x], srcdisp); } } +#endif } static void layerCopy_mdisps(const void *source, void *dest, int count) diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 48fb283c404..b35cf917895 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1225,7 +1225,7 @@ static ModifierData *curve_get_tesselate_point(Object *ob, int forRender, int ed ModifierTypeInfo *mti = modifierType_getInfo(md->type); if ((md->mode & required_mode) != required_mode) continue; - if (mti->isDisabled && mti->isDisabled(md)) continue; + if (mti->isDisabled && mti->isDisabled(md, forRender)) continue; if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) { preTesselatePoint = md; @@ -1275,7 +1275,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl md->scene= scene; if ((md->mode & required_mode) != required_mode) continue; - if (mti->isDisabled && mti->isDisabled(md)) continue; + if (mti->isDisabled && mti->isDisabled(md, forRender)) continue; if (mti->type!=eModifierTypeType_OnlyDeform) continue; if (!deformedVerts) { @@ -1330,7 +1330,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba md->scene= scene; if ((md->mode & required_mode) != required_mode) continue; - if (mti->isDisabled && mti->isDisabled(md)) continue; + if (mti->isDisabled && mti->isDisabled(md, forRender)) continue; if (mti->type!=eModifierTypeType_OnlyDeform && mti->type!=eModifierTypeType_DeformOrConstruct) continue; /* need to put all verts in 1 block for curve deform */ diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index dc548edbb25..e963b2e9fb6 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -1002,7 +1002,7 @@ void lattice_calc_modifiers(Scene *scene, Object *ob) if (!(md->mode&eModifierMode_Realtime)) continue; if (editmode && !(md->mode&eModifierMode_Editmode)) continue; - if (mti->isDisabled && mti->isDisabled(md)) continue; + if (mti->isDisabled && mti->isDisabled(md, 0)) continue; if (mti->type!=eModifierTypeType_OnlyDeform) continue; if (!vertexCos) vertexCos = lattice_getVertexCos(ob, &numVerts); diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 50c907fd1ca..d8c05c30cfe 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -187,7 +187,7 @@ static DerivedMesh *get_original_dm(Scene *scene, Object *ob, float (*vertexCos) /***/ -static int noneModifier_isDisabled(ModifierData *md) +static int noneModifier_isDisabled(ModifierData *md, int userRenderParams) { return 1; } @@ -222,7 +222,7 @@ static CustomDataMask curveModifier_requiredDataMask(Object *ob, ModifierData *m return dataMask; } -static int curveModifier_isDisabled(ModifierData *md) +static int curveModifier_isDisabled(ModifierData *md, int userRenderParams) { CurveModifierData *cmd = (CurveModifierData*) md; @@ -298,7 +298,7 @@ static CustomDataMask latticeModifier_requiredDataMask(Object *ob, ModifierData return dataMask; } -static int latticeModifier_isDisabled(ModifierData *md) +static int latticeModifier_isDisabled(ModifierData *md, int userRenderParams) { LatticeModifierData *lmd = (LatticeModifierData*) md; @@ -402,6 +402,13 @@ static void subsurfModifier_freeData(ModifierData *md) } } +static int subsurfModifier_isDisabled(ModifierData *md, int useRenderParams) +{ + SubsurfModifierData *smd = (SubsurfModifierData*) md; + + return (useRenderParams)? (smd->renderLevels == 0): (smd->levels == 0); +} + static DerivedMesh *subsurfModifier_applyModifier( ModifierData *md, Object *ob, DerivedMesh *derivedData, int useRenderParams, int isFinalCalc) @@ -410,8 +417,13 @@ static DerivedMesh *subsurfModifier_applyModifier( DerivedMesh *result; result = subsurf_make_derived_from_derived(derivedData, smd, - useRenderParams, NULL, - isFinalCalc, 0); + useRenderParams, NULL, isFinalCalc, 0); + + if(useRenderParams || !isFinalCalc) { + DerivedMesh *cddm= CDDM_copy(result); + result->release(result); + result= cddm; + } return result; } @@ -3524,7 +3536,7 @@ static void displaceModifier_foreachIDLink(ModifierData *md, Object *ob, displaceModifier_foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData); } -static int displaceModifier_isDisabled(ModifierData *md) +static int displaceModifier_isDisabled(ModifierData *md, int useRenderParams) { DisplaceModifierData *dmd = (DisplaceModifierData*) md; @@ -4268,7 +4280,7 @@ static void smoothModifier_copyData(ModifierData *md, ModifierData *target) strncpy(tsmd->defgrp_name, smd->defgrp_name, 32); } -static int smoothModifier_isDisabled(ModifierData *md) +static int smoothModifier_isDisabled(ModifierData *md, int useRenderParams) { SmoothModifierData *smd = (SmoothModifierData*) md; short flag; @@ -4498,7 +4510,7 @@ static void castModifier_copyData(ModifierData *md, ModifierData *target) strncpy(tcmd->defgrp_name, cmd->defgrp_name, 32); } -static int castModifier_isDisabled(ModifierData *md) +static int castModifier_isDisabled(ModifierData *md, int useRenderParams) { CastModifierData *cmd = (CastModifierData*) md; short flag; @@ -5487,7 +5499,7 @@ static CustomDataMask armatureModifier_requiredDataMask(Object *ob, ModifierData return dataMask; } -static int armatureModifier_isDisabled(ModifierData *md) +static int armatureModifier_isDisabled(ModifierData *md, int useRenderParams) { ArmatureModifierData *amd = (ArmatureModifierData*) md; @@ -5610,7 +5622,7 @@ static void hookModifier_freeData(ModifierData *md) if (hmd->indexar) MEM_freeN(hmd->indexar); } -static int hookModifier_isDisabled(ModifierData *md) +static int hookModifier_isDisabled(ModifierData *md, int useRenderParams) { HookModifierData *hmd = (HookModifierData*) md; @@ -6308,7 +6320,7 @@ static void booleanModifier_copyData(ModifierData *md, ModifierData *target) tbmd->operation = bmd->operation; } -static int booleanModifier_isDisabled(ModifierData *md) +static int booleanModifier_isDisabled(ModifierData *md, int useRenderParams) { BooleanModifierData *bmd = (BooleanModifierData*) md; @@ -7757,7 +7769,7 @@ static CustomDataMask meshdeformModifier_requiredDataMask(Object *ob, ModifierDa return dataMask; } -static int meshdeformModifier_isDisabled(ModifierData *md) +static int meshdeformModifier_isDisabled(ModifierData *md, int useRenderParams) { MeshDeformModifierData *mmd = (MeshDeformModifierData*) md; @@ -8047,15 +8059,10 @@ static void multiresModifier_initData(ModifierData *md) { MultiresModifierData *mmd = (MultiresModifierData*)md; - mmd->lvl = mmd->totlvl = 1; -} - -static void multiresModifier_freeData(ModifierData *md) -{ - MultiresModifierData *mmd = (MultiresModifierData*)md; - - if(mmd->undo_verts) - MEM_freeN(mmd->undo_verts); + mmd->lvl = 0; + mmd->sculptlvl = 0; + mmd->renderlvl = 0; + mmd->totlvl = 0; } static void multiresModifier_copyData(ModifierData *md, ModifierData *target) @@ -8063,37 +8070,35 @@ static void multiresModifier_copyData(ModifierData *md, ModifierData *target) MultiresModifierData *mmd = (MultiresModifierData*) md; MultiresModifierData *tmmd = (MultiresModifierData*) target; - tmmd->totlvl = mmd->totlvl; tmmd->lvl = mmd->lvl; + tmmd->sculptlvl = mmd->sculptlvl; + tmmd->renderlvl = mmd->renderlvl; + tmmd->totlvl = mmd->totlvl; } static DerivedMesh *multiresModifier_applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, int useRenderParams, int isFinalCalc) { MultiresModifierData *mmd = (MultiresModifierData*)md; - DerivedMesh *final; + DerivedMesh *result; - /* TODO: for now just skip a level1 mesh */ - if(mmd->lvl == 1) - return dm; + result = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc); - final = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc); - if(mmd->undo_signal && mmd->undo_verts && mmd->undo_verts_tot == final->getNumVerts(final)) { - int i; - MVert *dst = CDDM_get_verts(final); - for(i = 0; i < mmd->undo_verts_tot; ++i) { - copy_v3_v3(dst[i].co, mmd->undo_verts[i].co); - } - CDDM_calc_normals(final); - - MultiresDM_mark_as_modified(final); + if(result == dm) + return dm; - MEM_freeN(mmd->undo_verts); - mmd->undo_signal = 0; - mmd->undo_verts = NULL; + if(useRenderParams || !isFinalCalc) { + DerivedMesh *cddm= CDDM_copy(result); + result->release(result); + result= cddm; + } + else if(ob->mode & OB_MODE_SCULPT) { + /* would be created on the fly too, just nicer this + way on first stroke after e.g. switching levels */ + result->getPBVH(ob, result); } - return final; + return result; } /* Shrinkwrap */ @@ -8142,7 +8147,7 @@ static CustomDataMask shrinkwrapModifier_requiredDataMask(Object *ob, ModifierDa return dataMask; } -static int shrinkwrapModifier_isDisabled(ModifierData *md) +static int shrinkwrapModifier_isDisabled(ModifierData *md, int useRenderParams) { ShrinkwrapModifierData *smd = (ShrinkwrapModifierData*) md; return !smd->target; @@ -8438,6 +8443,7 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type) mti->initData = subsurfModifier_initData; mti->copyData = subsurfModifier_copyData; mti->freeData = subsurfModifier_freeData; + mti->isDisabled = subsurfModifier_isDisabled; mti->applyModifier = subsurfModifier_applyModifier; mti->applyModifierEM = subsurfModifier_applyModifierEM; @@ -8770,7 +8776,6 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type) mti->type = eModifierTypeType_Constructive; mti->flags = eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_RequiresOriginalData; mti->initData = multiresModifier_initData; - mti->freeData = multiresModifier_freeData; mti->copyData = multiresModifier_copyData; mti->applyModifier = multiresModifier_applyModifier; @@ -8920,7 +8925,7 @@ int modifier_couldBeCage(ModifierData *md) return ( (md->mode & eModifierMode_Realtime) && (md->mode & eModifierMode_Editmode) && - (!mti->isDisabled || !mti->isDisabled(md)) && + (!mti->isDisabled || !mti->isDisabled(md, 0)) && modifier_supportsMapping(md)); } @@ -8957,7 +8962,7 @@ int modifiers_getCageIndex(Object *ob, int *lastPossibleCageIndex_r, int virtual if (!(md->mode & eModifierMode_Realtime)) continue; if (!(md->mode & eModifierMode_Editmode)) continue; - if (mti->isDisabled && mti->isDisabled(md)) continue; + if (mti->isDisabled && mti->isDisabled(md, 0)) continue; if (!(mti->flags & eModifierTypeFlag_SupportsEditmode)) continue; if (md->mode & eModifierMode_DisableTemporary) continue; @@ -8999,7 +9004,7 @@ int modifier_isEnabled(ModifierData *md, int required_mode) ModifierTypeInfo *mti = modifierType_getInfo(md->type); if((md->mode & required_mode) != required_mode) return 0; - if(mti->isDisabled && mti->isDisabled(md)) return 0; + if(mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) return 0; if(md->mode & eModifierMode_DisableTemporary) return 0; if(required_mode & eModifierMode_Editmode) if(!(mti->flags & eModifierTypeFlag_SupportsEditmode)) return 0; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index fc14afaf07f..2518d4bc3ca 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -40,6 +40,7 @@ #include "BLI_math.h" #include "BLI_blenlib.h" +#include "BKE_btex.h" #include "BKE_cdderivedmesh.h" #include "BKE_customdata.h" #include "BKE_depsgraph.h" @@ -50,14 +51,19 @@ #include "BKE_multires.h" #include "BKE_object.h" #include "BKE_subsurf.h" +#include "BKE_utildefines.h" + +#include "CCGSubSurf.h" #include #include /* MULTIRES MODIFIER */ static const int multires_max_levels = 13; -static const int multires_quad_tot[] = {4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; -static const int multires_side_tot[] = {2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; +static const int multires_grid_tot[] = {1, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; +static const int multires_side_tot[] = {1, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; + +static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl); MultiresModifierData *find_multires_modifier(Object *ob) { @@ -72,23 +78,32 @@ MultiresModifierData *find_multires_modifier(Object *ob) } return mmd; +} +static int multires_get_level(Object *ob, MultiresModifierData *mmd, int render) +{ + if(render) + return mmd->renderlvl; + else if(ob->mode == OB_MODE_SCULPT) + return mmd->sculptlvl; + else + return mmd->lvl; } -int multiresModifier_switch_level(Object *ob, const int distance) +static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lvl) { - MultiresModifierData *mmd = find_multires_modifier(ob); - - if(mmd) { - mmd->lvl += distance; - if(mmd->lvl < 1) mmd->lvl = 1; - else if(mmd->lvl > mmd->totlvl) mmd->lvl = mmd->totlvl; - /* XXX: DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - object_handle_update(ob);*/ - return 1; + mmd->totlvl = lvl; + + if(ob->mode != OB_MODE_SCULPT) { + mmd->lvl = MAX2(mmd->lvl, lvl); + CLAMP(mmd->lvl, 0, mmd->totlvl); } - else - return 0; + + mmd->sculptlvl = MAX2(mmd->sculptlvl, lvl); + CLAMP(mmd->sculptlvl, 0, mmd->totlvl); + + mmd->renderlvl = MAX2(mmd->renderlvl, lvl); + CLAMP(mmd->renderlvl, 0, mmd->totlvl); } /* XXX */ @@ -156,6 +171,8 @@ void multiresModifier_join(Object *ob) /* Returns 0 on success, 1 if the src's totvert doesn't match */ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src) { + /* XXX */ +#if 0 Mesh *src_me = get_mesh(src); DerivedMesh *mrdm = dst->derivedFinal; @@ -172,319 +189,139 @@ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src return 0; } +#endif return 1; } -static void Mat3FromColVecs(float mat[][3], float v1[3], float v2[3], float v3[3]) +static void column_vectors_to_mat3(float mat[][3], float v1[3], float v2[3], float v3[3]) { copy_v3_v3(mat[0], v1); copy_v3_v3(mat[1], v2); copy_v3_v3(mat[2], v3); } -static DerivedMesh *multires_subdisp_pre(DerivedMesh *mrdm, int distance, int simple) +static void multires_copy_grid(float (*gridA)[3], float (*gridB)[3], int sizeA, int sizeB) { - DerivedMesh *final; - SubsurfModifierData smd; - - memset(&smd, 0, sizeof(SubsurfModifierData)); - smd.levels = distance; - if(simple) - smd.subdivType = ME_SIMPLE_SUBSURF; + int x, y, j, skip; - final = NULL; // XXX subsurf_make_derived_from_derived_with_multires(mrdm, &smd, NULL, 0, NULL, 0, 0); + if(sizeA > sizeB) { + skip = (sizeA-1)/(sizeB-1); - return final; -} + for(j = 0, y = 0; y < sizeB; y++) + for(x = 0; x < sizeB; x++, j++) + copy_v3_v3(gridA[y*skip*sizeA + x*skip], gridB[j]); + } + else { + skip = (sizeB-1)/(sizeA-1); -static void VecAddUf(float a[3], float b[3]) -{ - a[0] += b[0]; - a[1] += b[1]; - a[2] += b[2]; + for(j = 0, y = 0; y < sizeA; y++) + for(x = 0; x < sizeA; x++, j++) + copy_v3_v3(gridA[j], gridB[y*skip*sizeB + x*skip]); + } } -static void multires_subdisp(DerivedMesh *orig, Object *ob, DerivedMesh *final, int lvl, int totlvl, - int totsubvert, int totsubedge, int totsubface, int addverts) +static void multires_copy_dm_grid(DMGridData *gridA, DMGridData *gridB, int sizeA, int sizeB) { - DerivedMesh *mrdm; - Mesh *me = ob->data; - MultiresModifierData mmd_sub; - MVert *mvs = CDDM_get_verts(final); - MVert *mvd, *mvd_f1, *mvs_f1, *mvd_f3, *mvd_f4; - MVert *mvd_f2, *mvs_f2, *mvs_e1, *mvd_e1, *mvs_e2; - int totvert; - int slo1 = multires_side_tot[lvl - 1]; - int sll = slo1 / 2; - int slo2 = multires_side_tot[totlvl - 2]; - int shi2 = multires_side_tot[totlvl - 1]; - int skip = multires_side_tot[totlvl - lvl] - 1; - int i, j, k; - - memset(&mmd_sub, 0, sizeof(MultiresModifierData)); - mmd_sub.lvl = mmd_sub.totlvl = totlvl; - mrdm = multires_dm_create_from_derived(&mmd_sub, 1, orig, ob, 0, 0); - - mvd = CDDM_get_verts(mrdm); - /* Need to map from ccg to mrdm */ - totvert = mrdm->getNumVerts(mrdm); - - if(!addverts) { - for(i = 0; i < totvert; ++i) { - float z[3] = {0,0,0}; - copy_v3_v3(mvd[i].co, z); - } - } - - /* Load base verts */ - for(i = 0; i < me->totvert; ++i) - VecAddUf(mvd[totvert - me->totvert + i].co, mvs[totvert - me->totvert + i].co); - - mvd_f1 = mvd; - mvs_f1 = mvs; - mvd_f2 = mvd; - mvs_f2 = mvs + totvert - totsubvert; - mvs_e1 = mvs + totsubface * (skip-1) * (skip-1); - - for(i = 0; i < me->totface; ++i) { - const int end = me->mface[i].v4 ? 4 : 3; - int x, y, x2, y2, mov= 0; - - mvd_f1 += 1 + end * (slo2-2); //center+edgecross - mvd_f3 = mvd_f4 = mvd_f1; - - for(j = 0; j < end; ++j) { - mvd_f1 += (skip/2 - 1) * (slo2 - 2) + (skip/2 - 1); - /* Update sub faces */ - for(y = 0; y < sll; ++y) { - for(x = 0; x < sll; ++x) { - /* Face center */ - VecAddUf(mvd_f1->co, mvs_f1->co); - mvs_f1 += 1; - - /* Now we hold the center of the subface at mvd_f1 - and offset it to the edge cross and face verts */ - - /* Edge cross */ - for(k = 0; k < 4; ++k) { - if(k == 0) mov = -1; - else if(k == 1) mov = slo2 - 2; - else if(k == 2) mov = 1; - else if(k == 3) mov = -(slo2 - 2); - - for(x2 = 1; x2 < skip/2; ++x2) { - VecAddUf((mvd_f1 + mov * x2)->co, mvs_f1->co); - ++mvs_f1; - } - } + int x, y, j, skip; - /* Main face verts */ - for(k = 0; k < 4; ++k) { - int movx= 0, movy= 0; - - if(k == 0) { movx = -1; movy = -(slo2 - 2); } - else if(k == 1) { movx = slo2 - 2; movy = -1; } - else if(k == 2) { movx = 1; movy = slo2 - 2; } - else if(k == 3) { movx = -(slo2 - 2); movy = 1; } - - for(y2 = 1; y2 < skip/2; ++y2) { - for(x2 = 1; x2 < skip/2; ++x2) { - VecAddUf((mvd_f1 + movy * y2 + movx * x2)->co, mvs_f1->co); - ++mvs_f1; - } - } - } - - mvd_f1 += skip; - } - mvd_f1 += (skip - 1) * (slo2 - 2) - 1; - } - mvd_f1 -= (skip - 1) * (slo2 - 2) - 1 + skip; - mvd_f1 += (slo2 - 2) * (skip/2-1) + skip/2-1 + 1; - } - - /* update face center verts */ - VecAddUf(mvd_f2->co, mvs_f2->co); - - mvd_f2 += 1; - mvs_f2 += 1; - - /* update face edge verts */ - for(j = 0; j < end; ++j) { - MVert *restore; - - /* Super-face edge cross */ - for(k = 0; k < skip-1; ++k) { - VecAddUf(mvd_f2->co, mvs_e1->co); - mvd_f2++; - mvs_e1++; - } - for(x = 1; x < sll; ++x) { - VecAddUf(mvd_f2->co, mvs_f2->co); - mvd_f2++; - mvs_f2++; - - for(k = 0; k < skip-1; ++k) { - VecAddUf(mvd_f2->co, mvs_e1->co); - mvd_f2++; - mvs_e1++; - } - } - - restore = mvs_e1; - for(y = 0; y < sll - 1; ++y) { - for(x = 0; x < sll; ++x) { - for(k = 0; k < skip - 1; ++k) { - VecAddUf(mvd_f3[(skip-1)+(y*skip) + (x*skip+k)*(slo2-2)].co, - mvs_e1->co); - ++mvs_e1; - } - mvs_e1 += skip-1; - } - } - - mvs_e1 = restore + skip - 1; - for(y = 0; y < sll - 1; ++y) { - for(x = 0; x < sll; ++x) { - for(k = 0; k < skip - 1; ++k) { - VecAddUf(mvd_f3[(slo2-2)*(skip-1)+(x*skip)+k + y*skip*(slo2-2)].co, - mvs_e1->co); - ++mvs_e1; - } - mvs_e1 += skip - 1; - } - } - - mvd_f3 += (slo2-2)*(slo2-2); - mvs_e1 -= skip - 1; - } + if(sizeA > sizeB) { + skip = (sizeA-1)/(sizeB-1); - /* update base (2) face verts */ - for(j = 0; j < end; ++j) { - mvd_f2 += (slo2 - 1) * (skip - 1); - for(y = 0; y < sll - 1; ++y) { - for(x = 0; x < sll - 1; ++x) { - VecAddUf(mvd_f2->co, mvs_f2->co); - mvd_f2 += skip; - ++mvs_f2; - } - mvd_f2 += (slo2 - 1) * (skip - 1); - } - mvd_f2 -= (skip - 1); - } + for(j = 0, y = 0; y < sizeB; y++) + for(x = 0; x < sizeB; x++, j++) + copy_v3_v3(gridA[y*skip*sizeA + x*skip].co, gridB[j].co); } + else { + skip = (sizeB-1)/(sizeA-1); - /* edges */ - mvd_e1 = mvd + totvert - me->totvert - me->totedge * (shi2-2); - mvs_e2 = mvs + totvert - me->totvert - me->totedge * (slo1-2); - for(i = 0; i < me->totedge; ++i) { - for(j = 0; j < skip - 1; ++j) { - VecAddUf(mvd_e1->co, mvs_e1->co); - mvd_e1++; - mvs_e1++; - } - for(j = 0; j < slo1 - 2; j++) { - VecAddUf(mvd_e1->co, mvs_e2->co); - mvd_e1++; - mvs_e2++; - - for(k = 0; k < skip - 1; ++k) { - VecAddUf(mvd_e1->co, mvs_e1->co); - mvd_e1++; - mvs_e1++; - } - } + for(j = 0, y = 0; y < sizeA; y++) + for(x = 0; x < sizeA; x++, j++) + copy_v3_v3(gridA[j].co, gridB[y*skip*sizeB + x*skip].co); } - - final->needsFree = 1; - final->release(final); - mrdm->needsFree = 1; - MultiresDM_mark_as_modified(mrdm); - mrdm->release(mrdm); } /* direction=1 for delete higher, direction=0 for lower (not implemented yet) */ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object *ob, int direction) { Mesh *me = get_mesh(ob); - int distance = mmd->totlvl - mmd->lvl; - MDisps *mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); + int lvl = multires_get_level(ob, mmd, 0); + int levels = mmd->totlvl - lvl; + MDisps *mdisps; + + // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS); multires_force_update(ob); - if(mdisps && distance > 0 && direction == 1) { - int skip = multires_side_tot[distance] - 1; - int st = multires_side_tot[mmd->totlvl - 1]; - int totdisp = multires_quad_tot[mmd->lvl - 1]; - int i, j, x, y; + if(mdisps && levels > 0 && direction == 1) { + int nsize = multires_side_tot[lvl]; + int hsize = multires_side_tot[mmd->totlvl]; + int i; for(i = 0; i < me->totface; ++i) { - float (*disps)[3] = MEM_callocN(sizeof(float) * 3 * totdisp, "multires del disps"); - - for(j = 0, y = 0; y < st; y += skip) { - for(x = 0; x < st; x += skip) { - copy_v3_v3(disps[j], mdisps[i].disps[y * st + x]); - ++j; - } + MDisps *mdisp= &mdisps[i]; + float (*disps)[3], (*ndisps)[3], (*hdisps)[3]; + int nvert = (me->mface[i].v4)? 4: 3; + int totdisp = multires_grid_tot[lvl]*nvert; + int S; + + disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); + + ndisps = disps; + hdisps = mdisp->disps; + + for(S = 0; S < nvert; S++) { + multires_copy_grid(ndisps, hdisps, nsize, hsize); + + ndisps += nsize*nsize; + hdisps += hsize*hsize; } - MEM_freeN(mdisps[i].disps); - mdisps[i].disps = disps; - mdisps[i].totdisp = totdisp; + MEM_freeN(mdisp->disps); + mdisp->disps = disps; + mdisp->totdisp = totdisp; } } - mmd->totlvl = mmd->lvl; + multires_set_tot_level(ob, mmd, lvl); } -void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int distance, int updateblock, int simple) +static DerivedMesh *multires_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int totlvl, int simple) { - DerivedMesh *final = NULL; - int totsubvert = 0, totsubface = 0, totsubedge = 0; - Mesh *me = get_mesh(ob); - MDisps *mdisps; - int i; + MultiresModifierData mmd; - if(distance == 0) - return; + memset(&mmd, 0, sizeof(MultiresModifierData)); + mmd.lvl = lvl; + mmd.sculptlvl = lvl; + mmd.renderlvl = lvl; + mmd.totlvl = totlvl; + mmd.simple = simple; - if(mmd->totlvl > multires_max_levels) - mmd->totlvl = multires_max_levels; - if(mmd->lvl > multires_max_levels) - mmd->lvl = multires_max_levels; + return multires_dm_create_from_derived(&mmd, 1, dm, ob, 0, 0); +} - multires_force_update(ob); +static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple) +{ + SubsurfModifierData smd; - mmd->lvl = mmd->totlvl; - mmd->totlvl += distance; + memset(&smd, 0, sizeof(SubsurfModifierData)); + smd.levels = smd.renderLevels = lvl; + smd.flags |= eSubsurfModifierFlag_SubsurfUv; + if(simple) + smd.subdivType = ME_SIMPLE_SUBSURF; - mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); - if(!mdisps) - mdisps = CustomData_add_layer(&me->fdata, CD_MDISPS, CD_DEFAULT, NULL, me->totface); + return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0); +} - if(mdisps->disps && !updateblock && mmd->totlvl > 2) { - DerivedMesh *orig, *mrdm; - MultiresModifierData mmd_sub; - - orig = CDDM_from_mesh(me, NULL); - memset(&mmd_sub, 0, sizeof(MultiresModifierData)); - mmd_sub.lvl = mmd_sub.totlvl = mmd->lvl; - mmd_sub.simple = simple; - mrdm = multires_dm_create_from_derived(&mmd_sub, 1, orig, ob, 0, 0); - totsubvert = mrdm->getNumVerts(mrdm); - totsubedge = mrdm->getNumEdges(mrdm); - totsubface = mrdm->getNumFaces(mrdm); - orig->needsFree = 1; - orig->release(orig); - - final = multires_subdisp_pre(mrdm, distance, simple); - mrdm->needsFree = 1; - mrdm->release(mrdm); - } +static void multires_reallocate_mdisps(Mesh *me, MDisps *mdisps, int lvl) +{ + int i; + /* reallocate displacements to be filled in */ for(i = 0; i < me->totface; ++i) { - const int totdisp = multires_quad_tot[mmd->totlvl - 1]; + int nvert = (me->mface[i].v4)? 4: 3; + int totdisp = multires_grid_tot[lvl]*nvert; float (*disps)[3] = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); if(mdisps[i].disps) @@ -493,732 +330,353 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int dista mdisps[i].disps = disps; mdisps[i].totdisp = totdisp; } - - - if(final) { - DerivedMesh *orig; - - orig = CDDM_from_mesh(me, NULL); - - multires_subdisp(orig, ob, final, mmd->lvl, mmd->totlvl, totsubvert, totsubedge, totsubface, 0); - - orig->needsFree = 1; - orig->release(orig); - } - - mmd->lvl = mmd->totlvl; } -typedef struct DisplacerEdges { - /* DerivedMesh index at the start of each edge (using face x/y directions to define the start) */ - int base[4]; - /* 1 if edge moves in the positive x or y direction, -1 otherwise */ - int dir[4]; -} DisplacerEdges; - -typedef struct DisplacerSpill { - /* Index of face (in base mesh), -1 for none */ - int face; - - /* Spill flag */ - /* 1 = Negative variable axis */ - /* 2 = Near fixed axis */ - /* 4 = Flip axes */ - int f; - - /* Neighboring edges */ - DisplacerEdges edges; -} DisplacerSpill; - -typedef struct MultiresDisplacer { - Mesh *me; - MDisps *grid; - MFace *face; - - int dm_first_base_vert_index; - - int spacing; - int sidetot, interior_st, disp_st; - int sidendx; - int type; - int invert; - MVert *subco; - int subco_index, face_index; - float weight; - - /* Valence for each corner */ - int valence[4]; - - /* Neighboring edges for current face */ - DisplacerEdges edges_primary; - - /* Neighboring faces */ - DisplacerSpill spill_x, spill_y; - - int *face_offsets; - - int x, y, ax, ay; -} MultiresDisplacer; - -static int mface_v(MFace *f, int v) +void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updateblock, int simple) { - return v == 0 ? f->v1 : v == 1 ? f->v2 : v == 2 ? f->v3 : v == 3 ? f->v4 : -1; -} + Mesh *me = ob->data; + MDisps *mdisps; + int lvl= mmd->totlvl; + int totlvl= mmd->totlvl+1; -/* Get the edges (and their directions) */ -static void find_displacer_edges(MultiresDisplacer *d, DerivedMesh *dm, DisplacerEdges *de, MFace *f) -{ - ListBase *emap = MultiresDM_get_vert_edge_map(dm); - IndexNode *n; - int i, end = f->v4 ? 4 : 3; - int offset = dm->getNumVerts(dm) - d->me->totvert - d->me->totedge * d->interior_st; + if(totlvl > multires_max_levels) + return; - for(i = 0; i < end; ++i) { - int vcur = mface_v(f, i); - int vnext = mface_v(f, i == end - 1 ? 0 : i + 1); + multires_force_update(ob); - de->dir[i] = 1; - - for(n = emap[vcur].first; n; n = n->next) { - MEdge *e = &d->me->medge[n->index]; - - if(e->v1 == vnext || e->v2 == vnext) { - de->base[i] = n->index * d->interior_st; - if(((i == 0 || i == 1) && e->v1 == vnext) || - ((i == 2 || i == 3) && e->v2 == vnext)) { - de->dir[i] = -1; - de->base[i] += d->interior_st - 1; - } - de->base[i] += offset; - break; - } - } - } -} + mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); + if(!mdisps) + mdisps = CustomData_add_layer(&me->fdata, CD_MDISPS, CD_DEFAULT, NULL, me->totface); -/* Returns in out the corners [0-3] that use v1 and v2 */ -static void find_face_corners(MFace *f, int v1, int v2, int out[2]) -{ - int i, end = f->v4 ? 4 : 3; - - for(i = 0; i < end; ++i) { - int corner = mface_v(f, i); - if(corner == v1) - out[0] = i; - if(corner == v2) - out[1] = i; - } -} + if(mdisps->disps && !updateblock && totlvl > 1) { + /* upsample */ + DerivedMesh *lowdm, *cddm, *highdm; + DMGridData **highGridData, **lowGridData, **subGridData; + CCGSubSurf *ss; + int i, numGrids, highGridSize, lowGridSize; + + /* create subsurf DM from original mesh at high level */ + cddm = CDDM_from_mesh(me, NULL); + highdm = subsurf_dm_create_local(ob, cddm, totlvl, simple); + + /* create multires DM from original mesh at low level */ + lowdm = multires_dm_create_local(ob, cddm, lvl, lvl, simple); + cddm->release(cddm); + + /* copy subsurf grids and replace them with low displaced grids */ + numGrids = highdm->getNumGrids(highdm); + highGridSize = highdm->getGridSize(highdm); + highGridData = highdm->getGridData(highdm); + lowGridSize = lowdm->getGridSize(lowdm); + lowGridData = lowdm->getGridData(lowdm); + + subGridData = MEM_callocN(sizeof(float*)*numGrids, "subGridData*"); + + for(i = 0; i < numGrids; ++i) { + /* backup subsurf grids */ + subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData"); + memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize); + + /* overwrite with current displaced grids */ + multires_copy_dm_grid(highGridData[i], lowGridData[i], highGridSize, lowGridSize); + } -static void multires_displacer_get_spill_faces(MultiresDisplacer *d, DerivedMesh *dm, MFace *mface) -{ - ListBase *map = MultiresDM_get_vert_face_map(dm); - IndexNode *n1, *n2; - int v4 = d->face->v4 ? d->face->v4 : d->face->v1; - int crn[2], lv; + /* low lower level dm no longer needed at this point */ + lowdm->release(lowdm); - memset(&d->spill_x, 0, sizeof(DisplacerSpill)); - memset(&d->spill_y, 0, sizeof(DisplacerSpill)); - d->spill_x.face = d->spill_y.face = -1; + /* subsurf higher levels again with displaced data */ + ss= ((CCGDerivedMesh*)highdm)->ss; + ccgSubSurf_updateFromFaces(ss, lvl, NULL, 0); + ccgSubSurf_updateLevels(ss, lvl, NULL, 0); - for(n1 = map[d->face->v3].first; n1; n1 = n1->next) { - if(n1->index == d->face_index) - continue; + /* reallocate displacements */ + multires_reallocate_mdisps(me, mdisps, totlvl); - for(n2 = map[d->face->v2].first; n2; n2 = n2->next) { - if(n1->index == n2->index) - d->spill_x.face = n1->index; - } - for(n2 = map[v4].first; n2; n2 = n2->next) { - if(n1->index == n2->index) - d->spill_y.face = n1->index; - } - } + /* compute displacements */ + multiresModifier_disp_run(highdm, me, 1, 0, subGridData, totlvl); - if(d->spill_x.face != -1) { - /* Neighbor of v2/v3 found, find flip and orientation */ - find_face_corners(&mface[d->spill_x.face], d->face->v2, d->face->v3, crn); - lv = mface[d->spill_x.face].v4 ? 3 : 2; - - if(crn[0] == 0 && crn[1] == lv) - d->spill_x.f = 0+2+0; - else if(crn[0] == lv && crn[1] == 0) - d->spill_x.f = 1+2+0; - else if(crn[0] == 1 && crn[1] == 0) - d->spill_x.f = 1+2+4; - else if(crn[0] == 0 && crn[1] == 1) - d->spill_x.f = 0+2+4; - else if(crn[0] == 2 && crn[1] == 1) - d->spill_x.f = 1+0+0; - else if(crn[0] == 1 && crn[1] == 2) - d->spill_x.f = 0+0+0; - else if(crn[0] == 3 && crn[1] == 2) - d->spill_x.f = 0+0+4; - else if(crn[0] == 2 && crn[1] == 3) - d->spill_x.f = 1+0+4; - - find_displacer_edges(d, dm, &d->spill_x.edges, &mface[d->spill_x.face]); + /* free */ + highdm->release(highdm); + for(i = 0; i < numGrids; ++i) + MEM_freeN(subGridData[i]); + MEM_freeN(subGridData); } - - if(d->spill_y.face != -1) { - /* Neighbor of v3/v4 found, find flip and orientation */ - find_face_corners(&mface[d->spill_y.face], d->face->v3, v4, crn); - lv = mface[d->spill_y.face].v4 ? 3 : 2; - - if(crn[0] == 1 && crn[1] == 0) - d->spill_y.f = 1+2+0; - else if(crn[0] == 0 && crn[1] == 1) - d->spill_y.f = 0+2+0; - else if(crn[0] == 2 && crn[1] == 1) - d->spill_y.f = 1+0+4; - else if(crn[0] == 1 && crn[1] == 2) - d->spill_y.f = 0+0+4; - else if(crn[0] == 3 && crn[1] == 2) - d->spill_y.f = 0+0+0; - else if(crn[0] == 2 && crn[1] == 3) - d->spill_y.f = 1+0+0; - else if(crn[0] == 0 && crn[1] == lv) - d->spill_y.f = 0+2+4; - else if(crn[0] == lv && crn[1] == 0) - d->spill_y.f = 1+2+4; - - find_displacer_edges(d, dm, &d->spill_y.edges, &mface[d->spill_y.face]); + else { + /* only reallocate, nothing to upsample */ + multires_reallocate_mdisps(me, mdisps, totlvl); } -} - -static void find_corner_valences(MultiresDisplacer *d, DerivedMesh *dm) -{ - int i; - - d->valence[3] = -1; - /* Set the vertex valence for the corners */ - for(i = 0; i < (d->face->v4 ? 4 : 3); ++i) - d->valence[i] = BLI_countlist(&MultiresDM_get_vert_edge_map(dm)[mface_v(d->face, i)]); + multires_set_tot_level(ob, mmd, totlvl); } -static void multires_displacer_init(MultiresDisplacer *d, DerivedMesh *dm, - const int face_index, const int invert) +static void grid_adjacent_rotate(int rotation, int gridSize, int *x, int *y) { - Mesh *me = MultiresDM_get_mesh(dm); - - d->me = me; - d->face = me->mface + face_index; - d->face_index = face_index; - d->face_offsets = MultiresDM_get_face_offsets(dm); - /* Get the multires grid from customdata */ - d->grid = CustomData_get_layer(&me->fdata, CD_MDISPS); - if(d->grid) - d->grid += face_index; - - d->spacing = pow(2, MultiresDM_get_totlvl(dm) - MultiresDM_get_lvl(dm)); - d->sidetot = multires_side_tot[MultiresDM_get_lvl(dm) - 1]; - d->interior_st = d->sidetot - 2; - d->disp_st = multires_side_tot[MultiresDM_get_totlvl(dm) - 1]; - d->invert = invert; - - multires_displacer_get_spill_faces(d, dm, me->mface); - find_displacer_edges(d, dm, &d->edges_primary, d->face); - find_corner_valences(d, dm); - - d->dm_first_base_vert_index = dm->getNumVerts(dm) - me->totvert; -} + /* we rotate (rotation * 90°) counterclockwise around center */ + int nx, ny; + + switch(rotation) { + case 0: nx = *x; ny = *y; break; + case 1: nx = *y; ny = *x; break; + case 2: nx = *x; ny = *y; break; //gridSize - 1 - *x; ny = gridSize - 1 - *y; break; + case 3: nx = *y; ny = *x; break; + } -static void multires_displacer_weight(MultiresDisplacer *d, const float w) -{ - d->weight = w; + *x = nx; + *y = ny; } -static void multires_displacer_anchor(MultiresDisplacer *d, const int type, const int side_index) +static void grid_adjacent_jump(DMGridAdjacency *adj, int gridSize, int *index, int *x, int *y) { - d->sidendx = side_index; - d->x = d->y = d->sidetot / 2; - d->type = type; - - if(type == 2) { - if(side_index == 0) - d->y -= 1; - else if(side_index == 1) - d->x += 1; - else if(side_index == 2) - d->y += 1; - else if(side_index == 3) - d->x -= 1; - } - else if(type == 3) { - if(side_index == 0) { - d->x -= 1; - d->y -= 1; + if(*x < 0) { + if(adj->index[3] == -1) { + /* no adjacent grid, clamp */ + *x = 0; } - else if(side_index == 1) { - d->x += 1; - d->y -= 1; + else { + /* jump to adjacent grid */ + *index = adj->index[3]; + *x += gridSize; + grid_adjacent_rotate(adj->rotation[3], gridSize, x, y); } - else if(side_index == 2) { - d->x += 1; - d->y += 1; + } + else if(*x >= gridSize) { + if(adj->index[1] == -1) { + /* no adjacent grid, take a step back */ + *x = gridSize - 1; } - else if(side_index == 3) { - d->x -= 1; - d->y += 1; + else { + /* jump to adjacent grid */ + *index = adj->index[1]; + *x -= gridSize; + grid_adjacent_rotate(adj->rotation[1], gridSize, x, y); } } - - d->ax = d->x; - d->ay = d->y; -} - -static void multires_displacer_anchor_edge(MultiresDisplacer *d, int v1, int v2, int x) -{ - d->type = 4; - - if(v1 == d->face->v1) { - d->x = 0; - d->y = 0; - if(v2 == d->face->v2) - d->x += x; - else if(v2 == d->face->v3) { - if(x < d->sidetot / 2) - d->y = x; - else { - d->x = x; - d->y = d->sidetot - 1; - } + else if(*y < 0) { + if(adj->index[0] == -1) { + /* no adjacent grid, clamp */ + *y = 0; } - else - d->y += x; - } - else if(v1 == d->face->v2) { - d->x = d->sidetot - 1; - d->y = 0; - if(v2 == d->face->v1) - d->x -= x; - else - d->y += x; - } - else if(v1 == d->face->v3) { - d->x = d->sidetot - 1; - d->y = d->sidetot - 1; - if(v2 == d->face->v2) - d->y -= x; - else if(v2 == d->face->v1) { - if(x < d->sidetot / 2) - d->x -= x; - else { - d->x = 0; - d->y -= x; - } + else { + /* jump to adjacent grid */ + *index = adj->index[0]; + *y += gridSize; + grid_adjacent_rotate(adj->rotation[0], gridSize, x, y); } - else - d->x -= x; } - else if(v1 == d->face->v4) { - d->x = 0; - d->y = d->sidetot - 1; - if(v2 == d->face->v3) - d->x += x; - else - d->y -= x; + else if(*y >= gridSize) { + if(adj->index[2] == -1) { + /* no adjacent grid, take a step back */ + *y = gridSize - 1; + } + else { + /* jump to adjacent grid */ + *index = adj->index[2]; + *y -= gridSize; + grid_adjacent_rotate(adj->rotation[2], gridSize, x, y); + } } } -static void multires_displacer_anchor_vert(MultiresDisplacer *d, const int v) -{ - const int e = d->sidetot - 1; - - d->type = 5; - - d->x = d->y = 0; - if(v == d->face->v2) - d->x = e; - else if(v == d->face->v3) - d->x = d->y = e; - else if(v == d->face->v4) - d->y = e; -} - -static void multires_displacer_jump(MultiresDisplacer *d) +static void grid_tangent(DMGridAdjacency *adj, int gridSize, int index, int x, int y, int axis, DMGridData **gridData, float t[3]) { - if(d->sidendx == 0) { - d->x -= 1; - d->y = d->ay; - } - else if(d->sidendx == 1) { - d->x = d->ax; - d->y -= 1; - } - else if(d->sidendx == 2) { - d->x += 1; - d->y = d->ay; - } - else if(d->sidendx == 3) { - d->x = d->ax; - d->y += 1; + int jindex = index, jx = x, jy = y; + + if(axis == 0) { + if(adj->index[1] == -1 && x == gridSize - 1) { + if(adj->index[2] == -1 && y == gridSize - 1) + sub_v3_v3v3(t, gridData[index][x + gridSize*(y - 1)].co, gridData[index][x - 1 + gridSize*(y - 1)].co); + else + sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x - 1 + gridSize*y].co); + } + else { + jx += 1; + grid_adjacent_jump(adj, gridSize, &jindex, &jx, &jy); + sub_v3_v3v3(t, gridData[jindex][jx + gridSize*jy].co, gridData[index][x + gridSize*y].co); + } } -} - -/* Treating v1 as (0,0) and v3 as (st-1,st-1), - returns the index of the vertex at (x,y). - If x or y is >= st, wraps over to the adjacent face, - or if there is no adjacent face, returns -2. */ -static int multires_index_at_loc(int face_index, int x, int y, MultiresDisplacer *d, DisplacerEdges *de) -{ - int coord_edge = d->sidetot - 1; /* Max value of x/y at edge of grid */ - int mid = d->sidetot / 2; - int lim = mid - 1; - int qtot = lim * lim; - int base = d->face_offsets[face_index]; - - /* Edge spillover */ - if(x == d->sidetot || y == d->sidetot) { - int flags, v_axis, f_axis, lx, ly; - - if(x == d->sidetot && d->spill_x.face != -1) { - flags = d->spill_x.f; - - /* Handle triangle seam between v1 and v3 */ - if(!d->me->mface[d->spill_x.face].v4 && - ((flags == 2 && y >= mid) || (flags == 3 && y < mid))) - flags += 2; - - v_axis = (flags & 1) ? d->sidetot - 1 - y : y; - f_axis = (flags & 2) ? 1 : d->sidetot - 2; - lx = f_axis, ly = v_axis; - - if(flags & 4) { - lx = v_axis; - ly = f_axis; + else if(axis == 1) { + if(adj->index[2] == -1 && y == gridSize - 1) { + if(adj->index[1] == -1 && x == gridSize - 1) { + sub_v3_v3v3(t, gridData[index][x - 1 + gridSize*y].co, gridData[index][x - 1 + gridSize*(y - 1)].co); } - - return multires_index_at_loc(d->spill_x.face, lx, ly, d, &d->spill_x.edges); - } - else if(y == d->sidetot && d->spill_y.face != -1) { - flags = d->spill_y.f; - - /* Handle triangle seam between v1 and v3 */ - if(!d->me->mface[d->spill_y.face].v4 && - ((flags == 6 && x >= mid) || (flags == 7 && x < mid))) - flags = ~flags; - - v_axis = (flags & 1) ? x : d->sidetot - 1 - x; - f_axis = (flags & 2) ? 1 : d->sidetot - 2; - lx = v_axis, ly = f_axis; - - if(flags & 4) { - lx = f_axis; - ly = v_axis; + else { + sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x + gridSize*(y - 1)].co); } - - return multires_index_at_loc(d->spill_y.face, lx, ly, d, &d->spill_y.edges); } - else - return -2; - } - /* Corners */ - else if(x == 0 && y == 0) - return d->dm_first_base_vert_index + d->face->v1; - else if(x == coord_edge && y == 0) - return d->dm_first_base_vert_index + d->face->v2; - else if(x == coord_edge && y == coord_edge) - return d->dm_first_base_vert_index + d->face->v3; - else if(x == 0 && y == coord_edge) - return d->dm_first_base_vert_index + d->face->v4; - /* Edges */ - else if(x == 0) { - if(d->face->v4) - return de->base[3] + de->dir[3] * (y - 1); - else - return de->base[2] + de->dir[2] * (y - 1); - } - else if(y == 0) - return de->base[0] + de->dir[0] * (x - 1); - else if(x == d->sidetot - 1) - return de->base[1] + de->dir[1] * (y - 1); - else if(y == d->sidetot - 1) - return de->base[2] + de->dir[2] * (x - 1); - /* Face center */ - else if(x == mid && y == mid) - return base; - /* Cross */ - else if(x == mid && y < mid) - return base + (mid - y); - else if(y == mid && x > mid) - return base + lim + (x - mid); - else if(x == mid && y > mid) - return base + lim*2 + (y - mid); - else if(y == mid && x < mid) { - if(d->face->v4) - return base + lim*3 + (mid - x); - else - return base + lim*2 + (mid - x); - } - /* Quarters */ - else { - int offset = base + lim * (d->face->v4 ? 4 : 3); - if(x < mid && y < mid) - return offset + ((mid - x - 1)*lim + (mid - y)); - else if(x > mid && y < mid) - return offset + qtot + ((mid - y - 1)*lim + (x - mid)); - else if(x > mid && y > mid) - return offset + qtot*2 + ((x - mid - 1)*lim + (y - mid)); - else if(x < mid && y > mid) - return offset + qtot*3 + ((y - mid - 1)*lim + (mid - x)); - } - - return -1; -} - -/* Calculate the TS matrix used for applying displacements. - Uses the undisplaced subdivided mesh's curvature to find a - smoothly normal and tangents. */ -static void calc_disp_mat(MultiresDisplacer *d, float mat[3][3]) -{ - int u = multires_index_at_loc(d->face_index, d->x + 1, d->y, d, &d->edges_primary); - int v = multires_index_at_loc(d->face_index, d->x, d->y + 1, d, &d->edges_primary); - float norm[3], t1[3], t2[3], inv[3][3]; - MVert *base = d->subco + d->subco_index; - - //printf("f=%d, x=%d, y=%d, i=%d, u=%d, v=%d ", d->face_index, d->x, d->y, d->subco_index, u, v); - - norm[0] = base->no[0] / 32767.0f; - norm[1] = base->no[1] / 32767.0f; - norm[2] = base->no[2] / 32767.0f; - - /* Special handling for vertices of valence 3 */ - if(d->valence[1] == 3 && d->x == d->sidetot - 1 && d->y == 0) - u = -1; - else if(d->valence[2] == 3 && d->x == d->sidetot - 1 && d->y == d->sidetot - 1) - u = v = -1; - else if(d->valence[3] == 3 && d->x == 0 && d->y == d->sidetot - 1) - v = -1; - - /* If either u or v is -2, it's on a boundary. In this - case, back up by one row/column and use the same - vector as the preceeding sub-edge. */ - - if(u < 0) { - u = multires_index_at_loc(d->face_index, d->x - 1, d->y, d, &d->edges_primary); - sub_v3_v3v3(t1, base->co, d->subco[u].co); - } - else - sub_v3_v3v3(t1, d->subco[u].co, base->co); - - if(v < 0) { - v = multires_index_at_loc(d->face_index, d->x, d->y - 1, d, &d->edges_primary); - sub_v3_v3v3(t2, base->co, d->subco[v].co); - } - else - sub_v3_v3v3(t2, d->subco[v].co, base->co); - - //printf("uu=%d, vv=%d\n", u, v); - - normalize_v3(t1); - normalize_v3(t2); - Mat3FromColVecs(mat, t1, t2, norm); - - if(d->invert) { - invert_m3_m3(inv, mat); - copy_m3_m3(mat, inv); + else { + jy += 1; + grid_adjacent_jump(adj, gridSize, &jindex, &jx, &jy); + sub_v3_v3v3(t, gridData[jindex][jx + gridSize*jy].co, gridData[index][x + gridSize*y].co); + } } } -static void multires_displace(MultiresDisplacer *d, float co[3]) +static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl) { - float disp[3], mat[3][3]; - float *data; - MVert *subco = &d->subco[d->subco_index]; - - if(!d->grid || !d->grid->disps) return; - - data = d->grid->disps[(d->y * d->spacing) * d->disp_st + (d->x * d->spacing)]; - - if(d->invert) - sub_v3_v3v3(disp, co, subco->co); - else - copy_v3_v3(disp, data); - - - /* Apply ts matrix to displacement */ - calc_disp_mat(d, mat); - mul_m3_v3(mat, disp); - - if(d->invert) { - copy_v3_v3(data, disp); - - } - else { - if(d->type == 4 || d->type == 5) - mul_v3_fl(disp, d->weight); - add_v3_v3v3(co, co, disp); - } + CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; + DMGridData **gridData, **subGridData; + DMGridAdjacency *gridAdjacency; + MFace *mface = me->mface; + MDisps *mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); + int i, S, x, y, numGrids, gIndex, gridSize, dGridSize, dSkip; - if(d->type == 2) { - if(d->sidendx == 0) - d->y -= 1; - else if(d->sidendx == 1) - d->x += 1; - else if(d->sidendx == 2) - d->y += 1; - else if(d->sidendx == 3) - d->x -= 1; - } - else if(d->type == 3) { - if(d->sidendx == 0) - d->y -= 1; - else if(d->sidendx == 1) - d->x += 1; - else if(d->sidendx == 2) - d->y += 1; - else if(d->sidendx == 3) - d->x -= 1; - } -} + numGrids = dm->getNumGrids(dm); + gridSize = dm->getGridSize(dm); + gridData = dm->getGridData(dm); + gridAdjacency = dm->getGridAdjacency(dm); + subGridData = (oldGridData)? oldGridData: gridData; -static void multiresModifier_disp_run(DerivedMesh *dm, MVert *subco, int invert) -{ - const int lvl = MultiresDM_get_lvl(dm); - const int gridFaces = multires_side_tot[lvl - 2] - 1; - const int edgeSize = multires_side_tot[lvl - 1] - 1; - MVert *mvert = CDDM_get_verts(dm); - MEdge *medge = MultiresDM_get_mesh(dm)->medge; - MFace *mface = MultiresDM_get_mesh(dm)->mface; - ListBase *map = MultiresDM_get_vert_face_map(dm); - Mesh *me = MultiresDM_get_mesh(dm); - MultiresDisplacer d; - int i, S, x, y; - - d.subco = subco; - d.subco_index = 0; + dGridSize = multires_side_tot[totlvl]; + dSkip = (dGridSize-1)/(gridSize-1); - for(i = 0; i < me->totface; ++i) { + for(gIndex = 0, i = 0; i < me->totface; ++i) { const int numVerts = mface[i].v4 ? 4 : 3; - - /* Center */ - multires_displacer_init(&d, dm, i, invert); - multires_displacer_anchor(&d, 1, 0); - multires_displace(&d, mvert->co); - ++mvert; - ++d.subco_index; - - /* Cross */ - for(S = 0; S < numVerts; ++S) { - multires_displacer_anchor(&d, 2, S); - for(x = 1; x < gridFaces; ++x) { - multires_displace(&d, mvert->co); - ++mvert; - ++d.subco_index; - } - } - - /* Quarters */ - for(S = 0; S < numVerts; S++) { - multires_displacer_anchor(&d, 3, S); - for(y = 1; y < gridFaces; y++) { - for(x = 1; x < gridFaces; x++) { - multires_displace(&d, mvert->co); - ++mvert; - ++d.subco_index; - } - multires_displacer_jump(&d); - } - } - } - - for(i = 0; i < me->totedge; ++i) { - const MEdge *e = &medge[i]; - for(x = 1; x < edgeSize; ++x) { - IndexNode *n1, *n2; - int numFaces = 0; - for(n1 = map[e->v1].first; n1; n1 = n1->next) { - for(n2 = map[e->v2].first; n2; n2 = n2->next) { - if(n1->index == n2->index) - ++numFaces; - } - } - multires_displacer_weight(&d, 1.0f / numFaces); - /* TODO: Better to have these loops outside the x loop */ - for(n1 = map[e->v1].first; n1; n1 = n1->next) { - for(n2 = map[e->v2].first; n2; n2 = n2->next) { - if(n1->index == n2->index) { - multires_displacer_init(&d, dm, n1->index, invert); - multires_displacer_anchor_edge(&d, e->v1, e->v2, x); - multires_displace(&d, mvert->co); + MDisps *mdisp = &mdisps[i]; + + for(S = 0; S < numVerts; ++S, ++gIndex) { + DMGridData *grid = gridData[gIndex]; + DMGridData *subgrid = subGridData[gIndex]; + DMGridAdjacency *adj = &gridAdjacency[gIndex]; + float (*dispgrid)[3] = &mdisp->disps[S*dGridSize*dGridSize]; + + for(y = 0; y < gridSize; y++) { + for(x = 0; x < gridSize; x++) { + float *co = grid[x + y*gridSize].co; + float *sco = subgrid[x + y*gridSize].co; + float *no = subgrid[x + y*gridSize].no; + float *data = dispgrid[dGridSize*y*dSkip + x*dSkip]; + float mat[3][3], tx[3], ty[3], disp[3], d[3]; + + /* construct tangent space matrix */ + grid_tangent(adj, gridSize, gIndex, x, y, 0, subGridData, tx); + normalize_v3(tx); + + grid_tangent(adj, gridSize, gIndex, x, y, 1, subGridData, ty); + normalize_v3(ty); + + column_vectors_to_mat3(mat, tx, ty, no); + + if(!invert) { + /* convert to object space and add */ + mul_v3_m3v3(disp, mat, data); + add_v3_v3v3(co, sco, disp); + } + else if(!add) { + /* convert difference to tangent space */ + sub_v3_v3v3(disp, co, sco); + invert_m3(mat); + mul_v3_m3v3(data, mat, disp); + } + else { + /* convert difference to tangent space */ + invert_m3(mat); + mul_v3_m3v3(d, mat, co); + add_v3_v3(data, d); } } } - ++mvert; - ++d.subco_index; - } - } - - for(i = 0; i < me->totvert; ++i) { - IndexNode *n; - multires_displacer_weight(&d, 1.0f / BLI_countlist(&map[i])); - for(n = map[i].first; n; n = n->next) { - multires_displacer_init(&d, dm, n->index, invert); - multires_displacer_anchor_vert(&d, i); - multires_displace(&d, mvert->co); } - ++mvert; - ++d.subco_index; } - if(!invert) - CDDM_calc_normals(dm); + if(!invert) { + ccgSubSurf_stitchFaces(ccgdm->ss, 0, NULL, 0); + ccgSubSurf_updateNormals(ccgdm->ss, NULL, 0); + } } static void multiresModifier_update(DerivedMesh *dm) { + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; Object *ob; Mesh *me; MDisps *mdisps; + MultiresModifierData *mmd; - ob = MultiresDM_get_object(dm); - me = MultiresDM_get_mesh(dm); + ob = ccgdm->multires.ob; + me = ccgdm->multires.ob->data; + mmd = ccgdm->multires.mmd; + // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); if(mdisps) { - const int lvl = MultiresDM_get_lvl(dm); - const int totlvl = MultiresDM_get_totlvl(dm); + int lvl = ccgdm->multires.lvl; + int totlvl = ccgdm->multires.totlvl; if(lvl < totlvl) { - /* Propagate disps upwards */ - DerivedMesh *final, *subco_dm, *orig; - MVert *verts_new = NULL, *cur_lvl_orig_verts = NULL; - MultiresModifierData mmd; - int i; - - orig = CDDM_from_mesh(me, NULL); - - /* Regenerate the current level's vertex coordinates - (includes older displacements but not new sculpts) */ - mmd.totlvl = totlvl; - mmd.lvl = lvl; - subco_dm = multires_dm_create_from_derived(&mmd, 1, orig, ob, 0, 0); - cur_lvl_orig_verts = CDDM_get_verts(subco_dm); - - /* Subtract the original vertex cos from the new vertex cos */ - verts_new = CDDM_get_verts(dm); - for(i = 0; i < dm->getNumVerts(dm); ++i) - sub_v3_v3v3(verts_new[i].co, verts_new[i].co, cur_lvl_orig_verts[i].co); - - final = multires_subdisp_pre(dm, totlvl - lvl, 0); - - multires_subdisp(orig, ob, final, lvl, totlvl, dm->getNumVerts(dm), dm->getNumEdges(dm), - dm->getNumFaces(dm), 1); - - subco_dm->release(subco_dm); - orig->release(orig); + Mesh *me = ob->data; + DerivedMesh *lowdm, *cddm, *highdm; + DMGridData **highGridData, **lowGridData, **subGridData, **gridData, *diffGrid; + CCGSubSurf *ss; + int i, j, numGrids, highGridSize, lowGridSize; + + /* create subsurf DM from original mesh at high level */ + cddm = CDDM_from_mesh(me, NULL); + highdm = subsurf_dm_create_local(ob, cddm, totlvl, mmd->simple); + + /* create multires DM from original mesh and displacements */ + lowdm = multires_dm_create_local(ob, cddm, lvl, totlvl, mmd->simple); + cddm->release(cddm); + + /* gather grid data */ + numGrids = highdm->getNumGrids(highdm); + highGridSize = highdm->getGridSize(highdm); + highGridData = highdm->getGridData(highdm); + lowGridSize = lowdm->getGridSize(lowdm); + lowGridData = lowdm->getGridData(lowdm); + gridData = dm->getGridData(dm); + + subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, "subGridData*"); + diffGrid = MEM_callocN(sizeof(DMGridData)*lowGridSize*lowGridSize, "diff"); + + for(i = 0; i < numGrids; ++i) { + /* backup subsurf grids */ + subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData"); + memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize); + + /* write difference of subsurf and displaced low level into high subsurf */ + for(j = 0; j < lowGridSize*lowGridSize; ++j) + sub_v3_v3v3(diffGrid[j].co, gridData[i][j].co, lowGridData[i][j].co); + + multires_copy_dm_grid(highGridData[i], diffGrid, highGridSize, lowGridSize); + } + + /* lower level dm no longer needed at this point */ + MEM_freeN(diffGrid); + lowdm->release(lowdm); + + /* subsurf higher levels again with difference of coordinates */ + ss= ((CCGDerivedMesh*)highdm)->ss; + ccgSubSurf_updateFromFaces(ss, lvl, NULL, 0); + ccgSubSurf_updateLevels(ss, lvl, NULL, 0); + + /* add to displacements */ + multiresModifier_disp_run(highdm, me, 1, 1, subGridData, mmd->totlvl); + + /* free */ + highdm->release(highdm); + for(i = 0; i < numGrids; ++i) + MEM_freeN(subGridData[i]); + MEM_freeN(subGridData); + } + else { + DerivedMesh *cddm, *subdm; + + cddm = CDDM_from_mesh(me, NULL); + subdm = subsurf_dm_create_local(ob, cddm, mmd->totlvl, mmd->simple); + cddm->release(cddm); + + multiresModifier_disp_run(dm, me, 1, 0, subdm->getGridData(subdm), mmd->totlvl); + + subdm->release(subdm); } - else - multiresModifier_disp_run(dm, MultiresDM_get_subco(dm), 1); } } void multires_mark_as_modified(struct Object *ob) { if(ob && ob->derivedFinal) { - MultiresDM_mark_as_modified(ob->derivedFinal); + CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)ob->derivedFinal; + ccgdm->multires.modified = 1; } } @@ -1234,24 +692,47 @@ void multires_force_update(Object *ob) struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob, int useRenderParams, int isFinalCalc) { - SubsurfModifierData smd; - MultiresSubsurf ms; + //Mesh *me= ob->data; DerivedMesh *result; - int i; + CCGDerivedMesh *ccgdm; + DMGridData **gridData, **subGridData; + int lvl= multires_get_level(ob, mmd, useRenderParams); + int i, gridSize, numGrids; + + if(lvl == 0) + return dm; + + result = subsurf_dm_create_local(ob, dm, lvl, 0); + + if(!local_mmd) { + ccgdm = (CCGDerivedMesh*)result; + + ccgdm->multires.ob = ob; + ccgdm->multires.mmd = mmd; + ccgdm->multires.local_mmd = local_mmd; + ccgdm->multires.lvl = lvl; + ccgdm->multires.totlvl = mmd->totlvl; + ccgdm->multires.modified = 0; + ccgdm->multires.update = multiresModifier_update; + } - ms.mmd = mmd; - ms.ob = ob; - ms.local_mmd = local_mmd; + numGrids = result->getNumGrids(result); + gridSize = result->getGridSize(result); + gridData = result->getGridData(result); - memset(&smd, 0, sizeof(SubsurfModifierData)); - smd.levels = smd.renderLevels = mmd->lvl - 1; - smd.flags |= eSubsurfModifierFlag_SubsurfUv; + subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, "subGridData*"); - result = NULL; // XXX subsurf_make_derived_from_derived_with_multires(dm, &smd, &ms, useRenderParams, NULL, isFinalCalc, 0); - for(i = 0; i < result->getNumVerts(result); ++i) - MultiresDM_get_subco(result)[i] = CDDM_get_verts(result)[i]; - multiresModifier_disp_run(result, MultiresDM_get_subco(result), 0); - MultiresDM_set_update(result, multiresModifier_update); + for(i = 0; i < numGrids; i++) { + subGridData[i] = MEM_callocN(sizeof(DMGridData)*gridSize*gridSize, "subGridData"); + memcpy(subGridData[i], gridData[i], sizeof(DMGridData)*gridSize*gridSize); + } + + // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + multiresModifier_disp_run(result, ob->data, 0, 0, subGridData, mmd->totlvl); + + for(i = 0; i < numGrids; i++) + MEM_freeN(subGridData[i]); + MEM_freeN(subGridData); return result; } @@ -1425,9 +906,9 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) MultiresLevel *lvl, *lvl1; MVert *vsrc, *vdst; int src, dst; - int totlvl = MultiresDM_get_totlvl(dm); - int st = multires_side_tot[totlvl - 2] - 1; - int extedgelen = multires_side_tot[totlvl - 1] - 2; + int totlvl = 2; // XXX MultiresDM_get_totlvl(dm); + int st = multires_side_tot[totlvl - 1] - 1; + int extedgelen = multires_side_tot[totlvl] - 2; int *vvmap; // inorder for dst, map to src int crossedgelen; int i, j, s, x, totvert, tottri, totquad; @@ -1454,9 +935,9 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) lvl = lvl1->next; for(j = 2; j <= mr->level_count; ++j) { - int base = multires_side_tot[totlvl - j] - 2; - int skip = multires_side_tot[totlvl - j + 1] - 1; - int st = multires_side_tot[j - 2] - 1; + int base = multires_side_tot[totlvl - j + 1] - 2; + int skip = multires_side_tot[totlvl - j + 2] - 1; + int st = multires_side_tot[j - 1] - 1; for(x = 0; x < st; ++x) vvmap[ldst + base + x * skip] = lsrc + st * i + x; @@ -1483,7 +964,7 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) /* Face edge cross */ tottri = totquad = 0; - crossedgelen = multires_side_tot[totlvl - 2] - 2; + crossedgelen = multires_side_tot[totlvl - 1] - 2; dst = 0; for(i = 0; i < lvl1->totface; ++i) { int sides = lvl1->faces[i].v[3] ? 4 : 3; @@ -1492,8 +973,8 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) ++dst; for(j = 3; j <= mr->level_count; ++j) { - int base = multires_side_tot[totlvl - j] - 2; - int skip = multires_side_tot[totlvl - j + 1] - 1; + int base = multires_side_tot[totlvl - j + 1] - 2; + int skip = multires_side_tot[totlvl - j + 2] - 1; int st = pow(2, j - 2); int st2 = pow(2, j - 3); int lsrc = lvl->prev->totvert; @@ -1541,8 +1022,8 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) int ldst = dst + 1 + sides * (st - 1); for(s = 0; s < sides; ++s) { - int st2 = multires_side_tot[totlvl - 2] - 2; - int st3 = multires_side_tot[totlvl - 3] - 2; + int st2 = multires_side_tot[totlvl - 1] - 2; + int st3 = multires_side_tot[totlvl - 2] - 2; int st4 = st3 == 0 ? 1 : (st3 + 1) / 2; int mid = ldst + st2 * st3 + st3; int cv = lvl1->faces[j].v[s]; @@ -1583,3 +1064,4 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) MEM_freeN(vvmap); } + diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 1fa9090ba45..a9ceb77ad9f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3922,12 +3922,6 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) SWITCH_INT(mmd->dynverts[a]) } } - else if (md->type==eModifierType_Multires) { - MultiresModifierData *mmd = (MultiresModifierData*) md; - - mmd->undo_verts = newdataadr(fd, mmd->undo_verts); - mmd->undo_signal = !!mmd->undo_verts; - } } } @@ -9595,7 +9589,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ToolSettings *ts; //PTCacheID *pid; //ListBase pidlist; - int i, a; + int /*i, */a; for(ob = main->object.first; ob; ob = ob->id.next) { //BKE_ptcache_ids_from_object(&pidlist, ob); @@ -9613,6 +9607,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ob->data = me; if(me && me->id.lib==NULL && me->mr) { /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */ + // XXX +#if 0 MultiresLevel *lvl; ModifierData *md; MultiresModifierData *mmd; @@ -9648,7 +9644,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires); BLI_insertlinkbefore(&ob->modifiers, md, mmd); - multiresModifier_subdivide(mmd, ob, me->mr->level_count - 1, 1, 0); + for(i = 0; i < me->mr->level_count - 1; ++i) + multiresModifier_subdivide(mmd, ob, 1, 0); mmd->lvl = mmd->totlvl; orig = CDDM_from_mesh(me, NULL); @@ -9662,6 +9659,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* Remove the old multires */ multires_free(me->mr); +#endif me->mr = NULL; } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index b2147221f9f..b00cd10c6a7 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1214,12 +1214,6 @@ static void write_modifiers(WriteData *wd, ListBase *modbase) writestruct(wd, DATA, "MDefInfluence", mmd->totinfluence, mmd->dyninfluences); writedata(wd, DATA, sizeof(int)*mmd->totvert, mmd->dynverts); } - else if (md->type==eModifierType_Multires) { - MultiresModifierData *mmd = (MultiresModifierData*) md; - - if(mmd->undo_verts) - writestruct(wd, DATA, "MVert", mmd->undo_verts_tot, mmd->undo_verts); - } } } diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index c4304056017..9da7fa94295 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -373,7 +373,7 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi 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))) { + if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md, 0))) { BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); return 0; } @@ -684,6 +684,13 @@ void OBJECT_OT_modifier_copy(wmOperatorType *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); +} + static int multires_higher_levels_delete_exec(bContext *C, wmOperator *op) { PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); @@ -702,8 +709,8 @@ void OBJECT_OT_multires_higher_levels_delete(wmOperatorType *ot) { ot->name= "Delete Higher Levels"; ot->idname= "OBJECT_OT_multires_higher_levels_delete"; - ot->poll= ED_operator_object_active; + ot->poll= multires_poll; ot->exec= multires_higher_levels_delete_exec; /* flags */ @@ -718,7 +725,7 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op) Object *ob= ptr.id.data; MultiresModifierData *mmd= ptr.data; - multiresModifier_subdivide(mmd, ob, 1, 0, mmd->simple); + multiresModifier_subdivide(mmd, ob, 0, mmd->simple); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index c9e351458ad..82893b48af0 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -2027,13 +2027,13 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) { 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(ob); if(ob->mode & OB_MODE_SCULPT) { multires_force_update(ob); - /*if(mmd && mmd->sculptlvl != mmd->lvl) - DAG_id_flush_update(&ob->id, OB_RECALC_DATA);*/ + if(mmd && mmd->sculptlvl != mmd->lvl) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* Leave sculptmode */ ob->mode &= ~OB_MODE_SCULPT; @@ -2044,8 +2044,8 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) /* Enter sculptmode */ ob->mode |= OB_MODE_SCULPT; - /*if(mmd && mmd->sculptlvl != mmd->lvl) - DAG_id_flush_update(&ob->id, OB_RECALC_DATA);*/ + if(mmd && mmd->sculptlvl != mmd->lvl) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* Create persistent sculpt mode data */ if(!ts->sculpt) diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index fe6a5b050e3..d6e7992d435 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -581,12 +581,8 @@ typedef struct ExplodeModifierData { typedef struct MultiresModifierData { ModifierData modifier; - struct MVert *undo_verts; /* Store DerivedMesh vertices for multires undo */ - int undo_verts_tot; /* Length of undo_verts array */ - char undo_signal; /* If true, signals to replace verts with undo verts */ - - char lvl, totlvl; - char simple; + char lvl, sculptlvl, renderlvl, totlvl; + char simple, pad[3]; } MultiresModifierData; typedef struct FluidsimModifierData { diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 93972894ef1..689599c5cdf 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -39,6 +39,7 @@ #include "BKE_animsys.h" #include "BKE_bmesh.h" /* For BevelModifierData */ +#include "BKE_global.h" #include "BKE_smoke.h" /* For smokeModifier_free & smokeModifier_createType */ #include "WM_api.h" @@ -335,10 +336,36 @@ static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max { MultiresModifierData *mmd = (MultiresModifierData*)ptr->data; - *min = 1; + *min = 0; *max = mmd->totlvl; } +/*static int rna_MultiresModifier_external_get(PointerRNA *ptr) +{ + Object *ob= (Object*)ptr->id.data; + Mesh *me= ob->data; + + return CustomData_external_test(&me->fdata, CD_MDISPS); +} + +static void rna_MultiresModifier_external_set(PointerRNA *ptr, int value) +{ + Object *ob= (Object*)ptr->id.data; + Mesh *me= ob->data; + + if(CustomData_external_test(&me->fdata, CD_MDISPS) && !value) + CustomData_external_remove(&me->fdata, CD_MDISPS, me->totface); + else if(!CustomData_external_test(&me->fdata, CD_MDISPS) && value) + CustomData_external_add(&me->fdata, CD_MDISPS, me->id.name+2, me->totface); +} + +static int rna_MultiresModifier_external_editable(PointerRNA *ptr) +{ + MultiresModifierData *mmd = ptr->data; + + return (G.save_over && mmd->totlvl > 0); +}*/ + static void modifier_object_set(Object *self, Object **ob_p, int type, PointerRNA value) { Object *ob= value.data; @@ -487,17 +514,15 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna) rna_def_property_subdivision_common(srna, "subdivType"); - prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "levels"); - RNA_def_property_range(prop, 1, 6); - RNA_def_property_ui_range(prop, 1, 6, 1, 0); + RNA_def_property_ui_range(prop, 0, 6, 1, 0); RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to perform."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "renderLevels"); - RNA_def_property_range(prop, 1, 6); - RNA_def_property_ui_range(prop, 1, 6, 1, 0); + RNA_def_property_ui_range(prop, 0, 6, 1, 0); RNA_def_property_ui_text(prop, "Render Levels", "Number of subdivisions to perform when rendering."); prop= RNA_def_property(srna, "optimal_draw", PROP_BOOLEAN, PROP_NONE); @@ -523,11 +548,32 @@ static void rna_def_modifier_multires(BlenderRNA *brna) rna_def_property_subdivision_common(srna, "simple"); - prop= RNA_def_property(srna, "level", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "levels", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "lvl"); - RNA_def_property_ui_text(prop, "Level", ""); + RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to use in the viewport."); + RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "sculpt_levels", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "sculptlvl"); + RNA_def_property_ui_text(prop, "Sculpt Levels", "Number of subdivisions to use in sculpt mode."); RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "renderlvl"); + RNA_def_property_ui_text(prop, "Render Levels", ""); + RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range"); + + prop= RNA_def_property(srna, "total_levels", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "totlvl"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored."); + + /*prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", "rna_MultiresModifier_external_set"); + RNA_def_property_editable_func(prop, "rna_MultiresModifier_external_editable"); + RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory.");*/ } static void rna_def_modifier_lattice(BlenderRNA *brna) -- cgit v1.2.3 From 2fd2c043818595f8cd7842406f2524cb244201f2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 14:10:45 +0000 Subject: Sculpt: multires UI update. --- release/scripts/ui/properties_data_modifier.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 410fbadec09..2c00ef3ba87 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -291,13 +291,20 @@ class DATA_PT_modifiers(DataButtonsPanel): layout.itemR(md, "mirror_object") def MULTIRES(self, layout, ob, md): - layout.itemR(md, "subdivision_type") + layout.row().itemR(md, "subdivision_type", expand=True) - row = layout.row() - row.itemO("object.multires_subdivide", text="Subdivide") - row.itemO("object.multires_higher_levels_delete", text="Delete Higher") + split = layout.split() + col = split.column() + col.itemR(md, "levels", text="Preview") + col.itemR(md, "sculpt_levels", text="Sculpt") + col.itemR(md, "render_levels", text="Render") - layout.itemR(md, "level") + col = split.column() + col.itemO("object.multires_subdivide", text="Subdivide") + col.itemO("object.multires_higher_levels_delete", text="Delete Higher") + # row = col.row() + # row.enabled = md.total_levels > 0 + # row.itemR(md, "external") def PARTICLE_INSTANCE(self, layout, ob, md): layout.itemR(md, "object") @@ -386,7 +393,6 @@ class DATA_PT_modifiers(DataButtonsPanel): flow.itemR(md, "levels", text="Preview") flow.itemR(md, "render_levels", text="Render") flow.itemR(md, "optimal_draw", text="Optimal Display") - flow.itemR(md, "subsurf_uv") def SURFACE(self, layout, ob, md): layout.itemL(text="See Fields panel.") -- cgit v1.2.3 From 436969ce49bc17573e8f87a87ef89d1d036d5f4e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 14:13:43 +0000 Subject: Sculpt: Fast Navigate option for multires. This will show the lowest multires level when rotating/panning/zooming the viewport, and only draw the full thing at the end, to make the viewport more interactive. --- release/scripts/ui/space_view3d_toolbar.py | 1 + source/blender/blenkernel/BKE_DerivedMesh.h | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenkernel/intern/subsurf_ccg.c | 6 ++-- source/blender/editors/space_view3d/drawobject.c | 10 ++++--- source/blender/editors/space_view3d/view3d_edit.c | 34 +++++++++++++++-------- source/blender/editors/space_view3d/view3d_view.c | 7 +++-- source/blender/makesdna/DNA_scene_types.h | 3 +- source/blender/makesdna/DNA_view3d_types.h | 1 + source/blender/makesrna/intern/rna_sculpt_paint.c | 4 +++ 10 files changed, 46 insertions(+), 24 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index defeec0b847..5dcd0c655ef 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -671,6 +671,7 @@ class VIEW3D_PT_sculpt_options(PaintPanel): col = layout.column() col.itemR(sculpt, "show_brush") + col.itemR(sculpt, "fast_navigate") split = self.layout.split() diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 6bce7575556..bb14ac7e803 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -232,7 +232,7 @@ struct DerivedMesh { * Also called for *final* editmode DerivedMeshes */ void (*drawFacesSolid)(DerivedMesh *dm, float (*partial_redraw_planes)[4], - int (*setMaterial)(int, void *attribs)); + int fast, int (*setMaterial)(int, void *attribs)); /* Draw all faces * o If useTwoSided, draw front and back using col arrays diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index b3e75549028..77ad9fb7a7b 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -395,7 +395,7 @@ static void cdDM_drawLooseEdges(DerivedMesh *dm) static void cdDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], - int (*setMaterial)(int, void *attribs)) + int fast, int (*setMaterial)(int, void *attribs)) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; MVert *mvert = cddm->mvert; diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 30766931a0b..716229e6ead 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1223,15 +1223,15 @@ static void ccgDM_glNormalFast(float *a, float *b, float *c, float *d) } /* Only used by non-editmesh types */ -static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4]/*, int fast*/, int (*setMaterial)(int, void *attribs)) { +static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)[4], int fast, int (*setMaterial)(int, void *attribs)) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; CCGFaceIterator *fi; int gridSize = ccgSubSurf_getGridSize(ss); char *faceFlags = ccgdm->faceFlags; - int step = 1; //(fast)? gridSize-1: 1; + int step = (fast)? gridSize-1: 1; - if(ccgdm->pbvh && ccgdm->multires.mmd) { // && !fast) { + if(ccgdm->pbvh && ccgdm->multires.mmd && !fast) { CCGFace **faces; int totface; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 491559bf13d..01af339e7f7 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2692,7 +2692,7 @@ static void draw_mesh_object_outline(View3D *v3d, Object *ob, DerivedMesh *dm) drawFacesSolid() doesn't draw the transparent faces */ if(ob->dtx & OB_DRAWTRANSP) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - dm->drawFacesSolid(dm, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); GPU_disable_material(); } @@ -2793,8 +2793,10 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); if(ob->sculpt) { + Paint *p = paint_get_active(scene); float planes[4][4]; float (*fpl)[4] = NULL; + int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING); if(ob->sculpt->partial_redraw) { sculpt_get_redraw_planes(planes, ar, rv3d, ob); @@ -2802,10 +2804,10 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D ob->sculpt->partial_redraw = 0; } - dm->drawFacesSolid(dm, fpl, GPU_enable_material); + dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material); } else - dm->drawFacesSolid(dm, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material); GPU_disable_material(); @@ -6270,7 +6272,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r glEnable(GL_LIGHTING); if(dm) { - dm->drawFacesSolid(dm, NULL, GPU_enable_material); + dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material); GPU_end_object_materials(); } else if(edm) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 937a662e274..b0cbba9efc5 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -275,7 +275,7 @@ static void calctrackballvec(rcti *rect, int mx, int my, float *vec) } -static void viewops_data(bContext *C, wmOperator *op, wmEvent *event) +static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event) { static float lastofs[3] = {0,0,0}; View3D *v3d = CTX_wm_view3d(C); @@ -314,6 +314,21 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event) if (rv3d->persmat[2][1] < 0.0f) vod->reverse= -1.0f; + rv3d->rflag |= RV3D_NAVIGATING; +} + +static void viewops_data_free(bContext *C, wmOperator *op) +{ + Paint *p = paint_get_active(CTX_data_scene(C)); + ViewOpsData *vod= op->customdata; + + vod->rv3d->rflag &= ~RV3D_NAVIGATING; + + if(p && (p->flags & PAINT_FAST_NAVIGATE)) + ED_region_tag_redraw(vod->ar); + + MEM_freeN(vod); + op->customdata= NULL; } /* ************************** viewrotate **********************************/ @@ -578,9 +593,7 @@ static int viewrotate_modal(bContext *C, wmOperator *op, wmEvent *event) } else if (event_code==VIEW_CONFIRM) { request_depth_update(CTX_wm_region_view3d(C)); - - MEM_freeN(vod); - op->customdata= NULL; + viewops_data_free(C, op); return OPERATOR_FINISHED; } @@ -597,7 +610,7 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_CANCELLED; /* makes op->customdata */ - viewops_data(C, op, event); + viewops_data_create(C, op, event); vod= op->customdata; /* switch from camera view when: */ @@ -718,8 +731,7 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event) else if (event_code==VIEW_CONFIRM) { request_depth_update(CTX_wm_region_view3d(C)); - MEM_freeN(vod); - op->customdata= NULL; + viewops_data_free(C, op); return OPERATOR_FINISHED; } @@ -730,7 +742,7 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event) static int viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event) { /* makes op->customdata */ - viewops_data(C, op, event); + viewops_data_create(C, op, event); /* add temp handler */ WM_event_add_modal_handler(C, op); @@ -911,9 +923,7 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event) } else if (event_code==VIEW_CONFIRM) { request_depth_update(CTX_wm_region_view3d(C)); - - MEM_freeN(vod); - op->customdata= NULL; + viewops_data_free(C, op); return OPERATOR_FINISHED; } @@ -974,7 +984,7 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event) } else { /* makes op->customdata */ - viewops_data(C, op, event); + viewops_data_create(C, op, event); /* add temp handler */ WM_event_add_modal_handler(C, op); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index cf34cf74296..3ba2145e9d0 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -286,6 +286,8 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo /* ensure it shows correct */ if(sms.to_camera) rv3d->persp= RV3D_PERSP; + + rv3d->rflag |= RV3D_NAVIGATING; /* keep track of running timer! */ if(rv3d->sms==NULL) @@ -348,6 +350,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event) WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), rv3d->smooth_timer); rv3d->smooth_timer= NULL; + rv3d->rflag &= ~RV3D_NAVIGATING; } else { int i; @@ -1885,7 +1888,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) fly->time_lastdraw= fly->time_lastwheel= PIL_check_seconds_timer(); - fly->rv3d->rflag |= RV3D_FLYMODE; /* so we draw the corner margins */ + fly->rv3d->rflag |= RV3D_FLYMODE|RV3D_NAVIGATING; /* so we draw the corner margins */ /* detect weather to start with Z locking */ upvec[0]=1.0f; upvec[1]=0.0f; upvec[2]=0.0f; @@ -1985,7 +1988,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) /*Done with correcting for the dist */ } - rv3d->rflag &= ~RV3D_FLYMODE; + rv3d->rflag &= ~(RV3D_FLYMODE|RV3D_NAVIGATING); //XXX2.5 BIF_view3d_previewrender_signal(fly->sa, PR_DBASE|PR_DISPRECT); /* not working at the moment not sure why */ diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 037a8c46222..bc592387a64 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1047,7 +1047,8 @@ typedef struct Scene { /* Paint.flags */ typedef enum { - PAINT_SHOW_BRUSH = 1 + PAINT_SHOW_BRUSH = 1, + PAINT_FAST_NAVIGATE = 2 } PaintFlags; /* Sculpt.flags */ diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 422c56fe4c1..9c1f01f12b4 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -210,6 +210,7 @@ typedef struct View3D { /* RegionView3d->rflag */ #define RV3D_FLYMODE 2 #define RV3D_CLIPPING 4 +#define RV3D_NAVIGATING 8 /* RegionView3d->viewlock */ #define RV3D_LOCKED 1 diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 89e29596746..f365f053e79 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -174,6 +174,10 @@ static void rna_def_paint(BlenderRNA *brna) prop= RNA_def_property(srna, "show_brush", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH); RNA_def_property_ui_text(prop, "Show Brush", ""); + + prop= RNA_def_property(srna, "fast_navigate", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_FAST_NAVIGATE); + RNA_def_property_ui_text(prop, "Fast Navigate", "For multires, show low resolution while navigating the view."); } static void rna_def_sculpt(BlenderRNA *brna) -- cgit v1.2.3 From 077edbb384e3845f27cc06618046a08c7101cc4c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 14:27:50 +0000 Subject: Sculpt: external file storage for multires * This is experimental, the file format may change still! * Helps reduce memory usage, keeps .blend files smaller, and makes saving quicker when not editing multires. * This is implemented at the customdata level, currently only the multires displacements can be stored externally. ToDo * Better integration with object duplication/removal/.. * Memory is not yet freed when exiting sculpt mode. * Loading only lower levels is not supported yet. --- release/scripts/ui/properties_data_modifier.py | 6 +- source/blender/blenkernel/BKE_btex.h | 64 ++++ source/blender/blenkernel/BKE_customdata.h | 16 + source/blender/blenkernel/intern/btex.c | 482 +++++++++++++++++++++++++ source/blender/blenkernel/intern/customdata.c | 305 +++++++++++++++- source/blender/blenkernel/intern/multires.c | 8 +- source/blender/blenkernel/intern/pointcache.c | 9 +- source/blender/blenlib/BLI_string.h | 3 + source/blender/blenlib/intern/string.c | 15 + source/blender/blenloader/intern/readfile.c | 10 +- source/blender/blenloader/intern/writefile.c | 19 +- source/blender/editors/include/ED_sculpt.h | 2 +- source/blender/makesdna/DNA_customdata_types.h | 17 +- source/blender/makesrna/intern/rna_modifier.c | 8 +- source/blender/windowmanager/intern/wm_files.c | 2 + 15 files changed, 927 insertions(+), 39 deletions(-) create mode 100644 source/blender/blenkernel/BKE_btex.h create mode 100644 source/blender/blenkernel/intern/btex.c diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 2c00ef3ba87..c02bb4c8845 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -302,9 +302,9 @@ class DATA_PT_modifiers(DataButtonsPanel): col = split.column() col.itemO("object.multires_subdivide", text="Subdivide") col.itemO("object.multires_higher_levels_delete", text="Delete Higher") - # row = col.row() - # row.enabled = md.total_levels > 0 - # row.itemR(md, "external") + row = col.row() + row.enabled = md.total_levels > 0 + row.itemR(md, "external") def PARTICLE_INSTANCE(self, layout, ob, md): layout.itemR(md, "object") diff --git a/source/blender/blenkernel/BKE_btex.h b/source/blender/blenkernel/BKE_btex.h new file mode 100644 index 00000000000..cb73fd160d7 --- /dev/null +++ b/source/blender/blenkernel/BKE_btex.h @@ -0,0 +1,64 @@ +/* + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BKE_BTEX_H +#define BKE_BTEX_H + +#define BTEX_TYPE_IMAGE 0 +#define BTEX_TYPE_MESH 1 + +#define BTEX_LAYER_NAME_MAX 64 + +typedef struct BTex BTex; +typedef struct BTexLayer BTexLayer; + +/* Create/Free */ + +BTex *btex_create(int type); +void btex_free(BTex *btex); + +/* File read/write/remove */ + +int btex_read_open(BTex *btex, char *filename); +int btex_read_layer(BTex *btex, BTexLayer *blay); +int btex_read_data(BTex *btex, int size, void *data); +void btex_read_close(BTex *btex); + +int btex_write_open(BTex *btex, char *filename); +int btex_write_layer(BTex *btex, BTexLayer *blay); +int btex_write_data(BTex *btex, int size, void *data); +void btex_write_close(BTex *btex); + +void btex_remove(char *filename); + +/* Layers */ + +BTexLayer *btex_layer_find(BTex *btex, int type, char *name); +BTexLayer *btex_layer_add(BTex *btex, int type, char *name); +void btex_layer_remove(BTex *btex, BTexLayer *blay); + +/* Mesh */ + +void btex_mesh_set_grids(BTex *btex, int totgrid, int gridsize, int datasize); + +#endif /* BKE_BTEX_H */ + diff --git a/source/blender/blenkernel/BKE_customdata.h b/source/blender/blenkernel/BKE_customdata.h index 95ee918a888..5ce4b396f0e 100644 --- a/source/blender/blenkernel/BKE_customdata.h +++ b/source/blender/blenkernel/BKE_customdata.h @@ -278,4 +278,20 @@ int CustomData_verify_versions(struct CustomData *data, int index); void CustomData_to_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata); void CustomData_from_bmeshpoly(struct CustomData *fdata, struct CustomData *pdata, struct CustomData *ldata, int total); void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize); + +/* External file storage */ + +void CustomData_external_add(struct CustomData *data, + int type, const char *name, int totelem); +void CustomData_external_remove(struct CustomData *data, + int type, int totelem); +void CustomData_external_remove_object(struct CustomData *data); +int CustomData_external_test(struct CustomData *data, int type); + +void CustomData_external_write(struct CustomData *data, + CustomDataMask mask, int totelem, int free); +void CustomData_external_read(struct CustomData *data, + CustomDataMask mask, int totelem); + #endif + diff --git a/source/blender/blenkernel/intern/btex.c b/source/blender/blenkernel/intern/btex.c new file mode 100644 index 00000000000..363e515f6e2 --- /dev/null +++ b/source/blender/blenkernel/intern/btex.c @@ -0,0 +1,482 @@ +/* + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "BLI_fileops.h" +#include "BLI_string.h" + +#include "BKE_btex.h" +#include "BKE_global.h" +#include "BKE_utildefines.h" + +/************************* File Format Definitions ***************************/ + +#define BTEX_ENDIAN_LITTLE 0 +#define BTEX_ENDIAN_BIG 1 + +#define BTEX_DATA_FLOAT 0 + +typedef struct BTexHeader { + char ID[4]; /* "BTEX" */ + char endian; /* little, big */ + char version; /* non-compatible versions */ + char subversion; /* compatible sub versions */ + char pad; /* padding */ + + int structbytes; /* size of this struct in bytes */ + int type; /* image, mesh */ + int totlayer; /* number of layers in the file */ +} BTexHeader; + +typedef struct BTexImageHeader { + int structbytes; /* size of this struct in bytes */ + int width; /* image width */ + int height; /* image height */ + int tile_size; /* tile size (required power of 2) */ +} BTexImageHeader; + +typedef struct BTexMeshHeader { + int structbytes; /* size of this struct in bytes */ + int totgrid; /* number of grids */ + int gridsize; /* width of grids */ +} BTexMeshHeader; + +struct BTexLayer { + int structbytes; /* size of this struct in bytes */ + int datatype; /* only float for now */ + int datasize; /* size of data in layer */ + int type; /* layer type */ + char name[BTEX_LAYER_NAME_MAX]; /* layer name */ +}; + +/**************************** Other Definitions ******************************/ + +#define BTEX_VERSION 0 +#define BTEX_SUBVERSION 0 +#define BTEX_TILE_SIZE 64 + +struct BTex { + int type; + + BTexHeader header; + union { + BTexImageHeader image; + BTexMeshHeader mesh; + } btype; + + BTexLayer *layer; + int totlayer; + + FILE *readf; + FILE *writef; + int switchendian; + size_t dataoffset; +}; + +/********************************* Create/Free *******************************/ + +static int btex_endian(void) +{ + if(ENDIAN_ORDER == L_ENDIAN) + return BTEX_ENDIAN_LITTLE; + else + return BTEX_ENDIAN_BIG; +} + +/*static int btex_data_type_size(int datatype) +{ + if(datatype == BTEX_DATA_FLOAT) + return sizeof(float); + + return 0; +}*/ + +BTex *btex_create(int type) +{ + BTex *btex= MEM_callocN(sizeof(BTex), "BTex"); + + btex->type= type; + + return btex; +} + +void btex_free(BTex *btex) +{ + btex_read_close(btex); + btex_write_close(btex); + + if(btex->layer) + MEM_freeN(btex->layer); + + MEM_freeN(btex); +} + +/********************************* Read/Write ********************************/ + +static int btex_read_header(BTex *btex) +{ + BTexHeader *header; + BTexImageHeader *image; + BTexMeshHeader *mesh; + BTexLayer *layer; + FILE *f= btex->readf; + size_t offset = 0; + int a; + + header= &btex->header; + + if(!fread(header, sizeof(BTexHeader), 1, btex->readf)) + return 0; + + if(memcmp(header->ID, "BTEX", sizeof(header->ID)) != 0) + return 0; + if(header->version > BTEX_VERSION) + return 0; + + btex->switchendian= header->endian != btex_endian(); + header->endian= btex_endian(); + + if(btex->switchendian) { + SWITCH_INT(header->type); + SWITCH_INT(header->totlayer); + SWITCH_INT(header->structbytes); + } + + if(!ELEM(header->type, BTEX_TYPE_IMAGE, BTEX_TYPE_MESH)) + return 0; + + offset += header->structbytes; + header->structbytes= sizeof(BTexHeader); + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + + if(header->type == BTEX_TYPE_IMAGE) { + image= &btex->btype.image; + if(!fread(image, sizeof(BTexImageHeader), 1, f)) + return 0; + + if(btex->switchendian) { + SWITCH_INT(image->width); + SWITCH_INT(image->height); + SWITCH_INT(image->tile_size); + SWITCH_INT(image->structbytes); + } + + offset += image->structbytes; + image->structbytes= sizeof(BTexImageHeader); + } + else if(header->type == BTEX_TYPE_MESH) { + mesh= &btex->btype.mesh; + if(!fread(mesh, sizeof(BTexMeshHeader), 1, f)) + return 0; + + if(btex->switchendian) { + SWITCH_INT(mesh->totgrid); + SWITCH_INT(mesh->gridsize); + SWITCH_INT(mesh->structbytes); + } + + offset += mesh->structbytes; + mesh->structbytes= sizeof(BTexMeshHeader); + } + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + + btex->layer= MEM_callocN(sizeof(BTexLayer)*header->totlayer, "BTexLayer"); + btex->totlayer= header->totlayer; + + for(a=0; atotlayer; a++) { + layer= &btex->layer[a]; + + if(!fread(layer, sizeof(BTexLayer), 1, f)) + return 0; + + if(btex->switchendian) { + SWITCH_INT(layer->type); + SWITCH_INT(layer->datatype); + SWITCH_INT(layer->datasize); + SWITCH_INT(layer->structbytes); + } + + if(layer->datatype != BTEX_DATA_FLOAT) + return 0; + + offset += layer->structbytes; + layer->structbytes= sizeof(BTexLayer); + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + } + + btex->dataoffset= offset; + + return 1; +} + +static int btex_write_header(BTex *btex) +{ + BTexHeader *header; + BTexImageHeader *image; + BTexMeshHeader *mesh; + BTexLayer *layer; + FILE *f= btex->writef; + int a; + + header= &btex->header; + + if(!fwrite(header, sizeof(BTexHeader), 1, f)) + return 0; + + if(header->type == BTEX_TYPE_IMAGE) { + image= &btex->btype.image; + if(!fwrite(image, sizeof(BTexImageHeader), 1, f)) + return 0; + } + else if(header->type == BTEX_TYPE_MESH) { + mesh= &btex->btype.mesh; + if(!fwrite(mesh, sizeof(BTexMeshHeader), 1, f)) + return 0; + } + + for(a=0; atotlayer; a++) { + layer= &btex->layer[a]; + + if(!fwrite(layer, sizeof(BTexLayer), 1, f)) + return 0; + } + + return 1; +} + +int btex_read_open(BTex *btex, char *filename) +{ + FILE *f; + + f= fopen(filename, "rb"); + if(!f) + return 0; + + btex->readf= f; + + if(!btex_read_header(btex)) { + btex_read_close(btex); + return 0; + } + + if(btex->header.type != btex->type) { + btex_read_close(btex); + return 0; + } + + return 1; +} + +int btex_read_layer(BTex *btex, BTexLayer *blay) +{ + size_t offset; + int a; + + /* seek to right location in file */ + offset= btex->dataoffset; + for(a=0; atotlayer; a++) { + if(&btex->layer[a] == blay) + break; + else + offset += btex->layer[a].datasize; + } + + return (fseek(btex->readf, offset, SEEK_SET) == 0); +} + +int btex_read_data(BTex *btex, int size, void *data) +{ + float *fdata; + int a; + + /* read data */ + if(!fread(data, size, 1, btex->readf)) + return 0; + + /* switch endian if necessary */ + if(btex->switchendian) { + fdata= data; + + for(a=0; areadf) { + fclose(btex->readf); + btex->readf= NULL; + } +} + +int btex_write_open(BTex *btex, char *filename) +{ + BTexHeader *header; + BTexImageHeader *image; + BTexMeshHeader *mesh; + FILE *f; + + f= fopen(filename, "wb"); + if(!f) + return 0; + + btex->writef= f; + + /* fill header */ + header= &btex->header; + strcpy(header->ID, "BTEX"); + header->endian= btex_endian(); + header->version= BTEX_VERSION; + header->subversion= BTEX_SUBVERSION; + + header->structbytes= sizeof(BTexHeader); + header->type= btex->type; + header->totlayer= btex->totlayer; + + if(btex->type == BTEX_TYPE_IMAGE) { + /* fill image header */ + image= &btex->btype.image; + image->structbytes= sizeof(BTexImageHeader); + image->tile_size= BTEX_TILE_SIZE; + } + else if(btex->type == BTEX_TYPE_MESH) { + /* fill mesh header */ + mesh= &btex->btype.mesh; + mesh->structbytes= sizeof(BTexMeshHeader); + } + + btex_write_header(btex); + + return 1; +} + +int btex_write_layer(BTex *btex, BTexLayer *blay) +{ + return 1; +} + +int btex_write_data(BTex *btex, int size, void *data) +{ + /* write data */ + if(!fwrite(data, size, 1, btex->writef)) + return 0; + + return 1; +} + +void btex_write_close(BTex *btex) +{ + if(btex->writef) { + fclose(btex->writef); + btex->writef= NULL; + } +} + +void btex_remove(char *filename) +{ + BLI_delete(filename, 0, 0); +} + +/********************************** Layers ***********************************/ + +BTexLayer *btex_layer_find(BTex *btex, int type, char *name) +{ + BTexLayer *layer; + int a; + + for(a=0; atotlayer; a++) { + layer= &btex->layer[a]; + + if(layer->type == type && strcmp(layer->name, name) == 0) + return layer; + } + + return NULL; +} + +BTexLayer *btex_layer_add(BTex *btex, int type, char *name) +{ + BTexLayer *newlayer, *layer; + + /* expand array */ + newlayer= MEM_callocN(sizeof(BTexLayer)*(btex->totlayer+1), "BTexLayer"); + memcpy(newlayer, btex->layer, sizeof(BTexLayer)*btex->totlayer); + btex->layer= newlayer; + + btex->totlayer++; + + /* fill in new layer */ + layer= &btex->layer[btex->totlayer-1]; + layer->structbytes= sizeof(BTexLayer); + layer->datatype= BTEX_DATA_FLOAT; + layer->type= type; + BLI_strncpy(layer->name, name, BTEX_LAYER_NAME_MAX); + + return layer; +} + +void btex_layer_remove(BTex *btex, BTexLayer *layer) +{ + BTexLayer *newlayer; + int index= layer - btex->layer; + + /* expand array */ + newlayer= MEM_callocN(sizeof(BTexLayer)*(btex->totlayer-1), "BTexLayer"); + if(index > 0) + memcpy(newlayer, btex->layer, sizeof(BTexLayer)*index); + if(index+1 < btex->totlayer) + memcpy(newlayer+index, btex->layer+index+1, sizeof(BTexLayer)*(btex->totlayer-(index+1))); + btex->layer= newlayer; + + btex->totlayer--; +} + +/********************************* Mesh **************************************/ + +void btex_mesh_set_grids(BTex *btex, int totgrid, int gridsize, int datasize) +{ + BTexLayer *layer; + int a; + + btex->btype.mesh.totgrid= totgrid; + btex->btype.mesh.gridsize= gridsize; + + for(a=0; atotlayer; a++) { + layer= &btex->layer[a]; + layer->datasize= datasize; + } +} + diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 4844595513f..8f167310741 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -32,21 +32,26 @@ * */ -#include "BKE_customdata.h" -#include "BKE_utildefines.h" // CLAMP -#include "BLI_math.h" -#include "BLI_blenlib.h" -#include "BLI_linklist.h" -#include "BLI_mempool.h" +#include +#include + +#include "MEM_guardedalloc.h" #include "DNA_customdata_types.h" #include "DNA_listBase.h" #include "DNA_meshdata_types.h" +#include "DNA_ID.h" -#include "MEM_guardedalloc.h" +#include "BLI_blenlib.h" +#include "BLI_linklist.h" +#include "BLI_math.h" +#include "BLI_mempool.h" +#include "BLI_string.h" -#include -#include +#include "BKE_btex.h" +#include "BKE_customdata.h" +#include "BKE_global.h" +#include "BKE_utildefines.h" /* number of layers to add when growing a CustomData object */ #define CUSTOMDATA_GROW 5 @@ -89,6 +94,12 @@ typedef struct LayerTypeInfo { /* a function to set a layer's data to default values. if NULL, the default is assumed to be all zeros */ void (*set_default)(void *data, int count); + + /* a function to read data from a btex file */ + int (*read)(BTex *btex, void *data, int count); + + /* a function to write data to a btex file */ + int (*write)(BTex *btex, void *data, int count); } LayerTypeInfo; static void layerCopy_mdeformvert(const void *source, void *dest, @@ -538,6 +549,39 @@ static void layerFree_mdisps(void *data, int count, int size) } } +static int layerRead_mdisps(BTex *btex, void *data, int count) +{ + MDisps *d = data; + int i; + + for(i = 0; i < count; ++i) { + if(!d[i].disps) + d[i].disps = MEM_callocN(sizeof(float)*3*d[i].totdisp, "mdisps read"); + + if(!btex_read_data(btex, d[i].totdisp*3*sizeof(float), d[i].disps)) { + printf("failed to read %d/%d %d\n", i, count, d[i].totdisp); + return 0; + } + } + + return 1; +} + +static int layerWrite_mdisps(BTex *btex, void *data, int count) +{ + MDisps *d = data; + int i; + + for(i = 0; i < count; ++i) { + if(!btex_write_data(btex, d[i].totdisp*3*sizeof(float), d[i].disps)) { + printf("failed to write %d/%d %d\n", i, count, d[i].totdisp); + return 0; + } + } + + return 1; +} + /* --------- */ static void layerDefault_mloopcol(void *data, int count) @@ -731,7 +775,7 @@ const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = { {sizeof(MLoopCol), "MLoopCol", 1, "Col", NULL, NULL, layerInterp_mloopcol, NULL, layerDefault_mloopcol}, {sizeof(float)*3*4, "", 0, NULL, NULL, NULL, NULL, NULL, NULL}, {sizeof(MDisps), "MDisps", 1, NULL, layerCopy_mdisps, - layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL}, + layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL, layerRead_mdisps, layerWrite_mdisps}, {sizeof(MCol)*4, "MCol", 4, "WeightCol", NULL, NULL, layerInterp_mcol, layerSwap_mcol, layerDefault_mcol}, {sizeof(MCol)*4, "MCol", 4, "IDCol", NULL, NULL, layerInterp_mcol, @@ -793,6 +837,8 @@ void CustomData_merge(const struct CustomData *source, struct CustomData *dest, CustomDataLayer *layer, *newlayer; int i, type, number = 0, lasttype = -1, lastactive = 0, lastrender = 0, lastclone = 0, lastmask = 0; + CustomData_external_read(dest, mask, totelem); + for(i = 0; i < source->totlayer; ++i) { layer = &source->layers[i]; typeInfo = layerType_getInfo(layer->type); @@ -853,6 +899,14 @@ static void customData_free_layer__internal(CustomDataLayer *layer, int totelem) } } +static void CustomData_external_free(CustomData *data) +{ + if(data->external) { + MEM_freeN(data->external); + data->external= NULL; + } +} + void CustomData_free(CustomData *data, int totelem) { int i; @@ -863,6 +917,8 @@ void CustomData_free(CustomData *data, int totelem) if(data->layers) MEM_freeN(data->layers); + CustomData_external_free(data); + memset(data, 0, sizeof(*data)); } @@ -2238,3 +2294,232 @@ int CustomData_verify_versions(struct CustomData *data, int index) return keeplayer; } +/****************************** External Files *******************************/ + +static void customdata_external_filename(char filename[FILE_MAX], CustomDataExternal *external) +{ + BLI_strncpy(filename, external->filename, FILE_MAX); + BLI_convertstringcode(filename, G.sce); +} + +void CustomData_external_read(CustomData *data, CustomDataMask mask, int totelem) +{ + CustomDataExternal *external= data->external; + CustomDataLayer *layer; + BTex *btex; + BTexLayer *blay; + char filename[FILE_MAX]; + const LayerTypeInfo *typeInfo; + int i, update = 0; + + if(!external) + return; + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if(!(mask & (1<type))); + else if(layer->flag & CD_FLAG_IN_MEMORY); + else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read) + update= 1; + } + + if(!update) + return; + + customdata_external_filename(filename, external); + + btex= btex_create(BTEX_TYPE_MESH); + if(!btex_read_open(btex, filename)) + return; + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if(!(mask & (1<type))); + else if(layer->flag & CD_FLAG_IN_MEMORY); + else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read) { + blay= btex_layer_find(btex, layer->type, layer->name); + + if(blay) { + if(btex_read_layer(btex, blay)) { + if(typeInfo->read(btex, layer->data, totelem)); + else break; + layer->flag |= CD_FLAG_IN_MEMORY; + } + else + break; + } + } + } + + btex_read_close(btex); + btex_free(btex); +} + +void CustomData_external_write(CustomData *data, CustomDataMask mask, int totelem, int free) +{ + CustomDataExternal *external= data->external; + CustomDataLayer *layer; + BTex *btex; + BTexLayer *blay; + const LayerTypeInfo *typeInfo; + int i, update = 0; + char filename[FILE_MAX]; + + if(!external) + return; + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if(!(mask & (1<type))); + else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) + update= 1; + } + + if(!update) + return; + + CustomData_external_read(data, mask, totelem); + + btex= btex_create(BTEX_TYPE_MESH); + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) + btex_layer_add(btex, layer->type, layer->name); + } + + customdata_external_filename(filename, external); + if(!btex_write_open(btex, filename)) + return; + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) { + blay= btex_layer_find(btex, layer->type, layer->name); + + if(btex_write_layer(btex, blay)) { + if(typeInfo->write(btex, layer->data, totelem)); + else break; + } + else + break; + } + } + + if(i != data->totlayer) { + btex_free(btex); + return; + } + + for(i=0; itotlayer; i++) { + layer = &data->layers[i]; + typeInfo = layerType_getInfo(layer->type); + + if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) { + if(free) { + if(typeInfo->free) + typeInfo->free(layer->data, totelem, typeInfo->size); + layer->flag &= ~CD_FLAG_IN_MEMORY; + } + } + } + + btex_write_close(btex); + btex_free(btex); +} + +void CustomData_external_add(CustomData *data, int type, const char *name, int totelem) +{ + CustomDataExternal *external= data->external; + CustomDataLayer *layer; + int layer_index; + + layer_index = CustomData_get_active_layer_index(data, type); + if(layer_index < 0) return; + + layer = &data->layers[layer_index]; + + if(layer->flag & CD_FLAG_EXTERNAL) + return; + + if(!external) { + char hex[MAX_ID_NAME*2]; + + external= MEM_callocN(sizeof(CustomDataExternal), "CustomDataExternal"); + BLI_strhex(hex, sizeof(hex), name); + BLI_snprintf(external->filename, sizeof(external->filename), "//%s_mesh.btex", hex); + data->external= external; + } + + layer->flag |= CD_FLAG_EXTERNAL|CD_FLAG_IN_MEMORY; +} + +void CustomData_external_remove(CustomData *data, int type, int totelem) +{ + CustomDataExternal *external= data->external; + CustomDataLayer *layer; + char filename[FILE_MAX]; + int layer_index, i, remove_file; + + layer_index = CustomData_get_active_layer_index(data, type); + if(layer_index < 0) return; + + layer = &data->layers[layer_index]; + + if(!external) + return; + + if(layer->flag & CD_FLAG_EXTERNAL) { + if(!(layer->flag & CD_FLAG_IN_MEMORY)) + CustomData_external_read(data, (1<type), totelem); + + layer->flag &= ~CD_FLAG_EXTERNAL; + + remove_file= 1; + for(i=0; itotlayer; i++) + if(data->layers[i].flag & CD_FLAG_EXTERNAL) + remove_file= 0; + + if(remove_file) { + customdata_external_filename(filename, external); + btex_remove(filename); + CustomData_external_free(data); + } + } +} + +int CustomData_external_test(CustomData *data, int type) +{ + CustomDataLayer *layer; + int layer_index; + + layer_index = CustomData_get_active_layer_index(data, type); + if(layer_index < 0) return 0; + + layer = &data->layers[layer_index]; + return (layer->flag & CD_FLAG_EXTERNAL); +} + +void CustomData_external_remove_object(CustomData *data) +{ + CustomDataExternal *external= data->external; + char filename[FILE_MAX]; + + if(!external) + return; + + customdata_external_filename(filename, external); + btex_remove(filename); + CustomData_external_free(data); +} + diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 2518d4bc3ca..a709b45f60c 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -249,7 +249,7 @@ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object int levels = mmd->totlvl - lvl; MDisps *mdisps; - // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS); multires_force_update(ob); @@ -595,7 +595,7 @@ static void multiresModifier_update(DerivedMesh *dm) ob = ccgdm->multires.ob; me = ccgdm->multires.ob->data; mmd = ccgdm->multires.mmd; - // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); if(mdisps) { @@ -692,7 +692,7 @@ void multires_force_update(Object *ob) struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob, int useRenderParams, int isFinalCalc) { - //Mesh *me= ob->data; + Mesh *me= ob->data; DerivedMesh *result; CCGDerivedMesh *ccgdm; DMGridData **gridData, **subGridData; @@ -727,7 +727,7 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i memcpy(subGridData[i], gridData[i], sizeof(DMGridData)*gridSize*gridSize); } - // XXX CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); multiresModifier_disp_run(result, ob->data, 0, 0, subGridData, mmd->totlvl); for(i = 0; i < numGrids; i++) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index c2798b4a746..e552f08f350 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -1075,12 +1075,11 @@ static int BKE_ptcache_id_filename(PTCacheID *pid, char *filename, int cfra, sho } if(strcmp(pid->cache->name, "")==0 && (pid->cache->flag & PTCACHE_EXTERNAL)==0) { idname = (pid->ob->id.name+2); + /* convert chars to hex so they are always a valid filename */ - while('\0' != *idname) { - snprintf(newname, MAX_PTCACHE_FILE, "%02X", (char)(*idname++)); - newname+=2; - len += 2; - } + BLI_strhex(newname, MAX_PTCACHE_FILE - len, idname); + len += strlen(newname); + newname = filename + len; } else { int temp = (int)strlen(pid->cache->name); diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h index fb345de72e9..fad3c337355 100644 --- a/source/blender/blenlib/BLI_string.h +++ b/source/blender/blenlib/BLI_string.h @@ -123,6 +123,9 @@ int BLI_natstrcmp(const char *s1, const char *s2); void BLI_timestr(double _time, char *str); /* time var is global */ + /* Convert to hex string valid for file writing (2x length of original) */ +void BLI_strhex(char *hex, int maxlen, const char *str); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index 405f8c6db97..2ecdda2de35 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -329,3 +329,18 @@ void BLI_timestr(double _time, char *str) str[11]=0; } + +void BLI_strhex(char *hex, int maxlen, const char *str) +{ + int len = 0; + + while('\0' != *str && len+3 < maxlen) { + snprintf(hex, maxlen, "%02X", *str++); + hex += 2; + len += 2; + } + + if(maxlen) + hex[0]= '\0'; +} + diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a9ceb77ad9f..c47ea8838c7 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3311,14 +3311,14 @@ static void direct_link_dverts(FileData *fd, int count, MDeformVert *mdverts) } } -static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps) +static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int external) { if(mdisps) { int i; for(i = 0; i < count; ++i) { mdisps[i].disps = newdataadr(fd, mdisps[i].disps); - if(!mdisps[i].disps) + if(!external && !mdisps[i].disps) mdisps[i].totdisp = 0; } } @@ -3329,14 +3329,18 @@ static void direct_link_customdata(FileData *fd, CustomData *data, int count) int i = 0; data->layers= newdataadr(fd, data->layers); + data->external= newdataadr(fd, data->external); while (i < data->totlayer) { CustomDataLayer *layer = &data->layers[i]; + if(layer->flag & CD_FLAG_EXTERNAL) + layer->flag &= ~CD_FLAG_IN_MEMORY; + if (CustomData_verify_versions(data, i)) { layer->data = newdataadr(fd, layer->data); if(layer->type == CD_MDISPS) - direct_link_mdisps(fd, count, layer->data); + direct_link_mdisps(fd, count, layer->data, layer->flag & CD_FLAG_EXTERNAL); i++; } } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index b00cd10c6a7..0a4f22c1fd5 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1434,15 +1434,17 @@ static void write_dverts(WriteData *wd, int count, MDeformVert *dvlist) } } -static void write_mdisps(WriteData *wd, int count, MDisps *mdlist) +static void write_mdisps(WriteData *wd, int count, MDisps *mdlist, int external) { if(mdlist) { int i; writestruct(wd, DATA, "MDisps", count, mdlist); - for(i = 0; i < count; ++i) { - if(mdlist[i].disps) - writedata(wd, DATA, sizeof(float)*3*mdlist[i].totdisp, mdlist[i].disps); + if(!external) { + for(i = 0; i < count; ++i) { + if(mdlist[i].disps) + writedata(wd, DATA, sizeof(float)*3*mdlist[i].totdisp, mdlist[i].disps); + } } } } @@ -1451,6 +1453,10 @@ static void write_customdata(WriteData *wd, int count, CustomData *data, int par { int i; + /* write external customdata */ + if(data->external && !wd->current) + CustomData_external_write(data, CD_MASK_MESH, count, 0); + writestruct(wd, DATA, "CustomDataLayer", data->maxlayer, data->layers); for (i=0; itotlayer; i++) { @@ -1463,7 +1469,7 @@ static void write_customdata(WriteData *wd, int count, CustomData *data, int par write_dverts(wd, count, layer->data); } else if (layer->type == CD_MDISPS) { - write_mdisps(wd, count, layer->data); + write_mdisps(wd, count, layer->data, layer->flag & CD_FLAG_EXTERNAL); } else { CustomData_file_write_info(layer->type, &structname, &structnum); @@ -1480,6 +1486,9 @@ static void write_customdata(WriteData *wd, int count, CustomData *data, int par printf("error: this CustomDataLayer must not be written to file\n"); } } + + if(data->external) + writestruct(wd, DATA, "CustomDataExternal", 1, data->external); } static void write_meshs(WriteData *wd, ListBase *idbase) diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h index 085c8e894f8..aae79e9a1de 100644 --- a/source/blender/editors/include/ED_sculpt.h +++ b/source/blender/editors/include/ED_sculpt.h @@ -39,7 +39,7 @@ struct wmWindowManager; void ED_operatortypes_sculpt(void); void sculpt_get_redraw_planes(float planes[4][4], struct ARegion *ar, struct RegionView3D *rv3d, struct Object *ob); - +void ED_sculpt_force_update(struct bContext *C); /* paint_ops.c */ void ED_operatortypes_paint(void); diff --git a/source/blender/makesdna/DNA_customdata_types.h b/source/blender/makesdna/DNA_customdata_types.h index ad686e37097..91e4cefce80 100644 --- a/source/blender/makesdna/DNA_customdata_types.h +++ b/source/blender/makesdna/DNA_customdata_types.h @@ -44,14 +44,19 @@ typedef struct CustomDataLayer { void *data; /* layer data */ } CustomDataLayer; +typedef struct CustomDataExternal { + char filename[240]; /* FILE_MAX */ +} CustomDataExternal; + /* structure which stores custom element data associated with mesh elements * (vertices, edges or faces). The custom data is organised into a series of * layers, each with a data type (e.g. MTFace, MDeformVert, etc.). */ typedef struct CustomData { - CustomDataLayer *layers; /* CustomDataLayers, ordered by type */ - int totlayer, maxlayer; /* number of layers, size of layers array */ - int totsize, pad; /* in editmode, total size of all data layers */ - void *pool; /* for Bmesh: Memory pool for allocation of blocks*/ + CustomDataLayer *layers; /* CustomDataLayers, ordered by type */ + int totlayer, maxlayer; /* number of layers, size of layers array */ + int totsize, pad; /* in editmode, total size of all data layers */ + void *pool; /* Bmesh: Memory pool for allocation of blocks */ + CustomDataExternal *external; /* external file storing customdata layers */ } CustomData; /* CustomData.type */ @@ -115,6 +120,10 @@ typedef struct CustomData { #define CD_FLAG_NOFREE (1<<1) /* indicates the layer is only temporary, also implies no copy */ #define CD_FLAG_TEMPORARY ((1<<2)|CD_FLAG_NOCOPY) +/* indicates the layer is stored in an external file */ +#define CD_FLAG_EXTERNAL (1<<3) +/* indicates external data is read into memory */ +#define CD_FLAG_IN_MEMORY (1<<4) /* Limits */ #define MAX_MTFACE 8 diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 689599c5cdf..208ba522502 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -340,7 +340,7 @@ static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max *max = mmd->totlvl; } -/*static int rna_MultiresModifier_external_get(PointerRNA *ptr) +static int rna_MultiresModifier_external_get(PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; Mesh *me= ob->data; @@ -364,7 +364,7 @@ static int rna_MultiresModifier_external_editable(PointerRNA *ptr) MultiresModifierData *mmd = ptr->data; return (G.save_over && mmd->totlvl > 0); -}*/ +} static void modifier_object_set(Object *self, Object **ob_p, int type, PointerRNA value) { @@ -570,10 +570,10 @@ static void rna_def_modifier_multires(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored."); - /*prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", "rna_MultiresModifier_external_set"); RNA_def_property_editable_func(prop, "rna_MultiresModifier_external_editable"); - RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory.");*/ + RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory."); } static void rna_def_modifier_lattice(BlenderRNA *brna) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 6348e1a2717..21b894ee46b 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -81,6 +81,7 @@ #include "ED_datafiles.h" #include "ED_object.h" #include "ED_screen.h" +#include "ED_sculpt.h" #include "ED_util.h" #include "GHOST_C-api.h" @@ -492,6 +493,7 @@ void WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports } ED_object_exit_editmode(C, EM_DO_UNDO); + ED_sculpt_force_update(C); do_history(di, reports); -- cgit v1.2.3 From b129ccf000382028c932d663695326acf1be9140 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 14:59:02 +0000 Subject: Pose Bone "Local Location" option. This is enabled by default, disabling it puts the bone location in pose space rather than local bone space. --- source/blender/blenkernel/intern/armature.c | 7 ++++++- source/blender/editors/transform/transform_conversions.c | 11 ++++++++--- source/blender/makesdna/DNA_armature_types.h | 1 + source/blender/makesrna/intern/rna_armature.c | 5 +++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 7a1a2eec95b..f9def718a4b 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -2247,7 +2247,12 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); } else { - mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + if(bone->flag & BONE_NO_LOCAL_LOCATION) { + mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + add_v3_v3v3(pchan->pose_mat[3], bone->arm_mat[3], pchan->chan_mat[3]); + } + else + mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); /* only rootbones get the cyclic offset (unless user doesn't want that) */ if ((bone->flag & BONE_NO_CYCLICOFFSET) == 0) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 5a517e34fcd..0a678b30764 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -545,7 +545,7 @@ static short apply_targetless_ik(Object *ob) static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, TransData *td) { Bone *bone= pchan->bone; - float pmat[3][3], omat[3][3]; + float pmat[3][3], omat[3][3], bmat[3][3]; float cmat[3][3], tmat[3][3]; float vec[3]; @@ -619,13 +619,18 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args } else { + if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION)) + unit_m3(bmat); + else + copy_m3_m3(bmat, pchan->bone->bone_mat); + if (constraints_list_needinv(t, &pchan->constraints)) { copy_m3_m4(tmat, pchan->constinv); invert_m3_m3(cmat, tmat); - mul_serie_m3(td->mtx, pchan->bone->bone_mat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, omat, cmat, 0,0,0,0,0); // dang mulserie swaps args } else - mul_m3_m3m3(td->mtx, omat, pchan->bone->bone_mat); // Mat3MulMat3 has swapped args! + mul_m3_m3m3(td->mtx, omat, bmat); // Mat3MulMat3 has swapped args! } invert_m3_m3(td->smtx, td->mtx); diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 7dd90a3cf13..0f0da7fe807 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -171,6 +171,7 @@ typedef enum eBone_Flag { BONE_EDITMODE_LOCKED = (1<<19), /* bone transforms are locked in EditMode */ BONE_TRANSFORM_CHILD = (1<<20), /* Indicates that a parent is also being transformed */ BONE_UNSELECTABLE = (1<<21), /* bone cannot be selected */ + BONE_NO_LOCAL_LOCATION = (1<<22), /* bone location is in armature space */ } eBone_Flag; #endif diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 36fd457e173..a5b21d5447d 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -437,6 +437,11 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) RNA_def_property_ui_text(prop, "Inherit Scale", "Bone inherits scaling from parent bone."); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_SCALE); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); + + prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text(prop, "Local Location", "Bone location is set in local space."); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_LOCAL_LOCATION); + RNA_def_property_update(prop, 0, "rna_Armature_update_data"); prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_DRAWWIRE); -- cgit v1.2.3 From 553374bd4c9833b13072bcf697b5776f95366407 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 15:00:29 +0000 Subject: selected_pchans --> selected_pose_bones, same for visible_pchans added use_ prefix to bools offset --> use_offset, tail --> use_tail for eg. --- release/scripts/ui/properties_object_constraint.py | 24 +++++++++++----------- source/blender/blenkernel/BKE_context.h | 4 ++-- source/blender/blenkernel/intern/context.c | 8 ++++---- source/blender/editors/animation/keyingsets.c | 2 +- source/blender/editors/armature/editarmature.c | 14 ++++++------- source/blender/editors/armature/poseSlide.c | 2 +- source/blender/editors/armature/poseobject.c | 12 +++++------ source/blender/editors/object/object_constraint.c | 6 +++--- source/blender/editors/screen/screen_context.c | 6 +++--- source/blender/makesrna/intern/rna_constraint.c | 20 +++++++++--------- 10 files changed, 49 insertions(+), 49 deletions(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index d654543b60f..dc4a6e48761 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -187,16 +187,16 @@ class ConstraintButtonsPanel(bpy.types.Panel): col.label(text="Weight:") col.prop(con, "weight", text="Position", slider=True) sub = col.column() - sub.active = con.rotation + sub.active = con.use_rotation sub.prop(con, "orient_weight", text="Rotation", slider=True) if wide_ui: col = split.column() - col.prop(con, "tail") - col.prop(con, "stretch") + col.prop(con, "use_tail") + col.prop(con, "use_stretch") col.separator() - col.prop(con, "targetless") - col.prop(con, "rotation") + col.prop(con, "use_target") + col.prop(con, "use_rotation") def IK_COPY_POSE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -217,13 +217,13 @@ class ConstraintButtonsPanel(bpy.types.Panel): row.prop(con, "pos_lock_x", text="X") row.prop(con, "pos_lock_y", text="Y") row.prop(con, "pos_lock_z", text="Z") - split.active = con.position + split.active = con.use_position split = layout.split(percentage=0.33) split.row().prop(con, "rotation") row = split.row() row.prop(con, "orient_weight", text="Weight", slider=True) - row.active = con.rotation + row.active = con.use_rotation split = layout.split(percentage=0.33) row = split.row() row.label(text="Lock:") @@ -231,7 +231,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): row.prop(con, "rot_lock_x", text="X") row.prop(con, "rot_lock_y", text="Y") row.prop(con, "rot_lock_z", text="Z") - split.active = con.rotation + split.active = con.use_rotation def IK_DISTANCE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) @@ -257,7 +257,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): if con.use_fixed_position: col.prop(con, "offset_factor", text="Offset") else: - col.prop(con, "offset") + col.prop(con, "use_offset") row = layout.row() if wide_ui: @@ -419,7 +419,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): sub.active = con.rotate_like_z sub.prop(con, "invert_z", text="Invert") - layout.prop(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) @@ -446,7 +446,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): sub.active = con.locate_like_z sub.prop(con, "invert_z", text="Invert") - layout.prop(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) @@ -458,7 +458,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): row.prop(con, "size_like_y", text="Y") row.prop(con, "size_like_z", text="Z") - layout.prop(con, "offset") + layout.prop(con, "use_offset") self.space_template(layout, con, wide_ui) diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index 947ec914fa4..aa9c9b2721e 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -249,8 +249,8 @@ int CTX_data_visible_bones(const bContext *C, ListBase *list); int CTX_data_editable_bones(const bContext *C, ListBase *list); struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C); -int CTX_data_selected_pchans(const bContext *C, ListBase *list); -int CTX_data_visible_pchans(const bContext *C, ListBase *list); +int CTX_data_selected_pose_bones(const bContext *C, ListBase *list); +int CTX_data_visible_bose_bones(const bContext *C, ListBase *list); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index 164e7a23d92..fc1ef4aede9 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -883,13 +883,13 @@ struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C) return ctx_data_pointer_get(C, "active_pose_bone"); } -int CTX_data_selected_pchans(const bContext *C, ListBase *list) +int CTX_data_selected_pose_bones(const bContext *C, ListBase *list) { - return ctx_data_collection_get(C, "selected_pchans", list); + return ctx_data_collection_get(C, "selected_pose_bones", list); } -int CTX_data_visible_pchans(const bContext *C, ListBase *list) +int CTX_data_visible_pose_bones(const bContext *C, ListBase *list) { - return ctx_data_collection_get(C, "visible_pchans", list); + return ctx_data_collection_get(C, "visible_pose_bones", list); } diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index e91b1f11ae2..d39e52ab4f4 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -1220,7 +1220,7 @@ static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, Ke //} #endif - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* add a new keying-source */ cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc"); diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 323d76da6d9..34a6000a7b8 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -1316,7 +1316,7 @@ static int pose_setflag_exec (bContext *C, wmOperator *op) int mode= RNA_enum_get(op->ptr, "mode"); /* loop over all selected pchans */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { bone_setflag(&pchan->bone->flag, flag, mode); } @@ -4800,7 +4800,7 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op) cks.id= &ob->id; /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { if ((pchan->protectflag & OB_LOCK_SCALEX)==0) pchan->size[0]= 1.0f; if ((pchan->protectflag & OB_LOCK_SCALEY)==0) @@ -4863,7 +4863,7 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op) cks.id= &ob->id; /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* clear location */ if ((pchan->protectflag & OB_LOCK_LOCX)==0) pchan->loc[0]= 0.0f; @@ -4927,7 +4927,7 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) cks.id= &ob->id; /* only clear those channels that are not locked */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { if (pchan->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { /* check if convert to eulers for locking... */ if (pchan->protectflag & OB_LOCK_ROT4D) { @@ -5068,7 +5068,7 @@ static int pose_select_inverse_exec(bContext *C, wmOperator *op) { /* Set the flags */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE) == 0) { pchan->bone->flag ^= (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); } @@ -5101,10 +5101,10 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op) /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */ // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared... - if (CTX_DATA_COUNT(C, selected_pchans) > 1) sel=0; + if (CTX_DATA_COUNT(C, selected_pose_bones) > 1) sel=0; /* Set the flags */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { /* select pchan only if selectable, but deselect works always */ if (sel==0) { pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c index ac4cfd2c3e3..7ceb50057ce 100644 --- a/source/blender/editors/armature/poseSlide.c +++ b/source/blender/editors/armature/poseSlide.c @@ -178,7 +178,7 @@ static int pose_slide_init (bContext *C, wmOperator *op, short mode) /* for each Pose-Channel which gets affected, get the F-Curves for that channel * and set the relevant transform flags... */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { ListBase curves = {NULL, NULL}; int transFlags = action_get_item_transforms(act, pso->ob, pchan, &curves); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 846e6fcc23b..f415eeb421f 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1329,7 +1329,7 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) /* 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_pchans) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { pchan->agrp_index= pose->active_group; done= 1; } @@ -1388,7 +1388,7 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) /* add selected bones to ungroup then */ // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + // 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 @@ -1530,7 +1530,7 @@ static int pose_flip_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { BLI_strncpy(newname, pchan->name, sizeof(newname)); bone_flip_name(newname, 1); // 1 = do strip off number extensions @@ -1577,7 +1577,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + 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]); @@ -1755,7 +1755,7 @@ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) /* get layers that are active already */ memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { short bit; @@ -1786,7 +1786,7 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op) RNA_boolean_get_array(op->ptr, "layers", layers); /* set layers of pchans based on the values set in the operator props */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) { /* get pointer for pchan, and write flags this way */ RNA_pointer_create((ID *)arm, &RNA_Bone, pchan->bone, &ptr); diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 4a4184c7035..6d4706d02b3 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -800,7 +800,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); /* free constraints for all selected bones */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { free_constraints(&pchan->constraints); pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST); @@ -917,7 +917,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if the active Object is Armature, and we can search for bones, do so... */ if ((obact->type == OB_ARMATURE) && (only_ob == 0)) { /* search in list of selected Pose-Channels for target */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* just use the first one that we encounter, as long as it is not the active one */ if (pchan != pchanact) { @@ -1345,7 +1345,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); /* only remove IK Constraints */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { bConstraint *con, *next; diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index cd80bcde19f..1cacf57e42a 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -64,7 +64,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult "scene", "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", "visible_bones", "editable_bones", "selected_bones", "selected_editable_bones", - "visible_pchans", "selected_pchans", "active_bone", "active_pose_bone", + "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}; @@ -192,7 +192,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } - else if(CTX_data_equals(member, "visible_pchans")) { + else if(CTX_data_equals(member, "visible_pose_bones")) { bArmature *arm= (obact) ? obact->data : NULL; bPoseChannel *pchan; @@ -207,7 +207,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } } - else if(CTX_data_equals(member, "selected_pchans")) { + else if(CTX_data_equals(member, "selected_pose_bones")) { bArmature *arm= (obact) ? obact->data : NULL; bPoseChannel *pchan; diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 74dabea318e..68811a0b3a7 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -478,7 +478,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the IK effect - 0 uses all bones."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "tail", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_tail", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_TIP); RNA_def_property_ui_text(prop, "Use Tail", "Include bone's tail as last element in chain."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -489,7 +489,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Axis Reference", "Constraint axis Lock options relative to Bone or Target reference"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "position", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_position", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_POS); RNA_def_property_ui_text(prop, "Position", "Chain follows position of target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -509,7 +509,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock Z Pos", "Constraint position along Z axis"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "rotation", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_ROT); RNA_def_property_ui_text(prop, "Rotation", "Chain follows rotation of target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -529,12 +529,12 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "targetless", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO); - RNA_def_property_ui_text(prop, "Targetless", "Use targetless IK."); + prop= RNA_def_property(srna, "use_target", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO); + RNA_def_property_ui_text(prop, "Target", "Disable for targetless IK."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "stretch", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_stretch", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_STRETCH); RNA_def_property_ui_text(prop, "Stretch", "Enable IK Stretching."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -662,7 +662,7 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original rotation into copied rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -725,7 +725,7 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Invert Z", "Invert the Z location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original location into copied location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -818,7 +818,7 @@ static void rna_def_constraint_size_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "offset", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_OFFSET); RNA_def_property_ui_text(prop, "Offset", "Add original scale into copied scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); -- cgit v1.2.3 From 323aa656715f9f40e151acd0b61305384ae0970d Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Wed, 25 Nov 2009 17:46:10 +0000 Subject: Verlet integration method for particles (patch provided by farsthary). --- source/blender/blenkernel/intern/particle_system.c | 10 ++++++++++ source/blender/makesdna/DNA_particle_types.h | 1 + source/blender/makesrna/intern/rna_particle.c | 1 + 3 files changed, 12 insertions(+) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 075c6f6207f..809b5f2090c 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -2287,6 +2287,9 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra case PART_INT_RK4: steps=4; break; + case PART_INT_VERLET: + steps=1; + break; } copy_particle_key(states,&pa->state,1); @@ -2392,6 +2395,13 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra VECADDFAC(pa->state.vel,pa->state.vel,dv[3],1.0f/6.0f); } break; + case PART_INT_VERLET: /* Verlet integration */ + VECADDFAC(pa->state.vel,pa->state.vel,force,dtime); + VECADDFAC(pa->state.co,pa->state.co,pa->state.vel,dtime); + + VECSUB(pa->state.vel,pa->state.co,pa->prev_state.co); + mul_v3_fl(pa->state.vel,1.0f/dtime); + break; } } diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 0de48c54fe2..81510ef96a3 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -391,6 +391,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in #define PART_INT_EULER 0 #define PART_INT_MIDPOINT 1 #define PART_INT_RK4 2 +#define PART_INT_VERLET 3 /* part->rotmode */ #define PART_ROT_NOR 1 diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index f458ee86091..6ddec53c28d 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -917,6 +917,7 @@ static void rna_def_particle_settings(BlenderRNA *brna) static EnumPropertyItem integrator_type_items[] = { {PART_INT_EULER, "EULER", 0, "Euler", ""}, + {PART_INT_VERLET, "VERLET", 0, "Verlet", ""}, {PART_INT_MIDPOINT, "MIDPOINT", 0, "Midpoint", ""}, {PART_INT_RK4, "RK4", 0, "RK4", ""}, {0, NULL, 0, NULL, NULL} -- cgit v1.2.3 From 2582e3a90019d5d594be13c178b1054b7f3c71af Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 18:20:46 +0000 Subject: Sculpt: fix windows compile issues, pointed out by JMS, thanks! --- source/blender/blenlib/intern/string.c | 3 +++ source/blender/gpu/intern/gpu_buffers.c | 1 + 2 files changed, 4 insertions(+) diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index 2ecdda2de35..3dc12174bd7 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -42,6 +42,9 @@ #include "BLI_dynstr.h" #include "BLI_string.h" +#ifdef WIN32 +#include "BLI_winstuff.h" +#endif char *BLI_strdupn(const char *str, int len) { char *n= MEM_mallocN(len+1, "strdup"); diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 65b81835cf9..9db7f9b1ce9 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -31,6 +31,7 @@ */ #include +#include #include #include "GL/glew.h" -- cgit v1.2.3 From 2b121e65991763fc9631e466be885fe0755a4087 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 25 Nov 2009 18:48:29 +0000 Subject: Pose Bone Local Location: now also works for non-connected bones with parents. --- release/scripts/ui/properties_data_bone.py | 4 +- source/blender/blenkernel/intern/armature.c | 44 ++++++++++++---------- .../editors/transform/transform_conversions.c | 14 +++---- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 40877a6be08..2c47ac03d7d 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -189,7 +189,9 @@ class BONE_PT_relations(BoneButtonsPanel): sub.prop(bone, "connected") sub.prop(bone, "hinge", text="Inherit Rotation") sub.prop(bone, "inherit_scale", text="Inherit Scale") - + sub = col.column() + sub.active = (not bone.parent or not bone.connected) + sub.prop(bone, "local_location", text="Local Location") class BONE_PT_display(BoneButtonsPanel): bl_label = "Display" diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index f9def718a4b..f70bdc8636b 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -2220,39 +2220,43 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti /* the rotation of the parent restposition */ copy_m4_m4(tmat, parbone->arm_mat); - - /* the location of actual parent transform */ - VECCOPY(tmat[3], offs_bone[3]); - offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f; - mul_m4_v3(parchan->pose_mat, tmat[3]); - mul_serie_m4(pchan->pose_mat, tmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); } else if(bone->flag & BONE_NO_SCALE) { float orthmat[4][4]; - /* get the official transform, but we only use the vector from it (optimize...) */ - mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); - VECCOPY(vec, pchan->pose_mat[3]); - - /* do this again, but with an ortho-parent matrix */ + /* do transform, with an ortho-parent matrix */ copy_m4_m4(orthmat, parchan->pose_mat); normalize_m4(orthmat); mul_serie_m4(pchan->pose_mat, orthmat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); - - /* copy correct transform */ - VECCOPY(pchan->pose_mat[3], vec); } - else + else mul_serie_m4(pchan->pose_mat, parchan->pose_mat, offs_bone, pchan->chan_mat, NULL, NULL, NULL, NULL, NULL); + + /* in these cases we need to compute location separately */ + if(bone->flag & (BONE_HINGE|BONE_NO_SCALE|BONE_NO_LOCAL_LOCATION)) { + float bone_loc[3], chan_loc[3]; + + mul_v3_m4v3(bone_loc, parchan->pose_mat, offs_bone[3]); + copy_v3_v3(chan_loc, pchan->chan_mat[3]); + + /* no local location is not transformed by bone matrix */ + if(!(bone->flag & BONE_NO_LOCAL_LOCATION)) + mul_mat3_m4_v3(offs_bone, chan_loc); + + /* for hinge we use armature instead of pose mat */ + if(bone->flag & BONE_HINGE) mul_m4_v3(parbone->arm_mat, chan_loc); + else mul_m4_v3(parchan->pose_mat, chan_loc); + + add_v3_v3v3(pchan->pose_mat[3], bone_loc, chan_loc); + } } else { - if(bone->flag & BONE_NO_LOCAL_LOCATION) { - mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); + + /* optional location without arm_mat rotation */ + if(bone->flag & BONE_NO_LOCAL_LOCATION) add_v3_v3v3(pchan->pose_mat[3], bone->arm_mat[3], pchan->chan_mat[3]); - } - else - mul_m4_m4m4(pchan->pose_mat, pchan->chan_mat, bone->arm_mat); /* only rootbones get the cyclic offset (unless user doesn't want that) */ if ((bone->flag & BONE_NO_CYCLICOFFSET) == 0) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 0a678b30764..403d8449a67 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -604,6 +604,11 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr /* proper way to get parent transform + own transform + constraints transform */ copy_m3_m4(omat, ob->obmat); + if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION)) + unit_m3(bmat); + else + copy_m3_m3(bmat, pchan->bone->bone_mat); + if (pchan->parent) { if(pchan->bone->flag & BONE_HINGE) copy_m3_m4(pmat, pchan->parent->bone->arm_mat); @@ -613,17 +618,12 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr if (constraints_list_needinv(t, &pchan->constraints)) { copy_m3_m4(tmat, pchan->constinv); invert_m3_m3(cmat, tmat); - mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, pmat, omat, cmat, 0,0,0,0); // dang mulserie swaps args } else - mul_serie_m3(td->mtx, pchan->bone->bone_mat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args + mul_serie_m3(td->mtx, bmat, pmat, omat, 0,0,0,0,0); // dang mulserie swaps args } else { - if (t->mode==TFM_TRANSLATION && (pchan->bone->flag & BONE_NO_LOCAL_LOCATION)) - unit_m3(bmat); - else - copy_m3_m3(bmat, pchan->bone->bone_mat); - if (constraints_list_needinv(t, &pchan->constraints)) { copy_m3_m4(tmat, pchan->constinv); invert_m3_m3(cmat, tmat); -- cgit v1.2.3 From 8709f13a3b69bf0ff66f513bb31f81a84115917a Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 25 Nov 2009 22:14:51 +0000 Subject: Decrease snap delay to 10 ms --- source/blender/editors/transform/transform_snap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 062452d9e42..be3d3579344 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -293,7 +293,7 @@ void applySnapping(TransInfo *t, float *vec) // Time base quirky code to go around findnearest slowness /* !TODO! add exception for object mode, no need to slow it down then */ - if (current - t->tsnap.last >= 0.1) + if (current - t->tsnap.last >= 0.01) { t->tsnap.calcSnap(t, vec); t->tsnap.targetSnap(t); -- cgit v1.2.3 From c2762c28e4d119d279f117f3e2ba50948991d36a Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 25 Nov 2009 22:38:07 +0000 Subject: Editmesh undo: restore selection counts after undo --- source/blender/editors/mesh/editmesh.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index bdb1df3b5c1..a286c0ad8e8 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1771,6 +1771,11 @@ static void undoMesh_to_editMesh(void *umv, void *emv) EM_free_index_arrays(); } + /* restore total selections */ + EM_nvertices_selected(em); + EM_nedges_selected(em); + EM_nfaces_selected(em); + // XXX retopo_free_paint(); // em->retopo_paint_data= retopo_paint_data_copy(um->retopo_paint_data); // scene->toolsettings->retopo_mode= um->retopo_mode; -- cgit v1.2.3 From f6b03893945cac9bd79ed5bfe7eed12b3805c97d Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 25 Nov 2009 22:58:54 +0000 Subject: Fix for opening images in the Background Image panel --- release/scripts/ui/space_view3d.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index edc526f3c55..4a7f78d4840 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1683,8 +1683,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel): layout.active = view.display_background_image col = layout.column() - col.prop(bg, "image", text="") - #col.prop(bg, "image_user") + col.template_ID(bg, "image", open="image.open") col.prop(bg, "size") col.prop(bg, "transparency", slider=True) -- cgit v1.2.3 From aa5227664ab419d5446466fe0b3a368b05281fbe Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Wed, 25 Nov 2009 23:13:47 +0000 Subject: After talking with Matt about this, added notifier NC_ID to handle ID changes, specifically ND_ID_RENAME for ID renaming. Done for outliner, 3d view and properties editor. --- source/blender/editors/space_buttons/space_buttons.c | 4 ++++ source/blender/editors/space_outliner/outliner.c | 2 +- source/blender/editors/space_outliner/space_outliner.c | 4 ++++ source/blender/editors/space_view3d/space_view3d.c | 8 ++++++++ source/blender/makesrna/intern/rna_ID.c | 3 +++ source/blender/windowmanager/WM_types.h | 4 ++++ 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 2c918bd9b30..de8a1616496 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -308,6 +308,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) if(wmn->data == ND_SPACE_PROPERTIES) ED_area_tag_redraw(sa); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_area_tag_redraw(sa); + break; } if(wmn->data == ND_KEYS) diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 39eecd7d2de..bfb1724af35 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) case ID_SCE: WM_event_add_notifier(C, NC_SCENE, NULL); break; default: - WM_event_add_notifier(C, NC_MATERIAL, NULL); break; + WM_event_add_notifier(C, NC_ID|ND_ID_RENAME, NULL); break; } /* Check the library target exists */ if (te->idcode == ID_LI) { diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 5c6a8701f18..e3fbb13ed7d 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -147,6 +147,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_OUTLINER) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index d11eee466ed..787df5150f4 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -517,6 +517,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_VIEW3D) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } @@ -639,6 +643,10 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_VIEW3D) ED_region_tag_redraw(ar); break; + case NC_ID: + if(wmn->data == ND_ID_RENAME) + ED_region_tag_redraw(ar); + break; } } diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index cb1a1211d24..3bcdf373c43 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -31,6 +31,8 @@ #include "DNA_ID.h" +#include "WM_types.h" + #include "rna_internal.h" /* enum of ID-block types @@ -301,6 +303,7 @@ static void rna_def_ID(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name."); RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set"); RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2); + RNA_def_property_update(prop, NC_ID|ND_ID_RENAME, NULL); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 3f0c52f0f2c..53cca69fffc 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -136,6 +136,7 @@ typedef struct wmNotifier { #define NC_SPACE (15<<24) #define NC_GEOM (16<<24) #define NC_NODE (17<<24) +#define NC_ID (18<<24) /* data type, 256 entries is enough, it can overlap */ #define NOTE_DATA 0x00FF0000 @@ -215,6 +216,9 @@ typedef struct wmNotifier { /* NC_NODE Nodes */ #define ND_NODE_SELECT (1<<16) + /* NC_ID IDs */ +#define ND_ID_RENAME (1<<16) + /* NC_SPACE */ #define ND_SPACE_CONSOLE (1<<16) /* general redraw */ -- cgit v1.2.3 From a306759b7af05914a46eb9fec2dd3cc50aa6f20f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Nov 2009 23:35:58 +0000 Subject: small change to BGE callbacks, only allocate empty args once in the callback loop. --- source/gameengine/Ketsji/KX_Scene.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 2aff57961d8..b45fecb0f98 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -412,6 +412,7 @@ void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) if (cb_list && (len=PyList_GET_SIZE(cb_list))) { + PyObject* args= PyTuple_New(0); // save python creating each call PyObject* func; PyObject* ret; @@ -419,7 +420,7 @@ void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) for (int pos=0; pos < len; pos++) { func= PyList_GET_ITEM(cb_list, pos); - ret= PyObject_CallObject(func, NULL); + ret= PyObject_Call(func, args, NULL); if (ret==NULL) { PyErr_Print(); PyErr_Clear(); @@ -428,6 +429,8 @@ void KX_Scene::RunDrawingCallbacks(PyObject* cb_list) Py_DECREF(ret); } } + + Py_DECREF(args); } } -- cgit v1.2.3 From 12968cdd8a0141aa57e196256e7161ff11dd1ec3 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Wed, 25 Nov 2009 23:54:21 +0000 Subject: adding function vcloud_estimate_transform(..) to math library comments there (@math_geom.c) should explain what it does -- removing attached clutter from softbody.c --- source/blender/blenkernel/intern/softbody.c | 174 ++++------------------------ source/blender/blenlib/BLI_math_geom.h | 6 + source/blender/blenlib/intern/math_geom.c | 158 +++++++++++++++++++++++++ 3 files changed, 186 insertions(+), 152 deletions(-) diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 557f326e951..f53700976fd 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -3752,6 +3752,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo } } + /* void SB_estimate_transform */ /* input Object *ob out (says any object that can do SB like mesh,lattice,curve ) output float lloc[3],float lrot[3][3],float lscale[3][3] @@ -3764,164 +3765,40 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo lloc,lrot,lscale are allowed to be NULL, just in case you don't need it. should be pretty useful for pythoneers :) not! velocity .. 2nd order stuff + vcloud_estimate_transform see */ -/* can't believe there is none in math utils */ -float _det_m3(float m2[3][3]) -{ - float det = 0.f; - if (m2){ - det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1]) - -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1]) - +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]); - } - return det; -} - void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscale[3][3]) { BodyPoint *bp; ReferenceVert *rp; - float accu_pos[3] = {0.0f,0.0f,0.0f}; - float com[3],va[3],vb[3],rcom[3]; - float accu_mass = 0.0f,la = 0.0f,lb = 0.0f,eps = 0.000001f; SoftBody *sb = 0; - int a,i=0,imax=16; - int _localdebug; - - if (lloc) zero_v3(lloc); - if (lrot) zero_m3(lrot); - if (lscale) zero_m3(lscale); - + float (*opos)[3]; + float (*rpos)[3]; + float com[3],rcom[3]; + int a; if(!ob ||!ob->soft) return; /* why did we get here ? */ sb= ob->soft; - /*for threading there should be a lock */ - /* sb-> lock; */ - /* calculate center of mass */ if(!sb || !sb->bpoint) return; - _localdebug=sb->solverflags & SBSO_MONITOR; /* turn this on/off if you (don't) want to see progress on console */ - for(a=0,bp=sb->bpoint; atotpoint; a++, bp++) { - VECADD(accu_pos,accu_pos,bp->pos); - accu_mass += bp->mass; + opos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_OPOS"); + rpos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_RPOS"); + /* might filter vertex selection with a vertex group */ + for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; atotpoint; a++, bp++, rp++) { + VECCOPY(rpos[a],rp->pos); + VECCOPY(opos[a],bp->pos); } - VECCOPY(com,accu_pos); - mul_v3_fl(com,1.0f/accu_mass); - /* center of mass done*/ - if (sb->scratch){ - float dcom[3],stunt[3]; - float m[3][3],mr[3][3],q[3][3],qi[3][3]; - float odet,ndet; - zero_m3(m); - zero_m3(mr); - VECSUB(dcom,com,sb->scratch->Ref.com); - VECCOPY(rcom,sb->scratch->Ref.com); - if (_localdebug) { - printf("DCOM %f %f %f\n",dcom[0],dcom[1],dcom[2]); - } - if (lloc) VECCOPY(lloc,dcom); - VECCOPY(sb->lcom,dcom); - /* build 'projection' matrix */ - for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; atotpoint; a++, bp++, rp++) { - VECSUB(va,rp->pos,rcom); - la += len_v3(va); - /* mul_v3_fl(va,bp->mass); mass needs renormalzation here ?? */ - VECSUB(vb,bp->pos,com); - lb += len_v3(vb); - /* mul_v3_fl(va,rp->mass); */ - m[0][0] += va[0] * vb[0]; - m[0][1] += va[0] * vb[1]; - m[0][2] += va[0] * vb[2]; - - m[1][0] += va[1] * vb[0]; - m[1][1] += va[1] * vb[1]; - m[1][2] += va[1] * vb[2]; - - m[2][0] += va[2] * vb[0]; - m[2][1] += va[2] * vb[1]; - m[2][2] += va[2] * vb[2]; - - /* building the referenc matrix on the fly - needed to scale properly later*/ - - mr[0][0] += va[0] * va[0]; - mr[0][1] += va[0] * va[1]; - mr[0][2] += va[0] * va[2]; - - mr[1][0] += va[1] * va[0]; - mr[1][1] += va[1] * va[1]; - mr[1][2] += va[1] * va[2]; - - mr[2][0] += va[2] * va[0]; - mr[2][1] += va[2] * va[1]; - mr[2][2] += va[2] * va[2]; - } - /* we are pretty much set up here and we could return that raw mess containing essential information - but being nice fellows we proceed: - knowing we did split off the tanslational part to the center of mass (com) part - however let's do some more reverse engeneering and see if we can split - rotation from scale ->Polardecompose - */ - copy_m3_m3(q,m); - stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2]; - /* nothing to see here but renormalizing works nicely - printf("lenght stunt %5.3f a %5.3f b %5.3f %5.3f\n",len_v3(stunt),la,lb,sqrt(la*lb)); - */ - mul_m3_fl(q,1.f/len_v3(stunt)); - /* not too much to see here - if(_localdebug){ - printf("q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]); - printf("q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]); - printf("q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]); - } - */ - /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */ - /* without the far case !!! but seems to work here pretty neat */ - odet = 0.f; - ndet = _det_m3(q); - while((odet-ndet)*(odet-ndet) > eps && ilrot,q); - if(_localdebug){ - printf("Rot .. i %d\n",i); - printf("!q0 %5.3f %5.3f %5.3f\n",q[0][0],q[0][1],q[0][2]); - printf("!q1 %5.3f %5.3f %5.3f\n",q[1][0],q[1][1],q[1][2]); - printf("!q2 %5.3f %5.3f %5.3f\n",q[2][0],q[2][1],q[2][2]); - } - invert_m3_m3(irot,q); - /* now that's where we need mr to get scaling right */ - invert_m3_m3(qi,mr); - mul_m3_m3m3(q,m,qi); - - //mul_m3_m3m3(scale,q,irot); - mul_m3_m3m3(scale,irot,q); /* i always have a problem with this C functions left/right operator applies first*/ - mul_m3_fl(scale,lb/la); /* 0 order scale was normalized away so put it back here dunno if that is needed here ???*/ - - if(lscale) copy_m3_m3(lscale,scale); - copy_m3_m3(sb->lscale,scale); - if(_localdebug){ - printf("Scale .. \n"); - printf("!s0 %5.3f %5.3f %5.3f\n",scale[0][0],scale[0][1],scale[0][2]); - printf("!s1 %5.3f %5.3f %5.3f\n",scale[1][0],scale[1][1],scale[1][2]); - printf("!s2 %5.3f %5.3f %5.3f\n",scale[2][0],scale[2][1],scale[2][2]); - } - - } - } - /*for threading there should be a unlock */ - /* sb-> unlock; */ + vcloud_estimate_transform(sb->totpoint, opos, NULL, rpos, NULL, com, rcom,lrot,lscale); + //VECSUB(com,com,rcom); + if (lloc) VECCOPY(lloc,com); + VECCOPY(sb->lcom,com); + if (lscale) copy_m3_m3(sb->lscale,lscale); + if (lrot) copy_m3_m3(sb->lrot,lrot); + + + MEM_freeN(opos); + MEM_freeN(rpos); } static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int numVerts) @@ -4182,10 +4059,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i dtime = timescale; softbody_update_positions(ob, sb, vertexCos, numVerts); softbody_step(scene, ob, sb, dtime); - if(sb->solverflags & SBSO_MONITOR ){ - printf("Picked from cache continue_physics %d\n",framenr); - } - softbody_to_object(ob, vertexCos, numVerts, 0); return; } @@ -4210,9 +4083,6 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i cache_result = BKE_ptcache_read_cache(&pid, framenr, scene->r.frs_sec); if(cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) { - if(sb->solverflags & SBSO_MONITOR ){ - printf("Picked from cache at frame %d\n",framenr); - } softbody_to_object(ob, vertexCos, numVerts, sb->local); cache->simframe= framenr; diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index d54be9d5e03..c50d9caade0 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -148,6 +148,12 @@ void sum_or_add_vertex_tangent(void *arena, VertexTangent **vtang, void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, float *co3, float *n, float *tang); +/********************************* vector clouds******************************/ + + +void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 0b3ab2f0afc..aa43201fd46 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1597,3 +1597,161 @@ void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, negate_v3(tang); } +/********************************************************/ + +/* vector clouds */ +/* void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]) +/* +input +( +int list_size +4 lists as pointer to array[list_size] +1. current pos array of 'new' positions +2. current weight array of 'new'weights (may be NULL pointer if you have no weights ) +3. reference rpos array of 'old' positions +4. reference rweight array of 'old'weights (may be NULL pointer if you have no weights ) +) +output +( +float lloc[3] center of mass pos +float rloc[3] center of mass rpos +float lrot[3][3] rotation matrix +float lscale[3][3] scale matrix +pointers may be NULL if not needed +) + +*/ +/* can't believe there is none in math utils */ +float _det_m3(float m2[3][3]) +{ + float det = 0.f; + if (m2){ + det= m2[0][0]* (m2[1][1]*m2[2][2] - m2[1][2]*m2[2][1]) + -m2[1][0]* (m2[0][1]*m2[2][2] - m2[0][2]*m2[2][1]) + +m2[2][0]* (m2[0][1]*m2[1][2] - m2[0][2]*m2[1][1]); + } + return det; +} + + +void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, + float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]) +{ + float accu_com[3]= {0.0f,0.0f,0.0f}, accu_rcom[3]= {0.0f,0.0f,0.0f}; + float accu_weight = 0.0f,accu_rweight = 0.0f,eps = 0.000001f; + + int a; + /* first set up a nice default response */ + if (lloc) zero_v3(lloc); + if (rloc) zero_v3(rloc); + if (lrot) unit_m3(lrot); + if (lscale) unit_m3(lscale); + /* do com for both clouds */ + if (pos && rpos && (list_size > 0)) /* paranoya check */ + { + /* do com for both clouds */ + for(a=0; aPolardecompose*/ + /* build 'projection' matrix */ + float m[3][3],mr[3][3],q[3][3],qi[3][3]; + float va[3],vb[3],stunt[3]; + float odet,ndet; + int i=0,imax=15; + zero_m3(m); + zero_m3(mr); + + /* build 'projection' matrix */ + for(a=0; amass); mass needs renormalzation here ?? */ + sub_v3_v3v3(vb,pos[a],accu_com); + /* mul_v3_fl(va,rp->mass); */ + m[0][0] += va[0] * vb[0]; + m[0][1] += va[0] * vb[1]; + m[0][2] += va[0] * vb[2]; + + m[1][0] += va[1] * vb[0]; + m[1][1] += va[1] * vb[1]; + m[1][2] += va[1] * vb[2]; + + m[2][0] += va[2] * vb[0]; + m[2][1] += va[2] * vb[1]; + m[2][2] += va[2] * vb[2]; + + /* building the referenc matrix on the fly + needed to scale properly later*/ + + mr[0][0] += va[0] * va[0]; + mr[0][1] += va[0] * va[1]; + mr[0][2] += va[0] * va[2]; + + mr[1][0] += va[1] * va[0]; + mr[1][1] += va[1] * va[1]; + mr[1][2] += va[1] * va[2]; + + mr[2][0] += va[2] * va[0]; + mr[2][1] += va[2] * va[1]; + mr[2][2] += va[2] * va[2]; + } + copy_m3_m3(q,m); + stunt[0] = q[0][0]; stunt[1] = q[1][1]; stunt[2] = q[2][2]; + /* renormalizing for numeric stability */ + mul_m3_fl(q,1.f/len_v3(stunt)); + + /* this is pretty much Polardecompose 'inline' the algo based on Higham's thesis */ + /* without the far case ... but seems to work here pretty neat */ + odet = 0.f; + ndet = _det_m3(q); + while((odet-ndet)*(odet-ndet) > eps && i Date: Thu, 26 Nov 2009 00:15:26 +0000 Subject: v Cloud to matrix nice drawing for soft bodies BTW could be used by any object by design --- source/blender/editors/space_view3d/drawobject.c | 226 +++++++++++++++++------ 1 file changed, 173 insertions(+), 53 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 41eab057d40..51af31496f1 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4326,63 +4326,168 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glPointSize(1.0); } -static void draw_sb_motion(Scene *scene, Object *ob) +//static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float tw,float th) +static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float itw,float ith,float drw_size) { - SoftBody *sb = 0; - if ((sb= ob->soft)){ - if(sb->solverflags & SBSO_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){ - /* draw com */ - float rt[3][3],sc[3][3],tr[3][3]; - /* looks like to swap a b in reverse */ - copy_m3_m3(sc,sb->lscale); - copy_m3_m3(rt,sb->lrot); - mul_m3_m3m3(tr,rt,sc); - if(1){ - float root[3],tip[3]; + float tr[3][3]; + float root[3],tip[3]; + float tw,th; + /* take a copy for not spoiling original */ + copy_m3_m3(tr,rotscale); + tw = itw * drw_size; + th = ith * drw_size; + + glColor4ub(0x7F, 0x00, 0x00, 155); + glBegin(GL_LINES); + root[1] = root[2] = 0.0f; + root[0] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[1] = tip[2] = 0.0f; + tip[0] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[1] = root[2] = 0.0f; - root[0] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[1] = tip[2] = 0.0f; - tip[0] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); + root[1] =0.0f; root[2] = tw; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[0] = root[2] = 0.0f; - root[1] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[0] = tip[2] = 0.0f; - tip[1] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); + root[1] =0.0f; root[2] = -tw; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - glBegin(GL_LINES); - root[0] = root[1] = 0.0f; - root[2] = -1.0f; - mul_m3_v3(tr,root); - VECADD(root,root,sb->lcom); - glVertex3fv(root); - tip[0] = tip[1] = 0.0f; - tip[2] = 1.0f; - mul_m3_v3(tr,tip); - VECADD(tip,tip,sb->lcom); - glVertex3fv(tip); - glEnd(); - } + root[1] =tw; root[2] = 0.0f; + root[0] =th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); - } - } -}; + root[1] =-tw; root[2] = 0.0f; + root[0] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + glColor4ub(0x00, 0x7F, 0x00, 155); + + glBegin(GL_LINES); + root[0] = root[2] = 0.0f; + root[1] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[0] = tip[2] = 0.0f; + tip[1] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[2] = tw; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[2] = -tw; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =tw; root[2] = 0.0f; + root[1] =th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =-tw; root[2] = 0.0f; + root[1] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + glColor4ub(0x00, 0x00, 0x7F, 155); + glBegin(GL_LINES); + root[0] = root[1] = 0.0f; + root[2] = -drw_size; + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + tip[0] = tip[1] = 0.0f; + tip[2] = drw_size; + mul_m3_v3(tr,tip); + VECADD(tip,tip,com); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[1] = tw; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] =0.0f; root[1] = -tw; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] = tw; root[1] = 0.0f; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); + + root[0] = -tw; root[1] = 0.0f; + root[2] = th; + glBegin(GL_LINES); + mul_m3_v3(tr,root); + VECADD(root,root,com); + glVertex3fv(root); + glVertex3fv(tip); + glEnd(); +} /*place to add drawers */ unsigned int nurbcol[8]= { @@ -5779,7 +5884,22 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) default: drawaxes(1.0, flag, OB_ARROWS); } - if(ob->soft /*&& flag & OB_SBMOTION*/) draw_sb_motion(scene, ob); + 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_MONITOR ||sb->solverflags & SBSO_ESTIMATEIPO){ + + wmLoadMatrix(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); + wmMultMatrix(ob->obmat); + } + } + } if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob); -- cgit v1.2.3 From ca3a9f184f7d0597021994e7b8f244c518b52b82 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 02:11:07 +0000 Subject: Fix for [#20034] Background Image Distortion while zooming and moving around 3D window. This is working around an Apple OpenGL driver bug, chatted to Martin about this in IRC, seems ok. Hopefully can revert this if/when Apple comes up with a driver fix. --- source/blender/editors/screen/glutil.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 742fab07bcc..752c6feb9af 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -439,10 +439,15 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w); glBindTexture(GL_TEXTURE_2D, texid); - /* don't want nasty border artifacts */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + /* don't want nasty border artifacts */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +#ifdef __APPLE__ + /* workaround for os x 10.5/10.6 driver bug: http://lists.apple.com/archives/Mac-opengl/2008/Jul/msg00117.html */ + glPixelZoom(1.f, 1.f); +#endif + for (subpart_y=0; subpart_y Date: Thu, 26 Nov 2009 02:13:56 +0000 Subject: * Spline IK 'Joint Bindings' array now available from RNA. This can be used to manually slide bone joints along the curves for extra tweaking. It's only recommended to be used by advanced users for extra control over the points. * Added some missing file-reading code to try and get things working better --- source/blender/blenloader/intern/readfile.c | 9 ++++++ source/blender/makesrna/intern/rna_constraint.c | 39 +++++++++++++++++++++++-- source/blender/makesrna/intern/rna_fcurve.c | 33 +++++++++------------ 3 files changed, 58 insertions(+), 23 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index b78dd008fe1..2b21dd82c7f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1708,6 +1708,9 @@ static void lib_link_fcurves(FileData *fd, ID *id, ListBase *list) { FCurve *fcu; + if (list == NULL) + return; + /* relink ID-block references... */ for (fcu= list->first; fcu; fcu= fcu->next) { /* driver data */ @@ -1854,6 +1857,9 @@ static void lib_link_nladata_strips(FileData *fd, ID *id, ListBase *list) /* check strip's children */ lib_link_nladata_strips(fd, id, &strip->strips); + /* check strip's F-Curves */ + lib_link_fcurves(fd, id, &strip->fcurves); + /* reassign the counted-reference to action */ strip->act = newlibadr_us(fd, id->lib, strip->act); } @@ -10512,6 +10518,9 @@ static void expand_animdata_nlastrips(FileData *fd, Main *mainvar, ListBase *lis /* check child strips */ expand_animdata_nlastrips(fd, mainvar, &strip->strips); + /* check F-Curves */ + expand_fcurves(fd, mainvar, &strip->fcurves); + /* check F-Modifiers */ expand_fmodifiers(fd, mainvar, &strip->modifiers); diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 68811a0b3a7..dbe5db39677 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -286,6 +286,35 @@ static void rna_ActionConstraint_minmax_range(PointerRNA *ptr, float *min, float } } +static int rna_SplineIKConstraint_joint_bindings_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + if (ikData) + length[0]= ikData->numpoints; + else + length[0]= 256; /* for raw_access, untested */ + + return length[0]; +} + +static void rna_SplineIKConstraint_joint_bindings_get(PointerRNA *ptr, float *values) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + memcpy(values, ikData->points, ikData->numpoints * sizeof(float)); +} + +static void rna_SplineIKConstraint_joint_bindings_set(PointerRNA *ptr, const float *values) +{ + bConstraint *con= (bConstraint*)ptr->data; + bSplineIKConstraint *ikData= (bSplineIKConstraint *)con->data; + + memcpy(ikData->points, values, ikData->numpoints * sizeof(float)); +} + #else EnumPropertyItem constraint_distance_items[] = { @@ -1703,9 +1732,13 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna) /* direct access to bindings */ // NOTE: only to be used by experienced users - //prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR); - //RNA_def_property_collection_sdna(prop, NULL, "points", "numpoints"); - //RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages."); + prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed + RNA_def_property_flag(prop, PROP_DYNAMIC); + RNA_def_property_dynamic_array_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get_length"); + RNA_def_property_float_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get", "rna_SplineIKConstraint_joint_bindings_set", NULL); + RNA_def_property_ui_text(prop, "Joint Bindings", "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); /* settings */ prop= RNA_def_property(srna, "chain_offset", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index da14d937e6c..c9e9f6789d2 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -252,7 +252,7 @@ static int rna_FCurve_modifiers_remove(FCurve *fcu, bContext *C, int index) return remove_fmodifier_index(&fcu->modifiers, index); } -static void rna_Fmodifier_active_set(PointerRNA *ptr, int value) +static void rna_FModifier_active_set(PointerRNA *ptr, int value) { FModifier *fm= (FModifier*)ptr->data; @@ -260,7 +260,7 @@ static void rna_Fmodifier_active_set(PointerRNA *ptr, int value) fm->flag |= FMODIFIER_FLAG_ACTIVE; } -static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr) +static void rna_FModifier_active_update(bContext *C, PointerRNA *ptr) { FModifier *fm, *fmo= (FModifier*)ptr->data; @@ -278,8 +278,8 @@ static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr) static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) { - FModifier *fm= (FModifier*)ptr->data; - FMod_Generator *gen= fm->data; + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; if(gen) length[0]= gen->arraysize; @@ -291,15 +291,15 @@ static int rna_FModifierGenerator_coefficients_get_length(PointerRNA *ptr, int l static void rna_FModifierGenerator_coefficients_get(PointerRNA *ptr, float *values) { - FModifier *fm= (FModifier*)ptr->data; - FMod_Generator *gen= fm->data; + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; memcpy(values, gen->coefficients, gen->arraysize * sizeof(float)); } static void rna_FModifierGenerator_coefficients_set(PointerRNA *ptr, const float *values) { - FModifier *fm= (FModifier*)ptr->data; - FMod_Generator *gen= fm->data; + FModifier *fcm= (FModifier*)ptr->data; + FMod_Generator *gen= fcm->data; memcpy(gen->coefficients, values, gen->arraysize * sizeof(float)); } @@ -338,19 +338,13 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Polynomial Order", "The highest power of 'x' for this polynomial. (number of coefficients - 1)"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - + /* coefficients array */ prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE); RNA_def_property_array(prop, 32); RNA_def_property_flag(prop, PROP_DYNAMIC); RNA_def_property_dynamic_array_funcs(prop, "rna_FModifierGenerator_coefficients_get_length"); RNA_def_property_float_funcs(prop, "rna_FModifierGenerator_coefficients_get", "rna_FModifierGenerator_coefficients_set", NULL); RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); - - /* coefficients array */ - // FIXME: this is quite difficult to try to wrap - //prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE); - //RNA_def_property_collection_funcs(prop, "rna_FModifierGenerator_coefficients_begin", "rna_FModifierGenerator_coefficients_next", "rna_FModifierGenerator_coefficients_end", "rna_iterator_array_get", "rna_FModifierGenerator_coefficients_length", 0, 0, 0, 0); - //RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0)."); } /* --------- */ @@ -707,8 +701,8 @@ static void rna_def_fmodifier(BlenderRNA *brna) prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_ACTIVE); RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one being edited "); - RNA_def_property_boolean_funcs(prop, NULL, "rna_Fmodifier_active_set"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_Fmodifier_active_update"); + RNA_def_property_boolean_funcs(prop, NULL, "rna_FModifier_active_set"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, "rna_FModifier_active_update"); RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1); } @@ -848,10 +842,9 @@ static void rna_def_fpoint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Point", "Point coordinates"); } -/* channeldriver.targets.* */ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - /* add target */ + /* add modifiers */ StructRNA *srna; PropertyRNA *prop; @@ -861,7 +854,7 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_srna(cprop, "FCurveModifiers"); srna= RNA_def_struct(brna, "FCurveModifiers", NULL); RNA_def_struct_sdna(srna, "FCurve"); - RNA_def_struct_ui_text(srna, "FCurve Modifiers", "Collection of fcurve modifiers."); + RNA_def_struct_ui_text(srna, "F-Curve Modifiers", "Collection of F-Curve Modifiers."); /* Collection active property */ -- cgit v1.2.3 From eee8bf344acaae83af294774f1d90b0d07f53fc7 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 02:58:53 +0000 Subject: Cursor Grab bugfix: passing NULL for bounds didn't initialize properly. Symptom: first button drag gets stuck on values. Cause: Buttons didn't set grab bounds, to use the whole window. But Ghost didn't do anything in that case, it left the bounds value as is. It only affected the first cursor grab, because cursor ungrab sets it to -1, which forces it to use the whole window size (checking every mouse move) for subsequent grabs. Solution: When NULL, init bounds to window size (and don't query every mouse move). --- intern/ghost/intern/GHOST_Window.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/intern/ghost/intern/GHOST_Window.cpp b/intern/ghost/intern/GHOST_Window.cpp index e89e0274276..14a255e2e5e 100644 --- a/intern/ghost/intern/GHOST_Window.cpp +++ b/intern/ghost/intern/GHOST_Window.cpp @@ -109,6 +109,8 @@ GHOST_TSuccess GHOST_Window::setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rec m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1; else if (bounds) { m_cursorGrabBounds= *bounds; + } else { /* if bounds not defined, use window */ + getClientBounds(m_cursorGrabBounds); } m_cursorGrab = mode; return GHOST_kSuccess; -- cgit v1.2.3 From 1fcffd1aa0d03722dbaa8990bfe09b38f194b565 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 26 Nov 2009 03:43:39 +0000 Subject: Bugfix #20041: Drivers don't work on bone visiblity - Drivers on added to the 'armature' datablock (i.e. keyframing some settings for a "Bone" as opposed to "PoseBone") now evaluate correctly. Added proper recalcs for this case too. - Also fixed some memory leaks and loading problems I encountered with the test file provided. After having problems loading the test file, I ended up reproducing and finding the error. --- source/blender/blenkernel/intern/armature.c | 8 ++++++++ source/blender/blenkernel/intern/object.c | 10 ++++++---- source/blender/blenloader/intern/readfile.c | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index f70bdc8636b..23b08007d1f 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -37,6 +37,7 @@ #include "BLI_math.h" #include "BLI_blenlib.h" +#include "DNA_anim_types.h" #include "DNA_armature_types.h" #include "DNA_action_types.h" #include "DNA_curve_types.h" @@ -49,6 +50,7 @@ #include "DNA_scene_types.h" #include "DNA_view3d_types.h" +#include "BKE_animsys.h" #include "BKE_armature.h" #include "BKE_action.h" #include "BKE_anim.h" @@ -127,6 +129,12 @@ void free_armature(bArmature *arm) freeSketch(arm->sketch); arm->sketch = NULL; } + + /* free animation data */ + if (arm->adt) { + BKE_free_animdata(&arm->id); + arm->adt= NULL; + } } } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 078ff9d6eeb..c537f9f57b0 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2364,6 +2364,9 @@ void object_handle_update(Scene *scene, Object *ob) } if(ob->recalc & OB_RECALC_DATA) { + ID *data_id= (ID *)ob->data; + AnimData *adt= BKE_animdata_from_id(data_id); + float ctime= (float)scene->r.cfra; // XXX this is bad... if (G.f & G_DEBUG) printf("recalcdata %s\n", ob->id.name+2); @@ -2386,10 +2389,6 @@ void object_handle_update(Scene *scene, Object *ob) makeDispListCurveTypes(scene, ob, 0); } else if(ELEM(ob->type, OB_CAMERA, OB_LAMP)) { - ID *data_id= (ID *)ob->data; - AnimData *adt= BKE_animdata_from_id(data_id); - float ctime= (float)scene->r.cfra; // XXX this is bad... - /* evaluate drivers */ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); } @@ -2402,6 +2401,9 @@ void object_handle_update(Scene *scene, Object *ob) if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC)) armature_rebuild_pose(ob, ob->data); + /* evaluate drivers */ + BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); + if(ob->id.lib && ob->proxy_from) { copy_pose_result(ob->pose, ob->proxy_from->pose); // printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 2b21dd82c7f..60273ba54d0 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2397,7 +2397,9 @@ static void direct_link_armature(FileData *fd, bArmature *arm) link_list(fd, &arm->bonebase); arm->edbo= NULL; arm->sketch = NULL; + arm->adt= newdataadr(fd, arm->adt); + direct_link_animdata(fd, arm->adt); bone=arm->bonebase.first; while (bone) { -- cgit v1.2.3 From a9dff1ef57e01bc0b623aae5c359f323a9c45135 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 05:01:28 +0000 Subject: Fix for [#20023] Renderer aborts in some cases when rendering only meta-objects with volume materials. When metaballs were added to the render, if they weren't the basis ball, they'd be skipped, leaving a render object with no geometry. Now it doesn't add an object in the first place. --- source/blender/render/intern/source/convertblender.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index cbb15558a3d..c29eabdcf65 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4492,7 +4492,7 @@ void RE_Database_Free(Render *re) } } -static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob) +static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob) { /* override not showing object when duplis are used with particles */ if(ob->transflag & OB_DUPLIPARTS) @@ -4500,6 +4500,10 @@ static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES)) return 0; + /* don't add non-basic meta objects, ends up having renderobjects with no geometry */ + //if (ob!=find_basis_mball(re->scene, ob)) + // return 0; + if(nolamps && (ob->type==OB_LAMP)) return 0; @@ -4605,7 +4609,7 @@ static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, in if(ob->flag & OB_DONE) { if(ob->transflag & OB_RENDER_DUPLI) { - if(allow_render_object(ob, nolamps, onlyselected, actob)) { + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) { init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); ob->transflag &= ~OB_RENDER_DUPLI; @@ -4659,7 +4663,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp /* OB_RENDER_DUPLI means instances for it were already created, now * it still needs to create the ObjectRen containing the data */ if(ob->transflag & OB_RENDER_DUPLI) { - if(allow_render_object(ob, nolamps, onlyselected, actob)) { + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) { init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); ob->transflag &= ~OB_RENDER_DUPLI; } @@ -4693,7 +4697,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp if(obd->type==OB_MBALL) continue; - if(!allow_render_object(obd, nolamps, onlyselected, actob)) + if(!allow_render_object(re, obd, nolamps, onlyselected, actob)) continue; if(allow_render_dupli_instance(re, dob, obd)) { @@ -4763,10 +4767,10 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp } free_object_duplilist(lb); - if(allow_render_object(ob, nolamps, onlyselected, actob)) + if(allow_render_object(re, ob, nolamps, onlyselected, actob)) init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); } - else if(allow_render_object(ob, nolamps, onlyselected, actob)) + else if(allow_render_object(re, ob, nolamps, onlyselected, actob)) init_render_object(re, ob, NULL, 0, timeoffset, vectorlay); } -- cgit v1.2.3 From 543d8112ff38a6a1f77456107c685d6abf9bc945 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 05:57:34 +0000 Subject: Fix for [#20028] adding objects such as cameras in local view(/) doesn't work Was getting the wrong operator context, so there was no view3d available --- release/scripts/ui/space_info.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 5eea68728d6..acbf44eb532 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -179,7 +179,7 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_context = 'EXEC_SCREEN' - # layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') + #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') @@ -189,7 +189,7 @@ class INFO_MT_add(bpy.types.Menu): layout.separator() - layout.operator_context = 'INVOKE_SCREEN' + layout.operator_context = 'INVOKE_REGION_WIN' layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE' -- cgit v1.2.3 From 5b7e83e5e2f2919d066a51f3d0a6a9925d31db20 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 06:07:56 +0000 Subject: Fix for [#20030] selection frame in edit mode turns white --- source/blender/editors/space_view3d/drawobject.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 51af31496f1..2c4f010ce3e 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5642,7 +5642,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if((flag & DRAW_CONSTCOLOR) == 0) { project_short(ar, ob->obmat[3], &base->sx); - if((G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM); + if( (!scene->obedit) && (G.moving & G_TRANSFORM_OBJ) && (base->flag & (SELECT+BA_WAS_SEL))) UI_ThemeColor(TH_TRANSFORM); else { if(ob->type==OB_LAMP) UI_ThemeColor(TH_LAMP); -- cgit v1.2.3 From 42e8eb36bdf095b0123d9e28b59818510a37f0a1 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 06:25:25 +0000 Subject: Fix for [#20042] There are remains of "Shaded" draw type in a panel Removed references to shaded view now it's disabled --- source/blender/blenloader/intern/readfile.c | 8 ++++++++ source/blender/makesrna/intern/rna_object.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 60273ba54d0..ce760643b3d 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10100,6 +10100,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ntree= ntree->id.next; } } + { + Object *ob=main->object.first; + while (ob) { + /* shaded mode disabled for now */ + if (ob->dt == OB_SHADED) ob->dt = OB_TEXTURE; + ob=ob->id.next; + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 148f9614dcb..7b340595f4a 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1317,7 +1317,7 @@ static void rna_def_object(BlenderRNA *brna) {OB_BOUNDBOX, "BOUNDS", 0, "Bounds", ""}, {OB_WIRE, "WIRE", 0, "Wire", ""}, {OB_SOLID, "SOLID", 0, "Solid", ""}, - {OB_SHADED, "SHADED", 0, "Shaded", ""}, + // disabled {OB_SHADED, "SHADED", 0, "Shaded", ""}, {OB_TEXTURE, "TEXTURED", 0, "Textured", ""}, {0, NULL, 0, NULL, NULL}}; -- cgit v1.2.3 From 6e467285cf76b7dc2e9dc602d26c23c61087ff83 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 06:32:43 +0000 Subject: [#20051] x for removing a mesh from a group doesnt scale with ui --- release/scripts/ui/properties_object.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index d8dd13aac7a..c7c1ce24d59 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -162,7 +162,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel): row = col.box().row() row.prop(group, "name", text="") - row.operator("object.group_remove", text="", icon='VICON_X') + row.operator("object.group_remove", text="", icon='ICON_X') split = col.box().split() -- cgit v1.2.3 From 8d9fba656869795d9d0135d2bc3b279e9176f9a1 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Thu, 26 Nov 2009 09:40:37 +0000 Subject: BGE: allow using dynamic loaded mesh in replaceMesh for soft body. This is a quick fix, it doesn't work yet on skinned mesh. --- source/gameengine/Ketsji/KX_Scene.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index b45fecb0f98..c8c5b33693b 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -1106,8 +1106,10 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u if (oldblendobj==NULL) { - std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl; - bHasShapeKey= bHasDvert= bHasArmature=bHasModifier=bHasSoftBody= false; + if (bHasModifier || bHasShapeKey || bHasDvert || bHasArmature) { + std::cout << "warning: ReplaceMesh() new mesh is not used in an object from the current scene, you will get incorrect behavior" << std::endl; + bHasShapeKey= bHasDvert= bHasArmature=bHasModifier= false; + } } if (bHasModifier) -- cgit v1.2.3 From 9712e3a670659874ef303f45f03b7df6e1d8d649 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 09:48:53 +0000 Subject: fix for adding drivers to constraints via python. the RNA constraint api was checking the current context when getting the constraint driver path and renaming constraints. this made scripts not work properly so changed this to search for the constraint pose channel user within the object (if the object its self is not the user). --- source/blender/editors/include/ED_object.h | 1 + source/blender/editors/object/object_constraint.c | 27 +++++++++++++++++++++++ source/blender/makesrna/intern/rna_constraint.c | 26 +++++++++++----------- 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 1785b0303cb..9842dc1ef76 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -92,6 +92,7 @@ int object_data_is_libdata(struct Object *ob); /* constraints */ struct ListBase *get_active_constraints(struct Object *ob); +struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r); struct bConstraint *get_active_constraint(struct Object *ob); void object_test_constraints(struct Object *ob); diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 6d4706d02b3..eababfe8080 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -98,6 +98,33 @@ ListBase *get_active_constraints (Object *ob) return NULL; } +ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_r) +{ + if(pchan_r) + *pchan_r= NULL; + + if (ELEM(NULL, ob, con)) + return NULL; + + if((BLI_findindex(&ob->constraints, con) != -1)) { + return &ob->constraints; + } + else if(ob->pose) { + bPoseChannel *pchan; + for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if((BLI_findindex(&pchan->constraints, con) != -1)) { + + if(pchan_r) + *pchan_r= pchan; + + return &pchan->constraints; + } + } + } + + return NULL; +} + /* single constraint */ bConstraint *get_active_constraint (Object *ob) { diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index dbe5db39677..12b26f8699e 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -92,6 +92,8 @@ EnumPropertyItem constraint_ik_axisref_items[] ={ #ifdef RNA_RUNTIME +#include + #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_constraint.h" @@ -168,7 +170,7 @@ static void rna_Constraint_name_set(PointerRNA *ptr, const char *value) /* make sure name is unique */ if (ptr->id.data) { Object *ob= ptr->id.data; - ListBase *list= get_active_constraints(ob); + ListBase *list = get_constraint_lb(ob, con, NULL); /* if we have the list, check for unique name, otherwise give up */ if (list) @@ -183,19 +185,17 @@ static char *rna_Constraint_path(PointerRNA *ptr) { Object *ob= ptr->id.data; bConstraint *con= ptr->data; - bPoseChannel *pchan= get_active_posechannel(ob); - ListBase *actlist= get_active_constraints(ob); - short inList = 0; - - /* check if constraint is in the given list */ - if (actlist) - inList= (BLI_findindex(actlist, con) != -1); - - /* if constraint is in the list, the list is for the active bone... */ - if ((inList) && (actlist != &ob->constraints) && (pchan)) + bPoseChannel *pchan; + ListBase *lb = get_constraint_lb(ob, con, &pchan); + + if(lb == NULL) + printf("rna_Constraint_path: internal error, constraint '%s' not found in object '%s'\n", con->name, ob->id.name); + + if(pchan) { return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", pchan->name, con->name); - else - return BLI_sprintfN("constraints[\"%s\"]", con->name); + } + + return BLI_sprintfN("constraints[\"%s\"]", con->name); } static void rna_Constraint_update(bContext *C, PointerRNA *ptr) -- cgit v1.2.3 From baac1f2267631598613a6f189f45f4a5fea21b9e Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 26 Nov 2009 10:19:09 +0000 Subject: Bugfix #20069: Centre to cursor or centre to mouse, centre object. - Was missing notifier after editing - Menu entries go bad naming after the UI api renaming --- release/scripts/io/import_anim_bvh.py | 5 +- release/scripts/ui/space_view3d.py | 6 +- source/blender/editors/object/object_edit.c | 79 ------------------------ source/blender/editors/object/object_transform.c | 1 + 4 files changed, 6 insertions(+), 85 deletions(-) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 65f397f681a..0eff15f9ba1 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -227,8 +227,6 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): if ROT_STYLE != 'NATIVE': rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) - #x,y,z = x/10.0, y/10.0, z/10.0 # For IPO's 36 is 360d - # Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling. # Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation. @@ -337,7 +335,7 @@ def bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD - bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) + bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) # XXX invalid scn.update(1) return objects @@ -540,6 +538,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO ''' # KEYFRAME METHOD, SLOW, USE IPOS DIRECT + # TODO: use f-point samples instead (Aligorith) # Animate the data, the last used bvh_node will do since they all have the same number of frames for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 4a7f78d4840..da80a95150e 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -102,9 +102,9 @@ class VIEW3D_MT_transform(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' - layout.operator("object.center_set").type = 'CENTER' - layout.operator("object.center_set").type = 'CENTER_NEW' - layout.operator("object.center_set").type = 'CENTER_CURSOR' + layout.operator("object.center_set", text="ObData to Center").type = 'CENTER' + layout.operator("object.center_set", text="Center New").type = 'CENTER_NEW' + layout.operator("object.center_set", text="Center Cursor").type = 'CENTER_CURSOR' class VIEW3D_MT_mirror(bpy.types.Menu): bl_label = "Mirror" diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index ecb9226e5f7..4678ee35fcd 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1733,85 +1733,6 @@ void image_aspect(Scene *scene, View3D *v3d) } -void set_ob_ipoflags(Scene *scene, View3D *v3d) -{ -#if 0 // XXX old animation system - Base *base; - int set= 1; - - if (!v3d) { - error("Can't do this! Open a 3D window"); - return; - } - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(base->object->ipoflag & OB_DRAWKEY) { - set= 0; - break; - } - } - } - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(set) { - base->object->ipoflag |= OB_DRAWKEY; - if(base->object->ipo) base->object->ipo->showkey= 1; - } - else { - base->object->ipoflag &= ~OB_DRAWKEY; - if(base->object->ipo) base->object->ipo->showkey= 0; - } - } - } -#endif // XXX old animation system -} - - -void select_select_keys(Scene *scene, View3D *v3d) -{ -#if 0 // XXX old animation system - Base *base; - IpoCurve *icu; - BezTriple *bezt; - int a; - - if (!v3d) { - error("Can't do this! Open a 3D window"); - return; - } - - if(scene->id.lib) return; - - if(okee("Show and select all keys")==0) return; - - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - if(base->object->ipo) { - base->object->ipoflag |= OB_DRAWKEY; - base->object->ipo->showkey= 1; - icu= base->object->ipo->curve.first; - while(icu) { - a= icu->totvert; - bezt= icu->bezt; - while(a--) { - bezt->f1 |= SELECT; - bezt->f2 |= SELECT; - bezt->f3 |= SELECT; - bezt++; - } - icu= icu->next; - } - } - } - } - - -#endif // XXX old animation system -} - - int vergbaseco(const void *a1, const void *a2) { Base **x1, **x2; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index c8f1bb55136..a8be62f96cf 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -1011,6 +1011,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op) if (tot_change) { DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } /* Warn if any errors occured */ -- cgit v1.2.3 From 802cc77f71d6a1deb1e4773f135653f836e84e15 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 26 Nov 2009 11:13:10 +0000 Subject: Patch #20037: Use named components for Drivers instead of array_index This patch, by Elia Sarti (vekoon), simply adds the possibility to specify the final array component of the RNA path in the path itself, e.g. using location[0] or location["x"] or even location.x, instead of specifying this using an "array_index" This should be easier for users to understand the driver system. The array-indices have been kept (but hidden from the UI under standard situations) since they are theoretically a tad faster than the in-path lookups still, and are easier for internal-tools to set for now... --- source/blender/blenkernel/intern/fcurve.c | 2 +- source/blender/editors/space_graph/graph_buttons.c | 4 +- source/blender/makesrna/RNA_access.h | 6 +- source/blender/makesrna/intern/rna_access.c | 141 +++++++++++++++++---- 4 files changed, 124 insertions(+), 29 deletions(-) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index e90fccf6b29..0623a5cbe5e 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -822,7 +822,7 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar) } /* get property to read from, and get value as appropriate */ - if (RNA_path_resolve(&id_ptr, path, &ptr, &prop)) { + if (RNA_path_resolve_full(&id_ptr, path, &ptr, &prop, &index)) { switch (RNA_property_type(prop)) { case PROP_BOOLEAN: if (RNA_property_array_length(&ptr, prop)) diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 97b3dd29ef9..05987087288 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -400,7 +400,9 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* array index */ // TODO: this needs selector which limits it to ok values - uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0); + // NOTE: for for now, the array index box still gets shown when non-zero (i.e. for tweaking rigs as necessary) + if (dtar->array_index) + uiItemR(col, "Index", 0, &dtar_ptr, "array_index", 0); } } diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index d35e5632053..3c420535e2b 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -615,6 +615,7 @@ int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension); int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]); char RNA_property_array_item_char(PropertyRNA *prop, int index); +int RNA_property_array_item_index(PropertyRNA *prop, char name); int RNA_property_string_maxlength(PropertyRNA *prop); @@ -718,7 +719,10 @@ char *RNA_path_append(const char *path, PointerRNA *ptr, PropertyRNA *prop, char *RNA_path_back(const char *path); int RNA_path_resolve(PointerRNA *ptr, const char *path, - PointerRNA *r_ptr, PropertyRNA **r_prop); + PointerRNA *r_ptr, PropertyRNA **r_prop); + +int RNA_path_resolve_full(PointerRNA *ptr, const char *path, + PointerRNA *r_ptr, PropertyRNA **r_prop, int *index); char *RNA_path_from_ID_to_struct(PointerRNA *ptr); char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 669810bb39b..6c0a3c57f65 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -24,6 +24,7 @@ #include #include +#include #include "MEM_guardedalloc.h" @@ -694,8 +695,56 @@ char RNA_property_array_item_char(PropertyRNA *prop, int index) return vectoritem[index]; else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_RGB)) return coloritem[index]; - else - return '\0'; + + return '\0'; +} + +int RNA_property_array_item_index(PropertyRNA *prop, char name) +{ + PropertySubType subtype= rna_ensure_property(prop)->subtype; + + name= toupper(name); + + /* get index based on string name/alias */ + /* maybe a function to find char index in string would be better than all the switches */ + if (ELEM(subtype, PROP_QUATERNION, PROP_AXISANGLE)) { + switch (name) { + case 'W': + return 0; + case 'X': + return 1; + case 'Y': + return 2; + case 'Z': + return 3; + } + } + else if(ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION)) { + switch (name) { + case 'X': + return 0; + case 'Y': + return 1; + case 'Z': + return 2; + case 'W': + return 3; + } + } + else if (ELEM(subtype, PROP_COLOR, PROP_RGB)) { + switch (name) { + case 'R': + return 0; + case 'G': + return 1; + case 'B': + return 2; + case 'A': + return 3; + } + } + + return -1; } void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax) @@ -2445,11 +2494,16 @@ static int rna_token_strip_quotes(char *token) /* Resolve the given RNA path to find the pointer+property indicated at the end of the path */ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop) +{ + return RNA_path_resolve_full(ptr, path, r_ptr, r_prop, NULL); +} + +int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *index) { PropertyRNA *prop; PointerRNA curptr, nextptr; char fixedbuf[256], *token; - int len, intkey; + int type, len, intkey; prop= NULL; curptr= *ptr; @@ -2484,43 +2538,78 @@ int RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, Prope if(!prop) return 0; + type= RNA_property_type(prop); + /* now look up the value of this property if it is a pointer or * collection, otherwise return the property rna so that the * caller can read the value of the property itself */ - if(RNA_property_type(prop) == PROP_POINTER) { + switch (type) { + case PROP_POINTER: nextptr= RNA_property_pointer_get(&curptr, prop); if(nextptr.data) curptr= nextptr; else return 0; - } - else if(RNA_property_type(prop) == PROP_COLLECTION && *path) { - /* resolve the lookup with [] brackets */ - token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); - if(!token) - return 0; + break; + case PROP_COLLECTION: + if(*path) { + /* resolve the lookup with [] brackets */ + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); - len= strlen(token); - - /* check for "" to see if it is a string */ - if(rna_token_strip_quotes(token)) { - RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr); - } - else { - /* otherwise do int lookup */ - intkey= atoi(token); - RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr); + if(!token) + return 0; + + len= strlen(token); + + /* check for "" to see if it is a string */ + if(rna_token_strip_quotes(token)) { + RNA_property_collection_lookup_string(&curptr, prop, token+1, &nextptr); + } + else { + /* otherwise do int lookup */ + intkey= atoi(token); + RNA_property_collection_lookup_int(&curptr, prop, intkey, &nextptr); + } + + if(token != fixedbuf) + MEM_freeN(token); + + if(nextptr.data) + curptr= nextptr; + else + return 0; } - if(token != fixedbuf) - MEM_freeN(token); + break; + default: + if (index==NULL) + break; - if(nextptr.data) - curptr= nextptr; - else - return 0; + *index= -1; + + if (*path) { + if (*path=='[') { + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 1); + + /* check for "" to see if it is a string */ + if(rna_token_strip_quotes(token)) { + *index= RNA_property_array_item_index(prop, *(token+1)); + } + else { + /* otherwise do int lookup */ + *index= atoi(token); + } + } + else { + token= rna_path_token(&path, fixedbuf, sizeof(fixedbuf), 0); + *index= RNA_property_array_item_index(prop, *token); + } + + if(token != fixedbuf) + MEM_freeN(token); + } } } -- cgit v1.2.3 From 7828f822dfd73f5ef6bc8127961c9a4a10fd9f38 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 26 Nov 2009 11:38:28 +0000 Subject: Bugfix: pose bone was doing double translation in some cases, due to my commit yesterday. --- source/blender/blenkernel/intern/armature.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 23b08007d1f..a570697dfda 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -2253,8 +2253,8 @@ void where_is_pose_bone(Scene *scene, Object *ob, bPoseChannel *pchan, float cti mul_mat3_m4_v3(offs_bone, chan_loc); /* for hinge we use armature instead of pose mat */ - if(bone->flag & BONE_HINGE) mul_m4_v3(parbone->arm_mat, chan_loc); - else mul_m4_v3(parchan->pose_mat, chan_loc); + if(bone->flag & BONE_HINGE) mul_mat3_m4_v3(parbone->arm_mat, chan_loc); + else mul_mat3_m4_v3(parchan->pose_mat, chan_loc); add_v3_v3v3(pchan->pose_mat[3], bone_loc, chan_loc); } -- cgit v1.2.3 From 0eb70a4ca968f2a74389922ae78e09f0afa1118e Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 26 Nov 2009 12:22:43 +0000 Subject: Sequencer Drawing Code - Refactoring Part 1: - Started cleaning up the sequencer drawing code by firstly decoupling the different draw modes from each other (i.e. timeline view doesn't call image view). - Also separated out a few distinct few phases in sequencer-timeline drawing into different functions instead of being lumped in the single one. Recoded part of this to make it less ugly too... - Made markers get drawn again in the sequencer timeline view --- .../editors/space_sequencer/sequencer_draw.c | 197 ++++++++++++--------- .../editors/space_sequencer/sequencer_intern.h | 6 +- .../editors/space_sequencer/space_sequencer.c | 19 +- 3 files changed, 133 insertions(+), 89 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index c16e328d8dd..a1488d867d7 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -57,6 +57,7 @@ #include "BIF_glutil.h" #include "ED_anim_api.h" +#include "ED_markers.h" #include "ED_space_api.h" #include "ED_sequencer.h" #include "ED_types.h" @@ -610,8 +611,8 @@ void set_special_seq_update(int val) else special_seq_update= 0; } - -static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) +// XXX todo: remove special offset code for image-buf calculations... +void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) { extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); struct ImBuf *ibuf; @@ -767,6 +768,7 @@ static void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) } +// XXX part of wacko image-drawing system... void seq_reset_imageofs(SpaceSeq *sseq) { sseq->xof = sseq->yof = sseq->zoom = 0; @@ -862,114 +864,139 @@ void drawprefetchseqspace(Scene *scene, ARegion *ar, SpaceSeq *sseq) } } -void drawseqspace(const bContext *C, ARegion *ar) +/* draw backdrop of the sequencer strips view */ +static void draw_seq_backdrop(View2D *v2d) { - ScrArea *sa= CTX_wm_area(C); - SpaceSeq *sseq= sa->spacedata.first; - Scene *scene= CTX_data_scene(C); - View2D *v2d= &ar->v2d; - View2DScrollers *scrollers; - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - float col[3]; - int i, flag=0; - - if(sseq->mainb != SEQ_DRAW_SEQUENCE) { - draw_image_seq(scene, ar, sseq); - return; - } - - UI_GetThemeColor3fv(TH_BACK, col); - if(ed && ed->metastack.first) glClearColor(col[0], col[1], col[2]-0.1, 0.0); - else glClearColor(col[0], col[1], col[2], 0.0); - - glClear(GL_COLOR_BUFFER_BIT); - - UI_view2d_view_ortho(C, v2d); + int i; + /* darker grey overlay over the view backdrop */ UI_ThemeColorShade(TH_BACK, -20); - glRectf(v2d->cur.xmin, 0.0, v2d->cur.xmax, 1.0); + glRectf(v2d->cur.xmin, -1.0, v2d->cur.xmax, 1.0); - boundbox_seq(scene, &v2d->tot); - /* Alternating horizontal stripes */ i= MAX2(1, ((int)v2d->cur.ymin)-1); glBegin(GL_QUADS); - while (icur.ymax) { - if (((int)i) & 1) - UI_ThemeColorShade(TH_BACK, -15); - else - UI_ThemeColorShade(TH_BACK, -25); - - glVertex2f(v2d->cur.xmax, i); - glVertex2f(v2d->cur.xmin, i); - glVertex2f(v2d->cur.xmin, i+1); - glVertex2f(v2d->cur.xmax, i+1); - i+=1.0; - } + while (icur.ymax) { + if (((int)i) & 1) + UI_ThemeColorShade(TH_BACK, -15); + else + UI_ThemeColorShade(TH_BACK, -25); + + glVertex2f(v2d->cur.xmax, i); + glVertex2f(v2d->cur.xmin, i); + glVertex2f(v2d->cur.xmin, i+1); + glVertex2f(v2d->cur.xmax, i+1); + + i+=1.0; + } glEnd(); - /* Force grid lines */ + /* Darker lines separating the horizontal bands */ i= MAX2(1, ((int)v2d->cur.ymin)-1); + UI_ThemeColor(TH_GRID); + glBegin(GL_LINES); - - while (icur.ymax) { - UI_ThemeColor(TH_GRID); - glVertex2f(v2d->cur.xmax, i); - glVertex2f(v2d->cur.xmin, i); - i+=1.0; - } + while (i < v2d->cur.ymax) { + glVertex2f(v2d->cur.xmax, i); + glVertex2f(v2d->cur.xmin, i); + + i+=1.0; + } glEnd(); - - UI_view2d_constant_grid_draw(C, v2d); +} - /* sequences: first deselect */ - if(ed) { - Sequence *last_seq = active_seq_get(scene); - int sel = 0, j; - int outline_tint; - float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); - /* loop through twice, first unselected, then selected */ - for (j=0; j<2; j++) { - seq= ed->seqbasep->first; - if (j==0) outline_tint = -150; - else outline_tint = -60; +/* draw the contents of the sequencer strips view */ +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); + int sel = 0, j; + float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); + + /* loop through twice, first unselected, then selected */ + for (j=0; j<2; j++) { + Sequence *seq; + int outline_tint= (j) ? -60 : -150; /* highlighting around strip edges indicating selection */ + + /* loop through strips, checking for those that are visible */ + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + /* boundbox and selection tests for NOT drawing the strip... */ + if ((seq->flag & SELECT) == sel) continue; + else if (seq == last_seq) continue; + else if (MIN2(seq->startdisp, seq->start) > v2d->cur.xmax) continue; + else if (MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin) continue; + else if (seq->machine+1.0 < v2d->cur.ymin) continue; + else if (seq->machine > v2d->cur.ymax) continue; - while(seq) { /* bound box test, dont draw outside the view */ - if ( ((seq->flag & SELECT) == sel) || - seq == last_seq || - MIN2(seq->startdisp, seq->start) > v2d->cur.xmax || - MAX2(seq->enddisp, seq->start+seq->len) < v2d->cur.xmin || - seq->machine+1.0 < v2d->cur.ymin || - seq->machine > v2d->cur.ymax) - { - /* dont draw */ - } else { - draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx); - } - seq= seq->next; - } - sel= SELECT; /* draw selected next time round */ - } - /* draw the last selected last, removes some overlapping error */ - if (last_seq) { - draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx); + /* strip passed all tests unscathed... so draw it now */ + draw_seq_strip(scene, ar, sseq, seq, outline_tint, pixelx); } + + /* draw selected next time round */ + sel= SELECT; } + + /* draw the last selected last (i.e. 'active' in other parts of Blender), removes some overlapping error */ + if (last_seq) + draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx); +} - /* text draw cached, in pixelspace now */ - UI_view2d_text_cache_draw(ar); +/* Draw Timeline/Strip Editor Mode for Sequencer */ +void draw_timeline_seq(const bContext *C, ARegion *ar) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + SpaceSeq *sseq= CTX_wm_space_seq(C); + View2D *v2d= &ar->v2d; + View2DScrollers *scrollers; + float col[3]; + int flag=0; - /* current frame */ + /* clear and setup matrix */ + UI_GetThemeColor3fv(TH_BACK, col); + if (ed && ed->metastack.first) + glClearColor(col[0], col[1], col[2]-0.1, 0.0); + else + glClearColor(col[0], col[1], col[2], 0.0); + glClear(GL_COLOR_BUFFER_BIT); + UI_view2d_view_ortho(C, v2d); + + /* calculate extents of sequencer strips/data + * NOTE: needed for the scrollers later + */ + boundbox_seq(scene, &v2d->tot); + + + /* draw backdrop */ + draw_seq_backdrop(v2d); + + /* regular grid-pattern over the rest of the view (i.e. frame grid lines) */ + UI_view2d_constant_grid_draw(C, v2d); + + + /* sequence strips (if there is data available to be drawn) */ + if (ed) { + /* draw the data */ + draw_seq_strips(C, ed, ar); + + /* text draw cached (for sequence names), in pixelspace now */ + UI_view2d_text_cache_draw(ar); + } + + /* current frame */ + UI_view2d_view_ortho(C, v2d); if ((sseq->flag & SEQ_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; if ((sseq->flag & SEQ_NO_DRAW_CFRANUM)==0) flag |= DRAWCFRA_SHOW_NUMBOX; ANIM_draw_cfra(C, v2d, flag); - /* Draw markers */ -// draw_markers_timespace(SCE_MARKERS, DRAW_MARKERS_LINES); + /* markers */ + UI_view2d_view_orthoSpecial(C, v2d, 1); + draw_markers_time(C, DRAW_MARKERS_LINES); /* preview range */ UI_view2d_view_ortho(C, v2d); diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index a87f7f64ee9..a68001e536b 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -45,11 +45,11 @@ struct Scene; /* space_sequencer.c */ struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa); -/* sequencer_header.c */ -// void sequencer_header_buttons(const struct bContext *C, struct ARegion *ar); /* sequencer_draw.c */ -void drawseqspace(const struct bContext *C, struct ARegion *ar); +void draw_timeline_seq(const struct bContext *C, struct ARegion *ar); +void draw_image_seq(struct Scene *scene, struct ARegion *ar, struct SpaceSeq *sseq); + void seq_reset_imageofs(struct SpaceSeq *sseq); /* sequencer_edit.c */ diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 7e1fdc80bb3..f0fe3b47492 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -194,6 +194,23 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } +static void sequencer_main_area_draw(const bContext *C, ARegion *ar) +{ + ScrArea *sa= CTX_wm_area(C); + SpaceSeq *sseq= sa->spacedata.first; + Scene *scene= CTX_data_scene(C); + + + if (sseq->mainb != SEQ_DRAW_SEQUENCE) { + /* image-viewer types */ + draw_image_seq(scene, ar, sseq); + } + else { + /* NLE - strip editing timeline interface */ + draw_timeline_seq(C, ar); + } +} + /* add handlers, stuff you only do once or on area/region changes */ static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar) @@ -281,7 +298,7 @@ void ED_spacetype_sequencer(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_WINDOW; art->init= sequencer_main_area_init; - art->draw= drawseqspace; + art->draw= sequencer_main_area_draw; art->listener= sequencer_main_area_listener; art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION; -- cgit v1.2.3 From 68b100232b7e9c56e3c0d5984e8292749614b7a7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 13:36:15 +0000 Subject: basic support for Sintels arm rig with property driven ik/fk switching and stretch bones to display connections, still need to do shoulder hinge and hand delta offset bones --- release/scripts/modules/rigify.py | 333 ++++++++++++++++++++++++++++++++------ 1 file changed, 284 insertions(+), 49 deletions(-) diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py index 2655079003a..9575f38a3ea 100644 --- a/release/scripts/modules/rigify.py +++ b/release/scripts/modules/rigify.py @@ -18,6 +18,7 @@ import bpy from functools import reduce +from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get @@ -36,31 +37,47 @@ def get_bone_data(obj, bone_name): else: bone = arm.bones[bone_name] - return obj, arm, pbone, bone + return arm, pbone, bone def bone_basename(name): return name.split(".")[0] +def copy_bone_simple(arm, from_bone, name): + ebone = arm.edit_bones[from_bone] + ebone_new = arm.edit_bones.new(name) + ebone_new.head = ebone.head + ebone_new.tail = ebone.tail + ebone_new.roll = ebone.roll + return ebone_new + + def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another ''' - is_editmode = (obj.mode == 'EDIT') - if not is_editmode: - bpy.ops.object.mode_set(mode='EDIT') + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') arm = obj.data stretch_ebone = arm.edit_bones.new(name) stretch_name = stretch_ebone.name + del name + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() - tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + + # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter + #if (head - tail).length < 0.1: + if 1: + tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() # Now for the constraint bpy.ops.object.mode_set(mode='OBJECT') from_pbone = obj.pose.bones[from_name] to_pbone = obj.pose.bones[to_name] + stretch_pbone = obj.pose.bones[stretch_name] con = stretch_pbone.constraints.new('COPY_LOCATION') @@ -70,14 +87,55 @@ def add_stretch_to(obj, from_name, to_name, name): con = stretch_pbone.constraints.new('STRETCH_TO') con.target = obj con.subtarget = to_name - con.original_length = (head-tail).length + con.original_length = (head - tail).length con.keep_axis = 'PLANE_X' con.volume = 'NO_VOLUME' - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT') - #else: - # bpy.ops.object.mode_set(mode='OBJECT') + bpy.ops.object.mode_set(mode=mode_orig) + + +def add_pole_target_bone(obj, base_name, name, mode='CROSS'): + ''' + Does not actually create a poll target, just the bone to use as a poll target + ''' + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + + poll_ebone = arm.edit_bones.new(base_name + "_poll") + base_ebone = arm.edit_bones[base_name] + poll_name = poll_ebone.name + parent_ebone = base_ebone.parent + + base_head = base_ebone.head.copy() + base_tail = base_ebone.tail.copy() + base_dir = base_head - base_tail + + parent_head = parent_ebone.head.copy() + parent_tail = parent_ebone.tail.copy() + parent_dir = parent_head - parent_tail + + distance = (base_dir.length + parent_dir.length) + + if mode == 'CROSS': + offset = base_dir.copy().normalize() - parent_dir.copy().normalize() + offset.length = distance + else: + offset = Vector(0,0,0) + if mode[0]=="+": + val = distance + else: + val = -distance + + setattr(offset, mode[1].lower(), val) + + poll_ebone.head = base_head + offset + poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) + + bpy.ops.object.mode_set(mode=mode_orig) + + return poll_name def gen_finger(obj, orig_bone_name): @@ -85,7 +143,7 @@ def gen_finger(obj, orig_bone_name): # *** EDITMODE # get assosiated data - obj, arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) obj.animation_data_create() # needed if its a new armature with no keys @@ -121,7 +179,7 @@ def gen_finger(obj, orig_bone_name): driver_bone_pairs = [] for child_bone_name in children: - obj, arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) + arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) # finger.02 --> finger_driver.02 driver_bone_name = child_bone_name.split('.') @@ -157,17 +215,17 @@ def gen_finger(obj, orig_bone_name): bpy.ops.object.mode_set(mode='OBJECT') - obj, arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) - obj, arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) + arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) + arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) # only allow Y scale control_pbone.lock_scale = (True, False, True) - control_pbone["bend_ratio"]= 0.4 + control_pbone["bend_ratio"] = 0.4 prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) - prop["min"] = 0.0 - prop["max"] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 con = orig_pbone.constraints.new('COPY_LOCATION') con.target = obj @@ -191,7 +249,7 @@ def gen_finger(obj, orig_bone_name): if i==2: break - obj, arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) + arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) driver_pbone.rotation_mode = 'YZX' fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) @@ -221,7 +279,7 @@ def gen_finger(obj, orig_bone_name): elif i==1: driver.expression = '(-scale+1.0)*pi*2.0*br' - obj, arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) + arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) # only allow X rotation driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) @@ -234,6 +292,8 @@ def gen_delta(obj, delta_name): Use this bone to define a delta thats applied to its child in pose mode. ''' + arm = obj.data + mode_orig = obj.mode bpy.ops.object.mode_set(mode='OBJECT') @@ -244,46 +304,74 @@ def gen_delta(obj, delta_name): print("only 1 child supported for delta") child_name = children[0].name + arm, child_pbone, child_bone = get_bone_data(obj, child_name) + + delta_phead = delta_pbone.head.copy() + delta_ptail = delta_pbone.tail.copy() + delta_pmatrix = delta_pbone.matrix.copy() + + child_phead = child_pbone.head.copy() + child_ptail = child_pbone.tail.copy() + child_pmatrix = child_pbone.matrix.copy() - delta_head = delta_pbone.head.copy() - delta_tail = delta_pbone.tail.copy() - delta_matrix = delta_pbone.matrix.copy() children = delta_pbone.children bpy.ops.object.mode_set(mode='EDIT') - arm = obj.data + delta_ebone = arm.edit_bones[delta_name] + child_ebone = arm.edit_bones[child_name] - # XXX -probably should allow via the UI - for ebone in arm.edit_bones: - ebone.selected = ebone.head_selected = ebone.tail_selected = False + delta_head = delta_ebone.head.copy() + delta_tail = delta_ebone.tail.copy() - # Select for deleting - delta_ebone = arm.edit_bones[delta_name] - delta_ebone.selected = delta_ebone.head_selected = delta_ebone.tail_selected = True + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + child_head = child_ebone.head.copy() + child_tail = child_ebone.tail.copy() - bpy.ops.armature.delete() + arm.edit_bones.remove(delta_ebone) + del delta_ebone # cant use thz bpy.ops.object.mode_set(mode='OBJECT') # Move the child bone to the deltas location obj.animation_data_create() - child_pbone = obj.pose[child_name] + child_pbone = obj.pose.bones[child_name] # ------------------- drivers - fcurve_driver = child_pbone.driver_add("rotation_euler", 0) - #fcurve_driver = obj.animation_data.drivers[-1] # XXX, WATCH THIS - driver = fcurve_driver.driver - driver.type = 'AVERAGE' - mod = driver.modifiers.new('GENERATOR') + child_pbone.rotation_mode = 'XYZ' + rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() + rot = rot.invert().toEuler() + + fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = rot[i] + mod.coefficients[1] = 0.0 + + # tricky, find the transform to drive the bone to this location. + delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) + + fcurve_drivers = child_pbone.driver_add("location", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = delta_head_offset[i] + mod.coefficients[1] = 0.0 - obj, arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) - bpy.ops.object.mode_set(mode='EDIT') + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + bpy.ops.object.mode_set(mode='EDIT') bpy.ops.object.mode_set(mode=mode_orig) @@ -293,6 +381,11 @@ def gen_arm(obj, orig_bone_name): the bone with the 'arm' property is the upper arm, this assumes a chain as follows. [shoulder, upper_arm, forearm, hand] ...where this bone is 'upper_arm' + + there are 3 chains + - Original + - IK, MCH-%s_ik + - IKSwitch, MCH-%s () """ def validate_chain(): @@ -300,8 +393,8 @@ def gen_arm(obj, orig_bone_name): Sanity check and return the arm as a list of bone names. ''' # do a sanity check - obj, arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) - shoulder_pbone = arm_pbone.parent + arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + shoulder_pbone = orig_pbone.parent if not shoulder_pbone: print("could not find 'arm' parent, skipping:", orig_bone_name) @@ -324,19 +417,162 @@ def gen_arm(obj, orig_bone_name): return shoulder_pbone.name, orig_pbone.name, forearm_pbone.name, hand_pbone.name - shoulder_name, arm_name, forearm_name, hand_name = validate_chain() - - obj, arm, hand_pbone, hand_ebone = get_bone_data(obj, hand_name) + arm = obj.data - # Add the edit bones - hand_ik_ebone = arm.edit_bones.new(hand_name + "_ik") + original_chain_tuple = validate_chain() + shoulder_name, arm_name, forearm_name, hand_name = original_chain_tuple - hand_ik_ebone.head = hand_ebone.head - hand_ik_ebone.tail = hand_ebone.tail - hand_ik_ebone.roll = hand_ebone.roll + def chain_ik(prefix="MCH-%s_ik"): + + arm, arm_pbone, arm_ebone = get_bone_data(obj, arm_name) + arm, hand_pbone, hand_ebone = get_bone_data(obj, hand_name) + + # Add the edit bones + hand_ik_ebone = copy_bone_simple(arm, hand_name, prefix % hand_name) + hand_ik_name = hand_ik_ebone.name + + arm_ik_ebone = copy_bone_simple(arm, arm_name, prefix % arm_name) + arm_ik_name = arm_ik_ebone.name + + forearm_ik_ebone = copy_bone_simple(arm, forearm_name, prefix % forearm_name) + forearm_ik_name = forearm_ik_ebone.name + arm_ik_ebone.parent = arm_ebone.parent + forearm_ik_ebone.connected = arm_ebone.connected + + forearm_ik_ebone.parent = arm_ik_ebone + forearm_ik_ebone.connected = True + + + # Add the bone used for the arms poll target + pole_ik_name = add_pole_target_bone(obj, forearm_name, "elbow_poll", mode='+Z') + + bpy.ops.object.mode_set(mode='OBJECT') + + arm, forearm_ik_pbone, forearm_ik_bone = get_bone_data(obj, forearm_ik_name) + + + con = forearm_ik_pbone.constraints.new('IK') + con.target = obj + con.subtarget = hand_ik_name + con.pole_target = obj + con.pole_subtarget = pole_ik_name + + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.chain_length = 2 + con.pole_angle = -90.0 # XXX, RAD2DEG + + # ID Propery on the hand for IK/FK switch + arm, hand_ik_pbone, hand_ik_bone = get_bone_data(obj, hand_ik_name) + + prop = rna_idprop_ui_prop_get(hand_ik_pbone, "ik", create=True) + hand_ik_pbone["ik"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + bpy.ops.object.mode_set(mode='EDIT') + return None, arm_ik_name, forearm_ik_name, hand_ik_name, pole_ik_name + + ik_chain_tuple = chain_ik() + + def chain_switch(prefix="MCH-%s"): + + arm_sw_ebone = copy_bone_simple(arm, arm_name, prefix % arm_name) + arm_sw_name = arm_sw_ebone.name + + + + forearm_sw_ebone = copy_bone_simple(arm, forearm_name, prefix % forearm_name) + forearm_sw_name = forearm_sw_ebone.name + forearm_sw_ebone.parent = arm_sw_ebone + forearm_sw_ebone.connected = arm.edit_bones[forearm_name].connected + + hand_sw_ebone = copy_bone_simple(arm, hand_name, prefix % hand_name) + hand_sw_name = hand_sw_ebone.name + hand_sw_ebone.parent = forearm_sw_ebone + hand_sw_ebone.connected = arm.edit_bones[hand_name].connected + + bpy.ops.object.mode_set(mode='OBJECT') + + + # Add constraints + arm_sw_pbone = obj.pose.bones[arm_sw_name] + forearm_sw_pbone = obj.pose.bones[forearm_sw_name] + hand_sw_pbone = obj.pose.bones[hand_sw_name] + + dummy, arm_ik_name, forearm_ik_name, hand_ik_name, pole_ik_name = ik_chain_tuple + + ik_driver_path = obj.pose.bones[hand_ik_name].path_to_id() + '["ik"]' + + + def ik_fk_driver(con): + ''' + 3 bones use this for ik/fk switching + ''' + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "ik" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = ik_driver_path + + # *********** + con = arm_sw_pbone.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = arm_name + + con = arm_sw_pbone.constraints.new('COPY_ROTATION') + + con.target = obj + con.subtarget = arm_ik_name + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = forearm_sw_pbone.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = forearm_name + + con = forearm_sw_pbone.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = forearm_ik_name + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = hand_sw_pbone.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = hand_name + + con = hand_sw_pbone.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = hand_ik_name + con.influence = 0.5 + ik_fk_driver(con) + + + add_stretch_to(obj, forearm_sw_name, pole_ik_name, "VIS-elbow_ik_poll") + add_stretch_to(obj, hand_sw_name, hand_ik_name, "VIS-hand_ik") + + + bpy.ops.object.mode_set(mode='EDIT') + return None, arm_sw_name, forearm_sw_name, hand_sw_name + + switch_chain_tuple = chain_switch() + + gen_table = { "":gen_none, \ "finger":gen_finger, \ @@ -344,7 +580,6 @@ gen_table = { "arm":gen_arm, \ } - def generate_rig(context, ob): # add_stretch_to(ob, "a", "b", "c") -- cgit v1.2.3 From cd104206e7359908203ee0a83d112b0a2b777da6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 15:03:55 +0000 Subject: allow accessing an array index from an rna button. col.prop(ob, "location", index=1) # would edit the Y axis --- source/blender/makesrna/intern/rna_ui_api.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 025c8691652..4ae18107ad7 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -37,18 +37,24 @@ #ifdef RNA_RUNTIME -static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event) +static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int index) { + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); int flag= 0; + if(!prop) { + printf("rna_uiItemR: property not found: %s\n", propname); + return; + } + flag |= (slider)? UI_ITEM_R_SLIDER: 0; flag |= (expand)? UI_ITEM_R_EXPAND: 0; flag |= (toggle)? UI_ITEM_R_TOGGLE: 0; flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0; flag |= (event)? UI_ITEM_R_EVENT: 0; flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0; - - uiItemR(layout, name, icon, ptr, propname, flag); + + uiItemFullR(layout, name, icon, ptr, prop, index, 0, flag); } static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname) @@ -150,6 +156,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text."); RNA_def_boolean(func, "event", 0, "", "Use button to input key events."); RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers."); + RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */ func= RNA_def_function(srna, "props_enum", "uiItemsEnumR"); api_ui_item_rna_common(func); -- cgit v1.2.3 From 64f552356a27366664014aa8d0b31e4a2cb91bf8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 15:36:23 +0000 Subject: ctrl 1-5 for changing subsurf levels --- release/scripts/op/object.py | 52 ++++++++++++++++++++++++++++++ source/blender/editors/object/object_ops.c | 11 +++++++ 2 files changed, 63 insertions(+) create mode 100644 release/scripts/op/object.py diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py new file mode 100644 index 00000000000..2f9672e7447 --- /dev/null +++ b/release/scripts/op/object.py @@ -0,0 +1,52 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy + +class SubsurfSet(bpy.types.Operator): + '''TODO, doc.''' + + bl_idname = "object.subsurf_set" + bl_label = "Subsurf Set" + bl_register = True + bl_undo = True + + level = bpy.props.IntProperty(name="Level", + default=1, min=0, max=6) + + def poll(self, context): + ob = context.active_object + return (ob and ob.type == 'MESH') + + def execute(self, context): + ob = context.active_object + for mod in ob.modifiers: + if mod.type == 'SUBSURF': + if mod.levels != level: + mod.levels = level + return + + # adda new modifier + bpy.ops.object.modifier_add(type='SUBSURF') # TODO, support adding directly + mod = ob.modifiers[-1] + mod.levels = level + return ('FINISHED',) + + +# Register the operator +bpy.ops.add(SubsurfSet) diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index fd66b564d53..522ca45dc3d 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -313,6 +313,17 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", ONEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 1); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", TWOKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 2); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", THREEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 3); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FOURKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 4); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FIVEKEY, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", 5); + /* Lattice -------------------------------------------------------------------- */ keymap= WM_keymap_find(keyconf, "Lattice", 0, 0); keymap->poll= ED_operator_editlattice; -- cgit v1.2.3 From c3937c93d58f015ae5d08396b1e613afcbbf8707 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 16:05:32 +0000 Subject: minor changes made before commit broke this script --- release/scripts/op/object.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 2f9672e7447..42e59b8de2f 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -34,12 +34,13 @@ class SubsurfSet(bpy.types.Operator): return (ob and ob.type == 'MESH') def execute(self, context): + level = self.properties.level ob = context.active_object for mod in ob.modifiers: if mod.type == 'SUBSURF': if mod.levels != level: mod.levels = level - return + return ('FINISHED',) # adda new modifier bpy.ops.object.modifier_add(type='SUBSURF') # TODO, support adding directly -- cgit v1.2.3 From 383093957ad4a0d06b4e0805530cef07e187345e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 16:19:20 +0000 Subject: Mathutils vec += vec wasnt running mathutls callbacks --- source/blender/python/generic/vector.c | 44 +++++++++++++++------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index 8d1356f62f4..b3e54ac2250 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -626,36 +626,30 @@ static PyObject *Vector_add(PyObject * v1, PyObject * v2) static PyObject *Vector_iadd(PyObject * v1, PyObject * v2) { int i; - VectorObject *vec1 = NULL, *vec2 = NULL; + + if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n"); + return NULL; + } + vec1 = (VectorObject*)v1; + vec2 = (VectorObject*)v2; - if VectorObject_Check(v1) - vec1= (VectorObject *)v1; - - if VectorObject_Check(v2) - vec2= (VectorObject *)v2; - - /* make sure v1 is always the vector */ - if (vec1 && vec2 ) { - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - /*VECTOR + VECTOR*/ - if(vec1->size != vec2->size) { - PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n"); - return NULL; - } - for(i = 0; i < vec1->size; i++) { - vec1->vec[i] += vec2->vec[i]; - } - Py_INCREF( v1 ); - return v1; + if(vec1->size != vec2->size) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation\n"); + return NULL; } + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) + return NULL; + + for(i = 0; i < vec1->size; i++) { + vec1->vec[i] = vec1->vec[i] + vec2->vec[i]; + } + BaseMath_WriteCallback(vec1); - PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation....\n"); - return NULL; + Py_INCREF( v1 ); + return v1; } /*------------------------obj - obj------------------------------ -- cgit v1.2.3 From a1b6b99a97dd619efd7e93efdbccfb122e2266bd Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Thu, 26 Nov 2009 17:07:14 +0000 Subject: Fix warning. --- source/blender/editors/include/ED_object.h | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 9842dc1ef76..1ac15aa49f6 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -36,6 +36,7 @@ struct bContext; struct Base; struct View3D; struct bConstraint; +struct bPoseChannel; struct KeyBlock; struct Lattice; struct Mesh; -- cgit v1.2.3 From 102f57ef26051262341ad87cd340c0e554b1b0f3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 17:17:13 +0000 Subject: fix for crash, Aligorith can you check if this is correct --- source/blender/editors/transform/transform.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 3f4839a7d72..775e33e542c 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -5085,7 +5085,7 @@ static void applyTimeTranslate(TransInfo *t, float sval) AnimData *adt= (t->spacetype != SPACE_NLA) ? td->extra : NULL; /* check if any need to apply nla-mapping */ - if (adt) { + if (adt && t->spacetype != SPACE_SEQ) { deltax = t->values[0]; if (autosnap == SACTSNAP_STEP) { -- cgit v1.2.3 From 3764c1ea26e79861eac2399536d55892d882f0de Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Thu, 26 Nov 2009 17:20:02 +0000 Subject: Fixed typo --- source/blender/blenkernel/BKE_context.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index aa9c9b2721e..2c013a5231a 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -250,7 +250,7 @@ int CTX_data_editable_bones(const bContext *C, ListBase *list); struct bPoseChannel *CTX_data_active_pose_bone(const bContext *C); int CTX_data_selected_pose_bones(const bContext *C, ListBase *list); -int CTX_data_visible_bose_bones(const bContext *C, ListBase *list); +int CTX_data_visible_pose_bones(const bContext *C, ListBase *list); #ifdef __cplusplus } -- cgit v1.2.3 From 0a7b235199bc94cb71c52a0fca53556f8920f46a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 17:54:16 +0000 Subject: rename rotate_like_x --> use_x, for copy loc/size/rot constraints. including rotate in the property name isnt needed since its a copy rotation constraint. --- release/scripts/ui/properties_object_constraint.py | 30 +++++++++--------- source/blender/makesrna/intern/rna_constraint.c | 36 +++++++++++----------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index dc4a6e48761..e0e2b063395 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -402,21 +402,21 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.prop(con, "rotate_like_x", text="X") + col.prop(con, "use_x", text="X") sub = col.column() - sub.active = con.rotate_like_x + sub.active = con.use_x sub.prop(con, "invert_x", text="Invert") col = split.column() - col.prop(con, "rotate_like_y", text="Y") + col.prop(con, "use_y", text="Y") sub = col.column() - sub.active = con.rotate_like_y + sub.active = con.use_y sub.prop(con, "invert_y", text="Invert") col = split.column() - col.prop(con, "rotate_like_z", text="Z") + col.prop(con, "use_z", text="Z") sub = col.column() - sub.active = con.rotate_like_z + sub.active = con.use_z sub.prop(con, "invert_z", text="Invert") layout.prop(con, "use_offset") @@ -429,21 +429,21 @@ class ConstraintButtonsPanel(bpy.types.Panel): split = layout.split() col = split.column() - col.prop(con, "locate_like_x", text="X") + col.prop(con, "use_x", text="X") sub = col.column() - sub.active = con.locate_like_x + sub.active = con.use_x sub.prop(con, "invert_x", text="Invert") col = split.column() - col.prop(con, "locate_like_y", text="Y") + col.prop(con, "use_y", text="Y") sub = col.column() - sub.active = con.locate_like_y + sub.active = con.use_y sub.prop(con, "invert_y", text="Invert") col = split.column() - col.prop(con, "locate_like_z", text="Z") + col.prop(con, "use_z", text="Z") sub = col.column() - sub.active = con.locate_like_z + sub.active = con.use_z sub.prop(con, "invert_z", text="Invert") layout.prop(con, "use_offset") @@ -454,9 +454,9 @@ class ConstraintButtonsPanel(bpy.types.Panel): self.target_template(layout, con, wide_ui) row = layout.row(align=True) - row.prop(con, "size_like_x", text="X") - row.prop(con, "size_like_y", text="Y") - row.prop(con, "size_like_z", text="Z") + row.prop(con, "use_x", text="X") + row.prop(con, "use_y", text="Y") + row.prop(con, "use_z", text="Z") layout.prop(con, "use_offset") diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 12b26f8699e..12723db6c72 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -661,19 +661,19 @@ static void rna_def_constraint_rotate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "rotate_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X rotation."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotate_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y rotation."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotate_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ROTLIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z rotation."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z rotation."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE); @@ -724,19 +724,19 @@ static void rna_def_constraint_locate_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "locate_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X location."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locate_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y location."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locate_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", LOCLIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z location."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z location."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "invert_x", PROP_BOOLEAN, PROP_NONE); @@ -832,19 +832,19 @@ static void rna_def_constraint_size_like(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "size_like_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_X); - RNA_def_property_ui_text(prop, "Like X", "Copy the target's X scale."); + RNA_def_property_ui_text(prop, "Copy X", "Copy the target's X scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "size_like_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Y); - RNA_def_property_ui_text(prop, "Like Y", "Copy the target's Y scale."); + RNA_def_property_ui_text(prop, "Copy Y", "Copy the target's Y scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "size_like_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SIZELIKE_Z); - RNA_def_property_ui_text(prop, "Like Z", "Copy the target's Z scale."); + RNA_def_property_ui_text(prop, "Copy Z", "Copy the target's Z scale."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); prop= RNA_def_property(srna, "use_offset", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From 7762aa8027c511521f46bbd529ac2f945655788d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 18:36:24 +0000 Subject: Click event detection ignores mouse move. This makes it less tricky (don't have to hold the mouse extra still) but tweak events (like lasso) still don't result in a click. --- source/blender/windowmanager/intern/wm_event_system.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 24a0bba310d..b8c2849a085 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1355,8 +1355,11 @@ void wm_event_do_handlers(bContext *C) /* store last event for this window */ if (action == WM_HANDLER_CONTINUE) { - win->last_type = event->type; - win->last_val = event->val; + /* mousemove event don't overwrite last type */ + if (event->type != MOUSEMOVE) { + win->last_type = event->type; + win->last_val = event->val; + } } else { win->last_type = -1; win->last_val = 0; -- cgit v1.2.3 From 9d026b30e7fec37a90c7ab565d9522cc22e8b2de Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 18:45:08 +0000 Subject: more rna property renaming, axis_x --> use_x, rotationx --> use_rotation_x --- release/scripts/ui/properties_object_constraint.py | 24 ++++++++--------- source/blender/makesrna/intern/rna_constraint.c | 30 +++++++++++----------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index e0e2b063395..54efa733152 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -112,21 +112,21 @@ class ConstraintButtonsPanel(bpy.types.Panel): col = split.column() col.label(text="Location:") - col.prop(con, "locationx", text="X") - col.prop(con, "locationy", text="Y") - col.prop(con, "locationz", text="Z") + col.prop(con, "use_location_x", text="X") + col.prop(con, "use_location_y", text="Y") + col.prop(con, "use_location_z", text="Z") col = split.column() col.label(text="Rotation:") - col.prop(con, "rotationx", text="X") - col.prop(con, "rotationy", text="Y") - col.prop(con, "rotationz", text="Z") + col.prop(con, "use_rotation_x", text="X") + col.prop(con, "use_rotation_y", text="Y") + col.prop(con, "use_rotation_z", text="Z") col = split.column() col.label(text="Scale:") - col.prop(con, "sizex", text="X") - col.prop(con, "sizey", text="Y") - col.prop(con, "sizez", text="Z") + col.prop(con, "use_scale_x", text="X") + col.prop(con, "use_scale_y", text="Y") + col.prop(con, "use_scale_z", text="Z") split = layout.split() @@ -683,9 +683,9 @@ class ConstraintButtonsPanel(bpy.types.Panel): if con.shrinkwrap_type == 'PROJECT': row = layout.row(align=True) - row.prop(con, "axis_x") - row.prop(con, "axis_y") - row.prop(con, "axis_z") + row.prop(con, "use_x") + row.prop(con, "use_y") + row.prop(con, "use_z") def DAMPED_TRACK(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 12723db6c72..b7602a5948b 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -368,49 +368,49 @@ static void rna_def_constraint_childof(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "locationx", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCX); RNA_def_property_ui_text(prop, "Location X", "Use X Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locationy", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCY); RNA_def_property_ui_text(prop, "Location Y", "Use Y Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locationz", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_location_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_LOCZ); RNA_def_property_ui_text(prop, "Location Z", "Use Z Location of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationx", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTX); RNA_def_property_ui_text(prop, "Rotation X", "Use X Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationy", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTY); RNA_def_property_ui_text(prop, "Rotation Y", "Use Y Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "rotationz", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_rotation_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_ROTZ); RNA_def_property_ui_text(prop, "Rotation Z", "Use Z Rotation of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizex", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEX); - RNA_def_property_ui_text(prop, "Size X", "Use X Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale X", "Use X Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizey", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEY); - RNA_def_property_ui_text(prop, "Size Y", "Use Y Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale Y", "Use Y Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "sizez", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_scale_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CHILDOF_SIZEZ); - RNA_def_property_ui_text(prop, "Size Z", "Use Z Scale of Parent."); + RNA_def_property_ui_text(prop, "Scale Z", "Use Z Scale of Parent."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } @@ -1650,17 +1650,17 @@ static void rna_def_constraint_shrinkwrap(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Distance", "Distance to Target."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_x", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS); RNA_def_property_ui_text(prop, "Axis X", "Projection over X Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_y", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS); RNA_def_property_ui_text(prop, "Axis Y", "Projection over Y Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_z", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "projAxis", MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS); RNA_def_property_ui_text(prop, "Axis Z", "Projection over Z Axis"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); -- cgit v1.2.3 From 5457ab4fc39fcb6047f37a0aee534cfba689b53f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Nov 2009 19:08:56 +0000 Subject: fixed a crash when duplicating bones with ID-Props remove duplicate code from armature_duplicate_selected_exec --- source/blender/editors/armature/editarmature.c | 33 +++++--------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 34a6000a7b8..f8aacd3112d 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -2573,7 +2573,7 @@ void updateDuplicateSubtarget(EditBone *dupBone, ListBase *editbones, Object *ob EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *editbones, Object *src_ob, Object *dst_ob) { - EditBone *eBone = MEM_callocN(sizeof(EditBone), "addup_editbone"); + EditBone *eBone = MEM_mallocN(sizeof(EditBone), "addup_editbone"); /* Copy data from old bone to new bone */ memcpy(eBone, curBone, sizeof(EditBone)); @@ -2589,6 +2589,10 @@ EditBone *duplicateEditBoneObjects(EditBone *curBone, char *name, ListBase *edit unique_editbone_name(editbones, eBone->name, NULL); BLI_addtail(editbones, eBone); + /* copy the ID property */ + if(curBone->prop) + eBone->prop= IDP_CopyProperty(curBone->prop); + /* Lets duplicate the list of constraints that the * current bone has. */ @@ -2653,37 +2657,12 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op) for (curBone=arm->edbo->first; curBone && curBone!=firstDup; curBone=curBone->next) { if (EBONE_VISIBLE(arm, curBone)) { if (curBone->flag & BONE_SELECTED) { - eBone=MEM_callocN(sizeof(EditBone), "addup_editbone"); - eBone->flag |= BONE_SELECTED; - - /* Copy data from old bone to new bone */ - memcpy(eBone, curBone, sizeof(EditBone)); - curBone->temp = eBone; - eBone->temp = curBone; + eBone= duplicateEditBone(curBone, curBone->name, arm->edbo, obedit); - unique_editbone_name(arm->edbo, eBone->name, NULL); - BLI_addtail(arm->edbo, eBone); if (!firstDup) firstDup=eBone; - /* Lets duplicate the list of constraints that the - * current bone has. - */ - if (obedit->pose) { - bPoseChannel *chanold, *channew; - - chanold = verify_pose_channel(obedit->pose, curBone->name); - if (chanold) { - /* WARNING: this creates a new posechannel, but there will not be an attached bone - * yet as the new bones created here are still 'EditBones' not 'Bones'. - */ - channew= verify_pose_channel(obedit->pose, eBone->name); - if(channew) { - duplicate_pose_channel_data(channew, chanold); - } - } - } } } } -- cgit v1.2.3 From deb942702df8dce55fd1a507d58df2e09cd2ce16 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 19:29:57 +0000 Subject: Preliminary RNA and DNA changes for further transform snap fixes. Also make the mesh selection type enum available at runtime. --- source/blender/makesdna/DNA_scene_types.h | 9 ++++--- source/blender/makesrna/RNA_enum_types.h | 4 ++- source/blender/makesrna/intern/rna_scene.c | 39 +++++++++++++++--------------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index e998b943a2e..111a90ed389 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1007,10 +1007,11 @@ typedef struct Scene { #define SCE_SNAP_TARGET_MEDIAN 2 #define SCE_SNAP_TARGET_ACTIVE 3 /* toolsettings->snap_mode */ -#define SCE_SNAP_MODE_VERTEX 0 -#define SCE_SNAP_MODE_EDGE 1 -#define SCE_SNAP_MODE_FACE 2 -#define SCE_SNAP_MODE_VOLUME 3 +#define SCE_SNAP_MODE_INCREMENT 0 +#define SCE_SNAP_MODE_VERTEX 1 +#define SCE_SNAP_MODE_EDGE 2 +#define SCE_SNAP_MODE_FACE 3 +#define SCE_SNAP_MODE_VOLUME 4 /* toolsettings->selectmode */ #define SCE_SELECT_VERTEX 1 /* for mesh */ diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index 13e2d5a2dc2..b33dbe6f20d 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -38,7 +38,9 @@ extern EnumPropertyItem object_mode_items[]; extern EnumPropertyItem proportional_falloff_items[]; extern EnumPropertyItem proportional_editing_items[]; -extern EnumPropertyItem snap_mode_items[]; +extern EnumPropertyItem snap_target_items[]; +extern EnumPropertyItem snap_element_items[]; +extern EnumPropertyItem mesh_select_mode_items[]; extern EnumPropertyItem space_type_items[]; extern EnumPropertyItem region_type_items[]; extern EnumPropertyItem modifier_type_items[]; diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index bc9fa9d5573..8d8b97d01a8 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -48,7 +48,7 @@ #include "WM_types.h" -EnumPropertyItem snap_mode_items[] = { +EnumPropertyItem snap_target_items[] = { {SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."}, {SCE_SNAP_TARGET_CENTER, "CENTER", 0, "Center", "Snap center onto target."}, {SCE_SNAP_TARGET_MEDIAN, "MEDIAN", 0, "Median", "Snap median onto target."}, @@ -72,6 +72,20 @@ EnumPropertyItem proportional_editing_items[] = { {PROP_EDIT_CONNECTED, "CONNECTED", 0, "Connected", ""}, {0, NULL, 0, NULL, NULL}}; +EnumPropertyItem mesh_select_mode_items[] = { + {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."}, + {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."}, + {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."}, + {0, NULL, 0, NULL, NULL}}; + +EnumPropertyItem snap_element_items[] = { + {SCE_SNAP_MODE_INCREMENT, "INCREMENT", ICON_SNAP_INCREMENT, "Increment", "Snap to increments of grid."}, + {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."}, + {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."}, + {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."}, + {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."}, + {0, NULL, 0, NULL, NULL}}; + #ifdef RNA_RUNTIME #include "DNA_anim_types.h" @@ -561,19 +575,6 @@ static void rna_def_tool_settings(BlenderRNA *brna) {UV_SELECT_ISLAND, "ISLAND", ICON_UV_ISLANDSEL, "Island", "Island selection mode."}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem mesh_select_mode_items[] = { - {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."}, - {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."}, - {SCE_SELECT_FACE, "FACE", ICON_FACESEL, "Face", "Face selection mode."}, - {0, NULL, 0, NULL, NULL}}; - - static EnumPropertyItem snap_element_items[] = { - {SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices."}, - {SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges."}, - {SCE_SNAP_MODE_FACE, "FACE", ICON_SNAP_FACE, "Face", "Snap to faces."}, - {SCE_SNAP_MODE_VOLUME, "VOLUME", ICON_SNAP_VOLUME, "Volume", "Snap to volume."}, - {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem auto_key_items[] = { {AUTOKEY_MODE_NORMAL, "ADD_REPLACE_KEYS", 0, "Add & Replace", ""}, {AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""}, @@ -647,8 +648,8 @@ static void rna_def_tool_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP); - RNA_def_property_ui_text(prop, "Snap", "Snap while Ctrl is held during transform."); - RNA_def_property_ui_icon(prop, ICON_SNAP_GEAR, 1); + RNA_def_property_ui_text(prop, "Snap", "Snap during transform."); + RNA_def_property_ui_icon(prop, ICON_SNAP_ON, 1); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE); @@ -663,10 +664,10 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to."); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ - prop= RNA_def_property(srna, "snap_mode", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "snap_target"); - RNA_def_property_enum_items(prop, snap_mode_items); - RNA_def_property_ui_text(prop, "Snap Mode", "Which part to snap onto the target."); + RNA_def_property_enum_items(prop, snap_target_items); + RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target."); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From b658febb6a427b6e6272874d1b9681441e923fcc Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 19:31:25 +0000 Subject: Missing from last commit: New snap icons for Increment (gears) --- release/datafiles/blenderbuttons | Bin 195097 -> 195948 bytes source/blender/editors/datafiles/blenderbuttons.c | 12682 ++++++++++---------- source/blender/editors/include/UI_icons.h | 6 +- 3 files changed, 6128 insertions(+), 6560 deletions(-) diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons index 258e134675a..c666d692b32 100644 Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 4cbe959e5ea..faa08816884 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6562 +1,6130 @@ /* DataToC output of file */ -int datatoc_blenderbuttons_size= 209771; +int datatoc_blenderbuttons_size= 195948; 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, 4,115, 66, 73, 84, 8, 8, - 8, 8,124, 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, - 69, 88,116, 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, - 0, 0, 32, 0, 73, 68, 65, 84,120,156,236,157,119,120, 84,197,254,198,223, 57,101,251,166,147, 2, 9,164,208,187, 84, 73, 40, -130, 52, 37, 40, 72, 83,185, 8,130,254,108,216, 27,168, 40,136, 20,189, 10, 10, 94,145,107, 5, 68, 41, 54, 36, 94,154,210,171, - 20,149, 14, 10, 1, 18, 72, 39,117,251,238,153,223, 31,217,179,110, 54,219, 2, 27, 69,156,207,243,156,103,247,180,247,204,156, -250,158,239,204,153, 33,148, 82, 48, 24, 12, 6,131,193, 96, 48, 66, 15,247, 87, 39,128,193, 96, 48, 24, 12, 6,227,122,165,206, - 70, 43, 43, 43, 43,232, 16, 24, 33,100, 64,176,154,206,225,166,107, 93, 51,152,229,234,170, 41, 15, 33,212,188,201,169, 57, 61, -132,154,245,153,206,155,174, 85, 77, 57,191,193,234,214, 69,211,243,127,136,210, 25,212,121,127, 45,104, 6, 90,246, 42,210,233, - 87,251, 10,143,251,244,191, 73, 58,111,186,214, 52, 61,207,159, 96,116,235,170,233,158,238, 16,166, 51,224,121,127,173,104,250, - 91,254, 42,211,233, 83, 59,216,115,201,199,177,159, 30,104,221,235, 9,161, 46, 11,215,197,104,212,133,204,204, 76,226,166, 79, -174, 85, 77,153,172,172, 44, 42,235,135,130, 80,106, 57,217, 18,106, 77,143,253, 25, 42,166,103,102,102,146,172,172,172,173, 0, -110, 10,145,230, 22,167,230, 85, 31,119,143,188,134, 68,183,174, 38,171,174,154,161, 58,239,235, 91,211,125,218,213,156,171,158, -154,161, 56,239,189, 29,247, 80,106,134,234, 90,242, 88, 63, 36,215, 82,125,156,243, 94,206,159,171,214,245,212, 12,197,181,228, -169, 25,138,243,254,207,208,148,167, 95,205,181,228, 77, 51, 20,231,189,175, 99,127,181,186,127, 55,234, 20,209,170,207, 29,228, - 60, 16,125, 67,173, 25,234, 52,215,135,217, 12, 54, 2,115, 45,104, 34,180,199,104,186, 83,115,122, 8, 53,251,134,234, 24,213, -199,249,238,174, 25, 42,125, 79,157, 80, 28, 39,111,154, 87,155, 94, 31,233,188, 42,188,105, 94,237,121,255,103,105, 34,180,199, - 40, 36,215,146,135,102,200,174, 37,207,252,134, 34,162,225,174, 25,170,107,201, 75, 58,175,250, 56,121,211,188,218,244,250, 72, -231, 85,225, 77, 51, 20,207,144,250,210,253, 59, 81,167,136, 86,125, 81, 31,134, 8,168,190,248, 66,169, 93, 31, 81,157,250,138, -188,133, 42,170,227, 69,119,107, 8,229, 66, 22,125,146,113,166, 47, 36,111,184,127, 71,216,181,196,174, 37, 92, 99,215,146,183, -243, 38, 51, 51,115,122, 86, 86,214, 43,161,212,188, 90, 60, 53, 67,101,136,188,228,253,170,174, 37,207,117, 67,113, 45, 5,208, -188,170,136,179,175,252, 95,141,238,223,141,107,194,104, 1,127,156, 36, 33,126, 51, 1, 66, 28, 37, 11, 53,245,148, 78,249, 77, -244,154,206, 59,234, 33,157,206, 55,229, 87, 66,169,233,228,239,178, 79,217,181,196,174,165,144, 16,202,107,201,227,156, 12, 73, - 90, 67,125,158,123,211, 12,197, 54,220, 53, 66,117,142,214,119,222, 67,121, 45,213,199,177,255,219, 65, 41,173,183, 1,192, 0, -166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,234,192,154,119, 96, 48, 24, 12, 6,131,193,168, 39,136,211,153, 50, 24, - 12, 6,131,193, 96, 48, 66,140,207, 58, 90,137,137,137,107,181, 90,109, 51, 95,243,171,170,170, 46, 93,188,120,177, 95,253, 36, -139,193, 96, 92, 79, 16, 66, 56,252,241,149,179, 4,128, 82,246,150,199, 96, 48,254, 1,248, 52, 90, 42,149, 42,237,248,241,227, - 45, 36, 73,130,195,225,128,221,110,119,253, 90, 44, 22,244,233,211,167,206, 21,233, 19, 18, 18,182,241, 60,159, 82,151,117, 28, - 14,199,249,188,188,188, 94,190,230, 19, 66,118, 1, 72, 35,132,184, 79,243,251, 11,224,162,213,106,237,236, 79,147, 16,146,230, -169,231, 67, 75,254,239, 87, 51, 50, 50,114,191, 32, 8, 73,222,180,124,253,151, 36,233, 76, 65, 65, 65,134, 47, 77, 70,104, 73, - 72, 72,216, 38, 8, 66,157,207,207, 75,151, 46,249, 60, 63, 27, 53,106,116,136,227,184, 70,117,144,228, 37, 73, 58,121,233,210, -165, 94,190,140,136,124,206,251, 19,241, 60,159, 8, 33, 57,118,187,189,171,159,229,125,106,250, 57,231,253,106,186, 45,203, 9, -130, 48, 55, 46, 46,238, 33,131,193, 96, 2, 64,121,158,167, 49, 49, 49,114,218, 0, 0,118,187,189,240,242,229,203,237, 3,233, - 49, 24, 12,198,223, 9,159,102, 73,146, 36,206,108, 54,227,212,169, 83,240,113,191,119, 92,193,246, 90, 28,248, 97, 99, 92, 88, - 92, 60,236, 86, 43,116, 13, 98, 93,218,249,199,142,192,110,179,194,110,177,160, 73,183, 30,213, 27,112, 56,208,182,109, 91, 62, -128,102,210,235,175,191, 30, 23, 22, 22, 6,147,201, 4,147,201, 4,179,217, 12,147,201, 4,139,197, 2,139,197, 2,171,213, 10, -171,213, 10,187,221, 14,179,217,140, 77,155, 54, 5, 74,123,210,172, 89,179,226,194,195,195, 93,122,242, 32,107,202,186, 54,155, - 13, 38,147, 9, 63,254,248,163, 95, 77, 65, 16,146, 46, 94,188, 24,167, 80, 40, 64, 41,133, 36, 73,222, 42, 23,214,160,105,211, -166,214, 0,233,100,132,150, 22,179, 62,207,138,139,208,168, 96,151, 36, 12,237,216,212, 53,227,204,135,171, 64,237, 14, 72,118, - 59,154, 79, 30, 7,160,250, 67,146, 54,109,218,248, 61, 63, 41,165,201,179, 62,207,138, 12, 86,179,168,168,200,216,186,117,235, -139,168,254,244,217, 87,196, 39,201,104, 52,198,201,105,144,145, 13, 11,199,113, 53,134,245,235,215, 99,232,208,161,129,242,158, -244,228,147, 79,198,217,108, 54, 88, 44, 22,152,205,102,216,108, 54,216,237,118,215,224,112, 56, 92,131,197, 98,193,222,189,123, - 3,105,202,145,172,215, 7, 14, 28, 56, 49, 43, 43, 75,247,205, 55,223,232, 82, 82, 82,160, 80, 40,192,243, 60,120,158, 7,199, -113, 16, 4, 1, 55,222,120,227, 63,230,115,111, 6,131,241,207,193,167,209, 50,155,205,103, 59,117,234, 68,157,255, 19, 85, 42, -149,194,125, 62, 33,164, 81,139, 22, 45, 78,122,174, 23,168, 72, 49, 44, 46, 30, 83, 27, 71, 3, 0, 94, 62, 87, 44,107,225,141, -140, 27, 92,203,188,154, 91, 6, 0,208,104, 52, 32,238,175,209, 62,208,233,116, 24, 56,112, 32,148, 74, 37,186,118,237, 10, 81, - 20,189, 14, 10,133, 2,162, 40, 6,146, 3, 33, 4,122,189, 30, 51,102,204, 0, 0, 8,130, 0,157, 90,133, 71, 51,186, 66, 13, -138,255, 30, 57, 13,139, 68, 33, 8,130,107, 8, 70, 83,161, 80,224,240,225,195, 16, 4, 1, 60,207,187,126,229,255,107,214,172, -193,168, 81,163, 32, 8, 2, 52, 26, 13,240, 15,106,103,228, 90, 33, 66,163,194,248, 69, 95, 3, 0, 46,204,159, 12,160,250,216, -237,125,248,101,215, 50,201,255, 55, 6,132, 16,136,162, 8,142, 11,252, 61, 73,176,154, 37, 37, 37,198,187,238,186,107, 71, 88, - 88,216,250,242,242,114,191,154,148, 82, 92,184,112, 1,130, 32,248, 60,223, 57,142,195,188,121,243,240,219,111,191, 5,149,119, -147,201,132, 15, 62,248, 0, 14,135,163,134,174,252,223,115, 90, 32,156, 38,235,181, 65,131, 6,141,203,202,202,138, 34,132,224, -221,119,223,133, 66,161,192,144, 33, 67, 16, 19, 19,131, 13, 27, 54, 64,161, 80,224,185,231,158, 11, 42,141, 12, 6,227, 31,139, - 8,224, 6, 0,177,168, 14,244, 84, 0,136,116,155, 95,232,252,141,117, 27,255,201,139, 78, 55,231, 50,242,124,121,220, 2, 64, -233,101,122, 49, 0,141,115, 48, 3,216, 5,160,157,219,118,228,245,220,211, 81, 99,187, 2, 80,221,255, 16,128, 45, 0,250,202, -141,232, 93,186,116,233, 86,121,161,166, 77,155, 30, 63,121,242,100, 43,217,243, 56,139, 16, 21,118,187,189,133, 92,156, 40, 71, -139, 6, 12, 24,224,247, 13,223,110,173, 25,164,113, 47, 58,240,156,238,254,235, 11, 66, 8,172, 86, 43,198,140, 25, 3, 0, 62, - 31, 58,238, 67, 16,222, 13, 22,139, 5,130, 32,160,101,227, 88, 76, 27,220, 9,221,169, 13, 85,149, 4,246,178, 42, 12,211,219, -112,188, 77,103, 44, 62, 95,136,115,229,149, 16, 4, 33, 40, 77, 73,146,124,154, 44,158,231,177,104,209, 34,220,117,215, 93,224, -121, 62, 40, 61, 70,232,177, 75, 82,141,113, 95,231,102,176,231,103,176,154, 37, 37, 37,198,161, 67,135,238, 81,169, 84, 75,226, -227,227, 47,230,228,228,248,213,164,148,214, 50, 63,158, 47, 21,111,189,245, 22, 22, 44, 88,128,126,253,250, 5,149, 78,179,217, - 12, 66, 8, 22, 47, 94, 92,107,222,204,153, 51,107,109,207,159,166,243, 5,137,107,212,168,209,195,235,214,173, 11,151,151,109, -208,160, 1, 68, 81, 68,251,246,237, 17, 22, 22,134, 29, 59,118,192,225,112, 4,125, 93, 50, 24,140,235, 23,111, 94,196,141, 62, - 83,167, 78,237, 58,119,238,220,217,233,233,233, 95,236,218,181,235,115, 66,200, 90,121, 38,165,116, 40, 0,200,211,156,227,221, - 80,211,244,136, 0, 98, 9, 33,107,229,229,221,199,221,166, 15, 0,160,148,199,167, 78,157,218,110,238,220,185,179,167, 76,153, -242,194,156, 57,115, 20, 83,167, 78,237, 48,119,238,220,217,242,118,188,165,195, 29,249,181,212,111,171,194,114, 49,226,137, 19, - 39,124, 21, 35,186,160,148,250,189, 91,234, 26,196,186, 34, 89,175, 38,199,184,166,207,200, 41,117, 61,192, 22,118,105, 6,157, - 78,135,193,175,254,219,239,182,128,234,135,150,197, 98, 65, 65, 65,129, 43,202, 16,104, 8, 86, 83,171, 81, 99,211,147,237,113, -161, 88,137,233,187, 75,144,245,243,111, 16, 69, 17,183,180,105,143, 91, 21, 97,120, 41, 89,137, 39, 79,103,195, 22,100,157, 94, - 74,169, 87,131, 37,255,151,139, 80,152,209,250,235, 24,218,177,169, 43,234,180, 55,172,191,107,250,168,170,195,174, 99,242,244, -162, 55, 0, 0,253, 58,223, 24,240,122, 8, 70,179,184,184,216,216,171,127,223,173, 14,163,229,211,113,227,198,157,221,188,121, -179, 38,152,180,122, 51, 90,114,212, 86, 54, 89,130, 32,192, 98,177, 4,149,119,139,197,226,243,250, 80, 40, 20,117,142,104, 1, - 64, 85, 85,149,229,219,111,191,197,194,133, 11, 17, 19, 19,131, 65,131, 6,161, 97,195,134, 88,181,106, 21, 40,165,152, 60,121, - 50, 52, 26,141, 28,189, 14, 74,147,193, 96, 92,183,248,243, 34,170,185,115,231,206,246, 52, 50,238,227,238, 6,202,195, 76,201, -244,153, 58,117,106, 59,127, 9,112, 55, 93,242, 52,121,187,132,144,181,115,230,204, 25, 26, 32, 29,133,240,192,117,183,244,215, -124,191,217,108, 62,219,177, 99,199,160,220,132,193, 96,200,243, 55, 95,126, 48,121,222, 84,221,163, 4,122,189, 30,186,112, 61, -184, 32,239,187, 54,155,205,101, 84, 54,110,220, 8,141, 70,131, 33, 67,134, 92, 85, 68,203,106,181, 66,169, 16,193, 53,136,199, -248,249,155, 81, 92, 97,116, 61, 96,182,156, 57,139,131,249, 5,120, 50,189, 63,116,154, 2, 84, 90, 44, 65, 69,222, 36, 73,170, -101,178, 4, 65,192,152, 49, 99, 92,209, 4,247,122, 43, 96, 69,135,127, 25,222,206, 79,207,233,146, 71,164,234, 74, 52,139,139, -139,141, 67,135, 14,221,227, 48, 90, 62,205,205,205,221, 3, 64,221,189,123,247, 58, 27, 45,217, 96,137,162,136,121,243,230, 97, -193,130, 5,174,249,193, 26, 45,187,221, 94,195, 64,157, 62,125,186,198,182, 60,141,157,191, 98, 83, 74, 41, 37,132, 72, 0,164, -180,180, 52,215, 58, 9, 9, 9,136,140,140,132, 36, 73,144, 36, 9,106,181, 26, 26,141, 6, 10,133,194,167, 22,131,193,248,231, -224,199,139, 24,167, 76,153,242, 2, 33,100,173, 51,178,116, 4,240,105,168,188,209, 13, 53,205, 90, 45, 67, 4,252, 17,161,242, - 52, 91,238,255,101,166, 78,157,218,206, 75, 58,106, 21, 87,186,238,170, 30,205,238,215,192,189, 24, 49, 20,120, 43, 46,116,127, -144,233, 35,195,161,209,233,192,243, 28, 8, 33,126, 13,158, 92,116, 40,223,248, 31,122,232, 33,191,245, 86,130,173, 79,101,181, - 90,193, 9, 60, 46, 37,164,194,193,109,119,173, 43, 15,156, 32,226, 92, 66, 43,240, 39, 14, 65, 12,242,129,235, 25,209,154, 60, -121, 50, 62,248,224, 3,112, 28,231,218, 39,130, 32,160,121,243,230, 56,123,246,108, 80,154,140,208,227,203, 52,123, 78,119, 56, -164,160,163, 48,222,150, 43, 46, 46, 54,142, 30, 61,122,107, 89, 89,217,167,109,219,182, 61,141,234,230, 15,130,106, 68, 88, 62, - 87,220, 13,150,108,178,222,121,231,157, 26,166,200,102,179, 5,245, 34, 96,179,217,106, 25,158, 55,223,124,179,198, 47, 0,100, -100,100, 4, 21, 25, 6, 64, 57,142,163, 10,133, 2, 3, 7, 14, 68,135, 14, 29,240,205, 55,223, 64,146, 36, 60,242,200, 35,208, -104, 52,120,251,237,183, 97,183,219,241,250,235,175,179,136, 22,131,193,240,231, 69,204,115,230,204, 57, 50,103,206, 28, 87,100, - 9,240, 94, 84,231, 41,137,106, 83, 21, 43,155, 52, 84,215,181,242, 86,127, 11,190, 52, 61,141, 23, 80, 29,233,242,146, 14,207, -226,202, 63,191,175,195,188,163,135,241,239,158,157, 0,212, 44, 46, 92,116, 99, 43,232,244, 58,232,194,244, 24,189,102, 59, 0, - 56,111,250, 83, 2,106,218,108, 54,151,209, 42, 46, 46,246,107,178,234, 18,209,226,148, 2, 86, 39, 93, 6, 85,138, 16, 44,182, - 26, 70,139, 23, 68, 92,136, 73, 5, 39, 42, 32, 56,236, 65,105, 82, 74,107, 21, 21, 78,152, 48, 1,132, 16,215, 23, 98, 29, 59, -118,116,215, 98, 79,158, 63,153,188,253, 31,226,248,151, 15, 3, 0,122, 85, 85,185,142,197,172,142,127,124,223, 49,255,240, 86, - 87,244,241, 85, 60,115, 69,154,197,197,197,198,238,173,219,237, 81, 68, 71,124,122,254,252,249, 61, 0,184, 59,239,188, 51,178, - 99,199,142, 65, 93,147,242,199, 21,158, 38,203, 61,146, 37,255,218,108,182,160,242, 46,215,149, 10,132, 92,140, 24,232,156,167, -148,210,232,232,104,112, 28,135,240,240,112,232,245,122,215, 23,183,106,181, 26, 90,173,214, 85,191, 51, 72,227,198, 96, 48,254, -185, 68,201, 70,199,105,150, 0,212,172,147,229,110,134,124, 21, 33, 58, 35, 80,219, 2,108, 43, 11,213, 6,205, 43,114,100,205, -125,154,231,118,221, 17,128, 63, 58,166,148,127, 27, 54,108,248, 63,189, 94,159, 26, 32, 33, 46,234,210,120,169,195,246, 71,101, -120,217,100, 17, 66,160, 15,211, 67,163,215, 65, 19,166,175, 49, 47, 24,228,162, 67,158,231, 93, 15,157, 37, 75,150, 64,175,215, -227,222,123,239,173,115, 29, 45,192,105,180, 20, 28, 54,168,126, 4,175, 20,106,152, 44, 65, 16,192,139, 34,242,244, 13,193,137, - 34, 4,123,112, 81,178,178,178, 50, 8,130,128,105,211,166,185,222,224,221, 77, 86, 93,242,204,168, 31,168,227, 15, 83,226,171, -194,123, 93,143,145,167,166, 28,201, 82, 68, 71,124,218,170, 85, 43, 87, 36, 75,171,213,202, 95,155, 6,132,227, 56,175, 38,203, -243, 11, 65, 65, 16,170,207,229, 0, 95, 71,186, 71,180,230,204,153,227,210,117,143,100,201,212,229, 58,146,211,186,117,235, 86, - 28, 60,120, 16, 15, 61,244, 16, 52, 26, 13, 22, 44, 88, 0,187,221,142,153, 51,103, 66,163,209, 64,169, 84, 6, 22, 98, 48, 24, -215, 53,158, 94,196,131, 66,143,122, 80,196,195,212, 20, 2,181, 13,150,123, 49,161,219,127,247,183, 79, 89,215,226, 81,164,232, - 57, 93,254, 45,158, 51,103,206,102, 57,146,229, 54,189, 70, 58,220,241,234, 16, 84, 42, 85,234,169, 83,167, 92,141,149,250,251, -181, 88, 44,232,215,175, 95,208,145, 49,249,171, 67, 65,224,107, 24, 11,109,152, 30,218,240, 48,104,244,122, 79,195,225,247,169, -198,113,156,235,141,216,221,104,189,242,202, 43, 16, 4, 1, 31,124,240, 1, 0,224,153,103,158, 9,186,142,150,172, 9, 7, 65, - 14,253, 29,157,230,143,130,229, 51, 27,242,119,254, 2, 65, 16, 16,215,227, 86, 72,221, 71,193,160,209, 67,112,216,131,254,234, -176,164,164, 4,103,207,158, 5,207,243,120,234,169,167,106,180,117,228,249, 37,219,198,141, 27, 3,230,157, 17,122,168,100,175, - 49, 30, 68, 49, 98,192, 99,228,174, 41,215,201, 42, 43, 43,251,244,252,249,243,123, 1,112,227,198,141,139,212,106,181,248,232, -163,143, 12, 0,148,171, 86,173,242,235,182,220,205,121, 32,147, 37,138, 98,245,185, 28, 4,114,209,182, 60, 4,170, 24, 31,204, - 57, 47,167,149, 16, 2,135,195, 1,141, 70, 83, 35,146,165, 86,171,161, 82,169,130, 74, 31,131,193,248, 71,227,179,168,207, 11, -221,220, 76, 83,160,245,124,205,175,203,246,252,226,213, 32,113, 28, 7,179,217,140, 99,199,142, 5,171, 19,116,227,165,141,187, -222,136, 87,115,203, 64, 8,193,127, 51,218, 66, 23,174,135, 86,167,195,200,111,182,186,110,220,135,103, 63, 3,149, 78,143, 70, -189, 7, 5,212,147,223,196, 61,141, 86,105,105, 41, 68, 81,196,107,175,189, 6,142,227,240,250,235,175, 35, 49, 49, 17,151, 46, - 93,194,170, 85,171, 2,234, 90,173, 86,240, 14, 30, 13,239,105, 13,237,132, 8,132,223,211, 7, 81, 3, 95, 65,174, 69,192, 46, -147, 22,125, 76, 71,161,220,240, 14, 44,146, 35,232, 47,176,236,118, 59,182,110,221,234, 89,225, 29,148, 82, 87,171,251, 54,155, - 13, 86,171, 21,175,191,254,122, 80, 95,180, 49, 66, 75,195, 30,147, 17,219,245, 65, 0,192,154, 57,147, 92,211,167, 29,254,227, -252,156,247, 89,117, 7, 0,173, 82, 2,159,159,238,154,197,197,197,198, 91,250,101,108, 51, 73,226, 39,237,219,183,175, 17,201, - 82,171,213,196, 57, 30,148,185,230, 56, 14, 60,207,215, 42, 46,244,101,182,130,169,163,101,183,219, 93, 13,137,250,171,207,120, - 37, 17,173, 73,147, 38,161, 97,195,134,174, 72,214,171,175,190, 10,141, 70,131,169, 83,167,194,102,179,225,157,119,222, 9, 90, -143,193, 96, 48, 2, 16, 50,147, 20, 10,188,222, 73, 77, 38, 83,118,135, 14, 29,188,174, 96, 50,153, 18,213,106,117,141,187, 44, -113, 54, 94,234, 89,132, 72, 8, 25, 64, 41,221,228,169, 33, 71,111,194,194,195,160,214,235,160,245,136, 98,169,195,194,161,210, -235,193, 41,106,223,204,189,105,202,117, 75,220,141,150, 60,148,149,149, 65, 20, 69, 44, 92,184, 16,225,225,225, 48,155,205, 1, - 53,229,135, 14,207,243, 48, 92,168,192,241,217,155,160, 84,239, 66,179, 65,119,161,161,168,129, 98,199, 87, 48, 58,106,214,217, - 10, 70,179, 69,139, 22,120,249,229,151,107, 53,235,224,139,196,196,196,128,121,191, 90,152,166,119, 77,127, 95,197,202, 72,212, -225,109, 57,175,154,114, 36,203, 36,137,159,156, 61,123, 86,142,100, 69,104,181, 90,188,255,254,251, 6, 0,220,204,153, 51,181, -201,201,201,181,218,161,243,118, 46,241, 60,143,249,243,231,123,173,147,229,205,116, 5,147,119,249, 58,114, 95,247,166,155,110, -242,218, 96,169, 55,243,230, 77, 83, 78,107, 76, 76,140, 43,146,229,112, 56, 92, 95, 27,202,173,207,251,122,169,184, 30,206, 37, -166,201, 52,153,230, 63, 27,175, 79,249,139, 23, 47,222,226,107,133,102,205,154,157, 58,117,234, 84,115,185, 43, 14,231,141, 83, - 97, 50,153, 90,100,100,100, 4, 12,237, 72,146, 4,149, 74, 5, 74, 41,110,126,121, 46, 8, 7,112,168,249, 16,139,235,217, 31, - 60, 47, 64,170,238,234, 35,224, 87,135, 70,163,177,198,195,193,219, 80, 89, 89, 9,179,217, 28,240,179,116, 25,147,201, 84,163, - 9, 6, 66, 37,156,251, 97,101,173,175, 15,229, 33,216,122, 59,106,181,186, 70,209,143, 63, 2,181, 73,198, 8, 61,242, 7, 11, - 0,208, 50, 99, 8, 36,201, 1,234,112,212,232, 38,169,117,234, 45,144,168, 3, 86,155, 1,102,179, 57, 80,216,145, 20, 21, 21, - 25, 71,143, 30,189, 21,192,199,195,134, 13, 59,137,234, 47, 94,168, 94,175, 87,137,162, 40, 1, 40, 1, 64, 47, 95,190, 28,145, -155,155, 43,153, 76,166, 38,129,210,153,149,149,133, 99,199,142,161,119,239,222, 53,186,131,146,163,162,238,173,187, 7,115,126, -202,197,229,222, 90,132,247,101,228,130,133,231,121, 68, 68, 68, 64,161, 80,224,181,215, 94,131, 66,161,128, 86,171, 5, 0,188, -243,206, 59,174,198, 87, 25, 12, 6,227,122,228, 74,190, 58,228,253, 20, 43,250, 45, 66,180,219,237, 57,201,201,201,117,218,152, -195,225,200,247, 55, 95,146,164,156, 85,171, 86, 41,128,218,149,151,125,253, 82, 74,253,106, 82, 74,115,214,172, 89,227,250,206, -221,253, 33,229,237, 63, 33, 36,160,166,195,225,200, 73, 73,249,163,191,226, 96,140,153,205,102,203, 13,184, 16, 35,100, 56, 28, - 14, 63,231,231,139,190,214, 9,116,126,158,110,217,178,101,110,100,100,228,247,241,241,241,197, 59,119,238,140,233,214,173, 91, -140,251, 50,221,186,117,107,232,177,154, 5,190,251, 57, 4, 33, 36,103,216,176, 97, 94,207,121, 0, 46, 3,239,113,126,250,109, -106,158, 82,154,179,111,223, 62,133,251,250,190,244,221,174, 35,255,205,215, 87, 47,115,174, 83,167, 78,156,187,142,175,115,223, -102,179,121,109,215,134,193, 96, 48,254,206,212,217,104, 25,141,198, 11, 29, 58,116,240, 90,187,214,104, 52,158,247,183,110, 81, - 81, 81,215,186,110, 47, 16, 86,171, 53,227,239,160, 89, 88, 88, 24,242,188, 51, 66, 75,125, 28,163,252,252,252,238,161,214,180, -219,237, 33, 63, 63,109, 54, 91,200, 53, 1,160,184,184, 56,189, 62,116, 25, 12, 6,227,239, 66,157,141, 86,176,205, 56, 48, 24, - 12, 6,131,193, 96,252,211, 9,170, 21,106, 6,131,193, 96, 48, 24, 12, 70,221, 33,168,238,165,186, 22,117,249,154,128, 16,226, - 85,195, 31,129,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,253,105, 6,210,190,238,190,102,148,191,166,170,143, 1,192, - 0,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,234,192,138, 14, 25, 12, 6,131,193, 96, 48,234,137, 63,189, 83,105, - 70, 53,132, 16,158, 82, 26,116,139,250, 65, 16, 5,192, 87,135,113, 22, 0,151,175, 64,147, 0, 80, 56, 7,185,161, 35, 27, 0, -171,115, 8,162,233,250, 25,220,197,139, 81,237,168, 67,236, 70, 9, 17, 37, 9, 63, 55,105,210,248, 16,112,139, 5, 0,244, 9, -109,218,232,117,154, 1,102,171, 37, 85, 37, 42,143,149, 86, 85,110, 52,229,159,204,190,130,180, 50, 24,140,171,132, 16,114, 27, -128, 25,168,190,246,231, 80, 74, 87,254,197, 73, 98, 48,254,246,248, 52, 90, 97, 97, 97,251, 57,142, 75, 10,212, 62,143,140,179, - 47,179,156,146,146,146,160, 62,145, 39,132, 8, 0, 70,235,245,250,126,162, 40,246, 4, 0,155,205,182,179,178,178,114, 51,128, - 85,148,210,224, 58,104,171,173, 27, 14, 96, 12,128,177,206, 73,203, 1,172,164,148,150, 95,161, 94,135,136,136,136, 47, 69, 81, -164, 69, 69, 69, 61, 0, 32, 38, 38,102,143,205,102, 35,229,229,229, 35, 41,165,191,214, 81,143, 19, 69,113, 94,239,222,189,251, - 16, 66, 62,166,148, 46,188,146,116,121, 65,197,113,156, 87,131, 34, 73, 82,138,183,233, 1, 80, 0,136, 88,184,112, 97,204,178, -101,203, 58,229,228,228,180, 7,128,164,164,164,195,227,198,141, 59,244,232,163,143, 22, 3, 40, 67,181,225,242,201,197,139, 81, -237, 10,242,206, 60,148, 95,112,108, 12, 0, 36, 52,108,191,146,231, 57, 69, 98,226,193,221,218, 6, 99, 27,180,108,213,244,193, - 47, 62, 90,168, 72, 73,109,140, 31,119, 29,188,225,209,199, 95,104,167,142,111,249, 22, 51, 91,127, 30,225,225,225,251, 57,142, - 75, 2,124, 95,227,222,174,121,135,195,145, 83, 92, 92,236,245,122, 15, 15, 15,223, 47, 8, 66,146,175,117,125, 77,147, 36,233, - 76, 97, 97,161,215,166, 38, 34, 34, 34,118, 11,130,144, 26,172,150,252,107,183,219,115,124, 53, 45, 19, 17, 17,177,159,231,249, - 36,127,249,244, 54, 79,146,164, 51, 5, 5, 5,190,210, 89, 43,239,161, 72,231,149,104,250, 75,167,115, 25, 14,192, 59, 49, 49, - 49, 55, 22, 23, 23,255, 11,192, 11,229,229,229, 29,121,158, 71,116,116,244, 11,132,144,223, 34, 34, 34, 62, 44, 43, 43,219, 5, -224,113, 74,169,228, 75,139,193, 96,120,199,167,209,226, 56, 46, 41, 55, 55, 55, 78,167,211, 1,248,163, 63, 62,185, 51,105, 73, -146, 64, 41,117,253,218,237,118,180,110,221, 58,168,141, 18, 66,218,135,135,135,175,158, 58,117,106,147,209,163, 71, 43,229,174, -102, 46, 94,188,216,226,203, 47,191,252,215,107,175,189,246, 10, 33,100, 20,165,244,112,144,122, 28,128,254, 0, 38,116,234,212, -105,196,171,175,190,170,184,249,230,155,225,112, 56,240,253,247,223,247,158, 57,115,230, 66, 66,200, 87, 0, 62, 5,240, 67,176, - 55, 11, 66, 72,175,132,132,132,207,119,236,216,209,240,236,217,179,142,209,163, 71,175, 0,128,253,251,247,167, 57, 28, 14,210, -163, 71,143, 44, 66,200,221,148,210, 29, 65,101,188,154, 17,143, 61,246,216,157,147, 39, 79,142,187,247,222,123, 39, 2, 88,232, -220, 22, 1, 0,234, 44,252,174, 3,174, 72, 22,165, 84,225,103,185, 4, 4, 31,217,210,157, 61,123, 54, 42, 35, 35,227,225,130, -130,130, 39,221,117,243,243,243,113,224,192, 1,235,236,217,179,231,239,218,181,235,189,212,212,212,203, 0,170,124, 9, 81,135, -216, 45,191,224,216,152, 62,233, 11, 35, 0, 96,213,154,135,239,218,119,168, 48,108,237,186,197,255, 82,170, 21,230,101,255,157, -175,104,222, 44, 5, 91,246,159,198,222, 99, 37,164,125,175,161, 66,217,218,165, 3, 1, 44, 14, 34,157,140, 16,192,243,124, 98, - 78, 78, 78,156, 86,171,245,218,113,188, 71,189, 12,185, 1, 84,180,104,209,194,167,166, 32, 8, 73,185,185,185,113,106,181,218, -117,239,240,188,103, 0,128,251,233, 78, 41, 69,203,150, 45,125, 26,119,142,227,146,207,159, 63, 31,167,213,106, 93, 58,222,210, - 39, 35, 27,142,150, 45, 91,250,203,123,141,116, 6,163, 73, 41, 69,243,230,205,125, 70,163,229,188,203, 61, 96, 4,202,183,172, -153,154,154,234,243,218,247,166, 25, 76, 58,155, 54,109,234,247, 69, 8,192, 59, 39, 79,158,156,220,184,113, 99, 52,111,222,124, -215,141, 55,222, 24,174,211,233,176,110,221, 58,180,105,211,166, 93,120,120,248,222, 85,171, 86,137,207, 61,247,220, 13,159,124, -242, 9, 0, 60, 26, 64,143,193, 96,120,224,211,104, 17, 66,160,211,233,176, 98,197, 10,159,221,113,184,255,111,210, 36, 96,175, - 33,178,110,215,212,212,212,173, 59,118,236,208, 52,108,248, 71,131,216, 22,139, 5, 81, 81, 81,120,228,145, 71,148,183,221,118, - 91,243, 65,131, 6,237, 33,132,220, 68, 41,221, 31, 64,111, 68,108,108,236,187,211,166, 77,139,191,243,206, 59, 17, 19, 83,163, -209,109,140, 30, 61, 26, 35, 71,142, 84,156, 60,121,242,174, 37, 75,150,220,181,104,209,162, 60, 66,200,163,148,210,175,252,233, -106,181,218, 97,205,154, 53,123,127,199,142, 29,113,113,113,113, 72, 75, 75,227,158,123,238,185,230, 45, 90,180,208, 36, 37, 37, -113,151, 46, 93,194, 55,223,124,147,120,247,221,119,175, 86, 42,149, 15, 90, 44,150,111,131,200,187, 50, 38, 38,230,133, 7, 31, -124,176, 65,121,121,185,253,192,129, 3,167,228,233, 74,165,114,102,122,122,122, 55, 66,200,103,148,210, 15, 3,105,185,225,138, -100, 57,163,118,158,125,153,216,228,249, 65, 70,182,148, 63,255,252,115,116,122,122,250, 87,102,179,185,243, 67, 15, 61,116,126, -246,236,217,154,240,240,240,112, 0,164,188,188,252,242,140, 25, 51, 44,111,191,253,246,243,109,218,180,233,191,123,247,238, 17, - 55,220,112,131, 13,213, 38,174, 22,148, 16, 87,122, 46,228, 22, 98,235, 46, 73,249,242,212,103,146,222,152,149,122,238,167,163, - 23, 36, 65, 19,142,239,182, 29, 65,126,113, 37,254,183,251, 40, 18, 98,194,136, 66, 37,182,139, 76,106,119, 83, 89,238,209,109, - 87, 96, 60, 25,117,132, 16, 2,173, 86,139,239,190,251,174, 86,215, 85,222,186,181, 18, 4, 1,145,145,145, 1,123, 55, 80,171, -213,216,184,113,163,215,190, 23,189,117,233, 19, 17, 17, 1,192,119,167,218,132, 16,168,213,106,236,220,185, 19, 28,199,121,237, - 26,200,115,154, 78,167, 3,231,167,175, 43, 89,115,219,182,109, 1,181,228, 95,189, 94, 15, 0,181,250,164,116, 71,165, 82, 97, -199,142, 29, 62,243,236,249, 95,239,236,239, 53,144,230,206,157, 59,107,116,253,229,217, 37,152,251,184, 78,167,115,189,192,249, - 34, 42, 42,170, 71, 82, 82, 18,246,237,219,135, 85,171, 86, 69,183,107,215, 14,167, 79,159, 6, 33, 4,179,103,207, 38,109,219, -182, 21,243,242,242,208,187,119,111,124,253,245,215,245,210,168, 45,131, 17, 36, 34,128, 27, 0,196,162,186, 23,154, 10, 0,145, -168,126,246, 40, 1, 20, 3,208, 56, 7, 51,128, 74, 0, 13,156,235, 22,161,250,222,226,110, 16, 10, 81,179,243,233,110, 78,109, -185,135,138, 88,183,121,242, 54, 60,199, 61,127,189,106, 11, 0,144,149,149, 37, 63,204,250,102,102,102,110,173,145,179, 32, 76, -150,220, 79,153,231, 53, 77,107,119, 48,171,210,233,116, 95,238,217,179, 71, 19, 27,251, 71, 30,204,102, 51, 42, 42, 42, 80, 89, - 89,137,138,138, 10,132,133,133, 97,213,170, 85,154,254,253,251,127, 73, 8,105, 65, 41, 53,251,210, 4, 48,255,210,165, 75,241, -118,187, 29, 74,165,247, 42, 74, 28,199,161,117,235,214,120,225,133, 23, 48,120,240,224,132,126,253,250,205, 7,224, 50, 90, 94, - 52,161,213,106,223, 63,112,224, 64,156, 86,171,197,169, 83,167,144,147,147,131,167,159,126,186,177, 36, 73,184,112,225, 2, 78, -159, 62,141,220,220, 92, 44, 89,178, 36,110,248,240,225,239, 3,168, 97,180,188,105, 2,120,232,201, 39,159,108, 21, 21, 21,197, -253,251,223,255, 46,173,170,170,250,143,115,250,203, 11, 22, 44,184,167, 79,159, 62,113,247,221,119, 31, 37,132, 44,163,148,214, - 50, 46, 30,154,222, 34, 89, 14, 0,199, 61, 86,107,237, 17,233, 74, 64,245, 73, 88,234, 69,147, 0,136, 24, 52,104,208, 83,102, -179,185,243,142, 29, 59,126,235,217,179,103, 50,128, 75,112,158,124, 17, 17, 17,186,249,243,231,199, 15, 29, 58,244,228,205, 55, -223,220,121,208,160, 65, 79, 21, 22, 22,206,118,206,167,158,154,146,132,159, 19, 26,182, 95,185,109,247,163, 99,182,236,180, 40, -158,121,252,149,243, 77, 26,167,148,253,124,170,196,113,244, 76, 33, 42,140,118,220,113,115,117, 7,230, 61,218, 55,193,187, 43, -118,224,145, 39, 94, 20,191, 90,185,116,228,111, 20, 58, 0, 89,126,246,231, 85,193, 52,171,113, 22, 49, 65, 20, 69,220,122,235, -173, 32,132,212,234,203, 83, 20, 69,236,222,189, 27, 55,223,124, 51, 68, 81,196,164, 73,147,130,210, 20, 4, 1,131, 6, 13,114, -245,163,232,174,231,105, 26,188,121, 2,207,188, 83, 74, 33, 8, 2, 56,142,243,217,145,182,167,102,160,251,146,156, 78,127, 90, -238,243, 2,165, 83,142, 38, 5,107,178,130,213,148,211, 41, 8, 2, 50, 50, 50,112,232,208, 33,191,166,203,155,191,244,204,251, -229,203,151,199,183,104,209, 98,219,194,133, 11,163, 1,160,184,184,216,213,225, 61,207,243, 56,113,226, 4, 44, 22, 11,166, 79, -159,110, 45, 47, 47,191,175,150,160, 23,205, 80,192, 52,255,153,154,254,188, 8,128, 62, 83,167, 78,237, 58,119,238,220,217,233, -233,233, 95,236,218,181,235,115, 66,200, 90, 74,233, 80,249,119,234,212,169,237,230,206,157, 59,123,202,148, 41, 47,204,153, 51, -231, 8, 33,100, 45, 0,120,142, 59,211, 63,212, 77, 91, 4, 16, 43,235, 0,128,231,178,222,198, 61,127,125,104,255, 17,209,202, -204,204, 36,206, 76, 18,183,133,131, 54, 90,129,222,198, 0, 64, 16,132,201,179,103,207,142,247,103,178, 42, 43, 43,113,241,226, - 69, 36, 39, 39, 99,210,164, 73,241, 11, 23, 46,156, 12,224, 77, 63,178, 10,158,231,177,111,223, 62, 20, 20, 20,160, 67,135, 14, - 72, 77, 77,173,177,192,239,191,255,142,239,191,255, 30,165,165,165,232,210,165, 11, 80, 93,255,200, 43, 55,220,112,195,244,214, -173, 91, 15, 26, 52,104,144, 93,163,209,224,231,159,127, 70,231,206,157,177, 98,197, 10, 52,105,210, 4, 90,173, 22, 39, 79,158, - 68,135, 14, 29,176,117,235, 86,196,198,198,162, 83,167, 78,246, 46, 93,186,108, 47, 41, 41,217,156,157,157, 61,221,155, 46, 33, - 68,145,152,152,248,202, 3, 15, 60,160,188,120,241,162,244,233,167,159,238,160,148,238, 32,132, 76,126,241,197, 23, 39, 14, 30, - 60, 56,238,224,193,131,101, 63,253,244,211, 94,111, 38,203, 11,222, 34, 89, 53,234,181, 57,139,108,204, 70,163,209, 98, 54,155, -109, 28,199,101, 19, 66, 44, 14,135,195, 87,153,143,122,194,132, 9, 77,139,138,138, 30,121,226,137, 39,206, 58, 77,214, 9, 84, - 87,128, 7, 0,216,237,118,115,101,101,101,121,122,122,122,242,221,119,223,253,219,231,159,127,254,200,132, 9, 19, 86,125,250, -233,167,149, 0,140,158,130, 77,154, 52, 62,196,243,156,162,170, 34,250,204,234, 85, 31, 62,249,253,154,201,141, 47, 92,200,109, - 30,211, 32,182, 74,161,143,189,184,106,249, 39,251, 1, 88, 46, 22,150,227,215,223,243, 32,138, 60,142, 93, 40, 67,159, 91, 70, -139,191,157,154,213, 11, 78,163,197,168, 87,168,220, 9,245,150, 45, 91,252, 70,180,118,239,222, 13, 81, 20,161,209,104,240,246, -219,111,251, 21,149,141,129, 28, 45, 10,100,102, 56,142,243,123, 31,145,205,134,220,209,187,231,240,159,255,252, 7, 79, 60,241, - 68,141,109, 56,205,134,223, 40,153,187,129,241, 76, 95,114, 74, 10, 10,242,243,107, 76, 11,166, 83,122,135,195, 1, 81, 20,241, -193, 7, 31, 96,232,208,161, 88,187,118,173,223,223, 91,111,189, 21, 28,199,249,141,222,202,233,204,200,200,128,213,106,117,165, -249,196,137, 19, 94,117, 23, 45, 90,228, 55,141,114,197,247,206,157, 59,135,247,235,215, 15,219,182,109,195,200,145, 35,205, 86, -171,245, 20, 0,100,102,102,182, 92,184,112,161,242,192,129, 3,136,137,137, 17,207,159, 63,255, 49, 33,132, 85,144,103,212, 43, -222,188,136, 19,213,220,185,115,103,123,154, 24,119,228,249,132,144,181,115,230,204, 25, 10,252, 97,138,220,199,157,139,187,247, -173,218,103,234,212,169,237,220,198, 11,221, 77,148, 60,209,223,182, 61,150,175,209,111,171,203,104, 57, 51,214, 87, 30,231, 56, - 14,242,205, 55,144,201,242,245,230,232, 73, 68, 68,196,144, 59,238,184,195,101,114, 76, 38,147,203, 96,201, 38, 75, 30, 63,121, -242, 36,186,118,237,170,136,136,136, 24, 2,255, 70,171, 58, 35,130,128, 70,141, 26,161,168,168, 8,135, 15, 31, 70,114,114, 50, -108, 54, 27,214,175, 95,143,178,178, 50,136,162, 8,133, 66, 1,171,213,127,149,133,214,173, 91,223,186,108,217,178,174, 75,151, - 46,189, 44,191,209, 45, 95,190, 28,148, 82,196,198,198,194, 96, 48, 32, 63, 63, 31,155, 55,111,134,221,110,135, 94,175, 71, 90, - 90,154,114,216,176, 97,189,102,204,152, 33, 2,152,238, 67, 58, 99,228,200,145, 17,225,225,225,120,252,241,199,169,213,106,157, - 67, 8,201, 24, 57,114,228, 43,143, 62,250,104, 76,118,118,182,229,254,251,239,223,103,181, 90,255, 13, 0,132, 16,145, 82,106, -243,161, 5,192,127, 36,203,102,179,201,251,244,108,101,101, 37, 26, 52,104,144, 28,160, 14, 23, 0, 40,118,238,220,153, 1,128, -159, 57,115,166, 26, 64, 62,220, 76,150,197, 98, 65,101,101, 37,170,170,170,108,101,101,101, 5,207, 62,251,172,253,243,207, 63, -231,157,235, 28,131, 23,163, 5,220, 98,105,219, 86,167,164,148,127,113,241,226,197,250,193,131, 7,115,122,189, 30, 21, 21, 21, -225,255, 91,183, 78,223,191, 95,175,180,217,115,223,216, 16,158,212, 33,127,231,207,103,144,155, 87, 6,139,205,134,180,134, 17, - 0, 36, 86,241,246, 79,192,249, 33,139, 43,162,229,110, 42,182,109,219,134, 91,110,185,197,117,173, 43, 20,138, 26,145,175, 64, -154,130, 32,224,150, 91,110,169, 21,225,217,178,101,139,215,232, 83, 32,220, 77,145,167, 57,242,102,192, 56,142,171, 85,127,201, -155,166,175, 34, 77, 0,181,230, 5, 99,180,228,252, 62,250,232,163, 16, 69, 17,207, 61,247, 28, 4, 65, 64,167, 78,157, 32, 8, - 2,210,211,211, 33,138, 34,110,190,249,230, 58,231,125,207,158, 61,232,220,185,179, 43, 77,157, 58,117, 66,183,110,221, 32, 8, - 2,122,247,238, 13, 81, 20, 49,104,208,160, 96, 52, 95,168,168,168,232,168,215,235,113,242,228, 73,240, 60, 15, 66,200,105, 74, -105, 71, 0,120,224,129, 7,126, 51, 24, 12, 77, 77, 38, 19, 30,120,224, 1, 98,177, 88, 58, 60,247,220,115, 47, 2, 96, 70,139, - 81,111,120,122, 17, 55,140, 83,166, 76,121,129, 16,178, 86,142, 80, 1, 53, 35, 79,222,198, 61,113, 51, 67,114,209, 94, 55,212, - 52,113,114,177, 95,166,159,117, 45, 30,198,202,179,232,208,189, 72,210,127, 68, 75,190,249, 6,107,180, 2, 97, 50,153,110,136, -139,139,147,255,215, 50, 89,238,191, 22,139, 5,169,169,169, 48,153, 76, 55, 4, 20,174,185, 35,208,176, 97, 67, 88,173, 86,124, -248,225,135, 80, 40, 20, 80, 40,254,240, 23, 22,139,255, 96,209,209,163, 71,207,238,217,179,167,115,151, 46, 93,162,190,254,250, -235,194,155,110,186, 41,118,240, 61,164,226,140, 0, 0, 32, 0, 73, 68, 65, 84,224,193,208,104, 52, 48, 26,141,176,217,108,232, -209,163, 7, 90,183,110,141,156,156, 28,252,239,127,255, 43,106,209,162, 69,131,189,123,247, 74,121,121,121,231,252, 72, 15,236, -223,191, 63, 8, 33, 88,183,110, 93, 17,165,244, 39,181, 90,253,253,172, 89,179,162, 44, 22,139, 52,110,220,184,243, 37, 37, 37, - 79, 0,176,170, 84,170, 5,131, 6, 13, 74,231,121,254, 51,135,195,225, 63,108,224, 5,207,125, 91, 85, 85, 5,181, 90, 29, 76, - 83, 18, 98, 73, 73, 73,123, 0,208,233,116,209, 0,126,147,103, 24,141,198, 26,102,216, 98,177,152,162,163,163,117, 0,224, 92, -199,179,110, 24, 0,128, 16, 18,171,213,106, 87,159, 59,119, 38,204,189,254, 92,100,100, 36,198,222,125, 55,215, 51, 35, 67,217, -241,134, 27, 6,189,244,214,210, 21,141, 98,194, 45,105,141, 98, 96,115,216,176,105,195,122,137, 74,182, 13,117,205, 59,163,238, -184, 23, 29,122, 70,180, 68, 81,196,214,173, 91,107, 77, 83, 40, 20,248,239,127,255,235, 87, 87, 54, 6,178,169,242, 85,116,230, - 81,212,229,247, 70, 34, 71,217,121,158,199, 7, 31,124, 0, 73,146,240,228,147, 79,214, 40, 78,116,215, 15, 6,119, 19,216,250, - 21, 9,128, 5, 57,243, 84,174,245, 61,211,235, 92, 39,168, 40,217,194,133, 11,131,138,104,101,102,102, 6, 52,174,238, 37, 12, -238,233, 58,116,232,144, 87,221,197,139, 23, 7,220,159, 14,135, 3, 89, 89, 89, 46,147, 42, 51,109,218,180, 7,146,146,146,226, -183,111,223,142,188,188, 60, 84, 85, 85,161,178,178, 18, 61,122,244, 72, 27, 48, 96,192,207,121,121,121,217, 71,143, 30,189, 35, -168, 29,204, 96,212, 1, 63, 17, 45,243,156, 57,115,142,204,153, 51,199,107,196, 74, 94,200,115,220, 19,183,168, 84, 55, 84, 27, -162, 88,217,188,161,186, 90,205, 79, 65,172,171,244, 44, 58,244,151, 39,207,136,214, 12,121,220,253,230, 27, 76,241, 97,144,225, -116,129, 16, 2,147,201,228,213, 96,185,155, 3,171,213,138,146,146, 18, 56, 28,142, 43,110,235,203,219,155,108, 32,163,117,248, -240,225,123, 39, 78,156,120, 49, 34, 34,162, 99, 97, 97, 97,129, 36, 73, 55,239,222,189, 59, 86, 16, 4,132,135,135, 35, 60, 60, - 28,223,127,255, 61,180, 90, 45, 30,125,244,209, 2,135,195,177, 45, 44, 44, 44,198,104, 52,254,146,151,151,247,146, 47, 93, 81, - 20, 7,245,238,221, 27, 7, 14, 28,192,229,203,151, 55, 18, 66, 58,221,119,223,125,183, 52,110,220,152,204,154, 53,203,244,251, -239,191,191, 13,160, 64,167,211, 45, 91,182,108, 89,191, 46, 93,186,132,141, 27, 55, 14,132,144,197,148, 82, 83,176,121,174,170, -170,170, 97,176,202,203,203, 81, 81, 81, 1,157, 78, 23, 84,115, 25,148, 82, 17,213,117,173,228,250, 86,174, 99,227,140,102,201, -199,135, 10,130, 64,171, 23,161, 94, 77, 22, 0,232,116,186,153, 75,151, 46,213,120,126,164,224,112, 56,144,159,159,143,240,240, -112, 76,123,233, 37,197,171, 79,223,215,153,215,199,239,230, 56, 2,139,149,150, 82,201,178,190, 42,255,206,237,193,230,155,113, -117,200,198,224,246,219,111,175, 85, 92,168, 80, 40,176,113,227, 70, 12, 31, 62,220,245,226,210,165, 75,151,128, 47, 87,178, 49, -184,237,182,219, 0, 84, 71,134,214,175, 95,239,181,216, 79,142, 72,249,195,221,192,240, 60,143,199, 30,123, 12,130, 32,224,221, -119,223,197, 83, 79, 61, 5,142,227, 48,111,222, 60,112, 28,135,151, 95,126, 57,168,124,123, 26,152,236, 55,170,127,147,158, 42, - 71,241,162,120, 0, 64, 88,120,184,156,161,160, 52,229,188, 11,130,224,138,100,221,112,195, 13, 16, 69, 17,233,233,233, 16, 4, -193, 21,201, 26, 50,100,136,251,126,244,187, 1, 89, 83, 16, 4,156, 58,117,202,149,230,244,244,244, 26,145, 44, 65, 16,144,153, - 89,235,101,220, 27,179, 35, 35, 35,103,180,110,221,186,205,252,249,243, 69,158,231,209,191,127,255,150,247,223,127,255,185,152, -152,152,152,153, 51,103,106,189,172,163, 1,208,177, 77,155, 54,186,160,119, 6,131, 81, 7, 60,189,136, 27, 81,238,117,174,130, -213,115, 51, 81,174,113,160,118, 49,160, 51, 66,182, 45,144,150,183,117, 3, 33, 0,213, 14,210,219,204,186, 24, 45,103,216,217, -239,198,180, 90,237,175, 5, 5, 5,233, 26,141,166,134,201,242,102,184,120,158, 71, 94, 94, 30,180, 90,109,157,218,169, 10, 68, -160,162, 67,167,169,121, 90, 30, 39,132, 12, 24, 50,100,200,167, 27, 55,110,108,184,105,211, 38,236,221,187, 23,177,177,177, 88, -184,112,225,165,252,252,252,123, 41,165, 27,131,217,110,211,166, 77,219,235,245,122,236,220,185, 19, 0,182, 2,184,239,145, 71, - 30, 33, 54,155, 13,139, 22, 45,170, 2,176, 46, 50, 50, 50,107,213,170, 85,157, 59,118,236,168,220,180,105, 83,249,222,189,123, -127, 8,210,100, 57, 36, 73,170,101,176,220,247,105, 88, 88, 88, 48, 17, 45, 91, 68, 68,196,225,242,242,242,209, 70,163,177, 92, -165, 82,133,149,151,151,155,221, 13,150,172, 47, 8,130,120,234,212,169,139, 0,210, 34, 34, 34, 14,195,173,136,209, 29, 65, 16, -250,247,239,223,191,134, 89,182, 90,173,200,207,207, 71, 94, 94, 30,172, 86, 43,186,116,233, 66,120, 98,227, 75,206,255,242, 64, - 16,105,100,132, 24, 66, 8,149,175,117,249, 43, 65,207, 65, 16, 4,172, 95,191,222, 53,206,113, 28,156,159,251,251,210,116,153, -162,141, 27, 55,250,140, 98,121, 41, 58, 12, 24, 26,151,151,127,239,189,247,170,187,183,112, 70,178, 56,142,195,148, 41, 83,160, - 82,169, 48,107,214, 44, 76,153, 50, 5,130, 32, 4, 44, 58,116, 55, 48, 41,207, 25, 92,211,229,162, 67,155,179, 62, 20, 33,196, -221,108,249,141,104,185,155, 55,127,209,188, 96, 74, 2,220, 53,229,245,212,106,181,215,226, 83, 47,154, 62, 55, 64, 41,253,142, - 16,114,166, 97,195,134, 59,211,211,211, 35,246,239,223,143,121,243,230, 41,204,102,115,147, 77,155, 54,185,182,235,109,127, 85, - 85, 85,105,130, 74, 56,131, 81, 7,124,121, 17, 39,133, 30,245,171,136,123, 49,158,159, 95,207,229,225, 54,205, 93,183, 16, 53, -159, 99,238,211, 61,205,149,231, 54,220,151,169, 81, 63, 11, 8,208,188, 67, 93, 42,195, 7, 19,209, 50, 24, 12, 63,172, 91,183, -174,219,221,119,223, 45,248, 43, 54,172,170,170, 66,124,124, 60,142, 28, 57, 98, 55, 24, 12, 63, 4,210,117, 56,130,111, 96, 61, -144,209,242,132, 82,186, 41, 33, 33,129,183,217,108,104,222,188, 57, 18, 19, 19, 97, 50,153, 80, 90, 90,202, 7,107,178, 8, 33, -138,174, 93,187,242, 0, 80, 90, 90, 10, 84,127,106,218,178, 69,139, 22, 56,112,224, 0, 74, 74, 74,190, 2, 48,120,198,140, 25, - 93,122,244,232,161, 88,177, 98,133,225,161,135, 30,250,202,102,179, 77, 15, 70, 95,146, 36,139,221,110, 79,229, 56,206, 90, 90, - 90,154,235,190, 63,227,227,227,163,117, 58, 29,201,207,207,247, 91,223,203,137,173, 99,199,142,251,206,159, 63,143,153, 51,103, - 22,206,158, 61,187, 69, 69, 69,197,229,178,178, 50,187,187,217, 50,153, 76, 92,131, 6, 13, 84,139, 22, 45,210, 0, 64,199,142, - 29,247,193,135,209,170,170,170,106,172,213,254,241, 98,108, 54,155,145,151,151,135,188,188, 60,228,231,231,163,162,162, 2,105, -105,105, 48, 24, 12,201,193,228,149, 17,122, 60,191,146,115,191,190,221, 31,228,117,185,214,129, 63, 12,204,237,183,223,238,170, -219, 37, 71,200,228, 97,245,234,213,238,197,134, 64,144, 70,235,189,247,222,195, 99,143, 61, 6,181, 90,141,249,243,231,215, 40, - 58,244, 52, 7,146, 36, 5, 52, 69,130, 32, 32,245,121, 35,242, 22, 68, 67, 20, 69,196, 60,148, 95,163,136,206,139,225, 8, 42, -157,179,103,207, 14, 73,209,161,187,102,114,114, 50, 0,224,131, 15, 62,192,232,209,163,177,125,251,246, 43, 46, 58,108,215,174, -221,242,181,107,215, 70, 28, 61,122, 20,229,229,229, 40, 44, 44,132,217,108, 70, 78, 78, 14, 0,239,165, 2, 0, 96, 48, 24,212, - 1, 19,203, 96,132, 22,159, 69,122,245,164, 27,178,237,249, 45,150,115,175, 36, 26,200,104, 5, 19,209, 50,155,205,243, 31,127, -252,241, 71, 6, 12, 24, 16, 29, 22, 22,134,139, 23, 47,214, 50, 89,149,149,149,208,235,245, 48, 26,141, 88,179,102, 77,185,217, -108,158, 31, 32, 15, 54,155,205,134,184,184, 56, 20, 21, 21, 65,242, 81,127,154,227, 56,104, 52, 26, 84, 86, 86, 2, 62, 76,129, - 47, 40,165,176, 90,173,176,217,108,176,217,108,176, 90,173, 1,223,146, 61,208,202, 13,191, 86, 85, 85, 1, 64, 85,163, 70,141, -154,171,213,106,156, 61,123, 22,168,254,178,111,192, 45,183,220, 34, 22, 23, 23,211,251,239,191,127, 7,165,244, 1,234,191,117, -124,203,182,109,219, 82, 1, 64,163,209,156, 4,128,156,156, 28, 91,105,105,105,141, 72,161, 86,171,165,195,135, 15,111, 72, 41, -197,182,109,219, 82, 21, 10, 5,133,143, 54,175, 0,152,190,253,246,219,163, 17, 17, 17,159,207,157, 59,247,238,161, 67,135, 30, -105,223,190,125,106, 85, 85, 85,129,209,104, 52,154, 76, 38,202,243,188, 34, 42, 42, 74,189, 97,195,134,223,118,239,222, 61, 32, - 60, 60,252,243,111,191,253,246, 40, 0,175,145, 55,157, 78,151, 99, 48, 24, 82,228, 99,234,110,178,242,242,242, 64, 41,197,153, - 51,103,160,213,106,207,215,101,135, 50, 66,139,252, 82,229, 25,121,241,156, 22,172,201,146, 17, 4, 1, 27, 54,108,240, 25,213, -169,139,113,115, 55, 69, 79, 61,245, 20, 22, 44, 88, 80, 43,162, 53,107,214, 44, 0,192, 75, 47,189, 20,116, 29, 45,160, 58,122, -149,183, 32, 26, 9,143,149,212, 72, 59, 0, 16, 57,125,117,108,210, 77, 16, 4,204,156, 57,179, 86, 37,117,247,162,189, 32,139, -248,106,164,179,160,160, 0,130, 32, 32, 58, 58, 26, 99,199,142,197,160, 65,131, 92, 69,144,117,213, 61,126,252,248,206,231,159, -127,190, 67,187,118,237,240,218,107,175,149, 68, 70, 70,134,253,223,255,253,159, 80, 90, 90, 90, 29, 94,244, 17,209, 98, 70,139, -193, 8, 30,191, 17, 45, 0, 65,153, 44, 95, 55, 96, 66,200, 0,247,182, 54, 40,165,101,132,144,177, 3, 7, 14,252,122,229,202, -149,154,166, 77,155,226,248,241,227, 40, 41, 41,129,197, 98,129, 66,161, 64,195,134, 13, 81, 90, 90,138, 79, 62,249,196,104, 48, - 24,198, 82, 74,203,252,105, 2,120,177,107,215,174,239,191,249,230,155,234, 78,157, 58,161,164,164, 4,149,149,149, 53, 90,177, - 14, 15, 15,135, 70,163,193,190,125,251,176,126,253,122, 35,128, 23, 3,104,214, 66, 54, 88,178,225, 10,100,180, 60, 52,117,114, - 84,199, 96, 48, 0,128,173,113,227,198, 9, 0,112,230,204, 25, 0,200, 78, 75, 75,155,209,180,105, 83,178,108,217, 50, 74, 41, - 93,239,205,100,121,104,150,244,238,221,251, 50,128, 4,139,197,162, 0,128,178,178, 50,107,131, 6, 13,226, 84, 42,149,164,209, -104, 36,181, 90, 45, 93,188,120,209,110,183,219, 21, 0,208,187,119,111, 11,128, 60,184,213, 5,241,208,148, 0,148, 47, 94,188, -120,198,184,113,227,210, 51, 50, 50,218, 61,252,240,195,135,239,191,255,126, 46, 49, 49, 49,170,162,162,194,116,250,244,233,203, -111,189,245, 86,197,158, 61,123, 6,136,162,120,110,241,226,197, 51, 0,148, 59,215,173,165,105,183,219,127,216,180,105,211,189, - 67,135, 14, 21,114,115,115,145,159,159,239, 50, 89,249,249,249,104,221,186, 53,118,239,222,237,176, 90,173,126,247,127, 48,199, -168,174, 48,205,106, 77,185, 89, 1,127, 6, 75,126,153, 10, 86,211,221, 20,141, 30, 61,186, 70, 20, 75,161, 80,224,203, 47,191, -244,122,223,240,188,174, 60,243,238,222,198,215,243,207, 63, 95,195,180, 77,155, 54,205,103,210,252,105,202,121, 23, 69, 17,101, - 31, 36,214,252,234,208,199,117,238, 47,157,242,189, 83, 20, 69, 76,155, 54, 45,232,136, 22, 60,234,104,121,211,148,243,126,211, - 77, 55,193, 96, 48,184,140,172,175,136, 86,160,253,233,112, 56, 30, 91,176, 96, 1, 13, 15, 15,191,177,188,188,252, 95,231,207, -159, 95, 98, 48, 24,186,151,149,149,121,205,167,140,217,108, 86,249,219,159, 87, 11,211,252,103,106, 94,175,248,125,229,179,219, -237,104,220,184,113,141,190,179, 56,142,171, 49,212,165,158, 1, 0, 80, 74, 55, 16, 66, 70,244,236,217,243,179,199, 30,123, 44, -172, 83,167, 78, 98, 74, 74, 10,170,170,170,112,246,236, 89, 28, 57,114,196,254,237,183,223,150, 27, 12,134,127, 81, 74, 3,126, -117, 70, 41, 93, 74, 8, 89, 63,120,240,224,151,123,244,232,241,224, 43,175,188,194,183,108,217, 18,101,101,101,136,138,138, 66, - 92, 92, 28, 78,156, 56,129, 53,107,214, 56,138,138,138,222, 7,240, 42,165,180, 86, 25,106,160,205, 88,173, 86,220,117,215, 93, -144, 36, 9,111,191,253, 54, 8, 33,117,121,189,181, 90,173, 86, 10,128, 20, 21, 21, 1,128,193,217,186, 52, 78,159, 62, 13, 0, -231, 82, 83, 83,195, 0, 96,211,166, 77, 4, 64,176, 93,250, 80,184, 69,182, 90,183,110,125, 22,168,221,173,137, 60, 31,213,145, -172, 64,233, 54,141, 25, 51,166,192, 96, 48, 12,126,234,169,167, 94,126,239,189,247,238,126,239,189,247,106, 45, 20, 30, 30,254, -249,188,121,243, 94, 29, 51,102, 76, 1,124, 68,179, 0,160,170,170,234,165,241,227,199,143,249,245,215, 95,195,212,106, 53,170, -170,170, 80, 92, 92, 12,171,213,138,180,180, 52, 20, 20, 20, 96,233,210,165, 21, 70,163,113,122,144,121,102,132, 24,119, 99,224, - 43,170, 21,200,100,249, 66, 16, 4,124,247,221,119,181,162, 88,193, 84,126,247,149, 78,111,117,147,252, 69,197,252,189, 20,201, -205,210,120,214, 23, 19,197,224,218, 6,244,167, 43, 8, 2,254,253,239,127, 67, 16, 4,159,145,172,186, 68,180,100,205,232,232, -104, 0,128,220,101, 82,102,102,230, 21,235,210,234,238,200, 92,221,234, 16, 66,102, 63,251,236,179, 51, 90,183,110,221, 18,128, -202,125, 31,212, 49,138,207, 96, 48,156,248, 52, 90, 14,135, 35,167, 85,171, 86, 0, 2,119, 92, 42, 99,179,217,114,130,217, 40, -165,116, 61, 33, 36,109,222,188,121,143,235,116,186, 1, 6,131,161, 3, 80, 93, 89,190,170,170,106,147,217,108,126,135,214,161, - 19,104,167,113,154, 76, 8,121,123,240,224,193,179,110,190,249,230, 81, 79, 63,253, 52,161,148, 98,209,162, 69,244,247,223,127, - 95, 13,224, 69, 74,233,239,193,106,186, 19, 29, 29,125,244,147, 79, 62,137,255,250,235,175, 97,179,217,240,206, 59,239, 32, 44, - 44,236,104, 29,210, 87, 32, 8,194,167, 25, 25, 25,247,236,222,189,123, 41,165,244, 23,165, 82,185,164, 87,175, 94,227,119,239, -222,189,156, 82,122, 68, 16,132, 37, 61,122,244, 24,255,211, 79, 63,173,162,148, 30,170, 67,242, 92,145, 45,187,221,123, 73,163, -183, 72, 86, 0,202, 39, 78,156,104,157, 56,113,226,211, 99,198,140,249,240,167,159,126,234, 94, 90, 90,218, 1, 0, 34, 35, 35, -127,237,214,173,219,190,149, 43, 87,158, 64,117, 36,203,111,101,125, 74,105, 33, 33,100,120,135, 14, 29,190,122,237,181,215,116, -237,218,181, 19,154, 55,111,142,236,236,108, 28, 62,124,216,254,241,199, 31, 87, 26,141,198,219, 41,165,193,244,193,200,168, 7, -228,232, 83,100,100,100,141,151, 40,249,147,255,186, 22, 23,202,200,154,158, 47,104, 60,207,251,212,244,215,108,130,140, 94,175, -119, 53,110, 26, 76,149, 5,201, 87,125, 2,183,116,202,154,242, 16,132,201, 10,248,133,160,179, 11,156,160, 53,131,105,222, 65, -167,211,193,102,179,185,116,131,248,242,179, 78,110,145, 82,250, 29,128,239,154, 55,111,126, 26, 64, 51,102,174, 24,140,171,199, -167,209, 42, 41, 41,241,218,139,124,168,112, 26,169, 87,157, 67,168, 52,127, 7, 48,134, 16,242,230,143, 63,254, 40,151, 35,204, -164, 1,250, 75, 12,196,241,227,199,135,138,162,248,223,207, 63,255,188, 7,165, 20, 17, 17, 17,123,178,179,179,255,175, 46, 26, -118,187,125, 34, 33,228, 17,249, 43, 66,139,197, 50,145, 16,242, 56,165,180,210,109,190,107,188,142, 80, 0,102, 74,105, 35, 31, -243,205, 8,222,100,201,152, 0, 88, 86,174, 92, 89, 9,224,103,252,209, 78,150,205, 57,152,224, 86, 92,232, 55,113,148,110, 38, -132, 52,159, 54,109,218,108,158,231,251, 87, 85, 85, 37,234,116,186, 11,118,187,253, 7,131,193,240, 34,165,180,184,142,105, 99, -132, 16,139,197,146,219,170, 85, 43, 1,168,253, 2,229,239, 65,238,239,197,202,225,112,228,180,104,209, 34,224,203,153, 23,205, - 92, 95,243, 40,165,231,210,210,210,184, 96,181,100,172, 86,107,129,191,116,166,165,165, 5,157, 62,183,116,250,205,123,106,106, -170,215,188,251, 67,146, 36,159,121,183,219,237, 87,164,233,111,127,250,195,104, 52, 94,142,141,141,173, 52,153, 76,162,217,108, - 22,237,118,123,141,240,163, 70,163,169,107,169, 0,131,241,143,229,138,219,168,186,150,113, 26,171,219, 66,168,103, 6,112, 79, - 8,116, 76, 30,227,149,254,198,235, 72,125, 68,132, 36, 0,134,128, 75, 5, 1,165,180, 8,192,253,161,208, 98,132,150,162,162, -162, 27, 67,173, 89, 92, 92, 28,242, 23,181,194,194,194,244, 80,107, 22, 21, 21,133, 60,157,127, 23, 77,127,228,230,230,134,252, -156, 96, 48,254,169, 92, 89,153, 0,131,193, 96, 48, 24, 12, 6, 35, 32, 4,192, 0,111, 51,234,242, 53, 1, 33,196,171,134, 63, - 2,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,250,211, 12,164,125,221,125,205, 72, 41,173,183, 1,192, 0,166,201, 52, -153, 38,211,100,154, 76,147,105, 50,205,127,234,192,138, 14, 25, 12, 6,131,193, 96, 48,234, 9,102,180, 24, 12, 6,131,193, 96, - 48,234, 9,102,180, 24, 12, 70,189, 66, 8,105,217,164, 73,147, 99,173, 90,181,202, 37,132, 76,168,231,109,141, 77, 79, 79, 47, - 86,171,213, 27, 8, 33, 45,235,115, 91, 12, 6,131, 17, 12,204,104, 49, 24,140,122,131, 16,210,178, 67,135, 14, 59,142, 31, 63, -222,122,211,166, 77,141, 18, 19, 19,223,168,207,237,117,237,218,245,245,237,219,183, 71,175, 91,183,110, 96, 66, 66,194,182, 43, - 49, 91,132,144,150,201,201,201,199, 90,181,106,149, 67, 8, 25, 27,202,244, 17, 66, 38,100,100,100,148,168, 84,170,245,204, 8, - 50,174,119, 8, 33,237, 9, 33, 29,254,234,116,252,213, 48,163,197, 96, 48,234, 5,217,100,237,218,181, 43,198,100, 50,225,248, -241,227, 40, 44, 44,172, 75,175, 7,117,230,228,201,147,151,119,237,218,133,164,164, 36, 44, 95,190, 60, 54, 53, 53,117,123, 93, - 12,141,156,230, 99,199,142,181,222,180,105, 83, 98, 92, 92,220, 91,161, 76, 95,247,238,221,103,109,223,190, 61,106,195,134, 13, -131, 98, 99, 99,175,200, 8, 50, 24,215, 50,132, 16, 21, 33,228, 30,142,227,246,181,111,223,254,215,118,237,218,253,194,113,220, -110, 66,200,104, 66,200,117,217,118,103, 32,136,243,235, 1,100,101,101,109, 5,128,204,204,204,155,254,194,244, 48, 24,140,235, - 0, 66, 72,187,118,237,218,237,217,179,103,143,214,104, 52, 98,213,170, 85,120,229,149, 87,108, 37, 37, 37,219, 1, 84,121, 89, -229, 39, 0,255,161, 65,116,189, 69, 8, 9, 7,240, 8,128,110, 94,102,235,162,163,163,123,207,152, 49, 67,188,229,150, 91, 96, - 50,153, 48,114,228, 72,211,201,147, 39, 59, 81, 74, 79, 6,208,117, 25, 67,163,209,136,253,251,247,227,246,219,111,223, 96,179, -217, 6, 7,147,231, 96,136,136,136, 56,242,221,119,223,181,109,212,168, 17,206,156, 57,131,241,227,199, 23,230,231,231,247, 9, -148, 54, 6,227, 90,135, 16,146, 2,224, 65,189, 94,127, 95,223,190,125,163,110,191,253,118,196,196,196,192,110,183,227,194,133, - 11, 88,187,118, 45,118,237,218,117,209, 98,177, 44, 0,240, 1,165,180,212,155,206,245,232, 69, 8,165, 20, 89, 89, 89, 20, 64, - 95, 0,200,204,204,220,250,215, 38,137,193, 96,252,221, 33,132,236, 50, 24, 12,233, 6,131, 1, 21, 21, 21,104,220,184, 49, 68, - 81,244,186,108, 65, 65, 1,118,238,220,137, 71, 31,125,244,104, 94, 94, 94, 31,234,167,223, 75, 66, 72, 84,231,206,157,119,109, -222,188,185,101, 88, 88,152,107,186, 36, 73,176, 90,173,176,217,108,176, 90,173, 48,155,205, 48,155,205, 80, 42,149,208,104, 52, -136,142,142, 62, 76, 41,245, 89,132,225,105,178, 14, 30, 60,136,113,227,198, 21, 22, 23, 23,135,212, 4, 17, 66, 90,198,197,197, -109, 91,186,116,105,108, 90, 90, 26,206,159, 63,143, 73,147, 38, 21,157, 59,119,174, 55, 51, 91,140,191, 43,132,144, 41, 35, 70, -140,152, 21, 31, 31,207,181,111,223, 30, 13, 27, 54,132,217,108,134,209,104, 4,165, 20,130, 32,128, 82,138,178,178, 50,108,219, -182, 13,155, 55,111, 54, 95,190,124,249, 19, 0,239, 80, 74, 79,201, 58,215,171, 23,113, 25,173,204,204,204, 43,239,170,158,193, - 96, 48,220, 32,132,252, 90, 86, 86,214,222,108, 54,163,170,202, 91, 0,171, 54,103,206,156,193,132, 9, 19,142,230,229,229,245, -244, 22,217, 34,132,132,119,238,220,121,239,182,109,219, 90,154, 76, 38,148,151, 7,238,119, 94,169, 84, 66,173, 86, 35, 38, 38, -102, 55,165, 52,195, 71, 90, 83,218,183,111,191,127,247,238,221,209, 70,163, 17,135, 14, 29,194,216,177, 99,173, 37, 37, 37, 59, -224, 61,250, 6, 0, 37,168,238, 71,245,156, 23,189,100, 0,143, 3, 72,241,177,174, 46, 54, 54,182,215,178,101,203, 20, 77,155, - 54,133,193, 96,192,232,209,163, 75, 78,158, 60,217,141, 82,122, 54, 96,166, 24,140,107, 12, 66,200,201,227,199,143,183,112, 56, - 28, 40, 42, 42,130,217,108,134,193, 96,112, 25, 45,158,231, 65, 41,133,221,110, 7, 80,253, 98,116,224,192, 1,108,218,180,137, -158, 57,115,230, 21, 74,233, 76, 0,215,173, 23,249, 71,150,151, 50, 24,140,122,103, 76,247,238,221, 15,253,239,127,255, 83, 43, -149, 74,172, 89,179,198,103,209, 97,124,124,124,187, 37, 75,150,164,166,165,165, 97,225,194,133,109, 71,142, 28,249, 8,128,217, - 94, 52, 31,217,188,121,115, 75,147,201,132, 67,135, 14, 97,252,248,241,103,243,243,243,143,120, 44,163, 75, 77, 77,237,253,214, - 91,111,137, 93,186,116, 65,121,121, 57, 6, 14, 28,104, 0,240,160,159,180, 78,222,178,101, 75,180,209,104, 68, 69, 69, 5,250, -246,237,139,226,226, 98, 5,128,155,125,173, 96, 52, 26,145,146,146,210, 18, 64, 45,243, 22, 19, 19,243,209,249,243,231,251,105, - 52, 26, 63,155, 4,172, 86, 43,114,114,114, 16, 25, 25,137,181,107,215, 70, 55,107,214,236, 37, 0, 19,253,174,196, 96, 92,163, - 88, 44, 22,124,241,197, 23,232,220,185, 51,218,180,105,131,202,202, 74,151,233,178, 88, 44, 46,147, 5, 0, 28,199,161, 91,183, -110,104,209,162, 5,121,242,201, 39,199, 2,152,249,215,165,188,254,145,141,214,140,235,177, 92,148,193, 96,252, 53, 80, 74, 79, - 18, 66, 58, 13, 24, 48, 96,251,234,213,171, 27, 12, 25, 50, 4,205,154, 53, 19,239,184,227,142,216,170,170,170,254,238,203, 18, - 66,162,198,143, 31,191,255,194,133, 11,169,206, 73,222,234, 94, 1, 64,183,176,176, 48,185,110,211,217,252,252,252,174,158,197, -140, 42,149,106,253,207, 63,255, 44, 42,149, 74,252,244,211, 79,152, 48, 97, 66,209,217,179,103, 3, 21,203, 69, 90, 44, 22,240, - 60, 15, 0,200,201,201, 9,152,191,243,231,207, 67,146, 36,179,183,121, 28,199,169, 14, 28, 56,128, 70,141, 26,249,213,224, 56, - 14, 10,133,194,125,146,215, 58, 43, 12,198,223, 0,155,197, 98, 65,215,174, 93,113,246,236, 89, 28, 56,112,192,101,184,138,138, -138,112,241,226,197, 26, 11,239,219,183, 15, 7, 15, 30, 68,159, 62,125, 60,117,174, 75, 47, 34, 0, 64,102,102,230,244,172,172, -172,155,254,226,180, 48, 24,140,235, 8,167,217,234,125,219,109,183,109, 91,186,116,105,108,227,198,141, 17, 22, 22, 22,238,101, -185,203,132,144, 35,162, 40,166,122,211,241, 70,126,126,254, 17,111,117,185, 18, 18, 18, 58, 89, 44, 22, 28, 60,120, 16, 99,199, -142, 45,116,214,249, 10, 84,247,233,181,254,253,251,223,182, 97,195,134,104,181, 90,141, 35, 71,142, 4, 83,116,152, 13,224, 29, -111, 51, 10, 11, 11,199,246,233,211,103, 26,128,104, 31,235,234, 90,180,104,209,107,255,254,253, 10, 66, 8,178,179,179, 49,122, -244,232, 18, 0,239, 6, 72, 39,131,113,173,242,242,136, 17, 35, 62,126,228,145, 71, 34,122,244,232,129,156,156, 28,151,225,234, -212,169, 19, 58,118,236,136,223,127,255, 29,235,215,175,199,193,131, 7,161, 82,169,208,172, 89, 51, 84,190,249, 22,240, 22,108, -178,200,245,234, 69, 92, 95, 29, 50, 24, 12, 70,125, 64, 8,105,169, 80, 40,222,142,141,141,189, 33, 55, 55,247, 41, 74,233,114, -143,249, 81,163, 70,141, 58,178, 98,197,138,134,217,217,217,104,218,180,233, 26, 74,233, 48, 47, 58,223, 82, 74,111, 63,115,230, - 12,122,246,236,233, 53,162, 69, 8,153,144,144,144,240,106, 69, 69, 69,153,193, 96, 24, 29,108, 5,115, 66, 72,203,230,205,155, -111, 95,179,102, 77, 3,173, 86,139, 99,199,142,213, 91,101,248, 86,173, 90,237,216,183,111, 95,140, 40,138,248,233,167,159, 48, -126,252,120, 86, 25,158,241,183,135, 16, 18, 6,224,217,180,180,180,103, 30,122,232, 33, 85,219,182,109,145,147,147,131,194,194, - 66, 92,190,124, 25,123,246,236, 1, 0, 36, 38, 38, 34, 49, 49, 17, 39, 78,156,192,206,157, 59,203, 43, 43, 43, 39, 82, 74,191, -254,107, 83, 95,191, 48,163,197, 96, 48,254, 84, 60, 43,139,143, 26, 53,170,235,178,101,203, 26, 22, 23, 23, 99,239,222,189, 24, - 57,114,228,139,148,210, 90,117,180, 8, 33, 47,228,229,229,205, 2,128,195,135, 15,123,214,209,242, 89, 57,189, 14,233,106,153, -146,146,178,125,213,170, 85, 13, 98, 98, 98,112,252,248,113,140, 30, 61,250, 72, 85, 85, 85,251, 43,213,244, 68,171,213,110,200, -203,203, 27,168, 80, 40,176,123,247,110,140, 29, 59,150, 53,239,192,184,174, 32,132,196, 1,120,169,109,219,182, 15,222,119,223, -125, 66,114,114, 50,114,115,115,241,227,143, 63,162, 89,179,102,184,112,225, 2, 54,111,222,108, 41, 44, 44,124, 27,192, 92, 74, -105,217, 95,157,230,122,167, 62,123,172,198,223,164,199,112,166,201, 52,153,230,159,167, 9, 96,253,209,163, 71,169,140,195,225, -160,185,185,185,116,195,134, 13, 52, 33, 33,225, 8,128,112,111,154, 0,194,219,180,105,115,252,196,137, 19,244,252,249,243,212, -106,181,186, 52,142, 31, 63, 78, 1,108,189,218,116, 2,104,153,152,152, 88,176,101,203, 22,122,226,196, 9,154,144,144,112, 33, -148,121, 79, 73, 73, 41, 40, 44, 44,164, 63,254,248, 35,141,141,141, 45, 0,208,242, 90, 60, 70, 76,147,105, 94,173, 38,170, 95, -164,150,117,233,210,197,177, 96,193, 2,250,224,131, 15,210,228,228,100, 7,128,143, 0, 36,134, 58, 61,215,242,192,190, 58,100, - 48, 24,127, 54,170, 61,123,246, 64,165, 82,185, 38,252,242,203, 47,238,237,104,121,109,183,129, 82, 90, 78, 8,233, 57,100,200, -144,237, 11, 22, 44,104, 99,179,185,170,118, 96,203,150, 45, 0,224,181,114,122, 93,160,213,245,202,250, 12, 30, 60,248,157,152, -152,152, 27,242,242,242, 94,190, 90, 77,119,178,179,179,159,234,208,161,195,236,138,138,138,242,186, 20,109, 50, 24,127, 55, 40, -165,217, 0,198, 17, 66,222, 56,112,224,192,139, 0, 40,128,215, 40,165,199,254,226,164,253,233, 48,163,197, 96, 48,254,108, 38, -220,127,255,253,158,149,197,131,106, 25,158, 86, 87,156,207,200,204,204,244,108, 25,222,103,229,244,186,226, 52, 63,131, 66,161, -229, 69,123, 57,128,229, 1, 23,100, 48,174, 19, 40,165, 71, 0,220,249, 87,167,227,175,132, 25, 45, 6,131,241,167, 66,171,235, - 81, 77,186,138,245,203,225,189,157, 45, 6,131,193,184,230, 96,157, 74, 51, 24, 12, 6,131,193, 96,212, 19,204,104, 49, 24, 12, - 6,131,193, 96,212, 19, 4,192, 0,111, 51, 40,165,155,130, 22, 33,196,171,134, 63, 2,233, 51, 77,166,201, 52,153, 38,211,100, -154, 76,243,250,211, 12,164, 93, 23,255,241,183, 32,200,207, 56,201,149,124,210,136,235,228, 51, 85,166,201, 52,153, 38,211,100, -154,193,107,162,250, 37,158,160,186,212,132,147,199,175,181,116,122,166,249, 90,205,251, 63, 69,243,122, 29,252, 86,134, 39,132, -184,118, 22, 33, 68, 2, 32, 81,231,222,188, 26, 8, 33,242,129, 8,137, 30, 35,244, 56,143,145,220,139, 58,101,199,137,193, 96, - 4,131,219,189,131,199, 31, 15, 91, 7, 0, 7, 33, 4,215,218,189, 36,148,207,185,250,200,251, 63, 89,243,122,193,171,209,146, -119, 24,207,243, 27, 26, 52,104,208,175,168,168, 72,114, 78,135, 82,169, 4,199,113, 16, 69,209, 88, 81, 81, 81,171,223,178, 64, - 16, 66, 62,138,143,143,159, 80, 92, 92, 44,113, 28, 7,181, 90, 13, 66,136, 75,179,180,180,180,206,154,161, 38, 37, 37,229,178, -209,104,212,123, 78, 87,171,213,166,115,231,206,133,253, 21,105,250, 51, 33,132, 16,133, 66, 49, 34, 58, 58, 58,178,176,176,144, -202,157,223,242, 60, 47,119,132,107, 47, 45, 45,253, 52, 88,189,232,232,232,125,209,209,209,145,242,250,132, 16, 20, 23, 23,151, -230,231,231,119, 7, 0,141, 70,179, 83,167,211,197, 8,130, 0,158,231,193,243, 60, 12, 6, 67,113, 81, 81, 81,207,122,203, 36, -163, 94, 89,189,122, 53, 63, 56,113, 82, 51,129, 26, 59,114, 28,141,144, 36, 82,102, 39,154, 95,214,231,126,244, 91, 48,235,143, - 26, 53,202, 81,223,105,100,252,129, 74,165,122, 59, 62, 62,254,190,202,202, 74, 3, 33,132, 18, 66, 80,253, 24, 64,173, 95,135, -195,145, 83, 84, 84,212,213,155,142,219,195, 86, 84, 42,149,243, 18, 18, 18,198, 27, 12, 6,131, 83,143, 18, 66,208,176, 97,195, - 26,122, 0, 96,179,217,114, 10, 11, 11,189,106,122, 18, 23, 23,183, 88,163,209,252,203, 96, 48, 84, 57,141,145, 11,143,135,249, -239,133,133,133,189,125,233,200,105, 85, 42,149,239,196,199,199,223,235,204, 59, 8, 33, 52, 54, 54,246,170,243, 30, 31, 31, 63, -190,170,170,170, 70,222,227,226,226,188,106,250,202,187, 55, 77,247,116, 18, 66, 16, 27, 27,123,213,233,188, 22, 53,175, 39,124, - 69,180, 56, 66,200,183, 61,123,246,236,187,117,235, 86,238,248,241,227, 92,235,214,173,225,112, 56, 32, 73,213,231,117, 82, 82, -146,182,174, 27, 35,132, 44,233,221,187,247, 93,219,182,109,227,190,253,246, 91,174, 91,183,110, 32,132,192,225,112,192,225,112, -160,125,251,246,154,171,201, 12, 33, 68, 47, 8,194,147, 74,165,242, 38,187,221,222, 6, 0, 68, 81, 60,102, 54,155,183,218,237, -246,249,148,210,202, 96,116,172, 86,171,182,160,160,160,214,190, 73, 75, 75, 83, 94,105,218,194,195,195,119,113, 28,151, 38,143, -203,134,195,153,110,175,191,148,210, 51,133,133,133, 25,190, 52,163,162,162, 92,154,190, 52, 60,167, 73,146,116,166,160,160,192, -167,166,211,100,141,236,221,187,119,196,166, 77,155,200,133, 11, 23,136, 70,163,129, 36, 73,112, 56, 28,176,217,108,104,219,182, -109,157,154, 5,137,140,140, 12,159, 50,101, 74,179, 91,111,189, 21, 95,126,249, 37,238,185,231, 30,244,234,213,235,148, 60, 95, -167,211,197, 28, 61,122,180, 69,116,116, 52, 12, 6, 3,202,202,202, 48,112,224,192,186,108,226,154,164, 71,231,198,175, 17,142, -184,218,138,162,118, 71,201,158,159,115, 95,186, 90,221,200,200,200,131, 74,165, 50, 94, 62,174, 28,247,199, 55, 45,190,142,191, -201,100,202, 47, 42, 42,234,236, 79,151, 16,146, 2,224, 54,158,231,155, 11,130,208, 10, 64,138,221,110,143, 7, 0,133, 66,145, -207,243,124,182,205,102, 59, 97,177, 88, 78, 3,248,142, 86, 55, 72,232,149,193,137,147,154, 17,187, 97, 84,133, 89, 26,162,109, - 58,183,165,225,247, 41, 39,181, 42,195,247,131, 19, 39,173, 14,214,108,253, 85, 16, 66, 90, 2, 88,137,234, 14,165, 31,164,213, -237, 0, 93,141, 94, 34,128,219, 1,180, 84, 40, 20,169, 86,171,181, 8,192, 1, 0,155, 40,165,167, 8, 33,201,177,177,177,203, - 37, 73, 50, 23, 23, 23, 79,162, 94,186, 17, 74,239,218,100, 63,199,113, 73,112,218, 8,137, 58,114,118,239,191, 16,146, 7, 20, -207,243,239,220,113,199, 29,247,174, 94,189, 90,123,224,192, 1,109,155, 54,109, 92,247, 39, 73,146,224, 25,136, 72, 77,245,219, -247, 55, 1, 32,112, 28,247,246,168, 81,163,238, 94,182,108,153,246,220,185,115,218, 70,141, 26,185, 52,221, 77,156, 76,163, 70, -141,130, 74,107, 76, 76,204, 71,183,222,122,235,184,165, 75,151,138,107,214,172,209, 52,104,208, 0, 49, 49, 49, 80, 40, 20,181, -150,237,217,179,167,228, 69,194, 29,142,227,184,119,134, 13, 27, 54,110,197,138, 21,218,189,123,247,106,219,183,111, 15,158,231, -175, 58,239,195,135, 15,191,251,139, 47,190,208,254,250,235,175,218,230,205,155,131,227, 56,112, 28, 87, 75,143,227, 56, 52,110, -220, 56, 40,205,219,111,191,253,238,149, 43, 87,106, 15, 30, 60,168,109,213,170,149,107,127,186, 21,219,213, 57,157,215,184,230, -117, 67,173, 7,166, 51,140,186,172,103,207,158,131,183,110,221,202, 3,192,193,131, 7, 81, 82, 82,130,196,196, 68,232,245,122, -168, 84, 42,152, 76,166, 58,133, 1, 9, 33, 31, 57, 77,150, 8, 0, 95,253,107, 56,206,136,192,163, 5, 22, 40, 20, 10,252,254, -251,239,224,121,254,138, 67,139,132,144, 62,225,225,225, 75,191,254,250,235,168,206,157, 59,115, 69, 69, 69, 72, 77, 77, 69, 73, - 73, 73,247,109,219,182,117,153, 52,105,210, 36, 66,200, 61,148,210,109,193,106,126,255,253,247,208,233,116,208,106,181,208,233, -116,176, 88, 44, 36,240, 90,222, 17, 4, 33, 41, 59, 59, 59, 78,175,215, 67,146, 36,215,224, 81,190,237, 66,146, 36,180,104,209, -194,234, 79,147,231,249,164,115,231,206,197,105, 52, 26, 80, 74,107,232, 57, 28, 14,168, 84, 42,247, 55, 7, 56, 28, 14,164,165, -165,249,212,148, 35, 89,178,201, 2,128,207, 63,255, 28, 9, 9, 9,136,139,139,131, 78,167,131, 70,163,169,241, 96, 15, 6,158, -231, 49,120,240, 96, 76,159, 62, 29,115,231,206,197,179,207, 62, 91,227, 70, 43,138, 34,162,163,163,177,110,221, 58,132,135,135, - 35, 57, 57, 25,162, 40,214,105, 27,215, 34,132, 35,209,187,247,159,119, 69,104,111,185,185,181,208,163, 75,242,123,213, 99, 18, - 56, 14,144,164,234, 71, 39, 33,160,118,155,116,249,167, 95,114, 3,182, 68,206,243,124,163,115,231,206,197,185,183,172,238, 15, -135,195,129,196,196, 68,222,111, 90, 9, 25,210,174, 93,187,175, 30,126,248, 97, 69,243,230,205,137, 66,161,128, 32, 8, 16,132, -234, 91,132, 36, 73,201,148,210,100, 73,146,250,230,231,231,211,133, 11, 23,190, 65, 8,185,131, 82,250,189, 55, 61,129, 26, 59, - 86,152,165, 33,219, 15,161,251,168, 1,207, 99,221,170, 41,221,123,119,146, 16,166, 53,254, 6,224,154, 53, 90,132,144,150,237, -218,181, 59,180,119,239, 94,181,213,106, 69,143, 30, 61,246, 16, 66,186,208, 43,104,193,157, 16, 18, 5,224,173,169, 83,167,142, -123,248,225,135,249,200,200, 72, 40,149, 74, 84, 84, 84,224,183,223,126, 27,255,233,167,159, 82, 66,200,127, 0,132,101,103,103, -167,239,219,183, 15,253,250,245,123, 28,192,147,158, 90, 28,199, 39,237,220,119, 54, 78, 30,191,125,112, 7, 69, 70,183,228,124, - 0,168, 93, 32, 67, 33, 57,164,156,189,135,114, 2, 26, 49, 66,200, 27, 35, 70,140, 24,187,122,245,106, 61, 0, 44, 90,180, 8, - 35, 70,140, 64,116,116, 52,180, 90, 45, 20, 10, 5, 68, 81,172,241,235, 71, 75, 46, 54,122,227,206, 59,239, 28,181,108,217,178, - 48, 0, 88,182,108, 25,134, 15, 31,142,152,152, 24,132,133,133, 65,169, 84,130,231,253,158,142, 94,137,137,137,249,168, 87,247, -238, 19,151, 46, 93, 10, 0,120,241,137, 39,112,235,141, 55, 66,175,213, 64,171,169,126, 7,166, 20, 80,242, 34,110,121,244,177, - 64,249,230, 0,188, 57, 98,196,136, 49, 43, 86,172, 8, 3,128, 3, 7, 14,160,160,160, 0,241,241,241,208,104, 52, 80, 42,149, -174, 60, 19, 66,160,209,248,142, 3,184,231,125,196,136, 17,163,190,248,226,139, 48, 0, 88,178,100, 9, 6, 15, 30,236,202,187, - 74,165,130, 66,161,168, 49,120,154, 78,111,154,119,220,113,199,168,149, 43, 87,134, 1,192,167,159,126,138, 1, 3, 6, 32, 42, - 42,202,181, 63,101,173,186, 28,163,107, 89,243,122,163,134,209,114,238, 48, 46, 62, 62,126,204,246,237,219, 93, 79, 83, 65, 16, -160, 82,169,160, 82,169,160, 84, 42, 93,197,135,193, 66, 8, 33,241,241,241, 19,182,109,219,230, 90,201,226,113,115, 80,169, 84, -117,126,128,187,233, 15,232,215,175,223, 23,107,215,174, 85, 43, 20, 10, 24,141, 70, 28, 57,114, 4, 17, 17, 17, 80, 42,149, 24, - 54,108, 24,223,179,103,207,152,190,125,251,126, 73, 8,185,155, 6,241, 69, 3, 42,226,178, 87, 0, 0, 32, 0, 73, 68, 65, 84, -165, 20,122,189,190,134,209,186,218, 34,102,141, 70,131, 53,107,214,128,231,121,175, 55, 48,247,255,113,113,113, 1,245, 8, 33, - 80,169, 84,216,181,107, 23,120,158,135, 40,138, 16, 4, 1,162, 40, 34, 43, 43, 11, 79, 63,253, 52,138,138,138, 64, 8,129, 40, -138, 8, 11, 11, 88,234, 73,162,163,163, 35,101,147, 5, 84,155, 32,141, 70, 3, 81, 20,137, 32, 8, 68, 46,218, 35,132,144, 96, -203,220, 57,142,195,103,159,125,134,215, 95,127, 29,207, 61,247, 28, 22, 47, 94,140,142, 29, 59,186,230, 11,130,128,242,242,114, - 68, 69, 69, 33, 42, 42, 10,106,181,250,138,207,133,107, 9,207,189, 51,111,254, 2, 45, 36,138,234, 74, 32, 18, 32, 1, 20, 20, - 18,149,144,159,251, 27, 94,153,254,239,160,159, 62, 42,149, 10, 59,119,238,116,153, 33, 65, 16, 64, 8,129,187, 65,146,135,132, -132,132,128,122, 10,133, 98,198, 55,223,124,163,252,236,179,207,176, 98,197, 10,215,185,165,211,233, 16, 25, 25,137,152,152, 24, -215,144,148,148, 68, 62,254,248, 99, 69,199,142, 29,103, 0,240,106,180, 56,142, 70,104,155,206,109, 57,106,192,243, 0,128, 81, -207, 83, 92, 62, 53,235, 6,174,244,229,136, 96,243,248,103, 67, 8,105,217,161, 67,135, 29,187,118,237, 82, 27, 12, 6, 72,146, -132,239,191,255, 94, 59, 96,192,128,237,132,144,222,117, 53, 91, 41, 41, 41,107,118,237,218,213, 51, 54, 54, 22,101,101,101, 40, - 47, 47,135,205,102, 3,207,243, 72, 78, 78,198, 27,111,188, 65,134, 13, 27, 54,121,252,248,241, 38,141, 70, 35, 71, 54, 82,188, -105,121, 94,106, 11,223,125, 47,146,210,234,243,135, 74,180,198,111, 73, 65, 54,158,120,234,149,160,210,216,184,113,227, 7,191, -252,242, 75, 87, 53,137, 70,141, 26,213, 48, 1,238,247, 40,121,240,101, 12,224,172, 4,221,164, 73,147,137,203,151, 47,119,105, - 54,104,208,192,117, 95, 18, 4, 1, 28,199, 97,251,246,237,152, 51, 99, 42,162, 98, 27, 97,193,187,139, 2,166, 51, 46, 46,110, -241,144, 33, 67,254,181,100,201, 18,215,180, 14, 77,155, 34,179,231,141,136,107, 16,142, 6, 81,213,247, 54, 42, 17,252,114,226, -172, 95, 45,249, 57,215,184,113,227, 73,171, 86,173,114,165,211,253,190, 12, 0, 6,131,193, 21,197,183, 88, 44,232,218,181,107, - 80,121,119,215,148,163,109,178,105,243,188,215,203, 47, 50,254, 52, 27, 55,110, 60, 81, 54,194, 0, 16, 29, 29, 93, 67, 67, 20, - 69,172, 90,183,212, 51,143, 87,173, 89,215,227,238,169,153,157,157,141,217,179,103,187,238, 73,114, 84,143, 16,130,196,196, 68, - 44, 88,176,192,159,166, 55,186, 1,136,117, 27,183, 0, 80,186,253, 22,162,186,135, 9,207,229,228,233, 34,128, 27,156,243, 28, - 0, 42, 0, 68,122,209,243,165, 83,132,234,110,132, 98, 61,150,247,220, 78, 45, 4, 0,200,202,202,162, 0,176,102,205,154,126, -183,223,126,251,206,162,162, 34,233,248,241,227,220,129, 3, 7, 32,138, 34,226,226,226,208,173, 91,117,111, 23, 86,171, 21,162, - 40, 66,167,211,145,200,200,200,124,249,193, 43,239, 68,247,178,118, 55, 67,195,149,148,148, 72, 27, 55,110,228,150,221, 49, 8, - 22, 10,116,154, 54, 7,131,135, 14,197,250, 68, 37,120, 0,221,143, 23, 65,171,213, 10,162, 40,218,228,131, 33,107,186,215,221, -242, 52, 73,132,144, 48,157, 78,247,241,119,223,125,167,230, 56, 14, 21, 21, 21,144, 36, 9, 61,123,246, 4,199,113, 56,124,248, - 48, 94,124,241, 69,124,245,213, 87,248,230,155,111, 52,157, 59,119,254,152, 16,210,134, 82, 90, 33,107,120,209, 4, 0,132,133, -133, 65,171,213,186,140,150,156,103,247, 16,184,188, 60,165, 52,183,168,168,168,139, 63, 77,135,195,129,225,195,135,131, 16, 2, -158,231,107,220,124,220,127, 21, 10, 5, 14, 31, 62, 92,235, 36,244,102, 16, 37, 73, 66,175, 94,189, 0, 0, 90,173, 22,122,189, - 94,238,247, 13, 0,208,169, 83, 39, 88, 44, 22, 52,104,208, 0,199,142,213,238, 98,202, 83,179,176,176,144, 94,188,120,145, 44, - 91,182, 12,162, 40, 34, 38, 38, 6, 90,173,150, 44, 93,186,116,170, 66,161, 72, 50,153, 76,146,197, 98,129, 82,169, 92, 32, 71, -183, 4, 65,168, 42, 43, 43,139,241,165,201,243, 60, 30,126,248, 97, 60,243,204, 51, 88,188,120, 49, 30,120,224, 1,120,206, 55, -153, 76,104,208,160,129,203,108, 5,147,247,171,165,222, 53, 37,138, 35, 7,215,227,232,175,155, 32, 57, 36, 56, 36, 10, 74, 29, -144,236,192,129,141,123, 90, 92, 58,115, 49,145,130, 2,206, 2, 14, 85, 89,165,189,111, 3, 85, 43, 0,223,110, 41, 50,191,237, - 43,157,242,190, 17, 4, 1, 54,155, 13,223,125,247, 29,126,251,237, 55,108,216,176, 1, 70,163,209,181, 31,211,211,211, 49,113, -226, 68,175, 70,203, 83,147, 82,186,228,194,133, 11,157,122,245,234, 69, 74, 75, 75, 81, 90, 90, 10,163,209, 8,135,195, 1,187, -221, 14, 65, 16,160, 86,171,161,209,104, 16, 31, 31, 15,147,201, 68,205,102,243, 18, 95,154,146, 68,202, 12,191, 79, 57,185,110, -213,148,238,163,158,167, 88,253, 58, 65,179, 38, 42,195, 15,251,195, 38,126,187,227,217,129, 0,168,228,244, 14, 28, 64,109, 14, -169,232,153,169,111, 77, 14,148,206, 80,224, 77,211,205,100,197, 24,141, 70, 84, 84, 84,223, 30,148, 74, 37, 86,175, 94,221,224, -182,219,110,219, 70, 8,233,227,203,108,121,211, 12, 11, 11, 75,230,121, 30,135, 15, 31,198,251,239,191,143, 31,126,248, 1,249, -249,249,151, 27, 53,106, 20,209,183,111, 95,238,137, 39,158, 64,167, 78,157,240,201, 39,159,168, 3,105, 82, 74,145,125,106, 59, -178, 79,239,128, 36, 81,183,168,184,247,255,190,222,128, 60,211, 89, 85, 85,101, 58,116,232,144,254,195, 15, 63, 68, 92, 92, 28, - 82, 83, 83,161,213,106,161, 86,171,107, 60,100,221, 31,188,129,174, 77,163,209,104,202,206,206,214,127,241,197, 23,136,137,137, - 65, 74, 74, 10,180, 90, 45,148, 74,165,235,133, 96,217,178,101,248,124,250, 88,100,159,248, 21,195, 51,107, 87, 19,240,212,212, -106,181,255, 90,178,100, 73,141, 16, 72,124, 84, 20, 4,145, 3, 47, 18, 68,245,191, 3, 0,112,249,199,175,125,182, 14,233,161, - 73, 42, 42, 42, 76,123,247,238,213,239,223,191, 31,146, 36, 33, 37, 37, 5, 6,131, 1,225,225,225,174,252,111,220,184, 17,195, -134, 13,195,103,159,125,134,244,244,244,128,121,175,172,172, 52,253,250,235,175,250,229,203,151, 35, 58, 58, 26,141, 27, 55,118, -229, 93, 30, 68, 81, 4,207,243, 72, 75, 75, 67, 89, 89, 25,244,122,189, 95,205,170,170, 42,211,129, 3, 7,244,203,151, 47, 71, - 84, 84, 20,146,146,146, 92, 17, 55,217, 28,189,254,222,244, 26, 26,106,210,240,170, 53,235,122,220, 61, 53,135, 15, 31,142,102, -205,154, 33, 60, 60, 28, 58,157,206,165,237, 79, 83,246, 34, 0,250,102,102,102,110, 69, 77, 98, 9, 33,107,221,182, 63,148, 16, -178,214,253,215,215,114,206,191,125,166, 78,157,218,117,238,220,185,179,211,211,211,191,216,181,107,215,231,190,244,124,233, 76, -157, 58,181,221,220,185,115,103,187, 47,239,101, 59,181,112,217,233,204,204, 76,226,204,164, 0, 0,173, 91,183, 70, 73, 73, 9, - 84, 42, 21,186,117,235,134,162,162, 34,232,245,122, 40, 20, 10, 80, 74, 49,121,242,100,254,217,103,159,141,227, 56, 14,118,187, -189, 90, 76, 16,124,149,181, 75, 28,199, 33, 35, 35, 3, 71,156, 37, 66,131,135, 14, 69, 82, 82, 18,228, 74, 30,106,181, 26,147, - 39, 79, 38, 79, 63,253,180, 32, 71, 51, 40,165, 48, 26,141,104,216,176,161,207,152,173, 32, 8, 79,124,249,229,151, 17,114, 72, - 94, 46, 58,227,121, 30,199,143, 31,199,155,111,190,137,241,227,199,227,252,249,243,104,212,168, 17,158,121,230, 25,253,220,185, -115,159, 0,240,170, 47, 77, 25,189, 94,239, 50, 89, 90,173, 22, 79, 60,241,132,208,179,103,207, 56,189, 94,143,176,176, 48,200, -197,128, 14,135, 3, 77,155, 54, 13,104,205, 37, 73,194,250,245,235, 33, 8, 66,192,136,150,243, 4, 12, 74,115,239,222,189, 46, -147,230,254,150, 68, 8,193,145, 35, 71, 92,166, 46, 8, 77,202,113, 28,116, 58, 29, 18, 18, 18,160,209,104,160,213,106,201, 23, - 95,124,241, 82,106,106,106,195,167,159,126,154, 43, 47, 47,231, 50, 50, 50, 48, 98,196, 8, 65,146, 36, 88,173, 86,180,107,215, -206,111, 26, 9, 33,216,186,117, 43,222,127,255,125, 60,240,192, 3, 94, 35, 90,114,101,201,240,240,191,252, 91,136,144, 33, 1, -176,218,109, 48, 84, 26, 93, 69,187, 14,135, 3,191,110,249,185,197,153,159, 79,181, 91,251,197,103, 34, 0,152,182,124,237,190, - 90,195, 17,239,173,108,217, 55, 90,177,119, 75,137,117,175, 63,125,142,227,240,216, 99,143,225,229,151, 95,198,157,119,222,137, -141, 27, 55,226,197, 23, 95,196,164, 73,147,106, 68,180,130,193,102,179,253,247,158,123,238,121, 96,245,234,213,173,158,127,254, -121, 78,142,104,105,181, 90,185,142, 23,204,102, 51,140, 70, 35, 78,156, 56, 33,221,127,255,253, 39, 45, 22,203,127,125,233,217, -137,230,151,255,103,239,188,227,163,168,186, 62,254,187,179, 53,187, 73, 54,155, 94, 33,116, 17, 16, 41,130,248,208, 75, 64,233, - 40, 93, 16, 17, 81,138,240,170, 15, 69, 68, 30, 5, 36, 52, 41,138, 8,138, 40,160, 72, 40, 10,130, 72,145,222, 68, 65, 64,170, -196, 64, 72, 72,175,187,217,190,179,115,223, 63,178,179,110, 54,219, 18, 64, 4,231,251,249, 44,100,230,206,252,230,204,150,153, - 51,231,158,123,174, 82,174,255,161,110, 2, 83, 79,119, 99, 81,112,187, 39,107, 25,136,162,101,233,128, 71,186,209,158,163,106, -133,130, 82, 80, 14,224, 40, 96, 50,233, 48,113,226,228,170,247, 37,221, 37,156,157, 44,163,209,136,223,126,251, 13,157, 59,119, - 70, 70, 70, 6, 46, 95,190,140, 6, 13, 26, 96,253,250,245,145,195,134, 13,243,234,108,185,114,225,194,133,183,154, 53,107,182, -188,172,172,172,168,172,172,108, 57,128,141,148,210, 18, 66, 72,163,212,212,212,143,246,236,217,211,254,127,255,251,159,200, 37, - 71,199,253,251, 64, 41,172, 86, 22, 6,131,201,171,131,197, 47, 83,234, 43, 61,201,113,238,180, 97,195,134,232,211,167, 15, 36, - 18,137,227, 97,205,185,219,204,213,225,242, 2, 5,192, 17, 66, 16, 23, 23,135,158, 61,123, 66, 42,149, 86,208,228,111,172, 61, -123,246,196,164,217,239,224,211, 73, 93,176,106,100, 3,116,155,155,235,213, 78,189, 94, 95,118,240,224, 65,197,127, 95,121, 5, -205,234,215, 71,132, 74,133,154,209,145, 80,200,101,144, 58,219, 68,124, 7,217, 41,165,148, 16,194,137, 68, 34, 60,246,216, 99, -200,205,205,197,141, 27, 55,112,227,198, 13, 48, 12,131,118,237,218, 57,162, 48,215,175, 95,199,236,217,179, 97, 50,153,252, 62, -247,250,245,235,163, 75,151, 46,144,201,100, 80, 42,149, 21,186, 12,249,247, 84,171,213,162, 94,189,122,216,190,125, 59, 30,121, -228, 17,159,154,143, 62,250, 40, 58,118,236, 88,225,253, 84, 40, 20,142,251, 6, 0,100,252, 92,230, 56, 70,124,124,124,149, 52, -247,158,190,133, 53,251, 14,194,100,230,160,209, 91, 43,236, 16, 27,161,194,177,175,167,249,117,238,188,230,103,159,125,134,146, -146, 18,199, 53,136, 15,154,240, 65,138, 26, 53,106,224,147, 79,220, 71, 50,157,124, 17,183,247, 42,111, 14,141,135,237,248, 47, -151,124,254,252,249,243, 92,247,247,165,231,220,238,178,191,217,197, 57,243,248, 37,118,119, 21,230,248, 31, 67,124,124, 60,248, - 60, 16,254,135,194,195,178, 44,182,109,219,134,168,168, 40,199, 43, 36,196,125,175, 0,165,148,242,121, 68,147,242,203, 83,132, -126,140,147,226, 38,128, 94,249,229, 63, 12, 62,135,104,235,214,173,112,118,100,130,131,131,189,118, 35,201,100,178, 78,173, 90, -181, 98, 76, 38, 83, 37, 39,107,254,252,249, 24, 54,108, 24, 30,121,228, 17,112, 28,135,178,178, 50,116,238,220, 89,242,225,135, - 31,118, 66, 21, 28, 45,165,178, 60,239,223,108, 54,227,208,161, 67, 8, 13, 13, 69,120,120, 56,194,194,194, 16, 28, 28,204,143, -156,244,250, 11,231,147, 1,251,247,239,239,248,242, 57, 71,177, 92,157,174, 19, 39, 78,248, 50,207,145, 92,249,228,147, 79, 34, - 48, 48, 16, 65, 65, 65, 8, 10, 10,194,158, 61,123, 28,219,180,110,221, 26, 28,199, 33, 42, 42, 10, 39, 79,158,244,218,253, 73, - 41,165, 82,169,212,177,189, 68, 34, 33,235,215,175,127,171, 78,157, 58,177,111,188,241, 6, 35, 18,137,112,246,236, 89, 92,186, -116, 9,181,106,213,242, 59,103,171,164,164, 36,251,173,183,222,178,189,245,214, 91, 0,128, 38, 77,154,160,164,164, 36,143,111, -215,104, 52,133,221,187,119,175,144,183, 81, 80, 80, 80,232,243, 13,248,135,195,113, 28, 88, 11, 11,189,209,136, 50,173,222, 17, - 29,202,203,202, 85, 79,123,243,117,201,226,137, 47, 2, 0,222, 92,182, 2,218,213,127, 93,200,190,125,115,104,212,128, 15, 54, - 77, 7,208,207,155,190, 94,175,135,201,100, 66, 98, 98, 34, 78,159, 62, 13,173, 86,139,110,221,186, 85,136,152,242,239,169,175, - 16, 61,165,212, 76, 8,105,219,187,119,239, 95,150, 46, 93, 90,183, 81,163, 70, 68,167,211, 65,175,215,195,249,255, 11, 23, 46, -208,141, 27, 55,166,233,245,250,255, 80, 74,205,158,244,246,220,254, 60,181, 71,252, 75, 91,126, 58, 43,234, 29, 85,239,154,234, -118,113, 93,182,240,182, 92,167, 49, 92, 53,218,232, 37, 80, 27, 96, 3, 7,202,114,176,217,187,189,238, 23, 10,133,226,163, 99, -199,142,133, 27,141, 70,156, 57,115, 6, 35, 70,140, 48, 23, 20, 20,200, 0,224,249,231,159, 55,111,216,176, 65, 86,175, 94, 61, -172, 95,191, 62,242,217,103,159,221, 12,224, 49,127,116, 41,165, 95, 1,248,202,117,125,120,120,248,135,183,110,221,234,228,156, -243,195, 63,172, 2,112,251, 80, 73, 57,192,106,181,194, 96, 48,161,180, 84, 11,179,197,106,191,102,114,176,217, 88,251,255, 28, - 88,251,117, 84, 38, 21, 7,183,108, 26, 91, 70, 41, 5, 67, 72,201,175, 23,178,221,102, 92,243,223, 11,119, 93, 92,254, 68,179, -220, 96, 35,246, 81,102,225,225,225,144, 72, 36,248,234,171,175,112,254,248, 30,200, 68, 20, 54,214, 10,214,106,129,205,106,134, - 68, 36,194, 79,103,111, 32,233, 81,223, 3,185, 9, 33, 52, 34, 34, 2,189,158,122, 10,189,159,122,170,124,120,155, 88,140, 32, -185, 28, 74,105, 64,121, 36, 11, 0,181, 49,240, 24,206,171, 8,199,219, 25, 29, 29,141, 95,127,253, 21,147, 38, 77,194,130, 5, - 11,160, 80, 40, 28,163,159,175, 92,185,130,148,148, 20, 36, 37, 37, 85,249,220,249, 8,222,244,233,211,145,149,149,133,101,203, -150,161,101,203,150,144, 72, 36, 40, 41, 41,193,127,254,243, 31,228,230,122,119, 48,121, 77,224,175,238, 61,153, 76, 86, 33,250, -196, 59,128, 85,253,140,156, 53, 95,236, 31,139, 29,199, 55,130,128,224,212,215,175, 87,184, 23,125,178,233,104,149, 53,103,205, -154, 85,193, 78,127,162, 89,254,226, 18,117,242,103,187, 51,246, 85,134,233,211,167,207, 32,132,236,156, 62,125,250,140,228,228, -228,139,254,232,121,104,223,101,255,191,151,211,186, 51,240, 64, 37, 71,139, 82, 74,101, 50, 25, 56,142,171,224, 92,185, 38,222, -242,161, 64,231, 80,163, 55, 24,134, 1,199,113,142, 47,133,235, 99,155, 72, 36,194,201,147, 39,113,242,228,201, 10,235,215,172, - 89,227,245, 70,206,178,108,163,224,224,224, 10,209, 44,169, 84,138,233,211,167, 99,196,136, 17, 14, 39, 75, 42,149,226,203, 47, -191,196, 19, 79, 60, 1,179,217,220,200,155,173, 82,169, 84, 31, 19, 19,195, 0,229, 23,162,192,192, 64, 50,105,210, 36, 17,203, -178,142,247,132,127,241,185,107,190,190, 52,196, 62,138,101,239,222,189,126, 69,180,252,205, 81,162,148,226,220,185,115, 21,156, - 55,126,212, 12, 0,156, 59,119,206,145,191,229,143,166, 72, 36,130,205,102,131, 66,161, 32, 82,169,148, 72,165,210, 4,222,201, - 18,137, 68,142,207,219, 57,103,207,215,185,223,190,125,187,179,183,246,188,188,188,135,182,140,131,197,106,133, 65,111,134,182, -204,128,247,146,191, 40, 95,249, 30,126, 6,240,115,219, 87, 39, 97,124,143,164, 46,168,152, 7,224, 19,231,155,227,214,173, 91, - 33,145, 72,176,125,251,118,168, 84, 42,244,237,219, 23, 42,149, 10,211,166, 77,195,144, 33, 67,252,142,104, 1, 0,165,180,148, - 16,210,246,255,254,239,255,126, 89,180,104, 81,205, 26, 53,106,192,108, 54,195, 98,177,192,108, 54, 35, 53, 53, 21, 27, 55,110, -204,208,235,245,109, 41,165,165,190,244,246,220,254, 60,117,219,145, 55,179,186, 13,121,214,112, 37,247, 71,228,228, 20,130,101, -111,131,179,177,176,176,229, 35,152,109, 44, 11,150,181, 65, 42, 21,169, 22,189,255,250, 62, 14, 20, 12, 67,204, 3, 7, 14,124, -166, 42,239,201,157,160, 86,171,155,228,231,231,227,143, 63,254,192, 11, 47,188,144, 83, 88, 88,120, 25, 64, 87, 0, 40, 44, 44, - 60, 54, 98,196,136, 70,235,214,173,139,169, 93,187, 54,130,130,130,124,134, 92, 9, 33, 65, 0,198, 3,232,142,242, 60, 16,158, - 34, 0,115, 34, 35, 35,229,103,206,156,169, 20,253, 63,114,228, 8, 0,184,141, 98, 82,216, 35, 90, 70, 35,242, 11,139, 49,230, -213,153,246,245,246,127,105,197,109,199,189,134, 0, 0, 40,200, 77,197,139, 99, 38,121, 29, 53,193,113,156,219, 27, 97, 21,114, -116,202,143, 91, 30, 41,226,223, 3, 4, 5, 5,149,119,191,109,223,136, 93, 31,188, 10,216, 44,160, 86, 3, 96,209, 3,150, 50, -112,102, 61,136, 84, 1, 88, 13, 94,117,237,122, 52, 40, 40, 8, 65, 10, 5,162,212,234,242, 34,144, 34, 17, 36, 18, 49, 56, 43, - 64,108,246,145,218, 28,192,249, 81, 24,132, 82, 74, 35, 34, 34,192,113, 28, 20, 10, 5,110,222,188,137,241,227,199,195, 98,177, -160,127,255,254, 48,155,205, 48, 26,141, 48, 24, 12,168, 83,167, 14,244,122,189, 95,231,206, 95,231,249,222,159,215, 95,127, 29, - 79, 60,241, 4,102,207,158,141,169, 83,167,162, 78,157, 58, 24, 55,110, 28, 54,110,220,136, 38, 77,154,120,213,117,126, 63,121, - 77,254,115,113,237,226, 3, 80,229,207,200, 85,179,124,124, 0, 42,125,238,147, 71,118,173,178,230,252,249,243,145,159,159, 95, - 41,146,197,255, 29, 31, 31,143,149, 43, 87,122,213,245,114, 60, 62,122, 20,237,166,185,151,203,118, 64,121,174,213, 47, 0, 76, -201,201,201, 23,147,147,147,123, 19, 66,118, 38, 39, 39,247,118,217,206,151,142,107,123,190,191, 54, 59,174,194,246, 80, 93, 39, -224,175, 72, 9,127, 35,181, 31, 12,192, 95, 23,121,165, 82,137,109,219,182,129, 31, 1,226,188,141, 59,120, 71,235,135, 72,123, -232,216, 30,201,114, 94,238,211,167, 15,106,215,174, 93, 33,154,165, 80, 40,188,126,121, 56,142, 67,122,122, 58, 46, 94,188,136, - 54,109,218,160,180,180, 20, 18,134,193,155, 23, 46,160,241,200,145, 48,219, 35, 52, 50,153, 12,175,188,242,138, 95, 9,237, 55, -110,220, 8,117, 94,142,136,136,200,108,223,190,125,252,233,211,167, 29, 9,242,246,110, 53,135,195,225,143, 19, 67, 41,197,115, -207, 61, 87, 33,138,229,236,100, 57,191,126,252,241, 71,192,143,174, 67, 74, 41,218,183,111,239,136,102, 5, 7, 7,227,187,239, -190, 3, 80,254, 89,117,232,208, 1, 0, 16, 29, 29,237,151, 38,127, 30,246, 4,120, 24,141, 70, 78,171,213, 50,103,206,156,129, - 76, 38,115, 68,240, 20, 10, 5, 2, 2, 2, 32,151,203,171, 53,130,232,223, 0,165, 28,204, 86, 43, 12, 6, 3,202,202,202, 43, -139,164,254,190,181,194, 54, 22,147,166,218,250,124,212, 74,171,213,226,167,159,126,194,183,223,126,139,150, 45, 91, 86, 74,134, - 7,124, 71,180,254,178,153,230, 19, 66,218, 77,153, 50,229,212,220,185,115,227,194,194,194, 96,177, 88,112,235,214, 45,172, 93, -187, 54, 75,175,215,183,163,148,250,125,129, 1, 5,172, 86, 22, 70,189, 9,165, 26, 45,222,125,255, 75, 79, 91, 50, 0, 80,148, -119, 21,125,250, 14,170,118, 25,149,234,144,149,149,245, 70,187,118,237,222,215,106,181, 37,122,189,126, 16,128,197, 78,205,250, -194,194,194,246,125,251,246, 93, 26, 22, 22,214, 50, 47, 47,111,134, 31,146,211,111,222,188, 57, 35, 49, 49,177,194, 74,123,244, -241,145,188,188,188,225, 29, 58,116,120, 7, 64,152, 83,115, 48,128,189, 0,220,222,125, 40,229, 28, 93,135,101,101, 6,168,212, -177,184,125,227,176, 79, 67,164, 34, 35, 40,231,185, 27,145,119, 12,220, 69,177,156,175, 79, 85,248,254, 80, 62, 39,144,191, 97, - 63,243,220, 72, 60, 51,126, 62,148, 18, 96,222,139,109, 81, 71, 13, 64, 17, 6,105,135,105, 32,234,196,242, 29,199,127,239,151, -254,212, 85,171,112,246,143,242,202, 48, 9,145,145,152, 50,100, 8,168, 21, 56,113,233, 18, 54, 29, 60,136, 33,157, 59, 67, 25, -224, 54,229,205,227,185, 75,165, 82,164,166,166,226,196,137, 19,120,244,209, 71,113,253,250,245, 10,101, 40, 40,165,126,157, 63, -165,148,242,131,152,228,114, 57, 36, 18, 9,114,114,114,208,187,119,111,199,131,254,225,195,135, 49,101,202, 20,140, 30, 61, 26, -157, 58,117,114,155, 55,235,170, 25, 25, 25,233, 8, 32,184, 14, 84,112,238,206,173,202,103,228, 78,147,167,186,159,187,179,230, -220,185,115,221, 14,168,240, 71,211,217, 23,241,194, 25, 84,140, 38,129,207,151,226, 29, 35,215,101, 0,161,252,186,233,211,167, -207,240,119, 63,231,101, 62, 34,230,162,235, 19, 49, 80,222, 39,234,188,146,191,217,242, 97,100,119, 4, 6, 6, 98,194,132, 9, -152, 53,107, 22, 34, 34, 34,124,230,214,240,158,172, 55,190,255,190,242,143,109,251,246,237,190,186, 14,175,132,132,132, 60,209, -185,115,103,148,150,150, 34, 35, 35, 3,129,129,129,104,252,193, 7,184, 48,126, 60,154,173, 90, 5,166, 75, 23, 16, 82, 94,108, -245,194,133, 11, 80, 40, 20, 87,188, 26,226, 2, 33, 4,193,193,193, 8, 13, 13,117,244,185,243, 14,151, 83, 68,203,167, 7, 71, - 41,197, 15, 63,252,224,246,169,177, 58, 57, 90,252, 69,224,212,169, 83, 21,242,179,156, 29,159, 83,167, 78, 57, 34, 90,252,110, -190,236,180, 63,229, 81, 94, 79,169, 84, 34, 44, 44, 12,114,185, 28, 10,133,162,130,147,229, 79, 52,207, 87, 65, 82,133, 66,113, - 58, 48, 48, 80,205,183, 75, 36, 18,104,181,218,146,194,194,194,214,190,108,253, 39,195,129,130,181,176, 48, 24,140, 40,211,250, -126,106,175, 42,252,192,148,109,219,182,225,201, 39,159,172,228,100,241,239,117, 85,161,148,102, 18, 66, 58, 45, 95,190,252,231, - 37, 75,150,132,150,149,149,225,139, 47,190, 40, 45, 43, 43,235, 68, 41,205,172,146, 22, 71, 97,181, 88,160, 55,154,160, 43, 43, -127, 15,254,188,184,213,199, 94,127, 47,148,210,141, 0, 54,242,203,110,146,126,255, 4,224,247, 69, 21,192,147,137,137,137,200, -201,201,169,176, 50, 61, 61, 29, 54,155,205, 68,203,235,100,189,228,116, 60, 17,165,212,107, 28,134, 82, 90, 30, 29, 53,152, 80, - 86, 86, 30, 5, 49,234, 10,170, 96,146,103,120,103,195, 83, 78, 86,117,186,120,136,125,164,179, 72, 36,194,196,137, 19,113,225, -252,121,116,141,211,160, 78, 76, 48,168,230, 54,164, 93,254,135,115,249, 10, 44, 94,234,118,208,170, 87, 82,156, 6,251, 44, 78, - 73,113,219,246,103, 63,175,189,238, 14,248,115,191,118,237, 26, 20, 10, 5,108, 54, 91,165,251, 77, 85,207,223,217,129, 89,186, -116, 41,166, 76,153,130, 47,191,252, 18, 23, 46, 92, 64,179,102,205,208,173, 91, 55,228,229,229,225,252,249,243, 48,153, 76,126, -219,233,156, 55,119, 45,237, 18,246,159,216,141,244,204, 27,200,202,201,168,146,125,158, 52,121,248,207,125,219,254,223,240, 92, -146,215,210,123, 30, 53,223,125,247, 93,228,229,229, 85,136,100, 57, 15, 32,243, 20,209,114,245, 69, 92, 40,112,201,133,226,151, -205, 46, 78,143,235,178,235,246, 0,144, 7, 64,228, 99, 63,215,229,130,228,228,228, 67,124, 36,204,174, 43,162, 62,242,179, 0, - 15, 5, 75,249, 55,133,191, 57, 59, 71,129,248,191, 3, 3, 3, 17, 28, 28,140,224,224, 96,168, 84, 42,159,145, 34,222,209,106, -159,166,173,144,235,197, 71,182, 0, 96,244,232,209,149, 34, 90,206,133, 61,221, 97, 50,153, 14, 31, 62,124,184,121,159, 62,125, - 68, 87,174, 92,129, 72, 36, 2,199,113, 48, 63,245, 20,154,173, 90,133,223, 95,127, 29, 29,111,222,132,209, 98, 65, 64, 64, 0, -246,236,217, 99,209,235,245,135,189, 26, 91, 25,226,236,104, 5, 6, 6, 34, 36, 36,196,225,104,248,227,165,243, 63, 94,111,249, - 15,252,203,121, 48,128, 47,248,156, 52,254,197,223, 96, 9, 33, 48, 24, 12,142,164, 78,231,237,189,193,119, 29, 58,255, 0, 25, -134,129, 90,173,118, 92, 60,248,136,150,191,209, 60, 95, 5, 73,149, 74,165,234,234,213,171,245,248,242, 19, 5, 5, 5,232,210, -165,203, 31,158,244, 30, 24, 56,192,194,218, 80,102, 48,162,204,224,189,235,161, 42,240,223,181,175,190,250, 10,169,169,169,176, - 88, 44, 72, 78, 78,174,228, 96, 85, 37, 25,222, 21, 74,105,106,139, 22, 45,184,167,159,126, 26,167, 78,157,130, 92, 46,183, 82, - 74,171, 92,255,138,163, 28, 44, 44, 11,163,193,128, 50,157,174, 90,182, 60,128, 56,188,234,203,151, 47,195,108, 54, 99,246,236, -217,182, 95,126,249,229, 16,128, 87, 1, 71, 29,167,225, 29, 59,118,156,211,171, 87, 47, 53, 33,100, 50,165,244, 75, 79,130,148, - 82, 88, 89,187,211,126, 23,223, 71,254,187,228,233,154, 84,157, 50, 43,206, 55, 86,142,227, 48,246,229,151,209, 45, 78,131, 1, - 45, 35,161,203,254, 3,202,144, 72, 16,117, 45, 44, 94,250, 3, 46,166,249,157,138, 73, 1,224,233,142,253,240,248,163,149,203, -131,181,235, 90,254, 76,118,236,167,211,200, 45,200,242,219, 78,160,252,220,117, 58,157,199,200,149,191, 17, 45, 94,147,216,203, -172, 72, 36, 18, 52,111,222, 28, 13, 26, 52,192,161, 67,135,208,162, 69, 11, 92,191,126, 29,215,175, 95,199,205,155, 55,113,225, -194, 5, 20, 23, 23, 87,201, 78,137, 68,130,239,246,110, 66,177,182, 8, 50,169, 12, 69, 37, 5, 72,191,125, 3,209,225,190, 75, -184,120,211,116, 14,168, 52,236,245, 46, 0, 32, 46, 50,164, 74,142,150,179,230,194,133, 11, 43, 57,239,119,161,100,207,105, 31, -203, 85,221,255,111,195,237, 85, 88, 38,147, 25,194,194,194, 20,206,253,171, 12,195, 32, 36, 36,132, 44, 88,176, 64,196, 48, 12, -130,131,131, 17, 18, 18, 2, 62, 92,232, 11,153, 76,102,168, 85,171,150,130,255, 34,242, 63, 68,149, 74, 37, 90,176, 96, 1, 89, -179,102,141,219,253,190,255,254,123, 95, 57, 90, 75, 70,140, 24,241, 82,102,102,102,104, 84, 84, 20,178,179,179, 33,147,201,202, -127, 28,157, 59,163,125, 90, 26, 44,229, 57, 71,184,118,237, 26, 62,253,244, 83,157,201,100, 90,226,231,251,227, 32, 40, 40, 8, -225,225,225,142, 46, 67, 62,162,227,228, 52,250,149,130,233, 45, 68,207, 63, 1, 86, 21,103, 71,139,191,193,190,250,234,171, 21, -156, 46,127,145, 74,165, 44, 95,249,157, 97, 24, 88, 44, 22,180,104,209, 2,121,121,121,142, 31,141,115, 36,207, 31, 71, 75, 34, -241, 94,144, 84, 44, 22,195,108, 54,163, 67,135, 14, 32,132, 96,197,138, 21, 15, 71,119, 36,199,145,160,160,112,196,197, 61,130, -200, 40, 35, 56,127,146, 71,252,132,101, 89,140, 27, 55,174, 66, 4,139, 31,217,200,119,253, 83, 74, 97,181, 90,125,141,150,242, - 8,255,187,246,231,247,237, 81, 3,112,116,121,233,116,198,106,235,220, 47,162,162,162,218, 16, 66,182,187,172, 46, 2, 48,135, -186,169,224,110,199,241, 65,103,100,100,160, 71,143, 30,216,189,123,183,232,219,111,191,237,186, 99,199,142, 75,245,234,213,203, - 24, 60,120,112,141, 87, 94,121, 69,222,161, 67, 7, 20, 20, 20,160,101,203,150,239, 1,248,210,147, 29,212,222, 5,107, 48,154, -160,211,221,253,232,168,183, 7,190,234,192, 95,115,102,205,122, 7,221, 98, 75,208,191, 89, 8,214,237, 60,142,225,205, 21,128, -217,191, 66,187,206,240,182,132,197,213, 70,173, 38,109, 42,181,203, 85,229, 93,118,181,154,180, 1,147,113,189, 74,218,174, 93, -111,174,215,203,234, 68,244,156,223,207, 49, 99,198, 96,218,180,105,232,222,189, 59,174, 95,191,142, 35, 71,142,224,250,245,235, -152, 52,105, 18,154, 52,105,130,102,205,154, 85, 73,115,199,254, 45,208,148,149,130, 33, 12,138, 74, 11, 97, 52, 25, 48,117,156, -207, 58,199, 62,237,228,185,177, 63, 25, 0,176,117,223,217,106,107,190,253,246,219,200,201,201,169, 16,201,186,147,188,172, 7, - 29,183,142, 86, 97, 97,161,219,126,192,200,200,200,220,164,164,164,168,236,236,108, 4, 5, 5,249,116,178, 8, 33,221,168,189, -214, 70, 78, 78,142, 91,205,224,224, 96, 75, 82, 82,146, 36, 54, 54,182,194,104,195,192,192, 64,199, 54, 46, 83,140, 56, 52, 1, -128, 82,170, 37,132,140,109,219,182,237,186, 31,127,252, 81,217,160, 65, 3,104, 52, 26, 80, 74,241,229,151, 95, 98,226,196,137, - 8, 8, 8,192,181,107,215,208,183,111, 95,189, 94,175, 31, 75,157,106,104,185,211,116,115, 30, 96, 24,198, 81, 21,223,141,147, -229,245,220,121, 13, 0, 88,190,124, 57,230,205,155,135, 25, 51,188,167,122,172, 94,189, 26,112,233,230,115,167, 73, 41,197,226, -197,139,239,154,102, 97, 97,225,151,206,237,129,129,129, 43, 6, 12, 24, 32,206,200,200,168,224, 92, 57,191,220, 92,152, 42,104, -250, 42, 72, 42, 18,137, 16, 29, 29,141,185,115,231, 34, 60, 60, 28, 49, 49, 49,149, 34, 49,190, 62,163,234,112,175, 53,109,148, - 59,179,104,254, 59,237,190,216,176, 67, 34,151, 1, 39,143,108,133,166,184, 98,119,146,201,242,215, 80,106, 89,139,174, 48,159, -253,201, 47, 59, 77, 38, 19, 22, 46, 92,136,119,223,125, 23,239,190,251,174, 87,155,236,159,187, 79, 77,111,248,227,108,185,213, -228, 40, 81, 6,134, 34, 32, 48, 14,141,155,132,130,163,172,135,189,171,160,121,135,248,161,249,203,233,211,167,251,134,135,135, - 35, 51, 51, 51, 82, 34,145,244,117,110, 52, 24, 12,168, 85,171,214, 35, 0, 28, 83, 89,121,210,156, 52,105,146,105,230,204,153, -242,161, 67,135, 98,192,128, 1, 24, 58,116,168, 92, 42,149,214,167,148,194, 98,177, 32, 51, 51, 19, 63,253,244, 19,242,243,243, - 43,165, 51, 56,107,114,148, 18,133, 82,141,128,192, 88, 52,126, 76, 13,142,171,218,251,232,201, 78,254, 38,232, 26,205,170, 98, - 65,106,183,215, 58, 0,248,229,167,237,152,245,250, 99,248,114,215,207,248,240, 52,240,184, 58, 15,141, 35,243,193,229, 95,193, -127,135, 63,129,197, 95,255, 10, 0, 56,114,216,187, 38,202,211,128, 60,218, 96, 52,120,157, 68,195,163,157,174, 61, 55,252, 53, -213,121, 27,111, 17, 45,119,154,252, 67,162, 86,171, 69, 73, 73, 9,214,173, 91,135, 23, 95,124, 17,121,121,121,184,121,243, 38, -254,248,227, 15,124,243,205, 55,142,209,236, 85,177, 83, 34,145,224,205,151,223,198,204,197,111,128,130,162, 97,189,198,152, 62, -254, 93,180,122,252,169,106,159,187,107, 68,139,199, 87, 52,203,155,230,178,101,203,170,245, 93,122, 88,169, 82,191, 2, 31,217, -138,136,136,112,124, 73,156,191,128,213,121,242, 21,137, 68, 96, 89,214,145,251,195,191, 0,160, 79,159, 62,248,254,251,239,253, - 25, 73,241, 35, 33,228,249, 70,141, 26,173,125,239,189,247,130, 58,118,236, 40,142,139,139, 67,171, 86,173,112,237,218, 53,236, -218,181,203,186,114,229, 74,157, 94,175, 31, 77, 41,221, 87,101, 35, 1,194, 79,105,227,252,170,176,129, 15, 27, 45, 22, 75,198, -245,235,215, 99, 23, 47, 94, 44, 98, 24, 6,203,150, 45,115,252, 40,249,130,175,206, 28, 57,114,132,229, 56,206,107, 87,141,213, -106,205,184,126,253,122,236, 7, 31,124, 32, 34,132, 56, 52, 25,134,113,104, 58,219,229,143,102,165, 19,183, 95,104, 60, 57, 89, -238,108,119,197, 87, 65, 82,177, 88,140,107,215,174, 97,214,172, 89, 32,132, 96,235,214,127, 86, 14, 79,117,185,112,165, 96, 77, -179,198, 81,161,125,158,105,215, 20,132,192, 98,174, 92, 13, 33,168,184, 60, 73, 94,214,162, 43, 6,124,176, 9,223,190, 57,196, -167, 46,165, 52,245,216,177, 99, 97, 11, 23, 46, 20,139, 68, 34, 44, 93,186,180, 66,209, 96,215,207,253,232,209,163,108,117,186, -253,248,223,179,197, 98,129,193, 80,189, 40, 10,165,244, 68,242,251, 51,147,214,127,245,131,132, 16, 51, 78, 30,222,138,210, 18, -247,233, 12, 50,137, 24,107,214,109, 99,165, 18, 81,245,146, 78,238, 30, 31,247,239,223,127,232, 71, 31,125,212,216, 93, 99, 70, - 70, 6, 56,142,243,150, 92,115,211,104, 52,226,246,237,219,208,235,245, 91,222,122,235, 45,203, 15, 63,252,240,210,179,207, 62, -139,102,205,154, 33, 54, 54, 22,217,217,217, 72, 77, 77,197,186,117,235,232,241,227,199,183, 0,152,224,205, 32, 74,233,246,249, -239,207,124, 97,221,215, 63,200, 24, 98,193,201, 35, 91, 81,234,226,180,187, 34,149, 74,240,249,151,219, 44, 82,169,228,170,183, -237,248, 73,227,239, 70, 36,203,149,190, 35,198, 99,192,242, 15, 81,183, 85, 15,204, 95,208, 13,159,191, 63, 8, 75,158,150,194, -178,121, 56, 30, 31,184, 30, 27,103,247, 4, 0,196,125,238,159,158, 68, 44,197, 45, 55, 17,171,146,210,242, 4,120,173,182,106, - 81, 83,254,220, 1,207,215,240,170, 70,180, 24,134, 65,237,218,181, 81,183,110, 93,180,109,219, 22, 45, 90,180, 64,231,206,157, -113,254,252,121,156, 63,127, 30,147, 38, 77,242,232,100,249,178, 83, 34,145,160,211,127,146,240,115,123,175, 31,105,149, 53,171, - 27,245,246,165,233,238,187, 52,126,252,120, 0,248, 87, 69,183,170,236,104, 57,143, 80,184,147, 46, 5,103, 77,179,217,236,232, -146,115,174,203,196, 39,199,251, 57,162,111, 31, 33,164,201, 59,239,188,243,122, 64, 64, 64,103,189, 94,255, 8, 0, 4, 6, 6, - 94, 51,153, 76, 7, 13, 6,195, 82, 74,105,201,157,216,234, 92,206,193,157, 9,222,246, 45, 46, 46,238,209,163, 71,143,125, 98, -177,184,182,243, 15,215, 57, 65,208, 25,142,227,110,230,230,230,122, 29,226, 94, 88, 88,216,163,123,247,238,110, 53,157,255,175, -138,166, 43,252,104, 81, 79, 78,150,187,227,184,226,171, 32,169, 88, 44, 70, 96, 96, 32,190,251,238, 59, 68, 68, 68, 84,197,188, -127, 60,231, 46,229, 45,244,214,222, 41, 66,126, 24, 64,228,128, 15, 54,221, 58, 84, 96, 78,236, 20, 33, 75,255,246,205, 33, 53, -189,237, 83, 80, 80,208,253,197, 23, 95,220, 45, 22,139,107, 3, 21,223,127,119,159, 5,203,178, 55,114,114,114,170, 92, 46,129, - 82,138,171, 87,175,114, 99,198,140, 41,200,207,207, 31, 84,213,253, 1, 96,250,172, 15,151,204,123,111, 98,248,211, 73,109, 90, -129, 1,204,158,147,127, 41, 1,168, 88, 34,202,152, 50, 99,217,203,213, 57,214,221,130, 82,170, 33,132,180,125,238,185,231, 38, -160,124,104,184, 43, 55, 1, 44,247, 34,177,188, 70,141, 26,143,137, 68, 34, 57,128, 89,148,210,116, 66,200,199,199,143, 31,239, - 14,224, 73,145, 72, 20,107,179,217,110,163,124,206,199, 77,148,210,115,190,108, 58,119, 41,247,149,102,141, 34, 19,158,238,246, -100, 15, 16, 66,205,102,239, 73,212,132,128,130, 82, 42,149, 74,174,158, 62,151,245,184,231,237, 42,204,192,113,215,187,236, 39, - 76,152,128, 9, 19,202,125, 72, 74, 41, 86,172,104,143, 45,191, 31,195,192,199, 51, 97,250,180, 29,136,202,235, 87,189,130,157, - 0,240,246, 59, 99,238,154,109,206,231,206,219,119, 55,114,180, 68, 34, 17, 10, 10, 10,112,237,218, 53,228,230,230, 66,175,215, -227,242,229,203,176, 88, 44, 40, 46, 46,198, 99,143,249, 85,134,205,173,157,119,235, 51,186,159,154,255, 38, 7,139,167, 74,142, - 22,203,178,153,190,102, 89,183, 90,173, 85, 26,149, 36,145, 72,140, 13, 26, 52, 32,238, 70, 39,240,127, 7, 6, 6,250,245, 56, -109,119,164,102, 1,152, 69,236,191,140,162,162,162, 59,246, 6,109, 54, 91, 86, 98, 98,162,200,147, 3, 3, 0, 44,203,122, 29, -117, 64, 41,213, 1,240, 30,223,173, 34,247, 66,211, 21,137, 68,162,123,244,209, 71, 29,185, 94,174, 53, 81, 8, 33, 80, 40, 20, - 94,179,115,125, 21, 36,213,233,116,217, 61,122,244,176, 57,183, 59, 23, 52,125,168, 33, 52,189,231,208,151, 18, 15, 21,152, 19, - 1,128,119,182,224, 57,255, 7,148, 82, 3,128,142,247,218,180,180,180, 52,243,147, 79, 62,249,149, 86,171, 29, 79, 41,173,118, - 54,255,140,255,173,240,167, 36,194, 63, 10, 74,169, 6,192,188,106,238,155, 14,160,139,203,186,115, 0,124, 58, 84,222, 56,119, - 57,255,174,215, 22, 99, 89, 54,179,110,221,186, 0,252,143,220,248,186,198, 91,173, 86,175,247,137,139, 8,193,140, 83, 64,249, - 96,236,242,150, 0, 0, 32, 0, 73, 68, 65, 84, 52,113,133,126,105, 26,141,198,162,167,158,122,170, 74, 97, 23,150,101,189, 94, - 67,156,207, 61, 54, 54, 22,113,113,113,142,255,121, 92,215,251,178,147,101,217,204,132,132, 4, 68, 68, 68,120,172,248,238,154, -147,229,143,230,221,254,140,188,105,198,197,173,119,183,203,125,177,243, 97,161, 74,142, 22, 63,135,225,221, 36, 55, 55,247,158, -204,185,226,181, 67,191,138, 20, 22, 22,186,123,170,253, 87, 80, 88, 88, 24,238,123, 43,239,248, 42, 72,154,155,155,235,181,160, -233,195,204,161,124,243,168, 74,235,236, 78,215,253, 70,167,211,213,244, 85,118,192, 19, 3, 7, 14,188,123,153,255, 2,247,140, -130,130,130,187,126, 77,191, 23,247,137,162,162,162,166,119, 91,243, 65, 57,247,123, 97,231,131,162,249,176, 32,100,169, 9, 8, - 8,184,165,186, 78,150,128,128,128,128,192, 95, 16, 0,221,220, 53, 84,101,164, 15, 33,196,173,134, 55,124,233, 11,154,130,166, -160, 41,104, 10,154,130,166,160,249,240,105,250,210,190,219, 35,141,239, 59,124,189,157,123,241, 2,208, 77,208, 20, 52, 5, 77, - 65, 83,208, 20, 52, 5, 77, 65,243,223,250, 18,186, 14, 5, 4, 4, 4, 4, 4, 4, 4,238, 17,130,163, 37, 32, 32, 32, 32, 32, - 32, 32,112,143, 16, 28, 45, 1, 1, 1, 1, 1, 1, 1,129,123,132,224,104, 9, 8, 8, 8, 8, 8, 8, 8,220, 35, 4, 71, 75, - 64, 64, 64, 64, 64, 64, 64,224, 30, 65,236,163, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4,238, 50, 98, 0,216,181,107,151,195,219, -234,213,171, 87,213,102,208, 20, 16, 16, 16, 16, 16, 16, 16,184, 67, 30, 86, 95,196, 49, 5,207,195,116, 82, 2, 2, 2, 2, 2, - 2, 2, 15, 30, 15,163, 47,226,200,209,114,246, 36, 5, 4, 4, 4, 4, 4, 4, 4,254,110, 30, 70, 95,196,225,104, 61,140, 94, -164,128,128,128,128,128,128,192,131,195,195,232,139, 84,136,104, 61,140,158,164,128,128,128,128,128,128,192,131,193,131,234,139, - 16, 66, 40, 33,132, 58, 47, 59,254, 22, 70, 29, 10, 8, 8, 8, 8, 8, 8, 8, 84, 29, 66, 8,165,148, 18, 79,255, 3, 66, 29, - 45, 1, 1, 1, 1, 1, 1, 1,129,106,193, 59, 83,206,203,206,209, 44,224, 30, 59, 90,132,144,110,130,166,160, 41,104, 10,154, -130,166,160, 41,104, 10,154, 15, 51,206, 14, 23,165,148, 56, 47,139,221,239, 34, 32, 32, 32, 32, 32, 32, 32, 32,224, 47,206,145, - 44,193,209, 18, 16, 16, 16, 16, 16, 16, 16,184, 75, 56,231,100,185, 46, 11, 57, 90, 2, 2, 2, 2, 2, 2, 2, 2,247, 8, 33, -162, 37, 32, 32, 32, 32, 32, 32, 32,112, 7,184, 38,193, 11, 93,135, 2, 2, 2, 2, 2, 2, 2, 2,119, 17,215, 17,136, 60, 4, -128,219,145, 3,148,210,253,254,138, 87,103,244,129, 47,125, 65, 83,208, 20, 52, 5, 77, 65, 83,208, 20, 52, 31, 62, 77, 95,218, - 85,241, 63,254, 41, 16, 66, 58, 2, 56, 4,160,147,253,255,191, 28, 47, 74,233, 61,123, 1,232, 38,104, 10,154,130,166,160, 41, -104, 10,154,130,166,160,249, 48,191,202,221,169,191,254,119,126, 9,201,240, 2, 94, 33,132,136, 9, 33, 30,187,152,125,181, 11, - 8, 8, 8, 8, 8,252, 27,224,115,180, 92,167,227,113,123,131, 36,132,212, 7, 48, 3, 64,136,211,234,211,148,210,100,151,237, -190, 6,160,116, 90,165, 3, 48,155, 82,122,221, 15,155,164,118,125,185,253,197, 1, 48, 2, 48, 1,208, 2,176,250,161, 33,112, - 15, 33,132, 60, 5,160,183,253,239,157,148,210,147, 85,105,127,216,136,139,139, 83,132,134,134,118, 63,123,246,172,236,242,229, -203, 56,122,244, 40, 93,179,102,141,165,184,184,120,111, 86, 86,150,225,126,219, 39,112,231, 16, 66,122, 0,152,110, 95,156, 79, - 41,221,115,135,122, 68,169, 84, 78, 10, 12, 12,236, 41,151,203,227, 88,150, 37,122,189, 62, 75,167,211,237, 99, 89,246, 3, 74, - 41, 87, 13,205,126, 97, 97, 97, 47, 53,108,216,176,254,205,155, 55,111,103,101,101,125, 13, 96, 51,128, 65,113,113,113,195,107, -213,170, 21,127,245,234,213,235, 69, 69, 69,159, 83, 74,183,223, 47, 59, 5, 4,254, 77, 80, 15,249, 89,128,231,100,248, 89,148, -210,225,206, 43, 8,169,172,209,165, 75,151,190,123,247,238, 85,114, 28, 7,254,165, 80, 40, 88, 0,163,124,216, 20,126,226,196, -137,196,241,227,199, 15,200,202,202,122, 66,171,213,182, 6, 0,165, 82,249,115, 84, 84,212, 47,203,151, 47,255,166,123,247,238, -153, 40,119,184,252,134, 16, 34,150, 72, 36, 47,134,134,134,246,100, 89,182, 5,165, 20, 18,137,228,108,113,113,241, 30,171,213, -250, 57,165,180,202,206, 27, 33, 68, 38, 22,139, 39,200,229,242, 30, 44,203, 54, 5, 0,177, 88,124,193,100, 50,237, 97, 89,246, - 99, 74,169,185, 26,154, 1, 50,153,108,130, 74,165, 74, 50,155,205, 77, 1, 64, 38,147, 93,208,104, 52,251,204,102,243,199,148, - 82, 99, 85, 53,239, 54,246, 40, 85,111, 74,169, 4, 0, 68, 34, 81,191,167,158,122, 42,145, 16,194,241,245, 65, 24,134,105,110, -179,217, 24,251,246,189, 9, 33,191, 80, 74,217,251,106,120, 53,137,140,140,156,199,113, 92,156,183,109, 66, 66, 66,158, 56,123, -246,108,195,148,148, 20,219,167,159,126, 90, 50,122,244,232,160,241,227,199,139, 87,172, 88,241, 49,128,201,174,219, 71, 68, 68, - 44, 97, 24, 38,194,159,227,115, 28, 87, 80, 80, 80,240, 70, 53,205, 23,184,123, 76, 95,185, 95,219,129, 82, 96, 66, 82, 48, 3, -224,142, 28,173,248,248,248,117, 47,188,240,194,208,166, 77,155,138, 41,165,176, 90,173, 48,153, 76, 13, 79,158, 60,217,105,235, -214,173, 79, 0, 24, 84, 21, 61, 66,200,203,211,166, 77,155, 59,103,206,156, 8,137, 68, 66,172, 86,107,189,148,148,148, 22,175, -188,242,202,255,173, 94,189,186,198,224,193,131,131,249,245,179,102,205,106, 69, 8,169, 67, 41,253,224,239,182, 83, 64,224,223, -134,155, 28,173,247, 40,165,239, 2,158, 29,173, 64,251,142,185, 0, 78,219,215,157,118,221,232,192,129, 3, 59,196, 98, 49, 31, -209,106,173,211,233,162, 81, 49, 10,230,142, 90, 35, 70,140,120,106,203,150, 45,243, 6, 15, 30,156,163, 84, 42, 27, 60,251,236, -179, 90, 66,136, 40, 37, 37,165,121,221,186,117, 21,125,250,244, 25,209,165, 75,151, 55,119,239,222,125, 20, 64,190,159, 39,217, - 56, 44, 44,108,219,194,133, 11, 19,123,244,232, 33,141,136,136, 0,165, 20, 89, 89, 89,241,187,118,237,122,250,189,247,222,123, -147, 16,210,159, 82,122,201, 31, 61,187,102, 43,133, 66,177,229,189,247,222,139,125,250,233,167,197, 49, 49, 49, 48, 26,141,184, -124,249,114,183, 61,123,246,116, 88,189,122,245,100, 66,200, 64, 74,233, 47, 85,208,108, 29, 18, 18,178,245,139,105,211,162,219, -188,248,162, 56, 44, 44, 12,148, 82,228,231,231,119, 59,182,126,125,167,113, 11, 23, 78, 38,132, 60, 71, 41,173,244,126,223, 79, -100, 50, 25,179, 97,195,134,102, 50,153, 12, 0, 96, 54,155,209,164, 73, 19,143, 30,252,131, 6, 33, 36, 33, 43, 43, 43, 68, 42, -149,186,109,183,217,108,232,208,161, 67,109,169, 84,138, 15, 62,248,192, 90, 80, 80,208,252,163,143, 62, 58,187,113,227,198,136, -143, 63,254,120, 32,220, 56, 90, 12,195, 68,100,102,102,186,213,180,217,108,176, 88, 44, 96, 89, 22,102,179, 25,141, 26, 53,186, -235,231, 36, 80, 45, 18, 1,224,135,243, 70, 0, 8,187, 83,177,192,192,192, 71,135, 13, 27, 38,206,207,207,135, 68, 34,129,197, - 98, 65, 78, 78, 14,154, 52,105, 34,250,234,171,175, 30,169,170, 94,189,122,245, 70,207,159, 63, 63,242,135, 31,126,176,108,216, -176,193,156,148,148, 36, 25, 61,122,180,170, 67,135, 14,141, 18, 18, 18,152,181,107,215,154,246,237,219,103, 29, 49, 98,132, 44, - 57, 57, 57,114,215,174, 93,125, 0,248,116,180,238,182,157, 2, 2,255, 66, 14, 81,151, 73,165, 1,188, 11,248, 46,239,112,154, - 82,218, 15, 0,164, 82,105,243, 26, 53,106,172, 99, 89, 54, 6, 0,196, 98,113,142, 68, 34,249,192, 98,177,252, 6, 0,132,144, -237, 28,199,245,245,161, 23, 62, 98,196,136,167,118,239,222,189,248,228,201,147,165,133,133,133, 49, 59,118,236, 48,190,249,230, -155, 55, 1, 32, 45, 45,173, 78,159, 62,125,226, 39, 78,156,152,217,189,123,247,229,157, 59,119,126,237,224,193,131,251, 80,222, - 37,233, 17, 66, 72,227, 38, 77,154,156, 56,114,228, 72,176, 90,173,174,208, 86,171, 86, 45,188,246,218,107,210,190,125,251,214, -237,218,181,235,113, 66, 72,123, 74,233,239, 62,236, 4, 33,164,117,253,250,245,247, 31, 56,112, 32, 40, 52, 52, 20, 37, 37, 37, -200,201,201,129, 94,175,135, 74,165,194,224,193,131,165, 29,219,181,173, 49,113,210,228,253,132,144,110,254, 56, 91,132,144,214, -109, 27, 55,222,191, 49, 57, 57,200,122,235, 22, 20, 10, 5,202,202,202, 0, 0,193,193,193,120,162,118,109,241,175,235,215,199, - 15,159, 58,149,215,252,219,157, 45, 66,136, 28, 0, 40,165, 38, 66,200, 78,145, 72,212, 79, 38,147, 49,253,250,245,195,254,253, -251,137,209,104, 20, 3, 64, 64, 64, 0,219,175, 95, 63, 40, 20, 10,152,205,102, 14,192,206, 7, 53,154,197, 35,147,201,144,154, -154, 90, 97,157, 86,171, 69,126,126, 62, 10, 11, 11, 97, 50,153, 80, 82, 82, 2,142,227,136, 66,161,200,231, 56, 14, 12, 83, 30, -208,243,164, 41,149, 74,113,237,218,181, 10,235, 88,150,133, 78,167,131,201,100,130,197, 98,129, 86,171, 85, 4, 7, 7,215,111, -220,184,113, 38,128,237, 69, 69, 69, 31,228,228,228,164,223,237,243, 19,240,139, 91, 59,127, 51,214, 4, 96, 6,112,227, 46,232, -113, 0,112,244,232, 81,228,230,230,162,160,160, 0,249,249,249, 72, 72, 72, 64,117,186,227, 82, 83, 83, 87, 62,246,216, 99,228, -226,197,139,123, 0,172, 72, 73, 73, 25, 85, 84, 84, 52,125,202,148, 41, 97,139, 22, 45, 42,154, 58,117,234,124, 0, 95,166,164, -164,188,250,232,163,143,246,188,114,229,202,234,251, 97,167,128,192, 61,160, 21,128, 72,251,223, 5, 40,191,238,134, 59, 45,159, - 71,249,239,150,223,206, 12, 64,230,230,127, 30,126, 57, 31,192, 47, 78,251,241,203, 85,198, 57, 71,203,121, 61, 3, 0,187,118, -237,162,252,203,221,206,209,209,209,147,186,116,233,178,248,204,153, 51,141,178,179,179, 67,179,179,179, 67,207,156, 57,211,168, - 75,151, 46,139,163,163,163, 39,241,219,217, 51,238,225,180,236, 60, 68, 83,122,226,196,137,196,109,219,182,205,223,191,127,127, -105,243,230,205,205, 7, 14, 28, 96,187,119,239,158, 7,128, 5,192,118,239,222, 61,239,224,193,131,182, 54,109,218, 40,118,239, -222,157,113,252,248,241, 37, 91,182,108,137, 6, 32,242,160, 9, 66,136, 68,173, 86,127,119,248,240,225, 74, 78,150, 51, 53,106, -212,192,206,157, 59, 85,106,181,122, 59, 33,164, 66,136,193,141,102, 64, 64, 64,192,214,131, 7, 15, 6, 5, 7, 7, 35, 47, 47, - 15, 18,137, 4, 81, 81, 81, 40, 45, 45, 69, 78,118, 54,210,255,248, 3,140,217,140,165,239,207, 9, 86, 40, 20, 91, 8, 33, 50, - 95,154, 33, 33, 33, 91, 55,206,155, 23, 84,184,127, 63,206,205,157, 11,139,197,226,232,114,181, 88, 44, 56, 62,126, 60,242,127, -250, 9,107,103,205, 10, 10, 9, 9,217, 74, 8, 9,240,166,121, 55,112,214, 36,132,140, 7, 80, 4,160,136, 16, 50,158, 82,122, -178, 73,147, 38,103, 46, 95,190,140,246,237,219, 99,243,230,205,143, 79,153, 50,101,252,148, 41, 83,198,111,222,188,249,241,246, -237,219,227,242,229,203,104,210,164,201, 25,231,252,172,123,109,231,189,212,180,217,108, 21, 94, 28,247,215, 61, 38, 46, 46, 46, -111,219,182,109, 24, 60,120, 48, 35,147,201,178,135, 12, 25, 34, 63,118,236, 24, 5,176,179, 42,118, 26,141, 70, 24, 12, 6,232, -116, 58,164,165,165, 41, 22, 46, 92,216,238,221,119,223,173,183,127,255,254,248, 25, 51,102,140,139,140,140, 60, 27, 19, 19,147, - 88, 21,205,170, 34,104,122, 36, 7,128, 5,229, 15,119,233,119,162,217,181,107,215,199,234,213,171, 23,157,114, 49, 20,197,210, -134,224,164,106,112, 82, 53,108,225,173,144, 42,123, 6, 53,107,214,140, 14, 14, 14,126,170, 42,154,148,210, 13,191,255,254,251, -147,148,210,119, 41,165,133,148,210,197, 83,167, 78,125,143, 16,114,116,234,212,169,115, 40,165,139,237,235,231, 94,190,124,185, - 13,165,116,227,253,176,243, 78, 17, 52,255,157,154, 62,124,145, 72, 66,200, 78, 66,200,206,183,222,122,171, 51,128,112,151,229, -255, 56,111, 7, 64,230,238,127,254,229,180, 62, 18, 64, 47,167,253, 34,221, 28,219, 39,212, 62,145,180,243,139,111,115,140, 58, -236,213,171, 23,233,213,171, 23,223,112,154, 16,178, 3,192,105,169, 84,218,188, 89,179,102,253,126,252,241,199,224,200,200,191, -142, 31, 25, 25,137, 45, 91,182, 4, 55,110,220,184,159, 84, 42,109, 14,224,180, 74,165,218, 1, 55, 93,140,118,212,227,199,143, - 31, 48,114,228, 72, 77,243,230,205, 1,160,228,210,165, 75,202, 54,109,218,232, 88,150, 37, 44,203,146, 54,109,218,232, 46, 93, -186,164,180, 90,173,218, 86,173, 90, 5,118,237,218,245,230, 27,111,188, 49, 2, 64,128, 7, 77, 0, 24,182, 96,193,130,132,208, -208, 80,111,111, 0,180, 90, 45,162,163,163, 49,126,252,248, 24,137, 68,242,146,183, 55, 76, 44, 22, 79, 88,176, 96, 65,148, 90, -173, 70,113,113, 49, 18, 18, 18, 96, 54,155,113,237,218, 53, 24,117,101,176,106, 53,176,106, 74,144,255,231,117,168, 37, 98,140, -232,219, 59, 90, 44, 22, 79,240,166, 41,147,201, 38,124, 62,117,106,180,249,230, 77,164,109,222, 12, 27, 91, 57,248,195, 90, 44, -184,240,217,103, 48,102,102, 98,254,152, 49,209, 50,153,204,171,230,221,196, 30,201, 90, 68, 41, 85, 80, 74, 21,132,144,229,255, -249,207,127,190, 82, 40, 20,227,147,147,147,123,236,221,187,247,233, 35, 71,142,116, 98, 89, 86,194,178,172,228,232,209,163,237, -141, 70,163, 88, 46,151, 67, 44, 22,187,117,208, 31, 6, 36, 18, 9,164, 82, 41, 20, 10, 5,218,181,107,247,231,154, 53,107,172, - 9, 9, 9,146,173, 91,183,134,198,197,197, 5,174, 88,177,162, 68,171,213, 46,240, 87,207, 98,177,192,100, 50,193, 96, 48,192, -104, 52,226,192,129, 3,181, 39, 78,156, 40, 54, 26,141,182, 62,125,250, 20, 89,173, 86,211,212,169, 83, 85, 97, 97, 97,111,222, -203,243, 18,240, 8, 11,160, 12,229,142,150,137, 95, 73, 8,145, 19, 66,154,242, 17, 95,127, 40, 41, 41, 89,253,249,231,159, 39, - 48,114, 53,142,153,123,226, 27,238, 61,236, 13, 89,129,188,196,255, 34, 42,161, 30,134, 14, 29, 26, 69, 41, 93,113,167, 6, 83, - 74, 63,162,148,118,160,148, 46,175,206,254,247,218, 78, 66, 72, 98, 80, 80,208,102,149, 74,117, 44, 40, 40,104, 51, 33, 36,177, -186, 90, 60,221,235,147,110,253, 26,137, 50,187,215, 35,180, 95, 35, 81,102,247,250, 85,175,245, 36,240,207,196,197, 23,113, 38, -159, 82,218,155, 82,218,123,254,252,249,243,248,149, 78,203, 10,127,244,121, 13,231,117,118, 7,235,142,224, 71, 26, 58,191,248, - 54, 71,215,225,174, 93,187, 40,127,114,206,163, 11,107,212,168,177,110,221,186,117,193,174,162,217,217,217,208,104, 52,152, 57, -115,102,240,200,145, 35, 39,103,100,100,188,224,195, 14, 89, 78, 78, 78,139,225,195,135, 7, 88, 44,150, 98,142,227, 24,141, 70, - 35, 14, 9, 9,177,241, 27,132,132,132,216, 74, 75, 75, 37, 58,157, 78,100,179,217, 76, 35, 71,142,148,141, 25, 51,230, 9, 56, - 69,180, 92,137,140,140, 76,234,217,179,167,204, 83,187,213,106,133, 78,167,131, 78,167,131,197, 98, 65,187,118,237,228,107,214, -172,233, 14,224, 19, 79,251,200,229,242,164,164,164, 36, 73, 81, 81, 17, 66, 66, 66,144,158,158,142, 27, 55,110,192, 84, 86, 6, - 75,153, 6,150, 50, 45, 88,173, 6, 84, 83,138,194,235, 87,209,230,209,134,210,175,229,242, 30, 0,150,120,210, 84,169, 84, 73, -109, 70,141, 18, 7, 6, 6,162,211,240,242,113, 6,187, 31,125, 20,212,102, 3,103,179,193,198,178,232,113,237, 26,172, 86, 43, - 24,134, 65,171,162, 34,177,106,253,250, 36, 0,139,189,190,171,247, 8,185, 92, 46,222,176, 97,195, 48,153, 76, 6, 74, 41, 49, -155,205,216,187,119,239,253, 48,229,190, 34,147,201, 16, 16, 16, 0,139,197,130, 90,181,106, 25,134, 15, 31,126,226,253,247,223, -175,201, 48, 76,160, 84, 42,253,177,176,176,112, 94, 86, 86, 86,154,191,122, 86,171, 21,102,179, 25,102,179, 25, 6,131, 1,127, -254,249,103, 76,237,218,181,201,248,241,227,109,122,189,190,206,135, 31,126,152,186,119,239, 94,229,130, 5, 11,158, 5,240,218, - 61, 60, 53, 1, 23,236, 81,233,144,154,225, 98,157, 68,132, 50, 0,193,118,167,224, 89, 66, 72,155, 70,141, 26,133, 94,190,124, -185,152, 16,114, 10,192, 55,148,210,108,111,122, 28,199, 17,142,227,240, 74,235, 18,140,127, 74, 4,171,181, 20,165,165,165, 72, - 79, 79,199,165, 75,151,240,243,207,126,167,139, 86, 32, 32, 32,224,165,160,160,160,238, 1, 1, 1,181, 88,150,101,202,202,202, -210,245,122,253,126,142,227, 86,243,133,124,170,194,189,178,147, 39, 48, 48,112,225,140, 25, 51,218,134,132,132,224,183,223,126, -171,179,105,211,166,133,184,195,228,250, 0, 9,179,118,201,178, 21,241,241, 81,106,156, 63,242,125,252,188, 85, 41,107, 1, 36, -220,145,161, 2,255, 8,156,125, 17, 23,126, 1,208,203, 62,194,189,183,155,118,191,184,211,253, 61,225,156,159,229,218,230,112, -180, 60,156, 24, 88,150,141,113,142,100, 81, 74,145,157,157,141,219,183,111, 35, 63, 63, 31,161,161,161,176, 88, 44, 49,126,216, - 33,215,106,181,173,195,195,195,245, 18,137,196,100, 48, 24,160, 84, 42, 57,137, 68, 66,237,199, 33,246, 81,139, 54,147,201, 68, -196, 98,177, 53, 56, 56, 56,200,100, 50, 53,132,151, 92, 50, 74,105,235,240,240,112,183,109, 38,147, 9,101,101,101,208,233,116, - 40, 43, 43,131,201,100, 66,116,116, 52, 88,150,109,225,205, 80,150,101,155, 70, 70, 70, 34, 43, 43, 11, 10,133, 2,153,153,153, - 48,151,105, 97,209,106,193,234, 52,176,149,150,130,211,104,192,233, 52,176,154,245,136,111,240, 40,248, 17,137,158, 48,155,205, - 77,195,195,195,161,211,253,149,110, 70,237, 14, 22,203,178, 96,237,201,209,124,119, 98, 68, 68, 4,248, 17,137,127, 7,246,156, -172, 41, 12,195, 44,151,203,229,226,113,227,198, 33, 59, 59,187,194,119, 98,220,184,113,142,156,172, 14, 29, 58, 28, 13, 8, 8, - 96,243,243,243, 97, 50,153, 36,127,151,157,127, 55,132, 16, 16, 66,202, 63, 35,150, 69, 68, 68,132,174,160,160,224,231,226,226, -226, 97,213,209,179, 90,173,252,136, 46, 24, 12, 6, 80, 74,241,219,111,191, 33, 32, 32, 64, 98,179,217, 46,178, 44,171,148, 72, - 36, 96,236,201, 95, 2,127, 15,132,144, 78, 13,213,178, 37,201,109,162,212,205,250, 4,234,148, 50,145,142, 75,111, 86,235,139, - 69,151, 54,141, 28,241, 82,240,236,217,179, 19, 35, 34, 34, 2, 82, 83, 83,141,115,230,204,169,189, 97,195, 6, 2, 31, 15, 65, -183,110,221,250,118,198,140, 25, 97, 61,123,246,172, 35,151,203, 73,105,105, 41,242,243,243,145,155,155,139, 27, 55,110,208,243, -231,207,255,105, 50,153, 54, 87,197,206,184,184,184, 53, 19, 39, 78, 28,217,178,101, 75, 9, 80, 30, 33,213,233,116,205, 15, 31, - 62,220,119,247,238,221,237, 1, 84,249,123,153,145,145,177,249,237,183,223, 14,124,230,153,103, 26,202,229,114,230,110,216,233, - 12,195, 48,209, 65, 65, 65,216,191,127, 63,212,106, 53, 24,134,137,174,174, 22,143,209,194,197,199,197,132,195,120,124, 9, 26, - 70, 38,194,104,225,226,239, 84, 83,224,159,129, 39, 95, 4,229, 57, 84,160,148,246,246,225, 44, 25,166, 79,159, 62,131, 16,178, -115,250,244,233, 51, 92, 27,157,246,179, 57,111,231,180,189,201,117, 31,127,241,228,108, 85,169,208, 36,199,113,184,125,251, 54, -178,178,178,112,251,246,109, 20, 22, 22,130, 97, 24,175,245, 35,156,109, 32,132,112,251,246,237, 11, 61,113,226,132,174, 85,171, - 86, 37,124,254, 11,203,178,196,106,181, 18,123, 94, 12, 73, 79, 79,151, 30, 59,118, 76,125,229,202,149,104,148, 39,172,121, 77, -198,116,247, 16,199, 59, 88,206, 47,163,209,136,128, 0,111,189,144,127,193,223, 8,127, 59,115,166,220,201, 42,211,218,187, 12, - 75, 97,211,148,130,234,180,144,217,172,144,129,130, 24,245,126,105, 58,231,251, 0,112, 56, 89, 22,187,163,101, 54,155, 97,181, - 90,193,113, 28, 88, 55, 93,139,247, 26, 74,233,202,230,205,155,183,248,246,219,111, 71,223,190,125,187, 82,123,255,254,253,241, -218,107,175, 97,226,196,137, 87,122,245,234,117,254,251,239,191,199,132, 9, 19,192,113, 92, 51, 66, 72, 41,165,116,247,223,110, -244, 61,198,100, 50, 57, 34, 80, 70,163, 17, 22,139, 5,240,146,252,238,138,235,119,147,255,108, 89,150,229,181,201,183,223,110, -195,209,163, 71,153, 75,151, 46, 38,140, 27, 55,158, 79,184,191,203,103, 34,224, 14, 66,200, 51, 50,134,124, 58,165, 89,120,192, -155,143,135,235,100, 98, 82,118,237,211, 25,101, 55,106,170,116,209, 53,148,230,132,218,234,184,121,243,222,143,189,114,229,170, -105,230,204,153,151,135, 12, 25, 18,245,230,155,111, 54,218,186,117,107,123, 66,200,231,148,210, 18, 15,186, 1,163, 70,141, 58, - 21, 21, 21, 85,123,213,170, 85,121, 25, 25, 25,161, 86,171, 53,208, 98,177,112, 58,157,238,134,193, 96,216,111,177, 88,246, 83, - 74,207, 84,197,222,224,224,224,199, 71,141, 26, 37, 41, 41, 41,129, 88, 44,134,197, 98, 65, 94, 94, 30,218,182,109, 43,218,177, - 99, 71,227,234,188, 7, 69, 69, 69, 75, 8, 33,135, 54,110,220,216, 93,165, 82,181,148,203,229, 49, 0,108, 90,173, 54, 87,167, -211,157,171,142,157,206,216,108,182,220, 51,103,206,212, 85,169, 84,184,117,235, 22,108, 54, 91,110,117,181,120, 2,164, 76,198, -133, 35, 59,106, 60, 26, 81, 27,199, 78,156, 66,128,148,201,184, 83, 77,129,127, 60,124, 14, 21,156, 29, 40, 55, 14,210,137,228, -228,100,197,252,249,243,145,156,156,124,209, 85,132,215,160,148,246, 78, 78, 78,190,200,111,231,180,253,145,234, 26,232, 53,162, -229,197,131,132, 88, 44,206,201,207,207, 15, 85,171,213, 14, 7, 43, 43, 43, 11, 89, 89, 89,144,201,100, 72, 79, 79,135, 76, 38, -243, 26, 66,183, 99, 84, 40, 20,191, 54,111,222,252,145,180,180, 52,233,156, 57,115,106,156, 57,115, 70,213,182,109,219,199, 20, - 10,133,141, 82, 10,163,209,200, 92,190,124, 57,104,241,226,197,241,173, 91,183, 54,183,110,221,250,108, 74, 74,138, 1, 94,138, -151, 18, 66, 78,103,103,103,215,169, 85,171, 22,128,191, 70,116,241, 47,103,135, 11, 40,239,242, 20,139,197,103,189, 25, 42, 22, -139, 47, 92,187,118,173,155, 50, 64, 14,179, 86, 3, 75,153, 6,172, 86, 11,155,182, 20,182,210, 82, 64,167,129,140,101, 33,177, - 89,161, 8, 8,192,237,204, 76,136,197,226, 11,222, 52,101, 50,217,133,220,220,220,110,106,181,218,113, 19,181,178,108,249,203, -102,131,153,101, 29, 17, 45,137, 68,130,140,140, 12,200,100, 50,175,154,247, 2,134, 97,108,124, 9, 7,119,200,100, 50, 68, 71, - 71,115,109,218,180,193,132, 9, 19, 96,179,217,128,242,122,135,157, 8, 33,199, 40,165,101,127,155,177,119, 25,119,206, 45,159, -180,110, 48, 24, 80, 86, 86,134,226,226, 98,177, 66,161,120,228,177,199, 30, 59,101, 54,155, 55,179, 44,187, 54, 45, 45, 77,227, - 73,211,238,152, 1, 40,119,186, 56,142, 3,165, 20, 54,155, 13, 86,171, 21, 82,169,148, 59,124,248, 8, 22, 47, 93,136,117,107, - 55,208,190,125,251,146, 29, 59,118,128,227,184,204,123,115,150, 2, 46,124, 80,242,205,251, 1, 96,109, 58,211,225,141,101, 95, -253,161,209,205,254,106,217,175,102,153, 72,243, 68,199,232,166,117,106, 63, 34, 82,171, 67,153, 79, 86, 47, 47,252,122,195,150, -212, 91,183,110,105, 62,254,248,227,167, 30,121,228,145,144,115,231,206,197, 3,112,235,104, 41,149,202,250, 47,189,244,210,168, -226,226, 98,233,186,117,235, 82,178,179,179,127, 5,112,137, 82,234, 8,105, 19, 66,122, 17, 66,190, 68,249,200,167,104,148, 95, -231,142, 81, 74,231,120,177,151, 35,132,224,224,193,131,149, 70, 7,114,119,230,157,171,235,213,171, 55, 56, 45, 45,237,104, 78, - 78,206,115,174,141, 50,153,108,118,131, 6, 13,122, 92,188,120,241, 61, 74,233, 15, 85, 17,214,235,245, 83,183,108,217,178, 72, - 36, 18,197,217,108,182, 44,131,193, 48,245, 14,236, 4, 0, 24,173,220,152,228, 79, 54,125,102, 48,219,106, 42,100,162, 91, 70, - 43,247,242,157,106, 10,220,127,188,249, 34,176,231,104,241,127, 3, 32, 46,203,231,236,127,155,157,182,205, 7, 28, 81, 44,179, - 75, 20,204, 93, 91, 62,170, 89, 44,221,221,136, 67,222,233,242, 84, 25,254, 45, 0,173, 1,156,150, 72, 36,203, 71,142, 28,185, -248,235,175,191, 14,214,104, 52,200,205,205, 69, 94, 94, 30,196, 98, 49, 84, 42, 21, 86,174, 92,105,200,205,205, 93,238,188, 15, -117,169, 32,111,199, 24, 17, 17,241,235,134, 13, 27, 98, 62,253,244, 83,241, 11, 47,188,144,222,171, 87,175,134, 43, 87,174, 76, -147, 74,165,212,102,179, 17,147,201, 68, 94,121,229,149,186, 75,151, 46,189, 41, 18,137,148,131, 7, 15, 38,129,129,129,167, 81, -158,160,234,150,252,252,252,125,223,125,247,221,128, 55,222,120, 67,110, 54,155,221, 70,178,248,117,106,181, 26,199,143, 31, 55, - 23, 23, 23,123, 77, 54, 50,153, 76,251,126,252, 97, 87,135,231,135, 12,145, 90,181, 26, 88,181, 26,176, 26, 13,108,218, 18,144, - 50, 13, 36, 54, 22, 10, 41,135,152,132, 0,176,134, 32,236,250,229,156,213,100, 50,121, 45,108,168,209,104,246, 29, 91,183,174, - 83,235,196, 68,241,241, 73,147, 96,177, 90,241,204,181,107, 14,231,202, 98,177, 96,123,211,166,176, 17,130,102, 99,199,226, 58, -203,178, 26,141,102,159, 55,205,251,197,249,243,231,243,134, 15, 31,126,134,227,184, 22,168, 66,116,231,159,142,213, 90,241,247, -197, 59, 68,172,221, 9,206,203,203,147,237,218,181,171,195,229,203,151,165,191,255,254, 59,142, 30, 61,218,236,235,175,191,126, - 43, 49, 49,177,105,122,122,122,142, 59, 77,103,231,205, 93,209, 95,216,243, 15, 83, 54,110,198,171,175,190, 74,114,114,114,240, -205, 55,223,192, 87,241, 84,129,187,134, 14,172, 77, 97, 62,188,177,172,215, 15,183,180, 39,179, 13,115, 0,236,161, 6,150,214, -168, 81,227,124,203,150,161, 17, 0, 96, 50,218, 98,234,215,175,223, 81, 44, 22,203, 0, 32, 40, 40,168,101,120,120,248, 74, 0, -237, 92, 5, 9, 33,162, 33, 67,134,180,137,138,138,106,190,123,247,238,115,217,217,217, 23, 41,165, 63,187,110, 87,183,110,221, -153, 87,174, 92,105, 37,145, 72,136,211,190, 30, 13,237,212,169,211, 35,137,137,137,225, 63,252, 17, 2,141,180, 30,168,168, 20, - 16, 7,192,166,126, 28,233,210, 70, 72, 72, 56, 21,174, 86,171,155,149,148,148,156,243, 40,226, 6, 66, 72,231, 1, 3, 6,172, - 93,183,110, 93, 66,199,142, 29, 41, 33,132,113, 45,233, 80,183,110,221,238, 39, 79,158,108,241,242,203, 47,175,178,143, 72,246, - 59,121,152, 82,154, 14, 96, 96, 85,108,242,197,222,235,116, 63,236, 53,207, 4,254, 53, 84,165,228, 66,181,202, 51,220, 9,222, -122,246, 60,117, 29,182,230, 56,174, 47,195, 48,176, 88, 44,201,209,209,209,219, 7, 15, 30,220,255,173,183,222, 10, 10, 15, 15, -119, 68,178, 86,174, 92,105,184,113,227,198, 86,139,197,242, 27, 33,100, 86, 86, 86, 86,223,184, 56,143,247, 7,237,135, 31,126, -184,169, 79,159, 62, 47,140, 29, 59,214,208,180,105, 83, 85,195,134, 13,245, 39, 78,156, 8, 74, 74, 74,210,136, 68, 34,122,252, -248,241,224,186,117,235, 26, 9, 33,242,159,126,250,169,240,212,169, 83,117,147,147,147, 63, 71,249,112,107, 79,108,156, 59,119, -238,204,190,125,251,214, 13, 15, 15,135, 70,163,169,224,108,241,127, 7, 4, 4, 32, 39, 39, 7,219,182,109,203,182, 90,173,159, -123,123,195, 88,150,253,120,197,202, 79, 38,119,110,243,100,188, 74,169, 64, 78,102, 58,108,165,197,128,174, 12, 50,214, 10,133, -140, 34,190,158, 18, 98, 81, 32, 82,115,202,176,238,196, 47, 57, 44,203,126,236, 77,211,108, 54,127,252,218,210,165,147, 79,126, -242, 73,124,226,160, 65,184,180,126,189,163,171,144,119,180,108,132,160,102,215,174, 96, 66, 66, 48,111,213,170, 92,179,217,236, - 85,243, 94,192,113,156,200,108,246, 92,236,222,108, 54,131,227,184,204, 75,151, 46,109, 34,132,104, 9, 33,157,236, 77,135, 30, -228,104, 22, 80,238,104,205,154, 53, 11,243,231,207,199,244,233,229,179,176,152,205,102, 71,247, 97, 73, 73, 73,237, 99,199,142, - 73, 15, 31, 62, 76, 87,173, 90, 85,248,194, 11, 47,168,199,142, 29,171,254,244,211, 79, 95, 7,224,246, 41,221,106,181, 98,234, -212,169, 88,181,106, 21, 94,125,245,213, 74,237, 34,145,136,203,204,204,128,209,104,164, 31,126,248, 97,150, 68, 34, 9,253,252, -243,207, 21, 47,191,252,242, 67,227,192,254,195,121, 91, 49,252,157,255, 67,249, 53,102, 57,165,244, 16,223,160, 82,169, 20,223, -126,251,157, 24, 0,182,110,217, 38,161,148,134,240, 5,102,191,250,234,171,128,182,109,219, 70,185, 19,164,148,218, 2, 2, 2, - 76, 11, 22, 44, 8, 31, 51,102,204,211, 7, 14, 28, 8, 37,132,180, 1,240, 43,128, 92,148, 59,215, 81, 0, 46, 69, 68, 68,168, - 82, 82, 82,226,187,119,239, 30,232,203, 80,173, 86,251,249,166, 77,155,106, 45, 61, 22,130, 31,116, 3,144,193, 13, 2, 85, 83, -132, 69,105,209, 40,232, 22,134, 13, 27, 22,183,124,249,242,207, 0,180,244,247,228, 9, 33,195,250,247,239, 63,127,221,186,117, -113, 99,198,140,201, 57,123,246,108, 46,128,117,110, 28,190,130,145, 35, 71,102,175, 95,191, 62,150, 82,250, 9, 33, 68, 70, 41, -221,234,239,113, 4, 4, 30,118,156, 42,195, 59,224,157, 47,226, 46,191,137, 16,178,157,101,217,190, 98,177,120,135,115,193,210, -232,232,232,201,102,179, 57,150, 16, 66,165, 82,105, 78,110,110,238,114,231,130,165,153,153,153,125, 19, 18, 18, 28,251,216,139, -110, 58,215,218, 80, 61,243,204, 51,221, 78,158, 60,249,209,206,157, 59,243,180, 90,109,208,150, 45, 91, 20,243,231,207, 79,231, - 56,142, 78,155, 54, 45,177, 71,143, 30,122,155,205,150, 61,118,236,216,186,181,107,215, 30,123,229,202,149,253,112,114,180,220, -104,130, 16,210,184, 94,189,122,199,183,110,221,170, 82,171,213,200,203,203, 67, 81, 81, 17,116, 58, 29,108, 54, 27, 36, 18, 9, -242,243,243, 49,103,206, 28, 77, 86, 86, 86,165,130,165, 30, 52, 91,215,138,143,223,183,252,189, 89,193,106, 49,131,194,171,151, -193, 22, 23, 66,194, 90, 81,163,113, 8,164, 50, 5,174, 95,211,226,245,141,219,180,183,138, 74, 42, 21, 44,245,164,249, 68,253, -250,251, 87, 77,153, 18,100,204,200, 64,236,139, 47, 66,175,215,195, 98,177,128, 97, 24,252,185,124, 57,164,145,145,152,153,146, -162,187,120,235, 86, 87,234, 82,176,212,157,230,157,226,172, 73, 8, 25, 79, 8,113, 36,195,247,239,223,191,194,182,223,125,247, - 29, 62,249,228, 19,152, 76, 38,150, 82, 58,153, 82,186,146, 16, 18, 4, 0,206, 78,214,189,182,243, 94,104,134,135,135, 47,223, -189,123,119,173,168,168, 40,226, 92,177, 29,248, 43,183,110,194,132, 9, 93, 79,157, 58, 37,111,222,188,185,169,160,160,160, 85, -100,100,228,129, 13, 27, 54, 68, 12, 30, 60, 56,235,226,197,139,241,174,154, 17, 17, 17,139,183,110,221, 90,175, 94,189,122, 12, - 31, 21,115,237,158, 28, 61,122,116,183, 13, 27, 54,200, 6, 12, 24, 96,210,233,116,209,193,193,193,169, 91,183,110,141,232,215, -175, 95,206,197,139, 23, 99,255,142,115, 23, 52,221,211,164, 73,147,235, 23, 47, 94,172,199, 47, 27, 12, 6,228,231,231,163,160, -160, 0,106,181, 26, 73, 73, 73,127,222,184,113,163,158, 59, 77, 66, 72,243,129, 3, 7,190,247,217,103,159,117, 11, 12, 12,148, - 30, 57,114, 68,183,127,255,126, 99,122,122, 58,107,181, 90,105,108,108,172,184, 93,187,118, 1, 61,123,246, 12,148,203,229,204, - 59,239,188, 83,240,254,251,239, 71, 16, 66, 54, 82,251,244,103,174,154, 45, 90,180,248,249,199, 31,127,108, 77, 8,129, 72, 36, -130,217,108, 65, 73, 73, 9,110,223,206,196,165, 75,151,112,242,228, 73,236,221,187,247, 92, 89, 89, 89,115,127,206,157, 16, 18, - 14,224,136,201,100,106, 40,147,201,252,118,236,109, 54, 27,196, 98,241, 85, 0,221, 41,165,153, 15,219,231, 46,104,222, 63,205, - 7, 25,226, 84, 17,222,239,100,120,187, 3,214,154, 16,194, 79, 74,122,218,181,132, 3, 33,228, 45, 66,200, 44,251, 98,107, 63, - 82, 4, 52,187,119,239, 62,218,173, 91,183, 9, 93,187,118, 93,218,189,123,247,236,236,236,236, 58, 75,150, 44, 73, 96, 89,214, -114,233,210, 37, 38, 53, 53, 53,253,215, 95,127,173,215,160, 65,131,177, 87,174, 92, 57, 12,239,209, 44,222,214, 75,132,144,182, -157, 59,119,222, 54,118,236,216,154,109,218,180,145,169,213,106,136,197, 98,164,165,165,225,220,185,115,230,148,148,148,204,146, -146, 18,191,167,224,161,148,158, 38,132, 36, 13,158, 56,121,235,216,254,125, 34,158,108,248,136, 44, 54, 54, 22, 48, 24,112,245, - 86, 14, 78, 93, 61,103, 89,115,244, 84,190,201,100,122,206,213,201,242,161,217,173,203,148, 41, 91,103, 63,255,124, 52,178,179, -197,177,177,177,144,201,100,184,113,227, 6, 82, 57,142, 93,176,122,117,174, 70,163,249,219,167,224,225,235,104,113, 28, 39, 6, - 0,133, 66,129,215, 94,123, 13,206, 83,238,124,242,201, 39, 48, 24, 12, 0, 32, 38,132, 44, 34,132,172,125,208,163, 88, 60, 69, - 69, 69, 51,159,121,230,153,100,177, 88,236,177,234,109,104,104, 40,180, 90, 45, 88,150,181,221,190,125,251,106,104,104, 40, 36, - 18, 9, 40,165,110,127, 71,133,133,133, 51,159,123,238,185,185, 12,195,184,141,124, 0,128, 74,165, 74, 63,112,224, 64,253,151, - 95,126,153,249,226,139, 47,210,198,140, 25, 35, 63,112,224,128,141, 82,186,237,110,156,151,192,221,195,249,161,212,254, 16,231, -177,148, 2,165,244, 55, 66,200,210, 95,127,253, 53,114,194,132, 9,117,158,127,254,121, 85,231,206,157,131,156,183, 49, 24, 12, -220,247,223,127,175,251,228,147, 79, 74,143, 30, 61,122,115,244,232,209,109, 80,158, 95,226,150, 91,183,110,237,154, 55,111, 94, - 72,207,158, 61, 27, 0,112,228,103,229,231,231, 35, 61, 61, 29,191,255,254,123,186,197, 98,217, 81,133,243, 41, 36,132,204, 30, - 58,116,232,162,245,235,215,199,141, 25, 51, 38, 39, 37, 37,229,119,148, 23, 45,118, 69,221,191,127,255,166,235,215,175,143, 29, - 51,102, 76, 14,128, 57,148, 82, 33,143, 80, 64,224, 47, 58,185,230,105,121,205,209, 2, 80,202,113, 28,140, 70, 99, 52,199,113, -125, 57,142, 67, 80, 80,144,187,237, 90,103,101,101,245,117,158, 84, 26, 62,166,203, 1,144,191,127,255,254,125, 27, 55,110,236, - 58,109,218,180,231, 75, 74, 74, 90,159, 63,127,190, 13, 0, 72, 36,146,147,129,129,129, 63, 39, 39, 39,191, 56,117,234,212,124, -248,225,100,241,216,157,173, 70,139, 23, 47,190,107,147, 74,219, 29,163,250, 31,111,222, 54,225,115,185, 60,201,101, 82,233,125, -246, 73,165,171, 52, 1, 52,175, 57,229,179,207, 38,168, 54,111,254,199, 78, 42,109, 50,153,216, 1, 3, 6,124,206, 48, 12, 7, - 0, 54,155, 77,108, 50,153, 94, 68, 21, 71,170, 62, 40,216, 29,198,137,222,182,121,236,177,199, 54,236,216,177, 99,120,223,190, -125,109, 22,139, 37,175, 79,159, 62,226,159,127,254,153, 50, 12,227,246,169,142, 82,106, 2,240, 95,111,154, 49, 49, 49,137, 43, - 86,172, 56, 59,105,210, 36,213,198,141, 27,195,142, 29, 59,102,251,240,195, 15, 53, 69, 69, 69, 62,231,167, 19,248,123,145, 72, - 36, 80, 42,149, 48,155,205,200,207,207,119, 59,218,217, 25, 74,233, 65, 66, 72,207, 41, 83,166, 60, 59,101,202,148,158, 49, 49, - 49,117,107,213,170,165,100, 24, 6,183,111,223,102,179,178,178,242,172, 86,235, 62, 0,219, 0,160,110,221,186, 35, 1,172,241, -164, 87, 88, 88, 56,151, 16,114,112,253,250,245,189, 2, 3, 3, 27, 5, 4, 4,132, 89,173, 86, 70,171,213, 22, 25, 12,134,203, - 70,163,113, 39,165,244, 68, 85,206,137, 82,154, 66, 8, 41,120,225,133, 23,214,174, 91,183, 46, 33, 45, 45, 77,251,235,175,191, - 62,227,186, 93,163, 70,141,142,173, 95,191, 62,246,229,151, 95,206, 78, 73, 73,169, 82,142,150,128,192,191, 1, 74,233, 97,120, -200, 89,246,116,211,156, 39,147,201,196,176, 79,166, 54, 76, 1, 0, 0, 32, 0, 73, 68, 65, 84, 46,109,199, 93,132,229,180, 75, - 78, 86, 41,128,121,110,182,115, 69, 55,108,216,176, 27,195,134, 13, 91,100,183, 65,132,242, 18, 14, 44,202, 51,254, 45,240, 81, -210,193, 29,180,124,174,189,207,236,175,187,130,221,233, 89,140,187, 88, 56,244, 94,104,222, 41,124, 29, 45, 66,200, 34,251,170, - 41,191,253,246,219, 74,231,109, 8, 33,231,157,219,237,142,196,191,134,146,146,146,201, 43, 86,172, 56, 61,125,250,116,249,168, - 81,163,240,251,239,191, 99,254,252,249,166,146,146,146,141,190,247,118, 79, 78, 78, 78,122, 76, 76, 76,139,101,203,150,189,185, -116,233,210,126,132, 16, 97,174,195,127, 8, 6,131,225,207,199, 31,127, 28,164, 60, 97,137,178, 44,235, 24, 45,106,175,240,255, -167, 47, 13, 74,105, 33,128,213,246, 23, 8, 33, 97, 40, 31,101, 88, 72, 41,117,125,144,156,226,135,222, 73, 0, 39,125,109, 87, - 21,236, 14,225,139,169,169,169,243,254,252,243, 79,183,142,218,245,235,215, 15,181,107,215, 46,248,252,249,243,111, 83, 74,119, -221,205,227, 11, 8, 60,236,184,117,180, 40,165,215, 1, 60,239,107,103, 15,163, 11,253,197, 6,223,209, 47,129,191, 17,123,206, -213, 90,251,223,149,156, 40, 95,237, 15, 59,153,153,153,197, 0, 28, 83,145,212,169, 83,167, 82, 30, 91,117,176, 59, 85,175, 65, -168, 4,255,143, 34, 45, 45,173, 82,100,231, 78,161,148,186,235,150,187,239,216, 7, 1,180,241,212,110,181, 90,103, 1,152,229, -169, 93, 64, 64,192, 51, 66,245,105,129, 10, 80, 74, 77,222,156, 40, 95,237, 2, 2, 2, 2, 2, 2,255, 54, 72,229,185, 14, 59, - 58,218, 0,184,157,140,179, 42,163, 9, 8,169,250,132,158,190,244, 5, 77, 65, 83,208, 20, 52, 5, 77, 65, 83,208,124,248, 52, -157,180,151,122,104,186,234,162,247,105, 85,109,184,223, 84, 24,125, 72, 41,189,103, 47, 0,221, 4, 77, 65, 83,208, 20, 52, 5, - 77, 65, 83,208, 20, 52,171,121,156,177,127,199,113,238,178,205, 20, 64, 71,126,249,161, 28, 65, 38, 32, 32, 32, 32, 32, 32, 32, -112, 63,160,254,212,209,218,178,101,139,136,255,123,232,208,161,163,109, 54,155, 99,216,187, 72, 36, 90,241,205, 55,223,172,245, -118,144,129, 3, 7,218,188,105,186,195,215,113,220,105, 54,121, 36,100, 92,120,136,114,114, 73,169,126, 89, 90,150,237,168,209, -104,108,196,183, 5, 4, 4, 92, 94,187,118,237, 31,119,219,206,209,163, 71, 55,112, 61, 78,173, 4, 73,167,176,224,128,215,138, - 74,202,150,252,254,135,246,129, 11,113, 62,104, 12, 26, 52,200,235,103,228,202,141, 27,106,230, 44, 98, 63, 80, 5, 74,251,148, -233,172, 31,216,206,204,250,232, 94,217,246,119, 18, 27, 27,219, 80,165, 82,141, 0,208, 88,175,215, 71, 41,149,202, 60, 0,151, - 52, 26,205,134,236,236,236,171,190,246,231,233, 84,155,164, 3,168,105, 95,188,117,232, 6, 77,244,167,205, 23, 61,234, 17, 35, - 5,228,132,192,178,231, 58,117, 76,160,249,116,125, 98,228,104,229,245, 61,234, 19, 51,165,144, 18,192,180, 39,149,250, 55,251, -251, 3, 0, 33, 68, 5, 32, 9, 64, 19, 0,231, 1,236,165,148,250, 55, 19,189,128,128,192, 3,129,107,161, 82,231,101,183,142, -214,232,209,163, 59, 72,197,228, 35, 10,170, 6,104,184,201,100,146,200,100, 50,152,205,102, 40,149,138,143, 95, 25, 51,250, 61, - 48, 40,177,178,120,109,237,218,181,213,158,233,186, 42,199, 25, 56,112,224, 65,215,253, 67, 85,138,185,135,190,159, 22,218,161, -215,130,249,230, 27, 5, 83,181, 90, 45, 35,151,203, 97, 50,153, 16, 18, 18,210,118,220,216,177, 45, 25, 9, 53, 75,165,129, 39, -150, 46, 93,234,118, 46, 58,127,120,253,245,215, 99, 44, 22,227,127, 56,142,147,153,205,102,185,235,113, 66,148,129, 11, 14,125, - 63, 77,217,177,247,252,247, 0, 8,142,214, 63,136,114, 39, 43,230,211,255, 27,246,228,168,133,147,186, 65,221,105,193, 84, 0, - 15,180,163, 69, 8, 17,213,169, 83,103, 66, 98, 98,226,144,213,171, 87, 75,235,212,169,131,128,128, 0, 24, 12,134,216, 63,255, -252, 51,118,220,184,113, 29,235,214,173,187, 41, 45, 45,237, 99, 74,105,165,135, 9, 55,212, 60,244,229, 59, 0,128,182, 35,230, -212, 36,132,252, 23,128, 30, 0, 58,214,250,171,173,211,168, 57, 53, 9, 33, 83, 80,113,180,112, 54,165,212,109,145, 76, 10,200, -118,174, 95,140,190, 35,255, 43, 38,132,140,227,215,247,108, 0,252,248,213,114, 60, 61,116,114,133,245, 61,234, 66,252,253,250, -197,232, 61,242,191, 30,103, 53,127,186, 1, 99,229, 56,247, 5, 98, 1,128, 97, 8,187,231, 58,117, 55,193,112, 46,165,180,210, -124,164,132,144, 30, 40,159,208,217,237,246,189, 31, 21,231, 90,172, 54,183, 5,103,165, 18, 81,222,206, 43,108,165,125, 71,181, - 32, 86,171,173,252,218, 42, 21,195, 22, 18, 18,114,232,237,183,223, 22,247,238,221, 27,107,214,172,105,247,233,167,159,142, 37, -132,252, 4, 96, 7,165, 52,213,211,185, 8, 8, 8, 60,120,248, 93, 25, 94, 44,194,170, 29, 91,215,214,203,205, 43,192, 11, 47, -191,137,141, 27, 55,162,184,184, 24,161,161,161,144, 73,165,146,101,139,222,137, 81,169, 2, 99, 94, 24, 59,117, 21,128,134,213, - 53,168,138,199,169, 95,233,132,236, 5, 77,197, 34, 70, 34,147,201,152, 77,155, 54,161,164,164, 4,106,181, 26, 50,153,132, 89, - 58,255, 45,133, 74, 21,164,120,105,252,244,118, 0, 54, 87,215, 78,179,185,172,221,183, 27,215,170,242,243,243, 49,234,213,169, -112, 61,142, 84, 42,181, 1,229, 55,150,234, 30, 67,224,206, 41, 40, 40, 32, 0, 16, 17, 17, 65, 1,103, 39,171,205,168,165,111, -116,199,235, 75,246, 66,111, 52,127,117,127,173,188,115,234,212,169, 51, 97,208,160, 65, 67,230,206,157, 43,101,152,242,129,195, - 58,157, 14, 6,131, 1,241,241,241, 56,116,232,144,116,230,204,153, 67,190,251,238, 59, 0,248,176,170,250, 23, 47, 94,172, 85, -179,102, 77, 35, 0,244,105, 26,236,218,150,200,183, 1, 64,112,112, 48,124, 17,174, 14, 52, 93,188,120,170, 49,191,223,132,174, -241, 54, 15,235,141, 0,148,222,180, 56,142,138,247,126, 52,206, 99,251,203,115,191,102,207,111, 62,218,176, 78,157, 58, 6,231, -245, 30, 10, 46, 3, 64,116, 89, 89, 89, 77,215,149,252,246, 22,171, 45,202,211,241,186,191,246,137, 91, 7,204,106,131,248,235, -175,191, 6, 0,124,240,223,225,162,207,126, 46, 16,139,197,229,151,218, 69,139, 22, 97,246,236,217,178, 61,123,246,244, 92,191, -126,125, 79, 66,200, 50, 79,142,170,128,128,192,131,133,107,101,120, 30,183,142, 22, 67, 72,176, 42, 56, 8, 3,135,189,130,221, -187,127, 68,135, 14, 29, 28,109,181,107,215,198,160,231,250,225,155, 47,151, 2,128,239,171,172, 23,238,244, 56,197,165,186,255, - 61, 61,228,163, 57,183,114,202, 78,238,220,185, 19,237,219,183,175,176,255,176,193, 3,241,213,231,139, 64, 41,149,222,137,157, -132, 50,210, 96, 85, 32,134,190,240, 42,220, 29,103,236,168,254, 59,123, 12, 90,222, 45,183, 80,231,105, 4,133,192, 61,226,202, -149, 43, 34,147,201, 52, 84,165, 82,181,145, 72, 36,209,114,117, 77, 46, 75,220,186, 48,159,212, 73,203,139,210,119,120,163, 91, -244,211, 31,252, 95,103,188,190,100, 47,150,109, 60,245,101, 11,228, 60,208,181,128, 98, 99, 99, 27, 38, 38, 38, 86,112,178,180, - 90, 45,202,202,202,160,209,104,160,213,106,193, 48, 12,166, 78,157, 42, 61,124,248,240,144,216,216,216,253,126,116, 35,222,106, - 59, 98, 78,185,179, 33,146,148,205,154, 53,203, 20, 21, 21,101, 82, 42,149, 84, 44,149,107, 59,141,154, 19, 12, 0,140, 88,170, - 93,182,108,153, 57, 62, 62,222, 40, 22,139,101,147, 39, 79,246,171, 60,140,201,100,162,206,154,102,179,201,177,126,193,130, 5, -230,232,232,104,147, 82,169,164, 22,139,231,201,204, 93,185,112,163, 8,114,169, 8,114,169, 8, 1, 50, 9,130,107,181,130,188, -248,119,176, 44,139,133, 11, 23, 90, 98, 98, 98,204, 74,165,146,202,100, 50,233,164, 73,147,124,218, 57,122,244,104,170, 86,171, - 45, 74,165, 82, 58,123,246,236, 74,213,157, 15,156,191, 13,133, 76, 2,165, 92,140,250,181, 19, 32,167, 6,119, 50,110, 17,137, - 42,246,116,203,229,114,180,107,215, 14,141, 27, 55,198,246,237,219, 59, 1, 16, 28, 45, 1,129, 7, 28,215, 40,150, 51, 98, 0, -216,181,107, 87, 71,216,103,157,238,213,171, 87,249,108,211,160,152, 50,225, 57,188, 52,106, 40,108, 54,142,207,164, 7, 97, 8, -198,191,216, 19, 28,231,187, 71,130,250, 49,196,179,170,199,113,214,164,132, 17, 1, 64,189,196, 88, 58,246,165,231, 97,227,184, -242, 50,168, 0, 32, 2, 94, 25,245,116,249,186,187, 96,167, 8, 54,188, 57,238, 89,184, 59, 78,195,122,113, 12,107, 49,130, 56, - 77,246,232,143,102, 85, 17, 52, 43,114,226,196,137, 88,165, 82,185,100,248,240,225,113,147, 38, 77,146,217,196,106,241,150,147, -133, 33,211, 86,158,140,211,155, 44,162, 97,157,107,225,141,231,155,226,141,101, 7,120, 39,107,108,237,218, 37, 15,244,103,164, - 82,169, 70,172, 94,189,186,146,147,149,155,155,203,148,149,149,193, 98,177,112, 90,173, 22, 54,155, 13,211,167, 79,151,204,156, - 57,115, 4, 33,100,182, 93,199,228, 78,243,208, 13,154, 72, 8,153,114,241,226,197,196,183,223,126,219,210,165, 75,151, 91,181, -107,215,214,137, 68, 34,196,198,198, 46, 79, 74, 74, 10,155, 59,119,174,165,103,207,158, 55, 69, 34, 17,234,215,175,175,251,253, -247,223, 19, 1, 40,252, 61,119,103,205,181, 7, 86,240, 79,125, 72, 74, 74, 74,175, 95,191,190, 78, 36, 18,225,143,239, 23, 84, -154,211,198,147,166, 68,204,160, 65,124, 72,249, 2, 33,128, 34, 8, 40, 46, 95, 76, 74, 74,202,108,216,176, 97, 25,195, 48,184, -112,225, 66, 2,128, 10,249, 94,238, 52, 21, 10,133,117,216,176, 97,183,174, 94,189, 90,105,123, 0, 16,139, 24,180,105,104, 15, - 96,197,183, 0, 50,143,121,180, 83, 34, 2, 59,115,194,112,177, 58, 0,144, 7, 71,152, 52, 26, 13, 84, 42, 21, 0,192, 98,177, -224,183,223,126,195, 83, 79, 61,213,113,243,230,205,135, 61,188, 93, 94,207,253, 78, 16, 52, 5,205,127,178,166, 59, 95,228, 65, -193,117,126, 67,119, 57, 90,135, 92, 79,202,102, 99, 81,187,102, 52, 22,188, 51, 26, 54, 27, 7,155,205, 6,214,254,191,205,102, -131,213,226,247, 52,132, 94,185,147,227,132,170, 20,115,127,220,244, 90,104,151,254,139,186, 38,191, 61,106,159,205, 6,112,156, - 21, 86, 43, 96,227,172,224,108, 54, 88,173,254, 63, 37,123,195,202,113, 72, 76,136, 65,242,219,163,224,122,156, 13,223,108,238, -115, 96,199, 84,101,135,222,243,223, 4,176,240,174, 28, 80,192, 43, 87,174, 92, 17, 41,149,202, 37, 27, 54,108, 72,108,213,170, - 21, 3, 0, 71,175,177,242,105, 43, 79,198,237, 73,110, 75,218, 54, 14, 71, 94,137, 9,147, 63, 62,135,221, 39,243,126,116,117, -178, 30, 96, 26,215,169, 83, 7,192, 95, 78,214,226,197,139, 35, 86,174, 92, 25, 15, 0,207, 61,247,220,237,174, 93,187, 22, 92, -187,118, 13,177,177,177,164,160,160,160, 23,128,201, 0, 64, 8,153, 66, 41, 93,233, 65, 87, 87,179,102, 77, 99,100,100,164,137, -119,136, 24,134,129, 88, 44, 70,205,154, 53,141, 81, 81, 81,166,250,245,235,235,164, 82, 41, 24,134, 1,239,232,249, 3, 33, 4, - 34,145, 8,188,166, 51, 34,145, 8,188,102, 85,144,136,157,182,119,113,207,248,227,184, 59,158, 39, 2, 2, 2, 40, 0,143,219, -139, 24,167,203,163,216,123,134,192,151,103,169,132, 16,114,136, 82,138,179,103,207, 34, 45, 45, 13, 82,169, 20, 49, 49, 49,152, - 61,123, 54, 76,166,114,127,119,208,160, 65, 29, 1, 92,240,203, 64, 1,129,127, 7,149,124,145, 7, 9, 74, 41,113,151,163, 85, -225,170, 98,247, 38, 1,148, 59, 64,229,206,142, 27,231,199,202,194,106,181, 0,212,251,164,170,254,224,237, 56, 54, 27,231,245, - 56,124,142, 22,199, 81,177, 91, 39,139,227,192, 90,171, 52,143,180, 71, 56,155, 21, 28,103,173,228,100,113, 54, 27, 8, 97,202, -227, 91, 20,119,212, 69, 41,224, 63, 38,147,105,216,208,161, 67,227,120, 39, 11, 0, 10,180, 86,177,222,100, 21,181,109, 28,206, -180,236, 60, 8, 81,106, 57, 82,142,220, 70,148, 90,121,228, 33,113,178,160,215,235,163, 2, 2, 2,160,211,233, 28,145,172,149, - 43, 87,198,155,205,102,198,108, 54, 51, 41, 41,155, 19, 54,238,187, 86, 99,195,158,107, 53, 86,111, 59, 83,163,184,184,180, 49, -165, 84, 65, 41, 85, 0, 88, 68, 8,145,123,211,151, 74,165, 14, 7,197,217, 1,146,203,229,213,114, 96,120,120,231, 76, 42,149, -186, 93,239,218,189,230, 11,169,179,163, 5, 90, 30,213,114,130,119,236,248,220, 40, 95,200,100, 50,199,185,187, 67, 44,114, 58, -158,168,234,169,152, 22,139, 5,101,101,101, 40, 41, 41,249,203,234,242,235,218,228, 42,139, 9, 8, 60,228, 56,251, 34, 15, 26, -188,179,229,188,206,245, 42,116, 8,246,217,167, 89,171,197,173,243,179,249,251,227,184,149,163, 67, 76,196,105, 80, 15, 51, 85, -123, 98,200,144, 33, 95,198,198,198, 58,230,211,146, 43,130,194,199,190,246, 46, 88,214,130, 96, 5,131,151, 71, 60, 93,193,201, - 42,143,104,153, 93, 31, 88, 29, 20,151,234,254,247,244,160, 15,231,132,168,194, 79,186, 58, 63,201,235,206, 12, 44,214,152, 18, - 24,230, 23, 20,147, 88,219,160, 87,222, 29,205,239,199, 48,204,249, 77,159,204,122,195, 95,187, 41, 97, 36, 3,199, 45, 31, 75, -197, 65,141,148,140,246,200,180, 81, 79,126,235,236,204,133,133,133,237,236, 62,112, 89,183,220, 34, 33, 71,235,239, 66, 38,147, -117,155, 52,105, 82,133, 59, 94, 68,176,132, 85,202, 37,182,227,151, 10,200,153,131,155,153,163, 23, 11,184, 0,169,136, 70,210, -180, 58,247,203,206,187,141, 82,169,204,211,235,245,177, 6,131, 1, 26,141, 6, 26,141,166, 66,187, 88, 34, 33, 99, 95,157, 24, - 33,145,202, 96,181,152,177,123,195,251, 62, 53, 59,213, 38,233, 29,107,161,102,159,166,193, 16, 73,100,218, 75,117,234, 44, 23, -139,197, 96, 24, 6,223,127, 60,109,242,182, 37,175, 5, 3,192,249,157, 31,107,134, 78, 93,241, 33,195, 48, 48,153, 76, 94, 29, - 54, 87, 50, 50, 50, 18, 76, 38,147,209,238,160,241,161,117,220,184,113,163,134,201,100, 50, 56,175,247, 7,133, 50, 24, 80,215, - 6,148, 21,243,209, 9, 33,184,121,243,102,156,213,106,213,139,197, 98,152,205,102,191,188, 34,134, 97,164, 23, 46, 92, 72,224, - 56,206,237,246,141,235,198, 1, 49, 77, 1, 89,136,191, 38, 58,210, 32,124,109,227,238, 9, 88, 64,224, 95,142,195, 23,121, 80, -112,254, 13,123, 26,117,216,105,215,174, 93, 78, 87, 5, 10,214,106,181, 59, 89,127, 57, 61, 54, 27,135,172,124, 35,174, 93,251, - 3,203,150, 45,195,241, 83,255, 13,153, 59,119,174,124,230,204,153,166, 33, 67,134, 44,225, 56,238,113,134, 97,206, 15, 28, 56, -208,237, 83, 26,199,113, 53,206,156, 57,227,184,233, 89,173, 86, 4, 7, 7, 35, 56, 56, 24, 13,235, 39, 84,114,178,108, 54, 27, - 44, 94,186, 14,249, 28, 45, 66, 57,106,181,218, 96,227, 56,135,243, 83,172, 49, 37,236,216,127,182,158,211,230,143,240,127,180, -107,213,168,146, 22,207,144,113,179, 29,231,177,233,147, 89,111,204, 93,179, 70, 94,108,139,156, 52,116,224, 75, 77, 6, 13, 29, -129, 97,207, 62,211,209,100, 54,111, 23, 49,148,179, 58,142, 7, 6, 20, 21,114,180, 4,238, 29, 5, 5, 5,196, 96, 48,212, 82, -171,213,142,117,148, 82,196, 6,234, 76, 83, 7, 55,200, 74,154,118, 44,206,104,177, 65, 46, 97,232,228,126,137, 89, 63,127,151, - 18, 94, 96, 42, 32,252,104,196, 7,156, 75,169,169,169,177, 53,106,212,128, 70,163, 1,203,178,220,115,207, 61,119, 91, 44,150, - 36,136, 37, 18,210,123,232, 68, 46, 39, 39,203,202, 48, 34, 80,106,195, 51,131,198, 17,121,128, 66,106, 49,155, 89, 0, 83,168, -251,121, 42,157, 75, 56, 4, 39, 37, 37,133,241, 35, 1,183, 45,121, 45,216,169, 77,213,178,101,203, 48,231, 81,135,254, 32,147, -201,200,144, 33, 67, 20, 53,107,214,252,127,246,206, 59,172,201,243,123,227,247,121,179,195, 94,202, 16,193,129, 3,197, 81,103, - 29, 40,182,174, 58,106, 91,113,214,109, 93, 85,171,182,142,170,117,111,109,221, 86,107,173,181,184,253,214,106, 29,117,180,206, -186,177, 46,112,225, 64,182, 40, 35, 16, 66,230,251,252,254, 32,161, 1, 3, 36,136,182,246,151,207,117,229, 10,121,199,253, 62, -111,128,112,115,158,115,206, 67, 0,112, 57, 98, 26, 0, 64, 44, 22, 83,215,174, 93,101, 1, 1,121,121,248,191,175,181,126, 77, -109, 47, 7, 6,100, 62, 2, 50, 31, 23,216, 46, 16, 8,208,181,107, 87,105,149, 42, 85,108,250, 93, 52, 38,192, 23,217,187,203, - 81,168, 7,146,175, 90,165, 53,176, 1,233,166,181,130,240,155,247, 56, 72,156, 60,213,111, 79, 62,114,177,184,227,237,102,203, -142,157,124, 10,121,145, 55, 7,227,218,134, 39, 1,132, 25,159, 81, 32, 71,171,115,231,206,167, 96,238, 30, 25,160,211,107, 95, - 48, 89, 6,131, 1, 34, 82, 99,197,138, 21, 24, 55,110, 28, 0,136, 39, 76,152,176,119,222,188,121, 31,242, 60, 95,143, 49, 22, - 74, 84,244,103, 5,199,113, 39,125,125,125, 83, 24, 99, 34,142,227, 66,215,174, 93,235,209,169, 83, 39, 56, 59, 59,131,241,236, - 5,147,101, 48,240,208,106, 53, 47,228, 96,152,112,119,145,207,251,109,247, 88,247,119,186, 45,125,215,192,243,199, 76, 38,139, - 55, 24, 0, 62,239,164,231, 79, 19,112,244,240, 62,172,255,118,125, 58,136,221, 6, 3,207,113,220,245,162,198,200,243,124,189, -179,151,163, 67, 91, 54,174,133,121,223,127, 47,189, 21,153,180,119,244,248,169, 33, 61,122,247,195,238, 29, 17,224,244, 25, 87, -205, 77,150, 65,199, 35, 51,253, 89,215, 19,246, 28,173,127, 12,157, 78,135,244,244,116,232,178,211,245,141,124,149,153,179,122, -148, 87,167,164,231, 10, 69,124,142, 62,216,229,169,250, 68,218, 99,129,131, 67,177, 93, 3,222, 24, 20, 10, 69,196,200,145, 35, - 91,159, 62,125, 90,204,113, 28, 20, 10, 5,218,180,105,243, 44,149,175, 32, 27, 54, 98,180, 87, 98, 98,130,222, 69, 46, 84,139, -197, 34, 60,125,250,148,111,221,169,175,170,247,224,113,126,227,166, 45,220,144,248,231,186,162,242,179, 10, 96, 94, 9, 88,120, -223,198,141, 27, 53, 21, 42, 84,200,149, 74,165,146,129, 3, 7, 90, 53,127,168,209,104,216,226,197,139,213,133,171, 11, 53, 26, - 13, 91,177, 98,133,198,223,223, 95, 45,151,203,153, 78, 87,114,222, 39,199,145,254,147,121,219,244,122,189, 62,127,155,233, 51, - 71, 32, 16, 64,199, 83,246,234,213,171,181,254,254,254, 26, 7, 7, 7, 38,149, 74,197,214,140,115,244,232,209,204,221,221, 93, -235,232,232, 40,158, 52,105,210, 75, 85, 29,234, 12, 16,206, 91,155,223,222, 65,234,236,236,140,172,172,172,252,177,250,250,250, -190,112,142,221,108,217,177, 99,193,139,188, 89,156, 44, 42, 71,203, 98, 2, 3, 15,100,167, 60,125, 86,222,203,187, 18,244,122, -189,241,161,131, 94,167,195,216,225,189,241,205,183,121,253, 30,141,102,171,221,132, 9, 19,246,162, 80,190,151, 37,118,238,220, - 57,119,194,132, 9, 46, 41, 41, 41, 71,126,252,241, 71,143,190,125,251, 98,226,196,137, 88,186,116, 41, 68, 18, 25, 60,202, 85, -204,191,142,233,186,207, 82,211,192,192,178, 45,233,153,114,180, 24,131,208,179, 92, 32,116, 6, 29,120,157, 14, 58,157, 14, 36, -200,187,181,163,135,247,161,239,160,209, 16, 73, 93,220,215,172, 88,162, 10,105,228,251,225,244,161, 67, 45,253, 87, 95, 88,156, -187, 21,153,180,119,244,184, 73,237, 76, 38,235,127, 17,223,222,254,122, 74,183,237, 82,137, 48,255, 58, 58,158, 7,199, 9,236, - 57, 90,175, 17, 47, 47, 47,150,154,154,250, 56, 35, 35,163,134,163,163, 35,158, 63,127,142,180,180, 52,100,100,100, 64,173, 72, -215,123, 26, 50,148,164, 79,131, 80, 40,196,211, 56, 61, 12, 6, 67,242,127, 36,154,133,164,164,164, 59, 85,171, 86,221, 57,117, -234,212,222, 83,166, 76, 17,241, 60,143,187,119,239, 2, 68, 76, 36,150,128,227, 56,136, 68, 66,100,102, 42,120, 7, 39,183, 36, - 45, 19, 56,136,196, 18,112, 2,113,113,101,194, 79,194, 6,230,181,119,224,132,226, 44, 83, 37,160, 88, 44,198,133,221,203, 20, - 97, 3,231,186, 0,128, 88, 42, 79,111,223,190,125,108,173, 90,181,148, 87,174, 92, 9, 68,161,170,195,194, 16,160,255, 96,224, - 36,129,131, 92,166,108,215,174,221, 19,147,230,227, 99,107, 20,253, 70, 77, 35, 18, 72,148, 93,186,116,137, 13, 9, 9, 81, 10, - 4, 2, 68,239, 91,162,248, 96,224, 36, 25,253, 93,211,251, 2, 71,238,179, 79,174,239, 62, 83,115,254,252,249,186, 78,157, 58, -197,153,242,197, 30, 63,126,236,215,185,115,103,233,242,229,203,117,157, 59,119,142,175, 83,167, 78, 54,199,113,136,140,140,180, - 88, 69, 88, 24,185, 92,174, 27, 50,100,200,147,155, 55,111,150,170,234,176, 36, 42, 86,172, 8,158,231,209,166, 77, 27,228,230, - 90, 14, 8,218,205,150, 29, 59,111, 54,133,251,104, 21,219, 25, 94,167,215,141, 30,254,217,236, 53, 0,253,221,229,143,177,191, - 3, 75, 12,244,197, 23,159, 59, 2,144,155,204,214,248,241,227,211, 75, 26,132,153,201,106,212,183,111, 95,124,249,229,151,248, -250,235,175, 13, 75,151, 46, 21,220,185,247, 72, 59,112,212,204,140, 66,215, 1, 3,203,230,117,252,104, 75,122,233,153,202,153, -161,157, 23,205, 78, 72,201, 57, 59,112,228,244,252, 79, 47, 3, 0, 5,249, 26, 0, 96,253,183,223, 42, 69, 82, 23,199, 30,189, -251, 1, 64,187, 53, 43,150,236,157,135,239, 75, 54, 91,140,130, 71,143,159,228,110, 50, 89,107,151,207,191,233, 74, 41,171,199, -124, 30,149,159, 93,111,250,107,224,225,140,189,161,157, 23,117,120,154,166, 92, 89,210,123, 96,167,108,208,104, 52,199, 87,173, - 90, 85,105,250,244,233,146,180,180, 52, 60,123,246, 12,233,233,233,249,143,236,236,108,248,248,248,224,183,223,126,211, 42, 20, -138, 11,255,244,120,203,146,135, 15, 31,174,221,191,127, 63, 78,157, 58,213,107,202,148, 41, 34, 31, 31, 31,114,117, 77, 33,157, - 86, 3,128,177,212,212, 84,222,193,201, 45,201,203,219,255, 73, 98,242,211, 96,157, 86, 3,222,160, 45, 50,219,220,216,222,225, -139, 91,183,110, 85, 90,182,108,153,198,188, 18,176,247,164, 53,171, 26, 54,108,232,177,122,245,106, 77,151, 46, 93, 98, 77,201, -235,214, 36,195, 31,125,128,207,110,221,186, 81,187,176,102,216,176,101,155, 76,154,230,213,136, 93, 63,223,176,169, 90,181,106, - 30, 33, 33, 33,177,197,233, 86,169, 82, 69,229,235,235,171,169, 89,179,102,182, 72, 36,202,139,100,233,116, 57, 85,170, 84,225, -189,189,189, 53,181,106,213,202,182, 53,105, 95, 46,151, 51,224,197,158, 87, 38,108,169, 58, 20, 9,160,239,219,183,111,126,103, -248, 47,170, 85, 75,234,215,175,159,239,132, 9, 19,176,105,211, 38,252,249,231,159,105,133,207,105,221,186, 53, 78,159, 62, 61, - 27,192, 76,171, 6,108,199,142,157,127, 21, 37,246,209, 42,204,230,205, 17,191,195, 44,167,201, 18,243,230,205,147, 26, 35, 89, -237,198,141, 27, 7,149, 74,229, 94,248, 24, 34,106,107,234,181, 97,201,100, 45, 89,178,100, 59, 99,204, 31, 64, 75,131,129,191, -184,241,251,205,109, 74,186, 25,115, 77, 70,156,128,227, 40, 91, 34, 98,127,125,251,221,166, 2, 29,191,141,201,239, 53, 64,184, -190,102,197, 18, 21,128,118,133,205, 86,120,120,120, 78, 97, 77, 19, 35, 70,142,200, 55, 89,107, 86, 44, 57, 22,210, 40,224,195, -233, 67,231, 90, 52,103,115,103, 14,119,228, 56,106,110,158,163,101, 73,243,101,177,107,254,173, 41,149, 74,183,239,216,177,163, - 83,104,104,104, 96,189,122,245,184,180,180, 52,100,103,103, 35, 59, 59, 47,248,233,229,229,133,232,232,104, 62, 54, 54, 54, 65, - 42,149,238,248,167,198,249, 42, 52,141,203,234,172,242,245,245, 61, 62, 99,198,140,126,207,158, 61,235,156,158,158,225,121, 96, -243, 92,116,236, 49,146, 90,119,234,163,212, 48,161, 44, 62, 41,165,230,201, 67,219, 60, 14,239, 92, 11,173, 70, 51,156,232,219, -219,166,246, 14, 22,198,153, 99,106,227, 80,179,102, 77,165,185, 81, 9, 8, 8,200,245,243,243, 83,135,132,132,228,111,183, 84, -205,103,233,222,109,213, 52,230,127, 41,139,211, 4,144,111,218, 10,183,141,112,112,112,128,201,124,217, 50, 78,243,106, 75, 75, -148, 84,117,104,174,249,227, 85, 38, 50,223,247, 35,145, 32, 34, 34,162,109, 68, 68, 68, 35, 0,127, 1, 56, 10, 64,103, 60, 47, - 63,105,158, 49, 54, 11,192,172,146,238,253,101,176,107,218, 53,255,205,154,111, 50,102, 57, 90, 38,194, 24, 99,167,128, 34,140, - 86, 73,152, 18,223, 1,112,227,199,143, 79, 87,169, 84,238,253,250,245, 43,246,156,228,228,228, 77, 91,182,108, 41, 96,178, 62, -250,232,163, 65,123,246,236, 57,254,244,233,211,210, 12, 3,238, 46,242,121,167,126,157,236,222,186,203,162,113, 0,150, 90, 60, -136,129, 15,105,228,251,225,154, 21, 75,246,162,160,217,250, 9,192, 71, 22,206, 32, 0,104,255, 94, 55,108,219,188,198,148,219, - 37,191,121, 37,225,112,175,171,115, 44, 86, 43,186, 57, 73,231, 24,199, 49, 1,246, 28,173,215, 66,112,112,176,225,220,185,115, - 19, 70,142, 28,249,205,187,239,190, 91,161, 91,183,110,226,138, 21, 43, 66, 42,149,226,193,131, 7, 56,115,230,140,246,225,195, -135, 9, 57, 57, 57, 19,234,213,171,103,205,122,127,111, 28, 73, 73, 73,119,140,205, 72, 63, 51,253, 55, 37,149,201,197,125, 6, -143,243,207,175, 58,220,185, 22,234, 92, 21, 0, 8,137,104, 41, 17,253, 80, 68, 66, 60, 0, 64, 40, 20,138,175, 93,187, 22,104, -138, 90,105,181, 90,169,105,251,149, 43, 87, 2, 77,189,181,114,115,115,173,174, 58,124, 85,154, 55,110,220,240, 55, 85, 71,154, -170, 11,133, 66,161, 56, 50, 50,210,223,164,169, 86,171,173,170, 58,148, 72, 36,226,107,215,174,249, 27, 12,134, 50,171, 58, 52, - 97, 52,198, 71,140, 15, 0,121, 6,203,104,178, 76, 57, 29,246,105, 67, 59,118,222,108, 78, 22, 94, 84, 26, 70, 63, 81, 42,163, -101, 74,124,183,246,120, 34, 18, 86,170, 84,169,125,239,222,189, 11,152,172,240,240,112,195,207, 63,255,124,210,215,215, 55,133, -227,184,146,150, 9,121, 81,215,148,163, 5,136, 10,239,227, 56,238,122,203,198,181,192,113,220,245,233, 67,135,170,231,225,251, - 2,102,107,223,222, 93, 29,138,144,101, 0,224, 89,190, 2,250, 14, 26,141,190,131, 70,187, 3,104, 1, 20, 93,173, 88,220, 56, -236,188, 58,154, 55,111,158,116,251,246,237,190,199,142, 29,235,115,250,244,233,182, 57, 57, 57,149,136, 8,114,185,252,177, 70, -163, 57, 46,149, 74,183,255, 87, 77, 86, 81,104,181, 90,253,148,217,203,182, 8,132, 98, 61,207,107, 73,171,213, 14,134, 13,191, -231, 83,166, 76,225, 96, 33,247,106,204,152, 49, 22,183,255, 83,154, 83,167, 78,181, 88, 37, 56,102,204,152, 98,171, 7,139,226, -243,207, 63, 47,179,170, 67,107,176, 27, 42, 59,118,254,123, 20,238,159,101,162, 84, 70,139,227,184,235, 22,170, 11, 9, 0,179, - 84,209,199, 24,211, 11, 4,130,217,110,110,110,195,149, 74,229,111, 31,125,244,209,248,240,240,112, 3,144,151, 32, 95,154, 49, - 0,121, 57, 90, 97, 93, 23, 79,200,200, 86,175, 46,188,175,112,228,201,100,182,214,174, 92,178,110,239,158, 29,225,201,137,241, - 22, 43,176, 76, 6,173,168,125,150,182,103, 42, 84,179,195,186, 46, 30,151,174, 80,217,115,180, 94, 51,193,193,193, 6, 0, 17, - 0, 34, 10, 47, 42,253,255, 1,198,152,154,136, 38, 18,145, 41,162, 59,241,225,137,149,249, 63,219, 68,171,110,152,239, 43, 38, -154,149,100,205, 2,209,150,206, 43,110,223, 43,208, 76, 41,102,129,232,226, 72,177, 81, 47, 5, 0,196, 34,193,211,162, 22,143, - 22,139, 4,165, 11,197, 23,194,172,193,225,236,178,208,179, 99,199,206,235,199,230, 28, 45,147, 9, 42,138,162,250,100, 21,135, -193, 96, 88, 12, 96,177,173,231, 21,199,205,123, 89,223, 1,248,206,218,227,141, 57, 89, 3,140, 15,139, 24,158,223,178,249,222, -194,195,195,215, 3, 88,111,235,121,118, 74,199,238,221,187,255, 95, 69,169, 74,130, 49,182,142,136,126, 48,126,173,182,118, 95, -161,227,202,124, 97,227, 87,164,121,164,228,163,202, 78,239,192,109,189,119, 89, 94,175,152,113,216, 35, 92,118,236,188,193, 88, -138,102, 21, 91,117,104,199,142,157, 55,139, 18, 76, 84,201,237, 76,236,216,177, 99,199, 78,169,177,180,152,180, 9, 2,208,182, -136,147,172,174, 38, 32, 34,139, 26, 37, 12,170, 88,125,187,166, 93,211,174,105,215,180,107,218, 53,237,154,255, 61,205,146,180, -205,207, 39,162, 97,140, 49,171,103,174,254, 73,138, 44,104, 97,140,189,178, 7,128,182,118, 77,187,166, 93,211,174,105,215,180, -107,218, 53,237,154,165,188,206,176,215,113,157, 50, 24, 39, 43,252, 48,237,179, 79, 29,218,177, 99,199,142, 29, 59,118,236,188, - 4,204,214,100,120, 59, 47, 66,129, 31, 76, 7,143,169,121, 47,176,132, 61,249,101,214, 63, 58,160, 55, 24, 34,242, 2,208,197, - 89, 38,126,191,182,155,184,217,205,231,185,231,148, 90,195,175, 0,246, 49,198, 74, 92, 97,192,142, 29, 59, 47, 15,185,215,174, - 8,162,193, 0,251,187,236,146,103, 81, 44, 35,122,115,129,227,220,106, 13, 2, 71,181,205, 54,169,192,176,145,165, 71,197, 89, -212,253,187, 36,221, 45, 38, 38, 38, 48, 40, 40, 40, 22, 64, 70,161,195, 94,216,199,140, 97,129,162, 52,189,170, 52,232,239, 32, -115, 24,165,209,104, 42, 59, 57, 59, 63, 77,123,158,186, 62,237,201,141,181,102,135,185, 92,188,120,209,183,105,211,166,137, 0, -178, 74,210,180, 99,167, 44,177,208,176, 52,223,124,189,180,209,162,234,221, 43, 67,207, 13, 0,195,199, 32, 92, 99, 15,119,119, - 47,149, 78,208, 71, 21,192, 11,155, 0,104, 0,176, 6,142,114,217, 91, 42,141,246, 41,207, 88,127, 22,179,243, 47,155,245,170, -244, 56, 8,160, 83, 17,123,103,179,135,187,102,217, 36,200,179,105,151, 79,255, 44,117,115, 32, 4, 53,252,104, 18,204, 58, 56, -255,155, 32, 34, 57,128,129, 68,244,174,131,131, 67,245,156,156,156,199,140,177, 27, 0,214, 49,198, 18, 75,169,201, 1, 24,226, -228,232,216, 49,208, 89,210,224,201,179,204,132, 44,157,225, 12,128,165,182, 26, 35, 34,146, 4,186, 59,158, 90,209, 59, 44,184, - 89,237,106,224,163, 78, 35, 87,163,125,255,100,124,246,251, 51,207, 39, 78, 32,162, 6,140, 49,141,149, 90,190, 0,132,140,177, - 56,227,107, 71, 0, 33, 0,170, 0,120, 8,224, 22, 99, 76, 89,140,132, 53,215,120, 35, 52,253,253,253,253,120,158, 31,234,237, -237,221, 57, 37, 37,229, 32,199,113,223,199,199,199,151,234,251, 93,134,108, 48,229, 87, 88,251, 12, 96,184, 45, 23,144,203,229, - 41,185,185,185,229, 1, 64, 38,147, 61, 85,169, 84,175,172, 74,240,117, 94,235,181, 64,248,228,232,217, 91, 29,205, 55,181,111, - 89,251,197,227, 56,170,125,244,108, 84,171,130,199,133, 24, 96,225, 51,208,216,125, 21,179,103,207,166, 57,115,230, 12,170, 90, -181,106, 53,142,227,238,206,152, 49,163, 64,235,155,194,251,102,206,156,249,119,231, 86, 11,154,254, 53,154,239,235,213,187, 71, -216,167,195, 6, 58, 85, 40,231,132,164,103, 74,207,111, 55, 69, 44,139,136,216,214,101,104,175,118, 29, 1, 96,238,220,185, 31, - 84,172, 88,177,146, 64, 32,120,244,213, 87, 95,253, 84,156,166, 29, 59,175,128,147,204,150, 69,165, 75,130,106,247,112, 68, 46, - 11, 7,104, 96,235,102, 13, 91, 14,239,223,149,152, 64,134, 62,159, 76,214,219,172, 85,105,144, 20, 2,213,188,186, 33,181,199, -247,232,218,150,107, 20, 82, 9,190,229, 92, 1, 78,132, 13,135, 30,123,174, 94,242,213, 58, 0, 77, 75, 49,204, 78, 15,206,111, - 71, 82,134, 1, 68, 0, 17,192, 17,144,157,203,163,253, 7, 3,102,194,102,163, 68,156,155, 3, 97,252,246, 92, 0, 40,114,221, -184,127, 18, 34,106, 80,174, 92,185,181, 99,199,142,117,175, 91,183,174,175, 76, 38,115, 80,169, 84,213, 98, 98, 98, 42, 79,159, - 62,189, 29, 17, 45, 98,140,253,108,163,102, 64,144,191,223,174,213,227,135, 52,169, 87, 37, 16, 34, 77, 54,120,181,178,226,189, -152,251,205, 70,172,219,253, 9, 17,245,102,182, 45,195, 48,109,195,152,254,193,117,156, 1,237,173, 63, 33, 18, 8,224,224,234, -142,118, 66, 1, 4,132, 90, 3,142, 60,158, 10, 43,214,123, 51,118, 68,159,154,247, 37,109, 19, 8, 4,199,218,182,109, 91,121, -232,208,161,212,176, 97, 67, 68, 70, 70, 86,217,190,125,123, 91,161, 80,248,200, 96, 48,220, 0,112,151, 49,166, 43, 65,214,164, - 45, 2, 80, 67, 32, 16,212,253, 55,107,250,249,249,201, 53, 26,205, 0,127,127,255, 97,239,191,255,126,221,174, 93,187, 82,141, - 26, 53,112,231,206,157,134,135, 15, 31,158, 89,191,126,253, 27,241,241,241,223, 73, 36,146, 45,137,137,137, 42,107, 52,203, 18, - 34, 26, 6,192,207, 24,224,152,109,197,115, 34,128,217,140,177,226,250,104, 21, 32, 55, 55,183,188,233,239, 40, 17, 89,236,119, - 85, 86,216,114, 45, 34,138, 38, 34, 15,227,215, 40,238,153,227, 56,232,245,122,165, 94,175,175, 90,130,102, 13, 0,214, 45,222, -152, 7, 99,140, 21,215, 8, 90, 14, 0,237, 91,212, 78, 3, 33, 10, 0,192,179,168, 23,142,226, 89, 84,190, 1, 99,168,125,244, -207, 40,143, 2, 81,176, 66,204,158, 61,155,102,206,156,137, 89,179,102,117, 5, 16,202,243,252,153,224,224,224, 85, 5, 36,121, - 62,127,223,204,153, 51, 87,206,158, 61,155, 0, 88, 52, 68, 30,149,234,247,251,240,195,110, 97,243,167,141,113, 74,120,174,197, -181, 71, 42,120, 56,137, 49,115,226, 72,137, 90,173,107,182,238,167,136, 97,107, 22, 77,222,104, 48, 24,222, 1,208,200, 96, 48, - 92, 1,240, 83,113,154,118,236,188, 2,194,200,150, 69,165, 45, 65, 68,132,170,221, 91,193,128,129,129, 21,189,195,199, 14,237, - 41, 15, 9, 14, 66, 46,156,240,248,153, 1,135, 14, 28, 6,128,157,182,140,138,170,244,106, 36, 20, 99,203,146, 89, 19,107,134, - 54, 9,193,205, 4, 29,174, 36, 24,144,243, 72, 7, 1,167,131,129,103, 0,131,229,165,238,173, 32, 62, 93,143,179,119, 53,224, - 8, 16,112, 0,199, 17, 4,182,124, 76,153,195,107,238,205,221,124, 53,228, 89, 10, 15,240,154,123,165, 29,211,171,130,136,222, -169, 94,189,250,138, 57,115,230,248,164,164,164,120, 92,185,114, 5, 82,169, 20,238,238,238, 66, 63, 63,191,154, 43, 86,172,200, - 28, 51,102,204, 68, 34,250,139, 49,246,216, 74,205,224, 78,141,234,158,251,110,201, 92, 87,221,197,195,200,216,241, 63, 8, 56, - 6,177,163, 19, 42,203,229, 56,252, 97,144, 71,248,129, 71, 63, 19, 81, 48, 99, 44,193, 26,205, 32, 31,207,246,117,131,131,145, -190,119, 13,174,165,231,226,112,162, 10,131,219,189,141, 58, 30,114,132,234, 13,240,113, 20,189,131, 18,140, 22, 17,185, 3,152, -172,209,104, 56,177, 88, 76, 50,153,172,223,252,249,243,181,125,250,244,137, 55, 29, 19, 26, 26,138,208,208, 80,202,202,202,170, -114,226,196,137, 42, 17, 17, 17,122, 34,138,102,140,237, 43, 74, 87, 46,119,120,146,155,171,170, 40,147,203,115,190, 93,183,238, -235, 86,173, 90,241, 82,233,223,171,194,148, 70, 19, 0,220,220,220, 54, 86,175, 94,157,190,252,242,203,196,178,210,172, 92,185, -242,209,208,208,208, 54,237,219,183, 23,182,104,209, 2,126,126,126,249,251,188,188,188, 16, 26, 26, 74,113,113,113,245,206,156, - 57,179,238,232,209,163,171, 42, 87,174,124,226,209,163, 71,237,139,211, 44,107,140,145, 42,216, 96,156,190,179,208, 8,249,141, -132,136,156, 54,108,216, 80,222,180, 38,163, 78,167,131,193, 96,200,127, 54, 61,120,158,135,193, 96,192,252,249,243,173,234, 13, -103,140,124,154, 12,132,233,193, 91,122,150, 72, 36, 94,214, 13, 22, 81,190,210,140, 90,142,142,142,129, 0, 58, 85,175, 94,125, -178,249,238,106,229,242,158,149, 74,101,108,146,218, 45, 10, 64,171, 23, 52,254,198,109,206,156, 57, 3,102,205,154,213, 13,127, -175, 89, 89,183, 71,143, 30, 39, 10, 29, 87,215,248,172, 36,162,147, 28,199,253, 10, 96, 51,128, 23, 34,228, 14, 14, 78,195,199, -142, 26,234, 20,255, 76,139,121, 63, 63,195,230,211, 10, 12, 8,117,198,248,247, 92,209,183, 79, 47,199,221,255,219, 51, 28,192, - 70,179, 83,238, 4, 7, 7,211,237,219,183,237, 38,235,191, 69, 99, 0,229,204, 94,107, 0,152, 87,179,188,149, 0, 0, 32, 0, - 73, 68, 65, 84,150,204,122,134,188,223, 11,207, 66,219,205,143, 51, 61,167, 26,183,151, 51,158,199,204,116, 83, 1, 92, 46,205, -224, 88,222,186,134, 22, 63,192,132, 0,112,240,224, 65,214,185,115,103, 50, 61, 91, 84,169, 28,126,104, 72,159,247, 59,118,126, -183, 57, 56,153, 59,238, 61, 5,206, 63, 97, 16,114, 58,112, 96,184,248,231, 9, 6, 33,191,165,208,133,139,140,116, 80,229,240, -207,235,214, 9, 89,252,253,146,207, 4,209, 79,133,216,124, 38, 7,218,220,108,164, 38, 63,193,211,196, 88, 36,197, 63, 68,194, -147,135, 55, 0,154,105,173,230,139, 55, 14, 24,120,228,253, 15,200, 3,121,239,167,197,202,203,146, 53,181,202,219, 85,106,132, -132,164, 75, 12,128, 86,121,187,228,107,151,253, 98,155, 69,105, 18, 81,187,160,160,160,165,211,166, 77,243,191,117,235,150,139, - 82,169, 84, 30, 62,124,248, 84,108,108,172,183,143,143, 79,220,200,145, 35,155, 87,168, 80,161,252,135, 31,126,232,176,115,231, -206,105, 0,134, 90,161, 25,242,254,219,111,157,223,180,106,185,227,243,221,171,161,137,185,142, 67, 73, 74,252,153,146,195,170, -184, 74,105,116,189,114,112,146, 10, 49,183,133,159, 83,167,189, 49,139, 1,244,181,230,222,107, 87,244,173,170, 83,229, 32, 87, -165,195,150, 59,105,170, 99, 9,202,242,228,246, 56,117, 85,248,219, 50, 65,106, 34, 2,157, 37,213,108,185,119, 19, 50,153,229, -213, 83,220,221,221,209,186,117,107, 4, 7, 7, 11, 91,181,106, 85, 23, 64,190,129, 41,172,169,213,106,124,121,158,193,217,217, - 89,238,233,233,233,238,236,236,252, 92,171,213,190,148, 38, 0,120,120,120,116,111,221,186,181,112,251,246,237,207, 30, 61,122, -116,177, 79,159, 62, 15, 93, 92, 92, 10, 68,127, 29, 29, 29, 81,173, 90, 53,124,245,213, 87,194,142, 29, 59,150,168,233,237,237, -221, 46, 34, 34, 2, 68,148,255, 71,187, 48,129,129,129,240,241,241, 65,167, 78,157,132,221,187,119,111,103,190,239,117,252,124, - 26, 35, 90, 5,186,157, 23, 55,253,102,233,120, 43,190,239, 79, 77,209, 37,153, 76,102, 85,167,246, 18, 52,139,156,238,148, 74, -165,249, 81,168,194,215,178,164,201,113, 28,166, 79,159, 14, 34,130, 72, 36,130, 88, 44,182,248, 28, 22, 22,102,235, 56,227,136, -136, 19,139,197,147,133, 66,225, 80,181, 90,237, 47,147,201, 18, 13, 6,195,143,106,181,122,190, 49, 34,234,102,233,103,183, 40, - 77, 71, 71,199,192,123,247,238, 85, 47,234, 77, 81,171,213,168, 91,183, 46,160, 70,116,113,154, 49, 49, 49,129, 85,171, 86,173, - 1,192,180, 68,219,105,198, 88, 43,179,215,230,156,102,140,189,103,252,250,238,131, 7, 15, 2, 97, 52, 90,230,154, 58,173,182, -178,127,121, 23, 92,123,172,194,230,211, 10,252, 62,205, 15,239,206, 79,196, 71, 13,132, 8, 14,112,130, 94,171,171,209,163, 71, -143, 45, 0,106, 32,239,143,228, 7, 61,122,244,168, 41, 16, 8,254, 0,240, 11,128,204,226,238,253,101,176,107,150, 45, 37,120, -145,114, 68,116,192,236,250, 93, 76,175,167, 76,153, 50,117,225,194,133,183,136,232,128,249,118,243,227,204,159, 1,192,244,245, -151, 95,126, 25,178,104,209,162, 5,166, 99,203,250,158, 0,219,166, 14, 93, 82,115, 29,113,230,137, 11,132, 2, 3,132, 28, 65, - 40, 0,192, 8,177,143, 99,144,165,200, 56,203, 30,254,239,145, 53, 66, 84,165, 71,139,250,111,213, 93,178,109,197, 36,238,135, - 51, 57,200, 80,230,226,246, 95, 39,113,249,228, 47,201, 6,189,225, 23, 16,187, 2,112,145,120,200,223, 97,172,244, 93,192,243, -140,150,209, 92, 21, 48, 91,255, 29,136,232,189,154, 53,107, 46,156, 62,125,122,224, 95,127,253,229,172, 80, 40, 82,183,110,221, -122, 71,173, 86,255, 5, 96,229,147, 39, 79, 90,175, 92,185,210, 97,217,178,101,237,235,212,169, 83, 99,215,174, 93, 57, 86,104, -214,155, 56,176,239,249,161, 99,199,201,162,119,173,133, 36, 58, 18,211,175, 63, 51,252,158,148, 51, 13,192, 10,196,101,183, 72, -205,213, 31, 91,222,186, 34, 87,201, 89,140, 32, 55,137,229,191, 20, 22,144, 73,164, 66, 38,148, 65,163,209, 35, 75,195,107, 24, - 99,202,240, 38,193, 90,230,232, 37, 3, 0, 33, 71, 37,254, 76, 50,198,210,137,104,177, 68, 34,153, 78, 68,172,113,227,198,215, -234,212,169,147,237,238,238, 14,149, 74, 5,181, 90, 13,177, 88, 12,149, 74,133,216,216, 88, 92,188,120, 17,238,238,238,214, 14, - 17, 0,144,157,157, 13,103,103,103,240, 60,255,210,154, 6,131,129,214,175, 95,239,120,235,214, 45,199, 61,123,246,120,143, 31, - 63,254,121,173, 90,181,174,244,234,213,235,126,249,242,229,213,215,175, 95,199,185,115,231,144,158,158,142,183,223,126,219, 42, - 77,141, 70, 3,161, 80, 8,149, 74, 5,169, 84, 10,161, 80, 8,189, 94, 15,158,231,243,205, 87,118,118, 54,210,210,210, 32, 22, -139,161,209, 88,149,246, 86,166,152, 34, 90,230, 20, 55,253,102,233,248,146, 40,235, 60,169,226,166, 59, 51, 50, 50,228,110,110, -110,147,173,137,208, 17, 17, 4, 2, 1,196, 98, 49,136, 8,173, 90,181,194,144, 33, 67,208,160, 65, 3,196,196,196, 96,199,142, - 29,184,124,249, 50, 68, 34, 81,254,241,214, 18, 22, 22, 38,144,201,100,231,222,127,255,253,144,105,211,166,201, 42, 85,170,132, -232,232,232,128, 69,139, 22, 77, 62,126,252,120, 55, 34,106,196, 24,227, 75, 20, 50, 77, 9,230, 77, 23,118, 82,171,213,136,142, -126,193, 71, 21,119,206, 11, 4, 5, 5,197,114, 28,119,159,231,249, 51, 0,234, 50,198, 90, 17,209, 97, 0,142,133, 14, 85, 50, -198,222, 35, 34, 5,128, 27, 28,199,221,229,121, 62,214, 82, 58,149,179,179,115,106,252, 83,133,183,167,147, 12,253, 91, 58,225, -221,249,137, 8,111, 36,133, 84, 76,184,243, 40, 25, 65, 85, 43,209,181,179,251, 26, 33,207,100, 53, 78, 74, 74, 2,128, 70, 0, - 30,197,197,197,249,194,104,180,236,252, 55, 40,108,134, 76, 6,106,225,194,133, 93, 10,111,179,100,156, 10,111, 95,180,104,209, - 2,179,215,165, 46,198,178,144, 12, 31,102,140,114,253,109,180, 14, 30, 60, 88,188, 3,225,241,209,129,159,183, 95,120, 87, 75, -129, 33, 13, 91,226,239,232, 16, 67,228,197,115, 0,216,143, 86, 13,198,175,171,156,115,112,252,113,253,130, 49,220,134,147, 57, -136, 75,124,138,115,135,126, 68,106,210,227,205, 0, 27,207, 30,238, 86,216,114,115, 22,175, 81,165, 71, 72,121, 47, 79,228,106, - 25,120, 6,224, 5,179,245,223,128,136,186,214,168, 81, 99,206,249,243,231, 3,115,115,115,157,255,252,243,207,140,136,136,136, -251, 26,141,230,123,198,216, 86,227, 49,251,159, 61,123, 54,151, 49, 6, 23, 23, 23,161, 72, 36,146, 23,151, 32, 74, 68, 13, 38, - 14, 29,112,118,241,250, 77,178,251, 55,175, 97,229,158, 67,200,200,201, 49,156,124,170,250,128, 49,102,250, 47,225,143, 32, 55, -105, 2, 3,171, 40,226, 8,190,142, 34, 31, 34,146, 49,198, 74,156,230,245,173, 24,200,233, 2, 42,227,140, 62, 23, 21, 60,165, - 18, 0,168, 82,163,182,224, 47,149, 14,127, 94,143,134,151,147,139,216,154,123,103,140,205, 32, 34,239, 45, 91,182,112, 58,157, - 46, 59, 38, 38, 6, 62, 62, 62,240,246,246,134,171,171, 43,110,223,190,141,223,127,255, 29,119,238,220, 1,207,243,168, 95,191, -190,149,239,106, 30,207,159, 63,199,245,235,215,209,169, 83,231,241,169,169, 79, 93,220, 61, 60,149,103,207,156, 94, 86, 26, 77, -158,231, 9, 0, 66, 66, 66, 16, 18, 18, 34, 75, 72, 72,240, 63,112,224, 64,249,121,243,230, 61, 9, 12, 12,220,166, 82,253,157, - 62,165, 86, 91,215,196,221,100,156,114,115,115,243, 77,160, 76, 38,131, 88, 44,134, 66,161, 64, 74, 74, 10,178,178,178, 0, 0, -110,110,110,255,136,209,178, 20,161, 42,203,227, 95, 5,197, 77,119, 18,209,199, 0, 38, 91, 56,237, 5,136, 8,122,189, 30, 98, -177, 24, 77,155, 54,197,234,213,171,113,249,242,101,252,242,203, 47, 8, 8, 8,192,192,129, 3,193,113, 28,110,221,186,101,235, - 16,249,243,231,207, 79,254,224,131, 15, 66,182,108,217, 34,139,141,141,197,157, 59,119,224,230,230,134,213,171, 87, 75,135, 13, - 27, 22,116,226,196,137, 25, 0,150,150, 36,100, 94, 93,232,231,231,215,179,110,221,186, 47, 28,227,227,227,227,122,228,200,145, -242, 38, 3, 86,184, 34,209, 2, 25, 51,102,204, 88, 30, 28, 28,188,194, 56, 93, 24, 10,192,145, 49, 22,182,103,207, 30, 2,128, -240,240,112, 70, 68,166, 63, 72, 55,118,239,222,221,230,246,237,219,108,214,172, 89, 22, 63,147, 82,159, 38,173, 95,190,122,195, -242,197,179, 39, 74, 38,116,114, 69,120, 35, 17,100, 98,130,139,131, 8,243, 87,109,212, 93,189,120,250,186,175,175,239, 1, 0, - 31, 36, 37, 37,193,215,215, 55, 27,192, 93,129, 64,240,200, 96, 48, 36,218,115,225,223, 44, 44,121, 17, 99, 84, 57,201,248,181, - 69, 3,101, 45,133, 35, 94, 38,190,252,242,203,144,133, 11, 23, 94, 42,141,166,201,100,153, 39,193, 19, 17, 35,162, 48,198,216, -169,252,140,165, 34,167, 12, 77, 8, 57, 95, 31,111, 47,143, 41, 3, 91,128,231, 1,189, 1,208, 27, 24,148, 57, 42, 68,223,188, -156, 3, 25,237,177,106, 68, 82,201,146,121,211,198, 85,185, 22,207, 33, 49, 93,139, 83,251, 54,176,212,164,199,221,217,195, 93, -131,203,202,100,249,148,247, 58,185,125,195, 92, 92,126,168,129,129,207,243, 89, 60,207,242,191,254, 47, 64, 68,213,188,188,188, -150, 93,184,112,161,146, 84, 42,117,190,119,239,158, 97,247,238,221,137, 26,141,102,157,201,100, 25,249,184, 97,195,134, 58, 71, - 71, 71, 40,149,202, 92,173, 86,155, 93,140,201,242, 15,107, 80,239,244,226,245,155,100,185, 26, 13, 50, 85,106, 8, 60,203, 23, - 54, 89, 32,162,230,109,170, 87,168, 64, 50,103, 48, 0,143, 21,218, 68,107, 76, 22, 0, 56,185,186,113,254,141,194,208,232,179, -213, 80,144, 51, 3, 0, 79,223, 10, 92,155, 81,243,209,113,229, 41, 40, 57,103, 91,172,112, 98,223,190,125,227,107,215,174,157, - 25, 28, 28,156,249,252,249,115, 68, 69, 69, 33, 61, 61, 29, 43, 87,174, 68,116,116, 52,120, 62, 79,206,210, 52, 74, 73,240, 60, -143,244,244, 52, 39,198, 24,210,211,158, 59, 78,155, 54,205,181, 52,154, 6,131,161,192,239, 86,133, 10, 21, 48,114,228, 72,113, - 78, 78,142,219,147, 39, 79, 92,204,247, 89,171,169,209,104, 76, 77,242,192, 24,131, 70,163, 65,102,102, 38, 52, 26, 13,238,223, -191,159,111,178,140,215,255,199, 34, 90,166,175,229,114,121,138, 41, 65, 84, 38,147,129,136, 44, 77,191,149, 73,247,103,211,181, -136,136,201,229,242,162, 22,147,182,136,209,236, 89,196,214,241, 25, 12, 6,136,197, 98, 12, 25, 50, 4,151, 46, 93, 66, 76, 76, - 12, 4, 2, 1,148, 74, 37,114,114,114,208,174, 93, 59, 72, 36, 18,211,117,173,149,101, 98,177,248,227,169, 83,167,202, 30, 61, -122,132,103,207,158,153,146,233, 97, 48, 24, 48,126,252,120,185, 84, 42,253, 24, 54,134,238, 19, 19, 19, 59,220,187,119,175, 70, -225, 71,114,114,114,166,121, 78, 97,105,217,179,103, 15,133,135,135,179,240,240,112,102, 50, 92,214,146, 17, 31,181,254,151,253, - 7,142,125,254,213,146,236, 28,101, 22,170,250,201,145,157,149,137,249, 11, 23,235,206,159, 63,115,114,242,248, 17,205,118,239, -222,189, 8,192, 93,227, 41,119,119,239,222, 61,224,171,175,190,250, 9,198, 54, 15,118,222, 28, 44,121, 17,243,223,189,178,152, -222,179,164, 97,156, 62,148,151, 82,210, 84,113,216, 26,200, 51, 94, 70,211,117, 18,176,114,234,144,130,122,189,229,237,229,121, - 98,203,154,217, 78, 7,110, 2,241,113,143,145,154, 20,139, 70,205,194, 16,125,243, 26,120,157,225,103,118,111,119,137,229,233, - 84,185, 71,245,224, 90,181, 71,181,110, 86, 7, 75, 14,100,227, 94,228, 17,100,164, 38,173, 97,143,118,217, 84, 9, 87,164,126, -149, 30, 33,222,229,188, 78,254,180,118,142,199,225, 40, 14,113,113,143,177,239,167, 21,208,105, 95,240, 0,135,108,213,150,243, - 26, 73,118, 70, 10, 52, 89, 6,200,184, 28,203, 9, 65,175, 17,198,216,253,114,229,202,109, 89,190,124,249,136,102,205,154, 57, -244,233,211,231, 94,122,122,250, 60,198,216, 46,211, 49, 68,244, 78,141, 26, 53,190, 88,179,102, 77, 80, 92, 92, 28,142, 29, 59, -118, 31,197, 36,250, 49,198,226, 5, 2,193,186,223,127,218, 56, 81, 94,165, 38, 86, 78,253, 92,191,231,114,212,251,140,177,195, -102,154,193,109,235, 86, 63, 48,239,139, 79, 57,254,234,111,184, 30,155,130,135,153,234,223,173, 29,119, 76,134, 82, 39,146,202, -225,228, 83, 9,247,178, 13, 98,161, 80,120,105,232,208, 33, 98, 78, 32, 4, 39, 20, 35, 42, 61,215,170,138, 59, 35, 78,151, 46, - 93,226, 4, 2, 65, 1,131,110, 30, 33, 50, 97,109,164,200, 22,172,213, 44,108,180, 76,232,245,250, 23,182, 91,171,169, 86,171, - 97,201, 47, 91,202,213,226,121,254,149,220,127, 73,152, 71,168,204,167, 12, 77,249,116,185,185,185,229,229,114,121,138,105,250, -175,172, 34, 90, 47, 83,137, 88,220,244,165, 45,227,227, 56, 14, 60,207, 67, 44, 22,163,126,253,250, 56,112,224, 0, 60, 60, 60, -224,226,226, 2, 23, 23, 23,200,229,114,120,122,122,230, 27, 45,142,179,186, 74,135,169,213,234,128,128,128, 0,220,191,127, 31, - 50,153, 44,255, 33,149, 74, 17, 18, 18, 2,165, 82, 89, 1,255,169,216, 61,240, 73,175,182,221,214, 70,236,237,127,224,192,193, - 81, 90,117,110,157,154, 53,107,176, 43,231, 79, 92,159, 60,126, 68,199,146,207,182,243, 95,194, 20,141, 50,207,181,154, 50,101, -202,212,210,234, 77,153, 50,101,170,165, 8, 87, 41, 57,137,188,169, 62,211, 51, 0,163,209, 50, 57, 72, 75, 78,210,100,178, 54, -175,158,229,178,247, 47, 32, 62,254, 17,142,237, 90,149,165,211,106,210,121, 94, 23,248,240,206, 53,128,195,143, 86, 13,129, 99, - 77,186,117,106, 67,199,110,105,160,200, 72,197,221, 43, 71, 30, 67, 37,249,178, 12,110, 46,223,100,109, 89, 59,219,227,215,155, -132,184,184,199, 56,188, 99, 69,166, 78,175,125,135, 61,220,109,115, 31, 46,115,250, 73, 36,221,122,213,114,235, 50, 52, 52, 17, - 6, 50,224,227,232,219,239,249,133, 82,183,196, 51,197, 87,134,189,106, 82, 83, 83,231, 59, 57, 57,113, 75,151, 46, 29,156,155, -155, 59,139, 49,150, 31, 85, 36,162,118, 85,171, 86, 93,178,126,253,122,255, 39, 79,158, 72,206,158, 61,155,118,242,228, 73, 30, -192,162,226, 52, 13, 6,195, 36, 34, 18, 52,168, 84, 97,204,213,199, 9,239, 51,198,126, 51,211, 12,233,210,176,246,159,155, 22, -206,112,214,253,185, 7,217, 73,113,248,242,207,120, 5, 0,171,190,135, 68,228,225,229,229, 69,253,250,245,227,179,178,178, 32, -150, 72,120,157, 78, 39,104,222,188,185, 97,220,184,113, 92,114,114, 50, 20, 89,217, 66, 34,242, 96,140,165,149,160, 53, 7,192, -248,230,205,155, 83,211,166, 77, 47,174, 88,177,226,168,105,159, 37, 83, 81,154,136, 86, 73, 88,171,201,243,188,197,191,162, 58, -157,238,133,223,183,210, 68,180,204,177,100,180,254,201,136,150, 37,211, 98,110, 18,205,141, 80,105,114,180,202,154,226,204,148, - 45,227, 51,229,201,137,197, 98, 92,187,118, 13, 21, 43, 86,132, 86,171,133,179,179, 51,156,157,157,225,228,228,132,172,172, 44, -136, 68, 34,155,242,179, 0,240, 50,153,236, 73, 84, 84, 84,141,114,229,202,193, 96, 48, 20, 48, 91,247,238,221,131,163,163, 99, - 2,108,140,104,249,249,249, 29, 49, 86, 29, 22,192,199,199,199,213, 22,157,162, 48,143,100,133,135,135,151,106, 94, 97,237,194, -137, 17, 0, 34,122,244,232,177,229,198,249,131,141,124,125,125, 15, 6, 7, 7, 19, 0,216, 43, 12,255, 27, 20,231, 69, 0,164, - 22,138, 68,105,204, 94,167, 2, 32,227,235, 84, 32,223,136,153,127,173,177,176,237,249,194,133, 11, 79,152,229,119,165,226,229, - 48,181,120, 40,144,183, 92,108, 68,139,130,122,189, 85,222,211,227,196,247, 43,103,185,236,138, 4, 18,226, 30,225,212,207,171, - 51,245, 6,237, 59,224, 89,210,249,227, 63,239, 1, 33, 7, 15,247,156, 2,118, 21, 39,149, 7,143, 6, 13,106, 5,226,151, 91, - 58,164,198,223, 3, 99,252,102,150,242, 83,137,201,217, 37, 97, 50, 89,155, 87,207,242,216,123,141, 16, 31,247, 8,199,118,173, -202,212, 27,180,239,148,166,217,169,137,161, 68,238, 2, 71,217,186,254,237, 27,247, 12,172,234, 15,158,233,192,139, 25, 62,154, -228, 37,188,123, 53,231,151,128,246,130, 93,124, 54, 63, 42,254,252, 63,215,205, 60, 59, 59,123, 46, 17,237,101,140,229,103,177, - 18,209,123, 65, 65, 65, 11,190,253,246,219, 74, 9, 9, 9,206, 87,175, 94, 85,124,247,221,119,143,120,158,159,195, 24, 43,177, - 50,139, 49,246, 57, 17,125,111,222,131,135,136,234, 77, 28,220,247,124,223, 65, 67,101,143,142, 71,192,253, 81, 52,190,248, 51, -209,112, 55, 93,211,135, 49,150, 92,146, 38, 17,121, 72,165,210, 61,135, 14, 29,186,223,160, 65, 3, 82, 42,149,208,233,116,120, -246,236, 25,246,238,221, 27,197, 24,131,187,187, 59, 14, 29, 58,196,247,237,219,119, 15, 17,133, 23,101,182,204,218, 59,144,177, -189,195,219,191,253,246,219,237,142, 29, 59,198, 3, 47,154, 21,169, 84,138,220, 92,219,186,132, 20, 85,197, 88, 26,205,162, 34, - 90,133,183,219,162,105,154,190, 52, 37,193, 23,222,110, 66, 32, 16,128,231,249, 23,182,191, 14,204, 77,139,121,117,160, 53,199, - 23, 71, 73,141, 67, 75, 83,137,104,162,172, 34, 90, 0,242, 35, 90,251,247,239,199,160, 65,131, 96, 48, 24,224,224,224, 0, 39, - 39, 39, 56, 58, 58,226,231,159,127,134,169,253,131, 45, 67,212,233,116, 91, 23, 46, 92, 56,117,253,250,245,114,198, 24, 36, 18, - 73,190,209,154, 53,107,150, 74,171,213,110,133, 21, 70, 43,191,227, 59,207,162,170,149, 43,190,234,208,210, 57, 69,228,107,185, -205,153, 51,103, 0,207,243,221, 80,168,133, 67,161,227, 10,180,126, 40,174,189, 3, 0,247, 57,115,230,124,194,243,188,169,155, -106,129,234, 66,179,227, 76,127, 75,106,244,232,209, 99, 75,225,170, 67, 59,111, 60,165,106,187,240,154, 8,163,191, 27,149, 18, -144,223, 75, 43, 12, 40,198,104, 81, 80,143,224,242,158, 94, 39, 54,174,152,229,178,237, 18,144, 24,247, 16,231,246,175,201, 52, -240, 58,115,243,210,210,166,161, 16, 53,240, 43,239,134,180, 11, 42, 40,158, 61, 1, 24,174,150,238,158,204, 36,171,244,170, 86, -222,203,243,228,166, 85,179, 60,118,255,197, 33,225,201, 35,156, 52,154,193,151, 49, 89,253, 36,146,110, 33,213,253, 55,245,126, -175,133,187, 43,233,161,143,189,141,239, 7,246, 68,100, 87, 45, 90,244,114, 69,147, 78,206, 8,122, 75,214,243,208,198,180,119, -253, 66,105,232, 63, 25,221, 42,100,178,186, 86,170, 84,105,246,197,139, 23, 3,121,158,119, 62,117,234, 84,214,250,245,235, 31, -228,230,230,174, 98,140, 29,180, 65,211,220,100, 53,152, 50,108,224,217, 5,223,126, 47,139,138,188,140, 37, 91,127,133, 74,167, - 49, 28,137,207,238, 97, 62,173, 88, 28, 18,137,100,238, 31,127,252,225, 88,183,110, 93,122,254,252,121,126,228, 69,171,213, 34, - 51, 51, 19, 89, 89, 89, 80,171,213,104,216,176, 33,183,106,213, 42,199, 49, 99,198,204, 5, 48,202,218,241, 58, 59, 59, 67, 44, - 22, 67,171,213,230, 71,180,164, 82, 41, 92, 93, 93,241,252,249,115,236,220,185, 19, 0,138,141,146,137,197,146, 36,142,163,138, -114, 7, 7,181, 76, 38,227,125,125,125, 95, 56,198, 86, 77, 35,241,239,189,247,158,255,156, 57,115,100, 13, 27, 54,204,223,104, -138,104,149, 70,147, 49,150,211,190,125,123,135, 85,171, 86, 33, 48, 48, 16, 26,141,166,128,161,226, 56, 14, 98,177, 24,113,113, -113,152, 55,111, 30, 24, 99, 47,253, 15,141,173,152,155, 22,115, 51,100,204,161,122,193, 8, 89, 27, 49, 42,105,106,208,214, 74, - 68,115,227, 38,149, 74,145,145,145, 33, 39,162,143, 45,181,120,176, 37,162,101, 50, 90,209,209,209,216,178,101, 11, 58,117,234, - 4,119,119,119,164,167,167, 99,215,174, 93,184,125,251, 54, 36, 18, 9,136,200,150,168, 22,223,180,105,211,197,103,206,156,233, -218,167, 79,159,218, 95,124,241,133,188, 78,157, 58,184,123,247, 46,230,204,153,147, 27, 25, 25, 25,163, 82,169,230,192,154,198, -166,198,142,239,166,102,164, 86, 85, 29, 22, 58,167, 48, 69,180,119,120,207,226,193, 5, 91, 63, 20,104,239, 96,206,185,115,231, - 42, 87,170, 84, 41, 24,121,149,132,192,139,213,133,230, 92, 78, 74, 74,106, 12,123,213,161,157,215, 8, 99,236, 20, 17,153,162, - 89, 38, 94,172, 58,124,241, 76, 26,223,103,224, 48,151,173,151, 8,113,177, 49,184,114,104, 93, 97,147, 85, 34, 68,212,214,188, -215,134, 76,238, 88,135,167,188,114,102,197,179, 56,128, 9,108, 54, 90,133, 53,193,248,207,251, 12, 24,230,177,253, 10, 33, 49, -238, 1,254,220,183,214,102,147,101,174,217, 79, 34,249, 74, 36,160,233,157, 91, 53, 16,183,124,171, 58, 28,159, 62, 70,114,124, - 34,118, 70,167,166,197,164,171,135,254, 73, 90,196, 62, 80,127,223,233, 19, 15, 15,119, 31, 17,186,140,240,244,184,240,171,226, -151, 10,239,112, 90,166,101, 11, 19,207,178, 89, 22,199, 89, 6,148,164, 73, 68,213, 92, 92, 92,150, 70, 70, 70,150,147,201,100, - 46, 87,174, 92, 49,108,216,176, 33, 46, 55, 55,247,107,198,216,142, 82,106,250, 55,174, 94,245,212,130,181, 27,101,217,202, 28, - 40, 53, 90, 72,189,125, 13,123,207,223,236,206,138,104,170, 89, 88,147,136,218, 12, 30, 60,184, 94,211,166, 77, 57,115,147,165, -209,104,160, 80, 40,144,149,149, 5,133, 66, 1,133, 66,129,132,132, 4,180,110,221,154,171, 87,175, 94, 29, 34,106,195, 24, 59, - 81, 88,211,172,189,195, 84, 0, 28, 17, 93,190,118,237, 90,118,199,142, 29, 33,151,203,161, 84, 42, 17, 16, 16, 0,189, 94,143, - 67,135, 14, 33, 50, 50, 82,201,243,252, 41, 0,215,138, 27,167, 74,149, 19, 64, 68,156, 42, 39,167,254,128, 1, 3, 90, 79,152, - 48,161, 64, 73,122,249,242,229,225,225,225, 97,147, 38, 0,164,165,165,213,250,237,183,223,198, 93,187,118,237,243, 78,157, 58, -185, 78,157, 58, 85, 90,185,114,101, 24, 12, 6,174,180,154,233,233,233,174, 87,175, 94, 93,214,178,101,203, 79, 59,118,236, 40, - 92,176, 96, 1, 92, 93, 93, 97, 48, 24, 32,151,203,161, 80, 40, 48,103,206, 28,156, 61,123, 86,207, 24, 91,155,153,153,249, 69, - 73,154, 47,139,133,239,187,197, 8, 80, 81, 70,200,210,241,175, 99,156,133,140, 27,220,220,220, 38, 3,152, 76, 22, 90, 60, 88, -171, 9,252, 29,209, 18, 8, 4,120,252,248, 49, 54,108,216,240, 66, 31, 45, 83,251, 7, 75,218, 69,220, 59, 59,121,242,164,129, -136,154, 93,185,114,101,114,255,254,253,135, 42,149, 74,127, 71, 71,199, 68,157, 78,247,163, 74,165, 50,245,209,178, 88,189, 91, -212,251,169, 84, 42, 99, 45, 85, 29, 22, 62, 6,112, 43, 86,179, 80,123,135, 2, 45, 28, 10,157, 86,160,245, 67,225,246, 14,230, -154,205,155, 55,127,196,113,220, 29,227, 20,252, 29, 20,170, 46, 52,211,172,145,148,148,212,216,215,215,247, 20, 0,135,194, 85, -135,255,196,103,178, 93,243,255, 15,172,164,134,165,150,207,130,236,248,197,199,144,200,211,112,253,247,205, 54,155, 44, 75,168, -115,115, 98,102,108,127,242,150, 70,157, 11,101,102,202, 93,246,104,135, 77, 97,125,139, 16, 28,143, 95,142,133,204, 49, 3,127, - 29,255, 33,195, 96,200,125,135,197,252,239, 90,201, 39, 22, 37,135, 47,191, 61,188, 71, 76,174, 30,184, 62,110, 16, 18, 51,148, - 56,252, 48,125, 23,203, 81,143,138, 48,174,235,231,223,140,206,108,154,150,188, 46,244, 35,215,158, 94, 21, 68,248,102,226,143, -144, 77,241, 20, 55,121,183,213, 63,186, 6,162, 41, 65,126,229,202,149, 35, 67, 67, 67,157,122,246,236,121, 47, 45, 45,173, 64, -130,124, 41, 52,227,137,232,219,131,235,191,158,232, 89,247,109,172,249,106,146, 97,251,249,155, 5,170, 16, 75, 66, 44, 22,135, - 77,153, 50, 69,172, 84, 42, 95, 48, 89,133,141,150, 66,161,192,245,235,215, 49,112,224, 64,233,181,107,215,194, 0, 20,238, 40, -109, 26,215, 12, 34, 90,143,188,181, 14,147, 35, 34, 34,154,237,219,183,175,217,248,241,227,197,157, 58,117,194,133, 11, 23,112, -236,216, 49,173, 86,171, 61, 15,224, 60,179,114, 89, 27,150,215,127,232, 42, 17,221, 92,178,100, 73, 51,129, 64, 48,195,180, 47, - 42, 42, 10,155, 55,111, 46,141,166, 30,192, 50, 34,250, 54, 34, 34, 98,198,241,227,199, 7, 15, 24, 48,192, 69,167,211, 33, 58, - 58, 26, 63,252,240, 67,105, 53,199,149, 43, 87,110,250,161, 67,135,126, 60,122,244,232, 7,253,250,245,227,198,142, 29,139,213, -171, 87,227,127,255,251, 31,111, 48, 24,246,137, 68,162, 1,169,169,169, 47,181,142, 98,105, 49, 70,128, 18,145,215,241,221,218, - 53, 15, 75,212,125,153,169, 65, 43,199,109,245, 18, 64, 69, 97,186,143,176,176,176,252, 40, 35, 99,172, 64, 94,157,201, 96,217, - 58,117, 8,192,205,248,115,186, 22,192,106, 20,236, 10, 47,192,223,157,227,173, 85,172,157,164,118,139,130, 26,209,197, 47, 42, -237, 6, 48, 88, 14,101,253, 77,198,140, 25, 51,150,207,156, 57,115, 57, 21,106,225, 96,126, 80,225,214, 15,179,103,207, 70, 81, -237, 29, 0,164,207,152, 49, 99, 49, 0, 4, 7, 7,147,113,186,176, 17,140,213,133,102,154, 91,140,219, 29,102,205,154,213, 31, - 64,113,154,118,236,188, 54,138,201,209, 98, 83,163,206,108,215, 1,240, 4,113, 95,178, 7, 59, 45, 54,168,179, 5,198,179, 41, -127,108,155,181, 26, 12,233,204,160,183,170, 31, 77,137,240,130,105, 81,103,182,241, 0,185,129,184, 41,236,193,255, 94,122,156, -228,234,129,172, 57, 35,241,191, 91,137, 44, 89,169,251, 48, 66,163, 41, 16,185, 49,230,100,245,242, 11,165,157,238,126,162,189, -227,222,241,164,131,105,253, 95,246,178,101, 66,106,106,234, 2, 39, 39, 39,193,178,101,203, 6,171, 84,170, 2, 9,242,165,133, - 49, 54,137,136, 4, 77,170, 5,142,185,116, 63,182,155,181,211,133, 38,136, 72,226,231,231,119, 51, 55, 55, 23, 68, 4,181, 90, -157,111,176,178,178,178,144,153,153,153,255, 90,171,213, 34, 53, 53, 21, 1, 1, 1, 32,162, 98,123,106, 21,250,131,120,154,136, - 34,231,204,153,211,106,206,156, 57,245,145, 23, 21, 58, 93,218, 41, 51,163,225, 57, 45,151, 59, 36, 18,145,191, 88, 34, 85,158, - 59,119,238,248, 75,106,230, 32, 47, 82,242,205, 55,223,124, 51,223,209,209,177,113, 84, 84,212,239, 47,163,105, 52, 81,221, 61, - 61, 61,253,182,108,217,178,123,211,166, 77,111, 11,133,194, 11, 68,212, 35, 35, 35,227,159, 94, 84,122, 56,172, 91,227,208,252, -185, 68,202,186, 73,233,171, 48,110, 6,131, 33,123,250,244,233,249, 90,166,123, 43, 28,189, 50,189,214,106, 95, 44,141,182, 68, - 73,121,110,133, 40,193,100, 80, 54, 0,228,173, 93,152,183,172,142,181,139, 74, 3, 40,114,237,204,153, 51,103,178,217,179,103, - 19,199,113,251, 0,220,229, 56,238,126,225,100,117,243,125,179,103,207,198,204,153, 51,217,172, 89,179,138, 28,169, 73,243,246, -237,219, 76, 32, 16,252, 14,224,145, 64, 32,120,108,174,107,190,221,116, 78,113,154,118,236,188, 46,138, 52, 90,236,225,238, 56, - 0,131,202,242, 98,236,209,238,227,200, 75,100, 44, 59,205,199, 59, 98, 1,244, 43, 43, 61, 30, 88, 58,180, 73,216, 68, 0,196, -128,111, 10,155, 44,115, 18,207,176,125,190, 45,104, 97,147,119, 91,141, 7, 0, 2, 22,148,213, 56, 94, 6, 75, 9,242, 47,139, -165, 4,121,107, 49, 24, 12, 71,229,114, 57, 41,149, 74,168, 84,170, 2,209, 43,133, 66,129,156,156, 28,100,103,103,231, 39,177, -103,103,103,155,166,193,108,250,111,212,104, 86, 14, 19,209, 81,198, 88,169, 87, 20, 48, 71,165,202,169, 8, 0, 68, 36, 40, 43, - 77, 99, 65,194,208,178,212,124,254,252,121, 34,128,230, 65, 65, 65,146,152,152,152,215, 95, 98, 88, 4,101, 17, 29,122,213,148, -181,113, 3, 0,173, 86, 91,171,172, 53, 25, 99,119, 75, 62,202, 38,193, 31,218,183,172, 45,128,121,239,160,146, 22,149, 6, 0, - 80, 54, 24,126, 40, 98,140,140,242,156, 36, 3,176,229,193,131, 7,129, 60,207,199, 90,136, 44, 21,216, 55,107,214, 44, 48, 75, -101,180, 47,106, 2,192, 47,113,113,113,126, 6,131, 33,169,144,110,129,237,197,105,218,177,243, 58,177,101, 9,158,255, 23,108, -213,104,102,162,132, 69,141,205, 73,250,147, 77, 3, 48,237,213,141,168,116,148,165,201, 50,211,180,217,100, 1,128, 78,167,251, - 3, 0,202,149, 43,135,114,229,202,149,116,184,249,121,165,185, 28,202,202,188,188,137,154,255, 38,147,101,231,223, 13, 75,143, -138, 3,240, 85,137,199,149,220, 13,190,224,241,127,155,155,116, 0,233, 69,120,157,226,246, 21,167, 9, 0, 10, 0, 10, 11,231, - 22,181,221,142,157,127, 20,155,146, 3,236,216,177, 99,199,142, 29, 59,118,236, 88, 15, 1,104,107,105,135, 45,213, 4, 68,100, - 81,163, 56, 74,210,183,107,218, 53,237,154,118, 77,187,166, 93,211,174,249,223,211, 44, 73,187,112,245, 50, 43,163,229,185, 94, - 39, 5,198,109,170,132,121, 21, 15, 0,109,237,154,118, 77,187,166, 93,211,174,105,215,180,107,218, 53, 75,121,157, 97,175,227, - 58,175,242, 97,207,209,178, 99,199,142, 29, 59,118,222, 32,218,213, 32, 95,161, 1,220,225, 24,150, 80, 22,122,239, 5, 81, 5, - 0, 40, 43,189,255,143, 16,145, 47,128,206,102,155, 14, 50, 99, 49,144,221,104,189,161, 16, 81, 53, 0, 83, 1,152,175, 69,118, -137, 49,182,176,208,113,219, 0, 56,152,109, 82, 2,152,195, 24,187,111,203,245, 4, 2,193,194, 86,173, 90,141, 58,123,246,236, -215, 58,157,110, 78, 41,198, 27,232,235,235,187,152,136, 26, 2, 16, 17,209,131,148,148,148,133, 58,157,174,212, 13,239,136,168, -138,143,143,207, 34, 0,111,113, 28, 39, 34,162,152,148,148,148,121, 58,157,174,240,114, 31,182,104, 58,123,123,123,183, 96,140, -249, 0, 16,136, 68,162,231, 9, 9, 9, 23, 89, 41,171,231,122,204,190, 45, 86, 40,245, 34, 0,112,113, 20,234,118,207, 12,214, - 90,187,173,180,247, 96,199,142,157,255, 8, 68,130,194,155, 58, 84,197,124, 98,248,194, 0, 80,135, 42,180,234,200, 35,124, 97, -233, 84, 0,128,165,130,155, 66,154, 29,170, 98, 62, 99,121, 26, 29,130,104,217,145, 7, 37, 20,119, 89,161,105,226, 59,128, 27, -102,205, 2,231,175,160, 48,232, 31,160, 51, 51,155,226, 52, 54, 96,254, 14, 40,193,104,245,174, 65,190, 6, 33,132,187,163, 88, -156,241, 68,103, 0,245, 1, 84, 3,112, 31,192, 53,198, 88,214,203,140,236, 77,209,252, 23, 50,131, 49,214,215,124,131,165, 62, - 68,239,188,243,206,251, 71,143, 30,117, 48, 45,207,194,243, 60,228,114,185, 30,192, 64,107, 47, 68, 68,229,251,244,233, 51,229, -251,239,191, 71,207,158, 61,167, 19,209,114,198, 88,182,181,231,123,120,120,132, 87,169, 82,101,245,198,141, 27,203,189,253,118, - 51,146, 72, 36,120,240, 32,198,127,248,240,225,117,188,189,189,247,165,164,164, 12,181, 86,203,132,167,167,231,199, 85,171, 86, -253,102,195,134, 13, 94, 45, 91,182, 4, 17, 33, 50, 50,210,127,220,184,113,245,125,124,124,118, 36, 39, 39,127,106,171,166,151, -151, 87,245,170, 85,171,182, 89,179,102,141,188, 69,139, 22,144,201,100,184,118,237,154,211,136, 17, 35,124,124,124,124,162,147, -147,147, 79,217,162,215, 99,246,109,241,141,200, 95, 63,208,107,213, 75, 0, 64, 40,150, 78,106,182, 92,241,107, 90,228,233,174, - 37,109,235, 49, 27,191,216,205,150, 29, 59,118,204,249,216, 15, 62,140, 97,226,209, 31,190,226, 0,160,253,224,185, 99, 63,246, -195,215, 91, 19, 81,226,122,179, 86,234,125, 49,160, 2, 86,111, 73, 64,202,203,140,243, 59,128, 27, 39, 20,142,109,210,180,169, -215,232, 63,255,140,209, 2, 63,190,140,222,155,130,209, 92,189, 64,145, 70, 43,188, 54,205,129, 16, 83, 1,208,123,213,104,199, -177, 71,130, 51,237,218,181, 11, 26, 50,100, 8, 53,104,208, 0,145,145,145,213,119,236,216,209, 89, 40, 20,198, 24, 12,134, 72, - 0,183,152,149, 93,173,137, 72, 4, 32, 68, 32, 16, 52,252, 55,107,254,203,113, 4, 0, 34, 74, 1,112,201,184,237, 82,225,131, -254,248,227,143,253, 66,161,208, 20,209,106,162, 84, 42,189, 81, 48, 10,102, 13,149,116, 58, 29,238,220,185, 3,142,227, 68, 0, - 42,227,197, 37, 53, 44, 66, 68,254,254,254,254,235,206, 95,138,244, 36,161, 28,233,185, 0,114,181,144, 56,121,227,251,205, 17, - 30, 19, 62,251,180,187,139,139,203, 25,133, 66,241,147,181,131, 33,162,202, 1, 1, 1,203,175, 95,191,238,233,224,224, 0,158, -231,145,149,149, 5, 31, 31, 31,108,220,184,209,109,194,132, 9,125,229,114,249, 73,149, 74,245, 63, 27, 52,157,171, 86,173,218, -230,230,205,155,114,211,130,210, 26,141, 6,254,254,254,216,182,109,155,116,236,216,177,181,164, 82,105,188, 90,173,126,104,173, -166, 66,169, 23,233,181,234, 37, 91,214,206,170, 8, 0, 3, 62,157,181, 68,146,229,114,200,154,109, 10,165,254, 32, 0,187,209, -178,243, 90, 33,162,134, 94, 94, 94,123,158, 61,123,118, 10,192, 80, 86, 6,145, 6, 34,242, 19, 10,133,149, 25, 99,110,198,215, - 25,122,189,254, 17, 99,172,212, 13,117,189,130,218,116,133,212, 97, 16, 24, 95,159, 3, 64, 28,119,205,160,205,217,252,236,238, -137, 95, 95, 74, 83, 34, 31, 12,176,250, 28,192, 19,199, 93,231,245, 57, 27, 83,111,159,176,169, 65,243,171,228, 66, 38,106, 84, -245,177,126, 97,204,178,208,235, 93, 5,190, 28, 15,110,219, 99, 88, 61,173, 56, 6,232,244,217,103,159,249,124, 58,106, 20, 13, - 26, 56,176,218,169,179,103,169,181, 45,171, 21,188,129,176, 98, 18,246, 45, 26,173, 30,181,201, 29,192,228, 29,171,167,114, 66, -129,128,250,124,182,176,239,166,181,203,184,118, 93,123,228, 79,159,132,134,134, 34, 52, 52,148,150, 44, 89, 82,237,247,223,127, -175,182,109,219, 54, 61, 17, 93,103,140,237, 44,234, 98, 29,131, 72,197, 3,178,206, 53,133,202, 62, 95,253,180,161,105,211,166, -144, 74,165,120, 25, 77, 0,104, 95, 77,240,176, 83,211,160,235,125,198,204,136,125,251,237,230,172, 44, 52,223, 32, 46, 49,198, -186, 1, 0, 17,185, 7, 4, 4,180,208,235,245, 50, 0, 16, 10,133,185, 0,198, 48,227,210, 65, 68,180,143,231,249,247,173, 21, - 38, 34, 14,192,204,247,223,127,127,250,232,209,163, 17, 16, 16,128,177, 99,199, 66,167,211, 69, 18,209, 12, 0,139,152, 49, 91, -177, 40,202,151, 47, 63, 99,221,186,117, 30, 66,137, 35, 26, 76,126,132,164, 12, 61, 0,192, 73, 10,236, 31,201, 48,118,236, 88, -151, 43, 87,174,204, 3, 96,181,209, 42, 95,190,252,156,141, 27, 55,122, 56, 56, 56,128, 49,134,236,236,108,100,101,101, 33, 59, - 59, 27,217,217,217,248,244,211, 79, 93,162,163,163, 23, 3,176,218,104,121,123,123,183, 88,179,102,141, 92, 38,147, 33, 59, 59, - 91,172,213,106, 41, 43, 43, 11, 57, 57, 57, 76,163,209,104,199,140, 25, 35,189,117,235, 86, 24, 0,171,141,150,157, 87, 11,229, - 77, 87,124, 40, 18,137, 62, 10, 10, 10,106,116,255,254,253,191,244,122,253,207, 0,126,126,217,127,166,136,232, 93, 63, 63,191, -249,137,137,137,107, 24, 99, 17,101, 51,226,127, 63,222,222,222, 63,159, 59,119,174,226,186,117,235, 6,126,253,245,215,135, 96, -195,239, 80, 97,140,255,252, 54,107,210,164,137,215, 71, 31,125, 36,242,241,241, 65, 78, 78, 14, 98, 98, 98, 28,142, 31, 63, 94, - 78, 38,147, 61, 87,171,213, 86, 47, 59, 5, 0, 94, 53, 90, 56, 65,232,178,163, 89,155,182, 45,123,118,255,208,217,219,211, 21, - 42,141, 1,247, 99,147, 2,126, 59,180,191,181, 95,157,206,231,180,218,204,222,207,238,254,105,117,196,221,164,217,166, 99,151, -150,109,223,125,215,217,213,205, 21,153, 74, 45, 30, 60, 78, 8, 60,113,236,215, 80,223, 58,157, 79,243,164,235,151,114,227,232, -107, 95,152,221,156,177,128, 80, 41,243,172, 87,191,121,131, 43,237,135,204,107,196, 24, 3,199,176,170,112, 52,107, 44, 32, 92, - 5,232,109,213, 3, 99,140, 8,203,204,163, 89,249,211,138, 28,168, 67,101, 20, 63, 77,105,164, 61, 32,117,243,240,104, 58, 98, -216, 48,202, 82, 40,112,237,218,181,156,214,133, 76,214,242, 10, 16,159,230, 80,105, 95, 28,238,217,240, 22,252,171, 41, 92, 29, -105,254,218,234, 62, 90, 14, 14, 14, 22,183,187,186,186,162, 77,155, 54, 88,184,112,161, 16, 64, 67,243,125,172,240, 34,171,128, -244,192,250, 47, 26,169, 5,193, 0, 0, 32, 0, 73, 68, 65, 84,225,234, 40,229, 2, 2, 2,156, 93, 92, 92, 94, 90, 51,111, 35, - 95,185,121, 0,123,239,242, 79, 83, 7, 30,223,246, 77,136, 50, 43, 67, 84,248, 16, 39, 39, 39,212,168, 81, 3,211,167, 79,183, - 78,243, 37,121,221,154,190,190,190, 53, 67, 67, 67, 27,254,113,234,148, 91, 98, 98,162, 52, 49, 49, 81,122,244,143, 63,220,154, - 53,107,214,208,215,215,183,166,153,134, 45,227,156,187,118,237,218, 25,251,246,237,227, 66, 67, 67,225,238,238,142, 54,109,218, -224,208,161, 67,194,175,191,254,122, 1,128,233, 37,141,147,227,184,150,161,161,161, 4,198,144,156,169,199,197,133, 53,113,109, - 89, 48,178,114, 25,210, 50, 21, 80,169,114,225,224,224, 32, 51, 78,247, 90,123,239,205,155, 53,107, 70, 0,242,205, 85, 86, 86, -222, 35, 59, 91, 9,141, 70, 11,169, 84,234, 76, 68, 50,107, 53, 25, 99, 62, 45, 90,180, 0, 0,104,181,218,252,255,240, 50, 50, - 50, 40, 51, 51, 19, 26,141, 6, 34,145, 72, 76, 68,197, 78,183,155,107,186, 56, 10,117, 66,177,116,210,128, 79,103,197, 13,248, -116, 86,156, 80, 44,157,164,113, 86, 24,172,217,230,226, 40,212, 89,210, 44, 43, 74,210, 36,162,114, 2,129,224,135,160,160,160, -104,129, 64,176,133,136,124, 94, 70,147,136, 26, 19,209, 2, 7, 7,135,227,181,106,213,138,115,116,116,252,131,136, 22, 17, 81, -179,210,104, 18,145,196,193,193,225,143, 5, 11, 22,236,254,235,175,191,122,254,254,251,239,149,111,220,184,209,125,201,146, 37, - 59,156,156,156,206, 16,145,229, 15,172, 18,198,105,162,114,229,202,155, 46, 94,188,216,184,121,243,230,223, 19,145,180,164,227, -173,209, 36, 34, 1, 17,189, 69, 86,174, 53,244,186,191,239, 68,228,215,160, 65,131,138, 50,153, 12,109,219,182, 5,128,176,151, -212,108, 54, 98,196, 8,159, 9, 19, 38,136,174, 93,187,134,239,191,255, 30,251,246,237,195,211,167, 79,209,165, 75, 23,241, 59, -239,188,227, 35,149, 74, 45,126,255,139,212, 20,186,236,248,108,220,248,142, 19,199,126,226,124,253,137, 22,155,143, 63,193, 47, -231,147,240, 52, 71,130,174,221, 7,184,118,232,214,171,131, 68,234,186,195, 86,205, 41,147, 39,119, 28, 54,184,175,115, 84, 18, -143,253, 23,146,113,225, 78, 38,244, 34, 55,116,234, 62,212,189,126,139,142,157,133, 16,253,104,227,189,151,154,162, 52, 55, 2, -111,127,246,217,103,229, 38, 45,219,250,167, 95,227, 15, 87,165,166, 35,212,220,248, 84, 7,220, 60, 28, 29, 63,188,211,186,245, - 39,242,188, 53, 31,139,213, 44,160,215,176,219,234,167,233,104,101,158,159,213,202, 3,213,140,211,138,130,163, 63,124,197, 49, -194,216,143,253,224, 83,156, 38, 0,156, 4,122,126, 54,126,188,200,213,221, 29,107,215,174,133, 90,169, 44,144, 51,251,110, 69, -116, 60,238, 32,140,175, 18,236, 31,221, 38,144,206, 88,255,206,188, 25, 88,154, 62,204,255,163,113,240,224, 65,214,185,115,103, - 2,128,221, 81, 44, 61,188, 54, 45,238, 53,122,193,116,226,136, 85, 10,105, 30, 85,161,106,109,165,167,167, 39,114,114,114,160, - 86,171, 33, 22,139,145,155,155,139, 39, 79,158,224,194,133, 11,112,119,119,183,105, 48, 10,133, 2, 78, 78, 78,112,114,114, 42, - 19,205, 47, 7,182,149, 62,136, 75,149, 30,185,112,178,245,202, 81,255,123,187,234, 91, 97, 55,222,237, 53,246,166, 75, 57,191, -220, 27, 55,110,224,220,185,115, 72, 79, 79, 71,211,166, 77,109, 26,231,191,152, 75,198,207,235, 75, 68,228, 30, 26, 26,234,127, -228,248,105,247,236, 92,222,229,113,138, 78,196,243, 60, 28, 28,124,245, 59,247,236,207,236,217,189, 43, 17,209, 83, 0,151,140, -230,246,133, 41, 70,115,140, 6,165,102,120,120,248,148, 81,163, 70, 33, 38, 38, 6,159,124,242,137,234,210,165, 75,207,155, 55, -111,238,185,113,227, 70,249,132, 9, 19,112,234,212,169,153, 68,180, 23,192, 35,198,152,197,181,218, 24, 99, 98,177, 88, 12,189, -209, 54,104, 13, 60, 76,254, 94,161, 80,128,169,210, 33, 22,139, 5, 0,202, 1,176, 42,143,142,231,121,177, 72, 36,202, 55, 89, - 79, 82, 20,120,242, 52, 7,138,108, 13, 84, 42, 61, 52, 42, 6,129,131,167, 16,120,236, 13,224,177, 53,154, 0, 4, 50,153, 12, -122,189, 30, 89, 89,121,195, 48, 69,202, 52, 26, 13, 50, 51, 51, 33, 16, 8,156, 0,184, 0, 72,179, 70, 48, 47,201, 29,191, 24, -167, 1,113,121,235,251, 94,247, 15,126,169, 13,159, 21,157,191,205,197, 81,168,219, 51,161,150,192,211,191,254,217,183,122,254, - 24,108,218,246, 79,230,103, 17,145,180, 92,185,114, 39,118,239,222, 93,171, 90,181,106,120,244,232, 81,112,143, 30, 61,154, 18, -209, 91,204,198, 53, 25,137,200,129,227,184,197,131, 6, 13, 26,213,167, 79, 31,170, 94,189, 58,132, 66, 33,244,122,189,127, 76, - 76, 76,155, 93,187,118, 77, 22, 10,133, 27, 13, 6,195,231,214,230,253, 17, 17, 39,145, 72,118,110,216,176,161, 85,211,166, 77, -177,101,203, 22, 92,186,116,137,111,220,184, 49,215,191,127,127, 4, 6, 6, 54,237,223,191,255, 47, 68,212,169, 52,145, 45, 34, - 10,252,248,227,143, 43, 10, 4, 2, 52,111,222, 92,124,238,220,185, 6, 0,206,217,170, 83, 72,211,201,223,223,255, 84, 88, 88, -216, 91,199,143, 31,191, 74, 68, 97,182,228, 57, 18, 81, 55, 63, 63,191, 37,174,174,174, 86,127, 40, 42, 20,138,156,132,132,132, - 47,152,245,235,157,190,221,176, 97, 67,196,198,198,162,102,205,154, 16,139,197,205,136,104, 56,128,142, 0,166, 49, 27, 86,155, - 32, 34,191,102,205,154,121,133,133,133,209,162, 69,139, 0, 0, 34,145, 8, 6,131, 1, 28,199, 65, 36, 18, 33, 56, 56,152, 30, - 62,124,232, 65, 68,126,214, 76, 35,122, 5,181,233,218,252,221,142, 45, 91, 53,173,199,125,189,231, 62, 12,188, 1, 2,210, 67, - 72, 60,120,157, 20, 82,177, 0,213, 67, 26, 9,238,220,186,222,212,171, 70,187,174,207,238, 30, 43,113, 26,209, 43,168, 77,215, -142, 93,223, 15,173, 85,179, 58,183,242,151, 7,200, 72,136, 54, 36,220, 62,253,140, 19,112,168,213,240, 29,175,234,181,223, 18, -188,213, 52, 76,148,248,232, 86, 27,143,106,173,219,166,221, 63, 85,230,198,202, 26,102, 3, 2,255, 10, 94, 31,118,105, 23, 38, - 78, 74, 76, 84,238,218,243,235,205, 28, 29, 46, 0,192, 41,128, 58, 1,245,234, 54,105,210,122,227,162, 69,158,190,190,190,162, -126,125,250,232,191,187,122,245,234, 48,192,226,212,239,108, 64,224,229,227,211,118,196,136, 17,130,164,196, 68,182,235,231,131, - 55, 76,122, 0,224, 0,212,173,231, 31,220, 5,202, 59, 54, 77, 83,118, 5, 36,222, 62, 62,181,134, 15, 31,142,228,196, 68,108, -137,136,200,206, 5,206, 3,121, 81,172,253, 2,172,169, 93,213,103,208,164,161,239, 83, 69, 95, 47,140,152,249, 93,179, 54,218, -167, 85, 79,224,239,200,150,185, 23,121,211, 48,153,172,194,102,171,200,255,206,247, 68,177, 25, 46, 18,170,188,107,215,118, 46, - 53, 75,171,140,137,137,129,151,151, 23,124,125,125,225,234,234,138,168,168, 40,252,241,199, 31,184,123,247, 46,120,158, 71,253, -250,245,109, 26,208,179,103,207,112,253,250,117,184,187,187,151,153,102,213,138,229, 48,186, 98, 57,113,202,115,133,248,248,165, -187, 77,191,251,178,123,109, 46,184,251,166,220,220,191, 61,128, 70,243,223, 88,161,196,188,186, 48, 32, 32,160,197,230,205,155, -197,106, 61,156,171, 15, 63,191, 84,153,107,112, 4, 0, 71,153, 64, 25,185,164,198,231,115,231,206, 85, 14, 30, 60, 56,248,201, -147, 39, 11,139, 86,204, 67, 34,145,204,127,239,189,247, 38, 50,198, 68,159,125,246, 25, 0, 96,192,128, 1,138, 11, 23, 46, 84, -103,140, 61, 37, 34,191, 33, 67,134,220, 59,113,226,132,195,248,241,227, 5,122,189, 62, 74, 40, 20, 50, 34,154,195, 24,155, 85, - 88,143,227,184, 43, 87,175, 94,173,228, 23, 88, 3,129,158, 28, 66,167,231, 45,215,230,233,192, 35,254,241, 3,220,190,113, 9, - 62, 62, 62,174,190,190,190,209, 53,107,214,212, 38, 36, 36, 76,206,206,206, 94, 87,220, 24,197, 98,241,181,200,200, 72,223,192, -192, 64,100,103,103, 35, 62, 53, 7, 99,127,118,128, 66,149, 23,196, 16, 65,133,183, 42,214,112,150,115,154, 75,222,222,222, 90, -141, 70,243, 85, 70, 70, 70,177,203,136,136, 68,162,231, 55,110,220,112, 10, 8, 8, 64,110,110, 46, 75, 75, 75, 35,165, 82,137, -172,172, 44, 58,120,240,224, 7, 73, 73, 73,141, 43, 87,174, 76,254,254,254,115,170, 85,171,166, 74, 72, 72,248,196,154, 28,176, -221, 51,131,181, 68,100, 16, 10,133, 95, 15, 27, 54,172,231,222,189,123,175,236,153, 85,171, 27, 99, 76, 11, 0, 68,228, 26, 18, - 18,114,164, 94,189,218,126, 17,203,234,174, 98,140, 45, 45, 73,243, 53, 48,104,234,212,169,181, 60, 60, 60, 48, 98,196, 8,204, -158, 61, 27, 51,102,204,168, 54, 98,196,136, 97, 0,150, 91, 43, 66, 68,114, 31, 31,159,203, 43, 87,174, 12,110,209,162, 5, 14, - 29, 58,132,237,219,183,227,225,195,135,250,202,149, 43, 11,155, 54,109,138,153, 51,103,162, 67,135, 14,159,140, 25, 51,166, 53, - 17, 53,176,210,124, 12,158, 57,115,102,183,150, 45, 91, 98,224,192,129,234,147, 39, 79,246, 4,112,244,216,177, 99,239,156, 58, -117,106,207,214,173, 91,229, 11, 22, 44,104, 59, 97,194,132, 17, 0, 86,151,226,254, 63,104,213, 42,111, 13,229,150, 45, 91, 98, -201,146, 37, 29,240, 18, 70,139,136, 36,158,158,158, 7,183,108,217,242, 86,141, 26, 53,208,175, 95,191, 6, 61,123,246, 60, 72, - 68,237, 24, 99, 86,125, 32, 85,168, 80, 97,241,190,125,251,130,138,154, 89,176,132, 90,173,246,248,240,195, 15, 23, 1,176,201, -104,109,219,182, 13, 95,124,241, 5,234,215,175, 95,239,237,183,223, 94, 63,124,248,112,132,135,135,191, 75, 68,222,140, 49,165, - 53, 66, 66,161,176,114,151, 46, 93, 68, 63,255,252, 51, 0,160, 85,171, 86,104,219,182, 45,110,222,188,137,179,103,207, 66, 32, - 16,192,209,209, 17, 45, 90,180,144, 36, 38, 38, 86, 6, 80,162,209,226,164, 14,131,186,117,233,228,188,255, 66, 18, 12,188, 30, -141,130, 92,208, 52,184, 60,238,196, 43, 16, 25, 29, 15,131, 70, 12, 23, 15, 79, 52,107,221,222, 35, 57,225,225, 32, 0, 37,231, -107, 73, 29, 6,125,212,173,179,211,254,243,137,200, 72,188,205,238, 95,218,251,135, 46, 87,249, 9, 0, 92,249,125,199,122, 31, - 79,121,187,234, 13, 27, 9,194,218,189,239,254,243,246,228, 65, 0,254, 17,163,117,170, 34, 54, 4,138,158, 13,152,212, 55,148, -137,220,253, 47, 57,235,116,107, 76,251, 58, 0,237, 39, 79,157,250,246,208, 97,195,100, 60,207, 99,235, 79, 63, 41,174, 95,189, -122,167,184,106,191, 53, 64, 96,207,110,221,164,206, 46, 46, 24, 55,118, 44,156,117,186, 19,166,125, 82,224,221,113, 19, 39,182, -248,244,211, 79,229,235,231,140,186,210, 97,200,188,134, 60, 99,100,105,154,178, 48,199,129,198, 67,186,117,131,179,139, 11, 62, -251,236, 51,144, 86,123,196,180,239,128, 16, 39, 6,127, 16,218,180,111,215,150, 32, 16,182, 31, 56,139,251,177,169, 55, 78, 36, -225,193,203,190, 63,255, 6,108,206,209, 50,145,165, 69,202,187,157,187,227,234,213,171, 0,128,231,207,159,227,249,243,231, 8, - 10, 10,194,234,213, 5, 63,191, 74, 99, 96,120,158, 47,115, 77, 0,240,246,116, 65,191, 78, 77,132,103,175,111,151, 41, 83, 83, -101, 78, 78, 78,249, 78,235,191, 98,180,204,209,235,245,178,202,149, 43, 67,161, 2,101,230,232,156,158,237,200,139,248,123,245, - 62,233,164,209,104, 56, 39, 39, 39,168,213,234, 98,167,209,128,188,156,138,110,221,186, 77,220,185,115,167,232,246,237,219,168, - 90,181, 42,180, 90, 45, 46, 92,184, 16,207,242, 22, 66, 6, 99, 44, 81, 32, 16, 36,242, 60, 95,173,126,253,250, 88,184,112, 33, -130,131,131,169, 83,167, 78,147,141,102,171,192, 47,119, 82, 82,210,226,225,195,135,191,179,107,207, 94,143, 13,189, 84, 80,100, - 42,144,157,157,141,107,127, 93, 65, 90, 74, 46,190,251,238, 59,200,100,114, 2, 32,126,250, 52, 69, 60,126,252,248, 85,254,254, -254, 29,227,227,227,187, 20, 53,206,196,196,196,249,159,126,250,105,179, 29, 59,118,184,101,101,101, 65,165,202, 69,154,210, 1, -209, 43,242,214,241,173, 53, 46, 26,107,215,172,227,234, 86,114,244,202,201,201,193,168, 81,163,190,241,243,243,107,145,152,152, - 56,164, 40,205,132,132,132,139,163, 71,143,246,222,186,117,171, 76,163,209,104, 13, 6, 3, 84, 42, 21,183, 99,199,142,201,149, - 42, 85,114,223,184,113, 35,201,100,114,227,177,241,226,145, 35, 71,238,244,241,241,217,154,156,156, 60,176,132,247, 84, 32, 16, - 8, 86, 68, 68, 68,244,239,213,171,151,115, 82, 82, 82,237,125,251,246, 73, 1,168,140,135,248,182,107,215,174,210,178,101,203, -202,133,132,132, 76, 38, 34, 17, 99,236, 31, 93,156,220,203,203,107, 76,183,110,221,176,104,209, 34,252,250,235,175, 19, 60, 60, - 60,190,153, 61,123, 54,252,252,252, 70, 19,209,138,146,242,242,204, 88,186,124,249,242,224,224,224, 96, 12, 24, 48, 64,115,252, -248,241,169, 0,126, 1, 16,123,230,204,153,128, 31,127,252,177,235,206,157, 59, 23,173, 92,185, 82,182,122,245,234,160,238,221, -187,175, 0, 80,228,247,200,132,183,183,247,248, 62,125,250, 96,217,178,101, 56,121,242,100,119,198,216, 33,227,174,195, 68,212, -117,193,130, 5,191, 79,159, 62, 29,203,151, 47,255, 12, 54, 26, 45, 34,114,170, 85,171,214, 87, 29, 59,118,196,153, 51,103, 16, - 26, 26,138,102,205,154, 77, 32,162, 85,140,177,103,182,104, 25,245, 56, 39, 39,167,157,155, 55,111, 14,173, 84,169, 18,230,205, -155,135,137, 19, 39, 98,211,166, 77,161,253,250,245,219, 73, 68, 31, 21,254,157,177,132,171,171,171,147,131,131, 3, 38, 79,158, -204, 30, 62,124,152, 94,210,241, 21, 43, 86,116,255,230,155,111,200,221,221,221,170,194, 23, 34,146,203,100,178,230,117,234,212, -193,204,153, 51,113,236,216, 49, 76,159, 62, 29,117,234,212, 65,108,108, 44,122,247,238,237, 48,109,218,180,112, 0, 86,173,123, -200, 24,115,245,244,244,196,211,167, 79, 33, 18,137,208,162, 69, 11,252,242,203, 47, 80,171,213, 40, 95,190, 60, 50, 50, 50,208, -164, 73, 19, 0,128, 80, 40,180,178, 56,135,213,241,242,112,197,211, 91, 9, 16, 66,143,134,213,189,112,226,230,115,104,117, 60, -202,123,186, 33,249,105, 10,222,174,227, 15,141, 38, 0,140,241,117,172, 81,148, 8,184,134, 82,153, 28,105, 89,207,144, 16,125, -242,185,214,160, 30,158,241,240,108, 28, 0,120, 84,109, 53,252,202,217, 99, 87,122,116,110, 85, 62, 91, 89, 17,196,248, 38,214, -141,179,108,233, 17,128,138,142, 50,225,128, 3, 27,190, 36, 61,207,227,189, 33,243, 27,119,244, 70, 14, 82,128,114, 64,229, 30, -189,123, 55,255,252,243,207, 37,247, 98, 98,248,241, 99,199,102,252,117,249,242,201,223,128, 43,197,105,102, 3,213,218,181,107, - 7, 14,192,111, 71,143, 42,159, 1,241, 0,224, 13, 84,124,255,195, 15, 91, 77,157, 50, 69,242,224,241, 99,254, 66, 76,246,254, - 7, 79,217,194,230, 30,184,190, 35, 54,239,152,226, 48, 0,117, 77,186, 71,142, 28, 97, 42,227, 56,194, 42, 98,116,135, 22, 33, - 77,251,119,107,133,248,228,231, 88,242,253,126,220,184,151,116,196,147,199,199,101,240, 22,253, 43, 40,174,131,125,137, 57, 90, -150, 62, 83,115,114, 94,156, 61,120, 89, 3,243, 42, 52, 45,241, 95, 52, 90, 38, 76,139, 48,107,116, 60, 52,186,188,207,110,181, - 90, 13,149, 74, 85,220,105,249, 48,198,116, 71,142, 28,217, 50,118,236, 88,124,243,205, 55,184,119,239, 30,196, 98, 49,234,212, -169,227, 75, 68, 78, 64, 94, 4,166, 97,195,134,229, 57,142,195,157, 59,119,240,245,215, 95, 99,240,224,193,236,220,185,115,155, - 44,253,193, 96,140,253,149,150,150,182,102,248, 39,131, 51,210, 83,158, 64,167, 74,199,211,132, 7, 80, 43, 51, 48,111,225, 98, -228,232,132, 72,206,212, 34, 57, 83, 11, 78,234,129,245, 27, 55, 11,106,213,170,213, 81, 40, 20, 22,105,180, 24, 99, 23, 82, 82, - 82, 54,142, 28, 57, 50, 35, 57, 57, 57,255,254, 52, 58, 6,141,174,224,207,171,131,131, 3, 86,172, 88,225, 90,189,122,245,110, - 34,145,168, 77, 49,154, 73,113,113,113,183, 71,142, 28,169, 73, 73, 73, 65,102,102, 38,246,239,223,223,181, 82,165, 74,238,139, -150,126, 67, 74,173, 16,201, 25, 90, 36,103,104, 33,113, 42,143,157,123,246, 10,106,212,168,209, 87, 36, 18, 21,153, 99,100, 50, - 89, 91,183,110,237,223,171, 87, 47,231,165, 75,151,166,237,219,183,111, 45, 99,204,252, 27,114,103,197,138, 21,187,118,238,220, -153, 53,113,226, 68,143, 37, 75,150, 76, 32,162,169, 69,126,147, 94, 49, 68,212,166, 87,175, 94, 53,121,158,199,238,221,187,111, - 48,198,150,239,221,187,247,178, 90,173, 70,239,222,189, 43, 35,111, 26,201, 26,157,198,125,251,246, 29, 21, 26, 26,138,113,227, -198,105,143, 31, 63,222,144, 49,246, 13, 99,236, 49,203, 35,150, 49,182,234,212,169, 83,245,199,140, 25,163,110,210,164, 9, 6, - 14, 28, 56,152,136, 66, 75,208,109,222,167, 79,159, 96,158,231,177, 99,199,142,235,102, 38, 11, 0,192, 24,251, 99,207,158, 61, - 23, 52, 26, 13, 62,254,248,227, 42, 68,244,142, 13,247, 46,150, 74,165,187,231,206,157,235,150,144,144,128,254,253,251,171,239, -220,185,131, 89,179,102,201, 93, 93, 93, 15,153,126, 7,108, 65, 42,149,126,247,237,183,223,118,171, 91,183, 46, 70,142, 28,169, - 89,183,110,221,216, 81,163, 70,105, 26, 54,108,136,181,107,215,118,147, 72, 36, 54, 45, 45,146,152,152,152, 17, 21, 21,229, 89, -210, 35, 62, 62,222,170,242,124, 34,114,112,118,118, 62, 31, 18, 18,162,168, 83,167, 78, 35,189, 94,143,168,168,168, 7, 91,182, -108,225,235,212,169,131, 53,107,214, 96,201,146, 37,232,210,165, 11, 4, 2, 65,184, 45, 99, 85, 42,149,144,201,100, 16,139,197, -136,140,140,132, 90,173,134,131,131, 3,100, 50, 25, 4, 2, 1,220,220,220,224,236,236, 12, 88, 89,141, 70, 4,166,200,209, 65, - 36,226, 32,228,120,220,142,205,132, 86,199, 67, 38, 22, 64, 36, 36,128,241,112,115, 20, 65, 38, 17,128, 35, 42,185,119, 83,158, - 38, 50,149, 90, 72,196, 28, 68, 98, 9,113,122,131,220,180,143, 19, 26,228,114,185,132,188, 92,164,144,137,255, 69,203, 2, 83, -222,251, 53, 8, 16, 57, 6, 4,244, 92,246,245,215, 18, 69,118, 54,186,119,239,158,246,248,242,229, 8, 21,112,185,117, 9,239, - 41, 39, 20, 86, 15,107,221, 26,145, 87,175, 34, 43, 61,253, 62,144,151, 28, 47,241,243,235,181, 98,197, 10,137, 42, 55, 23,221, - 63,250, 40,227,222,217,179, 91,227,178,113, 96,135, 21, 38, 11, 0, 4, 98,177,143, 73, 55, 51, 61, 61, 29,200,107, 33,225, 93, -206,105,209,167,125, 59, 32, 43, 39, 23,147, 22, 71,240, 87,111, 39,141, 62, 19,143,206,123, 19,145,249,114,111,198,191, 11, 34, - 26,102,254, 48,109, 47,177, 97, 41,207,191,248,243,106,201,172,168,213,234,151, 26,224,171,208,180,100, 18, 95, 86,243,223,136, - 80, 40,204,189,123,247,174,196,197,211,143,247,116, 22,165, 87, 26,124,214, 21, 0, 60,156,132,153, 90,131,142, 79, 76, 76,132, - 84, 42,181,152, 67, 85,152,220,220,220, 79,136,104, 30,128,218, 66,161,240,192,230,205,155, 41, 34, 34,194,189, 79,159, 62, 49, - 68,148, 16, 18, 18, 18,184,121,243,102, 23, 0, 88,181,106, 21,219,185,115,103, 7,228,181,204, 40, 50,164,156,156,156, 60, 75, - 36, 18,157,251,244,211, 79, 87, 75, 36, 18,119, 71, 71, 71,207, 51,103,206, 80,174,150,161,241,212,216,252, 74, 68, 23, 57,135, -211, 95,186, 96,216,176, 97,130,232,232,232,133, 0, 14, 20,163, 57, 89, 42,149,158,185,119,239,222, 55,174,254,111,149,115, 12, -156,234,218,244,203, 59, 0,128, 64, 47, 17, 56,227,231, 98, 70, 70, 6, 82, 83, 83, 49,106,212, 40,247,152,152,152,201, 0, 78, - 20,165, 25, 31, 31,127, 74, 42,149,198,223,186,117, 43, 76, 36, 18, 73, 28, 29, 29, 27,159, 63,127,158,114, 53, 60,234, 77,142, - 69, 90,118,222, 56, 61,156,132,184, 50,215, 27,163, 71,143, 22,222,191,127,127, 49,128,150,150,244, 56,142, 91, 98,110,178, 38, - 77,154,116, 13, 64, 21, 34, 42, 48, 53,106, 48, 24,232,227,143, 63,190, 9,160,206,196,137, 19, 61, 24, 99, 19,136, 40,141, 49, -182,161,168,177,190, 42, 92, 92, 92, 22, 13, 31, 62, 28, 59,119,238, 68,122,122,250, 10, 0, 80, 40, 20,203,183,109,219,182,227, -147, 79, 62,193, 79, 63,253,180,136,136,126,179, 34,170,245, 94,239,222,189,113,248,240, 97,252,254,251,239, 95, 49,198,162, 44, - 29,196, 24,187, 71, 68,147,247,237,219,183,178, 79,159, 62,248,225,135, 31, 58, 2, 40, 46, 65,182, 93,135, 14, 29,112,232,208, - 33, 60,127,254,124,173,165, 3, 50, 50, 50,214,237,223,191,255,237, 14, 29, 58, 96,225,194,133,237, 0,252, 81,210,125, 19, 81, -176,171,171,235,230,149, 43, 87, 54,174, 91,183, 46,250,246,237,155,171,213,106, 59, 78,156, 56,241,215,237,219,183, 59,111,217, -178,165,209,176, 97,195, 46, 18,209, 80,198,216,255,177,119,222,225, 77, 86,253, 27,191, 79,246, 78,186, 55,133,178, 58,217,202, - 20, 1, 41, 5,169, 2,226, 68,134,138, 32,188,130, 8, 34, 67, 81,212, 87, 4, 89, 34,200, 84, 4,101, 41,252, 80, 70, 69, 68, - 81,144, 77, 11,148, 82, 74,161,165,123,164, 51, 93,105,179,207,239,143, 38, 53,212,142,180,101,191,231,115, 93,231, 74,114,158, -231,220,207, 57, 79,210,228,238, 25,223,115,166, 49, 61, 0,224,114,185,159,173, 89,179,102,226,192,129, 3, 49,107,214, 44,211, -225,195,135, 71, 80, 74,127, 35,132, 36,205,153, 51, 39,106,197,138, 21,220,229,203,151, 79,228,114,185,249,102,179,249, 94,153, -235,255,174, 94,189,186,119, 68, 68, 4,146,147,147,113,230,204, 25, 24, 12,134,239, 79,159, 62,125,188, 67,135, 14,255,213,235, -245, 7,100, 50,217, 4,133, 66, 17,214,173, 91,183, 39, 8, 33, 82, 71,230,233, 17, 66, 52, 73, 73, 73, 50, 15, 15, 15,240,249, -124,196,198,198,194,195,195, 3, 0,144,151,151,135, 78,157, 58,129,203,229, 66,163,209, 0,112,236,199,150, 16,206,229,164,212, -236,182, 46, 10, 25, 96, 22,227,226,181, 76,184,187, 57,195, 76, 56,200,205,205, 65,183, 32, 63, 16, 66,160, 41,204, 5, 33, 36, -206, 17, 77, 51,181,196,164,103,231,249,186, 42, 68,232,220, 59,194,245,244,175,249,219, 84,237, 30,155,204,227, 18,174, 72,172, -220, 56,241,149, 87,220, 44, 22, 10, 77,161, 26, 60, 14,167,193,185,173,119,138,221,233,200, 24,208, 78,124, 49, 98,226,167,221, - 8, 5,173, 52,224,187,111,213, 40,150, 2,221, 86,191,255,190,147,171,155, 27, 94,126,249,101, 75, 97, 86,214,239, 90,192,161, -192,202,109, 59,116,240,148, 43, 20, 56,121,242, 36,184, 64, 10, 0,108, 6,130,151,206,153,227,234,225,229,133,215, 38, 78,180, -168,211,211,143, 86, 58, 48,164,123,139,110,187,118,124,155, 46,199,170,155,195,197, 91,239,142,232, 47,146, 73, 68,248,108,195, - 79,200, 40,168,216,117, 58, 7, 27,154,126, 39,238,127, 26,237,209,170,111,242, 89,245,164,234, 91,231, 5,212, 54, 43, 98,177, -184,166, 55,197, 81,236, 67, 48,220, 46,205,198,184, 19,154,247, 10, 66,200,124, 66,200, 62, 66,200,252,140,140,140,132,137, 19, - 39, 26, 76, 6, 93,217,169, 79,219,206,187,176,184,205,212,211, 31,121, 79,253,249, 45,213, 60,109, 73, 81,217,234,213,171,141, - 25, 25, 25, 9,246,101, 26,210,166,148,166, 83, 74,127,217,186,117,235,186,221,187,119,163, 83,167, 78,136,143,143,247,168,168, -168,232, 30, 23, 23,231, 18, 28, 28,140,109,219,182,225,135, 31,126, 88, 73, 41, 61,210,144,201,178, 97, 52, 26,127,207,201,201, - 9, 76, 75, 75,107,239,228,228,100,116,114,114, 66,237,149,136,165,149, 22, 20,106, 74,224,226,226, 10,165, 82, 25,208,152,166, - 78,167,251, 37, 39, 39,167,163,197, 57,232,241,142, 5,171, 74, 98, 62,107,133,152,207, 90,225,151,185, 62,240,118, 18,162,184, -184, 24,249,249,249,200,207,207, 7, 33, 4, 70,163, 49,196, 1,205,155,217,217,217,223,164,167,167,239,243,244,244,132, 66,161, - 0, 5,144,171, 49,226,210,242, 96, 92, 90, 30,140, 92,141, 17,165,101,101,104,211,166, 13, 20, 10, 69,157, 67, 20,132, 16,142, -175,175,239,240, 23, 95,124, 81, 1, 0, 86, 3, 53,152, 82, 58,181,142, 52,197,100, 50,245,179,157, 59,123,246,108, 23, 0, 67, - 27,171,235,237,196,186, 34,238,205, 73,147, 38, 61, 34, 22,139,241,213, 87, 95,221, 4,176,221,122,120,247,186,117,235,174, 1, -192, 91,111,189, 21, 6, 96, 22,169, 39, 18,180, 13,129, 64,208, 35, 36, 36, 4,167, 79,159, 6,128,159, 26,185,252,158, 83,167, - 78,161, 67,135, 14, 16,139,197,143, 54,114,110, 64,171, 86,173,112,237,218, 53, 0,184, 88,207, 57, 23,175, 93,187,134, 86,173, - 90,129, 16,210,232,231,136, 16, 50, 50, 34, 34,226,242,159,127,254,249,104,223,190,125, 49,113,226, 68,253,217,179,103,135, 83, - 74,143, 95,188,120,113,208,216,177, 99, 43, 58,118,236,136, 99,199,142, 5,143, 29, 59,246, 20,151,203,253,212, 1,205,215, 62, -249,228,147,249,163, 70,141,194, 39,159,124, 66,127,252,241,199,151, 41,165,191, 1, 0,165,244,240,174, 93,187,198, 47, 90,180, -136,142, 30, 61, 26, 31,127,252,241,124, 66,200,212,134,244, 42, 42, 42, 74,204,102, 51, 42, 42, 42, 28,234,146,119,244,124, 55, - 55,183, 39, 35, 34, 34,176, 96,193, 2,248,250,250,226,192,129, 3, 20,192, 65, 74,233,223, 58,157,238,113, 74,233,138,138,138, -138,159, 79,159, 62,141, 33, 67,134, 8,112,235, 22, 35,245, 98, 50,153, 82,255,252,243, 79,131,171,171, 43,252,252,252,224,239, -239,143,138,138, 10,104, 52, 26,116,234,212, 9,189,123,247, 70, 69, 69, 5, 14, 30, 60,104,208,104, 52, 14, 45, 88, 49,233, 43, -190, 59, 18,181,183,196, 85, 33,130,159,135, 10,109,124, 93, 80,174, 41, 64,126,110, 54,122,132,248, 99, 64,143, 54, 40, 40,209, -227,240,193,189,197,101,101,218,239, 28,209, 52,234,180, 91,126,255,245, 64,137,179, 66,128,192,160, 48,140,157,248, 86,183,110, -221,123, 29,233,217,179,223,225,101, 75, 62,235, 50,184, 79, 8,201, 44,168,194,161,131, 63, 21,151,148,150, 58, 52,108,122,187, -249, 24,224, 86,169, 58, 30, 95,187, 47,230,155,208, 97,147,190, 73,200,196, 42, 0, 48,114,185,193,195,159,124, 18,153,153,153, -216,187,123,119,142, 22,136,117, 84, 79, 34,145,112, 0,160,164,164, 4,162,234,221, 66, 96, 2,130, 34, 35, 35,145, 95, 80,128, - 29,219,183,231, 31, 2, 46, 52,165,158, 79, 3, 66,169,164,186, 67,176,164,164, 4, 4, 40, 5, 0,194,195,240,158,157, 58, 32, -191,168, 20,127,158, 75, 40,111, 83,137,255, 52,164,243,160, 78,132,111,104,142, 86, 99,253,161, 5,179,102,205,130, 72, 36,130, -183,183,119,141, 57,178,153, 21,161, 80, 8,111,111,111,152, 76, 38,236,218,181, 11, 0, 26,156,195,192, 1,116, 35,166, 46,182, -232,140, 84,203,231,243,111,139, 38, 0,112, 56, 28,221,179,115,190,181,252,122,170,238, 69, 49,205,209,124, 0,232,105,141,137, -213,147, 82, 90,156,154,154,154,249,194,179, 35, 74,210,146,174,228, 86,104,178,115, 74, 11, 51,114, 50,110,198,229,190, 55,119, - 86, 73,102,102,102,134, 53,150, 86,207,236,236,236, 17, 0, 28,157,107, 48,235,133, 23, 94, 88, 63,105,210, 36,122,233,210, 37, - 0, 64, 76, 76, 12, 94,121,229, 21, 58,126,252,248, 85, 0,230, 53,163,222, 21,149,149,149,183,244,134, 24,204,150,154, 33,191, -210,210, 82,100,103,103, 67,175,215, 59,236,136,175, 31, 94,158, 88,148, 26,109, 12,107, 45, 67, 88,107, 25,130, 91, 73, 65, 76, -229, 53, 38, 43, 63, 63, 31,106,181, 26, 0, 28,234,213,179, 82,170,211,233,110,169,167,253,208,100,105,105, 41,114,115,115, 97, - 54,155,235,252, 33,163,148, 90,178,178,178, 14,255,240,195, 15,101, 0,176,108,217,178, 34, 66,200, 31,132,144,245,117,164, 13, - 60, 30,239,164,237,220,229,203,151, 23, 1,248,165, 46,221, 59, 1, 33,100, 84,231,206,157,139,231,207,159,255,213,140, 25, 51, -176, 97,195, 6,228,228,228,204,163,148,154,108,109, 41, 40, 40,152,179,118,237, 90,188,250,234,171,248,240,195, 15,151,119,239, -222,189,148, 16, 82,239,252, 10,119,119,119, 63, 30,143,135, 11, 23, 46,148, 82, 74, 27,156,236, 74, 41,205,189,112,225,130,154, - 16, 2,111,111,239,118, 13,157,235,226,226,210, 94,161, 80, 32, 43, 43, 11,176,254,199, 92, 7,169,217,217,217, 84, 40, 20,194, -199,199,167, 67, 35,205,135,179,179,243,156,111,190,249,134,119,229,202, 21, 12, 30, 60, 56,243,216,177, 99, 67, 40,165,127, 89, -235,118, 33, 38, 38,166,255,160, 65,131, 18,143, 28, 57,130,207, 63,255,156,116,237,218,181, 65, 83, 4, 0,173, 91,183,158,242, -218,107,175, 97,205,154, 53,216,184,113,227, 84, 74,233,238, 90,109,222,185,118,237,218,183, 54,110,220,136,137, 19, 39, 34, 32, - 32,160,193,185, 42,105,105,105,115, 7, 14, 28, 24,115,253,250,117,135,118, 60,112,228,124, 66,200,160, 94,189,122,181,175,172, -172,196,150, 45, 91,146,219,183,111,127,126,247,238,221,179, 40,165,181,127,176,127,222,187,119, 47,198,141, 27,135,174, 93,187, -110, 33,132,140,105,236,250,148,210,236,180,180,180,130,216,216, 88, 11,151,203,133,159,159, 31,134, 15, 31,142,151, 94,122, 9, - 93,187,118, 69, 94, 94, 30,142, 31, 63,110, 73, 74, 74, 42,112,100,197, 33, 0, 20, 36,254,121, 32, 37, 37,241,228,133,179,199, -141, 60, 46, 7,254,222, 46,120, 38,188, 27, 94,127,174, 31,122, 4,251, 34, 45,175, 18, 71,143, 30, 49,166,164, 36,159,118,100, -197,161, 77, 51, 33, 62,246,212,149, 11, 39, 76,124, 30, 65,112, 80, 71, 44,120,111,142,243,162,133,115,157, 58,182,243, 71,236, -205, 18, 28,249,237,144, 49, 59, 51,227,207,123,181,226,240, 24, 32,144,139,136,140,203,225,192,204, 17, 85,112,173,129,140, 59, -133,134, 6,122,122,121, 33, 42, 42, 10, 28,192,225, 21,161,199, 0,129, 92, 94, 61, 10, 94, 94, 94, 14,155, 94,251,160,160, 32, -255,214,173,241, 75, 84, 20,184, 22,203,213, 1, 77, 12, 48,122, 13,144,218,235, 18,160,234, 63,173,160,104,223,202, 35,200, 89, - 37,195,217,216, 27,208, 25,233,185,237,197,184,167,241,200,238, 20,181,135, 13,155, 50,116,184,108,195,134, 13, 61,191,249,230, -155, 33,179,102,205,146, 79,152, 48, 1, 98,177, 24, 90,173, 22,126,126,126, 48,155,205,248,245,215, 95, 17, 29, 29, 93,110,177, - 88,142,160, 86,216, 0, 66, 72,184,125,172,141, 95,147,168,132, 16,194, 1,180, 61,247, 61,255,252,109,209, 4, 0,249, 13,139, -178,176,141,126,219,234,221, 39, 70,239, 56,124,129,188, 61,102, 0,167, 71, 80, 43, 0,128,167,167, 39,148, 74,101,147, 53, 91, -202,221,208,180, 31,214,205,201,201,185, 70, 8,201,155, 52,105, 82,176,109,226,187, 72, 36,170,202,200,200, 72,176,154,172,127, -149,105,172,158,214,149,113,255, 33,132,236, 47, 41, 41, 57,252,238,187,239, 98,209,162, 69, 56,112,224, 64,127, 74,233, 73, 71, -235, 89, 75,211, 28, 16, 16,160, 57,119,238,156,103,135,144,238,104,235,193,199,227, 31, 92, 7,165, 20,174, 82,138, 50, 77, 17, - 46, 94,188,128,178,178,178,179, 77,169,167,143,143,143, 38, 47, 47,207,205,195,195, 3, 69, 69, 69, 40, 40, 40,168, 49, 89,197, -197,197, 40, 42, 42,162,132,220, 26,179,165, 17,205,138,246,237,219,107, 19, 18, 18,132,158,173, 58,160,157,135, 0,189,222,187, - 6, 80, 10,127, 23, 14,202, 74, 53, 56,125,250, 52, 74, 74, 74,254,170, 79,211, 98,177,188, 51,118,236, 88, 46,128,241,239,190, -251,174, 11,128,174,115,230,204, 57, 82,123,101, 33,159,207,255, 98,219,182,109,157,108, 67,140,115,231,206, 93, 73, 41,253,198, -145,122, 54, 23,123, 77, 87, 87,215,119,162,162,162, 20, 6,131, 1,171, 87,175,198,202,149, 43, 55, 83, 74,111, 89, 81, 73, 41, -141,226,114,185,107, 57, 28,206,155,211,166, 77,195, 27,111,188, 33,125,228,145, 71,102,225,159, 94,175, 91, 52,179,178,178, 22, -244,232,209,227,195,188,188, 60,135, 38,246, 95,191,126,125,114,143, 30, 61, 22,228,229,229, 45,173,175,158, 0, 32,147,201,100, -102,179, 25, 41, 41, 41,197,148,210, 58,135,156, 40,165, 85, 29, 59,118,204, 50,155,205,126, 82,169,212,165,161,182, 3, 64,113, -113,241,103,143, 60,242,200, 71,106,181,250, 55, 0,159,214, 14, 85, 66, 41,189, 68, 8, 9,155, 49, 99,198,244, 37, 75,150,140, -206,205,205,253, 87,156,166,218,154,105,105,105,159, 13, 26, 52,232,131,196,196,196,173,245, 13, 1, 83, 74,191, 34,132, 24,182, -109,219, 54, 53, 37, 37,229, 95, 43,130,237, 53, 41,165, 7,209,192, 80,122, 29,218,117,158,111,175,201,229,114,231, 44, 89,178, -132,179, 97,195, 6, 80, 74,151,155, 76,166,250,234, 25,203,229,114,191,235,215,175,223,132,221,187,119,139,195,194,194,222, 0, -176,179,190,182,219,208,233,116,103, 78,157, 58,213, 59, 53, 53,213,109,208,160, 65, 2,160,250, 31, 20,141, 70,131,131, 7, 15, - 26,146,146,146, 10, 42, 42, 42,234, 28,134,173, 79,211,164, 47, 29,115,234,232,190,157,169,215,227,250, 12, 28, 54,210, 89,111, -240,131,168,144, 11, 77, 97, 46,126, 61,184,183, 56, 37, 37,249,180, 86,171,169,211, 8,214,167,105,208,149,188,116,250,207,253, -187, 50, 83, 18,122, 63, 62,104,184,115,149,190, 53, 68, 2, 14, 10,213, 89,248, 53,106, 95, 81, 74,202,205,191,171,140,186, 87, -154,162,217, 18,106,107,114, 3,240, 41, 55, 55,122,210,148,167,187, 65,226,236,119,145, 15,172,238, 7, 72,220, 60, 61, 5, 0, -112,253,250,117,200,129, 52, 71, 53,213,128,176,131,117,148, 74,171,213,130, 15,232, 95, 5,248,238,238,238, 18, 0, 72, 76, 76, -132, 20, 72,111,106, 61,203, 1,153,212, 78,151, 3,104, 11,121,240,109,175,148, 17, 0,200,204, 45,132,222,136,122,127, 55, 30, -116,108, 61, 90,117, 77,138,111, 44,248,162, 5,192, 25, 66,200,133,165, 75,151, 62,190,126,253,250, 1, 51,103,206, 20, 62,249, -228,147, 56,127,254, 60,126,255,253,119,189, 78,167, 59, 6,224,184,245, 71,217,145,202,220,118,205,221,213,231,189,208,211,151, -184, 24, 44,149, 63, 45, 88,127,232,177, 54, 94, 78,212,100,182,144,184,184, 56,156, 58,117,170,201,154, 15, 2,214,105, 50, 61, - 9, 33,251,172, 89,231,106,135,112,176, 14, 23,218,122,176,122,214, 53,231,206, 1, 46,242,120, 60, 26, 20, 20, 68,172,219,211, -212, 57,223,198, 81,114,115,115, 95,158, 59,119,238,111, 63,238,249,137,183,119,154, 4, 37,154,146,234, 47,224, 18, 13, 10,213, -217, 56,122,244,168, 33, 63, 63,255,141,166,104,230,231,231,255,103,204,152, 49, 63,238,220,185,211,165,184,184,184,198,104, 21, - 23, 23,195, 98,177, 96,243,230,205,249,106,181,186,225,205, 82,107,145,147,147, 51,241,221,119,223,221,179, 99,215, 30,222,145, -121,206, 40,183, 69,159,175, 40, 65, 97, 94, 14, 14, 28, 56,160, 43, 40, 40,152, 81, 95,121, 74,169,153, 16,242,246,216,177, 99, - 1,171,217, 58,125,250,244, 91,132,144,175,108, 63,230,132,144,182,239,188,243,206, 24,187,121, 92, 43,239,246,170,195,194,194, -194, 69,189,123,247, 94,153,159,159,127,211, 96, 48,236,166,148,214, 25,165,223,108, 54, 79, 35,132,156,250,234,171,175, 94,114, -115,115,243,204,205,205, 93, 82,159,230,237, 50, 6,181, 73, 79, 79,159,223,163, 71,143,247,242,242,242,234,189, 54, 0,220,184, -113,227, 77,235,121, 75, 27, 58,207,122,237, 40, 0, 81,141,156, 99, 66,117,104, 11,135,194, 91, 80, 74,247, 1,216,231,192,121, -155, 96,221,120,246,110, 99, 54,155,151,117,238,220, 89,108, 50,153,142, 52, 54, 31,208, 98,177, 76,158, 57,115,102,230,236,217, -179,187,153,205,102, 71,239,129, 17,192,223,132, 16,159,130,130,130, 0, 0, 78, 0,192,227,241, 52, 26,141,166, 89, 91,240, 88, - 35,190, 63,229, 22, 56,228,233,221, 91,215,188, 74, 45,230,174,132, 16,112, 57,220, 75,101,229,218, 45,142,246,100,213,161, 25, -233, 22, 56,228,105,117, 86,218,107,212, 98,238, 10, 16, 11,143,199,137, 45, 43,215,126,157,159,112,228,158,109,193, 51,193, 23, -158, 92,130,105,191,125,251, 1, 1,128, 33,175,253,183, 91, 27, 39,200, 77, 26,104, 96,253, 46,207,201,201,129, 51,208,232, 74, - 84, 27, 82,192,100,176,206,137, 46, 46, 42,130, 20,168,204, 1,120,252,118,222, 0, 0, 32, 0, 73, 68, 65, 84,184,214,121,151, - 68,157,155, 11,121, 19,244,108,240, 1, 67, 45,221, 18, 0, 34,219,116,206,162,210, 10,192,241,184,134, 15, 28,246, 61, 88,182, -231, 53,134,139, 82,234,112, 66,245,254,122,207, 0, 88,108,125,148, 53,114,126,248,189,208,236,237,141,192,240,246, 36, 97,120, - 16,175, 8,192,115,183, 67,179,169,233, 78,107, 2,216,170,215,235,105, 85, 85, 21,213,106,181,180,188,188,156, 2,216, 87, 71, -153,125,217,217,217, 52, 51, 51,147,166,167,167,211,212,212, 84, 10, 96,123, 83,235,169, 84, 42,191,121,254,249,231,205,124, 62, -127,205,237,104,187,139,139,203,226, 94,189,122, 25,190,252,242, 75,250,243,207, 63,211,175,191,254,154, 78,155, 54,141,118,234, -212, 73,231,228,228, 52,166, 57,154, 94, 94, 94, 11,130,130,130, 10, 55,111,222, 76,183,111,223, 78, 87,173, 90, 69,223,127,255, -125,179,159,159, 95,174, 66,161, 24,218, 28, 77, 15, 15,143, 77,143, 61,246,152, 97,211,166, 77,244,200,145, 35,116,199,142, 29, -244,157,119,222,161,193,193,193, 58,153, 76,246,172, 35,154, 0,184, 60, 30,111,197,148, 41, 83,114,125,124,124,162,106, 29,147, -134,134,134,158, 31, 59,118,108, 54,128,185, 15,203,231,147,105, 50, 77,166,217,114,205,241,190,240, 25,210, 22, 38,122,252, 3, - 74,143,127, 64,195,219,194,242,178, 15,124, 41,192,149, 10, 4, 47, 13,232,223,127,185, 0,120,137, 2,220, 58, 83, 93,245, 4, -184, 98, 46,247,185,126,189,122, 45, 23, 0, 99,108,231,138,185,220,231, 6,244,239,191,156,207,229,142,171, 87,175, 1, 77, 10, -112, 5, 60,222,220,126,125,250,172,224, 1,239,217,242,158,104, 75,174,190, 51,172, 21,237,223,154,220, 24,231, 1,105, 67,154, -245,220,143,201,183,251, 30,223,237,212,220, 15, 2,239,118,127, 8, 31, 20,205, 38, 92,251, 78, 27,173, 14,168, 30,182,217,103, -151,230,215, 81,102,126,173,115,182, 2,232,208,204,251, 41,185,157,109, 7,208,217,205,205,237, 80,135, 14, 29,242,219,180,105, -147,237,236,236,188, 19,128, 95, 11, 53,195,188,188,188,190,247,244,244,188,238,237,237, 29,235,230,230,246, 5, 0,247,150,104, -242,249,252, 94,158,158,158,127, 5, 4, 4,104, 90,183,110,173,118,115,115,219, 5,192,179,169,154, 0,188, 81,199,151, 10, 0, - 1, 0,239,135,233,243,201, 52,153, 38,211,188, 13,154, 0, 55,162, 29,150, 12,105, 11,211,144,182, 48, 71, 4,224, 11,123,131, -242, 20, 32,105,174, 41,122, 5, 16,213, 62,191, 81,189, 70, 52, 41,192,237, 11,200,107,151, 25,238,135, 80, 71, 52,235,185, 31, - 15,132,209,178,213,211,250, 61, 63,217,190,222,141,134,119,168, 11,106,157, 36,123, 59,121, 80, 52,239, 23, 40,165, 55,128,198, -131,189, 81,187, 8,242,183,225,154,142, 5,228,114, 92,239, 50,128, 39,111,179,230, 21, 0,227,111,167,166,193, 96, 56, 11, 7, -247,125,107, 8, 74,105,157, 75,175,105,245,112,182, 67,203,178, 25, 12,198,255, 16,148,154, 15, 3,243,134, 4,146,213, 60, 51, - 56,135,146,105,150,253,225, 3,255, 4, 62,110,146, 38, 0,108,169, 99,123,158,102,233,217,105, 2,192, 73,224, 95,187, 59, 68, -181,112,186,201,131,132,245,123,126, 83,147,226,104, 49, 24, 12, 6,131,193,184,119, 28, 73,172,251,159, 52,198,125, 69, 20,185, -117,143,195,154,121,159, 4, 64,120, 93, 37,104, 19, 86, 82, 16, 66,234,212,104,136,198,244,153, 38,211,100,154, 76,147,105, 50, - 77,166,249,240,105,218,105,215,183,176,226, 90, 45,189,123,178, 96,228,118, 65,172, 99,138,119, 70,252, 1, 13,155,192, 52,153, - 38,211,100,154, 76,147,105, 50,205,187,171,249, 32, 83,171, 55, 11,192, 63, 6,145, 13, 29, 50, 24, 12, 6,131,193, 96,180,128, -134,122,221,152,209, 98, 48, 24, 12, 6,131,193,104, 1,132, 16,111, 84,111, 81, 21,101,125,100, 61, 90, 12, 6,131,193, 96, 48, - 24,183,137, 72, 74,233,166,186, 34,195, 55,182,215, 33,131,193, 96, 48, 24, 12, 6,163, 17,108,243,180,154,186,215, 33,131,193, - 96, 48, 24, 12, 6,163, 1, 26,154,163,117,203,170,195,168,168, 40, 26, 25, 25, 73,238, 74,173, 24, 12, 6,131,193, 96, 48,106, -241, 32,122, 17,187, 30,172,168,218,193,169, 89,143, 22,131,193, 96, 48, 24, 12, 70, 11,176,245,104, 89,135, 13,111,201, 99, 70, -139,193, 96, 48, 24, 12, 6,163, 5, 52,212,163,197, 1,170,187,233,238,122,173, 24, 12, 6,131,193, 96, 48,172, 60,200, 94,132, - 82,186,201,154,254,181, 93,146,109,213,225, 64,107, 3, 91,188,113, 46,131,193, 96, 48, 24, 12, 70, 51,120, 96,189, 8, 33,196, -219, 58,108,232,253,175, 99,119,114, 11, 30, 6,131,193, 96, 48, 24,140,135, 29, 91,252,172,186,226,104, 49,163,197, 96, 48, 24, - 12, 6,131,209, 2, 26,218,235,144, 25, 45, 6,131,193, 96, 48, 24,140, 59,196, 29,141, 12, 79, 8, 9,103,154, 76,147,105, 50, - 77,166,201, 52,153, 38,211,124,216,177, 69,132,175,221,187,197,194, 59, 48, 24, 12, 6,131,193, 96,180,128,218,115,179,236, 95, -179,189, 14, 25, 12, 6,131,193, 96, 48,238, 16,172, 71,139,193, 96, 48, 24, 12, 6,163, 5,216, 86, 28,218,191,182, 61,103, 70, -139,193, 96, 48, 24, 12, 6,163,133,212,183,177, 52, 27, 58,100, 48, 24, 12, 6,131,193,104, 1,181, 39,192,219,191, 38, 0,234, - 92, 57, 64, 41,253,189, 9, 23,104,242,234,131,198,244,153, 38,211,100,154, 76,147,105, 50, 77,166,249,240,105, 54,166,221, 20, -255,113,191,208,208,100,120, 80, 74,239, 88, 2, 16,206, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 48, 39, 0,222, 0, - 38,219, 37,111,219, 49, 54, 71,139,193,120,208,217, 67,184, 40, 14, 10, 0,165, 62,224, 10,115,144,115, 57, 25, 11,169,165,197, -154,234,208,214,144, 24, 61, 97, 18,231, 67, 29,123,179,197,154, 12, 6,131,241,144, 66,171, 55,147,174,115,142, 22, 51, 90, 12, -198,131, 78,126,112, 32,120, 88, 12, 14,188, 65, 13, 73,112, 15, 93, 12, 32,174,197,154, 2,203,167, 48,115,252, 64, 13,137,240, - 8, 90, 2, 32,254,182,212,151,193, 96, 48,254,135,184,235,147,225,249,124,190,154, 16, 98, 17,137, 68,123,235,218,229,154,193, -184, 93, 16, 66,188, 37, 18,201, 94, 66,136, 69, 32, 16,168,239,117,125,238, 8,219, 58, 75,193, 49, 63,169, 55, 90,124,127,189, -172,241,208,234,204,129,224,152,134,227,219, 64,121,139, 52,121, 36,162,202, 96,241,223,126, 78,235, 89,161, 55,133,128,162,101, -154, 86, 8, 33, 78, 66,161,240, 87, 66,136, 91, 75,181, 24,247, 39,161,132, 60,242, 40,159, 63, 59,132,144, 39, 8, 33,228, 94, -215,135,193,184,215,220,117,163,101, 50,153, 60, 50, 50, 50,200,215, 95,127, 61, 66,169, 84, 38,241,249,252,249,132, 16,193,221, -174,199,189, 66,161, 80,156, 82,169, 84,106, 39, 39, 39,181, 74,165,186,208, 88,254,195, 8, 33, 36,208,195,195, 35,205,213,213, - 53,209, 62,223,163,235,232,190, 29, 31,155,176,208, 45,108,212,128, 22,234, 11,248,124,254,124,149, 74,149,180,105,211,166, 17, - 9, 9, 9,196,104, 52,122,180,168,210,247, 43, 85, 22, 79,112,184,131,174,228,104,165, 57,165, 70,207,152, 84,173, 2,224, 14, -132, 30,205,255, 39,166,196,226, 9,208, 39, 46,101, 86,202, 78, 21,185,123,254,157,172, 83,130,195, 25,132, 42,226,213,210,234, -114, 56,156,169, 22,139,101,136, 64, 32,120,187,165, 90,140,251, 19, 33,135,211,239,212,136, 17,159,206,237,210,101,122, 48,240, -116, 93,102,139, 84,243, 86, 72, 72,200, 33, 66,200, 75,183,235,218,132,144,207,131,131,131,179, 8, 33, 51,110,151, 38,131,225, - 8,132,144,238,214, 71,111,235, 54, 60, 53,223,193, 14, 27,173,231,219,146,126, 47,183, 35,199, 94,108, 75,202, 94,106, 71,202, -199,183, 35, 39,158,107, 75,158,104, 78,133,252,252,252,208,183,111, 95,110,122,122,186,100,198,140, 25, 11, 69, 34, 81, 10, 33, -100,104,115,180,164, 82,105,180, 76, 38,203,224,243,249,183,212, 69, 38,147, 69,203,229,242, 12, 62,159, 63,216, 62, 95,169, 84, -158, 82,169, 84,106,165, 82, 89,167,153, 81, 40, 20,209, 42,149, 74,173, 80, 40,162,237,243,249,124,254, 96,133, 66,145,169, 84, - 42,107,231, 63,161, 84, 42, 51,106,231,215, 7,159,207,247,203,200,200,240,200,204,204,244, 16, 10,133,158,246,249,233,233,233, - 30, 25, 25, 25,183,228, 55, 5, 62,159,255,132, 92, 46,207,144,201,100,255,170,163, 92, 46,207,168,221,166,250,176,187,119,245, -221,211,102,189,239, 64,181,201,138,136,136, 56,145,147,147,227,239,228,228,228,100,127,204, 69,229, 52,244,251,205,107,103,141, - 28, 30, 49,213, 35,244,153,206,205,212, 31, 42, 18,137, 82,102,206,156,185, 48, 51, 51, 83,210,171, 87, 47,174, 64,240,144,250, -248, 61,161, 2, 16,203,227, 22, 74,221,175,102, 85,185, 71,142,120,158,119, 49,163,210,221,104, 54,187, 0,220,129,216,218, 70, -212, 44, 77,158,177,191,133, 82,207, 63, 82,249,238,131, 94,152,206, 61,154,202,115, 55,154,205,174,224, 96, 64,179, 52,173, 16, - 66,248, 92, 46,119,214,138, 21, 43, 56, 0,166, 17, 66,132,205,213,122, 16,233,229, 75,124, 7,119,224,157,235,225, 67,250,221, - 46, 77, 66, 72,152, 76, 38,139, 38,132, 4,222, 46,205,150,162,183, 88,174,237,186,121,243,240,184,246,237,159,154,219,165,203, -171,181,205,150,245,249,220, 37, 75,150,140,191,114,229,138,123,219,182,109,223, 32,132,180,248,159,126, 66,200,170, 37, 75,150, -204,185,114,229,138, 79, 64, 64,192,199,183, 67,147,113, 95, 33, 4, 48, 8, 64, 36,128,193, 0,122, 90,159, 63,106, 77,145,168, -142,162, 96,255,248,168,181,172,237,120,175,122, 52, 34,235, 40,247,168, 93,190,253,235,218,207,109,116,183, 62, 70,210,234,213, -134,145, 53, 71, 40,165, 56,120,240, 32,181,127,172,157, 94, 12,192, 71,211,251,250,106,175, 30,216, 65,203, 51,110,210,226,132, -139,244,226,166,207,232,244, 71,221,181, 47,183,197,231, 77,156,153, 79, 41,165,116,251,246,237,244,232,209,163, 84,163,209,208, -248,248,120,218,179,103,207, 74,169, 84,250, 7,128,128,166,232, 41, 20, 10,245, 31,127,252, 65, 35, 34, 34, 74,228,114,249,114, - 0, 28, 74, 41,148, 74,165,250,228,201,147, 52, 34, 34,162, 68,161, 80,172, 2,192,165,148,226,217,103,159,205,163,148, 82,119, -119,247,236,186,244, 70,142, 28, 89, 76, 41,165, 42,149, 74,109,173, 47, 87,161, 80,172,122,243,205, 55,203,207,159, 63, 79,157, -157,157,109,249, 28,165, 82,185,124,218,180,105,229, 49, 49, 49, 53,249,141, 37, 23, 23,151, 12,179,217, 76, 15, 28, 56, 64, 61, - 60, 60,106,234,224,236,236,156, 97, 54,155,233,190,125,251,234,173, 91, 3,247,148, 35,151,203,151,141, 27, 55,174, 44, 53, 53, -149,186,186,186,170,237,242,151, 79,152, 48,161, 44, 61, 61,157,186,185,185, 57, 84, 71, 87, 87, 87,245,169, 83,167,232,232,209, -163, 75,237,239,169,171,171,171,250,244,233,211,182,252,101,182,252,134,146,143,143,207, 27, 30, 30, 30,217, 30, 30, 30,217, 78, - 78, 78,139,188,189,189,115,243,243,243, 41,165,148,182,107,215, 46,143, 82, 10,247, 46,207,244,237,208,111,252, 66,143,176, 17, - 51, 55,236, 62,125,246,120, 92, 97,126,151, 33, 83,151,169,186,140, 84, 53,225, 30, 4,136,197,226, 63, 30,127,252,241,202,212, -212, 84, 90, 94, 94, 78,163,163,163,233,223,127,255, 77,175, 94,189, 74,173,159,187,123,190, 50,229,182,166,181,161,126,116, 99, -208,174,248, 15,253, 19,142, 47, 25,102,164,169, 71,233,142, 87,221,141,199,102,250, 38,209,245,193,255, 71, 55,134,180,106,150, -230,250,144, 29,177,239,251, 95, 91,243,241, 91,198,180,180, 52, 58,123,194, 48,211,111,211,125,147,233,134,224,221,205,210,252, -231, 61, 26,243,204, 51,207,148,167,167,167,211,208,208,208, 10, 46,151, 59,241,158,223,195,187,148,122,250,192, 55, 60, 80,152, - 21,187,125,182,229,233, 48,105, 97,119,111,244,107,169, 38,128, 48, 15, 15,143,130,173, 91,183, 82,133, 66,145, 7, 32,240, 94, -183,211, 90, 47, 18, 12,140,248,174, 75,151,125,150,231,158, 51,127,215,165,203,190, 96, 96, 4,170,195, 9, 17, 0,243,150, 46, - 93, 26, 99, 52, 26, 99,182,108,217, 18, 51, 98,196,136, 24, 0,179, 91,120,205, 47, 63,255,252,115,106, 52, 26,233,150, 45, 91, -232,136, 17, 35, 40,128,213,142,150,151,203,229, 29, 58,119,238,188, 45, 52, 52, 52,189,107,215,174,250,144,144,144,170,192,192, -192,212,176,176,176,173, 34,145,168, 73,191, 73, 44, 53, 63, 53,226, 69,122,206,155, 55,111, 62, 0, 58,111,222,188,249,148,210, - 72,235,247,122,164,253,243,218,143,148,210,112,251,215,117,105,216, 82, 93,154,117, 93,163,214,115,219,103,208,182,234,208,219, -250,122,114,205, 49, 91,163, 14, 30, 60, 56,224,224,193,131,199,106, 55,238,249,182,232, 59,189,175,111,101,101,126, 14,141,251, -236,109,250,231, 32, 63,122,114,160, 23, 77,156,245, 12,205,217,190,138,254,167,155,179,246,185,182, 24,228,232,141,180, 25,173, -189,123,247,210,125,251,246,209, 95,126,249,133,198,197,197,209,194,194, 66,186,125,251,118,179,171,171,107,165, 72, 36, 90, 2, - 64,226,136,158, 82,169, 84, 83, 74,169, 78,167,163,139, 22, 45,170, 82, 40, 20, 23, 0,120, 90,141, 18,213,104, 52,116,201,146, - 37, 85, 42,149, 42, 22,128,143,155,155, 91,198,205,155, 55,169,167,167,103,157,102,198,217,217, 89,125,237,218, 53,234,236,236, -172, 6,224,235,236,236, 28,183,127,255,126, 3,165,148,102,102,102, 82, 23, 23, 23, 53, 0, 79, 87, 87,215,139, 7, 15, 30, 52, - 80, 74,105,118,118, 54,117,113,113,113,216,104, 85, 86, 86,210,223,126,251,237,150, 58,216,242, 15, 29, 58,116,139, 1,115,224, -126,122,170, 84,170,152, 31,126,248, 65,111, 54,155,105, 92, 92, 28, 85,169, 84,106, 0,158, 78, 78, 78, 23,118,239,222,173, 55, -155,205, 52, 33, 33,193, 97, 51,216,166, 77,155, 60, 74, 41, 53,153, 76,116,195,134, 13, 58,219, 61,181,229,235,245,122,186,110, -221, 58,157, 82,169,140, 1,224,217,144,150,155,155, 91,182, 94,175,167, 26,141,134,246,234,213,171,252,228,201,147,180,180,180, -148, 82, 74,169, 85, 15, 65, 3, 38,254,247,236,245,242,210,215,230,172,253, 49,160,231,203,159, 29, 62,151,149,249,205,207,209, - 49,110, 97, 35,135, 57,208,126,137, 64, 32, 88,226,237,237, 93,117,244,232, 81,179, 94,175,167, 55,110,220,160,167, 78,157,162, -103,206,156,161,209,209,209, 52, 46, 46,238,225, 51, 90,187,193,165, 27,131, 70,210,141, 65, 49, 91,199,185, 21,148, 93,216, 73, -233,145, 25, 52,249,191,109,233,135,195, 20,101,150,141, 65, 49,116, 99,240,115,244,163, 1,188, 38,105,110, 10,121,154,110, 12, -138,249,252,249,214,133, 23, 99,206,211, 99,199,142,209,117,171,150,210,233,225,190, 21,150,141, 65, 49,116,125,200,232, 38,105, -218, 37,145, 72,116,253,196,137, 19,244,248,241,227,244,227,143, 63,166, 82,169, 52,189,229,247, 33, 68, 64,215, 7,182,166, 95, - 7, 14,160,155, 59,122,211,191,154, 87,183, 59,153,122,250,192,119, 72,160, 48,179,224,226,207,148, 22,221,160,185,203, 67,233, -176, 32,126,139,204,150,213,100,229,167,166,166,210,220,220, 92,186,114,229, 74,170, 84, 42,239,107,179, 21, 4,140, 4, 48,127, -217,178,101, 53, 38,107,237,218,181, 49,151, 47, 95,142,241,247,247,255,165, 5,215, 90,189,108,217,178, 26,147,181,118,237, 90, -122,249,242,101,218,186,117,235,140,198,202,142, 27, 55, 78,218,183,111,223,152,177, 99,199,106,183,110,221, 74, 83, 83, 83,105, -108,108, 44, 93,182,108, 25, 93,184,112, 33,253,246,219,111,233,232,209,163, 43,122,245,234,117,246,185,231,158, 19, 55,177,110, - 60, 74,169,208,154,248,148, 82,155,209,228, 1,224,219,254,249,103,233,159,212,144, 23,161,245,152,169,250, 12, 86,237, 99, 13, - 24,177, 6, 13, 91, 99,215,163,244, 86, 83, 85, 87,178,239, 90,253, 43, 50, 50,114, 0,106,193,163,248,100,242, 59,255, 21,167, -108, 93, 9,245, 15, 95,129,171, 81,131, 95, 86, 8,221,137, 40, 24, 79,236,199,248, 62,125, 36, 18, 66, 62,173, 93,174, 49,196, - 98, 49, 36, 18, 9, 68, 34, 17, 52, 26, 13,146,147,147,209,183,111, 95, 78,116,116,180,120,242,228,201, 51, 36, 18, 73, 58, 33, -100, 84, 99, 58,182, 30,233, 83,167, 78, 97,210,164, 73,162,109,219,182,117,117,119,119,191,100, 54,155,133, 0,144,144,144,128, - 23, 95,124, 81,180,115,231,206, 78, 62, 62, 62, 23, 12, 6,131, 84, 36, 18,129,203,229,214,171, 39, 20, 10, 97, 52, 26, 69, 29, - 59,118,140,189,116,233, 82,216, 83, 79, 61,197, 79, 75, 75,195,205,155, 55, 97, 52, 26,133,129,129,129,151, 47, 92,184,208, 53, - 50, 50,146,159,145,145,129,180,180, 52,212, 49, 13,161, 94,125,189, 94, 15,145, 72, 4, 14,135,115, 75,190, 78,167,131, 80, 40, -116, 88,139,207,231, 63, 17, 28, 28,124,249,210,165, 75,221, 71,142, 28, 41, 56,127,254, 60, 50, 51, 51, 97, 54,155,133, 33, 33, - 33,151, 47, 93,186,212,109,196,136, 17,130,216,216, 88,168,213,234, 91,174,215, 16,182,243, 46, 93,186,132,177, 99,199, 10,127, -253,245,215,110,222,222,222,177, 38,147, 73, 8, 0,151, 47, 95,198,139, 47,190, 40, 60,124,248,112,247, 86,173, 90,197, 54, 50, -148,200, 5, 0,163,209,136, 55,222,120, 67,166, 84, 42,145,145,145, 1,139,197, 2,179,217, 12, 0, 40, 44, 46,188,124,233,114, - 92,194,248, 49,207, 15,168, 52,232,116,167,207, 69, 95,109,215,166,181, 31, 33,180, 77, 67,245, 36,132,140,146, 74,165,233,159, -127,254,249,204,148,148, 20, 81, 80, 80, 16, 39, 54, 54, 22, 26,141, 6, 66,161, 16, 98,177, 24, 34,145, 8,124, 62,223,161,118, - 63, 80,148,134,186,194,130, 33,105,249,122,145,200,201, 79, 33,247, 14, 4,210,143,163,173,187, 8, 92, 14, 87,124,254,166, 86, - 6,208, 33,240, 47,112,109,154,166,101,200,205, 60,189,200,232,210, 73,238,227,231,143,194,194, 66,180,106, 23,140, 42,161,187, -240,212,141, 10, 57, 72, 19, 53,173, 16, 66,250,119,236,216,209,171, 67,135, 14, 40, 40, 40, 64,247,238,221,225,236,236,236, 76, - 8, 25,210, 84,173, 26,182,182, 17,161, 20,253, 0,206,114,152,201,199, 48,242, 22,227, 70,126,119,108,234,113,223,188,225,189, -124,137,175, 82, 46, 60,179,115,215, 15,190,174,254, 33, 64,212,107,240,116, 18, 97,243,212,238, 46,238, 42,209,190,230, 12, 35, - 18, 66,194, 60, 61, 61,143,158, 61,123,214, 77, 44, 22,227,194,133, 11, 8, 13, 13,197,202,149, 43,221,157,157,157,143,223, 15, -195,136,148, 82,154, 0, 28,248, 60, 54,118,203,182,164,164,131,227,218,183,127,106,108, 96,224,162, 41, 47,189, 52,241,173,183, -222,194,210,165, 75,177,111,223, 62,244,235,215, 15,147, 39, 79, 54,166,167,167,127,215,156,235, 16, 66,190, 90,190,124,249,244, - 25, 51,102,212,214, 52,164,165,165,125,222, 80,217,176,176, 48,191,235,215,175,103,205,154, 53,171,251,182,109,219, 36, 82,169, - 20, 26,141, 6, 95,127,253, 53,230,207,159, 15, 66, 8, 40,165,248,246,219,111,165,175,190,250,106,207,164,164,164,172, 54,109, -218, 56, 50,173,131, 0, 16, 3,144, 90,147, 12,128,116,231,206,157,170,145, 35, 71, 42,173,121, 18, 0, 18, 66, 72,179,135,226, - 31, 98,234,244, 34, 54, 8, 33, 7,237, 95, 83, 74,159,170,157, 87,251, 24,165,244,169,134, 52,154, 66, 61,215,139,170, 29, 25, -222, 30,251, 95,222,129, 81, 81, 81,199,254, 37, 10,116,241, 10, 8, 66,201,145,221,144,240, 8, 36, 92,107,226, 17,112,146, 47, -163,149,152, 15, 35,165, 97, 77,173,172, 88, 44,174, 49, 91, 18,137, 4, 2,129, 0,229,229,229, 48, 26,141,120,239,189,247, 68, - 71,142, 28,113,229,112, 56,255,215,152,142,189, 97, 74, 76, 76, 68, 72, 72, 8, 57,112,224,128,231,180,105,211, 36, 0, 32, 20, - 10, 81, 82, 82,130, 14, 29, 58,144, 67,135, 14,121,188,255,254,251,242,134,204, 12, 33, 4, 2,129, 0, 51,102,204,144,156, 59, -119,206,197,199,199, 7,201,201,201, 40, 42, 42,130, 92, 46,199,140, 25, 51, 36,103,207,158,117,247,241,241, 65,106,106, 42, 74, - 74, 74, 32,151,203,155,108,180, 4, 2,193, 45,101, 8, 33, 48, 24, 12, 16, 10,133, 14, 27, 34,149, 74,181, 35, 38, 38,198, 93, -165, 82, 33, 54, 54, 22, 38,147, 9, 42,149, 10,211,167, 79,151,196,196,196,184, 59, 57, 57, 33, 33, 33, 1,148, 82, 40,149,202, - 38,213, 17, 0, 44, 22, 11, 18, 18, 18,208,166, 77, 27, 28, 63,126,220, 99,202,148, 41, 98, 91,254,141, 27, 55,224,231,231,135, -227,199,143,123,200,100,178, 29,245,105, 89, 44, 22,228,228,228,224,202,149, 43, 72, 78, 78, 70,126,126, 62, 10, 10, 10, 80, 86, - 86, 6,147,201, 4, 0,144,150,149, 70,237,252,241,192, 37,137, 68, 34, 13, 13,236,232,127, 57, 46, 62, 79, 34,145, 72, 91,251, -251, 7, 18,242,113,189, 55,131, 16,242,127, 73, 73, 73,174,175,190,250,170,224,250,245,235,200,206,206, 6,159,207,175,249,108, -217,146, 72,244,144,125,151, 17, 66, 64,244, 29, 65, 72,247, 51,201, 21, 46,253,159, 26, 35,192,205, 95, 1,139, 17,224,240, 48, -176,139, 31,111,223,229, 10, 79, 80,116,129, 14,193,128, 3,111, 60, 33, 4, 48,116, 0,200, 35,191, 93, 55,185,246,123,102,170, - 32, 43, 43, 11, 2,129, 0, 34,145, 8,221,159,120,150,183,243,146,209, 11, 4, 93, 97, 64,144, 67,154,118, 72, 36,146, 15, 22, - 46, 92, 40,179,215,156, 56,113,162, 76,165, 82, 45,108,214, 61,216,218, 70,132, 10,105, 31,152,232,140, 43, 89,218, 54,139,162, -114, 67,146,242, 42,131, 64,233, 44,192,216,173,165,102,139, 16, 50, 80, 44, 22,223, 36,132, 60,214, 92,141, 94,190,196, 87,169, - 16,158,222,181,235, 7, 95,151, 86,213, 38, 11,166, 42,128, 47,129,151,187, 19, 54,207, 28,228,226,238, 36,105,146,217,178,154, -172, 63,206,156, 57,227, 38, 22,139, 17, 19, 19, 3,129, 64, 0,177, 88,140,206,157, 59, 99,227,198,141,238, 46, 46, 46,247,149, -217, 90, 18, 27,187,117,241,149, 43,137,243,194,194,130, 71,201,100, 46,111,142, 29,171,122,255,253,247, 15,238,223,191,127, 75, -100,100,100,193,185,115,231,190,160,148,238,110,138,182,117, 50,253,218, 21, 43, 86,188,105, 51,110,239,191,255,254,183,251,247, -239, 95, 28, 25, 25,153,115,238,220,185, 89,148,210,181, 13,105,148,151,151,239, 95,176, 96,129,234,153,103,158,177,189,198,137, - 19, 39,240,221,119,223, 65, 38,147,221,114,238,136, 17, 35, 48,105,210, 36,103,189, 94,223,224,111,146,167,167,231,224, 51,103, -206,132, 2, 16, 0, 16,193,106,180,226,226,226,156, 74, 75, 75,157,228,114,185,147,183,183,183,194,154, 47,121,230,153,103,156, -248,124,126,179, 63, 99, 15, 41,117,122, 17, 27,181, 77, 83,125,121,205, 61,223, 17,106,151,167,148,230,208,122,246, 57, 4,236, -140, 86,100,100,228, 49, 0,143,215,117,146,161, 72, 13, 17,204,144,112, 9,164, 92, 59,179, 5, 11,120, 37,121, 77,252,202,173, -166,246,143,161, 68, 34,129, 88, 44, 6,159,207,135,209,104, 68, 73, 73,137, 67, 58, 54, 83,160, 84, 42, 33,151,203, 81, 89, 89, - 9,147,201, 4,177, 88, 12, 0, 80,169, 84, 80, 42,149,224,243,249, 53, 63,194,181,123,147,236,225,112, 56, 16, 8, 4,144,201, -100,200,201,201, 65, 90, 90, 26, 44, 22, 11,228,114, 57,100, 50, 25,132, 66, 33,178,179,179,145,157,157, 13, 74, 41,100, 50, 25, -100, 50,153,195,230, 8, 0,204,102, 51,132,194,127,207, 3, 54, 26,141, 77,234,209, 50,153, 76,184,122,245, 42,210,211,211, 33, - 22,139,107,218, 42, 18,137,112,227,198, 13,228,230,230, 66, 42,149, 66,169, 84, 66,165, 82, 57,172,107,107,139, 66,161,128, 68, - 34, 65,113,113, 49,180, 90,109,205, 61, 85, 42,149,144,201,100, 40, 41, 41, 65, 94, 94, 94,131,109, 55,155,205,200,206,206, 70, -126,126, 62, 50, 50, 50, 80, 80, 80, 80, 99,182, 44,150,150,199,191, 60,126,252, 56,146,147,147, 65, 41,133, 72, 36,170,121,127, -237, 31,109,245,126,104, 88, 23,166,130,145, 31, 81, 80,110, 20,229, 27, 4, 42,207,176,112,224,230, 33,128,195, 3,196,206,232, -221,169, 45,210,138,205,178,107,106,189, 24, 4, 67,177, 54,208,217, 33, 77, 51,127, 72,126,153, 81,148,106,112, 87,134,116,233, - 1,181, 90, 13,145, 72, 4,145, 72,132, 71,250,133,227,102,161, 89, 26,159, 85, 41, 5, 69,132, 67,154, 86, 8, 33,237,228,114, -121,159,199, 30,123,140,216,107, 14, 31, 62, 28,132,144,206,132,144,224, 38,181,127, 77,123, 33, 12,210,222,224,209, 25,241, 57, - 90,159,125,113, 85,129, 79,143,122,214,229,203,223,243, 66,174,230,234, 2, 64,141,239,128, 26,122, 52,215,108, 17, 66, 6, 40, - 20,138,131,107,214,172, 9, 16,139,197,135, 8, 33,253,155,163, 35,151,112, 55,124,240,230, 24, 95,103,155,201, 50,106, 1,158, - 4,224, 75, 0,158, 4, 94, 30,110,248,116,210, 16, 23,169,152,191,215, 81, 77,137, 68,178,115,237,218,181,238,181, 77,150, 45, -117,239,222, 29, 31,126,248,161,187,139,139, 75,189,255,252,220, 13, 8, 33, 17, 78, 78, 78,219,194,195,195,207,100, 43, 20,147, -114,122,244, 16,254,161, 82,149, 12, 46, 41, 81,181,142,139, 51, 4, 1,151, 1,172,203,200,200, 24,230,168,201, 34,132,188,164, - 82,169, 98,194,195,195, 13, 10,133, 34,125,229,202,149,255,153, 54,109, 26,150, 46, 93,138, 5, 11, 22,124, 13,224,117, 74,233, -123, 25, 25, 25, 62,141,153, 44, 0,200,205,205,125,121,238,220,185, 5, 5, 5, 5, 0,128,206,157, 59, 67,163,209, 96,246,236, -217,120,251,237,234, 69,177,221,186,117, 3,165, 20,106,181, 26,203,151, 47, 87,231,230,230,190,210,144,166,217,108,206,216,189, -123,119, 79,131,193,224,135,234,225, 65,145, 70,163, 81, 22, 21, 21, 41, 12, 6,131,204, 98,177,200,156,156,156,228, 0,164,227, -199,143,231,197,199,199,135,152, 76,166, 44, 71,218,255,191, 66, 67, 94,164,153, 68, 53,167,144,173,231,170,174, 30,177,186,104, -180, 71, 43, 50, 50,146,216, 63,218,195, 37,136, 77,143, 62, 14,151,176, 30,183,244,102, 73,185, 4, 18,165, 10, 55, 51,210, 32, - 0,185,210,212, 70,216,140, 85,109,179, 85, 82, 82,130,169, 83,167, 86,190,240,194, 11,133, 22,139,229,217,198,116,108, 63,242, - 42,149, 10, 42,149, 10,241,241,241,116,244,232,209,234,149, 43, 87, 86,218,242,149, 74, 37, 18, 19, 19,105, 68, 68, 68,222,194, -133, 11,203, 27, 50, 90,182, 30,173, 37, 75,150, 84, 14, 28, 56, 48,255,202,149, 43,212,102,166,228,114, 57,150, 47, 95, 94, 57, -104,208, 32,245,249,243,231,169, 45,175, 41, 61, 90, 28, 14,167,198,104,217,151,225,112, 56,176, 88, 44, 77, 50, 90, 21, 21, 21, - 47, 71, 70, 70,170, 19, 18, 18,168,173,157, 42,149, 10, 43, 87,174,172, 28, 50,100,136,250,202,149, 43,212,150,167, 84, 42, 29, - 54,131,182,235, 43, 20, 10, 40,149, 74,196,199,199,211,136,136, 8,245,234,213,171,171,236,243,175, 94,189, 74, 71,140, 24,161, - 46, 43, 43,123,185, 62, 45,139,197,130,228,228,228,154, 30,172,170,170, 42, 20, 20, 20, 32, 35, 35,163,102,232,176, 82,166, 28, - 54,230,133,167,187, 86, 86, 86,106,227, 19,175,167,119,238, 20,234, 81, 89, 89,169, 77, 75, 79, 79,164,116, 97,189,110,140, 82, -250,236,107,175,189, 86, 56,127,254,252,202,210,210,210, 58, 77,150,237,241,161,130, 99,241, 2,161,143,253,125,189,220,105,200, -211, 47, 10, 73,238, 57,192, 80, 14,136,156, 1,145, 51,120, 50, 87, 60,217,191, 27,119,235,153, 82, 47, 80, 75, 95, 8, 68,126, -141,106,242,169, 39, 96,233,127, 36,177,202,249,177,231,166, 11,139,138,138,192,229,114,107, 76,145, 84, 38,195,224, 81,227, 57, -223,158,211,121, 1,180, 31, 8,183,113, 77, 43, 66,161,112,206, 7, 31,124, 32, 40, 46, 46, 6,135,195,249, 71, 83, 42,197,148, - 41, 83, 68, 74,165,114,129,195,109,223, 19, 42, 0, 95,212, 27,160,111, 95,203,173,242,217,127,185, 50,232,157, 37,155, 37, 97, -221,122,226,141,129, 30,146, 37, 81,121, 97,151, 50, 42,219, 2,230,153, 48,233, 31,105,170,217, 34,132,244, 87, 40, 20, 81,209, -209,209,210,225,195,135, 99,249,242,229, 50,137, 68,114,136, 16,210,228, 47,254,138,114,243,180, 79, 86,127,175,142,253, 98, 40, - 96,168,168, 54, 88,118, 41,175,220,130, 15, 55, 31, 45, 49, 26,233, 24, 71, 53, 43, 43, 43, 39,188,254,250,235,133,123,247,238, -253,151,201, 18,139,197, 72, 73, 73,193,162, 69,139,138,138,138,138, 94,105,106,125,111, 23,132,144,136,105,211,166, 45,202,204, -204, 12, 58,114,228, 8, 47, 63, 63,223, 99,197, 55,223,148,236, 41, 41, 41, 90, 28, 23,119,237,189, 78,157, 58,206,235,210,229, -149,250, 66, 63,212,163,249,210,155,111,190,185, 51, 51, 51,179,251,239,191,255,206,207,207,207,247,123,243,205, 55,177,108,217, - 50, 44, 88,176, 96, 35,128, 55,168,117,178,140,163,232,245,250,107,197,197,197, 79, 13, 29, 58, 84, 83, 92, 92,140, 46, 93,186, -224,233,167,159,134,151,151, 23,124,124,124, 48,114,228, 72, 4, 6, 6,162,176,176, 16, 99,198,140, 41,202,207,207, 31, 74, 41, - 77,110, 72,179,176,176, 48,105,199,142, 29,137,211,167, 79,239,158,153,153, 25, 2,192,181,172,172, 76, 86, 86, 86, 38,210,235, -245, 18,103,103,103,231,110,221,186,185, 77,158, 60, 89,126,241,226,197,144,204,204,204,114, 0,105, 77,169,247,195, 76, 67, 94, - 4, 64,190,213,240,232,107, 61,230, 55,114,204,209,178,117, 62,119,224,188, 26,172, 97, 29,106,146, 45,191,209, 95, 94, 3,240, -225,119,187,183, 86, 9,253, 59, 64, 21,212, 21, 82,177, 24, 18,161, 16, 18,103, 87,232, 44, 22,124,147,146,171,173,160,212,241, - 47, 74, 43,246,195,134, 98,177, 24, 92, 46, 23,235,214,173, 51,245,233,211,167,234,232,209,163,107,180, 90,173, 63,165,244,231, -198,116,236, 77,193,234,213,171,181, 51,102,204,184,148,151,151,215, 85, 44, 22,235,109,249,107,214,172,209,142, 31, 63, 62, 46, - 51, 51,179,187, 84, 42,213,214, 55, 63,203,166,103, 29,218,208,229,229,229,245,156, 56,113, 98,194,186,117,235, 42,164, 82, 41, -100, 50, 25, 68, 34,145, 62, 47, 47,175,235,127,254,243,159, 75,203,150, 45,211, 74, 36, 18,200,100,178, 38, 13,203, 81, 74,255, -101,168,236,243, 29,197,104, 52, 30,205,203,203,235, 58, 99,198,140,139, 95,126,249,101,133,205, 0,217,215,113,197,138, 21, 90, -185, 92,222,164, 30, 45,219,121, 50,153, 12,171, 86,173,210, 78,159, 62,253, 82, 94, 94, 94, 87,145, 72,164,183,203,175,152, 54, -109,218,197,188,188,188,174, 70,163,241,104,125, 90,102,179,217, 92, 90, 90, 10, 30,143,135,184,184, 56,157, 64, 32, 0,135,195, -193,141, 27, 55,106,140,150,139,139, 75,104,215,206,157,130,191,223,185,251,152, 68, 32, 18,245,233,249, 72, 72,114,106, 90, 38, -165, 36,181,161,122, 82, 74,127,174,170,170,242, 63,113,226,196,154,161, 67,135, 86,125,253,245,215, 38, 30,143,247,175, 31,159, -135,207,104, 65, 10, 2,201,245, 60,157, 66,204, 49, 17, 36,254, 92,109,178,196, 78,128,216, 25, 16, 59,195,215,215, 15,231, 82, -180, 10,112, 32,132,217,129, 24, 98,148,202, 64, 32,141, 83, 67,193, 23, 74, 72,110,110,110,141, 33,178,165,128, 14, 33,184,144, - 86, 46, 7,161, 34,112,209,148, 16, 36, 79,185,186,186,242,114,114,114,254,165, 25, 26, 26,202, 53, 26,141,142,135,118,201, 54, -123, 3,150, 55, 19,115,171,188,127,186, 84, 17, 52,115,241,183, 18,137, 89, 3, 68,175, 70, 88, 59, 31,204,124,174,155,240,253, -253,249, 97,231, 83,181,237,192,165,111,192, 82,238,238,168, 52, 33,228, 49,133, 66,113,232,252,249,243, 82,133, 66,129,228,228, -100,244,236,217, 19,155, 54,109,146, 74,165,210, 95, 8, 33, 3,155,208,102,156,201,165,105,229,101,230, 62,115,118,167,231,198, -230,152,110, 49, 89,249, 21, 20,175,127,190, 95, 83, 92, 90,245,236,233,244,250,255,126,106, 67, 41,189,168,209,104, 34, 22, 44, - 88, 80,152,159,159,127,203,103, 60, 45, 45,205,102, 8, 6, 82, 74,155,252,207,239,237, 66,165, 82,141, 93,188,120, 49,206,159, - 63,143,225,195,135,227,248,241,227, 40, 42, 42,194,174, 67,135,174,239,184,126,253, 61,219,156,173,186, 66, 63,212,135, 82,169, -124,103,241,226,197,136,142,142,174,209, 44, 44, 44,196,226,197,139, 51, 1, 76,109,170,201,178,161, 86,171,207, 93,187,118,109, -104,151, 46, 93,174,174, 89,179, 38,211,219,219,219, 50,121,242,100,188,254,250,235,112,119,119, 55,175, 90,181, 42,189,127,255, -254,113, 73, 73, 73,225, 21, 21, 21,151, 27,211,163,148,210,130,130,130, 83,155, 54,109, 58,243,196, 19, 79, 72, 39, 76,152,224, -190,111,223, 62, 87,173, 86,235, 35, 18,137, 60,244,122,189,240,234,213,171,220, 61,123,246,120,197,199,199,167, 84, 86, 86,158, -107,110,221,255, 7, 57,143,234,222,169,223,107, 61,158,111,228,152,163,101,235,123,222,216,121, 53, 80, 74, 55,217, 39,251, 3, -141,166,177,237,240,209,148, 78, 10,237,169,113,189,105,238,228,199,168,250,197, 16,122, 98,128, 11,157,216,158, 84, 76,104,102, -120,135,172,172, 44,170, 86,171,105, 97, 97, 33,253,225,135, 31,168,151,151, 87,133, 66,161,104,114,120, 7, 47, 47, 47,117,105, -105, 41,125,244,209, 71,139,220,221,221,107, 66, 17,120,123,123,171, 43, 42, 42,104,239,222,189,139, 60, 60, 60,106,194, 59,248, -249,249,101, 80, 74,105,235,214,173,235, 92,217,231,229,229,165, 54,153, 76,212,203,203,203, 22, 34,129,239,226,226,178,190, 87, -175, 94, 69,106,181,154,122,123,123,215,132, 78,112,119,119, 95,222,179,103,207, 91,242, 29,168,111, 70,102,102, 38,205,204,204, -164,173, 90,181,202,182,207, 79, 75, 75,163,105,105,105,212,207,207,175,201,225, 29,220,221,221,151,213,174, 75,115,235,232,239, -239,175,174,172,172,164,125,251,246,189,229,158,250,251,251,171,171,170,170,108,249, 14,133,119,144, 72, 36,111,136,197,226,108, -177, 88,156, 45, 18,137, 22,181,105,211, 38,239,199, 31,127,164,171, 86,173,162, 10,133,162, 58,188, 67,232,136, 62, 29,250,190, -242,158,123,232,200,119, 90, 18,222, 65,161, 80,252,225,229,229, 85,177,103,207, 30,170,211,233,168,209,104,164, 54,240, 48,173, - 58,220, 20,216,129,174, 15,222,159,244, 73, 64,252,140,199,165, 85,151, 63,237, 74,233,255, 61, 67,233, 47,175, 83,122,116, 14, - 61,183,113, 50,237, 27, 32, 50,159,156,221, 42,145,110, 8,250,201,161,144, 12,155, 58,119,160,235,131,127,185,254,113, 64,252, -132,254, 62, 85,223,172, 91, 69,207,158, 61, 75,227,226,226,104,114,114, 50,253,229,231, 31,105,223,118,210,106,205,245,193,251, -155, 18,230, 1, 64, 63,145, 72, 84,190,114,229, 74,122,230,204,153, 26,205,253,251,247, 83,169, 84,170, 5, 28, 92,181, 12, 16, -186, 62,116,148,105, 93,208,223,239, 15,145,151, 21, 30,156, 67,233,229,173,148,110, 10,163,116, 75, 47, 74,127,140,164,244,192, - 43,244,204,170,231,104,191, 0,129,145,110, 8, 58, 78, 55,134, 14,113,180,158,124, 62,191,116,239,222,189, 52, 59, 59,155, 30, - 63,126,156, 70, 71, 71,211,132,132, 4,154,158,158, 78,163,162,162, 40,159,207,175, 2,208,228, 85,141,189, 60,209, 58,188,163, - 32,231,210,146,126,148,238, 27, 67,243,119,140,165, 79,117, 82, 20,245,110,197,123,162,185,159, 1, 0,221, 92, 93, 93, 11,162, -162,162,104, 74, 74, 10, 61,118,236, 24,245,240,240, 40, 0, 16,118,175, 63,159,225,225,225,103, 41,165, 49,195,135, 15,143, 1, -240,107,120,120,120,204,205,155, 55, 99,122,246,236,121, 6, 13,132,126,104, 72,115,240,224,193, 6, 74, 41, 29, 62,124, 56, 5, -144, 29, 30, 30, 78,111,222,188, 73,123,246,236,169,191, 29,117, 70,245,162,157, 87,248,124,254, 55, 46, 46, 46,127, 58, 59, 59, - 31,229,114,185,155, 0,140,115,228,123,174, 1, 77, 31, 0,161, 0, 30,177,166, 16,107, 30, 91,113,248, 63,148, 28, 62,241,185, - 0,244,123,181, 29, 57,246,114, 91,148,141,105,139,242,215,218,147, 19,207, 6,160,193, 47, 10,212,177,187,183,205,104, 21, 21, - 21,209,139, 23, 47,210, 1, 3, 6, 84,200,100,178, 44, 0, 67, 29,170,112, 45, 77, 55, 55,183,104, 15, 15,143, 12, 30,239,214, - 47, 45,187,252,193,246,249, 30, 30, 30,167,188,189,189,213,238,238,238, 23,234,210,116,115,115,139,246,246,246, 86,187,185,185, - 69,219,151,227,114,185,195,221,220,220,178,106,231,243,120,188, 39, 60, 60, 60, 50,106,231,215,213,118, 74,171,156,237,170,185, - 0, 0, 32, 0, 73, 68, 65, 84, 13, 85,118,118, 54,205,207,207,167,254,254,254,183, 24,173,204,204, 76,154,155,155,123,139, 1, -115, 68,179,177,186,212,151, 95,159,166, 3,247,180,201,239,187,221,177, 64, 95, 95,223,188, 21, 43, 86, 80,185, 92,158,103,127, - 44,232,241,215, 62, 56,123,189,188,244,245,185,235,127,116, 15, 25,213,185, 41,109,183, 59,111,168, 76, 38,203, 26, 52,104, 80, -197,141, 27, 55,168,141,186,140,150,163,154, 77, 73,119, 69,115,119,136,128,110, 12,233, 71, 55,132, 68, 37, 44,108,125,245,149, - 94, 50, 93,204,138,225,148, 30,157, 67,207,172,127,157,246, 9, 16, 86, 27,162,141,193,135,232,183,129,143,211,213,237,132, 14, -105,126,211,190, 63,221, 24,124, 40,254,195,214, 87,159,233,225,174,223,185,117, 35,189,113,227, 6,221,191,103, 7,237,221,214, -106,178, 54,132,252, 70,215,135, 12,114, 72,243,214, 99,253, 68, 34, 81,249,230,205,155,233,141, 27, 55,232, 79, 63,253,228,144, -201,186, 69,211,206,104,205, 15,151,107, 94,239, 37,214,141,233, 38,212,143, 12, 19, 24, 34, 58, 8, 76,125, 91,243,204, 93,189, - 57,150, 16,119,208,136, 32,137,142,110, 8, 58, 78, 55,132,252,235,123,165,190,122, 10,133,194,116,216,197,212,169,157, 68, 34, - 81,126,125, 70,171,177,247,189,151, 39, 90,135, 7,138,114,254,248,228, 9,250,116, 23, 69,161, 35, 38,171, 49, 77, 0,221,220, -220,220, 10,182,108,217, 66, 61, 61, 61,243, 29, 49, 89,119,227,243,169, 82,169,182,149,151,151,199, 28, 62,124, 56, 38, 60, 60, - 60,102,219,182,109, 49, 39, 78,156,136,145, 74,165,219,172,231,255,203,108,133,212,250,254,175,173,169, 84, 42, 99,202,202,202, -232,225,195,135,105,120,120, 56,221,182,109, 27, 61,113,226, 4,149, 74,165, 49,205,254, 59,186, 3,109,103,154,255,187, 9,213, - 49,180,110, 73, 53,199,238,240,133,235, 52, 90, 26,141,134,206,156, 57, 83, 47, 22,139,181, 2,129, 96, 62, 0,193,195,246,129, -169, 79,211,205,205,237,148,167,167,167,218,211,211,243, 22,179,103,159,239,230,230,118,225, 94,215,243, 78,106, 2, 8, 20, 8, - 4,105,124, 62, 63,209, 62,223, 61,116, 68,159,246,253, 38, 44,240, 12, 27,241,100, 75,234, 9, 64, 32, 16, 8,230,139,197, 98, -237,236,217,179,245,229,229,229, 15,151,209,162, 20,116,117, 59,161,205,108, 93, 94,208, 58,225,233, 78, 82,195,166, 89, 17,180, - 79,155, 90, 38,107, 75,107, 81,147, 52,173,102,235,226,251,254, 9,131, 2,229,166,197, 11,102,210,222,109, 37,183,154,172,166, -104,222,122,188,159, 84, 42, 45, 91,184,112,161,195, 61, 89,255,210,252, 38,200,159,110, 12,222, 86,109,162, 26, 73,235,131,190, -166, 95, 5,249,223, 47,239,123, 47, 79,180, 30, 28, 40,186,226,104, 79,150, 35,154, 0,186, 57, 59, 59, 95,117,196,100,221,173, -182, 3,136,152, 50,101, 74,204,205,155, 55, 99,146,147,147, 99, 78,156, 56, 17, 51,106,212,168, 24, 0, 17,118,231,212,152, 45, -195,232,209,186,110, 28,206,204, 70, 52, 95,154, 50,101, 10,189,121,243, 38, 77, 78, 78,166, 39, 78,156,160,163, 70,141,162, 0, - 94,186,157,239,209,157,120,223,153, 38, 75, 60,220,101,196, 98,113,158,147,147,147,187, 92, 46,143,170,170,170,154, 78, 41,205, -185,219,117,184,151,228,231,231,247,109, 74,254,195, 8,165, 52, 17, 64,235,218,249,121, 87,246,157, 6,112,250, 54,232, 27, 0, - 44, 38,132,124,183,113,227,198, 53,203,151, 47, 31, 37, 22,139,243, 27, 45,248, 32, 49, 61, 73,143, 53,237,163, 33, 20, 46,233, -228, 43,157,247,193,112, 74, 22, 31, 62,213,122,233,104,143,244,190,237,101, 41,224, 91, 62, 7,209,157,195, 43,169,186, 38,106, -158,131,196,184,164,107, 43,233,188,207, 70,130,124,126,104,107,235,101,163, 92,211,251,182,147,167,131,226,115,136,180,167,155, -164,105, 7,165,244, 36, 33,228,201, 21, 43, 86,124,167,213,106, 39, 81, 74,255,108,178,136,130,147,139, 10,227, 66, 24,185,157, - 64, 81,255,132, 70, 74,181,224,112,227,144,135,251,102, 51,241, 51,185, 52, 13, 64,147, 67,225, 52, 4,165,244, 34,170,135,163, -238, 27, 40,165,191, 17, 66,176, 99,199,142,177,193,193,193,237,226,227,227,147,181, 90,237,118, 74,233,111,118,231, 80, 66,200, -129,207, 99, 99, 43,190,138,143, 63,169,183, 88, 78, 54,162,185,203,170,249, 78,112,112,112, 88,124,124,252, 21,173, 86,187,130, - 82,186,235,206,183,136,193,104, 25,119,221,104, 85, 86, 86, 54,107, 31, 63, 6,163,169, 88, 77,252,232,123, 93,143, 59,134,157, -217,234,225, 47,153,190,119,138, 68, 11, 74, 50,193,183,172,106,178,201,186, 85,243, 28, 36,198, 37, 61, 91, 75,222,254,233, 13, -137, 22, 20,185,160,248,162, 37, 38,203, 6,165,244, 36,128,182,205, 22,120, 46,222, 0, 32, 5,132,164,226, 35,212, 63,137,250, - 35,212,252,219,205,184,251, 88, 77,213,111,141,156, 67, 1, 28,181, 38, 71, 52,119, 1, 96,198,138,241,192,113,215,141, 22,131, -193,184,141, 76, 79,210, 99, 79,232,121, 20,112,103,131,131,182,128, 41, 13, 21,166, 92, 76, 79,213,183, 80,243, 44, 10,200, 12, -112, 17, 8,161, 41, 9,229,250, 92, 76,105,129,230,237,166,250, 71,186,126, 35,213,188, 48,168, 12, 6,131,209, 44, 8, 33,147, -169,221, 74, 67,251,215,204,104, 49, 24, 15, 58,213,189, 60,153,214,116,255,106, 50, 24, 12,198, 67, 78,109,195, 5, 84,239,201, - 20, 94,215,201,148,210,223,155, 32, 92,167, 70, 67, 52,166,207, 52,153, 38,211,100,154, 76,147,105, 50,205,135, 79,179, 49,237, -166,248,143,251,133,186, 34,195,215, 24,174, 59, 57,211, 30, 15,200, 74, 7,166,201, 52,153, 38,211,100,154, 76,147,105,222, 91, -205,135, 53, 57,190, 65, 31,131,193, 96, 48, 24, 12, 6,227, 95, 16, 66,186, 91, 31,189,173, 91,240,120,219,142,221,211, 57, 90, - 82,183, 64,111,240, 56, 93,136,133, 6, 3, 0,229,144, 4,152, 44,177,218,130,196, 22,135,124, 80,248, 6,185, 80, 8,119, 19, -232,159, 47,203,186, 86,212, 82,189,206, 65,170,209,158,110,138,177,185,133, 37,223,197, 37,148,237,107, 74, 89, 39,167, 54, 42, -177,139,243,115, 58,131,177,147, 80, 32, 72, 55,104, 74, 55, 21, 21, 37,149,181,180, 78, 12, 6,131,193, 96, 48,238, 11,186, 3, -184, 0, 32,146, 82,186,201, 58,148,216,240,100,248, 54, 97,253,207,139,197,146, 0, 0,176, 80, 10, 11, 5, 42, 74, 53, 49, 57, - 73,231,135, 2,128,123, 64,143,195,124,177,178,135,133, 86, 31, 55, 91, 0,147,161, 42,165, 36,245,204,163,142,212, 72,238, 17, -244, 76,120, 68,248,232,167,158,138, 12,234,220,169,115,123, 0,184, 28,119, 57,233,224,193,168,107,114,143,160,189,229,121,215, -126,106, 73,139, 41,196,255,125,228,145,110,143, 69, 71, 95,248, 4,192,155, 45,209, 2, 0, 87, 87,249,244,223,254,111,246,227, -131, 71, 47,151, 1,104,146,209, 18,187, 56, 63, 55,242,233, 97,221,222,125,107, 10,231,245,217,159, 5,156, 63,249,215, 82,133, - 79, 39, 13,181, 24,127,171, 80,191,248,119, 67, 27, 39, 51, 24, 12, 6,131,193,184,239,137,178,154,171,168,218, 7,234, 53, 90, - 98,177, 36,224,204, 95, 7, 93,126, 58,145, 1, 0, 8,239,238,133,247, 62, 93, 19, 65, 8,185, 6, 0, 35, 94,255, 40,240,147, -249,111,225,212,149, 60, 80, 74,209,173,131, 43,158, 28,249,188, 67,181,145,120,133, 62,250,226, 11, 47,188, 60,123,246, 59, 35, -110,220,184,145,186,115,231,206,191, 1,160,255,227,143,119,248,236,179,207, 94, 88,238,236, 34,146,120,133,102, 85,230,198,159, -111, 76,171, 78,125,223,246,190,161, 29,187,140,253,225,219, 53,156,129, 67,159, 29, 35,241,109,191,184, 50, 43, 41,203,145,178, -238,238,238, 51,248,124,190, 10, 0, 44,150,127,252, 79,187, 86, 92, 47, 0, 48,153, 45, 10, 23,223,224, 50,174, 64,108, 22,137, - 4,241,101,229,229,223,149,100,198,127,211,144,166,206,104, 12,123,123,234,171,156,139,201,133, 8, 8,235,207, 93,181,248,125, - 88,204, 70,231,153,243, 63,125, 46,250,236, 15, 0, 22, 30,107, 78, 59, 25, 12, 6,131,193, 96,220,123,104,117,220,198, 77,118, -175,107,158, 55, 56,116, 40,151,240,112,237,102, 46, 0,192, 73, 2, 76,127, 99, 2, 10, 11,242, 3,245, 38, 11, 94,155, 48, 14, - 23, 18,114,112, 45, 37, 31,148, 82, 4,250, 73, 29,174, 16, 23,150, 71, 94,155,248,218,128,195,191,253,118,238,131, 5, 31,124, - 79, 72,117, 52,240,141,155,190,238,243,225,194, 15, 39,141,155, 48,110,200,158, 61,123,174,160,214,206,216,142,194, 35,138, 53, -203,150, 44, 18,102, 22, 84, 85,205,152, 61,207,242,206,172, 25,171, 0, 60,235, 72, 89, 62,159,175,202,204,204,148,115, 56,183, - 78, 95,251,124,209,188,227, 67, 70, 47,191,158,154,174,185,120,120,255,254, 71, 67, 67, 67,145,153,149,219,111,233,151, 27,186, -122,183,127,244,213,178,210,202,209, 21,249,241,117, 70,161, 22,241,249, 87, 62, 94,186,190,155,197,169, 3,231,189, 73,195, 17, -214,222, 7, 89,121, 26, 60, 62,116, 4, 47,230,252,249, 8, 0,199,154,211, 78, 6,131,193, 96, 48, 24,247,158,134, 86, 29,114, - 0, 32, 42, 42,170,206,192,127,102, 51,197,181,148, 28, 92, 75,201,193,185,132,124, 24, 40, 31,171,150,126,140, 21,139, 23,162, -168,146,131,159, 78,101, 32, 49, 37, 23,137, 41,185, 40, 40, 46,255, 87,121, 90,107,137,230,138, 37,210,238,171, 86,169,150, 69, - 60, 46, 27,232,226,236,236,124,253,202,247, 21, 31,206, 82,135,124,252,118,134,128,175, 23,101,202,228,178,190,187,119,255, 24, -234,233,238, 33,147,203, 21,115,100,126,221, 54, 59, 57,117, 85, 53,164, 89, 27,169,103,200,136, 17,145,195,158,240,242,242,180, - 76, 89, 21,147,208, 41, 36,216,216,177, 67,199,126, 82,207,192, 17,245,149,177,215,180, 88, 44,224,112, 56, 80,171,213,200,206, -206,198,205,155, 55,145,152,152,136,140,140, 84,181,133, 82,190, 25, 22,142,183,183, 31,120, 60, 33, 2,218,180,198,250, 85,139, -165,159,126,244, 94, 79,177, 76,184,143, 16, 66,234,210,172, 42, 42,222,243,203,175,191,101, 29,218,185,222, 12, 0,121,197,229, - 56,122,254, 6, 46,196,103, 52,212,148, 6,235,121,187, 96,154, 76,147,105, 50, 77,166,201, 52,239, 7,205,250,188,200,131, 0, -165,116, 83,237,100, 59,214,224,170,195,164,140, 34, 92,187,153,139, 30,193,190,104,223,198, 27,231, 18,139,177,253,104, 6, 54, - 31, 78,195,209, 75,249,176,240, 20,200, 45, 5,174,167,170,113, 61,173,160,161, 56,205, 0, 0,174,136,255,226,219,111,151,204, -238, 28, 90,218,251,175, 67,211,225,235,126, 61,116,238, 92,205,116,174,136,255,162,115, 43,197,206,121,179,103,142, 85, 72,165, - 66,189, 78,143,118,109, 91,139,223,154, 54,253, 85,226, 44,218,233,104, 67,149,126,161,206, 34,137,228,155, 79, 63,154, 35,250, -226,167,235,233, 21,122, 84,236, 61,173, 78,126,103,222,135, 69, 60,190,120,189,210, 47,212,217, 81, 45,163,209, 8,157, 78, 7, -189, 94, 15,131,193,128,172,140,171, 35,254,248,233,221,161,109, 91,185, 12, 21,137,197,160, 0, 74, 43, 77,184,153,163,197,160, -193, 67,184, 61,186,119, 15,147,123,135, 76,172, 75, 75,163, 73, 45,177, 80,174,226,224,207, 59,184, 63, 30,185,136,239, 15,158, -199,190, 63, 47,226,220,177, 67, 38,106, 49,214,108, 83,161,240,233, 24,168,240,233,146,166,240,237,170,174, 73,126,157,163, 29, -173, 51,131,193, 96, 48, 24,140,187,143,117,165,225,228,218, 43, 14,129, 6,134, 14,171,170, 42, 83,158,125,113, 28,188, 61,188, -228, 35, 7,190, 34,136, 73,210, 32, 63, 39, 13, 55, 18,227,160,173, 50, 66,224,220, 22, 16,123,161, 77, 64,107,196, 94,219,103, - 88,189, 44,170,220, 98,210,165,212,167, 55,114,164,143,159,183,187,140,179,108,169,255,153,196,107,197, 61,118, 44,216,130,151, - 95,150,187, 45, 91,234,127, 38, 53, 89,198,145,138,105,223, 87, 39,140, 33, 28, 66, 49,119,238,108,140,124,106, 24, 94,123,117, - 60,249,238,187,173,189, 29,109,168, 5,252,175,230,191,255,177, 80,173, 49,233,207, 37,150,235,164, 50,137,228,228,245,242,138, -176, 0,127,201,240,209,175,100, 71,237,254,230, 11, 0, 19, 28,209,178, 25, 44,163,209, 8,131,193, 0, 0,102, 0,224,112,170, - 31, 11,203,244,200,211,232,160,214,232, 96, 50, 91, 48,250,197, 9,146,243,209,151, 38, 0,168,103,190,150,197, 98, 52, 25,177, -247,200, 5,100,157,223, 99, 33, 28,110,137,109, 50, 60, 80,109,178,188,188,252,143, 63, 53,122,188,187, 80, 92, 61, 12, 91, 86, -161,195,119, 27,150, 58,218,124, 6,131,193, 96, 48, 24,247, 0, 90,107,251, 29, 66, 72, 77, 94,189, 70, 43,245,202,223,143, 2, - 64,208,163, 67, 11,229, 98,158, 11,143, 67,160,206, 76,194,119,203,103,192, 98,161, 24, 62,105, 25, 20, 1, 94,144, 8,184,208, -149, 23,150, 23,222,248,203,181,161, 74, 16, 98, 28,178,118, 99, 86,192,127,166,182, 83,238,216, 81,206, 7,128, 29, 59,202,249, - 83,167,180, 82,174,219,152, 18,208,235,177, 30,160,102, 51,158, 26,249, 44, 94,124,233, 69,164,230,106,241,127,199,211, 81, 81, -169,119,104,127, 53,169,123, 72, 87, 15, 31,223, 97,111,191, 50, 76,198,227, 18,210,177,181,138,155,145,111, 52,113,185,124,243, -129,243, 37,217,163, 71,191,228,118,244,151, 31,159,144,186,135,116,213,230, 95,189,212,152,158, 78,167,131,217,108,134, 78,167, -131,209,104,132,139, 91,219, 95,134, 60,187, 60, 51, 39,183, 44, 42,183,184,170, 87,133,209, 4,181, 70,135, 60,141, 14,154, 10, - 3,188, 20,206, 48, 25,245,157,235,211,163,148,126, 63,234,217,113,227, 1,112, 8,199,180,165, 44,251,106,162,237,152,205,100, - 13, 27,249,178,251,241,152, 36,220,136, 62, 84, 76, 45, 38, 99,245,141,179,176, 45, 80, 24, 12, 6,131,193,184,207,177,155,167, - 21,101,157, 28, 15,192,206,104,217,198, 70, 35, 35, 35, 73,173,178,200, 82, 23,193, 85,206,131,187, 79, 0,198,206, 88,129,239, -191,152, 5,179,217, 8, 74, 1,147,217,177,200, 4,148,242,143,188, 57, 53, 32,184, 77, 0,215,125,236,203,210,202,237, 59,180, -146,177, 47, 75, 43, 59,117,118, 45,121,115,106, 64, 74, 89,149,127, 63,147,217,140,147, 87,242, 16,151, 82,130,184,212, 82,200, - 37,142,135,249,226, 10, 5, 83,151, 46, 89, 44,224,113, 9,185,146, 86, 94,158, 89,104, 42,231,242,249, 6,169, 68, 72,245,148, -167, 75, 45,160,133,131, 71,189, 90,121, 96,219,151, 19, 1, 76,171, 79,199,182,210,208,214,147,101,123,164,148, 82, 2, 88, 44, -196,108,206, 44,168, 66,185,193, 8,117,241, 63, 70,139,152,234, 31, 57, 85,248,116, 12, 84, 41, 93,126,229,114,185, 34, 74, 1, -163,193,244,130,194,167,227,208,178,236,235,137,246, 38,235,204,149,108, 36, 93,252, 93,109, 54,104,199, 85,168, 19,254,112,184, -241, 12, 6,131,193, 96, 60, 4, 52,228, 69,238,119,108, 61, 88,117,246,104, 53,212, 32, 74,129,235,105, 5,104,227,231, 14,191, - 54,237,145,120, 53,246,159, 99, 0, 76,102,199,230,174,237,219,151,157,185,114,165,202, 50,107, 86, 73,159,165, 75,253, 79, 79, -157,210, 74,213,169,179,107,201,156, 57,233,125, 86,174, 84,157, 62,114,134,111,166,214,120, 93,182,216, 92,214, 48,255, 14,194, -233,217, 53,180, 45,247,227, 29,215,211,255,184, 92,150, 39, 16, 8,140, 94,206, 98,162,144, 11,185, 92, 14, 95,168, 51,114,116, -129, 97,221,185, 7, 56,213,209, 91,235,195,102,180,106, 15, 29, 22,230, 39,141,248,237,255,102,119, 26, 56,106,153, 75, 86,126, - 37, 74,244,220,154,161, 67, 46,135,224,242,213, 52,128, 43,136,171, 75, 83,169,112, 57,188,115,251,247,254, 43,151, 46,130,193, -100,198,155,179, 62,192,171, 19,198, 29, 86,248,116, 28,234, 31, 16, 20,243,247,129, 45,210,161, 83,214, 35,237, 90,116,174, 73, - 87,186,139,153, 44, 6,131,193, 96,252,175,241, 32,154, 43, 27,181, 86, 29,214,221,163,213, 16,173,253, 60,113, 54, 46, 5,157, -131,219, 66,165, 84, 32, 33, 41, 19, 92, 14, 31, 28, 2, 24, 77,142,155, 33,106, 48,254,176,114,165, 10,105, 41, 50,206,186,245, - 41, 1,111, 78, 13, 72, 89,185, 82,117,154, 26,140, 63, 0, 24, 71,105,245,222,139,182, 0,169, 14,118,150, 85,107, 91,140,173, - 60, 93,164,220,232,228,138, 66, 14,135,171,115, 85,137, 45,174, 42, 17,199, 85, 33,228, 11,248, 92,139,137,114, 12,126, 30, 1, - 85,212, 98,233,234,136,158,253,208,161,217,108, 6, 33, 28, 51, 0, 88, 44, 22, 89, 70, 97, 37, 74,170,184, 80,107,116, 40, 46, - 51,160,163,175, 12,191, 31,221,163, 53, 27, 43,119,212,165,197,229, 11, 84,237, 3,252,240,222,127, 87,162, 82,103,198,245,172, -114, 8, 68, 34, 47, 79,175,176, 75,227,254, 51, 79,244,214,166, 36, 76,124,194, 21,179,254, 78,202,210,170,197,243, 28,111, 53, -131,193, 96, 48, 24,140,123,141,253, 28,173,218, 56,100,180,228, 82, 49, 40, 87,140,191, 99,146, 16, 20,218, 5, 91,247,159, 67, -135,206,189,145, 83,102, 2, 5,167,209,213,134, 54,222,153,167,189, 0,224,194,200,145, 62,126,207, 60,227, 59,132, 82,254,145, -117, 27, 74, 50, 1, 96,253,174, 1,160, 0, 44, 22, 10, 74, 1,106,169, 54, 92, 14, 67,120,105, 41, 57,165,109, 2,188,100,136, -207, 52,232,100, 34, 1,199, 89, 38,228,186,171,132, 2, 1,143, 7, 51, 37,186,156,156, 36, 29, 1, 82, 29,145,171, 61,116, 40, -149,123,255, 50,120,212,178,252,212,244,146,232,142, 69,218,174, 37, 6, 33, 40, 5, 58,250,202, 16,119, 38,202,172,206,186,113, -189, 82,125,109, 67, 93, 90, 22, 11,184, 6,147, 5,151,146, 75,160,169, 48, 66, 83,110, 64,191, 65, 79, 11,250,133,143,192,223, -113, 5,176,152,140, 88,250,117, 84,153,153, 26, 95,164, 52,222,232,120,163, 25, 12, 6,131,193, 96,220,107,172, 43, 13, 35, 81, - 29, 25, 62, 18,168, 21, 71,171, 49,204, 22, 10, 55, 87, 23,136,101, 74,164,168, 13, 40, 35, 30, 40,214, 82,152,205,213, 61, 90, -245,117, 60, 17, 66,194,235,202,223,183, 47, 59,243,231,159,243, 55,239,219,151,109, 55,209,251,159,158,172,154, 71,203,191,141, - 86,125,154,132,154,127,223,127,232,175,146, 17,189,220,157, 57, 92,110,165,128,207,209,241, 4, 92,131,128,199, 49, 10,120, 28, -189,167,146,207,253,235,192, 46, 33, 37,248,171, 49,205,170,170, 42,132,135,135, 99,248,240,225, 24, 57,114, 36,158,127,254,121, - 4, 6,134,120,112,184, 68, 79,137,197,226, 46, 44, 67,123,119, 2, 94, 85, 6,254,216,245,185, 54,238,228,207,151,204,186,170, -167,169,221, 88,231, 45,154,148, 90,138, 74,116,168, 50,152, 81, 92,110, 64,113,133, 1, 38,247, 62,248,249, 84, 54, 42,245,102, -164,197,236,169,204,207,205,156, 81,165,190, 94,239,170,205,134,218,222, 18,152, 38,211,100,154, 76,147,105, 50,205,251, 65,243, - 1, 39,210,106,172, 34,107,199,209,114,160, 71,139,162,157,183, 12, 29,124,101,168, 50,120,160, 74,111, 70, 69,149, 25,165, 90, - 3, 74,181, 70,164,228,106, 17,183,191,229, 53,172,238,197, 2,136,245, 57, 72,181,193,115,180, 79, 75,104,208,255,119,197,210, -207, 94,216,213,189,155,254,173, 72,239, 86,177, 41,250,108, 66, 56,149, 28, 46,207,232,162,224,241, 19, 18, 98,243, 79, 31,255, -229,113,177,201, 60,190, 33, 29,147,201, 84,226,235,235, 11,224,214, 45,120, 66,218, 75, 70,158,140,154,219,118,192,136,165,238, - 95, 44,154,173,229,112, 5, 22,194, 19,196,153,141,149, 59, 43,213,215,214,211, 6, 38,148,113, 4,226,171,103, 47,198,247,118, -114,105,133, 27, 89, 21,168,168, 50,193, 96,178,192, 89, 46, 64,230,229,195,134,148,132,232, 31,203,178, 46,109,117,176,169, 12, - 6,131,193, 96, 48,238, 51,108,243,180,108,143,141,134,119,176, 81, 85, 85,149,242, 88,248,211,176, 88, 40,204, 20,176,152,173, - 61, 79,150,127,122,159,204,198,170, 6,123, 98, 28,193, 98, 49,159,251,106,211,230,225,221,123, 14,224,134,250,203, 81, 90,152, -139, 51, 39,255, 52,193, 66, 79, 59, 82,190,160, 32,177, 92,234,213,241,217, 23,158,123,102,247,132,215,166,104, 30, 31, 52, 72, -230,225,225,165,203,204,202,212,126,187,109,187,241,240, 47,251, 30,183,192,244, 82, 65,193,245,127,135,176,183, 67,163,209,124, - 89, 87,254,224,199, 90,245, 3,208,150,203, 35,122,109, 94,162,172, 41,109, 43,200,202, 24,253,217,127, 63, 74,125,121,210, 76, - 97, 59,223,246,200, 43,225, 34, 37, 51, 23, 9,199,247,233,178, 18,207,255, 84,154,121,161,206, 64,167, 12, 6,131,193, 96, 48, -238,127, 90, 52, 71, 43, 61,190, 58,158,214,157,166, 44, 55,111,220,214,173,223,127,250,253,182, 93,253,170,244,122, 95, 10, 65, -134,217,164, 63, 86,110,198,135,142,106,104,115,175, 71,187,185, 5,118,250,246,235,175,222,255,118,243,186, 1,176,152,131, 9, -144, 74, 9,254, 18, 27,205, 19, 26, 51, 89, 13, 81, 80, 80,182,113,200,179,203, 43, 11, 11,203,191,111,106, 89,109, 65, 66,174, -220,179, 93,171,141,171,254,187,140,195,225, 70,152,205, 22,190,197,108,188, 97, 54, 84,125, 94,153,127,109,127, 67,189, 97, 12, - 6,131,193, 96, 48,238,111, 8, 33,147,107, 7, 45,117,184, 71,235,110, 81, 84,148, 84, 6,224,173,150,234, 20, 20, 36,150, 3, -184,237, 43,247, 46, 39,150,252, 31,128,255,107,110,249,114,117,114, 62, 28,140, 74,207, 96, 48, 24, 12, 6,227,193,163,182,225, - 2, 28,156, 12,207, 96, 48, 24, 12, 6,131,193,168,159,218,115,180,106,242, 1,212,185,114,160, 41, 59,115, 55,103,245, 65, 99, -250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,248, 52, 27,211,110,138,255,120, 16, 32,119,114,122, 16, 33, 36,252,118,223, - 48,166,201, 52,153, 38,211,100,154, 76,147,105, 62,124,154, 15, 50,181,123,177,128, 38,172, 58,100, 48, 24, 12, 6,227, 97,195, -205, 45, 80, 14,212,204,235,109, 20,153,123,168, 39, 0, 84,228,199,171,239,100,189, 24, 15, 38,246,251, 28,214,158,163,213, 44, -163, 69, 8,225,115,120,194,183,197, 18,249, 43,132, 3,101,185,166,192,247,118, 84,244, 65,132, 16, 66, 2,219,200,166,181,106, -229, 62, 40, 51, 75,253, 93, 66,178,118,223,189,208,148,123,182,115, 39, 66,231,159,136, 69,247, 89,105,102,220,161,150,214,161, - 86,125, 68,161,161,161,221, 0, 32, 62, 62,254, 34,165, 84,215, 82, 77,153,103,208, 24,103,165,211, 27, 6,139,222,172,173,208, -174, 47,207, 77,220,211,242,154,254,131,194,167,163, 43,120,138, 13, 48,155, 6,129,130, 11, 46,239, 18,209, 85,189, 94,154, 31, -159,220, 80, 57,255,145,139,131, 39,190, 16,185, 96,243,143, 81,159,166,239,155,159, 80,251,184,203,147,107, 20,211,199, 71,204, - 93,187,107,223,146,130,253,115,154,189,138,245,127, 25,255,199, 94,118, 50,241,188,184,217,127, 45, 47,108, 74, 57,191,160, 62, - 87,248,124,190,187,193, 96,200,203, 74, 60,211,201,145, 50,173,130,251, 94,224,114, 57, 62,102,147, 37, 51,227,218,169, 71,154, - 87,227,255, 45, 36, 30,237,250,192,100,122,143, 2, 4,132,183,162,170, 48,249,207,150,232,249,248,248, 72, 84, 42,213,227, 74, -165,178,149, 84, 42, 21, 23, 23, 23, 87, 22, 23, 23,167,167,165,165, 29,165,148,154,110, 87,189,155,130,204, 51,104, 62,225,147, -133,214,231, 31, 87,168,175, 45,110,232,124,185,103,240,167,132, 67,231, 91,159, 47, 46, 87, 39, 44,184, 27,245,108, 12,177, 87, - 80,107, 46,197, 91, 92, 14,175,175,201, 98, 92,164, 85, 39, 30,104, 74,121, 23, 23,151, 8, 30,143, 39,177,189, 54,153, 76,149, - 69, 69, 69,191,221,254,154, 62,252,216,247,104, 53, 57,142, 86, 29, 98, 92,190, 72,122,226,229,215,222,236,180,228,163,121,226, - 85,155,127,134, 88,238, 28, 95, 85, 94, 28,122,251,170,124,251,112,111,215, 43,154,203,225,250,217,231,153, 45,230,204,252,228, -179,183,229, 75, 55,168,141,100,226,251,115,198,205, 26,243, 66,120,235,240,167,102, 16, 0,117,154, 34,133,255,163,167, 8,225, -180,229, 16,128,195, 33,224, 16, 0,160,217, 5,201,103,255,181,201,181,163,154, 54, 84, 30,237,219, 10,229,238,199, 31, 27,249, -166, 87,204,239,219,183,202,220, 67,135, 84,228,199,199, 54, 84,198, 17, 8, 33,238,237,219,183,127, 52, 48, 48,208,117,250,244, -233, 2, 0,248,226,139, 47, 58,116,232,208,161, 48, 41, 41,233, 60,165, 52,191, 57,186, 50,143,224,113, 95, 46,255,228,251, 39, -159, 28,142,236,130, 10, 44, 93,185,118,160,220, 43,240,249,219,101,182,156,157,219, 42,121, 74,231,203, 51,230,124,226, 49,108, -224,163,220,242, 42, 19,126, 61,126,177,255,246,181,159,156, 83,186,135,246,108,200,108, 89,180, 37, 11, 60,229,116,152, 69, 91, - 2, 0, 99,106, 31,247,149, 27,195,221, 37,230, 97,222, 34,222, 69, 0,123, 27,173, 75,192, 99,135,249, 34, 81,107, 14,135, 3, -219,123,207, 37,213,239,191,209, 80,153,150,121,245,248,208, 22, 53,246, 54,161,108,221, 43, 23, 92,158, 43,135,252, 83, 63, 98, -253,156, 18, 74, 75,115, 18,255,118,109,233, 53, 8, 33,170, 78, 29,156,194, 34,251, 61,246,237,177,155, 69, 50,255, 1, 51,163, - 8,229,172, 75, 59,190,226,146, 35,229,197, 98,177,243,129, 3, 7,220,135, 13, 27,166,242,236, 52,234,152, 35,101,228, 66,113, -232,193,131,251, 5,195,134, 57,126,155,101, 30, 65, 67,192,225,108, 35, 0,223, 98,161, 95,112, 45,244,199,242,194,196,164,166, -134, 97,145,122, 6, 79,228,128, 58,252, 61, 99, 1,137,214,170, 19, 54, 55,229, 26,246,240,197,170,193,124,129,224,237,182,129, -157,187,103,165,222,136,174, 40, 47, 91,105,172,210, 28,107,178,144,209,244,238,239,127,199, 60,201,227,243,201,176,193,189,184, - 0, 90,100,180, 60, 61, 61, 71,173, 89,179,166, 93,159, 62,125, 0,252, 63,123,231, 29, 30, 69,245,190,253,251,204,238, 38, 91, -147, 77,175, 36,161,147, 16,122,239, 77,122, 40,210,164,168, 52,169, 42,162,162,128,168,136,128,240, 85, 58, 34,138,128, 72, 7, -233,132, 38, 37,128, 74, 13, 53, 64,130,144, 70,122, 79,118,179,125,119,206,251,199,110, 98, 8,155,100, 3,250,254, 44,231,115, - 93,115,101,103, 50,115,239,153,217,118,207,115,158,243, 28,192,108, 54,187,238,221,187,215,111,225,194,133,114, 56,240, 25,178, - 7, 33, 36,208,219,219, 59,216,217,217, 57, 16, 0, 12, 6, 67,106,118,118,118, 50,165, 52,181,170, 99, 21,126,117,189, 8,132, -159, 95,188,112, 65, 8, 0,157, 59,119, 89, 20,210,249,109,119,129,147, 66,107,111,127,147, 65, 37, 7,240,238,229, 43,151, 8, - 0,180,107,219,126,142,220, 59,252,235,255,203,200,150,212, 55,172, 45, 7,188,215,177, 75,175,161, 35, 71,189,198, 53,170, 31, -140,222,189,122,204, 6, 80, 45,163, 37, 20, 10,165, 87,175, 94,173,203,113,156,192,108, 54,235,218,181,107,151,252, 34,237, 10, - 12,237,240, 27, 1, 23,100, 52, 27,190,207,126,124,125, 17,165,244,169,137, 99, 8, 33, 2,101, 80,139,121, 16, 8, 39,241, 60, -255,164, 40,233, 90,135, 23,121,190,191, 19, 47, 60,215, 97, 89, 56,161,243,204,209,227,167, 55,126,247,253,143, 36,239,172, 58, -139,200,117,115,114,254,174, 38, 11, 0, 4,156,160,198,201, 83, 39,125,100,206, 2, 0,128, 90,103, 70,191,190,125,171, 60,206, -173, 86,219, 40,142,144,208,146,169,196, 45,102,163, 68, 40,114,214, 17, 0, 32,214, 81, 4, 94, 1, 53,207,250,251,123,200, 70, -191,210, 51,100,219,174,159, 83,146, 83,114,207, 87,164,199,113,130, 26,135, 14, 31,241, 9,244,148, 64, 40, 32, 80,107,205,232, -219,127,160,197,222,190,254,254, 30, 17,163, 95,233, 25,178, 99,247,233,228,244,244,188,200,202,218, 41,243,111,208, 82,174,244, - 61, 49,116,202, 66, 79, 29,231,129, 79, 23,175,246,186,112,124,199,249,174, 17,175,241, 73, 73, 79,116,148,144,123,249,121,233, - 51,213,233,191,199, 86,121,210,176,126, 16, 20, 10, 69, 29,133, 66,209,172, 95,191,126,146, 89,179,102,137,186,117,235, 86,250, -255,201,147, 39, 59, 69, 69, 69,249, 47, 91,182,172,127, 64, 64,128, 78,173, 86,223, 82,171,213,143, 41,165,118,207,197, 30,126, -126,222,111, 13, 27, 50, 16, 61,134,190, 9, 11, 79, 48,121,250,187, 56,121,124,255, 84, 0,127,138,209, 50,201, 92, 23, 78,154, - 50,203,187, 93,235,230,130,207,119,196, 66,234, 44, 68,159, 86,161,100,252,219, 31,187,109, 90,243,249, 70, 0, 93,203, 31, 19, - 60,120, 73, 24,175, 41,252,184,177,151, 97,212,160,246,181,113,120,167, 97, 84,141,158,179,193,201,148,165,145,173,186,253,102, -184,184, 75,165,107, 3,220, 4, 62, 98, 75,246,218,186,253,102,156,126,116,124,141,170,178,182,136,196,226,144,157, 59,118,212, -119,119,113,130,144, 35, 16, 8, 8,132, 2, 14, 58,131, 5, 35, 94, 25,245,103,156, 46, 8, 33, 2,169, 79,253,254, 28, 48, 30, - 0,120,224, 7,109,214,195, 99,213,121, 77,136,192,201,243,232,225, 3, 66, 31,165, 24, 2, 1,129,128, 3, 4, 28, 65, 98,166, - 22, 19, 39,142, 87,190, 96,251,188,251,117,244,105, 29,245,117,215, 62,237, 26,123, 52,221,125,137, 40,219,245, 27,233,153,163, -147,141,219,117,232,220,168,224, 46,239, 93,161,148,255,234,201,197, 85,149,222, 73,235,245,250,204, 62,125,251,185, 18,161, 92, -118,250,224,150, 46, 66,142,192,100,161, 48, 91, 40, 44,182,185, 81,173,159, 87, 2,142, 35,160, 60,197,164, 73, 19,209,167,111, - 63, 13,111,230, 83, 42,211,126, 10,142,219,118,226,244,175,222,122, 19,143,101,107, 55,125, 94, 92,152,253,121,252, 3,207, 68, -153,111,131,119, 53,153,113, 14,207,131,193,129,182,122,242,248,238,148, 29, 71, 47,163,113,120, 67, 88,120,107, 59, 67,107,200, -177, 35,242, 50,194, 66,195,172,237,230, 41, 26, 4, 41,208,186, 85,107, 0,120, 46,163, 37,146,184,126,218, 53,226,245, 5, 3, - 70, 76,128,143,183, 55, 56,106, 26,112, 58,114,199, 0,145, 84,249,129, 73, 91,184,172, 90, 98,212, 82,250,187, 64,121,254,133, -211, 75, 2, 2, 2,188, 91,183,254,163, 28,163,217,108, 70,173, 90,181,144,154,154, 26, 90, 93, 45, 66,136,204,223,223, 63,226, -187,239,190,243,233,223,191,191,200,207,207, 15, 0,144,145,145, 17,120,226,196,137, 22, 1, 1, 1, 89,233,233,233,145,148, 82, - 77, 69, 26, 22, 19,231,196, 9, 33,144, 72,100, 0, 0, 10,194,205,122,235,245,166,190,254, 1,118, 35,245,217,217, 25,206, 31, -190,121,142, 8,133, 78,182,253,193, 81,202, 19,123,251, 2,128,135,135, 71, 79,145, 72, 36,181,247, 63,163,192,181, 29, 21, 41, -223,224, 4,156,245,205,106, 54,101,231, 37, 69, 55,116,244,252,229,190,161,141, 68,206, 78,235,199,140,157,210, 97,248,208,193, -240,247, 86,226,244, 47,183, 49,245,173,247, 76,102,163,105,133,163, 58,101, 17, 8, 4,194,172,172,172, 68,119,119,119,191,231, - 57,254, 41, 45,142,212,254,249,228,113,159,211,103,206,206, 89,190,106,205,180,128, 6,157, 77, 60,165,165,243, 24, 7, 55,238, - 33,234, 53,224, 21, 87,159,186,237, 36,107,230,191, 33,122,209,231,251, 59, 97,175,203,176,132,106,127,136,156,165, 46,175,124, -242,225,219,146,133,219, 47, 35,114,221,212,156,226,194,108,239,146,255, 41,148,238, 55,212,133,249,207, 68,104, 28,193,197, 39, -180, 61, 17, 8,167, 16,129, 64, 78, 56,226,204, 91,248, 39,102,131, 97,145, 38, 39, 46,253,121,244,202,194,243, 20,251,126,203, -170,214, 49,132,162,222,182,221, 7,124,124,221,196,208, 25, 45, 24, 57,250, 53,108,221,186,213,197, 91,233, 12,157,193,140,175, -150, 47, 87,169, 19, 35,125, 18,159,228,167,246, 28,248,222,169,199, 9, 89,119,147,211,117,123, 42,212, 35, 28,124,148, 98, 44, -222, 21, 7, 87,169, 8,238, 46, 78,224, 56, 82,230,255,127,116, 23,166,165,231, 23,150,209,220, 94,145,166,220,191, 73, 31,165, -123,192,206, 33, 83, 22,187, 61,204, 18,130,194,136, 71,174, 18,188, 50,110,134,107, 29, 63, 41,228, 18,129, 91,124, 82,170,255, -172, 15, 62,248, 69,233, 83,183, 77, 97,214,163,248,170,206,187,102,205,154, 67, 7, 12, 24, 32,123,255,253,247, 69, 65, 65, 65, -248, 97,199,222,144,206,125, 70, 12, 76, 75,207, 12,162,148,194,215,199,231,201,164,241, 35,142, 28, 59,118, 44,233,201,147, 39, -162, 47,191,252,178,237,129, 3, 7,194, 81,141, 59, 83, 11,165,208,233, 45,176,216,126, 32,179, 11,171,215, 19, 73, 8, 33,129, -129,129,226,212,212, 84,125, 73,148,129, 16, 82,122, 49, 21,129,205,251,188,212,181,173,240,187,227, 9, 80,235, 44,144, 75, 68, - 72,200,212,160, 85,243, 38,228,123,139,185,153, 61,205,137,175, 68,124,236,171,160,125, 7,181,175, 13, 31,119, 25, 54,127,189, - 24,135, 47,197,247,205, 84, 19,120, 13,250,114,138,191, 88,216,203, 91,230,180,182, 91,171,186,126, 61, 90,134,224, 90,171,186, -126, 23,162, 99,227,154,188,178,226,237, 84,181,232,116,222,241,183,237, 26, 46, 1,199,193,195,197, 9,155, 78, 38, 65, 38, 17, - 66, 46, 17, 66, 46,182,254, 45,251,250, 63, 15,210,128,240, 32, 1,111,153,232, 26, 16, 62,113,212, 43, 35, 2,198,140, 26, 65, - 33,224,176,119,223,145,193,219,183,111, 75, 87,248,133,110,180,112,130, 77,218,180,123, 79,170,210, 34, 28,224,163,116,198, 7, - 27,239,194, 85, 42,130,139, 76, 4, 87,153, 8, 61,154,122, 67,240,156, 69, 96, 8, 33,238, 83, 7,215,233,127,123,107,207,238, -161,193,138,250,183, 30, 21,222,155,184,232,250,170,168,130,238, 51,191, 94, 25,238,169, 46, 48, 8, 63,157, 53, 73,152,146,150, -214,125,239,145,243, 61, 2,218, 76,140, 53, 27,139, 63,202,186,181,199,110, 4,247,201,131,223, 90,212,104, 63, 66, 98, 84,155, -238,220,138, 77,169,155,175, 23, 35, 38,177, 8,114,137, 16,138,146,107, 43, 17, 66, 46, 17, 65, 33, 17, 34, 45, 37, 1,121,197, -130, 95, 82, 61,185,238, 52,234,183,106,117, 81,233,140, 22,220,140, 87,163,102,104,115,248,251, 7,192,208,255,213,154, 87,206, -238, 59, 36,247,111,184,164, 56,253,254, 71,142,234,236, 56,122, 25,115,222,157, 18, 77,128, 27, 0, 64,129, 22,159, 46, 93,215, -242,243, 57,111, 62,181,109,214,130, 53, 45,171,211,190,178,136, 36,174, 31,247, 24, 50,125, 65,231, 94, 67,160,202,203,196,111, -167,246,160,207,128, 97,120,117,194, 59,112,115,243,250, 74, 36, 81,222, 50,233, 10,207,150, 63,206,197,191, 97,167, 38,141, 27, -110, 15, 12, 8, 8,226,121,235, 44, 31,148, 2,157,186,246,192,135, 51, 39,129,167, 20,205, 90,180,233,209,127,212,219,148,218, -102, 3,201,201,205, 41,142,125,112,175,167, 54,243,193, 21, 71,219,167,211,233, 76,217,217,217,184,121,243, 38,226,226,226, 16, - 19, 19,131,220,220, 92, 40,149,202,106,117,189, 19, 66, 92,155, 54,109, 58,230,236,217,179, 18,119,119,247,210,237, 6,131, 1, - 46, 46, 46, 24, 51,102,140,168,119,239,222,129, 17, 17, 17, 99, 9, 33, 59, 40,165, 69,246,116,180,185, 15,211, 92,253,194,190, -237,218,173,235, 52, 0,144,186,250,199,175,253,225, 72, 76,101,207, 45, 85, 6,132,116,232,208,177, 46, 40, 5, 1, 93, 93,156, - 19,155, 81,209,190, 66,161, 80,126,249,242,229, 58, 2,129,160,244,247,149,231,121,124,179,121,119,216,207, 23,239, 12, 93,250, -213, 50,137,171, 92,140,236, 66, 3,222,120,117,136,195,191,193, 50,191,176,254, 29, 59,118, 61,244,249,130, 79,132, 10,185, 28, -167,174, 60,198,219, 51, 63,208,165, 39,222, 93, 70,121,209,186,226,172,216,234,253,200, 61,203,159, 50, 50,174,126, 13, 5, 92, - 6,245,145, 76,125,125,144,196, 96,178,160,160,216, 4,189,209, 2, 11, 79, 81, 88,108,194,189,100, 21,188, 92,157,159, 71,186, - 53, 0,111, 0,217, 0,174,149, 91,135,237, 49,236,172,231,192, 26, 27,241, 4, 96, 0, 80,246,201, 75,214, 43,218, 94,114,252, - 61, 0, 13,109,154, 22, 0, 87, 1,228,151,111, 96,249,132,248,210,174,195,200,200, 72, 26, 17, 17, 81,250,141, 95,126,189, 60, - 98, 39, 81,128, 92,233, 13, 74,239,163,204,111, 27,124,253,107,228,174,255,246,123, 15,165,187,103, 82, 97,126,110,136,237, 73, -170, 28,145, 32, 13, 8, 15, 18, 18,193,138,174,221,186,244,158, 54,125, 58, 66,235,212,112,178, 88, 44,244,110, 92,188,105,203, -166,205,227,148, 65, 77, 86, 21,165,220,253,184, 36, 4, 89,221, 81, 14, 22,222,146, 82, 62,130,101,225, 45, 79,221,221,218,211, - 36, 4,112, 83, 56,227,219,227, 9,160, 20, 32,160, 80,202, 69,216, 21,149,130,248,232,253, 69, 3,154, 21, 21,143, 89,250, 89, -143,238,253,103,156,189,247, 72,154, 12, 36, 92, 0, 0, 32, 0, 73, 68, 65, 84,183, 39, 43, 75,119,146, 82,154, 81,145, 38, 71, - 0,161,128,192, 85, 38,130, 82,230, 4, 55,185, 19, 72,153, 31,176,178,221,133,221,250,207,248,249,236,175, 73, 31, 1,200, 46, -155, 15, 85, 86, 83,234, 87,191,181,171, 91,141, 61, 67,167,125,233,114, 39,197, 12,161, 0,168,237, 39,133,135,139, 19, 12,102, -130,196,108,163,245, 24,184,225,237, 89, 11, 60,230,188, 55,237, 24, 33,225,141, 41,189,103,172,236,220, 53, 26,141,243,107,175, -189, 38, 50,153, 76,198, 49,111,188,211, 59, 35, 35,123,240, 55,171,255, 39,246,241,241,133, 70,103, 70,116,204,239, 13, 63,255, -124, 65,237, 35, 39,162, 14,126,246,193,212, 67,125,251,246, 85,238,222,189,155,175, 76,179, 60,217,153, 57, 95,111,222,254,211, -214,149,203,190, 64,108, 82, 62, 54,125,183, 14,212, 98,254,182,178, 99,202,106, 82, 74,233, 71, 31,125, 36, 61,120,240, 96, 13, -185, 92, 94,164,209,104,202,118, 97,114, 28, 71,132,153,121, 26,120,185, 56,195, 73,200,193,215, 93, 2, 31,165, 24, 34, 1,192, - 17, 98,177,167,185,105, 79,228, 34, 94, 83,136,195, 59, 13,163, 54,127,189, 24, 19,222,154,135,187, 57,206, 39, 56,153,114,209, -155,163,134,206,241,150, 90,250, 6,184,113, 62, 61, 90,214,132, 92,226,132,185, 51, 94, 67,155,232, 68,159,212, 2,126, 94,182, - 86,208, 28,192, 60,123,231,206,113,214, 8,150,139, 76,132, 19,219,191,202, 42, 46,204, 46, 44,233,146, 51,232,117, 73,149,157, -115,101,215, 83,238, 27, 58,167,101,243,166,139,167, 77,158,200,117,108,223,134,114,156, 8, 57, 42, 3,161, 20,152,249,246, 84, -188, 57,117,146,223,147,180,172, 79,215,173,251,246, 99,133, 79,195,133,234,172,251,159, 85,166,201, 17,107, 20, 72, 33, 17, 66, - 33,181, 26, 23,133, 68, 8,157,193, 2, 66, 32,112, 15,105, 89, 72,172,145,220,180,220, 68,251,119,224,229, 53, 61,130, 27,157, -249, 57,222, 37, 44,127, 79,254,165,132,180,152, 69,209,183, 51,175, 82, 74,243,130,187,190, 55,214,104,166, 80,235,204, 72,200, -212,192,108,164,100, 66,191, 16,212, 26, 78, 66,191,216,124, 99, 43, 33,196,181,196, 64,151,215, 76,185,180, 87,231,213,100,232, -200,149,107,190,187,182,108,241, 60, 65, 78,161, 1, 60,165,144, 56, 11, 32,117, 22,218, 22, 1,180,197,133, 88,183,254,251, 12, - 51,200, 80, 26, 21,101,174,172,157,207,192,211, 87,135,244,239,178,139, 0,206,132,115, 74, 9, 8,169, 25,242,210,192,113,146, -151, 6,189, 6,139,217, 48, 71,238, 27,118,174, 56,243,193, 25, 71, 52, 27,135, 55, 4, 1,110,168, 51, 99,167, 2,128,194, 55, -244,219,176,208,176,150,229,183,213,171, 23,250,140,209,170,172,157, 78, 82,215,183,220, 61,188,231,133, 54,106,238, 83,167, 73, - 87,226,226, 89, 3, 9, 15,111, 98,231,250, 79,183,241, 58,195,130, 51,145,123, 22,175,218,116,224,149,151,250, 14,193,230,111, -254, 55, 23,192,217,242,154,148,231, 95,221,178,113, 67,144,200, 89, 12,147,153,135,201, 66,173,127,205, 22,228,229,229,195,100, -230, 33,145,185,192,204, 19,152, 44, 60, 76,102, 30,122,131, 89, 62,245,181,136,233, 0, 74,141, 86, 89,205, 26, 13,187,157,116, - 18,139, 67, 40,172,115,215, 82, 74, 33, 48, 27, 56,127,127,255, 29, 0, 32, 22,139, 33, 22,139,193,243, 60,162, 99,179,223,242, - 14,235, 57, 13, 54,131,103, 49, 26,146,242, 19,126,233, 83,209,185,251,249,249, 13, 44,111,178,116, 58, 29,212,106, 53, 46, 94, -186,166,220,184,245,167,190, 9, 73, 41,117,120,170,212,187,248,212,233, 3, 96, 96, 69,215,179, 40,227,193,244,160,246,147,185, -247,223, 28, 91,111,205,150,163, 87, 31,158, 88, 56,183,162,107, 13, 0,181,123,206, 49,188, 63,101, 88,171,165,171, 55, 61,204, -251,101,253,187, 85,189, 70, 66,161, 80,148,157,157,157, 84,178,190,246,251,157,173,110,196,166,190,188,106,229, 42, 73,244, 99, - 21,238, 36,164, 97,108,207, 96, 60,245, 35, 80,137,166,194,175,174, 87,221,186, 97, 59,214,173, 94, 42,124,152,166,195,215,251, -175,226,236,161,111, 47,102,100, 93,233, 75, 51,210,236,118,121, 86,165,105,111, 55, 7,246,113, 72,243,220,237, 28,168,117,102, -232, 13,102,152,120,138, 34,141, 9, 89, 5, 6, 20,105,140, 80,107,205, 24,219, 43,216,238,113, 85,248, 17,111, 66,200, 81, 74, -233, 0, 88,203, 82, 57,151, 89, 7, 33,228,168,173, 93, 79,173,207,153, 51,231,163, 37, 75,150,196,148,236, 91,178,189,100,223, -202,182,151, 57,222,115,238,220,185,141,151, 46, 93,250, 69,251,246,237,119,253,246,219,111,241,176, 99,180, 42,141,104,149,156, - 76,100,100,100,165, 23,154, 16, 82, 71,230,234, 41,118,149,138, 80,187, 86, 48,198,127,180,217,203,213,195, 55, 75,226, 44, 20, - 28, 63,126,194, 35,215,160, 0,199, 9,138, 43,211, 40,139,139, 79,131, 14, 82,169, 44,114,249,242,229, 24, 53,176,179, 52, 57, -199,164,190,157,172,205, 44, 54,192,236,227,221,192,121,209, 23, 75, 21, 75,191,252,234,205,163,135,249, 2, 0, 95,217,211,112, -171,213,250,186,128,148,201,193, 34, 4,148,183,164,228, 37, 92,109, 5, 0, 47,146,139,165,214,153, 32,176,229,214, 16, 2,104, -116,102, 8, 4, 36,171, 32,118,207,189, 49, 11, 23,245,216,182,235,231, 52,202,185,169,138,139, 19,100,148,210, 74,187, 38, 8, - 71, 80,164, 49, 65, 41, 19,193, 77, 33,130, 82,238, 4, 65,153, 15, 89, 73,119,225,182,157,167, 82,147,146,114,175,193,106,178, - 42,212, 20, 10,184,120,106, 49,233, 40,181,184, 12,104,237, 13, 31, 55,103,248,187,139, 33,118, 22,194,100, 6,180, 6, 30, 58, -131, 5,137, 89, 90,168,180, 82, 52,233, 58,162,182,167,255,117,189,103, 72,235,131,185, 73,215,134, 86,214, 86,139,197,130, 45, - 59,126,170,151,150,150, 57,248,216,193,237,226,236, 34, 19,110, 39, 22, 35,171, 64, 15, 8,188, 49,255,139,175,197,179,223,157, -252,242,150,157,251,146, 94,234,220, 54,169,154,151, 21,197, 89, 15,182, 53,233, 16,241,237,128, 1, 47, 75, 99,174, 28,195,195, -155,103, 22,171, 51, 29,207,207, 34,132,112,123,247,238, 53, 79,158, 60, 89,245,197, 23, 95, 4, 29, 62,124,184, 86,118,118,246, - 77, 0, 38, 55, 55,183,176, 6,245, 66,110,157, 58,113, 60, 48,226,229, 17,162,148, 28, 45,148, 50, 39,132,248,200,112,233,226, - 73,147,179,179,200,110,190,137,173,123,112,116,141,158,179,113,248, 82,124,223,152, 92, 73,212,164,137, 99,147, 78, 93,136,205, - 93,187,245,212,255, 2, 21,166,155, 18, 62,123,237,245, 86,117,253,230,188,253, 26,150,172,217,134,243,209,177, 89,197,156,255, -226,116,189,249,231,207, 70,126,104,183,173, 2,206,106,176, 93,164, 34, 20, 23,101, 23,254, 30,125,188, 65,117,175, 87, 5,140, - 61,117,112, 27,151,167, 50,225, 73,142,142,164,229,169, 96,225, 41,220,100, 78, 48,243, 20, 5,121, 57,100,251,182,173,184,118, -237, 18, 7, 1,247, 6,128,207, 42, 19,227,136,181,171, 80, 33, 17, 89, 35, 66, 82,235, 95,147,133, 71,104,189,186,216,176,118, -133,171,151,143, 47, 58,117,233,238,112, 3, 93, 60, 67,154,237,250, 97, 45,162,126,187,209,237,252,170,175, 91, 43, 2,188,215, -184,214, 8, 95,166,172,213, 75,167, 55, 90, 80, 88,144, 15,103,195, 19,180, 9,204,134,135,204,130,196, 34,127,220,205,120,168, -168, 42, 23, 42,231,206,254,155,222,141,135,124,252,211,145,179, 75,250,244,234,134,187,137, 69,144, 58, 11, 33,113, 22, 64,226, - 44,128,136, 88,176, 98,253,183,166,252, 66,213,128,156,187, 7,115, 28,110,176,141,226,172, 7,167, 97,189,251, 5, 96, 29,104, -178,109,205,199, 63, 78,250,240,203, 62,125,135,140, 35,119,175,157,251, 8,192,153,138, 21,254,192,194, 63,123, 42,246,182,241, -118,182, 85,132,212,213,123,245,123, 31,127, 53,163,247,128, 17, 16, 8,132, 48,153, 76,216,183,123, 27,126,248,122,254, 3,131, - 58,119, 28,165,148, 39,196, 99,242,158,109,235, 71,124,248,233, 10,210,184, 89,155,182,246,116,120, 1,249,238,245,137, 83, 70, -250,250,250,186,252, 17,209,162,104, 16, 26,142,254,131,134,225,228,161, 3,184, 23,115, 27, 60,181, 26, 38,158,167, 40,200,207, -205, 48,155, 12, 91, 42,106,155,179, 68, 18,178,249,135,173,245, 57,142,192,104,226, 97, 48,243,120,119,250,120,195,212,153, 31, -117,234,223,187,107,140,179, 0, 69,137,201,233,110,151,110,220,111,194,139, 20, 65, 19,103,173,112,210,233, 45, 40,212,152,112, -108, 83,197, 94, 71,234, 17,210,190, 89,135,151, 39, 78,253,100,131, 88, 44,224,140,141, 26, 4,197,119,109,215,232, 73,112,128, -151,234,243,165, 95,183,249,229,202,141,254,175,140,153, 40, 25, 27,214,146, 4,120, 74, 93,198,143, 25,210, 84,238, 25,252,122, -113,110,114,133, 83,166,137,100,238, 5,193,181,234,149,118, 49,202,252, 66,247, 19,138,218,101,247,161, 4,241,154,140,216,161, - 0,224, 31, 16,172, 19,137, 93, 43, 77, 21,120,234, 88,219,251,120,205,247, 59, 91,221,138, 75,155,180,114,229, 42, 89,244, 99, - 21,110, 62, 46,132,216,137,131,209,196,131, 56, 24,212,230,169, 96,202,188,185,115, 92,243,139, 45,136,186,157,141,152,235,231, -168, 65,173, 27, 35, 51,187, 14,149,251,134,190, 14,160, 46,128, 71,132,208,239,138, 51,253, 14, 81, 26, 85,237, 65, 6, 60,111, -189, 95, 86,250,212,173,109, 17,138,251,139,156,229,237, 9,161,141, 8,133, 59, 64, 83,115,109,191,169,149,158,115,153,199,197, -153,113,248,242,139, 79,177,122,227, 1,164,229,234,160,180, 60,193,161, 77,139,240,254,146, 29,208,234, 43,206,106,168,202,143, -216, 51, 70,229, 13, 87,201,227,146,253,150, 44, 89, 50,224,169,118,218,254,255, 76,251,203,109, 47,123,252,210,165, 75,191, 40, -243,255,103,186,166,171,204,209, 42, 57,169, 42, 78,174,129,183,127,200,111,135, 14,238,119,207, 87, 27, 33,113, 18, 32,184, 86, - 61,124,182,246,144,119,191, 86, 94,200, 49, 42,177,115,195,178, 60,157, 70,181,187,162, 39, 43,139,212, 55,172,173,139,139,203, -177,253,251, 14,160, 78,176,143,211,246,139,121, 9, 55,226,181,165,161,222,162,236, 36,231, 90,174, 26,225,208, 33, 67,100,103, -206,158,155,137, 10,140,150,128, 8,106,124,191,117,159,143,139, 84, 4, 66, 0,149,214,140, 73,175, 15,115,164, 9,149, 67,121, -193,196,113, 99, 65,108, 38,171, 40, 55, 3, 31,205,158,174,147,155, 30,222, 75, 78, 76, 78,237, 57,240,253, 51, 69,106,162, 27, -249,218,244,107,247,226,150, 60,227,108,159,129, 55,165,244,143,232,239,100,141, 28, 0, 2, 66,192, 83, 62, 51,180,150,226,237, -103,186, 11, 51,244,223, 87,101,220, 84,169,177,121, 46,254, 77,134,111, 91,254,214,247, 1,190, 62,158, 10,185,148, 42,100, 98, -210, 40,172,190, 83,187,118, 29,156,107,133, 54,117,186,120, 95,139,228,108, 45,226,211, 10, 33,246,109, 46, 28,213,163, 31,182, -173,154,213,141, 16,194,149, 79, 82, 44,207,207, 81,151, 7,110, 92,191, 82,156, 89, 96,196,131,100, 53, 50,242,117, 72,207,215, - 35, 35, 79, 7,133, 84,132, 46,131, 38,139, 35, 15,125, 55,240,165,206,109,215, 84,239,194, 90,137,143, 79,136, 76, 76, 77, 31, -209,180, 69, 27,108,251,241,135,206,238,238,181, 93,243,243,227,237,134,250,237, 64, 23, 45, 90,228,188,116,233, 82,225,218,181, -107,139,218,181,107,231, 55,119,238,220, 62, 89, 89, 89, 87,107,214,172, 25,122,114,255,150,179,205,187, 12,110, 13,222,232,221, -185,107,119, 39, 49, 47,196,169,163, 71,141,123,118,111,207,213,106, 85, 83, 43, 19,230,100,202, 69,153,106, 2,239,192,192, 24, -133,179,165,151,144, 43,136,203, 59,254,246, 86, 0,251,235,246,155,113,250,220,245,216,184, 86,209,137, 62,103,163,127,207,202, -211, 24, 27, 60, 58,254, 94,165, 95,188, 2, 66, 32, 18,112,112,145, 10,193,217,190, 85, 93, 2,155,253, 14, 66,188, 1,235,123, -139,128,216,254, 2,132, 32, 45, 47,233,134, 3, 57, 27,132,242, 20,136, 77, 41,134, 90,103, 13,205,215,240,146, 33, 59, 51, 5, -223,172,217,130, 27,215,175,161,119,191, 65, 88,247,253,118, 76,122,125,132,174, 42, 53,142,179, 69,180,202, 68,179, 20, 82, 33, - 0,130,130, 98, 19,246,253,242, 4,117,107,115, 14,255, 48, 0,128,139, 66,134, 66,149, 22,156,147, 11, 30, 69, 31,147, 29, 63, -119,101,238,199, 11, 87,126,144,159,126, 59,249,247, 59, 23, 17,234, 85,136,218,129, 70,196,100,184,226,122,110, 45,132,214,171, - 3,206,233,154, 67,218, 57, 49, 77,190, 60,196,237, 27,208,170,121,120,251, 16, 31, 55,104, 13, 22, 91, 84, 75,128, 31, 54,111, - 69, 98, 66,202,196,156,152,131, 55, 28,111,109,197,168, 51, 31,103, 75,124,235,191,121,231,202,153,248, 33, 99,222,132,127, 96, -176,221,238,103,123,216, 51, 80,246,182,217, 51, 95,246,112,150,187,207,157,245,233,242, 25,189, 35,134,227,242,197, 51,184, 25, -243, 8,109,219,182, 70,191,151, 71, 65, 85,148, 23,182,119,235,170, 94, 0, 78, 10,197,230, 25,109, 58,244, 32,188,197,130,135, - 15,238, 62,178,167,165, 73,123,112, 19,128,107,217,109, 50,239,134,205, 20, 74,143,155,122,163, 5,169,169, 41,248,245,183,168, - 22,182,253, 28, 70,236, 36,192,169, 27, 89, 48,154,120, 24,205, 60,186,116,237,101,112,226,244,157, 23,175,220,220, 46, 61, 45, -157,147,187,122,241, 30,129, 13,157,252,197, 70,253,173,199,133, 78, 70, 19,143, 58, 1,242, 74, 53,189, 3,234,125, 49,107,214, -187, 13, 5, 78, 82,168,138,245,134,244,180, 84,191, 13, 59,207,169,239, 63,184, 19, 88,195, 71,233,250,191, 85,223, 57, 21,233, - 8,178, 10,245,200, 83, 21,145, 49, 83, 62, 12,216,248,245,146, 87, 1, 56, 60, 55, 45,161,168, 29,121,234, 98,152,187,139, 19, - 81,235,204,124,110,145,209, 50,230,101,199,111, 44,236, 97, 51, 89,147, 87,174, 88, 37,187,241, 88,133, 91,143, 11, 33,113, 18, -192,217,137,131,193,196,195,145,143, 19, 33,132,171,221,184,235,212, 14,173,154,224,228,205, 28, 8, 4, 28,180,170,124,141, 16, -185,113,173,186,245,150,181,108,211, 14,221,187,117,197,239,113,177,193, 71, 15,239,123,233,210,175,231, 51, 20, 62,161,111,169, -179, 98, 15, 84,167,173,106,141, 70, 96,114,246, 27,239, 31, 88,179,227,208, 81,227,149, 33,193,129,196,199,203, 19,102, 42,196, -228,215,135, 57,252,201,183, 26,115, 96,233,194,185,208,235, 13,240,118,115, 6,165,192,230, 53,159,193, 96, 48, 32,192, 83,140, -194, 98, 83,133,199, 87,229, 71, 42,138, 66, 85,135,178,102,172,178,237,132,144,163,115,230,204,249, 8, 0,157, 51,103,206, 71, - 37,235, 75,150, 44,209, 2, 72,179,115,124,105,215, 97, 89,227, 85,218, 63, 92, 89,119, 33,113,118, 14,245,242, 15,185,116,234, -228, 9,229,193, 91, 60, 46, 31,184,142,136,182,254,112, 18,114,144, 41, 3,112, 43,161, 16,145,251,215, 23, 28,218,245, 93,170, - 94,175,183,107,136,202, 34,243,171,223,202, 69,238,122,242,199,109,187,121, 47, 79, 79,238,155, 83,217,143,115, 85,230,210, 46, -173,184, 43,135,249,235, 39, 55,248, 83,144, 19, 18,137,164,158,193, 96,112,175, 76,143,167,192,230, 83, 73,182, 36,222, 23,203, -123, 41,129, 8, 4,150,109,219,183,193,203,213, 25,122, 19,143, 57, 31,188,163, 29,219, 91, 81, 48,230,149, 81, 61,186,247,159, -113, 86, 36,175,127,166, 67,139,250,180,121,243,230, 5, 2,129,160, 74,189,220,248,171,207,140,174, 8,171, 37,123, 99,222,135, - 99,231,217,233, 46,116, 40,113, 87,149,126,231, 23, 0, 79, 69, 72, 72,221,186,206, 59,246, 30,122,103,248, 43, 35, 63, 14,108, -246,178, 34, 33,189, 16, 78,196,136,214, 13,253,113,238,196, 1,154,146, 24,247,110, 85, 38, 11, 0,178,178,243,130,188,189,125, -113, 35, 94,141,212, 92, 45, 50,108, 38, 43, 61, 95, 15,149, 86,133,166, 33, 1, 40, 40, 44, 12,114,164,157,246, 32,192,129,147, - 39, 79,142,232, 63,120, 36,102,124,176,160,211,166,245,203,110, 43,252, 26, 76, 80,103,196, 69, 85,117, 44,165,148, 18, 66,242, -102,207,158, 93,247,251,239,191,231, 94,125,245, 85,109,147, 38, 77, 36,175,189,246, 90,167,173, 91,183, 74,100, 50,137,246,214, -197,195, 31,191,241,246,156,193, 27, 86, 47,106,150,159,159, 79,204, 38,211,113, 99,126,254, 28, 85, 21,102, 46,249,208,220, 7, - 36,124,193,184, 94,157,189, 15,123,200,184, 70, 98,106, 24, 69,194, 23,236,166,247,230, 27, 31, 29, 95,163,106,242,202,138,183, -211, 10,248,121, 58,206,103,113, 85, 38, 11, 0, 56, 1,129,193,108,129,139, 84, 4,142,179, 69, 48, 41,239,255,195,238,227, 50, -111,165, 51, 68, 2, 14, 66,129, 53,218,153, 83,100,196,155,227, 7, 59,120, 5, 41,111,182, 80,104, 13,102,104,108,119,135,170, -162, 28,204,253,224, 61,244, 27, 56, 4,111, 76,125, 15,249, 90,224,122,188, 10, 70,147,169,202, 15, 5, 71, 56,104,244,102, 76, -232, 29,130, 60,181, 17,197, 90, 51, 12,102, 30, 50,103, 33, 68, 66, 14,114,137, 16,174, 50, 17, 64,169, 83,201,151,137, 72, 36, -210, 25,141,198,109, 21,182,144, 82,212, 10,242,133,214,196,161,205,200,101,232,217,190, 1, 98,126,217, 39, 60,127,249, 78,237, -153, 31,204,195, 59,147, 6,226,167, 7,117,225,225, 19, 2,133, 92, 10, 19,229, 0, 56, 86, 58,132,210,249,188,127,216,208,209, -223,126,191, 57,246,243, 79,231, 72, 10,138, 9,196, 78, 2,156, 61,115, 26,151,174, 92, 95,157, 29,115,176,194,118, 61, 15, 34, -202,249,186,186,186, 66,226, 44,128,193,168, 55, 56,122,156,133,167,160, 64, 11,133,111,232,183,128, 53, 31,203,194,195,206,182, -170,141,150, 72,170,156, 51, 99,246,162, 47,122, 71, 12,199,169,163, 63, 97,239, 79,187, 45,237,251, 78, 20,108,255, 97, 61, 58, -245, 28,132, 78,189, 71,226,248,129,173,239,137,164,202,240,201,239,124,178,176, 75,143,254, 56, 21,249, 19, 50, 51, 82,150, 59, -218, 94,129,136,204,232,209,107, 32,116, 6, 11, 58,191, 52, 0, 39,142, 28,120, 27,182, 65, 22,142, 82,222,140,243,224,204,239, -189, 59, 67,148, 85, 96, 16,101, 23, 25,144,146,173, 65, 66,166, 6,135,118,109,114, 56,140, 71, 96,104,221,165,105, 13,209,228, - 47,207, 62, 9,170,225,175, 23,233,181,210,184, 71,143,195,222, 24, 63, 86, 84,187, 94, 24,151, 85,168, 71,118,161, 30, 57,133, -122,168,117,102,212,171, 81,159, 51,153, 73,251,234,180, 27, 0,188,148,206,162,117, 71,226,225, 42, 23,161, 67,216,243, 15,180, -229,121,254, 15,147,181,210,106,178,110,199, 23, 66,236, 36,128,216,137,131,216, 73, 0,179,133, 58,116,227, 34,245,105,208,255, -205,183,166, 7, 24,204, 64,110,161, 1, 66, 1,129,143,151,187,188,117,179,209,216,188,236,109, 0,192,164,217,223,224,141, 9, -175,161, 97,163, 38, 40,200,207,247, 27, 61,188,255, 74, 0, 14, 25, 45,158,231,113,236, 84, 84,240,169, 11, 55,102,191, 57,107, -190,226,149,129,221, 5, 55, 31, 23, 34, 61, 79,143, 71,113,170,106, 69,222, 0,192,108,225, 65, 65,177,101,247, 81, 72,157,133, -200, 46, 52,130, 82,138, 69,107,247,192, 69, 42, 66,122,190,181,187,191, 50, 42,243, 35, 64,197, 17, 41, 71,177, 29,159,141, 63, -242,184,236,234,150,141,104, 45, 89,178, 36,102,201,146, 37,118, 35,100,192,179,201,240,213,154, 84,218,217, 89, 17,230,229, 25, -112,249,212,137, 99, 46, 7,110, 89,112,238, 86, 46,134,119,174, 1,117, 94, 50,190,250,224,149, 60, 2,106,224, 4,130, 2,189, - 86,179, 95,171, 45, 94, 76, 41, 53, 86,166, 39,243, 15,109, 33,151,186,158, 94,183,225, 71,179,151,143, 15,182, 93,204, 75,201, - 47, 54,151,218, 91,139,197, 68,174,159,220, 80,219,204,155,250,106, 51, 30, 86,121,123,203, 83, 56, 45, 89,127, 8, 0, 5,207, -243,160, 60, 15,145, 68, 33,247,174,219, 62, 19, 0, 44, 60,149, 8, 57,162,179,157,185,245,226,241,230,148,236,199,149,135, 65, - 9, 0,165, 76,132,221,231, 83, 1, 32, 83,160,138,190, 63,230, 21,107,119,161,206, 32, 41,106, 84,183, 46,109,221,186,117,129, - 84,106,119,112,137, 67, 84,183,187,208, 17,232,163, 71, 6, 0, 95, 6,132,118, 30,210, 71,209,180,141, 51,231,132,150,161,254, - 56,119,242, 32,189,124, 98,243, 36, 77,102,236,143, 14,233, 80, 10,181,206,132,180, 92, 29, 82,115,117,200,200,215, 33, 35, 79, -143,140,124, 29, 8, 33,208, 25, 94,172,252, 77,113, 86,236,222,109, 63,110, 28,164, 55, 98, 84,151,222, 67,240,222,252,117, 33, -219,190, 93,122, 90,234, 27,214,209,145, 68, 91, 74,169,133, 16,146, 56,126,252,248,102, 59,119,238, 20, 52,110,220, 88,123,255, -254,125, 25, 0, 30,128, 81,161,144, 73, 55,125,189,228,100,155, 54,109,118,165,198, 61, 56, 11, 32,223,145,225,249, 53,187,141, - 23,135,185,230, 77, 14,150,119,232, 83,199, 79,134, 96,185,170, 79,152,226,214, 87, 62, 47,205,252, 34,235,204,170,172,116,189, -249,231,108,173,160,121,170, 90,228, 80,174,160, 73,175, 75, 26, 58,124, 20, 4,132,131, 81,167, 73, 2, 0, 16,107,226,249,103, -219, 31, 64, 33, 17,193, 69, 42,132, 66, 42, 66,167,112, 15,135,238,112, 75, 46,129,201,194, 67,163,183, 64,171, 55, 67,103, 48, -195, 43,200, 29,223,111,219,139,228, 44, 45, 14, 93,203, 65,108,146, 10,245,107,200, 65,105,213, 95,147,188,197, 84, 60,112,216, -171, 46, 2,142, 64,192, 17, 46, 60,172, 1,242,212, 70, 56, 9, 57, 56, 73,164,144,139,133,112,149,138,224,228, 36, 66, 86, 86, - 22,244,122, 61,130,131,131, 37,149, 54,144,167,112, 81, 72, 81,191,118, 0,140, 38, 51,142, 93,184,135,197,239, 14, 69,175, 46, -173, 64, 68, 10, 60,208,183,128,139,135, 11,120,142,131,209,204,195, 96,180, 0,224, 42,140,190, 5, 7, 7,247,144,203,229,114, -141, 70,163, 74, 74, 74,138, 74,127,176, 63,217,167,209,203,147, 79,156, 58,187,109, 64,191, 94,184,113, 59, 6, 63, 29, 56,124, - 49,199,179,112, 86,201, 49,141, 27, 55,110,231,229,229,165,200,205,205, 45,186,115,231,206, 85,199, 47,239, 31, 16, 66,136,220, - 55,108,102,251, 78,221,160, 46,200, 66,230,147, 4,135,239,162, 27,134,184,224,147, 37,235, 90,134, 54, 8,109,105,161, 86,227, - 21, 30,236,130,247,231,175,105, 89,183,126,131,150, 37, 3, 66, 26, 6, 43, 42,213, 17,201, 93,123,191, 62,249,253, 37,131,134, -143,195,217, 83,135,177, 98,241, 7,219,228, 74,239,134, 30,238,202,230,141,219,245,198,197,211,135, 33,113,241,131,187,167, 95, -167, 87, 39,188,213,115,248,171, 83,112,233,226,105,172, 94,250,209, 86,139, 94,181,195,145,182, 42,124,235,120, 55,111,221,101, -140,139,135, 47, 10, 10, 85,112,113,247, 65,195,166,173,199, 40,124,235,204, 86,103, 62,126,174, 82, 46,128,181, 75, 82,111,164, -200, 87, 27,241, 36, 91,139,196, 12,171,209,226,249,106,228, 4, 89,120,162,144, 8,133, 30,166,223,131,239,156, 62, 75, 67,130, -124,201,151, 11, 63, 16, 24, 33, 65,118,129,213,100,101, 23, 25,144, 93,104,128, 90,103,130,135, 92, 8,222, 82,241,200,192,138, -200, 87, 27,225, 98,203,163,117, 52,202,104,143,245, 63,236, 14,189, 21,151,246,242,138, 21,171,100, 55,227,203,152, 44,145, 53, -154, 37,118, 18,192,194,243,128, 3,159,120,145, 80, 52, 99,112,255,158,120,146,163,181,142, 90,230, 8,234, 55,105, 3, 47, 41, -143,151, 70,206, 1, 0, 12,236,111, 45, 95, 18,159, 94,140, 35,151,179,129,167, 19,187, 43,165, 88,171, 21,108,216, 30, 57,115, -239,158, 93, 74,157, 69,136,239,142, 39, 66,163, 55, 67,226, 36,128,216, 73, 0,169,147,224,169,124,236,170, 48, 91,172, 57,119, -201, 57, 38,104,116, 58, 20,105, 77,160, 0,174,254,174,134,214, 96, 70, 97,177, 9,237,194, 42,141,157, 56, 66, 36,128,136,146, -149,178,209,173, 10, 34, 82,246,184, 86, 86,163,100,255,242, 26,229,255,103,211,171,214, 8, 46, 97,121,231, 88,118,221, 89,225, -209, 80,233,233,125,249,196,241,163,138, 3,183,120, 68,221,182,154, 44,147, 54, 7,203,103,143, 78, 41, 42,200,233, 78, 41,173, -180, 0,100, 89,228,222,225, 77,165, 50,217,217,255,173,250,206,232,227, 27,200,239,191, 92,144, 85,168,177, 60, 21, 67,180,232, -245, 28,229,169,147, 35, 38, 11, 0, 56,142, 24,231,191, 61, 4, 60,165,248,108,213, 94,124, 49,107, 36, 20,210, 87,101,132, 16, - 89,177,206,140,119, 23,108,196,242, 79, 38,186,200,196, 66, 16, 2,232, 12, 22,188, 62,106,136, 67,237, 45,214,153,241,232,202, - 78,181, 42,254,232,253,178,221,133,109, 59,245,187,222,182,109,219, 2,119,119,119, 72,165,210, 63, 34, 21, 14, 80,209,232,194, -172, 2,164,184,184,184,116,117,117,117, 45,171, 87, 92, 80, 80,112,208, 97,241, 50,168, 10,114,206,102, 36,222,105,211,177,251, - 64, 68,157, 60, 72, 47, 31,223, 52,169, 58, 53,122,220, 61,220,159, 68,223,121,212,144, 16, 15,107, 68,203,102,178, 12, 38, 30, - 33,190, 50, 60, 73,124, 4, 55,165,178,202,209,108, 37,200,124,194, 6, 19,142, 78, 37,160,155,213, 25,113,123,109,166,103,180, -220, 47,236,118,204,221,155,139, 7,140,153, 33,236, 61,124,186,224,219, 37,111,125,132,114, 73,172,149, 96,140,141,141,189, 55, -113,226,196, 14,151, 46, 93,178, 0,208, 16, 66, 76, 2,129, 64,102, 48, 24,156,186,119,239, 94,248,224,193,131,243,176,147,180, - 88,158,206, 19,126,242, 34, 98, 85,191,186,245, 91,143, 14,113, 81,245,234,222,185, 61,218, 55, 10,194,147,206,237, 1, 96, 70, -146, 90, 17,218,105,218,166,221,181,189,107, 28,251,246,135, 35, 95, 76, 26,217,243,221,128,129, 11, 86,164, 29,153, 95,105, 34, -106,242,189, 40, 59, 5,156,108, 9,242, 82, 17, 20, 82, 33, 92,164, 34,184, 72, 68, 48,153, 29,187,195,181, 65, 77,102,222, 26, -209, 50,152,161,214,154,113,246,102, 38, 50, 10, 13, 40, 80, 25,161, 53, 90, 64, 65,173,119,163, 14,124,155,103, 61,252,197,173, -228,177,123, 72,203,194, 13,107,151,185,238,251, 37,165,116, 68,159, 82,230, 12, 23,153,117, 52,246,133, 11, 23,224,233, 89,245, -221, 62,207,243,248,233,196, 85,172,216,114, 22, 39, 54,127, 8,137,147, 0, 77, 7, 47,192,184,151,219,130,167, 60, 30,197,198, -100,214, 15,111,230,203,113, 82,112,132, 64,111,226, 1,208, 10,175,167,193, 96,240, 76, 78, 78, 46,170, 87,175,158, 95, 96, 96, -224,112,129, 64, 64,197,128,254,224,174, 60,205,153,163, 59,100,197, 90,189, 69,102, 46,220, 92, 47, 93, 27, 81,191,126,125, 16, - 66,168,151,151,151,211,217,179,103,213, 77,154, 52,241,174, 72,183, 50, 8, 33,156,212,167,193,234, 55,166,205, 28, 94,183, 78, - 29,236,221,177, 25,148,146,125,142, 30,191,253,200, 37, 44,156,251,244, 8,195,247,231,175,105,185,124,193,140,167,182, 77,155, -187,162,210, 81,135, 82,177, 98,214,208,209,147,113,253,234,111,248,106,193,251,187,244,234,188,113, 38,179,105, 68, 94,122,252, -174,218,225,109, 65,141, 42,156,218,179, 12, 35, 95,155, 36,238, 61, 96, 56, 46, 93, 60,141, 47, 62,154,182, 93, 83,144, 53,222, -209,250, 95, 60, 21, 77,237,222,231,101,145, 86,111,196,154, 47, 63,197,148, 89,139,209,174,199, 64,209,221,155,151,167, 2,248, -220,209,115,214, 27, 45,232,222,196,203,106,158, 77, 60, 14,199, 11,132,246,222,129, 66, 1,225,154,215,113,131,214, 96, 70,145, -166,226,174, 36, 0, 16, 58,137, 50, 10, 10,139,106,126,253,197, 76, 65,177,206,140,236, 66, 3,178, 10,245,200, 41,248,195, 96, -229, 20,234,145, 93,104,128, 72, 72, 16,247, 56, 9,156, 72, 88,237,252,188,124,181, 9,109, 26,184, 3,176, 26,154,231,193, 36, -116,109,123,226,252,173,161, 43, 86,172,148,220, 74, 80,225,118,124,145, 45,146, 37,128, 88,196,193,217,246,216,194, 3, 85, 61, -133,210,167,110,237,177, 19, 39,189,228,170,144, 34,237, 97, 22,132, 2,107,137, 24,165, 79, 16,148, 98, 29,222,154, 54, 25, 94, -158,110, 72,206,209, 99,245,129, 56,220,190,247, 59,120,109,245, 78,123,205,119,187,250,190,241,230,251,110,156,200, 25, 91, 79, - 38, 88,219, 41,176,224,193,229, 35,186,180, 71,119,138,213, 69,185, 20,212,226, 96, 0,128, 80,179,197,250,118,251,226,179, 57, -216,181,229, 27,156,140,206, 42, 77,222,250,101,223,114,204,156,187, 8, 57, 69, 6,192, 78,242,125,101,126, 4,214, 64, 68, 73, - 36,234,153,245, 50,230,200,222, 58,177,173, 27, 42,208, 48,148, 51, 87,134,114,219, 13,229,244,158,169,253, 71, 41,221, 80,101, -215, 97,121,228,238, 62,141,149, 46,202,223,142, 31, 63, 34, 63,120,155,150,154, 44,163, 38,135, 46,158, 49, 48,165,168, 32,187, -119,181, 76,150, 79,131,198, 98,185,252,252,199,139, 86,235,125, 3,107,154,143,221, 44,202, 85,233, 44,207,132, 69,156,100,114, -139, 92,233,173,115, 11,105,177, 66,164, 53,124,154,157,125,175,210,228,122, 2,235, 29,211,209, 43, 25,160,212,122,139,180,231, - 66, 42,108,119,230,176,240,214,110,149,159,111,102, 65,104,203, 67,113, 4, 66,128,245,223,125, 83, 20,209,164,176,120,204, 23, -159,149,118, 23,182,107,102,141,100,185,186,186,194,205,205, 13, 10,133, 2,142,116, 29,150, 80,209,232, 66, 23, 23,151,174, 55, -111,222,148,184,186,186, 66, 32, 16, 64,175,215,163, 81,163, 70, 14,235,150, 69,225, 23,246,102,155, 30, 67, 62,234,212, 99, 32, -206,158,216, 79, 47,159,248, 97,114,117, 11, 33, 70,244,236,112,100,225,194,207,106,127,188,248,107,177,139, 68,136,251,106, 3, - 56, 66, 16,226, 43,131,167,156, 67,212,193,173,186,145, 3, 59, 56, 92, 28, 47, 40, 40,112,219,242,181, 27,228,203,151, 46,232, -238, 18, 24,122, 86,149, 26,155, 7, 0,197, 25, 15,190,148,249,133,221,171,241,219,169, 99,205,186, 14,129,111, 64,157, 94,142, -106,218,186, 16, 53,143, 31, 63,142,255,248,227,143, 67,151, 46, 93, 74, 5, 2, 1, 15, 64,188,106,213, 42,205,195,135, 15,111, -194, 58, 52, 23, 85,253,216,188,212,171,209,187, 10,103, 75, 59, 15, 25,215,168,142,159, 12,237, 27, 89,123, 69, 71, 70,116, 66, - 80,112, 48, 30,103,104,154,231,105,120,145,218, 32,168,179,238,187,219,215,106,121, 9, 38,153,181,134,123,168,162,152,172, 61, - 8,254, 72,144, 47,137,102,185, 72, 69,224,129,234,220, 57, 82,147,153,135,222,104,129, 86,111,129,214, 96, 70,177,193, 2,141, -193, 2,158, 90, 63, 19,132, 16, 24,205,124,201, 83, 58,222, 62, 2,184,122,120,161, 78, 45,235, 40, 89, 23,169,181,212,131,171, - 76,100, 29, 35,237,233, 9, 31, 31,159,170, 27, 72, 41, 12, 70,235, 71,220, 96,226, 75,187,245, 13, 70, 51, 40,165,136,139,139, -253, 48, 49, 62,126,112,189,250,245,186,132, 55,109,230, 33, 19,115, 0, 80,161,209,210,104, 52, 22, 23, 23, 23, 31, 15, 15, 15, - 46, 53, 53,181,212, 60,215,107,222,221,124, 96,255, 62, 12, 29, 58, 68,125,255,234,173,210, 33,238, 90,173,150,116,236,216,209, - 53, 40, 40,136,211,235,245,142,230,255,217,174, 1, 33,114,239, 6, 47, 7,133,117, 88,252,250,248, 41, 13,186,247,236,139,115, -103, 78,225,208,254,157, 63, 22,103,197, 58, 92, 57, 59, 52, 52,236,153, 81,135,117,235, 55,120,102,212, 97,205,218,245, 43, 53, - 90,225, 77, 91,183,165, 68,136,147, 71,247, 80, 29,103,156,102, 77,120, 39,123,118,175,255,228,243,209, 83,231,214,237, 63,104, - 52, 94,127,109, 28,132, 66, 1,162,126, 62,130,229, 11,222,139, 84, 23,102,141,117, 36, 77, 0, 0, 72,120,184, 83,189,224,154, -239, 4,215,109,140,232,203, 23,241, 40,238,110,204,173,107,151, 26,213,107,210, 14,222, 1, 33,239,144,240,240,165,244,222,189, - 74,123, 43, 0,192,160,211, 37,141, 27,251, 26,202,142, 58,108,223, 34,212,243,169, 55,160,109, 69,163,202, 50,110, 90,246,238, -195,146, 81,135,188,209,144, 84,145,110, 97,126,246, 79, 81,191, 94,153, 53, 56,162, 47,151, 83,100,176, 70,176, 10, 13,182, 69, -143,156,146,199, 69,122,212, 15, 80, 32, 54, 38,154,215, 21,230, 56,108,136,109,205,210,141, 27,209,231, 30,240, 71,242, 63, 1, -170,204,111, 44, 15, 21,185, 78,254,242,171, 21,146, 91,241,106,220, 78, 40,178,118, 21,138, 4, 86,131, 37,226, 74, 77,151,117, - 52,123,229,152,137,224,139, 9, 99, 71, 33,167,200, 8,158, 7,132, 2,206,182, 56, 33, 89, 69,240, 68,165, 65, 78,126, 54,226, - 19,147, 80,144,241, 8, 28,199,193, 43,160, 1, 28, 13, 63, 90,168,179,191,198, 64,155, 12,143,232, 34,220,255, 91, 58,100, 98, - 33,244,170, 76, 28,223,189, 44, 91,175, 46, 90,172,213,168,247,107,115, 31, 62,147,139, 84, 17, 28, 33,217, 69,106,157,175, 88, - 36,192,222, 45, 95, 99,196,184,105,182,139, 98,253,243,225,188,133, 0, 71,144,151,175, 2, 33,164,186, 81,210,242,193, 23,199, - 18, 58,171,167,249, 66, 84,187,142, 22,207,211,227,167, 78, 28,145,255,146, 40,198,213,216,116,155,201,202,230, 23,189, 29,145, -162, 42,204,235, 67, 41,141,171, 86, 11, 56,174,207,200, 9,179, 98,234, 52, 8,215,159,187,171, 78, 40, 40, 54, 85,152,231,208, -126,248,199, 49,215, 35,215,246, 47, 52, 61,158,174, 8,104,100,225,205,230, 47, 53, 89,177, 11,236,182,147,194,121,193,234,189, -165,221,134,179,151,110,181, 62,182, 88, 96,161, 60, 40, 15,188,245,201,122,152,121, 11,120,139, 5,188,133,194,100,161,178,170, -154,235, 19, 80,115,127,254,131, 61, 97, 99, 62,127,182,187,208,205,205, 13,158,158,158,240,244,244, 68,137, 49,114,148,138,186, - 11, 93, 93, 93,161, 80, 40,112,241,226, 69, 72,165, 82,200,229,242,106,233,150,160,240, 11,155,222,186,219,224,175,123, 12,154, -136,159,247,127, 71,175, 93, 56, 50, 69,147, 25,187,209,209,227, 45, 22, 11, 49,153, 76,136,232,221, 45,233, 70,204,239, 39,230, -205,154,218,183,195,128, 41,226,246,161,129,208, 25, 44, 72, 73,124,132,168,131, 63,232, 26,212,246, 63,249, 82,231,182, 73, 38, -147, 9, 22,139,165,202, 31,114,157,193,152, 35, 16, 73,229,163, 70,141, 17, 93,187,122,117,159,194,167,193, 94, 11,225,110, 17, -202, 55, 37,132, 12,109,218,180, 33,140, 38, 30, 26, 77, 81,213, 3, 11,202,161, 82,169,226, 55,111,222, 92,123,236,216,177,178, -240,240,112,209,163, 71,143,176,124,249,242, 92,149, 74, 85,101,221,176, 18, 78, 93,136, 93, 37, 36,249, 15,157,121,227,232, 16, - 23, 85,175,228, 78,237, 49,106, 64, 39,236,138,252, 5, 81, 23, 47, 33, 73,173,184,169, 54, 11, 15, 62, 73, 74,211, 55,242, 40, -218, 55,168,125, 77,193,222, 45,249,251,124,186,207,125,133, 82,241,169,236,168,249, 14,143,182,181, 14,218, 48,193, 85,102,173, -247, 84, 18,217, 18, 16,226,176, 35, 34, 64,252,197, 75,209,141, 91,213, 15,199,141,248, 66,100, 21,232,161,213,155,193,243, 20, - 60, 40, 60, 93,156, 33,113,226,144,156, 24, 15,158, 26, 19, 28,109,155, 21,154,221,181, 75, 87, 33, 64, 64, 8, 21,138,132, 66, - 80, 88,235, 43, 74,165, 82,181,143,143,143, 67, 17, 45,163,217,140,161,125,219,162, 93,235,166, 24, 60,197, 90, 51,243,204,143, -115,224,174, 16, 97,215,182,141, 72, 62,191,114, 91,157, 14,211, 78,221,189, 19, 51, 44,230,198,111, 99,250,181,148, 54,247, 19, -166, 57, 85,164,167, 86,171,247, 17, 66,156,157,156,156,250,118,233,210,197, 99,223,190,125, 5, 94, 94, 94,188,179,147, 83,246, -160,129, 3,120,145,147, 83, 94,201,190,191,254,250,171,104,202,148, 41, 46,249,249,249,201,153,153,153,151, 40,165,149,134, 76, -228, 62, 97, 61,193, 97, 39, 8,145, 40,164,178,164,246, 61, 71, 5,180,110,215, 86,249,242,208, 17, 16, 59,139,241,243,169, 19, - 88,179,114,233, 30,117,250,253, 9, 14, 95, 70,252,121,163, 14, 83,146, 19,226, 53, 90,125,147,198,173,186,145,139,167, 14,206, - 32,196,123,165, 64,236,186,172,231,208,105,117,227,211,212, 88,179,228, 67,184, 43,229, 72,120,244, 64,251,240,254,157,245, 38, - 93,209,135,142,154, 44, 0,144,229, 90,134,181,127,173,175,187,222,104,193,133,179,145, 58,222,204,247,189,116,254,216,163, 26, - 13, 90, 75, 26,183,126,201, 61,231,208,198,161, 0,118, 85,165,147,114,255,217, 8,110,112,104,155,132, 51,103, 79, 43,125, 67, - 26, 9, 8, 8,140,122, 29,178, 31, 95, 51,107, 50, 31, 20, 21,166,220,113,104, 20,110,238, 19,124, 50,119,254,255,166,183,110, -213, 74, 78, 33,121, 42,130, 85, 98,176,114,138, 12,240,114,113,134,182, 40, 27, 15,175,157,208,105,178, 5,149,214, 59, 51, 27, -138,101, 57, 89,153,165, 93,108,234,204,216,118,149,237,159,147,149,233,108, 54,146, 10, 88,246, 0, 0, 32, 0, 73, 68, 65, 84, - 20, 87,249,219,193,113, 2,184,202,157,113, 39, 33,181, 52,241, 93, 44,178,230,102, 57,139, 4,165,121, 90,192,179,249,108,118, -232,230, 36,113, 67,106,174, 14, 4, 20,188,197, 12,179,201, 0, 85, 81, 17, 82,211, 50,144,153,145, 9,149,170, 0, 50,133, 59, - 26, 55,111, 3, 23,185, 4,183,162,246,128, 82,234, 80, 93, 67, 19, 17,133,182,110,215, 89,124, 55,209,154,139, 37, 17, 81, 28, -217,185, 52, 87, 93,148,213, 89,149, 22,247,208, 17,141,178,152, 45,150,211,183,239, 61,108, 84,195,191, 22,185,249,168, 16,219, -190, 95, 11,131, 45,178,105, 50, 89,112, 55,185, 24,233,121, 26, 36, 63,190, 79,121,139,229, 63, 51, 33,117,133, 70,139, 80, 8, -155, 54,110,136,222,175,190,140,111,190, 89,143,199,241,137,252,226, 25,253,147,213,170,130,126,142,154,172,178,179,123, 23,103, - 60,248,114,194, 55, 9, 41,135,111,228,113, 90, 67,229,243, 91, 73,188, 67,208,121,194,242,147, 90, 85,158,179, 69,175, 17, 30, -217, 54, 97,167, 61, 77, 0,224, 8, 12,139,223, 31, 9,133, 84, 8, 66, 8, 74,186, 11,215, 45,156, 12,153,216,218,183,172,213, -155,241,234,187, 43,176,109,197,123,160, 0, 70,143,248,229,169,161,153,101, 53,203,116,237,213, 72, 74,204, 74,237, 57,240,253, - 51, 58,163, 88, 63, 96,200,216,235,173, 90,181, 42,144, 74,165,144, 74,165,112,117,117,133,187,187, 59,220,220,220, 96,143, 10, - 52, 43, 28, 93,200,113, 28, 56,142,131, 92, 46,135, 66,161,128, 92,254,236, 40,156,170,102, 75, 87,248,133, 77,111,221,117,208, -186,151, 6,191,129,159,247,111,160,215, 46, 28,153,170,201,140,253,190,178,107, 93, 94,147,231,249, 91, 67,135, 14,109, 50,101, -202, 20,167,249,179,166,156,140, 60, 21, 21,183,247,232,134,129,249,249, 5, 65,148, 82,184, 41,149, 79, 70, 14,236,112,164,123, -199,214, 73,103,206,156,225,119,238,220,169, 39,132,220,169,170,157, 57, 89, 89, 63,158, 57,125,246,179,206, 93,187, 97,227,150, -157, 93, 99,238,221,239,250,232,209, 67, 4,133,212, 65,173,218,245,161, 33,238, 56,123,254, 34,212, 5, 89,118,115,200, 42, 58, -119, 91, 84,139,228,231,231,255, 54,114,228,200,222,191,252,242, 11, 55,114,228, 72, 77, 78, 78,206,175,176,221, 71, 85, 20,205, - 42,171,249,219,250,151,179, 1,252, 88,179,219,248, 61,169,198,130,119, 0, 44, 13, 14, 9, 70,212,197, 75,184,244,203,149,245, - 57,178,224, 5, 19, 94, 29, 63,185,230, 32,193, 27,131,218,215, 20,248,184,203,176, 99,195,114,193,225, 75,137, 43, 18,115, 45, - 27, 1, 44,172,172,157,229,201, 85, 25,209,177,161, 7, 76, 22, 10,158, 90,191,112, 93, 36, 34,187, 95,188,246, 52,133, 6,241, -132,169, 83,166, 60,106,220,180,249,204, 87,199, 79,117,106, 94, 39, 8, 87,127, 47, 0, 8,129,135,159, 28,233,233,233,184,240, -211, 6,115,126,234,131,245, 2, 1,255, 76,183, 79,101,237,204, 75,188, 81,175,204,126,147,115,114,114, 16, 21, 21,133, 18,131, -229,237,237,109,215,104,149,215,204,205, 76,251,117,225, 87,223,117,156,244,250, 16, 12,232,214, 8,231,175, 61,130,193, 86,175, -169,100, 40,121,252,165,111,157,223, 25, 89,199, 48,125,104,131, 34,173,201, 57,241,147,132,194, 11,101, 71,197,150,215,164,148, - 26, 8, 33,135, 99, 99, 99, 59, 53,107,214,172,230,177, 99,199,242, 98,174,156,156, 81,182, 29,239,191,255,190,226,155,111,190, -145, 81, 74,127,213,235,245,207, 68,221,237,158, 59,135, 29,209,215,175,123, 26, 77, 60, 46, 94,185,213,240,165,142,205,193, 83, -224,218,181,107,216,184,105,163,238,206,237,155,203,138, 51,253, 62,175,200,188, 84,116, 61, 29, 53, 85,246,246, 43,171,153,158, -154,184,236,231,200,159,182,181,238, 58, 16, 99,222,250,252,243,168,200,157,159,181,236, 60,128,107,216,186, 55,162, 47,157,197, -233, 99, 39,254,103, 84,231,125, 70,171,152,135,180,162,118,138,165,178,183,195, 91,118, 69,114, 82, 34, 18, 30,222,253, 81,155, -251, 48, 77,225, 23,246, 99, 90, 74,210,212,218,141, 58,226,151,147,187,102,160, 2,163, 85,213,123, 62,200, 91,186,225,216,209, -195,163, 82, 82,190,245, 43,214,234,196,148, 82,157,216, 89,152,161,224, 42, 30,161,254,236,235,126,207, 40,247,168, 53,116,196, -171, 83, 35,215,172, 89, 41,242,117,147, 33, 35, 95,135, 34,173, 17, 42,141, 17, 28, 33,168, 23, 32,135, 70,149,135,243, 63,125, -101, 50,168,243, 71, 82,250,187,177, 34, 77,133,111,216, 34,128,190,245,254,180,115,112, 86, 6, 5,212,126,233,163, 74,163,117, -170,180,219, 3,223,159,118, 36,148, 82,250,146,194, 55, 76, 85, 50,215,161,189,115, 39,196,250,249, 30,211, 61, 8, 70,179,181, -254,152,153, 7, 44, 60,111,139,242, 1,180,180, 63,255,217, 15,252,211,154,132,223, 29,249, 43,210, 50, 11,160, 53,152,160, 55, -152, 97, 52, 89,192, 9, 4,112,115,119, 67,253, 90, 45,160,116,115, 69,102, 70, 26, 46,157, 57,140,184,219,231,127, 37, 20, 11, - 52, 89,113,103, 42,214,252, 3, 39,169, 91,168,127,128, 31,151, 94,100,128,212, 89,128,155,231,143, 25, 77, 6,253, 50, 71, 76, -150, 61,205,130,220,188, 21, 51,103,125, 48,250,135,205, 91,252,154,212,118, 69, 74,142, 22, 41,217, 58,168,116,214,251, 28,179, -133,135, 94,157,131,219,103,183,100, 88,116,170,231,170,100,255, 79,164, 66,163,101, 54,234, 84,251, 78, 92,245,156,243,217, 87, -130,223, 31, 61, 54, 45,122, 39, 34, 69,171, 46,234, 95,237, 72, 86, 25, 54, 79,175, 85,229, 29,209,211,216, 74,154,124,158, 88, -233, 94,207,116, 23, 82, 30, 60,165, 56,114, 37,163,180,187,144,183,101, 94,222,120, 84, 80,169, 86,249,174,189,219,177,170,237, - 90,109,166,242,193,239,203,242, 1, 64, 32, 16,148, 46, 37,185, 84, 58,157,174,210, 81, 72,149, 20, 35,125,170,223,155,231,121, -184,186,186, 66, 42,149, 86,187, 75, 82,238, 27, 58,170,117,183,193, 95,191,244,242, 36,156, 62,240, 61,189,118,254,240, 52, 77, - 86,108,133,117, 61, 42, 34, 63, 63, 63,134, 16,242,112,217,178,101,205, 55,110,220, 88,123,214,172, 89,143,183,126,253,217, 26, - 0,200,205,181,206, 1,124,227,198, 13, 58,109,218, 52,189, 78,167,139,207,207,207,143,174,106, 0, 4, 0,104,179,101, 95,108, - 92,183,180,241,147,212,244, 33,117, 26,183,129,119,237, 54,240,171,215, 22,249, 42, 35,174,254,158,134,199,247,207,224,254,197, -159,142,105, 20,230,207,170,219,230,102,205,154, 5,113, 28, 87, 75,173, 86,251,133,135,135, 55,147,203,229, 55,154, 53,107,214, - 66, 40, 20,166, 92,191,126,189,242, 55, 79, 57, 18,163,126,208,215,236, 54,126,117,146,202,165,251,227, 12, 77,139, 36,149,203, - 13,141, 88,249, 94,214,153, 85,122,223,222,203, 86, 80, 99, 78,204,222, 45, 69,251,118,108, 88, 46,120,117,242,251,150,187,133, -238,239, 8,165,206, 63, 47, 25,215,196,225,231, 32,132, 75,159, 62,118,240, 31,229, 29,108,145, 44,219, 99,135,194,244, 5, 5, -183, 10, 1,204,150, 6, 52,250,250,238, 59, 83, 22, 54,109,221,241,181, 46,253, 70,114,102, 39, 5, 78, 30,248,150,198,223, 62, -187, 87, 72, 45,243, 52, 14,204, 6, 80, 21, 6,131,161, 74,147,101,143,194, 39,242,110,123,119,110, 26,183,239,192,254, 37, 47, - 15, 26,236,185,238,147, 87,240,213,119, 7, 33,151,138, 65,121, 30, 35,123, 4, 15,191,191,179,207,192, 32, 95, 73,224,190,115, - 41, 23,222, 90,121,119,182, 70, 99,140,171, 42, 18, 99, 51,206, 23, 93, 92, 92,178, 59,117,234,212, 78, 44, 22,147,156,156, 28, -161,143,143,143, 89,169, 84, 26, 82, 82, 82, 52,122,189,126, 31,165,212,225, 40, 35, 0, 24, 77, 60, 18, 50,117, 56,180,127, 31, -110, 93, 57,131,251,247, 99, 85,247,239,221, 95, 75,132,116,165, 58, 35, 46,175,106,133,103,225,237,142, 58,180,191,173, 50, 44, -122,213,142,173,235, 23,245,208,232,244,227,154,117,136, 64,205,134, 29, 57,163,201,130, 59,215,206,225,220, 79, 43,191, 50,168, -114,231, 60, 79,251, 74, 8,168, 81,187, 62, 21, 56,227,183,168, 72, 80,158, 95, 15, 0,148,231,215,223,248,229,216,212,182,253, -223,128,135, 79,205,102,132, 16,226,104,190, 87, 89,156,132, 92,241,241,125, 63, 28, 72, 72, 72,192,131, 7, 15,240,251,239,191, - 35, 47, 47, 15, 59,118, 36, 84,235,245, 41,206, 75,248, 89,225, 89,167,207,176, 87,198, 28, 25, 62,234,117, 73,237,250, 77,184, -208, 26,238,240, 84, 8, 17,251,123, 34,226,174,223,230, 99,175, 30,211, 25,139,178, 94,214,228, 37, 84,104,252,228,222,225,190, -132,163,115, 74,230, 46,108,223,190, 99,232, 7,139,151,180,243,244,246,177,251, 61,158,155,157,229,252,225, 91,135, 67, 47, 93, -254,205,161,185, 14,121,139, 37,119,242,184,145,188,192, 58, 81, 40, 74,227,212, 4, 0, 45,137, 98, 89,183, 83,222, 92,101, 4, -127,252,144,206, 48,243, 60,138,181, 70, 20, 21,235, 81,168,210, 33, 61, 43, 23,183,110,223,198,249, 35,135,241, 40,246, 86,188, -201, 96, 56,197,113,228, 39, 77, 70,236,249,170,244,158,130, 19,214,246,244,240, 64,124,158, 26, 18,103, 33, 18,227,174,235,139, -139, 10, 43,156,141,164, 42, 52, 57,113,233,114,223,208,222, 35, 71,142, 58,209,163,207, 32,101,235, 14, 61,101, 94,174,110,112, - 18, 82, 60, 76, 72, 67,244,175, 39,138, 31,223,186, 80,100, 50,168,251,254, 25,179,190,252,157,113,104,212,161, 81, 95, 60,112, -244,224,174,251, 5, 2,161, 51,207,155,245, 70,131,126,216,139,152,172,191, 10, 74, 45, 41,227, 70, 91,147,219, 75,238, 13,204, - 60,149,142, 30,113, 82, 91,246, 94,193,100,161,178,209, 35,126,213, 0, 0,229, 43, 78,236, 43,237,218,219,245,115, 74, 82, 82, -238,181,188, 60,253,185, 23, 29, 9, 88,118,238,194, 74, 70, 23, 22,135,133,133,149,154, 43,129, 64, 0,139,197,226,240, 23,145, -147, 88, 58,169,199,160,137,228,244,193,239,233,213,168,131,211, 53, 89,113,223, 61,111,123,109,198,233, 10, 33,228,238,188,121, -243, 90,251,250,250,250,126,250,233,167,146,162,162, 34,209,186,117,235,116, 57, 57, 57, 25, 69, 69, 69,151, 40,173, 56,113,249, - 89,205,104, 19,128,161, 10,223, 6,221,233,190,239,123,185,121, 5,246, 86,122,215,168, 91,144,157, 26, 95,152,157,118, 10,192, -105, 91,161,200,106,209,162, 69,139, 58, 28,199,141, 4,208, 88, 46,151,215, 83, 40, 20, 98, 74,105, 24, 33, 36,134,231,249,219, -225,225,225, 71, 1, 84,235,245, 75,140,250, 65,223,101,250,166,157,121, 26,222,201,192, 57,237, 76,140,250, 65, 15, 0,153,167, -102,105, 0, 28,242,237, 62,103,232,225, 75,137,107, 98,242,149, 51,178,206,125,225,240,220,119, 37, 20, 60,185, 89,175,234,189, - 28, 67,155, 22,147, 2, 96,156,220, 55,116,249,157, 27,151,230, 19, 10,145, 5,230, 69,154,204,135,215,255, 12,125,145, 72,164, - 11, 12, 12,180, 59,186, 80, 44, 22, 87,154,191, 98, 43,154,184,145,144,110, 91,246,239,217, 50,238,224,225, 67, 75,186,188,244, -178,167,164, 70, 13,212,242, 33,216, 50,167,229,140, 51, 55,178,175, 14,250,224,194, 55,143,211,116,183, 41,165,213,202,135, 81, -169, 84,113,132,144,124,181, 90, 61,152, 82,250,132, 16, 18,148,159,159,127,211,100, 50,221,169,182, 33,224, 49,166,125,251, 54, - 59, 8, 33, 66,106,230,191,188, 36, 18,236,212,165,223, 79,121, 30, 99, 81,150, 38,181, 92,241,238,167,171, 91,214,173,215,160, -101,201, 92,135,141,106,186, 96,202,236,229, 45,107,214,174,223,242,143,249, 15, 43, 31,117,104,139,220, 78,216,191,233,203, 11, - 55, 46,159,251,200,203,191,102,205,140,148,199,247,159,252,126,115,161, 89, 91,248, 92, 19, 51,151, 37,225,247,152,149, 27,151, -205,158,149,158, 26,191,177, 56, 43,238, 46, 0, 20,103,197,221,149,249, 54,248, 36, 39, 35,101, 86,110,214,227,101,207,123, 45, -138,139,139,211,182,111,223,238,214,177, 99, 71,206,215,215, 23,217,217,217, 56,119,238, 28,207,243,124,149, 19, 64,151, 71,157, -251,248, 28, 33,117, 61,126,252,238,235, 47,157,228, 46,253,205,102,115, 0,165,128, 80, 40, 76, 55,104,138, 78,168, 56,249, 7, - 52, 47,161,138,247, 37, 79, 0,112, 37,115, 23,242, 60, 79,190, 92,179, 37, 81, 36,113,177, 59, 63,162, 73,167,146,241, 60,239, -240, 92,135,249, 73,215,235, 86,247,188, 42,130, 80,186,160, 89,171,118, 31,153, 76, 70, 29,172,249, 98, 58, 0, 58, 74,145,203, -113,228,188,128, 55,157,116,100,106,181, 10,245, 9, 92, 41, 17,194, 69, 42, 4, 1,129,186, 48,143, 86, 39, 39,203, 30,197,153, -177, 49,132,116, 11, 57,110,216, 51,246,236,207,199, 70, 88, 44,150, 90,182,119, 78,130, 94, 91,188, 87,157,238,254, 35,165,215, - 94,108,216,250, 63,131,200, 18,179, 85,161,209,178,153, 42,135, 39,187,252,191, 34, 55,190,234,106,181,213, 33, 61, 51,111, 75, -159,151,103,209,132,196,172,171,201, 25,250, 31,105,153,105,117, 94, 84,243,201,147,236,115,182,238,194,103,194,251,207, 59,186, -176, 4,163, 78,251,191, 85,243, 70, 65,167, 45,222,170,201,138,219,242, 34, 90, 37,216,140,212,121, 66,136,114,250,244,233, 45, - 20, 10,133, 40, 39, 39,231, 10,165,180,240,121, 53,213,153,113,231, 0,156, 3,240, 66,119,224, 37,220,184,113,227,113,243,230, -205,183,113, 28, 87,139, 82,234, 75, 41, 85,194,106,100,115,132, 66, 97,234,189,123,247,170,253,101, 14, 0, 84,239,114, 92,109, - 16,212, 55, 83,247, 19,229,255, 39,242,244,249, 57, 41,207,242,189, 64, 46,249,219,228, 24, 20,103,198,198, 0,248, 19, 42,245, - 62, 77,101,117,178, 28,165,172,225,138,138,252, 97, 28,231,172, 92,244, 82,168, 78,211,123,102,234,194,139,119,178,175, 80, 74, - 29,174,182,253,172, 54,205,118,118,118,214, 18, 66,130,156,156,156,180, 6,131,225,246,243,232,216, 76,254,115,141, 76,172, 8, - 30,228,122,203,150,142,127, 61,241, 32,149,154, 99,155,209,217, 98, 91,254, 84,212, 25, 15, 22,194,214,253, 93, 22, 77,102,220, - 34, 0,139, 94, 68,251,218,181,107, 71,150, 45, 91, 86,184,102,205,154, 96,139,197, 34, 51, 24, 12, 26,173, 86,155,144,146,146, -242,219,243,232, 81,250,200, 0,224, 29,219, 82,109, 52, 57, 15, 50, 20,190, 13, 86,119,104,223,225, 29, 0, 32,160,171, 19,206, -175,126,183,178, 99, 20,190, 13,180,101,247,175,108,174,195, 63, 19,117, 86,220,122, 0,235,255,178, 39,160,124,246,152,225,131, - 1, 91, 97,110,222,108,126,238, 50, 30, 79,201, 90, 63,243,155,240,156,147,164,255, 27,160,148,166, 3,216, 0, 88,135, 60,254, -101, 79,228,104,190, 10,211,100,154, 76,243,191,165,233,200,236, 4,213,213,116, 20,166,201, 52, 1,235, 60,187, 0,224,200,164, -235, 21,237,255, 79, 61,247,191,171,230, 63, 25, 82,110, 66,105,224,143, 81,136, 14,207, 28,206, 96, 48, 24,127, 22,213, 25, 17, -199, 96,252, 21, 56,106,176,158,119,127,198,127,139,138, 74, 59, 0,214,180,166,158, 21, 28,228,176, 83, 37,132,216,213,168,162, - 81,149,234, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,223,167, 89,149,246, 63, 49, 82,102, 39,162, 21,105,235, 62,180, 22, -102,251,171, 22, 0, 61,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 75, 11,128,201, 37,143, 29,159, 59,134,193, 96, - 48, 24, 12, 6,131, 81, 45, 88,142, 22,131,193, 96, 48, 24, 12,198, 11, 96,175,235,176,228, 1, 51, 90, 12, 6,131,193, 96, 48, - 24, 47, 0,173, 36, 25,158,117, 29, 50, 24, 12, 6,131,193, 96,188, 0, 37, 17, 45, 66,136, 63, 33,100,114,217, 8, 23, 51, 90, - 12, 6,131,193, 96, 48, 24,127, 2,148,210,244,242,209, 45, 66, 41, 69,100,100, 36,141,136,136, 32, 0,158,122,204, 96, 48, 24, - 12, 6,131,241,255,131,127,178, 23, 33,132,248, 3,136, 40,179,169,180,188, 67,105, 68, 43, 50, 50,242,175, 43, 17,207, 96, 48, - 24, 12, 6,131, 81, 5,255, 84, 47, 82, 18,201, 42,179,148, 78,154, 93,106,180, 34, 34, 34,200, 63,245, 4, 25, 12, 6,131,193, - 96,252,243,249, 55,122,145,167,114,180,254, 73, 97, 58, 6,131,193, 96, 48, 24,255, 62,254,109, 94,132,149,119, 96, 48, 24, 12, - 6,131,193,120, 1, 42,203,209, 34,182, 82,241, 12, 6,131,193, 96, 48, 24,140,231,128, 16, 50,185,236,104,195,178,235, 44,162, -197, 96, 48, 24, 12, 6,131,241,130,216,169, 14,111,221,206, 34, 90, 12, 6,131,193, 96, 48, 24,127, 13,127,105,193, 82, 66, 72, - 79,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 51, 37, 21,225,109,143, 39,219,114,182, 0,176,202,240, 12, 6,131, -193, 96, 48, 24, 47, 74, 4,165,116, 67,153,220,172,210,196,120,102,180, 24, 12, 6,131,193, 96, 48,254, 4,236, 77, 46,205,140, - 22,131,193, 96, 48, 24, 12,198, 11, 80,222, 96,149, 93,103, 70,139,193, 96, 48, 24, 12, 6,227, 47,130, 25, 45, 6,131,193, 96, - 48, 24,140,191, 8, 2,192,238,200, 1, 74,233,105,135, 69,158, 99,244, 65, 85,250, 76,147,105, 50, 77,166,201, 52,153, 38,211, -252,247,105, 86,165, 93, 29,255,241,119,161, 76,101,248, 72,219,223, 63,186, 15, 41,165,127,217, 2,160, 39,211,100,154, 76,147, -105, 50, 77,166,201, 52,153,230,191,121, 1, 48,185,236,223,178, 11,235, 58,100, 48, 24, 12, 6,131,193,120, 65,202,213,209, 42, -173, 18,207,166,224, 97, 48, 24, 12, 6,131,193,120, 1,168,157,178, 14, 37,176,136, 22,131,193, 96, 48, 24, 12,198, 11, 80,126, -158,195,178,235,204,104, 49, 24, 12, 6,131,193, 96,252, 9,216,155, 88,154, 25, 45, 6,131,193, 96, 48, 24,140, 23,164,108,142, -214, 83,219,109, 89,242,136,140,140,164, 17, 17, 17,228,255,160,109, 12, 6,131,193, 96, 48, 24,255, 74, 47,194, 1,127,156, 88, -100,100, 36,253,191,110, 16,131,193, 96, 48, 24,140,255, 30,255,100, 47, 66, 8,241, 47, 25,109,104, 91,252, 75,254,199, 70, 29, - 50, 24, 12, 6,131,193, 96,188, 24, 17,101, 71, 30,218,186, 15, 55, 0,204,104, 49, 24, 12, 6,131,193, 96,188, 48,246, 18,225, - 1,150,163,197, 96, 48, 24, 12, 6,227,111,194,191,209,139,148, 26, 45, 6,131,193, 96, 48, 24, 12, 70,245,177, 23,205, 42,233, - 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 79,128, 16, 50,185,124,149,120, 86, 71,139,193, 96, 48, 24, 12, 6,227, 5,177,103, -178,128,191,216,104, 17, 66,122, 50, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254,155, 41, 63,161, 52,155, 84,154,193, 96, - 48, 24, 12, 6,227, 79,130, 77, 42,205, 96, 48, 24, 12, 6,131,241, 23,193, 38,149,102, 48, 24, 12, 6,131,193,248,139, 97,147, - 74, 51, 24, 12, 6,131,193, 96,252, 5, 84, 52,169, 52,203,209, 98, 48, 24, 12, 6,131,193,120, 1, 42,203,209, 34, 0,236,142, - 28,160,148,158,118,244, 9,158,103,244, 65, 85,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,247,105, 86,165, 93, 29,255, -241,119,229,169, 82, 15,148,210,191,108, 1,208,147,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,191,180, 0,152, 92,242, -152,117, 29, 50, 24, 12, 6,131,193, 96,188, 0, 21, 77, 40, 13,176, 28, 45, 6,131,193, 96, 48, 24,140, 23,130,178, 58, 90, 12, - 6,131,193, 96, 48, 24,127, 13,132, 16,127, 91, 69,248,146,191, 45, 74,254,199,140, 22,131,193, 96, 48, 24, 12,198,139, 17, 97, -139,106,149,252,101, 70,139,193, 96, 48, 24, 12, 6,227,207,162,162, 58, 90,132, 82,138,200,200, 72,106, 91,239, 22, 17, 17,113, -254,255,119,227, 24, 12, 6,131,193, 96,252,183,249,183,122,145,210,136, 86, 68, 68, 4, 1, 16,245,127,216, 22, 6,131,193, 96, - 48, 24,255, 97,254,141, 94,164,212,104,217,156,100,183,255,195,182, 48, 24, 12, 6,131,193,248, 15,243,111,244, 34,165,229, 29, -108, 46,146,193, 96, 48, 24, 12, 6,227,255,132,127,170, 23, 33,132,248, 3,136, 0, 16,105,251, 91, 90,242,129,213,209, 98, 48, - 24, 12, 6,131,193,120, 49, 34, 40,165, 27,158,154,122,199, 6,177,149,138,103, 48, 24, 12, 6,131,193, 96, 60, 7,246, 42,195, -151, 24, 46,102,180, 24, 12, 6,131,193, 96, 48,254, 34, 88,215, 33,131,193, 96, 48, 24, 12,198, 11, 82, 54,170, 85,182,251,240, - 47, 45, 88, 74, 8,233,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249,111,166, 36, 55,171,100, 41,107,186, 88,101,120, - 6,131,193, 96, 48, 24,140,191, 8,214,117,200, 96, 48, 24, 12, 6,131,241, 2,148,143, 98,149,237, 58,100, 70,139,193, 96, 48, - 24, 12, 6,227, 5, 41, 95,214,161, 4,214,117,200, 96, 48, 24, 12, 6,131,241, 2,216, 43,239, 80, 2, 51, 90, 12, 6,131,193, - 96, 48, 24,127, 2,246, 12, 23, 1, 96,119,228, 0,165,244,116, 53,132,171, 61,250,160, 42,125,166,201, 52,153, 38,211,100,154, - 76,147,105,254,251, 52,171,210,174,142,255,248,187, 80, 89,193, 82, 80, 74,255,178, 5, 64, 79,166,201, 52,153, 38,211,100,154, - 76,147,105, 50,205,255,234,194,186, 14, 25, 12, 6,131,193, 96, 48,254, 34, 28, 54, 90,132, 16,111,145, 72,244,145, 76, 38,251, - 70, 38,147,125, 39, 18,137,150, 17, 66,220,171,251,132, 10,133, 98,134,191,191,255, 3,127,127,255,148,144,144,144, 99,174,174, -242,153,117, 37,164, 11, 33, 68, 84, 93, 45, 59,109,228, 8, 33,161,132,144,153, 50,153,236,190, 84, 42, 77, 36,132,108, 35,132, -204, 36,132,120,189,136,246,162, 64, 50, 44,102,230,203, 7, 23, 5,146, 97,229,158, 51,194,207,207,239, 34, 33,164,247,139,181, -254, 15, 70,203, 73,207, 17, 10,146, 60, 66, 65,146, 71,203,159,191, 40,156,171,171,235,107, 1, 1, 1,151,188,188,188, 82, 3, - 2, 2,126,149, 74,165,195,171,115, 60, 33,196,199,207,207,239,171,224,224,224,184,192,192,192, 85,182,217,201,255,182,116,145, -144,206,237, 37, 36,187,131,152,168, 58,137,201, 55, 29,196,164, 87,111, 66,100,207,163, 69, 8,233, 68, 8,249, 73,169, 84,222, - 20,137, 68, 71, 9, 33, 67,109,239,175,161, 34,145,232,168, 82,169,188, 73, 8,249,137, 16,210,233, 57,180, 57, 66,200, 87,132, -144, 84, 66,200, 23,182,245,183,131,131,131, 85,205,154, 53, 75,108,214,172,217, 15,245,235,215,127,221, 81, 61,185, 92,222, 43, - 56, 56,120, 95, 72, 72, 72, 98,135, 14, 29,242,106,212,168, 17, 27, 20, 20,180, 69, 34,145,116,171,110,219, 24, 12, 6,131,241, - 39,227, 64,120,112, 32,128, 37, 0,214,222,190,125, 59,154, 82, 26, 77, 41,141,190,125,251,118, 52,128,111, 0, 44, 69, 5, 33, -196,242,219, 61, 61, 61, 23, 44, 90,180, 72,151,158,158, 78,179,179,179,105, 92, 92, 28, 93,249,241,108,190,143,135,144,214,241, -118,215,248,251,251, 63, 10,169, 81, 99, 87, 35, 5, 55, 27, 64,221,234,132, 43, 1,184, 75,165,210, 43, 31,127,252,177,250,226, -197,139,106,131,193,160,230,121, 94,157,150,150,166, 62,125,250,180,186, 99,199,142,106, 0,239, 2, 16, 60, 79, 8,244,243, 0, -156,167,155, 62,161,159, 7,224,124,217,237, 97, 97, 97,247,120,158,167,195,134, 13,211, 3, 8,124,145,176,106, 32, 32,105,228, - 10,183,225, 10,100,154,183, 44,164,116,221, 44, 58, 92,142,228,231,209,244,241,241, 57, 52, 99,198,140,162,212,212, 84,170,215, -235,105,114,114, 50,157, 50,101, 74,161,143,143,207,118, 7,175,167,103,147, 38, 77, 50, 47, 93,186,196, 23, 20, 20,208,168,168, - 40,190,113,227,198,153, 0,252, 29,120,207,244, 44,215,150, 13, 1, 1, 1,199,170,179,248,248,248,108,172,238,107,212, 86,140, -100, 99,244, 57, 74,175,157,162,135,135,181,167, 43, 91,213,160, 67, 61,156, 11, 58, 57,227,237,174,128,176, 26,239,165, 17, 93, -187,118, 45,190,115,231,142, 37, 55, 55,151,222,187,119,143,159, 52,105,146, 14, 64,204,164, 73,147,116,247,238,221,227,115,115, -115,233,157, 59,119, 44, 93,187,118, 45, 6,240,134,163,237,132,245,230,102,243,103,159,125, 70, 41,165,116,209,162, 69,180,105, -211,166,180, 71,143, 30, 84,173, 86, 83, 74,105, 34,165,244, 7,179,217, 60,206, 17, 77,165, 82,249,218,140, 25, 51,212, 26,141, -134,150,192,243, 60, 45, 40, 40,160,107,215,174, 45,246,243,243, 59, 6,192,235,121,222,243,213, 93,152, 38,211,100,154, 76,243, -191,186, 0,240, 7, 48,185,204, 82,250, 91, 89,213,129,163,103,207,158, 93, 98,170,142,119,234,212,233,234,184,113,227,162,199, -141, 27, 23,221,169, 83,167, 40, 0, 39,175, 95,191, 30,253,225,135, 31, 70, 3, 24, 93,217, 11, 1,192,189, 67,135, 14, 5, 25, - 25, 25,180,126,253,250,180,102,205,154, 52, 35, 35,131, 82, 74,233,181, 17, 45,233,153,134,160, 79, 46, 28,167,167, 14,252, 68, - 39,249, 11,105,103,127,165,201,223,207, 47,215,203,203,107, 49,108,147, 95, 87,244,226, 2, 24,210,176, 97, 67, 85, 76, 76,140, -250,225,195,135,234, 5, 11, 22,168,123,244,232,161,110,210,164,137,122,232,208,161,234, 53,107,214,168,141, 70,163,122,227,198, -141,106, 87, 87,215,152,242,102,235, 69,140,150, 80, 40, 92,125,251,246,109,250,232,209, 35, 10,224,171,138, 52, 1, 40,221,220, -220,250,186,187,187,191,235,230,230,214, 23,128,146, 82,138,250,128,162,153, 18,193,111, 55,171, 19,118,116,116,207,186,107,123, -182,110, 57,220,133, 43, 48,125, 61,139,210, 97,193,207,101,180,148, 74,229,107, 51,103,206, 84,233,245,122,170,209,104,168, 90, -173,166, 26,141,134,170, 84, 42, 58,122,244,232, 34,137, 68, 50,164, 42, 77, 47, 47,175,133, 23, 46, 92, 48,103,100,100,208, 11, - 23, 46,208, 99,199,142,209,117,235,214,241, 62, 62, 62, 43, 28,120,195, 61,165,233,231,231,247,243,169, 83,167,162,111,220,184, - 17,125,229,202,149,104,147,201, 20,109, 52, 26,163,141, 70, 99,244,209,163, 71,163,247,239,223, 31,189,123,247,238,104,131,193, - 16,109, 48, 24,162,245,122,125,116,237,218,181, 79, 84,247, 53,106, 35,198, 19,195,197,195,148,174,120,147, 22,254,111, 26, 45, -120,175, 63,205,154,210,133,126,211,186, 6,237, 34,197,145,178,239,163,202, 52, 69, 34,209,249,196,196, 68,126,238,220,185,134, -240,240,240,194, 9, 19, 38,232,244,122, 61,165,148, 82,189, 94, 79, 39, 76,152,160, 11, 15, 15, 47,156, 59,119,174, 33, 33, 33, -129, 23, 10,133,167, 29,109, 39,128,165, 37, 38,235,252,249,243,180, 44,106,181,154,246,232,209, 35,177,105,211,166, 63,212,170, - 85,107, 76, 85,154, 10,133, 98,240,156, 57,115,212,212, 14, 38,147,137,170, 84, 42,154,144,144,192,215,172, 89, 51, 13,128,103, -117,175,103,117, 23,166,201, 52,153, 38,211,252,175, 46, 0, 38, 87,180, 94,233, 69,252,240,195, 15,163, 41,165,209,243,230,205, -139,134, 53,178,229, 4, 64, 97, 91,132, 0, 70,205,153, 51, 39,154, 82, 26, 61,123,246,236,104, 0, 3, 43,122, 33, 0, 12,220, -187,119,175,113,213,170, 85,212,215,215,151,250,249,249,209,213,171, 87, 83,158,231,105,198,209,237,244, 76, 67,208,251, 31,141, -165,148, 82, 26,183,248, 45,122,166, 33,232,227,245,159,211, 87, 95,125, 85, 35,147,201, 70,219,211,180,173,123,180,108,217, 82, -165,213,106,213, 91,182,108, 81,203,100,178,107, 0,194, 1,136, 96, 29, 85,169, 0,240,122,120,120,120,209,221,187,119,213, 59, -119,238, 84, 3, 88,224,200, 27, 6, 64, 93, 0,221,229,114,249,208, 57,129,162,135,116,211, 39,116,142, 47,238, 0,104, 12,192, -219,182, 79,192,236,217,179, 41,165,148, 6, 5, 5, 93,168,224,220,149, 77,154, 52,153,253,240,225,195,249, 38,147,105,254,141, - 27, 55,230, 55,104,208, 96,238,160,218,254,237, 15,142,238,213,162,240,243,105, 45,232,242,247,154, 44,235,215,166,231,174,145, -221, 70,143,175,229,117,113,130,143, 68,243,138, 82,160, 26, 37,123, 74,199,161, 55,118, 96, 96,224,149,228,228,228, 82,115,165, - 82,169,104,106,106, 42,141,143,143,167, 23, 47, 94,164,254,254,254,103,170,210,244,243,243,187,151,156,156, 76,215,175, 92, 73, -135, 53, 14,163, 93,220, 92,104, 87,119, 23,218, 74, 33, 41,110, 8,180,170,226, 13,247,140,209,186,121,243,102, 52,128,104, 0, -209,185,185,185,209,185,185,185,209,249,249,249,165,219, 0, 68, 23, 22, 22, 70, 23, 22, 22, 70, 27, 12,134,232, 58,117,234, 84, -219,104,117,148,160, 99, 91, 9,242,218,139,161, 29, 24,232,149, 54,173,182,151,229,242,232,246, 52,255,205, 30,116, 85,139, 64, -218,201, 25,111, 59,248,186, 15,116,118,118,142, 2, 48, 11,128, 0,192,216,190,125,251,106, 40,165,180,111,223,190, 26, 0, 99, -109,219,103, 10,133,194,211, 0,250, 58,210, 78, 0, 92,189,122,245,138, 41,181, 70,178, 0,252, 86,175, 94,189,226,166, 77,155, -210,166, 77,155,210,160,160, 32, 21,128,177, 85, 93,207,146,165,110,221,186,113, 90,173,150, 82,106, 53,128, 5, 5, 5, 52, 45, - 45,141, 62,126,252,152,198,196,196,208,107,215,174,209,196,196, 68,186,103,207, 30,139,155,155, 91,100,117,175,103,117, 23,166, -201, 52,153, 38,211,252,175, 46,120, 58,154, 53,217,174,209, 58,122,244, 40, 45,119,208,255,174, 95,191, 30, 61,103,206,156,232, -242, 78,173,188,248,188,121,243, 74,162, 94, 75, 42,218, 47, 48, 48,112, 99, 92, 92, 28, 29, 59,118, 44, 13, 13, 13,165,161,161, -161,116,220,184,113,180,176,176,144,170,127,191, 75,207, 52, 4,189,246, 74, 43, 74, 41,165,170,251, 55,232,153,134,160,209,175, -118,160,183,110,221,162, 53,106,212, 56, 85,201,243, 31,249,245,215, 95,179,183,111,223,158, 1, 96,155,205, 96,181, 3,176, 90, - 42,149,110,134,181,187,176, 38, 0,247,250,245,235,231,105, 52, 26,245,176, 97,195,212, 0,130, 43,209,236, 26, 26, 26,250,104, -227,198,141, 52, 43, 43,139,230,229,229,209, 47, 59, 54,160,116,211, 39,116, 81,171,154,252,250,245,235,245,179,102,205, 42,246, -240,240, 56, 10, 32, 96,216,176, 97,102, 74, 41,237,210,165, 75,166, 61, 61, 55, 55,183,190, 15, 31, 62,156,175,211,233,230, 23, - 20, 20,204,207,203,203,155,127,248,224,193,249,125, 26, 55, 24, 91,248,249,180, 22, 7, 71,247,106,209, 47,208,125,232,138,222, -173,167,166,206,125, 99,216,188, 14,225,247,117, 75,223, 57, 55,162,182,239, 87, 21,181,177,178,197,219,219, 59, 93,175,215, 83, - 0,207, 44,143, 30, 61,162,158,158,158,201,255,143,189,243, 14,139,234,218,218,248,187,103,206, 20, 96,128,161, 51, 52, 81, 41, - 98, 3, 68, 99, 23, 77,236,177, 43,246,114,173,137,229,106, 52,106,140, 5, 36, 81, 99,137,177,197, 36, 38,182,136, 70, 44,196, - 24,177,199,130, 26, 43, 40, 2,162, 32, 72,147, 94,102,134, 25,134,233,251,251,131,242, 17,165,154,228,222,155,228,252,158,103, - 63, 48,115,246,121,207,218,103,206, 97, 22,251,172,189, 86, 67, 26, 54, 54, 54,171, 62,152, 48,222, 48,170,185, 11,125,190,125, - 53,213, 93,250,129,234,206, 30,164,201,155,150,208,225, 18, 59,121, 87, 62,103, 69, 99,237,145, 72, 36,151,238,222,189,251, 27, - 71,171,164,164,164, 86, 71, 75, 46,151, 71,107, 52,154,104, 47, 47,175,243,111, 50,246,154,173,171, 0, 30,189, 77,185,247, 99, -166,245,162, 5,115,223,161,131,196,188,180,223,113, 19, 77, 0,112, 13,192,228, 38,238,199, 1,176,177,202,161,218,180,105, 19, -165,148, 82, 47, 47, 47, 37, 0,206,239,176, 71,220,186,117,235,212, 89,179,102,233,219,180,105,147,223,163, 71, 15,233,189,123, -247,232,245,235,215,233,217,179,103,233,137, 19, 39,104, 92, 92, 28,125,249,242, 37,125,246,236, 25, 29, 50,100,136, 20, 64,239, -223,123, 78,217,198, 54,182,177,237,207,108,175,250, 34,127,135,198, 1,128,200,200, 72, 58,100,200, 16, 18, 25, 25, 73, 1,128, - 16, 34, 6, 96,210,169, 83,167,130,141, 27, 55,110,165, 21, 53,124,136, 31, 67,198,246, 53,227, 61,234,107,198,123,228,199,144, -177,132, 16, 66, 41,253,118,253,250,245,159,250,249,249,229, 0, 48, 37,132, 72, 80, 11,148,210, 94,182,182,182,200,200,200,128, - 88, 44,134, 88, 44, 70, 70, 70, 6, 40,165,208, 83, 64, 71, 1,181, 86, 11,149, 74,133,114, 35,133,202, 8,200, 21, 10, 72, 36, - 18,104,181, 90,143,218, 52, 9, 33,254,227,198,141,243,240,245,245, 45, 88,190,124,121, 54,128, 89, 0,246,207,156, 57,243,210, -175,191,254,234,171, 80, 40,138,227,227,227,203,219,183,111, 63, 8,128, 36, 41, 41,105,202,174, 93,187, 48,109,218, 52, 0,232, - 93,135,102,251, 33, 67,134,156,141,139,139,243,152, 60,121, 50,174, 93,187,134,205,155, 55,163,176,176,144, 2,128, 90,173,166, - 6,131, 65,219,189,123,119,237,246,237,219, 59, 7, 6, 6,222,109,217,178, 37, 23, 0, 82, 83, 83,147,235,208,108,229,238,238, - 14,181, 90,141,130,130, 2,196,197,197,193, 66, 44, 70,108,118,161, 99,159, 47,190, 46, 90,121,234, 18,111, 66,103, 95,155,197, -253,123,168, 55, 92,188,230,221,214,217,209, 81,163,213, 73,158,229,228,101,215,166,215, 16,124, 62, 63,163,176,176, 16, 26,141, - 6, 42,149, 10,114,185, 28, 69, 69, 69, 40, 44, 44, 68,118,118, 54,248,124,254,243,134, 52, 44,139,139,163, 82,111, 93, 39,199, -190,217, 4, 15,125, 49,152,147, 59,192,252,244, 21, 60, 53, 5,216,179,250, 61, 11,141,173,253, 90,177,165,101,137,181,181,245, -183,132, 16,175,134,244, 2, 2, 2, 80, 84, 84,132,162,162, 34,216,218,218,194,218,218, 26,214,214,214,144, 74,165,144,201,100, -144,203,229,240,246,246,134,191,191, 63, 14, 29, 58,244, 38,195,126,141,219,106,154,162,135, 97,238,165,167,217,224,139, 68,104, -105,109,238,222,217,130,216,212,213,159, 16,242, 14,159,207, 63,110,107,107,123,145, 16, 50,159, 16, 34, 34,132,204,183,181,181, -189,200,227,241, 70, 2, 88, 71, 41, 61,220, 68, 51, 54,172, 93,187,246,163,164,164, 36,179, 71,143, 30, 97,249,242,229, 8, 13, - 13, 69,114,114,242,151,148, 82, 99,229,113,231,217,217,217,157,225,114,185,223, 17, 66,222, 37,132, 12,114,118,118,238,219,128, -238,200,165, 75,151,150,119,236,216,241,217,147, 39, 79, 70,222,186,117,171,211,146, 37, 75,100,233,233,233,120,246,236, 25,156, -156,156,224,230,230, 6,133, 66,129,146,146, 18,140, 28, 57, 82,108,105,105, 57,177,137,182,179,176,176,176,252,199,120,213, 23, -249, 43,241,106, 30,173,154,175,107, 93,117,104,102,102,182, 54, 58, 58,186,155,159,159, 31, 3,224, 24, 0,248,114, 17, 52,178, -123,135,253,167,190,221,228, 23,177,125,181,223, 64, 63,239,253,190, 92, 84,173, 98, 59,211,169, 83, 39,235,232,232,232,238, 66, -161,240,223,117,216, 81, 17,168,101,109, 13,177, 88, 12, 43, 43, 43, 88, 91, 91,195,104, 52, 66, 81, 86, 14,165, 1, 40, 45,215, - 64, 38,147,161,180,242,181, 66,173,133, 82,169,172,222,183, 22,250,204,154, 53,171, 96,215,174, 93,249, 57, 57, 57,155, 0,180, -159, 54,109,218,136,157, 59,119,226,202,149, 43,229,239,250,120,218,174,239,213,225,211,182, 57,201, 33, 62, 60,204, 6, 16, 21, - 21, 21,133,238,221,187,131, 16, 50,190, 54, 65, 83, 83,211,175,142, 30, 61,106, 26, 31, 31, 15, 79, 79,207,248,241,227,199,143, -221,180,105,147,135, 72, 81,124, 19, 0,244, 69,185,241, 11, 22, 44, 88,179,126,253,250,130,130,130, 2,109, 89, 89,153,195,240, -225,195,145,145,145,129,151, 47, 95,254, 90,235,192, 41,125, 22, 19, 19, 67,101, 50, 25, 82, 82, 82, 16, 19, 19, 99,186,102,205, -154,206, 6, 14,103, 68, 22, 44,166, 79,235,209,169,243,228,174, 29,112,248,246, 35,254,141,167,169, 86,157,154,187, 88, 63,204, -204,105,161, 35,104,208, 33,170,141,210,210,210, 29,159,126,250,169, 66,161, 80, 32, 43, 43, 11,143, 31, 63,198,147, 39, 79,144, -150,150,134,205,155, 55, 43,138,139,139,119, 54,164,225,108,194,124,184,101,201, 76,194, 36,252, 10, 60,186, 14,148,149, 2, 42, - 5,212,137,209, 56,144,152,139,221, 39,127, 20,164,103,100, 88,133,135,135,207,106,214,172, 89, 52, 33,196,187, 62, 61, 74, 43, - 62, 66, 14,231,183,151, 28, 33, 4, 28, 14,167, 20, 64,174, 72, 36,202,180,176,176,200,228,112, 56,185,148, 82,229,155,140,253, - 85, 56,122,104,193,229, 2, 2, 83,112,120,117,151,246, 36,132,140, 29, 63,126,252,209,204,204,204,129, 41, 41, 41,221,118,238, -220,249,169,137,137, 73,236,206,157, 59, 63, 77, 73, 73,233,150,153,153, 57,112,252,248,241, 71, 9, 33,141, 94, 13, 8, 0, 94, - 94, 94, 11, 66, 66, 66,176,121,243,102,248,251,251,195,219,219,187,108,237,218,181, 59, 0,172, 38,132,252,219,219,219,251,230, -130, 5, 11,102,228,231,231, 75,178,178,178,252,191,252,242,203,247,118,236,216,241, 86,118,118,182, 73, 3,210, 61, 7, 12, 24, -179,227,101,243, 0, 0, 32, 0, 73, 68, 65, 84,128,115,231,206, 1, 64, 14,165, 52,165,168,168, 72,159,157,157,141,214,173, 91, -163,115,231,206, 80, 40, 20, 80, 40, 20,144, 74,165,112,119,119,135,209,104,236,214, 20,219, 89, 88, 88, 88, 88,154, 70,109,137, - 75,107,117,180, 76, 76, 76,172, 3, 2, 2,208,178,101, 75,107, 84, 22,158,182, 21, 48, 31, 47,158, 53,193,204, 60,250, 60, 72, -204, 47, 24,223,171,157,153,173,128,249,184,114, 23,198,221,221, 93, 24, 16, 16, 0,145, 72,228, 82,199,241,175,229,230,230, 34, - 32, 32, 0, 86, 86, 86, 16,139,197, 8, 8, 8,128, 86,171,133,172,180, 20, 74, 3, 80,166, 51, 66, 38,147,161,184, 32, 15,101, - 6, 64,111, 97,139,180,180, 52,112,185,220,212, 58, 52,157, 60, 61, 61, 11, 98, 99, 99, 11, 0, 68, 1,120, 63, 52, 52, 20, 43, - 86,172, 64,112,112,240, 81,179,156, 23, 3,142,158,251,201,246,200,218,121,246,222, 2, 50, 1,128, 54, 51, 51, 19, 86, 86, 86, - 16,137, 68,181, 58, 6,129,129,129, 29, 69, 34, 17, 14, 30, 60, 72,179,178,178,122, 80, 74, 79, 80, 74, 83, 9,169,112,246, 76, - 57,144, 81, 74,119, 68, 71, 71,119, 89,179,102,205,211,126,253,250,241,186,118,237,138,117,235,214, 1,192,153,218, 52,165, 82, -233,157,169, 83,167,106,174, 94,189,138,196,196, 68,209,169, 83,167,130,214,173, 91,215, 46, 61, 61, 93,248,243,217,243,131,195, - 50,229, 65,155, 46,222, 48, 89,127,225,218, 29, 59, 75, 81,219, 22,118, 54,136, 73,127,201, 55,112,113,175,142,113, 87,211,149, -207,204,122,219,148, 23, 19,104,194,205,121,219,148, 23,221,153,207,204,148,203,229,225,167, 79,159,190,176,100,201, 18, 69,126, -126, 62, 44, 44, 44, 80, 84, 84,132, 13, 27, 54, 40, 98, 98, 98, 78,170,213,234,159, 27,210, 53, 24,105, 71,183,230,205,128,231, -177,213,239,105,141, 20,247, 52,124, 12,125,127, 17,124, 90,183,134, 70,163, 65,251,246,237, 73,104,104,168, 72, 44, 22, 47,107, - 72,243, 85, 39, 11,128,158, 16,146, 75, 41,125,169, 80, 40,178, 76, 77, 77,211,249,124,126,122,113,113,113, 22,165, 52,175, 33, -189,134, 32,132,112, 40, 7, 31,118,111,239, 5, 8, 77,145, 94,164,200,190, 87, 74,139,107,235,107, 97, 97, 49,115,247,238,221, - 38,251,246,237,211, 45, 88,176, 64,253,222,123,239,241, 84, 42,149,195,123,239,189,199, 91,176, 96,129,122,223,190,125,186,221, -187,119,155,152,155,155,143,126, 19, 91,116, 58, 29, 98, 99, 99, 55, 37, 37, 37,137, 40,165, 31, 0, 88,180,118,237,218,105, 73, - 73, 73, 38,187,118,237,194,137, 19, 39,112,226,196, 9,140, 24, 49, 2, 11, 23, 46, 68, 72, 72, 72,125,227, 50,243,243,243, 11, -176,181,181,197,245,235,215,179, 41,165,233,132,144,142,230,230,230, 22, 35, 70,140,192,192,129, 3, 81, 94, 94, 14,173, 86, 91, -237,104,113,185, 92, 88, 89, 89,217,190,137,237, 44, 44, 44, 44, 44, 13, 83,229,100,189,234,108, 49, 0, 80, 53, 85, 55,100,200, - 16, 82,115,227,171, 95,140,134,146,124, 72,149,101, 72,147,149, 33,163,196,248,155,109, 70,227,111, 95,191, 74,118,118,246,207, -183,111,223,158, 25, 16, 16,192,100,103, 87, 60, 17, 11, 8, 8, 64, 89, 89, 25,178, 31,221,133,210, 8,136, 60,125,161, 84, 42, - 81,242,228, 33,204,253,186,193,118,200,100,124,177,107,151,186,168,168,232,155,218, 52, 5, 2, 1,207,213,213,181, 32, 53, 53, - 85, 15,160, 88, 44, 22, 15,104,214,172, 25,174, 93,187, 6, 0,135, 41,176, 5, 49, 87,129,235, 17,160, 21, 83, 42,230,238,238, -238,200,207,207,135, 66,161,184, 86,155,230,237,219,183,147,116, 58, 93,251,225,195,135,147,239,191,255,254, 24, 33, 36, 24,192, -227,149, 18,112, 31,101,230, 65,105,128, 9, 33,164,191,181,181,245, 7, 33, 33, 33,125, 23, 44, 88,128,211,167, 79,227,226,197, -139, 90, 84,196,130,221,126, 85,147, 82, 42, 35,132,236, 89,186,116,105, 87, 14,135,243,254,165, 75,151,244,222,222,222,114,173, - 86,107,104,229,227,195, 9, 14,253,132, 63,255,253, 57, 86, 69,101, 72, 24,216,202,169, 59, 33, 64,194,203,252,244,164, 82, 90, - 84,223, 57,237, 45,100,206,140,239,229, 23, 56,115,252, 48,115,145,103, 91, 40,227,238, 74,246, 28, 63,251, 69, 31, 83,102,104, -158, 74, 63, 66, 44, 22, 7, 93,187,118,109,190, 70,163,105, 41, 20, 10,159, 75,165,210,237,165,165,165, 13, 58, 89, 12,195, 12, -241,117,115,181,150, 22, 23,195,164,114, 38, 74,174, 51,162, 80,173, 71,162,149, 55, 38,186,186, 85, 63, 6,205,205,205,133, 68, - 34, 33, 6,131, 97, 88,125,154, 23, 47, 94,196,208,161, 67, 1, 0, 82,169, 20,132, 16, 16, 66, 10,125,124,124,242,132, 66, 97, - 17,159,207,151,111,217,178,165,188,188,188, 28, 12,195,152, 24, 12, 6,110, 67,118,214, 71, 23, 17,113, 8, 52, 37, 95,189, 55, -252,237,126,254,109, 91,211,168,251,143, 72, 73, 89,249,129,186,250,151,150,150,126,233,229,229,197, 20, 23, 23,255, 12, 32, 81, -167,211, 29, 57,118,236,152,201,148, 41, 83,202,143, 31, 63, 62, 9,128,199,214,173, 91,131, 20, 10, 69,173,213,217,235, 34, 57, - 57,249,203,245,235,215,127,180,106,213, 42, 28, 58,116,104, 1,128, 21, 0,224,229,229, 53, 34, 36, 36, 4, 91,182,108,193,161, - 67,135,140,137,137,137,103,141, 70, 99,242,146, 37, 75,252, 28, 29, 29, 11,115,114,114,146, 67, 67, 67,235,146,237, 52,104,208, - 32,245,205,155, 55, 5,165,165,165, 55, 8, 33, 31,204,157, 59,119, 86,151, 46, 93,228,227,199,143, 55, 47, 46, 46,150,154,153, -153, 9,246,238,221,107,205, 48, 12,148, 74, 37, 8, 33, 40, 45, 45,213, 52,197,118, 22, 22, 22,150,255, 36,117,249, 34,127, 5, -104, 85,185,157, 90,168,126,150, 82,115,128,101,101,101,121, 25, 25, 25,173, 95,190,124,169, 7,160, 7,128, 34,141,254,179,245, -123, 35,246,141,238,234, 37,202,209,233,112,234,126,124, 89,145, 70,255, 89,229,238,250,151, 47, 95,150,166,167,167, 91,168, 84, - 42, 69, 29,199,250,245,171,175,190, 82, 93,189,122,213, 34, 37, 37, 5, 6,131, 1, 29, 59,118,196,179,103,207, 80,146, 24, 11, - 81,235,142, 16,245, 30,138,248,232,251,136,185,120, 25, 47, 20, 26,253,211,213,235,101, 10,165, 50, 68,163,209,156,170, 77,144, -199,227, 21, 87,140,143, 26, 0, 64, 46,151, 63, 86, 40, 20,189, 28, 29, 29,145,144,144, 32, 82, 26,176, 48,232,227, 47,118, 82, - 74, 13,252,138,149, 98,139,199,143, 31,143, 7, 15, 30, 0,192,131,218, 52,229,114,249,130,217,179,103, 95, 61,120,240, 32,147, -146,146, 50,112,223,190,125, 3,159, 62,125, 74, 73,113,134,225,102, 25, 15, 30,211, 22,190,245,181,187,207,197,161, 67,135,194, -201,201, 9,123,247,238,197,246,237,219,117,243,230,205, 75,218,190,125,251, 91, 0,142,212,241, 33,200, 0,156,183,179,179,155, -223,174, 93,187, 82,165, 82,137,162,162, 34,100,103,103,195,198,214,150,163, 7,167,187,189,149,213,145,159,115, 75, 69,204,249, - 59,184,155,149, 83,239,108, 86, 55, 62, 51,117, 66,159, 14,129,255, 94,245,177, 57,110,158, 2,153, 29, 2,186,239, 83, 44,250, - 87,144, 69,185,250, 72,239, 78, 12, 51, 69,166,215,135, 1, 56, 81,159,206,171, 16, 66, 6,245,234,213,235,232,250,245,235, 77, - 87,110, 94,143,173,173, 93,160, 47, 42, 66,129,218,128, 66,181, 30,242,146, 68, 36, 36,196,195,214,214, 14, 47, 94,188, 64,121, -121, 57,158, 60,121, 66,185, 92,110,189, 14,156, 78,167,171,121,140,170,199,133, 82,161, 80, 88,196,227,241,242, 24,134, 41, 78, - 73, 73, 81,150,151,151,131,195,225,136, 12, 6,131,105, 35,108,117,181,179,179, 91, 2, 96, 52,128,211,165,133,133, 59, 2,120, -176, 2,131, 62, 45, 29,108, 7,175,126,111,138, 93, 51,103, 7,105, 74,210,115,221, 55, 23,110, 21,150,171,241, 89, 93, 90,148, -210, 51,168, 49, 35, 73, 8, 89,116,252,248,241, 89, 0,246,211,138,186, 91,151, 1,124,221,144, 77,181,176,250,228,201,147, 31, -173, 90,181, 10,166,166,166,213,201, 83, 77, 77, 77, 77, 0,224,135, 31,126, 64, 66, 66, 66,151,170,120, 45, 0, 71, 27,161,233, -225,235,235,155, 18, 17, 17, 33, 0,224, 60,119,238,220,110, 59,119,238,196,191,254,245,175,130,248,248,248,174, 21, 51,176,196, -227,253,247,223,191,119,232,208, 33,107,163,209,136,146,146, 18,104, 52,154,186,102,134, 89, 88, 88, 88,254, 39,248,171, 58, 91, -132,144, 0, 74,105, 76,101, 98,239, 33, 0, 34, 41,165, 57, 64, 13, 71, 11,168, 24, 32, 0,148,151,151,127,233,238,238, 46, 6, -224, 6, 96, 40,128,211,143, 13, 56,129,167,105,136,125,145,245, 49, 80,225,120, 61, 54, 84,127,137,143,187,119,239,158,166,121, -243,230,143, 0,124, 90,155, 17,148, 82,185,157,157,221,186, 37, 75,150,108, 88,183,110, 29,195, 48, 12,174, 94,189,138,219, 23, - 34,141, 79,110,220, 37,105, 42,131, 74,126,127,233, 75,134, 26,238, 56,170,138,227, 30,150,225, 36,165, 52,171,190,129, 41,149, -202,140,228,228,100, 65,187,118,237, 12, 15, 31, 62,180,163,148,254,120,246,236,217, 94,203,151, 47,199,181,107,215,142, 92, 42, - 55, 76,164,212,120,140, 16,194, 0,152, 56,108,216,176, 15,130,130,130,224,239,239,175, 5, 80,107,196, 53,165,244, 38, 33,100, - 98,102,102,230,158,101,203,150, 89, 45, 91,182, 12, 28, 14,135,212, 60, 87,133,133,133,120,244,232, 17,198,143, 31, 47,187,117, -235,214,194,190,125,251,206,232,217,179, 39,206,157, 59,231,220,136, 15,227,215, 39, 79,158,140, 18,139,197, 36, 57, 57, 25,114, -185, 28, 55,111,222,228,185,187,187,119, 63,118,236,152,176,101,203,150,136,143,139,195,217,137, 19,135, 16, 66,220, 41,165,233, -181,233,152,242,200,252,105, 99,135,153,171,111,254, 12,196, 68, 1, 0, 20,242, 82,168, 94,196, 34,168,179,151,229,181, 39,105, -115, 81,177, 10,179, 73,216,216,216, 44,218,186,117,171,200,219,219, 27, 31,174,223,140, 37,171,150,227,125, 7,119,200, 95,102, -160,208, 0, 8,204,204,176,110,245, 42, 12, 27, 59, 30, 14, 14, 14,136,139,139,163,123,247,238, 85,202,100,178, 45,245,233, 86, - 57, 90, 92, 46, 23,132, 16, 0, 80,202,100, 50,133, 64, 32,144, 49, 12, 83,100, 48, 24,242,206,236,218,209,145, 83,148, 55,157, - 16,194, 53, 53,114,206, 84, 46,182,168, 53, 62,207,138, 16,119, 79, 15,143,184,239,246,238, 21,117,233,210,133,220,191,127,127, -254,220, 57,179,103,141,246,109,113,118,100,191, 64, 72,156, 36,106,163, 86, 35, 61,123,250,140,238,235,227,103,175,107,136,113, - 89, 52,165,170,198,158, 7, 74,233, 81,212,112,122, 8, 33, 19, 0,140, 5, 16, 65, 41, 61, 76, 8,153, 6, 96, 36,128,147,117, - 5,200, 19, 66, 56, 0,190, 29, 51,166,162,152,128, 74,165, 42,171,122,223,207,207,175,230,177,234,159, 14,126, 5, 51, 51, 51, - 11, 19, 19,147,231,231,206,157, 51, 29, 63,126,188,245,134, 13, 27, 94,254,235, 95,255,114, 57,114,228,200,151, 0, 94, 16, 66, -124, 0,120, 42,149, 74, 3,135,195,129,143,143, 15,118,239,222,173, 48, 24, 12,251,155,114, 28, 22, 22, 22,150,255, 6,127, 53, - 39,171,146, 0, 0, 49, 0,134, 84, 46, 32,156, 3,160,254,162,210, 0,214,199,198,198, 86,229,208,154, 91, 79,191, 57, 43, 86, -172,136,126,240,224, 65, 52,128,141, 13, 45,115,100, 24,230,199,121,243,230, 81, 71, 71, 71,133,131,131,195,143, 60, 46,119,150, -155, 41, 2,240, 6, 75,221, 1,244, 10, 11, 11, 27,241,229,151, 95, 14, 1,208, 5, 0,207,197,197, 37, 59, 55, 55, 87,113,235, -214, 45, 69,143, 30, 61, 20,118,118,118,249,190,190,190,138,173, 91,183, 42,116, 58,157, 98,201,146, 37, 10,188,146,239,171, 14, -109, 19, 0,243, 5, 2,193,143,109,218,180,137, 93, 61,252, 29,221,230,133,179,232, 52, 47,123, 5,128, 47, 1,204, 3, 96, 5, -128, 23, 20, 20,244,203,147, 39, 79, 46,248,250,250,238,105,132,174,115,187,118,237,174, 28, 61,122,244, 65, 68, 68, 68,244,178, -101,203, 30,216,218,218,102, 37, 37, 37, 25,203,203,203,105, 73, 73, 9,149, 74,165, 52, 50, 50,210, 96, 99, 99,179,171, 46,157, - 94, 66,110, 14,189,120,184,214, 20, 14,153,171, 38,211, 30, 2,206,203, 55, 89,134, 42, 18,137,138,139,138,138,104,110,110, 46, - 77, 73, 73,161, 39, 79,158,164,131,186,119,166,225,239,143,166,135,103,142,160, 91, 6,117,166, 93, 44, 76,148, 18, 11,243, 7, - 22, 22, 22,249, 86, 86, 86,223, 2,240,170, 79, 83, 34,145, 92, 82,171,213,213,233, 27, 92, 93, 93,163,125,124,124, 34,124,125, -125,191, 56,125,250,244,162,109,219,182,141,120,187,133,251, 71, 27, 6,118, 87,149, 93, 62, 78, 75,143,125, 73, 87,116,244, 46, -247,229, 98,108, 93,154, 46,182, 54, 97,215,175, 93, 51,210, 74,244,122, 61, 61,245,227,143,116,220,224,254,177,178,243, 63,124, -119, 35,100,193,209, 37, 29,189, 79,245, 48,193, 4,188,146,168,180,182, 22, 96, 14,219, 64, 75,206,238,119,155,217,228,244, 18, -115,190,236,106, 1,235, 26,159,217, 56,111,111,239, 20, 74,105, 78,235,214,173, 83, 0, 28,110,221,186,117,205,215,211,235,248, -172,171,147,147,174, 93,187,150,162,162,138, 2, 7, 64,240,250,245,235,163, 41,165,209, 94, 94, 94, 55, 41,165,240, 23,193,174, -183,152,243,221,112, 15,199,162,222, 98,206,119,254,162,215,179,185, 83, 74,225,206, 71,171, 94,246,102, 55, 70,120, 57,149,246, -113, 17, 71, 29, 62,176,111,243,187,239,190,187, 23,192, 46, 0,159,218,218,218,222,152, 48, 97, 66,194,161, 67,135, 18,182,110, -221,170, 77, 74, 74,162, 51,102,204, 80, 10,133,194, 79,223,228,122, 96, 27,219,216,198, 54,182, 53,220,240,255,153,225,157, 42, - 95, 55, 42, 97,233,176,143, 62,250, 40,154, 82, 90,149, 75,107, 74, 45,125,134,175, 90,181, 42,154, 82, 90,149, 29,254,213,100, -162,181,101,113, 95,187,123,247,110, 42, 20, 10,191,123,195,193,212, 76,224, 41, 25, 57,114,100, 87,185, 92,254,150,163,163,227, - 91,168,152,117,114,179,179,179, 75, 57,114,228,136, 66,165, 82, 41, 40,165, 10,189, 94,175,120,240,224,129,162, 79,159, 62, 10, - 84,164,128,104, 84,134,240,154,109,165, 4, 55,239,175,158, 73, 87, 74,112,243,149,125, 39,239,223,191,255, 92,106,106,234,207, -150,150,150,203, 27,163, 9,192,205,222,222, 62,216,198,198,230,130,157,157,221, 74, 27, 27,155, 28,173, 86, 75, 75, 74, 74,232, -179,103,207,232,181,107,215,232,237,219,183,169,141,141, 77, 86, 93,118,246, 53,101,238,148,108,158, 79,141,251,215, 83,205,206, -143, 41, 0, 42,221,182,130, 22,126, 21, 74,239,207, 30, 72,251,152,112,127,109,234,249,164,148,194,202,202,234,219, 31,127,252, -209,152,156,156, 76,207,156, 57, 67, 35, 35, 35,233,194,133, 11,105, 43,103, 39,117, 87, 1, 39,175,151,144,185,240, 38, 9, 75, -213,106,117,180, 92, 46,143, 86, 40, 20,209,109,218,180,137,238,220,185,115, 68,215,174, 93,191, 56,126,252,248,162, 13, 27, 54, -140,232,107, 33,124, 86,118,249, 56,165,203, 6, 83, 58,191, 39,125, 62,171, 15,125,199,148,121, 84,167,166,163, 99, 86, 85,182, -118,165, 82, 73,163,162,162,232,149, 43, 87,168,196,206, 78, 30,104,202,157,211, 67,136,222, 61, 44, 97,213, 88, 59,223, 22,115, - 14,220,249,234, 51,131,234,220, 33,250,195,180,193,250, 62, 86,156,221, 53,250,133, 83, 74,115,198,140, 25,243,130, 82,154,115, -242,228,201, 76, 74,105,206,232,209,163, 95,208,138,169,225,163,181,105,190,146,156,116,127,165,147, 53,127,237,218,181,209,148, -210,232,181,107,215, 70, 3, 21, 73, 84,123,139, 57, 7,239,238,217, 98, 84, 71, 30,164,199,103, 12, 49,244, 22,115, 14,214,106, -167, 21,243,115,204,254,109, 84,115,225, 48,253,113,225, 36, 67, 79,137,229,117,111,111,239, 45,139, 22, 45,138,184,125,251,246, - 99,131,193,144,144,146,146,146,176,107,215,174,132,110,221,186,221,180,181,181,141, 21, 8, 4,243, 26,250,140,254,136,198,106, -178,154,172, 38,171,201,182,215, 91,157,235,221, 41,165, 63, 19, 66, 68,148,210, 37, 65, 65, 65,216,184,113,227,184,246,237,219, - 79,112,113,113,177, 7,128,236,236,236, 50, 0,242,160,160, 32, 4, 7, 7, 99,243,230,205, 95,208,138, 88,150,255, 24,148,210, - 92, 66,136,235,130, 5, 11,242, 55,108,216, 96,156, 49, 99, 70,107, 74,105, 28, 33,164,213,164, 73,147,230, 51, 12, 19,228,238, -238,238,155,147,147, 83,160, 82,169, 14, 3,216, 67, 43,159,153, 54, 21, 33, 7,134, 78,205,157,112,129, 3, 67,213,123,132,144, -193,193,193,193,227, 71,143, 30,173,221,182,109,155, 94, 46,151,159,110,164,221,153, 0, 62,169,122,109,107,107, 43,121,244,232, -209, 60, 7, 7, 7, 78, 74, 74, 10,212,106, 53,146,147,147,141, 0,126,170, 75, 67,161,167, 59,190, 62,121,201,103,201,228,161, -150,101,137, 15,193,231,114,161,227, 9,144,123,231, 2,246, 71, 37,202,149, 90, 52,152,194,161, 54,164, 82,233,231, 11, 23, 46, -156,180,124,249,114, 19,119,119,119,242,235,175,191,226,216,177, 99,234,252,252,252, 65,148,210,235,111,162, 9, 84, 44,150, 16, - 8, 4, 0,128, 21, 43, 86,128,195,225,240,242,243,243, 5,132, 16, 33, 33,196,140, 16,194,213,165, 38,192, 40, 47, 65, 94,137, - 20,153,121,210,122,245, 12, 70,227,177,187,119,239, 46,238,208,161, 3,231,254,253,251, 40, 40, 40, 64,114,114, 50, 53, 80,122, -244,122,153,190, 73, 1,235, 0, 96,102, 99, 59,210,223, 90,200, 17, 28, 8, 70,160,134,195,253,198,136, 49, 0,230, 87,110,222, - 79, 8,225, 3, 40,106,211,166,205,219, 79,158, 60, 49,109,211,166,141, 42, 49, 49,241, 28, 33,196, 5,192,193,218, 52, 77, 77, - 77, 11, 1, 20,158, 60,121, 18, 0,102, 83, 74,141,132,144,142, 33, 33, 33, 57, 81, 81, 81, 88,187,118,109, 30,128,221, 0, 96, -110,109, 59,220, 87,204, 39,130,239,215,162,155, 26,156,157, 70, 90,235,226, 2,115, 7,199,119,218,137, 56,224,237, 91,131,183, - 36, 62, 28,129, 94,219, 62, 52, 52, 52, 74,161, 80,168,195,195,195, 53,211,167, 79,231, 38, 37, 37,221, 3,112, 3, 21,143, 53, -245, 77, 61, 23, 44, 44, 44, 44, 44, 77,163,150,180, 14,181,199,104,189, 10,165,244, 7, 66, 72,225,230,205,155,223, 1, 96,121, -252,248,241, 78,173, 90,181, 2, 0, 60,123,246,204,204,199,199,231,169,159,159,223, 19, 0,119, 40,165, 13,174,102,171,164,234, - 15,127,147,226, 82,234, 33,126,249,242,229,228,208,161, 67,122,160,194, 9,170,252,114,217, 1, 96, 71,125,113, 62,191, 23,111, -111,239,254,107,214,172,209,236,219,183,207,240,233,167,159,158,166,148, 38,189,137, 78,113,113,241,214, 41, 83,166, 76, 10, 9, - 9, 17, 91, 88, 88,144,216,216, 88,227,254,253,251,229,197,197,197, 91,235,218,231,174, 70, 31,222, 91,200,140,150, 42,143,247, - 31, 23,208,220,226,201,130, 33,120,118,247, 6, 14, 95, 79, 40, 77, 42, 86, 93,188,175,215, 31,123, 19, 91, 40,165,201,132, 16, -255,224,224,224, 21, 90,173,118, 52,143,199,187, 39,151,203, 67, 41,165,181,230, 8,107, 12, 58,157, 46,175,101,203,150,175, 30, - 71,103, 52, 26, 41,165,148,167,215,235, 69, 54, 90, 99,100,200,246,125,239, 79,247, 17, 11, 11, 11,165,248, 62, 73,174,174,177, -216,226, 53, 10, 10, 10,190,152, 53,107,214,191, 66, 66, 66,172, 45, 45, 45, 73,124,124, 60, 13, 15, 15, 87, 20, 20, 21,109,124, - 19, 27,203, 74,138, 47,158, 57,113, 60,168,167, 70, 79,194, 94,148, 82,134, 75,206,213,176,245, 18,128, 75, 0, 64, 8,153, 76, - 8, 25, 3,224, 20,165,244,251,122, 53,203,202, 46, 2, 16,140, 25, 51, 6,177,177,177,227, 0,252, 0,224,232, 39,159,124,210, - 53, 56, 56, 24,161,161,161, 8, 9, 9,233, 15,224, 66,105, 73, 81,100,196,209,195, 19,251,232,116,156,176,180, 82, 35,151, 67, -206,214,170, 89,152,119,233,220,165,203,195,223,178,116, 38,223, 94,184, 97, 44, 51,210,135,211,166, 77, 43,209,104, 52, 23, 0, -236, 4, 16, 75, 41,101, 87, 23,178,176,176,176,252, 7,161,175,172, 58,172, 25,163, 85,175,163, 85,185,243,101, 0,151, 9, 33, -146, 30, 61,122,172, 23,139,197, 34,131,193,128,226,226,226,151, 0,182, 87,206,206, 52,133,112,153, 76,182, 76, 40, 20,214,154, -178,161,169, 80, 74,203, 9, 33, 14,109,218,180,225, 1, 80,215,178,253,143,113,178, 40, 78, 38, 39, 37, 91,130,226,100,213, 91, - 73, 73, 73, 71,125,125,125, 71, 36, 38, 38,222,162,148,214,250,197,216, 40,233,138, 60, 72, 29, 22, 46, 92,248, 33,128, 17, 0, -126, 42, 46, 46,222, 74,235, 8,132,175,226,186, 90, 31,244, 22,195, 76,122,152,150, 59, 79, 99,164, 45, 4, 28, 78,170, 82, 75, -191,186,167,215,255,240,166,182, 84,218,147, 12, 96, 70,101,251,221, 20, 22, 22, 54,152,228,147, 16, 66,174, 63,207,190,147,144, -153, 95,219, 98,139,218,108,204, 33,132,248, 47, 89,178,100,137,209,104, 28,203,225,112,126, 44, 44, 44,108,240,156,213,133, 84, - 99, 88,252,205,213,251,252,237, 6, 99, 63, 33,135,115, 65,161, 51,124, 92, 91, 63, 90, 17,248,222,168,236,240,207,159, 63,255, - 46, 52, 52,180, 93, 72, 72, 8,190,254,250,235,170,101,151,151, 67, 66, 66,242, 13, 6,131, 91,104,104, 40,246,236,217,163, 7, - 0,181,206,184,116, 95,212, 67,206, 55, 70,227, 96, 30,135,115, 78,173, 51, 46,173, 77,179,184, 92, 63,127,103,196,121,173,214, -104,236,207, 5, 57,151,163, 49,174, 86,171,105,218,155,140,153,133,133,133,133,229,207,167, 65, 71,171, 10, 74,105, 46,254,128, - 47, 94, 74,105, 10, 0,203,149, 43, 87,254, 94,169,154,154,249,127,152, 88, 29,172,201,166, 95, 2,248,114,205,166,240,154,199, -189, 7, 52,156, 84,180, 49, 84, 58, 8,255,174,108,141,230,190, 94,127, 4,117,164,148,248, 43, 81,233, 16, 31,175,108,141,221, - 39, 11, 21,181, 44, 23,255,222,227, 63, 44,163, 57,168, 88, 69,248,135, 65, 41,141, 65,197, 42, 20,188,124,249,178,234, 61, 10, -224,113,101, 67, 85, 78,185,187, 74,154, 15, 96, 82, 35,237, 28,247, 71,218,201,194,194,194,194,242,251,168,237,209, 97,213, 47, -141,118,180, 88, 88, 88, 88, 88, 88, 88, 88, 88, 94,231,213, 71,135, 53, 33, 0,250,213,177, 83,163, 3,219, 9, 33,181,106, 52, - 96, 84,189,250,172, 38,171,201,106,178,154,172, 38,171,201,106,254,253, 52, 27,210,254, 79, 47,172,251,211,249, 51,151, 52,226, - 47,178,164,148,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,174,230,223,181,213, 90, 84,154,133,133,133,133,133,133,133, -133,165,113, 16, 66, 2, 42,127, 58, 17, 66,230, 84,150,226, 1, 80, 71,140, 22,175,203,250, 60,189, 94,239, 0, 0, 12,195,228, -235,238,173,118,170,173, 95,117,127,160,175, 30,248,174, 82,112,182,174, 98, 57,252,171,154,151,244,122,189,117,165,102,137,238, -222,234,129,245,106,118, 94,119,225, 55,253,239,174,234, 95,203,200,184,188,206,235,178, 95,177,181,193, 50, 56,213, 84,214, 72, -252,179,237,252,171,104,254,147,225,119, 93,159,167,211, 85, 92, 71, 60, 30,147,175,189, 91,255,117,196,239,178, 46,251, 55,253, -239,172,114,172, 79,211,204, 84, 88,228,233, 98,255, 69,125,154, 41,217,133, 75,148,101,229,182,245,105, 54,245,222,116,115,114, -234,107,168,188, 55,185,192,236,204,236,236,255,204,189,217, 72, 8, 33,157, 0,172, 6, 96, 89,227,237, 88, 74,233, 7,111,170, -201,194,194,194,242, 95,160,206, 18, 60,181, 58, 90,122,189,222, 33,250,199, 16, 40,213, 64,223,169,235, 28, 60, 70,238,121,109, - 85,155,190,188, 68, 32,141, 15,247,229,234,228,214,246,140,214, 50, 59, 59,155, 0, 0, 33,228, 59, 0,205,106,209,180,142,254, - 49, 4,101, 26, 32,112, 66,168,117, 51,192,178,128,207,255,208, 84, 36,122, 91,165, 82,181, 3, 0, 83, 83,211,120,149, 82,121, -213, 94,171,221,250,106,255,186, 70, 86,211,214,119,166,172,115,104, 61,114,207, 66,131,209, 40,120,121,255,155,192,242,194, 36, -134,167, 87,239, 94, 9,156, 11, 1, 94,115,170,234,208,251,255,227,142,253,216,150, 7,188, 35, 48, 49,241,183,178,182,238,101, -164,180,141,209,104, 36, 6,189, 62, 65, 46,147,221, 48,234,245,143,244, 26,165,109,244,233,207,140,245,217,249,234, 88,198, 2, -204,143, 64,144,200,220,252,109, 46,143,215, 29, 0, 12, 58,221,175, 74,133,226,234, 40,224, 68, 99,198,222,216,243,243,166,253, -255,105,232,116,122,135,212, 11, 33, 80,235,128,128, 49,159, 57,248, 77,250,254, 8, 0,104,242, 31, 57, 42,146, 78,119, 1, 0, -145,231,208,187, 66, 73, 64, 30, 0, 48,233, 57, 14,207,206,172,130, 90, 7,180, 25, 26,234,208,144,230,244,224, 99,182,203,231, -140, 22, 2,192,197,147, 95,182,186, 18,241,245, 96, 0,120,103,244,220,115, 3,198, 44,120, 6, 0,155,191,141,176, 61,250,217, -184,122, 53, 27,119,111,202,248,178,164, 51, 94, 26,121,142,149,155,136,145, 36, 37, 37,113, 0,192,217,217,185, 81,247,166, 43, - 32,206, 1,230,115,184,220, 94,158, 94, 94, 1, 0,104,202,243,231, 49, 6,189,254,166, 19,176,251, 15,190,150, 22, 82,250,219, -228,172,149,181, 48, 89, 88, 88, 88,254, 74, 68, 86, 58, 87,145,175,110,168,115,213,161, 82, 13, 92, 79, 6,122,119,245,195,156, - 73,239,154,215,220,118, 98, 79,104,179,164,251, 63,181,222,247,253, 86,142,159,159, 31, 82, 83, 83, 27,101, 69,153, 6,184,150, - 4, 64,250,196,162, 68, 36,122,190,109,203, 22,203,254,253,251, 51,206,206,206, 32,132, 32, 55, 55,183,235,229,203,151, 59, 45, - 94,188,248,125, 72,159,148,148,105, 80,122,173, 17, 41, 64,171,108,109,215,170, 57, 86, 47, 24, 39, 6,128,149, 83,119,119,186, -255, 52,207,230,249,243,231,125, 63,250,232,163, 34,238,213,171, 95,219, 1, 7,242,128, 6,243,126,149,105,128, 67, 63,223, 53, - 17,231,252,224, 49,121,193,130,147, 94, 94, 94,230,238,238,238,196,194,194, 2, 92, 46, 23, 37, 37, 37,205,226,226,226, 6,223, -187,119, 79,121,249,250,119,130, 7,247,134,167,228,155,116, 41,111,212,216, 85,217, 38, 23, 45, 44,226,167,140, 26,229, 58,110, -220, 56, 19, 79, 79, 79, 0,192,243,231,207,189, 79,156, 56, 49,225,228,201,147,193, 80,101,235,203, 52, 40,111,104,236,213,154, - 0, 76,128,238, 86, 14, 14,147,185, 60, 94, 59,189, 94,239, 2, 0, 12,195,188, 52,232,116,241,210,252,252,195,175,246,103,121, - 29,181, 14,120,146, 3,244,235, 21,128, 41,163,251,137, 0,224,163,241,235,187,166,191, 72,230,107, 52, 26,180,242,105,211,227, -211,207,190,184, 0, 14, 7, 97, 17,151,171,251, 55, 70, 51,246, 73, 42, 66, 62,221,134,236,199, 39,186, 26,100,201,111,151,202, -101, 92, 0,176, 20,139, 71,159, 8,255,225,170,179,111,208,157,228, 66,109,163, 52,235,187, 55,207,135,239,114,202,138,187,218, -246,171,139,251,121,205,154, 53,195,227,199,143, 27, 53,246,234,107, 67,246,212,194,232,228,148,176,117,217, 50, 73, 96, 96, 32, -204,205,205,193, 48, 12,244,122,125,191,155, 55,111,246, 11, 9, 9,153, 11,217, 83,101, 99,239,205, 70,176,149, 16,242,246,244, - 57, 11,157,222, 29, 17,132,209,131,122,252, 33,162, 44, 44, 44, 44,255, 41, 8, 33,115,104,197,170,195,234,149,135,180,198, 42, -196, 90, 29, 45,134, 97,242,251, 79,219,224,208,171, 75,123,220,127,244, 76,150,150,145,163,168,218, 86, 28,127,162,213,136, 30, - 46,109,163,162,174, 67,173, 86,227,215, 95,127,197,163, 71,143,240,226,197, 11,188,247,222,123,106, 6,152, 93,135,102, 73,224, -132, 80,107,200,146,204,189, 5, 79, 91, 92, 78, 76,228,150,151,151, 35, 42, 42, 10, 37, 37, 37, 16, 8, 4,112,117,117,197,128, - 1, 3,152,196,196, 68,155,190,253, 7,137, 3, 7, 77, 76,133,216, 91,193, 48, 76, 73, 93, 3,100, 24, 38,191,239,212,117, 14, -109,189,155,227,121, 90,182,108,245,103,251, 20, 70, 35,101, 82, 94,164,107,175, 95,191,142,128,128, 0, 92,186,116,201,182,184, -184,120,205,238,221,187, 87,243, 54,125,181, 67,167, 41,170, 53, 25,100, 77, 59,109,243,143,187, 95, 57,127,138, 31, 31, 31,207, -255,230,155,111, 80, 84, 84, 4,129, 64, 0, 43, 43, 43, 72, 36, 18,180,106,213,138,172, 92,185,210,124,232,208,120,252,123,118, -144,187,214, 99,214,211,186,236,172, 30,187, 34,221,204, 78,126,209, 51, 34, 50,146,211,179,103,207,223,252,219,222,178,101, 75, - 12, 28, 56,208,100,242,228,201,158,227, 38, 76, 50, 6, 14,153,254, 28,230,238,101, 13,106, 42, 51, 77,109,203,110, 59,247,155, - 48,225,116,104,104,168,149, 68, 34,129, 72, 36, 2, 0,200,100, 50,215,180,180,180,174,193,193,193, 99,238,198,134, 51,129, 67, - 51,179, 33,114, 83,213,119, 62,255,169,240,120, 76,126,213, 44,146,133,200,180, 36, 51, 43, 79, 9, 0, 26,141, 6, 26,141, 6, -106,181, 26,243,230,190,199,157, 61,166,179,151,123,175,133, 15, 95,188,204, 43,110,115,249,142, 77,213,190, 13,105, 50,101, 47, -164,210,140, 95,102,135, 44, 91, 38,113,116,252,255, 39,130, 97,135, 14,113,139,139,139,251,133,132,132,180,165,102,125,164,109, -134,134, 90,213,167, 89,223,189, 41,125, 22,217,226,211, 5, 3,253,247,124,118, 6, 6,131, 1,183,111,223, 70, 84, 84, 20,190, -248,226, 11,122,238,220, 57,153,165, 72,212,192,189,249,212,162,167, 83,174,199,166, 77, 39,137, 80, 40,196, 79, 63,253,132,196, -196, 68,112, 56, 28,248,249,249, 97,202,148, 41,232,215,175,159,100,206,156,247,104,224,160,241, 41, 16,251,148,254,158,107,137, - 16,194, 1,176,240,227,144, 77, 78, 83,103,205,199,230, 79, 87,178,142, 22, 11, 11,203, 95,145,200, 26,206,214,235, 80, 74,113, -230,204, 25, 90,217,122, 83, 74, 65, 1, 78,203,145,123,142, 30,127, 96,140,108, 57,114,207, 81, 10,112, 40,192,177, 4,154,119, -232,208, 65, 39,149, 74,233,189,123,247,232,188,121,243,148, 59,118,236,184, 26, 25, 25,121, 66,175,213,238,117,118,114,250,156, - 2,156, 90, 35,239, 1,142, 59, 32, 54, 51, 51, 43,200,200,200,160,103,207,158,165,107,215,174,165,135, 15, 31,166,231,206,157, -163,151, 47, 95,166,231,206,157,163, 71,143, 30,165,177,177,177,244,217,179,103, 84, 36, 18, 21,184, 3,226,122, 52,185, 20,224, -182, 26,249,205,210,147,247,117,161, 62, 35,247, 44,166, 0,215, 26,104,221,161, 67, 7,195,137, 19, 39,104, 88, 88, 24,253,254, -251,239,105,108,108, 44, 45, 44, 44,164,140, 80, 84, 80,181, 95, 93,118, 82,128,227,226,226, 82, 32,149, 74,169,155,155, 27, 21, - 8, 4,212,209,209,145,182,106,213,138,118,237,218,149, 14, 30, 60,152, 78,154, 52,137,174, 89,179,134, 74,165, 82,106, 98, 98, -146, 87,181, 95, 93,154, 1,128,169, 72, 36,202,136,142,142,166,117,161, 82,169,104, 97, 97, 33,189,112,225, 2, 21,137, 68, 25, - 1,128,105,125,154,166, 64, 71, 95, 95,223,130,194,194, 66,170,213,106,105, 70, 70, 6,141,139,139,163,137,137,137, 52, 35, 35, -131,170, 84,170,106,237,103,207,158, 81, 15, 15,143, 2, 83,160, 99,157,154,255,228, 86,117, 77,188,210,154, 57, 58, 14,150, 72, - 36,170,147, 39, 79,210,151, 47, 95,210,131, 7, 15, 82, 14,176,254,181,190,245,104, 10,128, 1, 61,123,246, 52,220,190,125,155, - 62,124,248,144,174, 88,177,130, 14, 28, 56,144, 14, 26, 52,136,134,132,132,208,172,172, 44,154,149,149, 69, 7, 15, 30,108, 16, - 0, 3, 26,186, 62,107,187, 55,197, 64,179,161, 67,135,170,180, 90, 45, 77, 73, 73,161,237,218,181,203,226, 2,147, 69, 64,219, -222,128,176,161,235,211, 5,176,118,114,114,202,185,125,251, 54,141,136,136,160,238,238,238, 5, 92, 96,186, 37,208,210, 18,104, -201, 5,166,183,108,217,178,224,246,237,219,180,168,168,136, 54,107,214, 44,199, 5,176,126,211,107, 9, 21, 5,182,247,127, 28, -178,137, 62,205, 82,210,143, 67, 54, 81, 0, 25,180, 98,227,165,255,250,245,192, 54,182,177,237, 63,222, 94,243, 69,254, 38,173, -122,213,225,144, 33, 67, 8,128,107,245,185,108, 42, 46,119,195,230,205,155,153,242,242,114,236,219,183,175,116,236,152, 49,199, -123,247,234,149,210,194,221, 93, 74, 56,156, 6,107, 23, 22, 8,133,139, 54,111,222,108,165,209,104,240,224,193, 3,116,234,212, - 9, 18,137, 4,230,230,230, 48, 55, 55,135,131,131, 3,124,124,124,144,159,159, 15, 11, 11, 11, 44, 95,190, 92, 92, 32, 20, 46, -106, 72,215,104,164, 12, 0, 24,140, 70, 1, 31,152,227,241,214, 91, 15,130,131,131, 57,182,182,182,176,177,177,129,185,185, 57, - 18, 19, 19,161,209,104, 96,102,106,214,168, 36,173, 28, 14,135, 99,110,110,142, 43, 87,174, 96,225,194,133,232,222,189, 59,172, -172,172, 96, 97, 97,129,118,237,218, 97,192,128, 1,152, 61,123, 54, 82, 82, 82, 64, 26, 17, 84,146,192, 48,243,103,207,158,237, - 16, 16, 16, 80,235,246,242,242,114, 72,165, 82, 20, 20, 20,192,213,213, 21, 65, 65, 65, 14, 9, 12, 51,191,214,206, 0,108, 1, -137,171,183,247,233,123,247,238,217,137, 68, 34,132,133,133,225,212,169, 83, 56,127,254, 60,206,158, 61,139, 51,103,206,224,167, -159,126, 66, 65, 65, 1, 0,192,219,219, 27,199,142, 29,179, 51,119,112, 56, 99, 11, 72, 26,115, 14, 88,128,244,188,188,139,237, -114,115,237, 38, 79,154,116, 67,161, 80, 96,242,228,201,216,176,113,227, 74, 94, 35,179,209,251, 0, 98, 27, 39,167, 3,155, 54, -109,226,228,230,230, 98,212,168, 81,133, 91, 55,110,156, 25,115,225,130,103,244,249,243,158, 27, 66, 67,103,246,238,221,187, 48, - 43, 43, 11,135, 14, 29,226, 56, 54,107,118,192, 7, 16, 55,213,206, 82, 96,225,246,237,219, 77,202,203,203,209,191,127,255, 20, - 99,124,188,143, 30,248, 65, 1, 36, 94, 3,180, 13,237,159, 3,204, 95,190,124,185, 68, 40, 20,226,195, 15, 63, 44, 44, 75, 79, -111,175, 7,190,151, 1,105, 50, 32, 77, 15,124, 95,154,154,218,126,234,212,169,133, 66,161, 16,219,182,109,147,228,252,127,209, -237, 70, 65, 8,233, 68, 8, 57, 77, 8,185, 14, 32,123,250,156,133,211, 3, 58,119,195,161,189,187,241, 89,232, 71, 7, 0,140, - 37,132, 28, 6, 80,231,140, 51, 11, 11,203,223,155,198,248, 34,255,139,212,146, 25,190,154,106,167, 35, 50, 50,146, 2,232, 83, -159,144,181,173,109,167,246,237,219, 35, 42, 42, 10,190,190,190,247,172,172,172,244,124,161, 16, 60, 30, 15,212,216,112,141,104, - 83,145,168,111,191,126,253,152, 59,119,238,192,195,195, 3,166,166,166,224,241,120,191,105,124, 62, 31, 78, 78, 78,144,203,229, -232,219,183, 47,111,231,206,157,125,161, 86,127,218,144,118,122, 82,156,121,193,157, 77,147,190, 59,120,160,101, 96, 96, 32,100, - 50, 57,140, 70, 35,204,204,204,160,209,104,192, 48, 76,197, 35, 32, 29,149, 55,104, 40, 0,131,193, 96,224,114,185,240,240,240, -192,134, 13, 27, 80, 94, 94, 14, 62,159, 15, 0,144,203,229,144, 74,165,136,139,139, 67, 90, 90, 26, 40,165, 13,214, 83,180, 16, -139,223, 29, 55,110,156,160,182,109,106,181, 26, 50,153, 12, 50,153, 12, 82,169, 20,229,229,229,232,214,173,155, 32,242,204,153, -119, 81, 84, 84,107, 97,105,181,137,201,152, 67,135, 14, 57, 8, 4, 2,168, 84, 42,148,150,150, 34, 51, 51, 19,233,233,233,229, -249,249,249,122, 11, 11, 11,142,187,187, 59, 71, 40, 20, 10, 71,142, 28, 73,228,114, 57, 8, 33, 24, 58,116,168,237,145,176,176, -113, 0,234, 93, 1,199,242,255, 92, 4,212, 29, 53,154, 97, 93, 58,119,190,114,239,254,253,128, 69,139, 22, 33, 54, 54,118,147, - 89,120,248,245, 50,224, 81,125,251,166, 0,243, 63,175,225,192,208,244,116, 95, 45, 80, 80,163, 75,154,123,106,234,249,169, 83, -167, 62,142,141,141,181,219,182,109,155,100,236,168, 81,243, 1,172,111,138,141, 22, 98,241, 91, 78, 78, 78, 56,119,238, 28, 50, - 94,188,248, 72, 15,168,154,178, 63,135,203,237, 25, 24, 24,136,159,126,250, 9, 89,233,233, 31,233,127,107, 35, 0,160, 0, 40, - 96, 82, 82, 62, 58,112,224,192,254, 25, 51,102,128,203, 48, 61,161,215,215, 38, 87, 23,175, 5,190,207,120,111, 17, 14,124,187, -243, 0,128, 89,148, 82, 35,254,160,146, 86, 44, 44, 44,127, 77, 26,227,139,252,175,242,170,179, 69, 43, 31, 37, 54,105, 70,203, -193,193,193,197,220,220, 28,217,217,217,104,211,186,117,190, 80, 40,132,128,199,131,137,160, 86,255,225, 53,202,202,202,124,157, -157,157, 33,147,201, 96,103,103, 7, 62,159, 95,221, 4, 2, 65,245,239, 22, 22, 22,224,112, 56,104,214,172, 25,202,202,202,124, - 27,212,205,139,115, 8,223, 57,119,222,237,235,115,109,188,172, 0, 0, 32, 0, 73, 68, 65, 84,231, 90,142, 26, 53, 26,214,214, - 54,112,115,115,133,131,131, 3, 76, 77, 77,225,230,230, 6, 79, 79, 79,186,117,235, 86,152, 57,248, 53,234, 15,121, 77,231,137, - 97, 24, 24, 12, 6,228,229,229,225,233,211,167,136,141,141,197,237,219,183,241,240,225, 67,148,150,150,162, 17,126, 22,202, 84, - 42,127,134,121,125, 50, 77,173, 86, 67, 42,149, 66, 42,149, 86, 59, 90, 5, 5, 5, 72, 75, 75,131, 66,169,236, 80,151,158,181, -173,237,232,246,237,219,115, 1,192,212,212, 20, 29, 58,116,192,158, 61,123,244, 63,159, 58, 53,190,237,237,219, 54,110, 23, 46, - 88,125,247,205, 55,227,131,130,130, 12,119,238,220,129, 92, 46,199,147, 39, 79, 96,111,111,207, 8, 76, 76,216, 90,121, 77, 36, - 26, 80,218,149,150, 14,234,222,189,123,170, 76, 38,195,150, 45, 91, 56, 60, 11,139,111, 67, 1,110,189, 59,114,185, 61, 2, 3, - 3,113,250,244,105,100,167,167,175, 72,175,197,129, 73, 7, 10, 50, 82, 82, 86, 28, 56,112, 0, 3, 6, 12, 0, 97,152, 38, 7, - 42,117,237,218,181,189,209,104,196,227,199,143, 97, 5,220,109,234,254,158, 94, 94, 1, 85, 51,191, 34,224, 70, 93,253, 68,192, -141,152,152, 24,152,154,154,162, 77,219,182, 29,155,120,152,173,132,144,156, 25,239, 45, 66,196,249, 91, 0,128, 3,223,238,204, -195,255, 59, 89, 44, 44, 44,255,112,254,170, 51, 90, 64,133, 99, 85,179, 85,189,223,164,132,165, 85, 14, 5,143,199,131, 64, 40, -132, 64, 32,168,112,144,132,194, 70,107, 16, 66, 96, 98, 98, 82,237, 88,213,116,176,106,254,110,102,102,214, 40, 7, 6, 0, 74, -146,207,247,154, 53,115,134, 64, 40, 20, 66,163, 81,131, 82, 10,161,208, 4, 86, 86, 86,240,240,240,128, 92, 46, 71,247, 30,189, -213,153, 82,254, 25,219, 54, 35, 99,155, 50,230, 42,244,122, 61,148, 74, 37, 74, 74, 74, 80, 92, 92, 12,185, 92, 14,149, 74,213, -232,165,232, 70,163,145,155,153,153,137, 31,126,248, 1, 69, 69, 69, 0, 42, 2,173,171,156,171,170,159,169,169,169, 8, 11, 11, -195,139, 23, 47,128, 38,124, 62,189,122,245,194,153, 51,103,184,125,250,246,221,123,201,221, 61,251,146,187,123,118,159,190,125, -247,158, 62,125,154,235,226,226,130,180,180, 52, 60,120,240, 0, 37, 37, 37,160,148,178,235,231,223,128,231, 64, 73, 89,113,241, -140,149, 43, 87, 82,115,115,115,108,249,252,115,255,245,192,196,250,246,169,233,192,136,235,113, 96,196,191,207,129, 1,165, 20, - 70,163, 17, 6, 67,163,178,152,188, 6, 33,132,240,120,188,166,166, 86,104,116,231,154,129,239,203,215,108,192,217,159, 78, 84, -109, 74, 98,157, 44, 22, 22,150,191, 58,180,158, 90,135, 12, 80,237, 65, 86,255,172,139,188,188,188,151, 74,165,178,165,187,187, - 59,178,178,178, 28,154, 53,107,150, 46,224,241,192, 23, 8, 64, 56, 13,251, 4,102,102,102,143,179,179,179,123,184,184,184, 64, -175,215, 87, 59, 85,175, 62, 58, 4, 42,102,105, 30, 62,124, 8, 51, 51,179,199, 40,175, 55,115, 2, 12,154,146,230, 29, 59,118, -172,158, 25,178,178,178,130,149,149, 24, 66,161, 9, 86,173, 90,101,220,182,117,235,238,102,239,132,202,254,181,120, 37, 93,185, -126,111,131,118, 54,133,198,126, 49,153,153,153, 61,118,115,115,235, 38, 22,139, 17, 17, 17,129,180,180, 52,148,148,148,160,172, -172, 12,106,181, 26,101,101,101,208,104, 52, 48, 49, 49, 65,219,182,109, 97,105,105,137,203,151, 47, 63,134, 90, 93,171, 94, 73, - 81, 81,196,227,199,143,187,117,238,220,185,122, 70,229,237,183,223, 38,111,191,253,182, 93,213,235,178,178, 50, 20, 22, 22,226, -222,189,123,184,124,249, 50, 8, 33, 72, 74, 74, 50,168, 85,170,163,191,119,220,255, 84,202,129, 95,185, 7, 14,236,127,255,253, -247,103,246,232,209, 3, 6, 96, 48,128,176,186,250,255,217, 14, 76, 21,183,111,223,142, 51, 24, 12, 61, 90,181,106, 5, 41,208, - 5,192, 79, 77,217,255,121,114,114,140, 94,175,239,235,239,239,143,136,227,199,123, 1, 72,171,173,159, 18,232, 21, 16, 16, 0, -149, 74,133, 39, 9, 9,209,141,209,174,116,178,246,126, 28,178,105,250,212, 89,243,113,104,239,110, 28,248,118,103,230,254, 61, - 59,220,208,136,248, 49, 22, 22,150,127, 6,141,245, 69,254, 23,169, 45, 70,171,202,249,106, 84, 96,120, 21,178,146,146,232,152, -152,152,150, 29, 59,118,196,222,189,123, 59,119,239,214,237, 37, 95, 32,208, 11,248,124,112, 26,241, 69,162, 82, 42,127,249,229, -151, 95,186,140, 28, 57,146,185,115,231, 14, 36, 18, 73,181,163, 85,245,147, 97, 24, 80, 74, 97,102,102,134, 31,127,252, 81,171, - 82, 42,127,105, 72,215,104, 48, 26, 56,149,142, 30,165, 20, 82,169, 20,124, 62, 31, 95,124,177, 13,187,182,110,157,100, 0, 78, -120,139,236,151, 1, 48,105,202,120,255, 72,202,203,202,174,156, 61,123,182, 83,112,112, 48,207,213,213, 21, 82,169, 20, 37, 37, - 37, 40, 42, 42,130, 92, 46,135, 92, 46, 71, 73, 73, 9,164, 82, 41, 76, 76, 76, 16, 27, 27,171, 43, 47, 43,187, 82,151,158,176, -188,252,228,180,105,211,150,199,196,196, 56, 49, 12, 3,157, 78, 7,163,209, 8,163,209, 8,173, 86,139,228,228,100,196,199,199, - 35, 49, 49, 17,197,197,197,224,241,120,224,114,185,120,248,240, 97,137, 72,167, 59,254,159, 28,251,223, 13, 30, 16,113,243,230, -205,153, 83,166, 76,129,179,171,107,111,100,101,213,217,183,166, 3,115,170, 30, 7, 70,246, 6, 14, 76, 77,148,165,165,247, 83, - 83, 83,123,244,233,211, 7, 78,174,174,155,218,102,101, 93, 74,104, 66,156,150, 65,175,191,113,243,230,205,190, 83,167, 78,197, -222,189,123, 55,217,167,166,158, 47,120,229, 49,167, 61, 96,223,194,211,115,211,244,233,211,113,241,226, 69, 24,244,250, 58,103, -232, 94,201,248,222,124,250,156,133,110,175, 4,190,239, 33,132, 44, 0,176,165,169, 99,101, 97, 97, 97,249, 95,163,190, 25,173, - 38, 61, 58, 52, 53, 24, 62, 94,186,116,169,142,195,225, 96,244,232,209, 22, 63,157, 62, 29,244,240,209, 35,143,252,252,124, 43, -131,193,208,160,150,189, 90,189, 99,233,210,165, 82,141, 70, 3, 31, 31, 31, 20, 23, 23,195, 96, 48,128, 97, 24, 48, 12, 3, 66, - 8, 56, 28, 14,204,205,205, 17, 19, 19,131,253,251,247,203,237,213,234, 29, 13,233, 26, 12,134,199, 97, 97, 97,224,114,185,212, -196,196, 4,132, 16, 48, 12,131,109,219,182,229,239, 2, 34, 0,128,203,225,104, 0,128,195, 33,141,141,222,109,240,185,165, 64, - 32,128,177, 98, 17, 64,131,125,173,213,234,237,155, 55,111, 46,125,242,228, 9,148, 74,101,245,236,155, 66,161,168, 14,174,151, - 74,165, 32,132, 64,169, 84,226,244,233,211,165,214,106,245,246,186,244,138,128,220,172,164,164,225,157, 59,119, 46, 74, 77, 77, -133, 76, 38,195,227,199,143,113,249,242,101, 28, 59,118, 12, 23, 47, 94, 68,114,114, 50,244,122, 61, 92, 92, 92, 64, 41,197,169, - 83,167,100,250,210,210,193, 69, 64,110, 35,207,193, 63,146,230, 18, 73, 95, 71, 7,135, 12,123, 59,187,172,230, 18, 73,223, 87, -183,139,129,103,207,158, 61,131, 94,175,135,135,135,135, 77,125,113, 90, 84,175,191,121,243,230, 77, 76,157, 58, 21,110, 45, 91, -110,116, 7,236, 95,237,227, 14,216,187,123,122,110,172,114, 96,168, 94,127,179,169, 54, 91, 0, 59,151, 45, 91,166,226,243,249, - 8, 15, 15,247,208,121,121, 37, 50,192, 68,115,160,117, 31,128,223,208,254, 78,192,238, 53,107,214,228, 18, 66,112,248,240, 97, - 59,177,167,103, 28, 3, 76, 19, 3,205,197, 64,115, 6,152, 38,246,244,140, 11, 15, 15,183,211,235,245, 88,188,120,113,174, 19, -176,187, 30,201,133,148,210, 97,148,210, 64, 74,169,219,254, 61, 59,112,246,167, 19, 85, 78,214, 44, 74,233, 61, 74,233, 20, 74, -105, 92, 83,199,202,194,194,194,242, 87,130,212, 22, 7,197,235,178, 62, 15,160, 14,189,187,250,225,254,163,167, 50, 59,107,203, - 11, 85,219,138,227, 79,180,122,199,215,210,239,171,175,190, 2,143,199, 67,102,102, 38, 18, 18, 18, 96,105,105,137, 73,147, 38, -169, 85,165,165,195,171,106, 29, 18, 66,250, 81, 74, 47, 87,106, 86,212, 83,147, 37,153,123, 50,177, 45,207,159, 61,195, 21,139, -197, 80, 40, 20,224,112, 56, 48, 49, 49,129,153,153, 25, 76, 77, 77,241,224,193, 3, 12, 25, 54,194, 80, 96, 22, 88,157,176,180, -170,158, 90, 77, 77, 16,194, 5,128, 46,128, 89, 12,240,161,131,179,243,210,213,171, 87,155, 14, 28, 56, 16,124, 62, 31,174,205, -189,115, 61, 6,109,217,201,225, 16,125, 86,145,124,149,103,115,103,113, 66, 82, 26, 0, 82, 81, 19,177,178,214, 97,109,118, 54, -211, 92,247,248,241,251,173,150, 29, 58, 84,196,163, 75,165, 82,228,229,229, 33, 63, 63, 31, 82,169, 20, 74,165, 18, 0,112,230, -204, 25,156,141, 74,148,171, 92,131, 82,234,178,243,255,199,254,212,194, 89,123,183,197,145,176,239,185,246,246,246,200,203,203, - 67, 65, 65, 1,164, 82, 41, 84, 42, 21, 12, 6, 3,138,139,139,177,239,192,247,134, 34,243,192, 23, 85, 9, 33,235,213, 84,102, -154,218, 40,110,185, 4,180,117,167, 51,103,206,180,176,180,180,132,209,104, 68, 73, 73, 9, 50, 50, 50,144,154,154,138,168,168, - 40,101,190, 84, 3,165, 93,255,172,170,132,165,181,158,207, 63,234,162,250, 43,106, 86, 94, 75, 0,224,236,228,148,157,158,158, -238, 96, 48, 24,224,226,226,162,151, 22, 23,111, 20, 0, 23, 45,128, 28, 0,180, 16, 88,189,125,231,206, 25, 35, 70,140,192, 91, -111,189,149,153,155,151,215,162,182,107, 9,132,112,125, 0,113,153,171,107,252,189,123,247, 36, 25, 25, 25,152, 58,117,106, 97, -250,243,231, 43,170,226,181,100, 64, 47,119, 79,207,141,225,225,225,118, 45, 91,182,132,175,175,111,174, 73, 70, 70,187,167,128, -172,142,235,179,206,123, 83,250, 44,178,197,220, 81,237,223,154, 55,111, 30,244,122, 61,162,162,162,112,247,238, 93,164,167,167, -227,214,173, 91, 82, 75,145,104,124, 85,173,195,186,174,207,193,222, 74,143,195,135,195, 8,159,207,199,129, 3, 7, 16, 19, 19, - 3, 0, 8, 8, 8,192,244,233,211,161,215,235, 49,121,242, 20, 26,249,212, 52,165,190,235,147, 16,210, 30,192,231,168,112,242, -222,162,148,154, 16, 66,178, 1,184, 53, 37, 38,235, 47,121, 45,177,154,172, 38,171,201, 82,131, 6,107, 29,174,251, 26,226,223, -150,249,152,157,125, 98, 79, 40,211,179, 87, 96,235,208,181, 33,156,206,157, 59,195,205,205, 13, 1, 1, 1,200,200,200, 16, 90, - 89, 89, 53, 84, 79, 77, 17, 56,104, 98,170,159,159,159,213,138, 21, 43,196, 3, 6, 12,224,185,185,185,129, 82,138,152,152, 24, - 68, 68, 68,104,247,238,221, 43, 47,115, 28, 38,141,190,250,131,162, 49,245,212,238, 2,101, 0, 62,113,205,206,254,118,254,220, -185, 33, 29, 58,118,156,185,118,237, 90,142,185,153, 41,111,195,170, 89, 38, 0,176,238,203, 99,226, 17, 65,147,176,221, 11,232, - 61,177,246, 58,114, 53,237,204,200,154,157,254,238,168,190, 94, 31, 46,152, 97, 24, 55,110,156,200,210,210, 18,110,110,110,176, -182,182, 70, 74, 74, 10,178,178,178,232,207, 63,255,172,184,253,240, 25,239,212,197,251,233, 38, 98,167,198,212, 37, 44, 13, 28, - 56,246,197,187,239,190,107, 61,109,218, 52,139, 78,157, 58,241,132, 66, 33,132, 66, 33,242,242,242,144,156,156,172,253,249,231, -159, 21,101, 14,131, 75,162,175,134,151, 54,178,214,161, 42,112, 66,104,242,141, 75,107, 23,199, 63,126, 60,197, 8,248,107,181, - 90, 23,131,193, 64, 56, 28, 78,142,209,104,124,172, 45, 45,221,175, 14, 88,187,141,173,117,216, 56, 12, 6, 3,223, 96, 48, 64, - 42,149,226,210,165, 75,204,243,231,207, 87, 63,122,244,104,117,118,118, 54,116, 58, 29,198,140, 25,131,128,128, 0, 92,189,122, - 21, 5,121,121, 63,215,167,245, 20,144, 9,179,178,166,207,158, 61,251, 92, 88, 88, 24,231,209,163, 71,118, 7, 14, 28,216, 87, -155, 3, 51,101,202, 20, 99, 94, 70,198,116, 53, 32,171, 75,175,129,123,179,240,124,248,174, 71, 35, 71, 7,181, 93, 27,188,154, -215,189,123,119,216,217,217,161, 87,175, 94,208,106,181, 86,109,218,180,105,232,222, 44, 13, 28, 52, 62,197,223,223, 95,180,109, -219, 54,201,140, 25, 51,176, 96,193, 2, 0,128, 74,165,194,197,139, 23,177,120,241,226,220, 12,166,139,178,161,235,179,114,166, -170,202, 1,187, 14, 32, 16, 64, 10, 27,248,206,194,194,242,119,132, 16, 18, 64, 41,141, 33,132, 56, 1, 24, 2, 32,146, 82,154, - 3, 52,162,214,225,141,187,113,168, 89,230,163, 2,167, 4,125,179,105,207,223, 91,186,209,151,171,147, 91,243, 72,185,101,210, -179,103,164,161,154,135,213,245,212,196,222, 10,219,212,163,157, 55,172, 91,183,104,251,246,237,125,171, 82, 56,152,153,153, 61, - 86, 41,149,191,216,171,213, 59,202,196,222,191, 52,181, 54, 95, 22,144, 7, 96,174,117,116,244,206,161, 35,198,108, 54,177,241, -224,173, 92,191,183,156,203,225,104,146,179, 11,176,221, 11, 16, 53, 98,129,100,153, 6,136,151, 58,233,243,108,131,158,174, 89, -182,236,195,117,159,124,210,217,220,220,188,183, 86,175,247, 54, 26,141,128,209,152, 84,166, 84, 94,167, 90,237, 61,117, 64,240, - 86, 19,177, 19,109,116, 93, 66,171, 54,165, 54, 47, 78,116, 62,184,127,255,194,227,199,143,191, 54,118, 91,181,122,103,153, 85, -155,203,141, 25,123,205, 62,229,192,175,200,207,255,181,174,190, 4,108,173,195,198,194, 24,141,115,172,173,173, 15,245,237,219, -215,164, 95,191,126, 24, 50,100, 8,186,119,239, 14,163,209, 8, 74, 41, 74, 75, 75,113,236,216, 49,108,222,188, 57,169, 5,240, - 73, 67,122,106,224, 23,225,217,179,131,253,253,253, 15,212,231,192, 84, 58, 89, 13,198, 36,214,127,111, 10,147,244,226,225,105, - 19,230,111,240,210,200,115,172,108,205,244,146,248,184,199,156,198,223,155, 62,165,134,152, 99, 93,198,140, 26, 53,159,203, 48, -189, 42, 87, 64,210, 39, 9, 9,209, 85, 69,165, 17, 48,253, 82, 19,175,165,170,220,117,108,224, 59, 11, 11,203,223,149, 0, 0, - 49, 0,134, 80, 74,191,173, 12,142,175, 59, 24,158, 97,152,252,170, 89, 31,134, 97,242, 83, 78,189, 55,169, 62,117, 30,208,183, -114, 38, 11, 13,214, 58,172,252, 61, 13, 40,133, 90,253,233,111,146,145,214, 88, 93,200,123,165,127,163,135, 10,160, 4,120, 10, -189,122, 40,242, 19,128,211,115, 43,244, 58,175,251,168,230,152,234,218,247,183,118,242,139,203,129, 27, 80, 40,110, 64,161,168, - 53,104,151,199,240,139, 27,178,243,213,177,103, 0,242,223, 59,246, 87, 53,235, 60, 25,111,216,255,159,204,203,194,194, 83, 0, -204, 93,207,156,113, 60,127,230,204,184, 15,151, 44, 25,227,228,236,236,105,103,103,103,109, 97, 97,193,185,115,231, 78,170,190, -188,124,103, 7,224, 96,229,108,106,131,168,129, 95,124, 50, 50,218,141, 29, 53,106, 62, 97,152,158, 53, 29, 24,170,215,223,242, - 0,118,215, 55,147, 85, 69, 83,239, 77, 55,161, 83,223,202,153, 44,112, 27,121,111,102, 85,216,177, 30,122,253,122,196,190,158, - 13,229, 13,238,205,117,132,144, 82,176,129,239, 44, 44, 44,127, 95, 34, 43,157,171,200,215,182,252,153,245,125, 0,244, 99, 53, - 89,205,191,139, 38, 42,130,222, 45,255,215,237,100, 53, 89, 77, 86,147,213,252, 43,106,254, 93, 91,147,210, 59,176,176,252,147, -161, 21,193,233,141, 42,225,196,194,194,194,194,242,207,161, 70,108, 86, 53,180, 50,229, 3, 1,208,175,182,157,104, 19, 86, 19, - 16, 66,106,213,168,143,134,244, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,251,105, 54,164,221, 20,255,227,127, 5, 66, -200, 28, 90, 25,155, 69, 95,201,169, 85,107,122,135, 63,240,192,127,137, 37,165,172, 38,171,201,106,178,154,172, 38,171,201,106, -254,119, 53,255,202,212, 55,163,213,164,132,165, 44, 44, 44, 44,127, 87, 66, 67, 9, 7, 32, 4, 8,229, 0, 39,184,192, 88,110, -197,235, 55,103,236, 88, 82,107, 50,219,133,147,109, 44,126,143, 46, 11, 11,203,255, 22,148,210, 28, 90, 71, 81,105, 54, 70,235, -191, 8, 33,164,153, 68, 34,217, 3,128,228,230,230,206,161,148,102,252,183,109, 98,121, 29, 91, 91,219,190,122,189, 30, 50,153, -172,193,212, 11,127, 69,218,121,145, 81,148,131, 54,213,111, 80,100, 36, 36,209, 67,181,245,109,235, 77,166,130,252,127, 46, 46, - 98,196,147,248,100,250, 99, 99,143, 69, 8,225, 12,238,231,182, 27, 0,206, 93,206,156, 79,255,132,188, 90,132,144, 86,246,246, -246, 23, 24,134, 97, 12, 6,195,220,188,188,188, 51,117,245, 29, 59,118, 44, 23, 0,120,244,234,199,118, 54,173, 87,124,240, 62, -225,149,169,247, 75,213, 42,165,140,203,227,190, 16,242, 36, 55,193,117, 57, 87,162,232,150, 80,219,254,199,143, 31,175,179,138, -119,123,111, 50,184,117,219,182,195, 58,250,154,166,124,190,163,243,246,222, 30,118,188,212,204,135,230,155,190,145,237,177,180, -105, 62,108,218,120,219, 51,140, 25,153,178,111, 95,161,162, 46, 13,150,215,249,140, 16, 27, 45,224,203, 19, 10,221, 12,122,189, - 35, 1, 40,151, 97,242,116,106,117, 38, 31,136, 93, 65,169,244,239,174,201, 23, 10, 93, 13,122,189, 35, 0,252, 47,218,201,242, - 91,234,116,180, 44, 44, 44, 30,112, 56, 28,215,154,197,112,171,234, 9, 86,189, 87,115, 27, 33, 4, 6,131, 33,171,184,184,184, - 83, 99, 15, 78, 8,177, 4, 48, 14, 64,213, 18,245, 35, 0,142, 81, 74,223, 40,224,152, 16, 98,201,231,243,151,138, 68,162,119, - 84, 42, 85, 59, 0, 48, 53, 53,141, 87, 42,149, 87,180, 90,237,231,111,162, 75, 8, 97, 0,140, 53, 55, 55,127,155,195,225,188, - 77, 41, 37,148,210,171, 10,133,226, 10,128,227,148,210,198,150,244,169,169,105,234,224,224,176,190,117,235,214, 19, 63,254,248, -227, 34, 91, 91, 91,159,197,139, 23,223,183,183,183,255,161,176,176,112, 21,165,180,209, 53,234,254, 76, 8, 33,158, 18,137,228, - 8,143,199,227,102,102,102,190, 13, 0,110,110,110, 87, 53, 26,141, 33, 63, 63,127, 18,165,244,121, 19,245, 68, 0,186,154,155, -155,119, 50, 55, 55, 15, 52, 24, 12,109, 42,235, 51, 62, 81, 40, 20, 81, 90,173,246, 1,128, 59,148, 82,229,159, 49,158, 55,129, - 16, 98,225,224,224, 16, 70, 8, 1, 33,196,155, 82, 90,250,223,182,233,143,134,114,208, 38, 33, 62,209,167,234,117,219,118,173, -235,238, 76,208,172,150,190,141,118,180,222,233,237, 52,108,248,240,254, 28, 0,208,232,206, 13, 67, 19,139, 95, 55, 4, 33,164, -213,232,209,163,127, 13, 11, 11,179, 86,171,213,152, 51,103,206, 17,177, 88,188, 91, 38,147,125, 92,223,126,150,230,214,139,183, -108,187,104, 86, 81,255, 26, 14, 70,163,193,225,229,203,231,222, 9,113,191, 14,138,143,191,189, 65,149,120,229,142,145,240,222, -211,162, 87, 98, 99,236,104,235, 73,134,142, 24, 59,106,200, 39,159,172,197,196,241, 19,155,199,199,151,155,186, 88,166, 8,138, - 85, 34, 47, 91,123,135,225,159,172, 59, 65,110,222, 56, 53, 60,236, 64,232,149,153, 51,237,222, 97,157,173,134, 33,132,144,117, - 12,211,213,186,117,235,192,241,167, 78,193,220,205,141, 97,132, 66, 14, 0,232,213,106, 55, 69,102,166, 83,248,240,225, 93, 66, - 9,185, 22, 66,233, 93, 86,243, 63,175,201, 82, 59,117, 58, 90, 28, 14,199,245,229,203,151, 14, 34,145, 8, 64, 69, 26, 8,131, -193, 0,131,193, 80, 93,188,152, 82, 90,253, 83,175,215,163,117,235,122,254, 64, 87, 66, 42,254,146,189, 3,224, 95,125,250,244, - 9,250,252,243,207,121,190,190,190, 85, 37, 67,122,173, 92,185,242, 75, 66,200, 73, 0, 7, 1,252,210,216,255,120, 9, 33, 3, - 69, 34,209,225, 45, 91,182, 88,246,239,223,159,113,118,118, 6, 33, 4,185,185,185, 93, 47, 95,190,220,105,241,226,197,115, 9, - 33,147, 41,165, 23, 26, 86,171,214,108,111, 97, 97,113, 98,212,168, 81,174,189,123,247, 54,105,219,182, 45, 12, 6, 3, 30, 62, -124, 56,227,193,131, 7, 19, 78,158, 60, 25, 66, 8, 9,162,141,172,215, 70, 8, 33,230,230,230,211, 92, 92, 92,214, 7, 7, 7, -219, 76,158, 60, 89, 16, 23, 23, 87,226,225,225, 65,110,222,188,105,127,236,216,177,185, 27, 55,110, 28,107, 97, 97,177, 74,161, - 80,124, 79, 27, 17, 64,103,105,105,249,128,195,225,184, 2, 13, 59,194, 0, 26,237, 12, 19, 66, 58,180,104,209,226,216,141, 27, - 55, 90,164,165,165, 25, 70,142, 28,121, 8, 0,174, 92,185,226,171,211,233,200,128, 1, 3,206, 17, 66,198, 81, 74, 31, 54,114, -236,126, 54, 54, 54, 63, 77,156, 56,209,198,211,211,211,172, 69,139, 22, 68, 36, 18,129,203,229, 66, 38,147, 57,199,197,197,245, -187,123,247,174,234,242,229,203,197,132,144,225,148,210,215, 19, 56,213,173,221,221,193,193, 97, 10,143,199,107,175,215,235, 93, - 0,128, 97,152,151, 58,157, 46, 46, 63, 63, 63,140, 82, 90,103, 34,215,134,112,116,116,220,181,126,253,122,187,252,252,124,186, -113,227,198, 93, 0,166,189,169,214,255, 58, 71,126, 56,142, 7,247,239, 2, 0,159, 16, 66, 94,189,254, 8, 33,164,141, 55,248, - 31,124,176, 4,157,222,234,130, 73, 19,199, 54,168, 57,164,159,219, 22,158,128,111, 91, 94, 94,254,171,172, 76,125,220,209,214, -106,220,196, 9, 67,147, 0,224,220,249,107,227,186,116,177,185, 42, 54, 19,142, 53, 49, 49,233,174,211,104,139, 34, 47,103, 46, -107,172,189,132,144, 86, 46, 46, 46, 23,172,173,173,205,138,139,139,115, 11, 10, 10,190, 30, 61,122,244,186,131, 7, 15, 90,167, -166,166, 34, 51, 51, 19,139, 22, 45, 50,207,202,202,154, 47, 20, 10,111,171,213,234, 58,103,182, 74, 75,139,119,172, 92, 49, 34, - 88, 44,182,227,138,204, 44, 97, 33,182,129,135,167, 63,186,118, 31,134,193, 67,102, 34, 57, 41,166,235,193, 3,159,196,188,124, -121,249, 51,115,155,150,235,164,210, 22,117,254, 93,106,231, 67,122, 87, 57, 89,193,193,107,241, 44, 49,177, 52,237, 5,231,223, -145,167, 24,179,193,125, 91, 11,245,154,220,180,155, 55, 78,181,232,217,107, 36, 0,116, 10, 59, 16,122,101,225,100,155,190, 59, - 15, 23,255,237,156,248, 63, 10, 66, 8,249,132,199,155, 54,112,219, 54,135,128,185,115,249,138, 23, 47,180, 41,223,124, 83,150, - 23, 21,101, 96,132, 66,234, 54,104, 16,177,127,251,109,147,185, 79,158,240,111,109,220, 24,184, 65, 32,240, 88,169,209, 28,102, - 53,255,115,154,255,116,106, 4,195, 87,199,106, 85, 61, 62,172,211,209, 34,132, 64, 36, 18, 33, 60, 60, 28, 60, 30, 15, 12,195, -128,199,227,213,249,123,179,102,175, 85,246,168, 77,115,180, 68, 34,249,114,247,238,221,142, 3, 7, 14,132,137,137, 73,245, 54, - 46,151,139,254,253,251,163, 95,191,126,188,236,236,236, 9,225,225,225, 19, 54,108,216,144, 71, 8, 89, 64, 41,141,104, 64,247, -109, 31, 31,159,136,139, 23, 47,154,150,151,151, 35, 42, 42, 10, 37, 37, 37, 16, 8, 4,112,117,117,197,128, 1, 3,152,196,196, - 68,155,254,253,251, 71, 16, 66,134, 82, 74,175, 54,194,214, 78, 14, 14, 14,215,143, 31, 63,110,226,239,239, 79,146,147,147, 17, - 16, 16, 0, 0,144,201,100, 24, 57,114,164,201,228,201,147, 61, 39, 76,152,112,135, 16,210,155, 82,250,160, 1,189,142, 18,137, -228,251, 81,163, 70, 57,111,216,176,193,210,194,194, 2,105,105,105, 57, 18,137,196,187,234,124, 79,152, 48, 65, 48,108,216, 48, -167,205,155, 55,239, 56,113,226,196, 50, 66,200, 52, 74,105,116,125,186, 85, 14,177,153,153, 25,242,242,242,112,228,200, 17,204, -159, 63, 31, 92, 46, 23,249,249,249, 56,118,236, 24,254,253,239,127, 87, 57, 52,141,114,134, 69, 34, 81, 63,127,127,255,125, 87, -174, 92,113,181,178,178,130,179,179, 51,103,205,154, 53,237, 61, 60, 60, 76,155, 55,111,206,205,201,201, 65, 68, 68,132,199,148, - 41, 83,126, 50, 49, 49,153, 81, 94, 94,222,224, 35, 53, 71, 71,199,253,145,145,145,205,226,227,227,241,205, 55,223,160,184,184, - 24, 2,129, 0, 86, 86, 86,144, 72, 36,240,246,246, 38, 43, 86,172, 48, 27, 54,108,152,217,130, 5, 11,246, 3,232,208,144, 38, - 33,196,223,193,193, 97,207,132, 9, 19, 60, 66, 67, 67,173, 36, 18, 9,170,254, 49,144,201,100,174,105,105,105, 93,131,131,131, -131, 28, 29, 29, 83,243,243,243,223,163,148, 62,106,112,240,191,213,239,208,183,111,223,161, 35, 71,142,228,230,228,228, 32, 44, - 44,108, 40, 33,164, 67, 99,157,203,191, 26, 15,238,223,197,156,121,139, 20,206,110,110,252,139, 23,246,141,150, 74,219,222,183, - 50,173, 40, 72, 45, 85, 65,251, 78,111,238, 91, 3, 6,206,228,191, 59,100,164,226,219,175,118,152, 55,198,209,226, 9,248,182, - 71, 14,127,145,113,227,230,131,246,151, 46,223, 29, 52,122,248,112,202,231, 91,121, 0,192,178,197, 31,240, 34, 78,159, 62,208, -191, 95,151,236, 94, 61, 59,101, 76,154,188,164,225, 63, 34,149, 16, 66, 90,181,106,213,234, 90, 76, 76,140,163, 80, 40, 68,113, -113,177,237,183,223,126,251, 69,207,158, 61, 57, 41, 41, 41, 72, 76, 76,196,139, 23, 47, 32,147,201,208,191,127,127,243,232,232, -232,175, 1,212,233,104,105, 57,239,172,119,110,174,219,105,107, 42,106,161, 53,200, 29,168, 46,167,237,165,200, 75,126, 71,195, - 84, 1,142, 78,173,189,255, 53, 61, 4,159,172, 59,201,251,225,200,166,224, 95, 46, 31, 5, 56, 45,234,174, 8, 64,209,125,229, -170,143, 33, 47, 85, 99,242,196,217,152, 50,113,182, 45,133,198,137, 26,202, 69, 26, 85,137,149, 5,255,201,153,221,123,191, 24, - 5,192,181,134,179,245, 11,235,108,213,205, 39, 12,211,101,232,151, 95,218,183,159, 53, 75,248, 40, 52, 84, 89, 24, 21,165,242, -122,247,221,146,128,247,223, 87, 3, 64,233,139, 23,252,103, 33, 33,102,246,129,129,166,221,150, 46,181, 54,104, 52,146, 79, 9, -233,188,134,210,123, 77,213,108, 54,110,156, 33,248,192,129,183,162,150, 44,233, 67,116, 58,238,160,110,221, 30,110, 12, 11,123, -249,123, 52,255, 72, 59,179,175, 95, 87, 23,123,120, 32, 96,228,200,162,102, 14, 14,234, 63,114,236,191,199, 78,150, 10,104, 69, -217,157,170,204,240, 0, 42, 87, 29, 70, 70, 70,246, 6,112, 13, 64,232,144, 33, 67,214, 2,128,149,149, 85,158, 84, 42,117,136, -136,136,104,208,201,226,241,120,112,114,114,130,183,183,119,126, 94, 94,158, 99, 93, 6, 16, 66, 50,141, 70,163, 43,165,180,122, -246,165, 46,212,106, 53,146,146,146,224,231,231,151, 69, 41,117,171, 71,211,194,204,204, 44, 37, 49, 49,209, 46, 33, 33, 1, 15, - 30, 60,128,135,135, 7,172,173,173,193,227,241,160,211,233, 32,151,203,225,227,227, 3,161, 80,136,142, 29, 59, 22, 42,149, 74, -143,250, 30, 1, 17, 66,132, 34,145, 40,233,250,245,235,110, 1, 1, 1,184,119,239, 30,220,220,220, 32,145, 72, 0, 0, 47, 94, -188,192,205,155, 55,241,238,187,239, 34, 38, 38, 6, 99,198,140,201, 84, 42,149,222,148, 82,117, 93,154,182,182,182, 57, 87,174, - 92,201,242,245,245, 45, 87, 42,149,156,188,188, 60, 94, 84, 84,148,190,180,180,212, 92, 38,147,241,164, 82, 41, 79, 46,151, 51, - 74,165,146,199,225,112,248, 42,149,138,247,203, 47,191,112, 53, 26,141,101,125,231,169,234,115, 58,125,250, 52,124,125,125, 17, - 17, 17,129, 15, 63,252, 16,183,110,221,130,155,155, 27,142, 31, 63,142,165, 75,151,226,233,211,167,176,179,179, 67,219,182,109, -235,253,140, 0,192,203,203, 43,249,241,227,199,158,124, 62,191,170,174, 99, 85,189, 60, 20, 20, 20,224,249,243,231,120,249,242, - 37,188,188,188, 48,113,226,196,231, 89, 89, 89, 94,245,233, 1,128,171,171,107, 65,124,124,188,157,159,159, 31,242,242,242, 96, -101,101, 5,177, 88, 12, 43, 43,171,234,223, 61, 60, 60,176,100,201, 18, 72, 36,146,124,149, 74, 85,175,141,132,144, 14,190,190, -190, 23,126,249,229, 23, 59, 75, 75, 75,228,230,230, 66, 46,151,131, 97, 24,152,153,153,193,206,206,174,218,145, 79, 74, 74,194, -144, 33, 67, 10, 83, 82, 82, 6, 54, 97, 6,142,227,232,232,152, 24, 27, 27,235, 77, 41, 69, 70, 70, 6,158, 62,125,138,121,243, -230, 37,149,151,151,183,254, 51, 98,139,254, 91,212,136,187,226, 79,155, 62,135, 63,106, 68,119,205,147,248, 51, 68,104,124,138, - 14,237, 45,101, 0,240, 48, 78, 46, 86,115,124,208,166,221, 80,250,227, 79,191, 10,190, 63,248, 45, 15, 70, 56,130,224,105,194, - 51,250,105, 93,218, 3,223,113,158,245,193, 7, 51,218,247,233,217,155, 83,170, 84, 58,124,253,245,182,142, 41, 41, 79, 28, 0, -192,195,163, 77,254,220,185,139,163, 45, 68,162,252,107, 55,175, 27,183,111,223, 31,119,225, 74,246,222,134,236, 37,132,120,120, -123,123,223, 62,125,250,180,157,131,131, 3,196, 98, 49,148, 74, 37,180, 90, 45, 18, 18, 18,202,195,195,195,117,150,150,150, 22, -185,185,185,144, 74,165, 32,132,224,244,233,211, 25,148, 82,247, 87,181,170, 98,180, 0, 96,222,224, 54,188,182,239,120, 91,243, -133,122, 83, 83,222, 51, 39, 16,131,144, 80,115,199,115, 23, 30,250,157,187,116,111,210,168,209, 31,218,247,234, 61, 10,193,171, -131,116,217,217, 25, 1, 90,244, 74,172, 45, 70,171,141, 55,121,103,228,152, 81, 99, 63,249,100, 45,214, 6,135,226,204,233, 83, - 50,115, 17, 71,109,105,197, 19, 7,118,237, 81,190,100,254,136, 76,133, 34,219,237,147,205,225, 19,135,140, 88,226,218,179,215, - 72,220,188,113, 10, 97, 7, 66, 31, 16, 83,202, 62, 70,124,133, 80, 66,172,173, 60, 60,222, 91,152,148,196,127,180,118,173, 66, -159,157, 93,210,105,241,226,194,218,250,102, 93,186, 36, 18, 56, 59, 91, 90, 15, 31,110,179,195,221,157,234,242,243,247,212, 22, - 99, 84,155,230,101,115,115,171,163,231,206,245,165, 60, 94,239,229, 31,125,100, 58,116,232, 80,200,229,114,156, 60,121, 18,123, -190,249, 70,237,228,228,244,216, 57, 46, 46,166,189, 92,190,186,177,154,157, 22, 47, 46, 52, 24, 12,100,236,210,165,253,227, 95, -188,120, 39, 55, 63,191, 57, 0, 56,217,216,100,118,242,240,120,176,255,204,153,167,187, 90,180, 48, 54,214,206,239,206,159,119, - 60,145,150, 54,203,198,198,198, 52, 47, 63,159, 17, 10, 4, 69, 93,219,182, 61,254,213,170, 85,215,244,177,177,124, 19, 87, 87, - 75,241,208,161, 77, 30,123,167,197,139, 11,139, 75, 75,153,133,235,214,245, 72,207,203,107,174, 80,171,189,164,165,165, 18,131, - 78,199,177, 52, 51, 43,106,233,227,147,175,138,138,202,105, 89, 86,182,232, 59, 74,235,172,172,242,123,169,205, 23,249,171, 80, -203,170,195,215,106, 29, 94, 27, 50,100,200,107,171,107, 40,165,141,154,205,226,241,120,191,121, 76, 85, 15,124, 66, 8,162,163, -163, 97,107,107, 11,137, 68, 2,161,240,183,197, 7, 11, 10, 10,112,235,214, 45, 60,121,242, 4,254,254,254, 0, 42,254,163,174, - 11,161, 80,248,193,230,205,155,173, 52, 26, 13, 30, 60,120,128, 78,157, 58, 65, 40, 20,130,207,231,255,198, 9,204,207,207, 71, -187,118,237,176,124,249,114,241,134, 13, 27, 62, 64, 61, 53,234, 24,134, 89, 48,123,246,108,135,170, 25,172,204,204, 76,116,236, -216,177,122,187,189,189, 61, 30, 62,124,136, 78,157, 58,193,213,213, 21, 65, 65, 65, 14, 97, 97, 97, 11, 0,124, 94,151,166, 64, - 32,224,248,250,250,190, 5, 0, 34,145, 8, 28, 14,231,153,165,165,165,189,163,163,163,200,210,210,242,181, 49, 30, 56,112, 64, -202,225,112,116,245,141, 29,168,120, 92,152,155,155,139,246,237,219, 67, 38,171,168,224,162, 84, 42,225,229,229, 5,185,188, 34, - 36, 77,173, 86,195,217,217, 25, 42, 85,253,161, 95,254,254,254,107, 91,183,110, 61,160, 79,159, 62, 66, 30,143,135, 71,143, 30, - 33, 32, 32, 0,225,225,225,104,214,172, 25,204,204,204,144,148,148, 4, 95, 95, 95, 92,191,126, 29,246,246,246,104,215,174,157, -176, 99,199,142, 55,254,143,189,243,142,111,170,122,255,248,231,100, 39, 77,247,222,165, 20,186,203, 94,178, 71,153, 45,130, 8, -136,162,160, 32,160,162, 32, 32,130, 40, 40,234, 23, 1,145,161, 32, 75,101, 20,217,203, 50, 11, 20, 16, 25,178, 4, 90,104, 11, -216, 22,186,210,116, 37,109,118,110,238,249,253, 65, 83, 75, 77,155, 20,240,251,133,159,121,191, 94,121, 53,185, 57,247,115,159, -115,115,155,251,228,156,231, 60, 79, 89, 89, 89,106, 78, 78,206,167, 13,216,201,113,116,116,196,169, 83,167,240,227,143, 63, 34, - 59, 59, 27, 5, 5, 5,112,114,114, 66,235,214,173, 17, 19, 19,131,206,157, 59, 35, 43, 43, 11,196,202,197, 68, 8,241, 13, 15, - 15, 79,254,253,247,223, 61, 41,165,216,188,121, 51,170,170,170,160,215,235,193,225,112, 32, 22,139,225,230,230,134,222,189,123, -195,203,203, 11,225,225,225,216,190,125,187,231,192,129, 3, 15, 86,143, 72, 21, 89, 59,175,110,110,110, 83,230,205,155, 23,228, -237,237,141,156,156, 28, 40, 20, 10,248,248,248,160,103,207,158, 1,199,142, 29,155, 2, 96,169, 53,141,103, 5,115,224, 59, 33, -132, 28, 61,242,195,176,240,166,229, 45, 90, 69, 58, 4,237, 78,246, 9,218,150, 92, 28, 11, 0,113,209, 62,105,195, 18, 29,238, -255,145,150,124,255,232,145,189,151,110,102, 98,183, 45, 83,219, 10,181,110, 71,202,177, 11, 3,218,180,106,203, 46, 90, 56, 35, -225,157,183,199,139,188,125,198, 65,118,111, 47,142,157,184, 28, 60, 99,250,155, 94, 95, 47, 89,119, 40,229,216, 5,142, 66,173, -251,216, 22,123, 35, 34,130,191,221,176,170,179,103,101,201, 78,220,190, 37,132,196, 41, 14, 97, 97, 17, 80, 42,149, 16,139,197, -226,151, 95,126,217, 52,123,246,108,181,179,179,179, 3, 33, 4,169,169,169,197, 0,250, 91,211,213,122,187, 81,147,193,200, 80, - 33,151,165,196, 73, 67, 76,101,194, 27,233,127,162, 95,124, 47, 89,215,142,113,255,153, 61,127,201, 71,225, 17,109,188,222, 24, -255, 25,255,139, 79, 95, 89, 13,130,110,150,116,110,102,209, 19, 49,205,136, 4, 64,194,252,207, 63,197,221,187, 89,110, 19,198, - 86,124,198, 19, 73,252,163, 66,186, 56,173,254, 49,117, 64,243,230,161, 77,166, 77, 30,126,224,155,239,190, 73, 64,173,145,173, - 13, 63,205,219, 71, 8,233, 99,203,185,253, 23,209,242,213,228,100, 84,221,187,103, 44,251,245, 87,109,159,239,190, 43, 9,234, -223,127,169,222, 96,240, 52,127, 85,112, 8, 1, 49,135, 78,176, 44,225,205,156,201,161, 60, 30,140,110,110, 99,103, 1, 17,214, - 52,167, 23, 22, 14,123,101,252,248,132,125,135, 15, 35, 52, 52,180,230,126,230,234,234,138, 25, 51,102,224,253,247,223, 23, 93, -189,122,181,195,206,157, 59, 59,124,189,120,177,207, 44, 96,152, 45,118, 30, 61,127,222,109,210,252,249,115, 90,181,107, 23,188, -105,203, 22, 81,179,102,205, 0, 0,119,238,220, 9, 95,248,213, 87, 33,113, 45, 90,200,254, 51,117,234,134,180,217,179, 99, 1, -252,218,144,102,209,233,211,250,157, 57, 57,227, 79,164,166,186,198,197,197, 1, 0, 50, 50, 50,188,151, 47, 95,254,102,236,240, -225,163,231,191,245,214,199,137, 90,109,133,179, 92, 46, 74,252,246, 91,222,214, 17, 35,172,106,154,237, 4,128,158,111,188, 49, -181, 91,175, 94, 49,195,198,143,119, 15, 14, 14, 38,142,142,142, 48, 24, 12, 40, 40, 40,112, 75, 75, 75,107,150, 92, 89,169,220, -115,254,252,230,117,213,197,226,255, 33, 44,250, 34,207, 2,230,145, 44, 75,239,153, 29,173,158, 7, 14, 28,160, 0,122, 38, 36, - 36,156, 2, 30,220,192, 77, 38,147, 77, 78, 22,143,199, 67,117,176,176,173, 6,161,164,164, 4, 37, 37, 37, 53, 83, 71,197,197, -197, 56,113,226, 4,178,178,178,192,231,243, 33, 16, 8, 96, 48, 88,175, 65, 43,149, 74,227,227,227,227,121,231,207,159, 71, 88, - 88, 24, 36, 18, 73,141, 93,230,135, 64, 32,128,159,159, 31,148, 74, 37,250,244,233,195, 95,177, 98, 69, 60, 26,112,180, 92, 92, - 92, 6,141, 28, 57, 82,104,126, 93, 85, 85, 5, 46,247,193, 15, 95,157, 78,135,170,170, 42,148,149,149,161,162,162, 2, 90,173, - 22,207, 61,247,156, 48, 57, 57,121, 16, 26,112,180,106,163, 86,171,171,138,139,139, 93,187,117,235,230,182, 97,195,134,140,231, -158,123, 46,178,246,251, 39, 79,158,212,106,181, 90, 62,135,195,177,169,142, 94, 82, 82, 82,205,185,207,207,207,199,234,213,171, -107,222,203,202,202,194,138, 21, 43,106, 74, 1, 52,244, 25, 69, 69, 69, 13,220,188,121,115,187, 77,155, 54,149,115,185, 92,100, -100,100, 96,203,150, 45,160,148,194,203,203, 11,106,181, 26, 50,153, 12,169,169,169, 96, 24, 6,142,142,142, 8, 8, 8, 16, 79, -158, 60,185,235,103,159,125,198, 7,240,105,125,218, 38,147,201,196,229,114, 17, 18, 18,130,185,246, 8, 50, 90, 0, 0, 32, 0, - 73, 68, 65, 84,115,231, 66,171,213, 66, 32,120,224, 95, 42,149, 74, 84, 84, 84,224,202,149, 43,200,201,201,129,181,155,140, 88, - 44, 30,190,105,211, 38,111,161, 80, 8,141, 70,131,202,202, 74,220,191,127, 31,185,185,185,218,226,226, 98,198,201,201,137, 19, - 18, 18,194, 17,137, 68,162,161, 67,135, 18,179,195,153,152,152,232,177,121,243,230,151, 96,197, 73, 34,132,120, 69, 71, 71,127, -244,230,155,111,214,204,109, 83, 74, 81, 84, 84,132, 97,195,134, 57,156, 61,123,118, 54, 33,100, 11,165, 84,222,144,206,179, 6, -165,148, 86, 84,196, 92,188,116, 44,163,197,238,100,159,160,220, 60, 83,151, 25, 31, 44,225, 1,192,218, 53, 11,186,236, 78,206, -255, 45, 42, 84,118,127,231,158,136,139,174,174,233, 13,126, 70,132, 16, 78,239, 30,126,131,125, 60, 92, 71, 14,123,254,121,250, -253,247, 75,219,190,243,246,120, 81, 72,196, 12, 0, 64, 0,223, 27,125,152,207,137, 90,115, 71,252,253,247, 75,219, 14,123,254, -197, 43,217,217, 57,107,250,244,244,223,126,226, 84,225, 47, 13,141, 24,122,123,136, 3, 28, 68, 42, 4,132,197, 32, 50, 90,138, -171,127,100, 96,215,142,115,136,142,237, 4,157, 78, 7,134, 97,164,131, 7, 15, 86,111,219,182, 77,155,153,153, 89,169,209,104, -122, 80, 74, 51,173,245, 63, 47, 47,157,141,244,237,100, 16, 72, 68, 76,165, 66,160,158,245,241,206, 17,109, 59,246,107,231,230, - 23,192,247,146,178,191, 12,236,219, 97,203,143,235,231,190,255,241,188, 45,104,223,161,223,115, 55, 51,126,141, 1,112,221,146, - 86,250, 29,154, 28, 23, 78,152,187,183,111, 39,228,230,228,228, 69,248,248,234,239, 84, 80,227,148, 89,235,250,118,235, 49,188, -101,179,232,238,194,155,233,167,200,220,153, 47,253, 60,127,209, 55, 47,163,218,217, 58,158,242,115,143,177, 99,207, 9, 1,212, - 59, 58,254,111, 67, 32, 18, 5, 58,134,132,240,178, 55,108,208,132, 13, 30, 92, 14, 0,122,131,193, 51, 59, 39,199,197,193,193, - 1,148, 82, 24,141,198,135, 98,136,205,113,195,113,145,145, 22, 71,198,235,106,102,127,242, 73,203,153, 51,103,162,168,168, 8, - 12,195,128,207,231, 63,212, 94,173, 86, 67,165, 82, 97,236,216,177,248,118,241,226, 78,182,104,154, 76, 38, 50,105,254,252, 57, - 31,206,153,211,108,226,196,137,156,218,223,189,238,238,238,216,185,107,151,112,229,202,149,129, 31,125,251,237,216, 87, 68,162, -187,214, 52, 75,154, 55,135,187, 76, 38, 49, 59, 89, 0, 16, 25, 25,137,213,171, 87,139,198,141, 27, 39, 28, 60,120,240,146,171, -173, 90, 45, 95,218,181,235,109,143,136, 8,103,161, 72, 20,104,235,249, 4,128, 74,173, 54,110,233,242,229,110, 23, 46, 92,128, - 76, 38, 67, 81,209,131,223,163,132, 16,180,111,223,158,188,250,234,171, 46, 77,131,130, 58, 88,254,148,158, 24,127,243, 69,158, - 21,106, 79, 21,154,121, 40, 70,171,186, 67,164,186,131, 53, 87,131,201,100,122,200, 97,177,230,104, 61, 10, 21, 21, 21,168,168, -168,192,250,245,235, 33, 16, 8,106,110,190, 0,160,215,235,173,238,175, 86,171, 91,248,251,251, 67,161, 80, 32, 34, 34,226,161, -145, 44,129, 64, 0, 30,143, 7,129, 64, 0,145, 72, 4,157, 78,135,224,224, 96,168,213,234, 22, 13,105,106, 52,154,214,238,238, -238, 0, 30,220, 96,117,186, 7,223,121, 58,157,174,198, 94,189, 94,143,242,242,114, 84, 85, 85,161,178,178, 18, 42,149,170,141, - 45,253,101, 89, 22, 55,110,220,184, 19, 25, 25,217,154,203,229,194,209,209, 81,170, 82,169,106, 98,139,202,202,202,176,113,227, - 70,213,107,175,189,230,185,127,255,126,171,142, 22, 33, 4,239,190,251, 46, 68, 34, 17,212,106, 53,190,255,254,123,188,247,222, -123, 16, 8, 4,168,172,172,196,234,213,171, 49,109,218, 52,240,120, 60,232,245,122, 44, 95,190,188, 94,173,244,244,244,236,243, -231,207,183,105,219,182,173,219,158, 61,123,228,125,251,246,245,234,223,191, 63, 36, 18, 9, 52, 26, 13,140, 70, 35, 58,117,234, -132,168,168, 40, 20, 23, 23,227,208,161, 67, 37,225,225,225,158, 23, 46, 92, 96,139,138,138,114, 27,178,179,182,243,196,227,241, - 96, 50,153, 32,147,201, 80, 81, 81, 1,185, 92,142,130,130, 2,228,229,229,129,199,227,193,218,143,121, 15, 15,143, 23,227,226, -226,184, 0, 32,145, 72,208,186,117,107,204,153, 51,135,209,104, 52, 35, 1, 28,170,110, 54,112,221,186,117,123,206,156, 57,195, -243,247,247,199,173, 91,183,224,229,229,197, 19,139,197, 86, 29, 45, 95, 95,223,159,126,249,229, 23,119,179,115,109, 62,207,106, -245,131,143, 99,216,176, 97,238,155, 54,109,250, 9,192,160, 6, 13,125, 6,113,149, 64,208, 58,206, 89,177, 45,185, 56,118,198, - 7, 75,120, 81,113, 15,126,188, 78,152, 8,222,215,139,167,199,142, 30,226,124,192, 85,162,108,112,148, 25, 0, 6,198, 7,173, -124,254,249,190,156,151, 71, 37,102, 9, 4,174, 97,107,214,126,230,237,237, 51,238,175, 6, 28,103,120,120, 58, 35, 44, 68, 72, -118, 30,184,233, 61,107,246,231,186,164, 77,223,220,253,121,107,242, 0, 33, 63,165, 31,128,183,234,211,206,188, 83,177, 95,173, - 19, 71, 43, 75,175, 17,119,159, 46,104,221, 42, 18,222, 94,229, 88,247,211, 54,132, 54,109, 15,157, 78, 7,103,103,103, 7,147, -201,100,224,114,185, 73,182, 56, 89, 0,112,252,120, 5, 27, 27, 91,161,231, 86,178,204, 59,239,125,253, 66,223,129,207,199,244, -238, 29,207, 30, 77, 57,106,232,210,198, 80, 56,176,127,107,217,225,148,149, 89,133, 5,127,134,199,182,232,138,244,180,212, 1, - 0,185, 1, 88,190, 96,111,100,209,195,205,154,145,212,109,219, 38,176, 26,246,138,228,139, 47,175, 15, 76, 72, 24, 19,215,189, - 91,119, 54,229,216, 9,189, 16, 37, 55,157,187,118,206,127,103,252,192, 61, 63, 36, 45,239,119,248,208, 79,205, 21,202,220,228, -159,126,170, 63, 4,225,223,136,137, 97,124,120, 34, 17, 71,158,154,202,180, 24, 55, 78, 7, 60,248,127,116,112,112,192,190,125, -251, 32, 20, 10,107, 30, 2,129,160,230,185,143,143,143,121,241,149, 77,154, 0, 80, 88, 88,136,162,162, 34,184,184,184,192,203, -203, 11, 69, 69, 69, 56,123,246, 44, 50, 51, 51,193,231,243, 49, 96,192, 0,112,234,137,109,174,171, 57, 98,198,140,190,209, 45, - 90, 4,215,117,178, 0,192, 96, 48,160,172,172, 12, 67,134, 12,225, 28, 58,116,200,247,240,189,123,207,127, 2,252, 45,216,188, -182,102,155,132,132, 82,217,206,157, 22,143,221,182,109, 91,242,219,111,191,137, 6,244,239,255,254,244, 47,191, 92,249,237,166, - 77,247, 77, 12,227,219,152,190,115, 56, 28, 14, 33, 4, 65, 65, 65, 40, 43, 43, 67, 85,213,131, 25,108, 71, 71, 71,184,185,185, -193,104, 52,130,165,148,111, 73,243, 73, 81,159, 47,242, 44, 96,118,170,136,133,204,240, 60, 0,168,238, 20, 0,244, 52,191, 65, - 8, 1,203,178, 54, 57, 89,124, 62,223,106,204,149, 13, 70,254,109,155, 45,142,150,217, 86,177, 88, 92,243,143, 86,219,193, 50, -219,201,225,112,192,229,114,173,222,196, 1,128,101, 89,110,101,101, 37,118,237,218,133, 30, 61,122,212, 76, 75, 41, 20, 10, 84, - 84, 84, 64,161, 80, 64,171,213, 34, 59, 59, 27,199,143, 31, 71,243,230,205, 1, 27,147,191,222,189,123,247, 82,104,104,104, 59, -243, 77,188, 87,175, 94,129, 27, 54,108, 40, 24, 52,104,144, 63,165, 20, 31,127,252,113, 73,167, 78,157, 60,107,223,228,173,193, -229,114,113,246,236, 89, 52,111,222, 28,148, 82, 8, 4, 2,100,100,100,192,219,219, 27, 44,203,130,199,227, 65, 46,151,195,201, -169,225, 28,137, 55,110,220,120,253,141, 55,222, 40,112,113,113,105, 89, 90, 90, 90, 40, 18,137,186,157, 62,125, 58,200, 96, 48, -192,217,217, 25,206,206,206, 56,120,240, 32, 92, 93, 93, 49,117,234,212,123, 26,141,230,172, 84, 42,245,209,104, 52,215,138,138, -138,108,154,246, 49,195, 48, 12, 84, 42, 21,202,203,203, 81, 86, 86, 6,165, 82, 9,173, 86,107,213, 70, 75,116,235,214, 13,201, -201,201,220, 5, 11, 22,252,112,247,238,131, 31,134, 97, 97, 97,152, 58,117, 42, 55, 32, 32, 0,217,217,217,184,116,233, 18, 12, - 6, 3, 40,165, 13,254,243,242,249,252, 94,211,167, 79,239, 26, 28, 28, 76, 12, 6, 3, 88,150,133, 78,167,131,249,249,189,123, -247, 16, 29, 29,205, 9, 9, 9,121,142, 16,210,203,150,133, 21,118, 30, 32,187,183, 23, 1,124,111,128,227, 12,170,217,139,210, -146, 71, 43, 27, 89, 92, 92,252,229,204, 79,126, 27,247,237, 34,131, 79, 94, 33, 16, 25, 55, 20,225, 49,125,240,250,171, 12, 22, - 44,222,133,224,144, 72,228,230,230,162, 87,175, 94,130,130,130,130, 55, 0,204,176, 85, 59, 37,229,188,233,232,193, 67,195, 71, -188, 52,166, 93,124,252, 32,230,200,145,131,184,113,237, 72,218, 27, 47,189, 88, 76,217, 42,226,238, 42,185,146,113,235, 98,120, -203,214, 61,161,103, 76,221,128, 79, 23, 1,168,247, 75,229,206, 29,170,255,236,179,207, 56, 7,246,254,244,234,203,163,199,182, -234,211,167,159,241, 72,202, 47,184,116, 46,229,143, 37,139,222, 60,181, 96,249,246, 94,125, 7,188, 24,235,229,115,246, 96, 92, -132,110,124,144,135, 75,163, 82,166,252,155,224,137,197, 44,170,191, 23, 57,132,128, 82,250,144,147, 85,215,209,226,112, 56, 86, - 7, 0,106,107,154,161,148,214,252,160, 94,179,102, 13, 68, 34, 17,132, 66, 33,248,124,190,213,240,139,218,154,105,217,217,189, - 55, 38, 37,137, 44, 57, 89,165,165,165, 40, 45, 45, 69, 85, 85, 21, 70,141, 26, 37,248,236,226,197,182,245,200,213,104, 6,251, -249,233,164, 18,137, 44, 61, 61,221, 63, 38, 38,230, 33,123,149, 74, 37, 36, 18, 9,146,182,108, 17, 36, 38, 36,188,221,231,224, -193, 37, 0, 26,204,127,101,169,239,132, 16,120,123,123,195,205,205, 13,132, 16, 48, 12,131,162,162, 34,164,165,165,225,226,197, -139,224, 18,210,232,116, 70,141,193,146, 47,242, 44, 97,201,201, 2,254, 26,209,178,120, 53, 54,198,209,226,114,185,143, 60,170, - 85, 31,182, 76, 29, 58, 56, 56, 92, 47, 40, 40,232, 18, 16, 16, 0,134, 97,106, 28,173,186, 83,135,192,131,209,143,171, 87,175, -194,193,193,193,226,112,127,109, 77, 74,233,115, 29, 58,116,192,238,221,187,145,154,154,138, 63,255,252, 19,106,181, 26, 58,157, - 14, 26,141, 6,105,105,105, 96, 89, 22,113,113,113,144, 74,165, 86, 53, 1, 64,165, 82, 21,242,249,252, 72,137, 68, 82,179,205, -207,207, 15,165,165,165,172,209,104,196,198,141, 27,149,190,190,190, 82,137, 68, 98,179,227, 74, 8, 65,113,113, 49, 2, 3, 3, -107, 98,180, 42, 43, 43,225,237,237,109,118, 44,160,211,233,224,228,228,100,117,234,144, 82,170, 5, 48,189,150,118,251, 17, 35, - 70,252,188,109,219,182,166,199,142, 29,195,133, 11, 23,224,229,229,133,255,252,231, 63,127,230,228,228,188, 76, 41,189,104,147, -145,141,192,150,107,168,180,180,116,215,245,235,215,159,235,208,161, 67,205,183, 68,175, 94,189, 72,175, 94,189, 60,205,175,213, -106, 53,228,114, 57,126,255,253,119, 28, 59,118, 12,132, 16,100,101,101,153, 52, 26,205,207, 13, 28, 91, 16, 18, 18,178, 97,206, -156, 57,142, 12,195,212, 92,219, 18,137, 4, 98,177, 24, 2,129, 0, 92, 46, 23, 57, 57, 57, 24, 50,100,136,203,119,223,125,247, - 19, 33,164, 25,165,212,250,133,250,140, 80,161,129,225,234, 13,165, 75, 92,180, 79,218,218, 53, 11,186, 76,152, 8,243,212, 33, - 19, 23,237,157,118,245,134,204,165,157, 55, 12,174,194,134,117, 14, 29,187,255,142,222,120,104,240,161,195, 39, 71,126,240,254, - 84,126, 88, 88,116,241,177, 19,151,131,251, 48,159, 19, 15, 79,103,148,150, 40,145,115, 79,134,187,185,122, 26, 22, 22, 93,124, -233,247,235,162,197, 75,151,133,171,212,218,237, 39, 78, 21,254,210,144, 54,165, 84, 75, 8, 25,186,100,133,232,212,152, 55,218, - 11, 37, 18,127,148,149, 92, 71,112,176, 23,134, 36,182,196,143,155,206,194,197,197, 29, 62, 62, 62,224,112, 56, 82, 91,251, 94, - 82, 82, 66,118,109,253,117,220,107, 99,223,236,212,191, 95, 2,115,248,200, 1, 94,234,209,253,103,127, 90,251,209, 30,202, 85, - 57, 16, 90, 41,105, 18,234,123,237,206,237,171, 47,247,142, 31, 5,137,192,169, 57, 16,101,241,130,173, 89, 96, 64,113,143,195, -129,248,181,177, 19, 58,247,239,255, 60,115,228,200, 94, 28, 57,184,233,252,188,121, 77, 14,254,153,191, 69,112,238, 98,158,120, -232,240,183,202,147, 15,221,212,191, 56, 56, 52,211, 95,218,250,169,200,161,247, 52,193,229,241,100,140, 78, 23, 20,216,191, 63, - 87,157,155,203,119,244,241, 97, 0,192,104, 52, 90,117,180, 0, 88,156,130,174,171,105,171, 45,106,181, 26, 44, 96,209,217,168, -171, 89, 84, 92,220,164,250, 71,120, 13, 70,163,177,198,201, 42, 45, 45, 69, 69, 69, 5,164, 82, 41,228, 58,157,197, 41,206,186, -154,253, 58,118,220,248,217,167,159,206,216,185,107,151, 0,248,203,201, 50, 63,248,124, 62, 22, 46, 90, 36,120,239,131, 15,222, -122,155,199,155,210,152,243, 9, 60,248,209,206,229,114,193,227,241,144,155,155,139,123,247,238, 33, 55, 55, 23,185,185,185,144, - 72, 36,160,245,156,207, 39,197,179, 26,159, 5,252, 53,117, 88,123, 10,209,166,244, 14,141, 9,134,183,213, 49, 48,153,234, 77, -164,252, 55,108,113,180, 84, 42,213,177,227,199,143,119, 28, 58,116, 40,239,252,249,243,240,245,245,173,113,180,204,127,205,211, - 81, 14, 14, 14,216,179,103,143, 65,165, 82, 53, 88,159, 73,173, 86, 31, 63,120,240, 96,187,185,115,231,242, 95,127,253,117,164, -167,167, 99,226,196,137,168,168,168,128, 82,169, 68,105,105, 41,212,106, 53, 58,118,236, 8,177, 88,140,107,215,174, 25,213,106, -117,131, 41, 14, 40,165,180,184,184,184,202,203,203,203,175,238,123,195,135, 15,247, 89,181,106,149,250,214,173, 91,198, 46, 93, -186, 56, 3,182, 57, 28,102,182,110,221, 90, 51, 82,151,153,153,137, 85,171, 86,213,196,100, 93,190,124, 25, 95,127,253,117, 77, -238,179,198, 64, 41,189, 24, 27, 27,203, 24,141, 70, 52,111,222, 28, 1, 1, 1,208,106,181, 88,182,108, 25,243, 79, 56, 89,182, -162,213,106,119,142, 25, 51,230,195, 43, 87,174,248,241,120,188, 7, 67,218,213,253, 51, 24, 12,184,125,251, 54,210,210,210,112, -235,214, 45,148,149,149,213,252, 16,184,122,245,106,185,209,104,220, 94,159,174,151,151,215,199, 63,254,248,163,175,131,131,195, - 67,215,179,121, 52,212, 60, 74, 42,151,203,225,234,234,138, 62,125,250,120, 31, 63,126,252, 99, 0,115,255, 27,253,254,167, 33, -132,144,222, 61,184,237,223,123,103, 40,134, 37, 58,220,223,157,156,255,219,215,139,167, 87, 7,195,123,167, 13, 75, 12,184,255, - 71,134, 43,134,191,176,183,253,137, 83, 36,175,161, 88,186,234, 24,171,125, 29, 59,186,167,238,222,191,255,167,217, 51,223,191, - 60, 99,250,155, 94,106,205, 29,113, 88,136,144, 0,192,221, 92, 61,189,150,206,106,191, 94,242,254,229, 5,139,190,227,200, 74, - 43, 38, 94,184, 80,127,122,131,218,206, 75,108, 4,196, 97, 81, 61, 10,194, 35,186,134,158, 63,155, 4, 71, 7, 13, 34,163,218, -163,127,191,231,144,122,242, 42,138,228, 90, 20, 22, 22, 66,167,211, 53,152, 46,225,214,181, 61,175, 82, 66,131, 9, 37,247, 8, -135,138, 95, 29, 51,190, 91, 66,194,243, 52, 57,121, 63,179,119, 79,210,153,237,155, 87,236,228, 8,248, 60,141,222, 69, 79,136, - 86, 1,206,141,244, 42,213,131, 31, 52,124,145,160,254,225,215,234,196,174, 49,177, 81,190,175,142,153,232, 50,104,224, 16,122, -240,224, 94,118,251,182,141,169,219,215,183, 72, 98, 57, 74, 65,225,125,181, 72,161, 52, 42, 40, 17,186, 86, 41, 89,181,236,110, - 51,173,127,194,240,255, 55, 78,251,147,194,160,211,229, 85,221,191,239,231,222,163,135,232,246,167,159, 58,248,116,236,168, 37, -213, 49,196, 13, 57, 90, 92, 46, 23,224,112, 44,126,233,213,213,180,213, 22,141, 70, 3, 22,176,184, 72,201,154, 38,195, 48, 15, - 57, 89,102, 71,171, 26,155,236, 92, 59,111,222,249,224,254,253,203, 78,158, 60,233,211,179,103, 79, 82, 89, 89,137,202,202,202, -135,156, 45,127,127,127, 18, 19, 23,231,176, 53, 53, 53,204,210, 23,147,165,243,105, 75,223, 57, 28,206, 63,238,104, 61,203, 88, - 26,201, 50,211, 96, 9, 30,243,136,150, 45,142,150,141, 35, 90, 70,163,209, 8,111,111,111,148,148,148,212,123,227,231,112, 56, -144, 72, 36,230, 57,226, 6, 87,222,233,116,186,101, 51,102,204,152, 60,112,224, 64,207,200,200, 72,200,229,114,248,248,248, 64, - 44, 22,215,196,142,153,245, 46, 95,190,140, 31,127,252, 81,169,211,233,150, 89,209, 92,186,104,209,162,119,134, 13, 27,230,238, -235,235, 11, 55, 55, 55, 92,187,118, 13,110,110,110, 80, 42,149,200,200,200,128,147,147, 83, 77,220,206,254,253,251, 43,117, 58, - 93,131,113, 63,106,181,154,158, 62,125,218,224,228,228,116, 77, 46,151,115,203,202,202,120,229,229,229, 60,165, 82,201, 87, 40, - 20,252,195,135, 15,123,186,184,184,168, 79,156, 56, 33, 15, 14, 14,230,254,249,231,159, 92,163,209,104,213,123, 37,132, 96,202, -148, 41, 16, 8, 4,208,233,116, 88,182,108, 25,102,204,152, 81, 19,147,181,104,209, 34,204,153, 51,167,198,113, 94,183,110,157, - 53,201,135,160,148,194, 96, 48,192,104, 52,194,104, 52,218,228,252, 62, 14,182, 56,236,148,210, 34, 66, 72, 98,135, 14, 29,142, -238,216,177,195,163, 58, 39, 25,100, 50, 25,100, 50, 25,228,114, 57,170,170,170,192, 48, 12, 2, 2, 2, 32,147,201,176,119,239, - 94, 69,101,101,101,255,134, 86, 28,114,185,220, 49,221,186,117,227,213,181,193,252, 43,207,236,188,139, 68, 34, 20, 20, 20,160, - 87,175, 94,194,147, 39, 79,142,193, 51,238,104,153, 29,152,232,112, 8,250,245, 31, 39,136,142,237,172,255, 35, 45,249,126, 84, -168,236,254,232, 33,206, 7, 0,224,234, 13,153,203, 31, 25,174,136,142, 77,164,253,250,187,181,147, 21,173,109, 17, 19, 65, 12, - 13,149,235, 1, 0, 23, 7,209,136,190,241, 29, 11,156,164, 82,206,215, 75,214, 29,250,254,251,165,109,119, 30,248, 43,189,195, -215, 75, 30,164,119,232, 27,223,145,189,117,243,214, 8, 0,245,167,119,168,227,188, 36, 38, 14,190,242,227,134, 31,113, 43,237, -132,255,135, 83, 90, 10,203,100, 70, 72, 28,131,208,174,181, 15,214,110,184,142, 63,254,248,163, 72,175,215,247,106,168,239,148, -208,224,180,244, 27, 17, 45, 98, 99,124, 95, 29, 51,193, 57, 49,113, 8,146,147,247, 97,243,198,245,167, 95, 28, 53,236,135,252, -114, 37,215,155,239, 32,112,160,172,144, 43,112,225, 9, 68,146, 98,189,254,193, 26, 8, 62, 95,236, 12,140, 96, 27,152, 57,196, -164, 9,163, 93,122,199, 15,193,129,131,251,176,121,227,218, 83,159,196, 14, 95, 31,218, 38,154,116,108,187,248,173,208,166,161, - 33,170, 42,153,146, 67,132, 6,173,150,117, 90,188, 49,231,155,187,115,198,220,189,114, 99,196, 18,251,170,195,135,184,182,121, -208,160, 14,239,221,185, 35,240,234,218, 85, 82,144,154,234, 64, 30, 84, 34,105,208,209,226,241,120,160,245, 79,117, 61,164, 73, - 54,109,226, 0,104,112, 17,150, 64, 32,128, 90,173,134, 17,168,239, 75,240, 33, 77,191, 35, 71,238,223,185,115, 39,220,221,221, -253, 33, 39,171,172,172,172,230,185, 86,171,133, 90,173,134, 68, 34, 73,179, 69, 83,118,250,180,246,171, 41, 83,230,190, 60,106, -212,138, 99,199,143,139, 61, 60, 60,160, 80, 40, 30,114,180,244,122, 61,122,247,233, 35, 88,116,229,202,171, 0,230,217,114, 62, -125,122,245,178, 26, 15,204,229,114,193,254,195, 83,135,207, 58,150, 70,179,128, 6,226,138,204, 78,147,173,171, 14, 45,221, 32, - 9, 33,241,117, 54,205,105,215,174,157, 54, 51, 51, 19,193,193,193, 53,206, 74,237, 99, 58, 59, 59,195,213,213, 21,151, 47, 95, -198,151, 95,126,169, 1, 48,167, 33, 77, 74,105,165, 90,173,126,169,111,223,190, 26, 30,143,135,168,168,168,154,252, 89, 44,203, - 66, 40, 20, 66, 42,149,226,202,149, 43, 24, 60,120,176, 90,173, 86,191, 84, 55,135,150, 5, 77,133, 90,173,126,165, 95,191,126, -234,244,244,116,116,235,214, 13,127,252,241, 7,170,170,170, 80, 85, 85,133,236,236,108,196,196,196, 64,173, 86, 99,213,170, 85, - 26,181, 90,253, 10,165, 84,209,144,102,101,101,229,224, 25, 51,102,112,127,254,249,231,208,128,128,128,216,246,237,219, 71,246, -233,211,167,217, 11, 47,188, 16, 50,104,208, 32,191,240,240,112,109,255,254,253,189, 6, 14, 28,232,165, 86,171,249,191,253,246, - 91,161,209,104, 28,104,229,124, 2,120,224,156,100,102,102,214, 76, 21,242,120, 60,148,148,148,212,100,238, 55,127, 41, 89,114, -132,235,211, 52,195,178,108,141,131,101,118,184,172,221, 3,234,209,180,122,227, 16, 10,133,230, 17,207,191,181,181,240, 25, 93, -189,121,243,102,223, 30, 61,122, 92, 29, 55,110, 92,101, 81, 81, 17,156,156,156, 16, 22, 22,134,136,136, 8,120,122,122,194, 96, - 48, 96,207,158, 61,170,189,123,247, 94, 87, 40, 20,189,234,230,208,170,171,201,225,112,178, 45,125,201,154, 71,179,204,142,150, - 88, 44, 70, 64, 64,128,249,220,102,219,208,247,199,226, 31,215,172,118, 96,250,244,238,223,116, 80,194, 80,151, 61,251,206, 10, - 87,172,220,123,189, 93, 60,214,121, 52, 81,238,247,104,162,220,223, 46, 30,235, 86,172,220,123,125,207,190,179,194, 65, 9, 67, - 93,250,244,238,223, 52, 61,237, 86,228, 67,117, 15, 45,216, 41, 22,139, 59,119,235,218,174,252,228,153, 83,236,130, 69,223,113, -122,247,122,241,202,250, 31,246,236, 89,255,195,158, 61,189,123,189,120,101,193,162,239, 56, 39,207,156, 98,187,117,109, 87, 46, - 22,139, 59,219,210,247, 73, 19, 70,187, 36, 12, 26,130,228,228, 61,204,206,173,171, 22,109,219,149,213, 99,252,228,211,178,204, -204, 63,104,113,222, 17,240, 57,185,184,121,243,166, 66,175,215,247,178, 20, 8,111, 73,115,226,155,163,107, 59, 89,191,122,248, -118, 91,119,243, 38, 76, 41, 41,191, 24,143, 31,191,162,249,245,106,177,226, 82,122, 73, 89,129,188,236, 79,165,178, 84,207,178, - 38,152, 76, 38,238,103,159, 61, 8,216,173,239, 51,234,210,165, 39, 78, 28,219,130,141, 27,214, 40, 88, 22,218,225, 59,118,152, - 70,140,248,148,134, 52,105, 18,146,180,117, 11, 73,124,126,168, 11, 5,216,193,195,134,184,254,188,237,103,210,180,121,211, 38, - 97, 97, 15, 82,218, 60,147,215,210, 63,160, 57,143,210,114,101,110,238,169,203,223,125,167,243,121,233, 37,119,161,143,143, 51, - 76, 38, 98,254,126,175,239,193,227,241, 30, 26,129,105, 72, 51,192,211, 51,127,255,254,253,136,136,136, 64, 64, 64, 0,106,199, -200,154, 19,114,123,120,120, 96,215,174, 93,160,192, 37, 91, 52,219,132,134, 94, 94,248,213, 87,122,150,101, 81, 94, 94,254,183, -209,172,242,242,114,176, 44,139,131, 7, 14,232,149, 85, 85, 27,109,237,123, 47, 46,183,234,229,238,221, 23, 36, 36, 36, 24,238, -220,185, 3,150,101, 81,123,100,171,184,184, 24,142,142,142,208,234,116, 65,132, 16, 7, 91, 52,139, 15, 31,150,214,179,166,163, -134,186, 35, 90,255,196,231,254, 44, 99,142,207, 50, 63,106, 59, 93, 13,142,104, 49, 12,131,160,160,160,135, 74,186,112, 56,156, -135, 30,141, 89,113, 72, 41,221, 68, 8, 57,210,191,127,255,185,157, 58,117,154, 52,119,238, 92,110,100,100, 36, 20, 10, 5,220, -220,220,224,237,237,141,140,140, 12,236,223,191,223, 84, 82, 82,178, 26,192,124, 91,150,208, 83, 74, 83, 9, 33,137, 45, 91,182, -220, 54,107,214, 44,151,126,253,250,241,131,130,130, 64, 41,197,149, 43, 87,176,123,247,110,195,250,245,235,149,213, 78,150, 77, -193,203,148,210,163,132,144, 23, 7, 14, 28,152, 52,102,204, 24, 39,147,201,196,207,206,206,134, 78,167,131,209,104,196,189,123, -247, 12,201,201,201, 85,106,181,122, 52,165,244,168, 13,122,151, 9, 33, 49, 41, 41, 41, 99,126,251,237,183, 47,199,141, 27,231, -209,167, 79, 31, 1,195, 48, 56,115,230,140,188, 77,155, 54,222,197,197,197,134, 93,187,118,149,106,181,218, 57, 38,147,201,166, - 18, 60,132, 16, 40,149, 74,120,122,122, 66,167,211,129,101, 89,232,245,122, 56, 58, 58,214,148, 77,162,148,162, 49,193,245,181, - 97, 24,134,107, 48, 24, 48,106,212, 40,176, 44,139,101,203,150,129, 97,152, 70,139,185,184,184, 92,186,122,245,106, 98,235,214, - 15, 18,190,115,185,220,154,107, 72, 36, 18,193,211,211, 19, 30, 30, 30, 72, 78, 78, 6,159,207,111, 48,203,190,153,234, 76,239, -109, 8, 33,157,175, 95,191,254, 26,128,214, 6,131, 33,192,100, 50, 17, 14,135, 83, 72, 41,189,166, 84, 42,127,176,181, 4, 79, -113,113,241,151, 99,199,142,109,179,101,203, 22, 71, 30,239,175,127, 13, 30,143, 7,145, 72, 4,115,114, 76, 74, 41,244,122, 61, - 62,254,248, 99,165, 74,165,250,178,177,231,226,105,165, 93,251,142, 88,187,106,185,227,241, 19, 71,228, 55,179,176,187,118, 10, - 7, 87, 33,112,226, 20,201,147, 21,173,109, 81,112,255,190, 99,187,246, 29,109,210, 52,234, 13,165,175,140,158, 22, 92, 93,130, -231,227,236,236,156, 53, 73,155,190,185, 11, 0,139,151, 46, 11,151,149, 86, 76,188,117,243,214,136, 53,107,182,118, 54,234, 13, -165,182,104,254,229,188, 36, 41, 64,161,165,148, 94, 32,132,132, 14,126,233,240,156,230, 77,157,159, 47, 46,213,228, 87, 85,169, -223,165,148, 90, 92, 50,111,137,174, 93,122,224,196,209,159,177,121, 99,146,146,178, 92,173,167,167, 39, 5,128,155, 55, 61,233, -205,155, 21,244,175,184, 98, 87, 21,159,254, 49,127,218,187,125,166, 41,148,101, 75,151,174,108, 56,113,109,203, 86,157,208,178, - 85, 39, 76,126,247, 35,151,152,216,168, 96, 0,216,177,131,154,226,194,201, 47,115, 63,249,244,249,249,243, 63,133,178, 82, 7, -115,185,158,140, 27,233, 7,238,220,161,182,173, 2,250, 23, 49,151, 97, 46, 96,218,180,112,117, 89,153, 87,215, 15, 63,244,228, -125,240, 1,167,161, 96,248,218,255,191,182,104, 94,188,118,237,192,196,241,227,243,231,205,157,219,127,245,154, 53,146, 22, 45, - 90,160,168,168, 8, 81, 81, 81, 8, 8, 8, 64, 74, 74, 10,118,109,223,174,170,168,172,156, 3,224,123, 91, 52, 55, 29, 60,152, - 17, 25, 27, 91,178,102,205, 26,255,132,132, 4,162, 82,169,160, 80, 40,160, 80, 40,160,211,233, 80,157, 16,154,102,102,101,221, - 52, 26,141,171,109,209,236,250,225,135,158, 38,185, 92, 60,191, 99,199, 60, 1,203, 46,124,113,216,176, 25,243, 63,255, 92,212, -180,105, 83,162,211,233,106, 70,181, 12, 6, 3, 28, 29, 29, 13,122,189,222, 3,192,223, 70,171, 44,105,138,214,175,103,228,114, - 57,188,188,188,106,210, 53,213,206, 75, 88, 89, 89, 9, 74,169, 61,153,238, 35, 64,234,187,151,187,187,187, 95,226,241,120,129, - 64,195,181,243,106,111, 51, 26,141,121,114,185,188, 93,173, 54,241,148, 82,139,241, 80,132,144, 48, 0,255,233,221,187,247,139, -211,167, 79, 39, 39, 79,158,196,222,189,123,233,221,187,119,119, 2,152, 83,223,151,164, 21, 77, 39,145, 72, 52, 85, 42,149,198, -155, 83, 56, 56, 56, 56, 92, 87,169, 84,199,116, 58,221,178,250,178,193, 91,209,116, 22,137, 68, 83,164, 82,105,223,202,202,202, -214, 0,224,228,228,116, 85,165, 82,165,232,116,186,229,180,158, 66,213, 86, 52, 37, 46, 46, 46, 95,122,122,122,190,242,193, 7, - 31,120,156, 62,125,186,240,196,137, 19,130,138,138,138, 45,122,189,190,222,162,210,150, 52, 61, 60, 60, 46,113,185,220,192,127, -226, 51, 2,128, 86,173, 90, 37, 15, 30, 60, 56, 97,244,232,209, 48, 26,141,248,254,251,239,145,146,146,114, 32, 43, 43, 43,177, -190,125, 44,105, 18, 66, 60, 3, 3, 3, 79, 78,154, 52, 41,100,212,168, 81, 14,110,110,110,224,241,120, 80,169, 84,184,125,251, - 54,174, 92,185, 66,247,237,219, 87,117,249,242,229, 60,181, 90,221,147, 82, 90, 98, 77,243,113,177,164,201,231,243,123, 4, 5, - 5,109,157, 55,111,158, 83,223,190,125, 37, 30, 30, 30,224,114,185, 48, 26,141, 40, 44, 44,196,141, 27, 55,112,228,200, 17,213, -206,157, 59, 85,165,165,165,163, 40,165,167,254, 23,118, 62, 73,205,152, 8,242, 73,157, 66,209,245,102,123,111,168,173, 45,118, -246,233,233, 63,100,196,139, 3, 7, 0,192,142, 93,135, 14, 31, 63, 89,208, 96, 81,233,134,236,180,102,171, 45,154,209,225,220, -121,105,233, 55, 30, 74,104, 25, 27, 19,151, 25,221, 98,216, 23,182,104,153, 51,195,215,237,123,173,108,251,127, 81,103,154,213, - 92,120,250,163, 57,179,241,159, 47, 23, 96,223,142, 61, 7,210,239,208,154, 50, 65,207,226,181,244, 79,106, 18,242,160, 8,178, -131,159, 95,247,101, 44, 59,251,143, 27, 55, 28,107,255, 96, 51,143, 60,215,254, 81,233,239,239, 95, 92, 80, 80,224, 99,139,102, -226,183,223, 26,212, 82,169,104,246,194,133, 61,170,180,218, 30,243,231,207,231, 93,188,120, 17,171,190,251,142,209,230,229, 37, -201,129, 41,150,102, 67, 26,210, 12,153, 50, 69, 60,115,213,170,215,195,154, 55,247,126,237,181,215,248,124, 62, 31, 42,149, 10, -247,239,223,199,209, 35, 71,244,233, 55,111,166, 43,149,202,231, 41,165, 5,182,106, 38,126,251,173,193, 53, 44, 12, 14, 94, 94, -244,120,106,170,203,196,169, 83, 39, 53, 9, 13,117,233, 63, 96, 0,223,217,217, 25,229,229,229,200,206,206,198,158, 61,123,138, -171,170,170,252, 41,165, 38, 91, 52,147,126,251,173,229,193, 83,167,134,127,241,197, 23,194,184,184, 56,184,184,184,160,178,178, - 18, 55,110,220,192,169, 83,167,116,171, 87,175, 86, 40, 20,138, 73, 12,195,236,175,207,206,127, 59,245, 77, 29,214,235,104, 61, -161,131, 90,253, 32, 8, 33,237, 0,124, 82,253,242,115,106,189,102,224, 51,251, 69, 97,161, 77,176,187,187,251, 90,173, 86, 75, - 53, 26,205, 68, 74,233,189,167,205, 78, 66, 8,175, 93,187,118,171,138,139,139, 59, 83, 74,225,226,226,114, 54, 45, 45,237,109, - 74,105,189,115,245,245,105, 18, 66,184, 0, 58, 59, 58, 58,118,116,114,114,234,161,211,233,162,171,167,223,110,170, 84,170, 83, - 6,131,225, 2,128,179,148,210,191,173,152,248,111,246,189,218,206,190,254,254,254,227, 89,150,109, 78, 8,113, 53,153, 76, 48, - 26,141, 21, 44,203,222, 86, 40, 20,235, 1,164,252,175,237,124, 82,154,177,205,201, 11,148,131,232,154, 55, 27,136,187,170,235, - 64, 16, 22, 55,211,110,211, 61,182,218, 73, 8,225, 12,140, 15, 90, 9, 60, 88,153, 72,173,148, 50,122,200,209,178,193,121,177, -133,135, 52,155,243,198, 82, 66, 31,210, 36,148,220,139,106,249,194,102, 91,180,234,115,180,108, 37, 54,146,244, 0, 69,103,150, -226,194,205, 44,122,162, 62, 59,159, 20,255, 31, 52, 23, 16,226,254,157,155,219, 89, 14,143,231, 11,128, 83, 61,250,194,178,132, -152, 40, 33, 76,237,233,173,218, 63, 44,173,105, 26,128, 22,124,145, 40,200,196, 48, 62, 69,128,227, 65,147,169,173,150,210,170, - 64,224,147, 43,148,102, 60,138,157, 6,160, 5, 87, 36, 10, 62, 72,233, 16,185, 84,218,178, 88,163,241, 2, 64, 29,165,210,155, - 74,149,106,163, 86,171, 93, 89,119,230,194, 22, 77,129, 72, 20,104, 98, 24, 31, 0,224,240,120,197,219,116,186,160, 60,103,231, -215,180, 58, 93,136,163,163,163, 81,175,215, 43,181, 90,237,104,163,209,120,188, 49,125,191,205, 48, 49,191,113, 56,221, 12, 82, -169,135,129, 16,169,158, 97, 12,122,131,225,190, 86,171,189, 14,224, 27, 74,105, 77,250, 17,187,163,213, 8,204,171,211,254,137, - 7,128,120,187,166, 93,211,174,105,215,180,107,218, 53,237,154,255,188, 38, 0, 7, 0,193, 0,184, 79,179,157,255,134, 7,128, - 9,230,231,214, 39,178,237,216,177, 99,199,142, 29, 59, 79, 61,148, 82, 53, 44,196,100,217,249,223, 66, 0, 88, 92, 57, 64, 27, - 49, 36,248, 40,171, 15,172,233,219, 53,237,154,118, 77,187,166, 93,211,174,105,215,252,255,167,105, 77,187, 49,254,199,211, 2, -105,160,214,225, 63, 61,116,246, 76, 12, 87,218, 53,237,154,118, 77,187,166, 93,211,174,105,215,252,223,106,254,127,125, 60, 94, -129,194,255,199, 16, 66,124, 8, 33, 22,203, 34, 60, 78, 91, 59,207, 30,143,243,249, 18, 66, 2, 8, 33, 1,141,108,255,183,234, - 1,118,236,216,177, 99,231,217,228,191,238,104,217,122,211,122,204,155,219, 99, 57, 62,132,144, 5,132,160,224,193,131, 44,120, - 82,109,109, 56,174,191,151,151,215,123,177,177,177, 73,190,190,190,147, 9, 33,222,141,220, 63, 92, 42,149, 46,119,116,116, 60, -233,232,232,120, 82, 42,149, 46, 39,132,132, 63,142, 77,181,180, 9, 33,100,162, 88, 44, 78,245,247,247,207, 23,137, 68,169,132, -144, 73,132, 52,162, 86,208,195,122,145,132,144,249,132,144,207, 9, 33, 45, 27,179,175, 79,220,208,237,222,113, 67,175,121,199, - 13,189,225,217,226,249,112,239,184,161, 55,188,227,134, 94,243,137, 27, 90,111,121,157, 71,229,113, 62,223,234,125,239, 61,120, - 88,223,151, 16,242, 13, 1,238, 19,130,188,199,189,150,236,216,177, 99,199,206,211, 65,163,130,225, 3, 2, 2, 94,164,148, 78, - 4, 64, 9, 33,107,243,243,243,119, 53,102,255,234, 27,207,204,234,231,139, 40,165,179, 31,167,157, 13,251, 46,165,148,206,104, -164,141, 62,132, 96, 38,203, 82, 14, 0,112, 56,228, 67, 31, 31, 31, 7, 46,151,251,183, 0, 67,147,201,228, 64, 8, 38,179, 44, - 37,213,109,103, 18, 66,150, 83, 74,101,141, 57,166,249,184,175,190,250,234,210,229,203,151,139, 29, 28, 28,144,155,155,219,111, -210,164, 73, 93, 8, 33,211, 40,165,133,214,246,151, 72, 36, 47,119,232,216,121,218,194,197, 75, 28,125,188,189,165,140,137, 53, -100,231,230, 56,124, 60,107, 70, 71,137, 68,178,188,161, 98,202,117,236, 32, 0, 38,240,120,188,145, 98,177,184,153, 86,171,189, -195, 48,204, 78, 46,151,219,255,203, 47,191,140, 27, 52,104,144, 88,169, 84, 10, 25,134,105,190,121,243,230,105, 63,254,248,227, - 64, 66,200, 16,218,192, 50,125,243,136, 14,165, 52,191,214,230,225,185,185,185,237, 4, 2, 1, 9, 11, 11,227, 0,184,102,165, -125, 13, 20, 8, 79, 59,179,163, 5, 0,196,118, 29,145,153,118,102, 7,170,159,219,210, 69,155,177,116, 45,136,197,226,213, 90, -173,246,158,249,253,106, 59,255,246,121, 91,218,151, 16,178,130, 62, 40, 31,212, 14,192,107,213, 77, 55, 81, 74, 47, 17, 66,124, -197, 34,209, 84,141, 86, 75, 0,144,199,185,150,236,216,177, 99,199,206,127, 23, 66, 72, 27, 74,233,149,234, 25,137, 4, 0, 7, -204,247,238,198,174, 58,124, 39, 43, 43,203, 17, 0, 34, 34, 34,222, 6, 96,179,163,101,233,198,211,167, 79,159, 54, 18,137,228, -161, 44,200, 26,141, 70, 72, 8,250, 60,138,243, 98, 62,134, 94,175,227,240,249, 66,112, 56,100, 90,203,150, 45,155,148,148,148, -156,230,112, 56, 73,121,121,121,229,141,234,237, 3, 77,172, 91,183, 46,194,207,207,239,111,217,154, 11, 11, 11,133, 67,134, 60, -223, 40,189,215, 9, 17,233, 68,162,142, 2, 66,252, 76, 12,227, 10, 0, 60, 30,175, 60,210,197,165,221,127,190,248,194,129, 16, -194,150,150,150, 66,163,209,224,253,247,223,151,164,167,167, 15, 5,176,210,138,141, 17,157,158,235,242,254,145, 35,135,163,149, -101,229,218,117, 75,215, 92,214,240, 4,234,208,152, 40,193,170,181, 27,221, 38,188, 62,250, 93, 66,200, 85,106,161, 28, 73, 29, - 29, 14,128, 61, 83,167, 78,141, 77, 76, 76, 20, 86, 86, 86,138, 53, 26, 77,147,164,164,164,143,219,181,107,231,216,186,117,107, -225,214,173, 91,137, 66,161, 0,165,212, 33, 42, 42,138,142, 28, 57, 82,187,109,219,182,201, 0, 86,212,163, 89,227,248,114,185, -220,101,145,145,145,243,170,251, 44,168,213,134, 31, 19, 19, 35, 5,128,140,140,140,207, 8,193,212,234,237, 22,157,108, 2,100, -197,118, 29, 1, 16, 52, 79, 59,179, 67, 28,219,109,132, 22, 20,183, 9,144, 5, 0, 1, 1, 1,243,129, 90,121,161, 30,230,102, -126,126,254, 35,213, 38, 76, 72, 72, 36,132,144,157,254,254,254,187,138,139,139, 67, 9,193,155, 13,217,249,144,205,132, 16, 15, - 15,143,177, 0, 22, 0, 24,127,243,230,205, 54, 0, 16, 29, 29, 45, 0,112,201,217,217,185,139, 65,175,127,102, 43,215,219,177, - 99,199,206,191,156, 54, 0,174, 0, 72,160,127,149,224, 89, 11, 52,222,209, 18, 2,192,233,211,167, 1, 64,244, 8,134,212,220, - 72, 72,117, 49,100, 63,191,135,195, 81, 10, 11, 11,113,242,164, 77, 85,114,108, 58,198,231,159,127,238, 88, 81, 81, 17,255,195, - 15, 63,116, 15, 59, 40,117,184, 0, 0, 32, 0, 73, 68, 65, 84, 8, 8,248, 58, 63, 63,255,124, 67, 59, 83, 74,101,132,144, 69, -213, 35, 16, 16,137,196,153,147, 38, 77,186, 82,253,118,147, 95,126,249,197, 97,240,224,193,106, 0, 57, 0, 32, 18,137, 3,184, - 92, 78,196,131,160, 55, 44,106,200, 33, 28, 65, 72,152, 80, 40,236, 61,241,219,111,153,182,131, 7,243,164, 94, 94, 4, 0,114, -110,221,242, 88,180,120,113,151,242,187,119,133, 26, 15,143,210, 82,149, 74,147,153,153, 9,145, 72, 68,184, 92,110, 91,107, 29, -150, 74,165,239,125,241,159,133, 82,101, 89,133, 70,171,172,212,115, 25,163,206, 73,226, 96,146, 21, 21,151, 58, 74,164,234, 15, - 63,249, 84,248,206,155, 99,222, 3,240,182, 21,169,201,211,166, 77,139,238,208,161, 67,192,246,237,219,137, 66,161, 0,143,199, -115,108,221,186, 53,218,181,107,103, 58,113,226, 4, 9, 13, 13, 69, 92, 92, 28,206,156, 57,131,179,103,207,146, 54,109,218, 56, -236,222,189,251, 85, 88,112,180,234, 58,215, 92, 46,231,253,168,168,168,214, 82,169, 84, 31, 17, 17,129, 55,223,124, 19,148, 82, -196,199,199,199, 57, 58, 58,238, 82,169, 84,194,140,140, 91,221,173, 57,217,178, 27,123, 71, 2,128,119,220,208,107, 0, 90,128, -226,118,241,141,189,181,167, 31,163, 51, 50, 50, 58,149,151,151,215, 4, 35,154, 11,152,119,239,222,221,218,233,172,193,124, 45, - 12, 30,156,248, 33, 64, 72,124,124,124,197,228,201,147, 57,183,110,221,122,229,133, 23,134,198,101,101,221, 70,125,118,214,185, -142,200,216,177,175,203, 28, 29, 29,135,249,251,251,103, 0,224, 9, 4, 53,126, 38,215,199,199,199,171,101,203,150,111,185,187, -187, 23,115, 57, 28,111, 10, 74,173, 93, 75,118,236,216,177, 99,231,169,226, 64,181,115,117,160,238, 27, 60, 0, 56,112,224, 64, - 77,102,218,132,132,132,122,127, 85, 83, 74,101,127,252,241, 71,144, 90,173,182, 56, 93, 98,161,253,177, 90,207,101, 92, 46,119, - 21,135, 67,222, 38,132, 32, 46,174,197,159,203,150, 45,179, 84,211, 75, 31, 23,215,226, 79, 46,151,211,148, 82, 10, 66, 56,223, -179,172, 73,102, 73,211,146,125,132,144, 69, 66,161,104, 38, 0,248,250,250,221, 61,116,232,144,126,248,240,225, 88,188,120,177, - 96,214,172, 89, 51, 66, 66, 66, 38,231,230,230, 22,213,103,103,245,235,217, 62, 62, 62, 14,235,214,173,139,152, 52,105,210,149, -130,130,130,217, 0,224,239,239,191, 0, 64, 12,128,156, 90,219,176,122,245,182,252, 55,223,124, 51, 83, 38,147,205,174, 79,243, - 69, 66,154,133, 68, 69,245,158,127,250, 52,229,232,116,164,228,215, 95,149,114,153,204,120, 71, 46,119,216,112,233, 82,226,199, - 11, 22,240,131,130,131,113,114,255,126,207, 18,181, 90,174,208,233,180, 50,153,140, 50, 12,115,182, 62,205, 90,196,122,123,121, - 59,172,249,230,251,139, 78,124, 46,235, 29, 24, 64,248,238,238, 60,142,131,179,144,203,227,232,154, 54, 9, 23, 2,136,173,231, -156,213,104, 10, 4,130, 87,251,245,235,231,176,109,219, 54, 18, 23, 23, 7, 87, 87, 87,252,250,235,175,184,122,245, 42,202,203, -203, 57, 70,163, 17,237,219,183,199,194,133, 11, 17, 28, 28,140,138,138, 10,220,187,119,207, 83, 40, 20,122, 53,112, 62, 31,186, -158,102,206,156, 9, 63, 63, 63, 48, 12,131,178,178, 50, 48, 12, 3, 71, 71, 71, 0, 64, 94, 94, 30,246,239,183, 92,145,165,161, -207,189,158,246,120,238,185,231, 42, 9, 33, 55,235,188,117,179, 86, 27,171,154, 1, 1, 1, 91,229,242,146,129,189,123,247, 70, -121,121,185,241,211, 79, 63, 69,203,150, 45, 17, 17, 17, 97,177,125,157,107,126,182, 72, 36,250, 33, 36, 36,228,155, 41, 83,166, -248,185,187,187, 67,167,211,125, 92, 84, 84,132,183,222,122, 11, 0, 48,104,208,160,150,124, 62,255,208,184,113,227, 16, 26, 26, -154, 95, 86, 86,118,239,242,229,203,111,170, 84,170, 27,143,218,119, 91,176,107,218, 53,237,154,118,205,167, 77,211, 86, 95,228, -105,164,122,154,112,109,173,215, 53,207,121,192,131, 14, 29, 56,112,128,218,208,177,210,192,192,192, 32,137, 68, 2, 0, 54, 21, -128,173,141,201,100,154,236,233,233, 89, 60,123,246,236,174, 17, 17, 17,250,201,147, 39,223,200,206,206,158, 83,187, 77,104,104, -232,151,223,125,247, 29, 50, 51, 51,115, 22, 44, 88,112,166,164,164,164, 81,117,204, 40,165,179, 8, 33,203, 0,160,176,176,176, -100,255,254,253, 45, 79,159, 62,253,246,210,165, 75,189,222,121,231, 29,193,123,239,189, 55, 26,192, 98,107, 58, 92, 46, 87,109, -105,186,208, 18,126,126,126,122, 75, 49, 92,102, 6, 19, 34,113, 22, 10,123,205, 63,125,154,234,115,114,212, 63, 46, 89,226,180, -230,247,223,231, 25, 41,245,241,246,246, 70,183, 46, 93,170,196, 92,110, 73,113, 81, 17,235,221,172, 25, 55,251,208, 33, 79,141, - 80, 88,176,109,219, 54, 69,105,105,233, 94,107,199, 39,132, 40, 89, 74,245,142,129,193,198,225, 67,251,198, 93,188,112,245,150, -147,183, 39,167, 77,235,184,150,183, 50,115, 46,131,101, 13,132, 16,139, 53, 25,107,227,226,226, 18, 81, 90, 90, 10,165, 82, 9, - 47, 47, 47, 44, 91,182, 12,190,190,190, 80,171,213, 72, 75, 75,163,129,129,129,228,244,233,211, 8, 12, 12,132, 92, 46,135, 94, -175, 71,101,101,101,177, 78,167,179, 88,155,145, 82, 42,227,241,120, 63,113, 56,228,117, 66, 8,154, 54, 13,203, 93,185,114,165, -158,101, 89, 68, 71, 71,227,133, 23, 94,192,238,221,187,145,150,150,102, 30,121,210,135,132, 52,201,229,112, 72,200,131,221, 31, -125, 84,199, 92,218, 39, 63, 63,127,216,163,236, 79, 8,225,248,251,251,143, 14, 15, 15,127,251,229,151, 95, 54, 10,133, 66,168, - 84, 42,243,185, 48, 14, 28, 56,168, 98,240,224, 68,151, 3, 7, 14, 52,104,167, 78,167,187,235,227,227, 51,126,218,180,105, 73, -171, 87,175,118,155, 51,103, 14, 88,150, 5,165, 20, 12,195,212, 20,253,102, 89, 22,123,246,236,193,157, 59,119,190,172,237,100, -217,177, 99,199,206,191,133, 70,248, 34, 79, 29,181, 98,179,106, 48, 59, 91,255,245,204,240, 92, 46,119,205,209,163, 71, 91,119, -239,222,157,215,167, 79,159,184,192,192,192,184,188,188,188, 27, 0, 16, 24, 24, 24, 55, 96,192,128, 56,111,111,111, 44, 95,190, - 92,205,229,114,215, 60,202, 49,234,220,244,174,248,249,249,125,189,123,247,238, 69, 19, 39, 78,132,175,175,111,204, 19,233, 72, - 35,112, 22,137,218,140, 91,182,140,225, 27,141,156,111,191,254,218,121, 73,106,234,162,237, 59,118,240,158,123,238, 57, 66, 41, -197,245,107,215, 36, 11, 87,172,112, 24, 53,116,104, 78,198,221,187,204,190, 35, 71,140,178,252,252,178,124,185,124, 46,165,180, -204,154,190,209,104, 60,151,149,149,229,223,173,199,115, 1,167,126,191,113,117,248,208, 65,189,249, 60, 14,185,157,147,119,201, -207,215,211,229,100,234, 49,141,209,104, 60,103, 77, 71,165, 82,101, 51, 12,227, 78, 41,245, 58,121,242, 36,188,188,188, 80, 94, - 94, 14,163,209, 8,189, 94,175, 87,171,213,226,210,210, 82,104,181, 90,232,116, 58, 56, 59, 59,227,250,245,235, 50,134, 97, 78, -212,167,201, 48,204, 56,177, 88,252, 57,159,207, 23, 10, 4,130,130, 75,151, 46, 65,169, 84, 54,113,117,117, 93,204, 48, 12, 10, - 10, 10,112,250,244,233, 15,156,157,157,115, 0, 64, 44, 22, 67, 40, 20,121,232,116, 58,166,190, 96,120, 91,160,244,209,107,120, -250,249,249, 5, 55,109,218,116,254,135, 31,206,140,110,213,170, 53,228,114, 57, 88,150,133, 84, 42,133, 90,173,134,179,179, 51, - 58,119,238,156, 61,127,254,252, 66, 74, 49,193,154, 51, 40,147,201,228, 1, 1, 1,147, 39, 78,156,248,121, 68, 68, 68, 83, 74, - 41,194,195,195,209,175, 95, 63, 28, 58,116, 8,153,153,153, 80,169, 84,166,243,231,207,255, 92, 80, 80,240,203, 35, 27,110,199, -142, 29, 59,118,254, 87,212,196,102,213, 30,205, 2,254, 7,142,150, 76, 38,147, 7, 6, 6, 30,190,124,249,114,226,200,145, 35, -113,242,228,201,177, 0,166, 1,128, 72, 36, 26, 59,114,228, 72, 92,190,124, 25,183,110,221, 58, 44,147,201,228, 79,226,152, 66, -161, 80,171,215, 63, 24,156, 18,139,197,226, 70,238,222,164,122,202, 16, 0,154, 52,176,173, 94, 56, 60,158, 95,139, 1, 3,120, -229, 87,175, 42,215, 93,184,240,121, 82, 82, 18,175,107,215,174,196,104, 48,192,196,178, 8, 11, 11, 35,125,226,227,165, 63, 37, - 37,185,155, 84,170,211, 95,124,248,225,175,107,199,141,171,202,164, 52,199, 22, 3,117, 58,221,138,183,223, 26, 31,159,122,242, -215,128,152,168,102,238,135,143,166, 94,241,240,112,113,136,104,222, 92, 90, 90, 94,102,154, 51,235, 3,158, 78,167,251,214,154, -142, 70,163,217,115,236,216,177,161, 65, 65, 65, 94, 55,110,220,128, 94,175,135,201,100, 66,159, 62,125, 64, 41, 21, 1, 96,121, - 60, 30,110,221,186, 5,131,193, 80,156,149,149, 85,112,251,246,109, 17,128,175, 26,210,213,106,181,185,181, 95, 7, 5, 5,245, - 77, 72, 72, 0,195, 48, 24, 48, 96, 0,246,237,219,215, 55, 61, 61,125, 73,173, 38, 42, 91,250,221, 16,213, 35,100,209, 1, 1, - 1,187,171, 55,217, 20, 4, 31, 24, 24, 24, 23, 30, 30,190,250,171,175,190, 18, 4, 6, 6,130, 82, 10, 55, 55, 87,168,213,106, -148,148,148, 34, 38, 38, 6, 65, 65, 65,248,234,171,175, 0,224,103, 91, 71,220,242,243,243,111, 3, 24, 25, 19, 19, 35,168,168, -168,104,215,183,111,223,229,241,241,241,184,114,229, 10,126,253,245,215, 81, 34,145,168,216, 96, 48, 48,126,126,126, 19, 8, 33, -206, 6,131, 97, 75, 73, 73,137,213,213,166,118,236,216,177, 99,231,169,192, 28,163, 85,147, 37,190,209, 35, 90, 49, 49, 49, 82, -133, 66,241, 90,147, 38, 77,132, 0, 32,145, 72, 98,154, 53,107, 54,227,206,157, 59,149,141,181, 70,173, 86,111, 79, 74, 74,234, -247,205, 55,223, 8, 6, 13, 26,212, 44, 48, 48,176, 3, 0, 12, 27, 54,172,153,147,147, 19,146,146,146, 12,106,181,250,137,229, - 68, 50, 26,141,221,219,183,111,143,178,178, 50,228,228,228, 52,106, 90,230,151, 95,126,113,192,131,184,172, 6,183, 53, 4,163, -215,187,185, 6, 4,112,242, 83, 83, 13,101, 74,165, 95,247, 30, 61,136,209, 96, 0,135,195, 65,105,105, 41,238,221,187, 7, 23, - 87, 87,114, 43, 43,203,113,253,204,153,191, 52,105,213, 74,104,210,235, 61,108,213,167,148,170, 8, 33,175,191, 59,249,157, 61, - 91,182,252,236, 85,161, 84,222,145, 72, 28,116, 34,145,192,119,202,187,239,154,202,202,202,198, 80, 74,171,108,144,250,106,203, -150, 45, 3, 6, 12, 24,112, 45, 56, 56,216, 91, 46,151,251, 86, 84, 84,152,202,202,202,184,120, 16,107, 69, 0, 32, 53, 53, 21, - 74,165,146, 49,153, 76,167, 1,204,167,148,218, 52,197, 10, 0, 77,154, 52,113,233,216,177, 99, 79, 47, 47, 47, 40, 20, 10,120, -120,120,160,117,235,214, 61,155, 52,105,242, 67, 78, 78,142,194, 86, 29, 91, 72, 73, 73,113,162,148,118,162,148, 98,192,128, 1, - 54,237, 99, 50,153,222, 72, 72, 72, 16, 16, 66,160,209,168, 33, 22, 75, 32,149, 58,194,201,201, 25, 17, 17,145, 40, 40, 40, 64, -255,254,253,245,119,238,220, 89, 85, 88, 88,216,232,107, 84,161, 80, 12,233,220,185,243,244,183,222,122, 11, 12,195, 96,200,144, - 33,184,127,255,254,146,236,236,236,109,254,254,254,163,223,120,227, 13, 47, 15, 15, 15, 76,159, 62, 93, 2,224,179,198,234,219, -177, 99,199,142,157,255, 62,117, 99,180,106, 83,227,104, 53, 52, 39,234,231,231,215,205,221,221,253, 99,141, 70, 35, 52, 79,201, - 16, 66,132, 94, 94, 94,251,252,253,253, 23, 20, 20, 20, 52, 42, 40,174,188,188, 92,233,231,231,183,239,220,185,115, 35,134, 13, - 27,134,148,148,148, 49, 0, 48,108,216, 48,156, 59,119, 14,127,254,249,231,190,242,242,114,171, 49, 69,182, 16, 24, 24, 56,176, -103,207,158,195,218,183,111,143,228,228,100,152, 76,166,179,214,247,250,139,218, 43, 12, 97, 97,213,161,121,155, 77, 98, 92, 46, - 8, 33, 96, 24, 6, 0, 80, 34,151, 35, 51, 35, 3,101,229,229,208,105,181, 80,169,213,166,136,208, 80,141, 66,175,231, 19,160, - 81,115, 95,148,210, 92, 71, 71,199,123,106,149,202,219,195,205, 93,227,224, 32, 66,133, 82, 33,184,116,241,124, 21,165,244,142, -141, 26,122, 66, 72,143, 67,135, 14,205,229,114,185, 35, 29, 29, 29,241,246,219,111,115,123,246,236, 9,129, 64, 0,157, 78,135, -138,138, 10, 36, 37, 37,201, 25,134,105, 10, 0,132, 16, 71,169, 84,186,145,203,229,230, 41,149,202,143,173, 29, 67,175,215, 15, - 74, 76, 76,228,233,245,122,124,241,197, 23,152, 55,111, 30, 6, 12, 24,192,187,120,241,226, 32, 0, 91, 26,211,231,134, 96, 89, - 22,125,251,246,173, 29, 12, 95, 55, 40,222, 34,124, 62, 63,174,121,243,230,144,203,229,144,203,229,240,242,242,130,191,191, 63, -124,125,125,177,100,201, 18,186,124,249,242,195, 6,131, 97,149, 92, 46,111,116,236, 88, 96, 96,224,132,177, 99,199, 78, 24, 49, - 98, 4,170,170,170,112,238,220, 57,116,233,210, 5,139, 22, 45,242, 59,125,250,244,180,246,237,219,131,207,231,227,228,201,147, - 96, 24,230,126, 99,245,237,216,177, 99,231, 89,231, 89,140,207,178, 70,131, 35, 90,193,193,193,174, 38,147,233,131,193,131, 7, -247, 29, 58,116, 40,250,247,239,255,208,251, 91,182,108,113,218,181,107,215,130,160,160,160, 1, 6,131,225,171,198, 76,245,177, - 44,187,103,203,150, 45,131,158,123,238, 57,135, 94,189,122,133, 1,128, 72, 36,210,111,217,178, 69,205,178,236,158,198,118,164, -110,242,200,128,128,128,150, 60, 30,111, 88, 98, 98, 98,203,215, 95,127, 29,105,105,105, 72, 74, 74,186, 29, 17, 17,113,166,145, -210, 57, 86, 86, 29,154,183,213, 11, 87, 40, 44,173, 40, 42,114,117, 12, 14,230,187, 57, 57, 21, 38, 39, 39, 7,197,199,199,147, -251,247,239,163,188,188, 28, 90,173, 22, 23, 47, 94,100,121, 64, 46,207,205,141,228,158, 59, 71,184, 66, 97,163, 23, 27, 4,249, -185,133,127, 50,107, 82, 19,173, 78, 27,171, 80, 40, 24, 30,159,207, 15,244,117,109,212, 13,155, 82,170,147, 74,165,237, 0,240, - 88,150, 85,187,187,187, 59, 28, 61,122, 20, 66,161, 16,132, 16,180,104,209, 2, 98,177, 88, 32,149, 74,239, 1,128,175,175,175, -112,205,154, 53, 46,163, 71,143,254,213,154,118,219,182,109,249,161,161,161,207, 71, 68, 68,224,220,185,115,184,113,227, 70,238, -185,115,231, 66,218,180,105,131,224,224,224,231,219,182,109,187,227,242,229,203,198,198,246,187,158,126, 60, 82, 48,188,201,100, - 98, 9, 33,224,112, 56, 96, 89, 22,114,185, 28, 77,155, 54,197,202,149, 43,177,108,217,178, 47, 10, 10, 10,246, 63,138, 61, 49, - 49, 49,130,214,173, 91,143, 25, 49, 98, 4,238,222,189,139, 5, 11, 22,148, 20, 22, 22,166, 30, 57,114,228,197,183,222,122,139, -219,165, 75, 23,148,150,150,226,167,159,126, 98, 46, 93,186,244, 99, 81, 81,209,166, 71, 57,142, 29, 59,118,236,216,121,186,168, -215,209, 10, 14, 14, 30, 33, 16, 8,166,191,244,210, 75,220,200,200, 72,200,100, 50, 56, 59, 59, 27, 9, 33,124, 0,112,117,117, - 53, 74, 36, 18, 76,154, 52, 9,173, 90,181,234, 54,115,230,204, 46, 1, 1, 1, 43,243,243,243, 55,218,114, 96,153, 76,166,246, -243,243,219,249,246,219,111,127,117,245,234,149,166, 0,240,251,239,191,255, 89, 80, 80, 48, 75, 38,147,213,187,130,207, 18,181, -146, 98, 18,137, 68,114, 33, 60, 60, 60,123,224,192,129,206, 67,135, 14,133,151,151, 23, 46, 95,190,140,133, 11, 23,102,233,245, -250,185, 39, 79,158,100, 26,163,253, 36, 96,116,186,162, 75,123,247, 58,245,124,229, 21,231, 41, 9, 9, 95,191,243,246,219,223, -124,242,201, 39,188,200,200, 72,162, 86,171,113,225,194, 5,186,107,215, 46,227, 79,159,127,190, 12, 82, 41,255,220,174, 93, 66, -189, 94,159,219,152, 99, 4, 6, 6,246, 24, 52,160, 71,228,215,223,172,128, 86, 83,133, 11,103, 15,160,188, 92,142, 53,107,119, - 71, 6, 6, 6,246,200,203,203, 59,101,171, 22, 33, 36, 34, 37, 37,197,155, 82, 10,161, 80,136,249,243,231,195,223,223, 31,206, -206,206,168,172,172,196,180,105,211, 92,166, 78,157,234, 2, 0,105,105,105, 53,233, 25,172, 81, 80, 80,208,121,210,164, 73, 78, - 12,195,224,240,225,195,122, 66,200,199,199,142, 29,251,161, 69,139, 22,194,110,221,186, 57,109,218,180,169, 11,128,147,141,233, -119,125, 60,106, 48, 60,165,244,246,209,163, 71,219,143, 28, 57,146,242,249,124, 82, 81, 81, 1, 87, 87, 87,172, 92,185, 82, 85, - 88, 88,248,183,252, 40,182,194, 48,140,208,193,193, 65, 72, 41,197,206,157, 59,145,155,155,251, 70, 73, 73, 73,145,143,143,207, -238, 15, 62,248, 96, 70,100,100,100,104, 70, 70, 70,110,101,101,229, 34,153, 76,150,253,168,199,177, 99,199,142, 29, 59,255,125, -204, 65,240,141,202, 12,111, 50,153, 38, 29, 57,114,132,203,178, 44,214,174, 93,139, 75,151, 46, 81, 7, 7,135,143, 29, 28, 28, -190,147, 72, 36, 38,141, 70, 51,241,205, 55,223, 28, 61,111,222, 60, 78,183,110,221,112,238,220, 57, 78,211,166, 77,199, 0,168, -113,180, 8, 33,241, 13,229,218, 80, 40, 20, 23,101,178,162,166,181, 18, 84, 54, 21,137,196, 23,173,116,230, 33, 77, 11, 73, 49, - 59,206,159, 63, 95,229,231,231,167,191,113,227, 6, 86,175, 94,205, 94,186,116, 41, 85, 40, 20,174, 41, 40, 40,208,217,162,249, - 36,168,173, 41,100,152,203,155,103,204,136,110, 59,100, 8, 59,126,250,244, 42,129, 68,242,222,215, 43, 86,204,172,168,172,244, - 7, 33,212,195,197, 37,119,237,252,249, 11, 6, 60,255,124, 85,218,169, 83,226,171, 41, 41,124, 47,163,241,143,198,216,153,151, -151,119, 42,188, 89, 48, 54,172,251, 6, 6,131, 14,133,249,185, 0,128,146, 82, 5, 26,114,178, 44,105, 50, 12,163,120,241,197, - 23, 5, 0, 36,175,190,250,170,176,184,184, 24,205,154, 53, 3, 0, 40,149, 74, 28, 56,112, 0, 81, 81, 81, 0,128,235,215,175, -215, 60,183,102,167, 84, 42,125,190, 75,151, 46,200,205,205, 69, 90, 90,218,241,130,130,130, 82,127,127,255,227,247,239,223, 31, -212,190,125,123,236,217,179,103, 48,234,113,180, 26,251, 25,217,226,104, 89,210,148, 72, 36,179,118,239,222,253,198,217,179,103, - 71,206,152, 49,131,223,167, 79, 31, 0, 64,101,101,165,154, 82,106,122, 20,205,218, 54, 25,141, 70,176, 44, 11,119,119,119, 21, - 0, 84, 59, 85, 13, 38,146,253,167,175, 79,187,166, 93,211,174,105,215,124, 26, 52,255,159, 96,123,102,120, 74, 41,195,178, 44, - 78,158, 60,137,221,187,119,155, 12, 6,195,132,130,130,130,235,181,154,172,240,247,247, 79,121,241,197, 23, 55,102,100,100,112, -211,211,211, 97,203,141,168, 54, 90,173,214, 88,183, 36,177, 86,171,125,236,169,163, 13, 27, 54,160,168,168,200,112,255,254,253, - 99, 12,195,236,121,204,213,139,143,189,234,240, 39, 74,117,175, 16,114,108, 94,215,174,125,231,166,164,136,198,127,244,145,110, -236,235,175,127, 96,210,235,141, 92,129,128, 21, 74,165, 28,147, 72,196, 79, 59,117, 74,188,252,173,183,220, 53, 58,221,225,205, -141, 8, 48, 7,106, 70,180, 48,118,252,251,208,212, 26,209, 58,119, 49, 19,141, 29,209,210,106,181,177, 0, 32,145, 72,238, 1, -240,125,237,181,215,192,178, 44, 52, 26, 13, 42, 43, 43, 81, 80, 80,160,120,253,245,215, 77, 0, 32,149, 74,121,195,134, 13,115, -182, 69, 55, 44, 44,204,159,207,231,227,240,225,195,224,243,249, 7, 0,128,207,231, 31, 72, 73, 73, 25, 52,106,212, 40, 4, 4, - 4,132, 17, 66, 8,181,226, 37,249,196, 13,221, 78,129,112, 16, 52, 7, 0, 16, 52,247,142, 27,122,141, 0, 89,213, 89,227,111, -182,105,211, 6,176, 49, 46,171, 54,213,139, 59,150,121,122,122,238,152, 57,115,230,219, 29, 59,118,236, 55,111,222, 60, 2,128, -219, 88, 45, 75, 48, 12,243, 88,169, 39,236,216,177, 99,199,206,211,137,121,181, 97, 93,234,117,180, 8, 33,107,123,244,232, 49, - 1, 0,151, 16,178, 58, 63, 63,255,122,221, 54, 5, 5, 5,153, 1, 1, 1,139, 67, 67, 67,107, 10, 77, 55,198,168,234, 76,238, - 11, 57, 28, 50,243,193,235,198, 39,168,172, 85,234,100, 38, 0,194,225,112, 55, 94,185,114,229,163,123,247,238,201, 27,235,248, - 89,226, 73,172, 58, 4,128, 45,148,102,143, 34,228,200,244,184,184,248, 1,111,189,133,150, 3, 6, 56,251,135,132,152, 52, 6, - 3,123,253,204, 25,114,118,231, 78,193,213,148, 20,190, 70,167, 59,188,155,210,123,141,181, 51, 47, 47,239, 84,179,176,192,163, -195,135, 13,234, 23, 22,234, 15, 0,184,155, 93,128,146, 50,197,209,198, 56, 89,181,209,106,181, 67, 86,174, 92,185, 95, 32, 16, -240,104,173, 82, 54, 6,131,161,204,236,140, 17, 66,252,215,174, 93,187,149,195,225,228, 90,211, 75, 79, 79,223, 55,119,238,220, - 97, 57, 57, 57, 71,239,221,187,151, 3, 0,185,185,185, 57,254,254,254, 27, 11, 11, 11,135,229,230,230,238,178,230,100, 1,127, - 43, 42,141,180, 51, 59,196, 0, 90,152,139, 74, 63,106, 45,195,218, 84,167, 86,248,216,207,207,111, 75,191,126,253,222, 4,240, -200, 57,189, 0, 64,175,215, 27, 53, 26, 13, 99, 50,153,120, 6,131,129,234,245,250, 39, 18,139,102,199,142, 29, 59,255, 34,218, - 3, 48, 87, 34, 49, 15,160,120,213,121,174, 71,117,185,192,106,204,175,229, 0, 46,214,210,168,189,221,218,190, 0, 80, 2,224, - 90,245,182,191, 81, 55,119,214,223, 50,195, 91, 34, 63, 63,127, 23,108, 40, 26,109,107,187,250,160,148,206, 38,132, 44,175,126, -254, 72, 89,192,107,107, 48, 12,243, 68,234,195,113, 56,156,236,193,131, 7, 55,170,189,181, 54, 91, 41,205,125,143,144, 77,201, -223,126,219,250,240,234,213, 1, 38,134,241, 32, 0,229, 10,133,165,122,189, 62,199,203,104,252,163,177, 35, 89,181,185,115, 55, -175, 63, 0,132,135,135,211,219,183,111,131, 82,250, 88,171, 55, 40,165,127, 0, 8,178,210,166, 0, 64, 55, 91,244,242,242,242, -126, 6,240,115,221,237, 5, 5, 5, 91, 1,108,181,213,174,154,162,210, 0,135, 37,236,240,216,174, 35,118, 2, 96,205, 69,165, -159, 36,133,133,133, 25,168,206,243,246, 56,228,228,228,232, 66, 67, 67, 55, 47, 92,184,240,213,171, 87,175,110,203,207,207,183, - 56,141,109,199,142, 29, 59,118, 44,210, 30,128, 23, 33, 36, 25, 0, 40,165,137, 0, 64, 8, 73,174,251,220,220,198,220,174,118, - 27,179, 70,221,237, 13,237, 11, 0,179,102,205,250,104,193,130, 5, 14, 0,108, 42,198, 92, 59,113,233,127, 61, 97,169, 37, 30, -213,193,122,210, 26,181,201,203,203, 91,247, 36,245,204,172,120,224, 72, 53, 88,216,250,113,201,202,202,250,127,183, 60,182, 54, -230,162,210,181,136,251,159, 24,210, 72,178,179,179, 87,246,236,217,115, 77,126,126,254,127,125, 65,134, 29, 59,118,236, 60,227, -120, 89,114,140, 44, 53,180,224, 92,213,139,165,118,150, 94, 19, 66,146, 23, 44, 88, 96, 85,175,214, 62, 53, 35, 90, 28, 91,119, -178, 99,199,206,227,243,191, 88,245,106,199,142, 29, 59,118, 44, 83,119, 20, 11,120,224,124,213,125, 61,107,214,172,143, 80,207, -180, 97,117, 27, 63, 66,200,132,234, 85,135, 15,197,107, 17, 0,241,245, 28,220,230,213, 4,132, 16,139, 26, 13, 97, 77,223,174, -105,215,180,107,218, 53,237,154,118, 77,187,230,255, 63, 77,107,218,245,236,159, 80,223, 84, 95, 67,211,136,117,159, 91,219,215, -134,182, 22,211,252,212, 74,239,240,208, 95,115,135,254,177, 7,128,120,187,166, 93,211,174,105,215,180,107,218, 53,237,154,118, -205,199,124,180,167,148, 38,224, 65,213, 20, 74, 41, 77,160,148, 14,152, 53,107,214,108,243,182, 89,179,102,205,166,148,246, 49, -183,171,110, 83,179,143,121, 91,221,191,117,183, 89,105, 91,223,249,152, 80,251,121,237,215, 79, 69,140,150, 29, 59,118,236,216, -177, 99,199, 78, 3, 92, 4,208,158,254, 53,218, 36, 7,112,125,193,130, 5,229,181, 98,167,228, 0,254, 0,208,170,186,157, 28, -248, 91,204,149,190,250,181,222, 66, 27,189, 45,109, 45, 65,107,197,100,209, 58, 43, 16,237,142, 86, 61,180,246,227,126, 30, 28, -232,221, 14,168, 30,245, 99, 89, 0, 0,251,192, 91, 5,173,118, 91,193,178,160,148,162,160,184,226,242, 53, 25,253,228, 81,143, - 23, 25, 64,220,189,197,226,101, 44,165, 93,171, 55,157, 82,148,234,222,191,161,160, 21,182,106, 68,251,146,104, 49, 7, 31,176, - 20, 45, 1,128, 67,112, 77,203, 98,241,205, 34,218,232,124, 82,117, 33,132,144, 88, 47, 76, 16, 74, 28, 94,114,113,117,107, 94, - 94, 94,146,101,208,234,118,164,203,177,166,230, 92, 52,130,102,238,164, 19, 75,241, 17, 0, 14,159,131, 37,153,165,212,166,149, - 28,118,236,216,177,243, 4,120,220,188,120,150, 82, 7, 61,238, 34, 36,123,130, 61,235, 88, 74,104,254,187,141,237,254,103, 52, -202,209,138,245, 38,111,129,224, 83, 0, 20, 20,159,165, 21,211,239, 27,181,191, 63,137, 23,115,185,235, 1,112,181, 6,211,116, -202,226,180,165,118,132,131,238, 98, 1,119, 9, 0, 86,107, 50,141, 75, 43,176, 61, 94, 44, 46,144, 12,224,177,156,205, 44,165, -124, 19, 75, 55,130, 34,217, 81,128,223,206,229, 81,109, 99,108, 13, 14,244,110,183,247,247,194,126,169,223, 79, 65,199,150,205, - 64, 77, 12,192, 26,225,208,237, 3, 28, 95,250, 26, 58, 70, 7,131,178, 70,128,101,224, 56,240,107, 12,140,115,121,228,127,146, -200, 0,226, 30,226,233,125, 99,221,186,245,190,254, 97, 49,132,101, 12,200,248,253,232,232,169, 51,231,246,142,115, 33,113,182, - 56, 91,173,252,201,248,102, 77, 35, 63,120,255,211,111,184,126,254, 65, 82,214,168, 99,138,178,111,182, 89,177,104,238,174, 86, -254,100,201, 31, 5,116,189, 45,182, 16, 66, 72,140, 23, 38,242, 68,194, 17, 18,177,180,185, 90, 93,121,219,100, 48,238,136,243, -231, 13, 88,252,245,178,214, 61,251, 14,114, 52, 85, 22,113,140, 44, 98,182,111,219, 26,242,237,202, 85,131, 8, 33,207, 83, 74, -217,198,244,153,165,152,153,185,105,194, 32, 62,143, 75,162,223, 88,199,133,141, 75,102,235, 18,227, 67, 94, 38,212,122,122, 9, - 74,240,107,186,140,254, 45,181,132, 45, 68,251,144, 31, 8, 69, 4, 8,118, 18,138,173,105,197,180,248, 81,116,236,216,177,243, -244,194,225,112, 82, 89,150,237,245, 36, 53, 9, 33,157, 40,165,255,232, 42,115, 59, 79, 63,141, 27,209, 34,248, 34,237,206,125, - 55,152, 12,136,141, 8,251, 28, 64,163, 28, 45, 49,151,187,241, 98,150,204, 23,140, 1,235,190,124,123,155,222, 8, 48, 70, 3, - 76,140, 17, 38,198, 8,134, 49,192,100, 52,130, 26,117,152,251, 99, 42,160,175, 68,187,184,240,141, 0,252,108, 61, 6,159,114, - 54, 95, 62,115,212,157,232, 21,248,249,251, 5,239,222,151, 87,189,123,236, 90, 65, 73,172, 15,153,157, 94,140,159, 26,227, 16, -164,174,158,130,164, 61, 7,242,150,255,160,186,197, 82, 10,119,103, 73,228,232,196,180,160, 77,251, 82,239, 47,219,168,189, 5, - 0, 46, 82, 97,228,152,107, 89,193,141, 57, 15,117,241, 22,139,151,173, 89,245,173,175,159,135,132, 48,103,191, 2, 99, 50, 33, - 40, 36,129, 59,123,242,104,191, 47,150,174, 95, 10, 96,108, 67,251, 71,249,144,152,136,102,209,211, 55, 30, 56, 27,172, 82, 22, -235,143,110,249,232, 14,116, 48,250, 6, 68,243, 63, 95,240, 13,119,206,135, 83,166, 69,249,144, 11,183,100, 52,189, 33, 29, 66, - 8, 39,218, 27,251, 22,124,245,117,203,222, 3, 19, 29,217, 42, 57, 87,171,170,138, 88,247,227,250, 79,163, 90,118,112,232, 22, - 23, 40, 40,222, 49,137,104, 42,203, 96,224,136, 69,189, 99,227,157, 53,175,142, 50,174,219,144, 52, 25,192,138,198,244,217, 84, -107,218,154,101, 31,253,215, 37,161,232,118,245,124,234, 68, 83,193, 69, 80,147, 17, 48, 25,106,254,194,100, 4,101, 31,252,237, - 56,233, 71,192, 66, 14, 47, 91,224, 80,244, 59,118,230,162,159,172,168,176,253,210,175,255, 51, 59,198,155, 28,130, 9,155,111, -150,225, 84, 99, 29, 76, 59,118,236, 60,189, 16, 66, 24, 74,233, 19,157,233, 33,132, 12,162,148, 30,124, 76,141, 15, 0,140,175, -126,185,158, 82,186,248, 9,216, 21, 8,192,183,250,101, 17,165, 52,239,113, 53,255,205, 60, 20,252, 94,231,117, 99, 47, 40, 49, - 40, 11,236, 28, 10, 0,146,198, 26, 66, 1, 49, 8, 23, 48,170, 48,100, 96, 95,120,122,251, 2, 70, 53, 96, 80, 3, 70, 13, 96, - 84, 1, 70, 13, 74, 10,115, 1,131, 10,184,123, 8, 12,165,162,198, 30, 7, 58, 5,144,185, 3,125,218, 4,195,203, 69,140, 41, - 67, 98, 60,215, 30,206, 92,191,254,104, 70, 60,128,151,108,178,149, 82,116,108,209, 28,203,215,171,110,237,191, 92,220, 31, 0, - 18, 90,123, 30,238, 24, 19, 18,180,108,163,246,214,129,107,101, 3, 0, 96, 96,156,203,161, 14,145,126,193,236, 99,140,250,178, -148,118,243,111,210,156,152,174,174, 1,171,204,131, 82,169, 65, 94,246, 38,184, 5,180,229,152, 88,244,176,182,191,132,139, 89, -239,205, 89,200, 87, 43,101,122,214, 32, 55,121,113,203,185, 60, 33, 75,144,127, 74, 87,197, 86,152,222,159,240, 26, 51,253,147, - 47,103, 1, 24,221,144, 78,140, 55, 38, 47, 89,178,172, 69,151,118, 81,222, 69,187,166,144,170,114, 25, 24,174,131,104,200,115, - 93,224, 26, 30,195,202, 78, 46, 33,194,176,120,184,122,132, 33,255,236, 22,228,156,223, 77,186,182, 25, 38,250,233,103,193,171, -168,199,209, 10,247, 34, 93,251,119,239,176, 45, 44,216,223,143, 82, 22, 44, 75, 65, 89, 19,222, 24,222, 15,179,183,223,133,201, -100,194,139,253,187,246, 89, 56,177, 55,101, 89, 22,148,178,184, 95, 84,170, 62,113,225, 86,159, 59,101,244,130,181,190, 83,130, - 95, 91,117,234,213,245,218,229,243, 81,198,204, 95,208,110,244,130, 91, 4, 56, 83,243, 62,208,245,202,145,159,162,128, 31,173, - 73, 89,132, 16, 66,162,189, 97,202, 57,252, 21,130,187, 79,224,174,249,249,176,151, 66,158, 63,102,215,166, 85,195,191, 95,179, - 38, 9,192,164, 71, 18,182, 99,199,206, 83, 7,165,244,137, 59, 91,185,185,185, 5,143,227,108, 5, 6, 6,118, 7,176,200, 28, -161, 65, 8, 89, 20, 26, 26, 90, 83,253,130,101, 31,250,173,167, 48,153, 76,163,243,242,242, 44,206, 22,153, 73, 76, 76,244, 7, - 16, 90, 75, 51,148, 16, 18,106,169,173,171,171,171,169,115,231,206, 57,201,201,201, 5,143, 98,255,191,141,186, 14, 23,208,120, - 71,235,214,189, 29, 83,218,232, 10,171, 0,224,150,181,198,180,206, 18, 77,173,209,244,213,134, 79, 95,251, 42,182,137, 59, 42, - 85,122, 28,189,148, 3,147,201, 8, 19,195, 84,143,108, 49, 48, 49, 70,244,111,229,137,206,218, 73, 88,145,156, 1,198,196, 46, -104, 72,179, 46, 6,202,190,220, 58,126,228,118,150,165, 66, 17,159,163,136, 8,242,240,158,254, 98, 43,206,148, 33,177,208, 24, -152,145, 49, 62,228, 68,186,140, 62,148,140,180, 94, 77,246,239, 41,143,168,165,109, 38, 11,219,108, 92,222, 26,229, 67, 58,142, - 74,236,235, 76,117, 10, 24, 75,238,162, 82,109,196,221, 82, 35,138,180, 21, 16,145, 66,155, 52, 89,138,150,129, 1,126, 14,191, -109,251, 48,219,131,171,228,121,115, 25,129,144,195,192,196, 82, 46,173, 72,215,185, 71,245,229,155,227,182, 26,178, 83,226,224, -244, 90,247,126, 9, 46,247,182, 76, 32,146,136,254,240,110, 19,132,236,211, 27, 80,124, 41, 25,165, 5, 57,196, 89, 91, 1, 31, -143,102, 24, 56,250, 37, 44,126,169, 61, 42,149,149,224, 22,222,113, 17,242, 69,174,245,105, 82, 19, 70, 47, 89,248,165, 31,143, -203,121,112, 62,205, 15,147, 17, 26,157, 14, 48, 49, 16,243, 88, 16,106,126,207, 8,147,209,224,208,114,216,135,111, 3,184, 96, - 73,179, 54,233, 50,250,115,172, 55,233, 6,214, 24, 69,141, 26, 16,224, 76, 90, 49,173,113,126, 98,124,200,203,109,251,191,222, -141, 18,252,218, 80,223,235, 35,206, 3,137,237, 66, 29,165, 82,229, 45,228,237,124, 23,119, 32,166, 62, 93,198,227,229, 55, 38, - 59,172, 93,187,118, 48, 33,228,173,218, 49,106,182,126,238,141,193,174,105,215,124, 86, 53, 93, 92, 92,154, 54,105,210,100,174, -209,104,236, 46, 16, 8,124, 12, 6, 3, 88,150, 45, 18, 10,133,191,230,228,228,204, 87, 40, 20,127, 62, 13,118,214,230,218,181, -107, 54, 59, 91,182,104,242,249,124,100,100,100,220,182,213,217,170,171,201,231,243, 55,159, 57,115, 6,219,183,111, 7, 0,100, -102,102, 34, 60, 60, 92,106,105,223,236,236,108,105,207,158, 61, 55,163, 78, 69,143,186,154,215,175, 95,111,250,203, 47,191, 96, -231,206,157, 0,128,140,140, 12, 68, 68, 68, 88,180,231,204,153, 51,220, 87, 94,121,165, 41,128,135, 28,173,127,226, 51,122,214, - 49,231,206,170, 91,243,144, 7, 0, 7, 14, 28,160, 9, 9, 9,164,238,115, 11,220, 13,118, 19,182,129,214, 4, 0,119, 27,107, - 68,122, 17, 93,216,202,143, 63,224,248,206,149,221,197, 2, 14,230,173,155,126, 95, 94, 86,217,137, 71,192, 2, 0, 67,193,113, -115, 20,158, 91, 48,166, 85,112,121,149, 22,251,127,207, 63,157, 38,107,220, 16,105, 90, 1, 77, 1, 80,115,227,143,243, 32, 17, - 99, 22,167,108,221, 58,107, 64,203,247,135,180,196,190,179, 57,239, 3,176,154,245,157,178, 44, 40,203,212, 4,191, 3, 0, 88, - 22, 96, 31, 46, 10,204,130, 62,216,198, 54,110, 68,171, 39, 33,188,114,111, 12,116,119, 16,126, 55,113,226,155,206, 70,121, 22, -202,244, 2,220, 47,215,162, 72,195, 71, 21,207, 27,249,183,174,155, 56, 4, 41,214,180, 8,129,146, 50, 90, 87, 55,161, 35, 39, -174,239,219, 1,202,195, 31,149, 11, 9,195,117,126,225, 11,215,146,227,223,228, 48, 42,185,138, 16, 88,173,173,231,226,226, 26, -174, 45,205,225, 42,202, 75,224,234, 27,139, 1, 35, 19,241, 89, 66, 12, 42,149, 42,200,203,206,209,230,126,206, 36,247,215, 36, -204, 25, 24,141, 82, 89, 33,116, 70,128,168,116,101, 90,189,182,170, 62, 77,202,193,154,169, 51,102,190, 28,226,231, 37, 53, 47, - 42,160,172, 9,173,162,195,208,183,123, 71,164,156,249, 13, 23,175,103,130,173, 94, 84, 64, 89, 22,121,197,229, 50,173,193,180, -161, 81, 39,212,196,128, 26,255, 30,134, 87, 29,151,213,232, 41,195, 22, 62,196,193, 4,124,210,169,185,211,184, 89,137, 33, 78, - 82, 17,129,214,104,130, 86,111, 68,229,111,223,193,163, 73, 11, 56,136,197,164, 13, 52, 60,192,250,185,181, 99,231,223,196,136, - 17, 35,196, 50,153,236,100, 66, 66, 66, 76,223,190,125, 29,186,117,235, 6,149, 74,133,163, 71,143, 66,165, 82,133, 4, 5, 5, -133, 28, 61,122,116, 88,167, 78,157,210, 3, 3, 3,123,238,216,177,163, 49, 49,180, 60,252, 21,204,206, 2, 96, 8, 33,168,222, - 70, 0,176,244, 49,234,220, 10,133, 66,228,230,230, 62,241,145,173,252,252,124,155,157,173,218, 84, 85, 85, 9, 2, 2, 2,224, -229,229, 5,147,201, 4,149, 74,133,189,123,247, 66,161, 80,128,101, 89, 72, 36, 18,124,177,100, 29,110, 93, 57,137, 11, 23, 46, - 64,161, 80, 8,172,105,230,229,229,145, 86,173, 90, 65,167,211,129, 97, 24,104,181, 90, 28, 59,118,172,230, 53,143,199,195,204, -207,151, 34,243,210, 73, 92,189,122, 21,121,121,121,255,149,106, 35,141,240, 69,158, 58,234,142, 98,213,230,191,190,234,208,100, - 98,102,175,221,184,245,220,236, 73, 47, 97,242,168,248,160,249, 43,119,199,167,203,233, 70, 0,136,241, 34, 99, 94,237,213, 60, -216,213,129,143,207,182, 92, 2, 40,157,253,184,199,187, 81, 74, 51, 99,125,201,251,123, 46,228,158,252,232,165, 54, 8,243,115, - 14,111,214,140, 8,239,220,177,161,166, 32,203,192,205, 81, 20,153,208,218,243, 48, 88, 22,174, 78,162, 40,152, 24,184, 58,138, - 34, 7,198,185, 28, 2, 0, 87, 7, 65,148,165,145,175,250,104, 31,252,127,236,157,119,120, 20,213,247,198,223, 59, 51, 91,146, - 77,239, 61, 33,148, 36, 16, 66,145,222,131, 82,132,192,143, 34, 85,148,246,165,136, 40, 32, 72, 21, 65, 80,154, 82,165,131, 10, -130,116, 68, 32, 40, 69,169,210,164,166, 0,129, 80, 66,122,239,217, 62,115,127,127, 36, 27,151,144,178,155, 32, 42,206,231,121, -246,217,236,206,204, 59,119,118,147,236,187,231,158,115,174,116,172, 66,206,141,181,106,230,225, 59,162,119, 87,203,158,189,251, - 91, 90, 75,244,200,188,114, 2,121, 18,111,232, 28,253,160,214,101, 33,225, 81, 44,255,235,229, 59,137, 25,249,234,169, 85, 14, -147,226, 92,226,163,123, 46,181, 27,119,117,200, 56, 58, 39,173,246,200, 31,252, 25, 8, 76,254,206,126,169, 86,174, 45, 45,175, - 62,124, 84, 32,208,231, 35, 58,101,201,203,205,125,162,227,225,213,143,109, 86, 0, 0, 32, 0, 73, 68, 65, 84,161,228, 57,155, -216,211,223, 97,102,143, 70,200,206, 74,131, 74,171, 71,174, 82,175,117,183,183,144,171, 31, 69, 66,173,213, 67,163, 19, 32,177, -247,194,137, 75, 17, 25,130, 78,247,115, 69,154,177, 25,244, 38, 0,107,227,231,234,186,144, 38, 51,108, 45,111, 66,167, 68, 92, - 66, 18,182,135, 95,122,173,100,191,106, 67, 5,125,241,244,115, 9,134, 36,249,234, 36,193, 55,112, 35, 45, 45, 45,164, 95, 47, -155,242,118,112,155, 64, 71,185,144,112, 9, 68,208,194,138,231,160,148,241,176,243,169, 3, 65,147, 79,139, 84,170,156, 40, 64, -236,244, 46, 34, 98, 68,253,250,245,221,237,236,236,162,166, 77,155,230,216,175, 95, 63,252,248,227,143,200,203,203,195,182,109, -219,176,106,213, 42,204,159, 63, 31, 58,157, 14,155, 55,111, 86, 28, 56,112,160,229,250,245,235, 19,252,252,252, 26,198,197,197, -165, 84, 33, 77, 0,200, 1, 72, 80,252,217, 69, 0, 8,199,142, 29, 67,207,158, 61,113,236,216, 49,161,228, 57,158, 16,162,163, -148, 86,107, 61, 81,153, 76, 6,153, 76,134,220,220,220, 23, 98,182, 36, 18, 9,172,173,173, 33,147,201,144,159,159,111,182,217, -210,235,245,108, 66, 66, 2,114,115,115,209,181,119,111,172, 92,188, 24,157, 59,119, 70,215,174, 93, 65, 41,197,169, 83,167,208, -165, 93, 8, 6,255, 95, 40,238,220,185, 3,189, 94,111,210,120, 83, 82, 82,144,154,154,138, 55,123,247,198,150,245,235,209,170, - 85, 43, 4, 5, 5, 65,175,215,227,204,153, 51, 24,208,189, 29, 44,250,118, 65, 76, 76, 76,245, 47,254, 63,196,139,204,209,170, - 49,145,105,244,114,176, 11, 57, 58,164,123,203, 94,189,219, 7, 99,203,158, 95,191, 8, 14, 38,187, 1,192,201, 70,254,249,187, -157,235, 32,250,105, 54,126,189,153,116, 52, 58,253,197, 84,107, 8, 60,156,157,108, 21, 0, 43,131, 82, 43,232,109, 31,162,202, - 4,102,129, 82, 40, 58,206,192, 59,189,163,125, 90, 5,251,248, 24,170, 14,173,123,174,192,240,136, 7,190, 45,130,220,125,193, -235, 0, 94, 7,219,193, 63, 0, 11,203,141,228, 62, 67,251,218,242,147, 51,166, 78,105,219,163,239, 32, 75,153,194, 14,124, 94, - 60,116, 41, 17,200,188,127, 14,133,138, 0,164,196, 61,196,222,227, 87,114,239, 39,100,230, 49, 12, 78,164,230,170, 63,142,205, -162, 21, 70,139, 12,168,116, 88,252,233,156,169, 97,123,119,239,177,145,215,105, 79, 98,215,246,204,149,113,122,185,139,127, 51, -166,200,194,153, 46,218,182,199,182, 80,131, 37, 85,233, 20, 21,230, 29, 60,117,226,151,193,245,106,183,183,121,252, 71, 56,148, - 42, 53,212, 58,160, 97,203, 80,240, 60,149, 17,134, 8,182, 44, 75,210, 50,179, 65,116,124,234,249, 91,143,147, 47,220,122,200, -170,109,170,214, 54,134, 35,236,135,189, 67,155, 2, 58, 37,254,175, 99, 35,172,220,249,235, 7, 0, 70,154,163,241, 28, 66,113, - 68,139, 2,237, 27,186,146,141, 0,218, 95, 59,180,170,126,243,190,147, 1, 51, 34, 90, 33, 46,164, 71, 72, 93,207,239, 86,126, - 62,195,209,201, 59,128, 37,130, 14,212,189, 49,144,151, 64, 73,194, 37,216,121,181, 2,239,217, 14,155,215,124, 85, 32, 8,116, -119,117, 90, 91,136,136,188,202,168, 84,170,131, 75,151, 46,117,236,213,171,184, 29, 81, 65, 65, 1, 46, 93,186,132,173, 91,183, -194,202,234,217,255,147, 61,123,246, 4,165,212,113,222,188,121, 7, 1,180,169, 72,179, 93,187,118,189,215,172, 89,147,212,180, -105,211,135, 40, 54, 91, 82, 0, 76,100,100, 36, 19, 31, 31, 79, 28, 28, 28,168,167,167,167, 46, 41, 41, 73, 0,192,143, 26, 53, -138,181,182,182,174, 87, 80, 80,112,214,220,241, 27,140,150, 76, 38,123, 33, 57, 91, 18,137, 4,132, 16,200,100, 50, 72,165, 82, - 80, 74,205, 50, 91, 60,207,115,199,142, 29,195,181,107,215, 48,191,105, 83, 76,241,242,130,163,163, 35,206,156, 57, 3, 74, 41, -172,172,172,144,149,149,133,221,187,119,227,245,215, 95,135, 94,175,175, 50,162, 5, 0,251,247,239,199,245,235,215,177,176,121, -115, 76,177,179,131,181,181, 53, 78,157, 42,158, 13,148,203,229,136,139,139,195,169, 83,167, 16, 26, 26, 90,221, 75, 23, 41,193, -228, 95,158, 80, 66, 56,226, 6,119,173, 70, 9,170,167, 0,129,103,112, 48,145, 70, 71, 83,173,185, 39,101, 24,204, 89,179,253, -104,216,138,201,189,201,216, 62,175,121, 46,248,238,244,123, 0, 48,250,173, 64, 47,133,156,195,234,159,162, 41,195, 96,142,185, -186,229, 17, 28, 76,164, 12,131,247,186,182, 10, 66, 82,142, 6,177, 73, 57,191, 69, 83,106,210, 84,207,175, 43,222,193,247,135, -207,196,175,250, 94,117,151, 82, 10,123,107,121,208,240,219,177,190,223, 29,187,254,116,249, 94,213, 93, 42, 80,216, 43, 36,245, - 71,222,105, 87,101,213, 97, 11, 95,233,216, 89, 51, 62,110,215,103,228, 52, 11,253,221,125,208,196, 30,135,160, 85, 34, 79, 43, - 69, 14,235,142,132,167, 79,177,104,243,209,248,188, 66,205,224,200, 52,243, 12,102, 76, 6, 45, 8,118, 33,253, 22,125, 54,251, -228,226,207,231, 89, 43, 31,158, 41, 96,137, 94,201,214,234,196,125, 62,127, 5,201, 87,107, 6,197,102,209,252,170,116,212, 54, - 88,178,116,249,154,176, 49,195,250,223, 13, 12,232,228,196, 39, 61,114, 82,229,229,165,253,240,203,117,119, 20,127, 83, 36, 0, - 16,155,144,137,244,220, 66, 61,175,215,157,181,145, 96, 65,148, 41,209,193, 18,234,184, 17,151,126, 29, 26,191,237, 98, 35,133, -178, 32, 7,174, 54, 18,116,111, 85,247,237, 58,110,100,198,195, 84, 90, 97, 51,184, 42, 17,116,160, 58, 37, 46, 47,121,189, 62, -229,117,245,193,235,160,189,189,195,108, 25, 74, 48,101, 98, 71,107, 91, 7,205, 99, 6,133, 86,128,165, 51,136,173, 31, 96,231, - 79, 36, 13, 6, 33,233, 97,148,254,131,183,135,101, 62,122,146,240,141,179, 37,106, 92,249, 35, 34,242,170, 17, 23, 23,247,238, -172, 89,179, 46,180,106,213,202,205,217,217, 25,141, 26, 53,194,225,195,135, 49,109,218,180,210,125,154, 54,109, 10, 74, 41,178, -178,178,176,116,233,210,148,164,164,164,119, 43,211,140,138,138,186,251,253,247,223,119, 12, 14, 14,214, 74,165,210, 28, 0,242, -156,156, 28,139,172,172, 44,162, 82,169, 32, 8,130, 96,103,103,199, 39, 37, 37,233, 6, 15, 30,172,190,120,241, 98,221,194,194, -194,184,234,140,223, 96,178,124,124,124, 34, 51, 51, 51,115, 9, 33, 53,110,253, 96, 48, 89,206,206,206, 46, 5, 5, 5, 2,128, -236,234,180,126,208,235,245,104,222,188, 57,142,159,187,129, 99,191, 94, 68, 94,210, 61,188, 55,230, 93, 52,106,212, 8,199,143, - 31,175,238,240,208,164, 73, 19,252,114,234, 2, 46, 92,187,133,184,152,219,248,224,189, 49,104,216,176, 33,126,249,229,151,106, -107,254, 7, 9, 47,147,155, 85,186, 84,143,193,104,133,134,135,135, 27,190,153, 63,103, 95, 27,184,144, 38,158,245,100, 59,230, -245,168,219, 64,210,117, 30,136,196, 18,251, 2,126,105, 55,103,209,218,187,141,220,200,176,136,212,170,171,195,140,137, 76,165, - 81, 13, 93,201,174, 91,119,234,191,253,127,173,124,176,229,176, 98, 46, 0, 12,234, 80, 27, 87,239,167,227, 74, 76,218,174,168, - 52, 26,101,230, 69, 62, 71, 35, 55,162, 0,197,174,165, 31,246, 9,245,243,118,199,214, 31, 47,128, 16, 28, 52,229, 88, 74, 41, -109, 21,236,135, 85,223,151,173, 48,116,247, 93,190, 87,117,247,120,100, 94, 15, 0,232,214,192,234,231, 22,117, 29,124,171,138, -108, 88,202,184,113, 61,250,191, 99,161,143, 57, 12, 60, 57, 5,162, 87, 67,169, 21,144,156,145,143, 34, 59, 31,156,185,116, 75, -153,171,210, 76,142, 50,211,100, 25,136, 78,167, 15,155,122,144,167, 5,133, 74, 15,133, 75, 93, 21,203, 8, 66,129,154,226,106, -244,147,188,168,100,122,207, 20,141,216, 88,170,105,227, 77, 58,108,220,190,247, 83,137, 84, 54,136, 37, 32,174,246, 86, 46, 27, - 87, 44,132,141,141, 53, 4, 77, 1, 80,152,142,126,239, 47, 74,143, 72,212,214, 6,128, 64,103, 98,221,177,142,116, 59,199,144, -132,223, 30,104, 62,169,234, 28, 68,135,241,195,186, 55,149, 8,154, 66,124,184,116, 15, 54,205,232,131,119,222,104, 32, 9,255, - 61,102, 60,128, 5,213,185,118,160,184, 32,129,234,148,104, 51,251,220, 93, 2, 92,160, 64,251,107,123, 63,175, 15,220, 48, 89, -163, 25, 33, 18,206,131, 52,104,236,107, 37, 21, 18,126,135,144,240, 59,101,125,218,129,248,118, 36,196,189, 57,253,122,217,252, -194, 45, 91,182,158, 16, 24,124, 86, 85,171, 12, 17,145,255, 42,148,210,135,246,246,246,111,246,236,217,243,215,227,199,143, 59, -134,132,132, 0, 0,174, 93,187, 6, 0,104,222,188, 57, 2, 3, 3,145,154,154,138, 33, 67,134,100, 36, 39, 39,191, 73, 41,173, - 52,231, 55, 63, 63,255,209,254,253,251,221, 10, 11, 11,155,126,242,201, 39,105,126,126,126,121, 42,149,138,228,228,228, 8,122, -189, 30, 14, 14, 14,178,166, 77,155,162,109,219,182, 5,151, 46, 93,170, 21, 31, 31,159, 15,224, 73,117,198,223,167, 79, 31,156, - 59, 87, 92,180,247, 34,250,106, 73,165, 82,132,132,132,120, 61,124,248, 48, 17, 0,170,211, 87,203,248,227,229,214,173, 91, 56, -123, 35, 1,156, 70, 9, 89,122, 18, 46,255,184, 31,189,199, 77,128, 94, 95,253, 44,134, 91,183,110,225,208,169,203,176,146,115, -184,119, 47, 10,251,247,239,199,123,239,189, 87, 35,205,106, 82,169, 23,249, 39, 67, 41, 77, 6, 80,110,158, 22, 7, 0, 97, 97, - 97,103, 81, 78, 87,219,186,117,137, 76, 94,128,121,221,155,123, 77, 31,212,190, 46,171,203, 75,130,192, 11, 96, 37,128,171,179, - 45,118,236,216, 85,123,215,158, 61,151,154,120, 73,214, 8,122,253,156,136, 84, 90,100,198,184,230,173,216,115, 97,208,142,169, -161,220,123, 61,234, 59, 2,128,148, 99,176,250,112,148, 30,192, 60,179,175,210,136, 54,222,196,162, 64,135,177,238, 78,118,115, -103,253, 47,204, 49,180,121, 32,206, 94,137,196,154,253,151,206,201,210,240,189,169, 58, 84,208,161,172,127, 42,175,234, 16, 66, -213,121,151, 60, 79,221,165, 86, 14,208, 62, 57, 13,104, 85, 80,169,181,136,207,228, 17,159,165, 2,167,144,226, 90, 76,130,210, - 41, 5, 71,171, 20,170, 0, 66, 8,105, 95,199,194,243,211, 47,150,123,171,148, 5,250,188,236, 12,189, 84,118, 89,162,176,148, - 39, 87,125,244,159, 92, 74,160,170, 78,181,165,205, 0,129,149, 89,208,162,217, 31,141,176, 74,140, 62,142,122, 76, 18, 8,165, -176,108, 16, 6, 27, 75, 86,218,193, 95,250, 20, 0,252,221,237,100, 75, 63,155,102, 55,121,198,103, 85,230,128, 5, 19, 34,109, -212,194,125,114,136,159, 3,206, 93,191,139,115, 17,113, 81,231,174,221,107,216,185,145, 39, 2,189,237, 39, 5, 19,178, 36,154, -154, 31, 33, 5, 0, 80, 61,160, 83,149, 86, 29, 6,187,145,161, 45, 6,125, 82,110,181, 97, 69,248, 3, 66, 12, 79, 65, 88, 22, - 32, 76,113, 5,100,252,239,224,236,235,208, 93,123, 15, 21,109,221,250,253,194,232,244,154,247,175, 17, 17,121,213,201,201,201, -185,173, 80, 40,186, 55,110,220,120,219,135, 31,126,104, 51,108,216, 48,207, 49, 99,198, 48, 0,144,154,154, 42,172, 90,181, 42, -233,235,175,191,206,205,200,200, 24,169,213,106, 35,170,210,163,148, 82, 66,200,197,111,190,249, 38,253,252,249,243, 13, 91,182, -108, 41,111,214,172,153,224,224,224,192,201,229,114, 94,163,209,168, 98, 98, 98,248,135, 15, 31,122,228,228,228, 60, 0, 16, 91, -157,105,253,146,232,213, 2,150,101, 63,165,148,134,188,136, 28, 45,133, 66,225, 9,224, 1, 33,164,158,185,211,134,101,225, 56, - 14,217,217,217, 40, 74,137,130, 69,194,125, 52,182, 98, 16,236, 96, 13, 91, 91,219, 26,153,162,220,220, 92,160, 48, 17, 23, 46, -220, 2,244,122,216,217,217,193,206,206,238,165, 27,173,138,188,200,191,129,178,149,134,192,159, 9,242, 21,254, 2, 53,116, 37, -239, 57,200,176,106, 92, 88, 93,169,191,175, 55,212, 9,215,112, 43,190, 0,115, 90,183,140,102,229, 54,170,113,239,246,105,222, -127, 64, 45,132,182,109, 65,252, 61,236, 38, 45, 89,177,225,253,134,110,100, 90, 84, 42, 93,109,202,160,162,210,232,163, 6,174, -100,235,233,219, 9,227,189, 21, 74, 8, 2,197,233,136,100, 68, 60,201,222,122, 39,141,150, 91,242, 91,225, 88, 61, 73, 23, 14, -204, 30, 74,169,133,157,149, 85,126,211, 38,245,157,187,180,105,194,188,217,169, 57,164, 44,112,225,234, 45, 76, 89,113,240,178, - 32,208,176,235, 38, 78, 27, 22, 87, 24, 62,107,160,138, 43, 12,117,207, 84, 24, 82, 74,105,113,213, 97,229,105, 95, 44, 75, 82, -138,226,254,112,151, 56, 5, 64, 25,123, 26, 79,178, 5,196,165,229, 35,143,115,135, 58, 49, 17,160,194,211, 51,148, 86,251,183, -218,217,217,217,181,118,112, 96,221,181,219,247, 67, 91,148,139, 71,103,182,161, 32, 59, 25,159,111, 60, 92,215,219,219,187, 83, - 66, 66,194, 89, 83,181, 8, 33,129,191, 30,221,229, 10, 10,176, 18, 57,194,215,239, 69,134,147, 37,156, 21, 82, 8,202,116,140, -155, 60,204,174, 71,215, 97,118, 0, 16,119,239, 38,252, 20,202,170, 36, 1, 0, 90, 39,244, 31,212, 57,200, 30, 58, 37,182,255, -114, 83,197, 0,111,126,127, 34, 42,182,115,125,123,139, 65,237,253, 28, 22, 36,229,188,133,106, 54, 21, 53, 68,180, 12, 84,167, -218,112, 31,165,124, 3, 23, 18,187,231, 98,154,213,128,174,205, 20, 82,142, 16, 90,144, 8,106,233,140, 13,219,247, 21,200,116, -229,127, 91, 17, 17, 17,121,158,162,162,162,235,132,144, 70, 31,127,252,241,208,217,179,103,119,180,178,178,170, 13, 0,133,133, -133,143,116, 58,221, 57, 0,187,204,169, 14, 44, 49, 78, 15, 8, 33,143, 98, 99, 99,221,118,238,220,105, 15,192,162,100,179, 10, - 64, 14,128,212,154, 84, 28, 26, 76, 21, 33,228,211,170,246, 53, 67,243, 88,137,102,189,234, 28,207, 48, 12, 79, 8, 1, 33, 4, -114,185, 28,231,207,159,199,192,176,174,184, 19,158,131, 16,123,107,180, 28, 57, 14,123, 78,158, 4,203,178, 32,132,128,101, 89, -179, 62, 71, 56,142,195,133, 11, 23,240,206,144, 1,144,115,128,157,157, 29, 62,254,248, 99,252,244,211, 79,224, 56,113,149, 62, - 83, 49,152, 42,243,250,104, 17, 44, 56,185,109,145, 20,188, 14, 71,182,125,133,163,145, 5,154,123,233,152, 19,148,142, 85,251, -145, 47,164,175,248,126,252,201, 11,145, 95,142, 26,220, 75,241,122,231,174,120, 61,180, 51,215,176, 69,167,185, 0, 74,141, 22, - 33,164, 75,101,189, 54,120, 1, 11, 55,255,114,119,220,158, 51, 49, 4,218,124, 12,238,214,130,242, 2, 22, 86,118, 49,229,105, -218, 89, 90,239,185,112,233,146, 3,180, 5,120,114,243, 55,139, 90,181,235, 2,188, 22, 15, 30,220,199,215,219,127, 20,206, 92, -189,183, 67,163,199,135,177, 89,180,208, 84, 77, 0,128,160,135,157,149, 44,168, 71,136,221,207, 2, 40,236, 21,210,250, 84,224, - 97,175,144,212,239,214,192,234,103, 74, 41,181,177,148,212,167,252,243,222,173,172,166, 82,163,223,180,253,219,173,203, 71,143, - 30,109,149,145,144,130,164,188, 72, 20,200,188,160, 83,248, 32,246,230, 57,101,145, 90, 95,229,135,120,101,175,103, 70, 70, 70, -218,245, 43, 89,216,179,113, 49,116, 26, 53,210, 18,138,189,106, 82, 70, 30,108,157,189, 46,153,163,169,213, 11,185,253,135,141, -149, 90,218,192,242,157,254,189,100,177,153,106,188,230,105, 3, 0,160, 5,233,184,115,234, 2, 66, 11,207, 2, 0, 30,198, 51, -240,107,226,105,210, 56,109, 44,164, 31,246,104,230,133, 71, 79,147,113, 62, 42,113,251,195, 76,154, 84,199,137,108,143, 77,202, - 25,223,167,181, 47, 86,254, 20,253, 1, 42, 48, 71, 21,105, 6,187,145,161, 0,218, 23, 39,195, 43, 65,129,246,193,110,100,168, - 41,149,134,229,105,114, 82,188,189,252,231,184, 79,246,253,145,209,103,250,219, 29,108,219,182,237, 41,131, 94,131,124,165, 90, - 23,157, 77,243,170,163, 89, 83, 68, 77, 81,243,223,170, 89, 98,122,118,148,220, 94,164,102, 18,202,244,117,170,137, 38,240,236, - 52, 33,165,148, 43,137,102, 85,154, 12, 95,149,166,241, 52, 33,165,244, 88, 73, 52,171,210,168, 86, 89, 77, 65, 16,146,154, 55, -111,238,216,187,119,111,240, 60,143,251,247,239, 35, 46, 62, 30, 93,198,127, 0,123,123,123,156,187,125, 27,247,238,221,195,167, -159,126, 10,157, 78,135, 67,135, 14, 61,215,225,189,172, 38,199,113,218,186,117,235, 74,251,246,237, 11,189, 94,143,135, 15, 31, - 34, 49, 49, 17, 83,166, 76,129,157,157, 29,174, 95,191, 94,170,153,145,145, 1,142,227,158,155,105,248, 43,126,151,254,237,148, -103,178,128,202,147,225,121,240, 58,228,158,156,135,213,231,161,213,234, 80, 63, 42,141, 62, 54,218,190,161,177, 19, 57,114, 59, -242,238,163,235,191,191, 46, 67, 90, 68,241, 49,102, 16,147, 65,147, 91,248,112,249,208,230,219,226,225,207,120,156,154, 95, 16, -147, 65,205,154,234, 2, 0, 42,240, 4,218, 34, 32,249, 26, 46,158, 59,139, 51,151,111,225,143,136,187,252,197,235, 49,123, 24, - 1, 11,163, 51,232,125,179, 53, 41,133,117,216, 74,140,136,120,224,219, 34,208,205, 23,188, 30, 84,208,193,110,240, 46,140,140, -110,235,219,162,142,189,111,113, 36, 75, 7,135,255,253, 6, 44,183,168, 84,239,143,167,218,205,237,107,203,223,202,207,201,108, -253, 70,167, 54, 86,118, 13,122, 32,227, 65, 12,238,223,186,160,188, 30, 25,123,241,143,167,218, 26, 69, 75,188,188,188, 58,190, -209, 41, 8,131,199,205,130,182, 40, 23, 15,207,124,139,130,172, 20,156,191,100,141,187,121,121,109, 0,156, 53, 85,235, 98,156, -174, 33, 0,180,247,151, 62,181,129,218,253,221, 94,189, 33, 39, 42, 8,234, 60,144,162, 12,196, 38,106,114,223,218, 24,207, 3, -128, 66, 78, 56, 43,154,107,107,138,110,176,159, 83,128,130,213,225,251,147, 81, 16,132,226,229,155, 4, 1, 27,190,255, 45,118, -252,194,119, 94, 67,176,175, 67, 19, 66, 8, 49, 39,228, 79, 40, 58,252,177,231,179,250,170, 95,231, 2,130, 22, 23, 38, 57,214, -239,176, 58,171, 3,170, 25, 25,139, 72,164,137, 0,198, 55,240, 36,155, 38,173,254,101,110,243,147,209,237,167,254,175,143, 45, -168,184, 0,187,136,136,200,203,167,160,160, 96,220,200,145, 35, 55, 73, 36, 18, 23, 0, 68, 16, 4, 8,130,192,125,249,229,151, - 18,158,231, 25,134, 97,120,150,101,245,199,142, 29,211,241, 60,159,174, 82,169,198, 85,165,169,215,235, 99, 39, 76,152, 80,183, -170, 10,197,221,187,119,131,227, 56,173, 94,175,143,125, 97, 23,244,138, 82, 94,179,210,170,219, 59, 80,124,214,238,157,121,243, - 0, 16, 80,204, 47, 99,178, 0, 0,183, 51,105, 82, 67, 87, 50,165, 97,139, 78,243, 12,199,152, 59, 56, 21,207, 15,104,209, 40, -112, 55, 0,168, 41,255,142,185,199, 3, 64,158, 90, 57,168,105,139, 54,123, 4, 74, 57, 61,165, 91, 25, 1, 7, 84,122,220, 49, -165,210,174, 34,146,210,114,174, 27, 22,138, 22, 64,255,156, 46, 44,105,227, 64, 41,165,165,211,133, 95, 89, 32, 35, 87, 93,101, - 31,168, 11,143,212, 93, 91,248, 74,199,158,248,253,230, 56,158,167,238, 44, 75, 82,148, 26,253,166,154,154, 44, 0, 72, 72, 72, - 56, 27,236, 74, 78,220,110,226,214,205, 89, 81,252, 92, 70, 17,144, 81,132, 19, 9,105,249,103,171,163,153, 93,168,235, 51,123, -213, 79,135,101, 18,150, 3,165,197, 13, 69, 41,133, 74,203,103, 25,204, 88, 99, 39,226,249,241, 33,253,110,150, 37,113, 85,233, - 93,185,151,188,114,240,146, 83,211,162,158,100,111,125,156, 77, 35, 1,224,113, 54,141,172,231, 68,230,198,166,228, 79,139,140, -203,254,202,220,188, 10, 74,112,190,197,224,121,207, 61,103,142, 70,121,220, 73,162,183, 0,244,107,232, 74,186, 14,158,250,245, - 84, 66,204,251,246, 44, 34, 34,242,239,198, 16,213, 98, 24,166,218, 69, 58,229,104, 30, 35,132,244, 4,240,192,140, 99,174, 0, -104,244,162,198, 80,162,153, 9, 32,243, 69,106,254,215,169, 86,195,210,168, 52,186, 1, 38, 44, 26,109,234,126, 21, 30,159, 68, - 79, 1,112,170,238,241, 70, 26,142, 53,209, 40,203,237, 84, 58,247, 69,234, 25, 40, 49, 85,127, 73,174, 79,116, 26,237, 14, 0, - 1, 1, 1,244,193,131, 7,160,148,214, 40,169,240, 78, 58,189,133, 50, 75, 57,148,229,118, 38, 77, 2,208,193, 20,189,152, 12, -186, 16,120,126,106,248, 65, 38,253, 28,192,231,213, 25, 99,117, 59,191,155, 74, 84, 26, 61, 9, 84,221,157, 95, 68, 68,228,213, -227, 69,118,134, 55,210,172,209, 2,211, 34,255, 76, 42,107, 88,202,252,125,195, 18,249,171,184,127,255, 62,169,169,201, 18, 17, - 17, 17,121,133,225,107,120, 43, 15, 90,195,155,200, 43, 64,121,213,135,162,209, 18, 17, 17, 17, 17, 17, 17, 17,169, 33, 21, 45, - 42, 77, 0,116, 41,239, 0,115,170, 9, 8, 33,229,106, 84, 70, 85,250,162,166,168, 41,106,138,154,162,166,168, 41,106,190,122, -154, 85,105,191,114,213,140,212, 40,201,249, 69,223, 0,116, 17, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212,124,149,111, - 0,198, 86,244, 88,156, 58, 20, 17, 17, 17, 17, 17, 17, 17,249,139, 16,123, 3,137,136,136,136,136,136,136,136,212,140, 42, 23, -149, 22, 17, 17, 17, 17, 17, 17, 17, 17,169, 6,180,170, 69,165, 69, 68, 68, 68, 68, 68, 68, 68, 68,170, 71,181, 22,149, 22, 17, - 17, 17, 17, 17, 17, 17, 17,169, 26, 90, 73,103,120, 82,146, 29, 47, 34, 34, 34, 34, 34, 34, 34, 34,242, 2,120,174, 51,124,120, -120, 56, 53,190, 23, 17, 17, 17, 17, 17, 17, 17,121,153,188,170, 94, 68,156, 58, 20, 17, 17, 17, 17, 17, 17, 17,169, 1,229,229, -104, 25, 16,141,150,136,136,136,136,136,136,136, 72, 13,168, 44, 71,203,208,176, 52,180, 36, 84, 23,250,114,134, 36, 34, 34, 34, - 34, 34, 34, 34,242, 12,175,164, 23, 41, 77,134, 15, 15, 15,167, 97, 97, 97,228,111, 30,143,136,136,136,136,136,136,200,127,148, - 87,209,139,136, 85,135, 34, 34, 34, 34, 34, 34, 34, 34, 53,192,184,202,176,236, 99,113,173, 67, 17, 17, 17, 17, 17, 17, 17,145, - 23, 64,121, 73,241,127,169,209, 34,132,116, 17, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212,124,213, 49,152,172,178,102, - 75,172, 58, 20, 17, 17, 17, 17, 17, 17, 17,169, 1,166, 84, 29,138,136,136,136,136,136,136,136,136, 84, 3, 66,200, 88, 66, 72, -175,146,159,123, 25, 71,181,196,136,150,136,136,136,136,136,136,136, 72, 13,160,148,110, 38,132,120,148, 24,172,112, 74,105,178, - 97,155,104,180, 68, 68, 68, 68, 68, 68, 68, 68,106, 64,153,188,172, 48, 66, 72,233,116,162,104,180, 68, 68, 68, 68, 68, 68, 68, - 68,106, 64,101, 57, 90, 4, 64,185,149, 3,148,210, 83,166,158,160, 58,213, 7, 85,233,139,154,162,166,168, 41,106,138,154,162, -166,168,249,234,105, 86,165,109,142,255,248,167, 80, 94, 91,135, 82,243, 69, 41,253,203,110, 0,186,136,154,162,166,168, 41,106, -138,154,162,166,168, 41,106,254, 87,111, 47,188,234,176, 25, 33,150, 47, 90, 83,228,239,135, 16,226, 70, 8,113,251,187,199, 33, - 34, 34, 34, 34, 34,242, 79,231, 47,171, 58, 12, 38,228,127,255, 11,113,217,216,136, 16,219, 8, 74,139, 42,219,215,213,213,117, -147, 66,161, 24, 86, 84, 84, 84, 72, 8, 17, 12,207,151, 56,101,227,117,129, 30,166,165,165,117,168,234,220,114,185,124,149,155, -155,219,255, 10, 10, 10,138, 8, 33,148, 16, 2, 66,138,151, 75, 42,123,207,243,124, 66, 70, 70, 70,115,115,175,239,159, 4, 1, - 88,103, 55,183,171, 18,150,245, 50,247, 88, 94, 16, 30,167,166,164,180, 49,249, 92,132, 44, 38, 4,211, 75,126, 94, 70, 41,157, -101,238, 57,255,241, 16,194,154,178, 91, 8, 96, 19, 3, 12,230, 25,230, 3, 9,176, 78, 45, 8, 27, 1, 0,148,242,213, 61,181, -230, 42,169, 75, 40,154, 16, 2, 59, 74,145, 75, 9,110,201, 90,210,216,234,234,213, 4, 66, 72,127,137, 68,210,199,214,214,214, - 58, 51, 51,243, 44,128,221, 0,134, 56, 57, 57,117,202,203,203, 43,208,233,116, 63, 81, 74, 15, 86, 71,187, 99, 83, 50, 67, 38, -149,140, 82,105,117, 75, 47,220,164,223,134, 54, 35, 78,122, 1, 75, 44,164, 92, 7,181, 70,191,236,252, 45,186,213,204,177, 18, - 20,167, 63, 0, 0,165, 37,255, 60,204, 97,191,137,239, 59, 0, 28,114,112, 8,148,187,216,254, 42,145,177,143,115, 82, 11,134, - 13, 72, 75,139, 31, 80,131,247,253,159,136,139,139,203, 8,134, 97,190,160,148,130,231,249, 57,153,153,153,219, 94,132, 46, 33, -100, 14, 0,251,146,135, 57,148,210, 47,106,168, 23, 7,192,183,228,225, 83, 74,169, 95, 77,244,254,203, 16, 66, 54,252,248,227, -143,227, 59,119,238,140,149, 43, 87, 98,195,134, 13, 79,210,211,211,151, 0,216, 78, 41,213,188,108,157, 87,145, 23,102,180, 26, - 18,210,115, 68,247, 86,155, 38, 14,234, 73, 38,143,248,164, 82,147,229,226,226,242,205,155,111,190,249,206,246,237,219, 37, 49, - 49, 49,150,254,254,254, 96, 24,166,212, 8, 25,255,191,172, 85,171,150, 80,145,142, 1,150,101, 87,247,235,215,111,228,254,253, -251, 21,215,175, 95, 87, 52,104,208,160, 84, 79, 16, 4,148,253,255,235,239,239, 95,169,158,157,157,221, 53,150,101,189,129,231, - 77, 90, 69, 63,243, 60,159,144,153,153, 89,165,121, 35,132,116, 7, 48,179,170,253, 0, 44,161,148, 30,175,108, 7, 9,203,122, - 37, 37, 37,185,154,160,245, 12, 62, 62, 62, 90, 83,247, 45,142,100, 97,186, 32, 80, 6, 0, 24,134,204,176,176,176,216,168, 82, -169,158, 26,182, 3, 0,165, 52,213,156, 49,120,121,121,189, 69, 41, 29, 7,128, 18, 66, 54, 39, 38, 38, 30, 48,231,120, 91, 91, -219,107, 50,153,204,155,227,184,210, 55,195,248,125, 41,251,152,231,121,170,213,106, 19,178,178,178,204, 54,216,103, 1,242, 38, -208, 81,207,178,147,157,156,157, 59, 92, 63,113,194, 42, 36, 36,132, 97, 89,118, 22,128,141,230,234, 25,163,185, 74,234,242, 58, - 12, 84,234,228,189,228,126,243, 3,213,113,243, 99, 44, 37,234,163,154,171,100,223,203, 54, 91,132,144,225,195,135, 15,159,188, -116,233, 82,103,153, 76,198,236,221,187, 55,112,202,148, 41,253, 87,174, 92,233, 60,104,208, 32, 27,141, 70, 35,204,152, 49, 35, -152, 16,226, 74, 41, 93,111,142,118,219,166,164,117,144,191,199,167, 19,135,189,142,105,139,119, 79,108,223,136,100, 88, 90, 73, - 55,188,213,161,174,125,195,218, 14,248,108,211,197, 15, 1,152,108,180, 8, 33,132,227,184, 54,158,158,158, 1, 42,149, 74, 15, - 0,174,174,174,165,127,232, 44, 91,236,159, 52, 26,141, 38, 43, 43,107,159, 57, 99, 45,143,105, 22, 22,173, 90,217, 91,159,156, - 55,116,184,101, 94,118,150,219,234,240,195,183,247,195,181,241, 0,224, 73, 77,181,255, 73, 48, 12,243, 69, 98, 98,162, 7,165, - 20, 30, 30, 30, 95, 0,216,246,130,164,237, 13,255,135, 9, 33,246, 85,236,107, 10,190, 70,122,190, 85,236, 91, 37,132, 16, 11, -142, 97, 38,200, 36,146,110, 60,207, 55, 2, 0,150,101, 35, 52, 58,221, 73,189, 32,172,163,148,170,106,122,142,127, 48,211,199, -143, 31,223,117,246,236,217,254,211,167, 79,199,244,233,211,107,109,217,178,101,211,162, 69,139,102, 16, 66, 26, 83, 74, 11, 94, -178,206,191,146,242,114,180, 12,188, 16,163, 21, 76, 72,243, 55,154,212, 59, 48,105,196, 96, 8,251, 87, 17,140,248,164,194,125, - 93, 92, 92,190,105,211,188,249,168,237,219,183, 3, 0,134,245,233,131,110, 45, 91,194,198,218, 10, 50, 89,241,112, 8, 37,144, - 74,164,232, 59,229,163, 42,207, 77, 8, 89,214,191,127,255,183,247,239,223,111, 13, 0, 27, 54,108, 64,255,254,253,225,232,232, - 8,133, 66, 1,169, 84, 10,137, 68,242,204,125, 85,176, 44,235,157,152,152,232,106, 97, 97, 1,160,216,248, 9,130,240,204,205, -104,158, 26,122,189, 30, 1, 1, 1, 85,234,150, 48, 51, 55, 55,183, 99, 97, 97, 97,165,115,186,181,107,215, 6,128, 74,141,150, -129, 47, 62, 95, 8, 65, 95, 8,142, 3,244,122, 64,173,101, 32,148,243,221,222,211,211, 19, 19, 38, 76,120,206,120,154, 67, 88, - 88, 47, 66, 8,217,239,233,233,121, 32, 45, 45,205,159, 16,140, 1,170, 21,233,122,255,254,253,251,214, 0, 16, 24, 24, 56, 1, -128, 89, 70,139,227, 56,239,219,183,111,187,202,229,242, 10, 35,151, 70, 38, 24, 90,173, 22,175,189,246,154,222,156,115,184, 1, -190, 89, 12, 51,166,105,179,102, 99,231,245,237,107,113,245,234, 85, 11,134, 97,160,215,235,241,229,151, 95,234, 41,165,246,193, -128,109, 52,144, 87,145, 6, 33,100, 54,128, 17, 40,142,210,110,165,148,126,249,204,118,138, 38, 74,157,188,215,195,130,190, 45, - 91,213,154,129,232,168,136,150,117,172, 15,193,134, 83,199, 2,120,169, 70,203,214,214,182,207,202,149, 43, 93,182,110,221,154, -119,239,222, 61,237,198,141, 27, 93,198,141, 27,103,163,213,106, 49,126,252,248,244,160,160, 32,233,202,149, 43, 93, 14, 30, 60, -248, 58, 0,179,140, 22, 71,176,112, 72,159,110, 80,233, 24,232,116,122, 23, 15, 23,155, 29,147,134,135, 74, 40,213,224,251,159, -174, 67,167, 23,190, 53, 85,171, 36,146,213,102,192,128, 1,117,118,237,218,197,221,189,123,151,171, 95,191, 62, 4, 65, 0,207, -243,208,233,116, 0, 0, 65, 16, 80,175, 94, 61,179, 94,131,242, 24, 5, 4, 58,187, 57,158,108,211,179,135,165,135,133, 28,142, -217,233, 24, 45,229,108,182, 41,212, 59, 1,180,173,241, 9,254, 65, 80, 74,193,113, 28,226,227,227,225,234,234,106,233,232,232, -152, 12, 96,126, 86, 86, 86,133, 21, 85,255,118, 8, 33, 45,101, 28,119,224,251,111, 87,187,183,106,219,150,117,243,112, 69,204, -253,167,224, 8,223,229,246, 31,215, 67, 71,189, 55,117, 18, 33,228, 45, 74,233,213,191,123,172, 47, 26,143,118,239,247,243,104, -255,193, 6, 66, 5,124,182,246,112,254,226,101,171, 20,227,199, 12,103,167, 76,153, 2, 31, 31, 31,255,126,253,250, 45, 3,240, - 94,149, 58,173,223,239,231,222,118,226, 6, 80,138,121, 95, 31,206, 95,180,108,149,226,189,106,232,252,155,161,149, 84, 29,214, -216,104, 5, 19, 82,167,161,143,235,137,197,211,223,147,208,159,191, 99,138, 50,211, 80,145,149,113,117,117,221,212,163, 71,143, - 97,219,182,109, 43,125,174, 77, 72, 8,250,189,222, 30,174, 78,118, 80, 88,201,138, 63,142, 4,130, 91,247, 30,155,100, 8,124, -124,124,198, 31, 56,112,192,218,240,216,211,211, 19, 82,169,180,244,102,108,178, 12,183,178,145,143,242,176,176,176,192,169, 83, -167,192,113, 28, 88,150, 5,199,113,165, 55,227,199, 44,203,194,205,205,172,212,165, 37,118,118,118,141,243,243,243,109,115,114, -114,224,235,235,155, 7,224,182,209,246,198,233,233,233,182,230, 8, 10,250, 66, 76, 25,221, 0, 18,205,101,104, 36, 45,161,228, -218,225,226, 31,119,112,244,248, 89, 36, 38,165,160,125,235,166,120,119,232, 0,156, 60,121, 18, 60,111,222, 76, 7,165, 52,149, - 16,178,172,119,239, 94, 51, 0, 66,186,116,233,146, 51,113,226, 68,230,238,221,187,111,247,235,215, 55,228,254,253, 7, 0, 0, -134, 33,211, 9, 33,171,205,136,108,201, 0,224,220,185,115, 0, 32, 55,107, 80, 37,200,229,114, 92,186,116, 9,134,105, 98,134, - 97,192, 48, 12, 88,150,197,145, 7,206, 40,212, 48, 40, 74,141,196, 7,189,124, 81,187,118,109, 48, 76,213, 41,137,161,128,197, - 69,160, 31,145, 72,166,120,120,122,250,119,170, 83, 71,113,234,212, 41, 22, 0,252,252,252,104,114,114,114,206, 79, 63,253,148, -207, 1, 27,252, 40,221, 94,153,201,242,245,245,109,199, 48,204, 23,134,215,156, 16,178,204,223,223,255, 83,195,118, 65, 16, 48, -180,171,163,100,210,164,201,210, 86,161,197, 95, 78, 90,245,222,133,188,135,139, 27,144,172,217,118,213,121, 77,106, 66, 94, 94, -222,158,122,245,234,177,153,153,153, 23, 1,196,233,116,186,153, 59,118,236,112, 29, 61,122,116,218,206,157, 59,151, 0,240, 92, -186,116,105,104, 97, 97,225, 94,115,116, 59, 52, 33, 61,155, 55, 13,105,237,235,227,131,179, 23,175, 66, 42,147,216, 79, 24,209, - 11,214,214, 28,190,218, 26, 46,196, 37,100, 77, 60,127,139,110, 55, 69,171,196,100,181, 28, 48, 96,128,255,174, 93,187,100, 0, -112,251,246,109,164,164,164,192,197,197, 5,150,150,150,144, 72, 36, 96, 89, 22, 18,137,196,236,215,160, 44,163,128, 64, 59, 31, -167, 43,135, 14,253,100,233,232,104,143,181, 31, 77,194,187,105,169,176,183,177,134,174,160,176,242,208,248,191, 12, 66, 72,224, - 91,111,189,101,193,243, 60, 10, 11, 11,113,230,204, 25, 59, 75, 75, 75, 59,111,111,239,121, 0, 76, 54, 90,150,150,150,169, 42, -149,202, 21, 0, 44, 44, 44,210,148, 74,165, 27,128, 60,185, 92,110,248, 63, 93, 80,114, 62,147,166, 19, 43,152, 38,124,106, 20, -201,122,106,198,101,150,213,110,209,178, 69,227, 83, 7,247,255, 96,157,155,159, 2,123,135, 52, 48,200,197,230,205,235, 96,105, -105,139,121,243,102,115,143,187,188,238,213,189,231, 91,167, 8, 33, 93, 94, 57,179, 69,201,230, 46,189,135, 57, 90, 42,108, 0, - 0,130, 94,135,109, 91, 38,129, 97, 24,124,250,233,167,104,216,176,225, 88, 66,200, 39,148,210,172,202,101,176,185, 81,199, 65, -142, 50,139,226,183, 88,224,117,216,184,123, 90,177,206,172,113, 24,210,187,246,216, 91, 59,201, 47, 13,235, 32, 31, 0, 40,133, - 82,194,224, 41, 90,210, 52,131, 70,120,120,120,167,176,176,176,179, 21, 61,254,167, 67, 8,241, 0, 16,102,252,156,193,124,113, -225,225,225, 52, 44, 44,172,212,121,148,125, 92, 25, 77, 9,113,118,179, 83,156,218, 48,127,146, 53,119, 57,156, 85, 62,125,128, - 36, 21, 95,250,151, 67,203,148,104, 42, 20,138, 97,219,182,109,123,198,135,249,186,185, 66, 42,149, 64, 34, 37,176,239,208, 11, - 0,144,115,254, 40, 8, 41,223,100,149,213, 44, 44, 44, 84,221,188,121,211,122,235,214,173,112,117,117,133,191,191, 63, 20, 10, - 5, 44, 44, 44,158, 49, 87,198,134,171,172,209, 42,171,105,216,206,113, 28, 24,134,193,201,147, 39,161,215,235, 49, 96,192,128, -231, 76, 22,199,113,229, 26,183,178,154, 70,207, 31, 39,132,220,166,148,118, 44,249, 0,190, 77, 41,237,100,116,238,238, 46, 46, - 46, 51, 1, 44, 49, 85,147,101, 41, 88,213, 69, 8,222,171,192,197, 79,130, 70,210, 4,167, 47, 92,199,182, 77, 43, 1, 0,254, -245, 91, 96, 96,191, 94,165,209, 56, 83, 52,141,241,242,242,218,157,158,158,209,227,245,215, 95, 71,118,118,182,110,254,252,249, -104,220,184, 49, 2, 3, 3,203,221,223, 20, 77, 74,105,234,237,219,183,125,148, 74,165, 73,211,142,229,105, 18, 66,176, 99,199, - 14,168, 84,207, 71,245, 29, 58, 45,194,180,254,126, 24,249,193,118, 44,187,183, 23,235,215,175,175,244,218, 21, 64, 99,149, 93, -189,213, 50, 86,223,120,201,236,247,229,239,190,251, 46, 59,114,228, 72, 60,125,250, 20,163, 71,143, 86,157, 60,121, 82,147,146, -156,252,147, 76, 16,214,106,159, 53,198, 21,106,202,229,242,239,143, 31, 63,142,189,123,139,125, 73, 76, 76, 12, 2, 2, 2,172, -140,247, 23,178,246, 33, 63,110, 45,174, 28,185,139, 86,189,119,225,202,145,161,224,115,194, 37,205, 3,144, 91,217,181,215,148, -242, 52, 41,165,123, 1,148,154, 40, 66,136,229,206,157, 59,251, 2, 56, 92,178, 13, 0, 86,152,163, 89, 44,132,145,131,250,247, - 5, 39,181,193,221, 7, 9,232,212,230, 53,184,185,186,226,246,157, 88,196, 37,102,165, 18,130, 17,111,182,147, 47, 81, 42, 53, -159,156,187, 73,191,169, 66,147,120,123,123, 7,238,219,183,175,244,255,136,193, 84, 25, 12,150,225,177,193,120,155, 60,206, 50, -140, 2, 2,109,188,173,175, 44, 92,215,206,234, 74,196, 78, 4,248,245,132, 67,207, 94,248,230,196, 9,220,143,138, 86,105,138, -244,111,152,171,105, 14, 47, 83,147, 16, 18,216,191,127,255,139, 63,252,240,131,125,124,124, 60,206,157, 59, 7,127,127,127, 20, - 21, 21, 85,249,133,183,172,166, 74,165,114, 53,154,214, 51,164, 54,124,161,209,104, 12,111,134,225, 15,177,194,233,196, 50,154, -207, 77, 19, 86, 39, 39,171,156,255,243, 50, 11,169,116,223,161,131,187,173,163,239,158, 67,211, 38,173, 97,109, 23, 12,129, 79, - 65,102, 86, 1,178, 31, 36,225,243,207,151, 97,222,252, 57, 56,252,227,126,235,160, 6, 77, 14, 16, 66,234, 25, 79, 35,254,219, -223,119, 16, 58,246,212,145,157, 27, 8, 21,160, 76,189, 43,151, 20, 62, 82, 12, 27,250, 22, 59,120,240, 96, 28, 62,124, 24, 81, - 81, 81, 27, 42, 50, 89,198,154,132, 98,108,228,185,189, 27, 64, 41,148,105,119,229, 82,229, 35,197,240,183, 7, 94,125,252,137, - 0, 0, 32, 0, 73, 68, 65, 84,178,239, 14,233,134,203,191,173, 70,183,166,143, 34, 61, 93,209, 47,187,100,242,144, 99,145, 41, -183,192,239,150, 87,201,101, 35,179,117, 6, 0, 49, 50, 88,103,240,103, 14,230,191,129, 48, 90,220, 29,126,108,217,232, 86,105, - 68,203, 28,131, 5, 0,129,132, 88, 43,100,210, 43,219,230,189,239,169,120, 26,197,169, 35, 47, 33, 73, 45,208,141, 79,244,194, - 21, 66, 44,175, 83,170, 44,123, 76, 81, 81, 81, 97,108,108,172,229,136,126,253,208, 54, 36, 4, 30, 78, 78,168,231,237, 13, 75, -185, 12, 50,233,159,223, 62,205,121,101, 9, 33, 52, 40, 40, 8,189,123,247,134, 68, 34,129, 66,161,128,181,181, 53,100, 50, 89, -185,209, 44, 83,191,229, 82, 74,193,178, 44, 34, 35, 35, 17, 23, 23, 7,123,123,123,252,254,251,239,120,227,141, 55,158,139,106, -149,140,195,140, 81,255, 57, 29, 89,206,243,199, 97,226,148,161, 1,158, 39, 40,160, 77, 96,241,100, 34,138,200,107, 80,171,245, - 80,171,213,248,230,130, 22, 87, 99, 11,161,213,106,160, 86,171, 43, 60,103, 69, 16, 66, 24, 79, 79,207, 97, 1, 1, 1, 19,134, - 14, 29,170,147,201,100, 40, 44, 44, 68, 81, 81, 17,162,162,162,116, 61,122,244,204,233,221,187,151, 93,120,120, 56,165, 20,203, -204,204,211,202,244,242,242,242, 41,153,158,205, 52,231,122,141,198, 87,106, 98,202, 50, 98, 69, 52, 56,182,248, 61,217,176, 97, - 3,120,158, 7,165,180,194, 55, 73, 69,200,175,243, 23, 45,183, 91,186,234, 91,216, 57,186,225,236,217,179,252, 47,191,252,146, - 79,128,152,251, 81, 81, 43,254, 15, 56,182, 15, 48, 57,183, 13, 0,178,179,179, 45,253,253,253,225,237,237, 13, 65, 16,160,211, -233, 74,163, 47,153,153,153, 80, 42,149,112,180,202, 65, 93, 39,111,232,243,207, 32, 57,242, 51,120, 88,223,197,246,227, 26, 93, -179, 64,220, 50,231, 92,127, 5,148,210,239, 0,124, 87,115, 33,120,185,186,251,128,161, 58, 36,165,101,162,111, 88, 55,176, 82, -107, 60,142,207, 64,147,224, 58, 30,111,255, 95, 59, 15,150,232, 49,125,201,174, 9, 0,190,169, 74,174,160,160,128,191,123,247, - 46,110,223, 46,246,187,182,182,182,176,178,178,122,230,111,156, 97,152, 26, 69,180, 12, 38,107,209,134, 55,172, 24, 73, 33,242, -248, 83,216,186,227, 58,154, 4,245,194,198, 43,127,168,248,212,172, 46, 95,169, 84, 49,213, 62,193, 63, 0, 15, 15,143,113,130, - 32,204,163,148,230,244,239,223,223,109,215,174, 93, 14,137,137,137,184,126,253, 58, 62,253,244,211,116,158,231,245,148, 82, 66, - 41,253,172,166,231,162,148, 10,248,211, 96,189, 48, 8, 33, 18,133, 5, 62,112,182, 37,125, 56,198,214, 95,159, 87,240, 56, 67, - 67,127, 42,210, 11, 95, 83, 74,117,149, 29,203, 48,204,255,246,239,217,224,233,236, 34, 32,212,229,117, 36,167,106,177,232,163, -225,200,204,204,199, 55, 91, 22, 3,144, 65,171,103,209, 49,244, 45,184,186,122, 97,236,152,177,238, 27, 54,109,124, 31,192, 87, - 47,250, 58,254, 46,146,127, 95,247, 35, 33,228,148,139,139, 75,212,251, 99,199,186,248,251,191, 3, 11, 11, 11,236,222,189, 27, -187,214,174,229, 87, 1, 3, 55, 17,114,122, 28,165, 63, 86,170,115,249, 79,157, 73,227,199,187, 52,104, 48, 30,114,185, 28,191, -253,242, 29, 84, 41, 59,242,195,218, 66, 91,164, 66, 88,173,222,212,241,201, 17,146, 37,145,224, 1, 0, 72, 44,144, 44, 1,210, -202,200,253,219, 12,150,129,112, 67,158,150,225,158,214,180, 51, 60,149,200, 34,182, 76, 30,226,231, 6, 53,209, 92, 56,130, 68, -181,192, 47,189,175,101,111,228,210,105,209,229,152, 44, 0, 96, 24, 70,240,245,245,197,235,205,155,163, 95,135, 14,224, 56, 14, - 22, 50, 41,108, 44, 44, 65,249,226, 72,150, 97,234,176,146,207,196,103, 48, 24, 28, 39, 39, 39, 72,165,210, 82,131,101,106, 52, -171, 34, 77, 65, 16,192,113, 28,110,223,190,141,246,237,219,195,199,199, 7,123,247,238, 69,247,238,221,159,155, 74, 52,215,100, - 1,197, 70,203,120, 26,207, 40, 73,190,202, 36,248,178,168, 52, 4, 25,154, 38, 32, 36, 4,122, 61,192, 83, 64,173, 82,129, 82, -128, 82, 64,167,213, 64,165, 82,149,158,211,148, 41, 89, 15, 15, 15,223,218,181,107, 47,152, 49, 99,122,131, 38, 77,154, 34, 61, - 61, 29,130, 32,192,202,202, 10, 69, 69, 69,176,181,181, 69,219,182,109, 31, 47, 88,176, 32,153, 82,140, 53, 55, 25,190,166, 24, - 94,243, 19, 39, 78, 60, 51,109,104,184, 21, 38, 39, 96,228,135, 59, 33,227,138,167,150, 12, 57, 60,149,192,116,238,216, 14, 23, -111,196,232,255, 55,125,181, 90,146,121,125,137,187, 32,108, 75, 0,170,125, 93,148, 82,100,100,100, 32, 53, 53, 21,125,250,246, -197,174, 31,126,192,147, 39, 79, 16, 28, 28,140,206,157, 59,195,213,213, 21, 79,158, 60,193,213,243,106,168,179,179,144,165,185, - 14,133, 77, 43, 28, 58, 27,171,158,187, 94,243,183, 84, 29, 2, 0, 33,164, 15,128,225,182,182,182,181,139,138,138,146,245,122, -253, 62, 0,251, 0, 12,228, 56,110,160, 66,161,240,200,203,203,123,132,226,106,162,159,170,210,179,180,176,112,146, 91,216, 66, -208,171,193,113, 28,124,124,252, 65,121, 13,178,243,148, 24, 49,184, 55,110,220,190,131, 95, 78, 95,214,235,116,194, 26, 19,134, - 71, 89,150,165,129,129,129, 72, 75, 75,131, 68, 34,129,165,165, 37,172,173,173, 49,107,214, 44,172, 93,187,182,212,100, 85,215, -104,141, 2, 2,109,125,173, 47,127,177,174,216,100,165, 36, 37, 35, 53, 65, 2, 23, 39, 55,172, 89,187,170, 48,251, 73, 74,171, -111,129,127,181,201, 2, 0, 65, 16, 62, 75, 76, 76,116,229, 56,206, 93,175,215, 35, 62, 62, 30,215,174, 93,195,196,137, 19, 83, - 51, 51, 51, 67, 41,165,213,186, 70, 11, 11,139, 52, 67, 36,203,194,194, 34, 13,168,112, 58, 49,199, 40,146,149, 83,137,100,185, -211,132,132,144, 58,254,222, 54, 39,183,172,156,226,219,162, 85, 91, 70,193,217,102, 23, 60, 72,105,127,225,220,217,182, 19, 87, -126,243, 62, 33,164, 27,165,244, 97, 69,162,114,137,164, 71,235,118,237, 56,208, 84,112,178,246, 88,182,116, 48,210, 51,242,144, -157,149, 15,169,212, 10, 26, 29, 11, 94, 32,104,219,190, 3,190,219,190, 7, 13,199,140,102,101, 18, 73, 87,188, 66, 70,171,132, -197, 95,127,253,181,111, 80, 80, 16,182,109,219,134,211,223,127,143,119,115,115,113,150, 97, 88,157, 68,226,124, 76,167,219, 12, -160, 82,163,101,172,211,176, 97, 67,124,251,237,183,216,177, 99,199,211, 97,111,164, 29,152, 50, 12,174, 90, 45,222,188,126, 15, -142,181,122, 3,215,239,193,177, 89, 16,234,233, 57, 60, 32, 4,207,180,131, 10, 15, 15,239,100,124,255,111,130, 22,175,109, 88, -238, 20, 59, 7, 32, 52, 60, 60,156, 26,223, 87, 37,168,112, 13, 28,191, 99,240,235,126, 33,117,125,137,110,239,106,196, 23,234, - 53,159,220,211,202,238, 23,208, 41,209,148,174,170,232, 56,134, 97, 40,203,178,176,177,180,132,139,189,125,113,152,159, 97, 0, - 1, 16,116, 0,225,139, 13, 0, 21, 8,204, 41,154, 22, 4, 1, 50,153,172,220,196,119,115,115,179,140, 53,243,243,243,241,248, -241, 99,140, 29, 59, 22, 10,133, 2, 0,144,146,146, 2, 63, 63, 63,112, 28,135,196,196, 68,252,246,219,111,168, 93,187, 54,228, -114,185, 89,110,203, 40,186,212,152, 16,114, 22, 64,227,228,228,100, 91, 15, 15, 15,192,220,136,150, 64, 81,164, 38,208,104,120, -220,191,127, 31, 73, 73, 73,120,252,232, 1, 90, 20,230,129,130, 5,165,212,172,136,150,183,183,119, 72, 64, 64,192,198, 37, 75, -150, 72,189,189,189, 65, 41,133,131,131, 61,138,138,138,144,145,145,137,224,224, 96,248,248,248, 96,217,178,101, 0,176,235,101, -155, 44, 99, 12,213,165,198,247, 12,195,224,195,255,243, 69, 86,150, 53, 88,246,207,234,211, 42,114,180,164, 0, 16,218,173, 63, -119,242,151, 99, 86,122, 96, 65, 10,203, 46,168,234,155, 8,165, 84,199, 11,130,162,162,237,241,241,241,144, 72, 36,216,191,111, - 31,178, 82, 83,209,164, 73, 19,180,108,217, 18, 15, 30, 60,192,141, 27, 55,224,228,228, 4, 23,239, 54, 56,251, 72,139,232, 36, - 37,236,236,236, 16,155,192,252,109, 45, 3, 8, 33, 99,186,116,233,242,233,138, 21, 43, 92,221,221,221, 37,233,233,233, 65,235, -214,173,107,178,110,221,186, 73,239,191,255,190,219,251,239,191,239,224,226,226,194,165,164,164, 4,126,244,209, 71,205, 8, 33, -181, 41,165,203, 43,211,180,178,178,113,100,165, 86, 32,132,131,189,157, 3, 56,153, 21, 4, 61, 7, 94, 0,108,237, 92,112,241, -198,126,252, 30,145, 63, 46, 45, 19, 85, 86, 7, 82, 74,169,147,147, 19, 24,134,129,147,147,211,115,145,234,137, 19, 39, 98,203, -150, 45,165,211,136,230, 98, 48, 89,139,214,189, 97, 77, 74, 76, 86, 74, 60, 7,162,174,141, 35, 63, 94,202,201,126,146,210,254, - 85, 48, 89, 0, 74,139,122, 30, 61,122,132,162,162, 34,156, 63,127, 30,159,125,246, 89,122, 89,147,229,230,230, 54,198,214,214, -118,126, 65, 65,193,178,228,228,228,213, 85,233,150,152,168,103, 40,111, 58,209,212, 22, 15,229, 77, 19, 18, 66, 36, 62, 30, 22, -199,111,156,223,233,103, 71,111, 17,196,141, 5,238,231, 69,217, 92,113,237,216,179, 69, 24,243,218,250,133,181, 90,142,155,117, -156, 16, 18, 84, 81,100, 75,224,249,215,172,172,109, 0,164,225,250,181, 51,165, 38, 43, 51, 43, 23,106, 45, 11,181,134, 64,165, -101,240,122,151, 55,177,118,227, 14, 36,166,101,193, 80,145,248,170, 64, 8,113, 12, 9, 9, 25, 63,112,224, 64, 44, 88,176, 0, -167, 86,172,208,188, 71, 72, 30, 7,208,112,158,135, 64, 41, 97, 76, 72, 98, 47,171,243,213, 87, 95,253, 8, 96,200,146,137,104, -147, 93,128, 17,158,189,169, 99,173,222,197,251, 14,152, 65, 1,192, 49,253,212,179, 31,153, 97, 97, 97,196, 48,179,102,238, 12, -219, 63, 29, 46, 44, 44,236,108,120,120, 56,140,239, 43, 59,192,214,189,126,207, 89, 31, 79, 92,218,162,123, 7,146, 60,181, 43, -178,242, 84,250,217,209, 90, 89,130,178,114,147,101,204,199,235,214,225, 70, 76,241,223,177,183,171, 43,166,191,253, 54,168, 30, -248, 61, 42, 26,123, 78,157,194,224, 46, 93, 96, 85, 82,241, 87, 21,134, 15,209,242,162, 88,198,209, 44,115,163, 78, 57, 57, 57, -216,183,111, 31, 90,182,108, 9,133, 66, 1,142,227,208,184,113, 99,220,185,115, 7,117,234,212, 1, 33, 4,135, 14, 29, 66,191, -126,253,240,240,225, 67,180,105,211,198,186,106,213, 63, 49,152,158,232,232,104, 91, 74,105, 71, 67,244,163,186,168,213,106,220, -189,123, 23,189,123,247,134,131,131, 3,188,188,118,225,212,241,157, 80,132,188, 11, 66, 96,150,209,226,121,126, 84, 88, 88,152, -148, 16, 2,165,178, 8, 22, 22,150,176,178,178,134,141,141, 45, 2, 3,131,144,148,148,132,238,221,187,107, 98, 99, 99,215, 39, - 39, 39,155,149, 24, 13, 0,193,193,193, 86,185,185,185,239,214,170, 85, 75, 6, 0,150,150,150,193,117,235,214,157, 22, 27, 27, -155,111,142,142,177,193, 34,132,128,101,217, 82,163,197, 49, 12, 60,220, 93, 75, 31,151,228,167, 85,248, 75, 64, 8,201, 75,204, - 84,203, 1,192,215,215, 23,107, 55, 29,102,194,194,194, 48,105,210, 36,232,116, 58,172, 95, 95, 92,100, 55,116,232, 80,104,181, - 90, 28, 56, 80, 92, 36,201,113, 92,165, 97,147,107,215,174,225,250,245,235,208,233,116,200,205,205,197,207, 63,255,140,179,231, -206, 97,247,161, 95,241,228,209, 3, 52, 14,242,195,232,209,163, 32,145, 72,176,125,251,118,180,111,223,222,156,151,224,133, 35, -145, 72,134,109,217,178,197, 99,219,182,109, 57,135, 14, 29, 42,108,221,186,181,124,213,170, 85,174,107,215,174,117,209,104, 52, -152, 60,121,114,218,229,203,151,213,125,251,246,181,218,188,121,179, 71,221,186,117,187, 2,120,206,104, 17, 66,172, 0, 12, 6, -240, 78,104, 75, 59, 46, 39, 95, 9, 65,175,193,163, 39,143,145, 91,160,129,192,107,241, 52, 33, 9, 5, 42, 30,153, 89,249,104, -252, 90,183,175,207,156, 57, 51,135, 16, 50,155, 82,122,180,170,113, 70, 69, 69,225,242,229,203,120,242,228, 9, 30, 61,122,244, -204,182, 49, 99,198, 96,199,142, 29,102, 71,180,202, 55, 89, 44,136,186, 14,142, 30,186,146,147,246, 32,249,149, 49, 89, 0, 64, - 41,157,231,225,225, 49,207,195,195,195,226,196,137, 19,118,181,106,213,130, 94,175,215,148,141,100,133,134,134,126,178,101,203, - 22,143, 58,117,234, 76, 4, 80,165,209,122, 25, 48, 12,198, 44,219, 48,222,217, 70,246, 52, 9,247,151,151,244, 18,100,129,162, - 60,224,204, 15,224,218,205,125, 60,177,239, 12,135,153,219, 22,140, 65, 37, 21,178,177, 15,227,177, 97,195, 90, 76,153, 60, 2, -223,125,179, 12,130,192, 65,173, 99,225,235,223, 26,106,173, 0,194,112,104,242, 90,115,156, 62,115, 30, 18, 6,216,183,109,195, - 75,186,194,151, 3,165, 52,139, 16,178,254,208,161, 67, 31, 76,154, 52, 9,130, 32,200,230,111,216,160, 76, 79, 79, 95, 12, 51, -250, 95,149,163,211,111,195,134, 13, 49, 51,215,166,255, 56,101, 24,216, 39, 71, 72,214,245,123,112, 28, 48,131, 98,255, 82,130, -102, 65,200, 82,148,255, 17,127,174,204,253, 43, 1, 7, 20, 59, 73,227,251,242,104, 22, 88,103,161,157,163,195,168,150,141, 3, -157,167, 79,122,143,123,152,162,194,129, 90,111, 23,252,246,253, 26,171, 20,189,252,235, 7, 84,105,146,201, 50,176,231,183,223, - 74,127,254,114,215,174,114,183, 37, 15, 24, 96,146,150, 32, 8, 21, 70,177,204,141,100, 1,128, 66,161,176,239,218,181, 43,222, -120,227, 13,188,245,214, 91,165, 57, 89, 77,155, 54,197,238,221,187,209,191,127,127,220,188,121, 19, 30, 30, 30,168, 95,191, 62, -234,215,175,143, 99,199,142,153,117, 14,195, 52, 94, 72, 72,136,161,234,176,113, 66, 66,130, 89,213,134,198,168,213,106,100,102, -102,194,209,209, 17, 50,153, 12,173, 90,181,196, 7, 31,182,130,179,199,183, 8,105, 16,132,194,194,194,210,242,247,170,144, 72, - 36, 33,245,234,213, 67,122,122, 58,210,211,211,225,226,226, 2, 79, 79, 79,184,187,187, 99,249,242,229,116,245,234,213,191,104, -181,218,245,233,233,233,102, 71,178, 60, 60, 60, 58, 56, 58, 58,126,162, 84, 42,101, 70,223,112,101, 46, 46, 46, 63,121,122,122, - 46, 78, 74, 74, 50,103,141, 77,104,181, 90, 16, 66, 16,254,200, 19,133, 26,130,188,132,235,152,244,127,126,207, 24, 47,137, 68, - 98, 74, 66,111,225,144, 33, 67, 92,125,124,188, 17, 31, 27,133,253,251, 41, 86,172, 88, 97,168,138, 68, 76,201, 23, 3,195,227, -206,157, 59,195,223,223, 31,212,140, 94, 25,130, 32,224,246,237,219,216,245,211, 89,120,248, 53,192,211,251,119,113,227,216, 17, -212,114,113, 68,195,215,154, 67,167,211,213,168,245,198,139, 64,167,211,109, 13, 8, 8,160, 26,141,230, 44,128,181, 17, 17, 17, - 35,146,147,147, 39, 31, 62,124,216,115,224,192,129, 73, 71,142, 28, 89, 5, 96, 91, 68, 68,196,248,207, 63,255,252, 13,189, 94, - 95,110,181, 32,203,178,223,125,244,209, 71,161, 3, 7, 14, 36, 82, 70,167, 57,113,124, 59,167,215,235,200,199,179,183,242,103, - 46,156,101,244,122, 29,121,107,200, 71,194,177,223, 34,152,113, 31,126,201, 55,109, 29,134,200,200, 72,247, 94,189,122,125, 14, -160, 82,163,101,136, 84, 85, 20,161,100, 89, 22, 35, 70,140,192,238,221,187, 77,190,238,209, 64, 29, 91, 63,235,203,139,214,117, -177, 38, 92,129,145,201,170,139,163,135,174,228,164,222, 79,122,165, 76, 22, 0,100,100,100,108, 2,176,201,209,209, 49,213,202, -202, 10,249,249,249,207,253,254, 17, 66, 44,130,130,130, 44,100, 50, 25,186,117,235,230,232,225,225, 17,195, 48,204,234,196,196, -196, 10, 29, 71,121,211,132,229, 77, 39,214,164,234,208,193, 5,189, 90,117,120,205,230,158,221, 2, 27, 11, 78,117,179, 86,140, -133, 45, 1,144,171,118,123,116, 49,110,112, 30, 73,147, 55,109,222,185, 25,108, 57,171, 94,168,192,104, 49, 44,123, 35, 55, 59, -167, 71, 94,190, 6, 23,126,143,196,144,193,245,160,214, 18, 8, 2,131,130, 66, 53,192, 74,192, 0, 24,250,246,112, 80,194, 33, - 43, 53, 9, 44,203, 70,152,246,234,254,171,152, 53,126,252,248, 30,179,103,207,174, 93,210,255,202,175,164,255,213,116, 66, 72, - 35, 90, 69,243,241, 74,116,106, 29,217, 61,119,234, 79,231, 55,230,134,181, 85,222,111, 22, 4, 0,112,108, 22,132, 44,137, 4, - 15, 56, 22,153,148,226,153, 52,163,176,176,176, 78,198,247,255, 38,202, 38,193, 27, 63, 54, 41, 71, 43,160,142,247,155,157, 90, - 52,255,112,206,236, 57, 54,119, 46,158,193,204,133,107,105, 64,243,174,249,155,206,223,208, 20, 88,249,247,200, 79,191,255,187, -137, 99,161, 0,240,230,235,253,209, 56,184,229,115, 27,219,119, 46,238, 37,121,225,244, 53,164,166, 39,154, 36,104, 48, 81, 21, -229,100,153, 82,210, 95, 22,165, 82,153, 19, 25, 25,233,154,144,144,240, 76,226,187,191,191, 63, 8, 33,184,114,229, 10, 46, 95, -190,140, 33, 67,134,128,227, 56, 72, 36, 18,156, 61,123,214,172,104,140, 81,116,233, 54,165,180, 19, 33,164,187,183,183,119,185, -213,134,166,104, 41,149, 74,228,230,230,226,248,241,227,168, 87,175, 30, 22, 45, 90, 4, 79, 15, 55,204,153, 51, 21,130, 32, 32, - 47, 47, 15, 60,207,155, 26,209, 18, 12,209, 34, 65, 16,144,158,158,142,218,181,107, 99,221,186,117, 88,181,106,213,231, 73, 73, - 73,135,205, 29,163,175,175,175, 61,207,243, 31,247,238,221,187,107,223,190,125,209,189,123,247,103,182,255,240,195, 15, 54, 7, - 14, 28, 88,236,227,227,243,166, 86,171, 93,146,154,154,154,110,138,238,183,223, 22,183, 95, 82,180,158,135,153, 3,107,225,157, - 9,219,177,124,249, 65,200,229,127,118,140, 96, 89, 22, 11, 22, 44,168,212,196, 8,148, 6, 72, 51, 46, 38, 77,157,241,149,235, -226,197,167,112,234, 84, 26, 24,134,129,135,135, 7, 24,134,193,227,199,143,193, 48, 12,252,252,252,192, 48, 12, 18, 19, 19, 13, - 57,129,217, 40,167,234,177, 60, 24,134,129, 74,165, 66,252,211, 39, 72,136,141,129,117, 94, 10, 92,108, 21,200,142,186,141,198, -163,199,148,246,127,250, 59,161,148,238, 0,176,195,232,169,175, 8, 33, 26, 66,200, 91, 0,126,164,148, 26, 34, 26,159,151,220, -202,165,117,235,214, 77,103,207,158, 45, 49,180,219,240,244,253, 66,175,213,106, 5, 0, 8,106,220,241, 25,183,255,224,193, 3, - 44, 95,190, 28,133,133,133,144,154,210,232, 14,197,166,213, 80, 97,104,140,225,177, 57, 38, 11, 0,156,252,188,191,190,114,253, - 44,127, 43,118,163, 50,226,222,207,150,201, 79, 25, 48,154, 87,215,100, 25, 67, 41,157,231,237,237, 61, 79, 16, 4, 74, 41,157, -107,120,158, 16, 34,247,245,245, 61,127,226,196, 9, 39,189, 94,143, 53,107,214,216,167,164,164,216,119,236,216,113, 38,128, 10, -141, 86,121,211,132,229, 77, 39,194,168,234, 80, 46,151, 59, 86, 50,196,231,170, 14,121, 30,129,182, 54,246,200, 70, 2,212,206, -186,166, 57, 78,250,172,147,201, 99,110,122,198,189, 22,108,197,235,106, 51,121, 26,120, 41,236, 33, 80, 90,126,105, 52, 0,181, - 78,247,243,205,235, 55,186,249,250,212, 99, 15, 31, 61,135, 62,253, 6, 66,173,102,160,210, 17, 16, 86, 2,194, 74,209,168,241, -107,168,223,176, 49, 40,128,107, 87, 47,234, 53, 58,221,201, 74,198,249,175,195,179,253,135, 67, 60,219,127,176, 26, 84,160,229, -244,209,170,221,175, 95,191,197, 0, 62,172, 74,199,173,205,135, 67,220,219, 22,235, 24,247,209,250,232,131,241,136,186, 42,177, - 59,119,125,169,180,123,107,132,167,159, 34, 80, 88,252, 89,117, 40, 97,170,223,154,227,159, 74,165, 85,135, 21,225,235,235,107, -239,106,173,248,246,253,209,163,108,226,110, 93, 66, 74,244, 21,252,126, 46, 38,123,207,129,131, 89,133,153,105,163,205, 48, 89, -165,211,124, 78,238,181,224,223,224,121,163,101, 97,237, 2, 0,240,111,208, 18,172,149,121,109,132,202,139,102, 85,199,100, 25, - 48,152,171,178,137,239,227,198,141,195,150, 45, 91,208,174, 93, 59, 4, 4, 4,148,254,179, 55, 55,106, 86, 54,186, 84,157,106, - 67, 99,242,243,243,225,231,231,135,205,155, 55, 35, 34, 34, 2, 54, 54, 54, 24, 50,100, 8,242,243,243, 75, 13,150,169,201,240, -148,210, 7, 39, 78,156,104, 49,104,208, 32, 42,145, 72, 72, 78, 78, 14,236,237,237,177,110,221,186,194,228,228,228,112,115,199, -230,235,235, 59, 80, 42,149, 78, 29, 60,120, 48, 27, 20, 20,132,212,212, 84,216,218,218,234, 8, 33, 18, 0,176,183,183,215, 89, - 90, 90, 98,252,248,241,104,210,164, 73,135,233,211,167,183,243,242,242, 90,151,152,152, 88, 97,111, 37,195,116,161,225, 3,117, -244,234,187,208,104,138,141,202,250,245,235, 81,146,235, 86, 74,108,108, 44, 96, 66, 37,139,181,181, 53, 2, 2, 2,202,125,239, - 59,116,232,128,107,215,174, 21, 79, 77,114, 28, 92, 93, 93,241,251,239,191,155, 84, 73, 69, 75, 26, 65, 70, 70, 70,162,129,191, - 51, 34, 78,157,128,179, 66,130, 38,158,238,240,238,208, 9, 49, 49, 49,127, 91, 52,171,164, 55,213,123, 0,186,160,248,119,112, - 43,128,113, 70,143,215, 81, 74,191, 54, 71, 83,175,215, 83,134, 97, 72,124,124,188, 86,161, 80, 16, 71, 71, 71, 78, 46,151, 67, -173, 86,151, 26,174, 7, 15, 30,224,232,209,163, 72, 72, 72,128,163,163, 35, 99,103,103, 7,173, 86,155,109,138,126, 96, 96, 32, -220,221,221,159, 73,124, 31, 61,122, 52, 0,243, 77,214, 8, 32,100,203, 23, 75,106,201, 25,214,174,129,243,155,120,116,247,177, -138,209,192,226,191, 96,178, 0, 32, 59, 59,123, 19,128, 77,134,199, 46, 46, 46, 35, 89,150,157, 99,103,103,103,119,246,236, 89, -123, 23, 23, 23,178,125,251,118,221,220,185,115,115, 88,150,205, 38,132,172,252, 27,135, 11, 0,160, 20,209, 25,185,177,126, 18, - 7, 79,225,150,138, 94,156, 28, 63,179,126,182,164,158, 11,105, 24,130,126,105,119, 46,140,212,199,182, 77, 77, 78, 97, 40,132, -232,138, 52, 4, 65,216, 58,115,246,130,143, 99,238,222,240,181,176,181,192,184,241,179, 17,254,203,105, 16, 70,130,243, 23,175, - 64,163,229,145,145,149,139,193, 67,135,193,219,195, 25,209,151,143,167,235, 5, 97,221,203,188,206,191, 26, 74,133,181,221,250, -140,116,144, 91, 22,167,153, 10, 2,143, 29,223, 76, 5,195,172,198,167,159,126,138,144,144,144, 9,132,144,207, 42,106,241, 96, -128, 16, 97,109,163, 78, 67, 29,164,242, 98, 29, 42,240,216,188,111,102, 73, 31,173, 41, 88,183,233, 64,163,134,254,143,230, 87, -214, 71,235, 85,160,108,213,161,129, 10,141, 86,173, 90,181,228, 86, 18,140,117,180,148, 78,127,255,237,190, 46,105,177, 81, 72, -184,115, 3, 0,160,211, 42,181,201, 49,209, 85,182, 66, 47,105,240,102, 60, 21, 68, 43,155,186, 82,169,170,254, 70, 95, 86,211, -240,129, 91, 54,154,101,142,201, 42, 79, 19,192,115, 31,180, 44,203,194,199,199, 7,139, 23, 47,174,178,143, 86, 57,215,110,120, -190, 59,128,198, 0,140,147,225,187,155, 82,105, 88,145,166,139,139, 11, 50, 51,139, 59, 36,132,134,134, 34, 52,244,207,122, 6, -173, 86, 91, 26,197,178,177,177,121, 46,162, 85,158,166,165,165,229,204,131, 7, 15,142,186,120,241,226,160,105,211,166, 73,222, -120,163,184, 93, 80,126,126,126, 17, 53, 97,109,183,178,154, 60,207,143, 63,126,252, 56, 43, 8, 2, 54,111,222,140,107,215,174, - 81,133, 66,241,137, 66,161, 88,107,105,105,201, 43,149,202,113, 99,198,140, 25, 54,127,254,124,166, 67,135, 14,184,116,233, 18, - 83,187,118,237,225, 0,182, 87,164,105,224,202,149, 43, 96, 24, 6,250,172,167,152, 48,115, 15,172, 44, 57,220,189,123, 23, 89, - 89, 89,207, 53, 49, 53,229,245, 52,142,148, 24,110, 29, 58,116, 40,157,134,108,213,170, 21, 88,150,197,205,155, 55,203,157,134, - 45,163, 73,157,156,156, 74,127, 63,164, 82, 41, 78,159, 62,141,133, 11, 23,194,215,209, 30,217,119, 34,224, 30,250, 58,186,142, - 26,131, 33, 67,134,128,101, 89, 56, 58, 58, 2,207,174,245, 89,225,181,215,132, 50,154,163, 26, 52,104, 48, 60, 58, 58,218,187, - 81,163, 70, 30,145,145,145,157, 67, 66, 66,252, 34, 34, 34, 12,143,229, 48, 33, 55,199, 88,243,143, 63,254,216,191,118,237,218, -241, 35, 70,140,144, 10,130,192,199,197,197,233, 0, 16,119,119,119,246,143, 63,254, 16, 14, 31, 62, 12,165, 82, 9,111,111,111, -198,203,203,139,156, 60,121, 82,184,115,231,206, 21, 74,233,108, 83,174,157,231,249,103,218, 56, 24,126,254,225,135, 31,204,189, -118,212,170, 31,184,232,141,142, 65, 62, 25, 73, 55,145,156, 24, 11, 62,215, 69,123,244,208, 17,181, 57, 38,235, 37,188, 71, 47, - 83,115,193,253,251,247,189,212,106, 53,100, 50, 25,214,175, 95,175, 93,188,120,113,116, 70, 70, 70,123, 90, 78, 69,121, 89,205, -106, 86, 29,102, 85,162,249, 92,213, 97,110, 38,194, 15,253,244, 71, 11,235,126, 91, 49, 33, 41,189, 52,177,145, 18,226,120,208, - 45,184,189,162,101,163, 68,230,216, 60, 38,159, 47, 10,175, 64, 19,148, 82, 13, 33,100, 96,191,254, 67,127,221,189,123,151,245, -220,121,243,240,251,149, 8,100,230, 20, 64,160, 44, 4, 66, 48,103,206, 92,184, 59, 59, 34, 47,233,126,145, 90,171,237, 71,203, - 44,197,243,111,127,223, 9, 97, 38,158, 60,188,125, 53, 67, 32, 20,166,222,147,179,249,177,138,119,134,244,227, 6, 14, 28,136, -131, 7, 15, 34, 50, 50,114, 99, 69, 38,203, 88,147, 82,102, 98,196,217, 61,171, 9, 32, 40,211,239,201,185,130, 71,138,225,111, -247,227,134, 12, 25,130, 31,143, 94,196,238, 35,143, 54,236, 58, 76,143,188,200,107,250,167, 81, 54,138,101, 76,133, 70,203,134, - 67,100,251,224, 58, 94, 29, 94,107,104,193,241, 74, 36,220,137, 69, 86,161, 10, 39,163,226,114, 24,202, 84,187,183, 78,241, 63, - 72, 41,158, 62,189,255,220,182,156,156,226,236,184,252,124,243,150,149, 98, 24,230,153,104, 86, 77, 34, 89,198,227,116,115,115, -123,102, 57, 23,227, 15,110, 67, 14, 80, 53, 90, 59,204,124,250,244,169,237,211,167, 79, 65, 41,197,149, 43, 87,108, 91,181,106, - 53, 19, 53,136,102, 77,157, 58,181, 52,106, 85,246,190,188,231,170,162, 36, 41,125,149,179,179,243,190,233,211,167, 79,104,213, -170, 85,183,121,243,230, 17, 0,230,151,113, 1,160,148,234, 5, 65,192,153, 51,103,112,240,224, 65, 94,171,213,142, 77, 74, 74, - 50,206,117, 88,227,233,233,121,178,127,255,254,219,239,221,187,199, 70, 71, 71,195, 20, 67,167, 84, 42, 17, 16, 16, 0,189, 94, -143,165, 19,124,144,159,223, 8,122,189, 30, 60,207,195,202,202,234,153,117, 46, 77,121,159, 24,134, 1,207,243,207, 25,173, 43, - 87,174,128,101, 89,180,111,223, 30, 55,110,220, 40,141,104, 85, 21,129,210,106,181, 79,221,220,220,220, 22, 44, 88, 80, 58,174, -244,244,116,156, 56,113, 2,173,219,180, 69,240,216,113, 72, 74, 74,194,202,149, 43,225,233,233,137, 69,139, 22, 33, 43, 43, 11, -122,189,254,101,135,211,123, 68, 71, 71,123,191,253,246,219,105, 17, 17, 17,222, 71,143, 30,181,239,213,171,151,213,208,161, 67, -211, 34, 34, 34,188, 9, 33,109, 97,102, 18, 52,207,243,179, 8, 33,191, 44, 90,180,104,230,135, 31,126,216,106,196,136, 17, 18, -137, 68, 34, 36, 38, 38,234,119,237,218, 69, 2, 2, 2, 24,169, 84, 74,142, 31, 63, 46, 92,189,122,245,178, 94,175, 95, 74, 41, - 61,111,170,190,113,254,157,161,194,208, 20,147, 85,150,201,174,242,225, 54, 76,122,251,181,235, 23, 51, 65,254,222,218,239,119, -157,136, 63,127,233,254, 67, 86,173,159,252, 45, 80, 97,107,128, 87, 25,150,101,247, 54,104,208, 96,228,196,137, 19, 45,187,119, -239, 46,159, 63,127,126,110,126,126,126,185, 38,171, 60, 94, 70,213, 33,128,111,102, 77, 59, 58,249,163, 70, 35,235,252,207,189, - 22, 78, 21,166, 33,155, 99, 25, 91,123, 6,175,249,177,200,207,120,224,114,228,215,109,143, 81, 69, 95, 54, 74,233, 31,132,144, - 46, 13, 27, 53, 61,176,116,209, 82,215, 79,102, 76,151, 28, 56,250, 51,168, 94,139, 43,103,207,194, 90,202,211, 59,215, 79,165, -170,181,154,190,244, 85,235, 10, 15, 32,233,194,154,221,132,144,159, 28, 29, 29,111,141, 26, 49, 34,160, 65,131,161, 80, 40, 20, -216,191,127, 63,118,172, 89,195,175, 2, 6,109, 34,228,198,184,226,158,122, 21,146,122,169, 84,231,230,152, 81,163, 2, 95,123, -237,127, 80, 40, 20,216,183,111, 31,182,175, 90,101,178,206,191, 25,242,103,103,248,240,146,123, 19,250,104, 49, 36,255,242,253, -184,130, 43,247,227, 10, 32, 80, 42, 80,170,102, 24,196, 23,106,181,139, 98, 30, 38, 84,203, 20, 24,166, 14, 63,255, 98, 98,117, - 14,175, 80,211, 96,126,170, 91,210, 93, 22,158,231, 19,140,215, 72, 51,254,144,174,232,103,157, 78,151, 96,162,252, 18, 95,223, -231,214, 64, 53, 59, 47,203,128, 97, 58,208, 84,147,101,106, 31, 45, 0,200,200,200, 72, 6,240,137,135,135,199, 15,221,186,117, - 27, 3,192,180,196,185, 50, 16, 66, 54,119,234,212,105, 44, 0,150, 16,178, 49, 49, 49,241,185,132,210,164,164,164, 24, 47, 47, -175, 47,253,253,253, 75, 23,154,174, 76, 83, 16,132, 71,141, 26, 53, 42,109, 32, 90,214, 72,149,247, 88, 16,132, 42,223,163,156, -156, 28,180,108,217,242,185, 53, 45, 41,165,136,139,139, 51, 68,156, 0, 20,191,246,149, 25,184,130,130,130,113, 31,124,240,193, - 38,137, 68,226, 11,128, 24, 76, 46,207,243,236,215, 95,127,109,193,243, 60, 11,128, 48, 12,163,151, 72, 36,170,131, 7, 15,234, -245,122,253, 83,181, 90, 61,174,170,113,190, 96,246,145,226,165, 24, 10,163,163,163,131, 74, 34, 89, 9,145,145,145, 55,119,239, -222,237, 2, 96, 79,117, 68, 75,140,211,121, 66, 72,135,245,235,215,207, 26, 55,110, 92,203, 33, 67,134,112,161,161,161, 8, 15, - 15,231,207,156, 57,115, 69,169, 84, 46, 49,199, 96, 1, 0, 33, 36,215,199,199, 7, 0,170,252,123,231,121,190,210, 68, 94, 39, - 63,249,218, 97,239,121, 90,108, 94,114,162, 32, 35, 73,115, 81, 87,160,153,189, 13,136, 52,103, 60,175, 26, 41, 41, 41,211, 8, - 33,115, 87,174, 92,153,212,164, 73, 19,185, 84, 42,213,152,106,178, 94, 22,148, 82, 61, 33,164,231,138,174, 3,126,234, 52,231, - 3,255,174,157,219, 43,124,106,185,122,221,137, 77,197,131, 75,225,133,183,142,124,241,132,170,179,251, 80, 74,171, 92,223,148, - 82,122,149, 16, 82,111,234,244,169,134, 69,165, 27,191,113,242, 16,253, 15, 45, 42,253,249,151, 95,126, 25,208,160, 65, 3,236, -223,191, 31, 39,119,238,196,224,140, 12,156,102, 89,150,145, 74,157,142,104,181, 95,193,180,198,197,159, 47, 95,190, 60, 48, 36, - 36, 4,123,247,238,197,241,237,219, 49,168,122, 58, 21,209, 2,128, 75,201,207, 25, 0,238, 1,104, 6,192, 18,128, 26,197, 75, - 59, 57, 27,237,159, 89,178,205,176,253, 28,128,191, 50, 17,182,234,206,240,101,137,184,255,184,217,139, 30,133, 82,169,204, 10, - 8, 8, 48,171,230, 90,167,211, 85, 58,135,171,215,235, 19,234,212,169, 3,192,244,238,236, 85,153,162,204,204,204,230,166,142, -207, 92,106,154,139,101, 12, 47, 8, 79, 60, 60, 60,132, 18,221,242,206, 85,238,115, 20,120,108,206,121,146,147,147,239, 1,168, -122,133,239, 10, 72, 76, 76, 60, 0, 19, 22,141, 54,117, 63, 0,200,202,202,122,225,139,249, 18, 74, 19,231,207,159,255,231, 99, - 19, 12, 54, 40,173,208,124, 82, 74, 35, 0,180,122,161,131,252, 11,160, 37, 75,239, 16, 66,152,200,200,200, 49, 37,211,219,167, - 0,108,164,197, 29,189,107,170, 95,106,184, 54,111,222, 60,153, 82,138,188,188,188, 85,230, 26, 44, 3,169,169,169,102,231, 9, - 86, 68, 86,170,230,183, 93, 27, 19, 94, 87,230,104, 39,111, 41,208,152,180,222,226,127, 1, 74,169,202,213,213,245,187,119,222, -121,167, 53,128,109, 53,213, 43,111, 58,177,166, 80, 74, 31, 19, 66,154,156,158,186,112,212,105,123,155, 48,240, 92, 16, 52,204, - 17,104, 50,195, 1,124,107, 74, 84,220, 72, 75,133,226, 54, 37,149,246,132,123,213, 40,233,127, 53,121,228,200,145,152, 59,119, - 46,142,127,245,149,246, 61, 66,114, 37, 0,253,165,248,139, 38, 67,128, 25,166,234, 12, 31, 62, 28,115,231,206,197,177,165, 75, -171,165, 83, 5, 46,132,144,163, 0, 48,115,230,204,217,139, 23, 47,118,152, 53,107, 86,227, 37, 75,150, 44, 42,121, 28,101,216, - 14, 0,148,210, 94,179,102,205,106,104,180, 61, 31,192, 31, 53, 28, 67,165,148,205,209, 42, 53, 92,198,223,216, 95,244, 13, 64, - 23, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69,205, 26,222,194,138, 45, 75,197,247, 21,253,108,244,220,203, 28,111,233, -173,218, 75,240,136,136,136,136,136,136,136,136,252,157, 24, 71,177,170,179,253, 5,142,195,144,163, 85, 10, 45,137,104, 17, 20, -151,112, 63, 7, 53,163,234,129, 16, 82,174, 70,101, 84,165, 47,106,138,154,162,166,168, 41,106,138,154,162,230,171,167, 89,149, -118, 5,199,135, 17, 66,142, 82, 74,123, 85,116, 95,162,249,220,207, 70,207,189,176,180,131,114,174,101, 44,173, 32, 71,235, 47, - 13,151,225, 95, 18,174, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243,239,213,172,226, 22,134,226,214, 55,116,230,204,153, -179,232, 63,108,234, 16,128, 7,128,177,198, 55,195,182, 74,166, 14,247,179,137,137,176,149,201, 20, 82, 0,208,104,138,180, 94, - 94,200, 3, 6,252,109, 11,222,138,252, 59, 33,132,184, 1, 0, 53, 97,241,105,115,246, 21, 17, 17, 17, 17,249,207,144, 78, 75, - 34, 85, 0,210, 1,144,146,199,154,146,251,116,160, 56, 9,190,204,207,207,108,255,171,160,148, 38, 3, 40,183, 90,190, 2,163, -181,159,205,200, 80, 56,115, 92,118, 32,207,171,234, 3, 0,199, 49,119, 51, 50, 28, 98,156,157,247,103, 84,199,108,185,184,185, - 93,151,176,172,151, 41,251,234,120, 62, 49, 35, 53,245,153,214,241, 20,248,215, 27, 60, 83, 77, 68, 77,204,198,203, 48, 42, 46, - 46, 46,110,110,110,110,255,103,107,107,219, 38, 39, 39,231,106,122,122,250,143, 21,173,123, 72, 8, 89, 76, 8,166,151,252,188, -140, 82, 58,171, 34, 93,115,246, 45,231,216, 0,133, 66, 49,129, 16, 18, 2, 0,148,210,200,162,162,162,245,148,210,231, 27,182, -189,226, 16, 66, 44, 1,244,229, 56,110,184,179,179,115,203,148,148,148,249,148,210,106,117,243, 38,132,112, 0,166,218,219,219, - 15,177,183,183,175,157,149,149,245, 48, 47, 47,111, 47,128,229,148,210, 42, 75,165, 63,155,228,217, 38,180,123,232, 39,103,142, -159,249,124,222,234,164, 75,207,109,159,230,233,212,173,107,187,185,103,142, 92, 92, 48,107,109, 98,165,221,167,203, 25, 27, 3, -192,208, 52, 79, 64,241,183,214, 23,218, 94,159, 20,175, 94,208, 27, 64, 40,128, 51, 0,142,152,114,221, 21,104,181, 6, 48, 27, -197, 99, 94, 78, 41, 61,253,194, 6,250, 23, 64, 8,177,114,115,115, 91, 10,160, 55,199,113,209,137,137,137, 99, 41,165,166,182, -177,249,171,198,196,161,184,204, 63, 4,197,109, 56,254,160, 38,180,112, 48, 5,103,103,231, 94, 28,199, 77, 40,105,237,178, 62, - 35, 35,227,165,228,246, 84, 7,185, 92,190,202,221,221,253,127, 74,165,178,136, 16, 66,141,251, 61,234,245,250,132,244,244,244, -191,172,114,254,111,228, 47,173, 24,172, 41,164, 76, 55,120,160,138, 62, 90,137,137,176,229,184,236,192,180,148,136,193, 73,201, -183, 7, 1,128,167, 71,227,189,174,238,141,246, 36, 38,202,180, 45,186,246,183,150, 40,184,245, 44, 43,105,170,210,168,157, 37, -156, 36, 67,171,215,221,100, 52,116, 66,242,221,131,229, 54, 91,148,176,172,215,147,152,211,174,122,109, 22, 36, 22,158,144, 88, - 62,215, 75,170, 20, 79, 79,207,106, 93,168,163, 99, 93, 27,173,220, 98,178, 68,194,118, 21,168, 62,132, 10, 0, 67, 36,145,122, - 94,247,171, 84,173, 94,145,149, 21,107,214,122,132,198,212,119, 38,238, 20, 24, 2,130,174,160, 56, 73,128,221,119, 51,104,138, -169,199,155,106, 34,106,104, 54,140,143, 93, 73, 41,157,102,234,177,166,226,237,237,237,240,214, 91,111,173, 90,184,112,161,165, -181,181, 53,121,250,244,105,247, 25, 51,102,116,244,246,246,254, 40, 33, 33, 33,169,204,120,220, 8,193,116, 65,160, 12, 0, 48, - 12,153,225,230,230,166, 96, 89,246,185,222, 70, 60,207, 43, 8,193, 68, 65,160,164,100,223,233,132,144,213,166, 24, 70, 75, 75, -203,161, 45, 91,181,253,104,233,151,203,173,221, 92, 93,173,244,188,160,125, 28,247, 68,241,201,204,105,173, 44, 45, 45, 87, 43, -149,202, 93, 85,105,148,133, 16, 99, 98, 54,159, 0, 0, 32, 0, 73, 68, 65, 84, 66, 88,150, 29, 44,151,203,123, 1,104, 80,242, -244, 29,181, 90,125,148,231,249, 61,166,126,160,187,187,187,159, 99, 89,182,150, 57,231,230,121,254,105, 74, 74, 74,251,170,247, -124, 30, 66,200, 64, 95, 95,223,111, 59,117,234,164,104,217,178, 37,100, 50, 25,230,206,157, 59, 21, 64,165, 70,203, 96,168, 20, - 10,197, 96, 43, 43,171, 58, 5, 5, 5,177, 74,165,242,128, 76, 38,235,178,122,245,106,159,118,237,218,217,164,166,166, 18,150, -101,221,142, 30, 61,250,238,154, 53,107,186, 19, 66,222,168,234, 67, 46, 55,150,126, 34,239,221,160, 67,110,236,233, 79, 0,244, - 40,187, 93,175,178, 24, 78, 89,159, 94, 74,122, 35, 30,102,148,214, 19, 66, 24,137, 68,178,218,221,221,125,164, 74,165, 82,161, -184,247, 26,117,115,115, 51,108, 7, 0,104, 52,154,236,236,236,236, 32, 83,117,141,244,131, 0,140,182,183,183, 31,249,241,199, - 31, 59,244,232,209, 3, 59,119,238,124,127,203,150, 45,217,132,144,239, 0,124, 67, 41,189,103,166,236,244,148,148,148,158, 18, -137,132,248,248,248,176, 0, 76, 54, 90,132,144, 64, 0,115, 80,252, 97,179,158, 82,202, 19, 66, 58, 3,197,127,239, 0,150, 25, -140, 27,203,178,235,131,130,130,254,239,206,157, 59, 27, 40,165, 21,174, 71, 89, 21,238,238,238,155,214,173, 91, 55,168, 79,159, - 62,108,122,122,186, 87,147, 38, 77,126, 0,208,161,186,122, 70,215, 50, 74, 46,151, 79,105,220,184,113,240,189,123,247, 98,242, -242,242,150,163,248,245,172,240,111,138, 16,226, 13,160,139,189,189,253, 27,115,230,204,177,238,213,171, 23, 54,111,222,220,115, -203,150, 45, 5,132,144, 95, 1,156,170,169, 9,228, 56,110, 66, 66, 66,130, 51,165, 20, 30, 30, 30, 19, 80,197,226,230,127, 23, - 44,203,174, 30, 60,120,240,200, 31,126,248, 65,241,228,201, 19,133,151,151, 87,105,243,108, 66, 72,181, 63, 63, 69,106,134,193, - 84,153,220, 71, 75, 38, 83, 72,121, 94, 85, 63, 41,249,246,160,142,157,190,182, 3,128,115,103, 63, 24,228,234,222, 48, 82, 38, - 83,196,200,109, 45, 14,246,239,221,165,233,128, 94,157,136,183,135, 43, 18,146,211,220,190,217,125,252,205,163,199, 79, 31, 68, -113, 3,177,114,209,107,179, 96,169, 61,133,123, 23,214,192, 57, 52, 9,107,143, 37,224,210,173,199, 40,202,205, 64, 45,119, 75, -124, 57,185, 27,220, 29, 20,255,207,222,119,135, 69,113,246, 93,159,123,251,194, 46,189,119,177, 0,246,130, 37, 42, 70,176,196, -130, 37, 98, 55,198,222, 81,209,216, 75,140, 70,197, 68,141, 45,177,199,130,221,216, 98,197, 94,177,162,130,138,160, 52,233,189, -110,111,115,127,127, 80,130, 8,203, 98,146,247,249,222,247,225, 92, 23, 23,236,236,204,153,223,220,192,236,153, 95,253,172,139, - 20,219,121,250,177,132,198,199, 71,141, 28,109, 54,224,235, 38, 92, 55,123,123, 80, 42, 64, 76,172,164,211,229,171,183,218,157, - 58,121,116,186,216,206,115,184, 36, 51,198,224,155,155,183, 35, 49,146,170,241, 53,135, 77,190,237,210,161, 89,247,145,125,187, -176,154, 54,105,132, 55,175,163,190, 58,119,243,241,250,166,118,172, 27, 90, 29, 13, 17,241,112, 54, 60,173,250,134,126, 85, 9, -142,158, 61,123,118, 17, 8, 4,234,138,251, 41,149, 74, 30, 33,248,226,115,196, 70,217, 57, 84, 42, 37,139,203,229,131,197, 34, -115, 91,182,108,217, 36, 39, 39,231, 22, 33,100, 95,106,106,237,188, 5,179, 8,225,231,115, 56,222, 44,129,192, 65,167, 82, 89, - 1, 0,225,243,243,157, 45, 44, 90, 44, 93,178, 68,204,102,179,153,220,220, 92,200,100, 50, 50,105,210, 36, 97,108,108,108, 0, -128,173, 53,216,136, 61,123,246,120, 58, 56, 56,168, 42,191,151,158,158,206, 31, 56,112, 64,109, 76, 44,227,244,252,162, 99,231, - 57,161,161, 87,154, 20,229,229, 43,246,108,218, 21,174, 17, 26, 43,235, 55,241,226,110,223,125,208,108,242,184,111,102, 18, 66, - 94, 80, 74, 13,158, 87, 71, 8,113, 53, 50, 50, 58,189, 97,195,134,230,126,126,126, 92, 91, 91, 91,100,102,102, 34, 42, 42,170, -249,205,155, 55,191, 62,120,240,224,119,132,144, 0, 74,169, 33, 29,220, 61,110,132,236,179, 21, 89, 90, 65,167,209,192,177,101, -155,178,120, 62,222,223,188, 10,173, 90, 13, 70,163, 65,147,126, 95, 3, 40, 25, 1,212,180,105,211,207,234,186, 75, 8,113,108, -214,172,217,161,181,107,215,242,148, 74, 37, 30, 63,126,140, 91,183,110, 49,233,233,233,122, 27,226, 18, 66, 56,132,144,171, 43, - 86,172,112,246,241,241, 49,201,201,201,129, 78,167,179, 62,123,246,236,244, 54,109,218,152,186,184,184,240, 67, 66, 66, 32,145, - 72,160,213,106, 45, 27, 52,104, 96, 57,114,228, 72, 85, 72, 72,200,119, 0,126,170,138,115,229,108,199,142, 69,177,116, 89, 6, -105,208,219,203,123, 12, 50,200,149,222,115,251, 56, 92, 54,109, 72,202, 61, 91,125, 26, 54, 52,105,208, 88,180, 80,108,218,194, -178, 40,245,250,194, 62, 13, 27,238,185, 28, 91,243,195, 16, 33,132,197, 98,177,182, 4, 4, 4,140, 58,118,236,152,113, 84, 84, -148,113,147, 38, 77,192, 48, 76,121, 7,254,178,134,179, 30, 30, 53, 78, 10,171,138,127,221,212,169, 83, 23, 14, 27, 54, 12, 45, - 91,182, 44,111,138,250,253,247,223, 99,225,194,133, 22,119,239,222,253,238,232,209,163,223, 17, 66,126,162,148, 46,170, 5,117, -197,251,109,109,127,199, 43,227,227,227,135,158, 62,125,250,155, 5, 11, 22,120, 0, 8, 4,176, 60, 55, 55,183, 43, 0, 88, 89, - 89,241, 1,220, 34,132,140,159, 63,127,254,180, 69,139, 22,161,111,223,190,203, 9, 33,107, 62,199,203, 71, 8, 97, 91, 91, 91, -247, 29, 56,112, 32, 91,163,209, 64, 36, 18, 65,163,209, 52,172, 45, 79, 37, 78, 2,224,183, 41, 83,166, 76,155, 58,117, 42, 44, - 44, 44,160,209,104, 60,143, 29, 59,182,103,249,242,229, 29, 9, 33, 19,170,178,149, 16, 50,102,218,180,105,131, 71,143, 30,141, -182,109,219,130,195, 41, 89,198, 13, 27, 54, 96,213,170, 85,226,171, 87,175,126, 29, 18, 18,242, 53, 33,228, 20,165,244,179,123, -161, 49, 12, 3, 14,135,131,228,228,100,216,218,218, 10, 44, 45, 45, 67, 9, 33,187,115,115,115,207,124,254, 85,255,179, 32,132, -252, 60,124,248,240, 81, 71,142, 28, 17, 3,192,250,245,235, 49,103,206, 28,216,217,217, 65, 44, 22,255,167,205,251,175, 70, 69, -143, 86,229, 62, 90,159,213,222, 65, 38,147,181, 89, 60,235, 91,176, 88, 37, 79,141,141,234,187, 34,120,201,100,114,238, 66,104, - 27,125,199,113,133,142,136,190,191, 21, 2,151, 32, 40, 53, 90, 60,122, 25,143,107,235,123, 1, 0, 60,251, 44,133, 82, 93, 50, - 83,143, 82,106,201, 55, 50,250, 89,165,211, 61,128,189,253, 99,124,248,160, 55,182, 42,182,243,244,179,177,183,187,176,115,231, - 79, 70,205, 27,122, 65,173,213, 32, 53, 43, 21,132, 8,224,236,100,130,241, 99,250,112,187,118,117,180, 94,185,114,215, 69,145, -141,231, 32,105,118, 76,141, 13, 67,189,108,200,129, 46,109, 60,134,141,244,247, 17,180,104,222, 12, 60,129, 81,249,123,222,109, -219,194,187,109, 91,214, 34, 73,113,207, 39, 79,195,123,254,113,245,145,210,203,134,156,136,206,166, 99,245, 80,150,119,185, 36, -132, 96,246,236,217, 40,123,250, 46, 67,102,102, 38,110,222,188, 81,229, 49, 6,226,163,115,172, 89,179,198, 36, 63, 63,191,207, -222,189,123,187, 57, 56, 56,172, 73, 79, 79,191,111, 8,201,183,132,212,131, 64,208,125,220,198,141, 76,235, 1, 3,216,230,246, -246, 44, 70,167, 35,105,113,113, 86,155,182,110,245,205,123,255,222, 72,106,105,153,151, 47,151,203, 98, 98, 98, 32, 20, 10, 9, -135,195,105, 87,153,135, 82,154, 73, 8,249,153,197, 34, 11, 9, 33, 16, 8,132, 49, 83,167, 78,125, 94,250,118,189,243,231,207, - 27,247,239,223, 95, 6, 32, 17, 0, 4, 2,161, 19,155,205,242, 44, 73, 32,196,207,134, 8, 76,145, 72, 52,107,245,218,159, 68, - 69,121, 5,114,181, 84,170,177, 49, 21, 19, 34, 54, 97, 23, 21, 22, 23,167,166,103, 43,151,254,176,138, 61,101,252,232, 89, 0, -166, 27,180,128,132,184,182,106,213,234,201,233,211,167,109,173,172,172, 80, 80, 80,128,220,220, 92, 60,121,242, 4, 12,195, 32, - 32, 32, 64,208,169, 67,251, 54, 75,150, 46,123, 72, 8,233,104,136,216, 18, 89, 90, 99,189, 79,107, 0,192,247,137,185,101,231, -193,238,161,253,202,247, 89,149, 82, 8, 0, 16, 10,133,127,103,132, 84,199,238,221,187,243, 0, 96,194,132, 9, 69,197,197,197, -193, 0,142, 80, 61, 77, 85, 75,241,221,178,101,203,156,234,215,175,239,118,228,200, 17, 72, 36, 18, 0,176,173, 95,191, 62,188, -188,188,116,183,111,223,134,167,167, 39, 76, 76, 76,112,247,238, 93, 60,122,244, 8,222,222,222, 38, 60, 30,111, 24,170, 17, 90, -190,189,124,151, 9,250, 55,233,226,229, 61, 6, 98, 83, 7,236, 57,122, 28,209,225, 7,187, 40,213, 81,203,130, 3,157, 70,203, -169, 96,172,179,135,201,162,122,109,187, 90, 53,106, 54, 0,110,222,207,173, 21,186,123,241,203,103, 52, 88,199, 17, 42, 14,174, -216,144,150, 91, 21,111,105,184,112,125, 64, 64,192,208, 99,199,142,153, 3, 64,100,100, 36, 50, 51, 51, 97, 99, 99, 3,161, 80, - 8, 46,151, 91, 62,159,244, 51, 49,118,251,246,237,229,162, 77,171,213,130,210,146, 41, 0,198,198,198,248,242,203, 47,209,186, -117,107,156, 57,115,102, 44,128, 79,132, 22, 33,196,167, 67,135, 14,135,221,220,220, 92, 42,110,247,247,247,199,136, 17, 35, 0, - 0, 93,187,118,237, 62,100,200, 16, 90, 38, 8,211,211,211, 37, 79,159, 62,237, 73, 41,125, 92,149, 65, 44, 22, 75,158,154,154, -138,249,243,231, 35, 33, 33, 97, 6, 33,228, 3, 0, 33,159,207, 47,219,133, 79, 8,241,108,214,172,217,150, 57,115,230, 32, 54, - 54, 22,111,222,188,121,242,185,161, 84, 74,169,206,221,221,253,189, 70,163,105,171,213,106, 33,151,203, 49,104,208, 32,161,165, -165,101, 38,155,205,126,155,147,147,243, 77,105, 78,138, 65, 32,132, 8, 1,108,156, 58,117,234,180, 5, 11, 22,224,198,141, 27, - 56,119,238, 28, 70,143, 30,141,160,160, 32,136,197,226,113, 65, 65, 65, 15, 81, 50,208,188, 50,186,111,223,190, 29, 58,157,238, -147,255, 13,161, 80, 8, 31, 31, 31, 52,109,218, 20,231,206,157,235,142, 10,243, 81,107, 3, 66,136, 91, 64, 64, 0,159, 97, 24, - 72,165, 82,220,190,125, 91,108,100,100, 36,118,118,118,158, 4,224,255, 27,161,229,230,230, 54,245,216,177, 99,229,138,202,209, -209, 17, 2,129, 0, 21,254, 14,234,240, 31, 66,101, 47, 86, 69, 84,121, 39, 82,169,100,106, 14,135,245,214,209,161,229,137,187, -119,102,150,135, 14, 1,214, 91,149, 74,166, 6, 0, 29, 67, 81, 36,211,194, 72,192, 66, 98, 70, 49, 94,199,229, 84,117,226,143, - 74, 52,185, 70,174, 16,180, 79, 4,165, 20, 42,181, 14,202,194, 12, 4, 95,148, 33, 42, 69, 1,149, 52, 31, 42,117, 73, 26,150, -181,181, 53, 39, 52,244,242,156,235,215,111, 78,219,191,127, 63, 59,197,204,236, 13, 10, 11,219, 84,197,105,105,217,208,132, 35, - 50, 58,177, 99,231,114, 35,202,142, 67, 76,146, 20,141,156,219,195,218,220, 5, 25, 57, 82, 60,120,115, 9,111,223, 93, 64,125, - 7, 55, 4,205,234, 45, 92,189,246,200,113, 11,139,250,174,249,249,241, 69,213,217, 89,138, 49,187,174,196, 64,155, 23, 7, 93, -110, 44,116,197,105,159,236, 32,182,113,133,183,159, 19,108, 92, 26, 10,198, 6,173, 26, 3, 96,108, 85,156,148,210, 76, 54,155, -189,131,197, 34,211, 8, 33,104,217,178, 85,202,198,141, 27,213,159, 16, 2,234,150, 45, 91,165,176,217, 44,231,146, 27, 59,107, - 59,195,232, 50,171,226,172, 98,173, 51, 9, 33, 63,243,249,130, 5, 0, 96,111,239,144,124,241,226, 69,245,208,161, 67,177, 97, -195, 6,254,194,133, 11,151, 58, 59, 59, 79,168, 28,222,171,204, 25, 64,136,171, 83,195,134, 95,173,121,240,128,114, 53, 26,146, -247,228, 73, 81, 65,122,186, 54,163,184,152,127,242,237,219,190, 19,231,205,227,187,184,184,224,254,133, 11, 86,217, 82, 41, 45, - 80, 42,229, 5, 5, 5, 84,171,213, 62,169,138,147, 82,186,216,206,206,206,120,207,158, 61,158, 83,167, 78,125,158,150,150,182, - 24, 0, 28, 29, 29,131, 1, 52, 5,144, 88, 97, 27,118,238, 60,158, 58,105,210,164,152,204,204,204,143, 66,166,122,174,189,153, -173,141,173,241,209, 93, 33, 17,150, 38, 70, 44, 27,103, 71, 22,215,220,156,163,229, 27,241, 24, 64, 94,223,165,161, 8, 64,179, -106,214,236, 35, 78, 66, 8, 49, 50, 50, 58,253,231,159,127,218,114,185, 92,232,116, 58,216,216,216, 32, 33, 33, 1, 5, 5, 5, - 40, 46, 46, 70,252,219, 40,184,187,184, 96,229,162,133, 14,129, 11, 23,157, 38,132,180,173,248, 97, 86,149,157, 58,205,199,191, -234, 50, 23,127,101, 84,204,179, 48,240,218, 43, 35, 33, 41, 41, 9, 98,177, 24,205,155, 55, 23, 63,120,240,224, 94,117, 34,171, - 34,167, 80, 40, 28,214,185,115,103,147,163, 71,143,194,219,219, 27,102,102,102,184,125,251, 54, 34, 35, 35,161, 86,171, 89, 18, -137, 4, 38, 38, 38, 88,183,110, 29,220,220,220, 80, 84, 84,132,164,164, 36, 43, 46,151,107, 93, 29,231,237,208,219,171, 11, 99, -111, 45,203, 32, 87,122,239, 57,122, 28,147, 70, 14,135, 61,141,187,103,214,144,172,254,170,127,231,239, 41,219,165,159,200,164, -165,133, 71,243,254,224,241,197, 8, 92,176, 10, 49,175,206, 91,200,138, 35,102, 16, 93,178, 11,128,217,149, 57, 75, 61, 34, 44, - 23, 23,151,137, 39, 79,158, 52, 41,219,206,102,179,203,103, 30, 86, 28, 2, 95,221,192,119, 67,214,147, 16,130,132,132, 4,216, -218,218, 66, 44, 22,151, 15, 16,143,138,138,194,163, 71,143, 80, 54,141,162, 26,206,111,174, 95,191,238, 34, 18,137, 42,239,131, -156,156, 28,104,181, 90, 24, 27, 27, 67,167,211, 65,173, 86, 67,163,209, 64,161, 80,136,155, 54,109, 58, 29,192,227,170, 56, 25, -134,153, 59,108,216,176,206,143, 31, 63,110,176,117,235, 86,168, 84,170,245, 25, 25, 25, 24, 60,120, 48, 24,134, 65,247,238,221, -191,160,148, 70, 47, 93,186, 20, 0, 48,103,206, 28,141, 84, 42,157,250, 57,215, 94,122,253, 77,135, 12, 25,210,224,198,141, 27, -232,210,165, 11,148, 74, 37, 54,108,216, 96,186,115,231, 78,211,144,144, 16,155, 5, 11, 22,236, 3,208, 75, 31,103,233,239,107, -189,189,189,253,180,145, 35, 71, 26,149,206, 48,197,193,131, 7,177,114,229,202, 99, 0,150, 94,190,124,121,197,185,115,231,198, - 76,156, 56, 17, 43, 87,174, 12, 66,169,208,170,138, 51, 62, 62, 30, 54, 54, 54, 48, 53, 53, 5, 0,168,213,106,188,120,241, 2, -215,174, 93, 67,227,198,141,107,188, 38, 61,118,186, 5, 4, 4,236, 59,122,244,168, 73,114,114, 50,238,222,189, 11,119,119,119, -200,100,178, 26,103,195,214,226,127,211, 96,232,227,148,203,229,138,164,164, 36,241, 79, 63,253, 4, 7, 7, 7,184,185,185, 65, - 40, 20,130, 16, 2,141, 70, 3, 90,141,174, 54,196, 78, 95, 95,194,201, 73,181, 24,104,102,110, 49,131, 82,202, 41, 44,204,223, -165, 70,193, 31,177,177,244,147, 8,132,161,156,255, 77, 32,132,180,161,148, 62, 39, 21,102, 30,150, 61,140,112, 0,224,226,197, -139,212,223,223,159,148,125,119,114, 66, 81, 78,142, 69,140,173,125,139,227,182,246,205, 74,231,126,177,222,178,217, 22, 49,118, -118,178, 34, 0, 80,107, 41,194,222, 22, 32,226,125, 6, 34,223,103, 64, 36, 48,204,249,162, 84,107, 75,234, 51, 41,133, 66,242, -215, 67,171, 90,150, 15,165,186, 36,221, 67,165,148,161, 48,251, 13, 25, 58,168,167,112,218,180, 41,112,112,112,178,169,134, 14, -106,129, 48, 40,112, 78, 95,115, 75,115, 46, 46, 60,184,130, 47, 26, 15,130, 80,192, 69,110,161, 2, 32,192,187,184,107, 0, 99, -130, 87, 49, 73,232,208,204, 24,189,190,106, 34, 62,243, 71,244, 60, 0,203, 13,177, 87,155,242, 4, 60,143, 62,224,234, 52,208, -228, 68,131, 41,248, 0,136,236, 33, 39, 98,228,166,127,192,219,123,167, 74, 10, 78,107,128, 78,167,155, 97, 99, 99, 83,176,116, -233, 82,223, 70,141, 26,169,167, 79,159,254, 50, 49, 49,241,163,177, 54,245,234,213,251,101,251,246,237,120,255,254,125,234,154, - 53,107,110,103,103,103, 47, 51,196,198, 50, 80, 74, 23, 17, 66, 54, 3, 64,122,122,122,206,217,179,103,189,239,220,185, 19,180, -121,243,102,187,153, 51,103,242,103,206,156, 57, 30,192,143,213, 29, 63,139, 16,190, 72, 32,232,177,230,238, 93,170, 77, 73, 81, - 30,218,182,141,255, 91, 88,216, 82, 53,195, 56, 90,219,218,146, 78, 29, 58, 72,141, 89,172,156,220,204, 76,173, 77,131, 6,236, -132,107,215,172,168,145, 81,218,229,203,151,139, 36, 18, 73,181,163,115,216,108,182,172,170,112, 97, 85,112,112,112, 80, 85,149, -195, 85, 29, 8, 33, 69, 12,165,106,243,250,245,233, 87,221, 59, 54,122, 31, 29, 23, 39, 52, 55,103,123, 52,114,247,122,253, 54, -225, 9,213,233, 20,132,144,162,154,153, 0, 54,155, 61,124,243,230,205, 45, 76, 77, 77,193, 48, 12,204,204,204,144,157,157, 13, -149, 74,133,162,162, 34,168,138, 11,161, 42, 44, 68,228,135, 4,116,246,245,197,208,222, 95, 53, 9, 57,251,231,112, 0,199,244, -241, 58,182,108, 83,238,201, 90, 85,207,170,124,251,202,228,130,114,209,245, 83, 27, 15,240,196, 98,244,156, 91,155, 72,212,199, -160,148, 62,231,243,249,151, 2, 2, 2,250,206,155, 55,143,149,158,158,126,133, 16,210,153, 82,250, 70,223,113, 98,177,184, 97, - 78, 78, 14,138,139,139, 97,102,102,134,205,155, 55,195,206,206, 14, 50,153, 12, 79,159, 62,165,206,206,206,228,214,173, 91,112, -118,118, 70, 78, 78, 14,212,106, 53,164, 82,105,134, 74,165,170, 54, 92, 94, 26, 30,236, 51,183,143,195,229,232,240,131, 93,156, - 72,252,211, 97,223,117,125, 31, 29,249, 54,233,234,181, 7, 63,106, 21,194,228,130,148,235, 11,235,183,123,110, 61, 99,254, 74, -252,186,126, 5,162, 31,223,205,179,115, 45,250,205,136, 40, 15,116,232, 89,189,189, 82,169, 84,241,246,237, 91,147,151, 47, 95, -130, 16, 2, 51, 51, 51, 24, 27, 27, 87, 41,182,106,139, 82,143, 89,217,121, 32,149, 74,193,227,241, 96,101,101,133,189,123,247, -150,127,240,186,187,187,235,163,217,213,179,103,207,225,174,174,174, 38, 21, 55,182,107,215, 14, 83,166, 76,193,142, 29, 59, 16, - 22, 22,246,209, 60,205,140,140,140,116,141, 70,115,160, 58, 66, 74,105, 1, 33,164,247,160, 65,131,194,239,221,187,103,186,119, -239, 94,104,181,218, 42,191,246,236,217,131, 71,143, 30, 45,167,148,190,173,245, 2,148,172, 65,227,193,131, 7,223, 61,124,248, -176,121,118,118, 54,114,114,114, 32,145, 72, 32,149, 74,161,211,233,224,229,229, 69,180, 90,173,222,188, 55, 66, 8,139,205,102, -159,221,182,109, 91,255, 73,147, 38,129,195,225, 64,165, 82, 97,219,182,109, 88,184,112, 97, 38,128,177,148, 82, 53, 33,100,233, -129, 3, 7,198, 12, 24, 48, 0,173, 90,181,106,162,143, 83, 34,145, 64, 34,145,128,203,229,194,222,222, 30,171, 87,175,134, 74, - 85,114, 91,241,244,244, 44, 59, 47, 27,192, 46, 79, 79,207,254, 49, 49, 49, 27, 40,165, 63, 87,197,229,224,224, 48,136, 82, 58, - 89,167,211, 21, 7, 4, 4, 88, 29, 61,122,212, 36, 53, 53, 21,225,225,225, 88,190,124,121, 62,195, 48, 58,134, 97,136, 92, 46, -143,183,179,179, 11, 23, 8, 4, 70, 50,153, 44, 47, 55, 55,119, 45,165,244,202,231,172,235, 63, 1, 66, 8,225,114,185,152, 48, - 97, 2, 56, 28, 14,140,140,140,160, 80, 40,160,209,148,212,103,148, 10,173, 90,133,165, 61, 60, 76,172, 56,224, 77,242,244,252, - 50,104,232,236,126, 54, 14,142, 78, 48, 55, 21, 32, 42,234, 77,231,155, 55,174,109,107,234,101,179,147, 81,105,118,190, 77, 40, -248,215,135,221, 87,214, 34,255,246,249,254, 97,180, 1,240, 28, 21,102, 30,162,180, 10,177,154, 59,209, 16,157,181,245, 31, 57, -169,169,124, 53,159,111, 28, 3,148,120,185, 74, 68,214, 16, 29,112, 20, 90,181,166,244, 70, 65, 75,191, 12, 20, 90, 26, 29,222, - 71,191,194,189,171,127,194, 90,150,138,156,248,214, 0,175, 5, 84,242, 66, 40, 84, 37, 79,254, 12,163,195,203,240, 27, 40, 42, -204, 67,243,182,253, 0, 22,235, 81,117,124,102, 86,164, 95, 39,239,150,236,247, 73,175,208,206,115, 8, 26, 56,119,193,135,244, - 34, 20, 72,148,200, 47, 82,160,117,243, 69,200,206,151,163, 72,166,192,155,247, 33,112,114,108,192, 34,156,184,238, 48, 80,104, - 41,223,156,134,242,237, 57,240,220, 58,131,239, 53, 0,108, 55, 31, 36, 69,220,194,203,203,155,144,242,250, 62, 40,163,131,131, -103,251,154,137, 0, 16, 66,182, 93,185,114,165,125,231,206,157, 57, 61,122,244,104,229,232,232,216, 42, 45, 45,237, 37, 0, 56, - 58, 58,182,234,219,183,111, 43, 27, 27, 27,108,217,178, 69, 78, 8,217,102, 16,105, 37, 84, 10,183, 61,177,179,179, 91,115,250, -244,233,109, 83,166, 76,129,173,173,109, 11,125,199,102,115,185,173,198,174, 93, 75,185,108, 54, 61,246,235,175,188,149, 87,174, -108,220,127,224, 0,175,155,159, 31,161,148,226,197,139, 23,198, 63,253,250,171,241,168,129, 3, 19, 63,100,101,105,239,132,133, -169,211, 83, 82,138,179,164,210,149,105,105,105, 6, 23, 6,252,147,208,104, 52, 15,227, 19,226,157,218,118,104,109,243, 60, 42, -254,117,175,110,157, 58,177, 88, 44, 86,116,220,135, 48, 27, 27, 83,227,107, 87,175,169, 53, 26,205, 39,213,110, 85, 65, 32, 16, -244,235,214,173, 27, 39, 63, 63, 31,142,142,142,200,206,206, 70,106,106,106,137,199,161, 48, 31,234,194, 66,104,138, 10,160,147, - 74, 16,255,244, 9, 90, 55,168, 47, 56, 89,146, 44,175, 87,104,149, 61,101, 86,246,174, 84,244,108,241, 77, 76,192, 23,139, 65, -106, 25, 54, 36,132, 12, 52, 55, 55, 95, 88, 80, 80,112,137, 82,186, 90,173, 86, 7, 46, 92,184,176,221,214,173, 91,173,215,172, - 89, 99, 58,121,242,228,147,132,144,214,148, 82,101,117, 28, 18,137, 36, 86,171,213, 90, 3,176,189,113,227, 6,108,109,109, 81, - 88, 88, 88,230,105, 81,201,100, 50, 97,110,110, 46,148, 74, 37, 84, 42, 21, 76, 77, 77,241,236,217,179,124,173, 86,251,103, 77, -246,153, 54, 36,171,149,234,168,101, 86, 77, 68,105,106,173, 69,215,172, 60, 38,127,197,134,180, 85, 0, 54,246,105,216,112,143, -154,185, 27,255,238,213,121,139,132,167,183,243,210,222, 73, 27,236,185, 24, 87,109,142, 22,165,148, 18, 66, 24, 66, 8,245,244, -244, 68,118,118, 54,216,108, 54,140,141,141, 33, 22,139,177,120,241, 98,108,219,182,173,214, 66,139, 16, 34, 20,137, 68,107, 89, - 44,214,112, 51, 51, 51, 27,157, 78,135, 69,139, 22,161,127,255,254,224,243,249, 80,171,213,229, 30,205, 50, 47,149, 62, 79, 7, -165,244, 5, 0,211, 74,231,240,179,182,182,190,169, 84, 42, 17, 23, 23,135,179,103,207,250, 82, 74,239, 24,100,224, 95,188,113, -132,144,222, 62, 62, 62, 7,189,189,189, 27, 82, 74,209,162, 69, 11,140, 24, 49, 2, 33, 33, 33,120,249,242, 37, 10, 11, 11,153, -107,215,174,237, 7,176,161, 54,220,132, 16, 82,186,190, 94,131, 7, 15,190,127,228,200, 17,139,220,220, 92,200,229,114, 72,165, - 82,156, 60,121, 18,157, 59,119,134,181,181, 53, 14, 31, 62,172,165,148,158,215,195,197, 98,177, 88,123,119,238,220,217,127,226, -196,137,248,237,183,223,112,236,216, 49, 12, 24, 48, 0,195,135, 15, 71,118,118,182,221,250,245,235,199, 16, 66,246, 2, 88, 49, - 98,196, 8, 72, 36, 18, 60,125,250, 52,202, 16, 91, 53, 26, 13, 10, 10, 10, 80, 80, 80, 0, 35, 35,163,178,181, 1, 74, 82, 39, - 66, 54,109,218, 52, 50, 40, 40, 8, 13, 26, 52, 88, 81, 90, 20,244, 73,149, 40,195, 48, 83, 83, 83, 83, 45, 56, 28,142,149, 86, -171, 69,114,114, 50,158, 61,123,134, 25, 51,102,228,229,229,229, 77,161,148,126, 32,132, 44,157, 48, 97,194,234,185,115,231,150, -255, 45,205,157, 59,247, 2, 33,164,247,255,180, 55,199,203,203,162, 25,159, 45,152,205,227,113,173,242,243,243,203,239, 29, 42, -149, 10, 74,165,242, 35, 79, 22,143,199,181,106,223,198,237,162, 92, 86,188,228,117, 76,126,181, 3,210,155, 54, 50,111,105, 44, - 50, 11,242,239, 61,244,155,175,122,127,205,214,106, 52, 8, 13, 61,143,223,127,223, 14, 63, 31, 79, 52,104,212, 2, 51,103,205, - 54, 83,170,180,139,174, 93,187,178,176, 83,251,250, 87,138,139, 10, 22,235,227,252, 47,199,197, 82,113,245, 73, 83, 84, 14, 0, - 84,173, 32,135,232,156,156,144, 15, 0,132, 16,107, 11, 11,139, 95,117, 58,157, 31, 48, 9, 92,177, 61,222, 60,123,140,188,124, - 46,148,114, 29, 24, 90, 34,182, 12,129, 82,169,194,221,208,115,216,188,105, 35,114,115,115,225,243,165, 47, 36, 28, 23,184,186, -184, 66, 33, 47,113,100, 80, 10,168, 85, 26,216,216,185,225,249,243,151,154, 34,169,244, 78,117,124, 60,161,186,137,171,157, 39, -148,234,142, 16,242,249, 40, 44, 86, 33,191, 84,100, 29,254, 99, 24,148, 50, 57,180, 42, 53,180, 42, 13,108, 92, 7,163,177, 93, - 55, 48,186,243, 85,134,146,170, 5,163,131, 58,225, 46,212, 9,119, 97,212,113, 22,254, 12, 30,249,209,219,134,206,221,205,202, -202,202,114,116,116, 60,255,226,197,139, 65,195,134, 13,195,173, 91,183, 38, 3,152, 6, 0, 66,161,112,242,176, 97,195,240,226, -197, 11,188,126,253,250,124, 86, 86,214, 63, 50,120,149,207,231,203,149,202,146,207, 88, 99, 99, 99, 97, 13,251, 58,181, 11, 8, - 96, 21, 62,127, 94,180,233,193,131, 21,123,246,238,229,245,232,222,157,104,180, 90, 48, 58, 29, 26,121,120,144,175,190,250, 74, - 20,114,226,132, 21, 91,163,121, 52, 63, 48,240,198,142,209,163,139, 31, 75, 36,134, 38,154,215, 43, 13, 25, 2, 64, 61, 61,219, - 12,134, 82,169,220, 58,117,210,184, 30,119,238,222,119,113,117,113, 50, 13,189,118,231,165,192,136,207,106,224,222,144,157, 95, -152,199, 89,181, 98,137,145, 82,169, 52, 84,180, 54,177,182,182, 70, 70, 70, 6,222,191,127, 15,165, 82, 9,141, 70, 3, 70, 38, -133, 42,191, 0,170,194, 60, 16,133, 28, 2,157, 14,138,156, 76,212,107, 80, 31,248,171, 34, 81, 47,170, 10, 23, 86, 12, 21, 10, - 77, 77,193, 19,137,193,226,114,171, 12,119, 85,195,233,221,190,125,251, 19,167, 78,157,226,141, 31, 63,190, 3, 33,228,215,210, - 15,136,238,203,151, 47,127,242,235,175,191, 10,166, 76,153,226,181, 97,195,134, 49, 0,118, 85,199,163, 80, 40, 78, 92,188,120, -113,148,155,155,155,109,100,100, 36, 20, 10, 5, 24,134, 65,159, 62,125, 0,160,252,111, 38, 58, 58, 90,174, 80, 40,178, 94,189, -122, 85,244,225,195, 7, 21, 12,168, 18, 92,177, 37,237,225,220,161,206, 1,118,246, 78,143,132, 70,245,220,169,228,249,160,185, - 67,157,215,255,114, 50, 69,113, 57, 54,182,120,249,140, 6,235,164,197, 17, 51,204,157, 37,191, 93, 62, 95,189,200,170, 0, 74, - 74,203,217,173,172,172,192,225,112,192,229,114,193,227,241, 64, 8,193,172, 89,179,176,123,247,110,189,161,195, 74,107, 40, 52, - 49, 49,121,189,114,229, 74,231, 41, 83,166,240,132, 66, 33,242,243,243,113,248,240, 97, 76,152, 48, 1,191,255,254,123,149,249, - 47, 53,133,148, 42,131,205,102, 7,141, 30, 61, 26, 42,149, 10, 35, 70,140,192,158, 61,123,130, 0,220,169, 21, 9, 0, 74,233, - 35, 66,136,199,203,151, 47, 77, 1, 12, 24, 62,124,248,129,193,131, 7,227,206,157, 59, 56,127,254,188, 47,128, 24, 0,114, 0, -193,164,100,136,115,176,190, 66, 16, 82,210,194, 97,187,141,141,205,128,102,205,154,189, 28, 60,120,112,243, 35, 71,142,152,103, -101,101,149, 21, 63, 32, 33, 33, 1,251,246,237, 75,223,187,119,111,145, 78,167,179, 98,177, 88, 23, 11, 10, 10,170,171,154, 38, - 0,246,110,218,180,105, 92,105, 56, 16,167, 78,157,162, 27, 55,110, 36,203,151, 47, 71,126,126, 62,252,252,252,176,115,231,206, -217, 18,137,164,213,198,141, 27, 39, 13, 29, 58, 20,171, 86,173,130, 84, 42,173,182, 50,182,166, 84, 51,141, 70, 67, 0,116,218, -180,105,147, 91, 80, 80, 16, 78,157, 58, 5,111,111,111,163,248,248,248, 29, 0, 38, 86,222,191,204,147, 24, 31, 31, 15,153, 76, -134,251,247,239, 99,197,138, 21,249, 21, 68,214,236,105,211,166,173,158, 61,123, 54,214,174, 93, 75, 35, 35, 35,179, 6, 15, 30, -108,183,123,247,110,118,163, 70,141,102,163,100,232,250,255, 8, 26,123, 88,173,107,223,174,235, 66, 7,167, 70, 56,124,228, 40, -242,242, 74,234,154,232, 95,141, 50, 65, 41, 69,113,113, 49, 50, 50, 50, 96,102,106,130,245, 27, 86,247,157, 62,121,156, 11, 74, -218, 96,124,130, 38, 13, 45, 55, 12, 25, 49,241,187, 17,163,198, 33,242,101, 56, 66, 14,236,194,171,200, 23,229,124, 90,141, 26, - 49, 81,207, 16, 19,245, 12,118,246,110,248,170,135, 47, 25, 57,114,100,159,209,163,134,219, 0,248,215, 90, 71,252, 47,246,102, -125,210, 71,171, 98,206, 86,149,161,195,138, 7,151,138,172,215,199,143, 31,183,242,241,241, 97,107,181, 90, 92, 9, 13,197,140, -105,223, 98,204,232, 69, 80,195, 2, 90, 21, 15, 12, 79,239,103,120, 57,228,114, 25, 40, 40,164, 82, 41,194,194,194, 64, 25, 45, - 66,118,111, 4,165, 76,185,208, 2, 40, 84,106, 53,156, 92,189,176,125,207, 26, 45,184,220, 39,213,241, 21,229,178,117, 26, 45, - 69,106, 86, 18,146,210, 95,193,204,196, 21, 28,174, 43,114, 11,100,224,176,236,161, 81, 68, 67, 87,234, 86,149, 73, 83, 32, 87, -255,189,223,159,174,240, 83,239, 41,173,197, 77, 87, 46,151, 31, 58,116,232, 80,223, 95,126,249,133,239,239,239,239,233,232,232, -216, 9, 0,134, 12, 25,226,105,106,106,138, 67,135, 14,169,228,114,249,161,191,101,100, 5,104, 52,154,110,237,219,183, 71,126, -126, 62, 18, 18, 18, 94,234,219, 87,167, 82, 89,137,109,109,217, 89,183,110,105,178,243,243, 93,186,117,235, 70, 52, 90, 45, 88, -132, 32,175,176, 16, 31, 18, 19, 97,110,110, 78, 94, 71, 71,139,183,205,156,121,198,179,121,115, 78, 89, 69,162, 33, 56,127,254, -188, 49, 74,242,178,244,110,171, 13, 40,165, 82, 66,200,184,192,192,192, 51,135, 14, 29, 54,203,204,202,140, 17,240,249, 90,177, - 88,232, 56,250,155,233,156,130,130,130, 81,148, 82,137,161,124,249,249,249,136,143,143,135,145,145, 17,120, 92, 46, 24,185, 12, - 58,169, 4,138,188,108,176,213, 42,240,117, 58, 88, 26, 11,224, 98,103, 7, 87, 27,235,154, 9, 81, 82, 93, 88,150,248, 94, 49, - 92,184,190,125, 19,240, 69, 98,240, 77,196,152,126,225, 54, 0,128,199,227, 1,203,171,141,238,150,131, 16, 98,237,228,228,244, -231,145, 35, 71,120,217,217,217,120,241,226,197, 75, 74,105, 33, 33,196, 4, 0, 19, 21, 21,117,253,213,171, 87,253, 74,171,238, -106,170, 22,219,120,250,244,233,158, 62, 62, 62, 90,119,119,119, 81,102,102,166,107,110,110, 46, 73, 79,255, 56,215,249,210,165, - 75, 66,185, 92, 46,101, 24,230, 12, 74,250, 64,213,216,191,104,238, 80,103, 97,216,115,204,234,218,171, 94, 11, 83,235,150,200, -211, 62,111,241,232,101,250,172,185, 67,157,183,254,114, 50, 69, 97, 68,148, 7,136, 46,217,133, 35, 84, 24,148,196, 76, 41,165, -214,214,214,136,138,138, 66, 88, 88, 24, 62,124,248,128,248,248,248,143, 4,213,228,201,147, 17, 18, 18, 98,144, 71, 75, 36, 18, -173,253,225,135, 31,156,131,130,130,120,101,219,216,108, 54, 2, 3, 3, 81, 88, 88,136, 61,123,246, 32, 48, 48,176, 42, 59, 12, - 49, 23, 0, 64, 8,169,223,179,103, 79,127, 7, 7, 7,228,230,230,194,222,222, 30, 62, 62, 62,253, 9, 33,238,148,210, 4,131, -137, 62,198,244, 94,189,122,173, 94,185,114, 37, 52, 26, 13, 38, 76,152,128,119,239,222,157,120,247,238,221,102, 87, 87,215, 89, - 11, 22, 44,176,179,179,179,195,176, 97,195, 68, 0, 2,170, 35,177,180,180, 12,222,181,107,215, 40,127,127,127,150, 90,173,254, -242,230,205,155, 72, 76, 76,132, 74,165,130, 86,171, 69,108,108, 44, 2, 3, 3,211,115,115,115,187, 82, 74, 99, 13,176,107,252, -210,165, 75,199,205,154, 53, 11, 63,253,244, 19,126,248,225,135,253,102,102,102,205, 91,183,110,221,230,135, 31,126,192,252,249, -243,225,230,230, 6, 43, 43,171,198,203,151, 47,111, 50,119,238, 92,108,221,186, 21, 43, 86,172,216, 15, 96,223,231, 44, 4,195, - 48,100,221,186,117,173, 54,109,218,228, 80, 38,178, 88, 44, 22,142, 31, 63,142,231,207,159,247,175,230,152,157,246,246,246,147, - 29, 28, 28,248,215,174, 93, 19,187,185,185, 65,171,213,106, 74, 69,214, 54, 87, 87,215, 25,177,177,177,240,247,247, 71, 92, 92, -220, 33, 74,233,152,174, 93,187, 74,231,206,157,107,108,100,100,100,246, 57,118,126, 46,216, 44, 50,118,237,170,249,120,250, 60, - 26,167, 79,243,240,244,233, 83,216,217,217, 65, 32, 16,128, 82, 10,165, 82,137,236,236,108,104,212, 74,180,104, 86, 31, 7,247, -174, 67, 86, 86, 54,192, 34,213,166,220, 16, 22,249,102,220,183,131,112,239,126, 40,118,236,216, 5,137, 68, 90,229,126,124,190, - 16,141, 60,155,192,201,209, 22,201, 41,201, 32, 44, 24,118,211,251, 76,252, 47, 15, 29, 2,168, 69,123,135,138, 48, 55, 55,223, -124,236,216, 49, 43, 63, 63, 63,182, 84, 42, 5,195, 48,232,226,227,131, 89, 65, 65, 56,127,228, 8, 60, 58,140, 0, 81,137,161, - 53, 54,172,234, 65, 33,151,161,105,155, 78, 24, 58,108, 56,146, 62,124, 64,175,126,131,161, 80,200,202,159, 48,128, 18,143,150, - 74,165,134,181,173, 11,174, 94,189,202,198,132, 9,213,230,152,232,212,252,136,152, 88, 69,231, 2,249,115,132, 61, 13,129, 90, -169, 70,139, 22,203,161,102,172, 96,235, 60, 25, 26,205, 89, 20,101,223, 4, 0,152, 90,249, 33, 37, 41, 9, 44, 54,239,181, 65, -198, 86, 1, 70,250,105, 1,100,109,110,186, 5, 5, 5,133,142,142,142,127,132,133,133,125, 19, 16, 16,128,171, 87,175, 78, 2, -128,128,128, 0,132,133,133, 33, 62, 62,254,143,130,130,130,194,207,181,175, 34, 28, 29, 29, 7,248,249,249,141,104,215,174, 29, - 46, 92,184, 0, 74,233, 61, 67,142, 99,115,185,148,197, 98,129, 97, 24, 16, 0,185, 5, 5,120,247,238, 29,114,115,114,160,209, -104, 32,149, 72,152, 38,158,158, 18,202, 48, 38, 53,146, 85, 64,197, 10, 67, 84, 81,117, 88,182,173, 54,156, 0, 64, 41,253, 32, - 22,139,147,138, 37, 18, 27, 11,115,139, 98, 62,159,175,203, 47, 40, 40,124,243, 58, 82,101,224,135, 67, 25,162, 94,189,122,213, - 60, 45, 45, 13, 73, 73, 73,208, 74,139,193, 86,170,192, 82,202,208,189, 83, 71, 24,129, 66, 8, 6, 92, 70, 3, 46,155,139,226, -146,234,188, 26,195, 29,101, 66, 31,248,203,179, 69, 8, 41, 9, 23,138, 68,224,139, 77,202,223, 43,189,158, 26, 13, 21, 8, 4, - 71, 78,158, 60,233,224,228,228,132, 85,171, 86,193,217,217,185,113,139, 22, 45,100, 93,186,116, 49,178,179,179, 67,211,166, 77, -209,169, 83, 39, 92,190,124, 25, 0,244,174, 1,165, 84, 75, 8,249,234,222,189,123,223, 61,120,240, 96, 40, 33,132, 44, 90,180, - 8,189,123,247,134, 80, 40,132, 76, 38, 67,126,126, 62,118,239,222, 77, 40,165,109, 74,109,117, 19, 10,133, 71, 9, 33, 41,114, -185,124, 88,101,206,144, 77, 45, 29,179,242,152, 9,118,246, 78,131,186,246,170,215,162, 91,175, 30,168,239,209, 13,221,122, 37, - 1,192, 58, 75, 78,226,136,245,203,154,159,177,118,177,220,119,245,202,181, 21, 62, 93,187, 45, 93, 52,197, 98,245,186, 93,249, - 53,230,211, 17, 66,192, 48,204, 71,189,131, 42,191, 63,102,204, 24, 28, 63,126,188,198,117,100,177, 88,195,167, 76,153,194,171, -184,173, 44,100,220,175, 95, 63, 4, 4, 4,124, 36,180,172,173,173, 97,111,111,143,196,196, 68, 0,168,178, 50,178, 10,204, 26, - 63,126, 60,145,203,229,152, 56,113, 34,246,236,217,131, 17, 35, 70,144, 59,119,238,204, 2, 16,100, 32, 71, 69,155,215, 47, 88, -176,224,187,192,192, 64,228,229,229,225,210,165, 75,232,211,167, 15,142, 31, 63,110,115,233,210,165,181,126,126,126, 96,179,217, -184,112,225, 2,180, 90,173,222, 94, 95, 60, 30,111,128,191,191, 63, 43, 57, 57, 25, 60, 30, 15,109,219,182, 69, 74, 74, 10,100, - 50, 25, 82, 83, 83, 49,123,246,236,140,220,220, 92, 95, 67,255,143,120, 60, 94,208,172, 89,179,112,236,216, 49, 44, 90,180,232, - 0,128,137,133,133,133, 67, 31, 60,120,112,108,224,192,129, 72, 77, 77,197,153, 51,103,176, 98,197, 10, 50,102,204, 24,252,246, -219,111,152, 61,123,246,126, 0, 19,245, 84, 72, 22,103,101,101,153, 53,108,216, 66, 8, 89, 54, 0, 0, 32, 0, 73, 68, 65, 84, - 16,153,153,153,144, 72, 36, 56,115,230,140,237,229,203,151,221,157,156,156, 76,227,227,227,117, 63,254,248, 35, 63, 40, 40, 8, -155, 55,111,198,139, 23, 47, 16, 18, 18,130,110,221,186,105,227,226,226,170,244,146,149,182,108, 56, 99,105,105,121, 77, 36, 18, -161,184,184,184,172,178,116,222,162, 69,139, 2,131,131, 75,156,236,105,105,105, 24, 59,118,236,104, 66, 8,179,114,229, 74, 99, - 30,143, 7,133, 66, 81,181, 42,249,151,192,232, 24, 0, 12,220, 93,196, 8, 61,191, 23,225, 47,227, 16,254,242, 21,248,130,146, - 36,120,185, 92,134, 54, 45, 26,161, 67,219,246, 72, 75, 79,197,161,144,189,176,180,118,210,123, 31,161,148,130,199,209,161,137, -167, 61,142,132,236,194,133, 75, 55, 16,114,232,104,121,206, 27,135,195, 69,235, 54, 29,208,182,173, 15,226,226, 99,177,119,239, - 14,216,216,186, 84,203, 87, 7,253, 40, 15, 29, 86,252, 94, 17, 12,195,116,243,241,241, 97, 75, 36, 18, 40, 20, 10,100,100,100, - 32, 49, 49, 17,230, 22,230,136, 75, 75,128,175,177, 26, 25, 76, 17,162, 94,190,214, 17, 54,247, 69, 77, 39,244,239,218, 26,232, -218, 26, 51,198,143,168,118, 31, 10, 10,145,169,117, 73,232, 70,171,125,143,173, 91,171,125,114,214,234, 52,215, 67,175,221,108, - 63,126,204, 0,238,213,155,123,160, 81, 49,144,107,204, 32, 85,168, 32, 85,115,193, 50,235, 3,228,220, 1,155, 35,192, 23,173, - 26,225,204,233,203,106,170,213,220,168,142,175, 50, 56,118,205,161,205,252, 43, 36,205, 72, 63,142,232, 9, 77, 44, 13, 14, 29, -150, 65,167,211, 29, 63,124,248,240,215, 29, 59,118, 52,246,243,243,107, 8, 0, 2,129, 64,125,248,240, 97,153, 78,167,171,249, -211,161, 18, 72,165,110,240, 14, 14, 14,109,120, 60,222,136, 1, 3, 6,180, 25, 55,110, 28,222,188,121,131, 67,135, 14,197, 52, -106,212, 72,111, 15, 49, 54,159,159, 43,201,202, 50, 23,187,187,115, 44, 76, 76,210, 46, 95,186,228,214,163,103, 79,146,148,148, -132,220,220, 92, 40, 20, 10,188,120,249,146,114,217,236, 20, 98,106,202,138,126,254,156,197,230,243, 13,253,176, 1, 62,174, 48, -172,170,234,176,108, 91,173,225,226, 96,209,112,197,162,169,245, 21, 74, 69,243,162,162, 34, 45,135,203,229, 58,219,155,127,168, - 13,135, 82,169,188,112,253,250,245,175,123,244,232, 33,136,137,120, 1,109, 97, 33, 84,133,249,224, 49, 58, 88,182,105, 5,182, - 90, 9,168, 52,112,106, 66,161, 40, 48,198,157,199,209, 26,165, 82, 89, 99, 83,195, 50,161,197,170, 36, 12,248, 98, 49, 4, 38, -166, 16,136,197,149, 5,131,222, 39, 57, 66,136,241,128, 1, 3,186,127,241,197, 23,160,148, 98,247,238,221, 80,171,213,124,181, - 90, 13,149, 74, 5,181, 90,141,162,162, 34,132,132,132, 96,251,246,237, 15, 0,236,175,201, 70, 74,169,150,203,229, 6,106,181, - 90, 91,129, 64,160,182,177,177,225,157, 56,113,162,188,221, 68,235,214,173, 33, 18,137,148,132, 16, 53, 0,216,219,219,107, 14, - 28, 56,192, 25, 56,112, 32,175, 42, 62,175, 22,141,231,215,215, 90,116, 21, 26,213,115, 55,181,110,137,250, 30,221, 0, 0, 61, -251,141, 71,253, 70,174, 40,202,137,112, 87,200, 19, 7,241, 56,249, 22,175,183,166,190, 49,242,111, 62, 78,154,117,251, 29,170, - 46,239,175,202, 94,176, 88,172,106,195,177,134,136, 44, 66, 8,203,204,204,204,166, 44,207, 7, 0,114,115,115,145,158,158,142, -168,168, 40,120,121,121, 33, 47, 47, 15, 78, 78, 78, 80,169, 84,104,215,174, 29,228,114, 57, 54,109,218,132,251,247,239, 63, 64, -105,101,100, 13,231, 48,242,240,240, 24,219,166, 77, 27, 92,186,116, 9, 79,159, 62, 77, 13, 13, 13,117,242,241,241,129,187,187, -251, 56, 66,200, 18, 74,171,239,193, 87, 5,159,232,203, 47,191,156, 25, 24, 24,136, 87,175, 94, 97,234,212,169,185,201,201,201, -103, 78,156, 56, 49,113,197,138, 21,172, 94,189,122, 33, 61, 61, 29,235,215,175,215,221,191,127,127, 3,128, 85,250,248, 40,165, -111,147,147,147,157, 21, 10, 5,242,242,242,160,213,106, 33,147,201,112,249,242,101,132,132,132,100,150,138,172,247,134,218,215, -170, 85,171,166, 44, 22, 11,199,142, 29, 3,128,101,148, 82,134, 16,114,102,208,160, 65,169, 63,254,248,163,211,226,197,139, 49, -105,210, 36,168,213,106,252,244,211, 79, 88,188,120,241, 69,148,136, 44,125, 55,209, 95,236,237,237, 39, 79,157, 58,181,241,220, -185,115, 17, 22, 22,102,251,236,217,179,182, 47, 94,188,128,139,139, 11,114,115,115, 57, 86, 86, 86,216,188,121, 51,230,204,153, -115, 10, 64,206,195,135, 15,135,199,199,199, 7, 83, 74,215,215,176,158, 59,157,156,156, 38, 83, 74,169, 76, 38, 75, 92,180,104, -209,250, 53,107,214, 96,206,156, 57,120,253,250, 53, 10, 11, 11, 97, 98, 98, 66, 22, 44, 88, 48,118,217,178,101,152, 48, 97, 2, -149, 74,165,219, 13, 93,143,127, 10,148,234, 32,203,127, 5,157,210, 2,173, 91,120,161,117,243,122, 8,189, 25, 14, 0,232, 62, -216, 7, 50,105, 49, 14, 28,216,141,247,239,223,129,195,229,194,220,210,190, 70, 78,134, 97,160, 42,122,139, 2,117, 58,122,248, -181, 69,159, 94,190,216,127,240, 56,180, 26, 53, 38,142, 31,133,252,130, 2, 28, 60,184, 23,113,241,177,224,112,185,176,178,254, -247, 27,161,234,211, 34,255,155, 97, 80,182,168, 70, 83,146,248,158,154,154,138,103,207,158, 33, 33, 33, 1,198,198,198,144,107, -117,204,142,235,247, 25, 66,120, 41, 12,165, 15,168,182,188, 75,241,167, 28, 58, 93,106,133,142,181,102, 22, 22, 22,124,165, 82, - 14,173, 86, 83,225, 83,133, 0, 4,224,113, 0, 7,199,250, 72, 78, 74,166, 10,133,226,182, 62,219,120, 74,197,230,115,103, 78, - 6,118,234,236, 99,221,167,251, 74,156, 57,187, 28,249, 69, 69, 80,168,185,144, 42,212,144, 41, 0,115, 75, 79,180,107,209, 18, -105,105,185,136,120,122, 71,194, 81,202, 12, 73, 20,125,183,109,233,120,143,241, 51,230,195,200,173, 51,148, 81,103,192, 72, 50, -203, 61, 90, 66,177, 5, 44, 93,155,160, 64,170,196,201, 27,225, 0, 96,240,168,151,204,204, 76,153,163,163,227,225,192,192,192, -159,194,195,159, 57, 3, 64,120,120,120, 74,122,122,250,194,204,204, 76,131, 43,238,128,143,186,193, 19, 99, 99,227,240, 70,141, - 26,165,249,251,251,155, 13, 26, 52, 8,214,214,214,120,241,226, 5,130,131,131,223,170,213,234,249,183,111,223,214, 27,234, 81, -169, 84,169,225,103,207,154,250,126,251,173,249,252,254,253,215, 7, 6, 6,110, 94,181,106, 21,215,195,195,131,104,212,106, 68, - 70, 70,210, 35,135, 15,107,182, 47, 94,188,137, 47, 18,113,158,156, 59,199,213, 42,149, 53,245,104,250,215,225,236,236,220,181, -111,239,174, 77, 54,252,178, 21, 10,185, 4,143,195, 46, 34, 63, 63, 27,187,118,159,110,226,236,236,220, 53, 37, 37,229,142, 33, - 60, 58,157,238,248,190,125,251,190,235,208,166, 77,155, 6, 46, 46,136,252,144, 0, 62,163, 3, 79,171, 5, 91,173, 4, 75,171, -128, 75,115, 10,194, 50, 65,122, 70, 17,214, 28,251,227,149, 33,194,184,113,223, 1, 88,149, 82, 8, 66, 8, 54,118,108, 14,190, -137, 24, 60,145, 24,211,255,188, 89, 46, 12, 46,172, 90, 12,190, 88,140,134, 29,106,110, 8, 79, 41,149,153,152,152, 60,139,140, -140,108,215,188,121,115,124,247,221,119, 72, 76, 76, 4,195, 48,200,204,204, 84,164,167,167,167,102,103,103, 39,162,164,255,207, -158, 26, 62,196,202,161,213,106,109,195,195,195, 1,128, 7, 0, 55,110,220,128,163,163, 35,204,204,204, 80, 84, 84,132,249,243, -231, 11,190,255,254,123, 0,192,179,103,207,184, 21, 5, 74,101, 68,134, 71,109, 40, 40,166,249, 84,242,124, 80,158,246,121,139, -110,189,146,209,179,223, 56, 92,187,176, 31, 55, 67,175,195,146,147,152, 0, 81,241,229,156,132,156,162, 20,169,199,206, 38,222, - 19,217,233,210,208,157,179, 6, 90,176, 29, 28,152,147,139,182, 23, 22,232,179,213,195,195, 3,118,118,118,229, 57, 90, 28, 14, - 7, 19, 38, 76, 0,165,212, 32,145, 85,186,142,140,169,169,105,182, 66,161,176, 19, 10,133,200,200,200, 64,108,108, 44,226,226, -226,202, 91, 7, 48, 12,163,153, 55,111, 30,119,230,204,153,216,177, 99, 7,110,223,190,253, 0,192, 74, 74,169,161, 15,107,163, -134, 13, 27,102,162, 82,169,112,244,232, 81, 45,128,126, 39, 79,158,124,214,174, 93, 59, 78,239,222,189, 77,126,251,237,183, 81, - 0,246, 24,200, 5, 0, 34, 83, 83, 83,158, 90,173,198,111,191,253,134,228,228,228,174,148,210, 40, 66,200,206, 97,195,134,109, -111,222,188,121,163, 87,175, 94,189,147, 72, 36,211, 41,165, 17, 53,145,101,102,102,142,111,219,182,237, 73,134, 97,220,122,244, -232, 33,250,229,151, 95, 76,163,163,163,225,236,236, 12,134, 97, 34,105, 45, 71, 88,189,123,247, 46, 42, 61, 61,189,137,175,175, - 47, 46, 95,190,188,142, 16,178, 22,192, 79,211,166, 77,115,250,240,225, 3,218,180,105, 3, 75, 75, 75, 68, 71, 71, 23,167,167, -167,111, 7,176, 68,143, 39, 11, 0, 64, 41,141, 7,176,144, 16,210,114,231,206,157, 35, 44, 45, 45,191,120,241,226, 5,238,221, -187,135, 13, 27, 54,224,251,239,191, 71,151, 46, 93,240,221,119,223,229, 0, 24, 81, 26,210, 54,168,111, 94,153,103, 11, 0,218, -182,109,155, 22, 28, 28,140,137, 19, 39,210,223,127,255,125,203,225,195,135,131, 70,141, 26, 5,160,228, 51,112,236,216,177,244, -208,161, 67, 99,245, 21, 2,252, 75,208,168,213, 42,152, 90,214,135,164, 32, 9,217,201, 97, 48, 54,177, 71,175,110,173, 32,147, -171,112,254,220, 41, 68, 68,190, 4,139,197,130,157,189, 11,204, 45,172, 17, 19,243, 14, 0,244, 85, 27,107,212,106, 53, 76, 44, -234, 65, 82,152, 12, 85, 86, 56,140,196,182, 24,247,237, 32,200,228,106,156, 62,115, 10,175, 94, 69,128,205,102,195,222,193, 5, -102,230, 37,156,132,234,229,172, 3,170,238,167, 85,163,208, 98,179,217,183,174, 92,185, 50,164, 67,135, 14,156,247,239,223,227, -253,251,146,135,155,252,252,124, 45,129,238,143,204,136,179, 35,171, 59,150, 16,210,163,172, 58,163,226,236, 66,177,137, 73,106, -244,219, 40,187,252,188, 76,188,124,126, 31,239, 99, 34,145, 16, 23, 5,181, 90, 1, 54,139, 5, 22,155,133,122,245,155,225,254, -131, 48,149, 66,171, 13,171,142, 19, 0,242,242, 98,139,197,118,158,195, 87,175, 90,114, 97,206,252, 31,140,134, 14,217,129,136, -232, 55,144,104,237, 65, 41, 96,111, 37, 66,235, 6, 11,144,154,150,141, 99,251,127,147, 49,106,245, 55, 21,123,104, 85,197, 9, - 0,118, 57,104,186,125,247,254, 9,123, 66,142,252, 48,127,230, 20,187,129, 1,223,128,159,247, 6,154,180,112,212,111,215, 7, - 68, 96,142, 75, 87,111,226,206,179, 55,153,140,142,254, 96,151,139,223,107,226,172,136,130,130,130,135, 25, 25,233,206, 21,186, -192, 59, 11, 4, 66,189,213,113,149, 57, 73,165,142,243,108, 54,203,123,245,234,213, 26, 59, 59, 59,245,171, 87,175,176, 99,199, - 14, 38, 60, 60,252, 42,139,197,218,150,150,150,166,168,137,211, 70,163,121,121,100,209,162,166,237, 3, 2,232,200,153, 51,101, - 16, 8,102,173,223,184,113, 81,118,126,190, 35,101, 24,216, 88, 90,166,172, 95,188, 56,120,200,176, 97,249,175,239,223, 55, 10, - 59,123,214,136,175,213,134,215,100,231, 63, 1,125,156, 41, 41, 41,119, 60, 26,186,226,192,158, 95,160, 86, 43,145,158,250, 1, - 0,144,147, 91, 8,125, 34,171, 50,103,105,213, 85,192,178,239,191,127,180,108, 78,144,253,151,221,123, 32,233,229, 11,168,243, -178, 65, 52, 90,112, 9, 7,210, 44, 99,100,101, 74,176,240,208,137, 44,137, 76, 22, 80,249, 67,162, 58, 59,203, 60, 86, 2, 83, - 19,240, 68, 98,240,197, 38, 31,121,177,132,166,166,224,139,196,224,240,249, 85,121,105, 62,225,148, 72, 36,131,135, 12, 25, 18, -241,228,201, 19,139,137, 19, 39,162, 83,167, 78,207,229,114,185, 31,165,212,160, 49, 83, 85,113,114, 56,156, 44,111,111,111, 91, - 46,151,171,157, 48, 97, 2, 39, 39, 39,167,188,179,186, 68, 34,193,229,203,151,225,229, 85, 82,213,255,250,245,107, 52,107,214, -172, 90,206,137, 11, 34, 83, 1,172,154, 59,212,121,253,163,151,233,179, 0,172,171,223,200, 5, 55, 67,175,227,222,205,176, 69, - 95, 52,103,182,246,253,166,221,143,198,126,195,230, 55,241,158,200, 22,155, 58,224,224,233, 83,236,168,240,189,107,100,178,200, -134, 0,230, 85,103, 39, 33, 4,148,210, 79, 90, 57,176,217,108, 28, 62,124,184,182,215,126, 98,207,158, 61,211,166, 78,157,202, - 75, 79, 79,199,219,183,111, 33,149, 74, 33, 20, 10, 17, 26, 26,170, 5,240,219,225,195,135, 67, 15, 31, 62,220, 27, 37,125,113, -170, 20, 88,213,253,222, 69, 34, 81, 96,175, 94,189,240,246,237, 91, 60,125,250,244, 20,165, 52,130, 16,114,234,253,251,247,195, -187,116,233,130,253,251,247, 7,162, 26,161, 85, 29, 39,195, 48, 21,123, 38,229, 1, 0,165,244, 37,128, 47,106,121,237,101, 9, -188,157, 1,192,202,202, 42,217,206,206,206,244,229,203,151,112,117,117,133, 90,173,238, 80, 19, 95,101,206,194,194,194, 95,182, -109,219,246,251,248,241,227,241,227,143, 63,126,115,226,196,137,111,250,246,237, 11,127,127,127,236,219,183, 15, 17, 17, 17,235, -168, 1, 99,197,170,186,246, 82,225, 24,209,180,105,211, 25, 46, 46, 46,216,176, 97, 3, 34, 35, 35,131, 87,173, 90,181, 56, 34, - 34, 2, 94, 94, 94,130, 55,111,222, 84,251, 48, 89,211,125,201,212,212,212, 84,163,209,224,236,217,179,143, 41,165,115, 8, 33, -182,155, 55,111, 30, 33, 22,139,145,151,151, 39,127,245,234,213, 40, 74,233,185,218,112,126, 14, 62,249, 29, 17,178,116,226,164, - 89, 59, 39, 77, 28, 37,108,235,221, 26,178,162, 20,200, 37,153,144, 21,103, 96,219,158,171, 32,132, 5, 27, 27, 7,216,218, 59, -227,195,135, 36, 60,184,120, 73, 37,149,201, 55,243, 53,204, 58,253,156, 51, 75, 56,219,148,112,202,164, 89,144, 75,178,202, 57, -109,109, 29, 75, 57, 63,224,126,216, 37,133, 92, 42,253, 69, 69,201,207,213,113,254,183,131,212,118,214, 97, 69,228,231,231,207, -158, 50,101,138,223,194,133, 11,173,180, 90, 45,219,210,210, 18, 31, 62,124,208,254,241,199, 31,121, 18,137,164, 70,215,121, 85, -224,112,185, 17, 30,158, 94,126, 3, 7, 14,212, 14, 24,208,159, 55,122,124,111,142,141,173, 45, 10, 11,114, 17,243,246, 5,162, -223,132,195,195,171, 21, 86,172,218, 4,152,155,215, 56, 72, 82,146, 25,115, 75,108,231,217,111,229,178,121,199, 59,119,253,202, -212,171, 89, 43, 94,235,134,102, 80,107,180, 72, 73, 73,193,185,179, 47,213,175,158,221, 43, 98,180,170,225,210,108,195, 70,240, -220, 46,121, 42,218,213,194,142, 28, 94,187,126,219,119,191,237, 58, 48,127,225,172,137,162, 46, 62, 61, 17,121,125, 63, 78, 93, - 56, 46, 85, 40, 85,235,121,108,108,140,204,161,181,242, 66, 1,128, 66,161, 80, 87, 46,136, 82, 40, 20, 85, 53, 49,173, 21,246, -237,219,135,204,204, 76, 85, 98, 98,226, 21,173, 86,123,162,186, 97,207, 85, 97, 43,165,170, 0, 66,174, 47,243,241,233,189, 44, - 52, 84, 56,118,193, 2,213, 55,163, 71,207,131, 82,169, 6,159, 79, 57, 34, 17, 11, 2, 1,247,245,253,251, 70, 91,166, 77,179, - 36, 42,213,181,253,122,218, 6, 84,129,127,188,234, 16, 40,247,104, 97,236,196, 57,144, 87,240,104, 61,124, 26,131,218,120,180, - 0,128, 82,154, 68, 8,249, 98,214,210,101,167,135,247,234,222,164,185, 91, 61,129,141,123, 61,136,237,237,145,155,157,141,251, - 79,163, 53,171,142,159,126, 85, 42,178, 12,234, 43,195, 48, 76, 73,146, 59,128,238,179, 23,130,176,217, 64,105, 27,135,178,202, - 33,247,118,157, 64, 56, 28,232, 40, 3,165, 82, 89, 99,146, 22,165, 52,133, 16, 50,248,155,111,190,185,113,225,194, 5, 86,175, - 94,189, 90,159, 57,115,166,118, 49,236, 74,208,104, 52,206, 0,192,225,112,138,140,141,141, 57,227,198,141,131, 70,163,129, 76, - 38, 67, 97, 97, 33,162,162,162,148, 67,135, 14, 21, 0,128, 72, 36,210, 12, 31, 62,188,198,251,199, 47, 39, 83, 20,115,135, 58, -111,181,228, 36,142, 40,202,137,112,183,228, 36, 38,124,209,156,217,250,203,201, 20,197,202, 57,230,171,115, 18,239,196,164, 75, - 67,119, 30, 60,125,138, 61,102,208, 96,157,179,248,221, 34,161, 45,253,163, 91,149, 41,204,127,129, 16,242, 73,115, 82, 67, 68, - 86,101, 20, 23, 23, 47, 94,190,124,185,127,126,126,190,115,239,222,189,121, 77,154, 52,193,163, 71,143,112,225,194, 5,237,195, -135, 15,147,165, 82,233, 18, 74,169, 2,192,213, 90,147, 3,240,244,244,116,231,112, 56,101,161,180, 95, 75, 55,255,122,230,204, -153,225, 19, 39, 78, 68,189,122,245,154, 18, 66, 4,180, 22,255, 71,148,210,242, 40,195, 63, 9, 66, 72,220,150, 45, 91,156,236, -237,237,201,229,203,151,181,108, 54,187,214,158, 27, 74,233, 62, 66, 72, 7,141, 70, 51,105,242,228,201,232,218,181, 43,180, 90, - 45, 14, 29, 58,132,189,123,247, 26, 36,178,106, 66, 76, 76, 76,120,114,114,242,151,243,230,205,195,134, 13, 27, 22,207,155, 55, - 15,201,201,201,136,137,137,169, 49,117, 69, 31,138,138,138,228, 73, 73, 73,198, 29, 59,118,108,235,234,234,250,106,236,216,177, -205, 38, 78,156,136,117,235,214,209,219,183,111, 15,161,148, 94,254,187,182,127, 14,222,190,203, 13,105,209,192, 46,116,213,234, - 95,190,111,216,192,125,234,132,113,195,216,158, 30,205, 32, 45, 76,129,149,181, 29,156, 93,234, 35, 59, 43, 7, 87,174, 92,214, -229,228, 20,236,211,177,200,202,119,239,114, 63,237,176, 93, 11, 78, 39,231,250,200,202,202,194,165, 75,151,116, 5,249, 69,187, -161, 97,173,122,147,152,111,240,103,201,127, 35,168,158, 89,135,196,144,196,219,210,202,195, 45, 37,237, 29, 74,188, 92,249,249, -249,179, 41,165,159,182,131,255,248,184,114,197, 75, 42, 55, 81, 27, 58,148,135,139, 23, 91, 66,163,249,194,220,196,164, 59,101, -152,118,173, 90,181, 18, 15, 27, 54,140,241,241,233,196, 55, 53, 53, 37, 77,155, 54, 47, 42, 44, 40,176, 4, 0, 10,232, 42,115, - 86, 70,217, 80,105, 14,155,219, 67,167, 83,183, 40,177,181,230,161,210,134, 40,243, 6,118,196,134,195, 96, 5,139,144,113, 12, -165,251,181, 44,172,140,203,164,213,142, 6, 50,132,179, 66,216,175,108,228,140,222,155, 80, 53, 79,247,229,161, 67, 22,139, 29, -226,224,224,176, 36, 37, 37, 37,139, 82,170,211,199,165,143,179,108, 4, 79,191,160, 32,141,247, 87, 95,105, 45, 93, 92, 24, 74, -169, 46, 33, 60,156, 60, 60,119,142,251,240,220, 57,161, 70,169,188,117,146,210, 56, 67, 56, 29, 29, 29,131,207,159, 63,111,112, -238, 85,255,254,253,223,148,229,109,233,179,179, 34, 26, 54,112, 14,109,224,238,244, 85, 3,247,146,240,116, 92, 66, 26,226, 18, - 82,175,198,198,165,244,170,238, 24,125,156,132,252, 53, 84,154,148,182,112,160, 6, 12,149,174,204,105,109,109,253,140,195,225, - 56,235,189,224, 74,208,233,116,105,217,217,217,229,227,172,106,176,115,164,187,187,251,186, 15, 31, 62,156,214,233,116,115, 12, - 61, 71, 13,156,157,216,108,246, 37,157, 78,247, 81,108,144,195,225,100,149,137, 49, 66,136,155, 64, 32,248, 40, 25, 94, 31,231, -250,101,205,191,239,216,165,203,160,135,247,238,157,153,191,250,213, 71,121, 67,179, 6, 89,142, 31, 57, 99,246,207, 71,127,219, -178, 96,235,153,188,143, 42,207,170,244, 54,219,217,221, 6,224, 81,250,190,222,235, 44, 93,203,143,202,209,171,240, 12, 11, 77, - 76, 76,130, 1, 12,103, 24,198,154, 16,146, 67, 41, 61, 86, 65,100,213,136,234,174,157,205,102,175,107,220,184,241,236,232,232, -232,163, 90,173,118, 66,133,253, 55, 52,108,216,112, 70, 98, 98,226,175, 26,141,102,190,161,156,132, 16,211, 46, 93,186,228,111, -217,178,133, 53,103,206, 28,220,185,115,199,146, 82,154,111,136,141,250,236, 44,125,207,222,194,194,226,119,157, 78,215,132, 82, -122,190,184,184,120, 49,165,180,198,196,239, 42,214,147, 0, 24,238,228,228, 52,223,195,195,195,227,221,187,119, 17,169,169,169, -235, 43,123,131,254,134,157,254, 95,127,253,245,249,205,155, 55, 19, 23, 23, 23, 36, 39, 39, 35, 40, 40,136,158, 61,123,182, 63, -165,244,147, 30, 70,134,112,150,190,191,116,218,180,105,171, 71,143, 30, 13,160, 68,208, 6, 7, 7,211,139, 23, 47,142,165,148, -134,124, 14,231,231, 64, 31,103,211, 6, 54, 13, 40, 91,183,166, 85,243, 38, 67,190,253,102, 16,121,248,244, 29, 30, 61, 12, 67, - 74, 90,218, 25,134,197, 90, 18, 19,147, 83,101,168,183, 54,156, 97, 79, 99,240, 40, 44,140,166,167,165,159, 4,101, 47,123, 19, -151,109,208,125,190, 14, 85,139, 44,192, 64,161,245, 55, 78, 90,189,208,170, 10,142,142,142,200,205,237, 32,228,112,124, 4, 2, -129, 31,139,205,190,149,151,157, 29, 4, 24, 38,180,254, 9, 59,107, 66,195,134,132, 95,221, 72,130,207,225,172,156,200,254, 57, -156,181,225, 48,148,179,186,161,210,140, 82,153,102,165,213, 62,219, 74,171, 95,131,202,156,206,206,206,147, 24,134,209,219, 74, -187, 34, 88, 44, 86, 66, 74, 74,202, 71,225, 20, 67,215,211,195,195,131,190,127,255, 30,148,210, 26,147, 41,255,211,127, 75,255, - 77,156, 33,155, 90, 58,122,181,104, 60, 63, 50, 60,106, 67,105, 88,177, 28, 43,103, 89,154,248,116,243, 93,126,255,230,237, 31, - 87,108,205,251,232, 97,232,127,218, 78, 66, 8,139,214,182,186,229, 51, 57, 9, 41,105, 18, 90, 91, 78, 30,143,183,179,125,251, -246,147, 30, 61,122,244,187, 86,171,253, 36, 92,241,185,118,126, 46,254, 19,156,132, 16,127, 54,155, 61,207,211,211,179,117, 76, - 76,204, 11,157, 78,183, 65,159,200, 50,212, 78, 66,200, 18,119,119,247,233, 60, 30, 79, 32,145, 72,242,211,210,210,150, 83, 74, - 79,252, 29,206,218,194, 16,206,166, 30, 86,109, 41, 45,111,186,189, 38,234,125,110,181, 45,144,106,205, 73, 25, 29, 67,217,171, -163,227,114,158,235,219,191, 78,104,125,140,191, 21, 58,252,167, 80, 38,148,244, 34, 45, 45, 25, 64, 50,128,147,255,186, 65,159, - 9, 67, 68, 86,109,240, 57,226,232,223,224,168,140, 82, 33, 21, 86,227,142, 6,160,178,104,250, 55,241,238,221,187,255, 83,213, - 42,255, 87,240,237,156,136, 52, 0, 65,109,253, 62,125,175, 84, 92,205,247, 27,240, 63,109,213,167,248, 28,145,245,185,156,250, - 68,150, 62,168,213,234,169,132,144,185,180, 22,213,138,255,215, 80, 42,170,244, 10,171,207,228, 93, 11, 96,237, 63,205,251, 79, -227,205,187,220,103, 0,106, 8,176,255,231, 57,255,155, 80,149, 39,171, 12,255, 99, 66,171, 14,117,168, 67, 29,234,240,207,224, -191, 89,100,213,161, 14,255,191,162,162, 87,171,162,240, 34, 0,122, 84,117, 64,109, 92,130,132,144, 42, 57,244,193, 0, 23,110, - 29,103, 29,103, 29,103, 29,103, 29,103, 29,103, 29,231,255, 49,206,255,139,168,156,159,245,209,107, 90, 90,245,244,111,124, 1, -232, 81,199, 89,199, 89,199, 89,199, 89,199, 89,199, 89,199, 89,199,249,127,249, 11,192,228,234, 94,215,133, 14,235,240,175, 99, - 91, 0,113, 2,128,153,167,169, 65,205, 77,107,187,127, 29,234, 80,135, 58,212,161, 14,255, 73, 80, 74,119, 87, 23, 58,252,143, - 11, 45, 66,136, 35, 74, 26,237, 53, 4, 16, 13,224, 30,173, 69,185,114, 21,124,214, 0,134, 17, 66,134, 2, 0,165,244, 36,128, - 19,180,134, 86, 20,101, 48, 50, 50,202, 84, 40, 20,182, 0, 32, 20, 10,179, 20, 10, 69,197, 89, 6,164,244,171, 34,104,201,105, -104,181,137,173,245,235,215,207, 84, 42,149,182, 6,156,190,144, 82, 26,193, 98,177, 34,197, 98,241,205,232,232,232, 26,199,187, - 84, 68,183,110,221,198,178,217,236, 53, 0,160,211,233,150,222,188,121,243, 64,109,142,175, 13, 8, 33, 29, 92, 28,237,247,171, - 53,106,109,102,118,222,114, 90, 77,233,246,246,254, 36,152, 67, 48,191,244,231,245,211,207,235,111, 97, 81,219,253,245,216,215, -150,203,229, 6,218,217,217,245, 73, 73, 73,121, 6, 96, 1,165,180,198,174,198,174,174,174,223,114, 56,156,111,116, 58, 93, 3, - 54,155, 29,167,213,106, 15, 39, 37, 37, 85, 89,218, 93,135, 58,212,161, 14,117,168, 67, 25,104, 53, 9,241,181, 18, 90,141,173, -137, 61, 5, 70,128,160, 39, 40,174, 17,224,216,219, 28,154, 97,232,241,254,141,137, 70,163, 45, 57, 39,143, 5,221,229, 88,214, -110,127,127,127,231,153, 51,103,162, 83,167, 78,120,244,232, 81,199,125,251,246,141,103,179,217, 17, 12,195,220, 2,240,136,234, -105, 35, 80, 6, 66,136, 8,192, 64, 0,163,250,244,233,211, 99,205,154, 53,236,102,205,154, 65, 46,151,227,246,237,219, 62,235, -215,175,223, 76, 8,185, 14,224, 8,128,115, 84, 79,111, 24,133, 66, 97, 91,166,153, 8, 33,182, 67,134, 12,121,130, 10,226,170, -116,190, 26,161,148, 62, 36,132,132,233,116,186, 71, 39, 79,158, 76,110, 76, 72,135, 41,238,188, 63,102,199,171, 62,233,153,164, - 84, 42,109,207,254,188, 22, 28,129, 0,202,226, 34,116, 28,247, 87, 21,232,181,239,231,131, 48, 90,176, 65,243,253, 86,111,142, - 0, 16,153,150,150, 22,209,181,107,215, 4, 3,151,181, 28,108, 54,123,205,149, 43, 87, 28, 40,165,232,213,171,215, 26, 0, 7, -106,203, 97, 8, 8, 33,130, 47,218,182,186,117,254,212, 81,161, 36, 47, 19,189, 7, 14, 63, 76, 8, 25, 75, 41, 61, 85,113,191, -237,125,137, 29,225, 96,254,180,181, 71,216, 0,176,125,201,168, 5,155,123,145,173, 65,161, 52,131, 16,226, 7,148,143,108,250, -153, 82,122,107,123, 95, 98, 7, 54, 22, 78, 91,123,132, 0,192,142, 37,163,230,111,239, 75,182, 76,191, 84,187,170, 74, 66,200, -244,177, 99,199,110, 93,179,102, 13,219,193,193, 1,169,169,169,189,155, 54,109,234, 73, 8,105, 74,245, 36, 17,187,187,187, 31, -247,237,249,117,253,128,161, 35,140,109,172, 45,144,150,158, 99,122,252,232,239, 83,220,221,221,251, 36, 36, 36, 12,175,221, 42, -213,161, 14,117,168, 67, 29,254, 91,240,183,218, 59,120, 59, 18, 35,169, 26, 95,115,216,228,219, 46, 29,154,117, 31,217,183, 11, -171,105,147, 70,120,243, 58,234,171,115, 55, 31,175,111,106,199,186,161,213,209, 16, 17, 15,103,195,211,244, 87,194,104,180,224, - 92, 61,123, 4, 0, 48,125,252, 40,246,147, 39, 79, 26,121,123,123,151, 55, 4,236,222,189, 59,186,119,239, 78,182,111,223,222, -234,234,213,171,173,246,238,221,171, 38,132,236,167,250,155,208, 5, 54,108,216,112,253,214,173, 91, 5, 93,187,118,133, 64, 32, - 40,127, 79, 44, 22,163,127,255,254,232,223,191, 63, 59, 45, 45,173,215,249,243,231,123,253,252,243,207, 42, 66,200, 60, 74,233, -175,213,113, 86,196,242,229,203,219, 86,177,249, 10, 33, 36, 86,171,213,190,104,217,178,101,178, 23, 33,141,166,246,237,116,109, -122,103, 15, 81,117, 60, 28, 62, 31, 7,199,150,124, 86, 87, 20, 90, 9, 55, 47, 67,108,106,146,107,108, 98, 18, 1, 32, 18, 64, - 4,165, 52, 50, 54, 54, 54,170, 9, 33,173,190,176, 96,237,223,155,167,107,105,136,173, 0,192,102,179,145,156,156, 12, 51, 51, - 51, 35, 95, 95,223,116, 66,200, 15,183,110,221,170,182,236,244, 51,209,225,135,249,211,121,249,137, 17,200,120,251, 16,115,135, -250, 24, 7,109,251,243, 71, 0,167,244, 29, 68, 8,139,245,115, 24,179, 40,168,100, 24,239,242,220,220,220,174, 0, 96,101,101, -197, 7,112,107,211, 99,244,157,211,185,134, 14,148,122,249, 9,143,205,102,255,118,240,224,193,137,223,126,251,109,201,232,136, -251,247, 33, 22,139,177,106,213,170,122,223,125,247, 93, 48,170, 25, 4,236,234,234,250,173,111,207,175,235,111,217,240, 99,211, -226,188, 66,229,174,223, 78, 60,117,108,238,197,154, 22,248,157,201, 22,181,210,222,213,213,245,219, 58,207, 86, 29,234, 80,135, - 58,212,161, 42, 84,231,205, 2,106, 16, 90, 94, 54,228, 64,151, 54, 30,195, 70,250,251, 8, 90, 52,111, 6,158,224,175, 70,209, -222,109,219,194,187,109, 91,214, 34, 73,113,207, 39, 79,195,123,254,113,245,145,210,203,134,156,136,206,166, 99, 13, 53,172,108, - 40,237,154,129,118,221,164, 5, 89, 66, 0, 16,153,219, 42,150,156,205,184,217,185,115,103, 56, 59, 59,243,110,220,184, 49, 1, -250,251,165, 44,137,142,142, 22,176,217,250,251,161, 58, 58, 58, 98,200,144, 33,240,242,242,226,251,250,250, 46,193, 95,227, 48, - 62,130, 80, 40,204, 34,132,216, 2,128,165,165,165,238,135, 31,126,120, 65,105,121,100,144, 82, 74, 31,178, 88,172, 71, 12,195, - 60, 62,119,238, 92, 74, 51, 66,108,251,121,123,221,155, 62,122,136, 49,253, 99,115,181, 34, 65, 81, 84, 84,229,118, 99,177, 40, -219, 72, 36,138, 16, 24, 11, 35, 1, 68, 0,136,116,114,114,138,106, 70,136,243, 23, 94,238, 87,183,207, 25,101,162,247,194, 74, -225,237,237,237,233,231,231, 39,212,233,116,144, 74,165,216,177, 99,135,153,145,145,145, 89,159, 62,125, 86, 0, 40,255, 3,104, - 74, 72,139,193,142,236,201, 63,164,106,103, 24,194, 91, 17,132, 16,243, 46, 29,219, 38,110, 91,183,194,180,237, 23, 93,240,238, -214, 33,228,229, 21,163,176, 64, 2,134, 97, 62,153, 48, 60,253, 18,205,220,222,159,172,223,190,120,212, 66,194, 98,145, 86,131, - 22, 96,128,125,225, 44, 66,200,107, 0, 92, 62,159, 95,182, 43,135, 16,226,216,188,121,243,245,141,190,234,130, 29, 75, 71,131, - 50, 12, 5,176,222, 80,111, 22, 33,196,214,196,196,228,220,213,171, 87, 59,180,107,215, 14,143, 30, 61, 66,124,124, 60,166, 79, -159,174,154, 49, 99, 6,111,204,152, 49,100,238,220,185, 51, 9, 33,127, 80, 74, 31, 84, 62,158,195,225,124, 51, 48, 96, 56, 95, - 82, 80,164, 80, 41,213, 42, 75,107,115, 70, 41, 85,200,114,242,139, 20,195, 71, 77, 82,189,126,254,248, 27, 0,159, 8,173,191, -179,158,117,168, 67, 29,234, 80, 7,131,209, 14,128, 13,128,108, 0, 79, 43,189, 70,233,207,168,226,117, 14, 74,162, 82, 86, 21, -184,114, 80,146,246, 99,131,146, 30,159, 79, 0,124,118,202, 18, 80,125, 87,120,160,180, 51,124,105,131,226,178, 70,197,229, 98, -193,203,134,208,232,108, 10,109, 94, 28,116,185,177,208, 21,127, 58, 62,137, 8,205, 81, 40,215, 33, 57, 46, 10, 99,131, 86, 33, - 58,187,250,142,220,254,141,137,198,140, 15,142, 9, 15,224, 25,155, 43, 71,174, 11, 13,107,219,182,173, 98, 73, 87,150,127,240, -246, 18, 79,215,220,201,163,208,113,206, 31,161,113,113,113, 90, 71, 71, 71,124,251,237,183,160,148,246,211,115,113,153,197, 79, -195,108,223,246,235,132,246,153, 85,167, 73,197,196,196,224,238,221,187, 72, 74, 74, 66,131, 6, 13, 48, 97,194,132, 44, 74,169, - 93,117,156,189,123,247,190,253,243,207, 63,119,221,184,113,227,203,131, 7, 15,118,174, 46,220,212,148, 16, 81,171,122,246, 79, -247, 6, 47,108, 64, 46,239,231,202,146,222,195,252,142,252,147,235,119,116,116,164,105,105,127,173,221, 79,158, 14, 16,153,153, - 64,100, 42,206, 28,115,245, 89,185, 39,171,244,123,180, 55, 33,166,206, 14, 86,207,142,109, 90,238,196,186,121, 92,200,219,245, - 80,175,151,199,219,219,219,211,215,215, 55,108,205,154, 53, 22,105,105,105,184,126,253, 58,234,213,171, 7,153, 76,134, 95,126, -249, 37,253,222,189,123,142,165,246,218,181,247,114,139,216,241,221, 56, 51,222,132,239, 5,250, 56,171, 2,143,195,249, 53,236, -202,241, 25,102, 2,138,130,180,120,196, 70,189,198,147, 55, 9,154,144,107, 17,186, 34,185,210,159, 82,122,179,170,227, 2,125, - 72,163, 91,105, 54,231,175,220,126,234,225,224,224,128, 41, 83,166, 32, 35, 35, 3,148, 82, 48, 12, 83, 94,165,177,100,201, 18, -120,122,122, 98,236,136, 1, 50, 65, 94,184,239,249, 55,244,153, 33,118, 17, 66,154,187,185,185, 93,189,117,235,150,157,147,147, - 19,238,221,187,135,140,140, 12,216,219,219,227,198,141, 27, 88,183,110,221,193,105,211,166, 13, 93,179,102,141,112,228,200,145, -169,161,161,161, 46,149,115,234,234,213,171, 23,117, 62,244,158,248,230,153,171,177, 22, 38,198, 16,217, 90,129, 45, 54, 85, 80, - 16,153,189,173, 5,111,248,215,221, 27, 37, 38, 38, 54,169,120,204,223, 93,207, 58,212,161, 14,117,168,195, 95,184,120,241, 34, -245,247,247, 39,101,223, 43,189,237, 79, 8,185, 80,170, 7, 84, 0,248, 21, 94,131, 16,114, 1, 0, 42,191, 94,180,104,209,146, -224,224,224,215,101,175,203,246, 89,188,120,113,179,117,235,214,173,237,216,177,227,177,176,176,176, 31, 0,188,255, 59,182,255, -237,206,240,218,148, 39,224,121,244, 1, 87,167,129, 38, 39, 26, 76,193, 7, 64,100, 15, 57, 17, 35, 55,253, 3,222,222, 59, 85, -162, 13,107,192,197,183,148, 75, 8,185, 17, 21, 21,133,183,111,223, 34, 57, 57, 25,198,198,198,159,236,119,255,254,125, 24, 25, - 25,193,193,193,193, 16,243, 64, 85, 31,207, 99,141,240,118,131,184, 99, 87,228,140,156,138, 27, 55,110, 32, 43, 43, 11, 60, 30, - 15,124, 62, 31, 90,109,181,195,221,203,193, 98,149, 76,252, 45,243, 98, 85,181,143, 47, 33, 28,103, 75,241,249,237, 43,102,187, -179, 30, 94,224,202,147,222, 35, 77,161,131,185, 1,246, 26,137, 69, 48, 22, 25,167, 27, 25, 25, 87, 22, 89,239,188, 9,225,138, -196,194,243,251, 87,207,181,103, 63,191, 33,148,191,143, 0,175, 10,142,158, 61,123, 78, 1,176,130, 82, 90,224,235,235,107,183, -102,205, 26,139,212,212, 84,188,121,243, 6, 39, 78,156,200,214,150, 92, 40,161,148,174, 4,128,142,132, 8, 93,109,204, 67,127, -253,126,182, 9,110, 29,231, 99,194,247, 6, 88,250, 49,204,154,244,191, 56,120,204,180, 25, 91,103,247,135,180, 88,142, 35,215, -158,227, 74,120,236, 0, 0,247,245,229,189,253,122,159,190, 39,132,116, 15, 8, 8,120,113,247,238, 93,235,189,123,247, 66,171, -213, 86,249,181,119,239, 94, 92,191, 23, 62,139, 82,131, 69,150,163,187,187,251,245,199,143, 31,219, 24, 27, 27,227,218,181,107, - 40, 40, 40, 40,247,100,141, 29, 59,150, 20, 20, 20,140,216,177, 99,199,224,196,196,196, 13,247,238,221,203, 69,201, 56,168,143, -254, 16,216,108,118,172, 86,171,110,236,208,164, 17,103,104,255, 46, 93, 36,185, 17, 16, 91,181,196,195,151,177,231, 11,242,115, -229,108, 54, 59,182,226,254,255,196,122,214,161, 14,117,168, 67, 29,106,135, 50,113, 85, 81, 56, 85, 22, 92,101, 63,151,237, 23, - 28, 28, 92,254,186,236,152,117,235,214,173,173,240, 90,246, 79,216, 86, 83, 50,188, 47, 33,132, 2,240,173,106, 39,229,155,211, - 80,190, 61, 7,158, 91,103,240,189, 6,128,237,230,131,164,136, 91,120,121,121, 19, 82, 94,223, 7,101,116,112,240,108,111,168, - 45,138,198,141, 27, 67,161, 40, 73,205, 82, 42,149,224,137, 44, 20,115, 39,143, 18, 2, 0,195, 17,150,171, 38, 61,133,124, 31, -193,164,179, 31,218,103, 82, 60,177, 43, 17,192,101,158,173,213,227,198,129,199,227,129,199,227,149, 15,159, 53, 68,104,149, 14, - 69, 5, 83, 18,190,250,196, 8, 66, 8,105, 43,224, 30, 57,182, 34,176,189, 32, 49,146,175,124,245, 16,105, 74,134,158,207,212, - 93, 52,100,114,178,177,200, 56,213,200,216, 56,210, 72, 44,170, 40,180, 98, 1,128,114,185, 33,135, 86, 6,182, 20,101,198,137, - 20, 79,111, 32, 93,193,168, 77,171,166, 89,121,249,242,101, 91, 14,135, 99,175,211,233,144,148,148,132,215,175, 95, 99,203,150, - 45,153,197,197,197,190,225,225,225, 49, 21,236,101,181, 51,226,159, 8, 89, 53,187, 62, 39,226,142, 80, 25,251,170, 74,241,166, - 15, 54, 45, 6,245, 26,224,219,234,226,148,209, 75,241,117,223,175, 48,198,183, 41, 77, 72,203, 83, 0,184, 70, 13, 24, 96, 77, - 41, 77, 37,132,244,252,242,203, 47, 15,183,110,221,186, 9,165, 20, 45, 90,180,192,136, 17, 35, 16, 18, 18,130,151, 47, 95,162, -168,168, 72,125,245,234,213,205,148,210,125, 53,241,149, 94,151,177,133,133,197,149,155, 55,111,218, 24, 27, 27,227,234,213,171, -144,203,229,112,112,112,192,140, 25, 51,248,235,214,173, 59, 88, 84, 84, 52, 52, 56, 56, 88,152,144,144,240,107,104,104,104, 61, - 0, 44, 74,233, 39,127, 4, 42,149,106,247,145,144, 3, 91,103, 4,206,116,186,249,232,205, 13,165,164,216,204,205, 45,185,200, -198, 66,108,178,249,167,149,174, 42,149,106, 74,133,243, 86, 88,207,219,159,181,158,117,168, 67, 29,234, 80,135, 79,224,123,241, -226,197,106,181, 8,240,151,120,170, 44,182, 12, 65, 5, 17, 38, 95,180,104,209, 18, 66,200,133, 82,143,151, 28,192,167, 33,187, -171, 38,142, 66, 0, 0, 32, 0, 73, 68, 65, 84, 90,160,198, 28, 45, 74,233, 29, 66, 8, 40,165,119,170,101, 97,116, 80, 39,220, -133, 58,225, 46,140, 58,206,194,159,193, 35, 43,157,228,243, 71,132,245, 95,117,237,166, 82,169,228, 28, 56,112,160, 60,111, 11, - 0,116,186,154,199, 35,214, 22,181, 17, 90,165, 66,239, 19, 35,220, 5,226, 59,187,231, 12,253,194, 74, 39,227,170,238,159, 71, -170,146,209,110,120,175,150, 61, 45,160, 63, 47,169,134,243,108,208, 20, 36,223,187, 14, 99,177, 56,121,226,221,200,138, 94,172, - 8, 0,241, 0,224, 46, 52,189,113, 98,238, 72, 31,123, 30,120,170,139, 39,145,166,100,148, 59, 19, 53,251,182, 84,193, 87, 22, -110,139,143,143,135, 76, 38, 67, 88, 88, 24, 78,157, 58,149, 93, 89,100,149,218,123,251,247, 5,223,116, 48, 45,206,224,169,158, - 94, 71,154,146, 81,122,214,184, 10,128, 77,203, 65,157,121, 44,114,149,176,216, 70,125,187, 52, 69,208,164, 65,216,244,251,159, - 90,149,109,151,126, 91,207, 93, 26, 38, 81,170,151, 24, 34,178, 42,216, 28, 1,160, 41, 33, 68, 0,192,111,196,136, 17,151, 6, - 15, 30,140, 59,119,238,224,252,249,243, 30, 0,210, 1,128, 16,178, 10,128, 29, 74,170, 17,171,155, 28,207,226,241,120,199,174, - 95,191,222,204,209,209, 17,215,175, 95,135, 92, 46,199,180,105,211, 84,129,129,129,188,177, 99,199,146,194,194,194,114, 79, 86, - 88, 88, 88, 46,170, 17, 89, 0,144,146,146,114,217,205,205,173,211,151, 95,126, 57,168,190,135,151,105, 92,113, 81,150,177,177, -208,232,222,157, 91,188,167,143, 31,252,154,146,146, 82, 62,180,245,227,245,188, 97,240,122,214,161, 14,117,168, 67, 29,170,135, -191,191,255,157,139, 23, 47,194,223,223,255,142,190,253,244,165, 19, 25,120, 28, 55, 56, 56,248,117,112,112,240, 71, 30,175,191, -131, 42, 66,135, 23, 41,165,233,192,103,246,209,210, 21, 38,125,178,141, 50,134, 11,173,170, 60, 85, 22, 22, 22, 90, 35, 35,163, -143,132, 22, 99, 32,103,222,153,163,136,155, 62,170,220,147, 85,230,217, 66,239,177,159,236, 91, 75,143, 86, 24,128,143,140, 16, -217,121,141, 60, 54,186,103,231,166,245,157, 88,154, 19, 91,144, 34,211, 42, 86, 68,171, 21,111,139,233,128, 55, 85, 36, 89,151, -115,106, 53, 16,138,140, 62, 24,137, 69,149, 69, 86, 34, 0,136,237, 61, 7, 31, 28,233,231,219,202,171, 33, 75,123,252, 23,164, -202, 52,146, 69, 81,106,117,156,148,158,174,138,143, 82,186,226,171,175,190, 90, 97,101,101, 37,220,186,117,171,153,155,155, 27, -180, 90,173,170,178,200, 18,217,121,141, 60, 62,182,119,103, 79,123, 11,150,230,143,109, 72,150,235,100, 91,226, 52, 7,119,214, -176, 6, 54, 45, 7,117,182, 54, 19,135,238, 92, 59,221,200, 88,192,133, 66,161,192,186,237,127,224,234,131, 87,253,178, 35,207, -132, 2, 8,173,129, 66, 31, 38,246,235,215,111,211,170, 85,171,160,209,104, 48, 97,194, 4,196,198,198, 94,141,142,142,222,226, -234,234, 58,111,193,130, 5,142,246,246,246, 24, 54,108, 24, 15,192,216,106, 56,126, 58,114,228, 72,191, 86,173, 90,225,206,157, - 59, 40, 40, 40,128,131,131, 3, 2, 3, 3,249,193,193,193, 7,139,138,138,134,174, 93,187, 86, 24, 31, 31,175,215,147, 85, 17, - 58,157,110,245,174, 77,211,231,181,251,194,135,245,254,125,140, 54,169,125, 87,214,173,235,231,239, 90, 89, 89, 29, 44,219, 71, -100,231, 53,242,248,184, 62,181, 94,207, 58,212,161, 14,117,168,195, 63,134,139, 0,252,203, 94, 84,244,110, 85, 20, 97,101, 30, -171,138,175, 43,239, 95,250,254,199,249, 71,159,129,202, 30,173, 82,225,245,113,142, 86,197, 36,248,154,192, 72,179, 63,217,102, - 72,152,207,191, 49,209, 76,105, 7,206,146,174, 44,240, 68, 22,138,254,171,174, 85,153, 60, 13, 0, 34,145,200, 96,143, 22,163, - 84,232,125,159, 84,232, 24, 80,139, 28,173, 43,148,210,143,132,150,185,189, 87,215,101, 11,103,111,246, 25,220,155,149, 57,169, - 35, 10, 36, 74,229,130, 55, 90, 38, 69,166, 95,100, 1, 0,116,154, 4, 99,145, 56, 82, 40,250, 40, 47, 43, 9, 0,140,236, 26, -181, 95, 52,103,230,246,110, 35,251,147,236,105, 62,200, 47,144, 43,231,189,214,146, 84, 57, 29,250,134,210, 91, 85,209,221,184, -113, 99, 23,128, 93,190,190,190,153, 34,145, 8, 18,137,228,147,223, 65,153,189,157, 7,247,102,101, 78,236,128, 60,169, 90,185, -224,181, 22,105,114,230,152, 62, 83,109, 90, 14,234,108, 99,110, 18,186,115,205,116,227,180,148, 68,240,120, 60,136,197, 98, 92, -187, 31,137,236, 87,103,255,142,192, 2,155,205,254, 97,201,146, 37, 43,102,204,152,129,220,220, 92,156, 63,127, 30,125,251,246, -197,209,163, 71,221, 46, 93,186,180,201,207,207, 15,108, 54, 27, 23, 46, 92,128, 70,163,121, 87, 21, 7, 33,100,208,228,201,147, -231, 13, 30, 60, 24, 79,158, 60, 65,122,122,250, 71,158,172,130,130,130, 17,219,183,111, 31,156,144,144, 80,163, 39,171, 18,218, -187, 55,108,195, 91,188,124, 35,148,178, 44, 78,118,234,163, 59, 55,174,177, 30,230,229,229, 25, 3, 40,252,220,245,172, 67, 29, -234,240,255,216,251,238,240, 40,170,239,253,247,206,246, 77,239,101,129, 4, 76, 76, 72,129, 0,129, 64,232, 65, 80, 48,160,136, - 32, 82, 4, 27,168, 84, 41, 18, 64,164, 67,148, 14,162,128,138, 20,169,210,164, 75, 51, 81,122, 79, 2,161, 10, 73, 72, 66,122, -207,102,219,204,253,253,177,217,117,217,108, 11,224,239,171,126,246,125,158,121,118,103,238,189,239,156,153,217,157, 57,115,206, -185,231,216, 97,135,109, 48, 17, 4,175, 67, 65,173, 18, 85, 96,106,221, 64,193, 50,181, 78,140,172, 96, 74,163,246,107,207, 75, -126, 83,176,201,162,197,247,109, 6, 77, 94,170,126,157,171,202,127,162, 93,226,236, 97,147,235, 80,173, 1,127,205,122,125, 30, - 45, 73, 81, 81,145,196,203,203,171,198, 80, 65,112,112,112,128, 76, 38, 67, 73, 73, 9,214,173, 91, 7, 0,214,130,162, 53, 46, -111, 14, 69,204,160,247,113,177,161, 8, 84,173,210, 91,182,214,188,251,174,190, 19, 33, 4, 66,161, 80, 23, 27,102,237,161,123, -158, 16,242, 16,192, 89, 74, 41,141, 14, 13,154, 43,113,116,124,183,117, 84,176,215,248, 79, 62, 16, 60,200, 87,224,100,199,169, -165, 63,127, 57,197, 41,139, 58,141,202,160,165,150,149, 44,224,254,235,223,110, 54,182,100, 61,106, 21, 26, 52, 93,226, 32,249, -176, 93,179, 80,191,132, 9,159, 8, 30,228, 41,200,201,152,207,202,119,125,245,153,195,159,112,158,148, 69, 75, 76, 42, 89, 70, -152,249,234,171,175,206,164,148, 82,142,227,102, 0,128,161,188, 19, 70,127, 40,184,255,184, 6, 39, 58, 78, 47,217,245,229, 20, -231, 44, 88,150,215, 59,234,141, 14,190,238, 46, 71,215, 44, 24,229,144,155,157, 1,177, 88, 12,103,103,103,100,229,149, 65,192, -231, 89,204,147,102, 13,132, 16,113,151, 46, 93,166,124,242,201, 39, 72, 73, 73,193,199, 31,127,156,155,153,153,185,123,251,246, -237, 31,127,241,197, 23,252, 87, 94,121, 5,185,185,185, 88,180,104,145,250,143, 63,254, 88, 0, 96,145, 41, 30, 62,159,255,193, -220,185,115,105, 78, 78, 14,249,243,207, 63,225,239,239,143, 49, 99,198,136, 22, 44, 88,160,143,201,170,143, 37, 75,135, 71,143, - 30, 37,133, 4, 7,224,181,195,203,161, 81, 43,146, 74,139, 50,147,211,239,151, 36,121,136, 68, 19, 59, 70, 71, 61,213,249,180, -195, 14, 59,236,176,227,185,224,162,149,245,255, 83,152,114, 29,234,190, 88, 83,180,238,172,154,254, 94,200,123,163, 38, 67, 26, -216, 1,138,155,123,192, 85,230,233, 45, 90, 18, 39,119,120, 4,132,163,180, 74,129,157, 39, 46, 3,128, 73, 11,132, 57, 84, 84, - 84, 32, 58, 58, 26,171,135,135,118,171,169, 40,146, 72, 1, 40,196, 46, 53,123, 69,157, 78, 30, 58,116,168,154,227,184,109, 0, - 14, 89,161,153, 21, 25, 25,249,245,146, 37, 75, 68,225,131,222, 67,229,185,223,159,104,100, 24, 6, 82,169, 20, 98,177, 24,215, -175, 95,199,201,147, 39,149, 0,102, 89, 34, 36,132,156,215,104, 52,215,182,109,219,246, 40, 36,168, 97,207,174,109, 98,198, 78, -155,154,224,124,227,247, 95, 49, 99,193,215,220,139,173, 95, 41, 75,220,186,183,162,204, 41,224,165,234,156,244,171, 54, 28,234, - 53, 60,169,100,229,132,191, 16,208, 45,182, 85,203,201, 51,102, 76,119, 73,251,253, 24,190,248,106, 13, 13,105,209,189,236,171, - 93,251,202, 11, 29, 26,191, 44,207,187,121,193, 50,165, 22,191,253,246,219, 90, 0,107,117,235,198,242, 38,204, 89,193,133,182, -233, 89,146,184,117, 87, 85,185,115, 64,119, 75,242,250, 68,244,107,223,200,223,227,232,170,121, 31, 57, 60,206,206,132, 88, 44, -134,147,147, 19, 50,115, 75, 49,115,249,142, 42, 21,199,245,180, 69, 38, 11, 16, 59, 59, 59,139, 85, 42, 21, 86,175, 94,141,204, -204,204, 88, 74,105, 38, 33,100,205,192,129, 3, 87, 54,111,222, 60, 44, 45, 45,237, 78,101,101,229, 40, 74,105,186, 57, 18, 55, - 55,183, 88,111,111,111,114,246,236, 89,124,244,209, 71,202, 49, 99,198, 8,135, 13, 27, 70, 74, 74, 74,158,214,146, 5, 0,104, -216,176, 97,151,215,227,219,163, 67,143,143,147,148, 53,165,201, 15,210, 55, 38, 49,244,180, 36,186,101,212, 83,157, 79, 59,236, -176,195, 14, 59,254, 55, 96, 41, 24,222, 98, 53,234, 46, 0, 63,212, 19, 35, 35, 27, 8, 31,111,250,114, 12,173,184,127,134,202, - 47,172,165,229,123, 62,164, 7, 23, 13,163,135, 86,141,167, 31,199, 71,210, 48, 31,242, 56,212, 19, 35,187, 0,124,250,100,245, -234, 39,170,123,191,218, 20,234, 30,193,160, 61,130, 65,227, 67,161, 6, 48,173, 85,171, 86,123, 71,199,128,210, 27, 91, 40,189, -177,133,142,142, 1, 5,240, 17, 0, 39, 83, 50, 25,115,214,110,243, 7,176, 46, 58, 58, 90,115,234,212, 41,122,107, 64,119,122, - 37,204,139,142, 26, 53,138,126,241,197, 23,116,240,224,193,212,219,219, 91, 3,173,191,212,223, 26,231,107,175,189,214,144, 82, -138, 70,141, 26,185,181, 14,127,241,241,245, 19,251,105,242,166,149,244,135,209,253,104,219,230,225,133,126, 97,157,175, 73,253, -155,182,180,116,238, 12, 57,253,252,252,166, 82, 74,123, 82, 74,253, 41,165, 8, 9,241,116,106, 21,246, 98,206,181,227,251,233, -239,155,191,166, 63,140,238, 71,219, 69, 69, 20, 53, 12,143, 75,151,248,132,197,216,194,105,106, 49, 41,111,179,176, 66,223, 23, -219, 95, 53, 39,175, 33,231, 11, 49,111,237,123,148,147, 71,207,159, 63, 79, 15, 29, 58, 68,127,255,253,119,186,105,251, 62, 26, -208,102, 64,165, 87,243,190, 29, 44,237,219, 22, 57, 1,184,198,199,199,211, 59,119,238,208, 94,189,122, 81, 0,174, 79,195, 9, - 96,239,131, 7, 15,104,106,106, 42,157, 54,109, 26, 5,176,225,147, 79, 62,145,151,149,149,209,238,221,187,103, 2, 96, 96,244, - 91,180, 85,206,160, 38, 13, 18,223,232,211,105,214,232,143,222,236,242,172,231,243,121, 45,118, 78, 59,167,157,211,206,249,191, -192,249,111, 94,106,245,144, 17, 6,159,173,116,109, 22, 45, 90,191,105,173, 1,107,155,251,146,159, 22, 44, 90, 53,113,245,218, - 13,147,167,140,253,192,177, 83,199, 30, 72, 57,254, 35,118, 29,216, 94, 85,163, 80, 46, 18,242,176, 36,165,144, 90,205, 67,113, - 48,157, 10,140,183, 17, 66, 28, 60,130,161,207,193,116,183, 4,160,148,214, 43,182,152,106, 35,251, 71, 16, 66,150,196,197,197, -205,255,176, 67, 76,191,209,237,187, 65,173, 86, 99,211,166, 77,200,200,200,216, 13, 96, 58,165,212, 38,139, 91, 74, 74, 74, 97, -228,139,141,199,121, 72,133,147, 71, 13,126,195,187,224,222, 13, 60,186,121, 5, 0,160, 80,200,213,185,183,147, 90,212, 71, 62, -169, 84,122,222,219,219,251,150,183,183,119, 9,171,168, 28, 33,225,187,204,248,248,237,215,125,138, 30,164, 35, 43, 77,235, 25, - 85,212, 84,171,178,110,159, 12,171, 15,175, 14,141, 27, 55, 22, 59, 10, 48,210,164,188,202, 26,245,227, 59, 55, 91,218,194, 83, -173, 80, 46,152,189,108,211,203,243, 38,191, 43,118,113,113,193,229,212,187,152,177,116,107,149, 92,169,238, 89,112,125,207,115, -113,143, 81, 74,161, 86,171,109,158,232, 96, 6, 83, 90,180,104,209,116,254,252,249, 33,195,135, 15,199,179, 90,178, 12,113,239, -207, 71, 9, 93,187,118,141,184,123,235,114,156,135, 84,248,211,179,156, 79, 59,236,176,195, 14, 59,254,103, 16, 79, 41, 93,167, -203, 16, 95,235, 74,188, 2,216, 24,163,149,146, 71,171, 1,204, 9,242, 37,107,166,206, 95, 54,147, 33,203,223,229, 40,253, 81, -195, 96,246,253, 66, 90, 55, 50,190, 30,160,148, 86,199,135, 17,205,203,125, 7,243, 1, 64,192,183, 26, 63,101,137,235, 14,128, - 55, 9, 33,109,190, 59,125,225,243,218,205,243, 40,165,245,242,229, 58,243,145,218, 49, 34,168, 65,167, 86,145, 18, 30, 43,199, -163,155,247, 80, 92, 85,131, 99,105, 25,165, 12,101,126,172,175, 92,247,239,223,255, 13, 0,154,189,216,248,102,167,136,224,128, -206,209,145, 14, 2,162,196,163, 27,151, 81, 38, 87,226,215,180,140, 50, 16,242,212, 1,213,207, 75,222,199,215,247, 94,244,142, -122,163, 59, 33,228,248,180,209,131,196, 51,151,110,123,174, 74, 22,128,234,236,236,236,162,234,234,106,207,156,156, 28, 37,158, - 50, 73, 28,165,244, 46, 33,164,249,248,241,227,231, 76,154, 52,105,242,151, 95,126, 41,124,154,152, 44,115, 40,201,206,216,211, - 57,242,249, 93,127, 59,236,176,195, 14, 59,254,251,208,197,105, 25,199,107,213, 43,189,195,253, 60, 90, 0, 96, 84,112, 48,153, -112,239, 30, 85, 62, 47,225, 76, 89,186,158, 5,181,138, 85,159,167, 38, 96, 72,197,185, 59, 25,149,231,239,100, 84,130,163,148, -163, 84,193, 48,200,170, 82,169, 22,220,190,255,232,233,103,221, 17,194, 94,188,155, 41,191,116, 47,171,134,114, 28,229, 40, 85, - 18,130,199,106, 53,183, 32,245,254,195,125,255, 4,121, 11,174,239, 57,237, 23,209,175,211,233,243,169, 19,170,170, 84, 95, 23, -220,216,115,230,169,229, 50, 2,165, 84, 77, 8, 25, 18, 27, 27,251, 30,203,178,107, 40,165,234,103,224, 82, 2,152, 66, 8,217, -157,146,146,178,227,204,153, 51,185,120, 14, 74, 22,128,191,239,250,219, 97,135, 29,118,216,241,159, 4,125,218,162,210,230,240, - 60,149,172,127, 34, 82,238, 60,136,254, 59,120, 83,239, 60,104,246,119,240, 62,111,121, 31,223,216,125, 9,192,219,207,147, 83, - 7, 74,233,175, 0,126,125,142,124, 23, 9, 33, 77, 0,240,158,139,146,133,191,239,250,219, 97,135, 29,118,216,241,223,196, 51, -215, 58,180,195,142,127, 50,168, 54, 18,241,185, 40, 89,118,216, 97,135, 29,118,216, 81, 95, 88,178,104, 17, 0,221,205, 12, 58, -110,235, 14, 8, 33, 38, 57,172, 8,101,145,223,206,105,231,180,115,218, 57,237,156,118, 78, 59,231,127,143,243,191, 8, 66,136, - 63,180,217,234,245, 89,235,245,202,215,223, 60,221,241, 95, 49,165,212,206,105,231,180,115,218, 57,237,156,118, 78, 59,231,255, - 45,231,191,121, 1, 48,194,240,211,112, 97,158,135, 38,103,135, 29,118,216, 97,135, 29,166, 64, 8, 17,215, 22,146,127,170,118, - 59,236,248,183,192,112,214,161, 97,204, 86,189, 99,180, 8, 33, 47, 2,218, 41,246,207, 79,188, 58,251, 24,237,239,239, 63, 34, - 42, 42, 42, 92, 40, 20, 50, 21, 21, 21,179, 79,158, 60, 57,203,184, 95,231, 72,193, 37, 30,131,134, 6, 35, 1,194, 3, 24, 6, - 44,197,163,228,107,213,173,255, 46, 25,237,120,118, 16, 66, 2,165, 46,222,191, 16,134, 39, 98, 53, 42,176,106, 21,128,191,202, - 49,113,156, 38, 67,163,172,121,197,220,120,255,150,253, 2, 52, 44, 77, 4,184,111, 8,152,143, 41,184,111, 9,101, 62,166, 12, -190, 33, 28, 62, 2, 95,189, 8, 26,193, 36,190,144, 63, 61,231,242,206,172,255, 31,199,244,119,227,231,159,127,230, 61,203,248, -254,253,251,155, 44, 32,218,160, 65,131, 3, 14, 14, 14,193,230,198, 85, 85, 85,229,230,228,228,196, 61,203,190,255,233, 32,132, -116, 6,176, 10, 64,164, 81, 83, 58,128,113,148,210, 19,207,186,143,174,132,240,125,129,145, 66,224, 51, 0, 80, 1, 95,229, 1, -107,127,123, 78, 19, 57,158, 7,124,124,124,146,249,124,126, 72, 85, 85, 85, 85,121,121,121,144,139,139,203,125, 71, 71, 71, 71, -141, 70,115, 39, 63, 63,191,115,125,184, 8, 33,159,160,182,148, 22, 33,100, 50,165,244,155,250,180,219, 97,199,191, 5,244, 89, -102, 29, 18, 66, 66, 1,116,169, 93, 58,183,105,211,198,183,170,170, 10,132,144, 60, 0,201, 0,146, 0, 36, 81, 74,111, 63, 15, - 97,121, 60,222,226, 21, 43, 86, 76, 28, 51,102,140,190, 24,244,245,235,215, 77,247,101,208,240,212,254,227, 62, 23, 83,110,163, - 77,247,254,208, 42, 90, 12, 80,149,139,184, 30, 49, 79,181,127, 66,136,179,187,187,251,108, 66,200, 0,134, 97,172, 62,212, 56, -142, 99, 41,165, 59, 75, 74, 74,102, 82, 74, 43,234,179, 47, 39, 71,137, 90,195,178, 38,247,193,231,241,216,202,170, 26,179,105, - 47, 60, 61, 61,207, 48, 12,243,130, 97,193,236, 90,249, 77,126, 55, 92,215,104, 52,143, 10, 10, 10,172, 42,161,132, 16, 9,195, - 23,142, 35, 68,216, 3, 12, 23, 10, 16, 16, 48,183, 57, 86,121,140,211,168, 86, 80, 74, 45, 87,243,182,204, 29,232,223, 40,232, -247, 79,167, 39, 54, 76,189,153,142,105,163, 7,227,203, 85, 27, 48,117,220,123, 88,177,110, 43,198,141, 24,132,136, 8,227,231, -221,147, 96, 41,153, 61, 99,220,144,184,249, 43,182,180,153, 62,110,176,227,252, 21, 91,218, 76, 31, 63,216,105,254,202, 45,173, -167,143, 31,226, 52,111,229, 79,173, 63, 31, 63,196,101,254,202, 45, 42, 0,239, 63,141,156,131, 67, 27, 84, 17,141,198,228,219, - 54,229,243, 21, 91,110,103, 59, 62, 13,239,179, 98,248,240,225, 81,114,185,252,242,224, 30,173, 18, 91,134, 54,200, 54,213,167, -232,113,118,131,251,183,174, 36, 8,132,210,232,215, 19, 54,152,254, 19,213, 66, 44, 22,191,144,158,158, 30,194,113, 28, 88,150, -133, 70,163,209,127, 42,149, 74,116,238,220,249,185, 76,156, 33,132,244, 1, 48, 27,218,248,208,133,148,210, 29,207,192,229,196, -231,243, 63, 21,137, 68, 93, 52, 26, 77, 56, 0, 8, 4,130,155, 10,133, 34, 73,163,209, 44,163,148, 86,214,147,114,121,118,118, -118,132,147,147, 19, 84, 42,149,190, 0, 61,143,199, 11, 11, 8, 8, 88, 13, 32,228,105,101,213,193, 23, 24,217,190, 99,199, 21, -195, 38, 78,228,201,147,147,177, 98,253,250,229, 40, 47, 7,128,213,214,198,138,197,226,163, 12,195, 4,214,103,127, 28,199,101, - 40, 20, 10,179, 47, 43,166,192,231,243, 67,114,114,114,124,100, 50, 25, 0,192,209,209,209,209,112,221, 86,212, 90,169, 22, 81, - 74,165, 0,192, 48,204,138,246,237,219,199, 18, 66, 52, 0, 40,199,113, 12, 33,100, 16,199,113,252,218,254,139, 8, 33,235, 41, -165,138,122,237,200, 14, 59,254, 1,208, 37, 42, 53,213,102,246,230, 73, 8, 57, 4,160, 75,155, 54,109,164,111,191,253, 54,186, -116,233,130,144,144, 16, 72, 36, 18, 0, 64, 81, 81,145,239,213,171, 87,223, 74, 78, 78,126,107,255,254,253, 32,132,200, 1,252, - 65, 41, 53,249,167,238,222,167,211, 24,137,147,120, 37, 0, 20, 60, 42,202,125,244,103,254,202,220,220,220, 69,212,160, 26, 53, - 33, 36,104,216,176, 97, 19,198,142, 29,139, 3, 7, 14, 96,235,214,173, 80, 40, 20,168,168,168,192,201,147, 39, 77, 11, 90,157, -143,146,147,137,128,227, 3, 32, 51, 9,112,240, 1, 28,125,109, 59, 51, 38,224,238,238, 62,123,220,184,113,227, 35, 34, 34, 64, -169, 54,139,185, 90,173,134, 70,163,129, 90,173, 70, 73, 73, 9, 38, 76,152, 0, 64, 27,223,198,113, 28, 14, 31, 62, 60,102,196, -136, 17, 0,240,169, 41,206,216,214, 1,151, 24,194, 52,212,217,106, 40,203, 62, 58,123, 37,171,181,134,101,121, 53, 53, 42,147, -149,202, 37, 18,161, 69, 37, 79, 32, 16, 52,188,241,203, 47, 62,140, 72, 4,202,178, 0,199,129,114, 28, 0,131,133,106,183, 81, -150, 3, 85,179,224, 52, 28, 52,114, 5, 98, 62,249,196,234,121, 32,132,180, 23,136,164, 91,135,124, 56,209,175,109,187,118,130, -198,141,100,208,176, 28,238, 61,120,228,119,249,210,185, 14, 59, 55,174,254,152, 16, 50,136, 82,250, 84,121,182, 68, 14, 46,191, -126,253,237,119, 13, 47, 94, 77,197,137, 83,201, 56,126, 50, 9, 0,112,244,148,150,142, 97, 44,123,181, 9, 33,238,158, 33,113, - 81, 99,222,235,235, 56,111,201,247,226, 49,239,245,229,255,245,249,157,120,204,123,175,243,231, 47,251, 78, 60,230,189,215, 5, -115,191,250,186, 37, 33,196,157, 82, 90, 98,142,207,220, 53, 34, 26,141,248,167,251,121, 60, 0, 40, 88,179, 6,234,252,124,200, -102,206, 4, 0, 12, 9,242,181,217,221,225,237,237,125, 73, 32, 16, 52,180,214, 79,173, 86, 91, 85,130,135, 15, 31,222, 66, 46, -151, 95,210,104, 52,148,207,231, 39, 12,126,227,229,189, 61, 59,181, 40, 50,236,115,253,250, 53,207, 5, 11,126,233,187,227,114, - 5,125, 43,218,249,242,129,197,195, 91,247,158,180,193,108,133,122,142,227, 24,133, 66,129, 59,119,238,232,226, 13,140, 97,210, - 18,102, 13,132, 16, 6,192, 10, 79, 79,207,182, 69, 69, 69, 67, 0, 76, 43, 47, 47,143,226,241,120,240,240,240,152, 70, 8,185, -231,234,234,250,125, 89, 89,217, 25,104,173, 70, 54,149, 12, 32,132,116,118,113,113,217,180,103,207, 30,247, 86,173, 90, 49,133, -133,133,104,210,164, 9,138,139,139, 99,146,147,147,163,223,127,255,253,247, 9, 33,239, 80, 74,147,235, 33,110, 83, 7, 7, 7, - 58,108,216, 48,194,178,127, 29,238, 15, 63,252,128, 87,154,105,130, 63,234,233, 88, 93,163,164,101, 39,238,184,126, 36, 20, 10, -255,120,248,240, 97, 89,189, 78, 6, 0, 33,240,217,176,137, 19,121, 78, 15, 31,194,233,218, 53, 12, 41, 47,231,127,169,181,110, - 89, 85,180, 24,134, 9,220,180,245,199, 16,145, 72, 4,141, 70,163, 87, 6,117,247, 40,181, 90, 13,149, 74, 5,181, 90, 13,150, -101,161, 86,169,177,112,222, 87,245, 21, 81, 15, 7, 7, 7, 7,153, 76,150,231,224,224,224,240,212, 36, 6, 16,139,197,252,141, - 27, 55, 14, 18,137, 68, 0, 0,165, 82,137,102,205,154,153,188,255,217, 97,199,191, 17,198, 41, 30,168, 13,233, 29,122,149,151, -151,131,101, 89, 56, 59, 59,131,199,123,242,185,239,233,233,137, 30, 61,122,160,115,231,206,120,251,237,183,113,227,198, 13,233, -219,111,191,221,195, 28,217,224,137,189,209, 40, 68,171, 0,169,213,156,255,233,131, 87, 19,127,152,251,179, 55,128,137, 6,221, -222, 31, 57,114, 36, 41, 42, 42,194,128, 1, 3,146, 21, 10,197,107,148,210,114,115,156, 44,135, 71,113,111, 15, 1, 71,137,116, -217,249,239,136,178, 70, 78, 25,134,145,235, 92,135, 22,142,205, 44, 8, 33, 3,100, 50, 25,182,109,219, 6,165,178,110,186, 48, - 23, 23, 23,164,165,165,233,215,121, 60, 30,218,181,107,199, 35,132, 12,128, 25, 69,139, 16,166,225,233,139, 15,125,116,235,189, -123, 68, 10, 99, 91, 7,230,121,123, 58, 83, 0,100,250,244,233, 0,160,127,192,205,158, 61,219, 22, 57,193, 8, 4, 40, 72, 74, -210,111, 99,248, 12, 24, 33, 1, 17, 0, 12, 95,235, 69, 5, 5, 40, 11,112, 26,128, 83, 3, 18,255, 70,182,112,199, 52, 8, 8, - 57,176, 96,233, 55,110, 10, 53,197,182,125, 39,240,224,193,159,224, 49, 12,130,130, 67,240,114,215, 78,130,232, 54,177,141,190, -154, 53,113, 63, 33,164, 23,165,212,166, 2,216, 79,128,163,146,224, 0, 47,124,255,195,101,120,187, 59, 97, 64,223, 87, 33,149, -136,241,229,170, 31, 49,111,234,104,132, 4, 5, 98,237,242,249,102,135,187,186,186,206,105,213, 60, 44,232,199, 29, 71,208,165, -115,123,254,134, 29, 71,209,181,115, 7,254,143, 59,142,160,107,151, 78,252, 13, 59,142,160,107,231,142,130, 13, 59,142,160, 93, -235,230,193,103,138,174,207, 1, 48,218,252, 49, 27, 93,163,151,181,215, 40,132, 47,212, 63, 8, 30,126,252, 49, 0,232, 21,173, -250, 64, 32, 16, 52,204,201,201,241,177,214,207,154,213,160,214,146,117, 73,163,209, 32, 63, 63,159,148,150,150, 82, 55, 55,183, -190, 71,214, 78,219,243, 74,199, 22,197, 0,112,237,218, 53,143,133, 11, 23,244,221,126,169, 28,242,115, 95,147,159,126, 73,226, -134,188,214,229,210,190,196,225,209,253,251,247,191, 98,138, 87,161, 80, 60,104,217,178, 37,173,253,222, 64, 44, 22, 11, 13,219, - 9, 33,178,144,144,144, 58, 86,107, 27, 92,138, 43,206,158, 61, 59, 58, 34, 34, 2, 97, 97, 97,103,218,182,109,235,226,232,232, -136, 35, 71,142, 32, 60, 60, 60,210,197,197,229,252,206,157, 59, 5, 83,166, 76,105,177,126,253,122, 0, 24, 99,249, 12,105,103, - 65,197,197,197,109, 59,112,224,128, 68, 40, 20, 66, 46,151, 35, 45, 45, 13,174,174,174, 16,137, 68,120,253,245,215,121, 29, 58, -116,240,236,218,181,235,174,218,151, 1,155,103, 64,213,212,212,208,105,211,166,193,193,193, 1, 14, 14, 14,112,116,116,132,163, -163, 35,156, 36, 32,107,198, 5, 72,199,174, 43,149,126, 58,115, 77,226,166,111,102,157, 10, 8, 8,248, 34, 51, 51,179,212, 86, -110, 29,228,201,201,112,186,118, 13, 48,248,239,218, 10, 87, 71, 15, 36, 36, 36, 88,236,195,231,243, 33, 20, 10,209,190,125,123, -171,124,158,158,158,187,249,124,254, 19,111,166,148, 82, 73, 66, 66, 2,123,251,246,109, 71,134, 97, 28, 57,142, 67, 66, 66, 2, -171,209,104, 36,190,190,190,103, 56,142,203, 43, 40, 40,232,103,141,155, 82,170, 32,132, 76,102, 24,102,133, 88, 44,230, 55,110, -220, 56, 99,198,140, 25,103,161,181,102,130, 82,202, 52,110,220, 56, 70, 42,149, 6, 42, 20, 10, 13,128,201,118,107,150, 29, 22, - 16, 13,192,240,183,170, 4, 32,170,253, 94, 4,109,220,137,151,209,118, 0, 40,132,246, 69,209,215,204,122, 17,128, 27, 0,154, - 2,240,169,109,187, 8,160,184,190, 2, 90,180,104, 17, 66,168, 65, 71,253,131,197,217,217, 25, 23, 47, 94, 4, 33, 4,206,206, -206,112,113,113,129,171,171, 43,202,203,203,113,227,198, 13,164,167,167,227,225,195,135, 32,132, 32, 40, 40, 8,168,253, 3, 25, -112,233,111,112, 91,150, 28,128,196, 73, 12, 66,128, 86,221,162, 16,213,185, 25,218, 92,184, 63, 78, 38,147,173,203,201,201,185, - 67, 8,225, 55,107,214,236,253,118,237,218, 97,233,210,165, 80, 40, 20, 75, 77, 41, 89,134,156,201,105,234,214, 0, 32,147,201, - 38,109, 62,114,207, 97,104,207,224,234,156,156,156,197, 79,113,114,158,184, 17, 23, 22, 22,218, 92,139,143,227, 56,148,148,212, - 53,148, 24,114, 26, 91, 8,150,173,248,218,173,162, 44, 15,115,191,220, 12,181, 90,141,137, 19, 39,130,227, 56,253, 82, 90,106, -250,222,109, 44, 39,101,141,140, 12,140,118, 33, 12, 64,248, 64,192, 64,173, 94,145,185,237,107, 16, 10, 16, 22,128,209,113, 25, -115, 18, 66, 36, 60,161,116,251,172, 47, 87,186, 93, 73,127,132,125, 39,174, 64, 85,158,141,220,107,123, 0, 0, 65,237, 7, 97, -135,130,135,182, 81,193, 24, 63,253, 43,247,207,199,191,179,157, 16, 18,102,232, 70,180,229,193, 70, 41,139,185,115,230, 96,221, -202,165,248,106,233, 74,148,151,149, 66, 32,240, 2, 0,104, 52, 44, 88,163, 99,171,115,236,148,246,252,124,210, 72,178,226,187, - 93,104,246,162, 31,246, 31, 59,131,214,145,129, 56,124,242, 2,218, 53,111,130,163, 73,151,209, 46,234, 5, 36,157, 75,195,196, - 81,195,200,233,195, 27,122, 90, 58,159,198,215,104,249,242,175,221, 42,202,243,112, 96,254, 70,228,175, 94,141,140,209,163, 17, - 83,219,231, 2, 33, 16, 54,108, 8, 8, 81, 7,214,142,253,230,205,155, 80, 40,234, 62, 75,196, 98, 49,194,195,195, 77,142, 49, -228,148,203,229,151, 53, 26, 13,205,203,203, 35,121,121,121,112,116,116, 36,105,105,169,108,100,100,179, 55,104,250,207,223, 1, -192,194,133, 11,222,216,113,185, 28,213,103, 86, 66,126,118, 21,132, 77,174, 51,235,102,143, 84,141,152,185,246, 50,254,122,200, - 61, 33,103,110,110,110, 47,221,247,160,160,160,244,219,183,111, 55,213,185,154,107, 93,136, 66,141, 70, 19,162,115, 39,106, 52, - 26, 40, 20, 10,116,239,222, 93,255, 6,102,234,216,221,221,221,219,133,135,135,227,202,149, 43, 88,185,114,165, 71, 92, 92, 28, -238,222,189, 11, 66, 8, 22, 44, 88, 64, 34, 34, 34, 4,133,133,133,120,229,149, 87,176,123,247,238, 58,154,129,137,223,167,179, -163,163,227,250,253,251,247, 75, 24,134, 65, 69, 69, 5, 56,142, 67,135, 14, 29,192, 48, 12, 82, 83, 83, 49,125,250,116,236,222, -189, 27,123,247,238,149, 70, 71, 71,175, 39,132,132, 27,186,245, 45, 92, 35, 90, 83, 83, 67,197, 98, 49,196, 98, 49, 36, 18, 9, - 36, 18, 9, 68, 34, 17, 42,107,128, 17,203, 50, 20, 60,137, 23, 23,217,178, 99,240,187, 99, 23, 48,139,103,188,119, 18,192, 62, - 43,156, 79, 64, 5,124,181,226,199, 31, 87, 14, 41, 43, 99, 0,224,123, 66, 56, 21,165, 38,205, 78,166, 56, 43,107,202, 16, 24, -212, 16,187,182,239,197,155, 3,251,214, 25,195,231,243, 33, 16, 8, 33, 20, 8,224,226, 81,215,171,109,204, 41, 20, 10,125,211, -211,211, 61, 5, 2, 1, 40,165, 96, 89, 22, 42,149, 42,239,243,207, 63,247,142,143,143,119, 62,124,248, 48, 19, 31, 31,207,185, -187,187, 87, 93,184,112, 33, 95,163,209,120,118,234,212,201,170,156, 6,109,223,180,108,217,178,213,158, 61,123,222, 75, 72, 72, -184, 52,105,210,164,185,134,237,139, 22, 45,154,115,232,208,161,192, 55,222,120, 99,211,213,171, 87,191, 49, 24,247,220,211, 3, -216, 57,255,249,156, 7, 15, 30,212,223,136,227,227,227,141,173,157,190,132,144, 3, 6,251,239,173, 91, 79, 72, 72,152,182,112, -225,194, 52, 66,200, 1,195,237,186,126, 0,160,219,102,188, 94, 59,214, 99,234,212,169,205, 18, 19, 19, 23,196,198,198,110, 59, -115,230,204,159,168,167,162,101, 53, 70, 75,167, 92, 25, 42, 92, 70, 4, 40, 47, 47, 71,121,121, 57,178,178,178,176,102,205,154, -218, 63,180, 0,124, 62, 31,124, 62, 95, 31,207, 96, 14,199,247,255,190, 10,192,170,232,232,104, 65,202,217,157,135, 63, 91, 55, -246,165,214,221, 91,241, 46,159, 72,233, 15, 96, 30,128, 94,195,134, 13,243, 2,128,141, 27, 55, 22, 2, 56, 92,159,131,124, 94, -160,148,238,188,115,231,206,120,127,127,127,125,140,138,161,251, 80,163,209, 64, 34,145, 64, 23,203, 82, 83, 83,131, 53,107,214, -104, 40,165, 59, 45,112,226,118,218, 73,220, 73, 59,165, 29,199,113,224,216,191,198,207,154, 53,203,112,138, 40, 62,174,181,156, - 88, 3,103,234,156, 83,163, 79,163,237,117,148, 51, 35, 48,140,112,108,255,119, 70,251,115,132,143, 95, 78, 94,133, 64, 32, 0, -103, 96,205, 20,240,180,111,203,105,119,115, 32,243,141,196,107,131, 70,250,237,217,244,245, 88, 0, 95,218, 36,180, 1,194,162, - 98, 49,110,252,120,124,183,110, 29,166,207,156,163,215,210, 53, 44, 11,141, 85, 57, 25,166, 67,235, 8, 84, 22, 61, 2,143,199, - 67,251,150,193,224,241,120,232,212, 58, 20, 60, 30, 15, 29,219, 52, 5,159,207, 71,215,118, 17,120,241,197, 23,193,231,243, 45, -250, 34,181,215,232, 4,238,164,253,102,160,244, 82, 80, 0,170,220,220, 58,253,213,185,185,160, 1,158,245, 58, 94, 74, 41,222, -127,255,253,210,172,172, 44,149,113, 91,163, 70,141,132,201,201,201,110,102,220,118,122, 72,165,210,104, 62,159,127,185,184,184, -152,115,112,112, 96, 56,142,229, 34, 35,155,241,142,172,157,182, 71,215,103,234,212,105,123,222,138,118,121, 99,243,206, 3, 84, -216,184, 35, 33, 2,177,230,195,153,107,133, 2,161,212,166,140,247, 58, 55,226,173, 91,183,204,185, 17, 13,143,201,162,235,167, -164,164,100, 88,120,120,120,242,170, 85,171, 60, 8, 33,248,253,247,223,193,227,241,244,203,253,251,247,193, 48, 12, 62,251,236, - 51, 85,121,121,249, 7,214,100,227,243,249,227,119,237,218,229, 42, 18,137, 80, 81, 81,161,255,223,240,120, 60,164,167,167, 99, -241,226,197, 24, 54,108, 24, 50, 51, 51, 33,147,201, 48,113,226, 68,167,196,196,196,241, 0,230,216,112,232,215,149, 74,101,107, - 7, 7, 7, 72, 36, 18,232, 20, 46, 0,248, 53, 77,144, 90, 93, 93,221,220,203,203,203,207, 59,233,192, 47,237,227, 94,107,225, -233,237, 31,139, 90, 69,203, 86,220, 3,214, 61, 96,217,207,123,237,217,227,115,122,207, 30,238,220,254,253,143,196, 21, 21,107, -109, 29, 79,213, 12, 50,238, 63, 66,116,116, 52, 46, 95,190,140,232,232,191, 46,169, 80, 40,132, 72, 36,130, 80, 40,132, 80, 40, -132,151,187, 77, 33, 20,148, 97, 24,156, 62,125, 26, 44,203, 66,169, 84, 66,169, 84, 34, 34, 34,162,248,212,169, 83, 78, 0,112, -255,254,125, 58,116,232,208,210,243,231,207,163,101, 75,203,245,212,253,252,252,146,121, 60, 94, 99,195,109, 12,195,184,247,235, -215, 15, 37, 37, 37,175,246,235,215,175, 99,237,182,236,159,127,254,121, 40, 0,136, 68, 34, 48, 12,243, 84,174,105, 59,254, 91, -208, 41, 87,134, 10,151, 49,116,138,146,225, 58, 33,228,192,194,133, 11,123, 27,111, 51, 84,170, 76,125, 55, 28,155,152,152,184, -192,128, 91, 94, 95,217,109,138,209, 34,132, 80,107, 55, 77, 75,176,166,104,233,112,249,242,101,117,131, 6, 13,190,187,115,245, -225, 75,193, 81, 65,144, 58,138, 95, 38,132,172, 18,139,197, 19,222,121,231, 29,156, 59,119, 14,169,169,169, 63,208,103,156,133, -211,188,121,243,163, 98,177, 56,208, 84,155, 66,161,200, 72, 73, 73, 49, 25, 75, 86, 82, 82, 50,179, 54,230,204,108, 48,188, 97, -188,152, 97, 48,188, 57, 89, 40, 71,161, 86,169, 81, 85, 45,255,235, 33, 94,171,104, 85, 85, 85, 97,224,192,129, 79, 88,180,242, -243,243,173, 30, 31, 33, 4,139,247,237,195,177,157, 59,241,106,139, 22,216,125,225, 2, 18,223, 25,140,176,192, 6,160, 44, 1, - 37, 64,230,214,175, 81, 84, 94,137, 45, 39, 78,163,184,162, 26, 67, 58,117, 66,136,139,151,101, 94,129,176, 71, 76,187, 88,225, -241, 51, 55, 32, 16,240,193,128, 3, 85, 87, 67, 22,222, 21, 60,134,129,171,111, 19, 8, 5, 2, 8, 4,124,220,207, 42, 68,120, -179, 54,162, 3, 34, 73, 15, 60,133,162,213, 40,176, 9, 88,150,197,176, 97,195,176,109,219, 54,120,250, 5,194,181, 81, 51,204, - 91,186, 14,175,118,239,100,113,172,206,218,162, 83,244,121, 60, 94,157, 79,221,119, 91,172,147,148,163, 80, 25, 95, 35,142, 2, -148,162,225,252,249,104, 56,127, 62, 46,212,238, 51,162,170, 10,114,185, 28,104,107, 57, 88,255, 9,126, 74,161, 84, 42,145,149, -149,165,202,205,205,173,243, 4,244,243,243,203, 83, 42,149, 86, 21,155, 13, 27, 54, 92, 31, 62,124,120,107, 15, 15,143, 75,215, -175, 93, 83, 71,181,104, 33, 56,188,102,218, 94,157,219, 16, 0, 90,180,104, 81, 60,109,218,180,189, 67, 7,244,238,251, 77,194, -219,236, 39,115, 54,241,197, 82,105,235,222,147, 44, 7,196,235,160, 80, 40, 30, 68, 69, 69, 89, 22,164, 22,213,213,213,143,205, -181,233, 2,223, 91,181,106,229, 18, 23, 23,135,228,228,100,188,249,230,155, 10,149, 74,117, 7, 0,226,227,227, 67,183,108,217, - 34,186,113,227, 6,188,189,189, 5, 25, 25, 25,235, 9, 33, 22, 3,228, 69, 34, 81,215, 54,109,218, 48, 10,133,162,142,146,149, -152,152,136, 65,131, 6, 33, 52, 52, 20, 28,199,161,178,178, 18,113,113,113,130,149, 43, 87,118,133,109,138,214,184,176,176,176, -197,208,206, 58, 52,188, 23,222, 4, 48, 25, 0, 10, 11, 11, 31,247,126,115, 88, 90,167,238,253, 90, 55,126,177,153,191, 53, 66, - 95, 95,223,169, 12,195,188,197,113, 28,175,188,188, 60, 75, 73,200,139, 17,129,129,190, 29,250,246, 69,153, 64,192, 91,113,226, - 4,147, 87, 81,225, 4,192, 38, 23,100,141,186, 10,129, 65,218, 80,191, 55, 7,246,197,229,203,151,209,255,237, 55, 32, 20, 10, -193,231, 11,180,255, 77,161,214,162,229,230,229, 98, 11, 37,212,106,109,201, 81,221, 75,165, 74,165,130, 74,165,130, 46, 52,203, -193,193, 65,223,166, 80, 40,204,190,144,215, 34,100,199,156, 25, 62, 82, 23, 87,176,106, 53, 34,251,246,215,255,166,207,127,255, -141, 20, 28, 39, 45,205,120,128, 49, 59,247, 63,215,250,182,118,252,119,112,240,224, 65,106,194,154,165,135,161,162,244,172, 32, -132, 28, 72, 72, 72,152, 6,128, 38, 36, 36, 76,211,173, 47, 92,184, 80, 14,192,228, 36, 35, 43,124,230, 99,180,158, 85,201, 2, - 80,199,213, 99,140,110,221,186,141,113,118,118, 94, 9, 0,173, 91,183, 70,214,185,108,100,157,203, 70,120,211,200, 14,173, 90, -180, 46, 27, 52,104, 16, 60, 61, 61, 49,105,210,209,182, 74,163, 0, 0, 32, 0, 73, 68, 65, 84, 36, 10,224,135,250,238,255,254, -237, 52, 39, 0, 84, 38,147, 77, 2, 0,153, 76,214,226,194,133, 11,222, 23, 47, 94, 68,155, 54,109,244,253, 84, 42, 21, 58,118, -236,104,150,167,214,197,240, 41,204,196, 91, 61, 13, 40,229,160, 82,169, 80, 93, 45,135, 82,169,130, 70,205, 65,163,209, 32, 58, -210, 25,155,214, 37,104,183,105,116,214, 51,173,213,172,161,159, 51,162,155,251,169, 25,134,200, 47, 94,203, 53,121,199, 84, 42, -149,184,158,145,129,107, 15, 31, 2, 0, 94, 91,104, 57,240,117,211,137,100, 68, 68, 68, 88,147, 54,184,161,204, 15, 57,199,174, -107,111,222,242, 44, 92,252, 99, 7,156,157,157, 0, 0,145, 93,134, 64, 40,212, 42, 90, 85,114, 21,188,154, 54, 2,161,212,108, - 90, 0, 71, 15,255,163,124,161, 36,144,178, 28, 40,229, 64, 57, 22,148,114, 16, 59,123, 58,140,249,248, 61,112, 28,139,152,152, - 24, 16, 30, 15,172, 90,129, 1,125,122,160,164,172, 2,158,110,182, 61, 36,132, 66, 33,186,116,233, 34, 53,215,126,247,238, 93, - 57, 80,119, 6,102,157,163,166,156, 86,209,170,146, 67,161, 80, 64,165,212, 64,165,214,128,125, 65,136,185,159, 15,134, 70,165, - 65,245,219,177, 80,169, 53,224,198,191, 1,149, 82,141, 76, 7,134,105, 17,225,173,102, 64,228, 87,110,228, 91, 20,152, 82, 10, -157,114, 96, 14,166, 98, 2, 77, 97,195,134, 13,215,134, 15, 31, 30, 29,213,162,197,229,183,186,183, 88,146,146,154,150,147,146, -154, 86,167, 95, 96,104,139, 7,159, 36,110,155, 40, 16, 74,163,109, 85,178,128, 39,221,136,207,136,105, 21, 21, 21, 81, 78, 78, - 78,184,125,251, 54,120, 60, 30, 8, 33,119, 41,165, 81, 0, 48,114,228,200,123,124, 62, 63,136,199,227, 97,245,234,213,132,207, -231, 55,143,141,141,157, 6,192,172,162,165,209,104,194,157,157,157,159,176,102, 9,133, 66, 36, 36, 36, 96,232,208,161,122, 37, - 75, 40, 20, 98,195,134, 13,104,221,186, 53,148, 74,165,105,159,172, 17,168,182, 24,189,101, 13, 31, 0,199,113, 90,247, 43,103, - 69, 43,214,202, 59,188,232,173,183, 94, 68, 82, 18, 58, 4, 5, 69, 68, 71, 71, 67,165,250,203,160, 25, 20, 20,212,168,162,162, -226, 49, 33,228, 39, 0,223, 80, 74,175, 90,226, 83,215,112,200,184,175, 13, 63,189,124,249, 50, 98, 98, 98,244, 22, 44, 67,107, -150, 80, 40,132, 84,228,100, 77, 60, 45,103,173,162,197,113,218,251, 82, 69, 69, 5,147,148,148,228, 21, 22, 22, 70, 0, 32, 44, - 44,140, 92,189,122,213,195,193,193,161, 48, 56, 56,216,234, 11,176,212,197, 21, 27,134, 15, 4, 0,124,209, 93,235,177, 39,132, -224,200,236,105, 16, 8, 4,120,105,210,180, 39,250, 43,149, 74,112, 28,247, 76,105, 75,236,248,111,192,154,146, 5,212,181,104, - 61, 11, 12, 45, 90, 11, 23, 46, 76, 91,184,112, 97, 29,235, 88, 61,249,172, 91,180,106, 59, 62,149,194,165,251,179,154,195,210, -165, 75,209,188,121,115, 75, 2, 98,229,202,149,216,188,121,243, 82, 74,233,253,250,238,191,247, 75,173, 34,177,108, 79, 90, 80, -104, 36, 1,128, 57,227,251, 48, 85, 85, 85, 56,125,250, 52, 92, 93, 93,113,247,174,109,105,191, 8, 33,206,174,174,174,179, 25, -134, 25,192, 51,158, 1, 96, 2, 44,203,178, 28,199,237, 44, 43, 43, 51,155,222,129, 82, 64,165,214,160,170,186, 6, 74,165, 18, -227, 63,251,218,170, 28, 11, 1,162, 82, 86,240,187,116,142, 53,169, 68, 16, 66, 16,211,188, 43, 70,189,227, 84,231,225,205, 99, - 0,134, 1, 90,198,104, 45, 46, 87, 47,164,129,227, 0,150, 3,188,124,220,241,195,214, 37,150,118, 77, 52, 44, 87,251,118,204, -162, 82,193, 34,188, 93,111, 60,186,153, 4, 64,107, 65, 18, 9,181, 46, 99,161, 64, 0,142, 18,109,214, 7, 51, 16,138,164,129, - 37,185,247, 67,214, 29, 72,193,136,222,205,241,243,241,235,232,223, 61, 10,167,206,223, 64, 92,219, 8,164,221,121,136,200,144, -198, 88,189,126, 39, 40, 69,197,183,203,230,233, 45, 36, 28,167,201, 48, 43,164,129, 69,235,220,185,115,114, 99, 43,150,225,167, - 53, 43, 17,160,253,253,233, 44, 90,242, 26, 5, 38, 77,181, 41,157,143,246, 26,117,106,103, 86,209, 51,132, 37,139,149, 45,138, -152, 33, 54,108,216,112, 29, 86,210,179,188, 0,160, 53, 48,197, 38,194,191, 9, 44,203,226,224,193,131,250,235, 97, 12, 66,200, - 19, 22, 72,107,224, 56, 14, 25, 25, 25, 72, 75, 75, 67,187,118,237, 80, 86, 86, 6, 1,195, 96, 98, 74, 10, 34,222,121, 7, 74, -161, 16, 28,199, 65, 36, 18, 97,228,200,145, 54,159,207,122,161,246, 30, 73, 41,107,145,156, 16,178,164,119,239,222, 47,222,174, -170, 66, 90,122, 58,186,207,154, 5, 0, 56,116,232,144,190,143, 82,169,196,132, 9, 19, 68, 55,110,220,120,255,210,165, 75,239, - 19, 66,150, 82, 74, 39,154,161,132,154, 42,244, 49, 90,111, 13,126, 19, 47,134,189,128,205, 63,110,213,183, 79,152, 60, 14, 2, -129, 16, 2,161, 0,110,174,110, 54, 29,141, 90,173,214, 43,173,213,213,213,204,161, 67,135, 26,246,232,209, 67, 56,110,220, 56, - 2, 0,155, 55,111,102, 86,173, 90,229,120,236,216, 49, 97,131, 6, 13,234,250,209,141,160, 81, 61,233, 25, 39,132,128, 16, 2, -129, 64, 0,161, 72, 8,112, 28, 8, 33,142,139, 22, 45,154,147,150,150,214, 38, 44, 44, 12, 10,133,226, 29, 66,200, 21,106,207, -163,245, 63, 15,157,219,208,156,194,101, 42,214,170,214, 42,101, 14, 5,134,113, 91,230, 20, 53,195,152, 45, 0,245,158,148, 97, -115,140,150, 41,240,120, 60,171,214, 42,134, 97,172,186, 14, 39, 76,152, 0,103,103,103,147,109, 74,165,146,166,164,164,220,200, -205,205, 93, 71, 41,181,174,133,152,192,129, 19, 87,210,102,127,250, 70, 5,106,125,171,110,110,110,133,221,186,117,171, 4,160, -218,177,227,201, 23,100,133, 66,145, 97,142,199,213,213,117,246,247,223,127, 63,182,111,223,190,140,113,138, 1, 67,247,158,110, - 81,171,213,216,177, 99,199,216, 41, 83,166, 0,102,172, 96,186,135,120,117,149, 28,242,218, 64,232,123,169, 63,219,118, 96, 22, - 30, 20, 78,110,254,104,248, 66,148,217,135, 9, 35,212,198, 16,249, 6,252,245, 0,115,118,150,128,181,192, 73, 8,115,255, 97, -102, 78,131, 70,126, 30,184,151, 85, 0,223,198,205, 81,146,253,215,121,224,243,121, 16,212,186, 14,221, 92, 28, 81,144,159, 15, -134,225, 89, 84,140,231,109,185,130,243,169, 15,177,235,248, 85,168,106,170,176,108,227, 17,168, 20,149, 80,213, 84, 65, 85,163, -253, 92, 48,229, 67, 16,130,199,170,154,202, 80, 75, 92,198,224,243,249,104,219,182,173, 89, 69, 39, 59, 59,219, 70,139, 22,213, - 91,180,228, 53,245,188, 70, 54, 64,231, 58,180,214,254,180,138,129, 46,229,131, 84, 42,109,189, 97,131,249, 52, 14,166,224,239, -239,127,216,201,201,169,137,173,253,235,145,188,116,129,155,155,219,236,176,176,176,240,101,203,150, 9,120, 60, 30, 94,122,233, -165,208, 15, 63,252, 48, 3, 0,154, 55,111, 46, 3,180,247,152, 79, 62,249,132,158, 59,119, 46, 21,192, 66, 75,132, 34,145, 40, -221,213,213,181,117, 92, 92, 28,202,202,202,144,149,149, 5, 71, 71, 71, 68, 44, 89,130,148, 79, 62, 65,139, 53,107,192,116,235, - 6, 66, 8, 68, 34, 17, 82, 82, 82, 32,149, 74,211,205,241, 17, 66,218, 2,248, 10, 64, 7,252,229, 46,164, 0, 78, 3,248,140, - 82,122,222,120,140,238,198,192,114,156,181,139, 53,120,210,164, 73, 40, 21, 8,128,248,120, 8,239,223,135, 74,165, 66,187,118, -237,244, 86,246,118,237,218,129,207,231, 35, 42, 42, 10, 50,153, 12,171, 87,175, 30,140, 39,103, 98, 63,129,154, 74, 21, 50,238, - 63, 66,108,108,172,222,114, 21, 31, 31,175,183,104, 9, 4, 2,189,101,139,152, 78,209,103,124,252,212,240, 37,153,101, 89,194, -231,243,249,159,126,250, 41,121,243,205, 55,169, 82,169,228, 68, 34, 17,179,107,215, 46,114,234,212, 41,126, 85, 85,149,213, 23, -241,102,111, 12,192, 23, 61,180, 70,209,121, 77,188, 33, 16, 10, 32, 18, 10, 49, 41,253,145,254,186,184,108,216, 38, 74, 76, 76, -236, 31, 22, 22,166,117,195, 3,124,123, 30, 45, 59,172, 88,179, 10,140,148, 36,165,193,122, 1, 0, 82,187, 94, 0,232, 21,170, - 2,104,103, 16,182, 49,234,171,107, 87, 26,125,234,218,235,117, 15, 5,158,168,117,168, 7,181, 33,189,195,157,179,103,207,134, - 68, 71, 71, 35, 51, 51,179,206, 76, 56,221,131,203,209,209, 17, 82,169, 20,103,206,156, 1,128, 59,230,200, 78,158, 60,185, 10, -218,172,203, 0, 0,153, 76, 22, 27,247, 86,215, 51, 49, 61,219, 96,203,194,173,101,185,185,185, 81,180, 54,135, 14, 33,132,200, -100,178,161, 2, 17,127, 96, 80,179,128, 46,224,184,175,142,255,242,199, 44, 75, 7, 25, 20, 26, 89, 9, 64,110, 48,235,176,222, -179, 15, 1,128, 97,152, 1,125,251,246,101,110,220,184,129,129, 3, 7, 98,243,230,205,102,251, 14, 29, 58, 20,219,182,109, 67, -223,190,125,153,169, 83,167,154, 77,239,240,164,181,196, 54,247,144, 45,184,125,247, 26, 54,109,251,222,108, 12,146,143,143, 54, - 30, 43, 63,191, 80,191,173, 77,180,101,207, 8,167, 81, 30,187,114,233, 66,108,251,206, 47, 9,179,242, 74,193,105, 20,168,169, -248,107,124,117,105, 30,168,166, 6, 66, 7, 15,248,121,185,226,242,217, 95,149, 42,101,205, 49, 75,156, 99,251, 70,226,147, 62, -225, 0,229,240,198,196, 31,112,224,235, 49,250, 55,232,142,111,142,195,137, 29, 43,108,142,241, 51,134, 64, 32, 64, 74, 74,138, -220,156, 53,139,199,227, 89,205,201, 5,232,172,142,106, 84, 87,203, 81, 45,127,234, 60,172,117, 64, 8,241,246,245,245,253,214, -195,195, 67, 98, 74,145, 34,132,120,123,123,123,127,235,233,233, 41,177,213,117,104, 12,163,188, 90,151,134, 15, 31, 94, 47,101, - 75, 44, 22, 55,185,115,231,142, 62, 89,169,165, 79,165, 82,137,184,184, 56,155,146,151, 82, 74,247, 19, 66,254,244,247,247, 63, - 29, 17, 17,225,122,239,222, 61,108,221,186, 85, 40, 16, 8, 2,116,247,143,138,138, 10,240,120, 60,228,231,231,171, 1,188,103, -205,117,166, 80, 40,146,146,146,146, 90,246,233,211,135,151,158,158, 14, 30,143,167,149, 43, 54, 22, 45,214,172, 65,234,167,159, -162,203,195,135,168, 81,169, 32,145, 72,112,244,232, 81, 85,117,117,117,146, 57, 62,169, 84,186,238,193,131, 7,145, 18,137, 4, - 42,149, 10, 28,199,129, 97, 24,194,231,243, 59,186,185,185,173, 4,208,198,176,191,143,143,143,207,200, 9, 95, 54,101, 53, 26, - 54, 55,243, 94,129,181,115, 80, 84, 84,132,253,251,247,163, 93,187,118,232,210,165, 11,178,179,179,113,255,254,125,188,250,234, -171,250, 62,215,174, 93,195,149, 43, 87, 16, 28,108,214, 3,175, 7,199,168, 17,220,180, 9,132, 66,161,214, 66, 36, 16,214,190, -248, 8,244,150, 44,161, 64, 8, 1, 95, 0,137, 84, 98,149, 15,181, 22, 45, 66, 8, 24,134, 1, 33, 4, 82,169,246,189,133,199, -227,113, 13, 27, 54,204, 45, 46, 46,246, 7,192,147, 74,165, 96, 89,214,166,151, 22, 64,251,140,208, 41, 89, 66,145, 80,111,217, - 2,128,210,210,210,154,190,125,251,254,164, 80, 40,222,197, 83, 84, 40,177,227,127, 18, 23,255,143,198,218,138,120, 74,233, 58, - 83, 65,241,150,126,224,175,182,111,223,126,205,160, 65,131, 94, 90,190,124, 57,156,156,156,144,155,155,171,127, 32,138, 68, 34, - 52,106,212, 8,197,197,197, 88,187,118, 45, 30, 61,122,116, 18,192, 72, 91, 37,202,205,205, 61,119,247,234,157,162,184,254,237, - 61, 35,219, 55,117,203,186,243,168, 29,128, 51,181, 74,214, 15,131, 38,188,250,110, 92,191, 24, 8, 69, 2,100,221, 53, 27,111, -251,220,193,227,241,120,132, 16, 12, 28, 56,208,166,254,111,191,253, 54,146,146,146, 96,201,205,200,233, 44, 90,213, 53,168,146, - 63,191,151,181, 81, 99,134, 98,212,152,161,122,101,194, 22,215, 11, 0,200,100,219,205,182,113, 26,213,242, 3,219,215,142,104, - 21, 19, 27,216, 58,178, 9,206, 95,186,138, 45,107,254, 50, 50,172, 95, 53, 7, 95,174, 63,137, 70,190,238, 80, 41,170,112,248, -231,239, 30,171, 20,213,203, 45,237,207,154,145,134, 33, 4, 54,230,169,252,107, 76,173,242, 36, 16, 8,208,172, 89, 51,179, 22, -173,226,226, 98,185,181, 7, 3, 80,123,141,148,106, 84, 86,201, 33,175,126, 62,138, 22, 33,164, 69,199,142, 29,143,237,220,185, -211,211,199,199, 7, 57, 57, 57, 79, 40, 90,132,144, 22, 29, 58,116, 56,182,115,231, 78, 79, 95, 95, 95,100,101,101,217,156, 86, - 68, 7, 3, 37, 11, 5, 5, 5,164,164,164,132,115,119,119,175,151,178,197, 48, 12, 20, 10, 5,110,222,188,105,235,110,109,158, - 33,230,234,234,186, 97,219,182,109,174,133,133,133,224,241,120,184,121,243,230, 19,179, 14,117,203, 15, 63,252, 32,124,227,141, - 55,190, 7, 96,113, 90,155, 70,163, 89, 58,116,232,208,247,179,179,179,221,125,124,124,144,155,155, 11,145, 72, 4, 74, 41, 72, - 92, 28, 58,253,249, 39, 84, 44, 11,169, 84,138,219,183,111, 99,221,186,117, 85, 10,133, 98,169, 41, 46, 66,136,200,193,193, 33, - 68, 40, 20, 98,200,144, 33, 79,180,109,220,184, 17,175,181,230,181, 30,209, 67, 92,169,129, 68,145, 39,237,117,152,199,227,145, -145,147,190, 10,109,219, 57,190,217,173,212,243,247, 10,242, 30,157,182,114,248,106,165, 82,137,176,176, 48, 92,188,120, 17,199, -143, 31, 71,183,110,221,208,165, 75, 23, 92,191,126, 29,191,254,250, 43,174, 92,185, 2, 66, 8, 60, 61, 61,117,225, 23, 22, 99, - 48,148,213, 26,228,231, 20,213,177, 94, 25,175, 11,133, 66, 40,228,117, 38,183,154, 68,122,122, 58, 46, 94,188,168, 79, 45,195, -227,241, 52,239,188,243, 14, 40,165,244,193,131, 7,112,118,118,166,195,135, 15,103,249,124,190, 38, 59,219,182,248, 96,157, 82, -165, 83,178,248, 66,193, 19, 10, 26,199,113, 21,215,174, 93, 27, 65, 8,185, 78, 8, 89, 84,187,217,158, 71,203,142,127, 51, 14, - 18,131, 90,135,128, 13, 22, 45, 74,233,159, 0,186, 19, 66, 6,239,221,187,119,233,202,149, 43,189,123,247,238,141,146,146, 18, - 4, 6, 6,194,223,223, 31, 7, 14, 28,192,161, 67,135, 10, 89,150,157, 72, 41,173, 99,250, 33,132,116, 55,151,107,131, 82, 74, -101, 50,217, 78, 69,101,229, 39,209, 93,194,113,114,199,239, 11,253,253,253, 71, 54,104,208, 96,252,240,105,175,191,219,181,111, - 27,220,190,242, 0,231,126, 77, 65, 94,102, 33,134,119,250,204, 34,167,113, 48,188,155,155,219,251, 14, 14, 14, 34, 0,117,238, - 54,198,179, 14, 13, 57, 89,150,101,149, 74, 37,182,111,223,110,147,178,181,117,235, 86,212,212,212,128, 53,242,175, 26,114, 82, -142, 18,190, 64, 12, 89,163, 48,168, 84, 85,224,184,167,179,222, 24,114,234,222, 64,239,137, 68,240, 41, 44,196,249,243,117, 60, - 28, 38, 17, 31,255,132,101,179,206,249,164,148,214, 16, 66,134,172,152, 63,233,192,232,132,175,220,186,181,111,137, 47,150,108, -132, 74,181, 30, 12,143,129, 84, 44, 68,116, 76, 7,240,160,192,183,137,147, 75,171,203, 75,134, 80,163, 82, 60,117, 56, 45,121, - 88, 40,192,114, 28,142, 39, 91,206,121,106,234,186,179, 44, 11, 62,159,143,187,119,239,202, 77,205, 54,228,241,180,110, 78,221, -155,186, 37, 78,202,113, 68, 32,148,160, 81, 96, 4,148,138,202,231,114,141,124,124,124, 38,239,217,179,199, 83,151, 42,225,250, -245,235, 32,132,232,181, 25, 93,187, 92, 46, 71,106,106,170,174,212, 84, 29,109,199,210,255, 72,103,201, 42, 40, 40, 32,185,185, -185,112,112,112, 96,174, 95,191,174,136,138,138,186, 4,203,149, 31,244,156, 53, 53, 53, 15,205,197, 79,214,212,212, 52,144, 72, - 36, 2,163,177,178,144,144,144,219,198, 46, 68, 83,114,150,149,149,157,159, 50,101, 74,116,207,158, 61, 49,121,242,228, 98,119, -119,119,231,111,191,253,150,207,227,241,200,232,209,163,217,252,252,252,202,239,190,251,206,117,239,222,189, 40, 45, 45,173, 83, -101,192,196,239,179,130, 16, 50,162,125,251,246, 27,143, 28, 57,226, 16, 18, 18,130,242,242,114, 80, 74,177, 97,195, 6,140, 30, - 61, 26, 18,137, 4,183,111,223,198,107,175,189, 86, 93, 93, 93, 61,194, 56,118,210,128,147, 16, 66, 40,199,113,152, 49, 99,134, - 62, 57,169, 46, 89,169,179,148, 96,221,132, 23, 28,199,125, 87,230, 56,248,139,239,222, 1, 0, 86,163, 97,111,165,158,191,183, -225,235, 47, 78, 9,133,194,100,115,114,214, 98,250,184,113,227,190,141,143,143,151, 58, 57, 57,161,184,184, 24,167, 79,159,198, -217,179,103,113,238,220, 57, 40,149, 74,120,122,122,194,221,221, 29,185,185,185, 72, 79, 79,151, 3,152,110,137, 83,228, 32, 64, - 80,168,110,230,175,214,130, 37, 48,152,109,104,104,221, 18, 10,234, 78,236, 51,197,217,185,115,103,180,109,219, 22,128,118, 22, -117, 70, 70, 70,174, 66,161, 32, 6, 74,127, 54,160, 85,200, 3, 2, 2, 52,155, 55,111,166,150, 56,207,173, 91,141, 35,115,167, - 67, 36, 20, 98,226,205, 44,189,210,181,177, 91, 43, 8, 68, 66,132,247,121, 83, 63,150, 82,250, 13, 33,100,125,237,119,133, 57, -206,231, 1, 59,231, 63,159,243,223, 12, 74,105, 46,128,250,149,224, 49, 24,188,133, 16,114,248,195, 15, 63, 76,108,209,162,197, -135,203,150, 45, 35, 66,161, 16,179,102,205,162, 57, 57, 57, 63, 66,251, 22, 98,182,180,137, 21,238, 31,127,219,125,230,227, 97, - 9,125,201,132,229,195, 59, 94, 58,145,154,222,188,125, 8,154,183, 15,193,165,147, 55,240,245,180,173,155, 89, 53, 59, 35, 55, - 55, 55,211, 10,149,162,123,135,166,198,193,240,158, 73,167, 78,120,214,119,214, 33,199,113, 59,183,110,221, 58,182, 95,191,126, -204,133, 11, 23,234,196,100,209,218,178, 59, 28,199,225,216,177, 99, 80,169, 84,248,241,199, 31, 57,142,227,204,231,209, 2,221, -183, 98,121,226,176, 31, 55,237, 19,137,132, 4,103,147,119,161,172,196,178,149, 78, 40, 20,224,135, 13,187, 85, 66,161,224,150, -169,118,149, 74,149,117,226,196, 9,223, 87, 88, 86,192, 48, 76, 29, 5,202, 28,118,238,220,169,230, 56, 46,195, 82, 31, 74,233, - 25, 66, 4,125,230, 77,126,111,107,252, 91, 31,250,182,111,223, 81,224,229,227, 11, 66, 8,242,243,242,113, 59,245,130,250,240, -174,239,243,170,170, 43,108, 42,193,243,222,226,223,244, 49, 89, 0,208,123,244, 74,125,124, 22, 0,244, 25, 62, 5,113,237, 34, - 65,108, 49, 61,213,130,101, 89, 78,163,209,192,209,209, 17, 26,141,198,100,138, 7, 87, 87, 87,105, 77, 77,141,156,106, 19, 49, - 90, 52, 21, 81,224,185, 95, 35,150,101,195, 75, 74, 74, 80, 85, 85,133,179,103,207,210,249,243,231, 23, 20, 20, 20,232,131, 54, -213,106,117,120,113,113, 49, 42, 43, 43,113,230,204, 25,154,152,152, 88, 80, 84, 84,100, 41,168,179, 14,164, 82,105,107, 62,159, -127,169,164,164,132,115,112,112, 96,212,106,181, 58, 42, 42, 74, 44,149, 74,109, 46,168,158,147,147, 83, 39,153,171, 14,193,193, -193,119,238,220,185,243, 34,203,178,134, 53, 16,133, 53, 53, 53, 33,237,219,183,183,197,229, 51,110,253,250,245,216,189,123,119, - 76,121,121,249,208,140,140,140,141, 0, 98,248,124, 62,174, 94,189,122,179,166,166,102, 80,191,126,253, 54,148,148,148,156, 7, - 48,206, 22,121, 41,165, 71, 8, 33, 67,194,195,195,215,207,158, 61,219,169, 75,151, 46,124,153, 76,134, 54,109,218,224,246,237, -219, 56,120,240,160,250,155,111,190,169,170,174,174,126,143, 82,106,201,173, 77, 1, 16,141, 70, 3,145, 72,164, 95,196, 98, 49, -132, 66, 33, 42,228, 20, 31, 44,185, 47,215, 64, 42, 95, 58,107,196, 65, 10,144,199, 89,247, 11,243, 31,103,157, 39,132, 36,231, -228,228,152, 44,193, 19, 28, 28, 44,170,169,169,105,233,239,239,207, 35,132, 44, 87,169, 84,195,199,140, 25,227,191, 96,193, 2, - 52,109,218, 20,133,133,133,112,116,116, 68, 72, 72, 8, 10, 10, 10,112,225,194, 5,182,186,186,122, 13,128, 57,148, 82,139,238, -200,210,194,114, 52,244, 11,120,194,242, 73, 41, 5,101, 1,181,130, 5,171,162, 80, 18, 53, 4, 2, 53,132, 66, 19, 25,117,141, -160, 83, 52, 75,252,253,193,165,166,226,220,185,115,160,148,154,181,170,133,133,133, 89,229, 4,229, 32, 18,139,158,112, 23, 18, - 66, 32, 20,137, 32, 16, 9,235,204,156,177, 91,177,236,248,175,195,214, 88,139, 82, 0, 35, 9, 33, 27,187,118,237,122,128, 82, - 42,128,214, 31,249,251,179,236, 60, 55, 55,247,178, 76, 38,155,234,219,208, 61,177,215,208,142,104,218, 50, 16,172,134,197,233, - 67, 87,241,227,130,189,219,178,179,178,135, 83, 27,124, 74, 28,199,157,234,208,186, 41, 3,131, 92,221, 50,153,140,123,154, 89, -135,101,101,101, 51, 39, 78,156,136,201,147, 39,215,123,214,161,185, 62,215,111,230,143,108, 17,238,221,176, 79,175, 78,175,128, - 48, 84,169, 52,127, 95, 33, 4,250,204,165, 66,161,224,214,133,107, 57, 81,166,250, 21, 20, 20,188,242,238,187,239, 30,227,243, -249, 54, 7, 49, 3,218, 34,179,121,121,121, 47, 89,235, 71,169,250, 52, 33, 36,100,255,182,181,159, 30,217,189,254, 21,142, 99, -131, 9, 0, 30, 95,120, 79,173, 82, 29, 85,200,203,151, 25, 91,178,204, 97,209,200, 88,140, 91,241, 43, 86, 79,238,131, 49,137, - 59,240,253,140, 15, 48,117,201, 86,124, 53,121, 28,230,175,252, 9, 95,140, 27,130,254,131,223,229, 40, 97,254,176,245, 56,120, - 60,222,145,181,107,215, 14,251,224,131, 15,244,147, 22, 40,165, 79,220,216,213,106,181,156,227, 56,172, 89,179,134, 3,112,196, - 18,223,147,215,136, 80, 75,241, 82,182, 94,163,242,242,242,247, 98, 99, 99, 55, 0, 16, 83, 74,239,150,148,148,124, 68, 41,213, -151,134,170,172,172,124,175,125,251,246, 27, 40,165, 98, 66, 72,157,118, 91, 80,155,234,161,181,187,187,251,165, 90, 75,150,248, -105, 2,226, 45,128,103,193,173,104,213,133, 88,251,255,213,151,213, 33,132, 44,136,137,137, 49, 44, 42,125, 19,128,205, 74,161, - 1,239, 49, 66, 72,228,140, 25, 51, 62,149, 72, 36,113,213,213,213,161, 0,224,232,232,120, 91,161, 80,156,146,203,229,203,106, -239, 91,150, 56,148, 14, 14, 14,183, 53, 26, 77, 51,111,111,111,237,140,218, 90,101, 11, 0,126,185,196, 94,162, 84,211,198, 18, -135, 41, 28, 58,116,168,177,187,187,251,203,132,144,254,148,210,176,138,138, 10,197,140, 25, 51,206,236,220,185,179,172, 73,147, - 38,189,226,227,227,137,135,135, 7, 46, 94,188, 72,139,138,138,118, 1,152,102,203, 76,107,142,227, 50, 22, 45, 90,100,173, 91, -157, 49,150,218, 85, 42,213,227, 67,135, 14,121,245,204,207,231,115, 28,135, 62,125,250,232,219, 76, 77,204,184,117,235, 22, 20, - 10,133,197,100,142,138,178, 18,116,251,116, 10, 80, 59,251, 83, 7,173, 37,139,130, 90,184,255,217, 97,199,127, 17,228,111,153, -254,172, 35,183,209,180, 40,147,201, 6, 74, 28,197,163, 2, 67,253,163,114,238,231,223,168, 40,171,222,156,155,155,187,150, 82, - 90,231, 70,110, 43,103,125, 18,150,254, 91,204,170,255, 70,206,191,242,104,177,160,148, 5,229, 40, 40,229,192,113,172,182,224, - 53,229, 64, 89,150, 16,130, 63, 20,213,101,102, 51,131, 27,203, 73, 8,113,247,242,242,154, 67, 41,237,201,227,241, 24, 67, 99, -152,225,247, 90, 75,214,145,130,130,130, 47,140, 45,175,255,198,243,249,243,207, 63,155, 84,254,109,157,117,216,191,127,127,182, - 62,114,202,100,178, 83,142,142,142, 38, 19,115, 86, 85, 85,101,230,228,228,188,108, 74,206,231, 5, 91, 57,117,214, 80,106,195, - 13,205,200, 5, 95,239, 89,135,214, 56, 27, 55,110, 44, 86,169, 84,173, 0,132, 16, 66,220, 0, 20,171, 84,170,163, 5, 5, 5, -121,132,144,214, 0,102,212, 14,155, 75, 41,189,100, 11,231,243,130,137,255,145,212,203,203,107, 61,195, 48, 86, 11,158, 3,128, - 70,163, 81, 22, 23, 23, 15, 51,124, 33, 48,228,244,242,242,186,196,231,243,173,114,105, 52,154, 71,133,133,133,102, 21,236,127, -227,127,211,206,249,191, 13,227, 32,120,195,245,127,196,108,143,156,156,156,237, 0,204, 71,104, 63, 5,204,101,126,183,227,255, - 47,170,138,115,255,150,235, 80,171, 52,153, 45, 18,253, 95,133, 78, 81, 50,177, 93, 95,199,240,121,194,198, 52, 14,255,231,176, - 69,193, 50, 51,238, 60,108, 72, 82, 90, 31, 60,124,248, 80, 1,224, 76,237, 98,188,191, 75, 0,250,212, 25,244,127, 4, 74,169, - 28,128,109, 51,127,108,128, 37,229,201, 14, 59,254, 87,241,143, 80,180,236,176,195, 14, 59,236,176,195, 14, 59,254,197,208,207, - 58,212,173,235,190, 16, 0,221, 77,141,168,143, 73,144, 16, 98,146,195, 18,172,241,219, 57,237,156,118, 78, 59,167,157,211,206, -105,231,252,239,113,254,207,129,214, 38,142,252, 59, 22, 0,221,237,156,118, 78, 59,167,157,211,206,105,231,180,115,218, 57,255, -203, 11,128, 17,230,214,173,167,204,182,195, 14, 59,236,176,195, 14, 59,236,176,227,169, 96,179,162,229,228, 23, 30,238,221,184, -197, 6,143, 70, 81,215, 61, 26, 69, 93,247,110,220, 98,131,147, 95,120,248,223, 41,220, 63, 21,132, 16, 41, 33,100,176, 64, 32, - 56,230,239,239, 95, 78, 8, 49, 89,122,231,223, 14, 66,136, 11, 33,164, 63, 33,100, 14, 33,228, 13, 66,136,195,243,228,239, 74, - 8,255,109, 66, 70, 13, 35, 36,115, 24, 33,153,111, 19, 50,170, 43, 33,255,185,184,193,217,227,100,177,191, 31, 25,114,120,246, - 56, 89,172,201,246, 73, 50,207,243,199,222, 90,177,112,116, 3,143,231,177, 63, 66,136,179,175,175,239, 58, 63, 63,191,135,190, -190,190, 25,190,190,190,235, 9, 33,174,207,131,219, 14, 59,236,176,195, 14,147, 56, 72, 8, 25,161, 91, 96, 16,163,197, 7,128, -131, 7, 15,118, 1,240, 27,128,174,241,241,241, 73,198,163, 61, 2,155,127, 16, 30,214,116,242,188, 89,211,136,159,143,151,131, -134,229, 84, 15, 30,102, 69,204,156,151,248,179, 71, 96,243,165,197, 25, 41,223,215, 87, 34, 66, 8,225,241,120, 3,197, 98,113, -111, 0, 58,133,237,166, 66,161, 56,192,178,236,118, 90,107,123,179, 6, 63, 63,191,100, 30,143,215,184, 62,251,102, 89, 54,243, -241,227,199,230,179,150, 90, 0, 33,100, 64, 64, 64,192,250, 46, 93,186, 56,196,196,196, 64, 36, 18, 97,198,140, 25, 19, 1, 44, -179,149,195,195, 35,216, 89, 37,150,140,231,139, 68, 61,168, 90,217,140,130, 2,140, 56,149,211, 40, 78, 8, 21,138,165,197,197, -247, 42,172,179, 0,132,144,105, 0,134, 67, 59, 29,253,123, 74,105,253,146,236, 24, 97,120, 43,162, 86,179,218,223,132,144, 15, -214,213,213,245,183,233,211,167,243,123,247,238,141,239,191,255,190,227,186,117,235, 70, 16, 66, 78, 0,248,133, 82,122,239, 89, -246, 5, 0,190,192,200,246, 29, 59,174, 24, 54,113, 34, 79,158,156,140, 21,235,215, 47, 71,121, 57, 0,172,174, 15, 15, 33,132, - 8,133,232,239,229, 37,232, 77, 41, 90, 17,128, 16,224,106, 65, 17,119, 72,165, 98,183,211,250,214,247,121,146,123, 48,158,156, -142,191,165,190, 28,101,247,232,231,226, 62,225,157,202,238,157,250, 28, 64, 47,227,118, 77,141,100, 24,229, 53,234, 45,167, 87, -178, 0, 44,121, 90, 89,107,229,117,240,246,246,190,190,111,223,190,134, 49, 49, 49,124, 0,184,116,233,210, 59,189,123,247,238, - 70, 8,105, 70, 41, 45,127, 22,254,103,144, 75,194,103,152, 81, 34,129,160, 7,203,178,205, 1,128,199,227,165, 40,213,234, 99, - 26,142, 91, 77,109,204,201,102,135, 29,118,252,119, 97, 77, 23,249, 39,131,218,144, 25,254,183,248,248,120,114,240,224, 65, 10, -163, 41,226, 78,190, 97, 17,145,145,225, 19,143,236,217,216,168,180,184,180,102,213,226,141,151,171,248,162,234,144,136, 16,225, -170,101,139,220, 71,141,155, 48,222,201, 55,236,124,101, 94,250, 13, 91, 5, 34,132, 4, 72,165,210,221,139, 23, 47,110, 22, 23, - 23, 39,240,241,241, 65, 94, 94, 30,110,222,188,217,236,228,201,147,125, 55,110,220, 56,145, 16,210,143, 82,106, 45, 35, 60, 0, -132,156,216,180,222,199,209,195, 19,172, 90, 13, 89, 84, 43,157,127, 20,119, 79,254, 10,141, 74, 5, 78,173, 70,120,239,190, 0, - 0,142,227, 16, 17, 17, 97, 91, 81,192,186,114,203, 34, 35, 35, 55, 47, 88,176, 64,168, 80, 40,112,254,252,121,156, 58,117,138, -203,205,205, 77,180,149,195,201, 55, 52,142,145, 58,110, 31, 56,228, 67,215,215,123,191, 32, 8,240,245, 6,224,128, 91, 15, 52, -237, 15,255,122,178,205,158,237, 63,126,226,228, 27, 58,176, 50,239,246, 41, 75, 60, 30, 30, 30,237, 8, 33,243,117, 25,162, 9, - 33, 95, 53,105,210,228, 11,195, 62,198,117,243, 40,165,224,243,249,121, 21, 21, 21, 3, 11, 11, 11,175, 24,115,170, 89,240,183, -108,209,234, 17,159,143, 26,204,251,227,143, 63, 28, 35, 34, 34, 20, 0,176,104,209, 34,204,153, 51, 71,116,244,232,209, 87, 55, -109,218,244, 42, 33,100, 57,165,244, 23, 91,143,219, 20,132,192,103,195, 38, 78,228, 57, 61,124, 8,167,107,215, 48,164,188,156, -255, 37,240, 25,234,161,104, 17, 66, 94,240,243, 19,252, 60,113,194,187,225, 65,193,237,132, 66,161, 23, 40,165, 80, 41, 11, 67, - 51, 51,175,244, 79,252,114, 93, 2, 33,228, 77, 74,169, 77, 25,107,137,214,162, 54, 27,128, 4,192,231, 0,102, 20, 20, 20,132, -176, 44, 11, 63, 63,191, 25,132,144,189, 0,230,121,123,123,211,130,130,130, 41,148, 82,179,181,122,102,143,147,197,150,223,163, -159, 63, 38, 65, 61,155, 70, 15,195, 99,114,164,231,132, 94,254,135, 93,130,201,188,153, 43,114,206, 2, 64,175,224, 96,231,160, - 48,199, 41, 78, 46,205, 61,202,179,143, 79,233, 21, 28,252,221,225,123,182, 41,218, 70,114, 19, 0,144,201,100,139, 54,109,218, -212,168,109,219,182,250,223,120,203,150, 45,121,139, 22, 45,106,240,233,167,159, 46, 7,240,174,141,124,161,222,222,222, 71, 89, -150, 85, 20, 21, 21,133,234,182,251,180,232,215,222,211,217,241,165,130,146,138,228,194,180,189, 73, 54,114,197, 72,132,194, 93, -191,108, 94,225,223,178,109, 44,227,228,229,131,154,236, 28, 84,170, 85,221, 79,157, 62,215,117,196,168,207,198,213, 94, 35,203, -117,152,236,176,195,142,255, 58,204,234, 34,255,102,232,221, 52,181, 7, 86, 7, 98,177, 40, 97,230,244, 41,164,180,168, 84, 94, - 83, 94,161, 84,215,212,212, 48, 66, 90,147,114,227,207,124,134,207, 43,253,116,220, 88,231,132,169,211, 19, 0, 12, 49, 53,222, - 24,132,144,128, 22, 45, 90, 92,216,189,123,183,143,135,135, 7,202,202,202, 80, 84, 84,132, 11, 23, 46,128, 82,138,126,253,250, -137,219,182,105,211,234,243, 25, 51,206, 18, 66, 98,109, 81,182, 28, 61,188,176,168,163,182, 22,237, 23, 15,139,116,251,193,186, - 1,189,245,125,230, 60,210, 86,203,144, 72, 36,250,130,196, 79,129,216,151, 94,122, 73, 8, 0,239,191,255,126,121, 69, 69,197, - 66, 0, 91, 40,165, 54, 85, 90,117,242, 13,141,243,242,151, 29,248,118,205, 34,105,243,224, 16,168,212, 26,100, 60,206, 1, 95, -224,134,134, 13,133,120,119, 72, 15, 65,231,246, 30, 94,243,231,174, 59,232,232, 29,250, 70, 85,193,237,163,230,184,220,220,220, - 54,110,223,190, 29, 59,118,236, 0, 0,220,190,125, 27, 33, 33, 33,142,214,100, 72, 77, 77, 13,122,237,181,215,182, 1,120,209, - 90, 95,227,196,248, 98,177, 24, 29, 59,118, 68, 68, 68, 4,246,237,219,215, 21,192, 51, 41, 90, 0, 32, 79, 78,134,211,181,107, - 64, 82, 82,189,199, 18, 66, 94,136,142, 14, 60,119,232,224,102,175,131,135,110, 98,201,146,245,184,119, 79,107,104, 11, 10, 10, -194,224, 65, 3, 4, 41, 41,103, 34,251,247, 31,124,134, 16,210,145, 82,122,219, 6,218,217,223,125,247,221,180, 38, 77,154,160, -127,255,254, 3, 34, 35, 35,253, 92, 92, 92,176,118,237, 90,248,251,251, 7, 41,149,202,187,251,246,237,147, 61,126,252, 24, 99, -199,142, 5,128,137,230,136,186,190,210,245,115,113,159,240, 78, 77,163,135,193,201,197, 31,223,109,221,142, 91,151, 55,118, 82, -168,110,126,190,112,116,131,161,114, 42, 30,222, 48,196, 57,161,113,235, 46,158, 47, 70,190,134,192,232, 43, 94, 53,236,239,127, -206, 24, 21,148,200,151,212,108,156,185, 56,167,168,206, 49, 15,248,153,215,172, 60,221, 35,245, 24,138, 40,157,201,213, 42, 88, -250, 27, 18, 75,241, 90,231,206,157,245, 23,238,225,195,135, 80, 40, 20, 8, 15, 15,103,148, 74,165, 77, 57,177, 8, 33,161, 47, -191,252,242, 31,135, 14, 29,242, 12, 13, 13,125,162, 36,140,159,167,219, 43, 73,187,151,143,157,191,226,167, 48,159,136, 55, 74, -243,111,236, 73,177,194, 21,211,161, 93,244,241,195,187, 55, 59,145,202, 44,136,220, 10, 1,174, 8,247,183,253, 0,226,224,129, -129, 31, 79,224,199,189,212,173, 65,143, 94,111, 30, 39,132,188, 68, 41,189,104,139,140,118,216, 97,199,127, 19,230,116,145,127, - 51,244,138,150,129, 22,249, 4, 56,202, 69,249,250,120, 74,151, 47,222,112,145,167, 82, 42, 29,221, 92,149, 2, 87, 23,142, 56, -187,242, 84, 74,117,101, 96, 80,160,136,163,156,201, 18, 36,212,104,138, 39, 33,132, 72,165,210,221,191,252,242,139,143, 64, 32, - 0,199,113,240,246,246,198,131, 7, 15, 80, 90, 90,138,138,138, 10,220,187,121, 19, 77, 2, 26, 97, 86,194, 20,255,177, 83, 18, -118, 19, 66, 90, 27,186, 17,141, 57, 1,128, 85, 63, 89, 55, 90, 87,130,197, 24,186,109,198,109,166, 56,205,224, 65,102,102, 38, -156,156,156,208,172, 89, 51,167,211,167, 79,255,110, 78,201, 50,230,244,240, 8,118,230, 59, 73,119,124,243,237, 12,169, 74,157, -138, 27,247,139,209,180, 73, 39,248,122, 6, 32,167, 88,137,115, 23,126, 65,234,245, 45, 8,110, 16,128,209, 31,119,147, 36, 46, -250,121,187,187,251, 11, 1, 37, 37,127,150,155,226, 44, 47, 47,119,122,225,133, 23, 16, 16,160,173,123,198,178, 44,110,220,184, - 1,150,101,245,235,134,159, 27,118,157,132,166, 60, 3,195,222,121, 7, 69, 69, 69, 78,166, 56, 5, 60,104, 38,140, 24,204,151, - 10, 0,145,163,135,178,178,178, 82,111, 29, 84,169, 84,184,122,245, 42, 98, 99, 99,187,236,220,185, 51,201,210, 73,178,245,124, -170,128,175, 86,252,248,227,202, 33,101,101, 12, 0,124, 79, 8,167,162,244, 43, 91, 56, 9, 33,196,199, 71,176,235,200,225, 77, - 94, 60, 38, 29, 30,174, 95,226,194,133, 12,168, 84, 90,121,139,138,242, 49,102, 84, 57,132, 2,103,236,219,247,147,103,120,120, -199, 93,181,174, 51,206, 28,103, 45, 36,135, 15, 31,198,152, 49, 99,112,227,198, 13, 25,143,199,195,249,243,231, 33,149, 74,177, -120,241, 98, 94,120,120,184,204,209,209, 17, 71,142, 28, 65, 94, 94, 94,157, 31,153, 33,231,111, 71,127,155, 87,118,239,212,231, -143,201,145,158,223,109,221,142, 15, 7, 13,132, 31,189,255,187,107, 48,153,247,114,159, 14, 95, 80, 94,163,222,142,206, 81,238, - 33,205,250, 64, 40,114,194,232,207,230,224,118,234,126,247,234,138,235,163, 8,155,213, 8,181,181,255, 12, 57,233,206,254,236, -202,173,103,162,143, 5, 92, 12,148, 69,143, 60, 15,224, 58,244,138, 86, 16,159, 48,172,107,237, 24,220,189,123, 23,247,238,221, - 3,159,207,135, 92, 46,135, 70,163, 49, 41,103,131, 6, 13, 70,106, 52,154, 47, 0, 64,165, 82,109,240,247,247,127,111,243,230, -205,158,134,138,182,206,146, 85, 92, 90, 94,114,230, 98,218,173, 9, 35,251,119, 77, 62,151,154,229,214,162,111,102,233,181,189, -101,102,174,145, 68, 42, 18,237, 58,178,231, 39, 39,245,159, 39,225, 24,222, 21, 2,167, 16,176,234,108, 84,151, 84,161,226, 94, - 46, 20,223,126,141,150,163, 62,197,254,189, 63, 59, 69, 54,111,189,147, 16, 18, 66, 41,213,215, 63,170,199,127,211,102,216, 57, -237,156,118,206,127, 38, 39, 96, 94, 23, 1, 16, 13,192,183,246,123, 17,180, 33, 51, 94, 0, 10,161, 45, 7,230, 11, 64, 9, 64, -100, 48,198,120,221,176,175,241,186,225,247,162,218,239, 62,181,159, 23, 1, 20, 91,146,155, 16,226, 15, 32, 30,218,216,172,120, - 0,160,182,102,134, 39,132, 41,103, 89, 78, 44,244,246,169,121,255,173,151,154,255,122,252,210, 85, 7, 47, 23,254, 43, 93, 91, -117,185,144,242,231, 89,194, 16, 53, 33,140, 77,113, 31, 60, 30,111,224,242,229,203,155,187,184,184,128,227, 56,184,186,186,162, -160,160, 0, 74,165, 18,101,101,101, 80, 84,148, 67, 85, 81,142,107, 89, 15,209,161, 75, 87,188,217,243,229,240,159,246,254, 50, - 16,192, 54, 75,188,178,168, 86,122, 75,214,156,198,158,250,237,179,179, 74,245, 74,215,151,173, 66, 32,116,114, 66,143, 9, 9, -182,136,106, 18,148,210, 43, 34,145,232,112,191,126,253,122, 77,154, 52,137,201,205,205, 61, 66,198, 17,252, 55, 0, 0, 32, 0, - 73, 68, 65, 84, 8,233, 64, 41,181,234, 54, 85,137, 37,227, 63, 25,223,219,221,221,137, 98,231,177, 95,208,185,213, 32, 56,136, -120, 40, 42, 87,129, 16,224,102,218,110, 16,226,129,235,183,115,209,169,165, 11, 94,126, 37,220,105,239,207, 55, 39,225,175,248, - 32, 99,144,146,146, 18,228,231,231, 67,173, 86, 67,173, 86,163,255,128, 1,216,180,113, 35,170,170,170, 32,151,203,161, 84, 42, -193,178, 44, 24,134,193,177, 3, 59,145,245,231, 77,180,143,141, 5,204,152,100, 55, 92,161, 2, 66,200,185, 91,183,110,225,230, -205,155,120,244,232, 17, 36, 18, 9,252,252,252, 48,103,206, 28, 40, 20,218, 26,101, 3, 6, 12,232, 2,192,162, 37,195, 22,220, - 3,214, 61, 96,217,207,123,237,217,227,115,122,207, 30,238,220,254,253,143,196, 21, 21,107,109, 25, 43, 20,162,255,162,175, 62, -110,234,232,232,136, 71,153,203, 17, 22, 38,196,196, 79, 61,177,240,203, 66, 0,192,216, 49, 13,209,166,181, 23,202, 75,127,134, -151,207, 52,172, 92, 57, 46,120,248,240,165,239, 0,216, 96,133,250,243, 95,126,249,229,205,144,144,144, 6, 87,174, 92, 33, 34, -145, 8, 82,169, 20, 82,169, 20, 18,137, 4,249,249,249,120,240,224, 1, 93,180,104, 81, 54,180,174, 69,179,168,117, 15,246,154, -208,203,255,240,173,203, 27, 59, 53,224,253,121,237,205,209, 29, 31, 94, 63,119,165,226,215, 99,167,231,106,106, 36, 89,165,143, -142, 79,121,161,205, 21,175, 81,147,103,227,235, 69, 51,113,235,124,114,177,111, 64,249,106, 41, 81,108,104,219,163, 46,103,215, -174,179,249,163,102,188,165, 25, 57,252, 77,183,253,190,103, 70, 30,226,147,130,199,133,151, 23,227,193, 21,185,248,197, 86, 67, - 67,131, 24,229,201,147, 39,165,157, 59,119, 70, 77,141, 54,236,137,199,227, 97,243,230,205,156, 70,163, 49,233,142, 86,169, 84, - 95,100,103,103,251,203,229,114,244,236,217,115,236,226,197,139, 29,117, 53,234, 88, 86,155,136, 94,103,201,154,183,108,211,209, -241, 95,172, 62,117,116,219,151,178,121, 9,239,117, 29, 50,122,254, 41,152,169, 35,201,103,152, 81,251,247,172,247,147,184,171, - 33,245,120, 25, 53,121,114,220, 90,247, 33,170,203,107,208,102,222,108, 0, 34, 40,213, 12,214,246,233, 15,129,167, 12, 51, 63, -120, 79, 54,125,237,119, 31, 3, 88,110,229, 26,217, 97,135, 29,255,123,240, 37,132, 28, 0,128,132,132,132,105, 11, 23, 46, 76, - 35,132, 28,160,148,246, 6, 0,221,119, 93, 31, 0, 48,181,174,235,107,188,110,252,125,234,212,169,145,137,137,137, 11, 98, 99, - 99,183,157, 57,115,230, 79, 88, 81,180,160,173,255,188,206,184, 20, 15, 80, 59,235, 48, 62, 62,158, 24,126, 26,130,227,184,228, -187,127, 62,172,126,185,123,219,134, 7,146, 82, 46,190,251,110,252, 75, 3,251,116,126,229, 65,102,209,205,224, 64, 63,175,180, -180, 20, 23,142,227,146,109, 57, 75, 98,177,184,119,183,110,221,248, 37, 37, 37,112,112,112, 64, 65, 65, 1,178,179,179,161, 82, -169, 80, 83, 86, 10, 69, 89, 41,106, 74, 75,160, 42, 43,193,189, 75, 23, 16, 21, 28, 36,174, 13,150,183, 8,157,213,197,216, 82, -101,104,217, 18, 57, 59, 67,236,236, 12, 82, 79,183, 33, 33,228,117,119,119,247,115,132,144,207, 1, 64,165, 82,141,154, 50,101, - 74, 33,199,113,152, 63,127,190,139,147,147,211, 78, 66,136,216, 26,143,179, 55,175,119,108,203,102, 76,250,131,235,232,216, 98, - 24, 66, 95,120, 21, 15,242,228, 40,172, 80, 33,191, 84,133, 54,157, 87,161,113,139,217,104,212,114, 33,110,102, 20, 67,214, 32, -132, 1, 95,108,177,248,115, 86, 86,214, 19,235,219,182,110, 69,117,117, 53,130,131,131, 49,104,208, 32, 76,153, 50, 5,131, 6, - 13,130, 76, 38,195,144,183, 94,195,204,153, 51,241,248,241, 99,107,162, 42, 66, 67, 67, 21,129,129,129,138,192,192, 64,133, 74, -165, 66,101,101, 37, 74, 75,255,170,207, 91,123,190,199, 89, 35, 50,134,175,175,239, 84,127,127,255,235,190,190,190,105, 18,137, -228,208, 85, 66,210,107, 2, 3,125, 59,244,237, 75, 34,222,122,139,151, 33,149,146, 36,192,201, 42, 17, 0, 47, 15, 65,124, 92, -183, 94,162,210,146,245, 0,180, 70,170,247,222,245,198, 31, 73,145, 56,253,123,107,140, 25, 21, 12,194, 72, 64, 24, 17,170,171, - 78,162,109, 76,172,208,205,141, 88,252, 45,213, 6,190, 95,237,208,161,131,108,244,232,209, 68, 44, 22, 99,236,216,177,170, 15, - 62,248,224,206,160, 65,131,238,156, 56,113,130, 13, 12, 12, 68,163, 70,141, 72,163, 70,141,252, 1, 92,173, 29, 99, 17, 46,193, -100,158, 66,117,243,119,183, 16,199, 63, 89,120,181,175, 84,139,251,207, 92,156, 83, 52,119,245,253, 37, 15,110, 85, 7,221, 58, -159, 92,116, 39,117, 63,247,224,226,111,133, 57,119, 42,130,230,174,190,191,100,234,215,217, 38,255,212, 73, 73,224,118, 31, 72, - 82, 85, 87, 85,243,251,246,137,171, 30,249,254,192, 80, 15,167,200,205,104,240,114,139,198, 1, 13,135,204, 92,176, 82,245,193, -199,227, 85,223,255,176,158, 86, 84, 84,160,188,188, 28, 43, 87,174,212,236,223,191, 63,155,101,217,241,102, 68,228, 1,128, 90, -173,198,200,145, 35, 29, 93, 92, 92,144,149,149,165,183,136, 2, 64,110, 65, 81,202,233,139,169,233, 19, 62, 26,208,165, 74,161, - 80, 28,253,237,210,205,136,144,192,134,132, 80,179, 19, 81, 68, 2, 65,143,214,109,219,242, 40, 45, 5,225, 7,224,222,198, 69, - 40,127, 92,140,242,252, 98,240, 4,142,208, 64, 12, 53, 39,130, 91, 84, 12,110, 95,188,130, 6,222,190,124,177, 64, 96, 47,157, -101,135, 29,255,163,176,164,139,232, 64, 41,237,157,152,152,184,192, 82,187,193,167,210,104, 93,175, 72, 25, 43, 97,134,223, 1, - 32, 49, 49,113, 1,165,180,247,153, 51,103,182, 2,176, 88, 72,221,128, 99,132,238,211, 48, 75,188, 85,173,131, 87,163, 92, 56, -105,202,231,112,119,149,186,198,180, 10,241,219,119, 36,233, 82,242,153, 75, 55, 27, 55,242,242,166,106,165,251, 87, 75,191,110, - 72,170,229,182, 6,131,135,123,121,121, 65,165, 82,225,238,221,187,120,244,232, 17, 84, 42, 21, 52, 85, 85, 80,148,150,162,166, -164, 4,108, 85, 5,132, 44, 11,121, 65, 62, 60, 29, 36,192, 95, 51, 18,173, 29,160, 73, 69, 75,247, 41,113,113,129,216,217, 5, -140, 64, 96,210,173,104,134, 51, 58, 38, 38,102, 71,106,106,106,219,238,221,187,207, 37,132,184, 82, 74, 51,178,179,179, 95,154, - 49, 99,134,194,215,215, 23, 35, 71,142,108, 10, 96,152, 53, 46,177, 72, 25, 30,232,215, 20,161, 65,195,208,184, 81, 55,148, 86, -169, 81, 80,174, 70,126,169, 10,107, 87,197, 98,215,247, 49,248, 99, 87, 39,164, 30,237,129, 82,181, 31,156,100,175,131,178,202, - 72, 75,156,199,142, 29,195,156, 57,115, 48,119,238, 92,204,159, 63, 31,115,231,206, 69,118,118, 54,154, 53,107,134,204,204, 76, - 28, 62,124, 24,185,185,185,240,242,242,194,133, 11, 23,176,108,217, 50,252,241,199, 31, 86,143,219,150, 9,159,148, 82, 16, 66, -234,229, 75,215,104, 52,195,115,251,246,109,158,231,225, 17,209,170, 85,171, 94, 99,199,142, 13,234,208,161,131,190, 61, 40, 40, - 40, 64, 42,149, 62, 38,132,124, 79, 8,105,105,137,139, 3, 90,121,123, 55,131, 82,145, 14, 0, 32, 68, 0, 66, 36,232,214,227, - 38, 58,116,186, 4,149, 90, 8,134,136,193, 48, 18,104, 52, 69,112,119,151,129, 82,210,204,138,136, 51, 10, 10, 10, 66,142, 31, - 63,206, 60,120,240, 0, 18,137, 4, 0, 30,206,154, 53,235,235, 37, 75,150,220,240,244,244,100, 15, 28, 56,128,189,123,247,162, -119,239,222,188, 15, 62,248, 32,164, 81,163, 70,107,172, 29,247,204, 21, 57,103,183, 44, 61,252,182, 64,237,222, 82, 34,109,220, - 4, 85, 78,175,143,234,234,237, 8, 0,135,239,221,171,240, 9, 40, 79,172,170,184,158,233,214,176,242, 75,107,129,240,148,206, -228, 46,223, 73, 63,183,101,207,145,178,252,188, 18, 65,171,230,145,242,133,115, 38, 11, 27, 55,121,241,171,153, 83, 62,242,203, - 46,151,148,246, 24,123, 56,125,247,145, 11,149, 67,223,253, 80,243,254,136,209, 53,135,143, 28,219,195,113, 92,115,115, 51, 14, - 57,142, 67,110,110, 46,210,210,210,112,255,254,125, 20, 20, 20,160,176,176, 16, 21, 21, 21,122,119,163, 67, 69,249,193,175,127, -220,127,205, 81, 42,117,104,219, 60, 36,224,252,149, 27,249,142, 82,169, 67, 72,147,128, 80, 66,102,155,188,143,176, 44,219, 92, -226, 32, 5, 64, 80,154,154,140,202,146, 74, 84,150, 86,162,162,184, 18, 10, 21, 15, 53, 10, 6,114, 37,131,192, 46, 47,163,178, -170, 6,149, 69,101,224, 88,182,133,181,243,105,135, 29,118,252,239,130, 16,114, 32, 33, 33, 97,154,141,221,109,118,111, 26, 43, - 94, 9, 9, 9,211, 8, 33, 7,166, 78,157, 26, 9, 27, 98,154, 41,165,235,140, 23, 93,155,213,244, 14,133,133,183, 43, 93,188, - 35,250,125,250,217, 23,135,183,254,176,202, 71,161,168,206,244,116,119, 98,157, 28, 68, 94,239,143,156,143,138,255,199,222,119, -135, 69,113,182, 95,159,103,182,178,133,222, 23, 80, 1, 69, 80, 81, 32, 34, 98, 71,141, 38, 98, 87, 44,177, 71,163, 73, 52, 70, - 99, 12, 70,141,189, 36,175,209,104, 98,130,198, 18, 53, 26, 27,198,222,137, 37,118,197,130,138,162,244,222,235,246,221,153,231, -251, 67, 32, 72, 40,139, 49,191,247, 77, 62,206,117,141,203,206,206,156,185,103,132,217,123,238,114,238,178,194, 33,101, 38,202, - 17, 0, 64, 97, 97, 33, 18, 18, 18, 32,145, 72, 32, 20, 8,192,170,213, 96,213, 74,168, 11,243,193,232,181, 16,178, 44,108,164, - 18, 52, 85, 56,161,153,163,147, 73,156,207,162,206, 84, 22,190, 87, 77, 23,254,167, 67, 43,136,100,114,136,204,229,248,224,216, - 5, 0,128, 80, 40, 4, 22, 46,171,151,147, 16, 98,231,226,226,114,100,247,238,221,194,220,220, 92,220,189,123,247, 30,165,180, -152, 16, 98, 14,128,123,252,248,241,185,152,152,152,254, 94, 94, 94, 0,208,188, 62,190,146, 60,134, 53, 24, 41, 82,179,146,144, -152, 22, 13, 27, 75, 15, 8,164, 45,145, 83,164,135, 88,226, 1,131,246,143,236,163,166, 36, 25,106,189,105,141,145, 58,157, 14, - 70,163, 17, 70,163, 17, 58,157, 14,239,189,247, 30,174, 92,189,138, 95,126, 61,143,132,231, 79,225,237,238,132,113,227,198,162, - 67,135, 14,184,122,245, 79, 51,110, 95,194,132, 0, 98,152,223, 13,252,181,111, 51, 16,201,109,181, 29, 63, 59,125,163,174,237, - 43,156, 45, 74,105,189,158, 43, 33,228,235,254,253,251,183,120,170, 84,226, 97,108, 44,122, 47, 94, 12, 0, 56,113,226,196, 75, -231, 50,123,246,108,209,163, 71,143,222,189,125,251,246,187,132,144,181,148,210,154,139,205, 41,112,252,248, 53, 76,155,246, 8, -185,185, 47,234,181,247,238,249,195, 47, 77, 76,208,227,173,208, 23, 25, 45, 43, 43, 43,172, 93, 91,159,143,245, 2, 44,203, 98, -243,230,205,149,233, 66, 0,224,243,249,157,103,207,158, 61,180,166,237, 91,180,104, 33,172,143,115,118,152,171,217,221,100,201, -135,150, 45,154,181,177,176,107,135,124, 67,180,111,116,122,230,140,217, 97,174,223,172,221,159,166,145, 16,237, 79,132, 77,117, -227,155,105,118,152, 98,227,243,147, 27,116, 86,205, 38,238,200,202, 45,153, 63,125,202, 59,182, 22, 86, 14,202, 45,223,173,178, -102,120, 12, 61,114, 91, 95,212,198,211,214,106, 80,199,245,101,211,102, 45,140,214, 25, 83,167, 35,245,200,211,186, 36, 46, 88, -150, 69, 70, 70, 6,114,115,115,145,146,146,130,188,188, 23,233,215,188,188,188, 63,117,174, 54, 4,132, 16,168, 83, 82,144,124, -104, 11,154,141, 29,139,192,101, 75,193,114,124,168, 85, 44,214,118,234,133,194, 98, 53,180, 28,129,226,141, 78,152,114,226, 50, - 24,202, 2,155, 26,164,236,209,136, 70, 52,226, 95, 4, 83,228, 29, 42, 28,162, 85,171, 86,213,155,237,106, 40,170, 58, 91,171, - 86,173,122,184,106,213, 42,147,143, 85, 61,101, 88,245,125,189,242, 14, 0, 80,146,251, 40,222,182,105,187, 12,165, 90, 41,117, -116,176,215, 74,205,196, 92,113, 73, 41, 47,250,193, 61,125, 89,230,179, 39, 13, 56,143,199, 49, 49, 49,190, 25, 25, 25, 72, 73, - 78,134, 81,173, 4,163,213,129,106, 84,232,221,165, 19,204, 0,152, 49, 4, 66, 78, 15, 62, 79,132,210,178, 18, 0,120, 92, 31, - 41,107, 48, 84, 61,217,202, 69,100,110, 14,145, 76, 6,145,220,188,242, 51,192,180,136,141, 88, 44,222,189,127,255,126,103, 23, - 23, 23, 44, 93,186, 20,174,174,174, 62,109,219,182, 85,117,237,218, 85,226,232,232,136,214,173, 91,163, 83,167, 78, 56,121,242, - 36, 0,212,171, 41,101, 48,154,221,127,146,132,206,121, 5, 87,113,249,194, 15,208,169,181, 8,232,254, 3,244,252,102,176,111, -179, 4,220,179, 93, 80,101, 29, 6, 0, 72,157, 6, 32, 45, 37, 9,132, 39,122, 88, 23,103,213,243,168,248,249,222,189,123,216, -115,248, 34,156,155,182, 66, 74, 92, 44, 98,127, 59,135, 43,246,182,104,218,170,117,101, 26,168, 86, 27, 89,240,151,111,172,148, -119, 16, 23, 20, 20,136,109,108,108,180,192,139,107,231,236,236, 92,163, 13, 38, 58, 91,239,204,153, 51, 7, 69, 2, 1, 16, 26, - 10, 97,124, 60,244,122, 61, 58,118,236,136,192,192, 64, 0, 64,199,142, 29,193,231,243,209,174, 93, 59, 40, 20, 10,108,220,184, -241, 29,212,210,213,199, 16,220, 53, 26,243,125, 60, 61, 61, 43, 29,173, 29, 59,115, 17,125,251, 77, 16,136,176,225,187, 63,212, - 28,154, 52,105,130,172,204,120, 16, 66, 99,234,177,113,153,147,147,211, 66,103,103,103,207,175,191,254,154,103,102,102,134,247, -223,127,223,163,172,172,172, 25, 0,172, 94,189, 26,243,230,205, 3, 0, 44, 90,180, 8,139, 23, 47,134, 86,171, 85,213, 70,182, -115, 93, 59, 69, 78, 1,247,174,163,147,203,144, 16,187,102,109,123,246,237, 13, 15,175,158,232,217, 55, 5, 0, 86,218,240,147, - 70,252,103,129,239, 33, 59, 55,155,109,103, 78,157, 93,212,165,123,207,249,225, 83,173,151,175,222, 84, 88,111,205, 99,113,242, - 79,165, 79, 68, 35,215,125, 27,177,115,221, 23,243,102,154,165,228,234, 10,211, 11,105,153, 92,204,151, 55,119, 36,242, 25,115, -151, 37,100,100,196,127,130,212, 83,245,118, 90,114, 28,135,248,248,248,202,154, 62,141, 70, 3,165, 82,137,212,212,212,202,223, - 25,181,204,226,173,233, 19, 7,248, 41,213,106,213,141, 7,113, 41, 11, 62, 26, 19,172, 84,171, 85,113,137, 41, 79, 41, 93, 95, -163, 55,198, 48,204, 3, 85,169,170,183,170, 72,131,220,187, 79,224,218,171, 41, 12, 70, 2,157,145, 69,110,126, 41,180, 70,128, -101, 4,104, 51, 98, 28, 88,194, 71, 94, 70, 58, 24, 30,239, 94,125,246, 54,162, 17,141,248,215,162, 94,121, 7, 66,200,177,224, -224,224, 95,128, 63,162, 78, 21, 63, 3,208, 2,168,171,148, 39,183,170, 51, 85,145, 78,172,237, 56,213,120, 77, 66, 77, 53, 90, -245,202, 59,148,239, 72,252,218, 54, 85,252,103,209, 24, 87,206,104,244,206,201,203, 54,242,249, 98,129,155,165, 58,211,212,131, - 3,128, 86,171, 61,118,238,220,185,193,111,190,249,166, 56,238,193, 61,232,138,139,161, 43, 46,130,128, 51,194, 70,210, 30,140, - 94, 11,162,211,193,197,135,131,166, 84,130,139, 87, 98, 12, 90,173,246, 88,125,188, 21,142, 22,195,227,189, 92,151, 37,151, 67, -108,110, 1,177, 92, 94, 61,181, 88,167, 83, 64, 8,145, 14, 28, 56,176, 87,199,142, 29, 65, 41,197,230,205,155,161,215,235, 69, -122,189, 30, 58,157, 14,122,189, 30, 37, 37, 37,216,185,115, 39,190,255,254,251, 43, 0,182,215,103, 35,103,212,157, 59,125, 54, -170,195,164, 49,253, 5, 39,142,173,133, 81,199, 66, 77, 92,161, 84, 26, 80,166,147,130,181, 29, 11,100, 31, 7,143,111,134,224, -118, 30, 56,124, 32, 82, 15,163,246,124,125,188,192,203, 14,151, 78,167, 67,106, 74, 18,210,158, 63,133,188, 36, 11,246, 22, 82, -168,226,159, 34, 96,220,248, 87,138, 78,184,185,185,129,227, 56,132,132,132, 84, 22, 87,215,116,124, 83,156,173,252,252,124, 28, - 61,122, 20, 29, 59,118, 68,247,238,221,145,158,158,142,248,248,120,244,235,215,175,114,155,123,247,238, 33, 58, 58, 26,205,155, -215, 29, 36,204, 43, 48,156, 72, 75,189, 27, 54,104,208, 32,225,245,235,215, 65, 41,133,151,151, 5, 44,204,101, 32,140, 24,173, - 90, 57, 0,120,241, 12,208,163, 71, 15,148,148,196, 27, 11, 11,233,137,186, 56, 41,165,187, 9, 33,191,234,116,186,103,221,186, -117, 83, 60,127,254, 28,179,102,205,226,239,221,187, 23, 0, 16, 30, 30,142,240,240,151,155, 41,212,234,218, 83,247,222,109,125, - 62,245, 48, 90,119, 55,147, 52,115,183,176,107, 7, 15,175,158, 0,128, 55,251, 79,130, 71,139, 38, 40,201,187,239,174, 81, 39, - 13, 17,242, 11,173,239,111, 72,127, 36, 9,245,157,168,201,185, 16, 7,192, 20, 1, 96,170,142,219,155,157, 34, 24,187,239,215, - 35, 39,167,246,235, 63, 80, 96, 96,141, 70,223,166, 2,171,253,135,142,231,164, 39,167,172, 71,202,169, 10,199,178,206, 39, 11, -150,101,217,146,146, 18,200,100, 50,196,196,196,104, 67, 67, 67,197, 12,195,224,217,179,103,149,142,150,131,157, 77,235,206,129, -190, 62,203,215,237, 60, 45, 19,139,197,125,123,180,111,245, 40, 46, 57,141, 82,146, 84, 27,175,206, 96, 56,251,224,238,189, 16, -123, 69, 11, 94,252,133,235,176,237,218, 15, 90, 45, 3,181,142,131,214, 8, 24,121, 66, 56,251, 7,193,170,121, 43, 80, 0,183, -174, 95, 49,104, 13,134, 90, 37, 77, 26,209,136, 70,252,251, 81,135, 47,146, 91,197, 49, 42, 0,144,180,106,213,170,188, 42,209, -166, 92, 0,247, 0,248,149,111,151, 91,109,191, 92,188,232, 30, 12,172,194,147, 11, 84, 58, 92, 85,127,214, 85,219,198,164, 7, -192,170, 53, 90, 85,215,215, 43,239, 0, 0,118,118,118, 14, 1, 1,237,155,255,184,117, 31, 40,165,120, 18,189, 6,133, 57,177, - 88,184,242, 90,115, 87, 87,215,238,105,105,105, 23, 77, 49,130,101,217,189,219,182,109,251, 36,232,141,128, 0,119, 87, 87,220, - 75, 74,132,144,178, 16,178, 44, 24,189, 22,124, 86, 7, 87, 95, 22, 12,145, 35, 35,163, 24,171,119,239,139, 97, 89,118,111,125, -188, 62,253, 6, 98,105, 90, 49, 8, 33,248, 58,216, 23, 34,115, 57,132, 50, 57, 62, 56, 18, 85,233, 92, 29, 91, 58, 15, 34,185, - 28,205,131,234, 23,132,167,148,170,204,205,205,111, 63,120,240, 32,208,215,215, 23,159,124,242, 9,146,146,146,192,113, 28,178, -179,179, 53,153,153,153,233,185,185,185, 73, 0, 14, 1,248,209, 20,229,113,161, 86,243,205,177,131, 59,166, 7,119,233,110, 55, -104,200,247,248,245,192,108, 20, 21,151, 64,101,148, 64,169, 49, 66,169,229,193,198,182, 45,130,218,181, 67, 70,122, 14, 30, 94, - 63, 93,198,215,170,214,212,127, 85,255, 0, 33, 4,209,209,209,240, 84,152,227,233,229,139,176,147, 10,224,167,112,130,162,115, -151, 74,125,169,186, 32,224,193,248,206, 59,239, 84, 42,195,247,233,211, 39,113,236,216,177,206,179,103,207,198,214,173, 91,113, -229,202,149, 63, 21,104,119,239,222, 29,151, 46, 93, 90, 2, 96, 81, 61,244, 6,157, 78, 7, 31, 31, 31,220,186,117, 11,231,206, -157, 67,207,158, 61,209,189,123,119,220,191,127, 31,103,206,156, 65,116,116, 52, 8, 33,176,181,181,133,225,133,243,108,168,141, - 76,175,199,254, 47,191,218,246,249,186,117,223,183, 25, 51,102, 12, 14, 30,252, 5,147, 38,122,131, 48, 98, 16, 34,198,192, 1, -222, 88,186,236, 22,130,130,122,192,206, 78,128,117,107, 15, 39,168,213,236,206,122, 47, 2,176,252,204,153, 51, 10,141, 70,131, -162,162, 34, 42,151,203, 73,126,254,139,142,214,154, 34, 90, 42,149,202,172, 54,162, 7,119, 30,175, 41, 42,165,133,180, 44,122, - 72,129, 49,186,109,207,190,169,120,179,255, 68,156, 61,182, 29, 81,167,207,193,134,159,148, 8, 89,233,201,188,196,188,146, 76, -165, 87, 68,171, 55, 38,243,210,148,167, 35, 62, 26,100,205,115,118,230,246,135,127, 95, 92, 84, 27, 55,165,148, 18, 66, 72,193, -163, 93, 71, 14, 81, 12,236, 20, 28,212,194,183,137,179,168, 48, 47,135, 30, 56,124, 50, 70,159,120,240, 40,202, 29,172,250,166, - 44, 80, 74,151,134,135,135,127, 81,254,243, 79, 11, 22, 44,152,188,122,245,106,251,172,172,172,202, 26,173,156,188,130,168, 78, -161, 51,216,252,162, 98,221,182,117,115,135, 75,204,196,162, 5,171,183, 93, 48,240,112,189, 54, 94, 35,199,109, 28, 49,107,225, -204,184, 39,209, 46,205, 36, 34, 28,158,187, 8,247,206,252, 6, 3, 35,196,180,115, 55,160,213,179, 40,202,203,199,249,119, 63, -132,220,209, 26,223, 95, 56,152,205,113,220, 15,117,217,218,136, 70, 52,226,223,141, 58,124,145,154, 52,246,178, 77,216,174,190, -247,175, 5,213,163, 88, 85, 97, 82, 11, 94, 94, 94, 94,206,165, 75, 55,112,225,216,114, 92, 60,182, 28, 15,163,239, 33, 35, 93, -135,244,108, 13, 44, 44, 44,174,213,182, 31, 33,164,119, 53, 67,168, 74,165, 26,186, 96,225, 23, 89,102, 18, 41,186,245,234, 5, - 39,123, 7, 72,133, 2,240,140, 28,120, 68,128,178, 92, 43, 60,189,175,194,103,219,118,229,148,169, 84, 67,171,127, 73, 84,231, -172,178, 30,132, 16,136, 45,204, 33,146,155, 67,108,110,241, 82, 26,209,204,194, 2,102,230, 22,224,139, 68, 53, 21,205,255,137, -179,172,172,108,216,240,225,195, 11,139,139,139, 49,121,242,100, 92,188,120, 49,250,244,233,211, 22,247,238,221,147,228,228,228, -180,160,148,246,161,148,110,170,205,201,170,206, 89, 80,240,188,148, 26,181, 35, 87,125,241,177, 90, 99,180, 69,216,248,189,144, - 49,169, 48,178, 28, 40, 0,133,141, 8,157,123, 47, 67,142,174, 19,246, 70,172, 80,113,122,205,152,170, 26, 90,213, 57, 41,165, -212,209,209, 17,213, 62,199,185,115,231, 16, 54,124, 24,250, 14, 25, 12,123,119, 79, 56,244,238,135,190,147,167, 33, 34, 34, 2, - 12,195,192,206,206, 14,168, 18,225,168,202,249, 83, 52, 21,236,190, 79,201,238,251,148,108,191, 67,249, 0,198,237,218,181,235, - 75, 63, 63,191,223,174, 92,185,178, 6,192,200,170,199,170, 98,203,226,170,209,172, 90,254,143,230,207,156, 57, 83, 29, 23, 23, - 7,153, 76, 6,163,209,136, 43, 87,174,224,251,239,191,199,215, 95,127,141,232,232,104,216,218,218,162,121,243,230,208,106,181, -184,117,235,150, 26,192,252,218, 56, 41,165, 92,110,174,113,216,134, 13,171,243,251,247,239,138,109,219,190,131,147, 83, 39, 8, -248, 78,224, 11,236, 33,147,251, 96,203,143, 95,226,237,183, 3,112,228,240,190,130,188,124,227,176,234, 42,238,181,216,169,185, -113,227, 6, 34, 34, 34, 48,124,248,240,244,176,176, 48,182,184,248,133,216,109,120,120,120,229,100,246,197,229, 53,102, 90,173, -246,165, 48,117, 85,206,201,115, 31,164,127,186, 60,102,105,118, 86,122,199,139,191, 93,123, 39,234,244, 57, 36,196, 69, 33,234, -244, 57, 92,142,186, 26,158,157,149,222, 49,160, 67, 75,225,208,201,211, 63,221, 17,121,144, 39,183,112,198,142,200,131,188,209, - 51, 62, 94,209,190,111,207, 90,207,189,234,101, 0, 64,203,114,178,231,173, 92,243,109,153, 81,175, 97,254,179,126, 99,134, 58, - 55,115, 62, 42, 90, 49,107,137,102, 85,229, 84,169, 84,155,212,106,181, 66,173, 86, 43, 52, 26,205,252,164,164,164,110,159,124, -242, 73, 46,203,178,149,209,210,156,135,135,175, 61,190,188,125,165,131,157,181,164, 83, 96, 27,239,181,155, 14, 92, 72, 73,205, -254,185, 66, 67,171,150,255, 35, 77,153, 90, 51,108,240,208,177,202,162, 66, 45,130, 63, 14, 7,103, 38,135,150, 5, 12,148, 7, - 35,225,227,193,242,181,144,216,152, 99,119,226, 29, 85,177, 65, 63,172,170,134, 86, 61,231,254,202,104,228,108,228,108,228,252, -223,228,252, 39,131, 16,226, 76,170,204, 58, 44,215,213, 2, 80, 30,209,170,175,165,210,197,197,165,219,160,129,189,209,163,255, - 2, 80, 74, 17,123,231, 43, 20,230, 62,129,139,147, 24,241, 41, 37,193, 0, 46,154,106, 12,165, 52,133, 16,210,113,230,252, 5, -145, 97,125,122,181,242,117,119, 23, 55,107,214, 20, 50, 7, 7,228,229,229,226,247,235,143, 12, 43,246,236,143, 41,119,178, 76, - 25,193, 3,142,227, 94, 20,185, 3,232, 53,243, 51, 16, 30, 15, 40,151,113,168,248, 98,116, 15,236, 4,194,231,131,165, 28,180, - 90,109,189, 69, 90,148,210, 52, 66,200,176, 49, 99,198,156, 63,118,236, 24,211,183,111, 95,255, 67,135, 14,189,122,101, 48,128, -178,236,167,191,201, 29, 91,246, 95, 49,111,234,222,142, 61, 7, 91,120,181,105, 47,108,223,140, 7,189,129, 32, 35, 61, 25,199, - 34,111,234, 31,221, 56, 93, 66,141,154,145,202,220,186, 71,240,232,245,250,148, 22, 45, 90, 56, 70, 68, 68, 84, 22,195,179, 44, -139,188,188, 60, 92,187,118, 13,109, 3,131,208,106,226,187,200,205,205,197,134, 13, 27,208,164, 73, 19, 12, 24, 48, 0, 5, 5, - 5, 48, 26,141, 38, 93, 87, 74, 41, 11,224,116,249, 2,224, 15,135,182, 60,160, 66,235, 75, 27, 54,111,222, 92,164,209,104,252, -157,157,157,121,132,144,111,116, 58,221,132,121,243,230, 57,175, 92,185, 18,222,222,222,200,203,203,131, 76, 38,131,151,151, 23, -114,115,115,113,243,230, 77, 86,165, 82, 69, 0, 88, 74, 41,205,173,137,179,138,125,207, 8, 33, 29, 63,250,232,131,200, 47, 87, - 79,245,210,104,123,136,108,108,186,128, 82, 35,114,115,147, 80, 90,114, 69,191,108,233,246,231,217, 57,134,161,148,210, 56, 83, -206, 25,192,162,233,211,167, 3,229, 35,120,226,227,227,239,182,106,213,202, 11,168, 57,162,101, 10,214,238, 79,211, 0,216,243, -159, 89,157,102,149,228,221,247,178,225, 39, 37,118,244,229, 54,172,221,159,166, 89, 50,203,106,121, 94,210,197,167,153,202,211, - 17, 59, 34, 15,242,198, 15, 25,198,186,202,227,194,205, 28,232,129,158, 3,234,230,165,148, 82,127,127,127, 55, 66, 10, 60,114, -242,159,220,158, 52,121,234, 8, 75,161,250,132,159,107,126,115,166, 73,128, 89,116,116,116, 98,125,209,172, 90,120,159, 18, 66, -186,205,155, 55,239, 52,165,244,165,218,132,156,188,130,168,224,254,211,105, 81, 81,241,221,156, 71,135,235,213, 82,163,148,222, - 36,132,244,242,109, 27,112,240,203,149,171, 29,123,204,252,132,255,244,183, 11, 0,107, 64,242,197, 11, 96,197, 58,110,237,213, -179,217,197,122,253, 16,218,168, 10,223,136, 70,252,127, 13, 83,228, 29,254,135, 17, 90,189, 24, 30,229,179, 15,235, 21, 44, 5, -128,180,180,180,139,205, 61, 93,207, 60,125,218,173, 79, 19, 87,123, 0, 64,124, 98, 6,210,179,181,103, 76, 77, 27, 86, 69,185, -179,213,126,215,209, 19, 35,197, 98,113,127, 82, 46,225, 64, 95, 97,168,180,209,104, 76,115,119,119,175,229,211,154,165,158, 88, -150,173, 41,220, 88,147,157, 23, 8, 33, 99,155, 55,111,190, 58, 57, 57, 57,146, 82,170, 52,101,191,186, 80,150,253,244, 55, 27, -155,230,158, 87,207, 29,252,248,250,133, 99,189,169, 81,215, 22, 0, 8, 95,212,160,161,210,101,101,101, 83,223,127,255,253, 77, - 2,129,160, 9,202,107,206, 42,106,176, 88,150,229,233,245,122, 51,150,101,121, 0, 8,195, 48, 70,129, 64,160,137,140,140, 52, - 26,141,198, 20,173, 86, 59,245, 85,237, 55,165,195,176, 42, 78,156, 56,209,204,218,218,186, 15, 33,100, 56,165,212,167,180,180, - 84,187,112,225,194,171,251,247,239, 47,113,119,119,127, 43, 52, 52,148,216,216,216,224,214,173, 91, 52, 63, 63,255, 0,128,249, -148,210,248, 6,216, 19, 79, 8,241,155, 58,237,135, 81, 54, 54,155, 66, 41,133, 31, 40, 8, 97,240,160,184,152, 59,161, 82,177, - 63,151, 59,140,166,242, 25,241,114, 36,109, 89, 76, 76,204,118, 0,130,154,106,180, 26, 4,105,217, 17,141, 58,105, 24,145,171, - 14,173, 93,159,166, 1,128, 69,235,138,138, 1,108,249,104,136, 13,247,248,206,150,175, 92, 44,226,230,174, 63, 84,176,205, 20, -186,128,128, 0, 79,134, 97, 70, 2,240,117, 16, 23,181,176, 23, 21,179,132,208, 16, 66, 24, 59, 0,247, 91,183,110,125, 12, 64, -218,171,152, 74, 95,140, 43,106, 90,125,125,206,195,195,215, 0,212, 26,197,174,133,235, 38, 33,164,197,172, 57,179, 63, 20, 9, - 4,111,130,101,219, 45,251,117, 63,109, 28, 42,221,136, 70, 52,226,223,132,234,181, 89, 21, 48,201,209, 2,128,231,241,105,125, - 1,192,203,203,139, 62,123,246,172,193, 95,184,213, 81,238, 72,253,130,122, 84,223,235, 67, 94, 94, 94,251,191,178,127,125,160, -148,238, 1,176,231,117,114,150, 59, 82, 75,203,151, 87, 2,165,244, 1,128,160,215,102,212,171,217, 64,202,181,180,150,212,182, - 77,159, 62,125,146,245,122,253, 57, 0,169,132, 16, 43, 0, 5,122,189,254,180,193, 96,200, 38,132,180, 95,187,118,109,133,242, -253, 50, 74,233,237, 87,180,131, 3,176,187,124,121,173,160,148,238, 86, 40, 20,179,109,109,109,155,107, 52, 26,145, 70,163, 17, - 86,125, 6,144, 72, 36,117, 70,221,170,194,202,156,252, 36,228, 23,218, 90,153,147, 63, 57, 82, 54, 46, 56,168, 86,198,120,219, -184,224,160,169,124,209,209,209,241,254,254,254,187, 24,134,113,167,148, 58, 2,212,146, 82,228, 82, 74,243,248,124,126,250,163, - 71,143, 76,154,193,249,127,129,114, 71,106, 77,249,210,136, 70, 52,162, 17,255, 42,212, 85,163,101,178,163, 85,129,184,184,184, -127, 98, 72,175, 17,127, 19,234,115,184,147,146,146,180, 0,174,150, 47,213,247,189, 13,160,158, 4,217,127, 31, 25, 25, 25, 1, -175,131,103,242,220, 7,233, 0, 62,110, 95,195,104,231, 69, 27, 10, 74, 1,124, 26, 50,176, 97,156,119,239,222, 77, 1, 96, 82, - 42,184, 17,141,104, 68, 35, 26,241,247,160,166,104, 86,117, 29,173, 70, 52,162, 17,141,104, 68, 35, 26,209,136, 70,188, 2, 42, -156,170,154,116,180, 8,128, 26, 59, 7,104, 3, 38,115,191, 74,247, 65,125,252,141,156,141,156,141,156,141,156,141,156,141,156, -141,156,255, 62,206,127, 43,106,114,178, 0,128,188, 66, 83, 82, 67, 14,218,251,117, 95,240, 70,206, 70,206, 70,206, 70,206, 70, -206, 70,206, 70,206,127, 31,231, 63, 25,141,169,195, 70, 52,162, 17,141,168, 1, 7, 14, 28, 48,105,168,232,168,185, 91,250,203, -229,214, 11,203, 74,138, 87,255,178,102,210,161,138,245,195,135, 15, 55,185,163,181, 17,141,104,196,191, 23,175, 84, 12,239,233, -233,214,154, 97,185,206,148, 50, 60,202, 80, 3, 41, 81,239,125, 94, 80,240,146,236, 64,147, 38, 77,172, 4, 12, 6, 16, 74,101, -132,112, 44,199, 99,174,196,199,167, 62,170,141,179, 58, 8, 33, 34,107,107,235,233, 66,161,176,183, 78,167,115,101, 24, 38, 77, -171,213,158, 83,169, 84,223, 85, 23, 46,252,111,194,219,219,123,244,133, 11, 23,172,186,116,233,162,149, 72, 36, 70,181, 90,205, - 63,117,234,148,248,237,183,223, 46,122,246,236,217, 43,117, 36,186,184,184,244,220,178,101,139, 71,223,190,125,209,162, 69, 11, -229,200,145, 35,133,193,193,193,194,201,147, 39, 39,164,167,167, 71, 53,132,139, 16,210,154, 16,178,147, 16,194,227, 56,110, 92, -121, 71,226,107, 7, 33,132, 97, 24,102, 42, 33,100, 8,165,212,147, 16, 18, 79, 41, 61,196,113, 92,173,194,173,245,240, 13, 3, -208,143, 97,152, 0, 0,224, 56, 46, 26,192, 9, 74,169,201,157,119,255,151,156, 82,169,212, 31, 0, 84, 42,213,221,215,197, 73, - 8,241, 7, 0, 74,233, 43,113, 18, 66, 38, 74, 36,146, 41, 0,160, 86,171,127,164,148,214, 59, 14,234, 79,216,212,138, 6, 44, -137, 5, 0, 68, 47,242, 1, 0, 52,232,253,212,199,166, 55,200,108,106, 69,107,226,107, 16, 71, 53, 16, 66,250,141, 25, 51,102, -229,207, 63,255,188,136, 82,122,248, 85,121,234,130,147,147,219,119, 95,175,223,172,248,120,250,187,171,241, 98, 34, 68,157,104, - 67,200,155, 34, 30,111,160,142,101, 47, 63, 2,246, 3,224,219,216,216,140, 22,137, 68,221,116, 58,157, 51,159,207,207,212,233, -116,151,138,139,139,247, 80, 74,107,157,128, 96, 50, 98,137,181, 94, 5, 39,194,253, 49,231,141, 50,208, 10,165,200,130, 15, 45, -252,203,252,127, 17,132, 16, 6, 47,244,118, 12, 0,182,190,138,156, 7,143,199,251, 88,161, 80, 12, 41, 41, 41, 81,241,120, 60, -250,130,150,188,248, 7, 0,195, 48,132,227,184,156,252,252,252,113,175,215,250,255, 93, 16, 66,154,226,197,117,109, 86,190, 74, - 0,192, 17,192,125, 0, 31, 83, 74,203,254, 59,150,253,255,135, 26, 34, 90,199, 41,165,153, 64,185,163, 85, 69,238,190, 71,104, -104,232, 69, 79, 79,183,214,195, 7, 15, 93, 57,109,234,251,132,199, 99, 16,243,240, 33,255,157,113, 19,251,216,216,216,184,200, -181,218, 86, 32,132, 83,153,153,197, 24, 12,250,244,253,123,126, 54,247,241,246,102, 89,150, 67,196,166, 31,222,246,244,116,251, -220, 20,103,139, 16,210,210,201,201,105,103,120,120,184,211,192,129, 3,121, 78, 78, 78, 72, 74, 74,178,250,229,151, 95,188,191, -253,246,219, 17,132,144,113,229, 90, 62, 13, 61,217,174, 78, 54, 76, 31,115, 9,233,133, 82, 22,165, 6,156,207, 82,227, 12,165, -244,114, 67,185, 42,160, 82,169,102,168, 84,170,160,192,192, 64,186,117,235, 86, 50, 97,194, 4, 74, 8, 33,106,181,250, 39,188, -162,244,131, 76, 38,219,216,183,111, 95, 47, 47, 47,175,248,231,207,159,247,219,183,111,223,137,241,227,199,123,202,100,178, 56, - 0, 45, 27, 72,183, 61, 63, 63,223, 79,173, 86,195,213,213,117, 43,128, 55, 94,197,166,186, 64, 8, 33, 60, 30,239,144,139,139, - 11,253,234,171,175, 14,251,249,249, 57, 22, 20, 20, 24, 63,253,244,211,222,215,175, 95,127,155, 16, 50,208, 84,103,139, 16, 98, - 77, 8,217,228,228,228,100,183,122,245,234,103,237,219,183,191, 47, 22,139, 69,113,113,113,210,217,179,103,207, 98, 24,102, 4, -165,116, 42,165,166,127, 65, 84,112,186,184,184,216,173, 92,185, 50, 41, 32, 32, 32, 70, 40, 20, 10,227,226,226,100,159,125,246, -217,199,175,202,201, 48, 76, 68,112,112,176,245,162, 69,139, 30,123,123,123, 95,229,241,120,162,180,180, 52,102,241,226,197,211, -121, 60, 94, 24,199,113,211, 94,197, 78, 71, 71, 71,235,197,139, 23, 63, 14, 14, 14,190, 46, 20, 10,133, 79,158, 60, 97,194,195, -195,167, 55,196, 78, 91, 91,219, 16, 91, 91,219,205, 89, 89, 89,124, 0,112,118,118,238,208,188,121,243,111,171,206,180,172, 40, - 13, 48, 24, 12,165, 26,141,102, 76,126,126,126,141, 66,184, 19,230,109, 24, 0, 0,223,234, 43,222,191,120,173,239, 61, 16,113, -212,148,243, 14,112, 38, 20, 0, 70,127,178,102,240,139,215, 23,235,191, 86, 2,124, 62,159,219,233, 76,104,116,166,233,146, 49, -132,144, 65, 61,123,246, 92, 28, 21, 21,245, 67,143, 30, 61, 62,219,181,107,151, 67,106,106,234,151,132, 16,183, 81,163, 70, 77, - 56,127,254,252,170,220,220,220, 3,166,242,213, 7,145, 80, 44, 38, 12,129,196, 76,106, 97,202,246, 2,134,233,127,117,208,160, - 41, 63, 62,121, 18,240,109,108,172,135,210,217, 57,232,163,143, 62,114, 28, 58,116, 40,227,230,230,134,103,207,158,217,238,218, -181,171,213,143, 63,254, 56,132, 16, 50,147, 82,154,252,202,198,197, 18,107,101, 17,218,106,117, 8,160, 20, 86, 21,171, 9, 65, -145, 88,143,104, 89, 44,121,240, 63,224,108,125,177,125,251,246, 69,207,158, 61,195,170, 85,171, 0,224,187,134,236, 76, 8,153, - 61,100,200,144,208,200,200, 72,201,254,253,251, 37,129,129,129,112,114,114, 2,240, 66, 63,144,150, 11, 83,123,120,120,252, 13, -166,255,239,194,214,214,118,107, 66, 66, 66,136, 76, 38,123,105,125,124,124,188,191,151,151, 87, 49,128, 79, 26,194, 71, 8,105, -106,111,111,191,155,227, 56,109,126,126,254,187, 0, 96,110,110,254,179, 76, 38,179,206,204,204,252,252,239,122,144,169, 64,117, - 95,228,239, 60,214,235,198,159, 10,224,107, 18, 44,173, 58, 49,155, 97,185,206,211,166,190, 79, 70,142, 30,149,245, 44, 62,129, -227, 11, 68,163, 79,157, 62, 45,109,221,186, 53,163,253,238, 59, 24,115,115, 97,152, 53,171,211,185,115,231, 12, 97,163,199,170, - 5, 60,178,221,211,195, 93,186,119,207, 47, 78,145, 7, 15,116, 6, 80,167,163, 69, 8, 17, 57, 57, 57,237,188,112,225,130,139, -135,135, 7,138,138,138,144,148,148, 4,165, 82,137, 17, 35, 70, 8, 58,119,238,236, 50,124,248,240,157,132,144, 46,166, 70,182, - 8, 33,142, 45, 92,249,199,190,254, 98, 68,203,183,251,116,150,185,184, 53, 7,205,210, 32,245,121,108,224,177, 11,215, 63,242, -178, 98,158, 62, 43,166,253, 41,165, 38,137,149, 86, 69, 94, 94,222,220, 33, 67,134, 28, 12, 9, 9,177, 23,139,197, 80, 40, 20, -100,224,192,129, 60,194,242, 46, 0, 0, 32, 0, 73, 68, 65, 84, 57, 25, 25, 25,181,234, 71,153, 96, 47, 0,128, 97, 24,182,234, - 43, 33,175,244, 96,239,106,109,109, 13,107,107,107, 0,112,121, 85,155,202,143,207, 88, 89, 89,125,103,110,110, 62,188,164,164, - 68,205, 48, 12, 37,132, 80,153, 76, 38,177,182,182,190,247, 56,246,169, 66,171,213,182, 88,243,205,143,235,123,118,245,179, 56, -123,246, 44,134, 14, 29, 74,207,156, 57, 51, 21,128, 73,115,234, 8, 33,155,134, 12, 25,162, 90,184,112,161,230, 89,124,146,203, -227,167,241, 68,102, 38,226,236,236,236, 4, 55,111,222,228,175, 91,183,206,108,241,226,197,155, 0, 12,111,128,221,155, 70,141, - 26,165,159, 51,103, 78,230,147,103, 9, 14, 15, 30, 63,163,114, 51,129,209,206,206,150,119,253,250,117,238, 85, 56, 25,134,137, -152, 59,119,110,201,212,169, 83, 11,243, 11,138,157, 10, 75,202,168, 88,192, 51, 56, 57, 57,241, 15, 31, 62,172,221,189,123, 55, - 51,101,202,148, 8, 0, 97,166,114, 2,136, 24, 56,112, 96,105,120,120,120, 81, 92,124,162,211,131, 71, 79, 33, 21, 11, 12,142, -142, 14,188, 91,183,110,233,215,172, 89,195, 44, 95,190,220, 36, 59,101, 50,217,142,125,251,246,241, 15, 31,126,113,239,187,118, -237, 26,227,233,233, 41,173,186,141, 90,163, 5, 67,128,188,188, 60,105,112,112,240, 14, 0,174,213,121, 2,150,196, 98,194, 60, - 96,198,140, 25, 13, 26, 18, 15, 0, 1,206, 31, 33,186, 30,249, 91, 46,162, 21, 29,253,201,154,193,124, 62,159,155, 50,101, 74, - 86,245,207, 53, 26, 13, 1, 48, 48,160, 1,206, 86,191,126,253,230, 31, 63,126,188,249,174, 93,187,214,238,222,189, 91, 7, 0, -102,102,102,118,191,252,242,203,170, 17, 35, 70, 96,196,136, 17, 11, 1,188, 54, 71,139,165,172, 30, 0,196,102, 98,113,108,108, - 44,241,241,241,169,179,184, 85,207,113,183,127,124,242,164,253, 7, 62, 62,129, 5, 28,215, 66,248,246,219,101,179,103,207,206, - 43, 41, 41, 65, 82, 82, 18,244,122, 61, 38, 76,152,192,235,209,163,135, 98,196,136, 17, 27, 8, 33,195, 40,165,250,250,236,224, -241,120,107, 92, 92, 92,222, 43, 46, 46, 46,171,136,234,180,114, 55,231,119,243, 55,138,219,181, 48,136,132, 60,163,112,192, 44, -142,156,249,142, 40,125, 60,240, 59, 0, 8, 85,200, 21, 2,127,217,209,178,116, 35, 30,172, 0,203,237,155, 73,223,204,141, 87, - 45, 42, 75,166,181, 58, 75,132,144, 97, 50,153,108,176, 82,169, 60, 80,254,229,220,178,127,255,254,184,126,253, 58, 0,116, 6, -240, 29, 33,164, 39,195, 48,239,112, 28,183,133, 82, 90,215, 40,183,143, 6, 13, 26,244,102,100,100,164, 57, 0, 28, 56,112, 0, - 6,131, 1,158,158,158, 16, 10,133, 16,137, 68, 16, 8, 4,149,211, 65,254,127, 2,195, 48,226,251,247,239, 67,161, 80,188,180, -158,199,227, 1, 64,183, 87,160, 92, 24, 31, 31, 31,124,231,206, 29,132,132,132, 44,108,219,182,237, 91, 23, 47, 94,116,202,207, -207, 71, 72, 72,200, 6, 0,127,171,163, 5,188,236,139,252,221,199,250,191, 66,229,172,195,242, 19,235, 1, 0,148, 50, 60, 30, -143, 65, 66,124,146, 33, 36,164,215,248,148,148, 20,121, 80, 80, 16, 35, 16, 8,160,140,138,130,230,214, 45,200,229,114, 12, 25, - 50, 68,112,233,210, 37, 11, 11,185,197,228,196,132,196, 82, 30,143, 1,165, 76,189, 53, 15,214,214,214,211, 63,255,252,115, 39, - 47, 47, 47, 24,141,198, 74, 69,115,163,209,136,212,212, 84,200,229,114,140, 27, 55,206, 65, 42,149, 78, 55,229, 36, 8, 33,205, - 90,122, 58, 68, 95, 56,177,233,141,217,211,250,201, 90, 74,207, 66,150, 58, 19,242, 3, 31,160, 85,198, 41,132, 15, 14,146,157, -217,184, 48,160,185,194, 38,154, 16,210,172,126,198,151,161,209,104,126,143,137,137,153,124,241,226, 69, 14, 0,126,251,237, 55, -250,248,241,227,169,127,229, 41,148,227, 56, 20, 21, 21,129,227, 56, 94,249,251,138,215, 87,165,252,203, 32,132, 48, 22, 22, 22, - 17,111,189,245,214,168,228,228,100,201,201,147, 39,109, 83, 82, 82,236, 18, 19, 19,237, 91,182,108,201, 95,181,106,213,113,141, - 86,207, 51,176, 84,103,100, 13,165,153, 15, 31,198, 23,102,103, 71,111,219,182, 77, 77, 8, 25, 98,226, 49,134, 57, 59, 59,219, -206,155, 55, 15, 68, 32,237,224,221,170,173, 23, 79, 32,177,100, 4, 34, 75,181, 90,195, 38, 36, 36,164,206,155, 55,207,221,207, -207, 79, 81,158, 94, 51,137, 83,161, 80,216,205,153, 51, 7,124,177,185,127, 59,191,128,230, 34,177,204,156, 39,144,152, 7, 5, - 5,245,136,143,143,207, 8, 15, 15,119, 14, 12, 12,108, 16,103, 96, 96,160,245,148, 41, 83,140,102, 18,243, 96, 15, 15,207, 86, -237,218,180, 10,109,217,178,229, 96, 62,159,111,204,205,205, 77, 30, 55,110,156,243,128, 1, 3, 28, 27,194,233,224,224, 96, 29, - 30, 30,110,116,107,234,217,183,239,155,125, 58, 10, 37,230,150,124,145,204, 74,165,210,176, 79,158, 60, 73, 94,176, 96,129,179, -191,191,191,131, 41,156, 42,149, 74, 96,103,103, 7, 95, 95, 95,180,246,244, 68,113,113, 49, 34, 35, 35,177,125,251,118,108,217, -178, 5,123,246,236, 65,251, 46,125, 96,110,110,142,140,140, 12,148,148,148, 8, 76,177,243,117,130,139,104, 69,191,213,189, 55, -240,253,247,223,207,152, 50,101, 74,150, 68, 34,225,170, 47, 54, 54, 54,236,152, 49, 99,178,199,125,246,205,192,138,212, 98,109, - 32,132, 12,234,213,171,215,253, 19, 39, 78, 60,223,181,107, 23, 90,183,110,141,190,125,251,138, 0, 96,250,244,233,162, 17, 35, - 70, 96,223,190,125, 56,112,224,192,163,150, 45, 91, 94, 33,132, 12, 50,197,206,113,227,198,117, 9, 11, 11,187, 28, 22, 22,118, -119,228,200,145,155,167, 78,157,250,210, 55, 87,102, 70,218,109,157, 78, 7,191,128, 64,233,178,173, 55,198,212,199,247, 24,216, -181, 57, 54,118,251,234,135, 15,147, 23,182,110,109,213, 52, 49,209,230,167, 53,107,236, 42,134,116, 27, 12, 6,164,166,166,194, -218,218, 26, 99,198,140,177, 19,139,197,245,166,187, 8, 33,235, 6, 13, 26, 52, 49, 37, 37, 69,254,227,143, 63, 58,223,189,123, - 87,145,153,153,233,124,254,220,105,251, 79, 63,153,110,110, 41, 23,137, 50,114, 95, 56,170,137, 25,144,197, 38,160, 11,165,176, -170,154, 78,124, 21, 16, 5,145, 72,221,200,183,205,187, 88, 61,157,179,207,127,100,248,175,254,214,118,110,102,159,215, 97,103, -187,175,190,250,106,255,209,163, 71, 71,119,233,210,229, 32, 33, 68, 82,195, 54,102,237,219,183,143,220,183,111,223,196,174, 93, -187,254, 78, 8,241,173,141,207,213,213,117,200,175,191,254,106, 91,241,222,206,206, 14,102,102,102,127,114,178,132, 66, 33, 24, -198,164,241,189,255, 26,228,230,230,190,211,173, 91,183,253,253,250,245,211,222,185,115, 7,185,185,185,112,113,169,124,214,254, -211, 67,141, 9,176,145, 74,165,112,115,115,131,151,151,215,232, 75,151, 46, 57, 25, 12, 6, 36, 38, 38, 34, 39, 39, 39,250, 53, -154, 94, 43,170,250, 34,255, 36,144,151,231, 28,190, 7,224,120,197,103,149,191,149,229,179,133, 46, 0, 0, 37, 68,121, 63, 38, - 70,192, 19,137,198,254,188,123,183, 88, 40, 20, 34, 57, 57, 25,143, 30, 61,130,234,252,121,168,175, 94, 69,118,118, 54,202,202, -202,224,232,232,136, 77, 91,183,202,116, 44,157,244,228,233, 83, 30,101,254,168, 55,168,173, 35, 65, 44, 22,247, 30, 58,116,104, -173, 14, 89, 70, 70, 6,250,245,235, 39,224,241,120,127,106, 43,173,206, 73, 8, 33, 10,123,114,244,252,193,101,206,206,162, 71, -192,179,217, 64,105, 52, 64,181,128, 81, 7,164, 63, 0,142, 47, 65,211,178, 88,114,122,217,120, 39, 23, 41,255,104, 69, 78,191, - 62, 59,171, 28,195,211,199,199,103,203,216,177, 99, 25, 0,232,217,179, 39,241,241,241,217, 76, 8,241,172,109,159,250, 56, 85, - 42,213,245,194,194, 66,140, 24, 49,194,182,121,243,230,231, 70,140, 24, 97, 91,177,254, 85, 57,203, 97,219,166, 77,155,124,137, - 68,178,135, 16, 82,239, 13,182, 42,167,149,149,213,119,253,250,245, 27,190,123,247,110, 33, 0, 92,184,112, 1, 71,143, 30,197, -195,135, 15, 17, 23, 23,199, 5, 4, 4,216,127,179,101,127,196,119, 63,236, 88, 55,184,179,159,162, 71,135,128, 86,242,178,194, - 50, 71, 71,199,206,148, 82,207,154, 56,107, 64,191, 37, 75,150, 60,122,252, 60,217,146,225, 11,248, 66, 1, 95,108, 97, 33,115, -180, 54,151,185,218, 72,205, 92,196, 12,145,171, 84,170,172, 61,123,246,112, 0,250,153,202,185,108,217,178,132,199,207,146,173, - 8,195,231, 11,248, 2,161, 92, 46,181,122,187,111, 72, 32, 0, 8, 65,133, 37, 37, 37,217,219,183,111,215, 55,132,115,209,162, - 69, 49, 5, 69,101,214,124,129, 64,192,231,243, 42,175,165, 76, 34,177,151,138,197, 34,173, 86,155,190,126,253,122,117, 67, 56, -151, 44, 89,242,232,201,243, 20, 27,134, 16, 30, 33, 12,223,194, 92,102,107,107, 41,181,183,151, 75,236,164,124,158,168,164,164, - 36,125,231,206,157, 38,113,234,245,122, 97,118,118, 54, 30, 63,126, 12,183,192, 64,156, 61,123, 22, 77,154, 52,193,136, 17, 35, - 48,106,212, 40, 72, 36, 18,244, 12,110,139,121,243,230,225,249,243,231,208,235,245,226,154, 56, 43,235,164,170, 65,161, 80,220, -169,227, 92,254,180,111,117, 59, 3,156, 9,253, 86,247,222,192,170, 14, 86,109,252, 54, 54, 54,108, 77,209,174,234,156,253,250, -245,155,127,254,252,249,230, 59,119,238, 28, 56,110,220,184,223,119,238,220,137,142, 29, 59,226,241,227,199,112,119,119,199, 79, - 63,253,132, 81,163, 70,253,190, 97,195,134,129,119,238,220,241,243,240,240,248,147, 67, 80,157,115,228,200,145, 31,250,251,251, - 71,101,101,101, 5, 23, 20, 20,248, 70, 70, 70, 78, 26, 50,100, 72,194,232,209,163,123, 85,108,195, 26, 12,187,143, 31, 57,136, -208,129, 67,225,221,198, 55, 98,194,231,187,218,214,197, 73, 41,165, 15,129,205,219, 51, 51,115,119,107, 52,170, 17, 2,129, 84, -122,227,134,205,129, 31,126,176,171,218,233,157,158,158,142, 1, 3, 6, 8,132, 66, 97,215,186,236, 36,132,124, 53,120,240,224, - 17,145,145,145,214,192,139,168,206,213,171, 87,241,224,193, 3, 36, 37, 37,161,168,168, 8,189,166,150,225,253, 85, 47,184,223, - 95, 69,209,103, 58,149,213,197,105, 10,164, 77,137,147,173, 5,255,202,164,245,222,211,223,139,104,205,151,219, 8,240,243,103, -113,200,126,166,169,140, 22, 86,179,147, 4, 7, 7,239, 10, 11, 11, 35, 58,157, 14, 58,157, 78, 71, 41, 85,215,196,237,226,226, - 98,214,174, 93, 59, 76,157, 58,149,177,176,176,216, 80,155,157, 74,165, 82,123,226,196, 9,140, 27, 55, 14, 51,103,206, 68,139, - 22, 45, 96,109,109, 13,129, 64,128, 29,187,246,218,141,154, 52,173,229, 27, 93,186,249,181,126,163, 99,187, 82, 45, 47, 80, 40, -181,153, 82,253, 30,255, 42,231,110, 10,254, 23, 56,219,182,109,219,229,230,205,155,226,110,221,186, 33, 57, 57, 25, 2, 65,229, -243, 84,101,163,198,171,216,185,100,201, 18,177, 70,163,193,189,123,247, 48,126,252,248,116,189, 94, 63,235,175,216,105, 42,170, -250, 34,255, 36, 80, 74, 55, 87, 91, 42, 51, 4,213, 35, 90, 75, 0,192,192,225,232,216,241,147, 84,199,142, 29,147,138, 68, 34, - 36, 39, 39, 35, 51, 51, 19, 59,182,111,103,123, 58, 56,148,246,117,113, 41,217,177,125, 59,213,233,116,160,148,194,199,199, 7, -195,135, 15,151, 12, 27, 49, 58,135,148,168,247,214,103, 16, 33,196,185, 34,191, 62,105,210,164, 63,125,254,233,167,159,194,194, -194, 2,132, 16, 39, 19,206, 47,236,163, 37,131, 93,173, 61,172,178,105,214,142, 2,240,204, 0,190, 57,192,183, 0,204, 44, 1, -177, 57, 32,146, 66,123, 39,170,128,161,125,147,134,118,125,215, 5, 13, 75,245, 64,161, 80, 44,140,138,138,178,191,115,231, 14, - 45, 41, 41, 65,102,102, 38, 93,185,114,165,189, 66,161, 88, 88,255,222, 53, 35, 35, 35, 99, 89,104,104,104,246,248,241,227, 45, - 79,157, 58,229, 54,126,252,120,203,208,208,208,236,140,140,140,101,175,202, 9, 0, 66,161,144,247,240,225, 67,155,229,203,151, -143, 2,112,219,215,215, 55,223,213,213,245,118,121,209,100,157, 48, 55, 55,175,116,178,128, 23,209, 53, 62,159, 15,129, 64, 0, -133, 66,161, 43, 40, 40, 96,187,190,225, 41,241,177,100, 12, 10,177, 80, 98, 35, 49,115, 53,183,176, 12,202,207,207,191, 79, 8, - 49,105, 62, 33, 33,196,191, 67,135, 14, 2,150, 10,184,247,199,246, 84, 76,159, 24,226,240,253,242, 41, 77,214, 47,123,207,229, -171,197,147,125,150,205, 29, 19,194,112,156,198,221,221,221,169,162,160,189, 62, 48, 12, 19,208,190,125,123, 62, 7, 1, 30, 63, - 77,202, 78, 78, 75, 47,125,179, 71,112,101,228,178,181,127, 64, 95,123,123,251,110, 62, 62, 62,237, 77,213,132,145, 72, 36,254, -222,222,222,124,134, 39, 32,182,214,230,110,230,114,137, 99,197,103, 22, 86, 86,157,108,236,237,195, 24, 74,139,157,157,157, 29, - 36, 18,137,127, 3,206,157,207, 65, 8, 71, 7, 27, 75,123, 59, 43,121,223,144,206, 45,130, 59, 5,183,108, 27,212, 49,184,205, - 27,237,135, 17,163,177,196,211,211,211,161,162, 72,190, 46,104,181, 90,179,221,187,119, 99,249,242,229,104,215,180, 41, 92, 92, - 92,224,224,224,128,171, 87,175,226,230,205,155,176,182,182, 70, 78, 78, 14,214,172, 89,131, 67,135, 14, 65,175,215,155,155, 98, -103, 85,152,226,108,213, 5,163,209,200, 84,119,176,106,227,151, 72, 36, 92, 69,145,124,109, 56,113,226,196,174,138, 72,214,199, - 31,127,220,229,155,111,190,249, 61, 54, 54, 22,114,185, 28, 55,111,222,196,164, 73,147,126,223,176, 97, 67,151,105,211,166, 97, -251,246,237, 72, 72, 72,216, 90, 23,223,200,145, 35, 23, 79,158, 60,121,253,197,139, 23, 25, 71, 71, 71, 88, 91, 91, 99,240,224, -193,216,186,117, 43,223,104, 52,110, 11, 11, 11,187, 27, 22, 22,118,151, 77, 61, 51,127,255,150,149, 87, 99,238,223,197,135, 31, -205, 17,233,140,134,122,135, 94, 82, 74,169, 90, 46, 47, 53,118,235, 86,176,207, 96, 80,141, 20, 10,165,150,119,239,218, 28,221, -182,173,210,217,154, 55,111, 30, 44, 45, 45,129, 23, 5,204,181,194,213,213,245,189, 67,135, 14, 85,222, 15,109,109,109, 33, 18, -137, 32, 20, 10, 33, 16, 8,192,227,241,112, 46, 66,134, 31,230,189,240, 47,126,152, 71,112,230, 59,242,151,102,179,202, 92,137, -175,181,163,232,238, 7, 63,181,241,243,237,101,139,171,191,100, 97,101,232,157,180,155,251,114,103,107,114,106, 29,165,244,198, -167,159,126,218, 58, 39, 39, 7,183,110,221,194,173, 91,183,150,215,180, 17,165, 84,115,228,200,145, 47,203,202,202,224,225,225, -129, 65,131, 6,117, 35,132, 4,214,180, 45, 33, 4,237,219,183,199,128, 1, 3, 16, 18, 18,130,118,237,218, 65,167, 55, 10,194, -198,190,231,253, 48, 33,215,101,229,154,149,210,168,223, 34,153,223,127,191,200,219,117,240,140,101,112, 72,159,245, 66,115,231, -235, 68,106,231,252, 87,206,255,159, 0, 51, 51,179,111, 46, 94,188,232,164,215,235, 17, 19, 19,131,153, 51,103,254,213,153,161, -149, 1, 16, 55, 55, 55, 92,184,112, 1, 99,198,140,209,100,103,103, 55,104,190,233, 95, 65, 85, 95,228,223, 2, 62,240,231, 73, -217, 41, 41, 41, 69, 54, 54, 54, 46,222,222,222,140, 78,167,123,145,146, 56,112,128,221,178,109,219,113,141, 70,243, 17, 0,225, -119,223,127, 31,225,226,234, 26, 50,118,220, 56, 98, 48, 24, 16, 26, 26, 42, 58,118,236,152,237,243,236,236,122, 7, 34, 87,127, -218,152, 48, 97, 2,190,249,230, 27, 0,192,140, 25, 51, 0,188, 8,173,215,244, 84, 82, 29,114, 75,244,235,219,191,189, 69,170, -236, 91, 11,125, 39, 67, 89,179,231,230,215,101,101,146,246, 96, 68,124,152,241,192,233, 13,198,184,156, 33,183,159,199,181,106, - 45, 41,200,119,239,221,166, 59,182,156,221,217, 15,192, 62, 83, 47,146, 84, 42,237, 32,151,203,113,251,246,237,130,246,237,219, - 23, 81, 74, 45,151, 45, 91,102, 39,149, 74, 59,152,202, 81, 29,148,210, 68, 66, 72,183,206,157, 59, 79,103, 24,166, 55,199,113, -231,178,179,179,191,163,148, 38,154,178, 63, 33,228,125, 0,139, 80,165, 14, 69,167,211,129, 97, 24, 80, 74, 49,114,228, 72,204, -155, 55,175,245,131, 7, 15, 16, 21, 21,101,211,187,119,239,235,132,144, 34, 0,239, 82, 74,107,140,154,149,148,148,168,111,222, -188, 41,137,138,138, 2,199,113,176,177,177,129,133,133, 5,196, 98, 49, 6, 15, 30, 44, 15, 15, 15,239,117,250,244,233,156,146, -102, 77,120,102,153,233, 74,177, 92,110, 14, 39,151,174,211, 70,191, 19, 75, 41,173,183, 19,171, 2,102,102,102, 34, 9,223,168, - 33,172,150,249,234,139, 13,140, 84, 40, 36,102, 66, 62,196,156, 10,243,191, 92, 65,132,148,229,163,129,249,121,161, 80, 40, 52, - 23, 67,199, 19,241, 12, 82,130,215, 34, 14,199,227,241, 68,102, 66,104,107,251, 92,192, 48, 12,195, 48, 66, 0, 70, 83, 57,197, - 98,177,208, 92, 76,107,229,148,240, 8,143, 16, 34,194,139,238,172, 63, 33,192,153,208, 42, 81,164, 74, 30,142,227,208,181,107, - 87, 28,143,186,141, 3, 71,207, 33, 47,249, 62, 22,124,246, 49, 2, 3, 3,113,236,216,177, 58,109,170,168,209,170, 9, 25, 25, - 25, 80, 40, 20,119, 50, 50, 50,106,108,176, 8, 88, 18, 91, 99,141, 22, 23,209,138,142,251,236,155,129, 53, 69,169,106,228,255, -194,242, 5, 87, 29, 53, 90,132,144, 65, 93,187,118,253,112,247,238,221,186,183,222,122, 75, 52,114,228, 72,248,250,250,118,153, - 56,113, 34, 0,160,119,239,222,248,230,155,111,186, 76,156, 56, 17,123,247,238, 69,100,100,164,182, 71,143, 30,159, 17, 66,210, - 41,165, 39,106,226,228, 56,110,192,166, 77,155, 94, 90,167,215,235, 97, 52, 26, 97, 48, 24,156,141, 70,163,115,249,189, 8,235, -215,111,200, 59,115,250, 24, 62,251,124, 9, 28,236,157, 76,114,174,121, 60, 30,153, 48,103, 78,222, 79,107,214, 96,205,222,189, -152,227,238, 46,221,249,232, 17,206,104, 52,216, 23, 21,149, 87,126,156,122,107, 51,149, 74,165,250,196,137, 19, 22,251,246,237, -131,149,149, 21, 90,180,104, 1, 27, 27, 27, 8, 4, 2, 48, 60, 9,120, 66,107,120,183,233, 0,224, 38, 0,192, 93, 1,165,143, - 7,126, 39, 4, 69,148,169,253,119,184, 54,152, 53, 37,205, 28,155,154, 93,252,112,187,175,149,133,131, 16,167,190, 75,193,233, -111, 83, 15,105,242,176, 22, 70, 60,169,163, 89,163,189,135,135, 7,114,114,114,112,226,196, 9, 37,128,175,107, 59, 6,199,113, - 95,126,255,253,247,159,126,254,249,231, 98, 31, 31, 31, 0,240, 7,112,171,166,109,101, 50, 25, 92, 92, 92, 42, 29,203,145,227, -167,121, 78,157, 61, 77, 50,164, 79, 8,248,124, 59, 20, 41, 13,200, 47, 53,192,218, 78,142,207,102,135,153,157,107,239, 18,184, -105,195,207, 71, 8, 33,129,244,239, 20,139,252, 47,195,214,214,214, 63, 63, 63, 31,137,137,137, 24, 63,126,124,122, 94, 94,222, - 89,165, 82, 57, 41, 35, 35, 3, 0, 10, 94,129,178,210,153,247,247,247, 71,135, 14, 29, 48, 98,196, 8, 51,149, 74, 21,230,233, -233,233, 2,160,211,235,178,189, 38, 84,247, 69,254, 45,168, 85,222, 65,108, 48,120,107, 35, 34,160, 60,119, 14,162, 51,103,176, - 79,161, 40,211,104, 52,159, 80, 74, 83, 1,128, 16,242,241,246,159,126,186, 50,240,218, 53, 11, 93,108, 44, 60, 31, 60,128,192, -202,202,164,155, 79, 85,108,219,182, 13, 37, 37, 37, 40, 46, 46, 6, 0,124,251,237,183, 40, 41, 41, 65, 69, 45, 67,189, 39, 32, - 68, 23, 39, 7,119,100, 33, 14, 28,159,145, 39,121,171, 58,202, 53,230, 25, 46, 41,142,202, 98,198, 5,177,201, 65, 50,117,190, -174, 35,225,233,160,201, 83,193,165,115, 11,240,193,239,210, 16, 27, 43,242,254,124, 62,191,224,233,211,167, 3, 90,182,108,121, - 20,128,221, 95,173, 7,160,148, 62, 3,240,209,171,236,203,227,241, 22, 37, 36, 36, 56,108,221,186,117,250,178,101,203, 40,240, -135,163, 85,241, 51,159,207, 7,165, 20,150,150,150, 16, 8, 4,142, 87,175, 94,117, 12, 10, 10,218,136, 23, 55,180, 63,129, 97, - 24,234,235,235,139,132,132, 4,240,249,124, 88, 90, 90,130, 51,234,177,100,246, 52,176, 60, 49,127,238,220,185,254, 67,135, 14, -141,217,186,117,171,193, 34,184,115,167,252,252,252,135, 31,142, 25, 27,115,248,240, 97, 29,199,113,155,106,226,172,225,156,239, -198,197,197,241, 92, 21,142, 60,106, 84,113, 50, 33, 96,118,127, 61, 21,201,157, 96,198,231, 81, 33, 97, 32, 54,147, 88, 38,166, -165,229,115, 28,247,216, 20, 78,142,227,162, 19, 18, 18, 36,142, 14,182,124,149, 90, 87, 38, 17, 80, 81, 82,244,237,248,102, 1, -237, 61, 1, 64, 19,125,243,130,216,187,149, 36, 41, 59, 87,230,238,238,110, 18,167, 90,173,190,155,158,158,206,115,116,116,228, - 39,167,166, 29,177,146,203,236, 45,172,172, 58, 2,128,190,180,248, 38,163,213,230,242, 4,124,199,220,252,252, 2,181, 90,157, - 96,234,185, 63,127,254,156,239,236,236,192, 59,117,230,252, 81, 71,169,216,193, 92,196,183, 16, 19, 66,164, 60, 82, 34, 52,114, -121,102, 82,169, 67, 98, 90, 90, 1,165,180,214, 8,225,234,162,177, 67, 0,128, 97,150,236,173,194,141,251,247,239,227,228,239, -143, 33,163, 58, 16, 77, 49,206,108,255, 17, 99,230,126,254,151,235,254,234,115,182,106, 67,157,209,172, 77,173, 42, 35, 89,229, -252,200,168,167, 16,126,204,152, 49, 75,118,237,218, 85, 89,128,242,248,241, 99,244,236,217, 19, 0,176,100,201, 18,244,237,219, - 23, 65, 65, 65,120,252,248, 49,188,188,188, 16, 21, 21, 37,230,241,120,226,177, 99,199,174, 4, 80,163,163, 85, 21,155, 55,111, -198,164, 73,147,106, 42,172,126, 14, 64, 67,172,125,202,230,173,222, 97, 87,144,159,135,156,220,172,187,245,241, 85,128, 16,130, - 9,115,230,228,109,210,233,176,251,198, 13,140,147,201,164, 63, 61,123,134,208,160, 32,180,237,217, 51,207,148,123, 93, 69, 84, - 71,163,209, 64, 32, 16,192,194,194, 2,182,182,182, 16, 10,133,224, 9, 20,224,139,252,192, 8,133, 8,232,234,135, 53,159,200, - 84,227,223,198, 6, 66, 80, 36, 22, 33, 90, 40,173,185, 86,135, 16, 66,100, 77, 48,152, 82,148,168, 82,241, 91,133, 67, 98,213, -140, 88,202, 45, 4,103, 38,111,244,177,178,112, 16,226,228,134,100,156,217,152,118, 80,147,133, 5, 0,158,215,213, 93, 44, 22, -139,219, 90, 89, 89, 33, 53, 53, 21, 41, 41, 41,143,234, 42,240,167,148,170,130,131,131,227,197, 98,113,107,123,123,123, 0,168, -177,101,144, 16, 66, 56,142,171,172,195,218,185,123,191,157,127, 55, 79,179, 55,187,180,198,142,163, 43,240, 65,216, 6, 8,120, - 4, 44,171,199,218,111,250,131,213,150, 33,108,224,123,164,123,111, 47,191,115, 71,117,147, 1,252, 88,239, 5,254,135, 34, 45, - 45,237,163,110,221,186,173, 44, 45, 45, 45, 84, 42,149, 99, 0,192,195,195,163, 41,195, 48, 98, 0,181,102, 71,234,144,133, 16, - 62,120,240, 0,230,230,230, 72, 79,255, 99, 38,125,106,106, 42, 56,142,107,176,195,254,255, 19, 8, 33, 1,148,210,104, 66,136, - 51,128, 80, 84,145,119, 96, 0,224,248,241,227,221,143, 31, 63, 78,143, 31, 63,222,189, 98, 39,142, 82,206, 88, 80, 0,170,125, -113,109, 5, 2, 1, 5, 80,181,163, 73,106,101,101, 69, 4,174,174, 32,226, 23,165, 31,180, 74, 78,248,175,194, 96, 48, 77, 90, -134, 99,193, 3,209,131, 86, 9, 98, 40,205, 8, 86,216,245,194, 71,162,133,200, 18, 89,253,177, 49,165,128,145,130, 5,103,146, - 72, 97, 21, 80,165, 82, 9,163,209,104,221,188,121,243,227, 70,163,209,250, 5,221,127,239, 73,137,101,217,120, 30,143,135,233, -211,167, 3,229,209, 31,157, 78,135,172,172, 44,104,181, 90,232,116, 58, 36, 36, 36,160,184,184, 24, 58,157, 14, 15, 31, 62,132, -135,135, 7,120, 60, 94,173,225,116, 66, 8,165,148,194,205,205, 13,205,154, 53, 3,143, 80,108,249,106, 49,230,207,156,134, 81, - 30, 28,182,125,183, 22, 61,122,244,104,229,238,238, 30,204,231,243, 89, 39, 39, 39, 97,100,100,228, 17,150,101, 7, 55, 64, 71, -235,196,188,121,243,154,181,105,211,198,193,202,194,220, 32, 22,241, 32, 50, 40,169, 88,155, 79,249,170, 60,184,185, 53, 53, 66, - 34,245, 26, 55,110, 28, 11, 19,190, 28, 43, 56, 63,249,228, 19,103, 31, 31, 31, 75,107, 43,115,165, 72,192,203, 17,130,230, 21, -223,191,117, 29, 0, 68,246, 14, 26,152, 73, 91,143, 31, 63,222,216, 16,206,133, 11, 23,122,216,219,219, 91, 49,160,165,172, 94, -255, 71,190, 93,171,203, 39, 2,129, 26, 66, 81,251, 25, 51,102,144,134,112,126,250,233,167,238,173, 91,183,182,178,178,144,149, -241, 5,188, 76, 33,199,101,154,129,203, 18,232,244,133,102,246,118, 42, 72,229, 1,227,198,141,171,149,179, 34,154, 21, 30, 30, -158, 90,117, 61,143,199, 67, 65, 65, 1, 52, 89, 49, 16,166,199,194, 79, 46, 64,160,189, 53,196, 98,113,101,235,123,109,191,174, -181,213,104, 85, 69,133,179,101,234,190,237,151,214,145, 2,220,212,234, 78,117,221,172,114,254, 58,255,158,126,254,249,231,207, - 67, 66, 66,114,250,246,237,171, 59,126,252, 56, 8, 33,136,138,138, 66,122,122, 58,250,246,237, 11, 74,105, 69, 87, 27,238,222, -189,139,222,189,123,235,186,117,235,150,254,243,207, 63, 47,170,247, 4,241,162,140,193, 96, 48,160,172,172, 12, 5, 5, 5, 56, -118,236, 24,252,252,252,168, 84, 42, 29,202,115,235,179, 34,108,242,231,157,124,219,249, 99,227,134, 53, 58, 17, 95,176,218, 20, -206, 10, 16, 66, 48,254,147, 79,242,138, 3, 2, 10,118, 42,149,170, 9, 22, 22,210,230,169,169, 54,183, 79,159,182,211,235,235, -109, 54, 4,240, 71, 84,199,213,213,181,210,201, 18, 10,133,224,139,236,193,147,181,133,200,182, 47,164, 78, 67,241, 91,180, 88, -107, 41,195, 33,115, 57, 78,201,172, 80,171,180,131,212, 13, 43, 58,141,116,142,236, 60,202,249,188,180, 9,182, 18, 66, 24, 66, - 8, 67,249, 36,114,226,218,150,205,237,155, 73,112,109,127, 22,206,108, 76,251, 85,147,133,197, 0,158,213,247,119,174,215,235, - 53, 44,203,130, 97, 24,240,249,252,170, 53,162, 87,126,253,245, 87,220,190,125, 27, 0, 42,101,123, 74, 75, 75, 89, 30,143, 7, - 51, 51, 51, 0,144,215,198,203,178, 44, 4, 2, 1, 4, 2, 1, 46, 92,191,100, 59,106, 88,127,114,245,222, 89,116,246, 27,141, -252, 50, 61,178,139,245, 40, 82, 1,109, 2, 23,192,183,247, 33,220, 79, 40,133,127, 59, 95, 30, 79, 36, 27,111,210,197,253, 31, - 5, 33,164,169,131,131,195, 85, 59, 59,187, 40, 66, 72, 83, 66, 72, 83, 11, 11,139, 43, 10,133, 34,150, 16, 50,136, 82,122, 56, - 35, 35,195,167,172,172,172, 51,165, 52,153, 82,154,156,151,151,215, 51, 39, 39,167, 83, 93,205, 90,182,182,182, 91, 75, 74, 74, - 62,102, 89,118, 96,249,242, 54,203,178,254,113,113,113,173,253,253,253, 31,121,122,122,222,245,244,244, 60,233,233,233,121,196, -211,211,243, 72, 72, 72,200, 55, 21,114, 15,127, 39,106,242, 69,254, 65,168, 40,117, 9, 45,151,122, 8,173,248,160, 34, 36,115, -161,122, 1,154, 81, 44,126,104,252,240, 67, 88, 29, 57, 2, 65, 92, 28, 38,142, 31,111, 33,149, 74, 55, 16, 66,222, 32,132,116, -150,203,229, 27, 23, 47, 94,108,110,183,106, 21, 20,151, 46, 33,233,216, 49, 24, 4,130, 26,195,190,245, 65,173, 86,131,207,127, - 17, 92,211,233,116,144,201,100, 96, 89, 22, 64,253, 41, 32,214,136,107,233,217,177, 16,161, 25, 56,208,178, 83, 37,221,110,140, -142, 95,224,112,172,196,195,235,153, 82,232,181,212,190,163,195,134,166, 93,110, 40, 9,191, 76,100,101,134,148,148, 84,176,224, - 26,148,111,214,104, 52,197, 74,165, 18,254,254,254,182,183,111,223,110,238,231,231,103, 83,190,254,230, 43,156,110, 37, 8, 33, -193, 46, 46, 46,251, 93, 93, 93, 19, 93, 92, 92,246, 19, 66,130, 27,176,251,214,203,151, 47,131,199,227, 97,241,226,197, 40, 45, - 45,133, 94,175, 71,126,126, 62, 82, 82, 82,160,211,233,144,150,150,134, 39, 79,158, 64,167,211, 33, 41, 41, 9, 90,109,253, 15, - 36, 28,199,193,194,194, 2, 26,117, 25,126, 88, 49, 31, 11,195,103,163,248,249, 29,164,101,100,195,202, 82,134,143, 62,250,136, -103,109,109,205,177, 44,219,204,104, 52,246,102, 89, 54,194, 84,135,179, 92,180,240,119, 55, 55, 55,223,175,190,250,170,245,252, - 21, 17, 66, 11,126, 25, 21,155,155,113, 34,115, 49, 21,181,234,136, 73, 11, 54, 8,215,175,251,250,233,181,107,215,210, 77, 17, -239,172,224, 12, 8, 8,104,153,158,158,238,231,227,227,227,109,215,212, 93, 44,118,118, 41, 18, 58, 55, 41,161, 90,205, 13,226, -210,164,107, 68, 68, 68,204,149, 43, 87, 50, 26,194, 41,147,201, 90,237,216,177,195,215,209,209,209, 87, 32,145,152,169,138,139, -247, 25, 85,202,253, 60, 43,107, 51,198,194,234,237, 67,135, 14,221, 57,120,240, 96, 86, 67, 56,189,188,188,124, 86,172, 88,209, -166,109,219,182,109,156, 60,154,139, 37, 46,110,249,102,174, 77,243, 37,109,253,196,112,109,246,214,198,141, 27,239, 94,187,118, -205, 36, 78, 30,143,103,100, 24, 6, 2,129, 0, 82,169, 20,167, 78,157,194,135,147, 71,195,205,197, 22,222, 62, 62,232,245,193, -199, 56,120,240, 96,101, 13, 15,143,199,171,245, 27,253,167, 85, 31, 29, 13,112, 38,119,176,169,213, 29,108,106,117, 39,192,153, -252,201,169,170,116,182,202, 63,175,105, 27, 83, 80, 91, 29, 86,125,206, 22,165,244,196,133, 11, 23,190,156, 48, 97,130,168, 95, -191,126,184,113,227, 6, 38, 77,154,244,123,100,100, 36, 0,224,198,141, 27,152, 53,107,214,239,231,207,159,199,180,105,211,208, -179,103, 79,209,229,203,151, 55,154,162,253, 99, 52, 26,177,109,219, 54, 24,141, 70,200,229,114,216,216,216,160,127,255,254,136, -137,137,153,182,125,251,246, 88,158, 64,240, 78,232,192, 97, 56,126, 36, 18, 79, 30,198, 76,251,105,229,216, 6,139, 2, 51, 12, -131,126,227,199,231,229,181,105, 83,240, 83, 73,137,234, 93,107,107,169, 79, 86,150,205,111,251,247,219,213,183, 47, 33,132,176, - 44, 91,233, 92, 85, 56, 29, 21, 11, 95,100, 15,190,204, 23,124,243, 64,220,127, 38, 52, 8, 58,208,104, 97,123,250,184, 46,253, - 44,129,136,153, 52,116,190, 7,134,206,247,192,160,185,238, 19,165, 77,176, 69,214, 4,239,247,155,217, 44,196, 51,208, 18, 37, - 57,122, 28, 91,155,148,172,201,199, 42, 0, 79, 76,249, 59,231, 56,238, 81,122,122, 58, 68, 34, 17,154, 52,105,210,146, 16, 82, - 81, 23,184,117,202,148, 41, 51,150, 46, 93, 58, 27,192,210,242,115,146,135,132,132,180, 41, 43, 43, 67, 92, 92, 28, 0,220,174, -141,151, 82, 90,217,101, 88, 80,146, 36,118, 87,180,133, 95,171,169,176,182,110,135,244, 2, 29, 50, 10,116,216,242,195, 96,220, -185,188, 28,183,207,140, 67,114, 86, 22, 36, 78, 67,192, 26,181,181,118, 51,254, 67,176, 48, 62, 62, 62,120,255,254,253, 33, 0, - 22,182,109,219,246, 90, 74, 74, 74,167, 75,151, 46,121,187,186,186,110,168,119,239, 90, 80, 33, 11,145,148,148,244,210, 82, 46, - 11,161,163,148, 6, 80, 74,251, 81, 74, 7,149, 47,179,254,146,214,155,233,248,147, 47,242, 15,194,241,234,221,134, 21,168, 94, - 12, 15, 0,104,110, 99, 99,110, 48,232,211,206,158, 61,171,103, 24, 6, 82,169, 20, 19, 38, 77, 98,126,248,254,251,174,163,131, -131,163,222,123,243,205,147, 81,231,207, 7, 4, 5, 5,129, 82, 10,134, 97,176,119,239, 94,181, 70,163,206,111,210,164,137, 85, -245,131, 84, 71,213,218, 43, 74, 41, 74, 74, 74, 42, 29,173,226,226, 98, 56, 58, 58,154,156, 58, 84,150,224,220,249, 83,119, 10, - 41,251, 65, 74,191,103,235,244,171,179, 6, 7, 21,113, 44,191,152, 53,160, 88, 77, 81,170, 1,255, 6, 99, 19, 52,193,107,136, - 62,161,119,208,147,139,177, 87,243, 53,172,166, 65,221, 18, 57, 57, 57,243,195,194,194,242,157,157,157,137,133,133, 5, 92, 92, - 92,152, 65,131, 6,229,165,166,166, 46,109, 8, 79, 85,216,217,217,141, 10, 9, 9, 57,154,158,158, 62,252,226,197,139,205, 46, - 93,186, 52, 60, 36, 36,228,168,157,157,221, 40, 19, 41,246,125,254,249,231, 74,145, 72,132,142, 29, 59,162,180,180, 20,229, 93, - 62,117, 46,117,161, 34,237, 40, 20, 10,177,233,171, 69, 88, 24, 62, 27, 5,177, 55,112,255,247,179,184,144, 69,176, 96,197,215, - 16, 10,133,175,164,245,229,229, 32,107,219, 86, 97,254,120,214,164,145, 25,243,194,195,205,239,222,189, 43,152, 49,115, 22, 77, -202, 44,128,168,223, 26, 30,186,207,103,238, 41,237, 17,250,118, 47, 44, 94, 56,167, 45,165,180, 30,117, 38,160,181,131,172,173, -175,194,252,209,156,247, 70,199,207,156, 57, 83,178,122,245,106, 77,112,112,176, 58, 59, 59, 91, 34,179,182,241,225, 91, 90,249, - 38,101,102,201,131,131,131, 19, 62,248,224,131,162,134,114, 46, 88,176, 64,122,250,244,105,126, 88, 88,152,177,176,176, 80, 46, -144, 72,252,137,216,172, 67,110, 97,161,229,240,176,176,103,195,135, 15, 87,113, 28, 55,173, 33,156, 95,124,241,133,244,201,147, - 39,252,224,224, 96, 67, 86, 86,150,185,204,214,206,143,103,101, 19,152,152,153,109,209, 33, 40,232,249,140, 25, 51,148,117,217, - 89,213, 73, 49, 55, 55, 79,239,220,185, 51,214,174, 93,139,245,235,215,227,173,183,222, 66,204,195, 24,132,206,152,141,214,239, -207,194,145,171,215,145,158,158,142,101,203,150,193,207,207, 15, 66,161,240, 73,141,164, 83, 31,147,232, 76, 74,162, 51, 41,193, -212,199,164,226,125, 77,155,102,100,100, 64,177,180, 24, 47,109, 95, 3,110,127, 81,115,164, 43,192,153,220,169,171, 14,171, 62, -103,107,248,240,225, 31, 86, 72, 56,188,251,238,187,191,111,216,176,161,203,187,239,190,120,208,238,216,177, 35,150, 47, 95,222, -101,193,130, 5,191,175, 88,177, 2,189,122,245,130,167,167,103,189,141, 47, 44,203,194,104, 52, 98,244,232,209, 48, 26,141,200, -205,205,197,211,167, 79,177,121,243,102, 80, 74,205, 0,192, 89,225,218, 94, 36, 18,225, 94,244, 45,213,194,119,131,126,174,143, -179, 2, 85,239,117, 28,199,161,172,172, 12,195,223,127, 63, 47,173, 69,139,130,136,188, 60,213,100,107,107,169,123,114,178,141, -185, 78,231, 82, 87, 77, 42, 33, 4, 28,199, 85, 58, 86, 21, 14, 87,245,165,252,139,210, 36,232, 85,220,137, 75,187, 50, 0, 0, -221,198, 42, 48,104,174,251, 68,103, 47,233,183, 93,199,188, 8,122, 31, 92, 30, 79, 75, 51,216,213, 48,224, 81, 3, 34,214, 55, -110,220,184, 1, 43, 43, 43,132,133,133,137, 25,134, 89, 5,188, 40,126,167,148,126, 71, 41, 93, 87,193, 37, 22,139,215,140, 27, - 55,142, 41, 42, 42,194,253,251,247, 1,224,124, 77,132, 21,117,167, 21,231, 94, 86, 64,192,114, 34, 92,137, 62,133, 51,151, 14, - 32, 49, 61, 23,201, 57, 26,128,111, 9,141, 50, 13,122,117, 58,116, 69,209, 40,209, 74,107,162,251,167,225,111,145, 91,248, 27, -100, 33, 94, 27,170,250, 34,255, 36, 80, 74, 51,171,118, 27, 86, 21, 48,173, 73,176, 20,212, 66, 50,242,192,198, 31, 44,195, 70, -143, 85,250,249,249, 89,187,184,184,128, 16,130,193, 67,134,144,144,139, 23,205, 5, 10, 5,108,223,120,163, 50, 29,113,238,236, - 89,156, 58,117, 74,121,252,215, 67, 46,147, 38, 79, 30, 0, 96, 71,109,198, 16, 66,248,205,155, 55,175, 60,110,102,102, 38,196, - 98,113,101, 77, 68, 73, 73, 9,236,237,237,145,153,153, 89,107,170,163, 26,118,206, 11,191, 30,158, 19, 52,223, 35,200, 92, 64, - 78, 42,179,192, 82, 10, 1, 97, 1, 53,133,129, 5,180, 6,138,246,238, 60,155, 51,106,163,245,177, 27,145, 9, 0,118, 54,228, - 2,106, 52,154,223, 8, 33, 83, 57,142, 59, 0,128,185,120,241, 34,247,232,209,163, 15, 77, 45, 92,175, 9, 82,169,116,110, 84, - 84,148,205,220,185,115, 11,143, 29, 59, 86,220,191,127,127,203,205,155, 55,219,244,236,217,115, 46,128, 95,234,219,159, 82,170, - 38,132,236, 72, 77, 77,253, 48, 48, 48, 16, 5, 5, 5,208,235,245,184,115,231, 14,188,188,188,112,251,246,109,180,108,217, 18, -183,110,221,130,183,183, 55, 88,150,133, 70,163, 1,199,113,181,166,119, 43,110,230, 5,121,185, 64,126, 10, 50,110,156,196,211, - 7,119, 16,149, 65,240,221, 47, 71,209,164,153,199, 43,233,212,120, 59,202,218,184, 56,216,158, 89,189,228, 11,135,164,223,246, - 34,114,219,119,220,133,147, 39, 91,139,204, 49,181,251,232,143,135,233, 12,104, 10, 64,212, 41, 40, 16,253,172,159,176,210,102, -200, 58,255,176,110, 37,107,111, 71, 89, 27,133,189,237,233,255, 80,210,133,222, 0, 0, 32, 0, 73, 68, 65, 84,172, 90,106,254, -252,212, 79,216,183,105, 45, 61,184,107,143,159, 6, 8,106,211,166, 77, 63,134, 97,172, 0,104,202,235,188, 76, 26,109, 83, 19, -231,185,163, 71, 3, 52, 64,208,225,195,135,251, 73,165, 82, 39, 0, 6,149, 74, 21,255, 87, 56,207, 31, 59, 22, 80, 97, 39, 33, -196, 1,128,158, 82,250,220, 84,206, 10,140, 24, 49, 98,249,172, 89,179,194, 89,150,181,175, 88,103, 48, 24,120,107,214,172,225, -115, 28,199,163,148,234, 25,134,209,159, 62,125,154, 53, 26,141, 25, 26,141,230,125, 83,185,107,194,176, 97,195,112,253,250,245, - 37,120,209,132, 97, 18,212,106,245, 75,117, 90,117,165, 41, 77,225,191,120,241,226,178,119,222,121,103,222, 47,191,252,242,116, -195,134, 13, 3,167, 77,155,134,189,123,247,162, 69,139, 22,184,119,239, 30,230,207,159, 15, 0, 93, 22, 44, 88,112,100,235,214, -173,158, 73, 73, 73,181,117,199, 85,194, 96, 48,192,104, 52, 98,207,158, 61, 24, 60,120, 48,236,237,237,161, 80, 40, 64, 8,249, -109,242,228,201,223, 3, 0,143,240,132, 0,160,213,104,181, 62, 62,129, 38, 71,112, 61, 61, 61, 43,239,117, 89, 89, 89,149,157, -130,125,222,121, 39,111,203,234,213,248, 89,173,198,100,107,107,105,154,171,171,243,145,231,207,223, 35,132,108,174, 45,114, 84, - 17,213,169,207,201, 50, 53,194,172,206,196,231,191,174, 76,116, 2,240, 86,183,177, 10,116, 27,171, 64,224, 32, 7,194,240, 8, - 30,156,201, 71,204,185,130,131,134, 18,252, 70, 27, 48, 46,135, 82,250,200,214,214,246, 72,247,238,221, 7,182,106,213, 10, 83, -166, 76,249, 64, 40, 20, 10, 13, 6,195,204, 10,153, 7, 66,136, 37,195, 48, 75,183,111,223,254,158,141,141, 13, 46, 95,190,140, - 75,151, 46,253, 70, 41, 77,169,229, 58, 2, 64,165,102, 86, 19,183,150,154, 39, 73,101,210,156,244, 43,248,253,242,175,104,225, -247, 49, 36, 78, 3, 96,227,179, 2,250,216,245,208,229,159,129,141, 91,127,164, 37, 61, 7,143, 47,142, 49,213,246,255,117, 84, -200, 45,196,196,196,212, 40,183,208, 80,180,109,219,182,203,165, 75,151,196, 26,141, 6, 23, 46, 92, 64,135, 14,149,189, 93,255, -213,249,157, 85,125,145,127, 18, 72, 29, 67,165,107,252,214, 36, 28, 17,120,183,108,201, 10, 25,108, 31, 60, 96,128,234,238,221, -187,149, 79,125,154,155, 55,161, 60,117, 10, 44,203,130, 82,138, 75, 23, 47, 98,220,216,177,101, 2, 30,217,226,238,222,140, 18, -250,135,118, 75, 77,173,244, 66,161, 48, 44, 44, 44,172,242,230,147,154,154, 10,153, 76, 6,145, 72, 4,142,227, 96, 52, 26,193, -227,241, 96,105,105, 9,163,209,248,167, 16, 76,117, 78, 74,169,129, 45, 80, 14,223, 26, 58, 38, 83, 81,166,167, 83,173,220,209, - 84, 40,169,252,227,116,178, 32, 24,232, 39,128, 29, 63,135,158, 95,243,102, 6,167,205, 31, 78,171,205, 22,171,175,229,159, 16, -210,178, 93,187,118,223,143, 27, 55,142, 1,128,222,189,123, 51,237,218,181,251,150, 16, 82,235,168,156,250, 56,205,204,204,196, - 0,112,244,232,209,130,167, 79,159,190,117,244,232,209,130,170,235, 77,228,220,252,213, 87, 95, 65, 42,149,194,104, 52, 66,167, -211, 85,214,103, 85,125,213,235,245,176,179,179,195,241,227,199,193,178,236,241,122, 56,225,214,180, 25,136,125,115,236, 56, 26, -133, 75,121,194, 6, 59, 89, 85, 57, 91, 56,203,189,157,236,108,207,254,103,229, 50,251,194,103,119,144,150,150, 70, 79,159, 58, -126, 77, 77,105,122, 81, 9, 93, 88, 88, 70,189, 85, 90,106,214,193, 19, 41,103, 55,125, 70, 23,116,131, 1, 53,116, 13, 86,229, -108,227, 44,247,118,177,183, 61,253,245,127, 86,154, 23, 61,187,131,204,172, 44,156, 56,126,244,174,154,210,116, 74,233, 65, 74, -233, 68,150,101,125, 89,150,245,165,148, 78,172,205,121,105, 40,167, 82,169,108,171, 84, 42,219,190, 78, 78,142,227,218,114, 28, -103, 50,103, 85, 71,101,221,186,117,177,153,153,153,227,114,114,114,250, 86, 44,133,133,133,189,203,202,202,122,168, 84,170,174, -234,117,205, 44,149, 74,165, 67,105,105,169,179, 90,173,110, 79, 41,189, 83, 19,103,125,168,170, 58,157,145,145,177, 56, 35, 35, -163,198,200, 75, 85, 78,102,218, 99,178,251,235, 57,191,110,218,180,169,222, 22,251,186,248,171,219,153,155,155,123, 96,207,158, - 61,254, 30, 30, 30,158, 19, 39, 78, 68, 68, 68, 4, 54,108,216,160, 5,128,173, 91,183,106,171, 68,178,220, 18, 19, 19, 3,107, - 74, 27,190,100, 39,195,236,236,211,167, 15,189,116,233, 18, 6, 15, 30, 92, 41, 36,250,227,143, 63,194,104, 52,150,244,234,213, -139, 3, 0,181, 70, 85, 66, 57, 10,157,190,230,252,123, 77,215, 83, 36, 18,189, 93, 85, 47,176, 66,140, 89, 36, 18,129, 82, 10, -239, 46, 93,242,138,252,252, 10,182, 21, 23,171, 22,183,109,107,241,158,143,207,196, 86,192,216,154, 56, 9, 33, 47, 69,117,170, - 47,166, 70,178,170,114, 82, 74,115,212, 25,152,242,235,202,196, 83, 21,145, 45, 51, 57, 31,154, 82, 35, 14,173, 78,204,213,228, -226, 71, 0, 53, 58, 63,117,157,123, 65, 65,193,140,213,171, 87,107,173,173,173, 49,108,216, 48,172, 88,177, 98,114,151, 46, 93, -138, 29, 29, 29,175,123,121,121, 61, 24, 57,114,100,230,157, 59,119,102,132,132,132, 32, 46, 46, 14, 95,127,253,117, 81, 97, 97, -225,152,186, 56, 9, 33,149,145,188, 65,161,189, 11,126,248,118, 45,215,171,251,135,144, 74, 44, 96, 16,184,161,160,204,128, 66, - 37,133, 78, 28, 4,145, 80,140,190,193,109,112,253,244, 79, 42, 86,167,220, 81, 27,231,235,192,255, 1,231,107,145, 91,168,110, -231,235,144,133,248, 59,206,253,159,140, 26,116,180, 94,142,104, 85,180, 84, 86,188, 18,194,177, 44,203,193,221,195,221, 60, 41, - 49,229,187, 17, 35,194,222,237,215, 47, 84, 26, 26, 26,106,214, 38,246, 69,234,226,232,209,163,136,140,140, 84,157, 57,115,166, - 68, 44,224,109,117,107,226,230,200,178, 28, 8,169, 61, 98, 2, 0,230,230,230, 51, 63,255,252,115, 73,113,113, 49, 54,108,216, -192,249,251,251, 51, 50,153, 12,122,189, 30, 91,183,110, 53,180,105,211, 70,192, 48, 12,138,139,139,193, 48, 76,205,169,142, 63, -159,224,125, 66, 72,223,239, 67,134, 70, 6, 78,159,100,219, 58,164,147,117, 15, 55, 23, 24,222,160,200, 72, 77,196,211,243,103, - 10, 31,158,254, 38, 31,154,236,161,148, 82,147,135, 94, 87, 64,161, 80, 44, 58,115,230,140,195,140, 25, 51,168, 70,163, 33, 41, - 41, 41,116,229,202,149, 14, 83,166, 76, 89, 4,192,212, 84, 95,117,144,162,162, 34, 16, 66, 56, 0,149,175,104,128,172, 1,165, - 52,134, 16,114,120,200,144, 33,131,122,245,234,133,216,216,216,202, 20, 97, 85, 71,171,162,251,112,213,170, 85, 69, 0,106,105, -228,255, 3, 2,129, 0, 27,118, 28, 64, 81, 97, 30, 28, 29, 21, 48,147, 72, 94, 89,113, 89,196, 48,139,191, 92,246,133, 67,222, -227,235, 36,230, 90, 20,183,255,126,118,142,145,165, 53, 43,254,151,102, 80, 0, 96,234,171,205, 99,120,139,191, 92,185,212,178, - 34,173,249, 75,116,102, 9, 97,233,140, 87, 50,240,159,198,249,127, 12,133, 66,129,140,140, 12,162, 80, 40,104, 69, 90,175, 54, - 71,171, 58, 8, 0,142,227, 42,183,173, 41,109,248,170,252, 9, 9, 9, 43,223,120,227,141, 57,113,113,113,251, 91,183,110, 61, - 13, 64, 19,173, 86, 91,180, 96,193,130,255,108,221,186,245, 93, 83, 34, 89, 0,176,119,239,222,111, 38, 77,154,116,106,192,128, - 1,159,113, 28,215,174,210,118, 66, 18, 28, 28, 28, 42, 83,184,185,217, 89,225, 83,223, 29, 29, 94, 86, 86,104,178,206,157, 92, - 46,127,111,193,130, 5,102, 74,165, 18, 27, 55,110,228,218,180,105,195, 84, 60, 20,237,218,181,203,216,178,101, 75,126,216,135, - 31,230,173,203,202,194,242,203,151,149,225,190,190,254,219,158, 62,109,143, 26, 34,238, 21, 15,142, 53, 69,178, 42,202, 46, 94, - 5,148,210, 12, 66,200,148, 95, 87, 38,254, 8,224,173, 78, 35,156,112,248,171, 68, 20, 38,233,254, 3, 35,158,215,213, 53, 88, - 7,103, 26, 33,164,111,118,118,246,225, 47,190,248,194,178,125,251,246,240,245,245, 21,200,229,242,160, 10,185,152,226,226, 98, -156, 59,119, 14, 17, 17, 17,186,135, 15, 31, 14,161,148,214,154,174, 98, 89, 54,167,101,203, 23,207,180,132, 16, 74, 8,201, 47, -209, 18,203,125,173,130,228, 19,167,238, 39,191,223,186,138, 12, 61, 7,173,129,131,187, 71, 0,122,188,181, 14, 71, 78, 62, 96, - 51,146, 30, 61, 50,168, 11,183,188,242,197,249,223,192,223, 34,183,240, 55,200, 66,188, 22, 84,247, 69,254, 45,168,241, 47,148, -227, 49, 87, 34, 54,253,240,246,222, 61,191, 56,241,120,140,211,243,248,248, 91, 3,135, 14, 79, 63,123,246,172,141,208,210,178, - 3, 0, 78, 55,109,218, 53,189, 86, 93,112,236,240,225,166,238,238,205,252,202,135, 74, 83,142,199, 92,169,235,128,101,101,101, -202,203,151, 47,171,230,205,155, 71, 82, 83, 83,119, 59, 58, 58,142, 60,121,242,164,124,232,208,161,234,216,216,216,131, 78, 78, - 78,131, 66, 66, 66,204,231,204,153,163, 45, 43, 43, 51,121,240, 40,165,244, 17, 33,164,213,205, 47,214,188,115,243,171, 31,222, - 4,159,215, 25, 90, 1,192, 25,174, 64, 95,122, 22,192,110, 74,169,201,122, 71, 85, 33,147,201,252,164, 82, 41,238,222,189, 91, - 24, 20, 20,164,211,104, 52,194, 21, 43, 86,216,202,100, 50,191, 87,225, 43,183,151, 22, 22, 22,130,227, 56, 62, 0, 82,254, 10, -174,225,189,248,163, 6, 14, 28,120,120,223,190,125,125, 66, 67, 67,225,233,233, 9,131,193,128,150, 45, 91, 66,167,211,193,203, -203, 11, 90,173, 22, 75,150, 44, 65,113,113,241,236, 58,244,111, 64, 8,129,209,104,172, 44,182,117,113,109,250, 66,167,231, 47, -200, 88,200, 4,140,231,147, 99,219,144,147,159,199,237,187,151,157,173,210,179,125,227,114,148, 15,171,111,167, 98,161, 12,153, -248, 81, 58, 0,104, 57,212, 57,113, 94, 38,130,231,211,227, 63, 34, 59, 39, 15,123,163, 51,139,148,122,238,173, 39, 53,112, 54, -200,206,127, 8,103,192,146, 88, 12, 55, 81, 16,164, 54,141, 43, 83, 97,170, 67, 85, 27,162, 51, 41,225, 34, 90, 81,108,218, 86, -163, 70,214, 95,225, 47,143, 84, 29, 6, 0, 66, 72,234,232,209,163,195, 19, 19, 19,151,149,235,101,153, 36, 53, 82,129,109,219, -182,197, 1,248,179,114,114, 21,252,178,102,210, 33, 0, 38,107,197, 1, 64,105,105,169,230,206,157, 59,154, 57,115,230,144,212, -212,212,147, 78, 78, 78,125, 78,157, 58, 37, 29, 58,116,168, 54, 38, 38,230,188, 66,161,232,214,187,119,111,249,137, 27, 55,210, - 85,207,159, 31, 59,150,152,232,106,224,184, 90, 69,207, 8, 33,175,213,201,170, 64,133,179,117,104,121,226,151,135,191, 76,236, -205,105,113, 80, 87,136,107, 0,210,254, 2,231, 37, 66, 72,235,177, 99,199,238,235,223,191,127,167,214,173, 91,163, 73,147, 38, -120,250,244, 41,114,115,115,113,255,254,125, 28, 61,122,244,168, 70,163,169,119,160,118,126,126,254,159,198, 19, 17,137,173,226, -167,141,139,143,222,250,189, 67,203,174,161, 19, 36,190, 10, 14, 58, 61, 69,106,242,115, 44, 89,184, 69,149,153, 28,247, 72,111, -212, 15,249, 23,104,104, 93,138,143,143, 15,224,241,120,175, 85,110,225, 85,101, 33, 26,241,106,168,241,175, 52, 62, 62,245,145, -167,167,219,231,255,143,189,235, 14,143,162,234,187,231,206,204,246,150, 77, 47, 36, 36,180, 16, 58, 38, 84,233,130,130,196,130, - 72,249, 68, 4, 68, 64,196, 87, 17, 5, 81, 64,233, 8,130,160, 34, 10,130, 2, 86,192, 6, 2, 22,192, 68,138, 2,146, 87,165, -132, 78, 32,189,109,122, 54,219,102,238,247, 71,118,150, 77,200,110,118, 3, 8,248,238,121,158,121,118,102,239,204,217, 59,147, -205,206,153, 95,253,250,171,109, 61, 40,101, 88, 74, 72,133, 94,239,191,227,202,149, 43,197,206,251, 53, 15, 8,208, 62, 57,225, -201,145, 68, 32, 18, 66, 4, 94, 96,153,131, 23, 46,164,187,181, 24,153,205,230, 73, 35, 71,142,124, 71,165, 82,205, 54, 24, 12, -255,213,235,245,127,118,236,216,113, 1,165,116,142,209,104,252, 78,171,213, 30,190,251,238,187, 23, 69, 71, 71,175,162,148,186, -204, 66,169, 11,118, 33,181, 9,110, 98,196, 26, 2, 66,200,124, 74,169, 31,199,113, 37,127,255,253,247,231,113,113,113,143, 81, - 74,253, 8, 33, 37, 13,229,172,170,170,250, 79,113,113,113,208,196,137, 19,173,235,214,173,139, 27, 59,118,236,204, 19, 39, 78, - 72,170,170,170, 60,170,176, 46,130, 82,106, 34,132, 60, 60, 98,196,136,245, 18,137,164, 63,195, 48, 68, 16, 4,234, 52, 14, 74, - 41,120,158,223,142,122,174, 11,207,243,153,173, 91,183, 6,112,245, 9,186,174,248, 92,171,213,154,121,205,155, 46, 80,102,230, -167,190,191,239,196,146, 42, 43,165, 54,129, 78, 58,157, 91, 81,103,202,217,145,211,180,173,199,156, 85,194,212,119,126, 60,185, -196,100, 21, 4,155, 64,159,118,197,233, 13,238, 20, 78, 0,152,169,255,228, 27,172,253,196, 17, 24, 47,186, 19,107,111,223, 72, -136, 86, 39,120, 89,177,153,121,186, 58, 88,190, 62,193,215, 80,126,160,166,232,242, 22,195,134, 13,187,105,241, 40, 22,139,101, -214, 67, 15, 61,180, 64,175,215,191,153,159,159,255, 95,189, 94,127,178, 85,171, 86, 83, 5, 65, 88, 85, 89, 89,185, 67,171,213, - 62,216,185,115,231,105, 49, 49, 49, 27,211, 40,221,232,142,139,231,249, 76,209,170, 3,128,138,255,151,162,144,112, 22, 20, 86, -171,213,107,129,100, 23, 91, 47, 2,104,130,234, 2,188,231, 40,165,215,117,109, 40,165, 89, 0,122, 16, 66,154, 2,232,143,234, -250,125,197, 0, 46, 2,248,131, 82,250, 87,131,185,141,133, 89,132,144,132, 83, 41,251,159, 62,115, 50,101,148,152, 93,200,178, -178,227,188,165,114,147,213, 88,180,254, 95, 32,178, 0, 96,110,108,108,172, 31,128, 14, 0,114,113,181,144,113, 26,128,183, 27, - 74,234,226,127,230,158,134,242,249, 80, 29,163,229,236, 46,172, 49,118, 51,191,139,132,144, 1,244, 6,247, 67,242,113,250, 56, -125,156, 62, 78, 31,167,143,211,199,249,239,227,188,147,225, 46, 24,254,250,237,206, 62,248,224,131, 15, 62,248,224,131, 15,255, -227,112,105,209, 2, 80,103,230,128, 55, 74,181, 33,217, 7,245,241,251, 56,125,156, 62, 78, 31,167,143,211,199,233,227,252,247, -113,254,175,193,231, 58,244,113,250, 56,125,156, 62, 78, 31,167,143,211,199,121,203, 57,239,100,248, 92,135, 62,248,224,131, 15, - 62,248,224,131, 15, 55, 9,162,168,170, 43, 40,222, 39,180,188, 4,169,238, 89,247, 12,128, 97, 0,154, 3, 56, 15, 96, 27,128, - 53,212,243, 54, 21,206,124, 58, 0, 51, 1,244, 64,117,247,250,139, 0,246, 3,120,131, 82,234,182,204,193,255, 50,130,131,131, - 95,149, 72, 36,122,160,186,181,137,248,234,188,206,243,124,113, 73, 73,201,226,155,241,249,132, 16,214,211,172, 44,113,174,206, -115,115,126,181, 90,173, 55,109,158, 62,220,158, 32,132,180, 12, 8, 8,248,212, 96, 48, 60, 78, 41, 61, 83,255, 17, 62,248,112, -231, 32, 36, 36,228,105,139,197, 50, 91, 42,149, 46,202,203,203,123,255, 86,207,231,159,130,171,204, 67,135,208,218,185,115,103, - 50, 0, 36, 38, 38,246, 1, 0,173, 86,123,136, 97,152,166,246,131, 1, 92,237,133, 87, 59,245, 95,124, 21, 4,225, 98, 97, 97, -161,203, 2,106, 42,149,234, 16,203,178, 77, 9, 33, 96, 24,198,177, 88,173, 86, 45,203,178,101, 46, 56, 51, 12, 6, 67,167, 6, -159,249, 13, 4,169,158,212,247,254,254,254, 85, 11, 22, 44, 88,211,183,111,223,168,172,172, 44,219,140, 25, 51,122,255,249,231, -159,137,132,144,251,189, 17, 91,132,144,238,132,144,141,119,221,117,215, 55, 99,198,140,217,210,181,107, 87, 89, 97, 97,161,118, -219,182,109,141, 54,109,218,116,140, 16,242,184,183, 37, 46,110,119, 16, 66, 56, 87,245,204,220,141,213,134, 68, 34,209,103,100, -100,104,129,234, 18, 22,118, 97, 5,171,213, 10,171,213,138,138,138, 10,116,236,216,224, 50,103, 46, 17, 30, 30, 30, 79, 8, 89, - 29, 27, 27,219, 41, 34, 34,226, 40,128, 41, 89, 89, 89,127,122, 51, 87,155,205, 6, 74,169, 99,158,109,218,180,185,225,243,252, - 55,131, 16,242,148, 76, 38, 27, 20, 27, 27,219,197,100, 50, 21, 93,188,120,241, 8,207,243,175, 81, 55, 69, 47,189,228,247, 3, -240,154, 92, 46,239,218,188,121,243,168,179,103,207,166, 91, 44,150,195, 0,230, 83, 74, 27, 92,210,197,137,191,101,159, 62,125, - 14,188,247,222,123,129,147, 39, 79, 62, 64, 8,233,233, 19, 91, 62,220, 42, 52,110,220, 88, 95, 81, 81,177, 30, 64,188, 68, 34, - 9, 83, 40, 20, 80, 42,149, 57,114,185,252,191, 74,165,114,252,129, 3, 7,138,235, 37,169, 5,158,231, 95, 75, 75, 75, 11,235, -214,173,219,178,118,237,218,205, 43, 40, 40,168,178, 88, 44,123,139,138,138,166, 81, 74, 75,221, 29, 91, 91,139,220, 41, 16, 93, -135,206, 46,196, 26,174, 67,123, 95,161,190,206, 7,113, 28, 23,153,150,150, 22,162,213,106,193,243,188,195, 90, 32,222,212,156, - 99,187,236,117,154,208,170, 85, 43,183, 85,132, 37, 18, 73, 84, 70, 70, 70,136, 70,163,113,188,103,177, 88, 16, 22, 22, 38,100, -102,102,134, 40, 20,138, 26,251,155,205,102, 68, 70, 70,222, 78,181, 80,158, 9, 8, 8, 40,185,114, 37,189, 99,149,201, 50,127, -194,127, 94,121,245,241, 97,247,250, 31, 58,116, 72,184,255,254,251, 77,201,201,201,207, 0,240,168,200, 42, 33,196,143, 16,178, -105,198,140, 25,243, 20, 42, 93,224,190, 67, 39, 77,155,182,237,204,188,171,101, 19, 50,109,218, 52,246,185,231,158,251, 53, 62, - 62,254, 83, 66, 72,130, 55,150, 45,173, 86,251,131, 92, 46,143, 97, 89, 22, 22,139,229,138,193, 96,184,175,193,103,123,131, 65, - 8,185, 11, 64, 10, 33, 36,158, 82,250, 95, 79,199,220,161,176,176, 16, 70,163,241,154,165, 77,155, 54,158,246,202,244,102,254, - 92, 84, 84,212,119, 75,150, 44,105,148,147,157,141,183, 86,174,236, 6, 96, 13,128,110,158, 28,159,151,151,119,205, 60, 91,181, -186,241, 53,175,254,205, 32,132,204,156, 55,111,222,146, 81,163, 70,129,231,121, 24,141,198,136,115,231,206,181,157, 61,123,246, - 35,132,144, 46,148, 82,175,234,208,213,193, 31, 28, 27, 27,155, 58,117,234,212,128, 46, 93,186,192,222,165, 34, 98,255,254,253, -221, 54,108,216,240, 4, 33,164, 21,165, 52,255,122, 62, 35, 32, 32,224,211, 15, 63,252, 48, 80,165, 82, 97,251,246,237,129,253, -251,247,223, 79, 8,233,213, 80,177, 69, 8, 97, 2, 3, 3,159, 3,112,143, 32, 8, 50, 0,135,139,138,138, 22,210, 6, 84,117, -247,225,127, 11, 65, 65, 65, 79,149,149,149,189, 39,151,203,165,254,254,254, 80,169, 84,224, 56, 14, 28,199, 53,150,203,229,141, -229,114,249,224,123,238,185,103,202,190,125,251,220, 86,216,191, 59, 62,108, 28, 24, 50,159, 37, 12, 11, 0,109, 98, 3,117,126, -126,126,152, 63,127,190,250,225,135, 31, 86, 3,192,129, 3, 7,198,140, 29, 59,182, 63, 33,164,157, 43,177, 85,151, 22,185, 83, -224, 42,227, 16,168,217, 84, 58,217,121,128, 16, 2,165, 82,137, 45, 91,182,128,101,217, 26, 93,227,235, 90,111,220,184,113,189, - 19, 17, 45, 98, 59,118,236,128, 78,167,131,159,159,159,227, 70, 35,151,203,177,119,239, 94, 72, 36, 18,112, 28, 7,137, 68,130, - 78,157, 58,213, 89, 48,243,102, 98,120, 91, 66, 1, 96,235,179,213,243, 26,190,186,186, 8,228,214,103, 91,161, 87,115, 37,134, - 61, 55,119,100,101,149,165, 51,128,138,226,162,162,162,163, 95,127,157,117, 87,203,150,210, 79, 63,253,180, 75,163, 70,141,134, -193, 67,161, 5, 96,102, 66, 66,194, 87,172,210, 47,104,204,216,113, 99,198,115,140,229,137, 73, 47, 45, 74,207, 46,168,152, 56, -113,226,215,219,183,111, 31,179,116,233,210, 83,211,167, 79,159, 9, 96,150,167,243,151,201,100, 49,231,206,157,139, 21, 4, 1, -237,219,183,191,109,218, 24,136, 66,138, 82, 10, 66, 72, 13, 65,229,110,172, 62,136, 22,172,186,150, 27,141, 70,141, 26,181, 26, - 61,122,116,144,161,160, 0,111,173, 92, 41,190,221,169, 62, 55,162,232, 34, 52,155,205,120,244,209, 71, 71,243, 60,207,137, 34, -208,100, 50,153, 75, 74, 74,170,156, 50,123,242, 41,165,247,214, 55, 23, 66, 72, 83,181, 90,253, 38,128,120,163,209,216, 8, 0, -212,106,117,166, 32, 8,223, 84, 84, 84,204,162,246, 6,190,222,130, 16, 18, 5,160, 45, 92,183,130,162, 75,150, 44, 57, 59,115, -230, 76,143, 5,205,141,226, 36,132,196,132,134,134, 46, 30, 62,124, 56,118,238,220,137, 93,187,118, 89,149, 74, 37, 55,118,236, - 88, 50,101,202, 20,255,169, 83,167, 14,198,117, 20,113,180, 99,240,188,121,243, 2, 90,183,110,141,109,219,182,225,175,191,254, - 50,198,198,198, 42,251,246,237, 11,142,227, 2, 94,125,245,213,251, 1,108,188,158, 15, 48, 24, 12, 11, 95,122,233,165, 77,159, -127,254,185,246,226,197,139, 88,189,122,117,208,200,145, 35,147, 9, 33,125, 60, 21, 91,132, 16, 57,128,231, 0,244, 99, 89,182, -215,216,177, 99,109,255,249,207,127, 36, 12,195, 88, 87,174, 92, 25,188, 97,195,134,145, 65, 65, 65,241, 5, 5, 5,190,240, 3, - 55, 96, 89,214, 34, 8,130, 4,128,130, 82,106,170,111,251, 22, 79,247,134, 34, 48, 48,112,114, 81, 81,209,154,176,176, 48,132, -134,134, 94,115,175, 53,153, 76, 80, 40, 20,210,176,176,176, 15,135, 12, 25, 34,249,246,219,111, 93,186, 0, 9, 75, 94,219,254, -197,130, 70, 1,254, 90, 0,192,170, 15,126,172, 4,128,111,191,253, 22, 89, 89, 89,240,247,247, 71,187,118,237,216, 5, 11, 22, -132, 79,155, 54,237, 45, 0,227, 93,113,213,214, 34,119, 10,106,187, 13,157,183,221,198,104, 9,130,224,104, 88, 42, 10, 42, 81, - 4,213, 94,183, 19,215, 56,190,118, 70, 2, 33,132,148,151,151, 59, 68,150, 78,167,131,253,230, 10,171,213,122, 13, 47,207,243, - 32,132, 80,119,156, 46, 78,120, 50,128,189,148,210,243,245,237, 91,155,115,235,179,173,176, 73, 62,227, 49,177,132,250,224,151, -170, 95, 55, 1, 56,116,105,252,234,247,250,244,105,244,220,156,119,230, 26, 11,179, 10, 94, 29,253, 96, 76,108, 88,160, 82, 93, -156, 87, 18, 16, 23, 55, 16,213, 21,149, 61,157,103,239, 49, 99,198,108,254,233,247, 52,162, 80, 72,165, 28,203, 74,122,182,111, - 25, 24,229,199,250,105, 1,191,244, 11,103, 15,141, 27, 55,174,253,244,233,211,123,121,115,238, 12,195, 64,167,211, 97,243,230, -205, 96, 60,232,157,115, 51,178, 70,234,248,187,115,176, 11, 41,131,193,128,157, 59,119, 34, 49, 49, 49,133, 16, 18,111,223, 37, -133, 82,138,210,210, 82,100,103,103, 35, 60, 60, 60,133, 16, 34,113,118, 35,214,230, 20,173,170,162,168, 26, 59,118,236,104,155, -205,230,248, 62,215, 33, 96,128, 90, 34,198,211,115,143,136,136,248, 9,192,189, 44,203,194, 92, 85,101,126,115,197, 10,231,225, - 63,156, 69,150, 43, 78,113,174, 60,207,115, 41, 41, 41, 18,241,127, 6,128, 4,128, 26, 64, 16,165, 20, 12,195,252, 93,199,177, -181,175,103, 43,149, 74,117,104,199,142, 29,186, 78,157, 58, 17,153, 76, 6,155,205,134,227,199,143, 71, 45, 93,186,116,210,158, - 61,123,238, 39,132,180,161,181,154,167,187,227,116, 66,219,253,251,247, 87, 52,107,214,172, 78,225, 88, 90, 90,202,181,108,217, -178, 15,128,107, 68,209, 63,192,153,145,155,155, 59,228,222,123,239,125, 58, 39, 39, 39,213,102,179,189, 12,160, 93, 80, 80, 80, -202,208,161, 67,161, 84, 42,251,193, 3,161,229,238,239, 30, 18, 18,242,240,221,119,223,141,213,171, 87, 99,233,210,165, 3, 40, -165,123, 9, 33,253, 75, 75, 75,247, 60,244,208, 67,208,235,245, 67, 80,135,208,242,244,187, 68, 8,105,217,187,119,239, 15,231, -207,159,175,221,185,115, 39, 98, 99, 99, 81, 86, 86,134, 23, 95,124, 49,228,245,215, 95, 79, 34,132,244, 21,197,150, 43, 78, 66, - 72, 27,185, 92,190,241,243,207, 63,215, 52,107,214,172,153, 84, 42,101,154, 53,107, 6,131,193,128,170,170, 42,249,162, 69,139, -218, 43,149,202, 63,223,126,251,237,141, 0,134, 54,100,158,222,192, 29, 39,169,238,158,161, 3,160,247,198,237,234,230,220, 75, - 0,200,197,109,137, 68, 2,133, 66, 1,133, 66, 1,185, 92,142,211,167, 79,207, 81, 40, 20, 43,225,244, 91,236,142,147, 92,189, -105,117, 36,132, 28, 97, 89,214,237,118,237,208,144,127,250,122, 2, 0, 33, 36,146, 16,178, 10, 64, 63, 0, 12,195, 48,201, 65, - 65, 65,207,231,228,228, 92,246,148, 51, 34, 34, 34,176,188,188,252,237,240,240,112,132,134,134, 2,213, 68,104,212,168, 17,172, - 86, 43,114,115,115, 65, 41, 69,113,113, 49, 84, 42, 21, 34, 34, 34,222,158, 52,105,210,182,181,107,215, 22,214,201, 41, 96,233, - 67, 35,103,191,198,178, 44, 3, 0, 44,167,209, 76,125, 5,136,137,137, 65,207,158, 61, 81, 85, 85,133,146,146, 18,180,109,219, -150, 35,132,140, 97, 24, 70, 71, 41,125,159, 82,186,207,235, 11,116,155,195, 93, 48,252,188,218,126, 81, 66, 8, 4, 65, 0,199, -113, 53,132, 86,237, 69, 20, 69,246,239,171, 91, 11, 10, 33,132, 49,155,205, 14,145,229,231,231,231, 16,105, 54,155,205,149,208, -242,250, 68, 3, 3, 3, 59, 8,130,208,148, 16,178,214, 83,177, 85, 27, 99,198,140,185, 38,222, 99,218,180,105, 25,121,121,121, -244,209,129, 29,213,169,187,179,178,155,251,107,148,193, 90,109, 19,133,127,128,190,176,176,240, 55, 0,122, 47, 62,162, 69, 66, - 66,130,114,211,215,251, 51, 38,188,176,100, 65,167,102,129,186, 14,145, 65,254, 97,126, 74,153,134, 33, 21, 10,155, 53, 35, 32, - 32, 32,214,219,121,179,108,117,179,119,189, 94, 15,142,227,110, 11,139, 22,165,212, 70, 8,137, 39,132,164,236,220,185, 19, 93, -187,118,117,136, 45,251, 56, 74, 74, 74,112,252,248,113,244,238,221, 27, 0,226, 61,137,213, 18, 4, 1, 22,139, 5, 22,139,197, - 33, 96,164, 82,169, 56,236, 16, 48,226,190, 44,203, 94, 35, 98, 60,196, 2,127,127,255,222,253,250,245,147,125,177,101,139,140, - 82, 90,129,234,198,215,229,148,186,104,144, 93, 11, 54,155,205, 97,101,147, 72, 36,184,114,229,138,195, 42, 44, 90,134,107,187, -206, 93, 65, 46,151,191,244,229,151, 95,234,186,116,233, 66, 10, 11, 11, 33, 8,130,227, 71,114,205,154, 53,138, 97,195,134, 53, - 58,118,236,216,171,104, 64, 59, 27, 0,196,149, 32, 2, 0,157, 78,103, 3,224,109,243,203, 58, 57,109, 54, 27,233,209,163,199, -244,130,130,130,246, 70,163,113, 81,125, 36,246,239,196,118,251, 82, 77, 76,200,159,169,169,169,198, 17, 35, 70, 40,155, 52,105, -210,213,203,121, 93,131,150, 45, 91,118,151, 72, 36, 56,124,248,176, 9, 64,178,253,237,228,191,254,250,203, 52,116,232, 80,121, - 84, 84, 84,119, 79,185, 8, 33, 45, 91,181,106,245,115, 72, 72,136, 82,180, 96, 14, 31, 62, 92,178,110,221, 58,109,102,102, 38, - 44, 22, 11,102,206,156,137, 7, 30,120, 0, 65, 65, 65,152, 54,109, 90,232,178,101,203, 62, 5,144,224,134, 83, 33,147,201, 54, -159, 59,119, 46, 54, 60, 60, 92,249,251,239,191,163, 67,135, 14, 40, 40, 40, 64, 78, 78, 14,202,203,203,145,147,147,131,241,227, -199,135,188,245,214, 91, 17,215,113, 41,110, 52,138,165, 82, 41, 84, 42,149,190,184,184,248,122,226,220,228, 0,100,192, 85,145, - 37,151,203, 33,151,203,161, 80, 40,174,171, 47,235,157, 0, 66, 72, 35, 66,200, 73,169, 84, 42, 87,169, 84, 82,134, 97, 32,151, -203, 7, 6, 4, 4,156,184,239,190,251,218,253,244,211, 79,105,158,240, 84, 85, 85,109,150,203,229,146,144,144, 16, 0, 64,108, -108, 44, 58,116,232,128,138,138, 10,161,164,164, 4,122,189,158,185,124,249, 50,140, 70, 35,178,179,179, 17, 29, 29, 45, 97, 24, -102, 51,128,251,235,226, 59,120, 44,251, 3, 0, 31,136,219,193,193,193,185, 0,148,226,182, 66,161, 64,163, 70,141,144,153,153, - 9,173, 86,203,190,254,250,235, 67,183,108,217,242, 8, 33,100, 12,165,244, 19, 39,170,107,180,200,157,132,186,226,180, 0,187, -208, 74, 76, 76,156,187,115,231,206, 62,181, 15, 18,133,150,184,212,101,201, 18, 23, 79, 4, 17, 33, 4, 60,207, 35, 52, 52, 20, - 42,149, 10, 42,149, 10,132, 16,199,251,181,249,237, 79,248, 94,159,172, 90,173,198,168, 81,163,232,251,239,191,255,180, 93,108, -157,243,244,216,225,171, 83, 29, 86,172,218,104,211,166,205,161, 87, 95,125,245,225, 95,126,249, 37,179, 83,179, 38,156, 58,235, -114,185, 66,167,215, 35,178,113,226,216, 33, 67,255, 66,117,246,161,167, 56, 87, 86, 86,166,108, 30,169, 50, 51, 76, 21,105, 44, -231,180,225,106,169, 60,204,223,191,145,212,108,202,211,249,251,203, 76, 38, 83, 49, 0,151, 77,160, 1, 64,167,211,253, 40,151, -203,163, 89,150, 5,203,178, 8, 10, 10,242,163,148, 66,175,215, 35, 50, 50, 82, 19, 23, 23,119,134,227, 56, 48, 12,131,242,242, -242,203,151, 46, 93, 26, 88,223,196,252,253,253,127,148,203,229,209, 12,195,128, 16, 2,150,101, 29,137, 11,226, 58,203,178, 32, -132,160,178,178,210, 35, 78, 74,233,127, 9, 33,241,137,137,137, 14,177,181,123,247,110, 12, 26, 52, 8,197,197,197, 56,113,226, -132,179,200,242,200,109,232, 28,252, 78, 41,133, 84, 42,197,233,211,167,107,184,180,197, 69,171,213,122, 66, 89, 39, 2, 2, 2, - 14, 12, 31, 62, 28, 31,126,248, 33,165,148, 18, 0,106, 66, 72, 7, 63, 63,191,211, 39, 79,158,244, 40, 14,134, 82, 10,139,229, -234,174,226,119,220,249,255,203, 83,176, 44, 59, 48, 33, 33,129,148,148,148,136, 2,210,241, 64,196,178, 44,222,123,239, 61,101, -151, 46, 93,102, 43, 20,138,233, 82,169,180,212,106,181,126, 81, 85, 85,181,136, 82,234,117, 80,235,205, 68,175, 94,189, 94, 72, - 79, 79,127, 32, 58, 58,122, 71, 67, 57, 40,165,180,115,231,206,102, 0, 74,150,101, 37,245, 30, 80, 15, 8, 33, 44, 0,240, 60, - 95, 37,138,125, 74,169, 45, 33, 33,161, 10,213, 55,121,214, 83,174,160,160,160, 79,119,237,218, 21, 25, 29, 29, 13,171,213, 10, -155,205,134,242,242,114, 36, 39, 39,195,100, 50,193,102,179, 33, 54, 54, 22,175,189,246, 90,213,243,207, 63,175, 88,187,118,109, - 94,121,121,249,227,245,208, 62,191,109,219, 54,117,120,120,184,210,104, 52,226,194,133, 11, 72, 72, 72, 64, 89, 89, 25, 42, 42, - 42, 80, 89, 89, 9,139,197,130,210,210, 82, 61,207,243,230, 6, 95,136, 27, 12,142,227, 32,151,203, 33,149, 74,139,163,163,163, - 65, 8, 81,164,165,165, 53,196, 21,167, 3, 80, 42,145, 72,100,206, 2, 75, 46,151,227,240,225,195,175,202,100,178, 58,173, 89, -174, 64,107, 5,114,214,183,125,171, 65, 8, 89, 37,149, 74,229, 1, 1, 1,142, 39, 74, 65, 16,164, 26,141, 6, 33, 33, 33,171, - 1, 12,246,132,135, 82,122, 87, 64, 64,128,227,247,189, 99,199,142, 72, 79, 79,255,166,164,164,228,137,188,188, 60, 48, 12,179, -153, 97,152, 71,236,252, 40, 42, 42, 66, 84, 84,212, 93,174,248,122, 36,132, 63, 13, 66, 29, 22,173, 54, 45, 2, 52,206,227, 58, -157, 14, 58,157, 14,151, 46, 93, 66, 69, 69, 5, 61,123,246, 44,153, 60,121, 50, 49,155,205, 31, 19, 66,126,163,148, 94, 4, 92, -107,145, 59, 1, 13,138,209, 2,174,186, 14,235, 18, 86,181,133,151, 39,130,200,108, 54,107, 18, 18, 18, 4,241, 6, 46, 46, 0, -136, 43,161,133,106,203,129,215,144, 72, 36,218,201,147, 39,151,189,255,254,251,147, 8, 33,235, 40,165,103, 27,194, 3, 0, 59, -190,250, 60,116,233,107, 51, 95, 11,136,104,210,124,250,244, 57,220,131, 15, 62,248,251,166, 77,155,248,128,214,131,251,239,251, -241,147,208,183, 95,156,177,123,215,174, 93, 64,117, 96,180,167, 56,240,253,247,223,135, 77,123,110, 10, 94,123,233,249, 31,116, -177, 65, 50, 13, 9, 80, 43, 76, 21,249, 26, 80,163,188, 69,171, 7,190,222,177, 35, 27,192, 49,119, 36, 74,165, 50,250,236,217, -179,177,206, 66,194, 98,177, 64,175,215, 99,211,166, 77,193, 90,173, 54, 88,163,209,128,227, 56,116,232,208,193,163,137,201,229, -242,232, 51,103,206,196,106,181, 90, 84, 86, 86,194,100, 50,193,106,181, 66, 16, 4, 16, 66, 32,145, 72, 32,147,201,160, 86,171, -189,202,236,115, 22, 91,187,119,239, 70,219,182,109, 81, 84, 84,132,212,212, 84,175, 69, 22,112,213, 74,228, 28,143,197,113, 28, - 62,109,214, 12, 19,178,178, 28, 2,102,149,159, 31, 94, 19,188,174,188, 1, 0,104,223,190, 61, 61,120,240, 32,126,248,225, 7, - 60,244,208, 67,228,187,239,190,179,240, 60, 47,205,204,204,244,216, 58, 38, 8,130, 99,174,226,239,182,179,192,242, 86,104,217, -108, 54,173, 76, 38, 67, 85, 85,149,195,181,239,188, 52,109,218, 20, 6,131,129, 43, 45, 45,229,178,178,178, 84, 11, 23, 46,252, - 79, 82, 82, 82, 56,128,199,188,190, 0, 55, 16,239,191,255,126,244,132, 9, 19,174,112, 28, 71, 7, 13, 26, 52,250,242,229,203, - 67,194,195,195,247,254,242,203, 47, 43, 0,180,172,151,160, 22,130,131,131,255,224, 56, 46, 82,163,209, 72,183,110,221,106, 45, - 43, 43,147,134,132,132,228, 2, 87,155,169, 3,213, 77,150, 75, 74, 74,234,205, 92, 14, 14, 14,254, 35, 56, 56, 88,250,238,187, -239, 90, 11, 11, 11,165, 97, 97, 97,185, 34,143, 90,173,150,110,221,186,213, 90, 90, 90, 42,213,235,245,127, 20, 23, 23,215,203, - 87, 80, 80,240,248,152, 49, 99,246,239,221,187, 55,136,101, 89, 92,190,124, 25,133,133,133,208,235,245,216,188,121, 51,162,163, -163,177,109,219, 54,131,193, 96,120,234,205, 55,223,156, 93, 94, 94,238, 73,169,135,222, 93,187,118,141, 46, 46, 46,134, 94,175, - 71, 69, 69, 5,254,248,227, 15,180,105,211, 6, 89, 89, 89, 96, 24, 6,122,189, 30,107,214,172,169, 36,132, 24, 60,185,142, 55, - 27, 44,203, 58,172, 78, 78,226,168,170,123,247,238, 72, 74, 74,154,225,141, 56,162,148,154, 37, 18, 73, 13,129,229,180,238,177, -192, 18,193,243,188,212, 30, 35, 74, 60,217,190, 13,208, 71,169, 84, 74,107,191, 89, 89, 89, 41, 13, 15, 15,239, 85,215, 1,117, -129,227,184, 64,165,178,218,224, 20, 29, 29,141,146,146, 18,222,108, 54,143,220,188,121,179, 21, 0, 18, 18, 18, 70,242, 60, 95, -101,179,217, 88,153, 76,134,138,138, 10,132,132,132, 4,186, 36,100,240,242,246, 47, 22,134,213,142,209, 10, 15, 15, 71,124,124, - 60, 76, 38, 19,178,179,179,145,156,156,108,229,121,254,179,247,223,127, 95, 8, 14, 14,126,242,209, 71, 31,101,143, 29, 59,246, - 44,128, 23, 68,170,127, 75,140,150, 51,196,172,195, 62, 0,146, 0,244, 21, 79,210,217,117,232,206,146, 85,203,162,229,246,203, -200,178,108,113, 70, 70,134, 90,173, 86, 59,222,179, 90,173,136,136,136, 16, 4, 65, 32,181, 63, 71,156, 71, 67, 33,145, 72,180, -175,188,242, 74,241,154, 53,107,158,128,135, 1,229, 91,159,109,133, 77, 78,219, 59,190,250, 60,244,131,165,243, 87,191,187,116, - 97,192,249, 31, 62,198,250,119,150,243, 60,143, 99,237,219,183,239, 85, 94, 94,206,249,169,173, 40, 40,198,110, 84,215,209,242, - 72, 20,146,234, 90, 92, 31, 29, 57,114,228,216,224,193,131, 15,126,244,229,215, 1, 89, 23, 46,252, 38, 47, 45,200,214,181,136, -229,164,141,162, 31, 41,171,170,146,142, 28, 57, 50, 24,192,163,238,184, 24,134,193,133, 11, 23,144,150,150, 6,141, 70, 3,173, - 86, 11,141, 70, 3,157, 78, 7,173, 86, 11,173, 86,235,245, 53,100, 24, 6, 60,207,227,171,175,190,130, 74,165,130, 90,173,174, -177,136, 34,235,122,254, 54,131, 6, 13,130,193, 96,128, 70,163,113,184, 59,189,129, 24,163,101, 54,155, 97, 54,155, 97,177, 88, -120, 0, 18,142,227, 48, 62, 35,195, 97,229,241, 70,192,212, 70,135, 14, 29,232,111,191,253,134,131, 7, 15,162,162,162, 2,239, -190,251, 46,194,195,195,239, 1, 48,199, 91, 46,167, 32,125,190,180,180, 84, 82, 90, 90,234,176, 14, 74, 36, 18,135,197,208, 19, -240, 60, 47,229, 56,206,241, 52, 42, 46,206, 86, 45,150,101, 17, 26, 26,138,176,176, 48,124,240,193, 7,210, 38, 77,154, 60,224, -237,156,111, 36,150, 45, 91,214, 98,213,170, 85, 27, 54,109,218,180,251,241,199, 31,223,114,252,248,241,113,126,126,126,127,239, -219,183,111,161, 92, 46,111,144, 10,150, 72, 36,145, 89, 89, 89, 33,206,111, 9,130,160,178,217,108, 14, 97, 91, 89, 89,137,118, -237,218,121,204,119,242,228, 73, 21, 0, 44, 92,184, 80, 2, 64, 37,150, 13, 17, 57, 43, 43, 43, 37,109,218,180,137,244,132,143, - 82,122,134, 16,210,107,192,128, 1,135,126,254,249,103,255,232,232,104,100,102,102, 34, 51, 51, 19, 45, 90,180,174, 99, 17, 43, - 0, 0, 32, 0, 73, 68, 65, 84,192,226,197,139, 43, 74, 75, 75,123,216,197,213,119, 30,158,118,132,191,191,191,228,202,149, 43, -176,217,108,184,235,174,187,176,102,205, 26,140, 28, 57, 18,237,218,181, 67,105,105, 41, 78,158, 60,137,141, 27, 55,250, 75,165, - 82,183,191, 29,255, 4,236,174, 45,151, 75, 67, 96,179,217,116, 10,133,162, 84, 46,151,203,196,248,172,228,228,100,175,173, 89, - 34,106, 63,220,213,183,125, 43, 33,138,214,218,144,201,100, 8, 11, 11,243,152, 71, 46,151, 19,241,183,209,102,179,161,164,164, -132, 15, 15, 15,119,184,247, 83, 82, 82,248,152,152, 24,158,101, 89, 86, 38,147,129, 16, 2,149, 74,229,242, 7,159,242,116,254, -131, 35,231, 56,178, 14, 25,137, 90, 55,245,149,234,135,254,148,148, 20, 88, 44, 22, 36, 39, 39, 91,223,124,243,205,172,226,226, -226,169, 0,184, 31,127,252,113,204,140, 25, 51,216,144,144, 16, 71, 28,109, 93, 90,228, 78, 66,109,151, 97,237, 96,248,164,196, -196, 68, 98, 79,173, 36,246, 3, 64, 41,189, 70, 92,185, 18, 94,246,155,132,219, 59,175,232,114,250,225,135, 31, 28,130, 64,204, - 58,164,148, 94,195, 43,206,163,161, 8, 12, 12,172,232,218,181,171, 46, 61, 61,253,243,134, 28, 47,138,172, 37, 11, 94, 15, 48, -156,250, 29, 25, 89,217, 48,228, 89,143, 29,248,251,210, 55, 0,190, 1, 0,172,109,157,132, 73,167,222,243,148,179,117,176,170, - 99,251, 8,237, 55,247, 14,126, 32,106,196,196, 23,152,103,158,121,166,231,152, 49, 99, 74, 30,127,252,241,231, 52, 26, 77, 75, -139,197, 82,244,245,206,157,105, 35, 70,140,104,194,243,252, 24, 87,105,176, 34,172, 86,235,229,161, 67,135, 58,174,109, 88, 88, -152,238,139, 47,190, 8,213,106,181, 24, 61,122,116,126, 90, 90,154,195, 93, 84, 86, 86,118,217,147, 57, 90, 44,150,203, 29, 59, -118,116,233, 46, 20, 45,146,222,112, 2, 53,179, 11, 11, 11, 11,113,250,244,105,112, 28,135,110,221,186,225,192,129, 3,232,217, -179,167, 87, 25,135, 85, 85, 85,136,142,142, 70, 85, 85, 21, 42, 42, 42, 42, 1,200, 55, 55,105, 2, 0,120,182,176, 16,127,188, -249, 38,126, 95,178, 68,252,108, 79,167, 9, 0,232,216,177, 35, 61,124,248, 48,254,254,251,111,152, 76, 38, 60,245,212, 83,176, -187, 13, 1,192,227,146, 25,132,144,102, 97, 97, 97,131, 6, 15, 30, 28, 1, 0, 21, 21, 21,228,200,145, 35, 80, 40, 20, 32,132, - 32, 59, 59, 27, 59,118,236, 64,102,102, 38, 8, 33,240,247,247,143, 36,132, 52,161,148, 94,114,197, 73, 41, 37,151, 46, 93,194, - 27,111,188, 1, 65, 16, 48, 99,198, 12,196,198,198, 58, 4,214,229,203,151,177,112,225, 66,240, 60,143,215, 95,127, 29, 45, 90, -180,128,213,106, 85, 16, 47,234,148,221,104, 76,155, 54,237,252, 55,223,124,179, 59, 61, 61,253,254,165, 75,151,246, 33,132, 8, -211,167, 79,127, 67,167,211,121, 84,244,213, 21,138, 74,202,112,250,220,101,135, 16,170,189, 4, 7, 5,120,205,119,246, 66,186, -227,120,158,119,230,227, 17, 24,224,239,237, 20, 43,173, 86,107,197, 35,143, 60,162,255,234,171,175, 72,139, 22, 45,112,241,226, - 69,241,225,180,178, 1, 37, 29, 50, 13, 6, 67, 44,203,178,210,115,231,206, 33, 38, 38, 6, 93,187,118,197,162, 69,139, 80, 80, - 80, 0,155,205,134,144,144, 16,193,106,181,166,152,205,230, 95,189,157,236,141,134,179,213,201,121, 73, 78, 78,158, 33,147,201, - 40,128,195, 0,188, 18,218,148, 82,115,227,198,141,107,115,223,146,239,117, 93,184,153,153,140,225,225,225,201, 90,173,246,129, -162,162,162, 26, 86,173, 30, 61,122, 88, 66, 67, 67,247,123,202,163,209,104,138, 88,150, 13, 4,128,204,204, 76,168,213,106,233, -133, 11, 23,150, 16, 66,102, 2, 64,147, 38, 77,150, 24, 12, 6,105, 19,251,239,105, 88, 88, 24,204,102,179,203, 48,150, 67, 41, - 57, 31, 3,248, 88,220, 14, 12, 12,204, 46, 41, 41, 81, 46, 95,190,188,124,201,146, 37, 70,158,231, 77, 0,246, 21, 23, 23, 59, -234,104,197,196,196,148, 72, 36,146, 0,189, 94,223,200,137,234, 26, 45,114, 39,193,173, 69, 11,112,212,175,168,125, 80,157,150, -172,186,196,150, 39, 86, 9, 66, 8,140, 70, 99, 13,235,136,152,117, 88,151,208,178,223,208, 27,228, 58,180,139, 44,229, 23, 95, -124,241,217, 59,239,188,115,208,211,227,156, 99,180,214,174, 88,176, 84, 20, 89,127, 29,252, 25,223,165,150, 20,204, 88,178,114, - 85, 67,230, 3, 0,109,130,213, 29,194, 66,131,146,222, 92, 60, 95,119,254,135,141,216,178,246, 45,250,215,209,163, 93,142, 30, - 61,250,196,148, 41, 83, 26,163,250,139,101, 0,240, 39,128, 17,158,100,233,228,231,231,215,136,143,138,141,141, 61,163,215,235, - 67, 21, 10, 5, 46, 92,184, 80,126,226,196, 9,175, 93, 50,181, 57,111, 4,106,139,172, 19, 39, 78,160, 95,191,126, 0,128, 3, - 7, 14,160, 71,143, 30, 94,137, 45,171,213, 90,220,186,117,107, 0,213,214,173,146,146, 18, 1, 0, 38,102,103, 99, 93,120, 56, - 56,142,195,239, 75,150, 96,150,213,138, 69, 18,239, 66,119,238,186,235, 46,122,244,232, 81,164,165,165,193,102,179,225,225,135, - 31,118, 22, 89,222,156,115,187, 86,173, 90,237,217,183,111, 95,176, 70,163, 65, 69, 69, 5,202,203,203, 49,118,236, 88,140, 28, - 57, 18, 38,147, 9, 91,183,110,197,246,237,219,161,213,106, 81, 81, 81,129,138,138, 10,255,196,196,196, 67,132,144,222,174, 98, - 11, 41,165,116,224,192,129,216,191,127, 63, 88,150, 69,151, 46, 93, 80, 88,232, 72, 6, 66,104,104,104, 93, 99, 44,170,255,223, -111,201, 13,137,227, 56,154,156,156,188,180, 79,159, 62, 72, 79, 79,191, 63, 33, 33,225,221,113,227,198,101, 94, 47,175,191,159, - 22, 29,219, 52,131,201,100,130,201,100, 66, 68, 68, 4,202,202,202,112,254,252,121,152, 76, 38,132,134,120,147,159, 82,205, 23, -223,174,133,131, 47, 36, 36, 4, 21, 21, 21,184,116,233, 18,204,102, 51,130,130, 60, 23, 90,132,144,168,129, 3, 7,254,242,217, -103,159, 5,110,220,184,209,220,183,111, 95,217,187,239,190, 75,116, 58, 29,242,242,242,188, 61, 85, 17,201, 7, 14, 28,136, 30, - 48, 96, 64,220,169, 83,167,144,156,156, 12,179,217,140,248,248,120,156, 61,123, 22,221,187,119, 71,121,121,249,225,163, 71,143, -110,175,159,234,230, 67,116,235, 57, 89,158,102,233,245,122, 11,128, 85,184,142,239,226,149, 43, 87,228, 29, 58,116, 48, 41, 20, - 10,153, 93,180, 53,200,154,117, 51,112,189,153,140,238, 16, 22, 22, 54, 53, 40, 40,104, 64,211,166, 77,145,155,155, 43,149,201, -100,232,209,163,135,165,115,231,206,150,176,176, 48,143, 18,115, 0, 64, 46,151,159,146, 74,165,189,171, 31, 38,120, 92,185,114, - 5,148,210, 25,237,218,181,123,190,172,172, 12,133,133,133, 50,157, 78,231,120,168,142,139,139,131,201,100, 58,229, 41, 63,203, -178,243, 99, 98, 98,102, 75,165,210, 69,249,249,249,215,148,133, 32,132,200, 58,118,236,168,147, 74,165,176, 88, 44, 53,196,102, - 93, 90,228, 78,128,167, 49, 90,164,174, 19,244,196,109,232,105,140, 22, 33, 4,102,179, 25,106,181,218,225,146, 18,191,147, 98, -236, 79,109,161,213, 16, 68, 69, 69,161,107,215,174,202, 45, 91,182,124,186,124,249,242, 67, 13,225,216,246,217, 39,225,126, 66, -101, 84,214,225, 93, 56,243,247, 49,124,115,178,184, 96,198,146,149,207, 61,248,232, 99,185,206,251, 13, 95,157,138,173,147,234, -231,107, 25,162,110,215, 40, 52, 48,105,197,178, 37, 58,195,169,223,145,157,147,131, 93,135,143, 30, 51, 83,122, 18,192,140,134, -204,177, 46, 56,103,175, 53, 84,164,222,104, 56,151,119, 40, 40, 40,192,201,147, 39, 69,145, 21, 15, 0, 61,123,246, 76, 17,197, -214,177, 99,199,144,144,144,112, 77,121,135,218, 40, 42, 42,170,209,178,198, 94,198, 33, 72, 20,252, 28,199,161,199,236,217, 94, -139, 44, 66, 8,229,121, 30, 6, 67,117,120, 75,143, 30, 61, 26, 36,178, 0, 32, 44, 44,236,165,125,251,246, 5,127,244,209, 71, -165,155, 54,109, 42, 20, 4, 65,210,177, 99,199,200, 78,157, 58,145,205,155, 55, 3, 0, 70,140, 24,129, 25, 51,102,224,196,137, - 19, 80,171,213,232,217,179, 39, 63,119,238,220,144,169, 83,167, 62,139,234, 58, 73,215,128,231,121,105,147, 38, 77,246, 2,184, -231,212,169, 83, 0,112,136, 82,218, 67, 28,119, 55,230, 1,132,178,178, 50,137, 86,171,173,179, 52,132,180, 58,173,211, 91, 87, -159,131,243,224,193,131,111,172, 88,177,226,155, 23, 95,124,209, 33, 34, 27,200, 9,224, 90,139,214, 3, 15, 60, 0,163,201,130, -140,220, 18,240,188, 13, 70,139,119,130,166,182, 69,235,129, 7, 30, 64,101,149, 25, 87,178, 13,176,217,120,148, 25, 61,187,151, - 19, 66, 84,247,222,123,239,143, 95,124,241, 69,216,111,191,253, 6,158,231,133,179,103,207, 94,122,228,145, 71,116,211,167, 79, - 15,116,138, 65,245, 22,239, 60,246,216, 99,195, 14, 30, 60,104,136,139,139, 11, 56,124,248, 48,242,242,242, 96,179,217,112,207, - 61,247, 64, 38,147, 93, 89,178,100,137, 20,192, 59, 13, 33,191,209, 16, 45, 78, 71,142, 28,185, 33, 2,203, 25, 50,153,172,193, -238,199, 59, 21,135, 15, 31,206,156, 50,101, 74, 27,157, 78,183,170, 87,175, 94,253, 2, 3, 3, 25,127,127,255,228, 70,141, 26, - 61,223,161, 67,135,203,158,242, 72, 36,146,113,106,181,250,188,205,102, 99,203,203,203, 81, 81, 81, 1, 0,176,217,108, 50,134, - 97,208,164, 73, 19,135,241,164, 75,151, 46, 8, 11, 11,227, 83, 83, 83,199,121,202,159,151,151, 87, 35, 11,177, 14, 76,234,209, -163, 7,103, 50,153,144,150,150,118,192,121,192,149, 22,185,221, 81,219,109, 8,120,208, 84,154, 97, 24, 80, 74,161,232,212, 9, -217, 63,255,140,175,190,250,202,237,135,172, 93,187, 22,168,101,234, 35,181,186,123,139,217,133, 19, 38, 76,112,236,115,236,216, - 49, 71, 80,252,195, 15, 63, 92,131,243,200,145, 35,215,136,173,218,156,117, 33, 47, 47,239,212,214,173, 91,143, 46, 91,182,236, -176,219, 73,215,193, 41,198,104, 13, 27, 53, 58,123,245, 27,175, 29,223,180, 99, 95,187,108, 35,205,158,177,100,229,139,181, 69, -150,167,156,173,195, 52,173, 35, 67, 2,147,151, 47, 91,226, 39, 90,199,190, 72,201, 41,129,141,122, 32,209,234,230,116, 5,103, -203, 34, 33,164,222,155,151, 39,156,222,162, 54,167,115,121,135,236,236,108,135,200,162, 87, 11,150,198,247,236,217, 51,197, 46, -178,196, 49,155, 59, 78, 87,224, 56, 14, 47,150,151,131,227, 56,244,157, 55, 15,247, 44, 88,224,241, 60, 69,240, 60, 15,142,227, - 16, 27, 27,235,181,200,114,230, 36,132,244,168,172,172,196,198,141, 27,203,206,157, 59,215,172,105,211,166, 83, 63,254,248,227, -149, 42,149,170,198, 49,149,149,149,120,240,193, 7,241,254,251,239, 99,224,192,129,214,113,227,198,201, 25,134, 25, 80, 23,167, -136,180,180,180, 73,253,251,247, 95, 91, 85, 85,197, 21, 22, 22, 78,242,116,172,190,115,223,186,117,235,185,216,216,216, 62,112, - 93,194, 65, 0,240,219,245,112,174, 90,181, 10, 0,226,174,135, 83, 68,109,139,214,151, 95,126, 9, 65, 16, 16, 21,166,135,201, -100, 66,237,107, 93, 31,103,109,139,214,150, 45, 91, 32, 8, 2, 26,135, 7,192,108, 54, 67, 12, 32,174,143, 51, 48, 48,240,173, - 77,155, 54, 69,166,166,166, 34, 35, 35, 3, 43, 87,174,188, 92, 92, 92, 60,184,184,184, 88, 62,119,238,220,164, 81,163, 70,133, - 10,130,224,214,109, 84,215, 60, 41,165, 38, 66,200,184,187,239,190,123,243,194,133, 11, 47,182,106,213,170,113,143, 30, 61,244, -133,133,133,249,255,253,239,127, 47,173, 93,187, 86, 99,179,217,198,185,114, 73,253, 19,255,239,206,200,204,204,156,135,106,107, -170, 87, 2,203,147,121, 30, 57,114,228, 21, 59,247, 81, 79,184,255,169,115,191,222, 76,198,250,230,249,222,123,239,101,160, 86, -125, 52,111,231,121,228,200,145,180, 1, 3, 6, 44, 8, 13, 13,157,171, 80, 40,144,159, 95,221,236, 64,180, 60,218,143, 65,167, - 78,157, 48,112,224, 64,156, 57,115,102,193,236,217,179,211,220,113,122, 48, 7, 14, 64, 51, 0, 79,244,239,223,127,250,176, 97, -195,240,222,123,239,129, 82,186,193,155,115,185, 93, 65,235,107, 42,157,152,152, 72,156, 95, 1,192,106,181,166,159, 63,127, 62, -188, 69, 81, 17, 27, 65, 8,186,116,233,226,136,207,113,142,219, 17, 3,234,126,253,245, 87,155, 32, 8,110,107, 86,241, 60,159, -126,240,224,193,208,159,127,254, 89, 34,254, 65,237, 65,157, 66, 86, 86, 22,147,148,148,228,176,142,113, 28,135,228,228,100,155, -197, 98,185,226,237, 9,159, 57,115,230,134, 60,205,253,122, 34,237,249, 31,119,125, 27,212,173,107,175, 98, 93, 64, 64,157,255, -200, 98, 5,121,119, 32, 28,179,104,233,226,249,122, 81,100,125,153,146, 83, 92,101,226,251,157,202,175,252,235, 70,204,211, 25, -101,101,101,105, 98,118, 97,121,121,185,215,215,238,102, 65,204, 56, 12, 15, 15, 79, 65,173,236, 66,113, 44, 33, 33,225,154, 49, -111, 32, 8, 2,252,252,252, 0,192, 57,163,213, 99, 16, 66,168,232,202,182,207,235,186, 98, 4, 40,165, 7,143, 31, 63, 30, 51, -118,236, 88,109,108,108,236, 5, 66,136,100,252,248,241,150,176,176, 48,233,129, 3, 7,172, 0, 72,159, 62,125,184,156,156, 28, -154,153,153,105,120,232,161,135,202, 38, 76,152, 16,248,231,159,127,202, 4, 65,112,251, 3,102, 79,135,238,239,237, 88,125, 24, - 54,108,216, 5,212, 81, 56,244,122,112, 51, 56, 69, 24,138, 75,113, 33, 45,211,222,235, 82, 0,127, 57,215, 17, 87,101,181,218, - 96, 40, 45,172,159,196, 9, 69, 37,101, 56,127, 41,211,222,114,140, 7,207,103,217,249,170, 3,226,105, 81,101,189, 28, 18,137, -164,231,170, 85,171, 6, 51, 12,195,252,254,251,239,166,101,203,150,165,231,231,231, 63, 76, 41,189, 2, 0,132,144,190, 27, 55, -110,252,212,131, 82, 14,117,130, 82,122,146, 16,210,253,229,151, 95,126, 14, 64, 79, 0,141, 1, 92, 1,112, 0,192, 59,222,198, -253,220,100,172,172,127,151,219,146,187,193,184, 83, 50, 25,247,236,217, 51,111,200,144, 33, 92,116,116,244,171,209,209,209, 76, - 81, 81, 17,202,203,203,193, 48, 12,194,194,194,208,182,109, 91,132,133,133, 9,167, 78,157, 90,252,242,203, 47,215, 91,147,175, - 77,155, 54,205,172, 86,107,115,134, 97,154, 1,104, 70, 41,109, 70, 8,105, 6, 32, 0, 0,186,116,233,162,139,137,137,225,186, -117,235,134,174, 93,187, 34, 41, 41, 9,219,182,109,251,152, 82,250,163,200, 81,151, 22,185, 29,112,178, 19,233, 67, 4, 36, 81, - 6,125,219,252, 65,147, 79,197, 19,218, 58,229,218,251,131,171,204, 67,151, 22,173,162,162,162,129,131, 7, 15,254,153,101,217, - 38,118,130, 26, 55, 46,103,151, 31, 0, 8,130,144,150,155,155, 91,103, 49, 51,103,206,231,159,127,254,103,150,101,155,136,150, - 42,155,205,102, 50, 24, 12,207,244,237,219,119,141, 68, 34,145, 59,243, 10,130,112, 57, 55, 55,247, 31,237,213, 87,187,142,214, -192,193, 67, 10,174,151, 83, 35,101,154,159,217,249, 33,114,243, 10,240,101, 74, 78, 81,153,153,239,123, 38,191,226,248,245,242, -214,133,180,180,180, 65, 55,131,247, 70,192, 46,168,234,116, 9,186, 27,243, 16,249, 30, 20, 36,117,219,163,142, 82, 74,236, 98, -235,134,252,147,231,228,228, 44,159, 61,123,246,125,139, 23, 47, 14,222,189,123,183,206,254, 25, 24, 58,116,104,222,241,227,199, -123, 1,144, 87, 85, 85,237, 89,188,120,113,240,252,249,243, 3, 1, 4, 2, 64, 98, 98, 98,110,110,110,174,167,173,156,254,103, - 97,181, 90, 51,218,182,174, 54,140,137,101, 24, 68, 99,129,243,186,205,102,203,240,134,175, 46, 30,231,109,158,231,221,242,177, - 44,251, 98,215,174, 93,217, 23, 95,124, 49,119,247,238,221, 98, 35, 93,135, 66,179, 7,192,187, 44, 74,234, 9,236, 98,106,153, -125,241,225, 54,195,157,146,201,248,237,183,223,206, 25, 57,114,228,198,128,128,128, 79,154, 53,107, 22, 23, 26, 26,170, 83, 42, -149, 48,153, 76,101,102,179,249,244,153, 51,103, 30,159, 61,123,246, 69, 79,184, 54,110,220,200, 2,144, 10,130,160, 96, 24, 70, - 13, 64, 71, 8,241,135, 93,104, 17, 66, 96,177, 88,144,150,150,134, 89,179,102,241,123,247,238,125, 19,192,235, 94, 76,183, 51, -128, 96, 92,253, 29, 15, 6, 96, 70,117, 1,219,124, 84, 91, 54,111, 10,136,128,164,214, 41,148,156,138, 39, 46,131,244, 73,125, - 77,165,235, 2,173,174,126,237,113, 21,100, 79, 80, 15,103,244,141,252,172,235,193, 24,211,178,207,177,118, 89,141, 62,135, 0, - 92,111,215,227, 0, 44, 49,218,166,188,243,227,137,229, 38, 27, 21, 44, 54,225,201, 51,121, 21, 39,111,210,212,111,123,184, 19, - 82,215,147, 17, 71, 61,232, 15,232, 33,207, 13,123,146,162,148, 30, 39,132,220, 61,101,202,148, 57, 42,149,170, 11, 0, 84, 86, - 86,254,158,149,149,181, 64,204, 42,172,111,220, 7,215,200,207,207,175,183,150,213,173,224, 51,155,205,207,223,125,247,221,111, -243, 60,191,194,106,181, 30,168,255, 8, 31,124,184,117,248,242,203, 47, 47,194,126, 95, 30, 62,124, 56, 11, 0, 91,183,110,245, - 58, 27,120,236,216,177, 60,173,110,100, 94, 5,160, 2, 64, 41,170, 11,110, 19, 0,168,168,168, 40,202,202,202, 58,197,243,252, - 41, 0,159, 54, 32,227, 54,152, 16,242, 61,165,244, 1, 0, 16,215,157,223,187,217,112, 18, 91,215,192,163, 96,120, 31,170,177, -245,196,213, 27,109,109, 1, 85,223,182, 43,156,206, 41, 79,198,117, 62,193,250,112,103,130, 82,122, 1,192,152,134,142,251,112, -231,193,238, 34,124,184,222, 29,125,240,225, 54, 67, 67, 4,150,136,147, 39, 79,222,180, 16,129, 91, 13,103, 55, 97, 93, 46, 67, - 17,117, 89,179, 0,159,208,242,193, 7, 31,124,240,193, 7, 31,124,112, 9, 49, 70, 75,220, 22, 99,181,156,247,169, 29,159,229, -188, 77, 0, 12, 64, 29,240, 50,155,160, 78, 14,119,168,143,223,199,233,227,244,113,250, 56,125,156, 62, 78, 31,231,191,143,179, -129, 72,172,199,117,184,243, 38,124, 38, 0, 64, 12,126, 63, 25, 79,230,182, 73,161,115,235, 10,134,119, 39,180,106, 4,123,222, -232, 5,192, 0, 31,167,143,211,199,233,227,244,113,250, 56,125,156, 62,206,235, 92,250,205,156, 57,243, 21, 84,247, 63,166, 51, -103,206,124,133, 82,154, 88, 45, 99,104,226,205,252,236, 19, 9,232,115,242, 46, 80,113, 57,145,128, 62, 46,174,201, 68,113,113, -126,223,231, 58,244,193, 7, 31,124,240,193, 7, 31,110,119, 28, 90,178,100, 73,229,146, 37, 75,196,192,247,124, 0,132, 86, 91, -179,220,102,148, 95, 47,236,110,194,122, 19,165,104,125, 45,120,254,105, 16, 66, 34, 24, 78, 58, 90, 34,149,247, 3, 21,218, 2, - 0, 24,246, 4,111,174,250,197,102,179,124, 66, 41,205,106, 40,119,107, 66, 90,183,208, 43,183,155,120, 94,154, 94,102, 30,118, -138,210, 35, 13,225, 25, 78, 72, 15,185, 76,246,147, 92,175,175,179, 74,161,169,184,216,104, 50,155,239,219, 74,169,199, 45,126, -124,240,193, 7, 31,124,240,225, 86,130, 16,162,246,247,247,223,203, 48, 76,180,211,123,168,107, 29, 0,120,158,207, 54, 24, 12, -247, 81, 74, 93,150, 59,186, 25,156,181, 96, 6,208,160,123,249,141,134,183,174, 67, 14,168,209, 91,168,222,142,217,173,194, 53, -189,226,154, 69,127,150,149,147,155, 82, 90,101, 30,127, 58,179,204,224,237, 36, 57,169, 98,130, 62, 40,108,209,255,141,123, 62, - 48,182,101, 28,137,138,106, 4, 80,224, 74,122, 70,232,249,115,103,251,111,217,244,206, 52,169, 66, 49,203, 82, 85,245,161,183, -220,109, 8, 81, 71,107,228, 7, 62,156, 57, 74,207,193,134,199, 22,126,246, 67, 27, 66,162, 78, 86,151,150,240, 24,195, 9,233, -161, 15, 12,252,113,201,158, 61, 74,127,123, 1, 80, 17,148,210,234,254,122,127,253,165,124,245,190,251,126, 28, 78,200, 64,159, -216,250,247,129, 16, 18,166,211,233,166, 74, 36,146,190, 22,139, 37, 90, 38,147,165,243, 60,159, 92, 84, 84,180,138, 82,122,221, -125,250,124,240,225,223, 14,226,166,145,185,187,177,127, 2, 90,173,246, 15,134, 97, 34,237,115, 1, 0, 71, 39,146,218,117, 34, -157,234, 69, 94, 44, 44, 44,188,219, 21, 39, 33,164, 89, 64, 64,192, 26, 0,157,235, 43,152,108,119, 53, 29, 53, 24, 12,207,208, -234,236,227,186,248,180,254,254,254,243, 8, 33,195, 25,134,169,183,161,176, 32, 8, 60,165,116,107, 81, 81,209,235,148,210, 50, - 87,251,249,251,251,239, 73, 77, 77,237, 28, 18, 18, 82,175,149,198,102,179,225,202,149, 43,193, 93,186,116,249, 21,128,203, 10, -221, 55,130,211, 27, 45,114, 43,225, 46,243,176, 46,212,213,235,208, 45,129, 32, 96,244, 71,139,158,105,148,125,249, 92,163, 73, -139, 63,111,217, 42, 72,213, 55,181,160, 50,199,211, 15,148, 41,181,219,123,222,243, 64,191,201,207,189,168,254,239,241,211,248, - 41,233, 55,148, 86,152,192, 50, 12,244, 90, 21, 90,182,108, 78, 86,174,251, 42,232,227, 15, 86,174, 80,106,244,137,198,242,226, -135,188, 57, 33,181,138,155, 53,227,145, 46,234,192, 0, 30, 16,120,188, 52,184,163,250,213,239, 83,102, 1,120,197, 83, 14,135, -200,218,187, 87,149,151,155,139,249, 17, 17,224,108, 54, 40, 24, 6, 10, 66,160, 96, 24,168, 21, 10, 12,218,176, 1, 11,118,239, - 86,205,185,255,126,159,216,250,151, 65,171,213,142,107,217,178,229,178,245,235,215, 7, 54,109,218, 20,106,181, 26, 6,131, 33, -232,204,153, 51,119,189,240,194, 11, 99,252,252,252,102,151,148,148,172,189,213,243,244,193,135,219, 21,246,234,231,117, 54,137, -119, 55,246, 79,129, 97,152,200,204,204,204, 16,149, 74, 5,158,231,237,221, 0, 4,199,131,180, 93, 8, 1,112, 20,170, 69,171, - 86,173, 44,238, 56,181, 90,237,123,121,121,121, 3,156, 91,161, 57,243,212, 70,102,102,230,128, 54,109,218,188, 7,160,206,194, -220,254,254,254,243,158,123,238,185,169,237,218,181, 3, 0,199, 60,197,215,130,130, 2, 76,153, 50,197,241, 25,130, 32,224,231, -159,127,126,110,220,184,113, 0,240,130,155,115,143, 14, 9, 9, 33,147, 38,185,175, 81, 52,119,238, 92,204,157, 59, 23,239,188, -243, 14,145, 72, 36,110, 59,180,223, 40, 78, 79,181,200, 63, 9, 71, 48,124,173, 10,241,181,118,219, 73,106,246, 59,116, 4,231, -123,237, 58,100,168,176,107,225,170,245,227,231,143,237, 73, 62,122, 97, 64,236,211,239,236,249,173, 77,132,178,247,201, 44, 99, -122,125,199,114, 82,197,147,221,122,223,223,119,202,212, 25,234,207,191,221,135, 51,167,254, 66,234,129, 47,106,236,211,233,190, -113,200, 41, 40,195,184,201, 47,105, 8,203,245,149, 42, 84, 79, 90,170, 42, 63,242,100,110,109, 8, 9,109, 19,160,250, 79,183, - 46,109, 37,153,202, 51, 8,243, 87,162,103, 66, 11, 73,212,143,127,255,167, 13, 33,111,159,164,180,222, 94,133,181, 69,214,250, - 81,163,208,203,106, 69, 8,203,130, 37, 4, 44, 0,134, 16, 84,153, 76, 56, 58,122, 52,186,108,222,140,215,119,236, 80,205,123, -240, 65,175,197,150, 74,165,250,216,104, 52, 46,165,222, 23,110,187,101, 32,132,180,212,106,181,179, 74, 75, 75, 71,223,234,185, -136, 32,132,132, 3,200,175,253,116, 76, 8,145, 2,208, 83, 74,189,234, 44,172, 80, 40, 38, 60,246,216, 99, 43, 87,175, 94,173, -202,205,205, 69, 86, 86, 22,120,158,135, 66,161, 64,108,108, 44,217,179,103, 79,224,140, 25, 51,150,235,116, 58,121,105,105,233, -219, 94,204,147,145, 72, 36, 99, 3, 2, 2,134,132,134,134,134,228,231,231,231, 23, 21, 21,237, 48,153, 76, 31, 53,244,201,222, -206,249,120, 76, 76,204,144,136,136,136,208,204,204,204,130,140,140,140,237, 38,147,233, 99, 74,105,131, 26, 53,219,121,195, 1, -116,128,189, 90, 61,128,236,152,152,152, 19,151, 46, 93,242,174, 75,179,123,206,172,152,152,152,147,222,114, 18, 66,212, 0,182, - 0,136,168,103,215, 44, 0, 35,168,151,214,108, 31,174, 31,162,144,162,148,130, 16, 82, 67, 80,185, 27,251,167,161, 84, 42,241, -197, 23, 95, 64, 34,145, 64, 34,145,160,168,168, 8,145,145,145,142,109,169, 84,234, 88,111,220,184,113,189,124, 60,207,119, 97, - 89, 22,229,229,229,224,121,222,177, 20, 23, 23,131, 82, 10,185, 92, 14,158,175,110,231,228, 52,222,197, 21, 31, 33,100,120, 68, - 68, 4, 62,255,252,115,152,205,230,107,198,117, 58, 29,142, 31,191,218,100,132,101, 89,116,237,218,149, 33,132, 12,135, 27,161, - 69, 72,117,209,205,137, 19, 39,130,101, 89, 71, 75, 61,113, 93, 92,120,158,199,220,185,115, 97,255, 91,185, 61,247,155,193,121, -187,193, 93,133,120, 74,105, 54,128, 58, 99,180, 92, 53,142, 5, 0,180, 10,211, 60, 51,109,212,189,149,179,199, 39,210, 87,199, -220, 71, 95, 30,213,151,222,223,187,253,183, 44,199,145,195, 39,175, 32,210, 15,248,120, 74,231,232,168, 32,245,241,118,129,218, -150,181,143,167, 53, 27, 74, 71,168,212,186, 55,158,121,254, 37,205,206, 95,255,198,149,244, 43,215,136, 44, 0,248,227,167,143, -145,157,149,137,148,212, 12, 60,254,228,179, 26,157, 78,255, 6, 33, 36,162, 46,206,218,240,211, 74,223,156, 57,162,167,162,220, -154,133, 50,127,128,109, 38,131, 68, 85,129, 25, 15,116,144,235,180, 82,151,173, 42,156, 57,229, 50,217, 79, 75,246,236,113,136, -172, 30, 38, 19,228, 60, 15, 27,207, 59, 68,150,217,102,131,209,108, 70,120,121, 57,206,143, 27, 7,106,181, 98,246, 55,223,168, -228, 50,217, 79,158,204, 83, 4,195, 48,131,117, 58, 93, 18, 33,228,154,107, 87,223, 60,111, 20,188,225,180,139,172, 36, 66,136, -219, 86, 75,255,212, 60, 9, 33, 12, 33,100,225,248,241,227,143, 53,111,222,124,159, 93, 88,137, 99, 92,243,230,205,247,140, 31, - 63,254,191,132,144,185,132,144,107,190,235, 46, 56, 27, 69, 68, 68, 44, 90,189,122,181,234,236,217,179,200,204,204,132,213,106, -197, 99,143, 61, 6,158,231, 97, 52, 26, 97, 54,155,177,116,233, 82,117, 96, 96,224, 44, 66, 72,116,125,156,118, 94,214,207,207, -111,227,166, 77,155, 38, 94,186,116, 41,236,151, 95,126, 97,254,254,251,239,208, 21, 43, 86,140, 11, 12, 12,220, 76,170, 27,174, -122,124,238,226,249,135,135,135,127,244,221,119,223, 61,115,252,248,241,200,175,191,254, 90,242,251,239,191,135,127,240,193, 7, - 79,133,135,135,111, 38,132,184,116, 53,184,251, 27, 17, 66,238, 82,169, 84,253,167, 79,159, 46, 28, 58,116, 40,243,208,161, 67, -153, 43, 87,174, 68,175, 94,189,122, 44, 88,176, 32,190,129,156, 9, 90,173,246,158,233,211,167, 11,251,247,239,207, 58,124,248, -112,198,242,229,203,153,123,238,185,167,231,226,197,139, 59,184, 58,206, 5,231,150, 67,135, 14,245, 73, 79, 79,111,154,145,145, -209, 36, 35, 35, 35, 38, 35, 35, 35, 38, 51, 51, 51, 58, 59, 59,187,113, 78, 78, 78, 84, 94, 94, 94, 84,114,114,114, 79, 0,159, -121, 51,207,134,194,199,121, 21,246,239,114, 10,165, 20, 6,131, 1, 59,119,238, 4,170,173, 87,119, 57,139,172,210,210, 82,100, -103,103,139, 99,156, 59,206,155, 52, 79,240, 60,239, 16, 82, 63,255,252, 51,198,143, 31, 15,131,193,224,120,143,227, 56,199,186, -120, 76,125,156, 0, 28, 34,234,240,225,195,152, 52,105, 18, 86,174, 92,137,207, 62,251, 12,223,127,255, 61, 12, 6,131, 67,108, -217,108,182,122, 57, 11, 10, 10, 32, 8,158, 61, 51, 81, 74, 81, 82, 82, 82,239,185,139,112, 22, 64, 28,199, 93, 35,138,196,197, -197,103,221,112,206,219, 25,174, 42,194,123, 2,199,151,219,110,170,235,235, 60, 24, 23, 19, 54,107,217,212,225, 74,240, 22, 80, -171, 17,176, 84, 2,150,114, 8,230, 74, 16,169, 18,176, 26, 17, 44, 55, 96,203,228, 56,221,203,159, 95, 56,213, 58, 88,151,120, - 42,191,244,135,186, 62,136,225,164,143, 15, 31,251, 92, 96, 70, 94, 41, 50,115, 75,192, 50, 87,239,123,241, 3,198,130, 99, 25, - 28,249,177,218,112,197,176, 44, 74, 42, 76, 40, 46,183, 96,216,216,169, 1, 31,174,124,237,113, 0, 75,221,157, 72,123, 66, 98, -187, 71, 4, 60,210,166, 77, 99,230,148, 60, 21,241,247, 31, 0, 47, 0,116,255,131,184,171, 40,132,109,245,147,236,145,246,132, - 44,250,155,210,179,238,120,228,122,189,210,191, 67, 7,204,143,136, 64,111,171, 21, 82, 74,113,111,110, 46,254,154, 58, 21,166, -175,190, 2, 3, 64,250,232,163,232,183,106, 21,126,141,136, 64,152,209,136,226,105,211, 16,252,195, 15,144,234,116,117, 6,205, -187,130, 84, 42,181,172, 95,191, 62,226,169,167,158, 74, 34,132,244,189,157, 45, 91,132,144,150, 1, 1, 1, 73,111,188,241, 70, -232,156, 57,115,178,111, 16,103,168, 90,173,222, 90, 81, 81, 49,213,219, 39, 90,187,112, 90,184,118,237,218,167, 39, 78,156,168, -127,234,169,167,232,249,243,231,245, 0, 68,235, 72,112,175, 94,189,154,175, 95,191, 62,172,115,231,206,207, 77,154, 52, 73, 74, - 8,153, 93,159,149, 71,163,209, 76, 94,191,126,125, 80, 65, 65, 1,202,203,203, 29, 63,178, 25, 25, 25, 80, 42,149,142,166,234, - 18,137, 4,111,188,241, 70,224,228,201,147,167, 2,152, 90,223,124,229,114,249,216, 53,107,214,180, 24, 56,112, 32,151,150,150, - 6,134, 97, 32,151,203, 49,106,212, 40, 73,101,101,101,244,252,249,243, 39, 2, 88,227,205, 53,144, 72, 36,143,175, 91,183,174, -101,143, 30, 61,184,212,212, 84,116,239,222, 29, 71,142, 28,193,163,143, 62, 42, 41, 43, 43,107, 50, 99,198,140,241,112,241,132, -229, 10,132,144,112,149, 74,213,238,151, 95,126, 73,143,138,138,114,252,176, 52,105,210,132, 79, 76, 76, 52,164,166,166,198,253, -246,219,111,133,221,187,119,247,184, 97, 57, 33,164,145, 74,165,106,181,107,215,174,236,249,243,231,247, 95,187,118,237,195, 0, -208,165, 75,151,237, 11, 22, 44,216,103, 48, 24,218,238,223,191,223,208,171, 87, 47,143,122, 18, 2,136, 8, 15, 15,231,167, 76, -153,162,113,183,211,134, 13, 27,138, 1, 52, 38,132, 52,165,213,141,182,125,248, 7, 64, 41,181, 17, 66,226, 9, 33, 41, 59,119, -238, 68,215,174, 93,177,115,231, 78, 36, 38, 38,166,216,199, 81, 82, 82,130,227,199,143,163,119,239,222, 64,117, 35,249, 91, 18, -171,197,243, 60, 56,142, 67, 70, 70, 6, 54,108,216,128,197,139, 23, 35, 54, 54, 22, 86,171,245, 26,177,101, 23, 68, 30,153, 96, -108, 54, 27,142, 30, 61,138, 79, 54,111,198,236, 89,179,160,213,106, 1, 0, 22,139, 5,134,162, 34, 40, 20, 10,135, 24,115, 7, - 74,233,214,115,231,206, 77,141,140,140,172,225, 50, 20, 95, 1, 64,163,209, 64, 16, 4,216,108, 54, 84, 85, 85, 97,229,202,149, - 54, 74,233, 86,119,188,162,184, 99, 89, 22, 83,167, 78,133,201,116,181, 15,121, 7,123, 76,114, 76, 76, 12, 58,118,236,232,216, -102, 24,198,173,208,112,230,252,240,238,118, 48, 58,237, 29, 55,119, 57, 0, 32, 50, 50, 18,113,113,113, 8, 15, 15,119,201, 89, -151, 22,185,213,168, 29,147,213,160, 24, 45, 87,157,178, 79, 93,202, 89,250,212,140,229,203,213, 10, 86,242,252,144,246,104,172, -151, 2,202, 0, 72,123,191, 12,162,143, 6, 0, 80,195, 69,224,167,151,177,226, 17, 3, 51,241,211,170,111,155, 7, 4, 4,159, - 55, 24,174, 9,194,147, 72, 21,253,154,181,104, 73,174,100, 27,192,113, 28,212,126, 65,184,123,200, 11, 96, 89, 6, 26,125, 16, - 8,111,116,236,203, 50, 44, 56,150,131,161,204,136,152,166, 45, 24,185, 66,217, 15,245, 8, 45,157,159,100,205,244,145,119, 43, - 10,109, 25, 80, 54, 86,128, 23,111,167, 17, 50, 48,129,101,120,113, 80,172,114,226,246,191,215, 0,184,199,147, 11,195,218,108, - 8, 97, 89, 88, 40,197, 95, 83,167, 34,126,221, 58,164,216,199,226,215,173, 67,202,196,137, 8,144, 72, 32,103, 24, 80,171,245, - 26,159,190, 39, 32,132, 96,200,144, 33, 40, 40, 40, 8,157, 53,107, 86,131,197,150, 82,169,252,132, 16, 50, 88, 34,145, 88, 8, - 33, 96, 24,198,209, 4, 92, 92,183, 88, 44, 82,150,101,119, 21, 20, 20,120,237,242, 35,132,180,244,247,247, 79, 58,116,232, 80, -168, 90,173,198,220,185,115,189,165,168,139, 51, 84,171,213,254, 62,126,252,248,198,159,124,242,201, 15,132,144, 65,158,138,173, -218, 34,107,221,186,117,197, 27, 54,108,248,208,217, 69, 72, 41,205, 38,132,124,212,185,115,231,103, 38, 78,156,168, 7,240,244, -164, 73,147, 80,159,216,146,203,229,125,155, 53,107, 86,227,169, 86, 46,151, 3, 0,212,106, 53,252,252,252, 32,149, 74, 97, 50, -153, 16, 31, 31, 79,100, 50, 89, 79, 79,230,172,213,106, 7, 63,242,200, 35,220,193,131, 7,145,147,147, 3, 63, 63, 63,168,213, -106,240, 60,143, 9, 19, 38, 72, 87,173, 90,117, 63,188, 20, 90, 81, 81, 81, 15,247,239,223,159, 59,113,226, 4, 46, 93,186, 4, -147,201,132, 51,103,206, 64,167,211,225,137, 39,158,144, 46, 91,182,236, 65,120, 41,180, 0,180,155, 56,113, 98,174,179,200, 18, -161, 86,171, 73,203,150, 45, 13,129,129,129, 9, 0, 60, 22, 90, 0,218, 61,251,236,179,121, 75,150, 44,233,189,103,207,158,151, -197, 55,247,236,217, 51, 3, 0,222,126,251,237,253,193,193,193, 9, 0, 60, 21, 90,160,148, 10,255,247,127,255,119, 89, 38,147, - 65, 34,145, 64, 38,147,213, 88,164, 82, 41, 24,134,209,218,119,191,243, 30,159, 61, 4, 33,164, 51,128,183, 80,157,145, 53,139, - 82,122,248, 22, 79, 9,128,163, 73,124,124, 98, 98,162, 67,108,237,222,189, 27,131, 6, 13, 66,113,113, 49, 78,156, 56,225, 44, -178,110, 85,140, 22, 4, 65,128, 68, 34,193,242,229,203, 97,177, 88,240,233,167,159, 98,219,182,109, 53,126, 67,117, 58, 29,222, -121,231, 29,175,220, 92, 60,207, 99,227,198,141,120,121,198, 12,135,200, 2, 0,169, 84,138,176,208, 80, 4, 6, 5,225,194,133, - 11,245, 10,173,162,162,162,215,119,236,216, 1,119,193,240, 59,118,236,112,172, 59, 7,195,123, 50, 79,150,101, 97, 50,153,112, -239,189, 87, 91,197, 62,251,236,179,142,117,131,193, 0,150,101,197,107,225,209, 5, 96, 89, 22, 70, 10, 12, 81, 92,125,111,240, -139, 47, 58,214, 11, 10, 10, 92,114,186,210, 34,183, 27, 92,100, 29,198, 83, 74, 83,236, 33, 18,137, 0,118,218,221,137,238, 99, -180,206,230, 85,172,230, 72,118,199, 37, 83,238, 27,219, 56,196, 15,180, 60, 23,210,123, 94,199,159,249, 74, 44, 95,185, 11, 0, -240,210,168, 78,232, 48, 96, 33,204, 31,223,135,169,221, 89,217,232, 12,211,116, 0,115,106,115, 81, 42,180,138,108, 20,129, 63, -207, 31, 7,199,178,144,249, 5,193, 47, 32, 20,130,205,140,146,188, 75, 72,250,250, 61, 0,192,218,141, 91,193, 48, 12, 56,142, -133,201,204, 35,182,113, 4, 4, 65,112,153,233, 0, 0,109, 8,185,123,104,203,240,174, 81,209,122,114,194,255, 18, 90,134, 4, -214,220,225, 46, 57, 98,179, 52,164,187, 70,217,165, 13, 33,119,159,164,244, 80, 61,215, 17,114,134, 1, 67, 8, 84, 82, 41, 76, - 95,125,133, 20, 84, 11, 44, 0, 72,153, 56, 17,204,183,223, 66, 43,151,131, 37, 4,156,221, 4,237, 45,196, 12,151,184,184, 56, -172, 93,187, 54,116,242,228,201, 13, 18, 91, 85, 85, 85,139,116, 58, 93,255,143, 62,250, 40,244,145, 71, 30,185,102,252,252,249, -243,232,221,187,119,110, 78, 78,206, 34,111,231,232, 44,178,244,122, 61,210,211,211,175,219,175, 46,138,172,159,127,254, 57, 58, - 50, 50, 18,241,241,241,193, 47,189,244,146, 55, 98,107,142,179,200,154, 52,105,210,223, 0, 66, 8, 33,181,133, 10,177,143,181, -119, 18, 91, 37, 0, 92,186,145,109, 54, 91,180, 90,173, 70, 94, 94, 30,198,142, 29,139,179,103,175, 26, 64, 35, 34,170, 61,216, - 49, 49, 49,184,112,225, 2,130,131,131, 65, 8, 9,241,228,156,131,131,131, 67,205,102, 51,158,124,242, 73,164,167, 95, 13,103, -108,212,168,145,120, 77,131, 60,225,113, 70,104,104,104,168,209,104, 68,175, 94,189, 80, 85, 85, 5, 0, 24, 49, 98, 4, 36, 18, - 9,242,242,242, 32,145, 72,188,230, 4, 16,148,152,152,232,178,180,138, 78,167,179,248,251,251,183,246,146, 51,240,193, 7, 31, -204, 92,183,110,221, 53,137, 45, 71,142, 28,121, 40, 32, 32, 96, 79, 64, 64,128, 71,238,115, 39, 8,206,162, 74, 42,149,214, 16, - 90, 18,137, 4, 12,195, 52, 56, 70,237, 14,194,155, 0,196, 44,184,247, 1,116,188,133,115,169, 1,103,177,181,123,247,110,180, -109,219, 22, 69, 69, 69, 72, 77, 77,189,229, 34, 75,132, 32, 8,224, 56,206,241,144,172, 80, 40, 16, 31, 31,239, 16, 89,132, 16, - 84, 86, 86,130,227, 56,241,247,218,163, 31,191,226,226, 98,132,135,133, 65,171,213,162, 69,108, 44,206,217,127, 71,196,117,185, - 92, 14, 66, 8,108, 54,247,134,147,225,128, 0, 0, 0, 17,188, 73, 68, 65, 84, 60,123,230,224, 11,112, 19,111,213, 64, 80, 0, -245,186,240, 34, 34, 34, 32, 8,130,248,155, 95,159, 37,193, 35,206,160,160, 32,148,151,151,123,202,121, 91,194,133, 69, 43, 30, - 64, 10,128, 68, 74,233, 58,123, 96,124,141,242, 14,125, 0, 36,193, 41,165,146, 16,194,180, 14,213,108, 88, 50,185,255,216,251, -218, 6,193,152,127, 9, 10,109, 16,136, 62, 6,203, 87,238,194,137,139,133, 0,128,229,159,253,129,207,231, 15, 6,148, 1,136, -243, 43, 64,152,150,123, 4,117, 8, 45, 2, 74, 4, 74,193,177,140,221,119,203,130,101, 25, 24,242,179,177,234,245,167, 1, 0, -107, 55,110,195,206,253,169,136,108,214,246,170, 31,151, 16,128,186,255,114, 7,251, 73,215, 77, 30,218, 77,153, 75,178,161,143, - 80, 65,161,168,165, 31,253,165, 32, 49, 12,166,244,141, 84, 29,221, 81,181, 14, 64,189, 55, 10, 5,195, 84, 7,191, 19, 82,103, - 32, 27, 99, 31, 99, 9,169,174,254,234,161, 15,221, 25,162, 96,209,104, 52, 8, 13, 13,197,226,197,139, 67,103,206,156,249, 41, -188,108, 64, 77, 41, 61, 67, 8,233, 59, 97,194,132,164,194,194,194,208,184,184, 56,104, 52, 26,104, 52, 26,228,230,230, 98,216, -176, 97,185, 57, 57, 57, 13,181,150,109, 30, 63,126,124,168, 84, 42,197,249,243,231, 17, 16, 16,224, 16,136, 13, 1, 33, 36, 84, -167,211,253,190,103,207,158,232,230,205,155,227,244,233,211,104,221,186, 53,182,108,217, 18,252,216, 99,143,121, 36,182,148, 74, -229, 16,187,112,194,196,137, 19,245, 19, 39, 78,236, 3,160, 79,125,159, 61,113,226, 68,253, 11, 47,188,240, 32,220, 8, 45,137, - 68,146,110, 48, 24,194,148, 74, 37,190,254,250,107,104, 52, 26,168, 84, 42, 68, 68, 68,192, 96, 48, 64,165, 82,129, 82, 10,171, -213, 42,254, 88, 20,122,114,222,249,249,249,185, 60,207, 71,253,240,195, 15,200,207,191, 90, 91, 47, 58, 58, 26, 37, 37, 37,224, -121,222,211, 90, 50, 14,100,101,101,229, 18, 66,162,254,252,243, 79,164,165,165, 97,208,160, 65,248,246,219,111,209,169, 83, 39, - 0,128,217,108,110, 72, 17, 63,158,101, 89,151, 63,126,246, 39, 80,255, 27,201,137,234,155,151, 87,156,130, 32, 8,162,200,114, -126,117, 22, 95,245,124,230,191, 5,126, 78,235,183,172, 84, 66,125, 24, 52,104, 16, 12, 6, 3, 52, 26,205,109, 21,159, 35, 90, -180,230,205,155,135,167,159,126, 26,161,161,161,120,249,229,151,193,113,156, 99,113,246, 12,120,131,144,208, 80,183,227, 98, 64, -188, 59, 16, 66,180,126,126,126,243, 24,134, 25,206,122,112,225,120,158,231, 5, 65,216, 90, 82, 82,226,182,188,131, 24,184,238, -201,223,194,249, 26,212, 51,215,235,230,172, 75,139,220, 14,168,157,109, 88,151, 69, 11, 87,179, 14,175,105, 5, 36,158,101,146, -221,100,151, 4, 92, 21, 89,111, 60,221,111,236,125,109,253,177,125,239, 97, 72, 45,197,128,217,229,223, 13,224,173, 32, 82, 53, - 66,253, 36,145,117, 13, 19,134, 61,157,145,153,133, 64,127,141, 93,100,217, 23,134, 65,135,182,213, 15,179, 59,247,167, 34,178, -105, 91,112, 44, 11,142,101,161, 81,202,145,155,147, 13,142, 99, 78,187,250,216,246, 28, 25, 58,180,101, 84,140,127,160, 4, 5, -193,102,132,135,170,234,222, 49, 65,139,200,112, 25, 6, 6, 42,162,219,115,100,168,235, 19,169,142, 33, 16,133,150,197,102,131, -244,209, 71, 29,238,194,148,137, 19, 17,191,110, 29,248,135, 31, 70,133,229,106,166,111, 67, 44, 90,226, 23, 82, 20, 68,115,230, -204,201, 45, 44, 44,124,220,107,162,234, 57,159, 41, 42, 42,234, 59,107,214,172,220,130,130, 2,168, 84, 42,100,103,103, 95,151, -200, 2, 0,163,209,248,196,186,117,235,114,147,146,146,160,209,104,160,213,106, 27, 44,180, 68, 75,214,235,175,191,222, 56, 42, - 42, 10, 23, 46, 92,128,159,159, 31, 2, 3, 3,209,161, 67, 7, 28, 60,120, 48, 56, 42, 42,234, 7,123,192,172,187, 57,125,183, -110,221,186, 98, 0, 88,183,110, 93, 49, 33, 36,153, 16,242, 1, 33,228,253, 90,203, 7,132,144,100,231,125,141, 70,227, 55,238, -184,205,102,115,114,106,106, 42, 85,169, 84, 96, 89, 22, 22,139, 5, 10, 69,181, 13,156,101, 89,148,150,150,194,104,172,118,115, - 31, 59,118, 12, 86,171,245,128, 39,231, 94, 86, 86,182,251,227,143, 63,182, 70, 69, 69,161,125,251,246, 72, 72, 72, 64,247,238, -221, 17, 29, 29,141,121,243,230,153, 43, 42, 42,118,123,194,227,140,172,172,172,157, 91,182,108,177, 70, 69, 69, 33, 33, 33, 1, -114,185, 28, 29, 58,116, 64, 68, 68, 4, 22, 47, 94,108, 46, 41, 41,241,154, 19,192,149,227,199,143,187,252,165, 84, 42,149, 58, - 0,245,102,239,214, 66,250,209,163, 71,217,110,221,186,109,175, 61,208,165, 75,151,237, 26,141,198, 15,128,183,113,127,212, 89, - 92,201,229,114,199, 34,190,207,113,220,255,130, 69,107, 42,128,191, 1, 92, 0,240,114, 61,251,254,163,112, 14,124, 47, 44, 44, - 68,106,106, 42,142, 29, 59,134,110,221,186,225,192,129, 3,128, 61, 64,254, 22,206, 15,148, 82, 72, 36, 18,196,197,197,225,133, - 23, 94,192,174, 93,187,112,230,204, 25, 88,173, 86,135, 16, 18, 99, 50,189,177,104, 73,165, 82,132,134,134,194,106,181, 58,172, - 89, 0,112,238,236, 89,112, 28, 7, 65, 16, 96, 54,155,235,181,104,249,249,249,205, 91,191,126,253,115, 5, 5, 5,225,249,249, -249, 33,206, 75,110,110,110, 72,118,118,118, 72,102,102,102, 72,122,122,122,200,229,203,151, 67, 46, 93,186, 20,190,116,233,210, -231,252,252,252,230,121, 50, 79,150,101,209,161, 67, 7, 60,251,236,179,142,101,245,234,213,142, 37, 41, 41,201,235,224,117,150, -101, 17, 55,119, 57, 6,231, 83,199,178, 43,152, 56,150, 19, 47, 77,114,199, 89, 67,139,220, 46, 16,179, 13,157, 27, 75,215, 6, -165, 52,155, 82,186, 78,116, 23, 58, 23, 47,173, 29, 12, 15, 0,104, 21,166, 90,248,198,132,222, 99,239,109,237,135,239,246,254, -129,249,223, 92, 60, 29, 59, 54, 56,174,185,127, 62,132,252, 84,188, 52,170, 19,150,127,246, 7,128,106,215,161,144,119, 2,180, -232, 2,168, 54, 10,151, 12, 5,117,186, 29,108,230,170,125, 23,207,159,237, 23,215,174, 51,147, 83, 80, 94, 35,253, 51,190,239, - 48, 16, 66,208,168,105, 91,176, 28, 7,150,101,192,177, 44,244, 58, 5, 82,255,252, 83, 48, 25,141,251,234,226,236, 75, 8, 23, -166,145,173, 30, 53,176,131, 34, 75,150,135,224,112, 53,164,146,106, 17, 64, 47, 14,171,185,179,146, 3,218,105, 49, 46, 51, 80, -185, 47,183,106,117, 95, 66,182, 39,185, 8,192, 20, 4, 1, 26,185, 28, 85, 38, 19,140, 54, 27,250,174, 90,229,112, 23, 50,132, -224,191, 0,218,175, 90,133, 67, 95,125, 5,157, 76, 6,200,229, 30,103,133, 56, 67,124, 66,202,205,205,197,136, 17, 35,174, 75, - 16, 1, 87, 45, 91,147, 39, 79, 78, 90,188,120,113,232,156, 57,115,110, 24,231,203, 47,191,156,244,217,103,159,133, 54,105,210, -164,161, 84,208,104, 52, 51, 4, 65,208, 47, 91,182, 44,103,197,138, 21, 53,158, 20,197,107, 97, 54,155,229,122,189,126, 57,128, -126,110,168,230, 79,154, 52, 73, 10,224,105,187,101,171,253,164, 73,147, 14, 81, 74,103, 59,239, 68, 8,153,187,118,237,218, 17, - 78, 46,198, 15, 0,172,114, 55,199,210,210,210,247, 95,120,225,133, 39,127,253,245,215, 32,133, 66, 1, 66, 8,164, 82, 41, 90, -180,104,225,200,162,145, 72, 36,160,148,226,197, 23, 95, 44,200,203,203,243,168,188,131,201,100,218, 56,127,254,252,126, 70,163, - 49,122,220,184,113, 82,127,127,127,228,230,230,226,173,183,222, 50,111,220,184, 49,189,162,162,194,219, 88, 42, 88,173,214,141, -175,189,246, 90,223,242,242,242,166, 79, 61,245,148,180,164,164, 4, 70,163, 17,211,167, 79, 55,127,244,209, 71, 25, 70,163,209, -235,130,191,221,187,119, 63,127,249,242,229,158,149,149,149, 69, 42, 85,205,135, 22,137, 68, 66,212,106,117,103, 0,155,189,225, -140,143,143,191,112,229,202,149,110, 11, 23, 46, 76,182, 90,173,146, 35, 71,142, 56,130,225,223,125,247,221, 36,133, 66,209, 31, -222, 7,237, 11,114,185,188,134, 5,171,246, 58,199,113,255,122,139, 22,165, 52, 9,213, 37, 51,110, 43,212, 22, 89, 39, 78,156, - 64,191,126,213,255,210, 7, 14, 28, 64,143, 30, 61,112,224,192, 1,244,236,217,243,150,150,119, 16,133, 22,199,113,120,236,177, -199, 48, 96,192, 0, 52,110,220,184, 70,182,161,184,238,141,216,176,217,108,104,215,174, 29, 76,102, 51,164, 82,169,195, 53,201, -113, 28,130, 67, 66,112,254,252,121,143, 44, 90, 12,195, 12, 31, 50,100, 8,115,242,228, 73,140, 28, 57, 18,159,124,242,137,203, -125, 71,143, 30,141, 47,190,248, 2, 67,134, 12, 97, 94,121,229, 21,183,229, 29,196, 32,116, 79,206, 73,188, 79,215,103,209,187, - 81,156,206, 90,228,118,131, 83,105,135,107, 64,106,214,208, 2,112, 85,108,213, 85,176, 20, 77,131, 85,227, 6,180,224,240,221, -190, 63, 48,255,187, 43, 27,121, 74,191,254, 58,165,232,251,151,123, 0,150,173,163,208, 97,216,230,106,119, 33, 0, 33,239, 4, - 44, 91, 71,131,168,130,176, 63, 83,130, 18,163,165,206, 14,218, 54,155,229,147,111, 63,125,239,133,110,107,122, 6,135,135,248, -193, 80, 98,116,136,173,148,164,109, 0,128,161,147, 22,129, 99,171, 93,138, 58,141, 2, 74, 41,139,175, 54,189, 93, 96,177, 84, -213,249,237, 42,147, 48, 79,191,114,119, 11, 63,153,218,138,210, 48,138,182,193, 87,147,254, 72,211,106,206, 26,130,235, 46,127, - 4,157, 40,194,168,230, 26,221,219, 39,139,159, 6,176,186, 54,167,169,184,216, 88,252,231,159,202, 65,235,215,227,200, 19, 79, -160, 17,207, 35, 57, 34, 2, 1, 18, 9,252,228,114, 48,132,192,248,253,247, 56,244,245,215, 8,149,203, 1,173, 22,182, 5, 11, - 96, 74, 77,133,181,172,204, 88,155,207, 29, 8, 33, 56,119,238,220,117, 91,157,156, 33, 10,163,153, 51,103,126, 90, 88, 88,248, -248,141,228,124,226,137, 39,146,246,238,221,235,222, 30,238, 6,101,101,101,211, 0, 76,187, 1,243, 17, 8, 33,179,237,133,241, -158,158, 56,113,162,254,232,209,163, 79, 18, 66,214,136, 79, 19,132,144,144,241,227,199, 79,168, 37,178,234,205, 58,164,148, 94, -209,104, 52, 11,166, 77,155,182,104,197,138, 21, 26, 49,240,253,175,191,254,130,205,102,131, 68, 34, 1,207,243, 24, 63,126,124, -121, 97, 97,225,114, 87, 21,157,235,224,181, 17, 66, 70, 47, 90,180,104,252,219,111,191,253, 0,203,178,193, 60,207,231, 27,141, -198, 31,140, 70,227,186,134,100, 93,217,175,195,152, 57,115,230,140, 89,185,114,229, 16,134, 97, 66,108, 54, 91, 65, 89, 89,217, - 14,163,209,216,160,218, 92,135, 14, 29,202, 95,179,102,205,197,252,252,252, 86,145,145,145, 37, 26,141,198,108, 54,155, 89,165, - 82,169, 83,171,213,241, 0,126, 3,112,202, 27,206, 99,199,142,229,124,240,193, 7,105, 38,147, 41,238,131, 15, 62,216,175,211, -233,246, 18, 66,136, 84, 42,245, 87, 42,149,253, 0, 36, 3, 56,231, 13, 39,195, 48,130,179,245,170,118,124,150, 76, 38,251, 95, -137,209,186,237,224, 92,222,161,160,160, 0, 39, 79,158, 20, 69, 86, 60, 0,244,236,217, 51, 69, 20, 91,199,142, 29, 67, 66, 66, - 66, 10, 33, 68,242, 79,103, 30, 58, 91,180, 68, 65,213,184,113, 99,199,182,243,226, 20,163,229, 17,120,158,135, 84, 42, 5,199, -113, 8,143,136,112,124, 22,165, 20,231,207,159,135,193, 96,240, 72,104,177, 44,203, 18, 66, 48,114,228, 72,143, 62,247,255,254, -239,255,144,156,156, 12, 79,220,140,118,126,196,196,196,212,187,143, 29, 30, 9, 32,150,101, 17, 25, 89,167, 99,203, 35, 78,103, - 45,114,187,192,217, 77,232, 42,227,144,186,232,115, 8,184, 8,134,191,144,103, 92, 56,250,173,131,175,156,202,169,250, 58, 53, -183,242, 5, 0,116,235, 9,213, 79, 29,130,217,251,238,107,153, 1,211,186,158, 32,186,234,226,109,180, 60, 27, 68, 29,138, 12, -161, 17,230,110, 63,157, 99, 3,169, 51,254,133, 82,154, 37, 85,168,102,111, 90,255,238,138,241,147, 95,212,156,184,144,139,146, -114, 19, 88,246,234,151, 87, 12,130,215,169, 21,136, 10,243,195,103, 31,190, 85, 86, 86, 90, 60,135,186,232,123,216, 88, 43,157, -212,191,115,115,185, 52,188, 2,113,237, 71,128, 85, 92, 45, 50, 75,115, 92,120, 7,123,252,132,251,175, 84, 40,190,189, 82, 49, - 9,117, 9, 45,179,249,190, 89, 3, 7,254, 56,127,215, 46, 85,151,141, 27,113, 97,252,120, 68, 24,141,144,219, 93,137, 12, 33, -208, 72,165,208, 72,165,213, 34,107,229, 74, 24,109, 54,172,122,226,137, 74,147,217, 60,208,197,117,174, 19, 86,171, 85,218,167, - 79,159, 27, 38,178, 68,216,185,188,138,243,242,132,147, 16,210,119,192,128, 1, 73,148, 82,249,141,228,110,224,124, 68,177,101, - 57,122,244,232,132,253,251,247, 95, 64,205,198,162,197,251,247,239,191,240,212, 83, 79,145, 13, 27, 54,124, 4,224, 53, 79, 11, -120,150,151,151,191,171,215,235,209,187,119,239,215,150, 44, 89, 18,216,169, 83, 39,132,132,132,160,172,172, 12,199,142, 29,195, -212,169, 83, 13,165,165,165, 75,138,138,138, 86,120, 57,103, 30,213,150, 27,175,173, 87,110, 56, 5, 0, 31,219,151, 27,130,103, -158,121,230,175, 11, 23, 46, 20, 6, 7, 7,119,149, 74,165,237, 81, 29, 7,148, 3,224, 35,120, 41,136, 68, 60,253,244,211,127, - 94,184,112,161,160, 81,163, 70,221,236,156,122, 0,153, 0,214, 55,128, 51,235,143, 63,254,136,236,220,185, 51, 35,145, 72, 40, -203,178,144, 72, 36,148,227, 56,106,143,171,161, 0,176, 99,199, 14, 57, 0,175, 91,132,249,112,125,112, 46,239,144,157,157,237, - 16, 89, 78, 5, 75,227,123,246,236,153, 98, 23, 89,226,216, 45,137, 47,163,148, 98,254,252,249, 88,187,118, 45,234,171,104,110, -207,238,115,107,214, 17, 45, 87,162,136,178, 88, 44, 56,113,226,132,163,102,151,232, 46, 20, 75, 59,216,108, 54,183,217,234, 60, -207,243,102,179, 25, 95,126,249,165, 71, 98,235,243,207, 63, 71, 85, 85, 21,248,122, 20,156,115, 41,134,142, 29, 59,194, 96, 48, - 56,146,125,226,227,175,150,202,179, 88,220, 22,194,119,201, 25, 23, 23,135,130,130, 2, 4, 5, 85,231,227, 68, 61,113,213,216, - 99,171,248,119,214, 15,118,103,209, 34,158,150, 36,232,168,215,251,153,100,214,111, 30,106, 43,239, 59, 60,222, 15, 77,195,180, -144, 72, 21,200, 42,181, 97,207,169, 82,172, 79,202, 73, 55, 90,249, 7,206,228, 85, 28,119,199,163, 80,251,253,208,233,238, 1, - 61,158,152, 48, 85, 93,110,226,145,150,118, 25,249,121,217, 96, 8,131,240, 70,145,136,142,142,129, 82,198,224,147,117, 43, 42, - 82, 14,237, 61, 88, 86,106, 24,228,138,235, 1,189,236,208,202, 71,123,116,107,214, 76, 75, 96,179, 2,188, 21,176, 89, 1,193, -254, 42,190, 39,212,252,206,157, 60, 89, 76, 95,249,175,225,247,239,139,205,117,246,172, 26, 78, 72, 15,125, 64,192,143,115,119, -236, 80, 9, 22, 11, 10,167, 77,131,202,102,131,194,254, 84, 2, 0,144,203, 97, 91,176,160, 90,100,141, 30, 93, 89, 82, 92,236, -117, 11,158,224,224,224,143, 11, 10, 10,238,184,202,240,129,129,129,179, 26, 82, 38,226,102,193,158,249, 87, 76, 41,181,212,122, -159, 3, 16, 44, 90,185, 26,192, 27, 19, 28, 28,252, 10,195, 48,221, 41,165,129, 12,195, 20, 9,130,240, 91, 94, 94,222, 82, 74, -233,249, 27, 49,119, 31,188, 7,185, 90, 25,190, 62, 63,118, 30,128,231, 1,148, 81, 74,211,110,250,196,124,168, 1,209,125,136, - 58,178, 11,221,141,253, 83, 8, 12, 12, 60,252,227,143, 63,118,106,218,180, 41,227, 28,198, 32,214,202, 19,221, 91, 28, 87,109, -143,248,245,215, 95,109, 35, 71,142,252, 45, 39, 39,167,183, 43, 78,157, 78,247,211,223,127,255,125,111, 73, 73,201, 53,130,202, -185, 82,188,184, 93, 81, 81,129,201,147, 39,255, 92, 90, 90, 90,103, 11, 30,189, 94,191,114,197,138, 21,207, 13, 29, 58,148, 17, -203, 81, 56, 47,212,222, 46, 72, 92, 44, 22, 11, 54,111,222, 44,188,253,246,219,239, 20, 23, 23,187,116, 29, 70, 68, 68,164,103, -101,101, 69,138,165, 22, 60, 41, 42, 26, 19, 19,147,157,150,150,230,178, 27,195,205,224,188, 19, 65,106, 53,151, 6,188, 16, 90, -118, 2, 18, 23,162, 30, 65,129,225, 12,132,118, 12, 33, 50, 27,197, 25, 80,252,164,226, 42,215, 28,203,162, 30,185,206,164, 42, -213, 20,173,198,255,245,161,143, 63, 27, 24,211, 44,150,132,134, 55, 2, 1,131,220,156, 76, 92,190,120,150,126,243,233,123,133, - 21,165,134,121,149,149,229,239,185,227,105, 67, 72,179, 38, 58,233, 86, 25,143,150, 16,207,163, 86,127,170,218,160, 0, 44, 18, -230,116, 90,153,117,196, 73, 55,110, 31, 81,108,205,254,230, 27,149,172,101,203,107, 10,197, 9,130, 0, 83,106, 42, 86, 61,241, - 68,131, 68,150, 15, 62,248,112,125, 32,132, 52, 69,253, 53,178,172, 0, 50,110,149,197,228,127, 29,228, 54,110, 42, 77, 8, 81, - 7, 4, 4,236,101, 89, 54,218,190, 93, 35,102, 72, 92, 23, 95, 5, 65, 72,203,205,205,237, 79, 41,173,116,195,217, 76,171,213, -190,199,243,124,151,250, 98,154, 40,165, 96, 89,246, 72, 89, 89,217, 20, 87, 33, 8, 55, 43,235, 48, 40, 40,232,252,229,203,151, -155,137, 89,212,206,247,202,218,215, 1, 0,206,157, 59,135, 62,125,250, 92,206,206,206,118,233,103,188, 25,156,183, 43, 92,212, -209,186,126,139,214,141, 6, 33, 36, 66, 42,215,140,145, 41, 21,247, 8, 86, 91, 28, 8,192, 73, 36,167,205, 85,198,125, 38, 99, -249, 38, 87,238,194,127, 18,195, 9,233, 33,151,201,126,146,234,116,202,186,174,147,181,172,204,104, 50,155,239,243,137, 44, 31, -124,240,193, 7, 31,238, 20,144,234, 78, 31, 63, 74, 36, 18,185,125,219,121,236,154,253,109, 54, 91, 85,126,126,254,255,183,119, - 70,185, 13,194, 48, 24, 54,187, 82, 47,208, 61,236,161, 18,119,106,118,167,188,183,151,232,121,216,195,226, 45,242, 28, 72,240, -111, 8, 19,191, 52,105, 98,234, 87, 7,255,134, 16,134,185,205,221,125,241, 96,254, 23, 53, 79,180, 98,140, 83,109,247,214, 97, - 24, 62,166,138,119, 86,101,255,248,182,216, 59, 99,111,166,227,216, 23,187,226, 54, 48,175,244,253,120,236,231, 56,142,225, 0, -113, 34,115, 4,101,114,206,107,185, 45, 76,249, 59, 40,206, 42,223,247,192,172,169,165,149,113,206,122,116,101,222,103,107,169, -163, 56,145, 57,130, 48,165,127,106,184,173,204, 60,110, 96,156,139,190,239,133,105, 61,134,204,196, 89,244,104,173,151, 4,247, - 74,149,231,166, 30,197, 79, 28,114, 63,173,252,111,218, 45, 67,214,108,103,120, 41,175, 39, 1,242,147, 14, 85,246, 41,217,131, -201,106,153,112,213,200,225,181, 3, 15, 52, 83,236, 79,148, 66, 58,160, 63,169,162,225,104,165, 30,217,201,204,180, 15,196, 88, - 33,220,156,137,218,151,218, 65, 17, 25,167, 7, 51,223,102,241,170,100, 34,124,175,229, 29,201, 68,213,146,248, 60,164,150, 60, - 60,175,248,199,204,149, 76, 68, 45, 73, 38,194,247, 91, 48,121,187,165,150, 52, 38,194,247,165,220, 91,185,123,137,111, 23,166, - 9,215,159,113,200,219,135, 60,241,106,234, 60,233,185,131, 60, 94, 36,137,158, 16, 49, 19,201, 99,102,154,233,119,207, 36,108, -142, 66, 98, 6, 32,243, 29,149, 35, 15,191,231, 76, 20, 95,114, 16,121,210,152,214,120, 11,113,154,164, 49,173,190,223,138, 73, -216, 28, 65,106, 73, 48, 97,181, 36,199, 27, 99, 12, 72, 38,170,150,148, 56,205,121,210,152,214,120, 11,113,154,164, 49, 17,231, - 16, 47,238, 30,122, 93,134,233,117, 25,166,233, 77,247, 68,106, 88,250,243,195,219,155, 86,180,188,228, 49, 33, 34,250,237,199, -129, 62,161, 33, 39, 91, 94, 43,111,168, 85, 29,133,251, 4,226, 96,171, 79,172, 20, 95,119,125, 88,182,210, 89, 75,103, 45, 81, -103,181,164,249,102, 28,199, 16, 99,188, 35,153, 86, 73, 38,106, 66,164,140,221, 84, 75,242,179,136, 90, 90, 96,154, 86,156, 75, -227,183,112,247, 82,169,135, 22,209,138, 62, 90,123,136, 77, 2,190, 50, 33, 2,175,146,161,229, 20, 39, 95,137,118, 61,118,114, -136, 51, 93, 41,223,145,204,164,163,236,211,179,150,206, 90,130, 8, 89, 75,194,147,144, 88,209, 62,215,152,136,239,200, 25, 40, -143,122,143, 29, 89, 75, 30,185, 63,154,190, 0, 58, 46,240,138,133, 98, 60, 69, 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, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,158, 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, 6, 98, 75, 71, 68, 0,255, 0,255, 0,255,160,189, +167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7, +217, 11, 26, 16, 56, 55, 2,149,219, 41, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236, 93,119,116, 84,213,222,221,231,150,153,201, +148, 76, 26, 73, 72,161, 5, 8, 45,128, 52,233,210, 65, 17, 21, 17, 80,124,248, 84,244, 9, 10,168,216,136,136,130,180,248,244, +137,128,159,136, 29, 80,186, 10,162, 79,202,147, 34, 93, 64,164, 72,239, 73, 72,239,153, 62,115,207,247, 71,230,142,147, 97, 90, + 96,162, 8,103,175,117,215,157,185,101,223,211,207, 62,191,211, 8,165, 20, 12, 12, 12, 12, 12, 12, 12, 12, 12,161, 3,199,130, +128,129,129,129,129,129,129,129,225, 47, 22, 88,132, 16, 90,131,103,251, 7,203,233, 60,122,221,232,156,181,232,119, 26, 66,206, + 94, 78,206,105,127, 19,119,246,186, 81, 57,101,255, 6,203, 91, 19,206, 96,211, 84, 13,221, 73, 67,237,206,218,226, 12, 85, 62, +242,226, 78, 90, 11,241, 62,237,111,226,206, 94, 55, 26,167,103,250, 9,134,183,166,156,193,164,169,107,112, 39, 13,181, 59,107, +139,243,122,243,145, 31,119,210,235, 77, 75, 62,226,126, 26,110, 1, 8,181, 37,174,106, 2, 74, 41,113,227, 39, 55, 42,167,123, + 56,200,252,161,116,107, 8,177, 53,212,156, 30,225, 25, 42, 76,163,148, 18, 66,200, 54, 0,189, 66,233,247, 80,196,187,135, 95, + 67,194, 91, 83,113, 85, 83,206, 80,165,251,218,230, 12, 85, 94,242,228, 12, 69,186,247, 22,239,181, 24, 71,161,114,103, 72,242, + 82,109,164,121, 47,233,231,186,121, 61, 57, 67,145,151, 60, 57, 67,145,238,255, 12,206, 80,228, 37,111,156,161, 72,247,190,226, +158, 89,176,254, 28, 33,224,153,177,123,223,200, 66,168,182, 68,102,176, 22,151, 27,129, 51,196,113, 52,205,201, 25,202,214, 76, +239, 80,197, 81,109,164,119,119,206, 80,241,123,242,132, 34,158,188,113, 94,175,123,125,184, 51,228,126,191,222,116,255,103,113, +134, 56,142, 66,146,151, 60, 56,123,135,184, 17,208,219,237,255,180, 80,114,134, 42, 47,121,113,231,117,199,147, 55,206,235,117, +175, 15,119,134,220,239,161,168, 67,106,139,247,166,179, 96,213,166,184,170,173,202, 44,148,220,181, 97,197,169, 45, 75, 91,168, +172, 56, 94,120,183,133,144,110,107,168,221,233,116, 31,169, 45,107,235,141, 14,150,151, 88, 94,186,209,242,146,183,116, 67, 41, +157, 70, 8,121,227, 70,107, 60,187,115,134, 74, 8,121,241,251,117,229, 37,207,119, 67,145,151, 2,112,146,218,240,127,168,243, +211,141,136, 27,102,144,123,176,227,123,174,129,175,247,141, 28, 1,181,228,206,222,127, 7,191,215,134, 59, 9, 33,211,106,201, +239,127,151, 48,101,121,137,229,165, 27, 46, 47,121,164,201,222,161,178, 12,133,186, 33,229,201, 25,138,111,184,115,132, 42,141, +214,182,223, 67,153,151,106, 35,238,255, 46,168,177, 5,171,182,187, 77,110,100,206,218,224,174, 37,191,111,171,141,214, 65, 45, +140,235, 10,185, 59, 41,165,211, 16,194, 46, 71,217,207,161,116,107,109,118, 19,214, 70,218,172,205,244, 30,202,113, 30,181,228, +247,191, 75,188,135,220,157,161,202, 75, 94,226,252,186,221,234, 45,252, 66,221,133, 29,202,180, 89,155,156,161,224,174, 13,119, +214, 86,220,255,157,192,150,105, 96, 96, 96, 96, 96, 96, 96, 96, 8, 49, 8, 91,104,148,129,129,129,129,129,129,129, 33,180,240, +217, 69,152,148,148,180, 94,163,209, 52,241,117,191,178,178,242, 74,118,118,118, 31, 22,132, 12, 12, 12, 1, 91,114,132,112,248, +195, 98, 46, 1,160,148,181,238, 24, 24, 24,110, 69,129,165, 82,169, 82,142, 31, 63,158, 42, 73, 18, 28, 14, 7,236,118,187,235, +108,177, 88,112,199, 29,119,212,120,252, 86,221,186,117,183,243, 60,223,176, 38,239, 56, 28,142, 75, 57, 57, 57, 61,252, 20,220, +187, 0,164, 16, 66,220,175,249, 61, 3,200,182, 90,173,237,253,113, 18, 66, 82, 60,249,124,112,201,191,253,114, 70, 70, 70,238, + 23, 4, 33,217, 27,151,175,223,146, 36,157,203,203,203,235,198,146,233,159,131,186,117,235,110, 23, 4,161,198,233,243,202,149, + 43, 62,211,103, 98, 98,226,175, 28,199, 37,214,128,146,151, 36,233,228,149, 43, 87,122,248, 18, 32,114,154, 15, 32,104,170,253, + 38,132,100,218,237,246,142,129,242,145, 63, 46, 47,105,212, 47,167,187,184, 18, 4, 33, 35, 46, 46,110,156,193, 96, 48, 1,160, + 60,207,211,152,152, 24,217,109, 0, 0,187,221,158, 95, 92, 92,220,154,165, 68, 6, 6,134,155, 90, 96, 73,146,196,153,205,102, +156, 58,117, 10, 62,202,121,199, 53,124, 47,245,192,255, 54,197,133,199,197,195,110,181, 66, 91, 39,214,197,157,251,251, 81,216, +109, 86,216, 45, 22,212,239,212, 69,174,188,208,170, 85, 43, 62, 0,103,242, 91,111,189, 21, 23, 30, 30, 14,147,201, 4,147,201, + 4,179,217, 12,147,201, 4,139,197, 2,139,197, 2,171,213, 10,171,213, 10,187,221, 14,179,217,140,205,155, 55, 7,114,123,242, +172, 89,179,226,244,122,189,139, 79, 62,100, 78,153,215,102,179,193,100, 50,225,167,159,126,242,203, 41, 8, 66,114,118,118,118, +156, 66,161, 0,165, 20,146, 36,129, 82, 90,237,240, 68,227,198,141,173, 44,137,254,169, 72,157,181,236,251,184, 8,181, 10,118, + 73,194,144,182,141, 93, 55,206,125,178, 10,212,238,128,100,183,163,233,248,209, 64,149, 9, 6, 45, 91,182,244,155, 62, 41,165, + 13,102, 45,251, 62, 50, 88,206,130,130, 2, 99,139, 22, 45,178, 81, 53, 16,212,151,133, 39,217,104, 52,198,201,110,240, 20, 66, + 28,199, 85, 59, 54,108,216,128, 33, 67,134, 4,242,123,242,243,207, 63, 31,103,179,217, 96,177, 88, 96, 54,155, 97,179,217, 96, +183,219, 93,135,195,225,112, 29, 22,139, 5,123,247,238, 13,214,114,245,214,128, 1, 3, 30,255,254,251,239,181,223,126,251,173, +182, 97,195,134, 80, 40, 20,224,121, 30, 60,207,131,227, 56, 8,130,128,206,157, 59, 19,150, 4, 25, 24, 24,110,122,129,101, 54, +155,207,183,107,215,142, 58,127, 39,169, 84, 42,133, 71,193,153,152,154,154,122,210,243,189, 64, 93,135,225,113,241, 72,175, 23, + 13, 0,120,253, 98,161,171, 98,248,119,183,219, 92,207,188,153, 85, 10, 0, 80,171,213, 32,238,205,102, 31,208,106,181, 24, 48, + 96, 0,148, 74, 37, 58,118,236, 8, 81, 20,189, 30, 10,133, 2,162, 40, 6, 83, 41, 64,167,211, 97,250,244,233,178, 56,130, 54, + 76,133, 9,221, 58, 34, 12, 20, 31, 29, 61, 13,139, 68, 33, 8,130,235, 8,134, 83,161, 80,224,200,145, 35, 16, 4, 1, 60,207, +187,206,242,239,117,235,214, 97,248,240,225, 16, 4, 1,106,181, 26,184,133,102, 91,220, 40,136, 80,171,240,207,133,223, 0, 0, + 46,207, 29,239,138,187,189, 79,191,238,122,166,193,191, 70,130, 16, 2, 81, 20,193,113, 92,200, 56,139,138,138,140, 15, 61,244, +208,142,240,240,240, 13,101,101,101, 8, 32,220,112,249,242,101, 8,130,224, 51,189,115, 28,135,119,223,125, 23,103,206,156, 9, +202,239, 38,147, 9, 31,127,252, 49, 28, 14, 71, 53, 94,249,183,231,181, 32,197,213,204,129, 3, 7,142,254,254,251,239,163, 8, + 33,120,255,253,247, 33,138, 34,238,190,251,110,196,196,196, 96,227,198,141, 80, 40, 20,120,249,229,151, 89,226, 99, 96, 96,240, + 7, 17,192,109, 0, 98,157, 6,158,114, 0,145,110,247,243,157,231, 88,183,255,191,120,225,233,228,124, 70,190, 47,255,183, 0, + 80,122,185, 94, 8, 64,237, 60,204, 0,118, 1, 72,115,251,142,252, 30, 60,191, 43, 56, 11,194, 94, 0,182, 2,232, 45, 47,126, +119,229,202,149,187,220, 44, 41,199, 79,158, 60,217, 92,214, 58,206,174, 66,133,221,110, 79,149,187, 13,101,235, 80,255,254,253, +253,182,232,237, 86,235, 85,194,195,155,134,242,214, 45,225, 75,184, 88,173, 86,140, 28, 57,178, 42, 6,124, 84, 54,238, 71, 16, +154, 13, 22,139, 5,130, 32,160, 89,189, 88, 76, 29,212, 14,183, 83, 27, 42, 43, 8,236,165,149,184, 79,103,195,241,150,237,177, +232, 82, 62, 46,150, 85, 64, 16,132,160, 56, 37, 73,242, 41,174,120,158,199,194,133, 11,241,208, 67, 15,129,231,249,160,248, 24, + 66, 15,187, 36,121, 77,135,190,210,108, 48,241, 20, 12,103, 81, 81,145,113,200,144, 33,123, 84, 42,213,226,248,248,248,236,204, +204,204,128, 2,203, 83,244,120, 54, 38,254,243,159,255, 96,254,252,249,232,211,167, 79, 80,238, 52,155,205, 32,132, 96,209,162, + 69, 87,221,155, 49, 99,198, 85,223,243,199,233,108, 24,113,137,137,137, 79,255,248,227,143,122,249,217, 58,117,234, 64, 20, 69, +180,110,221, 26,225,225,225,216,177, 99, 7, 28, 14, 71,208,249,146,129,129,225,230,133, 55, 45,226,134, 59,210,211,211, 59,102, +100,100,204,238,218,181,235,242, 93,187,118, 45, 35,132,172,119, 43, 19,135, 56, 57,214,187,253,239,228, 33,178, 68, 0,177,132, +144,245,242,243,238,255,221,174,247, 7,160,148,255,167,167,167,167,101,100,100,204,158, 60,121,242,171,115,230,204, 81,164,167, +167,183,201,200,200,152, 45,127,199,155, 59,220, 45, 88,126, 87, 1,150,187, 11, 79,156, 56,129, 64,227, 82, 3,173,159,161,173, + 19,235,178, 92,189,217, 32,198,117,125,122,102,137,171,226, 90,208,161, 9,180, 90, 45, 6,189,249,118, 80,150, 33,139,197,130, +188,188, 60,151, 85, 33,208, 17, 44,167, 70, 29,134,205,207,183,198,229, 66, 37,166,237, 46,194,247,135,206, 64, 20, 69,220,217, +178, 53,238, 82,132,227,181, 6, 74, 60,127,250, 2,108, 65,142,213,165,148,122, 21, 86,242,111,185,171,132, 9,172,191, 14, 67, +218, 54,118, 89,153,246,134,247,115, 93, 31, 94,121,196, 21, 39, 47, 44,252, 55, 0,160, 79,251,206, 8,102,156,118, 32,206,194, +194, 66, 99,143,126,189,183, 57,140,150, 47, 70,143, 30,125,126,203,150, 45,234,160,154,115, 94, 4,150,108,165,149,197,149, 32, + 8,176, 88, 44, 65,249,221, 98,177,248,204, 31, 10,133,162,198, 22, 44, 0,168,172,172,180,172, 93,187, 22, 11, 22, 44, 64, 76, + 76, 12, 6, 14, 28,136,132,132, 4,172, 90,181, 10,148, 82,140, 31, 63, 30,106,181, 90,182, 86,179, 4,200,192,112,107,195,159, + 22, 81,101,100,100,204,118, 23, 48,158,130,198, 93, 56,121,136, 40,119,145,150, 22,160,254, 95,239, 41,154,228,239, 18, 66,214, +207,153, 51,103, 72, 0,119,228,123, 10, 44,191,203,236,155,205,230,243,109,219,182, 13, 74, 69, 24, 12,134,156, 64, 34,195, 91, + 43,222,221, 42,160,211,233,160,213,235,192, 5, 89,222,218,108, 54,151, 64,217,180,105, 19,212,106, 53, 6, 15, 30,124, 93, 22, + 44,171,213, 10,165, 66, 4, 87, 39, 30,255,156,187, 5,133,229, 70, 87,197,178,245,220,121, 28,204,205,195,243, 93,251, 65,171, +206, 67,133,197, 18,148,165, 77,146,164,171,196,149, 32, 8, 24, 57,114,164,203,122,224, 62, 46, 5,172,139,240,175,108, 73,121, +253,239,126, 93,242,176, 76, 93, 11,103, 97, 97,161,113,200,144, 33,123, 28, 70,203, 23, 89, 89, 89,123, 0,132,221,126,251,237, + 53, 22, 88,178,176, 18, 69, 17,239,190,251, 46,230,207,159,239,186, 31,172,192,178,219,237,213,132,211,233,211,167,171,125,203, + 83,208,249,235, 30,165, 85,165,164, 4, 64, 74, 73, 73,113,189, 83,183,110, 93, 68, 70, 70, 66,146, 36, 72,146,132,176,176, 48, +168,213,106, 40, 20, 10,150,232, 24, 24, 24,252,105, 17,227,228,201,147, 95, 37,132,172,119, 90,146,142,250, 17, 82,222,208,201, + 67,164,229,251, 40,187,134,120, 19, 89,238,191,101,164,167,167,167,121,113,199, 47, 87, 9, 44, 55,213,120, 21,220,187, 11, 67, + 85,121,249,171,192,116,145,122,168,181, 90,240, 60, 23,112,127, 37,185,139, 80, 46,240,199,141, 27,231,119, 92, 74,176,227,165, +172, 86, 43, 56,129,199,149,186,141,224,224,126,118,189, 43, 31,156, 32,226, 98,221,230,224, 79,252, 10, 49,200,138,214,211,130, + 53,126,252,120,124,252,241,199,224, 56,206, 21, 38,130, 32,160,105,211,166, 56,127,254, 60,203,105, 55,136,184,242,117,221,225, +144,130,182,186,120,123,174,176,176,208, 56, 98,196,136,109,165,165,165, 95,180,106,213,234, 52,170,150, 49,224,130,229, 19, 4, +161,154,176,146,197,213,188,121,243,170,137, 33,155,205, 22, 84, 3,192,102,179, 93, 37,116,222,121,231,157,106,103, 0,232,214, +173, 91, 80,150, 96, 0,148,227, 56,170, 80, 40, 48, 96,192, 0,180,105,211, 6,223,126,251, 45, 36, 73,194, 51,207, 60, 3,181, + 90,141,247,222,123, 15,118,187, 29,111,189,245, 22,179, 96, 49, 48, 48,248,211, 34,230, 57,115,230, 28,157, 51,103,142,203,146, +228,105,193,242,129,187,157, 98, 42, 86, 22,103,168, 26, 75,245,139, 31, 55, 12,241, 37,188,220,175,101,100,100,204,246,226, 14, + 87,183,228,159,190,217,115,206,177, 35,120,187,123, 59, 0,213,187, 5, 23,118,110, 14,173, 78, 11,109,184, 14, 35,214,253, 12, + 0,206,194,126,114, 80, 22, 44, 89, 96, 21, 22, 22,250, 21, 87, 53,177, 96,113, 74, 1,171,147,139, 65,149, 34, 4,139,173,154, +192,226, 5, 17,151, 99, 26,129, 19, 21, 16, 28,246,160, 56, 41,165, 87,117, 9, 62,250,232,163, 32,132,184,102,124,181,109,219, +214,157,139,213, 56,127,118,250,220,255, 9,142,175,121, 26, 0,208,163,178,210, 21, 23,179,218,254, 49,111, 99,238,145,109, 46, +107,227,155,120,241,154, 56, 11, 11, 11,141,183,183, 72,219,163,136,142,248,226,210,165, 75,123, 0,112, 15, 62,248, 96,100,219, +182,109,131,202,147,242,164, 9, 79,113,229,110,185,146,207, 54,155, 45, 40,191,203, 99,161, 2, 65,238, 46, 12,148,230, 41,165, + 52, 58, 58, 26, 28,199, 65,175,215, 67,167,211,185,102,208,134,133,133, 65,163,209,184,198,111, 6, 41,216, 24, 24, 24,110, 93, + 68,201, 2,199, 41,146,170, 89,150, 40,165, 67,220, 69,144,175,174, 66,167,197,105,123,128,111,125,239, 20,102, 94, 33, 91,210, + 60,202,228,245,158,226, 76,144, 21,163,251, 57, 33, 33,225,191, 58,157,174, 81,176,190,174,201,162,163, 14,155,245, 42, 75, 22, + 33, 4,186,112, 29,212, 58, 45,212,225, 58,159, 86, 46,127, 2, 75,182, 12,201,149,205,226,197,139,161,211,233,240,216, 99,143, +213,120, 12,150, 75, 96, 41, 56,108, 84,253, 4, 94, 41, 84, 19, 87,130, 32,128, 23, 69,228,232, 18,192,137, 34, 4,123,112, 86, +177,210,210, 82, 8,130,128,169, 83,167,186, 90,236,238,226,170, 38,126,102,168,165,214,147,195,118,149,213,201,151,181,245, 90, + 57,101,203,149, 34, 58,226,139,230,205,155,187, 44, 87, 26,141, 70,158, 61, 26, 16, 28,199,121, 21, 87,158, 51,254, 4, 65,168, + 74,203, 1,102, 59,186, 91,176,230,204,153,227,226,117,183, 92,201,168, 73, 62,146,221,186,109,219, 54, 28, 60,120, 16,227,198, +141,131, 90,173,198,252,249,243, 97,183,219, 49, 99,198, 12,168,213,106, 40,149, 74,150,248, 24, 24,152,245,202,223,190,162,249, + 30,227,156,136,135,165, 41,223,155,176,114,239, 14,116,251,109,243,194,107,241,232, 58,244,188, 46,159, 11,231,204,153,179, 69, +182, 92,185, 93,175,230, 14,159, 22, 44,149, 74,213,232,212,169, 83,174, 69, 70,253,157, 45, 22, 11,250,244,233, 19,180, 37, 76, +158, 69, 40, 8,124, 53, 65,161, 9,215, 65,163, 15,135, 90,167,243, 20, 26, 36, 80,225, 45,183,128,221, 5,214, 27,111,188, 1, + 65, 16,240,241,199, 31, 3, 0, 94,124,241,197,160,199, 96,201,156,112, 16,100,210,179,104, 55,119, 56, 44, 95,218,144,187,243, + 55, 8,130,128,184, 46,119, 65,186,125, 56, 12,106, 29, 4,135, 61,232, 89,132, 69, 69, 69, 56,127,254, 60,120,158,199,164, 73, +147,170,173, 85,228, 57, 51,109,211,166, 77,204,130,245, 87,100,112,201, 30,148,152,170,137,149,209,157, 83, 30,115, 85, 90, 90, +250,197,165, 75,151,246, 2,224, 70,143, 30, 29,169,209,104,240,233,167,159, 26, 0, 40, 87,173, 90,165, 14, 36,134,228,116, 19, + 72, 92,137,162, 88,149,150,131, 43,220,170, 53, 34, 2, 13,120, 15, 38,205,203,110, 37,132,192,225,112, 64,173, 86, 87,179, 92, +133,133,133, 65,165, 82,177,132,199,192,192, 16, 8,191,212,224,217, 78,110, 98,233,151,107,228,253,229,122, 29, 44,248, 18, 24, +102,179, 25,191,255,254,123,176, 60, 65, 47, 58, 90,175, 99,103,188,153, 85, 10, 66, 8, 62,234,214, 10, 90,189, 14, 26,173, 22, + 15,124,187,205, 85, 96, 31,153,253, 34, 84, 90, 29, 18,123, 14, 12,170, 0,151,187, 8,221, 5, 86, 73, 73, 9, 68, 81,196,204, +153, 51,193,113, 28,222,122,235, 45, 36, 37, 37,225,202,149, 43, 88,181,106, 85, 80, 22, 44,222,193, 35,225,145, 22,208, 60, 26, + 1,253, 35,119, 32,106,192, 27,200,178, 8,216,101,210,224, 14,211, 49, 40, 55,206,131, 69,114, 4, 61,163,202,110,183, 99,219, +182,109,158, 3,217, 65, 41,117,173,146,111,179,217, 96,181, 90,241,214, 91,111,129,237, 36,242,231, 35,161,203,120,196,118, 28, + 11, 0, 88, 55,103,140,235,250,212, 35,127,164,207,119,191,172, 90,176,191,121,195,129, 53,226, 44, 44, 44, 52,222,217,167,219, +118,147, 36,126,222,186,117,235,106,150,171,176,176, 48,226,252, 31,148,168,230, 56, 14, 60,207, 95,213, 45,232, 75,100, 5, 51, + 6,203,110,183,187, 22, 0,245, 55, 94,241, 90, 44, 88, 99,198,140, 65, 66, 66,130,203,114,245,230,155,111, 66,173, 86, 35, 61, + 61, 29, 54,155, 13,243,230,205, 99,137,143,129,129,225,175, 16, 99,181, 6,175, 37,168,201,100,186,208,166, 77, 27,248,184,151, + 20, 22, 22, 38,122, 20,206,137,169,169,169, 39, 61,187, 10, 9, 33,253, 41,165,155,189, 21,230,132, 16,132,235,195, 17,166,211, + 66,227, 97,181, 10, 11,215, 67,165,211,129, 83,136,222, 42,130,171, 56,229,177, 35,238, 2, 75, 62, 74, 75, 75, 33,138, 34, 22, + 44, 88, 0,189, 94, 15,179,217, 28,144, 83,174,108,120,158,135,225,114, 57,142,207,222, 12,101,216, 46, 52, 25,248, 16, 18, 68, + 53, 20, 59,190,134,209, 97,243,187,208,168, 55,206,212,212, 84,188,254,250,235, 87, 45,207,224, 11, 73, 73, 73, 1,253,126,189, + 96,156,222, 57,253,205,114,149, 33, 81,135,183,231,188,114,202,150, 43,147, 36,126,126,254,252,121,217,114, 21,161,209,104,240, +225,135, 31, 26, 0,112, 51,102,204,208, 52,104,208,128, 15, 38, 45,241, 60,143,185,115,231,122, 29,115,229, 77,108,213, 36, 31, +185,191,219,171, 87, 47,175, 11,141,122, 19,109,222, 56,101,183,198,196,196,184, 44, 87, 14,135,195, 53,123, 80, 94, 45,222, 87, + 99,130,165, 79,198,201, 56,111, 29,206,155, 13, 94,107,247,236,236,236, 59,125,189,208,164, 73,147, 83,167, 78,157,106, 42,111, +153,225, 44, 48, 21, 38,147, 41,181, 91,183,110, 1, 77, 57,146, 36, 65,165, 82,129, 82,138,190,175,103,128,112, 0,135,234,149, + 87, 92,247,126,224,121, 1, 82,213,150, 28, 1,103, 17, 26,141,198,106,149,130,183,163,162,162, 2,102,179, 57,232,213,183, 77, + 38, 83,181,165, 20, 8,149,112,241,127, 43,175,154, 77, 40, 31,193,142,203, 9, 11, 11,171,214,197,227, 15,129,214, 20, 99, 8, + 61,228,137, 8, 0,208,172,219, 96, 72,146, 3,212,225,168,182,157, 81,139, 70,119, 66,162, 14, 88,109, 6,152,205,230, 64,102, + 70, 82, 80, 80, 96, 28, 49, 98,196, 54, 0,159,221,119,223,125, 39, 81, 53,131,133,234,116, 58,149, 40,138, 18,128, 34, 0,180, +184,184, 56, 34, 43, 43, 75, 50,153, 76,245, 3,185,243,251,239,191,199,239,191,255,142,158, 61,123, 86,219,182, 73,182,130,186, +175,198, 30, 76,250,148,187,197,189,173,224,238, 75,192, 5, 11,158,231, 17, 17, 17, 1,133, 66,129,153, 51,103, 66,161, 80, 64, +163,209, 0, 0,230,205,155,231, 90, 52,149,129,129,129,225,166, 23, 88,129,202, 75, 63,221,135,126,187, 10,237,118,123,102,131, + 6, 13,106,244, 49,135,195,145, 27, 64,176,101,174, 90,181, 74,225,110,117, 8,116,166,148,230, 6,168,100, 51,215,173, 91,167, +240,102,205,240,181,241,115, 32, 78,135,195,145,217,176, 97, 67,159, 22, 18,111,176,217,108, 89, 44,137,254,121,112, 56, 28,126, +210,231,148,107, 77,159,167,155, 53,107,150, 21, 25, 25,249, 67,124,124,124,225,206,157, 59, 99, 58,117,234, 20,227,254, 76,167, + 78,157, 18, 60, 94,179,192,247, 62,132, 32,132,100,222,119,223,125, 94,211,188, 44,150,188,164,207,204, 64,105,126,223,190,125, + 10,247,247,125,241,187,229,163,204, 32, 4,235,197,118,237,218,113,238, 60,190,210,190,205,102,203,103,169,144,129,129,225,150, + 21, 88, 70,163,241,114,155, 54,109,236, 62,238, 93,242,247,110, 65, 65, 65,199, 80,123,192,106,181,118,251, 59,112,230,231,231, +119,100,201,237,198, 70,109,196, 81,110,110,238,237,161,230,180,219,237, 33, 79,159, 54,155,173, 91,109,132,105, 97, 97, 97, 87, +150,178, 24, 24, 24,152,192, 10, 2,193, 46,199,192,192,192,192,192,192,192,192,112,171,130, 99, 65,192,192,192,192,192,192,192, +192, 16, 90, 16, 84,237, 26,125, 21,106, 50, 59,128, 16,210,191,166, 31, 14,196,207, 56, 25, 39,227,100,156,140,147,113, 50,206, +155,143, 51, 16,247, 77, 51, 59, 81,158, 29, 85, 27, 7,128,254,140,147,113, 50, 78,198,201, 56, 25, 39,227,100,156,183,218,193, +186, 8, 25, 24, 24, 24, 24, 24, 24, 24, 66, 12,129, 5,193, 95, 3, 66, 8, 79, 41,117,132,144, 50, 10,128,175, 13,221, 44, 0, +138,175,197,153, 0, 20,206, 67, 94,168,200, 6,192,234, 60,130, 88,106,126, 58,151,157, 29,149, 70, 29, 98, 39, 74,136, 40, 73, + 56, 84,191,126,189, 95,129, 59, 45, 0,160,171,219,178,165, 78,171,238,111,182, 90, 26,169, 68,229,239, 37,149, 21,155, 76,185, + 39, 47,176, 20,194,192,240,151,148, 75,247, 0,152,238,204,251,115, 40,165, 43, 89,168, 48, 48,132, 88, 96,133,135,135,239,231, + 56, 46, 57,208,250, 58,110, 25, 19, 14,135, 35,179,168,168,168, 99,144, 25, 89, 0, 48, 66,167,211,245, 17, 69,177, 59, 0,216, +108,182,157, 21, 21, 21, 91, 0,172,162,148,218,175,177,128,208, 3, 24, 9,224, 97,231,165,175, 0,172,164,148,150, 93, 35, 95, +155,136,136,136, 53,162, 40,210,130,130,130, 46, 0, 16, 19, 19,179,199,102,179,145,178,178,178, 7, 40,165,135,107,200,199, 41, + 20,138,140,158, 61,123,246, 32,132, 44,161,148, 46, 12, 81, 92,170, 56,142,243, 42, 76, 36, 73,106,120, 13,124, 10, 0, 17, 11, + 22, 44,136, 89,186,116,105,187,204,204,204,214, 0,144,156,156,124,100,244,232,209,191, 78,152, 48,161, 16, 64,169, 83,104,249, + 68,118,118, 84, 90, 94,206,185,113,185,121,191,143, 4,128,186, 9,173, 87,242, 60,167, 72, 74, 58,184, 91, 83,231,225, 58,205, +154, 55, 30,187,252,211, 5,138,134,141,234,225,167, 93, 7,111,155,240,236,171,105, 97,241,205,254,195, 68,214,159, 7,189, 94, +191,159,227,184,100,127,121,220, 91,158,119, 56, 28,153,133,133,133, 29,125,113, 10,130,144,236,175,188,240,118, 77,146,164,115, +249,249,249, 94,151,140,136,136,136,216, 45, 8, 66,163, 96,185,228,179,221,110,207,244,181, 68, 76, 68, 68,196,126,158,231,147, +253,249,211,219, 61, 73,146,206,229,229,229,249,114,231, 85,126, 15,133, 59,175,133,211,159, 59,229,242, 8,192,188,152,152,152, +206,133,133,133,255, 0,240,106, 89, 89, 89, 91,158,231, 17, 29, 29,253, 42, 33,228, 76, 68, 68,196, 39,165,165,165,187, 0, 60, + 75, 41,149, 88,142, 97, 96,184, 78,129,197,113, 92,114, 86, 86, 86,156, 86,171, 5,240,199,126,121,242, 38,207,146, 36,129, 82, +234, 58,219,237,118,180,104,209, 34, 88,145,209, 90,175,215,175, 78, 79, 79,175, 63, 98,196, 8,165,188, 37, 76,118,118,118,234, +154, 53,107,254, 49,115,230,204, 55, 8, 33,195, 41,165, 71,130, 21, 45, 0,250, 1,120,180, 93,187,118,195,222,124,243, 77, 69, +223,190,125,225,112, 56,240,195, 15, 63,244,156, 49, 99,198, 2, 66,200,215, 0,190, 0,240,191, 96, 11, 9, 66, 72,143,186,117, +235, 46,219,177, 99, 71,194,249,243,231, 29, 35, 70,140, 88, 1, 0,251,247,239, 79,113, 56, 28,164, 75,151, 46,223, 19, 66, 70, + 81, 74,119,212, 32,204,239,155, 48, 97,194,240,241,227,199,199, 62,246,216, 99,143, 0, 88,232,252,150,188,139,120, 77, 55, 32, +116, 89,174, 40,165, 10, 63,207,213,173,129, 37, 75,123,254,252,249,168,110,221,186, 61,157,151,151,247,188, 59,111,110,110, 46, + 14, 28, 56, 96,157, 61,123,246,220, 93,187,118,125,208,168, 81,163, 98, 0,149,190,136,168, 67,236,148,155,247,251,200, 59,186, + 46,136, 0,128, 85,235,158,126,104,223,175,249,225,235,127, 92,244, 15,101,152,194,188,244,163,185,138,166, 77, 26, 98,235,254, +211,216,251,123, 17,105,221, 99,136, 80,186,126,201, 0, 0,139, 88,246,252,115,192,243,124, 82,102,102,102,156, 70,163,241,186, +161,187,199,184, 11,121,225, 82,164,166,166,250, 46, 88, 4, 33, 57, 43, 43, 43, 46, 44, 44,204, 85,118,120,150, 25,114,185,226, + 74, 43,148,162, 89,179,102, 86, 63,101, 82,131, 75,151, 46,197,105, 52, 26, 23,143, 55,247,121, 10,141,102,205,154,249,243,123, + 53,119, 6,195, 73, 41, 69,211,166, 77, 29,129,252, 46,239, 88, 17,200,223, 50,103,163, 70,141,104, 77, 56,131,113,103,227,198, +141,173, 1,162,127,222,201,147, 39,199,215,171, 87, 15, 77,155, 54,221,213,185,115,103,189, 86,171,197,143, 63,254,136,150, 45, + 91,166,233,245,250,189,171, 86,173, 18, 95,126,249,229,219, 62,255,252,115, 0,152,192,114, 12, 3,195,117, 10, 44, 66, 8,180, + 90, 45, 86,172, 88,225,115,219, 12,247,223,245,235,215, 15,234,131,132,144,142,141, 26, 53,218,182, 99,199, 14,117, 66,194, 31, + 11, 88, 91, 44, 22, 68, 69, 69,225,153,103,158, 81,222,115,207, 61, 77, 7, 14, 28,184,135, 16,210,139, 82,186, 63, 0,223,176, +216,216,216,247,167, 78,157, 26,255,224,131, 15, 34, 38,166,218, 34,217, 24, 49, 98, 4, 30,120,224, 1,197,201,147, 39, 31, 90, +188,120,241, 67, 11, 23, 46,204, 33,132, 76,160,148,126,237,143, 87,163,209,220,215,164, 73,147, 15,119,236,216, 17, 23, 23, 23, +135,148,148, 20,238,229,151, 95,110,154,154,154,170, 78, 78, 78,230,174, 92,185,130,111,191,253, 54,105,212,168, 81,171,149, 74, +229, 88,139,197,178, 54, 8,191, 43,163,163,163, 95,122,234,169,167, 98,202,202,202,236, 7, 15, 30, 60, 45, 95, 87,169, 84,175, +119,233,210,165, 61, 33,100, 5,165,244,139,107,177, 92, 57,173,116,158,123,142,216,228,251, 65, 90,178,148,135, 14, 29,138,238, +218,181,235,215,102,179,185,253,184,113,227, 46,205,158, 61, 91,173,215,235,245, 0, 72, 89, 89, 89,241,244,233,211, 45,239,189, +247,222, 43, 45, 91,182,236,183,123,247,238, 97,183,221,118,155,205, 41,222,174, 22, 88,132,184,220,115, 57, 43, 31,219,118, 73, +202,215,211, 95, 76,254,247,172, 70, 23,127, 57,118, 89, 18,212,122,124,183,253, 40,114, 11, 43,240,223,221,199, 80, 55, 38,156, + 40, 84, 98, 90,100,114, 90,175,210,172, 99,219, 41,219,241,186,214, 65, 8,129, 70,163,193,119,223,125,119,213, 22, 83,222,182, +159, 18, 4, 1,145,145,145, 1,119, 35, 8, 11, 11,195,166, 77,155,188,238,141,232,109,235,157,136,136, 8,192,207,102,215,132, + 16,132,133,133, 97,231,206,157,224, 56,206,235, 22, 62,158,215,180, 90, 45, 56, 63,123, 82,201,156,219,183,111, 15,200, 37,159, +117, 58, 29, 0,240,126, 51,165, 74,133, 29, 59,118,248,244,179,231,111,157,115, 63,214, 64,156, 59,119,238,172,182, 69,151,231, +214, 93,238,255,181, 90,173,171,225,230,179,117, 22, 21,213, 37, 57, 57, 25,251,246,237,195,170, 85,171,162,211,210,210,112,250, +244,105, 16, 66, 48,123,246,108,210,170, 85, 43, 49, 39, 39, 7, 61,123,246,196, 55,223,124,211,141,229, 22,134,191, 16, 34,128, +219, 0,196,162,106,215,152,114, 0,145,206,186, 71, 9,160, 16,128,218,121,152, 1, 84, 0,168,227,124,183,192, 89,182,184, 11, +132,124, 84,223, 20,186,147,147, 91,222, 81, 34,214,237,158,252, 13,207,255,158,231,106,220,130,179,144,145, 43,177,222,148,210, +109,213,124, 20,132,184,146,247, 17,243,204,203, 94, 54,126, 85,105,181,218, 53,123,246,236, 81,199,198,254,225,118,179,217,140, +242,242,114, 84, 84, 84,160,188,188, 28,225,225,225, 88,181,106,149,186, 95,191,126,107, 8, 33,169,148, 82,179, 47, 78, 0,115, +175, 92,185, 18,111,183,219,161, 84, 42,125,181,124,209,162, 69, 11,188,250,234,171, 24, 52,104, 80,221, 62,125,250,204, 5,240, +181, 31, 78,104, 52,154, 15, 15, 28, 56, 16,167,209,104,112,234,212, 41,100,102,102,226,133, 23, 94,168, 39, 73, 18, 46, 95,190, +140,211,167, 79, 35, 43, 43, 11,139, 23, 47,142, 27, 58,116,232,135, 0,214,250,243,187, 19, 79, 78,154, 52, 41, 53, 58, 58,154, +123,251,237,183, 75, 43, 42, 42, 62,114, 94, 79,159, 55,111,222,168, 59,238,184, 35,246,137, 39,158, 0, 33,100, 57,165,244, 42, +193,226,193,233,205,114,229, 0,112,220,227,181, 22, 30,150,173,186,206,196, 87,226,133,147, 0,136, 24, 56,112,224, 36,179,217, +220,126,199,142, 29,103,186,119,239,222, 0,192, 21, 57,209, 69, 68, 68,104,231,206,157, 27, 63,100,200,144,147,125,251,246,109, + 63,112,224,192, 73,249,249,249,179,157,247,169, 39,167, 36,225, 80,221,132,214, 43,183,239,158, 48,114,235, 78,139,226,197,103, +223,184, 84,191, 94,195,210, 67,167,138, 28,199,206,229,163,220,104,199,253,125,171, 54, 22,239,210,186, 62,222, 95,177, 3,207, + 60, 55, 69,252,122,229,146, 7,206, 80,104, 1,124,239, 39, 60,175, 11,140,243, 15,145, 33, 73, 18, 68, 81,196, 93,119,221, 5, + 66,200, 85,123,109,138,162,136,221,187,119,163,111,223,190, 16, 69, 17, 99,198,140, 9,138, 83, 16, 4, 12, 28, 56,208,181,207, +161, 59,159,167, 88,240,166, 5, 60,253, 78, 41,133, 32, 8,224, 56,206,231, 6,215,158,156,129,202, 37,217,157,254,184,220,239, + 5,114,167,108, 61, 10, 86, 92, 5,203, 41,187, 83, 16, 4,116,235,214, 13,191,254,250,171, 95,177,229, 77, 87,122,250,189,184, +184,248,159,169,169,169,219, 23, 44, 88, 16, 13, 0,133,133,133,174,141,232,121,158,199,137, 19, 39, 96,177, 88, 48,109,218, 52, +107, 89, 89,217, 19, 44, 31, 49,206,218,228,244,167, 69, 0,220,145,158,158,222, 49, 35, 35, 99,118,215,174, 93,151,239,218,181, +107, 25, 33,100, 61,165,116,136,124, 78, 79, 79, 79,203,200,200,152, 61,121,242,228, 87,231,204,153,115,148, 16,178, 30, 0, 60, +255, 59,221, 63,196, 67,188,197,202, 60, 78,183, 84,123,214,219,127,207,179, 39,183,224,118,129, 56, 61, 71,220, 11,179, 96, 5, + 86, 48,123,235, 9,130, 48,126,246,236,217,241,254,196, 85, 69, 69, 5,178,179,179,209,160, 65, 3,140, 25, 51, 38,126,193,130, + 5,227, 1,188,227,135, 86,193,243, 60,246,237,219,135,188,188, 60,180,105,211, 6,141, 26, 53,170,246,192,217,179,103,241,195, + 15, 63,160,164,164, 4, 29, 58,116, 0,170,198, 23,121,197,109,183,221, 54,173, 69,139, 22, 3, 7, 14, 28,104, 87,171,213, 56, +116,232, 16,218,183,111,143, 21, 43, 86,160,126,253,250,208,104, 52, 56,121,242, 36,218,180,105,131,109,219,182, 33, 54, 54, 22, +237,218,181,179,119,232,208,225,231,162,162,162, 45, 23, 46, 92,152,230, 35,225, 40,146,146,146, 94,125,234,169,167,148,217,217, +217,210,226,197,139,119, 81, 74,119, 17, 66,198, 78,153, 50,229,145, 65,131, 6,197, 30, 60,120,176,236,151, 95,126,249,197,155, +184, 10,210,114,101,247,172,140, 28, 14,135,217,104, 52, 90,204,102,179,141,227,184, 11,132, 16,139,195,225,240,213,183, 19,246, +232,163,143, 54, 46, 40, 40,120,230,185,231,158, 59,239, 20, 87, 39, 80, 53,176, 29, 0, 96,183,219,205, 21, 21, 21,101, 93,187, +118,109, 48,106,212,168, 51,203,150, 45,123,230,209, 71, 31, 93,245,197, 23, 95, 84, 0, 48,122, 18,214,175, 95,239, 87,158,231, + 20,149,229,209,231, 86,175,250,228,249, 31,214,141,175,119,249,114, 86,211,152, 58,177,149, 10, 93,108,246,170,175, 62,223, 15, +192,146,157, 95,134,195,103,115, 32,138, 60,126,191, 92,138, 59,238, 28, 33,158, 57, 53,171,135, 44,176, 24,106, 21, 84,222, 28, +122,235,214,173,126, 45, 88,187,119,239,134, 40,138, 80,171,213,120,239,189,247,252,146,202,130, 64,182, 14, 5, 18, 49, 28,199, +249, 45, 71,100,145, 33,111,192,238,121,252,223,255,253, 31,158,123,238,185,106,223,112,138, 12, 18,136,211,151,251, 26, 52,108, +136,188,220,220,106,215,130,217, 44,222,225,112, 64, 20, 69,124,252,241,199, 24, 50,100, 8,214,175, 95,239,247,124,215, 93,119, +129,227, 56, 26, 76,120,118,235,214, 13, 86,171,213,229,230, 19, 39, 78,120,229, 93,184,112, 97,160,202,236, 30, 0,211,219,183, +111,175,239,211,167, 15,182,111,223,142, 7, 30,120,192,108,181, 90, 79, 1,192,221,119,223,221,108,193,130, 5,202, 3, 7, 14, + 32, 38, 38, 70,188,116,233,210,103,132, 16, 54,240,157,161,118, 11, 35, 47, 90, 68,174,243, 50, 50, 50,102,123, 8,163,106,144, +239, 19, 66,214,207,153, 51,103,136,187, 24,114,255,239,102,101,114, 23,111,105,238, 22, 40,119,241,228, 67,148,121,186,219,253, +249,252,106, 2,203,233,161,222,238, 86, 31,185,208, 13, 36,174,124,181, 20, 61, 17, 17, 17, 49,248,254,251,239,119,137, 27,147, +201,228, 18, 86,178,184,146,255,159, 60,121, 18, 29, 59,118, 84, 68, 68, 68, 12, 14, 32,176,100,241,134,196,196, 68, 20, 20, 20, +224,200,145, 35,104,208,160, 1,108, 54, 27, 54,108,216,128,210,210, 82,136,162, 8,133, 66, 1,171,213,255,144,132, 22, 45, 90, +220,181,116,233,210,142, 75,150, 44, 41,150, 91,112, 95,125,245, 21, 40,165,136,141,141,133,193, 96, 64,110,110, 46,182,108,217, + 2,187,221, 14,157, 78,135,148,148, 20,229,125,247,221,215, 99,250,244,233, 34,128,105, 62,168, 59, 63,240,192, 3,122,189, 94, +143,103,159,125,150, 90,173,214,119, 8, 33, 93,134, 13, 27,246,234,132, 9, 19,162, 47, 92,184, 96,121,242,201, 39,247, 91,173, +214,185,206,248, 16, 41,165,182, 0, 9,209,167,229,202,102,179,201, 97,122,190,162,162, 2,117,234,212,105, 16, 96,140, 22, 0, + 40,118,238,220,217, 13, 0, 63, 99,198,140, 48, 0,185,238,226,202, 98,177,160,162,162, 2,149,149,149,182,210,210,210,188,151, + 94,122,201,190,108,217, 50,222,249,206,239,222, 4, 22,112,167,165, 85, 43,173,146, 82,126,202,162, 69,139,116,131, 6, 13,226, +116, 58, 29,202,203,203,245,255,253,241, 71, 93,191, 62, 61, 82,102,103,252,123,163, 62,185, 77,238,206, 67,231,144,149, 83, 10, +139,205,134,148,132,136, 42,251, 23, 67,173,195, 57, 65,197,101,193,114, 23, 19,219,183,111,199,157,119,222,233,202,235, 10,133, +162,154,165, 43, 16,167, 32, 8,184,243,206, 59,175,178,232,108,221,186,213,171,181, 41, 16,220,197,144,167, 40,242, 38,188, 56, +142, 67,160, 94,102,217,122,231, 77,100,185, 91,241, 61, 68, 91,160, 74, 2,130, 32, 96,194,132, 9, 16, 69, 17, 47,191,252, 50, + 4, 65, 64,187,118,237, 32, 8, 2,186,118,237, 10, 81, 20,209,183,111,223, 26,251,125,207,158, 61,104,223,190,189,203, 77,237, +218,181, 67,167, 78,157, 32, 8, 2,122,246,236, 9, 81, 20, 49,112,224,192, 96, 56, 95, 45, 47, 47,111,171,211,233,112,242,228, + 73,240, 60, 15, 66,200,105, 74,105, 91, 0,120,234,169,167,206, 24, 12,134,198, 38,147, 9, 79, 61,245, 20,177, 88, 44,109, 94, +126,249,229, 41, 0,152,192, 98,168,205,242,168,154, 22,113,131,113,242,228,201,175, 18, 66,214,203, 22, 41, 79, 75,147,183,255, + 94,248,101, 17, 36,119, 15,118,242, 16,111,114,215,225,221,126,222,181,120, 8, 42,207, 46,194, 95, 2, 90,176,228, 66, 55, 88, +129, 21, 8, 38,147,233,182,184,184, 56,159,226,202,253,108,177, 88,208,168, 81, 35,152, 76,166,219,106, 90, 89, 36, 36, 36,192, +106,181,226,147, 79, 62,129, 66,161,128, 66,241,135,174,176, 88,252, 27,135,142, 29, 59,118,126,207,158, 61,237, 59,116,232, 16, +245,205, 55,223,228,247,234,213, 43,118,208,160, 65, 80,171,213, 48, 26,141,176,217,108,232,210,165, 11, 90,180,104,129,204,204, + 76,252,247,191,255, 45, 72, 77, 77,173,179,119,239, 94, 41, 39, 39,231,162, 31,234,126,253,250,245, 3, 33, 4,255,253,239,127, + 11, 41,165, 7,212,106,245, 55,179,103,207,142,180, 88, 44,210, 35,143, 60,114,185,168,168,232, 37, 0, 54,149, 74,245,206,160, + 65,131, 58,243, 60,191,194,225,112,188, 95,211, 4,234, 25,182,149,149,149, 8, 11, 11, 11,102, 73, 8,177,168,168,168, 53, 0, +104,181,218,104, 0,103, 92, 41,219,104,172, 38,130, 45, 22,139, 41, 58, 58, 90, 11, 0,206,119, 68, 31,241, 17,171,209,104, 86, + 95,188,120, 46,220,125,124, 92,100,100, 36, 30, 30, 53,138,235,222,173, 49, 12, 58,250, 0, 0, 32, 0, 73, 68, 65, 84,155,178, +237,109,183, 13,124,237, 63, 75, 86, 36,198,232, 45, 41,137, 49,176, 57,108,216,188,113,131, 68, 37,219, 70, 86,220,252, 57, 2, + 75, 22, 25,158, 22, 44, 81, 20,177,109,219,182,171,174, 41, 20, 10,124,244,209, 71, 65, 9, 2, 89, 76,249,234, 34,243,232,210, + 34,129,132,139, 40,138,224,121, 30, 31,127,252, 49, 36, 73,194,243,207, 63, 95,173,219,208,157, 63,200, 22,179,235,157, 22,111, + 72, 0, 44,200,124, 87,229,122,223,211,189,114,121, 25,140, 85,108,193,130, 5, 65, 89,176,238,190,251,238,128,130,213,189, 71, +193,221, 93,191,254,250,171, 87,222, 69,139, 22, 5, 12, 79,135,195,129,239,191,255,222, 37, 78,101, 76,157, 58,245,169,228,228, +228,248,159,127,254, 25, 57, 57, 57,168,172,172, 68, 69, 69, 5,186,116,233,146,210,191,127,255, 67, 57, 57, 57, 23,142, 29, 59, +118, 63,203, 61, 12,127,162, 5,203, 60,103,206,156,163,115,230,204,241,106,161,242,180, 36,249,179, 52,185, 9,171, 95,224,236, + 26,156, 60,121,242,171,168, 26, 62,243, 75, 16,239, 42, 61,187, 8,189, 26,126, 60, 84,227,116,111,133,110, 48,221,132, 65,154, +205, 5, 66, 8, 76, 38,147, 87, 97,229, 46, 10,172, 86, 43,138,138,138,224,112, 56,132,235,136,168,171,174, 5, 18, 88, 71,142, + 28,121,236,241,199, 31,207,142,136,136,104,155,159,159,159, 39, 73, 82,223,221,187,119,199, 10,130, 0,189, 94, 15,189, 94,143, + 31,126,248, 1, 26,141, 6, 19, 38, 76,200,115, 56, 28,219,195,195,195, 99,140, 70,227,111, 57, 57, 57,175,249, 84, 46,162,216, +239,142, 59,238,192,129, 3, 7, 80, 82, 82,242, 19, 33,164,237, 19, 79, 60, 49,160, 94,189,122,100,214,172, 89,166, 51,103,206, +252, 31,128,124,173, 86,251,201,210,165, 75,123,117,232,208, 65, 55,122,244,104, 16, 66, 62,165,148,154,130,245,115,101,101,101, + 53, 97, 85, 86, 86,134,242,242,114,104,181, 90,123,144, 97, 38,162,106, 44,149, 60,158,202, 21, 55, 78,235,149, 28, 63, 84, 16, + 4, 90,245, 8, 21,125,241,105,181,218, 25, 75,150, 44, 81,123, 78, 62,112, 56, 28,200,205,205,133, 94,175,199,212,215, 94, 83, +188,249,194, 19,237,121, 93,252,110,142, 35,176, 88,105, 9,149, 44, 27, 42,115, 31,252,153, 21, 55,127, 14,100, 65,112,239,189, +247, 94,213, 45,168, 80, 40,176,105,211, 38, 12, 29, 58,212,213, 96,233,208,161, 67,192, 70,149, 44, 8,238,185,231, 30,151, 37, +104,195,134, 13, 94,187,247,100, 11, 84, 48, 66, 80,126,118,226,196,137, 16, 4, 1,239,191,255, 62, 38, 77,154, 4,142,227,240, +238,187,239,130,227, 56,188,254,250,235, 65,139, 75,119,225,114,225,223, 85,231,228, 73,101, 40, 92, 24, 15, 0, 8,215,235,101, + 15,213,168,236, 17, 4,193,101,185,186,237,182,219, 32,138, 34,186,118,237, 10, 65, 16, 92,150,171,193,131, 7,187,135, 35, 13, +134, 83, 16, 4,156, 58,117,202,229,230,174, 93,187, 86,179, 92, 9,130,128,187,239,190, 59, 24,103,206,142,140,140,156,222,162, + 69,139,150,115,231,206, 21,121,158, 71,191,126,253,154, 61,249,228,147, 23, 99, 98, 98, 98,102,204,152,161,241,242,142, 26, 64, +219,150, 45, 91,106, 89,174, 97,168, 69, 11,214,116, 47,183,162,220,199, 84,213,128,111,189,251,243, 50,135,167, 40,114, 90,196, +182, 7,226,242,246,174, 47, 8,254, 90, 99, 53, 17, 88, 78,243,178,223,143,105, 52,154,195,121,121,121, 93,213,106,117, 53,113, +229, 77,104,241, 60,143,156,156, 28,104, 52,154,195,161,140,188, 64, 93,132, 78, 49,243,130, 91,128,246, 31, 60,120,240, 23,155, + 54,109, 74,216,188,121, 51,246,238,221,139,216,216, 88, 44, 88,176,224, 74,110,110,238, 99,148,210, 77,193,124,183,113,227,198, +173,180, 90, 45,118,237,218, 5, 0, 63, 3,120,244,153,103,158, 33,118,187, 29, 31,124,240,129, 1,192,166,136,136,136,175,215, +172, 89,115, 91,155, 54,109,148,155, 55,111, 46,223,187,119,239,214, 32,197,149, 67,146,164,171,132,149,123,152,134,135,135, 7, + 99,193,178, 69, 68, 68, 28, 41, 43, 43, 27, 97, 52, 26,203, 84, 42, 85,120, 89, 89,153,217, 93, 88,201,252,130, 32,136,167, 78, +157,202, 6,144, 18, 17, 17,113, 4,110, 93,137,213, 18,152, 32,244,235,215,175,159,224, 25, 7,185,185,185,200,201,201,129,213, +106, 69,135, 14, 29, 8, 79,108,124,209,165,223,158, 98,197,203, 95, 83,160,201,121, 93,158,245,231,109,230,224,134, 13, 27, 92, +255, 57,142,131,115,218,126, 64, 49,180,105,211, 38,191, 3,209, 61,186, 8, 3,154,194,229,231, 63,248,224,131,170,237, 40,156, +150, 43,142,227, 48,121,242,100,168, 84, 42,204,154, 53, 11,147, 39, 79,134, 32, 8, 1,187, 8,221,133, 75,195,151, 13,238,141, +162,170, 76,225, 28,239, 68, 8,113, 23, 89, 36, 88,209,230,207,122, 23,140,229,223,157, 83,126, 47, 44, 44,204,231, 0,119, 15, + 78,226,199,223,223, 17, 66,206, 37, 36, 36,236,236,218,181,107,196,254,253,251,241,238,187,239, 42,204,102,115,253,205,155, 55, +187,190,235, 45,188, 42, 43, 43,213, 44,231, 48,212,134,245,202,207,237,124,143,241, 83,196,189,187,206,207,217,243,121,184, 93, +115,231,205,247,168,199,220,175,123,138, 42,207,111,184, 63,147,127,149, 5, 43, 80, 33, 17, 72,104, 5, 99,193, 50, 24, 12,255, +251,241,199, 31, 59,141, 26, 53, 74,240,215, 61, 88, 89, 89,137,248,248,120, 28, 61,122,212,110, 48, 24,254, 23,132,101, 44,100, + 2,203, 75,132,111,174, 91,183, 46,111,179,217,208,180,105, 83, 36, 37, 37,193,100, 50,161,164,164,132, 15, 86, 92, 17, 66, 20, + 29, 59,118,228, 1,160,184,184, 24,168,154, 78,154,154,154,154,138, 3, 7, 14,160,184,184,120, 45,128,254,111,190,249,102,187, +206,157, 59, 43, 86,172, 88, 97, 24, 55,110,220, 90,155,205, 54, 43, 72,235,131,197,110,183, 55,226, 56,206, 90, 82, 82,146,229, + 30,158,241,241,241,209, 90,173,150,228,230,230,218,130, 17, 88,109,219,182,221,119,233,210, 37,204,152, 49, 35,127,246,236,217, +169,229,229,229,197,165,165,165,118,119,145,101, 50,153,184, 58,117,234,168, 22, 46, 92,168, 6,128,182,109,219,238,243, 37,176, + 42, 43, 43,235,105, 52,127, 52,132,205,102, 51,114,114,114,144,147,147,131,220,220, 92,148,151,151, 35, 37, 37, 5, 6,131,161, + 1, 43, 94,254, 50,129, 85,173,155,204, 61,127,187, 87,224, 53,201,235,238,194,229,222,123,239,117,141,221,146, 45, 98,242,177, +122,245,106,207,129,227, 65, 9,172, 15, 62,248, 0, 19, 39, 78, 68, 88, 88, 24,230,206,157, 91,173,139,208, 83, 20, 72,146, 68, +130,241,123,163, 87,140,200,153, 31, 13, 81, 20, 17, 51, 46,183, 90, 87,156, 23,161, 17,148, 59,103,207,158, 29,146, 46, 66,119, +206, 6, 13,170,178,202,199, 31,127,140, 17, 35, 70,224,231,159,127,190,230, 46,194,180,180,180,175,214,175, 95, 31,113,236,216, + 49,148,149,149, 33, 63, 63, 31,102,179, 25,153,153,153, 62,123, 1,156,101,121, 24,203, 57, 12,127, 50,126,249,147,121,175,251, +123, 66,128,138, 59,104,129, 21,140, 5,203,108, 54,207,125,246,217,103,159,233,223,191,127,116,120,120, 56,178,179,179,175, 18, + 87, 21, 21, 21,208,233,116, 48, 26,141, 88,183,110, 93,153,217,108,158, 27, 72, 20,216,108, 54,196,197,197,161,160,160, 0,146, +143,113,209, 28,199, 65,173, 86,163,162,162, 2,190,196,128,191,138,194,106,181,194,102,179,193,102,179,193,106,181,162,134,203, + 51,169,229, 5, 91, 43, 43, 43, 1,160, 50, 49, 49,177,113, 88, 88, 24,206,159, 63, 15, 0,167, 0,244, 25, 52,104,144, 88, 88, + 88, 72,159,124,242,201,221,148,210, 9, 1, 86,179,183,108,223,190,189, 17, 0,168,213,234,147, 0,144,153,153,105, 43, 41, 41, +169,102, 25,212,104, 52,116,232,208,161, 9,148, 82,108,223,190,189,145, 66,161,160,240,177,102, 21, 0,211,218,181,107,143, 69, + 68, 68, 44,203,200,200, 24, 53,100,200,144,163,173, 91,183,110, 84, 89, 89,153,103, 52, 26,141, 38,147,137,242, 60,175,136,138, +138, 10,219,184,113,227,153,221,187,119,247,215,235,245,203,214,174, 93,123, 12,128, 87, 75,155, 86,171,205, 52, 24, 12, 13,229, + 56,117, 23, 87, 57, 57, 57,160,148,226,220,185,115,208,104, 52,151, 88,249,241,151,182, 28,175, 18, 86,222,196, 86,176,226,202, + 93, 16,108,220,184,209,239, 26, 88,193,114,186,139,161, 73,147, 38, 97,254,252,249, 87, 89,176,102,205,170,106,147,188,246,218, +107, 65,143,193,146,173, 85, 57,243,163, 81,119, 98, 81, 53,183, 3, 0,145,221, 87,195, 37,217, 4, 65,192,140, 25, 51,174, 26, +124,238,222,133, 23,100, 87, 94, 53,119,230,229,229, 65, 16, 4, 68, 71, 71,227,225,135, 31,198,192,129, 3, 93, 93,141, 53,229, + 61,126,252,248,206, 87, 94,121,165, 77, 90, 90, 26,102,206,156, 89, 20, 25, 25, 25,254,175,127,253, 75, 40, 41, 41, 33,254, 44, + 88, 76, 96, 49, 48, 92,135,192,146, 51, 86,176,179, 8,189, 21,146,132,144,254,238,107,101, 80, 74, 75, 9, 33, 15, 15, 24, 48, +224,155,149, 43, 87,170, 27, 55,110,140,227,199,143,163,168,168, 8, 22,139, 5, 10,133, 2, 9, 9, 9, 40, 41, 41,193,231,159, +127,110, 52, 24, 12, 15, 83, 74, 75,253,113, 2,152,210,177, 99,199, 15,223,121,231,157,176,118,237,218,161,168,168, 8, 21, 21, + 21,213, 86,157,214,235,245, 80,171,213,216,183,111, 31, 54,108,216, 96, 4, 48, 37, 0,167, 55, 21, 7,171,213,234, 18, 90,129, + 4,150, 7,167, 86,182,226, 24, 12, 6, 0,176,215,175, 95, 63, 30, 0,206,157, 59, 7, 0, 23, 83, 82, 82, 94,107,210,164, 9, + 89,186,116, 41,165,148,110,246, 38,174, 60, 56,139,122,246,236, 89, 12,160,174,197, 98, 81, 0, 64,105,105,169,181, 78,157, 58, +113, 42,149, 74, 82,171,213, 82, 88, 88,152,148,157,157,109,183,219,237, 10, 0,232,217,179,167, 5, 64, 14,220,198,122,120,112, + 74, 0,202, 22, 45, 90, 52,125,244,232,209, 93,187,117,235,150,246,244,211, 79, 31,121,242,201, 39,185,164,164,164,168,242,242, +114,211,233,211,167,139,255,243,159,255,148,239,217,179,167,191, 40,138, 23, 23, 45, 90, 52, 29, 64,153,243,221,171, 56,237,118, +251,255, 54,111,222,252,216,144, 33, 67,132,172,172, 44,228,230,230,186,196, 85,110,110, 46, 90,180,104,129,221,187,119, 59,172, + 86,235,230, 26,132,103,168, 44, 55,140,179,170,241, 65,229,188,238, 75, 88,201,141,168, 96, 57,221,197,208,136, 17, 35,170, 89, +173, 20, 10, 5,214,172, 89,227,181,220,240,178, 34,121,127,207,245,160,100, 55,189,242,202, 43,213,196,218,212,169, 83,125, 58, + 45, 80,120,202, 60,165, 31, 39, 85,159, 69,232, 35,159,251,115,167, 92,118,138,162,136,169, 83,167, 6,109,193,130,199, 24, 44, +111,156,178,223,123,245,234, 5,131,193,224, 18,176,190, 44, 88,129,194,211,225,112, 76,156, 63,127, 62,213,235,245,157,203,202, +202,254,113,233,210,165,197, 6,131,225,246,210,210, 82,191, 22, 44,179,217,172, 98,249,136,113,214,198, 90, 88,183,132,192,114, + 86,142,168, 87,175, 94,181,189,173, 56,142,171,118,212,100, 28,129, 51,195,110, 36,132, 12,235,222,189,251,151, 19, 39, 78, 12, +111,215,174,157,216,176, 97, 67, 84, 86, 86,226,252,249,243, 56,122,244,168,125,237,218,181,101, 6,131,225, 31,148,210,141, 65, +240, 45, 33,132,108, 24, 52,104,208,235, 93,186,116, 25,251,198, 27,111,240,205,154, 53, 67,105,105, 41,162,162,162, 16, 23, 23, +135, 19, 39, 78, 96,221,186,117,142,130,130,130, 15, 1,188, 73, 41,205,175,105, 3,223,106,181,226,161,135, 30,130, 36, 73,120, +239,189,247,220, 23, 68, 11, 6, 86,171,213, 74, 1,144,130,130, 2, 0, 48,200,130,235,244,233,211, 0,112,169, 97,195,134, 58, + 0,216,188,121, 51, 1,176, 43, 88,119,185, 91,178, 90,180,104,113,222,179, 80,148, 45, 87,178,213, 11,129, 55,104, 54,141, 28, + 57, 50,207, 96, 48, 12,154, 52,105,210,235, 31,124,240,193,168, 15, 62,248,224,170,135,244,122,253,178,119,223,125,247,205,145, + 35, 71,230,249,178, 94, 57, 45,118,175,253,243,159,255, 28,121,248,240,225,240,176,176, 48, 84, 86, 86,162,176,176, 16, 86,171, + 21, 41, 41, 41,200,203,203,195,146, 37, 75,202,141, 70,227, 52,150, 29,255, 26,184, 11, 2, 95, 86,172, 64,226,202,159, 21,231, +187,239,190,243,186,198, 84, 77, 57, 61, 69, 70,176,107, 83,249,107, 12,201,203,203,120, 91,250,161, 38,229,154, 55, 94, 65, 16, +240,246,219,111,187, 22, 91,245,102,185,170,137, 5, 75,230,140,142,142, 6, 0,200, 91, 27,221,125,247,221,215,204,235,220, 54, +108,130,219, 55,102,191,244,210, 75,211, 91,180,104,209, 12,128,202, 61, 12,216,166, 10, 12, 12, 33, 18, 88, 14,135, 35,179,121, +243,230,213, 10,182, 64,155,140,218,108,182,204, 32, 51,245, 6, 66, 72,202,187,239,190,251,172, 86,171,237,111, 48, 24,218, 56, + 11,140,195,149,149,149,155,205,102,243,188,154,108,206,236, 20, 76,227, 9, 33,239, 13, 26, 52,104, 86,223,190,125,135,191,240, +194, 11,132, 82,138,133, 11, 23,210,179,103,207,174, 6, 48,133, 82,122,246, 90, 2, 41, 58, 58,250,216,231,159,127, 30,255,205, + 55,223,192,102,179, 97,222,188,121, 8, 15, 15, 63, 86, 19,247, 9,130,240,101,183,110,221, 70,237,222,189,123, 25,165,244,136, + 74,165,250,170,103,207,158, 15,239,218,181,107, 37,165,244,119, 65, 16,190,234,218,181,235,195,251,246,237,251,154, 82,250, 91, + 13,156,231,178,100,217,237,222,123, 20,189, 89,174, 2,160,236,241,199, 31,183, 62,254,248,227, 47,140, 28, 57,242,147, 95,126, +249,229,246,146,146,146, 54, 0, 16, 25, 25,121,184, 83,167, 78,251, 86,174, 92,121,194,105,185, 50, 5,242, 59, 33,100,104,155, + 54,109,190,158, 57,115,166, 54, 45, 45, 77,104,218,180, 41, 46, 92,184,128, 35, 71,142,216, 63,251,236,179, 10,163,209,120, 47, +165,180,152,101,199,191, 78, 96, 81, 74, 17, 25, 25, 89,173,241, 36, 79,221,175,105,183,160,123,133, 44,111,169,227,201,235,139, + 51,192, 32, 87, 0,128, 78,167,115, 45, 74, 26,204,208, 4, 73,242,191,158, 26,165,212,197, 41, 31, 65,136,171,128, 51,254,156, + 91,213, 4,205, 25,204, 50, 13, 90,173, 22, 54,155,205,197, 27,196, 76, 78, 82,195, 56,251, 14,192,119, 77,155, 54, 61, 13,160, + 9, 19, 85, 12, 12,181, 32,176,138,138,138, 58,214,230,135,157, 2,234, 77,231, 17, 42,206,179, 0, 70, 18, 66,222,249,233,167, +159,228,254,130, 25,129,246, 51, 12,132,227,199,143, 15, 17, 69,241,163,101,203,150,117,161,148, 34, 34, 34, 98,207,133, 11, 23, +254, 85, 19, 14,187,221, 62,150, 16,242,188, 60, 43,208,108, 54,143, 37,132,188, 72, 41,173,116,187,239,250, 95, 83,175, 3, 48, + 83, 74, 19,125,220, 55,215, 64, 92,185, 44, 89, 0, 44, 43, 87,174,172, 0,112, 8,127,172,115,101,115, 30, 38,184,117, 11, 6, +136,151, 45,132,144,166, 83,167, 78,157,205,243,124,191,202,202,202, 36,173, 86,123,217,110,183,255,207, 96, 48, 76,161,148, 22, +178,172,248,215,193, 98,177,100, 53,111,222, 92,240,214,112,242, 87,129,251,107, 80, 57, 28,142,204,212,212,212,128,141, 50, 47, +156, 89,126,210,209,197,148,148, 20, 46, 88, 46, 25, 86,171, 53,207,159, 59, 83, 82, 82, 80, 83,206, 64,126,111,212,168,145, 87, +191, 7, 16,130, 89,126,202,143,107,226,244, 23,158,254, 96, 52, 26,139, 99, 99, 99, 43, 76, 38,147,104, 54,155, 69,187,221, 94, +205,220,168, 86,171,243, 89,206, 97, 96,184, 70,129,245,119,134, 83, 80,221, 19, 66, 62, 51,128, 71, 66,192, 99,242,248, 95,233, +239,127, 13, 81, 27, 22, 32, 9,128, 33, 68, 97, 88, 0,224, 73,150,229,110, 60, 20, 20, 20,116, 14, 53,103, 97, 97, 97,200, 27, +104,249,249,249, 93,107,193,239, 29,111, 85, 78,127,200,202,202,234,204,114, 6, 3,195,245,129, 99, 65,192,192,192,192,192,192, +192,192, 16, 90, 16, 0,253,189,221,168,201,236, 0, 66, 72,255,154,126, 56, 16, 63,227,100,156,140,147,113, 50, 78,198,201, 56, +111, 62,206, 64,220, 55,205,236, 68, 74,105,173, 29, 0,250, 51, 78,198,201, 56, 25, 39,227,100,156,140,147,113,222,106, 7,235, + 34,100, 96, 96, 96, 96, 96, 96, 96, 8, 49,152,192, 98, 96, 96, 96, 96, 96, 96, 96, 96, 2,139,129,129,129,225,207, 1, 33, 36, +234, 70,230, 99, 96, 96, 96, 2,139,129,129,129,225,239, 38,174, 90, 3,152, 25, 98,218,153, 78, 94, 6,134, 91, 34, 15, 17, 66, +218, 48,129,197,192,192,192,192, 32, 87, 12,131, 27, 55,110, 60, 3,128, 46,196,212,186,198,141, 27,207, 32,132, 12,102,161,204, +112,147,230, 29, 21, 33,228, 17,142,227,246,181,110,221,250,112, 90, 90,218,111, 28,199,237, 38,132,140, 32,132, 8,183, 84, 88, +184,109,138,188, 13, 0, 40,165,189, 88, 18, 97, 96, 96,184, 69, 43, 7, 1,192,216, 81,163, 70,221,147,145,145,161,172, 87,175, +222,101, 74,233,232, 16,242, 47,189,124,249,114,242,163,143, 62, 90,177,101,203,150,141, 0, 62,244,182,177, 59, 3,195,223, 48, +239, 52, 4, 48, 86,167,211, 61,209,187,119,239,168,123,239,189, 23, 49, 49, 49,176,219,237,184,124,249, 50,214,175, 95,143, 93, +187,118,101, 91, 44,150,249, 0, 62,166,148,150,248,224,185,105,180, 8,161,148,202, 27, 23,247,118,122,106, 27, 75, 42, 12, 12, + 12,183, 96, 5,161, 7,144, 62,119,238,220, 46, 99,199,142,109,100, 50,153, 50,163,162,162,206,133, 90, 96, 89,173,214,254,249, +249,249,251,103,205,154,133,133, 11, 23,254, 14, 96, 78, 77,246, 94,101, 96,184, 1,243,206,228, 97,195,134,205,138,143,143,231, + 90,183,110,141,132,132, 4,152,205,102, 24,141, 70, 80, 74, 33, 8, 2, 40,165, 40, 45, 45,197,246,237,219,177,101,203, 22,115, +113,113,241,231, 0,230, 81, 74, 79,185,241,220, 84, 90,196, 37,176,106,186, 41, 40, 3, 3, 3,195, 77, 84, 65, 52, 82,171,213, + 83,215,173, 91,215,170, 71,143, 30,113,229,229,229,231,108, 54, 91,101, 98, 98, 34, 69,213,166,230,222, 80, 74, 41,157,224,133, +107, 1,128, 8, 31,239,232,173, 86,107,167,130,130,130,253, 0,176,102,205, 26,164,167,167, 23, 26,141,198, 25,148,210,243, 44, + 38, 24,254,166,249,231,228,241,227,199, 83, 29, 14, 7, 10, 10, 10, 96, 54,155, 97, 48, 24, 92, 2,139,231,121, 80, 74, 97,183, + 87, 25,107, 37, 73,194,129, 3, 7,176,121,243,102,122,238,220,185, 55, 40,165, 51,100,129,117, 51,105, 17, 38,176, 24, 24, 24, +110,245,202,161,123,221,186,117,159,255,233,167,159, 26, 54,104,208, 64, 95, 81, 81,113,198,110,183,219, 0, 32, 42, 42, 42,141, +231,121,149,231, 59, 14,135,195, 28, 22, 22,182,195,155,117,139, 16,178,212,100, 50,245,240,246,158,243, 93,123,113,113,241, 33, +249,255,111,191,253,134, 39,158,120,194,154,147,147, 51,151, 82,186,147,197, 8,195,223, 81, 96, 29, 58,116, 40,117,249,242,229, +104,223,190, 61, 90,182,108,137,138,138, 10,151,216,178, 88, 44,176,217,108, 87,189, 87, 86, 86,134,231,159,127,254, 20,165,180, +217,205, 40,176,228, 1,103,211,217, 24, 44, 6, 6,134, 91, 25, 57, 57, 57, 5,145,145,145, 87, 36, 73,162,242,181,226,226,226, +163,215,194,117,173,239, 49, 48,252, 77, 97,179, 88, 44,232,216,177, 35,206,159, 63,143, 3, 7, 14,184,132, 86, 65, 65, 1,178, +179,179,171, 61,188,111,223, 62, 28, 60,120, 16,119,220,113,135, 39,207,244,155,110, 12,150, 83, 57,246,114,122,106, 27, 75, 43, + 12, 12, 12,183, 88, 11,188,145, 90,173,158, 58,103,206,156,152, 7, 30,120,192,117,189, 54,186, 8,179,179,179, 93, 45,116,214, + 69,200,112,147,228,159,161,137,137,137,159, 61,243,204, 51, 17, 93,186,116, 65,102,102, 38,178,178,178, 80, 92, 92,140,118,237, +218, 33, 45, 45, 13,103,207,158,197,134, 13, 27,112,240,224, 65,168, 84, 42, 36, 39, 39, 67,183,108, 57, 62, 34, 56, 70, 41, 77, +115,227,186,105,180,136, 75, 96, 49, 48, 48, 48,220,226,149,132, 30, 64,250,184,113,227, 90, 78,153, 50, 5,132, 16, 36, 38, 38, +150,134,122,144,123,118,118,118, 4,165, 20,108,144, 59,195, 77,150,127,194, 1,188,148,146,146,242,226,184,113,227, 84,173, 90, +181, 66,102,102, 38,242,243,243, 81, 92, 92,140, 61,123,246, 0, 0,146,146,146,144,148,148,132, 19, 39, 78, 96,231,206,157,101, + 21, 21, 21,143, 83, 74,191,185, 41,195,132, 9, 44, 6, 6, 6, 6, 87, 37, 33, 0, 24,219,167, 79,159,129, 11, 23, 46, 68,106, +106,106,200, 5,214,169, 83,167, 34,198,141, 27, 7,182, 76, 3,195, 77,154,135,226, 0,188,214,170, 85,171,177, 79, 60,241,132, +208,160, 65, 3,100,101,101,225,167,159,126, 66,147, 38, 77,112,249,242,101,108,217,178,197,146,159,159,255, 30,128, 12, 74,105, +233,205, 26, 22, 92, 45, 7,116,127,198,201, 56, 25, 39,227,252,187,112, 82, 74,237,148,210,247,183,108,217,242,225,224,193,131, +165,218,112,231,224,193,131,165, 45, 91,182,124, 72, 41,125,223,159,184, 98,113,196, 56,255,142,156,148,210, 60, 74,233,132, 99, +199,142, 53,125,238,185,231,190,156, 57,115,166, 36, 73, 18,226,226,226,176,106,213, 42,105,197,138, 21,159,229,231,231, 55,166, +148, 78,190,153,197, 21,240,199, 32,119, 6, 6, 6, 6,134, 63, 42,137, 31, 8, 33,153, 0,198,134,152,186,226,236,217,179,111, + 83, 74,143,176, 80,102,184,201,243,208, 5, 0,163, 9, 33,255, 62,112,224,192, 20, 0, 20,192, 76, 74,233,239,183, 74, 24, 48, +129,197,192,192,192,224,189,130, 56, 66, 8,121, 45,196,180,175, 81, 74,139, 89,232, 50,220, 66,249,232, 40,128, 7,111, 69,191, +179,189, 8, 25, 24, 24, 24,124, 87, 14,197, 55, 50, 31, 3, 3, 3, 19, 88, 12, 12, 12, 12, 12, 12, 12, 12, 76, 96, 49, 48, 48, + 48, 48, 48, 48, 48, 48, 92, 27, 8, 0, 95, 51, 1, 54, 7, 77,114, 13, 51, 20, 2,241, 51, 78,198,201, 56, 25, 39,227,100,156, +140,243,230,227, 12,196, 93, 19,253,113, 67,131, 82, 26,240,128,115,189,172,154, 30, 0,250, 95,203,123,140,147,113, 50, 78,198, +201, 56,255,190,156,206,198, 59, 65, 85, 47, 9, 39,255,191,145,253,126, 45,245,220,159,229,247, 91,133,243,102, 59,132, 0,234, +210, 21, 72,132, 16, 9,128, 68, 67,176, 50, 41, 33, 68,142,128,144,240, 49,212,130,105,179, 42,142,200, 31, 58,156,197, 19, 3, + 3, 67,141,202, 14,222,173,146,117, 0,112, 16, 66,112,163,149, 37,161,172,231,106,195,239,183, 50,231,223, 29,130,191,128,226, +121,126, 99,157, 58,117,250, 20, 20, 20, 72,206,235, 80, 42,149,224, 56, 14,162, 40, 26,203,203,203,245,215, 16, 9,159,198,199, +199, 63, 90, 88, 88, 40,113, 28,135,176,176, 48, 16, 66, 92,156, 37, 37, 37,250,191, 58, 80, 26, 54,108, 88,108, 52, 26,117,158, +215,195,194,194, 76, 23, 47, 94, 12,191, 21, 10, 72,133, 66, 49, 44, 58, 58, 58, 50, 63, 63,159,114, 28, 7,133, 66, 1,158,231, +225,252,109, 47, 41, 41,249, 34, 88,190,232,232,232,125,209,209,209,145,242,251,132, 16, 20, 22, 22,150,228,230,230,222, 14, 0, +106,181,122,167, 86,171,141, 17, 4, 1, 60,207,131,231,121, 24, 12,134,194,130,130,130,238,172,186,250,123, 98,245,234,213,252, +160,164, 49, 77, 4,106,108,203,113, 52, 66,146, 72,169,157,168,127,219,144,245,233,153, 96,222, 31, 62,124,184,227, 47,206, 3, +221,157, 45,139,157, 33,226,115,223,159,208, 4,160, 0,192, 25, 0,171, 40,165,198,191, 58,190, 84, 42,213,123,241,241,241, 79, + 84, 84, 84, 24, 8, 33,148, 16,130,170,106, 0, 87,157, 29, 14, 71,102, 65, 65, 65,199, 0,149,172,168, 84, 42,223,173, 91,183, +238, 63, 13, 6,131,193,201, 71, 9, 33, 72, 72, 72,168,198, 7, 0, 54,155, 45, 51, 63, 63,191, 99, 48,110,141,139,139, 91,164, + 86,171,255, 97, 48, 24, 42,157,130,200,189, 71,198,189, 18, 63,155,159,159,223, 51,144, 32, 80, 42,149,243,226,227,227, 31,115, +250, 29,132, 16, 26, 27, 27,123,221,126,143,143,143,255,103,101,101,101, 53,191,199,197,197,121,229,244,229,119,111,156,238,238, + 36,132, 32, 54, 54,246,186,221,121, 35,114,222,180, 2, 11, 0, 71, 8, 89,219,189,123,247,222,219,182,109,227,142, 31, 63,206, +181,104,209, 2, 14,135, 3,146, 84,149,158,147,147,147, 53,215, 80,200, 44,238,217,179,231, 67,219,183,111,231,214,174, 93,203, +117,234,212, 9,132, 16, 56, 28, 14, 56, 28, 14,180,110,221, 90,125,157,133,152, 78, 16,132,231,149, 74,101, 47,187,221,222, 18, + 0, 68, 81,252,221,108, 54,111,179,219,237,115, 41,165, 21,193,240, 88,173, 86, 77, 94, 94,222, 85, 97,147,146,146,162,188, 86, +183,233,245,250, 93, 28,199,165,184, 2,216, 41, 52,188,101, 98,249, 76, 41, 61,151,159,159,223,205, 23,103, 84, 84,148,139,211, + 23,135,231, 53, 73,146,206,229,229,229,117, 11, 32,174, 30,232,217,179,103,196,230,205,155,201,229,203,151,137, 90,173,134, 36, + 73,112, 56, 28,176,217,108,104,213,170, 85,141,214, 79,139,140,140,212, 79,158, 60,185,201, 93,119,221,133, 53,107,214,224,145, + 71, 30, 65,143, 30, 61, 78,201,247,181, 90,109,204,177, 99,199, 82,163,163,163, 97, 48, 24, 80, 90, 90,138, 1, 3, 6,252,237, + 51, 87,151,246,245,102, 18,142, 68,187, 10,127,187,163,104,207,161,172,235, 94, 87, 41, 50, 50,242,160, 82,169,140,151,227,149, +227, 56,175,113,237,126,205,100, 50,229, 22, 20, 20,180, 15,144,127, 26, 2,184,135,231,249,166,130, 32, 52, 7,208,208,110,183, +199, 3,128, 66,161,200,229,121,254,130,205,102, 59, 97,177, 88, 78, 3,248,206,185,144,160, 87, 12, 74, 26,211,132,216, 13,195, +203,205,210, 96, 77,227,140,102,134,179,147, 79,106, 84,134, 31, 6, 37,141, 89, 29,172,200,250, 11,197, 85,163,186,117,235, 62, +239,252,125, 37, 68,155, 48, 71,152, 76,166, 30, 60,207,171,236,118, 59,114,115,115, 11, 62,252,240,195,139, 11, 22, 44,232, 67, + 8,121, 39,208,194,163, 93, 59,214,223,207,113, 92, 50,156,242, 65,162,142,204,221,251, 47,135,164, 98,226,121,126,222,253,247, +223,255,216,234,213,171, 53, 7, 14, 28,208,180,108,217,210, 85, 62, 73,146, 4, 79,195, 67,163, 70,141,252, 6, 31, 0,129,227, +184,247,134, 15, 31, 62,106,233,210,165,154,139, 23, 47,106, 18, 19, 19, 93,156,238,226, 77, 70, 98, 98, 98, 80,110,141,137,137, +249,244,174,187,238, 26,189,100,201, 18,113,221,186,117,234, 58,117,234, 32, 38, 38, 6, 10,133,226,170,103,187,119,239, 30,104, + 37,126,142,227,184,121,247,221,119,223,232, 21, 43, 86,104,246,238,221,171,105,221,186, 53,120,158,191,110,191, 15, 29, 58,116, +212,242,229,203, 53,135, 15, 31,214, 52,109,218, 20, 28,199,129,227,184,171,248, 56,142, 67,189,122,245,130,226,188,247,222,123, + 71,173, 92,185, 82,115,240,224, 65, 77,243,230,205, 93,225,233,214, 61, 87, 99,119,222,224,156, 55,159,192,114,154, 75,151,118, +239,222,125,208,182,109,219,120, 0, 56,120,240, 32,138,138,138,144,148,148, 4,157, 78, 7,149, 74, 5,147,201, 68,107, 88,104, +125,234, 20, 87, 34, 0,124,253,143,161, 56, 39, 2, 19,242, 44, 80, 40, 20, 56,123,246, 44,120,158,167,215, 81, 40,222,161,215, +235,151,124,243,205, 55, 81,237,219,183,231,242,243,243,145,146,146,130,162,162,162,219,183,111,223,222, 97,204,152, 49, 99, 8, + 33,143, 80, 74,183, 7,203,249,195, 15, 63, 64,171,213, 66,163,209, 64,171,213,194, 98,177,144,107, 14,104, 65, 72,190,112,225, + 66,156, 78,167,131, 36, 73,174,195,163,255,218, 5, 73,146,144,154,154,106, 13, 80, 48, 38, 95,188,120, 49, 78,173, 86,131, 82, + 90,141,207,225,112, 64,165, 82,185,183, 20,224,112, 56,144,146,146, 98, 13,100,185,146,197, 21, 0, 44, 91,182, 12,117,235,214, + 69, 92, 92, 28,180, 90, 45,212,106,117,181, 10, 61,200, 2, 28,131, 6, 13,194,180,105,211,144,145,145,129,151, 94,122,169, 90, + 1, 43,138, 34,162,163,163,241,227,143, 63, 66,175,215,163, 65,131, 6, 16, 69,241,239,111, 9,228, 72,244,238,253,151, 92, 22, +217, 59,251,182, 16,186,116,104,240,129, 51,134,193,113,128, 36, 85, 85,153,132,128,218,109, 82,241, 47,191,101,189, 30, 68,120, + 38, 94,188,120, 49, 78,165, 82, 5,229, 14,135,195,129,164,164, 36, 62, 64,254, 25,156,150,150,246,245,211, 79, 63,173,104,218, +180, 41, 81, 40, 20, 16, 4, 1,130, 32,200,233,177, 1,165,180,129, 36, 73,189,115,115,115,233,130, 5, 11,254, 77, 8,185,159, + 82,250,131,215,244, 78,141,109,203,205,210,224,159,127,197,237,195,251,191,130, 31, 87, 77,190,189,103, 59, 9,225, 26,227, 25, +167,229,230, 70, 21, 87,122,181, 90, 61,245,231,159,127, 78, 45, 47, 47, 47,235,209,163,199, 84, 66,200,115,161,216,140,185,184, +184,248,168,252, 91,169, 84,226,217,103,159,197, 93,119,221, 21, 57, 96,192,128, 73,132,144,127, 81, 74,173,190,149, 0,159,188, +115,223,249, 56,249,255,189,131,218, 40,186,117,106,144, 91,213, 16,243,124,154, 66,114, 72,153,123,127,205,236, 24,132,127,255, + 61,108,216,176,135, 87,175, 94,173, 3,128,133, 11, 23, 98,216,176, 97,136,142,142,134, 70,163,129, 66,161,128, 40,138,213,206, + 1, 44, 66, 60,128,127, 63,248,224,131,195,151, 46, 93, 26, 14, 0, 75,151, 46,197,208,161, 67, 17, 19, 19,131,240,240,112, 40, +149, 74,240, 60, 95,227,240,139,137,137,249,180,199,237,183, 63,190,100,201, 18, 0,192,148,231,158,195, 93,157, 59, 67,167, 81, + 67,163, 86, 66, 14, 11, 37, 47,226,206, 9, 19, 3,249,155, 3,240,206,176, 97,195, 70,174, 88,177, 34, 28, 0, 14, 28, 56,128, +188,188, 60,196,199,199, 67,173, 86, 67,169, 84,186,252, 76, 8,129, 90,173, 14,202,239,195,134, 13, 27,190,124,249,242,112, 0, + 88,188,120, 49, 6, 13, 26,228,242,187, 74,165,130, 66,161,168,118,120,138, 77,111,156,247,223,127,255,240,149, 43, 87,134, 3, +192, 23, 95,124,129,254,253,251, 35, 42, 42,202, 21,158, 50, 87, 77,226,232, 70,230,188, 41, 5,150, 60, 54, 42, 62, 62,126,228, +207, 63,255,204,185,137, 3,168, 84, 42,168, 84, 42, 40,149, 74, 87, 55, 97, 13, 10, 45, 18, 31, 31,255,232,246,237,219, 93, 47, + 89,232, 85, 38,234, 26, 87,220,110,252,253,251,244,233,179,124,253,250,245, 97, 10,133, 2, 70,163, 17, 71,143, 30, 69,100,100, + 36,148, 74, 37,238,187,239, 62,190,123,247,238, 49,189,123,247, 94, 67, 8, 25, 21,204, 12, 5, 74, 41,116, 58, 93, 53,129,117, +189, 93,200,106,181, 26,235,214,173, 3,207,243, 94, 11, 46,247,223,113,113,113,193,248, 27, 42,149, 10,187,118,237, 2,207,243, + 16, 69, 17,130, 32, 64, 20, 69,124,255,253,247,120,225,133, 23, 80, 80, 80, 0, 66, 8, 68, 81, 68,120,120,192,222, 77, 18, 29, + 29, 29, 41,139, 43, 89,252,168,213,106,136,162, 72, 4, 65, 32,114, 23, 30, 33,132, 4,219,167,206,113, 28,190,252,242, 75,188, +245,214, 91,120,249,229,151,177,104,209, 34,180,109,219,214, 93,124,162,172,172, 12, 81, 81, 81,136,138,138, 66, 88, 88,216, 53, +167,133, 27, 9,158,161,243,238,220,249, 26, 72, 20, 85,131, 60, 36, 64, 2, 40, 40, 36, 42, 33, 55,235, 12,222,152,246,118,208, +181,142, 74,165,194,206,157, 59, 93, 34, 72, 16, 4, 16, 66,224, 46,140,228,163,110,221,186, 1,249, 20, 10,197,244,111,191,253, + 86,249,229,151, 95, 98,197,138, 21,174,180,165,213,106, 17, 25, 25,137,152,152, 24,215,145,156,156, 76, 62,251,236, 51, 69,219, +182,109,167, 3,248,193,123,156,211, 8, 77,227,140,102,195,251,191, 2, 0, 24,254, 10, 69,241,169, 89,183,113, 37,175, 71,220, +192,226, 74, 0,144,190,110,221,186, 86,137,137,137, 97, 90,173,246,226,156, 57,115, 98,158,125,246,217,116, 66,200,107,215,185, + 41,115,169,108,165, 9, 11, 11, 11,235,213,171,151,114,246,236,217,104,210,164, 9,198,140, 25, 19,189,112,225,194,251, 0,172, +242, 87, 30,185, 99,193,251, 31, 68, 82, 90,149,126,168, 68,171,157,139,242, 46,224,185, 73,111, 4,229,168,122,245,234,141, 93, +179,102,141,206,221,146,228, 94,249,187,151, 81,242,225, 75, 16, 56,173, 24, 92,253,250,245, 31,255,234,171,175, 92,156,117,234, +212,113,149, 75,130, 32,128,227, 56,252,252,243,207,152, 51, 61, 29, 81,177,137,152,255,254,194,128,238,140,139,139, 91, 52,120, +240,224,127, 44, 94,188,216,117,173, 77,227,198,184,187,123,103,196,213,209,163, 78, 84, 85,217, 70, 37,130,223, 78,156, 15, 88, + 31, 1,224,234,213,171, 55,102,213,170, 85, 58,247,134,160,236, 87, 0, 48, 24, 12, 46,171,189,197, 98, 65,199,142, 29,131,242, +187, 59,167,108, 93,147,197,154,103, 89, 47, 55, 96,252,113,214,171, 87,239,113, 89, 0, 3, 64,116,116,116, 53, 14, 81, 20,177, +234,199, 37, 87,213, 13,215,203, 89,211,120,247,228, 60,127,254, 60,102,207,158, 93, 45,222,101,107, 86, 82, 82, 18, 22, 44, 88, +224,143,211, 27, 58, 1,136,117,251,111, 1,160,116, 59,231, 3,248,197,203,115,242,117, 17,192,109,206,123, 14, 0,229, 0, 34, +189,240,249,226, 41, 64,213,118, 63,177, 30,207,123,126,167,186,192, 34,132,200,185,183, 15,128,157, 5, 5, 5,210,241,227,199, +185, 3, 7, 14, 64, 20, 69,196,197,197,161, 83,167, 78,114,247, 25, 68, 81,132, 86,171, 37,145,145,145,185,114,133, 43, 7,158, +123, 95,186,155,144,225,138,138,138,164, 77,155, 54,113, 75,239, 31, 8, 11, 5,218, 77,157,131, 65, 67,134, 96, 67,146, 18, 60, +128,219,143, 23, 64,163,209, 8,162, 40,218,228, 72,144, 57,221,199,102,121,138, 35, 66, 72,184, 86,171,253,236,187,239,190, 11, +227, 56, 14,229,229,229,144, 36, 9, 61,122,244, 0,199,113, 56,114,228, 8,166, 76,153,130,175,191,254, 26,223,126,251,173,186, +125,251,246,159, 17, 66, 90, 82, 74,203,221, 10,175,205,222, 18,103,120,120, 56, 52, 26,141, 75, 96,201,126,118, 55,117,203,207, + 83, 74,179, 10, 10, 10, 58,248,227,116, 56, 28, 24, 58,116, 40, 8, 33,224,121,190, 90,161,227,126, 86, 40, 20, 56,114,228,200, + 85,137,207,155, 48,148,253, 10, 0, 26,141, 6, 58,157, 14, 91,183,110,117,221,111,215,174, 29, 44, 22, 11,234,212,169,131,223, +127,255,221, 91,193, 93,141, 51, 63, 63,159,102,103,103,147,165, 75,151, 66, 20, 69,196,196,196, 64,163,209,144, 37, 75,150,164, + 43, 20,138,100,147,201, 36, 89, 44, 22, 40,149,202,249,178, 53, 75, 16,132,202,210,210,210, 24, 95,156, 60,207,227,233,167,159, +198,139, 47,190,136, 69,139, 22,225,169,167,158,186,202,194,101, 50,153, 80,167, 78, 29,151,200, 10,198,239,215, 47,128,106,153, + 83,162, 56,122,112, 3,142, 29,222, 12,201, 33,193, 33, 81, 80,234,128,100, 7, 14,108,218,147,122,229, 92,118, 18, 5, 5,156, + 29, 25,170,210, 10,123,239, 58,170,230, 0,214,110, 45, 48,191, 23, 40,125, 10,130, 0,155,205,134,239,190,251, 14,103,206,156, +193,198,141, 27, 97, 52, 26, 93,225,216,181,107, 87, 60,254,248,227, 94, 5,150, 39, 39,165,116,241,229,203,151,219,245,232,209, +131,148,148,148,160,164,164, 4, 70,163, 17, 14,135, 3,118,187, 29,130, 32, 32, 44, 44, 12,106,181, 26,241,241,241, 48,153, 76, +212,108, 54, 47,246,197, 41, 73,164,212,112,118,242,201, 31, 87, 77,190,125,248, 43, 20,171,223, 34,104, 82, 95,101,248,223,254, +240,199,215,238,120,105, 0, 0, 42, 57, 75, 29, 14,160, 54,135, 84,240, 98,250,127,198,255,233,113, 84, 29, 99,231,206,157,219, +165, 71,143, 30,113,101,101,101,199, 37, 73,162, 15, 60,240, 0, 78,158, 60,217,114,225,194,133, 99, 1,188, 95, 83, 78, 66, 72, + 31,231,253, 9,238, 21,252,143, 63,254,120, 63,128, 71, 63,249,228, 19, 12, 27, 54, 12, 11, 23, 46, 76,243, 20, 88,238,156,148, + 82, 92, 56,245, 51, 46,156,222, 1, 73,162,110, 86,112,239,191,105,144,238,172,172,172, 52,253,250,235,175,186, 79, 62,249, 4, +113,113,113,104,212,168, 17, 52, 26, 13,194,194,194,170, 85,174,238, 21,110,160,188,105, 52, 26, 77, 23, 46, 92,208, 45, 95,190, + 28, 49, 49, 49,104,216,176, 33, 52, 26, 13,148, 74,165,171, 33,176,116,233, 82, 44,155,246, 48, 46,156, 56,140,161,119, 15, 8, +232, 78,141, 70,243,143,197,139, 23, 87, 51,121,196, 71, 69, 65, 16, 57,240, 34, 65, 84,191,251,171,172,132, 63,125,227,115,117, + 71, 15, 78, 82, 94, 94,110,218,187,119,175,110,255,254,253,144, 36, 9, 13, 27, 54,132,193, 96,128, 94,175,119,249,127,211,166, + 77,184,239,190,251,240,229,151, 95,162,107,215,174, 1,253, 94, 81, 81, 97, 58,124,248,176,238,171,175,190, 66,116,116, 70,111, + 22,103, 0, 0, 32, 0, 73, 68, 65, 84, 52,234,213,171,231,242,187,124,136,162, 8,158,231,145,146,146,130,210,210, 82,232,116, +186,128,113,116,224,192, 1,221, 87, 95,125,133,168,168, 40, 36, 39, 39,187, 44,108,178, 40,122,235,131,105,213, 56,194, 72,194, +117,115,214, 52,222, 61, 57,239,191,255,126, 52,105,210, 4,122,189, 30, 90,173,214,197,237,143,211, 77,139,244,166,148,110,243, +136,194, 88, 66,200,122,183,239, 15, 33,132,172,119, 63,251,122,206,249,243,142,244,244,244,142, 25, 25, 25,179,187,118,237,186, +124,215,174, 93,203,124,241,249,226, 73, 79, 79, 79,203,200,200,152,237,254,188,151,239, 92,109,193,162,148, 18,167,231, 4, 0, +104,209,162, 5,138,138,138,160, 82,169,208,169, 83, 39, 20, 20, 20, 64,167,211, 65,161, 80,128, 82,138,241,227,199,243, 47,189, +244, 82, 28,199,113,176,219,237,174, 2,223, 71, 95,186,196,113, 28,186,117,235,134,163,206,158,159, 65, 67,134, 32, 57, 57, 25, +242, 32,142,176,176, 48,140, 31, 63,158,188,240,194, 11,130,108,189,160,148,194,104, 52, 34, 33, 33, 65,237,167,235,237,185, 53, +107,214, 68, 40,149, 74,148,151,151,187,186,200,120,158,199,241,227,199,241,206, 59,239,224,159,255,252, 39, 46, 93,186,132,196, +196, 68,188,248,226,139,186,140,140,140,231, 0,188, 25,168, 32,214,233,116, 46,113,165,209,104,240,220,115,207, 9,221,187,119, +143,211,233,116, 8, 15, 15,135,220,221,231,112, 56,208,184,113,227,128, 82, 92,146, 36,108,216,176, 1,130, 32, 4,180, 96, 57, + 19, 94, 80,156,123,247,238,117,137, 51,247, 86, 17, 33, 4, 71,143, 30,117,137,185, 32, 56, 41,199,113,208,106,181,168, 91,183, + 46,212,106, 53, 52, 26, 13, 89,190,124,249,107,141, 26, 53, 74,120,225,133, 23,184,178,178, 50,174, 91,183,110, 24, 54,108,152, + 32, 73, 18,172, 86, 43,210,210,210, 2, 90,218,182,109,219,134, 15, 63,252, 16, 79, 61,245,148, 87, 11,150, 60, 8, 82,175,255, +203,231, 56,132, 12, 18, 0,171,221, 6, 67,133,209,213,133,235,112, 56,112,120,235,161,212,115,135, 78,165,173, 95,254,165, 8, + 0,166,173,223,184,191,150, 48,236,131,149,205,122, 71, 43,246,110, 45,178,238, 13,100, 25,156, 56,113, 34, 94,127,253,117, 60, +248,224,131,216,180,105, 19,166, 76,153,130, 49, 99,198, 84,179, 96, 5, 3,155,205,246,209, 35,143, 60,242,212,234,213,171,155, +191,242,202, 43,156,108,193,210,104, 52,242, 24, 46,152,205,102, 24,141, 70,156, 56,113, 66,122,242,201, 39, 79, 90, 44,150,143, +124,241,217,137,250, 55,141,202,240, 67,227,100,174, 73,229,249,183,195,123,116,110,104, 36,234, 14,165,247, 55,235, 79, 7, 63, +218, 48, 10,148,130, 74,128, 68, 1,179,185, 18,227,199, 63,203,255,149,113, 69, 8, 25, 60,106,212,168,123,198,142, 29,219,168, +188,188,252,172,221,110,183,201,247,166, 76,153,130, 83,167, 78, 13, 36,132, 92,240,213, 37,234,131, 51,185,113,227,198,207, 58, + 28, 14, 74, 8, 57, 67, 41,205,116,222,154, 15, 32, 98,219,182,170,250, 35, 57, 57, 25, 0,210, 8, 33, 75, 1,148,186,139, 49, +119,115,168,205,102,135,209,104,246, 43,172,228,255,148, 74,193,186,145, 54,111,222, 28,247,220,115, 15, 68, 81,116, 53,210,220, +187,199, 60,133,150,191,242, 3,128, 68, 8, 65, 98, 98, 34, 6, 15, 30, 12,133, 66, 81,141, 83,174, 80, 7, 15, 30,140,137,111, + 78,197, 71, 19,251,226,195, 71, 82,209,127,102,174, 95,119, 26, 12,134,138, 45, 91,182,168, 95,124,234, 41,220,214,180, 41,234, +232,245,168, 31, 31, 11,181, 74, 9,133,187,155, 72, 96,163, 58,173,170,236, 36,158,231,209,186,117,107,228,230,230,226,252,249, +243, 56,127,254, 60, 56,142, 67,143, 30, 61, 92,150,224,211,167, 79,227,205, 55,223,132,217,108, 14,218,239, 77,155, 54, 69,223, +190,125,161, 84, 42,161,209,104,170,117, 13,202, 97, 90, 94, 94,142, 38, 77,154, 96,237,218,181,104,214,172, 89, 64,206, 22, 45, + 90,160, 87,175, 94,213,194, 83,173, 86,187,234, 13, 0,184,188,183,194,245,141,164,164,164, 26,113,110,220,119, 9,159,108,218, + 2,179, 69, 66,153,193, 86,237,133,132, 58,122,236,248,234,149,160,252, 46,115,126,244,209, 71, 40, 45, 45,117,213, 61,178,177, + 68, 54, 78,212,171, 87, 15, 31,126,248,161,175,248,145,181, 8,241,113,127, 72,144, 13, 41,249, 57, 57,113,169, 50, 50, 50,102, +123,190, 31,136,207,253,190,199,251, 22, 15, 81,150,235,183,139, 80,174, 23,228, 76,144,148,148, 4,121,156,135,156, 65, 92, 5, +168,221,142,175,191,254, 26,113,113,113,174, 35, 34, 34,194,103,130,150,199, 9, 77,204,175, 26,102,240, 99,162, 2, 23, 0,220, +157, 79, 93,227, 68, 28, 14, 7,214,172, 89, 3,119, 1, 19, 30, 30,238,183,187, 72,169, 84,246,238,212,169, 19,103, 54,155,175, + 18, 87, 25, 25, 25, 24, 53,106, 20,154, 53,107, 6, 73,146, 80, 81, 81,129, 62,125,250,136,243,231,207,239, 93, 19,129,165,209, + 84,141,231,183, 88, 44,216,186,117, 43,162,162,162, 16, 19, 19,131,232,232,104,132,135,135,203, 51, 33,105, 32,145, 65, 41,197, +208,161, 67, 93, 21,159,187,213,202, 83,108,237,218,181, 43,168,174, 55, 74, 41, 58,119,238, 12,173, 86, 11,157, 78, 7,157, 78, +135, 13, 27, 54,184,158,185,253,246,219, 33, 73, 18,226,226,226,176,123,247,110,191,221,156,148, 82,170, 80, 40, 92,207,139,162, + 72,150, 44, 89,146,158,146,146,146, 48,105,210, 36,142,231,121, 28, 60,120, 16,199,142, 29, 67,195,134, 13,131, 30,147, 85, 82, + 82,114, 37, 61, 61,221,145,158,158, 14, 0, 72, 75, 75, 67, 73, 73, 73,158,124,191,172,172,172,112,224,192,129,213,198,101, 20, + 20, 20, 20,254,237, 5,150, 36,193,110,181,195, 96, 50,161,162,220,224,178, 6,229,101,231, 70,190,242,194,243,226, 59,227, 31, + 3, 0,188,240,222,251, 40, 95,244, 71, 1,246,205,139,163,226,238,127,103,249,100, 0,247, 5,168,116, 96, 54,155,209,160, 65, + 3,236,219,183, 15,229,229,229,232,223,191,127, 53, 11,169, 28,166,129, 76,241,148, 82, 11, 33,164,251,144, 33, 67,126,153, 59, +119,110,227,150, 45, 91,146,202,202, 74, 24, 12, 6,184,159, 15, 31, 62, 76,151, 45, 91,118,206, 96, 48,116,163,148, 90,124,241, +109,200,250,244,204,160,164, 49,171,255,119,144, 31, 18,215,228,164, 62,171,184,177,189, 48, 75, 85, 89,102, 60, 97,114,208, 99, +160, 14,192, 1, 9,212, 46,193,225,236,222,250, 11,197, 85,235,198,141, 27,255,107,254,252,249,241, 38,147, 41,203,102,179, 85, +122,230,221,133, 11, 23, 98,240,224,193,255, 34,132,100, 6, 26,144,238,124, 71, 25, 25, 25, 57,101,235,214,173,105, 87,174, 92, +201,233,222,189,251,100, 66,200, 36, 74,169,165,121,243,230, 17,251,247,239,239, 33,138,162,178,164,164,228,136, 94,175,135,197, + 98,105,109,179,217, 44, 29, 59,118,220,225, 53,126, 36,192,102,179,193,104, 52,163,180,180, 28, 22,171,205, 89,102, 74,112, 56, +236,206,179, 4,187,179, 28, 85, 42,132,240, 14,109, 18, 42, 40,165,224, 8, 41,217,127,248, 74, 61, 95,229,146,175,174,172, 96, +172, 87, 94,224,144,103,141,197,196,196, 64, 20, 69,124,249,229,151,248,109,231, 6, 40,121, 10,135,221, 6,187,205, 10,135,205, + 2,145,231,241,191,131,231, 49,160, 69,120, 48,113, 68,235,212,169,131,187,187,118,197,144,174, 93,171,166,171, 9, 2,116, 42, + 21, 52,138,176, 42,203, 21, 0,234,224,128,224,146,146, 36,187, 51, 62, 62, 30,251,247,239,199,196,137, 19,241,214, 91,111, 65, +173, 86,187,102, 51, 31, 63,126, 28, 43, 87,174,196,128, 1, 3,106,236,119,217, 98, 55,121,242,100,100,103,103,227,189,247,222, + 67,135, 14, 29, 32,138, 34, 74, 74, 74,208,173, 91, 55,228,230,230, 6,197,233,222,141,167, 84, 42,171, 89,155,100,225, 87,211, + 56,114,231,124,108,104, 2,214,237, 92, 6, 2,130, 61, 95, 61, 95,173, 46, 90,184,226,231, 26,115,190,241,198, 27,213,220, 25, +140,245,170, 6,249,117,125, 48, 34,203,237,185, 3,178,113,117,242,228,201,175, 18, 66,214, 79,158, 60,249,213, 57,115,230, 28, + 13,134,207,199,253,239,157,231,187,221,174, 29, 8, 40,176, 40,165, 84,169, 84, 66,146,164,106,162,202,115, 64,173,108,242,115, + 55, 41, 6, 18, 3,146, 36,185, 18,131,103,115,149,231,121,236,222,189, 27,187,119,239,174,118,253,147, 79, 62,241, 91,129,219, +237,246,150,225,225,225,213,172, 87, 10,133, 2,147, 39, 79,198,232,209,163, 93,226, 74,161, 80,224,139, 47,190, 64,199,142, 29, + 97,177, 88, 90, 6, 24,143, 98,168, 91,183, 46, 39, 23, 64, 90,173,150, 76,156, 56,145,183,219,237,174, 48,145, 15,121,108, 90, +160,196, 34,207, 74,217,184,113, 99, 80, 22,172, 96,199, 32, 81, 74,113,232,208,161,106,162, 77,158, 5, 3, 0,135, 14, 29,114, +141,207, 10,134,147,231,121, 56, 28, 14,168,213,106,162, 80, 40,136, 66,161, 72,150,197, 21,207,243,174,248,118, 31,147, 23,200, +239, 89, 89, 89,125,252,221,207,203,203,187,105,151, 99,176,218,108, 48, 26, 44, 40,175, 48, 98,250,156,207,171, 46, 78,199, 94, + 0,123,187,143,157,136,167, 7, 13,232,235,209,207, 31, 76, 1,227,170, 20,215,172, 89, 3, 81, 20,177,118,237, 90,232,245,122, +220,123,239,189,208,235,245,120,229,149, 87,240,224,131, 15, 6,109,193,114,166,165, 82, 66, 72,247,231,158,123,238,151,183,223, +126,187,126,189,122,245, 96,177, 88, 96,181, 90, 97,177, 88,112,230,204, 25, 44, 91,182,236,178,193, 96,232, 78, 41, 45, 13,196, +183, 33,235,211, 51, 95,111,127, 33,187,255,131,195,140,199,115,127, 68, 78, 78, 33,236,246, 44, 72, 14, 59,172,246,170, 25,201, + 14,187, 29,118,187, 3, 10, 5,175,127,123,214,243,155, 36, 80,112, 28,177, 12, 31, 62,252,174, 63, 73, 92, 69, 1, 24,123,246, +236,217,242,152,152,152,195,206,203,250,236,236,108, 2, 0,137,137,137, 20,128,251, 0,247,177,206,241, 88,129, 54,109, 30,251, +221,119,223,117,139,140,140,180,112, 28, 87, 60,101,202,148,122,211,166, 77, 27, 11, 96,222,137, 19, 39, 62,127,232,161,135, 34, +220, 91,240,133,133,133, 7,198,142, 29,139, 19, 39, 78,124,238,221, 68,224,180, 96,153, 76,200, 47, 44,198, 19, 99, 95,115,153, + 14, 0, 90, 77, 84, 80, 80,140,155,128, 48, 0, 40,200, 61,131,199,158,152,168, 10,212, 16,240, 86, 1,214, 96, 12,142,187,101, +200,149, 70,117, 58, 93, 85, 55,219,218,101,248,254, 63, 99, 1,135, 21,212,102, 4,254,159,189,235, 14,143,162,122,187,231,206, +206,246,180, 13,233,133, 4, 2, 40, 37,130,128, 32,124,244, 18,122, 17,165,139, 2, 63, 68, 2, 8,138,130,136,136, 74, 11,189, + 73, 23, 16, 65,145, 46,136, 82,140,116, 1, 81,122,111,129,144,144,222,119, 55, 91,103,230,126,127,100, 55,110,194, 38,217,132, +136,138,115,158,103,158,100,167,156,185,119,110,153, 51,239,125,239,123, 45,249,128, 69, 7,193,156, 15, 34, 83, 1, 86,131, 43, +229, 68,221,221,221,225,174, 82,193, 95,163, 41, 8,226, 40,145, 64, 42,101, 33, 88, 1,194,147, 66, 33, 42,240, 46,213,117,234, +235,235, 11, 65, 16,160, 82,169,240,224,193, 3,140, 30, 61, 26, 22,139, 5,175,188,242, 10,204,102, 51,140, 70, 35, 12, 6, 3, + 34, 34, 34,144,159,159,239, 82,222,237,253,188,125,180,231,189,247,222,195, 75, 47,189,132,233,211,167, 99,210,164, 73,136,136, +136, 64,116,116, 52,182,108,217,130,200,200,200, 82,121, 29,159,167,157,211, 94, 46,197,135,242, 0,148,187,140,138,115, 22,248, +253,227,177,114, 31,255, 70,135,114,115,198,196,196, 32, 61, 61,253, 49,203,149,253,255,144,144, 16,172, 90,181,170, 66,109,214, +193, 90, 20,224,228,112,119, 39,150,167, 38, 40,240,141, 50,197,196,196, 92,141,137,137,233, 65, 8,217, 23, 19, 19,211,163, 20, + 11, 86,247, 50, 44, 92,221, 81,224,115, 85, 42,216, 98, 99,159,109, 29, 45, 35,246, 23,168,253, 69,238,216,185,171,213,106,236, +218,181, 11,246, 25, 29,142,231,148, 38,176,126,242,179,153,136,109,150, 43,199,223, 61,123,246, 68,245,234,213,139, 88,175, 84, + 42, 85,169,149, 70, 16, 4,196,199,199,227,202,149, 43,104,222,188, 57,114,115,115, 33,101, 24,188,127,249, 50,234,189,241, 6, +204, 54,139,140, 92, 46,199,219,111,191,237,146,163,250,253,251,247,189, 29,127,251,250,250, 38,182,106,213, 42,228,236,217,179, +133,142,239,182,225,179, 66,161,225,138,120,161,148,226,181,215, 94, 43, 98,181,114, 20, 87,142,219,129, 3, 7, 92, 26, 34,164, +148,162, 85,171, 86,133,214, 43, 15, 15, 15,124,255,253,247,133,101,213,186,117,235, 2,127,133,128, 0,151, 56,237,249,176, 57, +182,195,104, 52, 10, 90,173,150, 57,119,238, 28,228,114,121,161,197, 78,165, 82, 65,169, 84, 66,161, 80, 84,104, 70,208,127, 1, +148, 10, 48, 91,173, 48, 24, 12,208,233, 10, 34,132,220,189,178,179,168, 0, 51, 85,124,114,154,221, 74,165,213,106,241,203, 47, +191, 96,247,238,221,104,220,184,241, 99, 78,238,174, 88,176, 28,234, 83, 58, 33,164,229,196,137, 19,207,204,156, 57, 51,184, 74, +149, 42,176, 88, 44,120,248,240, 33, 54,108,216,144,148,159,159,223,146, 82,154,238,250, 67, 0,172, 86, 14,198,124, 19,114,243, +180,248,108,214,198, 18,171, 30, 0,100,165,221, 68,207, 94,253,228, 79,175,140,104, 54,128,209,197, 94,230,155,241,103,204,170, + 60, 74,233,144,114,138,182,118,115,231,206, 29,208,184,113, 99,143,220,220,220,235, 0,240,214, 91,111,225,252,249,243, 29, 8, + 33, 87, 41,165, 71, 8, 33,145,141, 26, 53,234,240,214, 91,111, 1, 0,190,252,242, 75,236,219,183,239, 23, 74,233,145,146,234, +146,125,136, 80,167, 51,192, 83, 19,132, 71,247,143,149,153, 22,153,196, 8, 42, 8,101,126,248, 57,179, 90, 57,246, 79,229,168, + 63,212,238,243,103,127, 81,119,125,237, 13,116, 29, 61, 7,106, 41, 48,123, 88, 11, 68,104, 0,168,170, 64,214,250, 67, 16, 77, +120,193,133,163,127,112,137,127,210,234,213, 56,127,187, 32,194, 75,168,159, 31, 38, 14, 24, 0,106, 5, 78, 93,187,134,173, 71, +142, 96, 64,187,118, 80, 43,149, 46,127,168,216, 63,190,239,222,189,139, 83,167, 78,161, 78,157, 58,184,115,231, 78,145,112, 18, +148, 82,151,242, 79, 41,165,246,201, 73, 10,133, 2, 82,169, 20, 41, 41, 41,232,209,163, 71,225, 7,254,177, 99,199, 48,113,226, + 68, 12, 31, 62, 28,109,219,182,117,234, 23, 91,156,211,207,207,175,208,112, 80,124, 2,130,227,176,109,121,202,200, 25,167, 29, + 21, 45,119, 71,206, 89,179,102, 57,157, 40,225, 10,167,163, 22, 41, 5,231,138, 89,143, 96,247,135,178, 11,162,226,191, 1,120, +219,247, 77,158, 60,121,138,171,215, 57,254,182, 91,192, 92, 29,170,100,237, 99,158,206, 94,178,118,115,177, 51,184,185,185, 97, +204,152, 49,152, 54,109, 26,124,125,125,203,244,157,177, 43,215,210,240,195, 15,143, 55,178, 61,123,246,148, 53, 68,120,195,203, +203,235,165,246,237,219, 35, 55, 55, 23, 9, 9, 9,112,115,115, 67,189,133, 11,113,121,244,104,188,184,122, 53,152,246,237, 11, +131,164, 94,190,124, 25, 42,149,234, 70,121, 45, 6, 30, 30, 30,240,246,246, 46, 28, 83,183, 11, 45, 7, 11, 22,117,161, 18,226, +167,159,126,114,250,149, 88, 17, 31, 44,123,227, 63,115,230, 76, 17,255, 43, 71,193,115,230,204,153, 66, 11,150,253, 50, 87,134, +182, 84, 42, 21,181,243,169,213,106, 84,169, 82, 5, 10,133, 2, 42,149,170,136,184,114,197,122, 87, 86, 32, 81,149, 74,117,214, +205,205, 77, 99, 63, 46,149, 74,161,213,106,115, 50, 51, 51,155,254,171,135, 8, 65,193, 89, 56, 24, 12, 70,232,180,149, 31, 75, +210, 62,225,100,215,174, 93,120,249,229,151, 31, 19, 87,246,103, 93, 1,209,145, 72, 8,105,187,116,233,210,223, 22, 45, 90,228, +173,211,233,240,213, 87, 95,229,234,116,186,182, 14,126, 68,174,113, 9, 20, 86,139, 5,249, 70, 19,244,186,130,103,112,239,234, +206,103, 90, 88,215,174, 93,123, 88,116,116,180,159, 86,171,189, 39, 8,127,218, 83, 22, 45, 90,132,123,247,238, 13, 3,112, 4, +192,234, 89,179,102,213,170, 95,191,126, 85, 0,152, 53,107, 86, 2,128,213,165,245, 29, 22,219, 16,161, 78, 87, 96,245, 48,234, + 51, 42,167,158,218, 68, 70, 73, 62, 87, 21, 25,202,177,207, 92,150, 72, 36, 24, 59,118, 44, 46, 95,186,132, 14,193,121,136, 8, +244, 0,205,123, 4, 89,251, 79,113, 49, 93,133, 5,139,127, 42, 55,247, 54,135, 73, 60, 11,182,109,115,122,236, 94,239,222,229, +202,251,173, 91,183,160, 82,169,192,243,252, 99,239,155,242,230,223, 81,184, 44, 94,188, 24, 19, 39, 78,196,198,141, 27,113,249, +242,101,188,248,226,139,232,216,177, 35,210,210,210,112,233,210, 37,152, 76, 38,151,211,233,232, 23,119, 43,238, 26, 98, 79,237, + 71,124,226,125, 36,165, 36, 84,184,220, 29, 57,139, 11,172, 93,177, 23,240, 90, 84,163, 10,113,126,250,233,167, 72, 75, 75, 43, + 98,185,114,156, 24, 86,146, 5,171,184, 22, 41,134,140, 98,190, 78,246,223,230, 98, 98,167,248,239,226,231, 3, 64, 26, 0, 73, + 25,215, 21,255,157, 17, 19, 19,115,212,110,249,178,241, 74, 74,242,191,114, 58, 68,104, 23, 67,246, 6, 82,220, 50,101,255,223, +205,205, 13, 30, 30, 30,240,240,240,128,167,167,103,153,150, 33,187,192,106, 21,167, 45,226,203,101,183,100, 1,192,240,225,195, + 31,179, 96, 57, 6,228,116, 6,147,201,116,236,216,177, 99, 13,123,246,236, 41,185,113,227, 6, 36, 18, 9, 4, 65,128,185,121, +115,188,184,122, 53,174,188,247, 30,218, 60,120, 0,163,197, 2,165, 82,137,131, 7, 15, 90,242,243,243,143,149,183,191,112, 20, + 88,110,110,110,240,242,242, 42, 20, 24,174,168,114,123,163, 45,205,191,193,190, 57, 58,249,187,210,152,237, 47, 82, 71,191, 27, + 66, 8, 12, 6, 67,161,179,166, 43, 86, 70,199, 33, 66,199,134,199, 48, 12, 52, 26, 77, 97,167, 97,183, 96,185,106,189, 43, 43, +144,168, 90,173,246,188,121,243,102, 77,123, 24,137,140,140, 12,180,111,223,254,246,191,254, 77, 43, 0, 22,142,135,206, 96,132, +206,144, 95,153,195, 90, 0,128,111,190,249, 6,119,239,222,133,197, 98, 65, 76, 76,204, 99,194,170, 60, 78,238, 78,234,213,221, + 70,141, 26, 9, 93,186,116,193,153, 51,103,160, 80, 40,172,148,210,114,199,175, 18,168, 0, 11,199,193,104, 48, 64,167,215,255, + 39, 44,151, 55,111,222,204,245,240,240, 56, 13,192,253,246,237,219, 18, 55, 55, 55,212,168, 81, 3, 70,163, 49, 23, 64,174,237, +249,154, 9, 33,115,222,126,251,237, 37, 0, 96,181, 90,231,148,230,211, 70, 41,133,149,179,137,245, 74,124,142,246,186, 84, 82, +159, 84,145,112, 41,142, 47, 84, 65, 16, 48,242,173,183,208, 49, 56, 15,125, 26,251, 65,159,124, 27,106, 47, 63, 16, 77, 53, 44, + 88,252, 19,174,198,185,236,106, 73, 1,160,115,235,222,104, 80,231,241,240, 94, 45, 59, 20,124,139,157,252,229, 44, 82, 51,146, +202,157,119,189, 94, 95,162,165,202, 85, 11,150,157,211, 30, 46, 69, 42,149,162, 97,195,134,120,238,185,231,112,244,232, 81, 52, +106,212, 8,119,238,220,193,157, 59,119,240,224,193, 3, 92,190,124, 25,217,217,217,229, 46,163,239, 15,109, 69,182, 54, 11,114, +153, 28, 89, 57, 25,136,127,116, 31, 1, 62,129, 79, 92,238,133, 31, 8,221, 63, 3, 0, 4,251,121,149, 75, 96, 57,114,206,159, + 63,255, 49,209, 94, 9,161,119,206,150,241,187,188,215,255,229, 96, 75,176, 10, 25,170, 84,169,162,114, 28, 63,101, 24, 6, 94, + 94, 94,100,238,220,185, 18,134, 97,224,225,225, 1, 47, 47, 47,216,205,130,101, 65, 46,151, 27,170, 85,171,166,178, 87, 64,123, + 3,244,244,244,148,204,157, 59,151,172, 91,183,174, 68,171, 86, 25, 62, 88,139,134, 12, 25,242,191,196,196, 68,111,127,127,127, + 36, 39, 39, 67, 46,151, 23, 52,138,118,237,208, 42, 46, 14,150, 2,159, 34,220,186,117, 11,107,215,174,213,155, 76,166, 69,229, +125, 80,238,238,238,240,241,241, 41, 28, 26,180, 91,112, 28,196,162, 75,174,149,165,153,226,237, 95,124, 21, 25, 42, 42, 46,178, + 70,141, 26, 85, 68,108,185, 10,153, 76,198,217, 35,181, 51, 12, 3,139,197,130, 70,141, 26, 33, 45, 45,173,176,177, 56, 90,238, + 92, 17, 88,101, 5, 18,101, 89, 22,102,179, 25,173, 91,183, 6, 33, 4,203,151, 47,127, 54,134, 29, 5,129,184,187,251, 32, 56, +248,121,248,249, 27, 33, 8,149,183,250, 11,199,113,136,142,142, 46, 98,177,178,207, 84,180, 15,241, 83, 74, 97,181, 90, 43, 28, +180,213,222,174,159, 36,254, 27, 5, 10,135,182,244,122,227,191,174, 8, 67, 67, 67, 61,109, 67,134,197,225,124,182, 31,254, 12, +201, 64, 8,153,153,152,152, 88,191,118,237,218,104,211,166, 13, 14, 28, 56,176, 7,192,238, 98,150,194, 21,246,255, 75, 47, 11, +219,115, 52,154,160,215, 87,190, 53,180,180, 15,189, 39, 17,110,211,166,125,130,142, 65, 57,120,229, 69, 47,124,189,239, 87, 12, +110,168, 2,204,138,114,243,217,211,226, 19, 82, 29,213, 95,104,246,216,113,165, 87,193,208, 92,245, 23,154, 65,146,112,167,220, +121,119, 76,179,147,208, 1, 79,244, 60, 71,140, 24,129, 15, 63,252, 16,157, 58,117,194,157, 59,119,112,252,248,113,220,185,115, + 7,227,198,141, 67,100,100, 36, 94,124,241,197,114,113,238,141,221,129, 60, 93, 46, 24,194, 32, 43, 55, 19, 70,147, 1,147,162, +167, 61,113,185,219,113, 63, 54, 6, 0,176,243,231,243, 21,230,156, 50,101, 10, 82, 82, 82,138, 88,174,158,196,239,234,223, 10, +167, 2, 43, 51, 51,211,233,120,159,159,159, 95,106, 84, 84,148,127,114,114, 50,220,221,221,203, 20, 87,132,144,142,246, 88, 25, + 41, 41, 41, 78, 57, 61, 60, 60, 44, 81, 81, 81,210,160,160,160, 34,179, 7,221,220,220, 30,107, 92,197, 57,109, 29,147,150, 16, + 50,178, 69,139, 22, 95, 31, 56,112, 64,253,220,115,207, 33, 47, 47, 15,148, 82,108,220,184, 17, 99,199,142,133, 82,169,196,173, + 91,183,208,171, 87,175,252,252,252,252,145,142, 49,176,156,113,150,244, 69,102,143, 98,239, 68, 92,149,154,119,199, 70,186,116, +233, 82,204,158, 61, 27, 83,166, 76, 41,181, 96,214,172, 89, 3, 20, 27,206,115,198, 73, 41,197,130, 5, 11, 42,141, 51, 51, 51, +115, 99, 49,235,211,242, 62,125,250,176, 9, 9, 9, 69, 68,149,227,230,164, 67, 42,194, 89, 86, 32, 81,137, 68,130,128,128, 0, +204,156, 57, 19, 62, 62, 62, 8, 12, 12,124,204,242, 82, 86, 25, 85,240, 37,240,151,114,242, 84, 56, 55,127,206, 39, 45,191,218, +188, 87,170,144, 3,167,143,239, 68, 94,118, 74, 81, 11,172,229,207, 41,209,242, 70, 29, 96, 62,255,139, 75,233, 52,153, 76,152, + 55,111, 30, 62,251,236, 51,124,246,217,103,174,148,251, 19,229,221, 21,145,229,148, 83,160, 68,237,230, 13,165, 91, 48,234, 69, +122, 67, 40,103,172,206,191,169,220,133,164,164, 36, 4, 7, 7,227,206,157, 59, 47, 72, 36,146, 34,138,128,231,121,147, 82,169, + 60,233, 2,231,149, 93,187,118,213,159, 58,117, 42,102,207,158, 13, 0, 67,143, 29, 59, 54,144, 16, 98, 44, 75,164, 21,231, 20, + 40, 37, 42,181, 6, 74,183, 32,212,123, 65, 3, 65,224, 42, 37,239,246,151, 95,113,235, 85, 57, 3, 73, 59,237,235, 0,224,247, + 95,246, 96,218,123, 47, 96,227,143,191, 97,217, 89,160,129, 38, 13,245,252,210, 33,164,223,192, 7,131, 95,194,130,111,255, 0, + 0, 28, 63, 86,102, 25,149, 26,215,216,104,176, 60, 81,222, 29, 45, 85,142,247, 41,203, 7,203, 25,167,253,227, 80,171,213, 34, + 39, 39, 7, 95,127,253, 53,134, 13, 27,134,180,180, 52, 60,120,240, 0,183,111,223,198,119,223,125, 87, 56, 59,189,188,101,244, +254, 91, 31, 99,234,130, 9,160,160,168, 93,179, 30, 38,143,254, 12, 77, 26, 52,127,226,114, 47,142,178,172, 87,165,113, 46, 93, +186,180, 66,117,233, 63, 33,176, 74,251,138, 96, 24, 6,190,190,190,133,149,195,177,226, 85,228, 75, 87, 34,145,128,227,184, 66, +223, 30,251, 6, 0, 61,123,246,196, 15, 63,252,224,202,204,136, 3,132,144,215,235,214,173,187,225,243,207, 63,119,111,211,166, + 13, 27, 28, 28,140, 38, 77,154,224,214,173, 91,248,241,199, 31,173, 43, 87,174,212,231,231,231, 15,167,148,254, 92,145,126,201, +190,244,140,227, 86,158,175, 28,139,197,146,112,231,206,157,160, 5, 11, 22, 72, 24,134,193,146, 37, 75, 10, 27,163, 61, 80,171, + 35,142, 31, 63,206, 9,130, 80,234,144,140,213,106, 77,184,115,231, 78,208,194,133, 11, 37,132,144, 66, 78,134, 97,224,184,176, +114,121, 56,157,137, 75,251,132, 7,103,155,179,180, 59, 43,227,210, 2,137,178, 44,139, 91,183,110, 97,218,180,105, 32,132, 96, +231,206,103,195, 71,231,242,141,140,117, 47,214,243,247,238,217,181,101,125, 16, 2,139,249,241, 17, 32,247,108, 93,161,184,234, +179,112, 43,118,191, 63,192, 21,177,115,247,228,201,147, 85,230,205,155,199, 74, 36, 18, 44, 94,188,184, 72,176,223,226,229,126, +226,196, 9,174, 34,195,123,246,246,108,177, 88, 96, 48, 84,204,106, 66, 41, 61, 21, 51,107,106,212,166,111,126,146, 18, 98,198, +233, 99, 59,145,155,227,124,106,186, 92,202, 98,221,215,187, 56,153, 84,146,240, 55, 23,221,178,190,125,251, 78,221,177, 99, 7, + 11,224,234, 19,240,236, 89,191,126,125,215,126,253,250, 85,169, 85,171, 22,190,250,234, 43,153, 70,163,105, 76, 8, 33,206, 68, + 90, 25,207,113,207,156, 89, 83,223,252,250,219,159,228, 12,177,224,244,241,157,200, 45, 38,214, 31,183, 70, 75,177,126,227, 46, +139, 76, 38,189, 89, 86,191,238,104,189,170,204, 23, 98,175, 33,163,209,103,233, 50,212,104,210, 25,115,230,118,196,250, 89,253, +176,168,139, 12,150,237,131,209,160,239, 38,108,153,222, 13, 0, 16,188,222, 69,235, 8, 43,195, 67, 39, 22,170,156, 92,165, 77, +212,148,207, 74,106,207,123,105,125,120,121, 45, 88, 12,195,160,122,245,234,168, 81,163, 6, 90,180,104,129, 70,141, 26,161, 93, +187,118,184,116,233, 18, 46, 93,186,132,113,227,198,149, 40,174, 92, 41,163,182,255, 23,133,223, 90,221,124,226,178, 41, 94,238, +149, 1, 87,234, 82,116,116, 52, 0,252, 39,172, 89,108, 69, 30,158,189, 66, 62,233,210, 49,118, 78,179,217, 92, 56,244,230, 24, + 87,201,238,244,238,226, 12,189,159, 9, 33,145,159,124,242,201,123, 74,165,178, 93,126,126,254,243, 54, 11,204, 45,147,201,116, +196, 96, 48, 44,166,148,230, 60, 73, 90, 29,195, 50, 56, 75, 66,105,215,102,103,103,119,238,220,185,243,207, 44,203, 86, 47,190, + 16,175,179, 6, 44, 8,194,131,212,212,212, 82,167,170,103,102,102,118,238,212,169,147, 83, 78,103, 29,131, 43,156,206,202, 71, + 16,132, 18,197,149, 43, 29, 80, 89,129, 68, 89,150,133,155,155, 27,190,255,254,123,248,250,250, 62, 83, 13,236,226,181,180,121, +165, 29,111,235,171, 56, 6,192,175,207,194,173, 15,143,102,152,195,219,250,202,227,119,127, 48, 48,172,180,107, 50, 50, 50, 58, + 13, 27, 54,108, 63,203,178,213,139, 63,127,103,101,193,113,220,253,148,148,148,114,135, 61,160,148,226,230,205,155,194,136, 17, + 35, 50,210,211,211,251, 85, 36,255,147,167, 45, 91, 52,251,243,177, 62, 93,162,154, 53, 1, 3,152, 75,118,234,165, 4,160,172, + 84,146, 48,113,202,146,183,254,206, 50,163,148,158, 39,132,204,108,210,164,201, 56,148, 24, 23, 28,185, 46,240, 88, 8, 33,139, +186,118,237,250,193, 59,239,188,163,233,212,169,147, 37, 36, 36,228,156,163,117,222,245,122,148,250,246,139,117,253, 66,187,116, +124,185, 51, 8,161,102,179,169,140, 15, 35, 80, 80, 74,101, 50,233,205,179, 23,147, 26,148,101,157,183,173,152, 81,233, 67,243, + 99,198,140,193,152, 49, 99, 10,235,211,242,229,173,176,227,202, 73,244,109,144, 8,211,218,150, 32,158, 97, 46,127,232, 1,192, +199,159,140,168, 76, 75,102,145,201, 87,149,229,131, 37,145, 72,144,145,145,129, 91,183,110, 33, 53, 53, 21,249,249,249,184,126, +253, 58, 44, 22, 11,178,179,179,241,194, 11, 47, 84, 56,157,149, 85, 70,127, 39,231,127,105,152,176, 92, 2,139,227,184,196,178, + 86, 61,183, 90,173,229,154,101, 36,149, 74,141,207, 61,247, 28,113, 54,219,192,254,191,155,155,155,193,197,142, 49, 7,192, 52, + 0,211,108,235, 77, 33, 43, 43,235,137, 85, 32,207,243, 73,225,225,225,146,146,132,139,237,217,164,150,145, 54, 61,128,230,149, +252, 34,168,116, 78, 39,229,163,175, 83,167, 78,161, 47, 87,241,152, 38,182, 69, 80, 75,245,186, 45, 43,144,168, 94,175, 79,238, +220,185, 51,239,120,220, 49, 16,233, 51, 13, 66,227,187, 13,252, 95,248,209, 12,115, 56, 0,216, 69, 22, 40,141, 47,165,220, 13, + 0,218,252,213, 73,139,139,139, 51,191,252,242,203,223,104,181,218,209,148,210, 10,123,233, 79,249,116,249,148,127, 91,177, 80, + 74,207, 3,120,179, 18,120,174, 16, 66, 70,205,155, 55,175,223,188,121,243,106, 2,240, 5,160,116, 85,164, 21, 17, 89,215,211, + 43, 61, 54, 24,199,113,137, 53,106,212, 40,151,165,166,172, 62,222,106,181,150,250,158,184, 10, 47, 76, 57, 3, 20, 44,227,150, +233, 18,167,209,104,204,106,222,188,185,180,156,121, 75,115, 53,239, 65, 65, 65, 8, 14, 14, 46,252,107, 71,241,253,101,165,147, +227,184,196,208,208, 80,248,250,250,150, 24,161,189,184,207,149, 43,156,149, 93, 70,165,113, 6, 7,111,170,116,206,202,210, 11, +207,180,192,178,175, 49, 88,153, 72, 77, 77,253, 75,214, 70,161,149, 97, 94,251,211, 82,212, 4,255, 81,100,102,102,250, 60, 41, + 71, 89,129, 68, 83, 83, 83,219,253, 87,159,239,209,116,243,208,199,246,217,196,214,223, 13,189, 94, 31, 70, 41,173,144,103,126, +223,190,125,121,136,112, 20,196, 27,255,137,105,203,200,200,168,244, 62,253,175,120, 79,100,101,101,213,255,175,230,253,175, 72, +231,191,133,243,223, 14, 70,124, 4, 34, 68,136, 40, 65, 24,136, 34, 73,132, 8, 17, 34, 42, 8, 2,160, 99, 9,157,171,203, 51, +119, 8, 33, 29, 43,208,121,199,138,156, 34,167,200, 41,114,138,156, 34,167,200,249,223,226, 44,139,187,178,103, 14,255,157, 95, +169,127,217, 6,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,127,109, 19,135, 8, 69,136, 16, 33, 66,132, 8, + 17, 34, 42, 25,162,192, 18, 33, 66,132, 8, 17, 34, 68,136, 16, 5,150, 8, 17, 34, 68,136, 16, 33, 66,132, 40,176, 68,136, 16, + 33, 66,132, 8, 17, 34, 68,129, 37, 66,132, 8, 17, 34, 68,136, 16, 33,162,226, 32,149, 24,143, 83,132, 8, 17, 34, 68,136, 16, + 33, 66, 4,108,145,220, 9, 33,133, 42,139, 82, 74,196,199, 34, 66,132, 8, 17, 34, 68,136,120,154,120,214,180, 8, 43, 10, 43, + 17, 34, 68,136, 16, 33, 66,196, 63, 1,207,146, 22, 97,156, 41, 71, 17, 34, 68,136, 16, 33, 66,132,136,167,141,103, 73,139, 48, +207,162,106, 20, 33, 66,132, 8, 17, 34, 68,252,251,240,204, 90,176, 68, 43,150, 8, 17, 34, 68,136, 16, 33,226,239,194,179,164, + 69,196, 89,132, 34, 68,136, 16, 33, 66,132, 8, 17,149, 12, 49, 14,150, 8, 17, 34, 68,136, 16, 33, 66,196,191, 73, 96, 17, 66, + 58,138,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,138, 2, 75,132, 8, 17, 34, 68,136, 16, 33, 66,132, 40,176, 68,136, + 16, 33, 66,132, 8, 17, 34, 68,129, 37, 66,132, 8, 17, 34, 68,136, 16, 33, 10, 44, 17, 34, 68,136, 16, 33, 66,132, 8, 17,162, +192, 18, 33, 66,132, 8, 17, 34, 68,136,248,155, 64, 0, 56,157, 9, 64, 41,141,117,153,164, 2,179, 9,202,226, 23, 57, 69, 78, +145, 83,228, 20, 57, 69, 78,145,243,217,227, 44,139,187, 60,250,227, 31, 13, 74,233, 95,182, 1,232, 40,114,138,156, 34,167,200, + 41,114,138,156, 34,167,200,249, 95,219,196, 33, 66, 17,101,125, 97,176,132, 16,182,162,199,159, 22,167, 8, 17, 34, 68,136, 16, +241, 79, 2, 91,194, 11,174, 22,128, 41, 0,188, 28,118,159,165,148,198, 20, 59,239, 91, 0,106,135, 93,122, 0,211, 41,165,119, + 92,184,183,204,198,175,176,109, 2, 0, 35, 0, 19, 0, 45, 0,171, 88, 60,127,187,184,106, 14,160,135,237,255,125,148,210,211, +229, 57,254,180, 56,159, 22,130,131,131, 85,222,222,222,157,206,159, 63, 47,191,126,253, 58, 78,156, 56, 65,215,173, 91,103,201, +206,206, 62,148,148,148,100, 16,107,204, 51, 81,231, 59, 3,152,108,251, 57,135, 82,122,240, 9,249,136, 90,173, 30,231,230,230, +214, 77,161, 80, 4,115, 28, 71,242,243,243,147,244,122,253,207, 28,199, 45,164,148, 10, 21,224,108,226,235,235, 59, 42, 50, 50, +242,185,184,184,184,132,135, 15, 31,110, 6,112, 16, 64,231,176,176,176, 33, 17, 17, 17, 85,175, 94,189,122, 59, 35, 35, 99, 53, +165,244,247,191, 43,157, 34, 68,136, 2,203, 57,166, 81, 74, 7, 23,107,128,143,157,212,190,125,251, 94,135, 14, 29, 82, 11,130, + 0,251,166, 82,169, 56, 0, 67,203,184,175,207,169, 83,167,194, 71,143, 30,221, 39, 41, 41,233, 37,173, 86,219, 20, 0,212,106, +245,111,254,254,254,191, 47, 93,186,244,187, 78,157, 58, 37,218,132, 86,185, 44, 35, 82,169,116,152,183,183,119, 55,142,227, 26, + 81, 74, 33,149, 74,207,103,103,103, 31,180, 90,173,235, 41,165,214, 10,116,102,114,150,101,199, 40, 20,138,206, 28,199,213, 7, + 0,150,101, 47,155, 76,166,131, 28,199,173,160,148,154, 43,192,169,148,203,229, 99, 60, 61, 61,163,204,102,115,125, 0,144,203, +229,151,243,242,242,126, 54,155,205, 43, 40,165,198,127,192,139,134, 5,208,131, 82, 42, 5, 0,137, 68,210,187,121,243,230,225, +132, 16,129, 16, 66, 41,165,132, 97,152,134, 60,207, 51,182,243,123, 16, 66,126,167,148,114,229,225,124,249,229,151,171,178, 44, + 75, 41,165,132, 82,202, 48, 12,211,160, 60,156,149, 5, 63, 63,191,217,130, 32, 4,151,118,142,151,151,215, 75,231,207,159,175, +189,109,219, 54,126,237,218,181, 57,195,135, 15,119, 31, 61,122, 52,187,124,249,242, 21, 0,198, 23, 63,223,215,215,119, 17,195, + 48,190,174,220, 95, 16,132,140,140,140,140, 9, 98,151,244,183, 99,242,202, 88,109,107, 74,129, 49, 81, 30,140, 77,184, 84, 24, + 33, 33, 33, 95,191,249,230,155, 3,235,215,175,207, 82, 74, 97,181, 90, 97, 50,153,106,159, 62,125,186,237,206,157, 59, 95, 2, +208,175,156,237,178,199,228,201,147,191,156, 62,125,186,159, 84, 42, 37, 86,171,181,217,182,109,219,186,140, 26, 53,234,226,234, +213,171, 95,236,223,191,191,135,125,255,167,159,126,218,149, 16,242, 30,165,244,187,167,157, 78, 17, 34, 68,148, 44,176,220,108, +141, 57, 21,192, 89,187, 5,171,248, 73,135, 15, 31,222,203,178,172,221,130,213, 84,175,215, 7, 20,179,122, 57, 67,181, 33, 67, +134, 52,223,177, 99,199,236,254,253,251,167,168,213,234,231, 94,125,245, 85, 45, 33, 68,178,109,219,182,134, 53,106,212, 80,245, +236,217,115, 72,251,246,237,223,223,191,127,255, 9, 0,233, 46,118, 60,245,170, 84,169,178,107,222,188,121,225,157, 59,119,150, +249,250,250,130, 82,138,164,164,164,144, 31,127,252,177,203,231,159,127,254, 62, 33,228, 21, 74,233,181,242,124, 41,170, 84,170, + 29,159,127,254,121, 80,151, 46, 93,216,192,192, 64, 24,141, 70, 92,191,126,189,227,193,131, 7, 91,175, 89,179,102, 60, 33,164, +175,171, 95,137, 54,206,166, 94, 94, 94, 59,191,250,240,195,128,102,195,134,177, 85,170, 84, 1,165, 20,233,233,233, 29, 79,110, +218,212, 54,122,222,188,241,132,144,215, 40,165,103,255, 73, 21, 69, 46,151, 51,155, 55,111,126, 81, 46,151, 3, 0,204,102, 51, + 34, 35, 35,201,147,112, 74,165, 82,102,225,194,133,141, 88,150,133,197, 98, 17,180, 90, 45,125,245,213, 87,255,150, 97,107, 66, + 72,104, 82, 82,146,151, 76, 38,115,122,156,231,121,180,110,221,186,186, 76, 38,195,194,133, 11,173, 25, 25, 25, 13,191,248,226, +139,243, 91,182,108,241, 93,177, 98, 69, 95,103, 2,139, 97, 24,223,196,196, 68,167,156, 60,207,195, 98,177,128,227, 56,152,205, +102,212,173, 91, 87,236,141,254, 25, 8, 7,128,159, 46, 25, 1,160,202,147,146,185,185,185,213, 25, 52,104, 16,155,158,158, 14, +169, 84, 10,139,197,130,148,148, 20, 68, 70, 70, 74,190,249,230,155,231,203,203, 87,187,118,237, 81, 49, 49, 49,254, 63,253,244, +147,229,155,111,190, 49,117,236,216, 81, 54,124,248,112,207,214,173, 91,183, 10, 13, 13,101, 54,108,216, 96,138,141,141,181,188, +254,250,235,138,217,179,103,251,239,223,191,127, 32,128,239,158,118, 58, 69,136, 16, 81,178,192,178,227, 44,165,180, 55, 0,200, +100,178,134, 85,171, 86,253,154,227,184,226,101,185,148, 0, 0, 32, 0, 73, 68, 65, 84, 64,155, 21, 39, 69, 42,149, 46,180, 88, + 44, 23,108, 47,168, 61,130, 32,244, 42,203,114, 53,100,200,144,230,251,247,239, 95,112,250,244,233,220,204,204,204,192,189,123, +247, 26,223,127,255,253, 7, 0, 16, 23, 23, 23,209,179,103,207,144,177, 99,199, 38,118,234,212,105,105,187,118,237,222, 57,114, +228,200,207, 40, 24,122, 44, 85, 92, 69, 70, 70,158, 58,126,252,184,135, 70,163, 41,170,230,170, 85,195, 59,239,188, 35,235,213, +171, 87,141, 14, 29, 58,252, 74, 8,105, 69, 41,189,226,138, 16,170, 85,171, 86,236,225,195,135,221,189,189,189,145,147,147,131, +148,148, 20,228,231,231,195,211,211, 19,253,251,247,151,181,105,217,162,234,216,113,227, 99, 9, 33, 29, 93, 17, 89,132,144,166, + 45,234,213,139,221, 18, 19,227,110,125,248, 16, 42,149, 10, 58,157, 14, 0,224,225,225,129,151,170, 87,103,255,216,180, 41,100, +240,164, 73,118,206,167, 46,178, 8, 33, 10, 0,160,148,154, 8, 33,251, 36, 18, 73,111,185, 92,206,244,238,221, 27,177,177,177, +196,104, 52,178, 0,160, 84, 42,185,222,189,123, 67,165, 82,193,108, 54, 11, 0,246,149,100,105,114,198, 41,149, 74,153,118,237, +218,229,159, 61,123, 54,203,206,169, 86,171,173,237,218,181,243,145,203,229, 42,142,227,104,105,156,127,145,136,196,221,187,119, +139,236,211,106,181, 72, 79, 79, 71,102,102, 38, 76, 38, 19,114,114,114, 32, 8, 2, 81,169, 84,233,130, 32,128, 97, 10,140,109, + 37,113,202,100, 50,220,186,117,171,200, 62,142,227,160,215,235, 97, 50,153, 96,177, 88,160,213,106, 85, 30, 30, 30,181,234,213, +171,151, 8, 96, 79, 86, 86,214,194,148,148,148,120,177,123,250, 91,240,112,223, 5, 99, 24, 0, 51,128,251,149,192, 39, 0,192, +137, 19, 39,144,154,154,138,140,140, 12,164,167,167, 35, 52, 52, 20, 21, 25,118,187,121,243,230,210,134, 13, 27,146,139, 23, 47, +254, 0,224,203,173, 91,183,246,201,202,202, 90, 53,113,226,196, 42,243,231,207,207,154, 52,105, 82, 52,128,221, 91,183,110, 29, + 86,191,126,253,158,151, 47, 95, 94,242,119,164, 83,132,136,191, 0, 77, 0,248,217,254,207,176,245,187, 62, 14,191, 47,217,218, +173,253, 60, 51, 0,185,147,191,118,216,127,167, 3,248,221,225, 58,251,239, 39,134,125, 40,134,218, 55,103, 39, 5, 4, 4,140, +107,223,190,253,130,115,231,206,213, 77, 78, 78,246, 78, 78, 78,246, 62,119,238, 92,221,246,237,219, 47, 8, 8, 8, 24,103, 63, +207, 54,179, 0, 14,191, 29,167, 90,202, 78,157, 58, 21,190,107,215,174, 57,177,177,177,185, 13, 27, 54, 52, 31, 62,124,152,235, +212,169, 83, 26, 0, 14, 0,215,169, 83,167,180, 35, 71,142,240,205,154, 53, 83,237,223,191, 63,225,215, 95,127, 93,180, 99,199, +142, 0, 0,146, 18, 56, 65, 8,145,106, 52,154,239,143, 29, 59,246,152,184,114, 68,213,170, 85,177,111,223, 62, 79,141, 70,179, +135, 16, 34, 43, 37,157, 32,132, 40,149, 74,229,206, 35, 71,142,184,123,120,120, 32, 45, 45, 13, 82,169, 20,254,254,254,200,205, +205, 69, 74,114, 50,226,111,223, 6, 99, 54, 99,241,172, 25, 30, 42,149,106, 7, 33, 68, 94, 22,167,151,151,215,206, 45,179,103, +187,103,198,198,226,226,204,153,176, 88, 44,133, 67,171, 22,139, 5,191,142, 30,141,244, 95,126,193,134,105,211,220,189,188,188, +118, 18, 66,148,165,113, 86, 6, 28, 57, 9, 33,163, 1,100, 1,200, 34,132,140,166,148,158,142,140,140, 60,119,253,250,117,180, +106,213, 10,219,183,111,111, 48,113,226,196,209, 19, 39, 78, 28,189,125,251,246, 6,173, 90,181,194,245,235,215, 17, 25, 25,121, +206,209, 87,202, 21,206, 99,199,142,161,125,251,246,217,219,183,111,143,152, 54,109,218,236,105,211,166,205,222,186,117,107,141, +246,237,219,103, 47, 89,178,196, 84, 26,231, 95,145,119, 71,203,146,227, 38, 8,127,190, 91,130,131,131,211,118,237,218,133,254, +253,251, 51,114,185, 60,121,192,128, 1,138,147, 39, 79, 82, 0,251,202,147, 78,163,209, 8,131,193, 0,189, 94,143,184,184, 56, +213,188,121,243, 90,126,246,217,103, 53, 99, 99, 99, 67,166, 76,153, 18,237,231,231,119, 62, 48, 48, 48,252,105,231, 93,228, 4, + 0,164, 0,176,216, 62,234,226,159,132,179, 67,135, 14, 47,212,172, 89, 51, 96,219, 85,111,100,203,106, 67,144,105, 32,200, 52, +224,125,154,224,174,188, 43,194,194,194, 2, 60, 60, 60,154,151,135,147, 82,250,243,133, 11, 23,186, 82, 74, 87, 83, 74,121, 74, +233,142, 73,147, 38,141, 32,132,236,156, 52,105,210,219,148,210, 29,182,253,235, 46, 93,186,212,147, 82,122,228,239, 72,167, 88, +151, 68,206, 10,126,224,151,166, 69,252, 8, 33,251, 8, 33,251, 62,250,232,163,118, 0,124,138,253,254, 63,199,243, 0,200,157, +253,181,111, 14,251,253, 0,116,119,184,206,175,178,242,195, 56, 60, 44, 66, 41,181,127,137,159, 37,132,236, 5,112, 86, 38,147, + 53,124,241,197, 23,123, 31, 56,112,192,195,207,239,207,251,250,249,249, 97,199,142, 29, 30,245,234,213,235, 45,147,201, 26, 2, + 56,235,233,233,185, 23, 78,134, 18,109,208,140, 30, 61,186,207, 27,111,188,145,215,176, 97, 67, 0,200,185,118,237,154,186, 89, +179,102,122,142,227, 8,199,113,164, 89,179,102,250,107,215,174,169,173, 86,171,182, 73,147, 38,110, 29, 58,116,120, 48, 97,194, +132, 33, 0,148,165,228, 97,208,220,185,115, 67,189,189,189, 75,171, 8,208,106,181, 8, 8, 8,192,232,209,163, 3,165, 82,233, +255, 74, 53,235,177,236,152,185,115,231,250,107, 52, 26,100,103,103, 35, 52, 52, 20,102,179, 25,183,110,221,130, 81,175,131, 85, +155, 7,107, 94, 14,210,239,221,129, 70,202, 98, 72,175, 30, 1, 44,203,142, 41,195, 58, 50,102,253,164, 73, 1,230, 7, 15, 16, +183,125, 59,120,238,113,195, 12,103,177,224,242,151, 95,194,152,152,136, 57, 35, 70, 4,200,229,242, 49, 79,217,114, 53,159, 82, +170,162,148,170, 8, 33, 75,255,239,255,254,239, 27,149, 74, 53, 58, 38, 38,166,243,161, 67,135,186, 28, 63,126,188, 45,199,113, + 82,142,227,164, 39, 78,156,104,101, 52, 26, 89,133, 66, 1,150,101,169,171,156,205,155, 55,255, 90,165, 82, 69,175, 90,181,170, +243,145, 35, 71,134,252,241,199, 31, 99,120,158,151,243, 60, 47,255,227,143, 63,222, 54, 24, 12, 82, 74, 41, 95, 18,231,211,134, + 84, 42,133, 76, 38,131, 74,165, 66,203,150, 45,239,173, 91,183,206, 26, 26, 26, 42,221,185,115,167,119,112,112,176,219,242,229, +203,115,180, 90,237, 92, 87,249, 44, 22, 11, 76, 38, 19, 12, 6, 3,140, 70, 35, 14, 31, 62, 92,125,236,216,177,172,209,104,228, +123,246,236,153,101,181, 90, 77,147, 38, 77,242,172, 82,165,202,251,226, 7,235,223, 2, 14,128,206, 38,176, 76,142,117,153, 16, + 82,223,110,141,117, 5, 57, 57, 57,107,214,175, 95, 31,202, 40, 52, 56,105,238,134,239,132,207,113,200,107, 57,210,194, 63,128, +127,104, 77, 12, 28, 56,208,159, 82,186,188, 18, 94,116,123, 40,165,125, 41,165,187, 42,114,253, 95,157, 78, 66, 72,184,187,187, +251,118, 79, 79,207,147,238,238,238,219, 9, 33,225, 79,154,231, 78,181, 72,199,222,117, 37,137,157,106, 18,218,187,174, 36,177, + 83,173,242,199,106, 18,241,207, 68, 49, 45,226,136,116, 74,105, 15, 74,105,143, 57,115,230,204,118, 56,223,254, 91,229, 34,127, + 15, 74,105,143, 98,117,116,223, 95,145, 23,214, 81, 57,218, 51,229, 56, 91,176,106,213,170, 95,127,253,245,215, 30,197, 47, 76, + 78, 78, 70, 94, 94, 30,166, 78,157,234,241,198, 27,111,140, 79, 72, 72,120,179,140,123,201, 83, 82, 82, 26, 13, 30, 60, 88,105, +177, 88,178, 5, 65, 96,242,242,242, 88, 47, 47, 47,222,126,130,151,151, 23,159,155,155, 43,213,235,245, 18,158,231, 77,111,188, +241,134,124,196,136, 17, 47, 57, 90,176, 30,147,180,126,126, 81,221,186,117,147,151,116,220,106,181, 66,175,215, 67,175,215,195, + 98,177,160,101,203,150,138,117,235,214,117, 2,176,170,164,107, 20, 10, 69, 84, 84, 84,148, 52, 43, 43, 11, 94, 94, 94,136,143, +143,199,253,251,247, 97,210,233, 96,209,229,193,162,211,130,211,230,129,230,229, 34,243,206, 77, 52,171, 83, 91,246,173, 66,209, + 25,192,162,146, 56, 61, 61, 61,163,154, 13, 29,202,186,185,185,161,237,224,130,249, 3,251,235,212, 1,229,121, 8, 60, 15,158, +227,208,249,214, 45, 88,173, 86, 48, 12,131, 38, 89, 89,172,231,166, 77, 81, 0, 22,252, 29,149, 92,161, 80,176,155, 55,111, 30, + 36,151,203, 65, 41, 37,102,179, 25,135, 14, 29,122, 98,206, 77,155, 54, 13,177,115, 90, 44, 22,250,194, 11, 47, 60,214,144, 76, + 38, 19,253,167, 52,118,185, 92, 14,165, 82, 9,139,197,130,106,213,170, 25, 6, 15, 30,124,106,214,172, 89, 97, 12,195,184,201, +100,178, 3,153,153,153,179,147,146,146,226, 92,229,179, 90,173, 48,155,205, 48,155,205, 48, 24, 12,184,119,239, 94, 96,245,234, +213,201,232,209,163,249,252,252,252,136,101,203,150,221, 61,116,232,144,122,238,220,185,175, 2,120, 71,236,110,159, 30,108, 86, +104,175, 48, 31, 86, 47,149, 64, 7,192,195, 38, 6, 94, 37,132, 52,171, 91,183,174,247,245,235,215,179, 9, 33,103, 0,124, 71, + 41, 77, 46,141, 79, 16, 4, 34, 8, 2,222,110,154,131,209,205, 37,176, 90,115,145,155,155,139,248,248,120, 92,187,118, 13,191, +253,118,173, 66,233, 84, 42,149,255,115,119,119,239,164, 84, 42,171,113, 28,199,232,116,186,248,252,252,252, 88, 65, 16,214,208, +226,195, 8, 46,224,175, 74,167, 29,110,110,110,243,166, 76,153,210,194,203,203, 11, 23, 46, 92,136,216,186,117,235, 60, 60,161, +211,188, 82,202,108, 88,180,100,121, 72,136,191, 6,151,142,255, 16, 50,123,245,182, 13, 0, 66,197, 90,252, 76,180, 67, 90,130, +192,250, 29, 64,119,219,236,242, 30, 79,192,255, 68,215, 87, 72, 96,149,144, 33,112, 28, 23,232,104,185,162,148, 34, 57, 57, 25, +143, 30, 61, 66,122,122, 58,188,189,189, 97,177, 88, 2, 93,121,191,106,181,218,166, 62, 62, 62,249, 82,169,212,100, 48, 24,160, + 86,171, 5,169, 84, 74,109,247, 33,182, 89,136,188,201,100, 34, 44,203, 90, 61, 60, 60,220, 77, 38, 83,109,148,226, 43, 70, 41, +109,234,227,227,227,244,152,201,100,130, 78,167,131, 94,175,135, 78,167,131,201,100, 66, 64, 64, 0, 56,142,107, 84,234, 39, 44, +199,213,247,243,243, 67, 82, 82, 18, 84, 42, 21, 18, 19, 19, 97,214,105, 97,209,106,193,233,243,192,231,230, 66,200,203,131,160, +207,131,213,156,143,144,231,234,192, 62,195,176, 36,152,205,230,250, 62, 62, 62,208,235,255,116, 39,163, 54, 97,197,113, 28, 56, +155,211,179,125,216,208,215,215, 23,246, 25,134, 79,233,171,193, 68, 8,153,200, 48,204, 82,133, 66,193, 70, 71, 71, 35, 57, 57, +185, 72,157,136,142,142, 46,244,185,106,221,186,245, 9,165, 82,201,165,167,167,195,100, 50, 73, 93,225,172, 86,173, 90,252,212, +169, 83,207,154,205,230,208,224,224, 96,141,201,100, 50, 60,255,252,243,193, 42,149, 42,192,108, 54,243, 47,189,244,210, 26,149, + 74,101,213,233,116,148,227, 56,242, 15,105,236, 32,132, 20,148, 17,199,193,215,215, 87,159,145,145,241, 91,118,118,246,160,138, +240, 89,173, 86,251, 12, 45, 24, 12, 6, 80, 74,113,225,194, 5, 40,149, 74, 41,207,243, 87, 57,142, 83, 75,165, 82, 48, 54,231, + 46, 17, 79,173,156,219,214,214,200, 23,197, 52,243,215,188,216,211, 77,175,150, 75,244, 66,252,139,213,190,154,127,109,235, 27, + 67,254,231, 49,125,250,244,112, 95, 95, 95,229,221,187,119,141, 51,102,204,168,190,121,243,102, 82,214,199, 79, 66, 66,194,206, + 41, 83,166, 84,233,214,173, 91,132, 66,161, 32,185,185,185, 72, 79, 79, 71,106,106, 42,238,223,191, 79, 47, 93,186,116,207,100, + 50,109, 47, 79, 58,131,131,131,215,141, 29, 59,246,141,198,141, 27, 75,237, 22, 81,189, 94,223,240,216,177, 99,189,246,239,223, +223, 10, 64,185,235,101, 66, 66,194,246,143, 63,254,216,173,107,215,174,181, 21, 10, 5, 83, 25,233,116, 4,195, 48, 1,238,238, +238,136,141,141,133, 70,163, 1,195, 48, 1, 79, 90, 94, 70,139, 16, 18, 28,232, 3,227,175,139, 80,219, 47, 28, 70,139, 16, 34, +214,226,103,199,130, 85,194,161, 38,118, 11, 84, 25, 34,201, 48,121,242,228, 41,132,144,125,147, 39, 79,158,226,204,130,101,251, +151,119, 60,207,225,124, 83,165, 11, 44, 23,191,116,240,232,209, 35, 36, 37, 37,225,209,163, 71,200,204,204, 4,195, 48,165, 61, +144, 34,249, 34,132, 8, 63,255,252,179,247,169, 83,167,244, 77,154, 52,201,177,251,183,112, 28, 71,172, 86, 43,177,249,189,144, +248,248,120,217,201,147, 39, 53, 55,110,220, 8, 64,129, 35,154, 80, 70,129, 60,182,207, 46,172, 28, 55,163,209, 8,165, 82,233, + 82, 94,237, 47,192, 11,231,206, 21,136, 43,157,214, 54, 52,152, 11, 62, 47, 23, 84,175,133,156,183, 66, 14, 10, 98,204,119,249, +249, 57,194, 46,174, 44, 54,129,101, 54,155, 97,181, 90, 33, 8, 2, 56,142,251, 59, 42,246,202,134, 13, 27, 54,218,189,123,247, +240, 71,143, 30, 61,118,252,149, 87, 94,193, 59,239,188,131,177, 99,199,222,232,222,189,251,165, 31,126,248, 1, 99,198,140,129, + 32, 8, 47, 18, 66,114, 41,165,251, 75,227,156, 60,121,242, 31, 9, 9, 9, 71,111,223,190, 29,237,239,239,175,168, 95,191,254, +157,250,245,235, 75,118,239,222, 29,240,214, 91,111,157,235,210,165,203,131, 95,126,249,165, 74,108,108,172, 82, 16,132,198,132, +144, 71,127,119, 28, 44,147,201, 84,104,113, 50, 26,141,176, 88, 44, 64, 41, 78,237,101,213, 77,123,217,114, 28,103,231, 38,187, +119,239,194,137, 19, 39,152,107,215,174,134, 70, 71,143,182, 59,210,139, 61,237,211, 17, 86, 93,229, 12, 89, 59,241, 69, 31,229, +251, 13,124,244,114,150,232,110,173,157,162,187, 31,230,169, 15,168,170, 54,135, 86,215, 4,207,158, 61, 43,232,198,141,155,166, +169, 83,167, 94, 31, 48, 96,128,255,251,239,191, 95,119,231,206,157,173, 8, 33,235, 41,165, 57, 37,240,202,134, 15, 31,254,155, +191,191,127,141,213,171, 87,167, 37, 36, 36,120, 91,173, 86,181,213,106,181,232,245,250,187,249,249,249, 39, 45, 22, 75, 44,165, +244, 92,121,210,235,225,225,209, 96,232,208,161,210,156,156, 28,216,102,223, 34, 45, 45, 13, 45, 90,180,144,236,221,187,183, 94, + 69,158, 65, 86, 86,214, 34, 66,200,209, 45, 91,182,116,242,244,244,108,172, 80, 40, 2, 1,240, 90,173, 54, 85,175,215, 95,172, + 72, 58,139,244,115, 60,159,122,238,220,185, 26,158,158,158,120,248,240, 33,120,158, 79,125,210,114, 83,202,152,132,203,199,247, + 86,173,227, 91, 29, 39, 79,157,129, 82,198, 36,136,181,249,153,135,221, 71, 10,142,194,201,137, 48, 58, 21, 19, 19,163,154, 51, +103, 14, 98, 98, 98,174, 58,179, 96,217,133, 86, 76, 76,204, 85,251,121, 14,231, 31,175, 84,129, 85,154, 64, 98, 89, 54, 37, 61, + 61,221, 91,163,209, 20, 10,171,164,164, 36, 36, 37, 37, 65, 46,151, 35, 62, 62, 30,114,185, 60,217,149,143, 14,149, 74,245, 71, +195,134, 13,159,143,139,139,147,205,152, 49,163,234,185,115,231, 60, 91,180,104,241,130, 74,165,226, 41,165, 48, 26,141,204,245, +235,215,221, 23, 44, 88, 16,210,180,105, 83,115,211,166, 77,207,111,219,182,205,128, 82,130,142, 18, 66,206, 38, 39, 39, 71, 84, +171, 86,205, 46,214,138,136, 42, 71,161, 5, 20, 12,109,178, 44,123,190,212,135,194,178,151,111,221,186,213, 81,173, 84,192,172, +205,131, 69,151, 7, 78,171, 5,175,205, 5,159,155, 11,232,243, 32,231, 56, 72,121, 43, 84, 74, 37, 30, 37, 38,130,101,217,203, +165,113,202,229,242,203,169,169,169, 29, 53, 26, 77,225,203,211,202,113, 5, 27,207,195,204,113,133, 22, 44,169, 84,138,132,132, + 4,200,229,242,203, 79,187, 6, 51, 12,195,219, 67, 49,148,144, 15, 4, 4, 4, 8,205,154, 53,195,152, 49, 99,192,243,188,173, + 24, 72, 91, 66,200, 73, 74,169,174, 36, 78, 65, 16,152,235,215,175,247,185,123,247,174, 68, 42,149, 50, 47,191,252,114,100,203, +150, 45,205,114,185, 28, 50,153,140,213,233,116, 30,177,177,177, 74,171,213, 74,108,156, 79, 45, 14,150,189,238, 60,246, 41,100, +115, 70, 55, 24, 12,208,233,116,200,206,206,102, 85, 42,213,243, 47,188,240,194, 25,179,217,188,157,227,184, 13,113,113,113,121, + 37,113,218, 4, 89,161,216, 18, 4, 1,148, 82,240, 60, 15,171,213, 10,153, 76, 38, 28, 59,118, 28, 11, 22,207,195,215, 27, 54, +211, 94,189,122,145,189,123,247, 66, 16,132, 68,177, 63,125, 42, 88,152,243,221, 44, 37, 56, 94,111, 58,182, 69,247,205,237, 60, +253,244,111,150,252, 97,150, 75,242, 94,106, 19, 80, 63,162,250,243, 18,141,198,155, 89,181,102,105,230,183,155,119,220,125,248, +240, 97,222,138, 21, 43,154, 63,255,252,243, 94, 23, 47, 94, 12, 1,224, 84, 96,185,187,187, 87, 27, 54,108,216,176,236,236,108, +217,230,205,155, 55, 62,122,244,232, 24,165,244, 94,177,190,171, 17, 33,100, 62, 0, 41,128, 0, 20,248,127,253, 76, 41,221, 84, +218,119, 26, 33, 4, 71,142, 28,121,108,182,159,240,100,170, 60,187,126,253,250, 13,110,223,190,189, 39, 37, 37,229,155,226, 7, +213,106,117,175,200,200,200,129,103,207,158,253,132, 82,122,183, 60,196,249,249,249,147,118,236,216, 49, 95, 34,145, 4,243, 60, +159,100, 48, 24, 38, 61,177, 5,203, 42,140,136, 89,181,245, 75,131,153, 15, 83,201, 37, 15,141, 86,225, 45,177, 42, 63,211,214, + 43,192,230,131,101,255, 31, 0, 41,246,251,162,237,127,179,195,185,233, 14, 86, 43,115, 49,171,151,179, 99,233,168,196, 32,231, + 37, 69,114,255, 8, 64, 83, 0,103,165, 82,233,210, 55,222,120, 99,193,183,223,126,235,145,151,151,135,212,212, 84,164,165,165, +129,101, 89,120,122,122, 98,229,202,149,134,212,212,212,165,142,215, 20,143,248,110,111, 19,190,190,190,127,108,222,188, 57,112, +237,218,181,236,155,111,190, 25,223,189,123,247,218, 43, 87,174,140,147,201,100,148,231,121, 98, 50,153,200,219,111,191, 93, 99, +241,226,197, 15, 36, 18,137,186,127,255,254,196,205,205,237,172,173,227,113,254,196,211,211,127,254,254,251,239,251, 76,152, 48, + 65, 97, 54,155,157, 90,174,236,251, 52, 26, 13,126,253,245, 87,115,118,118,246,161, 50,172, 22, 63, 31,248,233,199,214,175, 15, + 24, 32,179,106,243, 96,213,230,129,203,203, 3,175,205, 1,209,229, 65,202,115, 80,201, 4, 4,134, 42,193, 25,220,241,227,239, + 23,173, 38,147,169,212,128,132,121,121,121, 63,159,252,250,235,182, 77,195,195,217, 95,199,141,131,197,106, 69,215, 91,183, 10, + 69,149,197, 98,193,158,250,245,193, 19,130, 23, 71,142,196, 29,142,227,242,242,242,126,254, 39, 54,130, 75,151, 46,165, 13, 30, + 60,248,156, 32, 8,141,202, 99,205,113,120,249,104,117, 58, 29, 50, 50, 50,248,204,204, 76, 35, 0,164,165,165,101,239,221,187, +247,186, 32, 8, 77, 43,194, 89, 25,176, 90,173,143, 89,159,120,158, 47,176, 50, 22, 88, 10,228, 63,254,248, 99,235,235,215,175, +203,174, 92,185,130, 19, 39, 78,188,248,237,183,223,126, 20, 30, 30, 94, 63, 62, 62, 62,165, 44,209,230, 44, 88, 47,108,254,133, +219,182,108,199,168, 81,163, 72, 74, 74, 10,190,251,238, 59,148, 21,244, 84, 68,165, 65, 15,142, 87,153,143,109,209,117,255,233, +161,246,116,178, 97, 6,128,131,212,192,209,170, 85,171, 94,106,220,216,219, 23, 0, 76, 70, 62,176, 86,173, 90,109, 88,150,149, +219,234,112, 99, 31, 31,159,149, 0, 90, 58, 35,125,229,149, 87,254,207,223,223,191,225,254,253,251, 47, 62,122,244,232,120,113, +113, 5, 0,207, 63,255,252,231, 87,174, 92,233, 42,149, 74,137, 67, 29,161, 0,156, 10,172,182,109,219, 62, 31, 30, 30,238,243, +211,109, 47,228,201,106,130, 74,114, 1, 86, 9, 94,211, 0,241,178,186, 8, 13, 61,227,163,209,104, 94,204,201,201,185, 88, 78, + 43, 94, 88,255,254,253,127, 92,183,110, 93,157, 46, 93,186,200, 1, 60, 38,176,234,212,169,243,234, 47,191,252,210, 55, 58, 58, +186, 1, 33,164,167,139,171,117,216,219, 81, 60,128,190,149, 89,104,135,238,208, 88,216, 98,150,137,248,207,224,247,191,232,220, +191, 12, 37, 13, 17, 54, 21, 4,161, 23,195, 48,176, 88, 44, 49, 1, 1, 1,123,250,247,239,255,202, 71, 31,125,228,238,227,227, + 83,104,185, 90,185,114,165,225,254,253,251, 59, 45, 22,203, 5, 66,200,180,164,164,164, 94,193,193, 37,190, 23,180,203,150, 45, +219,218,179,103,207, 55, 71,142, 28,105,168, 95,191,190,103,237,218,181,243, 79,157, 58,229, 30, 21, 21,149, 39,145, 72,232,175, +191,254,234, 81,163, 70, 13, 35, 33, 68,241,203, 47,191,100,158, 57,115,166, 70, 76, 76,204,122, 20, 76,155, 46, 9, 91,102,206, +156, 57,181, 87,175, 94, 53,124,124,124,144,151,151, 87, 68,100,217,255, 87, 42,149, 72, 73, 73,193,174, 93,187,146,173, 86,235, +250, 50, 44, 25, 43,150,175, 92, 53,190, 93,179,151, 67, 60,213, 42,164, 36,198,131,207,205, 6,244, 58,200, 57, 43, 84,114,138, +144,154,106,176, 18, 55,220, 77,209,225,235, 83,191,167,112, 28,183,162, 52, 78,179,217,188,226,157,197,139,199,159, 94,181, 42, + 36,188, 95, 63, 92,219,180,169,112, 72,208, 46,176,120, 66, 16,214,161, 3, 24, 47, 47,204, 94,189, 58,213,108, 54,175,120,218, + 21, 66, 16, 4,137,217,108, 46, 45, 31, 16, 4, 33,241,218,181,107, 91, 9, 33, 90, 66, 72, 91,219,161,163,206,172, 87,142,156, + 12,195, 8,117,235,214,221, 29, 16, 16,208, 7,128,190,110,221,186,187, 21, 10, 69,123,179,217,252,178, 32, 8,137, 23, 46, 92, +216, 69, 8, 73, 33,132,216,191, 50,158,106, 28, 44,171,213,138,105,211,166, 97,206,156, 57,152, 60,121,114, 97,126,237,195,132, + 57, 57, 57,213, 79,158, 60, 41, 59,118,236, 24, 93,189,122,117,230,155,111,190,169, 25, 57,114,164,102,237,218,181,239, 1,152, + 84, 18,231,164, 73,147,176,122,245,106,140, 26, 53,234,113,117, 37,145, 8,137,137, 9, 48, 26,141,116,217,178,101, 73, 82,169, +212,123,253,250,245,170,183,222,122,139,136,253,233, 83,193,199,170,193,159,188,107,235, 99,150, 82, 74,143,218, 15,120,122,122, +170,118,239,254,158, 5,128,157, 59,118, 73, 41,165, 94,246,192,176,223,124,243,141,178, 69,139, 22,254, 37,145,238,216,177, 35, +103,198,140, 25, 62, 35, 70,140,232,114,244,232, 81, 53, 33,228, 39, 91,167,159, 1,128, 7,224, 11,224, 87, 63, 63,191,160,173, + 91,183,214,236,212,169,147, 91, 89, 9,213,106,181,235,183,110,221, 90,109,241, 73, 47,252,164,239,131, 4,161, 31,168,134,162, +138,191, 22,117,221, 31, 98,208,160, 65,193, 75,151, 46,253, 18, 64,227,114,136,171,122,175,189,246,218,247,235,214,173,171, 62, +114,228,200,196, 95,127,253, 53,129, 16,242,185,147, 83, 51,135, 14, 29, 26,191,113,227,198,154,130, 32, 28, 36,132,116,161,148, +222, 22,171,143, 8, 17,165,180, 47,103,254, 75,132,144, 61, 28,199,245, 98, 89,118,175, 99,160,209,128,128,128,241,102,179, 57, +136, 16, 66,101, 50, 89, 74,106,106,234, 82,199, 64,163,137,137,137,189, 66, 67, 67, 11,175,177, 5,203,116,140,149,225,217,181, +107,215,142,167, 79,159,254, 98,223,190,125,105, 90,173,214,125,199,142, 29,170, 57,115,230,196, 11,130, 64, 63,252,240,195,240, +206,157, 59,231,243, 60,159, 60,114,228,200, 26,213,171, 87, 31,121,227,198,141, 88, 71,129,229,132, 19,132,144,122, 53,107,214, +252,117,231,206,157,158, 26,141, 6,105,105,105,200,202,202,130, 94,175, 7,207,243,144, 74,165, 72, 79, 79,199,140, 25, 51,242, +146,146,146, 30, 11, 52, 90, 2,103,211,106, 33, 33, 63, 47,253,124,154,135,134,101,144,121,243, 58,184,236, 76, 72, 57, 43,170, +214,243,130, 76,174,194,157, 91, 90,188,183,101,151,246, 97, 86,206, 99,129, 70, 75,226,124,169, 86,173,216,213, 19, 39,186, 27, + 19, 18, 16, 52,108, 24,242,243,243, 97,177, 88,192, 48, 12,238, 45, 93, 10,153,159, 31,166,110,219,166,191,250,240, 97,135,226, +129, 70,157,113, 62,113, 5,112,224, 36,132,140, 38,132, 20, 58,185,191,242,202, 43, 69,206,253,254,251,239,177,106,213, 42,152, + 76, 38,142, 82, 58,158, 82,186,146, 16,226,110,251, 74,213,149,197, 89,173, 90,181,135,145,145,145,191,243, 60,207,218,196, 5, +189,118,237, 90,227,251,247,239, 87, 45,198,105, 31,186,230,158, 86,222,125,124,124,150,238,223,191,191,154,191,191, 63,113,140, +176,110, 19,136, 0,128, 49, 99,198,116, 56,115,230,140,162, 97,195,134,166,140,140,140, 38,126,126,126,135, 55,111,222,236,219, +191,127,255,164,171, 87,175,134, 20,231,244,245,245, 93,176,115,231,206,154, 53,107,214,100,236, 86,176,226,195,144,195,135, 15, +239,184,121,243,102,121,159, 62,125, 76,122,189, 62,192,195,195,227,238,206,157, 59,125,123,247,238,157,114,245,234,213,160,167, +145,119,145,211, 57, 34, 35, 35,239, 92,189,122,181,166,253,183,193, 96, 64,122,122, 58, 50, 50, 50,160,209,104, 16, 21, 21,117, +239,254,253,251, 53,157,113,218,172, 66, 75,214,172, 89,211,197,205,205, 77,118,252,248,113,125,108,108,172, 49, 62, 62,158,179, + 90,173, 52, 40, 40,136,109,217,178,165,178, 91,183,110,110, 10,133,130,249,228,147, 79, 50,102,205,154,229, 75, 8, 89, 66, 41, +125,207, 25,103,163, 70,141,126, 59,112,224, 64, 83, 66, 8, 36, 18, 9,204,102, 11,114,114,114,240,232, 81, 34,174, 93,187,134, +211,167, 79,227,208,161, 67, 23,117, 58, 93, 67, 87,243, 78, 8, 57,108, 50,153,218,202,229,114,151, 5, 61,207,243, 96, 89,246, + 8,128,142,148, 82, 65,172, 75, 34,167,136,242, 89,176,236,206,185, 77, 9, 33,123,108,187,206, 22, 15,197, 64, 8,249,136, 16, + 50,205,193,234, 85,214,253,242,246,239,223,127,162, 99,199,142, 99, 58,116,232,176,184, 83,167, 78,201,201,201,201, 17,139, 22, + 45, 10,229, 56,206,114,237,218, 53,230,238,221,187,241,127,252,241, 71,205,231,158,123,110,228,141, 27, 55,142,149, 97,189,178, +167,245, 26, 33,164, 69,187,118,237,118,141, 28, 57, 50,172, 89,179,102,114,141, 70, 3,150,101, 17, 23, 23,135,139, 23, 47,154, +183,109,219,150,152,147,147,227,242, 82, 57,148,210,179,132,144,168,254, 99,199,239, 28,249, 74, 79,223,151,107, 63, 47, 15, 10, + 10, 2, 12, 6,220,124,152,130, 51, 55, 47, 90,214,157, 56,147,110, 50,153, 94,115,117,169, 28, 27,103,199,246, 19, 39,238,156, +254,250,235, 1, 72, 78,102,131,130,130, 32,151,203,113,255,254,125,220, 21, 4,110,238,154, 53,169,121,121,121, 79,125,169, 28, +123,204, 42, 65, 16, 88, 0, 80,169, 84,120,231,157,119,224,184, 52,206,170, 85,171, 96, 48, 24, 0,128, 37,132,204, 39,132,108, + 40,201,106, 85, 2,103,216, 79, 63,253, 20,230,200, 89,167, 78, 29,103,156,166,167,221, 16,178,178,178,166,118,237,218, 53,134, +101,217, 18,163,213,122,123,123, 67,171,213,130,227, 56,254,209,163, 71, 55,189,189,189, 33,149, 74, 65, 41,117,218,142, 50, 51, + 51,167,190,246,218,107, 51, 25,134, 41,209,210,225,233,233, 25,127,248,240,225, 90,111,189,245, 22,243,213, 87, 95,197,141, 24, + 49, 66,113,248,240, 97,190,162, 49,141, 68,252,117,112,252, 24,181,125,188,209, 82,206,125, 72, 8,153,116,238,220, 57,229,168, + 81,163, 26,191,254,250,235,158,237,218,181,115,119, 60,199, 96, 48, 8, 63,252,240,131,126,245,234,213,153,199,143, 31,255,125, +248,240,225,125, 80,224, 63,226, 20, 15, 31, 62,252,113,246,236,217, 94,221,186,117,123, 14, 64,161,255, 85,122,122, 58,226,227, +227,113,229,202,149,120,139,197,178,183,156,217, 26, 51,120,240,224,159, 54,110,220, 24, 62,114,228,200,196,239,190,251,110, 47, +128, 92, 39,231,185,191,250,234,171,189, 54,110,220, 24,254,246,219,111, 63, 4, 48, 78,140,240, 46, 66, 68,197, 4, 86,174, 32, + 8, 48, 26,141, 1,130, 32,244, 18, 4, 1,238,238,238,206,206,107,154,148,148,212,203,113,177,103,148,177,172, 13,128,244,216, +216,216,159,183,108,217,210,225,195, 15, 63,124, 61, 39, 39,167,233,165, 75,151,154, 1,128, 84, 42, 61,237,230,230,246, 91, 76, + 76,204,176, 73,147, 38,165,187, 34,174,138,137,172,186, 11, 22, 44,168,180,197,158,109,130,168,214,138,237,187,198,172, 87, 40, +162,138, 45,246,252,179,109,177,103, 99, 69, 56, 39,126,249,229, 24,207,237,219,255,177,139, 61,155, 76, 38,174, 79,159, 62,235, + 25,134, 17,108, 95,173,172,201,100, 26,134,114,206, 60, 45,206,249,202, 43,175,124, 37,145, 72, 56,155,101,136, 49,153, 76,255, +123, 18,206, 74,124,121,234, 0,140, 45,237,156, 23, 94,120, 97,243,222,189,123, 7,247,234,213,139,183, 88, 44,105, 61,123,246, +100,127,251,237, 55,202, 48, 76,108, 9,156, 38, 0, 31,148,198, 25, 24, 24, 24,190,124,249,242,243,227,198,141,243,220,178,101, + 75,149,147, 39, 79,242,203,150, 45,203,203,202,202, 90, 40,118, 79,255, 44, 72,165, 82,168,213,106,152,205,102,164,167,167,163, +172,144, 83,148,210,187,132,144,238, 19, 39, 78,108, 53,113,226,196,238,161,161,161,245,194,194,194,194, 24,134, 97,146,147,147, +211, 19, 18, 18, 30, 88, 44,150, 95, 0,252, 8, 64, 86,163, 70,141, 11, 0, 54,151,196,151,153,153, 57,147, 16,114,100,211,166, + 77,221,221,220,220,234, 42,149,202, 42, 86,171,149,209,106,181, 89, 6,131,225,186,209,104,220, 71, 41, 61, 85,206,122,127,139, + 16,210,142,101,217, 31,215,173, 91, 87, 39, 57, 57,185,218,177, 99,199,122, 22, 63,175,113,227,198, 27, 55,110,220, 24, 30, 29, + 29,125,119,203,150, 45,229,242,193, 18, 33, 66, 20, 88, 69, 49, 91, 46,151,179,176, 45,250,108,183, 96, 57, 57,239,108, 49,159, +171, 92, 0,179, 93,184,175,126,208,160, 65,247, 7, 13, 26, 52,223,150, 6, 9, 10, 66, 49,112, 40,240,224,183,160,140,208, 12, + 37,116, 22, 28,128, 47,109, 91,101,189,120,141, 40,136,119,179,224,159,204, 89, 9,105, 50, 17, 66, 38,218,102, 53, 1,192,196, + 11, 23, 46,172, 44,102,145,186,228,120,188, 44, 75,147, 51,206,139, 23, 47, 22,231,188, 82, 30,206,191, 19, 57, 57, 57,227,151, + 47, 95,126,118,242,228,201,138,161, 67,135,226,202,149, 43,152, 51,103,142, 41, 39, 39,103, 75, 69, 57, 83, 82, 82,226, 3, 3, + 3, 27, 45, 89,178,228,253,197,139, 23,247, 38,132,136,107, 17,254, 67, 96, 48, 24,238, 53,104,208, 0,164, 96,118, 2,229, 56, +174,112,246,167, 45, 34,255, 61, 23,251,164, 35,182,173, 44,204,119,129,239, 52,128,211,149,220,246, 31, 18, 66,186, 63,120,240, + 96,246,173, 91,183, 14, 56, 59,231,234,213,171,223,119,234,212, 73,125,250,244,233, 41,229,157, 69, 40, 66,132, 40,176,138, 54, +184, 59, 0, 94,119,161, 97,198, 60,193,189,121, 23,172, 93, 34,158,174,200, 90, 73, 8,217,224, 96,125, 41,215,241,167,197,249, +119, 33, 49, 49, 49, 27, 64,225,146, 33, 17, 17, 17,143,249,169, 85, 84,100,161, 32,106,187, 24,185,253, 31,132,184,184,184,174, +255,161,182,255, 16,192,224,146,142,155,205,230,189, 0,246,138,181, 66,132,136, 39, 20, 88, 34,254,211, 34,203,244, 36,199,159, + 22,167, 8, 17, 34, 68,136, 16,241, 79, 6, 1,208,177,132,151,158,203,179, 3, 8, 41,255, 66,155,101,241,139,156, 34,167,200, + 41,114,138,156, 34,167,200,249,236,113, 58,112, 47, 46,225,208,205, 98,124,107,255,173, 22,139,191,108, 67,193, 52, 94,145, 83, +228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,138,220,103,228,211,184,207, 95,177,137, 11,202,138, 16, 33, 66,132, 8, 17, 34, + 68, 84, 50,156,250, 96,237,216,177, 67, 98,255,127,224,192,129,195,121,158, 47,156,190, 46,145, 72,150,127,247,221,119, 27, 74, + 35,237,219,183, 47, 95, 26,167, 51,148,117, 31,103,156,145,207,123, 69,251,120,169,199,231,228,230, 47,137, 75,226, 79, 24,141, +198,186,246, 99, 74,165,242,250,134, 13, 27,110, 87,118, 58,135, 15, 31,254, 92,241,251, 84, 11,149,182,173,226,161,124, 39, 43, + 71,183,232,202,109,237, 90,177, 90,253,181,232,215,175,159,164, 60,231,223,191,175, 97,206, 35,104,161,167,155,172,167, 78,111, + 93,200,159,155,246,197,179,240, 28,130,130,130,106,123,122,122, 14, 1, 80, 47, 63, 63,223, 95,173, 86,167, 1,184,150,151,151, +183, 57, 57, 57,249,166,171, 60,109,171,147,120, 0, 97,182,159, 15,143,222,167,225,174, 28, 43, 11,157,107, 18, 35, 5, 20,132, +192,114,240, 14, 45, 92,224,178, 75, 45, 98, 20,232,227,251, 59,215, 34,102, 74, 33, 35,128,233,224, 93,170,124, 86,234, 43, 33, +196, 19, 64, 20,128, 72, 0,151, 0, 28,162,148,230,139, 45, 89,132,136,255,160,192, 26, 62,124,120,107, 57, 75,191,128, 64, 53, +160,212,199,100, 50, 73,229,114, 57,204,102, 51,212, 42,213,138, 81,255, 27,250, 57, 8,114, 44, 2,243,206,134, 13, 27, 42,188, +242,116,121,238,211,183,111,223,199,166, 57,123,123,170,102, 30,253,225, 67,239,214,221, 99,230,152,239,103, 77,210,106,181,140, + 66,161,128,201,100,130,151,151, 87,139,177, 35, 71, 52,166, 12, 49,203,148,110,167, 22, 47, 94,156, 82,209,116,190,247,222,123, +129,156, 69,255,127,212, 74,229,102,179, 89, 81,252, 62, 26,181,219,220,163, 63,124,168,110,211, 99,206,231, 0, 68,129,245, 15, + 66,129,184, 10, 92,251,238,160,151,135,206, 27,215, 17,154,182,115, 39, 1,248, 87, 11, 44, 66,136, 36, 34, 34, 98, 76,120,120, +248,128, 53,107,214,200, 34, 34, 34,160, 84, 42, 97, 48, 24,130,238,221,187, 23, 20, 29, 29,221,166, 70,141, 26, 91,227,226,226, + 86, 80, 74,121, 23, 40,195,142,110,252, 4, 0,208, 98,200,140, 48, 66,200, 7, 0,242, 1,160, 77,181, 63,143,181, 29, 58, 35, +140, 16, 50, 17, 69,103,255, 38, 83, 74,157,206, 46,163,128,124,223,166, 5,232,245,198, 7, 44, 33, 36,218,190,191,219,115,192, +129,111,150,162,203,192,241, 69,246,119,174, 1,246,135, 77, 11,208,227,141, 15, 74, 92,109,188,203,115,140, 85, 16,104,137,147, +115, 24,134,112, 7,239, 80,103, 11,255,166, 82, 74, 15, 58,121,150,157, 81,176,208,178,211,243,123,212, 97, 83, 45, 86,222,105, +160, 88,153, 84,146,182,239, 6,247,216,181, 67, 27, 17,171,149, 47,232, 91,101, 44,120, 47, 47,175,163, 31,127,252, 49,219,163, + 71, 15,172, 91,183,174,229,218,181,107, 71, 18, 66,126, 1,176, 87, 12,121, 32, 66,196,127, 76, 96,201, 25,186,250,224,150, 85, + 53, 83,210,179, 48, 32,250, 35,108,217,178, 5,217,217,217,240,246,246,134, 92, 46,147,174,156, 61, 41, 80,227,161, 14,236, 63, +118,218,106, 0,181, 43,122,243,114,222,167,214, 99,157,163, 45, 16, 41, 43, 97,165,114,185,148,217,186,117, 43,114,114,114,160, +209,104, 32,151, 75,153,165, 51, 38,168, 52,158,110,170,215,199, 79,111, 9, 96,123, 69,211,201, 25,116, 45,127,248,102,185,103, +106,122, 38, 6,191, 51, 21,197,239, 35,149,201,120,251, 11, 69,172, 82,127, 31, 50, 50, 50, 8, 0,248,250,250,210,162,226,170, +217,208,197, 19, 58,225,189, 69,135,144,111, 52,127,243,111,207,103, 68, 68,196,152,126,253,250, 13,152, 57,115,166,140, 97, 10, + 70,249,245,122, 61, 12, 6, 3, 66, 66, 66,112,244,232, 81,217,212,169, 83, 7,124,255,253,247, 0,176,172,188,252, 87,175, 94, +173, 22, 22, 22,102, 4,128,158,245, 61,138, 31, 11,183, 31, 3, 0, 15, 15,143, 50,249,124, 52,110,166,171, 87,207,212,179, 95, + 55,166, 67, 8, 95,194,126, 35, 0,117,105, 92,130, 64,217, 67, 95, 68,151,120,252,173,153,223,114,151,182,159,168, 29, 17, 17, + 97,112,220, 95, 66,160,100, 0, 8,208,233,116, 97,197,119,218,207,183, 88,121,255,146,238,215,233,157, 85, 78,133,151,149, 7, +251,237,183,223, 2, 0, 22,126, 48, 88,242,229,111, 25, 44,203, 22,116,181,243,231,207,199,244,233,211,229, 7, 15, 30,236,182, +105,211,166,110,182,165,113,196,240, 7, 34, 68,252, 87, 4, 22, 33,240,240,244,112, 67,175, 55,223,193,254, 3, 7,209,186,117, +235,194, 99,213,171, 87,199,192, 87,123,226,251, 53, 49, 96, 64, 60,158,228,230, 79,122,159,236, 92,253,167, 93, 7, 44,155,241, + 48, 69,119,122,223,190,159,208,170, 85,171, 34,215,191,222,191, 15,118,174,156, 5, 66,169,236, 73,210, 41, 48, 84,230,233,233, +134,215, 70,140,135,179,251,140, 26,218,107, 95,151,190, 75, 59,166,102,234, 23,139, 85,234,233,226,198,141, 27, 18,147,201, 52, +208,211,211,179,153, 84, 42, 13, 80,104,194,132, 36,182,105,102, 58,137,136, 75,243,207,117,187, 18,176, 0, 0, 32, 0, 73, 68, + 65, 84,111, 61,161, 99, 64,151,133,239,182,195,123,139, 14, 97,201,150, 51, 27, 27, 33,101,218,191, 57,191, 65, 65, 65,181,195, +195,195,139,136, 43,173, 86, 11,157, 78,135,188,188, 60,104,181, 90, 48, 12,131, 73,147, 38,201,142, 29, 59, 54, 32, 40, 40, 40, +214,133,225,194,135, 45,134,204, 40, 16, 25, 18,169,110,218,180,105, 38,127,127,127,147, 90,173,166,172, 76,161,109, 59,116,134, + 7, 0, 48,172, 76,187,100,201, 18,115, 72, 72,136,145,101, 89,249,248,241,227, 93,242,225, 52,153, 76,212,145,211,108, 54, 21, +238,159, 59,119,174, 57, 32, 32,192,164, 86,171,169,197, 98,118,249, 57, 92,190,159, 5,133, 76, 2,133, 76, 2,165, 92, 10,143, +106, 77,160,200,190, 2,142,227, 48,111,222, 60, 75, 96, 96,160, 89,173, 86, 83,185, 92, 46, 27, 55,110, 92,153,233, 28, 62,124, + 56,213,104, 52, 22,181, 90, 45,155, 62,125,250, 99,235,242, 29,190,244, 8, 42,185, 20,106, 5,139, 90,213, 67,161,160, 6,151, +211, 42,145, 20, 29,209, 86, 40, 20,104,217,178, 37,234,213,171,135, 61,123,246,180,133, 24, 95, 74,132,136,103, 87, 96, 17, 66, +218, 0, 56, 10, 0,148, 82, 2, 0, 12, 40, 62, 27,209, 5, 35,223,232, 7,158, 23, 10,188,226, 1, 72, 8,193, 7, 3, 90, 67, +224, 57, 8, 40,115,169,136, 50,167,106,150,247, 62,142,156,148, 48, 18, 0,168, 29,230, 67, 71, 13, 27, 4,129, 47, 24, 13,225, + 1, 72, 1,188,223,175, 37,120,222, 10,161,140,160,240,174,165, 83,192, 39,195, 59,193,217,125,106,215, 8, 96, 76, 60, 7,226, +176, 24,227, 95,177, 8,166,200, 89, 20,167, 78,157, 10, 82,171,213,139, 6, 15, 30, 28, 60,110,220, 56, 57,207,106,216, 29,167, + 51,189, 62, 92,121, 58, 56,223,100,145, 12,106, 87, 13, 19, 94,175,143, 9, 75, 14,219,197,213,200,234,213,115,254,213,101,228, +233,233, 57,100,205,154, 53,143,137,171,212,212, 84, 70,167,211,193, 98,177, 8, 90,173, 22, 60,207, 99,242,228,201,210,169, 83, +167, 14, 33,132, 76,183,241,152,156,113, 30,189, 79,195, 9, 33, 19,175, 94,189, 26,254,241,199, 31, 91,218,183,111,255,176,122, +245,234,122,137, 68,130,160,160,160,165, 81, 81, 81, 85,102,206,156,105,233,214,173,219, 3,137, 68,130, 90,181,106,233,175, 92, +185, 18, 14, 64,229,106,222, 29, 57, 55, 28, 94, 78,109,253, 14,162,162,162,226,107,213,170,165,151, 72, 36,184,253,195, 92,234, +234,243,148,178, 12,158, 11,241, 42,252, 82,131,202, 29,200, 46,248, 25, 21, 21,149, 88,187,118,109, 29,195, 48,184,124,249,114, + 40, 0,101, 89,156, 42,149,202, 58,104,208,160,135, 55,111,222,124,236,124, 0, 96, 37, 12,154,213,182, 25,172, 66, 26, 1,137, + 39, 75, 76,167, 84, 2,110,234,152,193,172, 70, 9, 40, 60,124, 77,121,121,121,240,244,244, 44,176,136, 89, 44,184,112,225, 2, +154, 55,111,222,102,251,246,237,199,196,246, 46,114,138,156,142, 70,151,199,181,200,179, 96,193, 58, 90, 60, 51, 2,207,161,102, +136, 15, 86,126,240, 26, 56,142, 7,207, 11,182,141, 7,199, 9,176, 90,204, 40, 67, 95,185,102, 29,122,130,251,120,123,170,102, +238,223, 58,206,187, 67,239,249, 29,190,120,255,213,159, 5,171, 21,188, 0,112,188, 0,222,202, 67, 16, 4, 88,205,149, 19,195, + 82,176,242,168, 25,236,131, 47,222,127, 21,197,239,179,252,199, 67, 61, 15,239,157,164,110,221, 99,206,251, 0,230,137,186,253, +233, 88,174,212,106,245,162,205,155, 55,135, 55,105,210,132, 1,128, 19,183, 56,197,135, 43, 79, 7, 31,140,105, 65, 90,212,243, + 65, 90,142, 9,227, 87, 92,196,254,211,105, 7,138,139,171,127, 49,234, 69, 68, 68, 20, 17, 87, 11, 22, 44,240, 93,185,114,101, + 8, 0,188,246,218,107,143, 58,116,232,144,113,235,214, 45, 4, 5, 5,145,140,140,140,238, 0,198,219, 58,175,137,148,210,149, + 37,240,234,195,194,194,140,126,126,126, 38,187, 16, 98, 24, 6, 44,203, 34, 44, 44,204,232,239,239,111,170, 85,171,150, 94, 38, +147,129, 97, 24,216, 5,158,139,157, 38, 36, 18, 9,236,156,197,173, 59,118,206,242, 64,202, 58,156, 79, 31,183, 24, 49, 12,227, +244,126, 37, 65,169, 84, 82, 0, 37,158, 47, 97, 28,186, 71,182,116, 79,128,141,231,169,148, 16,114,148, 82,138,243,231,207, 35, + 46, 46, 14, 50,153, 12,129,129,129,152, 62,125, 58, 76,166,130, 62,169, 95,191,126,109, 0, 92, 22, 91,179, 8, 17,133, 56,250, + 44, 8,171,226, 2,171, 80, 61, 82, 74,143, 1, 0,207, 89,193,243,130, 83,209, 99,177,114,176, 90, 44,149,146,128,210,238,195, +243,124,169,247,177,251, 96, 9,148,178, 78,197,149, 80,176,110, 88,165,164, 83,176,194,202, 3,206,238, 67, 8,195,219, 58,122, +153,216, 62,158, 14, 76, 38,211,160,193,131, 7, 7,219,197, 21, 0,100,104,173,108,190,201, 42,105, 81,207, 7,141,219,245,195, +185, 35,219,177,237,248, 35,212,240, 83, 31,175,238,246, 76,136, 43,228,231,231,251, 43,149, 74,232,245,250, 66,203,213,202,149, + 43, 67,204,102, 51, 3, 0, 44, 43, 13, 77, 23, 66,148,188, 0,120,121, 38, 35, 59, 59,215,199,222, 97, 17, 66,230, 19, 66, 54, +148, 22, 57, 95, 38,147, 21, 10, 19, 71,225,163, 80, 40, 42, 36, 92,236,176,139, 50,153, 76,230,116,127,241, 97,180,178, 32,115, + 20, 88,160, 5, 86,172, 98, 34, 75, 34,145,192,238,251, 84, 22,228,114,121, 97,222,157,118,148, 18,135,251, 73,202,239,106,105, +177, 88,160,211,233,144,147,147, 3,165, 82,105,183, 0,128, 16, 50, 30,192,187, 98,139, 22, 33,194,185, 22,121,102, 4, 22, 10, + 76,115, 4, 0, 56,171,197,169,232,217,116,232, 28,238,102, 90, 17,226,125, 13,246,115, 93,197,128, 1, 3, 54, 6, 5, 5, 53, + 43,236, 36,213, 30, 62, 67, 62,152, 11,222, 98,134, 70, 65,241,110,223, 86, 69,196, 21,207, 11,176, 88, 74,182, 64,101,231,234, + 63,237,210,111,233, 12, 31, 55,143,211,197, 69,207,212, 29, 55,251,102,230,154, 67, 9,123, 3, 57, 36,132,239,247,246,103,195, + 29, 58,245, 75, 91, 87, 77,155,224,106,186, 41, 97,164, 61,199,173, 29,201,203, 60,234,122,210,236,227,211, 7,214,221,237, 40, +226,252,221,221,247,117,126,109,113,199,212, 44,209, 7,235,105, 65, 46,151,119, 28, 55,110, 92,145, 55,157,175,135,148, 83, 43, +164,252,175,215, 50,200,185, 35,219,153, 19, 87, 51, 4,165, 76, 66,253,104, 92,196,179,146,111,181, 90,157,150,159,159, 31,100, + 48, 24,144,151,151,135,188,188,188,162, 13, 90, 42, 37, 35, 71,141,245,149,202,228,176, 90,204,216,191,121, 86,153,156,109,171, +147,248, 54,213, 16,214,179,190, 7, 36, 82,185,246, 90, 68,196, 82,150,101,193, 48, 12,126, 88,241,225,248, 93,139,222,241, 0, +128, 75,251, 86,228, 13,156,180,124, 25,195, 48, 48,153, 76,138,242,164, 59, 33, 33, 33,212,100, 50, 25,109,194,204, 46,248,112, +255,254,253,170, 38,147,201,224,184,223, 21,168,212, 30,128,166, 58,160,246,127,204, 90,246,224,193,131, 96,171,213,154,207,178, + 44,204,102,179, 75,106,136, 97, 24,217,229,203,151, 67, 5, 65,112,122,126,189, 26,193, 64, 96,125, 64,238,229,114,158,109, 65, + 18,203, 60,135, 16, 66,159,165,175,118, 17, 34, 42,195,146, 85, 94,125,241, 79, 22, 88,109, 9, 33,244,207, 70, 15,112, 22, 75, +161,176, 42,176, 48, 21,252,127, 63, 87,192,205,219,119,176,100,201, 18, 28,251,227,125,175,153, 51,103, 42,166, 78,157,106, 26, + 48, 96,192, 34, 65, 16, 26, 48, 12,115,169,111,223,190,227,157,221, 76, 16,132,170,231,206,157, 43,124,217, 89,173, 86,120,120, +120,192,195,195, 3,145, 17,129,143,137, 43,206,102,193,162, 37, 11, 31, 9, 40, 0, 10,202,241, 86,240, 86, 20,138,158,204, 92, +115,232,247, 71, 46,214,116, 56,253,121,251, 63, 45,155,212, 45, 89, 4, 70, 79, 47,204,199,214, 85,211, 38,204, 92,183, 78,145, +205, 7,140, 27,216,127, 68,100,191,129, 67, 48,248,213, 46,109,140, 70,235, 30,150,129, 96, 21,120,240, 86, 1, 2,165, 12, 5, +138,248, 96,137,248,235,144,145,145, 65, 12, 6, 67, 53,141, 70, 83,228, 69, 21,228,166, 55, 77,234,255, 92, 82,212,135, 39,131, +141, 22, 30, 10, 41, 67,199,247, 14, 79,250,237,251,109, 62, 25,166, 12, 98,159, 93,248, 47,199,181,187,119,239, 6, 85,173, 90, + 21,121,121,121,224, 56, 78,120,237,181,215, 30,177,172, 52,148,149, 74, 73,143,129, 99,133,148,148, 36, 43,195, 72, 64, 41,143, +174,253, 70, 19,133, 82, 37,179,152,205, 28,128,137, 37, 88,175, 28, 67, 49,120, 68, 69, 69, 85,177,207,236,219,181,232, 29, 15, +135, 99,158,141, 27, 55,174,226, 56,139,208, 69, 49, 76, 6, 12, 24,160, 10, 11, 11, 35, 0,240,251,230,143,237,214, 50,210,179, +103, 79,101, 88, 88,129,127,253, 47, 43, 92, 95,235,218, 87, 77,129,220,251, 64,238,131,199, 44, 87, 61,123,246, 84, 68, 68, 68, +148,171, 45,218, 28,219, 75,140,189,229,198,114, 64,202,121,151,184,134, 54, 34,214,143, 91,131, 93,212,149,129,220,221,199,212, +236,195,131,191,137, 34, 75,132, 8,151, 80, 68,139, 60, 19, 2,203,102,138, 43,210,184, 57,171,229, 49,113,197,243, 2,148,188, + 30, 75,150, 44,193,187,239,190, 11, 0,178, 9, 19, 38,236,158, 57,115,102, 31, 65, 16, 26, 80, 74, 91, 17, 66, 74,251, 74, 60, + 26, 20, 20,148, 74, 41,149, 50, 12,211,106,197,138, 21, 85,186,118,237, 10, 15, 15, 15, 80,129, 62, 38,174,120, 94,128,213,100, + 46, 80,124, 78,224,237,169,154,121, 96,199,120,239,246,189,231,117,224,173,248,217, 46,174,120,235,159,110,241,153,169,137, 56, +116, 96, 15, 86,175, 90,147, 13, 66,111,128, 66, 96, 24,230, 82, 73,105, 20, 4,161,193,201,223,175,183,106,217,164, 46,102,174, + 91,167,184,122, 46,121,247,216,247, 62,142,236, 55,112, 8,182,127,183, 25, 18, 75,246,121,150, 9,248, 83, 92,241, 60,210,181, +121, 61, 15,255,240,161,232,131,245, 55,193,106,181, 34, 59, 59, 27, 86, 93, 54,247, 82,144, 62,247,179,126,254,166,212,108, 35, + 43, 21,242,185, 58,158,105,166, 35, 89, 15, 36,106,181,250,153,200,107, 94, 94,222,230,232,232,232, 54,199,143, 31,151, 49, 12, +131,188,188, 60,180,107,215, 46, 35, 93, 8, 81,142, 28, 53,214, 55, 41,233, 17,231,169, 98, 77, 50,153, 20,105,105,105, 66,155, +110,131, 12, 3,135,143, 15,126,119,202,236,181, 73,167, 86,173,116,229, 30,142, 51,251,138, 31,251,242,203, 47,205, 33, 33, 33, + 70,133, 66, 33, 31, 58,116,168, 75,227,132,102,179,153,206,157, 59,215, 84,124,182,160,217,108,166, 75,150, 44, 49,135,134,134, +154, 84, 42, 21,181, 90,203,118, 59, 96, 24,194,189, 53,243, 91,142,227,184, 34, 86, 43,187,184,178, 10, 68,247,197, 23, 95, 88, + 66, 67, 67,205,106,181,154, 42, 20, 10,153, 43,233, 28, 59,118, 44,245,246,246,182,184,185,185,201, 38, 77,154,244, 68,179, 8, +173, 60,216,153, 43, 10,195, 52, 40, 60, 60, 60,160,213,106, 11,211, 26, 20, 20, 36,138, 44, 17, 34,156,127,108, 28,123, 22, 44, + 87,197, 45, 88, 69, 69, 6, 21,116,169,105, 25,254,154,224,154,176, 90, 57,240,156, 21,156,149,131,149,179, 98,226,176, 87, 16, +179,170, 96, 36,204, 38,178,162, 38, 76,152,176, 27, 40,123,217,157,173, 91,183,206,152, 48, 97,130,103,106,106,234,193,141, 27, + 55, 86, 25, 60,120, 48, 38, 78,156,136,249,243,231,131,149, 43,225, 21, 24, 94,120, 31,206,202,129,183,114, 72,203,204, 6,165, + 84,231,140,207,238,131, 69, 41, 88,207,192,234,224,121,251,181, 86, 48,146,130,153,233,135, 14,236,193,224, 97,239, 64,170,240, +242, 94,190,100,158, 33,242,165,160, 62, 83, 71,140, 40,219,243,157,128,185,122, 46,121,247,216,119, 39, 69,217,197,213,174, 77, + 43,110,172, 24, 31,181, 69, 45,103, 11,239,195, 91,173, 96, 24,137,232,131,245, 20,225,235,235, 75,211,211,211, 31,228,228,228, + 60,239,230,230,134,204,204, 76,100,101,101, 33, 39, 39, 7,166,188,108,206,135,207,209, 19, 46, 11, 44,203, 34, 45,129, 3,207, +243, 41,207,136,245, 10,201,201,201, 55,107,212,168,177,117,202,148, 41, 3, 39, 79,158, 44, 21, 4, 1,183,110,221, 2, 5,168, + 84, 38, 7,195, 48,144, 74, 89,228,230,230, 9,106,119, 77,178,133, 74,212, 82,153, 28,140, 68, 86, 90,192,209,135,109,135, 22, +132,105, 96, 88,153,214, 62,179, 79, 38,147,225,204,246, 5,121,109,135,206,240, 4, 0,153, 66,149,221,169, 83,167,248,186,117, +235,234,255,248,227,143,112, 20,155, 69,232,164,125,114,175, 12,157, 36, 81,171,148,250,168,168,168,135,118,206, 7, 63, 47,207, + 27, 50,250, 99, 66, 36,114,125,143, 30, 61,226, 35, 35, 35,245, 18,137, 4,215,247,204,203,123,101,232, 36, 37, 41,152,160,235, + 20, 7,239,208,183, 46,109, 63, 81,123,214,172, 89,214,110,221,186, 37,216,253,193, 30, 60,120, 16,220,189,123,119,197,226,197, +139,173,221,187,119, 79,124,225,133, 23,116, 12,195,224,220,185,115,161,165, 89,166,236, 80,169, 84,214,255,253,239,127, 15,175, + 92,185, 82,161, 89,132,101,161,106,213,170, 16, 4, 1,237,218,181,131,209,104, 20, 45, 89, 34, 68,252, 7,224, 84, 96, 89, 4, + 97,236, 27, 31, 46, 88, 78, 64,220, 5,208, 34,179,116,104, 65, 79, 64, 62,248,224,125, 55, 0, 42,187,200,122,239,189,247,178, +203,186,153,131,184,122,105,240,224,193,248,232,163,143,176,112,225, 66,126,254,252,249,146,235,247, 18, 44,125, 39,204,207, 41, +118, 31, 80, 74,117, 60,143,177,206,248,178,115,245,159,182,234, 62,231,243, 71,169,249, 39,251,189, 31, 83,164,215,202, 33, 5, +193, 12, 87,175, 90,173,151, 42,188,220,250, 13, 28, 2, 0, 81,203,151,204,219, 61, 19,235,202, 22, 89,148,212, 25,251,222, 36, +111,187,184, 90,177,120,214, 21,111,146,250,197,136, 79,174, 61,230, 53,239,229,142,221,173,186,207,233,156,150,165, 95, 42, 86, +169,167, 3,179,217, 28,187,108,217,178,106, 83,167, 78,149,103,101,101, 33, 35, 35, 3,217,217,217,133,155, 78,167, 67, 96, 96, + 32, 14, 28, 56, 96,201,203,203, 59,243, 44,229, 61, 46, 46,110,197,222,189,123,113,236,216,177, 1,147, 39, 79,150, 6, 6, 6, + 18, 47,175, 20, 98,181,152, 1, 80,154,158,158, 46,168,221, 53,201,190, 1,161, 15,147, 82,210,234, 88, 45,102, 8,188,165, 68, + 47,114, 91,152,134, 15,174, 94,189, 90,109,193,130, 5,102,199,153,125, 3, 39, 45, 95,214,184,113,227, 42, 95,124,241,133,185, + 71,143, 30,241,118,167,116, 87,156,220, 15,221,195,248,171, 87, 47,215, 43,206,217,118,228,130,245,118, 78,199,217,133, 61,223, + 95,179,190, 86,173, 90, 85, 34, 35, 35,227, 75,227,141,136,136, 48, 4, 5, 5,153,107,215,174,173,147, 74,165, 5,150, 43,171, + 53, 63, 34, 34, 66, 8, 8, 8, 48,215,173, 91, 87, 87, 94,103,124,149, 74, 69,237, 86, 48,103, 40,207, 44, 66,169, 4,220,224, +193,131, 11, 35,185,127, 80,171, 86,242,144, 33, 67,130, 38, 76,152,128,245,235,215,227,215, 95,127,205, 42,126, 77,155, 54,109, +112,252,248,241,207, 1,124, 42,182,110, 17, 34,158, 97,129,245,213, 87,155,127,129,131,207,146, 51,204,156, 57, 83, 97,179, 92, + 69,189,251,238,187, 48, 24, 12,222,143,125,193, 18,210,209, 30, 43,195,153,184,154, 55,111,222, 22, 74,105, 40,128,150, 28, 47, +252,182,118,195,215,237,202, 52, 44, 57,112, 82,194, 72, 24,134,232,228, 82,122, 97,213,218,175,138, 68,232,182, 57,181, 63, 15, +130, 75,203,151,204, 51, 0,136, 42, 46,178,250,246,237,155, 95,156,211,142, 81,209,111, 23,138,171,229, 75,230,253, 28,249, 82, + 88,159,169, 35,102, 56, 21,101, 51, 62,125,219,141, 97,200,255, 57,250, 96, 57,227,124, 82,136,156,127,114, 42, 20,138, 45,223, +125,247, 93,183, 86,173, 90,133, 55,104,208,128,201,202,202,130, 78,167,131, 78,167,179, 91,185,112,253,250,117, 33, 62, 62,254, +145, 66,161,248,238, 89,202,187,109,249,155,101, 65, 65, 65,177,211,166, 77, 27,146,145,145,209, 61, 59, 59,199,231,199,141, 51, +209,165, 95, 52,105,211,109,144,222, 76, 89,101, 98,114,106,237,163, 63,125, 91,101,255,214, 21,176,152,205, 35, 9, 89,125,221, + 30,166,193, 73, 58,243,237,225, 24,106,215,174,173,119, 20, 40, 97, 97, 97,198,224,224, 96, 83,100,100,100,225,126,103,179,243, +156,229,189,188,156, 54,255, 46,125, 89,207,211, 46,214,138,135,127, 80,171,213,176,139,174,242,164,211,113,246,164,211,142,178, +140, 89,132,142,156, 27,207, 83,169,227,177,141,132, 72, 54,111,222,220,113,243,230,205, 47, 1,184, 0,224, 16, 0,171,237,186, + 66,103,120, 74,233,103, 0, 62, 19,219,187,200,249, 95,229,252, 79, 8,172,178, 96,119,104, 7,192,188,247,222,123,217, 6,131, +193,123,200,144, 33,165, 94,147,146,146,178,254,235,175,191, 46, 34,174, 94,125,245,213, 97, 59,118,236,136, 77, 75, 75,171, 80, +226,189, 61, 85, 51,143,253,240,161,119,155, 30,115,222, 5, 48,223,185, 37, 10, 66,228, 75, 65,125,150, 47,153,183,187,152,200, +218, 4,224, 85,103,245, 6, 0, 58,117,233,141,111,191,250,194,238,187,165,186,242,199,163,253, 3,206, 79,119, 58,251, 80,227, +174,152,110, 75,199, 4,136, 62, 88, 79, 5,117,234,212,225, 79,157, 58, 53, 33, 58, 58,122, 81,135, 14, 29, 66,122,247,238, 45, +171, 90,181, 42, 20, 10, 5,238,221,187,135, 19, 39, 78, 88,226,226,226, 30,229,231,231, 79,104,208,160, 1,255, 44, 62,131,228, +228,228,155,182, 32,162,227,237,195, 74, 10,165, 74, 54,104,248,187,161,133,179, 8,183,174,128,201,104, 0, 0,214,149, 48, 13, + 44,203,202, 46, 94,188, 24,110,183, 82, 89, 44, 22,133,125,255, 31,127,252, 17,110,143,141,101, 52, 26, 93,158, 69,248, 87,113, + 94,190,124, 57,212, 62,219,209, 62, 91,144,101, 89,217,185,115,231, 66,237,156, 38,147,201,165, 89,132,114,185, 92,118,241,226, +197, 80,158,231, 43,109, 22, 97, 49, 65,124,208,182,217, 95, 78,118,113, 69,108,195,130,226,240,160, 8, 17,162,192, 42,112, 4, +167,148,182, 42,135,210,101,171, 85,171,214,105,224,192,129, 69,196, 85,223,190,125,249, 93,187,118, 29, 13, 10, 10, 74,101, 24, +230,102,121,211, 81,232,131, 85, 16, 80,189, 8, 24,134,185,212,178, 73, 93, 48, 12,115,105,234,136, 17,166,153, 88, 87, 68,100, +237,217,253,255,236, 93,119, 88, 84,199,219, 61,115,183,211,171, 52, 17, 68,177,160, 96, 84, 84,108,216,162,198, 24, 91, 98, 69, + 99,239, 81, 19, 77,236,198, 66,162,168, 49,118,141, 70,141, 49, 88, 49, 42,214,216,107,192,134, 29,176,160,128,192,210,219,194, +178,125,239,124,127,184,240, 45, 72,217, 69, 76,251,237,121,158,251, 44,204,157,123,238,204, 45, 51,231,190, 51,239, 59,135, 62, +170,168, 61, 4, 0, 7,103,119, 12, 31, 51, 29,195,199, 76,183, 3,208, 1,168,216,251,176,178,114,152,240,254,208,190,125,251, +212,216,216,216,225,231,207,159, 15,186,118,237, 90,247,162,162,162,186,132, 16,152,153,153, 37, 40,149,202, 11, 66,161,112,255, +127, 85, 92, 85, 4,149, 74,165,153,183,108,205, 30, 14,135,167,101, 89, 21, 81,169, 84, 99,140,121,207,231,205,155,199,160,156, +185, 85,211,167, 79, 47, 55,253,239,226, 92,176, 96, 65,185, 94,127,211,167, 79,175,212, 27,176, 34,124,253,245,215, 53,230, 69, +104,160,232, 50, 9, 41, 19, 76, 48, 9,172,183,193, 48,204,195,114,188, 5, 9, 0, 90,158,135, 30,165, 84,195,225,112,150,217, +218,218, 78,146, 74,165,127,124,246,217,103, 51, 7, 13, 26,164, 5,222, 76,124,175,110,225,115,243,165, 75,186,244, 93, 53, 43, +175, 80,177,169,236,190,178,150,166, 98,145,181,101,195,234,173, 71, 15, 31, 24,148, 38, 78,222, 90, 81,221, 42, 18, 82, 21,121, + 31,230, 75,100,203,186,244, 93,245, 85,174, 68,102,154,131,245, 55, 88,178, 0,132, 2, 8, 45,187,216,243,255, 2, 40,165, 10, + 66,200,108, 66, 72,177, 5,119,246,171,203, 27,182,254,255,199,205,166,135,250,251, 42,177, 94,165, 26,178,112,115,121,199, 85, +182,239, 61,112,166, 87,178,112,115,101, 72, 55,146, 47, 29, 0,248, 60, 78, 70, 69,139, 58,243,121,156,140, 26,186,135, 68,231, +154,190,204,244, 70,155, 96,194,127, 92, 96, 21,139,159,138, 80, 81,156,171,202,160,213,106, 87, 1, 88, 85,147,133,127,252,188, +224,103, 0, 63, 27,154, 95, 55,231,106,148,110, 43,191,156,217, 79,140,174,219,160, 65,131,182, 1,216,102,122,156,254, 26,132, +133,133,105, 77, 87,161, 84, 7,189,149, 16,242, 75,177,224, 50,116, 95,153,124,199,223, 67,185,222, 7,231,217,191,146,239,100, +172,198,249, 47,186,135, 38,139,150, 9, 38,252, 47, 8, 44, 19, 76, 48,225, 95, 39,178, 20,213,217,103,130, 9, 38,152, 96,194, +251, 1, 1,208,189,130, 70,217, 96,239, 0, 66, 72,247,106,116, 8, 23, 76,156, 38, 78, 19,167,137,211,196,105,226, 52,113,254, +111,113, 86,197,173,127, 60, 33,100, 34,165,244,103,252, 27, 65,223,196,154,122, 47, 27,128,238, 38, 78, 19,167,137,211,196,105, +226, 52,113,154, 56, 77,156,213, 60,207,196,191,226, 60,239, 99, 51, 13, 17,154,240,222,225,238,238, 14,150,101,193, 48, 12,146, +147,147, 77, 23,196, 4, 19, 76, 48,193,132,255, 60, 76, 2,203, 64,144, 58, 3,190, 5,232,124,157,205,114, 53,125,125,108,233, +255, 68,189, 9,113, 4,208,199, 74,196,239,215,212,150,223,238,113,182, 60, 66,170,210,158, 0, 16, 78, 41,205, 53,132,131,101, + 89,156, 56,113, 2,125,251,246, 45,230, 4, 0,184,186,186,226,196,137, 19, 37,249,252,253,253, 75,130, 46,154, 96,130, 9,239, +249,221,182,107, 90, 7,132,140, 5,232,255,187, 81,178, 52,154,230,197,236, 46,149,207,182,201, 24, 48,164,169, 94,146, 12, 20, + 59,104,110,116, 82, 5,109, 70,241,132,125,219,184,184, 56, 79,111,111,239, 68, 0,121,101,178,189,181,143, 86,242,242, 19, 66, +136, 99,189,150, 35,205, 69,230, 83,149, 74,165,151,165,149, 85, 70, 78,118,230,182,156,215,143,182,232,101,179,190,117,235,150, +107, 64, 64,128, 24, 64, 65, 85,156, 38,152,240,143, 23, 88,164,225, 64, 47,104,152, 81,160, 24, 1,130, 7,244, 85,216,192,106, +241,120,127, 86, 27, 44,183, 13,128,150, 0,109,105, 97, 38,106, 33, 83,170, 50, 88, 74, 71,210,184,131,247,141,230,171, 55,248, + 20,128,222, 21,236, 93, 70, 95, 29, 50, 82, 32,209, 5,119,174, 29, 17,218,154, 19,120,251,127, 58, 7,122, 17,151,223, 65,188, +152, 1, 24, 77, 8,249,208,220,220,188, 97, 81, 81, 81, 2,165,244, 17,128,173,148, 82,113, 53, 57, 25, 0,227, 44, 45, 44,122, +121, 90, 9, 90,190,206,202, 79, 41, 80,107,175, 3,248,193, 80, 65,164,199, 37,240,180,179,184,186,126, 88, 23,159,118, 77, 27, +128,141,190, 6,185, 82,213,239, 74,114, 97,191, 37,145,226, 89,132,144,150,148, 82,165,161,124, 12,195, 76,112,115,115,243,170, + 93,187,118,252,230,126,205,119, 76, 59,254, 0,253,251,247, 7,128, 9, 44,203,122,213,174, 93, 59,158, 16,178,195,208, 54,145, + 16,226, 10,128, 75, 41, 77,210,253,111, 1,192, 23, 64, 61, 0,175, 0, 60,161,148, 74,223,241, 30,253, 43, 56,221,221,221,221, + 88,150, 29,239,236,236,252, 73,122,122,250, 41,134, 97,118, 38, 39, 39,139,255,230,246,101,123,241,252, 9, 67,127, 1, 76, 50, +230, 4,102,102,102,233,114,185,220, 9, 0, 68, 34, 81,134, 76, 38,123,111, 94,127,127,229,185,254, 26,133,133, 9,231,110, 60, +233,165,159,212,179, 99,211,114, 94, 92,210,244,220,141,232, 78,165,243,249,106,203,107, 3,117, 81, 83,177,108,217, 50, 18, 28, + 28, 60,166,126,253,250, 13, 24,134,121,182,120,241,226, 82, 33,108,202,238, 91,178,100,201,255, 71, 92, 45,135,211,189, 81,251, +240,161,195, 6,119,249, 98,226,104,203,218,181, 44,145,154, 37,117,248,105, 87,232,154,208,208,125,125,198, 15,237,209, 11, 0, +190,251,238,187, 1,117,234,212,169,203,225,112,226,191,253,246,219,223, 42,227, 52,193,132,127,172,192, 34, 77, 7, 91, 64, 78, + 7, 1,100,116,231,118,254, 29, 39,141,236, 75, 40, 71,132,160, 9,115, 53, 70,115,213, 29, 35, 4, 71,246,125, 51,223,166, 51, + 7,247,237,206,180,242,173, 11,215, 90, 54, 0,195,195,246,211, 9, 14,155, 86,127,187, 21, 64, 64, 53,138,217,251,101,228,126, +164,230,105, 65, 8, 64, 8,192, 16,160, 80,206,162,231,128, 81, 75,140, 23, 72,132,177, 53, 39,152,185, 95, 14,128,112,106, 64, + 92,181,172, 85,171,214,150, 25, 51,102,216, 53,107,214,204, 85, 36, 18,153,203,100,178, 6,113,113,113, 94,139, 22, 45,234, 65, + 8, 89, 73, 41, 61, 98, 36,167,135,183,187,219,161, 77, 51,199,181,249,160,158, 39,120,202, 66,176, 10,105,157,231,113, 47,218, + 77,222, 26, 54,129, 16, 50,204,200,165, 13, 22,110,159, 62,210,199,207, 10, 80, 61,249, 19, 60, 14, 7,230, 54,118,232,193,229, +128, 67,208,100,212,217,132, 5,132,144, 37, 85,181, 95, 98,177,184,216,146,229,117,226,196,137,166,125,251,246, 69, 27, 47,119, +220,234,155,137,214,225,201, 0, 80,146,110, 68, 93,131, 1, 44,208,181,191,251, 56, 28,206,249,238,221,187,123,141, 31, 63,158, +248,251,251, 35, 42, 42,170,222,254,253,251,187,115,185,220,120,173, 86,251, 8,192, 51, 74,169,218, 64,110, 30,128, 70, 28, 14, +167,217, 63,153,211,205,205,205, 76,169, 84,142,114,119,119,159,216,175, 95,191,102,125,251,246, 37,141, 26, 53,194,211,167, 79, +253,207,156, 57,179,164,121,243,230,143,146,147,147,127, 22, 8, 4,123,196, 98,177,204, 16,206,161,126,228,233,193,199,180,113, +117,247,151,169,243, 68, 0,110, 58,131,198, 50, 3,126,197, 0,150, 81, 74, 83, 13,125, 14,228,114,185, 83,241,243, 71, 8,113, +122,159,141,165, 49,231, 34,132,196, 16, 66,236,117,127,163,178, 95,134, 97,160,209,104,164, 26,141,166,126, 21,156,141, 0, 48, + 70, 20,153, 82, 74, 43, 11,224,108, 6, 0, 61, 59, 52,205, 1, 65,116,177, 5,235,173, 92, 44,141, 46, 17, 94, 20, 77,207,253, + 25,109, 95,202,234, 85, 6,203,150, 45, 35, 75,150, 44,193,210,165, 75,251, 2, 8,100, 89,246,186,143,143,207,198, 82,148, 44, + 91,178,111,201,146, 37, 27,150, 45, 91, 70, 80,106,213,219,255,135,125,221,230,159,127,250,105,255, 46,203, 23, 78,183, 76,201, + 86,225, 65,188, 12,246,150,124, 44,153, 61, 69,160, 80,168,219,109,253, 45,116,226,230,149,115,119,104,181,218,110, 0, 90,105, +181,218,187, 0,126,171,140,211, 4, 19,254, 81, 2,139, 16, 66, 80,127, 96, 39,104, 49,218,179,142,243,160, 25,227,135,152,249, +250,120, 67, 14, 75, 36,100,105,113,250,228, 25, 0, 56,104,156,149,105,104, 43, 46, 31,123, 86, 47,157,221, 56,176,141, 47, 30, +167,168,113, 55, 69,139,162,120, 53, 56,140, 26, 90,150, 2, 20,242,234, 86, 46, 57, 87,131, 27,207,148, 96, 8,192, 97, 0,134, + 33,224, 48,213, 36,211, 42,159,127,183, 59,202, 55, 43,157, 5,180,202,231,239, 40,174,186, 53,108,216,112,125,112,112,176, 75, +122,122,186,253,221,187,119, 33, 20, 10, 97,103,103,199,117,115,115,107,188,126,253,250,252,233,211,167,207, 38,132,220,167,148, + 38, 24,200,233,211,187, 85,179,136,159, 87,127,103,163,190,117, 6,121, 7,126, 7,135,161,224, 91, 88,194,203,204, 12,103, 62, +245,182, 31,116, 50,254, 8, 33,196,135, 82,154, 98, 8,167,183,139, 67,207,102, 62, 62,200, 61,186, 25, 15,114,229, 56, 35,150, + 97,108,143,182,240,179, 55, 67,160, 70, 11, 23, 11, 94,183, 58, 22,130, 37,250,235,169, 25,138,188, 59,151,241, 32,247,237, 91, +235, 98,193, 51,164,174,118, 0,230, 42,149, 74,134,207,231, 19,145, 72,244,249,242,229,203, 85, 65, 65, 65, 37, 19,188, 2, 3, + 3, 17, 24, 24, 72, 10, 10, 10,234, 93,190,124,185, 94,104,104,168,134, 16, 18, 67, 41, 13,175,216, 66, 97,254, 90, 46,151,213, + 17,153,153, 21,253,180,117,235,143,157, 58,117, 98,133,194,255, 95,189,165, 58,156, 0, 96,107,107,187,163, 97,195,134,100,254, +252,249,226,154,226,244,242,242, 58, 23, 24, 24,216,181,103,207,158,220, 14, 29, 58,192,205,205,173,100,159,163,163, 35, 2, 3, + 3, 73, 82, 82,210, 7,215,175, 95,223,122,238,220,185,141, 94, 94, 94,151,227,227,227,123, 86,217, 35, 87,177, 6,105, 85,251, +203,244,238, 63,235,158, 13, 67, 5,211,207,229, 4, 48,254,119, 26,135, 8,177,220,190,125,187, 83,241,154,137,106,181, 26, 90, +173,182,228,183,120, 99, 89, 22, 90,173, 22,203,151, 47,215, 26,120, 77,165,208, 5,117,214,219,216,242,126, 5, 2,129,163,129, +150,172,104, 87, 97, 94, 19, 11, 11, 11, 79, 0,189, 27, 54,108, 56, 87,127,119,131, 90,111,126,165, 82,105, 98,170,194, 54, 26, + 64,167,202, 30,247,224,224,224, 81, 75,151, 46,237,143,255, 95, 83,178,217,224,193,131, 47,151,201,215, 76,247, 43, 37,132, 92, + 97, 24,230, 4,128,221, 0,222,178,178,155,155, 91, 78,154, 49,117,188,101,114,150, 10,223, 31,201,194,238,107, 18,140, 10,180, +194,204,143,109, 48, 60,104,168, 69,216,239,135, 39, 1,216,161,119,200, 83, 31, 31, 31, 18, 27, 27,107, 18, 87,255, 45,180, 6, + 80, 75,239,127, 37,128,226,165,173,178,116,239,133, 67,153,116,253,124,197,191,153,186,244, 90,186,227,168, 30,111, 38,128, 59, + 53, 42,176,138,215,192,170,116, 45, 44,175, 65,167,199, 5,245,235,245,201,135,237,193,136,236,240, 60, 3,136,124, 77,193,101, +212, 96, 64,113,235,207,203, 20, 92,118, 79,153,198,160, 66,107, 9,241, 26,244,117, 51, 63,223, 85, 59, 87,127,201,137,201,224, + 98,247,245, 34,168,228,133,200, 76,123,141, 12,113, 34, 82,147, 95, 33,229,245,171, 71, 0, 89, 98, 40,231,219,141, 17,160,101, +117,223,124,172,174,123, 0, 41,175,209,170,154, 83, 45,141,173,223,216,207, 55, 87,160, 5,212,210, 88, 3, 26,194, 11, 21, 52, +188, 61,188,189,189,127, 88,184,112,161,251,147, 39, 79,172,165, 82,169,244,204,153, 51, 87, 19, 19, 19,157, 93, 92, 92,146,166, + 76,153,210,190,118,237,218, 78, 3, 6, 12, 48, 63,116,232,208, 66, 0,227, 13,224,244,237,215,182, 69,228,174,141,235, 44,178, +195, 54, 65, 25,247, 16,167, 83,165,248, 51,189,136,214,179, 17,146,105, 31,212,130,165,144,139,239, 58,184, 89,246, 62, 26,183, + 10,192,112, 3, 56, 49,160,141, 95,125,181,172, 8,114,153, 26,123,158,230,200,206,167, 72,157,136,109, 66,230,198, 65,109, 69, +156, 76, 49, 60,173, 4, 13,150,181,115, 67,239,163,113, 21,214,221,221,221,125, 2,203,178, 94,186,127,235, 22,255,126,120,163, + 32, 68,239,144,146,116, 98,229, 24,226,230,230, 6,134, 97,226,195,195,195,119,244,237,219, 23, 98,177,184,202,123, 36, 18,149, +191,202,137,157,157, 29, 58,119,238, 12, 31, 31, 31,110,167, 78,157,154, 1, 8,175,168,238, 42,149,210,149,101, 41,172,172,172, +204, 28, 28, 28,236,172,172,172,178, 85, 42,213, 59,113, 2,128,189,189,253,192,206,157, 59,115,247,239,223,159, 21, 31, 31,127, + 43, 40, 40,232,149,181,181,117, 41,107,175,133,133, 5, 26, 52,104,128,111,191,253,150,219,171, 87,175, 42, 57,157,157,157,123, +132,134,134,130, 16, 82,210, 89,151,133,167,167, 39, 92, 92, 92,208,187,119,111,238,192,129, 3,123, 84,246,124, 14,245, 35, 79, +139,197,211, 16, 63, 82,105,199, 52,196,143, 80, 2, 60, 43,107,201, 42,203,169,179, 96, 45, 43, 45, 98, 43, 30,102, 43, 47,191, + 1,247, 61,163,216,154, 36, 18,137, 50, 12,107, 23, 42,229,172,112, 88, 83, 40, 20,150, 88,157,202,158,171, 60, 78,134, 97,176, +104,209, 34, 16, 66,192,227,241,192,231,243,203,253,237,210,165,139,177,229, 76, 34,132, 48,124, 62,127, 46,151,203, 29,175, 80, + 40,220, 69, 34,145, 88,171,213,254,170, 80, 40,150,235, 44,160,182,229, 61,187, 21,113, 90, 88, 88,120, 62,127,254,188, 97, 69, + 23, 69,161, 80,160, 89,179,102,128, 2, 49,149,113,198,197,197,121,214,175, 95,191, 17,128,226,165,212,174, 81, 74, 59,233,253, +175,143,107,148,210,143,117,127, 63,123,249,242,165,103,177,192,210,231, 84,171, 84, 94,238, 78,214,120,144, 32,195,238,107, 18, + 92, 92,232,134, 15,151,139,241, 89, 75, 46,124, 60, 44,161, 81,169, 27, 13, 30, 60,120, 15,222, 60,191,119, 0, 12, 24, 60,120, +112, 99, 14,135,115, 9,192, 49, 0,249,198,246, 29, 70,124, 68,152, 56,107,246,195,164, 50, 45, 82,139, 16,114, 82,239,252,125, +138,255,159, 55,111,222,130,144,144,144, 39,132,144,147,250,233,250,249,244,127,117,231, 58, 73, 41,237, 51,127,254,124,223,149, + 43, 87,174, 40,206,251,183, 88,176, 0, 88,103,202, 45,112,253,181, 53,184, 28, 45,184, 12, 1,151, 3,128, 18, 36, 38,196,161, + 64,146,119,131,190,250, 61,222, 48,203,213,224, 14,205, 91, 52, 91,189,111,253, 28,230,151,235, 69,200,147,202, 17,123,255, 10, +238, 92, 57,150,166,213,104,143,129,208,187, 0, 19,133, 87,236, 83, 74,171, 31,181,251,141,192,210,137,170, 82, 34,235,111,251, +170,253,184,113,227,198, 33,139, 22, 45,242,188,127,255,190,149, 68, 34,201,220,187,119,239, 83,133, 66,113, 31,192,134,215,175, + 95,119,222,176, 97,131,249,154, 53,107,122, 54,107,214,172, 81, 88, 88, 88,145, 1,156, 31,204, 30, 61, 60,114,252,140,175, 68, + 49,135,182, 64, 16, 19,133, 69, 15,179,180, 23, 83,139, 22, 2, 88,143,164,194, 14,153,114,205,249,117,157,235, 48,117,173,248, +240,182, 21,116, 49,128, 19,179, 71, 15,135, 56, 62,142, 75,185, 34, 40,149, 26, 20, 40, 89, 37, 0,169, 66,173, 81, 81, 11, 71, + 17, 0,112, 25,194,213,113, 86,200, 85, 60, 44,168,159,118,226,196, 9,115, 0,111, 77,246,208, 79,175,108,184,144, 82,154, 75, + 8, 89, 37, 16, 8, 22, 17, 66,104,235,214,173, 31,248,249,249, 21,218,217,217, 65, 38,147, 65,161, 80,128,207,231, 67, 38,147, + 33, 49, 49, 17,183,110,221,130,157,157,157, 81,247,170,176,176, 16, 86, 86, 86, 96, 89,246,157, 57,181, 90, 45,217,182,109,155, +197,147, 39, 79, 44, 14, 31, 62,236, 60,115,230,204,236, 38, 77,154,220, 29, 58,116,232, 11, 39, 39, 39,197,195,135, 15, 17, 17, + 17,129,220,220, 92,180,109,219,214, 32, 78,165, 82, 9, 46,151, 11,153, 76, 6,161, 80, 8, 46,151, 11,141, 70, 3,150,101, 75, + 68, 87, 97, 97, 33,114,114,114,192,231,243,161, 84, 86, 62, 85,174, 88, 44, 13,241, 35,244,208, 31, 17, 25,208,178,128, 74,162, +134, 34,255,205,166,204, 87, 67,158,167, 30, 50,235,199, 15, 14, 61, 54, 44,234,120,177, 5, 75, 31,149, 13,179,149,151,191, 42, +212,244, 60,168,202,134, 53,243,242,242,204,108,109,109,231, 26, 98,145, 35,132,128,195,225,128,207,231,131, 16,130, 78,157, 58, + 97,220,184,113,104,217,178, 37,226,226,226,112,224,192, 1,220,185,115, 7, 60, 30,175, 36,191,161,232,210,165, 11, 71, 36, 18, + 69,244,235,215,207,119,225,194,133,162,186,117,235, 34, 38, 38,198, 99,229,202,149,115, 47, 92,184,208,159, 16,210,138, 82,202, + 86, 73, 84, 60,244,247,102, 88,176,183, 66,161, 64, 76, 76,140, 49,199,188,109,245,246,246, 78,100, 24,230, 5,203,178,215, 1, + 52,163,148,118, 34,132,156, 1, 96, 81, 38,171,148, 82,250, 49, 33, 68, 2,224, 17,195, 48,207, 88,150, 77, 44,207, 18,110,101, +101,149,153,156, 33,113,118,176, 20, 97,100, 71, 75,124,184, 92,140, 65,173,132, 16,242, 9,158,198,167,193,187,126, 93,242,224, + 70,120, 43,157,184,106,157,154,154, 10, 0,173, 0,196, 39, 37, 37,185, 22, 11, 44, 19,254, 27, 40, 43,130,138,133, 83, 72, 72, + 72,159,242, 68, 85, 57,239,102,169,244,149, 43, 87,174,208,251, 63,183, 38,203,202,213, 87,142,149,191, 88,248,236,228,145,253, + 55, 63, 84, 17, 79, 95,255,142,122,214, 32,138,168, 91, 17, 0,232,175, 6, 53, 96,110,125,205, 24,115,139, 95,183,173,152,206, +108,191, 82,132, 36,113, 6, 34, 78,255,138,204,212,132,221, 0,157, 73, 95,133, 73,222,185,145,172, 55,216,215,201,209, 1,114, + 21, 5, 75, 1,188, 37,178,254, 22,113,213,183, 81,163, 70,193,145,145,145,158,114,185,220,234,207, 63,255,204, 11, 13, 13,125, +161, 84, 42,119, 82, 74,247,234,242, 28,207,202,202,250,142, 82, 10, 43, 43, 43, 46,143,199, 51,171,108,146, 38, 33,164,229,236, +241,163,110,172,218,182, 75,244,226,241, 3,108, 56,124, 26,121, 69, 69,218, 43, 25,178, 1,148,210,147,186, 60,151,238,101,201, + 82, 40,104, 29, 30, 67,224,106,193,115, 33,132,136, 40,165,242, 10,197,213,248, 81, 88,181,109, 23,230,140, 14, 98,212, 30, 94, +184,174,174,246, 84, 57, 0, 0, 32, 0, 73, 68, 65, 84,145,163,182,131, 80, 64, 51,139, 48,111,212, 96,206,125,153, 26,127, 62, +140,129,163,165, 53, 95,199,137,138,134, 9, 25,134,137,215, 19, 75,117, 79,156, 56, 97,222,183,111,223, 34, 0,250, 67,159,111, +165, 51, 12, 19, 95,197, 75,182,152, 16,226,188,103,207, 30, 70,173, 86, 23,198,197,197,193,197,197, 5,206,206,206,176,177,177, + 65,108,108, 44, 46, 94,188,136,167, 79,159,130,101, 89, 52,111,222,220,168,251,149,157,157,141,135, 15, 31,162,119,239, 79,102, +102,102,102, 88,219,217, 59, 72,111, 92,191,182,166, 58,156, 44,203, 18, 0,240,245,245,133,175,175,175, 40, 37, 37,197,253,228, +201,147, 78,223,127,255,253,107, 79, 79,207,125, 50,153,172,148,165,192, 80,129,165, 19, 44, 37,226, 79, 36, 18,129,207,231, 67, + 34,145, 32, 61, 61, 29, 5, 5, 5,111,198,108,108,109,171, 20, 88,165, 21, 33, 11,132,118,188,251, 86,186,223,104, 39, 35,159, +249,183, 44, 82, 53,153,255, 61, 53,222, 21, 14,107, 18, 66, 70, 0,152,107, 96, 93,160,209,104,192,231,243, 17, 16, 16,128, 77, +155, 54,225,206,157, 59, 56,118,236, 24, 60, 60, 60, 48,122,244,104, 48, 12,131, 39, 79,158, 24, 91, 68, 54, 50, 50,114,238,128, + 1, 3,124,247,236,217, 35, 74, 76, 76,196,211,167, 79, 97,107,107,139, 77,155, 54, 9, 39, 78,156,232,125,249,242,229,197, 0, +126,168,178,174,122,222,130,110,110,110, 67,154, 53,107,246, 86, 30, 23, 23, 23,155,179,103,207, 58, 21, 11,175,178, 30,134,229, + 32,111,241,226,197,235,124,124,124,214,235,134, 5, 3, 1, 88, 80, 74,187, 28, 62,124,152, 0,192,160, 65,131, 40, 33,228,138, + 46,255,163,176,176,176,174,177,177,177,116,233,210,165,229,182,115,153, 25,169,219,214,109,218,190,110,213,178,217,130, 89,189, +109, 48,168, 21, 15, 34, 62,129,181, 57, 15,203, 55,238, 80,223,187,117,237,161,171,171,235, 73, 0, 3, 82, 83, 83,225,234,234, + 90, 8,224, 25,135,195,137,215,106,181, 98,211, 28,247,127, 23,202,211, 34, 58, 43,114,106,121, 2,169, 58, 2, 77,223,194, 85, +140,249,243,231,251,134,132,132,220,174,201,186, 48,122, 39,173,252, 19,138,203,184,186, 56, 59,218,207, 27,221, 1, 44, 11,104, +180,128, 70, 75, 33, 45,146, 33,230,241,157, 34,136,200, 97,131,206, 40, 20,172,254,126,225, 87,245, 30, 36, 51, 16,231,170,112, + 53,124, 59,205, 76, 77, 24, 72, 95, 29, 26, 91, 83,226,202,197,201,241,202,254,237,223,225,206, 43, 37,180,236, 27,125,197,178, +180,228,239,191,225,129,105,224,232,232,184,230,230,205,155,117,133, 66,161,213,243,231,207,181, 97, 97, 97, 98,165, 82,185,181, + 88, 92,233, 48,194,223,223, 95,109, 97, 97,129,194,194, 66,133, 74,165, 42,172, 68, 92,185,119,105,249,193,181, 85,219,118,137, +228, 74, 37,242,101, 10,112, 28,156, 74,137, 43, 29,218,119,109, 88,187, 54, 17, 89,129, 2, 72,144,168,196,149,137,171, 46, 45, + 63,192,170,109,187, 32, 87, 42, 97,105, 99,203,184,183,234,130, 86, 95,110,130,132, 88, 81, 0,112,112,173,205,116,157,186, 28, +189, 54, 92,133,148,177, 98,117,156, 21,206,193, 74, 78, 78,222, 33, 22,139,231,139,197,226,249,122,162, 42, 1,192,252, 38, 54, +252,183,210,155,218, 10,230,139,197,226,249, 44,203,238, 48,224,210,138,135, 15, 31,158,220,180,105,211,124, 31, 31,159,252,236, +236,108, 68, 71, 71, 35, 55, 55, 23, 27, 54,108, 64, 76, 76, 12, 88,246,141,162, 46,111,184,196, 0, 97,132,220,220, 28, 75, 74, + 41,114,115,178, 45, 22, 46, 92,104, 83, 29, 78,173, 86, 91,234,221,170, 93,187, 54,166, 76,153,194, 47, 42, 42,178,125,253,250, +181,181,254, 62, 67, 57,149, 74,101,201, 53,167,148, 66,169, 84, 34, 63, 63, 31, 74,165, 18, 47, 94,188, 40, 17, 87,186,243, 27, + 39,176, 84,146,242, 39,217,203,178,213, 70, 54,100, 37,209,151,205,204,204,210,139, 27, 78,145, 72, 4, 66, 72,121,195,108, 53, + 18,173,185,248, 92,132, 16,106,102,102,150, 94, 13, 81, 88,101,125, 12,188,239,224,243,249, 24, 55,110, 28,110,223,190,141,184, +184, 56,112, 56, 28, 72,165, 82, 20, 21, 21,161, 71,143, 30, 16, 8, 4,198, 90,176, 40,159,207, 31,177, 96,193, 2, 81,124,124, + 60,178,178,178,138, 39,201, 67,171,213, 98,230,204,153,102, 66,161,112,132,177,166,122,177, 88,252,209,243,231,207, 27,149,221, +210,210,210,242,245,231, 12, 86, 23,135, 15, 31, 38,131, 6, 13,162,131, 6, 13,162,197, 66,203, 80,228, 37, 71,111, 59,118,252, +228,249,175,191, 93, 93, 88, 36, 45, 64,125, 55, 51, 20, 22,228, 99,121,200, 42,117,100,228,245, 43,115,103, 78,110, 23, 22, 22, +182, 18,192, 51,221, 33,207,194,194,194, 70,125,251,237,183,191, 65, 23,174,193,132,127,149,133,138, 84,246,238,213,196, 48, 94, +121, 28,186, 97, 66,179,247, 98,193,170,180,209,241, 30,218,194,217,209,225,242,158,205,203, 44, 79, 62, 6,146,147, 18,144,153, +154,136, 86,237,186, 32,230,241, 3,176,106,237, 17,250, 60,172, 74, 55,115,226, 53,184,161, 79,147,166, 83, 59,183,243,195,234, +147,133,120, 30,117, 22,121,153,169,155,105,252,161, 35, 53, 81, 25, 82,111,176,175,115, 45,199, 43,191,109, 9,182, 63, 19,205, + 32, 41, 41, 1,225,191,173,135, 90,245,150,158, 56,109,116,163,205, 42, 5,133,121,233, 80, 22,104, 33, 98,138, 68, 70,222,204, + 23,181,106,213,218,179,110,221,186,201,237,218,181, 51, 15, 10, 10,122,158,155,155,251, 61,165,244,144, 94,195,222,173, 81,163, + 70,223,108,222,188,217, 59, 41, 41, 9, 23, 47, 94,124, 14,224,110, 37,156,201, 28, 14,103,235,197,223,118,204, 54,171,215, 24, + 27, 22,124,173, 57,124, 39,186, 31,165,244,140, 30,167, 79,247,102, 13, 79,126,255,205, 23, 12,123,239, 15, 60, 76, 76,199,171, +124,197,197, 74, 56,193,225,112,112,241,183, 29, 48,171,215, 24,113,121, 82, 53, 79,104, 6, 75,151,186,120, 94,168,229,115,185, +220,219,227,199,143,227, 51, 28, 46, 24, 46, 31,209,185,114,245,195, 76, 14, 94,229, 87,111,169,187,231,133, 90,112,185, 92, 56, + 57,253,191, 97, 36, 58,215, 40,159, 6,203,219,183,111, 51, 28, 14,167,148, 48,215,183, 8, 25,107, 25, 50, 6,134,114,150, 21, + 88,197,208,104, 52,164,186,156, 10,133,162, 92, 81, 91,222, 92, 44,150,101,141,171,191, 50,191,124,149, 39, 55, 78, 96,233, 91, +164,244,135, 6,139,231,203,201,229,114, 39, 51, 51,179,244,226, 97,190,154,178, 96,189,139,103, 97,101,195,148,198,148,143, 97, + 24,176, 44, 11, 62,159,143,230,205,155,227,228,201,147,176,183,183,135,181,181, 53,172,173,173, 97,102,102, 6, 7, 7,135, 18, +129,197, 48, 6,123,223, 80,133, 66,225,225,225,225,129, 23, 47, 94, 64, 36, 18,149,108, 66,161, 16,190,190,190,144, 74,165,181, +255, 62, 91,253,251,193,132,161,221,251,111, 9, 61, 58,242,228,201, 83, 83, 85, 10,185, 95,227,198,141,232,221,200,203, 15,231, +206,156,220,203, 36, 73,254,231, 44, 92, 39,245, 69, 18, 33,228,228,188,121,243, 22, 84,151,111,222,188,121, 11,202,179,104,213, +152,192, 42, 86,140,229, 41,199, 98,113,181,123,211, 82,235,163,247,129,228,228,120,156, 63,180,177, 64,173, 82,230,178,172,218, +243,213,211, 7, 0,131, 95, 13,179,151,209, 54,253,123,119, 37,231,159, 40, 33,201,203,196,179,187,103, 19, 32, 19,204,175, 73, +113,181,103,203, 50,251, 19,143, 9,146,146, 18,112,230,192,250,124,181, 70,213,141,190, 10,187,255, 46,220,159, 11, 4,253,135, + 54,177,237, 51,174,163, 24,218, 64, 45, 70,196,196,126,236, 22, 72,250,139,175, 87,238,233,165,143,204,204,204,229,150,150,150, +204, 15, 63,252, 48, 86, 46,151, 47,165,148, 30,214,123, 96,122,212,175, 95,127,245,182,109,219,220, 95,191,126, 45,184,113,227, + 70,206,149, 43, 87, 40,128,144, 42, 58,238, 57,132, 16, 78,203,186,181,167,223, 75, 72,233, 71, 41,253, 67,143,211,183,143,127, +211, 63,119,133, 44,182, 82,255,121, 24,133,169, 73,152,255,103,178, 4,192,252,170,190,186,117, 29,140,189,163,163, 35,249,252, +243,207,217,130,130, 2,240, 5, 2, 86,173, 86,115,218,183,111,175,253,234,171,175,152,180,180, 52, 72, 10, 10,185, 3, 78,164, +219, 3,200,169,206,117,229, 11, 4, 80,171,213,168, 93,187,118, 73,154,164,160, 16,132, 16,184,186,186, 86,245,146, 5, 3,152, +217,190,125,123, 18, 16, 16,112,107,253,250,245,231, 42, 19, 41,213,177, 96, 85,105,232, 49,144,147,101,217,114,123, 79,181, 90, + 77,170,203,169,111,193,170, 74, 96, 25,109,193, 82, 84,100,193,202, 52,218,130, 85,158, 88,209, 23,135,250, 2,168, 58,115,176, +222, 67,227, 93,161,136, 50,166,124,197,243,224,248,124, 62, 30, 60,120,128, 58,117,234, 64,165, 82,193,202,202, 10, 86, 86, 86, +176,180,180, 68, 65, 65, 1,120, 60, 30,140,172, 51, 43, 18,137, 94, 71, 71, 71, 55,170, 85,171, 22,180, 90,109, 41,145,245,252, +249,115, 88, 88, 88,164, 24,107,193,114,115,115, 59,171,243, 34, 44, 5, 23, 23, 23,155,154,184,174,250,150,171, 65,131, 6, 85, +107, 28, 97, 75,200,236, 80, 0,161,131, 7, 15,222,243, 40,242, 84, 43, 87, 87,215, 83, 62, 62, 62, 4, 0, 76, 30,131,255, 45, +235, 85, 5, 35,106,153,101, 44, 79, 74,189,255, 51, 1, 16,221,255,153,122, 2, 76,255,111,101, 57,105,217, 33, 33, 33,151,245, +230,111,101,254,101, 22, 44,226, 61,180,133,147,131,253,229,157, 27,150, 90, 31,138, 2, 82,146,226,113,245,200,166,124,141, 86, +213, 13, 44, 77,141,188,112,228, 48, 8,138,240,234,240, 85,224,144, 1, 77, 3, 90,182,108,226,137, 99, 79,212,200, 76,126, 14, + 74,217,221, 52,253,183,162,119,110, 20,117,226,106,247,166,165,246, 71, 31, 16, 36, 39,197,227,252,161,141,249, 26,173,170, 91, +117,130,148, 22, 99, 60, 33,118,140,149,249, 79, 35, 63,106, 51,216,179, 94,109,176, 84, 13,150, 79,241,217, 28, 71,238,179,123, + 69,199, 60,122,114, 14,177,133,236,212,228, 72,195, 2,120, 22, 22, 22,126, 71, 8, 57, 74, 41,141,209,107,136, 63,246,246,246, + 94,241,211, 79, 63,213, 77, 73, 73,177,186,119,239,158,228,231,159,127,142,103, 89, 54,152, 82,154, 97,192, 3,249, 53, 33,100, +167,126,188, 27, 66,200, 7,179,199, 14,143, 28, 62,102,188, 40,254, 66, 40,236,226, 99,240,205,159, 98,237,179, 92,101, 16,165, + 52,205,128,162,218, 11,133,194,195,167, 79,159,126,209,178,101, 75, 34,149, 74,161, 86,171,145,149,149,133,163, 71,143, 70, 83, + 74, 97,103,103,135,211,167, 79,179,195,135, 15, 63,172, 80, 40, 6, 85, 36,178, 42,242, 34, 4, 16, 34,147,201,138,197, 85, 73, +186,181,181,117,136,181,181,117,241, 28,172, 29, 21,116, 94,197, 97, 26,136, 46, 76, 67,219, 63,254,248, 35,182, 87,175, 94,201, +229,137, 20,161, 80, 8,185,220,184,104, 31, 21,121, 37, 86,135,179, 34, 11, 86,217,116, 99, 56,139,135, 41,139, 39,183,151, 77, + 47, 6,135,195, 1,203,178,111,165, 87, 46,176,242,202, 23, 82,210,140,106, 91,176,244,189,253,170, 35,110, 74, 89,147,171, 8, +248, 89, 29,207,194,154,182, 96, 21,223, 11, 62,159,143,227,199,143, 99,204,152, 49,208,106,181, 48, 55, 55,135,165,165, 37, 44, + 44, 44,112,228,200, 17, 20,135,113, 48,166,136,106,181,122,111, 72, 72,200,130,109,219,182,153, 81, 74, 33, 16, 8, 74, 4,214, +210,165, 75,101, 42,149,106,175, 33, 2,171, 36, 66, 59, 75,163, 27,212,170,220,139,176,188, 99, 42,152,143,101, 27, 28, 28, 60, +138,101,217,254, 40, 19,138,161,236,211,164,251,109, 54,120,240,224,203,149,133,105, 0, 96, 23, 28, 28, 60,129,101,217, 98,199, +152, 82,222,130,122,249,138,251,146, 70,131, 7, 15,222, 83,214,139,208,132,127, 61,238,252,219, 10,204,173, 88, 92, 13,246,113, +114,112,188,188, 99,253, 82,235,125,183, 1,113,210, 43, 68, 28,223,156,175,101,213,250,162,165,163,145,159,135, 45,221,156,108, +145,115, 83, 6, 73,214,107,128,226,222,187,139,171,161, 13,156, 28, 29,174,236,218,184,212, 62,236, 62,131,148,215,241,184,162, + 19,129,239, 34,174, 62, 23, 8,250,251, 54,116,223, 53,236,227,142,118, 54, 68, 13, 77, 98, 44,118,142, 30,130,168,190, 42,116, + 24,106,131, 54,189,173,224,221, 66, 52,228,244,142,156, 15,221, 2,201,120, 67,173, 89,101,196, 85,223,186,117,235, 46,187,117, +235,150, 39,203,178, 86, 87,175, 94, 45,216,182,109,219, 43,185, 92,190,145, 82,122,202,136, 78, 65, 95, 92,181,156, 55,113,244, +141, 21, 63,237, 20, 69, 71,221,193,234,189, 39, 32, 83, 43,181,103,147, 11, 7,235, 15, 31, 86, 6,129, 64,240,221,165, 75,151, + 44,154, 53,107, 70,178,179,179, 75,172, 34, 42,149, 10,249,249,249, 40, 40, 40,128, 66,161,128,191,191, 63,179,113,227, 70,139, +233,211,167,127, 7, 96,106, 5,157, 76,141,123, 17,150, 7, 43, 43, 43,240,249,124,168, 84,170, 18, 11,150, 80, 40,132,141,141, + 13,178,179,179,113,240,224, 65, 84,101,105,227,243, 5,169, 12, 67,234,152,153,155, 43, 68, 34, 17, 91,158, 21,205, 88, 78, 29, +146, 63,254,248, 99,247,224,224, 96,145,191,191,255, 91, 22,172,234,112, 82, 74,139,122,246,236,105,190,113,227, 70,120,122,122, + 66,169, 84,150, 18, 82, 12,195,128,207,231, 35, 41, 41, 9,223,127,255, 61, 40,165,134,127,200,200,115,213,104, 54,170, 22,100, +217,234, 55, 91,150, 26, 69, 25,106,168,138,140,242,232,213, 23, 43,250, 34, 72, 55, 71,234, 45, 1,100,168,133,168,170, 33, 64, + 99, 61, 11,245, 5,155, 80, 40, 68, 94, 94,158, 25, 33,100, 68, 5, 17,231, 13,182, 96, 21, 11,172,152,152, 24,236,217,179, 7, +189,123,247,134,157,157, 29,114,115,115,113,232,208, 33,196,198,198, 66, 32, 16,128, 16, 98,140, 21,139, 13, 8, 8, 88,117,253, +250,245,190, 65, 65, 65, 77,191,249,230, 27, 51, 63, 63, 63, 60,123,246, 12,193,193,193,242,168,168,168, 56,153, 76, 22, 12, 67, + 2,146,234, 34,180, 23, 7, 17, 53,200,139,176,204, 49,101, 81, 65,152,134,143, 43, 96,211, 15,225, 80, 42, 76,131, 62, 34, 34, + 34,188,234,214,173,235,131, 55,158,129,197, 29,173,190,183, 96,169, 78, 56, 53, 53,181, 53, 76, 94,132, 38,252,147, 5, 22, 40, +153, 25, 52,122,162,245,222,219, 4, 73,137,113,184,123,122,107, 89,113,101, 72, 35,211, 93, 63, 86,134,200,204,194,143, 37,111, +220,146, 37, 89, 73, 0,229, 24, 45,176,202,114,130,178, 95, 7,141,154,104,191,255, 46,129, 56,233, 37,254, 12,223, 98,180,184, +210,231, 28, 41, 16, 44,230,113,153,133,159,116,106,201, 15,108,209, 8,230, 25,241, 72, 75, 22,227, 96, 76,102, 78, 92,174, 98, +252,159, 68,133,196,151,138,157,189, 39,216,219,219,185,240,208,103,178,131,253,205, 19,146, 99,181,187, 49, 42,170,162, 33,226, + 27,116,105,185,229,124,251,156, 13,172,173,173,127,136,138,138,170, 37, 18,137,172,239,222,189,171,221,190,125,123,146, 92, 46, + 95, 67, 41, 61, 96, 80,221,223,222,239,222,186, 97,253,171, 43,182,236, 16, 21, 74,139, 32, 85,170, 32,116,118,213, 30,141,124, + 60,176,162,192,149,101, 57, 9, 33, 93,199,142, 29,251, 65, 64, 64, 0,163, 47,174,148, 74, 37, 36, 18, 9, 10, 10, 10, 32,145, + 72, 32,145, 72,144,146,146,130,206,157, 59, 51, 31,124,240,129, 31, 33,164, 43,165,244,114, 89,206,119,241, 34,236,219,183,111, +201,215,189, 62,167, 94,152,134, 5, 0, 24, 66,200,157, 7, 15, 30, 20,246,234,213, 11,102,102,102,144, 74,165,240,240,240,128, + 70,163,193,233,211,167, 17, 21, 21, 37,101, 89,246, 42,128, 7,149,213, 93, 38, 43,242, 32,132, 48,178,162,162,230,163, 70,141, +234, 60,107,214,172, 82,174,229, 78, 78, 78,176,183,183, 55,138, 19, 0,114,114,114,154,252,241,199, 31, 95, 61,120,240,224,235, +222,189,123,219, 44, 88,176, 64,232,229,229, 5,173, 86,203, 84,151, 51, 55, 55,215,230,222,189,123,107, 58,118,236,248, 69,175, + 94,189,184, 43, 86,172,128,141,141, 13,180, 90, 45,204,204,204, 32,145, 72, 16, 28, 28,140, 27, 55,110,104, 40,165, 91,242,243, +243,191,169,140,179, 84, 28,172, 89,107, 43,117,143,172, 40, 14, 86, 57,207, 82,185, 22,159,138, 4, 80,121,249,171,122,230,171, +245, 81, 86,134,179,140, 96,131,173,173,237, 92, 0,115, 43,136, 56, 15, 67,223,205, 98,129,197,225,112,144,144,144,128,237,219, +183,191, 21, 7,171, 56,140, 67,121,220, 21,212,157, 94,185,114, 69, 75, 8,105,119,247,238,221,185, 35, 71,142, 28, 47,149, 74, +221, 45, 44, 44,196,106,181,250, 87,153, 76, 86, 28, 7,139,111, 76, 27, 34,149, 74, 19,203,243, 34, 44,155, 7,176,173,148,179, + 76,152,134, 82,161, 24,202, 28, 86, 42,132, 67,217, 48, 13,250,156,237,219,183,143,103, 24,230,169,110,168,253, 41,202,120, 11, +234,113, 54, 74, 77, 77,109,237,234,234,122, 21,128,121, 89, 47,194,191,226, 89, 50,113,154, 96,160,192,130,232,194,173, 4, 8, +204,114,240,240,226,110,163,197, 85,185, 35, 15,242,162,184,197,251, 95,183, 80, 42,228,144,230,167, 63,163,241, 7, 50,222,253, + 46,195,226,194,157, 68,136, 44,242,112,255,194, 47,121, 90,173,188, 27,141,251,253, 65,245,233, 48,111,235,233, 48, 62,177,177, +199,195,175,198, 64,156, 39,197,153, 87,185,135,104,145, 98,106,168,110, 45, 63,247,118,228,250,174,133,105, 91, 3, 63,179, 25, +226, 88,155,135,181,179,127,133,104,158, 3,191,205,135,157, 12, 94,163,176,120,226,251,134, 13, 27,166, 4, 6, 6, 90, 14, 25, + 50,228,121, 78, 78, 78,169,137,239,198,130, 82,154, 76, 8,249,233,212,182, 31,103, 59, 52,107,139,205,223,206,209,238,143,124, + 92,214,171, 16,149, 91,113,248, 93,230,205,155,199,151, 74,165,111,137,171,178, 2, 75, 34,145,224,225,195,135, 24, 61,122,180, +240,193,131, 7, 93, 0, 92,126,203,116,147,156,188, 67, 32, 16, 32, 58, 58, 26,157, 59,119, 14,209, 89,168, 18, 34, 34, 34,230, + 23,115, 12, 27, 54,172, 36,125,218,180,105,243,235,215,175,143,156,156, 28,124,249,229,151, 21,206, 29,210,133,105,216,134, 55, +107, 17,166,133,134,134,182, 11, 15, 15,111, 55,115,230, 76,126,239,222,189,113,243,230, 77,156, 63,127, 94,165, 82,169, 34, 1, + 68, 26,186,252,140, 46,126,208, 61, 66,200,227,213,171, 87,183,227,112, 56,139,139,247, 69, 71, 71, 99,247,238,221,213,225,212, + 0, 88, 67, 8,249, 41, 52, 52,116,241,133, 11, 23,198,142, 26, 53,202, 90,173, 86, 35, 38, 38, 6,191,252,242, 75,117, 57,191, +170, 85,171,214,162,211,167, 79,255,122,238,220,185, 1,159,127,254, 57, 51, 99,198, 12,108,218,180, 9,191,255,254, 59,171,213, +106,195,121, 60,222,168,204,204,204, 42, 29, 80, 74,197,193,170, 36,206, 85, 85,251,203,177, 96,137,241, 38, 66,187,161,107, 18, + 86,201,251, 46, 67,128, 6,150, 59,245,157,155, 37, 93, 61,186,116,233, 82, 98, 85,164,148,150,154, 55, 87, 44,172,140, 29, 34, + 4, 96,171,123, 78,183, 0,216,132,210, 81,220, 57,248,255, 72,239,134, 50, 54, 77, 85,216, 70, 67,129,152,202, 23,123,182, 5, + 40,154, 86,193,150,183,120,241,226,117, 75,150, 44, 89, 87, 54, 20,131,126,166,178, 33, 28,150, 45, 91,134,138,194, 52, 0,200, + 93,188,120,241, 42, 0,240,241,241, 33,186, 97,193, 86,208,121, 11,234,113,238,209,165,155, 47, 93,186,116, 36,128,202, 56, 77, + 48,225,111, 20, 88,160, 11,162,175,239, 87, 3,112, 0, 97,230,211,151, 7,163,223,185,225, 98,233,188, 75,251,150,110, 2, 69, + 46,213,106,230,214, 72, 13, 88,206,194,232,235,251, 88,128,216,130, 48,243,232,203,223,223,185,156,196,198, 30, 5,193, 83,240, +251, 19, 49, 77,147,170, 63, 13, 85, 42, 75, 89,127,116,115,174,134,186, 5,146,131,118,110,188,163, 95,117,115, 32,167,114, 70, + 26,125,158,204,204,204, 21,150,150,150,156, 53,107,214,140,149,201,100,165, 38,190,191, 67,231, 48,135, 16,194,105,211,192,115, +250,237, 23,137,253, 13, 29, 22,212,107,244, 5,110,110,110,143,229,114, 57, 8, 33, 80, 40, 20, 37,194,170,160,160, 0,249,249, +249, 37,255,171, 84, 42,100,102,102,194,195,195, 3,132, 16,126,101,157,141,254, 82, 46, 0, 74,113,234,163, 12,167, 49, 29,225, + 53, 66, 72, 84,112,112,112,167,224,224,224,230, 58, 43,208, 53,163,134,198, 74,115,171, 1, 92, 51, 51, 51, 23, 19, 66,220,249, + 2,161, 52, 34, 34,226,194, 59,114, 22,233, 44, 35,107,215,174, 93,187,220,194,194,162,117,116,116,244,197,119,225,212,137,167, +129, 14, 14, 14,110,123,246,236, 9,219,181,107, 87, 91, 46,151,123,147, 16, 50, 56, 47, 47,207,232,197,158, 73,105,139,128,209, +251,203, 96, 18, 12, 91,131,176, 74, 11,145, 33, 22,176,234,226,125, 8, 54,173, 86, 91,184,104,209,162,140,178,130,171,172,181, +170,248,127,149, 74, 37, 55,240,253, 52,198, 43,178, 10,113, 65, 10, 1,224,205,218,130,111,150,191, 49,116,177,103, 0, 21,174, +109,185,100,201, 18,186,108,217, 50,194, 48, 76, 56,128,103, 12,195,188, 40, 59, 9, 93,127,223,178,101,203,176,100,201, 18,186, +116,105,197,223,166,197,156,177,177,177,148,195,225, 92, 4, 16,207,225,112, 18,244,121,245,211,139,143,169,140,211, 4, 19,254, + 54,129, 69, 95,133, 37, 1, 24, 83,163, 95,134,241, 97, 23, 96,196, 90,102, 6,113, 38, 28, 72, 4,240,121,141,241, 1, 63, 76, +104,211,101,182,238, 43,112,109, 89,113,165, 15,241,117, 26,238,218,129,132,180,249,176,211, 76, 93,231,179,194,216,243,149, 55, +241,189, 6, 68,214, 91, 19,223,141,232, 24,206,153,153,153, 17,169, 84, 10,153, 76, 86,202, 90, 37,145, 72, 80, 84, 84,132,194, +194,194,146,137,228,133,133,133,197, 67, 83,180, 18, 78,152,153,153,233, 15,251,197,231,229,229,149,112,234,167,151,225,172,142, +128, 57, 67, 8, 57, 71, 41,213,214,196,181,148,201,138,234,232, 58, 54, 78, 77,113,234,156, 23,198,215, 36,103,118,118,182, 24, + 64,123,111,111,111, 65, 92, 92,156,178,186, 60, 85, 45,228,108,232, 66,207, 53,105, 13,122,223,168,105,193,166,251, 80,104,242, + 30, 44,107,207,106,152,240,151,158, 29,155,114,160, 31,251,167,170,197,158,139,133, 25,197, 47, 21,148,145,146, 55, 10,146, 2, +216,243,242,229, 75, 79,150,101, 19,203,177, 36,149,218,183,116,233, 82, 84, 20,243,175, 12, 39, 0, 28, 75, 74, 74,114,211,106, +181,169,101,120, 75,165, 87,198,105,130, 9,127,179, 5,235,127, 19,191, 41,149, 75, 0, 44, 49, 52,127,234,159,116, 33,128,133, +239,216,112,198,212,116, 61,170, 35,174, 0, 64,173, 86, 95, 2,128, 90,181,106,161, 86,173, 90,198, 28, 87,229,190,228,228,228, +114,189, 2, 71,142, 28,185,195, 88,206, 42,234,174,125, 15,215,243, 95,193,249, 46,226,202,132,255, 45,208,220,232, 36, 0,223, + 86,153,175,234,232,237,111, 9, 34,221,159,185, 0,114, 43,208, 56,149,237,171,140, 19, 0, 36, 0, 36,229, 28, 91, 81,186, 9, + 38,252, 45, 96, 76,151,192, 4, 19, 76, 48,193, 4, 19, 76, 48,161,102, 65, 0,116,175,224,139,193, 96,239, 0, 66, 72,247,106, +124,189, 95, 48,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,249,191,197, 89, 21,119, 89,111,228,154, 90, 70,235, 47, 71,177, +103,203,251,216, 0,116, 55,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,105,226,172,230,121, 38,254, 21,231,121, 31,155,105, +136,208, 4, 19, 76, 48,193, 4, 19, 76, 48,161,134, 97,154,228,254, 47, 5, 33,164, 1,128, 5, 0,244,215, 10,187, 77, 41, 13, + 41,147,111, 31, 0,115,189, 36, 41,128, 96, 74,233, 11, 99,206,199,225,112, 66, 58,117,234, 52,245,198,141, 27, 63,170,213,234, +224,106,148,215,211,213,213,117, 21, 33,196, 31, 0,143, 16,242, 50, 61, 61, 61, 68,173, 86, 95,120,135,107, 80,207,197,197,101, + 37,128, 22, 12,195,240, 8, 33,113,233,233,233,223,171,213,234, 43,239,192,105,229,236,236,220,129, 82,234, 2,128,195,227,241, +178, 83, 82, 82,110, 85,215, 27,110,240,178, 88,190, 68,170,225, 1,128,181, 5, 87, 29,182,196, 71,101,104,154,233, 41, 55,193, + 4, 19, 76,248,143, 10,172, 97,141,136,171,150, 11,110, 88, 52, 77, 42,238,124, 0, 52, 7,208, 0,192, 11, 0, 15, 40,165, 5, +239, 40, 20,254, 21,156,255, 64, 44,166,148, 14, 47, 83,239,183, 50,117,235,214,173,223,185,115,231,204,139,151, 81, 97, 89, 22, +102,102,102, 26, 0,163,141,184,158, 78, 65, 65, 65,243,118,238,220,137, 33, 67,134, 44, 34,132,172,163,148, 22, 26,122,188,189, +189,253,160,122,245,234,109,218,177, 99, 71,173,182,109,219, 17,129, 64,128,151, 47,227,220, 39, 77,154,228,231,236,236, 28,158, +158,158, 62,222,216,202, 59, 56, 56,140,168, 95,191,254,218,237,219,183, 59,118,236,216, 17,132, 16, 68, 69, 69,185,127,245,213, + 87,205, 93, 92, 92, 14,164,165,165,125, 97, 44,167,163,163, 99,195,250,245,235,119,221,188,121,179, 89,135, 14, 29, 32, 18,137, +240,224,193, 3,203,201,147, 39,187,184,184,184,196,164,165,165, 93, 53, 86, 92, 61,138, 58, 49, 64,163, 82,172, 6, 0, 46, 95, + 56,167,221, 58,201,137,156,168,107,125,171, 74, 27,188, 12,199, 76, 34,203, 4, 19, 76, 48,225, 63, 40,176, 6, 53, 37,193,224, + 98, 1, 0,242,113, 3,114,224,124, 60,231,122,143, 30, 61,188,199,141, 27, 71, 90,182,108,137,168,168,168,134, 7, 14, 28,248, +132,203,229,198,105,181,218, 40, 0, 79, 12,141, 66, 77, 8,225, 1,240,229,112, 56,254,255,100,206,127, 56, 44,116,245, 78, 7, +112, 91,151,118,187,108,166, 75,151, 46, 29,231,114,185,197, 22,172, 54, 82,169,212, 25,165,173, 94,134,160,174, 90,173,198,211, +167, 79,193, 48, 12, 15,128, 23,222, 94,250,162,162,251,226,238,238,238,190, 53,242,118,148, 3,225,154, 33, 87, 14, 64,174,130, +192,210, 25, 59,119,135,218,207,250,242,139,129,214,214,214,215, 37, 18,201,111, 70, 8, 62, 47, 15, 15,143,117, 15, 31, 62,116, + 48, 55, 55, 7,203,178, 40, 40, 40,128,139,139, 11,118,236,216, 97, 59,107,214,172,225,102,102,102, 87,100, 50,217,239,198,136, +242,250,245,235,119,125,252,248,177, 89,241, 66,207, 74,165, 18,238,238,238,216,183,111,159,112,198,140, 25, 77,132, 66, 97,178, + 66,161,120,101, 40,167, 68,170,225,105, 84,138,213,123,182, 44,173, 3, 0,163,190, 88,186, 90, 80, 96,125,218,144, 52,137, 84, +115, 10,128, 73, 96,153,240,151,130, 16,226,239,232,232,120, 56, 43, 43,235, 42,128,241, 53, 17, 74,132, 16,226,198,229,114,189, + 40,165,182,186,255,243, 52, 26, 77, 60,165, 84, 92, 93, 78, 71,239,174,125, 33, 52, 31, 3,202, 54,103, 0, 16,134,121,160, 85, + 21,237,206,122,118,249,196, 59,113, 10,204,198, 2,180, 57, 3,176,132, 97, 30,178,154,162, 29,153,177,151,207,152,158, 12, 19, +106, 76, 96, 13,110, 74,236, 0,204, 61,176,105, 1,195,229,112, 72,208,151, 33,195,119,109, 89,195,244,232, 59,184,100,152, 36, + 48, 48, 16,129,129,129,100,245,234,213, 13, 46, 94,188,216, 96,223,190,125, 26, 66,200, 67, 74,233,193,138, 78,214,203,155,200, + 88, 64,244, 73, 99,174, 52,232,219,223,182, 7, 4, 4, 64, 40, 20,226, 93, 56, 1,160,103, 3,206,171,222, 1,222, 15,131,166, + 47, 78,108,219,182, 61,173, 9,206,127, 17,110, 83, 74,251,235, 26, 46, 59, 15, 15,143, 14, 26,141, 70, 4, 0, 92, 46, 87, 14, + 96, 58,213, 45,241, 67, 8, 9,103, 89,182,159, 17, 13, 35, 3, 96, 73,191,126,253, 22, 77,155, 54, 13, 30, 30, 30,152, 49, 99, + 6,212,106,117, 20, 33,100, 49,128,149, 85, 5,242,115,114,114, 90,188,117,235, 86,123,174,192, 2, 45,231,198, 35, 53, 79, 3, + 0,176, 20, 2,199,167, 80,204,152, 49,195,250,238,221,187,223, 3, 48, 88, 96, 57, 57, 57, 5,239,216,177,195,222,220,220, 28, +148, 82, 20, 22, 22,162,160,160, 0,133,133,133, 40, 44, 44,196, 23, 95,124, 97, 29, 19, 19,179, 10,128,193, 2,203,217,217,185, +195,230,205,155,205, 68, 34, 17, 10, 11, 11,249, 42,149,138, 20, 20, 20,160,168,168,136, 42,149, 74,213,244,233,211,133, 79,158, + 60,233, 2,224,149,169,217,248,199,136, 1, 14,128, 79,121, 60,222,103,222,222,222,173, 94,188,120,113, 95,163,209, 28, 1,112, +228, 93, 63,162, 8, 33, 31,186,185,185, 45, 23,139,197,155, 41,165,161,255, 43,215,212,217,217,249, 72, 68, 68, 68,157,173, 91, +183,142,254,241,199, 31, 79, 27,243, 14, 85,240,209,219,174, 77,155, 54,142,159,125,246, 25,207,197,197, 5, 69, 69, 69,136,139, +139, 51,191,112,225, 66, 45,145, 72,148,173, 80, 40, 34,141,185, 87,142,141, 58, 88,130,107,125,160, 93,215,238, 29,135, 12,252, +212,202,217,193, 6, 50,165, 22, 47, 18, 83, 61,254, 56,125,188,179,155,223, 39, 17, 42, 85,254,176,172,103,127, 22, 26,203,217, +181, 87,159,142,221, 63,252,208,202,198,214, 6,249, 82, 21, 94, 38,164,120, 94, 62,127, 34,208,213,239,147,107, 44, 81,127,158, +254,232, 92,145,233,173, 51,193, 24, 24, 60,201,221,220,220,188,220,116, 27, 27, 27,116,237,218, 21, 33, 33, 33, 92, 0,254,250, +251,222, 90,252, 20, 16,158,220, 54, 31, 54, 22, 66,198,195,195,195,202,218,218,250,157, 57,223, 36,178, 94,237, 61,232,199,119, +126, 91, 48,250,194,190,181,190,210,130, 60, 94,217, 44,150,150,150,104,212,168, 17, 22, 45, 90,100, 24,231, 59,226,175,230,116, +117,117,109, 28, 24, 24,232,127,233,234, 85, 91,177, 88, 44, 20,139,197,194,115,151, 46,217,182,107,215,206,223,213,213,181,177, + 30,135, 49,229,252,110,203,150, 45,139,195,195,195,153,192,192, 64,216,217,217,161,107,215,174, 56,125,250, 52,247,199, 31,127, + 92, 1, 96, 81, 85,229,100, 24,166, 99, 96, 96, 32, 1,165, 72,203,215,224, 86, 72, 99, 60, 88,227,131, 2, 57, 69, 78,190, 4, + 50,153, 28,230,230,230, 34,221,176,174,161,117,111,223,174, 93, 59, 2,160, 68, 84, 21, 20,188,217, 10, 11,165, 80, 42, 85, 16, + 10,133, 86,132, 16,145,161,156,148, 82,151, 14, 29, 58, 0, 0, 84, 42, 85,201, 88,107, 94, 94, 30,201,207,207,135, 82,169, 4, +143,199,227, 19, 66,184,134,114, 90, 91,112,213, 92,190,112,206,168, 47,150, 38,141,250, 98,105, 18,151, 47,156,163,180,146,104, + 13, 73,179,182,224,170,255,206,231,147, 16, 82,139,195,225,252,226,237,237, 29,195,225,112,246, 16, 66, 92,222,133,147, 16,210, +154, 16,178,194,220,220,252, 66,147, 38, 77,146, 44, 44, 44, 46, 17, 66, 86, 18, 66,218, 85,135,147, 16, 34, 48, 55, 55,191,180, + 98,197,138,176,251,247,239, 15,185,120,241,162,215,163, 71,143, 6,174, 94,189,250,128,165,165,229,117, 66,136,249,187,188,155, + 94, 94, 94,187,110,221,186,213,186,125,251,246, 59, 9, 33,194,154,120,223, 9, 33, 28, 66, 72, 11, 98,224,154, 64,127,245,125, + 39,132,184,181,108,217,178,142, 72, 36, 66,247,238,221, 1,160,203, 59,114,182,155, 60,121,178,203,172, 89,179,120, 15, 30, 60, +192,206,157, 59, 17, 30, 30,142,140,140, 12,244,233,211,135,223,173, 91, 55, 23,161, 80,216,206, 40, 78,174,245,129, 47,191,154, +217,107,246,140, 9, 86, 15, 95,171,176,251,194,107, 28,139, 76, 69, 70,145, 0,125, 7,142,178,249,168,255,208,143, 4, 66,155, + 3,198,114,206,155, 59,183,215,196,177,195,173,162, 83, 89, 28,191,153,134,155, 79,243,161,225,217,162,247,192,241,118,205, 59, +244,250,132, 11,222,175,255,132,123,244, 95,231,252,207, 90,176, 8, 33,148,210, 55,139,184,134, 69,211,220, 65, 77,201,170,161, +211, 86, 44, 34, 12,161,117,125,219, 71,215,174,223, 84,234,224,224,128,162,162, 34, 40, 20, 10,240,249,124,200,229,114,188,126, +253, 26, 55,111,222,132,157,157,157, 81, 39,150, 72, 36,176,180,180,132,165,165,101,141,112,206, 31,221, 93,248, 50, 41, 83,120, +246,230,149,206, 27,166,254,222,182,126,139, 46,143, 62, 28, 58,227,177,117, 45, 55,249,163, 71,143, 16, 17, 17,129,220,220, 92, + 4, 4, 4,252, 87,238,221,109, 93, 59,125,155, 16, 98, 23, 24, 24,232,126,246,194, 53,187, 66, 57,107,157,144,174,230,177, 44, + 11,115,115, 87,205,193,195,199,243,135, 12,236, 75, 8, 33, 25, 0,110,235, 68,237,237, 42, 58, 2, 17,128,198,131, 6, 13,154, + 55,117,234, 84,196,197,197, 97,194,132, 9,178,219,183,111,103,183,111,223,222, 97,199,142, 29,102,179,102,205,194,213,171, 87, +151, 16, 66,142, 2,136,167,148,202, 43,120, 9,249,124, 62, 31, 26,157, 92, 80,105,217, 18, 93, 47,145, 72, 64,101,185,224,243, +249, 28, 0,181, 0, 24, 52, 79,142,101, 89, 62,143,199, 43, 17, 87,175,211, 37,120,157, 81, 4, 73,161, 18, 50,153, 6, 74, 25, + 5,199,220,129, 11, 36, 56, 3, 72, 48,240,122,114, 68, 34, 17, 52, 26, 77,201,250,136,197,150, 49,165, 82,137,252,252,124,112, + 56, 28, 75, 0,214, 0,114, 12, 33,124, 51,121, 29,199,116,195,125,184,179,183,159,227,139, 83,243, 85,131,150,198,148,164, 89, + 91,112,213,135,103, 53,225, 56,184, 55,191,209, 98,200,175, 62,197,105,127,231,252, 43, 66,136,176, 86,173, 90,151,195,194,194, +154, 52,104,208, 0,241,241,241, 62,131, 7, 15, 14, 32,132,180, 48,118,205, 68, 66,136, 57,195, 48,171,198,140, 25, 51, 53, 40, + 40,136, 52,108,216, 16, 92, 46, 23, 26,141,198, 61, 46, 46,174,235,161, 67,135,230,114,185,220, 29, 90,173,246,107, 67,231,245, + 17, 66, 24,129, 64,112,112,251,246,237,157, 2, 2, 2,176,103,207, 30,220,190,125,155,109,221,186, 53, 51,114,228, 72,120,122, +122, 6,140, 28, 57,242, 24, 33,164,119,117, 44, 89,132, 16,207, 17, 35, 70,212,225,112, 56,104,223,190, 61, 63, 34, 34,162, 37, +128,136,119,188,166,150,238,238,238, 87,187,116,233,210,226,194,133, 11,247, 8, 33, 93,140,153,199, 72, 8,233,239,230,230,182, +218,198,198,198,206,136, 54,182, 40, 37, 37,229, 27, 35,214, 56,109,235,239,239,143,196,196, 68, 52,110,220, 24,124, 62,191, 29, + 33,100, 18,128, 94, 0, 22, 26,179,226, 4, 33,196,173, 93,187,118,142, 93,186,116, 33, 43, 87,174, 4, 0,240,120, 60,104,181, + 90, 48, 12, 3, 30,143, 7, 31, 31, 31,242,234,213, 43,123, 66,136,155, 33,195,133,142,222, 93,251,182,255,176, 87,199, 78, 1, + 31, 48, 63, 30,126, 1, 45,171, 5,135,104,192, 37, 44, 88,181, 16, 66, 62, 7, 13,125, 91,113,158, 62,121, 24,224,216,168, 71, +223,172,103,231, 79, 24,194,217,171,111,191,192, 38,141, 27, 50, 27,142,189, 68, 94, 74,140, 54, 37,246, 90, 22,195, 97,208,196, +191,155, 99,195,166, 45, 56, 45, 2,186,240,196,241, 79,186,218, 55,232,220, 61,231,197, 85,147,168,120,255,237, 79,137, 22,249, +207, 8,172,178, 56, 28, 77, 23, 91, 11,136,215,161, 67,251,153,204, 2,149, 52, 46, 46, 14,142,142,142,112,117,117,133,141,141, + 13,162,163,163,113,233,210, 37, 60,123,246, 12, 44,203,162,121,243,230, 70,157, 56, 43, 43, 11, 15, 31, 62,132,157,157, 93,141, +113,214,175, 83, 11,211,234,212,226,167,103, 75,248, 23,110, 63, 11,248,121,254,192,166,140,207,192, 93,114,249,255,247,253, 74, +229,127, 99, 37, 17,125,111, 65, 15, 15,143, 14,187,119,239,230, 43, 52,176,106, 56, 41,242, 7,169, 92,107, 1, 0, 22, 34,142, + 52,106,117,163,175,191,251,238, 59,233,216,177, 99,125, 94,191,126, 29, 82, 21,175, 64, 32, 88,254,241,199, 31,207,166,148,242, +190,252,242, 75, 0,192,168, 81,163, 36, 55,111,222,108, 72, 41,205, 32,132,184,141, 27, 55,238,249,229,203,151,205,103,206,156, +201,209,104, 52,209, 92, 46,151, 18, 66,130, 41,165, 75,223, 50,145, 50,204,221,123,247,238,213,117,243,108, 4, 79, 7, 6,129, +139,222, 44,167,230, 96,206, 34, 57,225, 37, 98, 31,221,134,139,139,139,141,171,171,107, 76,227,198,141, 85, 41, 41, 41,115, 11, + 11, 11,183, 86, 86, 70, 62,159,255, 32, 42, 42,202,213,211,211, 19,133,133,133, 72,206, 44,194,140, 35,230,144,200,222, 24, 45, +120,144,161, 69,157, 70, 86,102,140,242,182,179,179,179, 74,169, 84,126,155,151,151, 87,233,114, 31, 60, 30, 47,251,209,163, 71, +150, 30, 30, 30,144,203,229, 52, 39, 39,135, 72,165, 82, 20, 20, 20,144, 83,167, 78, 13, 72, 77, 77,109,237,229,229, 69,220,221, +221,131, 27, 52,104, 32, 75, 73, 73,153, 96,200, 28,175,176, 37, 62, 42, 66,136,150,203,229,254, 56,113,226,196, 33, 71,143, 30, +189,123,120,105,147,254,148, 82,149,174, 49,177,241,245,245, 61,251,193, 7, 77,221, 66,215, 52,219, 72, 41,253,225, 31,240,120, +141, 89,176, 96, 65, 19,123,123,123, 76,158, 60, 25,203,126, 13, 70,224, 0, 0, 32, 0, 73, 68, 65, 84,150, 45,195,226,197,139, + 27, 76,158, 60,121, 34,128,117, 70, 52,148,102, 46, 46, 46,119, 54,108,216,224,211,161, 67, 7,156, 62,125, 26,251,247,239,199, +171, 87,175, 52, 94, 94, 94,220,128,128, 0, 44, 89,178, 4, 31,125,244,209,132,233,211,167,119, 38,132,180, 52, 80,116,140, 93, +178,100, 73,255,142, 29, 59, 98,244,232,209,138, 43, 87,174, 12, 1,112,238,252,249,243,221,174, 94,189,122,120,239,222,189,102, + 43, 86,172,232, 62,107,214,172,201, 0, 54, 85,163,254, 3, 58,117,122,179,182,113,199,142, 29,177,122,245,234,143,222, 69, 96, + 17, 66, 4, 14, 14, 14,167,246,236,217,211,162, 81,163, 70,248,252,243,207, 91, 14, 25, 50,228, 20, 33,164, 7,165,212,160, 6, +169,118,237,218,171,194,195,195,189, 43, 26, 73, 40, 15, 10,133,194,254,211, 79, 63, 93, 9,192, 40,129,181,111,223, 62,124,243, +205, 55,104,222,188,249, 7,109,219,182,221, 54,105,210, 36, 12, 26, 52,232, 67, 66,136, 51,165, 84,106, 80,199,194,229,122,245, +233,211,135,119,228,200, 17, 0, 64,167, 78,157,208,189,123,119, 60,126,252, 24, 55,110,220, 0,135,195,129,133,133, 5, 58,116, +232, 32, 16,139,197, 94, 0,170, 20, 88,140,208,124, 76,255, 62,189,173,142,223, 76,133,150,213,160,149,183, 53, 2,124,156,240, + 52, 89,130,168,152,100,104,149,124, 88,219, 59,160, 93,231,158,246,105, 41,175,198, 0,168,122, 62,150,208,124,204,103,253, 63, +177, 60, 30, 41, 70,158, 56,150,190,184,125,244,146, 90, 46,157, 0, 0,119, 47, 30,216,230,226, 96,214,163,161,127, 43, 78,151, + 30,253,236,142,236, 79, 27, 3,192, 36,176, 76,120,119,129, 5, 0, 5, 42,164,127,248,201, 64,220,187,119, 15, 0,144,157,157, +141,236,236,108,120,123,123, 99,211,166,210,237, 86,117,132, 11,203,178, 53,206, 9, 0,206, 14,214,248,188,119, 27,238,141,135, +251, 69,210,204, 76,145,165,165,165,252,191, 38,176,244,161,209,104, 68, 94, 94, 94,144,200, 64,242,139,212,150, 89, 7,222, 88, +246, 29,135, 93,177, 84, 42,149,140,165,165, 37, 20, 10,133,200,128,142,128,215,191,127,255,217, 7, 15, 30,228,197,198,198,162, +126,253,250, 80,169, 84,184,121,243,102,178,110,129, 98, 80, 74,197, 28, 14, 71,204,178,108,131,230,205,155, 35, 36, 36, 4, 62, + 62, 62,164,119,239,222,115,117, 34,139,213,231, 76, 77, 77, 93, 53,105,210,164,110,135, 14, 31,181,223, 62, 84, 6, 73,190, 4, +133,133,133,120,112,255, 46,114,210,229,248,249,231,159, 33, 18,153, 17, 0,252,140,140,116,254,204,153, 51, 55,186,187,187,247, + 74, 78, 78,238, 83, 81, 57,197, 98,241,242, 47,190,248,162,221,129, 3, 7,108, 11, 10, 10, 32,147,201,145, 35, 53, 71,204,250, + 55,235,235, 54,249, 42, 6, 91, 54,111,101,154,213,181,112, 44, 42, 42,194,212,169, 83,215,186,185,185,117, 16,139,197,227, 42, +226, 76, 73, 73,185, 53,109,218, 52,231,189,123,247,138,148, 74,165, 74,171,213, 66, 38,147, 49, 7, 14, 28,152, 91,183,110, 93, +187, 29, 59,118, 16,145,200, 76,151, 55,153, 63,101,202,148,131, 46, 46, 46,123,211,210,210, 70, 87,113, 77, 57, 28, 14,103,125, +104,104,232,200,161, 67,135, 90,165,166,166, 54, 13, 15, 15, 23, 2,144,233,178,184,246,232,209,163,238,154, 53,107,106,249,250, +250,206, 37,132,240, 40,165, 43,254,206,231,201,209,209,113,122,255,254,253,177,114,229, 74,156, 56,113, 98,150,189,189,253,218, +101,203,150,193,205,205,109, 26, 33,100,189, 17, 11,232,254,176,110,221, 58, 31, 31, 31, 31,140, 26, 53, 74,121,225,194,133, 5, + 0,142, 1, 72,188,126,253,186,199,175,191,254,218,247,224,193,131, 43, 55,108,216, 32,218,180,105,147,247,192,129, 3,215, 3, + 24, 87,229,251,237,236, 60, 51, 40, 40, 8,107,214,172,193,149, 43, 87, 6, 82, 74, 79,235,118,157, 33,132,244, 93,177, 98,197, +197, 69,139, 22, 97,221,186,117, 95, 26, 43,176, 8, 33,150, 77,154, 52,249,182, 87,175, 94,184,126,253, 58, 2, 3, 3,209,174, + 93,187, 89,132,144,141,148,210,172,106,136, 43,198,210,210,242,224,238,221,187, 3,235,214,173,139,239,191,255, 30,179,103,207, +198,174, 93,187, 2, 63,255,252,243,131,132,144,207,202,190, 51,229,193,198,198,198,210,220,220, 28,115,231,206,165,175, 94,189, +202,173, 42,127,157, 58,117,236,214,174, 93, 75,236,236,236,108, 12, 44,167,153, 72, 36,106,239,231,231,135, 37, 75,150,224,252, +249,243, 88,180,104, 17,252,252,252,144,152,152,136, 97,195,134,153, 47, 92,184,112, 16, 0,131,214, 37,164,148,218, 56, 56, 56, + 32, 35, 35, 3, 60, 30, 15, 29, 58,116,192,177, 99,199,160, 80, 40,224,228,228,132,188,188, 60,180,105,211,166, 88,140, 25,232, +116, 67,253, 28,237,109,144,241, 36, 5, 92,104,224,223,208, 17,151, 31,103, 67,165,102,225,228, 96,139,180,140,116,180,245,115, +135, 82,233, 1, 74, 89, 63, 67, 24, 5, 28,198, 95, 40, 50, 67, 78, 65, 22, 82, 98,174,100,171,180,138, 73,121,175,110, 36, 1, +128,125,253, 78,147,238,222, 56,127,119,240, 39,157,156, 10,165,117, 64, 40,219,198, 36, 25, 76, 48, 6,140, 1, 47,202, 91,105, + 69, 69,111,143, 18,188,171,112,121, 31,156,229,225,191, 40,176,138, 81,188, 56,178, 82,205, 66,169,102,139,191, 98, 33,147,201, + 12,181,138,169,207,158, 61,187,103,198,140, 25, 88,187,118, 45,158, 63,127, 14, 62,159, 15, 63, 63, 63, 87, 66,136,101,177,197, +197,223,223,223,137, 97, 24, 60,125,250, 20, 63,254,248, 35,198,142, 29, 75, 35, 34, 34,118,149,215, 81, 80, 74,239,231,228,228, +108,158, 52, 97,108, 94,110,250,107,168,101,185,200, 72,121, 9,133, 52, 15,223,135,172, 66,145,154,139,180,124, 21,210,242, 85, + 96,132,246,216,182, 99, 55,167, 73,147, 38,189,184, 92,110,159, 74,202,121, 51, 61, 61,125,199,148, 41, 83,242,210,210,210, 74, +234,167, 84, 83, 40,213,165,159, 87,115,115,115,172, 95,191,222,166, 97,195,134,253,121, 60, 94,215, 74, 56, 83,147,146,146, 98, +167, 76,153,162, 76, 79, 79, 71,126,126, 62,142, 31, 63,222,183,110,221,186,118, 43,127, 88, 75,164, 42, 46,210,242, 84, 72,203, + 83, 65, 96,233,132,131,135,143,114, 26, 53,106, 52,156,199,227,181,171, 74, 92,237,221,187,119,228,208,161, 67,173,126,248,225, +135,156,240,240,240, 45,148, 82,253, 27,242,116,253,250,245,135, 14, 30, 60, 88, 48,123,246,108,251,213,171, 87,207, 34,132, 44, +248, 27,205,243, 93,135, 14, 29,218,152,101, 89,132,133,133, 61,162,148,174, 59,122,244,232, 29,133, 66,129, 97,195,134,121,225, +205,112,145, 33, 60,173,135, 15, 31, 62, 53, 48, 48, 16, 95,125,245,149,234,194,133, 11,254,148,210,181,148,210, 4,250, 6,137, +148,210,141, 87,175, 94,109, 62,125,250,116, 69,155, 54,109, 48,122,244,232,177,132,144,192, 42,120,219, 7, 5, 5,249,176, 44, +139, 3, 7, 14, 60,212, 19, 87,197,247,241,210,225,195,135,111, 42,149, 74,140, 24, 49,162, 30, 33,164,155, 17,117,231, 11,133, +194,176,239,190,251,206, 54, 37, 37, 5, 35, 71,142, 84, 60,125,250, 20, 75,151, 46, 53,179,177,177, 57, 93,252, 14, 24, 3,161, + 80,248,243, 79, 63,253,212,191, 89,179,102,152, 50,101,138,114,235,214,173, 51,166, 78,157,170,244,247,247,199,150, 45, 91,250, + 11, 4, 2,163,150, 0, 17,139,197,121,209,209,209, 14, 85,109,201,201,201,233, 6,214,217,220,202,202, 42,210,215,215, 87,226, +231,231,215, 74,163,209, 32, 58, 58,250,229,158, 61,123, 88, 63, 63, 63,108,222,188, 25,171, 87,175, 70,159, 62,125,192,225,112, + 6, 25, 83, 86,169, 84, 10,145, 72, 4, 62,159,143,168,168, 40, 40, 20, 10,152,155,155, 67, 36, 18,129,195,225,192,214,214, 22, + 86, 86, 86, 0, 64, 13, 43, 43,168,164, 72, 13, 30,143, 1,151, 97, 17,155,152, 15,149,154,133,136,207, 1,143, 75, 0,202,194, +214,130, 7,145,128, 3,134, 16,214, 64, 78,228, 75, 85, 16,240, 25,240,248, 2,194,104,180,102, 37,157, 35, 87,107,102,102, 38, + 32,142,214, 66,136,248,166,152,220, 38,212,176, 5,171,216,202,100,136, 72, 81, 40, 20, 53, 46,124,222,149,179, 60,113,248,174, +156,255,200,155,200,229,202,159, 61,123, 38,176,118,112, 99, 29,172,120,185,117,199,222,176, 1, 0,123, 75,110,190, 74,171,102, +197, 98, 49,132, 66,161,220, 16, 46,185, 92, 62,129, 16,242, 61,128,166, 92, 46,247,228,238,221,187, 73,104,104,168, 93, 80, 80, + 80, 28, 33, 36,197,215,215,215,115,247,238,221,214, 0,176,113,227, 70,122,240,224,193,143,240, 38,244, 69, 90, 69,156,105,105, +105, 75,121, 60, 94,196, 23, 95,124,177, 73, 32, 16,216, 89, 88, 88, 56, 92,191,126,157,200, 85, 20,173, 23, 36,150,120, 22, 90, +155, 49,184, 54,223, 26, 19, 39, 78,228,196,196,196,132, 0, 56, 89, 9,231, 92,161, 80,120,253,249,243,231,107,109,220, 91,212, +178,240, 92, 96, 19, 48,255, 41, 0,192,211,145, 7, 70,215, 30,230,229,229, 33, 51, 51, 19, 83,167, 78,181,139,139,139,155, 11, +224,114, 69,156,201,201,201, 87,133, 66, 97,242,147, 39, 79,186,240,120, 60,129,133,133, 69,235,200,200, 72, 34, 87,178,248, 96, +110, 34,114, 10,223,148,211,222,146,139,187,223, 57, 99,218,180,105,220, 23, 47, 94,172, 2,208,177,220,175, 23,134, 89,173, 47, +174,230,204,153,243, 0, 64, 61, 66, 72,169, 33, 80,173, 86, 75, 70,140, 24,241, 24,128,223,236,217,179,237, 41,165,179, 8, 33, + 57,148,210,237,127,245,179,100,109,109,189,114,210,164, 73, 56,120,240, 32,114,115,115,215, 3,128, 68, 34, 89,183,111,223,190, + 3, 19, 38, 76,192,111,191,253,182,146, 16,242,135, 1, 86,172,143,135, 13, 27,134, 51,103,206,224,226,197,139,223, 82, 74,163, + 43,120, 71,159, 19, 66,230,134,135,135,111, 8, 10, 10,194, 47,191,252,210, 11,192,245, 74,120,123,124,244,209, 71, 56,125,250, + 52,178,179,179,183,148,151, 33, 47, 47,111,235,241,227,199,219,126,244,209, 71, 8, 9, 9,233, 1,224,146, 1, 66,195,199,198, +198,102,247,134, 13, 27, 90, 55,107,214, 12,195,135, 15,151,171, 84,170, 94,179,103,207, 62,177,127,255,126,171, 61,123,246,180, +154, 56,113,226, 45, 66,200,120, 74,233, 77, 67,174, 37,135,195, 89,177,105,211,166,113, 93,186,116,193,172, 89,179, 52,103,207, +158,237, 71, 41, 61, 71, 8,137,155, 51,103,206,169, 31,127,252,145,179,102,205,154,113, 28, 14, 39, 83,171,213,254, 93,162,250, +187,141, 27, 55,182,237,217,179, 39, 94,190,124,137,155, 55,111, 66,165, 82,253, 22, 25, 25,121,173, 65,131, 6,223, 41,149,202, + 19, 22, 22, 22,163,172,172,172,124, 91,180,104,209,141, 16, 98,110,200, 60, 60, 66, 72, 94, 92, 92,156,133,147,147, 19,120, 60, + 30, 30, 62,124, 8, 39, 39, 39, 0, 64, 70, 70, 6,252,252,252,192,225,112,144,151,151, 7, 0,249,134,137, 33,230, 81, 92,130, +184,158,189,149, 5,160, 21,225,254,211,100,212,114,180,131,150, 48, 72, 75, 75, 69,139,198,238, 32,132, 32, 47, 59, 13,132,144, +199,134,112,106, 41, 27,245, 90,156, 81,219,193, 74,136,102,109,123, 58, 68,254,145, 25,106, 83,191,227, 68, 46,135,112,132, 34, +235,237,227, 70,143,118,100, 89,138,188,236,116,112, 25,230,182, 73, 50,152, 80, 45, 11, 86, 69,147,202,222, 76,150, 54,175, 84, +164,136, 68,162, 18,235,137, 17, 95,118, 53,206, 89, 21,222, 7,231,223,104,105,152, 79, 8, 9, 39,132,204, 79, 74, 74,138, 29, + 55,110,156, 74,163, 82, 20, 68,124, 95,111,222,189,144,186, 83, 34,151,186, 78, 57, 54,195,102, 94, 81,126, 78,193,198,141, 27, +213, 73, 73, 73,177,250,199, 84, 33, 76, 95, 83, 74, 79,255,250,235,175, 91,195,194,194,224,231,231,135,232,232,104, 39,169, 84, +218,242,241,227,199,246, 62, 62, 62, 8, 13, 13,197,193,131, 7,215, 82, 74,207, 87, 38,174,244,172,107, 23, 82, 83, 83, 27, 37, + 38, 38,122,219,218,218,170,109,109,109, 81,214,179, 80, 34, 99,145,157,151, 15,123,123, 7, 88, 91, 91,123, 85,197,169, 80, 40, + 78,167,166,166, 54,100,237, 26,119,106,152,181, 62, 63,106, 69, 29, 68,173,168,131,211,115,221,224,106, 43, 64,110,110, 46, 50, + 51, 51,145,153,153, 9, 66, 8,212,106,117, 19, 3, 56, 95,137,197,226,157,175, 95,191, 14,119,118,118,134,149,149, 21, 40,128, +180, 60, 53, 30,172,241,193,131, 53, 62, 72,203, 83, 67, 82, 80,128,186,117,235,194,202,202,202,175,130,251,195,212,174, 93,187, +247,208,161, 67,173, 0, 64, 39,156, 62,164,148, 78, 41,103,155,172,209,104, 58, 20,231,253,230,155,111,236, 1,124,244, 23, 63, + 79, 28, 66,200, 23, 19, 38, 76,104, 37, 18,137,176,121,243,230, 87, 0,246,234,118,135,109,221,186,245, 41, 0,204,152, 49,195, + 23,192, 44, 93,136,132, 10,193,231,243,253,155, 52,105,130,200,200, 72, 0, 56, 90,197,233, 15, 71, 68, 68,160, 65,131, 6, 16, +137, 68,173,171,200,235, 85,167, 78, 29, 60,125,250, 20, 0,238, 87,144,231,254,211,167, 79, 81,167, 78, 29, 16, 66,188, 12,168, +123,255,158, 61,123, 62,186,124,249,114,235,246,237,219, 99,220,184,113,202, 91,183,110,245,166,148, 94,187,127,255,126,215, 17, + 35, 70, 72, 27, 54,108,136,171, 87,175,250,140, 24, 49, 34,130,195,225,124,111, 0,231,216,224,224,224,249, 3, 6, 12, 64,112, +112, 48, 61,116,232,208,112, 74,233, 57,221,251,117,246,192,129, 3, 35,151, 47, 95, 78, 63,251,236, 51, 44, 91,182,108, 62, 33, +100, 74, 21,214,160,124,173, 86, 11,169, 84,106,144, 9,222,208,252,142,142,142, 31,247,236,217, 19,139, 22, 45, 66,237,218,181, +113,226,196, 9, 10,224, 36,165,244,186, 66,161,232, 68, 41,253, 81, 42,149, 30,139,140,140, 68,143, 30, 61,248, 0, 62, 49,228, +252, 26,141, 38,225,242,229,203, 42, 7, 7, 7,184,187,187,195,195,195, 3, 82,169, 20,121,121,121,240,243,243, 67,219,182,109, + 33,149, 74,113,242,228, 73, 85, 94, 94,158, 65,142, 40, 26,165,116,207,249, 83, 71,242, 29,172,132,112,119,178, 65,221,218,246, + 40,204,203, 66,102,154, 24,254, 77, 60,208,217,191, 46,178,242,149, 56,123,242, 72,110, 65, 65,209, 30,131,172,254,138,162,221, + 23,254, 56,145,111,103,197, 71,163,198,190, 24, 49,110, 70,139, 22, 45, 3,206,183,105,211,225,236, 15, 43, 87,124,240, 97,187, + 38, 36, 57, 75,142, 51, 39,143,230,230, 75, 36,187, 97,194,123,199,127,101,130,123, 41,129, 85, 1,178,102,205,154, 5,161, 80, + 8, 87, 87,215, 18, 81, 84, 44, 82, 4, 2, 1, 92, 93, 93,161,209,104,112,224,192, 1, 0,200,170,226,100,138,126, 83, 66, 88, +133,154, 22,241,120,188, 26,225,212, 89, 10, 20, 3,231,252,194,254, 17, 81,190,147, 75,117, 56,255, 5,104,163,139,105,213,134, + 82,154,155,144,144,144, 60,100, 96,191,252,196,184, 39,105,210, 60,113,170, 36, 59, 41, 53,233,213,227,180, 5,115,103,229, 39, + 39, 39, 39,233, 98, 97,181, 17,139,197,253, 0, 24, 58,151, 96,214,144, 33, 67,126,154, 48, 97, 2,125,240,224, 1, 0, 32, 42, + 42, 10,163, 71,143,166, 35, 71,142, 92, 15, 96, 94, 53,202, 45,149,201,100,165,172, 31, 42, 45, 91, 50,180, 39,145, 72, 32, 22, +139,161, 84, 42, 13, 86,194,207,207,174,121,150,147,112, 87,237,235,105, 1, 95, 79, 11,248,212, 49, 7,209, 20,150,136,171,204, +204, 76,164,167,167, 3,128,220,136,114, 74, 20, 10, 69,169,114,234, 15, 65, 74, 36, 18,164,165,165, 65,171,213, 42, 43,104, 36, +216,148,148,148,179, 7, 15, 30, 44, 0,128, 31,126,248, 33,135, 16,114,145, 16,242, 83, 57,219, 54, 46,151,251,103,113,222, 53, +107,214,228, 0, 56,253, 23,138,171, 1,205,154, 53,203,157, 63,127,254,230, 47,191,252, 18,219,182,109, 67,106,106,234, 60, 74, +169,166,184, 46, 89, 89, 89,115,182,108,217,130, 49, 99,198, 96,241,226,197,107, 90,182,108, 41, 33,132,140,168,136,179, 86,173, + 90,238, 92, 46, 23,247,238,221,147, 80, 74, 95, 86,209,160,166,221,187,119, 47,157, 16, 2, 87, 87,215,250,149,229,181,183,183, +247,182,178,178, 66, 74, 74, 10, 0,196, 87,144, 45, 65, 44, 22, 83,129, 64, 0, 55, 55,183, 6, 85,213,223,206,206,110,206,206, +157, 59,185, 79,158, 60,193,135, 31,126,152,124,245,234,213, 30,148,210, 43,186,178,221,139,138,138, 10,236,218,181,235,179,243, +231,207, 99,213,170, 85,164,121,243,230, 83,170,226,244,244,244,156, 60,118,236, 88,108,218,180, 9,219,183,111,159, 66, 41, 13, + 43, 83,231,253, 91,182,108,153,177,125,251,118,140, 27, 55, 14, 94, 94, 94, 35, 42,227, 75, 76, 76,156,219,165, 75,151,168,231, +207,159, 27,180, 66,129, 33,249, 9, 33, 93, 3, 2, 2,188,101, 50, 25,118,239,222,253,210,219,219,251, 78, 88, 88,216, 44, 74, +233,195, 50, 89,143, 29, 57,114, 4,159,127,254, 57,154, 55,111,190,155, 16, 18,100, 64, 39, 41, 78, 76, 76,204,122,248,240, 33, +203,225,112,224,238,238,142,222,189,123, 99,216,176, 97,104,222,188, 57, 50, 50, 50,112,237,218, 53, 54, 46, 46, 46,203,208,128, +163, 89,207, 46,159,136,143,127,246,231,189, 91,215,212, 92, 14, 3, 15, 87,123,124,218,189, 5,198, 15,234, 0,127,159,218, 72, +204,144,225,210,165,243,234,248,248,151,145,134,120, 16, 22,115,198, 70, 63,140,120,114,239,134,134,199, 37,240,105,220, 16,139, + 22,204,177, 91,190,100,174,109,195,250, 30,120,248, 42, 31,231,207,157, 81,139,147,147, 46,155, 60, 8, 77, 48, 22, 85, 13, 17, +254,176,109,219,182, 54, 59,119,238,236, 49,107,214, 44,203, 81,163, 70, 65, 36, 18,161,168,168, 8,238,238,238,208,106,181,248, +227,143, 63,112,247,238,221, 66,150,101,207,163,140,251, 63, 33,164,187,126,172,140, 63,226,168,217,155,224,149, 69,109,194, 7, + 15,174, 17, 78, 0,176,124,193, 90,103,215, 85,134,110, 12,187,241,217,190,179,247,200, 87, 65,157, 25,255,198,117, 0, 0,206, +206,206,176,182,182, 54,154,179, 6, 58,173,247,206,169, 63,124,155,154,154,250,148, 16,146, 49, 97,194, 4,159,226, 9,237, 66, +161, 80,158,148,148, 20, 91, 28,104,180,236, 49, 85,149, 83,231,233, 54,149, 16,114, 60, 63, 63,255,236,236,217,179,177,124,249, +114,156, 56,113, 34,144, 82,250,103,117,234, 78, 41,213,122,121,121,229,221,190,125,219,185, 65,147,150,168,231,196, 67,167,111, +159,131, 82, 10, 7,115,138,130,188, 28,220,191,127, 15, 5, 5, 5,183,140, 41,167,155,155, 91, 94, 70, 70,134,163,147,147, 19, +114,114,114,144,149,149, 85, 34,174,114,115,115,145,147,147, 67, 9, 33,215,141,224,148,122,123,123, 23,197,198,198, 10,156,235, + 52, 64,125, 39, 62, 2, 22, 60, 5, 40,133,135, 61,131, 2, 73, 30, 34, 35, 35,145,159,159,127,165, 34, 78,150,101,191, 30, 49, + 98, 4, 7,192,200,217,179,103,219, 3,104, 62,103,206,156,243,101, 61, 5,121, 60,222,186,208,208, 80,191,226,161,196,185,115, +231,174,165,148,238,252,171,158, 37, 7, 7,135,175, 79,157, 58,101,165, 82,169,176,113,227, 70,172, 93,187,118, 23,165,244,247, + 50,215,227, 20,135,195,217,194, 48,204, 23,211,166, 77,195,164, 73,147,204, 91,181,106, 53, 75,207,202, 85,138, 51, 37, 37,101, +145,191,191,255,226,140,140, 12,131, 38,236, 63,127,254,124,162,191,191,255,162,140,140,140,213,149,221, 35, 11, 11, 11, 11,173, + 86,139,248,248,248, 92, 74,105,126, 5,247, 78,222,176, 97,195, 20,173, 86,235,110,110,110,110, 95,213,243,153,155,155,187,162, + 85,171, 86, 75,211,211,211,207, 1,248,190,108,200, 17, 74,233, 3, 66,136,239,151, 95,126, 57,125,229,202,149,159,165,165,165, + 29,168,138, 51, 49, 49,113, 69,215,174, 93,191,125,246,236,217,175, 21, 13,245, 82, 74, 55, 19, 66, 84,161,161,161, 83,226,227, +227, 67, 42,227,164,148,158, 68, 37, 67,230,229,112,151,155, 95,159,147,195,225,204, 89,185,114, 37,179,109,219, 54, 80, 74,215, +104, 52,154,138,202,249,144,195,225,236,233,208,161,195,168,176,176, 48,145,175,175,239, 36, 0,251,171,122, 62, 21, 10,197,205, +136,136,136,182, 9, 9, 9,142, 93,187,118,229, 23,127,152,228,229,229,225,228,201,147,170,184,184,184, 44,169, 84,122,211,152, + 54, 68,163,148, 4, 69, 92, 10,223,159,240,252,113,187, 46,189,250,219, 41, 85,238, 16,102,115,144,151,157,134, 63, 78, 30,201, +141,143,127, 25, 89, 84,148, 23,100, 12,167, 74,145, 63, 44,242,242,241, 3,201,241,177,109, 59,117,237,109, 39, 87,122, 66,200, +103,144,157,158,130, 63, 78,133,231,196,199,191,186, 46, 87, 43, 70,255, 93,237,252,255, 18,231,127,209, 28, 87,229, 6,128, 15, +160,187,165,165,229,242,197,139, 23,175,185,117,235,214,154, 62,125,250,172, 17, 10,133,203, 1,116, 7,192,175,224,184,238,127, + 37,103,107, 55,216,119,173, 79,174,245,244, 38,236,228, 64, 59,237,232, 0, 11,101,183,110,221,182,188, 11,103,117,183,247,205, + 9, 32, 92,173, 86, 83, 0,105, 0,194,117,219,252,114,142,153,175,183, 63,237,245,235,215, 20, 64,184, 49,229, 4,224, 56,116, +232, 80,182,160,160,128, 14, 25, 50,132, 2,176,121,151,186, 11,133,194,174,157, 58,117, 82,167,103,230,208,167,175, 82,232,205, +168,104,122,246, 82, 4, 61,112,228, 20,221,180,101, 59,253,224,131, 15,148, 0, 60,141,225,228,114,185,221,186,118,237,154,157, +158,158, 78, 99, 99, 99,233,181,107,215,232,225,195,135,233,246,237,219,233, 79, 63,253, 68,235,212,169,147, 14,192,217, 24, 78, + 51, 51,179,254, 31,127,252,177, 58, 79, 82, 68,227, 83,178,233,163,216,120,250,231,237, 71,244,143, 75,127,210,189,251,195,104, +211,166, 77,229, 85,113,190,233,199, 56,155, 14, 28, 56, 32,161,148,210,254,253,251, 39, 3, 16,233,237,175,247,245,215, 95,103, + 80, 74,233,234,213,171,179, 1, 44,248, 27,158,165, 94,181,107,215,126,202,231,243, 79, 1, 24, 89,197,113,195,184, 92,238, 9, + 23, 23,151, 59, 0, 62,253,171,223, 35, 0,125,156,156,156,110, 2,232, 87,197,113,197,249, 6,252, 23,222,247,247,116,223,187, +113,185,220,107,120, 19,227,202,144, 62,224, 59, 14,135,115, 26,192,135,198,148, 19,128,155,165,165,101, 71, 75, 75,203,190,150, +150,150,125,109,109,109, 59, 2,112,123,151,186, 59, 52,236,222,215,163,101,191, 99,117,154,127,146,232,209,162, 79,162,151,127, +255, 99, 14, 13,187,247,125, 87, 78, 79,255,254,225, 30, 45,250,188,246,104,209, 55,161, 94,235,254,199, 28, 27,119,255,248,191, +118,223,255,201,156, 21,156,103,226, 95,113,158,247, 82,118, 35, 43,106, 1,224, 83, 0, 33,186, 95,139,119,189, 1,239,131,179, +173, 43, 26,117,247, 38,177,189, 27,115,115, 0, 12,170, 9,206,127, 96,227,248,171, 82,169,164,114,185,156, 22, 21, 21,209,194, +194,194, 82,194, 73, 95,136,137,197, 98,154,156,156, 76, 95,191,126, 77, 19, 18, 18, 40,128,189,198,150,211,218,218,122,231,224, +193,131,181, 60, 30,111, 83, 77,212,221,222,222, 62, 36, 32, 32, 64,181, 97,195, 6,122,236,216, 49,186, 99,199, 14, 58,109,218, + 52,234,231,231,167,176,181,181, 13,170, 14,167,139,139,203,162,198,141, 27,103,239,218,181,139,238,221,187,151,174, 95,191,158, + 46, 92,184, 80,235,238,238,158,102,101,101,245, 81,117, 56,157,156,156,126,238,216,177,163,234,231,159,127,166,231,207,159,167, +251,246,237,163, 95,127,253, 53,245,241,241, 81, 88, 88, 88, 12, 52,132, 19, 0,135,203,229,254, 56,121,242,228, 52, 55, 55,183, + 83,101,246,153, 55,109,250,127,236,157,119,120, 20,197,227,198,223,185,222,239,210, 46,151, 70, 66, 40,233,244,222, 17, 67,239, + 8,168,128,168, 40, 69,197,138, 8,138, 13,105,210,164,136,138,138,162, 8, 40, 88, 0,169, 42, 2,130,212,208,146, 72, 2,233, +253,114,233,185, 92,174,239,252,254, 72,130, 1,147,112, 9,124,127, 34,204,231,121,230,185,187,185,221,119,119,102,103,119,223, +157,182,145,103, 39, 79,158,156, 3,224, 53,118,193,101,154, 76,147,105, 50,131,117,111, 24, 44, 65, 35,107,187, 42, 0,252, 72, + 8,217, 83,211, 63,227, 14,212,160,221,113,205,147, 57, 52, 17, 64, 56, 33, 68,112,167, 52,239, 66,150,136,197, 98, 65,181, 65, +173,161,174, 81, 46,103,252,252,252,106,255, 46, 5,208,232,121,150, 74, 75, 75,159, 34,132, 60,127,211, 20, 3, 77,166,176,176, +112, 62, 33,228,219,148,148,148,165,110,110,110,157,236,118,187,189,172,172,236, 88,113,113,241,107,148,210,172,166,104,230,230, +230, 46, 34,132,236, 94,176, 96,193,171,148,210,174, 60, 30,207,108,183,219,143, 20, 20, 20, 44,165,148, 26,154,162,169,215,235, +167,139, 68,162, 47,146,146,146,150,202,100,178,118, 28,199, 89, 77, 38,211,145,130,130,130,151, 40,165,122, 23,203,184, 19,192, + 43,132,144, 85, 0,242,111,250,207, 68, 8,233, 21, 31, 31,239, 73, 41,205,101,117,234, 12, 6,131,113,127,244,193,170,239,134, +113,199, 77,203,127, 69,243, 46,106,218,189, 6, 96,178, 11,203, 45,189,131,219,172,188,195,105,184, 12, 96,232, 29,214,140, 3, +240,216,157,212,180,217,108,167,225,226,123,217,110,177,111,185,245,196,219, 0, 48,115,197, 96, 48, 24,247, 16,108,246, 52, 6, +131,193, 96, 48, 24,140, 59, 12, 65, 85,231,239,186,158,170, 93, 30, 29, 64, 8,137,110,194,211,252,175, 76,147,105, 50, 77,166, +201, 52,153, 38,211,188,191, 52,107,105,215,247,110,211,132,155,244, 62,197,127,145,255,113,231, 52,214, 1,144,105, 50, 77,166, +201, 52,153, 38,211,100,154,247, 93, 96, 77,132, 12, 6,131,193, 96, 48, 24,119, 24,102,176, 24, 12, 6,131,193, 96, 48,152,193, + 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12, 70,211, 33,213,163, 1, +170,126, 16, 66, 41,165,132,101, 11,131,193, 96, 48, 24,140,127,197,152,220, 35, 94,132,213, 96, 49, 24, 12, 6,131,193, 96, 48, +131,197, 96, 48, 24, 12, 6,131,241, 31, 48, 88,132, 16,202,178,130,193, 96, 48, 24, 12,198,191,197,189,230, 69,106,106,176,250, + 87, 39,172, 63, 59,196, 12, 6,131,193, 96, 48,254, 5,238, 41, 47,114, 67, 39,119, 6,131,193, 96, 48, 24, 12,198,237,195,250, + 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,113, 31, 27, 44, 66, 72, 52,211,100,154, 76,147,105, 50, 77, +166,201, 52,153, 38, 51, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131, +193, 96, 6,139,193, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12,198,191, 4, 1, 80,231, 72, 0, 74,233,175, 46, +139, 52, 97, 52,193,173,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,239,105,222, 74,187, 49,254,227,174,134, 82,250, 63, + 11, 0,162,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,239,183, 32, 96,149,120, 12,198,127,156,157,132,143,226,176, 96, + 80,234, 7,190, 56, 23,185,151,147,241, 54,229,110, 91, 83, 31, 25, 4,153, 93, 7,135,212, 0,253,165,148,219,214,100, 48, 24, +140,251, 8,102,176, 24,140,255, 58,134,240, 80, 8,176, 20, 60,248,130,218,146,160,141, 92, 10, 32,246,182, 53, 69,220, 34, 56, +121, 1,160,182, 68,120,135, 45, 3, 16,207, 50,155,193, 96, 48, 92,227, 95,233,228, 46,149, 74, 99,196, 98,241,123,132, 16, 9, + 59, 4,140,255, 21,132, 16,137, 88, 44,126, 79, 38,147,197,220,179,137,220,210, 86, 14,158,115,168,213,206,249, 31,184, 92,226, +109,178, 56, 67,193,115, 12,195, 23,161,202,219,210, 20,144, 65,102, 27, 23,248,205, 25,147,174,194,234,136, 0,197,237,105,254, +125, 76,220,196, 98,241, 1, 66,136, 23, 43,161,247, 38,145,132,116,238, 34, 20,206,137, 32,100, 0, 33,132,176, 28, 97, 48,131, +245,255,136,197, 98,233,216,177, 99,199,151,197, 98,113, 58, 33,100,212,253,148,225, 42,149,234, 79,141, 70,163,119,115,115,211, +107, 52,154,243,183,138,191, 71,141, 79,168,183,183,119,186,167,167,103, 98,237,120,239,246,227,122,134,244,158,250,182, 87,212, +152,126,119, 96, 27,163, 36, 18, 73,122,183,110,221, 94, 50,155,205, 29,239,217,204, 52,115, 58,240,248, 15,196,229,154,228,185, +101,118, 93, 76,154, 73, 5,240,251,195, 10,223, 38,107,150,114, 58,128, 14,184,152, 85,169,248,179, 72,171,251, 35,217,162, 6, +143,247, 0,204,196,231,182, 47, 56, 60,222, 44,142,227, 6,138, 68,162, 23,217,229,247,222, 68,204,227,245,250,115,212,168, 69, +175,181,107, 55, 59, 28, 24, 89,151,201, 34, 85, 60, 31, 17, 17,177,159, 16,242,200, 29,188,182,188, 31, 30, 30,158, 77, 8,121, +129, 29, 9,198,127,198, 96, 77,104, 65,122, 77,106, 73,142, 62,220,130,148, 63,210,146, 24, 31,107, 73,142,143,111, 65, 6, 52, +117,195,199,142, 29,147, 93,185,114,197,187, 95,191,126,219,101, 50,217,113, 66, 72, 72, 83,116,164, 82,233, 1,129, 64, 48,161, +118,156, 92, 46, 63, 32, 16, 8, 30,190, 41, 46, 78, 46,151,151,202,100,178,100, 23,117,175,137,197,226, 10,169, 84,122,173,118, +188, 64, 32,120, 88,161, 80, 28,184, 41,110,194,205,113,245, 33, 20, 10, 3, 50, 51, 51,189,179,178,178,188,197, 98,177,174,118, +124, 70, 70,134,119,102,102,230, 13,241,141, 69, 40, 20, 14, 80, 42,149, 59,111,142, 83,169, 84, 59, 93,213, 80, 42,149,223, 11, +133,194, 1, 55, 25,195,127,196, 53,213, 92, 13, 26, 52,232,120,110,110,110,160,155,155,155, 91,237,255, 60, 52,110,131,191,222, +180,225,229,209,195, 6,205,242,142, 28,219,182,137,250, 33,114,185,252,120,215,174, 93,183, 31, 62,124,216,251,155,111,190,145, +223,179,103,239,206, 72, 17, 8,215,151,163, 84,251, 87,182, 89, 59,124,212, 4,193,133,204, 74,173,221,233,244, 0,248,253,177, +185,185,164, 73,154, 2,123, 31,142, 82,221,111,105, 66,237, 3, 19,103,243, 15,167, 9,180,118,167,211, 19, 60,244,107,146,230, +223,199, 70,200,231,243, 95, 94,181,106, 21, 15,192,115,132, 16,241,253,116,177,237,230, 79,252, 31,108, 45, 56,211,201,143,244, +186,131,134, 34, 74,161, 80,156, 35,132,132,222, 45,233,180,114, 92,194,246,148,148,131, 83, 90,181, 26,241, 90,187,118, 79,220, +108,178,170,191,191,182,108,217,178,199,226,226,226,180, 45, 90,180,152, 65, 8,225,221,129,188, 88,179,108,217,178,185,113,113, +113,126,193,193,193,239,222, 9, 77,198,221,229,221, 1, 60, 0, 96, 56,128, 7, 1,116,173,254,222,165, 58, 12, 71,213,172, 8, +181, 63,187, 84,175, 91,243,127,183,122, 52,134,215,177, 94,151, 90,241,181,127,223,252,189,126,170, 71, 3,208,218,159, 55,135, +135,131,241,206,236,158,254,166,191,246,108,165,198,204, 20, 90,124,229, 2,189,240,233, 18, 58,187,139,214, 52,169, 5,222,111, +194,232, 3, 74, 41,165, 49, 49, 49,180,178,178,146,238,219,183,143,211,233,116,102,177, 88,188, 6,128,162, 49, 90, 98,177,216, +168,213,106,203,101, 50,217,151, 0,196,148, 82, 72, 36, 18,163,143,143, 79,185, 84, 42,221, 2, 64, 66, 41,197,224,193,131, 43, + 41,165, 84, 34,145, 84,184,162, 59,116,232,208, 10, 74, 41, 21,139,197, 21,213,251, 44,145, 74,165, 95,119,238,220,185, 76, 34, +145, 24,171,227,196,114,185,252,203, 46, 93,186,148, 73,165, 82,163, 43,186, 30, 30, 30,153, 78,167,147,238,217,179,135,122,123, +123,231,212,196,187,187,187,103, 58,157, 78,186,107,215, 46,170,213,106,115,154,144,167, 60,165, 82,185,162,107,215,174, 37, 74, +165,178,176, 86,220,202,238,221,187,151,214,196,185, 18, 20, 10, 69, 97, 96, 96, 96,177, 82,169, 92, 9,128, 71, 41,133, 82,169, + 44,108,222,188,121,145, 90,173, 94, 81, 19,231, 74,240,243,243,155,225,237,237,157,227,237,237,157,227,230,230,182,216,215,215, + 55,207, 96, 48, 80, 74, 41,109,217,178,101, 62,165, 20,218,118, 99,123,182,238,245,216,219,222, 81,163, 94,250,100,199,201,211, +199, 98, 11, 13,237, 6,206, 90,161,105, 55, 90,211,136,244, 43,196, 98,241, 26, 31, 31, 31,243,174, 93,187,156,122,189,158, 94, +186,116,137,230,230,230,210,250,202,245,127, 62,108,136, 12,160, 27,195,182,199,191, 21,120,229,216,178, 33,118,154,118,152,110, +125, 66,107, 63,250,146,127, 18,253, 56,252,123,186, 49,162, 89,147, 52, 63,142,216,122,233,141,192,132,245,239, 62,111, 79, 79, + 79,167,115,166, 14,113, 28,154,237,159, 76, 63, 9,223,209, 36,205,191,143,209,163, 99,199,142, 53,102,100,100,208,200,200,200, + 10, 62,159, 63,237,126, 25, 77,212,213, 15,254,209,161,226,236, 75,223,204,225, 70, 70,201, 11, 59,250,162,215, 29, 24,197, 21, +229,237,237, 93,176,121,243,102,170, 82,169,242, 1,132,222, 13,105, 5, 64,194,129, 81, 95,181,107,183,139, 27, 63,222,249, 85, +187,118,187,194,129, 81,168,154, 22,136, 0,152,183,124,249,242, 24,187,221, 30,243,229,151, 95,198,140, 26, 53, 42, 6,192,156, +219,220,230,218,247,223,127,159,218,237,118,250,229,151, 95,210, 81,163, 70, 81, 0,235, 92, 93, 95,169, 84,182,110,219,182,237, +150,200,200,200,140,246,237,219, 91, 35, 34, 34,204,161,161,161,105, 81, 81, 81,155, 37, 18, 73, 48, 27, 17,247,255, 86,118, 26, +242, 34, 93,231,205,155, 55, 31, 0,157, 55,111,222,124, 74,233,240,234,229,134,215,254,126,243, 39,165, 52,186,246,239,186, 52, +106, 66, 93,154,117,109,227,166,239,245,167,167, 38, 49, 0,250, 1, 56,122,243, 2, 19, 90,160,231,236,158,254,149,149,134, 92, + 26,187,228, 69,250,251, 3, 1,244, 68,127, 31,154,248,242, 88,154,251,205, 26,250, 76, 7,119,211,248, 22,120,160, 41, 6,107, +215,174, 93,244,208,161, 67, 52, 57, 57,153,234,245,122,250,230,155,111, 90, 21, 10, 69, 49,159,207,159,236,170,150, 76, 38, 43, +205,206,206,166,111,190,249,166,165,186,182,169,133, 92, 46, 47,205,203,203,163, 75,150, 44,177,202,100,178, 20, 0, 33, 18,137, +196,152,156,156, 76,165, 82,169, 75, 6, 75, 46,151,151,198,198,198, 82,137, 68, 82, 1, 32, 68,171,213,166,252,246,219,111,118, +142,227,104, 64, 64, 64, 25,128, 22, 90,173,246,218,225,195,135,175,199,185,106,176, 42, 43, 43,233,161, 67,135,168, 78,167,203, +185, 57,126,255,254,253, 55, 24, 47, 23,243, 83,231,235,235,123,161,102,255,130,131,131, 13, 0,116,126,126,126, 23,143, 30, 61, +106,175, 54, 51, 6, 87,245,124,124,124,242,243,243,243,233,186,117,235, 44, 42,149,234, 60, 0,157,143,143, 79,190,193, 96,160, + 31,126,248,161, 69,173, 86,199, 0,208,185,162,229,229,229,149, 99,181, 90,105, 73, 73, 9,237,214,173,155,241,196,137, 19,180, +172,172,140, 82, 74,105,243,230,205,243, 41,165, 8,235, 55,237,189,211, 87,141,101, 79,206,221,240, 93,112,215, 73, 75, 14,158, +201,206,250,252,167,115, 49, 94, 81,163,135,184,178, 13, 62,159, 63, 89,161, 80, 20,127,240,193, 7,182,226,226, 98,154,146,146, + 66, 79,157, 58, 69, 79,157, 58, 69,245,122,253,189,105,176,118,128, 79, 55,134,141,166, 27,195, 98, 54, 79,241, 42, 40, 63,191, +141,210, 95, 94,160,201,239,181,160,111, 13, 81,149,115, 27,195, 98,232,198,240,241,244,157,126,130, 70,105,126, 26, 49,146,110, + 12,139,121,127, 66, 80,225,133,152,179,244,232,209,163,244,163, 53,203,233,236,104,255, 10,110, 99, 88, 12,253, 56, 98, 92,163, + 52,107, 5,137, 68,114,245,248,241,227,244,216,177, 99,244,221,119,223,165,114,185, 60,227,246,243, 33, 66, 68, 63, 14, 13,162, + 27, 66,250,211, 77, 33,190,244, 72,211,246,237,127,109,174, 6,134,138,179, 10, 46,252, 68,105,209, 53,154,183, 50,146, 14, 9, + 19,222,150,201,170, 54, 87,134,180,180, 52,154,151,151, 71, 87,175, 94, 77,213,106,245, 93,109,178,194,128,209, 0,230,175, 88, +177,226,186,185,218,176, 97, 67,204,229,203,151, 99, 2, 3, 3,247,221,198,182,214,173, 88,177,226,186,185,218,176, 97, 3,189, +124,249, 50, 13, 10, 10,202,188,213,186, 83,166, 76,145,247,236,217, 51,102,242,228,201,166,205,155, 55,211,180,180, 52,122,249, +242,101,186, 98,197, 10,250,246,219,111,211, 47,190,248,130,142, 27, 55,174,162, 91,183,110,167,199,143, 31, 47,109,228,190, 9, + 40,165,226,234, 32,164,148,214, 24, 76, 1, 0, 33, 0, 62, 51, 85,255,244, 6,245,121,145,250, 76, 84,125,198,234,230,255, 26, + 48, 96, 13, 26,181, 91,109,175,161,244,212,174, 66, 61, 66, 41,253, 71,223, 23, 1,197,194,233,175,188, 39, 77,221,188, 26,250, +111, 63, 4,191, 68, 15, 97,121, 33, 44,199,247,194,126,124, 55, 30,235,209, 67, 38, 35,100, 81, 83,234, 18, 77, 92, 12, 0, 0, + 32, 0, 73, 68, 65, 84,251,100, 50, 25, 4, 2, 1,114,114,114,144,147,147,131, 25, 51,102,136,142, 31, 63,238,214,167, 79,159, + 79,149, 74,229, 69, 66, 72, 59, 23,170,133,225,231,231,135,217,179,103,139,191,250,234,171,150, 42,149,234,188,211,233, 20,234, +116, 58,204,154, 53, 75,180, 99,199,142,230,110,110,110,103,157, 78,167, 72, 44, 22,195,213, 62,151,132, 16,136, 68, 34, 56, 28, + 14, 97,215,174, 93,207,197,199,199, 7,247,235,215, 79,112,229,202, 21, 20, 20, 20, 8,186,116,233,114, 49, 62, 62,190, 85,223, +190,125, 5, 41, 41, 41, 40, 45, 45,165,174,234, 90,173, 86, 72, 36, 18,240,120,188, 27,226, 45, 22, 11, 26,179,143, 53,205,127, +189,122,245,138,187,116,233, 82,251,126,253,250, 9, 98, 99, 99, 81, 80, 80, 32,236,214,173, 91,220,197,139, 23,219,245,238,221, + 91,144,152,152,136,210,210, 82,151,135,216, 75,165, 82,104,181, 90, 60,246,216, 99,226, 29, 59,118,180,215,106,181,151, 4, 2, +129,216,203,203, 11,147, 39, 79, 22,239,216,177,163,131, 78,167,187,232, 98,147, 33, 31, 0,236,118, 59,102,204,152,161, 80,171, +213,200,204,204, 4,199,113,112, 58,157, 0,128,194,226,194,203, 23, 47,199, 94,121,236,209, 9,253, 42,109, 22,203,201, 51,231, +254,106,217, 60, 40,128, 16,218,252, 22,121,217, 78, 46,151, 95,124,228,145, 71, 62,203,200,200,112,155, 60,121,178, 48, 45, 45, + 13,133,133,133, 16, 10,133,144, 74,165, 55,228,241, 61, 69, 89,164, 39, 56, 12, 76, 55, 88, 37, 18,183, 0,149,210, 55, 20,200, + 56,134, 22, 90, 9,248, 60,190,244,108,138, 73, 1,208,129, 8, 44,240,108,156, 38, 55, 48, 37,223, 42,177,123,180, 81,250, 5, + 4,162,176,176, 16,205, 90,134,195, 44,214,138,255,188, 86,161, 4,105,164,230,223,199,170, 79, 72, 72,136, 79,235,214,173, 81, + 80, 80,128,142, 29, 59,194,221,221,221,157, 16, 50,176,201,121,176,185,185, 4,101,232, 5, 66, 86,129,207,123, 23,118,193, 82, + 92, 51,116,196,167,157,132,119, 83,179,160, 90, 41, 62,181,109,251,183,254,158,129, 17,192,222, 39,161,115,147, 96,211,172,142, + 30, 90,141,100, 87, 83,154, 11, 9, 33, 81, 58,157,238,240,233,211,167,189,164, 82, 41,206,159, 63,143,200,200, 72,172, 94,189, + 90,235,238,238,126,236,110,104, 46,164,148,210, 43,192,158,247, 47, 93,250,114, 75, 82,210,207, 83, 90,181, 26, 49, 57, 52,116, +241,204, 71, 30,153,246,252,243,207, 99,249,242,229,216,181,107, 23,122,245,234,133,233,211,167,219, 51, 50, 50,190,106, 98,179, +224,135, 43, 87,174,156,253,194, 11, 47,220,172,105, 75, 79, 79,127,191,161,117,163,162,162, 2,174, 94,189,154,253,242,203, 47, +119,220,178,101,139, 76, 46,151,163,164,164, 4,159,126,250, 41,230,207,159, 15, 66, 8, 40,165,248,226,139, 47,228, 79, 60,241, + 68,215,164,164,164,236,230,205,155,187,210,125,131, 0,144, 2,144, 87, 7, 5, 0,249,182,109,219, 52,163, 71,143, 86, 87,199, +201, 0,200,216, 64,175, 58,169,211,139,212, 58,230, 63,223, 84,214, 70,220, 28,119,243,127,148,210, 17, 13,105, 52,178,108,143, +112,117,253,218,119,159,254,132,144,163,255, 16, 3,218,249, 4,135,161,244,151, 29,144, 9, 8,100,252,234, 32, 32,224, 37, 95, + 70, 51,169, 16,118, 74,163,154,216,127, 10, 50,153, 12, 50,153, 12,132, 16, 20, 23, 23, 67,173, 86,227,219,111,191,149,174, 91, +183,174,173, 92, 46, 63,169,209,104,150,222,202,176, 0, 64, 98, 98, 34, 58,116,232, 64,126,254,249,103,245,204,153, 51, 5, 0, +144,158,158,142,182,109,219,146,223,127,255, 93,245,234,171,175, 18,137,164,113,101, 89, 36, 18, 97,238,220,185,228,196,137, 19, + 74,185, 92,142,216,216, 88, 24,141, 70,188,250,234,171,130, 63,255,252, 83,169, 80, 40,144,148,148, 4,179,217,220, 40,227,102, +181, 90, 33, 18,137,110, 88,135, 16, 2,155,205, 6,177, 88,236,178, 41,240,242,242,122,187,115,231,206, 59,143, 28, 57,226, 41, +147,201,112,249,242,101,152, 76, 38, 44, 90,180, 72,126,252,248,113, 79,149, 74,133,132,132, 4,152, 76,166, 70,153,182,154,237, + 95,187,118, 13, 33, 33, 33,100,239,222,189,222,211,167, 79,151,214,228,105,104,104, 40,217,183,111,159, 46, 60, 60,124,135,183, +183,247, 91, 13,105,113, 28,135,220,220, 92,196,197,197, 33, 57, 57, 25, 6,131, 1, 5, 5, 5, 40, 47, 47,135,195,225,168,234, + 31, 87, 94,182,119,219,119,123, 46,202,100, 50,121,100,104, 72,224,229,216,248,124,153, 76, 38, 15, 10, 12, 12, 37,228,221, 58, + 51, 67,165, 82, 45,149,201,100, 39,119,239,222,221,238,179,207, 62,147, 20, 20, 20, 32, 61, 61, 29,132, 16, 72,165,210,235,129, +207,231,223,123,151, 31, 66, 8,136, 53, 4,132,116, 60,149, 92,225,209,103,196,163, 34,164, 28, 0, 56, 59,192, 19,160,127,187, + 0,193,174,203, 21, 58, 80,180,131, 5,225,128, 11, 7,159, 16, 2,216, 90, 3,164,243,161,171, 14,207, 94, 99,103,137,178,179, +179, 33, 18,137, 32,145, 72,208,113,192, 67,130,109, 23,237, 62, 32,104, 15, 27,194, 92,210,188,241, 97,234,205,183,223,126, 91, + 81, 91,115,218,180,105, 10,141, 70,243,118,147,205, 85,133,188, 7,156,244,197,184,236,202,160,197,123,243,194,147,243, 43,195, + 65,241, 10, 96,239,112,187, 38,139, 16,210, 95, 42,149,166, 16, 66,122,223,150,185, 82,137, 79,110,223,254,173,191, 71,179, 42, +115, 5,135, 25, 16,202,224,163,117,195,166,151, 30,240,208,186,201, 26,101,178,170,205,213,111,167, 78,157,242,146, 74,165,136, +137,137,129, 72, 36,130, 84, 42, 69,219,182,109,177,113,227, 70,173,135,135,199, 93,101,178,150, 93,186,180,121,105, 92, 92,226, +188,168,168,240, 49, 10,133,199,179,147, 39,107,222,120,227,141,159,119,239,222,253,229,240,225,195, 11,206,156, 57,243, 1,165, +116, 71, 35,143, 15, 33,132,108, 88,181,106,213,179, 53,134,237,141, 55,222,248, 98,247,238,221, 75,135, 15, 31,158,123,230,204, +153,151, 41,165, 27, 26,210, 48, 26,141,187, 23, 44, 88,160, 25, 59,118,108,205,111, 28, 63,126, 28, 95,125,245, 21, 20, 10,197, + 13,203,142, 26, 53, 10, 79, 63,253,180,187,213,106,253,190, 33, 77,111,111,239,232, 83,167, 78, 69, 2, 16, 1,144,212, 24,172, +216,216, 88,183,178,178, 50, 55,165, 82,233,230,235,235,171,170, 49, 89, 99,199,142,117, 19, 10,133,125,152,167,186,129, 58,189, + 72,109,131,227, 74, 92, 83,151,119,213,100, 53,202, 96, 81, 74,143, 2,232, 91,215, 66,182, 34, 61, 36,112, 66,198, 39,144,243, +107,153, 44,112, 16,148,230,163,169, 3,113,107,223, 8,101, 50, 25,164, 82,233,245,154,156,210,210, 82, 16, 66,110,105, 54,106, +140,131, 82,169, 68,101,101, 37,108, 54, 27,164, 82,233,245, 56,135,195, 1,135,195, 1,153, 76, 6,137, 68,210,232, 26, 44,187, +221,142,184,184, 56, 36, 37, 37,129,199,227, 65,161, 80,192,110,183,227,175,191,254, 66,118,118, 54, 4, 2, 1,228,114,121,163, + 12,140,211,233,132, 88,252,207,254,189,118,187,189, 81, 53, 88, 60, 30, 15, 38,147,137, 94,189,122, 21,105,105,105, 16,137, 68, + 80,171,213, 16,139,197, 48, 24, 12,200,202,202,186, 30,215,152,253,171, 89, 86, 38,147,161,162,162,162,166,175,219,245, 56,139, +197, 2, 66, 8,248,124,254, 45,143,143,211,233, 68, 78, 78, 14, 12, 6, 3, 50, 51, 51, 81, 80, 80,112,221,100,113,220,237,207, + 91,121,238,220, 57, 26, 31, 31, 15,139,197, 2,137, 68, 2,169, 84,122,195,167, 64,112, 15, 78,245,246, 81,148, 6,118,225,160, + 2,163, 93, 98,176,137, 52,186,168,104, 32,101, 63,192, 19, 0, 82,119,116,111,211, 2,233,197, 78, 69,130,222, 42, 5,193, 96, +108, 8,117,119, 73,211, 41, 28,104, 40,183, 75,210,108, 90,117, 68,187, 78,208,235,245,144, 72, 36,144, 72, 36,232,220, 43, 26, + 41,133, 78,121,124,118,165, 28, 20,131, 92,210,252,187, 60,181, 84, 42,149, 61,122,247,238, 77,106,107, 14, 27, 54, 12,132,144, +182,132,144,240, 70,165,127,125, 43, 49,108,242,238, 16,210, 23,227,115, 77,126,187, 98,205,161, 35,199, 60,228,177,230,215,252, +240, 43,185,230, 96,112,142, 57,160,182, 78, 77, 53, 89,132,144,126, 42,149,234,231,245,235,215, 7, 75,165,210,253,132,144, 38, +221, 0,149, 50,254, 39,111, 62,251,168,191,123,141,185,178,155, 0,129, 12, 16,202, 0,129, 12, 62,222, 94, 88,244,244, 64, 15, +185, 84,248, 67, 35,140,234,182, 13, 27, 54,104,111, 54, 87, 53,161, 99,199,142,120,235,173,183,180, 30, 30, 30, 91,255,229,103, +128, 65,110,110,110, 91,162,163,163, 79,229,168, 84, 79,231,118,234, 36,254, 77,163, 41,125,176,180, 84, 19, 20, 27,107, 11, 3, + 46, 3,248, 40, 51, 51,115,136,171,230,138, 16,242,136, 70,163,137,137,142,142,182,169, 84,170,140,213,171, 87, 63,243,220,115, +207, 97,249,242,229, 88,176, 96,193,103, 0,158,162,148,190,158,153,153,233,119, 43,115, 5, 0,121,121,121,147, 94,123,237,181, +130,130,130, 2, 0, 64,219,182,109, 81, 82, 82,130, 57,115,230,224,197, 23,171, 6,185,118,232,208, 1,148, 82,232,245,122,172, + 92,185, 82,159,151,151,247,248, 45, 30, 40, 51,119,236,216,209,213,102,179, 5, 84, 55, 3, 74, 74, 74, 74,212, 69, 69, 69, 42, +155,205,166,224, 56, 78,225,230,230,166, 4, 32,127,236,177,199, 4,113,113,113,145, 14,135, 35,155,121,170, 27,204, 75,189, 94, +164,137,236,189,157,154,170,186,106,192, 92,174,172,168, 22, 34,181, 63,107,195, 39,184,148,113,238, 24, 60,162, 58,221, 80,123, + 37,231, 19,200,212, 26,164,100,166, 67, 4, 18,119,187, 6,171,198,100,197,199,199,227,193, 7, 31, 52,189,243,206, 59,151, 43, + 42, 42,122, 20, 23, 23,207,119,197, 12,104, 52, 26,156, 56,113,130,142, 27, 55,174,108,237,218,181,142,154,184, 83,167, 78,209, +129, 3, 7,150, 47, 92,184,144,222,220, 44,231,138,193, 90,187,118, 45,125,224,129, 7, 74, 79,159, 62, 77, 21, 10, 5,228,114, + 57,214,174, 93,235,232,219,183,111,233,239,191,255, 78, 21, 10,197, 63,158,118,110,101,138,106, 12, 86,109,211,195,227,241,192, +113, 92,163, 12, 86,126,126,254,187, 87,174, 92,153, 48, 96,192, 0,125, 92, 92, 28, 85,171,213,208,104, 52,152, 55,111,158,169, + 67,135, 14,249,151, 46, 93,186, 30,215,152,166,178,154,237,171, 84, 42,196,197,197,209, 17, 35, 70,228,127,244,209, 71,230,154, +184,216,216, 88, 58,116,232, 80,125, 92, 92,220,132,188,188,188,133,183,170,193, 74, 78, 78,190, 94, 99,101, 54,155, 81, 80, 80, +128,204,204,204,235, 77,132,149, 10,245,144, 71, 39,142,108, 95, 89, 89,105,138, 79,188,154,209,182, 77,164,119,101,101,165, 41, + 61, 35, 35,145,210,183,235,116, 97,229,229,229,243, 43, 43, 43,123, 44, 94,188,248,242,132, 9, 19, 76, 9, 9, 9,255, 48, 87, + 82,169,244,222, 52, 88, 60,206, 7,132,246,254,227,170,209,109,224,200,135,197, 36,239, 12, 96, 51, 2, 18,119, 64,226, 14,129, +194, 19, 67,251,116,224,111, 62, 85,230, 3,202,245,132, 72, 18,112, 75, 77, 33,213, 1, 92,159, 95, 18,205,238,189,199,207, 22, + 23, 21, 21,129,207,231, 95, 55, 67,114,133, 2, 15,142,121,140,247,197, 25,139, 15, 64,123,129,240, 3, 92,221, 93,177, 88, 60, +247,205, 55,223, 20, 21, 23, 23,131,199,227,253,173, 41,151, 99,230,204,153, 18,181, 90,189,192,229,180,239,140, 20, 65, 40,233, + 14,142,190,152,144, 87,233,183,251, 82,101,232, 43, 75, 55,201,162, 58,116,197,140,254,222,178,165,251,242, 35, 47,102,155,130, + 1,231,203,112, 88, 59, 55,214,100, 17, 66,250,168, 84,170,189,231,206,157,147, 15, 27, 54, 12, 43, 87,174, 84,200,100,178,253, +132,144, 70, 95,240, 43,140,206,231, 22,174,251, 90,127,233,131,193,128,173,162,202, 88,213, 10,249, 70, 14,111,109, 58, 92,106, +183,211, 71, 93,213,172,172,172,156,250,212, 83, 79, 21,254,240,195, 15,255, 48, 87, 82,169, 20,169,169,169, 88,188,120,113, 81, + 81, 81,209,227,255,166,185,122,238,185,231, 22,103,101,101,133,253,242,203, 47, 2,131,193,224,189,234,243,207, 75,119,150,150, + 22, 45,141,141, 77,120,189, 77,155,144,121,237,218, 61, 94,223, 20, 14,245,153,171,103,159,125,118, 91, 86, 86, 86,199, 95,127, +253, 85,104, 48, 24, 2,158,125,246, 89,172, 88,177, 2, 11, 22, 44,216, 8, 96, 70, 77,239,104, 87,177, 90,173, 9,197,197,197, + 35, 6, 15, 30, 92, 82, 92, 92,140,118,237,218, 97,228,200,145,240,241,241,129,159,159, 31, 70,143, 30,141,208,208, 80, 20, 22, + 22,226,209, 71, 31, 45, 50, 24, 12,131, 41,165, 13,142, 66, 47, 44, 44,188,182,117,235,214,171,207, 61,247, 92,167,172,172,172, + 8, 0,158,229,229,229,138,242,242,114,137,213,106,149,185,187,187,187,119,232,208,193,107,250,244,233,202,243,231,207, 71,102, +103,103,151, 3, 72, 99,182,234,186,169,169,215,139, 0, 48, 84, 27, 29,235, 77,159,134, 91,252,231,234,186,117,126,119, 97,185, + 91,215, 96,213,135, 13,120,235,171, 29,155,205,226,192,214,208,132,181,135, 92, 42,133, 76, 44,134,204,221, 19, 22,142,195,231, +169,121,166, 10, 74, 23, 52, 33, 35,175, 55, 15, 74,165, 82, 24,141, 70,204,158, 61,219, 60,113,226,196,146,212,212,212,153,101, +101,101,237, 41,165,151, 92, 49, 3, 21, 21, 21,120,231,157,119, 42,231,205,155,151, 92, 94, 94,222, 81, 36, 18,217,109, 54, 27, +222,124,243, 77,243,172, 89,179,210, 74, 74, 74,186,136, 68, 34, 91, 99,111,182, 66,161, 16, 2,129,192, 94, 90, 90,218,241,181, +215, 94, 75, 90,188,120,113,165, 72, 36,130, 72, 36,178,151,149,149,181,157, 63,127,126,194,252,249,243, 43,133, 66, 97,163,106, +198,106,106,132,110,110, 34,172, 93, 83,228, 42,118,187,253,112,126,126,126,251, 23, 94,120,225,194,218,181,107, 77, 74,165, 18, + 18,137,196,154,159,159,223,238,153,103,158,185,184,114,229, 74,147, 82,169,108, 84, 13,150,205,102, 3,199,113, 88,191,126,189, +233,133, 23, 94,184,104, 48, 24,218, 85, 23, 72,172, 93,187,214,244,204, 51,207, 92,208,235,245,237,237,118,251, 97, 23,106,235, +156,101,101,101, 16, 8, 4,136,141,141,181,136, 68, 34,240,120, 60, 92,187,118,237,186,193,242,240,240,136,108,223,182, 77,248, +215,219,118, 28,149,137, 36,146, 30, 93, 59, 71, 36,167,165,103, 81, 74,210,110, 81,134, 46, 85, 84, 84,180,207,204,204,156, 57, +109,218,180,146, 87, 94,121,197,108, 52, 26,111,184,225, 8,133,194,123,239, 42,196,131, 28, 4,178,171,249, 22,149,148,231, 32, + 72,252,169,202, 92, 73,221, 0,169, 59, 32,117,135,191,127, 0,206,164,154, 84,224, 65, 12,167,221,219,133, 19, 82, 1, 2,121, +172, 30, 42,161, 88, 70,242,242,242,174, 27,161,154, 16,220, 58, 2,231,211,141, 74, 16, 42, 1, 31,141,153, 74,100,132,167,167, +167, 32, 55, 55,247, 31,154,145,145,145,124,187,221, 62,216,101,165, 28,167, 47,192, 61,151,152,111,246,251,241,162, 41,244,165, +165, 95,200,100,206, 18,224,220, 58, 68,181,244,195, 75,227, 59,136,223,216,101,136, 58,155,102,106, 9, 1,157, 9,206,168,109, +132, 49,232,173, 82,169,246,159, 61,123, 86,174, 82,169,144,156,156,140,174, 93,187,226,211, 79, 63,149,203,229,242,125,132,144, +254,141, 57, 76,167,242,104,186,177,220,217, 99,238,142,140,188, 75,185,142, 27,204,149,161,130,226,169,247,119,151, 20,151,153, + 31, 58,153,113,235,243,168, 86,153,191, 80, 82, 82, 50,104,193,130, 5,133, 6,131,225,134,178,158,158,158, 94, 99, 4,250, 83, + 74,227,254,173,226,169,209,104, 38, 47, 93,186, 20,103,207,158,197,176, 97,195,112,236,216, 49, 20, 21, 21, 97,251,254,253, 87, +183, 94,189,250,122, 77,159,172,186,166,112,168, 15,181, 90,253,202,210,165, 75,113,238,220,185,235,154,133,133,133, 88,186,116, +105, 22,128, 89,141, 53, 87, 53,232,245,250, 51, 9, 9, 9,131,219,181,107,247,215,250,245,235,179,124,125,125,185,233,211,167, +227,169,167,158,130, 86,171,117,174, 89,179, 38,163, 79,159, 62,177, 73, 73, 73,209, 21, 21, 21,151, 93, 56, 62,180,160,160,224, +196,103,159,125,118,114,192,128, 1,138, 41, 83,166,120,239,218,181,203,211,100, 50,249,137, 68, 34,157,213,106, 21,199,199,199, + 11,118,238,220,233,251,215, 95,127,165, 86, 86, 86,158,105,234,190,223,135,156,173,174,141,250,245,166,207,179,183,248,207,213, +117,235,251,126,171,229, 26, 54, 58,183, 10,147, 91,226,157,153,109, 84,166, 63,167,116,167,121,211,123, 83,253,195, 17,244,120, + 63, 15, 58,173, 21,169,152,218,196,105, 26,156, 78, 39,213,235,245, 84,175,215,211, 69,139, 22, 57,100, 50, 89,165, 92, 46,111, +244, 52, 13, 74,165,210, 24, 18, 18, 82,174,209,104,174, 79,211,160, 82,169,140, 97, 97, 97,229,110,110,110,215,167,105, 80, 40, + 20, 70, 74, 41, 85, 42,149, 46,141, 34, 84,171,213,165, 70,163,145,202,229,242,154,105, 26, 68, 26,141,230,179,144,144,144,114, +165, 82, 89, 51, 77,131,208,221,221,253,147,208,208,208,114,149, 74,101,116,113,132, 94,102, 86, 86, 22,205,202,202,162,205,154, + 53,203,169, 29,159,158,158, 78,211,211,211,105, 64, 64, 64,147,166,105,208,106,181, 43,186,116,233, 82,164,213,106, 11,107,197, +173,236,210,165, 75,113, 77,156,139, 35,255, 10, 59,119,238, 92,172,213,106,175, 79,211,160,213,106, 11,171,181, 27, 53, 77,131, + 76, 38,155, 33,149, 74,115,164, 82,105,142, 68, 34, 89,220,188,121,243,252,239,190,251,142,174, 89,179,134,170, 84,170,170,105, + 26, 34, 71,245,104,221,243,241,215,181,145,163, 95,185,157,105, 26,228,114,249, 26,153, 76, 86,185,100,201, 18, 71, 69, 69, 5, +181,219,237,180,250,226,117,111,141, 34,252, 52,180, 53,253, 56,124,119,210,194,224,248, 23,250,202,205,151, 23,181,167,244,251, +177,148,238,123,138,210,195,115,233,153,141,211,105,207, 96,137,243,196,156,102,137,244,147,176, 31, 93,154, 90,225,211,182,173, +233,199,225,251,174,190, 27, 28, 63,181,143,159,249,243,143,214,208,211,167, 79,211,216,216, 88,154,156,156, 76,247,253,244, 29, +237,217, 82, 94,165,249,113,248,238,198, 76,215, 0,160,151, 68, 34, 49,174, 94,189,154,158, 58,117,234,186,230,238,221,187,169, + 92, 46, 55, 1, 46,142, 66, 6, 8,221, 16, 57,214,241, 81,216,241, 5, 3,149,198,194,159,231, 82,122,121, 51,165,159, 70, 81, +250,101, 55, 74,191, 27, 78,233,158,199,233,169, 53,227,105,175, 96,145,157,126, 18,246, 7,221, 20, 57,208,213,253, 20, 10,133, +101, 63,252,240, 3,205,201,201,161,199,142, 29,163,231,206,157,163, 87,174, 92,161, 25, 25, 25,116,239,222,189, 84, 40, 20,154, + 1, 52,122,148, 98, 55, 29,130,162, 67, 68,185, 23,151,245,162,116,215,163,212,176,117, 50, 29,209, 70, 85,212,189,153, 96,192, +109,140,182,234,224,233,233, 89,176,119,239, 94,154,154,154, 74,143, 30, 61, 74,189,189,189, 11, 0, 68,253,219,229, 51, 58, 58, +250, 52,165, 52,102,216,176, 97, 49, 0, 14, 68, 71, 71,199,164,164,164,196,116,237,218,245, 20, 26,152,194,161, 33,205, 7, 31, +124,208, 70, 41,165,195,134, 13,163, 0,114,162,163,163,105, 74, 74, 10,237,218,181,171,245, 14,141, 94,227, 3,120, 92, 40, 20, +126,238,225,225,241,187,187,187,251, 97, 62,159,255, 41,128, 41,141,185,222,213,161,233, 15, 32, 18, 85,243, 37,117,174,254,238, + 7, 54,130,240,254, 24, 21,233,234,130,227,131,209,235,137,150,228,232,164, 22, 40,127,180, 5,140, 79,182, 34,199, 31, 10,198, +128,166,188,109,187,198, 96,237,217,179,135, 54,107,214,172, 66,165, 82, 29, 7, 16,210,148, 55,120,187,187,187, 31,224,243,249, + 19,234,136,123,184,118,156, 70,163,137,115,115,115, 43, 85,171,213,201,174,236,167, 90,173,190, 34,151,203, 43,212,106,245,149, +155,166, 4, 24,237,233,233,185,247,166,184, 81, 55,199,213,151,118, 31, 31,159,204,156,156, 28,106, 48, 24,104, 96, 96, 96,206, +205,198, 43, 47, 47,239, 6,227,213,216,183,151, 11, 4,130, 1, 90,173,118,231,173,226, 26,210,212,233,116,223, 11, 4, 55, 94, +252,235,138,107,202, 91,214, 1,132,250,251,251,231,175, 90,181,138, 42,149,202,252,218,255,133,245,125,242,205,211, 87,141,101, + 79,189,246,241,119,218,136, 49,109,155,242,230,118, 0, 33, 42,149,234,120, 80, 80, 80,197,111,191,253,214,160,193,194,127,245, +173,245, 59, 34, 68,116, 99, 68, 47,250, 73,196,222, 43,111, 7,253,245,120, 55,133, 37,102,213, 48, 74, 15,207,165,167, 62,126, +138,246, 8, 22, 87, 25,161,141,225,251,233, 23,161,125,233,186,150, 98,151, 52, 63,111,213,135,110, 12,223, 31,255, 86,208, 95, + 99, 59,105,173,219, 54,111,164,215,174, 93,163,187,119,110,165,221, 91, 84,155,171, 79, 34, 14,209,143, 35, 30,112, 73,179, 14, +147,181,105,211, 38,122,237,218, 53,250,227,143, 63,186,100,174,110,208, 4, 8,253, 56,114,140,227,163,176,227,243,163,149, 37, + 79,117,147, 90, 30,237, 32,182,142,142, 18,217, 6,181, 22, 57,122, 6, 9,156,237,125,121, 92,132, 22,116, 80,152,204, 66, 63, + 9,251,131,126, 18, 49,216,213,253, 20,139,197, 25,168, 53, 39,206,205, 65, 34,145, 24,234, 51, 88,183, 58,238,221,116, 8,138, + 14,149,228,254,182,112, 0, 29,217, 78, 85,232,138,185,186,149, 38,128, 14, 94, 94, 94, 5, 95,126,249, 37,213,233,116, 6, 87, +204,213,255, 71,249,212,104, 52, 91,140, 70, 99,204,193,131, 7, 99,162,163,163, 99,182,108,217, 18,115,252,248,241, 24,185, 92, +190,165,190, 41, 28, 34,128,193, 13,105,170,213,234,152,242,242,114,122,240,224, 65, 26, 29, 29, 77,183,108,217, 66,143, 31, 63, + 78,229,114,121,204, 93,117,110, 50, 77, 22,154, 98,176,238,228, 1, 0, 64,167, 76,153, 98,146,203,229,122, 0,163,238,167,194, +231,229,229,245,167, 78,167,211,235,116, 58,189, 86,171, 61, 95, 87,188,151,151,215,249,123,249,196, 3, 16, 42, 18,137,210,133, + 66, 97, 98,237,120,109,228,168, 30,173,122, 77, 93,160,139, 26, 53,244,118,247, 19,192, 40,185, 92,174, 31, 55,110, 92,197, 61, +103,176, 40, 5, 93,215, 82, 92, 99,178, 46, 47, 8,186, 50,178,141,220,246,233,203,131,104,143,230, 55,153,171, 47,131, 36,141, +210,172, 54, 89, 23,222, 8,188,242, 64,168,210,177,116,193, 75,180,123, 11,217,141,230,170, 49,154, 55,153, 44,185, 92, 94,254, +246,219,111,187, 92,115,245, 15,205,207,195, 2,233,199,225,223, 84,153,167, 91,133,136,207,233,135, 97,129,119,203,113,239,166, + 67,208,131,161,146, 56, 87,107,174, 92,209, 4,208,193,221,221,253, 47, 87,107,174,254, 63,210, 14, 96,208,204,153, 51, 99, 82, + 82, 82, 98,146,147,147, 99,142, 31, 63, 30, 51,102,204,152, 24, 0,131,234,154, 39,203, 54,110,156,165, 3,143,247,210, 45, 52, + 31,153, 57,115, 38, 77, 73, 73,161,201,201,201,244,248,241,227,116,204,152, 49, 20,192, 35,204,184, 48,131,117,183,134,127,165, + 7,176, 74,165, 58,255,195, 15, 63, 28,168,172,172, 92, 76, 41,181,220, 79,141,200, 6,131,161,103, 99,226,239,209,142,140,137, + 0,130,254,209,105, 63,110,215, 73, 0, 39,239,208, 54,118, 19, 66, 14, 29, 56,112,224, 13,149, 74, 53,228,158,203,196,217, 73, + 86,172,111,117, 14, 98,241,178, 54,254,242,121,111, 14,163,100,233,193, 63,131,150,143,243,206,232,217, 74,145, 10, 33,247, 62, +136,229, 12, 30, 79,179, 52, 82,243, 12,100,246,101,237,155,201,231, 45, 25, 13,242,254,254,205, 65, 43,198,120,102,244,108,169, +204, 0,197,251,144,152, 78, 54, 74,243,198, 99,114,130, 16, 50,116,213,170, 85, 95,153, 76,166,167, 41,165,191, 55,254,226,193, +203, 67,133,253, 45,216,249,109, 64, 33,110, 96, 99, 38,240, 16,139, 66,158,254,110, 57,100,167,242,104, 58,128,168, 59,124, 46, + 93, 0, 16,113,151,157,223,135, 8, 33,216,186,117,235,228,240,240,240,150,241,241,241,201, 38,147,233, 27, 74,233,161,218,125, +149, 8, 33,123,222,191,116,169,226,195,248,248, 19, 86,142, 59,113, 11,205,237,213,154,175,132,135,135, 71,197,199,199,199,153, + 76,166, 85,148,210,237,172,107, 18,227,110,229, 95, 49, 88,101,101,101,157, 88,214, 51,254, 31, 46,244, 22, 0,111, 86,135,123, +143, 90, 38,171, 83,160,108,246, 15, 51,101, 38, 80,146, 5, 33,183,166,209,230,170, 14,147,213, 53, 72,246,226,143, 51,100, 38, + 80,228,129,226,131,219, 49, 87,181, 77, 22,128, 22, 77, 22, 24, 31,111, 3,144, 10, 66,210,240, 14,234,239, 28,253, 14,174, 63, +102, 51,254, 29,147, 5,224,208, 45,150,161, 0, 14, 87, 7, 87, 52,183, 3, 96,134,138,193, 12, 22,131,193,248,127, 50, 89, 59, + 35,207,162,128, 63, 7, 60,180, 0, 28,233,168,112,228, 97,118,154,245, 54, 53, 79,163,128,188, 0, 62, 66, 33,118, 36,193,104, +205,195,204,219,208,252, 31,220,193, 81,213, 55,170,110,222,102, 69,131,193, 96, 48,131,197, 96, 48,110,135,170, 90,157,172,234, +112,247,106, 50, 24, 12,198,125, 4, 1, 16, 93,207, 3,226,175, 46,139, 16, 18,221,132, 7,208, 95,153, 38,211,100,154, 76,147, +105, 50, 77,166,121,127,105,222, 74,187, 49,254,227,174,230,223, 24, 69,200, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,121, + 47, 7, 30, 24, 12, 6,131,193, 96, 48, 24,119,148,127,181, 15,150,220, 43,212, 23, 2, 94, 59,194,209,112, 0,160, 60,114, 5, + 14,238,146,169, 32, 49,247,118,181, 85,254, 97, 30, 20,226, 29, 4,214, 9,229,217, 9, 69,183,171,215, 54, 76, 51, 78,231,165, +154,156, 87, 88,250, 85,236,149,242, 93,141, 89,215,205,173,185, 70,234,225, 62,222, 98,179,183, 17,139, 68, 25,182,146,178, 79, +139,138,146,202, 89,241, 99, 48, 24, 12, 6,227, 62, 51, 88,205,163,250,156,149, 74,101,193, 0,192, 81, 10,142, 2, 21,101, 37, + 49,185, 73,103, 7, 3,128, 54,184,211, 65,161, 84,221,137,163, 85,255, 59, 57,192, 97, 51,167,150,166,157,234,226,202,134,149, +222, 97, 99,163, 7, 69,143, 27, 49, 98,120, 88,219, 54,109, 91, 1,192,229,216,203, 73, 63,255,188, 55, 65,233, 29,246,131, 49, + 63,225,199,219, 73, 24,133,244,189,206,157, 59,244, 62,119,238,252, 66, 0,207,222,110, 70,121,122, 42,103, 31,250,126, 78,223, + 7,199,173, 84, 0,104,148,193,146,122,184,143, 31, 61,114, 72,135, 87,159,159,201,123,106,206,146,224,179, 39,142, 44, 87,249, +181, 41,161,156,253, 80,133,254,225, 63,234,123,161, 49,131,193, 96, 48, 24,140,123,204, 96, 73,165,178,224, 83, 71,126,246,248, +241,120, 38, 0, 32,186,163, 15, 94, 95,180,126, 16, 33, 36, 1, 0, 70, 61,245, 78,232,194,249,207,227,207,184,124, 80, 74,209, +161,181, 39,134,142,158,224,210, 70,101, 62,145, 93, 30,158, 56,113,210,156, 57,175,140,186,118,237, 90,218,182,109,219,254, 0, +128, 62,125,251,182, 94,178,100,201,196,149,238, 30, 18,153, 79,100,118,101, 94,252,217,166, 36, 74,230,223,202, 63, 50,164,221, +228,111,191, 88,207,235, 63,248,161, 71,101,254,173,150, 86,102, 39,101,187,178,174, 86,171,125, 65, 40, 20,106, 0,128,227,254, +246, 61, 45,155,241,125, 0,192,225,228, 84, 30,254,225,229,124,145,212, 41,145,136,226,203,141,198,175, 74,179,226, 63,111, 72, +211, 98,183, 71,189, 56,235, 9,222,133,228, 66, 4, 71,245,225,175, 89,250, 6, 56,167,221,253,165,249,139,198,159, 59,253, 45, +128,183,143,178,162,200, 96, 48, 24, 12,198,125, 96,176, 0, 64, 41, 19, 32, 33, 37, 15, 0,224, 38, 3,102,207,152,138,194, 2, + 67,168,213,193,225,201,169, 83,112,254, 74, 46, 18, 82, 13,160,148, 34, 52, 64,238,242, 70,249,224, 58, 63, 57,237,201,126, 7, + 15, 29, 58,243,230,130, 55,191, 38,164,106,246,238,141,159,126,214,227,173,183,223,122,122,202,212, 41, 3,119,238,220, 25,135, + 91,189,169,186,190, 68, 17,213,250, 21,203, 22,139,179, 10,204,230, 23,230,204,227, 94,121,249,133, 53, 0, 30,114,101, 93,161, + 80,168,201,202,202, 82,242,120, 55,118, 79,123,127,241,188, 99, 3,199,173,188,154,150, 81,114,225,224,238,221, 93, 34, 35, 35, +145,149,157,215,107,249,218, 79,218,251,182,234,242, 68,121, 89,229,184, 10, 67,124,157,179, 70, 75,132,194,184,119,151,127,220, +129,115,107,205,123,253,233, 97,136,106,229,135,236,252, 18,244, 29, 60, 74, 16,115,246,236, 32, 0,204, 96, 49, 24, 12, 6,131, +113, 15,193, 3, 0, 66, 72,157, 19,246, 57,157, 20, 9,169,185, 72, 72,205,197,153, 43, 6,216,168, 16,107,150,191,139, 85, 75, +223, 70, 81, 37, 15, 63,254,153,137,196,212, 60, 36,166,230,161,160,216,248,143,245,111, 30,106,185,106,153,188,227,154, 53,154, + 21,131,250, 42,250,123,184,187,187, 95,141,251,186,226,173,151,245, 17,239,190,152, 41, 18, 90, 37, 89, 10,165,162,231,142, 29, +223, 69,234,180,222, 10,165, 82, 53, 87, 17,208, 97,147,155, 91,123, 77, 67,154, 55, 35,215, 69,140, 26, 53,124,200, 0, 31, 31, + 29, 55,115, 77,204,149, 54, 17,225,246,144,214, 33,189,228,186,208, 81,245,173, 83, 91,147,227, 56,240,120, 60,232,245,122,228, +228,228, 32, 37, 37, 5,137,137,137,200,204, 76,211,115,148, 10,157,224,120,190,190, 1, 16, 8,196, 8,110, 30,132,143,215, 44, +149, 47,122,231,245,174, 82,133,120, 23, 33,132,212,165,105, 46, 42,222,185,239,192,161,236,253,219, 62,118, 2, 64,126,177, 17, +135,207, 94,195,249,248,204, 70, 29,172,255,197,208, 85,166,201, 52,153, 38,211,100,154, 76,243,110,208,172,207,139,252,167, 13, + 86,125, 36,101, 22, 33, 33, 37, 15,157,194,253,209,170,185, 47,206, 36, 22,227,155,195,153,216,116, 48, 29,135, 47, 26,192, 9, + 84,200, 43, 3,174,166,233,113, 53,189,160,161,121,149, 1, 0,124,137,240,225, 23, 95, 44,157,211, 54,178,172,251,145,253,179, +225,175,189, 26,249,218,107, 37,179,249, 18,225,195,238,205, 84,219,230,205,121,105,178, 74, 46, 23, 91, 45, 86,180,108, 17, 36, +125,254,185,217, 79, 16,119,201, 54, 87, 19,163, 14,136,116,151,200,100,159, 47,122,103,174,228,131, 31,175,102, 84, 88, 81,241, +195, 73,125,242, 43,243,222, 42, 18, 8,165, 31,171, 3, 34,221, 93,213,178,219,237,176, 88, 44,176, 90,173,176,217,108,200,206, +252,107,212,111, 63,190, 58,184, 69, 51,143,193, 18,169, 20, 20, 64, 89,165, 3, 41,185, 38, 60,240,224, 64,126,167,142, 29,163, +148,190, 17,211,234,210, 42, 41, 73, 43,229, 40, 95,245,243, 79, 91,249,223,253,114, 1, 95,255,124, 22,187,126,191,128, 51, 71, +247, 59, 40,103,191,254, 58, 9,149, 95, 72,168,202,175, 93,186,202,191,189,254,122, 8,104,123,142, 61, 7, 48, 24, 12, 6,131, +241,223,162,222, 38, 66,179,185, 50,245,161,135,167,192,215,219, 71, 57,186,255,227,162,152,164, 18, 24,114,211,113, 45, 49, 22, + 38,179, 29, 34,247, 22,128,212, 7,205,131,131,112, 41, 97,151,109,221,138,189, 70,206, 97, 73,173, 79,111,244,104,191, 0, 95, +173,130,183, 98,121,224,169,196,132,226, 78, 91, 23,124,137, 73,147,148, 94, 43,150, 7,158, 74, 75, 86,240,228, 82,218,243,137, +169,143, 18, 30,161,120,237,181, 57, 24, 61, 98, 8,158,124,226, 49,242,213, 87,155,187,187,154, 24, 14,194, 15,231,191,241,174, + 88, 95,226,176,158, 73, 52, 90,228, 10,153,236,196, 85, 99, 69, 84,112,160,108,216,184,199,115,246,238,248,252, 3, 0, 83, 93, +209,170, 49, 86,118,187, 29, 54,155, 13, 0,156, 0,192,227, 85,125, 22,150, 91,145, 95, 98,129,190,196, 2,135,147,195,184,135, +167,202,206,158,187, 56, 21, 64, 61,253,177, 56,206,238,176,227,135, 95,206, 35,251,236, 78,142,240,248,165, 53,157,220,107,204, +149,143, 79,224,177, 17,227, 30,211,138,165, 85,205,173,229, 21, 22,124,245,201,114, 86, 74, 25, 12, 6,131,193,184, 87, 12, 86, + 90,220, 31, 93, 0, 32,172,203,224, 66,165, 84,224, 33,224, 17,232,179,146,240,213,202, 23,192,113, 20,195,158, 94, 1, 85,176, + 15,100, 34, 62, 44,198, 66, 99,225,181, 35,158, 13,109,136, 16,251,192, 13, 27,179,131,159,153,213, 82,189,117,171, 81, 8, 0, + 91,183, 26,133,179,102, 54, 83,127,180, 49, 53,184, 91,239, 78,160, 78, 39, 70,140,126, 8, 15, 63,242, 48,210,242, 76,248,254, + 88, 6, 42, 42,173, 46,189,255, 76,174,141,104,239,237,231, 63,228,197,199,135, 40, 4,124, 66, 66,130, 52,252, 76,131,221,193, +231, 11,157,123,206,150,230,140, 27,247,136,215,225,125,223, 13,144,107, 35,218,155, 12,127, 93,188,149,158,197, 98,129,211,233, +132,197, 98,129,221,110,135,135, 87,139,125, 3, 31, 90,153,149,155, 87,190, 55,175,216,220,173,194,238,128,190,196,130,252, 18, + 11, 74, 42,108,240, 81,185,195, 97,183,182,173, 79,143, 82,250,245,152,135,166, 60, 6,128, 71,120,142, 47,203,115,254, 74,172, +249,175,198, 92, 13, 25, 61, 73,123, 44, 38, 9,215,206,237, 47,166,156,195, 94,149,113, 28,123, 85, 9,131,193, 96, 48, 24,255, + 49,120,127, 27, 32, 66,235,107,255,204,214, 23,193, 83, 41,128,214, 47, 24,147, 95, 88, 5, 0,112, 58,237,160, 20,112, 56, 93, +155, 97,128, 82,225, 47,207,206, 10, 78,109, 30, 76, 74, 39, 79,146, 87, 2,192,228, 73,242,202,230,193,164,244,217, 89,193,169, +229,102,165,205,225,116,226, 68, 92, 62, 86,124,251, 23,222,218,124, 25, 7,206,185, 62, 29, 22, 95, 44,154,181,124,217, 82,145, +128, 79, 72, 92,186,209,152, 85,232, 48,242,133, 66,155, 92, 46,166, 86, 42,176,164, 21,208,194, 7,199, 60,113,141,199, 39,211, + 26,210,169, 25, 57, 88,211, 68, 88, 83,131, 69, 41,165, 4,224, 56,226,116,102, 21,152,145,105,168, 68,102,254,223, 65, 95,108, +169,183,133, 84,229, 23, 18,170, 81, 43, 15,184,187,169,159,112,211,168,167, 42,100,238, 7, 85,126, 33,161, 55,155,171, 83,113, + 57, 72,186,240,171,222,105, 51, 77, 44,207,190,168, 43,207,190,168, 43,207,186,220,153, 21, 83, 6,131,193, 96,220, 15, 52,228, + 69,254,147, 6,139, 82, 74,106,194, 63,141, 17,112, 53,189, 0, 98, 1,135,128,230,173, 64,107,217, 8, 10,192,225,116, 45, 31, +118,237,202,201,106,217,186,130,155, 59, 55,163, 71,155,182,158,151,102,205,108,118,165, 77, 91,207, 75,115,231,102,244,104,217, +186,130,179, 59,132, 78, 90, 61,223, 86,205,220, 90,213,211,241,187,154,148,174,237, 35, 91,240,223,221,122, 53,227,153,143, 18, + 19, 68, 34,145, 61,192, 75, 78,130,116,114,126,160, 86, 38,182,216,121,150,208,168,142, 86,240, 72, 71, 87, 12,150,213,106,189, + 33, 20, 26,146, 70, 29,250,126,206,104,127,157,251,227,217,134, 74,100,228,155,144,105, 48, 33,195, 96,130,201,226,192,229,191, +146, 1,190, 40,182, 46, 77,181,202,227,224,182,111,190, 14,108, 31,209,210, 59, 50,180,185,247,231,155,191, 14,148, 74,221, 14, +170,252, 66, 66, 3,131,195, 98, 78,255,250,157,246, 84, 92, 14,210, 19,206,229, 57, 44,101,219, 42,244, 87,126, 99,167, 25,131, +193, 96, 48,238, 39, 26,242, 34,255, 69, 92,154,201, 61, 40, 64,135,211,177,169,104, 27,222, 2, 26,181, 10, 87,146,178,192,231, + 9,193, 35,128,221,225,186, 9,162, 54,251,183,171, 87,107,144,158,170,224,125,244,113,106,240,179,179,130, 83, 87,175,214,156, +164, 54,251,183, 0,166, 80, 90,245,110,196,154,137, 77,157,141,152,126,147,114,246,102, 58, 15, 57,255, 92,114, 69, 33,143,199, +183,120,106,164,156,167, 70,194,243, 84,137,133, 34, 33,159,115, 80,158, 45,192, 59,216, 76, 57,174,189, 43,122,181,155, 8,157, + 78, 39, 8,225, 57,171, 13,152, 34,179,176, 18,165,102, 62,244, 37, 22, 20,151,219, 16,226,175,192,175,135,119,154,156,246,202, +173,117,105,241,133, 34, 77,171,224, 0,188,254,222,106, 84, 90,156,184,154,109,132, 72, 34,241,209,249, 68, 93,156,242,204, 60, +201,243,159, 38, 97,218, 0, 79,188,252, 71, 82,182, 73, 47,157,199, 78, 51, 6,131,193, 96, 48,238, 3,131,165,148, 75, 65,249, + 82,252, 17,147,132,176,200,118,216,188,251, 12, 90,183,237,142,220,114, 7, 40,120,183, 28, 61, 88,195, 43,243, 76,231, 1,156, + 31, 61,218, 47, 96,236, 88,255,129,148, 10,127,249,232,147,210, 44, 0,248,120,123, 63, 80, 0, 28, 71, 65, 41, 64,185, 42,163, +229, 50, 68,144,158,154, 91,214, 60,216, 71,129,248, 44,155, 69, 33, 17,241,220, 21, 98,190, 86, 35, 22,137, 4, 2, 56, 41,177, +228,230, 38, 89, 8,144,230,138, 92, 77,211, 96,205,167, 92,233,187,239,193, 49, 43, 12,105, 25,165,231, 66,138, 76,237, 75,109, + 98, 80, 10,132,248, 43, 78,124, 54,108, 0, 0, 32, 0, 73, 68, 65, 84, 16,123,106,175, 83,159,125,237,106,165, 62,225,147,186, +180, 56, 14,124,155,131,195,197,228, 82,148, 84,216, 81, 98,180,161,215, 3, 35, 69,189,162, 71,225,143,216, 2,112, 14, 59,150, +127,182,183,220, 73,237, 15, 83, 26,111,103,197,146,193, 96, 48, 24,140,255, 54, 46,189,236,217,201, 81,120,121,122, 64,170, 80, + 35, 85,111, 67, 57,241, 70,177,137,194,233,172,170,193,170,175,162,137, 16, 18, 93, 87,252,174, 93, 57, 89, 63,253,100,216,180, +107, 87, 78,173, 14,220,127,215, 92, 93,255,228,168,203,154,132, 58,127,221,189,255, 72,233,168,110, 90,119, 30,159, 95, 41, 18, +242, 44, 2, 17,223, 38, 18,240,236, 34, 1,207,170, 83, 11,249, 71,246,108, 23, 83,130, 35,183,210, 52,155,205,136,142,142,198, +176, 97,195, 48,122,244,104, 76,152, 48, 1,161,161, 17,222, 60, 62,177, 82,194,113, 90,113, 57, 90,105, 9, 4,230, 76,252,182, +253,125, 83,236,137,159, 46, 58, 45,230,145,180, 86,155,230, 13,154,148,114, 69,165, 22,152,109, 78, 20, 27,109, 40,174,176,193, +161,237,129,159,254,204, 65,165,213,137,244,152,157,149,134,188,172, 23,204,250,171,169, 13,122,200,122,210,126, 59, 48, 77,166, +201, 52,153, 38,211,100,154,119,131,230,189,134, 11, 53, 88, 20, 45,125, 21,104,237,175,128,217,230, 13,179,213,137, 10,179, 19, +101, 38, 27,202, 76,118,164,230,153, 16,187,251,246,119,164,170,214, 10, 32,213,223, 65,170,140,157,171,117, 88, 98,155,245,189, + 85,203,151, 76,220,222,177,131,245,249,225,190,205, 46,165, 90,115, 8,225, 85,242,248, 2,187,135, 74, 32,188,114,229,146,225, +228,177,125,125,165, 14,231, 99, 13,233, 56, 28,142, 82,127,127,127, 0, 55,190, 42, 39,162,149,108,244,137,189,175,181,232, 55, +106,185,246,131,197,115, 76, 60,190,136, 35, 2, 81,172,211, 94,185,173, 82,159,240, 49,109,160,195, 24, 79, 36,253,235,244,133, +248,238,110, 30,205,112, 45,187, 2, 21,102, 7,108, 14, 14,238, 74, 17,178, 46, 31,180,165, 94, 57,247, 93,121,246,197,205,172, + 56, 50, 24, 12, 6,131,113,159, 24, 44,179,217,156,218, 59,122, 36, 56,142,194, 73, 1,206, 89, 93,211,196,253, 93,219,228,180, +155, 83,111,119, 71, 56,206,121,230,195, 79, 55, 13,235,216,181, 31, 63, 50, 80,137,178,194, 60,156, 58,241,187, 3, 28, 61,233, +202,250, 5, 5,137, 70,185, 79,200, 67, 19,199,143,221, 49,245,201,153, 37,125, 31,120, 64,225,237,237, 99,201,202,206, 50,125, +177,229, 27,251,193,125,187,250,114,112, 60, 82, 80,112,213,216,144, 78, 73, 73,201,218,186,226, 31,236,221,172, 23,128, 22,124, + 1,177,154,242, 19, 21,141, 73, 91, 65,118,230,184, 37,239,189,147, 54,233,233,151,196, 45,253, 91, 33,191,148,143,212,172, 60, + 92, 57,182,203,146,157,120,246,199,178,172,243,211, 88, 81,100, 48, 24, 12, 6,227, 62, 50, 88, 25,241, 85,243, 97,253,175, 41, +207,203,159,178,121,243,215,139,190,222,178,189,151,217,106,245,167, 16,101, 58, 29,214,163, 70, 39,222,114, 85,195,148,119,245, +156,151, 87,104,155, 47, 62,251,240,141, 47, 54,125,212, 15,156, 51,156, 0,105,148,224,136,212,238,156,122, 43,115,213,176,129, + 43,223, 56,240,161,149,149,133,133,198,175, 27,187,174,169,224, 74,158, 82,215,178,217,198, 53,239,173,224,241,248,131,156, 78, + 78,200, 57,237,215,156, 54,243,251,149,134,132,221,180,113,195, 37, 25, 12, 6,131,193, 96,252,215, 13,214,255, 23, 69, 69, 73, +229, 0,158,191, 93,157,130,130, 68, 35,128, 59, 62, 18,239,114, 98,233,247, 0,190,111,234,250, 70,125,178, 1, 46,206, 34,207, + 96, 48, 24, 12, 6,227,191, 13,143,101, 1,131,193, 96, 48, 24, 12,198,157,133, 0,168,115, 36, 64, 99,222,148,221,148,209, 4, +183,210,103,154, 76,147,105, 50, 77,166,201, 52,153,230,189,167,121, 43,237,198,248,143,187, 26, 90, 61, 99,250,255, 34, 0,136, +102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,188,223, 2,107, 34,100, 48, 24, 12,198,125,135,151, 87,168,210,203, 43, 84, +233,234,242, 10,109,164, 78,161,141,212,177,156, 99,184, 10, 51, 88,183, 9, 33,132,132, 5, 43,103, 15,234,215,226,167,240,150, +242,209,255,150,166, 82,215, 82,171, 10,236,114, 66, 29,208,102,232,255, 32,141,146,168,168,168, 30, 81, 81, 81, 61, 8, 33,146, + 59,161,169,208,133, 61,218, 44,164,199, 49, 93,171,142,191, 43,125, 66,199,223,233,125, 86,249,133,120,170, 2, 59,127,175,242, +111, 95,172,242,107, 95,166,106,214,249,168, 90, 27,217,242, 86,235, 5,142, 94, 26,190,112,123,220,182,192,209, 75,195,235,250, +223, 99,232,122,213, 59,223, 94, 91,236, 53,106,185,146,149,254,166, 17,216,123,146,155, 95,255, 57,158,141, 93, 47, 32,172, 71, + 92,112,155,190,249,254,161,221, 99, 93, 93,167, 89,120,207,243,205,163,122,235,155,133,245, 60,199,114,222, 53,100,222, 45,123, +200, 60,130,246, 74, 61,130,246, 73, 61, 91, 62,112,187,122,126,126,126,178,136,136,136, 33, 61,122,244,152, 17, 29, 29,253, 98, +199,142, 29,167, 55,111,222,124, 16, 33,228, 95, 27,100,165,208,133,205,183, 8, 73,129, 69, 72, 10, 20,186,176,249,183,190,190, +134, 47, 34, 60,103, 14,225, 57,115,148,186,240, 69,119,203,177,146,250,132, 5, 41,116, 97,171,213,190, 81,103,228,186,208,145, +141, 93,223,195,195, 99,144,183,183,247,152,154,224,225,225, 49,136,157, 1,119,142, 70, 23,112, 66, 58, 9,149,190,246, 23,197, + 82,217,227, 60, 30,212,249,215, 78,249,223,205, 9,212,182,236,118,142,207,227, 7,212,142,115,114,206, 44, 67,242,233,206,119, + 66, 63,172,185,108,218, 27,115,167,188,252,232,196,232,160,232, 17, 47, 16, 0,187,234,188,225, 7,118,249,147, 16, 94, 11, 30, + 1,120, 60, 2, 30, 1, 0,154, 83,144,124,186, 99, 83, 53,107,208,120,183,106, 33, 86,106,143,245, 30,253,172, 79,204,175,223, +108, 86,104, 35, 7, 86, 24,226, 47,221, 1, 99,165,109,213,170, 85,151,208,208, 80,207,217,179,103,139, 0,224,131, 15, 62,104, +221,186,117,235,194,164,164,164,179,148, 82, 67,147, 46,110,222,225, 83,214,174, 92,248,245,208,161,195,144, 83, 80,129,229,171, + 55,244, 87,250,132, 78, 48,230, 37,238,188, 19,199,196,221,189,133, 90,160,118,191,252,194,220,133,222, 67,250,119,225, 27,205, + 14, 28, 56,118,161,207, 55, 27, 22,158, 81,107, 35,187,150, 25,226,147,235, 91,151, 51,149, 46,208, 41,233, 16,206, 84, 10, 0, +143,222,252,191,191,210, 30,173,149, 57,135,248, 74, 4, 23, 0,252,112,203,125, 9,238,125, 80, 40,145, 4,241,120, 60,212, 28, +123, 62,169, 58,254,118, 91,101,122,214, 95,199, 6,223, 13,231,137, 58,168, 91, 30,248, 2, 79, 30,249,123,255, 72,117, 57, 37, +148,150,229, 38,254,225,121, 7,202,147,166, 77,107,183,168,225,189,122,127,113, 52,165, 72, 17,216,239,165,189,132,242, 62, 74, + 63,182,234,162, 75, 55, 19,169,212,125,207,158, 61,218, 33, 67,134,104,116,109,198, 28,117,233,193, 67, 44,141,252,249,231,221, +162, 33, 67, 6, 55,162,124,134, 13, 4,143,183,133, 0, 66,142,163, 31,240, 57,250,157,177, 48, 49,169,177,211,169,200,117,225, +211,120,160, 46, 95,103, 56,144,115, 38,253,149, 77, 77,204, 91,190,204, 59,236,113,153, 84, 58, 39, 36, 44, 34, 52, 53, 37, 41, +177,172,172,116,117,101,126,226, 38, 74, 41,215, 40, 49,187,227,213, 95,255,136, 25, 42, 16, 10,201,144, 7,187,241, 1,252,126, + 59,199, 93,167,211,141, 89,191,126,125,203, 30, 61,122, 0, 0, 28, 14,135,122,199,142, 29, 62,239,189,247,158,194,149,115,168, +158,244,250,107,181,218, 64,177, 88,236, 15, 0, 86,171, 53,219, 96, 48,100, 80, 74,179,111, 89, 38,124, 90,121, 17, 8, 22,254, +113,236,152, 0, 0,250,244,233,187, 40,168,207,108,119,190, 72, 89, 89,103,118, 88,203, 21, 0, 94, 58,117,250, 36, 1,128,238, +221,122,204, 83,104, 35, 63,172, 48,196,235,255, 53, 19,172, 11,239,198, 3, 94,238,213,119,224,184,135, 31,153,194,139, 10, 9, +196,160,129, 3, 94, 3,176,167, 81, 6, 64, 32,144,157, 57,115,166, 21,143,199,227, 59, 28, 14,115,247,238,221, 51,110,103,191, +252,195,122,254, 73,192,107,102,115, 88, 63, 51, 36,159, 91,116,115,217, 35,132,240, 53,205, 58,190, 1,190,224,105,142,227, 50, +203,210,207,246,100, 6,171, 86,230,168, 3, 58, 28,159,248,240,228, 54,239,205,157, 46, 93,183,229, 23,120,180,232, 26, 95,148, +114, 38,242,110, 77, 32,159,199, 15, 56,116,232,160,183, 76,194, 7, 0, 24, 43,157, 24,234,194,197,214, 45,184,219, 17, 30, 33, + 97, 53,175,244,118, 58,108, 82,129, 80,108, 38, 0, 64,170, 70, 7,120,249, 53, 63,236,235,235, 33,127,116, 98,116,208,150,237, +191,100,101,100, 21,214,123,209,231,241,248, 1,187,118,239,241,246,247,148, 66,192, 39, 48, 86, 58, 48,100,216, 72,103, 93,203, +250,250,122, 12,127,116, 98,116,208,214,111,127,205,200,205, 45,218,219,224, 69,220, 55,180,147, 66,163, 59, 48,110,198,123,158, +102,158, 7,222, 90,188,214,235,216,254,173, 71,251, 13,159,194,165,167,103,154, 41, 33,241,197, 69,185, 47, 26,115,175, 37,184, +122,140,149, 74,101, 75,165, 82,217,126,232,208,161,210, 57,115,230, 8,251,247,239,127,253,255,233,211,167,139,142, 28, 57,226, +187,114,229,202, 97,126,126,126,102,163,209,120,209,104, 52, 38, 83, 74,157,174, 30, 19, 31, 31,237,115, 15,141, 29,137, 1,227, +158,133,147, 35,152,254,204, 75, 56,184,255,135,153, 0,238,136,193,178,203,213,239, 61, 61, 99,142,182,123,151, 14,252,133, 91, + 19, 32, 19, 11, 48,184,115, 24,121, 98,246, 2,183, 77,235, 22,126, 14,160, 95, 93, 53, 87,156,169,116, 65, 27, 47,235, 35,163, +122,180,192,238,109,214, 71, 2,162, 95, 3, 79,174, 89,148,177,107,254, 21, 0,104, 53,244,121,149,187, 76,182,222,207,141,239, + 45,113, 26,214,183, 26,250,252,175, 73,251,215,149, 55,180, 47, 66,137, 36,104,251,182,173, 33,238, 74, 17,248,124, 2, 1,143, + 7, 62,159,192, 98,115, 98,252,132, 71,238, 84, 13, 35, 95,230, 29, 50,140, 7, 60, 81,117,163,198,151,149,249, 87,247, 53,230, +152, 16,190,200,243,231,221, 63, 10,188, 53, 18,240,249, 4,124, 30,192,231, 17,164,233, 43, 49,109,218, 19,154,219, 53,234, 67, +123,121,119, 57,242, 97,191,193,221,219,120,180,251,246, 36,209,116, 31,250,176,103,129, 89,254,248,246, 93,191, 63, 18,216,247, +229,211,148,114, 43, 50,255, 88,115,168, 33, 29,139,197,162, 31, 60,100,168,154, 8, 20,242, 95,127,218,220, 87,192, 35,176, 59, + 41, 28, 78, 10,103,245,187, 75,171,206, 87, 2, 30,143,128,114, 20, 79, 63, 61, 13,131,135, 12, 53,113, 14, 46,203,229, 29,230, +241,182, 28,248,245,132,214, 98,231,176,114,253,166,133, 21,165,134,133, 41, 87, 60,211,228,186,208,151, 76,250, 68,151,223, 91, +193, 3,237,156,153, 28, 59, 99,235,207,167,208, 38, 50, 2, 78,174,106, 63,195, 2, 20,216,186,247, 20,194,195,194,171,246,155, +163, 8,109,166, 68,151,206, 93, 0, 96, 83,227,243,183,191, 64,161, 11,223, 54,106,252,212,241,227,198, 63, 10, 15,119, 53,172, + 54, 75,232,111, 7,247,125,250,241,250,229,189, 8, 33,143, 55,202, 28, 82,231,245,251, 2,229,184,219,174,101,242,243,243,211, +118,233,242,247,116,138, 14,135, 3,193,193,193,200,206,206, 14,107, 66, 89,146,251,250,250, 14,223,184,113,163,247,176, 97,195, +132, 62, 62, 62, 0,128,188,188, 60,255, 3, 7, 14,116,244,243,243,203,207,205,205,221, 75, 41, 53,213,167,225,180,243, 68, 60, + 1,248, 82,169,188, 42,141, 32,188, 57,207, 61,214, 78,231,235,103,169,107,121,131, 33, 79, 60,247,217,223,137, 64, 32,170, 94, + 30, 60, 74, 57,210, 64,173, 80,180, 80, 40,148,213,245,159,141,175,238, 78,133,154,167,120,124, 94, 85, 97,117,216, 13, 69,233, + 49, 17,141,168,121,139, 18,138, 69, 31, 79,154, 58,163,231,248,113,163,225,171,213,224,215,227,151, 48,243,185,151,237, 14,155, +125,117,147,238,145,124,190, 32, 63, 63, 63,205,221,221,221,231,246,239,183,164,197, 47, 7,247,123,255,250,219,225,121,171,214, +172,155,229, 23,218,199,206, 81,122,253, 61,195,129,109, 6, 8, 7,142,152,168,246,110,213, 93,186,238,237,167,132,172, 6,171, +182,243,247,139,124,113,194,196,137,109,158,157, 57, 93,250,226,250,227,248,109,219, 7, 5,119,202, 92,169,188,195,122, 16,190, + 96, 6,225,243, 21,132, 71,196,156,147,203,116, 88,173,139, 76, 5,137,185,183,171,237,228,128,239, 79,228, 55,238, 68,166,104, +189,229,187,159,188,117,110, 18,152,173, 14, 60,252,232, 20,108,217,242,181,202, 75, 45,134,217,234,192,138, 85,171,202,141,105, +123,189,211, 50,139,179,163, 71,190,124, 40, 57, 53, 63, 54, 35,215,252, 93,253, 23, 6, 30,188, 53, 18, 44,222,158, 8,181, 76, + 8,119,149, 8, 60, 30,169,125,225, 32,161,205, 21,207, 53,107,166,125, 32, 39,183,184,180,150,230, 55,245,158,108,190,109, 7, +107,220,253,182,141,157,177,216,237,106,190, 0, 20, 54, 36,169,165,152,248,248,243,234,150, 62, 50, 40,164,124,183,148,244,108, +223, 57,175,190,122, 92,227,221,170,107,105,126, 82,202,173,210,221,188,121,243,113, 35, 70,140,144,191,242,202, 43,194,102,205, +154,225,203,173, 59,130,250, 12,158, 48, 50, 39, 87,223,140, 82, 10,157,183,119,230,211, 79, 76,216,179,111,223,190,244,204,204, + 76,225,242,229,203,187,253,248,227,143,145,141,121, 18,117, 82, 10,179,197, 9,103,245,141,209, 80,106,105,236, 69,150,248,251, +251, 75,178,179,179, 45, 53, 55, 14, 66,200,245,204, 84,250,119, 24,252, 96,191,110,130,141,251, 83, 97, 52, 59,161,144, 10,145, +170, 55,161,115,135,182,228, 51,167,163,125, 93,154,211, 38, 14, 95,160, 83,210, 33,163,122,180,128,183,187, 28, 95,124,184, 24, +187, 79,166, 12,209, 27, 9,188, 70, 45,159,225, 43, 17, 12,212,202, 69,235,251,119,110,229, 51,160, 83, 16,206,118,110,229,115, + 44, 38, 33,177,237,196,213,179,179,141,194, 95,139,246,207, 46,175,251,130,195,131,135, 74,140,207, 15,164, 65, 46, 21, 64, 33, + 21, 64, 33,169,250,172,125,252,155,244, 20,235, 23,217,140,207, 57,167,169,253, 34,167, 61, 50,113,130,223,164, 71, 38, 80,240, +121,216,241,253,158,209,223,124,179, 37, 87,233, 19,246,185,147,199,223, 84,153, 19,159,121,203, 60,229, 1,222, 26, 49, 94,253, + 60, 22,106,153, 16, 42,185, 16,106,185, 16, 3,218,105,193,111, 98, 71, 2, 66,136,251,204,209, 45,135, 93,250, 58,250,129,176, + 64,101,200,197,164,210,248,105,139,206,173, 57, 82,242,192,139, 31,126, 16,233,105, 44,177, 10,222,154,243,180, 32, 43, 39,231, +129, 29,123,142, 14,240,235, 58, 45,193, 97,171,120, 61,255,226,119,117,214,216,102, 94,249,179, 99, 64,143, 9, 82,155,209,126, +249, 98, 66, 86,171, 98,139, 4,113,105,101, 80, 72, 5, 80,214,228,173, 84, 0,133, 84, 8,165, 84,128,156,172, 84, 20, 85,240, +143,103,123,242, 30,160, 71,254,116, 52,102,223,205, 54, 39, 46,164, 24,209, 60,172, 3,124,125,253, 96, 29, 54,185,249,233,195, +223,239, 82,248, 70, 44,173,200,253,235,117, 87,117,182,254,124, 10,243, 94,154, 17, 67,128,243,213, 55,231,142,111, 45,219,208, +105,225,188,103,111,136,155,243,238,186, 78, 77, 53,215,114, 93,216, 55,253,134, 79, 25,223,182,251, 32, 36,167,166, 98,255,158, +115,120,112,224, 80, 12, 27, 57, 14, 86,171,229,177, 77, 27,215,157, 5,176,225, 31,215, 92,223,136,222,109,219, 68,124,227,239, +231,215,140,227,170,222,202, 65, 41,208,187,223, 0,204,125,241,105,112,148,162,125,199,174, 3,134, 61, 50,155,210,234,183,119, + 20, 20, 22, 84, 36, 92,137,143,174,212, 95, 57,237,114, 94,154,205,118,131,193,128, 11, 23, 46, 32, 49, 49, 17,113,113,113, 40, + 44, 44,132, 70,163, 49, 54, 50,173,234,118,237,218, 77, 58,124,248,176,212,221,221,253,122,188,213,106,133, 74,165,194,164, 73, +147,132,131, 6, 13,242, 31, 62,124,248, 84, 66,200, 86, 74,105, 89, 93, 58,149,133, 87,115,212, 62,225,159,244,235,223,111, 22, + 0,200,212,190, 41,235,191,220, 19,215,224,185,166,241, 11,234,217,179, 87, 43, 80, 10, 2,186,182,162, 32, 33,175,129, 90, 33, +197,169, 83,167, 90,242,249,252,235,247, 87,142,227,240,209, 23,223,134,255,242,199,229,113,203, 86,172,148,170, 21, 18, 24, 74, +173,120,106,242, 88,151,239,193,114,159,240, 97,189,122,245,219,181,240,221, 55, 5, 74,133, 2,135, 78, 39, 99,246,139,175,154, +115,211, 98, 87, 82, 78,184,161, 34, 63, 33,255, 54,111,149,119,100,194,235,144, 0, 37, 84,163, 6, 75,103, 62, 54, 74,106,181, + 59, 81, 82, 97,135,197,230,132,147,163, 40,173,176, 35, 62,163, 28, 94,106,113, 83,164,187, 0,208, 2, 48, 0, 56,123,211,111, + 84,127, 71, 29,191, 11,170,170, 69,224, 9,192, 10,160,246,198,107,126,215, 23, 95,179,126, 60,128,136,106, 77, 39,128, 51, 0, +138,111,105,176, 8, 33,148, 82, 74,106, 21,226, 27,126,215, 70, 36, 86, 78,156, 55,123,138,244,189,173, 49,248,109,219,146, 2, + 67,210,201,154, 4,192,187, 85,183,243,249, 73, 55, 54,119,185, 50,212, 82,230, 23,217, 76, 64,248,171,251,245,239, 59,104,214, + 51,207, 32,172,101,128,200,233,116,210,216,196, 20,251,230, 77, 95, 60,174,105,214,118, 77, 89, 86,236,130,154,170,198,198, 14, +223,116,114,206,172,155,107,172,156,156, 51,235, 86,251, 73, 8,224,166, 16,225,147,125, 41,160, 20, 32,160, 80,203,133,216,126, + 36, 11, 41, 49, 63,148,141,104, 95, 86, 49,105,217, 59, 3, 30, 24,246,252,225,248, 36,243,119,249,249,230,131,148,210,188,250, + 52,121, 4, 16,240, 9,212,114, 33, 52,114, 17,220, 20, 34,144, 90, 55,174,218,205,130,253,135, 61,255,203,225, 19,233,175, 3, + 48, 80, 74, 45,117,105,202,124, 66,186,168,221, 2,190, 27, 55,107,185,234,114,150, 3, 2, 62,208,194, 71, 6, 15,149, 8, 86, + 7, 65,154,193, 86,125,198,184, 97,246,156,119, 61,230,189, 60,107, 31, 33,145,109, 40,141,183, 53,148,118,147,201, 36,158, 50, +101,138,208,110,183,219, 38, 61,245,194,160,188, 60,195,232,143,214,190, 47,241,246,214,193,100,118, 32, 38,238, 90,196,194,133, +239,182,216,115,224,200, 79,239,188, 58,115,215,144, 33, 67, 52,223,126,251, 45,215,152,227,110,208, 23,124,248,197, 55, 59,191, +254, 96,229, 18, 36,164, 23, 99,211,198, 13,160, 78,199, 39, 13,158,249,181, 52, 41,165,244,245,215, 95,151,253,244,211, 79, 1, + 10,133,162,204,100, 50, 25,110,168,127,224, 17,129,190,200, 4, 47,149, 24, 34, 1, 15, 58,119, 41,188, 53, 18, 8,249, 0,143, + 16,103, 93,154,155,190,219,187,136, 51,149, 98,247, 54,235, 35, 95,124,184, 24, 79, 62,247, 6, 98, 11,196, 7,120,114,205,162, +103, 31, 25, 55, 79, 43,115, 14,241,115,227,121, 15,232,212, 28, 10,169, 8,243,159,159,130,174, 49,105,222,217, 37,220, 27,134, + 74,126, 7, 0,111,212,121,220,121, 4, 2, 62,129, 74, 46,196,129,111, 86,228, 87,148, 26, 74,107,154,222,172, 22,115,186, 75, + 87,189, 58,242, 83,161, 11,155,215,169, 67,187,197,179,166, 79,227,245,234,209,149,242,120, 66, 20,148, 91, 9,165,192,139,179, +103,226,217,153, 79,251,100,230,228,191,181, 97,195, 39, 11,148,222, 17,239, 25,243,255,122,167, 33, 77, 30,169,170,245, 81, 74, + 5, 80,202,170, 12,139, 82, 42,128,217,234, 4, 33,224,187, 7,117, 42, 37, 85, 53,183, 57,133,105,117, 63,113,223,172,233, 17, + 24,245,219, 47, 41,170,240,226,239,138, 79,166,230,196, 45,138,185,164, 63, 67, 41, 45, 10,236,247,242, 84,155,131,194,104,118, + 32, 85,111,130,195, 70,201,147, 67,131, 16, 60,158,132, 45,249,226,252,215,132, 16,117,141,113,190, 89, 51,235,228, 14,179, 87, +219,113, 15,127,176,110,227,217,149,139,223,224, 23,148, 90,193, 81, 10,169,152, 15,153, 88, 80, 29,248,168,172, 40,197,134,143, + 63,203,115,128,140,163, 71,142, 56, 26,117, 93,226,232,228,177,195,250,110, 39,128,152,240, 68, 89,126, 65,205,131, 30, 28,249, +184,244,193, 81, 83,224,116, 88,231, 41,116,225,191, 87,232,175,252,230,138,102,155,200, 8, 16,224,188, 81,159, 48, 19, 0,148, +186,176, 79,194,195,194, 59,221, 28,215,186,117, 88, 39, 87,142,123,245, 53,154, 39,211,134, 76,111, 29,222,118,238,172, 55, 55, + 54, 79,205, 53,193,163, 89, 8,226, 46, 95,192,254,111, 63, 60, 95, 89, 94,188,114,255,238, 31,230,190,247,254,218,246, 35,199, + 76,196,174, 31,191,125,133, 16,242, 17,173,226,215, 90,181, 83,147, 55,127,254,105, 51,161, 88, 2,187,131,131,221, 73,171, 62, + 29, 78, 20, 21, 21,195,238,224, 32,149,171,224,224, 8,236, 78, 14,118, 7, 7,139,213,161,152, 57,101,248, 51, 0, 78,215,181, +159, 1, 17,253, 15,138, 36,146, 32,138,170,119,203, 82, 74,193,119, 88,121,190,190,190, 91, 1, 64, 34,145, 64, 34,145,128,227, + 56,196, 36, 24,158,211,134, 71,207, 66,181,177,115,218,172,233,197,169,199, 7,215,151,118, 31, 31,159,145, 55,155, 43,179,217, + 12,163,209,136, 63, 78,158,213,124,254,245,206, 33,169,233, 89, 45, 57,170,177,168,188, 91, 14, 6, 48,178,190,252, 44,203,187, +242, 76,179, 30,211,121,175, 60, 59,181,245,186,205, 63,159,185,122,224,189, 6,251, 97,181,136,158,103,125,101,198, 67,157,151, +173,221,116,181,232,248,199, 47,221,234, 24, 9, 4, 2,161,193, 96,184,126,126,175,255,108, 91,231,243, 9,217, 99,214,124,176, + 70, 26,147, 92,142,203,169, 57,152, 26, 29,136, 27,110, 2, 13,104, 42,125, 90,121,181,106, 21,190,117,195,218,101,130,171, 57, +102,124,248,195, 25, 28,222,245,201, 31,121,249,167,135,208,188,156,202,166, 92, 67,110,215, 96, 53,164,249,251,165, 2, 24,205, + 14, 88,172, 14,216, 57,138, 50,147, 29,249, 37, 86,148,153,108, 48, 86, 58, 48,117, 96, 96,125, 38,186, 33, 63,162, 37,132,252, + 76, 41, 29,129,170,233,165,196,181,126,131, 16,242,115,245,126,221,240,123,222,188,121,175, 47, 93,186, 52,174,102,217,154,248, +154,101, 27,138,175,181,190,231,252,249,243,219, 44, 91,182,108, 73,143, 30, 61,182,255,249,231,159, 41, 46, 25,172,218,137, 32, +132, 52,152,193, 18,145,192, 79,174,114,175, 50, 28,127, 87, 24,160,121,155,254,133,107,150, 47,244,240, 13,233,158,158,123,245, + 84,144,235,181, 86,161, 61,101, 50,249,222, 85,171, 86,225,145,145,125,100, 25, 5,118,227,165,140, 74,125,133, 21, 14,111,109, +168,120,209,146,101,202,101,203, 87, 60,251,243,110,174, 4,192,138,186,155,242,186,156,227,147, 90,125,172, 8, 1,229,156, 89, + 69,169,103, 58, 3,192,237,244,181,170, 48, 59,192,175,238, 59, 67, 8, 96,178, 56,193,231,147,252,146,132,239,226, 39,189,183, +104,192,150,237,191,228, 80,158, 91,121, 69, 69,170,156, 82,154,213,112, 13, 1, 65,153,201, 14,141, 92, 8, 55,165, 16, 26,133, + 8,252, 90, 39, 87, 77,179,224,150,109,135,178,211,211, 11,207, 86,155,171,122, 53, 5,124, 94, 10,117,218,205,148, 58, 85, 35, +186,104,225,237, 38,134,175,187, 4, 18,177, 0,118, 7, 80,105,229, 96,182, 58,145,150, 95,137,242, 74, 25,218,246,155,208,194, +211,247,156,197, 51,168,203, 79,133,233,103,199, 53,104, 74,157, 78,108,222,186,179,117, 78,142,126,244,190,159,190,145, 24,202, +236,184,148, 86,129,252, 18, 11,192,215,226,237, 37, 31, 74, 94,123,105,250,152,205,219,190, 79,127,176, 79,183,244, 70,231,107, +254,149, 45,109,123, 14,255,100,196,136, 49,178,184,211,251,112,245,194,111,139,141,122,215,251, 95, 17, 66,120, 59,118,236,112, + 76,159, 62,189,124,201,146, 37,205,118,239,222, 29,108, 48, 24, 46, 0,176,187,185,185,133,135,182, 14,186,120,232,192,126,255, +225, 99, 38, 8,179, 10, 42,161,145,139, 16,228, 45,199,201, 63, 14,218,197, 98, 97,157,253, 73,170,155, 1, 31, 13,136,126, 13, +187, 79,166, 12,137, 43,148, 30,121,122,218,212,244, 67,199, 18, 10,215,127,125,232,125,127,165,253,130,148, 51,172, 63,215,185, +149,207,188,217, 83,176,116,221, 22, 28,141, 73,200,175,224,249, 46,206,181, 56,126,121,231,225,185,245, 84,153, 87, 25,107,149, + 76,136,138, 50, 67,233,181,152,253,161,119,168,246,121,234,161,159,182,240,138,202,237,200, 44, 48,147,156,162,114, 56, 57, 10, + 55,185, 8, 14,142,162,164,168,128,124,179,229,107,156, 61,123,146, 7, 62,239, 41, 0,239, 52,216,156, 69,170,154, 4,149, 82, + 97, 85, 13,144,172,234,211,238,228, 16,214,186, 21, 62, 93,191, 90,237,229,173, 67,239,190,174,247,121, 86,121, 6,181,223,254, +229,122, 28,249,243,124,255,163,107, 62,236,162,244,211,174, 83, 7, 68,174,212, 4, 15, 52, 91,108, 78,148,150, 20, 67,108,205, + 68, 87,127, 3, 60,228, 78,164,149,249, 34, 54,239,170,242, 86,205, 89, 5,151,127,184,160,109, 51,118,193,206, 61,135,151, 14, + 30,216, 31,177,105,101,144,137, 5,144,138,249,144,138,249, 16, 18, 39, 86,127,252,137,189,184,180,124, 68, 65,236, 79, 5, 77, + 40,159,191, 86, 63,237, 86,221,220,116, 45,181, 91,214, 45,248,234,233,185,203, 7, 15, 25,251, 56,137, 61,251,251,235, 0,126, +115,237, 1,143,186, 20,199,113,212,229,178,239,221,170,243,214, 47, 55,111,123, 56, 50,164, 25,244, 37,118,228, 20,219,240,199, +249, 36,124,245,249,130,146, 98,125,242,100,216,140, 70,142, 56, 74, 15, 30,216,115,224,185, 23,230, 34,170, 77,251,230,101, 89, +101,106, 0,165, 55,108,147, 79, 54, 62, 54,109,198,195, 58,157, 78,245,119, 13, 22, 69,104, 88, 36,134,141,122, 8, 7,119,253, +136,248,184, 75,224,104,149, 81,226, 56,138,146,226,194, 60,135,221,186,185,190,253, 19, 75,165, 65, 95,124,249,117, 8,143, 71, + 96,179,115,176, 58, 56,188,244,204, 19,214,153, 47,190,222,123,216,160,126,113, 98, 62,202,210, 50,114,221, 78,158,255,171, 45, + 39, 84, 54,155, 54,103,181,200,108,113,162,212,100,199,190, 77,245,123, 28,153, 71, 80,143,246, 61,199, 76,155,249,230,167, 18, + 9,159,103,139, 10,109,150,210,175,123, 84,102,160,159, 87,249,194,101, 31,118, 61,126,250,252,176,137,147,166, 73,167,134,119, + 34,126,158, 50,213, 19,147,198,182, 83,120, 6, 62, 86, 81,152, 81,239,171,205,132,114,247,146,192,224,214,166,191,107,136,194, +126, 32, 20, 45,110, 48, 17, 4, 41,166,188,132,113, 0,224,235, 23,104, 22, 74,212,229,141, 48, 32, 20, 0,214,125,182,173,243, +197,196,156,167, 63,248, 96,141, 60, 38,185, 28, 23,146, 75, 33, 17,241, 96,179,115, 32, 46, 86, 98,115,148, 63,227,141,249,243, +212,197, 21, 78, 28,185,100, 64,220,185,223,169,213,104,158, 36,119,168,199, 41,116, 97,143, 1,104, 5, 32,137, 16,186,177, 66, +239,179,139,210, 35,142,198,150,123,142,171,122, 78,214,120,183,106,225, 20, 72,134, 9,197,138, 30,132,208, 40, 66,225, 14,208, +236,194,234,123,170,171, 14,173, 66,159,136,229, 75,222,194,218,207,127, 68, 78,161, 25, 26,103, 38,118,109, 90,132, 87,150,110, + 69,165,197,217, 80, 25,111,208,143,212,101,136,110, 54, 90, 53,223,107,150, 91,250,127,236,157,119,120, 20, 85,219,198,239,153, +173,217,146,222, 3, 73, 32,129,208, 91,232, 29, 4, 65, 20, 20, 16, 5, 65, 20, 20, 16,244, 69, 17, 84,196,130, 40, 2, 34, 93, + 81, 65, 4, 41, 34,210,139,244, 94, 12, 53,144,208, 18, 72, 39,164,151,221,108,175,115,190, 63,146, 96,196,148, 13,242,126,250, +226,243,187,174,185,178,155,157,189,119,206,204, 57, 51,247,121, 78,155, 59,119,224,125,215,102, 96, 21,215,236, 79,251,149,127, +127,222,188,121,115, 42,124,110,116,185,137,176, 60, 49,213, 37,202,195,191, 89,164,212, 67, 45,247, 80, 72, 80, 63, 44, 24, 35, + 38,126,226, 23, 20,213, 53, 79, 46, 19,139,118,108, 92,233, 83, 96,146,131,227,121,131,203,205, 27,129, 77, 58,186,187,187,239, +221,182,117, 59, 34,195, 2,164, 27, 78, 21,165,198,166,152,238,133,116, 75,242,211,101,245, 61,140,226,161, 67,134, 40,143, 28, + 61,246, 86, 85, 6, 75,196,137,234,126,191,110,107,128,187, 66, 2,142, 3,116, 38, 7,198,141,126,246,175, 63,190,152, 32, 26, +251,242,104,112,101,230,170,164, 48, 7, 51,222,157,104, 86,217,111, 93,207, 72,203,184,219,119,208,212, 35, 37,122,206, 60,252, +197, 73, 23,174, 39,206, 45,174, 57,247,218, 51,159,124,234, 73,105,105,164, 0, 16,113, 28, 4, 38,228, 54,174,175,254,207,159, +154, 5,115, 44,223,215,100,216,116,119, 19,138,220,131, 91, 14, 91,191,240,141,239, 67, 2, 3,124,213, 42, 5, 83, 43,229, 92, +243, 38, 81,210, 78,157,186,200,234, 55,110, 37, 61,117,195,132,140,124, 19, 82,178,180,144, 7,182, 17,143,120,108, 0,214, 47, +153,214,139,227, 56,190,166,142,175,135,142,159, 29,180,234,219,197,242, 92,141, 13, 55, 51,244,200, 41, 54, 35,187,216,130,156, + 34, 51,212, 10, 9,122, 60, 61, 94,254,235,206, 21,131,250,116,239,184,236, 65, 78,111, 74, 74,234,175,105,119,179,159,107, 21, +221, 1,235,215,174,233,238,237, 29,225, 81, 92,156, 82,226,234,213,153, 61,123,182,108,222,188,121,226,175,190,250,170,164, 83, +167, 78, 65,239,191,255,126,255,188,188,188,243,245,234,213,107,124, 96,219,143, 71,219,244,120,166, 61, 4,155,127,247,158,189, +165,114, 65,140,131,123,246,216,126,217,180,161,208,100,210,189, 86,173,209, 80,122,206,206,213,115,240,175, 83,231,154, 90,230, +124, 92,204,107, 18,139,246,253,103, 29,128,109, 13, 6, 76, 62,124,236, 98, 66, 98,187, 75,105, 1, 71, 47,221,206, 43, 50,218, + 26, 37,237,123,187,218, 27,174,136,227, 32, 22,241,112, 87,136,193,151,221, 77,221,235,180,190, 13,142,243, 47,143,148,114,224, +202,254, 2, 28,135,172,162,244, 88, 23,250,100,112, 76, 96, 64, 66,166, 1,122,115,105, 8,190,174,159, 18,249,185,153,248,102, +217,143,136,189,120, 1,253, 6, 60,141,229,223,111,192,184,209,207,153,107, 82,227,249,178, 8, 86,133,232,149, 90, 33, 6,192, + 65, 99,176, 99,235,233, 59,104, 16,193,187,252, 64, 0, 0,119,181, 18, 90,157, 9,188,212, 29, 73,151,246, 42,247, 29, 59,247, +254,135,159, 45,126,167, 56, 59, 46,227,118,252, 41, 52,246,211, 34,162,142, 13,215,114, 60,112,177,176, 62, 26, 55,140, 4, 47, +189,224,146,118,193,181,150,243,119,242, 91, 7,182,107,211,172,115,120,128, 23, 76, 86,103, 89, 20, 75,132, 53,171,215, 33, 45, + 53,243,149,130,107, 59, 98, 31,134,147,213,231, 38,231,187, 5, 70,189, 30,127,238, 72,202,144,145,175, 35,184, 78, 88,107,215, + 31, 90,174,153, 41,167, 11, 6,139,227, 56,222,167, 94,155,181,107,215,111, 30, 30, 17, 22,132, 67,231, 82,113, 62,177, 16,126, +126,190, 16, 41,131, 16,213,115,140, 87,252,254,165,207,154, 10,244,107, 37, 82,229,171, 29, 59,117, 5, 99, 12, 9, 55,174, 21, +105,181,158,127,186, 55, 27,179,110, 94, 6,224,241,135,102, 40,255,166,173,213,158, 62,151, 45, 54, 39,238,222,205,196,153,223, +142, 71,151,237,231, 50,114,169, 8, 7, 99,243, 96,179, 11,176, 57, 4,244,232,249,184, 85,202, 91,186,127,190,120,117,167,236, +172,108, 94,229,225, 39,248,212,105, 42, 13,150,219, 44, 87,146,181, 82,155, 93, 64,100,136,170, 90, 77,255,144,134,115,166, 77, +155,210, 84, 36, 85, 64,103,176, 88,179,179,238, 6,173,220,120, 76,127,227,102,124,157,186, 1,158, 30, 95, 44, 89, 33, 45, 49, +115,200,211, 90, 80,164, 43,225, 70, 78,120, 55,100,213,215,115, 71, 1,112,121,237, 88,142, 33,226,215,131,167,154,120,187, 75, + 57,189,217, 33, 20,150,216,156, 35, 7,255,181, 65,148,101,230,106,252,226, 69, 75,148,177,201, 58, 92, 73,214,194, 77, 42,130, + 76,202,195,106, 23,224, 74,113,226, 56,142,143,104,209,243,181, 46,237, 90,226,192,229, 2,136, 68, 60, 76,186, 98,163, 24,133, +137,237,122,245, 83,182,237,208, 9,189,123,245,196,237,196,132,176, 61,187,182,246,137, 57,115, 34, 71, 29,208,248, 13,125, 94, +194,246, 90,229,115,163, 81,100,151, 5,141, 9,174, 83,175,235,208, 17, 99, 60,195,195,234,112, 1,126,190,112, 48, 49,198,143, +126,214,229,146, 95,106,200,129,121,159,189, 15,139,197, 10,127, 47, 25, 24, 3, 86, 47,251, 4, 86,171, 21, 33,190,114,104, 13, +246,234,140,105,181,126,164,170,168, 83, 45,155,155,247, 84,102,178,238,255, 63,199,113,123,166, 79,159, 62, 3, 0,155, 62,125, +250,140,242,247,115,231,206, 53, 1,200,114,201, 96,149, 39,170,202, 27,101, 72, 84, 35,239,128,144,211,191,172,253,218,187, 88, +111,131,155, 84,132,186,161,225,120,239,211,165,254, 3,218,249, 33,223,172,196,230, 45,107,138,172,102,227, 38,215,218,146,163, +218,185,171, 60, 14,172, 93,191, 73,240,243,245,229,191, 57,152,159, 92,168,115,220,107,186, 74, 60,183, 75,184,120, 96,101, 48, + 3,183,223,205,205,173,161,213,106,245,174,233,130,174, 62,152, 94,214, 57,151,123, 24,247, 84,112, 34,145,115,195,134,245,240, +245,144,193, 98, 23, 48,253,157, 55, 77, 47,245, 83,107, 70, 62, 63,226,177,222, 79, 78, 62, 42, 81, 69, 29,233, 18, 29,197,218, +180,105,163, 17,137, 68, 53,234, 21,166,156,255,211,104,137, 38,245,149,175,126,240,238, 75, 31, 84,210, 44,232, 82,135, 92, 93, +118,252,105, 0,127,136,136,112, 13, 26,200,126,218,188,243,205, 97,207, 15,255,176, 78,235,193,234,212,108, 45,164,156, 13,237, +155, 6,227,216,254,237, 44, 51, 45,113,138, 43,163,138,242,242,139, 66,253,253, 3, 17,155,162,199,221, 66, 19,114,202,204, 85, +118,177, 5, 58,147, 14,173,194, 67,160,209,106, 67, 31,248,252, 2,219, 15, 28, 56,240,220,147,207, 12,199,228,119,102,117,251, +225,219, 5,113,234,160, 70, 99,245, 57,137,199, 93,169, 25,114, 28, 87,244,222,123,239, 53,248,254,251,239,249, 81,163, 70,153, + 90,182,108,233,246,226,139, 47,118, 91,183,110,157,155, 82,233,102,186,114,106,215,135,175,254,103,250, 51, 43,151,206,110, 93, + 92, 92,204, 57,236,246,125,182,226,226,233,186, 26, 76, 92,198,206,247,111,114,205,102,189,252,120,119,255, 93, 62, 74,190,185, +156, 89, 71,112,205,102,109, 98,215,103,218,146,246, 45,211,181,124,126,209,127,178, 52,194, 7,102, 62,224,243,154,204, 21, 0, +240, 34, 14, 86,187, 0,119,133, 4, 60,207,151,155,247,224, 53,155,246, 41,253, 61,101,144,136,120,136, 69,165,209,205,130, 18, + 27, 94, 31,227,234, 76, 31, 76,112, 56, 25, 76, 86, 7,140,101,181, 65, 93, 73, 1,222,127,231,109, 12, 24, 52, 4,175,190,246, + 54,138, 77,192,197, 20, 29,108,118,123,141,133,130,231,120, 24, 45, 14,140,237, 23,142, 34,189, 13, 6,147, 3, 86,135, 0,165, + 76, 12,137,152,135,202, 77, 12, 15,165, 4, 96, 76,202,113,220,120, 0,144, 72, 36,102,155,205,182,190,154,235,132,250,161,129, + 48,217,121,116, 24,190, 0,125, 59, 55,194,181,211, 91,197, 39,206,198, 71,188,245,206, 7,120,115,220, 32,108,185,217, 0, 62, + 1,225, 80,171, 20,176, 51, 30, 0,115,169, 67, 30, 99, 51,133,224, 38, 67, 95,248,238,251,213, 9,159,126, 60,221, 77, 99,224, + 32,151,138,112,244,200, 97,196,156,187,184, 52,255,218,142,245,120,136, 72, 24, 31,232,225,225, 1, 55,153, 8, 86,155,197,234, +122, 23, 5, 6, 6, 68,171, 3, 27,127, 87, 86,195,143,118, 10,168,228,127,172,166, 7, 2,231, 25,210, 98,205,119,171, 54,140, + 10, 9, 10,192,246, 35,113, 88,243,253, 87,136,104, 51, 16,167,127, 93, 3,207,250,157,160, 10,235, 6,153,251,230,241,188, 72, +220,242,141,183,102, 12,109,219,190, 51,206,156, 58,138,188,156,236,239, 24,187,233, 82, 68, 67, 36,225, 38, 63,246,248, 32,152, +173, 78,116,239, 51, 16,251,119,111,255, 15,202, 6, 79,184,254,240,186,239,254, 12,222,241,246,148,201,146, 60,173, 85, 82,160, +181,226, 78,129, 9,105, 57, 6,236,248,249, 7,230,250,253,194,218,190, 71,171,186,146,241,243,143,222, 9,173, 27,108,145, 88, + 76,138,196,164,228, 38,175,142,121, 73, 18,209,176, 9,159,167,181, 32, 95,107, 65,129,214, 2,189,217,129,134,117,163,120,187, +131,235, 92,219,235,236,231, 41,147, 44,223,157, 2, 15,149, 4, 93,154, 60,248,192, 89, 65, 16,126, 55, 87,139, 75,205, 85, 92, +138, 22,114,169, 8,114, 41, 15,185, 84, 4,135,147,185, 84, 97, 81, 4,142, 69, 23,173, 0, 0, 32, 0, 73, 68, 65, 84, 52,122, +242,245, 55, 38,133, 88, 29, 64,161,214, 10,177,136, 67,128,159,183,170,125,235, 23,176,122,193,127, 0, 0,227,222,251, 6,175, +142,125, 17, 77,155,183,132,166,184, 56,232,133, 97, 79, 46, 6,176,221,213, 99,221,123,240,120,216,193,147,177,239,189, 62,109, +166,250,249, 65,189, 69,151,147,181,200, 46,178, 32, 41, 81, 87,171, 72, 27, 0, 56,156, 2, 24, 24,126,220,180, 7, 10,153, 24, +249, 90, 27, 24, 99,152,253,213, 47,112, 87, 72,144, 93, 92,218,172, 95,195, 61,158,171,225,243,129,127, 41,126, 82,250,253,124, +252,222, 79,171,198, 8,214,220,185,115,175,205,157, 59,183,210,136, 88,141, 6,171, 58,115,229,229, 29,124,102,215,166,239,125, +182,199, 90,113,118,243, 69, 60,213, 49, 24, 82, 49, 15,165,167, 63,174,164, 24,112, 96,255, 70,205,222, 93, 91,238, 22, 73,140, + 95,214,104,174,130, 27, 71,171, 20, 30,135,151,175, 92,235,240, 11, 8,192,250, 83, 69,153,197, 6,135,253,247,230, 41, 59,119, +241,192,202, 8,135, 96,127,194,148,115,171,198,234,172,192, 32,157,251,237, 78, 0, 12,130, 32,128, 9, 2, 36,110,106,149,127, +131,206,185,101, 55, 56, 55, 49,207,153, 43,150,124, 38, 56, 50,243,147,171, 15,119,114, 0, 60,148, 18,108, 58,113, 23, 0,114, + 69,186, 75, 55, 70, 62, 95,218, 44,104,182,186,149, 52,111,208,128,181,111,223, 94,163, 80, 40, 30,248, 34,215,182, 89,208,165, +140,147,148,100, 5, 48, 63,164,113,247, 33,253,213,173, 58,200,120, 41,218, 54, 14,198,177, 3, 59,216,217,253,171,199, 25,115, + 19,214,186,152, 1,161, 55,219,145, 85,104,198,221, 66, 51,114,138,205,200, 41,178, 32,167,216, 12,142,227, 96,182, 58,254,210, + 3,203,144,151,176,121,253,218, 85, 79, 91,108, 24,209,163,223, 16,188, 61,115,121,248,250,239,230, 29, 86, 4, 54,233,234, 74, + 7, 90,198,152,147,227,184,180, 49, 99,198,180,222,184,113,163,168, 69,139, 22,166, 27, 55,110, 40, 1, 8, 0,108,106,181, 82, +241,195,215,115, 15,116,232,208,225,231,187,137, 55,143, 2, 40,118,101, 36, 85,189, 94, 99,228, 77, 60,138,198,135,169,186,244, +143, 12, 82, 34, 76,165,235,223, 68,125,229,203,128, 62,111,205,201, 59,178, 36, 47,219,226, 56,148,111, 18,181,185,171,151,184, +212, 23,208,110, 49,167, 15, 29, 54, 28, 34,142,135,205,108, 76, 47,207, 92, 1,158, 50,124,178,225, 38,212,110, 18,184, 43,196, + 80, 43, 36,232,214,204, 7,181,184,143, 49,187, 83,128,209,226,132,201,226,128,217,234,128, 95,168, 55,190, 95,191, 25, 25,121, + 38,236,188, 80,128,132,116, 29,162,234,170,192, 88,205,183, 71,193,105, 55, 12,122,118,148,187,136,231, 32,226, 57,190, 89,147, + 70, 40,210,219, 32, 21,243,144,186, 41,160,146,139,225,161,144, 64, 42,149, 32, 47, 47, 15, 22,139, 5, 97, 97, 97,110,213, 91, + 64, 6,119,181, 2, 81, 17, 33,176,217, 29,216,123,242, 58, 62,159, 50, 20,143,247,104, 7, 78,162,198, 77, 75, 52,220,125,220, + 33,240, 60,108, 14, 1, 86,155, 19, 0, 95,101,180, 45, 44, 44,236, 49,149, 74,165, 50, 26,141,186,244,244,244,227,217, 55,183, +101, 4, 52, 31, 60,126,255,193,163,235, 7, 14,120, 28,177,113,215,176,101,251,174, 83, 5,190,218,105,229,223,105,209,162, 69, + 39, 63, 63, 63,117, 97, 97, 97, 73,124,124,252,249, 7,172,237,114,170,192, 38,111,117,238,214, 11,122, 77, 30,114,239,164,186, + 92,107,110, 26,238,142,143,230, 46,111,219,184, 81,227,182, 78, 86,106,184,154,133,185, 99,234,204,101,109, 27, 68, 53,106, 91, + 62,208,163,105, 88,245,211,170,169, 2, 27, 79,250,124,209,183,163,195, 66, 67,177,239,204, 77,204,253,224,181, 88,149,210,189, +126,221, 64,111, 47,105,243,118,184,124,249, 55, 4, 64, 6,143,192,168,186, 35,158,158, 80,183,255,128,167, 17,127,229, 34,150, +204,255, 44,198, 32, 82,204,113,229, 88,213,129,145,254,109,218,247, 24,233,238, 19, 8,141, 86, 7,119,239, 0, 52,109,213,126, +164, 58, 48,242,189,178,197,234, 31,204,108, 48, 6,139,141,161, 88,103, 67, 70,126,169,185, 74,205, 53, 66, 16,106,209,231,199, + 41,112,106, 55,177,216,199,126, 59, 44,254,240, 81, 22, 30, 26,200,205,255,236, 29,145, 13,110,200,215,148,154,171,252, 18, 43, +242,181, 86,232,205,118,248,168,196, 16,156, 66,173,107,219,197,122, 27,220,203,250,201, 58,133, 7,239,243,253,237,154, 77,141, +175, 36,102, 13, 94,180,104,137,242,114, 74, 5,115, 37, 41,141, 94,201,165, 34, 56, 5,161,236, 73, 83,131,185, 23, 75, 38, 63, +243,100, 95,220, 41, 48,149,141, 68,230, 16,213,178, 3,252, 20, 2,250, 12,159, 14, 0, 24,244,100,105, 63,227,148,108, 3,118, +159,205, 7,254,216, 97,187,250,123,177,201, 36, 90,185,225,215,183, 54,255,242,179,167,217, 41,198,138,125,105, 48, 90, 28,112, +147,138, 32,151,138,160,144,138,254,208, 37,168,102,131, 85,218,167, 46,163,192, 14,163,217,140, 18,147, 29, 12,192,249,219,122, +152,172, 14,104, 13,118,116,106,226,253, 87,235, 60,191, 2,120,234,126, 35,116,191, 73,170, 16,129,170,140, 11, 21, 53,202,247, +175,202,192, 85,236,147, 5,192,165,138,160,248,126,167, 88,241,189,123, 72, 84, 35, 47,175,224, 51,187,126,254,222,103, 91,172, + 5,199,174, 20, 98, 88,247,186, 48,106,115, 48,111,238,187, 69, 28,152,149, 23,241, 26,139,217,180,173, 80,105,251,156, 93, 79, +178, 85,123,147,240,111,214, 74,161, 84, 30,253, 98,201, 10, 91, 64, 96, 29, 97,219, 89, 77,158,214,232,252, 67,172,208,105,177, +240, 76, 96, 82, 87,204, 85, 89,211,134,109,230,127,134, 64, 96, 12,159, 44,217,140, 57,211,134, 67,173, 24,165,228, 56, 78,105, + 48, 59, 48,101,214, 42, 44,252,232, 21,119,165, 92, 12,142, 3,204, 86, 39, 70,143, 24,226, 90,198, 51, 59,144,116,110,163, 94, +151,178,231, 70,197,102,193,142,221, 6, 92,236,216,177,163,198,219,219, 27, 10,133,226,247,200,132,139, 55,235,202, 70, 11,230, +105,144,233,238,238,222,211,195,195,163,162,158, 65,163,209,236,120,144,220,167,211, 20, 28,205, 73,139,239,208,181,247, 32, 28, + 63,176,131,157,221,247,195,184,218,204,177,227,237,227,125,231, 82,124, 82, 83,142,243, 41,141, 96,149,153, 43,171, 93, 64,120, +160, 18,119,210,146,224,229,233,121,199, 85, 61,101, 64,147,103, 56,158,189,198,129,173,214,231, 36,110, 46, 51, 59, 47,168,130, +154,196, 93,187,122,249,243,129, 35, 39,139,251, 13,155, 36,250,110,238, 27, 51,112, 95,231,212,106,176, 37, 36, 36, 92,127,229, +149, 87,186,196,196,196, 56, 1, 24, 57,142,179,139, 68, 34,165,213,106,149,246,238,221, 91,123,243,230,205, 19,112,161, 51, 98, +247,177, 91,252, 56,185,110, 64,131,168,246, 47,132,187,235, 30,239,221,189, 51, 58, 55, 15,197,157,238,157, 1, 96,114,186, 94, +221,184,219,196, 31, 54, 69,248,215,221,251,221,154,221,115,198, 13,239, 59, 37,100,208,172, 69, 89,187,103, 86,219,193, 52,227, +250,241,254,149,217,247,210,102, 67, 9,212, 10, 49,220, 21, 18,184,187, 73, 96,119,176,218,212, 20,153,221, 33,148, 70,176,172, + 14,232, 77, 14, 28,189,156,139, 28,173, 21, 26,157, 13, 38,155, 19, 12,172,180,246,233,194, 93, 60,239,214,105,175,123,215, 62, +188,173,118,229, 87, 11, 60,182,158,206,188, 55, 66,207, 83, 41,131,187,178,116, 84,245,201,147, 39,225,235, 91,115,237, 94, 16, + 4,108,217,127, 30,139,126, 60,138,253,171,223,133,155, 84,132, 86,207,204,194,203,131, 59, 66, 96, 2,146, 18,174,229, 70, 53, +107, 29,200,243, 10,240, 28, 7,139, 93, 0,192,170, 60,159, 86,171,213, 55, 35, 35,163,164, 97,195,134, 65,117,234,212, 25, 38, + 18,137,152, 28,176,236,248,185,200,120,100,207, 79, 74,131,201,226, 84, 58,180,171, 27,102,155,158,138,138,138, 2,199,113,204, +207,207, 79,122,244,232, 81,125,203,150, 45,253, 31,208, 92,241,138,128, 70, 75, 95,157,248,214,176, 6,145,145,216,252,211,106, + 48,198,109,117,245,251, 27,118,199,224,179,247,255, 56, 98,112,234,204,101,109, 23,206,154,252,135,255, 77,124,127, 81,219,234, +238, 25,117, 91, 60,246,110,147, 38,205, 16,115, 45, 19,243, 63,156, 24,107,206, 75,121,193,170,246,157, 96,211,103,191,221, 38, +186, 29,130,124, 61,144, 85,100,193,211,163, 6,163,107,183,238,136,191,114, 17,159,125,244, 78, 12,140,214,126, 44,255,186,201, +149, 99, 21,152,228,181,222,253, 7, 75, 76, 22, 27,150,205,255, 24, 19,166,125,142, 78,143, 13,146, 92,189,124,246, 53, 0,159, +186,154,102,139,205,137,222, 45,253, 74, 77,179, 93,192,174, 20,145,184,178, 28, 40, 22,113,124,155, 72, 47,152,172, 14,148, 24, +237,213, 63,168,164,146, 28,141,182,164,222,215,115,222, 18, 25,204, 14,228,107,173,200,211, 90, 80,160,249,221, 88, 21,104, 45, +200,215, 90, 33, 17,115, 72, 76, 78, 7, 47, 17,215,186,255, 93,177,222,142, 14,141,188, 75,203,232, 3,182,134,216,197, 30, 29, +247,159,184, 50,116,209,162,197,110, 87, 82,117,136, 75, 41, 41,139, 92,137, 32,151,240,144,149,189,118, 10, 64, 77, 63,225, 25, +208, 32,226,165, 87,198,245,241, 80, 43,144,117, 43, 15, 98, 17, 7,145,136,131,103, 64, 40, 60,229,102,188, 49,113, 60,252,124, +189,144, 81, 96,193,210,237,137,136,187,126, 27,130,169,118,201, 94,182,226,231, 39, 94,125,125,170, 23, 47,145, 97,221,129,212, +210,227, 20, 57,113,243,236,110,115, 86, 82,188, 65, 95, 82,200,192,156, 46, 86,252, 57,230,112,150, 26,211, 57,159, 76,199,207, + 63,126,131, 3,151,242,238,117,206, 58,189,117, 33,222,122,127, 54, 10, 74,172,101, 89,191,250,200,213,125,239,243, 43, 68,158, +254,244,190,130, 41,170,236, 61, 87,246,222, 90,133,134,245, 62, 83,101,189,239,255,214,251,244, 92,154,187, 79, 92, 93,228,202, +211, 59,232,204,206, 77, 43,125,182, 93,178,226,120, 92,169,185,114, 88, 52,248,118,254,251,217, 70, 77, 73,143,234, 38,108,252, +147,185, 10,104,212, 66,174, 82,157,248,112,246, 82, 75, 96,157,122,142,189,151, 75, 10,117,102,231,159,194, 32, 82,165,202,169, +242,244, 55,123,133, 71, 47,146,152,172, 31,231,231, 95, 55,212, 20,105, 18, 24,195,158,115, 57, 96,172,180, 74,244,203,201,187, + 40,171,137,195, 41,148, 54,159, 28,186,156, 7,113, 89, 63, 19, 87,195,220,223,174,248,166,228,169,150, 90,195,200, 57,159,220, +107, 22,236,212,186, 52,114,229,225,225, 1, 47, 47, 47,168,213,106,184,210, 68, 88, 78, 85,163, 5,221,221,221,123, 94,190,124, +217,205,195,195, 3, 34,145, 8, 22,139, 5,205,155, 55,127,160, 2,174, 14,106,242,122,135,199,134,204,232,246,216, 32, 28,221, +191,141,157,221,191,102,124,109, 39, 48,124,170,111,151,221,159,125,246, 73,196,135,159,127, 45,119,119, 19,227,134,222, 10,158, +227, 16, 30,168,132,175,138,199,241, 29,235,204,195, 7,117,113,121, 82,187,208,208, 58,235, 23,126,181, 82,181,112,222,172,222, +238,117, 26, 31,213,221, 77, 40, 2, 0, 67,206,205,249,202,160, 38,215,235,254,118,112,111,235,158, 67, 16, 24, 18,249,120, 45, +194,188,140,227, 56, 99,114,114,114,202,135, 31,126,216,120,222,188,121, 76, 36, 18, 9, 0,228, 75,150, 44, 49,222,186,117,235, + 50, 74,135,216,162,166,232, 85,159,199,155, 79, 81,203,156,157,124,148,124,243,200, 32, 37, 58, 55, 47,109,253, 28,254, 84, 55, +132,134,133, 33, 57,199,216,166,200, 40, 72,244, 86, 81,228,242, 21,113, 23,234,251,137,198, 57, 76,214,235,168, 97, 18,216,170, +242,108,121,199,247,242,232,149,187, 66, 2, 1,168, 77, 77,145,217, 29, 2, 44, 54, 39, 76, 22, 39, 76, 86, 7, 12, 86, 39,140, + 86, 39, 4, 86, 90, 38, 56,142,131,205, 33,192,165,106,242,125,121,223,195,199, 15,145,245, 75, 71,189,186, 43, 74,167,108,240, + 80, 74, 74,199, 58,251,250, 34, 32, 32,192,165, 40,168,213, 86, 90,196,173,118,225, 94,243,189,213,230, 0, 99, 12,137,137, 9, +239,166,165,164, 60,211, 48,170, 97,143,102,173, 90,251, 40,229, 60, 0, 84,105, 6,140, 70,163,211,221,221, 61,192,199,199,135, +191,123,247,238, 61,211,220,176, 77,111,199,246,109, 91, 49,116,232, 16,253,141,243, 87,238, 13, 85, 55,153, 76, 92,215,174, 93, + 61, 66, 67, 67,121,139,197, 82, 82,187,115,192,113, 42,255, 70,131, 67,155,116,249,124,244,152, 9,141,122,247,125, 2,199,142, + 28,196,206,109, 27,215, 26,242, 18, 14,186, 92,222, 27, 55,249,211, 40,194, 6, 81,141,254, 52,138,176, 94, 68, 84,149, 6,203, +211,179,149, 71,171,246,189, 66,211, 10,108,216,183,111, 47, 12,218,156,143,172, 86,189, 17, 18,182,106,207,198,229,175,188,250, +214, 44,143, 94, 61,187,195,219, 67, 9,177, 88,132, 75, 23, 98, 48,239,211, 25, 49, 48, 90,251,213,116,255,188,151,222,102,205, +164, 13,195,234,189, 25,214,160, 5, 46,157, 61,133,164,196,171,215,174, 92,136,105,222,176,101, 39,248,135,132,191,201, 53,107, + 54,143, 93,191,110,171, 73,199,106, 54,167,191,252,210,139,168, 56,138,176,115,116, 99, 95,238,254, 2, 0,192,168,203,179,253, +176, 96,202,173,242, 81,132,130,205,154, 94,149,174,182, 56,127,203,241, 51,231,166, 61,243,212, 19,124, 65,137,181, 52, 98,165, +181,150,109, 22, 20,148,191, 46,177, 32, 42, 68,141,132,107,151, 4,179,182, 96,107, 45,203,165,249,229,231,250, 95, 47,207,187, +130,192,192, 1,230,218,150,111, 38,241, 24, 63,255,203, 69,110, 87, 82,244,136, 75, 45, 41,109, 18,148,136, 74,141,149,132,191, +103,182, 74, 71,167,215, 16, 13,226, 68,115,198,190, 52, 2, 5, 37, 54, 8, 2, 32, 22,241,101,155, 20, 25, 58, 14,119,116, 70, + 20, 20,231, 35, 37, 45, 29,154,156, 36,240, 60, 15,191,144, 70,112, 53,220,232,100,178, 96,163,149,181, 28,246, 84, 15,241,182, +223,178,161,148,139, 97,209,229, 98,223,166, 5,249, 22,125,201,231, 38,163,126,155,169,240, 86,150,171,105,231, 57, 46,191, 68, +111, 14,148, 75, 68,216,252,227,215,120,238,229,137,101, 39,165,244,207,187, 31,124, 6,240, 28,138,138,117,224, 56,174,182, 81, +209, 11, 53,188,127, 16, 30,134, 70,237, 13,150, 82,233,123,120,231,207, 43,125,126, 75,225,113, 62,161, 24,195,186,215,133,221, + 92,140,165,179,223,206, 41, 41,201,123, 76,151,127, 43,185, 86,191,196,243,253,135,143,157,118, 45,178, 81, 51,203,177,171,250, + 84,141,193, 94,101, 63,134,206,195, 62,188,118,241,215,175,158,212,218,147, 39,169, 67,154, 59, 5,135, 99,190, 49, 47, 97, 86, + 21, 77,132,178, 89, 75, 55,223,107, 30,124,111,222,186,210,215, 78, 39,156, 76, 0, 19,128, 55, 62,250, 22, 14,193, 9,193,233, +132,224,100,176, 59,153,178,166,195, 13, 8,169,183,173,248,230, 47, 77, 70,126,250,231,102, 65, 47, 47, 47,248,250,250,194,215, +215, 23,229,134,232,175, 54, 11,122,120,120, 64,173, 86,227,212,169, 83, 80, 40, 20, 80,169, 84,181,210,173, 96,174, 38,181,239, +245,204,215,143, 61,253, 10, 14,109, 91,193, 46,156,220, 61,193,152,155,176,202,229, 72,188,211,201,217,237,118, 60,213,175, 87, +122,236,181,219,251, 63,152,246,218, 19, 93, 6, 78,144,119,110, 92, 7,102,171, 19,153,105, 73, 56,190, 99,141,185, 81, 68,240, +129, 62,221, 59,166,219,237,118, 56,157,206, 26, 31,224,102,171,173, 64, 36, 81,168, 70,140, 24, 41,185,112,254,252, 86,117, 64, +163,205, 78,142,191,194, 49,161, 21,199,113, 67, 91,181,106, 10,155, 93,128,209, 88, 82, 92,219, 52,235,116,186,148,213,171, 87, + 71,188,244,210, 75,202,102,205,154, 73,146,146,146,176,112,225,194, 66,157, 78,151,226,170,198,193,147, 9, 75,196, 92,241, 45, +153, 96,123, 33,220, 93,247,120, 70,183,206, 24, 49,176, 27,126,254,245, 52,142,159,138, 65,186, 94,125, 89,239, 16,239,184,147, +158,101,105,238, 83,178,245,233,206,245, 68,155,127, 44,222, 26,208,251,253,231, 25,147, 31,204, 63, 62,211,224,250,195, 27,208, +153,236,240, 80,150,206,215, 84, 30,201, 18,113,156,203, 78,136, 3, 82, 78,197, 92,106,209, 46,170, 25, 98, 83,180,200,211, 88, + 96,178, 56, 32, 8, 12, 2, 24,124,221,101,112,147,242,200, 72, 75,129,192,108,169,181,124, 68,228,247,236,209, 83, 12,112,224, + 56, 38,150,136,197, 96, 40,157, 23, 81,161, 80,232, 3, 2, 2, 92,138, 96,217, 28, 14, 12,125,162, 35, 58,181,111,133,103, 38, + 44, 0, 0, 28, 89, 59, 29,222,106, 9,126, 94,191, 10, 25, 39, 22,175,143,236, 50,241,224,213,248,107,207, 94,139,253,109,228, +128,182,138, 54, 65,226, 44,105, 85,122,122,189,126, 43,199,113, 50,169, 84,250, 68,143, 30, 61,124,182,110,221,170,241,243,243, + 19,100, 82,105,254,211,131, 6, 10, 18,169,180,168,124,223, 51,103,206, 72, 38, 76,152,224, 94, 92, 92,156,145,155,155, 27,195, + 24,179, 87, 95, 1,108,210, 23, 60, 54,130,227,220,212, 10,101,122,231,190, 35, 66,218,119,234,232, 57,120,232,115,144,203,228, + 56,116,112, 63,150, 45,158,247,139, 62,251,198,216,218,156,201,135, 49,138, 80,171,245, 52,220,186,126,165, 56, 53,207,234, 45, +241,138,130, 68,238, 62,129,243, 12, 89, 42,146,171,103,250,183, 30,236,177,101,215, 94,196, 95,189, 10, 31,133, 29,201, 73,183, +140, 87, 47,199,126, 99,228, 36,179, 88,254,117,163,171,199,169, 44,116, 62,219,249,197, 39,188, 45, 54, 39, 78, 30,253,213, 44, + 56,132, 39, 98, 78,236, 77,170,219,168,189, 91,139,246,125,188, 11,118,174, 26, 10,224,231,154,116, 50,111,252, 57, 98, 27,214, +184, 67,234,145,163,135, 61, 3,195,155,139, 56,112,176, 89,204,200, 79,190,224, 48,230,222, 44,209,102,198,187, 52,170,182,240, + 14, 62,122,127,230, 23,147,218,183,107,167, 98,112,251, 67,196,170,220, 88, 21,148, 88,225,231, 46,131,169, 36, 31,183, 46,236, + 55, 27,243, 69,213,206, 87,230,176, 26,148, 5,121,185,247,154,210,244,185, 9,157,170,219,191, 32, 47, 87,230,176, 26,148, 53, + 63,234, 68,240, 80,201, 16,159,122,247, 94,135,118,185,164,180,239,149, 76, 34,186,215, 15,171,252, 94, 80, 3,189,164,110, 94, +184, 91,104, 6, 7, 6,193,233,128,195,110,133,174,164, 4,119,179,114,144,155,147, 11,157, 78, 3,165,218, 27, 45,218,116,128, +187,202, 13, 87,142,255, 2,198,152, 75,243, 18,218, 57, 73,227,246,157,186,203,175,166,149,246,181,114,147, 48,236,222, 56,175, + 80, 95,146,215, 93,151,149,120,171,182,247, 98,135,211,121, 56,238,250,173,230,117,131,235,115,151,147,180, 88,255,253, 87,176, +150, 69, 50,237,118, 39,174,102, 24,144, 93,100, 68, 70,242, 13, 38, 56,157,135,241,136, 83,165,193,146,202, 36, 10, 15,159, 16, +124,246,194, 40,124,243,205,183, 72,189,115, 23,203, 62,155,146, 83,162,203,239,173,203,186,149,232, 98, 45,176,111,249, 92, 25, +134,156,155,243,199,126,147,154,185, 43,182,136, 55, 89, 89,181, 29,120,220,252,195,209,125,236,194, 3, 38, 93,145,204,105, 49, +138,119,175, 31,187,177, 50,205, 82,199, 12,235,231, 83,135, 67,173, 16,131,227, 56,148, 55, 11, 46,255,108, 60,148,242,210,182, + 99,147,197,129, 81, 83, 22, 97,253,162,183,193, 0,188,240,220,105, 99, 85,199, 89,161, 9,175,110,122, 90,222,221,190,131,166, + 30, 49,219,228,150,129, 67, 94,186,216,174, 93, 59,141, 66,161,128, 66,161,128,135,135, 7,188,189,189,225,229,229, 85, 99,218, +171,156, 68,180,194,104, 65,158,231,193,243, 60, 84, 42, 21,212,106, 53, 84, 42, 85,181,154, 85,154,171,158, 79, 47,239,243,204, +171, 56,180,109, 37,187,112,114,247,107,198,220,132,239, 93,189, 70,101,205, 58, 87,134, 14, 29,218,114,194,132, 9,210,153,211, + 38, 28,248,245,224,241,196,205,123, 86, 14, 42, 46,214,132, 50,198,224,229,233,121,103,248,160, 46,187,123,119,109,159,126,228, +200, 17, 97,227,198,141, 22,142,227,226,107, 58,206,130,188,188,181, 71, 14, 31,253,164,123,207, 94, 88,245,227,198,158,215,174, +223,232,153,148,116, 11,161,225,145,168, 31, 17, 5, 35,231,141,163, 39, 78, 65,175,201, 91,235,202,113,222, 23,197,226,138,139, +139,127, 27, 62,124,120,191,211,167, 79,243,195,135, 15, 55, 22, 20, 20,156, 41,175, 55, 85, 21,189,170,168,249,219,183,131,243, + 1,172,173,215,107,204, 47,119,109,154, 55, 1,204, 11, 11, 15,195,241, 83, 49,136, 57,125,238,219, 2,101,216,172,177,163,198, +140,175,247,180,232,213,167, 59,215, 19, 5,120, 43,241,211,202,133,162, 93, 49,105,139,210, 10,157,171, 0,124,230,202, 53,186, +247,192,208,217,208,181,169, 15,236, 78, 6,129,149,222,104,221,221, 36,149,222,112, 43,211, 20, 91,229, 99, 95,155, 48, 33,169, + 69,171, 54,111,141, 26,243,154,180, 77,100, 40,206,223,214, 0, 28, 7,159, 32, 21,178,179,179,113,114,203, 74, 71,241,221,155, +223,138, 68,194,167,181,201, 75, 69,105,177, 13, 43,236, 55,190,160,160, 0,199,143, 31, 71,185,177,242,247,247,175,212, 96,221, +175, 89,152,155,117,230,179, 47, 87,116, 29, 55,122, 8, 6,246,106,142, 19, 23,146, 96, 45,155,111,169,124, 72,120, 74,204,119, +178, 55,135, 71, 90, 39, 13,109, 84, 98,178,203,210, 62, 74,213,158,172, 56,202,245,126, 77,198,152,149,227,184, 93, 9, 9, 9, +221, 90,183,110, 93,111,239,222,189, 69,215,206, 29,152, 92,241, 56,166, 78,157,170,254,230,155,111,148,140,177, 51, 22,139, 37, +217,165,180,243,248,233,210,197,139,190, 54,187,128, 83,231,174, 52,237,211,181, 13, 4, 6, 92,184,112, 1,171,126, 88,101,142, +143,187,188,192,144, 27,244,105, 85, 3, 68,170, 58,159,206,191, 48,138,176, 92,147,177,227, 14,117, 96,147,111,207,156, 58,241, +129, 60,164, 29,154, 60, 57,227,233,187, 87,118, 61, 29,212,172, 63,252, 34,187, 32, 43,110, 23,206, 28,216,176, 87,112, 56,166, +187, 9,124,186, 33,255,166,193,213,242, 94,142, 92,161,252, 79,179,182, 61,145,145,158,134,212, 91, 87,215,154, 10,111,101,169, +131,154,172,205,202, 76,127, 45,162,121, 87,156, 62,240,243,228,170, 12, 86, 77,121, 62,212, 95,177,114,239,158, 93, 35, 50, 51, +191, 11, 50,152,204,114,198,152, 89, 46, 19,231,168,121,221, 38, 87,143,147,177,235, 54,149, 79,253,161,207,141,122,237,215,101, +203, 22, 75, 2,189,148,200, 41, 54,163,196,100,131,206,104, 3,207,113,104, 24,162,130, 81, 87,132, 19, 91,190,180, 91,245,197, +195, 25,187,109,171, 74,179,116, 61, 65,246,198,212,137,199, 32,243, 12, 13,137,232, 51,163,218,232,156, 46, 43,110,208,212,137, +187, 27, 51,198,250,168, 3,155,232,244,185, 55, 63,172, 42,237, 28, 87, 90,190, 71,246, 14,133,205, 81, 58,127,152, 67, 0,156, +130, 80, 22,213, 3,216,189,118,123,174,134,180,115,194,166, 95,207, 32, 43, 87, 3,147,213, 14,139,213, 1,155,221, 9, 94, 36, +130,151,183, 23,162,234, 71,195,211,203, 3,185, 57, 89,136, 57,178, 11,137,113, 39,206,112, 12,179,140,121,137, 71, 92,185, 70, + 82,133, 87,227,224,144, 32, 62,187,196, 10,133, 76,132,203, 39,246,218,236, 86,203, 2, 87,204, 85,101,154,154,194,162, 69,111, + 77,123,231,133, 53,171,127, 12,106, 25,225,129,204, 2, 19, 50,243,205,208,153,237,101, 6, 76,128, 69, 95,128,184,163, 63,230, + 56,205,186, 69,255, 90,131, 37, 56,156,214,132,219,201,152, 62,235, 75, 36,167,165, 99,217,220,119,114,245,181, 48, 87,149,177, +122, 82,253,159,107,247,141,178, 41, 73, 62, 77,171,190,190,125,127,179, 32, 19, 32, 48,134,221,231,114,238, 53, 11, 10,101, 61, + 42, 99,147, 52,181,106,194,139, 75,208,109, 48,153,114, 61,111,222, 94, 80, 12, 0, 34,145,232,222, 86,222, 87,202,108, 54, 91, + 31,164, 89,240,254, 14,237,130, 32,192,195,195, 3, 10,133,162,214, 77,143,170,192,198, 35,218,247,122,230,235, 62,131,199,225, +240,246,239,217,133, 19,187, 38, 26,243, 18, 86,214,186, 15, 66,113,241, 53,142,227,110, 45, 88,176,160,205,170, 85,171, 34,166, + 77,155,150,188,238,235, 79,150, 1, 64, 97, 97, 33, 0, 32, 54, 54,150, 77,156, 56,209, 98, 54,155, 83,138,139,139, 47, 49,198, +106,108, 58, 48,229, 43,231,172, 90, 62,175,197,157,187,217, 67, 34, 91,116,128,127, 68, 7, 4, 53,236,136, 98,157, 13,231,111, +103, 33,249,198, 17,220, 56,181,101,175, 81,237,248,164,182,199,220,186,117,235, 80,158,231,235,235,245,250,160,102,205,154,181, + 86,169, 84,177,173, 91,183,142, 22,139,197,153, 23, 47, 94, 76,171,141, 86,218,241, 53,150,122,189,198, 44, 77,215,185,247, 78, +206, 49, 70,167,235,220, 99,141,114,207,183,243,142, 44,177, 4,246, 91,176,136,217, 10,174,109,254,177,100,235, 79, 43, 23,138, + 70,141,159,234,188,170,245,126, 83,172,144, 29,154,251,114,203, 90, 52, 63,241,217,147, 94,122,230,247,105, 26,202, 34, 87,101, +175, 93, 10,199,107, 52, 87,180, 0,222, 83,132, 52,255,250,234,155, 19, 62,107,213,190,235,139, 61, 6, 12,231, 29, 82, 53, 14, +108,255,142,165,196, 29,221, 44,102,206, 15,140, 46,204,222, 95, 99,179,143,213, 90,163,185,170, 52,242,114, 71,213,107,243,198, + 31, 94,222,186,125,219,220,193, 79, 63,227,187,252,163,231,241,229,138, 29, 80, 41,228, 96,130,128,225,143,133, 13,187,177,177, +255,160,208, 64,183, 58, 91,143,101,158,124, 99,241,213,247,140, 70, 91, 98, 77,163, 92,203, 12,243, 41,119,119,247,252,110,221, +186,117,146,203,229, 92, 65, 65,129, 56, 32, 32,192,225,233,233,105,205,204,204, 52, 90, 44,150,173,140, 49, 67,109,210,105,179, + 11, 72,205, 53, 99,231,182,173,184,114,238, 8,110,220, 72,208,221,184,126,227, 43, 78,204, 22,235,115, 18,139, 30,228,220, 9, +149,142, 34,100,181, 30, 69,104, 16, 41,230,196,238,249,178, 87,212, 99,147, 59,251, 54,232, 10,239,240,210, 49, 58,218,204,171, +184,115, 97,243, 78, 93,150,244, 57,198,174,218, 31,244, 26,135,212,141,136, 98, 34, 25,126, 59,254, 43,152, 32,124, 11, 0, 76, + 16,190,141, 61,189,247,181,142, 79,190, 10,159,128,122,173,203,199,206,215, 86, 91, 42,230, 13,251,182,174,217,158,154,154,138, +155, 55,111,226,246,237,219, 40, 42, 42,194, 79, 63,165,214,234,250, 24,138, 82, 15,169,125, 35,251, 63,251,252,200,221,195, 70, +140,118,139,136,106,201, 55,174,235, 13, 95,181, 24, 9,183,211,144,120, 49, 78, 72, 56,191,215,108, 43,201, 27,108, 44, 74,173, +210,240,169,252,155, 5,114, 60,155, 94,190,182, 96,231,206, 93, 27,191,243,249,220, 78,190,254, 1,149,222,199, 11,243,243,100, +239,190,177,171,113,204,217,223, 92, 90,139, 80,112, 58, 11,199,191, 60, 92, 16,149, 46,228,137,123,113,105,174,244, 98,151, 86, +162, 74,255,207, 4, 71,141, 17,251, 49, 67,186,195, 33, 8, 48,152,108, 40, 49, 88,160,213,153,145,157, 87,136, 43,113,113, 56, +177,123, 23,146, 18,174,164,216,173,214,131, 60,207,109, 49,230, 36,156,168, 93,203,146, 56,194,215,199, 7, 41, 69,122,184,201, +196, 72, 75,188,104, 49,148,104, 55, 60,104, 62, 50, 22, 36,102,171, 2, 27,247, 27, 62,124,196,254,199,250, 63,237,217,190, 75, + 95,165,159,135, 23,164, 98,134, 91,169, 89,184,116,102,191, 33,249,202,201, 18,187, 85,255,196,195, 88,165,229,127,214, 96,149, +232,242,123,191, 50,118,194, 1, 94, 44,146,131, 9,102,163,177,248,137,191, 98,174,254, 91, 48,230,204,124,249,133, 33,127,168, + 11, 56, 4,166,120,225,185, 3,166,138,117, 3,187,147, 41, 95,120,238,140,177,244,198, 81,117,135,189,123, 77,120, 63, 31,202, + 76, 79, 47,188, 80, 84,100, 57,246, 87, 71,246, 85, 92, 91,176,154,209,130,134, 38, 77,154,220, 51, 85, 34,145, 8, 78,167,211, +229, 27,144, 84,174, 24,247,216,211,175,112,135,119,124,207,206, 31,223, 49,201,152,151,184,226,193,207, 41,179, 1, 56,199,113, +220,213, 15, 62,248,160,125, 96, 96, 96,224,199, 31,127,236, 86, 82, 82, 34, 89,190,124,185,185,160,160, 32,167,164,164, 36,134, + 49,102,114, 93,243,146, 29,192, 80,117, 96,163,222,108,235,247,143,123,249,213,233,231,233, 95,183,129, 38,255,110,138, 54, 63, +235, 32,128,195,101, 19, 60,214,138,232,232,232, 72,158,231,135, 3,104,161, 82,169, 26,170,213,106, 57, 99,172, 9,199,113,215, + 4, 65,136,107,214,172,217, 30, 0,181,186,126,105,199,215, 88,122, 76,250, 97, 99,145, 81,144, 90,121,233,198,180,227,107, 44, + 0,144,123,112,154, 17,192,206,192,222,211,135,238,138, 73, 91,118,173,216,115,114,222,177, 57,187,106,123,204,154, 59,151, 27, + 62,172,252,111,202,186,150, 9,224,101, 85, 96,227,133,241,177, 49, 51, 57, 6,137, 19,142,217,198,220, 91, 23, 31,134,190, 68, + 34, 49,215,169, 83,167,210,209,130,114,185,220, 92,253, 53, 63,238, 0,176,138,227,122,253,184,237,151, 31, 95,222,177,107,231, +220, 30,125, 6,251,186,213,173,139,250, 1, 28,126,156,222,118,242,145,216,252,243, 79,191,115,242,155,228, 44,115, 28, 99,172, + 86,253, 93,116, 58, 93, 34,199,113,197,122,189,254, 25,198,216, 29,142,227, 66,139,139,139, 47,219,237,246,248, 90, 27, 1, 1, + 35, 59,119,238,240, 19,199,113, 98,230, 16,230,199, 72, 68, 27,205,217, 55, 50, 31,196, 80, 84,164,101,125, 15, 76,249,120,105, +219, 6, 13, 27,181, 45, 95,139,176,121, 61,119, 76,120,111, 97,219,122, 17, 81,109,127, 95,159,176,250, 81,132, 44,235,146,137, + 11,108,249,120,194,193, 5, 31,249, 38,157,153,164,240,169,171, 54, 20,164, 21, 21,167, 93, 92, 96,204, 11, 92,240, 32, 19, 75, + 86, 36,245,246,181,197,171, 22,188, 55, 45,251,110,202, 42, 67, 94,226, 85, 0, 48,228, 37, 94, 85, 6, 54,250,168, 32, 39,115, + 90, 97, 94,242,130, 7, 61, 23, 6,131, 33,107,195,134, 13, 94, 93,187,118,229, 3, 3, 3,145,159,159,143, 99,199,142, 9,130, + 32,220,173,173,150,190, 48,249, 24,199, 53,240, 89,187,226,235,249, 82,149,251,147, 14,135, 35,132, 49, 64, 44, 22,103, 91,141, + 37,251,117,188,234, 29, 86,148, 90, 67,190, 20, 56, 0,124,249,218,130,130, 32,112,243,151,253,152, 38,113,115,175,180, 73,213, +110,214, 41, 5, 65,112,121, 45,194,226,244,139, 13, 30, 86,249,230, 24,155,213,186, 93,167, 25,118,187,205,140,210,254, 96,102, + 0,102,198, 80,200,243,220, 9,145, 96, 63,160,253, 11,149, 40,142,131, 7,227,196,112, 87,136,193,129,131, 94, 91,196,106,211, +231,170,210,235,157,155,112,141,227,122,133,239,179,254,242,210,209, 67,123,159,115, 58,157,245,203,114, 78,170,197,100,216,172, +207,246, 94,203,216, 5, 7,254, 5,136,171, 14,137,222, 74, 4, 16,254, 79, 79, 64, 97,202,249,118, 15, 83, 47, 59,183,232,199, +254,131,167,177,212,180,188,243, 25, 57,150,181, 21,151,191,249,171,154,119,238,228, 31, 43,107, 22,180,252, 57, 34,241, 96,163, + 5,239,213,190,205,166, 47,150,124, 48, 2,102,147, 97,157, 49, 47,241,199,135, 99, 94,153, 9,192, 9,142,227, 60, 39, 77,154, + 20,173, 86,171, 37, 5, 5, 5,231, 24, 99,218, 7,213,212,231, 38, 30, 3,112, 12,192,244,135,113,140,177,177,177,201,109,218, +180, 89,207,243,124,125,198, 88, 32, 99,204,179,204,192, 22,136,197,226,187,215,175, 95,191,251, 64,105,183,184,239,211, 91, 69, + 81, 14,230,189,255, 79,166,195, 55,224, 80,122,145,243,123,145,202,237, 31,211,135,192,144,155,112, 13,192,179, 15, 91,183,186, +121,174, 92,207, 71,191, 27,173,227,191,174,121,153,151,121,206,238,211,216,108,236,247,214,221,207, 78,197,231,159, 99,140,233, +254, 66, 30,205,151,201,100, 38,142,227, 66,165, 82,169,201,106,181,198, 61,208,249, 43, 53,247,254, 15,243,220, 9,224, 46,182, +109,219,174, 86,251, 87,155,214,220,120, 35,128,233, 92,179,102, 31, 43,147, 46,120, 27, 11,252, 10, 25, 75,120, 40, 15, 42,125, +206,205,207, 80,214,204,253,135,136, 68,110,226,108, 0,179,255,138,246,133, 11, 23,118, 47, 88,176, 64,187,108,217,178, 48,167, +211,169,180, 90,173, 70,147,201,148,154,153,153,249,219,131, 93,243, 36, 43,128, 55,203,182, 7,136,178,220,204, 81, 7, 54, 90, +218,165,115,151, 55, 75, 43,230,108,105,234,137,165, 83,170,251,142, 58,176,145,169,226,254,213,173, 69,248, 48,209,231, 37,126, + 11,224,219,255, 94,132, 66,200, 31, 57,236, 25,160,108, 66,109,193,225,200,127, 40,178,165,101,254, 7, 60,192,226,229,143, 20, +172,108,121,132,255,198, 6,160, 47,105,146, 38,105,146,102, 37,251,242,116, 62, 73,243,239,212,116, 11,110, 26,234, 22,220, 52, +212,213,239, 87,182, 63,157, 79, 6,218,170,222,196, 32, 8,130,248,255,175,216, 9,116, 22,136,191, 19, 83,214,245, 59,255,205, +253, 9,130, 67,233,170,212,149,221, 0, 93,110,254,224, 56,174,239, 3,220, 96, 15,147, 38,105,146, 38,105,146, 38,105,146,230, +191, 75,179, 38,237,218,248,143,127,122, 77,146,154, 8, 73,147, 52, 73,147, 52, 73,147, 52, 73,147,154, 8, 31,226,198,131, 32, + 8,130, 32, 8,130,120,168,144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8,130, + 12, 22, 65, 16, 4, 65, 16, 4,241,224,112,140, 49,148, 45, 49,197, 1,248,195,107,130, 32, 8,130, 32,136,255, 23, 67,242,136, +121, 17,190, 98,194,232,242, 18, 4, 65, 16, 4,241,119,154,172, 71, 37, 45,247, 12, 22, 99,140, 35,147, 69, 16, 4, 65, 16,196, +223,197,163,228, 69,248,251, 19, 70,151,151, 32, 8,130, 32,136,191,211,100, 61,114, 6,139, 32, 8,130, 32, 8,130,248,235,112, +101, 83,222, 19, 4, 65, 16, 4, 65, 16, 15, 9,138, 96, 17, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248, 23, 27, 44, +142,227,250,146, 38,105,146, 38,105,146, 38,105,146, 38,105,146,193, 34, 8,130, 32, 8,130, 32,200, 96, 17, 4, 65, 16, 4, 65, +144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248,155,224, 0, 84, 58, 18, +128, 49,118,216,101,145, 7, 24, 77, 80,147, 62,105,146, 38,105,146, 38,105,146, 38,105, 62,122,154, 53,105,215,198,127,252,163, + 97,140,253,215, 54, 0,125, 73,147, 52, 73,147, 52, 73,147, 52, 73,147, 52,255,109, 27, 53, 17, 18, 4, 65, 16, 4, 65, 60,100, +200, 96, 17, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8, +130,120,112,184,178,209, 0,224, 56,142, 49,198, 56, 58, 37, 4, 65, 16, 4, 65,252, 45,166,228, 17,242, 34,124,197, 4,113, 28, +199,232,242, 18, 4, 65, 16, 4,241,119,153,171, 71,197,139, 80, 19, 33, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136, +127, 54,212, 7,139, 32, 8,130, 32,136,127,134, 41,121,132,188,200, 61,131, 69, 16, 4, 65, 16, 4, 65, 60, 28,168,137,144, 32, + 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16,196,191,216, 96,113, 28,215,151, 52, 73,147, 52, 73,147, 52, 73,147, 52, 73,147, + 12, 22, 65, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, + 8,130, 12, 22, 65, 16, 4, 65, 16,196,223, 4, 7,160,210,145, 0,140,177,195, 46,139, 60,192,104,130,154,244, 73,147, 52, 73, +147, 52, 73,147, 52, 73,243,209,211,172, 73,187, 54,254,227, 31, 13, 99,236,191,182, 1,232, 75,154,164, 73,154,164, 73,154,164, + 73,154,164,249,111,219,168,137,144, 32, 8,130, 32, 8,226, 33, 67, 6,139, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, + 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, 16,196,131,195, 49,198,192,113, 28, 43,123,223,139, 49,118,130, + 78, 11, 65, 16, 4, 65, 16,255,175,134,228, 17,243, 34,226,242, 23,140, 49,174, 44,113, 28, 93,102,130, 32, 8,130, 32,254,191, +121,148,188, 8,127,159,115,236, 69,151,151, 32, 8,130, 32,136,191,131, 71,201,139,252, 33,130, 69,151,150, 32, 8,130, 32,136, +191,139, 71,201,139, 80, 39,119,130, 32, 8,130, 32,136,135, 12, 87, 54,229, 61, 65, 16, 4, 65, 16, 4,241,144,160, 8, 22, 65, + 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136,127,177,193,226, 56,174, 47,105,146, 38,105,146, 38,105,146, 38,105,146, 38, + 25, 44,130, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, + 16, 4, 25, 44,130, 32, 8,130, 32,136,191, 9, 14, 64,165, 35, 1, 24, 99,135, 93, 22,121,128,209, 4, 53,233,147, 38,153, 7, + 10, 66, 0, 0, 32, 0, 73, 68, 65, 84,105,146, 38,105,146, 38,105,146,230,163,167, 89,147,118,109,252,199, 63, 26,198,216,127, +109, 3,208,151, 52, 73,147, 52, 73,147, 52, 73,147, 52, 73,243,223,182, 81, 19, 33, 65, 16, 4, 65, 16,196, 67,134, 12, 22, 65, + 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, 16,100,176, 8,130, 32, 8,130, 32,136, 7,135, + 43, 27, 13, 0,142,227, 24, 99,140,163, 83, 66, 16, 4, 65, 16,196,223, 98, 74, 30, 33, 47,194, 87, 76, 16,199,113,140, 46, 47, + 65, 16, 4, 65, 16,127,151,185,122, 84,188, 8, 53, 17, 18, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248,103, 67,125, +176, 8,130, 32, 8,130,248,103,152,146, 71,173, 15, 22, 0, 80, 31, 44,130, 32, 8,130, 32,254, 78, 30, 37, 47,114, 47,130, 69, + 16, 4, 65, 16, 4, 65, 60, 28,168, 15, 22, 65, 16, 4, 65, 16,196,255,146,193,226, 56,174, 47,105,146, 38,105,146, 38,105,146, + 38,105,146, 38, 25, 44,130, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, + 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136,191, 9, 14, 64,165, 35, 1, 24, 99,135, 93, 22,121,128,209, 4, 53,233, +147, 38,105,146, 38,105,146, 38,105,146,230,163,167, 89,147,118,109,252,199, 63, 26,198,216,127,109, 3,208,151, 52, 73,147, 52, + 73,147, 52, 73,147, 52, 73,243,223,182, 81, 19, 33, 65, 16, 4, 65, 16,196, 67, 70, 92,217, 63, 37, 29, 63,207,117, 56, 28, 1, + 0, 32, 22,139,243,236,231, 63, 12,174, 78, 68, 2,244,113, 0,223,151, 9,142,179, 51,118,168, 18,205, 67, 14,135,195,187, 76, +179,216,126,254,195,254,213,106,118,152,125,224, 15,251,159,251,224,241, 74,226,139, 34, 73,135,217, 89,247, 29,107, 72, 45,194, +119,206,255,143,227,252, 95,209,252, 55, 35,237,244,121,174,221, 94,154,143, 36, 18,113,158,237, 92,245,249, 72,218,113,118,214, + 31,246, 63,251, 65, 96,117,154, 74,133,188,176, 65, 29,255, 69,213,105, 38,103, 21,188,109, 48,154,125,171,211,172,109,217, 12, + 13, 14,238,227, 44, 43,155, 34, 96,220,157,172,172, 67,255,164,188,196,113, 92, 59, 0, 31, 2,240,168,240,239, 56,198,216, 91, +148, 43, 9,130,120,228, 12,150,195,225, 8,184,180,125, 38, 12, 22,160,207,232,217, 1,145,131, 87,252,244,167,125,204,197, 50, +205,181, 77, 45, 69,246, 18,111,127,177,205, 35, 43, 43,139, 43,187, 97,126, 15, 32,172, 18, 77,239, 75,219,103,194,104, 5,122, +140,152,229, 29, 6,120,228, 75,165, 83, 21, 42, 85,111,147,201,212, 28, 0, 20, 10,197, 53,147,193,112,204,223,102, 91,120,255, +254, 85, 37,160,226,177, 62,246,226,236,128, 38,131, 87, 76,118, 10,130,236,238,133,239,122,152, 11,110,137, 37, 14,203,242, 25, +192,190,153,128,211,149, 19,242,135,223,125,238,125, 95, 9,240,152,204,205,173,181,151,183,119,119,129,177,166,130, 32,112, 78, +135,227,122,137, 86,123, 74,112, 56,174, 56,172, 6,223, 75,187,230, 10,213, 29,231,253,105,121, 14, 16,111, 7,134,169,212,234, +222, 34,137,164, 11, 0, 56,237,246,223, 12,122,253,177, 33,192, 22, 87,210,238,234,249,121,208,253,255,109,216,237,142,128,148, + 3, 51, 97,177, 3,209,207,206, 13,104, 53,114,237, 79, 0, 96,205,187, 18,168,191,181,171, 35, 0,168, 26, 12, 60, 39, 15,138, +206, 5, 0,113,122,118, 64,226,158, 15, 96,177, 3, 77, 7,206, 10,168, 73,115,204,199,191,248,190, 59,126,168, 28, 0, 14,110, +253,186,209,209,109,223, 14, 0,128,199,134, 78,220,215,239,217, 55, 18, 1, 96,254,202,109,190, 63,207,125,190, 90, 77,215,202, +166, 86,170,189,181,167,161,181, 36,219, 43, 84, 37, 14,186,117,235, 22, 15, 0, 33, 33, 33, 46,149,205,186,128,103, 54,240, 58, + 47, 18,117,111,208,176, 97, 52, 0,150,156,148, 20,235,116, 56, 78, 7, 3,203, 31,114, 94,154,204, 24, 27,116,159,233,162, 12, + 73, 16,196,163,105,176, 0,192, 96, 1, 78,220, 6,122,118,106,133,241, 35,159, 84, 87,252,108,203,138, 89, 97,183, 46,236,108, +242,195,218,133,124,171, 86,173,144,146,146,226,210,143, 25,173,192,241, 91, 0, 52, 55,220,139, 85,170,164,197, 95,126,233,241, +248,227,143,139, 67, 66, 66,192,113, 28,114,114,114, 58, 29, 62,124,184,221,148, 41, 83, 94,131,230, 70,177,209, 10,221,241, 91, + 53,235,150, 31,107,243, 70,245,240,225, 27,207,123, 2,192,140,209,203,219, 93, 72,200,245, 73, 74, 74,234,243,222,123,239, 21, +138,142, 29,251,214, 15, 88,147, 11,220,113,229, 56,215,237, 62,231,230,153,189, 49,114,212, 27,111,108,109,216,176,161, 58, 60, + 60,156,115,119,119,135, 72, 36, 66,113,113,113,216,213,171, 87, 7,156, 63,127,222,112,248,196,247,178,139,231,159, 78,206,115, +235,104,118, 41,237,166, 44,183,131,238,238,215, 94, 28, 50,164,238,243,207, 63,239,214,160, 65, 3, 0, 64, 82, 82, 82,212,150, + 45, 91, 70,108,221,186,245, 99,152,178, 28, 70, 43,204, 53,165,253,158, 38, 0, 55,160,139, 87, 64,192, 40,145, 68,210,220,225, +112,212, 41,139, 46,220,117,218,237,215, 52,121,121, 27,238,223,159,248, 51, 22, 59,112, 35, 27,232,219, 61, 26, 47, 14,237,171, + 2,128,247,134,127,222, 41, 61,245,182,212,106,181,162, 81,227,166, 93, 63,155,187,232, 0,120, 30,235,183, 29,190,183,191, 43, +154,113, 55, 82, 48,243,179,197,200,138,223,210,201,169,189,221, 91, 87,162, 21, 1,128,135,167,231,208, 45,155, 54, 30, 11,105, + 57,236,236,237, 2,155, 75,154,213,149,205,253,155,190, 10,206,188,122,172,217, 55, 7, 87, 75,194,194,194, 16, 31, 31, 95,187, +178,169, 77,112, 23,130,131,175, 47,124,231,157,160, 30, 61,122, 64,173, 86, 67, 44, 22,195,225,112,244, 61,125,250,116,223,153, + 51,103, 78,132, 54,193,224,106,217,116,129,133, 28,199,245, 30, 51,126,114,240,147,207, 12,195,208, 39,186, 82, 70, 36, 8,226, +209, 53, 88, 98,177, 56,239,241,151,230, 4,116,239,216, 2, 23,174, 36,106,211, 50,178,245,229,159, 21, 93,219,210,232,153,174, +117,154,157, 60,121, 2, 22,139, 5,191,253,246, 27,174, 92,185,130,212,212, 84, 76,152, 48,193, 34, 6,198, 85,161, 89,220, 99, +196, 44,111,104,111,169,163,100, 9,245, 15,223,188, 41, 50,155,205, 56,121,242, 36,138,139,139, 33,147,201, 80,183,110, 93,244, +235,215, 79,124,243,230, 77,159, 62,143, 63,225,217,227,137, 23, 82,224, 25,165, 23,139,197,197, 85, 38, 64, 44,206,235, 51,122, +118, 64,179,168,122, 72, 74,203,210,126, 56,247, 7,189, 32, 48,113,114,106,186,237,196,137, 19,136,142,142,198,161, 67,135,124, +139,138,138, 62, 90,190,124,249,135,146, 47,190, 89,106,183, 22, 78,171, 70,175,184,199,136, 89,222,190,121,155,195,143,238,223, + 33,189,118,237,154,244,187,239,190, 67, 97, 97, 33,100, 50, 25,188,188,188, 16, 20, 20,132, 70,141, 26,113, 51,102,204, 80, 15, + 28,120, 13,255, 25, 55, 44,220, 22,249,106, 66, 85,199,121, 47,237,250,116,165, 95,201,193, 6,219,126,253,149,239,214,173,219, + 31,170,233, 17, 17, 17,232,223,191,191,219,168, 81,163, 26, 60, 63, 98,164,208,227,169, 49, 73, 80,135, 27,107,212, 52,220, 81, +248, 26, 99, 66,250,142, 24,177,107,214,172, 89, 94, 65, 65, 65, 80,169, 84, 0, 0,173, 86, 91, 55, 45, 45,173,211,199, 31,127, +252,236,185,184, 77,226, 30, 3,239,100, 65, 21,106,170,238,124,254, 91,145, 72,196,121,229, 81, 35,119,149,162,248, 78,102,174, + 1, 0,172, 86, 43,172, 86, 43, 44, 22, 11, 38, 77,156, 32, 26,247,108,135,134,225,221, 39, 95, 78,189,155, 91,212,244,240, 89, +159,242,239,214,164, 41, 54,166,106, 52, 25, 71,198,205,124,231,157,160,192,192,223, 91,254,214,175, 91, 39, 42, 42, 42,234, 59, +115,230,204,102, 76,217, 75,211,116,224, 44,175,234, 52,171, 43,155,154,196, 95,235,127,246, 70,255,214, 43,230,238,129,211,233, + 68, 76, 76, 12, 78,158, 60,137, 69,139, 22,177,125,251,246,105, 61, 84,170, 26,202,102,130,123,183,224,156,200, 47,190,216,202, +201,229,114,236,220,185, 19, 55,111,222, 4,207,243,104,213,170, 21, 94,124,241, 69,244,237,219, 55,104,252,248, 9,172,199, 19, +195,147,225,217, 88,247, 87,242, 18,199,113, 60,128,201,239,207,252, 34,120,244,171,175, 99,254,103, 51,200, 96, 17, 4,241,232, + 80, 54, 26,128,149,109, 61, 25, 99, 96, 0, 31, 49,120,197,207,155, 47, 10,191, 70, 12, 94,241, 51, 3,120, 6,240, 30, 64,189, + 54,109,218,216, 53, 26, 13, 59,127,254, 60,155, 52,105,146, 97,233,210,165,199,126,253,245,215, 45, 14,155,109, 85, 72,112,240, + 2, 6,240,149,246,168, 7,248,112,192, 83,169, 84,230,103,100,100,176,189,123,247,178, 79, 62,249,132,109,216,176,129,237,219, +183,143, 29, 62,124,152,237,219,183,143,253,252,243,207, 44, 46, 46,142, 37, 38, 38, 50,149, 74,149, 31, 14,120, 86,163, 41, 98, +128,168,209,224,239,166,109,189, 96,159,213,120,240,138, 41, 12, 16,121, 3, 77,218,180,105,227,220,178,101, 11, 91,191,126, 61, + 91,187,118, 45,139,139,139, 99, 5, 5, 5, 76, 44, 87,229,151,127,175,170,227,100, 0, 95,167, 78,157,124,141, 70,195, 66, 67, + 67,153, 76, 38, 99,129,129,129,172, 81,163, 70,172, 83,167, 78,108,192,128, 1,108,228,200,145,236,163,143, 62, 98, 26,141,134, +185,185,185,229,150,127,175, 42,205,104, 64,161, 82,169, 50, 46, 93,186,196,170,194,100, 50,177,130,130, 2,118,224,192, 1,166, + 82,169, 50,162, 1, 69,117,154, 10,160,109,203,150, 45,243, 11, 10, 10,152,205,102, 99, 25, 25, 25,236,234,213,171,236,230,205, +155, 44, 35, 35,131,153, 76,166,123,218,137,137,137, 44, 50, 50, 50, 95, 1,180,173, 82,243,223,188,149,231,137,251,182,176,192, +192, 1, 65, 65, 65,166,173, 91,183,178,187,119,239,178, 31,127,252,145,241,192,231,127,218,183, 26, 77, 25,208,175, 91,183,110, +206,152,152, 24,118,249,242,101, 54,125,250,116,214,191,127,127,246,196, 19, 79,176,153, 51,103,178,204,204, 76,150,153,153,201, + 6, 12, 24,224,148, 1,253,106,202,159,149,149, 77, 79, 32,108,224,192,129, 38,155,205,198,146,147,147, 89,243,230,205, 51, 69, +192, 40, 21,208,172, 39, 32,175, 41,127,214, 1,188,131,131,131,179, 99, 98, 98,216,182,109,219, 88,120,120,120,190, 8, 24,227, + 1, 68,120, 0, 17, 34, 96, 76, 68, 68, 68,126, 76, 76, 12, 43, 44, 44,100, 97, 97, 97,217,117, 0,239, 7,205, 75, 40,157,131, +111,245,251, 51,191, 96, 9,153, 6,246,254,204, 47, 24,128, 12, 86,250,225, 33,202,147,180,209,246,239,219,254,228, 69,254,199, + 55,113, 5,163,197,113, 28,199, 80, 58, 55, 86,165,152, 68,162, 57,243,231,207, 23,155,205,102,252,240,195, 15,186, 23,134, 15, +223,230,229,229,229,144, 72, 36,224,248,154, 7, 36,230,203,229,111,126, 57,127,190,151,213,106,197,197,139, 23,209,174, 93, 59, +200,229,114, 72,165, 82, 72, 36, 18, 72, 36, 18, 4, 7, 7, 35, 47, 47, 15,205,155, 55,199,187,239,190,235, 57,111,206,156, 55, + 97,177,124, 86,157,174, 32, 48, 49, 0, 56, 5, 65, 38, 5,198,183,110,223,126,193,140, 25, 51,120, 15, 15, 15,152,205,102, 88, + 44, 22,220,188,121, 19,190,190,190, 80, 42,148, 98, 88, 12, 53, 30, 43,207,243,188, 90,173,198,209,163, 71,177,114,229, 74,164, +166,166, 34, 59, 59, 27,238,238,238,104,222,188, 57,154, 54,109,138,158, 61,123, 34, 57, 57, 25,156, 11,157, 70,174,139,197,175, + 79, 26, 55, 46, 32, 58, 58,186,210,207,205,102, 51, 52, 26, 13,180, 90, 45,234,214,173,139, 97,195,134, 5,108, 92,191,254,117, + 56, 28, 11, 43,219,223, 23, 8,170, 27, 21,181,235,252,249,243,126,140, 49,172, 95,191, 30,122,189, 30, 86,171, 21, 60,207,195, +205,205, 13,222,222,222,120,236,177,199,224,239,239,143,168,168, 40,252,242,203, 47,126, 3, 6, 12,216,227,155,151,215,182, 16, +200,162,234, 69,205,164,231,230, 30,236, 7,248,141, 26, 57,114,223,149,184,184,238,163, 70,141, 66,110,110,238, 12,201,244,233, + 26, 59,176,184,166,239, 55, 6, 60,125,130,131,215,124,241,197, 23,124, 78, 78, 14,166, 78,157, 90,144,149,158, 62,221, 19, 56, + 5, 0, 71,246,239,239,190, 97,195,134,121,235,215,175,247, 91,183,110, 29, 31, 29, 29,189,166,113, 70, 70,243, 4, 64, 91,155, +227,212, 1,147,151, 44, 89,226,102, 54,155,241,248,227,143, 39,187,165,166,182,118, 0, 38, 87,191,159, 13,188,190,232,221,119, +131,228,114, 57,166, 78,157, 90, 96, 76, 79,111,225, 0,242, 43,236,146,230,159,146,178,127,244,232,209, 87,227,226,226,252, 22, + 47, 94, 28,244,236,144, 33,175, 3,248,188, 22, 17,171,138, 29,218,163,198,140,159, 28, 24,221,161, 51,214,173, 90,142,185,179, +222, 91, 3, 96, 5,199,113,111, 0,248,146,114, 30, 65,252,107,131, 62, 53,122,145,255,185, 38,194,178, 4,245,170,110,103,111, + 95,223,118, 45, 90,180,192,201,147, 39,209,178,101,203,243, 94, 94, 94, 14,169, 92, 14,137, 68, 2, 38, 8, 53,254,152, 66,165, +234,211,183,111, 95,241,217,179,103, 17, 25, 25, 9,133, 66,113,207, 88,149,111, 82,169, 20,193,193,193, 40, 41, 41, 65,159, 62, +125, 36,203,150, 45,235, 83,147,193, 2,128,244, 91, 87,213,249,103,191, 24,249,253,143,107, 34,122,244,232, 1,173,182, 4,130, + 32, 64,169, 84,194,106,181, 66, 44, 22,151, 54,245,216, 89,137, 43, 39,198,233,116, 58, 69, 34, 17, 34, 35, 35, 49,103,206, 28, +152,205,102, 72,165, 82, 0, 64, 73, 73, 9, 52, 26, 13,174, 94,189,138,180,180, 52,148,213,186,171,197,221,211,243,201,231,159, +127, 94, 86,217,103, 22,139, 5, 90,173, 22, 90,173, 22, 26,141, 6,102,179, 25,157, 59,119,150,253,186,103,207,147, 40, 44,172, +212, 96, 89,220,220,158, 93,183,110, 93,128, 76, 38,131,201,100,130, 78,167,195,157, 59,119,144,158,158,110,206,203,203,115,184, +187,187,243,225,225,225,188, 92, 46,151, 15, 30, 60,152, 43, 41, 41, 1,199,113, 24, 56,112,160,239, 79,235,215, 63, 15, 96, 17, + 21,101,215, 56, 8, 88,218, 90,173,131, 58,118,232,112,244,252,133, 11,209,111,190,249, 38,226,226,226,190, 80,110,218,116,194, + 8, 92,169,238,187,201,192,235, 11, 42, 24, 23,150,158,222,210,118,159,113, 9, 47, 53, 46,241,229,198,229,185, 90, 26,151,178, +252,213, 62, 56, 56, 24,251,246,237, 67, 70,106,234,123,181, 49, 87, 0,192,139, 68,221,122,244,232,129,157, 59,119, 34, 51, 61, +253,189,251,204, 85,105, 5, 9,200, 23, 39, 39,191,183,102,205,154,213, 99,199,142,133, 72, 44,238, 6,135,163, 54, 63,243,167, + 14,237, 99, 39,188,137, 53, 43,151,173, 1,240, 42, 99, 76, 0,112,158,114, 28, 65,252,123,113,197,139,252,175,192, 87,116,141, + 0,142, 87,183,115, 64, 64, 64, 29,181, 90,141,172,172, 44, 52,109,210, 36, 79, 46,151, 67, 38,145,192, 77, 38,115,233,199,140, + 70, 99,203,144,144, 16,104,181, 90,248,249,249, 65, 42,149,222,219,100, 50,217,189,215,238,238,238,224,121, 30, 97, 97, 97, 48, + 26,141, 45,107,212,205,189, 26,176,105,217,196, 73, 49, 39,246, 69, 12, 25, 50, 20,222,222, 62, 8, 13,173,139,128,128, 0, 40, + 20, 10,132,134,134,162, 65,131, 6,108,225,194,133, 80, 6,180,114,233, 6, 94,209, 52,137,197, 98, 56,157, 78,228,230,230, 34, + 33, 33, 1,113,113,113,136,137,137,193,229,203,151,161,211,233,224,130,191,130,209,100,106, 45, 22,139, 43, 53, 87, 26,141,230, + 94,244, 74,163,209, 32, 63, 63, 31,105,105,105,208, 27, 12,109,170, 49,187, 67, 91,180,104, 33, 2, 0,133, 66,129, 54,109,218, + 96,197,138, 21,142,221, 59,118, 12,111, 22, 19,227, 19,122,224,128,215,247,223,125, 55,124,216,176, 97,206,179,103,207,162,164, +164, 4, 55,110,220,128,191,191,191, 88,230,230,246, 60, 21,227,218,113, 9, 48,248,233,116, 79,116,233,210, 37, 69,171,213,226, +203, 47,191,228, 37,238,238, 43,103, 1,162,106,191, 40, 18,117,237,209,163, 7,118,237,218,133,172,244,244,233,233,149, 24,151, +116, 32, 63, 35, 57,121,250,154, 53,107,208,175, 95, 63,112, 98,113,173, 59, 34,117,234,212,169,133, 32, 8,136,143,143,135, 23, +112,174,182,223,111,208,176, 97,180, 90,173,198,205,155, 55,161, 42,139,174, 85,134, 10, 56, 21, 27, 27, 11,133, 66,129,166,205, +154,181,173,229,207, 44,228, 56, 46,123,236,132, 55,177,109,255, 25, 0,192,154,149,203,114, 43,152, 43,130, 32, 40,130, 85,163, + 23,249,159, 51, 88, 46, 38, 28, 0, 32,145, 72, 32,147,203, 33,147,201, 74,141,145, 92, 94, 27,119, 10, 55, 55,183,123,134,170, +162,177,170,248, 90,169, 84,186,100, 92, 0,160,248,246,254,238,175,190, 50, 86, 38,151,203, 97,181, 90,192, 24,131, 92,238, 6, + 47, 47, 47, 68, 70, 70,162,164,164, 4, 93,186,246,180,220,209, 72,247,248, 54, 29, 28,247, 32, 39,202,225,112,192, 96, 48,160, +184,184, 24, 69, 69, 69, 40, 41, 41,129,201,100,114,121, 72,185, 32, 8,162, 59,119,238, 96,227,198,141, 40, 44, 44, 4, 80,218, +129,186,220, 84,149,255, 77, 73, 73,193,250,245,235,145,154,154, 90,171,235,211,189,123,119,236,217,179, 71,212,171, 79,159, 85, +135,194,195,179, 14,133,135,103,245,234,211,103,213,174, 93,187, 68,117,234,212, 65, 90, 90, 26, 46, 94,188,136,226,226,226,242, + 12, 76,212,146, 36,160,216, 88, 84, 52,118,198,140, 25, 76,173, 86,227,203, 5, 11, 90,127, 14,188,224,170,113,241,172,198,184, +120,254, 53,227, 2,198, 24, 4, 65,128,211,233,124,160,180,113, 28,199, 73, 36,146,218, 78,145,192,213, 66,255, 94,135,246,119, + 63,154,131,189, 59,183,148,127,116,139,204, 21, 65, 16,143, 34,226, 10,142,177,198, 7,111,110,110,238, 93,131,193, 16, 17, 30, + 30,142,204,204,204,128,176,176,176,116,153, 68, 2,169, 76,230, 82, 31, 44,165, 82, 25,159,149,149,213,181, 78,157, 58,112, 56, + 28,247,204,212,253, 77,132,229, 81,153,203,151, 47, 67,169, 84,198,195, 92,237, 12, 8,112, 90,139,235,181,109,219,246, 94, 36, +200,203,203, 11, 94, 94,158,144,203,221,240,193, 7, 31, 8,139, 23, 46, 92, 30,246,216, 44,237,203, 83,102,176, 25,159,175,122, +168, 39,208,213, 7,146, 82,169,140, 15, 13, 13,237,236,233,233,137,109,219,182, 33, 45, 45, 13,197,197,197, 48, 26,141,176, 88, + 44, 48, 26,141,176, 90,173,112,115,115, 67,179,102,205,224,225,225,129,195,135, 15,199,195, 98,169,220, 84, 22, 22,110,139,143, +143,239,220,161, 67,135,123, 17,148,222,189,123,115,189,123,247,246,187, 23, 53, 51, 26, 81, 80, 80,128,243,231,207,227,240,225, +195,224, 56, 14,183,110,221,114, 90, 76,166,159, 41,235, 63, 24,102,224, 55,209,154, 53,171, 95,123,237,181, 87,186,118,237, 10, + 39, 48, 0,192,250,191,203,184,148, 19, 19, 19,115,213,233,116,118,109,212,168, 17, 52, 64, 71, 0, 59,107,101, 30,111,223,142, +117, 56, 28,125, 90,183,110,141,109,155, 55,119, 7,144, 86,217,126, 6,160,123,116,116, 52, 76, 38, 19,110, 92,191,126,169, 22, +230,106,213,251, 51,191, 24, 51,250,213,215,177,110,213,114,172, 89,185,236,206,234, 21, 75, 67, 1,216, 40, 87, 17, 4, 81, 27, + 47,242, 72, 70,176,180,197,197,151, 98, 99, 99,209,182,109, 91, 36, 37, 37,117, 96,130, 32,150,202,100,144, 73,165,224, 93,120, +128,152, 12,134, 35, 71,142, 28,113,180,105,211, 6,122,189, 30, 98,177,248, 15,209, 43,153, 76, 6,137, 68, 2,177, 88, 12,165, + 82,137,237,219,183,219, 76, 6,195,145, 26,163, 67, 78,193,201,243,252,189,135,152, 70,163,129,209,104,194,156, 57,115,240,213, +194,133, 35,157,192, 20,137,202,223,244,119,158,104,179,209,120,116,239,222,189,246,136,136, 8,140, 25, 51, 6, 83,166, 76,193, +148, 41, 83,240,218,107,175, 97,204,152, 49,120,241,197, 23, 49,100,200, 16,116,236,216, 17,254,254,254, 72, 72, 72,176,155,141, +198,163, 85,233,201,205,230,173, 47,189,244, 82, 94,185, 49, 51, 24, 12,208,233,116,208,106,181,200,207,207,199,153, 51,103,176, +110,221, 58, 44, 92,184, 16,219,183,111,135,197, 98,129,205,102,195,229,203,151,139, 85,118,251,102, 42,202, 15,142, 4,216,118, +250,244,105,248,248,248, 32,164,110,221,158, 46, 24, 23,180,110,221, 26, 90,160,123,149,101,235, 1,140,203, 31,140,143, 78,119, + 33, 37, 37, 5,189,122,245, 66,112,221,186, 95, 52, 3, 20,181,249,190,211,225, 56,117,250,244,105,140, 30, 61, 26,225, 17, 17, + 95,248, 3,254,247,239,227, 15,248,215,111,208,224,139, 49, 99,198,224,224,193,131,112, 58, 28,167,170, 49, 85,237, 56,142,219, +197,113,220, 9, 0,105, 99,198, 79, 30,115, 95,135,246,231, 56,142,219, 0, 96, 26,229, 40,130, 32, 30, 69,106,101,176, 20, 78, +231,251,211,166, 77,179,243, 60,143,161, 67,135,186,239,220,181,107,216,229, 43, 87, 34,243,242,242,188,156, 78,103,141, 90,254, + 22,203,210,105,211,166,105,172, 86, 43, 26, 55,110,140,162,162, 34, 56,157, 78,136,197, 98,136,197, 98,112, 28, 7,158,231,161, + 86,171, 17, 27, 27,139,213,171, 87,151,248, 91, 44, 75,107,124, 56, 56,157,241,235,215,175,135, 72, 36, 98,110,110,110,224, 56, + 14, 98,177, 24,139, 23, 47,206,251, 10,216, 6, 0, 34,158,183, 2, 0,207,115,174,246,202,173,177,125, 82, 38,147, 65, 40,237, +220, 95,227,190,222, 22,203,146,249,243,231,235,110,220,184, 1,131,193,112, 47,218,166,215,235,239,117,154,215,104, 52,224, 56, + 14, 6,131, 1,187,118,237,210,121, 91, 44, 75,170,210, 43, 4,114, 50,111,221,122,186, 67,135, 14,133, 41, 41, 41,208,106,181, +136,143,143,199,225,195,135,241,203, 47,191,224,224,193,131,184,125,251, 54, 28, 14, 7,234,212,169, 3,198, 24,118,236,216,161, +117,232,116, 3, 10,129, 28,202,250, 85, 83, 47, 40,168, 79, 96, 64, 64,134,191,159, 95,102,189,160,160, 62,247,127,238, 9, 36, + 38, 38, 38,194,225,112, 32, 50, 50,210,167,186,126, 88,204,225, 56, 93,110, 92, 66, 35, 34,230,133, 87, 98, 92,194, 1,255,240, + 6, 13,230,149, 27, 23,230,112,156,174,237, 49,187, 3,203,222,121,231, 29,147, 84, 42,197,166, 77,155, 34,237, 13, 27,222, 20, + 3, 47,168,129, 38,189, 0,105, 77,223, 15, 6,150,127,244,209, 71, 57, 28,199, 97,195,134, 13,126,158, 13, 26, 92, 21, 3, 47, +121, 2,245, 60,129,122, 98,224, 37,207, 6, 13,174,110,218,180,201,207,225,112, 96,202,148, 41, 57,193,192,242,106, 36, 39, 51, +198, 6, 49,198,122, 48,198, 66, 87,175, 88,138,189, 59,183,148,155,171, 87, 25, 99,231, 25, 99, 47, 50,198,174, 82,142, 35, 8, +226, 81,132,171,172,159,147,164,227,231,185, 0, 11,232,217,169, 21, 46, 92, 73,208,250,121,123, 28, 40,255,172,232,218,150, 70, +143,181,244,104,245,205, 55,223, 64, 34,145,224,206,157, 59,184,126,253, 58, 60, 60, 60, 48,114,228, 72,139, 73,167,123,186,124, + 45, 66,142,227,250, 50,198, 14,151,105,150,174,119,166,189,165,110, 32,142,139,216,191,119,143,200,211,211, 19,122,189,254,222, +180, 2, 74,165, 18, 10,133, 2, 23, 47, 94,196, 83,131,158,113,230, 43,123,220,155,104,180,124,189,179,138,154,224, 56, 17, 0, +116, 4,148,177,192,212,128,144,144,105, 31,126,248,161,162,127,255,254,144, 74,165,168, 91, 47, 42, 39,242,137, 47,151,241, 60, +231,200, 44, 44,249,160, 65,189, 16,207,235,183,210, 0,112,165,107, 22,150,173, 69, 88,217,113,134, 89, 79, 68,110, 95,187,208, +163, 77,155, 54,247,162, 98,185,185,185,200,203,203,131, 70,163,129,193, 80, 58,213,195,158, 61,123,176,247,228,205, 18, 83,221, + 97,201, 85, 29,231,239,105, 79,112, 15,177,157,171,255,211,250,181, 34,127,127,127,228,230,230, 34, 63, 63, 31, 26,141, 6, 38, +147, 9, 78,167, 19, 69, 69, 69,248, 97,205, 90,103,161,186, 71,106,249, 68,142,213,106, 26,238, 40,124,244,103,234, 68, 55, 11, +103,175,188,242,138,187,135,135, 7, 4, 65, 64,113,113, 49, 50, 50, 50,144,146,146,130,147, 39, 79, 26,242, 52, 86, 24,252, 30, +207, 44,159,104,180,210,243,249,176, 50,213,255,162,102, 89, 94, 2,128,144,224,224,172,244,244,244, 0,167,211,137, 58,117,234, + 56, 52, 69, 69,243,100,192, 65,119, 32, 27, 0, 43, 0, 62, 92,178,108,217,216,103,158,121, 6,237,219,183,191,147,147,155, 91, +191,178,188, 4,142, 19, 53, 6, 60,141,117,235, 94, 59,127,254,124, 80, 70, 70, 6, 70,143, 30, 93,144,158,148,116,111,154, 6, + 45,208, 61,188, 65,131,121,155, 54,109,242,139,136,136, 64,203,150, 45,115,220,202,167,105,168, 60,127, 86, 89, 54, 53,137,191, +214,159, 56,164, 69,251, 73,147, 38,193,225,112,224,228,201,147, 56,119,238, 28,210,211,211,113,230,204, 25,141,135, 74, 53,188, +124, 45,194,170,242,231,128, 40, 67,228,134, 13,235, 57,169, 84,138, 53,107,214, 32, 54, 54, 22, 0, 16, 29, 29,141, 49, 99,198, +192,225,112, 96,212,168, 23,217,175, 9,138,228,234,242, 39,199,113, 45, 0, 44, 64,169,185,107,207, 24,115,227, 56, 46, 11, 64, +104,109,250, 92, 81,254, 36, 77,210,252,247,104, 62,106,212,184, 22,225,236,111,225,249,199,229, 56,198,101,109, 89, 49, 75,220, +173,123,143, 38,179, 62,153,201,119,232,208, 1,161,161,161,136,142,142, 70, 70, 70,134,220,203,203,171,166,245,206,244, 61,158, +120, 33,165, 85,171, 86, 94,211,167, 79,247,236,215,175,159, 36, 52, 52, 20,140, 49,196,198,198, 98,219,182,109,182, 85,171, 86, +149, 24, 3, 7,105, 46, 29,219,168,119,101,189,179,115,128, 17,192,167,117,179,178, 86,190, 62,113,226,204, 54,109,219,190,242, +201, 39,159,240,106,165, 66, 50,231,131, 87,221, 0, 96,246,215,191,120, 62, 51,108, 36,150, 52, 4,122,190, 80,249, 58,111, 21, +143, 51, 35,115, 92,250,147, 67,250, 52,156,250,198, 88,231,243,207, 63,175,242,240,240, 64,104,104, 40,188,189,189,145,156,156, +140,204,204, 76,182,123,247,110,125,204,229, 68,201,142,131, 23,210,221, 60,131, 93, 89, 55, 80,215,163,255,115,169, 79, 62,249, +164,247, 75, 47,189,228,222,174, 93, 59,137, 92, 46,135, 92, 46, 71,110,110, 46,110,223,190,109,219,189,123,183,222, 24, 48,160, +248,210,177, 77, 58, 23,215, 34, 52,245, 24, 49,235,246,169, 67,159, 76,185, 22, 31,255,162, 0,180,182,217,108,117,156, 78, 39, +199,243,124,182, 32, 8,241, 54,157,110,181, 37,250,147,197,180, 22,161,107, 56,157, 78,169,211,233,132, 70,163,193,161, 67,135, +196, 73, 73, 73, 31, 94,185,114,229,195,172,172, 44,216,237,118, 60,251,236,179,136,142,142,198,177, 99,199,144,159,155,187,187, + 58,173, 4, 64, 43,207,204, 28, 51,110,220,184,125,235,215,175,231,175, 92,185,226,183,102,205,154, 31, 42, 51, 46, 47,190,248, +162,144,155,145, 49,198, 82,205, 28, 88, 53,148,205,130,253,155,190,186, 50,120,232,176,102,159,124,252,161,164, 75,151, 46,240, +243,243, 67,247,238,221, 97,179,217,188,154, 54,109, 90, 83,217,212,245,120, 98,120,114,235,214,173, 85,139, 23, 47, 14, 26, 59, +118, 44,222,120,227, 13, 0,128,201,100,194,193,131, 7, 49,101,202,148,156, 12,113, 71, 67, 77,249,179, 44, 50, 85,110,188, 78, + 0,232, 1, 32,153, 58,180, 19, 4,241,175, 54, 88,192,239,235,157,157, 58,119, 21, 21,151,227, 40, 37,248,186, 35,236,165,164, + 9,211,230,181, 20,217, 75,188, 37,156,217,227, 86, 98, 34, 87,211,154,132,247,214, 59,243,140,210,251,166,252,220, 97,206,236, +217,111, 46, 89,178,164, 79,249, 84, 12, 74,165, 50,222,100, 48, 28,241,183, 88,150, 26, 61,163,142,212,118,237,188, 76, 32, 23, +192, 68,239, 75,151,150, 13,124,230,217,249,110, 62,145,146, 25,159,175, 50,139,120,222,122, 59, 43, 31, 75, 26, 2, 42, 23, 6, + 60, 26,173,192, 53, 77,176, 35,215,119, 88,194, 71,239,188, 51,117,246,167,159,118, 80,171,213, 61,109, 14, 71,148, 32, 8,128, + 32,220, 50, 26, 12, 39,152,205,118,222, 18,253,241, 66, 55,207, 96,230,242,186,129, 94, 77,117, 62,169, 91, 58,252,184,122,245, +228,205,155, 55,255, 41,237,190, 22,203, 50,163, 87,211,195,174,164,189,226, 62,102,224, 55,228,229,253, 86,101,109, 3,180, 22, +161,203,133, 66, 16,198,123,123,123,175,235,211,167,143, 91,223,190,125,241,212, 83, 79,161, 75,151, 46, 16, 4, 1,140, 49,232, +116, 58,252,242,203, 47,152, 63,127,254,173,250,192,167, 53,233, 89,128, 35,242,189,123, 7,180,110,221,122, 77,117,198,165,204, + 92,213,216,231,176,250,178, 41,191,229,240,124, 58,109,196,235,115, 26, 90, 75,178,189,124,149,142,160,107, 87,227,121,215,203, +102, 99,157, 51,246,151,142,207, 14, 25,242,186, 72, 44,238, 94, 54,162,145,221,184,126,253, 82,249, 98,207,136, 30,115,168,150, +121,169,124,238, 57,234,208, 78, 16,196,191,219, 96,137,197,226,188,242, 40,143, 88, 44,206, 75,222, 49, 97,100,117, 34, 18,160, + 79, 89,228, 10, 53,174, 69, 88,246, 58, 13,208,193, 98,249,236, 15,147,136, 86, 24, 45, 40,185,111,255,218, 36,170, 24, 72,128, +195, 50, 16,121,215,129, 93, 19, 75,245, 58,204,126,175, 98,154,170, 60, 33,127,248, 93,105,145, 25, 56, 5,189,254, 20,244,250, + 74,103,151,150,136,165, 69, 53, 29,231,253,105,207, 0, 74,254,106,218,197,181, 60, 63,226,191,112, 62,255,109,220, 45, 40,216, + 1, 64, 93,119,207,158,192,253,123,246, 60, 63,245,237,183,159, 13, 14, 9,105,224,231,231,231,237,238,238,206,159, 61,123, 54, +197, 97, 54, 47,107, 3,252, 88, 22, 61,173, 17, 11,112,164,113, 70, 70,243,231,134, 12,121,157, 19,139,187, 85, 52, 46,204,225, + 56, 19, 9, 44,183,184, 48,123,123,109,203,102,168, 60,184, 79, 89,228, 10, 34, 23,203,102,102,233,113,124, 14,135,227,115,196, +197, 85,146,231,107,157,151,102,115, 28,167, 3,205,208, 78, 16,196,191,137,255,242,186, 66,125, 73,147, 52, 31, 21,205, 82,143, + 2, 15, 58,159,164, 73,154,164, 73,154, 15, 95,243, 81,219,196,100, 49, 9,194,229,202,136, 19,191, 55,119, 17, 4, 65, 16, 68, +149,112, 0,250, 86,241, 48,113,121,116, 0,199,113,125, 31,224, 97,117,152, 52, 73,147, 52, 73,147, 52, 73,147, 52,255, 93,154, + 53,105, 63, 50,163, 19,169,137,144, 52, 73,147, 52, 73,147, 52, 73,147, 52,169,137,240,225,110, 60, 8,130, 32, 8,204,154,197, +241, 0,199, 1,179,120, 96,139, 8,120, 78, 84,250,254,193,121,238, 57,174,210, 73,104, 39, 79,230,220,233,140, 19,196,163, 13, +245,193,250, 27,225, 56, 46, 44, 40, 40,104, 5, 0, 46, 39, 39,103, 60, 99, 44,131,206,202, 63, 15, 95, 95,223, 62, 14,135, 3, + 90,173,246,200,163,152,190,230, 13,185, 33,140, 71,211,223,195,218,200,184,126,139,173,171,108,223,102, 81,220,104,112,191,207, +165,197, 9,184,113,237, 54,219, 94,139, 60,207, 15, 30,224,191, 0, 0,118,236,203,159,246,223,152, 23,139,227,184, 70,254,254, +254, 7,196, 98,177,216,233,116, 78,204,205,205,221, 83,181, 1,122, 78, 4, 0,254,138,109,239,123,249,248, 77,255,104, 42, 39, +177, 90,190,212, 88,204,102, 45, 47, 22,167,202,164,202,211, 14, 94,181, 47, 51,119,192,245,202,190,191,121,243,230, 42, 87,215, +110, 17,197, 13,104,210,172,217,160,182, 45, 21,201, 11,150,118, 88,210, 51,210, 79,146,114,231,178,250,219,117, 25, 43,254,143, +189,239, 14,143,170,216,223,127,103,251,110,118,211,123, 39,132, 52, 72, 66, 11, 77, 90, 66,239, 4, 4, 4, 65, 84, 64, 16, 81, +164,168, 32, 10,136, 82,229, 74, 19, 69,176, 80,165,151, 16,233, 53,244,150, 8, 73, 32, 9,132,244,178,233,187,155,237,229,204, +239, 15,178,249, 6, 46, 73, 54,136,247,119,229,238,251, 60,251,100,115,246,156,247,204,204,153, 51,243,206,103, 62, 51, 31, 87, + 71,239,161, 51, 39,115,226, 5,212, 52, 97,229, 47,180,218,250,150, 89,142,229,132, 56,233,129, 72,174, 64,224,107, 50, 26,221, + 9, 64,217, 28,142,212,160,213,230,241,128,187,243, 40,173,122,213, 57,121, 2,129,143,201,104,116, 7,128,255,198,116, 90,209, +136,192,178,181,181,189,205, 98,177,124,234, 6,169,101,213, 4,116, 54, 31,171,251, 27, 33, 4, 38,147, 41,191,162,162, 34,170, + 9, 13,161, 29,128, 49, 0,204, 75,205,119, 1,216, 75, 41,149,191, 96,195,106,199,227,241,230,138,197,226, 94,106,181, 58, 28, + 0, 68, 34, 81,138, 82,169, 60,167,215,235, 87,191, 8, 47, 33,132, 3, 96,180, 68, 34,137, 97,177, 88, 49,148, 82, 66, 41, 61, + 95, 93, 93,125, 14,192, 62, 74,169,241, 5, 56, 69,110,110,110, 75,195,194,194,198,205,159, 63,191,220,217,217, 57,116,214,172, + 89,183, 92, 93, 93,127, 47, 43, 43, 91, 64, 41, 85,255, 55, 84, 14, 66, 72, 11, 15, 15,143, 93, 92, 46,151,157,151,151, 23, 3, + 0,190,190,190,231,117, 58,157,169,164,164,228, 77, 74,233,163, 38,242,137, 1,116,150, 72, 36, 81, 18,137,164,135,201,100,106, +201, 48, 12, 24,134,185, 95, 93, 93,157,160,215,235,111, 3,184, 78, 41, 85,254, 23,137, 96, 91, 55, 55,183, 29,132, 16, 16, 66, +130, 41,165,138, 87,173, 17,160, 44,180, 76, 77,121, 16, 90, 43,162,194,195, 26, 40, 16,248, 61,231, 92,139, 5,214,160,222, 14, + 3,134, 14,109,195, 2, 0,189,254,214, 0, 0,199, 94,182,184, 26, 57,114,228,213, 29, 59,118, 56,106,181, 90,188,247,222,123, +187,236,237,237, 55,202,100,178,249, 13, 93,103,107,107, 59,107,201,215,223,219,212,180,105,110, 12,195,184, 21, 21,229, 5,167, + 61,184, 55, 32, 45, 45,121,153, 94,121,232,186,158,178,167, 86,169,134, 61,176, 36, 29,173, 90,144, 33,195, 71,143, 24,188,100, +201, 98,140,123, 99, 92,179,148, 20,141,200,219, 46,147, 47,215,139,131, 92, 92,124,134,125,246,249, 74,114,253,218,133, 97,251, +246,254,124,238,179, 73,164,151, 85,100, 89,244,108,201, 55, 28, 78,103,199,176,176, 30,111, 28, 62, 12,137,175, 47,135, 35, 16, +176, 0,192,168,213,250, 86,231,229,121,238, 25, 54,172,211, 87,132, 92, 88, 68,233, 13, 43,231,127,158,211, 10, 11, 5, 22,139, +197,242, 41, 40, 40,112, 19,139,197, 79, 26, 97, 74, 97, 50,153, 96, 50,153, 80,211, 41,130, 82, 90,251,215,104, 52, 34, 44, 44, +204,162, 17, 44,128, 94, 0,222,142,142,142, 30,181,122,245,106,110,100,100,164, 57,180, 71,247,207, 63,255,252,123, 66,200, 1, + 0, 91, 1,156,181,116,132, 75, 8,233, 47, 22,139,119,126,251,237,183,118,125,251,246,229,120,121,121,129, 16,130,226,226,226, +206,103,206,156,137,154, 53,107,214,251,132,144,241,148,210,147, 77,120,161, 35,108,109,109,247,143, 24, 49,194,167,103,207,158, +194, 86,173, 90,193,100, 50, 33, 41, 41,233,221,219,183,111,143, 61,112,224,192, 34, 66,200, 40, 75,227,169, 17, 66,136, 68, 34, +153,232,237,237,189,116,225,194,133, 78,227,199,143,231, 39, 39, 39, 87, 6, 6, 6,146,203,151, 47,187,238,221,187,247,253, 21, + 43, 86,140,182,181,181, 93, 80, 93, 93,189,141, 62, 47,142,209, 51,176,179,179,187,205, 98,177,124, 44, 17,192, 0, 44, 22,193, +132,144,182, 1, 1, 1,123, 47, 93,186, 20,144,157,157,109,138,141,141,221, 14, 0,231,206,157,139, 52, 24, 12,164, 95,191,126, +199, 9, 33, 99, 40,165, 73, 22,230,189,181,147,147,211,145,113,227,198, 57,181,104,209,194, 38, 32, 32,128,136,197, 98,176,217, +108,200,100, 50,175,228,228,228, 62, 55,110,220, 80,159, 57,115,166,130, 16, 50,140, 82,122,183, 9,207,233, 53, 55, 55,183, 9, + 92, 46, 55,194,104, 52,122, 3, 0,135,195, 41, 48, 24, 12,201, 37, 37, 37, 59, 40,165, 87, 95,244, 5,113,119,119,223,176,116, +233, 82,151,146,146, 18,186, 98,197,138, 13, 0, 38,190,170,141,193,174,223,247,225,246,173, 27, 0,192, 35,132,144,103,235, 31, + 33,132,180, 12, 6,239,227,143,103, 35,170, 67, 39,188, 57,110,116,163,156,177,131, 93,150,240,217, 28,103,149, 78,123,163, 76, +198, 58,226,231,198, 31, 49,126,116, 84, 38, 0,156, 56,126,111, 68,167, 78, 78,151, 93,236,153,225, 54,124, 65, 39,157,201, 88, +126,248,143,178,133, 77, 17, 83,222,222,222, 39, 29, 29, 29,109, 42, 42, 42,138, 75, 75, 75,127, 28, 57,114,228, 55, 91,183,110, +117,124,252,248, 49,242,242,242, 48,115,230, 76, 73,126,126,254, 7, 2,129,224,154, 86,171,173,215,146,165, 80, 40,214, 45,253, +122,246, 66, 91, 59, 71,182,141, 72, 12,137,173, 29, 2, 2,130,209,161, 99,119,244,233, 59, 12,153,153,105,157,247,238,254, 57, +145, 93,180,127,185,137,223,238,155,170,242,186, 5,132, 0, 0, 32, 0, 73, 68, 65, 84,170,128,122,219,165,240, 80,210,211, 44, +174, 22, 46, 92,140,244, 7, 15, 20,217, 89,172, 15,255, 56,204,177, 25,216, 59, 76,160,211, 87,103, 95,191,118, 33,160,115,151, +104, 0,136,218,183,247,231,115, 95,141, 39,189, 23,237,124,245,196,251,203, 20, 87, 75,184,220,137,253,215,172,113,107,247,254, +251,188,234,172, 44,125,230,166, 77, 42,105, 66,130,137, 35, 16, 80,223, 1, 3,136,107, 76,140,240,253,251,247,121, 87, 86,172, +232,177,140,207, 15,252, 92,167,219,105,229,252,207,113, 90,209, 4,129, 69, 8,129, 88, 44,198,158, 61,123,192,229,114,193,225, +112,192,229,114,235,253,238,231,231,103,201, 75, 50,210,195,195,227,251,141, 27, 55,186,247,239,223, 31, 66,161,176,246, 55, 54, +155,141,190,125,251,162, 79,159, 62,220,194,194,194,177,123,246,236, 25,187,108,217, 50, 41, 33,100, 6,165,244, 96, 35,188, 49, +161,161,161, 7, 79,157, 58, 37,210,104, 52, 72, 72, 72, 64,101,101, 37,248,124, 62,124,124,124,208,175, 95, 63,206,131, 7, 15, +156,250,246,237,123,144, 16, 50,132, 82,122,222,130,180, 70,185,185,185, 93,220,183,111,159,176, 77,155, 54,228,225,195,135,104, +215,174, 29, 0, 64, 38,147, 33, 54, 54, 86, 56,126,252,248, 22, 99,199,142,189, 78, 8,233, 73, 41,189,221, 8, 95,123, 15, 15, +143,109, 35, 70,140,240, 90,182,108,153,157,173,173, 45,178,179,179,139, 60, 60, 60,130,205,229, 61,118,236, 88,254,208,161, 67, + 61, 87,173, 90,181,110,255,254,253,159, 16, 66, 38, 82, 74,239, 52,196,107, 22,194, 54, 54, 54,144, 74,165,216,181,107, 23, 62, +248,224, 3,176,217,108,148,148,148, 96,239,222,189,248,240,195, 15,205, 66,198, 34, 17, 44, 22,139,251,180,105,211,230,151,115, +231,206,249, 56, 56, 56,192,203,203,139,245,229,151, 95, 70, 4, 6, 6,138,154, 53,107,198, 46, 42, 42,194,193,131, 7, 3, 39, + 76,152,112, 68, 40, 20,190,171,209,104, 26,157, 58,115,119,119,255,245,143, 63,254,240, 75, 73, 73,193,166, 77,155, 80, 81, 81, + 1, 62,159, 15, 7, 7, 7,120,120,120, 32, 56, 56,152,204,155, 55,207,102,232,208,161, 54, 51,102,204,248, 21, 64, 91, 11,158, + 81, 27, 55, 55,183,159,198,142, 29, 27,248,213, 87, 95, 57,120,120,120,192, 60, 32,144,201,100, 62,217,217,217,157, 23, 46, 92, + 56,202,221,221,253,113, 73, 73,201, 84, 74,233,159, 77,108,212,219,246,238,221,123, 72,108,108, 44,187,168,168, 8, 59,118,236, + 24, 66, 8,105,107,169,168,252,167,225,246,173, 27,120,111,250,204,106, 47, 95, 95,222,209,184,221,195,171,171, 55, 95,150,176, + 28, 56, 0, 80,205, 84, 25,187,118,150,116, 27, 58,108, 44,111,208,224,216,234,205, 63,172,147, 88, 34,176,248,108,142,243,158, +157,211,242, 18,174,100,180, 60,121, 38,187, 79,236,176, 62, 44, 14, 47,180, 5, 0,204,153, 61,133,127, 56,238,204,198,254,125, +154, 21,245,232, 26,156,247,198,248, 77,190, 77, 17, 87, 33, 33, 33, 23, 18, 19, 19,221, 5, 2, 1, 42, 42, 42,156, 55,111,222, +252, 93,183,110,221, 88,153,153,153,120,240,224, 1,178,178,178, 32,147,201,208,183,111, 95,201,157, 59,119,126, 4, 80,175,192, + 42, 85,143, 92, 26,232, 86,182,222,219,217, 49, 64,163,151,185,153,140,229,173,206,157,249,179,245,129,125,170,118,110, 30, 62, +193, 99,199,190,135,207,230,175,228, 30, 58,176,109,225,197,132, 83, 0, 2,234,223,193,159,226,181,207, 23,204,135, 92,161,197, +248,113, 83, 48, 97,220, 20,103, 10,157, 39, 53,105,196, 58,117,165,131, 61, 47, 37,126,219,238,125, 35, 0,248,212, 17, 89,103, +173, 34,171,126, 44,225,112, 58, 13,249,254,123,215,136,201,147, 5,127,126,245,149,178, 44, 33, 65, 29, 52,104, 80,101,187,105, +211,180, 0,160,200,202,226,165, 47, 90,100,227,218,163,135,168,203,220,185,142, 38,157,206,227,107, 66, 58,126, 73,233,205,166, +114,250,141, 25, 99, 90,248,219,111, 29, 18,102,207,142, 38, 6, 3,123, 64,151, 46, 73, 43,118,236, 40,248, 43,156, 47, 51,157, +133, 23, 47,106, 43, 2, 3,209, 46, 54,182,220,207,205, 77,251, 50,243,254, 87,210,105,197,115,218, 41, 74, 41, 8, 33, 61, 1, + 92, 0,240, 21,165,116, 49, 0, 56, 56, 56, 72,171,170,170,220, 14, 30, 60,216,168,184,226,114,185,240,244,244, 68,112,112,112, +137, 84, 42,117,111,160, 81,204, 99, 24,198,135, 82, 90,107,109,169, 15, 90,173, 22, 25, 25, 25,104,221,186,117, 62,165,212,183, +161, 41, 28, 27, 27,155,204, 7, 15, 30,184,164,166,166,226,246,237,219, 8, 12, 12,132,163,163, 35,184, 92, 46, 12, 6, 3,228, +114, 57, 66, 67, 67, 33, 16, 8,208,190,125,251, 50,165, 82, 25,216,208, 84, 15, 33, 68, 32, 22,139, 51, 46, 94,188,232,219,174, + 93, 59,220,188,121, 19,190,190,190,240,240,240, 0, 0,100,101,101,225,242,229,203, 24, 52,104, 16, 18, 19, 19,241,250,235,175, +231, 41,149,202, 96, 74,169,182, 62, 78,103,103,231,162,115,231,206,229, 71, 70, 70,106,148, 74, 37, 75, 42,149,114, 19, 18, 18, +140, 10,133, 66, 34,147,201,184, 85, 85, 85, 92,185, 92,206, 81, 42,149, 92, 22,139,197, 83,171,213,220,179,103,207,178,117, 58, +157, 93, 67,229,100,126, 78,113,113,113,136,140,140,196,193,131, 7, 49,103,206, 28, 92,185,114, 5,190,190,190,216,183,111, 31, +230,206,157,139,180,180, 52,184,184,184,160, 85,171, 86, 13, 62, 35, 0, 8, 10, 10,122,120,239,222,189, 22, 60, 30,207, 28,119, +209, 28,207, 14,165,165,165,120,244,232, 17, 10, 10, 10, 16, 20, 20,132,113,227,198, 61,202,207,207, 15,106,172,162,249,248,248, +148,166,164,164,184,180,110,221, 26, 82,169, 20, 14, 14, 14,176,183,183,135,131,131, 67,237,247,192,192, 64,204,158, 61, 27, 30, + 30, 30, 37,106,181,218,189, 49,241, 19, 25, 25,121,242,236,217,179, 46,118,118,118, 40, 46, 46,134, 92, 46, 7,135,195,129,141, +141, 13, 92, 92, 92,106, 5,124, 70, 70, 6, 6, 15, 30, 92,150,153,153,217,191, 9, 22, 55,150,187,187,251,131,187,119,239, 6, + 83, 74,145,155,155,139,180,180, 52, 76,159, 62, 61, 67,163,209,132,189, 74, 49,245,234,248, 85,241, 38,190,243, 30, 47,118,216, +112, 85,210,237, 19,140, 8, 23,209,177,173,168, 10, 0,110, 38,169, 29,212,232,137,182, 81, 3, 88,135,227,142,216,108,219,186, +153, 11, 6,238, 32, 72, 75, 77,167, 95,215,199, 61,164,191,195, 91,115,103, 14,104,217,163,107, 15,142, 92, 78, 61,126,217,190, +165, 99,206,227, 76,119, 0,240,111, 30, 40,157,244,214,148,155,118,118,164, 56,225, 74,130,113,245,186, 19,247,227, 79, 86,109, +183,224,217, 4, 6, 7, 7, 95,139,139,139,115,113,115,115,131,189,189, 61,148, 74, 37,244,122, 61, 82, 83, 83, 53,123,246,236, + 49,216,217,217,217, 22, 23, 23,163,170,170, 10,132, 16,196,197,197,229, 82, 74,253,159,229, 50,251, 96, 1,192,244,129, 45,185, +173,122, 5, 59,242, 4, 70,145,136,155,238, 9, 98, 18, 16, 42,113, 63,119,238, 90,235,243, 23, 47,189, 57,104,200, 27,174, 93, +186,196, 96,229,178,207, 12,185,197,210,118, 85,170, 97, 15,158,231,131,213, 50,152,244,138,125,125,196,232, 37, 75, 22, 99,241, +194,175, 16, 31,119, 88, 38, 17,179,180,118, 14, 92,251, 30,157,187,106,102,127, 48, 60, 79, 85,157,239,251,221,198, 45,227,250, +246, 31,237,211,185, 75, 52,174, 95,187,128,125,123,127,190,205, 51, 25,172,211,133,207,224, 43, 66, 28, 29, 2, 3,167,126,148, +145,193,251,115,241,226,106, 99, 97, 97,101,212,172, 89,101,207, 59, 55,255,244,105, 49,223,203,203,206,113,216, 48,167,117,254, +254,212, 80, 82,242,211,243,124,136,158,199,121, 70, 34,113,216,125,252,120,111,202,229,246,252,244,179,207, 68, 67,134, 12,129, + 92, 46,199,129, 3, 7,240,211,166, 77, 90, 79, 79,207,123, 94,201,201,137, 17,114,249, 23,150,114, 70,205,154, 85,102, 50,153, +200,232,185,115,251,166,100,101,245, 42, 46, 41,105, 6, 0,158, 78, 78,121, 81,129,129,183,127,141,143, 79,219, 16, 16,192, 88, +154,206, 45, 39, 78,184,239,207,206,158,236,228,228, 36,146,150,148,112, 4,124,126,121,231, 86,173,246,253,176, 96,193, 5,227, +221,187, 60,161,143,143,157,253,144, 33, 77,206,123,212,172, 89,101, 21, 10, 5,231,163,111,190,233,154, 35,149, 54,171,214,106, +131,170, 20, 10, 15,147,193,192,178,179,177, 41,111, 30, 26, 90,162, 78, 72, 40,106,174, 82,205,220, 66,105,201,223,104,169,252, + 55, 45,242, 42, 88,176, 46, 80, 74,255,109,181, 12,165,212, 34,235, 21,151,203,125,106, 58,170, 1,240, 8, 33,184,115,231, 14, +156,157,157,225,225,225, 1,129,224,233,224,128,165,165,165,184,114,229, 10,238,223,191,143, 54,109,218, 0, 0,175, 33, 66,129, + 64,240,241,170, 85,171, 28,116, 58, 29,110,223,190,141,168,168, 40, 8, 4, 2,240,120,188,167,196, 95, 73, 73, 9,194,195,195, +241,233,167,159,218, 47, 91,182,236, 99, 52, 16, 67,142,195,225,204,152, 50,101,138,155,217, 98,149,151,151,135,246,237,219,215, +254,238,234,234,138,164,164, 36, 68, 69, 69,193,199,199, 7,163, 70,141,114,219,177, 99,199, 12, 0,171,235, 29,201,243,249,172, +200,200,200, 14, 53, 22, 34,176, 88,172,116, 59, 59, 59, 87,119,119,119,177,157,157,221,191,229,241,183,223,126,171, 98,177, 88, +134,198, 10,148,197, 98,161,184,184, 24, 17, 17, 17,144,201,158, 68, 90, 81, 42,149, 8, 10, 10,130, 92, 46,175, 21,171, 94, 94, + 94, 80,171, 27,118,237,106,211,166,205,226,176,176,176,126,209,209,209, 2, 46,151,139, 63,255,252, 19,237,218,181,195,158, 61, +123,224,231,231, 7, 27, 27, 27,100,100,100, 32, 50, 50, 18, 23, 47, 94,132,171,171, 43,194,195,195, 5,237,219,183,191, 84, 81, + 81,113, 62, 59, 59,123,113, 3,233,100, 73, 36, 18, 92,188,120, 17,191,254,250, 43,178,178,178, 80, 88, 88, 8, 91, 91, 91,180, +109,219, 22,173, 90,181,194,107,175,189,134,140,140, 12,144, 70, 42, 19, 33,196, 35, 56, 56, 56,254,230,205,155, 46,148, 82,236, +216,177, 3,213,213,213,208,233,116, 96,177, 88, 16, 10,133,112,116,116, 68,175, 94,189,224,234,234,138,224,224, 96,236,221,187, +215,101,224,192,129,199,106, 44, 80,197,141,149,171,163,163,227,204, 69,139, 22,249,186,185,185, 33, 59, 59, 27, 50,153, 12,238, +238,238,136,142,142,246, 62,115,230,204, 76, 0,107, 94,149, 14,204,236,208, 78, 8, 33, 71,227,118, 15,247,243,228,183,236,216, + 78,225,127,239, 14,167,197,177, 51, 15, 91, 63, 41, 15,255,187, 29,219, 43, 30,221,188,125, 34,231,104,220,238, 27,247,211,113, +196,146, 41,236, 50, 25,235,200,201, 51,217,125, 90,135,119,103,175,223,184,104,248,123,147,250, 11,156, 28,187, 19,121,201, 94, + 92,185,113,207,255,203,197,243,220,190, 94,188,226,232,201, 51,217,166, 50, 25,107,169, 37,233, 13,111,233,185,225,194, 97, 55, +151,106,253, 15, 72,186, 97, 15,112,187,160,121, 96, 8,228,114, 57,132, 66,161,112,220,184,113,166,249,243,231,171,236,236,236, +108, 8, 33, 56,127,254,124, 9,128,254,141,241,106,220, 28,169, 73,111, 48, 82, 62,155,161,196, 86, 77, 76, 21,252,228,212,199, +232,217,115,160,180, 67, 84,187,101, 43,190, 93,243,121, 96, 96,168,235,184,241, 83,185,171, 87,127,177, 9, 64,247,231,241,220, +207,160,231, 90,181, 32, 34, 0,131,151,124,189, 24,153,153, 25,142,239,189, 93,245, 21, 71, 32,242, 10,243,239,106,187,233,215, +243, 3,130,130, 2,154,189,247,206,187,127,108,254,237,215,193,117, 45, 89,187,127,223,124,132, 16,210,219,146,178,253, 31, 66, +235, 9,241,241,168,206,205, 53, 84, 92,186,164,233,253,253,247,101,190,253,251,175,209,233,245, 46,230,166,130, 69, 8,136,217, + 69,130, 97, 8,231,211, 79, 89,148,195,129,193,209,241,237,121, 64, 72, 99,156,115,138,138, 70,190, 57,121,242,224, 35, 39, 78, + 32, 32, 32,160,182, 63,115,112,112,192,220,185,115, 49,107,214, 44, 65, 82, 82, 82,199,253,251,247,119, 92,253,237,183,238,243, +128,145,150,164,243,212,245,235,142,211,150, 44, 89,208, 38, 42,202,111,251,174, 93,130, 22, 45, 90, 0, 0, 30, 61,122, 20,188, +114,197, 10,255,136,200, 72,233,178,143, 63,222,154, 50,127,126, 56,128, 75, 13,113, 22, 39, 36,232,246,103,103, 79, 62,119,254, +188, 67, 68, 68, 4, 0, 32, 45, 45,205,109,221,186,117, 83,194, 71,141, 26,191,228,253,247,191, 24,162,209, 84,217,149,150, 10, +134,108,216,192,217, 61,122,116,163,156,230,116, 2, 64,244,187,239,126,220, 61, 38,166,213,200,201,147,157,252,252,252,136, 68, + 34,129, 94,175, 71, 97, 97,161, 99, 74, 74, 74,139,120,133, 66,126,232,250,245, 29, 91,106,130,184,255, 77,120,174, 22,249,167, + 11,172,104, 66, 8, 5, 16, 77, 41,189,104,238,184, 77, 38,147, 69,226,138,195,225,160,198, 9,216,162,155, 82, 74, 81, 86, 86, +134,178,178,178,218, 41,162,146,146, 18,156, 59,119, 14, 25, 25, 25,224,114,185,224,241,120,208,235, 27,143, 13, 43, 22,139,251, +244,233,211,135,115,253,250,117, 4, 6, 6, 66, 36, 18,213,166,203,252,225,241,120,240,244,244,132, 92, 46, 71,239,222,189,185, +235,215,175,239,211,144,192,178,183,183, 31, 52,102,204, 24,190,249,255,234,234,106,176,217,236, 90,177, 82, 93, 93,141,138,138, + 10, 84, 85, 85, 65,163,209,160, 75,151, 46,252,248,248,248, 65, 13, 9,172,186, 80,169, 84,213, 37, 37, 37, 14,221,187,119,119, +220,186,117,107, 90,151, 46, 93, 66,159,170, 97, 23, 46,104, 52, 26, 13,151,197, 98, 89, 20,231,110,231,206,157,181,101, 95, 80, + 80,128, 77,155, 54,213,254,150,145,145,129,245,235,215,215,238,203,209,208, 51, 10, 11, 11, 27,184, 99,199,142,168,237,219,183, + 87,178,217,108,164,165,165, 97,215,174, 93,160,148,194,213,213, 21, 42,149, 10, 82,169, 20,231,207,159,135,209,104,132, 68, 34, +129,183,183,183,112,198,140, 25,221,190,250,234, 43, 46,128,122, 5,150,201,100, 50,177,217,108,248,251,251, 99,225,194,133,208, +104, 52,224,241,158,232, 74,185, 92,142,170,170, 42, 36, 38, 38, 34, 59, 59, 27,141,117, 46, 66,161,112,212,246,237,219,221,248, +124, 62,212,106, 53, 20, 10, 5,242,242,242,144,147,147,163, 41, 41, 41, 49,218,218,218,178,252,253,253, 89, 2,129, 64, 16, 27, + 27, 75,204, 66,115,200,144, 33,206, 59,118,236,120,163, 49,113, 68, 8,113,109,217,178,229,231, 83,166, 76, 17,214,173,179,197, +197,197, 24, 57,114,164,205,213,171, 87,231, 19, 66,118, 81, 74, 75, 95,165, 94,140, 82, 74,171,171, 55, 95, 78, 56,242,125,203, +123,119, 56, 45,116,186,202, 46,125, 7,205,228, 0,192,213,139,191,117,185,119, 39, 25, 34, 98,204, 57,126,106,245,101,137,228, + 61,218,152, 5,112, 80,111,135, 1,126,110,252, 17,177,195,250,176,126,217,190,165,227,123,147,250, 11,220,154,111, 33, 0,224, +200,243,193,107,166, 57, 44,141, 86, 41,252,101,251,150,142,177,195, 6,221,200,122,156,179,102,112, 31,199, 67,199,206, 86,157, +104,200, 66,232,233,193,245,118,178, 43,135,147,109, 59,248, 7,218, 34, 49,233, 46,142, 28,188,132,224,176,110,208,106,181, 48, + 26,141,226,161, 67,135,170,246,236,217,163, 73, 79, 79, 87,168,213,234,158,148,210,244,198,242,159,159,159,202,132,122,116,214, +243, 68, 2,163, 66,198, 83,205,251, 98,255,232,246,157,250, 69, 57,122,122,115, 93,197,204,209,152,158,221,119,253,190,243,167, + 89,115, 62,249, 26,109,219,118,233,114,255,225,241, 86, 0,238, 61, 87,180, 62,162,241, 17,193,196,152,249,240,225,224,156,236, +236,252, 16,119, 15,221,163, 42,106,152, 57,111, 75,223,238, 61, 71,181,110,209,178, 7, 63, 37,245, 34,153,253,193,148,223,191, +219,184,101,156, 89,100, 37, 36,156,236,185,120,113, 54, 31,128,214,170,171,106, 70,229, 2,129,143,196,223,159,147,181,117,171, + 58,112,232,208, 74, 0,208,233,245, 46, 89,217,217,246, 54, 54, 54,160,148,194, 96, 48, 60,229, 35,108,246, 11,142, 8, 13,117, +183,132, 51,235,203, 47, 91,127,250,233,167, 40, 46, 46,134,209,104, 4,151,203,125,182,205,134, 82,169,196,219,111,191,141, 13, +223,126,219,217, 18, 78,147,201, 68,166, 45, 89,178,224,179, 5, 11, 90, 76,157, 58,149, 85,183,237,117,114,114,194,254, 3, 7, +248, 27, 55,110,244,249,124,195,134,183,223, 20, 8, 50, 27,227, 44, 11, 10,130,147, 84, 42, 50,139, 43, 0, 8, 13, 13,197,166, + 77,155, 4,147, 38, 77,226, 15, 29, 58,244, 95, 73,109,218,172, 91,211,173,219, 67,231,144, 16, 59,190, 64,224, 99,105,121, 2, +128, 66,163,137, 88,179,110,157,227,141, 27, 55, 32,149, 74, 81, 92, 92,108,126,151,209,161, 67, 7, 50, 97,194, 4,251,230,190, +190, 29,255,230,199,253,111, 90,228, 31, 47,176,106, 50, 66,106, 50, 70,234,116,138, 79, 9,149,198, 4,214,139,160,170,170, 10, + 85, 85, 85,248,249,231,159,193,227,241,106, 59, 93, 0,208,233,116,150,136,149, 72, 47, 47, 47,200,100, 50,132,132,132, 60,101, +185,226,241,120,224,112, 56,224,241,120, 16, 8, 4,208,106,181,240,243,243,131, 74,165,138,108,136, 83,173, 86,183,117,114,114, +170,237, 88,181, 90,109,173,184, 50,167, 87,167,211,161,178,178, 18,213,213,213, 80, 40, 20, 80, 42,149,237, 44,201, 47,195, 48, + 72, 78, 78,126, 20, 26, 26,218,150,205,102, 67, 34,145,136,149, 74,101,173,239, 80, 69, 69, 5,182,109,219,166,124,235,173,183, + 92,226,226,226, 26, 21, 88,132, 16,124,248,225,135, 16, 8, 4, 80,169, 84,248,241,199, 31,241,209, 71, 31,129,199,227, 65,161, + 80, 96,211,166, 77,152, 61,123, 54, 56, 28, 14,116, 58, 29,214,173, 91, 87,191, 37, 35, 53, 53,235,250,245,235,237,218,183,111, +239,120,232,208,161,210,190,125,251,186,246,239,223, 31, 34,145, 8,106,181, 26, 6,131, 1,157, 59,119, 70, 88, 88, 24, 74, 74, + 74,112,252,248,241,178,224,224, 96,151, 27, 55,110, 48,197,197,197, 57,141,117,222,117, 44,132, 48,153, 76,144, 74,165,168,170, +170, 66,105,105, 41, 10, 11, 11,145,159,159, 15, 14,135,131,198, 6,239,206,206,206,175, 71, 68, 68,176, 1, 64, 36, 18,161,109, +219,182, 88,176, 96,129, 81,173, 86,143, 1,112,188,230,180,129, 91,182,108, 57,116,249,242,101,142,151,151, 23, 30, 60,120, 0, + 87, 87, 87,142, 80, 40,108, 84, 96,121,120,120,252,118,244,232, 81, 39,179,168, 54,151,179, 74,245,228,113,140, 28, 57,210,105, +251,246,237,191, 1, 24,244,170,117,102, 18,150, 3,167, 99, 91, 81,213,177, 51, 15, 91,247, 29, 52,147,227,217, 98, 17, 0,224, + 53,128,115,250,216,186,214,131,250, 4,237, 51,251,101, 53,132,216,129,174,171,135, 14,109,195, 26, 63, 58, 42,147,195, 11,109, +177,115,251, 58,119, 39,199,238,255,215, 72,176,157, 32, 22, 1, 97, 45, 76,172,107,187, 51,221,103,207, 12,213,237,218, 58, 57, +115,231,190,219,125,120,188, 63,123, 1,152, 93, 31,247,221, 20,109, 92,165,194,187,165, 35,239, 2,129,112, 24,218,181, 13,134, +171,107, 21,126,220,188, 29,222,126, 93,161,213,106, 97,103,103,103, 99, 50,153,244,108, 54,123,167, 37,226, 10, 0,206,158,173, + 98,194,195,171,116,108, 5, 99,252,224,163,213, 35,250, 14, 28,214,170, 87,175, 62,204,169,211,167,244, 93,219,233,139,122,245, +234, 34, 61,127, 33, 33,163,184,184, 32, 56, 44,172, 53,210,211,146, 6, 0, 36, 25,120,126,133, 77,206,160, 39, 90,180, 32,231, +247,236,121,143, 81, 51,137,162,111,150,222, 27, 56,120,240,196,136, 30,221,123, 48,167,207,156,211,241, 81,118, 95,210,237,181, +130,137, 99,199, 28,218,115,240, 80,191,243,231,226,131,100,114,105,252,183, 27,169, 85, 92,213, 29,156, 25,141,238, 28,129,128, + 85,122,254,188, 49,114,210, 36,173,249,125,180,177,177,193,145, 35, 71,192,231,243,107, 63, 60, 30,175,246,187,187,187,187,121, + 81,149, 69,156, 0, 80, 84, 84,132,226,226, 98,216,219,219,195,213,213, 21,197,197,197,184,122,245, 42,210,211,211,193,229,114, + 49, 96,192, 0,176,234,241, 93,126,150,115,244,220,185,125, 91, 70, 70,250, 61, 43,174, 0, 64,175,215,163,162,162, 2,195,135, + 15,103, 29, 63,126,220,227, 68,110,238,176, 47,129,157, 13,113,182, 27, 60,184, 92,186,127,255,115,239,221,190,125,123,114,229, +202, 21,193,128,254,253,103,205, 89,186,116,227,134,237,219,243, 76, 70,163, 71, 83,242,206, 98,177, 88,132, 16,248,250,250,162, +162,162, 2,213,213, 79,102,170, 37, 18, 9, 28, 29, 29, 97, 48, 24,192, 80,202,253,155, 7,121,207,213, 34,255,104,129, 85,147, + 25, 0,136,174,219,161, 48, 12, 99,145,184,226,114,185,141,250, 84, 89, 98,213,122, 22,150, 8, 44,115, 90,133, 66, 97,237, 11, + 86, 87, 88,153,211,201, 98,177,192,102,179, 97,137,229,157, 97, 24,182, 66,161,192,129, 3, 7,208,179,103,207,218,233, 39,153, + 76,134,170,170, 42,200,100, 50,104, 52, 26,100,101,101,225,236,217,179, 8, 10, 10, 2, 96,217,166,173,153,153,153,183, 3, 2, + 2,162,204,157,119, 76, 76,140,207,214,173, 91, 11, 7, 13, 26,228, 69, 41,197, 23, 95,124, 81,214,185,115,103,151,186,157,123, + 99, 96,179,217,184,122,245, 42,130,130,130, 64, 41, 5,143,199, 67, 90, 90, 26,220,220,220,192, 48, 12, 56, 28, 14, 74, 75, 75, + 97,107,219,240,222,134,201,201,201,239,188,251,238,187,133,246,246,246,173,203,203,203,139, 4, 2, 65,247,132,132, 4, 95,189, + 94, 15, 59, 59, 59,216,217,217,225,216,177, 99,112,112,112,192,199, 31,127,156,171, 86,171,175,138,197, 98,119,181, 90,125,183, +184,184,248,139,166, 60,111,163,209, 8,165, 82,137,202,202, 74, 84, 84, 84, 64, 46,151, 67,163,209, 52,154,198,231,161,123,247, +238,136,143,143,103, 47, 95,190,252,151,204,204, 39, 3,193,192,192, 64,124,252,241,199,108,111,111,111,100,101,101,225,246,237, +219,208,235,245,104,204,252,204,229,114, 99,230,204,153,211,205,207,207,143,232,245,122, 48, 12, 3,173, 86, 11,243,247,220,220, + 92,180,108,217,146,229,239,239,223,133, 16, 18, 99,201,130, 9, 43,158, 64, 94,178, 23,142, 60, 31,128,237, 4, 70,190, 17,202, + 23,220,140,164,164,164,100,233,184,169,236, 73,199,118, 85,187,167, 61,180,133,111,224, 4,248, 52, 31,142, 41,239,154,176,248, +155,120,120,251,182, 66, 78, 78, 14, 98, 98, 98,120,133,133,133,239, 2,152,107, 41,247,233,211,215, 77,167,142, 29, 31, 53,250, +141,137, 81,125,250, 12, 50,158, 60,121, 12,201,119, 79,166,188,251,198,235, 37,148,169, 38, 14, 14, 54,137, 15, 31,222, 15,142, +136,104, 15,189,193,208, 29, 88,188, 10, 64,189,141,202,163, 71, 84,247,213, 87, 95,177,254, 56,252,219,132,113,227,223,110,211, +187,119, 63,195,201,211, 71,113,251,218,233, 63,255,181,106,202,197,229,235,246,198,244, 29,240,122,184,208,238,250,177,136,112, +245,100, 95, 59,191, 71,214,154, 82, 79,103, 37, 20, 50,168,105, 23, 89,132,128, 82,250,148,184,122, 86, 96,177, 88,172, 70, 7, +254,117, 57,235,246, 69,230,129,244, 79, 63,253, 4,129, 64, 0, 62,159, 15, 46,151,219,168,155, 69, 93,206,148,172,172, 94,219, +118,238, 20, 60, 79, 92,149,151,151,163,188,188, 28,213,213,213, 24, 59,118, 44,239,171, 91,183,218, 55,198,233,231,233,169, 21, +139, 68,210,212,212, 84,175, 86,173, 90, 61,149, 94,185, 92, 14,145, 72,132,157,187,118,241,134, 12, 30, 60,189,247,177, 99,255, + 2, 80,213,212,188, 19, 66,224,230,230, 6, 71, 71, 71, 16, 66, 96, 52, 26, 81, 92, 92,140,148,148, 20,220,186,117, 11,108, 66, +140,127,231, 51,126,158, 22,121, 21, 44, 88,164, 62,107,139,165, 2,139,205,102,191,176, 21,171, 62, 88, 50, 69,104, 99, 99,115, +175,176,176,176,171,183,183, 55,140, 70, 99,173,192,122,118,138,208,108,237, 72, 74, 74,130,141,141,205,189,198, 56, 41,165, 93, + 58,118,236,136,131, 7, 15,226,252,249,243,120,252,248, 49, 84, 42, 21,180, 90, 45,212,106, 53, 82, 82, 82,192, 48, 12, 34, 34, + 34, 32, 22,139, 27,229, 4, 0,165, 82, 89,196,229,114, 67, 69, 34,209,255, 77,119,120,122,162,188,188,156, 49, 24, 12,216,182, +109,155,220,195,195, 67, 44, 18,137, 44, 22,172,132, 16,148,148,148,192,199,199,167,214, 7, 75,161, 80,192,205,205,205, 44, 40, +160,213,106, 97,107,107,219,232, 20, 33,165, 84, 3, 96, 78, 29,238, 14,163, 71,143,254,125,207,158, 61,205,207,156, 57,131, 27, + 55,110,192,213,213, 21,203,150, 45,123,156,157,157, 61,142, 82,122,235,111,120,193, 26, 61,167,188,188,252,192,189,123,247,186, +116,236,216,177,182,117,136,137,137, 33, 49, 49, 49, 46,117, 77,250,165,165,165,184,121,243, 38,206,156, 57, 3, 66, 8, 50, 50, + 50, 76,106,181,250,247, 6,238,205,243,247,247,223,186, 96,193, 2,137,209,104,172,173,219, 34,145, 8, 66,161, 16, 60, 30, 15, +108, 54, 27,217,217,217, 24, 62,124,184,253,247,223,127,255, 27, 33,164, 5,165, 84,143, 87, 4,213, 76,149,241,102,146,218,193, +209,209,255,238,213,139,191,117,121,173,166,141,184,122,241, 55,163,163,163,255,221,155, 73,106,135, 30,190, 85, 70, 73, 35, 60, +135,143,151,206,213,235,111, 13, 56,113,252,222,136, 57,179,167,240,253,155, 7, 74,175,220,184,231,255,154,105, 14, 75, 44, 2, +148,106,160,162, 10,120,240,136,205,248, 55, 15,148,222,186,147,198,255,215,119, 63, 7,170,212,186, 67,199,206, 86,157,104,100, + 48,166, 33,132,196,126,248, 57,247,226,196,119,220,248,124,161, 47, 20,149,119,208,204,223, 25, 99, 94, 15,197,198,205,119, 96, +103,231, 4,119,119,119,176, 88, 44,177,165,121, 47, 43, 43, 35, 7,118, 95,154,244,214,219, 83, 58,247,239, 55,216,120,226,228, + 31,156,243,167,226,174,254,182,249,243, 67,148,173,180, 33, 84, 33,242,245,243,185,155,245, 56,125, 92,143, 30,253, 32,226,219, + 4, 1, 97,207,173,176,181, 11, 7, 40,114, 89, 44, 8,223,122,251,189,215,250,247, 31,102, 60,121,242, 48, 78, 30,219,126,125, +209,162,102,199, 30, 23,236,226, 93,187,149, 47,140, 29,245,126,101,252,241,251,186,215,135, 6,164,123,137,219,170, 97,197,211, + 3, 72, 14, 71,106,212,106,125,125,250,247,103,171,114,114,184, 18,119,119, 35, 0, 24, 12,134, 70, 5, 22, 0,198, 18, 78, 75, +211,162, 82,169,192, 0, 70, 75, 56,139, 75, 74,154,213, 12,190,107, 97, 48, 24,106,197, 85,121,121, 57,170,170,170, 32, 22,139, + 81,170,213,186, 91,194,217,175, 83,167,109, 95, 45, 94, 60,119,255,129, 3,188,186,226,202,252,225,114,185, 88,185,106, 21,239, +163, 79, 62,121,127, 58,135, 51,179, 41,229,105, 30,172,179,217,108,112, 56, 28,228,228,228, 32, 55, 55, 23, 57, 57, 57,200,201, +201,129, 72, 36, 2,173,167, 60, 95,162, 5,139,188, 74,117,183,193,109, 26,154,226,228,110,169, 32, 48,153, 76, 47, 85, 96, 41, +149,202, 51,103,207,158,237, 20, 27, 27,203,185,126,253, 58, 60, 60, 60,106, 5,150,249,175,121,218,201,198,198, 6,135, 14, 29, +210, 43,149,202, 51,141,188, 68,103,143, 29, 59, 22,181,112,225, 66,238, 59,239,188,131,212,212, 84, 76,157, 58, 21, 85, 85, 85, +144,203,229, 40, 47, 47,135, 74,165, 66,167, 78,157, 32, 20, 10,113,247,238, 93,131, 74,165, 58,219, 72,197,161, 37, 37, 37,213, +174,174,174,158,207,254, 54,106,212, 40,247, 31,126,248, 65,245,224,193, 3, 67,215,174, 93,237, 44, 21, 26,102,236,222,189,187, +214, 50,151,158,158,142, 31,126,248,161,214,231,234,206,157, 59, 88,189,122,117,237,222,101, 77,172,236,183,194,195,195,141, 6, +131, 1, 65, 65, 65,240,246,246,134, 70,163,193,218,181,107,141,127,135,184,178, 20, 26,141,102,255,196,137, 19, 63, 75, 76, 76, +244,228,112, 56, 79, 76,215, 53,249,211,235,245,120,248,240, 33, 82, 82, 82,240,224,193, 3, 84, 84, 84,212, 14, 0,146,146,146, + 42, 13, 6,195,222,250,120, 93, 93, 93,191,248,245,215, 95, 61,108,108,108,158,170,207,102,235,167,217, 42, 90, 90, 90, 10, 7, + 7, 7,244,238,221,219,237,236,217,179, 95, 0, 88,248, 42, 52, 6,132, 16,210,181,179,164,219,135,239,191,141,142,237, 21,143, +238,221, 73,198,233, 99,235,106,157,220, 35,219, 71, 60,186,153,104,139,129,253,230,118,187,114,125,106,131, 78,238, 53, 62, 84, +199, 58,117,114,186,124, 56,238,204,198,121,179,167,220,252,114,241, 60, 55,141, 86, 41, 12,107, 97, 98, 1, 79,196,213,181, 68, +177,230,235,197, 83,110,174,248,110, 27,147, 91,162,159,117,227, 70,101,189,171,123,235,138,150,240, 16, 8, 61,252, 7, 23,250, + 55,143, 9,184,123,231,103,184,216, 87,194, 54,168, 43, 6,246,239,132, 51,103,239, 33,167, 64,131,162,162, 34,104,181,218, 6, +183, 61,120,112,247,208, 4, 74,168, 31,161, 36,151,176,168,112,194,196,201,221, 7, 15, 30, 70,227,227,227,140,135, 15,237,188, +188,119,199,250,253, 44, 30,151,163,214,217,235, 8,209,200, 24,150,109,170, 82, 89,254,164,241,228,241,234, 55,183,214,108,200, +218, 42, 60,204, 99,194,196,169,246,131, 6, 14,167,199,142, 29,102,246,238,217,118,126,239,207,145, 59, 25,150,156, 87,148,167, + 18,200,228, 6, 25, 37,124,135,106, 57,163,146,102,182,208,120, 13, 30,165,135, 21, 79,247, 3, 90,109,126,117, 94,158,167, 83, +207,158,130,135,139, 23,219,184,119,234,164, 33, 53, 62,194, 13, 9, 44, 54,155, 13,176, 88,140, 37,156,150,166, 69,173, 86,131, + 1, 12, 47,194,105, 52, 26,159, 18, 87,102,129,101,182,103, 88,194,185,121,209,162,235,126,253,251, 87, 92,184,112,193, 61, 58, + 58,154, 40, 20, 10, 40, 20,138,167, 68,150,151,151, 23,105, 21, 17, 97,179,251,252,249,192,133, 22,150,167, 37,121,103,177, 88, +127,187,192,122,229,172,174, 13,253,104,182, 96, 89, 34,176, 44,180, 96, 25, 12, 6, 3,220,220,220, 80, 86, 86, 86,111,135,207, + 98,177, 32, 18,137,204,115,192, 13,174,164,211,106,181,107,231,206,157, 59, 99,224,192,129, 46,161,161,161, 40, 45, 45,133,187, +187, 59,132, 66, 97,173,111,152,153,239,206,157, 59,248,245,215, 95,229, 90,173,118,109, 35,156,107, 86,173, 90,245,193,200,145, + 35,157, 60, 60, 60,224,232,232,136,187,119,239,194,209,209, 17,114,185, 28,105,105,105,176,181,181,173,245,203,137,139,139, 83, +104,181,218, 53,141,136, 54,154,144,144,160,183,181,181,189, 91, 90, 90,202,174,168,168,224, 84, 86, 86,114,228,114, 57, 87, 38, +147,113, 79,156, 56,225, 98,111,111,175, 58,119,238, 92,169,159,159, 31,251,241,227,199,108,131,193,192,178,160, 83,196,204,153, + 51,193,227,241,160,213,106,177,118,237, 90,204,157, 59,183,214,231,106,213,170, 85, 88,176, 96, 65,173, 96,222,178,101, 75, 83, + 69, 22,244,122, 61, 12, 6, 3, 12, 6,131, 69,162,247,175,192, 18,161, 78, 41, 45, 38,132, 12,233,216,177,227,169,125,251,246, + 57,215,236, 41, 6,169, 84, 10,169, 84,138,210,210, 82, 84, 87, 87,195,104, 52,194,219,219, 27, 82,169, 20,135, 15, 31,150, 41, + 20,138,254, 13,173, 32,100,179,217, 19,187,119,239,206,121, 54, 13,230, 81,157, 89,180, 11, 4, 2, 20, 22, 22, 34, 38, 38,134, +127,225,194,133,137,255,116,129,101, 22, 46, 45,131,193, 27, 58,108, 44,175,109,212, 0,213,205,219, 39,114, 68,196,152, 51,168, + 79,208, 62,224,201, 54, 13, 55, 19,109,209, 54,106, 0,107,104,145,174, 83, 85,229,230,182,173, 66,136,190,161,176, 58, 0,224, + 98,207, 12,239,223,167, 89,145,157, 29,225,124,189,120,197,209, 95,182,111,233,120,109,247,255,109,211,240,245,226, 39,219, 52, +244,239,211,204,152,250, 32,125, 56,128,237,150,138,150, 33, 67,134, 38,110,254,121, 7,242, 51,227,188, 54,174,112,224, 67, 83, + 9,112, 67,209,189,179, 29,110,108,200,197,159,127,254, 89,172,211,233, 98, 26,172, 75,132,250,165,164, 38,135, 68,134,183,242, +152, 48,241, 61,187, 33, 67,134, 35, 62,254, 8,118,108,251, 57,225,245,177, 35,127, 41,168,148,179,221,184, 54, 60, 27,202,240, +217, 60,123,142,208,198,166, 68, 95, 88,248,164,241,228,112,237,128,209, 76, 3, 51,132,152,246,222,120,251, 94,125,134,227,143, + 99, 71,176, 99,219,230,139, 95,134,143,250, 57,160, 93, 75,210,169,253,183,239, 7, 52, 15,240, 87, 86, 75,229, 44,194,215,107, + 52,140,237,183,219,178,191,203, 92, 48, 49, 51, 49,121,244,191,172,171, 8,159,194,221, 29,131, 6,117,252,232,209, 35,158,107, +183,110,162,194,243,231,109,106, 34,135, 52, 40,176, 56, 28, 14,104,253, 83, 90, 79,113,146,237,219, 89, 0, 26, 92, 92,197,227, +241,160, 82,169, 96, 0,244,150,112,122,158, 60,153,247,232,209,163, 96, 39, 39,167,167,196, 85, 69, 69, 69,237,119,141, 70, 3, +149, 74, 5,145, 72,148, 98, 9,167, 52, 33, 65,179, 98,230,204,133,227,198,142, 93,127,230,236, 89,161,179,179, 51,100, 50,217, + 83, 2, 75,167,211,161, 87,239,222,188, 85,137,137, 19, 0, 44,178,164, 60,221, 99, 98, 26,245,247,101,179,217, 96,254,230, 41, +194, 87, 13,172,198,166,106, 44, 93, 69,248,188,142,145, 16,210,231,153, 67, 11,162,162,162, 52,233,233,233,240,243,243,171, 21, + 41,117,239,105,103,103, 7, 7, 7, 7,220,185,115, 7, 75,151, 46, 85, 3, 88,208, 16, 39,165, 84,161, 82,169,222,232,219,183, +175,154,195,225, 32, 44, 44,172,118,255, 43,134, 97,192,231,243, 33, 22,139,145,152,152,136,161, 67,135,170, 84, 42,213, 27,207, +238,129,245, 28, 78,153, 74,165,122,179, 95,191,126,170,212,212, 84,116,239,222, 29,127,254,249, 39,170,171,171, 81, 93, 93,141, +172,172, 44,180,106,213, 10, 42,149, 10, 63,252,240,131, 90,165, 82,189, 73, 41,149, 53,196,169, 80, 40,134,206,157, 59,151,253, +251,239,191, 7,120,123,123,135,119,232,208, 33,180,119,239,222, 45, 70,140, 24,225, 63,104,208, 32,207,224,224, 96, 77,255,254, +253, 93, 7, 14, 28,232,170, 82,169,184, 87,174, 92, 41, 50, 24, 12, 3, 27, 41,207, 90, 81,146,158,158, 94, 59, 37,200,225,112, + 80, 86, 86, 86,187,211,190,185, 49,122,158, 0,174,143,179,174,200, 54, 11, 43,179,208,106,172,237,175,135,179,209, 14,131,207, +231,155, 45,156,180, 49, 78, 74,105,210,253,251,247,251,246,236,217, 51,105,210,164, 73,138,226,226, 98,216,218,218, 34, 48, 48, + 16, 33, 33, 33,112,113,113,129, 94,175,199,161, 67,135,148,135, 15, 31,190, 39,147,201, 98,158,221, 3,235, 89, 78, 22,139,149, +245,188,198,213,108,189, 50, 11, 44,161, 80, 8,111,111,111,115,217,102, 53,165, 60, 95,208,178,244,247,114,214, 8,151,222,189, +250, 55, 31, 52, 56,214,254,112,220, 17,155, 13, 63,110,189,223, 99,248,140, 77, 46,254,115, 14,186,248,207, 57,216, 99,248,140, + 77, 27,126,220,122,255,112,220, 17,155, 65,131, 99,237,123,247,234,223, 60, 53,229, 65,232, 83,113, 9,159,147, 78, 27,190,160, + 83,143,174,193, 85, 9, 87, 18,140, 43,190,219,102,234,250,218,160, 27,235,215,111,218,187,126,253,166,189, 93, 95, 27,116, 99, +197,119,219, 76, 9, 87, 18,140, 61,186, 6, 87,217,240, 5,157, 44,201,251,180,247,198,219, 15, 30, 52, 28,241,241,135,140,251, +119,255,176,106,203,142,194,158, 49, 35,242,165, 89,153,183, 40, 84, 91,225, 98,123, 23,247,239,223,151,233,116,186,152,231, 57, +184, 63,143,115,234,148,241,117,197,213, 37,103,143,238, 91,238,223,135,233,244,233,163,134,179,103, 19,213,151,146, 74,100,183, + 83,203, 42,202,229,154,199, 74,133, 92,199, 48, 12, 40, 99, 98,127,245,213, 19, 71,220,250,158, 81,215,174,209, 56,119,102, 23, +182,109,253, 73,198, 48,208,140,218,183,207, 52,122,244, 98,234,223,172,153,255,206,221,187,200,144, 97,177,246, 20, 96,134,142, + 28,238,240,251,158,223, 73,243,160,230,205, 2, 3,159,108, 77,243,143,172, 75,127, 3,231, 34, 74, 43,229, 57, 57, 23,239,124, +255,189,214,253,141, 55,156,248,238,238,118, 48,153,136,185,125,175,239,195,225,112,158,178,184, 52,196,233,237,226, 82, 16, 23, + 23,135,144,144, 16,120,123,123,163,174, 15,172,121, 35,109,103,103,103, 28, 56,112, 0, 20,184,109, 9,103,187,128,128, 59, 43, + 87,172,208, 49, 12,131,202,202,202,127,179, 94, 85, 86, 86,130, 97, 24, 28,251,227, 15,157,188,186,122,155,165,121,143, 97,179, +171,199,245,232,177,124,240,224,193,250, 71,143, 30,129, 97, 24,212,181,100,149,148,148, 64, 34,145, 64,163,213,250, 18, 66,108, + 44,225, 44, 57,113, 66,140, 70,218,245,103, 45, 88,127,199,115,255,159,178, 96, 25,141,180, 23,131, 27, 0, 0, 32, 0, 73, 68, + 65, 84, 70,248,250,250, 62, 21,122,133,197, 98, 61,245,105,202, 10, 66, 74,233,118, 66,200,201,254,253,251, 47,236,220,185,243, +180,133, 11, 23,178, 67, 67, 67, 33,147,201,224,232,232, 8, 55, 55, 55,164,165,165, 33, 46, 46,206, 84, 86, 86,182, 9,192, 18, + 75,150,194, 83, 74,207, 19, 66,134,180,110,221,122,207,188,121,243,236,251,245,235,199,245,245,245, 5,165, 20,137,137,137, 56, +120,240,160,254,231,159,127,150,215,136,171,243, 22,166,245, 20, 33,228,245,129, 3, 7,238,156, 56,113,162,173,201,100,226,102, +101,101, 65,171,213,194, 96, 48, 32, 55, 55, 87, 31, 31, 31, 95,173, 82,169,198, 83, 74, 79, 89,192,119,135, 16,210,234,244,233, +211, 19,175, 92,185,178,116,210,164, 73,206,189,123,247,230, 25,141, 70, 92,190,124,185,180, 93,187,118,110, 37, 37, 37,250, 3, + 7, 14,148,107, 52,154, 5, 38,147,201,162, 80, 57,132, 16,200,229,114,184,184,184, 64,171,213,130, 97, 24,232,116, 58, 72, 36, +146,218,240, 70,148, 82, 52,197,105,254,153, 58,192,214,235,245, 24, 59,118, 44, 24,134,193,218,181,107, 97, 52, 26,155, 76,102, +111,111,127, 59, 41, 41,105, 72,219,182,109,107, 69,139,185, 14, 9, 4, 2,184,184,184,192,217,217, 25,241,241,241,224,114,185, +183, 45,124, 70,127, 2,104, 71, 8,121,237,222,189,123,111, 1,104,171,215,235,189, 77, 38, 19, 97,177, 88, 69,148,210,187,114, +185,252, 23, 75, 67,229,148,148,148, 44,125,251,237,183,219,237,218,181, 75,194,225,252,223,171,193,225,112, 32, 16, 8, 96,222, +212,146, 82, 10,157, 78,135, 47,190,248, 66,174, 84, 42,151,190, 42,141, 65, 84,135, 78,216,252,195, 58,201,217,115, 39, 75,239, +103,224, 72,221,173, 24, 36, 0,174, 92,159,122,164,170,114,115,219,194,188, 60, 73, 84,135, 78, 22,113,234, 76,198,242, 55,198, +111,242,173, 9,149,179, 52,235,113,206,154, 93, 91, 39,103, 2,192,191,190,251, 57, 48,183, 68, 63, 43,245, 65,250,240, 31, 55, + 93,232,164, 51, 25,203, 45,225,252, 63,209,178, 83, 6, 10, 13,165,244, 6, 33, 36, 32,244, 53,205,130,136, 48,222,176, 66,169, +161,160,186, 90,247, 33,165, 52,211,210,188,119,235,218, 19,231, 78,253,142, 29,219,118,202, 41,195,214,184,184,184, 80, 0,184, +127,223,133,222,191, 95, 69,255,207, 95,216, 65,233,106, 83,186,100,193,252,105,179, 21, 10,197,154,141,223, 54,188,225,108,235, + 54,157,209,186, 77,103,204,248,240,115,251, 86,225, 97,126, 0,176,111, 31, 53, 69, 4,147,163, 11,191, 92, 60,108,201,146,197, +144, 43,180, 48,135,213, 73, 75, 78,253,227,209, 35,170,179,118, 77, 79, 99,161,209,120, 3,179,103, 7,171, 42, 42, 92,187,125, +246,153, 11,231,147, 79, 88, 13, 57,185,215,125,127, 45,225,188,117,247,238, 31, 83, 39, 79, 46, 88,180,112, 97,255, 77, 63,253, + 36,138,140,140, 68,113,113, 49,194,194,194,224,237,237,141,211,167, 79,227,192,222,189,202, 42,133, 98, 1,128, 31, 45,225,220, +126,236, 88, 90,104,120,120,217, 79, 63,253,228, 53,120,240, 96,162, 84, 42, 33,147,201, 32,147,201,160,213,106, 81,179,145, 51, + 77,207,200,184,111, 48, 24, 54, 89,154,119, 83,105,169,112, 73,167, 78,249, 60,134, 89,249,250,200,145,115,151,124,253,181,160, +121,243,230, 68,171,213,214, 90,177,244,122, 61, 36, 18,137, 94,167,211, 57, 3, 80, 89,194, 41,248,249,103, 99,105,105, 41, 92, + 93, 93,107,183, 93,170,187,175,160, 66,161, 0,165,214, 77,112,155, 52, 80,168,175, 15,119,114,114,186,205,225,112,124,234, 90, +179,158, 23,219,174,238, 49,131,193,144, 95, 90, 90, 26, 85, 87,225, 82, 74,207,212, 35, 12, 2, 1, 44,235,213,171,215,235,115, +230,204, 33, 23, 46, 92,192,225,195,135,105,102,102,230,126, 0, 11,234,107, 28, 27,225,180, 21, 8, 4, 31,139,197,226, 62,230, +173, 24,108,108,108,238, 41,149,202, 51, 90,173,118,109,125,187,183, 55,194,105, 39, 16, 8,102,138,197,226,190, 10,133,162, 45, + 0,216,218,218, 38, 41,149,202,211, 90,173,118, 93,125, 1,164, 27,225, 20,217,219,219, 47,117,113,113,121,243,147, 79, 62,113, + 78, 72, 72, 40, 58,119,238, 28,175,170,170,106,151, 78,167,171, 55,216,243,243, 56,157,157,157,111,179,217,108,159,191,227, 25, + 1, 64,155, 54,109,226,135, 14, 29, 58,120,252,248,241, 48, 24, 12,248,241,199, 31,113,250,244,233, 63, 50, 50, 50,134, 52, 52, +250,124,150,147, 16,226,226,227,227,115, 97,218,180,105,254, 99,199,142,181,113,116,116, 4,135,195,129, 82,169,196,195,135, 15, +145,152,152, 72,143, 28, 57, 82,125,231,206,157,124,149, 74, 21, 77, 41, 45,179,180, 60,255,202, 40,249, 89, 78, 46,151,219,211, +215,215,119,247,162, 69,139,108,251,246,237, 43,114,118,118, 6,155,205,134,193, 96, 64, 81, 81, 17,146,147,147,113,242,228, 73, +229,254,253,251,149,229,229,229, 99,159,221,171,229, 63,149,206,151,201,217, 42,132,124,249, 76, 0,231,122,119,103,111,232, 92, + 75,210, 57,184,143,227,160,215, 95,239,208, 7, 0, 14, 28,184,117,230,143, 51,149,199, 94, 52,157,141,165,213, 18,206,150,193, +236, 69, 41,169,201, 79,109, 68, 25,222, 42, 34,189,101,228,200,111, 44,225, 50,239,228,254,108,222,235,236,142, 95,215,134,251, +212,116,170, 57, 32,244,231, 11,230, 99,217,210,229, 56,178,239,208, 31,169,143,104,252, 63,185, 46,253,157,156,230,224,196, 54, +158,158, 61,214, 50,204,252, 63,147,147, 37,117, 7,106,102, 75,115,221,193,164,151,151, 87, 73, 97, 97,161,187, 37,156, 67, 54, +108,208,171,196, 98,193,252,149, 43,123, 86,107, 52, 61,151, 44, 89,194,185,117,235, 22,126,248,254,123,163, 38, 63,127,103, 41, + 48,243,121,179, 31, 13,113,250,207,156, 41,252,244,135, 31,222, 9, 12, 10,114,123,235,173,183,184, 92, 46, 23, 74,165, 18,121, +121,121, 56,117,242,164, 46,245,254,253, 84,185, 92, 62,140, 82, 90,104, 41,231,144, 13, 27,244, 14,129,129,176,113,117,165,103, +207,159,183,159,250,241,199,211,154, 5, 4,216,247, 31, 48,128,107,103,103,135,202,202, 74,100,101,101,225,208,161, 67, 37,213, +213,213, 94,148, 82,147, 37,156, 59,175, 92,105,125,236,226,197, 81,223,124,243, 13, 63, 34, 34, 2,246,246,246, 80, 40, 20, 72, + 78, 78,198,197,139, 23,181,155, 54,109,146,201,100,178,105, 70,163, 49,238,239,122,238,255, 51, 2,235, 63,245,226, 17, 66,162, + 0,124, 89,243,239,215, 22,196,244,123,101, 26, 29, 66,136,159,147,147,211,102,141, 70, 67,213,106,245, 84, 74,105,238,127, 91, + 58, 9, 33,156,168,168,168, 31, 74, 74, 74, 94,163,148,194,222,222,254,106, 74, 74,202,116, 74,169,177,169,156,132, 16, 54,128, +215, 36, 18, 73, 39, 91, 91,219,158, 90,173,182,101,205, 52,219,125,165, 82,121, 81,175,215,223, 0,112,149, 82,106,250,255,153, +247,154,116,246,245,242,242,154,204, 48, 76, 16, 33,196,193,100, 50,193, 96, 48, 84, 49, 12,243, 80, 38,147,253, 12,224,244,255, +239,116,190, 44,206,240, 32, 50,130,178,208,178, 62, 33,240,148,160,121, 70, 56, 16, 6,247, 83, 30,210, 67, 77,168,243,172,216, +129,174,171,129, 39, 43, 13, 27, 11, 57,244,148,192,178, 64,180, 52, 89, 92, 6,113,222,166,132,250, 61,221, 40,146,220,176,214, + 35,118,252, 21,129,101, 41,194, 67, 73, 79, 80,188,198, 80,220,184,159, 65,207,189,170,109,221,203,228, 92, 78,136,211,247,142, +142, 87, 89, 28,142, 7, 0, 86,141,181,133, 97, 8, 49, 81, 66,140,117,167,177,234, 14, 40, 27,227,212, 3,145, 92,129,192,215, +100, 52,186, 23, 3,146, 99, 38, 83,123, 13,165,213, 62,192,151,137,148,166,189, 72, 58,245, 64, 36, 91, 32,240, 59, 70,233,240, + 82,177,184,117,137, 90,237, 10,128, 74,196,226,251,114,165,114,155, 70,163,217,248,156,160,234,141,114,242, 4, 2, 31,147,209, +232, 14, 0, 44, 14,167,100,143, 86,235,155,111,103,247,150, 70,171,245,151, 72, 36, 6,157, 78, 39,215,104, 52,227, 13, 6,195, +217,166,228,253,161,209,216,234, 10,139,213, 93, 47, 22, 59,235, 9, 17,235,140, 70,189, 78,175,207,211,104, 52,247, 0,124, 71, + 41,125,244,119, 62,247, 87, 14,230,213,102,127,199, 7, 64, 31, 43,167,149,211,202,105,229,180,114, 90, 57,173,156,127, 63, 39, + 0, 27, 0,126, 0,216,255,196,188,191,106, 31,142, 85, 98, 90, 97,133, 21, 86, 88, 97,197, 43, 97, 48, 81,225, 57, 62, 87, 86, +252,127,154, 34, 4,208,167,158, 7,101,177,233,239, 69, 86, 19, 88, 48,149, 96,229,180,114, 90, 57,173,156, 86, 78, 43,167,149, +243, 21,227,108,140,251,149,153,122,180, 78, 17, 90, 57,173,156, 86, 78, 43,167,149,211,202,105,229,180, 78, 17,190,220, 15, 11, + 86,212,167,172,221, 9, 33,238, 47,251, 92, 43, 94,237,186,240,156,107,189, 9, 33,222, 77, 60,223,211, 90,234, 86, 88, 97,133, + 21,255,108,252,199, 5,150,165,157,213, 95,236,212,254,146,224, 33,132, 44, 39, 4,133, 79, 62,100,249,203, 58,215,130,251,122, +185,186,186,126, 20, 30, 30,190,211,195,195, 99, 6, 33,196,173,137,215, 7,139,197,226,117, 18,137,228,130, 68, 34,185, 32, 22, +139,215, 17, 66,130, 95,210,115, 35,132,144,169, 66,161,240,188,151,151, 87,129, 64, 32, 56, 79, 8,153, 70, 94, 48, 0, 37, 33, +164, 5, 33,100, 54, 33,100, 14, 33, 36,180, 41,215,186, 71,196,238,117,139,136,189,235, 22, 17,155,236, 18, 57, 44,216, 45, 34, + 54,217, 45, 34,246,174,123, 68,236,222,191,161,190,190,240,243,173,185, 54,247,201,167,241,107, 9, 33,223, 17, 32,143, 16,228, +255,213,186,100,133, 21, 86, 88, 97,197,255, 95, 52,201,201,221,199,199,103, 32,195, 48,227, 0,128,197, 98,253,158,159,159,127, +252, 5, 58,156, 79,107,190,175,162,148,206,255, 43,231, 89,112,237, 26, 74,233,220,166,139, 51,124,202, 48,148,245, 36,159,228, + 51,119,119,119, 27, 54,155,253,111,142,131, 38,147,201,134, 16,204, 96,152, 39, 1, 42, 89, 44,242, 41, 33,100, 29,165, 84,250, + 34,162,112,194,132, 9,107,214,173, 91, 39,180,177,177, 65, 78, 78, 78,191,105,211,166,117, 37,132,204,166,148, 22, 53,118,189, + 72, 36, 26,215,177,211,107,179, 87,126,251, 47,137,187,155,155,216,104, 98,244, 89,217,217,226, 47,230,207,237, 36, 18,137,214, + 53, 20,228,248, 89, 33, 5,224, 61, 14,135, 51, 70, 40, 20,182,208,104, 52,143,140, 70,227,126, 54,155,221,127,233,210,165, 17, +131, 6, 13, 18,202,229,114,190,209,104, 12,218,177, 99,199,236, 95,127,253,117, 32, 33,100,120, 67,203,237,205, 22, 28, 74,105, + 65,157,195, 3,115,115,115, 35,185, 92, 46, 90,180,104, 65, 0,164, 53,114,126, 45, 40, 16,156,114,121, 95, 36, 0,132,119, 27, +157,158,114,121, 31,106,190,255, 13,131,129,167,235,130, 72, 36,250, 81,173, 86,231,153,127,175, 73,167,212,146,107, 9, 33,235, +107,194,252, 68, 0, 24, 89,115,234, 65, 74,105, 50, 33,196, 67, 40, 16,124,172,214,104, 8, 0,242, 87,234,146, 21, 86, 88, 97, +133, 21,255, 48,129, 69, 41,125,235,225,195,135, 54, 12,195, 32, 52, 52,116, 2, 0,139, 5,214,243, 58,156,222,189,123,183, 19, +137, 68, 79,237, 90,172, 86,171,249,132,160,247,139,136, 22,243, 61,116, 58, 45,139,203,229,131,197, 34,179, 91,183,110,221,172, +172,172, 44,129,197, 98,237,204,207,207,175,124,129, 78, 22, 91,182,108, 9,241,244,244,252,183,221,149,139,138,138,248,195,135, + 15,107, 18,223, 59,132, 8,180, 2, 65, 39, 30, 33,158, 38,163,209, 1, 0, 56, 28, 78,101,168,189,125,212,178,111,190,177, 33, +132, 48,229,229,229, 80,171,213,152, 53,107,150, 40, 53, 53, 53, 22,192,198, 70,210, 24,210,185, 75,215, 89, 39, 79,158,104, 41, +175,168,212,108, 89,179, 57, 81,205,225, 42,155,183,106,201,255, 97,243, 54,135,247,222, 25,255, 33, 33, 36,233,121, 97, 67,158, +225, 97, 1, 56,244,241,199, 31,135, 15, 25, 50,132,175, 80, 40,132,106,181,186,217,206,157, 59,191,136,138,138,146,180,109,219, +150,191,123,247,110, 34,147,201, 64, 41,181, 9, 11, 11,163, 99,198,140,209,236,217,179,103, 6,128,245,150, 8, 94, 79, 79,207, +133, 53, 2,189,110,221,227,122,121,121,137,106,202,116, 9, 33,152,213,144,184, 38, 64, 70,120,183,209, 0, 65, 80,202,229,125, +194,240,238,163, 53,160,120, 72,128, 12, 0,240,246,246, 94, 2,212,217,215,233,105,220, 47, 40, 40,120,161,216,129, 67,134, 12, + 5,165,244, 71,111,111,239,120,169, 84, 26, 65, 8,166, 90, 58, 8, 32,132,192,217,217,249,117, 0, 27, 0,188,241,224,193,131, +112, 0, 8, 11, 11,227, 2, 72,118,112,112,104,175,125, 34,174,172,176,194, 10, 43,172,248, 31, 20, 88, 60, 0, 72, 72, 72, 0, +165,148,255, 34, 70,129,186, 29,206,204,153, 51,225,233,233,249,172,104,193,133, 11,231,255, 74,158,158,186,199,215, 95,127, 45, +169,170,170,234,243,203, 47,191,244,240,246,246, 94, 93, 80, 80,112,189,145, 60, 74, 9, 33,171,106, 44, 14, 16, 8,132,233,211, +166, 77, 75,172,249,185,217,209,163, 71,109,134, 14, 29,170, 2,144, 13, 0, 2,129,208,155,205,102,133, 60,113,106,195,170,134, +132,224,104, 66, 2,249,124,126,175,169, 27, 54, 24,219, 15, 29,202, 17,187,186, 18, 0,200,126,240,192,121,213,183,223,118,173, +204,204,228,171,157,157,203,203,149, 74,117,122,122, 58, 4, 2, 1, 97,179,217,237, 27,203,176, 88, 44,254,232,155,101,171,196, +242,138, 42,181, 86, 94,173, 99,155, 12, 90, 91,145,200, 84, 92, 44, 45,147,216,216,168,230,127,249, 21,239,253, 41,111,125, 4, + 96,122, 35, 84, 51,102,207,158,221,178, 99,199,142,222,123,247,238, 37, 50,153, 12, 28, 14, 71,210,182,109, 91, 68, 69, 69,153, +206,157, 59, 71, 2, 2, 2, 16, 17, 17,129,203,151, 47,227,234,213,171,164, 93,187,118, 54, 7, 15, 30,156,240, 60,129,245, 28, + 81, 61,187, 75,151, 46,190, 18,137, 68, 35,151,203, 49,105,210, 36, 0, 64,223,190,125, 67,196, 98,241,143,213,213,213,194,184, +184, 35,175, 55, 38,174,165,201,135,199, 0,128, 91, 68,236, 93, 0,145,160,120, 88,146,124,184,117,157, 83, 90,166,165,165,117, +174,172,172,172,117, 54, 52, 7, 22,239,209,163, 71, 83,234,187,148, 16,178,106,216,176,161,159, 1, 4,209,209,209,210,153, 51, +103,210,228,228,228, 17,163, 71,143,234,157,145,241,176,222,116, 62, 91,143,198,141,123,243,177,147,147, 83, 95, 47, 47,175, 12, + 0, 28, 46,151,107, 62,149,237,237,237,237, 20, 17, 17, 49, 86, 34,145,100,177, 89,172, 0, 10, 74, 27,171, 75, 86, 88, 97,133, + 21, 86,252, 3, 4, 22, 33,132,214,233, 24, 72, 3,163,240,178,164,164, 36, 79,141, 70, 3, 66, 72,153, 5, 29,212,153,186, 29, + 14,155,205,254,129,197, 34,211, 9, 33,136,136,136,124,188,118,237,218,231,197,220,210, 69, 68, 68, 62,102,179, 89,205, 41,165, + 32,132,245, 35,195,152,164,207,227,172,175, 67,228,243, 5,159, 2,128,135,135,103,230,241,227,199,117,163, 70,141,194,183,223, +126,203,155, 55,111,222, 92,127,127,255, 25, 57, 57, 57,197,245,165,179,230,255,249,238,238,238, 54, 91,182,108, 9,153, 54,109, + 90, 98, 97, 97,225,124, 0,240,242,242, 90, 14,160, 21,128,236, 58,199,176,105,211,158,130, 41, 83,166,164, 75,165,210,249,245, +113,190, 78, 72, 11,255,176,176, 94, 75, 18, 18, 40, 75,171, 37,101,151, 46,201, 75,165, 82,195,163,210, 82,155,173,183,111, 15, +249, 98,249,114,174,175,159, 31, 46,196,197,185,148,169, 84,165, 50,173, 86, 35,149, 74,169,209,104,188,106, 65,222,195,221, 92, + 93,109,126,250,238,199, 91,182, 92, 54,227,238,237, 77, 56, 78, 14, 92,150,141, 61,159,197,225,104,154,251, 7,241, 0,132, 55, +246,140,120, 60,222,132,126,253,250,217,236,217,179,135, 68, 68, 68,192,193,193, 1,151, 46, 93, 66, 82, 82, 18, 12, 6, 3,171, +178,178, 18, 29, 58,116,192,202,149, 43,225,231,231,135,170,170, 42,228,230,230,186,240,249,124,215, 6,202,243, 41,193, 59,119, +238, 92,248,250,250,194,104, 52,162,162,162, 2, 70,163, 17, 98,177, 24, 0,144,157,157,141,163, 71,227, 26,173, 75, 22,138, 35, +116,233,210, 69, 65, 8,185,255,172, 5,171, 41,156,158,158,158,219, 74, 74, 74,219,197,196,196, 64, 38,147,233, 22, 45, 90,132, +214,173, 91, 35, 36, 36,212,146, 58, 63, 95, 32, 16,252,236,231,231,247,229, 39,159,124,226,228,228,228, 4,173, 86,251, 97, 81, + 81, 17,166, 77,155, 6, 0, 24, 60,120,112, 24,135,195,217, 58,105,210, 36, 52,107,214,236,129, 66,161, 72, 75, 74, 74,154, 87, + 93, 93,157,250,162,121,183,176,124,172,156, 86, 78, 43,167,149,243,191,138,211, 82, 45,242,143, 18, 88,148, 82, 66, 8,161,141, +101,136, 82, 90,233,237,237,237, 41, 18,137, 64, 41,109,242,116,155,201,100,154,225,226,226, 82, 50,127,254,252,110, 33, 33, 33, +186, 25, 51,102, 36,103,101,101, 45,168,123, 78, 64, 64,192,210,239,191,255, 30,233,233,233,217,203,151, 47,191, 92, 86, 86,246, +117, 19, 31,250, 60, 66,200,218, 26,107, 88, 89, 92, 92, 92,235,132,132,132,233,107,214,172,113,253,224,131, 15,120, 31,125,244, +209,120, 0,223, 54,198,195,102,179, 85,207,155, 22,172,167, 19,214, 61,207, 71,203,140,161,132,136,236,248,252,152, 37, 9, 9, + 84,151,157,173,250,245, 95,255,178,253,233,230,205, 69, 6, 74,221,221,220,220,208,189,107,215,106, 33,155, 93, 86, 82, 92,204, +184,181,104,193,206, 58,126,220, 69,205,231, 23,238,217,179, 71, 86, 94, 94,126,216,130, 74, 41, 55, 49,140,222,214,219,215, 56, +106, 68,191,240, 91, 55,146, 30,216,186,186,176,162,218, 69, 68,166,166,103,223,161, 38,147,129, 16, 34,111,140,199,222,222, 62, +164,188,188, 28,114,185, 28,174,174,174, 88,187,118, 45, 60, 60, 60,160, 82,169,112,237,218, 53,234,227,227, 67, 18, 18, 18,224, +227,227,131,210,210, 82,232,116, 58, 40, 20,138, 18,173, 86,171,174, 79,240,114, 56,156,159, 89, 44, 50, 25, 0,154, 53, 11,184, +255,227,143, 63,106, 0,160,101,203,150, 24, 49, 98, 4, 14, 28, 56,128,212,212, 84, 48, 12, 3, 74,169,198,199,199,247, 62,139, + 69, 90,214,104,164, 23,182,226,152, 67,240, 20, 20, 20,140,124,193, 23,157,120,120,120,140, 8, 11, 11, 27, 63,110,220, 56, 29, +151,203,133, 74,165,130, 74,165,194,253,251,247,117,253,250,245,147, 14, 27, 54,212, 61, 62, 62,190,193,116,106,181,218,199, 94, + 94, 94,115,103,207,158,189,118,211,166, 77,118, 95,124,241, 5, 76, 38, 19, 24,134,169,253,107,254,126,248,240, 97,100,102,102, +174,171, 43,174,172,176,194, 10, 43,254, 87, 96,169, 22,249, 71, 9,172,255, 36,216,108,246, 79,167, 78,157,106,219,163, 71, 15, + 78,239,222,189, 35,124,124,124, 34,242,243,243,147, 1,192,199,199, 39, 98,192,128, 1, 17,110,110,110, 88,183,110,157,138,205, +102,255,244,130, 15,169,110,103,151,232,233,233,185,250,224,193,131,171,166, 78,157, 10, 15, 15,143, 86,255,233, 60,219, 9, 4, +237, 38,173, 93,107,228, 26, 12,172, 13,171, 87,219,253,235,252,249, 85,123,247,237,227,116,233,210,133, 80, 74,113,239,238, 93, +209,202,245,235,109,198,198,198,102,167,101,102, 26,143,156, 60,105,144, 22, 20, 84, 20,148,150, 46,164,148, 86, 52,198,111, 48, + 24,174,101, 60,204,240,238, 22,243,154,215,165,155, 41, 73, 35, 99, 7,245,226,114, 88,228, 97,118,193,109, 79, 15, 23,251, 11, +231, 79,107, 12, 6,195,181,198,120,148, 74,101,150,209,104,116,162,148,186, 94,184,112, 1,174,174,174,168,172,172,132,193, 96, +128, 78,167,211,169, 84, 42, 97,121,121, 57, 52, 26, 13,180, 90, 45,236,236,236,112,239,222, 61,169,209,104, 60, 87, 31,167,209, +104,124, 79, 40, 20, 46,163,148,114,181, 90,109,225,153, 51,103,192,227,241,124,237,237,237,231, 27, 12, 6, 20, 22, 22,226,202, +149, 43,203,245,122,125,158,249, 26, 62, 95,224,170,213,106,141,245, 57,185, 91,106,193,122, 81,248,248,248,120, 5, 4, 4,204, +158, 55,239,211,160,214,173,219,162,172,172, 12, 12,195, 64, 34,145, 64,165, 82,193,206,206, 14,175,189,246, 90,226,210,165, 75, + 43, 40,197,188,198, 68, 96, 97, 97, 97,185,159,159,223,194,105,211,166,205, 14, 10, 10,242, 3,128,224,224, 96,244,235,215, 15, +199,143, 31, 71,122,122, 58,170,171,171, 77,183,110,221, 58, 90, 88, 88,104,141,237,101,133, 21, 86, 88, 97, 21, 88, 77,135, 84, + 42, 45,245,241,241, 57,113,231,206,157, 33, 99,198,140,193,133, 11, 23,222, 6, 48, 27, 0, 4, 2,193,219, 99,198,140,193,157, + 59,119,240,224,193,131, 19, 82,169,180,244,101,220,147,207,231,107,116,186, 39,198, 40,161, 80, 40,108,226,229,205,106,166, 6, + 1,160, 89, 3,199,234, 5,139,195,241,140, 28, 48,128, 83,153,148, 36,223,114,227,198,215, 59,119,238,228,116,235,214,141, 24, +244,122,152, 24, 6,129,129,129,164,119,159, 62,226,223,118,238,116, 50, 41,149, 9,223,124,246,217,165,205,147, 38, 85,167, 83, +154,109, 73, 2,181, 90,237,250, 15,167,191,215,247,236,249, 4,175,176,176, 64,231, 19,167,207, 39, 58, 59,217,219,132, 4, 7, +139, 43, 42, 43, 77, 11,230,125,202,209,106,181, 27, 26,227, 81,171,213,135,206,156, 57, 19,235,235,235,235,154,156,156, 12,157, + 78, 7,147,201,132,222,189,123,131, 82, 42, 0,192,112, 56, 28, 60,120,240, 0,122,189,190, 36, 35, 35,163,240,225,195,135, 2, + 0, 43, 26,226,213,104, 52, 57,117,255,247,243,243,235, 54,120,240, 96, 24,141, 70, 12, 24, 48, 0,113,113,113,221, 10, 11, 11, +183,212, 57, 37,231, 37,140,132, 64, 41,109,233,237,237,125,176,230,144, 69,206,237,158,158,158,161,193,193,193, 75,151, 47, 95, +206,245,245,245, 5,195, 48,112,114,114,128, 82,169, 70,121,121, 57, 90,181,106, 5, 95, 95, 95,172, 92,185, 18,120,178, 2,208, + 34, 11, 91,110,110,110, 22,128, 25,173, 90,181,226, 41, 20,138, 8,181, 90,189,168,119,239,222, 72, 76, 76,196,181,107,215, 62, + 84, 42,149, 21, 98,177,216,224,229,229, 53,142,197, 98,137,245,122,125, 92, 73, 73, 73,137,181,137,178,194, 10, 43,172,120,197, + 5,150,187,187,187,141, 80, 40,124,115,242,228,201, 14, 12,195,128,199,227, 69,186,184,184, 44, 43, 43, 43,171,110,234, 77, 85, + 42,213,222,157, 59,119,246,251,238,187,239,120,131, 6, 13,106,225,227,227,211, 17, 0, 70,142, 28,217,194,214,214, 22, 59,119, +238,212,171, 84,170,151,182,167,145,193, 96,232,209,161, 67, 7, 84, 84, 84, 32, 59, 59, 59,185, 41,215, 30, 61,122,212, 6, 79, +252,174, 26, 60,214, 16,140, 58,157,163,131,183, 55,171,224,252,121,125,133, 92,238,217,163,103, 79, 98,208,235,193, 98,177, 80, + 94, 94,142,220,220, 92,216, 59, 56,144, 7, 25, 25,146,159, 63,253,244,104,179, 54,109,248, 38,157,206,185, 9, 98, 66, 73, 8, +121,251,195, 25, 31, 28,218,181,235,119,151,170, 42,121,166, 80, 36,210, 9,248, 92,247,143,102,124, 96,170,168,168,152, 72, 41, +181,228, 57,173,216,181,107,215,128, 1, 3, 6,220,245,243,243,115, 43, 45, 45,245,168,170,170, 50, 85, 84, 84,176,241,196,151, +138, 0,192,249,243,231, 33,151,203,141, 38,147, 41, 1,192, 18, 74,169,206,210,180, 58, 57, 57,217,198,196,196,116,118,119,119, +135, 92, 46,135,139,139, 11,218,181,107,215,217,201,201,105,111, 69, 69,133,226,101, 86,238,211,167, 79,219, 82, 74, 59, 83, 74, + 49, 96,192, 0,139,174, 33,132,140, 26, 60,120, 48,151,197, 98, 65,173, 86, 65, 32, 16, 66, 34,177,131,173,173, 61, 66, 66, 66, + 80, 88, 88,136,254,253,251,235, 51, 50, 50,118, 20, 21, 21,253,209,212, 52,201,100,178,190, 93,186,116,153, 60,125,250,116,152, + 76, 38, 12, 31, 62, 28,121,121,121, 95,102,101,101, 29,117,113,113,137,125,247,221,119,157,156,157,157, 49,103,206, 28, 17,128, +181,214, 38,202, 10, 43,172,176,226, 31, 46,176, 26,154,243,244,241,241,233,224,226,226,242,161,173,173,173,195,185,115,231,196, + 0,208,173, 91, 55, 48, 12,243,147,151,151,215, 15,133,133,133, 87,154,114,211,202,202, 74,185,167,167,231,145,107,215,174,141, + 30, 57,114, 36, 78,159, 62, 61,177, 70, 96,225,218,181,107,120,252,248,241,145,202,202, 74,249,203,200,160,143,143,207,192,232, +232,232,145, 29, 58,116, 64,124,124, 60, 76, 38,211,213,166, 92, 95,119,197, 32,158,179,138,208,124,204, 34, 50, 54, 27,132, 16, + 24,141, 70, 0, 64, 89,105, 41,210,211,210, 80, 81, 89, 9,173, 70, 3,165, 74,101, 10, 9, 8, 80,203,116, 58, 46, 1,154, 52, +199, 69, 41,205,145, 72, 36,185, 42,149,210,205,201,197, 81, 45, 22, 10, 81, 37,151,241,110,223,186,174,160,148, 62,178,144, 67, + 71, 8,233,121,252,248,241,133,108, 54,123,140, 68, 34,193,244,233,211,217,209,209,209,224,241,120,208,106,181,168,170,170,194, +206,157, 59, 75,141, 70, 99,243, 26, 65, 34, 17,139,197,219,216,108,118,190, 92, 46,255,162,177,123, 8, 4,130,232, 97,195,134, +177,181, 90, 45,150, 44, 89,130,133, 11, 23, 98,192,128, 1,236,155, 55,111, 70, 3,136,123, 89, 21,155, 97, 24,244,237,219,183, +174,147,251,125, 75,174,227,114,185, 33, 65, 65, 65, 40, 45, 45, 69,105,105, 41, 92, 93, 93,225,229,229, 5,119,119,119,172, 89, +179,134,174, 93,187,246,162,201,100,218, 81, 92, 92, 92,246, 2,117,113,220,219,111,191, 61,118,244,232,209, 80, 42,149, 56,119, +238, 28,186,118,237,138,149, 43, 87,186, 94,186,116,105,114,135, 14, 29,192,229,114,113,241,226, 69,232,245,250, 66,107,243,100, +133, 21, 86,252,175,225, 85,241,191,106,212,130,229,232,232,104, 39, 20, 10,167, 14, 25, 50,164, 91,108,108, 44,150, 45, 91, 90, +251, 27,139,197,194,246,237,219, 37,135, 14, 29,250,204,215,215,183, 39,195, 48, 63, 22, 20, 20, 84, 88,122, 99,134, 97, 14,237, +218,181,107, 80,151, 46, 93,108, 98, 98, 98, 2,107, 58, 95,221,174, 93,187, 84, 12,195, 28,106,106, 70,158,221,244,209,219,219, +187, 53,135,195, 25, 57,100,200,144,214,239,188,243, 14, 82, 82, 82,176,115,231,206,135, 33, 33, 33,151,155, 72,157,221,200, 42, +194,229,141, 89,179,216,124,126,121, 85,113,177,131,196,207,143,235,104,107, 91, 20, 31, 31,239,219,167, 79, 31,146,151,151,135, +202,202, 74,104, 52, 26,220,186,117,139,225, 0, 57, 28, 71, 71,146,115,237, 26, 97,243,249,229, 77, 45, 3, 95, 79,199,224, 47, +231, 77,107,166,209,104,194,101, 50,153,145,203,229,114,125, 60, 28,242,154, 88,185,181, 98,177, 56, 10, 0,135, 97, 24,149,147, +147,147,205,169, 83,167,192,231,243, 65, 8, 65,100,100, 36,132, 66, 33, 79, 44, 22,231, 2,128,135,135, 7,255,167,159,126,178, + 31, 63,126,252,165,198,184,163,163,163, 57,254,254,254,253, 66, 66, 66,112,245,234, 85,220,191,127,191,224,250,245,235,222, 81, + 81, 81,240,246,246,238, 23, 29, 29,125,236,194,133, 11,198,151,244,146,190,144,147,187,201,100,162,132, 16,176, 88, 44, 48, 12, +131,210,210, 82, 52,111,222, 28, 27, 55,110,196,154, 53,107, 54,188,168,143, 84,171, 86,173,120,109,219,182, 29, 57,122,244,104, + 60,122,244, 8,203,151, 47,175, 44, 41, 41,185,122,234,212,169,129,211,167, 79,103,119,237,218, 21,229,229,229,248,245,215, 95, +141,137,137,137,251,165, 82,233, 33,107, 83,107,133, 21, 86, 88,241, 10, 10, 44,111,111,239,193, 78, 78, 78,147,223,120,227, 13, +118,104,104, 40,164, 82, 41, 20,138,106, 77,235,214, 17, 12,192,162,124, 62, 79, 47, 22,139,241,222,123,239, 33, 50, 50,178,227, +103,159,125,214,193,195,195, 99,123,113,113,241, 1, 75,110, 44,149, 74, 85,158,158,158,251,167, 79,159,190, 34, 41, 41,177, 57, + 0,220,188,121,243,113, 97, 97,225, 60,169, 84,170,106,162,184, 50,111,102, 73, 68, 34,209,141,224,224,224,172,129, 3, 7,218, +197,198,198,194,213,213, 21,119,238,220,193,202,149, 43, 51,116, 58,221,194,151,213,129, 55, 5, 70,173,182,248,246,225,195,182, +209,111,190,105, 55,115,240,224,213, 31, 76,159,254,221,151, 95,126,201, 9, 13, 13, 37, 42,149, 10, 55,110,220,160, 7, 14, 28, + 48,252,246,245,215,107, 33, 22,115,175, 29, 56,192,215,233,116, 57, 77,180,142,244, 28, 52,160,103,232,234,239,214, 67,163,174, +198,141,171,127,160,178,178, 20, 63,109, 62, 24,234,227,227,211, 51, 63, 63,255, 98, 19,202, 51,228,244,233,211,110,148, 82,240, +249,124, 44, 89,178, 4, 94, 94, 94,176,179,179,131, 66,161,192,236,217,179,237, 63,254,248, 99,123, 0, 72, 73, 73,129, 68, 34, +177,136, 55, 45, 45,173,253,180,105,211,108, 76, 38, 19, 78,156, 56,161,103,179,217,171, 79,159, 62,189,170, 77,155, 54,188,232, +232,104,155,223,126,251, 45, 10,192,245,151, 37,176, 94, 4, 38,147, 41,251,212,169, 83,145, 99,198,140,161, 28, 14,135, 84, 85, + 85,193,222,222, 30, 27, 55,110, 84, 21, 21, 21,189,240, 6,109,229,229,229,220,240,240,112, 30,195, 48,216,191,127, 63, 10, 10, + 10, 62,145, 74,165,165, 94, 94, 94, 39,230,206,157, 59, 53, 52, 52,212,231,193,131, 7, 5,106,181,122, 83, 97, 97, 97,190,181, +105,178,194, 10, 43,172,120,117, 45, 88,111,158, 56,113,130,205, 48, 12, 54,111,222,140, 59,119,238,208,178,178,178,133,132,144, +109,118,118,118,166,178,178,178, 55,167, 76,153, 18,187,112,225, 66,210,189,123,119, 92,187,118,141, 52,111,222,124, 36,128, 3, +117, 58,234, 62, 13,237,149, 33,147,201,110, 73,165,197,205,235,108, 44,217, 92, 32, 16,222,106,164,243,127,138,243,217,205, 44, +217,108, 86,167, 37, 75,150, 40, 61, 61, 61,117,201,201,201,216,180,105, 19,115,251,246,237,243,124, 62,255,167,194,194, 66,173, + 37,156, 47, 3,117, 57,249, 70,227,157, 29,115,231,182,108, 63,124, 56, 51,121,206,156,106,158, 72,244,209,234,245,235, 63,173, + 82, 40,188, 64, 8,117,182,183,207,217,188,100,201,242, 1,195,134, 85,167, 92,188, 40, 76, 58,125,154,235,106, 48,252,217,148, +116,230,231,231, 95, 12,110,225,135,173, 91,190,131, 94,175, 69, 81,193, 19,125, 86, 86, 46, 67, 67,226,234,121,156, 70,163, 81, +246,250,235,175,243, 0,136, 38, 76,152,192, 47, 41, 41, 65,139, 22, 45, 0, 0,114,185, 28,127,252,241, 7,194,194,194, 0, 0, +247,238,221,171,253,222, 88, 58,109,109,109,251,244,232,209, 3, 57, 57, 57, 72, 77, 77,189, 90, 80, 80, 80,229,237,237,125, 53, + 55, 55, 55,186, 67,135, 14, 56,112,224, 64,239,250, 4, 86, 83,159,145, 37, 2,171,158,188,175, 56,116,232,208,232,107,215,174, + 13,153, 51,103, 14,167, 87,175, 94, 0, 0,165, 82,169,161,148,154, 94,132,179, 46, 12, 6,131,121,211, 83, 21, 0,212,136,169, + 47,254, 10,231, 95,173,159, 86, 78, 43,167,149,211,202,249,223,192,249,191, 36,176,140, 12,195,224,194,133, 11, 56,120,240,160, + 73,167,211,205, 47, 42, 42, 74,171,243,251,111,190,190,190,151, 70,142, 28,249,175,244,244,116,118,106,106, 42, 44,233,128,234, + 66,163,209, 24,158, 13, 21,172,209,104, 12,127, 53, 83, 91,183,110, 69,113,113,177, 62, 47, 47,239,140,209,104, 60,244, 23, 87, + 35,254,229, 85,132,191, 81,170,125,147,144, 51,139,186,117,235,187,240,244,105,193,228,207, 63,215,190,253,206, 59,159,152,116, + 58, 3,155,199, 99,248, 98, 49,203, 36, 16,112, 83, 46, 94, 20,174,123,255,125, 39,181, 86,123, 98, 71, 19, 28,199,235, 88,176, +240,246,228, 89, 80,215,177, 96, 93,187,149,142,166, 90,176, 52, 26, 77, 56, 0,136, 68,162, 92, 0, 30,111,189,245, 22, 24,134, +129, 90,173,134, 66,161, 64, 97, 97,161,236,157,119,222, 49, 1,128, 88, 44,230,140, 28, 57,210,206,162,130,108,214,204,131,205, +102,227,216,177, 99, 16, 8, 4,231, 0, 64, 32, 16,156, 59,125,250,116,244,184,113,227,224,235,235,235,103,222, 4,165, 33, 30, +247,136,216,189, 20, 8, 6, 65,208,147, 55, 29, 65,110, 17,177,119, 9,144, 81,179,203,251,253,118,237,218, 1, 22,250, 93,213, + 69,105,105,169, 18,192,175,238,238,238,127,124,242,201, 39,111,117,238,220,185,251,194,133, 11, 9,165,244, 47, 7, 70,167,148, +194,100, 50, 89, 91, 29, 43,172,176,194,138,255,101,129, 69, 8,217, 29, 19, 19, 51,150, 82,202,102,177, 88, 59,159, 17, 87, 0, +128,188,188,188,199, 62, 62, 62,155, 3, 2, 2,106, 3, 64, 55,177,195,145, 18, 66, 86,178, 88,228,211, 39,255, 55,125, 99,201, + 58, 33, 73, 62, 5, 64, 88, 44,246,182,196,196,196,207,115,115,115, 75,155, 42,248,158,135,151,177,138, 16, 0,118, 81,154, 53, +150,144,147,115, 34, 34,250, 12,120,255,125,180, 30, 48,192,206,203,223,223,164,214,235,153,123,151, 47,147,171,251,247,243,146, + 78,159,230,170,181,218, 19, 7, 41,205,109,106, 58,243,243,243, 47,182, 8,244, 57, 53,106,228,160,126,129, 1, 94, 0,128,204, +172, 66,148, 85,200, 78, 53, 69, 92, 61, 35,180,134,111,220,184, 49,142,199,227,113,234,134,156,209,235,245, 21,102, 17, 70, 8, +241,218,188,121,243,110, 22,139,149,211, 24, 95, 90, 90,218,169, 69,139, 22, 13,120,252,248,113, 66, 94, 94, 94, 62, 0,100,102, +102,230,123,121,121, 29, 44, 44, 44, 28,152,155,155,123,156, 90, 96,122,122, 38,216, 51, 82, 46,239, 19, 2,136, 52, 7,123,126, +209, 88,131,117, 81, 35,202, 87,251,248,248, 28, 25, 56,112,224, 88, 66, 72,241, 95,225,147, 72, 36, 70,181, 90,109,100, 24,134, +163,215,235,169, 68, 34, 49, 90,155, 31, 43,172,176,194,138, 38,161, 3, 0,115,228, 16,179,225,196,245,153,239, 58, 0,117, 67, +249,153,255, 47, 5,112,171, 14, 71,221,227,141, 93, 11, 0,101, 0,238,214, 28,251,107, 2, 43, 63, 63,255, 56, 44, 8,230,108, +233,121, 13, 8,164,249,132,144,117,102,177,244, 87, 57,140, 70,227, 75,137,223,198, 98,177,178,134, 14, 29,218,164,243, 27, 59, +103, 55,165, 57, 31, 17,178, 61,126,195,134,182, 39, 54,109,242, 54, 25,141,206, 4,160,108, 62,191, 92,167,211,101,187, 26, 12, +127, 54,213,114, 85, 23,143, 50,243,251, 3, 64, 72, 72, 8,205,200,200,248,203,171, 49, 40,165,127, 2,240,109,228,156, 66, 0, +221, 45,225,203,203,203,139,195,115, 86, 10, 22, 22, 22, 30, 5,112,212,210,116,213, 6,123, 6, 88, 12, 97, 70,133,119, 27,189, + 31, 0, 99, 14,246,252, 50,145,159,159,159, 9,224,235,191,202,243,232,209, 35, 93, 64, 64,192,225, 21, 43, 86,196,222,189,123, + 55, 62, 47, 47, 79, 7, 43,172,176,194, 10, 43,154, 36,174, 8, 33,241, 53,125,207,144,154, 65,126,252,179,223,205,231,152,207, +171,123,142,153,227,217,227, 13, 93, 11, 0,243,230,205,251,124,249,242,229, 54, 0, 44,246,197,229,252, 55,148,218,203, 8,106, +251,178, 3,227,230,231,231,111,249, 59,242,186,254,137,128,186,254,119,150,103,122,122, 58,121,149,223, 50,115,176,231, 58,136, +248, 39,164, 59, 43, 43,107,123,116,116,244,239,121,121,121, 86,235,149, 21, 86, 88, 97, 69,211,224,250, 60, 65, 84,143, 30, 24, +210,208,239, 79, 13,216,255, 31,123,231, 29, 30, 69,213,182,241,251,204,108,205,166,108,122, 47,132,150, 70, 8, 32,157,128,161, +119,233, 29, 21,121, 41, 42,138,136, 82,165,136, 74, 83,154, 82,164,136, 52,233,130, 8, 72,137,210, 59, 1, 66, 8, 16, 8, 37, +164,247,158,173, 51,115,190, 63, 82, 12,144,178, 27, 80, 63,113,126,215, 53,215,238,204,206,220, 83,247,204, 61,207, 57,231,153, + 10,230,171,104,156, 16,114,112,193,130, 5,189,204,217, 96, 70, 60,103, 34, 34,127, 31,255, 68, 47, 86, 17, 17, 17, 17,145,138, +121, 54,106, 85,106,186,158, 29,159, 54,109,218, 12,152, 81, 61, 8, 20,103,230,238, 84,201, 74, 77,238, 29, 64, 8,233, 84,131, +157, 10, 23, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243,191,165, 89,157,118, 37,203,247,172,172, 74,175,170,234,194,103,191, + 87,183,172, 9,243, 30, 50,231, 64,252,101, 3,128, 78,162,166,168, 41,106,138,154,162,166,168, 41,106,138,154, 47, 56, 52,163, +148,246, 68,241, 91, 78, 40,165,180, 39,165,180,219,180,105,211,166,151, 78,155, 54,109,218,116, 74,105,199,210,249, 74,230, 41, + 91,166,116,218,179,159,207, 78,171,102, 94,147,183,249,255, 69, 27, 44, 17, 17, 17, 17, 17, 17, 17,145, 42,184, 2,160, 89,185, +232, 82, 58,128,155, 11, 22, 44,200, 46,215, 54, 42, 29,192, 13, 0,141, 74,230, 75, 47, 9, 36,149,111, 59,165, 47, 25,215, 87, + 48,143,222,148,121, 77, 69, 52, 88,149,208,216,141,253,194,219,211,185,105, 89,148,175, 56, 57, 36,132,146, 44, 2,101,233, 4, + 4, 1,227, 53,143, 79, 0, 0, 32, 0, 73, 68, 65, 84,148, 82, 36,165,229, 68, 68,166,210, 89, 53, 93,159,191, 7,177,119, 86, + 42,151, 11,148,134,150, 76, 58,149,155,169,155, 20,149, 75,115, 76,213, 8,116, 37,129, 74, 6,159, 10, 20, 33, 0,192, 16, 68, +106, 5,124,125, 59,133,222,126,209,227, 65, 8, 33, 13,156, 48, 86,110,161, 26,162,182,181,171,151,157,157,113,207,160,213,237, +142, 78,199, 90, 90,131,180,233,117,237, 73, 75,129, 98, 6, 0, 70,202, 96, 73, 76, 38, 61, 33, 94,117, 34, 34, 34,127, 19,236, + 11, 46, 95, 81, 10,160, 23,237, 92, 68,197,211, 98,146,201,122,150,203, 38,206,247,183, 99,150,193,106,224, 76,222, 5,193, 92, + 0, 20, 20,159,223, 74,163,107,204, 90,222,157,116, 82,178,236, 6, 0,172,214,192, 79,166, 2, 78, 87,120, 51,103,208, 78, 41, + 99,151, 0, 16,180, 60, 63,250, 86,146,233,237,193,130, 61, 73, 55,137,192,108, 21, 40,149,242, 2,221, 12,138,131, 86, 50,156, +187,144, 64,181,230,108,171,183,167,115,211,253,151,147,187,156, 88, 51, 17, 45, 66,234,130,242, 28, 32, 24,161,106,251, 41,126, + 95,246, 38, 90, 4,122,131, 10, 70, 64,224, 96,213,253, 27,116, 15, 86,215,248,207,225,239, 65,236,125, 28,157,163,214,175,223, +224,234, 94, 39,136, 8,156, 1,119, 47, 31, 27,241,209,148,217, 29,130,213, 36,216, 20,147,213,200,157,252,175,110,109,255, 79, + 39,205, 93,202,186,187,123, 89,242,156,142, 75,121,120,187,201,183,139,103,239,109,228, 78,150,220, 72,162, 27, 76, 53, 82, 65, + 78, 24, 39, 81,200, 7, 89, 40, 45,235, 21, 21,229,223,231, 13,198,221,193,238,146,110, 95,127,179,188,113, 88,231, 30, 86,124, +126, 10, 99, 20, 16,180,107,231, 14,159,239, 86,173,238, 65, 8,121,131, 82, 42,152,179,207, 2,197,148,152, 45, 99,123, 72, 37, + 44, 9,124,103, 61, 11, 51,186,190,150, 39,200,133, 12, 35,180,250, 52, 17,148,224, 76,116, 42,221, 94,147,117, 4,186,144, 31, + 8,133, 31, 8,246, 16,138, 29,183,210,104,154, 88,206,137,136,188, 90, 48, 12,115, 66, 16,132,246, 47, 83,147, 16,210,146, 82, +122, 81, 60,186,255, 77,204,139, 96, 17,124,121, 43, 54,222, 14,188, 1, 13,252,234,124, 1,192, 44,131,165,100,217,205, 87,238, +165,186,130, 51, 96,253, 87,239,237,212, 27, 1,206,104, 0,207, 25,193,115, 70,112,156, 1,188,209, 8,106,212, 97,246,198, 19, +128, 62, 31, 77,131,235,111, 6,224,102,234, 58,164,148,217, 26,113,246,152, 61,209,231, 98,251,154, 5, 31,196,167, 23,124, 16, + 30,153,148,209,192,133, 76,143, 78,195,143,230, 24,129, 19,223, 79,196,182,125,135, 18, 86,252, 80,120, 71,160, 20,246, 54, 22, +254, 35,122,221,242,218,242,203,137,248,229,155,181,119, 0, 64,109, 41,247,127, 43,242,158,247,139,156, 4,103,165,114,249,218, +213,223,185,186, 57, 88, 16,238,252, 66,112, 60, 15, 47,159,158,236,244, 9, 35,220,190, 92,182, 97, 25,128,183,171, 90, 62,192, +133, 4,249,213, 13,156,188,249,208,121,239,162,252, 52,253,177,109, 51, 98,169, 14, 70, 87,143, 64,233, 23, 11,150,178, 51,167, + 78,252, 56,192,133, 92,186,147, 74,163,171, 41, 12,152, 64,103,252,178, 96,225, 55, 33, 29,186,247,178, 18, 10,210, 89,109, 97, +129,223,250,141, 27,230, 6,132, 52, 87,181, 13,246,148,165,237, 30, 79, 52,249, 89, 48, 48, 74, 69,135, 6,157,108, 52, 35,135, + 26,215,111,218, 54, 1,192,183,102, 61,254,149,171,158, 22,132,154, 63, 77, 18,138,182,215, 47,158, 24,199, 39, 93, 1,229,141, + 0,111, 40,251, 4,111, 4, 21,138, 63, 91,140,223, 8, 0, 53, 50, 88, 12, 69,151,240,179, 87,220, 82, 83,146,155, 45,251,102, +254,244, 32,103,242, 27,120,108,189,157,133, 83,230, 26, 75, 17, 17,145,255,191, 16, 66, 56, 74,169,228, 37,107,246,160,148, 30, +126, 65,141, 79, 1,252,175,100,116, 3,165,244,235,151,176, 93,158, 0, 92, 75, 70, 83, 40,165,226, 59, 80,255, 81,131, 5, 40, + 65, 5, 96, 79, 95, 0,176, 48,119,101, 20, 80,130,176,128,177, 16,125,186,119,134,163,179, 43, 96, 44, 2, 12, 69,128, 81, 3, + 24, 11, 1,163, 6, 25,201,113,128,161, 16,120,240, 27, 56, 74, 21,102,239,149, 46, 23,136,217,141,142, 77,188,225,164, 86, 98, + 98,159, 32,199,117, 71, 98, 54,108, 56,118,183, 19,128, 33, 38,109, 43,165,104,209,176, 30, 86,108, 40,188,115, 32, 34,173, 43, + 0,244,108,236,120,164, 69,144,143,215,242,205,218, 59,135, 34,179,186, 1, 64,247, 96,245,111,205,253,221,188,133, 23,136,238, + 10,148,182,117,175, 85,143,240,215,215, 66,200, 75, 64, 94,158, 6, 9,143,182,192,206,227, 53,134, 23,240,122,117,203, 91,176, +152,246,225,103,139,164, 69,121,169,122,222,144,206, 59, 50,217, 18,137, 66, 32, 72, 58,165, 43, 20,114,248,143,198,140,228, 63, +153, 61,127, 26,128, 17, 85, 70,131,156, 49, 97,201,146,229, 13,219, 52, 13,112, 78,217, 59,145, 20,100,167,130, 99, 85,138, 62, +173,218,192,182,126,144,144,122,114, 9,145,215,233, 4, 91,135, 58, 72, 60,255, 19, 30, 95,252,153,132, 54,233,175,248,113,187, +108,100,101, 6,171,190, 19, 9,237,218,174,249,206, 58,222,238,110,148, 10, 16, 4, 10, 42,240,120,103, 96, 23, 76,223,245, 0, + 60,207, 99, 64,215,208,142,139,198,117,160,130, 32,128, 82, 1,241, 41,153, 69,127, 92,186,211, 49, 54,139, 94, 50, 37, 50,213, +168,101,251,208,200,136,139, 1,198,152, 95,209,116,196,130, 59, 4, 56, 91,238,154, 11,189,118,244,199, 0, 96, 99, 77, 11, 33, + 18,232, 12,254,241,145,133,240,110, 55,150, 93,187,253,136, 83,110,122,226, 91,123,183,172, 30,184,102,237,218,109, 0,198,139, +197,136,136,200,171, 1,165,244,165,155,172,216,216,216,228, 23, 49, 89,158,158,158,237, 0, 44, 46,109,137, 65, 8, 89,236,235, +235, 59,251,207, 7,212,167,158,241,114,121,158, 31,145,144,144,112,186, 42,205, 94,189,122,185, 3,240, 45,167,233, 75, 8,241, +173,104, 94, 91, 91, 91,190,117,235,214,143, 15, 30, 60,152, 36, 94, 33,127,173,193,186,243,100,247,196, 38,186,228, 2, 0,184, + 99,194,197,250, 84,213,158,214,200, 47,220, 52,247,205,133, 13,106,217, 35,191, 80,143, 99, 87, 31,131,231,141,224, 57,174, 36, +146,197,129,231,140,232,218,200, 17,173,181,227,241,237,193,187,224,120, 97, 65, 85,154,207, 98,160,194,176,198,157, 6,239, 18, + 4, 42, 87, 72,153, 92, 63, 47, 7,231,201, 3, 26, 49, 19,251, 52,128,198,192, 13, 14,114, 33,127, 68,167,210,245, 38,105, 10, +207,167, 44,162, 21, 77,227,185,106,247,189,138,232, 83,139,161,189, 58,219, 80, 93, 46,140, 25, 15,144, 95,100,196,131, 76, 35, + 82,180, 57, 80,144,100,147, 52, 5,138, 16, 15, 55, 55,203,115, 59,167, 62,114,144,228, 73,156, 37,156, 84, 78, 57, 41, 47, 80, + 22, 57,209, 58,135,128,206,146,210,118, 89, 85,109,167,133,202,250,205,118, 93,122,170,159,252, 52,150, 88,248,117,133,115, 19, + 47, 60, 58,189, 9,105, 87, 15,162,160, 32,143, 40,114,115,224,226, 80, 23,221, 71, 12,193,215, 67,154, 33, 63, 47, 31,108,114, +172, 90, 46, 85,216, 86,166, 73,121,140, 88,178,232, 43, 55, 9,203, 20, 31,207,210,129, 55, 66,163,211, 1, 60, 7,165, 68, 0, +161,165,191, 25,193, 27, 13,170,144,254, 83,223, 3,112,169,186,125,143, 78,165,219, 27, 56,147,182, 16,140, 1,212,168, 1, 1, +206,222, 74,163,101,166, 39,200,133, 12,123,173,235,168,182,148,224, 76, 77,206, 81,176, 3,122, 53,245,181,178,180,204,187,131, +132, 61, 31, 32, 22, 74,234,210,230,127, 24,246,206, 4,213,186,117,235,122, 19, 66,222, 45,223, 6,237,175,120,249,169,168, 41, +106,254, 91, 53,213,106,117,237, 90,181,106,205, 54, 26,141,237,100, 50,153,139,193, 96,128, 32, 8, 41,114,185,252,204,227,199, +143,231,229,230,230, 62,252,255,182,239,145,145,145, 38,155, 44, 83, 52,165, 82, 41,238,222,189,123,223, 84,147,245,172,166, 84, + 42,221,122,246,236, 89,236,218,181, 11, 0, 16, 19, 19,131,250,245,235, 91, 86,180,236,163, 71,143, 44,195,194,194,182,226,153, + 55,112, 60,171,121,243,230,205,218,191,254,250, 43,246,236,217, 3, 0,184,123,247, 46,252,252,252, 42,220,158,179,103,207,178, +195,135, 15,175, 13, 32,233,175, 62, 71,175,164,193, 42,121,191, 46,121,246,123, 5, 60,240,182,147, 55,129,150, 7,128, 7,230, +174, 44, 58,133, 46,106,228, 38,237,246,251,158, 85,237,148, 50, 6,115,214, 79,142, 79,207,202,111, 41, 33, 16, 0,128,163, 96, +236,172,228, 23, 22,188,213,200, 59,187, 64,139, 3,151, 19, 79,223, 74, 53, 47, 20,122, 43,137, 30, 7, 96,251,231, 13,146,248, +189,245,245,241, 29, 59,166,117, 11,153,212, 39, 4,191,156,127, 60, 9, 64,181, 89,218,169, 32,128, 10, 92, 89,163,246,146, 71, + 5, 64,224, 80,190, 77,183, 0, 90, 60, 77, 48, 47,130, 21, 70,136, 36,219, 25,221,237, 85,242,149,227,198,141,177, 49,166,223, + 67,150, 94,134,248,108, 45, 82, 52, 82, 20, 72,156,145,120,231, 38,207, 16, 28,175, 62,202,130, 60,240, 90, 91,123,185, 21, 19, +220,249, 61,143,188,163, 51,178,229,148, 99,109,250,126,105,155,241,251,210,199,156, 38,189,144, 16, 84,251, 18,109,181,218,182, +190, 54,243, 49,155,155,157, 1, 91,215, 6,232, 54,184, 23, 62,239, 25,132,252,188, 66,164,159, 63, 68,235,185,217,144,184, 51, +219, 48,179,123, 32, 50, 83,147,161, 51, 2,164, 80,151,165,213,107, 11, 42, 61,142, 12,214,126,244,201,148, 97, 62,110, 78,150, +165,157, 5,168,192,163, 81, 96, 29,116,110,215, 2,199,207,158,195,149,155, 49, 16, 74, 58, 11, 80, 65, 64, 66, 90,118,170,214, +192,111, 50,235,128,242, 28,168, 81, 91,161, 1, 67, 13,170, 6, 27,186, 16, 21, 15,204,106, 89,207,122,244,180, 94, 62,214,150, + 10, 2,173,145,135, 86,111, 68,254,185,149,112,168,213, 16, 42,165,146, 52,129, 70, 2,192, 40, 22, 37, 34, 34,127, 50,104,208, + 32,101,106,106,234,201,158, 61,123, 6,117,238,220, 89,213,182,109, 91, 20, 22, 22,226,216,177, 99, 40, 44, 44,244,241,242,242, +242, 57,118,236, 88,255,150, 45, 91, 70,123,122,122,134,237,222,189,219,156, 54,178, 18,252,217, 72, 93, 0,192, 17, 66, 80, 50, +141, 0, 16, 94,228, 61,180,114,185, 28,113,113,113, 47, 45,146, 37,147,201,160,213,106,145,152,152,120,191, 38,145,172,130,130, + 2,153,135,135, 7,156,156,156,192,243, 60, 10, 11, 11,177,127,255,126,228,230,230, 66, 16, 4, 88, 88, 88,224,203, 37,235,113, +231,218, 73, 92,186,116, 9,185,185,185,178,234, 52, 19, 18, 18, 72,163, 70,141,160,211,233,192,113, 28,180, 90, 45,194,195,195, +203,198, 37, 18, 9,166,124,177, 12, 49, 87, 79,226,250,245,235, 72, 72, 72,248, 91,222, 14, 98,134, 23,121, 37, 35, 88, 47, 12, +207,115,211,215,109,222,113, 97,250,248, 33,152, 48,180,147,215,188, 85, 63,119,138, 78,167,155, 1, 32,200,137,188, 53,178,125, + 61,111, 91,149, 20,159,255,116, 21,160,116,250,139,174, 47, 42,147,198, 52,112, 37,147,246, 93,138, 59, 57, 99, 72, 19,212,113, +179,169, 95,183, 46,145,199,198,154,240,206, 63,129,131,157,149,194,191,103, 99,199, 35, 16, 4,216, 90, 43, 2,192,115,176,181, + 82,248,119, 15, 86,255, 6, 0,182, 42, 89, 64, 69,145,174,202,104,230, 45, 27,171, 82, 72,198, 90,190,230,230,253,118,239,206, + 22, 61,122,247,183,176,146,114,200,188,116, 12,121, 82, 79, 24,237,125,160, 51,102, 33,225, 97, 44,255,251,197,219,137, 25,249, +186,201,213,110, 38,197,233,196,135,119,157,106,135,116,182,203, 56, 56, 51,173,246,168,159,124, 25, 8, 76,254,182,126,169,150, +206,205, 45, 46,223,127, 88, 32,208,231, 35, 56,207,146,151,155,251,216,200,195, 77,195, 75,172, 99, 79,252,136,105,221, 27, 34, + 59, 43, 13, 90, 3,135, 92, 13,103,112,181, 85, 42,116, 15,163,160, 51,112,208, 27, 5, 72,109, 61,112,236,194,205, 12,193,104, +172,244, 93,148,177, 25,244, 58, 0,171,242,211,234, 58,145, 70, 83,109, 44,174,195,168, 65, 92, 66, 18, 54, 31,186,208,164,100, +190,154, 63,157, 10, 92,113, 53,115,185,200, 21,161,104, 91,147,198,237,129, 46,164,185,133, 82,246,221,226, 73,195,131, 90,249, +217, 43,132,132, 11, 32,130, 1,150,188, 4, 26, 57, 15,181, 87, 29, 8,250,124, 90,164,213,230,220, 2,196,204,236, 34, 34,229, + 8, 8, 8,112, 85,171,213,183, 62,249,228, 19,251,126,253,250, 97,223,190,125,200,203,203,195,166, 77,155,176,124,249,114,204, +157, 59, 23, 70,163, 17,235,214,173, 83,237,221,187,183,249,234,213,171, 19,124,124,124, 26,196,197,197, 85,247, 66,117, 2, 64, + 1, 64, 90,114,239, 34, 0,132,195,135, 15,163, 71,143, 30, 56,124,248,176, 80, 50,141, 39,132, 24, 41,165,186,154, 26, 44,185, + 92,142,220,220,220,151,102,178,172,172,172, 32,151,203,145,159,159,111,182,201,226, 56,142, 77, 72, 72, 64,110,110, 46, 58,247, +238,141,101, 11, 22,160,125,251,246,232,220,185, 51, 40,165, 8, 15, 15, 71,167, 54,193, 24,242, 70, 24,110,223,190, 13,142,227, + 76,218,222,148,148, 20,164,166,166,162, 91,239,222, 88,191,122, 53, 90,180,104, 1,127,127,127,112, 28,135,147, 39, 79, 98, 96, +215, 54, 80,246,237,132,152,152, 24,241,162,254,183, 24,172,168, 52,122, 49,200,137, 28, 28,218,181,121,175,222,161, 65, 88,191, +243,247,175,130,130,200, 14, 0,112,176, 86,124,249,102,251, 58,136,126,146,141,223,175, 39, 29,140, 78,127, 57,189, 47, 4, 30, +142, 14, 54, 42,128,149, 67, 99, 16, 56,155, 7,168,182, 97,178, 64, 41, 84,237,166, 98,100,239,104,175, 22, 65, 94, 94,165,189, + 8,173,122, 44,197, 91, 55,239,123, 55,243,119,245, 6,111, 4,120, 35,108,134,252, 4,124, 97, 89,237,118,132,214, 86, 28,159, + 58,121, 82,235,238,125, 7, 91,200, 85,106,240,121,241, 48,166,220, 68,230,189,211, 40, 84,213, 71, 74,220, 3,236, 58,122, 41, +247, 94, 66,102, 30,195,224, 88,106,174,238,211,216, 44, 90, 80,157,174,214,136, 5,179,103, 78,238,185,107,199, 78,107, 69,157, + 80, 18,187,178, 71,174, 92,194, 41,156,106,191,198, 20, 41, 29,233,252, 77, 59,109, 10,245, 88, 88,157, 78, 81, 97,222,207,225, +199,142, 12,169, 87, 59,212,250,209,149, 67,208,104,117,208, 25,129, 6,205,195,192,243, 84, 78, 24, 34,216,176, 44, 73,203,204, + 6, 49,242,169,103,110, 60, 74, 62,123,227, 1,171,179,174, 94,251,169,139,142,176, 31,246, 14,107, 12, 24, 53,120,163, 93, 67, + 44,219,246,251, 7, 0, 70,189,216, 73, 46,142, 96, 81, 32,180,129, 51,249, 30, 64,232,213,253,203, 3,154,246,253, 8,230, 68, +176,130,157, 72,247,224,186,238, 63, 46,251,114,170,189,131,103,125,150, 8, 70, 80,215, 16, 32, 47,129,146,132, 11, 80,123,180, + 0,239,222, 6,235,190,253,166, 64, 16,232,142,154,164,168, 16, 17,121,149,209,106,181, 63, 47, 90,180,200,190, 87,175, 94,165, + 17, 24, 92,184,112, 1, 27, 54,108,128,165,229,211,229,100,143, 30, 61, 64, 41,181,159, 51,103,206,207, 0, 90, 85,166,217,178, +101,203,222,171, 86,173, 74,106,220,184,241,131, 18,147, 37, 3,192, 68, 69, 69, 49,241,241,241,196,206,206,142,186,187,187, 27, +147,146,146, 4, 0,252, 59,239,188,195, 90, 89, 89,213, 43, 40, 40, 56, 85, 83,131, 37,151,203, 95, 74,155, 44,169, 84, 90,166, + 43,147,201, 64, 41, 53,203,100,241, 60, 47, 57,124,248, 48,174, 94,189,138,185,141, 27, 99,146,135, 7,236,237,237,113,242,228, + 73, 80, 74, 97,105,105,137,172,172, 44,236,216,177, 3, 29, 58,116, 0,199,113, 50, 83,116,247,236,217,131,136,136, 8,124,209, +180, 41, 38,169,213,176,178,178, 66,120,120,113,173,159, 66,161, 64, 92, 92, 28,194,195,195, 17, 22, 22, 38, 94,212,127,181,193, + 10, 35, 68, 66, 92,224,106,208,107, 64, 57, 10, 16,184, 7, 5, 17, 89,116, 52, 53,152,187, 82,134,193,204,111, 55, 31,236,185, +244,163,222,100,108,159, 38,238,243,126, 60,241, 46, 0,140, 30,224,231,161, 82, 72,176,226,151,104,202, 48,152,249, 50,118, 48, + 40,136,200, 24, 6,239,118,110,225,143,164, 28, 61, 98,147,114,254,136,166,212,164, 42,157,223,151,142,196,150, 3, 39,227,151, +111,209,222,161,148,194,214, 74,225,255, 86,100,172,247,143,135, 35,158, 44,217,165,189, 67, 5, 10, 91,149, 52, 96,212,237, 54, +213,246, 34,108,230, 45, 27, 59,125,234,167,109,250,140,250, 68,201,221,217, 13,125,236, 81, 8, 6, 13,242, 12, 50,228,176,174, + 72,120,242, 4,243,215, 29,140,207, 43,212, 15,137, 74, 51,207, 88,198,100,208,130, 32, 39,210,111,254,231, 51,142, 47,248,114, +142, 85,209,131,147, 5, 44,225, 52,172,207,235,146, 47,231, 46, 37,249, 58,253,224,216, 44,154, 95,157,142,206, 26, 11, 23, 45, +249,182,231,152, 17,253,239,248,213,127,221,129, 79,122,232,160,205,203, 75,251,233, 72,132,107,201,147, 33, 1,128,216,132, 76, +164,231, 22,114, 60,103, 60,101, 45,197,188, 91,166, 68, 3, 75,168,227, 66,156,250,181, 13, 25,238,100, 45,131,166, 32, 7,206, +214, 82,116,109, 81,119,120, 29, 23, 50,245, 65, 42, 77,175,241,137, 22,140,160, 70, 13, 46, 46,236, 16, 64,121, 99, 0,120, 35, + 12,145, 91,205,143,132, 17, 76,154,208,206,202,198, 78,255,136, 65,161, 37, 96,225, 8, 98,227, 3,168,125,137, 52,112, 48,146, + 30,220,226, 62, 24, 62, 34,243,225,227,132, 31, 28, 45,240,181, 88,132,136,136, 60, 77, 92, 92,220,155,211,167, 79, 63,219,162, + 69, 11, 23, 71, 71, 71, 52,108,216, 16, 7, 14, 28,192, 39,159,124, 82, 54, 79,227,198,141, 65, 41, 69, 86, 86, 22, 22, 45, 90, +148,146,148,148,244,102, 85,154,119,238,220,185,187,101,203,150,182, 65, 65, 65, 6,153, 76,150, 3, 64,145,147,147,163,204,202, +202, 34, 90,173, 22,130, 32, 8,106,181,154, 79, 74, 74, 50, 14, 25, 50, 68,119,254,252,249,186,133,133,133, 79, 94, 36,130,229, +229,229, 21,149,153,153,153, 75, 8,121,161, 20, 14, 82,169, 20, 12,195, 64, 38,147,193,209,209,209,169,160,160, 64, 0,144, 93, +147, 20, 14, 28,199,161,105,211,166, 56,122,250, 26, 14,255,126, 30,121, 73,119,241,238,152, 55,209,176, 97, 67, 28, 61,122,180, +198,231,172, 81,163, 70, 56, 18,126, 22,103,175,222, 64, 92, 76, 36, 62,120,119, 12, 26, 52,104,128, 35, 71,142,136, 23,244, 75, + 48, 88, 97,132,144,210, 39,241,231,236,106,160, 19,105,228, 94, 79,190,117, 78,247,186,129,210,206,115, 64,164, 22,216, 93,255, + 72,155,153,243, 87,222,105,232, 66, 70,220, 76,173,190,183,215, 83, 81,172, 84,122,171,129, 51,217,126,227,118,192,240, 55, 90, +120, 97,253, 1,213, 44, 0, 24,220,182, 54, 46,223, 75,199,165,152,180,237,183,210,232,173, 23,221,185,134, 46, 68, 5,138,237, +139, 62,236, 19,230,227,233,138, 13,251,206,130, 16,252,108,210,141,150, 82,218, 34,200, 7,203,183, 60,219, 99,208,213,123,201, + 46,237,157,163, 81,121,221, 1,160, 75,160,229,111,205,234,218,121, 87, 23,201,176,144, 75,198,117,239, 63, 82,201,197, 28, 0, + 30,135,131,112, 58,104, 12, 2,146, 51,242, 81,164,246,194,201, 11, 55, 52,185, 90,253, 71,183,210,106, 22,181,139, 78,167, 15, + 26,187,145, 39,133,133, 26, 55,149, 83, 93,173,132, 8,180, 64, 43,224,114,244,227,220, 91,201,244,174, 41, 26,177,177, 84,223, +202,147,180,253,126,243,174,217, 82,153,124, 48, 75, 64,156,109, 45,157,190, 95,250, 5,172,173,173, 32,232, 11,128,194,116,244, +123,127,126,250,205, 68, 67,109, 0,240,115, 36, 86,237,234,200, 54, 75, 24,146,240,199,125,253,103,213,173,131, 24, 49,126, 68, +215,198, 82, 65, 95,136, 15, 23,237,196,218,169,125, 48,178, 99,160,244,208,185,152,241, 0,230,213,244, 92, 83,158, 3, 53,106, +208,106,198,233, 59, 4, 56, 75,129,208,171,187,190, 12, 0,174,153,172,241, 26, 33, 82,137, 27, 9, 12,241,182,148, 9, 9,231, + 32, 36,156,163,172, 87, 27, 16,239,118,132,184, 54,165,223, 45,158, 91,184,126,253,134, 99, 2,131,207,171, 75,121, 33, 34,242, + 95,133, 82,250,192,214,214,182, 91,143, 30, 61,126, 63,122,244,168,125,112,112, 48, 0,224,234,213,171, 0,128,166, 77,155,194, +207,207, 15,169,169,169, 24, 58,116,104, 70,114,114,114, 55, 74,105,149,109,122,243,243,243, 31,236,217,179,199,185,160,160,160, +201,172, 89,179, 82,125,124,124,242,180, 90, 45,201,201,201, 17, 56,142,131,157,157,157,188,113,227,198,104,221,186,117,193,249, +243,231,125,227,227,227,243, 0, 60,170,201,246,247,233,211, 7,167, 79, 23,119,194,123, 25,121,177,164, 82, 41,130,131,131, 61, + 30, 60,120,144, 88,114,124, 46,214,224,152,150,125,191,113,227, 6, 78, 93, 75,128, 68,175,129, 60, 61, 9, 23,247,237, 65,239, +113,239,129,227,106,222, 90,225,198,141, 27,216, 31,126, 17,150, 10, 9,238,222,189,133, 61,123,246,224,221,119,223,125, 33,205, + 26, 82,165, 23,249, 87, 26, 44, 74,233, 41, 84,144,133,182,110, 93, 34, 87, 20, 96, 78,215,166, 30, 83, 6,135,214,101,141,121, + 73, 16,120, 1,172, 20,112,118,180,193,214,173,219,107,111,223,185,243, 66, 35, 15,233,183, 2,199,205,188,153, 74,139,204, 88, +247,156,165, 59,207, 14,222, 58, 57, 76,242,110,247, 0,123, 0,144, 73, 24,172, 56,112,139, 3, 48,231, 69,118,170,149, 39, 81, + 22, 24, 49,214,213, 65, 61,107,250,255,122,218,135, 53,245,195,169, 75, 81,248,118,207,133,211,242, 52,108, 49,249,162, 22,140, +120,214, 55, 85,212,139, 16, 66,245,237, 41,121,158,186,202, 44,237, 96,120,124, 2, 48,104,161,213, 25, 16,159,201, 35, 62, 75, + 11,137, 74,134,171, 49, 9, 26,135, 20, 28,172,233, 62, 19, 66, 72,104, 29,165,251,172,175,150,120,106, 53, 5, 92, 94,118, 6, + 39,147, 95,148,170, 44, 20,201,230,232, 92, 72,160,218,215,107,203, 94, 3, 4, 86,174,164, 69, 51, 62,126,219, 50, 49,250, 40, +234, 49, 73, 32,148,194, 34,176, 39,172, 45, 88, 89, 91, 95,217, 19, 0,240,117, 85,203, 23,125,254,137,250,163,169,159, 87,219, +198, 43,136, 16, 89,195,102,174, 31, 5,251,216,225,116,196, 29,156,190, 25,119,235,244,213,187, 13,218, 55,116,135,159,167,237, +196, 32, 66, 22, 70, 83,243, 35,162,197, 39,134, 3,140,218,178, 94,132, 65, 46,100, 88,179,193,159, 85,216,123,176, 50,124, 1, + 33,134,167, 32, 44, 11, 16,166,184, 71, 99,252, 57, 72,108,235,208,237,187,246, 23,109,216,176,229,139,232,116, 42, 70,173, 68, + 68,170, 33, 39, 39, 39, 82,165, 82,117, 13, 9, 9,217,244,225,135, 31, 90,143, 24, 49,194,125,204,152, 49, 12, 0,164,166,166, + 10,203,151, 47, 79,250,238,187,239,114, 51, 50, 50, 70, 25, 12,134,155,166, 60,240, 18, 66,206,111,220,184, 49,253,212,169, 83, + 13, 90,182,108,169,108,218,180, 41,111,103,103, 39, 81, 40, 20,188, 94,175,215,198,196,196, 8, 15, 30, 60,112,207,201,201,185, + 7, 32,182, 38,213,247, 37,209,170,121, 44,203,206,166,148, 6,191,140, 54, 88, 42,149,202, 13,192,125, 66, 72, 61,115,171, 7, +159,187, 97, 75, 36,200,206,206, 70, 81,202, 45, 40, 19,238, 33,196,146, 65,144,157, 21,108,108,108, 94,200, 12,229,230,230, 2, +133,137, 56,123,246, 6,192,113, 80,171,213, 80,171,213,127,187,193,170,204,139,252,219, 35, 88,207,209,192,153,188,107, 39,199, +242,113, 61,235,202,124,189, 61,161, 75,184,138, 27,241, 5,152,217,178,121, 52,171,176,214,142,123,179, 79,211,254, 3,107, 33, +172,117, 51,226,235,166,158,184,112,233,154,247, 27,184,144, 79,110,165,210, 21,166,172,248, 86, 26,125, 24,232, 76, 54,156,136, + 76, 24,239,169,210, 64, 16, 40, 78,220, 76,198,205,199,217, 27,110,167,209,135,230,236, 68, 3,119,210, 73, 2,102, 39,165, 84, +169,182,180,204,111,220, 40,192,177, 83,171, 70, 76,183,215,155, 66,198, 2,103, 47,223,192,164,165, 63, 95, 20, 4,218, 51,194, +196,234,193,226, 30,131, 79, 27,167,226, 30,131,198,167,122, 12, 82, 74,105,113, 47,194,170,155,117,177, 44, 73, 41,138,187,226, + 42,117,168, 15, 77,236, 9, 60,206, 22, 16,151,150,143, 60,137, 43,116,137,137, 0, 21,158,156,164,180,198, 87,179,163,163,163, +115,237, 32,191,186, 43, 55,239,129,161, 40, 23, 15, 79,110, 66, 65,118, 50,190,252,254, 64, 93, 79, 79,207,215, 19, 18, 18, 78, +153, 81,200,248,253,126,112,187, 51, 40,192, 74, 21, 56,180,122, 23, 50, 28, 44,224,168,146, 65,208,164, 99,220, 71, 35,212,221, + 59,143, 80, 3, 64,220,221,235,240, 81,105, 76,210, 53, 56,160,255,224,246,254,182, 48,106,176,249,200,117, 45, 3,116,219,114, +236, 86,108,251, 0, 91,229,224, 80, 31,187,121, 73, 57, 3, 80,195,100,160,165, 17,172,178,136, 94, 13,122, 15,238,166,148, 15, +116, 34,177, 59,207,167, 89, 14,236,252,154, 74, 38, 33,132, 22, 36,130, 90, 56, 98,205,230,221, 5,114, 35,214,137,183, 78, 17, + 17,211, 40, 42, 42,138, 32,132, 52,252,244,211, 79,135,205,152, 49,163,157,165,165,101,109, 0, 40, 44, 44,124,104, 52, 26, 79, + 3,216,110, 78,111,191, 18,195,116,159, 16,242,240,209,163, 71,174, 63,253,244,147, 26,127,230, 99,212, 0,200, 69,113,194,204, + 26,247, 32, 44, 53, 83,132,144,217, 47,209, 52, 28, 46,209,172, 87,147,229, 25,134,225, 9, 33, 32,132, 64,161, 80,224,204,153, + 51, 24,212,179, 51,110, 31,202, 65,176,173, 21,154,143, 26,135,157,199,143,131,101, 89, 16, 66,192,178,172, 89,247, 17,137, 68, +130,179,103,207, 98,228,208,129, 80, 72, 0,181, 90,141, 79, 63,253, 20,191,252,242, 11, 36, 18,241,109,122,127,137,193, 2,193, +188,227,155,230,203,192, 27,241,235,166,111,112, 48,170, 64,127, 55, 29, 51,253,211,177,124, 15,242,133,244,165, 91,198, 31, 63, + 27,245,245, 59, 67,122,169, 58,180,239,140, 14, 97,237, 37, 13,154,189, 62, 11,192,138,114, 55,234, 78, 85,229,202,224, 5,124, +177,238,200,157,113, 59, 79,198, 16, 24,242, 49,164, 75, 51,202, 11,248,162,154,155,255,115,154,106, 11,171,157,103, 47, 92,176, +131,161, 0,143,175,255,161,172, 85,187, 46,192, 27,112,255,254, 61,124,183,121,159,112,242,242,221,173,122, 14, 31,198,102,209, + 66, 83, 53,139, 29, 21, 7,181,165,220,191,123,176,250, 55, 1, 20,182, 42, 89, 0, 21,120,216,170,164, 1, 93, 2, 45,127,163, +148, 82,107, 11,105, 0,229,141,213,106,106,244,220,218,205, 27, 55, 44, 25, 61,122,180,101, 70, 66, 10,146,242,162, 80, 32,247, +128, 81,229,133,216,235,167, 53, 69, 58,174,218,155,119, 85,199, 51, 35, 35, 35, 45,226, 82, 22,118,126,191, 0, 70,189, 14,105, + 9,197, 30, 53, 41, 35, 15, 54,142, 30, 23,204,209, 52,112, 66,110,255, 17, 99,101, 22,214,176, 24,217,191,151, 60, 54, 83,135, + 38,238,214,197,133, 69, 65, 58,110,135,159, 69, 88, 97,177, 95,123, 16,207,192,167,145,187, 73,219,105,173,148,125,216,253, 53, + 15, 60,124,146,140, 51,183, 18, 55, 63,200,164, 73,117, 28,200,230,216,164,156,241,125, 90,122, 99,217, 47,209, 31, 84,102,138, + 42,211, 12,114, 33,195, 0,132, 22, 55,114,215,128, 2,161, 65, 46,100,152, 41, 61, 7, 43,210,148,200, 48,124,201,111,113,159, +237,190,146,209,103,202,240,182, 54,173, 91,247,144,131,211, 35, 95,163, 51, 70,103,211,188, 23, 57, 71, 47, 16,157, 20, 53, 69, +205,127,165,102,137,217,217, 90, 50,188, 76,205,196,146,225,165,237,123,249,234, 64, 74,169,164, 36,122, 85,101, 35,247,234, 52, +203, 87, 7, 82, 74, 15,151, 68,175,170,140, 98, 61,171, 41, 8, 66, 82,211,166, 77,237,123,247,238, 13,158,231,113,239,222, 61, +196,197,199,163,211,248, 15, 96,107,107,139,211,145,145,184,123,247, 46,102,207,158, 13,163,209,136,253,251,247, 39, 84,167, 41, +145, 72, 12,117,235,214,149,245,237,219, 23, 28,199,225,193,131, 7, 72, 76, 76,196,164, 73,147,160, 86,171, 17, 17, 17, 81,166, +153,145,145, 1,137, 68, 98,248, 59,174,165,255,142,193, 2,120,240, 70,228, 30,159,131, 21,103, 96, 48, 24, 17,112, 43,141,150, +175,211, 94, 19,226, 64,126,141,140,186,243, 48,226, 92, 7, 57,210,110, 22, 47, 99, 6, 49, 25, 52,185,153,151, 36, 31,134,124, + 27, 60,248, 13,143, 82,243, 11, 98, 50,104,178,185, 59, 65, 5,158,192, 80, 4, 36, 95,197,249,211,167,112,242,226, 13, 92,185, +121,135, 63, 31, 17,179,147, 17,240, 69,116, 6,189, 87,131,167, 14, 88,245, 92,134,183,111,222,247,110,230,231,226, 13,158, 3, + 21,140, 80, 15,217,142, 81,209,173,189,155,213,177,245, 46,142, 92, 25, 97,247,191, 63,128, 37,202, 42,245,174, 60, 49,172, 11, +173,173, 24,144,159,147,217,178,227,235,173, 44,213,129,221,145,113, 63, 6,247,110,156,213, 68, 68,197,158,191,242,196,240, 66, +209, 17, 15, 15,143,118, 29, 95,247,199,144,113,211, 97, 40,202,197,131,147, 27, 81,144,149,130, 51, 23,172,112, 39, 47,175, 21, + 0,147, 35, 88,231,227,140, 13, 0, 32,212, 87,246,196, 26, 58,215, 55,123,245,134,130,104, 33,232,242, 64,138, 50, 16,155,168, +207, 29,240,125, 60, 15, 0, 42, 5,145, 88,210, 92, 27, 83,116,131,124, 28,234,171, 88, 35,182, 28,191, 5, 65, 40,126,205,146, + 32, 96,205,150, 63, 98,199,127, 49,178, 9,130,188,237, 26,145,146,228, 39, 38, 23,154, 20,109,175,236,252, 60, 64,251,251, 44, + 64, 48,224,236, 68,251,128,182, 43,178,218,214, 52, 18,118, 51,145, 38, 2, 24, 31,232, 78,214, 78, 92,113,100, 86,211,227,209, +161,147,255,215,199, 6, 84,124, 49,186,136,136,200,223, 79, 65, 65,193,184, 81,163, 70,173,149, 74,165, 78, 0,136, 32, 8, 16, + 4, 65,242,245,215, 95, 75,121,158,103, 24,134,225, 89,150,229, 14, 31, 62,108,228,121, 62, 93,171,213,142,171, 78,147,227,184, +216,247,222,123,175,110,117, 61, 14,119,236,216, 1,137, 68, 98,224, 56, 46, 86, 60, 19, 47,211, 96, 81,124,222,102,228,156, 57, + 0, 8, 40,230, 62, 99,174, 0, 0,145,153, 52,169,129, 51,153,212,160,217,235,115, 74,151, 49,119, 3,180, 60, 63,176, 89, 67, +191, 29, 0,160,163,252,200,154,236, 68,158, 78, 51,184,113,179, 86, 59, 5, 74, 37, 28,165, 27, 24, 1,123,181, 28,110,155,210, +115,174, 50,146,210,114, 34, 74, 95,224, 44,128,254, 89, 45, 88,146,142,129, 82, 74,203,170, 5,191, 81, 34, 35, 87, 87,109, 30, +167,179, 15,117,157,155,121,203,198, 30, 59,119,125, 28,207, 83, 87,150, 37, 41, 26, 61,183,246, 69,205, 21, 0, 36, 36, 36,156, + 10,114, 38,199, 34, 27,185,116,113, 84,149, 68,181,138,128,140, 34, 28, 75, 72,203, 63, 85, 19,205,236, 66, 99,159, 25,203,127, + 57, 32,151,178, 18, 80, 90,156, 8,148, 82,104, 13,124, 86,169, 9, 11,113, 32,238,159,238,231,118,176, 44,137,171, 78,239,210, +221,228,101, 67, 22,134,127,114,235,113,246,134, 71,217, 52, 10, 0, 30,101,211,168,122, 14,100, 86,108, 74,254, 39, 81,113,217, +223,152,219,110,130, 18,156,105, 54,100,206,115,211, 94,244,120,222, 78,162, 55, 0,244,107,224, 76, 58, 15,153,252,221,100, 66, + 32,190, 38, 66, 68,228, 63, 68,105, 20,139, 97,152,121, 47, 81,243, 48, 33,164, 7,128,251,102, 44,115, 9, 64,195,151,188,111, +153, 0, 50,197,179,252, 15, 25,172, 91,105,116, 13, 76,120,153,179,169,243, 85,186,124, 18, 13, 7,224,240, 34, 59, 81,162, 97, +255, 50, 15, 76,100, 42,157,245, 87, 28,240, 18, 51,245,151,180,229,137, 78,163, 93, 1,192,207,207,143,222,187,119, 15, 47,154, + 5,247,118, 58,189,129,103, 94,185, 80,145,201, 6,208,214, 20,189,152, 12,250, 5,240,124, 21,240,253, 76,250, 37,128, 47,107, +180,207, 53,204,212,110,242,181,149, 70,143, 3,213,103,211, 23, 17, 17,121, 53, 77,214, 95,160,121, 88, 60,178,255,113,131, 37, +242,239, 37, 38, 38,134,136, 71, 65, 68, 68, 68,164, 82,248,191, 64, 83, 76, 58, 44,242, 20,140,120, 8, 68, 68, 68, 68, 68, 68, + 68, 68, 94, 46, 4, 64,167, 10,173,184, 25,189, 3, 8, 33,157,204,182,250,213,232,139,154,162,166,168, 41,106,138,154,162,166, +168,249,234,105, 86,167,253,202,244, 78,164,229, 26, 47,191,236, 1, 64, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, +205,255,218, 32, 86, 17,138,136,136,136,136,136,136,136,188,100, 68,131, 37, 34, 34, 34, 34, 34, 34, 34, 34, 26, 44, 17, 17, 17, + 17, 17, 17, 17, 17,209, 96,137,136,136,136,136,136,136,136,136, 6, 75, 68, 68, 68, 68, 68, 68, 68, 68,164,230, 16, 51,223, 76, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 82, 13, 12, 0, 16, 66,104,249, 79, 17, 17, 17, 17, 17, 17, 17,145,191,147, 87,205,139,136, + 85,132, 34, 34, 34, 34, 34, 34, 34, 34,162,193, 18, 17, 17, 17, 17, 17, 17, 17,249,119, 24,172,176,146,144, 92,152,120, 72, 68, + 68, 68, 68, 68, 68, 68,254, 1, 94, 41, 47, 82,214,200,157, 16, 66, 41,165, 68, 60,191, 34, 34, 34, 34, 34, 34, 34,255,136, 41, +121,133,188,136,216,139, 80, 68, 68, 68, 68, 68, 68, 68,228, 37, 35,182,193, 18, 17, 17, 17, 17, 17, 17, 17,249, 55, 25, 44, 66, + 72, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, 77,209, 96,137,136,136,136,136,136,136,136,136,136, 6, 75, 68, 68, + 68, 68, 68, 68, 68, 68, 52, 88, 34, 34, 34, 34, 34, 34, 34, 34,162,193, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13,150,136,136, +136,136,136,136,136,200, 63, 4, 1, 80, 97, 79, 0, 74,105,184,201, 34, 53,232, 77, 80,157,190,168, 41,106,138,154,162,166,168, + 41,106,138,154,175,158,102,117,218,230,248,143,255,215, 80, 74,255,178, 1, 64, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, + 53, 69,205,255,218, 32, 86, 17,138,152, 26,165,116, 33,132,184,136, 71, 66, 68, 68, 68, 68, 68,164,122, 36, 47, 83, 44,144,144, + 14,239,133,184,236,126,255, 70,138,125,117,243, 58, 59, 59,175, 85,169, 84, 35,138,138,138, 10, 9, 33, 66,249,136, 26,128,242, +239,239,121,144,150,150,214,182, 58, 61,133, 66,177,220,197,197,229,127, 5, 5, 5, 69,132, 16, 74, 8, 1, 33,164,212, 28, 60, +245,201,243,124, 66, 70, 70, 70,211,127,181,225, 1, 88, 71, 23,151,203, 82,150,245, 48,119, 89, 94, 16, 30,165,166,164,180, 50, +195, 92, 45, 32, 4, 83, 74,190, 47,166,148, 78,127, 5, 29, 36,107,202,108,193,128,117, 12, 48,132,103,152, 15,164,192, 42,157, + 32,124, 95,114,225,242, 53, 93,181,254, 50,169, 75, 40, 26, 17, 2, 53,165,200,165, 4, 55,228,205,105,236, 63,100,164, 91, 74, +165,210,193,118,118,118,214,105,105,105,191, 3, 56, 0,224, 13,103,103,231,142,217,217,217,249, 70,163,113, 23,165,244, 98, 77, +180,219, 53, 38, 83,229, 50,233, 59, 90,131,113,209,217,235,116, 99,216,107,196,129, 19,176, 80, 41,147,180,213,233,185,197,103, +110,208, 13,102,110, 43,121, 38, 26,111,246,123,191,246,152,120,222, 1, 96,191,157,157,159,194,201,230,119,169,156,125,148,147, + 90, 48, 98, 96, 90, 90,252,192, 23, 56,239,255, 31,113,114,114,122,155, 97,152,175, 40,165,224,121,126,102,102,102,230,166,151, +116, 93, 13, 3, 96, 89, 50, 90, 72, 41,221,110,198,178,113, 0,188, 75, 70,159, 80, 74,125,170,154, 46, 98,246,185, 89,179,111, +223,190,241,237,219,183,199,178,101,203,176,102,205,154,199,233,233,233, 11, 1,108,166,148,234,255,110, 29,209, 96, 85, 64, 16, + 33, 13, 71,119,107,117,104,220,160,110,114, 19,254,196, 63,116,235,214,109,228,230,205,155,165, 49, 49, 49, 22,190,190,190, 96, + 24,166,204, 0,149, 47, 39,107,213,170, 37, 84,167,199,178,236,138,126,253,250,141,218,179,103,143, 42, 34, 34, 66, 21, 24, 24, + 88,166, 39, 8, 2,158, 45,119,125,125,125,171,212, 83,171,213, 87, 89,150,245,172,200,156, 85,246,157,231,249,132,204,204,204, +166, 38, 92,132, 93, 1, 76, 51,225,144, 46,164,148, 30,173,106, 6, 41,203,122, 36, 37, 37, 57,155,123,174,188,188,188, 12,102, +252,105, 92, 8,193, 20, 65,160, 12, 0, 48, 12,153,106, 97, 97,177, 70,163,209,196,151,254, 94,114,206, 82,205,217, 6, 79, 79, +207,238,130, 32, 12, 43,214,100,182, 39, 36, 36,252,102,206,242, 54, 54, 54, 87,229,114,185,167, 68, 34, 33, 21,157,151,103,199, +121,158,167, 6,131, 33, 33, 43, 43,203,108, 99,125, 10, 32,221,128,118, 28,203,126,228,224,232,216, 54,226,216, 49,203,224,224, + 96,134,101,217,233, 0,190,127,145,255,141,254, 50,169,203, 27, 49, 72, 99, 84,244, 82,248,204,245,211,197,205,141,177,144,234, + 14,234, 47,147,221,127,183,201, 34,132,116,123,235,173,192,109, 85,192, 0, 0, 32, 0, 73, 68, 65, 84,183,230, 47, 90,180,200, + 81, 46,151, 51,187,118,237,106, 53,105,210,164,119,150, 45, 91,230, 49,120,240, 96,107,189, 94, 47, 76,157, 58,181, 29, 33,228, +115, 74,233, 47,230,104,183,110, 76, 90,250,251,186,205,158, 48,162, 3, 62, 89,176, 99, 66,104, 67,146, 97, 97, 41, 91, 51,160, +109, 93,219, 6,181,237,240,249,218,243, 31, 2,216, 96,198,182, 18,169, 84,218,216,213,213,213, 87,167,211,241, 37, 15,109,180, + 92,153, 0, 0,208,233,116,134,236,236,236,195, 47,122,108, 62, 81, 42, 91,180,176,181, 58, 62,103,216, 91, 22,121,217, 89, 46, + 43, 14, 29,136,220, 3,231,144,129,192,227, 87,233,134,192, 48,204, 87,137,137,137,110,148, 82,184,185,185,125, 5, 96,211, 75, +146,182, 44, 45,135, 9, 33,150,102, 46,235, 93,110, 89,111, 19,166,215,228,218, 87, 74, 24,230, 61,185, 84,218,133,231,249,134, + 37,215,208, 77,189,209,120,156, 19,132, 85,148, 82,237, 43,236, 3,166,140, 31, 63,190,243,140, 25, 51,124,167, 76,153,130, 41, + 83,166,212, 90,191,126,253,218,249,243,231, 79, 37,132,132, 80, 74, 11,254,102, 29,209, 96, 61, 99,174,188,186, 54,246, 59,249, +193, 91,131,100,194,158,229, 4,111,127, 86,165,185,106,213,180,233, 59,155, 55,111, 6, 0,140,232,211, 7, 93,154, 55,135,181, +149, 37,228,242,226,205, 33,148, 64, 38,149,161,239,164,143, 77,249, 99, 44,238,223,191,255,240, 61,123,246, 88, 1,192,154, 53, +107,208,191,127,127,216,219,219, 67,165, 82, 65, 38,147, 65, 42,149, 62,245,105,130, 97,243, 76, 76, 76,116, 86, 42,149,101,134, + 79, 16,132,167,134,114,245,208,224, 56, 14,245,235,215, 55,245,112, 77,203,205,205,109, 87, 88, 88, 88,101,221,109,237,218,181, + 1,224,168, 41,130, 95,125,249, 5, 4,174, 16, 18, 9,192,113,128,206,192, 64,168,224, 89,222,221,221, 29,239,189,247, 30, 94, +228, 5,223,189,122,245, 6,165,116,141,135,135,199,193,212,212,212, 96, 66, 48,174, 38,145, 45, 74,233,155,247,239,223, 87, 9, +130, 0,127,127,255,145, 0,204, 50, 88, 18,137,196, 51, 50, 50,210, 89,161, 80, 84, 26,169, 44,103,126, 97, 48, 24,208,164, 73, + 19,206,156,117,184, 0,222, 89, 12, 51,166,241,107,175,141,157,221,167,143,197,213,171, 87, 21, 12,195,128,227, 56,124,253,245, +215, 28,165,212, 54, 8,176,137, 6,242,170,184, 62,103, 0,120,187, 36, 42,187,129, 82,250,245, 83,191, 83, 52,210, 24, 21,189, + 30, 20,244,109,222,162,214, 84, 68,223,186,217,188,142,213,126, 88, 75,116,177, 0,254, 86,131,165, 86,171, 7, 46, 91,182,204, +105,195,134, 13,121,119,239,222, 53,124,255,253,247, 78,227,198,141, 11, 48, 24, 12, 24, 63,126,124,186,191,191,191,108,217,178, +101, 78,251,246,237,235, 10,192, 44,131, 37, 33,248, 98,104,159, 46,208, 26, 25, 24,141,156,147,155,147,245,214,137,111,133, 73, + 41,213, 99,203, 47, 17, 48,114,194, 70, 51, 35, 87,141, 7, 12, 24,224,179,125,251,118,201,237,219,183, 37,129,129,129,224,121, +190,108, 16, 4, 1, 60,207,195,207,207,239,133,143,203, 59,128,159,163,139,253,241, 86, 61,186, 91,184, 41, 21,176,207, 78,199, +104,153,196,122,147, 74,183, 13, 64,235, 87,233,134, 64, 41,133, 68, 34, 65,124,124, 60,156,157,157, 45,236,237,237,147, 1,204, +205,202,202, 90,247, 23,153,250, 26, 71,182, 94,226, 54, 52,151, 75, 36,123,183,108, 92,225,218,162,117,107,214,197,205, 25, 49, +247,158, 64, 66,248, 78,145, 87, 34,194,222,121,119,242, 68, 66,200, 0, 74,233,229, 87,205, 0,184,181,121,191,159, 91,232, 7, +107, 8, 21,240,249,202, 3,249, 11, 22, 47, 87,141, 31,243, 22, 59,105,210, 36,120,121,121,249,246,235,215,111, 49,128,119,171, +213,105,249,126, 63,215,214, 19,214,128, 82,204,249,238, 64,254,252,197,203, 85,239,214, 64, 71, 52, 88,207, 16, 76,136,109,136, +143,203,169, 47,167,140,179,162,191,253,200, 20,101,166,161, 50, 11,227,236,236,188,182,123,247,238, 35, 54,109,250,243,161,168, + 85,112, 48,250,117, 8,133,179,131, 26, 42, 75,121,241,109, 72, 32,184,113,247,145, 73, 70,192,203,203,107,252,222,189,123,173, +202,155, 8,153, 76, 86, 54,148, 55, 87,165,195,179,145,142,138, 80, 42,149, 8, 15, 15,135, 68, 34, 1,203,178,144, 72, 36,101, + 67,249,113,150,101,225,226, 98, 86,211,164,133,106,181, 58, 36, 63, 63,223, 38, 39, 39, 7,222,222,222,121, 0, 34,203,253, 30, +146,158,158,110, 99,142,160,192, 21, 98,210,232, 64, 72,245, 23,161,151, 54,135, 70,210, 6,231,175,220,198,193,163,167,144,152, +148,130,208,150,141,241,230,176,129, 56,126,252, 56,120,158, 55,183,192, 77, 37,132, 44,126,227,141,222, 83, 1,130,176,176,176, +212,137, 19, 39,210,168,168,168,126,131, 6, 13,236,120,239,222,125, 82, 18,217,154, 66, 8, 89, 97,106, 36,139, 82, 42, 3,128, +211,167, 79,131, 82, 42,175,201,181,167, 80, 40,112,225,194, 5,148, 86, 7, 51, 12, 3,134, 97,192,178, 44,126,189,239,136, 66, + 61,131,162,212, 40,124,208,203, 27,181,107,215, 6,195, 84,223,228, 48, 12, 80,158, 7,250, 17,169,116,146,155,187,187,239,235, +117,234,168,194,195,195, 89, 0,240,241,241,161,201,201,201, 57,251,247,239,207,151, 0,107,124, 40,221, 92,149,185,242,246,246, +110,195, 48,204, 87,165,199,156, 16,178,216,215,215,119,118,217,121, 19, 4, 12,235,108, 47,157, 56,241, 35, 89,139,176,226,135, +146, 22,189,183, 35,239,193,130, 64,146, 53, 67,253,119, 23, 6,185,185,185, 91,253,252,252,216,244,244,244, 63, 0, 60, 52, 26, +141, 43,183,110,221,234, 60,122,244,232,180,109,219,182, 77, 0,224,245,245,215, 95,119, 45, 40, 40,216,105,142,110,219, 70,164, + 71,211,198,193, 45,189,189,188,112,234,252,101,200,228, 82,219,247,222,238, 5, 43, 43, 9,190,217,112, 72,136, 75,200,154,112, +230, 6,221,108,134,185, 10, 25, 56,112,160,215,246,237,219,101, 0, 16, 21, 21,133,180,180, 52, 56, 56, 56, 64,169, 84,150,253, +231, 75,163, 88, 47,106,174,212, 94, 14,151,246,239,255,197,194,222,222, 22, 43, 63,158,136, 55,147, 18, 96,195, 50, 48, 26,225, +251, 42,221, 12, 8, 33,126, 3, 6, 12, 80,242, 60,143,194,194, 66,156, 60,121, 82,109, 97, 97,161,246,244,244,156, 3,192,100, +131,101, 97, 97,145,170,213,106,157, 75,202,209, 52,141, 70,227, 2,160, 72,169, 84, 90,148,204,162, 49, 51,178,245,164, 92,132, +234,137, 9,211,205,217,231,102,205,155,133,132,255,188,231, 39,171,220,252, 20,216,218,165,129, 65, 46,214,173, 91, 5, 11, 11, + 27,204,153, 51, 67,242,168, 83, 7,143,174, 61, 6,132, 19, 66, 58,189,114, 38,139,146,117,157,122,143,176,183, 80, 89,151,220, + 75,140,216,180,126, 34, 24,134,193,236,217,179,209,160, 65,131,177,132,144,207, 40,165, 89, 85,203, 96, 93,195,118,131,237,229, +202,226, 91,177,192, 27,241,253,142, 79,138,117,166,143,195,208,222,181,199,222,216, 70,142, 52,168,131,252,226,242, 31, 26, 41, +131, 39,104, 78,211,202,157,139,215, 41,165,167, 42, 27,255, 87, 26, 44, 66, 8,165,148,150,175,102,121,106,188, 42,106, 17,162, +168,111,103,117,116,245,220,137,238,236,133, 67, 18,205,147,251, 72,210,242,176,253,243, 38,250, 84, 87, 75,149, 74, 53, 98,211, +166, 77, 79,249, 47,111, 23,103,200,100, 82, 72,101, 4,182,109,123, 1, 0,114,206, 28, 4, 33,180,178, 27,243, 83,154,133,133, +133,218,235,215,175, 91,109,216,176, 1,206,206,206,240,245,245,133, 74,165, 42, 43,104,203, 15,165, 70,235, 89,131,245,172,102, +233,239, 18,137, 4, 12,195,224,248,241,227,224, 56, 14, 3, 7, 14,124,206, 92, 73, 36,146, 10, 13, 91,101,221, 76, 41,165, 71, + 9, 33,145,148,210,118, 37, 55,222, 72, 74,233,235,229,214,221,213,201,201,105, 26,128,133,166,106,178, 44, 5,171, 61, 15,193, +115, 57, 36,241, 19,161,151, 54,194,137,179, 17,216,180,118, 25, 0,192, 55,160, 25, 6,245,235, 85, 22,125, 51, 69,243,169,167, + 19, 55,183,205,105,105,233, 77,218,183,111,143,220,220, 92,253,156, 57,115, 16, 18, 18, 2, 63, 63,127,147,206, 81, 37, 5, 91, +198,141, 27, 55,220,180, 90, 45, 8, 33, 25, 38, 24,178,240, 10, 52,176,117,235, 86,104,181,207, 71,239,237, 94,159,143, 79,250, +251, 96,212, 7,155,177,248,238, 46,172, 94,189,186,202,125, 87, 1, 33, 90,117,189, 21,114,150, 11, 89, 52,115,130, 98,228,200, +145,236,168, 81,163,240,228,201, 19,140, 30, 61, 90,123,252,248,113,125, 74,114,242, 47,114, 65, 88,105,120,218, 16, 87,170,169, + 80, 40,182, 28, 61,122, 20,187,118,237, 2, 0,196,196,196,160,126,253,250, 79,221, 68,132,172,221,200,143, 91,137, 75,191,222, + 65,139,222,219,113,233,215, 97,224,115, 14, 73,155,214, 71,174, 57,199,179, 6,145,138,240, 10,166,157, 4,112,178,220,241,253, +108,219,182,109,131, 0,252, 76, 41, 61, 15,224, 60,128, 29,230,104, 22, 11, 97,212,224,254,125, 33,145, 89,227,206,253, 4,188, +222,170, 9, 92,156,157, 17,121, 59, 22,113,137, 89,169,132,224,237,110,109, 20, 11, 53, 26,253,103,167,175,211, 31,170,211,244, +242,242,170,189,123,247,110,105,185,136, 51, 88,150,125,234,129,170,116, 90, 77,175,207, 82,115,101,237,105,117,233,139, 85,109, + 44, 47,221,220,134,250, 62, 61, 96,211,181, 7,150,238,216,142,132,140, 92, 45, 87,196,117,252,187,207,209, 95,165, 73, 8,241, +235,223,191,255,249,159,126,250,201, 54, 62, 62, 30,167, 79,159,134,175,175, 47,138,138,138,170,125,208,125, 86, 83,171,213, 58, +151, 51, 77,165, 77, 24,118,232,116,186,210,130,146,154,179,157,149,181,173, 50,183,205, 85, 5,229,188, 92, 41,147,237,222,255, +243, 14,171,232, 59,167,209,184, 81, 75, 88,169,131, 32,240, 41,200,204, 42, 64,246,253, 36,124,249,229, 98,204,153, 59, 19, 7, +246,237,177,242, 15,108,180,151, 16, 82,175,124,117,225,191,253,188,131,208,177,225,191,110, 91, 67,168, 0, 77,234, 29,133,180, +240,161,106,196,176, 1,236,144, 33, 67,112,224,192, 1,220,186,117,107, 77,101,230,170,188, 38,161, 24, 27,117,122,215, 26, 80, + 10, 77,218, 29,133, 76,243, 80,245,214,240, 65,236,155, 67,187,224,226, 31, 43,208,165,241,195, 40,119,103,244,203, 46,169, 36, +148,176,200, 84, 40,113,206,226, 50,185, 88,206,100,157, 44,121,134, 42, 53, 86, 39, 81,156, 74,234,223, 31,193, 50,199, 88,149, +204,207,190, 38,151,252,188,113,206,251,193,202,199, 81, 50, 93,212, 5, 36,233, 4,186,225, 9,151,189,188,146,101,138,138,138, + 10, 99, 99, 99, 45,222,238,215, 15,173,131,131,225,230,224,128,122,158,158,176, 80,200, 33,151, 73,203,149,199,102, 61,129, 80, +127,127,127,244,238,221, 27, 82,169, 20, 42,149, 10, 86, 86, 86,144,203,229, 21, 70,175,164, 82,169,201,161,114,150,101, 17, 21, + 21,133,184,184, 56,216,218,218,226,220,185,115,232,216,177,227,115, 81,172,242,166,204,156, 80,252,179, 55,252, 82, 3, 6, 19, +171, 6, 75,225,121,130, 2,218, 8,202,199, 19, 80, 68,154, 64,167,227,160,211,233,240,195, 89, 3, 46,199, 22,194, 96,208, 67, +167,211, 85,186,206,170,162, 5,174,174,174,253, 2, 2, 2, 70, 12, 27, 54, 76, 47,149, 74, 81, 84, 84,132,162,162, 34,220,190, +125, 91,223,165, 75,151,212, 55,222,232,237,114,240,224, 65, 74, 41, 22,155,211, 14,139, 82,154,237,238,238,238,166, 84, 42, 65, + 41,205,174,225,211,103,153,121,121,150,183,151, 70, 67,194, 22,159,147, 53,107,214,128,231,121, 84,117,125,107, 9,249,125,238, +252, 37,234, 69,203, 55, 66,109,239,130, 83,167, 78,241, 71,142, 28,201, 39, 64,204,189, 91,183,150,190, 1, 28,222, 13, 24,204, +217,190,236,236,108, 11, 95, 95, 95,120,122,122, 66, 16, 4, 24,141, 70, 68, 70, 70, 34, 37, 37, 5,153,153,153,208,104, 52,176, +183,204, 65, 93, 7, 79,112,249, 39,145, 28,245, 57,220,172,238, 96,243, 81,189,241, 53, 63,220,248,199, 31,110, 41, 61, 12,224, +240,139, 11,193,195,217,213, 11, 12, 53, 34, 41, 45, 19,125,123,118, 1, 43,179,194,163,248, 12, 52, 10,170,227, 54,252,141, 54, +110, 44,225, 48,101,225,246,247, 0,252, 80,157, 92, 81, 81, 17,127,251,246,109,233,141, 27, 55,192,178, 44,108,108,108,202,154, + 3,148, 55, 87,166, 52, 7,168,206, 92,205, 95,211,209,146,145, 22, 34,143, 15,199,247, 63, 94, 68,125,239,142,216,116,231,158, + 86,146, 83,208,233, 27,173, 54,230, 95, 93, 61,228,230, 54, 78, 16,132, 57,148,210,156,254,253,251,187,108,223,190,221, 46, 49, + 49, 17, 17, 17, 17,152, 61,123,118, 58,207,243, 28,165,148, 80, 74, 63,127, 9,215,146, 80, 62,178,101, 97, 97, 81, 26,217, 42, + 44, 23,185, 42,172, 65, 25, 32, 85, 41,241,129,163, 13,233, 35, 97,108,124,185,188,130, 71, 25,122,250, 75, 17, 39,124, 71, 41, + 53, 86,181, 44,195, 48,255,219,179,115,141,187,163,147,128, 48,167, 14, 72, 78, 53, 96,254,199,111, 33, 51, 51, 31, 63,172, 95, + 0, 64, 14, 3,199,162, 93,216, 0, 56, 59,123, 96,236,152,177,174,107,214,126,255, 62,128,111, 94,149, 0, 86,242,185, 85,251, + 8, 33,225, 78, 78, 78,183,222, 31, 59,214,201,215,119, 36,148, 74, 37,118,236,216,129,237, 43, 87,242,203,129, 65,107, 9, 57, + 49,142,210,125, 85,234, 92,252, 83,103,226,248,241, 78,129,129,227,161, 80, 40,240,199,145, 31,161, 77,217,154,223,179, 53, 12, + 69, 90,244,172,213,155,218, 63,254,149,100, 73,165,184, 15, 0, 82, 37,146,165, 64,218, 51,114,255,122, 99,245,156,193, 50,151, + 58, 50,213,249,245, 31, 15,110,226, 36,104, 36,250,179,191, 34, 81, 39,112, 95,223, 55, 24,174,230,208, 17, 85, 92,208,130,183, +183, 55, 58, 52,109,138,126,109,219, 66, 34,145, 64, 41,151,193, 90,105, 1,202, 23, 71,174, 74,171, 8, 77,245,122,165,198,198, +193,193, 1, 50,153,172,204, 88,153, 26,189,170, 76, 83, 16, 4, 72, 36, 18, 68, 70, 70, 34, 52, 52, 20, 94, 94, 94,216,181,107, + 23,186,118,237,250, 92,149,161,185,230,170,212, 96,149,175,174, 43,215,248,189,218,198,237,207,153, 3, 61, 65,134,190, 17, 8, + 9, 6,199, 1, 60, 5,116, 90, 45, 40, 5, 40, 5,140, 6, 61,180, 90,109,217, 58, 77,169,122,245,244,244,116,247,245,245,253, +120,218,180, 41,245, 66, 66, 26, 35, 35, 35, 3,130, 32,192,202,202, 10, 69, 69, 69,176,177,177, 65,235,214,173,175,125,245,213, + 87, 89,148, 98,154,185,141,220, 95, 66,117, 6, 0,224,216,177, 99, 79, 85, 15,150, 14,133,201, 9, 24,245,225, 54,200, 37, 64, +100,100, 36, 2, 2, 2,170, 51,151, 76,251,118,109,112,254, 90, 12, 55,250,211,229, 58,105,102,196, 66, 87, 65,216,148, 0,164, +190,192, 77, 5, 25, 25, 25, 72, 77, 77, 69,159,190,125,177,253,167,159,240,248,241, 99, 4, 5, 5,161,125,251,246,112,118,118, +198,227,199,143,113,249,140, 14,186,236, 44,100,233, 35,160,178,110,129,253,167, 98,117,179, 86,235, 99,255,169, 66,129, 16,210, + 12,192,104,181, 90, 93,171,168,168, 40,197,104, 52,238, 42, 49,253, 93,165, 82,233, 96,149, 74,229,154,155,155,251, 24,192, 15, +148,210, 43,213, 86, 25, 41,149, 14, 10,165, 13, 4, 78, 7,137, 68, 2, 47, 47, 95, 80, 94,143,236, 60, 13,222, 30,210, 27,215, + 34,111,227,200,137,139,156,209, 40,124,107,234, 54,250,249,249, 33, 51, 51, 19, 44,203, 66,165, 82,193,210,210, 18,254,254,254, +136,143,143, 47, 51, 87, 53,173, 34,124, 7,240,179,241,182,186,248,213,170, 98,115,149,146,148,140,196,199, 20, 10,185, 28,107, +215,173, 41, 44, 74,201,110,177, 17,136,249,183, 23,254,130, 32,124,158,152,152,232, 44,145, 72, 92, 57,142, 67,124,124, 60,174, + 94,189,138, 9, 19, 38,164,102,102,102,134, 81, 74,107,180,143, 74,165, 50,173, 52,114,165, 84, 42,211,170,138,108,189, 72,155, + 43, 66, 72, 29, 95, 79,235,227,235,151, 77,242,110,214,162, 53,163,146,216,100, 23,220, 79, 9, 61,123,250, 84,235, 9,203,126, +120,159, 16,210,133, 82,250,160,178,229, 21, 82,105,247,150,109,218, 72, 64, 83, 33,145,135, 98,241,162, 33, 72,207,200, 67,118, + 86, 62,100, 50, 75,232,141, 44,120,129,160,117,104, 91,252,184,121, 39, 26,140, 25,205,202,165,210,206,175,146,193, 42, 97,193, +119,223,125,231,237,239,239,143, 77,155, 54,225,196,150, 45,120, 51, 55, 23,167, 24,134, 53, 74,165,142,135,141,198,117, 0,246, +153,170,211,160, 65, 3,108,220,184, 17, 91,183,110,125, 50,162, 99,218,222, 73, 35,224,108, 48,160, 91,196, 93,216,215,234, 13, + 68,220,133,253,107,254,168,199, 73,112,159, 16, 88, 60,115, 78, 95, 47,255,249, 42, 24,172, 48, 82, 92, 31, 87,246, 89,221, 66, +150, 46,254,195,126, 26,217,185,105, 80,109, 79,198,184,107, 5, 18,139, 56,237,236,187, 6,225,110, 62, 29, 16, 93,133, 57, 96, + 24,134,178, 44, 11,107, 11, 11, 56,217,218, 22, 63,105, 50, 12, 32, 0,130, 17, 32,124,241,159,143, 10, 4,230,116,126, 22, 4, + 1,114,185,188,194, 6,237,230,182,189, 42,175,153,159,159,143, 71,143, 30, 97,236,216,177, 80,169, 84, 0,128,148,148, 20,248, +248,248, 64, 34,145, 32, 49, 49, 17,127,252,241, 7,106,215,174, 13,133, 66, 97,150,203, 42, 23, 77, 10, 33,132,156, 2, 16,146, +156,156,108,227,230,230, 6,179, 35, 88, 2, 69,145,142, 64,175,231,113,239,222, 61, 36, 37, 37,225,209,195,251,104, 86,152, 7, + 10, 22,148, 82,179, 34, 88,110,110,110,254,245,235,215,255,106,193,130, 5, 82, 47, 47, 47, 8,130, 0,123,123, 91, 20, 22,106, +144,153,153,137,160,160, 32,120,121,121, 97,241,226,197, 64,113,245, 81,234, 63,117, 1,151,246, 22, 45,255,201, 48, 12, 62,124, +195, 27, 89, 89, 86, 96,217, 63,123,147, 86,211, 6, 75, 6, 0, 97, 93,250, 75,142, 31, 57,108,201, 1,243, 82, 88,118,158,164, +250,243,104,228, 5, 65, 85,217,239,241,241,241,144, 74,165,216,179,123, 55,178, 82, 83,209,168, 81, 35, 52,111,222, 28,247,239, +223,199,181,107,215,224,224,224, 0, 39,207, 86, 56,245,208,128,232, 36, 13,212,106, 53, 98, 19,152,127,172,235, 63, 33,164, 87, +167, 78,157, 86, 46, 93,186,212,213,213,213, 85,154,158,158,206,173, 90,181,170,235,170, 85,171,162,223,127,255,253,160,247,223, +127,223,206,201,201, 73,146,146,146, 98,252,248,227,143,187, 18, 66,166, 81, 74,119, 84, 89, 94, 88, 90,219,179, 50, 75, 16, 34, +129,173,218, 14, 18,185, 37, 4, 78, 2, 94, 0,108,212, 78, 56,127,109, 15,206,221,204, 31,151,150,137,221, 38,252,111,168,131, +131, 3,101, 89, 22, 14, 14, 14, 79, 85, 13, 2,128,139,139, 11,242,242,242,192,178, 44,164, 82,169,217, 38,171,212, 92,205, 95, +213,209,138,148, 51, 87, 5, 25, 14, 56,113,244,118, 78, 81, 74,118,232,171, 96,174, 74,203, 56, 74, 41, 30, 62,124,136,162,162, + 34,156, 57,115, 6,159,127,254,121,250,179,230,202,197,197,101,140,141,141,205,220,130,130,130,197,201,201,201, 43,170,211, 45, +137, 76,189,204,107, 50, 14,207,164, 99, 32,132, 72,189,220,148, 71,175,157,217,230,163,166, 55, 8,226,198, 2,247,242,110, 89, + 95,114,110,215,163, 89, 79,166,201,234, 47,106, 53, 31, 55,253, 40, 33,196,191,178, 72,150,192,243, 77, 44,173,172, 1,164, 33, +226,234,201, 50,115,149,153,149, 11,157,129,133, 78, 79,160, 53, 48,232,208,169, 27, 86,126,191, 21,137,105, 89, 40,237, 97,248, +170, 64, 8,177, 15, 14, 14, 30, 63,104,208, 32,204,155, 55, 15,225, 75,151,234,223, 37, 36, 79, 2,208, 67, 60, 15,129, 82,194, +152,208, 56,253, 89,157,111,190,249,102, 31,128,161, 11, 39,160, 85,118, 1,222,118,239, 77,237,107,245, 46,158,119,224, 84, 10, + 0,246,233,225,207, 53,213, 33,165, 53,105,230,214,168,253,191, 53, 88,148,210, 83,132, 16,148,255,172,106, 1, 91, 87,255,215, + 63,155, 58,113,121,155, 62,157,152,148,119, 67,145,147,167,211, 79,189,109,100, 18,138,104,191,104, 19, 35, 47,159,174, 90,133, +107, 49,197,255, 95, 79,103,103, 76, 25, 62, 28,148, 3,206,221,138,198,206,240,112, 12,233,212, 9,150, 37, 61,248, 76,141, 54, + 85, 20,181, 42, 31,189, 50, 55,202,148,147,147,131,221,187,119,163,121,243,230, 80,169, 84,144, 72, 36, 8, 9, 9,193,237,219, +183, 81,167, 78, 29, 16, 66,176,127,255,126,244,235,215, 15, 15, 30, 60, 64,171, 86,173,172,106, 98,176,162,163,163,109, 40,165, +237, 74,163, 29, 53, 69,167,211,225,206,157, 59,232,221,187, 55,236,236,236,224,225,177, 29,225, 71,183, 65, 21,252, 38, 8,129, + 89, 6,139, 16, 50,176,103,207,158, 82,134, 97,160,209, 20, 65,161, 80,194,202,202, 6,214,214,106,248,249,249, 33, 41, 41, 9, + 93,187,118, 53,220,187,119,111,107,114,114,242, 33,115,183,213,197,197, 69,149,159,159, 63,209,215,215, 87, 89,242,148,219,193, +209,209,113,126, 70, 70, 70,129,153,133, 67,153,177, 34,132,128,101,217, 50,131, 37, 97, 24,184,185, 58,151,141,151,180, 63, 35, + 85,104,229, 37,102,234, 20, 0,224,237,237,141,149,107, 15, 48, 61,123,246,196,196,137, 19, 97, 52, 26,177,122,245,106, 0,192, +176, 97,195, 96, 48, 24,176,119,239,222,226, 63,144, 68, 82,101,157,243,213,171, 87, 17, 17, 17, 1,163,209,136,220,220, 92,252, +246,219,111, 56,117,250, 52,118,236,255, 29,143, 31,222, 71,136,191, 15, 70,143,126, 7, 82,169, 20,155, 55,111, 70,104,104,232, + 63, 90, 32,200,100,178,183,214,175, 95,239,177,105,211,166,156, 95,126,249, 37,183, 69,139, 22,150,203,151, 47,119, 94,185,114, +101,123,189, 94,143,143, 62,250, 40,237,210,165, 75,133,125,250,244, 81,175, 91,183,206,163, 94,189,122,111,160,130,118, 89, 37, +213, 62, 67, 0,140, 12,107,174,150,228,228,107, 32,112,122, 60,124,252, 8,185, 5,122, 8,188, 1, 79, 18,146, 80,160,229,145, +153,149,143,144, 38, 93,190, 59,121,242,228, 76, 66,200, 12, 74,233,193,106, 31, 42,120, 30, 23, 47, 94,196,185,115,231,112,250, +244,105,196,197,197,149,253,102, 99, 99,131,227,199,143,163,125,251,246, 47,197, 92,229,167, 23,155,171,156, 39, 89,175,140,185, + 42, 41,131,230,184,185,185,205,113,115,115, 83, 30, 59,118, 76, 93,171, 86, 45,112, 28,167,127, 54,114, 21, 22, 22,246,217,250, +245,235,221,234,212,169, 51, 1,192,138,154,174,175,178,200,150, 9, 60,151,142,129, 97, 48,102,241,154,241,142,214,242, 39, 73, +184,183,164, 36, 23, 32, 11, 20,229, 1, 39,127,130,164,205,172, 71, 19,250, 78,181,155,182,105,222, 24, 0,171, 43, 19,142,125, + 16,143, 53,107, 86, 98,210, 71,111,227,199, 31, 22, 67, 16, 36,208, 25, 89,120,251,182,132,206, 32,128, 48, 18, 52,106,210, 20, + 39, 78,158,129,148, 1,118,111, 90,243, 74,133,174, 40,165, 89,132,144,213,251,247,239,255, 96,226,196,137, 16, 4, 65, 62,119, +205, 26, 77,122,122,250, 2,152,145,191,170, 2,157,126,107,214,172,137,153,182, 50,125,223,164, 17, 96, 31,255, 74,178, 34,238, +194,126,224, 84,138, 61,139, 8, 94,243, 71,150,170,226, 91,252,233,103, 62,255,245, 17,172,178,182, 41, 85, 57,198,215,252,234, +124,161,182,183,123,167,117,179, 64,135,143, 39,140,145, 62, 72,209,226,104,211,143,115, 15, 44,155,101,245, 68,176,252, 40,142, +230,153, 21,117,217,249,199, 31,101,223,191,222,190,189,194,223,146, 7, 14, 52,249, 73,172,178,168,149,185,145, 43, 0, 80,169, + 84,182,157, 59,119, 70,199,142, 29, 49, 96,192,128,178, 54, 87,141, 27, 55,198,142, 29, 59,208,191,127,127, 92,191,126, 29,110, +110,110, 8, 8, 8, 64, 64, 64, 0, 14, 31, 62,108,238,133, 13,158,231, 17, 28, 28, 92,218,139, 48, 36, 33, 33,193,166,166, 39, + 82,167,211, 33, 51, 51, 19,246,246,246,144,203,229,104,209,162, 57, 62,248,176, 5, 28,221, 54, 34, 56,208, 31,133,133,133,101, + 93,215,171, 67, 42,149,250,213,171, 87, 15,233,233,233, 72, 79, 79,135,147,147, 19,220,221,221,225,226,226,130,101,203,150,209, +229,203,151,159,226,121,126,107, 74, 74,138,217,142,208,211,211,179,153,163,163,227, 7,105,105,105,202,114,133,166,178, 81,163, + 70,107,221,221,221, 87, 39, 37, 37,157, 51,199, 96, 25, 12, 6, 16, 66,112,232,161, 59, 10,245, 4,121, 9, 17,152,248,134,207, + 83,134, 75, 42,149,154,210, 80,183,112,232,208,161,206, 94, 94,158,136,143,189,133, 61,123, 40,150, 46, 93,138,211,167,139,255, +231, 49, 37, 15, 4,165,227,237,219,183,135,175,175,175, 89,201, 45, 5, 65, 64,100,100, 36,182,255,114, 10,110, 62,129,120,114, +239, 14,174, 29,254, 21,181,156,236,209,160, 73, 83, 24,141,198, 23, 74,161,241, 50, 48, 24, 12,235,234,215,175, 15,189, 94,255, + 59,128,245,145,145,145,253,146,147,147,151, 29, 56,112,192,125,208,160, 65, 73,191,254,250,235, 36, 0,251, 34, 35, 35, 71,125, +245,213, 87, 29,141,197,213, 7,207,193,178,236,143, 31,127,252,113,216,160, 65,131,136,140, 49,234,143, 29,221, 44,225, 56, 35, +249,116,198, 6,254,228,217, 83, 12,199, 25,201,128,161, 31, 11,135,255,184,201,140,251,240,107,190,113,203,158,136,138,138,114, +237,213,171,215,151, 0,170, 52, 88, 44,203,130,231,121, 72,165,210, 50, 3, 93,209, 60,230, 68,175, 70, 3,117,108,124,172, 46, +206, 95,213,201,138, 72, 10, 94,121,115, 5, 0, 25, 25, 25,107, 1,172,181,183,183, 79,181,180,180, 68,126,126,254,115,215, 31, + 33, 68,233,239,239,175,148,203,229,232,210,165,139,189,155,155, 91, 12,195, 48, 43, 18, 19, 19,205,118, 26, 21, 69,182,106,154, +166,193,206, 9,189, 90,180,109, 98,125, 87, 61,207, 90, 41,209, 94,175, 21,163,180, 33, 0,114,117, 46, 15,207,199, 13,201, 35, +105,138,198, 77,219,191, 6, 27,137,101,175,202, 12, 22,195,178,215,114,179,115,186,231,229,235,113,246, 92, 20,134, 14,169, 7, +157,129, 64, 16, 24, 20, 20,234, 0, 86, 10, 6,192,176,225,111,129, 18, 9,178, 82,147,192,178,236, 77,188,122, 76, 31, 63,126, +124,247, 25, 51,102,212, 46,201, 95,229, 83,146,191,106, 10, 33,164, 33,165,180,168,134, 58,181,126,221, 49,107,242, 47,103,190, +207,237,217, 90,115,239,181,226, 62, 81,246,175,249, 35, 75, 42,197,125, 9,139, 76, 74,159,234, 81,138,210, 14, 95,229, 59,126, +253,235, 13, 86,117,212,175,227,217,237,245,102, 77, 63,156, 57, 99,166,245,189,203,167, 49,243,203,239,132,122, 77,187,230, 46, +217,119, 36, 63,215,166, 86,135,162,164, 59,215, 77,245, 21, 0,208,181,125,127,132, 4, 53,127,238,199,208,246,197, 57, 32,207, +158,184,138,212,244, 68,147,111,178, 37,166,160,194, 54, 87,166,116,205,175,160, 32,200,137,138,138,114, 78, 72, 72,120,170, 65, +187,175,175, 47, 8, 33,184,116,233, 18, 46, 94,188,136,161, 67,135, 66, 34,145, 64, 42,149,226,212,169, 83,249, 53,137, 96,161, +164, 23, 33, 33,164,171,167,167,103,133,189, 7, 77,209,210,104, 52,200,205,205,197,209,163, 71, 81,175, 94, 61,204,159, 63, 31, +238,110, 46,152, 57,115, 50, 4, 65, 64, 94, 94, 94, 89,126, 32, 19,162, 3,180, 52, 58, 36, 8, 2,210,211,211, 81,187,118,109, +172, 90,181, 10,203,150, 45,251, 46, 41, 41,201,236, 94, 46,118,118,118, 54, 74,165,114, 92,175, 94,189, 66,251,246,237,139,174, + 93,187, 62,245,251,182,109,219,172,246,237,219, 55,213,203,203,235,117, 65, 16,214, 36, 38, 38,102,153,162,187,113, 99,113,250, + 36, 85,203, 57,152, 54,168, 22, 70,190,183, 25, 75,150,252, 12,133, 66,241,212,205,118,222,188,121, 85,154, 23,129,210,250,178, +140,243, 73,147,167,126,227,188, 96, 65, 56,194,195,211,192, 48, 12,220,220,220,192, 48, 12, 30, 61,122, 4,134, 97,224,227,227, + 3,134, 97,144,152,152, 88,218,230, 47, 27, 90,211,114, 16, 50, 12, 3,173, 86,139,248, 39,143,145, 16, 27, 3,171,188, 20, 56, +217,168,144,125, 43, 18, 33,163,199,192,104, 52,254,127,120,162, 61, 14,224,120,185, 73,123, 8, 33, 70, 66,200,112, 0, 59, 41, +165, 63,151, 76,223,128, 42, 18,131,182,108,217,178,241,140, 25, 51,164,165,105, 51,220,189,191,226, 12, 6,131, 0, 0,254, 33, +237,158,114,249,247,239,223,199,146, 37, 75, 80, 88, 88, 8,153, 25, 45,211, 59,117,234, 84,214, 38, 82, 38,147,193,209,209, 17, + 6,131, 1, 28,199,153, 93, 53,232,224,227,249,221,165,136, 83,252,141,216,239, 53, 55,239,254,102,145,240, 72, 64, 65,134,227, + 43,107,174,158,141,100,121,122,122,206, 17, 4,129, 82, 74,103,149, 43, 91, 21,222,222,222,103,142, 29, 59,230,192,113, 28,190, +253,246, 91,219,148,148, 20,219,118,237,218, 77, 3, 80,169,193,170, 36, 77, 67,101,212, 40, 77, 3,207,195,207,198,218, 22,217, + 72,128,206,209,216, 56,199,129,203, 58,158, 60,230,186,123, 92,147, 32, 75,222, 88,155,201,211,195, 67,101, 11,129,210, 74, 19, +161,233,140,198,223,174, 71, 92,235,226,237, 85,143, 61,112,240, 52,250,244, 27, 4,157,142,129,214, 72, 64, 88, 41, 8, 43, 67, +195,144, 38, 8,104, 16, 2, 10,224,234,229,243,156,222,104, 60,254, 42,157,123,247,208, 15,135,186,135,126,176, 2, 84,160, 21, +228,193,170,221,175, 95,191, 5, 0, 62,172,182, 86,162,213,135, 67, 93, 91, 23,235,148,207,131,245,241, 7,227,113,235,178, 84, +125, 58, 98,145,172,107, 75, 28, 74, 15, 39, 80, 41,255,236, 69, 40,101,106,150, 94,227,149, 49, 88,222,222,222,182,206, 86,170, +141,239,143,126,199, 58,238,198, 5, 36, 68, 94,192,185,179, 49,217, 63,237,253, 37, 49, 47, 55,125,180, 25,230,170,172, 58,207, +209,173, 22,106, 87, 96,176, 44,172,157, 0, 0,181,131,154, 67,242,196,188, 52, 64, 21, 69,175,106, 98,174,202,223,148, 43,202, +129, 53,110,220, 56,172, 95,191, 30,109,218,180, 65,253,250,245,203,158,148,205,141,146, 61, 27, 77,170, 73,239,193,242,228,231, +231,195,199,199, 7,235,214,173,195,205,155, 55, 97,109,109,141,161, 67,135, 34, 63, 63,191,204, 88,153,218,200,157,231,249,199, +199,142, 29,107, 56,120,240, 96, 42,145, 72, 72, 78, 78, 14,212,106, 53, 86,173, 90, 85,148,156,156,124,194,220,109,243,240,240, +232,105,111,111,255,191, 33, 67,134,176,254,254,254, 72, 77, 77,133,141,141,181,158, 16, 34, 7, 0,181, 90,173,183,180,180,196, +216,177, 99,209,176, 97,195,230, 83,167, 78,109,230,234,234,186, 37, 37, 37,101,111, 85,215, 18, 33, 4, 59,118, 20,215, 78,141, + 94,113, 7,122,125,177, 65, 89,189,122, 53, 74,218,178,253, 89, 21, 16, 27, 11,152,208, 51,197,202,202, 10,245,235,215,175,240, +220,183,109,219, 22, 87,175, 94, 45,174,130,148, 72,224,236,236,140,115,231,206,153,212, 45,179, 52,129, 99, 84, 84, 20, 2,125, + 29,113, 51,252, 24, 28, 85, 82, 52,114,119,133,103,219,215, 17, 19, 19,243,143, 70,175, 8, 33,125, 0,244, 2,112,152, 82,186, +143, 16, 50, 16, 64,215,210,113,152,153, 88,148,227, 56,202, 48, 12,137,143,143, 55,168, 84, 42, 98,111,111, 47, 81, 40, 20,208, +233,116,101, 70,235,254,253,251, 56,120,240, 32, 18, 18, 18, 96,111,111,207,168,213,106, 24, 12, 6,147,122,148,242, 60,255, 92, +122,134,146,245,154,109,174,222, 6,130,215,127,181,176,150,130, 97,213,129,142,221,240,224,214,125, 77, 65, 70,142,197,127,193, + 92, 1, 64,118,118,246, 90, 0,107, 75,199,157,156,156, 70,177, 44, 59, 83,173, 86,171, 79,157, 58,101,235,228,228, 68, 54,111, +222,108,156, 53,107, 86, 14,203,178,217,132,144,101, 85,233, 85,146,166,225, 69, 12,160,207,243,211, 16,157,145, 27,235, 35,181, +115, 23,110,104,233,249,143,226,167, 5,100, 75,235, 57,145, 6,193,232,151,118,251,236, 40, 46,182,117,106,114, 10, 67, 33, 68, + 87, 81, 6,111,152, 54, 99,222,167, 49,119,174,121, 43,109,148, 24, 55,126, 6, 14, 29, 57, 1,194, 72,113,230,252, 37,232, 13, + 60, 50,178,114, 49,100,216, 8,120,186, 57, 34,250,226,209,116, 78, 16, 86,189, 90,230, 90, 88,217,165,207, 40, 59,133,133,170, +228,152,240,216,250,195,100, 48,204, 10,204,158, 61, 27,193,193,193,239,149,188,185, 33,171,234,242, 67, 88,217,240,245, 97,118, + 50, 69,177, 14, 21,120,172,219, 61,173, 36, 15,214, 36,172, 90,187,183, 97, 3,223,135,115,171,202,131,245,159, 50, 88,181,106, +213, 82, 88, 74, 49,214,222, 66, 54,229,253,225,125,157,210, 98,111, 33,225,246,181, 98,231,175,211, 24,147, 99, 78, 53, 50,161, +208,238,244, 76,254, 13, 90, 85, 21,149, 86, 91,253, 19,252,179,154,165, 55,218,103,163, 87,230,152,171,138, 52,203,155,172,242, +121,175,188,188,188,176, 96,193,130,106,243, 96, 85,176,239,165,211,187, 2, 8, 41, 53, 89, 40,110,228,222,213,148,158,131,149, +105, 58, 57, 57, 33, 51, 51, 19, 0, 16, 22, 22,134,176,176, 63,251, 41, 24, 12,134,178,168,149,181,181,245,115, 17,172,138, 52, + 57,142, 91,184,111,223,190, 65, 23, 46, 92,232, 53,121,242,100, 73,135, 14, 29,138,227,247,133,133, 90,106,194,187,215, 42,208, + 28,126,228,200, 17, 86, 16, 4,172, 91,183, 14, 17, 17, 17,212,210,210,234, 35, 43, 43,235,205, 54, 54, 54,124, 78, 78,206,240, + 49, 99,198,244,157, 59,119, 46,105,219,182, 45, 46, 92,184, 64,106,215,174,221, 31,192,222,234,246,253,210,165, 75, 96, 24, 6, + 92,214, 19,188, 55,109, 39, 44, 45, 36,184,115,231, 14,178,178,178,158, 75, 62,106,202,241, 20, 4,161,236,198, 93, 58,180,109, +219,182,172,186,177, 69,139, 22, 96, 89, 22,215,175, 95,175,176,186,245, 25, 77,234,224,224, 80,118,125,200,100, 50,156, 56,113, + 2, 95,124,241, 5,188,237,109,145,125,251, 38, 92,195, 58,160,243, 59, 99, 48,116,232, 80,176, 44, 11,123,123,251,178, 72,111, +117,251,254,130,134,170, 76,147, 16,210, 59, 48, 48,112,122,116,116,180,103,195,134, 13,131, 8, 33, 97,193,193,193,205,110,222, +188, 89, 58, 46,165,148,238, 50, 71,243,202,149, 43,123, 86,174, 92, 57,254,237,183,223,150, 9,130,192,199,197,197, 25, 1, 16, + 87, 87, 87,246,202,149, 43,194,129, 3, 7,160,209,104,224,233,233,201,120,120,120,144,227,199,143, 11,183,111,223,190, 68, 41, +157, 97,234,190,151,246, 20, 44,109,204,174,209,104, 76, 50, 87,207,106,214, 10,240,155,223,177,157,191, 87, 70,210,117, 36, 39, +198, 66,155,101,103, 60,113,244,156, 89,230,234,175, 62, 71,127,179,230,188,123,247,238,121,232,116, 58,200,229,114,172, 94,189, +218,176, 96,193,130,232,140,140,140, 80, 74,169,166,166,219,105, 78, 2,210,234, 52,115, 51,113,104,255, 47, 87,154, 89,245,219, +128,247,146,210,203, 26, 46, 82, 66,236,127,118, 9, 10, 85, 53,111,152,200, 28,158,195,228,243, 69,135, 42,211,164,148,234, 9, + 33,131,250,245, 31,246,251,142, 29,219,173,102,205,153,131,115,151,110, 34, 51,167, 0, 2,101, 33, 16,130,153, 51,103,193,213, +209, 30,121, 73,247,138,116, 6, 67,191,103, 95,153,243,111, 63,239,132, 48, 19,142, 31,216,188,130, 33, 16, 10, 83,239, 42,216, +252, 88,213,200,161,253, 36,131, 6, 13,194,207, 63,255,140,168,168,168,239, 43, 51, 87,229, 53, 41,101, 38,220, 60,181,115, 5, + 1, 4, 77,250, 93,133,164,224,161,234,173,225,253, 36, 67,135, 14,197,190,131,231,177,227,215,135,107,182, 31,160,191,226, 63, + 70,165, 6,203, 90,130,168,208,160, 58, 30,109,155, 52, 80, 74,120, 13, 18,110,199, 34,171, 80,139,227,183,226,114, 24,202,252, + 88,211, 21, 22,183,157,144,225,201,147,123,207,253,150,147,163, 44,137,198,152,247,218, 39,134, 97,158,138, 94,189, 72,228,170, +252,118,186,184,184, 60,245,218,149,242, 55,236,210, 54, 62, 53, 72,209, 48,237,201,147, 39, 54, 79,158, 60, 1,165, 20,151, 46, + 93,178,105,209,162,197,180, 23,137, 94, 77,158, 60,249,169,215,131,148,255,172,104, 90,117,164,167,167, 23, 2,216,232,226,226, +114,232,211, 79, 63,125,179,101,203,150,109,103,207,158, 77, 40,165, 53, 61,176,156, 32, 8, 56,121,242, 36,126,254,249,103, 94, +175,215, 79, 79, 78, 78,190, 91,238,247, 31,189,188,188,206,244,237,219,119, 73, 76, 76, 12, 27, 29, 29, 13, 83,140,156, 70,163, + 65,253,250,245,193,113, 28, 22,189,231,133,252,252,134,224, 56, 14, 60,207,195,210,210,242,169,247, 80,154,114,158, 24,134,121, + 42, 50, 82, 58, 92,186,116, 9, 44,203, 34, 52, 52, 20,215,174, 93, 43,139, 96, 85, 23,113, 50, 24, 12, 79, 92, 92, 92, 92,230, +205,155, 87,182, 93,233,233,233, 56,118,236, 24, 90,182,106,141,160,177,227,144,148,148,132,101,203,150, 96, 78,241, 82, 0, 0, + 32, 0, 73, 68, 65, 84,193,221,221, 29,243,231,207, 71, 86, 86, 22, 56,142,251,187,195,230,221,162,163,163, 61,135, 15, 31,158, +118,243,230, 77,207,131, 7, 15,218,246,234,213,203,114,216,176, 97,105, 55,111,222,244, 36,132,180, 3,176,203,204,255,207,116, + 66,200,145,249,243,231, 79,251,240,195, 15, 91,188,253,246,219, 82,169, 84, 42, 36, 38, 38,114,219,183,111, 39,245,235,215,103, +100, 50, 25, 57,122,244,168,112,249,242,229,139, 28,199, 45,162,148,158, 49, 55,202, 92,106,174,204,109,115, 85,202, 71,206,138, +183,172,153,244,208,149,171, 23, 48,254,190,158,134, 45,219,143,197,159,185,112,239, 1,171,227, 62,218, 8, 60,192,127, 16,150, +101,119, 5, 6, 6,142,154, 48, 97,130, 69,215,174, 93, 21,115,231,206,205,205,207,207,175,208, 92, 85,132, 57,105, 26, 96,102, + 2,210,114,252, 48,253,147,131, 31,125,220,112, 84,157,255,185,214, 66,120, 97, 26,178, 37, 44, 99, 99,203,160,137, 15,139,252, +140,251, 78,191,254,190,233, 17,170,201,171, 70, 41,189, 66, 8,233,212,160, 97,227,189,139,230, 47,114,254,108,234, 20,233,222, +131,191,129,114, 6, 92, 58,117, 10, 86, 50,158,222,254, 63,246,174, 59, 44,170, 99,125,191,179,103, 43,203,210,203, 82, 22,148, + 34, 32,138,189, 68,197,128, 45,246, 18,236, 37,177, 37, 70,197, 30,123,139, 70,163,137, 53,198,216,127, 81,185, 98,141,209,104, + 44,216,176, 87, 84, 84,154,138,133,142,116, 88,182,239,158,249,253, 65,185,196, 80, 22, 52,185,185, 55,251, 62,207,121,118,247, +156,179,239,153, 51, 51,103,230, 61,223,204,124, 95,212,249, 76,181, 86, 51,224,127, 49, 84, 78,218,181, 77, 7, 8, 33,199,109, +109,109, 31,142, 29, 61,218,199,223,127, 56,196, 98, 49,142, 28, 57,130,127,109,218,100,216, 8, 12,217, 78,200,253, 9,148, 86, +219,231,103,222, 44,231,121,240,217,216,177,190, 45, 90,140,135, 88, 44,198,225,195,135,177,119,227, 70,163,121,254, 49, 2, 11, + 28, 82,116,235,233,107,249,237,167,175,229, 96, 41,101, 41, 85,115, 56, 72, 46,214,106,191, 73, 72, 76,169,147, 24, 40, 27, 34, + 92,177, 50,244,125, 42,243,114,209, 83,151,101,217, 85,116, 14, 41, 13, 26, 52,192,219, 22,173,234,190,235,116,186, 20, 35,233, + 87,187,187,255, 33, 46,233,234,186,166,181,108,216,207, 88,113,101,172, 31, 44, 0,200,204,204,204, 2,176, 86, 38,147, 29,239, +217,179,231, 48, 66, 72, 70, 29,203,232, 64,167, 78,157,134, 81, 74, 25, 14,135,179,239, 45,113, 5, 0, 72, 78, 78,126, 33,147, +201,118,120,120,120,148, 7,128,174,142,147,101,217, 23, 77,154, 52,209, 86, 86, 22, 85,253,102, 89,182,198, 50,202,207,207, 71, +155, 54,109,254, 16,115,146, 82,138,215,175, 95,151, 89,152,202,243,190, 58,225, 38,151,203, 39, 76,153, 50,101, 59,143,199,115, + 7, 64,202,196,173,193, 96, 96,126,248,225, 7,145,193, 96, 96, 0, 16, 14,135,163,231,241,120,170,163, 71,143,234,245,122,125, +146, 90,173,158,240, 23,183, 3, 7, 9, 33, 60, 0,121, 49, 49, 49, 31,150, 90,174, 82, 30, 63,126,124,254,192,129, 3, 82,160, +102,247, 9, 85,212,205,171, 0,174, 18, 66, 58,110,217,178,101,254,132, 9, 19,218, 12, 27, 54,140, 27, 28, 28,140,223,126,251, +205, 16, 25, 25,121, 91,169, 84,174,174,173,176, 34,132,200,235,213,171, 87,210,128,113,171,159,229,160,215,235,171,125, 91,179, +171, 39,220, 60,114,162,139,104,199,234, 8,121,118,154,230,134, 78,174, 89,176, 7,120,140,127, 48, 50, 50, 50,190, 36,132, 44, +222,176, 97, 67, 90,179,102,205,132,124, 62, 95, 99,172,184, 42,125,241,145,214,162,142,176,117,172, 91,122, 66, 72,175,245,221, + 6, 29, 15, 90, 56,197,163, 91,167, 64,177, 91,125, 71,215,216,231,153,120,118,243,183,226,135, 39, 86,190,162,234,188,254,148, + 82,189, 17, 92,119, 8, 33, 13,102,205,153, 85, 22,236,185,105,151,115,199,232, 63, 40,216,243,138, 53,107,214,248,248,251,251, +227,200,145, 35, 56,183,111, 31,134,102,103,227, 18,195, 48, 28, 62,223,238,132, 86,187, 22,128, 49,194,104,197,186,117,235,124, + 3, 2, 2,112,232,208, 33,156,221,187, 23, 67,234,198, 83, 21, 90, 3,112, 40,253,158, 13, 32, 30, 64, 75, 0,102, 0,212, 0, +228, 0,236, 43,156,159, 83,122,172,236,248, 21, 0,127,233, 68,215, 42, 91,167, 71, 79, 95,182,124,223, 23, 83, 42,149,185, 62, + 62, 62,188,218,252, 71,167,211,189,169,161, 1, 77,241,242,242, 50,218, 74, 97,140, 24,202,201,201,105,245,103,101,248,187,206, +181,250,157, 16,100,217, 87,206,206,206,108, 89,103, 95,153,248,170,108, 31, 5, 94,214,230, 58, 41, 41, 41,137, 0,190,174,107, + 58, 83, 82, 82, 78,195,136, 96,206,198,158, 7, 0,185,185,185,239, 61,200, 46,161, 52,245,171,175,190,170,149,176, 6,165,169, +213,148,245, 35, 0,109,255,238,173, 43,165,244, 74,105,227, 3, 66,200,199,132,144, 94, 0,206, 82, 74,143,188, 39,254,114,161, +181, 99,199,142,233,148, 82, 20, 22, 22,110,172,173,176,170, 32,252, 47,190,175,123,207,205,212, 92,220,191, 45,165,179, 50, 95, + 59,125,167, 92,179, 23, 38,148,149,153,202,209,209,113,247,168, 81,163, 62, 0,176,231,125,112,190,131,155,134,170,210,248,146, + 16,210,236,210,172,175,199, 94,178,182,232, 13, 3,215, 15, 26,206, 9,104,114,126, 3,240,147, 49, 86,240,138,247, 11, 96, 93, +233,246,143, 65,169,255,170,233, 99,198,140,193,226,197,139,113,118,237, 90,237, 68, 66, 10,120, 0, 61, 83,242,130,201, 33,192, + 92, 99,121, 62,253,244, 83, 44, 94,188, 24,167,190,253,182, 78, 60, 53,192,129, 16,114, 18, 0,230,205,155,183, 96,213,170, 85, + 54,243,231,207,111,186,122,245,234,111, 74,127, 63, 41, 59, 94, 90,166,125,230,207,159,223,184,194,241, 34, 0,119,255,234, 7, +233, 79,219, 0,116, 53,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,105,226,124,199,173,119,137,100,169,250,179,170,239, 21, +246,253,149,233, 5,199,244,174,102,130, 9, 38,152, 96,130, 9, 38,252,151, 90,225, 78,190,203,241, 63, 53,109, 0,186, 86, 97, +217, 58, 95,139, 27,236, 90, 7,203,217,121, 19,167,137,211,196,105,226, 52,113,154, 56, 77,156,255, 44,206,154,184,171,248,127, +111, 66,200, 73, 74,105,159,170, 62,203, 4,213,219,223, 43,236,171,117,228,145,119,130,105,136,208,196,105,226, 52,113,154, 56, + 77,156, 38, 78, 19,231,127,195, 16, 33, 0, 58,111,222,188,249,255, 13, 67,132,213, 44,193, 57,194,164,166,194, 82, 32, 16,243, + 1, 64,163, 81,104, 93, 93, 81, 8, 12,250,143, 5,162, 53,225,191,214,132, 43, 45, 21,243,153,239,243, 92, 19, 76, 48,193, 4, + 19,254, 49,200, 42,179, 76, 1,200, 2, 64, 74,127,107, 74, 63,179, 74,251,142,183,191,255,238,248, 95, 9,110, 85,226, 42, 59, + 91,108,207,229,230,249, 26, 12,170,134, 0,192,229,114,226,178,179,109, 18,236,237,143,100,215, 69,100, 57, 72,165, 81, 60,134, +113, 53,230, 92,157,193,144,154,157,153,249, 59, 87,239, 20,248,175, 23,118,198,138,135,119, 17, 25,127,133, 64,113,112,112,144, + 74,165,210,126,150,150,150,237,242,243,243,239,100,101,101,253,146,149,149,149, 89, 69,122, 86, 17,130, 57,165,223,191,163,148, +206,175, 38,237, 70,159, 91,201,127,125,196, 98,241, 36, 66, 72, 64,233,253, 63, 86, 40, 20, 91, 40,165, 79,255,129,130,214, 12, +192, 0, 46,151,251,169,189,189,125,155,140,140,140,175, 40,165, 27,234,200,197, 5, 48,203,218,218,122,152,181,181,181,103,110, +110,110, 98, 97, 97,225, 33, 0,235, 40,165, 53, 46,121, 94, 54,205,165, 93,112,247,224, 69,145,103, 35, 87, 44,253, 62,237,230, + 31,142,127,233, 98,247, 81,183, 14,139, 35, 79,220, 88, 62,127,179,113,225,145, 42,164,141, 3,148,207, 35,101, 75,223, 82,233, +223,184, 92, 62, 0,176,160, 52,205,235, 40,165,151,254,230,245,200, 92, 42,149,126, 11,160, 47,151,203,141, 73, 77, 77,253,156, + 82,154,242,158,184,121, 0,108, 1,228, 26, 83,143,222,170,143,173, 1, 4,160,196,157,198, 93, 99, 92, 49, 24,217,174,141,230, +112, 56, 43, 75, 93,223, 44,204,201,201,217,243,119, 45, 27,161, 80,184,209,201,201,105,188, 82,169, 84, 16, 66,104, 69,127,141, +122,189, 62, 37, 43, 43,171,213,255, 96,211,118,247,191, 45,193,149, 10,172,212, 84, 88,114,185,121,190,111, 50, 30, 13, 77, 75, +143, 30, 2, 0, 46,206, 77, 15, 57, 58, 53, 57,152,154, 42,208,182,238, 22, 34,225,137,185, 91, 24,134,215, 92,165, 81,219,243, +184,188,108,173, 94,247,128,163,161,147,210,227,142, 86,234, 36,145,199, 48,174,175, 18, 46, 57,234,181,185,224,137, 92,192, 51, +115,175, 50, 81, 46, 46, 46,117,186, 25, 91, 91,111, 11,173, 80, 52,157,199, 99,186,177, 84, 31, 64, 89,128, 67,120,143,245, 6, +221, 5,190, 90,189, 62, 55,247,121, 81, 93, 51,170,161, 61,113,162,192, 48, 16,116, 3,197, 57, 2, 28,136,203,166, 25,181,104, + 24,140, 18, 15,239, 40, 50, 42,254,119, 3,165,244,203,247, 93, 97,100, 50,153,205,192,129, 3, 55,126,253,245,215,102, 18,137, +132, 36, 37, 37,117,159, 59,119,238,135, 50,153,108,102, 74, 74, 74,218,219, 98,143, 16,204, 97,217, 18, 7,165, 28, 14,153, 43, +149, 74,197, 12,195,252, 33,120,168,193, 96, 16, 19,130, 80,150, 45, 9, 56,206,225,144, 57,132,144,239,141, 17,138,102,102,102, +195,219,180,109, 63,243,219, 53,235, 36, 82, 71, 71,115,189,129,213,190,124,245,202,124,209,252, 47,219,154,153,153,125,175, 84, + 42,247,215,246, 62, 9, 33,132, 97,152,161, 66,161,176, 15, 0,255,210,221,177,106,181,250,164,193, 96, 56,104,108, 71,238,228, +228,116,133, 97,152,250,181,185,182,193, 96, 72,202,200,200, 8,172, 99,199, 53,216,221,221,253,167,160,160, 32,113,155, 54,109, + 32, 16, 8,176,120,241,226, 89, 0, 54, 24, 35,164,196, 98,241, 80,115,115,115, 47,185, 92,254, 92,169, 84,254, 44, 16, 8,186, +126,255,253,247,110, 29, 58,116,176,200,204,204, 36, 12,195, 72, 79,158, 60,249,201,166, 77,155,186, 19, 66,186,212,212,185, 21, + 60,167,139,132,125,253, 59, 22, 60,191,180, 8, 64,207,183,143,235, 85,162, 79, 41,227,214, 71, 73,239, 39,163, 22, 75,228, 9, + 33, 28, 30,143,247,189,147,147,211, 24,149, 74,165, 2, 64, 9, 33, 84, 42,149,150,119, 52, 0,160,209,104,242,242,242,242,252, +170,125,182, 27, 54,188,199, 48,140,172,154,242, 72,137,139,139,123, 31, 29,214,156,140,140,140, 94, 60, 30,143,184,185,185, 49, + 0, 46,213,226,126,125, 1, 44, 44,237,100,182, 80, 74, 13,132,144, 78, 64,201,243, 14,224,187, 50,193,198, 48,204, 22, 63, 63, +191,126,177,177,177, 91, 41,165, 43,234,154, 88, 39, 39,167,237, 63,254,248,227,144,254,253,251, 51, 89, 89, 89,174,205,154, 53, + 11, 7,208,241, 29,133,149, 0,192,124, 39, 39,167,201,129,129,129,118,247,239,223,207, 37,132,252, 8, 96,117,117,190,166, 8, + 33, 50, 0, 93,173,173,173,187, 44, 92,184, 80,210,167, 79, 31,236,216,177,163,215,206,157, 59,229,132,144, 11, 0,206,191,171, +248,227,112, 56, 43, 83, 83, 83,157, 41,165,112,118,118, 94,137,247,228,158,226,125,131, 97,152,239,135, 14, 29, 58, 38, 60, 60, + 92,252,234,213, 43,177,171,171,107,185,211,107, 66, 72,157,251, 79, 19,254, 34,129, 37, 16,136,249, 6,131,170, 97, 90,122,244, +144, 15,131,126,176, 2,128, 43,151,167, 12,113,116,106,252, 88, 32, 16, 39, 8, 45, 69, 71, 67,250,118,109, 62,168, 79, 16,145, + 57, 59, 34, 37,253,141,244,255, 14,156,237,113,242,236,165,163, 40,113,252, 85, 41,244,218, 92,152,105,207, 35,254,218, 38,216, + 7,167, 97,243,169, 20,220,124,248, 18,138,130,108,212,119, 50,195,154,233, 31,193,201, 70, 92,167, 27,145, 72,125, 59,113, 68, +226,131, 35,134,143,178,234, 55,192,159, 87,207,201, 9,148, 10,145,240, 92,222,254,116,196,165,214, 63, 31,222, 63, 73, 34,245, + 29, 42,207, 76, 48,186, 81,107,233, 66,204,138,181, 24,192,101,200, 39, 29,219, 54,238, 50,188, 87, 71, 78, 35,255, 6,136,121, + 18,251,209,241,139,183,215, 52,146,114, 46,232, 13, 52,204,156,143, 99, 81,105, 85, 59,226,171, 76,104,116,233,210,165,133,153, +153,153,166,226,121, 74,165, 82, 64, 8,186,212, 69,100,148, 93, 67,163, 81,115,120, 60, 1, 56, 28, 50,179,105,211,166,245,179, +179,179,175,112, 56,156,125, 41, 41, 41,121,181,201,207,169,132, 8,242,184,220,150, 28,161,208,217,160,209,216, 1, 0, 17, 8, +242,100, 54, 54, 77, 22, 46, 88, 32, 97, 24,134,205,201,201,129, 66,161, 32,159,125,246,153,232,249,243,231, 33, 0, 54,213,144, + 70,236,220,185,211,215,217,217, 89,243,246,177,244,244,116, 65,255,254,253,234,210, 96,251,126,208,174,195,140,179,103,207,248, + 23,230,230,169,118,110,216,113, 95, 39, 50, 83,121, 52,244,229,111,217,177,215,242,243, 49, 35,167, 16, 66, 30, 80, 74, 19,106, +193,233,110,102,102,118,116,237,218,181, 1,157, 58,117,226, 57, 58, 58, 34, 51, 51, 19,177,177,177, 1, 23, 47, 94, 28,176,119, +239,222, 89,132,144, 16, 74,169, 49, 30,215,125, 46,132,253,228,104,110,107, 7,131, 78, 7,151,166, 45,202,253,147, 61,187, 24, + 1,189, 86, 11, 86,167,131,127,159, 1, 37,102, 24,150, 69,163, 70,141,234,228, 45,151, 16,226,210,184,113,227,127,125,243,205, + 55,124,181, 90,141,219,183,111,227,210,165, 75,108,122,122,250,234,154,196, 21, 33, 36, 98,233,210,165,178,192,192, 64,139,236, +236,108, 24, 12, 6,251, 99,199,142, 77,106,209,162,133,165,155,155,155, 32, 44, 44, 12,114,185, 28,122,189,222,214,203,203,203, +118,248,240,225,154,176,176,176, 89, 0,190,173,202,114, 85,248,156, 46,202, 32, 94, 61,252, 90,126,138, 12,114,166,199,204,158, +206,167, 45,189, 73,185, 37,171,167,183,183,133, 87, 67,243,185, 18,203, 38,182,133,169,231,231,246,244,246,222,121,250,121,205, + 47, 65,132, 16, 14,135,195,249, 62, 36, 36,100,196,129, 3, 7,196,177,177,177, 98,127,127,127,176, 44, 91,238, 49,191,204, 81, +172,143,143,143, 49, 29,150,236,194,133, 11,142,102,102,102,127,112,202, 91, 92, 92,140,254,253,251,255, 25,237,109,109,203,120, +217,139, 23, 47, 6, 31, 61,122,116,228,156, 57,115,124, 0,132, 2, 88,156,147,147, 19, 4, 0,118,118,118, 2, 0,151, 8, 33, + 99,103,207,158, 61,113,222,188,121,232,213,171,215, 98, 66,200,202,186, 88,245, 8, 33,140,189,189,125,175,254,253,251, 51, 58, +157, 14,230,230,230,208,233,116,222,239, 40,174,132,124, 62,255,215,181,107,215,118, 27, 62,124, 56,184, 92, 46, 88,150,181,141, +136,136, 88, 50,102,204,152,142,132,144,158,149,137, 44, 66,200,167, 19, 39, 78, 28, 56,106,212, 40,180,106,213,170,220,185,236, +218,181,107,177,124,249,114, 73, 68, 68,196,128,176,176,176, 1,132,144,159, 41,165,117,246,101, 86, 22, 47, 52, 57, 57, 25,142, +142,142,102,182,182,182,233, 0,190,202,205,205,221,241, 55,178, 42,126, 55,116,232,208, 17,225,225,225, 18, 0, 88,179,102, 13, +102,204,152, 1,169, 84, 10,137, 68, 98, 82, 52,255, 13, 2,171, 38, 40, 20,138, 22,243,167,126, 2, 14,167,228, 45,177,129,167, + 59, 86, 45,248,156, 28, 63,121,182, 69,117,255,227,137, 92, 16,127,109, 19,132,110,211,161,214,233,113,235,225, 11,156, 91,211, + 29, 0,224,219,115, 33,212,218, 46,101, 21,221, 86, 96,102,246,157,198, 96,184, 14, 39,167,219,120,253, 58,171, 38,113,229,224, + 36, 61,185,109,219,183,102, 1,222,126,208,234,117, 72,125,147, 10, 66,132,144,185, 90, 96,236,167, 61,121, 65, 65, 46,246,203, +150,109,255,205,220,193,247,227,226,172,132, 26, 29,125,250, 57,144, 61, 29, 91,248, 12, 25,222, 59, 80,216, 36,160, 49,248, 66, +179,127, 11,175, 86,173,208,178, 85, 43,206, 60,121, 81,183, 59,119,163,186, 29,137,184,165,246,115, 32,135,226,179,232,232,234, +158,141,138, 66, 99,218,180,105,127, 8, 72,156,158,158,142,200,200,119, 26, 53,248,221, 53,190,254,250,107, 73,126,126,126,215, +255,251,191,255,251,208,213,213,117,109,106,106,234, 45, 99, 72, 62, 33,164, 62,132,194, 46, 99,214,173, 99,155,247,235,199, 88, + 59, 57,113, 88,131,129,164, 37, 38,218,109,216,180, 41, 56,247,217, 51,179, 98, 91,219,220, 60,165, 82,145,144,144, 0,145, 72, + 68,184, 92,110,235, 74, 26,172, 76, 66,200,119, 28, 14,153, 75, 8,129, 80, 40, 74,248,226,139, 47,238,151, 30,174,127,226,196, + 9,113,223,190,125, 21, 0, 94,149,152,189, 69,174, 12,195,241, 45,153, 32,136,239,140, 17,150,230,230,230, 83, 87,124,243,157, +121, 97,110,190, 82, 91, 92,172,115,180,148, 16, 72, 36, 76, 81,161,188, 48, 45, 35, 75,181,240,171,229,220, 9, 99, 71, 77, 5, + 48,201, 88,113,213,172, 89,179, 59, 71,143, 30,117,180,179,179, 67,126,126, 62,114,114,114,112,231,206, 29,176, 44,139,144,144, + 16, 97,251,182,109, 90, 44, 88,184,232, 38, 33,164,157, 49, 34,203,220,214, 30,107, 2,155, 3, 0,150,188,202, 41, 47,159, 29, +131,251,148,159,179, 60,165, 0, 0, 32, 18,137,222, 37,212, 83,187, 46, 93,186,240, 1, 96,220,184,113,133, 69, 69, 69,171, 0, +132,211,106,156,161,150, 98,214,162, 69,139, 92, 61, 61, 61,235,133,135,135, 67, 46,151, 3,128,163,167,167, 39,252,252,252, 12, +145,145,145,240,245,245,133,133,133, 5,174, 92,185,130, 91,183,110,161,101,203,150, 22,124, 62,127, 72, 85, 2, 43,184,123,240, + 34, 97, 95,255,142,126, 45, 63,133,196,210, 25, 59,247, 31, 68,124,212,222,142,106,109,236,162, 85,161,174,163,148, 84, 56, 90, +230, 99, 49,175,126,171, 32,187, 6,141,251,161, 94,203,251,246, 42,195,213, 23,139, 39,123,173,230,138, 84,123,151,174, 77,203, +169, 74, 92, 1, 88, 19, 18, 18, 50,248,192,129, 3,214, 0,240,232,209, 35,100,102,102,194,193,193, 1, 34,145, 8, 60, 30,175, + 60,126,168,177, 48, 51, 51, 67,122,122, 58,180, 90,109,153,213, 10, 69, 69, 69,112,114,114, 42, 81, 55,203, 8,103,233, 82,227, +188,142, 19, 66, 2,219,182,109,187,175, 94,189,122,110, 21,247,247,238,221, 27,195,134, 13, 3, 0, 4, 5, 5,117, 25, 52,104, + 16, 45, 19,130,233,233,233,242,187,119,239,118,163,148,222,174,194,186,162, 76, 77, 77,197,236,217,179,241,242,229,203,201,132, +144,215, 0, 68, 2,129,160,252,189,152, 16,226,219,184,113,227,239,103,204,152,129,231,207,159, 35, 38, 38,230, 78, 93,135, 76, + 41,165, 6, 15, 15,143,103, 58,157,174,149, 94,175,135, 82,169,196,199, 31,127, 44,178,181,181,205,100, 24, 38, 46, 59, 59,123, + 36,165, 52,189, 22, 86,171,122, 92, 46,119,243,236,217,179,187,116,237,218, 21,209,209,209, 56,122,244, 40,134, 15, 31,142, 30, + 61,122, 96,237,218,181, 65,161,161,161,243, 0, 44,173,132,162,203,150, 45, 91, 96, 48, 24,254,240,108,136, 68, 34, 4, 6, 6, +162, 81,163, 70, 56,126,252,120, 23, 0,117, 18, 88,132, 16,223,129, 3, 7,138,202, 68,117,100,100,164,149,153,153,153,149, 76, + 38, 91, 10,224,111, 35,176,234,213,171,247,197,129, 3, 7, 36, 21, 71,123,132, 66, 33, 42,212, 3, 19,254,238, 2, 75,163, 81, +104,185, 92, 78,156,139,115,211, 67, 87, 46, 79, 41, 31, 34, 4, 56,113, 26,141, 66, 11, 0, 6,150,162, 80,161,135,153,144,131, + 87, 25, 69,120,146,152, 93,217, 67,250,187,165,150, 60, 51,119, 8,219,188, 2,165, 20, 26,173, 1,234,130, 12,172,250, 77,129, +216, 20, 21, 52,197,121,208,104, 75,166, 89,217,219,219,115,207,158, 61, 61,227,252,249,139, 19,119,239,222,205,164, 88, 89,197, +160,160,160, 69,101,156,182,182,222, 22, 92,115,179, 67, 91,183, 45, 54,163, 76, 34, 18,146,138,209, 64,214, 6,246,214,110,200, +200, 46,198,245,152, 83,136,123,122, 18,158,206,245, 48,125,106, 15,209,138,111,194, 15,218,216,120,186,231,229,189, 40,172, 42, +157,165,248,116,251,153, 4,232,115, 19, 97,200,121, 14, 67, 81,218, 31,133,157,131, 59, 90,118,114,133,131,155,183,112,244,244, +229,159, 2, 24, 93, 25, 39,165, 52,147, 97,152, 45, 28, 14,153, 68, 8, 65, 64, 64,147, 23, 27, 55,110,212, 84,150,245, 1, 1, + 77, 94, 48, 12,199,179, 36, 12, 11,103, 43,203, 26, 50,107, 72,231,239,196,140, 64, 32,156, 83, 98,222,119, 78, 60,125,250,180, +102,208,160, 65, 88,179,102, 13,127,222,188,121, 95,214,171, 87, 47,244,245,235,215, 25,213,149, 81, 8, 33,238,174,222,222, 31, +173,188,126,157,242,116, 58,146,123,231, 78, 97,126,122,186, 62,163,168, 72,112, 56, 46,174,215,248, 47,191, 20,184,185,185,225, +218,201,147,118, 89,197,197, 52, 95,173, 86,230,231,231, 83,189, 94,127,167,138,123,159, 47,149, 74,197, 59,119,238,244,253,226, +139, 47,238,167,165,165,205, 47,109, 24, 86, 1,104, 4,224, 85,133,125,216,182,237, 96,234,103,159,125,150,144,153,153, 57,191, +186,116, 86, 64, 99, 71, 7, 7,241,254,237, 97,209,182, 22,102, 28,123,153, 51,135,103,101,197,211, 11,197,124, 74,161,242,244, +244, 22, 3,104, 92, 69,158,157,127,171,145, 37,102,102,102, 71,127,253,245, 87, 71, 30,143, 7,131,193, 0, 7, 7, 7,188,124, +249, 18,249,249,249, 40, 42, 42,194,139,184, 88,120,184,185, 97,217,188,185,206,161,115,231, 29, 37,132,180,170,216,137, 85,150, + 78,131, 78,251, 7, 75, 94, 21, 1,194,127,247,105, 76,185,191,133,151, 73, 73, 73,144, 72, 36, 8, 8, 8,144, 92,191,126,253, +106, 85,226,170, 34,167, 72, 36, 26,210,161, 67, 7,139,253,251,247,163,101,203,150,176,178,178, 66,100,100, 36, 30, 61,122, 4, +173, 86,203,145,203,229,176,176,176,192,234,213,171, 81,175, 94, 61, 20, 22, 22, 34, 41, 41,201,142,199,227,217, 87,197, 25,121, + 54,114, 69,193,243, 75,139, 50,200,153, 30, 59,247, 31,196,103,195,135,194,137, 38, 94,181,242, 38, 43, 62,234,219, 97, 9,101, +220,250,152, 91, 52,181,241, 9,232, 11,190, 64,130,208, 57,203,145,240,248,132,141,162, 40,122, 50, 49, 36,187, 1,152,246, 54, + 39, 41,201, 24,142,155,155,219,248,195,135, 15, 91, 84,176, 64,149,199, 33,173, 24,156,189,170, 64,236,149,150,145,193, 0,173, + 86, 11,173, 86, 11,131,193,128,236,236,108, 20, 21, 21,193,218,218,186,228,132,165, 0, 1, 33, 20,149, 11,150,183, 56, 71,158, + 63,127,222,205,220,220,252, 15, 22,146,236,236,108,232,245,122,136,197,226,242,107,234,116, 58,168, 84, 42, 73,163, 70,141, 38, + 1,184, 93, 25, 39,203,178, 51,135, 12, 25,210,225,246,237,219, 94,155, 54,109,130, 70,163, 89,147,145,145,129,129, 3, 7,130, +101, 89,116,233,210,229, 3, 74,105,252,194,133, 11, 1, 0, 51,102,204,208, 21, 23, 23,127, 97,204,189, 87, 33, 56, 26, 13, 26, + 52,200,235,194,133, 11,232,216,177, 35,212,106, 53,214,174, 93,107,185,109,219, 54,203,176,176, 48,135, 57,115,230,252, 4,160, +123,117,156,165,194,106, 65,143, 30, 61,102,246,239,223,223, 60, 53, 53, 21,214,214,214, 56,120,240, 32, 86,175, 94,125, 69,163, +209, 44, 8, 11, 11, 91,117,244,232,209,142,195,135, 15,199,218,181,107, 39, 19, 66, 86, 80, 74,117,149,113,190,120,241, 2, 14, + 14, 14,176,180,180, 4, 80, 18,200,254,193,131, 7, 56,119,238, 28, 26, 54,108,104,140,104,172, 42,157,190, 33, 33, 33, 55,194, +195,195,173,147,147,147,113,229,202, 21,120,120,120, 64,161, 80,212, 24, 86,236,125, 7,101,174,137, 83,169, 84,170,146,146,146, + 36,223,126,251, 45,156,157,157, 81,175, 94, 61,136, 68, 34, 16, 66,160,211,233,170, 76,175, 49,233, 12, 14, 38,220,236, 84,155, +254, 86,214, 54,147, 41,165,220,130,130,188,237, 90,228, 31,121,254,156,106,254,170,123,255,159, 20, 88,132, 16, 74, 41, 37,101, +159,174,174, 40,204,206,182, 73,112,116,106,114,208,209,169,113,105, 92, 46, 78, 28,195,216, 36, 72,165,138, 66, 0,208,234, 41, +110,196,229, 35,250, 89, 6, 30, 61,203,128,185,208,184, 48, 53,106,173,190,100,157, 37,165, 80,201,255,253,146,170, 85,228, 65, +173, 45,153,206,161, 81, 43, 80,144, 21, 67, 6,127,220, 77, 52,113,226, 4, 56, 59,187, 58, 84,197,167, 21,138,166,135,206,232, +101,109,107,205,195,201,235,103,240, 65,195,143, 33, 18,242,144, 83,160, 2, 8,240, 52,241, 28,192, 90,224,113, 66, 18,218, 54, + 22,163,251, 71,254,146, 95,142,196,127, 9, 96,177, 49,233,213,167,220, 1,223,167, 39,120, 6, 29,116,217,241, 96,243, 95, 3, +230, 78, 80, 18, 9,114,210, 95, 35,238,234,207, 70,133, 40, 53, 24, 12,161,246,246,246,111,230,207,159, 31,232,235,235,171, 9, + 13, 13,125,252,242,229,203,133, 21,207,241,240,240, 88,185,121,243,102, 36, 36, 36,188, 90,181,106,213,181,236,236,236,175,107, +249, 96,206, 35,132,108, 44,181,134,101,255,250,235,175, 77,175, 92,185, 50,105,195,134, 13, 14,147, 39, 79,230, 79,157, 58,117, + 36,128, 53,213, 13, 11,154, 11,133, 93, 87, 94,185, 66,245, 41, 41,234,127,253,240,131,224,199, 27, 55, 22,106, 89,214,197,222, +209,145,180,111,219,182, 88,204,225,100,231,100,102,234, 29,188,188,152,151,231,206,217, 81, 51,179,180,211,167, 79, 23,202,229, +242,159,171, 25,130, 81, 84, 54, 44, 88, 25,156,157,157, 53,149,205,209,170,166, 35, 40,100, 41,213,218,120,122,224,163, 46,237, + 27, 60,139, 79, 76, 20, 90, 89, 51, 62, 62,245,253, 98,226, 94,221,102,245,122, 53, 33,164,208, 24, 46,134, 97,134,110,220,184, +177,137,165,165, 37, 88,150,133,149,149, 21,178,178,178,160,209,104, 80, 88, 88, 8, 77, 81, 1, 52, 5, 5,120,244,250, 37, 58, + 4, 7, 99,112,143,143,252,195,142,253, 58, 20,192,129,234,120, 93,154,182, 40,183, 92, 45,175,111,247,239, 49,159,228,252,114, +177,245,109, 11, 31,240, 37, 18,116,155, 57,239, 93, 26,230,251, 2,129,224, 84, 72, 72, 72,175, 47,191,252,146,147,158,158,126, +134, 16,210,129, 82, 26, 83,173, 5, 88, 34,241, 46, 19, 20, 86, 86, 86,216,184,113, 35,164, 82, 41, 20, 10, 5,238,222,189, 75, +101, 50, 25,185,116,233, 18,100, 50, 25,178,179,179,161,213,106, 81, 92, 92,156,161,209,104,170, 28, 22, 47, 29, 6,236, 57,179, +167,243,233,248,168,189, 29, 93,201,139,187, 67,102, 5, 61,139,127, 20,151, 20,113,238,250,215,122,149, 40, 57, 63,229,252, 92, +207,214,247,237, 39,207, 94,134,205,107,150, 34,254,246,149, 92,169,123,225,143,102, 68,189,167,109,183,170,211, 91, 92, 92,172, +138,141,141,181,136,142,142, 6, 33, 4, 86, 86, 86, 16,139,197,149,138, 44, 99, 97, 48, 24,202, 63,179,179,179,145,149,149,133, +132,132, 4,236,221,187, 23,105,105,105,246, 27,172, 44, 51,236, 5,252,104,126, 62, 89,160,213,210,251, 53,208,109,239,214,173, +219, 80,119,119,119,139,138, 59, 91,183,110,141, 9, 19, 38, 96,235,214,173,184,113,227,198,239,226, 93,102,100,100,164,235,116, +186, 61,213,148,109, 62, 33,164,199,199, 31,127, 28,117,245,234, 85,203, 93,187,118, 65,175,215, 87,186,237,220,185, 19,183,110, +221, 90, 76, 41,141,171,163, 53,167,225,192,129, 3,175,236,219,183,207, 58, 43, 43, 11,217,217,217,144,203,229, 40, 46, 46,134, +193, 96,128,159,159, 31,209,235,245,126, 53, 13, 7, 58, 56, 56,156,186,124,249,114, 39, 63,191,146, 83,117, 58, 29,174, 95,191, +142,126,253,250, 21,106, 52,154,129,148,210, 28, 66,200,252, 35, 71,142,220,104,219,182, 45, 90,183,110,109,251,250,245,107, 91, + 0,149, 90,174,229,114, 57,228,114, 57,120, 60, 30,156,156,156,176, 98,197, 10,104, 52, 37,205,138,175,175,111, 69, 11,231,134, +134, 13, 27,126, 28, 23, 23,183,154, 82,250, 99, 21,237,204, 4,150,101,151, 82, 74,243, 67, 66, 66,164,251,247,239,183, 73, 77, + 77, 69, 84, 84, 20,150, 44, 89,146,101, 48, 24,244,148, 82,162,213,106, 35,184, 92,238,235, 70,141, 26,185,196,196,196,164, 25, + 12,134,197,148,210,127,253, 7,135, 8, 9,143,199,195,184,113,227,192,229,114, 97,102,102, 6,149, 74, 5,157, 78, 87, 46,226, + 81,203,225,103, 31, 31, 11, 59, 46,248,159,249,250,126, 56,125,240,180, 62, 14,206, 46,174,176,182, 20, 34, 54, 54,166,195,197, + 11,231,126,104,228,231,176,141,213,232,182,197,189,204, 79,250, 11,238,239,119, 90,228,127,116,136,112,144,193,222,254, 72,118, +106,170, 64, 43, 16,136, 19,202,172, 90, 37,226,106,144, 1,216, 15,189, 86, 87,218, 64,208,210,205, 72,129,165, 51,224, 89,252, + 99, 92,141,248, 21,246,138, 84,100,191,104, 14,240,155, 64,163, 44,128, 74,163, 45,125, 91, 51,224, 97,212, 5, 20, 22,228, 34, +160, 85, 31,128,195,169,114,104,203,202,142,244,105,223,178, 41,243, 44,233, 49, 90,251, 14,130,151,172, 35, 94,167, 23, 34, 95, +174, 70, 94,161, 10,205, 3,230, 33, 43, 79,137, 66,133, 10, 49,207,194,224,234,226,197, 33,220,196, 46,198, 10, 44,117,204, 81, +168,227,142,131, 95,175, 3, 4,126,253,192,212, 11, 68, 82,244, 37, 60, 60,189, 1, 41, 79,174,129,178, 6, 56,251,182,129,145, + 29,248,246,136,136,136,230, 31,126,248, 33,183, 75,151, 46, 1, 50,153, 44, 32, 37, 37,229, 49, 0,200,100,178,128, 30, 61,122, + 4, 56, 58, 58,226,251,239,191, 87, 48, 12,179,189,142,157,108,197,198,233,190,179,179,243,218,163, 71,143,126, 55, 97,194, 4, + 56, 57, 57, 53,170,238,191, 89, 60, 94,179,209,223,124, 67,121, 12, 67, 15,108,222,204, 95,118,230,204,186,221,123,246,240, 59, +119,234, 68, 40,165,120,240,224,129,248,219,205,155,197, 35,250,247,127,245,250,205, 27,253,229, 27, 55,180,233, 41, 41, 69,111, +138,139,151,165,165,165,101,252, 39, 42,176, 78,167,187,249,242, 69,162,172, 69,155,230, 14,247, 99, 94,196,116,239,210,190, 29, +135,195,225,196, 37,190,190,233,224, 96, 41,190, 16,113, 94,171,211,233,110, 26,195, 37, 20, 10,251,116,238,220,153,155,151,151, + 7, 23, 23, 23,100,101,101, 33, 53, 53,181,196,194, 80,144, 7,109, 65, 1,116,133,249, 48, 20,203,241,226,238, 29, 52,247,242, + 20, 30, 46,153, 4,127,160,134, 50,169,212, 50, 85,209,146, 37,176,176,128, 64, 34, 1,169,229,240, 32, 33,164,191,181,181,245, +220,252,252,252, 83,148,210, 21, 90,173, 54,116,238,220,185,173, 55,109,218,100,191,114,229, 74,203,207, 63,255,252, 48, 33,164, + 57,165, 84, 93, 21,135, 92, 46,127,174,215,235,237, 1, 56, 94,184,112, 1,142,142,142, 40, 40, 40, 40,179,172,104, 20, 10,133, + 40, 39, 39, 7,106,181, 26, 26,141, 6,150,150,150,184,119,239, 94,158, 94,175,255,181,166,244, 89,122,147, 21,106,109,236, 34, + 59,127,243, 52,173,222, 38,232, 77, 46,155,183,116,109,218,114, 0,235,122,122,123,239,212,178, 87, 94, 60,125,124,194,230,229, +221,200,220,180,167,197, 94, 59,127, 75, 44,170, 38, 31, 41, 33,132, 37,132, 80, 63, 63, 63,100,103,103,131, 97, 24,136,197, 98, + 72, 36, 18, 52,108,216, 16,201,201,201,117, 22, 88,122,189,190, 92, 92,157, 60,121, 18,233,233,233,216,191,127, 63,220,220,220, + 56, 0, 28,146,147,147,187, 13, 30, 60,184,173,157,157,205,170,156,156,188,213,213,164,243, 1, 0,203,183,202,169,147,189,189, +253, 69,181, 90,141,196,196, 68, 28, 59,118, 44,152, 82,122,185,150,207,118, 34, 33,164, 71, 96, 96,224,222,150, 45, 91,122, 83, + 74,209,164, 73, 19, 12, 27, 54, 12, 97, 97, 97,120,248,240, 33, 10, 10, 10,216,115,231,206,237, 6,176,182,182, 29,119,105,254, +250, 13, 28, 56,240, 90,120,120,184, 77, 78, 78, 14,148, 74, 37,138,139,139,113,248,240, 97,116,232,208, 1,246,246,246,216,183, +111,159,158, 82,122,162, 26, 46,145,181,181,245,169,107,215,174, 5, 55,104,208, 0, 49, 49, 49,184,112,225, 2,234,215,175, 15, +129, 64,128,145, 35, 71, 90,110,221,186,117, 10, 33,100, 53,143,199, 91, 49,112,224, 64, 24, 12, 6, 92,191,126, 61, 7, 64,174, + 17,207, 60,242,243,243,145,159,159, 15, 51, 51,179,138,207, 24, 1,176,107,195,134, 13, 99,166, 79,159, 14,111,111,239, 21,132, +144,173,149, 5,148,102, 89,118, 89,106,106,170, 35,151,203,117,210,235,245, 72, 78, 78,198,189,123,247, 16, 26, 26,154,153,147, +147, 19, 76, 41, 77, 32,132,108, 9, 9, 9,153,184,126,253,122,184,185,185, 33, 57, 57,217,125,230,204,153, 97,132, 16,252,213, + 34,203,207,207,166,177,128, 17, 78,227,243,121,118,121,121,121,229,109,135, 70,163,129, 90,173,254,157,229,138,207,231,217,181, +105, 81,239, 55,165,162,104,193,147,132,188, 42, 3,151, 55,106, 96,221, 84,108,110, 53,189,119,143,193, 35, 63,234, 49,128,209, +235,116, 56,123,246, 4,254,239,255,182,160, 83,160, 47,188, 26, 52,193,148,169,211,172,212, 26,253,188,115,231,206,204,109,223, +198,243, 76, 81, 97,254,252,234, 56, 77,168, 68, 96, 85,174, 24, 7, 25, 92, 93,145, 87,250,192,216,219,216,216,108, 54, 24, 12, +157,128,207,192,147, 56, 33,230,222,109,228,230,241,160, 86, 26,192,210, 18,145,101,148, 96, 81,107,112,229,236,113,108,220,176, + 14, 57, 57, 57, 8,252, 48, 24,114,174, 27,220,221,220,161, 82, 42, 74, 31, 22, 64,171,209,193, 65, 90, 15,247,239, 63,212, 21, + 22, 23, 87,217, 16,241, 69, 90,127,119,169, 47,212,218,118, 16, 9, 4, 40, 40,210, 32,175, 84, 92,237, 59, 50, 4,106,133, 18, +122,141, 22,122,141, 14, 14,238, 3,209, 80,218, 25,172,225, 68,227, 90,229, 18,107,128,246,229, 21,104, 95, 94,129, 89,187,169, +248,117,213,240,183, 26, 62,227, 2,194,103,102,102,102,201,100,178, 51, 81, 81, 81,125,134, 12, 25,130,200,200,200,209, 0,102, +150,118,238,163,135, 12, 25,130,168,168, 40,196,197,197,157,201,204,204,124, 47, 62, 59, 4, 2,129,170,236, 45, 79, 36, 18,137, +106, 56,215,181,117, 72, 8,167,224,254,253,194, 13,215,175, 47,221,185,107, 23,191,107,151, 46, 68,167,215,131, 53, 24,208,192, +199,135,124,244,209, 71,230, 97,135, 14,217, 49, 58,221,173,217,161,161, 23,182,142, 26, 85,116, 91, 46, 55,118, 2,121,253,210, +161, 65, 0,168, 95,205, 62,163,161, 86,171, 55,125, 49, 97,124,183, 75,145,151,221,234,215,115,181,136,184,112,229,161, 64,200, +231,120,121,120, 49,249,249,249,220,175,150,206, 55, 83,171,213, 63, 24, 73,231,111,111,111,143,140,140, 12, 60,123,246, 12,106, +181, 26, 58,157, 14,172,162, 24,154,188,124,104, 10,114, 65, 84, 74, 8, 13, 6,168,178, 51, 81,223,203, 19,248,247, 10,195,154, + 58,176, 74, 5, 86,217,167,200,210, 18,124,115, 9, 56, 60,158,209, 65,203, 9, 33, 45,219,180,105,115,232,231,159,127,230,143, + 29, 59,182, 45, 33,100, 51,165,244, 53, 33,164,203,226,197,139,239,108,222,188, 89, 56, 97,194, 4,191,181,107,215,126, 10,160, + 74,193,174, 82,169, 14,253,246,219,111, 35,234,213,171,231,248,232,209, 35,168, 84, 42,176, 44,139,158, 61,123, 2, 64,121,157, +137,143,143, 87,170, 84,170, 55,143, 31, 63, 46,124,253,250,181, 6, 70,172,250, 91,250,125,218,205,153,131,101, 33, 82, 39,215, + 91, 34,179,250, 30, 84,126,255,227,153,131,101,107,214, 31, 78, 81,157,126,254,188,104,241,100,175,213,197, 69,209,147,173,101, +242, 31, 79,159, 72, 52,102,149, 47, 45, 91,150,110,103,103, 7, 46,151, 11, 30,143, 7, 62,159, 15, 0,144, 74,165, 40, 40, 40, +168,118,136,176, 42,129, 85, 88, 88,136,130,130, 2,196,197,197, 33, 61, 61, 29, 55,111,222,132,193, 96, 64,201, 34, 69, 64, 38, +147,225,206,157, 59, 22,173, 91,183, 94, 64,248,228, 18,213, 82,163,151,141, 51, 12, 51,125,212,168, 81,208,104, 52, 24, 54,108, + 24,118,238,220, 57, 29,192,229,218,214,119, 74,233, 45, 66,136,207,195,135, 15, 45, 1,244, 27, 58,116,232,158,129, 3, 7,226, +242,229,203, 56,113,226, 68, 48,128, 4, 0, 74, 0,171, 74, 3, 43,175,170,110,129, 71,169, 43,134, 45, 14, 14, 14,253, 26, 55, +110,252,112,224,192,129, 1,225,225,225,214,111,222,188, 41, 91,212,128,151, 47, 95,226,167,159,126, 74,223,181,107, 87,161,193, + 96,176,227,112, 56,191,229,231,231, 87,181, 10, 90,100,110,110,126,250,218,181,107, 65, 13, 26, 52,192,249,243,231,177, 96,193, + 2, 4, 5, 5, 97,255,254,253,104,216,176, 33,154, 52,105, 2, 71, 71,199,201,185,185,185,237,119,236,216, 17,252,193, 7, 31, + 96,223,190,125, 72, 79, 79,223, 82,149,203,134,154,134,234,116, 58, 29, 1,208,118,195,134, 13,158,211,167, 79,199,207, 63,255, +140, 22, 45, 90, 88, 37, 54,113,246, 33, 0, 0, 32, 0, 73, 68, 65, 84, 38, 38,174, 45,107, 99,223, 18, 88,160,148,226,197,139, + 23, 80, 40, 20,184,122,245, 42,150, 45, 91,150, 85, 38,174, 0,160, 79,159, 62, 19,215,175, 95,143,193,131, 7, 67,171,213, 98, +230,204,153, 88,191,126, 61,142, 31, 63,254, 53,128,191, 76, 96, 53,244,177, 91,221,166,117,208, 92,103,215, 6,216, 23,190, 31, +185,185,185,229,121, 82,150, 47,148, 82, 20, 21, 21, 33, 35, 35, 3, 86,150, 22, 88,179,118, 69,175, 73,159,143,113, 67,137, 59, +139, 63, 54,116,222,182,107, 7, 13, 27, 63,107,216,136, 49,120,244, 48, 10, 97,123,182,227,241,163, 7,229,124,122,157, 22, 9, +177,247,144, 16,123, 15, 82,167,122,248,168,107, 48, 25, 62,124,120,207, 81, 35,134, 58, 0,248,211, 92, 64,252, 47, 89,175,170, + 28, 34,124,235,129,177,183,177,177,121,114,240,224, 65,187,192,192, 64, 70,175,215,227,204,217,179,152, 60,241, 19,124, 58,106, + 30,180,176,129, 94,195, 7,203, 23, 25,117, 65,165, 82, 1, 10,138,226,226, 98,220,184,113, 3,148,213, 35,108,199, 58, 80,202, +150, 11, 44,128, 66,163,213,194,213,221, 15, 91,118,174,212,131,199,171,178, 33, 43,204, 97, 12, 58, 61, 69,234,155, 36, 36,165, + 63,134,149,133, 59,184, 60,119,228,228, 43,192,229, 56, 65,167,138,135,161,212,124,170, 40, 78,129, 82,251,110,229,102, 40,248, +163,149,148,178,172,209,255, 87, 40, 20,135,246,237,219,247,209,250,245,235,249,189,122,245,242,150,201,100,109, 0, 32, 36, 36, +196,219,194,194, 2,251,246,237,211, 42, 20,138, 67,239,209,194,243, 97,235,214,173,145,155,155,139, 87,175, 94, 85,251,230, 97, +208,104,236, 36,142,142,204,155, 75,151,116, 89,121,121,110,157, 59,119, 38, 58,189, 30, 28, 66,144, 91, 80,128,215,175, 94,193, +218,218,154, 60,137,143,151,252, 48,101,202, 47,190, 1, 1,220,178, 21,134,198,224,196,137, 19, 98,148,204,187,170,118, 95, 45, + 31,200, 98, 66,200,232, 41, 83,166,252,242,175,127,237,179,202,200,204,124, 42, 20, 8,245, 18,137,153,243,168,145, 67,185,249, +249,249, 35, 40,165,114, 99,249,242,242,242,240,226,197, 11,152,153,153,129,207,227,129, 85, 42, 96, 40,150, 67,149,155, 5, 70, +171,129,192, 96,128,173, 88, 8, 55,169, 20,238, 14,246, 70,113, 62,187, 24, 81, 62,161,189,226,176,224,154, 54,254, 16,152, 75, + 32,176,144, 96,210,201,200,210,183, 79, 62,176,184,230,145, 97, 66,136,189,171,171,235,175,225,225,225,252,172,172, 44, 60,120, +240,224, 33,165,180,128, 16, 98, 1,128,141,141,141, 61,255,248,241,227, 62,165,171,232,106, 90,253,181,238,232,209,163,221, 2, + 3, 3,245, 30, 30, 30,230,153,153,153,238, 57, 57, 57, 36, 61,253,247,115,152, 79,157, 58, 37, 82, 42,149,197, 44,203,254,130, + 18, 63, 78, 53,250, 31,154, 57, 88, 38,186,113, 31, 83,131,186,215,111, 98,105,223, 20,185,250,251, 77,110, 61, 76,159, 58,115, +176,108,211,250,195, 41, 42, 51,162,222, 67, 12,201,110, 92,145,106,175,145,229, 77,237,237,237, 65, 41,197,157, 59,119,112,237, +218, 53, 92,185,114, 5,175, 95,191,254,183, 85,219,202, 10,231,206,157, 67,167, 78,157,106,243, 92,194,217,217, 25, 54, 54, 54, + 8, 11, 11,195,254,253,251,203, 39,186,151, 33, 59, 59, 27, 98,177, 24,235,215,175,151, 12, 26, 52,232,107, 0, 31, 25, 41,132, + 61,187,117,235,214,219,217,217, 25, 57, 57, 57,112,114,114, 66, 96, 96, 96, 95, 66,136, 7,165,244,101, 29,171,254,164,238,221, +187,175, 88,182,108, 25,116, 58, 29,198,141, 27,135,167, 79,159, 30,122,250,244,233, 70,119,119,247,169,115,230,204,145, 74,165, + 82, 12, 25, 50,196, 28, 64, 72, 85, 36,182,182,182,171,182,111,223, 62,162,119,239,222, 28,173, 86,251,225,197,139, 23,241,234, +213, 43,104, 52, 26,232,245,122, 60,127,254, 28,161,161,161,233, 57, 57, 57, 65,148,210,231, 70,164,107, 94, 68, 68, 68,144,191, +191, 63, 78,158, 60,137,144,144,144, 75,214,214,214,190, 77,155, 54,117,118,113,113,193,225,195,135, 97,105,105, 9,119,119,119, +219,149, 43, 87,118, 30, 48, 96, 0, 78,158, 60,137, 25, 51,102, 68, 2, 88, 93,151,140, 96, 89,150,108,216,176, 33, 96,195,134, + 13,178, 50,113,197,225,112,112,240,224, 65, 60,124,248,176,127,101, 2,139, 82,186,212,217,217,121,169,179,179,179, 40, 34, 34, +194,170,126,253,250,208,235,245, 26, 74,105,130, 76, 38, 75,117,113,113,177, 22, 10,133, 88,176, 96, 1, 10, 11, 11, 63,141,143, +143, 15,107,214,172, 25, 29, 57,114, 36,252,253,253, 93,255,202, 78,154,225,144,209,223, 44,159,141,187,247,227,113,244, 40, 31, +119,239,222,133, 84, 42,133, 80, 40, 4,165, 20,106,181, 26, 89, 89, 89,208,105,213,104,210,216, 19,123,119,173,198,155, 55, 89, + 0,135, 84, 57,181,134,112,200,200, 49,159,124,140,171,215,206, 98,235,214,237,144,203,139,171,120,233, 22,161,129,175, 63, 92, + 93, 28,145,156,146, 12,194,129,253,159,121,175,255,144, 33,194,127,195,218,218,122,227,129, 3, 7,236, 58,117,234,196, 20, 23, + 23,131,101, 89,116, 12, 12,196,212,233,211,113, 34, 60, 28, 62,109,135,129,104, 36,208,139,141, 91,197,160, 82, 42,208,168, 69, +123, 12, 30, 50, 20, 73,175, 95,163,123,159,129, 80,169, 20,229,111, 20,101, 22, 44,141, 70, 11,123, 71, 55, 68, 68, 68, 48, 24, + 55,238, 73,149,162, 64, 43,136, 78,120,174,234,144,175,188,143, 27,119,195,160, 85,107,209,164,201, 98,104, 89, 59, 56,202, 62, +135, 78,119, 12,133, 89, 23, 75,134, 43,236, 58, 33, 37, 41, 9, 28,134,255,164,174, 25,198, 22,103,213,250,237,234,173, 14,188, +208,217,217,249,248,205,155, 55, 7,135,132,132,224,220,185,115,159,150, 10, 44,220,188,121, 19, 47, 94,188, 56,158,151,151, 87, +248, 62, 10, 87, 38,147,245, 12, 14, 14, 14,105,221,186, 53, 78,158, 60, 9,131,193,112,195,168, 7,154,199,163, 28, 14, 7, 44, +203,130, 0,200,201,207,199,211,167, 79,145,147,157, 13,157, 78,135, 98,185,156,245,247,245,149, 83,150,181,168, 77,122, 42,174, + 24, 68, 37,171, 8,203,246,213, 65,100,189,150, 72, 36, 73, 69,114,185,131,165,141,109,145, 72, 32, 48, 20,228, 23, 20,196, 60, +121,164, 49,178, 83, 40, 67,236,227,199,143, 3,210,210,210,144,148,148, 4,125,113, 17, 24,181, 6, 28,181, 2, 93,218,183,131, + 25, 40, 68, 96,193, 99,117,224, 49, 60, 20,149,172,182,139,173, 81,148,235,116,127,176,100, 17, 66, 74,134, 5,205,205, 33,144, + 88,252,206,162,101, 76,125, 18, 10,133,225,135, 15, 31,118,118,117,117,197,242,229,203, 33,147,201, 26, 54,105,210, 68,209,177, + 99, 71, 51,169, 84,138, 70,141, 26,161,125,251,246, 56,125,250, 52, 0, 60,175, 33,255,244,132,144,143,174, 94,189, 58,235,250, +245,235,131, 9, 33,100,222,188,121,232,209,163, 7, 68, 34, 17, 20, 10, 5,242,242,242,176, 99,199, 14, 66, 41,109, 81,154,214, +122, 34,145,104, 63, 33, 36, 69,169, 84, 14,121,155, 51,108, 67, 83,151, 55,185,236, 56,169,147,235,199, 65,221,235, 55,233,220, +189, 43, 60,125, 58,163,115,247, 36, 0, 88,109,203,125, 53,108,205,162,128, 95,236,221,108,127,138, 56,115,110,105, 96, 80,231, +133,243, 38,216,172, 88,189,189,230,186, 79, 8,129,193, 96, 0,151,203, 5,135,195,169,212, 74,197,229,114,193, 48,198, 77, 69, + 49, 24, 12, 41, 3, 6, 12, 40,255,157,150,150,102,239,230,230,198, 41,179, 92, 1, 64, 65, 65, 1,146,147,147,161,211,233, 96, +103,103, 7,173, 86,219,180, 22,245,106,234,216,177, 99,137, 82,169,196,248,241,227,177,115,231, 78, 12, 27, 54,140, 92,190,124, +121, 42,128,233,181,173,239, 28, 14,103,205,156, 57,115,102,133,134,134, 34, 55, 55, 23,167, 78,157, 66,207,158, 61,113,240,224, + 65,135, 83,167, 78,125,211,169, 83, 39, 48, 12,131,147, 39, 79, 66,175,215,199, 87,199,197,231,243,251,245,238,221,155,147,156, +156, 12, 62,159,143, 86,173, 90, 33, 37, 37, 5, 10,133, 2,169,169,169,152, 54,109, 90, 70,169, 85,231,185, 17,229,194,107,208, +160, 65,104,195,134, 13,113,238,220, 57, 12, 26, 52,232,178, 78,167,235,157,149,149, 21,154,151,151,247,221,200,145, 35, 17, 16, + 16,128,132,132, 4,116,235,214, 13, 29, 58,116,192,169, 83,167, 48,126,252,248, 72,157, 78,215,187, 26, 63, 88, 69,111,222,188, +177,242,246,246, 70,102,102, 38,228,114, 57,110,222,188,105, 25, 25, 25,233,225,226,226, 98,157,152,152, 72, 23, 45, 90, 36,158, + 62,125, 58, 54,110,220,136, 7, 15, 30, 32, 44, 44, 12,157, 59,119,214, 61,123,246,172, 82, 43,107,118,118,246,118, 0,219,109, +109,109, 51,205,205,205, 81, 84, 84, 4,137, 68,242,185, 76, 38, 75,189,113,227,134,139,155,155, 27,114,114,114, 48,113,226, 68, + 40,149, 74,184,187,187, 55, 88,185,114, 37,146,147,147,145,151,151,247,151,118,210,172,129, 5,192,194,195, 77,130,179, 39,118, + 33,234, 97, 34,162, 30, 62,134, 64, 88, 50,185, 93,169, 84,160, 69,147, 6,104,219,170, 13,210,210, 83,241,175,176, 93,176,181, +119,173,182, 29,161,148,130,207, 53,192,223,215, 9,225, 97,219,113,242,212, 5,132,253,107,127,249,156, 54, 46,151,135,230, 45, +218,162, 85,171, 64, 36,190,120,142, 93,187,182,194,193,209,205, 52,230, 87,215, 33,194,138,159,111,189, 29,116, 14, 12, 12,100, +228,114, 57, 84, 42, 21, 50, 50, 50,240,234,213, 43, 88,219, 88, 35, 49,237, 37,130,197, 90,100,176,133,136,125,248,196, 64, 24, +222,131,154, 46,216, 59,168, 57, 16,212, 28,147,199, 14,171,186,240, 65, 97,110,105, 15,181, 90, 13,173, 78,247, 12,155, 54, 85, +249,166,172, 55,232,206,159, 61,119,177,205,216, 79,251,241, 34, 46,238,132, 78,195, 66,169,179, 66,177, 74,131, 98, 45, 15, 28, +171,158, 64,246,101, 48, 92, 33, 62,104,214, 0,191, 28, 61,173,165,122,221, 5,163, 51, 72, 26, 0,125,230,227, 10, 2,235,205, +239,142,139, 44,108,141, 30, 34,172,144,167,191,132,135,135,247,106,215,174,157,184, 83,167, 78, 94,165, 29,166, 38, 60, 60, 92, + 81,106, 29,168,173,234,255,157,247,118, 87, 87,215,166, 92, 46, 55,164, 79,159, 62, 77,199,140, 25,131, 39, 79,158, 96,223,190, +125,207,124,125,125,175, 85, 43,172, 4,130, 28,249,155, 55,214, 18, 15, 15,174,141,133, 69,218,233, 83,167,234,117,237,214,141, + 36, 37, 37, 33, 39, 39, 7, 42,149, 10, 15, 30, 62,164, 60,134, 73, 33,150,150,156,248,251,247, 57,140, 64,144, 83,139,164,190, +170, 97, 21,225,170,186, 90,179,220,156,109,188,151,206,255,194, 83,165, 82, 5, 20, 22, 22,234,185, 60, 30, 79,230,100,253,186, +150,195,141, 39,207,159, 63, 63,160,107,215,174,194,132,232, 7,208, 23, 20, 64, 83,144, 7, 62,107,128,109,139,102, 96,180,106, + 64,163,131,171, 63,133, 42, 95,140,203,183,227,117,106,181,186,198, 72,237,101, 2,139, 83,193, 25, 32, 0, 8, 36, 18, 8, 45, + 44, 33,148, 72,222, 30, 66, 36, 53,148,183,184, 95,191,126, 93, 62,248,224, 3, 80, 74,177, 99,199, 14,104,181, 90,129, 86,171, +133, 70,163,129, 86,171, 69, 97, 97, 33,194,194,194,176,101,203,150,235, 0,118, 27, 33, 82,245, 60, 30, 47, 84,175,215, 59, 10, +133, 66,173,131,131, 3,255,208,161, 67,229,110, 35,154, 55,111, 14,115,115,115, 53, 33, 68, 11, 0, 78, 78, 78,186, 61,123,246, +112,251,247,239,207,175,140,207,175, 73,195,217,158,122,155, 32,145, 89,125, 15, 75,251,166,240,244,233, 12, 0,232,214,103, 44, + 60, 27,184,163, 48, 59,218, 67,165,124,245, 49,159,155,103,243,100, 83,106,140, 89,239,128, 49,197,111, 34,159, 2,216,101,228, + 51,132,174, 93,187,162,123,247,238,229,195,129,142,142,142,208,104, 52,149, 46,231,175, 14,101, 78, 68,151, 45, 35, 28, 44, 5, + 54, 88, 89,102, 0,112,168, 40,174,146,146,146,144,148,148, 84,102, 21,174,177,140, 42,148,149,153,143,143,207,232, 22, 45, 90, +224,212,169, 83,184,123,247,110,234,217,179,103, 93, 3, 3, 3,225,225,225, 49,134, 16,178,128,210,170,125,232, 85, 54,164,247, +225,135, 31, 78, 9, 13, 13,197,227,199,143,241,197, 23, 95,228, 36, 39, 39,255,114,232,208,161,241, 75,151, 46,229,116,239,222, + 29,233,233,233, 88,179,102,141,225,218,181,107,107, 1, 44,175,161,220,227,146,147,147,101, 42,149, 10,185,185,185,208,235,245, + 80, 40, 20, 56,125,250, 52,194,194,194,202,230, 35, 61, 51, 50,121,182,129,129,129, 54, 79,159, 62,197,174, 93,187,160,209,104, + 22, 82, 74, 85,132,144,221,115,231,206, 93, 32,149, 74,173,186,117,235,134, 22, 45, 74,124,193, 29, 60,120, 16,211,166, 77,139, +212,104, 52,189,107,200,131,245, 78, 78, 78,159,127,241,197, 23, 13,103,206,156,137,215,175, 95, 91,158, 58,117,170,195,141, 27, + 55, 72,153, 16,178,179,179,195,198,141, 27, 49, 99,198,140,221, 0, 50,111,223,190, 61,250,249,243,231, 95, 83, 74,183,214,112, +255, 75,101, 50,217, 82,150,101,197,221,186,117, 59,189,110,221, 58, 50,120,240, 96,104, 52,154,114,215, 7, 54, 54, 54,123, 5, + 2, 1, 58,118,236,136, 89,179,102,129, 97,152,145,127,117, 71, 77,169, 1,138,188,199, 48,168,109,208,188,137, 31,154, 7,212, +199,217,139, 81, 0,128, 46, 3, 3,161, 40, 46,194,158, 61, 59,240,236,217, 83,112,121, 60, 88,219, 58, 25,245, 12,105, 10,227, +144,175, 77, 71,215, 78,173,208,179,123, 48,118,239, 61, 8,189, 78,139,241, 99, 71, 32, 47, 63, 31,123,247,238, 66,226,139,231, +224,242,120,176,179,119,249, 11,238,179,106, 45,242, 63,105,193, 42,107, 80, 88,150, 69,106,106, 42,238,221,187,135,151, 47, 95, + 66, 44, 22, 67,169, 55,176, 91,207, 95, 99, 9,225,167,176,148, 94,167,250,114,175,194,127,228, 48, 24, 82, 43,120,152,181,178, +177,177, 17,168,213, 74,232,245,186, 10, 45, 21, 1, 8,192,231, 2,206, 46,158, 72, 78, 74,166, 74,149, 42,178,218, 55, 48,181, +106,227,241, 95, 14,135,182,239, 16,104,223,179,203, 50,252,114,108, 49,242, 10, 11,161,210,242, 80,172,210, 66,161, 2,172,109, +125,209,186, 73, 83,164,165,229, 32,250,238,101, 57, 87,173, 48,102, 2,232,211, 31, 22,142,245, 25, 59,121, 54,204,234,117,128, + 58,246, 23,176,242,204,114, 11,150, 72, 98, 3, 91,119,127,228, 23,171,113,248, 66, 20, 0, 24, 29,146, 37, 51, 51, 83,225,236, +236,124,100,210,164, 73,171, 31, 60,184,239, 9, 0,119,238,220,121,145,150,150, 54, 47, 51, 51, 83, 81,155, 2,172,224,189,157, +152,153,153,221,246,241,241,121,217,179,103, 79,203, 1, 3, 6,192,193,193, 1, 81, 81, 81,248,246,219,111,159,106, 52,154, 37, +145,145,145,213, 14,233,104, 52,154,212,168, 99,199, 44,131, 63,249,196,122,118,223,190,107, 66, 67, 67, 55, 46, 95,190,156,231, +227,227, 67,116, 90, 45, 30, 61,122, 68,195,247,237,211,109,153, 63,127,131,192,220,156,123,231,248,113,158, 94,173, 78,253, 79, + 87, 98,153, 76, 22,212,171, 71,144,255,218,245,155,160, 82,202,113,251,198,111,200,203,203,194,246, 29, 71,253,101, 50, 89, 80, + 74, 74,202,101, 35, 45, 25, 7,127,250,233,167, 89,109, 91,180,104,225,229,230,134, 71,175, 95, 66,192, 26,192,215,235,193,104, +213,224,232, 85,112, 11,160, 32, 28, 11,164,103, 20, 98,229,129, 35,143, 13, 6,195,193,154,120, 27,246,234,135,229, 41, 5, 32, +132, 96, 93,187, 0, 8, 44, 36,224,155, 75, 48,233,215,139,229,162,234,228,242,249, 16, 72, 36,240,110, 27,104, 76, 35,164,176, +176,176,184,247,232,209,163,214, 1, 1, 1,152, 53,107, 22, 94,189,122, 5,150,101,145,153,153,169, 74, 79, 79, 79,205,202,202, +122, 5,224, 23, 0, 59,169,145,111, 0,122,189,222, 49, 42, 42, 10, 0,248, 0,112,225,194, 5,184,184,184,192,202,202, 10,133, +133,133,152, 61,123,182,112,201,146, 37, 0,128,123,247,238,241,202, 38, 24, 87,134, 71, 81,177,107,243,139,104, 30,149,223,255, + 56, 87,127,191, 73,231,238,201,232,214,103, 12,206,157,220,141,139,103,207,195,150,251,234, 37,204,139, 78,103,191,204, 46, 76, + 41,246,217,230,223,114, 60,147, 94,124,118,219,212,254, 54,140,179, 51,123,120,222,150,130,252, 26,242, 0, 12,195,148,207,193, + 42,155,208, 94, 91,113, 85, 17, 75,151, 82,150,128, 16,123, 1, 63, 58, 57, 57,185,155, 76, 38, 67,102,102, 38,146,147,147,145, +148,148,132,228,228,100, 52,104,208, 0,137,137,137,224,243,249, 15,140,164, 29, 49,100,200, 16, 11,141, 70,131,253,251,247,235, + 1,244, 57,124,248,240,189,214,173, 91,115,123,244,232, 97,241,227,143, 63,142, 0,176,179, 22,201, 52,183,180,180,228,107,181, + 90,252,248,227,143, 72, 78, 78, 14,162,148,198, 18, 66,182, 13, 25, 50,100, 75, 64, 64, 64,131,199,143, 31, 63,149,203,229,147, + 40,165,209, 70,180, 69, 99, 91,181,106,117,152,101,217,122, 93,187,118, 53, 95,191,126,189,101,124,124, 60,100, 50, 25, 88,150, +125, 84,203, 80, 83,185,231,207,159,207,107,223,190,189, 77,233,132,246,149,132,144,175, 25,134, 89, 29, 18, 18, 98, 21, 30, 30, +142, 83,167, 78, 65,163,209, 32, 46, 46, 46,235,241,227,199, 63, 0, 88, 91,221, 2,140,210,178,126, 1, 96, 46, 33,164,233,182, +109,219,134,185,186,186,142,184,113,227, 6,185,122,245, 42,214,173, 91,167, 95,188,120, 49,183, 84,252,188, 0, 48,190,180,190, + 47, 48,114, 68, 97, 59,128,237, 50,153, 44,117,221,186,117, 22, 87,175, 94, 69, 70, 70,134, 15,128,182,173, 91,183,222,187,117, +235, 86,216,217,217, 33, 57, 57, 25,237,219,183, 55, 16, 66, 70,218,216,216, 28,108,218,180, 41,162,163,163,255,170, 38, 78,167, +213,106, 96,105,235, 9,121,126, 18,178,146,111, 64,108,225,132,238,157,155, 65,161,212,224,196,241,159, 17,253,232, 33, 56, 28, + 14,164, 78,110,176,182,177, 71, 66,194, 83, 0,136,169,158, 83, 11, 11,155,250,144, 23, 36, 67,243, 38, 10,102, 18, 71,140,249, +228, 99, 40,148, 90, 28,253,229,103, 60,126, 28, 13,134, 97,224,228,236, 6, 43,235, 18, 78, 66,171,229, 52,161,182, 2,139, 97, +152, 75,103,206,156, 25,212,182,109, 91,238,179,103,207,240,236,217,179,178,138,169, 39, 48, 28,201,140, 62, 54,188,154,206,191, +107,153,175,140,138,177, 5, 37, 22, 22,169,241,113,177,210,188,220, 76, 60,188,127, 13,207, 18, 30,225,101, 98, 44,180, 90, 21, + 24, 14, 7, 28,134,131,250,158,141,113,237,250, 13,141,198, 96,184, 89, 21, 39, 0,228,230, 62, 47,146, 72,125,135,174, 88,190, +224,228,140,217, 95,153, 13, 30,180, 21,209,241, 49,144,235,157, 64, 41,224,100,103,142,230, 94,115,144,154,150,133, 3,187,127, + 84,176, 90,237,200,138, 62,176, 42,227, 4, 0,105, 54, 26,109,217,177,123,220,206,176,240,175,102, 79,153, 32,237, 31, 50, 18, +130,220, 24,232,210,162,224,217,186, 39,136,208, 26,167, 34, 46,226,242,189,152, 76,214, 64,191,146,230,224,255,106,226,172,136, +130,130,130,187,153,153, 25,158, 21,188,182,123, 10,133,162,187, 53,136,169,174,111,249, 5,250,157,135,120,134,225,180, 93,190, +124,121,177,179,179,179,230,241,227,199,216,182,109, 27,123,239,222,189, 75, 2,129, 96,123, 90, 90,154,186, 38, 78, 7,157,238, + 97,248,188,121,141,218,132,132,208,225, 83,166, 40, 32, 20, 78, 93,179,110,221,188,172,188, 60, 23,202,178,112,176,181, 77, 89, + 51,127,254,170, 65, 67,134,228, 61,185,118,205,236,198,177, 99,102, 2,189, 62,170,166,116,190, 15, 84,199,153,146,146,114,217, +199,219, 29,123,118,174,135, 86,171, 70,122,106,137,225, 42, 59,167, 0,213,137,171,183, 57, 75, 7,255, 67, 22, 45, 89,114,107, +209,140,233, 78, 31,118,233,138,164,135, 15,160,205,205, 2,209,233,193, 35, 92, 20,191, 17,227, 77,166, 28,115,255,117,232,141, + 92,161, 8,121,219,145, 99, 85,233, 44,179, 80, 9, 45, 45,192, 55,151, 64, 32,177,248,157,213, 74,100,105, 9,129,185, 4, 92, +129,160,178,201,240,127,224,148,203,229, 3, 7, 13, 26, 20,125,231,206, 29,155,241,227,199,163,125,251,246,247,149, 74,101, 39, + 74,105, 81, 93,243,147,203,229,190,105,217,178,165, 35,143,199,211,143, 27, 55,142,155,157,157, 93,238, 9, 93, 46,151,227,244, +233,211, 40, 91,114,255,228,201, 19, 52,110,220,184, 74,206,241,115, 30,165, 2, 88, 62,115,176,108,205,173,135,233, 83, 1,172, +246,108,224,134,139,103,207,227,234,197, 27,243, 62, 8, 96, 55,245, 26,217,250,107,113,167, 33,179,253, 91,142,103, 36,150,206, +216,123,244,103, 38, 54,106,215, 74,133,226,145, 55,128, 47,171, 74,103,233, 42,174, 63,184,100, 80, 42,149, 70,137,171,234,234, + 18, 5,165,252,124,178, 96,240,224,193,109,111,223,190,109, 33,145, 72,160,213,106, 65, 41,133,183,183, 55,184, 92, 46,126,248, +225,135,226,236,236,236,197,198,112,154,155,155,135,118,239,222, 29,113,113,113,184,123,247,238,207,148,210,104, 66,200,207,207, +158, 61, 27,218,177, 99, 71,236,222,189, 59,180, 42,129, 85, 21, 39,203,178, 21,125, 30,229,150,214,221,135, 0, 62,168,237,189, +151, 58, 11,237, 0, 0,118,118,118,201, 82,169,212,242,225,195,135,112,119,119,135, 86,171,109, 91,155,186, 68, 41,213, 17, 66, + 54, 71, 70, 70, 46,233,208,161, 3, 66, 67, 67,131, 34, 35, 35,131, 58,116,232, 0,127,127,127, 92,188,120, 17,251,246,237, 59, + 98, 48, 24, 38, 1,200,167,148, 26,106, 83, 70,165,130, 49,186, 73,147, 38, 35,220,220,220,176,110,221, 58,109,116,116,244,180, + 21, 43, 86,108,120,240,224,129,176,113,227,198,156,232,232,104,182, 46,229,110, 99, 99,131, 50, 78,107,107,235,103, 26,141,166, +173, 64, 32,192,192,129, 3,161, 86,171,145,150,150,102,176,181,181,229,254, 39,218, 58, 74,200,194,241,159, 77,221,246,217,248, + 17,162, 86, 45,155, 67, 81,152, 2,165, 60, 19,138,162, 12,252,176, 51, 2,132,112,224,224,224, 12, 71, 39, 25, 94,191, 78,194, +245,223, 78,105,138, 21,202,141, 2, 29,187,186,122,206, 41, 37,156, 45, 74, 56, 21,197,111,160,148,191, 41,231,116,116,116, 41, +229,124,141,107, 55, 78,169,148,197,197,235, 53,148,124,247,103,222,251, 63, 78, 96,229,229,229, 77,155, 48, 97, 66,167,185,115, +231,218,233,245,122,198,214,214, 22,175, 95,191,214, 31, 57,114, 36, 87, 46,151, 79,171,211, 69,121,188,104, 31, 95,191, 78,253, +251,247,215,247,235,215,151, 63,106,108, 15,174,131,163, 35, 10,242,115,144, 16,247, 0,241, 49, 81,240,241,107,134,165,203, 55, + 0,214,214, 53,174,212,145,103, 38, 92,146, 72,125,251, 44, 91,244,229,193, 14, 65, 31, 89,250, 53,110,198,111,238,109, 5,173, + 78,143,148,148, 20, 28, 63,246, 80,251,248,222,213, 66, 86,175, 25, 90,156,101, 92,168,156,200,146, 9,188,219,155, 72,201,190, +111,214,252, 48,235,199,237,123,102,207,157, 58,222,188, 99, 96, 55, 60, 58,191, 27, 63,159, 60, 88,172, 82,107,214,240, 25,172, +123,148, 77, 21,181,205, 3,149, 74,165,123,123,234,136, 74,165,210,189,107,129,238,217,179, 7, 25, 25, 25,218,228,228,228,243, +122,189,254,151,218,172, 70,220, 68,169, 38,132,144,243,139, 2, 3,123, 44, 58,123, 86, 52,122,206, 28,205,200, 81,163,190,132, + 90,173,133, 64, 64,185,230,230, 28, 8,133,188, 39,215,174,153,125, 63,113,162, 45,209,104,206,237,174,225,237,243, 45,188,247, + 85,132, 21, 44, 88, 24, 61,126, 6,148, 21, 44, 88, 55,239, 38,160, 54, 22,172,210, 70, 60,137, 16,242,193,212,133,139,142, 14, +237,222,197, 63,160, 94,125,161,131, 71,125, 72,156,156,144,147,149,133,107,119,227,117,203, 15, 30,125, 92, 42,174,140,242, 11, +195,178,108,249, 42,183, 46,211,230,130, 48, 12, 80, 42, 4,202, 86, 2,121,180,110, 15,194,229,194, 64, 89,168,213,106,106, 68, + 58, 83, 8, 33, 3, 71,142, 28,121,225,228,201,147,156,238,221,187, 55,255,229,151, 95,216,119,169, 59, 58,157, 78, 86, 42,180, + 10,197, 98, 49,119,204,152, 49,208,233,116, 80, 40, 20, 40, 40, 40, 64,108,108,172,122,240,224,193,194, 82,225,160, 27, 58,116, +104,141,237,199,250,195, 41,170,153,131,101,155,108,185,175,134, 21,102, 71,123,216,114, 95,189,252, 32,128,221,180,254,112,138, +106,217, 12,235, 21,217,175, 46, 39,164, 23,159,221,182,247,232,207,204,167, 31, 15, 52,200, 36, 79,231,137, 28,233,145,206,125, +107,236,132,254,224, 84,244, 29, 60,224,255, 14, 90, 45,189,111,103,103,179,170, 77,155, 54, 11,214,175, 95, 47,113,112,112,128, + 94,175,199,139, 23, 47,176,121,243,230,226,188,188,188,149,148,210,123,198,112,249,250,250,122,112,185, 92, 28, 56,112, 0, 0, + 54,151,238,222,252,203, 47,191, 12, 29, 63,126, 60,234,215,175,223,136, 16, 34,164,181,120,142, 40,165,229,163, 10,239,185, 99, + 79,252,254,251,239, 93,157,156,156,200,233,211,167,245, 12,195,156,168, 3,205,170,125,251,246,181, 99, 89,182, 75,199,142, 29, +209,160, 65,131, 50,139, 39,142, 29, 59,118,208, 96, 48,140,172, 78, 88, 25,131,216,216,216,171,201,201,201,195,102,205,154,197, + 95,191,126,253,134,153, 51,103, 10,147,147,147, 17, 19, 19,115,251, 29, 56,175, 39, 39, 39, 15, 41,229, 84, 89, 90, 90, 10,191, +249,230, 27,204,152, 49,131,198,197,197,141,182,181,181, 13,251, 79,117,210,113, 79,115,194,154,120, 73,207, 46, 95,177,126,137, +183,151,199, 23,227,198, 12, 97,124,125, 26,163,184, 32, 5,118,246, 82,200,220, 60,145,245, 38, 27,103,206,156, 54,100,103,231, +255,100,224,144,101, 79,159,230,164,189, 11,167,171,204, 19,111,222,188,193,169, 83,167, 12,249,121,133, 59,160,227, 44,143,121, +149,151, 9, 19,106, 61,230, 89,227, 6,192,222,198,198,102,191,165,165,101,166,165,165,101,166,141,141,205,126, 0,246, 70,252, +175,107,249,119, 74,153,223,109,131, 6,137, 32, 18,125, 0, 46,119,166,181,141,205,105, 43, 43,171,156,224,224, 96,205,182,109, +219, 84,177,177, 79,216,212,212,100,106,101,101, 85, 88,118,126,101,156,111,111, 54, 54, 94, 22,230,206,141,151, 88,201,154, 95, +147, 56, 55, 42,146, 56, 55, 42,178,146, 53,187,110,238,220,232, 43, 27, 27, 47, 11, 99,210, 89,213,230,233, 8, 7, 31,123,252, +232,231, 64,148, 62,246,248,209,211, 17, 14,198,222,123, 53,231,172, 34, 4, 6, 66, 96, 64,201,114,106,212,150,179, 2, 7,203, + 48,204,110,119,119,119, 39, 0,140, 49,229, 90, 21,231, 40,160,254, 40,161,240,179,195,243,230,141,126, 25, 25, 57,178,240,197, +139,225, 5,137,137, 67, 30, 28, 60, 56,116,243,208,161,163,134, 11,133,159, 15, 2,188,140,229,116,118,118, 94, 21, 21, 21,117, +210,216,205,217,217,121, 85,109,243,211,203,211,245,108,247,174,109,105,232,132, 16, 26, 58, 33,132,118,239,218,150,122,121,186, +158,173,107, 25, 1, 32, 12,195, 12, 19,139,197,251,205,197,226, 71,230, 98,241, 35,177, 88,188,159, 97,152, 97, 0,136,177,156, +118,118,118,247,164, 82,105,102,109, 54,123,123,251,251,181, 72,231,112, 15, 15,143,100, 14,135,179,193,216, 50, 55,130,179, 61, +195, 48, 5, 0,180, 21, 55, 46,151,155, 82,225,156,122, 66,161,240,166, 72, 36, 58,100, 12,231,119, 11, 27, 47,185, 30, 49, 57, +250,187,133,141,151,188,125,108,202, 0,155,177,183, 46, 44,203,153, 50,192,102,172, 49,233,116,116,116,140,116,116,116, 76,119, +116,116, 76,151, 74,165,213,110,246,246,246,247,234,242,108, 82, 74, 1, 30, 90,219,219,219, 71, 88, 90, 90,102, 89, 90, 90,190, +177,183,183, 63, 11,160, 85,109,242,147,195,225,172,110,212,168,145,138, 97,152,255,123,235,252,181,222,222,222, 42, 46,151,187, +166,150,207,187,101,199,142, 29, 13, 15, 31, 62,164, 65, 65, 65, 20,128,205,123, 44,119, 39, 27, 27,155,211,150,150,150, 73, 22, + 22, 22, 63, 0, 48,175, 11,103,233, 16,243, 60, 47, 47,175,140,224,224, 96,234,229,229,149, 4, 96, 50, 0,206,123, 74,103,203, +144,144, 16,109, 82, 82, 18,165,148,210,164,164, 36, 26, 18, 18,162, 5,208,242, 29, 56, 91, 87,193, 57,234, 93,219,249,218,110, +213,113,250,123,218,123, 53,108, 96,115,104,196,192, 64, 54,226,248, 6,186,116,193, 23,180, 91, 80, 99,234,231,109,115,212,199, +199,206,231,125,112, 46, 89, 48,129,118,253,176, 17,235,239,101,115,208,223,211,222,235,175,188,247,255,181,141,212, 49, 84, 85, +173, 77,157,196, 24,239,178, 46, 46, 46,200,201,105, 43,226,114, 3,133, 66, 97, 39, 14,135,115, 37, 55, 59,123, 74,137,233, 30, +134,255,196,240,211,219,240,246, 38,130,170, 66, 7,212,133,243,237, 9,234,117,225,172, 13,135,177,156, 85, 5,123,102,213,234, + 52, 59,189,254,222, 38, 90,117, 30,188,205, 41,147,201, 62, 99, 89,214,195,216, 52,113, 56,156,151, 41, 41, 41, 59,235,146,159, +190,190,190,244,233,211,167, 70, 77,146,252, 79,215,165,127, 18,103,216,134,166, 46,126, 77, 26,206,126, 20, 21,187,182,116,248, +176, 28,203,166,218, 90, 4,118, 14, 94,124,237, 98,228,215, 75, 55,229, 22,253,175,221, 59, 33,132, 83,217, 60,184,178,181,232, +181,229,228,243,249,219,218,180,105,243,217,173, 91,183,254, 79,175,215,127,254,119,189,247,210,208, 70, 2, 90, 59, 43,183, 81, +233, 36,132,180,100, 24,102,102,163, 70,141,218,198,196,196,220, 54, 24, 12,235, 41,165, 81,127, 55,206, 63,171,126, 54,242,177, +107, 69,105,185,179,236,149,177,207,114,238,188, 55, 78,202, 26, 88,202,172,136, 79,204,190,255, 87,223,251, 63,110,136,240,189, + 89,202, 74, 5, 82,181, 72, 75, 75, 6,144, 12,224,240,223, 53,195,140, 17, 87,181,180, 32,102,254, 29, 56, 42, 27, 46, 4,112, +227,125,112,189, 45,150,254, 76, 36, 36, 36, 16,211, 99,253,247,195, 39, 51,162,211, 0, 76,111, 85,137,107,170, 82, 81, 53,187, + 83,191,255,217, 81, 2,182,138,253,117,122,187,213,106,181, 95, 16, 66,102,214,102,245,225,127,232,190, 41, 0,245,159,196, 29, + 5, 96,248,223,157,243,207, 66,204,211,156,123, 0,250,254,221, 57,255,233,224,152,178,192, 4, 19, 76, 48,225,191, 78,180, 41, + 77,185, 96,130, 9,127,111, 16, 0, 93,171,120,128,141, 54,253, 17, 66,186,214,161,129, 56,111,226, 52,113,154, 56, 77,156, 38, + 78, 19,167,137,243,159,197,249, 79,122, 19,250,211, 54,252,197, 19, 0, 77,156, 38, 78, 19,167,137,211,196,105,226, 52,113,254, +119,114,254,175,109,166, 33, 66, 19,254,116,252, 16, 66, 92,127, 8, 33,174,127,214,249, 38,152, 96,130, 9, 38,152,240,119, 3, +247, 63,157, 0, 66,136, 11, 74, 28,228,121, 3,136, 7,112,149, 82,154,247, 14,124,246, 0,134, 16, 66, 6,151, 90,232, 14, 3, + 56, 68, 41,205, 54,230,255,102,102,102,153, 42,149,202, 17, 0, 68, 34,209, 27,149, 74, 85, 49,230, 0,169,176, 1, 0, 45,219, +170,155,176,234,233,233,153,169, 86,171, 29,141,184,124, 1,165, 52,154,195,225, 60,146, 72, 36, 23,227,227,227, 79,214,230,222, + 59,119,238, 60,154, 97,152,149, 0, 96, 48, 24, 22, 94,188,120,113,207,159, 88,110,109,221, 92,156,118,107,117, 90,125,102, 86, +238, 98, 74,233,241,202,206,219,210,151,172,226, 18,204, 46,253,190,102,210, 9, 58,191, 58,222,218,158, 95, 77,250, 90,241,120, +188, 80,169, 84,218, 51, 37, 37,229, 30,128, 57,148,210, 26,189, 16,187,187,187,127,194,229,114, 71, 26, 12, 6, 47,134, 97, 18, +245,122,253,190,164,164,164, 48, 83, 83, 97,130, 9, 38,152, 96,194,159, 38,176, 26,218, 19, 39, 10, 12, 3, 65, 55, 80,156, 35, +192,129,184,108,154, 97,236,255,123, 55, 36, 58,157,190,228,154,124, 14, 12,167,159,115,118,244,238,221, 91, 54,101,202, 20,180, +111,223, 30,183,110,221,106,247,211, 79, 63,141,101, 24, 38,154,101,217, 75, 0,110, 81,106,148, 75, 4,115, 0,253, 1,140,232, +217,179,103,215,149, 43, 87, 50,141, 27, 55,134, 82,169, 68,100,100,100,224,154, 53,107, 54, 18, 66,206, 3, 8, 7,112,156, 82, + 90, 92, 21,151, 74,165,114, 44,211, 74,132, 16,199,129, 3, 7,222,173, 24, 35,142, 16, 2, 14,135, 3, 74,233, 77, 0, 55, 89, +150,189,121,248,240,225,228,134,132,180,157,224,193, 63, 50,237,133, 70,246, 54,167, 90,173,118, 60,246,221, 55,224, 10,133, 80, + 23, 21,162,221,152,127,175,172, 62,183,100, 54, 8,171, 7, 3,154,215,105,197,198,104, 0,143,210,210,210,162,131,130,130, 94, +214,182, 48, 25,134, 89,121,230,204, 25,103, 74, 41,186,119,239,190, 18,192,159, 34,176, 8, 33,194, 15, 90, 53,187,116,226,231, +253, 34,121,110, 38,122,244, 31,186,143, 16, 50,154, 82,250,243,239,196, 82, 47, 34, 37, 92,204,158,248, 77, 56, 3, 0, 91, 22, +140,152,179,177, 59,217, 52,253, 44,205, 32,132,116, 2,202, 67, 43,125, 71, 41,189,180,165, 23,145,130,193,220,137,223,132, 19, + 0,216,186, 96,196,236, 45,189,200,247,147, 78,213,110,149, 36, 33,100,210,232,209,163, 55,173, 92,185,146,113,118,118, 70,106, +106,106,143, 70,141, 26,249, 18, 66, 26, 85, 55, 57,216,195,195,227, 96,167,143, 6,120,133, 12, 30,102,102,111,103,131,212,244, + 44,171, 67,251,127,154,224,225,225,209,243,229,203,151, 67, 77,205,133, 9, 38,152, 96,130, 9,239, 77, 96,181,116, 33,102,197, + 90, 12,224, 50,228,147,142,109, 27,119, 25,222,171, 35,167,145,127, 3,196, 60,137,253,232,248,197,219,107, 26, 73, 57, 23,244, + 6, 26,102,206,199,177,168,180,234, 87,182,232,244,224, 70, 28, 11, 7, 0, 76, 26, 59,130,185,115,231, 78,131,150, 45, 91,150, + 71, 80,239,210,165, 11,186,116,233, 66,182,108,217,210, 44, 34, 34,162,217,174, 93,187,180,132,144,221,148,210,223,170,233, 76, + 67,189,189,189,215,108,218,180, 73, 24, 20, 20, 4,161, 80, 88,126, 76, 34,145,160,111,223,190,232,219,183, 47,147,150,150,214, +253,196,137, 19,221,191,251,238, 59, 13, 33,228, 75, 74,233,102, 99, 50,104,201,146, 37, 45, 43,217,125,134, 16,242, 92,175,215, +223,111,218,180,105,178, 31, 33, 13,190,232,213,254,220,164, 14, 62,230, 85,102,180, 64,128,189,163, 75,250,232,138, 2,235,229, +197,211,144, 88, 90,228,136, 45, 44,162, 1, 60, 2, 16, 77, 41,125,244,252,249,243, 88,127, 66,154,125, 96,195,217,189, 43,215, +208,180, 22, 34, 11,201,201,201,176,178,178, 50, 11, 14, 14, 78, 39,132,124,117,233,210,165, 29,239,185,222,180,253,106,246, 36, +126,222,171,104,100,196,221,196,204,193,129,226,233, 63,252,250, 53,128,159,171, 23, 62, 28,206,119, 55,216,121,211,129,105, 0, + 22,231,228,228, 4, 1,128,157,157,157, 0,192,165, 13,183,209,107, 70, 7, 82,103, 55, 11,132, 16, 62,195, 48, 63,238,221,187, +119,252, 39,159,124, 82, 18,226,225,218, 53, 72, 36, 18, 44, 95,190,188,254,172, 89,179, 86,161,228,218,149, 90,174,130,187, 13, +240,220,184,230,107,255,162,220, 2,245,246, 31, 15,221,117, 13,240, 99,190, 8,157,101,177, 89,167,113,114,119,119,255,196,100, +201, 50,193, 4, 19, 76, 48,225,189, 8, 44, 63, 7,178,167, 99, 11,159, 33,195,123, 7, 10,155, 4, 52, 6, 95,248,239,224,174, + 45, 91,181, 66,203, 86,173, 56,243,228, 69,221,238,220,141,234,118, 36,226,150,218,207,129, 28,138,207,162,163,141,189,120, 89, +176,216,149,253,165,157,139,243,223,136, 0,192,220,218, 81,181,224, 88,198,197, 14, 29, 58, 64, 38,147,241, 47, 92,184, 48, 14, +192,111,213,208, 44,136,143,143, 23, 50, 76,245,126, 76, 93, 92, 92, 48,104,208, 32,248,249,249, 9,130,131,131, 23,224,223, 97, + 43,126, 7,145, 72,244,134, 16,226, 8, 0,182,182,182,134,175,190,250,234, 33, 45, 5, 0,176, 44,123,147, 97,152,155, 44,203, +222, 62,126,252,120, 74, 99, 66, 28,251,180,244,187, 58,105,212, 32, 49, 61,178,177, 74,113,160, 42, 44,172,116,191, 88, 98,158, +101,102,110, 30, 45, 20,139, 30, 1,136, 6,240,200,213,213, 53,182, 49, 33,178, 15,252, 60, 34,182,204, 24, 97, 97, 76, 94,182, +108,217,210,183, 83,167, 78, 34,131,193,128,226,226, 98,108,221,186,213,202,204,204,204,170,103,207,158, 75, 1,148, 11,172, 70, +132, 52, 25,232,194,124,254, 85,170,126,114, 29, 4,140,117,199,118,173, 94,253,176,122,169,101,171, 15, 58,226,233,165,127, 33, + 55,183, 8, 5,249,114,176, 44,251,135,200,191,147, 78,209,204, 45,125,201,154, 45,243, 71,204, 37, 28, 14,105,246,241, 28,244, +115, 42,152, 74, 8,121, 2,128, 87, 22,173, 30, 0,151, 16,226, 18, 16, 16,176,166,193, 71, 29,177,117,225, 40, 80,150,165, 0, +214, 24,107,189, 34,132, 56, 90, 88, 88, 28,143,136,136,104,219,186,117, 86,105,112,250, 0, 0, 32, 0, 73, 68, 65, 84,107,220, +186,117, 11, 47, 94,188,192,164, 73,147, 52,147, 39, 79,230,127,250,233,167,100,230,204,153, 83, 8, 33, 71, 40,165,215,255,240, + 32,112,185, 35,251,135, 12, 21,200,243, 11, 85, 90,141, 86, 99,103,103, 69, 85,197,170,162,156,188, 66,229,144, 97,227,181,143, +162,110,141, 4,240, 7,129,245, 46,249,105,130, 9, 38,152, 96,130,209,104, 13,192, 1, 64, 22,128,187,111,253, 70,233,119, 84, +242, 59, 27, 37,211,122,236, 42,112,101,163,100,122,143, 3, 74,124,116,222, 1,144,247,190, 19, 76, 40,165, 40,117, 40, 92,230, + 88,152, 84, 16, 88, 52, 62,139, 66,159,155, 8, 67,206,115, 24,138,254, 24,222,136,136,172, 81,160, 52, 32, 57, 49, 22,163,167, + 47, 71,124, 86,213, 30,180,123, 55, 36, 58, 43, 1,184, 22,124,128, 47,182, 86, 15, 95,125,246, 70,171, 86,173, 84, 11,130, 56, +189, 87,109, 41,177,108,205,252,124, 4,218,205, 56,114, 54, 49, 49, 81,239,226,226,130, 79, 62,249, 4,148,210, 62,213,116,172, +153, 69,119,111, 56,198,245,105,143, 54,153,149, 79,131, 74, 72, 72,192,149, 43, 87,144,148,148, 4, 47, 47, 47,140, 27, 55,238, + 13,165, 84, 90, 21,103,143, 30, 61, 46,127,247,221,119, 31,174, 91,183, 46,122,239,222,189, 29, 40,173, 60,214, 96, 35, 66,204, +155,213,119,186,187,107,213, 92, 47,114,122, 55, 79,145,244, 12,214,151,149,164, 18,113, 71,211,210,254,157,119,223,250, 58,195, +220,202, 2,230,150,146,204, 79, 35,238,149, 91,174, 74, 63,227, 91, 18, 98, 41,115,182,187,119, 96,195, 98, 87,206,197,131, 34, +254,246,155,164, 38,113, 21, 28, 28,124, 99,229,202,149, 54,105,105,105, 56,127,254, 60,234,215,175, 15,133, 66,129,245,235,215, +167, 95,189,122,213,165, 52,189,210, 54,126,245,162,183,206, 26, 99,197, 31,183, 68, 88,219,202,194,231,114, 55,223, 56,115,112, +178,149,144, 34, 63,237, 5,158,199, 62,193,157,152,151,186,176,115,209,134, 66,165,186, 55,165,244, 98,101,255, 11, 13, 36, 13, + 46,165, 57,156, 56, 19,121,215,199,217,217, 25, 19, 38, 76, 64, 70, 70, 6, 40,165, 96, 89,182,124,197,197,130, 5, 11,224,235, +235,139,209,195,250, 41,132,185, 81,193, 39, 98,140,139,247, 70, 8, 9,168, 87,175, 94,196,165, 75,151,164,174,174,174,184,122, +245, 42, 50, 50, 50,224,228,228,132, 11, 23, 46, 96,245,234,213,123, 39, 78,156, 56,120,229,202,149,162,225,195,135,167,158, 61, +123,214,237,237, 57,115,245,235,215,143, 61,113,246,170,228,194, 47,103, 19,109, 44,204, 33,145,218,130,177,176, 81,130, 66, 41, +117,176,226, 15, 29,208,213,251,213,171, 87,254,111,149,255, 59,229,167, 9, 38,152, 96,130, 9,191,107,203, 43,213, 34,101, 18, +130, 16,114,178, 84, 15,104, 0, 8, 42,252, 6, 33,228, 36, 0,188,253,123,222,188,121, 11, 86,173, 90,245,164,236,119,217, 57, +243,231,207,111,188,122,245,234,111,218,181,107,119,224,198,141, 27, 95, 1,120,246,151, 90,176,202,160, 79,185, 3,190, 79, 79, +240, 12, 58,232,178,227,193,230,191, 6,204,157,160, 36, 18,228,164,191, 70,220,213,159, 75,180, 96, 13,248, 45,142,242, 8, 33, + 23, 98, 99, 99, 17, 23, 23,135,228,228,100,136,197,226, 63,156,119,237,218, 53,152,153,153,193,217,217,217,168,155,160,154,223, + 59, 11,142,110, 89, 15,146,118, 65,200, 30,254, 5, 46, 92,184,128, 55,111,222,128,207,231, 67, 32, 16, 64,175,215,215,200,199, +225,112, 72,105, 33, 80, 0,149,122, 97, 14, 38,132, 43,179,149,156,216,178,116,154, 7,231,230, 73,158, 50,233, 25,210, 84, 6, + 88, 27, 99,185,147,152, 67,108, 46, 78, 55, 51, 19,191, 45,174,158,182, 36,132,103, 46, 17,157,216,189, 98,166, 19,115,255,130, + 72,249, 44, 26,252, 74, 56,186,117,235, 54, 1,192, 82, 74,105,126,112,112,176,116,229,202,149, 54,169,169,169,136,137,137,193, +161, 67,135,178,244, 37, 55, 74, 40,165,203, 0,160, 29, 33, 34,119, 7,235,179,155,151, 76,179,192,165,131, 2,140, 91, 82,235, +202, 98,229,223,247,183,129,159, 78,156,188,105, 90, 95, 20, 23, 41, 17,126,238, 62,206, 68, 61,255,127,246,174, 59, 44,138,163, +113,191,179,119,183, 87,184,163,119, 84,176, 16,144,162,160, 32,138, 13, 49,154,104, 68, 99,239, 81, 83, 52,177,199,138, 26, 99, + 52, 42, 36, 26, 91, 98, 98,139,177,196,222, 53,246, 18, 48,246, 74, 19, 11, 22,186,128,244,114,253,118,126,127, 80, 60,145,114, +160,249,125,249,190,220,251, 60,251,220,237,237,238,123,179, 51,187, 51,239,188,211,250, 0,248,171,166,126,109, 63,253, 69, 31, + 17, 66,222,237,223,191,255,157,200,200, 72,155, 77,155, 54, 65,171,213, 86,185,109,218,180, 9,103, 47,222,154,108,232, 98,186, +132, 16,167, 38, 77,154,156,189,118,237,154,173,137,137, 9,206,156, 57,131,188,188,188, 10,231,106,244,232,209, 36, 47, 47,111, +232, 47,191,252, 50,224,217,179,103,203, 47, 94,188,152,141,210,101,155, 94,121, 16,120, 60, 94,130, 86,171,246,112,242,116,227, + 13,234,221,169, 83, 81,118, 20,100,214, 62,184,122, 39,225, 88,126, 94,142,156,199,227, 37,232,159,255, 54,226,211, 8, 35,140, + 48,194,136, 58,139,176, 99,148,210, 16,125,193, 84, 89,104,149,127, 47, 63, 47, 44, 44, 44, 68, 95,124, 1, 64,120,120,248, 82, +189,253,146,191, 35,172,252,151,122,129, 80, 0, 93,170, 58, 73, 25,119, 0,202,248,195, 96, 93, 58, 64,216,188, 15,120, 46, 29, +145, 20,117, 1,119, 79,172, 68, 74,236, 95,160,156, 14,142,238, 1,134,254,167,194,195,195, 3, 10, 69,105,215, 43,165, 82, 9, + 86,106,169,152, 54,118,184, 24, 0, 56,190, 88,169,167, 50, 13, 34, 52,237, 16,140,128, 12,138,235,246,165,130,183,220,201, 90, + 60,102, 12, 88,150, 5,203,178, 40,239,168,110,136,192, 42, 91, 67,171,124,181,122, 90,213,113,127,145, 96,199,174, 5, 19, 3, + 68,207,162,133,202,152, 43, 72, 83,114,244,104,134,238, 15, 47, 3,194,107, 34, 53, 73,149,152,152, 68, 75,100, 82,125,129,149, + 0, 0, 84, 32,216,182,125,225, 68, 31,105,198, 99,169,226,198, 57,164, 43, 56,181, 89,213, 52, 11, 79,156, 56, 97,199,231,243, + 29,116, 58, 29,146,146,146, 16, 27, 27,139,213,171, 87,103, 20, 22, 22,118,185,117,235,214, 3,189,240, 50,109, 36,194, 61,219, + 22, 77,105,202,143,138, 16, 43, 19, 98,170, 20,109, 53,193,182,101,191,247,251,116,241,253, 99,220,200,121,232,251,193,123, 24, +213,197,139, 62, 77,203, 81, 0, 56, 67, 41,173,117, 25, 36, 74,105, 42, 33,164,123,231,206,157,127,111,213,170,149, 39,165, 20, + 45, 91,182,196,208,161, 67,177,109,219, 54,220,189,123, 23, 5, 5, 5,234,211,167, 79,175,162,148,110, 54,240, 69, 51,177,180, +180, 60,121,254,252,121, 91, 19, 19, 19,156, 62,125, 26,114,185, 28,142,142,142,152, 48, 97,130, 48, 60, 60,124,107, 65, 65,193, +160,176,176, 48,241,211,167, 79,127, 58,117,234, 84, 99,148, 46, 56,251,218, 67,160, 82,169, 54,236,216,182,101,205,132,137,147, + 26,156,191, 26,119, 78, 89, 92,104,222,200, 57,185,208,198, 74, 38, 91,249,253,194, 70, 42,149,106, 92,213,241,249,103,189,226, +211, 8, 35,140, 48,194,136,170,188,139,234,181,136,190,104,170, 44,178,234, 34,206, 0,200, 67, 67, 67,231, 18, 66,142,149, 57, + 92,114, 0,105,127,139,192,162,148, 70, 16, 66, 64, 41,141,168,246, 76, 78, 7,245,211, 72,168,159, 70, 66, 18, 56, 25, 71,194, +134, 85,186,105,174,222,129,232,189,232,204,121,165, 82,201,223,178,101, 75, 69,191, 44, 0,208,233,116,111, 61,245, 12, 17, 88, + 40, 91, 66,168, 76, 96,189, 22,136, 38, 34, 89,196,134, 47, 7,181,179,214,149, 8, 84,127, 29, 69,170,146,211, 46,127,164, 46, +185,145, 71,191,159, 91, 13,225,161,169,227,144,124,241, 44, 76,100,178,228, 79, 35,163,245, 93,171, 40, 0, 79, 0,160,137,216, +236,220,158,105,195, 58, 58,176, 96, 85,127,236, 69,154,146, 83,174,123,166,217,188,186,234,135, 12,148, 82, 60,121,242, 4, 37, + 37, 37,184,124,249, 50,246,239,223,159, 85, 89, 92,149,133,247,207, 95,103,141,104,107, 86,248,156, 85,221, 56,139, 52, 37,167, +116, 55, 68, 84,249,244,235,192, 50,228, 52, 97,120,146, 15, 58,121, 97,234,103,253,176,242,215, 35, 90,149, 93,167,144, 53,135, +143, 15, 46, 82,170,231, 26, 34,174,244,194, 28, 5,192,139, 16, 34, 2, 16, 60,116,232,208,227, 3, 6, 12, 64, 68, 68, 4,142, + 30, 61,234, 6, 32,189,236, 37, 88, 4,192, 30,165,163, 11, 31, 87,243,162, 48, 44,203,238, 58,123,246,172,183,147,147, 19,206, +158, 61, 11,185, 92,142, 47,190,248, 66, 53,113,226, 68,118,244,232,209, 36, 63, 63,191,194,185,186,124,249,114,118,117,226, 10, + 0, 82, 82, 82, 78, 52,110,220,184, 67,231,206,157,251, 54,117,107,110,246,184,176, 32, 83,102, 34,150, 92,140,184,192,222,186, +113,229,167,148,148,148,235, 85,199,231, 57,131,227,211, 8, 35,140, 48,194,136, 26,203,136,218,181, 72, 37, 39,170,142,252,229, +215, 9,194,194,194, 98,195,194,194, 94,113,184,254, 46, 7,171, 78,208,229, 39,189, 30,112,142,171,203, 77,190,246,155,165,165, +165, 86, 34,145,188, 34,176, 56, 3, 57,115, 14,238,196,227,241,195, 43,156,171,114, 39, 11, 61, 70,215, 75, 96,149, 59, 88,101, +157,161, 95, 9,132,212,190,249,176, 93, 35,187,119,240,106,218,128,209,236, 89,141,148, 18,173, 98,193,125,181, 34,190,144,246, +137,171,162,243,116, 5,167, 86, 3,177, 84,146, 40,145, 73, 43,139,171,103, 0, 32,115,112, 31,176,117, 88,112, 23,223,230,174, +140,118,247, 10,164,150,104,138, 66,239,169,213,143,139,233,129,106,226,112,193,123,239,189,183,192,218,218, 90,188,102,205, 26, +115, 23, 23, 23,104,181, 90, 85,101,113, 37,181,111, 62,108,247,232, 30, 29,220, 29, 44, 25,205,190, 31,145, 44,215,149,172,126, +172,217,186,206, 0,113,101, 99, 46, 59,181,110,233,120,137,137, 72, 0,133, 66,129,240,159,247,225,244,165,152,144,172,232,131, +167, 0,156,122,131,231,238,211,144,144,144,149,139, 22, 45,130, 70,163,193, 39,159,124,130,132,132,132,211,247,239,223, 95,237, +236,236, 60, 99,214,172, 89, 78, 14, 14, 14, 24, 60,120, 48, 11, 96,116, 53, 28,223,237,216,177, 35,196,215,215, 23, 17, 17, 17, +200,203,203,131,163,163, 35, 38, 78,156, 40, 12, 11, 11,219, 90, 80, 80, 48,104,233,210,165,226, 39, 79,158,212,232, 92, 85,122, + 54,190, 93,191,114,252,244, 54,237, 58, 50,143, 30, 61,208, 38, 5, 4, 49, 23,206, 30,141,180,180,180,220,250, 74,124,142,233, + 89,231,248, 52,194, 8, 35,140, 48,226,173,225, 15, 0,189, 42,187, 90,149,197, 87,185, 67,165,191, 95,249,252,178,227,127,203, +162,228,124,189, 0, 26, 60, 60,158, 43,206, 50, 72, 52, 85, 70, 47, 15,162, 25,215, 6,252,185, 65, 12, 88,169,165,162,247,162, + 51,231,171, 59, 87, 42,149, 26,236, 96,113, 74, 69,109,130,169, 78, 2,139,199,227, 17, 0, 39, 57,142,187,162, 47,176, 44, 28, +154, 7,125, 53,123,202,170,142, 3,122, 48, 25,159, 5, 34,175, 72,169,156, 21,167,229, 82, 74,106, 22, 87,165,170, 84,243,212, + 68, 42,139, 22, 75, 95,233,119,149, 4, 0, 18,251,119, 2, 66,191,156,244,115,215, 97,189, 73,214, 23, 29,145,155, 39, 87,206, +136,213,146, 84, 57, 29, 20, 71,233,133,170,232,206,157, 59,183, 30,192,250, 46, 93,186,100, 72,165, 82, 20, 21, 21,189,150, 6, +229,225,237, 48,160, 7,147,241,105, 91,228, 20,171,149,179, 98,181, 72,147,115,187,106, 19, 87,182, 22,166,167,214, 45, 25,111, +146,150,242, 12, 44,203, 66, 38,147,225,204, 95,209,200,138, 57,244, 38,194, 10, 60, 30,239,155,185,115,231, 46,152, 48, 97, 2, +178,179,179,113,244,232, 81,124,240,193, 7,216,185,115,167,203,241,227,199, 87, 6, 7, 7,131,199,227,225,216,177, 99,208,104, + 52, 15,171, 73,207,126, 99,199,142,157, 49, 96,192, 0, 92,191,126, 29,233,233,233,175, 56, 87,121,121,121, 67,127,254,249,231, + 1, 79,159, 62,173,213,185,170,132,128, 38,174,173,217, 57,243,127,128,178, 36,147,159,149,122, 53,226,220, 25,230, 74, 78, 78, +142, 9,128,252,250,198,167, 17, 70, 24, 97,132, 17, 6, 27, 48,213,105,145,172, 50,241,148, 85,213,190,158,176,170,106,159, 84, +114,189, 84,149,142,223,253,143, 57, 88,124,251, 22,208,102,196,232, 9,172,204, 87,142,139, 77,173, 12,106, 34,212,104,193, 95, +183,185, 98, 30, 44,113,118,118,182,216,198,198, 70,161, 47, 12, 76, 76, 76,224,228,228,132,220,220, 92,108,216,176, 1, 0,106, +235,236,172, 53, 27, 48, 18, 1,195, 62,193,141,134, 66, 80,141,186,194,201, 90, 55,102,204, 43, 34,139,101,217,242,190, 95,181, + 21,182,215, 8, 33,207, 56,142,187, 66, 41,165,126,238,205,190, 21, 75,165, 99,252,125, 92,109,166,142,255, 84,240, 52, 83,137, +243, 29,231,228,237,251,110,182, 44,153,202, 38, 36,210,188, 75,181,240, 61,254,240,151,237,149,157,171,148,214,238,205,230,137, + 77,196,159,181,107,225,238, 16, 58,109,188,224,105,134,146,156, 15,152, 85,176,255,251, 89, 38, 79, 96, 58, 35,153,230, 94, 48, + 32,121, 22,124,240,193, 7, 11, 40,165,148,227,184,249, 0,160, 31,222,105, 19, 63, 19, 60,126,174,192,185,142,243,114,247,127, + 55,219, 52, 25, 53,135,215,214,167, 95, 7,123, 75,179, 83,235,150, 78, 48, 73, 79, 77,132, 72, 36,130,169,169, 41,146, 51,242, + 33,224,243,228,111,242,176, 17, 66, 68, 65, 65, 65,179,199,143, 31,143,232,232,104,124,241,197, 23,233, 73, 73, 73, 7,118,239, +222,253,197,215, 95,127,205,127,255,253,247,145,158,158,142,101,203,150,105,254,250,235,175,165, 0,150, 85,249, 60,242,249,159, +126,251,237,183, 52, 45, 45,141, 60,121,242, 4,142,142,142,152, 52,105,146,112,233,210,165, 21,125,174,234,226, 92,149, 35, 37, + 37, 37,194,205,213, 25,125, 78,172,130, 86,163,140,200,203, 78,138,140,127,156, 27, 97, 37, 20, 78,239,232,231, 83,175,248, 52, +194, 8, 35,140, 48,226,173,224, 70, 45,251,255, 56,212, 38,176, 30,254, 56,239, 99,183,143, 39,204,132,196,165, 3,148,247, 14, +130, 43,202,168,112,176,196, 50, 75, 88, 57,123, 34,175, 88,137,189,231,110, 1,192,195,186,252,121, 97, 97, 33,252,252,252,176, +118,180,123, 87, 69, 97,182, 88, 2, 64, 41, 50, 83, 28, 18,118, 58,127,252,248,241, 18,142,227,118, 1, 56, 94, 11,205, 55,222, +222,222, 63,253,240,195, 15, 66,207, 97, 31,163,232,234,197, 87, 14, 50, 12, 3,137, 68, 2,145, 72,132,168,168, 40,156, 63,127, + 94, 5,224,155, 90,132,192, 53,173, 86,123,119,239,222,189,201,110,205, 26,246,232,210, 38, 96,242,220, 57,161,166,113, 23, 79, + 99,254,210,159,184,119,252,223,207, 15,223,121,168, 48, 95,230,252,110, 73, 90,252, 29, 3,110,245,110, 37,113,149,230,217,212, +185,107, 96,235, 86, 51,231,207,159,103, 22,123,241, 12,190,254,126, 29,117,243,237,150,255,253,254,195, 5, 47, 76, 26,191, 39, +207,184,119,221,144, 56,252,243,207, 63,215, 3, 88, 95,190, 95, 57,188,161,139, 86,115,238,109,122,228,134,239,220, 95, 92, 96, +234,220,173,166,240,218,121,245,111,223,200,209,234,212,143,139, 63, 55,121,158,154, 4,145, 72, 4,153, 76,134,164,244, 60, 44, + 88,181,167, 88,205,113, 61,222,240,121, 19,153,154,154,138,212,106, 53,214,174, 93,139,164,164,164, 64, 74,105, 18, 33,100,221, +144, 33, 67,214,180,108,217,210, 35, 54, 54,246, 97, 81, 81,209, 4, 74,105,124,117, 36, 22, 22, 22,129,182,182,182,228,202,149, + 43,248,252,243,207, 85,147, 38, 77, 98, 71,141, 26, 69,114,115,115,235,235, 92, 1, 0, 26, 54,108, 24,244, 97,175,246,232,208, +253,139, 8,149, 34, 47,242,105,252,214, 8,134, 94, 18,251,181,242,169, 87,124, 26, 97,132, 17, 70, 24,241,239,182,227,170,221, +130, 0,190,187, 53,198,121, 55, 96,159,111,251,110, 18, 45,124,124,153,202,175,175,167, 5, 7, 63,163,127, 44, 27, 69,143,255, + 56,149,126,209,203,155,122,216,145,231,238,214, 24, 23, 4,240,107, 90,109,251,131,230,208,116,119, 5,237,238, 10,218,203, 29, + 26, 0,115, 91,183,110,125,104, 98, 0, 40,141,219, 65,105,220, 14, 58, 49, 0, 20,192,231, 0,100,134,174,224, 13,192, 17,192, + 6, 63, 63, 63,237,133, 11, 23,232,253, 65,221,232,109, 15, 27, 58, 97,194, 4,250,245,215, 95,211,225,195,135, 83, 91, 91, 91, + 45, 74, 39,220,116,172,141,179, 79,159, 62, 13, 41,165,104,212,168,145,133,191,231, 59,207,163,206, 29,165,145,219,214,208, 95, + 39,246,167,109, 91,122,190,112,240,232,124, 87,226,216,188,149,161, 43,141, 59, 56, 56,204,161,148,246,160,148, 58, 82, 74,225, +230,102, 45,107,237,241, 78,218,221,179, 71,233,197,237, 63,209, 95, 39,246,167,237,124,188,178, 27,122, 6,199,139,237, 60, 2, +234,187,122,121,149,225,109,225,241,194,254,157,246,119,170, 11,175, 62,103,211,128,193,135, 83,210, 50,232,181,107,215,232,241, +227,199,233,197,139, 23,233,182,221,135,169,115,155, 65, 69, 54, 45,251,118,120,211, 85,214, 1,152,247,234,213,139, 62,124,248, +144,246,236,217,147, 2, 48,175, 15, 39,128, 67, 79,159, 62,165, 49, 49, 49,116,238,220,185, 20,192,150,241,227,199,203,243,243, +243,105,183,110,221,146, 80, 58, 72,129, 95,159,112, 54,107,210, 32,188, 95,239, 78,223, 76,252,124, 64,208,155,198,231, 63,121, +213,122, 35,167,145,211,200,105,228,252,167,113,254,175,109, 53, 58, 88,127,150,214,254,215,183,180, 39,191, 47, 93,246,227,244, +181,235,183,204,156, 61,249, 83,105,167,142,221, 17,125,246, 55,236, 63,182,187, 88,161, 84, 45, 99,121,248, 33,250, 5,173,117, + 30,137, 63,226,169,160, 10,183,200,196,202, 21, 21,115, 40, 61,202, 5, 40,165,235,234, 40, 18,211, 1,140, 37,132,252, 16, 28, + 28,188,228,179, 14, 1,253, 39,182,239, 10,141, 70,131,109,219,182, 33, 49, 49,241, 0,128,121,148, 82,131, 28,182,232,232,232, + 23,222,239, 52,158, 98, 37, 97,103, 78, 24,222,207, 54, 43, 33, 14, 41,247,110, 3, 0,148, 74,185, 38,253, 65,132,111, 93,194, + 39,145, 72,174,217,218,218,222,183,181,181,205,213, 41,139,198,138,249,102,243,191, 24,250,161, 93,246,211,120, 36,199,150,182, +128, 42, 21, 37,234,228, 7,231, 61,234, 35,146, 27, 55,110, 44,146, 10, 48,174,202,240,170, 20,154,231, 15,239,181, 50,132,167, + 68,169, 90,186,112,229,182,247, 22,207, 28, 35, 50, 51, 51,195,173,152, 71,152,191, 98,103,177, 92,165,233,145, 21,117,240,210, +219, 18,244, 26,141,198,224, 1, 12,213, 96,182,175,175,111,243, 37, 75,150,184,141, 30, 61, 26,111,234, 92,233, 35,225, 73, 74, +104,151, 46, 93,188, 30,221,191, 21,108, 37, 97,127,127,147,248, 52,194, 8, 35,140, 48,226,223, 11,131,250, 96, 69,103,208, 18, + 0,139,154,217,147,117,115,150,172, 92,192,144, 85, 99, 56, 74,127,211, 50, 88,248,248, 5,205,122,195, 2,183,164,151, 7,209, +190,215,119, 56, 31, 0, 4,124,104,223,128,235, 33,128, 1,132,144, 54, 27, 47, 93,255,170,236,231,197,148,210, 58,181,213,154, +242, 17,211,209,171, 89,131, 78,173,189,197, 60,157, 28, 41,247, 18,144, 83,172,192,153,216,196, 60,134, 50,191,213, 53, 92,143, + 31, 63,254, 19, 0, 90,188,211,248, 94, 39, 47, 87,231,206,126,222, 38, 2,162, 66, 74,220, 45,228,203, 85, 56, 29,155,152, 15, + 66,234,221, 81,250,109,133,247,121,212,161, 27,182, 62,253,186, 17, 66,206,206,157, 56, 76,180, 96,197,174,183, 42,174, 0,148, +164,166,166,102,151,148,148, 88,167,165,165,169, 80,207,201,221, 40,165,143, 8, 33, 45,167, 78,157,186,104,198,140, 25, 51,191, +251,238, 59,182, 62,125,174,170, 67,110,106,226,193,206,222,111, 47,253,141, 48,194, 8, 35,140, 48, 10,172,154,133, 66, 6,205, + 2, 48,193,213,149, 76, 75, 72,160,170,183, 21,136,170,156,173, 55, 20,109, 55, 0,244,174, 55, 1, 67, 10,175, 62, 76, 44,186, +246, 48,177, 8, 28,165, 28,165, 74,134, 65,114,177, 90,189,244,193,227,148,250,143,162, 35, 68,119,227, 81,146,252,102, 66,178, +130,114, 28,229, 40, 85, 17,130,231, 26, 13,183, 52,230,241,179,195,255,132,240,102, 69, 29,188,228,224,213,191,211,165,107, 49, +211,138,139,213, 63,101,197, 29,188,252, 22,211, 69, 67, 8, 25, 17, 24, 24,248,177, 78,167, 91, 71, 41,213,188, 1,151, 10,192, +108, 66,200,129,232,232,232, 61,151, 47, 95, 78,127, 27,226,234,111, 77,127, 35,140, 48,194, 8, 35,140, 2,171, 38,188, 77,113, +245, 79, 68,244,195,167,126,127, 7,111,204,195,167, 45,254, 27,194,251, 60,238,192, 77, 0, 67,255,142,176, 82, 74, 79, 3, 56, +253, 54,197, 52, 33,164, 9, 0,222, 91, 17, 87,127, 99,250, 27, 97,132, 17, 70, 24, 97, 20, 88, 70, 24,241, 95,131,178, 53, 35, +181,198,152, 48,194, 8, 35,140, 48,226,159, 2, 2,160, 91, 53,133,214, 89,131, 73, 8,233, 86,143, 66,241,172,145,211,200,105, +228, 52,114, 26, 57,141,156, 70,206,127, 23,231,191,169,246,255,183,109, 48, 14, 97, 53,114, 26, 57,141,156, 70, 78, 35,167,145, +211,200,249, 47,220, 24,163,196, 52,194, 8, 35,140, 48,226,111,107, 38, 33, 68, 84,182,192,123,189,142, 27, 97,196,127, 43,248, +245,120, 89,222, 41,115,190, 30,253,141, 47,228, 68, 71, 71,199,177, 62, 62, 62,158, 44,203, 50,133,133,133, 11,207,159, 63,255, + 77,229,243, 58,123, 11,110,242, 24, 52,212,187, 18, 32, 60,128, 97,160,163, 72,137,188, 91,226,111, 76,226,127,116,198,235, 34, + 49,179, 61, 66, 24,158, 80,167, 85, 67,167, 81, 3,120,185,108, 18,199,105, 19,181, 42,197,251,213, 93,239,216,170,191,179, 86, + 71,195, 1,238,103, 2,230, 11, 10,238, 23, 66,153, 47, 40,131,159, 9,135,207,193,215, 44,131, 86, 48,131,207,242,231,165,221, +218,155,252,191, 16,103,251,246,237,227,189,201,245, 3, 7, 14,172,114,129,207, 6, 13, 26, 28, 51, 49, 49,113,173,238,186,226, +226,226,244,180,180,180,224,255,241,231,177, 51,128, 31, 1,120, 87, 58, 20, 15, 96, 10,165,244,220,155,254, 71, 23, 66,248,246, +192, 56, 22,152, 5, 0,106,224,251, 12, 96,253,159,111,105,128,198,219,128,157,157, 93, 36,159,207,119, 43, 46, 46, 46, 46, 40, + 40,104,102,102,102,246, 88, 42,149, 74,181, 90,237,195,204,204,204,206,117,140,211,241, 40, 91,242,138, 16, 50,147, 82,250,115, + 93,142, 27, 97,196,255,180,192, 34,132,184, 3, 8, 42,219, 58,183,105,211,198,190,184,184, 24,132,144, 12, 0,145, 0, 34, 0, + 68, 80, 74, 31,188,141, 0,241,120,188,229,171, 87,175,158, 62,105,210,164,138, 69,154,163,162,162,170, 62,151, 65,195, 11,199, +206,217,221,136,186,143, 54,221, 6,150, 9, 44, 6, 40,121,142,224,110,109,234,155,201,154, 90, 90, 90, 46, 36,132, 12, 98, 24, +166,214,194,140,227, 56, 29,165,116,111,110,110,238, 2, 74,105, 97, 93,254, 75, 38, 21,107,180, 58, 93,149,255,193,231,241,116, + 69,197,138,106,167,175,176,182,182,190,204, 48, 76, 83,253,133,172,203,194, 95,229,119,253,125,173, 86,155,146,149,149,229,111, + 64, 92,136, 25, 62, 59,133, 16,182, 59, 24,206, 29, 32, 32, 96, 30,112, 58,213, 25, 78,171, 94, 77, 41, 85,188,137,184,114,108, +212,236,226,151,243,194, 27,198,220,139,199,220,137,195,241,221,143, 91, 48,103,202,199, 88,189, 97, 39,166,140, 29, 6, 47, 47, +239, 26, 57,116,148, 44,156, 63,101, 68,240,146,213, 59,218,204,155, 50, 92,186,100,245,142, 54,243,166, 14,151, 45, 89,179,195, +127,222,212, 17,178,197,107,126,247,255,106,234, 8,179, 37,107,118,168, 1,124, 82,159,112,142,112,111, 80, 12,173,182,234,218, + 53,159,175,252,253, 65,170,244, 63,241,226,142, 30, 61,218, 71, 46,151,223, 26,222,189,117,120, 43,247, 6,169, 85,157,147,253, + 60,181,193,227,251,183, 67, 5,172,196,239,195,208, 45, 81, 53,241,137, 68,162,166,241,241,241,110, 28,199, 65,167,211, 65,171, +213, 86,124,170, 84, 42,116,238,220,249,173, 12,136, 33,132,244, 6,176,176,244,101, 69, 24,165,116,207, 27,112,201,248,124,254, +151, 66,161, 48, 72,171,213,122, 2,128, 64, 32,184,167, 84, 42, 35,180, 90,237, 74, 74,105, 81, 29, 41, 87,165,166,166,122,201, +100, 50,168,213,234,138,133,225,121, 60,158,135,179,179,243, 90, 0,110,111,122,255,246,192,184,246, 29, 59,174, 30, 53,125, 58, + 79, 30, 25,137,213,155, 55,175, 66, 65, 1, 0,172,173,237, 90,145, 72,116,138, 97, 24,151,186,252, 31,199,113,137, 74,165,242, +253, 58, 21, 10,124,190, 91, 90, 90,154,157,147,147, 19, 0, 64, 42,149, 74,245,247,235,226, 92, 1, 88, 70, 41,149, 0, 0,195, + 48,171,219,183,111, 31, 72, 8,209, 2,160, 28,199, 49,132,144, 97, 28,199,241,203,206, 95, 70, 8,217, 76, 41, 85, 26,139,102, + 35,254,167, 5, 22, 33,228, 56,128,160, 54,109,218, 72,134, 14, 29,138,160,160, 32,184,185,185, 65, 44, 22,151,102,222,217,217, +246,119,238,220, 25, 28, 25, 25, 57,248,232,209,163, 32,132,200, 1,252, 69, 41,173,242,101,238,214,187,211, 36,177, 76,180, 6, + 0,178, 82,178,211, 83,158,100,174, 73, 79, 79, 95, 70,245, 86,137, 38,132, 52, 27, 53,106,212,180,201,147, 39,227,216,177, 99, +216,185,115, 39,148, 74, 37, 10, 11, 11,113,254,252,249,106,170,214,153,200, 61, 31, 14, 72,159, 1, 73,127, 2, 38,118,128,212, +190,222, 17, 98,105,105,185,112,202,148, 41, 83,189,188,188, 42,102, 29,215,104, 52,208,106,181,208,104, 52,200,205,205,197,180, +105,211, 80,230,226,129,227, 56,156, 56,113, 98,210,216,177, 99, 1,224,203,170, 56, 3,253,157,111, 50,132,105, 88,238,205, 80, +157, 46,229,202,237,100,127,173, 78,199, 83, 40,212, 85,174, 28, 46, 22,179, 53,138, 59,129, 64,208, 48,238,200, 17, 59, 70, 40, + 4,213,233, 0,142, 3,229, 56, 0,122, 27, 45,253,141,234, 56, 80,141, 14,156,150,131, 86,174, 68,192,248,241,134,100,142,237, + 5, 66,201,206, 17,159, 77,119,104,219,174,157,160,113, 35, 39,104,117, 28, 18,158,166, 56,220,186,121,181,195,222,173,107,191, + 32,132, 12,163,148,214,107,158, 44,161,137,217,233,159,126,217,216,240,198,157, 24,156,187, 16,137,179,231, 35, 0, 0,167, 46, +148,210, 49, 12, 83, 91,248, 44,173,221,130,125, 38,125,220, 87,186,248,135, 77,162, 73, 31,247,229,191,252,220, 40,154,244,241, +135,252, 37, 43, 55,138, 38,125,252,161,224,219,239,127,106, 69, 8,177,164,148,230, 86,199, 87, 93, 26, 65,171, 21,253,254, 56, +131, 7, 0, 89,235,214, 65,147,153, 9,167, 5, 11, 74,197, 87, 51,123,131,155, 53,108,109,109,111, 10, 4,130,134,181,157,167, +209,104,106, 21,191,163, 71,143,246,149,203,229, 55,181, 90, 45,229,243,249,161,195,251,189,119,168, 71, 39,223,108,253,115,162, +162,238, 90, 47, 93,122,164,239,158, 91,133,116,176,159,233,173, 99,203, 71,251,135,204,216,114,183,134,130,152, 81, 42,149,120, +248,240, 33,244, 23, 95,215,215,179,245, 20, 65, 12,128,213,214,214,214,109,179,179,179, 71, 0,152, 91, 80, 80,224,195,227,241, + 96,101,101, 53,151, 16,146, 96,110,110,190, 41, 63, 63,255,114,153, 75,196, 25,200,219,217,204,204,108,219,193,131, 7, 45, 91, +183,110,205,100,101,101,161,105,211,166,200,201,201, 9,136,140,140,244,251,228,147, 79, 62, 33,132,124, 68, 41,141,172, 67,112, +155,155,152,152,208, 81,163, 70, 17,157,238,229,237,254,250,235,175,120,191,133,214,245,243, 30,210, 18,133,138,230,159,123,104, +254, 57,203,178,127, 61,123,246, 44,191,174,241,193, 2,179, 70, 77,159,206,147, 61,123, 6,217,221,187, 24, 81, 80,192,255,174, +212,205,170, 85, 96, 49, 12,227,178,109,215,111,110, 66,161,176, 34, 95,170,110,211,233,116, 80,171,212, 8, 95,188,172,222,121, +161,137,137,137,137,147,147, 83,134,137,137,137,201,219, 40,108, 68, 34, 17,127,235,214,173,195,132, 66, 33, 0, 64,165, 82,161, + 69,139, 22,196, 88, 12, 27,241,111,116,176,122, 22, 20, 20, 64,167,211,193,212,212, 20, 60, 30,175,178,131,130,238,221,187,163, +115,231,206, 24, 58,116, 40,226,226,226, 36, 67,135, 14,237, 94, 29,217,240,233, 33,104,228,102, 95, 86,136,112,142,151,254,184, + 19,254,235,183,251,108, 1, 76,215, 59,237,147,113,227,198,145,236,236,108, 12, 26, 52, 40, 82,169, 84,246,161,148, 22, 84,235, + 96,112, 72, 9, 30, 58, 28, 28, 37,146,149,215, 54, 16,149, 66, 78, 25,134,145,151, 55, 17,214,179, 64, 24,228,228,228,132, 93, +187,118, 65,165,122,125,186, 47, 51, 51, 51,196,198,198,234, 59,110,104,215,174, 29,143, 16, 50,168, 58,129, 69, 8,211,240,210, +141,103,118,229,251, 33,221,189,217, 64,127,151, 12, 91,107, 83, 10,128,204,155, 55,175, 66,176, 1,192,194,133, 11, 13, 9, 39, + 24,129, 0, 89, 17, 17, 47, 51, 96, 62, 3,134, 37, 32, 2,128,225,151,182,150,130, 2, 84, 7,112, 90,128,211, 0, 98,199, 70, +134,112, 7, 52,112,118, 59,182,116,197,207, 22, 74, 13,197,174,195,231,240,244,233, 19,240, 24, 6,205, 92,221,240, 94,151, 78, + 2,191, 54,129,141,190,255,102,250, 81, 66, 72, 79, 74,233,245, 58, 71, 52, 71,197,174,206, 54,216,244,235, 45,216, 90,202, 48, +168,239, 7,144,136, 69,248,238,199,223,176,120,206, 68,184, 53,115,193,250, 85, 75,170,189,220,220,220,124, 81,235,150, 30,205, +126,219,115, 18, 65,157,219,243,183,236, 57,133, 46,157, 59,240,127,219,115, 18, 93,130, 58,241,183,236, 57,137, 46,157, 59, 10, +182,236, 57,137,118,254, 45, 93, 47,103, 71, 45, 2, 48,177,250,123,174,148, 70,239,149,166,145, 27,159,173, 40, 0,158,125,241, + 5, 0, 84, 8,172,186, 64, 32, 16, 52, 76, 75, 75,179,171,237,188,218, 92,130, 50,231,234,166, 86,171, 69,102,102, 38,201,203, +203,163, 22, 22, 22,125, 79,174,159,123,240,253,142,190, 57, 0,112,247,238, 93,171,176,176,165,125,119,223, 44,128,252,234, 79, +228,247, 35, 17,220,136, 62, 65, 55, 15,135,143,246, 27, 56,112,224,237,170,120,149, 74,229,211, 86,173, 90,209,178,239, 13, 68, + 34, 17, 91,233,153,112,114,115,115,123,205,165, 54,160,233,112,245,149, 43, 87, 38,122,121,121,193,195,195,227,114,219,182,109, +205,164, 82, 41, 78,158, 60, 9, 79, 79, 79,111, 51, 51,179,107,123,247,238, 21,204,158, 61,219,119,243,230,205, 0, 48,201,128, +231,179, 91,112,112,240,174, 99,199,142,137, 89,150,133, 92, 46, 71,108,108, 44, 44, 44, 44, 32, 20, 10,241,225,135, 31,242, 58, +116,232, 96,221,165, 75,151,253,101,149, 0,131, 71, 52, 41, 20, 10, 58,119,238, 92,152,152,152,192,196,196, 4, 82,169, 20, 82, +169, 20, 50, 49,200,186, 41,206,146,201, 27,242, 36, 95, 46, 88, 23,190,237,231,111, 46, 56, 59, 59,127,157,148,148,148, 87,215, +103, 65, 30, 25, 9,217,221,187,128,222,187,107, 40,204, 77,172, 16, 26, 26, 90,155, 3, 5,150,101,209,190,125,251, 90,249,172, +173,173, 15,240,249,252, 87,106,164,148, 82,113,104,104,168,238,193,131, 7, 82,134, 97,164, 28,199, 33, 52, 52, 84,167,213,106, +197,246,246,246,151, 57,142,203,200,202,202,234, 95, 27, 55,165, 84, 73, 8,153,201, 48,204,106,145, 72,196,111,220,184,113,226, +252,249,243,175,148,185,151,160,148, 50,141, 27, 55, 14,144, 72, 36, 46, 74,165, 82, 11, 96,166,209,189, 50,162, 6,248,149,154, +192, 21, 80, 1, 16,150, 27,246,165,165, 29,108, 42,253, 14, 0, 47,202, 42,136,246,213,236,103, 3,136, 3,208, 28,128, 93,217, +177, 27, 0,114,222,138,192, 34,132, 80,189,151,162,162, 64, 49, 53, 53,197,141, 27, 55, 64, 8,129,169,169, 41,204,204,204, 96, +110,110,142,130,130, 2,196,197,197, 33, 62, 62, 30,207,158, 61, 3, 33, 4,205,154, 53, 67,249,139,163,199, 85,145,177,237,248, +225, 24,196, 50, 17, 8, 1, 90,119,245,129, 79,231, 22,104,115,253,241, 20, 39, 39,167, 13,105,105,105, 15, 9, 33,252, 22, 45, + 90,124,210,174, 93, 59,172, 88,177, 2, 74,165,114, 69, 85,226, 74,159, 51, 50, 86,227, 95, 86, 40,205,216,126, 50,193,100,100, + 15,215,146,180,180,180,229,117,141,132,202, 25,240,139, 23, 47, 12, 94, 43,143,227, 56,228,230,230,214,200, 89,217, 17, 88,185, +250, 39,139,194,252, 12,124,251,221,118,104, 52, 26, 76,159, 62, 29, 28,199, 85,108,121,121,121, 6,133,147,234, 42,153, 10, 76, +233, 70, 24,128,240, 1,231, 33,165,122, 34,105,215, 79, 32, 20, 32, 58, 0,149,238,171, 50, 39, 33, 68,204, 99, 37,187,191,249, +110,141,197,237,248, 20, 28, 62,119, 27,234,130, 84,164,223, 61, 8, 0,104,214,126, 24,246, 40,121,104,235,227,138,169,243,190, +183,252,106,234, 71,187, 9, 33, 30,250,205,133,134, 20,104,148,234,240,237,162, 69,216,176,102, 5,190, 95,177, 6, 5,249,121, + 16, 8,108, 0, 0, 90,173, 14,186, 74,247,246,218,189, 83,218,227,171, 25,227,200,234,141,251,209,226, 29, 7, 28, 61,115, 25, +254,222, 46, 56,113,254, 58,218,181,108,130, 83, 17,183,208,206,167, 41, 34,174,198, 98,250,132, 81,228,210,137, 45, 61,234,146, + 70,171, 86,253,100, 81, 88,144,129, 99, 75,182, 34,115,237, 90, 36, 78,156,136,128,178,115,174, 19, 2,182, 97, 67,128,173, 61, +141, 42,227,222,189,123, 80, 42,149, 85,213,238,225,233,233, 89,107,186,203,229,242, 91, 90,173,150,102,100,100,144,140,140, 12, + 72,165, 82, 18, 27, 27,163,243,246,110,209,143,198,239,219, 8, 0, 97, 97, 75,251,237,185, 85,128,146,203,107, 32,191,242, 35, +216, 38, 81,204,134,133,227,212, 99, 23,172,191,165, 87,184,189, 18,206,244,244,244,158,229,223,155, 53,107, 22,255,224,193,131, +230,229, 77,202,101, 77,133,172, 86,171,117, 43,111, 54,212,106,181, 80, 42,149,232,214,173, 27,175,166,123,183,180,180,108,231, +233,233,137,219,183,111, 99,205,154, 53, 86,193,193,193,120,244,232, 17, 8, 33, 88,186,116, 41,241,242,242, 18,188,120,241, 2, +239,191,255, 62, 14, 28, 56,208,190,182,248, 36,132,152, 74,165,210,205, 71,143, 30, 21, 51, 12,131,194,194, 66,112, 28,135,142, + 29, 59,130, 97, 24,196,196,196, 96,222,188,121, 56,112,224, 0, 14, 29, 58, 36,241,243,243,219, 76, 8,241,212,111,190,175, 33, +141,168, 66,161,160, 34,145, 8, 34,145, 8, 98,177, 24, 98,177, 24, 66,161, 16, 69, 10, 96,236,202, 68, 37, 79,108,195,121,183, +234,232, 58,102,242, 82,102,249,252,143,207, 3, 56,108,232, 51, 15,148,246,185, 90,253,219,111,107, 70,228,231, 51, 0,176,137, + 16, 78, 77,233,247,134,188,239, 0, 80,168,200,131,139,107, 67,236,223,117, 8, 3,134,246,173, 82, 92, 9, 4, 44, 88,129, 0, +166, 86, 38,181,114,178, 44,107, 31, 31, 31,111, 45, 16, 8, 42, 28,121,141, 70,147, 49,127,254,124,219, 94,189,122,153,158, 56, +113,130,233,213,171, 23,103, 99, 99, 83,124,251,246,237, 76,181, 90,109,221,161, 67, 7,131,159,121, 74,233,207,173, 90,181,106, +125,240,224,193,143, 67, 67, 67,111,206,152, 49,227, 91,253,227,203,150, 45, 91,116,252,248,113,151,126,253,250,109,187,115,231, +206,207,117,201, 67,222, 52,159, 55,114,254,243, 56,171,211, 34,101,176, 39,132, 28,211, 59, 30, 82,190, 31, 26, 26, 58, 55, 44, + 44, 44,150, 16,114, 76,255,247,242,243,202,184,143, 85,181, 95,118,173,213,156, 57,115, 90,132,135,135, 47, 13, 12, 12,220,117, +249,242,229, 39,111, 77, 96,149,223,136,254,205, 85,138, 72, 20, 20, 20,160,160,160, 0,201,201,201, 88,183,110, 93,217,139, 44, + 0,159,207, 7,159,207,175,232,175, 80, 29,206, 30,189,248, 35,128, 31,253,252,252, 4,209, 87,246,158,152,181, 97,242,187,254, +221, 90,243,110,157,139, 30, 8, 96, 49,128,158,163, 70,141,178, 1,128,173, 91,183,190, 0,112,226, 63, 33,145, 41,165,123, 31, + 62,124, 56,213,209,209,177,162, 15,138,126, 51,161, 86,171,133, 88, 44, 70,121, 95, 21,133, 66,129,117,235,214,105, 41,165,123, +107,224,196,131,216,243,120, 24,123,161,244, 58,142, 3,167,123,121,253, 55,223,124,163, 63,244, 21, 95,148, 57, 37,181,138,187, +170,226,156, 86,250,172,244,251,107,162,236,181,102, 8,118,242,192,143, 38, 58,114,132,143, 35,231,239, 64, 32, 16,128,211,115, + 47, 5,188,210,218,113,236,163, 52, 56,217,123,163,207,176,113, 14, 7,183,253, 52, 25,192,119,117,141,107, 15,223, 64, 76,153, + 58, 21, 27, 55,108,192,188, 5,139, 42,212,185, 86,167,131,182,214,112, 50, 76, 7,127, 47, 20,101,167,128,199,227,161,251,222, +103,121, 0, 0, 32, 0, 73, 68, 65, 84,125, 43, 87,240,120, 60,116,242,119, 7,143,199, 67,199, 54,205,193,231,243,209,165,157, + 23,222,121,231, 29,240,249,124,166,150,116,199,131,216,115,120, 24,251,167,158,216, 45, 77, 19,117,122,250,107,231,107,210,211, + 65,157,173,235,250,108,225,147, 79, 62,201, 75, 78, 78, 86, 87, 62,214,168, 81, 35, 54, 50, 50,210,162,154,230,185, 10, 72, 36, + 18, 63, 62,159,127, 43, 39, 39,135, 51, 49, 49, 97, 56, 78,199,121,123,183,224,157, 92, 63,247, 96,249, 57,115,230,204, 61, 56, +216,207,172,223,246,189,199, 40,219,184, 35, 33, 2,145,246,179, 5,235, 89, 1, 43, 49,104,134,250,242,230,194,251,247,239,163, +182,240, 84,145, 9,190,130,220,220,220, 81,158,158,158,145, 63,254,248,163, 21, 33, 4, 23, 47, 94, 4,143,199,171,216, 30, 63, +126, 12,134, 97, 48,107,214, 44,117, 65, 65,193,167,181,102, 88,124,254,212,253,251,247,155, 11,133, 66, 20, 22, 22, 86,188, 55, + 60, 30, 15,241,241,241, 88,190,124, 57, 70,141, 26,133,164,164, 36, 56, 57, 57, 97,250,244,233,178,240,240,240,169, 0, 22, 25, +112,235, 81, 42,149,202,223,196,196, 4, 98,177, 24,229, 66, 11, 0, 78,199, 10, 98, 74, 74, 74, 90,218,216,216, 56,216, 70, 28, + 59,210, 62,184,143,175,181,173, 99, 96,185,192, 50, 20, 9,192,134, 39, 90,237, 87, 61, 15, 30,180,187,116,240, 32,119,229,200, +145, 20,113, 81,209,122,131, 9, 52, 60, 36, 38,164,192,207,207, 15,183,110,221,130,159,159,159,190, 88,130, 80, 40, 4,203,178, + 96, 89, 22, 54, 22, 6,117,149,160, 12,195,224,210,165, 87,151, 27,237,212,169, 83,206,133, 11, 23,100, 0,144,152,152, 72, 67, + 66, 66,242,226,226,226,224,230, 86,115, 55, 52, 7, 7,135, 72, 30,143,215,184,210,187,106,217,191,127,127,228,230,230,126,208, +191,127,255,142,101,191,165,238,219,183,111, 36, 0, 8,133, 66, 48, 12,163,131, 17,255,122,212,166, 69,244, 5, 82,101,161, 21, + 22, 22, 22, 82,249, 55,125, 49, 85,213,119,253,107,195,195,195,151,234,113,203,223,198,253,240,245,149, 99,109,153,101, 77,168, + 77, 96,149,227,214,173, 91,154, 6, 13, 26,108,124,120,231,217,187,174, 62,205, 32,145,138,222, 35,132,252, 40, 18,137,166,125, +244,209, 71,184,122,245, 42, 98, 98, 98,126,125,211,101, 79, 90,182,108,121, 74, 36, 18,185, 84,211, 28,146, 24, 29, 29,253,126, + 53, 5,194,130,178, 62,101,213,118,114,215,239, 15,166,223,201,189,218, 7,130,163,208,168, 53, 40, 46,145,191, 44,188,203, 4, + 86,113,113, 49,134, 12, 25,242,138,131,149,153,153,105,136,210,199,242,195,135,113,102,239, 94,124,224,235,139, 3,215,175, 35, +252,163,225,240,112,105, 0,170, 35,160, 4, 72,218,249, 19,178, 11,138,176,227,220, 37,228, 20,150, 96, 68,167, 78,112, 51,179, +169,153, 87,192,118, 15,104, 23,200,158,189, 28, 7,129,128, 15, 6, 28,168,166, 4, 78,158, 93,192, 99, 24,152,219, 55, 1, 43, + 16, 64, 32,224,227,113,242, 11,120,182,104, 35, 60, 38, 20,119,175,143,192,114,118,105, 10, 78,167,195,168, 81,163,176,107,215, + 46, 88, 59,184,192,188, 81, 11, 44, 94,177, 1, 31,116,235, 84,235,253,151,215,216,249,124, 62,120, 60,222,107,159,229,223, 13, +113, 35, 41, 71,161,174,156, 70, 28, 5, 5,208,112,201, 18, 52, 92,178, 4,215,203,254,211,171,184, 24,114,185, 28,104,235, 93, + 39,113,165, 82,169,144,156,156,172, 78, 79, 79,183,175,162, 96,202, 80,169, 84,181, 10,154, 45, 91,182, 68,141, 30, 61,218,223, +202,202,234,102,212,221,187, 26, 31, 95, 95,193,137,117,115, 15,149, 55, 15, 2,128,175,175,111,206,220,185,115, 15,141, 28, 20, +210,247,231,208,161,186,241,139,182,241, 69, 18,137,127,200,140,154, 59,186,235,189, 31, 79,125,124,124,168, 33,231,150,148,148, + 60,175, 33,141,122, 3, 88,216,186,117,107,179,224,224, 96, 68, 70, 70, 98,192,128, 1, 74,181, 90,253, 16, 0,122,245,234,229, +190, 99,199, 14, 97, 92, 92, 28,108,109,109, 5,137,137,137,155, 9, 33, 53,118,124, 23, 10,133, 93,218,180,105,195, 40,149,202, +215,196, 85,120,120, 56,134, 13, 27, 6,119,119,119,112, 28,135,162,162, 34, 4, 7, 7, 11,214,172, 89,211,197, 64,129, 53,197, +195,195, 99, 57, 74, 71, 17,234,231,133,247, 0,204, 44,115,183,159,135, 12, 24, 21,219,169, 91,127,255,198,239,180,112,172,141, +208,222,222,126, 14,195, 48,131, 57,142,227, 21, 20, 20, 36,171, 8,121,199,171,113, 99,251, 14,125,251, 34, 95, 32,224,173, 62, +119,142,201, 40, 42,146, 1, 48,168,169, 81,174, 41,130,139,107,105, 87,190, 1, 67,251,226,214,173, 91, 24, 56,172, 31, 88,150, + 5,159, 47, 40,125, 55,217, 82, 7,203,194,198,212, 48,205,166,209,188,246,172, 82, 74, 97,102,102, 86,209,146, 81,254,155, 70, +163,169,177,240, 3,224,182,103,209,124, 59,137,153, 57,116, 26, 13,188,251, 14,172,120,166,175,109,250, 89, 2,142,147,228, 37, + 62,197,164,189, 71, 5, 48,194,136,106, 92,172,154,180,136,190, 64,122, 11,255,117, 44, 52, 52,116, 46, 0, 26, 26, 26, 58,183, +124, 63, 44, 44, 76, 14, 32,245,173, 8,172, 55, 21, 87,229,205, 8, 53,161,107,215,174,147, 76, 77, 77,215, 0,128,191,191, 63, +146,175,166, 34,249,106, 42, 60,155,123,119,104,237,235,159, 63,108,216, 48, 88, 91, 91, 99,198,140, 25, 20,192,175,117,253,255, +199, 15, 98,101, 0,168,147,147,211, 12, 0,112,114,114,242,189,126,253,186,237,141, 27, 55,208,166,205,203, 17,133,106,181, 26, + 29, 59,118,172,169, 32, 44, 68,105, 95,170, 47,223,158, 42,231,160, 86,171, 81, 82, 34,135, 74,165,134, 86,195, 65,171,213,194, +207,219, 20,219, 54,132,150,254,166, 45,119,203, 74, 93,178,134, 14,166,240,107,233,160, 97, 24, 34,191,113, 55,221,172, 42, 94, +149, 74,133,168,196, 68,220,125,246, 12, 0,208, 39,236,251, 26,195,177,237, 92, 36,188,188,188,106, 11,173,107, 67, 39, 7,164, +157,137, 42,205,180,229,201,184,241,215, 30,152,154,202, 0, 0,222, 65, 35,192,178,165, 2,171, 88,174,134, 77,243, 70, 32,148, + 86, 59,188, 95,106,229,120,138,207,138, 93,168,142, 3,165, 28, 40,167, 3,165, 28, 68,166,214, 38, 19, 63, 31, 3,142,211, 33, + 32, 32, 0,132,199,131, 78,163,196,160,222,221,145,155, 95, 8,107, 11, 51,131,226,150,101, 89, 4, 5, 5, 73,170, 59,254,232, +209, 35,185,190, 32,171, 57,141, 52, 40, 46,150, 67,169, 84, 66,173,210, 66,173,209,130,107,202,226,219,175,134, 67,171,214,162, +100,104, 96,233,111, 83,251, 65,173,210, 32,201,132, 97,124,189,108, 53, 12,136,252,118, 92,166, 89,109, 2,171, 92, 20, 84,135, +170,250,252, 85, 35,178,238,142, 30, 61,218,207,199,215,247,214,224,110,190, 63, 68,199,196,166, 69,199,196,190,118,158,139,187, +239,211,241,225,187,166, 11, 88,137,159,161,226, 10,120,181,185,240, 13, 49,183,176,176,208, 71, 38,147,225,193,131, 7,224,241, +120, 32,132, 60,162,148,250, 0,192,184,113,227, 18,248,124,126, 51, 30,143,135,181,107,215, 18, 62,159,223, 50, 48, 48,112, 46, +128, 61, 53, 84,228, 60, 77, 77, 77, 95,113,175, 88,150, 69,104,104, 40, 70,142, 28, 89, 33,174, 88,150,197,150, 45, 91,224,239, +239, 15,149, 74,229,105,160, 8,190, 1,160,147, 1, 14, 31, 41, 19,229,181,138, 80,173, 86, 59, 58,123,240,224,119, 16, 17,129, + 14,205,154,121,249,249,249, 65,173,126,105, 96, 54,109,218,180, 81, 97, 97,225,115, 66,200,239, 0,126,166,148,222,169,145, 79, + 65,145,152,144, 82, 94, 89, 69, 64, 64, 64,133, 99,165,239, 94,177, 44, 11, 9, 43,171,179,192,162,148,162,184,184,152, 57,121, +242,164,141,167,167, 39, 1, 0, 47, 47, 47,114,245,234, 85, 43,137, 68,242,194,201,201,169,214,138,175,196,204, 28, 91, 70, 15, + 1, 0,124,221,173, 71, 69,133,232,228,194,185, 16, 8, 4,120,119,198,220,215,158,123,142,227,120, 48,194, 40,174, 12,208, 34, +111, 75, 92, 85,118,176,194,194,194, 98,195,194,194, 94,115,195,222,154,131,101,136,229,111,104, 45,168, 50, 86,172, 88,129,150, + 45, 91,214, 88, 0,173, 89,179, 6,219,183,111, 95, 65, 41,125, 92,215,255, 15,121,183,181, 55, 86, 30,140,109,230,238, 77, 0, + 96,209,212,222, 76,113,113, 49, 46, 93,186, 4,115,115,115, 60,122,244,200,208, 4, 54, 53, 55, 55, 95,200, 48,204, 32, 94,229, +158,253, 85, 11, 75, 29,199,113,123,243,243,243,171,157,166,129, 82, 64,173,209,162,184, 68, 1,149, 74,133,169,179,126,170, 53, + 28, 97, 0, 81,171, 10,249, 65,157, 3, 37,213, 57, 56, 1, 45,130, 48, 97,164,244,181, 66,155, 87, 58, 21, 24, 90, 5,148,174, + 45,125,251, 90, 12, 40, 5,116, 58,192,198,206, 10,191,238,250,161,198, 40,208,234,184,178,218,176, 14, 69, 74, 29, 60,219,133, + 32,229, 94, 68,133, 99, 36,100, 75,155,134, 89,129, 0, 28, 37,165,179, 55, 84, 39,128,132, 18,151,220,244,199,110, 27,142, 69, + 99,108, 72, 75,236, 59, 27,133,129,221,124,112,225, 90, 28,130,219,122, 33,246,225, 51,120,187, 53,198,218,205,123, 65, 41, 10, +127, 89,185,248,249,203,130, 76,155,104,136,131,117,245,234, 85,121,101,215, 74,255,147,214, 94, 14,150, 54, 5,150, 57, 88,114, +133, 18, 51,230, 24, 52, 29, 79,105, 26,117,106, 39, 49,228,228,154, 28, 42, 67, 4, 88,101, 39, 11,181, 76,179,210, 20,128, 63, + 48,251, 63,153, 97,234,116, 58,252,241,199, 31, 21,233, 81, 85, 58,234,167,157, 1,226, 6,137,137,137,136,137,137, 65, 96, 96, + 32,242,243,243, 33, 96, 24, 76,143,142,134,215, 71, 31, 65,197,178,224, 56, 14, 66,161, 16,227,198,141, 51, 56, 62,235,152, 43, +151,245, 99,211,209, 90,242,146, 31, 66, 66, 66,222,121, 80, 92,140,216,248,120,116,251,230, 27, 0,192, 31,127,252,241,202, 51, + 49,109,218, 52, 97, 92, 92,220, 39, 55,111,222,252,132, 16,178,130, 82, 58,189, 58, 78, 53, 85, 84,244,193, 26, 60, 98, 0,222, +241,108,138,237,155,119, 86, 28,159, 54,107, 10, 4, 2, 22, 2,129, 0, 22, 22, 22, 6,221,141,126,222, 93, 82, 82,194,236,219, +183,175, 97,151, 46, 93,216,177, 99,199, 18, 0,216,176, 97, 3,179,105,211, 38,233,233,211,167, 89,115,115,243,244, 90, 69,165, + 90,253, 90, 26, 19, 66, 32, 16, 8,192, 10, 89,128,227, 64, 8,145, 46, 91,182,108, 81,108,108,108, 27, 15, 15, 15, 40,149,202, +143, 8, 33,183,141,243, 96, 25, 81,155, 22,169,170, 47, 85,153, 11, 85, 29,178,244,251,101, 85, 39,208,244,251,100, 1,120, 43, +131, 45,248,181,137, 42, 30,143, 87,171, 59,197, 48, 76,173, 77,132,211,166, 77,131,169,169,105,117, 5, 15,141,142,142,142, 75, + 79, 79,223, 64, 41,253,169, 62, 55,114,236,220,237,216,133, 95,246, 43, 68, 89,219,169,133,133,197,139,174, 93,187, 22, 1, 80, +239,217,243,106,133, 88,169, 84, 86, 91,112,155,155,155, 47,220,180,105,211,228,190,125,251, 50,149,167, 10,208,111,198, 43,223, + 52, 26, 13,246,236,217, 51,121,246,236,217,168,206,245, 42, 47,188, 75,138,229,144,151,117,112, 78,136,217,103,104,102, 94,237, + 33,153,165, 19, 26, 54,211, 85, 91,136, 48,108,105, 31, 33, 7, 23,223,138,223, 76, 77,197,208,213,192, 73, 8,243,248, 89, 82, + 90,131, 70, 14, 86, 72, 72,206,130,125,227,150,200, 77,125, 25, 15,124, 62, 15,130,178, 38, 66, 11, 51, 41,178, 50, 51,193, 48, +188, 26, 5,241,226, 29,183,113, 45,230, 25,246,159,189, 3,181,162, 24, 43,183,158,132, 90, 89, 4,181,162, 24,106, 69,233,231, +210,217,159,129, 16, 60, 87, 43,138,220,235,244, 0,243,249,104,219,182,109,181, 2, 39, 53, 53,213, 64, 7,139, 86, 56, 88,114, + 69, 29,211,200,176,154, 82,141, 14, 85,249,241,250, 10,130,242,169, 27, 36, 18,137,255,150, 45,213, 79,199, 80, 21, 28, 29, 29, + 79,200,100,178, 38,134,158, 95,135, 73, 71,151, 90, 88, 88, 44,244,240,240,240, 92,185,114,165,128,199,227,225,221,119,223,117, +255,236,179,207, 18, 1,160,101,203,150, 78,229,121,204,248,241,227,233,213,171, 87, 99, 74,235, 22,213, 67, 40, 20,198,155,155, +155,251,119,237,218, 21,249,249,249, 72, 78, 78,134, 84, 42,133,215, 15, 63, 32,122,252,120,248,174, 91, 7,166,107, 87, 16, 66, + 32, 20, 10, 17, 29, 29, 13,137, 68, 18, 95, 67,102,222, 22,192,247, 0, 58,224,101,179, 32, 5,112, 9,192, 44, 74,233,181, 42, +242, 59, 6, 0,116, 28, 87, 91, 98, 13,159, 49, 99, 6,242, 4, 2,160, 87, 47,176,143, 31, 67,173, 86, 35, 48, 48, 16,254,254, +165, 51,113, 4, 6, 6,130,207,231,195,199,199, 7, 78, 78, 78, 88,187,118,237,112,188, 58,178,250,213,188,171, 72,131,196,132, + 20, 4, 6, 6, 86, 56, 85,189,122,245,170,112,176, 4, 2, 65,133,147, 69,116, 60,131, 10, 51,125,129,165,209,104, 8,203,178, +252,207, 63,255,156,124,250,233,167, 84,163,209,112, 44,203, 50, 27, 55,110, 36, 87,175, 94,229,203,229,242, 90, 43,224, 45,250, + 13,194,215,221, 75, 77,208,197, 77,108, 33, 96, 5, 16,178, 44,102,196,167, 84,164,139,217,150, 93,194,240,240,240,129, 30, 30, + 30,165,205,237, 0,223, 56, 15,150, 17,181, 24, 60, 89,149,196,145, 74,111, 63, 11, 0, 41,219,207,210, 19, 82, 89, 40, 29, 17, +216,166,210,185,229,199, 85,149, 62,203,143,223,125, 27,247, 83, 83, 13,248,225,149, 43, 87,220,252,252,252,144,148,148,244,218, +200,182,242, 2, 75, 42,149, 66, 34,145,224,242,229,203, 0,240,176, 58,178,243,231,207,255,136,210, 89,146, 1, 0, 78, 78, 78, +129,193,131,187, 92, 14,232,209, 6, 59,194,118,230,167,167,167,251,148,207,129, 67, 8, 33, 78, 78, 78, 35, 5, 66,254,144,102, + 45,156,131,192,113,223,159, 61,242,215, 55, 53,221, 72, 51,119,239, 34, 0,114,189, 81,132,203,235, 19, 33, 12,195, 12,234,219, +183, 47, 19, 23, 23,135, 33, 67,134, 96,251,246,237,213,158, 59,114,228, 72,236,218,181, 11,125,251,246,101,230,204,153, 51,168, + 54,129, 85,234,142,168,222,218,195,248,224,225, 93,108,219,185,177,218, 62, 70,118,118,182, 0,128,204,204,172,138,223,252,253, +107,158,136,153,211,170,206,220,190,121, 61,176,125,231,119,217,228,140, 60,112, 90, 37, 20,133, 47, 94,214,112,243, 50, 64,181, + 10,176, 38, 86,112,176, 49,199,173, 43,167, 85,106,149,226, 76, 77,156,147,251,122, 99,124,111, 79,128,114,232, 55,253, 87, 28, +251,105, 82, 69,243, 78,199, 1, 83,112,110,207,106,131,251,240, 85,134, 64, 32, 64,116,116,180,188, 58,247,138,199,227,213, 58, +167,214, 75,151, 81,131,146, 18, 57, 74,228,138,183,150, 70,132, 16, 91,123,123,251, 95,172,172,172,196, 85, 9, 40, 66,136,173, +173,173,237, 47,214,214,214, 98, 67,155, 8,171, 19, 87,101,243, 98,221, 28, 61,122,116,157, 68,150, 72, 36,106,242,240,225,195, +138, 73, 70,107,250, 84,169, 84, 8, 14, 14,230, 27,152, 89, 30, 37,132, 60,113,116,116,188,228,229,229,101,158,144,144,128,157, + 59,119,178, 2,129,192,185, 60,255, 40, 44, 44, 4,143,199, 67,102,102,166, 6,192,199,181, 53,145, 41,149,202,136,136,136,136, + 86,189,123,247,230,197,199,199,131,199,227,149,134, 43, 48, 16,190,235,214, 33,230,203, 47, 17,244,236, 25, 20,106, 53,196, 98, + 49, 78,157, 58,165, 46, 41, 41,137,168,142, 79, 34,145,108,120,250,244,169,183, 88, 44,134, 90,173, 6,199,113, 96, 24,134,240, +249,252,142, 22, 22, 22,107, 0,180,121,245,157,178,179, 27, 55,237,187,230, 58,173, 86,151,158,148,144, 85, 91, 28,100,103,103, +227,232,209,163,104,215,174, 29,130,130,130,144,154,154,138,199,143, 31,163, 87,175, 94, 21,231,220,189,123, 23,183,111,223,134, +171,171,107,237, 14, 30, 79, 3, 87,143, 38, 96, 5, 44, 4,172,160,244, 83, 32, 40,219, 74,191,151,255, 86, 62,103, 97, 93, 28, + 44, 0,144,201,100,229,207, 5,215,164, 73,147,244,244,244,116, 71, 0,188,242, 9, 88, 13,169,172,148,151, 17,229,226,138, 21, +178, 21, 78, 22, 0,228,229,229, 41,250,246,237,251,187, 82,169, 28,131,122,172, 40, 98,196,191, 18, 55,254, 67,215,254, 45, 2, +235,131,246,237,219,175, 27, 54,108,216,187,171, 86,173,130, 76, 38, 67,122,122,122, 69, 65, 40, 20, 10,209,168, 81, 35,228,228, +228, 96,253,250,245, 72, 73, 73, 57, 15, 96,156,161,127,156,158,158,126,245,209,157,135,217,193, 3,219, 91,123,183,111,110,145, +252, 48,165, 29,128,203,101,226,234,215, 97,211, 62, 24, 19,220, 63, 0,172, 80,128,228, 71,207,255,223, 34,132,199,227,241, 8, + 33, 24, 50,100,136, 65,231, 15, 29, 58, 20, 17, 17, 17,168,169, 57,145, 43,119,176, 74, 20, 40,150,191,189,202,217,132,201, 35, + 49, 97,242,200, 10, 17, 97, 72, 19, 75,169,184,221, 93,131,192, 82,175, 58,182,123,253,216,214, 1,129, 46,254,222, 77,112,237, +230, 29,236, 88,247,210, 84,216,252,227, 34,124,183,249, 60, 26,217, 91, 66,173, 44,198,137,125, 27,159,171,149, 37,171,234,105, +194,149,138, 90, 66, 96,224,252,146,175,184,166,229, 2,171, 69,139, 22,213, 58, 88, 57, 57, 57,242,218, 10,132,138, 52, 82,105, + 80, 84, 44,135,188,228,237, 8, 44, 66,136,111,199,142, 29,207,236,221,187,215,218,206,206, 14,105,105,105,175, 8, 44, 66,136, +111,135, 14, 29,206,236,221,187,215,218,222,222, 30,201,201,201, 6, 79, 15, 82,133,184, 66, 86, 86, 22,201,205,205,229, 44, 45, + 45,235, 36,178, 24,134,129, 82,169,196,189,123,247, 12,253, 91,131, 71,124,153,155,155,111,217,181,107,151,249,139, 23, 47,192, +227,241,112,239,222,189, 87, 70, 17,150,111,191,254,250, 43,219,175, 95,191, 77, 0, 90,213,196,167,213,106, 87,140, 28, 57,242, +147,212,212, 84, 75, 59, 59, 59,164,167,167, 67, 40, 20,130, 82, 10, 18, 28,140, 78, 79,158, 64,173,211, 65, 34,145,224,193,131, + 7,216,176, 97, 67,177, 82,169, 92, 81, 77,250, 8, 77, 76, 76,220, 88,150,197,136, 17, 35, 94, 57,182,117,235, 86,244,241,231, +249,143,237, 46, 42,210, 66,172,204,144,244, 60,193,227,241,200,184, 25,223,187,183,237,220,171,197,253,152,107, 9, 89, 25, 41, +151,106,185,125,141, 74,165,130,135,135, 7,110,220,184,129,179,103,207,162,107,215,174, 8, 10, 10, 66, 84, 84, 20, 78,159, 62, +141,219,183,111,131, 16, 2,107,107,235,242,110, 22, 53,246,181, 80, 21,107,145,153,154,253,154, 91, 85,121,159,101, 89, 40,133, +106,131,210, 40, 62, 62, 30, 55,110,148,150, 63, 37, 37, 37,224,243,249,218, 25, 51,102,128, 97, 24, 26, 19, 19, 3, 59, 59, 59, + 58,107,214, 44, 29,159,207,215, 38, 37, 37, 25,250,236,151,186, 85,101,226,138,207, 10, 94, 17,102, 28,199, 21,222,189,123,119, + 44, 33, 36,138, 16, 82, 62, 27,170,113, 30, 44, 35,254,167,192,175,161, 22,242, 4, 64, 55, 66,200,240, 67,135, 14,173, 88,179, +102,141,109, 72, 72, 8,114,115,115,225,226,226, 2, 71, 71, 71, 28, 59,118, 12,199,143, 31,127,161,211,233,166, 83, 74,183, 87, +241,146,117,171,110,174, 12, 74, 41,117,114,114,218,171, 44, 42, 26,239, 23,228,137,243,123, 46,134, 57, 58, 58,142,107,208,160, +193,212,209,115, 63, 28,211,165,111, 27, 60,184,253, 20, 87, 79, 71, 35, 35,233, 5, 70,119,154, 85, 35,103,229, 78,238, 22, 22, + 22,159,152,152,152, 8, 1,168,171,168, 5,191, 50,138, 80,159, 83,167,211,233, 84, 42, 21,118,239,222,109,144,200,218,185,115, + 39, 20, 10, 5,116,149,218, 81,245, 57, 41, 71, 9, 95, 32,130, 83, 35, 15,168,213,197,224,184,250,185, 53,250,156,132, 16, 48, + 12,131, 4,161, 16,118, 47, 94,224,218,181,107, 6,113,232,215,156,171,138, 79, 74,169,130, 16, 50, 98,245,146, 25,199, 38,134, +126,111,209,181,125, 43,124,253,195, 86,168,213,155,193,240, 24, 72, 68, 44,252, 2, 58,128, 7, 37,126, 9,159,153, 87, 82,144, + 59,162,242,146, 57,175,113,214,212,146, 66, 1, 29,199,225,108,228,117,131,239,189,162,148,215,233,192,231,243,241,232,209, 35, +121, 85,163, 7,121,188,210,230, 76,134, 97,170,172,117,191,154, 70, 28, 17,176, 98, 52,114,241,130, 74, 89,244, 86,210,200,206, +206,110,230,193,131, 7,173,203,167, 60,136,138,138, 2, 33,228,158,158, 27, 50,243,224,193,131,214,114,185, 28, 49, 49, 49,229, + 75, 66,221,171,203,123, 84,238, 92,101,101,101,145,244,244,116,152,152,152, 48, 81, 81, 81, 74, 31, 31,159,155,168,121,165,134, + 10, 78,133, 66,241,172,186,254,145, 10,133,162,129, 88, 44, 22, 84,186,214,201,205,205,237, 65,229,166,194,170,194,153,159,159, +127,109,246,236,217,126, 61,122,244,192,204,153, 51,115, 44, 45, 45, 77,127,249,229, 23, 62,143,199, 35, 19, 39, 78,212,101,102, +102, 22,109,220,184,209,252,208,161, 67,200,203,203,187, 92,219,189, 83, 74, 11, 9, 33, 99,219,183,111,191,245,228,201,147, 38, +110,110,110, 40, 40, 40, 0,165, 20, 91,182,108,193,196,137, 19, 33, 22,139,241,224,193, 3,244,233,211,167,164,164,164,100,108, +229,190,145,122,156,132, 16, 66, 57,142,195,252,249,243, 43, 38, 21, 45,159,100,212, 84, 66,176, 97, 90, 83,233,148,141,249,210, +225, 95,111,252, 8, 0,116, 90,173,238,126,204,181,132, 45, 63,125,125,129,101,217,200, 90,210,104,222,148, 41, 83,126,233,213, +171,151, 68, 38,147, 33, 39, 39, 7,151, 46, 93,194,149, 43, 87,112,245,234, 85,168, 84, 42, 88, 91, 91,195,210,210, 18,233,233, +233,136,143,143,151, 3,152, 87, 19,167, 80, 42, 64,179,230,229, 35,121, 95,186, 87, 21,251,172, 0, 2,254,203,145,132,134, 60, + 75,157, 59,119, 70,219,182,109,203,133,143, 46, 49, 49, 49, 93,169, 84, 18, 61,177,159, 90, 46,196,157,157,157,181,191,254,250, + 43,173,137,243,234,134,181, 56,249,237, 60, 8, 89, 22,211,239, 37, 87,136,173,173, 93, 91, 67, 32,100,225,217,123,128,126, 57, +240, 51, 33,100,115,217,119,165, 33,207,252, 27, 84,120,140,156,255,112,206,127,141,192,210,123, 1,118, 16, 66, 78,124,246,217, +103,225,190,190,190,159,173, 92,185,146,176, 44,139,111,190,249,134,166,165,165,253, 86, 86,235,200,173,207,159, 83, 74,127,251, +243,192,229, 47, 70,133,246, 37,211, 86,141,238,120,243, 92, 76,124,203,246,110,104,217,222, 13, 55,207,199,225,167,185, 59,183, +235, 52,186,249,233,233,233,181, 85,155,148,221, 58, 52,175,220,201,221, 58,226,194, 57,235,186,142, 34,228, 56,110,239,206,157, + 59, 39,247,239,223,159,185,126,253,250,107,125,174,202, 39,227,227, 56, 14,103,206,156,129, 90,173,198,111,191,253,198,113, 28, + 87,253, 60, 88,160,135, 87,175, 10, 31,245,219,182,195, 66, 33, 75,112, 37,114, 63,242,115,107,118,229, 88, 86,128, 95,183, 28, + 80,179,172,224,126, 85,199,213,106,117,242,185,115,231,236,223,215,233, 4, 12,195,188, 38,156,170,195,222,189,123, 53, 28,199, + 37,214,146, 46,151, 9, 17,244, 94, 60,243,227,157,189, 6,127,102,223,190,125, 71,129,141,157, 61, 8, 33,200,204,200,196,131, +152,235,154, 19,251, 55,101, 20,151, 20, 26,180, 84,206,199,203,255,172,232,115, 5, 0, 33, 19,215, 84,244,191, 2,128,222,163, +103, 35,184,157, 55,136, 33, 86,211, 75,113,197,105,181, 90, 72,165, 82,104,181,218, 42,167,106, 48, 55, 55,151, 40, 20, 10, 57, +165, 20, 58,157,174, 70,107,136, 2,111, 61,141,116, 58,157,103,110,110, 46,138,139,139,113,229,202, 21,186,100,201,146,172,172, +172,172,138,206,152, 26,141,198, 51, 39, 39, 7, 69, 69, 69,184,124,249, 50, 13, 15, 15,207,202,206,206,158, 91,151,119, 72, 34, +145,248,243,249,252,155,185,185,185,156,137,137, 9,163,209,104, 52, 62, 62, 62, 34,137, 68, 98,240, 66,231,105,105,105, 61,170, + 59,230,234,234,250,240,225,195,135,239,232,116, 58,253, 53, 10, 89,133, 66,225,214,190,125,123, 67,154,118,166,108,222,188, 25, + 7, 14, 28, 8, 40, 40, 40, 24,153,152,152,184, 21, 64, 0,159,207,199,157, 59,119,238, 41, 20,138, 97,253,251,247,223,146,155, +155,123, 13,192, 20, 3,243,141,147,132,144, 17,158,158,158,155, 23, 46, 92, 40, 11, 10, 10,226, 59, 57, 57,161, 77,155, 54,120, +240,224, 1,254,248,227, 15,205,207, 63,255, 92, 92, 82, 82,242, 49,165,244, 76,205,201, 14,162,213,106, 33, 20, 10, 43, 54,145, + 72, 4,150,101, 81, 40,167,248,244,135,199,114, 45, 36,242, 21,223,140,253,131, 2,228,121,242,227, 23,153,207,147,175, 17, 66, + 34,211,210,210,242,171,137, 51,161, 66,161,104,229,232,232,200, 39,132,172, 82,171,213, 99, 38, 77,154,228,176,116,233, 82, 52, +111,222, 28, 47, 94,188,128, 84, 42,133,155,155, 27,178,178,178,112,253,250,117, 93, 73, 73,201, 58, 0,139, 40,165, 53, 54, 59, +230,101, 21,160,161,189,243, 43, 78, 39,165, 20, 84, 11,104,116, 58,232,212, 20, 42,162,129, 64,160, 1,203,178,134, 20,146,148, +227, 56,228, 58, 58, 34,245,212, 41,148,173, 42, 81,173,139,118,236,216, 49, 3, 18,136,131, 80, 36,124,165, 89,144, 16, 2, 86, + 40,132, 64,200,190, 54, 34,198,232, 90, 25,241,175, 21, 88,101, 47, 64, 30,128,113,132,144,173, 93,186,116, 57, 70, 41, 21, 0, +232, 69, 41,189,248, 38,127,158,158,158,126,203,201,201,105,142,125, 67,203,240,158, 35, 59,162,121, 43, 23,232,180, 58, 92, 58, +126, 7,191, 45, 61,180, 43, 53, 57,117,180, 33,107,147,113, 28,119,161,131,127,115, 6,122,115,107, 59, 57, 57,113,245, 25, 69, +152,159,159,191, 96,250,244,233,152, 57,115,102,157, 71, 17, 86,119, 78,212,189,204,113,190,158,182, 13,123,247,236,244, 62, 8, + 67, 85, 42,101, 13, 25, 30, 42,102, 28,101, 89,193,253,235,119,211,124,170, 58, 47, 43, 43,235,253, 49, 99,198,156,225,243,249, + 77,234, 18,231, 28,199, 37,102,100,100,188, 91,123,154,107, 46, 17, 66,220,142,238, 90,255,229,201, 3,155,223,231, 56,157, 43, + 1,192,227,179, 9, 26,181,250,148, 82, 94,176,210,208,197,158,151,141, 11,196,148,213,167,177,118,102,111, 76, 10,223,131, 77, +243, 63,197,156, 31,118,226,251,153, 83,176,100,205,239,248,122,202, 8, 12, 28, 62,134,163,132,249,203,208,251,224,241,120, 39, +215,175, 95, 63,234,211, 79, 63,173, 24,140, 64, 41,125, 37, 67,215,104, 52,114,142,227,176,110,221, 58, 14,192,201,154,248, 94, + 77, 35, 66,107,234, 15,101,104, 26, 21, 20, 20,124, 28, 24, 24,184, 5,128,136, 82,250, 40, 55, 55,247,115, 74,105,197, 18, 78, + 69, 69, 69, 31,183,111,223,126, 11,165, 84, 68, 8,121,237,184, 33, 40,155,178,193,223,210,210,242,102,153,115, 37,170, 79, 71, +247,154,162,186,134,230, 67,157, 1,121, 7, 7,189,229,111, 8, 33, 75, 3, 2, 2,244, 23,123,190, 7,192,191,174,129,162,148, +158, 33,132,120,207,159, 63,255, 75,177, 88, 28, 92, 82, 82,226, 14, 0, 82,169,244,129, 82,169,188, 32,151,203, 87,150,229, 91, + 53,113,168, 76, 76, 76, 30,104,181,218, 22,182,182,182,165, 35,100,203, 68, 22, 0, 28,185,169,187, 73,169,182,206,171,198, 31, + 63,126,188,177,165,165,229,123,132,144,129,148, 82,143,194,194, 66,229, 87, 95,125,117,229,192,129, 3,121, 46, 46, 46, 61,123, +245,234, 69,172,172,172,112,227,198, 13,154,157,157,189, 31,192, 92, 67, 70, 78,115, 28,151,184,108, 89,221,214, 22,172,173, 50, +165, 86,171,159, 31, 63,126,220,166, 71,102, 38,223,138,227, 94, 25,225, 88,213,128,139,251,247,239, 67,169, 84,214, 56, 9,163, + 50, 63, 23, 93,191,156, 13,148,141,230, 44, 71,169,115, 69, 65, 85, 70, 61,101,196,191, 3,228,111, 25,198, 92, 71, 11,209,201, +201,105,136, 88, 42,154,224,226,238,232,147,246, 56, 51,174, 48,191,100,123,122,122,250,122, 74,169,174,190,156,117,153,104,212, +104,243,254,125,156, 47,231,193,210,129, 82, 29, 40, 71, 65, 41, 7,142,211,149, 46, 68, 77, 57, 80,157,142, 16,130,191,148, 37, +249,159, 26, 26, 78, 66,136,165,141,141,205, 34, 74,105, 15, 30,143,199,232,155, 95,250,223,203,156,171,147, 89, 89, 89, 95, 87, +118, 90,255, 27,227,115,223,190,125, 85,138,126, 67, 71, 17, 14, 28, 56, 80, 87,199,119,243,130, 84, 42,173,114, 66,205,226,226, +226,164,180,180,180,247,254, 9,241, 89,238,126, 82, 3, 50,180, 74, 77,237,117, 30, 69, 88, 27,103,227,198,141, 69,106,181,186, + 53, 0,119, 0, 22, 0,114, 52, 26,205,201,172,172,172, 12, 66,136, 63,128,249,101,151,125, 75, 41,189,249,159,124,223, 9, 33, + 18, 27, 27,155,205, 12,195, 52, 52,228,122,173, 86,171,202,201,201, 25,165, 95, 17,208,231,180,177,177,185,201,231,243, 27, 26, +192,147,242,226,197, 11,127, 99,254,105,228,252,215, 59, 88,127, 55,210,210,210,118, 3,216,253, 54, 57,171,155,169,221,136,255, + 95, 20,231,164,255, 45,233, 80, 38,150, 38,254,219,226,179, 92, 32, 85,241,251, 45, 0,228,111,120, 55,131,255, 27,226,133,214, +179,166, 88, 38,160, 58,189,205,176, 60,123,246, 76, 9,224,114,217, 86,249,255,110, 2,232,253, 15,138, 55, 57,128, 33,111,139, +175, 38,209,100,132, 17,255, 54, 48,198, 40, 48,194, 8, 35,140, 48,194, 8, 35,140,120,187, 32, 0,186, 85, 83,179, 49,216,250, + 35,132,116,171, 71,205,233,172,145,211,200,105,228, 52,114, 26, 57,141,156, 70,206,127, 23,231,191, 6,229, 19, 62,254, 29, 27, +128,110, 70, 78, 35,167,145,211,200,105,228, 52,114, 26, 57,141,156,255,182,205,216, 68,104,132, 17, 70, 24, 97,132, 17, 70, 24, +241,150, 97,176,192,146, 57,120,122,218, 54,246,221, 98,213,200, 39,202,170,145, 79,148,109, 99,223, 45, 50, 7, 79,207,127, 99, +164, 17, 66, 36,132,144,225, 2,129,224,140,163,163, 99, 1, 33,228,203,255,209,251, 52, 35,132, 12, 36,132, 44, 34,132,244, 35, +132,152,188, 77,254, 46,132,240,135, 18, 50, 97, 20, 33, 73,163, 8, 73, 26, 74,200,132, 46,132,252,207, 45,155,177,112,138, 83, +224,197,147, 35, 78, 44,156,226, 20, 88,229,241, 25, 78,214,215,206, 12, 94, 29, 54,177,129,213, 91, 74, 55, 83,123,123,251, 13, + 14, 14, 14,207,236,237,237, 19,237,237,237, 55, 19, 66,204,141,217,157, 17, 70, 24, 97,196,255, 31,248,101, 25,114, 16,128, 63, + 1,116,161,148, 70, 84, 62,201,202,165,229,167,158, 30,205,103, 46,254,102, 30,177,181,177,148,104, 52, 58,117,114, 74,186,215, +130,197, 97,251,172, 92, 90,174,200, 73,140,222, 84,143, 66,128,240,120,188, 33, 34,145, 40, 4, 64,185, 80,187,167, 84, 42,143, +233,116,186,221,134,142, 10,114,112,112,136,228,241,120,141,235,242,223, 58,157, 46,233,249,243,231, 29,235, 89,120, 13,114,118, +118,222, 28, 20, 20,100, 18, 16, 16, 0,161, 80,136,249,243,231, 79, 7,176,210, 80, 14, 43, 43, 87, 83,181, 72, 60,149, 47, 20, +118,167, 26, 85, 11, 10, 10, 48,162, 24, 78,171, 60,199, 42,149, 43,114,114, 18, 10, 13, 12,203, 92, 0,163, 81, 58,172,124, 19, +165,116,217,155, 60, 12,163, 91, 19,141, 70, 87,250, 76,176,124,232,204,205,205,255,156, 55,111, 30, 63, 36, 36, 4,155, 54,109, +234,184, 97,195,134,177,132,144,115, 0,142, 80, 74, 19,222,244,225,179, 7,198,181,239,216,113,245,168,233,211,121,242,200, 72, +172,222,188,121, 21, 10, 10, 0, 96,109, 93,159, 37,150,197, 64, 27, 27, 65, 8,165,104, 77, 0, 66,128, 59, 89,217,220,113,181, + 90,183,155,214,117, 29,158, 87,185,135,227,213, 97,245, 59,234,202,145,159, 64,191, 18,245,246,236,148,159,112,225, 43, 0, 61, + 43, 31,215, 42,196,163, 40,175, 81,136,156,222, 78, 6,240,195, 27,138, 43, 19, 91, 91,219,168,195,135, 15, 55, 12, 8, 8,224, + 3,192,205,155, 55, 63, 10, 9, 9,233, 74, 8,105, 65, 41, 45,248, 15,137,117, 49,159, 97, 38, 8, 5,130,238, 58,157,174, 37, + 0,240,120,188,104,149, 70,115, 70,203,113,107, 13,157, 83,205, 8, 35,140,248,159, 54, 47,106,212, 34,255,149, 2, 11,192,159, +148, 82, 66, 8,161,168, 52,212, 91,102,239,225,229,237,237, 57,253,228,193,173,141,242,115,242, 20, 63,254,176,237,118, 17,143, + 45,118,247,116, 19,254,184,114,153,197,132, 41,211,166,202,236, 61,174, 21,101,196,199,213, 33, 18,157, 37, 18,201,129,229,203, +151,183, 8, 14, 14, 22,216,217,217, 33, 35, 35, 3,247,238,221,107,113,254,252,249,190, 91,183,110,157, 78, 8,233, 79, 41, 53, +100,225, 43,183,115,219, 54,219, 73,173,172,161,211,104,224,228,211,186, 98,130,188, 71,231, 79, 67,171, 86,131,211,104,224, 25, +210, 23, 0,192,113, 28,188,188,188,120,245, 76,124, 39,111,111,239,237, 75,151, 46,101,149, 74, 37,174, 93,187,134, 11, 23, 46, +112,233,233,233,225,134,114,200,236,221,131, 25,137,116,247,144, 17,159,153,127, 24,210, 84,224,108,111, 11,192, 4,247,159,106, +219,159, 56,125,190,205,193,221,191,141,151,217,187, 15, 41,202,120,112,161,102,145,102,213,142, 16,178,164,124, 70,103, 66,200, +247, 77,154, 52,249, 90,255,156,202,235,218, 81, 74,193,231,243, 51, 10, 11, 11,135,188,120,241,226,118,101, 78,141, 14,252, 29, + 59, 74,245,195, 87, 19,134,243,254,250,235, 47,169,151,151,151, 18, 0,150, 45, 91,134, 69,139, 22, 9, 79,157, 58,245,193,182, +109,219, 62, 32,132,172,162,148, 30,121,147,135,143, 5,102,141,154, 62,157, 39,123,246, 12,178,187,119, 49,162,160,128,255, 29, + 48,171, 46, 2,139, 16,210,212,193, 65,176,111,250,180, 49,158,205, 92,219,177, 44,107, 83,186,184,182,234,133,123, 82,210,237, +129,225,223,109, 8, 37,132, 12,160,148, 62, 50,144,143, 15, 96, 33, 0, 49,128,175, 0,204,207,202,202,114,211,233,116,112,112, +112,152, 79, 8, 57, 4, 96,177,173,173, 45,205,202,202,154, 77, 41,213,214,228, 92, 21, 36,208,175,158,147,102, 61,154,251,141, +194,115,114,178,199,180,158,142, 39,204, 92,201,226, 5,171,211,174, 0, 64, 79, 87, 87,211,102, 30,210,217, 50,179,150, 86, 5, +169,103,103,247,116,117,221,120, 34,193, 48,129, 93, 89,100, 2,128,147,147,211,178,109,219,182, 53,106,219,182,109,197, 51,222, +170, 85, 43,222,178,101,203, 26,124,249,229,151,171, 0,140, 49,144,207,221,214,214,246,148, 78,167, 83,102,103,103,187,151,255, +110,231,219,191,189,181,169,244,221,172,220,194,200, 23,177,135, 34, 12,228, 10, 16,179,236,254, 35,219, 87, 59,182,106, 27,200, +200,108,236,160, 72, 77, 67,145, 70,221,237,194,165,171, 93,198, 78,152, 53,165, 44,141,174, 27,139, 24, 35,140,248, 87,163, 90, + 45,242,223, 44,176, 80,118, 67,175, 65, 36, 18,134, 46,152, 55,155,228,101,231,201,149,133, 69, 42,173, 66, 33,103, 4,156, 34, +234,222,147, 76,134,207,203,155, 54,121,178,233,236,185,243, 66, 1,140, 48, 84, 92,249,250,250, 94, 63,112,224,128,157,149,149, + 21,242,243,243,145,157,157,141,235,215,175,131, 82,138,254,253,251,139,218,182,105,211,250,171,249,243,175, 16, 66, 2, 13, 17, + 89, 82, 43, 27, 44,235, 88,186, 70,236,215,207,178,203,255, 7, 27, 6,133, 84,156,179, 40,165,116, 85, 11,177, 88, 92,177, 80, +112, 61, 16,248,238,187,239,178, 0,240,201, 39,159, 20, 20, 22, 22,134, 1,216, 65, 41, 77, 53, 84, 92,217, 56, 58, 29,251,101, +221, 50, 73, 75, 87, 55,168, 53, 90, 36, 62, 79, 3, 95, 96,129,134, 13, 89,140, 25,209, 93,208,185,189,149,205,146,111, 55,252, + 33,181,117,239, 87,156,245,224, 84,117, 92, 22, 22, 22, 91,119,239,222,141, 61,123,246, 0, 0, 30, 60,120, 0, 55, 55, 55,105, +109, 97,136,137,137,105,214,167, 79,159, 93, 0,222,169,237,220,202, 19,217,139, 68, 34,116,236,216, 17, 94, 94, 94, 56,124,248, +112, 23, 0, 71,222,244, 1,148, 71, 70, 66,118,247, 46, 16, 81,247,202, 10, 33,164,169,159,159,203,213,227,127,108,183,249,227, +248, 61,252,240,195,102, 36, 36,148, 26,107,205,154, 53,195,240, 97,131, 4,209,209,151,189, 7, 14, 28,126,153, 16,210,145, 82, +250,192, 0,218,133, 27, 55,110,156,219,164, 73, 19, 12, 28, 56,112,144,183,183,183,131,153,153, 25,214,175, 95, 15, 71, 71,199, +102, 42,149,234,209,225,195,135,157,158, 63,127,142,201,147, 39, 3,192,244,234,136,186,188,223,229, 43, 81,111,207, 78,205,253, + 70, 65,102,230,136,141, 59,119,227,254,173,173,157,148,234,123, 95,133, 77,108, 48, 82, 78, 69,163, 27,186,153,134, 54,246, 15, +178,126,199,187, 15, 92,252,110,219, 40,116, 23,159,204,159,208, 44,156, 47, 86,108, 93,176, 60, 45,251,181,123, 30,180,143,215, +162, 32,222, 42,230, 12,178, 41, 93,192,149, 9,171,138,140, 72, 71,209,167,115,231,206, 21, 9,247,236,217, 51, 40,149, 74,120, +122,122, 50, 42,149, 42,216,192,120,117,194,214,225,237, 0, 0, 32, 0, 73, 68, 65, 84,127,239,189,247,254, 58,126,252,184,181, +187,187,251, 43, 75,183, 56, 88, 91,188, 31,113, 96,213,228, 37,171,127,247,176,243,234,151,151, 25,119, 48,186, 54,113,213,161, +157,223,217, 19, 7,182,203, 72, 81, 50,132, 22, 47, 0, 46, 27,143,119,253, 10, 98, 98,133, 33, 95, 76,227, 7,191,219,181, 65, +247,158, 3,206, 18, 66,222,165,148,222, 48,150, 49, 70, 24,241,175,118,177,232,255,202,189,240,245,220, 13, 82,213,141,113,148, +243,113,176,179,150,172, 90,190,229, 6, 79,173, 82,153, 88,152,169,205,205,204, 41, 76,205,120,106,141,186,200,217,173, 9,203, + 81,174,202,165, 66, 42, 15,213, 36,132, 16,137, 68,114,224,200,145, 35,118, 2,129, 0, 28,199,193,214,214, 22, 79,159, 62, 69, + 94, 94, 30, 10, 11, 11,145,112,239, 30,154, 56, 55,194, 55,161,179, 29, 39,207, 14, 61, 64, 8,241,215,111, 46,172,106,248,167, + 78,163,174,156, 64,213, 45,238,251,202,103, 77,156,213,224,105, 82, 82, 18,100, 50, 25, 90,180,104, 33,187,116,233,210,197,234, +196, 85,101, 78, 43, 43, 87, 83,190, 76,178,231,231, 95,230, 75,212,154, 24,196, 61,206, 65,243, 38,157, 96,111,237,140,180, 28, + 21,174, 94, 63,130,152,168, 29,112,109,224,140,137, 95,116, 21,135, 47,219,183,219,210,178,169,115,110,238,147,130,170, 56, 11, + 10, 10,100, 77,155, 54,133,179,115,233,186,100, 58,157, 14,113,113,113,208,233,116, 21,251,250,159, 91,246,159,135,182, 32, 17, +163, 62,250, 8,217,217,217,178,170, 56, 5, 60,104,167,141, 29,206,151, 8, 0,161,212, 74, 85, 84, 84, 84,225, 6,170,213,106, +220,185,115, 7,129,129,129, 65,123,247,238,173, 81, 13, 25, 26,159,106,224,251,213,191,253,182,102, 68,126, 62, 3, 0,155, 8, +225,212,148,126,111,232,179,100,103, 39,216,127,242,196, 54, 27, 30, 19, 15, 43,243,239,112,253,122, 34,212,234,210,240,102,103, +103, 98,210,132, 2,176, 2, 83, 28, 62,252,187,181,167,103,199,253,101, 77,100, 92, 45,225, 20,159, 56,113, 2,147, 38, 77, 66, + 92, 92,156, 19,143,199,195,181,107,215, 32,145, 72,176,124,249,114,158,167,167,167,147, 84, 42,197,201,147, 39,145,145,145, 65, +106, 10,231,159,167,254, 92,156,159,112,225,171,231,228,100,143,141, 59,119,227,179, 97, 67,224, 64, 31, 95, 52,119, 37,139,223, +235,221,225,107,202,107, 20, 34, 53,245,177,116,107,209, 27,172, 80,134,137,179, 22,225, 65,204, 81,203,146,194,168, 9, 68,151, +220, 8,101,107,243,189,178,216,241,222,129,186, 53, 59, 47,251,157,113,190,225,226,228, 55,238, 26,128,168,151, 2,171, 25,159, + 48, 58,243,114,183,242,209,163, 71, 72, 72, 72, 0,159,207,135, 92, 46,135, 86,171,173, 50,156, 13, 26, 52, 24,167,213,106,191, + 46, 75,231, 45,142,142,142, 31,111,223,190,221, 90, 95, 96,151, 59, 87, 57,121, 5,185,151,111,196,222,159, 54,110, 96,151,200, +171, 49,201, 22,190,125,147,242,238, 30,202,175, 38,141,196, 18,161,112,255,201,131,191,203, 52, 79,206, 67,234,217, 5, 2,153, + 27,116,154, 84,148,228, 22,163, 48, 33, 29,202, 95,126, 66,171, 9, 95,226,232,161,125, 50,239,150,254,123, 9, 33,110,148, 82, + 85, 61,222, 77,131, 97,228, 52,114, 26, 57,255,153,156, 53,105, 17, 0,126, 0,236,203,190,103,163,180,107,140, 13,128, 23, 40, + 93,182,203, 30,128, 10,128, 80,239,154,202,251,250,231, 86,222,215,255,158, 93,246,221,174,236,243, 6,128,156,122, 11,172,234, +213, 36, 83,160,229, 56,145,208,214, 86,249,241,224,110, 45, 78,159,189,121, 71,106,109,206,127, 47,216, 47,232,122,116,194, 21, + 6,140,134, 16,198,160,126, 29, 60, 30,111,200,170, 85,171, 90,154,153,153,129,227, 56,152,155,155, 35, 43, 43, 11, 42,149, 10, +249,249,249, 80, 22, 22, 64, 93, 88,128,187,201,207,208, 33,168, 11, 6,244,120,207,243,247, 67, 71,134, 0,216, 85, 19,175,147, + 79,235, 10,231,106, 81, 99,235,151, 86, 68,114, 94,133,216,250,174,181, 27, 88,153, 12,221,167,133,190, 73,194,223, 22, 10,133, + 39,250,247,239,223,115,198,140, 25, 76,122,122,250, 73, 66, 72, 7, 74,105,173,205,163,106,145,120,234,248,169, 33,150,150, 50, +138,189,103,142,160,115,235, 97, 48, 17,242,144, 93,160, 6, 33,192,189,216, 3, 32,196, 10, 81, 15,210,209,169,149, 25,222,123, +223, 83,118,104,223,189, 25,120,217,255,231,181,164,201,205,205, 69,102,102, 38, 52, 26, 13, 52, 26, 13, 6, 14, 26,132,109, 91, +183,162,184,184, 24,114,185, 28, 42,149, 10, 58,157, 14, 12,195,224,204,177,189, 72,126,114, 15,237, 3, 3, 81,157,245,186,229, + 54, 21, 16, 66,174,222,191,127, 31,247,238,221, 67, 74, 74, 10,196, 98, 49, 28, 28, 28,176,104,209, 34, 40,149,165,107,136, 13, + 26, 52, 40, 8, 64,244,155,190, 72, 9,192,134, 39, 90,237, 87, 61, 15, 30,180,187,116,240, 32,119,229,200,145, 20,113, 81,209, +122, 67,174,101, 89, 12, 92,246,253, 23,205,165, 82, 41, 82,146, 86,193,195,131,197,244, 47,173, 17,246,221, 11, 0,192,228, 73, + 13,209,198,223, 6, 5,121,251, 96, 99, 55, 23,107,214, 76,113, 29, 61,122,197, 71, 0,182,212, 66,253,213,145, 35, 71, 6,184, +185,185, 53,184,125,251, 54, 17, 10,133,144, 72, 36,144, 72, 36, 16,139,197,200,204,204,196,211,167, 79,233,178,101,203, 82, 81, +218,132, 88, 45,202,154, 1,123, 78,235,233,120,226,254,173,173,157, 26,240,158,220, 29, 48,177,227,179,168,171,183, 11, 79,159, +185,244,173, 86, 33, 78,206, 75, 57, 59,187,105,155,219, 54, 19,102, 46,196, 79,203, 22,224,254,181,200, 28,123,231,130,181, 18, +162,220,210,182,123, 21,174, 88,151,133,252, 9,243, 7,107,199,141, 30, 96,113,212,254,242,184,227,124,146,245,252,197,173,229, +120,122, 91, 46,122,167,245, 72,247,102,140,234,252,249,243,146,206,157, 59, 67,161, 80, 84, 56,145,219,183,111,231,180, 90,109, +149,205,206,106,181,250,235,212,212, 84, 71,185, 92,142, 30, 61,122, 76, 94,190,124,185,180,124, 13, 57,157, 78,247,138,115,181, +120,229,182, 83, 83,191, 94,123,225,212,174,239,156, 22,135,126,220,101,196,196, 37, 23, 80,205, 58,143,124,134,153,112,244,224, +102, 7,177,165, 6, 18,171,247,160,200,144,227,254,134,207, 80, 82,160, 64,155,197, 11, 1, 8,161,210, 48, 88,223,123, 32, 4, +214, 78, 88,240,233,199, 78,243,214,111,252, 2,192, 42, 99, 61,222, 8, 35,140,168, 4,123, 66,200, 49, 0, 8, 13, 13,157, 27, + 22, 22, 22, 75, 8, 57, 70, 41, 13, 41,171,208, 29,163,148,134,148,159, 83, 86,102,191,182, 95,126,110,229,253,202,223,231,204, +153,227, 29, 30, 30,190, 52, 48, 48,112,215,229,203,151,159,212, 71, 96, 49,229,138, 81,255,243, 21, 7,139,227, 34, 31, 61,126, + 86,242,126,247,118, 13,142,254, 25,125,115,204,152, 94,239, 14,238,211,233,189, 39,201,153,241,174, 46, 14, 54, 49,177,119,205, + 56,142,139, 52,228,207, 68, 34, 81, 72,215,174, 93,249,185,185,185, 48, 49, 49, 65, 86, 86, 22, 82, 83, 83,161, 86,171,161,200, +207,131, 50, 63, 15,138,188, 92,168,243,115,145,112,243, 58,124, 92,155,137,202, 58,193,215, 38,124,170,116,166,244,157, 44,161, +169, 41, 68,166,166, 32,117,108, 30, 36,132,124,104,105,105,121,149, 16,242, 85, 89, 97, 52, 97,246,236,217, 47, 56,142,195,146, + 37, 75,204,100, 50,217, 94, 66,136,168, 54, 30, 83, 91, 94, 72, 96,171, 22, 76,252,211, 40,116,244, 29, 5,247,166, 31,224,105, +134, 28, 47, 10,213,200,204, 83,163, 77,231, 31,209,216,119, 33, 26,181, 10,195,189,196, 28, 56, 53,112, 99,192, 23,213,184, 40, +115, 70, 70,198, 43,251,187,118,238, 68, 73, 73, 9, 92, 93, 93, 49,108,216, 48,204,158, 61, 27,195,134, 13,131,147,147, 19, 70, + 12,238,131, 5, 11, 22, 32, 51, 51,179,182,160, 42,221,221,221,149, 46, 46, 46, 74, 23, 23, 23,165, 90,173, 70, 81, 81, 17,242, +242,242, 42,199,247,148, 58,191, 29,246,246,115, 28, 29, 29,163,236,237,237, 99,197, 98,241,241, 59,132,196, 43, 27, 55,182,239, +208,183, 47,241, 26, 60,152,151,100, 98, 66, 34, 0,153, 33, 92, 54, 86,130, 94,193, 93,123, 10,243,114, 55, 3, 40, 53,165, 62, + 30, 99,139,191, 34,188,113,233,162, 63, 38, 77,112, 5, 97,196, 32,140, 16, 37,197,231,209, 54, 32,144,181,176, 32, 33,181,164, +245,112, 0,119, 58,116,232,224, 52,113,226, 68, 34, 18,137, 48,121,242,100,245,167,159,126,250,112,216,176, 97, 15,207,157, 59, +167,115,113,113, 65,163, 70,141, 72,163, 70,141, 28, 1,220, 41,187,166, 70,152,185,146,197, 74,245,189,139, 22,110,210, 39, 58, +216,180, 47,210,136, 6, 46, 88,158,150,253,237,218,199, 63, 60,189, 95,210,236,254,181,200,236,135, 49, 71,185,167, 55,254,124, +241,127,236,125,119,124, 21, 69,247,254, 51,187,183,151,244, 94,104, 73, 72, 33, 9, 36,180, 80,165,131,210, 65, 2, 34, 29, 20, +120, 65, 20, 44,244,174,128,136,136, 72,175, 2,130,180,128,210,145, 46,189,132, 26, 74, 32, 36,164,247,126,251,221,221,249,253, + 65, 18, 67, 76,185, 1,253,125, 95,125,115, 62,159,253,220,123,119,247, 62,123,118,118,118,230,153,115,206,156, 73,142, 46,240, + 94,184, 58,230,219,233,171,146,202,125,153,207,159,135, 16,113,248,188, 73,171,209,138,250,246,234,160, 29, 59,122,144,159,189, + 58,104, 7, 60,186,134,212,173,237, 57,100,238,162,149,166, 49,227, 63, 49,109,218,188,133, 22, 20, 20, 32, 63, 63, 31, 43, 87, +174,228, 14, 29, 58,148,196,243,252, 39, 21,141,125, 0,192,108, 54, 99,236,216,177, 42,107,107,107, 36, 36, 36,148, 88, 64, 1, + 32, 37, 35,235,222,165, 27,247, 31, 77, 25, 23,222, 78, 99, 48, 24, 78,156,187,249, 48,208,183,142, 39, 33,180,194, 9, 38, 82, +177,184, 75,211,176, 48,150,210, 92, 16, 81,109, 60,219,246, 13,242, 83,179,145,159,158, 13, 86,172, 2, 7, 25,204,130, 20,182, +141,154,227,201,141, 72,120, 56,185,136,100, 98,113,205, 18, 87, 53, 82, 35,255,163, 82, 25, 23, 41, 77,146,150, 44, 89,178,168, +178,227,165, 62,141,101,126,151, 16,168,178,228,171,244,119, 0, 88,178,100,201, 34, 74,105,207,203,151, 47,239, 2,160,123,157, +251,169,146,109,176,122,227,226,207,166,206,130,141,181,194, 38,172,177,175,235,193,227,231,110, 93,184,124,243, 97, 93, 79, 71, + 39,106, 54,218, 45, 93,190,202,147,104,117,150, 6,121, 55,112,116,116,132,201,100,194,211,167, 79,145,152,152, 8,147,201, 4, + 78,163,129, 33, 55, 23,250,156, 28,240,154, 2, 72,120, 30,186,140,116, 56, 40,229,192, 31, 51, 12,171, 34, 66,229, 18,172,226, + 79,185,181, 53,100, 86,214, 96,196,226,114,221,135, 21, 96, 54,105,222,188,249,158,251,247,239,135,117,238,220,121, 33, 33,196, +134, 82,250, 34, 41, 41,169,211,236,217,179, 13, 46, 46, 46, 24, 59,118,172, 63,128,225, 85,146, 75,169,177, 65, 29, 87,127,248, +121, 15, 71,221, 90, 29,145,171, 49, 35, 35,223,140,244, 92, 19,214,255,208, 18,251, 55, 53,199,197,253,109,113,255, 68, 23,228, +154, 93,161,118,239, 3,202, 27,131, 42,195,188,124,249, 50,214,173, 91,135,117,235,214, 97,237,218,181, 88,181,106, 21,114,114, +114, 16, 28, 28,140,248,248,120, 28, 59,118, 12, 41, 41, 41,112,116,116,196,237,219,183,177,126,253,122, 92,191,126,221,146, 74, +110,209, 57,213,245,149,115, 28, 55, 34,165,111,223,134,105,246,246,129,141, 27, 55,126,103,210,164, 73,222,173, 91,183, 46, 57, +238,229,229, 85, 91,161, 80,164, 18, 66, 54, 17, 66, 66, 43,195, 18,128,198, 78, 78,193, 48, 26, 30, 21, 61, 43, 49, 8,145,163, + 99,151,135,104,221,246, 38, 76,102, 9, 24, 34, 3,195,200,193,113, 89,176,179,115, 7,165, 36,184, 10, 21,103,103,100,100,248, +158, 58,117,138,137,141,141,133, 92, 46, 7,128,184,121,243,230,173,250,246,219,111,163, 28, 28, 28,248,195,135, 15,227,224,193, +131,232,217,179, 39, 59,102,204, 24,223, 90,181,106,173,171,234,190,231,126,159,124,101,231,242, 99,239,137,205,118,161,114, 69, +221,122,208,168,251, 76,104,239,164, 2,128, 99,207,158, 21, 56,215,206, 95,162, 41,184, 27,111,235, 89,248,117, 85, 1,238,148, +206, 21,110, 69, 63,186,186,243,192,241,188,244,180, 28,113,227,134, 65,186,197, 11, 62,151,212,173, 87,127,233,220,169,227, 92, +147,242,229,185, 93, 38, 29,123, 20,113,252,122,225,208,145, 31,112,163, 63,156,168, 63,118,252,183, 3,130, 32, 52,172,104, 6, +161, 32, 8, 72, 73, 73,193,131, 7, 15, 16, 19, 19,131,140,140, 12,100,102,102,162,160,160,160,196,173,168, 44,200, 63,178,106, +235,161, 59, 42,133, 66, 25,214,208,183,246,181,200,168,116,149, 66,161,244,173, 87,219,143,144,249,229,182, 35, 60,207, 55,148, + 43, 21, 0, 8,114,239, 95, 64, 97, 78, 33, 10,115, 11, 81,144, 93, 8,131,137,133,222,192, 64,103,100, 80,167, 93, 87, 20,106, +244, 40,204,202,131,192,243, 33, 53,221, 76,141,212, 72,141, 84,210, 47, 31,158, 54,109,218, 12, 11, 79,183,216,141, 89,150,112, + 77,155, 54,109, 6, 33,228,240,244,233,211,131, 96, 65,204,114,121, 82,101,154,134,204,204, 39,133,214, 78,129,253, 39,127, 49, +231,216,174,205,171,157,140, 70, 93,188,163,157,154,183, 82,202,236,198,140,253, 10, 5,133, 57,253, 10,179, 45,159,245,148,147, +147,131,231,207,159, 67,161, 80, 64, 34, 22,131,215,233,192,235, 52,208,229,100,129, 49, 25, 32,225,121,216, 43, 21,168,227,238, +138,186, 46,174, 22, 97, 62, 61,115,178, 36,160,189,180, 91,240,155,230, 13, 32, 85,169, 33,181, 82,227, 63,135,207, 1, 0, 36, + 18, 9, 48,123,161, 37, 15,209,209,195,195,227,215,157, 59,119, 74, 50, 50, 50,112,251,246,237, 59,148,210, 60, 66,136, 21, 0, +225,225,195,135,167,238,223,191,223,211,215,215, 23, 0,124,170,194,203,207,100,120, 51, 71,145,144, 26,135,216,196, 72,216,219, +120, 65,172,244, 67,122,174, 9, 50,133, 23,204,134, 63,188,140,250,252, 23,208,153, 44,155,232,104, 50,153, 96, 50,153, 96, 54, +155, 97, 48, 24, 48,116,232, 80, 92,186,124, 25, 63, 31, 60,141,231,207,158,192,191,158, 43,134, 13, 27,138,208,208, 80,220,184, + 81,121,252,240,136,198,196, 60,243, 45,136,150,191,195, 64,170,118, 48,180,152,122,226,154, 37, 36,171,178,209, 70,169,242,252, +182,103,207,158,245,159,104, 52,120,240,232, 17, 58,207,155, 7, 0, 56,114,228, 72,201, 57, 70,163, 17, 83,166, 76,145, 70, 69, + 69,141,190,121,243,230,104, 66,200,114, 74,105,249, 65,228, 20, 56,114,228, 10,198,141,139, 66, 70,198,203, 56,236,221,187,254, +224,163,177,207, 77,120,187,199, 75,207,149,173,173, 45,150, 47, 15,182,168, 60,121,158,199,134, 13, 27, 74,220,130, 0, 32, 18, +137, 90, 79,153, 50,165,127,121,231,215,175, 95, 95, 82, 21,230,148,112, 79,249,237, 23,138, 9, 54,245,235, 6, 89, 59, 54, 66, +150, 57, 50, 56, 50, 41,229,163, 41,225,158, 43,150,239, 77,212, 43,136,225, 71,194, 39,212, 18,201,245,219, 44,209,241,217,177, +149, 70,219,186, 35,183,165,102,228,207,156,248,193,251, 14,214,182,206,154, 77,171, 22,219, 49, 44, 67,127,189,105,202, 13,242, +118,176,237,211,226,251,194,113,147,103, 71, 26,185,132,137, 72,248,245, 73,101,169, 42,120,158, 71,114,114, 50, 50, 50, 50, 16, + 31, 31,143,204,204,204,162,119, 63,243, 79, 51, 81,171,217, 16, 66, 23, 31,143, 23, 7, 54,161,238,208,161,104,182,112, 1,120, + 65, 4,157,150,199,242, 86,157,144,147,167,131, 65, 32,112,111,210, 10, 31, 28,253, 29, 12,229,129,245,171,107,122,144, 26,169, +145,255, 93,242, 84, 33, 23, 41, 75,132, 22, 47, 94,220,243,175,190,126,105,146,181,120,241,226, 7,139, 23, 47,126,163,107, 85, +153,166, 1, 0,242, 51,162, 98, 28,234, 52, 74,214,232, 10,149,206, 46,142, 70,181, 92, 38,228,229,107,216,200,123,119, 76,133, + 41, 79, 31, 87,227,122, 15,239,223,191, 31,156,156,156,140,248, 23, 47,192,233, 52, 96, 12, 70, 80,189, 22,157,219,180,130, 28, +128,156, 33,144, 8, 38,136, 88, 41, 10, 10,243, 1,224, 97,149,157,162,217,252, 39, 75, 22, 33, 4, 82, 43, 43, 72, 85, 42, 72, +213, 86,175, 88,180, 44,177,208,200,100,178,157,123,247,238,117,243,240,240,192,130, 5, 11,224,233,233, 25,208,176, 97, 67,109, +219,182,109, 21, 46, 46, 46, 8, 12, 12, 68,171, 86,173,112,236,216, 49, 0,168, 50, 39,148,153,147,223,125, 28,135,214,153,217, +151,241,251,185,181, 48,234, 12,104,220,110, 45, 76,162,186,112, 10,154, 15,225,233, 14,104, 83,127,121,105, 45,112,237,133,196, +248, 56, 16, 86,250,160,154,149, 3,119,239,222,197,174, 95,206,195,173, 78, 3,196, 71, 63,194,163,179,167,112,201,201, 1,117, + 3,131, 96, 54,155, 43,189,119, 51, 15,209,151,171, 75,210, 52,200,178,179,179,101,246,246,246,134,226,178,115,115,115,123, 19, +146,245,254,103,159,125,134, 92,177, 24,232,209, 3,146,152, 24,152, 76, 38,180,108,217, 18, 77,155, 54, 5, 0,180,108,217, 18, + 34,145, 8,141, 26, 53,130,187,187, 59, 86,175, 94,253, 62, 42,152,165,199, 16,220,230,184,172, 0,111,111,239, 18,130,181,109, +123, 6, 34,111,118, 1,129, 20, 43, 87,253,145,149,161,118,237,218, 72, 77,137, 1, 33,244,126, 21, 58, 46,116,117,117,157,237, +230,230,230,253,237,183,223,178,114,185, 28,227,199,143,247, 42, 44, 44,172, 91,100, 50,198,244,233,211, 95, 90,165,230,206,197, +188,121,243, 96, 48, 24,180, 21,129,109,255,174,145,123,122,182, 48,218,197,213,163, 95, 7,199,186, 13, 59,118,235, 12, 47,223, +142,232,216, 45, 30, 0, 22,217,139,226, 6,126, 51, 43,248,128, 99, 45,251, 45, 39,143,255, 54,183, 77,187,142, 51,167,141,181, +251,114,201,250,156, 42, 99, 26,243, 94,252, 88,240, 88, 58,232,187, 31,214,109,255,110,206,244,143,229,241, 25,198,156,164, 28, + 90,168,150,137,212, 62, 46, 68,253,209, 23, 11,159, 39, 39,199,124,138,132,227, 85,206,156, 20, 4, 1, 49, 49, 49, 37, 49,123, +122,189, 30, 26,141, 6, 9, 9, 9, 37, 46, 66,157,202,250,237,137, 35,123,133,104,116, 58,237,181,123,209,241,179, 38, 13,105, +169,209,233,180,209,177,241, 79, 40,253,190, 92, 22,198, 48,204, 61,109,129,182,179, 54, 87,143,140,219,143,225,217,169, 14,204, + 28,129,145,227,145,145, 85, 0, 3, 7,240,140, 24, 65, 3,135,129, 39, 34,100, 38, 39,129, 97,217, 59, 53,221, 76,141,212,200, +255,172, 84,153,166,129, 16,114,184,101,203,150, 63,151,182, 50, 21,127, 7, 96, 0, 80, 89,200, 78, 70,105, 18, 85,236, 54,172, +232, 58,101,112, 95,155, 96, 85,234,238, 33,132,144,144,134,117,220,191,153,251,190,167,192,113,254,233,153,105,156, 72, 36, 19, +215,178,209,165, 84,231, 98, 6,131,225,240,169, 83,167,250,118,233,210, 69, 22,125,239, 14,140,121,121, 48,230,229, 66, 44,112, +176, 87, 52, 5, 99, 50,128, 24,141,240, 8, 16,160, 47, 80,224,252,165,251,102,131,193,112,216, 82,130,197,176,236,171,113, 87, +106, 53,100, 86,214,144,169,213,101, 93,136,164, 10, 22,173,236,221,187,119,167, 22, 45, 90,128, 82,138, 13, 27, 54,192,100, 50, + 73, 77, 38, 19,140, 70, 35, 76, 38, 19,242,243,243,177,125,251,118,172, 89,179,230, 18,128,173, 85,118, 98,156,241,212,137,223, +206, 52, 31, 53,164,167,248,232,225,229,224,140, 60,116,196, 19, 26,141, 25,133, 70, 37,120,135,161, 64,218, 17,176, 34, 57, 90, + 54,242,194, 47,251, 34, 76,224, 12,167, 45, 33, 85,165, 69,175,215, 35, 33, 62, 14,137,207,158, 64,157,159, 10, 39,107, 37,180, + 49, 79, 16, 58,108, 56,140, 70, 99,181, 43, 72,173, 90,181, 32, 8, 2, 58,116,232, 80, 18, 52,253,186, 36, 43, 43, 43, 11,135, + 14, 29, 66,139, 22, 45,208,174, 93, 59, 36, 37, 37, 33, 38, 38, 6, 61,122,244, 40, 57,231,206,157, 59,136,140,140,132,143, 79, +229, 70,193,204,108,243,209,196,132,219,225,125,250,244,145, 92,189,122, 21,148, 82,248,250, 90,195,218, 74, 5,194,200,208,160, +129, 51,128,151,220,191,125,251,246,200,207,143,225,114,114,232,209, 42,202,114, 39, 33,228,160,209,104,124,250,214, 91,111,185, + 63,123,246, 12,147, 39, 79, 22,237,222,189,187,216,100,140,105,211, 94,157, 36,161,211, 85,236,154,247,111, 24,240,185, 23,103, +215, 78,174,168, 91,207,218,177, 17,188,124, 59, 2, 0,186,244, 28, 5,175,250,181,145,159,121,183,158, 94, 23,215, 79, 34,202, +177,187,187, 50, 41, 74,209, 35,120,164, 62,253, 92, 52, 0, 75, 18,247, 82, 93,244,238,180,120,241,208, 61, 7,127, 61, 54,182, +123,207,222, 98, 51,207,113,193,117,196,182,123, 15, 28, 73, 79,122, 17,255, 61,226,143,223,255,195,222, 87,169,213,142,207,207, +207,135, 74,165,194,253,251,247, 13, 61,122,244,144, 49, 12,131,167, 79,159,150, 16, 44,103, 71,251,192,214,205,130, 3,190,252, +110,251, 9,149, 76, 38,235,214,190,105,131,168,232, 23,137,148,146,184,138,112,141,102,243,111,247,110,223,233,224,228, 94,159, +141, 57,119, 21, 14,109,187,195, 96, 96,160, 51, 10, 48,112, 0,199, 74,224, 22, 26, 6, 91,159, 6,160, 0,110, 92,189,100, 54, +152,205, 39,106,250,152, 26,169,145,255,105, 43, 22,173,140, 28, 21,125,207, 6, 16,183,120,241,226,204, 82,214,165, 12, 0,119, + 0,132, 20,157,151, 81,230,127, 25,120, 57, 27,176, 89, 41,156,140, 82, 68,171,244,119, 99,153,115, 94,107,224, 87,101,154, 6, + 0,112,116,116,116,110,220,184,169,207,198,205,123, 64, 41,197,227,200,101,200, 73,127,132,217,139,174,248,120,122,122,182, 75, + 76, 76, 60,111,201,197,120,158,223,189,101,203,150, 79,195,154, 52,110, 92,207,211, 19,119,226, 98, 33,161, 60, 36, 60, 15,198, +100,128,136, 55,194, 51,152, 7, 67,212, 72, 78,206,195,146,157,123,238,243, 60,191,187, 42,220,128,238,189,177, 32, 49, 15,132, + 16,124,219, 50, 24, 82, 43, 53, 36, 42, 53,254,243,235,153, 18, 82,117,120,193,116, 72,213,106,248,132, 85,157,192,157, 82,170, +181,178,178,186,121,239,222,189,102,193,193,193,248,244,211, 79, 17, 23, 23, 7, 65, 16,144,150,150,166, 79, 73, 73, 73,202,200, +200,136, 3,112, 0,192, 70, 75, 50,133, 75, 12,250, 21,135,247,111,155,216,178, 77, 59,199, 62,253,214,224,224,190, 41,200,205, +203,135,150, 83, 64,163,231,160, 49,176,176,119,104,136,176, 70,141,144,156,148,142, 7, 87, 79, 20,138, 12,218,101,213,177, 94, + 49, 12,131, 59,119,238,192,219,221, 10, 79,126, 63, 15, 71,165, 24, 33,238,174,112,111,221, 6, 49, 49, 49, 85, 98,136, 89,112, +239,191,255,126, 73, 38,247,174, 93,187,198, 14, 29, 58,212,109,202,148, 41,216,188,121, 51, 46, 93,186,244,167,192,235,118,237, +218,225,194,133, 11,243, 1,204,173,202,136,103, 52, 26, 17, 16, 16,128, 27, 55,110,224,212,169, 83,232,216,177, 35,218,181,107, +135,187,119,239,226,228,201,147,136,140,140, 4, 33, 4, 14, 14, 14, 48,191, 36,205,230,138,192, 76, 38,236,253,122,233,150, 25, +223,125,183, 38,104,200,144, 33,216,191,255,103,140, 26,233, 15,194,200, 64,136, 12,189,123,249, 99,193,194, 27, 8, 11,107, 15, + 71, 71, 49,190, 91,254,203,115,157,142,223,110, 65, 81,126,121,242,228, 73,119,189, 94,143,220,220, 92,170, 86,171, 73, 86,214, +203, 25,170,229, 89,176,180, 90,173,188, 34,160,123,183, 30, 46,203, 45,160, 57,180, 48,178, 95, 54, 23,217,176, 99,183, 4,116, +233, 57, 18,191, 29,222,138, 51, 39, 78,193, 94, 20, 23, 11, 85,193,177,204,216,204,252, 20,141,239,186, 6, 77,198,176,137,154, + 19,235, 38,245,177, 99,221,220,132,189,211,214,228,229, 86,242,188, 41, 33,132,100, 71,237,248,245, 0, 69,239, 86, 45,195,234, + 7,215,118,147,230,100,166,211,125,191, 28,187,111,138,221,127,168,152, 88, 85,181, 42, 2,165,116,193,180,105,211,230, 20,125, +255,113,214,172, 89, 99,150, 44, 89,226,148,154,154, 90, 18,131,149,158,153,125,166, 85,143,143,248,172,220, 60,227,150,239,190, + 24,160,144,203,164,179,150,108, 57,103,102,113,181, 34, 92, 78, 16, 86, 15,156, 60,251,227,232,199,145, 30,117, 21, 82,252,242, +197, 92,220, 57,121, 22,102, 70,130,113,167,174,193, 96,226,145,155,153,133,211,163, 39, 64,237, 98,135, 53,231,246,167, 9,130, +176,182,166,139,169,145, 26,249,223,149, 74,184, 72,121, 49, 46,105, 22,156,119,195, 2,156,191, 69, 44,154, 82,151,153,153,153, +126,225,194, 53,156, 59,252, 37,206, 31,254, 18, 15, 34,239, 32, 57,201,136,164, 52, 61,172,173,173,175, 84,194, 68, 59,151,237, + 20,180, 90,109,255, 89,179,231,164,202, 21, 74,188,213,169, 19, 92,157,156,161,148,136,193,114, 2, 88, 34, 70, 97,134, 45,158, +220,213, 98,234,150, 29,233,133, 90,109,255,178,157, 67, 89,204, 82,251, 65, 8,129,204,218, 10, 82,181, 21,100, 86,214,175,184, + 11,229,214,214,144, 91, 89, 67, 36,149,150, 23, 12,255, 39,204,194,194,194,119, 7, 12, 24,144,147,151,151,135, 49, 99,198,224, +252,249,243,145, 39, 78,156,176,190,115,231,142, 34, 61, 61,189, 62,165,180, 43,165,116,125, 69,228,170, 44,102,118,246,179, 2, +202, 25, 6, 45,158,243,137, 78,207, 57, 32,124,248,110,168,152, 4,112,188, 0, 10,192,221, 94,138,214,157, 23, 34,221,216, 10, +187,215,125,165, 21, 76,250, 33,165,115, 96,149,197,164,148, 82, 7, 7,135, 87,238,133, 97, 24,156, 59,119, 14,225, 3,222, 69, +183,126,125,225, 84,207, 27,206,157,187,163,219,152,113, 88,191,126, 61, 24,134,129,189,189,253, 43, 22,141,210,152, 63, 70, 82, +241,206,187,148,236,188, 75,201,214, 91, 84, 4, 96,216,142, 29, 59,190, 14, 9, 9, 57,123,233,210,165,101, 0, 6,149, 46,239, + 82,186,204, 43,109,189,170,224, 25,205,252,248,227,143,117,209,209,209, 80,169, 84,224, 56, 14,151, 46, 93,194,154, 53,107,240, +237,183,223, 34, 50, 50, 18, 14, 14, 14,240,241,241,129,193, 96,192,141, 27, 55,116, 0,102, 86, 82,151,132,140, 12,238,221,149, + 43,151,100,245,236,217, 22, 91,182,172,130,171,107, 43,136, 69,174, 16,137,157,160, 82, 7, 96,211,198,175,241,206, 59,141,241, +235, 47,123,178, 51,179,184,119,203,102, 93,175, 64, 79,253,181,107,215,176,110,221, 58, 12, 24, 48, 32, 41, 60, 60,156,207,203, +203, 43,177, 96, 21,175,146, 62,175, 40,134,204, 96, 48,200, 42,194, 28,243,197,189,164,207,191,188,191, 32, 45, 53,169,197,249, +179, 87,222, 63,115,226, 20,158, 71,159,193,153, 19,167,240,251,153,203,211,210, 82,147, 90, 52,110,238, 39,233, 63,102,226,231, +219, 34,246,179,106,107, 55,108,139,216,207, 14,254,232,147,175,154,118,235, 56,179,170, 58, 95,244, 28,105, 97,122,218,244, 69, +203,126, 40,228, 76,122,230,155,239, 87, 39,235, 50, 82,102,162,120,106,101, 5,214,171,210,152, 90,173,118,189, 78,167,115,215, +233,116,238,122,189,126,102, 92, 92,220, 91,159,126,250,105, 6,207,243, 37, 22,210,244, 7,191, 92,121,248,251,214, 69,206,142, +118,138, 86,205,130,252,151,175,223,119, 46, 62, 33,237,167,226, 28, 88, 21, 60, 35,125,161, 78,255,110,223,254, 67, 53,185, 57, + 6,180,252,100, 26, 4,185, 26, 6, 30, 48, 83, 22, 28, 17,225,222,151,203,161,176,183,194,206,216, 91,218, 60,179,233,221,210, + 57,176,170,184,247, 55, 25, 33,215, 96,214, 96,214, 96,254, 23, 98,254,219, 68, 84,204, 24, 75,127,150, 21, 15, 15,143,183,250, +244,238,140,246, 61,103,129, 82,138, 71,183,150, 34, 39,227, 49, 60, 92,101,136,137,207,111, 9,224,188,165, 23,164,148,198, 19, + 66, 90,124, 60,115, 86, 68,120,215, 78, 13,130,235,213,147,213,173, 91, 7, 42,103,103,100,102,102,224,226,213, 40,243, 87,187, +246,222, 47, 34, 87,150, 44,149, 3, 65, 16, 94, 6,175, 3,232,244,241, 84, 16,150, 5,138,210, 49, 20,119,136,245,154,181, 2, + 17,137,192, 83, 1, 6,131,129, 90,160,103, 34, 33,228,221, 33, 67,134,156, 62,124,248, 48,211,173, 91,183,208, 3, 7, 14, 8, +111, 82,216,133,105, 79,206,170, 93,252,122,126, 53,125,236,238, 22, 29,251, 90,251, 6, 53,149, 52,173,203,194,100, 38, 72, 78, +122,129,195, 17,215, 77, 81,215, 78,228, 83, 78, 63, 72,147, 81,249, 82, 57, 38,147, 41,222,197,197,197,101,254,252,249,224, 56, + 14, 28,199,129,231,121,100,102,102,226,202,149, 43,104,216, 44, 12, 13, 70,142, 70, 70, 70, 6, 86,174, 92, 9, 79, 79, 79, 44, + 90,180, 8,217,217,217,224, 56, 46,222,194,103,197, 3, 56, 81,180,189, 66,100,139, 71, 25, 85,185, 7,125,124,124,164,122,189, + 62,212,205,205, 77, 68, 8, 89, 97, 52, 26, 71, 78,159, 62,221,117,209,162, 69,240,247,247, 71,102,102, 38, 84, 42, 21,124,125, +125,145,145,145,129,235,215,175,243, 90,173,118, 29,128, 5,148,210,140, 42,244,123, 74, 8,105, 49,105,210,127, 34,190, 94, 50, +214, 87,111,104, 47,181,183,111, 3, 74, 57,100,100,196,161, 32,255,146,105,225,130,173,207,210,210,205,253, 41,165,209, 22, 62, +166,185, 19, 39, 78, 4,138,150,202,137,137,137,185,221,160, 65, 3,223,138, 44, 88,150,200,242,189,137,122, 0,187,190,153,220, +106,114,126,230, 93, 95,123, 81, 92,108,139, 96, 97,229,242,189,137,250,249,147,109,191,204,140, 59,255, 36, 69,115, 98,221,182, +136,253,236,240,126,239,242,158,234,232,105,114,103,186,175, 99,175, 42,159, 15, 13, 13, 13,173, 69, 72,182, 87,122,214,227,155, +163,198,140, 29,104, 35,209, 29, 13,241,204,242, 97,106, 55,150, 71, 70, 70,198, 90,186,166,103, 25,220, 39,132,144,183,166, 79, +159,126,130, 82,250, 74,236, 65,122,102,246,153,150, 61, 39,210,220,220,188,219,233, 81,191,220,179, 0,235, 58, 33,164, 83,112, +195,198,251,191, 94,180,196,165,253,199,159,138,158,156, 61, 7,240,102,188, 56,127, 14,188,204, 40, 44,191,252, 91, 90,158,201, +212,175, 38,139,123,141,212, 72,141,245,170, 50, 46,242,143, 36, 88, 85, 73, 98, 98,226,121, 31,111,207,147, 79,158,188,213,181, +182,167, 19, 0, 32, 38, 54, 25, 73,105,134,147,150,186, 7,203, 33, 89, 77,119, 28, 58, 58, 72, 38,147,245, 36, 69,169, 24,232, +107, 44,246,204,113, 92, 98,189,122,245, 42, 56, 90,126,170, 38,158,231,211, 44,212,243, 28, 33,100,168,143,143,207,146, 23, 47, + 94, 68, 80, 74, 53,111, 90,224,133,105, 79,206,218,219,251,120, 95, 62,181,255,147,171,231, 14,119,166,156,177, 33, 0, 16,145, +180, 90,139, 61, 23, 22, 22,142, 29, 63,126,252,122,177, 88, 92, 27, 69, 49,101,197, 51,190,120,158,103, 77, 38,147,156,231,121, + 22, 0, 97, 24,134, 19,139,197,250,136,136, 8,142,227,184,120,131,193, 48,246, 77, 95, 0, 75,229,232,209,163,117,237,236,236, +186, 18, 66, 6, 80, 74, 3, 10, 10, 10, 12,179,102,205,186, 18, 17, 17,145, 87,167, 78,157,183,123,244,232, 65,236,237,237,113, +227,198, 13,154,149,149,181, 15,192, 76, 74,105, 76, 53,244,137, 33,132,132,140, 29,183,246, 61,123,251,245, 61, 40, 69, 8, 40, + 8, 97,112, 47, 47, 79, 56,170,213,242, 63, 21, 17, 69, 75,241,184, 50,150,179,133,247,239,223,223, 10, 64, 92, 94, 12, 86,181, + 68, 89,248,171, 94, 23,247, 46, 81,107, 15, 44,255, 62, 81, 15, 0,115,191,203,205, 3,176,105, 82, 63,123,225,225,173, 77, 75, + 61,172,163,191,248,254, 64,246, 22, 75,224, 26, 55,110,236,205, 48,204, 32, 0,193,206,178,220,250, 78,210, 60,158, 16,218,129, + 16,198, 17,192,221,192,192,192,195, 0, 18, 95,243, 57, 63, 1, 80,167,236,254,244, 7,191, 92, 1,112,165,154, 88,215, 9, 33, +245, 39,127, 54,101,130, 84, 44,238, 2,158,111,180,240,224, 94, 90,179,216,115,141,212, 72,141,252,235, 45, 88,150,200,179,152, +196,110, 0,224,231,231, 71,163,163,163,223,152, 97, 22, 17,168,159, 81, 69,150,246,170, 36, 51, 51,179,233,223,204,168,119, 1, +216,245, 87, 98, 22, 17,168, 5, 69,219,235,234,117, 15, 64,216,255,245,104,163,200, 87, 62,191,162,115,186,118,237,250,194,100, + 50,157, 42,234,232,109, 1,100,155,205,230,227, 70,163, 49,141, 16,210,116,249,242,229,197,153,234, 23, 82, 74,111,190,166, 30, + 2,128,157, 69,219, 95,125,143, 59,221,221,221,167, 56, 56, 56,248,232,245,122,169, 94,175,151,148,230,254, 10,133, 34,195, 82, + 44, 91, 43,242,163, 68,148,227, 96,107, 69,254, 68,160,236, 61,176, 95,167,185,239,111,239,129,253,150,226, 69, 70, 70,198,132, +134,134,238, 96, 24,166, 30,165,212, 5,160, 54,148, 34,131, 82,154, 41, 18,137,146,162,162,162,146,254, 91, 26,154, 34, 2,181, +172,104,171,145, 26,169,145, 26,169, 33, 88,101,229,201,147, 39,164,166,216,106,164, 52,201,170,236,120, 92, 92,156, 1,192,229, +162,173,236,127,111, 2,232,245,223,126,143,201,201,201,141,255, 10,156, 49, 95,220, 75, 2,240, 73,211,114,150, 92,158,187, 50, +187, 0,192,231, 29,122, 87, 15,243,246,237,219,241, 0,226,107,106, 98,141,212, 72,141,212,200,127,151, 48, 53, 69, 80, 35, 53, + 82, 35, 53, 82, 35, 53, 82, 35, 53,242,215, 10, 1, 80,238, 76,128,234,172,148,253, 58,179, 9,170,194,175,193,172,193,172,193, +172,193,172,193,172,193,172,193,252,247, 97,254,207, 72,241, 44,187,191, 99, 3,208,185, 6,179, 6,179, 6,179, 6,179, 6,179, + 6,179, 6,179, 6,243,127,109, 19,213, 80,204, 26,169,145, 26,249, 95,149,125,251,246, 89,180,232,231,123, 95,108,234,169, 86, +219,205, 46,204,207, 91,242,243,178, 81, 7,138,247, 15, 24, 48,128,175, 41,197, 26,169,145, 26, 41, 79, 42, 36, 88,222,222,181, + 2, 25, 94,104, 77, 41,195, 82,134,154, 73,190,110,247,179,236,236, 87,210, 7,212,174, 93,219, 86,204,160, 23,161, 84, 69,136, +192, 11, 44,115, 41, 38, 38, 33,202,210,139, 19, 66,164,118,118,118, 19, 37, 18, 73,103,163,209,232,201, 48, 76,162,193, 96, 56, +165,213,106, 87,149, 77, 56,248,127, 41,254,254,254,131,207,157, 59,103,219,166, 77, 27,131, 66,161,224,116, 58,157,232,248,241, +227,178,119,222,121, 39,247,233,211,167,175, 53,195,208,195,195,163,227,166, 77,155,188,186,117,235,134,250,245,235,107, 6, 13, + 26, 36,105,217,178,165,100,204,152, 49,207,147,146,146,206, 84, 7,139, 16, 18, 72, 8,217, 78, 8, 97, 5, 65, 24, 86, 52,195, +240, 47, 23, 66, 8, 3,224, 67, 0,125, 1,120, 3,136, 1,112, 16,192, 6, 75,178,217,151,131,247, 46,128,238, 0, 66,138,118, +221, 1,112,148, 82,186,255, 13,116,124, 23, 64,119, 66, 72,104,145,133,246,246, 95,133, 41, 22,139, 67, 1,192,108, 54,223,254, +111,209,147, 16, 50, 82,161, 80,124, 0, 0, 58,157,110, 35,165,116,107,181,149, 89,223,128, 2, 64,224,210, 71, 0,128,168, 47, + 2, 96,233,239,168,231,213,156, 77, 92,193,181, 48,246, 33,121,131,178,236, 62,100,200,144, 69, 63,253,244,211, 92, 74,233, 47, +127, 71,221,119,117,173,181,234,219,239, 55,184,127, 50,113,244, 18,188, 92,193,161, 82, 9, 34,164,139,148,101,123, 27,121,254, +247, 40, 96, 47, 0,145,189,189,253, 96,169, 84,250,150,209,104,116, 19,137, 68, 41, 70,163,241, 66, 94, 94,222, 46, 74,169,249, +141, 21,124, 68,236, 76, 90,184, 18,225,143,117,216, 40, 3,131, 68,137, 84, 4,208,156,202,254,202,178,236, 50, 15, 15,143, 15, +115,115,115, 11, 25,134,161,228,165, 20, 21,109, 73,178,102, 34, 8, 66, 82,118,118,118,211,215,124, 70,114, 0,243,240,114, 77, +183,239, 41,173, 92,167, 10,244,252,196,221,221,189, 95,126,126,190,150,101, 89, 90, 74, 63, 2, 0, 12,195, 16, 65, 16,210,179, +178,178,134,213,116,237, 21,139,187,187, 59, 35,145, 72,134, 51, 12,179,156,227, 56,175,248,248,248, 28, 0,112,118,118, 14, 73, + 79, 79,175, 89, 11,244,175, 38, 88,165,210,210,183,167,148,158,247,246,174, 21, 56,160,111,255, 69,227,198,142, 39, 44,203,224, +254,131, 7,162,247,135,141,236,106,111,111,239,161, 54, 24, 26,128, 16, 65, 43,151,223, 55,155, 77, 73,123,119,253,100, 21,224, +239,207,243,188,128,117,235,215,190,227,237, 93,107,134, 37, 36,139, 16,226,231,234,234,186,125,218,180,105,174,189,123,247,102, + 93, 93, 93, 17, 23, 23,103,251,243,207, 63,251,255,240,195, 15, 3, 9, 33,195,138,114,241, 84,247, 69,110,235,106,207,116,181, + 82,144, 78, 40,224, 81, 96,198,233, 84, 29, 78, 82, 74,127,127,221, 66,210,106,181, 31,105,181,218,176,102,205,154,209,205,155, + 55,147, 17, 35, 70, 80, 66, 8,209,233,116, 63,226, 53, 83, 56,168, 84,170,213,221,186, 79,122,122,247, 0, 0, 32, 0, 73, 68, + 65, 84,117,243,245,245,245,141,121,246,236, 89,247, 61,123,246, 28, 29, 62,124,184,183, 74,165,138, 6,224, 87, 77,184,173, 89, + 89, 89, 33, 58,157, 14,158,158,158,155, 1, 52,249, 27,200, 21, 1,176,223,222,222, 94,191, 96,193,130,141,237,219,183,247, 72, + 78, 78,230,167, 78,157,218,250,246,237,219,111, 19, 66,250, 90, 74,178, 8, 33,118, 0,214,169,213,106,229,212,169, 83, 47,116, +233,210, 37, 86,173, 86,203,239,222,189, 43,158, 58,117,234,135,132,144,112, 0,227,170,211, 8, 23, 99, 58, 57, 57,217,206,157, + 59,247, 94,171, 86,173,206, 75, 36, 18,201,227,199,143,197,211,166, 77,155,240, 38,152,190,190,190, 86,115,230,204,185, 17, 26, + 26,154, 38,151,203, 37,207,158, 61, 19,207,152, 49, 99, 28,203,178,225,130, 32,188, 22,166,189,189,189,245,140, 25, 51,110,182, +107,215, 46, 67, 38,147, 73,163,162,162, 68,211,167, 79, 31, 87, 29, 61, 29, 28, 28, 58, 56, 56, 56,108, 72, 77, 77, 21, 1,128, +155,155, 91,115, 31, 31,159, 31,138,243,161, 21, 17, 55, 20,145,194, 2,189, 94, 63, 36, 43, 43,235, 79, 9,108, 3,151, 62,194, +231,115,126, 28,252,249,156,151,191,183, 21,237,175,234, 55, 48,194,226,186, 31,232,245,178,141,153,240,217,154,161, 47, 63, 95, +238, 95, 91,164,234,106, 47, 66,171, 67,214, 8, 33,125, 58,118,236, 56,239,204,153, 51,107,219,183,111, 63,117,199,142, 29,206, + 9, 9, 9, 95, 19, 66,106,189,247,222,123, 35, 78,159, 62,189, 56, 35, 35, 99,223, 95, 85,255,165, 18,153,140, 48, 4, 10,185, +210,218,146,243,197, 12,211,243,114,159, 62, 31,108,124,252,184,241, 15,143, 30,121,105,220,220,194, 38, 77,154,228,210,191,127, +127,166, 86,173, 90,120,250,244,169,195,142, 29, 59, 26,108,220,184,177, 31, 33,228, 99, 74,233,139, 55, 33, 87,154, 92, 52, 52, + 24,209,152, 82,216,254, 81, 70,200,149,153, 16,169,122, 68,238, 85, 68,178, 8, 33,223,245,233,211,103,216,193,131, 7,213, 59, +118,236, 80,183,106,213, 10, 46, 46, 46, 32,132,128,231,121, 8,130, 0, 65, 16,138,214,250,244,125,147, 25,228, 43,126,255,253, +247, 15,159, 62,125,138, 49, 99,198,176, 0,102, 85,179,253,153,210,175, 95,191, 30, 17, 17, 17,138,189,123,247, 42,154, 53,107, + 6, 87, 87, 87, 0, 40,209,143, 82, 10, 47, 47,175,127, 93, 39,237,237,237, 77,165, 82, 41, 88,150, 5,165, 20,130, 32,192,108, + 54,195,104, 52, 38, 24, 12,134,126,233,233,233,145,150, 98,185,184,184, 48,114,185,124,132, 66,161,216,204,178, 44, 56,142, 59, +235,227,227,211,145,231,121,200,100,178,179,192, 31,245,231,255, 66,202,114,145,127,141, 5,171,244, 10,214, 12, 47,180, 30, 55, +118, 60, 25, 52,248,189,212,167, 49,207, 5,145, 88, 58,248,248,137, 19,202,192,192, 64,198,176,106, 21,184,140, 12,152, 39, 79, +110,117,234,212, 41,115,248,224,161, 58, 49, 75,182,122,123,213, 83,238,222,245,179,107,196,254,125,173, 1, 68, 85,101,185,114, +117,117,221,126,238,220, 57, 15, 47, 47, 47,228,230,230, 34, 46, 46, 14, 26,141, 6, 3, 7, 14, 20,183,110,221,218, 99,192,128, + 1,219, 9, 33,109, 44,181,100, 17, 66, 92,234,123,138, 14,127, 59,103,160,223, 59, 93, 91,171, 60,106,249,128,166,234,145,240, +236, 81,179,195,231,174, 78,242,181,101,158, 60,205,163, 61, 41,165,105,213, 45,164,204,204,204, 47,250,245,235,183,191, 67,135, + 14, 78, 50,153, 12,238,238,238,164,119,239,222,233,201,201,201,243,223,160, 34,161,104,212,197,151,254, 44,187,140,143,133,226, +105,103,103, 7, 59, 59, 59, 0,240,120,147, 10, 17, 30, 30,206,198,199,199,127, 32, 8, 66,131,210,251,157,157,157,253,121,158, +207,121,241, 34,222, 95,103, 52, 53, 24, 63,113,198,188, 65, 3, 58,219, 94,190,124, 89,232,214,173,155,225,194,133, 11, 31, 2, + 88,103,225,101,214, 53,106,212,232,217,138, 21, 43, 12,209, 49,177,245,238, 63,140,134, 74, 46,225,107,213,170, 37,139,138,138, + 50,204,158, 61, 91,243,253,247,223,175, 3, 16, 94, 13,213,215,189,243,206, 59, 57,179,102,205, 74,127,242, 44,214,237, 78,212, + 19,170,150, 73,204, 46, 46,206,236,205,155, 55,245, 95,127,253,181,176,120,241,226,106, 99, 14, 29, 58, 52,121,234,212,169,177, + 25, 89,185, 30, 57,185, 5, 84,170,213,154, 60, 61, 61, 69,103,207,158, 45, 92,179,102,141, 97,234,212,169,213,198,108,223,190, +125,234,194,133, 11,227, 31, 69,199,184, 71,222,127, 12,181, 76,108,118,117,117,102, 35, 35, 35,181,139, 23, 47, 54, 45, 93,186, +212, 34, 76,149, 74,181,109,207,158, 61,162, 95,126,121,105,180,185,114,229, 10,227,237,237,173, 44,125,142, 78,111, 0, 67,128, +204,204, 76,101,203,150, 45,183, 1,240,172, 8,111,248,240,225,169,213,169, 43,195, 13, 75, 45,182, 90, 21, 19,171,241,227,199, + 87,148,155,107,104, 96, 53, 72, 86,247,238,221,103, 30, 57,114,196,103,199,142, 29,203,119,238,220,105, 4, 0,185, 92,238,248, +243,207, 63, 47, 30, 56,112, 32, 6, 14, 28, 56, 27,192, 95, 70,176,120,202,155, 0, 64, 38,151,201, 30, 61,122, 68, 2, 2, 2, + 42, 77,132,108, 18,132,155, 27, 31, 63,110,250,159,128,128,102,217,130, 80, 95,242,206, 59,133, 83,166, 76,201,204,207,207, 71, + 92, 92, 28, 76, 38, 19, 70,140, 24,193,182,111,223,222,125,224,192,129, 43, 9, 33,239, 82, 74, 77, 22, 88,113,150,121,120,120, +124,152,151,151, 87, 88,108,197,105, 80,207, 74,244, 86, 40, 39,107, 84,223, 44,149,176,156,164,215,100,129,156, 92, 69, 52, 1, + 94,184, 8, 0, 18, 45, 50, 36, 64, 78, 57,109,208,210, 62,125,250, 12, 60,120,240,160, 29, 0,236,219,183, 15, 90,173, 22,117, +234,212,129, 68, 34,129, 88, 44,134, 88, 44, 46,249, 94,157,182,137, 16,242,153, 90,173,238, 94, 88, 88,120,144, 82,186, 18,128, +111,155, 54,109,224,237,237, 13, 0,173,139,206, 25,198,178,236,123, 60,207,111,160,148, 30,172, 4,107, 82,159, 62,125,186, 68, + 68, 68, 88, 21,235,105, 54,155,225,237,237, 13,137, 68, 2,169, 84, 90,162,231,191, 81,164, 82, 41,228,114, 57, 68, 34, 17, 40, +165,197,235,131,158, 51,155,205,147, 0, 60,183,179,179, 99,114,114,114, 44, 29,220,178, 34,145,104,121,169,103,219,144,231,249, +173, 28,199,213, 54,153, 76, 54,255, 13,247, 91,154,139,252,211,159, 29, 83,134, 57,182,127,121,131, 12,203,178, 12,158,199,196, +153, 59,116,232, 52, 60, 62, 62, 94, 29, 22, 22,198,136,197, 98,104,206,156,129,254,198, 13,168,213,106,244,235,215, 79,124,225, +194, 5,107,107,181,245,152,216,231,177, 5, 44,203,128, 82,166,202,152, 6, 59, 59,187,137, 51,102,204,112,245,245,245, 5,199, +113, 37, 25,200, 57,142, 67, 66, 66, 2,212,106, 53,134, 13, 27,230,172, 84, 42, 39, 90, 88,105,234,250,121, 59, 71,158, 59,186, +190,201,148,113,221, 85,126,202,223,160, 74,248, 24,234,125,255, 65,131,228,227,152,214, 55, 76,117,114,245,236,198, 62,238,246, +145,132,144,186,213, 45, 36,189, 94,127,241,254,253,251, 99,206,159, 63, 47, 0,192,217,179,103,233,195,135, 15,199,190,201,168, + 83, 16, 4,228,230,230, 66, 16, 4,182,232,119,241,231,255, 89,101, 8, 15, 15,103, 19, 18, 18,198, 54,104,208,192,239,218,181, +107,248,245,215, 95,113,234,212, 41,156, 56,113, 2, 82,169,180,246,128, 1, 3, 50, 50,178,114,237,114,115,243,228, 41,137,207, +154,255,188, 97,131,123,114,108,236,229,159,126,250,169, 16, 47,221,134,150, 60,171,119,213,106,181, 98,249,242,229, 26, 43, 91, +215, 30, 97, 45,218, 54, 19,203,173, 29, 37, 50,181, 83, 94, 94,190,233,206,157, 59,143,190,249,230, 27, 63,127,127,127,187, 34, + 55,154, 69,152,142,142,142, 54, 51,103,206, 52, 41,173,156,218, 54, 11,107, 17, 44,149, 91,219,139,165, 74,251,214,173, 91,247, +123,244,232, 81,236,220,185,115, 61, 66, 67, 67,157,171,131,233,229,229,101, 53,117,234, 84,131,181,141,125,151,192, 6,129,141, + 91,181,108, 62,168, 73,147, 38,195, 68, 34, 17,159,150,150, 22, 61,101,202, 20,143,118,237,218, 57, 84, 7,211,206,206,206,106, +225,194,133,198,122,222,254,239,246,234,213,179,131, 92,105,107, 47, 85, 88,217,235,116, 58,254,225,195,135, 79, 23, 44, 88,224, + 17, 18, 18,226,104, 9,166, 86,171, 21, 59, 58, 58, 34, 56, 56, 24,129,222,222,200,203,203, 67, 68, 68, 4,182,110,221,138, 77, +155, 54, 97,215,174, 93,104,218,166, 43,172,172,172,144,156,156,140,252,252,124,113,121, 56, 37,110,186,191, 67,214, 55,160,107, +133,137, 67,199,143, 31,159, 84, 9,185,194,248,241,227,147, 38,124,182,102,104,177, 11,177, 50,203, 85,167, 78,157,238, 30, 61, +122,244,217,142, 29, 59, 16, 24, 24,136,110,221,186, 73, 1, 96,226,196,137,210,129, 3, 7, 98,207,158, 61,216,183,111, 95,148, +159,159,223, 37, 66, 72, 31, 75,212, 28, 54,108, 88,155,240,240,240,223,195,195,195,111, 15, 26, 52,104,195,216,177, 99,221, 75, + 31, 79, 73, 78,188,105, 52, 26, 17,210,184,153,114,225,230,107, 67,170,194,123, 8,236,216,240,232,209,214, 37, 15, 30,188,152, + 29, 24,104, 91, 39, 54,214,254,199,101,203, 28,139, 23,207, 54,155,205, 72, 72, 72,128,157,157, 29,134, 12, 25,226, 40,147,201, +134, 89, 80,127,190,235,211,167,207,200,248,248,120,245,198,141, 27,221,110,223,190,237,158,146,146,226,118,250,212, 9,167,207, + 63,157,104,101,163,150, 74,147, 51, 94, 18,212,216,100,168, 30, 61, 71, 27, 74, 97, 91,218,109,248,202,168,204,211,243,195,131, + 7, 15,186,150,106,151, 95, 33, 84,101,191,131,161,140,125, 16,217, 82,183, 15, 73,183, 13, 36,159, 84,162,103,143,189,123,247, +126, 19, 27, 27,219,174,103,207,158,223, 19, 66,234,148,115,142, 83,135, 14, 29, 54, 62,126,252,184, 91,159, 62,125, 14, 16, 66, +186, 86, 56,122,244,244,236,119,240,224, 65,135,226,223,142,142,142,144,203,229,127, 34, 87, 18,137, 4, 12,243,239,203, 60,196, +178, 44, 68, 34, 81,201,115, 16,137, 68, 96, 89,246, 36,195, 48, 9, 12,195,152, 44, 37, 87, 69,228,133,229,121,126,176, 32, 8, +133,132, 16,136,197, 98,200,100,178,158, 82,169, 52, 88, 44, 22,255, 87,220,111,105, 46,242,175, 33, 88, 69, 9, 35,207, 1, 0, + 37, 68,115,247,254,125, 49, 43,149, 14,253,105,231, 78,153, 68, 34,193,139, 23, 47, 16, 21, 21, 5,237,233,211,208, 93,190,140, +180,180, 52, 20, 22, 22,194,197,197, 5,235, 55,111, 86, 25,121, 58,234,241,147, 39, 44,101,254,136, 39,168,104,170,166, 76, 38, +235,220,191,127,255, 10,137, 88,114,114, 50,186,119,239, 46,102, 89,182,115, 57, 21,228, 84,153,135, 65,220,157,200,161,211,251, + 23,186,185, 73,163,128,167, 83,128,130, 72,128, 26, 0,206, 8, 36,221, 3,142,204, 71,157,194, 71,228,196,194,225,174, 30, 74, +209, 33, 82,102, 40,102,193, 52, 85,239,128,128,128, 77, 67,135, 14,101, 0,160, 99,199,142, 36, 32, 32, 96, 3, 33,196,187,146, +138,124,170,138,206,241,106, 78, 78, 14, 6, 14, 28,232,224,227,227,115,106,224,192,129, 14,197,251, 95, 23,179,216,115, 20, 20, + 20,148,165, 80, 40,118, 17, 66,100, 22,188,112, 37,152,241,241,241, 31, 4, 4, 4,212,223,184,113, 35,203,178, 44, 54,110,220, +136,221,187,119,227,226,197,139,200,202,202, 82, 79,153, 50,197,230,240,169,171,199, 47, 93,188,254,235,178, 89,159, 57,244,235, +212,222,219, 46, 47, 35,223,195,195,163, 51, 94,198,100, 89,162,103,247,143, 62,250,232,228,237,135, 49,206,172, 88, 34,145,138, + 69, 10, 39, 71,219, 58,174, 78,118,245, 61, 28,236,234, 91, 73,197,182,249,249,249,207,247,236,217, 83,136,151,241, 89, 22, 97, +206,153, 51,231,206,163,152, 4, 7, 70, 44, 18, 73, 68, 18,169,173,141,218,161,119,207,174, 29, 0, 64,193, 18, 89,126,126,126, +194,182,109,219, 52,213,193,156, 61,123,246,149,148,140, 28,103,137, 92,206,202,100,226,146,178,180,179, 86,187,168,100, 50,133, + 86,171,125,177,105,211,166,188,234, 96, 78,159, 62,253,198,131,232, 23,142,132, 1,203,128,136,237,236,172,156,157,108,173, 92, +157,173,213,174,114, 6,242,252,252,252,184,109,219,182,229, 91,130,105, 50,153,196,233,233,233,120,244,232, 17,106, 53,107,134, + 83,167, 78,161,118,237,218, 24, 56,112, 32,222,123,239, 61, 40, 20, 10,116,108,217, 16, 51,102,204,192,179,103,207,192,113,156, +180,154,117, 9,238,238,238,231, 42, 58, 86, 28, 71, 85, 17,102,160, 23, 41, 33, 87,150, 96,151,119, 94, 89,204,238,221,187,207, + 60,125,250,180,207,246,237,219,123, 15, 27, 54,236,226,246,237,219,209,162, 69, 11, 60,124,248, 16,245,234,213,195,143, 63,254, +136,247,222,123,239,226,202,149, 43,123,223,186,117, 43,196,203,203,107, 70, 85,152,131, 6, 13,154, 16, 26, 26,122, 38, 53, 53, +181,101,118,118,118,112, 68, 68,196,168,126,253,250, 61, 31, 60,120,112,167, 18, 11,150,217,188,243,200,175,251,209,163,119,127, +248, 7, 5,175, 27, 49, 99, 71,195,202, 48, 41,165,244, 1,176, 97,107, 74, 74,198, 78,189, 94, 59, 80, 44, 86, 42,175, 93,179, +223,183,118,173, 99,233,149, 0,146,146,146,208,171, 87, 47,177, 68, 34,105, 91,153,158,132,144,165,125,251,246, 29, 24, 17, 17, + 81, 98,109,186,124,249, 50,238,221,187,135,184,184, 56,228,230,230,162,211,216, 66,140, 95,252, 18,123,252, 98,138,174, 19,169, +170, 50,204,194,194, 66,221,129, 3, 7, 16, 30, 30,142, 15, 63,252, 16, 94, 94, 94, 37, 36,171, 44,185, 58,127,253, 55, 72,131, +179,237,219,108,192,200, 46,191,192, 73,229,137,233, 21,232, 41,233,220,185,243,250,222,189,123,131,231,121,232,245,122, 1, 64, +118,121,188,161, 94,189,122,226, 90,181,106,225,203, 47,191,132,173,173,237, 10, 66, 8, 91, 30,166, 70,163, 49, 28, 61,122, 20, +195,134, 13,195,199, 31,127,140,250,245,235,151,232,185,109,199,110,199,247, 70,141,243,107,210,230,173,144,192, 38, 45, 26, 21, + 24,216,102, 18,165,253, 7,164, 28,115,219,223,145, 58,224,255, 7,102,177, 91,176,120, 35,132,128,101,217, 37, 44,203, 14, 96, + 24,134, 86, 7, 83, 16, 4,142,227,184,107, 28,199,141, 40, 38, 89, 44,203,130,101,217,106,147,211,191, 43, 21, 67,105, 46,242, +175,113, 17,150, 94,242,196, 44,224,208,208,225,163,122,157, 58,125, 90, 41,149, 74, 17, 27, 27,139,180,180, 52,236,222,181,139, +223,235,236,172, 21,139,197,116,200,214,173, 86,163, 63,248,128,136,197, 98, 4, 4, 4, 96,192,128, 1,138,119, 7, 14, 78,119, + 18,139,119, 91,192, 80,221,138,253,231,163, 70,141,194,119,223,125,247,202,241,207, 63,255, 28,187,118,237, 2, 33,196,213, 18, +195,203,164,249,125, 61,237,188,108,211,104,228, 54, 49, 97,149,246, 96,149, 0, 35, 1,228,236, 75,146,197,176, 48,220, 58,147, +205,180,216,147,223,191,173,214,227,251,227,235,195, 1,236,177,180,144,220,221,221,103,159, 57,115,198,105,202,148, 41, 52, 63, + 63,159,164,164,164,208, 69,139, 22, 57, 77,152, 48, 97, 54,128,225,175, 83,240,201,201,201, 11,123,244,232,209,237,200,145, 35, + 46,195,135, 15,183, 1,128, 30, 61,122,164, 37, 39, 39, 47,124,147, 7, 42,145, 72,216, 7, 15, 30,216, 47, 95,190,252,189, 79, + 63,253, 52, 40, 56, 56,216, 53, 55, 55, 55, 46, 41, 41,105, 64, 85, 22, 55, 65, 16, 26,108,220,184, 17, 44,251,178,157, 99, 24, + 6, 82,169, 20, 82,169, 20,214,214,214, 57, 49, 49, 49, 66, 93, 23,133, 84,147,150,146,103, 39,178, 19, 19, 55, 87, 7, 91, 87, +183,246, 89, 89, 89,215, 0, 88,106, 94, 14,121,251,237,183,239, 94,190,253,148, 31, 55,188, 67,125,165,132, 17, 91, 41,228,172, + 66, 42, 38,132, 82,222,100, 54,182, 92,189,237,236, 22, 63, 63,191, 64, 75, 77,196,132,144,208, 22, 45, 90,156,190,253,240, 5, +110,223,123,150,232,100,175,116,120,187, 99,107,255,226,227,141,154,183,120,175,212,233,185, 22,189, 24, 34, 81, 72,179,102,205, + 18,211,178, 53,112,182,183,121,133, 72,219, 57, 58,119, 6, 0, 77, 94,222,234, 90,181,106, 5,136, 68,162,122,150,234,217,182, +109,219,148, 91, 81,241,112,117,178,183, 47,218,253, 74, 76, 79,102, 74,202, 58, 95, 95,223, 0, 75, 44,173, 70,163, 81,118,240, +224, 65,220,186,117, 11, 11,131,130,240,121,221,186,112,114,114,194,233,211,167, 65, 41,133, 90,173, 70,110,110, 46,246,236,217, +131, 78,157, 58,193,104, 52,170, 42, 34, 74,197,241, 85, 21, 17,161,228,228,228,191,101, 68, 89, 22, 59,112,233, 35, 68, 85,178, + 82,230,209,163, 71,119,236,216,177, 99,113, 96, 96, 32, 62,249,228,147, 54, 43, 86,172,184, 24, 28, 28,220,166, 99,199,142, 56, +115,230, 12, 70,141, 26,117,113,229,202,149,109,198,141, 27,135,117,235,214,225,249,243,231,155, 43,187,254,160, 65,131,230,141, + 25, 51,102,214,170, 85,171, 80, 60,130,239,219,183,111,113,219,184, 37, 60, 60, 60,171,248,220,189,155, 18, 47,123,121,251,182, +154, 48,233, 51,233,196,113,195,166, 1,120,175,138,142,130,186,187,187, 23,112,111,189,149,189,231,202, 21, 12,146, 72,148, 59, +111,223,198, 33,189, 30,109,251,245,203, 4,128,233,211,167, 99,251,246,237, 0,224, 82, 25,150,167,167,231,135, 7, 14, 28, 40, +169, 43, 14, 14, 14,144, 74,165, 47, 73,144, 72, 12,150,103,113,106,157, 10, 49,241, 90,140, 95, 76,177,118, 58, 65, 61,119,104, + 66,253, 43,173,143,104,221,186, 53,242,243,243,193,178, 44,172,172,172, 96,111,111,255, 10,185,202, 47,204,197, 55,155,231, 33, +221,255, 28,186,252, 10,134,176,192,157,175,128,130,167, 21, 46,233,212,107,249,242,229,110,122,189, 30,103,207,158,197,233,211, +167,127,160,148, 22,150,229, 59,148,210, 84,150,101,183, 46, 93,186,116,148,187,187, 59,198,143, 31,239,183,104,209,162,190,192, +159,113, 9, 33,104,218,180, 41,244,122, 61,196, 98, 49,172,173,173, 97, 52,113,226,240,161, 31,122,215,241, 9,150, 45, 90,182, +136,113,177, 23, 65,196,216, 35,250,133,206,230,251,239,190,252,254,234,239, 23, 70, 19,165, 99, 63,170,205, 76,249,167,119,210, + 60,207,195,108, 54, 23,175,187,234, 93, 76,138, 68, 34,209, 38,150,101,115, 29, 29, 29, 15,102,102,102, 90, 68,180, 4, 65,224, +121,158, 47, 52,155,205, 57,102,179, 89, 67, 8, 81,179, 44, 11,158,231,193,243,255, 29, 19, 98,171, 90,126,237, 31, 71,176,202, + 46,119, 18, 31, 31,159,107,111,111,239,225,239,239,207, 24,141,198,151,174,135,125,251,248, 77, 91,182, 28,209,235,245,147, 0, + 72, 86,173, 89,179,206,195,211,179,195,208, 97,195,136,217,108, 70,143, 30, 61,164,135, 15, 31,118,120,150,150, 86, 96, 65, 1, +190,114,189, 17, 35, 70, 96,197,138, 21, 0,128,143, 62,250,168,196,132, 78, 44,112,250,171,109,208,189, 91,207,166,214, 9,170, + 31,172, 77,173,204,133,117,159, 89, 93, 85, 21, 42,154,130,145,138, 32,103, 33,152,204, 92,116,122,191,155,207,162, 27, 4, 42, +178,179,234,117, 14,106,135, 77,191,109,239, 94, 29,130,165, 84, 42,155, 91, 89, 89,225,230,205,155,217, 77,155, 54,205,165,148, +218, 44, 92,184,208, 81,169, 84, 54,127, 3,150, 30, 75, 8,121,171,117,235,214, 19, 25,134,233, 44, 8,194,169,180,180,180, 85, +148,210, 88, 11, 43,225,120, 0,115, 81, 42,206,196,104, 52,130, 97, 24, 80, 74, 49,104,208, 32, 76,159, 62, 61,240,222,189,123, + 56,115,230,140,125,231,206,157,175, 18, 66,114, 1,140,166,148, 86,104, 37,203,202,202,194,218,181,107,193,178, 44,108,109,109, + 97,101,101, 5,185, 92,142, 54,109,218,164, 46, 89,178,164,193,254,253,251,181,185,233,233, 68, 81,144,103, 32, 14, 14,114,184, +215,126,123, 68,191,254,247,241,114, 54,161, 69,162, 82,169,148, 82, 24, 10, 24, 94,207,124, 51,111,181, 72, 41,145, 16,185, 68, + 4,153,160,101,103, 44,249,146,202, 9, 21, 23, 89, 87,169,165,152,114,185, 92,162,146, 82,131, 88,198,152,149, 12,253, 75,252, +172, 82,169, 84, 34, 19,107,116, 21,146, 89,134,176, 44,203,202,170,131,169, 80, 40, 36,106, 41,111,168,240, 62, 24,176, 12,195, + 84,136, 25, 30, 68,232,222,137, 37, 46,189, 18,221, 56,142, 67,243,230,205,241,243, 47,103,113,244,244,101,100,190,184,139, 73, +227, 71,193,215,215, 23, 39, 78,156,120,163,114, 72, 78, 78, 46,151,100, 85,234, 90, 44,138,187,170,204, 45,248, 10,246, 28,155, + 42,103, 37, 18, 66,250,180,109,219,118,194,206,157, 59,141,111,191,253,182,116,208,160, 65, 8, 14, 14,110, 51,114,228, 72, 0, + 64,231,206,157,177, 98,197,138, 54, 35, 71,142,196,238,221,187, 17, 17, 17, 97,104,223,190,253, 84, 66, 72, 18,165,244,104, 5, + 29, 78,175,245,235,215,151,181, 12,130,227, 56,152,205,102, 55,142,227,220,138,218, 34,124,255,253,202,204,147, 39, 14, 99,234, +140,249,112,118,114, 13,181,208,189, 67, 70,124,246, 89,230,143,203,150, 97,217,238,221,248,172, 94, 61,229,246,168, 40,156,212, +235,177,231,204,153,204,162,235, 84, 25,223,164,209,104,116, 71,143, 30,181,222,179,103, 15,108,109,109, 81,191,126,253, 18, 50, +196,176, 10,176, 18, 59,248, 7, 53, 7,112, 29, 0, 80,207, 29,154, 0, 47, 92, 36, 4,185,148,129,161,146,250, 8, 87, 87, 87, +136, 68, 34,220,126,124, 29, 86,185,214,104, 18, 20, 6,177, 88,140, 2, 77, 30, 38, 44, 27, 0,223, 47, 51,208, 48, 0,208,165, + 1,215,166,192,156,122, 25,203,181, 9, 88, 93, 1,100,227,218,181,107,195, 96, 48, 96,227,198,141,180,168,141,170,168,179,159, +249,237,183,223, 14,159, 51,103, 14,219,172, 89, 51, 0, 8, 45,143, 96, 21,181, 25,240,240,240, 40, 33,126,131,134,143,243, 30, + 59,101,156,162, 95,215, 14, 16,137, 28,145,171, 49, 35,171,192, 12, 59, 71, 53,166, 78, 9,151,159,106,234,209,108,253,202,159, +126, 37,132, 52,163,165, 77,134,255, 64, 49,153, 76, 16, 4,225, 8,195, 48,179, 88,150,253, 82, 36, 18,245, 40, 58, 84,192, 48, + 76, 58,203,178,164, 58,109,165, 32, 8, 67, 57,142, 91,110, 52, 26,173,139, 45, 98, 60,207,195,104,252,191,159,184,255,166,107, + 28,255,215, 90,176,254,228,198, 51,155,253, 13,235,214, 65,115,234, 20,164, 39, 79, 98,143,187,123,161, 94,175,255,148, 82,154, + 80,212,216,125,178,245,199, 31, 47,245,190,114,197,218,248,232, 17,188,239,221,131,216,214, 54,180,186, 10,108,217,178, 5,249, +249,249,200,203,203, 3, 0,252,240,195, 15,200,207,207, 47, 14,228,171,250, 6, 36,104,227,234, 92, 15,169,136,134, 32, 98,212, +113,254,218, 22,106,189, 85,178, 71,188,139, 38,143,241,192,163, 23, 97, 42, 93,150,177, 5, 97,141,208,103,106,225,209,186, 62, + 68, 16,181,169,142,142,197,166, 83,145, 72,148,253,228,201,147, 94,126,126,126,135, 0, 56,190,169,191,159, 82,250, 20,192,164, +215,249, 47,203,178,115,159, 63,127,238,188,121,243,230,137, 11, 23, 46,164,165, 9, 86,241,247,226,160, 72, 27, 27, 27,136,197, + 98,151,203,151, 47,187,132,133,133,173, 46,106,200, 42, 34,147,112,113,113,129, 88, 44,134,141,141, 13, 52,249, 57,170,181,139, +102,181, 87,218,185,216,127,246,217,103,204,136, 17, 35,158,173, 94,189,186,182,171,191,127,192,221,187,119, 95,244, 30, 16,126, +235,232,209,163, 0,176,193, 66,213,239,220,187,119, 79,234,235, 83, 87, 36,152,117,130, 74, 2,200,239,124, 47, 72,173, 92, 33, +103, 89,136, 8,168, 66,169,114,126, 26, 23,151, 12, 32,221,194,114,188, 29, 29, 29, 45,246,116,119, 17, 21,104,244,185, 42,145, + 32,125,126,227,250, 67,175,102,205, 27, 0,128,254,198,229, 3, 50,255, 32,171,231,233, 25,214,222,222,222,113,150, 96,114, 28, +119, 39, 54, 54, 86,226,225,225, 33,142,142,126,250,147,131,181,149,187,189,139, 75,123, 0, 48,102,103, 92, 32, 58,125,178, 88, + 44,246, 72, 78, 77,205,224, 56, 46,217, 82, 61,159, 60,121, 34,241,116,119, 17, 29, 58,114,244,103, 87,149,210,205, 86, 33,179, +145, 51, 32,114, 42,228, 73, 57, 46, 85,161, 84,185, 63,143,143,207,164,148, 38, 86,132,179, 86,152, 56,244,101, 29,248,108, 83, +233,253, 23, 47, 94,196,217,155,207, 97,195,242, 16,155, 53,184, 26,177, 7,253, 63,154, 92,229,187, 20,245, 69, 0, 96, 88,186, + 43,208,107,196, 43,196,233,165, 11,208,173, 92, 34, 84, 37,193,170, 74,214, 55, 56, 87,134,100, 33, 57,185,242,198,117,200,144, + 33,243,119,236,216, 81, 50,137,227,225,195,135,232,216,177, 35, 0, 96,254,252,249,232,214,173, 27,194,194,194,240,240,225, 67, +248,250,250,226,204,153, 51, 50,150,101,101, 67,135, 14, 93, 4,224,104, 85, 42,109,216,176, 1,163, 70,141, 42, 47, 96,250, 25, + 0, 61,177, 11, 40,156,190,100,155, 99,118, 86, 38,210, 51, 82,111, 87, 99, 68,142, 17,159,125,150,185,222,104,196,206,107,215, + 48, 76,165, 82,254,248,244, 41,122,132,133,161, 97,199,142,153,150,180,117,229, 89,113, 28, 28, 28, 32,145, 72,192,138,221, 33, +146,134,128,145, 72,208,184,109, 8,150,125,170,210, 14,127, 7, 43, 9, 65,174, 76,138, 72,137, 18,169, 21, 97,114, 28, 7,177, + 88,140, 61,199,127,196, 93,219,159,128, 2,224, 82,100, 31, 76, 30, 53, 19, 95,172,248, 16,126,139, 50, 96,227, 7,164, 95, 5, +174, 79, 97,132,188, 88, 97,140, 33, 3,199, 40,165, 89, 21, 16,182, 6, 10,133, 2, 26,141, 6,209,209,209, 47, 40,165,249,149, +188, 15,105,157, 59,119, 78,103, 89,214,205,195,195, 3, 0,106, 87, 52, 32, 23, 4,161, 36,206,106,251,206,189,142,161,111,121, +203,187,180, 9,196,182, 67, 95,225, 63,225, 43, 33,102, 9,120,222,132,229, 43,122,130, 55, 20, 34,188,247,135,164, 93,103,223, +144, 83,135,140, 99, 0,108,252, 39,119,210, 70,163,241, 23,147,201, 52,153, 16, 82,192,178,236, 36,177, 88,236,194, 48,140, 47, +207,243,195, 8, 33,247, 36, 18, 73, 93, 55, 55,183,236,148,148,148,188,170,176,178,178,178, 40,128, 45, 69, 91,141,252,205,194, + 20, 85,224,118,132, 16, 74, 8,105, 87,194,114, 41, 21,184,236,108, 80,195,203,193,143, 88, 44,166, 0, 74,207, 80, 82,218,218, +218, 18,177,167, 39,136,236,229,128,155, 2,127,153,141,209,108,182, 44, 53,140,192,131, 5, 49,129,150, 34,240, 26, 57,193, 87, +142,157, 48, 73, 58, 27,169, 82,219,210,111, 52,192, 81,240, 16,216,106,170, 67, 11, 11, 11,193,113,156,157,143,143,207, 17,142, +227,236,138, 93, 0,255,135,102,227, 24,150,101, 49,113,226, 68,160,200,149,102, 52, 26,145,154,154, 10,131,193, 0,163,209,136, +231,207,159, 35, 47, 47, 15, 70,163, 17, 15, 30, 60,128,151,151, 23, 88,150,117,171, 98,116, 3, 39, 39, 39,184,185,185,193,160, +201, 87,237,223,176,162,199,210,249,211, 29, 7,251, 80,102,243,202,111, 5, 79, 79,207,172,160,160, 32, 87,153, 76,102,106,210, +164,137,225,208,161, 67, 39, 1,244,175, 70, 30,172,163, 11, 22, 44, 8, 11, 11, 11,171,107,171, 86,153,100, 82, 22, 50, 78, 67, +101,134, 44, 42,210,101,210, 58,158,117, 77, 80,169,155, 15, 26, 52, 72,106, 73,167, 88,140,249,197, 23, 95,212,111,208,160,129, +163,173,181, 42, 95,196, 32, 73,194,243, 73, 57, 55, 47,255, 6, 0, 18, 71,103, 29, 84,234,230, 69, 49,116, 22, 99, 78,157, 58, + 53,200,195,195,195,129, 97, 72, 46,103, 50,189, 40,105,240,245,186, 52, 86, 38,215, 64, 38,111, 59,122,244,104,113, 53, 49, 27, + 52,106,212,200,193,206,198, 58, 87,204,144,120, 9,207, 37, 40, 40,159, 40, 53,155, 50,100,206, 46,133, 80,169, 91, 15, 30, 60, + 88, 84, 17,102,177,245,170,172,101, 72, 36, 18, 33, 41, 41, 9,218,228,187,144, 36, 61, 66,136, 90,140, 22,174,142, 80,169, 84, + 85, 15, 86,198, 62, 36, 24,251,144, 68, 61,167, 36,234, 57, 37,165,127,255,201,218,180, 32, 15,175,156, 87,129,148,141,207,250, + 19,185, 42,243,223, 34,146, 85,233,251,244,211, 79, 63,205,232,208,161, 67,122,183,110,221,140, 71,142, 28, 1, 33, 4,103,206, +156, 65, 82, 82, 18,186,117,235, 6, 74, 41,174, 94,125,105,156,189,125,251, 54, 58,119,238,108,124,235,173,183,146,126,250,233, +167,185,150, 60,156, 81,163, 70,193,108, 54,163,176,176, 16,217,217,217, 56,124,248, 48, 66, 66, 66,168, 82,169,236,207,214,234, +250, 85,248,152, 25,173,130, 27,133, 98,245,202,101, 70,169, 72,188,164,154,110, 15, 12,255,244,211,204,188,198,141,179,183,107, + 52,218, 17,214,214, 74,159,132, 4,251,155, 39, 78, 56,154, 76, 38,139, 48,138,173, 56,158,158,158, 37,228, 74, 34,145, 64, 36, +117, 2,171,106, 8,169, 67, 55, 40, 93,251,227,108,164,204, 96,163,194, 1, 43, 53,142,171,108,113,175,146, 60, 88,132,227, 56, + 72, 36, 18,156,187,117, 12, 33, 51,129,144,153, 64,114,243, 95,240,222,228,183,225, 56,233, 9,108,252,128,212,223,129,220,101, + 33, 48, 63,183,201, 55,100, 96, 79, 69,228, 10, 0, 12, 6,131,158,231,121, 16, 66, 32,145, 72,164,165, 14, 93, 58,119,238, 28, + 78,159, 62, 13, 0,209,197, 59,115,114,114, 40,195, 48, 80,169, 84, 0,160,170,204, 77, 86, 28, 15,118,238,234, 5,135,247,222, +237, 73, 46,223,249, 13,173, 67, 6, 35,171,208,132,180, 60, 19,114,181, 64, 80,179, 89, 8,238,124, 0,119,159, 23, 32,180, 81, + 48,203, 74, 85,195,241, 15, 23,163,209, 56,214, 96, 48,100,232,245,250, 2,189, 94,159,169,213,106, 71,235,116,186, 94, 28,199, + 93, 20,137, 68, 1,114,185,252,150, 82,169,252,165,118,237,218, 12, 0,120,120,120, 48,238,238,238, 63,254, 19,239,181, 60, 46, +242,143, 39, 88, 0,206,149, 13, 44,227,100,178, 7,220,132, 9,176,253,245, 87,136,163,163, 49,114,248,112,107,165, 82,185,146, + 16,210,132, 16,210, 90,173, 86,175,158, 55,111,158,149,227,226,197,112,191,112, 1,113,135, 15,195, 44, 22,223,120, 29, 37,116, + 58, 29, 68, 34, 81,137,229, 69,165, 82, 21,251,131,171, 36, 48, 60,135, 43, 73,105,143, 32, 69, 93, 8,160,133,199,243,223,186, + 54, 56,102,150,243,225,124, 47,223,167, 26,137,239, 2,167, 22,206, 43,235,180,185,166, 33,162, 66,169,173, 28,241,241, 9,224, + 33, 92,169,142,126,122,189, 62, 79,163,209, 32, 52, 52,212,225,230,205,155, 62, 33, 33, 33,246, 69,251,175,191, 97,101,106,233, +225,225,177,215,211,211, 51,214,195,195, 99, 47, 33,164,101, 53,254,190,249,247,223,127, 7,203,178,152, 55,111, 30, 10, 10, 10, + 96, 50,153,144,149,149,133,248,248,120, 24,141, 70, 36, 38, 38,226,241,227,199, 48, 26,141,136,139,139,131,193, 96,176,136,216, + 90, 89, 89, 33, 55, 43, 93,181,123,237,183, 61,190,154, 63, 91,145,247,244, 22, 18,147,211, 32,240,186,228,111,190,249,230,177, +175,175,239,105,147,201, 84, 75, 16,132,118,148,210,245,150, 18,205,162, 68,165, 23, 3, 2, 2,194,190,249,230,155,118,179,151, +108,146, 89,177, 5, 84,106, 37, 19,164, 86, 82, 42, 13,104,129, 49,115, 87,201,151, 44, 90,120,251,206,157, 59,217,150, 36,221, + 44,198,108,209,162, 69, 80,106,106,106,155,144,144,144, 80,215,250,126,114,153,135,123,166,212,189, 78, 22,213,105, 79, 49,181, +235,245, 90,185,114,229,205,171, 87,175,166, 85, 7,211,195,195,163,225,154, 53,107,154,213,174, 93,187,153,220,198, 70, 81,152, +155,187,193,144,155,189, 73,236,232,170, 96, 28, 28,195,183,111,223,126,229,228,201,147,153,213,193, 12, 12, 12, 12, 94,180,104, + 81,147,198,141, 27, 55,113,243,243,151, 43, 60, 60, 51, 36, 30,117,210, 21,141,154,202,153, 58,222, 3, 86,172, 88,113,237,198, +141, 27, 25,150, 96,138, 68, 34,158, 97, 24,136,197, 98,168, 84, 42,156, 63,127, 30,131,251,191, 13, 87,103,107,248,249,251,163, +253,216,143,112,228,200, 17, 72,165, 82, 48, 12, 3,134, 97,222, 56,161,165, 37, 68,168, 42,169,136,124, 85,133, 77, 41, 61,122, +238,220,185,175, 71,140, 24, 33,237,222,189, 59,174, 93,187,134, 81,163, 70, 93,140,136,136, 0, 0, 92,187,118, 13,147, 39, 79, +190,120,250,244,105,140, 27, 55, 14, 29, 59,118,148,254,254,251,239,171, 45, 73, 62,202,113, 28,182,108,217, 2,142,227,160, 86, +171, 97,111,111,143,158, 61,123,226,254,253,251,227,182,110,221,250,136, 21,139,223,239,209,251, 93, 28,249, 53, 2,143, 31,220, + 31,247,227,162,161,213, 78,230,203, 48, 12,186, 15, 31,158,153, 25, 20,148,253, 99,126,190,118,180,157,157, 50, 32, 53,213,254, +236,222,189,142, 22,212, 31,194,243,124, 9,169, 42, 38, 27, 37, 51,203,164, 78, 16,169,130, 33,178,106,134,187, 79, 37,102,113, +115, 26, 41,105, 74, 31, 86,150,100,148, 16, 2, 65, 16, 32, 22,139,209,184,126,107, 60,221,241,114,127,253,161, 64,147,109, 89, +112,110,245,210, 45,248,226, 27,103,124, 62,122, 62,196,172,196, 92, 85,218, 28, 65, 16, 30,100,101,101, 65, 36, 18,193,207,207, +207,149, 16, 82,108,149, 90,222,161, 67,135, 5,195,134, 13, 91, 10,224,147,162,235,215, 9, 15, 15,119, 55,153, 76,184,125,251, + 54, 0,220,170,228,217,151,204, 26,204,206,143,147,213,115,111,136,144, 6, 99, 97,103,215, 8, 73,217, 70, 36,103, 27,177,105, +109, 95,220,250,253, 75,220, 60, 57, 12, 47, 82, 83,161,112,237, 7,158, 51, 4,255,211, 59,233,140,151,162,203,200,200,224, 76, + 38,147,206,104, 52, 62, 53,153, 76, 55, 40,165,222, 98,177,248, 55,185, 92,110,163, 84, 42,223, 82,169, 84, 91,253,252,252, 68, + 10,133, 98,171, 76, 38, 43,151, 88,218,216,216, 16, 27, 27, 27,214,198,198, 70, 84,222, 86,124,158,183,183, 55,109,208,160, 1, + 13, 14, 14,166, 65, 65, 65,212,223,223,159,214,173, 91, 55,223,205,205,109,172,131,131, 3,251, 55,222,238,185,127, 83,144,123, +217, 52, 13, 0, 0, 31,123,123, 43,179,217,148,248,219,111,191,153, 24,134,129, 82,169,196,136, 81,163,152,181,107,214,180, 29, +220,178,229,153, 15,187,116, 57,118,230,244,233,198, 97, 97, 97,160,148,130, 97, 24,236,222,189, 91,167,215,235,178,106,215,174, +109,107, 73, 99, 81,250,197,201,207,207, 47, 33, 88,121,121,121,112,113,113,177,216, 69,168,201,199,169,211,199,111,229, 80,254, + 63,241,221,159,126,103, 90,146,218, 55, 44, 87,224, 69,121,188, 25,121, 58,138, 2, 61, 68,215, 24,251,176, 17,190,253, 76,207, + 59,135, 61, 62,255,232,114,150,158,215, 87,107,246, 67,122,122,250,204,240,240,240, 44, 55, 55, 55, 98,109,109, 13, 15, 15, 15, +166, 79,159, 62,153, 9, 9, 9, 11, 94,183,224, 29, 29, 29,223,235,208,161,195,161,164,164,164, 1,231,207,159,175,123,225,194, +133, 1, 29, 58,116, 56,228,232,232,248,158,133, 16,123,102,204,152,161,145, 74,165,104,209,162, 5, 10, 10, 10, 96, 52, 26,171, +220,170,180, 8, 10, 2,228,114, 57,246,110, 90,209,245,171,249,179, 21, 89, 15,175,224,238,197,223,112, 60,214,160,157,187,228, +251,171,114,185,252,181,238,215,215, 89,213,176,161,187,213,195,201,163, 6, 37, 79,159, 54,205,234,222,189,123,138, 73, 31,127, +130,184,180, 92, 42,237,190,156, 69,187,217,204, 29,141, 35,233,241, 78, 71,124,189,104, 78, 59, 0,227,170,236,168,157, 85, 13, +131,221,173,162, 62,251,112,112,204,199, 31,127,172, 88,178,100,137,190,121,243,230,230,148,148, 20, 27,181,163,115, 83,177,131, + 99,203,216,212, 52,219,166,205,154, 61,253,248,227,143,245,213,197,156, 51,103,142,242,210,165, 75,146, 78,157, 58,209,244,244, +116, 59,137, 66,209, 74,108,101,211, 46, 57, 51,211,190,115,231,206, 79, 71,142, 28,201,191, 14,230,147, 39, 79, 36, 77,155, 54, +165, 41, 41, 41,118, 74, 7,167, 22, 18, 7,167,183,158,167,164,218,133, 54,110, 28, 61,121,242,100,115,101,152,225,171,254, 32, + 39,106,181, 58, 37, 36, 36, 4,115,231,206,197,194,133, 11, 49,112,224, 64,196,198,197,162,221,200, 15,225, 53, 98, 28, 14, 95, +189,142,228,228,100,204,156, 57, 19,190,190,190, 16,139,197,209,127, 69,163, 97, 9,201,170,200,125, 24,232, 69,206, 85, 22,103, + 85, 21,246,128, 1, 3, 38, 20,167, 98, 24, 61,122,244,197,149, 43, 87,182, 25, 61,122, 52, 0,160, 69,139, 22,248,242,203, 47, +219,204,154, 53,235,226, 87, 95,125,133, 78,157, 58,193,219,219,187,202,124, 98, 60,207,131,227, 56, 12, 30, 60, 24, 28,199, 33, + 35, 35, 3, 79,158, 60,193,134, 13, 27, 64, 41,149, 3,128,155,187,103, 83,169, 84,138, 59,145, 55,180,179, 71,135,253, 84,141, + 65, 20, 41,253,110, 21, 22, 22, 98,192,248,241,153,137,245,235,103,175,203,204,212,142,177,179, 83,214,123,241,194,222,202,104, +244,168,107,105, 47,159, 0, 0, 32, 0, 73, 68, 65, 84, 44,230,180, 52, 25, 42,157,150,160,236, 86, 60, 65,197, 82, 41,198, 28, + 55,120, 50,228,199,219,150,144, 44,117, 29, 64,224,128, 91,211,196,152,216,111, 46, 66, 26,134,194,194, 25,107, 87,175, 93,187, + 6,169, 84,138,201,147, 39, 19,150,101, 87, 16, 66, 8,165, 52,135, 82, 58,151, 82, 58,149, 82,170, 39,132, 16,153, 76,182,126, +212,168, 81, 48, 24, 12,184,120,241, 34, 0,156,174,136,152, 82, 74, 75,238,189, 48,155,128, 23,164,184, 20,121, 28, 39, 47,236, + 67,108, 82, 6, 94,164,235, 1,145, 13,244,154, 68,152,116, 73, 48,230, 70, 34,223,160,252,215,185,156,178,179,179, 5,158,231, +141, 60,207,155, 4, 65,168, 11,192, 90, 36, 18, 65, 34,145, 64,161, 80, 12, 83, 42,149,145, 10,133, 98,152, 84, 42, 45,247,255, +121,121,121, 52, 47, 47,143,207,203,203,227,202,219,138,207, 43,206,189,165, 80, 40, 32,147,201, 32,145, 72, 82, 69, 34,209, 48, + 66,200, 30,252,205,249,169, 74,115,145,127,186,148,151,104, 20,212, 90, 49,104,223,234,181, 54,225,131,135,106, 66, 66, 66,236, + 60, 60, 60, 64, 8, 65,223,126,253, 72,135,243,231,173,196,238,238,112,104,210,164, 36,123,238,169,223,126,195,241,227,199, 53, + 71, 14, 30,240, 24, 53,102, 76, 47,148, 78,246,252,231,194, 19,249,248,248,148, 92, 55, 37, 37,165,248, 1, 2, 0,242,243,243, +225,228,228,132,148,148, 20, 88,104, 24,217, 62,125,218,213,105,233, 97, 51,189,194,172,196,228,152, 38, 21, 60,165, 16, 19, 30, +208, 81,152,121,192, 96,166,104, 90,143,181, 63,169,227,236, 14, 95,139,120, 14, 96,123, 53, 45, 88,103, 9, 33, 99, 5, 65,216, + 7,128, 57,127,254,188, 16, 21, 21, 53,193,210,128,244,242, 68,169, 84,126,113,230,204, 25,251, 47,190,248, 34,231,240,225,195, +121, 61,123,246,180,217,176, 97,131,125,199,142, 29,191, 0,240,115,149, 62, 75, 74,117,132,144,109, 9, 9, 9, 19,154, 53,107, +134,236,236,108,152, 76, 38,220,186,117, 11,190,190,190,184,121,243, 38,252,252,252,112,227,198, 13,248,251,251, 23, 79,153,134, + 32, 8, 85,186,113,147, 19, 94,168,149,134, 28,235,228,107, 71,241,248,238, 77, 28,141, 49,104,191,217,178,251,104,195,208,166, +154,234, 54,224, 0,224,239,162, 10,242,112,118, 56,185,100,254, 28,231,184,179,187, 17,177,101,149,112,238,216,177, 64,169, 21, +198,182,127,239,227,119,141,102,212, 6, 32,107, 21,214,140,190, 99,251, 68, 80,212, 69,234,233, 7,149,103, 50,247,119, 81, 5, +185, 59, 57,156,248,102,201, 66,171,103,199,182, 98,207,250,229,116,255,142, 93, 33,122, 32,172, 97,195,134,221, 9, 33,110, 0, +184,162,103,100,209, 18, 52,229, 97,158, 62,124,184,177, 30, 8,243,241,241,233, 46, 22,139,235, 22, 89,249,146,254, 10,204, 70, +141, 26,117, 47, 26,225,211,162,152,171,106, 45,149, 51,122,244,232,101,159,125,246,217,100,179,217,236, 80,202, 2,201,110,216, +176, 65,196,243, 60, 67, 41, 53, 49, 12, 99, 58,113,226, 4,207,113, 92,178, 94,175, 31,255,166, 13,198,187,239,190,139,171, 87, +175,206, 71, 37,193,203,101, 58, 4,145,189,189, 61, 87, 21,241,178, 20,251,252,249,243, 11,223,127,255,253,233, 63,255,252,243, +147,149, 43, 87,246, 30, 55,110, 28,118,239,222,141,250,245,235,227,206,157, 59,152, 57,115, 38, 0,180,153, 53,107,214,175,155, + 55,111,246,142,139,139, 91,102,137,213,150,227, 56,236,218,181, 11,125,251,246,133,147,147, 19,220,221,221, 65, 8, 57, 59,102, +204,152, 53, 0,192, 18, 86, 2, 0, 6,189,193, 16, 16,208,204, 98,139,173,183,183,119, 73, 91,151,154,154, 90, 50,243,175,235, +251,239,103,110, 90,178, 4, 63,233,116, 24, 99,103,167, 76,244,244,116,251,245,217,179, 15, 9, 33, 27, 42,178, 8, 23, 91,113, +170, 34, 87,213,176, 40,163, 56,182,201,197,197, 5,179, 38, 46,198,226,181,179,240, 20,231, 80,127, 8,240,224, 59,160,175,247, + 71,104, 22,210, 2,238,238,238,150, 86,145,179,255,249,207,127,110, 68, 69, 69, 53,107,212,168, 17, 22, 44, 88,208,103,222,188, +121, 39, 9, 33, 31, 22,207, 98, 38,132,212, 99, 89,118,197,111,191,253,214,197,218,218, 26, 15, 31, 62,196,222,189,123,159,162, + 56, 66,191, 28, 61,139, 59,125,177, 88,140,218,181,252,244,143,227, 10,149,233, 73,151,112,241,247,131,168, 31,242, 9, 20,174, +189, 96, 31,240, 21, 76,143,190,135, 49,235, 36,236,107,245, 68, 98,220, 51,176, 34,217,253,127, 27,201,202,201,201,161, 14, 14, + 14, 2,207,243, 39,120,158,159,201,243,252, 87, 34,145,168, 56,254, 54,152,227,184, 55,158, 17, 88,156,123,171, 24,151, 82,170, + 18,137, 68,249, 44,203,234, 8, 33,127,235,116,195,210, 92,228, 95, 99,193,122,165, 66, 11, 68,236,239,231,199, 75, 24,108,237, +219,171,151,246,246,237,219, 37,163, 60,253,245,235,208, 28, 63, 14,158,231, 65, 41,197,133,243,231, 49,108,232,208, 66, 49, 75, + 54,213,171, 87,151, 18,250, 71,238, 21, 66,200,159,242, 88, 73, 36,146,240,240,240,240,146, 70, 39, 33, 33, 1, 42,149, 10, 82, +169, 20,130, 32,128,227, 56,176, 44, 11, 27, 27, 27,112, 28,103, 44,231,101,235, 92,230, 97,152,249,108,205,128,205, 61,134,164, +184, 23,154,232, 88,219,122,168, 35, 81,148,188,148,174,214, 4,189, 67,196,112, 20,165,211,211,203,186, 36, 11,134,172, 1,101, +215,254, 42, 79,207, 50,199,253, 26, 53,106,180,102,216,176, 97, 12, 0,116,238,220,153,105,212,168,209, 15,132, 16,191, 74,254, + 83, 41,166, 92, 46,151, 1,192,161, 67,135,178,159, 60,121,242,246,161, 67,135,178, 75,239,183, 16,115,195,210,165, 75,161, 84, + 42,193,113, 28,140, 70, 99, 73,252, 85,233, 79,147,201, 4, 71, 71, 71, 28, 57,114, 4, 60,207, 31,169, 74,207, 6,193,141, 10, +243, 68,182,105, 63,254,122, 26,199,226, 76,133,213, 37, 87,165, 49,235,187,169,253, 93, 29, 29,126,251,102,209, 66,167,156,167, +183,144,152,152, 72, 79, 28, 63,114, 69, 71,105, 82,110, 62,157,157, 83, 72,253,181, 6,170,104,238,141,248,223,214, 79,165,179, +222,130, 25,228,207,174,225,210,152, 65,110,106,127, 15, 39,135, 19,203,151, 45,177,202,141,190,137,148,212, 84, 28, 61,114,232, +182,142,210, 36, 74,233,126, 74,233, 72, 65, 16, 26, 10,130,208,144, 82, 58,178, 34,210, 82, 93, 76,147,201,212,208,100, 50,253, +165,152,213,213,179,212, 12, 66,204,159, 63, 63, 58, 49, 49,113, 92, 90, 90,218,187,197, 91,118,118,118,223,130,130,130,158, 90, +173,182,187,238,187,186, 54, 26,141,198,185,160,160,192, 77,167,211, 53,165,148,222,178,180,126,150,149,210, 29,108,114,114,242, +188,228,228,100, 82,105,253, 28,251,144,172, 94,246,159, 29,123,247,238,117,121, 19,236,178,122,102,100,100,236,219,181,107, 87, +168,151,151,151,247,200,145, 35,177,110,221, 58,172, 92,185,210, 0, 0,155, 55,111, 54,148,178, 92,213,138,141,141,109, 86,158, +123,176, 52, 38,195, 48,219,187,118,237, 74, 47, 92,184,128,190,125,251,150, 36, 0,221,184,113, 35, 56,142,203,239,212,169,147, + 0, 0, 58,189, 54,159, 10, 20, 70, 83,249,126,246,242,202, 83, 42,149,190, 83, 58,223, 95,113, 18,101,169, 84, 10, 74, 41,252, +219,180,201,204, 13, 9,201,222,146,151,167,157,215,176,161,245,135, 1, 1, 35, 27, 0, 67,203,195, 36,132,188, 98,197, 41,187, +189,206,187, 89, 44,197, 24,158,158,158, 88,248,233,114,120, 94,127, 23,103,219, 58, 32, 52,107, 36,186,181,237, 13,127,127,127, +139, 49, 41,165, 52, 61, 61,125,220,156, 57,115, 4,169, 84,138, 15, 62,248, 0, 17, 17, 17,157,123,246,236, 25,231,225,225, 17, + 23, 20, 20,148, 58, 97,194,132,152,204,204,204,158, 45, 90,180, 64,118,118, 54,198,143, 31,111,202,206,206, 14, 47, 29,199, 89, + 86,207,226,164,152, 18,137, 4,125,122,116,206, 94,251,195,114,161, 83,187, 9, 80, 42,172, 97, 22,215, 66,118,161, 25, 57, 26, + 10,163, 44, 12, 82,137, 12,221, 90, 6,225,234,137, 31,181,188, 81,179,237,117,235,252,235,150,231,255, 15, 76, 74, 41,229,121, + 94,207,113,220,102, 65, 16,102, 23,123,146,138,243, 89,149, 53,134, 86, 87, 79, 65, 16, 74, 82, 55, 20, 97,171, 69, 34,209, 47, + 44,203, 6, 21, 79,164,250, 59,238,253,223, 38,175,164,105, 40,254, 36, 68,224,121, 94, 64, 61,175,122, 86,113,177,241,171, 6, + 14, 12, 31,221,189,123, 15,101,143, 30, 61,228, 65,143, 94,186, 40, 14, 29, 58,132,136,136, 8,237,201,147, 39,243,101, 98,118, +115,173,218,181, 92,120, 94, 0, 33,149, 91, 72,172,172,172, 62,158, 49, 99,134, 34, 47, 47, 15, 43, 87,174, 20, 66, 67, 67, 25, +149, 74, 5,147,201,132,205,155, 55,155,131,130,130,196, 12,195, 32, 47, 47, 15, 12,195, 60,182,144,241,222, 37,132,116, 91,211, +161,127, 68,179,137,163, 28, 2, 59,180,178,107, 95,203, 3,230, 38, 20,201, 9,177,120,114,250,100,206,131, 19, 43,178,160, 79, +235, 79, 41,141,170,110, 33,185,187,187,207, 61,121,242,164,243, 71, 31,125, 68,245,122, 61,137,143,143,167,139, 22, 45,114,254, +224,131, 15,230,162,138, 92, 56,149,189, 71,185,185,185, 32,132, 8, 69,149,181,184,113,177,216,252, 74, 41,189, 79, 8,249,165, + 95,191,126,125, 58,117,234,132, 71,143, 30,149,184, 2, 75, 19,172,226,217,132,139, 23, 47,206, 5,254, 72, 16, 88,145,200,100, + 50,108,220,119,252, 88,114,226, 11,101,189,122, 62,122, 27, 59, 59,225,117, 44, 87, 0, 32,101,152,121, 95, 47,156,227,156,249, +240, 42,185,127,229,140,176,247,110, 90, 58,199,211,242, 51,244, 23, 36,211, 34,214, 95,249,232,133, 97,231, 45, 93,188,208,166, +216,125,249,115,100, 74, 62,225,233, 71,111, 54,212,248,135, 96,254, 31,200,203, 25,126,201,196,221,221,157, 22,187,240,202, 35, + 88, 85, 73,121,238,193,215,197,126,254,252,249,162, 38, 77,154,124, 22, 29, 29,189, 55, 48, 48,112, 28,128,218, 6,131, 33,119, +214,172, 89,223,108,222,188,121,180, 37,150, 43, 0,216,189,123,247,138, 81,163, 70, 29,239,213,171,215, 84, 65, 16, 26,149,234, +144,158, 59, 59, 59,151,100,228,202, 72, 75,157, 54,118,244,224,105,133,133, 57, 22,231,169, 83,171,213, 31,206,154, 53, 75,174, +209,104,176,122,245,106, 33, 40, 40,136, 41, 30, 12,237,216,177,131,243,243,243, 19,133, 79,152,144,249, 93,106, 42,190,252,253, +119,205,180,224,224,208, 45, 79,158, 52, 45,207,194, 94,220, 97,150,103,185, 42, 14,175,120,141,142,252, 21,130, 85, 76,178,230, + 78, 94,130,164,164, 36, 72, 36, 18,248,250,250,162, 34,119, 83, 37,237,210, 29, 66,200,224,248,248,248,109,171, 87,175,150,182, +104,209, 2,205,155, 55,135, 88, 44,174, 83,172,175,209,104,196,221,187,119, 49, 99,198, 12,122,253,250,245, 15, 42, 91,160,158, +231,249,116, 63, 63,191, 18,247, 17, 33, 36, 43,223, 64,108,246, 52, 8, 83,143, 28,187,151, 92,188,113, 25,201, 38, 1, 6,179, +128,122, 94,141,209,254,237,239,240,235,177,123,124,114, 92, 84,148, 89,151,179,233,223,216,113,103,103,103, 83,103,103,103,174, +200, 40,209,186, 56,164,166,120,102,232,155, 90,176,138, 6,236, 49,130, 32,164, 49, 12,211,186, 40,247,150,181, 72, 36, 58,205, + 48,140, 35, 0,238,239,184,175,178, 92,228, 95,227, 34,124,133,189,178,204,165,117,235,215,190,179,123,215,207,174, 44,203,184, + 62,139,137,185,241,255,216,187,238,248, 40,138,247,253,204,238, 94,111,185,244, 66, 66, 2,129, 16,154, 64, 66,239, 8, 2,138, + 74, 17,228,135,133,166, 1,196,175, 34, 40,162, 2,210, 17, 4, 65,165, 72, 4, 4, 68, 16,176, 34,160, 82, 4,105, 2,130, 34, +129,208, 2,129,244,118,105,151, 92,174,237,206,239,143,220,157, 71, 72,185, 11, 65, 1,239,249,124,230,115,119,217,203,115,179, +179,179, 51,207,190,243,206,251, 62, 57,100,104,218,222,189,123,125,196, 94, 94,237, 1, 8,166,241,227,143,155,141, 6,221, 15, +223,125, 23,222,160, 65, 68,107, 91,178,103, 42,176,204,209,234,126, 80,175,215,151, 28, 62,124,184,244,173,183,222, 34, 41, 41, + 41, 95, 4, 6, 6, 14,223,179,103,143,106,200,144, 33,134,196,196,196,175,130,130,130, 6,246,234,213, 75,253,250,235,175, 27, +245,122,253, 10, 55, 46,204,121, 66, 72,179,147, 51,151, 60,115,114,241,234, 71,192,177, 93, 96, 20, 1,130,229, 40,204,197,123, + 1,124, 65, 41,173, 85,167, 80, 42,149,173,149, 74, 37,254,248,227,143,252, 14, 29, 58,152,202,202,202,196,243,231,207,247, 85, + 42,149,173,239,160, 35,209,252,252,124, 8,130,192, 1, 32,182, 87, 8,238,231,202,249,191, 39,159,124,242,187,109,219,182,245, + 29, 48, 96, 0, 34, 35, 35, 97,177, 88,208,164, 73, 19,152, 76, 38, 68, 69, 69,193,104, 52, 98,246,236,217, 40, 44, 44,156,236, + 74, 18, 97,153, 76, 6,137, 68,130,232,102, 45, 75,101, 50, 25,106, 43,174, 0, 64, 41, 98, 34, 47,254,176, 30,217,121,185,194, +182, 63,179,178, 74,205,124,191,203,217, 37, 9, 21,191, 87,202,163,164,215,232, 87,210, 0,192, 40, 64, 95, 45,167, 4,145, 23, +127,136, 71, 86,118, 46,190, 60,147, 81, 80, 98, 22,250, 95,172,132,211,173,122,222, 39,156,195, 86, 36,162,231, 75,174,127,119, +251,184, 59, 27, 32,106, 35,164,236, 56,127,141, 18,172,105, 70,177,102, 69,165, 49,174,238,132,219,102,153,250,206, 54,169,164, +140, 24, 49, 98,218,245,235,215,231,218,226, 93,173,113,135,107,253,250,245,151, 1,140,169,238, 59, 91,151,140,249, 6,192, 55, +238,240, 22, 23, 23,151,157, 62,125,186,236,245,215, 95, 39, 41, 41, 41,123,130,130,130,250,254,248,227,143,138, 33, 67,134, 24, +207,157, 59,183, 63, 36, 36,164,123,159, 62,125, 84,187, 79,156, 72, 43,189,122,245,135, 31,174, 95, 15,181, 8,194, 15,213, 9, +162,186, 18, 87,118, 62,103,203,144, 93,100,133,132,132, 32, 60, 60,252,142,238,123, 74,233, 54, 66,200,133,174, 93,187,126, 61, +122,244,232,198, 29, 58,116, 64,147, 38, 77,160,211,233,144,154,154,138, 35, 71,142, 32, 62, 62,254,132,193, 96,248,159,179,101, +181, 50,228,229,229,221,150, 70,136,200,125, 67, 54,172,156,181,243,212,145,246, 77,186, 13, 24, 37,111, 25, 34,192,100,166, 72, +185,113, 21,179,103,172, 45,205,184,113,249,188,217,106, 30,124,191,199,192,170, 1,173,120,158,255,198, 98,177,212,183, 89, 99, +235, 44,166,149,201,100,210, 91,173,214, 81, 28,199,241, 34,145,104, 35,203,178,141,109,105,237,230, 81, 74,185,187, 37,176, 30, + 72, 11, 86, 69, 36, 37,165,156,143,140, 12,123,251,235,175,118,116,161,148, 97, 41, 33, 37, 90,173,247,206,155, 55,111,222, 18, + 5,187,145,143,143,122,204,139, 99,134, 19,129,136, 8, 17,120,129,101,142, 38, 37,165,156,175,225,194,141, 27, 62,124,248, 71, + 10,133, 98,186, 78,167,251, 67,171,213,254,217,186,117,235,185,148,210, 25, 6,131,225, 59,181, 90,125,162,115,231,206,243,195, +195,195,151, 83, 74,127,119,243,166,182,162,220,255,107, 99, 29,155,108,231, 0,240,226, 56,174,240,175,191,254,218, 18, 29, 29, + 61,130, 82,234, 69, 8, 41,172, 45,103, 89, 89,217,255, 10, 10, 10,252,226,226,226, 44,241,241,241,209,163, 70,141,154,150,144, +144, 32, 42, 43, 43, 75,114,243,156,141,132,144,129, 79, 63,253,244, 90,145, 72,212,155, 97, 24, 34, 8, 2,117, 58, 14, 74, 41, +120,158,255,190,166,118, 17,137, 68,250, 71, 31,125, 84, 85,163, 85, 74, 34,209,187, 60,201,152,248, 73,171, 15, 36, 44, 44,179, + 80,106, 21,232,184,139, 89, 37,149,110, 33, 59,121,145,182,112,153,179, 76,152,244,209, 79,231, 23, 26, 45,130, 96, 21,232,248, +170, 56,221,154, 12,239, 19, 78, 0,152,192,172,248, 28,107, 86, 56, 28,222,237,203,134, 21, 63,215, 53,236,150, 38,184, 19,101, +217, 22,142,225,252,184,187,192, 93,137,216,114, 23, 67,135, 14,189,107,254, 36,102,179,249,157, 39,159,124,114,174, 86,171,125, + 63, 39, 39,231, 15,173, 86,123,190,105,211,166,147, 4, 65, 88, 94, 90, 90,186, 83,173, 86, 63,209,174, 93,187,201, 17, 17, 17, + 27,146, 41,221, 80, 29, 23,207,243,105,118, 43, 14, 0,106,183, 62,217, 5,132,179,144,176, 88, 44,169,174,212,143,231,249,180, +214,173, 91, 19,103,107, 86,197, 87,103,184,202, 91,225,161,183,233,220,185,115, 59, 3,120, 24, 64,107, 0, 69, 0,110, 0, 56, + 78, 41,253,177,214, 2,206,144,151, 78, 8,137,189,112,230,240,248, 75,231,207, 60, 99,223, 45,200,178,146,115,188,185,116,163, +197,144,191,246, 1, 23, 87,200,206,206,254, 3, 64,248,221,224, 54, 26,141, 35, 8, 33,137, 44,203, 82,145, 72,244, 12,203,178, +191, 8,130,240,190,201,100,218,204,223, 43, 33,223,239, 3,144,187,217, 7, 9, 33,125,234, 58, 95,145,135,211,195,233,225,244, +112,122, 56, 61,156, 30,206,187,199,233,235,235,171, 0, 96, 34,132, 80,150,101,149, 12,195,120, 83, 74, 13, 60,207, 23, 90,173, + 86, 75,126,126,190,112, 55,234,249,159,176, 96,121,224,129, 7, 30,120,224,129, 7,255, 77,240, 60, 95, 86, 80, 80, 32, 0,128, +143,143, 79, 9, 33,196, 68, 41,229, 41,165,124,126,126,190,224,105, 33, 23,133, 45,128, 74,119, 2,184,163, 76,107,179,155,160, + 38,126, 15,167,135,211,195,233,225,244,112,122, 56, 61,156, 15, 30,231,127, 6,118, 31,157,187, 81, 0,244,241,112,122, 56, 61, +156, 30, 78, 15,167,135,211,195,233,225,252,175, 21,198, 35, 49, 61,240,192, 3, 15, 60,240,192, 3, 15,234, 22, 30, 31, 44, 55, + 97,203, 41,247, 18,128,161, 0, 26, 1,184, 10, 96, 7,128, 85,110, 36, 60,118,230,211, 0,152, 6,160, 11,128,134, 0,174, 1, + 56, 12,224, 61, 74,169,222,211,226,149,195,223,223,255,109,145, 72,164, 5,202,131,226,217, 95,157,223,243, 60, 95, 80, 88, 88, +184,224, 46,245, 3,150, 82,202,187, 83, 87,231,186, 57,191, 90, 44,150,187, 86, 79, 15,238,217,113,164,137,143,143,207,102,157, + 78,247, 44,165,244,146,167, 69, 60,120,144, 16, 16, 16, 48,222,108, 54, 79, 23,139,197,243,179,179,179, 87,255,231, 5, 22, 33, +228, 16, 0, 80, 74,123, 0,128, 90,173, 62,198, 48, 76, 67,219, 49, 0,128, 83, 4,215, 74, 95, 5, 65,184,150,151,151,215,185, +170, 31, 83, 40, 20,199, 88,150,109, 72, 8,177, 39,159, 5,195, 48,176, 88, 44,106,150,101,139,171,224, 76,213,233,116,109,239, +145, 65,145, 0,248,193,219,219,187,108,238,220,185,171,122,246,236, 25,150,158,158,110,157, 58,117,106,247, 63,255,252,115, 0, + 33,228, 81,119, 68, 22, 33,164, 19, 33,100, 67,155, 54,109,190, 25, 57,114,228,182, 14, 29, 58, 72,242,242,242,212, 59,118,236, +168,183,113,227,198,211,132,144,103,221, 13, 85,113, 31, 76, 44, 92, 85,241,200,170, 59, 86, 17, 34,145, 72,155,154,154,170,182, +245, 89, 71,228, 97,139,197, 2,139,197,130,146,146, 18,180,110,221,186,206,235, 31, 28, 28, 28, 67, 8, 89, 17, 21, 21,213, 54, + 36, 36,228, 20,128,137,233,233,233,127,186, 83, 87,171,213, 10, 74,169,163,158,205,155, 55,247,140,200,238,245,161, 23, 36, 18, + 73,255,168,168,168,246, 70,163, 49,255,218,181,107, 39,121,158,159, 73, 41,205,172, 35,126, 47, 0, 51,165, 82,105,135, 70,141, + 26,133, 93,190,124, 57,197,108, 54,159, 0, 48,135, 82, 90, 88, 7,252, 77,122,244,232,113,100,229,202,149,190, 19, 38, 76, 56, + 66, 8,233,234, 17, 89, 30,252, 91,168, 95,191,190,182,164,164,100, 45,128, 24,145, 72, 20,100,203, 65,152, 41,149, 74,255,144, +203,229, 99,143, 28, 57, 82,224, 46, 39,207,243, 51,147,147,147,131, 58,118,236,184,184,101,203,150,179,115,115,115,203,204,102, +243,254,252,252,252,201,148,210,162, 26,238,143, 91,180,200,125, 47,176,108,121,127,122,222,114,128,227, 66,147,147,147, 3,212, +106, 53,120,158,119, 88, 7,236,147,153,115,120, 7, 91,156, 37, 52,109,218,212, 92,195, 68, 19,150,154,154, 26,160, 82,253, 29, +106,201,108, 54, 35, 40, 40, 72, 72, 75, 75, 11,168,152, 72,216,100, 50, 33, 52, 52,244, 94,138,101,242,146,143,143, 79,225,205, +155, 41,173,203,140,230, 57, 47,254,239,173,183,159, 29,250,136,247,177, 99,199,132, 71, 31,125,212,120,232,208,161,151, 0,184, + 20, 28,149, 16,226, 69, 8,217, 56,117,234,212,217, 50,133,198,247,192,177,243,198,141, 59,118,165,181,105,210,128, 76,158, 60, +153,125,229,149, 87,126,141,137,137,217, 76, 8,137,117,199,146,165, 86,171,127,148, 74,165, 17, 44,203,194,108, 54,223,212,233, +116,125,239,161,137,177, 13,128, 51,132,144, 24, 74,233, 31,174, 30,171, 14,121,121,121, 48, 24, 12,183,149,230,205,155,163,174, + 67,144, 16, 66,184,176,176,176,239, 22, 46, 92, 88, 47, 51, 35, 3, 31, 44, 91,214, 17,192, 42, 0, 29, 93,249,255,236,236,236, +219,234,217,180,105, 83,120,224,214, 53,152, 54,123,246,236,133,207, 60,243, 12,120,158,135,193, 96, 8,185,114,229, 74,139,233, +211,167, 15, 38,132,180,167,148, 38,221, 33,191,127, 84, 84, 84,226,164, 73,147,124,218,183,111, 15, 91, 86,137,144,195,135, 15, +119, 92,183,110,221,243,132,144,166,148,210,156, 59,249, 13, 31, 31,159,205,159,126,250,169,175, 66,161,192,247,223,127,239,219, +187,119,239,195,132,144,110,181, 21, 89,132, 16,198,215,215,247, 21, 0, 15, 11,130, 32, 1,112, 34, 63, 63,127, 30,165,212,236, +233, 49, 30, 84, 7, 63, 63,191, 23,138,139,139, 87, 74,165, 82,177,183,183, 55, 20, 10,133, 61, 7, 97,125,169, 84, 90, 95, 42, +149, 62,246,240,195, 15, 79, 60,112,224, 64,181, 17,241, 59,199, 4,141, 6, 67,230,176,132, 97, 1,160,121,148,175,198,203,203, + 11,115,230,204, 81, 14, 28, 56, 80, 9, 0, 71,142, 28, 25, 57,106,212,168,222,132,144,150, 85,137,172,202,180,200, 3, 97,193, +162,148, 30,170,112,162,144,203,229,216,182,109, 27, 88,150,189, 37,139,123,101,239,235,215,175, 95,227,143,217, 45, 96, 59,119, +238,132, 70,163,129,151,151,151, 99,130,145, 74,165,216,191,127, 63, 68, 34, 17, 56,142,131, 72, 36, 66,219,182,109, 81, 77,130, +249,187,130, 97, 45,202,147, 76, 86, 22,188,177, 91, 35, 57,134,190, 50,107,120,105,153,185, 29,128,146,130,252,252,252, 83, 95, +127,157,222,166, 73, 19,241,230,205,155,219,215,171, 87,111,168,171, 2, 11,192,180,216,216,216,175, 88,185,151,223,200, 81,163, + 71,142,229, 24,243,243,227, 94,159,159,146,145, 91, 18, 23, 23,247,245,247,223,127, 63,114,209,162, 69, 23,222,120,227,141,105, + 0,222,113,181,254, 18,137, 36,226,202,149, 43, 81,130, 32,224,161,135, 30,186,103,210, 13,216, 5, 20,165, 20,132,144, 91,132, + 84,117,199,106,130,221, 98, 85, 89,169,107,212,171, 87,175,233,115,207, 61,231,167,203,205,197, 7,203,150,217,255,220,182,166, +229, 66,251, 82,160,201,100,194, 83, 79, 61,245, 28,207,243,156, 93,252, 25,141, 70, 83, 97, 97, 97,153,211, 78,157, 28, 74,233, + 35, 46,180,103, 67,165, 82,249, 62,128, 24,131,193, 80, 15, 0,148, 74,101,154, 32, 8,223,148,148,148,188, 67, 41, 53,212,242, + 58,133, 1,104,129,170, 83, 54,209,133, 11, 23, 94,158, 54,109, 90,210, 63,205, 73, 8,137, 8, 12, 12, 92, 48,108,216, 48,236, +218,181, 11,187,119,239,182,200,229,114,110,212,168, 81,100,226,196,137,222,147, 38, 77,122, 12,192,135,119,120,153, 31,155, 61, +123,182, 79,179,102,205,176, 99,199, 14,156, 61,123,214, 16, 21, 21, 37,239,217,179, 39, 56,142,243,121,251,237,183, 31, 5,176, +225, 78,126, 64,167,211,205,123,253,245,215, 55,110,217,178, 69,125,237,218, 53,172, 88,177,194,111,248,240,225,135, 8, 33, 61, + 92, 21, 89,132, 16, 41,128, 87, 0,244, 98, 89,182,219,168, 81,163,172,255,251,223,255, 68, 12,195, 88,150, 45, 91,230,191,110, +221,186,225,126,126,126, 49,185,185,185, 30, 55,131,106,192,178,172, 89, 16, 4, 17, 0, 25,165,212, 88,211,231, 7,233,220,125, +125,125, 39,228,231,231,175, 10, 10, 10, 66, 96, 96,224,109,115,173,209,104,132, 76, 38, 19, 7, 5, 5,125, 58,104,208, 32,209, +183,223,126, 91,229, 82, 31, 97,201,204,239,183,206,173,231,227,173, 6, 0, 44,255,228,167, 82, 0,248,246,219,111,145,158,158, + 14,111,111,111,180,108,217,146,157, 59,119,110,240,228,201,147, 63, 0, 48,182, 42,174,138, 90,228,129, 16, 88, 85, 77, 12,246, + 68,162,118, 33,101, 23, 63, 21,223,219, 69, 89,133,134,218, 87, 97, 80, 32,122,189,222, 33,174, 52, 26, 13,108,147, 42, 44, 22, +203,109,188, 60,207,163, 98, 86,109, 87,182,127, 18, 66, 38, 0,216, 79, 41,189,234, 74, 35, 56,115,110,127,185, 41, 54, 74,167, +142,176,135, 60,127,236,245,242,215,141, 0,142, 93, 31,187, 98,101,143, 30,245, 94,153,241,209, 44, 67, 94,122,238,219,207, 61, + 17, 17, 21,228, 43, 87, 22,100, 23,250, 68, 71,247,131, 83,250, 0, 23,234,217,125,228,200,145,155,126,254, 45,153,200,100, 98, + 49,199,178,162,174, 15, 53,241, 13,243, 98,189,212,128, 87, 74,210,229, 99,163, 71,143,126,232,141, 55,222,232,230,206,185, 51, + 12, 3,141, 70,131, 77,155, 54,129,177, 43, 90, 23,207,189,174, 80,201,117,231,236, 2, 74,167,211, 97,215,174, 93, 24, 48, 96, +192, 25, 66, 72,140,237, 43,103, 40,165, 40, 42, 42, 66, 70, 70, 6,130,131,131,207, 16, 66, 68,206,203,133, 21, 57,237, 86, 84, +187,152, 26, 53,106,212,115, 86,171,149,115, 26, 28, 42, 10,151,219,196,139,171,231, 30, 18, 18,242, 51,128, 71, 88,150,133,169, +172,204,244,254,210,165,206,135,127,119, 22, 87, 85,113,218,235,202,243, 60,119,230,204, 25,145,253,158, 1, 32, 2,160, 4,224, +103, 75,170,250,151, 11,237,217, 84,161, 80, 28,219,185,115,167,166,109,219,182, 68, 34,145,192,106,181,226,220,185,115, 97,139, + 22, 45, 26,183,111,223,190, 71, 9, 33,205, 43, 38, 53,119,241,186,183, 56,124,248,112, 73,100,100,100,165,130,177,168,168,136, +107,210,164, 73, 15, 0, 73,255, 2,103,106, 86, 86,214,160, 71, 30,121,100,124,102,102,102,162,213,106,125, 19, 64, 75, 63, 63, +191, 51, 67,134, 12,129, 92, 46,239,229,138,192,170,238,186, 7, 4, 4, 12,236,220,185, 51, 86,172, 88,129, 69,139, 22,245,161, +148,238, 39,132,244, 46, 42, 42,218,247,228,147, 79, 66,171,213, 14,170, 76, 96,185,218,151, 8, 33, 77,186,119,239,254,233,156, + 57,115,212,187,118,237, 66, 84, 84, 20,138,139,139, 49,101,202,148,128,119,223,125,247, 32, 33,164,167, 93,100, 85,197, 73, 8, +105, 46,149, 74, 55,108,217,178, 69, 21, 25, 25, 25, 41, 22,139,153,200,200, 72,232,116, 58,148,149,149, 73,231,207,159,255,144, + 92, 46,255,243,195, 15, 63,220, 0, 96,200, 63,125,191, 87,168,107, 33, 0, 13, 0,173, 59,203,171,213,156,123, 33, 0,169,227, +230, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,249,242,229, 25, 18,137,100, 25, 42, 73,229, 82, 25, 39,249,123,210,106, 77, + 8, 57,201,178,108,181,159, 43,186,128,252,211,237,105,171,115, 40, 33,100, 57,128, 94,229, 67, 62,115,200,207,207,239,213,204, +204,204, 27,174,114,134,132,132,248,234,245,250, 15,131,131,131, 17, 24, 24,232,152, 59,234,213,171, 7,139,197,130,172,172, 44, + 80, 74, 81, 80, 80, 0,133, 66,129,144,144,144, 15,199,141, 27,183, 99,205,154, 53,121,149,114, 10, 88,244,228,240,233, 51, 89, +150,101, 0,128,229, 84,170, 73,111, 1, 17, 17, 17,232,218,181, 43,202,202,202, 80, 88, 88,136, 22, 45, 90,112,132,144,145, 12, +195,104, 40,165,171, 41,165, 7, 30,100, 1,111,159,144,102, 87, 92,247, 36,132, 64, 16, 4,112, 28,119,139,192,170, 88,236, 98, +200,214, 79, 73, 77,166,108,147,201,228, 16, 87, 94, 94, 94, 14,113,102,181, 90,171, 18, 88,181, 81,230,173, 4, 65,104, 72, 8, + 89,227,170,200,170,136,145, 35, 71,222,230,207, 49,121,242,228,212,236,236,108,250, 84,191,214,202,196, 61,233, 25,141,188, 85, +114,127,181,186,129,204,219, 71,155,151,151,119, 28,128,214,141,159,104, 28, 27, 27, 43,223,248,245,225,212, 23, 95, 91, 56,183, +109,164,175,166, 85,168,159,119,144,151, 92,162, 98, 72,137,204,106, 73,245,241,241,137,170,197, 19, 25, 0, 64,171,213,130,227, +184,123,194,130, 69, 41,181, 18, 66, 98, 8, 33,103,118,237,218,133, 14, 29, 58, 56, 68,150, 93,124, 20, 22, 22,226,220,185,115, +232,222,189, 59, 0,196,184,226,139, 37, 8, 2,204,102, 51,204,102,179, 67,184,136,197,226,219,132,139,253,187, 44,203,254, 85, +203, 83,152,235,237,237,221,189, 87,175, 94,146,173,219,182, 73, 40,165, 37, 40, 79, 72,173,167,180,138,196,213, 21, 96,181, 90, + 29, 86, 53,145, 72,132,155, 55,111, 58,172,192,118, 75,112,197, 37,242,170, 32,149, 74, 95,255,242,203, 47, 53,237,219,183, 39, +121,121,121, 16, 4,193, 49, 56,174, 90,181, 74, 54,116,232,208,122,167, 79,159,126, 27,181, 72, 59, 3,128, 84, 37,132, 0, 64, +163,209, 88, 1,183,119, 31, 87,202,105,181, 90, 73,151, 46, 93,222,200,205,205,125,200, 96, 48,204,119,165, 31, 1,248,222, 86, +236, 99,202,159,137,137,137,134,167,159,126, 90,222,160, 65,131, 14,119,218, 87,155, 52,105,210, 73, 36, 18,225,196,137, 19, 70, + 0,246, 39,233, 67,103,207,158, 53, 14, 25, 50, 68, 26, 22, 22,214,201, 13,203, 93,147,166, 77,155,238, 13, 8, 8,144,219, 45, +150,195,134, 13, 19,197,199,199,171,211,210,210, 96, 54,155, 49,109,218, 52, 60,254,248,227,240,243,243,195,228,201,147, 3, 23, + 47, 94,188, 25, 64,108, 53,156, 50,137, 68,178,233,202,149, 43, 81,193,193,193,242,223,126,251, 13,173, 90,181, 66,110,110, 46, + 50, 51, 51,161,215,235,145,153,153,137,177, 99,199, 6,124,240,193, 7, 33,247,208, 92, 83, 32, 22,139,161, 80, 40,180, 5, 5, + 5,119,226,199, 38, 5, 32,113, 22, 87, 82,169, 20, 82,169, 20, 50,153, 12,130, 32, 60, 16, 73,130,171,185,254,245, 8, 33,231, +197, 98,177, 84,161, 80,136, 25,134,129, 84, 42,237,231,227,227,147,208,183,111,223,150, 63,255,252,115,178, 43, 60,101,101,101, +155,164, 82,169, 40, 32, 32, 0, 0, 16, 21, 21,133, 86,173, 90,161,164,164, 68, 40, 44, 44,132, 86,171,101,110,220,184, 1,131, +193,128,140,140, 12,132,135,135,139, 24,134,217, 4,224,209,202,248,142,158,206,248, 4,192, 39,246,207,254,254,254, 89, 0,228, +246,207, 50,153, 12,245,234,213, 67, 90, 90, 26,212,106, 53,251,238,187,239, 14,217,182,109,219, 96, 66,200, 72, 74,233,231, 78, + 84,179, 31, 56, 31, 44, 74,233, 44, 66, 72,143,202, 38, 48,219,122,108,149,150, 43,123,113, 69, 8,217, 19, 81, 6, 6, 6, 66, +161, 80, 64,161, 80, 56, 18,142,242, 60,127, 27,191,237,137,222,237,147, 82, 42,149,120,230,153,103,232,234,213,171,199,219, 68, +214, 21, 87,255,119,216,138, 68,135,213,170, 34,154, 55,111,126,236,237,183,223, 30,248,203, 47,191,164,181,141,108,192, 41,211, +111,232,101, 26,173, 22,161,245, 7,140, 26, 52,228, 44,202,119, 19,186,138, 43,197,197,197,242, 70,161, 10, 19,195,148,145,250, + 82, 78, 29,172, 20, 75,131,188,189,235,137, 77,198,108,141,183,183,196,104, 52, 22, 0,168, 54, 57,179, 70,163,249, 73, 42,149, +134,179, 44, 11,150,101,225,231,231,231, 69, 41,133, 86,171, 69,104,104,168, 42, 58, 58,250, 18,199,113, 96, 24, 6,122,189,254, +198,245,235,215,251,213, 84, 49,111,111,239,159,164, 82,105,184, 61,121, 40,203,178,142, 13, 9,246,247, 44,203,130, 16,130,210, +210, 82,151, 56, 41,165,127, 16, 66, 98, 6, 12, 24,224, 16, 89,123,246,236, 65,255,254,253, 81, 80, 80,128,132,132, 4,103,113, +229,210,242,160,179, 83, 59,165, 20, 98,177, 24, 23, 47, 94,188,101,233,218, 94,212,106,117,173,111, 18, 31, 31,159, 35,195,134, + 13,195,167,159,126, 74,109, 89,222,149,132,144, 86, 94, 94, 94, 23,207,159, 63,239,146,159, 11,165, 20,102,243,223, 95,181,247, +113,231,251,203, 13, 17,221, 47, 54, 54,150, 20, 22, 22,218,133,163,227, 65,136,101, 89,172, 92,185, 82,222,190,125,251,233, 50, +153,236, 13,177, 88, 92,100,177, 88,182,150,149,149,205,167,148, 22,220, 75,131, 79,183,110,221, 94, 75, 73, 73,121, 60, 60, 60, +124,231, 29,136,119,218,174, 93, 59, 19, 0, 57,203,178,162, 58,152,192, 88, 91,223, 42,179,139,124, 74,169, 53, 54, 54,182,204, + 54,185,187,156, 1,217,207,207,111,243,238,221,187, 67,195,195,195, 97,177, 88, 96,181, 90,161,215,235,113,232,208, 33, 24,141, + 70, 88,173, 86, 68, 69, 69, 97,230,204,153,101,175,190,250,170,108,205,154, 53,217,122,189,254,217, 26,104, 95,221,177, 99,135, + 50, 56, 56, 88,110, 48, 24,144,148,148,132,216,216, 88, 20, 23, 23,163,164,164, 4,165,165,165, 48,155,205, 40, 42, 42,210,242, + 60,111,186,103, 38, 26,142,131, 84, 42,133, 88, 44, 46, 8, 15, 15, 7, 33, 68,150,156,156, 92,155, 37, 55, 13,128, 34,145, 72, + 36,113, 22, 86, 82,169, 20, 39, 78,156,120, 71, 38,147,125, 0, 55, 18, 17, 87,204, 87, 88,211,231,123, 64, 96, 45, 23,139,197, + 82, 31, 31, 31,177,211, 60, 45, 86,169, 84, 8, 8, 8, 88, 1,224, 49, 23,207,187,141,143,143,143, 99,124,111,221,186, 53, 82, + 82, 82,190, 41, 44, 44,124, 62, 59, 59, 27, 12,195,108, 98, 24,102,176, 93, 7,228,231,231, 35, 44, 44,172, 77, 85,124, 93, 98, +131,199,131, 80,135, 5,171,121, 99, 31, 85,133,121, 10, 26,141, 6,215,175, 95, 71, 73, 73, 9,189,124,249, 50,153, 48, 97, 2, + 49,153, 76,159, 17, 66,142, 83, 74,175, 85,167, 69,238,119, 11, 86,165,235,158,246, 37,194,202, 4, 85, 69,193,229,138, 16, 50, +153, 76,170,216,216, 88,193, 62,113,219, 11, 0, 82,149,192,178, 89, 10,220,134, 72, 36, 82, 79,152, 48,161,120,245,234,213,227, + 8, 33,241,148,210,203,181,109,164,157, 95,109, 9, 92, 52,115,218, 76,159,144, 6,141,222,120, 99, 6,247,196, 19, 79,252,182, +113,227, 70,222,167,217, 99,189, 15,252,244,121,224,135, 83,166,238,217,189,123, 55, 80,238,240,236, 42,142,252,240,195, 15, 65, +147, 95,153,136,153,175,191,250,163, 38,202, 79,162, 34, 62, 74,153,177, 36, 71, 5,106,144, 54,110,250,248,215, 59,119,102, 0, +168, 54,211,188, 92, 46, 15,191,124,249,114,148,179,128, 48,155,205,208,106,181,216,184,113,163,191, 90,173,246, 87,169, 84,224, + 56, 14,173, 90,181,114,213, 66, 18,126,233,210,165, 40,181, 90,141,210,210, 82, 24,141, 70, 88, 44, 22, 8,130, 0, 66, 8, 68, + 34, 17, 36, 18, 9,148, 74,165, 91, 59,245,156, 69,214,158, 61,123,208,162, 69, 11,228,231,231, 35, 49, 49,209,109,113,229,108, + 21,114,246,183,226, 56, 14,155, 35, 35,241, 98,122,186, 67,184, 44,247,242,194, 76,161,118,217, 29, 30,122,232, 33,122,244,232, + 81,252,248,227,143,120,242,201, 39,201,119,223,125,103,230,121, 94,156,150,150,230,178, 53, 76, 16, 4, 71, 93,237,227,181,179, +176,114, 87, 96, 89,173, 86,181, 68, 34, 65, 89, 89,153, 99, 9,223,185, 52,108,216, 16, 58,157,142, 43, 42, 42,226,210,211,211, + 21,243,230,205,251,223,193,131, 7,131, 1,140,248, 55, 7,155,213,171, 87,135,191,248,226,139, 55, 57,142,163,253,251,247,127, +238,198,141, 27,131,130,131,131,247,255,242,203, 47, 75, 1, 52,113,151,207,223,223,255,119,142,227, 66, 85, 42,149,120,251,246, +237,150,226,226, 98,113, 64, 64, 64,150, 93,208,218,219,218, 98,177,164, 22, 22, 22,182,117,133,207,223,223, 95,252,241,199, 31, + 91,242,242,242,196, 65, 65, 65, 89,118, 30,165, 82, 41,222,190,125,187,165,168,168, 72,172,213,106,127, 47, 40, 40,168,145, 47, + 55, 55,247,217,145, 35, 71, 30,222,191,127,191, 31,203,178,184,113,227, 6,242,242,242,160,213,106,177,105,211, 38,132,135,135, + 99,199,142, 29, 58,157, 78,247,194,251,239,191, 63, 93,175,215,187, 18,178,161,123,135, 14, 29,194, 11, 10, 10,160,213,106, 81, + 82, 82,130,223,127,255, 29,205,155, 55, 71,122,122, 58, 24,134,129, 86,171,197,170, 85,171, 74, 9, 33,186,123, 97,146, 97, 89, +214, 97,101,114, 18, 69,101,157, 58,117,194,129, 3, 7,222,116, 71, 20, 81, 74, 77, 34,145,232, 22, 97,101,127, 47, 22,139,173, +238,214,141,231,121,177,205, 7,148,184,242,249, 30, 64, 15,185, 92, 46,174,248,199,210,210, 82,113,112,112,112, 55, 55, 4,175, +175, 92, 94,110, 96, 10, 15, 15, 71, 97, 97, 33,111, 50,153,134,111,218,180,201, 2, 0,177,177,177,195,121,158, 47,179, 90,173, +172, 68, 34, 65, 73, 73, 9, 2, 2, 2,124,171, 36,100,234, 68,239, 5, 0, 0, 32, 0, 73, 68, 65, 84,240,230,247, 91,231, 5, + 85,244,193, 10, 14, 14, 70, 76, 76, 12,140, 70, 35, 50, 50, 50,112,232,208, 33, 11,207,243, 95,172, 94,189, 90,240,247,247, 31, +243,212, 83, 79,177,167, 79,159,126, 25,192,107,213,105,145,251, 90, 96,217, 20,227, 65, 0, 61,237, 39,231,188, 68, 88,157,229, +170,130, 5,139,212,112,163, 21,164,166,166, 42,149, 74,165,227,111, 22,139, 5, 33, 33, 33,130, 32, 8,164,226,239,216,235, 81, + 91,136, 68, 34,245, 91,111,189, 85,176,106,213,170,231,225,162,163,248,246,151,155, 98, 99, 5,113,245,201,162, 57, 43, 62, 94, + 60,207,231,234,158,207,176,246,163, 37, 60,207,227,244, 67, 15, 61,212, 77,175,215,115, 94, 74, 11,114, 11,176, 7,229,113,176, + 92, 18,131,182, 88, 90,235, 79,158, 60,121,250,177,199, 30, 59,186,254,203,175,125,210,147,146,142, 75,139,114, 51, 52,141,163, + 56,113,189,240,193,197,101,101,226,225,195,135,251, 3,120,170, 58, 46,134, 97,144,148,148,132,228,228,100,168, 84, 42,168,213, +106,168, 84, 42,104, 52, 26,168,213,106,168,213,106,183,219,144, 97, 24,240, 60,143,175,190,250, 10, 10,133, 2, 74,165,242,150, + 98, 23, 87,119,114,109,250,247,239, 15,157, 78, 7,149, 74,229, 88,214,116, 7,118, 31, 44,147,201, 4,147,201, 4,179,217,204, + 3, 16,113, 28,135,177,169,169, 14,171,142, 59,194,165, 34, 90,181,106, 69,143, 31, 63,142,163, 71,143,162,164,164, 4, 31,127, +252, 49,130,131,131, 31, 6, 48,195,141, 39,206,200,160,160,160,254,125,251,246, 13,177, 88, 44,208,235,245,204, 95,127,253, 5, +153, 76, 6,150,101,145,154,154,138, 45, 91,182,224,250,245,235,118,235, 97, 40, 33,164, 1,165,244,122,117,147, 2,199,113,142, +167, 79,123,113,182, 98,177, 44,139,192,192, 64, 4, 5, 5,225,147, 79, 62, 17, 55,104,208,224,241,127,115,160, 89,188,120,113, +227,229,203,151,175,219,184,113,227,158,103,159,125,118,219,185,115,231, 70,123,121,121,253,117,224,192,129,121, 82,169, 84,168, +229,253, 29,154,158,158, 30,224,252, 39, 65, 16, 20, 86,171,213, 33,104, 75, 75, 75,209,178,101, 75,151,249,206,159, 63,175, 0, +128,121,243,230,137, 0, 40,236,225, 63,236,156,165,165,165,162,230,205,155,135,186, 40, 6, 46, 17, 66,186,245,233,211,231,216, +222,189,123,189,195,195,195,145,150,150,134,180,180, 52, 52,110,220, 24, 11, 22, 44, 40, 41, 42, 42,234, 98, 19, 85,223,185,120, +218, 33,222,222,222,162,155, 55,111,194,106,181,162, 77,155, 54, 88,181,106, 21,134, 15, 31,142,150, 45, 91,162,168,168, 8,231, +207,159,199,134, 13, 27,188,197, 98,241, 83,255,246, 4, 99, 91,194,170,178,212, 6, 86,171, 85, 35,147,201,138,164, 82,169,196, +238,127,117,232,208, 33,183,173, 87,206, 15,126,238,124,190, 23,196,106, 69, 72, 36, 18, 4, 5, 5,185,204, 35,149, 74,137,125, +108,180, 90,173, 40, 44, 44,228,131,131,131, 29,203,248,103,206,156,225, 35, 34, 34,120,150,101, 89,137, 68, 2, 66, 8, 20, 10, + 69,149, 3, 62,229,233,156, 39,134,207,112,236, 34,100, 68, 74,205,164,183,202, 31,246,207,156, 57, 3,179,217,140, 67,135, 14, + 89,222,127,255,253,244,130,130,130, 73, 0,184,159,126,250,105,228,212,169, 83,217,128,128,128, 62, 78,227,229,109, 90,228, 65, +176, 96, 29,164,148, 18,155, 67, 57,177, 11, 27, 74,233,109,162,170, 42,193,101,179, 96,145,154,110, 54,150,101,241,227,143, 63, + 58,132,128,125, 23, 33,165, 20,117, 45,176,124,125,125, 75, 58,116,232,160, 73, 73, 73,217, 82, 91,203,213, 39,139,230,172,120, +111,222, 44,159,188, 11,199,145,154,158, 1, 93,182,229,244,145,191,174,127, 3,224, 27, 0,192,154,102, 7, 49,238,194, 74, 87, + 57,155,249, 43, 90, 63, 20,162,254,230,145,199, 30, 15,123, 58,238, 53,230,165,151, 94,234, 58,114,228,200,194,103,159,125,246, + 21,149, 74,213,196,108, 54,231,127,189,107, 87,242,211, 79, 63,221,128,231,249,145, 53,197, 12,177, 88, 44, 55,134, 12, 25,226, +104,219,160,160, 32,205,214,173, 91, 3,213,106, 53,158,123,238,185,156,228,228,100,199,178, 80,113,113,241, 13, 87,234,104, 54, +155,111,180,110,221,186,202,101, 65,187, 5,210, 29, 78,219,181,116,236, 22,204,203,203,195,197,139, 23,193,113, 28, 58,118,236, +136, 35, 71,142,160,107,215,174,110,237, 32, 44, 43, 43, 67,120,120, 56,202,202,202, 80, 82, 82, 82, 10, 64,186,169, 65, 3, 0, +192,203,121,121,248,253,253,247,241,219,194,133,181,234, 71,173, 91,183,166, 39, 78,156,192, 95,127,253, 5,163,209,136, 23, 94, +120, 1,182,229, 65, 0,232,235,226,249,182,108,218,180,233,190, 3, 7, 14,248,171,213,106,232,245,122,232,245,122,140, 25, 51, + 6,227,199,143,135,197, 98,193,234,213,171,241,237,183,223, 66,163,209, 64,175,215,163,164,164,196,123,192,128, 1,199, 8, 33, +221,171, 90,218,166,148,146,235,215,175,227,189,247,222,131, 32, 8,152, 58,117, 42,162,162,162, 28,194,234,198,141, 27,152, 55, +111, 30,120,158,199,187,239,190,139,198,141, 27,195, 98,177,200,220,137, 51, 86,215,152, 60,121,242,213,111,190,249,102, 79, 74, + 74,202,163,139, 22, 45,234, 65, 8, 17,222,120,227,141,247, 52, 26, 13,127, 39,188,249,133,197,184,120,229,134, 67, 0, 85, 44, +254,126, 62,110,243, 93, 78, 74,113,252, 63,207, 59,243,241,240,245,241,118,183,138,165, 22,139,165,100,240,224,193,218,175,190, +250,138, 52,110,220, 24,215,174, 93,179, 63,148,150,214, 34, 52, 67,154, 78,167,139, 98, 89, 86,124,229,202, 21, 68, 68, 68,160, + 67,135, 14,152, 63,127, 62,114,115,115, 97,181, 90, 17, 16, 16, 32, 88, 44,150, 51, 38,147,233,215,127,123,130,113,182, 50, 57, +151, 95,126,249,229, 77,153, 76, 70, 1,156, 0,224,150,192,166,148,154,234,215,175,127, 11,119,109,172, 87,119, 81, 4,221,181, +157,137,193,193,193,135,212,106,245,227,249,249,249,183, 88,177,186,116,233, 98, 14, 12, 12, 60,236, 42,143, 74,165,202,103, 89, +214, 23, 0,210,210,210,160, 84, 42,197, 73, 73, 73, 11, 9, 33,211, 0,160, 65,131, 6, 11,117, 58,157,184,129,109, 60, 13, 10, + 10,130,201,100,170,210, 93,229,216,153,204,207, 0,124,230, 52,247,102, 20, 22, 22,202,151, 44, 89,162, 95,184,112,161,129,231, +121, 35,128, 3, 5, 5, 5,142, 56, 88, 17, 17, 17,133, 34,145,200, 71,171,213,214,115,162,186, 77,139, 60, 8, 2,235,182,221, +122,206,162,199, 21,145,229,138, 21,130, 16, 2,131,193,112,139, 53,196,190,139,176, 50,129,101,155,200,107,181, 68,104, 19, 87, +242,173, 91,183,126,241,209, 71, 31, 29,117,245,255,156,125,176,214, 44,157,187,200, 46,174,206, 30,217,139,239, 18, 11,115,167, + 46, 92,182,188,182,141,221,220, 95,217, 42, 40,208,239,224,251, 11,231,106,174,238,249, 12,219,214,124, 64,207,158, 58,213,254, +212,169, 83,207, 79,156, 56,177,190,173, 67,233, 0,252, 9,224,105, 87,118,221,228,228,228,220,226,255, 20, 21, 21,117, 73,171, +213, 6,202,100, 50, 36, 37, 37,233, 19, 18, 18,220, 94,122,169,200, 89, 23,168, 40,174, 18, 18, 18,208,171, 87, 47, 0,192,145, + 35, 71,208,165, 75, 23,183, 68,150,197, 98, 41,104,214,172,153,195,154, 85, 88, 88, 40, 0, 64, 92, 70, 6,226,131,131,193,113, + 28,126, 91,184, 16,239, 88, 44,152, 47,114,207, 53,167, 77,155, 54,244,212,169, 83, 72, 78, 78,134,213,106,197,192,129, 3,157, +197,149,203, 8, 10, 10,122,253,192,129, 3,254,241,241,241,198,205,155, 55, 27, 5, 65, 96,218,180,105,163,142,137,137,193,242, +229,229,221,232,233,167,159,198,212,169, 83,145,144,144, 0,133, 66,129,110,221,186,241,179,102,205, 10,152, 52,105,210,203, 40, +223,134, 95,217, 4, 67,251,245,235,135,195,135, 15,131,101, 89,180,111,223, 30,121,121,142,205, 61, 8, 12, 12,172,236, 24,107, +187,223,255,149,137,136,227, 56,122,232,208,161, 69, 61,122,244, 64, 74, 74,202,163,177,177,177, 31,143, 30, 61, 58,237, 78,121, +189,189,212,104,221, 60, 18, 70,163, 17, 70,163, 17, 33, 33, 33, 40, 46, 46,198,213,171, 87, 97, 52, 26, 17, 24,160,117,155, 47, +166,101, 99, 7, 95, 64, 64, 0, 74, 74, 74,112,253,250,117,152, 76, 38,248,249,121,187,211,231,195,250,245,235,247,203, 23, 95, +124,225,187, 97,195, 6, 83,207,158, 61, 37, 31,127,252, 49,209,104, 52,200,206,206,174,237, 41, 31, 58,114,228, 72,120,159, 62, +125,162, 47, 92,184,128, 67,135, 14,193,100, 50, 33, 38, 38, 6,151, 47, 95, 70,167, 78,157,160,215,235, 79,156, 58,117,234,251, +123, 97,130,177, 47,223,217,203,225,195,135,223,209,104, 52, 22, 0,203,238,164, 47,222,188,121, 83,218,170, 85, 43,163, 76, 38, +147,216,196,218, 7,255, 86,223,174,228,186,223,209,206,196, 26,198,148, 73,126,126,126,125, 26, 54,108,136,172,172, 44,177, 68, + 34, 65,151, 46, 93,204,237,218,181, 51, 7, 5, 5,189,236,198,117,185, 32, 22,139,187,151, 63, 68,240,184,121,243, 38, 40,165, + 83, 91,182,108,249,106,113,113, 49,242,242,242, 36, 26,141,198,241, 48, 29, 29, 29, 13,163,209,120,193, 13,145, 57, 39, 34, 34, + 98,186, 88, 44,158,159,147,147,179,186,146, 54,146,180,110,221, 90, 35, 22,139, 97, 54,155,141, 21,142,221, 83,126,111,117, 34, +176,156, 84, 99, 69,179,121,141,203,131,174,250, 96, 17, 66, 96, 50,153,160, 84, 42, 29, 75, 79,206,145,219, 43, 19, 88,181, 65, + 88, 88, 24, 58,116,232, 32,223,182,109,219,230, 37, 75,150, 28,171, 13,199,142, 47, 62, 15,246, 18, 74,195,210, 79,236,198,197, +179,191,227,155,243, 5,185, 83, 23, 46,123,229,137,167, 70,100, 85, 20,100,219,199,213,204,215, 36, 64,217,178, 94,160,239,193, + 15,222,127, 79,147,119,225, 56, 50, 50, 51,177,251,196,169,211, 38, 74,207, 3,152, 90, 87, 23,212,121, 55,218,189,210, 81,157, +195, 52,228,230,230,226,252,249,243,118,113, 21, 3, 0, 93,187,118, 61, 99, 23, 89,167, 79,159, 70,108,108,236,109, 97, 26,110, +179, 52,228,231, 47,168,240, 27,125, 0,248,217,133, 62,199,113,232, 50,125,186,219,226,138, 16, 66,121,158,135, 78,167,179, 63, + 25,214, 74, 92,217,184,186,148,150,150, 98,243,230,205,185, 87,174, 92, 9,107,216,176,225,164,207, 62,251,108,153, 66,161,184, +213,196, 81, 90,138, 62,125,250, 96,194,132, 9,152, 57,115,166, 48,122,244,104,150, 97,152, 42, 51,216,243, 60, 47,110,208,160, +193,126, 0, 15, 95,184,112, 1, 0,142, 81, 74,187,216,143, 87,119,204, 5, 8,197,197,197, 34,181, 90, 93,105,136, 7,113,249, + 54, 77,119,151,244, 28,156, 71,143, 30,125,111,233,210,165,223, 76,153, 50,229,202, 29,114, 86,106,193,122,252,241,199, 81,102, +180, 32, 53,171, 16, 60,111,133,193,156,237, 54,159,179, 5,235,241,199, 31,135,161,204,132,155, 25, 58, 88,173, 60,138, 13, 86, + 87,175,189,226,145, 71, 30,249,105,235,214,173, 65,199,143, 31, 7,207,243,194,229,203,151,175, 15, 30, 60, 88,243,198, 27,111, +248, 58,249,152,186,139,143, 70,140, 24, 49,244,232,209,163,186,232,232,104,159, 19, 39, 78, 32, 59, 59, 27, 86,171, 21, 15, 63, +252, 48, 36, 18,201,205,133, 11, 23,138, 1,124,116,175, 8, 44,169, 84,138,223,127,255,189, 78,132,149, 51, 36, 18, 73,173,151, + 25,239, 87,156, 56,113, 34,109,226,196,137,205, 53, 26,205,242,110,221,186,245,242,245,245,101,188,189,189, 15,213,171, 87,239, +213, 86,173, 90,185,188,154, 32, 18,137, 70, 43,149,202,171, 86,171,149,181, 89,206, 1, 0, 86,171, 85,194, 48, 12, 26, 52,104, +224, 48,154,180,111,223, 30, 65, 65, 65,124, 98, 98,226,104, 87,249,179,179,179,111,217, 85, 88, 9,198,117,233,210,133, 51, 26, +141, 72, 78, 78, 62, 82,209, 66,255,160,136,172, 42, 29, 84, 24,134, 1,165, 20,178,182,109,145,177,119, 47,190,250,234,171,106, +137,214,172, 89,131,138, 38, 61, 66, 72, 31,231, 88, 25,246,221,130, 47,190,248,162,227, 59,167, 79,159,118, 56,187, 15, 28, 56, +240, 22,206,147, 39, 79,222, 38,178, 42,114, 86,113,113, 47,108,223,190,253,212,226,197,139, 79,184, 56, 24, 58, 56,237, 62, 88, + 67,159,121, 46, 99,197,123, 51,207,109,248,126,127,203, 12, 3,205,152,186,112,217,148,138,226,202, 85,206,102, 65,170,102,161, + 1,190,135,150,190,255,158,151,221, 26,182,245, 76,102, 33,172,116,156, 59, 23,203,149,115,119,182, 36, 18, 66,132,186,224,172, +133,176,184,133,211, 57, 76, 67, 70, 70,134, 67, 92, 57, 5, 26,141,233,218,181,235, 25,155,184,178, 31,179,214,166,158, 28,199, + 97,138, 94, 15,142,227,208,115,246,108, 60, 60,119,174,219,231,206,243, 60, 56,142, 67, 84, 84,148,219,226,202,153,147, 82,122, +244,220,185,115, 17,163, 70,141, 82, 71, 69, 69, 37, 17, 66, 68, 99,198,140, 17,130,131,131,153,223,126,251, 13,148, 82,116,237, +218, 21, 89, 89, 89, 16, 4, 1,155, 54,109,194,168, 81,163,200,159,127,254, 73, 5, 65,216, 87, 93, 61,147,147,147,199,245,238, +221,123, 77, 89, 89, 25,151,151,151, 55,206,213, 99, 53,157,251,246,237,219,175, 68, 69, 69,245, 64,213,161, 24, 4, 0,199,239, +132,211,102,189,139,190, 19,206,170, 44, 88, 95,126,249, 37, 4, 65, 64, 88,144, 22, 70,163, 17, 21,197,108, 77,156, 21, 45, 88, +219,182,109,131, 32, 8,168, 31,236, 3,147,201, 4,187, 99,112, 77,156,190,190,190, 31,108,220,184, 49, 52, 49, 49, 17,169,169, +169, 88,182,108,217,141,130,130,130,199, 10, 10, 10,164,179,102,205, 58,248,204, 51,207, 4, 10,130, 96,116,247,222,164,148, 26, + 9, 33,163, 59,119,238,188,105,222,188,121,215,154, 54,109, 90,191, 75,151, 46,218,188,188,188,156, 63,254,248,227,250,154, 53, +107, 84, 86,171,117,116, 85, 75, 79,255,196,253,238,140,180,180,180,217,182,121,198, 45, 97,229, 74, 61, 79,158, 60,249,150,141, +251,164, 43,220,255,212,185,223,233,206,196,154,234,185,114,229,202, 84, 84,136,111,230,110, 61, 79,158, 60,153,220,167, 79,159, +185,129,129,129,179,100, 50, 25,114,114,202,147, 19,216, 45,141,246,249,186,109,219,182,232,215,175, 31, 46, 93,186, 52,119,250, +244,233,201,119,210,158,182, 7,237, 72, 0,207,247,238,221,251,141,161, 67,135, 98,229,202,149,160,148,174,123, 80, 5,177, 61, + 76, 3,113,126, 5, 0,139,197,146,114,245,234,213,224,198,249,249,108, 8, 33,104,223,190, 61,156,115, 8,218,253,114,236,142, +114,191,254,250,171, 85, 16,132,106, 99, 78,241, 60,159,114,244,232,209,192,189,123,247,138,236, 23,210,230,172, 41,164,167,167, + 51, 7, 15, 30,116, 88,195, 56,142,195,161, 67,135,172,102,179,249,166,187, 39,117,233,210,165, 58,121,122,251, 53, 33,249,213, +159,118,127,235,215,177, 67,183, 2,141,143, 79,165, 55,176, 61,226,123,181, 29,139, 99,230, 47, 94, 56, 87,107, 23, 87, 95,158, +201, 44, 40, 51,242,189, 46,228,148,158,173,235, 11, 90, 92, 92,156,108,223, 45,168,215,235,111,222, 43, 29,205,190,131, 48, 56, + 56,248, 12, 42,236, 22,180, 31,139,141,141,189,237,152, 91,102, 18, 65,128,151,151,151, 99,112,112,215,239,138, 16, 66,237, 75, +214, 21,239,135,218, 32, 51, 51,115,201,244,233,211,251, 46, 88,176,192,127,207,158, 61, 26, 27, 39,134, 12, 25,146,125,238,220, +185,110, 0,164, 37, 37, 37,251, 22, 44, 88,224,239,148,143,144, 27, 48, 96, 64, 86, 86, 86,214,138, 26,218,243, 26,128,222,238, + 30,171, 9, 67,135, 14, 77, 66, 37, 1, 63,239, 4,119,131,211, 14, 93, 65, 17,146,146,211,108,185, 40, 5,240, 55,178, 28,126, + 83, 22,139, 21,186,162, 60,183, 45, 88, 87,175,167,217, 82,131,241,224,249,116, 27, 95,185,163, 59,205, 47,117,197, 58,208,117, +249,242,229,143, 49, 12,195,252,246,219,111,198,197,139, 23,167,228,228,228, 12,164,148,222,180,245,179,158, 27, 54,108,216,236, + 66, 72,134,170,174,253,121, 66, 72,167, 55,223,124,243, 21, 0, 93, 1,212, 7,112, 19,192, 17, 0, 31,221, 99, 17,199,151,221, +167,220,181,198,253,178, 51,113,223,190,125,179, 7, 13, 26,196,133,135,135,191, 29, 30, 30,206,228,231,231, 67,175,215,131, 97, + 24, 4, 5, 5,161, 69,139, 22, 8, 10, 10, 18, 46, 92,184,176,224,205, 55,223,172, 49,166, 94,243,230,205, 35, 45, 22, 75, 35, +134, 97, 34, 1, 68, 82, 74, 35, 9, 33,145, 0,124,108,150, 48, 77, 68, 68, 4,215,177, 99, 71,116,232,208, 1, 7, 15, 30,196, +142, 29, 59, 62,163,148,254,228,108,189,170,139,177,247,158,183, 96,229,231,231,247,123,236,177,199,246,178, 44,219,160,178, 9, +171,146,164,204,201, 89, 89, 89,143, 86, 59,120,229,231,247,123,245,213, 87,247,178, 44,219,192,110,153,178, 90,173, 70,157, 78, +247, 82,207,158, 61, 87,137, 68, 34,169, 51,175, 32, 8, 55,178,178,178,254,209, 92,122, 21,227, 96,245,123,108, 80,238,157,114, +170,196, 76,163,139, 63,196, 35, 43, 59, 23, 95,158,201,204, 47, 54,241, 61, 47,229,148,156,187, 27,245, 79, 78, 78,238,127,175, +118, 54,155,144,170,116,233,175,186, 99, 46, 34,199,133, 64,162, 57, 53,212,143,216, 68, 22,169,163,243, 61, 71, 8,233, 60,113, +226,196, 25, 10,133,162, 61, 0,148,150,150,254,150,158,158, 62,215,190, 75,176,166,227, 30, 84, 13,139,197,146,218,162, 89,180, +189,173,111, 9,205,224,252,222,106,181,166,186,195, 87, 25,143,243,103,158,231, 83,107,176, 34, 79,233,208,161, 3, 59,101,202, +148,172, 61,123,246,216, 19,220,150, 58,245,139, 75,168, 38,152,168,139,125,203, 8, 96,177,173,120,112, 15,142,117,238,124,254, +183,240,237,183,223,206, 24, 62,124,248, 6, 31, 31,159,207, 35, 35, 35,163, 3, 3, 3, 53,114,185, 28, 70,163,177,216,100, 50, + 93,188,116,233,210,179,211,167, 79,191,230, 10,215,134, 13, 27, 88, 0, 98, 65, 16,100, 12,195, 40, 1,104, 8, 33,222,118,129, + 69, 8,129,217,108, 70,114,114, 50,222,121,231, 29,126,255,254,253,239, 3,120,215,141,234,182, 3,224,239, 52,142,251, 3, 48, +161, 60,240,108, 14,128, 83,247,141,192,178, 69,171,238, 84,199,157,174, 58,206,240,123,165, 81, 70, 26, 23,111,193,154,197,183, +228, 33,180,139,175, 74, 63,215,176,208, 87,104,176, 78,252,232,167,132, 37, 70, 43, 21,204, 86, 97,204,165,236,146,243,255,225, +129,199, 90,155, 99, 46,240, 62, 82, 71,245, 35,117,124,190, 73, 0, 70,214,246,184, 7,213,168,229,156,156,182,247, 34,159,201, +100,122,181,115,231,206, 31,242, 60,191,212, 98,177, 28,241, 92, 41, 15,238,101,124,249,229,151,215,236,243,242,176, 97,195, 88, + 0,216,190,125,187,219,187,123, 71,141, 26,197,219, 18,140,151, 1, 40, 1, 80,132,242, 64,217, 4, 0, 74, 74, 74,242,211,211, +211, 47,240, 60,127, 1,192,230, 90,236,160,245, 39,132,252, 64, 41,125,220, 38,216,126,160,148, 62,238,252,183,251, 70, 96,253, + 87,177, 61,225,239, 9,182,162,112,170,233,115, 85,184,152,169, 63,116,167, 79,172, 30,120,224,193,125,243, 16,113, 19,192, 64, + 79, 75,120,112,223,205,127,181, 16, 86,118,156, 63,127,254,174,185, 2,220,175, 96, 60, 77,224,129, 7, 30,120,224,129, 7, 30, +120, 80,183, 32, 0,250, 84,241, 20,230,206,238,128, 62,181,120,202,219,231,225,244,112,122, 56, 61,156, 30, 78, 15,167,135,243, +191,197, 89, 75, 12,168, 97,137,112,215, 61,167,176,156,157, 56,235,186, 0,232,227,225,244,112,122, 56, 61,156, 30, 78, 15,167, +135,211,195,121,135,165,215,180,105,211,222, 66,121,126, 98, 58,109,218,180,183, 40,165, 3,202,101, 12, 29,240, 15,215,197,165, +226,241,193,242,192, 3, 15, 60,240,192, 3, 15,238,117, 28, 91,184,112, 97,233,194,133, 11,237, 14,237, 57, 0,136,205,122,149, +115, 47, 86,248, 95, 19, 88,132,144, 16,134, 19, 63, 39, 18, 75,123,129, 10, 45, 0, 0, 12,155,192,155,202,126,177, 90,205,159, + 83, 74,211, 93,224,168,116,199, 87, 52,208, 44, 74, 43,255,206,200,243,226,155,197,166, 97, 23,203, 3,209, 85,102,189,171, 54, +224,219, 48, 66,186,200, 36,146,159, 37, 90,109,165,209, 5, 77, 5, 5,134, 50,147,169,239,118, 74,143,122,250,190, 7, 30,120, +224,129, 7,247, 3, 8, 33, 74,111,111,239,253, 12,195,132, 59,253, 13,149,189, 7, 0,158,231, 51,116, 58, 93, 95, 74,105,238, + 63,201, 89,113,202, 69, 21,115,249,189, 10,206,118,226,118,161, 81, 99, 6,235,166,193,170,110,209,145,225, 95,164,103,102,157, + 41, 42, 51,141,189,152, 86,172,115,251, 71,197,178, 23,181,126, 65,243,255,111,244,171,190, 81, 77,162, 73, 88, 88, 61,128, 2, + 55, 83, 82, 3,175, 94,185,220,123,219,198,143, 38,139,101,178,119,204,101,101,159,186,203, 29, 5, 40, 35, 84,210,195,159, 78, +123, 70,203,193,138, 17,243,190,216, 35,232,205,245, 47,151,111, 27,117, 25,195, 8,233,226,237,227,243,211,226,189,123,229,234, + 54,109, 42, 10, 51, 8,130, 0,253,153, 51,242,105,253,251,255, 52,140,144,126, 30,145,245, 64, 14, 66, 65, 26,141,102,146, 72, + 36,234,105, 54,155,195, 37, 18, 73, 10,207,243,135,242,243,243,151, 83, 74,211, 60, 45,228,129, 7, 53,222, 67, 85, 38, 24,255, + 55,147,143, 3,128, 90,173,254,157, 97,152, 80,231,201,223, 30,159,177, 98,156, 71,167,120,143,215,242,242,242, 58, 87,115,190, +145, 62, 62, 62,171, 0,180,171, 41,208,177,237,249,254,148, 78,167,123,201, 22,174,165, 50, 62,181,183,183,247,108, 66,200, 48, +134, 97,106, 76,248, 43, 8, 2, 79, 41,221,158,159,159,255, 46,165,180,184,170,239,121,123,123,239, 75, 76, 76,108, 23, 16, 16, + 80, 99, 88, 26,171,213,138,155, 55,111,250,183,111,223,254, 87, 0, 77,239, 38,167, 59, 90,228,190, 17, 88,182,139,237, 82, 6, +107, 65,192,115,235,231,191, 84, 47,227,198,149,122,227, 22,108,105,210,212, 79,209, 51, 49,183, 52,211,213, 31,148,200,213,223, +119,125,248,241, 94, 19, 94,153,162,252,227,220, 69,252,124,240, 56,138, 74,140, 96, 25, 6, 90,181, 2, 77,154, 52, 34,203,226, +191,242,251,236,147,101, 75,229, 42,237, 0,131,190,224, 73,119, 78,200, 75,193,189, 61,117,112,123,165,175, 15, 15, 8, 60, 94, +127,172,181,242,237, 31,206,188,141, 82,235,219,110,139,171,125,251, 20,217, 89, 89,120,223,215, 23,156,197, 2, 25, 33,144, 19, + 2, 25, 0,149, 84,138,110, 95,124,129,249,187,118, 41,222, 25, 48,192, 35,178, 30, 48,168,213,234,209, 77,154, 52, 89,188,118, +237, 90,223,134, 13, 27, 66,169, 84, 66,167,211,249, 93,186,116,169,205,107,175,189, 54,210,203,203,107,122, 97, 97,225, 26, 79, + 75,121,224, 65,149, 98,163, 13,128, 74,147,183, 87,119,236,159, 2,195, 48,161,105,105,105, 1, 10,133, 2, 60,207,219,162,247, + 11,142, 7,104,231, 5, 14, 91,128, 89, 52,109,218,212, 92,195,184,177, 50, 59, 59,187,143,115,202,178,234, 22, 74,210,210,210, +250, 52,111,222,124, 37,128,190, 85,136,150,217,175,188,242,202,164,150, 45, 91,218,173, 62,182,172, 5,229,175,185,185,185,152, + 56,113,162,227, 55, 4, 65,192,222,189,123, 95, 25, 61,122, 52, 0,188, 86,205,185,135, 7, 4, 4,144,113,227,170,143, 53, 52, +107,214, 44,204,154, 53, 11, 31,125,244, 17, 17,137, 68,218, 26,218,179, 78, 56, 93,213, 34,247,149,192,114,185, 83, 82, 97,247, +188,229,107,199,206, 25,213,149,172,127,173, 79,212,248,143,246, 29,111, 30, 34,239,126, 62,221,144,226,130,229,106, 76,199,238, +143,246,156, 56,105,170,114,203,183, 7,112,233,194, 89, 36, 30,217,122,203,119,218,246, 29,141,204,220, 98,140,158,240,186,138, +176, 92, 79,177, 76, 49,198, 92, 86,186,222,149,186, 69, 3,129,225, 82,201,255, 58,117,104, 33, 66,253, 84,128, 2, 93, 99, 27, +139,194,126,250,235,127,197,176,126,116, 17,168, 49,151, 96, 69,113,181,229,169,167,208,223, 96, 64, 32,202, 99, 90,216, 75, 41, +128,139,131, 6,161,233, 55,223, 96,246,119,223, 41,222, 29, 56,208,109,145,165, 80, 40, 62, 51, 24, 12,139,106, 17,112,237,223, + 28, 52,155,168,213,234,119,138,138,138,158,187,135,234, 20, 12, 32,167,146,252,133, 98, 0, 90, 74,169, 91, 25,127,101, 50,217, +139, 35, 70,140, 88,182, 98,197, 10, 69, 86, 86, 22,210,211,211,193,243, 60,100, 50, 25,162,162,162,200,190,125,251,124,167, 78, +157,186, 68,163,209, 72,139,138,138, 62,116,163,158,140, 72, 36, 26,229,227,227, 51, 40, 48, 48, 48, 32, 39, 39, 39, 39, 63, 63, +127,167,209,104, 92, 95,219, 39,121, 27,231,179, 17, 17, 17,131, 66, 66, 66, 2,211,210,210,114, 83, 83, 83,191, 55, 26,141,159, + 81, 74,133, 59,108,211, 86, 0,124,109,127,202,136,136,136, 72,184,126,253,122,118, 29,114,166, 71, 68, 68,156,119,151,147, 16, +162, 4,176, 13, 64, 72, 13, 95, 77, 7,240,180, 45,192,177, 7,255,130,184,178,165,158,186, 69, 72, 85,119,236,159,134, 92, 46, +199,214,173, 91, 33, 18,137, 32, 18,137,144,159,159,143,208,208, 80,199,103,177, 88,236,120, 95,191,126,253, 26,249,120,158,111, +207,178, 44,244,122, 61,120,158,119,148,130,130, 2, 80, 74, 33,149, 74,193,243,229,105,151,156,142,183,175,166, 29,135,133,132, +132, 96,203,150, 45, 48,153, 76,183, 29,215,104, 52, 56,119,238,239,164, 32, 44,203,162, 67,135, 14, 12, 33,100, 88,117, 2,203, +110, 41,138,139,139, 3,203,178,142,212,119,246,247,246,194,243, 60,102,205,154, 5,231, 20, 98,255, 36,231,125,127, 31,216, 78, +146, 86,150, 38,164,105,144,234,165,126,189, 58,190, 47,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,250,182, 10, 70, +167,134, 10,228,232,138, 48,110,205,201,162,180, 52, 99,135,115,121,197,151,170,105,252, 16,181, 54,224,207, 79, 54,125,235,247, +243,241, 68, 36,156, 61,131, 51,123, 86, 85,250,221, 62, 35,166,161,121,171,118,120,168,113, 16,222, 24, 63, 52, 55, 47, 59,189, +117,101, 62, 89, 21,125,176, 58,171,197,155, 86, 60,219,107, 68,171, 54, 90, 6, 61,108,243,213, 62, 43, 78, 31,207,228, 95,253, +254,143, 45,199,139,205, 35, 43, 40,229,219, 30, 45, 70, 74,165,165, 31, 31, 63, 46,207,206,206,198,150,167,158, 66,172,193,128, + 92,145, 8,205, 44, 22,135,200, 42, 0,144,199,113, 8,178, 90, 81,166,209, 32,232,171,175,192, 51, 12,166,245,239,111,216,100, + 50, 41, 92,109,124,149, 74,149,195,178, 44, 95, 84, 84,212,243,126, 16, 89, 54,113,117,144, 16, 34, 46, 44, 44,244,185, 7,234, +195, 0,152, 51,118,236,216, 49,135, 15, 31,190,122,245,234,213, 62,182, 72,194, 32,132,112,141, 26, 53, 58,208,173, 91,183,200, +117,235,214,125, 10, 96,142, 43,130,131, 16, 82,175, 97,195,134,127, 36, 36, 36,248, 93,190,124, 25,122,189, 30, 34,145, 8,207, + 62,251, 44,190,250,234, 43,136,197, 98, 72,165, 82,136,197, 98,116,239,222, 61,247,250,245,235,237, 40,165, 55, 92,224,101,189, +188,188, 62, 91,181,106, 85,227,129, 3, 7,114, 70,163, 17, 60,207, 99,251,246,237,150,119,223,125, 55, 57, 47, 47,239,121,119, + 69, 22, 33,132, 9, 14, 14, 94,255,233,167,159, 54,121,248,225,135, 57,131,193, 0, 65, 16,176,107,215, 46,203,219,111,191,125, + 45, 35, 35, 99, 36,165,148,175, 69,187,182, 81, 40, 20,205, 95,122,233,165,156,129, 3, 7,154, 1,224,212,169, 83,204,217,179, +103, 53, 13, 27, 54,188, 49, 99,198,140, 51,181,224,140, 85,171,213,209,227,198,141,203,125,252,241,199, 45, 98,177, 88, 56,122, +244, 40,119,233,210, 37, 77, 68, 68, 68,210,219,111,191,125,214, 13,174,221,199,142, 29,235, 17, 26, 26, 42,216, 6,117,106, 31, +224, 25,134,161,182, 87, 92,188,120,145,235,209,163,199, 65, 74,233,147,240,224,159,188, 47, 57, 0, 22, 74, 41,116, 58, 29, 78, +156, 56,129, 1, 3, 6, 0, 64,140,237, 43,103, 40,165, 40, 42, 42,130,193, 96, 64,112,112, 48, 0,136,254,233,229, 66,173, 86, +155,149,147,147, 19,240,221,119,223, 65, 36, 18, 97,239,222,189, 88,189,122, 53,182,110,221, 90,169,200, 10, 14, 14, 70, 84, 84, + 84,106,122,122,122, 88, 53, 99,122,161, 94,175,215, 20, 22, 22,130,231,121,156, 56,113, 2,107,215,174, 69, 64, 64, 0,252,252, +252,224,239,239,143,246,237,219, 67,169, 84, 58, 68, 86,183,110,221,138,244,122,189, 87,101,124,190,190,190,233, 83,166, 76, 9, + 62,125,250, 52, 44, 22, 75,165, 2,107,210,164, 73,206, 86, 36, 40, 20, 10,116,234,212, 41, 35, 47, 47,175,202, 7, 16,127,127, +255,140,156,156,156,160,179,103,207,222, 34,126, 42, 19, 68, 44,203, 66,173, 86,163, 65,131, 6, 89, 25, 25, 25, 65,119,147,179, + 42, 45,114,223, 91,176,108, 3, 85,207, 91, 44, 66, 17, 65,239, 44,158, 52, 76, 14,222, 12,106, 49, 0,230, 82,192,172,135, 96, + 42, 5, 17,203, 1,139, 1,254, 82, 29,182, 77,136,214,188,185, 37,233, 66, 51,127,205,128, 11, 57, 69, 63, 86,106,249,226,196, +207, 14, 27,245,138,111,106,118, 17,210,178, 10,193, 50,127,199, 56,141,233, 51, 10, 28,203,224,228, 79,229,134, 42,134,101, 81, + 88, 98, 68,129,222,140,161,163, 38,249,124,186,108,230,179, 0, 22, 85,119, 34, 45,128,168, 22, 42,213,224,150, 45,194, 25, 52, +206, 0,137,220, 89, 46,162, 14, 63,129, 54,249, 1,108,211,159, 37,131,245,197,230, 5, 9,192,229,234,120, 36, 90,173, 92,221, +166, 13, 22,251,250,226, 49,131, 1, 87, 57, 14, 35,116, 58,252, 58,105, 18,184,245,235,193, 1, 48,142, 25,131, 46,203,151,227, +156,143, 15, 66,138,138, 96, 30, 51, 6,146,211,167, 33,246,242,146,187,211,248, 98,177,216,188,118,237,218,144, 23, 94,120,225, + 32, 33,228,158, 22, 89,132,144, 38, 62, 62, 62, 7,223,123,239,189,192, 25, 51,102,100,212, 17,103,160, 82,169,220, 94, 82, 82, + 50,201,221, 39, 88,155,184,154,183,102,205,154,241,113,113,113,218, 23, 94,120,129, 94,189,122, 85, 11,192,110, 13,241,239,214, +173, 91,163,181,107,215, 6,181,107,215,238,149,113,227,198,137, 9, 33,211,107, 18, 89, 42,149,106,194,218,181,107,253,114,115, +115, 29,226, 74, 36, 18, 33, 53, 53, 21,114,185,220,145,236, 92, 36, 18,225,189,247,222,243,157, 48, 97,194, 36, 0,147,106,170, +175, 84, 42, 29,181,106,213,170,198,253,250,245,227,146,147,147,193, 48, 12,164, 82, 41,158,121,230, 25, 81,105,105,105,248,156, + 57,115,226, 0,172,114,167, 13, 68, 34,209,179,241,241,241, 77,186,116,233,194, 37, 38, 38,162, 83,167, 78, 56,121,242, 36,158, +122,234, 41, 81,113,113,113,131,169, 83,167,142, 5, 16,239,174,149, 73,161, 80,180,252,229,151, 95, 82,194,194,194, 28, 15, 32, + 13, 26, 52,224, 7, 12, 24,160, 75, 76, 76,140, 62,126,252,120, 94,167, 78,157,110,186,193, 89, 79,161, 80, 52,221,189,123,119, +198,156, 57,115,122,175, 89,179,102, 32, 0,180,111,223,254,251,185,115,231, 30,208,233,116, 45, 14, 31, 62,172,235,214,173, 91, +170,139,148, 33,193,193,193,252,196,137, 19, 85,213,125,105,221,186,117, 5, 0,234, 19, 66, 26,218, 18, 96,123,240, 15,128, 82, +106, 37,132,196, 16, 66,206,236,218,181, 11, 29, 58,116,192,174, 93,187, 48, 96,192,128, 51,182,227, 40, 44, 44,196,185,115,231, +208,189,123,119,160, 60,193,251,191,226,139,197,243, 60, 56,142, 67,106,106, 42,214,173, 91,135, 5, 11, 22, 32, 42, 42, 10, 22, +139,197,113,239,115, 28, 7,145, 72,100,183,182,184, 52,233, 91,173, 86,156, 58,117, 10,159,111,218,132,233,239,188, 3,181, 90, + 13, 0, 48,155,205,208,229,231, 67, 38,147, 57, 44, 88, 53,180,229,246, 43, 87,174, 76, 10, 13, 13,189,101,105,208,254,106, 27, +179, 32, 8, 2,172, 86, 43,202,202,202,176,108,217, 50, 43,165,116,123, 13,247,164,195,226, 53,105,210, 36, 24,141,127,231, 7, +111,213,170, 21, 0, 32, 34, 34, 2,173, 91,183,118,124,102, 24,134,186,202,249,105,231,150, 48, 56,125, 59,122,214, 18, 0, 64, +104,104, 40,162,163,163,237,162,186, 82,206,202,180,200,125, 45,176,170, 82,138, 23,174,103, 46,122, 97,234,146, 37, 74, 25, 43, +122,117,208, 67,168,175, 21, 3,114, 31,136,187,191, 9,162, 13, 47,239, 0,186,107,192,207,111, 98,233, 96, 29, 19,183,185,236, +219, 70, 62, 62,254, 87,117,186,219,156,235, 68, 98, 89,175,200,198, 77,200,205, 12, 29, 56,142,131,210,203, 15,157, 7,189, 6, +150,101,160,210,250,129,240,134,191,205,156, 12, 11,142,229,160, 43, 54, 32,162, 97, 99, 70, 42,147,247,170, 73, 96,121,121,137, + 86,190, 49,188,179,140,145,229, 2, 33, 18,167,161, 88, 2,198,183, 24, 83,250, 71,201,227,190,255,107, 37, 10, 45,189, 93,106, + 24,187,197,202,106,197,175,147, 38,161,119,124, 60,126, 3, 32, 2, 16, 27, 31,143,139,113,113, 8,176, 88, 32, 5,192, 26,141, +176, 86, 88,179,119,113,226,193,160, 65,131,144,155,155, 27,248,206, 59,239,212, 90,100,201,229,242,207, 9, 33,143,137, 68, 34, + 51, 33, 4, 12,195, 56,146,115,219,223,155,205,102, 49,203,178,187,115,115,115,221, 94,218, 35,132, 52,241,246,246, 62,120,236, +216,177, 64,165, 82,137, 89,179,102,213,137,184, 82,171,213,191,141, 29, 59,182,254,231,159,127,254, 35, 33,164,191,171, 34,171, +162,184,138,143,143, 47, 88,183,110,221,167,206, 75,129,148,210, 12, 66,200,250,118,237,218,189, 20, 23, 23,167, 5, 48,126,220, +184,113,168, 73,100, 73,165,210,158,145,145,145,208,233,116,142, 1, 86, 42,149, 2, 0,148, 74, 37,188,188,188, 32, 22,139, 97, + 52, 26, 17, 19, 19, 67, 36, 18, 73, 87, 87,234,172, 86,171, 31, 27, 60,120, 48,119,244,232, 81,100,102,102,194,203,203, 11, 74, +165, 18, 60,207,227,197, 23, 95, 20, 47, 95,190,252, 81,119, 5, 86, 88, 88,216,192,222,189,123,115, 9, 9, 9,184,126,253, 58, +140, 70, 35, 46, 93,186, 4,141, 70,131,231,159,127, 94,188,120,241,226, 39,220, 21, 88, 0, 90,198,197,197,101, 57,139, 43, 59, +148, 74, 37,105,210,164,137,206,215,215, 55, 22,192, 77,119, 56, 95,126,249,229,236,133, 11, 23,118,223,183,111,223,155,246, 63, +238,219,183,111, 42, 0,124,248,225,135,135,253,253,253, 99, 1,184, 42,176, 64, 41, 21,254,239,255,254,239,134, 68, 34,129, 72, + 36,130, 68, 34,185,165,136,197, 98, 48, 12,163,182, 15, 41, 15,176,181,168, 29,128, 15, 80,190,195,234, 29, 74,233,137,123, 68, +100,253, 65, 8,137, 25, 48, 96,128, 67,100,237,217,179, 7,253,251,247, 71, 65, 65, 1, 18, 18, 18,156,197,213,191,229,131, 5, + 65, 16, 32, 18,137,176,100,201, 18,152,205,102,108,222,188, 25, 59,118,236,184,101, 12,213,104, 52,248,232,163,143,220, 90,206, +226,121, 30, 27, 54,108,192,155, 83,167, 58,196,149,237,161, 26, 65,129,129,240,245,243, 67, 82, 82, 82,141, 2, 43, 63, 63,255, +221,157, 59,119,162, 58, 39,247,157, 59,119, 58,222, 59, 59,185,187, 82, 79,150,101, 97, 52, 26,241,200, 35,127,167,114,125,249, +229,151, 29,239,117, 58, 29, 88,150,181,183, 5,113,149,211, 64,129, 65,178,191,255,246,216,148, 41,142,247,185,185,185, 85,114, + 62, 8, 86,171, 74, 45, 88,149,225,114,118,201, 10,142,100,180, 94, 56,177,239,168,250, 1, 94,160,250, 44,136, 31,126, 23,127, +230,200,177,100,217,110, 0,192,235,207,180, 69,171, 62,243, 96,250,172, 47, 38,117, 98, 37,207,165, 26,223, 0, 48,227,246, 27, + 78,104, 26, 90, 47, 4,127, 94, 61, 7,142,101, 33,241,242,131,151, 79, 32, 4,171, 9,133,217,215,113,240,235,149, 0,128, 53, + 27,182,131, 97, 24,112, 28, 11,163,137, 71, 84,253, 16, 8,130,208,180,186,122, 54, 3, 58,247, 12,244,235, 16, 17,225, 67,208, +188, 0,183,101, 0,106, 35, 69, 84,186,138,116, 82,201,219,231, 23, 22,117,190, 0, 28,171,169, 97,100, 54,150, 96, 0,226,245, +235,241, 27,128,142,241,229,115,213,165,184, 56,168,214,175,135,210,246, 29, 41, 33, 40,226,249, 90,221,224, 0, 16, 29, 29,141, + 53,107,214, 4, 78,152, 48,161, 86, 34,171,172,172,108,190, 70,163,233,189,126,253,250,192,193,131, 7,223,118,252,234,213,171, +232,222,189,123, 86,102,102,230,252, 59, 17, 87, 90,173, 22, 41, 41, 41,119,188,110,110, 23, 87,123,247,238, 13, 15, 13, 13, 69, + 76, 76,140,255,235,175,191,238,142,200,154,225, 44,174,198,141, 27,247, 23,128, 0, 66, 72, 69,129, 66,108,199, 30,114, 18, 89, +133, 0, 22, 87,243,228, 25,174, 84, 42,145,157,157,141, 81,163, 70,225,242,229,191, 13,158, 33, 33, 33,142, 39,187,164,164, 36, +248,251,251,131, 16, 18,224,202, 57,251,251,251, 7,154, 76, 38,140, 25, 51, 6, 41, 41,127,187, 43,214, 66, 54, 44, 57, 0, 0, + 17,138, 73, 68, 65, 84,171, 87,207,222,166,126,238,182, 99, 96, 96, 96,160,193, 96, 64,183,110,221, 80, 86, 86, 6, 0,120,250, +233,167, 33, 18,137,144,157,157, 13,145, 72,228, 87,139,203,227, 55, 96,192,128, 42, 67,164,104, 52, 26,179,183,183,119, 51, 55, + 57,125,159,120,226,137,180,248,248,248,219,150,234, 78,158, 60,249,164,143,143,207, 62, 31, 31,159, 38,110,114, 10,206, 98, 74, + 44, 22,223, 34,176, 68, 34, 17, 24,134, 17,240,224,227,125, 0,246, 93,109,171, 1,180,190,135, 44, 89, 14,145,181,103,207, 30, +180,104,209, 2,249,249,249, 72, 76, 76,252,215,197,149,147, 32, 1,199,113,142,135, 99,153, 76,134,152,152, 24,135,184, 34,132, +160,180,180, 20, 28,199,217,199,107,151, 6,191,130,130, 2, 4, 7, 5, 65,173, 86,163,113, 84, 20,174,216,198, 17,251,123,169, + 84, 10, 66, 8,172, 86,107, 77,109, 88,140,114, 95,170,215,234,250,242,216,197, 80,181,166,226,144, 16, 8,130, 96, 31,243,105, + 93,112,250,249,249, 65,175,215,187,202,121,255, 11, 44, 66, 72, 15, 0, 7,225,180, 53,146, 16,194, 52, 11, 84,173, 91, 56,161, +247,168,190, 45,252, 96,200,185, 14,153,218, 15, 68, 27,129, 37,203,118, 35,225, 90, 30, 0, 96,201, 23,191, 99,203,156,199, 0, +185, 15,162,189,114, 17,164,230, 6, 87, 38,176, 8, 40, 17, 40, 5,199,150,175,199,114, 28, 11,150,101,160,203,201,192,242,119, +199,219,196,213, 14,236, 58,156,136,208,200, 22,142,117, 90, 16, 2,208,234, 59,181,191,151,120,205,132, 33, 29,229, 68, 91, 0, +104, 69,183,127,193, 91, 12, 18,193, 96, 98,207, 80,197,169,157,101,107, 46, 20,154,155,215,104, 21, 34,196,225,208,206, 1, 16, + 59, 29, 19,219, 44, 89,140,253,209,216,182,235,164, 22, 66,195, 97,226, 13, 12, 12,196,130, 5, 11, 2,167, 77,155,182, 25,110, + 38,134,166,148, 94, 34,132,244,124,241,197, 23, 15,230,229,229, 5, 70, 71, 71, 67,165, 82, 65,165, 82, 33, 43, 43, 11, 67,135, + 14,205,202,204,204,172,173,117,108,211,216,177, 99, 3,197, 98, 49,174, 94,189, 10, 31, 31, 31,135, 48,172,173,184,210,104, 52, +191,237,219,183, 47,188, 81,163, 70,184,120,241, 34,154, 53,107,134,109,219,182,249,143, 24, 49,194, 37,145, 37,151,203, 7,217, + 4, 19,226,226,226,180,113,113,113, 61, 0,244,168,233,183,227,226,226,180,175,189,246,218, 19,213, 9, 44,145, 72,148,162,211, +233,130,228,114, 57,190,254,250,107,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161, 80,128, 82, 10,139,197, 98, 31, 36, +242, 92, 57,239,156,156,156, 44,158,231,195,126,252,241, 71,228,228,252, 29, 19, 47, 60, 60, 28, 54,127,141, 92,119,219, 50, 61, + 61, 61,139, 16, 18,246,231,159,127, 34, 57, 57, 25,253,251,247,199,183,223,126,139,182,109,219, 2, 0, 76, 38, 83,109,130,239, +241, 44,203,210,106,174, 31, 1,224, 93,151,156,182, 73,203, 45, 78, 65, 16, 4,187,184,114,126,117, 22, 93, 53,252,230,131, 2, +103,223, 29,235,189, 90,201,254,253,251, 67,167,211, 65,165, 82,213, 56, 1,255,211, 2, 75, 36, 18, 97,246,236,217, 24, 63,126, + 60, 2, 3, 3,241,230,155,111,130,227, 56, 71,113, 94, 9,112, 7, 1,129,129,213, 30,183,251, 96,213, 48, 94,170,189,188,188, +102, 51, 12, 51,140,117,161,225,120,158,231, 5, 65,216, 94, 88, 88, 88,109,152, 6,187, 67,186, 43,215,194,185, 13,106,168,235, + 29,115, 86,166, 69,238,103,216,207,238,160,205, 52,119,208, 89, 92,189, 55,190,215,168,190, 45,188,241,253,254, 19, 16,155, 11, + 0, 83,113, 53, 87,214, 2, 34, 86, 34,208, 75, 20, 90,105,227, 51,236,197,212,180,116,248,122,171,108,226,202, 86, 24, 6,173, + 90,148, 63,188,238, 58,156,136,208,134, 45,192,177, 44, 56,150,133, 74, 46, 69, 86,102, 6, 56,142,185, 88,213,207,182,100, 49, +100, 72,147,176,136,192, 0, 9,208,178,154, 27, 32, 86,141,208, 96, 9,250,249,202,194, 91,178, 24, 82,131, 96,129,212, 38,176, +138, 1,152,198,140, 65, 76,124, 60, 46,197,197,225,122, 92, 28, 26,196,199, 3, 99,198, 64,192,223,187, 10,249, 90, 88,176,236, + 29,209, 46,132,102,204,152,145,149,151,151,247,108, 45,159, 22, 47,229,231,231,247,124,231,157,119,178,114,115,115,161, 80, 40, +144,145,145,113, 71,226, 10, 0, 12, 6,195,243,241,241,241, 89, 7, 15, 30,132, 74,165,130, 90,173,174,181,192,178, 91,174,222, +125,247,221,250, 97, 97, 97, 72, 74, 74,130,151,151, 23,124,125,125,209,170, 85, 43, 28, 61,122,212, 63, 44, 44,236, 71,219, 46, +163,234,234,244, 93,124,124,124, 1, 0,196,199,199, 23, 16, 66, 14, 17, 66, 62, 33,132,172,174, 80, 62, 33,132, 28,114,254,174, +193, 96,248,166, 58,110,147,201,116, 40, 49, 49,145, 42, 20, 10,176, 44, 11,179,217, 12,153, 76,230,184, 94,118,199, 92, 0,176, + 57,158, 30,113,229,220,139,139,139,247,124,246,217,103,150,176,176, 48, 60,244,208, 67,136,141,141, 69,167, 78,157, 16, 30, 30, +142,217,179,103,155, 74, 74, 74,246,212, 66, 96,237,218,182,109,155, 37, 44, 44, 12,177,177,177,144, 74,165,104,213,170, 21, 66, + 66, 66,176, 96,193, 2, 83, 97, 97,225,158, 90, 92,166,155,231,206,157, 99,171, 17,183, 26,184,176, 27,183, 2, 82, 78,157, 58, +197,118,236,216,241,251,138, 7,218,183,111,255,189, 74,165,242, 2,224,174, 95, 31,117, 22, 85, 82,169,212, 81,236,127,231, 56, +238,191, 96,193,154, 4,224, 47, 0, 73, 0,222,188,151, 42,230,188, 91, 48, 47, 47, 15,137,137,137, 56,125,250, 52, 58,118,236, +136, 35, 71,142, 0,229, 97, 26,218,252,139,245, 3,165, 20, 34,145, 8,209,209,209,120,237,181,215,176,123,247,110, 92,186,116, + 9, 22,139,197, 33,128,236, 62,151,238, 88,176,196, 98, 49, 2, 3, 3, 97,177, 88, 28,214, 43, 0,184,114,249, 50, 56,142,131, + 32, 8, 48,153, 76, 53, 90,176,188,188,188,102,175, 93,187,246,149,220,220,220,224,156,156,156, 0,231,146,149,149, 21,144,145, +145, 17,144,150,150, 22,144,146,146, 18,112,227,198,141,128,235,215,175, 7, 47, 90,180,232, 21, 47, 47,175,217,174,206, 65,173, + 90,181,194,203, 47,191,236, 40, 43, 86,172,112,148,131, 7, 15,254,109,236,112, 99, 94,139,158,181, 4,143,229, 80, 71,217,237, + 79, 28, 37,225,245,113,213,113,222,162, 69, 30, 8, 11,150,179,250, 4,128,166, 65,138,121,239,189,216,125,212, 35,205,188,240, +221,254,223, 49,231,155,107, 23,163, 70,249, 71, 55,242,206,129,144,147,136,215,159,105,139, 37, 95,252, 14,160,124,137, 80,200, + 78, 0,205, 79, 2, 85,135,225,186, 46,183,210,229, 5,171,169,236,192,181,171,151,123, 69,183,108,199,100,230,234,111,217, 97, + 16,211,115, 40, 8, 33,168,215,176, 5, 88,142, 3,203, 50,224, 88, 22, 90,141, 12,137,127,254, 41, 24, 13,134, 3,149,113,198, + 0,156,175, 92,242,241, 51,253, 90,201, 16,172, 7,228,210,191, 71,223,107, 67, 43,204, 12, 28,208, 82,141,209,105,190,242, 3, + 89,101, 31,139, 74,204,223, 3,176, 84,245, 84,163,150, 74, 81, 10, 32, 87, 36, 66,167,229,203,113, 57, 46, 14,234,245,235,193, +162,220,139,218,127,249,114, 20,111,218, 4,198,106, 5,149,201,238,200,130,149,149,149,133,167,159,126,250,142,132,144,179, 37, +107,194,132, 9, 7, 23, 44, 88, 16, 56, 99,198,140, 58,227,124,243,205, 55, 15,126,241,197, 23,129, 13, 26, 52,168,117,103, 83, +169, 84, 83, 5, 65,208, 46, 94,188, 56,115,233,210,165,168,232, 47,102, 19, 56, 82,173, 86,187, 4, 64,175,106,168,230,140, 27, + 55, 78, 12, 96,188,205,146,245,208,184,113,227,142, 81, 74,167, 87,104,223, 89,107,214,172,121,218,105, 41,241, 19, 0,203,171, +171, 99, 81, 81,209,234,215, 94,123,109,204,175,191,254,234, 39,147,201, 64, 8,129, 88, 44, 70,227,198,141,109,150,215,114,135, + 87, 74, 41,166, 76,153,146,155,157,157,237, 82,152, 6,163,209,184, 97,206,156, 57,189, 12, 6, 67,248,232,209,163,197,222,222, +222,200,202,202,194, 7, 31,124, 96,218,176, 97, 67, 74, 73, 73,137,187,190, 82,176, 88, 44, 27,102,206,156,217, 83,175,215, 55, +124,225,133, 23,196,133,133,133, 48, 24, 12,120,227,141, 55, 76,235,215,175, 79, 53, 24, 12,110, 7,234,237,212,169,211,213, 27, + 55,110,116, 45, 45, 45,205, 87, 40, 20, 21,173,123, 68,169, 84,182, 3,176,201, 29,206,152,152,152,164,155, 55,111,118,156, 55, +111,222, 33,139,197, 34, 58,121,242,164,195,201,253,227,143, 63, 62, 40,147,201,122,195,125,103,124, 65, 42,149,222, 98,177,170, +248,158,227,184, 7,222,130, 69, 41, 61,136,242,208, 23,247, 20, 42,138,171,132,132, 4,244,234, 85,126, 75, 31, 57,114, 4, 93, +186,116,193,145, 35, 71,208,181,107,215,127, 53, 76,131, 93, 96,113, 28,135, 17, 35, 70,160, 79,159, 62,168, 95,191,190,227, 62, +119,118,114,119, 71,100, 88,173, 86,180,108,217, 18, 70,147, 9, 98,177,216,177, 4,201,113, 28,252, 3, 2,112,245,234, 85,151, + 44, 88, 12,195, 12, 27, 52,104, 16,115,254,252,121, 12, 31, 62, 28,159,127,254,121,149,223,125,238,185,231,176,117,235, 86, 12, + 26, 52,136,121,235,173,183,170, 13,211, 96,119, 46,119,229,156,236,243,116, 77, 22,188,186,226,116,214, 34, 15,140,192,114, 10, +238,133,134,254,138,209,125, 26,115,248,238,192,239,152,243,221,205, 13, 60,165, 95,127,125, 38,255,135, 55,187, 0,230,237,207, +160,213,208, 77,229,203,130, 0,132,236, 4,152,183, 63, 7,162,240,195,225, 52, 17, 10, 13,230, 93,149,119, 56,243,231,223,110, + 94,249, 90,199, 85, 93,253,131, 3,188,160, 43, 52, 56, 68,214,153,131, 59, 0, 0, 67,198,205, 7,199,150, 47, 29,106, 84, 50, +200,197, 44,190,218,248, 97,174,217, 92, 86,105,175, 18, 68,204,248, 23, 58, 55,246,242,242,162, 64,115,241,173, 23,169,225,142, +219,133, 86, 27,111,248, 37,228,227,153, 70, 42,205,242,243, 5,227, 1,124,124,155, 5,163,160,192, 80,124,250,180,188,219,230, +205, 72, 28, 60, 24,245,138,139,145,224,237, 13,127,171, 21, 42,187,181,106,253,122, 20,127,254, 57,100, 86, 43,224,229,133,188, +149, 43, 97, 61,119, 14,214,162, 34,131,187, 2,235,202,149, 43,119,108,101,170, 76, 16, 77,155, 54,109,115, 94, 94,222,179,117, +201,249,252,243,207, 31,220,191,127,127, 96,109,121,138,139,139, 39, 3,152, 92, 7,245, 17, 8, 33,211,109, 1,237,198,199,197, +197,105, 79,157, 58, 53,134, 16,178,138, 82,154, 97,107,219,128,177, 99,199,190, 88, 65, 92,213,184,139,144, 82,122, 83,165, 82, +205,157, 60,121,242,252,165, 75,151,170,236, 14,237,103,207,158,133,213,106,133, 72, 36, 2,207,243, 24, 59,118,172, 62, 47, 47, +111, 73, 85, 17,152, 43,225,181, 18, 66,158,155, 63,127,254,216, 15, 63,252,240,113,150,101,253,121,158,207, 49, 24, 12, 63, 26, + 12,134,248,218,236,162,178,181,195,200, 25, 51,102,140, 92,182,108,217, 32,134, 97, 2,172, 86,107,110,113,113,241, 78,131,193, + 80,171,216, 90,199,142, 29,203, 89,181,106,213,181,156,156,156,166,161,161,161,133, 42,149,202,100, 50,153, 88,185, 92,174, 81, + 42,149, 49, 0,142, 3,184,224, 14,231,233,211,167, 51, 63,249,228,147,100,163,209, 24,253,201, 39,159, 28,214,104, 52,251, 9, + 33, 68, 44, 22,123,203,229,242, 94, 0, 14, 1,184,226,150,233,157, 97, 4,103,107, 85, 69,255, 43,137, 68,242, 95,241,193,186, +231, 96, 11,211,112,134, 82,138,220,220, 92,156, 63,127,222, 46,174, 98, 0,160,107,215,174,103,236, 34,235,244,233,211,136,141, +141, 61, 67, 8,249,199,195, 52, 56, 91,176,236, 66,170,126,253,250,142,207,206,197,201, 7,203, 37,240, 60, 15,177, 88, 12,142, +227, 16, 28, 18,226,248, 45, 74, 41,174, 94,189, 10,157, 78,231,146,192, 98, 89,150, 37,132, 96,248,240,225, 46,253,238,255,253, +223,255,225,208,161, 67, 96, 93, 84,131, 44,203, 34, 34, 34,194,165,149, 22,184,232, 47,197,178, 44, 66, 67, 67,107,205,233,172, + 69, 30, 24,129,229,140,164,108,195,188,231, 62, 56,250,214,133,204,178,175, 19,179, 74, 95, 3, 64,183, 39, 40,126,110,229,207, +246,237,219, 36, 21,198,248,174, 32,154,242,160,107, 84,159, 1,162, 12, 68,170, 80, 15,179,190,191,152,105, 5, 89, 92,197,100, +144, 46,150, 41,166,111, 92,251,241,210,177, 19,166,168, 18,146,178, 80,168, 55,130,101, 25,231, 65, 19, 28,199, 66,163,148, 33, + 44,200, 11, 95,124,250, 65,113,113, 81,193,140,170,242, 18,134,171,197,113,189,219, 53,146, 34,168, 4, 40,147, 1,101,127,119, + 86,250,231, 64,219,172, 94,193, 72,213, 66,139, 71,111,150,200,190,189, 89, 18, 87,153,192, 42, 51,153,250,190,245,232,163, 63, +205,251,225, 7, 69,211,175,191, 70,214, 83, 79, 33,164,168, 8, 82,224, 22,159, 44,198, 98, 1,188,188,144,251,249,231, 40,229, +121, 44, 29, 61,186,180,204,108,238,231,166, 5, 66,220,163, 71,143, 58, 19, 87,206,130, 8,110,250,113,185, 42,178,250,244,233, +115,144, 82, 42,189, 7,158,220,237, 34,203,124,234,212,169, 23, 15, 31, 62,156,132, 91, 19,126, 22, 28, 62,124, 56,233,133, 23, + 94, 32,235,214,173, 91, 15, 96,166,171,129, 55,245,122,253,199, 90,173, 22,221,187,119,159,185,112,225, 66,223,182,109,219, 34, + 32, 32, 0,197,197,197, 56,125,250, 52, 38, 77,154,164, 43, 42, 42, 90,152,159,159,191,212,205, 58,243, 54, 75, 77,124, 93,182, + 3,128,207,108,165, 78,240,210, 75, 47,157, 77, 74, 74,202,243,247,247,239, 32, 22,139, 31, 66,185,159, 79, 38,128,245,238, 10, + 33, 59,198,143, 31,255,103, 82, 82, 82,110,189,122,245, 58,218, 56,181, 0,210, 0,172,173, 5,103,250,239,191,255, 30,218,174, + 93, 59, 70, 36, 18, 81,150,101, 33, 18,137, 40,199,113,212,230, 55, 67, 1, 96,231,206,157, 82, 0, 58,120,240, 79,223,155,142, + 48, 13, 25, 25, 25, 14,113,229, 20,104, 52,166,107,215,174,103,108,226,202,126,204,250, 47,213, 21,115,230,204,193,154, 53,107, + 80, 83, 4,114,219,110, 61, 82, 19,159,221,130,197,243, 60,204,102, 51, 18, 18, 18, 64, 8, 1,207,243,142,101, 65,123,136, 6, +171,213, 90,237,238,115,158,231,121,147,201,132, 47,191,252,210, 37,145,181,101,203, 22,148,149,149,129,175, 65,185, 57,135, 84, +104,221,186, 53,116, 58,157, 99, 19, 79, 76, 76,140,227,123,102,179,217, 45,193,106,231,140,142,142, 70,110,110, 46,252,252,202, +247,217,132, 61, 31,247,183,177,165,228,191, 19,247,151,184, 26, 90,160,181, 86,235,101,148, 88,190,121,178,133,180,231,176, 24, + 47, 52, 12, 82, 67, 36,150, 33,189,200,138,125, 23,138,176,246, 96,102,138,193,194, 63,126, 41,187,228, 92,117, 60, 50,165,215, +143,109, 59,247,233,242,252,139,147,148,122, 35,143,228,228, 27,200,201,206, 0, 67, 24, 4,215, 11, 69,120,120, 4,228, 18, 6, +159,199, 47, 45, 57,115,108,255,209,226, 34, 93,255,170,184, 30,215, 74,142, 45,123,170, 75,199,200, 72, 53,129,213, 2,240, 22, +192,106, 1, 4,219,171,253,111,194,173,125,237,252,249, 2,250,214, 31,186,223,126, 40, 48, 85,154, 83,106, 24, 33, 93,188,189, +189,127,154,243,221,119, 10,193,100,130,105,204, 24,200,141, 70,200, 9, 1,161, 20, 12, 0, 34,147, 33,111,229,202,114,113, 53, +106, 84,105, 65, 97,161,219,169,114,252,253,253, 63,203,205,205,189,239, 34,185,251,250,250,190, 83,155,112, 15,119,177, 78, 1, + 0, 10,236, 65, 70, 43, 60, 73,251,219,173, 90,181,224,141,240,247,247,127,139, 97,152, 78,148, 82, 95,134, 97,242, 5, 65, 56, +158,157,157,189,136, 82,122,213, 51,149,254,107,215,219, 30,201,189,166,245,234,108, 0,175, 2, 40,166,148, 38,123, 90,238, 31, +191, 78,109, 0,156, 65, 37,187, 5,171, 59,246, 79,193,215,215,247,196, 79, 63,253,212,182, 97,195,134,140,179,187,130, 61,214, +157,125, 25,139,227,202,237, 16,191,254,250,171,117,248,240,225,199, 51, 51, 51,187, 87,197,169,209,104,126,254,235,175,191, 30, + 41, 44, 44,188, 77, 72, 57, 71,118,183,127, 46, 41, 41,193,132, 9, 19,246, 22, 21, 21, 85,154, 42, 71,171,213, 46, 91,186,116, +233, 43, 67,134, 12, 97,236, 97, 37,156,139, 61,173,143,189,152,205,102,108,218,180, 73,248,240,195, 15, 63, 42, 40, 40,168,114, +137, 48, 36, 36, 36, 37, 61, 61, 61,212, 30, 50,161,170,226,140,136,136,136,140,228,228,228,144,127,146,243, 63, 35,176,108, 55, + 5,137, 14, 80, 62, 77,129, 97, 12,132,150, 12, 33, 18, 43,197, 37, 80,252,172,224, 74, 87,157, 78,167, 46, 45,145,137, 21,138, +137,106,149,247,187, 67,158,125,217, 55, 34, 50,138, 4, 6,215, 3, 1,131,172,204, 52,220,184,118,153,126,179,121,101, 94, 73, +145,110,118,105,169,126,101,117, 60, 77, 9,105, 20,169, 17,111,147,240,104, 2,251,121, 84,200, 31,117,219, 19, 6, 0,179,136, +185,120,173,216, 50, 60,177,154, 73,210, 46,178,102,238,216,161,224,154, 55,191, 45,192,155, 32, 8,176,158, 59,135,165,163, 71, +215, 74, 92,121,224,129, 7,119, 60,129, 55, 68,205, 49,174, 44, 0, 82,255,205,164,194,255,241,107,116,207, 38,123, 38,132, 40, +125,124,124,246,179, 44, 27,110,183,192, 56,251, 4, 85,146,232, 57, 57, 43, 43,171, 55,165,180,180, 26,206, 72,181, 90,189,146, +231,249,246,174, 36,123,102, 89,246,100,113,113,241,196,234,146, 61,223,141, 93,132,126,126,126, 87,111,220,184, 17,105,223, 21, +237, 60, 87, 86,108, 7, 0,184,114,229, 10,122,244,232,113, 35, 35, 35, 35,226,159,228,252, 79, 9,172, 58,238,220, 33, 98,169, +106,164, 68, 46,123, 88,176, 88,163, 65, 0, 78, 36,186,104, 42, 51, 28, 48, 26,244, 27,171, 90, 22,172, 40,248,238,164, 14,180, +134,147, 31, 70, 72, 23,169, 88,252,179,216,203, 75, 94,217, 87,173, 69, 69,134, 50,179,185,175, 71, 92,121,224,129, 7, 30,120, +112, 31, 9,223, 38, 62, 62, 62, 63,137, 68, 34,169,179,136,172,248,222, 49,215, 89,173,101, 57, 57, 57,253,171, 91,109,185, 27, +156,247, 61,236, 74,211,213, 98,215, 37, 46,126,183,143,171,156,182,210,227, 94,231,188,139,231, 78,235,144,179,135,141,115,214, +125, 82,207, 30,247, 42,167,147, 14,119,137,215, 29, 78, 87,251,148,155,245,164,117, 93,207,187,197, 89, 87,247, 81, 37,245,164, +119,225,186,207,186, 79,234,217,227, 94,227,172,216,127, 92,225,117,151,211,149, 62, 85,139,122,210,186,174,231,221,226,188,211, +251,168,154,122,210, 59,237, 75, 85, 92,251, 89,255,223,222, 25,228, 32, 12,195, 64, 16,163,126, 44, 47, 35, 63,107,127, 22, 46, + 65,138, 44, 87, 80, 50, 91, 37,208, 72, 28, 56, 48,172, 99,175,112, 45,145, 28,237, 61,102,124, 45, 7,187,222, 34,106,242,172, +225,219,168,204,118, 31,200, 35,253, 5,215, 3,172, 52,211,237, 39,181,114,253,199,200,118,251,224,160,208, 35,177, 19,121,119, +177, 34,220,150, 73,237,101,203,161,234, 94,205,164,188,228,153, 68,221, 71,121, 23,230,136,210,137,120, 73, 81,243, 65,253,116, +115, 61,147,240,146,103, 18,117,127, 6,147,240, 82,196, 36,234,126, 47,247,255, 50, 41,188,127,179, 89,162,145, 37,126,193,163, +226, 70,110, 69,147,105,102,165,158, 96, 59, 60, 19,206, 81,174,204, 12, 50, 19,149, 35, 69,189,183, 76,138,239, 57, 68,158, 34, +102,175,222, 29,157,120,236,189,117,127, 22, 19,206, 17,226, 37,199, 76,240, 67, 64,106,222,103,146, 73,121, 41,208,217,157,167, +136,217,171,119, 71, 39, 30, 59,241, 27,162,226,206,176,150, 17, 68, 40, 26,161,151,233, 72,182, 98,138,163,154,180, 81, 83,156, +128,187,129,184,149,214, 89,245,217, 47, 29, 86,119,121,233,242,210,204, 94,138,234,166,148,146,205,236, 49, 82,157,123, 38,213, + 8, 5,177,119,121,201,127,150,240,210, 27,166, 41,226,167,253, 52,226,186,143, 34,164,118,181, 69,192, 75, 35, 39, 64,164, 51, +205, 16,187, 66,167,153,101, 81,236,179,236,233,229,165,203, 75,195,121,201,213,100,162, 38, 67,244,131,148,103, 18,223,209, 50, +168, 26, 85,199, 78,122, 73,145,251, 89,214, 19, 68, 42,232, 33,214, 54,113, 84, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index f4a7d615895..01029ef90d4 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -650,10 +650,10 @@ DEF_ICON(ICON_MAN_TRANS) DEF_ICON(ICON_MAN_ROT) DEF_ICON(ICON_MAN_SCALE) DEF_ICON(ICON_MANIPUL) -DEF_ICON(ICON_BLANK215) -DEF_ICON(ICON_SNAP_GEAR) -DEF_ICON(ICON_SNAP_GEO) +DEF_ICON(ICON_SNAP_OFF) +DEF_ICON(ICON_SNAP_ON) DEF_ICON(ICON_SNAP_NORMAL) +DEF_ICON(ICON_SNAP_INCREMENT) DEF_ICON(ICON_SNAP_VERTEX) DEF_ICON(ICON_SNAP_EDGE) DEF_ICON(ICON_SNAP_FACE) -- cgit v1.2.3 From 6ca1c913d3acee63a275259f9a708a1389c23b81 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 19:32:33 +0000 Subject: Simplify mesh selection type operator and add missing header refresh notifier. Also remove REGISTER flag from operator (no need to see this in operator history). --- source/blender/editors/mesh/editmesh_mods.c | 33 ++++++++--------------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 2d1452c8cb1..8501b7fba92 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -82,6 +82,7 @@ editmesh_mods.c, UI level access, no geometry changes #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "ED_mesh.h" #include "ED_screen.h" @@ -3663,21 +3664,11 @@ void EM_deselect_by_material(EditMesh *em, int index) static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val) { if(val>0) { - if(val==1) { - em->selectmode= SCE_SELECT_VERTEX; - EM_selectmode_set(em); - } - else if(val==2) { - //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE); - em->selectmode= SCE_SELECT_EDGE; - EM_selectmode_set(em); - } - - else{ - //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE); - em->selectmode= SCE_SELECT_FACE; - EM_selectmode_set(em); - } + //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE); + //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE); + + em->selectmode= val; + EM_selectmode_set(em); /* note, em stores selectmode to be able to pass it on everywhere without scene, this is only until all select modes and toolsettings are settled more */ @@ -3686,13 +3677,6 @@ static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val) } } -static EnumPropertyItem prop_mesh_edit_types[] = { - {1, "VERT", ICON_VERTEXSEL, "Vertices", ""}, - {2, "EDGE", ICON_EDGESEL, "Edges", ""}, - {3, "FACE", ICON_FACESEL, "Faces", ""}, - {0, NULL, 0, NULL, NULL} -}; - static int mesh_selection_type_exec(bContext *C, wmOperator *op) { ToolSettings *ts= CTX_data_tool_settings(C); @@ -3702,6 +3686,7 @@ static int mesh_selection_type_exec(bContext *C, wmOperator *op) mesh_selection_type(ts, em, RNA_enum_get(op->ptr,"type")); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ BKE_mesh_end_editmesh(obedit->data, em); return OPERATOR_FINISHED; @@ -3721,10 +3706,10 @@ void MESH_OT_selection_type(wmOperatorType *ot) ot->poll= ED_operator_editmesh; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; /* props */ - RNA_def_enum(ot->srna, "type", prop_mesh_edit_types, 0, "Type", "Set the mesh selection type"); + RNA_def_enum(ot->srna, "type", mesh_select_mode_items, 0, "Type", "Set the mesh selection type"); } /* ************************* SEAMS AND EDGES **************** */ -- cgit v1.2.3 From 74715d00cc466ccb45ed525c12cfd1c7ed29243f Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 26 Nov 2009 19:47:55 +0000 Subject: First changes to implement the 2.5 snapping proposal (discussed back in May and recently on IRC). http://wiki.blender.org/index.php/User:Theeth/Snapping The new widget isn't there yet, but the rest works, including: Increment (gears) is now a snap mode Ctrl click to toggle snap on or off (in transform and 3d view) Shift+Ctrl click to select snap mode (3d view only) Snap status (on/off) is persisted in tool settings, no need to always turn it back on when entering transform. It's still possible to have something resembling the old system by editing the transform modal keymap to snap on on ctrl press and snap off on key release. --- source/blender/editors/object/object_ops.c | 4 -- .../blender/editors/space_view3d/view3d_header.c | 64 +++++++++++----------- source/blender/editors/transform/transform.c | 52 +++++++++--------- source/blender/editors/transform/transform.h | 17 +++--- .../editors/transform/transform_constraints.c | 4 +- .../blender/editors/transform/transform_generics.c | 4 ++ source/blender/editors/transform/transform_ops.c | 44 ++++++++++++++- source/blender/editors/transform/transform_snap.c | 62 ++++++++++----------- 8 files changed, 145 insertions(+), 106 deletions(-) diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 522ca45dc3d..c9a0b3f0614 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -340,10 +340,6 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym { wmKeyMapItem *km; - /* snap */ - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); - /* used by mesh, curve & lattice only */ if(do_pet) { /* context ops */ diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 0ec151046d6..84e54abc20c 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1693,10 +1693,11 @@ static char *snapmode_pup(void) char *str = string; str += sprintf(str, "%s", "Snap Element: %t"); - str += sprintf(str, "%s", "|Vertex%x0"); - str += sprintf(str, "%s", "|Edge%x1"); - str += sprintf(str, "%s", "|Face%x2"); - str += sprintf(str, "%s", "|Volume%x3"); + str += sprintf(str, "%s", "|Increments%x0"); + str += sprintf(str, "%s", "|Vertex%x1"); + str += sprintf(str, "%s", "|Edge%x2"); + str += sprintf(str, "%s", "|Face%x3"); + str += sprintf(str, "%s", "|Volume%x4"); return string; } @@ -2172,36 +2173,37 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) } /* Snap */ - if (BIF_snappingSupported(obedit)) { - uiBlockBeginAlign(block); + uiBlockBeginAlign(block); - if (ts->snap_flag & SCE_SNAP) { - uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap with Ctrl during transform (Shift Tab)"); - xco+= XIC; - if(v3d->modeselect == OB_MODE_OBJECT) { - uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_FACE) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them"); - xco+= XIC; - } - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode"); - xco+= XIC + 10; - uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode"); - xco+= 70; - } else { - uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)"); - xco+= XIC; - } + if (ts->snap_flag & SCE_SNAP) { + uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_ON,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap during transform (Ctrl)"); + } else { + uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_OFF,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap during transform (Ctrl)"); + } + xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); + if(v3d->modeselect == OB_MODE_OBJECT && ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { + uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target"); + xco+= XIC; } + if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) { + uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center"); + xco+= XIC; + } + if (ts->snap_mode == SCE_SNAP_MODE_FACE) { + uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them"); + xco+= XIC; + } + uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_INCREMENT, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode"); + xco+= XIC + 10; + if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { + uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode"); + xco+= 70; + } + + uiBlockEndAlign(block); + header_xco_step(ar, &xco, &yco, &maxco, 10); + /* selection modus */ if(obedit && (obedit->type == OB_MESH)) { diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 775e33e542c..cd267f51601 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -507,9 +507,9 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_TRANSLATE 3 #define TFM_MODAL_ROTATE 4 #define TFM_MODAL_RESIZE 5 -#define TFM_MODAL_SNAP_GEARS 6 -#define TFM_MODAL_SNAP_GEARS_OFF 7 -#define TFM_MODAL_SNAP_GEARS_TOGGLE 8 +#define TFM_MODAL_SNAP_ON 6 +#define TFM_MODAL_SNAP_OFF 7 +#define TFM_MODAL_SNAP_TOGGLE 8 /* called in transform_ops.c, on each regeneration of keymaps */ void transform_modal_keymap(wmKeyConfig *keyconf) @@ -520,9 +520,9 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Translate", ""}, {TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""}, {TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""}, - {TFM_MODAL_SNAP_GEARS, "SNAP_GEARS", 0, "Snap On", ""}, - {TFM_MODAL_SNAP_GEARS_OFF, "SNAP_GEARS_OFF", 0, "Snap Off", ""}, - {TFM_MODAL_SNAP_GEARS_TOGGLE, "SNAP_GEARS_TOGGLE", 0, "Snap Toggle", ""}, + {TFM_MODAL_SNAP_ON, "SNAP_ON", 0, "Snap On", ""}, + {TFM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap Off", ""}, + {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -542,7 +542,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE); WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_GEARS_TOGGLE); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE); /* assign map to operators */ WM_modalkeymap_assign(keymap, "TFM_OT_transform"); @@ -629,16 +629,16 @@ void transformEvent(TransInfo *t, wmEvent *event) } break; - case TFM_MODAL_SNAP_GEARS: - t->modifiers |= MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_ON: + t->modifiers |= MOD_SNAP; t->redraw = 1; break; - case TFM_MODAL_SNAP_GEARS_OFF: - t->modifiers &= ~MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_OFF: + t->modifiers &= ~MOD_SNAP; t->redraw = 1; break; - case TFM_MODAL_SNAP_GEARS_TOGGLE: - t->modifiers ^= MOD_SNAP_GEARS; + case TFM_MODAL_SNAP_TOGGLE: + t->modifiers ^= MOD_SNAP; t->redraw = 1; break; } @@ -1280,28 +1280,30 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } // If modal, save settings back in scene if not set as operator argument - if (t->flag & T_MODAL) - { + if (t->flag & T_MODAL) { + /* save settings if not set in operator */ - if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) - { + if (RNA_struct_find_property(op->ptr, "proportional") && !RNA_property_is_set(op->ptr, "proportional")) { ts->proportional = proportional; } - if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) - { + if (RNA_struct_find_property(op->ptr, "proportional_size") && !RNA_property_is_set(op->ptr, "proportional_size")) { ts->proportional_size = t->prop_size; } - if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) - { + if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) { ts->prop_mode = t->prop_mode; } - if(t->spacetype == SPACE_VIEW3D) - { - if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) - { + /* do we check for parameter? */ + if (t->modifiers & MOD_SNAP) { + ts->snap_flag |= SCE_SNAP; + } else { + ts->snap_flag &= ~SCE_SNAP; + } + + if(t->spacetype == SPACE_VIEW3D) { + if (RNA_struct_find_property(op->ptr, "constraint_orientation") && !RNA_property_is_set(op->ptr, "constraint_orientation")) { View3D *v3d = t->view; v3d->twmode = t->current_orientation; diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index b8ef50507d3..1d284d2cc5b 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -83,11 +83,13 @@ typedef struct NumInput { */ typedef struct TransSnap { + short mode; short modePoint; short modeTarget; - short mode; + short modeSelect; short align; short project; + short peel; short status; float snapPoint[3]; /* snapping from this point */ float snapTarget[3]; /* to this point */ @@ -371,7 +373,7 @@ typedef struct TransInfo { /* TransInfo->modifiers */ #define MOD_CONSTRAINT_SELECT 0x01 #define MOD_PRECISION 0x02 -#define MOD_SNAP_GEARS 0x04 +#define MOD_SNAP 0x04 #define MOD_CONSTRAINT_PLANE 0x08 @@ -412,14 +414,9 @@ typedef struct TransInfo { #define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */ /* transsnap->status */ -#define SNAP_ON 1 -#define SNAP_FORCED 2 -#define TARGET_INIT 4 -#define POINT_INIT 8 - -/* transsnap->modePoint */ -#define SNAP_GRID 0 -#define SNAP_GEO 1 +#define SNAP_FORCED 1 +#define TARGET_INIT 2 +#define POINT_INIT 4 /* transsnap->modeTarget */ #define SNAP_CLOSEST 0 diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index da8f0c4d0e9..f59803924d5 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -290,7 +290,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo mul_m3_v3(t->con.pmtx, out); // With snap, a projection is alright, no need to correct for view alignment - if ((t->tsnap.status & SNAP_ON) == 0) { + if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && t->modifiers & MOD_SNAP)) { if (getConstraintSpaceDimension(t) == 2) { if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) { planeProjection(t, in, out); @@ -316,7 +316,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo } /* - * Generic callback for object based spacial constraints applied to linear motion + * Generic callback for object based spatial constraints applied to linear motion * * At first, the following is applied to the first data in the array * The IN vector in projected into the constrained space and then further diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d3c0e91e57c..7fa4f8b0ffc 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1048,6 +1048,10 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->options |= CTX_NO_PET; } + /* Snapping */ + if (ts->snap_flag & SCE_SNAP) { + t->modifiers |= MOD_SNAP; + } setTransformViewMatrices(t); initNumInput(&t->num); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 67b7f60e728..e01f4373516 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -84,6 +84,38 @@ TransformModeItem transform_modes[] = {NULL, 0} }; +static int snap_type_exec(bContext *C, wmOperator *op) +{ + ToolSettings *ts= CTX_data_tool_settings(C); + + ts->snap_mode = RNA_enum_get(op->ptr,"type"); + + WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ + + return OPERATOR_FINISHED; +} + +void TFM_OT_snap_type(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Snap Type"; + ot->description= "Set the snap element type."; + ot->idname= "TFM_OT_snap_type"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= snap_type_exec; + + ot->poll= ED_operator_areaactive; + + /* flags */ + ot->flag= OPTYPE_UNDO; + + /* props */ + RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type"); + +} + static int select_orientation_exec(bContext *C, wmOperator *op) { int orientation = RNA_enum_get(op->ptr, "orientation"); @@ -344,7 +376,7 @@ void Properties_Proportional(struct wmOperatorType *ot) void Properties_Snapping(struct wmOperatorType *ot, short align) { RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", ""); - RNA_def_enum(ot->srna, "snap_mode", snap_mode_items, 0, "Mode", ""); + 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 (align) @@ -700,6 +732,8 @@ void transform_operatortypes(void) WM_operatortype_append(TFM_OT_select_orientation); WM_operatortype_append(TFM_OT_create_orientation); WM_operatortype_append(TFM_OT_delete_orientation); + + WM_operatortype_append(TFM_OT_snap_type); } void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid) @@ -737,6 +771,11 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); + + km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", LEFTCTRLKEY, KM_CLICK, KM_SHIFT, 0); + break; case SPACE_ACTION: km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); @@ -808,6 +847,9 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); break; default: break; diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index be3d3579344..bbea9d4ba25 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -125,8 +125,8 @@ int BIF_snappingSupported(Object *obedit) void drawSnapping(const struct bContext *C, TransInfo *t) { - if ((t->tsnap.status & (SNAP_ON|POINT_INIT|TARGET_INIT)) == (SNAP_ON|POINT_INIT|TARGET_INIT) && - (t->modifiers & MOD_SNAP_GEARS)) + if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) && + (t->modifiers & MOD_SNAP)) { char col[4] = {1, 0, 1}; @@ -205,7 +205,8 @@ void drawSnapping(const struct bContext *C, TransInfo *t) int handleSnapping(TransInfo *t, wmEvent *event) { int status = 0; - + +#if 0 // XXX need a proper selector for all snap mode if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) { /* toggle snap and reinit */ @@ -213,6 +214,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) initSnapping(t, NULL); status = 1; } +#endif return status; } @@ -220,7 +222,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) void applyProject(TransInfo *t) { /* XXX FLICKER IN OBJECT MODE */ - if ((t->tsnap.project) && (t->tsnap.status & SNAP_ON) && (t->modifiers & MOD_SNAP_GEARS)) + if ((t->tsnap.project) && (t->modifiers & MOD_SNAP) && (t->modifiers & MOD_SNAP)) { TransData *td = t->data; float tvec[3]; @@ -256,7 +258,7 @@ void applyProject(TransInfo *t) project_float(t->ar, iloc, mval); - if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode)) + if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeTarget)) { // if(t->flag & (T_EDIT|T_POSE)) { // mul_m4_v3(imat, loc); @@ -286,8 +288,8 @@ void applySnapping(TransInfo *t, float *vec) t->tsnap.applySnap(t, vec); } - else if ((t->tsnap.status & SNAP_ON) && - (t->modifiers & MOD_SNAP_GEARS)) + else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) && + (t->modifiers & MOD_SNAP)) { double current = PIL_check_seconds_timer(); @@ -310,9 +312,9 @@ void applySnapping(TransInfo *t, float *vec) void resetSnapping(TransInfo *t) { t->tsnap.status = 0; - t->tsnap.mode = 0; t->tsnap.align = 0; - t->tsnap.modePoint = 0; + t->tsnap.mode = 0; + t->tsnap.modeSelect = 0; t->tsnap.modeTarget = 0; t->tsnap.last = 0; t->tsnap.applySnap = NULL; @@ -346,7 +348,7 @@ void initSnapping(TransInfo *t, wmOperator *op) Object *obedit = t->obedit; Scene *scene = t->scene; int snapping = 0; - short snap_mode = t->settings->snap_target; + short snap_target = t->settings->snap_target; resetSnapping(t); @@ -355,7 +357,7 @@ void initSnapping(TransInfo *t, wmOperator *op) if (RNA_boolean_get(op->ptr, "snap")) { snapping = 1; - snap_mode = RNA_enum_get(op->ptr, "snap_mode"); + snap_target = RNA_enum_get(op->ptr, "snap_target"); t->tsnap.status |= SNAP_FORCED|POINT_INIT; RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); @@ -379,6 +381,7 @@ void initSnapping(TransInfo *t, wmOperator *op) snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP); t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE); t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); + t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); } /* force project off when not supported */ @@ -387,25 +390,23 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.project = 0; } + t->tsnap.mode = ts->snap_mode; + if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV - (t->flag & T_CAMERA) == 0) { // Not with camera selected - setSnappingCallback(t, snap_mode); + (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view + setSnappingCallback(t, snap_target); /* Edit mode */ if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - if (t->flag & T_PROP_EDIT) { - t->tsnap.mode = SNAP_NOT_OBEDIT; + t->tsnap.modeSelect = SNAP_NOT_OBEDIT; } else { - t->tsnap.mode = SNAP_ALL; + t->tsnap.modeSelect = SNAP_ALL; } } /* Particles edit mode*/ @@ -413,29 +414,24 @@ void initSnapping(TransInfo *t, wmOperator *op) (snapping) && // Only if the snap flag is on (obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - t->tsnap.mode = SNAP_ALL; + t->tsnap.modeSelect = SNAP_ALL; } /* Object mode */ else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit == NULL) ) // Object Mode { - t->tsnap.status |= SNAP_ON; - t->tsnap.modePoint = SNAP_GEO; - t->tsnap.mode = SNAP_NOT_SELECTED; + t->tsnap.modeSelect = SNAP_NOT_SELECTED; } else { /* Grid if snap is not possible */ - t->tsnap.modePoint = SNAP_GRID; + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; } } else { /* Always grid outside of 3D view */ - t->tsnap.modePoint = SNAP_GRID; + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; } } @@ -627,7 +623,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec) mval[0] = t->mval[0]; mval[1] = t->mval[1]; - if (t->settings->snap_mode == SCE_SNAP_MODE_VOLUME) + if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME) { ListBase depth_peels; DepthPeel *p1, *p2; @@ -720,7 +716,7 @@ void CalcSnapGeometry(TransInfo *t, float *vec) } else { - found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.mode); + found = snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect); } if (found == 1) @@ -1828,7 +1824,7 @@ void snapGrid(TransInfo *t, float *val) { GearsType action; // Only do something if using Snap to Grid - if (t->tsnap.modePoint != SNAP_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) @@ -1839,10 +1835,10 @@ void snapGrid(TransInfo *t, float *val) { invert = U.flag & USER_AUTOGRABGRID; if(invert) { - action = (t->modifiers & MOD_SNAP_GEARS) ? NO_GEARS: BIG_GEARS; + action = (t->modifiers & MOD_SNAP) ? NO_GEARS: BIG_GEARS; } else { - action = (t->modifiers & MOD_SNAP_GEARS) ? BIG_GEARS : NO_GEARS; + action = (t->modifiers & MOD_SNAP) ? BIG_GEARS : NO_GEARS; } if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { -- cgit v1.2.3 From b6ea97969072671bf279861df8414b4483a6fb25 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Thu, 26 Nov 2009 20:44:55 +0000 Subject: MSVC project files: enable Blender Game renderer. --- projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj | 8 ++++---- projectfiles_vc9/blender/makesrna/RNA_rna.vcproj | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj index c0a13bbe26b..ae0ce4327b6 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj @@ -141,7 +141,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf" - PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE" + PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -327,7 +327,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf" - PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE" + PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;GAMEBLENDER=1" BasicRuntimeChecks="3" RuntimeLibrary="1" DefaultCharIsUnsigned="true" @@ -423,7 +423,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf" - PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE" + PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE;GAMEBLENDER=1" BasicRuntimeChecks="3" RuntimeLibrary="1" DefaultCharIsUnsigned="true" @@ -519,7 +519,7 @@ Name="VCCLCompilerTool" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf" - PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE" + PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" diff --git a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj index 66449b01f81..02deec88843 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj @@ -44,7 +44,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -115,7 +115,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1" MinimalRebuild="true" RuntimeLibrary="0" EnableFunctionLevelLinking="false" -- cgit v1.2.3 From af244d040382d4922519d0528b7c242c6aca5fcd Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 26 Nov 2009 21:56:31 +0000 Subject: Fix for rev. 24908 - committed the fix, but it was commented out. Forgot to uncomment it after doublecheck testing, hmm... --- source/blender/render/intern/source/convertblender.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index c29eabdcf65..f9d32f9c541 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4501,8 +4501,8 @@ static int allow_render_object(Render *re, Object *ob, int nolamps, int onlysele return 0; /* don't add non-basic meta objects, ends up having renderobjects with no geometry */ - //if (ob!=find_basis_mball(re->scene, ob)) - // return 0; + if (ob!=find_basis_mball(re->scene, ob)) + return 0; if(nolamps && (ob->type==OB_LAMP)) return 0; -- cgit v1.2.3 From d5267611f171500ced07b83da31a46e1c347f154 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 26 Nov 2009 23:20:31 +0000 Subject: UV Editor: Added missing Snapping Operator keymaps (Shift-S) + menus (under UV's -> Snap) --- release/scripts/ui/space_image.py | 17 +++++++++++++++++ release/scripts/ui/space_view3d.py | 8 ++++---- source/blender/editors/uvedit/uvedit_ops.c | 3 +++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index ae38f8dabcf..44a90c084d0 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -149,7 +149,22 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu): layout.operator("tfm.translate") layout.operator("tfm.rotate") layout.operator("tfm.resize") + +class IMAGE_MT_uvs_snap(bpy.types.Menu): + bl_label = "Snap" + def draw(self, context): + layout = self.layout + layout.operator_context = 'EXEC_REGION_WIN' + + layout.operator("uv.snap_selection", text="Selected to Pixels").target = 'PIXELS' + layout.operator("uv.snap_selection", text="Selected to Cursor").target = 'CURSOR' + layout.operator("uv.snap_selection", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED' + + layout.separator() + + layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS' + layout.operator("uv.snap_cursor", text="Cursor to Selection").target = 'SELECTION' class IMAGE_MT_uvs_mirror(bpy.types.Menu): bl_label = "Mirror" @@ -203,6 +218,7 @@ class IMAGE_MT_uvs(bpy.types.Menu): layout.menu("IMAGE_MT_uvs_transform") layout.menu("IMAGE_MT_uvs_mirror") + layout.menu("IMAGE_MT_uvs_snap") layout.menu("IMAGE_MT_uvs_weldalign") layout.separator() @@ -520,6 +536,7 @@ bpy.types.register(IMAGE_MT_select) bpy.types.register(IMAGE_MT_image) bpy.types.register(IMAGE_MT_uvs_showhide) bpy.types.register(IMAGE_MT_uvs_transform) +bpy.types.register(IMAGE_MT_uvs_snap) bpy.types.register(IMAGE_MT_uvs_mirror) bpy.types.register(IMAGE_MT_uvs_weldalign) bpy.types.register(IMAGE_MT_uvs) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index da80a95150e..5cd73e8607b 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -188,10 +188,10 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() - layout.operator("view3d.viewnumpad").type = 'CAMERA' - layout.operator("view3d.viewnumpad").type = 'TOP' - layout.operator("view3d.viewnumpad").type = 'FRONT' - layout.operator("view3d.viewnumpad").type = 'RIGHT' + layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA' + layout.operator("view3d.viewnumpad", text="Top").type = 'TOP' + layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT' + layout.operator("view3d.viewnumpad", text+"Right").type = 'RIGHT' layout.menu("VIEW3D_MT_view_cameras", text="Cameras") diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 0e5e283d109..623ddaae188 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -3144,6 +3144,9 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) /* cursor */ WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "UV_OT_tile_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); + + /* menus */ + WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_snap", SKEY, KM_PRESS, KM_SHIFT, 0); ED_object_generic_keymap(keyconf, keymap, TRUE); -- cgit v1.2.3 From f3fbef04e9302fc164236a76b793e232c7d092ed Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 27 Nov 2009 00:34:46 +0000 Subject: Fix for [#20086] Mirror X, Z and Y crashes Blender 2.5 Alpha Was wrong operator context * Also added back 3d view locking options to view properties --- release/scripts/ui/space_view3d.py | 8 +++++++- source/blender/makesrna/intern/rna_space.c | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 5cd73e8607b..d0b80ddcbfd 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -116,7 +116,7 @@ class VIEW3D_MT_mirror(bpy.types.Menu): layout.separator() - layout.operator_context = 'EXEC_AREA' + layout.operator_context = 'INVOKE_REGION_WIN' props = layout.operator("tfm.mirror", text="X Global") props.constraint_axis = (True, False, False) @@ -1529,6 +1529,12 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel): col.prop(view, "grid_subdivisions", text="Subdivisions") layout.column().prop(scene, "cursor_location", text="3D Cursor:") + + col = layout.column() + col.label(text="Lock to Object:") + col.prop(view, "lock_object", text="") + if view.lock_object and view.lock_object.type == 'ARMATURE': + col.prop_object(view, "lock_bone", view.lock_object.data, "bones", text="") class VIEW3D_PT_3dview_name(bpy.types.Panel): diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index ac93f75156f..9307d56c1cb 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -656,10 +656,16 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_sdna(prop, NULL, "ob_centre"); RNA_def_property_ui_text(prop, "Lock Object", "3D View center is locked to this object's position"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "lock_bone", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "ob_centre_bone"); + RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "background_image", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "bgpic"); RNA_def_property_ui_text(prop, "Background Image", "Image and settings to display in the 3D View background"); -- cgit v1.2.3 From 2cb7a0b25c0c7e2315b764c8a2f43a64fdcee60b Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 27 Nov 2009 00:45:01 +0000 Subject: Fix for [#20080] Arrows Don't Scale (2.5 Alpha 0) --- source/blender/editors/space_logic/logic_window.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index dc8b111821d..bc86d8c37b9 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3396,9 +3396,9 @@ void logic_buttons(bContext *C, ARegion *ar) //uiButSetFunc(but, sca_move_controller, cont, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + 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); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + 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); uiBlockEndAlign(block); @@ -3488,9 +3488,9 @@ void logic_buttons(bContext *C, ARegion *ar) //uiButSetFunc(but, sca_move_sensor, sens, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + 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); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + 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); uiBlockEndAlign(block); } @@ -3568,9 +3568,9 @@ void logic_buttons(bContext *C, ARegion *ar) // uiButSetFunc(but, sca_move_actuator, act, NULL); uiBlockBeginAlign(block); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); + 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); - but= uiDefIconBut(block, BUT, B_REDR, VICON_MOVE_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); + 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); uiBlockEndAlign(block); -- cgit v1.2.3 From 54701e28fbd2a2537bc1d9cc8947ca1eaf9c1510 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 27 Nov 2009 04:14:56 +0000 Subject: Animation Playback - Return to original frame Playback of animation will now be restored to the frame that playback started on when stopping if the SCREEN_OT_animation_cancel operator is used (i.e. ESCKEY). All other ways of stopping playback (pause button, alt-a) should act more like toggles, and do not reset the playhead. --- source/blender/editors/include/ED_screen_types.h | 5 +++-- source/blender/editors/screen/screen_edit.c | 3 ++- source/blender/editors/screen/screen_ops.c | 18 ++++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index dcdc9e417e4..d933e2cfdaa 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -32,8 +32,9 @@ /* for animplayer */ typedef struct ScreenAnimData { ARegion *ar; /* do not read from this, only for comparing if region exists */ - int redraws; - int flag; /* flags for playback */ + short redraws; + short flag; /* flags for playback */ + int sfra; /* frame that playback was started from */ } ScreenAnimData; /* for animplayer */ diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index acf5bcd739e..c158901c15d 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1556,10 +1556,11 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) screen->animtimer= NULL; if(enable) { - struct ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); + ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS)); sad->ar= CTX_wm_region(C); + sad->sfra = scene->r.cfra; sad->redraws= redraws; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 4712d1c5533..73ad07453c5 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2263,8 +2263,6 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) // TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this? wt->timestep= (1.0/FPS); - //WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); - return OPERATOR_FINISHED; } return OPERATOR_PASS_THROUGH; @@ -2292,6 +2290,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event) bScreen *screen= CTX_wm_screen(C); if(screen->animtimer) { + /* stop playback now */ ED_screen_animation_timer(C, 0, 0, 0); sound_stop_all(C); } @@ -2354,8 +2353,19 @@ static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event) { bScreen *screen= CTX_wm_screen(C); - if(screen->animtimer) + if(screen->animtimer) { + ScreenAnimData *sad= screen->animtimer->customdata; + Scene *scene= CTX_data_scene(C); + + /* reset current frame before stopping, and just send a notifier to deal with the rest + * (since playback still needs to be stopped) + */ + scene->r.cfra= sad->sfra; + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + + /* call the other "toggling" operator to clean up now */ return screen_animation_play(C, op, event); + } return OPERATOR_PASS_THROUGH; } @@ -2364,7 +2374,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) { /* identifiers */ ot->name= "Cancel Animation"; - ot->description= "Cancel animation."; + ot->description= "Cancel animation, returning to the original frame."; ot->idname= "SCREEN_OT_animation_cancel"; /* api callbacks */ -- cgit v1.2.3 From 15087ea7832a722d08c2ae8bda101e4374faaf4e Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 27 Nov 2009 06:22:55 +0000 Subject: fix for error in simpledeform modifier ui --- release/scripts/ui/properties_data_modifier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 46355bacd02..26b2c2a34f2 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -548,7 +548,7 @@ class DATA_PT_modifiers(DataButtonsPanel): col.label(text="Origin:") col.prop(md, "origin", text="") sub = col.column() - sub.active = md.origin + sub.active = (md.origin != "") sub.prop(md, "relative") if wide_ui: -- cgit v1.2.3 From 993da72d06753dd32b86c9664eaaf0a7ccb4d018 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 27 Nov 2009 06:24:09 +0000 Subject: Added RMB-menu to Headers: This contains two entries - one which calls the region flip operator, and one which calls the maxmize area operator. Unfortunately, there seem to be some context issues which are causing the wrong region to get activated for use by the region flipping, meaning that nothing happens. Also, fixed own typo in 3d-view header/menu code... --- release/scripts/ui/space_view3d.py | 2 +- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/include/ED_screen_types.h | 2 +- source/blender/editors/screen/area.c | 11 +++++ source/blender/editors/screen/screen_ops.c | 53 +++++++++++++++++++++- source/blender/editors/space_action/space_action.c | 2 +- .../blender/editors/space_buttons/space_buttons.c | 2 +- .../blender/editors/space_console/space_console.c | 2 +- source/blender/editors/space_file/space_file.c | 2 +- source/blender/editors/space_graph/space_graph.c | 2 +- source/blender/editors/space_image/space_image.c | 2 +- source/blender/editors/space_info/space_info.c | 2 +- source/blender/editors/space_logic/space_logic.c | 2 +- source/blender/editors/space_nla/space_nla.c | 2 +- source/blender/editors/space_node/space_node.c | 2 +- .../editors/space_outliner/space_outliner.c | 2 +- source/blender/editors/space_script/space_script.c | 2 +- .../editors/space_sequencer/space_sequencer.c | 2 +- source/blender/editors/space_sound/space_sound.c | 2 +- source/blender/editors/space_text/space_text.c | 2 +- source/blender/editors/space_time/space_time.c | 2 +- .../editors/space_userpref/space_userpref.c | 2 +- source/blender/editors/space_view3d/space_view3d.c | 2 +- 23 files changed, 83 insertions(+), 22 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index d0b80ddcbfd..fa7cbe152de 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -191,7 +191,7 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA' layout.operator("view3d.viewnumpad", text="Top").type = 'TOP' layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT' - layout.operator("view3d.viewnumpad", text+"Right").type = 'RIGHT' + layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT' layout.menu("VIEW3D_MT_view_cameras", text="Cameras") diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 18c86306e44..fb708e4d1c7 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -152,6 +152,7 @@ int ED_operator_posemode(struct bContext *C); #define ED_KEYMAP_ANIMATION 8 #define ED_KEYMAP_FRAMES 16 #define ED_KEYMAP_GPENCIL 32 +#define ED_KEYMAP_HEADER 64 #endif /* ED_SCREEN_H */ diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index d933e2cfdaa..0deda5a2a84 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -50,7 +50,7 @@ enum { }; - +/* for editing areas/regions */ typedef struct AZone { struct AZone *next, *prev; ARegion *ar; diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 08a05f4646a..f663e5f0a21 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -828,29 +828,40 @@ static void ed_default_handlers(wmWindowManager *wm, ListBase *handlers, int fla // XXX it would be good to have boundbox checks for some of these... if(flag & ED_KEYMAP_UI) { + /* user interface widgets */ UI_add_region_handlers(handlers); } if(flag & ED_KEYMAP_VIEW2D) { + /* 2d-viewport handling+manipulation */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View2D", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_MARKERS) { + /* time-markers */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Markers", 0, 0); WM_event_add_keymap_handler(handlers, keymap); // XXX need boundbox check urgently!!! } if(flag & ED_KEYMAP_ANIMATION) { + /* frame changing and timeline operators (for time spaces) */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Animation", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_FRAMES) { + /* frame changing/jumping (for all spaces) */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Frames", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } if(flag & ED_KEYMAP_GPENCIL) { + /* grease pencil */ wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Grease Pencil", 0, 0); WM_event_add_keymap_handler(handlers, keymap); } + if(flag & ED_KEYMAP_HEADER) { + /* standard keymap for headers regions */ + wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "Header", 0, 0); + WM_event_add_keymap_handler(handlers, keymap); + } } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 73ad07453c5..9f2b8113119 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2119,7 +2119,51 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot) ot->poll= ED_operator_areaactive; ot->flag= 0; +} + +/* ************** header tools operator ***************************** */ + +static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + ScrArea *sa= CTX_wm_area(C); + ARegion *ar= CTX_wm_region(C); + uiPopupMenu *pup; + uiLayout *layout; + + pup= uiPupMenuBegin(C, "Header", 0); + layout= uiPupMenuLayout(pup); + + uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); // XXX still can't manage to get the right region flipped + if (ar->alignment == RGN_ALIGN_TOP) + uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_region_flip"); + else + uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_region_flip"); + + uiItemS(layout); + + /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */ + uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT); + if (sa->spacetype != SPACE_FILE) { + if (sa->full) + uiItemO(layout, "Tile Window", 0, "SCREEN_OT_screen_full_area"); + else + uiItemO(layout, "Maximize Window", 0, "SCREEN_OT_screen_full_area"); + } + + uiPupMenuEnd(C, pup); + + return OPERATOR_CANCELLED; +} +void SCREEN_OT_header_toolbox(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Header Toolbox"; + ot->description="Display header region toolbox"; + ot->idname= "SCREEN_OT_header_toolbox"; + + /* api callbacks */ + ot->invoke= header_toolbox_invoke; } /* ****************** anim player, with timer ***************** */ @@ -3559,6 +3603,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_region_foursplit); WM_operatortype_append(SCREEN_OT_region_flip); WM_operatortype_append(SCREEN_OT_region_scale); + WM_operatortype_append(SCREEN_OT_header_toolbox); WM_operatortype_append(SCREEN_OT_screen_set); WM_operatortype_append(SCREEN_OT_screen_full_area); WM_operatortype_append(SCREEN_OT_screenshot); @@ -3638,7 +3683,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf) /* area move after action zones */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); - + /* Header Editing ------------------------------------------------ */ + keymap= WM_keymap_find(keyconf, "Header", 0, 0); + + WM_keymap_add_item(keymap, "SCREEN_OT_header_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0); + /* Screen General ------------------------------------------------ */ keymap= WM_keymap_find(keyconf, "Screen", 0, 0); @@ -3658,7 +3707,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 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); diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 59b690002d2..d4f8fcfb449 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -444,7 +444,7 @@ void ED_spacetype_action(void) art= MEM_callocN(sizeof(ARegionType), "spacetype action region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= action_header_area_init; art->draw= action_header_area_draw; diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index de8a1616496..9fc24516d2d 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -349,7 +349,7 @@ void ED_spacetype_buttons(void) art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= BUTS_HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= buttons_header_area_init; art->draw= buttons_header_area_draw; diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 3dca5a4db4b..4d2f816ba6b 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -356,7 +356,7 @@ void ED_spacetype_console(void) art= MEM_callocN(sizeof(ARegionType), "spacetype console region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= console_header_area_init; art->draw= console_header_area_draw; diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 08ac9194fcb..cadb5767508 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -531,7 +531,7 @@ void ED_spacetype_file(void) art= MEM_callocN(sizeof(ARegionType), "spacetype file region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= file_header_area_init; art->draw= file_header_area_draw; // art->listener= file_header_area_listener; diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 157202190bb..24f87906391 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -593,7 +593,7 @@ void ED_spacetype_ipo(void) art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= graph_region_listener; art->init= graph_header_area_init; art->draw= graph_header_area_draw; diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 8478b40092f..3bb697ba1f4 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -569,7 +569,7 @@ void ED_spacetype_image(void) art= MEM_callocN(sizeof(ARegionType), "spacetype image region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= image_header_area_init; art->draw= image_header_area_draw; diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index c28e86a6fa6..ab10e05b204 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -204,7 +204,7 @@ void ED_spacetype_info(void) art= MEM_callocN(sizeof(ARegionType), "spacetype info region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= info_header_listener; art->init= info_header_area_init; art->draw= info_header_area_draw; diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index 62ed6a0a769..f9fdbb92db9 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -364,7 +364,7 @@ void ED_spacetype_logic(void) art= MEM_callocN(sizeof(ARegionType), "spacetype logic region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= logic_header_area_init; art->draw= logic_header_area_draw; diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 1e35e9122e6..a019e684239 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -538,7 +538,7 @@ void ED_spacetype_nla(void) art= MEM_callocN(sizeof(ARegionType), "spacetype nla region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= nla_header_area_init; art->draw= nla_header_area_draw; diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index e5fb0b8dfcf..f5c6efa2fb8 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -370,7 +370,7 @@ void ED_spacetype_node(void) art= MEM_callocN(sizeof(ARegionType), "spacetype node region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= node_region_listener; art->init= node_header_area_init; art->draw= node_header_area_draw; diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index e3fbb13ed7d..31de6839468 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -281,7 +281,7 @@ void ED_spacetype_outliner(void) art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= outliner_header_area_init; art->draw= outliner_header_area_draw; diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c index fc2f10670df..e6edb71c1b1 100644 --- a/source/blender/editors/space_script/space_script.c +++ b/source/blender/editors/space_script/space_script.c @@ -219,7 +219,7 @@ void ED_spacetype_script(void) art= MEM_callocN(sizeof(ARegionType), "spacetype script region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= script_header_area_init; art->draw= script_header_area_draw; diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index f0fe3b47492..b8adaf23f73 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -322,7 +322,7 @@ void ED_spacetype_sequencer(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= sequencer_header_area_init; art->draw= sequencer_header_area_draw; diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c index 314e711234a..f2c449ffc1f 100644 --- a/source/blender/editors/space_sound/space_sound.c +++ b/source/blender/editors/space_sound/space_sound.c @@ -246,7 +246,7 @@ void ED_spacetype_sound(void) art= MEM_callocN(sizeof(ARegionType), "spacetype sound region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= sound_header_area_init; art->draw= sound_header_area_draw; diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 0b30587c521..a8d146bb7a8 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -438,7 +438,7 @@ void ED_spacetype_text(void) art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= text_header_area_init; art->draw= text_header_area_draw; diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 501ac1c0cba..59314fba48e 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -418,7 +418,7 @@ void ED_spacetype_time(void) art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= time_header_area_init; art->draw= time_header_area_draw; diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index 39fc2fd2bd1..da475ff4c5b 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -175,7 +175,7 @@ void ED_spacetype_userpref(void) art= MEM_callocN(sizeof(ARegionType), "spacetype userpref region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->listener= userpref_header_listener; art->init= userpref_header_area_init; art->draw= userpref_header_area_draw; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 787df5150f4..db617473291 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -839,7 +839,7 @@ void ED_spacetype_view3d(void) art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_HEADER; art->minsizey= HEADERY; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->listener= view3d_header_area_listener; art->init= view3d_header_area_init; art->draw= view3d_header_area_draw; -- cgit v1.2.3 From 692115356c45e3da8ff8dd7531c4a237dea8e317 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 27 Nov 2009 11:19:13 +0000 Subject: Durian Request: Renaming "Sync Audio" to "Realtime Playback" to make it clearer about its purpose. Internally, it's still called "sync_audio" since that's strictly what it represents, but that could be changed later if there is a need. --- release/scripts/ui/space_time.py | 4 ++-- source/blender/makesrna/intern/rna_scene.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 3c855816578..de8d1eb96ab 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -72,7 +72,7 @@ class TIME_HT_header(bpy.types.Header): subsub = row.row() subsub.prop(tools, "record_with_nla", toggle=True) - layout.prop(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER') + layout.prop(scene, "sync_audio", text="Realtime", toggle=True, icon='ICON_SPEAKER') layout.separator() @@ -145,7 +145,7 @@ class TIME_MT_playback(bpy.types.Menu): layout.separator() - layout.prop(scene, "sync_audio", icon='ICON_SPEAKER') + layout.prop(scene, "sync_audio", text="Realtime Playback", icon='ICON_SPEAKER') layout.prop(scene, "mute_audio") layout.prop(scene, "scrub_audio") diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 8d8b97d01a8..9c964b18ffa 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2525,7 +2525,7 @@ void RNA_def_scene(BlenderRNA *brna) prop= RNA_def_property(srna, "sync_audio", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SYNC); - RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor."); + RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio from Sequence Editor for realtime playback."); RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "scrub_audio", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From 65c4149f2036100b1e5ee7911085188bbf9f2299 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 27 Nov 2009 11:51:34 +0000 Subject: Fix for problems with region-flip operator not working from the RMB context menu. I've had to add a special operator for this, since the generic region-flip operator doesn't seem to be getting the right region from RNA. This operator explicitly searches for an appropriate header region before beginning. I suspect by default, operators get the main region set as being context target... --- source/blender/editors/screen/screen_ops.c | 64 +++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 9f2b8113119..456671b3d75 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2121,6 +2121,60 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot) ot->flag= 0; } +/* ************** header flip operator ***************************** */ + +/* flip a header region alignment */ +static int header_flip_exec(bContext *C, wmOperator *op) +{ + ARegion *ar= CTX_wm_region(C); + + /* find the header region + * - try context first, but upon failing, search all regions in area... + */ + if((ar == NULL) || (ar->regiontype != RGN_TYPE_HEADER)) { + ScrArea *sa= CTX_wm_area(C); + + /* loop over all regions until a matching one is found */ + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if(ar->regiontype == RGN_TYPE_HEADER) + break; + } + + /* don't do anything if no region */ + if(ar == NULL) + return OPERATOR_CANCELLED; + } + + /* copied from SCREEN_OT_region_flip */ + if(ar->alignment==RGN_ALIGN_TOP) + ar->alignment= RGN_ALIGN_BOTTOM; + else if(ar->alignment==RGN_ALIGN_BOTTOM) + ar->alignment= RGN_ALIGN_TOP; + else if(ar->alignment==RGN_ALIGN_LEFT) + ar->alignment= RGN_ALIGN_RIGHT; + else if(ar->alignment==RGN_ALIGN_RIGHT) + ar->alignment= RGN_ALIGN_LEFT; + + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + printf("executed header region flip\n"); + + return OPERATOR_FINISHED; +} + + +static void SCREEN_OT_header_flip(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Flip Header Region"; + ot->idname= "SCREEN_OT_header_flip"; + + /* api callbacks */ + ot->exec= header_flip_exec; + + ot->poll= ED_operator_areaactive; + ot->flag= 0; +} + /* ************** header tools operator ***************************** */ static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) @@ -2133,16 +2187,15 @@ static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) pup= uiPupMenuBegin(C, "Header", 0); layout= uiPupMenuLayout(pup); - uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); // XXX still can't manage to get the right region flipped + // XXX SCREEN_OT_region_flip doesn't work - gets wrong context for active region, so added custom operator if (ar->alignment == RGN_ALIGN_TOP) - uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_region_flip"); + uiItemO(layout, "Flip to Bottom", 0, "SCREEN_OT_header_flip"); else - uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_region_flip"); + uiItemO(layout, "Flip to Top", 0, "SCREEN_OT_header_flip"); uiItemS(layout); /* file browser should be fullscreen all the time, but other regions can be maximised/restored... */ - uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT); if (sa->spacetype != SPACE_FILE) { if (sa->full) uiItemO(layout, "Tile Window", 0, "SCREEN_OT_screen_full_area"); @@ -3601,8 +3654,9 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_area_dupli); WM_operatortype_append(SCREEN_OT_area_swap); WM_operatortype_append(SCREEN_OT_region_foursplit); - WM_operatortype_append(SCREEN_OT_region_flip); WM_operatortype_append(SCREEN_OT_region_scale); + WM_operatortype_append(SCREEN_OT_region_flip); + WM_operatortype_append(SCREEN_OT_header_flip); WM_operatortype_append(SCREEN_OT_header_toolbox); WM_operatortype_append(SCREEN_OT_screen_set); WM_operatortype_append(SCREEN_OT_screen_full_area); -- cgit v1.2.3 From 5ca3d1919ca9283dbd56f44684a27d11ea35ccb3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Nov 2009 12:42:42 +0000 Subject: fix for undo crashing when animating proxies that had ID props --- source/blender/blenkernel/intern/armature.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index a570697dfda..418c9f00596 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -1509,6 +1509,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected pchanw.child= pchan->child; pchanw.path= NULL; + /* this is freed so copy a copy, else undo crashes */ + if(pchanw.prop) + pchanw.prop= IDP_CopyProperty(pchanw.prop); + /* constraints - proxy constraints are flushed... local ones are added after * 1. extract constraints not from proxy (CONSTRAINT_PROXY_LOCAL) from pchan's constraints * 2. copy proxy-pchan's constraints on-to new -- cgit v1.2.3 From 93b8098e0ef2aa4f9dd7a8393086173e4e59eb5a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 27 Nov 2009 12:43:48 +0000 Subject: Fix for bug #20039: panning and rotating view makes animation playback slow. Recent click event changes moved variable up one level too far. Also fixes use of timer event for fly operator, it should always check for which timer it is, not really related to this bug. --- source/blender/editors/space_view3d/view3d_view.c | 4 ++-- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index eb1712e19a3..62374ca3134 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1967,7 +1967,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) void flyEvent(FlyInfo *fly, wmEvent *event) { - if (event->type == TIMER) { + if (event->type == TIMER && event->customdata == fly->timer) { fly->redraw = 1; } else if (event->type == MOUSEMOVE) { @@ -2426,7 +2426,7 @@ static int fly_modal(bContext *C, wmOperator *op, wmEvent *event) flyEvent(fly, event); - if(event->type==TIMER) + if(event->type==TIMER && event->customdata == fly->timer) flyApply(fly); if(fly->redraw) {; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index b8c2849a085..8e83ceceab0 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1265,12 +1265,12 @@ void wm_event_do_handlers(bContext *C) for(win= CTX_wm_manager(C)->windows.first; win; win= win->next) { wmEvent *event; - int action = WM_HANDLER_CONTINUE; if( win->screen==NULL ) wm_event_free_all(win); while( (event= win->queue.first) ) { + int action = WM_HANDLER_CONTINUE; CTX_wm_window_set(C, win); -- cgit v1.2.3 From 05079dd773c87c6f8453a0306ae5fa1b52cecb1c Mon Sep 17 00:00:00 2001 From: William Reynish Date: Fri, 27 Nov 2009 12:50:08 +0000 Subject: Re-commit of new icons. It seems like the icon update got overridden somehow. --- release/datafiles/blenderbuttons | Bin 195948 -> 209099 bytes source/blender/editors/datafiles/blenderbuttons.c | 12661 ++++++++++--------- source/blender/editors/include/UI_icons.h | 8 +- .../blender/editors/space_view3d/view3d_header.c | 12 +- 4 files changed, 6548 insertions(+), 6133 deletions(-) diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons index c666d692b32..2bfb1d10219 100644 Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index faa08816884..4e57645b791 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6130 +1,6541 @@ /* DataToC output of file */ -int datatoc_blenderbuttons_size= 195948; +int datatoc_blenderbuttons_size= 209099; char datatoc_blenderbuttons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, - 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,158, 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, 6, 98, 75, 71, 68, 0,255, 0,255, 0,255,160,189, -167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7, -217, 11, 26, 16, 56, 55, 2,149,219, 41, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236, 93,119,116, 84,213,222,221,231,150,153,201, -148, 76, 26, 73, 72,161, 5, 8, 45,128, 52,233,210, 65, 17, 21, 17, 80,124,248, 84,244, 9, 10,168,216,136,136,130,180,248,244, -137,128,159,136, 29, 80,186, 10,162, 79,202,147, 34, 93, 64,164, 72,239, 73, 72,239,153, 62,115,207,247, 71,230,142,147, 97, 90, - 96,162, 8,103,175,117,215,157,185,101,223,211,207, 62,191,211, 8,165, 20, 12, 12, 12, 12, 12, 12, 12, 12, 12,161, 3,199,130, -128,129,129,129,129,129,129,129,225, 47, 22, 88,132, 16, 90,131,103,251, 7,203,233, 60,122,221,232,156,181,232,119, 26, 66,206, - 94, 78,206,105,127, 19,119,246,186, 81, 57,101,255, 6,203, 91, 19,206, 96,211, 84, 13,221, 73, 67,237,206,218,226, 12, 85, 62, -242,226, 78, 90, 11,241, 62,237,111,226,206, 94, 55, 26,167,103,250, 9,134,183,166,156,193,164,169,107,112, 39, 13,181, 59,107, -139,243,122,243,145, 31,119,210,235, 77, 75, 62,226,126, 26,110, 1, 8,181, 37,174,106, 2, 74, 41,113,227, 39, 55, 42,167,123, - 56,200,252,161,116,107, 8,177, 53,212,156, 30,225, 25, 42, 76,163,148, 18, 66,200, 54, 0,189, 66,233,247, 80,196,187,135, 95, - 67,194, 91, 83,113, 85, 83,206, 80,165,251,218,230, 12, 85, 94,242,228, 12, 69,186,247, 22,239,181, 24, 71,161,114,103, 72,242, - 82,109,164,121, 47,233,231,186,121, 61, 57, 67,145,151, 60, 57, 67,145,238,255, 12,206, 80,228, 37,111,156,161, 72,247,190,226, -158, 89,176,254, 28, 33,224,153,177,123,223,200, 66,168,182, 68,102,176, 22,151, 27,129, 51,196,113, 52,205,201, 25,202,214, 76, -239, 80,197, 81,109,164,119,119,206, 80,241,123,242,132, 34,158,188,113, 94,175,123,125,184, 51,228,126,191,222,116,255,103,113, -134, 56,142, 66,146,151, 60, 56,123,135,184, 17,208,219,237,255,180, 80,114,134, 42, 47,121,113,231,117,199,147, 55,206,235,117, -175, 15,119,134,220,239,161,168, 67,106,139,247,166,179, 96,213,166,184,170,173,202, 44,148,220,181, 97,197,169, 45, 75, 91,168, -172, 56, 94,120,183,133,144,110,107,168,221,233,116, 31,169, 45,107,235,141, 14,150,151, 88, 94,186,209,242,146,183,116, 67, 41, -157, 70, 8,121,227, 70,107, 60,187,115,134, 74, 8,121,241,251,117,229, 37,207,119, 67,145,151, 2,112,146,218,240,127,168,243, -211,141,136, 27,102,144,123,176,227,123,174,129,175,247,141, 28, 1,181,228,206,222,127, 7,191,215,134, 59, 9, 33,211,106,201, -239,127,151, 48,101,121,137,229,165, 27, 46, 47,121,164,201,222,161,178, 12,133,186, 33,229,201, 25,138,111,184,115,132, 42,141, -214,182,223, 67,153,151,106, 35,238,255, 46,168,177, 5,171,182,187, 77,110,100,206,218,224,174, 37,191,111,171,141,214, 65, 45, -140,235, 10,185, 59, 41,165,211, 16,194, 46, 71,217,207,161,116,107,109,118, 19,214, 70,218,172,205,244, 30,202,113, 30,181,228, -247,191, 75,188,135,220,157,161,202, 75, 94,226,252,186,221,234, 45,252, 66,221,133, 29,202,180, 89,155,156,161,224,174, 13,119, -214, 86,220,255,157,192,150,105, 96, 96, 96, 96, 96, 96, 96, 96, 8, 49, 8, 91,104,148,129,129,129,129,129,129,129, 33,180,240, -217, 69,152,148,148,180, 94,163,209, 52,241,117,191,178,178,242, 74,118,118,118, 31, 22,132, 12, 12, 12, 1, 91,114,132,112,248, -195, 98, 46, 1,160,148,181,238, 24, 24, 24,110, 69,129,165, 82,169, 82,142, 31, 63,158, 42, 73, 18, 28, 14, 7,236,118,187,235, -108,177, 88,112,199, 29,119,212,120,252, 86,221,186,117,183,243, 60,223,176, 38,239, 56, 28,142, 75, 57, 57, 57, 61,252, 20,220, -187, 0,164, 16, 66,220,175,249, 61, 3,200,182, 90,173,237,253,113, 18, 66, 82, 60,249,124,112,201,191,253,114, 70, 70, 70,238, - 23, 4, 33,217, 27,151,175,223,146, 36,157,203,203,203,235,198,146,233,159,131,186,117,235,110, 23, 4,161,198,233,243,202,149, - 43, 62,211,103, 98, 98,226,175, 28,199, 37,214,128,146,151, 36,233,228,149, 43, 87,122,248, 18, 32,114,154, 15, 32,104,170,253, - 38,132,100,218,237,246,142,129,242,145, 63, 46, 47,105,212, 47,167,187,184, 18, 4, 33, 35, 46, 46,110,156,193, 96, 48, 1,160, - 60,207,211,152,152, 24,217,109, 0, 0,187,221,158, 95, 92, 92,220,154,165, 68, 6, 6,134,155, 90, 96, 73,146,196,153,205,102, -156, 58,117, 10, 62,202,121,199, 53,124, 47,245,192,255, 54,197,133,199,197,195,110,181, 66, 91, 39,214,197,157,251,251, 81,216, -109, 86,216, 45, 22,212,239,212, 69,174,188,208,170, 85, 43, 62, 0,103,242, 91,111,189, 21, 23, 30, 30, 14,147,201, 4,147,201, - 4,179,217, 12,147,201, 4,139,197, 2,139,197, 2,171,213, 10,171,213, 10,187,221, 14,179,217,140,205,155, 55, 7,114,123,242, -172, 89,179,226,244,122,189,139, 79, 62,100, 78,153,215,102,179,193,100, 50,225,167,159,126,242,203, 41, 8, 66,114,118,118,118, -156, 66,161, 0,165, 20,146, 36,129, 82, 90,237,240, 68,227,198,141,173, 44,137,254,169, 72,157,181,236,251,184, 8,181, 10,118, - 73,194,144,182,141, 93, 55,206,125,178, 10,212,238,128,100,183,163,233,248,209, 64,149, 9, 6, 45, 91,182,244,155, 62, 41,165, - 13,102, 45,251, 62, 50, 88,206,130,130, 2, 99,139, 22, 45,178, 81, 53, 16,212,151,133, 39,217,104, 52,198,201,110,240, 20, 66, - 28,199, 85, 59, 54,108,216,128, 33, 67,134, 4,242,123,242,243,207, 63, 31,103,179,217, 96,177, 88, 96, 54,155, 97,179,217, 96, -183,219, 93,135,195,225,112, 29, 22,139, 5,123,247,238, 13,214,114,245,214,128, 1, 3, 30,255,254,251,239,181,223,126,251,173, -182, 97,195,134, 80, 40, 20,224,121, 30, 60,207,131,227, 56, 8,130,128,206,157, 59, 19,150, 4, 25, 24, 24,110,122,129,101, 54, -155,207,183,107,215,142, 58,127, 39,169, 84, 42,133, 71,193,153,152,154,154,122,210,243,189, 64, 93,135,225,113,241, 72,175, 23, - 13, 0,120,253, 98,161,171, 98,248,119,183,219, 92,207,188,153, 85, 10, 0, 80,171,213, 32,238,205,102, 31,208,106,181, 24, 48, - 96, 0,148, 74, 37, 58,118,236, 8, 81, 20,189, 30, 10,133, 2,162, 40, 6, 83, 41, 64,167,211, 97,250,244,233,178, 56,130, 54, - 76,133, 9,221, 58, 34, 12, 20, 31, 29, 61, 13,139, 68, 33, 8,130,235, 8,134, 83,161, 80,224,200,145, 35, 16, 4, 1, 60,207, -187,206,242,239,117,235,214, 97,248,240,225, 16, 4, 1,106,181, 26,184,133,102, 91,220, 40,136, 80,171,240,207,133,223, 0, 0, - 46,207, 29,239,138,187,189, 79,191,238,122,166,193,191, 70,130, 16, 2, 81, 20,193,113, 92,200, 56,139,138,138,140, 15, 61,244, -208,142,240,240,240, 13,101,101,101, 8, 32,220,112,249,242,101, 8,130,224, 51,189,115, 28,135,119,223,125, 23,103,206,156, 9, -202,239, 38,147, 9, 31,127,252, 49, 28, 14, 71, 53, 94,249,183,231,181, 32,197,213,204,129, 3, 7,142,254,254,251,239,163, 8, - 33,120,255,253,247, 33,138, 34,238,190,251,110,196,196,196, 96,227,198,141, 80, 40, 20,120,249,229,151, 89,226, 99, 96, 96,240, - 7, 17,192,109, 0, 98,157, 6,158,114, 0,145,110,247,243,157,231, 88,183,255,191,120,225,233,228,124, 70,190, 47,255,183, 0, - 80,122,185, 94, 8, 64,237, 60,204, 0,118, 1, 72,115,251,142,252, 30, 60,191, 43, 56, 11,194, 94, 0,182, 2,232, 45, 47,126, -119,229,202,149,187,220, 44, 41,199, 79,158, 60,217, 92,214, 58,206,174, 66,133,221,110, 79,149,187, 13,101,235, 80,255,254,253, -253,182,232,237, 86,235, 85,194,195,155,134,242,214, 45,225, 75,184, 88,173, 86,140, 28, 57,178, 42, 6,124, 84, 54,238, 71, 16, -154, 13, 22,139, 5,130, 32,160, 89,189, 88, 76, 29,212, 14,183, 83, 27, 42, 43, 8,236,165,149,184, 79,103,195,241,150,237,177, -232, 82, 62, 46,150, 85, 64, 16,132,160, 56, 37, 73,242, 41,174,120,158,199,194,133, 11,241,208, 67, 15,129,231,249,160,248, 24, - 66, 15,187, 36,121, 77,135,190,210,108, 48,241, 20, 12,103, 81, 81,145,113,200,144, 33,123, 84, 42,213,226,248,248,248,236,204, -204,204,128, 2,203, 83,244,120, 54, 38,254,243,159,255, 96,254,252,249,232,211,167, 79, 80,238, 52,155,205, 32,132, 96,209,162, - 69, 87,221,155, 49, 99,198, 85,223,243,199,233,108, 24,113,137,137,137, 79,255,248,227,143,122,249,217, 58,117,234, 64, 20, 69, -180,110,221, 26,225,225,225,216,177, 99, 7, 28, 14, 71,208,249,146,129,129,225,230,133, 55, 45,226,134, 59,210,211,211, 59,102, -100,100,204,238,218,181,235,242, 93,187,118, 45, 35,132,172,119, 43, 19,135, 56, 57,214,187,253,239,228, 33,178, 68, 0,177,132, -144,245,242,243,238,255,221,174,247, 7,160,148,255,167,167,167,167,101,100,100,204,158, 60,121,242,171,115,230,204, 81,164,167, -167,183,201,200,200,152, 45,127,199,155, 59,220, 45, 88,126, 87, 1,150,187, 11, 79,156, 56,129, 64,227, 82, 3,173,159,161,173, - 19,235,178, 92,189,217, 32,198,117,125,122,102,137,171,226, 90,208,161, 9,180, 90, 45, 6,189,249,118, 80,150, 33,139,197,130, -188,188, 60,151, 85, 33,208, 17, 44,167, 70, 29,134,205,207,183,198,229, 66, 37,166,237, 46,194,247,135,206, 64, 20, 69,220,217, -178, 53,238, 82,132,227,181, 6, 74, 60,127,250, 2,108, 65,142,213,165,148,122, 21, 86,242,111,185,171,132, 9,172,191, 14, 67, -218, 54,118, 89,153,246,134,247,115, 93, 31, 94,121,196, 21, 39, 47, 44,252, 55, 0,160, 79,251,206, 8,102,156,118, 32,206,194, -194, 66, 99,143,126,189,183, 57,140,150, 47, 70,143, 30,125,126,203,150, 45,234,160,154,115, 94, 4,150,108,165,149,197,149, 32, - 8,176, 88, 44, 65,249,221, 98,177,248,204, 31, 10,133,162,198, 22, 44, 0,168,172,172,180,172, 93,187, 22, 11, 22, 44, 64, 76, - 76, 12, 6, 14, 28,136,132,132, 4,172, 90,181, 10,148, 82,140, 31, 63, 30,106,181, 90,182, 86,179, 4,200,192,112,107,195,159, - 22, 81,101,100,100,204,118, 23, 48,158,130,198, 93, 56,121,136, 40,119,145,150, 22,160,254, 95,239, 41,154,228,239, 18, 66,214, -207,153, 51,103, 72, 0,119,228,123, 10, 44,191,203,236,155,205,230,243,109,219,182, 13, 74, 69, 24, 12,134,156, 64, 34,195, 91, - 43,222,221, 42,160,211,233,160,213,235,192, 5, 89,222,218,108, 54,151, 64,217,180,105, 19,212,106, 53, 6, 15, 30,124, 93, 22, - 44,171,213, 10,165, 66, 4, 87, 39, 30,255,156,187, 5,133,229, 70, 87,197,178,245,220,121, 28,204,205,195,243, 93,251, 65,171, -206, 67,133,197, 18,148,165, 77,146,164,171,196,149, 32, 8, 24, 57,114,164,203,122,224, 62, 46, 5,172,139,240,175,108, 73,121, -253,239,126, 93,242,176, 76, 93, 11,103, 97, 97,161,113,200,144, 33,123, 28, 70,203, 23, 89, 89, 89,123, 0,132,221,126,251,237, - 53, 22, 88,178,176, 18, 69, 17,239,190,251, 46,230,207,159,239,186, 31,172,192,178,219,237,213,132,211,233,211,167,171,125,203, - 83,208,249,235, 30,165, 85,165,164, 4, 64, 74, 73, 73,113,189, 83,183,110, 93, 68, 70, 70, 66,146, 36, 72,146,132,176,176, 48, -168,213,106, 40, 20, 10,150,232, 24, 24, 24,252,105, 17,227,228,201,147, 95, 37,132,172,119, 90,146,142,250, 17, 82,222,208,201, - 67,164,229,251, 40,187,134,120, 19, 89,238,191,101,164,167,167,167,121,113,199, 47, 87, 9, 44, 55,213,120, 21,220,187, 11, 67, - 85,121,249,171,192,116,145,122,168,181, 90,240, 60, 23,112,127, 37,185,139, 80, 46,240,199,141, 27,231,119, 92, 74,176,227,165, -172, 86, 43, 56,129,199,149,186,141,224,224,126,118,189, 43, 31,156, 32,226, 98,221,230,224, 79,252, 10, 49,200,138,214,211,130, - 53,126,252,120,124,252,241,199,224, 56,206, 21, 38,130, 32,160,105,211,166, 56,127,254, 60,203,105, 55,136,184,242,117,221,225, -144,130,182,186,120,123,174,176,176,208, 56, 98,196,136,109,165,165,165, 95,180,106,213,234, 52,170,150, 49,224,130,229, 19, 4, -161,154,176,146,197,213,188,121,243,170,137, 33,155,205, 22, 84, 3,192,102,179, 93, 37,116,222,121,231,157,106,103, 0,232,214, -173, 91, 80,150, 96, 0,148,227, 56,170, 80, 40, 48, 96,192, 0,180,105,211, 6,223,126,251, 45, 36, 73,194, 51,207, 60, 3,181, - 90,141,247,222,123, 15,118,187, 29,111,189,245, 22,179, 96, 49, 48, 48,248,211, 34,230, 57,115,230, 28,157, 51,103,142,203,146, -228,105,193,242,129,187,157, 98, 42, 86, 22,103,168, 26, 75,245,139, 31, 55, 12,241, 37,188,220,175,101,100,100,204,246,226, 14, - 87,183,228,159,190,217,115,206,177, 35,120,187,123, 59, 0,213,187, 5, 23,118,110, 14,173, 78, 11,109,184, 14, 35,214,253, 12, - 0,206,194,126,114, 80, 22, 44, 89, 96, 21, 22, 22,250, 21, 87, 53,177, 96,113, 74, 1,171,147,139, 65,149, 34, 4,139,173,154, -192,226, 5, 17,151, 99, 26,129, 19, 21, 16, 28,246,160, 56, 41,165, 87,117, 9, 62,250,232,163, 32,132,184,102,124,181,109,219, -214,157,139,213, 56,127,118,250,220,255, 9,142,175,121, 26, 0,208,163,178,210, 21, 23,179,218,254, 49,111, 99,238,145,109, 46, -107,227,155,120,241,154, 56, 11, 11, 11,141,183,183, 72,219,163,136,142,248,226,210,165, 75,123, 0,112, 15, 62,248, 96,100,219, -182,109,131,202,147,242,164, 9, 79,113,229,110,185,146,207, 54,155, 45, 40,191,203, 99,161, 2, 65,238, 46, 12,148,230, 41,165, - 52, 58, 58, 26, 28,199, 65,175,215, 67,167,211,185,102,208,134,133,133, 65,163,209,184,198,111, 6, 41,216, 24, 24, 24,110, 93, - 68,201, 2,199, 41,146,170, 89,150, 40,165, 67,220, 69,144,175,174, 66,167,197,105,123,128,111,125,239, 20,102, 94, 33, 91,210, - 60,202,228,245,158,226, 76,144, 21,163,251, 57, 33, 33,225,191, 58,157,174, 81,176,190,174,201,162,163, 14,155,245, 42, 75, 22, - 33, 4,186,112, 29,212, 58, 45,212,225, 58,159, 86, 46,127, 2, 75,182, 12,201,149,205,226,197,139,161,211,233,240,216, 99,143, -213,120, 12,150, 75, 96, 41, 56,108, 84,253, 4, 94, 41, 84, 19, 87,130, 32,128, 23, 69,228,232, 18,192,137, 34, 4,123,112, 86, -177,210,210, 82, 8,130,128,169, 83,167,186, 90,236,238,226,170, 38,126,102,168,165,214,147,195,118,149,213,201,151,181,245, 90, - 57,101,203,149, 34, 58,226,139,230,205,155,187, 44, 87, 26,141, 70,158, 61, 26, 16, 28,199,121, 21, 87,158, 51,254, 4, 65,168, - 74,203, 1,102, 59,186, 91,176,230,204,153,227,226,117,183, 92,201,168, 73, 62,146,221,186,109,219, 54, 28, 60,120, 16,227,198, -141,131, 90,173,198,252,249,243, 97,183,219, 49, 99,198, 12,168,213,106, 40,149, 74,150,248, 24, 24,152,245,202,223,190,162,249, - 30,227,156,136,135,165, 41,223,155,176,114,239, 14,116,251,109,243,194,107,241,232, 58,244,188, 46,159, 11,231,204,153,179, 69, -182, 92,185, 93,175,230, 14,159, 22, 44,149, 74,213,232,212,169, 83,174, 69, 70,253,157, 45, 22, 11,250,244,233, 19,180, 37, 76, -158, 69, 40, 8,124, 53, 65,161, 9,215, 65,163, 15,135, 90,167,243, 20, 26, 36, 80,225, 45,183,128,221, 5,214, 27,111,188, 1, - 65, 16,240,241,199, 31, 3, 0, 94,124,241,197,160,199, 96,201,156,112, 16,100,210,179,104, 55,119, 56, 44, 95,218,144,187,243, - 55, 8,130,128,184, 46,119, 65,186,125, 56, 12,106, 29, 4,135, 61,232, 89,132, 69, 69, 69, 56,127,254, 60,120,158,199,164, 73, -147,170,173, 85,228, 57, 51,109,211,166, 77,204,130,245, 87,100,112,201, 30,148,152,170,137,149,209,157, 83, 30,115, 85, 90, 90, -250,197,165, 75,151,246, 2,224, 70,143, 30, 29,169,209,104,240,233,167,159, 26, 0, 40, 87,173, 90,165, 14, 36,134,228,116, 19, - 72, 92,137,162, 88,149,150,131, 43,220,170, 53, 34, 2, 13,120, 15, 38,205,203,110, 37,132,192,225,112, 64,173, 86, 87,179, 92, -133,133,133, 65,165, 82,177,132,199,192,192, 16, 8,191,212,224,217, 78,110, 98,233,151,107,228,253,229,122, 29, 44,248, 18, 24, -102,179, 25,191,255,254,123,176, 60, 65, 47, 58, 90,175, 99,103,188,153, 85, 10, 66, 8, 62,234,214, 10, 90,189, 14, 26,173, 22, - 15,124,187,205, 85, 96, 31,153,253, 34, 84, 90, 29, 18,123, 14, 12,170, 0,151,187, 8,221, 5, 86, 73, 73, 9, 68, 81,196,204, -153, 51,193,113, 28,222,122,235, 45, 36, 37, 37,225,202,149, 43, 88,181,106, 85, 80, 22, 44,222,193, 35,225,145, 22,208, 60, 26, - 1,253, 35,119, 32,106,192, 27,200,178, 8,216,101,210,224, 14,211, 49, 40, 55,206,131, 69,114, 4, 61,163,202,110,183, 99,219, -182,109,158, 3,217, 65, 41,117,173,146,111,179,217, 96,181, 90,241,214, 91,111,129,237, 36,242,231, 35,161,203,120,196,118, 28, - 11, 0, 88, 55,103,140,235,250,212, 35,127,164,207,119,191,172, 90,176,191,121,195,129, 53,226, 44, 44, 44, 52,222,217,167,219, -118,147, 36,126,222,186,117,235,106,150,171,176,176, 48,226,252, 31,148,168,230, 56, 14, 60,207, 95,213, 45,232, 75,100, 5, 51, - 6,203,110,183,187, 22, 0,245, 55, 94,241, 90, 44, 88, 99,198,140, 65, 66, 66,130,203,114,245,230,155,111, 66,173, 86, 35, 61, - 61, 29, 54,155, 13,243,230,205, 99,137,143,129,129,225,175, 16, 99,181, 6,175, 37,168,201,100,186,208,166, 77, 27,248,184,151, - 20, 22, 22, 38,122, 20,206,137,169,169,169, 39, 61,187, 10, 9, 33,253, 41,165,155,189, 21,230,132, 16,132,235,195, 17,166,211, - 66,227, 97,181, 10, 11,215, 67,165,211,129, 83,136,222, 42,130,171, 56,229,177, 35,238, 2, 75, 62, 74, 75, 75, 33,138, 34, 22, - 44, 88, 0,189, 94, 15,179,217, 28,144, 83,174,108,120,158,135,225,114, 57,142,207,222, 12,101,216, 46, 52, 25,248, 16, 18, 68, - 53, 20, 59,190,134,209, 97,243,187,208,168, 55,206,212,212, 84,188,254,250,235, 87, 45,207,224, 11, 73, 73, 73, 1,253,126,189, - 96,156,222, 57,253,205,114,149, 33, 81,135,183,231,188,114,202,150, 43,147, 36,126,126,254,252,121,217,114, 21,161,209,104,240, -225,135, 31, 26, 0,112, 51,102,204,208, 52,104,208,128, 15, 38, 45,241, 60,143,185,115,231,122, 29,115,229, 77,108,213, 36, 31, -185,191,219,171, 87, 47,175, 11,141,122, 19,109,222, 56,101,183,198,196,196,184, 44, 87, 14,135,195, 53,123, 80, 94, 45,222, 87, - 99,130,165, 79,198,201, 56,111, 29,206,155, 13, 94,107,247,236,236,236, 59,125,189,208,164, 73,147, 83,167, 78,157,106, 42,111, -153,225, 44, 48, 21, 38,147, 41,181, 91,183,110, 1, 77, 57,146, 36, 65,165, 82,129, 82,138,190,175,103,128,112, 0,135,234,149, - 87, 92,247,126,224,121, 1, 82,213,150, 28, 1,103, 17, 26,141,198,106,149,130,183,163,162,162, 2,102,179, 57,232,213,183, 77, - 38, 83,181,165, 20, 8,149,112,241,127, 43,175,154, 77, 40, 31,193,142,203, 9, 11, 11,171,214,197,227, 15,129,214, 20, 99, 8, - 61,228,137, 8, 0,208,172,219, 96, 72,146, 3,212,225,168,182,157, 81,139, 70,119, 66,162, 14, 88,109, 6,152,205,230, 64,102, - 70, 82, 80, 80, 96, 28, 49, 98,196, 54, 0,159,221,119,223,125, 39, 81, 53,131,133,234,116, 58,149, 40,138, 18,128, 34, 0,180, -184,184, 56, 34, 43, 43, 75, 50,153, 76,245, 3,185,243,251,239,191,199,239,191,255,142,158, 61,123, 86,219,182, 73,182,130,186, -175,198, 30, 76,250,148,187,197,189,173,224,238, 75,192, 5, 11,158,231, 17, 17, 17, 1,133, 66,129,153, 51,103, 66,161, 80, 64, -163,209, 0, 0,230,205,155,231, 90, 52,149,129,129,129,225,166, 23, 88,129,202, 75, 63,221,135,126,187, 10,237,118,123,102,131, - 6, 13,106,244, 49,135,195,145, 27, 64,176,101,174, 90,181, 74,225,110,117, 8,116,166,148,230, 6,168,100, 51,215,173, 91,167, -240,102,205,240,181,241,115, 32, 78,135,195,145,217,176, 97, 67,159, 22, 18,111,176,217,108, 89, 44,137,254,121,112, 56, 28,126, -210,231,148,107, 77,159,167,155, 53,107,150, 21, 25, 25,249, 67,124,124,124,225,206,157, 59, 99, 58,117,234, 20,227,254, 76,167, - 78,157, 18, 60, 94,179,192,247, 62,132, 32,132,100,222,119,223,125, 94,211,188, 44,150,188,164,207,204, 64,105,126,223,190,125, - 10,247,247,125,241,187,229,163,204, 32, 4,235,197,118,237,218,113,238, 60,190,210,190,205,102,203,103,169,144,129,129,225,150, - 21, 88, 70,163,241,114,155, 54,109,236, 62,238, 93,242,247,110, 65, 65, 65,199, 80,123,192,106,181,118,251, 59,112,230,231,231, -119,100,201,237,198, 70,109,196, 81,110,110,238,237,161,230,180,219,237, 33, 79,159, 54,155,173, 91,109,132,105, 97, 97, 97, 87, -150,178, 24, 24, 24,152,192, 10, 2,193, 46,199,192,192,192,192,192,192,192,192,112,171,130, 99, 65,192,192,192,192,192,192,192, -192, 16, 90, 16, 84,237, 26,125, 21,106, 50, 59,128, 16,210,191,166, 31, 14,196,207, 56, 25, 39,227,100,156,140,147,113, 50,206, -155,143, 51, 16,247, 77, 51, 59, 81,158, 29, 85, 27, 7,128,254,140,147,113, 50, 78,198,201, 56, 25, 39,227,100,156,183,218,193, -186, 8, 25, 24, 24, 24, 24, 24, 24, 24, 66, 12,129, 5,193, 95, 3, 66, 8, 79, 41,117,132,144, 50, 10,128,175, 13,221, 44, 0, -138,175,197,153, 0, 20,206, 67, 94,168,200, 6,192,234, 60,130, 88,106,126, 58,151,157, 29,149, 70, 29, 98, 39, 74,136, 40, 73, - 56, 84,191,126,189, 95,129, 59, 45, 0,160,171,219,178,165, 78,171,238,111,182, 90, 26,169, 68,229,239, 37,149, 21,155, 76,185, - 39, 47,176, 20,194,192,240,151,148, 75,247, 0,152,238,204,251,115, 40,165, 43, 89,168, 48, 48,132, 88, 96,133,135,135,239,231, - 56, 46, 57,208,250, 58,110, 25, 19, 14,135, 35,179,168,168,168, 99,144, 25, 89, 0, 48, 66,167,211,245, 17, 69,177, 59, 0,216, -108,182,157, 21, 21, 21, 91, 0,172,162,148,218,175,177,128,208, 3, 24, 9,224, 97,231,165,175, 0,172,164,148,150, 93, 35, 95, -155,136,136,136, 53,162, 40,210,130,130,130, 46, 0, 16, 19, 19,179,199,102,179,145,178,178,178, 7, 40,165,135,107,200,199, 41, - 20,138,140,158, 61,123,246, 32,132, 44,161,148, 46, 12, 81, 92,170, 56,142,243, 42, 76, 36, 73,106,120, 13,124, 10, 0, 17, 11, - 22, 44,136, 89,186,116,105,187,204,204,204,214, 0,144,156,156,124,100,244,232,209,191, 78,152, 48,161, 16, 64,169, 83,104,249, - 68,118,118, 84, 90, 94,206,185,113,185,121,191,143, 4,128,186, 9,173, 87,242, 60,167, 72, 74, 58,184, 91, 83,231,225, 58,205, -154, 55, 30,187,252,211, 5,138,134,141,234,225,167, 93, 7,111,155,240,236,171,105, 97,241,205,254,195, 68,214,159, 7,189, 94, -191,159,227,184,100,127,121,220, 91,158,119, 56, 28,153,133,133,133, 29,125,113, 10,130,144,236,175,188,240,118, 77,146,164,115, -249,249,249, 94,151,140,136,136,136,216, 45, 8, 66,163, 96,185,228,179,221,110,207,244,181, 68, 76, 68, 68,196,126,158,231,147, -253,249,211,219, 61, 73,146,206,229,229,229,249,114,231, 85,126, 15,133, 59,175,133,211,159, 59,229,242, 8,192,188,152,152,152, -206,133,133,133,255, 0,240,106, 89, 89, 89, 91,158,231, 17, 29, 29,253, 42, 33,228, 76, 68, 68,196, 39,165,165,165,187, 0, 60, - 75, 41,149, 88,142, 97, 96,184, 78,129,197,113, 92,114, 86, 86, 86,156, 86,171, 5,240,199,126,121,242, 38,207,146, 36,129, 82, -234, 58,219,237,118,180,104,209, 34, 88,145,209, 90,175,215,175, 78, 79, 79,175, 63, 98,196, 8,165,188, 37, 76,118,118,118,234, -154, 53,107,254, 49,115,230,204, 55, 8, 33,195, 41,165, 71,130, 21, 45, 0,250, 1,120,180, 93,187,118,195,222,124,243, 77, 69, -223,190,125,225,112, 56,240,195, 15, 63,244,156, 49, 99,198, 2, 66,200,215, 0,190, 0,240,191, 96, 11, 9, 66, 72,143,186,117, -235, 46,219,177, 99, 71,194,249,243,231, 29, 35, 70,140, 88, 1, 0,251,247,239, 79,113, 56, 28,164, 75,151, 46,223, 19, 66, 70, - 81, 74,119,212, 32,204,239,155, 48, 97,194,240,241,227,199,199, 62,246,216, 99,143, 0, 88,232,252,150,188,139,120, 77, 55, 32, -116, 89,174, 40,165, 10, 63,207,213,173,129, 37, 75,123,254,252,249,168,110,221,186, 61,157,151,151,247,188, 59,111,110,110, 46, - 14, 28, 56, 96,157, 61,123,246,220, 93,187,118,125,208,168, 81,163, 98, 0,149,190,136,168, 67,236,148,155,247,251,200, 59,186, - 46,136, 0,128, 85,235,158,126,104,223,175,249,225,235,127, 92,244, 15,101,152,194,188,244,163,185,138,166, 77, 26, 98,235,254, -211,216,251,123, 17,105,221, 99,136, 80,186,126,201, 0, 0,139, 88,246,252,115,192,243,124, 82,102,102,102,156, 70,163,241,186, -161,187,199,184, 11,121,225, 82,164,166,166,250, 46, 88, 4, 33, 57, 43, 43, 43, 46, 44, 44,204, 85,118,120,150, 25,114,185,226, - 74, 43,148,162, 89,179,102, 86, 63,101, 82,131, 75,151, 46,197,105, 52, 26, 23,143, 55,247,121, 10,141,102,205,154,249,243,123, - 53,119, 6,195, 73, 41, 69,211,166, 77, 29,129,252, 46,239, 88, 17,200,223, 50,103,163, 70,141,104, 77, 56,131,113,103,227,198, -141,173, 1,162,127,222,201,147, 39,199,215,171, 87, 15, 77,155, 54,221,213,185,115,103,189, 86,171,197,143, 63,254,136,150, 45, - 91,166,233,245,250,189,171, 86,173, 18, 95,126,249,229,219, 62,255,252,115, 0,152,192,114, 12, 3,195,117, 10, 44, 66, 8,180, - 90, 45, 86,172, 88,225,115,219, 12,247,223,245,235,215, 15,234,131,132,144,142,141, 26, 53,218,182, 99,199, 14,117, 66,194, 31, - 11, 88, 91, 44, 22, 68, 69, 69,225,153,103,158, 81,222,115,207, 61, 77, 7, 14, 28,184,135, 16,210,139, 82,186, 63, 0,223,176, -216,216,216,247,167, 78,157, 26,255,224,131, 15, 34, 38,166,218, 34,217, 24, 49, 98, 4, 30,120,224, 1,197,201,147, 39, 31, 90, -188,120,241, 67, 11, 23, 46,204, 33,132, 76,160,148,126,237,143, 87,163,209,220,215,164, 73,147, 15,119,236,216, 17, 23, 23, 23, -135,148,148, 20,238,229,151, 95,110,154,154,154,170, 78, 78, 78,230,174, 92,185,130,111,191,253, 54,105,212,168, 81,171,149, 74, -229, 88,139,197,178, 54, 8,191, 43,163,163,163, 95,122,234,169,167, 98,202,202,202,236, 7, 15, 30, 60, 45, 95, 87,169, 84,175, -119,233,210,165, 61, 33,100, 5,165,244,139,107,177, 92, 57,173,116,158,123,142,216,228,251, 65, 90,178,148,135, 14, 29,138,238, -218,181,235,215,102,179,185,253,184,113,227, 46,205,158, 61, 91,173,215,235,245, 0, 72, 89, 89, 89,241,244,233,211, 45,239,189, -247,222, 43, 45, 91,182,236,183,123,247,238, 97,183,221,118,155,205, 41,222,174, 22, 88,132,184,220,115, 57, 43, 31,219,118, 73, -202,215,211, 95, 76,254,247,172, 70, 23,127, 57,118, 89, 18,212,122,124,183,253, 40,114, 11, 43,240,223,221,199, 80, 55, 38,156, - 40, 84, 98, 90,100,114, 90,175,210,172, 99,219, 41,219,241,186,214, 65, 8,129, 70,163,193,119,223,125,119,213, 22, 83,222,182, -159, 18, 4, 1,145,145,145, 1,119, 35, 8, 11, 11,195,166, 77,155,188,238,141,232,109,235,157,136,136, 8,192,207,102,215,132, - 16,132,133,133, 97,231,206,157,224, 56,206,235, 22, 62,158,215,180, 90, 45, 56, 63,123, 82,201,156,219,183,111, 15,200, 37,159, -117, 58, 29, 0,240,126, 51,165, 74,133, 29, 59,118,248,244,179,231,111,157,115, 63,214, 64,156, 59,119,238,172,182, 69,151,231, -214, 93,238,255,181, 90,173,171,225,230,179,117, 22, 21,213, 37, 57, 57, 25,251,246,237,195,170, 85,171,162,211,210,210,112,250, -244,105, 16, 66, 48,123,246,108,210,170, 85, 43, 49, 39, 39, 7, 61,123,246,196, 55,223,124,211,141,229, 22,134,191, 16, 34,128, -219, 0,196,162,106,215,152,114, 0,145,206,186, 71, 9,160, 16,128,218,121,152, 1, 84, 0,168,227,124,183,192, 89,182,184, 11, -132,124, 84,223, 20,186,147,147, 91,222, 81, 34,214,237,158,252, 13,207,255,158,231,106,220,130,179,144,145, 43,177,222,148,210, -109,213,124, 20,132,184,146,247, 17,243,204,203, 94, 54,126, 85,105,181,218, 53,123,246,236, 81,199,198,254,225,118,179,217,140, -242,242,114, 84, 84, 84,160,188,188, 28,225,225,225, 88,181,106,149,186, 95,191,126,107, 8, 33,169,148, 82,179, 47, 78, 0,115, -175, 92,185, 18,111,183,219,161, 84, 42,125,181,124,209,162, 69, 11,188,250,234,171, 24, 52,104, 80,221, 62,125,250,204, 5,240, -181, 31, 78,104, 52,154, 15, 15, 28, 56, 16,167,209,104,112,234,212, 41,100,102,102,226,133, 23, 94,168, 39, 73, 18, 46, 95,190, -140,211,167, 79, 35, 43, 43, 11,139, 23, 47,142, 27, 58,116,232,135, 0,214,250,243,187, 19, 79, 78,154, 52, 41, 53, 58, 58,154, -123,251,237,183, 75, 43, 42, 42, 62,114, 94, 79,159, 55,111,222,168, 59,238,184, 35,246,137, 39,158, 0, 33,100, 57,165,244, 42, -193,226,193,233,205,114,229, 0,112,220,227,181, 22, 30,150,173,186,206,196, 87,226,133,147, 0,136, 24, 56,112,224, 36,179,217, -220,126,199,142, 29,103,186,119,239,222, 0,192, 21, 57,209, 69, 68, 68,104,231,206,157, 27, 63,100,200,144,147,125,251,246,109, - 63,112,224,192, 73,249,249,249,179,157,247,169, 39,167, 36,225, 80,221,132,214, 43,183,239,158, 48,114,235, 78,139,226,197,103, -223,184, 84,191, 94,195,210, 67,167,138, 28,199,206,229,163,220,104,199,253,125,171, 54, 22,239,210,186, 62,222, 95,177, 3,207, - 60, 55, 69,252,122,229,146, 7,206, 80,104, 1,124,239, 39, 60,175, 11,140,243, 15,145, 33, 73, 18, 68, 81,196, 93,119,221, 5, - 66,200, 85,123,109,138,162,136,221,187,119,163,111,223,190, 16, 69, 17, 99,198,140, 9,138, 83, 16, 4, 12, 28, 56,208,181,207, -161, 59,159,167, 88,240,166, 5, 60,253, 78, 41,133, 32, 8,224, 56,206,231, 6,215,158,156,129,202, 37,217,157,254,184,220,239, - 5,114,167,108, 61, 10, 86, 92, 5,203, 41,187, 83, 16, 4,116,235,214, 13,191,254,250,171, 95,177,229, 77, 87,122,250,189,184, -184,248,159,169,169,169,219, 23, 44, 88, 16, 13, 0,133,133,133,174,141,232,121,158,199,137, 19, 39, 96,177, 88, 48,109,218, 52, -107, 89, 89,217, 19, 44, 31, 49,206,218,228,244,167, 69, 0,220,145,158,158,222, 49, 35, 35, 99,118,215,174, 93,151,239,218,181, -107, 25, 33,100, 61,165,116,136,124, 78, 79, 79, 79,203,200,200,152, 61,121,242,228, 87,231,204,153,115,148, 16,178, 30, 0, 60, -255, 59,221, 63,196, 67,188,197,202, 60, 78,183, 84,123,214,219,127,207,179, 39,183,224,118,129, 56, 61, 71,220, 11,179, 96, 5, - 86, 48,123,235, 9,130, 48,126,246,236,217,241,254,196, 85, 69, 69, 5,178,179,179,209,160, 65, 3,140, 25, 51, 38,126,193,130, - 5,227, 1,188,227,135, 86,193,243, 60,246,237,219,135,188,188, 60,180,105,211, 6,141, 26, 53,170,246,192,217,179,103,241,195, - 15, 63,160,164,164, 4, 29, 58,116, 0,170,198, 23,121,197,109,183,221, 54,173, 69,139, 22, 3, 7, 14, 28,104, 87,171,213, 56, -116,232, 16,218,183,111,143, 21, 43, 86,160,126,253,250,208,104, 52, 56,121,242, 36,218,180,105,131,109,219,182, 33, 54, 54, 22, -237,218,181,179,119,232,208,225,231,162,162,162, 45, 23, 46, 92,152,230, 35,225, 40,146,146,146, 94,125,234,169,167,148,217,217, -217,210,226,197,139,119, 81, 74,119, 17, 66,198, 78,153, 50,229,145, 65,131, 6,197, 30, 60,120,176,236,151, 95,126,249,197,155, -184, 10,210,114,101,247,172,140, 28, 14,135,217,104, 52, 90,204,102,179,141,227,184, 11,132, 16,139,195,225,240,213,183, 19,246, -232,163,143, 54, 46, 40, 40,120,230,185,231,158, 59,239, 20, 87, 39, 80, 53,176, 29, 0, 96,183,219,205, 21, 21, 21,101, 93,187, -118,109, 48,106,212,168, 51,203,150, 45,123,230,209, 71, 31, 93,245,197, 23, 95, 84, 0, 48,122, 18,214,175, 95,239, 87,158,231, - 20,149,229,209,231, 86,175,250,228,249, 31,214,141,175,119,249,114, 86,211,152, 58,177,149, 10, 93,108,246,170,175, 62,223, 15, -192,146,157, 95,134,195,103,115, 32,138, 60,126,191, 92,138, 59,238, 28, 33,158, 57, 53,171,135, 44,176, 24,106, 21, 84,222, 28, -122,235,214,173,126, 45, 88,187,119,239,134, 40,138, 80,171,213,120,239,189,247,252,146,202,130, 64,182, 14, 5, 18, 49, 28,199, -249, 45, 71,100,145, 33,111,192,238,121,252,223,255,253, 31,158,123,238,185,106,223,112,138, 12, 18,136,211,151,251, 26, 52,108, -136,188,220,220,106,215,130,217, 44,222,225,112, 64, 20, 69,124,252,241,199, 24, 50,100, 8,214,175, 95,239,247,124,215, 93,119, -129,227, 56, 26, 76,120,118,235,214, 13, 86,171,213,229,230, 19, 39, 78,120,229, 93,184,112, 97,160,202,236, 30, 0,211,219,183, -111,175,239,211,167, 15,182,111,223,142, 7, 30,120,192,108,181, 90, 79, 1,192,221,119,223,221,108,193,130, 5,202, 3, 7, 14, - 32, 38, 38, 70,188,116,233,210,103,132, 16, 54,240,157,161,118, 11, 35, 47, 90, 68,174,243, 50, 50, 50,102,123, 8,163,106,144, -239, 19, 66,214,207,153, 51,103,136,187, 24,114,255,239,102,101,114, 23,111,105,238, 22, 40,119,241,228, 67,148,121,186,219,253, -249,252,106, 2,203,233,161,222,238, 86, 31,185,208, 13, 36,174,124,181, 20, 61, 17, 17, 17, 49,248,254,251,239,119,137, 27,147, -201,228, 18, 86,178,184,146,255,159, 60,121, 18, 29, 59,118, 84, 68, 68, 68, 12, 14, 32,176,100,241,134,196,196, 68, 20, 20, 20, -224,200,145, 35,104,208,160, 1,108, 54, 27, 54,108,216,128,210,210, 82,136,162, 8,133, 66, 1,171,213,255,144,132, 22, 45, 90, -220,181,116,233,210,142, 75,150, 44, 41,150, 91,112, 95,125,245, 21, 40,165,136,141,141,133,193, 96, 64,110,110, 46,182,108,217, - 2,187,221, 14,157, 78,135,148,148, 20,229,125,247,221,215, 99,250,244,233, 34,128,105, 62,168, 59, 63,240,192, 3,122,189, 94, -143,103,159,125,150, 90,173,214,119, 8, 33, 93,134, 13, 27,246,234,132, 9, 19,162, 47, 92,184, 96,121,242,201, 39,247, 91,173, -214,185,206,248, 16, 41,165,182, 0, 9,209,167,229,202,102,179,201, 97,122,190,162,162, 2,117,234,212,105, 16, 96,140, 22, 0, - 40,118,238,220,217, 13, 0, 63, 99,198,140, 48, 0,185,238,226,202, 98,177,160,162,162, 2,149,149,149,182,210,210,210,188,151, - 94,122,201,190,108,217, 50,222,249,206,239,222, 4, 22,112,167,165, 85, 43,173,146, 82,126,202,162, 69,139,116,131, 6, 13,226, -116, 58, 29,202,203,203,245,255,253,241, 71, 93,191, 62, 61, 82,102,103,252,123,163, 62,185, 77,238,206, 67,231,144,149, 83, 10, -139,205,134,148,132,136, 42,251, 23, 67,173,195, 57, 65,197,101,193,114, 23, 19,219,183,111,199,157,119,222,233,202,235, 10,133, -162,154,165, 43, 16,167, 32, 8,184,243,206, 59,175,178,232,108,221,186,213,171,181, 41, 16,220,197,144,167, 40,242, 38,188, 56, -142, 67,160, 94,102,217,122,231, 77,100,185, 91,241, 61, 68, 91,160, 74, 2,130, 32, 96,194,132, 9, 16, 69, 17, 47,191,252, 50, - 4, 65, 64,187,118,237, 32, 8, 2,186,118,237, 10, 81, 20,209,183,111,223, 26,251,125,207,158, 61,104,223,190,189,203, 77,237, -218,181, 67,167, 78,157, 32, 8, 2,122,246,236, 9, 81, 20, 49,112,224,192, 96, 56, 95, 45, 47, 47,111,171,211,233,112,242,228, - 73,240, 60, 15, 66,200,105, 74,105, 91, 0,120,234,169,167,206, 24, 12,134,198, 38,147, 9, 79, 61,245, 20,177, 88, 44,109, 94, -126,249,229, 41, 0,152,192, 98,168,205,242,168,154, 22,113,131,113,242,228,201,175, 18, 66,214,203, 22, 41, 79, 75,147,183,255, - 94,248,101, 17, 36,119, 15,118,242, 16,111,114,215,225,221,126,222,181,120, 8, 42,207, 46,194, 95, 2, 90,176,228, 66, 55, 88, -129, 21, 8, 38,147,233,182,184,184, 56,159,226,202,253,108,177, 88,208,168, 81, 35,152, 76,166,219,106, 90, 89, 36, 36, 36,192, -106,181,226,147, 79, 62,129, 66,161,128, 66,241,135,174,176, 88,252, 27,135,142, 29, 59,118,126,207,158, 61,237, 59,116,232, 16, -245,205, 55,223,228,247,234,213, 43,118,208,160, 65, 80,171,213, 48, 26,141,176,217,108,232,210,165, 11, 90,180,104,129,204,204, - 76,252,247,191,255, 45, 72, 77, 77,173,179,119,239, 94, 41, 39, 39,231,162, 31,234,126,253,250,245, 3, 33, 4,255,253,239,127, - 11, 41,165, 7,212,106,245, 55,179,103,207,142,180, 88, 44,210, 35,143, 60,114,185,168,168,232, 37, 0, 54,149, 74,245,206,160, - 65,131, 58,243, 60,191,194,225,112,188, 95,211, 4,234, 25,182,149,149,149, 8, 11, 11, 11,102, 73, 8,177,168,168,168, 53, 0, -104,181,218,104, 0,103, 92, 41,219,104,172, 38,130, 45, 22,139, 41, 58, 58, 90, 11, 0,206,119, 68, 31,241, 17,171,209,104, 86, - 95,188,120, 46,220,125,124, 92,100,100, 36, 30, 30, 53,138,235,222,173, 49, 12, 58,250, 0, 0, 32, 0, 73, 68, 65, 84,155,178, -237,109,183, 13,124,237, 63, 75, 86, 36,198,232, 45, 41,137, 49,176, 57,108,216,188,113,131, 68, 37,219, 70, 86,220,252, 57, 2, - 75, 22, 25,158, 22, 44, 81, 20,177,109,219,182,171,174, 41, 20, 10,124,244,209, 71, 65, 9, 2, 89, 76,249,234, 34,243,232,210, - 34,129,132,139, 40,138,224,121, 30, 31,127,252, 49, 36, 73,194,243,207, 63, 95,173,219,208,157, 63,200, 22,179,235,157, 22,111, - 72, 0, 44,200,124, 87,229,122,223,211,189,114,121, 25,140, 85,108,193,130, 5, 65, 89,176,238,190,251,238,128,130,213,189, 71, -193,221, 93,191,254,250,171, 87,222, 69,139, 22, 5, 12, 79,135,195,129,239,191,255,222, 37, 78,101, 76,157, 58,245,169,228,228, -228,248,159,127,254, 25, 57, 57, 57,168,172,172, 68, 69, 69, 5,186,116,233,146,210,191,127,255, 67, 57, 57, 57, 23,142, 29, 59, -118, 63,203, 61, 12,127,162, 5,203, 60,103,206,156,163,115,230,204,241,106,161,242,180, 36,249,179, 52,185, 9,171, 95,224,236, - 26,156, 60,121,242,171,168, 26, 62,243, 75, 16,239, 42, 61,187, 8,189, 26,126, 60, 84,227,116,111,133,110, 48,221,132, 65,154, -205, 5, 66, 8, 76, 38,147, 87, 97,229, 46, 10,172, 86, 43,138,138,138,224,112, 56,132,235,136,168,171,174, 5, 18, 88, 71,142, - 28,121,236,241,199, 31,207,142,136,136,104,155,159,159,159, 39, 73, 82,223,221,187,119,199, 10,130, 0,189, 94, 15,189, 94,143, - 31,126,248, 1, 26,141, 6, 19, 38, 76,200,115, 56, 28,219,195,195,195, 99,140, 70,227,111, 57, 57, 57,175,249, 84, 46,162,216, -239,142, 59,238,192,129, 3, 7, 80, 82, 82,242, 19, 33,164,237, 19, 79, 60, 49,160, 94,189,122,100,214,172, 89,166, 51,103,206, -252, 31,128,124,173, 86,251,201,210,165, 75,123,117,232,208, 65, 55,122,244,104, 16, 66, 62,165,148,154,130,245,115,101,101,101, - 53, 97, 85, 86, 86,134,242,242,114,104,181, 90,123,144, 97, 38,162,106, 44,149, 60,158,202, 21, 55, 78,235,149, 28, 63, 84, 16, - 4, 90,245, 8, 21,125,241,105,181,218, 25, 75,150, 44, 81,123, 78, 62,112, 56, 28,200,205,205,133, 94,175,199,212,215, 94, 83, -188,249,194, 19,237,121, 93,252,110,142, 35,176, 88,105, 9,149, 44, 27, 42,115, 31,252,153, 21, 55,127, 14,100, 65,112,239,189, -247, 94,213, 45,168, 80, 40,176,105,211, 38, 12, 29, 58,212,213, 96,233,208,161, 67,192, 70,149, 44, 8,238,185,231, 30,151, 37, -104,195,134, 13, 94,187,247,100, 11, 84, 48, 66, 80,126,118,226,196,137, 16, 4, 1,239,191,255, 62, 38, 77,154, 4,142,227,240, -238,187,239,130,227, 56,188,254,250,235, 65,139, 75,119,225,114,225,223, 85,231,228, 73,101, 40, 92, 24, 15, 0, 8,215,235,101, - 15,213,168,236, 17, 4,193,101,185,186,237,182,219, 32,138, 34,186,118,237, 10, 65, 16, 92,150,171,193,131, 7,187,135, 35, 13, -134, 83, 16, 4,156, 58,117,202,229,230,174, 93,187, 86,179, 92, 9,130,128,187,239,190, 59, 24,103,206,142,140,140,156,222,162, - 69,139,150,115,231,206, 21,121,158, 71,191,126,253,154, 61,249,228,147, 23, 99, 98, 98, 98,102,204,152,161,241,242,142, 26, 64, -219,150, 45, 91,106, 89,174, 97,168, 69, 11,214,116, 47,183,162,220,199, 84,213,128,111,189,251,243, 50,135,167, 40,114, 90,196, -182, 7,226,242,246,174, 47, 8,254, 90, 99, 53, 17, 88, 78,243,178,223,143,105, 52,154,195,121,121,121, 93,213,106,117, 53,113, -229, 77,104,241, 60,143,156,156, 28,104, 52,154,195,161,140,188, 64, 93,132, 78, 49,243,130, 91,128,246, 31, 60,120,240, 23,155, - 54,109, 74,216,188,121, 51,246,238,221,139,216,216, 88, 44, 88,176,224, 74,110,110,238, 99,148,210, 77,193,124,183,113,227,198, -173,180, 90, 45,118,237,218, 5, 0, 63, 3,120,244,153,103,158, 33,118,187, 29, 31,124,240,129, 1,192,166,136,136,136,175,215, -172, 89,115, 91,155, 54,109,148,155, 55,111, 46,223,187,119,239,214, 32,197,149, 67,146,164,171,132,149,123,152,134,135,135, 7, - 99,193,178, 69, 68, 68, 28, 41, 43, 43, 27, 97, 52, 26,203, 84, 42, 85,120, 89, 89,153,217, 93, 88,201,252,130, 32,136,167, 78, -157,202, 6,144, 18, 17, 17,113, 4,110, 93,137,213, 18,152, 32,244,235,215,175,159,224, 25, 7,185,185,185,200,201,201,129,213, -106, 69,135, 14, 29, 8, 79,108,124,209,165,223,158, 98,197,203, 95, 83,160,201,121, 93,158,245,231,109,230,224,134, 13, 27, 92, -255, 57,142,131,115,218,126, 64, 49,180,105,211, 38,191, 3,209, 61,186, 8, 3,154,194,229,231, 63,248,224,131,170,237, 40,156, -150, 43,142,227, 48,121,242,100,168, 84, 42,204,154, 53, 11,147, 39, 79,134, 32, 8, 1,187, 8,221,133, 75,195,151, 13,238,141, -162,170, 76,225, 28,239, 68, 8,113, 23, 89, 36, 88,209,230,207,122, 23,140,229,223,157, 83,126, 47, 44, 44,204,231, 0,119, 15, - 78,226,199,223,223, 17, 66,206, 37, 36, 36,236,236,218,181,107,196,254,253,251,241,238,187,239, 42,204,102,115,253,205,155, 55, -187,190,235, 45,188, 42, 43, 43,213, 44,231, 48,212,134,245,202,207,237,124,143,241, 83,196,189,187,206,207,217,243,121,184, 93, -115,231,205,247,168,199,220,175,123,138, 42,207,111,184, 63,147,127,149, 5, 43, 80, 33, 17, 72,104, 5, 99,193, 50, 24, 12,255, -251,241,199, 31, 59,141, 26, 53, 74,240,215, 61, 88, 89, 89,137,248,248,120, 28, 61,122,212,110, 48, 24,254, 23,132,101, 44,100, - 2,203, 75,132,111,174, 91,183, 46,111,179,217,208,180,105, 83, 36, 37, 37,193,100, 50,161,164,164,132, 15, 86, 92, 17, 66, 20, - 29, 59,118,228, 1,160,184,184, 24,168,154, 78,154,154,154,154,138, 3, 7, 14,160,184,184,120, 45,128,254,111,190,249,102,187, -206,157, 59, 43, 86,172, 88, 97, 24, 55,110,220, 90,155,205, 54, 43, 72,235,131,197,110,183, 55,226, 56,206, 90, 82, 82,146,229, - 30,158,241,241,241,209, 90,173,150,228,230,230,218,130, 17, 88,109,219,182,221,119,233,210, 37,204,152, 49, 35,127,246,236,217, -169,229,229,229,197,165,165,165,118,119,145,101, 50,153,184, 58,117,234,168, 22, 46, 92,168, 6,128,182,109,219,238,243, 37,176, - 42, 43, 43,235,105, 52,127, 52,132,205,102, 51,114,114,114,144,147,147,131,220,220, 92,148,151,151, 35, 37, 37, 5, 6,131,161, - 1, 43, 94,254, 50,129, 85,173,155,204, 61,127,187, 87,224, 53,201,235,238,194,229,222,123,239,117,141,221,146, 45, 98,242,177, -122,245,106,207,129,227, 65, 9,172, 15, 62,248, 0, 19, 39, 78, 68, 88, 88, 24,230,206,157, 91,173,139,208, 83, 20, 72,146, 68, -130,241,123,163, 87,140,200,153, 31, 13, 81, 20, 17, 51, 46,183, 90, 87,156, 23,161, 17,148, 59,103,207,158, 29,146, 46, 66,119, -206, 6, 13,170,178,202,199, 31,127,140, 17, 35, 70,224,231,159,127,190,230, 46,194,180,180,180,175,214,175, 95, 31,113,236,216, - 49,148,149,149, 33, 63, 63, 31,102,179, 25,153,153,153, 62,123, 1,156,101,121, 24,203, 57, 12,127, 50,126,249,147,121,175,251, -123, 66,128,138, 59,104,129, 21,140, 5,203,108, 54,207,125,246,217,103,159,233,223,191,127,116,120,120, 56,178,179,179,175, 18, - 87, 21, 21, 21,208,233,116, 48, 26,141, 88,183,110, 93,153,217,108,158, 27, 72, 20,216,108, 54,196,197,197,161,160,160, 0,146, -143,113,209, 28,199, 65,173, 86,163,162,162, 2,190,196,128,191,138,194,106,181,194,102,179,193,102,179,193,106,181,162,134,203, - 51,169,229, 5, 91, 43, 43, 43, 1,160, 50, 49, 49,177,113, 88, 88, 24,206,159, 63, 15, 0,167, 0,244, 25, 52,104,144, 88, 88, - 88, 72,159,124,242,201,221,148,210, 9, 1, 86,179,183,108,223,190,189, 17, 0,168,213,234,147, 0,144,153,153,105, 43, 41, 41, -169,102, 25,212,104, 52,116,232,208,161, 9,148, 82,108,223,190,189,145, 66,161,160,240,177,102, 21, 0,211,218,181,107,143, 69, - 68, 68, 44,203,200,200, 24, 53,100,200,144,163,173, 91,183,110, 84, 89, 89,153,103, 52, 26,141, 38,147,137,242, 60,175,136,138, -138, 10,219,184,113,227,153,221,187,119,247,215,235,245,203,214,174, 93,123, 12,128, 87, 75,155, 86,171,205, 52, 24, 12, 13,229, - 56,117, 23, 87, 57, 57, 57,160,148,226,220,185,115,208,104, 52,151, 88,249,241,151,182, 28,175, 18, 86,222,196, 86,176,226,202, - 93, 16,108,220,184,209,239, 26, 88,193,114,186,139,161, 73,147, 38, 97,254,252,249, 87, 89,176,102,205,170,106,147,188,246,218, -107, 65,143,193,146,173, 85, 57,243,163, 81,119, 98, 81, 53,183, 3, 0,145,221, 87,195, 37,217, 4, 65,192,140, 25, 51,174, 26, -124,238,222,133, 23,100, 87, 94, 53,119,230,229,229, 65, 16, 4, 68, 71, 71,227,225,135, 31,198,192,129, 3, 93, 93,141, 53,229, - 61,126,252,248,206, 87, 94,121,165, 77, 90, 90, 26,102,206,156, 89, 20, 25, 25, 25,254,175,127,253, 75, 40, 41, 41, 33,254, 44, - 88, 76, 96, 49, 48, 92,135,192,146, 51, 86,176,179, 8,189, 21,146,132,144,254,238,107,101, 80, 74, 75, 9, 33, 15, 15, 24, 48, -224,155,149, 43, 87,170, 27, 55,110,140,227,199,143,163,168,168, 8, 22,139, 5, 10,133, 2, 9, 9, 9, 40, 41, 41,193,231,159, -127,110, 52, 24, 12, 15, 83, 74, 75,253,113, 2,152,210,177, 99,199, 15,223,121,231,157,176,118,237,218,161,168,168, 8, 21, 21, - 21,213, 86,157,214,235,245, 80,171,213,216,183,111, 31, 54,108,216, 96, 4, 48, 37, 0,167, 55, 21, 7,171,213,234, 18, 90,129, - 4,150, 7,167, 86,182,226, 24, 12, 6, 0,176,215,175, 95, 63, 30, 0,206,157, 59, 7, 0, 23, 83, 82, 82, 94,107,210,164, 9, - 89,186,116, 41,165,148,110,246, 38,174, 60, 56,139,122,246,236, 89, 12,160,174,197, 98, 81, 0, 64,105,105,169,181, 78,157, 58, -113, 42,149, 74, 82,171,213, 82, 88, 88,152,148,157,157,109,183,219,237, 10, 0,232,217,179,167, 5, 64, 14,220,198,122,120,112, - 74, 0,202, 22, 45, 90, 52,125,244,232,209, 93,187,117,235,150,246,244,211, 79, 31,121,242,201, 39,185,164,164,164,168,242,242, -114,211,233,211,167,139,255,243,159,255,148,239,217,179,167,191, 40,138, 23, 23, 45, 90, 52, 29, 64,153,243,221,171, 56,237,118, -251,255, 54,111,222,252,216,144, 33, 67,132,172,172, 44,228,230,230,186,196, 85,110,110, 46, 90,180,104,129,221,187,119, 59,172, - 86,235,230, 26,132,103,168, 44, 55,140,179,170,241, 65,229,188,238, 75, 88,201,141,168, 96, 57,221,197,208,136, 17, 35,170, 89, -173, 20, 10, 5,214,172, 89,227,181,220,240,178, 34,121,127,207,245,160,100, 55,189,242,202, 43,213,196,218,212,169, 83,125, 58, - 45, 80,120,202, 60,165, 31, 39, 85,159, 69,232, 35,159,251,115,167, 92,118,138,162,136,169, 83,167, 6,109,193,130,199, 24, 44, -111,156,178,223,123,245,234, 5,131,193,224, 18,176,190, 44, 88,129,194,211,225,112, 76,156, 63,127, 62,213,235,245,157,203,202, -202,254,113,233,210,165,197, 6,131,225,246,210,210, 82,191, 22, 44,179,217,172, 98,249,136,113,214,198, 90, 88,183,132,192,114, - 86,142,168, 87,175, 94,181,189,173, 56,142,171,118,212,100, 28,129, 51,195,110, 36,132, 12,235,222,189,251,151, 19, 39, 78, 12, -111,215,174,157,216,176, 97, 67, 84, 86, 86,226,252,249,243, 56,122,244,168,125,237,218,181,101, 6,131,225, 31,148,210,141, 65, -240, 45, 33,132,108, 24, 52,104,208,235, 93,186,116, 25,251,198, 27,111,240,205,154, 53, 67,105,105, 41,162,162,162, 16, 23, 23, -135, 19, 39, 78, 96,221,186,117,142,130,130,130, 15, 1,188, 73, 41,205,175,105, 3,223,106,181,226,161,135, 30,130, 36, 73,120, -239,189,247,220, 23, 68, 11, 6, 86,171,213, 74, 1,144,130,130, 2, 0, 48,200,130,235,244,233,211, 0,112,169, 97,195,134, 58, - 0,216,188,121, 51, 1,176, 43, 88,119,185, 91,178, 90,180,104,113,222,179, 80,148, 45, 87,178,213, 11,129, 55,104, 54,141, 28, - 57, 50,207, 96, 48, 12,154, 52,105,210,235, 31,124,240,193,168, 15, 62,248,224,170,135,244,122,253,178,119,223,125,247,205,145, - 35, 71,230,249,178, 94, 57, 45,118,175,253,243,159,255, 28,121,248,240,225,240,176,176, 48, 84, 86, 86,162,176,176, 16, 86,171, - 21, 41, 41, 41,200,203,203,195,146, 37, 75,202,141, 70,227, 52,150, 29,255, 26,184, 11, 2, 95, 86,172, 64,226,202,159, 21,231, -187,239,190,243,186,198, 84, 77, 57, 61, 69, 70,176,107, 83,249,107, 12,201,203,203,120, 91,250,161, 38,229,154, 55, 94, 65, 16, -240,246,219,111,187, 22, 91,245,102,185,170,137, 5, 75,230,140,142,142, 6, 0,200, 91, 27,221,125,247,221,215,204,235,220, 54, -108,130,219, 55,102,191,244,210, 75,211, 91,180,104,209, 12,128,202, 61, 12,216,166, 10, 12, 12, 33, 18, 88, 14,135, 35,179,121, -243,230,213, 10,182, 64,155,140,218,108,182,204, 32, 51,245, 6, 66, 72,202,187,239,190,251,172, 86,171,237,111, 48, 24,218, 56, - 11,140,195,149,149,149,155,205,102,243,188,154,108,206,236, 20, 76,227, 9, 33,239, 13, 26, 52,104, 86,223,190,125,135,191,240, -194, 11,132, 82,138,133, 11, 23,210,179,103,207,174, 6, 48,133, 82,122,246, 90, 2, 41, 58, 58,250,216,231,159,127, 30,255,205, - 55,223,192,102,179, 97,222,188,121, 8, 15, 15, 63, 86, 19,247, 9,130,240,101,183,110,221, 70,237,222,189,123, 25,165,244,136, - 74,165,250,170,103,207,158, 15,239,218,181,107, 37,165,244,119, 65, 16,190,234,218,181,235,195,251,246,237,251,154, 82,250, 91, - 13,156,231,178,100,217,237,222,123, 20,189, 89,174, 2,160,236,241,199, 31,183, 62,254,248,227, 47,140, 28, 57,242,147, 95,126, -249,229,246,146,146,146, 54, 0, 16, 25, 25,121,184, 83,167, 78,251, 86,174, 92,121,194,105,185, 50, 5,242, 59, 33,100,104,155, - 54,109,190,158, 57,115,166, 54, 45, 45, 77,104,218,180, 41, 46, 92,184,128, 35, 71,142,216, 63,251,236,179, 10,163,209,120, 47, -165,180,152,101,199,191, 78, 96, 81, 74, 17, 25, 25, 89,173,241, 36, 79,221,175,105,183,160,123,133, 44,111,169,227,201,235,139, - 51,192, 32, 87, 0,128, 78,167,115, 45, 74, 26,204,208, 4, 73,242,191,158, 26,165,212,197, 41, 31, 65,136,171,128, 51,254,156, - 91,213, 4,205, 25,204, 50, 13, 90,173, 22, 54,155,205,197, 27,196, 76, 78, 82,195, 56,251, 14,192,119, 77,155, 54, 61, 13,160, - 9, 19, 85, 12, 12,181, 32,176,138,138,138, 58,214,230,135,157, 2,234, 77,231, 17, 42,206,179, 0, 70, 18, 66,222,249,233,167, -159,228,254,130, 25,129,246, 51, 12,132,227,199,143, 15, 17, 69,241,163,101,203,150,117,161,148, 34, 34, 34, 98,207,133, 11, 23, -254, 85, 19, 14,187,221, 62,150, 16,242,188, 60, 43,208,108, 54,143, 37,132,188, 72, 41,173,116,187,239,250, 95, 83,175, 3, 48, - 83, 74, 19,125,220, 55,215, 64, 92,185, 44, 89, 0, 44, 43, 87,174,172, 0,112, 8,127,172,115,101,115, 30, 38,184,117, 11, 6, -136,151, 45,132,144,166, 83,167, 78,157,205,243,124,191,202,202,202, 36,173, 86,123,217,110,183,255,207, 96, 48, 76,161,148, 22, -178,172,248,215,193, 98,177,100, 53,111,222, 92,240,214,112,242, 87,129,251,107, 80, 57, 28,142,204,212,212,212,128,141, 50, 47, -156, 89,126,210,209,197,148,148, 20, 46, 88, 46, 25, 86,171, 53,207,159, 59, 83, 82, 82, 80, 83,206, 64,126,111,212,168,145, 87, -191, 7, 16,130, 89,126,202,143,107,226,244, 23,158,254, 96, 52, 26,139, 99, 99, 99, 43, 76, 38,147,104, 54,155, 69,187,221, 94, -205,220,168, 86,171,243, 89,206, 97, 96,184, 70,129,245,119,134, 83, 80,221, 19, 66, 62, 51,128, 71, 66,192, 99,242,248, 95,233, -239,127, 13, 81, 27, 22, 32, 9,128, 33, 68, 97, 88, 0,224, 73,150,229,110, 60, 20, 20, 20,116, 14, 53,103, 97, 97, 97,200, 27, -104,249,249,249, 93,107,193,239, 29,111, 85, 78,127,200,202,202,234,204,114, 6, 3,195,245,129, 99, 65,192,192,192,192,192,192, -192,192, 16, 90, 16, 0,253,189,221,168,201,236, 0, 66, 72,255,154,126, 56, 16, 63,227,100,156,140,147,113, 50, 78,198,201, 56, -111, 62,206, 64,220, 55,205,236, 68, 74,105,173, 29, 0,250, 51, 78,198,201, 56, 25, 39,227,100,156,140,147,113,222,106, 7,235, - 34,100, 96, 96, 96, 96, 96, 96, 96, 8, 49,152,192, 98, 96, 96, 96, 96, 96, 96, 96, 96, 2,139,129,129,129,225,207, 1, 33, 36, -234, 70,230, 99, 96, 96, 96, 2,139,129,129,129,225,239, 38,174, 90, 3,152, 25, 98,218,153, 78, 94, 6,134, 91, 34, 15, 17, 66, -218, 48,129,197,192,192,192,192, 32, 87, 12,131, 27, 55,110, 60, 3,128, 46,196,212,186,198,141, 27,207, 32,132, 12,102,161,204, -112,147,230, 29, 21, 33,228, 17,142,227,246,181,110,221,250,112, 90, 90,218,111, 28,199,237, 38,132,140, 32,132, 8,183, 84, 88, -184,109,138,188, 13, 0, 40,165,189, 88, 18, 97, 96, 96,184, 69, 43, 7, 1,192,216, 81,163, 70,221,147,145,145,161,172, 87,175, -222,101, 74,233,232, 16,242, 47,189,124,249,114,242,163,143, 62, 90,177,101,203,150,141, 0, 62,244,182,177, 59, 3,195,223, 48, -239, 52, 4, 48, 86,167,211, 61,209,187,119,239,168,123,239,189, 23, 49, 49, 49,176,219,237,184,124,249, 50,214,175, 95,143, 93, -187,118,101, 91, 44,150,249, 0, 62,166,148,150,248,224,185,105,180, 8,161,148,202, 27, 23,247,118,122,106, 27, 75, 42, 12, 12, - 12,183, 96, 5,161, 7,144, 62,119,238,220, 46, 99,199,142,109,100, 50,153, 50,163,162,162,206,133, 90, 96, 89,173,214,254,249, -249,249,251,103,205,154,133,133, 11, 23,254, 14, 96, 78, 77,246, 94,101, 96,184, 1,243,206,228, 97,195,134,205,138,143,143,231, - 90,183,110,141,132,132, 4,152,205,102, 24,141, 70, 80, 74, 33, 8, 2, 40,165, 40, 45, 45,197,246,237,219,177,101,203, 22,115, -113,113,241,231, 0,230, 81, 74, 79,185,241,220, 84, 90,196, 37,176,106,186, 41, 40, 3, 3, 3,195, 77, 84, 65, 52, 82,171,213, - 83,215,173, 91,215,170, 71,143, 30,113,229,229,229,231,108, 54, 91,101, 98, 98, 34, 69,213,166,230,222, 80, 74, 41,157,224,133, -107, 1,128, 8, 31,239,232,173, 86,107,167,130,130,130,253, 0,176,102,205, 26,164,167,167, 23, 26,141,198, 25,148,210,243, 44, - 38, 24,254,166,249,231,228,241,227,199, 83, 29, 14, 7, 10, 10, 10, 96, 54,155, 97, 48, 24, 92, 2,139,231,121, 80, 74, 97,183, - 87, 25,107, 37, 73,194,129, 3, 7,176,121,243,102,122,238,220,185, 55, 40,165, 51,100,129,117, 51,105, 17, 38,176, 24, 24, 24, -110,245,202,161,123,221,186,117,159,255,233,167,159, 26, 54,104,208, 64, 95, 81, 81,113,198,110,183,219, 0, 32, 42, 42, 42,141, -231,121,149,231, 59, 14,135,195, 28, 22, 22,182,195,155,117,139, 16,178,212,100, 50,245,240,246,158,243, 93,123,113,113,241, 33, -249,255,111,191,253,134, 39,158,120,194,154,147,147, 51,151, 82,186,147,197, 8,195,223, 81, 96, 29, 58,116, 40,117,249,242,229, -104,223,190, 61, 90,182,108,137,138,138, 10,151,216,178, 88, 44,176,217,108, 87,189, 87, 86, 86,134,231,159,127,254, 20,165,180, -217,205, 40,176,228, 1,103,211,217, 24, 44, 6, 6,134, 91, 25, 57, 57, 57, 5,145,145,145, 87, 36, 73,162,242,181,226,226,226, -163,215,194,117,173,239, 49, 48,252, 77, 97,179, 88, 44,232,216,177, 35,206,159, 63,143, 3, 7, 14,184,132, 86, 65, 65, 1,178, -179,179,171, 61,188,111,223, 62, 28, 60,120, 16,119,220,113,135, 39,207,244,155,110, 12,150, 83, 57,246,114,122,106, 27, 75, 43, - 12, 12, 12,183, 88, 11,188,145, 90,173,158, 58,103,206,156,152, 7, 30,120,192,117,189, 54,186, 8,179,179,179, 93, 45,116,214, - 69,200,112,147,228,159,161,137,137,137,159, 61,243,204, 51, 17, 93,186,116, 65,102,102, 38,178,178,178, 80, 92, 92,140,118,237, -218, 33, 45, 45, 13,103,207,158,197,134, 13, 27,112,240,224, 65,168, 84, 42, 36, 39, 39, 67,183,108, 57, 62, 34, 56, 70, 41, 77, -115,227,186,105,180,136, 75, 96, 49, 48, 48, 48,220,226,149,132, 30, 64,250,184,113,227, 90, 78,153, 50, 5,132, 16, 36, 38, 38, -150,134,122,144,123,118,118,118, 4,165, 20,108,144, 59,195, 77,150,127,194, 1,188,148,146,146,242,226,184,113,227, 84,173, 90, -181, 66,102,102, 38,242,243,243, 81, 92, 92,140, 61,123,246, 0, 0,146,146,146,144,148,148,132, 19, 39, 78, 96,231,206,157,101, - 21, 21, 21,143, 83, 74,191,185, 41,195,132, 9, 44, 6, 6, 6, 6, 87, 37, 33, 0, 24,219,167, 79,159,129, 11, 23, 46, 68,106, -106,106,200, 5,214,169, 83,167, 34,198,141, 27, 7,182, 76, 3,195, 77,154,135,226, 0,188,214,170, 85,171,177, 79, 60,241,132, -208,160, 65, 3,100,101,101,225,167,159,126, 66,147, 38, 77,112,249,242,101,108,217,178,197,146,159,159,255, 30,128, 12, 74,105, -233,205, 26, 22, 92, 45, 7,116,127,198,201, 56, 25, 39,227,252,187,112, 82, 74,237,148,210,247,183,108,217,242,225,224,193,131, -165,218,112,231,224,193,131,165, 45, 91,182,124, 72, 41,125,223,159,184, 98,113,196, 56,255,142,156,148,210, 60, 74,233,132, 99, -199,142, 53,125,238,185,231,190,156, 57,115,166, 36, 73, 18,226,226,226,176,106,213, 42,105,197,138, 21,159,229,231,231, 55,166, -148, 78,190,153,197, 21,240,199, 32,119, 6, 6, 6, 6,134, 63, 42,137, 31, 8, 33,153, 0,198,134,152,186,226,236,217,179,111, - 83, 74,143,176, 80,102,184,201,243,208, 5, 0,163, 9, 33,255, 62,112,224,192, 20, 0, 20,192, 76, 74,233,239,183, 74, 24, 48, -129,197,192,192,192,224,189,130, 56, 66, 8,121, 45,196,180,175, 81, 74,139, 89,232, 50,220, 66,249,232, 40,128, 7,111, 69,191, -179,189, 8, 25, 24, 24, 24,124, 87, 14,197, 55, 50, 31, 3, 3, 3, 19, 88, 12, 12, 12, 12, 12, 12, 12, 12, 76, 96, 49, 48, 48, - 48, 48, 48, 48, 48, 48, 92, 27, 8, 0, 95, 51, 1, 54, 7, 77,114, 13, 51, 20, 2,241, 51, 78,198,201, 56, 25, 39,227,100,156, -140,243,230,227, 12,196, 93, 19,253,113, 67,131, 82, 26,240,128,115,189,172,154, 30, 0,250, 95,203,123,140,147,113, 50, 78,198, -201, 56,255,190,156,206,198, 59, 65, 85, 47, 9, 39,255,191,145,253,126, 45,245,220,159,229,247, 91,133,243,102, 59,132, 0,234, -210, 21, 72,132, 16, 9,128, 68, 67,176, 50, 41, 33, 68,142,128,144,240, 49,212,130,105,179, 42,142,200, 31, 58,156,197, 19, 3, - 3, 67,141,202, 14,222,173,146,117, 0,112, 16, 66,112,163,149, 37,161,172,231,106,195,239,183, 50,231,223, 29,130,191,128,226, -121,126, 99,157, 58,117,250, 20, 20, 20, 72,206,235, 80, 42,149,224, 56, 14,162, 40, 26,203,203,203,245,215, 16, 9,159,198,199, -199, 63, 90, 88, 88, 40,113, 28,135,176,176, 48, 16, 66, 92,156, 37, 37, 37,250,191, 58, 80, 26, 54,108, 88,108, 52, 26,117,158, -215,195,194,194, 76, 23, 47, 94, 12,191, 21, 10, 72,133, 66, 49, 44, 58, 58, 58, 50, 63, 63,159,114, 28, 7,133, 66, 1,158,231, -225,252,109, 47, 41, 41,249, 34, 88,190,232,232,232,125,209,209,209,145,242,251,132, 16, 20, 22, 22,150,228,230,230,222, 14, 0, -106,181,122,167, 86,171,141, 17, 4, 1, 60,207,131,231,121, 24, 12,134,194,130,130,130,238,172,186,250,123, 98,245,234,213,252, -160,164, 49, 77, 4,106,108,203,113, 52, 66,146, 72,169,157,168,127,219,144,245,233,153, 96,222, 31, 62,124,184,227, 47,206, 3, -221,157, 45,139,157, 33,226,115,223,159,208, 4,160, 0,192, 25, 0,171, 40,165,198,191, 58,190, 84, 42,213,123,241,241,241, 79, - 84, 84, 84, 24, 8, 33,148, 16,130,170,106, 0, 87,157, 29, 14, 71,102, 65, 65, 65,199, 0,149,172,168, 84, 42,223,173, 91,183, -238, 63, 13, 6,131,193,201, 71, 9, 33, 72, 72, 72,168,198, 7, 0, 54,155, 45, 51, 63, 63,191, 99, 48,110,141,139,139, 91,164, - 86,171,255, 97, 48, 24, 42,157,130,200,189, 71,198,189, 18, 63,155,159,159,223, 51,144, 32, 80, 42,149,243,226,227,227, 31,115, -250, 29,132, 16, 26, 27, 27,123,221,126,143,143,143,255,103,101,101,101, 53,191,199,197,197,121,229,244,229,119,111,156,238,238, - 36,132, 32, 54, 54,246,186,221,121, 35,114,222,180, 2, 11, 0, 71, 8, 89,219,189,123,247,222,219,182,109,227,142, 31, 63,206, -181,104,209, 2, 14,135, 3,146, 84,149,158,147,147,147, 53,215, 80,200, 44,238,217,179,231, 67,219,183,111,231,214,174, 93,203, -117,234,212, 9,132, 16, 56, 28, 14, 56, 28, 14,180,110,221, 90,125,157,133,152, 78, 16,132,231,149, 74,101, 47,187,221,222, 18, - 0, 68, 81,252,221,108, 54,111,179,219,237,115, 41,165, 21,193,240, 88,173, 86, 77, 94, 94,222, 85, 97,147,146,146,162,188, 86, -183,233,245,250, 93, 28,199,165,184, 2,216, 41, 52,188,101, 98,249, 76, 41, 61,151,159,159,223,205, 23,103, 84, 84,148,139,211, - 23,135,231, 53, 73,146,206,229,229,229,117, 11, 32,174, 30,232,217,179,103,196,230,205,155,201,229,203,151,137, 90,173,134, 36, - 73,112, 56, 28,176,217,108,104,213,170, 85,141,214, 79,139,140,140,212, 79,158, 60,185,201, 93,119,221,133, 53,107,214,224,145, - 71, 30, 65,143, 30, 61, 78,201,247,181, 90,109,204,177, 99,199, 82,163,163,163, 97, 48, 24, 80, 90, 90,138, 1, 3, 6,252,237, - 51, 87,151,246,245,102, 18,142, 68,187, 10,127,187,163,104,207,161,172,235, 94, 87, 41, 50, 50,242,160, 82,169,140,151,227,149, -227, 56,175,113,237,126,205,100, 50,229, 22, 20, 20,180, 15,144,127, 26, 2,184,135,231,249,166,130, 32, 52, 7,208,208,110,183, -199, 3,128, 66,161,200,229,121,254,130,205,102, 59, 97,177, 88, 78, 3,248,206,185,144,160, 87, 12, 74, 26,211,132,216, 13,195, -203,205,210, 96, 77,227,140,102,134,179,147, 79,106, 84,134, 31, 6, 37,141, 89, 29,172,200,250, 11,197, 85,163,186,117,235, 62, -239,252,125, 37, 68,155, 48, 71,152, 76,166, 30, 60,207,171,236,118, 59,114,115,115, 11, 62,252,240,195,139, 11, 22, 44,232, 67, - 8,121, 39,208,194,163, 93, 59,214,223,207,113, 92, 50,156,242, 65,162,142,204,221,251, 47,135,164, 98,226,121,126,222,253,247, -223,255,216,234,213,171, 53, 7, 14, 28,208,180,108,217,210, 85, 62, 73,146, 4, 79,195, 67,163, 70,141,252, 6, 31, 0,129,227, -184,247,134, 15, 31, 62,106,233,210,165,154,139, 23, 47,106, 18, 19, 19, 93,156,238,226, 77, 70, 98, 98, 98, 80,110,141,137,137, -249,244,174,187,238, 26,189,100,201, 18,113,221,186,117,234, 58,117,234, 32, 38, 38, 6, 10,133,226,170,103,187,119,239, 30,104, - 37,126,142,227,184,121,247,221,119,223,232, 21, 43, 86,104,246,238,221,171,105,221,186, 53,120,158,191,110,191, 15, 29, 58,116, -212,242,229,203, 53,135, 15, 31,214, 52,109,218, 20, 28,199,129,227,184,171,248, 56,142, 67,189,122,245,130,226,188,247,222,123, - 71,173, 92,185, 82,115,240,224, 65, 77,243,230,205, 93,225,233,214, 61, 87, 99,119,222,224,156, 55,159,192,114,154, 75,151,118, -239,222,125,208,182,109,219,120, 0, 56,120,240, 32,138,138,138,144,148,148, 4,157, 78, 7,149, 74, 5,147,201, 68,107, 88,104, -125,234, 20, 87, 34, 0,124,253,143,161, 56, 39, 2, 19,242, 44, 80, 40, 20, 56,123,246, 44,120,158,167,215, 81, 40,222,161,215, -235,151,124,243,205, 55, 81,237,219,183,231,242,243,243,145,146,146,130,162,162,162,219,183,111,223,222, 97,204,152, 49, 99, 8, - 33,143, 80, 74,183, 7,203,249,195, 15, 63, 64,171,213, 66,163,209, 64,171,213,194, 98,177,144,107, 14,104, 65, 72,190,112,225, - 66,156, 78,167,131, 36, 73,174,195,163,255,218, 5, 73,146,144,154,154,106, 13, 80, 48, 38, 95,188,120, 49, 78,173, 86,131, 82, - 90,141,207,225,112, 64,165, 82,185,183, 20,224,112, 56,144,146,146, 98, 13,100,185,146,197, 21, 0, 44, 91,182, 12,117,235,214, - 69, 92, 92, 28,180, 90, 45,212,106,117,181, 10, 61,200, 2, 28,131, 6, 13,194,180,105,211,144,145,145,129,151, 94,122,169, 90, - 1, 43,138, 34,162,163,163,241,227,143, 63, 66,175,215,163, 65,131, 6, 16, 69,241,239,111, 9,228, 72,244,238,253,151, 92, 22, -217, 59,251,182, 16,186,116,104,240,129, 51,134,193,113,128, 36, 85, 85,153,132,128,218,109, 82,241, 47,191,101,189, 30, 68,120, - 38, 94,188,120, 49, 78,165, 82, 5,229, 14,135,195,129,164,164, 36, 62, 64,254, 25,156,150,150,246,245,211, 79, 63,173,104,218, -180, 41, 81, 40, 20, 16, 4, 1,130, 32,200,233,177, 1,165,180,129, 36, 73,189,115,115,115,233,130, 5, 11,254, 77, 8,185,159, - 82,250,131,215,244, 78,141,109,203,205,210,224,159,127,197,237,195,251,191,130, 31, 87, 77,190,189,103, 59, 9,225, 26,227, 25, -167,229,230, 70, 21, 87,122,181, 90, 61,245,231,159,127, 78, 45, 47, 47, 47,235,209,163,199, 84, 66,200,115,161,216,140,185,184, -184,248,168,252, 91,169, 84,226,217,103,159,197, 93,119,221, 21, 57, 96,192,128, 73,132,144,127, 81, 74,173,190,149, 0,159,188, -115,223,249, 56,249,255,189,131,218, 40,186,117,106,144, 91,213, 16,243,124,154, 66,114, 72,153,123,127,205,236, 24,132,127,255, - 61,108,216,176,135, 87,175, 94,173, 3,128,133, 11, 23, 98,216,176, 97,136,142,142,134, 70,163,129, 66,161,128, 40,138,213,206, - 1, 44, 66, 60,128,127, 63,248,224,131,195,151, 46, 93, 26, 14, 0, 75,151, 46,197,208,161, 67, 17, 19, 19,131,240,240,112, 40, -149, 74,240, 60, 95,227,240,139,137,137,249,180,199,237,183, 63,190,100,201, 18, 0,192,148,231,158,195, 93,157, 59, 67,167, 81, - 67,163, 86, 66, 14, 11, 37, 47,226,206, 9, 19, 3,249,155, 3,240,206,176, 97,195, 70,174, 88,177, 34, 28, 0, 14, 28, 56,128, -188,188, 60,196,199,199, 67,173, 86, 67,169, 84,186,252, 76, 8,129, 90,173, 14,202,239,195,134, 13, 27,190,124,249,242,112, 0, - 88,188,120, 49, 6, 13, 26,228,242,187, 74,165,130, 66,161,168,118,120,138, 77,111,156,247,223,127,255,240,149, 43, 87,134, 3, -192, 23, 95,124,129,254,253,251, 35, 42, 42,202, 21,158, 50, 87, 77,226,232, 70,230,188, 41, 5,150, 60, 54, 42, 62, 62,126,228, -207, 63,255,204,185,137, 3,168, 84, 42,168, 84, 42, 40,149, 74, 87, 55, 97, 13, 10, 45, 18, 31, 31,255,232,246,237,219, 93, 47, - 89,232, 85, 38,234, 26, 87,220,110,252,253,251,244,233,179,124,253,250,245, 97, 10,133, 2, 70,163, 17, 71,143, 30, 69,100,100, - 36,148, 74, 37,238,187,239, 62,190,123,247,238, 49,189,123,247, 94, 67, 8, 25, 21,204, 12, 5, 74, 41,116, 58, 93, 53,129,117, -189, 93,200,106,181, 26,235,214,173, 3,207,243, 94, 11, 46,247,223,113,113,113,193,248, 27, 42,149, 10,187,118,237, 2,207,243, - 16, 69, 17,130, 32, 64, 20, 69,124,255,253,247,120,225,133, 23, 80, 80, 80, 0, 66, 8, 68, 81, 68,120,120,192,222, 77, 18, 29, - 29, 29, 41,139, 43, 89,252,168,213,106,136,162, 72, 4, 65, 32,114, 23, 30, 33,132, 4,219,167,206,113, 28,190,252,242, 75,188, -245,214, 91,120,249,229,151,177,104,209, 34,180,109,219,214, 93,124,162,172,172, 12, 81, 81, 81,136,138,138, 66, 88, 88,216, 53, -167,133, 27, 9,158,161,243,238,220,249, 26, 72, 20, 85,131, 60, 36, 64, 2, 40, 40, 36, 42, 33, 55,235, 12,222,152,246,118,208, -181,142, 74,165,194,206,157, 59, 93, 34, 72, 16, 4, 16, 66,224, 46,140,228,163,110,221,186, 1,249, 20, 10,197,244,111,191,253, - 86,249,229,151, 95, 98,197,138, 21,174,180,165,213,106, 17, 25, 25,137,152,152, 24,215,145,156,156, 76, 62,251,236, 51, 69,219, -182,109,167, 3,248,193,123,156,211, 8, 77,227,140,102,195,251,191, 2, 0, 24,254, 10, 69,241,169, 89,183,113, 37,175, 71,220, -192,226, 74, 0,144,190,110,221,186, 86,137,137,137, 97, 90,173,246,226,156, 57,115, 98,158,125,246,217,116, 66,200,107,215,185, - 41,115,169,108,165, 9, 11, 11, 11,235,213,171,151,114,246,236,217,104,210,164, 9,198,140, 25, 19,189,112,225,194,251, 0,172, -242, 87, 30,185, 99,193,251, 31, 68, 82, 90,149,126,168, 68,171,157,139,242, 46,224,185, 73,111, 4,229,168,122,245,234,141, 93, -179,102,141,206,221,146,228, 94,249,187,151, 81,242,225, 75, 16, 56,173, 24, 92,253,250,245, 31,255,234,171,175, 92,156,117,234, -212,113,149, 75,130, 32,128,227, 56,252,252,243,207,152, 51, 61, 29, 81,177,137,152,255,254,194,128,238,140,139,139, 91, 52,120, -240,224,127, 44, 94,188,216,117,173, 77,227,198,184,187,123,103,196,213,209,163, 78, 84, 85,217, 70, 37,130,223, 78,156, 15, 88, - 31, 1,224,234,213,171, 55,102,213,170, 85, 58,247,134,160,236, 87, 0, 48, 24, 12, 46,171,189,197, 98, 65,199,142, 29,131,242, -187, 59,167,108, 93,147,197,154,103, 89, 47, 55, 96,252,113,214,171, 87,239,113, 89, 0, 3, 64,116,116,116, 53, 14, 81, 20,177, -234,199, 37, 87,213, 13,215,203, 89,211,120,247,228, 60,127,254, 60,102,207,158, 93, 45,222,101,107, 86, 82, 82, 18, 22, 44, 88, -224,143,211, 27, 58, 1,136,117,251,111, 1,160,116, 59,231, 3,248,197,203,115,242,117, 17,192,109,206,123, 14, 0,229, 0, 34, -189,240,249,226, 41, 64,213,118, 63,177, 30,207,123,126,167,186,192, 34,132,200,185,183, 15,128,157, 5, 5, 5,210,241,227,199, -185, 3, 7, 14, 64, 20, 69,196,197,197,161, 83,167, 78,114,247, 25, 68, 81,132, 86,171, 37,145,145,145,185,114,133, 43, 7,158, -123, 95,186,155,144,225,138,138,138,164, 77,155, 54,113, 75,239, 31, 8, 11, 5,218, 77,157,131, 65, 67,134, 96, 67,146, 18, 60, -128,219,143, 23, 64,163,209, 8,162, 40,218,228, 72,144, 57,221,199,102,121,138, 35, 66, 72,184, 86,171,253,236,187,239,190, 11, -227, 56, 14,229,229,229,144, 36, 9, 61,122,244, 0,199,113, 56,114,228, 8,166, 76,153,130,175,191,254, 26,223,126,251,173,186, -125,251,246,159, 17, 66, 90, 82, 74,203,221, 10,175,205,222, 18,103,120,120, 56, 52, 26,141, 75, 96,201,126,118, 55,117,203,207, - 83, 74,179, 10, 10, 10, 58,248,227,116, 56, 28, 24, 58,116, 40, 8, 33,224,121,190, 90,161,227,126, 86, 40, 20, 56,114,228,200, - 85,137,207,155, 48,148,253, 10, 0, 26,141, 6, 58,157, 14, 91,183,110,117,221,111,215,174, 29, 44, 22, 11,234,212,169,131,223, -127,255,221, 91,193, 93,141, 51, 63, 63,159,102,103,103,147,165, 75,151, 66, 20, 69,196,196,196, 64,163,209,144, 37, 75,150,164, - 43, 20,138,100,147,201, 36, 89, 44, 22, 40,149,202,249,178, 53, 75, 16,132,202,210,210,210, 24, 95,156, 60,207,227,233,167,159, -198,139, 47,190,136, 69,139, 22,225,169,167,158,186,202,194,101, 50,153, 80,167, 78, 29,151,200, 10,198,239,215, 47,128,106,153, - 83,162, 56,122,112, 3,142, 29,222, 12,201, 33,193, 33, 81, 80,234,128,100, 7, 14,108,218,147,122,229, 92,118, 18, 5, 5,156, - 29, 25,170,210, 10,123,239, 58,170,230, 0,214,110, 45, 48,191, 23, 40,125, 10,130, 0,155,205,134,239,190,251, 14,103,206,156, -193,198,141, 27, 97, 52, 26, 93,225,216,181,107, 87, 60,254,248,227, 94, 5,150, 39, 39,165,116,241,229,203,151,219,245,232,209, -131,148,148,148,160,164,164, 4, 70,163, 17, 14,135, 3,118,187, 29,130, 32, 32, 44, 44, 12,106,181, 26,241,241,241, 48,153, 76, -212,108, 54, 47,246,197, 41, 73,164,212,112,118,242,201, 31, 87, 77,190,125,248, 43, 20,171,223, 34,104, 82, 95,101,248,223,254, -240,199,215,238,120,105, 0, 0, 42, 57, 75, 29, 14,160, 54,135, 84,240, 98,250,127,198,255,233,113, 84, 29, 99,231,206,157,219, -165, 71,143, 30,113,101,101,101,199, 37, 73,162, 15, 60,240, 0, 78,158, 60,217,114,225,194,133, 99, 1,188, 95, 83, 78, 66, 72, - 31,231,253, 9,238, 21,252,143, 63,254,120, 63,128, 71, 63,249,228, 19, 12, 27, 54, 12, 11, 23, 46, 76,243, 20, 88,238,156,148, - 82, 92, 56,245, 51, 46,156,222, 1, 73,162,110, 86,112,239,191,105,144,238,172,172,172, 52,253,250,235,175,186, 79, 62,249, 4, -113,113,113,104,212,168, 17, 52, 26, 13,194,194,194,170, 85,174,238, 21,110,160,188,105, 52, 26, 77, 23, 46, 92,208, 45, 95,190, - 28, 49, 49, 49,104,216,176, 33, 52, 26, 13,148, 74,165,171, 33,176,116,233, 82, 44,155,246, 48, 46,156, 56,140,161,119, 15, 8, -232, 78,141, 70,243,143,197,139, 23, 87, 51,121,196, 71, 69, 65, 16, 57,240, 34, 65, 84,191,251,171,172,132, 63,125,227,115,117, - 71, 15, 78, 82, 94, 94,110,218,187,119,175,110,255,254,253,144, 36, 9, 13, 27, 54,132,193, 96,128, 94,175,119,249,127,211,166, - 77,184,239,190,251,240,229,151, 95,162,107,215,174, 1,253, 94, 81, 81, 97, 58,124,248,176,238,171,175,190, 66,116,116, 70,111, - 22,103, 0, 0, 32, 0, 73, 68, 65, 84, 52,234,213,171,231,242,187,124,136,162, 8,158,231,145,146,146,130,210,210, 82,232,116, -186,128,113,116,224,192, 1,221, 87, 95,125,133,168,168, 40, 36, 39, 39,187, 44,108,178, 40,122,235,131,105,213, 56,194, 72,194, -117,115,214, 52,222, 61, 57,239,191,255,126, 52,105,210, 4,122,189, 30, 90,173,214,197,237,143,211, 77,139,244,166,148,110,243, -136,194, 88, 66,200,122,183,239, 15, 33,132,172,119, 63,251,122,206,249,243,142,244,244,244,142, 25, 25, 25,179,187,118,237,186, -124,215,174, 93,203,124,241,249,226, 73, 79, 79, 79,203,200,200,152,237,254,188,151,239, 92,109,193,162,148, 18,167,231, 4, 0, -104,209,162, 5,138,138,138,160, 82,169,208,169, 83, 39, 20, 20, 20, 64,167,211, 65,161, 80,128, 82,138,241,227,199,243, 47,189, -244, 82, 28,199,113,176,219,237,174, 2,223, 71, 95,186,196,113, 28,186,117,235,134,163,206,158,159, 65, 67,134, 32, 57, 57, 25, -242, 32,142,176,176, 48,140, 31, 63,158,188,240,194, 11,130,108,189,160,148,194,104, 52, 34, 33, 33, 65,237,167,235,237,185, 53, -107,214, 68, 40,149, 74,148,151,151,187,186,200,120,158,199,241,227,199,241,206, 59,239,224,159,255,252, 39, 46, 93,186,132,196, -196, 68,188,248,226,139,186,140,140,140,231, 0,188, 25,168, 32,214,233,116, 46,113,165,209,104,240,220,115,207, 9,221,187,119, -143,211,233,116, 8, 15, 15,135,220,221,231,112, 56,208,184,113,227,128, 82, 92,146, 36,108,216,176, 1,130, 32, 4,180, 96, 57, - 19, 94, 80,156,123,247,238,117,137, 51,247, 86, 17, 33, 4, 71,143, 30,117,137,185, 32, 56, 41,199,113,208,106,181,168, 91,183, - 46,212,106, 53, 52, 26, 13, 89,190,124,249,107,141, 26, 53, 74,120,225,133, 23,184,178,178, 50,174, 91,183,110, 24, 54,108,152, - 32, 73, 18,172, 86, 43,210,210,210, 2, 90,218,182,109,219,134, 15, 63,252, 16, 79, 61,245,148, 87, 11,150, 60, 8, 82,175,255, -203,231, 56,132, 12, 18, 0,171,221, 6, 67,133,209,213,133,235,112, 56,112,120,235,161,212,115,135, 78,165,173, 95,254,165, 8, - 0,166,173,223,184,191,150, 48,236,131,149,205,122, 71, 43,246,110, 45,178,238, 13,100, 25,156, 56,113, 34, 94,127,253,117, 60, -248,224,131,216,180,105, 19,166, 76,153,130, 49, 99,198, 84,179, 96, 5, 3,155,205,246,209, 35,143, 60,242,212,234,213,171,155, -191,242,202, 43,156,108,193,210,104, 52,242, 24, 46,152,205,102, 24,141, 70,156, 56,113, 66,122,242,201, 39, 79, 90, 44,150,143, -124,241,217,137,250, 55,141,202,240, 67,227,100,174, 73,229,249,183,195,123,116,110,104, 36,234, 14,165,247, 55,235, 79, 7, 63, -218, 48, 10,148,130, 74,128, 68, 1,179,185, 18,227,199, 63,203,255,149,113, 69, 8, 25, 60,106,212,168,123,198,142, 29,219,168, -188,188,252,172,221,110,183,201,247,166, 76,153,130, 83,167, 78, 13, 36,132, 92,240,213, 37,234,131, 51,185,113,227,198,207, 58, - 28, 14, 74, 8, 57, 67, 41,205,116,222,154, 15, 32, 98,219,182,170,250, 35, 57, 57, 25, 0,210, 8, 33, 75, 1,148,186,139, 49, -119,115,168,205,102,135,209,104,246, 43,172,228,255,148, 74,193,186,145, 54,111,222, 28,247,220,115, 15, 68, 81,116, 53,210,220, -187,199, 60,133,150,191,242, 3,128, 68, 8, 65, 98, 98, 34, 6, 15, 30, 12,133, 66, 81,141, 83,174, 80, 7, 15, 30,140,137,111, - 78,197, 71, 19,251,226,195, 71, 82,209,127,102,174, 95,119, 26, 12,134,138, 45, 91,182,168, 95,124,234, 41,220,214,180, 41,234, -232,245,168, 31, 31, 11,181, 74, 9,133,187,155, 72, 96,163, 58,173,170,236, 36,158,231,209,186,117,107,228,230,230,226,252,249, -243, 56,127,254, 60, 56,142, 67,143, 30, 61, 92,150,224,211,167, 79,227,205, 55,223,132,217,108, 14,218,239, 77,155, 54, 69,223, -190,125,161, 84, 42,161,209,104,170,117, 13,202, 97, 90, 94, 94,142, 38, 77,154, 96,237,218,181,104,214,172, 89, 64,206, 22, 45, - 90,160, 87,175, 94,213,194, 83,173, 86,187,234, 13, 0,184,188,183,194,245,141,164,164,164, 26,113,110,220,119, 9,159,108,218, - 2,179, 69, 66,153,193, 86,237,133,132, 58,122,236,248,234,149,160,252, 46,115,126,244,209, 71, 40, 45, 45,117,213, 61,178,177, - 68, 54, 78,212,171, 87, 15, 31,126,248,161,175,248,145,181, 8,241,113,127, 72,144, 13, 41,249, 57, 57,113,169, 50, 50, 50,102, -123,190, 31,136,207,253,190,199,251, 22, 15, 81,150,235,183,139, 80,174, 23,228, 76,144,148,148, 4,121,156,135,156, 65, 92, 5, -168,221,142,175,191,254, 26,113,113,113,174, 35, 34, 34,194,103,130,150,199, 9, 77,204,175, 26,102,240, 99,162, 2, 23, 0,220, -157, 79, 93,227, 68, 28, 14, 7,214,172, 89, 3,119, 1, 19, 30, 30,238,183,187, 72,169, 84,246,238,212,169, 19,103, 54,155,175, - 18, 87, 25, 25, 25, 24, 53,106, 20,154, 53,107, 6, 73,146, 80, 81, 81,129, 62,125,250,136,243,231,207,239, 93, 19,129,165,209, - 84,141,231,183, 88, 44,216,186,117, 43,162,162,162, 16, 19, 19,131,232,232,104,132,135,135,203, 51, 33,105, 32,145, 65, 41,197, -208,161, 67, 93, 21,159,187,213,202, 83,108,237,218,181, 43,168,174, 55, 74, 41, 58,119,238, 12,173, 86, 11,157, 78, 7,157, 78, -135, 13, 27, 54,184,158,185,253,246,219, 33, 73, 18,226,226,226,176,123,247,110,191,221,156,148, 82,170, 80, 40, 92,207,139,162, - 72,150, 44, 89,146,158,146,146,146, 48,105,210, 36,142,231,121, 28, 60,120, 16,199,142, 29, 67,195,134, 13,131, 30,147, 85, 82, - 82,114, 37, 61, 61,221,145,158,158, 14, 0, 72, 75, 75, 67, 73, 73, 73,158,124,191,172,172,172,112,224,192,129,213,198,101, 20, - 20, 20, 20,254,237, 5,150, 36,193,110,181,195, 96, 50,161,162,220,224,178, 6,229,101,231, 70,190,242,194,243,226, 59,227, 31, - 3, 0,188,240,222,251, 40, 95,244, 71, 1,246,205,139,163,226,238,127,103,249,100, 0,247, 5,168,116, 96, 54,155,209,160, 65, - 3,236,219,183, 15,229,229,229,232,223,191,127, 53, 11,169, 28,166,129, 76,241,148, 82, 11, 33,164,251,144, 33, 67,126,153, 59, -119,110,227,150, 45, 91,146,202,202, 74, 24, 12, 6,184,159, 15, 31, 62, 76,151, 45, 91,118,206, 96, 48,116,163,148, 90,124,241, -109,200,250,244,204,160,164, 49,171,255,119,144, 31, 18,215,228,164, 62,171,184,177,189, 48, 75, 85, 89,102, 60, 97,114,208, 99, -160, 14,192, 1, 9,212, 46,193,225,236,222,250, 11,197, 85,235,198,141, 27,255,107,254,252,249,241, 38,147, 41,203,102,179, 85, -122,230,221,133, 11, 23, 98,240,224,193,255, 34,132,100, 6, 26,144,238,124, 71, 25, 25, 25, 57,101,235,214,173,105, 87,174, 92, -201,233,222,189,251,100, 66,200, 36, 74,169,165,121,243,230, 17,251,247,239,239, 33,138,162,178,164,164,228,136, 94,175,135,197, - 98,105,109,179,217, 44, 29, 59,118,220,225, 53,126, 36,192,102,179,193,104, 52,163,180,180, 28, 22,171,205, 89,102, 74,112, 56, -236,206,179, 4,187,179, 28, 85, 42,132,240, 14,109, 18, 42, 40,165,224, 8, 41,217,127,248, 74, 61, 95,229,146,175,174,172, 96, -172, 87, 94,224,144,103,141,197,196,196, 64, 20, 69,124,249,229,151,248,109,231, 6, 40,121, 10,135,221, 6,187,205, 10,135,205, - 2,145,231,241,191,131,231, 49,160, 69,120, 48,113, 68,235,212,169,131,187,187,118,197,144,174, 93,171,166,171, 9, 2,116, 42, - 21, 52,138,176, 42,203, 21, 0,234,224,128,224,146,146, 36,187, 51, 62, 62, 30,251,247,239,199,196,137, 19,241,214, 91,111, 65, -173, 86,187,102, 51, 31, 63,126, 28, 43, 87,174,196,128, 1, 3,106,236,119,217, 98, 55,121,242,100,100,103,103,227,189,247,222, - 67,135, 14, 29, 32,138, 34, 74, 74, 74,208,173, 91, 55,228,230,230, 6,197,233,222,141,167, 84, 42,171, 89,155,100,225, 87,211, - 56,114,231,124,108,104, 2,214,237, 92, 6, 2,130, 61, 95, 61, 95,173, 46, 90,184,226,231, 26,115,190,241,198, 27,213,220, 25, -140,245,170, 6,249,117,125, 48, 34,203,237,185, 3,178,113,117,242,228,201,175, 18, 66,214, 79,158, 60,249,213, 57,115,230, 28, - 13,134,207,199,253,239,157,231,187,221,174, 29, 8, 40,176, 40,165, 84,169, 84, 66,146,164,106,162,202,115, 64,173,108,242,115, - 55, 41, 6, 18, 3,146, 36,185, 18,131,103,115,149,231,121,236,222,189, 27,187,119,239,174,118,253,147, 79, 62,241, 91,129,219, -237,246,150,225,225,225,213,172, 87, 10,133, 2,147, 39, 79,198,232,209,163, 93,226, 74,161, 80,224,139, 47,190, 64,199,142, 29, - 97,177, 88, 90, 6, 24,143, 98,168, 91,183, 46, 39, 23, 64, 90,173,150, 76,156, 56,145,183,219,237,174, 48,145, 15,121,108, 90, -160,196, 34,207, 74,217,184,113, 99, 80, 22,172, 96,199, 32, 81, 74,113,232,208,161,106,162, 77,158, 5, 3, 0,135, 14, 29,114, -141,207, 10,134,147,231,121, 56, 28, 14,168,213,106,162, 80, 40,136, 66,161, 72,150,197, 21,207,243,174,248,118, 31,147, 23,200, -239, 89, 89, 89,125,252,221,207,203,203,187,105,151, 99,176,218,108, 48, 26, 44, 40,175, 48, 98,250,156,207,171, 46, 78,199, 94, - 0,123,187,143,157,136,167, 7, 13,232,235,209,207, 31, 76, 1,227,170, 20,215,172, 89, 3, 81, 20,177,118,237, 90,232,245,122, -220,123,239,189,208,235,245,120,229,149, 87,240,224,131, 15, 6,109,193,114,166,165, 82, 66, 72,247,231,158,123,238,151,183,223, -126,187,126,189,122,245, 96,177, 88, 96,181, 90, 97,177, 88,112,230,204, 25, 44, 91,182,236,178,193, 96,232, 78, 41, 45, 13,196, -183, 33,235,211, 51, 95,111,127, 33,187,255,131,195,140,199,115,127, 68, 78, 78, 33,236,246, 44, 72, 14, 59,172,246,170, 25,201, - 14,187, 29,118,187, 3, 10, 5,175,127,123,214,243,155, 36, 80,112, 28,177, 12, 31, 62,252,174, 63, 73, 92, 69, 1, 24,123,246, -236,217,242,152,152,152,195,206,203,250,236,236,108, 2, 0,137,137,137, 20,128,251, 0,247,177,206,241, 88,129, 54,109, 30,251, -221,119,223,117,139,140,140,180,112, 28, 87, 60,101,202,148,122,211,166, 77, 27, 11, 96,222,137, 19, 39, 62,127,232,161,135, 34, -220, 91,240,133,133,133, 7,198,142, 29,139, 19, 39, 78,124,238,221, 68,224,180, 96,153, 76,200, 47, 44,198, 19, 99, 95,115,153, - 14, 0, 90, 77, 84, 80, 80,140,155,128, 48, 0, 40,200, 61,131,199,158,152,168, 10,212, 16,240, 86, 1,214, 96, 12,142,187,101, -200,149, 70,117, 58, 93, 85, 55,219,218,101,248,254, 63, 99, 1,135, 21,212,102, 4,254,159,189,235, 14,143,162,122,187,231,206, -206,246,180, 13,233,133, 4, 2, 40, 37,130,128, 32,124,244, 18,122, 17,165,139, 2, 63, 68, 2, 8,138,130,136,136, 74, 11,189, - 73, 23, 16, 65,145, 46,136, 82,140,116, 1, 81,122,111,129,144,144,222,119, 55, 91,103,230,126,127,100, 55,110,194, 38,217,132, -136,138,115,158,103,158,100,167,156,185,119,110,153, 51,239,125,239,123, 45,249,128, 69, 7,193,156, 15, 34, 83, 1, 86,131, 43, -229, 68,221,221,221,225,174, 82,193, 95,163, 41, 8,226, 40,145, 64, 42,101, 33, 88, 1,194,147, 66, 33, 42,240, 46,213,117,234, -235,235, 11, 65, 16,160, 82,169,240,224,193, 3,140, 30, 61, 26, 22,139, 5,175,188,242, 10,204,102, 51,140, 70, 35, 12, 6, 3, - 34, 34, 34,144,159,159,239, 82,222,237,253,188,125,180,231,189,247,222,195, 75, 47,189,132,233,211,167, 99,210,164, 73,136,136, -136, 64,116,116, 52,182,108,217,130,200,200,200, 82,121, 29,159,167,157,211, 94, 46,197,135,242, 0,148,187,140,138,115, 22,248, -253,227,177,114, 31,255, 70,135,114,115,198,196,196, 32, 61, 61,253, 49,203,149,253,255,144,144, 16,172, 90,181,170, 66,109,214, -193, 90, 20,224,228,112,119, 39,150,167, 38, 40,240,141, 50,197,196,196, 92,141,137,137,233, 65, 8,217, 23, 19, 19,211,163, 20, - 11, 86,247, 50, 44, 92,221, 81,224,115, 85, 42,216, 98, 99,159,109, 29, 45, 35,246, 23,168,253, 69,238,216,185,171,213,106,236, -218,181, 11,246, 25, 29,142,231,148, 38,176,126,242,179,153,136,109,150, 43,199,223, 61,123,246, 68,245,234,213,139, 88,175, 84, - 42, 85,169,149, 70, 16, 4,196,199,199,227,202,149, 43,104,222,188, 57,114,115,115, 33,101, 24,188,127,249, 50,234,189,241, 6, -204, 54,139,140, 92, 46,199,219,111,191,237,146,163,250,253,251,247,189, 29,127,251,250,250, 38,182,106,213, 42,228,236,217,179, -133,142,239,182,225,179, 66,161,225,138,120,161,148,226,181,215, 94, 43, 98,181,114, 20, 87,142,219,129, 3, 7, 92, 26, 34,164, -148,162, 85,171, 86,133,214, 43, 15, 15, 15,124,255,253,247,133,101,213,186,117,235, 2,127,133,128, 0,151, 56,237,249,176, 57, -182,195,104, 52, 10, 90,173,150, 57,119,238, 28,228,114,121,161,197, 78,165, 82, 65,169, 84, 66,161, 80, 84,104, 70,208,127, 1, -148, 10, 48, 91,173, 48, 24, 12,208,233, 10, 34,132,220,189,178,179,168, 0, 51, 85,124,114,154,221, 74,165,213,106,241,203, 47, -191, 96,247,238,221,104,220,184,241, 99, 78,238,174, 88,176, 28,234, 83, 58, 33,164,229,196,137, 19,207,204,156, 57, 51,184, 74, -149, 42,176, 88, 44,120,248,240, 33, 54,108,216,144,148,159,159,223,146, 82,154,238,250, 67, 0,172, 86, 14,198,124, 19,114,243, -180,248,108,214,198, 18,171, 30, 0,100,165,221, 68,207, 94,253,228, 79,175,140,104, 54,128,209,197, 94,230,155,241,103,204,170, - 60, 74,233,144,114,138,182,118,115,231,206, 29,208,184,113, 99,143,220,220,220,235, 0,240,214, 91,111,225,252,249,243, 29, 8, - 33, 87, 41,165, 71, 8, 33,145,141, 26, 53,234,240,214, 91,111, 1, 0,190,252,242, 75,236,219,183,239, 23, 74,233,145,146,234, -146,125,136, 80,167, 51,192, 83, 19,132, 71,247,143,149,153, 22,153,196, 8, 42, 8,101,126,248, 57,179, 90, 57,246, 79,229,168, - 63,212,238,243,103,127, 81,119,125,237, 13,116, 29, 61, 7,106, 41, 48,123, 88, 11, 68,104, 0,168,170, 64,214,250, 67, 16, 77, -120,193,133,163,127,112,137,127,210,234,213, 56,127,187, 32,194, 75,168,159, 31, 38, 14, 24, 0,106, 5, 78, 93,187,134,173, 71, -142, 96, 64,187,118, 80, 43,149, 46,127,168,216, 63,190,239,222,189,139, 83,167, 78,161, 78,157, 58,184,115,231, 78,145,112, 18, -148, 82,151,242, 79, 41,165,246,201, 73, 10,133, 2, 82,169, 20, 41, 41, 41,232,209,163, 71,225, 7,254,177, 99,199, 48,113,226, - 68, 12, 31, 62, 28,109,219,182,117,234, 23, 91,156,211,207,207,175,208,112, 80,124, 2,130,227,176,109,121,202,200, 25,167, 29, - 21, 45,119, 71,206, 89,179,102, 57,157, 40,225, 10,167,163, 22, 41, 5,231,138, 89,143, 96,247,135,178, 11,162,226,191, 1,120, -219,247, 77,158, 60,121,138,171,215, 57,254,182, 91,192, 92, 29,170,100,237, 99,158,206, 94,178,118,115,177, 51,184,185,185, 97, -204,152, 49,152, 54,109, 26,124,125,125,203,244,157,177, 43,215,210,240,195, 15,143, 55,178, 61,123,246,148, 53, 68,120,195,203, -203,235,165,246,237,219, 35, 55, 55, 23, 9, 9, 9,112,115,115, 67,189,133, 11,113,121,244,104,188,184,122, 53,152,246,237, 11, -131,164, 94,190,124, 25, 42,149,234, 70,121, 45, 6, 30, 30, 30,240,246,246, 46, 28, 83,183, 11, 45, 7, 11, 22,117,161, 18,226, -167,159,126,114,250,149, 88, 17, 31, 44,123,227, 63,115,230, 76, 17,255, 43, 71,193,115,230,204,153, 66, 11,150,253, 50, 87,134, -182, 84, 42, 21,181,243,169,213,106, 84,169, 82, 5, 10,133, 2, 42,149,170,136,184,114,197,122, 87, 86, 32, 81,149, 74,117,214, -205,205, 77, 99, 63, 46,149, 74,161,213,106,115, 50, 51, 51,155,254,171,135, 8, 65,193, 89, 56, 24, 12, 70,232,180,149, 31, 75, -210, 62,225,100,215,174, 93,120,249,229,151, 31, 19, 87,246,103, 93, 1,209,145, 72, 8,105,187,116,233,210,223, 22, 45, 90,228, -173,211,233,240,213, 87, 95,229,234,116,186,182, 14,126, 68,174,113, 9, 20, 86,139, 5,249, 70, 19,244,186,130,103,112,239,234, -206,103, 90, 88,215,174, 93,123, 88,116,116,180,159, 86,171,189, 39, 8,127,218, 83, 22, 45, 90,132,123,247,238, 13, 3,112, 4, -192,234, 89,179,102,213,170, 95,191,126, 85, 0,152, 53,107, 86, 2,128,213,165,245, 29, 22,219, 16,161, 78, 87, 96,245, 48,234, - 51, 42,167,158,218, 68, 70, 73, 62, 87, 21, 25,202,177,207, 92,150, 72, 36, 24, 59,118, 44, 46, 95,186,132, 14,193,121,136, 8, -244, 0,205,123, 4, 89,251, 79,113, 49, 93,133, 5,139,127, 42, 55,247, 54,135, 73, 60, 11,182,109,115,122,236, 94,239,222,229, -202,251,173, 91,183,160, 82,169,192,243,252, 99,239,155,242,230,223, 81,184, 44, 94,188, 24, 19, 39, 78,196,198,141, 27,113,249, -242,101,188,248,226,139,232,216,177, 35,210,210,210,112,233,210, 37,152, 76, 38,151,211,233,232, 23,119, 43,238, 26, 98, 79,237, - 71,124,226,125, 36,165, 36, 84,184,220, 29, 57,139, 11,172, 93,177, 23,240, 90, 84,163, 10,113,126,250,233,167, 72, 75, 75, 43, - 98,185,114,156, 24, 86,146, 5,171,184, 22, 41,134,140, 98,190, 78,246,223,230, 98, 98,167,248,239,226,231, 3, 64, 26, 0, 73, - 25,215, 21,255,157, 17, 19, 19,115,212,110,249,178,241, 74, 74,242,191,114, 58, 68,104, 23, 67,246, 6, 82,220, 50,101,255,223, -205,205, 13, 30, 30, 30,240,240,240,128,167,167,103,153,150, 33,187,192,106, 21,167, 45,226,203,101,183,100, 1,192,240,225,195, - 31,179, 96, 57, 6,228,116, 6,147,201,116,236,216,177, 99, 13,123,246,236, 41,185,113,227, 6, 36, 18, 9, 4, 65,128,185,121, -115,188,184,122, 53,174,188,247, 30,218, 60,120, 0,163,197, 2,165, 82,137,131, 7, 15, 90,242,243,243,143,149,183,191,112, 20, - 88,110,110,110,240,242,242, 42, 20, 24,174,168,114,123,163, 45,205,191,193,190, 57, 58,249,187,210,152,237, 47, 82, 71,191, 27, - 66, 8, 12, 6, 67,161,179,166, 43, 86, 70,199, 33, 66,199,134,199, 48, 12, 52, 26, 77, 97,167, 97,183, 96,185,106,189, 43, 43, -144,168, 90,173,246,188,121,243,102, 77,123, 24,137,140,140, 12,180,111,223,254,246,191,254, 77, 43, 0, 22,142,135,206, 96,132, -206,144, 95,153,195, 90, 0,128,111,190,249, 6,119,239,222,133,197, 98, 65, 76, 76,204, 99,194,170, 60, 78,238, 78,234,213,221, - 70,141, 26, 9, 93,186,116,193,153, 51,103,160, 80, 40,172,148,210,114,199,175, 18,168, 0, 11,199,193,104, 48, 64,167,215,255, - 39, 44,151, 55,111,222,204,245,240,240, 56, 13,192,253,246,237,219, 18, 55, 55, 55,212,168, 81, 3, 70,163, 49, 23, 64,174,237, -249,154, 9, 33,115,222,126,251,237, 37, 0, 96,181, 90,231,148,230,211, 70, 41,133,149,179,137,245, 74,124,142,246,186, 84, 82, -159, 84,145,112, 41,142, 47, 84, 65, 16, 48,242,173,183,208, 49, 56, 15,125, 26,251, 65,159,124, 27,106, 47, 63, 16, 77, 53, 44, - 88,252, 19,174,198,185,236,106, 73, 1,160,115,235,222,104, 80,231,241,240, 94, 45, 59, 20,124,139,157,252,229, 44, 82, 51,146, -202,157,119,189, 94, 95,162,165,202, 85, 11,150,157,211, 30, 46, 69, 42,149,162, 97,195,134,120,238,185,231,112,244,232, 81, 52, -106,212, 8,119,238,220,193,157, 59,119,240,224,193, 3, 92,190,124, 25,217,217,217,229, 46,163,239, 15,109, 69,182, 54, 11,114, -153, 28, 89, 57, 25,136,127,116, 31, 1, 62,129, 79, 92,238,133, 31, 8,221, 63, 3, 0, 4,251,121,149, 75, 96, 57,114,206,159, - 63,255, 49,209, 94, 9,161,119,206,150,241,187,188,215,255,229, 96, 75,176, 10, 25,170, 84,169,162,114, 28, 63,101, 24, 6, 94, - 94, 94,100,238,220,185, 18,134, 97,224,225,225, 1, 47, 47, 47,216,205,130,101, 65, 46,151, 27,170, 85,171,166,178, 87, 64,123, - 3,244,244,244,148,204,157, 59,151,172, 91,183,174, 68,171, 86, 25, 62, 88,139,134, 12, 25,242,191,196,196, 68,111,127,127,127, - 36, 39, 39, 67, 46,151, 23, 52,138,118,237,208, 42, 46, 14,150, 2,159, 34,220,186,117, 11,107,215,174,213,155, 76,166, 69,229, -125, 80,238,238,238,240,241,241, 41, 28, 26,180, 91,112, 28,196,162, 75,174,149,165,153,226,237, 95,124, 21, 25, 42, 42, 46,178, - 70,141, 26, 85, 68,108,185, 10,153, 76,198,217, 35,181, 51, 12, 3,139,197,130, 70,141, 26, 33, 45, 45,173,176,177, 56, 90,238, - 92, 17, 88,101, 5, 18,101, 89, 22,102,179, 25,173, 91,183, 6, 33, 4,203,151, 47,127, 54,134, 29, 5,129,184,187,251, 32, 56, -248,121,248,249, 27, 33, 8,149,183,250, 11,199,113,136,142,142, 46, 98,177,178,207, 84,180, 15,241, 83, 74, 97,181, 90, 43, 28, -180,213,222,174,159, 36,254, 27, 5, 10,135,182,244,122,227,191,174, 8, 67, 67, 67, 61,109, 67,134,197,225,124,182, 31,254, 12, -201, 64, 8,153,153,152,152, 88,191,118,237,218,104,211,166, 13, 14, 28, 56,176, 7,192,238, 98,150,194, 21,246,255, 75, 47, 11, -219,115, 52,154,160,215, 87,190, 53,180,180, 15,189, 39, 17,110,211,166,125,130,142, 65, 57,120,229, 69, 47,124,189,239, 87, 12, -110,168, 2,204,138,114,243,217,211,226, 19, 82, 29,213, 95,104,246,216,113,165, 87,193,208, 92,245, 23,154, 65,146,112,167,220, -121,119, 76,179,147,208, 1, 79,244, 60, 71,140, 24,129, 15, 63,252, 16,157, 58,117,194,157, 59,119,112,252,248,113,220,185,115, - 7,227,198,141, 67,100,100, 36, 94,124,241,197,114,113,238,141,221,129, 60, 93, 46, 24,194, 32, 43, 55, 19, 70,147, 1,147,162, -167, 61,113,185,219,113, 63, 54, 6, 0,176,243,231,243, 21,230,156, 50,101, 10, 82, 82, 82,138, 88,174,158,196,239,234,223, 10, -167, 2, 43, 51, 51,211,233,120,159,159,159, 95,106, 84, 84,148,127,114,114, 50,220,221,221,203, 20, 87,132,144,142,246, 88, 25, - 41, 41, 41, 78, 57, 61, 60, 60, 44, 81, 81, 81,210,160,160,160, 34,179, 7,221,220,220, 30,107, 92,197, 57,109, 29,147,150, 16, - 50,178, 69,139, 22, 95, 31, 56,112, 64,253,220,115,207, 33, 47, 47, 15,148, 82,108,220,184, 17, 99,199,142,133, 82,169,196,173, - 91,183,208,171, 87,175,252,252,252,252,145,142, 49,176,156,113,150,244, 69,102,143, 98,239, 68, 92,149,154,119,199, 70,186,116, -233, 82,204,158, 61, 27, 83,166, 76, 41,181, 96,214,172, 89, 3, 20, 27,206,115,198, 73, 41,197,130, 5, 11, 42,141, 51, 51, 51, -115, 99, 49,235,211,242, 62,125,250,176, 9, 9, 9, 69, 68,149,227,230,164, 67, 42,194, 89, 86, 32, 81,137, 68,130,128,128, 0, -204,156, 57, 19, 62, 62, 62, 8, 12, 12,124,204,242, 82, 86, 25, 85,240, 37,240,151,114,242, 84, 56, 55,127,206, 39, 45,191,218, -188, 87,170,144, 3,167,143,239, 68, 94,118, 74, 81, 11,172,229,207, 41,209,242, 70, 29, 96, 62,255,139, 75,233, 52,153, 76,152, - 55,111, 30, 62,251,236, 51,124,246,217,103,174,148,251, 19,229,221, 21,145,229,148, 83,160, 68,237,230, 13,165, 91, 48,234, 69, -122, 67, 40,103,172,206,191,169,220,133,164,164, 36, 4, 7, 7,227,206,157, 59, 47, 72, 36,146, 34,138,128,231,121,147, 82,169, - 60,233, 2,231,149, 93,187,118,213,159, 58,117, 42,102,207,158, 13, 0, 67,143, 29, 59, 54,144, 16, 98, 44, 75,164, 21,231, 20, - 40, 37, 42,181, 6, 74,183, 32,212,123, 65, 3, 65,224, 42, 37,239,246,151, 95,113,235, 85, 57, 3, 73, 59,237,235, 0,224,247, - 95,246, 96,218,123, 47, 96,227,143,191, 97,217, 89,160,129, 38, 13,245,252,210, 33,164,223,192, 7,131, 95,194,130,111,255, 0, - 0, 28, 63, 86,102, 25,149, 26,215,216,104,176, 60, 81,222, 29, 45, 85,142,247, 41,203, 7,203, 25,167,253,227, 80,171,213, 34, - 39, 39, 7, 95,127,253, 53,134, 13, 27,134,180,180, 52, 60,120,240, 0,183,111,223,198,119,223,125, 87, 56, 59,189,188,101,244, -254, 91, 31, 99,234,130, 9,160,160,168, 93,179, 30, 38,143,254, 12, 77, 26, 52,127,226,114, 47,142,178,172, 87,165,113, 46, 93, -186,180, 66,117,233, 63, 33,176, 74,251,138, 96, 24, 6,190,190,190,133,149,195,177,226, 85,228, 75, 87, 34,145,128,227,184, 66, -223, 30,251, 6, 0, 61,123,246,196, 15, 63,252,224,202,204,136, 3,132,144,215,235,214,173,187,225,243,207, 63,119,111,211,166, - 13, 27, 28, 28,140, 38, 77,154,224,214,173, 91,248,241,199, 31,173, 43, 87,174,212,231,231,231, 15,167,148,254, 92,145,126,201, -190,244,140,227, 86,158,175, 28,139,197,146,112,231,206,157,160, 5, 11, 22, 72, 24,134,193,146, 37, 75, 10, 27,163, 61, 80,171, - 35,142, 31, 63,206, 9,130, 80,234,144,140,213,106, 77,184,115,231, 78,208,194,133, 11, 37,132,144, 66, 78,134, 97,224,184,176, -114,121, 56,157,137, 75,251,132, 7,103,155,179,180, 59, 43,227,210, 2,137,178, 44,139, 91,183,110, 97,218,180,105, 32,132, 96, -231,206,103,195, 71,231,242,141,140,117, 47,214,243,247,238,217,181,101,125, 16, 2,139,249,241, 17, 32,247,108, 93,161,184,234, -179,112, 43,118,191, 63,192, 21,177,115,247,228,201,147, 85,230,205,155,199, 74, 36, 18, 44, 94,188,184, 72,176,223,226,229,126, -226,196, 9,174, 34,195,123,246,246,108,177, 88, 96, 48, 84,204,106, 66, 41, 61, 21, 51,107,106,212,166,111,126,146, 18, 98,198, -233, 99, 59,145,155,227,124,106,186, 92,202, 98,221,215,187, 56,153, 84,146,240, 55, 23,221,178,190,125,251, 78,221,177, 99, 7, - 11,224,234, 19,240,236, 89,191,126,125,215,126,253,250, 85,169, 85,171, 22,190,250,234, 43,153, 70,163,105, 76, 8, 33,206, 68, - 90, 25,207,113,207,156, 89, 83,223,252,250,219,159,228, 12,177,224,244,241,157,200, 45, 38,214, 31,183, 70, 75,177,126,227, 46, -139, 76, 38,189, 89, 86,191,238,104,189,170,204, 23, 98,175, 33,163,209,103,233, 50,212,104,210, 25,115,230,118,196,250, 89,253, -176,168,139, 12,150,237,131,209,160,239, 38,108,153,222, 13, 0, 16,188,222, 69,235, 8, 43,195, 67, 39, 22,170,156, 92,165, 77, -212,148,207, 74,106,207,123,105,125,120,121, 45, 88, 12,195,160,122,245,234,168, 81,163, 6, 90,180,104,129, 70,141, 26,161, 93, -187,118,184,116,233, 18, 46, 93,186,132,113,227,198,149, 40,174, 92, 41,163,182,255, 23,133,223, 90,221,124,226,178, 41, 94,238, -149, 1, 87,234, 82,116,116, 52, 0,252, 39,172, 89,108, 69, 30,158,189, 66, 62,233,210, 49,118, 78,179,217, 92, 56,244,230, 24, - 87,201,238,244,238,226, 12,189,159, 9, 33,145,159,124,242,201,123, 74,165,178, 93,126,126,254,243, 54, 11,204, 45,147,201,116, -196, 96, 48, 44,166,148,230, 60, 73, 90, 29,195, 50, 56, 75, 66,105,215,102,103,103,119,238,220,185,243,207, 44,203, 86, 47,190, - 16,175,179, 6, 44, 8,194,131,212,212,212, 82,167,170,103,102,102,118,238,212,169,147, 83, 78,103, 29,131, 43,156,206,202, 71, - 16,132, 18,197,149, 43, 29, 80, 89,129, 68, 89,150,133,155,155, 27,190,255,254,123,248,250,250, 62, 83, 13,236,226,181,180,121, -165, 29,111,235,171, 56, 6,192,175,207,194,173, 15,143,102,152,195,219,250,202,227,119,127, 48, 48,172,180,107, 50, 50, 50, 58, - 13, 27, 54,108, 63,203,178,213,139, 63,127,103,101,193,113,220,253,148,148,148,114,135, 61,160,148,226,230,205,155,194,136, 17, - 35, 50,210,211,211,251, 85, 36,255,147,167, 45, 91, 52,251,243,177, 62, 93,162,154, 53, 1, 3,152, 75,118,234,165, 4,160,172, - 84,146, 48,113,202,146,183,254,206, 50,163,148,158, 39,132,204,108,210,164,201, 56,148, 24, 23, 28,185, 46,240, 88, 8, 33,139, -186,118,237,250,193, 59,239,188,163,233,212,169,147, 37, 36, 36,228,156,163,117,222,245,122,148,250,246,139,117,253, 66,187,116, -124,185, 51, 8,161,102,179,169,140, 15, 35, 80, 80, 74,101, 50,233,205,179, 23,147, 26,148,101,157,183,173,152, 81,233, 67,243, - 99,198,140,193,152, 49, 99, 10,235,211,242,229,173,176,227,202, 73,244,109,144, 8,211,218,150, 32,158, 97, 46,127,232, 1,192, -199,159,140,168, 76, 75,102,145,201, 87,149,229,131, 37,145, 72,144,145,145,129, 91,183,110, 33, 53, 53, 21,249,249,249,184,126, -253, 58, 44, 22, 11,178,179,179,241,194, 11, 47, 84, 56,157,149, 85, 70,127, 39,231,127,105,152,176, 92, 2,139,227,184,196,178, - 86, 61,183, 90,173,229,154,101, 36,149, 74,141,207, 61,247, 28,113, 54,219,192,254,191,155,155,155,193,197,142, 49, 7,192, 52, - 0,211,108,235, 77, 33, 43, 43,235,137, 85, 32,207,243, 73,225,225,225,146,146,132,139,237,217,164,150,145, 54, 61,128,230,149, -252, 34,168,116, 78, 39,229,163,175, 83,167, 78,161, 47, 87,241,152, 38,182, 69, 80, 75,245,186, 45, 43,144,168, 94,175, 79,238, -220,185, 51,239,120,220, 49, 16,233, 51, 13, 66,227,187, 13,252, 95,248,209, 12,115, 56, 0,216, 69, 22, 40,141, 47,165,220, 13, - 0,218,252,213, 73,139,139,139, 51,191,252,242,203,223,104,181,218,209,148,210, 10,123,233, 79,249,116,249,148,127, 91,177, 80, - 74,207, 3,120,179, 18,120,174, 16, 66, 70,205,155, 55,175,223,188,121,243,106, 2,240, 5,160,116, 85,164, 21, 17, 89,215,211, - 43, 61, 54, 24,199,113,137, 53,106,212, 40,151,165,166,172, 62,222,106,181,150,250,158,184, 10, 47, 76, 57, 3, 20, 44,227,150, -233, 18,167,209,104,204,106,222,188,185,180,156,121, 75,115, 53,239, 65, 65, 65, 8, 14, 14, 46,252,107, 71,241,253,101,165,147, -227,184,196,208,208, 80,248,250,250,150, 24,161,189,184,207,149, 43,156,149, 93, 70,165,113, 6, 7,111,170,116,206,202,210, 11, -207,180,192,178,175, 49, 88,153, 72, 77, 77,253, 75,214, 70,161,149, 97, 94,251,211, 82,212, 4,255, 81,100,102,102,250, 60, 41, - 71, 89,129, 68, 83, 83, 83,219,253, 87,159,239,209,116,243,208,199,246,217,196,214,223, 13,189, 94, 31, 70, 41,173,144,103,126, -223,190,125,121,136,112, 20,196, 27,255,137,105,203,200,200,168,244, 62,253,175,120, 79,100,101,101,213,255,175,230,253,175, 72, -231,191,133,243,223, 14, 70,124, 4, 34, 68,136, 40, 65, 24,136, 34, 73,132, 8, 17, 34, 42, 8, 2,160, 99, 9,157,171,203, 51, -119, 8, 33, 29, 43,208,121,199,138,156, 34,167,200, 41,114,138,156, 34,167,200,249,223,226, 44,139,187,178,103, 14,255,157, 95, -169,127,217, 6,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,127,109, 19,135, 8, 69,136, 16, 33, 66,132, 8, - 17, 34, 42, 25,162,192, 18, 33, 66,132, 8, 17, 34, 68,136, 16, 5,150, 8, 17, 34, 68,136, 16, 33, 66,132, 40,176, 68,136, 16, - 33, 66,132, 8, 17, 34, 68,129, 37, 66,132, 8, 17, 34, 68,136, 16, 33,162,226, 32,149, 24,143, 83,132, 8, 17, 34, 68,136, 16, - 33, 66, 4,108,145,220, 9, 33,133, 42,139, 82, 74,196,199, 34, 66,132, 8, 17, 34, 68,136,120,154,120,214,180, 8, 43, 10, 43, - 17, 34, 68,136, 16, 33, 66,196, 63, 1,207,146, 22, 97,156, 41, 71, 17, 34, 68,136, 16, 33, 66,132,136,167,141,103, 73,139, 48, -207,162,106, 20, 33, 66,132, 8, 17, 34, 68,252,251,240,204, 90,176, 68, 43,150, 8, 17, 34, 68,136, 16, 33,226,239,194,179,164, - 69,196, 89,132, 34, 68,136, 16, 33, 66,132, 8, 17,149, 12, 49, 14,150, 8, 17, 34, 68,136, 16, 33, 66,196,191, 73, 96, 17, 66, - 58,138,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,138, 2, 75,132, 8, 17, 34, 68,136, 16, 33, 66,132, 40,176, 68,136, - 16, 33, 66,132, 8, 17, 34, 68,129, 37, 66,132, 8, 17, 34, 68,136, 16, 33, 10, 44, 17, 34, 68,136, 16, 33, 66,132, 8, 17,162, -192, 18, 33, 66,132, 8, 17, 34, 68,136,248,155, 64, 0, 56,157, 9, 64, 41,141,117,153,164, 2,179, 9,202,226, 23, 57, 69, 78, -145, 83,228, 20, 57, 69, 78,145,243,217,227, 44,139,187, 60,250,227, 31, 13, 74,233, 95,182, 1,232, 40,114,138,156, 34,167,200, - 41,114,138,156, 34,167,200,249, 95,219,196, 33, 66, 17,101,125, 97,176,132, 16,182,162,199,159, 22,167, 8, 17, 34, 68,136, 16, -241, 79, 2, 91,194, 11,174, 22,128, 41, 0,188, 28,118,159,165,148,198, 20, 59,239, 91, 0,106,135, 93,122, 0,211, 41,165,119, - 92,184,183,204,198,175,176,109, 2, 0, 35, 0, 19, 0, 45, 0,171, 88, 60,127,187,184,106, 14,160,135,237,255,125,148,210,211, -229, 57,254,180, 56,159, 22,130,131,131, 85,222,222,222,157,206,159, 63, 47,191,126,253, 58, 78,156, 56, 65,215,173, 91,103,201, -206,206, 62,148,148,148,100, 16,107,204, 51, 81,231, 59, 3,152,108,251, 57,135, 82,122,240, 9,249,136, 90,173, 30,231,230,230, -214, 77,161, 80, 4,115, 28, 71,242,243,243,147,244,122,253,207, 28,199, 45,164,148, 10, 21,224,108,226,235,235, 59, 42, 50, 50, -242,185,184,184,184,132,135, 15, 31,110, 6,112, 16, 64,231,176,176,176, 33, 17, 17, 17, 85,175, 94,189,122, 59, 35, 35, 99, 53, -165,244,247,191, 43,157, 34, 68,136, 2,203, 57,166, 81, 74, 7, 23,107,128,143,157,212,190,125,251, 94,135, 14, 29, 82, 11,130, - 0,251,166, 82,169, 56, 0, 67,203,184,175,207,169, 83,167,194, 71,143, 30,221, 39, 41, 41,233, 37,173, 86,219, 20, 0,212,106, -245,111,254,254,254,191, 47, 93,186,244,187, 78,157, 58, 37,218,132, 86,185, 44, 35, 82,169,116,152,183,183,119, 55,142,227, 26, - 81, 74, 33,149, 74,207,103,103,103, 31,180, 90,173,235, 41,165,214, 10,116,102,114,150,101,199, 40, 20,138,206, 28,199,213, 7, - 0,150,101, 47,155, 76,166,131, 28,199,173,160,148,154, 43,192,169,148,203,229, 99, 60, 61, 61,163,204,102,115,125, 0,144,203, -229,151,243,242,242,126, 54,155,205, 43, 40,165,198,127,192,139,134, 5,208,131, 82, 42, 5, 0,137, 68,210,187,121,243,230,225, -132, 16,129, 16, 66, 41,165,132, 97,152,134, 60,207, 51,182,243,123, 16, 66,126,167,148,114,229,225,124,249,229,151,171,178, 44, - 75, 41,165,132, 82,202, 48, 12,211,160, 60,156,149, 5, 63, 63,191,217,130, 32, 4,151,118,142,151,151,215, 75,231,207,159,175, -189,109,219, 54,126,237,218,181, 57,195,135, 15,119, 31, 61,122, 52,187,124,249,242, 21, 0,198, 23, 63,223,215,215,119, 17,195, - 48,190,174,220, 95, 16,132,140,140,140,140, 9, 98,151,244,183, 99,242,202, 88,109,107, 74,129, 49, 81, 30,140, 77,184, 84, 24, - 33, 33, 33, 95,191,249,230,155, 3,235,215,175,207, 82, 74, 97,181, 90, 97, 50,153,106,159, 62,125,186,237,206,157, 59, 95, 2, -208,175,156,237,178,199,228,201,147,191,156, 62,125,186,159, 84, 42, 37, 86,171,181,217,182,109,219,186,140, 26, 53,234,226,234, -213,171, 95,236,223,191,191,135,125,255,167,159,126,218,149, 16,242, 30,165,244,187,167,157, 78, 17, 34, 68,148, 44,176,220,108, -141, 57, 21,192, 89,187, 5,171,248, 73,135, 15, 31,222,203,178,172,221,130,213, 84,175,215, 7, 20,179,122, 57, 67,181, 33, 67, -134, 52,223,177, 99,199,236,254,253,251,167,168,213,234,231, 94,125,245, 85, 45, 33, 68,178,109,219,182,134, 53,106,212, 80,245, -236,217,115, 72,251,246,237,223,223,191,127,255, 9, 0,233, 46,118, 60,245,170, 84,169,178,107,222,188,121,225,157, 59,119,150, -249,250,250,130, 82,138,164,164,164,144, 31,127,252,177,203,231,159,127,254, 62, 33,228, 21, 74,233,181,242,124, 41,170, 84,170, - 29,159,127,254,121, 80,151, 46, 93,216,192,192, 64, 24,141, 70, 92,191,126,189,227,193,131, 7, 91,175, 89,179,102, 60, 33,164, -175,171, 95,137, 54,206,166, 94, 94, 94, 59,191,250,240,195,128,102,195,134,177, 85,170, 84, 1,165, 20,233,233,233, 29, 79,110, -218,212, 54,122,222,188,241,132,144,215, 40,165,103,255, 73, 21, 69, 46,151, 51,155, 55,111,126, 81, 46,151, 3, 0,204,102, 51, - 34, 35, 35,201,147,112, 74,165, 82,102,225,194,133,141, 88,150,133,197, 98, 17,180, 90, 45,125,245,213, 87,255,150, 97,107, 66, - 72,104, 82, 82,146,151, 76, 38,115,122,156,231,121,180,110,221,186,186, 76, 38,195,194,133, 11,173, 25, 25, 25, 13,191,248,226, -139,243, 91,182,108,241, 93,177, 98, 69, 95,103, 2,139, 97, 24,223,196,196, 68,167,156, 60,207,195, 98,177,128,227, 56,152,205, -102,212,173, 91, 87,236,141,254, 25, 8, 7,128,159, 46, 25, 1,160,202,147,146,185,185,185,213, 25, 52,104, 16,155,158,158, 14, -169, 84, 10,139,197,130,148,148, 20, 68, 70, 70, 74,190,249,230,155,231,203,203, 87,187,118,237, 81, 49, 49, 49,254, 63,253,244, -147,229,155,111,190, 49,117,236,216, 81, 54,124,248,112,207,214,173, 91,183, 10, 13, 13,101, 54,108,216, 96,138,141,141,181,188, -254,250,235,138,217,179,103,251,239,223,191,127, 32,128,239,158,118, 58, 69,136, 16, 81,178,192,178,227, 44,165,180, 55, 0,200, -100,178,134, 85,171, 86,253,154,227,184,226,101,185,148, 0, 0, 32, 0, 73, 68, 65, 84, 64,155, 21, 39, 69, 42,149, 46,180, 88, - 44, 23,108, 47,168, 61,130, 32,244, 42,203,114, 53,100,200,144,230,251,247,239, 95,112,250,244,233,220,204,204,204,192,189,123, -247, 26,223,127,255,253, 7, 0, 16, 23, 23, 23,209,179,103,207,144,177, 99,199, 38,118,234,212,105,105,187,118,237,222, 57,114, -228,200,207, 40, 24,122, 44, 85, 92, 69, 70, 70,158, 58,126,252,184,135, 70,163, 41,170,230,170, 85,195, 59,239,188, 35,235,213, -171, 87,141, 14, 29, 58,252, 74, 8,105, 69, 41,189,226,138, 16,170, 85,171, 86,236,225,195,135,221,189,189,189,145,147,147,131, -148,148, 20,228,231,231,195,211,211, 19,253,251,247,151,181,105,217,162,234,216,113,227, 99, 9, 33, 29, 93, 17, 89,132,144,166, - 45,234,213,139,221, 18, 19,227,110,125,248, 16, 42,149, 10, 58,157, 14, 0,224,225,225,129,151,170, 87,103,255,216,180, 41,100, -240,164, 73,118,206,167, 46,178, 8, 33, 10, 0,160,148,154, 8, 33,251, 36, 18, 73,111,185, 92,206,244,238,221, 27,177,177,177, -196,104, 52,178, 0,160, 84, 42,185,222,189,123, 67,165, 82,193,108, 54, 11, 0,246,149,100,105,114,198, 41,149, 74,153,118,237, -218,229,159, 61,123, 54,203,206,169, 86,171,173,237,218,181,243,145,203,229, 42,142,227,104,105,156,127,145,136,196,221,187,119, -139,236,211,106,181, 72, 79, 79, 71,102,102, 38, 76, 38, 19,114,114,114, 32, 8, 2, 81,169, 84,233,130, 32,128, 97, 10,140,109, - 37,113,202,100, 50,220,186,117,171,200, 62,142,227,160,215,235, 97, 50,153, 96,177, 88,160,213,106, 85, 30, 30, 30,181,234,213, -171,151, 8, 96, 79, 86, 86,214,194,148,148,148,120,177,123,250, 91,240,112,223, 5, 99, 24, 0, 51,128,251,149,192, 39, 0,192, -137, 19, 39,144,154,154,138,140,140, 12,164,167,167, 35, 52, 52, 20, 21, 25,118,187,121,243,230,210,134, 13, 27,146,139, 23, 47, -254, 0,224,203,173, 91,183,246,201,202,202, 90, 53,113,226,196, 42,243,231,207,207,154, 52,105, 82, 52,128,221, 91,183,110, 29, - 86,191,126,253,158,151, 47, 95, 94,242,119,164, 83,132,136,191, 0, 77, 0,248,217,254,207,176,245,187, 62, 14,191, 47,217,218, -173,253, 60, 51, 0,185,147,191,118,216,127,167, 3,248,221,225, 58,251,239, 39,134,125, 40,134,218, 55,103, 39, 5, 4, 4,140, -107,223,190,253,130,115,231,206,213, 77, 78, 78,246, 78, 78, 78,246, 62,119,238, 92,221,246,237,219, 47, 8, 8, 8, 24,103, 63, -207, 54,179, 0, 14,191, 29,167, 90,202, 78,157, 58, 21,190,107,215,174, 57,177,177,177,185, 13, 27, 54, 52, 31, 62,124,152,235, -212,169, 83, 26, 0, 14, 0,215,169, 83,167,180, 35, 71,142,240,205,154, 53, 83,237,223,191, 63,225,215, 95,127, 93,180, 99,199, -142, 0, 0,146, 18, 56, 65, 8,145,106, 52,154,239,143, 29, 59,246,152,184,114, 68,213,170, 85,177,111,223, 62, 79,141, 70,179, -135, 16, 34, 43, 37,157, 32,132, 40,149, 74,229,206, 35, 71,142,184,123,120,120, 32, 45, 45, 13, 82,169, 20,254,254,254,200,205, -205, 69, 74,114, 50,226,111,223, 6, 99, 54, 99,241,172, 25, 30, 42,149,106, 7, 33, 68, 94, 22,167,151,151,215,206, 45,179,103, -187,103,198,198,226,226,204,153,176, 88, 44,133, 67,171, 22,139, 5,191,142, 30,141,244, 95,126,193,134,105,211,220,189,188,188, -118, 18, 66,148,165,113, 86, 6, 28, 57, 9, 33,163, 1,100, 1,200, 34,132,140,166,148,158,142,140,140, 60,119,253,250,117,180, -106,213, 10,219,183,111,111, 48,113,226,196,209, 19, 39, 78, 28,189,125,251,246, 6,173, 90,181,194,245,235,215, 17, 25, 25,121, -206,209, 87,202, 21,206, 99,199,142,161,125,251,246,217,219,183,111,143,152, 54,109,218,236,105,211,166,205,222,186,117,107,141, -246,237,219,103, 47, 89,178,196, 84, 26,231, 95,145,119, 71,203,146,227, 38, 8,127,190, 91,130,131,131,211,118,237,218,133,254, -253,251, 51,114,185, 60,121,192,128, 1,138,147, 39, 79, 82, 0,251,202,147, 78,163,209, 8,131,193, 0,189, 94,143,184,184, 56, -213,188,121,243, 90,126,246,217,103, 53, 99, 99, 99, 67,166, 76,153, 18,237,231,231,119, 62, 48, 48, 48,252,105,231, 93,228, 4, - 0,164, 0,176,216, 62,234,226,159,132,179, 67,135, 14, 47,212,172, 89, 51, 96,219, 85,111,100,203,106, 67,144,105, 32,200, 52, -224,125,154,224,174,188, 43,194,194,194, 2, 60, 60, 60,154,151,135,147, 82,250,243,133, 11, 23,186, 82, 74, 87, 83, 74,121, 74, -233,142, 73,147, 38,141, 32,132,236,156, 52,105,210,219,148,210, 29,182,253,235, 46, 93,186,212,147, 82,122,228,239, 72,167, 88, -151, 68,206, 10,126,224,151,166, 69,252, 8, 33,251, 8, 33,251, 62,250,232,163,118, 0,124,138,253,254, 63,199,243, 0,200,157, -253,181,111, 14,251,253, 0,116,119,184,206,175,178,242,195, 56, 60, 44, 66, 41,181,127,137,159, 37,132,236, 5,112, 86, 38,147, - 53,124,241,197, 23,123, 31, 56,112,192,195,207,239,207,251,250,249,249, 97,199,142, 29, 30,245,234,213,235, 45,147,201, 26, 2, - 56,235,233,233,185, 23, 78,134, 18,109,208,140, 30, 61,186,207, 27,111,188,145,215,176, 97, 67, 0,200,185,118,237,154,186, 89, -179,102,122,142,227, 8,199,113,164, 89,179,102,250,107,215,174,169,173, 86,171,182, 73,147, 38,110, 29, 58,116,120, 48, 97,194, -132, 33, 0,148,165,228, 97,208,220,185,115, 67,189,189,189, 75,171, 8,208,106,181, 8, 8, 8,192,232,209,163, 3,165, 82,233, -255, 74, 53,235,177,236,152,185,115,231,250,107, 52, 26,100,103,103, 35, 52, 52, 20,102,179, 25,183,110,221,130, 81,175,131, 85, -155, 7,107, 94, 14,210,239,221,129, 70,202, 98, 72,175, 30, 1, 44,203,142, 41,195, 58, 50,102,253,164, 73, 1,230, 7, 15, 16, -183,125, 59,120,238,113,195, 12,103,177,224,242,151, 95,194,152,152,136, 57, 35, 70, 4,200,229,242, 49, 79,217,114, 53,159, 82, -170,162,148,170, 8, 33, 75,255,239,255,254,239, 27,149, 74, 53, 58, 38, 38,166,243,161, 67,135,186, 28, 63,126,188, 45,199,113, - 82,142,227,164, 39, 78,156,104,101, 52, 26, 89,133, 66, 1,150,101,169,171,156,205,155, 55,255, 90,165, 82, 69,175, 90,181,170, -243,145, 35, 71,134,252,241,199, 31, 99,120,158,151,243, 60, 47,255,227,143, 63,222, 54, 24, 12, 82, 74, 41, 95, 18,231,211,134, - 84, 42,133, 76, 38,131, 74,165, 66,203,150, 45,239,173, 91,183,206, 26, 26, 26, 42,221,185,115,167,119,112,112,176,219,242,229, -203,115,180, 90,237, 92, 87,249, 44, 22, 11, 76, 38, 19, 12, 6, 3,140, 70, 35, 14, 31, 62, 92,125,236,216,177,172,209,104,228, -123,246,236,153,101,181, 90, 77,147, 38, 77,242,172, 82,165,202,251,226, 7,235,223, 2, 14,128,206, 38,176, 76,142,117,153, 16, - 82,223,110,141,117, 5, 57, 57, 57,107,214,175, 95, 31,202, 40, 52, 56,105,238,134,239,132,207,113,200,107, 57,210,194, 63,128, -127,104, 77, 12, 28, 56,208,159, 82,186,188, 18, 94,116,123, 40,165,125, 41,165,187, 42,114,253, 95,157, 78, 66, 72,184,187,187, -251,118, 79, 79,207,147,238,238,238,219, 9, 33,225, 79,154,231, 78,181, 72,199,222,117, 37,137,157,106, 18,218,187,174, 36,177, - 83,173,242,199,106, 18,241,207, 68, 49, 45,226,136,116, 74,105, 15, 74,105,143, 57,115,230,204,118, 56,223,254, 91,229, 34,127, - 15, 74,105,143, 98,117,116,223, 95,145, 23,214, 81, 57,218, 51,229, 56, 91,176,106,213,170, 95,127,253,245,215, 30,197, 47, 76, - 78, 78, 70, 94, 94, 30,166, 78,157,234,241,198, 27,111,140, 79, 72, 72,120,179,140,123,201, 83, 82, 82, 26, 13, 30, 60, 88,105, -177, 88,178, 5, 65, 96,242,242,242, 88, 47, 47, 47,222,126,130,151,151, 23,159,155,155, 43,213,235,245, 18,158,231, 77,111,188, -241,134,124,196,136, 17, 47, 57, 90,176, 30,147,180,126,126, 81,221,186,117,147,151,116,220,106,181, 66,175,215, 67,175,215,195, - 98,177,160,101,203,150,138,117,235,214,117, 2,176,170,164,107, 20, 10, 69, 84, 84, 84,148, 52, 43, 43, 11, 94, 94, 94,136,143, -143,199,253,251,247, 97,210,233, 96,209,229,193,162,211,130,211,230,129,230,229, 34,243,206, 77, 52,171, 83, 91,246,173, 66,209, - 25,192,162,146, 56, 61, 61, 61,163,154, 13, 29,202,186,185,185,161,237,224,130,249, 3,251,235,212, 1,229,121, 8, 60, 15,158, -227,208,249,214, 45, 88,173, 86, 48, 12,131, 38, 89, 89,172,231,166, 77, 81, 0, 22,252, 29,149, 92,161, 80,176,155, 55,111, 30, - 36,151,203, 65, 41, 37,102,179, 25,135, 14, 29,122, 98,206, 77,155, 54, 13,177,115, 90, 44, 22,250,194, 11, 47, 60,214,144, 76, - 38, 19,253,167, 52,118,185, 92, 14,165, 82, 9,139,197,130,106,213,170, 25, 6, 15, 30,124,106,214,172, 89, 97, 12,195,184,201, -100,178, 3,153,153,153,179,147,146,146,226, 92,229,179, 90,173, 48,155,205, 48,155,205, 48, 24, 12,184,119,239, 94, 96,245,234, -213,201,232,209,163,249,252,252,252,136,101,203,150,221, 61,116,232,144,122,238,220,185,175, 2,120, 71,236,110,159, 30,108, 86, -104,175, 48, 31, 86, 47,149, 64, 7,192,195, 38, 6, 94, 37,132, 52,171, 91,183,174,247,245,235,215,179, 9, 33,103, 0,124, 71, - 41, 77, 46,141, 79, 16, 4, 34, 8, 2,222,110,154,131,209,205, 37,176, 90,115,145,155,155,139,248,248,120, 92,187,118, 13,191, -253,118,173, 66,233, 84, 42,149,255,115,119,119,239,164, 84, 42,171,113, 28,199,232,116,186,248,252,252,252, 88, 65, 16,214,208, -226,195, 8, 46,224,175, 74,167, 29,110,110,110,243,166, 76,153,210,194,203,203, 11, 23, 46, 92,136,216,186,117,235, 60, 60,161, -211,188, 82,202,108, 88,180,100,121, 72,136,191, 6,151,142,255, 16, 50,123,245,182, 13, 0, 66,197, 90,252, 76,180, 67, 90,130, -192,250, 29, 64,119,219,236,242, 30, 79,192,255, 68,215, 87, 72, 96,149,144, 33,112, 28, 23,232,104,185,162,148, 34, 57, 57, 25, -143, 30, 61, 66,122,122, 58,188,189,189, 97,177, 88, 2, 93,121,191,106,181,218,166, 62, 62, 62,249, 82,169,212,100, 48, 24,160, - 86,171, 5,169, 84, 74,109,247, 33,182, 89,136,188,201,100, 34, 44,203, 90, 61, 60, 60,220, 77, 38, 83,109,148,226, 43, 70, 41, -109,234,227,227,227,244,152,201,100,130, 78,167,131, 94,175,135, 78,167,131,201,100, 66, 64, 64, 0, 56,142,107, 84,234, 39, 44, -199,213,247,243,243, 67, 82, 82, 18, 84, 42, 21, 18, 19, 19, 97,214,105, 97,209,106,193,233,243,192,231,230, 66,200,203,131,160, -207,131,213,156,143,144,231,234,192, 62,195,176, 36,152,205,230,250, 62, 62, 62,208,235,255,116, 39,163, 54, 97,197,113, 28, 56, -155,211,179,125,216,208,215,215, 23,246, 25,134, 79,233,171,193, 68, 8,153,200, 48,204, 82,133, 66,193, 70, 71, 71, 35, 57, 57, -185, 72,157,136,142,142, 46,244,185,106,221,186,245, 9,165, 82,201,165,167,167,195,100, 50, 73, 93,225,172, 86,173, 90,252,212, -169, 83,207,154,205,230,208,224,224, 96,141,201,100, 50, 60,255,252,243,193, 42,149, 42,192,108, 54,243, 47,189,244,210, 26,149, - 74,101,213,233,116,148,227, 56,242, 15,105,236, 32,132, 20,148, 17,199,193,215,215, 87,159,145,145,241, 91,118,118,246,160,138, -240, 89,173, 86,251, 12, 45, 24, 12, 6, 80, 74,113,225,194, 5, 40,149, 74, 41,207,243, 87, 57,142, 83, 75,165, 82, 48, 54,231, - 46, 17, 79,173,156,219,214,214,200, 23,197, 52,243,215,188,216,211, 77,175,150, 75,244, 66,252,139,213,190,154,127,109,235, 27, - 67,254,231, 49,125,250,244,112, 95, 95, 95,229,221,187,119,141, 51,102,204,168,190,121,243,102, 82,214,199, 79, 66, 66,194,206, - 41, 83,166, 84,233,214,173, 91,132, 66,161, 32,185,185,185, 72, 79, 79, 71,106,106, 42,238,223,191, 79, 47, 93,186,116,207,100, - 50,109, 47, 79, 58,131,131,131,215,141, 29, 59,246,141,198,141, 27, 75,237, 22, 81,189, 94,223,240,216,177, 99,189,246,239,223, -223, 10, 64,185,235,101, 66, 66,194,246,143, 63,254,216,173,107,215,174,181, 21, 10, 5, 83, 25,233,116, 4,195, 48, 1,238,238, -238,136,141,141,133, 70,163, 1,195, 48, 1, 79, 90, 94, 70,139, 16, 18, 28,232, 3,227,175,139, 80,219, 47, 28, 70,139, 16, 34, -214,226,103,199,130, 85,194,161, 38,118, 11, 84, 25, 34,201, 48,121,242,228, 41,132,144,125,147, 39, 79,158,226,204,130,101,251, -151,119, 60,207,225,124, 83,165, 11, 44, 23,191,116,240,232,209, 35, 36, 37, 37,225,209,163, 71,200,204,204, 4,195, 48,165, 61, -144, 34,249, 34,132, 8, 63,255,252,179,247,169, 83,167,244, 77,154, 52,201,177,251,183,112, 28, 71,172, 86, 43,177,249,189,144, -248,248,120,217,201,147, 39, 53, 55,110,220, 8, 64,129, 35,154, 80, 70,129, 60,182,207, 46,172, 28, 55,163,209, 8,165, 82,233, - 82, 94,237, 47,192, 11,231,206, 21,136, 43,157,214, 54, 52,152, 11, 62, 47, 23, 84,175,133,156,183, 66, 14, 10, 98,204,119,249, -249, 57,194, 46,174, 44, 54,129,101, 54,155, 97,181, 90, 33, 8, 2, 56,142,251, 59, 42,246,202,134, 13, 27, 54,218,189,123,247, -240, 71,143, 30, 61,118,252,149, 87, 94,193, 59,239,188,131,177, 99,199,222,232,222,189,251,165, 31,126,248, 1, 99,198,140,129, - 32, 8, 47, 18, 66,114, 41,165,251, 75,227,156, 60,121,242, 31, 9, 9, 9, 71,111,223,190, 29,237,239,239,175,168, 95,191,254, -157,250,245,235, 75,118,239,222, 29,240,214, 91,111,157,235,210,165,203,131, 95,126,249,165, 74,108,108,172, 82, 16,132,198,132, -144, 71,127,119, 28, 44,147,201, 84,104,113, 50, 26,141,176, 88, 44, 64, 41, 78,237,101,213, 77,123,217,114, 28,103,231, 38,187, -119,239,194,137, 19, 39,152,107,215,174,134, 70, 71,143,182, 59,210,139, 61,237,211, 17, 86, 93,229, 12, 89, 59,241, 69, 31,229, -251, 13,124,244,114,150,232,110,173,157,162,187, 31,230,169, 15,168,170, 54,135, 86,215, 4,207,158, 61, 43,232,198,141,155,166, -169, 83,167, 94, 31, 48, 96,128,255,251,239,191, 95,119,231,206,157,173, 8, 33,235, 41,165, 57, 37,240,202,134, 15, 31,254,155, -191,191,127,141,213,171, 87,167, 37, 36, 36,120, 91,173, 86,181,213,106,181,232,245,250,187,249,249,249, 39, 45, 22, 75, 44,165, -244, 92,121,210,235,225,225,209, 96,232,208,161,210,156,156, 28,216,102,223, 34, 45, 45, 13, 45, 90,180,144,236,221,187,183, 94, - 69,158, 65, 86, 86,214, 34, 66,200,209, 45, 91,182,116,242,244,244,108,172, 80, 40, 2, 1,240, 90,173, 54, 85,175,215, 95,172, - 72, 58,139,244,115, 60,159,122,238,220,185, 26,158,158,158,120,248,240, 33,120,158, 79,125,210,114, 83,202,152,132,203,199,247, - 86,173,227, 91, 29, 39, 79,157,129, 82,198, 36,136,181,249,153,135,221, 71, 10,142,194,201,137, 48, 58, 21, 19, 19,163,154, 51, -103, 14, 98, 98, 98,174, 58,179, 96,217,133, 86, 76, 76,204, 85,251,121, 14,231, 31,175, 84,129, 85,154, 64, 98, 89, 54, 37, 61, - 61,221, 91,163,209, 20, 10,171,164,164, 36, 36, 37, 37, 65, 46,151, 35, 62, 62, 30,114,185, 60,217,149,143, 14,149, 74,245, 71, -195,134, 13,159,143,139,139,147,205,152, 49,163,234,185,115,231, 60, 91,180,104,241,130, 74,165,226, 41,165, 48, 26,141,204,245, -235,215,221, 23, 44, 88, 16,210,180,105, 83,115,211,166, 77,207,111,219,182,205,128, 82,130,142, 18, 66,206, 38, 39, 39, 71, 84, -171, 86,205, 46,214,138,136, 42, 71,161, 5, 20, 12,109,178, 44,123,190,212,135,194,178,151,111,221,186,213, 81,173, 84,192,172, -205,131, 69,151, 7, 78,171, 5,175,205, 5,159,155, 11,232,243, 32,231, 56, 72,121, 43, 84, 74, 37, 30, 37, 38,130,101,217,203, -165,113,202,229,242,203,169,169,169, 29, 53, 26, 77,225,203,211,202,113, 5, 27,207,195,204,113,133, 22, 44,169, 84,138,132,132, - 4,200,229,242,203, 79,187, 6, 51, 12,195,219, 67, 49,148,144, 15, 4, 4, 4, 8,205,154, 53,195,152, 49, 99,192,243,188,173, - 24, 72, 91, 66,200, 73, 74,169,174, 36, 78, 65, 16,152,235,215,175,247,185,123,247,174, 68, 42,149, 50, 47,191,252,114,100,203, -150, 45,205,114,185, 28, 50,153,140,213,233,116, 30,177,177,177, 74,171,213, 74,108,156, 79, 45, 14,150,189,238, 60,246, 41,100, -115, 70, 55, 24, 12,208,233,116,200,206,206,102, 85, 42,213,243, 47,188,240,194, 25,179,217,188,157,227,184, 13,113,113,113,121, - 37,113,218, 4, 89,161,216, 18, 4, 1,148, 82,240, 60, 15,171,213, 10,153, 76, 38, 28, 59,118, 28, 11, 22,207,195,215, 27, 54, -211, 94,189,122,145,189,123,247, 66, 16,132, 68,177, 63,125, 42, 88,152,243,221, 44, 37, 56, 94,111, 58,182, 69,247,205,237, 60, -253,244,111,150,252, 97,150, 75,242, 94,106, 19, 80, 63,162,250,243, 18,141,198,155, 89,181,102,105,230,183,155,119,220,125,248, -240, 97,222,138, 21, 43,154, 63,255,252,243, 94, 23, 47, 94, 12, 1,224, 84, 96,185,187,187, 87, 27, 54,108,216,176,236,236,108, -217,230,205,155, 55, 62,122,244,232, 24,165,244, 94,177,190,171, 17, 33,100, 62, 0, 41,128, 0, 20,248,127,253, 76, 41,221, 84, -218,119, 26, 33, 4, 71,142, 28,121,108,182,159,240,100,170, 60,187,126,253,250, 13,110,223,190,189, 39, 37, 37,229,155,226, 7, -213,106,117,175,200,200,200,129,103,207,158,253,132, 82,122,183, 60,196,249,249,249,147,118,236,216, 49, 95, 34,145, 4,243, 60, -159,100, 48, 24, 38, 61,177, 5,203, 42,140,136, 89,181,245, 75,131,153, 15, 83,201, 37, 15,141, 86,225, 45,177, 42, 63,211,214, - 43,192,230,131,101,255, 31, 0, 41,246,251,162,237,127,179,195,185,233, 14, 86, 43,115, 49,171,151,179, 99,233,168,196, 32,231, - 37, 69,114,255, 8, 64, 83, 0,103,165, 82,233,210, 55,222,120, 99,193,183,223,126,235,145,151,151,135,212,212, 84,164,165,165, -129,101, 89,120,122,122, 98,229,202,149,134,212,212,212,165,142,215, 20,143,248,110,111, 19,190,190,190,127,108,222,188, 57,112, -237,218,181,236,155,111,190, 25,223,189,123,247,218, 43, 87,174,140,147,201,100,148,231,121, 98, 50,153,200,219,111,191, 93, 99, -241,226,197, 15, 36, 18,137,186,127,255,254,196,205,205,237,172,173,227,113,254,196,211,211,127,254,254,251,239,251, 76,152, 48, - 65, 97, 54,155,157, 90,174,236,251, 52, 26, 13,126,253,245, 87,115,118,118,246,161, 50,172, 22, 63, 31,248,233,199,214,175, 15, - 24, 32,179,106,243, 96,213,230,129,203,203, 3,175,205, 1,209,229, 65,202,115, 80,201, 4, 4,134, 42,193, 25,220,241,227,239, - 23,173, 38,147,169,212,128,132,121,121,121, 63,159,252,250,235,182, 77,195,195,217, 95,199,141,131,197,106, 69,215, 91,183, 10, - 69,149,197, 98,193,158,250,245,193, 19,130, 23, 71,142,196, 29,142,227,242,242,242,126,254, 39, 54,130, 75,151, 46,165, 13, 30, - 60,248,156, 32, 8,141,202, 99,205,113,120,249,104,117, 58, 29, 50, 50, 50,248,204,204, 76, 35, 0,164,165,165,101,239,221,187, -247,186, 32, 8, 77, 43,194, 89, 25,176, 90,173,143, 89,159,120,158, 47,176, 50, 22, 88, 10,228, 63,254,248, 99,235,235,215,175, -203,174, 92,185,130, 19, 39, 78,188,248,237,183,223,126, 20, 30, 30, 94, 63, 62, 62, 62,165, 44,209,230, 44, 88, 47,108,254,133, -219,182,108,199,168, 81,163, 72, 74, 74, 10,190,251,238, 59,148, 21,244, 84, 68,165, 65, 15,142, 87,153,143,109,209,117,255,233, -161,246,116,178, 97, 6,128,131,212,192,209,170, 85,171, 94,106,220,216,219, 23, 0, 76, 70, 62,176, 86,173, 90,109, 88,150,149, -219,234,112, 99, 31, 31,159,149, 0, 90, 58, 35,125,229,149, 87,254,207,223,223,191,225,254,253,251, 47, 62,122,244,232,120,113, -113, 5, 0,207, 63,255,252,231, 87,174, 92,233, 42,149, 74,137, 67, 29,161, 0,156, 10,172,182,109,219, 62, 31, 30, 30,238,243, -211,109, 47,228,201,106,130, 74,114, 1, 86, 9, 94,211, 0,241,178,186, 8, 13, 61,227,163,209,104, 94,204,201,201,185, 88, 78, - 43, 94, 88,255,254,253,127, 92,183,110, 93,157, 46, 93,186,200, 1, 60, 38,176,234,212,169,243,234, 47,191,252,210, 55, 58, 58, -186, 1, 33,164,167,139,171,117,216,219, 81, 60,128,190,149, 89,104,135,238,208, 88,216, 98,150,137,248,207,224,247,191,232,220, -191, 12, 37, 13, 17, 54, 21, 4,161, 23,195, 48,176, 88, 44, 49, 1, 1, 1,123,250,247,239,255,202, 71, 31,125,228,238,227,227, - 83,104,185, 90,185,114,165,225,254,253,251, 59, 45, 22,203, 5, 66,200,180,164,164,164, 94,193,193, 37,190, 23,180,203,150, 45, -219,218,179,103,207, 55, 71,142, 28,105,168, 95,191,190,103,237,218,181,243, 79,157, 58,229, 30, 21, 21,149, 39,145, 72,232,175, -191,254,234, 81,163, 70, 13, 35, 33, 68,241,203, 47,191,100,158, 57,115,166, 70, 76, 76,204,122, 20, 76,155, 46, 9, 91,102,206, -156, 57,181, 87,175, 94, 53,124,124,124,144,151,151, 87, 68,100,217,255, 87, 42,149, 72, 73, 73,193,174, 93,187,146,173, 86,235, -250, 50, 44, 25, 43,150,175, 92, 53,190, 93,179,151, 67, 60,213, 42,164, 36,198,131,207,205, 6,244, 58,200, 57, 43, 84,114,138, -144,154,106,176, 18, 55,220, 77,209,225,235, 83,191,167,112, 28,183,162, 52, 78,179,217,188,226,157,197,139,199,159, 94,181, 42, - 36,188, 95, 63, 92,219,180,169,112, 72,208, 46,176,120, 66, 16,214,161, 3, 24, 47, 47,204, 94,189, 58,213,108, 54,175,120,218, - 21, 66, 16, 4,137,217,108, 46, 45, 31, 16, 4, 33,241,218,181,107, 91, 9, 33, 90, 66, 72, 91,219,161,163,206,172, 87,142,156, - 12,195, 8,117,235,214,221, 29, 16, 16,208, 7,128,190,110,221,186,187, 21, 10, 69,123,179,217,252,178, 32, 8,137, 23, 46, 92, -216, 69, 8, 73, 33,132,216,191, 50,158,106, 28, 44,171,213,138,105,211,166, 97,206,156, 57,152, 60,121,114, 97,126,237,195,132, - 57, 57, 57,213, 79,158, 60, 41, 59,118,236, 24, 93,189,122,117,230,155,111,190,169, 25, 57,114,164,102,237,218,181,239, 1,152, - 84, 18,231,164, 73,147,176,122,245,106,140, 26, 53,234,113,117, 37,145, 8,137,137, 9, 48, 26,141,116,217,178,101, 73, 82,169, -212,123,253,250,245,170,183,222,122,139,136,253,233, 83,193,199,170,193,159,188,107,235, 99,150, 82, 74,143,218, 15,120,122,122, -170,118,239,254,158, 5,128,157, 59,118, 73, 41,165, 94,246,192,176,223,124,243,141,178, 69,139, 22,254, 37,145,238,216,177, 35, -103,198,140, 25, 62, 35, 70,140,232,114,244,232, 81, 53, 33,228, 39, 91,167,159, 1,128, 7,224, 11,224, 87, 63, 63,191,160,173, - 91,183,214,236,212,169,147, 91, 89, 9,213,106,181,235,183,110,221, 90,109,241, 73, 47,252,164,239,131, 4,161, 31,168,134,162, -138,191, 22,117,221, 31, 98,208,160, 65,193, 75,151, 46,253, 18, 64,227,114,136,171,122,175,189,246,218,247,235,214,173,171, 62, -114,228,200,196, 95,127,253, 53,129, 16,242,185,147, 83, 51,135, 14, 29, 26,191,113,227,198,154,130, 32, 28, 36,132,116,161,148, -222, 22,171,143, 8, 17,165,180, 47,103,254, 75,132,144, 61, 28,199,245, 98, 89,118,175, 99,160,209,128,128,128,241,102,179, 57, -136, 16, 66,101, 50, 89, 74,106,106,234, 82,199, 64,163,137,137,137,189, 66, 67, 67, 11,175,177, 5,203,116,140,149,225,217,181, -107,215,142,167, 79,159,254, 98,223,190,125,105, 90,173,214,125,199,142, 29,170, 57,115,230,196, 11,130, 64, 63,252,240,195,240, -206,157, 59,231,243, 60,159, 60,114,228,200, 26,213,171, 87, 31,121,227,198,141, 88, 71,129,229,132, 19,132,144,122, 53,107,214, -252,117,231,206,157,158, 26,141, 6,105,105,105,200,202,202,130, 94,175, 7,207,243,144, 74,165, 72, 79, 79,199,140, 25, 51,242, -146,146,146, 30, 11, 52, 90, 2,103,211,106, 33, 33, 63, 47,253,124,154,135,134,101,144,121,243, 58,184,236, 76, 72, 57, 43,170, -214,243,130, 76,174,194,157, 91, 90,188,183,101,151,246, 97, 86,206, 99,129, 70, 75,226,124,169, 86,173,216,213, 19, 39,186, 27, - 19, 18, 16, 52,108, 24,242,243,243, 97,177, 88,192, 48, 12,238, 45, 93, 10,153,159, 31,166,110,219,166,191,250,240, 97,135,226, -129, 70,157,113, 62,113, 5,112,224, 36,132,140, 38,132, 20, 58,185,191,242,202, 43, 69,206,253,254,251,239,177,106,213, 42,152, - 76, 38,142, 82, 58,158, 82,186,146, 16,226,110,251, 74,213,149,197, 89,173, 90,181,135,145,145,145,191,243, 60,207,218,196, 5, -189,118,237, 90,227,251,247,239, 87, 45,198,105, 31,186,230,158, 86,222,125,124,124,150,238,223,191,191,154,191,191, 63,113,140, -176,110, 19,136, 0,128, 49, 99,198,116, 56,115,230,140,162, 97,195,134,166,140,140,140, 38,126,126,126,135, 55,111,222,236,219, -191,127,255,164,171, 87,175,134, 20,231,244,245,245, 93,176,115,231,206,154, 53,107,214,100,236, 86,176,226,195,144,195,135, 15, -239,184,121,243,102,121,159, 62,125, 76,122,189, 62,192,195,195,227,238,206,157, 59,125,123,247,238,157,114,245,234,213,160,167, -145,119,145,211, 57, 34, 35, 35,239, 92,189,122,181,166,253,183,193, 96, 64,122,122, 58, 50, 50, 50,160,209,104, 16, 21, 21,117, -239,254,253,251, 53,157,113,218,172, 66, 75,214,172, 89,211,197,205,205, 77,118,252,248,113,125,108,108,172, 49, 62, 62,158,179, - 90,173, 52, 40, 40,136,109,217,178,165,178, 91,183,110,110, 10,133,130,249,228,147, 79, 50,102,205,154,229, 75, 8, 89, 66, 41, -125,207, 25,103,163, 70,141,126, 59,112,224, 64, 83, 66, 8, 36, 18, 9,204,102, 11,114,114,114,240,232, 81, 34,174, 93,187,134, -211,167, 79,227,208,161, 67, 23,117, 58, 93, 67, 87,243, 78, 8, 57,108, 50,153,218,202,229,114,151, 5, 61,207,243, 96, 89,246, - 8,128,142,148, 82, 65,172, 75, 34,167,136,242, 89,176,236,206,185, 77, 9, 33,123,108,187,206, 22, 15,197, 64, 8,249,136, 16, - 50,205,193,234, 85,214,253,242,246,239,223,127,162, 99,199,142, 99, 58,116,232,176,184, 83,167, 78,201,201,201,201, 17,139, 22, - 45, 10,229, 56,206,114,237,218, 53,230,238,221,187,241,127,252,241, 71,205,231,158,123,110,228,141, 27, 55,142,149, 97,189,178, -167,245, 26, 33,164, 69,187,118,237,118,141, 28, 57, 50,172, 89,179,102,114,141, 70, 3,150,101, 17, 23, 23,135,139, 23, 47,154, -183,109,219,150,152,147,147,227,242, 82, 57,148,210,179,132,144,168,254, 99,199,239, 28,249, 74, 79,223,151,107, 63, 47, 15, 10, - 10, 2, 12, 6,220,124,152,130, 51, 55, 47, 90,214,157, 56,147,110, 50,153, 94,115,117,169, 28, 27,103,199,246, 19, 39,238,156, -254,250,235, 1, 72, 78,102,131,130,130, 32,151,203,113,255,254,125,220, 21, 4,110,238,154, 53,169,121,121,121, 79,125,169, 28, -123,204, 42, 65, 16, 88, 0, 80,169, 84,120,231,157,119,224,184, 52,206,170, 85,171, 96, 48, 24, 0,128, 37,132,204, 39,132,108, - 40,201,106, 85, 2,103,216, 79, 63,253, 20,230,200, 89,167, 78, 29,103,156,166,167,221, 16,178,178,178,166,118,237,218, 53,134, -101,217, 18,163,213,122,123,123, 67,171,213,130,227, 56,254,209,163, 71, 55,189,189,189, 33,149, 74, 65, 41,117,218,142, 50, 51, - 51,167,190,246,218,107, 51, 25,134, 41,209,210,225,233,233, 25,127,248,240,225, 90,111,189,245, 22,243,213, 87, 95,197,141, 24, - 49, 66,113,248,240, 97,190,162, 49,141, 68,252,117,112,252, 24,181,125,188,209, 82,206,125, 72, 8,153,116,238,220, 57,229,168, - 81,163, 26,191,254,250,235,158,237,218,181,115,119, 60,199, 96, 48, 8, 63,252,240,131,126,245,234,213,153,199,143, 31,255,125, -248,240,225,125, 80,224, 63,226, 20, 15, 31, 62,252,113,246,236,217, 94,221,186,117,123, 14, 64,161,255, 85,122,122, 58,226,227, -227,113,229,202,149,120,139,197,178,183,156,217, 26, 51,120,240,224,159, 54,110,220, 24, 62,114,228,200,196,239,190,251,110, 47, -128, 92, 39,231,185,191,250,234,171,189, 54,110,220, 24,254,246,219,111, 63, 4, 48, 78,140,240, 46, 66, 68,197, 4, 86,174, 32, - 8, 48, 26,141, 1,130, 32,244, 18, 4, 1,238,238,238,206,206,107,154,148,148,212,203,113,177,103,148,177,172, 13,128,244,216, -216,216,159,183,108,217,210,225,195, 15, 63,124, 61, 39, 39,167,233,165, 75,151,154, 1,128, 84, 42, 61,237,230,230,246, 91, 76, - 76,204,176, 73,147, 38,165,187, 34,174,138,137,172,186, 11, 22, 44,168,180,197,158,109,130,168,214,138,237,187,198,172, 87, 40, -162,138, 45,246,252,179,109,177,103, 99, 69, 56, 39,126,249,229, 24,207,237,219,255,177,139, 61,155, 76, 38,174, 79,159, 62,235, - 25,134, 17,108, 95,173,172,201,100, 26,134,114,206, 60, 45,206,249,202, 43,175,124, 37,145, 72, 56,155,101,136, 49,153, 76,255, -123, 18,206, 74,124,121,234, 0,140, 45,237,156, 23, 94,120, 97,243,222,189,123, 7,247,234,213,139,183, 88, 44,105, 61,123,246, -100,127,251,237, 55,202, 48, 76,108, 9,156, 38, 0, 31,148,198, 25, 24, 24, 24,190,124,249,242,243,227,198,141,243,220,178,101, - 75,149,147, 39, 79,242,203,150, 45,203,203,202,202, 90, 40,118, 79,255, 44, 72,165, 82,168,213,106,152,205,102,164,167,167,163, -172,144, 83,148,210,187,132,144,238, 19, 39, 78,108, 53,113,226,196,238,161,161,161,245,194,194,194,194, 24,134, 97,146,147,147, -211, 19, 18, 18, 30, 88, 44,150, 95, 0,252, 8, 64, 86,163, 70,141, 11, 0, 54,151,196,151,153,153, 57,147, 16,114,100,211,166, - 77,221,221,220,220,234, 42,149,202, 42, 86,171,149,209,106,181, 89, 6,131,225,186,209,104,220, 71, 41, 61, 85,206,122,127,139, - 16,210,142,101,217, 31,215,173, 91, 87, 39, 57, 57,185,218,177, 99,199,122, 22, 63,175,113,227,198, 27, 55,110,220, 24, 30, 29, - 29,125,119,203,150, 45,229,242,193, 18, 33, 66, 20, 88, 69, 49, 91, 46,151,179,176, 45,250,108,183, 96, 57, 57,239,108, 49,159, -171, 92, 0,179, 93,184,175,126,208,160, 65,247, 7, 13, 26, 52,223,150, 6, 9, 10, 66, 49,112, 40,240,224,183,160,140,208, 12, - 37,116, 22, 28,128, 47,109, 91,101,189,120,141, 40,136,119,179,224,159,204, 89, 9,105, 50, 17, 66, 38,218,102, 53, 1,192,196, - 11, 23, 46,172, 44,102,145,186,228,120,188, 44, 75,147, 51,206,139, 23, 47, 22,231,188, 82, 30,206,191, 19, 57, 57, 57,227,151, - 47, 95,126,118,242,228,201,138,161, 67,135,226,202,149, 43,152, 51,103,142, 41, 39, 39,103, 75, 69, 57, 83, 82, 82,226, 3, 3, - 3, 27, 45, 89,178,228,253,197,139, 23,247, 38,132,136,107, 17,254, 67, 96, 48, 24,238, 53,104,208, 0,164, 96,118, 2,229, 56, -174,112,246,167, 45, 34,255, 61, 23,251,164, 35,182,173, 44,204,119,129,239, 52,128,211,149,220,246, 31, 18, 66,186, 63,120,240, - 96,246,173, 91,183, 14, 56, 59,231,234,213,171,223,119,234,212, 73,125,250,244,233, 41,229,157, 69, 40, 66,132, 40,176,138, 54, -184, 59, 0, 94,119,161, 97,198, 60,193,189,121, 23,172, 93, 34,158,174,200, 90, 73, 8,217,224, 96,125, 41,215,241,167,197,249, -119, 33, 49, 49, 49, 27, 64,225,146, 33, 17, 17, 17,143,249,169, 85, 84,100,161, 32,106,187, 24,185,253, 31,132,184,184,184,174, -255,161,182,255, 16,192,224,146,142,155,205,230,189, 0,246,138,181, 66,132,136, 39, 20, 88, 34,254,211, 34,203,244, 36,199,159, - 22,167, 8, 17, 34, 68,136, 16,241, 79, 6, 1,208,177,132,151,158,203,179, 3, 8, 41,255, 66,155,101,241,139,156, 34,167,200, - 41,114,138,156, 34,167,200,249,236,113, 58,112, 47, 46,225,208,205, 98,124,107,255,173, 22,139,191,108, 67,193, 52, 94,145, 83, -228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,138,220,103,228,211,184,207, 95,177,137, 11,202,138, 16, 33, 66,132, 8, 17, 34, - 68, 84, 50,156,250, 96,237,216,177, 67, 98,255,127,224,192,129,195,121,158, 47,156,190, 46,145, 72,150,127,247,221,119, 27, 74, - 35,237,219,183, 47, 95, 26,167, 51,148,117, 31,103,156,145,207,123, 69,251,120,169,199,231,228,230, 47,137, 75,226, 79, 24,141, -198,186,246, 99, 74,165,242,250,134, 13, 27,110, 87,118, 58,135, 15, 31,254, 92,241,251, 84, 11,149,182,173,226,161,124, 39, 43, - 71,183,232,202,109,237, 90,177, 90,253,181,232,215,175,159,164, 60,231,223,191,175, 97,206, 35,104,161,167,155,172,167, 78,111, - 93,200,159,155,246,197,179,240, 28,130,130,130,106,123,122,122, 14, 1, 80, 47, 63, 63,223, 95,173, 86,167, 1,184,150,151,151, -183, 57, 57, 57,249,166,171, 60,109,171,147,120, 0, 97,182,159, 15,143,222,167,225,174, 28, 43, 11,157,107, 18, 35, 5, 20,132, -192,114,240, 14, 45, 92,224,178, 75, 45, 98, 20,232,227,251, 59,215, 34,102, 74, 33, 35,128,233,224, 93,170,124, 86,234, 43, 33, -196, 19, 64, 20,128, 72, 0,151, 0, 28,162,148,230,139, 45, 89,132,136,255,160,192, 26, 62,124,120,107, 57, 75,191,128, 64, 53, -160,212,199,100, 50, 73,229,114, 57,204,102, 51,212, 42,213,138, 81,255, 27,250, 57, 8,114, 44, 2,243,206,134, 13, 27, 42,188, -242,116,121,238,211,183,111,223,199,166, 57,123,123,170,102, 30,253,225, 67,239,214,221, 99,230,152,239,103, 77,210,106,181,140, - 66,161,128,201,100,130,151,151, 87,139,177, 35, 71, 52,166, 12, 49,203,148,110,167, 22, 47, 94,156, 82,209,116,190,247,222,123, -129,156, 69,255,127,212, 74,229,102,179, 89, 81,252, 62, 26,181,219,220,163, 63,124,168,110,211, 99,206,231, 0, 68,129,245, 15, - 66,129,184, 10, 92,251,238,160,151,135,206, 27,215, 17,154,182,115, 39, 1,248, 87, 11, 44, 66,136, 36, 34, 34, 98, 76,120,120, -248,128, 53,107,214,200, 34, 34, 34,160, 84, 42, 97, 48, 24,130,238,221,187, 23, 20, 29, 29,221,166, 70,141, 26, 91,227,226,226, - 86, 80, 74,121, 23, 40,195,142,110,252, 4, 0,208, 98,200,140, 48, 66,200, 7, 0,242, 1,160, 77,181, 63,143,181, 29, 58, 35, -140, 16, 50, 17, 69,103,255, 38, 83, 74,157,206, 46,163,128,124,223,166, 5,232,245,198, 7, 44, 33, 36,218,190,191,219,115,192, -129,111,150,162,203,192,241, 69,246,119,174, 1,246,135, 77, 11,208,227,141, 15, 74, 92,109,188,203,115,140, 85, 16,104,137,147, -115, 24,134,112, 7,239, 80,103, 11,255,166, 82, 74, 15, 58,121,150,157, 81,176,208,178,211,243,123,212, 97, 83, 45, 86,222,105, -160, 88,153, 84,146,182,239, 6,247,216,181, 67, 27, 17,171,149, 47,232, 91,101, 44,120, 47, 47,175,163, 31,127,252, 49,219,163, - 71, 15,172, 91,183,174,229,218,181,107, 71, 18, 66,126, 1,176, 87, 12,121, 32, 66,196,127, 76, 96,201, 25,186,250,224,150, 85, - 53, 83,210,179, 48, 32,250, 35,108,217,178, 5,217,217,217,240,246,246,134, 92, 46,147,174,156, 61, 41, 80,227,161, 14,236, 63, -118,218,106, 0,181, 43,122,243,114,222,167,214, 99,157,163, 45, 16, 41, 43, 97,165,114,185,148,217,186,117, 43,114,114,114,160, -209,104, 32,151, 75,153,165, 51, 38,168, 52,158,110,170,215,199, 79,111, 9, 96,123, 69,211,201, 25,116, 45,127,248,102,185,103, -106,122, 38, 6,191, 51, 21,197,239, 35,149,201,120,251, 11, 69,172, 82,127, 31, 50, 50, 50, 8, 0,248,250,250,210,162,226,170, -217,208,197, 19, 58,225,189, 69,135,144,111, 52,127,243,111,207,103, 68, 68,196,152,126,253,250, 13,152, 57,115,166,140, 97, 10, - 70,249,245,122, 61, 12, 6, 3, 66, 66, 66,112,244,232, 81,217,212,169, 83, 7,124,255,253,247, 0,176,172,188,252, 87,175, 94, -173, 22, 22, 22,102, 4,128,158,245, 61,138, 31, 11,183, 31, 3, 0, 15, 15,143, 50,249,124, 52,110,166,171, 87,207,212,179, 95, - 55,166, 67, 8, 95,194,126, 35, 0,117,105, 92,130, 64,217, 67, 95, 68,151,120,252,173,153,223,114,151,182,159,168, 29, 17, 17, - 97,112,220, 95, 66,160,100, 0, 8,208,233,116, 97,197,119,218,207,183, 88,121,255,146,238,215,233,157, 85, 78,133,151,149, 7, -251,237,183,223, 2, 0, 22,126, 48, 88,242,229,111, 25, 44,203, 22,116,181,243,231,207,199,244,233,211,229, 7, 15, 30,236,182, -105,211,166,110,182,165,113,196,240, 7, 34, 68,252, 87, 4, 22, 33,240,240,244,112, 67,175, 55,223,193,254, 3, 7,209,186,117, -235,194, 99,213,171, 87,199,192, 87,123,226,251, 53, 49, 96, 64, 60,158,228,230, 79,122,159,236, 92,253,167, 93, 7, 44,155,241, - 48, 69,119,122,223,190,159,208,170, 85,171, 34,215,191,222,191, 15,118,174,156, 5, 66,169,236, 73,210, 41, 48, 84,230,233,233, -134,215, 70,140,135,179,251,140, 26,218,107, 95,151,190, 75, 59,166,102,234, 23,139, 85,234,233,226,198,141, 27, 18,147,201, 52, -208,211,211,179,153, 84, 42, 13, 80,104,194,132, 36,182,105,102, 58,137,136, 75,243,207,117,187, 18,176, 0, 0, 32, 0, 73, 68, - 65, 84,111, 61,161, 99, 64,151,133,239,182,195,123,139, 14, 97,201,150, 51, 27, 27, 33,101,218,191, 57,191, 65, 65, 65,181,195, -195,195,139,136, 43,173, 86, 11,157, 78,135,188,188, 60,104,181, 90, 48, 12,131, 73,147, 38,201,142, 29, 59, 54, 32, 40, 40, 40, -214,133,225,194,135, 45,134,204, 40, 16, 25, 18,169,110,218,180,105, 38,127,127,127,147, 90,173,166,172, 76,161,109, 59,116,134, - 7, 0, 48,172, 76,187,100,201, 18,115, 72, 72,136,145,101, 89,249,248,241,227, 93,242,225, 52,153, 76,212,145,211,108, 54, 21, -238,159, 59,119,174, 57, 32, 32,192,164, 86,171,169,197, 98,118,249, 57, 92,190,159, 5,133, 76, 2,133, 76, 2,165, 92, 10,143, -106, 77,160,200,190, 2,142,227, 48,111,222, 60, 75, 96, 96,160, 89,173, 86, 83,185, 92, 46, 27, 55,110, 92,153,233, 28, 62,124, - 56,213,104, 52, 22,181, 90, 45,155, 62,125,250, 99,235,242, 29,190,244, 8, 42,185, 20,106, 5,139, 90,213, 67,161,160, 6,151, -211, 42,145, 20, 29,209, 86, 40, 20,104,217,178, 37,234,213,171,135, 61,123,246,180,133, 24, 95, 74,132,136,103, 87, 96, 17, 66, -218, 0, 56, 10, 0,148, 82, 2, 0, 12, 40, 62, 27,209, 5, 35,223,232, 7,158, 23, 10,188,226, 1, 72, 8,193, 7, 3, 90, 67, -224, 57, 8, 40,115,169,136, 50,167,106,150,247, 62,142,156,148, 48, 18, 0,168, 29,230, 67, 71, 13, 27, 4,129, 47, 24, 13,225, - 1, 72, 1,188,223,175, 37,120,222, 10,161,140,160,240,174,165, 83,192, 39,195, 59,193,217,125,106,215, 8, 96, 76, 60, 7,226, -176, 24,227, 95,177, 8,166,200, 89, 20,167, 78,157, 10, 82,171,213,139, 6, 15, 30, 28, 60,110,220, 56, 57,207,106,216, 29,167, - 51,189, 62, 92,121, 58, 56,223,100,145, 12,106, 87, 13, 19, 94,175,143, 9, 75, 14,219,197,213,200,234,213,115,254,213,101,228, -233,233, 57,100,205,154, 53,143,137,171,212,212, 84, 70,167,211,193, 98,177, 8, 90,173, 22, 60,207, 99,242,228,201,210,169, 83, -167, 14, 33,132, 76,183,241,152,156,113, 30,189, 79,195, 9, 33, 19,175, 94,189, 26,254,241,199, 31, 91,218,183,111,255,176,122, -245,234,122,137, 68,130,160,160,160,165, 81, 81, 81, 85,102,206,156,105,233,214,173,219, 3,137, 68,130, 90,181,106,233,175, 92, -185, 18, 14, 64,229,106,222, 29, 57, 55, 28, 94, 78,109,253, 14,162,162,162,226,107,213,170,165,151, 72, 36,184,253,195, 92,234, -234,243,148,178, 12,158, 11,241, 42,252, 82,131,202, 29,200, 46,248, 25, 21, 21,149, 88,187,118,109, 29,195, 48,184,124,249,114, - 40, 0,101, 89,156, 42,149,202, 58,104,208,160,135, 55,111,222,124,236,124, 0, 96, 37, 12,154,213,182, 25,172, 66, 26, 1,137, - 39, 75, 76,167, 84, 2,110,234,152,193,172, 70, 9, 40, 60,124, 77,121,121,121,240,244,244, 44,176,136, 89, 44,184,112,225, 2, -154, 55,111,222,102,251,246,237,199,196,246, 46,114,138,156,142, 70,151,199,181,200,179, 96,193, 58, 90, 60, 51, 2,207,161,102, -136, 15, 86,126,240, 26, 56,142, 7,207, 11,182,141, 7,199, 9,176, 90,204, 40, 67, 95,185,102, 29,122,130,251,120,123,170,102, -238,223, 58,206,187, 67,239,249, 29,190,120,255,213,159, 5,171, 21,188, 0,112,188, 0,222,202, 67, 16, 4, 88,205,149, 19,195, - 82,176,242,168, 25,236,131, 47,222,127, 21,197,239,179,252,199, 67, 61, 15,239,157,164,110,221, 99,206,251, 0,230,137,186,253, -233, 88,174,212,106,245,162,205,155, 55,135, 55,105,210,132, 1,128, 19,183, 56,197,135, 43, 79, 7, 31,140,105, 65, 90,212,243, - 65, 90,142, 9,227, 87, 92,196,254,211,105, 7,138,139,171,127, 49,234, 69, 68, 68, 20, 17, 87, 11, 22, 44,240, 93,185,114,101, - 8, 0,188,246,218,107,143, 58,116,232,144,113,235,214, 45, 4, 5, 5,145,140,140,140,238, 0,198,219, 58,175,137,148,210,149, - 37,240,234,195,194,194,140,126,126,126, 38,187, 16, 98, 24, 6, 44,203, 34, 44, 44,204,232,239,239,111,170, 85,171,150, 94, 38, -147,129, 97, 24,216, 5,158,139,157, 38, 36, 18, 9,236,156,197,173, 59,118,206,242, 64,202, 58,156, 79, 31,183, 24, 49, 12,227, -244,126, 37, 65,169, 84, 82, 0, 37,158, 47, 97, 28,186, 71,182,116, 79,128,141,231,169,148, 16,114,148, 82,138,243,231,207, 35, - 46, 46, 14, 50,153, 12,129,129,129,152, 62,125, 58, 76,166,130, 62,169, 95,191,126,109, 0, 92, 22, 91,179, 8, 17,133, 56,250, - 44, 8,171,226, 2,171, 80, 61, 82, 74,143, 1, 0,207, 89,193,243,130, 83,209, 99,177,114,176, 90, 44,149,146,128,210,238,195, -243,124,169,247,177,251, 96, 9,148,178, 78,197,149, 80,176,110, 88,165,164, 83,176,194,202, 3,206,238, 67, 8,195,219, 58,122, -153,216, 62,158, 14, 76, 38,211,160,193,131, 7, 7,219,197, 21, 0,100,104,173,108,190,201, 42,105, 81,207, 7,141,219,245,195, -185, 35,219,177,237,248, 35,212,240, 83, 31,175,238,246, 76,136, 43,228,231,231,251, 43,149, 74,232,245,250, 66,203,213,202,149, - 43, 67,204,102, 51, 3, 0, 44, 43, 13, 77, 23, 66,148,188, 0,120,121, 38, 35, 59, 59,215,199,222, 97, 17, 66,230, 19, 66, 54, -148, 22, 57, 95, 38,147, 21, 10, 19, 71,225,163, 80, 40, 42, 36, 92,236,176,139, 50,153, 76,230,116,127,241, 97,180,178, 32,115, - 20, 88,160, 5, 86,172, 98, 34, 75, 34,145,192,238,251, 84, 22,228,114,121, 97,222,157,118,148, 18,135,251, 73,202,239,106,105, -177, 88,160,211,233,144,147,147, 3,165, 82,105,183, 0,128, 16, 50, 30,192,187, 98,139, 22, 33,194,185, 22,121,102, 4, 22, 10, - 76,115, 4, 0, 56,171,197,169,232,217,116,232, 28,238,102, 90, 17,226,125, 13,246,115, 93,197,128, 1, 3, 54, 6, 5, 5, 53, - 43,236, 36,213, 30, 62, 67, 62,152, 11,222, 98,134, 70, 65,241,110,223, 86, 69,196, 21,207, 11,176, 88, 74,182, 64,101,231,234, - 63,237,210,111,233, 12, 31, 55,143,211,197, 69,207,212, 29, 55,251,102,230,154, 67, 9,123, 3, 57, 36,132,239,247,246,103,195, - 29, 58,245, 75, 91, 87, 77,155,224,106,186, 41, 97,164, 61,199,173, 29,201,203, 60,234,122,210,236,227,211, 7,214,221,237, 40, -226,252,221,221,247,117,126,109,113,199,212, 44,209, 7,235,105, 65, 46,151,119, 28, 55,110, 92,145, 55,157,175,135,148, 83, 43, -164,252,175,215, 50,200,185, 35,219,153, 19, 87, 51, 4,165, 76, 66,253,104, 92,196,179,146,111,181, 90,157,150,159,159, 31,100, - 48, 24,144,151,151,135,188,188,188,162, 13, 90, 42, 37, 35, 71,141,245,149,202,228,176, 90,204,216,191,121, 86,153,156,109,171, -147,248, 54,213, 16,214,179,190, 7, 36, 82,185,246, 90, 68,196, 82,150,101,193, 48, 12,126, 88,241,225,248, 93,139,222,241, 0, -128, 75,251, 86,228, 13,156,180,124, 25,195, 48, 48,153, 76,138,242,164, 59, 33, 33, 33,212,100, 50, 25,109,194,204, 46,248,112, -255,254,253,170, 38,147,201,224,184,223, 21,168,212, 30,128,166, 58,160,246,127,204, 90,246,224,193,131, 96,171,213,154,207,178, - 44,204,102,179, 75,106,136, 97, 24,217,229,203,151, 67, 5, 65,112,122,126,189, 26,193, 64, 96,125, 64,238,229,114,158,109, 65, - 18,203, 60,135, 16, 66,159,165,175,118, 17, 34, 42,195,146, 85, 94,125,241, 79, 22, 88,109, 9, 33,244,207, 70, 15,112, 22, 75, -161,176, 42,176, 48, 21,252,127, 63, 87,192,205,219,119,176,100,201, 18, 28,251,227,125,175,153, 51,103, 42,166, 78,157,106, 26, - 48, 96,192, 34, 65, 16, 26, 48, 12,115,169,111,223,190,227,157,221, 76, 16,132,170,231,206,157, 43,124,217, 89,173, 86,120,120, -120,192,195,195, 3,145, 17,129,143,137, 43,206,102,193,162, 37, 11, 31, 9, 40, 0, 10,202,241, 86,240, 86, 20,138,158,204, 92, -115,232,247, 71, 46,214,116, 56,253,121,251, 63, 45,155,212, 45, 89, 4, 70, 79, 47,204,199,214, 85,211, 38,204, 92,183, 78,145, -205, 7,140, 27,216,127, 68,100,191,129, 67, 48,248,213, 46,109,140, 70,235, 30,150,129, 96, 21,120,240, 86, 1, 2,165, 12, 5, -138,248, 96,137,248,235,144,145,145, 65, 12, 6, 67, 53,141, 70, 83,228, 69, 21,228,166, 55, 77,234,255, 92, 82,212,135, 39,131, -141, 22, 30, 10, 41, 67,199,247, 14, 79,250,237,251,109, 62, 25,166, 12, 98,159, 93,248, 47,199,181,187,119,239, 6, 85,173, 90, - 21,121,121,121,224, 56, 78,120,237,181,215, 30,177,172, 52,148,149, 74, 73,143,129, 99,133,148,148, 36, 43,195, 72, 64, 41,143, -174,253, 70, 19,133, 82, 37,179,152,205, 28,128,137, 37, 88,175, 28, 67, 49,120, 68, 69, 69, 85,177,207,236,219,181,232, 29, 15, -135, 99,158,141, 27, 55,174,226, 56,139,208, 69, 49, 76, 6, 12, 24,160, 10, 11, 11, 35, 0,240,251,230,143,237,214, 50,210,179, -103, 79,101, 88, 88,129,127,253, 47, 43, 92, 95,235,218, 87, 77,129,220,251, 64,238,131,199, 44, 87, 61,123,246, 84, 68, 68, 68, -148,171, 45,218, 28,219, 75,140,189,229,198,114, 64,202,121,151,184,134, 54, 34,214,143, 91,131, 93,212,149,129,220,221,199,212, -236,195,131,191,137, 34, 75,132, 8,151, 80, 68,139, 60, 19, 2,203,102,138, 43,210,184, 57,171,229, 49,113,197,243, 2,148,188, - 30, 75,150, 44,193,187,239,190, 11, 0,178, 9, 19, 38,236,158, 57,115,102, 31, 65, 16, 26, 80, 74, 91, 17, 66, 74,251, 74, 60, - 26, 20, 20,148, 74, 41,149, 50, 12,211,106,197,138, 21, 85,186,118,237, 10, 15, 15, 15, 80,129, 62, 38,174,120, 94,128,213,100, - 46, 80,124, 78,224,237,169,154,121, 96,199,120,239,246,189,231,117,224,173,248,217, 46,174,120,235,159,110,241,153,169,137, 56, -116, 96, 15, 86,175, 90,147, 13, 66,111,128, 66, 96, 24,230, 82, 73,105, 20, 4,161,193,201,223,175,183,106,217,164, 46,102,174, - 91,167,184,122, 46,121,247,216,247, 62,142,236, 55,112, 8,182,127,183, 25, 18, 75,246,121,150, 9,248, 83, 92,241, 60,210,181, -121, 61, 15,255,240,161,232,131,245, 55,193,106,181, 34, 59, 59, 27, 86, 93, 54,247, 82,144, 62,247,179,126,254,166,212,108, 35, - 43, 21,242,185, 58,158,105,166, 35, 89, 15, 36,106,181,250,153,200,107, 94, 94,222,230,232,232,232, 54,199,143, 31,151, 49, 12, -131,188,188, 60,180,107,215, 46, 35, 93, 8, 81,142, 28, 53,214, 55, 41,233, 17,231,169, 98, 77, 50,153, 20,105,105,105, 66,155, -110,131, 12, 3,135,143, 15,126,119,202,236,181, 73,167, 86,173,116,229, 30,142, 51,251,138, 31,251,242,203, 47,205, 33, 33, 33, - 70,133, 66, 33, 31, 58,116,168, 75,227,132,102,179,153,206,157, 59,215, 84,124,182,160,217,108,166, 75,150, 44, 49,135,134,134, -154, 84, 42, 21,181, 90,203,118, 59, 96, 24,194,189, 53,243, 91,142,227,184, 34, 86, 43,187,184,178, 10, 68,247,197, 23, 95, 88, - 66, 67, 67,205,106,181,154, 42, 20, 10,153, 43,233, 28, 59,118, 44,245,246,246,182,184,185,185,201, 38, 77,154,244, 68,179, 8, -173, 60,216,153, 43, 10,195, 52, 40, 60, 60, 60,160,213,106, 11,211, 26, 20, 20, 36,138, 44, 17, 34,156,127,108, 28,123, 22, 44, - 87,197, 45, 88, 69, 69, 6, 21,116,169,105, 25,254,154,224,154,176, 90, 57,240,156, 21,156,149,131,149,179, 98,226,176, 87, 16, -179,170, 96, 36,204, 38,178,162, 38, 76,152,176, 27, 40,123,217,157,173, 91,183,206,152, 48, 97,130,103,106,106,234,193,141, 27, - 55, 86, 25, 60,120, 48, 38, 78,156,136,249,243,231,131,149, 43,225, 21, 24, 94,120, 31,206,202,129,183,114, 72,203,204, 6,165, - 84,231,140,207,238,131, 69, 41, 88,207,192,234,224,121,251,181, 86, 48,146,130,153,233,135, 14,236,193,224, 97,239, 64,170,240, -242, 94,190,100,158, 33,242,165,160, 62, 83, 71,140, 40,219,243,157,128,185,122, 46,121,247,216,119, 39, 69,217,197,213,174, 77, - 43,110,172, 24, 31,181, 69, 45,103, 11,239,195, 91,173, 96, 24,137,232,131,245, 20,225,235,235, 75,211,211,211, 31,228,228,228, - 60,239,230,230,134,204,204, 76,100,101,101, 33, 39, 39, 7,166,188,108,206,135,207,209, 19, 46, 11, 44,203, 34, 45,129, 3,207, -243, 41,207,136,245, 10,201,201,201, 55,107,212,168,177,117,202,148, 41, 3, 39, 79,158, 44, 21, 4, 1,183,110,221, 2, 5,168, - 84, 38, 7,195, 48,144, 74, 89,228,230,230, 9,106,119, 77,178,133, 74,212, 82,153, 28,140, 68, 86, 90,192,209,135,109,135, 22, -132,105, 96, 88,153,214, 62,179, 79, 38,147,225,204,246, 5,121,109,135,206,240, 4, 0,153, 66,149,221,169, 83,167,248,186,117, -235,234,255,248,227,143,112, 20,155, 69,232,164,125,114,175, 12,157, 36, 81,171,148,250,168,168,168,135,118,206, 7, 63, 47,207, - 27, 50,250, 99, 66, 36,114,125,143, 30, 61,226, 35, 35, 35,245, 18,137, 4,215,247,204,203,123,101,232, 36, 37, 41,152,160,235, - 20, 7,239,208,183, 46,109, 63, 81,123,214,172, 89,214,110,221,186, 37,216,253,193, 30, 60,120, 16,220,189,123,119,197,226,197, -139,173,221,187,119, 79,124,225,133, 23,116, 12,195,224,220,185,115,161,165, 89,166,236, 80,169, 84,214,255,253,239,127, 15,175, - 92,185, 82,161, 89,132,101,161,106,213,170, 16, 4, 1,237,218,181,131,209,104, 20, 45, 89, 34, 68,252, 7,224, 84, 96, 89, 4, - 97,236, 27, 31, 46, 88, 78, 64,220, 5,208, 34,179,116,104, 65, 79, 64, 62,248,224,125, 55, 0, 42,187,200,122,239,189,247,178, -203,186,153,131,184,122,105,240,224,193,248,232,163,143,176,112,225, 66,126,254,252,249,146,235,247, 18, 44,125, 39,204,207, 41, -118, 31, 80, 74,117, 60,143,177,206,248,178,115,245,159,182,234, 62,231,243, 71,169,249, 39,251,189, 31, 83,164,215,202, 33, 5, -193, 12, 87,175, 90,173,151, 42,188,220,250, 13, 28, 2, 0, 81,203,151,204,219, 61, 19,235,202, 22, 89,148,212, 25,251,222, 36, -111,187,184, 90,177,120,214, 21,111,146,250,197,136, 79,174, 61,230, 53,239,229,142,221,173,186,207,233,156,150,165, 95, 42, 86, -169,167, 3,179,217, 28,187,108,217,178,106, 83,167, 78,149,103,101,101, 33, 35, 35, 3,217,217,217,133,155, 78,167, 67, 96, 96, - 32, 14, 28, 56, 96,201,203,203, 59,243, 44,229, 61, 46, 46,110,197,222,189,123,113,236,216,177, 1,147, 39, 79,150, 6, 6, 6, - 18, 47,175, 20, 98,181,152, 1, 80,154,158,158, 46,168,221, 53,201,190, 1,161, 15,147, 82,210,234, 88, 45,102, 8,188,165, 68, - 47,114, 91,152,134, 15,174, 94,189, 90,109,193,130, 5,102,199,153,125, 3, 39, 45, 95,214,184,113,227, 42, 95,124,241,133,185, - 71,143, 30,241,118,167,116, 87,156,220, 15,221,195,248,171, 87, 47,215, 43,206,217,118,228,130,245,118, 78,199,217,133, 61,223, - 95,179,190, 86,173, 90, 85, 34, 35, 35,227, 75,227,141,136,136, 48, 4, 5, 5,153,107,215,174,173,147, 74,165, 5,150, 43,171, - 53, 63, 34, 34, 66, 8, 8, 8, 48,215,173, 91, 87, 87, 94,103,124,149, 74, 69,237, 86, 48,103, 40,207, 44, 66,169, 4,220,224, -193,131, 11, 35,185,127, 80,171, 86,242,144, 33, 67,130, 38, 76,152,128,245,235,215,227,215, 95,127,205, 42,126, 77,155, 54,109, -112,252,248,241,207, 1,124, 42,182,110, 17, 34,158, 97,129,245,213, 87,155,127,129,131,207,146, 51,204,156, 57, 83, 97,179, 92, - 69,189,251,238,187, 48, 24, 12,222,143,125,193, 18,210,209, 30, 43,195,153,184,154, 55,111,222, 22, 74,105, 40,128,150, 28, 47, -252,182,118,195,215,237,202, 52, 44, 57,112, 82,194, 72, 24,134,232,228, 82,122, 97,213,218,175,138, 68,232,182, 57,181, 63, 15, -130, 75,203,151,204, 51, 0,136, 42, 46,178,250,246,237,155, 95,156,211,142, 81,209,111, 23,138,171,229, 75,230,253, 28,249, 82, - 88,159,169, 35,102, 56, 21,101, 51, 62,125,219,141, 97,200,255, 57,250, 96, 57,227,124, 82,136,156,127,114, 42, 20,138, 45,223, -125,247, 93,183, 86,173, 90,133, 55,104,208,128,201,202,202,130, 78,167,131, 78,167,179, 91,185,112,253,250,117, 33, 62, 62,254, -145, 66,161,248,238, 89,202,187,109,249,155,101, 65, 65, 65,177,211,166, 77, 27,146,145,145,209, 61, 59, 59,199,231,199,141, 51, -209,165, 95, 52,105,211,109,144,222, 76, 89,101, 98,114,106,237,163, 63,125, 91,101,255,214, 21,176,152,205, 35, 9, 89,125,221, - 30,166,193, 73, 58,243,237,225, 24,106,215,174,173,119, 20, 40, 97, 97, 97,198,224,224, 96, 83,100,100,100,225,126,103,179,243, -156,229,189,188,156, 54,255, 46,125, 89,207,211, 46,214,138,135,127, 80,171,213,176,139,174,242,164,211,113,246,164,211,142,178, -140, 89,132,142,156, 27,207, 83,169,227,177,141,132, 72, 54,111,222,220,113,243,230,205, 47, 1,184, 0,224, 16, 0,171,237,186, - 66,103,120, 74,233,103, 0, 62, 19,219,187,200,249, 95,229,252, 79, 8,172,178, 96,119,104, 7,192,188,247,222,123,217, 6,131, -193,123,200,144, 33,165, 94,147,146,146,178,254,235,175,191, 46, 34,174, 94,125,245,213, 97, 59,118,236,136, 77, 75, 75,171, 80, -226,189, 61, 85, 51,143,253,240,161,119,155, 30,115,222, 5, 48,223,185, 37, 10, 66,228, 75, 65,125,150, 47,153,183,187,152,200, -218, 4,224, 85,103,245, 6, 0, 58,117,233,141,111,191,250,194,238,187,165,186,242,199,163,253, 3,206, 79,119, 58,251, 80,227, -174,152,110, 75,199, 4,136, 62, 88, 79, 5,117,234,212,225, 79,157, 58, 53, 33, 58, 58,122, 81,135, 14, 29, 66,122,247,238, 45, -171, 90,181, 42, 20, 10, 5,238,221,187,135, 19, 39, 78, 88,226,226,226, 30,229,231,231, 79,104,208,160, 1,255, 44, 62,131,228, -228,228,155,182, 32,162,227,237,195, 74, 10,165, 74, 54,104,248,187,161,133,179, 8,183,174,128,201,104, 0, 0,214,149, 48, 13, - 44,203,202, 46, 94,188, 24,110,183, 82, 89, 44, 22,133,125,255, 31,127,252, 17,110,143,141,101, 52, 26, 93,158, 69,248, 87,113, - 94,190,124, 57,212, 62,219,209, 62, 91,144,101, 89,217,185,115,231, 66,237,156, 38,147,201,165, 89,132,114,185, 92,118,241,226, -197, 80,158,231, 43,109, 22, 97, 49, 65,124,208,182,217, 95, 78,118,113, 69,108,195,130,226,240,160, 8, 17,162,192, 42,112, 4, -167,148,182, 42,135,210,101,171, 85,171,214,105,224,192,129, 69,196, 85,223,190,125,249, 93,187,118, 29, 13, 10, 10, 74,101, 24, -230,102,121,211, 81,232,131, 85, 16, 80,189, 8, 24,134,185,212,178, 73, 93, 48, 12,115,105,234,136, 17,166,153, 88, 87, 68,100, -237,217,253,255,236, 93,119, 88, 84,199,219, 61,115,183,211,171, 52, 17, 68,177,160, 96, 84, 84,108,216,162,198, 24, 91, 98, 69, - 99,239, 81, 19, 77,236,198, 66,162,168, 49,118,141, 70,141, 49, 88, 49, 42,214,216,107,192,134, 29,176,160,128,192,210,219,194, -178,125,239,124,127,184,240, 45, 72,217, 69, 76,251,237,121,158,251, 44,204,157,123,238,204, 45, 51,231,190, 51,239, 59,135, 62, -170,168, 61, 4, 0, 7,103,119, 12, 31, 51, 29,195,199, 76,183, 3,208, 1,168,216,251,176,178,114,152,240,254,208,190,125,251, -212,216,216,216,225,231,207,159, 15,186,118,237, 90,247,162,162,162,186,132, 16,152,153,153, 37, 40,149,202, 11, 66,161,112,255, -127, 85, 92, 85, 4,149, 74,165,153,183,108,205, 30, 14,135,167,101, 89, 21, 81,169, 84, 99,140,121,207,231,205,155,199,160,156, -185, 85,211,167, 79, 47, 55,253,239,226, 92,176, 96, 65,185, 94,127,211,167, 79,175,212, 27,176, 34,124,253,245,215, 53,230, 69, -104,160,232, 50, 9, 41, 19, 76, 48, 9,172,183,193, 48,204,195,114,188, 5, 9, 0, 90,158,135, 30,165, 84,195,225,112,150,217, -218,218, 78,146, 74,165,127,124,246,217,103, 51, 7, 13, 26,164, 5,222, 76,124,175,110,225,115,243,165, 75,186,244, 93, 53, 43, -175, 80,177,169,236,190,178,150,166, 98,145,181,101,195,234,173, 71, 15, 31, 24,148, 38, 78,222, 90, 81,221, 42, 18, 82, 21,121, - 31,230, 75,100,203,186,244, 93,245, 85,174, 68,102,154,131,245, 55, 88,178, 0,132, 2, 8, 45,187,216,243,255, 2, 40,165, 10, - 66,200,108, 66, 72,177, 5,119,246,171,203, 27,182,254,255,199,205,166,135,250,251, 42,177, 94,165, 26,178,112,115,121,199, 85, -182,239, 61,112,166, 87,178,112,115,101, 72, 55,146, 47, 29, 0,248, 60, 78, 70, 69,139, 58,243,121,156,140, 26,186,135, 68,231, -154,190,204,244, 70,155, 96,194,127, 92, 96, 21,139,159,138, 80, 81,156,171,202,160,213,106, 87, 1, 88, 85,147,133,127,252,188, -224,103, 0, 63, 27,154, 95, 55,231,106,148,110, 43,191,156,217, 79,140,174,219,160, 65,131,182, 1,216,102,122,156,254, 26,132, -133,133,105, 77, 87,161, 84, 7,189,149, 16,242, 75,177,224, 50,116, 95,153,124,199,223, 67,185,222, 7,231,217,191,146,239,100, -172,198,249, 47,186,135, 38,139,150, 9, 38,252, 47, 8, 44, 19, 76, 48,225, 95, 39,178, 20,213,217,103,130, 9, 38,152, 96,194, -251, 1, 1,208,189,130, 70,217, 96,239, 0, 66, 72,247,106,116, 8, 23, 76,156, 38, 78, 19,167,137,211,196,105,226, 52,113,254, -111,113, 86,197,173,127, 60, 33,100, 34,165,244,103,252, 27, 65,223,196,154,122, 47, 27,128,238, 38, 78, 19,167,137,211,196,105, -226, 52,113,154, 56, 77,156,213, 60,207,196,191,226, 60,239, 99, 51, 13, 17,154,240,222,225,238,238, 14,150,101,193, 48, 12,146, -147,147, 77, 23,196, 4, 19, 76, 48,193,132,255, 60, 76, 2,203, 64,144, 58, 3,190, 5,232,124,157,205,114, 53,125,125,108,233, -255, 68,189, 9,113, 4,208,199, 74,196,239,215,212,150,223,238,113,182, 60, 66,170,210,158, 0, 16, 78, 41,205, 53,132,131,101, - 89,156, 56,113, 2,125,251,246, 45,230, 4, 0,184,186,186,226,196,137, 19, 37,249,252,253,253, 75,130, 46,154, 96,130, 9,239, -249,221,182,107, 90, 7,132,140, 5,232,255,187, 81,178, 52,154,230,197,236, 46,149,207,182,201, 24, 48,164,169, 94,146, 12, 20, - 59,104,110,116, 82, 5,109, 70,241,132,125,219,184,184, 56, 79,111,111,239, 68, 0,121,101,178,189,181,143, 86,242,242, 19, 66, -136, 99,189,150, 35,205, 69,230, 83,149, 74,165,151,165,149, 85, 70, 78,118,230,182,156,215,143,182,232,101,179,190,117,235,150, -107, 64, 64,128, 24, 64, 65, 85,156, 38,152,240,143, 23, 88,164,225, 64, 47,104,152, 81,160, 24, 1,130, 7,244, 85,216,192,106, -241,120,127, 86, 27, 44,183, 13,128,150, 0,109,105, 97, 38,106, 33, 83,170, 50, 88, 74, 71,210,184,131,247,141,230,171, 55,248, - 20,128,222, 21,236, 93, 70, 95, 29, 50, 82, 32,209, 5,119,174, 29, 17,218,154, 19,120,251,127, 58, 7,122, 17,151,223, 65,188, -152, 1, 24, 77, 8,249,208,220,220,188, 97, 81, 81, 81, 2,165,244, 17,128,173,148, 82,113, 53, 57, 25, 0,227, 44, 45, 44,122, -121, 90, 9, 90,190,206,202, 79, 41, 80,107,175, 3,248,193, 80, 65,164,199, 37,240,180,179,184,186,126, 88, 23,159,118, 77, 27, -128,141,190, 6,185, 82,213,239, 74,114, 97,191, 37,145,226, 89,132,144,150,148, 82,165,161,124, 12,195, 76,112,115,115,243,170, - 93,187,118,252,230,126,205,119, 76, 59,254, 0,253,251,247, 7,128, 9, 44,203,122,213,174, 93, 59,158, 16,178,195,208, 54,145, - 16,226, 10,128, 75, 41, 77,210,253,111, 1,192, 23, 64, 61, 0,175, 0, 60,161,148, 74,223,241, 30,253, 43, 56,221,221,221,221, - 88,150, 29,239,236,236,252, 73,122,122,250, 41,134, 97,118, 38, 39, 39,139,255,230,246,101,123,241,252, 9, 67,127, 1, 76, 50, -230, 4,102,102,102,233,114,185,220, 9, 0, 68, 34, 81,134, 76, 38,123,111, 94,127,127,229,185,254, 26,133,133, 9,231,110, 60, -233,165,159,212,179, 99,211,114, 94, 92,210,244,220,141,232, 78,165,243,249,106,203,107, 3,117, 81, 83,177,108,217, 50, 18, 28, - 28, 60,166,126,253,250, 13, 24,134,121,182,120,241,226, 82, 33,108,202,238, 91,178,100,201,255, 71, 92, 45,135,211,189, 81,251, -240,161,195, 6,119,249, 98,226,104,203,218,181, 44,145,154, 37,117,248,105, 87,232,154,208,208,125,125,198, 15,237,209, 11, 0, -190,251,238,187, 1,117,234,212,169,203,225,112,226,191,253,246,219,223, 42,227, 52,193,132,127,172,192, 34, 77, 7, 91, 64, 78, - 7, 1,100,116,231,118,254, 29, 39,141,236, 75, 40, 71,132,160, 9,115, 53, 70,115,213, 29, 35, 4, 71,246,125, 51,223,166, 51, - 7,247,237,206,180,242,173, 11,215, 90, 54, 0,195,195,246,211, 9, 14,155, 86,127,187, 21, 64, 64, 53,138,217,251,101,228,126, -164,230,105, 65, 8, 64, 8,192, 16,160, 80,206,162,231,128, 81, 75,140, 23, 72,132,177, 53, 39,152,185, 95, 14,128,112,106, 64, - 92,181,172, 85,171,214,150, 25, 51,102,216, 53,107,214,204, 85, 36, 18,153,203,100,178, 6,113,113,113, 94,139, 22, 45,234, 65, - 8, 89, 73, 41, 61, 98, 36,167,135,183,187,219,161, 77, 51,199,181,249,160,158, 39,120,202, 66,176, 10,105,157,231,113, 47,218, - 77,222, 26, 54,129, 16, 50,204,200,165, 13, 22,110,159, 62,210,199,207, 10, 80, 61,249, 19, 60, 14, 7,230, 54,118,232,193,229, -128, 67,208,100,212,217,132, 5,132,144, 37, 85,181, 95, 98,177,184,216,146,229,117,226,196,137,166,125,251,246, 69, 27, 47,119, -220,234,155,137,214,225,201, 0, 80,146,110, 68, 93,131, 1, 44,208,181,191,251, 56, 28,206,249,238,221,187,123,141, 31, 63,158, -248,251,251, 35, 42, 42,170,222,254,253,251,187,115,185,220,120,173, 86,251, 8,192, 51, 74,169,218, 64,110, 30,128, 70, 28, 14, -167,217, 63,153,211,205,205,205, 76,169, 84,142,114,119,119,159,216,175, 95,191,102,125,251,246, 37,141, 26, 53,194,211,167, 79, -253,207,156, 57,179,164,121,243,230,143,146,147,147,127, 22, 8, 4,123,196, 98,177,204, 16,206,161,126,228,233,193,199,180,113, -117,247,151,169,243, 68, 0,110, 58,131,198, 50, 3,126,197, 0,150, 81, 74, 83, 13,125, 14,228,114,185, 83,241,243, 71, 8,113, -122,159,141,165, 49,231, 34,132,196, 16, 66,236,117,127,163,178, 95,134, 97,160,209,104,164, 26,141,166,126, 21,156,141, 0, 48, - 70, 20,153, 82, 74, 43, 11,224,108, 6, 0, 61, 59, 52,205, 1, 65,116,177, 5,235,173, 92, 44,141, 46, 17, 94, 20, 77,207,253, - 25,109, 95,202,234, 85, 6,203,150, 45, 35, 75,150, 44,193,210,165, 75,251, 2, 8,100, 89,246,186,143,143,207,198, 82,148, 44, - 91,178,111,201,146, 37, 27,150, 45, 91, 70, 80,106,213,219,255,135,125,221,230,159,127,250,105,255, 46,203, 23, 78,183, 76,201, - 86,225, 65,188, 12,246,150,124, 44,153, 61, 69,160, 80,168,219,109,253, 45,116,226,230,149,115,119,104,181,218,110, 0, 90,105, -181,218,187, 0,126,171,140,211, 4, 19,254, 81, 2,139, 16, 66, 80,127, 96, 39,104, 49,218,179,142,243,160, 25,227,135,152,249, -250,120, 67, 14, 75, 36,100,105,113,250,228, 25, 0, 56,104,156,149,105,104, 43, 46, 31,123, 86, 47,157,221, 56,176,141, 47, 30, -167,168,113, 55, 69,139,162,120, 53, 56,140, 26, 90,150, 2, 20,242,234, 86, 46, 57, 87,131, 27,207,148, 96, 8,192, 97, 0,134, - 33,224, 48,213, 36,211, 42,159,127,183, 59,202, 55, 43,157, 5,180,202,231,239, 40,174,186, 53,108,216,112,125,112,112,176, 75, -122,122,186,253,221,187,119, 33, 20, 10, 97,103,103,199,117,115,115,107,188,126,253,250,252,233,211,167,207, 38,132,220,167,148, - 38, 24,200,233,211,187, 85,179,136,159, 87,127,103,163,190,117, 6,121, 7,126, 7,135,161,224, 91, 88,194,203,204, 12,103, 62, -245,182, 31,116, 50,254, 8, 33,196,135, 82,154, 98, 8,167,183,139, 67,207,102, 62, 62,200, 61,186, 25, 15,114,229, 56, 35,150, - 97,108,143,182,240,179, 55, 67,160, 70, 11, 23, 11, 94,183, 58, 22,130, 37,250,235,169, 25,138,188, 59,151,241, 32,247,237, 91, -235, 98,193, 51,164,174,118, 0,230, 42,149, 74,134,207,231, 19,145, 72,244,249,242,229,203, 85, 65, 65, 65, 37, 19,188, 2, 3, - 3, 17, 24, 24, 72, 10, 10, 10,234, 93,190,124,185, 94,104,104,168,134, 16, 18, 67, 41, 13,175,216, 66, 97,254, 90, 46,151,213, - 17,153,153, 21,253,180,117,235,143,157, 58,117, 98,133,194,255, 95,189,165, 58,156, 0, 96,107,107,187,163, 97,195,134,100,254, -252,249,226,154,226,244,242,242, 58, 23, 24, 24,216,181,103,207,158,220, 14, 29, 58,192,205,205,173,100,159,163,163, 35, 2, 3, - 3, 73, 82, 82,210, 7,215,175, 95,223,122,238,220,185,141, 94, 94, 94,151,227,227,227,123, 86,217, 35, 87,177, 6,105, 85,251, -203,244,238, 63,235,158, 13, 67, 5,211,207,229, 4, 48,254,119, 26,135, 8,177,220,190,125,187, 83,241,154,137,106,181, 26, 90, -173,182,228,183,120, 99, 89, 22, 90,173, 22,203,151, 47,215, 26,120, 77,165,208, 5,117,214,219,216,242,126, 5, 2,129,163,129, -150,172,104, 87, 97, 94, 19, 11, 11, 11, 79, 0,189, 27, 54,108, 56, 87,127,119,131, 90,111,126,165, 82,105, 98,170,194, 54, 26, - 64,167,202, 30,247,224,224,224, 81, 75,151, 46,237,143,255, 95, 83,178,217,224,193,131, 47,151,201,215, 76,247, 43, 37,132, 92, - 97, 24,230, 4,128,221, 0,222,178,178,155,155, 91, 78,154, 49,117,188,101,114,150, 10,223, 31,201,194,238,107, 18,140, 10,180, -194,204,143,109, 48, 60,104,168, 69,216,239,135, 39, 1,216,161,119,200, 83, 31, 31, 31, 18, 27, 27,107, 18, 87,255, 45,180, 6, - 80, 75,239,127, 37,128,226,165,173,178,116,239,133, 67,153,116,253,124,197,191,153,186,244, 90,186,227,168, 30,111, 38,128, 59, - 53, 42,176,138,215,192,170,116, 45, 44,175, 65,167,199, 5,245,235,245,201,135,237,193,136,236,240, 60, 3,136,124, 77,193,101, -212, 96, 64,113,235,207,203, 20, 92,118, 79,153,198,160, 66,107, 9,241, 26,244,117, 51, 63,223, 85, 59, 87,127,201,137,201,224, - 98,247,245, 34,168,228,133,200, 76,123,141, 12,113, 34, 82,147, 95, 33,229,245,171, 71, 0, 89, 98, 40,231,219,141, 17,160,101, -117,223,124,172,174,123, 0, 41,175,209,170,154, 83, 45,141,173,223,216,207, 55, 87,160, 5,212,210, 88, 3, 26,194, 11, 21, 52, -188, 61,188,189,189,127, 88,184,112,161,251,147, 39, 79,172,165, 82,169,244,204,153, 51, 87, 19, 19, 19,157, 93, 92, 92,146,166, - 76,153,210,190,118,237,218, 78, 3, 6, 12, 48, 63,116,232,208, 66, 0,227, 13,224,244,237,215,182, 69,228,174,141,235, 44,178, -195, 54, 65, 25,247, 16,167, 83,165,248, 51,189,136,214,179, 17,146,105, 31,212,130,165,144,139,239, 58,184, 89,246, 62, 26,183, - 10,192,112, 3, 56, 49,160,141, 95,125,181,172, 8,114,153, 26,123,158,230,200,206,167, 72,157,136,109, 66,230,198, 65,109, 69, -156, 76, 49, 60,173, 4, 13,150,181,115, 67,239,163,113, 21,214,221,221,221,125, 2,203,178, 94,186,127,235, 22,255,126,120,163, - 32, 68,239,144,146,116, 98,229, 24,226,230,230, 6,134, 97,226,195,195,195,119,244,237,219, 23, 98,177,184,202,123, 36, 18,149, -191,202,137,157,157, 29, 58,119,238, 12, 31, 31, 31,110,167, 78,157,154, 1, 8,175,168,238, 42,149,210,149,101, 41,172,172,172, -204, 28, 28, 28,236,172,172,172,178, 85, 42,213, 59,113, 2,128,189,189,253,192,206,157, 59,115,247,239,223,159, 21, 31, 31,127, - 43, 40, 40,232,149,181,181,117, 41,107,175,133,133, 5, 26, 52,104,128,111,191,253,150,219,171, 87,175, 42, 57,157,157,157,123, -132,134,134,130, 16, 82,210, 89,151,133,167,167, 39, 92, 92, 92,208,187,119,111,238,192,129, 3,123, 84,246,124, 14,245, 35, 79, -139,197,211, 16, 63, 82,105,199, 52,196,143, 80, 2, 60, 43,107,201, 42,203,169,179, 96, 45, 43, 45, 98, 43, 30,102, 43, 47,191, - 1,247, 61,163,216,154, 36, 18,137, 50, 12,107, 23, 42,229,172,112, 88, 83, 40, 20,150, 88,157,202,158,171, 60, 78,134, 97,176, -104,209, 34, 16, 66,192,227,241,192,231,243,203,253,237,210,165,139,177,229, 76, 34,132, 48,124, 62,127, 46,151,203, 29,175, 80, - 40,220, 69, 34,145, 88,171,213,254,170, 80, 40,150,235, 44,160,182,229, 61,187, 21,113, 90, 88, 88,120, 62,127,254,188, 97, 69, - 23, 69,161, 80,160, 89,179,102,128, 2, 49,149,113,198,197,197,121,214,175, 95,191, 17,128,226,165,212,174, 81, 74, 59,233,253, -175,143,107,148,210,143,117,127, 63,123,249,242,165,103,177,192,210,231, 84,171, 84, 94,238, 78,214,120,144, 32,195,238,107, 18, - 92, 92,232,134, 15,151,139,241, 89, 75, 46,124, 60, 44,161, 81,169, 27, 13, 30, 60,120, 15,222, 60,191,119, 0, 12, 24, 60,120, -112, 99, 14,135,115, 9,192, 49, 0,249,198,246, 29, 70,124, 68,152, 56,107,246,195,164, 50, 45, 82,139, 16,114, 82,239,252,125, -138,255,159, 55,111,222,130,144,144,144, 39,132,144,147,250,233,250,249,244,127,117,231, 58, 73, 41,237, 51,127,254,124,223,149, - 43, 87,174, 40,206,251,183, 88,176, 0, 88,103,202, 45,112,253,181, 53,184, 28, 45,184, 12, 1,151, 3,128, 18, 36, 38,196,161, - 64,146,119,131,190,250, 61,222, 48,203,213,224, 14,205, 91, 52, 91,189,111,253, 28,230,151,235, 69,200,147,202, 17,123,255, 10, -238, 92, 57,150,166,213,104,143,129,208,187, 0, 19,133, 87,236, 83, 74,171, 31,181,251,141,192,210,137,170, 82, 34,235,111,251, -170,253,184,113,227,198, 33,139, 22, 45,242,188,127,255,190,149, 68, 34,201,220,187,119,239, 83,133, 66,113, 31,192,134,215,175, - 95,119,222,176, 97,131,249,154, 53,107,122, 54,107,214,172, 81, 88, 88, 88,145, 1,156, 31,204, 30, 61, 60,114,252,140,175, 68, - 49,135,182, 64, 16, 19,133, 69, 15,179,180, 23, 83,139, 22, 2, 88,143,164,194, 14,153,114,205,249,117,157,235, 48,117,173,248, -240,182, 21,116, 49,128, 19,179, 71, 15,135, 56, 62,142, 75,185, 34, 40,149, 26, 20, 40, 89, 37, 0,169, 66,173, 81, 81, 11, 71, - 17, 0,112, 25,194,213,113, 86,200, 85, 60, 44,168,159,118,226,196, 9,115, 0,111, 77,246,208, 79,175,108,184,144, 82,154, 75, - 8, 89, 37, 16, 8, 22, 17, 66,104,235,214,173, 31,248,249,249, 21,218,217,217, 65, 38,147, 65,161, 80,128,207,231, 67, 38,147, - 33, 49, 49, 17,183,110,221,130,157,157,157, 81,247,170,176,176, 16, 86, 86, 86, 96, 89,246,157, 57,181, 90, 45,217,182,109,155, -197,147, 39, 79, 44, 14, 31, 62,236, 60,115,230,204,236, 38, 77,154,220, 29, 58,116,232, 11, 39, 39, 39,197,195,135, 15, 17, 17, - 17,129,220,220, 92,180,109,219,214, 32, 78,165, 82, 9, 46,151, 11,153, 76, 6,161, 80, 8, 46,151, 11,141, 70, 3,150,101, 75, - 68, 87, 97, 97, 33,114,114,114,192,231,243,161, 84, 86, 62, 85,174, 88, 44, 13,241, 35,244,208, 31, 17, 25,208,178,128, 74,162, -134, 34,255,205,166,204, 87, 67,158,167, 30, 50,235,199, 15, 14, 61, 54, 44,234,120,177, 5, 75, 31,149, 13,179,149,151,191, 42, -212,244, 60,168,202,134, 53,243,242,242,204,108,109,109,231, 26, 98,145, 35,132,128,195,225,128,207,231,131, 16,130, 78,157, 58, - 97,220,184,113,104,217,178, 37,226,226,226,112,224,192, 1,220,185,115, 7, 60, 30,175, 36,191,161,232,210,165, 11, 71, 36, 18, - 69,244,235,215,207,119,225,194,133,162,186,117,235, 34, 38, 38,198, 99,229,202,149,115, 47, 92,184,208,159, 16,210,138, 82,202, - 86, 73, 84, 60,244,247,102, 88,176,183, 66,161, 64, 76, 76,140, 49,199,188,109,245,246,246, 78,100, 24,230, 5,203,178,215, 1, - 52,163,148,118, 34,132,156, 1, 96, 81, 38,171,148, 82,250, 49, 33, 68, 2,224, 17,195, 48,207, 88,150, 77, 44,207, 18,110,101, -101,149,153,156, 33,113,118,176, 20, 97,100, 71, 75,124,184, 92,140, 65,173,132, 16,242, 9,158,198,167,193,187,126, 93,242,224, - 70,120, 43,157,184,106,157,154,154, 10, 0,173, 0,196, 39, 37, 37,185, 22, 11, 44, 19,254, 27, 40, 43,130,138,133, 83, 72, 72, - 72,159,242, 68, 85, 57,239,102,169,244,149, 43, 87,174,208,251, 63,183, 38,203,202,213, 87,142,149,191, 88,248,236,228,145,253, - 55, 63, 84, 17, 79, 95,255,142,122,214, 32,138,168, 91, 17, 0,232,175, 6, 53, 96,110,125,205, 24,115,139, 95,183,173,152,206, -108,191, 82,132, 36,113, 6, 34, 78,255,138,204,212,132,221, 0,157, 73, 95,133, 73,222,185,145,172, 55,216,215,201,209, 1,114, - 21, 5, 75, 1,188, 37,178,254, 22,113,213,183, 81,163, 70,193,145,145,145,158,114,185,220,234,207, 63,255,204, 11, 13, 13,125, -161, 84, 42,119, 82, 74,247,234,242, 28,207,202,202,250,142, 82, 10, 43, 43, 43, 46,143,199, 51,171,108,146, 38, 33,164,229,236, -241,163,110,172,218,182, 75,244,226,241, 3,108, 56,124, 26,121, 69, 69,218, 43, 25,178, 1,148,210,147,186, 60,151,238,101,201, - 82, 40,104, 29, 30, 67,224,106,193,115, 33,132,136, 40,165,242, 10,197,213,248, 81, 88,181,109, 23,230,140, 14, 98,212, 30, 94, -184,174,174,246, 84, 57, 0, 0, 32, 0, 73, 68, 65, 84,145,163,182,131, 80, 64, 51,139, 48,111,212, 96,206,125,153, 26,127, 62, -140,129,163,165, 53, 95,199,137,138,134, 9, 25,134,137,215, 19, 75,117, 79,156, 56, 97,222,183,111,223, 34, 0,250, 67,159,111, -165, 51, 12, 19, 95,197, 75,182,152, 16,226,188,103,207, 30, 70,173, 86, 23,198,197,197,193,197,197, 5,206,206,206,176,177,177, - 65,108,108, 44, 46, 94,188,136,167, 79,159,130,101, 89, 52,111,222,220,168,251,149,157,157,141,135, 15, 31,162,119,239, 79,102, -102,102,102, 88,219,217, 59, 72,111, 92,191,182,166, 58,156, 44,203, 18, 0,240,245,245,133,175,175,175, 40, 37, 37,197,253,228, -201,147, 78,223,127,255,253,107, 79, 79,207,125, 50,153,172,148,165,192, 80,129,165, 19, 44, 37,226, 79, 36, 18,129,207,231, 67, - 34,145, 32, 61, 61, 29, 5, 5, 5,111,198,108,108,109,171, 20, 88,165, 21, 33, 11,132,118,188,251, 86,186,223,104, 39, 35,159, -249,183, 44, 82, 53,153,255, 61, 53,222, 21, 14,107, 18, 66, 70, 0,152,107, 96, 93,160,209,104,192,231,243, 17, 16, 16,128, 77, -155, 54,225,206,157, 59, 56,118,236, 24, 60, 60, 60, 48,122,244,104, 48, 12,131, 39, 79,158, 24, 91, 68, 54, 50, 50,114,238,128, - 1, 3,124,247,236,217, 35, 74, 76, 76,196,211,167, 79, 97,107,107,139, 77,155, 54, 9, 39, 78,156,232,125,249,242,229,197, 0, -126,168,178,174,122,222,130,110,110,110, 67,154, 53,107,246, 86, 30, 23, 23, 23,155,179,103,207, 58, 21, 11,175,178, 30,134,229, - 32,111,241,226,197,235,124,124,124,214,235,134, 5, 3, 1, 88, 80, 74,187, 28, 62,124,152, 0,192,160, 65,131, 40, 33,228,138, - 46,255,163,176,176,176,174,177,177,177,116,233,210,165,229,182,115,153, 25,169,219,214,109,218,190,110,213,178,217,130, 89,189, -109, 48,168, 21, 15, 34, 62,129,181, 57, 15,203, 55,238, 80,223,187,117,237,161,171,171,235, 73, 0, 3, 82, 83, 83,225,234,234, - 90, 8,224, 25,135,195,137,215,106,181, 98,211, 28,247,127, 23,202,211, 34, 58, 43,114,106,121, 2,169, 58, 2, 77,223,194, 85, -140,249,243,231,251,134,132,132,220,174,201,186, 48,122, 39,173,252, 19,138,203,184,186, 56, 59,218,207, 27,221, 1, 44, 11,104, -180,128, 70, 75, 33, 45,146, 33,230,241,157, 34,136,200, 97,131,206, 40, 20,172,254,126,225, 87,245, 30, 36, 51, 16,231,170,112, - 53,124, 59,205, 76, 77, 24, 72, 95, 29, 26, 91, 83,226,202,197,201,241,202,254,237,223,225,206, 43, 37,180,236, 27,125,197,178, -180,228,239,191,225,129,105,224,232,232,184,230,230,205,155,117,133, 66,161,213,243,231,207,181, 97, 97, 97, 98,165, 82,185,181, - 88, 92,233, 48,194,223,223, 95,109, 97, 97,129,194,194, 66,133, 74,165, 42,172, 68, 92,185,119,105,249,193,181, 85,219,118,137, -228, 74, 37,242,101, 10,112, 28,156, 74,137, 43, 29,218,119,109, 88,187, 54, 17, 89,129, 2, 72,144,168,196,149,137,171, 46, 45, - 63,192,170,109,187, 32, 87, 42, 97,105, 99,203,184,183,234,130, 86, 95,110,130,132, 88, 81, 0,112,112,173,205,116,157,186, 28, -189, 54, 92,133,148,177, 98,117,156, 21,206,193, 74, 78, 78,222, 33, 22,139,231,139,197,226,249,122,162, 42, 1,192,252, 38, 54, -252,183,210,155,218, 10,230,139,197,226,249, 44,203,238, 48,224,210,138,135, 15, 31,158,220,180,105,211,124, 31, 31,159,252,236, -236,108, 68, 71, 71, 35, 55, 55, 23, 27, 54,108, 64, 76, 76, 12, 88,246,141,162, 46,111,184,196, 0, 97,132,220,220, 28, 75, 74, - 41,114,115,178, 45, 22, 46, 92,104, 83, 29, 78,173, 86, 91,234,221,170, 93,187, 54,166, 76,153,194, 47, 42, 42,178,125,253,250, -181,181,254, 62, 67, 57,149, 74,101,201, 53,167,148, 66,169, 84, 34, 63, 63, 31, 74,165, 18, 47, 94,188, 40, 17, 87,186,243, 27, - 39,176, 84,146,242, 39,217,203,178,213, 70, 54,100, 37,209,151,205,204,204,210,139, 27, 78,145, 72, 4, 66, 72,121,195,108, 53, - 18,173,185,248, 92,132, 16,106,102,102,150, 94, 13, 81, 88,101,125, 12,188,239,224,243,249, 24, 55,110, 28,110,223,190,141,184, -184, 56,112, 56, 28, 72,165, 82, 20, 21, 21,161, 71,143, 30, 16, 8, 4,198, 90,176, 40,159,207, 31,177, 96,193, 2, 81,124,124, - 60,178,178,178,138, 39,201, 67,171,213, 98,230,204,153,102, 66,161,112,132,177,166,122,177, 88,252,209,243,231,207, 27,149,221, -210,210,210,242,245,231, 12, 86, 23,135, 15, 31, 38,131, 6, 13,162,131, 6, 13,162,197, 66,203, 80,228, 37, 71,111, 59,118,252, -228,249,175,191, 93, 93, 88, 36, 45, 64,125, 55, 51, 20, 22,228, 99,121,200, 42,117,100,228,245, 43,115,103, 78,110, 23, 22, 22, -182, 18,192, 51,221, 33,207,194,194,194, 70,125,251,237,183,191, 65, 23,174,193,132,127,149,133,138, 84,246,238,213,196, 48, 94, -121, 28,186, 97, 66,179,247, 98,193,170,180,209,241, 30,218,194,217,209,225,242,158,205,203, 44, 79, 62, 6,146,147, 18,144,153, -154,136, 86,237,186, 32,230,241, 3,176,106,237, 17,250, 60,172, 74, 55,115,226, 53,184,161, 79,147,166, 83, 59,183,243,195,234, -147,133,120, 30,117, 22,121,153,169,155,105,252,161, 35, 53, 81, 25, 82,111,176,175,115, 45,199, 43,191,109, 9,182, 63, 19,205, - 32, 41, 41, 1,225,191,173,135, 90,245,150,158, 56,109,116,163,205, 42, 5,133,121,233, 80, 22,104, 33, 98,138, 68, 70,222,204, - 23,181,106,213,218,179,110,221,186,201,237,218,181, 51, 15, 10, 10,122,158,155,155,251, 61,165,244,144, 94,195,222,173, 81,163, - 70,223,108,222,188,217, 59, 41, 41, 9, 23, 47, 94,124, 14,224,110, 37,156,201, 28, 14,103,235,197,223,118,204, 54,171,215, 24, - 27, 22,124,173, 57,124, 39,186, 31,165,244,140, 30,167, 79,247,102, 13, 79,126,255,205, 23, 12,123,239, 15, 60, 76, 76,199,171, -124,197,197, 74, 56,193,225,112,112,241,183, 29, 48,171,215, 24,113,121, 82, 53, 79,104, 6, 75,151,186,120, 94,168,229,115,185, -220,219,227,199,143,227, 51, 28, 46, 24, 46, 31,209,185,114,245,195, 76, 14, 94,229, 87,111,169,187,231,133, 90,112,185, 92, 56, - 57,253,191, 97, 36, 58,215, 40,159, 6,203,219,183,111, 51, 28, 14,167,148, 48,215,183, 8, 25,107, 25, 50, 6,134,114,150, 21, - 88,197,208,104, 52,164,186,156, 10,133,162, 92, 81, 91,222, 92, 44,150,101,141,171,191, 50,191,124,149, 39, 55, 78, 96,233, 91, -164,244,135, 6,139,231,203,201,229,114, 39, 51, 51,179,244,226, 97,190,154,178, 96,189,139,103, 97,101,195,148,198,148,143, 97, - 24,176, 44, 11, 62,159,143,230,205,155,227,228,201,147,176,183,183,135,181,181, 53,172,173,173, 97,102,102, 6, 7, 7,135, 18, -129,197, 48, 6,123,223, 80,133, 66,225,225,225,225,129, 23, 47, 94, 64, 36, 18,149,108, 66,161, 16,190,190,190,144, 74,165,181, -255, 62, 91,253,251,193,132,161,221,251,111, 9, 61, 58,242,228,201, 83, 83, 85, 10,185, 95,227,198,141,232,221,200,203, 15,231, -206,156,220,203, 36, 73,254,231, 44, 92, 39,245, 69, 18, 33,228,228,188,121,243, 22, 84,151,111,222,188,121, 11,202,179,104,213, -152,192, 42, 86,140,229, 41,199, 98,113,181,123,211, 82,235,163,247,129,228,228,120,156, 63,180,177, 64,173, 82,230,178,172,218, -243,213,211, 7, 0,131, 95, 13,179,151,209, 54,253,123,119, 37,231,159, 40, 33,201,203,196,179,187,103, 19, 32, 19,204,175, 73, -113,181,103,203, 50,251, 19,143, 9,146,146, 18,112,230,192,250,124,181, 70,213,141,190, 10,187,255, 46,220,159, 11, 4,253,135, - 54,177,237, 51,174,163, 24,218, 64, 45, 70,196,196,126,236, 22, 72,250,139,175, 87,238,233,165,143,204,204,204,229,150,150,150, -204, 15, 63,252, 48, 86, 46,151, 47,165,148, 30,214,123, 96,122,212,175, 95,127,245,182,109,219,220, 95,191,126, 45,184,113,227, - 70,206,149, 43, 87, 40,128,144, 42, 58,238, 57,132, 16, 78,203,186,181,167,223, 75, 72,233, 71, 41,253, 67,143,211,183,143,127, -211, 63,119,133, 44,182, 82,255,121, 24,133,169, 73,152,255,103,178, 4,192,252,170,190,186,117, 29,140,189,163,163, 35,249,252, -243,207,217,130,130, 2,240, 5, 2, 86,173, 86,115,218,183,111,175,253,234,171,175,152,180,180, 52, 72, 10, 10,185, 3, 78,164, -219, 3,200,169,206,117,229, 11, 4, 80,171,213,168, 93,187,118, 73,154,164,160, 16,132, 16,184,186,186, 86,245,146, 5, 3,152, -217,190,125,123, 18, 16, 16,112,107,253,250,245,231, 42, 19, 41,213,177, 96, 85,105,232, 49,144,147,101,217,114,123, 79,181, 90, - 77,170,203,169,111,193,170, 74, 96, 25,109,193, 82, 84,100,193,202, 52,218,130, 85,158, 88,209, 23,135,250, 2,168, 58,115,176, -222, 67,227, 93,161,136, 50,166,124,197,243,224,248,124, 62, 30, 60,120,128, 58,117,234, 64,165, 82,193,202,202, 10, 86, 86, 86, -176,180,180, 68, 65, 65, 1,120, 60, 30,140,172, 51, 43, 18,137, 94, 71, 71, 71, 55,170, 85,171, 22,180, 90,109, 41,145,245,252, -249,115, 88, 88, 88,164, 24,107,193,114,115,115, 59,171,243, 34, 44, 5, 23, 23, 23,155,154,184,174,250,150,171, 65,131, 6, 85, -107, 28, 97, 75,200,236, 80, 0,161,131, 7, 15,222,243, 40,242, 84, 43, 87, 87,215, 83, 62, 62, 62, 4, 0, 76, 30,131,255, 45, -235, 85, 5, 35,106,153,101, 44, 79, 74,189,255, 51, 1, 16,221,255,153,122, 2, 76,255,111,101, 57,105,217, 33, 33, 33,151,245, -230,111,101,254,101, 22, 44,226, 61,180,133,147,131,253,229,157, 27,150, 90, 31,138, 2, 82,146,226,113,245,200,166,124,141, 86, -213, 13, 44, 77,141,188,112,228, 48, 8,138,240,234,240, 85,224,144, 1, 77, 3, 90,182,108,226,137, 99, 79,212,200, 76,126, 14, - 74,217,221, 52,253,183,162,119,110, 20,117,226,106,247,166,165,246, 71, 31, 16, 36, 39,197,227,252,161,141,249, 26,173,170, 91, -117,130,148, 22, 99, 60, 33,118,140,149,249, 79, 35, 63,106, 51,216,179, 94,109,176, 84, 13,150, 79,241,217, 28, 71,238,179,123, - 69,199, 60,122,114, 14,177,133,236,212,228, 72,195, 2,120, 22, 22, 22,126, 71, 8, 57, 74, 41,141,209,107,136, 63,246,246,246, - 94,241,211, 79, 63,213, 77, 73, 73,177,186,119,239,158,228,231,159,127,142,103, 89, 54,152, 82,154, 97,192, 3,249, 53, 33,100, -167,126,188, 27, 66,200, 7,179,199, 14,143, 28, 62,102,188, 40,254, 66, 40,236,226, 99,240,205,159, 98,237,179, 92,101, 16,165, - 52,205,128,162,218, 11,133,194,195,167, 79,159,126,209,178,101, 75, 34,149, 74,161, 86,171,145,149,149,133,163, 71,143, 70, 83, - 74, 97,103,103,135,211,167, 79,179,195,135, 15, 63,172, 80, 40, 6, 85, 36,178, 42,242, 34, 4, 16, 34,147,201,138,197, 85, 73, -186,181,181,117,136,181,181,117,241, 28,172, 29, 21,116, 94,197, 97, 26,136, 46, 76, 67,219, 63,254,248, 35,182, 87,175, 94,201, -229,137, 20,161, 80, 8,185,220,184,104, 31, 21,121, 37, 86,135,179, 34, 11, 86,217,116, 99, 56,139,135, 41,139, 39,183,151, 77, - 47, 6,135,195, 1,203,178,111,165, 87, 46,176,242,202, 23, 82,210,140,106, 91,176,244,189,253,170, 35,110, 74, 89,147,171, 8, -248, 89, 29,207,194,154,182, 96, 21,223, 11, 62,159,143,227,199,143, 99,204,152, 49,208,106,181, 48, 55, 55,135,165,165, 37, 44, - 44, 44,112,228,200, 17, 20,135,113, 48,166,136,106,181,122,111, 72, 72,200,130,109,219,182,153, 81, 74, 33, 16, 8, 74, 4,214, -210,165, 75,101, 42,149,106,175, 33, 2,171, 36, 66, 59, 75,163, 27,212,170,220,139,176,188, 99, 42,152,143,101, 27, 28, 28, 60, -138,101,217,254, 40, 19,138,161,236,211,164,251,109, 54,120,240,224,203,149,133,105, 0, 96, 23, 28, 28, 60,129,101,217, 98,199, -152, 82,222,130,122,249,138,251,146, 70,131, 7, 15,222, 83,214,139,208,132,127, 61,238,252,219, 10,204,173, 88, 92, 13,246,113, -114,112,188,188, 99,253, 82,235,125,183, 1,113,210, 43, 68, 28,223,156,175,101,213,250,162,165,163,145,159,135, 45,221,156,108, -145,115, 83, 6, 73,214,107,128,226,222,187,139,171,161, 13,156, 28, 29,174,236,218,184,212, 62,236, 62,131,148,215,241,184,162, - 19,129,239, 34,174, 62, 23, 8,250,251, 54,116,223, 53,236,227,142,118, 54, 68, 13, 77, 98, 44,118,142, 30,130,168,190, 42,116, - 24,106,131, 54,189,173,224,221, 66, 52,228,244,142,156, 15,221, 2,201,120, 67,173, 89,101,196, 85,223,186,117,235, 46,187,117, -235,150, 39,203,178, 86, 87,175, 94, 45,216,182,109,219, 43,185, 92,190,145, 82,122,202,136, 78, 65, 95, 92,181,156, 55,113,244, -141, 21, 63,237, 20, 69, 71,221,193,234,189, 39, 32, 83, 43,181,103,147, 11, 7,235, 15, 31, 86, 6,129, 64,240,221,165, 75,151, - 44,154, 53,107, 70,178,179,179, 75,172, 34, 42,149, 10,249,249,249, 40, 40, 40,128, 66,161,128,191,191, 63,179,113,227, 70,139, -233,211,167,127, 7, 96,106, 5,157, 76,141,123, 17,150, 7, 43, 43, 43,240,249,124,168, 84,170, 18, 11,150, 80, 40,132,141,141, - 13,178,179,179,113,240,224, 65, 84,101,105,227,243, 5,169, 12, 67,234,152,153,155, 43, 68, 34, 17, 91,158, 21,205, 88, 78, 29, -146, 63,254,248, 99,247,224,224, 96,145,191,191,255, 91, 22,172,234,112, 82, 74,139,122,246,236,105,190,113,227, 70,120,122,122, - 66,169, 84,150, 18, 82, 12,195,128,207,231, 35, 41, 41, 9,223,127,255, 61, 40,165,134,127,200,200,115,213,104, 54,170, 22,100, -217,234, 55, 91,150, 26, 69, 25,106,168,138,140,242,232,213, 23, 43,250, 34, 72, 55, 71,234, 45, 1,100,168,133,168,170, 33, 64, - 99, 61, 11,245, 5,155, 80, 40, 68, 94, 94,158, 25, 33,100, 68, 5, 17,231, 13,182, 96, 21, 11,172,152,152, 24,236,217,179, 7, -189,123,247,134,157,157, 29,114,115,115,113,232,208, 33,196,198,198, 66, 32, 16,128, 16, 98,140, 21,139, 13, 8, 8, 88,117,253, -250,245,190, 65, 65, 65, 77,191,249,230, 27, 51, 63, 63, 63, 60,123,246, 12,193,193,193,242,168,168,168, 56,153, 76, 22, 12, 67, - 2,146,234, 34,180, 23, 7, 17, 53,200,139,176,204, 49,101, 81, 65,152,134,143, 43, 96,211, 15,225, 80, 42, 76,131, 62, 34, 34, - 34,188,234,214,173,235,131, 55,158,129,197, 29,173,190,183, 96,169, 78, 56, 53, 53,181, 53, 76, 94,132, 38,252,147, 5, 22, 40, -153, 25, 52,122,162,245,222,219, 4, 73,137,113,184,123,122,107, 89,113,101, 72, 35,211, 93, 63, 86,134,200,204,194,143, 37,111, -220,146, 37, 89, 73, 0,229, 24, 45,176,202,114,130,178, 95, 7,141,154,104,191,255, 46,129, 56,233, 37,254, 12,223, 98,180,184, -210,231, 28, 41, 16, 44,230,113,153,133,159,116,106,201, 15,108,209, 8,230, 25,241, 72, 75, 22,227, 96, 76,102, 78, 92,174, 98, -252,159, 68,133,196,151,138,157,189, 39,216,219,219,185,240,208,103,178,131,253,205, 19,146, 99,181,187, 49, 42,170,162, 33,226, - 27,116,105,185,229,124,251,156, 13,172,173,173,127,136,138,138,170, 37, 18,137,172,239,222,189,171,221,190,125,123,146, 92, 46, - 95, 67, 41, 61, 96, 80,221,223,222,239,222,186, 97,253,171, 43,182,236, 16, 21, 74,139, 32, 85,170, 32,116,118,213, 30,141,124, - 60,176,162,192,149,101, 57, 9, 33, 93,199,142, 29,251, 65, 64, 64, 0,163, 47,174,148, 74, 37, 36, 18, 9, 10, 10, 10, 32,145, - 72, 32,145, 72,144,146,146,130,206,157, 59, 51, 31,124,240,129, 31, 33,164, 43,165,244,114, 89,206,119,241, 34,236,219,183,111, -201,215,189, 62,167, 94,152,134, 5, 0, 24, 66,200,157, 7, 15, 30, 20,246,234,213, 11,102,102,102,144, 74,165,240,240,240,128, - 70,163,193,233,211,167, 17, 21, 21, 37,101, 89,246, 42,128, 7,149,213, 93, 38, 43,242, 32,132, 48,178,162,162,230,163, 70,141, -234, 60,107,214,172, 82,174,229, 78, 78, 78,176,183,183, 55,138, 19, 0,114,114,114,154,252,241,199, 31, 95, 61,120,240,224,235, -222,189,123,219, 44, 88,176, 64,232,229,229, 5,173, 86,203, 84,151, 51, 55, 55,215,230,222,189,123,107, 58,118,236,248, 69,175, - 94,189,184, 43, 86,172,128,141,141, 13,180, 90, 45,204,204,204, 32,145, 72, 16, 28, 28,140, 27, 55,110,104, 40,165, 91,242,243, -243,191,169,140,179, 84, 28,172, 89,107, 43,117,143,172, 40, 14, 86, 57,207, 82,185, 22,159,138, 4, 80,121,249,171,122,230,171, -245, 81, 86,134,179,140, 96,131,173,173,237, 92, 0,115, 43,136, 56, 15, 67,223,205, 98,129,197,225,112,144,144,144,128,237,219, -183,191, 21, 7,171, 56,140, 67,121,220, 21,212,157, 94,185,114, 69, 75, 8,105,119,247,238,221,185, 35, 71,142, 28, 47,149, 74, -221, 45, 44, 44,196,106,181,250, 87,153, 76, 86, 28, 7,139,111, 76, 27, 34,149, 74, 19,203,243, 34, 44,155, 7,176,173,148,179, - 76,152,134, 82,161, 24,202, 28, 86, 42,132, 67,217, 48, 13,250,156,237,219,183,143,103, 24,230,169,110,168,253, 41,202,120, 11, -234,113, 54, 74, 77, 77,109,237,234,234,122, 21,128,121, 89, 47,194,191,226, 89, 50,113,154, 96,160,192,130,232,194,173, 4, 8, -204,114,240,240,226,110,163,197, 85,185, 35, 15,242,162,184,197,251, 95,183, 80, 42,228,144,230,167, 63,163,241, 7, 50,222,253, - 46,195,226,194,157, 68,136, 44,242,112,255,194, 47,121, 90,173,188, 27,141,251,253, 65,245,233, 48,111,235,233, 48, 62,177,177, -199,195,175,198, 64,156, 39,197,153, 87,185,135,104,145, 98,106,168,110, 45, 63,247,118,228,250,174,133,105, 91, 3, 63,179, 25, -226, 88,155,135,181,179,127,133,104,158, 3,191,205,135,157, 12, 94,163,176,120,226,251,134, 13, 27,166, 4, 6, 6, 90, 14, 25, - 50,228,121, 78, 78, 78,169,137,239,198,130, 82,154, 76, 8,249,233,212,182, 31,103, 59, 52,107,139,205,223,206,209,238,143,124, - 92,214,171, 16,149, 91,113,248, 93,230,205,155,199,151, 74,165,111,137,171,178, 2, 75, 34,145,224,225,195,135, 24, 61,122,180, -240,193,131, 7, 93, 0, 92,126,203,116,147,156,188, 67, 32, 16, 32, 58, 58, 26,157, 59,119, 14,209, 89,168, 18, 34, 34, 34,230, - 23,115, 12, 27, 54,172, 36,125,218,180,105,243,235,215,175,143,156,156, 28,124,249,229,151, 21,206, 29,210,133,105,216,134, 55, -107, 17,166,133,134,134,182, 11, 15, 15,111, 55,115,230, 76,126,239,222,189,113,243,230, 77,156, 63,127, 94,165, 82,169, 34, 1, - 68, 26,186,252,140, 46,126,208, 61, 66,200,227,213,171, 87,183,227,112, 56,139,139,247, 69, 71, 71, 99,247,238,221,213,225,212, - 0, 88, 67, 8,249, 41, 52, 52,116,241,133, 11, 23,198,142, 26, 53,202, 90,173, 86, 35, 38, 38, 6,191,252,242, 75,117, 57,191, -170, 85,171,214,162,211,167, 79,255,122,238,220,185, 1,159,127,254, 57, 51, 99,198, 12,108,218,180, 9,191,255,254, 59,171,213, -106,195,121, 60,222,168,204,204,204, 42, 29, 80, 74,197,193,170, 36,206, 85, 85,251,203,177, 96,137,241, 38, 66,187,161,107, 18, - 86,201,251, 46, 67,128, 6,150, 59,245,157,155, 37, 93, 61,186,116,233, 82, 98, 85,164,148,150,154, 55, 87, 44,172,140, 29, 34, - 4, 96,171,123, 78,183, 0,216,132,210, 81,220, 57,248,255, 72,239,134, 50, 54, 77, 85,216, 70, 67,129,152,202, 23,123,182, 5, - 40,154, 86,193,150,183,120,241,226,117, 75,150, 44, 89, 87, 54, 20,131,126,166,178, 33, 28,150, 45, 91,134,138,194, 52, 0,200, - 93,188,120,241, 42, 0,240,241,241, 33,186, 97,193, 86,208,121, 11,234,113,238,209,165,155, 47, 93,186,116, 36,128,202, 56, 77, - 48,225,111, 20, 88,160, 11,162,175,239, 87, 3,112, 0, 97,230,211,151, 7,163,223,185,225, 98,233,188, 75,251,150,110, 2, 69, - 46,213,106,230,214, 72, 13, 88,206,194,232,235,251, 88,128,216,130, 48,243,232,203,223,223,185,156,196,198, 30, 5,193, 83,240, -251, 19, 49, 77,147,170, 63, 13, 85, 42, 75, 89,127,116,115,174,134,186, 5,146,131,118,110,188,163, 95,117,115, 32,167,114, 70, - 26,125,158,204,204,204, 21,150,150,150,156, 53,107,214,140,149,201,100,165, 38,190,191, 67,231, 48,135, 16,194,105,211,192,115, -250,237, 23,137,253, 13, 29, 22,212,107,244, 5,110,110,110,143,229,114, 57, 8, 33, 80, 40, 20, 37,194,170,160,160, 0,249,249, -249, 37,255,171, 84, 42,100,102,102,194,195,195, 3,132, 16,126,101,157,141,254, 82, 46, 0, 74,113,234,163, 12,167, 49, 29,225, - 53, 66, 72, 84,112,112,112,167,224,224,224,230, 58, 43,208, 53,163,134,198, 74,115,171, 1, 92, 51, 51, 51, 23, 19, 66,220,249, - 2,161, 52, 34, 34,226,194, 59,114, 22,233, 44, 35,107,215,174, 93,187,220,194,194,162,117,116,116,244,197,119,225,212,137,167, -129, 14, 14, 14,110,123,246,236, 9,219,181,107, 87, 91, 46,151,123,147, 16, 50, 56, 47, 47,207,232,197,158, 73,105,139,128,209, -251,203, 96, 18, 12, 91,131,176, 74, 11,145, 33, 22,176,234,226,125, 8, 54,173, 86, 91,184,104,209,162,140,178,130,171,172,181, -170,248,127,149, 74, 37, 55,240,253, 52,198, 43,178, 10,113, 65, 10, 1,224,205,218,130,111,150,191, 49,116,177,103, 0, 21,174, -109,185,100,201, 18,186,108,217, 50,194, 48, 76, 56,128,103, 12,195,188, 40, 59, 9, 93,127,223,178,101,203,176,100,201, 18,186, -116,105,197,223,166,197,156,177,177,177,148,195,225, 92, 4, 16,207,225,112, 18,244,121,245,211,139,143,169,140,211, 4, 19,254, - 54,129, 69, 95,133, 37, 1, 24, 83,163, 95,134,241, 97, 23, 96,196, 90,102, 6,113, 38, 28, 72, 4,240,121,141,241, 1, 63, 76, -104,211,101,182,238, 43,112,109, 89,113,165, 15,241,117, 26,238,218,129,132,180,249,176,211, 76, 93,231,179,194,216,243,149, 55, -241,189, 6, 68,214, 91, 19,223,141,232, 24,206,153,153,153, 17,169, 84, 10,153, 76, 86,202, 90, 37,145, 72, 80, 84, 84,132,194, -194,194,146,137,228,133,133,133,197, 67, 83,180, 18, 78,152,153,153,233, 15,251,197,231,229,229,149,112,234,167,151,225,172,142, -128, 57, 67, 8, 57, 71, 41,213,214,196,181,148,201,138,234,232, 58, 54, 78, 77,113,234,156, 23,198,215, 36,103,118,118,182, 24, - 64,123,111,111,111, 65, 92, 92,156,178,186, 60, 85, 45,228,108,232, 66,207, 53,105, 13,122,223,168,105,193,166,251, 80,104,242, - 30, 44,107,207,106,152,240,151,158, 29,155,114,160, 31,251,167,170,197,158,139,133, 25,197, 47, 21,148,145,146, 55, 10,146, 2, -216,243,242,229, 75, 79,150,101, 19,203,177, 36,149,218,183,116,233, 82, 84, 20,243,175, 12, 39, 0, 28, 75, 74, 74,114,211,106, -181,169,101,120, 75,165, 87,198,105,130, 9,127,179, 5,235,127, 19,191, 41,149, 75, 0, 44, 49, 52,127,234,159,116, 33,128,133, -239,216,112,198,212,116, 61,170, 35,174, 0, 64,173, 86, 95, 2,128, 90,181,106,161, 86,173, 90,198, 28, 87,229,190,228,228,228, -114,189, 2, 71,142, 28,185,195, 88,206, 42,234,174,125, 15,215,243, 95,193,249, 46,226,202,132,255, 45,208,220,232, 36, 0,223, - 86,153,175,234,232,237,111, 9, 34,221,159,185, 0,114, 43,208, 56,149,237,171,140, 19, 0, 36, 0, 36,229, 28, 91, 81,186, 9, - 38,252, 45, 96, 76,151,192, 4, 19, 76, 48,193, 4, 19, 76, 48,161,102, 65, 0,116,175,224,139,193, 96,239, 0, 66, 72,247,106, -124,189, 95, 48,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,249,191,197, 89, 21,119, 89,111,228,154, 90, 70,235, 47, 71,177, -103,203,251,216, 0,116, 55,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,105,226,172,230,121, 38,254, 21,231,121, 31,155,105, -136,208, 4, 19, 76, 48,193, 4, 19, 76, 48,161,134, 97,154,228,254, 47, 5, 33,164, 1,128, 5, 0,244,215, 10,187, 77, 41, 13, - 41,147,111, 31, 0,115,189, 36, 41,128, 96, 74,233, 11, 99,206,199,225,112, 66, 58,117,234, 52,245,198,141, 27, 63,170,213,234, -224,106,148,215,211,213,213,117, 21, 33,196, 31, 0,143, 16,242, 50, 61, 61, 61, 68,173, 86, 95,120,135,107, 80,207,197,197,101, - 37,128, 22, 12,195,240, 8, 33,113,233,233,233,223,171,213,234, 43,239,192,105,229,236,236,220,129, 82,234, 2,128,195,227,241, -178, 83, 82, 82,110, 85,215, 27,110,240,178, 88,190, 68,170,225, 1,128,181, 5, 87, 29,182,196, 71,101,104,154,233, 41, 55,193, - 4, 19, 76,248,143, 10,172, 97,141,136,171,150, 11,110, 88, 52, 77, 42,238,124, 0, 52, 7,208, 0,192, 11, 0, 15, 40,165, 5, -239, 40, 20,254, 21,156,255, 64, 44,166,148, 14, 47, 83,239,183, 50,117,235,214,173,223,185,115,231,204,139,151, 81, 97, 89, 22, -102,102,102, 26, 0,163,141,184,158, 78, 65, 65, 65,243,118,238,220,137, 33, 67,134, 44, 34,132,172,163,148, 22, 26,122,188,189, -189,253,160,122,245,234,109,218,177, 99, 71,173,182,109,219, 17,129, 64,128,151, 47,227,220, 39, 77,154,228,231,236,236, 28,158, -158,158, 62,222,216,202, 59, 56, 56,140,168, 95,191,254,218,237,219,183, 59,118,236,216, 17,132, 16, 68, 69, 69,185,127,245,213, - 87,205, 93, 92, 92, 14,164,165,165,125, 97, 44,167,163,163, 99,195,250,245,235,119,221,188,121,179, 89,135, 14, 29, 32, 18,137, -240,224,193, 3,203,201,147, 39,187,184,184,184,196,164,165,165, 93, 53, 86, 92, 61,138, 58, 49, 64,163, 82,172, 6, 0, 46, 95, - 56,167,221, 58,201,137,156,168,107,125,171, 74, 27,188, 12,199, 76, 34,203, 4, 19, 76, 48,225, 63, 40,176, 6, 53, 37,193,224, - 98, 1, 0,242,113, 3,114,224,124, 60,231,122,143, 30, 61,188,199,141, 27, 71, 90,182,108,137,168,168,168,134, 7, 14, 28,248, -132,203,229,198,105,181,218, 40, 0, 79, 12,141, 66, 77, 8,225, 1,240,229,112, 56,254,255,100,206,127, 56, 44,116,245, 78, 7, -112, 91,151,118,187,108,166, 75,151, 46, 29,231,114,185,197, 22,172, 54, 82,169,212, 25,165,173, 94,134,160,174, 90,173,198,211, -167, 79,193, 48, 12, 15,128, 23,222, 94,250,162,162,251,226,238,238,238,190, 53,242,118,148, 3,225,154, 33, 87, 14, 64,174,130, -192,210, 25, 59,119,135,218,207,250,242,139,129,214,214,214,215, 37, 18,201,111, 70, 8, 62, 47, 15, 15,143,117, 15, 31, 62,116, - 48, 55, 55, 7,203,178, 40, 40, 40,128,139,139, 11,118,236,216, 97, 59,107,214,172,225,102,102,102, 87,100, 50,217,239,198,136, -242,250,245,235,119,125,252,248,177, 89,241, 66,207, 74,165, 18,238,238,238,216,183,111,159,112,198,140, 25, 77,132, 66, 97,178, - 66,161,120,101, 40,167, 68,170,225,105, 84,138,213,123,182, 44,173, 3, 0,163,190, 88,186, 90, 80, 96,125,218,144, 52,137, 84, -115, 10,128, 73, 96,153,240,151,130, 16,226,239,232,232,120, 56, 43, 43,235, 42,128,241, 53, 17, 74,132, 16,226,198,229,114,189, - 40,165,182,186,255,243, 52, 26, 77, 60,165, 84, 92, 93, 78, 71,239,174,125, 33, 52, 31, 3,202, 54,103, 0, 16,134,121,160, 85, - 21,237,206,122,118,249,196, 59,113, 10,204,198, 2,180, 57, 3,176,132, 97, 30,178,154,162, 29,153,177,151,207,152,158, 12, 19, -106, 76, 96, 13,110, 74,236, 0,204, 61,176,105, 1,195,229,112, 72,208,151, 33,195,119,109, 89,195,244,232, 59,184,100,152, 36, - 48, 48, 16,129,129,129,100,245,234,213, 13, 46, 94,188,216, 96,223,190,125, 26, 66,200, 67, 74,233,193,138, 78,214,203,155,200, - 88, 64,244, 73, 99,174, 52,232,219,223,182, 7, 4, 4, 64, 40, 20,226, 93, 56, 1,160,103, 3,206,171,222, 1,222, 15,131,166, - 47, 78,108,219,182, 61,173, 9,206,127, 17,110, 83, 74,251,235, 26, 46, 59, 15, 15,143, 14, 26,141, 70, 4, 0, 92, 46, 87, 14, - 96, 58,213, 45,241, 67, 8, 9,103, 89,182,159, 17, 13, 35, 3, 96, 73,191,126,253, 22, 77,155, 54, 13, 30, 30, 30,152, 49, 99, - 6,212,106,117, 20, 33,100, 49,128,149, 85, 5,242,115,114,114, 90,188,117,235, 86,123,174,192, 2, 45,231,198, 35, 53, 79, 3, - 0,176, 20, 2,199,167, 80,204,152, 49,195,250,238,221,187,223, 3, 48, 88, 96, 57, 57, 57, 5,239,216,177,195,222,220,220, 28, -148, 82, 20, 22, 22,162,160,160, 0,133,133,133, 40, 44, 44,196, 23, 95,124, 97, 29, 19, 19,179, 10,128,193, 2,203,217,217,185, -195,230,205,155,205, 68, 34, 17, 10, 11, 11,249, 42,149,138, 20, 20, 20,160,168,168,136, 42,149, 74,213,244,233,211,133, 79,158, - 60,233, 2,224,149,169,217,248,199,136, 1, 14,128, 79,121, 60,222,103,222,222,222,173, 94,188,120,113, 95,163,209, 28, 1,112, -228, 93, 63,162, 8, 33, 31,186,185,185, 45, 23,139,197,155, 41,165,161,255, 43,215,212,217,217,249, 72, 68, 68, 68,157,173, 91, -183,142,254,241,199, 31, 79, 27,243, 14, 85,240,209,219,174, 77,155, 54,142,159,125,246, 25,207,197,197, 5, 69, 69, 69,136,139, -139, 51,191,112,225, 66, 45,145, 72,148,173, 80, 40, 34,141,185, 87,142,141, 58, 88,130,107,125,160, 93,215,238, 29,135, 12,252, -212,202,217,193, 6, 50,165, 22, 47, 18, 83, 61,254, 56,125,188,179,155,223, 39, 17, 42, 85,254,176,172,103,127, 22, 26,203,217, -181, 87,159,142,221, 63,252,208,202,198,214, 6,249, 82, 21, 94, 38,164,120, 94, 62,127, 34,208,213,239,147,107, 44, 81,127,158, -254,232, 92,145,233,173, 51,193, 24, 24, 60,201,221,220,220,188,220,116, 27, 27, 27,116,237,218, 21, 33, 33, 33, 92, 0,254,250, -251,222, 90,252, 20, 16,158,220, 54, 31, 54, 22, 66,198,195,195,195,202,218,218,250,157, 57,223, 36,178, 94,237, 61,232,199,119, -126, 91, 48,250,194,190,181,190,210,130, 60, 94,217, 44,150,150,150,104,212,168, 17, 22, 45, 90,100, 24,231, 59,226,175,230,116, -117,117,109, 28, 24, 24,232,127,233,234, 85, 91,177, 88, 44, 20,139,197,194,115,151, 46,217,182,107,215,206,223,213,213,181,177, - 30,135, 49,229,252,110,203,150, 45,139,195,195,195,153,192,192, 64,216,217,217,161,107,215,174, 56,125,250, 52,247,199, 31,127, - 92, 1, 96, 81, 85,229,100, 24,166, 99, 96, 96, 32, 1,165, 72,203,215,224, 86, 72, 99, 60, 88,227,131, 2, 57, 69, 78,190, 4, - 50,153, 28,230,230,230, 34,221,176,174,161,117,111,223,174, 93, 59, 2,160, 68, 84, 21, 20,188,217, 10, 11,165, 80, 42, 85, 16, - 10,133, 86,132, 16,145,161,156,148, 82,151, 14, 29, 58, 0, 0, 84, 42, 85,201, 88,107, 94, 94, 30,201,207,207,135, 82,169, 4, -143,199,227, 19, 66,184,134,114, 90, 91,112,213, 92,190,112,206,168, 47,150, 38,141,250, 98,105, 18,151, 47,156,163,180,146,104, - 13, 73,179,182,224,170,255,206,231,147, 16, 82,139,195,225,252,226,237,237, 29,195,225,112,246, 16, 66, 92,222,133,147, 16,210, -154, 16,178,194,220,220,252, 66,147, 38, 77,146, 44, 44, 44, 46, 17, 66, 86, 18, 66,218, 85,135,147, 16, 34, 48, 55, 55,191,180, - 98,197,138,176,251,247,239, 15,185,120,241,162,215,163, 71,143, 6,174, 94,189,250,128,165,165,229,117, 66,136,249,187,188,155, - 94, 94, 94,187,110,221,186,213,186,125,251,246, 59, 9, 33,194,154,120,223, 9, 33, 28, 66, 72, 11, 98,224,154, 64,127,245,125, - 39,132,184,181,108,217,178,142, 72, 36, 66,247,238,221, 1,160,203, 59,114,182,155, 60,121,178,203,172, 89,179,120, 15, 30, 60, -192,206,157, 59, 17, 30, 30,142,140,140, 12,244,233,211,135,223,173, 91, 55, 23,161, 80,216,206, 40, 78,174,245,129, 47,191,154, -217,107,246,140, 9, 86, 15, 95,171,176,251,194,107, 28,139, 76, 69, 70,145, 0,125, 7,142,178,249,168,255,208,143, 4, 66,155, - 3,198,114,206,155, 59,183,215,196,177,195,173,162, 83, 89, 28,191,153,134,155, 79,243,161,225,217,162,247,192,241,118,205, 59, -244,250,132, 11,222,175,255,132,123,244, 95,231,252,207, 90,176, 8, 33,148,210, 55,139,184,134, 69,211,220, 65, 77,201,170,161, -211, 86, 44, 34, 12,161,117,125,219, 71,215,174,223, 84,234,224,224,128,162,162, 34, 40, 20, 10,240,249,124,200,229,114,188,126, -253, 26, 55,111,222,132,157,157,157, 81, 39,150, 72, 36,176,180,180,132,165,165,101,141,112,206, 31,221, 93,248, 50, 41, 83,120, -246,230,149,206, 27,166,254,222,182,126,139, 46,143, 62, 28, 58,227,177,117, 45, 55,249,163, 71,143, 16, 17, 17,129,220,220, 92, - 4, 4, 4,252, 87,238,221,109, 93, 59,125,155, 16, 98, 23, 24, 24,232,126,246,194, 53,187, 66, 57,107,157,144,174,230,177, 44, - 11,115,115, 87,205,193,195,199,243,135, 12,236, 75, 8, 33, 25, 0,110,235, 68,237,237, 42, 58, 2, 17,128,198,131, 6, 13,154, - 55,117,234, 84,196,197,197, 97,194,132, 9,178,219,183,111,103,183,111,223,222, 97,199,142, 29,102,179,102,205,194,213,171, 87, -151, 16, 66,142, 2,136,167,148,202, 43,120, 9,249,124, 62, 31, 26,157, 92, 80,105,217, 18, 93, 47,145, 72, 64,101,185,224,243, -249, 28, 0,181, 0, 24, 52, 79,142,101, 89, 62,143,199, 43, 17, 87,175,211, 37,120,157, 81, 4, 73,161, 18, 50,153, 6, 74, 25, - 5,199,220,129, 11, 36, 56, 3, 72, 48,240,122,114, 68, 34, 17, 52, 26, 77,201,250,136,197,150, 49,165, 82,137,252,252,124,112, - 56, 28, 75, 0,214, 0,114, 12, 33,124, 51,121, 29,199,116,195,125,184,179,183,159,227,139, 83,243, 85,131,150,198,148,164, 89, - 91,112,213,135,103, 53,225, 56,184, 55,191,209, 98,200,175, 62,197,105,127,231,252, 43, 66,136,176, 86,173, 90,151,195,194,194, -154, 52,104,208, 0,241,241,241, 62,131, 7, 15, 14, 32,132,180, 48,118,205, 68, 66,136, 57,195, 48,171,198,140, 25, 51, 53, 40, - 40,136, 52,108,216, 16, 92, 46, 23, 26,141,198, 61, 46, 46,174,235,161, 67,135,230,114,185,220, 29, 90,173,246,107, 67,231,245, - 17, 66, 24,129, 64,112,112,251,246,237,157, 2, 2, 2,176,103,207, 30,220,190,125,155,109,221,186, 53, 51,114,228, 72,120,122, -122, 6,140, 28, 57,242, 24, 33,164,119,117, 44, 89,132, 16,207, 17, 35, 70,212,225,112, 56,104,223,190, 61, 63, 34, 34,162, 37, -128,136,119,188,166,150,238,238,238, 87,187,116,233,210,226,194,133, 11,247, 8, 33, 93,140,153,199, 72, 8,233,239,230,230,182, -218,198,198,198,206,136, 54,182, 40, 37, 37,229, 27, 35,214, 56,109,235,239,239,143,196,196, 68, 52,110,220, 24,124, 62,191, 29, - 33,100, 18,128, 94, 0, 22, 26,179,226, 4, 33,196,173, 93,187,118,142, 93,186,116, 33, 43, 87,174, 4, 0,240,120, 60,104,181, - 90, 48, 12, 3, 30,143, 7, 31, 31, 31,242,234,213, 43,123, 66,136,155, 33,195,133,142,222, 93,251,182,255,176, 87,199, 78, 1, - 31, 48, 63, 30,126, 1, 45,171, 5,135,104,192, 37, 44, 88,181, 16, 66, 62, 7, 13,125, 91,113,158, 62,121, 24,224,216,168, 71, -223,172,103,231, 79, 24,194,217,171,111,191,192, 38,141, 27, 50, 27,142,189, 68, 94, 74,140, 54, 37,246, 90, 22,195, 97,208,196, -191,155, 99,195,166, 45, 56, 45, 2,186,240,196,241, 79,186,218, 55,232,220, 61,231,197, 85,147,168,120,255,237, 79,137, 22,249, -207, 8,172,178, 56, 28, 77, 23, 91, 11,136,215,161, 67,251,153,204, 2,149, 52, 46, 46, 14,142,142,142,112,117,117,133,141,141, - 13,162,163,163,113,233,210, 37, 60,123,246, 12, 44,203,162,121,243,230, 70,157, 56, 43, 43, 11, 15, 31, 62,132,157,157, 93,141, -113,214,175, 83, 11,211,234,212,226,167,103, 75,248, 23,110, 63, 11,248,121,254,192,166,140,207,192, 93,114,249,255,247,253, 74, -229,127, 99, 37, 17,125,111, 65, 15, 15,143, 14,187,119,239,230, 43, 52,176,106, 56, 41,242, 7,169, 92,107, 1, 0, 22, 34,142, - 52,106,117,163,175,191,251,238, 59,233,216,177, 99,125, 94,191,126, 29, 82, 21,175, 64, 32, 88,254,241,199, 31,207,166,148,242, -190,252,242, 75, 0,192,168, 81,163, 36, 55,111,222,108, 72, 41,205, 32,132,184,141, 27, 55,238,249,229,203,151,205,103,206,156, -201,209,104, 52,209, 92, 46,151, 18, 66,130, 41,165, 75,223, 50,145, 50,204,221,123,247,238,213,117,243,108, 4, 79, 7, 6,129, -139,222, 44,167,230, 96,206, 34, 57,225, 37, 98, 31,221,134,139,139,139,141,171,171,107, 76,227,198,141, 85, 41, 41, 41,115, 11, - 11, 11,183, 86, 86, 70, 62,159,255, 32, 42, 42,202,213,211,211, 19,133,133,133, 72,206, 44,194,140, 35,230,144,200,222, 24, 45, -120,144,161, 69,157, 70, 86,102,140,242,182,179,179,179, 74,169, 84,126,155,151,151, 87,233,114, 31, 60, 30, 47,251,209,163, 71, -150, 30, 30, 30,144,203,229, 52, 39, 39,135, 72,165, 82, 20, 20, 20,144, 83,167, 78, 13, 72, 77, 77,109,237,229,229, 69,220,221, -221,131, 27, 52,104, 32, 75, 73, 73,153, 96,200, 28,175,176, 37, 62, 42, 66,136,150,203,229,254, 56,113,226,196, 33, 71,143, 30, -189,123,120,105,147,254,148, 82,149,174, 49,177,241,245,245, 61,251,193, 7, 77,221, 66,215, 52,219, 72, 41,253,225, 31,240,120, -141, 89,176, 96, 65, 19,123,123,123, 76,158, 60, 25,203,126, 13, 70,224, 0, 0, 32, 0, 73, 68, 65, 84,150, 45,195,226,197,139, - 27, 76,158, 60,121, 34,128,117, 70, 52,148,102, 46, 46, 46,119, 54,108,216,224,211,161, 67, 7,156, 62,125, 26,251,247,239,199, -171, 87,175, 52, 94, 94, 94,220,128,128, 0, 44, 89,178, 4, 31,125,244,209,132,233,211,167,119, 38,132,180, 52, 80,116,140, 93, -178,100, 73,255,142, 29, 59, 98,244,232,209,138, 43, 87,174, 12, 1,112,238,252,249,243,221,174, 94,189,122,120,239,222,189,102, - 43, 86,172,232, 62,107,214,172,201, 0, 54, 85,163,254, 3, 58,117,122,179,182,113,199,142, 29,177,122,245,234,143,222, 69, 96, - 17, 66, 4, 14, 14, 14,167,246,236,217,211,162, 81,163, 70,248,252,243,207, 91, 14, 25, 50,228, 20, 33,164, 7,165,212,160, 6, -169,118,237,218,171,194,195,195,189, 43, 26, 73, 40, 15, 10,133,194,254,211, 79, 63, 93, 9,192, 40,129,181,111,223, 62,124,243, -205, 55,104,222,188,249, 7,109,219,182,221, 54,105,210, 36, 12, 26, 52,232, 67, 66,136, 51,165, 84,106, 80,199,194,229,122,245, -233,211,135,119,228,200, 17, 0, 64,167, 78,157,208,189,123,119, 60,126,252, 24, 55,110,220, 0,135,195,129,133,133, 5, 58,116, -232, 32, 16,139,197, 94, 0,170, 20, 88,140,208,124, 76,255, 62,189,173,142,223, 76,133,150,213,160,149,183, 53, 2,124,156,240, - 52, 89,130,168,152,100,104,149,124, 88,219, 59,160, 93,231,158,246,105, 41,175,198, 0,168,122, 62,150,208,124,204,103,253, 63, -177, 60, 30, 41, 70,158, 56,150,190,184,125,244,146, 90, 46,157, 0, 0,119, 47, 30,216,230,226, 96,214,163,161,127, 43, 78,151, - 30,253,236,142,236, 79, 27, 3,192, 36,176, 76,120,119,129, 5, 0, 5, 42,164,127,248,201, 64,220,187,119, 15, 0,144,157,157, -141,236,236,108,120,123,123, 99,211,166,210,237, 86,117,132, 11,203,178, 53,206, 9, 0,206, 14,214,248,188,119, 27,238,141,135, -251, 69,210,204, 76,145,165,165,165,252,191, 38,176,244,161,209,104, 68, 94, 94, 94,144,200, 64,242,139,212,150, 89, 7,222, 88, -246, 29,135, 93,177, 84, 42,149,140,165,165, 37, 20, 10,133,200,128,142,128,215,191,127,255,217, 7, 15, 30,228,197,198,198,162, -126,253,250, 80,169, 84,184,121,243,102,178,110,129, 98, 80, 74,197, 28, 14, 71,204,178,108,131,230,205,155, 35, 36, 36, 4, 62, - 62, 62,164,119,239,222,115,117, 34,139,213,231, 76, 77, 77, 93, 53,105,210,164,110,135, 14, 31,181,223, 62, 84, 6, 73,190, 4, -133,133,133,120,112,255, 46,114,210,229,248,249,231,159, 33, 18,153, 17, 0,252,140,140,116,254,204,153, 51, 55,186,187,187,247, - 74, 78, 78,238, 83, 81, 57,197, 98,241,242, 47,190,248,162,221,129, 3, 7,108, 11, 10, 10, 32,147,201,145, 35, 53, 71,204,250, - 55,235,235, 54,249, 42, 6, 91, 54,111,101,154,213,181,112, 44, 42, 42,194,212,169, 83,215,186,185,185,117, 16,139,197,227, 42, -226, 76, 73, 73,185, 53,109,218, 52,231,189,123,247,138,148, 74,165, 74,171,213, 66, 38,147, 49, 7, 14, 28,152, 91,183,110, 93, -187, 29, 59,118, 16,145,200, 76,151, 55,153, 63,101,202,148,131, 46, 46, 46,123,211,210,210, 70, 87,113, 77, 57, 28, 14,103,125, -104,104,232,200,161, 67,135, 90,165,166,166, 54, 13, 15, 15, 23, 2,144,233,178,184,246,232,209,163,238,154, 53,107,106,249,250, -250,206, 37,132,240, 40,165, 43,254,206,231,201,209,209,113,122,255,254,253,177,114,229, 74,156, 56,113, 98,150,189,189,253,218, -101,203,150,193,205,205,109, 26, 33,100,189, 17, 11,232,254,176,110,221, 58, 31, 31, 31, 31,140, 26, 53, 74,121,225,194,133, 5, - 0,142, 1, 72,188,126,253,186,199,175,191,254,218,247,224,193,131, 43, 55,108,216, 32,218,180,105,147,247,192,129, 3,215, 3, - 24, 87,229,251,237,236, 60, 51, 40, 40, 8,107,214,172,193,149, 43, 87, 6, 82, 74, 79,235,118,157, 33,132,244, 93,177, 98,197, -197, 69,139, 22, 97,221,186,117, 95, 26, 43,176, 8, 33,150, 77,154, 52,249,182, 87,175, 94,184,126,253, 58, 2, 3, 3,209,174, - 93,187, 89,132,144,141,148,210,172,106,136, 43,198,210,210,242,224,238,221,187, 3,235,214,173,139,239,191,255, 30,179,103,207, -198,174, 93,187, 2, 63,255,252,243,131,132,144,207,202,190, 51,229,193,198,198,198,210,220,220, 28,115,231,206,165,175, 94,189, -202,173, 42,127,157, 58,117,236,214,174, 93, 75,236,236,236,108, 12, 44,167,153, 72, 36,106,239,231,231,135, 37, 75,150,224,252, -249,243, 88,180,104, 17,252,252,252,144,152,152,136, 97,195,134,153, 47, 92,184,112, 16, 0,131,214, 37,164,148,218, 56, 56, 56, - 32, 35, 35, 3, 60, 30, 15, 29, 58,116,192,177, 99,199,160, 80, 40,224,228,228,132,188,188, 60,180,105,211,166, 88,140, 25,232, -116, 67,253, 28,237,109,144,241, 36, 5, 92,104,224,223,208, 17,151, 31,103, 67,165,102,225,228, 96,139,180,140,116,180,245,115, -135, 82,233, 1, 74, 89, 63, 67, 24, 5, 28,198, 95, 40, 50, 67, 78, 65, 22, 82, 98,174,100,171,180,138, 73,121,175,110, 36, 1, -128,125,253, 78,147,238,222, 56,127,119,240, 39,157,156, 10,165,117, 64, 40,219,198, 36, 25, 76, 48, 6,140, 1, 47,202, 91,105, - 69, 69,111,143, 18,188,171,112,121, 31,156,229,225,191, 40,176,138, 81,188, 56,178, 82,205, 66,169,102,139,191, 98, 33,147,201, - 12,181,138,169,207,158, 61,187,103,198,140, 25, 88,187,118, 45,158, 63,127, 14, 62,159, 15, 63, 63, 63, 87, 66,136,101,177,197, -197,223,223,223,137, 97, 24, 60,125,250, 20, 63,254,248, 35,198,142, 29, 75, 35, 34, 34,118,149,215, 81, 80, 74,239,231,228,228, -108,158, 52, 97,108, 94,110,250,107,168,101,185,200, 72,121, 9,133, 52, 15,223,135,172, 66,145,154,139,180,124, 21,210,242, 85, - 96,132,246,216,182, 99, 55,167, 73,147, 38,189,184, 92,110,159, 74,202,121, 51, 61, 61,125,199,148, 41, 83,242,210,210,210, 74, -234,167, 84, 83, 40,213,165,159, 87,115,115,115,172, 95,191,222,166, 97,195,134,253,121, 60, 94,215, 74, 56, 83,147,146,146, 98, -167, 76,153,162, 76, 79, 79, 71,126,126, 62,142, 31, 63,222,183,110,221,186,118, 43,127, 88, 75,164, 42, 46,210,242, 84, 72,203, - 83, 65, 96,233,132,131,135,143,114, 26, 53,106, 52,156,199,227,181,171, 74, 92,237,221,187,119,228,208,161, 67,173,126,248,225, -135,156,240,240,240, 45,148, 82,253, 27,242,116,253,250,245,135, 14, 30, 60, 88, 48,123,246,108,251,213,171, 87,207, 34,132, 44, -248, 27,205,243, 93,135, 14, 29,218,152,101, 89,132,133,133, 61,162,148,174, 59,122,244,232, 29,133, 66,129, 97,195,134,121,225, -205,112,145, 33, 60,173,135, 15, 31, 62, 53, 48, 48, 16, 95,125,245,149,234,194,133, 11,254,148,210,181,148,210, 4,250, 6,137, -148,210,141, 87,175, 94,109, 62,125,250,116, 69,155, 54,109, 48,122,244,232,177,132,144,192, 42,120,219, 7, 5, 5,249,176, 44, -139, 3, 7, 14, 60,212, 19, 87,197,247,241,210,225,195,135,111, 42,149, 74,140, 24, 49,162, 30, 33,164,155, 17,117,231, 11,133, -194,176,239,190,251,206, 54, 37, 37, 5, 35, 71,142, 84, 60,125,250, 20, 75,151, 46, 53,179,177,177, 57, 93,252, 14, 24, 3,161, - 80,248,243, 79, 63,253,212,191, 89,179,102,152, 50,101,138,114,235,214,173, 51,166, 78,157,170,244,247,247,199,150, 45, 91,250, - 11, 4, 2,163,150, 0, 17,139,197,121,209,209,209, 14, 85,109,201,201,201,233, 6,214,217,220,202,202, 42,210,215,215, 87,226, -231,231,215, 74,163,209, 32, 58, 58,250,229,158, 61,123, 88, 63, 63, 63,108,222,188, 25,171, 87,175, 70,159, 62,125,192,225,112, - 6, 25, 83, 86,169, 84, 10,145, 72, 4, 62,159,143,168,168, 40, 40, 20, 10,152,155,155, 67, 36, 18,129,195,225,192,214,214, 22, - 86, 86, 86, 0, 64, 13, 43, 43,168,164, 72, 13, 30,143, 1,151, 97, 17,155,152, 15,149,154,133,136,207, 1,143, 75, 0,202,194, -214,130, 7,145,128, 3,134, 16,214, 64, 78,228, 75, 85, 16,240, 25,240,248, 2,194,104,180,102, 37,157, 35, 87,107,102,102, 38, - 32,142,214, 66,136,248,166,152,220, 38,212,176, 5,171,216,202,100,136, 72, 81, 40, 20, 53, 46,124,222,149,179, 60,113,248,174, -156,255,200,155,200,229,202,159, 61,123, 38,176,118,112, 99, 29,172,120,185,117,199,222,176, 1, 0,123, 75,110,190, 74,171,102, -197, 98, 49,132, 66,161,220, 16, 46,185, 92, 62,129, 16,242, 61,128,166, 92, 46,247,228,238,221,187, 73,104,104,168, 93, 80, 80, - 80, 28, 33, 36,197,215,215,215,115,247,238,221,214, 0,176,113,227, 70,122,240,224,193,143,240, 38,244, 69, 90, 69,156,105,105, -105, 75,121, 60, 94,196, 23, 95,124,177, 73, 32, 16,216, 89, 88, 88, 56, 92,191,126,157,200, 85, 20,173, 23, 36,150,120, 22, 90, -155, 49,184, 54,223, 26, 19, 39, 78,228,196,196,196,132, 0, 56, 89, 9,231, 92,161, 80,120,253,249,243,231,107,109,220, 91,212, -178,240, 92, 96, 19, 48,255, 41, 0,192,211,145, 7, 70,215, 30,230,229,229, 33, 51, 51, 19, 83,167, 78,181,139,139,139,155, 11, -224,114, 69,156,201,201,201, 87,133, 66, 97,242,147, 39, 79,186,240,120, 60,129,133,133, 69,235,200,200, 72, 34, 87,178,248, 96, -110, 34,114, 10,223,148,211,222,146,139,187,223, 57, 99,218,180,105,220, 23, 47, 94,172, 2,208,177,220,175, 23,134, 89,173, 47, -174,230,204,153,243, 0, 64, 61, 66, 72,169, 33, 80,173, 86, 75, 70,140, 24,241, 24,128,223,236,217,179,237, 41,165,179, 8, 33, - 57,148,210,237,127,245,179,100,109,109,189,114,210,164, 73, 56,120,240, 32,114,115,115,215, 3,128, 68, 34, 89,183,111,223,190, - 3, 19, 38, 76,192,111,191,253,182,146, 16,242,135, 1, 86,172,143,135, 13, 27,134, 51,103,206,224,226,197,139,223, 82, 74,163, - 43,120, 71,159, 19, 66,230,134,135,135,111, 8, 10, 10,194, 47,191,252,210, 11,192,245, 74,120,123,124,244,209, 71, 56,125,250, - 52,178,179,179,183,148,151, 33, 47, 47,111,235,241,227,199,219,126,244,209, 71, 8, 9, 9,233, 1,224,146, 1, 66,195,199,198, -198,102,247,134, 13, 27, 90, 55,107,214, 12,195,135, 15,151,171, 84,170, 94,179,103,207, 62,177,127,255,126,171, 61,123,246,180, -154, 56,113,226, 45, 66,200,120, 74,233, 77, 67,174, 37,135,195, 89,177,105,211,166,113, 93,186,116,193,172, 89,179, 52,103,207, -158,237, 71, 41, 61, 71, 8,137,155, 51,103,206,169, 31,127,252,145,179,102,205,154,113, 28, 14, 39, 83,171,213,254, 93,162,250, -187,141, 27, 55,182,237,217,179, 39, 94,190,124,137,155, 55,111, 66,165, 82,253, 22, 25, 25,121,173, 65,131, 6,223, 41,149,202, - 19, 22, 22, 22,163,172,172,172,124, 91,180,104,209,141, 16, 98,110,200, 60, 60, 66, 72, 94, 92, 92,156,133,147,147, 19,120, 60, - 30, 30, 62,124, 8, 39, 39, 39, 0, 64, 70, 70, 6,252,252,252,192,225,112,144,151,151, 7, 0,249,134,137, 33,230, 81, 92,130, -184,158,189,149, 5,160, 21,225,254,211,100,212,114,180,131,150, 48, 72, 75, 75, 69,139,198,238, 32,132, 32, 47, 59, 13,132,144, -199,134,112,106, 41, 27,245, 90,156, 81,219,193, 74,136,102,109,123, 58, 68,254,145, 25,106, 83,191,227, 68, 46,135,112,132, 34, -235,237,227, 70,143,118,100, 89,138,188,236,116,112, 25,230,182, 73, 50,152, 80, 45, 11, 86, 69,147,202,222, 76,150, 54,175, 84, -164,136, 68,162, 18,235,137, 17, 95,118, 53,206, 89, 21,222, 7,231,223,104,105,152, 79, 8, 9, 39,132,204, 79, 74, 74,138, 29, - 55,110,156, 74,163, 82, 20, 68,124, 95,111,222,189,144,186, 83, 34,151,186, 78, 57, 54,195,102, 94, 81,126, 78,193,198,141, 27, -213, 73, 73, 73,177,250,199, 84, 33, 76, 95, 83, 74, 79,255,250,235,175, 91,195,194,194,224,231,231,135,232,232,104, 39,169, 84, -218,242,241,227,199,246, 62, 62, 62, 8, 13, 13,197,193,131, 7,215, 82, 74,207, 87, 38,174,244,172,107, 23, 82, 83, 83, 27, 37, - 38, 38,122,219,218,218,170,109,109,109, 81,214,179, 80, 34, 99,145,157,151, 15,123,123, 7, 88, 91, 91,123, 85,197,169, 80, 40, - 78,167,166,166, 54,100,237, 26,119,106,152,181, 62, 63,106, 69, 29, 68,173,168,131,211,115,221,224,106, 43, 64,110,110, 46, 50, - 51, 51,145,153,153, 9, 66, 8,212,106,117, 19, 3, 56, 95,137,197,226,157,175, 95,191, 14,119,118,118,134,149,149, 21, 40,128, -180, 60, 53, 30,172,241,193,131, 53, 62, 72,203, 83, 67, 82, 80,128,186,117,235,194,202,202,202,175,130,251,195,212,174, 93,187, -247,208,161, 67,173, 0, 64, 39,156, 62,164,148, 78, 41,103,155,172,209,104, 58, 20,231,253,230,155,111,236, 1,124,244, 23, 63, - 79, 28, 66,200, 23, 19, 38, 76,104, 37, 18,137,176,121,243,230, 87, 0,246,234,118,135,109,221,186,245, 41, 0,204,152, 49,195, - 23,192, 44, 93,136,132, 10,193,231,243,253,155, 52,105,130,200,200, 72, 0, 56, 90,197,233, 15, 71, 68, 68,160, 65,131, 6, 16, -137, 68,173,171,200,235, 85,167, 78, 29, 60,125,250, 20, 0,238, 87,144,231,254,211,167, 79, 81,167, 78, 29, 16, 66,188, 12,168, -123,255,158, 61,123, 62,186,124,249,114,235,246,237,219, 99,220,184,113,202, 91,183,110,245,166,148, 94,187,127,255,126,215, 17, - 35, 70, 72, 27, 54,108,136,171, 87,175,250,140, 24, 49, 34,130,195,225,124,111, 0,231,216,224,224,224,249, 3, 6, 12, 64,112, -112, 48, 61,116,232,208,112, 74,233, 57,221,251,117,246,192,129, 3, 35,151, 47, 95, 78, 63,251,236, 51, 44, 91,182,108, 62, 33, -100, 74, 21,214,160,124,173, 86, 11,169, 84,106,144, 9,222,208,252,142,142,142, 31,247,236,217, 19,139, 22, 45, 66,237,218,181, -113,226,196, 9, 10,224, 36,165,244,186, 66,161,232, 68, 41,253, 81, 42,149, 30,139,140,140, 68,143, 30, 61,248, 0, 62, 49,228, -252, 26,141, 38,225,242,229,203, 42, 7, 7, 7,184,187,187,195,195,195, 3, 82,169, 20,121,121,121,240,243,243, 67,219,182,109, - 33,149, 74,113,242,228, 73, 85, 94, 94,158, 65,142, 40, 26,165,116,207,249, 83, 71,242, 29,172,132,112,119,178, 65,221,218,246, - 40,204,203, 66,102,154, 24,254, 77, 60,208,217,191, 46,178,242,149, 56,123,242, 72,110, 65, 65,209, 30,131,172,254,138,162,221, - 23,254, 56,145,111,103,197, 71,163,198,190, 24, 49,110, 70,139, 22, 45, 3,206,183,105,211,225,236, 15, 43, 87,124,240, 97,187, - 38, 36, 57, 75,142, 51, 39,143,230,230, 75, 36,187, 97,194,123,199,127,101,130,123, 41,129, 85, 1,178,102,205,154, 5,161, 80, - 8, 87, 87,215, 18, 81, 84, 44, 82, 4, 2, 1, 92, 93, 93,161,209,104,112,224,192, 1, 0,200,170,226,100,138,126, 83, 66, 88, -133,154, 22,241,120,188, 26,225,212, 89, 10, 20, 3,231,252,194,254, 17, 81,190,147, 75,117, 56,255, 5,104,163,139,105,213,134, - 82,154,155,144,144,144, 60,100, 96,191,252,196,184, 39,105,210, 60,113,170, 36, 59, 41, 53,233,213,227,180, 5,115,103,229, 39, - 39, 39, 39,233, 98, 97,181, 17,139,197,253, 0, 24, 58,151, 96,214,144, 33, 67,126,154, 48, 97, 2,125,240,224, 1, 0, 32, 42, - 42, 10,163, 71,143,166, 35, 71,142, 92, 15, 96, 94, 53,202, 45,149,201,100,165,172, 31, 42, 45, 91, 50,180, 39,145, 72, 32, 22, -139,161, 84, 42, 13, 86,194,207,207,174,121,150,147,112, 87,237,235,105, 1, 95, 79, 11,248,212, 49, 7,209, 20,150,136,171,204, -204, 76,164,167,167, 3,128,220,136,114, 74, 20, 10, 69,169,114,234, 15, 65, 74, 36, 18,164,165,165, 65,171,213, 42, 43,104, 36, -216,148,148,148,179, 7, 15, 30, 44, 0,128, 31,126,248, 33,135, 16,114,145, 16,242, 83, 57,219, 54, 46,151,251,103,113,222, 53, -107,214,228, 0, 56,253, 23,138,171, 1,205,154, 53,203,157, 63,127,254,230, 47,191,252, 18,219,182,109, 67,106,106,234, 60, 74, -169,166,184, 46, 89, 89, 89,115,182,108,217,130, 49, 99,198, 96,241,226,197,107, 90,182,108, 41, 33,132,140,168,136,179, 86,173, - 90,238, 92, 46, 23,247,238,221,147, 80, 74, 95, 86,209,160,166,221,187,119, 47,157, 16, 2, 87, 87,215,250,149,229,181,183,183, -247,182,178,178, 66, 74, 74, 10, 0,196, 87,144, 45, 65, 44, 22, 83,129, 64, 0, 55, 55,183, 6, 85,213,223,206,206,110,206,206, -157, 59,185, 79,158, 60,193,135, 31,126,152,124,245,234,213, 30,148,210, 43,186,178,221,139,138,138, 10,236,218,181,235,179,243, -231,207, 99,213,170, 85,164,121,243,230, 83,170,226,244,244,244,156, 60,118,236, 88,108,218,180, 9,219,183,111,159, 66, 41, 13, - 43, 83,231,253, 91,182,108,153,177,125,251,118,140, 27, 55, 14, 94, 94, 94, 35, 42,227, 75, 76, 76,156,219,165, 75,151,168,231, -207,159, 27,180, 66,129, 33,249, 9, 33, 93, 3, 2, 2,188,101, 50, 25,118,239,222,253,210,219,219,251, 78, 88, 88,216, 44, 74, -233,195, 50, 89,143, 29, 57,114, 4,159,127,254, 57,154, 55,111,190,155, 16, 18,100, 64, 39, 41, 78, 76, 76,204,122,248,240, 33, -203,225,112,224,238,238,142,222,189,123, 99,216,176, 97,104,222,188, 57, 50, 50, 50,112,237,218, 53, 54, 46, 46, 46,203,208,128, -163, 89,207, 46,159,136,143,127,246,231,189, 91,215,212, 92, 14, 3, 15, 87,123,124,218,189, 5,198, 15,234, 0,127,159,218, 72, -204,144,225,210,165,243,234,248,248,151,145,134,120, 16, 22,115,198, 70, 63,140,120,114,239,134,134,199, 37,240,105,220, 16,139, - 22,204,177, 91,190,100,174,109,195,250, 30,120,248, 42, 31,231,207,157, 81,139,147,147, 46,155, 60, 8, 77, 48, 22, 85, 13, 17, -254,176,109,219,182, 54, 59,119,238,236, 49,107,214, 44,203, 81,163, 70, 65, 36, 18,161,168,168, 8,238,238,238,208,106,181,248, -227,143, 63,112,247,238,221, 66,150,101,207,163,140,251, 63, 33,164,187,126,172,140, 63,226,168,217,155,224,149, 69,109,194, 7, - 15,174, 17, 78, 0,176,124,193, 90,103,215, 85,134,110, 12,187,241,217,190,179,247,200, 87, 65,157, 25,255,198,117, 0, 0,206, -206,206,176,182,182, 54,154,179, 6, 58,173,247,206,169, 63,124,155,154,154,250,148, 16,146, 49, 97,194, 4,159,226, 9,237, 66, -161, 80,158,148,148, 20, 91, 28,104,180,236, 49, 85,149, 83,231,233, 54,149, 16,114, 60, 63, 63,255,236,236,217,179,177,124,249, -114,156, 56,113, 34,144, 82,250,103,117,234, 78, 41,213,122,121,121,229,221,190,125,219,185, 65,147,150,168,231,196, 67,167,111, -159,131, 82, 10, 7,115,138,130,188, 28,220,191,127, 15, 5, 5, 5,183,140, 41,167,155,155, 91, 94, 70, 70,134,163,147,147, 19, -114,114,114,144,149,149, 85, 34,174,114,115,115,145,147,147, 67, 9, 33,215,141,224,148,122,123,123, 23,197,198,198, 10,156,235, - 52, 64,125, 39, 62, 2, 22, 60, 5, 40,133,135, 61,131, 2, 73, 30, 34, 35, 35,145,159,159,127,165, 34, 78,150,101,191, 30, 49, - 98, 4, 7,192,200,217,179,103,219, 3,104, 62,103,206,156,243,101, 61, 5,121, 60,222,186,208,208, 80,191,226,161,196,185,115, -231,174,165,148,238,252,171,158, 37, 7, 7,135,175, 79,157, 58,101,165, 82,169,176,113,227, 70,172, 93,187,118, 23,165,244,247, - 50,215,227, 20,135,195,217,194, 48,204, 23,211,166, 77,195,164, 73,147,204, 91,181,106, 53, 75,207,202, 85,138, 51, 37, 37,101, -145,191,191,255,226,140,140, 12,131, 38,236, 63,127,254,124,162,191,191,255,162,140,140,140,213,149,221, 35, 11, 11, 11, 11,173, - 86,139,248,248,248, 92, 74,105,126, 5,247, 78,222,176, 97,195, 20,173, 86,235,110,110,110,110, 95,213,243,153,155,155,187,162, - 85,171, 86, 75,211,211,211,207, 1,248,190,108,200, 17, 74,233, 3, 66,136,239,151, 95,126, 57,125,229,202,149,159,165,165,165, - 29,168,138, 51, 49, 49,113, 69,215,174, 93,191,125,246,236,217,175, 21, 13,245, 82, 74, 55, 19, 66, 84,161,161,161, 83,226,227, -227, 67, 42,227,164,148,158, 68, 37, 67,230,229,112,151,155, 95,159,147,195,225,204, 89,185,114, 37,179,109,219, 54, 80, 74,215, -104, 52,154,138,202,249,144,195,225,236,233,208,161,195,168,176,176, 48,145,175,175,239, 36, 0,251,171,122, 62, 21, 10,197,205, -136,136,136,182, 9, 9, 9,142, 93,187,118,229, 23,127,152,228,229,229,225,228,201,147,170,184,184,184, 44,169, 84,122,211,152, - 54, 68,163,148, 4, 69, 92, 10,223,159,240,252,113,187, 46,189,250,219, 41, 85,238, 16,102,115,144,151,157,134, 63, 78, 30,201, -141,143,127, 25, 89, 84,148, 23,100, 12,167, 74,145, 63, 44,242,242,241, 3,201,241,177,109, 59,117,237,109, 39, 87,122, 66,200, -103,144,157,158,130, 63, 78,133,231,196,199,191,186, 46, 87, 43, 70,255, 93,237,252,255, 18,231,127,209, 28, 87,229, 6,128, 15, -160,187,165,165,229,242,197,139, 23,175,185,117,235,214,154, 62,125,250,172, 17, 10,133,203, 1,116, 7,192,175,224,184,238,127, - 37,103,107, 55,216,119,173, 79,174,245,244, 38,236,228, 64, 59,237,232, 0, 11,101,183,110,221,182,188, 11,103,117,183,247,205, - 9, 32, 92,173, 86, 83, 0,105, 0,194,117,219,252,114,142,153,175,183, 63,237,245,235,215, 20, 64,184, 49,229, 4,224, 56,116, -232, 80,182,160,160,128, 14, 25, 50,132, 2,176,121,151,186, 11,133,194,174,157, 58,117, 82,167,103,230,208,167,175, 82,232,205, -168,104,122,246, 82, 4, 61,112,228, 20,221,180,101, 59,253,224,131, 15,148, 0, 60,141,225,228,114,185,221,186,118,237,154,157, -158,158, 78, 99, 99, 99,233,181,107,215,232,225,195,135,233,246,237,219,233, 79, 63,253, 68,235,212,169,147, 14,192,217, 24, 78, - 51, 51,179,254, 31,127,252,177, 58, 79, 82, 68,227, 83,178,233,163,216,120,250,231,237, 71,244,143, 75,127,210,189,251,195,104, -211,166, 77,229, 85,113,190,233,199, 56,155, 14, 28, 56, 32,161,148,210,254,253,251, 39, 3, 16,233,237,175,247,245,215, 95,103, - 80, 74,233,234,213,171,179, 1, 44,248, 27,158,165, 94,181,107,215,126,202,231,243, 79, 1, 24, 89,197,113,195,184, 92,238, 9, - 23, 23,151, 59, 0, 62,253,171,223, 35, 0,125,156,156,156,110, 2,232, 87,197,113,197,249, 6,252, 23,222,247,247,116,223,187, -113,185,220,107,120, 19,227,202,144, 62,224, 59, 14,135,115, 26,192,135,198,148, 19,128,155,165,165,101, 71, 75, 75,203,190,150, -150,150,125,109,109,109, 59, 2,112,123,151,186, 59, 52,236,222,215,163,101,191, 99,117,154,127,146,232,209,162, 79,162,151,127, -255, 99, 14, 13,187,247,125, 87, 78, 79,255,254,225, 30, 45,250,188,246,104,209, 55,161, 94,235,254,199, 28, 27,119,255,248,191, -118,223,255,201,156, 21,156,103,226, 95,113,158,247, 82,118, 35, 43,106, 1,224, 83, 0, 33,186, 95,139,119,189, 1,239,131,179, -173, 43, 26,117,247, 38,177,189, 27,115,115, 0, 12,170, 9,206,127, 96,227,248,171, 82,169,164,114,185,156, 22, 21, 21,209,194, -194,194, 82,194, 73, 95,136,137,197, 98,154,156,156, 76, 95,191,126, 77, 19, 18, 18, 40,128,189,198,150,211,218,218,122,231,224, -193,131,181, 60, 30,111, 83, 77,212,221,222,222, 62, 36, 32, 32, 64,181, 97,195, 6,122,236,216, 49,186, 99,199, 14, 58,109,218, - 52,234,231,231,167,176,181,181, 13,170, 14,167,139,139,203,162,198,141, 27,103,239,218,181,139,238,221,187,151,174, 95,191,158, - 46, 92,184, 80,235,238,238,158,102,101,101,245, 81,117, 56,157,156,156,126,238,216,177,163,234,231,159,127,166,231,207,159,167, -251,246,237,163, 95,127,253, 53,245,241,241, 81, 88, 88, 88, 12, 52,132, 19, 0,135,203,229,254, 56,121,242,228, 52, 55, 55,183, - 83,101,246,153, 55,109,250,127,236,157,119,120, 20,197,227,198,223,185,222,239,210, 46,151, 70, 66, 40,233,244,222, 17, 67,239, - 8,168,128,168, 40, 69,197,138, 8,138, 13,105,210,164,136,138,138,162, 8, 40, 88, 0,169, 42, 2,130,212,208,146, 72, 2,233, -253,114,233,185, 92,174,239,252,254, 72,130, 1,147,112, 9,124,127, 34,204,231,121,230,185,187,185,221,119,119,102,103,119,223, -157,182,145,103, 39, 79,158,156, 3,224, 53,118,193,101,154, 76,147,105, 50,131,117,111, 24, 44, 65, 35,107,187, 42, 0,252, 72, - 8,217, 83,211, 63,227, 14,212,160,221,113,205,147, 57, 52, 17, 64, 56, 33, 68,112,167, 52,239, 66,150,136,197, 98, 65,181, 65, -173,161,174, 81, 46,103,252,252,252,106,255, 46, 5,208,232,121,150, 74, 75, 75,159, 34,132, 60,127,211, 20, 3, 77,166,176,176, -112, 62, 33,228,219,148,148,148,165,110,110,110,157,236,118,187,189,172,172,236, 88,113,113,241,107,148,210,172,166,104,230,230, -230, 46, 34,132,236, 94,176, 96,193,171,148,210,174, 60, 30,207,108,183,219,143, 20, 20, 20, 44,165,148, 26,154,162,169,215,235, -167,139, 68,162, 47,146,146,146,150,202,100,178,118, 28,199, 89, 77, 38,211,145,130,130,130,151, 40,165,122, 23,203,184, 19,192, - 43,132,144, 85, 0,242,111,250,207, 68, 8,233, 21, 31, 31,239, 73, 41,205,101,117,234, 12, 6,131,113,127,244,193,170,239,134, -113,199, 77,203,127, 69,243, 46,106,218,189, 6, 96,178, 11,203, 45,189,131,219,172,188,195,105,184, 12, 96,232, 29,214,140, 3, -240,216,157,212,180,217,108,167,225,226,123,217,110,177,111,185,245,196,219, 0, 48,115,197, 96, 48, 24,247, 16,108,246, 52, 6, -131,193, 96, 48, 24,140, 59, 12, 65, 85,231,239,186,158,170, 93, 30, 29, 64, 8,137,110,194,211,252,175, 76,147,105, 50, 77,166, -201, 52,153, 38,211,188,191, 52,107,105,215,247,110,211,132,155,244, 62,197,127,145,255,113,231, 52,214, 1,144,105, 50, 77,166, -201, 52,153, 38,211,100,154,247, 93, 96, 77,132, 12, 6,131,193, 96, 48, 24,119, 24,102,176, 24, 12, 6,131,193, 96, 48,152,193, - 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12, 70,211, 33,213,163, 1, -170,126, 16, 66, 41,165,132,101, 11,131,193, 96, 48, 24,140,127,197,152,220, 35, 94,132,213, 96, 49, 24, 12, 6,131,193, 96, 48, -131,197, 96, 48, 24, 12, 6,131,241, 31, 48, 88,132, 16,202,178,130,193, 96, 48, 24, 12,198,191,197,189,230, 69,106,106,176,250, - 87, 39,172, 63, 59,196, 12, 6,131,193, 96, 48,254, 5,238, 41, 47,114, 67, 39,119, 6,131,193, 96, 48, 24, 12,198,237,195,250, - 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,113, 31, 27, 44, 66, 72, 52,211,100,154, 76,147,105, 50, 77, -166,201, 52,153, 38, 51, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131, -193, 96, 6,139,193, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12,198,191, 4, 1, 80,231, 72, 0, 74,233,175, 46, -139, 52, 97, 52,193,173,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,239,105,222, 74,187, 49,254,227,174,134, 82,250, 63, - 11, 0,162,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,239,183, 32, 96,149,120, 12,198,127,156,157,132,143,226,176, 96, - 80,234, 7,190, 56, 23,185,151,147,241, 54,229,110, 91, 83, 31, 25, 4,153, 93, 7,135,212, 0,253,165,148,219,214,100, 48, 24, -140,251, 8,102,176, 24,140,255, 58,134,240, 80, 8,176, 20, 60,248,130,218,146,160,141, 92, 10, 32,246,182, 53, 69,220, 34, 56, -121, 1,160,182, 68,120,135, 45, 3, 16,207, 50,155,193, 96, 48, 92,227, 95,233,228, 46,149, 74, 99,196, 98,241,123,132, 16, 9, - 59, 4,140,255, 21,132, 16,137, 88, 44,126, 79, 38,147,197,220,179,137,220,210, 86, 14,158,115,168,213,206,249, 31,184, 92,226, -109,178, 56, 67,193,115, 12,195, 23,161,202,219,210, 20,144, 65,102, 27, 23,248,205, 25,147,174,194,234,136, 0,197,237,105,254, -125, 76,220,196, 98,241, 1, 66,136, 23, 43,161,247, 38,145,132,116,238, 34, 20,206,137, 32,100, 0, 33,132,176, 28, 97, 48,131, -245,255,136,197, 98,233,216,177, 99,199,151,197, 98,113, 58, 33,100,212,253,148,225, 42,149,234, 79,141, 70,163,119,115,115,211, -107, 52,154,243,183,138,191, 71,141, 79,168,183,183,119,186,167,167,103, 98,237,120,239,246,227,122,134,244,158,250,182, 87,212, -152,126,119, 96, 27,163, 36, 18, 73,122,183,110,221, 94, 50,155,205, 29,239,217,204, 52,115, 58,240,248, 15,196,229,154,228,185, -101,118, 93, 76,154, 73, 5,240,251,195, 10,223, 38,107,150,114, 58,128, 14,184,152, 85,169,248,179, 72,171,251, 35,217,162, 6, -143,247, 0,204,196,231,182, 47, 56, 60,222, 44,142,227, 6,138, 68,162, 23,217,229,247,222, 68,204,227,245,250,115,212,168, 69, -175,181,107, 55, 59, 28, 24, 89,151,201, 34, 85, 60, 31, 17, 17,177,159, 16,242,200, 29,188,182,188, 31, 30, 30,158, 77, 8,121, -129, 29, 9,198,127,198, 96, 77,104, 65,122, 77,106, 73,142, 62,220,130,148, 63,210,146, 24, 31,107, 73,142,143,111, 65, 6, 52, -117,195,199,142, 29,147, 93,185,114,197,187, 95,191,126,219,101, 50,217,113, 66, 72, 72, 83,116,164, 82,233, 1,129, 64, 48,161, -118,156, 92, 46, 63, 32, 16, 8, 30,190, 41, 46, 78, 46,151,151,202,100,178,100, 23,117,175,137,197,226, 10,169, 84,122,173,118, -188, 64, 32,120, 88,161, 80, 28,184, 41,110,194,205,113,245, 33, 20, 10, 3, 50, 51, 51,189,179,178,178,188,197, 98,177,174,118, -124, 70, 70,134,119,102,102,230, 13,241,141, 69, 40, 20, 14, 80, 42,149, 59,111,142, 83,169, 84, 59, 93,213, 80, 42,149,223, 11, -133,194, 1, 55, 25,195,127,196, 53,213, 92, 13, 26, 52,232,120,110,110,110,160,155,155,155, 91,237,255, 60, 52,110,131,191,222, -180,225,229,209,195, 6,205,242,142, 28,219,182,137,250, 33,114,185,252,120,215,174, 93,183, 31, 62,124,216,251,155,111,190,145, -223,179,103,239,206, 72, 17, 8,215,151,163, 84,251, 87,182, 89, 59,124,212, 4,193,133,204, 74,173,221,233,244, 0,248,253,177, -185,185,164, 73,154, 2,123, 31,142, 82,221,111,105, 66,237, 3, 19,103,243, 15,167, 9,180,118,167,211, 19, 60,244,107,146,230, -223,199, 70,200,231,243, 95, 94,181,106, 21, 15,192,115,132, 16,241,253,116,177,237,230, 79,252, 31,108, 45, 56,211,201,143,244, -186,131,134, 34, 74,161, 80,156, 35,132,132,222, 45,233,180,114, 92,194,246,148,148,131, 83, 90,181, 26,241, 90,187,118, 79,220, -108,178,170,191,191,182,108,217,178,199,226,226,226,180, 45, 90,180,152, 65, 8,225,221,129,188, 88,179,108,217,178,185,113,113, -113,126,193,193,193,239,222, 9, 77,198,221,229,221, 1, 60, 0, 96, 56,128, 7, 1,116,173,254,222,165, 58, 12, 71,213,172, 8, -181, 63,187, 84,175, 91,243,127,183,122, 52,134,215,177, 94,151, 90,241,181,127,223,252,189,126,170, 71, 3,208,218,159, 55,135, -135,131,241,206,236,158,254,166,191,246,108,165,198,204, 20, 90,124,229, 2,189,240,233, 18, 58,187,139,214, 52,169, 5,222,111, -194,232, 3, 74, 41,165, 49, 49, 49,180,178,178,146,238,219,183,143,211,233,116,102,177, 88,188, 6,128,162, 49, 90, 98,177,216, -168,213,106,203,101, 50,217,151, 0,196,148, 82, 72, 36, 18,163,143,143, 79,185, 84, 42,221, 2, 64, 66, 41,197,224,193,131, 43, - 41,165, 84, 34,145, 84,184,162, 59,116,232,208, 10, 74, 41, 21,139,197, 21,213,251, 44,145, 74,165, 95,119,238,220,185, 76, 34, -145, 24,171,227,196,114,185,252,203, 46, 93,186,148, 73,165, 82,163, 43,186, 30, 30, 30,153, 78,167,147,238,217,179,135,122,123, -123,231,212,196,187,187,187,103, 58,157, 78,186,107,215, 46,170,213,106,115,154,144,167, 60,165, 82,185,162,107,215,174, 37, 74, -165,178,176, 86,220,202,238,221,187,151,214,196,185, 18, 20, 10, 69, 97, 96, 96, 96,177, 82,169, 92, 9,128, 71, 41,133, 82,169, - 44,108,222,188,121,145, 90,173, 94, 81, 19,231, 74,240,243,243,155,225,237,237,157,227,237,237,157,227,230,230,182,216,215,215, - 55,207, 96, 48, 80, 74, 41,109,217,178,101, 62,165, 20,218,118, 99,123,182,238,245,216,219,222, 81,163, 94,250,100,199,201,211, -199, 98, 11, 13,237, 6,206, 90,161,105, 55, 90,211,136,244, 43,196, 98,241, 26, 31, 31, 31,243,174, 93,187,156,122,189,158, 94, -186,116,137,230,230,230,210,250,202,245,127, 62,108,136, 12,160, 27,195,182,199,191, 21,120,229,216,178, 33,118,154,118,152,110, -125, 66,107, 63,250,146,127, 18,253, 56,252,123,186, 49,162, 89,147, 52, 63,142,216,122,233,141,192,132,245,239, 62,111, 79, 79, - 79,167,115,166, 14,113, 28,154,237,159, 76, 63, 9,223,209, 36,205,191,143,209,163, 99,199,142, 53,102,100,100,208,200,200,200, - 10, 62,159, 63,237,126, 25, 77,212,213, 15,254,209,161,226,236, 75,223,204,225, 70, 70,201, 11, 59,250,162,215, 29, 24,197, 21, -229,237,237, 93,176,121,243,102,170, 82,169,242, 1,132,222, 13,105, 5, 64,194,129, 81, 95,181,107,183,139, 27, 63,222,249, 85, -187,118,187,194,129, 81,168,154, 22,136, 0,152,183,124,249,242, 24,187,221, 30,243,229,151, 95,198,140, 26, 53, 42, 6,192,156, -219,220,230,218,247,223,127,159,218,237,118,250,229,151, 95,210, 81,163, 70, 81, 0,235, 92, 93, 95,169, 84,182,110,219,182,237, -150,200,200,200,140,246,237,219, 91, 35, 34, 34,204,161,161,161,105, 81, 81, 81,155, 37, 18, 73, 48, 27, 17,247,255, 86,118, 26, -242, 34, 93,231,205,155, 55, 31, 0,157, 55,111,222,124, 74,233,240,234,229,134,215,254,126,243, 39,165, 52,186,246,239,186, 52, -106, 66, 93,154,117,109,227,166,239,245,167,167, 38, 49, 0,250, 1, 56,122,243, 2, 19, 90,160,231,236,158,254,149,149,134, 92, - 26,187,228, 69,250,251, 3, 1,244, 68,127, 31,154,248,242, 88,154,251,205, 26,250, 76, 7,119,211,248, 22,120,160, 41, 6,107, -215,174, 93,244,208,161, 67, 52, 57, 57,153,234,245,122,250,230,155,111, 90, 21, 10, 69, 49,159,207,159,236,170,150, 76, 38, 43, -205,206,206,166,111,190,249,166,165,186,182,169,133, 92, 46, 47,205,203,203,163, 75,150, 44,177,202,100,178, 20, 0, 33, 18,137, -196,152,156,156, 76,165, 82,169, 75, 6, 75, 46,151,151,198,198,198, 82,137, 68, 82, 1, 32, 68,171,213,166,252,246,219,111,118, -142,227,104, 64, 64, 64, 25,128, 22, 90,173,246,218,225,195,135,175,199,185,106,176, 42, 43, 43,233,161, 67,135,168, 78,167,203, -185, 57,126,255,254,253, 55, 24, 47, 23,243, 83,231,235,235,123,161,102,255,130,131,131, 13, 0,116,126,126,126, 23,143, 30, 61, -106,175, 54, 51, 6, 87,245,124,124,124,242,243,243,243,233,186,117,235, 44, 42,149,234, 60, 0,157,143,143, 79,190,193, 96,160, - 31,126,248,161, 69,173, 86,199, 0,208,185,162,229,229,229,149, 99,181, 90,105, 73, 73, 9,237,214,173,155,241,196,137, 19,180, -172,172,140, 82, 74,105,243,230,205,243, 41,165, 8,235, 55,237,189,211, 87,141,101, 79,206,221,240, 93,112,215, 73, 75, 14,158, -201,206,250,252,167,115, 49, 94, 81,163,135,184,178, 13, 62,159, 63, 89,161, 80, 20,127,240,193, 7,182,226,226, 98,154,146,146, - 66, 79,157, 58, 69, 79,157, 58, 69,245,122,253,189,105,176,118,128, 79, 55,134,141,166, 27,195, 98, 54, 79,241, 42, 40, 63,191, -141,210, 95, 94,160,201,239,181,160,111, 13, 81,149,115, 27,195, 98,232,198,240,241,244,157,126,130, 70,105,126, 26, 49,146,110, - 12,139,121,127, 66, 80,225,133,152,179,244,232,209,163,244,163, 53,203,233,236,104,255, 10,110, 99, 88, 12,253, 56, 98, 92,163, - 52,107, 5,137, 68,114,245,248,241,227,244,216,177, 99,244,221,119,223,165,114,185, 60,227,246,243, 33, 66, 68, 63, 14, 13,162, - 27, 66,250,211, 77, 33,190,244, 72,211,246,237,127,109,174, 6,134,138,179, 10, 46,252, 68,105,209, 53,154,183, 50,146, 14, 9, - 19,222,150,201,170, 54, 87,134,180,180, 52,154,151,151, 71, 87,175, 94, 77,213,106,245, 93,109,178,194,128,209, 0,230,175, 88, -177,226,186,185,218,176, 97, 67,204,229,203,151, 99, 2, 3, 3,247,221,198,182,214,173, 88,177,226,186,185,218,176, 97, 3,189, -124,249, 50, 13, 10, 10,202,188,213,186, 83,166, 76,145,247,236,217, 51,102,242,228,201,166,205,155, 55,211,180,180, 52,122,249, -242,101,186, 98,197, 10,250,246,219,111,211, 47,190,248,130,142, 27, 55,174,162, 91,183,110,167,199,143, 31, 47,109,228,190, 9, - 40,165,226,234, 32,164,148,214, 24, 76, 1, 0, 33, 0, 62, 51, 85,255,244, 6,245,121,145,250, 76, 84,125,198,234,230,255, 26, - 48, 96, 13, 26,181, 91,109,175,161,244,212,174, 66, 61, 66, 41,253, 71,223, 23, 1,197,194,233,175,188, 39, 77,221,188, 26,250, -111, 63, 4,191, 68, 15, 97,121, 33, 44,199,247,194,126,124, 55, 30,235,209, 67, 38, 35,100, 81, 83,234, 18, 77, 92, 12, 0, 0, - 32, 0, 73, 68, 65, 84,251,100, 50, 25, 4, 2, 1,114,114,114,144,147,147,131, 25, 51,102,136,142, 31, 63,238,214,167, 79,159, - 79,149, 74,229, 69, 66, 72, 59, 23,170,133,225,231,231,135,217,179,103,139,191,250,234,171,150, 42,149,234,188,211,233, 20,234, -116, 58,204,154, 53, 75,180, 99,199,142,230,110,110,110,103,157, 78,167, 72, 44, 22,195,213, 62,151,132, 16,136, 68, 34, 56, 28, - 14, 97,215,174, 93,207,197,199,199, 7,247,235,215, 79,112,229,202, 21, 20, 20, 20, 8,186,116,233,114, 49, 62, 62,190, 85,223, -190,125, 5, 41, 41, 41, 40, 45, 45,165,174,234, 90,173, 86, 72, 36, 18,240,120,188, 27,226, 45, 22, 11, 26,179,143, 53,205,127, -189,122,245,138,187,116,233, 82,251,126,253,250, 9, 98, 99, 99, 81, 80, 80, 32,236,214,173, 91,220,197,139, 23,219,245,238,221, - 91,144,152,152,136,210,210, 82,151,135,216, 75,165, 82,104,181, 90, 60,246,216, 99,226, 29, 59,118,180,215,106,181,151, 4, 2, -129,216,203,203, 11,147, 39, 79, 22,239,216,177,163,131, 78,167,187,232, 98,147, 33, 31, 0,236,118, 59,102,204,152,161, 80,171, -213,200,204,204, 4,199,113,112, 58,157, 0,128,194,226,194,203, 23, 47,199, 94,121,236,209, 9,253, 42,109, 22,203,201, 51,231, -254,106,217, 60, 40,128, 16,218,252, 22,121,217, 78, 46,151, 95,124,228,145, 71, 62,203,200,200,112,155, 60,121,178, 48, 45, 45, - 13,133,133,133, 16, 10,133,144, 74,165, 55,228,241, 61, 69, 89,164, 39, 56, 12, 76, 55, 88, 37, 18,183, 0,149,210, 55, 20,200, - 56,134, 22, 90, 9,248, 60,190,244,108,138, 73, 1,208,129, 8, 44,240,108,156, 38, 55, 48, 37,223, 42,177,123,180, 81,250, 5, - 4,162,176,176, 16,205, 90,134,195, 44,214,138,255,188, 86,161, 4,105,164,230,223,199,170, 79, 72, 72,136, 79,235,214,173, 81, - 80, 80,128,142, 29, 59,194,221,221,221,157, 16, 50,176,201,121,176,185,185, 4,101,232, 5, 66, 86,129,207,123, 23,118,193, 82, - 92, 51,116,196,167,157,132,119, 83,179,160, 90, 41, 62,181,109,251,183,254,158,129, 17,192,222, 39,161,115,147, 96,211,172,142, - 30, 90,141,100, 87, 83,154, 11, 9, 33, 81, 58,157,238,240,233,211,167,189,164, 82, 41,206,159, 63,143,200,200, 72,172, 94,189, - 90,235,238,238,126,236,110,104, 46,164,148,210, 43,192,158,247, 47, 93,250,114, 75, 82,210,207, 83, 90,181, 26, 49, 57, 52,116, -241,204, 71, 30,153,246,252,243,207, 99,249,242,229,216,181,107, 23,122,245,234,133,233,211,167,219, 51, 50, 50,190,106, 98,179, -224,135, 43, 87,174,156,253,194, 11, 47,220,172,105, 75, 79, 79,127,191,161,117,163,162,162, 2,174, 94,189,154,253,242,203, 47, -119,220,178,101,139, 76, 46,151,163,164,164, 4,159,126,250, 41,230,207,159, 15, 66, 8, 40,165,248,226,139, 47,228, 79, 60,241, - 68,215,164,164,164,236,230,205,155,187,210,125,131, 0,144, 2,144, 87, 7, 5, 0,249,182,109,219, 52,163, 71,143, 86, 87,199, -201, 0,200,216, 64,175, 58,169,211,139,212, 58,230, 63,223, 84,214, 70,220, 28,119,243,127,148,210, 17, 13,105, 52,178,108,143, -112,117,253,218,119,159,254,132,144,163,255, 16, 3,218,249, 4,135,161,244,151, 29,144, 9, 8,100,252,234, 32, 32,224, 37, 95, - 70, 51,169, 16,118, 74,163,154,216,127, 10, 50,153, 12, 50,153, 12,132, 16, 20, 23, 23, 67,173, 86,227,219,111,191,149,174, 91, -183,174,173, 92, 46, 63,169,209,104,150,222,202,176, 0, 64, 98, 98, 34, 58,116,232, 64,126,254,249,103,245,204,153, 51, 5, 0, -144,158,158,142,182,109,219,146,223,127,255, 93,245,234,171,175, 18,137,164,113,101, 89, 36, 18, 97,238,220,185,228,196,137, 19, - 74,185, 92,142,216,216, 88, 24,141, 70,188,250,234,171,130, 63,255,252, 83,169, 80, 40,144,148,148, 4,179,217,220, 40,227,102, -181, 90, 33, 18,137,110, 88,135, 16, 2,155,205, 6,177, 88,236,178, 41,240,242,242,122,187,115,231,206, 59,143, 28, 57,226, 41, -147,201,112,249,242,101,152, 76, 38, 44, 90,180, 72,126,252,248,113, 79,149, 74,133,132,132, 4,152, 76,166, 70,153,182,154,237, - 95,187,118, 13, 33, 33, 33,100,239,222,189,222,211,167, 79,151,214,228,105,104,104, 40,217,183,111,159, 46, 60, 60,124,135,183, -183,247, 91, 13,105,113, 28,135,220,220, 92,196,197,197, 33, 57, 57, 25, 6,131, 1, 5, 5, 5, 40, 47, 47,135,195,225,168,234, - 31, 87, 94,182,119,219,119,123, 46,202,100, 50,121,100,104, 72,224,229,216,248,124,153, 76, 38, 15, 10, 12, 12, 37,228,221, 58, - 51, 67,165, 82, 45,149,201,100, 39,119,239,222,221,238,179,207, 62,147, 20, 20, 20, 32, 61, 61, 29,132, 16, 72,165,210,235,129, -207,231,223,123,151, 31, 66, 8,136, 53, 4,132,116, 60,149, 92,225,209,103,196,163, 34,164, 28, 0, 56, 59,192, 19,160,127,187, - 0,193,174,203, 21, 58, 80,180,131, 5,225,128, 11, 7,159, 16, 2,216, 90, 3,164,243,161,171, 14,207, 94, 99,103,137,178,179, -179, 33, 18,137, 32,145, 72,208,113,192, 67,130,109, 23,237, 62, 32,104, 15, 27,194, 92,210,188,241, 97,234,205,183,223,126, 91, - 81, 91,115,218,180,105, 10,141, 70,243,118,147,205, 85,133,188, 7,156,244,197,184,236,202,160,197,123,243,194,147,243, 43,195, - 65,241, 10, 96,239,112,187, 38,139, 16,210, 95, 42,149,166, 16, 66,122,223,150,185, 82,137, 79,110,223,254,173,191, 71,179, 42, -115, 5,135, 25, 16,202,224,163,117,195,166,151, 30,240,208,186,201, 26,101,178,170,205,213,111,167, 78,157,242,146, 74,165,136, -137,137,129, 72, 36,130, 84, 42, 69,219,182,109,177,113,227, 70,173,135,135,199, 93,101,178,150, 93,186,180,121,105, 92, 92,226, -188,168,168,240, 49, 10,133,199,179,147, 39,107,222,120,227,141,159,119,239,222,253,229,240,225,195, 11,206,156, 57,243, 1,165, -116, 71, 35,143, 15, 33,132,108, 88,181,106,213,179, 53,134,237,141, 55,222,248, 98,247,238,221, 75,135, 15, 31,158,123,230,204, -153,151, 41,165, 27, 26,210, 48, 26,141,187, 23, 44, 88,160, 25, 59,118,108,205,111, 28, 63,126, 28, 95,125,245, 21, 20, 10,197, - 13,203,142, 26, 53, 10, 79, 63,253,180,187,213,106,253,190, 33, 77,111,111,239,232, 83,167, 78, 69, 2, 16, 1,144,212, 24,172, -216,216, 88,183,178,178, 50, 55,165, 82,233,230,235,235,171,170, 49, 89, 99,199,142,117, 19, 10,133,125,152,167,186,129, 58,189, - 72,109,131,227, 74, 92, 83,151,119,213,100, 53,202, 96, 81, 74,143, 2,232, 91,215, 66,182, 34, 61, 36,112, 66,198, 39,144,243, -107,153, 44,112, 16,148,230,163,169, 3,113,107,223, 8,101, 50, 25,164, 82,233,245,154,156,210,210, 82, 16, 66,110,105, 54,106, -140,131, 82,169, 68,101,101, 37,108, 54, 27,164, 82,233,245, 56,135,195, 1,135,195, 1,153, 76, 6,137, 68,210,232, 26, 44,187, -221,142,184,184, 56, 36, 37, 37,129,199,227, 65,161, 80,192,110,183,227,175,191,254, 66,118,118, 54, 4, 2, 1,228,114,121,163, - 12,140,211,233,132, 88,252,207,254,189,118,187,189, 81, 53, 88, 60, 30, 15, 38,147,137, 94,189,122, 21,105,105,105, 16,137, 68, - 80,171,213, 16,139,197, 48, 24, 12,200,202,202,186, 30,215,152,253,171, 89, 86, 38,147,161,162,162,162,166,175,219,245, 56,139, -197, 2, 66, 8,248,124,254, 45,143,143,211,233, 68, 78, 78, 14, 12, 6, 3, 50, 51, 51, 81, 80, 80,112,221,100,113,220,237,207, - 91,121,238,220, 57, 26, 31, 31, 15,139,197, 2,137, 68, 2,169, 84,122,195,167, 64,112, 15, 78,245,246, 81,148, 6,118,225,160, - 2,163, 93, 98,176,137, 52,186,168,104, 32,101, 63,192, 19, 0, 82,119,116,111,211, 2,233,197, 78, 69,130,222, 42, 5,193, 96, -108, 8,117,119, 73,211, 41, 28,104, 40,183, 75,210,108, 90,117, 68,187, 78,208,235,245,144, 72, 36,144, 72, 36,232,220, 43, 26, - 41,133, 78,121,124,118,165, 28, 20,131, 92,210,252,187, 60,181, 84, 42,149, 61,122,247,238, 77,106,107, 14, 27, 54, 12,132,144, -182,132,144,240, 70,165,127,125, 43, 49,108,242,238, 16,210, 23,227,115, 77,126,187, 98,205,161, 35,199, 60,228,177,230,215,252, -240, 43,185,230, 96,112,142, 57,160,182, 78, 77, 53, 89,132,144,126, 42,149,234,231,245,235,215, 7, 75,165,210,253,132,144, 38, -221, 0,149, 50,254, 39,111, 62,251,168,191,123,141,185,178,155, 0,129, 12, 16,202, 0,129, 12, 62,222, 94, 88,244,244, 64, 15, -185, 84,248, 67, 35,140,234,182, 13, 27, 54,104,111, 54, 87, 53,161, 99,199,142,120,235,173,183,180, 30, 30, 30, 91,255,229,103, -128, 65,110,110,110, 91,162,163,163, 79,229,168, 84, 79,231,118,234, 36,254, 77,163, 41,125,176,180, 84, 19, 20, 27,107, 11, 3, - 46, 3,248, 40, 51, 51,115,136,171,230,138, 16,242,136, 70,163,137,137,142,142,182,169, 84,170,140,213,171, 87, 63,243,220,115, -207, 97,249,242,229, 88,176, 96,193,103, 0,158,162,148,190,158,153,153,233,119, 43,115, 5, 0,121,121,121,147, 94,123,237,181, -130,130,130, 2, 0, 64,219,182,109, 81, 82, 82,130, 57,115,230,224,197, 23,171, 6,185,118,232,208, 1,148, 82,232,245,122,172, - 92,185, 82,159,151,151,247,248, 45, 30, 40, 51,119,236,216,209,213,102,179, 5, 84, 55, 3, 74, 74, 74, 74,212, 69, 69, 69, 42, -155,205,166,224, 56, 78,225,230,230,166, 4, 32,127,236,177,199, 4,113,113,113,145, 14,135, 35,155,121,170, 27,204, 75,189, 94, -164,137,236,189,157,154,170,186,106,192, 92,174,172,168, 22, 34,181, 63,107,195, 39,184,148,113,238, 24, 60,162, 58,221, 80,123, - 37,231, 19,200,212, 26,164,100,166, 67, 4, 18,119,187, 6,171,198,100,197,199,199,227,193, 7, 31, 52,189,243,206, 59,151, 43, - 42, 42,122, 20, 23, 23,207,119,197, 12,104, 52, 26,156, 56,113,130,142, 27, 55,174,108,237,218,181,142,154,184, 83,167, 78,209, -129, 3, 7,150, 47, 92,184,144,222,220, 44,231,138,193, 90,187,118, 45,125,224,129, 7, 74, 79,159, 62, 77, 21, 10, 5,228,114, - 57,214,174, 93,235,232,219,183,111,233,239,191,255, 78, 21, 10,197, 63,158,118,110,101,138,106, 12, 86,109,211,195,227,241,192, -113, 92,163, 12, 86,126,126,254,187, 87,174, 92,153, 48, 96,192, 0,125, 92, 92, 28, 85,171,213,208,104, 52,152, 55,111,158,169, - 67,135, 14,249,151, 46, 93,186, 30,215,152,166,178,154,237,171, 84, 42,196,197,197,209, 17, 35, 70,228,127,244,209, 71,230,154, -184,216,216, 88, 58,116,232, 80,125, 92, 92,220,132,188,188,188,133,183,170,193, 74, 78, 78,190, 94, 99,101, 54,155, 81, 80, 80, -128,204,204,204,235, 77,132,149, 10,245,144, 71, 39,142,108, 95, 89, 89,105,138, 79,188,154,209,182, 77,164,119,101,101,165, 41, - 61, 35, 35,145,210,183,235,116, 97,229,229,229,243, 43, 43, 43,123, 44, 94,188,248,242,132, 9, 19, 76, 9, 9, 9,255, 48, 87, - 82,169,244,222, 52, 88, 60,206, 7,132,246,254,227,170,209,109,224,200,135,197, 36,239, 12, 96, 51, 2, 18,119, 64,226, 14,129, -194, 19, 67,251,116,224,111, 62, 85,230, 3,202,245,132, 72, 18,112, 75, 77, 33,213, 1, 92,159, 95, 18,205,238,189,199,207, 22, - 23, 21, 21,129,207,231, 95, 55, 67,114,133, 2, 15,142,121,140,247,197, 25,139, 15, 64,123,129,240, 3, 92,221, 93,177, 88, 60, -247,205, 55,223, 20, 21, 23, 23,131,199,227,253,173, 41,151, 99,230,204,153, 18,181, 90,189,192,229,180,239,140, 20, 65, 40,233, - 14,142,190,152,144, 87,233,183,251, 82,101,232, 43, 75, 55,201,162, 58,116,197,140,254,222,178,165,251,242, 35, 47,102,155,130, - 1,231,203,112, 88, 59, 55,214,100, 17, 66,250,168, 84,170,189,231,206,157,147, 15, 27, 54, 12, 43, 87,174, 84,200,100,178,253, -132,144, 70, 95,240, 43,140,206,231, 22,174,251, 90,127,233,131,193,128,173,162,202, 88,213, 10,249, 70, 14,111,109, 58, 92,106, -183,211, 71, 93,213,172,172,172,156,250,212, 83, 79, 21,254,240,195, 15,255, 48, 87, 82,169, 20,169,169,169, 88,188,120,113, 81, - 81, 81,209,227,255,166,185,122,238,185,231, 22,103,101,101,133,253,242,203, 47, 2,131,193,224,189,234,243,207, 75,119,150,150, - 22, 45,141,141, 77,120,189, 77,155,144,121,237,218, 61, 94,223, 20, 14,245,153,171,103,159,125,118, 91, 86, 86, 86,199, 95,127, -253, 85,104, 48, 24, 2,158,125,246, 89,172, 88,177, 2, 11, 22, 44,216, 8, 96, 70, 77,239,104, 87,177, 90,173, 9,197,197,197, - 35, 6, 15, 30, 92, 82, 92, 92,140,118,237,218, 97,228,200,145,240,241,241,129,159,159, 31, 70,143, 30,141,208,208, 80, 20, 22, - 22,226,209, 71, 31, 45, 50, 24, 12,131, 41,165, 13,142, 66, 47, 44, 44,188,182,117,235,214,171,207, 61,247, 92,167,172,172,172, - 8, 0,158,229,229,229,138,242,242,114,137,213,106,149,185,187,187,187,119,232,208,193,107,250,244,233,202,243,231,207, 71,102, -103,103,151, 3, 72, 99,182,234,186,169,169,215,139, 0, 48, 84, 27, 29,235, 77,159,134, 91,252,231,234,186,117,126,119, 97,185, - 91,215, 96,213,135, 13,120,235,171, 29,155,205,226,192,214,208,132,181,135, 92, 42,133, 76, 44,134,204,221, 19, 22,142,195,231, -169,121,166, 10, 74, 23, 52, 33, 35,175, 55, 15, 74,165, 82, 24,141, 70,204,158, 61,219, 60,113,226,196,146,212,212,212,153,101, -101,101,237, 41,165,151, 92, 49, 3, 21, 21, 21,120,231,157,119, 42,231,205,155,151, 92, 94, 94,222, 81, 36, 18,217,109, 54, 27, -222,124,243, 77,243,172, 89,179,210, 74, 74, 74,186,136, 68, 34, 91, 99,111,182, 66,161, 16, 2,129,192, 94, 90, 90,218,241,181, -215, 94, 75, 90,188,120,113,165, 72, 36,130, 72, 36,178,151,149,149,181,157, 63,127,126,194,252,249,243, 43,133, 66, 97,163,106, -198,106,106,132,110,110, 34,172, 93, 83,228, 42,118,187,253,112,126,126,126,251, 23, 94,120,225,194,218,181,107, 77, 74,165, 18, - 18,137,196,154,159,159,223,238,153,103,158,185,184,114,229, 74,147, 82,169,108, 84, 13,150,205,102, 3,199,113, 88,191,126,189, -233,133, 23, 94,184,104, 48, 24,218, 85, 23, 72,172, 93,187,214,244,204, 51,207, 92,208,235,245,237,237,118,251, 97, 23,106,235, -156,101,101,101, 16, 8, 4,136,141,141,181,136, 68, 34,240,120, 60, 92,187,118,237,186,193,242,240,240,136,108,223,182, 77,248, -215,219,118, 28,149,137, 36,146, 30, 93, 59, 71, 36,167,165,103, 81, 74,210,110, 81,134, 46, 85, 84, 84,180,207,204,204,156, 57, -109,218,180,146, 87, 94,121,197,108, 52, 26,111,184,225, 8,133,194,123,239, 42,196,131, 28, 4,178,171,249, 22,149,148,231, 32, - 72,252,169,202, 92, 73,221, 0,169, 59, 32,117,135,191,127, 0,206,164,154, 84,224, 65, 12,167,221,219,133, 19, 82, 1, 2,121, -172, 30, 42,161, 88, 70,242,242,242,174, 27,161,154, 16,220, 58, 2,231,211,141, 74, 16, 42, 1, 31,141,153, 74,100,132,167,167, -167, 32, 55, 55,247, 31,154,145,145,145,124,187,221, 62,216,101,165, 28,167, 47,192, 61,151,152,111,246,251,241,162, 41,244,165, -165, 95,200,100,206, 18,224,220, 58, 68,181,244,195, 75,227, 59,136,223,216,101,136, 58,155,102,106, 9, 1,157, 9,206,168,109, -132, 49,232,173, 82,169,246,159, 61,123, 86,174, 82,169,144,156,156,140,174, 93,187,226,211, 79, 63,149,203,229,242,125,132,144, -254,141, 57, 76,167,242,104,186,177,220,217, 99,238,142,140,188, 75,185,142, 27,204,149,161,130,226,169,247,119,151, 20,151,153, - 31, 58,153,113,235,243,168, 86,153,191, 80, 82, 82, 50,104,193,130, 5,133, 6,131,225,134,178,158,158,158, 94, 99, 4,250, 83, - 74,227,254,173,226,169,209,104, 38, 47, 93,186, 20,103,207,158,197,176, 97,195,112,236,216, 49, 20, 21, 21, 97,251,254,253, 87, -183, 94,189,250,122, 77,159,172,186,166,112,168, 15,181, 90,253,202,210,165, 75,113,238,220,185,235,154,133,133,133, 88,186,116, -105, 22,128, 89,141, 53, 87, 53,232,245,250, 51, 9, 9, 9,131,219,181,107,247,215,250,245,235,179,124,125,125,185,233,211,167, -227,169,167,158,130, 86,171,117,174, 89,179, 38,163, 79,159, 62,177, 73, 73, 73,209, 21, 21, 21,151, 93, 56, 62,180,160,160,224, -196,103,159,125,118,114,192,128, 1,138, 41, 83,166,120,239,218,181,203,211,100, 50,249,137, 68, 34,157,213,106, 21,199,199,199, - 11,118,238,220,233,251,215, 95,127,165, 86, 86, 86,158,105,234,190,223,135,156,173,174,141,250,245,166,207,179,183,248,207,213, -117,235,251,126,171,229, 26, 54, 58,183, 10,147, 91,226,157,153,109, 84,166, 63,167,116,167,121,211,123, 83,253,195, 17,244,120, - 63, 15, 58,173, 21,169,152,218,196,105, 26,156, 78, 39,213,235,245, 84,175,215,211, 69,139, 22, 57,100, 50, 89,165, 92, 46,111, -244, 52, 13, 74,165,210, 24, 18, 18, 82,174,209,104,174, 79,211,160, 82,169,140, 97, 97, 97,229,110,110,110,215,167,105, 80, 40, - 20, 70, 74, 41, 85, 42,149, 46,141, 34, 84,171,213,165, 70,163,145,202,229,242,154,105, 26, 68, 26,141,230,179,144,144,144,114, -165, 82, 89, 51, 77,131,208,221,221,253,147,208,208,208,114,149, 74,101,116,113,132, 94,102, 86, 86, 22,205,202,202,162,205,154, - 53,203,169, 29,159,158,158, 78,211,211,211,105, 64, 64, 64,147,166,105,208,106,181, 43,186,116,233, 82,164,213,106, 11,107,197, -173,236,210,165, 75,113, 77,156,139, 35,255, 10, 59,119,238, 92,172,213,106,175, 79,211,160,213,106, 11,171,181, 27, 53, 77,131, - 76, 38,155, 33,149, 74,115,164, 82,105,142, 68, 34, 89,220,188,121,243,252,239,190,251,142,174, 89,179,134,170, 84,170,170,105, - 26, 34, 71,245,104,221,243,241,215,181,145,163, 95,185,157,105, 26,228,114,249, 26,153, 76, 86,185,100,201, 18, 71, 69, 69, 5, -181,219,237,180,250,226,117,111,141, 34,252, 52,180, 53,253, 56,124,119,210,194,224,248, 23,250,202,205,151, 23,181,167,244,251, -177,148,238,123,138,210,195,115,233,153,141,211,105,207, 96,137,243,196,156,102,137,244,147,176, 31, 93,154, 90,225,211,182,173, -233,199,225,251,174,190, 27, 28, 63,181,143,159,249,243,143,214,208,211,167, 79,211,216,216, 88,154,156,156, 76,247,253,244, 29, -237,217, 82, 94,165,249,113,248,238,198, 76,215, 0,160,151, 68, 34, 49,174, 94,189,154,158, 58,117,234,186,230,238,221,187,169, - 92, 46, 55, 1, 46,142, 66, 6, 8,221, 16, 57,214,241, 81,216,241, 5, 3,149,198,194,159,231, 82,122,121, 51,165,159, 70, 81, -250,101, 55, 74,191, 27, 78,233,158,199,233,169, 53,227,105,175, 96,145,157,126, 18,246, 7,221, 20, 57,208,213,253, 20, 10,133, -101, 63,252,240, 3,205,201,201,161,199,142, 29,163,231,206,157,163, 87,174, 92,161, 25, 25, 25,116,239,222,189, 84, 40, 20,154, - 1, 52,122,148, 98, 55, 29,130,162, 67, 68,185, 23,151,245,162,116,215,163,212,176,117, 50, 29,209, 70, 85,212,189,153, 96,192, -109,140,182,234,224,233,233, 89,176,119,239, 94,154,154,154, 74,143, 30, 61, 74,189,189,189, 11, 0, 68,253,219,229, 51, 58, 58, -250, 52,165, 52,102,216,176, 97, 49, 0, 14, 68, 71, 71,199,164,164,164,196,116,237,218,245, 20, 26,152,194,161, 33,205, 7, 31, -124,208, 70, 41,165,195,134, 13,163, 0,114,162,163,163,105, 74, 74, 10,237,218,181,171,245, 14,141, 94,227, 3,120, 92, 40, 20, -126,238,225,225,241,187,187,187,251, 97, 62,159,255, 41,128, 41,141,185,222,213,161,233, 15, 32, 18, 85,243, 37,117,174,254,238, - 7, 54,130,240,254, 24, 21,233,234,130,227,131,209,235,137,150,228,232,164, 22, 40,127,180, 5,140, 79,182, 34,199, 31, 10,198, -128,166,188,109,187,198, 96,237,217,179,135, 54,107,214,172, 66,165, 82, 29, 7, 16,210,148, 55,120,187,187,187, 31,224,243,249, - 19,234,136,123,184,118,156, 70,163,137,115,115,115, 43, 85,171,213,201,174,236,167, 90,173,190, 34,151,203, 43,212,106,245,149, -155,166, 4, 24,237,233,233,185,247,166,184, 81, 55,199,213,151,118, 31, 31,159,204,156,156, 28,106, 48, 24,104, 96, 96, 96,206, -205,198, 43, 47, 47,239, 6,227,213,216,183,151, 11, 4,130, 1, 90,173,118,231,173,226, 26,210,212,233,116,223, 11, 4, 55, 94, -252,235,138,107,202, 91,214, 1,132,250,251,251,231,175, 90,181,138, 42,149,202,252,218,255,133,245,125,242,205,211, 87,141,101, - 79,189,246,241,119,218,136, 49,109,155,242,230,118, 0, 33, 42,149,234,120, 80, 80, 80,197,111,191,253,214,160,193,194,127,245, -173,245, 59, 34, 68,116, 99, 68, 47,250, 73,196,222, 43,111, 7,253,245,120, 55,133, 37,102,213, 48, 74, 15,207,165,167, 62,126, -138,246, 8, 22, 87, 25,161,141,225,251,233, 23,161,125,233,186,150, 98,151, 52, 63,111,213,135,110, 12,223, 31,255, 86,208, 95, - 99, 59,105,173,219, 54,111,164,215,174, 93,163,187,119,110,165,221, 91, 84,155,171, 79, 34, 14,209,143, 35, 30,112, 73,179, 14, -147,181,105,211, 38,122,237,218, 53,250,227,143, 63,186,100,174,110,208, 4, 8,253, 56,114,140,227,163,176,227,243,163,149, 37, - 79,117,147, 90, 30,237, 32,182,142,142, 18,217, 6,181, 22, 57,122, 6, 9,156,237,125,121, 92,132, 22,116, 80,152,204, 66, 63, - 9,251,131,126, 18, 49,216,213,253, 20,139,197, 25,168, 53, 39,206,205, 65, 34,145, 24,234, 51, 88,183, 58,238,221,116, 8,138, - 14,149,228,254,182,112, 0, 29,217, 78, 85,232,138,185,186,149, 38,128, 14, 94, 94, 94, 5, 95,126,249, 37,213,233,116, 6, 87, -204,213,255, 71,249,212,104, 52, 91,140, 70, 99,204,193,131, 7, 99,162,163,163, 99,182,108,217, 18,115,252,248,241, 24,185, 92, -190,165,190, 41, 28, 34,128,193, 13,105,170,213,234,152,242,242,114,122,240,224, 65, 26, 29, 29, 77,183,108,217, 66,143, 31, 63, - 78,229,114,121,204, 93,117,110, 50, 77, 22,154, 98,176,238,228, 1, 0, 64,167, 76,153, 98,146,203,229,122, 0,163,238,167,194, -231,229,229,245,167, 78,167,211,235,116, 58,189, 86,171, 61, 95, 87,188,151,151,215,249,123,249,196, 3, 16, 42, 18,137,210,133, - 66, 97, 98,237,120,109,228,168, 30,173,122, 77, 93,160,139, 26, 53,244,118,247, 19,192, 40,185, 92,174, 31, 55,110, 92,197, 61, -103,176, 40, 5, 93,215, 82, 92, 99,178, 46, 47, 8,186, 50,178,141,220,246,233,203,131,104,143,230, 55,153,171, 47,131, 36,141, -210,172, 54, 89, 23,222, 8,188,242, 64,168,210,177,116,193, 75,180,123, 11,217,141,230,170, 49,154, 55,153, 44,185, 92, 94,254, -246,219,111,187, 92,115,245, 15,205,207,195, 2,233,199,225,223, 84,153,167, 91,133,136,207,233,135, 97,129,119,203,113,239,166, - 67,208,131,161,146, 56, 87,107,174, 92,209, 4,208,193,221,221,253, 47, 87,107,174,254, 63,210, 14, 96,208,204,153, 51, 99, 82, - 82, 82, 98,146,147,147, 99,142, 31, 63, 30, 51,102,204,152, 24, 0,131,234,154, 39,203, 54,110,156,165, 3,143,247,210, 45, 52, - 31,153, 57,115, 38, 77, 73, 73,161,201,201,201,244,248,241,227,116,204,152, 49, 20,192, 35,204,184, 48,131,117,183,134,127,165, - 7,176, 74,165, 58,255,195, 15, 63, 28,168,172,172, 92, 76, 41,181,220, 79,141,200, 6,131,161,103, 99,226,239,209,142,140,137, - 0,130,254,209,105, 63,110,215, 73, 0, 39,239,208, 54,118, 19, 66, 14, 29, 56,112,224, 13,149, 74, 53,228,158,203,196,217, 73, - 86,172,111,117, 14, 98,241,178, 54,254,242,121,111, 14,163,100,233,193, 63,131,150,143,243,206,232,217, 74,145, 10, 33,247, 62, -136,229, 12, 30, 79,179, 52, 82,243, 12,100,246,101,237,155,201,231, 45, 25, 13,242,254,254,205, 65, 43,198,120,102,244,108,169, -204, 0,197,251,144,152, 78, 54, 74,243,198, 99,114,130, 16, 50,116,213,170, 85, 95,153, 76,166,167, 41,165,191, 55,254,226,193, -203, 67,133,253, 45,216,249,109, 64, 33,110, 96, 99, 38,240, 16,139, 66,158,254,110, 57,100,167,242,104, 58,128,168, 59,124, 46, - 93, 0, 16,113,151,157,223,135, 8, 33,216,186,117,235,228,240,240,240,150,241,241,241,201, 38,147,233, 27, 74,233,161,218,125, -149, 8, 33,123,222,191,116,169,226,195,248,248, 19, 86,142, 59,113, 11,205,237,213,154,175,132,135,135, 71,197,199,199,199,153, - 76,166, 85,148,210,237,172,107, 18,227,110,229, 95, 49, 88,101,101,101,157, 88,214, 51,254, 31, 46,244, 22, 0,111, 86,135,123, -143, 90, 38,171, 83,160,108,246, 15, 51,101, 38, 80,146, 5, 33,183,166,209,230,170, 14,147,213, 53, 72,246,226,143, 51,100, 38, - 80,228,129,226,131,219, 49, 87,181, 77, 22,128, 22, 77, 22, 24, 31,111, 3,144, 10, 66,210,240, 14,234,239, 28,253, 14,174, 63, -102, 51,254, 29,147, 5,224,208, 45,150,161, 0, 14, 87, 7, 87, 52,183, 3, 96,134,138,193, 12, 22,131,193,248,127, 50, 89, 59, - 35,207,162,128, 63, 7, 60,180, 0, 28,233,168,112,228, 97,118,154,245, 54, 53, 79,163,128,188, 0, 62, 66, 33,118, 36,193,104, -205,195,204,219,208,252, 31,220,193, 81,213, 55,170,110,222,102, 69,131,193, 96, 48,131,197, 96, 48,110,135,170, 90,157,172,234, -112,247,106, 50, 24, 12,198,125, 4, 1, 16, 93,207, 3,226,175, 46,139, 16, 18,221,132, 7,208, 95,153, 38,211,100,154, 76,147, -105, 50, 77,166,121,127,105,222, 74,187, 49,254,227,174,230,223, 24, 69,200, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,121, - 47, 7, 30, 24, 12, 6,131,193, 96, 48, 24,119,148,127,181, 15,150,220, 43,212, 23, 2, 94, 59,194,209,112, 0,160, 60,114, 5, - 14,238,146,169, 32, 49,247,118,181, 85,254, 97, 30, 20,226, 29, 4,214, 9,229,217, 9, 69,183,171,215, 54, 76, 51, 78,231,165, -154,156, 87, 88,250, 85,236,149,242, 93,141, 89,215,205,173,185, 70,234,225, 62,222, 98,179,183, 17,139, 68, 25,182,146,178, 79, -139,138,146,202, 89,241, 99, 48, 24, 12, 6,227, 62, 51, 88,205,163,250,156,149, 74,101,193, 0,192, 81, 10,142, 2, 21,101, 37, - 49,185, 73,103, 7, 3,128, 54,184,211, 65,161, 84,221,137,163, 85,255, 59, 57,192, 97, 51,167,150,166,157,234,226,202,134,149, -222, 97, 99,163, 7, 69,143, 27, 49, 98,120, 88,219, 54,109, 91, 1,192,229,216,203, 73, 63,255,188, 55, 65,233, 29,246,131, 49, - 63,225,199,219, 73, 24,133,244,189,206,157, 59,244, 62,119,238,252, 66, 0,207,222,110, 70,121,122, 42,103, 31,250,126, 78,223, - 7,199,173, 84, 0,104,148,193,146,122,184,143, 31, 61,114, 72,135, 87,159,159,201,123,106,206,146,224,179, 39,142, 44, 87,249, -181, 41,161,156,253, 80,133,254,225, 63,234,123,161, 49,131,193, 96, 48, 24,140,123,204, 96, 73,165,178,224, 83, 71,126,246,248, -241,120, 38, 0, 32,186,163, 15, 94, 95,180,126, 16, 33, 36, 1, 0, 70, 61,245, 78,232,194,249,207,227,207,184,124, 80, 74,209, -161,181, 39,134,142,158,224,210, 70,101, 62,145, 93, 30,158, 56,113,210,156, 57,175,140,186,118,237, 90,218,182,109,219,254, 0, -128, 62,125,251,182, 94,178,100,201,196,149,238, 30, 18,153, 79,100,118,101, 94,252,217,166, 36, 74,230,223,202, 63, 50,164,221, -228,111,191, 88,207,235, 63,248,161, 71,101,254,173,150, 86,102, 39,101,187,178,174, 86,171,125, 65, 40, 20,106, 0,128,227,254, -246, 61, 45,155,241,125, 0,192,225,228, 84, 30,254,225,229,124,145,212, 41,145,136,226,203,141,198,175, 74,179,226, 63,111, 72, -211, 98,183, 71,189, 56,235, 9,222,133,228, 66, 4, 71,245,225,175, 89,250, 6, 56,167,221,253,165,249,139,198,159, 59,253, 45, -128,183,143,178,162,200, 96, 48, 24, 12,198,125, 96,176, 0, 64, 41, 19, 32, 33, 37, 15, 0,224, 38, 3,102,207,152,138,194, 2, - 67,168,213,193,225,201,169, 83,112,254, 74, 46, 18, 82, 13,160,148, 34, 52, 64,238,242, 70,249,224, 58, 63, 57,237,201,126, 7, - 15, 29, 58,243,230,130, 55,191, 38,164,106,246,238,141,159,126,214,227,173,183,223,122,122,202,212, 41, 3,119,238,220, 25,135, - 91,189,169,186,190, 68, 17,213,250, 21,203, 22,139,179, 10,204,230, 23,230,204,227, 94,121,249,133, 53, 0, 30,114,101, 93,161, - 80,168,201,202,202, 82,242,120, 55,118, 79,123,127,241,188, 99, 3,199,173,188,154,150, 81,114,225,224,238,221, 93, 34, 35, 35, -145,149,157,215,107,249,218, 79,218,251,182,234,242, 68,121, 89,229,184, 10, 67,124,157,179, 70, 75,132,194,184,119,151,127,220, -129,115,107,205,123,253,233, 97,136,106,229,135,236,252, 18,244, 29, 60, 74, 16,115,246,236, 32, 0,204, 96, 49, 24, 12, 6,131, -113, 15,193, 3, 0, 66, 72,157, 19,246, 57,157, 20, 9,169,185, 72, 72,205,197,153, 43, 6,216,168, 16,107,150,191,139, 85, 75, -223, 70, 81, 37, 15, 63,254,153,137,196,212, 60, 36,166,230,161,160,216,248,143,245,111, 30,106,185,106,153,188,227,154, 53,154, - 21,131,250, 42,250,123,184,187,187, 95,141,251,186,226,173,151,245, 17,239,190,152, 41, 18, 90, 37, 89, 10,165,162,231,142, 29, -223, 69,234,180,222, 10,165, 82, 53, 87, 17,208, 97,147,155, 91,123, 77, 67,154, 55, 35,215, 69,140, 26, 53,124,200, 0, 31, 31, - 29, 55,115, 77,204,149, 54, 17,225,246,144,214, 33,189,228,186,208, 81,245,173, 83, 91,147,227, 56,240,120, 60,232,245,122,228, -228,228, 32, 37, 37, 5,137,137,137,200,204, 76,211,115,148, 10,157,224,120,190,190, 1, 16, 8,196, 8,110, 30,132,143,215, 44, -149, 47,122,231,245,174, 82,133,120, 23, 33,132,212,165,105, 46, 42,222,185,239,192,161,236,253,219, 62,118, 2, 64,126,177, 17, -135,207, 94,195,249,248,204, 70, 29,172,255,197,208, 85,166,201, 52,153, 38,211,100,154, 76,243,110,208,172,207,139,252,167, 13, - 86,125, 36,101, 22, 33, 33, 37, 15,157,194,253,209,170,185, 47,206, 36, 22,227,155,195,153,216,116, 48, 29,135, 47, 26,192, 9, - 84,200, 43, 3,174,166,233,113, 53,189,160,161,121,149, 1, 0,124,137,240,225, 23, 95, 44,157,211, 54,178,172,251,145,253,179, -225,175,189, 26,249,218,107, 37,179,249, 18,225,195,238,205, 84,219,230,205,121,105,178, 74, 46, 23, 91, 45, 86,180,108, 17, 36, -125,254,185,217, 79, 16,119,201, 54, 87, 19,163, 14,136,116,151,200,100,159, 47,122,103,174,228,131, 31,175,102, 84, 88, 81,241, -195, 73,125,242, 43,243,222, 42, 18, 8,165, 31,171, 3, 34,221, 93,213,178,219,237,176, 88, 44,176, 90,173,176,217,108,200,206, -252,107,212,111, 63,190, 58,184, 69, 51,143,193, 18,169, 20, 20, 64, 89,165, 3, 41,185, 38, 60,240,224, 64,126,167,142, 29,163, -148,190, 17,211,234,210, 42, 41, 73, 43,229, 40, 95,245,243, 79, 91,249,223,253,114, 1, 95,255,124, 22,187,126,191,128, 51, 71, -247, 59, 40,103,191,254, 58, 9,149, 95, 72,168,202,175, 93,186,202,191,189,254,122, 8,104,123,142, 61, 7, 48, 24, 12, 6,131, -241,223,162,222, 38, 66,179,185, 50,245,161,135,167,192,215,219, 71, 57,186,255,227,162,152,164, 18, 24,114,211,113, 45, 49, 22, - 38,179, 29, 34,247, 22,128,212, 7,205,131,131,112, 41, 97,151,109,221,138,189, 70,206, 97, 73,173, 79,111,244,104,191, 0, 95, -173,130,183, 98,121,224,169,196,132,226, 78, 91, 23,124,137, 73,147,148, 94, 43,150, 7,158, 74, 75, 86,240,228, 82,218,243,137, -169,143, 18, 30,161,120,237,181, 57, 24, 61, 98, 8,158,124,226, 49,242,213, 87,155,187,187,154, 24, 14,194, 15,231,191,241,174, - 88, 95,226,176,158, 73, 52, 90,228, 10,153,236,196, 85, 99, 69, 84,112,160,108,216,184,199,115,246,238,248,252, 3, 0, 83, 93, -209,170, 49, 86,118,187, 29, 54,155, 13, 0,156, 0,192,227, 85,125, 22,150, 91,145, 95, 98,129,190,196, 2,135,147,195,184,135, -167,202,206,158,187, 56, 21, 64, 61,253,177, 56,206,238,176,227,135, 95,206, 35,251,236, 78,142,240,248,165, 53,157,220,107,204, -149,143, 79,224,177, 17,227, 30,211,138,165, 85,205,173,229, 21, 22,124,245,201,114, 86, 74, 25, 12, 6,131,193,184, 87, 12, 86, - 90,220, 31, 93, 0, 32,172,203,224, 66,165, 84,224, 33,224, 17,232,179,146,240,213,202, 23,192,113, 20,195,158, 94, 1, 85,176, - 15,100, 34, 62, 44,198, 66, 99,225,181, 35,158, 13,109,136, 16,251,192, 13, 27,179,131,159,153,213, 82,189,117,171, 81, 8, 0, - 91,183, 26,133,179,102, 54, 83,127,180, 49, 53,184, 91,239, 78,160, 78, 39, 70,140,126, 8, 15, 63,242, 48,210,242, 76,248,254, - 88, 6, 42, 42,173, 46,189,255, 76,174,141,104,239,237,231, 63,228,197,199,135, 40, 4,124, 66, 66,130, 52,252, 76,131,221,193, -231, 11,157,123,206,150,230,140, 27,247,136,215,225,125,223, 13,144,107, 35,218,155, 12,127, 93,188,149,158,197, 98,129,211,233, -132,197, 98,129,221,110,135,135, 87,139,125, 3, 31, 90,153,149,155, 87,190, 55,175,216,220,173,194,238,128,190,196,130,252, 18, - 11, 74, 42,108,240, 81,185,195, 97,183,182,173, 79,143, 82,250,245,152,135,166, 60, 6,128, 71,120,142, 47,203,115,254, 74,172, -249,175,198, 92, 13, 25, 61, 73,123, 44, 38, 9,215,206,237, 47,166,156,195, 94,149,113, 28,123, 85, 9,131,193, 96, 48, 24,255, - 49,120,127, 27, 32, 66,235,107,255,204,214, 23,193, 83, 41,128,214, 47, 24,147, 95, 88, 5, 0,112, 58,237,160, 20,112, 56, 93, -155, 97,128, 82,225, 47,207,206, 10, 78,109, 30, 76, 74, 39, 79,146, 87, 2,192,228, 73,242,202,230,193,164,244,217, 89,193,169, -229,102,165,205,225,116,226, 68, 92, 62, 86,124,251, 23,222,218,124, 25, 7,206,185, 62, 29, 22, 95, 44,154,181,124,217, 82,145, -128, 79, 72, 92,186,209,152, 85,232, 48,242,133, 66,155, 92, 46,166, 86, 42,176,164, 21,208,194, 7,199, 60,113,141,199, 39,211, - 26,210,169, 25, 57, 88,211, 68, 88, 83,131, 69, 41,165, 4,224, 56,226,116,102, 21,152,145,105,168, 68,102,254,223, 65, 95,108, -169,183,133, 84,229, 23, 18,170, 81, 43, 15,184,187,169,159,112,211,168,167, 42,100,238, 7, 85,126, 33,161, 55,155,171, 83,113, - 57, 72,186,240,171,222,105, 51, 77, 44,207,190,168, 43,207,190,168, 43,207,186,220,153, 21, 83, 6,131,193, 96,220, 15, 52,228, - 69,254,147, 6,139, 82, 74,106,194, 63,141, 17,112, 53,189, 0, 98, 1,135,128,230,173, 64,107,217, 8, 10,192,225,116, 45, 31, -118,237,202,201,106,217,186,130,155, 59, 55,163, 71,155,182,158,151,102,205,108,118,165, 77, 91,207, 75,115,231,102,244,104,217, -186,130,179, 59,132, 78, 90, 61,223, 86,205,220, 90,213,211,241,187,154,148,174,237, 35, 91,240,223,221,122, 53,227,153,143, 18, - 19, 68, 34,145, 61,192, 75, 78,130,116,114,126,160, 86, 38,182,216,121,150,208,168,142, 86,240, 72, 71, 87, 12,150,213,106,189, - 33, 20, 26,146, 70, 29,250,126,206,104,127,157,251,227,217,134, 74,100,228,155,144,105, 48, 33,195, 96,130,201,226,192,229,191, -146, 1,190, 40,182, 46, 77,181,202,227,224,182,111,190, 14,108, 31,209,210, 59, 50,180,185,247,231,155,191, 14,148, 74,221, 14, -170,252, 66, 66, 3,131,195, 98, 78,255,250,157,246, 84, 92, 14,210, 19,206,229, 57, 44,101,219, 42,244, 87,126, 99,167, 25,131, -193, 96, 48,238, 39, 26,242, 34,255, 69, 92,154,201, 61, 40, 64,135,211,177,169,104, 27,222, 2, 26,181, 10, 87,146,178,192,231, - 9,193, 35,128,221,225,186, 9,162, 54,251,183,171, 87,107,144,158,170,224,125,244,113,106,240,179,179,130, 83, 87,175,214,156, -164, 54,251,183, 0,166, 80, 90,245,110,196,154,137, 77,157,141,152,126,147,114,246,102, 58, 15, 57,255, 92,114, 69, 33,143,199, -183,120,106,164,156,167, 70,194,243, 84,137,133, 34, 33,159,115, 80,158, 45,192, 59,216, 76, 57,174,189, 43,122,181,155, 8,157, - 78, 39, 8,225, 57,171, 13,152, 34,179,176, 18,165,102, 62,244, 37, 22, 20,151,219, 16,226,175,192,175,135,119,154,156,246,202, -173,117,105,241,133, 34, 77,171,224, 0,188,254,222,106, 84, 90,156,184,154,109,132, 72, 34,241,209,249, 68, 93,156,242,204, 60, -201,243,159, 38, 97,218, 0, 79,188,252, 71, 82,182, 73, 47,157,199, 78, 51, 6,131,193, 96, 48,238, 3,131,165,148, 75, 65,249, - 82,252, 17,147,132,176,200,118,216,188,251, 12, 90,183,237,142,220,114, 7, 40,120,183, 28, 61, 88,195, 43,243, 76,231, 1,156, - 31, 61,218, 47, 96,236, 88,255,129,148, 10,127,249,232,147,210, 44, 0,248,120,123, 63, 80, 0, 28, 71, 65, 41, 64,185, 42,163, -229, 50, 68,144,158,154, 91,214, 60,216, 71,129,248, 44,155, 69, 33, 17,241,220, 21, 98,190, 86, 35, 22,137, 4, 2, 56, 41,177, -228,230, 38, 89, 8,144,230,138, 92, 77,211, 96,205,167, 92,233,187,239,193, 49, 43, 12,105, 25,165,231, 66,138, 76,237, 75,109, - 98, 80, 10,132,248, 43, 78,124, 54,108, 0, 0, 32, 0, 73, 68, 65, 84, 16,123,106,175, 83,159,125,237,106,165, 62,225,147,186, -180, 56, 14,124,155,131,195,197,228, 82,148, 84,216, 81, 98,180,161,215, 3, 35, 69,189,162, 71,225,143,216, 2,112, 14, 59,150, -127,182,183,220, 73,237, 15, 83, 26,111,103,197,146,193, 96, 48, 24,140,255, 54, 46,189,236,217,201, 81,120,121,122, 64,170, 80, - 35, 85,111, 67, 57,241, 70,177,137,194,233,172,170,193,170,175,162,137, 16, 18, 93, 87,252,174, 93, 57, 89, 63,253,100,216,180, -107, 87, 78,173, 14,220,127,215, 92, 93,255,228,168,203,154,132, 58,127,221,189,255, 72,233,168,110, 90,119, 30,159, 95, 41, 18, -242, 44, 2, 17,223, 38, 18,240,236, 34, 1,207,170, 83, 11,249, 71,246,108, 23, 83,130, 35,183,210, 52,155,205,136,142,142,198, -176, 97,195, 48,122,244,104, 76,152, 48, 1,161,161, 17,222, 60, 62,177, 82,194,113, 90,113, 57, 90,105, 9, 4,230, 76,252,182, -253,125, 83,236,137,159, 46, 58, 45,230,145,180, 86,155,230, 13,154,148,114, 69,165, 22,152,109, 78, 20, 27,109, 40,174,176,193, -161,237,129,159,254,204, 65,165,213,137,244,152,157,149,134,188,172, 23,204,250,171,169, 13,122,200,122,210,126, 59, 48, 77,166, -201, 52,153, 38,211,100,154,119,131,230,189,134, 11, 53, 88, 20, 45,125, 21,104,237,175,128,217,230, 13,179,213,137, 10,179, 19, -101, 38, 27,202, 76,118,164,230,153, 16,187,251,246,119,164,170,214, 10, 32,213,223, 65,170,140,157,171,117, 88, 98,155,245,189, - 85,203,151, 76,220,222,177,131,245,249,225,190,205, 46,165, 90,115, 8,225, 85,242,248, 2,187,135, 74, 32,188,114,229,146,225, -228,177,125,125,165, 14,231, 99, 13,233, 56, 28,142, 82,127,127,127, 0, 55,190, 42, 39,162,149,108,244,137,189,175,181,232, 55, -106,185,246,131,197,115, 76, 60,190,136, 35, 2, 81,172,211, 94,185,173, 82,159,240, 49,109,160,195, 24, 79, 36,253,235,244,133, -248,238,110, 30,205,112, 45,187, 2, 21,102, 7,108, 14, 14,238, 74, 17,178, 46, 31,180,165, 94, 57,247, 93,121,246,197,205,172, - 56, 50, 24, 12, 6,131,113,159, 24, 44,179,217,156,218, 59,122, 36, 56,142,194, 73, 1,206, 89, 93,211,196,253, 93,219,228,180, -155, 83,111,119, 71, 56,206,121,230,195, 79, 55, 13,235,216,181, 31, 63, 50, 80,137,178,194, 60,156, 58,241,187, 3, 28, 61,233, -202,250, 5, 5,137, 70,185, 79,200, 67, 19,199,143,221, 49,245,201,153, 37,125, 31,120, 64,225,237,237, 99,201,202,206, 50,125, -177,229, 27,251,193,125,187,250,114,112, 60, 82, 80,112,213,216,144, 78, 73, 73,201,218,186,226, 31,236,221,172, 23,128, 22,124, - 1,177,154,242, 19, 21,141, 73, 91, 65,118,230,184, 37,239,189,147, 54,233,233,151,196, 45,253, 91, 33,191,148,143,212,172, 60, - 92, 57,182,203,146,157,120,246,199,178,172,243,211, 88, 81,100, 48, 24, 12, 6,227, 62, 50, 88, 25,241, 85,243, 97,253,175, 41, -207,203,159,178,121,243,215,139,190,222,178,189,151,217,106,245,167, 16,101, 58, 29,214,163, 70, 39,222,114, 85,195,148,119,245, -156,151, 87,104,155, 47, 62,251,240,141, 47, 54,125,212, 15,156, 51,156, 0,105,148,224,136,212,238,156,122, 43,115,213,176,129, - 43,223, 56,240,161,149,149,133,133,198,175, 27,187,174,169,224, 74,158, 82,215,178,217,198, 53,239,173,224,241,248,131,156, 78, - 78,200, 57,237,215,156, 54,243,251,149,134,132,221,180,113,195, 37, 25, 12, 6,131,193, 96,252,215, 13,214,255, 23, 69, 69, 73, -229, 0,158,191, 93,157,130,130, 68, 35,128, 59, 62, 18,239,114, 98,233,247, 0,190,111,234,250, 70,125,178, 1, 46,206, 34,207, - 96, 48, 24, 12, 6,227,191, 13,143,101, 1,131,193, 96, 48, 24, 12,198,157,133, 0,168,115, 36, 64, 99,222,148,221,148,209, 4, -183,210,103,154, 76,147,105, 50, 77,166,201, 52,153,230,189,167,121, 43,237,198,248,143,187, 26, 90, 61, 99,250,255, 34, 0,136, -102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,188,223, 2,107, 34,100, 48, 24, 12,198,125,135,151, 87,168,210,203, 43, 84, -233,234,242, 10,109,164, 78,161,141,212,177,156, 99,184, 10, 51, 88,183, 9, 33,132,132, 5, 43,103, 15,234,215,226,167,240,150, -242,209,255,150,166, 82,215, 82,171, 10,236,114, 66, 29,208,102,232,255, 32,141,146,168,168,168, 30, 81, 81, 81, 61, 8, 33,146, - 59,161,169,208,133, 61,218, 44,164,199, 49, 93,171,142,191, 43,125, 66,199,223,233,125, 86,249,133,120,170, 2, 59,127,175,242, -111, 95,172,242,107, 95,166,106,214,249,168, 90, 27,217,242, 86,235, 5,142, 94, 26,190,112,123,220,182,192,209, 75,195,235,250, -223, 99,232,122,213, 59,223, 94, 91,236, 53,106,185,146,149,254,166, 17,216,123,146,155, 95,255, 57,158,141, 93, 47, 32,172, 71, - 92,112,155,190,249,254,161,221, 99, 93, 93,167, 89,120,207,243,205,163,122,235,155,133,245, 60,199,114,222, 53,100,222, 45,123, -200, 60,130,246, 74, 61,130,246, 73, 61, 91, 62,112,187,122,126,126,126,178,136,136,136, 33, 61,122,244,152, 17, 29, 29,253, 98, -199,142, 29,167, 55,111,222,124, 16, 33,228, 95, 27,100,165,208,133,205,183, 8, 73,129, 69, 72, 10, 20,186,176,249,183,190,190, -134, 47, 34, 60,103, 14,225, 57,115,148,186,240, 69,119,203,177,146,250,132, 5, 41,116, 97,171,213,190, 81,103,228,186,208,145, -141, 93,223,195,195, 99,144,183,183,247,152,154,224,225,225, 49,136,157, 1,119,142, 70, 23,112, 66, 58, 9,149,190,246, 23,197, - 82,217,227, 60, 30,212,249,215, 78,249,223,205, 9,212,182,236,118,142,207,227, 7,212,142,115,114,206, 44, 67,242,233,206,119, - 66, 63,172,185,108,218, 27,115,167,188,252,232,196,232,160,232, 17, 47, 16, 0,187,234,188,225, 7,118,249,147, 16, 94, 11, 30, - 1,120, 60, 2, 30, 1, 0,154, 83,144,124,186, 99, 83, 53,107,208,120,183,106, 33, 86,106,143,245, 30,253,172, 79,204,175,223, -108, 86,104, 35, 7, 86, 24,226, 47,221, 1, 99,165,109,213,170, 85,151,208,208, 80,207,217,179,103,139, 0,224,131, 15, 62,104, -221,186,117,235,194,164,164,164,179,148, 82, 67,147, 46,110,222,225, 83,214,174, 92,248,245,208,161,195,144, 83, 80,129,229,171, - 55,244, 87,250,132, 78, 48,230, 37,238,188, 19,199,196,221,189,133, 90,160,118,191,252,194,220,133,222, 67,250,119,225, 27,205, - 14, 28, 56,118,161,207, 55, 27, 22,158, 81,107, 35,187,150, 25,226,147,235, 91,151, 51,149, 46,208, 41,233, 16,206, 84, 10, 0, -143,222,252,191,191,210, 30,173,149, 57,135,248, 74, 4, 23, 0,252,112,203,125, 9,238,125, 80, 40,145, 4,241,120, 60,212, 28, -123, 62,169, 58,254,118, 91,101,122,214, 95,199, 6,223, 13,231,137, 58,168, 91, 30,248, 2, 79, 30,249,123,255, 72,117, 57, 37, -148,150,229, 38,254,225,121, 7,202,147,166, 77,107,183,168,225,189,122,127,113, 52,165, 72, 17,216,239,165,189,132,242, 62, 74, - 63,182,234,162, 75, 55, 19,169,212,125,207,158, 61,218, 33, 67,134,104,116,109,198, 28,117,233,193, 67, 44,141,252,249,231,221, -162, 33, 67, 6, 55,162,124,134, 13, 4,143,183,133, 0, 66,142,163, 31,240, 57,250,157,177, 48, 49,169,177,211,169,200,117,225, -211,120,160, 46, 95,103, 56,144,115, 38,253,149, 77, 77,204, 91,190,204, 59,236,113,153, 84, 58, 39, 36, 44, 34, 52, 53, 37, 41, -177,172,172,116,117,101,126,226, 38, 74, 41,215, 40, 49,187,227,213, 95,255,136, 25, 42, 16, 10,201,144, 7,187,241, 1,252,126, - 59,199, 93,167,211,141, 89,191,126,125,203, 30, 61,122, 0, 0, 28, 14,135,122,199,142, 29, 62,239,189,247,158,194,149,115,168, -158,244,250,107,181,218, 64,177, 88,236, 15, 0, 86,171, 53,219, 96, 48,100, 80, 74,179,111, 89, 38,124, 90,121, 17, 8, 22,254, -113,236,152, 0, 0,250,244,233,187, 40,168,207,108,119,190, 72, 89, 89,103,118, 88,203, 21, 0, 94, 58,117,250, 36, 1,128,238, -221,122,204, 83,104, 35, 63,172, 48,196,235,255, 53, 19,172, 11,239,198, 3, 94,238,213,119,224,184,135, 31,153,194,139, 10, 9, -196,160,129, 3, 94, 3,176,167, 81, 6, 64, 32,144,157, 57,115,166, 21,143,199,227, 59, 28, 14,115,247,238,221, 51,110,103,191, -252,195,122,254, 73,192,107,102,115, 88, 63, 51, 36,159, 91,116,115,217, 35,132,240, 53,205, 58,190, 1,190,224,105,142,227, 50, -203,210,207,246,100, 6,171, 86,230,168, 3, 58, 28,159,248,240,228, 54,239,205,157, 46, 93,183,229, 23,120,180,232, 26, 95,148, -114, 38,242,110, 77, 32,159,199, 15, 56,116,232,160,183, 76,194, 7, 0, 24, 43,157, 24,234,194,197,214, 45,184,219, 17, 30, 33, - 97, 53,175,244,118, 58,108, 82,129, 80,108, 38, 0, 64,170, 70, 7,120,249, 53, 63,236,235,235, 33,127,116, 98,116,208,150,237, -191,100,101,100, 21,214,123,209,231,241,248, 1,187,118,239,241,246,247,148, 66,192, 39, 48, 86, 58, 48,100,216, 72,103, 93,203, -250,250,122, 12,127,116, 98,116,208,214,111,127,205,200,205, 45,218,219,224, 69,220, 55,180,147, 66,163, 59, 48,110,198,123,158, -102,158, 7,222, 90,188,214,235,216,254,173, 71,251, 13,159,194,165,167,103,154, 41, 33,241,197, 69,185, 47, 26,115,175, 37,184, -122,140,149, 74,101, 75,165, 82,217,126,232,208,161,210, 57,115,230, 8,251,247,239,127,253,255,233,211,167,139,142, 28, 57,226, -187,114,229,202, 97,126,126,126,102,163,209,120,209,104, 52, 38, 83, 74,157,174, 30, 19, 31, 31,237,115, 15,141, 29,137, 1,227, -158,133,147, 35,152,254,204, 75, 56,184,255,135,153, 0,238,136,193,178,203,213,239, 61, 61, 99,142,182,123,151, 14,252,133, 91, - 19, 32, 19, 11, 48,184,115, 24,121, 98,246, 2,183, 77,235, 22,126, 14,160, 95, 93, 53, 87,156,169,116, 65, 27, 47,235, 35,163, -122,180,192,238,109,214, 71, 2,162, 95, 3, 79,174, 89,148,177,107,254, 21, 0,104, 53,244,121,149,187, 76,182,222,207,141,239, - 45,113, 26,214,183, 26,250,252,175, 73,251,215,149, 55,180, 47, 66,137, 36,104,251,182,173, 33,238, 74, 17,248,124, 2, 1,143, - 7, 62,159,192, 98,115, 98,252,132, 71,238, 84, 13, 35, 95,230, 29, 50,140, 7, 60, 81,117,163,198,151,149,249, 87,247, 53,230, -152, 16,190,200,243,231,221, 63, 10,188, 53, 18,240,249, 4,124, 30,192,231, 17,164,233, 43, 49,109,218, 19,154,219, 53,234, 67, -123,121,119, 57,242, 97,191,193,221,219,120,180,251,246, 36,209,116, 31,250,176,103,129, 89,254,248,246, 93,191, 63, 18,216,247, -229,211,148,114, 43, 50,255, 88,115,168, 33, 29,139,197,162, 31, 60,100,168,154, 8, 20,242, 95,127,218,220, 87,192, 35,176, 59, - 41, 28, 78, 10,103,245,187, 75,171,206, 87, 2, 30,143,128,114, 20, 79, 63, 61, 13,131,135, 12, 53,113, 14, 46,203,229, 29,230, -241,182, 28,248,245,132,214, 98,231,176,114,253,166,133, 21,165,134,133, 41, 87, 60,211,228,186,208,151, 76,250, 68,151,223, 91, -193, 3,237,156,153, 28, 59, 99,235,207,167,208, 38, 50, 2, 78,174,106, 63,195, 2, 20,216,186,247, 20,194,195,194,171,246,155, -163, 8,109,166, 68,151,206, 93, 0, 96, 83,227,243,183,191, 64,161, 11,223, 54,106,252,212,241,227,198, 63, 10, 15,119, 53,172, - 54, 75,232,111, 7,247,125,250,241,250,229,189, 8, 33,143, 55,202, 28, 82,231,245,251, 2,229,184,219,174,101,242,243,243,211, -118,233,242,247,116,138, 14,135, 3,193,193,193,200,206,206, 14,107, 66, 89,146,251,250,250, 14,223,184,113,163,247,176, 97,195, -132, 62, 62, 62, 0,128,188,188, 60,255, 3, 7, 14,116,244,243,243,203,207,205,205,221, 75, 41, 53,213,167,225,180,243, 68, 60, - 1,248, 82,169,188, 42,141, 32,188, 57,207, 61,214, 78,231,235,103,169,107,121,131, 33, 79, 60,247,217,223,137, 64, 32,170, 94, - 30, 60, 74, 57,210, 64,173, 80,180, 80, 40,148,213,245,159,141,175,238, 78,133,154,167,120,124, 94, 85, 97,117,216, 13, 69,233, - 49, 17,141,168,121,139, 18,138, 69, 31, 79,154, 58,163,231,248,113,163,225,171,213,224,215,227,151, 48,243,185,151,237, 14,155, -125,117,147,238,145,124,190, 32, 63, 63, 63,205,221,221,221,231,246,239,183,164,197, 47, 7,247,123,255,250,219,225,121,171,214, -172,155,229, 23,218,199,206, 81,122,253, 61,195,129,109, 6, 8, 7,142,152,168,246,110,213, 93,186,238,237,167,132,172, 6,171, -182,243,247,139,124,113,194,196,137,109,158,157, 57, 93,250,226,250,227,248,109,219, 7, 5,119,202, 92,169,188,195,122, 16,190, - 96, 6,225,243, 21,132, 71,196,156,147,203,116, 88,173,139, 76, 5,137,185,183,171,237,228,128,239, 79,228, 55,238, 68,166,104, -189,229,187,159,188,117,110, 18,152,173, 14, 60,252,232, 20,108,217,242,181,202, 75, 45,134,217,234,192,138, 85,171,202,141,105, -123,189,211, 50,139,179,163, 71,190,124, 40, 57, 53, 63, 54, 35,215,252, 93,253, 23, 6, 30,188, 53, 18, 44,222,158, 8,181, 76, - 8,119,149, 8, 60, 30,169,125,225, 32,161,205, 21,207, 53,107,166,125, 32, 39,183,184,180,150,230, 55,245,158,108,190,109, 7, -107,220,253,182,141,157,177,216,237,106,190, 0, 20, 54, 36,169,165,152,248,248,243,234,150, 62, 50, 40,164,124,183,148,244,108, -223, 57,175,190,122, 92,227,221,170,107,105,126, 82,202,173,210,221,188,121,243,113, 35, 70,140,144,191,242,202, 43,194,102,205, -154,225,203,173, 59,130,250, 12,158, 48, 50, 39, 87,223,140, 82, 10,157,183,119,230,211, 79, 76,216,179,111,223,190,244,204,204, - 76,225,242,229,203,187,253,248,227,143,145,141,121, 18,117, 82, 10,179,197, 9,103,245,141,209, 80,106,105,236, 69,150,248,251, -251, 75,178,179,179, 45, 53, 55, 14, 66,200,245,204, 84,250,119, 24,252, 96,191,110,130,141,251, 83, 97, 52, 59,161,144, 10,145, -170, 55,161,115,135,182,228, 51,167,163,125, 93,154,211, 38, 14, 95,160, 83,210, 33,163,122,180,128,183,187, 28, 95,124,184, 24, -187, 79,166, 12,209, 27, 9,188, 70, 45,159,225, 43, 17, 12,212,202, 69,235,251,119,110,229, 51,160, 83, 16,206,118,110,229,115, - 44, 38, 33,177,237,196,213,179,179,141,194, 95,139,246,207, 46,175,251,130,195,131,135, 74,140,207, 15,164, 65, 46, 21, 64, 33, - 21, 64, 33,169,250,172,125,252,155,244, 20,235, 23,217,140,207, 57,167,169,253, 34,167, 61, 50,113,130,223,164, 71, 38, 80,240, -121,216,241,253,158,209,223,124,179, 37, 87,233, 19,246,185,147,199,223, 84,153, 19,159,121,203, 60,229, 1,222, 26, 49, 94,253, - 60, 22,106,153, 16, 42,185, 16,106,185, 16, 3,218,105,193,111, 98, 71, 2, 66,136,251,204,209, 45,135, 93,250, 58,250,129,176, - 64,101,200,197,164,210,248,105,139,206,173, 57, 82,242,192,139, 31,126, 16,233,105, 44,177, 10,222,154,243,180, 32, 43, 39,231, -129, 29,123,142, 14,240,235, 58, 45,193, 97,171,120, 61,255,226,119,117,214,216,102, 94,249,179, 99, 64,143, 9, 82,155,209,126, -249, 98, 66, 86,171, 98,139, 4,113,105,101, 80, 72, 5, 80,214,228,173, 84, 0,133, 84, 8,165, 84,128,156,172, 84, 20, 85,240, -143,103,123,242, 30,160, 71,254,116, 52,102,223,205, 54, 39, 46,164, 24,209, 60,172, 3,124,125,253, 96, 29, 54,185,249,233,195, -223,239, 82,248, 70, 44,173,200,253,235,117, 87,117,182,254,124, 10,243, 94,154, 17, 67,128,243,213, 55,231,142,111, 45,219,208, -105,225,188,103,111,136,155,243,238,186, 78, 77, 53,215,114, 93,216, 55,253,134, 79, 25,223,182,251, 32, 36,167,166, 98,255,158, -115,120,112,224, 80, 12, 27, 57, 14, 86,171,229,177, 77, 27,215,157, 5,176,225, 31,215, 92,223,136,222,109,219, 68,124,227,239, -231,215,140,227,170,222,202, 65, 41,208,187,223, 0,204,125,241,105,112,148,162,125,199,174, 3,134, 61, 50,155,210,234,183,119, - 20, 20, 22, 84, 36, 92,137,143,174,212, 95, 57,237,114, 94,154,205,118,131,193,128, 11, 23, 46, 32, 49, 49, 17,113,113,113, 40, - 44, 44,132, 70,163, 49, 54, 50,173,234,118,237,218, 77, 58,124,248,176,212,221,221,253,122,188,213,106,133, 74,165,194,164, 73, -147,132,131, 6, 13,242, 31, 62,124,248, 84, 66,200, 86, 74,105, 89, 93, 58,149,133, 87,115,212, 62,225,159,244,235,223,111, 22, - 0,200,212,190, 41,235,191,220, 19,215,224,185,166,241, 11,234,217,179, 87, 43, 80, 10, 2,186,182,162, 32, 33,175,129, 90, 33, -197,169, 83,167, 90,242,249,252,235,247, 87,142,227,240,209, 23,223,134,255,242,199,229,113,203, 86,172,148,170, 21, 18, 24, 74, -173,120,106,242, 88,151,239,193,114,159,240, 97,189,122,245,219,181,240,221, 55, 5, 74,133, 2,135, 78, 39, 99,246,139,175,154, -115,211, 98, 87, 82, 78,184,161, 34, 63, 33,255, 54,111,149,119,100,194,235,144, 0, 37, 84,163, 6, 75,103, 62, 54, 74,106,181, - 59, 81, 82, 97,135,197,230,132,147,163, 40,173,176, 35, 62,163, 28, 94,106,113, 83,164,187, 0,208, 2, 48, 0, 56,123,211,111, - 84,127, 71, 29,191, 11,170,170, 69,224, 9,192, 10,160,246,198,107,126,215, 23, 95,179,126, 60,128,136,106, 77, 39,128, 51, 0, -138,111,105,176, 8, 33,148, 82, 74,106, 21,226, 27,126,215, 70, 36, 86, 78,156, 55,123,138,244,189,173, 49,248,109,219,146, 2, - 67,210,201,154, 4,192,187, 85,183,243,249, 73, 55, 54,119,185, 50,212, 82,230, 23,217, 76, 64,248,171,251,245,239, 59,104,214, - 51,207, 32,172,101,128,200,233,116,210,216,196, 20,251,230, 77, 95, 60,174,105,214,118, 77, 89, 86,236,130,154,170,198,198, 14, -223,116,114,206,172,155,107,172,156,156, 51,235, 86,251, 73, 8,224,166, 16,225,147,125, 41,160, 20, 32,160, 80,203,133,216,126, - 36, 11, 41, 49, 63,148,141,104, 95, 86, 49,105,217, 59, 3, 30, 24,246,252,225,248, 36,243,119,249,249,230,131,148,210,188,250, - 52,121, 4, 16,240, 9,212,114, 33, 52,114, 17,220, 20, 34,144, 90, 55,174,218,205,130,253,135, 61,255,203,225, 19,233,175, 3, - 48, 80, 74, 45,117,105,202,124, 66,186,168,221, 2,190, 27, 55,107,185,234,114,150, 3, 2, 62,208,194, 71, 6, 15,149, 8, 86, - 7, 65,154,193, 86,125,198,184, 97,246,156,119, 61,230,189, 60,107, 31, 33,145,109, 40,141,183, 53,148,118,147,201, 36,158, 50, -101,138,208,110,183,219, 38, 61,245,194,160,188, 60,195,232,143,214,190, 47,241,246,214,193,100,118, 32, 38,238, 90,196,194,133, -239,182,216,115,224,200, 79,239,188, 58,115,215,144, 33, 67, 52,223,126,251, 45,215,152,227,110,208, 23,124,248,197, 55, 59,191, -254, 96,229, 18, 36,164, 23, 99,211,198, 13,160, 78,199, 39, 13,158,249,181, 52, 41,165,244,245,215, 95,151,253,244,211, 79, 1, - 10,133,162,204,100, 50, 25,110,168,127,224, 17,129,190,200, 4, 47,149, 24, 34, 1, 15, 58,119, 41,188, 53, 18, 8,249, 0,143, - 16,103, 93,154,155,190,219,187,136, 51,149, 98,247, 54,235, 35, 95,124,184, 24, 79, 62,247, 6, 98, 11,196, 7,120,114,205,162, -103, 31, 25, 55, 79, 43,115, 14,241,115,227,121, 15,232,212, 28, 10,169, 8,243,159,159,130,174, 49,105,222,217, 37,220, 27,134, - 74,126, 7, 0,111,212,121,220,121, 4, 2, 62,129, 74, 46,196,129,111, 86,228, 87,148, 26, 74,107,154,222,172, 22,115,186, 75, - 87,189, 58,242, 83,161, 11,155,215,169, 67,187,197,179,166, 79,227,245,234,209,149,242,120, 66, 20,148, 91, 9,165,192,139,179, -103,226,217,153, 79,251,100,230,228,191,181, 97,195, 39, 11,148,222, 17,239, 25,243,255,122,167, 33, 77, 30,169,170,245, 81, 74, - 5, 80,202,170, 12,139, 82, 42,128,217,234, 4, 33,224,187, 7,117, 42, 37, 85, 53,183, 57,133,105,117, 63,113,223,172,233, 17, - 24,245,219, 47, 41,170,240,226,239,138, 79,166,230,196, 45,138,185,164, 63, 67, 41, 45, 10,236,247,242, 84,155,131,194,104,118, - 32, 85,111,130,195, 70,201,147, 67,131, 16, 60,158,132, 45,249,226,252,215,132, 16,117,141,113,190, 89, 51,235,228, 14,179, 87, -219,113, 15,127,176,110,227,217,149,139,223,224, 23,148, 90,193, 81, 10,169,152, 15,153, 88, 80, 29,248,168,172, 40,197,134,143, - 63,203,115,128,140,163, 71,142, 56, 26,117, 93,226,232,228,177,195,250,110, 39,128,152,240, 68, 89,126, 65,205,131, 30, 28,249, -184,244,193, 81, 83,224,116, 88,231, 41,116,225,191, 87,232,175,252,230,138,102,155,200, 8, 16,224,188, 81,159, 48, 19, 0,148, -186,176, 79,194,195,194, 59,221, 28,215,186,117, 88, 39, 87,142,123,245, 53,154, 39,211,134, 76,111, 29,222,118,238,172, 55, 55, - 54, 79,205, 53,193,163, 89, 8,226, 46, 95,192,254,111, 63, 60, 95, 89, 94,188,114,255,238, 31,230,190,247,254,218,246, 35,199, - 76,196,174, 31,191,125,133, 16,242, 17,173,226,215, 90,181, 83,147, 55,127,254,105, 51,161, 88, 2,187,131,131,221, 73,171, 62, - 29, 78, 20, 21, 21,195,238,224, 32,149,171,224,224, 8,236, 78, 14,118, 7, 7,139,213,161,152, 57,101,248, 51, 0, 78,215,181, -159, 1, 17,253, 15,138, 36,146, 32,138,170,119,203, 82, 74,193,119, 88,121,190,190,190, 91, 1, 64, 34,145, 64, 34,145,128,227, - 56,196, 36, 24,158,211,134, 71,207, 66,181,177,115,218,172,233,197,169,199, 7,215,151,118, 31, 31,159,145, 55,155, 43,179,217, - 12,163,209,136, 63, 78,158,213,124,254,245,206, 33,169,233, 89, 45, 57,170,177,168,188, 91, 14, 6, 48,178,190,252, 44,203,187, -242, 76,179, 30,211,121,175, 60, 59,181,245,186,205, 63,159,185,122,224,189, 6,251, 97,181,136,158,103,125,101,198, 67,157,151, -173,221,116,181,232,248,199, 47,221,234, 24, 9, 4, 2,161,193, 96,184,126,126,175,255,108, 91,231,243, 9,217, 99,214,124,176, - 70, 26,147, 92,142,203,169, 57,152, 26, 29,136, 27,110, 2, 13,104, 42,125, 90,121,181,106, 21,190,117,195,218,101,130,171, 57, -102,124,248,195, 25, 28,222,245,201, 31,121,249,167,135,208,188,156,202,166, 92, 67,110,215, 96, 53,164,249,251,165, 2, 24,205, - 14, 88,172, 14,216, 57,138, 50,147, 29,249, 37, 86,148,153,108, 48, 86, 58, 48,117, 96, 96,125, 38,186, 33, 63,162, 37,132,252, - 76, 41, 29,129,170,233,165,196,181,126,131, 16,242,115,245,126,221,240,123,222,188,121,175, 47, 93,186, 52,174,102,217,154,248, -154,101, 27,138,175,181,190,231,252,249,243,219, 44, 91,182,108, 73,143, 30, 61,182,255,249,231,159, 41, 46, 25,172,218,137, 32, -132, 52,152,193, 18,145,192, 79,174,114,175, 50, 28,127, 87, 24,160,121,155,254,133,107,150, 47,244,240, 13,233,158,158,123,245, - 84,144,235,181, 86,161, 61,101, 50,249,222, 85,171, 86,225,145,145,125,100, 25, 5,118,227,165,140, 74,125,133, 21, 14,111,109, -168,120,209,146,101,202,101,203, 87, 60,251,243,110,174, 4,192,138,186,155,242,186,156,227,147, 90,125,172, 8, 1,229,156, 89, - 69,169,103, 58, 3,192,237,244,181,170, 48, 59,192,175,238, 59, 67, 8, 96,178, 56,193,231,147,252,146,132,239,226, 39,189,183, -104,192,150,237,191,228, 80,158, 91,121, 69, 69,170,156, 82,154,213,112, 13, 1, 65,153,201, 14,141, 92, 8, 55,165, 16, 26,133, - 8,252, 90, 39, 87, 77,179,224,150,109,135,178,211,211, 11,207, 86,155,171,122, 53, 5,124, 94, 10,117,218,205,148, 58, 85, 35, -186,104,225,237, 38,134,175,187, 4, 18,177, 0,118, 7, 80,105,229, 96,182, 58,145,150, 95,137,242, 74, 25,218,246,155,208,194, -211,247,156,197, 51,168,203, 79,133,233,103,199, 53,104, 74,157, 78,108,222,186,179,117, 78,142,126,244,190,159,190,145, 24,202, -236,184,148, 86,129,252, 18, 11,192,215,226,237, 37, 31, 74, 94,123,105,250,152,205,219,190, 79,127,176, 79,183,244, 70,231,107, -254,149, 45,109,123, 14,255,100,196,136, 49,178,184,211,251,112,245,194,111,139,141,122,215,251, 95, 17, 66,120, 59,118,236,112, - 76,159, 62,189,124,201,146, 37,205,118,239,222, 29,108, 48, 24, 46, 0,176,187,185,185,133,135,182, 14,186,120,232,192,126,255, -225, 99, 38, 8,179, 10, 42,161,145,139, 16,228, 45,199,201, 63, 14,218,197, 98, 97,157,253, 73,170,155, 1, 31, 13,136,126, 13, -187, 79,166, 12,137, 43,148, 30,121,122,218,212,244, 67,199, 18, 10,215,127,125,232,125,127,165,253,130,148, 51,172, 63,215,185, -149,207,188,217, 83,176,116,221, 22, 28,141, 73,200,175,224,249, 46,206,181, 56,126,121,231,225,185,245, 84,153, 87, 25,107,149, - 76,136,138, 50, 67,233,181,152,253,161,119,168,246,121,234,161,159,182,240,138,202,237,200, 44, 48,147,156,162,114, 56, 57, 10, - 55,185, 8, 14,142,162,164,168,128,124,179,229,107,156, 61,123,146, 7, 62,239, 41, 0,239, 52,216,156, 69,170,154, 4,149, 82, - 97, 85, 13,144,172,234,211,238,228, 16,214,186, 21, 62, 93,191, 90,237,229,173, 67,239,190,174,247,121, 86,121, 6,181,223,254, -229,122, 28,249,243,124,255,163,107, 62,236,162,244,211,174, 83, 7, 68,174,212, 4, 15, 52, 91,108, 78,148,150, 20, 67,108,205, - 68, 87,127, 3, 60,228, 78,164,149,249, 34, 54,239,170,242, 86,205, 89, 5,151,127,184,160,109, 51,118,193,206, 61,135,151, 14, - 30,216, 31,177,105,101,144,137, 5,144,138,249,144,138,249, 16, 18, 39, 86,127,252,137,189,184,180,124, 68, 65,236, 79, 5, 77, - 40,159,191, 86, 63,237, 86,221,220,116, 45,181, 91,214, 45,248,234,233,185,203, 7, 15, 25,251, 56,137, 61,251,251,235, 0,126, -115,237, 1,143,186, 20,199,113,212,229,178,239,221,170,243,214, 47, 55,111,123, 56, 50,164, 25,244, 37,118,228, 20,219,240,199, -249, 36,124,245,249,130,146, 98,125,242,100,216,140, 70,142, 56, 74, 15, 30,216,115,224,185, 23,230, 34,170, 77,251,230,101, 89, -101,106, 0,165, 55,108,147, 79, 54, 62, 54,109,198,195, 58,157, 78,245,119, 13, 22, 69,104, 88, 36,134,141,122, 8, 7,119,253, -136,248,184, 75,224,104,149, 81,226, 56,138,146,226,194, 60,135,221,186,185,190,253, 19, 75,165, 65, 95,124,249,117, 8,143, 71, - 96,179,115,176, 58, 56,188,244,204, 19,214,153, 47,190,222,123,216,160,126,113, 98, 62,202,210, 50,114,221, 78,158,255,171, 45, - 39, 84, 54,155, 54,103,181,200,108,113,162,212,100,199,190, 77,245,123, 28,153, 71, 80,143,246, 61,199, 76,155,249,230,167, 18, - 9,159,103,139, 10,109,150,210,175,123, 84,102,160,159, 87,249,194,101, 31,118, 61,126,250,252,176,137,147,166, 73,167,134,119, - 34,126,158, 50,213, 19,147,198,182, 83,120, 6, 62, 86, 81,152, 81,239,171,205,132,114,247,146,192,224,214,166,191,107,136,194, -126, 32, 20, 45,110, 48, 17, 4, 41,166,188,132,113, 0,224,235, 23,104, 22, 74,212,229,141, 48, 32, 20, 0,214,125,182,173,243, -197,196,156,167, 63,248, 96,141, 60, 38,185, 28, 23,146, 75, 33, 17,241, 96,179,115, 32, 46, 86, 98,115,148, 63,227,141,249,243, -212,197, 21, 78, 28,185,100, 64,220,185,223,169,213,104,158, 36,119,168,199, 41,116, 97,143, 1,104, 5, 32,137, 16,186,177, 66, -239,179,139,210, 35,142,198,150,123,142,171,122, 78,214,120,183,106,225, 20, 72,134, 9,197,138, 30,132,208, 40, 66,225, 14,208, -236,194,234,123,170,171, 14,173, 66,159,136,229, 75,222,194,218,207,127, 68, 78,161, 25, 26,103, 38,118,109, 90,132, 87,150,110, - 69,165,197,217, 80, 25,111,208,143,212,101,136,110, 54, 90, 53,223,107,150, 91,250,127,236,157,119,120, 20, 85,219,198,239,153, -173,217,146,222, 3, 73, 32,129,208, 91,232, 29, 4, 65, 20, 20, 16, 5, 65, 20, 20, 16,244, 69, 17, 84,196,130, 40, 2, 34, 93, - 81, 65, 4, 41, 34,210,139,244, 94, 12, 53,144,208, 18, 72, 39,164,151,221,108,175,115,190, 63,146, 96,196,148, 13,242,126,250, -226,243,187,174,185,178,155,157,189,119,206,204, 57, 51,247,121, 78,155, 59,119,224,125,215,102, 96, 21,215,236, 79,251,149,127, -127,222,188,121,115, 42,124,110,116,185,137,176, 60, 49,213, 37,202,195,191, 89,164,212, 67, 45,247, 80, 72, 80, 63, 44, 24, 35, - 38,126,226, 23, 20,213, 53, 79, 46, 19,139,118,108, 92,233, 83, 96,146,131,227,121,131,203,205, 27,129, 77, 58,186,187,187,239, -221,182,117, 59, 34,195, 2,164, 27, 78, 21,165,198,166,152,238,133,116, 75,242,211,101,245, 61,140,226,161, 67,134, 40,143, 28, - 61,246, 86, 85, 6, 75,196,137,234,126,191,110,107,128,187, 66, 2,142, 3,116, 38, 7,198,141,126,246,175, 63,190,152, 32, 26, -251,242,104,112,101,230,170,164, 48, 7, 51,222,157,104, 86,217,111, 93,207, 72,203,184,219,119,208,212, 35, 37,122,206, 60,252, -197, 73, 23,174, 39,206, 45,174, 57,247,218, 51,159,124,234, 73,105,105,164, 0, 16,113, 28, 4, 38,228, 54,174,175,254,207,159, -154, 5,115, 44,223,215,100,216,116,119, 19,138,220,131, 91, 14, 91,191,240,141,239, 67, 2, 3,124,213, 42, 5, 83, 43,229, 92, -243, 38, 81,210, 78,157,186,200,234, 55,110, 37, 61,117,195,132,140,124, 19, 82,178,180,144, 7,182, 17,143,120,108, 0,214, 47, -153,214,139,227, 56,190,166,142,175,135,142,159, 29,180,234,219,197,242, 92,141, 13, 55, 51,244,200, 41, 54, 35,187,216,130,156, - 34, 51,212, 10, 9,122, 60, 61, 94,254,235,206, 21,131,250,116,239,184,236, 65, 78,111, 74, 74,234,175,105,119,179,159,107, 21, -221, 1,235,215,174,233,238,237, 29,225, 81, 92,156, 82,226,234,213,153, 61,123,182,108,222,188,121,226,175,190,250,170,164, 83, -167, 78, 65,239,191,255,126,255,188,188,188,243,245,234,213,107,124, 96,219,143, 71,219,244,120,166, 61, 4,155,127,247,158,189, -165,114, 65,140,131,123,246,216,126,217,180,161,208,100,210,189, 86,173,209, 80,122,206,206,213,115,240,175, 83,231,154, 90,230, -124, 92,204,107, 18,139,246,253,103, 29,128,109, 13, 6, 76, 62,124,236, 98, 66, 98,187, 75,105, 1, 71, 47,221,206, 43, 50,218, - 26, 37,237,123,187,218, 27,174,136,227, 32, 22,241,112, 87,136,193,151,221, 77,221,235,180,190, 13,142,243, 47,143,148,114,224, -202,254, 2, 28,135,172,162,244, 88, 23,250,100,112, 76, 96, 64, 66,166, 1,122,115,105, 8,190,174,159, 18,249,185,153,248,102, -217,143,136,189,120, 1,253, 6, 60,141,229,223,111,192,184,209,207,153,107, 82,227,249,178, 8, 86,133,232,149, 90, 33, 6,192, - 65, 99,176, 99,235,233, 59,104, 16,193,187,252, 64, 0, 0,119,181, 18, 90,157, 9,188,212, 29, 73,151,246, 42,247, 29, 59,247, -254,135,159, 45,126,167, 56, 59, 46,227,118,252, 41, 52,246,211, 34,162,142, 13,215,114, 60,112,177,176, 62, 26, 55,140, 4, 47, -189,224,146,118,193,181,150,243,119,242, 91, 7,182,107,211,172,115,120,128, 23, 76, 86,103, 89, 20, 75,132, 53,171,215, 33, 45, - 53,243,149,130,107, 59, 98, 31,134,147,213,231, 38,231,187, 5, 70,189, 30,127,238, 72,202,144,145,175, 35,184, 78, 88,107,215, - 31, 90,174,153, 41,167, 11, 6,139,227, 56,222,167, 94,155,181,107,215,111, 30, 30, 17, 22,132, 67,231, 82,113, 62,177, 16,126, -126,190, 16, 41,131, 16,213,115,140, 87,252,254,165,207,154, 10,244,107, 37, 82,229,171, 29, 59,117, 5, 99, 12, 9, 55,174, 21, -105,181,158,127,186, 55, 27,179,110, 94, 6,224,241,135,102, 40,255,166,173,213,158, 62,151, 45, 54, 39,238,222,205,196,153,223, -142, 71,151,237,231, 50,114,169, 8, 7, 99,243, 96,179, 11,176, 57, 4,244,232,249,184, 85,202, 91,186,127,190,120,117,167,236, -172,108, 94,229,225, 39,248,212,105, 42, 13,150,219, 44, 87,146,181, 82,155, 93, 64,100,136,170, 90, 77,255,144,134,115,166, 77, -155,210, 84, 36, 85, 64,103,176, 88,179,179,238, 6,173,220,120, 76,127,227,102,124,157,186, 1,158, 30, 95, 44, 89, 33, 45, 49, -115,200,211, 90, 80,164, 43,225, 70, 78,120, 55,100,213,215,115, 71, 1,112,121,237, 88,142, 33,226,215,131,167,154,120,187, 75, - 57,189,217, 33, 20,150,216,156, 35, 7,255,181, 65,148,101,230,106,252,226, 69, 75,148,177,201, 58, 92, 73,214,194, 77, 42,130, - 76,202,195,106, 23,224, 74,113,226, 56,142,143,104,209,243,181, 46,237, 90,226,192,229, 2,136, 68, 60, 76,186, 98,163, 24,133, -137,237,122,245, 83,182,237,208, 9,189,123,245,196,237,196,132,176, 61,187,182,246,137, 57,115, 34, 71, 29,208,248, 13,125, 94, -194,246, 90,229,115,163, 81,100,151, 5,141, 9,174, 83,175,235,208, 17, 99, 60,195,195,234,112, 1,126,190,112, 48, 49,198,143, -126,214,229,146, 95,106,200,129,121,159,189, 15,139,197, 10,127, 47, 25, 24, 3, 86, 47,251, 4, 86,171, 21, 33,190,114,104, 13, -246,234,140,105,181,126,164,170,168, 83, 45,155,155,247, 84,102,178,238,255, 63,199,113,123,166, 79,159, 62, 3, 0,155, 62,125, -250,140,242,247,115,231,206, 53, 1,200,114,201, 96,149, 39,170,202, 27,101, 72, 84, 35,239,128,144,211,191,172,253,218,187, 88, -111,131,155, 84,132,186,161,225,120,239,211,165,254, 3,218,249, 33,223,172,196,230, 45,107,138,172,102,227, 38,215,218,146,163, -218,185,171, 60, 14,172, 93,191, 73,240,243,245,229,191, 57,152,159, 92,168,115,220,107,186, 74, 60,183, 75,184,120, 96,101, 48, - 3,183,223,205,205,173,161,213,106,245,174,233,130,174, 62,152, 94,214, 57,151,123, 24,247, 84,112, 34,145,115,195,134,245,240, -245,144,193, 98, 23, 48,253,157, 55, 77, 47,245, 83,107, 70, 62, 63,226,177,222, 79, 78, 62, 42, 81, 69, 29,233, 18, 29,197,218, -180,105,163, 17,137, 68, 53,234, 21,166,156,255,211,104,137, 38,245,149,175,126,240,238, 75, 31, 84,210, 44,232, 82,135, 92, 93, -118,252,105, 0,127,136,136,112, 13, 26,200,126,218,188,243,205, 97,207, 15,255,176, 78,235,193,234,212,108, 45,164,156, 13,237, -155, 6,227,216,254,237, 44, 51, 45,113,138, 43,163,138,242,242,139, 66,253,253, 3, 17,155,162,199,221, 66, 19,114,202,204, 85, -118,177, 5, 58,147, 14,173,194, 67,160,209,106, 67, 31,248,252, 2,219, 15, 28, 56,240,220,147,207, 12,199,228,119,102,117,251, -225,219, 5,113,234,160, 70, 99,245, 57,137,199, 93,169, 25,114, 28, 87,244,222,123,239, 53,248,254,251,239,249, 81,163, 70,153, - 90,182,108,233,246,226,139, 47,118, 91,183,110,157,155, 82,233,102,186,114,106,215,135,175,254,103,250, 51, 43,151,206,110, 93, - 92, 92,204, 57,236,246,125,182,226,226,233,186, 26, 76, 92,198,206,247,111,114,205,102,189,252,120,119,255, 93, 62, 74,190,185, -156, 89, 71,112,205,102,109, 98,215,103,218,146,246, 45,211,181,124,126,209,127,178, 52,194, 7,102, 62,224,243,154,204, 21, 0, -240, 34, 14, 86,187, 0,119,133, 4, 60,207,151,155,247,224, 53,155,246, 41,253, 61,101,144,136,120,136, 69,165,209,205,130, 18, - 27, 94, 31,227,234, 76, 31, 76,112, 56, 25, 76, 86, 7,140,101,181, 65, 93, 73, 1,222,127,231,109, 12, 24, 52, 4,175,190,246, - 54,138, 77,192,197, 20, 29,108,118,123,141,133,130,231,120, 24, 45, 14,140,237, 23,142, 34,189, 13, 6,147, 3, 86,135, 0,165, - 76, 12,137,152,135,202, 77, 12, 15,165, 4, 96, 76,202,113,220,120, 0,144, 72, 36,102,155,205,182,190,154,235,132,250,161,129, - 48,217,121,116, 24,190, 0,125, 59, 55,194,181,211, 91,197, 39,206,198, 71,188,245,206, 7,120,115,220, 32,108,185,217, 0, 62, - 1,225, 80,171, 20,176, 51, 30, 0,115,169, 67, 30, 99, 51,133,224, 38, 67, 95,248,238,251,213, 9,159,126, 60,221, 77, 99,224, - 32,151,138,112,244,200, 97,196,156,187,184, 52,255,218,142,245,120,136, 72, 24, 31,232,225,225, 1, 55,153, 8, 86,155,197,234, -122, 23, 5, 6, 6, 68,171, 3, 27,127, 87, 86,195,143,118, 10,168,228,127,172,166, 7, 2,231, 25,210, 98,205,119,171, 54,140, - 10, 9, 10,192,246, 35,113, 88,243,253, 87,136,104, 51, 16,167,127, 93, 3,207,250,157,160, 10,235, 6,153,251,230,241,188, 72, -220,242,141,183,102, 12,109,219,190, 51,206,156, 58,138,188,156,236,239, 24,187,233, 82, 68, 67, 36,225, 38, 63,246,248, 32,152, -173, 78,116,239, 51, 16,251,119,111,255, 15,202, 6, 79,184,254,240,186,239,254, 12,222,241,246,148,201,146, 60,173, 85, 82,160, -181,226, 78,129, 9,105, 57, 6,236,248,249, 7,230,250,253,194,218,190, 71,171,186,146,241,243,143,222, 9,173, 27,108,145, 88, - 76,138,196,164,228, 38,175,142,121, 73, 18,209,176, 9,159,167,181, 32, 95,107, 65,129,214, 2,189,217,129,134,117,163,120,187, -131,235, 92,219,235,236,231, 41,147, 44,223,157, 2, 15,149, 4, 93,154, 60,248,192, 89, 65, 16,126, 55, 87,139, 75,205, 85, 92, -138, 22,114,169, 8,114, 41, 15,185, 84, 4,135,147,185, 84, 97, 81, 4,142, 69, 23,173, 0, 0, 32, 0, 73, 68, 65, 84, 52,122, -242,245, 55, 38,133, 88, 29, 64,161,214, 10,177,136, 67,128,159,183,170,125,235, 23,176,122,193,127, 0, 0,227,222,251, 6,175, -142,125, 17, 77,155,183,132,166,184, 56,232,133, 97, 79, 46, 6,176,221,213, 99,221,123,240,120,216,193,147,177,239,189, 62,109, -166,250,249, 65,189, 69,151,147,181,200, 46,178, 32, 41, 81, 87,171, 72, 27, 0, 56,156, 2, 24, 24,126,220,180, 7, 10,153, 24, -249, 90, 27, 24, 99,152,253,213, 47,112, 87, 72,144, 93, 92,218,172, 95,195, 61,158,171,225,243,129,127, 41,126, 82,250,253,124, -252,222, 79,171,198, 8,214,220,185,115,175,205,157, 59,183,210,136, 88,141, 6,171, 58,115,229,229, 29,124,102,215,166,239,125, -182,199, 90,113,118,243, 69, 60,213, 49, 24, 82, 49, 15,165,167, 63,174,164, 24,112, 96,255, 70,205,222, 93, 91,238, 22, 73,140, - 95,214,104,174,130, 27, 71,171, 20, 30,135,151,175, 92,235,240, 11, 8,192,250, 83, 69,153,197, 6,135,253,247,230, 41, 59,119, -241,192,202, 8,135, 96,127,194,148,115,171,198,234,172,192, 32,157,251,237, 78, 0, 12,130, 32,128, 9, 2, 36,110,106,149,127, -131,206,185,101, 55, 56, 55, 49,207,153, 43,150,124, 38, 56, 50,243,147,171, 15,119,114, 0, 60,148, 18,108, 58,113, 23, 0,114, - 69,186, 75, 55, 70, 62, 95,218, 44,104,182,186,149, 52,111,208,128,181,111,223, 94,163, 80, 40, 30,248, 34,215,182, 89,208,165, -140,147,148,100, 5, 48, 63,164,113,247, 33,253,213,173, 58,200,120, 41,218, 54, 14,198,177, 3, 59,216,217,253,171,199, 25,115, - 19,214,186,152, 1,161, 55,219,145, 85,104,198,221, 66, 51,114,138,205,200, 41,178, 32,167,216, 12,142,227, 96,182, 58,254,210, - 3,203,144,151,176,121,253,218, 85, 79, 91,108, 24,209,163,223, 16,188, 61,115,121,248,250,239,230, 29, 86, 4, 54,233,234, 74, - 7, 90,198,152,147,227,184,180, 49, 99,198,180,222,184,113,163,168, 69,139, 22,166, 27, 55,110, 40, 1, 8, 0,108,106,181, 82, -241,195,215,115, 15,116,232,208,225,231,187,137, 55,143, 2, 40,118,101, 36, 85,189, 94, 99,228, 77, 60,138,198,135,169,186,244, -143, 12, 82, 34, 76,165,235,223, 68,125,229,203,128, 62,111,205,201, 59,178, 36, 47,219,226, 56,148,111, 18,181,185,171,151,184, -212, 23,208,110, 49,167, 15, 29, 54, 28, 34,142,135,205,108, 76, 47,207, 92, 1,158, 50,124,178,225, 38,212,110, 18,184, 43,196, - 80, 43, 36,232,214,204, 7,181,184,143, 49,187, 83,128,209,226,132,201,226,128,217,234,128, 95,168, 55,190, 95,191, 25, 25,121, - 38,236,188, 80,128,132,116, 29,162,234,170,192, 88,205,183, 71,193,105, 55, 12,122,118,148,187,136,231, 32,226, 57,190, 89,147, - 70, 40,210,219, 32, 21,243,144,186, 41,160,146,139,225,161,144, 64, 42,149, 32, 47, 47, 15, 22,139, 5, 97, 97, 97,110,213, 91, - 64, 6,119,181, 2, 81, 17, 33,176,217, 29,216,123,242, 58, 62,159, 50, 20,143,247,104, 7, 78,162,198, 77, 75, 52,220,125,220, - 33,240, 60,108, 14, 1, 86,155, 19, 0, 95,101,180, 45, 44, 44,236, 49,149, 74,165, 50, 26,141,186,244,244,244,227,217, 55,183, -101, 4, 52, 31, 60,126,255,193,163,235, 7, 14,120, 28,177,113,215,176,101,251,174, 83, 5,190,218,105,229,223,105,209,162, 69, - 39, 63, 63, 63,117, 97, 97, 97, 73,124,124,252,249, 7,172,237,114,170,192, 38,111,117,238,214, 11,122, 77, 30,114,239,164,186, - 92,107,110, 26,238,142,143,230, 46,111,219,184, 81,227,182, 78, 86,106,184,154,133,185, 99,234,204,101,109, 27, 68, 53,106, 91, - 62,208,163,105, 88,245,211,170,169, 2, 27, 79,250,124,209,183,163,195, 66, 67,177,239,204, 77,204,253,224,181, 88,149,210,189, -126,221, 64,111, 47,105,243,118,184,124,249, 55, 4, 64, 6,143,192,168,186, 35,158,158, 80,183,255,128,167, 17,127,229, 34,150, -204,255, 44,198, 32, 82,204,113,229, 88,213,129,145,254,109,218,247, 24,233,238, 19, 8,141, 86, 7,119,239, 0, 52,109,213,126, -164, 58, 48,242,189,178,197,234, 31,204,108, 48, 6,139,141,161, 88,103, 67, 70,126,169,185, 74,205, 53, 66, 16,106,209,231,199, - 41,112,106, 55,177,216,199,126, 59, 44,254,240, 81, 22, 30, 26,200,205,255,236, 29,145, 13,110,200,215,148,154,171,252, 18, 43, -242,181, 86,232,205,118,248,168,196, 16,156, 66,173,107,219,197,122, 27,220,203,250,201, 58,133, 7,239,243,253,237,154, 77,141, -175, 36,102, 13, 94,180,104,137,242,114, 74, 5,115, 37, 41,141, 94,201,165, 34, 56, 5,161,236, 73, 83,131,185, 23, 75, 38, 63, -243,100, 95,220, 41, 48,149,141, 68,230, 16,213,178, 3,252, 20, 2,250, 12,159, 14, 0, 24,244,100,105, 63,227,148,108, 3,118, -159,205, 7,254,216, 97,187,250,123,177,201, 36, 90,185,225,215,183, 54,255,242,179,167,217, 41,198,138,125,105, 48, 90, 28,112, -147,138, 32,151,138,160,144,138,254,208, 37,168,102,131, 85,218,167, 46,163,192, 14,163,217,140, 18,147, 29, 12,192,249,219,122, -152,172, 14,104, 13,118,116,106,226,253, 87,235, 60,191, 2,120,234,126, 35,116,191, 73,170, 16,129,170,140, 11, 21, 53,202,247, -175,202,192, 85,236,147, 5,192,165,138,160,248,126,167, 88,241,189,123, 72, 84, 35, 47,175,224, 51,187,126,254,222,103, 91,172, - 5,199,174, 20, 98, 88,247,186, 48,106,115, 48,111,238,187, 69, 28,152,149, 23,241, 26,139,217,180,173, 80,105,251,156, 93, 79, -178, 85,123,147,240,111,214, 74,161, 84, 30,253, 98,201, 10, 91, 64, 96, 29, 97,219, 89, 77,158,214,232,252, 67,172,208,105,177, -240, 76, 96, 82, 87,204, 85, 89,211,134,109,230,127,134, 64, 96, 12,159, 44,217,140, 57,211,134, 67,173, 24,165,228, 56, 78,105, - 48, 59, 48,101,214, 42, 44,252,232, 21,119,165, 92, 12,142, 3,204, 86, 39, 70,143, 24,226, 90,198, 51, 59,144,116,110,163, 94, -151,178,231, 70,197,102,193,142,221, 6, 92,236,216,177,163,198,219,219, 27, 10,133,226,247,200,132,139, 55,235,202, 70, 11,230, -105,144,233,238,238,222,211,195,195,163,162,158, 65,163,209,236,120,144,220,167,211, 20, 28,205, 73,139,239,208,181,247, 32, 28, - 63,176,131,157,221,247,195,184,218,204,177,227,237,227,125,231, 82,124, 82, 83,142,243, 41,141, 96,149,153, 43,171, 93, 64,120, -160, 18,119,210,146,224,229,233,121,199, 85, 61,101, 64,147,103, 56,158,189,198,129,173,214,231, 36,110, 46, 51, 59, 47,168,130, -154,196, 93,187,122,249,243,129, 35, 39,139,251, 13,155, 36,250,110,238, 27, 51,112, 95,231,212,106,176, 37, 36, 36, 92,127,229, -149, 87,186,196,196,196, 56, 1, 24, 57,142,179,139, 68, 34,165,213,106,149,246,238,221, 91,123,243,230,205, 19,112,161, 51, 98, -247,177, 91,252, 56,185,110, 64,131,168,246, 47,132,187,235, 30,239,221,189, 51, 58, 55, 15,197,157,238,157, 1, 96,114,186, 94, -221,184,219,196, 31, 54, 69,248,215,221,251,221,154,221,115,198, 13,239, 59, 37,100,208,172, 69, 89,187,103, 86,219,193, 52,227, -250,241,254,149,217,247,210,102, 67, 9,212, 10, 49,220, 21, 18,184,187, 73, 96,119,176,218,212, 20,153,221, 33,148, 70,176,172, - 14,232, 77, 14, 28,189,156,139, 28,173, 21, 26,157, 13, 38,155, 19, 12,172,180,246,233,194, 93, 60,239,214,105,175,123,215, 62, -188,173,118,229, 87, 11, 60,182,158,206,188, 55, 66,207, 83, 41,131,187,178,116, 84,245,201,147, 39,225,235, 91,115,237, 94, 16, - 4,108,217,127, 30,139,126, 60,138,253,171,223,133,155, 84,132, 86,207,204,194,203,131, 59, 66, 96, 2,146, 18,174,229, 70, 53, -107, 29,200,243, 10,240, 28, 7,139, 93, 0,192,170, 60,159, 86,171,213, 55, 35, 35,163,164, 97,195,134, 65,117,234,212, 25, 38, - 18,137,152, 28,176,236,248,185,200,120,100,207, 79, 74,131,201,226, 84, 58,180,171, 27,102,155,158,138,138,138, 2,199,113,204, -207,207, 79,122,244,232, 81,125,203,150, 45,253, 31,208, 92,241,138,128, 70, 75, 95,157,248,214,176, 6,145,145,216,252,211,106, - 48,198,109,117,245,251, 27,118,199,224,179,247,255, 56, 98,112,234,204,101,109, 23,206,154,252,135,255, 77,124,127, 81,219,234, -238, 25,117, 91, 60,246,110,147, 38,205, 16,115, 45, 19,243, 63,156, 24,107,206, 75,121,193,170,246,157, 96,211,103,191,221, 38, -186, 29,130,124, 61,144, 85,100,193,211,163, 6,163,107,183,238,136,191,114, 17,159,125,244, 78, 12,140,214,126, 44,255,186,201, -149, 99, 21,152,228,181,222,253, 7, 75, 76, 22, 27,150,205,255, 24, 19,166,125,142, 78,143, 13,146, 92,189,124,246, 53, 0,159, -186,154,102,139,205,137,222, 45,253, 74, 77,179, 93,192,174, 20,145,184,178, 28, 40, 22,113,124,155, 72, 47,152,172, 14,148, 24, -237,213, 63,168,164,146, 28,141,182,164,222,215,115,222, 18, 25,204, 14,228,107,173,200,211, 90, 80,160,249,221, 88, 21,104, 45, -200,215, 90, 33, 17,115, 72, 76, 78, 7, 47, 17,215,186,255, 93,177,222,142, 14,141,188, 75,203,232, 3,182,134,216,197, 30, 29, -247,159,184, 50,116,209,162,197,110, 87, 82,117,136, 75, 41, 41,139, 92,137, 32,151,240,144,149,189,118, 10, 64, 77, 63,225, 25, -208, 32,226,165, 87,198,245,241, 80, 43,144,117, 43, 15, 98, 17, 7,145,136,131,103, 64, 40, 60,229,102,188, 49,113, 60,252,124, -189,144, 81, 96,193,210,237,137,136,187,126, 27,130,169,118,201, 94,182,226,231, 39, 94,125,125,170, 23, 47,145, 97,221,129,212, -210,227, 20, 57,113,243,236,110,115, 86, 82,188, 65, 95, 82,200,192,156, 46, 86,252, 57,230,112,150, 26,211, 57,159, 76,199,207, - 63,126,131, 3,151,242,238,117,206, 58,189,117, 33,222,122,127, 54, 10, 74,172,101, 89,191,250,200,213,125,239,243, 43, 68,158, -254,244,190,130, 41,170,236, 61, 87,246,222, 90,133,134,245, 62, 83,101,189,239,255,214,251,244, 92,154,187, 79, 92, 93,228,202, -211, 59,232,204,206, 77, 43,125,182, 93,178,226,120, 92,169,185,114, 88, 52,248,118,254,251,217, 70, 77, 73,143,234, 38,108,252, -147,185, 10,104,212, 66,174, 82,157,248,112,246, 82, 75, 96,157,122,142,189,151, 75, 10,117,102,231,159,194, 32, 82,165,202,169, -242,244, 55,123,133, 71, 47,146,152,172, 31,231,231, 95, 55,212, 20,105, 18, 24,195,158,115, 57, 96,172,180, 74,244,203,201,187, - 40,171,137,195, 41,148, 54,159, 28,186,156, 7,113, 89, 63, 19, 87,195,220,223,174,248,166,228,169,150, 90,195,200, 57,159,220, -107, 22,236,212,186, 52,114,229,225,225, 1, 47, 47, 47,168,213,106,184,210, 68, 88, 78, 85,163, 5,221,221,221,123, 94,190,124, -217,205,195,195, 3, 34,145, 8, 22,139, 5,205,155, 55,127,160, 2,174, 14,106,242,122,135,199,134,204,232,246,216, 32, 28,221, -191,141,157,221,191,102,124,109, 39, 48,124,170,111,151,221,159,125,246, 73,196,135,159,127, 45,119,119, 19,227,134,222, 10,158, -227, 16, 30,168,132,175,138,199,241, 29,235,204,195, 7,117,113,121, 82,187,208,208, 58,235, 23,126,181, 82,181,112,222,172,222, -238,117, 26, 31,213,221, 77, 40, 2, 0, 67,206,205,249,202,160, 38,215,235,254,118,112,111,235,158, 67, 16, 24, 18,249,120, 45, -194,188,140,227, 56, 99,114,114,114,202,135, 31,126,216,120,222,188,121, 76, 36, 18, 9, 0,228, 75,150, 44, 49,222,186,117,235, - 50, 74,135,216,162,166,232, 85,159,199,155, 79, 81,203,156,157,124,148,124,243,200, 32, 37, 58, 55, 47,109,253, 28,254, 84, 55, -132,134,133, 33, 57,199,216,166,200, 40, 72,244, 86, 81,228,242, 21,113, 23,234,251,137,198, 57, 76,214,235,168, 97, 18,216,170, -242,108,121,199,247,242,232,149,187, 66, 2, 1,168, 77, 77,145,217, 29, 2, 44, 54, 39, 76, 22, 39, 76, 86, 7, 12, 86, 39,140, - 86, 39, 4, 86, 90, 38, 56,142,131,205, 33,192,165,106,242,125,121,223,195,199, 15,145,245, 75, 71,189,186, 43, 74,167,108,240, - 80, 74, 74,199, 58,251,250, 34, 32, 32,192,165, 40,168,213, 86, 90,196,173,118,225, 94,243,189,213,230, 0, 99, 12,137,137, 9, -239,166,165,164, 60,211, 48,170, 97,143,102,173, 90,251, 40,229, 60, 0, 84,105, 6,140, 70,163,211,221,221, 61,192,199,199,135, -191,123,247,238, 61,211,220,176, 77,111,199,246,109, 91, 49,116,232, 16,253,141,243, 87,238, 13, 85, 55,153, 76, 92,215,174, 93, - 61, 66, 67, 67,121,139,197, 82, 82,187,115,192,113, 42,255, 70,131, 67,155,116,249,124,244,152, 9,141,122,247,125, 2,199,142, - 28,196,206,109, 27,215, 26,242, 18, 14,186, 92,222, 27, 55,249,211, 40,194, 6, 81,141,254, 52,138,176, 94, 68, 84,149, 6,203, -211,179,149, 71,171,246,189, 66,211, 10,108,216,183,111, 47, 12,218,156,143,172, 86,189, 17, 18,182,106,207,198,229,175,188,250, -214, 44,143, 94, 61,187,195,219, 67, 9,177, 88,132, 75, 23, 98, 48,239,211, 25, 49, 48, 90,251,213,116,255,188,151,222,102,205, -164, 13,195,234,189, 25,214,160, 5, 46,157, 61,133,164,196,171,215,174, 92,136,105,222,176,101, 39,248,135,132,191,201, 53,107, - 54,143, 93,191,110,171, 73,199,106, 54,167,191,252,210,139,168, 56,138,176,115,116, 99, 95,238,254, 2, 0,192,168,203,179,253, -176, 96,202,173,242, 81,132,130,205,154, 94,149,174,182, 56,127,203,241, 51,231,166, 61,243,212, 19,124, 65,137,181, 52, 98,165, -181,150,109, 22, 20,148,191, 46,177, 32, 42, 68,141,132,107,151, 4,179,182, 96,107, 45,203,165,249,229,231,250, 95, 47,207,187, -130,192,192, 1,230,218,150,111, 38,241, 24, 63,255,203, 69,110, 87, 82,244,136, 75, 45, 41,109, 18,148,136, 74,141,149,132,191, -103,182, 74, 71,167,215, 16, 13,226, 68,115,198,190, 52, 2, 5, 37, 54, 8, 2, 32, 22,241,101,155, 20, 25, 58, 14,119,116, 70, - 20, 20,231, 35, 37, 45, 29,154,156, 36,240, 60, 15,191,144, 70,112, 53,220,232,100,178, 96,163,149,181, 28,246, 84, 15,241,182, -223,178,161,148,139, 97,209,229, 98,223,166, 5,249, 22,125,201,231, 38,163,126,155,169,240, 86,150,171,105,231, 57, 46,191, 68, -111, 14,148, 75, 68,216,252,227,215,120,238,229,137,101, 39,165,244,207,187, 31,124, 6,240, 28,138,138,117,224, 56,174,182, 81, -209, 11, 53,188,127, 16, 30,134, 70,237, 13,150, 82,233,123,120,231,207, 43,125,126, 75,225,113, 62,161, 24,195,186,215,133,221, - 92,140,165,179,223,206, 41, 41,201,123, 76,151,127, 43,185, 86,191,196,243,253,135,143,157,118, 45,178, 81, 51,203,177,171,250, - 84,141,193, 94,101, 63,134,206,195, 62,188,118,241,215,175,158,212,218,147, 39,169, 67,154, 59, 5,135, 99,190, 49, 47, 97, 86, - 21, 77,132,178, 89, 75, 55,223,107, 30,124,111,222,186,210,215, 78, 39,156, 76, 0, 19,128, 55, 62,250, 22, 14,193, 9,193,233, -132,224,100,176, 59,153,178,166,195, 13, 8,169,183,173,248,230, 47, 77, 70,126,250,231,102, 65, 47, 47, 47,248,250,250,194,215, -215, 23,229,134,232,175, 54, 11,122,120,120, 64,173, 86,227,212,169, 83, 80, 40, 20, 80,169, 84,181,210,173, 96,174, 38,181,239, -245,204,215,143, 61,253, 10, 14,109, 91,193, 46,156,220, 61,193,152,155,176,202,229, 72,188,211,201,217,237,118, 60,213,175, 87, -122,236,181,219,251, 63,152,246,218, 19, 93, 6, 78,144,119,110, 92, 7,102,171, 19,153,105, 73, 56,190, 99,141,185, 81, 68,240, -129, 62,221, 59,166,219,237,118, 56,157,206, 26, 31,224,102,171,173, 64, 36, 81,168, 70,140, 24, 41,185,112,254,252, 86,117, 64, -163,205, 78,142,191,194, 49,161, 21,199,113, 67, 91,181,106, 10,155, 93,128,209, 88, 82, 92,219, 52,235,116,186,148,213,171, 87, - 71,188,244,210, 75,202,102,205,154, 73,146,146,146,176,112,225,194, 66,157, 78,151,226,170,198,193,147, 9, 75,196, 92,241, 45, -153, 96,123, 33,220, 93,247,120, 70,183,206, 24, 49,176, 27,126,254,245, 52,142,159,138, 65,186, 94,125, 89,239, 16,239,184,147, -158,101,105,238, 83,178,245,233,206,245, 68,155,127, 44,222, 26,208,251,253,231, 25,147, 31,204, 63, 62,211,224,250,195, 27,208, -153,236,240, 80,150,206,215, 84, 30,201, 18,113,156,203, 78,136, 3, 82, 78,197, 92,106,209, 46,170, 25, 98, 83,180,200,211, 88, - 96,178, 56, 32, 8, 12, 2, 24,124,221,101,112,147,242,200, 72, 75,129,192,108,169,181,124, 68,228,247,236,209, 83, 12,112,224, - 56, 38,150,136,197, 96, 40,157, 23, 81,161, 80,232, 3, 2, 2, 92,138, 96,217, 28, 14, 12,125,162, 35, 58,181,111,133,103, 38, - 44, 0, 0, 28, 89, 59, 29,222,106, 9,126, 94,191, 10, 25, 39, 22,175,143,236, 50,241,224,213,248,107,207, 94,139,253,109,228, -128,182,138, 54, 65,226, 44,105, 85,122,122,189,126, 43,199,113, 50,169, 84,250, 68,143, 30, 61,124,182,110,221,170,241,243,243, - 19,100, 82,105,254,211,131, 6, 10, 18,169,180,168,124,223, 51,103,206, 72, 38, 76,152,224, 94, 92, 92,156,145,155,155, 27,195, - 24,179, 87, 95, 1,108,210, 23, 60, 54,130,227,220,212, 10,101,122,231,190, 35, 66,218,119,234,232, 57,120,232,115,144,203,228, - 56,116,112, 63,150, 45,158,247,139, 62,251,198,216,218,156,201,135, 49,138, 80,171,245, 52,220,186,126,165, 56, 53,207,234, 45, -241,138,130, 68,238, 62,129,243, 12, 89, 42,146,171,103,250,183, 30,236,177,101,215, 94,196, 95,189, 10, 31,133, 29,201, 73,183, -140, 87, 47,199,126, 99,228, 36,179, 88,254,117,163,171,199,169, 44,116, 62,219,249,197, 39,188, 45, 54, 39, 78, 30,253,213, 44, - 56,132, 39, 98, 78,236, 77,170,219,168,189, 91,139,246,125,188, 11,118,174, 26, 10,224,231,154,116, 50,111,252, 57, 98, 27,214, -184, 67,234,145,163,135, 61, 3,195,155,139, 56,112,176, 89,204,200, 79,190,224, 48,230,222, 44,209,102,198,187, 52,170,182,240, - 14, 62,122,127,230, 23,147,218,183,107,167, 98,112,251, 67,196,170,220, 88, 21,148, 88,225,231, 46,131,169, 36, 31,183, 46,236, - 55, 27,243, 69,213,206, 87,230,176, 26,148, 5,121,185,247,154,210,244,185, 9,157,170,219,191, 32, 47, 87,230,176, 26,148, 53, - 63,234, 68,240, 80,201, 16,159,122,247, 94,135,118,185,164,180,239,149, 76, 34,186,215, 15,171,252, 94, 80, 3,189,164,110, 94, -184, 91,104, 6, 7, 6,193,233,128,195,110,133,174,164, 4,119,179,114,144,155,147, 11,157, 78, 3,165,218, 27, 45,218,116,128, -187,202, 13, 87,142,255, 2,198,152, 75,243, 18,218, 57, 73,227,246,157,186,203,175,166,149,246,181,114,147, 48,236,222, 56,175, - 80, 95,146,215, 93,151,149,120,171,182,247, 98,135,211,121, 56,238,250,173,230,117,131,235,115,151,147,180, 88,255,253, 87,176, -150, 69, 50,237,118, 39,174,102, 24,144, 93,100, 68, 70,242, 13, 38, 56,157,135,241,136, 83,165,193,146,202, 36, 10, 15,159, 16, -124,246,194, 40,124,243,205,183, 72,189,115, 23,203, 62,155,146, 83,162,203,239,173,203,186,149,232, 98, 45,176,111,249, 92, 25, -134,156,155,243,199,126,147,154,185, 43,182,136, 55, 89, 89,181, 29,120,220,252,195,209,125,236,194, 3, 38, 93,145,204,105, 49, -138,119,175, 31,187,177, 50,205, 82,199, 12,235,231, 83,135, 67,173, 16,131,227, 56,148, 55, 11, 46,255,108, 60,148,242,210,182, - 99,147,197,129, 81, 83, 22, 97,253,162,183,193, 0,188,240,220,105, 99, 85,199, 89,161, 9,175,110,122, 90,222,221,190,131,166, - 30, 49,219,228,150,129, 67, 94,186,216,174, 93, 59,141, 66,161,128, 66,161,128,135,135, 7,188,189,189,225,229,229, 85, 99,218, -171,156, 68,180,194,104, 65,158,231,193,243, 60, 84, 42, 21,212,106, 53, 84, 42, 85,181,154, 85,154,171,158, 79, 47,239,243,204, -171, 56,180,109, 37,187,112,114,247,107,198,220,132,239, 93,189, 70,101,205, 58, 87,134, 14, 29,218,114,194,132, 9,210,153,211, - 38, 28,248,245,224,241,196,205,123, 86, 14, 42, 46,214,132, 50,198,224,229,233,121,103,248,160, 46,187,123,119,109,159,126,228, -200, 17, 97,227,198,141, 22,142,227,226,107, 58,206,130,188,188,181, 71, 14, 31,253,164,123,207, 94, 88,245,227,198,158,215,174, -223,232,153,148,116, 11,161,225,145,168, 31, 17, 5, 35,231,141,163, 39, 78, 65,175,201, 91,235,202,113,222, 23,197,226,138,139, -139,127, 27, 62,124,120,191,211,167, 79,243,195,135, 15, 55, 22, 20, 20,156, 41,175, 55, 85, 21,189,170,168,249,219,183,131,243, - 1,172,173,215,107,204, 47,119,109,154, 55, 1,204, 11, 11, 15,195,241, 83, 49,136, 57,125,238,219, 2,101,216,172,177,163,198, -140,175,247,180,232,213,167, 59,215, 19, 5,120, 43,241,211,202,133,162, 93, 49,105,139,210, 10,157,171, 0,124,230,202, 53,186, -247,192,208,217,208,181,169, 15,236, 78, 6,129,149,222,104,221,221, 36,149,222,112, 43,211, 20, 91,229, 99, 95,155, 48, 33,169, - 69,171, 54,111,141, 26,243,154,180, 77,100, 40,206,223,214, 0, 28, 7,159, 32, 21,178,179,179,113,114,203, 74, 71,241,221,155, -223,138, 68,194,167,181,201, 75, 69,105,177, 13, 43,236, 55,190,160,160, 0,199,143, 31, 71,185,177,242,247,247,175,212, 96,221, -175, 89,152,155,117,230,179, 47, 87,116, 29, 55,122, 8, 6,246,106,142, 19, 23,146, 96, 45,155,111,169,124, 72,120, 74,204,119, -178, 55,135, 71, 90, 39, 13,109, 84, 98,178,203,210, 62, 74,213,158,172, 56,202,245,126, 77,198,152,149,227,184, 93, 9, 9, 9, -221, 90,183,110, 93,111,239,222,189, 69,215,206, 29,152, 92,241, 56,166, 78,157,170,254,230,155,111,148,140,177, 51, 22,139, 37, -217,165,180,243,248,233,210,197,139,190, 54,187,128, 83,231,174, 52,237,211,181, 13, 4, 6, 92,184,112, 1,171,126, 88,101,142, -143,187,188,192,144, 27,244,105, 85, 3, 68,170, 58,159,206,191, 48,138,176, 92,147,177,227, 14,117, 96,147,111,207,156, 58,241, -129, 60,164, 29,154, 60, 57,227,233,187, 87,118, 61, 29,212,172, 63,252, 34,187, 32, 43,110, 23,206, 28,216,176, 87,112, 56,166, -187, 9,124,186, 33,255,166,193,213,242, 94,142, 92,161,252, 79,179,182, 61,145,145,158,134,212, 91, 87,215,154, 10,111,101,169, -131,154,172,205,202, 76,127, 45,162,121, 87,156, 62,240,243,228,170, 12, 86, 77,121, 62,212, 95,177,114,239,158, 93, 35, 50, 51, -191, 11, 50,152,204,114,198,152, 89, 46, 19,231,168,121,221, 38, 87,143,147,177,235, 54,149, 79,253,161,207,141,122,237,215,101, -203, 22, 75, 2,189,148,200, 41, 54,163,196,100,131,206,104, 3,207,113,104, 24,162,130, 81, 87,132, 19, 91,190,180, 91,245,197, -195, 25,187,109,171, 74,179,116, 61, 65,246,198,212,137,199, 32,243, 12, 13,137,232, 51,163,218,232,156, 46, 43,110,208,212,137, -187, 27, 51,198,250,168, 3,155,232,244,185, 55, 63,172, 42,237, 28, 87, 90,190, 71,246, 14,133,205, 81, 58,127,152, 67, 0,156, -130, 80, 22,213, 3,216,189,118,123,174,134,180,115,194,166, 95,207, 32, 43, 87, 3,147,213, 14,139,213, 1,155,221, 9, 94, 36, -130,151,183, 23,162,234, 71,195,211,203, 3,185, 57, 89,136, 57,178, 11,137,113, 39,206,112, 12,179,140,121,137, 71, 92,185, 70, - 82,133, 87,227,224,144, 32, 62,187,196, 10,133, 76,132,203, 39,246,218,236, 86,203, 2, 87,204, 85,101,154,154,194,162, 69,111, - 77,123,231,133, 53,171,127, 12,106, 25,225,129,204, 2, 19, 50,243,205,208,153,237,101, 6, 76,128, 69, 95,128,184,163, 63,230, - 56,205,186, 69,255, 90,131, 37, 56,156,214,132,219,201,152, 62,235, 75, 36,167,165, 99,217,220,119,114,245,181, 48, 87,149,177, -122, 82,253,159,107,247,141,178, 41, 73, 62, 77,171,190,190,125,127,179, 32, 19, 32, 48,134,221,231,114,238, 53, 11, 10,101, 61, - 42, 99,147, 52,181,106,194,139, 75,208,109, 48,153,114, 61,111,222, 94, 80, 12, 0, 34,145,232,222, 86,222, 87,202,108, 54, 91, - 31,164, 89,240,254, 14,237,130, 32,192,195,195, 3, 10,133,162,214, 77,143,170,192,198, 35,218,247,122,230,235, 62,131,199,225, -240,246,239,217,133, 19,187, 38, 26,243, 18, 86,214,186, 15, 66,113,241, 53,142,227,110, 45, 88,176,160,205,170, 85,171, 34,166, - 77,155,150,188,238,235, 79,150, 1, 64, 97, 97, 33, 0, 32, 54, 54,150, 77,156, 56,209, 98, 54,155, 83,138,139,139, 47, 49,198, -106,108, 58, 48,229, 43,231,172, 90, 62,175,197,157,187,217, 67, 34, 91,116,128,127, 68, 7, 4, 53,236,136, 98,157, 13,231,111, -103, 33,249,198, 17,220, 56,181,101,175, 81,237,248,164,182,199,220,186,117,235, 80,158,231,235,235,245,250,160,102,205,154,181, - 86,169, 84,177,173, 91,183,142, 22,139,197,153, 23, 47, 94, 76,171,141, 86,218,241, 53,150,122,189,198, 44, 77,215,185,247, 78, -206, 49, 70,167,235,220, 99,141,114,207,183,243,142, 44,177, 4,246, 91,176,136,217, 10,174,109,254,177,100,235, 79, 43, 23,138, - 70,141,159,234,188,170,245,126, 83,172,144, 29,154,251,114,203, 90, 52, 63,241,217,147, 94,122,230,247,105, 26,202, 34, 87,101, -175, 93, 10,199,107, 52, 87,180, 0,222, 83,132, 52,255,250,234,155, 19, 62,107,213,190,235,139, 61, 6, 12,231, 29, 82, 53, 14, -108,255,142,165,196, 29,221, 44,102,206, 15,140, 46,204,222, 95, 99,179,143,213, 90,163,185,170, 52,242,114, 71,213,107,243,198, - 31, 94,222,186,125,219,220,193, 79, 63,227,187,252,163,231,241,229,138, 29, 80, 41,228, 96,130,128,225,143,133, 13,187,177,177, -255,160,208, 64,183, 58, 91,143,101,158,124, 99,241,213,247,140, 70, 91, 98, 77,163, 92,203, 12,243, 41,119,119,247,252,110,221, -186,117,146,203,229, 92, 65, 65,129, 56, 32, 32,192,225,233,233,105,205,204,204, 52, 90, 44,150,173,140, 49, 67,109,210,105,179, - 11, 72,205, 53, 99,231,182,173,184,114,238, 8,110,220, 72,208,221,184,126,227, 43, 78,204, 22,235,115, 18,139, 30,228,220, 9, -149,142, 34,100,181, 30, 69,104, 16, 41,230,196,238,249,178, 87,212, 99,147, 59,251, 54,232, 10,239,240,210, 49, 58,218,204,171, -184,115, 97,243, 78, 93,150,244, 57,198,174,218, 31,244, 26,135,212,141,136, 98, 34, 25,126, 59,254, 43,152, 32,124, 11, 0, 76, - 16,190,141, 61,189,247,181,142, 79,190, 10,159,128,122,173,203,199,206,215, 86, 91, 42,230, 13,251,182,174,217,158,154,154,138, -155, 55,111,226,246,237,219, 40, 42, 42,194, 79, 63,165,214,234,250, 24,138, 82, 15,169,125, 35,251, 63,251,252,200,221,195, 70, -140,118,139,136,106,201, 55,174,235, 13, 95,181, 24, 9,183,211,144,120, 49, 78, 72, 56,191,215,108, 43,201, 27,108, 44, 74,173, -210,240,169,252,155, 5,114, 60,155, 94,190,182, 96,231,206, 93, 27,191,243,249,220, 78,190,254, 1,149,222,199, 11,243,243,100, -239,190,177,171,113,204,217,223, 92, 90,139, 80,112, 58, 11,199,191, 60, 92, 16,149, 46,228,137,123,113,105,174,244, 98,151, 86, -162, 74,255,207, 4, 71,141, 17,251, 49, 67,186,195, 33, 8, 48,152,108, 40, 49, 88,160,213,153,145,157, 87,136, 43,113,113, 56, -177,123, 23,146, 18,174,164,216,173,214,131, 60,207,109, 49,230, 36,156,168, 93,203,146, 56,194,215,199, 7, 41, 69,122,184,201, -196, 72, 75,188,104, 49,148,104, 55, 60,104, 62, 50, 22, 36,102,171, 2, 27,247, 27, 62,124,196,254,199,250, 63,237,217,190, 75, - 95,165,159,135, 23,164, 98,134, 91,169, 89,184,116,102,191, 33,249,202,201, 18,187, 85,255,196,195, 88,165,229,127,214, 96,149, -232,242,123,191, 50,118,194, 1, 94, 44,146,131, 9,102,163,177,248,137,191, 98,174,254, 91, 48,230,204,124,249,133, 33,127,168, - 11, 56, 4,166,120,225,185, 3,166,138,117, 3,187,147, 41, 95,120,238,140,177,244,198, 81,117,135,189,123, 77,120, 63, 31,202, - 76, 79, 47,188, 80, 84,100, 57,246, 87, 71,246, 85, 92, 91,176,154,209,130,134, 38, 77,154,220, 51, 85, 34,145, 8, 78,167,211, -229, 27,144, 84,174, 24,247,216,211,175,112,135,119,124,207,206, 31,223, 49,201,152,151,184,226,193,207, 41,179, 1, 56,199,113, -220,213, 15, 62,248,160,125, 96, 96, 96,224,199, 31,127,236, 86, 82, 82, 34, 89,190,124,185,185,160,160, 32,167,164,164, 36,134, - 49,102,114, 93,243,146, 29,192, 80,117, 96,163,222,108,235,247,143,123,249,213,233,231,233, 95,183,129, 38,255,110,138, 54, 63, -235, 32,128,195,101, 19, 60,214,138,232,232,232, 72,158,231,135, 3,104,161, 82,169, 26,170,213,106, 57, 99,172, 9,199,113,215, - 4, 65,136,107,214,172,217, 30, 0,181,186,126,105,199,215, 88,122, 76,250, 97, 99,145, 81,144, 90,121,233,198,180,227,107, 44, - 0,144,123,112,154, 17,192,206,192,222,211,135,238,138, 73, 91,118,173,216,115,114,222,177, 57,187,106,123,204,154, 59,151, 27, - 62,172,252,111,202,186,150, 9,224,101, 85, 96,227,133,241,177, 49, 51, 57, 6,137, 19,142,217,198,220, 91, 23, 31,134,190, 68, - 34, 49,215,169, 83,167,210,209,130,114,185,220, 92,253, 53, 63,238, 0,176,138,227,122,253,184,237,151, 31, 95,222,177,107,231, -220, 30,125, 6,251,186,213,173,139,250, 1, 28,126,156,222,118,242,145,216,252,243, 79,191,115,242,155,228, 44,115, 28, 99,172, - 86,253, 93,116, 58, 93, 34,199,113,197,122,189,254, 25,198,216, 29,142,227, 66,139,139,139, 47,219,237,246,248, 90, 27, 1, 1, - 35, 59,119,238,240, 19,199,113, 98,230, 16,230,199, 72, 68, 27,205,217, 55, 50, 31,196, 80, 84,164,101,125, 15, 76,249,120,105, -219, 6, 13, 27,181, 45, 95,139,176,121, 61,119, 76,120,111, 97,219,122, 17, 81,109,127, 95,159,176,250, 81,132, 44,235,146,137, - 11,108,249,120,194,193, 5, 31,249, 38,157,153,164,240,169,171, 54, 20,164, 21, 21,167, 93, 92, 96,204, 11, 92,240, 32, 19, 75, - 86, 36,245,246,181,197,171, 22,188, 55, 45,251,110,202, 42, 67, 94,226, 85, 0, 48,228, 37, 94, 85, 6, 54,250,168, 32, 39,115, - 90, 97, 94,242,130, 7, 61, 23, 6,131, 33,107,195,134, 13, 94, 93,187,118,229, 3, 3, 3,145,159,159,143, 99,199,142, 9,130, - 32,220,173,173,150,190, 48,249, 24,199, 53,240, 89,187,226,235,249, 82,149,251,147, 14,135, 35,132, 49, 64, 44, 22,103, 91,141, - 37,251,117,188,234, 29, 86,148, 90, 67,190, 20, 56, 0,124,249,218,130,130, 32,112,243,151,253,152, 38,113,115,175,180, 73,213, -110,214, 41, 5, 65,112,121, 45,194,226,244,139, 13, 30, 86,249,230, 24,155,213,186, 93,167, 25,118,187,205,140,210,254, 96,102, - 0,102,198, 80,200,243,220, 9,145, 96, 63,160,253, 11,149, 40,142,131, 7,227,196,112, 87,136,193,129,131, 94, 91,196,106,211, -231,170,210,235,157,155,112,141,227,122,133,239,179,254,242,210,209, 67,123,159,115, 58,157,245,203,114, 78,170,197,100,216,172, -207,246, 94,203,216, 5, 7,254, 5,136,171, 14,137,222, 74, 4, 16,254, 79, 79, 64, 97,202,249,118, 15, 83, 47, 59,183,232,199, -254,131,167,177,212,180,188,243, 25, 57,150,181, 21,151,191,249,171,154,119,238,228, 31, 43,107, 22,180,252, 57, 34,241, 96,163, - 5,239,213,190,205,166, 47,150,124, 48, 2,102,147, 97,157, 49, 47,241,199,135, 99, 94,153, 9,192, 9,142,227, 60, 39, 77,154, - 20,173, 86,171, 37, 5, 5, 5,231, 24, 99,218, 7,213,212,231, 38, 30, 3,112, 12,192,244,135,113,140,177,177,177,201,109,218, -180, 89,207,243,124,125,198, 88, 32, 99,204,179,204,192, 22,136,197,226,187,215,175, 95,191,251, 64,105,183,184,239,211, 91, 69, - 81, 14,230,189,255, 79,166,195, 55,224, 80,122,145,243,123,145,202,237, 31,211,135,192,144,155,112, 13,192,179, 15, 91,183,186, -121,174, 92,207, 71,191, 27,173,227,191,174,121,153,151,121,206,238,211,216,108,236,247,214,221,207, 78,197,231,159, 99,140,233, -254, 66, 30,205,151,201,100, 38,142,227, 66,165, 82,169,201,106,181,198, 61,208,249, 43, 53,247,254, 15,243,220, 9,224, 46,182, -109,219,174, 86,251, 87,155,214,220,120, 35,128,233, 92,179,102, 31, 43,147, 46,120, 27, 11,252, 10, 25, 75,120, 40, 15, 42,125, -206,205,207, 80,214,204,253,135,136, 68,110,226,108, 0,179,255,138,246,133, 11, 23,118, 47, 88,176, 64,187,108,217,178, 48,167, -211,169,180, 90,173, 70,147,201,148,154,153,153,249,219,131, 93,243, 36, 43,128, 55,203,182, 7,136,178,220,204, 81, 7, 54, 90, -218,165,115,151, 55, 75, 43,230,108,105,234,137,165, 83,170,251,142, 58,176,145,169,226,254,213,173, 69,248, 48,209,231, 37,126, - 11,224,219,255, 94,132, 66,200, 31, 57,236, 25,160,108, 66,109,193,225,200,127, 40,178,165,101,254, 7, 60,192,226,229,143, 20, -172,108,121,132,255,198, 6,160, 47,105,146, 38,105,146,102, 37,251,242,116, 62, 73,243,239,212,116, 11,110, 26,234, 22,220, 52, -212,213,239, 87,182, 63,157, 79, 6,218,170,222,196, 32, 8,130,248,255,175,216, 9,116, 22,136,191, 19, 83,214,245, 59,255,205, -253, 9,130, 67,233,170,212,149,221, 0, 93,110,254,224, 56,174,239, 3,220, 96, 15,147, 38,105,146, 38,105,146, 38,105,146,230, -191, 75,179, 38,237,218,248,143,127,122, 77,146,154, 8, 73,147, 52, 73,147, 52, 73,147, 52, 73,147,154, 8, 31,226,198,131, 32, - 8,130, 32, 8,130,120,168,144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8,130, - 12, 22, 65, 16, 4, 65, 16, 4,241,224,112,140, 49,148, 45, 49,197, 1,248,195,107,130, 32, 8,130, 32,136,255, 23, 67,242,136, -121, 17,190, 98,194,232,242, 18, 4, 65, 16, 4,241,119,154,172, 71, 37, 45,247, 12, 22, 99,140, 35,147, 69, 16, 4, 65, 16,196, -223,197,163,228, 69,248,251, 19, 70,151,151, 32, 8,130, 32,136,191,211,100, 61,114, 6,139, 32, 8,130, 32, 8,130,248,235,112, -101, 83,222, 19, 4, 65, 16, 4, 65, 16, 15, 9,138, 96, 17, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248, 23, 27, 44, -142,227,250,146, 38,105,146, 38,105,146, 38,105,146, 38,105,146,193, 34, 8,130, 32, 8,130, 32,200, 96, 17, 4, 65, 16, 4, 65, -144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248,155,224, 0, 84, 58, 18, -128, 49,118,216,101,145, 7, 24, 77, 80,147, 62,105,146, 38,105,146, 38,105,146, 38,105, 62,122,154, 53,105,215,198,127,252,163, - 97,140,253,215, 54, 0,125, 73,147, 52, 73,147, 52, 73,147, 52, 73,147, 52,255,109, 27, 53, 17, 18, 4, 65, 16, 4, 65, 60,100, -200, 96, 17, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130, 32,131, 69, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8, -130,120,112,184,178,209, 0,224, 56,142, 49,198, 56, 58, 37, 4, 65, 16, 4, 65,252, 45,166,228, 17,242, 34,124,197, 4,113, 28, -199,232,242, 18, 4, 65, 16, 4,241,119,153,171, 71,197,139, 80, 19, 33, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136, -127, 54,212, 7,139, 32, 8,130, 32,136,127,134, 41,121,132,188,200, 61,131, 69, 16, 4, 65, 16, 4, 65, 60, 28,168,137,144, 32, - 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16,196,191,216, 96,113, 28,215,151, 52, 73,147, 52, 73,147, 52, 73,147, 52, 73,147, - 12, 22, 65, 16, 4, 65, 16, 4, 65, 6,139, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, - 8,130, 12, 22, 65, 16, 4, 65, 16,196,223, 4, 7,160,210,145, 0,140,177,195, 46,139, 60,192,104,130,154,244, 73,147, 52, 73, -147, 52, 73,147, 52, 73,243,209,211,172, 73,187, 54,254,227, 31, 13, 99,236,191,182, 1,232, 75,154,164, 73,154,164, 73,154,164, - 73,154,164,249,111,219,168,137,144, 32, 8,130, 32, 8,226, 33, 67, 6,139, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, - 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, 16,196,131,195, 49,198,192,113, 28, 43,123,223,139, 49,118,130, - 78, 11, 65, 16, 4, 65, 16,255,175,134,228, 17,243, 34,226,242, 23,140, 49,174, 44,113, 28, 93,102,130, 32, 8,130, 32,254,191, -121,148,188, 8,127,159,115,236, 69,151,151, 32, 8,130, 32,136,191,131, 71,201,139,252, 33,130, 69,151,150, 32, 8,130, 32,136, -191,139, 71,201,139, 80, 39,119,130, 32, 8,130, 32,136,135, 12, 87, 54,229, 61, 65, 16, 4, 65, 16, 4,241,144,160, 8, 22, 65, - 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136,127,177,193,226, 56,174, 47,105,146, 38,105,146, 38,105,146, 38,105,146, 38, - 25, 44,130, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, - 16, 4, 25, 44,130, 32, 8,130, 32,136,191, 9, 14, 64,165, 35, 1, 24, 99,135, 93, 22,121,128,209, 4, 53,233,147, 38,153, 7, - 10, 66, 0, 0, 32, 0, 73, 68, 65, 84,105,146, 38,105,146, 38,105,146,230,163,167, 89,147,118,109,252,199, 63, 26,198,216,127, -109, 3,208,151, 52, 73,147, 52, 73,147, 52, 73,147, 52, 73,243,223,182, 81, 19, 33, 65, 16, 4, 65, 16,196, 67,134, 12, 22, 65, - 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, 65, 16, 4, 65, 16,100,176, 8,130, 32, 8,130, 32,136, 7,135, - 43, 27, 13, 0,142,227, 24, 99,140,163, 83, 66, 16, 4, 65, 16,196,223, 98, 74, 30, 33, 47,194, 87, 76, 16,199,113,140, 46, 47, - 65, 16, 4, 65, 16,127,151,185,122, 84,188, 8, 53, 17, 18, 4, 65, 16, 4, 65,144,193, 34, 8,130, 32, 8,130,248,103, 67,125, -176, 8,130, 32, 8,130,248,103,152,146, 71,173, 15, 22, 0, 80, 31, 44,130, 32, 8,130, 32,254, 78, 30, 37, 47,114, 47,130, 69, - 16, 4, 65, 16, 4, 65, 60, 28,168, 15, 22, 65, 16, 4, 65, 16,196,255,146,193,226, 56,174, 47,105,146, 38,105,146, 38,105,146, - 38,105,146, 38, 25, 44,130, 32, 8,130, 32, 8,130, 12, 22, 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32, 8, 50, 88, 4, - 65, 16, 4, 65, 16, 4, 25, 44,130, 32, 8,130, 32,136,191, 9, 14, 64,165, 35, 1, 24, 99,135, 93, 22,121,128,209, 4, 53,233, -147, 38,105,146, 38,105,146, 38,105,146,230,163,167, 89,147,118,109,252,199, 63, 26,198,216,127,109, 3,208,151, 52, 73,147, 52, - 73,147, 52, 73,147, 52, 73,243,223,182, 81, 19, 33, 65, 16, 4, 65, 16,196, 67, 70, 92,217, 63, 37, 29, 63,207,117, 56, 28, 1, - 0, 32, 22,139,243,236,231, 63, 12,174, 78, 68, 2,244,113, 0,223,151, 9,142,179, 51,118,168, 18,205, 67, 14,135,195,187, 76, -179,216,126,254,195,254,213,106,118,152,125,224, 15,251,159,251,224,241, 74,226,139, 34, 73,135,217, 89,247, 29,107, 72, 45,194, -119,206,255,143,227,252, 95,209,252, 55, 35,237,244,121,174,221, 94,154,143, 36, 18,113,158,237, 92,245,249, 72,218,113,118,214, - 31,246, 63,251, 65, 96,117,154, 74,133,188,176, 65, 29,255, 69,213,105, 38,103, 21,188,109, 48,154,125,171,211,172,109,217, 12, - 13, 14,238,227, 44, 43,155, 34, 96,220,157,172,172, 67,255,164,188,196,113, 92, 59, 0, 31, 2,240,168,240,239, 56,198,216, 91, -148, 43, 9,130,120,228, 12,150,195,225, 8,184,180,125, 38, 12, 22,160,207,232,217, 1,145,131, 87,252,244,167,125,204,197, 50, -205,181, 77, 45, 69,246, 18,111,127,177,205, 35, 43, 43,139, 43,187, 97,126, 15, 32,172, 18, 77,239, 75,219,103,194,104, 5,122, -140,152,229, 29, 6,120,228, 75,165, 83, 21, 42, 85,111,147,201,212, 28, 0, 20, 10,197, 53,147,193,112,204,223,102, 91,120,255, -254, 85, 37,160,226,177, 62,246,226,236,128, 38,131, 87, 76,118, 10,130,236,238,133,239,122,152, 11,110,137, 37, 14,203,242, 25, -192,190,153,128,211,149, 19,242,135,223,125,238,125, 95, 9,240,152,204,205,173,181,151,183,119,119,129,177,166,130, 32,112, 78, -135,227,122,137, 86,123, 74,112, 56,174, 56,172, 6,223, 75,187,230, 10,213, 29,231,253,105,121, 14, 16,111, 7,134,169,212,234, -222, 34,137,164, 11, 0, 56,237,246,223, 12,122,253,177, 33,192, 22, 87,210,238,234,249,121,208,253,255,109,216,237,142,128,148, - 3, 51, 97,177, 3,209,207,206, 13,104, 53,114,237, 79, 0, 96,205,187, 18,168,191,181,171, 35, 0,168, 26, 12, 60, 39, 15,138, -206, 5, 0,113,122,118, 64,226,158, 15, 96,177, 3, 77, 7,206, 10,168, 73,115,204,199,191,248,190, 59,126,168, 28, 0, 14,110, -253,186,209,209,109,223, 14, 0,128,199,134, 78,220,215,239,217, 55, 18, 1, 96,254,202,109,190, 63,207,125,190, 90, 77,215,202, -166, 86,170,189,181,167,161,181, 36,219, 43, 84, 37, 14,186,117,235, 22, 15, 0, 33, 33, 33, 46,149,205,186,128,103, 54,240, 58, - 47, 18,117,111,208,176, 97, 52, 0,150,156,148, 20,235,116, 56, 78, 7, 3,203, 31,114, 94,154,204, 24, 27,116,159,233,162, 12, - 73, 16,196,163,105,176, 0,192, 96, 1, 78,220, 6,122,118,106,133,241, 35,159, 84, 87,252,108,203,138, 89, 97,183, 46,236,108, -242,195,218,133,124,171, 86,173,144,146,146,226,210,143, 25,173,192,241, 91, 0, 52, 55,220,139, 85,170,164,197, 95,126,233,241, -248,227,143,139, 67, 66, 66,192,113, 28,114,114,114, 58, 29, 62,124,184,221,148, 41, 83, 94,131,230, 70,177,209, 10,221,241, 91, - 53,235,150, 31,107,243, 70,245,240,225, 27,207,123, 2,192,140,209,203,219, 93, 72,200,245, 73, 74, 74,234,243,222,123,239, 21, -138,142, 29,251,214, 15, 88,147, 11,220,113,229, 56,215,237, 62,231,230,153,189, 49,114,212, 27,111,108,109,216,176,161, 58, 60, - 60,156,115,119,119,135, 72, 36, 66,113,113,113,216,213,171, 87, 7,156, 63,127,222,112,248,196,247,178,139,231,159, 78,206,115, -235,104,118, 41,237,166, 44,183,131,238,238,215, 94, 28, 50,164,238,243,207, 63,239,214,160, 65, 3, 0, 64, 82, 82, 82,212,150, - 45, 91, 70,108,221,186,245, 99,152,178, 28, 70, 43,204, 53,165,253,158, 38, 0, 55,160,139, 87, 64,192, 40,145, 68,210,220,225, -112,212, 41,139, 46,220,117,218,237,215, 52,121,121, 27,238,223,159,248, 51, 22, 59,112, 35, 27,232,219, 61, 26, 47, 14,237,171, - 2,128,247,134,127,222, 41, 61,245,182,212,106,181,162, 81,227,166, 93, 63,155,187,232, 0,120, 30,235,183, 29,190,183,191, 43, -154,113, 55, 82, 48,243,179,197,200,138,223,210,201,169,189,221, 91, 87,162, 21, 1,128,135,167,231,208, 45,155, 54, 30, 11,105, - 57,236,236,237, 2,155, 75,154,213,149,205,253,155,190, 10,206,188,122,172,217, 55, 7, 87, 75,194,194,194, 16, 31, 31, 95,187, -178,169, 77,112, 23,130,131,175, 47,124,231,157,160, 30, 61,122, 64,173, 86, 67, 44, 22,195,225,112,244, 61,125,250,116,223,153, - 51,103, 78,132, 54,193,224,106,217,116,129,133, 28,199,245, 30, 51,126,114,240,147,207, 12,195,208, 39,186, 82, 70, 36, 8,226, -209, 53, 88, 98,177, 56,239,241,151,230, 4,116,239,216, 2, 23,174, 36,106,211, 50,178,245,229,159, 21, 93,219,210,232,153,174, -117,154,157, 60,121, 2, 22,139, 5,191,253,246, 27,174, 92,185,130,212,212, 84, 76,152, 48,193, 34, 6,198, 85,161, 89,220, 99, -196, 44,111,104,111,169,163,100, 9,245, 15,223,188, 41, 50,155,205, 56,121,242, 36,138,139,139, 33,147,201, 80,183,110, 93,244, -235,215, 79,124,243,230, 77,159, 62,143, 63,225,217,227,137, 23, 82,224, 25,165, 23,139,197,197, 85, 38, 64, 44,206,235, 51,122, -118, 64,179,168,122, 72, 74,203,210,126, 56,247, 7,189, 32, 48,113,114,106,186,237,196,137, 19,136,142,142,198,161, 67,135,124, -139,138,138, 62, 90,190,124,249,135,146, 47,190, 89,106,183, 22, 78,171, 70,175,184,199,136, 89,222,190,121,155,195,143,238,223, - 33,189,118,237,154,244,187,239,190, 67, 97, 97, 33,100, 50, 25,188,188,188, 16, 20, 20,132, 70,141, 26,113, 51,102,204, 80, 15, - 28,120, 13,255, 25, 55, 44,220, 22,249,106, 66, 85,199,121, 47,237,250,116,165, 95,201,193, 6,219,126,253,149,239,214,173,219, - 31,170,233, 17, 17, 17,232,223,191,191,219,168, 81,163, 26, 60, 63, 98,164,208,227,169, 49, 73, 80,135, 27,107,212, 52,220, 81, -248, 26, 99, 66,250,142, 24,177,107,214,172, 89, 94, 65, 65, 65, 80,169, 84, 0, 0,173, 86, 91, 55, 45, 45,173,211,199, 31,127, -252,236,185,184, 77,226, 30, 3,239,100, 65, 21,106,170,238,124,254, 91,145, 72,196,121,229, 81, 35,119,149,162,248, 78,102,174, - 1, 0,172, 86, 43,172, 86, 43, 44, 22, 11, 38, 77,156, 32, 26,247,108,135,134,225,221, 39, 95, 78,189,155, 91,212,244,240, 89, -159,242,239,214,164, 41, 54,166,106, 52, 25, 71,198,205,124,231,157,160,192,192,223, 91,254,214,175, 91, 39, 42, 42, 42,234, 59, -115,230,204,102, 76,217, 75,211,116,224, 44,175,234, 52,171, 43,155,154,196, 95,235,127,246, 70,255,214, 43,230,238,129,211,233, - 68, 76, 76, 12, 78,158, 60,137, 69,139, 22,177,125,251,246,105, 61, 84,170, 26,202,102,130,123,183,224,156,200, 47,190,216,202, -201,229,114,236,220,185, 19, 55,111,222, 4,207,243,104,213,170, 21, 94,124,241, 69,244,237,219, 55,104,252,248, 9,172,199, 19, -195,147,225,217, 88,247, 87,242, 18,199,113, 60,128,201,239,207,252, 34,120,244,171,175, 99,254,103, 51,200, 96, 17, 4,241,232, - 80, 54, 26,128,149,109, 61, 25, 99, 96, 0, 31, 49,120,197,207,155, 47, 10,191, 70, 12, 94,241, 51, 3,120, 6,240, 30, 64,189, - 54,109,218,216, 53, 26, 13, 59,127,254, 60,155, 52,105,146, 97,233,210,165,199,126,253,245,215, 45, 14,155,109, 85, 72,112,240, - 2, 6,240,149,246,168, 7,248,112,192, 83,169, 84,230,103,100,100,176,189,123,247,178, 79, 62,249,132,109,216,176,129,237,219, -183,143, 29, 62,124,152,237,219,183,143,253,252,243,207, 44, 46, 46,142, 37, 38, 38, 50,149, 74,149, 31, 14,120, 86,163, 41, 98, -128,168,209,224,239,166,109,189, 96,159,213,120,240,138, 41, 12, 16,121, 3, 77,218,180,105,227,220,178,101, 11, 91,191,126, 61, - 91,187,118, 45,139,139,139, 99, 5, 5, 5, 76, 44, 87,229,151,127,175,170,227,100, 0, 95,167, 78,157,124,141, 70,195, 66, 67, - 67,153, 76, 38, 99,129,129,129,172, 81,163, 70,172, 83,167, 78,108,192,128, 1,108,228,200,145,236,163,143, 62, 98, 26,141,134, -185,185,185,229,150,127,175, 42,205,104, 64,161, 82,169, 50, 46, 93,186,196,170,194,100, 50,177,130,130, 2,118,224,192, 1,166, - 82,169, 50,162, 1, 69,117,154, 10,160,109,203,150, 45,243, 11, 10, 10,152,205,102, 99, 25, 25, 25,236,234,213,171,236,230,205, -155, 44, 35, 35,131,153, 76,166,123,218,137,137,137, 44, 50, 50, 50, 95, 1,180,173, 82,243,223,188,149,231,137,251,182,176,192, -192, 1, 65, 65, 65,166,173, 91,183,178,187,119,239,178, 31,127,252,145,241,192,231,127,218,183, 26, 77, 25,208,175, 91,183,110, -206,152,152, 24,118,249,242,101, 54,125,250,116,214,191,127,127,246,196, 19, 79,176,153, 51,103,178,204,204, 76,150,153,153,201, - 6, 12, 24,224,148, 1,253,106,202,159,149,149, 77, 79, 32,108,224,192,129, 38,155,205,198,146,147,147, 89,243,230,205, 51, 69, -192, 40, 21,208,172, 39, 32,175, 41,127,214, 1,188,131,131,131,179, 99, 98, 98,216,182,109,219, 88,120,120,120,190, 8, 24,227, - 1, 68,120, 0, 17, 34, 96, 76, 68, 68, 68,126, 76, 76, 12, 43, 44, 44,100, 97, 97, 97,217,117, 0,239, 7,205, 75, 40,157,131, -111,245,251, 51,191, 96, 9,153, 6,246,254,204, 47, 24,128, 12, 86,250,225, 33,202,147,180,209,246,239,219,254,228, 69,254,199, - 55,113, 5,163,197,113, 28,199, 80, 58, 55, 86,165,152, 68,162, 57,243,231,207, 23,155,205,102,252,240,195, 15,186, 23,134, 15, -223,230,229,229,229,144, 72, 36,224,248,154, 7, 36,230,203,229,111,126, 57,127,190,151,213,106,197,197,139, 23,209,174, 93, 59, -200,229,114, 72,165, 82, 72, 36, 18, 72, 36, 18, 4, 7, 7, 35, 47, 47, 15,205,155, 55,199,187,239,190,235, 57,111,206,156, 55, - 97,177,124, 86,157,174, 32, 48, 49, 0, 56, 5, 65, 38, 5,198,183,110,223,126,193,140, 25, 51,120, 15, 15, 15,152,205,102, 88, - 44, 22,220,188,121, 19,190,190,190, 80, 42,148, 98, 88, 12, 53, 30, 43,207,243,188, 90,173,198,209,163, 71,177,114,229, 74,164, -166,166, 34, 59, 59, 27,238,238,238,104,222,188, 57,154, 54,109,138,158, 61,123, 34, 57, 57, 25,156, 11,157, 70,174,139,197,175, - 79, 26, 55, 46, 32, 58, 58,186,210,207,205,102, 51, 52, 26, 13,180, 90, 45,234,214,173,139, 97,195,134, 5,108, 92,191,254,117, - 56, 28, 11, 43,219,223, 23, 8,170, 27, 21,181,235,252,249,243,126,140, 49,172, 95,191, 30,122,189, 30, 86,171, 21, 60,207,195, -205,205, 13,222,222,222,120,236,177,199,224,239,239,143,168,168, 40,252,242,203, 47,126, 3, 6, 12,216,227,155,151,215,182, 16, -200,162,234, 69,205,164,231,230, 30,236, 7,248,141, 26, 57,114,223,149,184,184,238,163, 70,141, 66,110,110,238, 12,201,244,233, - 26, 59,176,184,166,239, 55, 6, 60,125,130,131,215,124,241,197, 23,124, 78, 78, 14,166, 78,157, 90,144,149,158, 62,221, 19, 56, - 5, 0, 71,246,239,239,190, 97,195,134,121,235,215,175,247, 91,183,110, 29, 31, 29, 29,189,166,113, 70, 70,243, 4, 64, 91,155, -227,212, 1,147,151, 44, 89,226,102, 54,155,241,248,227,143, 39,187,165,166,182,118, 0, 38, 87,191,159, 13,188,190,232,221,119, -131,228,114, 57,166, 78,157, 90, 96, 76, 79,111,225, 0,242, 43,236,146,230,159,146,178,127,244,232,209, 87,227,226,226,252, 22, - 47, 94, 28,244,236,144, 33,175, 3,248,188, 22, 17,171,138, 29,218,163,198,140,159, 28, 24,221,161, 51,214,173, 90,142,185,179, -222, 91, 3, 96, 5,199,113,111, 0,248,146,114, 30, 65,252,107,131, 62, 53,122,145,255,185, 38,194,178, 4,245,170,110,103,111, - 95,223,118, 45, 90,180,192,201,147, 39,209,178,101,203,243, 94, 94, 94, 14,169, 92, 14,137, 68, 2, 38, 8, 53,254,152, 66,165, -234,211,183,111, 95,241,217,179,103, 17, 25, 25, 9,133, 66,113,207, 88,149,111, 82,169, 20,193,193,193, 40, 41, 41, 65,159, 62, -125, 36,203,150, 45,235, 83,147,193, 2,128,244, 91, 87,213,249,103,191, 24,249,253,143,107, 34,122,244,232, 1,173,182, 4,130, - 32, 64,169, 84,194,106,181, 66, 44, 22,151, 54,245,216, 89,137, 43, 39,198,233,116, 58, 69, 34, 17, 34, 35, 35, 49,103,206, 28, -152,205,102, 72,165, 82, 0, 64, 73, 73, 9, 52, 26, 13,174, 94,189,138,180,180, 52,148,213,186,171,197,221,211,243,201,231,159, -127, 94, 86,217,103, 22,139, 5, 90,173, 22, 90,173, 22, 26,141, 6,102,179, 25,157, 59,119,150,253,186,103,207,147, 40, 44,172, -212, 96, 89,220,220,158, 93,183,110, 93,128, 76, 38,131,201,100,130, 78,167,195,157, 59,119,144,158,158,110,206,203,203,115,184, -187,187,243,225,225,225,188, 92, 46,151, 15, 30, 60,152, 43, 41, 41, 1,199,113, 24, 56,112,160,239, 79,235,215, 63, 15, 96, 17, - 21,101,215, 56, 8, 88,218, 90,173,131, 58,118,232,112,244,252,133, 11,209,111,190,249, 38,226,226,226,190, 80,110,218,116,194, - 8, 92,169,238,187,201,192,235, 11, 42, 24, 23,150,158,222,210,118,159,113, 9, 47, 53, 46,241,229,198,229,185, 90, 26,151,178, -252,213, 62, 56, 56, 24,251,246,237, 67, 70,106,234,123,181, 49, 87, 0,192,139, 68,221,122,244,232,129,157, 59,119, 34, 51, 61, -253,189,251,204, 85,105, 5, 9,200, 23, 39, 39,191,183,102,205,154,213, 99,199,142,133, 72, 44,238, 6,135,163, 54, 63,243,167, - 14,237, 99, 39,188,137, 53, 43,151,173, 1,240, 42, 99, 76, 0,112,158,114, 28, 65,252,123,113,197,139,252,175,192, 87,116,141, - 0,142, 87,183,115, 64, 64, 64, 29,181, 90,141,172,172, 44, 52,109,210, 36, 79, 46,151, 67, 38,145,192, 77, 38,115,233,199,140, - 70, 99,203,144,144, 16,104,181, 90,248,249,249, 65, 42,149,222,219,100, 50,217,189,215,238,238,238,224,121, 30, 97, 97, 97, 48, - 26,141, 45,107,212,205,189, 26,176,105,217,196, 73, 49, 39,246, 69, 12, 25, 50, 20,222,222, 62, 8, 13,173,139,128,128, 0, 40, - 20, 10,132,134,134,162, 65,131, 6,108,225,194,133, 80, 6,180,114,233, 6, 94,209, 52,137,197, 98, 56,157, 78,228,230,230, 34, - 33, 33, 1,113,113,113,136,137,137,193,229,203,151,161,211,233,224,130,191,130,209,100,106, 45, 22,139, 43, 53, 87, 26,141,230, - 94,244, 74,163,209, 32, 63, 63, 31,105,105,105,208, 27, 12,109,170, 49,187, 67, 91,180,104, 33, 2, 0,133, 66,129, 54,109,218, - 96,197,138, 21,142,221, 59,118, 12,111, 22, 19,227, 19,122,224,128,215,247,223,125, 55,124,216,176, 97,206,179,103,207,162,164, -164, 4, 55,110,220,128,191,191,191, 88,230,230,246, 60, 21,227,218,113, 9, 48,248,233,116, 79,116,233,210, 37, 69,171,213,226, -203, 47,191,228, 37,238,238, 43,103, 1,162,106,191, 40, 18,117,237,209,163, 7,118,237,218,133,172,244,244,233,233,149, 24,151, -116, 32, 63, 35, 57,121,250,154, 53,107,208,175, 95, 63,112, 98,113,173, 59, 34,117,234,212,169,133, 32, 8,136,143,143,135, 23, -112,174,182,223,111,208,176, 97,180, 90,173,198,205,155, 55,161, 42,139,174, 85,134, 10, 56, 21, 27, 27, 11,133, 66,129,166,205, -154,181,173,229,207, 44,228, 56, 46,123,236,132, 55,177,109,255, 25, 0,192,154,149,203,114, 43,152, 43,130, 32, 40,130, 85,163, - 23,249,159, 51, 88, 46, 38, 28, 0, 32,145, 72, 32,147,203, 33,147,201, 74,141,145, 92, 94, 27,119, 10, 55, 55,183,123,134,170, -162,177,170,248, 90,169, 84,186,100, 92, 0,160,248,246,254,238,175,190, 50, 86, 38,151,203, 97,181, 90,192, 24,131, 92,238, 6, - 47, 47, 47, 68, 70, 70,162,164,164, 4, 93,186,246,180,220,209, 72,247,248, 54, 29, 28,247, 32, 39,202,225,112,192, 96, 48,160, -184,184, 24, 69, 69, 69, 40, 41, 41,129,201,100,114,121, 72,185, 32, 8,162, 59,119,238, 96,227,198,141, 40, 44, 44, 4, 80,218, -129,186,220, 84,149,255, 77, 73, 73,193,250,245,235,145,154,154, 90,171,235,211,189,123,119,236,217,179, 71,212,171, 79,159, 85, -135,194,195,179, 14,133,135,103,245,234,211,103,213,174, 93,187, 68,117,234,212, 65, 90, 90, 26, 46, 94,188,136,226,226,226,242, - 12, 76,212,146, 36,160,216, 88, 84, 52,118,198,140, 25, 76,173, 86,227,203, 5, 11, 90,127, 14,188,224,170,113,241,172,198,184, -120,254, 53,227, 2,198, 24, 4, 65,128,211,233,124,160,180,113, 28,199, 73, 36,146,218, 78,145,192,213, 66,255, 94,135,246,119, - 63,154,131,189, 59,183,148,127,116,139,204, 21, 65, 16,143, 34,226, 10,142,177,198, 7,111,110,110,238, 93,131,193, 16, 17, 30, - 30,142,204,204,204,128,176,176,176,116,153, 68, 2,169, 76,230, 82, 31, 44,165, 82, 25,159,149,149,213,181, 78,157, 58,112, 56, - 28,247,204,212,253, 77,132,229, 81,153,203,151, 47, 67,169, 84,198,195, 92,237, 12, 8,112, 90,139,235,181,109,219,246, 94, 36, -200,203,203, 11, 94, 94,158,144,203,221,240,193, 7, 31, 8,139, 23, 46, 92, 30,246,216, 44,237,203, 83,102,176, 25,159,175,122, -168, 39,208,213, 7,146, 82,169,140, 15, 13, 13,237,236,233,233,137,109,219,182, 33, 45, 45, 13,197,197,197, 48, 26,141,176, 88, - 44, 48, 26,141,176, 90,173,112,115,115, 67,179,102,205,224,225,225,129,195,135, 15,199,195, 98,169,220, 84, 22, 22,110,139,143, -143,239,220,161, 67,135,123, 17,148,222,189,123,115,189,123,247,246,187, 23, 53, 51, 26, 81, 80, 80,128,243,231,207,227,240,225, -195,224, 56, 14,183,110,221,114, 90, 76,166,159, 41,235, 63, 24,102,224, 55,209,154, 53,171, 95,123,237,181, 87,186,118,237, 10, - 39, 48, 0,192,250,191,203,184,148, 19, 19, 19,115,213,233,116,118,109,212,168, 17, 52, 64, 71, 0, 59,107,101, 30,111,223,142, -117, 56, 28,125, 90,183,110,141,109,155, 55,119, 7,144, 86,217,126, 6,160,123,116,116, 52, 76, 38, 19,110, 92,191,126,169, 22, -230,106,213,251, 51,191, 24, 51,250,213,215,177,110,213,114,172, 89,185,236,206,234, 21, 75, 67, 1,216, 40, 87, 17, 4, 81, 27, - 47,242, 72, 70,176,180,197,197,151, 98, 99, 99,209,182,109, 91, 36, 37, 37,117, 96,130, 32,150,202,100,144, 73,165,224, 93,120, -128,152, 12,134, 35, 71,142, 28,113,180,105,211, 6,122,189, 30, 98,177,248, 15,209, 43,153, 76, 6,137, 68, 2,177, 88, 12,165, - 82,137,237,219,183,219, 76, 6,195,145, 26,163, 67, 78,193,201,243,252,189,135,152, 70,163,129,209,104,194,156, 57,115,240,213, -194,133, 35,157,192, 20,137,202,223,244,119,158,104,179,209,120,116,239,222,189,246,136,136, 8,140, 25, 51, 6, 83,166, 76,193, -148, 41, 83,240,218,107,175, 97,204,152, 49,120,241,197, 23, 49,100,200, 16,116,236,216, 17,254,254,254, 72, 72, 72,176,155,141, -198,163, 85,233,201,205,230,173, 47,189,244, 82, 94,185, 49, 51, 24, 12,208,233,116,208,106,181,200,207,207,199,153, 51,103,176, -110,221, 58, 44, 92,184, 16,219,183,111,135,197, 98,129,205,102,195,229,203,151,139, 85,118,251,102, 42,202, 15,142, 4,216,118, -250,244,105,248,248,248, 32,164,110,221,158, 46, 24, 23,180,110,221, 26, 90,160,123,149,101,235, 1,140,203, 31,140,143, 78,119, - 33, 37, 37, 5,189,122,245, 66,112,221,186, 95, 52, 3, 20,181,249,190,211,225, 56,117,250,244,105,140, 30, 61, 26,225, 17, 17, - 95,248, 3,254,247,239,227, 15,248,215,111,208,224,139, 49, 99,198,224,224,193,131,112, 58, 28,167,170, 49, 85,237, 56,142,219, -197,113,220, 9, 0,105, 99,198, 79, 30,115, 95,135,246,231, 56,142,219, 0, 96, 26,229, 40,130, 32, 30, 69,106,101,176, 20, 78, -231,251,211,166, 77,179,243, 60,143,161, 67,135,186,239,220,181,107,216,229, 43, 87, 34,243,242,242,188,156, 78,103,141, 90,254, - 22,203,210,105,211,166,105,172, 86, 43, 26, 55,110,140,162,162, 34, 56,157, 78,136,197, 98,136,197, 98,112, 28, 7,158,231,161, - 86,171, 17, 27, 27,139,213,171, 87,151,248, 91, 44, 75,107,124, 56, 56,157,241,235,215,175,135, 72, 36, 98,110,110,110,224, 56, - 14, 98,177, 24,139, 23, 47,206,251, 10,216, 6, 0, 34,158,183, 2, 0,207,115,174,246,202,173,177,125, 82, 38,147, 65, 40,237, -220, 95,227,190,222, 22,203,146,249,243,231,235,110,220,184, 1,131,193,112, 47,218,166,215,235,239,117,154,215,104, 52,224, 56, - 14, 6,131, 1,187,118,237,210,121, 91, 44, 75,170,210, 43, 4,114, 50,111,221,122,186, 67,135, 14,133, 41, 41, 41,208,106,181, -136,143,143,199,225,195,135,241,203, 47,191,224,224,193,131,184,125,251, 54, 28, 14, 7,234,212,169, 3,198, 24,118,236,216,161, -117,232,116, 3, 10,129, 28,202,250, 85, 83, 47, 40,168, 79, 96, 64, 64,134,191,159, 95,102,189,160,160, 62,247,127,238, 9, 36, - 38, 38, 38,194,225,112, 32, 50, 50,210,167,186,126, 88,204,225, 56, 93,110, 92, 66, 35, 34,230,133, 87, 98, 92,194, 1,255,240, - 6, 13,230,149, 27, 23,230,112,156,174,237, 49,187, 3,203,222,121,231, 29,147, 84, 42,197,166, 77,155, 34,237, 13, 27,222, 20, - 3, 47,168,129, 38,189, 0,105, 77,223, 15, 6,150,127,244,209, 71, 57, 28,199, 97,195,134, 13,126,158, 13, 26, 92, 21, 3, 47, -121, 2,245, 60,129,122, 98,224, 37,207, 6, 13,174,110,218,180,201,207,225,112, 96,202,148, 41, 57,193,192,242,106, 36, 39, 51, -198, 6, 49,198,122, 48,198, 66, 87,175, 88,138,189, 59,183,148,155,171, 87, 25, 99,231, 25, 99, 47, 50,198,174, 82,142, 35, 8, -226, 81,132,171,172,159,147,164,227,231,185, 0, 11,232,217,169, 21, 46, 92, 73,208,250,121,123, 28, 40,255,172,232,218,150, 70, -143,181,244,104,245,205, 55,223, 64, 34,145,224,206,157, 59,184,126,253, 58, 60, 60, 60, 48,114,228, 72,139, 73,167,123,186,124, - 45, 66,142,227,250, 50,198, 14,151,105,150,174,119,166,189,165,110, 32,142,139,216,191,119,143,200,211,211, 19,122,189,254,222, -180, 2, 74,165, 18, 10,133, 2, 23, 47, 94,196, 83,131,158,113,230, 43,123,220,155,104,180,124,189,179,138,154,224, 56, 17, 0, -116, 4,148,177,192,212,128,144,144,105, 31,126,248,161,162,127,255,254,144, 74,165,168, 91, 47, 42, 39,242,137, 47,151,241, 60, -231,200, 44, 44,249,160, 65,189, 16,207,235,183,210, 0,112,165,107, 22,150,173, 69, 88,217,113,134, 89, 79, 68,110, 95,187,208, -163, 77,155, 54,247,162, 98,185,185,185,200,203,203,131, 70,163,129,193, 80, 58,213,195,158, 61,123,176,247,228,205, 18, 83,221, - 97,201, 85, 29,231,239,105, 79,112, 15,177,157,171,255,211,250,181, 34,127,127,127,228,230,230, 34, 63, 63, 31, 26,141, 6, 38, -147, 9, 78,167, 19, 69, 69, 69,248, 97,205, 90,103,161,186, 71,106,249, 68,142,213,106, 26,238, 40,124,244,103,234, 68, 55, 11, -103,175,188,242,138,187,135,135, 7, 4, 65, 64,113,113, 49, 50, 50, 50,144,146,146,130,147, 39, 79, 26,242, 52, 86, 24,252, 30, -207, 44,159,104,180,210,243,249,176, 50,213,255,162,102, 89, 94, 2,128,144,224,224,172,244,244,244, 0,167,211,137, 58,117,234, - 56, 52, 69, 69,243,100,192, 65,119, 32, 27, 0, 43, 0, 62, 92,178,108,217,216,103,158,121, 6,237,219,183,191,147,147,155, 91, -191,178,188, 4,142, 19, 53, 6, 60,141,117,235, 94, 59,127,254,124, 80, 70, 70, 6, 70,143, 30, 93,144,158,148,116,111,154, 6, - 45,208, 61,188, 65,131,121,155, 54,109,242,139,136,136, 64,203,150, 45,115,220,202,167,105,168, 60,127, 86, 89, 54, 53,137,191, -214,159, 56,164, 69,251, 73,147, 38,193,225,112,224,228,201,147, 56,119,238, 28,210,211,211,113,230,204, 25,141,135, 74, 53,188, -124, 45,194,170,242,231,128, 40, 67,228,134, 13,235, 57,169, 84,138, 53,107,214, 32, 54, 54, 22, 0, 16, 29, 29,141, 49, 99,198, -192,225,112, 96,212,168, 23,217,175, 9,138,228,234,242, 39,199,113, 45, 0, 44, 64,169,185,107,207, 24,115,227, 56, 46, 11, 64, -104,109,250, 92, 81,254, 36, 77,210,252,247,104, 62,106,212,184, 22,225,236,111,225,249,199,229, 56,198,101,109, 89, 49, 75,220, -173,123,143, 38,179, 62,153,201,119,232,208, 1,161,161,161,136,142,142, 70, 70, 70,134,220,203,203,171,166,245,206,244, 61,158, -120, 33,165, 85,171, 86, 94,211,167, 79,247,236,215,175,159, 36, 52, 52, 20,140, 49,196,198,198, 98,219,182,109,182, 85,171, 86, -149, 24, 3, 7,105, 46, 29,219,168,119,101,189,179,115,128, 17,192,167,117,179,178, 86,190, 62,113,226,204, 54,109,219,190,242, -201, 39,159,240,106,165, 66, 50,231,131, 87,221, 0, 96,246,215,191,120, 62, 51,108, 36,150, 52, 4,122,190, 80,249, 58,111, 21, -143, 51, 35,115, 92,250,147, 67,250, 52,156,250,198, 88,231,243,207, 63,175,242,240,240, 64,104,104, 40,188,189,189,145,156,156, -140,204,204, 76,182,123,247,110,125,204,229, 68,201,142,131, 23,210,221, 60,131, 93, 89, 55, 80,215,163,255,115,169, 79, 62,249, -164,247, 75, 47,189,228,222,174, 93, 59,137, 92, 46,135, 92, 46, 71,110,110, 46,110,223,190,109,219,189,123,183,222, 24, 48,160, -248,210,177, 77, 58, 23,215, 34, 52,245, 24, 49,235,246,169, 67,159, 76,185, 22, 31,255,162, 0,180,182,217,108,117,156, 78, 39, -199,243,124,182, 32, 8,241, 54,157,110,181, 37,250,147,197,180, 22,161,107, 56,157, 78,169,211,233,132, 70,163,193,161, 67,135, -196, 73, 73, 73, 31, 94,185,114,229,195,172,172, 44,216,237,118, 60,251,236,179,136,142,142,198,177, 99,199,144,159,155,187,187, - 58,173, 4, 64, 43,207,204, 28, 51,110,220,184,125,235,215,175,231,175, 92,185,226,183,102,205,154, 31, 42, 51, 46, 47,190,248, -162,144,155,145, 49,198, 82,205, 28, 88, 53,148,205,130,253,155,190,186, 50,120,232,176,102,159,124,252,161,164, 75,151, 46,240, -243,243, 67,247,238,221, 97,179,217,188,154, 54,109, 90, 83,217,212,245,120, 98,120,114,235,214,173, 85,139, 23, 47, 14, 26, 59, -118, 44,222,120,227, 13, 0,128,201,100,194,193,131, 7, 49,101,202,148,156, 12,113, 71, 67, 77,249,179, 44, 50, 85,110,188, 78, - 0,232, 1, 32,153, 58,180, 19, 4,241,175, 54, 88,192,239,235,157,157, 58,119, 21, 21,151,227, 40, 37,248,186, 35,236,165,164, - 9,211,230,181, 20,217, 75,188, 37,156,217,227, 86, 98, 34, 87,211,154,132,247,214, 59,243,140,210,251,166,252,220, 97,206,236, -217,111, 46, 89,178,164, 79,249, 84, 12, 74,165, 50,222,100, 48, 28,241,183, 88,150, 26, 61,163,142,212,118,237,188, 76, 32, 23, -192, 68,239, 75,151,150, 13,124,230,217,249,110, 62,145,146, 25,159,175, 50,139,120,222,122, 59, 43, 31, 75, 26, 2, 42, 23, 6, - 60, 26,173,192, 53, 77,176, 35,215,119, 88,194, 71,239,188, 51,117,246,167,159,118, 80,171,213, 61,109, 14, 71,148, 32, 8,128, - 32,220, 50, 26, 12, 39,152,205,118,222, 18,253,241, 66, 55,207, 96,230,242,186,129, 94, 77,117, 62,169, 91, 58,252,184,122,245, -228,205,155, 55,255, 41,237,190, 22,203, 50,163, 87,211,195,174,164,189,226, 62,102,224, 55,228,229,253, 86,101,109, 3,180, 22, -161,203,133, 66, 16,198,123,123,123,175,235,211,167,143, 91,223,190,125,241,212, 83, 79,161, 75,151, 46, 16, 4, 1,140, 49,232, -116, 58,252,242,203, 47,152, 63,127,254,173,250,192,167, 53,233, 89,128, 35,242,189,123, 7,180,110,221,122, 77,117,198,165,204, - 92,213,216,231,176,250,178, 41,191,229,240,124, 58,109,196,235,115, 26, 90, 75,178,189,124,149,142,160,107, 87,227,121,215,203, -102, 99,157, 51,246,151,142,207, 14, 25,242,186, 72, 44,238, 94, 54,162,145,221,184,126,253, 82,249, 98,207,136, 30,115,168,150, -121,169,124,238, 57,234,208, 78, 16,196,191,219, 96,137,197,226,188,242, 40,143, 88, 44,206, 75,222, 49, 97,100,117, 34, 18,160, - 79, 89,228, 10, 53,174, 69, 88,246, 58, 13,208,193, 98,249,236, 15,147,136, 86, 24, 45, 40,185,111,255,218, 36,170, 24, 72,128, -195, 50, 16,121,215,129, 93, 19, 75,245, 58,204,126,175, 98,154,170, 60, 33,127,248, 93,105,145, 25, 56, 5,189,254, 20,244,250, - 74,103,151,150,136,165, 69, 53, 29,231,253,105,207, 0, 74,254,106,218,197,181, 60, 63,226,191,112, 62,255,109,220, 45, 40,216, - 1, 64, 93,119,207,158,192,253,123,246, 60, 63,245,237,183,159, 13, 14, 9,105,224,231,231,231,237,238,238,206,159, 61,123, 54, -197, 97, 54, 47,107, 3,252, 88, 22, 61,173, 17, 11,112,164,113, 70, 70,243,231,134, 12,121,157, 19,139,187, 85, 52, 46,204,225, - 56, 19, 9, 44,183,184, 48,123,123,109,203,102,168, 60,184, 79, 89,228, 10, 34, 23,203,102,102,233,113,124, 14,135,227,115,196, -197, 85,146,231,107,157,151,102,115, 28,167, 3,205,208, 78, 16,196,191,137,255,242,186, 66,125, 73,147, 52, 31, 21,205, 82,143, - 2, 15, 58,159,164, 73,154,164, 73,154, 15, 95,243, 81,219,196,100, 49, 9,194,229,202,136, 19,191, 55,119, 17, 4, 65, 16, 68, -149,112, 0,250, 86,241, 48,113,121,116, 0,199,113,125, 31,224, 97,117,152, 52, 73,147, 52, 73,147, 52, 73,147, 52,255, 93,154, - 53,105, 63, 50,163, 19,169,137,144, 52, 73,147, 52, 73,147, 52, 73,147, 52,169,137,240,225,110, 60, 8,130, 32, 8,204,154,197, -241, 0,199, 1,179,120, 96,139, 8,120, 78, 84,250,254,193,121,238, 57,174,210, 73,104, 39, 79,230,220,233,140, 19,196,163, 13, -245,193,250, 27,225, 56, 46, 44, 40, 40,104, 5, 0, 46, 39, 39,103, 60, 99, 44,131,206,202, 63, 15, 95, 95,223, 62, 14,135, 3, - 90,173,246,200,163,152,190,230, 13,185, 33,140, 71,211,223,195,218,200,184,126,139,173,171,108,223,102, 81,220,104,112,191,207, -165,197, 9,184,113,237, 54,219, 94,139, 60,207, 15, 30,224,191, 0, 0,118,236,203,159,246,223,152, 23,139,227,184, 70,254,254, -254, 7,196, 98,177,216,233,116, 78,204,205,205,221, 83,181, 1,122, 78, 4, 0,254,138,109,239,123,249,248, 77,255,104, 42, 39, -177, 90,190,212, 88,204,102, 45, 47, 22,167,202,164,202,211, 14, 94,181, 47, 51,119,192,245,202,190,191,121,243,230, 42, 87,215, -110, 17,197, 13,104,210,172,217,160,182, 45, 21,201, 11,150,118, 88,210, 51,210, 79,146,114,231,178,250,219,117, 25, 43,254,143, -189,239, 14,143,170,216,223,127,103,251,110,118,211,123, 39,132, 52, 72, 66, 11, 77, 90, 66,239, 4, 4, 4, 65, 84, 64, 16, 81, -164,168, 32, 10,136, 82,229, 74, 19, 69,176, 80,165,151, 16,233, 53,244,150, 8, 73, 32, 9,132,244,178,233,187,155,237,229,204, -239, 15,178,249, 6, 46, 73, 54,136,247,119,229,238,251, 60,251,100,115,246,156,247,204,204,153, 51,243,206,103, 62, 51, 31, 87, - 71,239,161, 51, 39,115,226, 5,212, 52, 97,229, 47,180,218,250,150, 89,142,229,132, 56,233,129, 72,174, 64,224,107, 50, 26,221, - 9, 64,217, 28,142,212,160,213,230,241,128,187,243, 40,173,122,213, 57,121, 2,129,143,201,104,116, 7,128,255,198,116, 90,209, -136,192,178,181,181,189,205, 98,177,124,234, 6,169,101,213, 4,116, 54, 31,171,251, 27, 33, 4, 38,147, 41,191,162,162, 34,170, - 9, 13,161, 29,128, 49, 0,204, 75,205,119, 1,216, 75, 41,149,191, 96,195,106,199,227,241,230,138,197,226, 94,106,181, 58, 28, - 0, 68, 34, 81,138, 82,169, 60,167,215,235, 87,191, 8, 47, 33,132, 3, 96,180, 68, 34,137, 97,177, 88, 49,148, 82, 66, 41, 61, - 95, 93, 93,125, 14,192, 62, 74,169,241, 5, 56, 69,110,110,110, 75,195,194,194,198,205,159, 63,191,220,217,217, 57,116,214,172, - 89,183, 92, 93, 93,127, 47, 43, 43, 91, 64, 41, 85,255, 55, 84, 14, 66, 72, 11, 15, 15,143, 93, 92, 46,151,157,151,151, 23, 3, - 0,190,190,190,231,117, 58,157,169,164,164,228, 77, 74,233,163, 38,242,137, 1,116,150, 72, 36, 81, 18,137,164,135,201,100,106, -201, 48, 12, 24,134,185, 95, 93, 93,157,160,215,235,111, 3,184, 78, 41, 85,254, 23,137, 96, 91, 55, 55,183, 29,132, 16, 16, 66, -130, 41,165,138, 87,173, 17,160, 44,180, 76, 77,121, 16, 90, 43,162,194,195, 26, 40, 16,248, 61,231, 92,139, 5,214,160,222, 14, - 3,134, 14,109,195, 2, 0,189,254,214, 0, 0,199, 94,182,184, 26, 57,114,228,213, 29, 59,118, 56,106,181, 90,188,247,222,123, -187,236,237,237, 55,202,100,178,249, 13, 93,103,107,107, 59,107,201,215,223,219,212,180,105,110, 12,195,184, 21, 21,229, 5,167, - 61,184, 55, 32, 45, 45,121,153, 94,121,232,186,158,178,167, 86,169,134, 61,176, 36, 29,173, 90,144, 33,195, 71,143, 24,188,100, -201, 98,140,123, 99, 92,179,148, 20,141,200,219, 46,147, 47,215,139,131, 92, 92,124,134,125,246,249, 74,114,253,218,133, 97,251, -246,254,124,238,179, 73,164,151, 85,100, 89,244,108,201, 55, 28, 78,103,199,176,176, 30,111, 28, 62, 12,137,175, 47,135, 35, 16, -176, 0,192,168,213,250, 86,231,229,121,238, 25, 54,172,211, 87,132, 92, 88, 68,233, 13, 43,231,127,158,211, 10, 11, 5, 22,139, -197,242, 41, 40, 40,112, 19,139,197, 79, 26, 97, 74, 97, 50,153, 96, 50,153, 80,211, 41,130, 82, 90,251,215,104, 52, 34, 44, 44, -204,162, 17, 44,128, 94, 0,222,142,142,142, 30,181,122,245,106,110,100,100,164, 57,180, 71,247,207, 63,255,252,123, 66,200, 1, - 0, 91, 1,156,181,116,132, 75, 8,233, 47, 22,139,119,126,251,237,183,118,125,251,246,229,120,121,121,129, 16,130,226,226,226, -206,103,206,156,137,154, 53,107,214,251,132,144,241,148,210,147, 77,120,161, 35,108,109,109,247,143, 24, 49,194,167,103,207,158, -194, 86,173, 90,193,100, 50, 33, 41, 41,233,221,219,183,111,143, 61,112,224,192, 34, 66,200, 40, 75,227,169, 17, 66,136, 68, 34, -153,232,237,237,189,116,225,194,133, 78,227,199,143,231, 39, 39, 39, 87, 6, 6, 6,146,203,151, 47,187,238,221,187,247,253, 21, - 43, 86,140,182,181,181, 93, 80, 93, 93,189,141, 62, 47,142,209, 51,176,179,179,187,205, 98,177,124, 44, 17,192, 0, 44, 22,193, -132,144,182, 1, 1, 1,123, 47, 93,186, 20,144,157,157,109,138,141,141,221, 14, 0,231,206,157,139, 52, 24, 12,164, 95,191,126, -199, 9, 33, 99, 40,165, 73, 22,230,189,181,147,147,211,145,113,227,198, 57,181,104,209,194, 38, 32, 32,128,136,197, 98,176,217, -108,200,100, 50,175,228,228,228, 62, 55,110,220, 80,159, 57,115,166,130, 16, 50,140, 82,122,183, 9,207,233, 53, 55, 55,183, 9, - 92, 46, 55,194,104, 52,122, 3, 0,135,195, 41, 48, 24, 12,201, 37, 37, 37, 59, 40,165, 87, 95,244, 5,113,119,119,223,176,116, -233, 82,151,146,146, 18,186, 98,197,138, 13, 0, 38,190,170,141,193,174,223,247,225,246,173, 27, 0,192, 35,132,144,103,235, 31, - 33,132,180, 12, 6,239,227,143,103, 35,170, 67, 39,188, 57,110,116,163,156,177,131, 93,150,240,217, 28,103,149, 78,123,163, 76, -198, 58,226,231,198, 31, 49,126,116, 84, 38, 0,156, 56,126,111, 68,167, 78, 78,151, 93,236,153,225, 54,124, 65, 39,157,201, 88, -126,248,143,178,133, 77, 17, 83,222,222,222, 39, 29, 29, 29,109, 42, 42, 42,138, 75, 75, 75,127, 28, 57,114,228, 55, 91,183,110, -117,124,252,248, 49,242,242,242, 48,115,230, 76, 73,126,126,254, 7, 2,129,224,154, 86,171,173,215,146,165, 80, 40,214, 45,253, -122,246, 66, 91, 59, 71,182,141, 72, 12,137,173, 29, 2, 2,130,209,161, 99,119,244,233, 59, 12,153,153,105,157,247,238,254, 57, -145, 93,180,127,185,137,223,238,155,170,242,186, 5,132, 0, 0, 32, 0, 73, 68, 65, 84,170,128,122,219,165,240, 80,210,211, 44, -174, 22, 46, 92,140,244, 7, 15, 20,217, 89,172, 15,255, 56,204,177, 25,216, 59, 76,160,211, 87,103, 95,191,118, 33,160,115,151, -104, 0,136,218,183,247,231,115, 95,141, 39,189, 23,237,124,245,196,251,203, 20, 87, 75,184,220,137,253,215,172,113,107,247,254, -251,188,234,172, 44,125,230,166, 77, 42,105, 66,130,137, 35, 16, 80,223, 1, 3,136,107, 76,140,240,253,251,247,121, 87, 86,172, -232,177,140,207, 15,252, 92,167,219,105,229,252,207,113, 90,209, 4,129, 69, 8,129, 88, 44,198,158, 61,123,192,229,114,193,225, -112,192,229,114,235,253,238,231,231,103,201, 75, 50,210,195,195,227,251,141, 27, 55,186,247,239,223, 31, 66,161,176,246, 55, 54, -155,141,190,125,251,162, 79,159, 62,220,194,194,194,177,123,246,236, 25,187,108,217, 50, 41, 33,100, 6,165,244, 96, 35,188, 49, -161,161,161, 7, 79,157, 58, 37,210,104, 52, 72, 72, 72, 64,101,101, 37,248,124, 62,124,124,124,208,175, 95, 63,206,131, 7, 15, -156,250,246,237,123,144, 16, 50,132, 82,122,222,130,180, 70,185,185,185, 93,220,183,111,159,176, 77,155, 54,228,225,195,135,104, -215,174, 29, 0, 64, 38,147, 33, 54, 54, 86, 56,126,252,248, 22, 99,199,142,189, 78, 8,233, 73, 41,189,221, 8, 95,123, 15, 15, -143,109, 35, 70,140,240, 90,182,108,153,157,173,173, 45,178,179,179,139, 60, 60, 60,130,205,229, 61,118,236, 88,254,208,161, 67, - 61, 87,173, 90,181,110,255,254,253,159, 16, 66, 38, 82, 74,239, 52,196,107, 22,194, 54, 54, 54,144, 74,165,216,181,107, 23, 62, -248,224, 3,176,217,108,148,148,148, 96,239,222,189,248,240,195, 15,205, 66,198, 34, 17, 44, 22,139,251,180,105,211,230,151,115, -231,206,249, 56, 56, 56,192,203,203,139,245,229,151, 95, 70, 4, 6, 6,138,154, 53,107,198, 46, 42, 42,194,193,131, 7, 3, 39, - 76,152,112, 68, 40, 20,190,171,209,104, 26,157, 58,115,119,119,255,245,143, 63,254,240, 75, 73, 73,193,166, 77,155, 80, 81, 81, - 1, 62,159, 15, 7, 7, 7,120,120,120, 32, 56, 56,152,204,155, 55,207,102,232,208,161, 54, 51,102,204,248, 21, 64, 91, 11,158, - 81, 27, 55, 55,183,159,198,142, 29, 27,248,213, 87, 95, 57,120,120,120,192, 60, 32,144,201,100, 62,217,217,217,157, 23, 46, 92, - 56,202,221,221,253,113, 73, 73,201, 84, 74,233,159, 77,108,212,219,246,238,221,123, 72,108,108, 44,187,168,168, 8, 59,118,236, - 24, 66, 8,105,107,169,168,252,167,225,246,173, 27,120,111,250,204,106, 47, 95, 95,222,209,184,221,195,171,171, 55, 95,150,176, - 28, 56, 0, 80,205, 84, 25,187,118,150,116, 27, 58,108, 44,111,208,224,216,234,205, 63,172,147, 88, 34,176,248,108,142,243,158, -157,211,242, 18,174,100,180, 60,121, 38,187, 79,236,176, 62, 44, 14, 47,180, 5, 0,204,153, 61,133,127, 56,238,204,198,254,125, -154, 21,245,232, 26,156,247,198,248, 77,190, 77, 17, 87, 33, 33, 33, 23, 18, 19, 19,221, 5, 2, 1, 42, 42, 42,156, 55,111,222, -252, 93,183,110,221, 88,153,153,153,120,240,224, 1,178,178,178, 32,147,201,208,183,111, 95,201,157, 59,119,126, 4, 80,175,192, - 42, 85,143, 92, 26,232, 86,182,222,219,217, 49, 64,163,151,185,153,140,229,173,206,157,249,179,245,129,125,170,118,110, 30, 62, -193, 99,199,190,135,207,230,175,228, 30, 58,176,109,225,197,132, 83, 0, 2,234,223,193,159,226,181,207, 23,204,135, 92,161,197, -248,113, 83, 48, 97,220, 20,103, 10,157, 39, 53,105,196, 58,117,165,131, 61, 47, 37,126,219,238,125, 35, 0,248,212, 17, 89,103, -173, 34,171,126, 44,225,112, 58, 13,249,254,123,215,136,201,147, 5,127,126,245,149,178, 44, 33, 65, 29, 52,104, 80,101,187,105, -211,180, 0,160,200,202,226,165, 47, 90,100,227,218,163,135,168,203,220,185,142, 38,157,206,227,107, 66, 58,126, 73,233,205,166, -114,250,141, 25, 99, 90,248,219,111, 29, 18,102,207,142, 38, 6, 3,123, 64,151, 46, 73, 43,118,236, 40,248, 43,156, 47, 51,157, -133, 23, 47,106, 43, 2, 3,209, 46, 54,182,220,207,205, 77,251, 50,243,254, 87,210,105,197,115,218, 41, 74, 41, 8, 33, 61, 1, - 92, 0,240, 21,165,116, 49, 0, 56, 56, 56, 72,171,170,170,220, 14, 30, 60,216,168,184,226,114,185,240,244,244, 68,112,112,112, -137, 84, 42,117,111,160, 81,204, 99, 24,198,135, 82, 90,107,109,169, 15, 90,173, 22, 25, 25, 25,104,221,186,117, 62,165,212,183, -161, 41, 28, 27, 27,155,204, 7, 15, 30,184,164,166,166,226,246,237,219, 8, 12, 12,132,163,163, 35,184, 92, 46, 12, 6, 3,228, -114, 57, 66, 67, 67, 33, 16, 8,208,190,125,251, 50,165, 82, 25,216,208, 84, 15, 33, 68, 32, 22,139, 51, 46, 94,188,232,219,174, - 93, 59,220,188,121, 19,190,190,190,240,240,240, 0, 0,100,101,101,225,242,229,203, 24, 52,104, 16, 18, 19, 19,241,250,235,175, -231, 41,149,202, 96, 74,169,182, 62, 78,103,103,231,162,115,231,206,229, 71, 70, 70,106,148, 74, 37, 75, 42,149,114, 19, 18, 18, -140, 10,133, 66, 34,147,201,184, 85, 85, 85, 92,185, 92,206, 81, 42,149, 92, 22,139,197, 83,171,213,220,179,103,207,178,117, 58, -157, 93, 67,229,100,126, 78,113,113,113,136,140,140,196,193,131, 7, 49,103,206, 28, 92,185,114, 5,190,190,190,216,183,111, 31, -230,206,157,139,180,180, 52,184,184,184,160, 85,171, 86, 13, 62, 35, 0, 8, 10, 10,122,120,239,222,189, 22, 60, 30,207, 28,119, -209, 28,207, 14,165,165,165,120,244,232, 17, 10, 10, 10, 16, 20, 20,132,113,227,198, 61,202,207,207, 15,106,172,162,249,248,248, -148,166,164,164,184,180,110,221, 26, 82,169, 20, 14, 14, 14,176,183,183,135,131,131, 67,237,247,192,192, 64,204,158, 61, 27, 30, - 30, 30, 37,106,181,218,189, 49,241, 19, 25, 25,121,242,236,217,179, 46,118,118,118, 40, 46, 46,134, 92, 46, 7,135,195,129,141, -141, 13, 92, 92, 92,106, 5,124, 70, 70, 6, 6, 15, 30, 92,150,153,153,217,191, 9, 22, 55,150,187,187,251,131,187,119,239, 6, - 83, 74,145,155,155,139,180,180, 52, 76,159, 62, 61, 67,163,209,132,189, 74, 49,245,234,248, 85,241, 38,190,243, 30, 47,118,216, -112, 85,210,237, 19,140, 8, 23,209,177,173,168, 10, 0,110, 38,169, 29,212,232,137,182, 81, 3, 88,135,227,142,216,108,219,186, -153, 11, 6,238, 32, 72, 75, 77,167, 95,215,199, 61,164,191,195, 91,115,103, 14,104,217,163,107, 15,142, 92, 78, 61,126,217,190, -165, 99,206,227, 76,119, 0,240,111, 30, 40,157,244,214,148,155,118,118,164, 56,225, 74,130,113,245,186, 19,247,227, 79, 86,109, -183,224,217, 4, 6, 7, 7, 95,139,139,139,115,113,115,115,131,189,189, 61,148, 74, 37,244,122, 61, 82, 83, 83, 53,123,246,236, - 49,216,217,217,217, 22, 23, 23,163,170,170, 10,132, 16,196,197,197,229, 82, 74,253,159,229, 50,251, 96, 1,192,244,129, 45,185, -173,122, 5, 59,242, 4, 70,145,136,155,238, 9, 98, 18, 16, 42,113, 63,119,238, 90,235,243, 23, 47,189, 57,104,200, 27,174, 93, -186,196, 96,229,178,207, 12,185,197,210,118, 85,170, 97, 15,158,231,131,213, 50,152,244,138,125,125,196,232, 37, 75, 22, 99,241, -194,175, 16, 31,119, 88, 38, 17,179,180,118, 14, 92,251, 30,157,187,106,102,127, 48, 60, 79, 85,157,239,251,221,198, 45,227,250, -246, 31,237,211,185, 75, 52,174, 95,187,128,125,123,127,190,205, 51, 25,172,211,133,207,224, 43, 66, 28, 29, 2, 3,167,126,148, -145,193,251,115,241,226,106, 99, 97, 97,101,212,172, 89,101,207, 59, 55,255,244,105, 49,223,203,203,206,113,216, 48,167,117,254, -254,212, 80, 82,242,211,243,124,136,158,199,121, 70, 34,113,216,125,252,120,111,202,229,246,252,244,179,207, 68, 67,134, 12,129, - 92, 46,199,129, 3, 7,240,211,166, 77, 90, 79, 79,207,123, 94,201,201,137, 17,114,249, 23,150,114, 70,205,154, 85,102, 50,153, -200,232,185,115,251,166,100,101,245, 42, 46, 41,105, 6, 0,158, 78, 78,121, 81,129,129,183,127,141,143, 79,219, 16, 16,192, 88, -154,206, 45, 39, 78,184,239,207,206,158,236,228,228, 36,146,150,148,112, 4,124,126,121,231, 86,173,246,253,176, 96,193, 5,227, -221,187, 60,161,143,143,157,253,144, 33, 77,206,123,212,172, 89,101, 21, 10, 5,231,163,111,190,233,154, 35,149, 54,171,214,106, -131,170, 20, 10, 15,147,193,192,178,179,177, 41,111, 30, 26, 90,162, 78, 72, 40,106,174, 82,205,220, 66,105,201,223,104,169,252, - 55, 45,242, 42, 88,176, 46, 80, 74,255,109,181, 12,165,212, 34,235, 21,151,203,125,106, 58,170, 1,240, 8, 33,184,115,231, 14, -156,157,157,225,225,225, 1,129,224,233,224,128,165,165,165,184,114,229, 10,238,223,191,143, 54,109,218, 0, 0,175, 33, 66,129, - 64,240,241,170, 85,171, 28,116, 58, 29,110,223,190,141,168,168, 40, 8, 4, 2,240,120,188,167,196, 95, 73, 73, 9,194,195,195, -241,233,167,159,218, 47, 91,182,236, 99, 52, 16, 67,142,195,225,204,152, 50,101,138,155,217, 98,149,151,151,135,246,237,219,215, -254,238,234,234,138,164,164, 36, 68, 69, 69,193,199,199, 7,163, 70,141,114,219,177, 99,199, 12, 0,171,235, 29,201,243,249,172, -200,200,200, 14, 53, 22, 34,176, 88,172,116, 59, 59, 59, 87,119,119,119,177,157,157,221,191,229,241,183,223,126,171, 98,177, 88, -134,198, 10,148,197, 98,161,184,184, 24, 17, 17, 17,144,201,158, 68, 90, 81, 42,149, 8, 10, 10,130, 92, 46,175, 21,171, 94, 94, - 94, 80,171, 27,118,237,106,211,166,205,226,176,176,176,126,209,209,209, 2, 46,151,139, 63,255,252, 19,237,218,181,195,158, 61, -123,224,231,231, 7, 27, 27, 27,100,100,100, 32, 50, 50, 18, 23, 47, 94,132,171,171, 43,194,195,195, 5,237,219,183,191, 84, 81, - 81,113, 62, 59, 59,123,113, 3,233,100, 73, 36, 18, 92,188,120, 17,191,254,250, 43,178,178,178, 80, 88, 88, 8, 91, 91, 91,180, -109,219, 22,173, 90,181,194,107,175,189,134,140,140, 12,144, 70, 42, 19, 33,196, 35, 56, 56, 56,254,230,205,155, 46,148, 82,236, -216,177, 3,213,213,213,208,233,116, 96,177, 88, 16, 10,133,112,116,116, 68,175, 94,189,224,234,234,138,224,224, 96,236,221,187, -215,101,224,192,129,199,106, 44, 80,197,141,149,171,163,163,227,204, 69,139, 22,249,186,185,185, 33, 59, 59, 27, 50,153, 12,238, -238,238,136,142,142,246, 62,115,230,204, 76, 0,107, 94,149, 14,204,236,208, 78, 8, 33, 71,227,118, 15,247,243,228,183,236,216, - 78,225,127,239, 14,167,197,177, 51, 15, 91, 63, 41, 15,255,187, 29,219, 43, 30,221,188,125, 34,231,104,220,238, 27,247,211,113, -196,146, 41,236, 50, 25,235,200,201, 51,217,125, 90,135,119,103,175,223,184,104,248,123,147,250, 11,156, 28,187, 19,121,201, 94, - 92,185,113,207,255,203,197,243,220,190, 94,188,226,232,201, 51,217,166, 50, 25,107,169, 37,233, 13,111,233,185,225,194, 97, 55, -151,106,253, 15, 72,186, 97, 15,112,187,160,121, 96, 8,228,114, 57,132, 66,161,112,220,184,113,166,249,243,231,171,236,236,236, -108, 8, 33, 56,127,254,124, 9,128,254,141,241,106,220, 28,169, 73,111, 48, 82, 62,155,161,196, 86, 77, 76, 21,252,228,212,199, -232,217,115,160,180, 67, 84,187,101, 43,190, 93,243,121, 96, 96,168,235,184,241, 83,185,171, 87,127,177, 9, 64,247,231,241,220, -207,160,231, 90,181, 32, 34, 0,131,151,124,189, 24,153,153, 25,142,239,189, 93,245, 21, 71, 32,242, 10,243,239,106,187,233,215, -243, 3,130,130, 2,154,189,247,206,187,127,108,254,237,215,193,117, 45, 89,187,127,223,124,132, 16,210,219,146,178,253, 31, 66, -235, 9,241,241,168,206,205, 53, 84, 92,186,164,233,253,253,247,101,190,253,251,175,209,233,245, 46,230,166,130, 69, 8,136,217, - 69,130, 97, 8,231,211, 79, 89,148,195,129,193,209,241,237,121, 64, 72, 99,156,115,138,138, 70,190, 57,121,242,224, 35, 39, 78, - 32, 32, 32,160,182, 63,115,112,112,192,220,185,115, 49,107,214, 44, 65, 82, 82, 82,199,253,251,247,119, 92,253,237,183,238,243, -128,145,150,164,243,212,245,235,142,211,150, 44, 89,208, 38, 42,202,111,251,174, 93,130, 22, 45, 90, 0, 0, 30, 61,122, 20,188, -114,197, 10,255,136,200, 72,233,178,143, 63,222,154, 50,127,126, 56,128, 75, 13,113, 22, 39, 36,232,246,103,103, 79, 62,119,254, -188, 67, 68, 68, 4, 0, 32, 45, 45,205,109,221,186,117, 83,194, 71,141, 26,191,228,253,247,191, 24,162,209, 84,217,149,150, 10, -134,108,216,192,217, 61,122,116,163,156,230,116, 2, 64,244,187,239,126,220, 61, 38,166,213,200,201,147,157,252,252,252,136, 68, - 34,129, 94,175, 71, 97, 97,161, 99, 74, 74, 74,139,120,133, 66,126,232,250,245, 29, 91,106,130,184,255, 77,120,174, 22,249,167, - 11,172,104, 66, 8, 5, 16, 77, 41,189,104,238,184, 77, 38,147, 69,226,138,195,225,160,198, 9,216,162,155, 82, 74, 81, 86, 86, -134,178,178,178,218, 41,162,146,146, 18,156, 59,119, 14, 25, 25, 25,224,114,185,224,241,120,208,235, 27,143, 13, 43, 22,139,251, -244,233,211,135,115,253,250,117, 4, 6, 6, 66, 36, 18,213,166,203,252,225,241,120,240,244,244,132, 92, 46, 71,239,222,189,185, -235,215,175,239,211,144,192,178,183,183, 31, 52,102,204, 24,190,249,255,234,234,106,176,217,236, 90,177, 82, 93, 93,141,138,138, - 10, 84, 85, 85, 65,163,209,160, 75,151, 46,252,248,248,248, 65, 13, 9,172,186, 80,169, 84,213, 37, 37, 37, 14,221,187,119,119, -220,186,117,107, 90,151, 46, 93, 66,159,170, 97, 23, 46,104, 52, 26, 13,151,197, 98, 89, 20,231,110,231,206,157,181,101, 95, 80, - 80,128, 77,155, 54,213,254,150,145,145,129,245,235,215,215,238,203,209,208, 51, 10, 11, 11, 27,184, 99,199,142,168,237,219,183, - 87,178,217,108,164,165,165, 97,215,174, 93,160,148,194,213,213, 21, 42,149, 10, 82,169, 20,231,207,159,135,209,104,132, 68, 34, -129,183,183,183,112,198,140, 25,221,190,250,234, 43, 46,128,122, 5,150,201,100, 50,177,217,108,248,251,251, 99,225,194,133,208, -104, 52,224,241,158,232, 74,185, 92,142,170,170, 42, 36, 38, 38, 34, 59, 59, 27,141,117, 46, 66,161,112,212,246,237,219,221,248, -124, 62,212,106, 53, 20, 10, 5,242,242,242,144,147,147,163, 41, 41, 41, 49,218,218,218,178,252,253,253, 89, 2,129, 64, 16, 27, - 27, 75,204, 66,115,200,144, 33,206, 59,118,236,120,163, 49,113, 68, 8,113,109,217,178,229,231, 83,166, 76, 17,214,173,179,197, -197,197, 24, 57,114,164,205,213,171, 87,231, 19, 66,118, 81, 74, 75, 95,165, 94,140, 82, 74,171,171, 55, 95, 78, 56,242,125,203, -123,119, 56, 45,116,186,202, 46,125, 7,205,228, 0,192,213,139,191,117,185,119, 39, 25, 34, 98,204, 57,126,106,245,101,137,228, - 61,218,152, 5,112, 80,111,135, 1,126,110,252, 17,177,195,250,176,126,217,190,165,227,123,147,250, 11,220,154,111, 33, 0,224, -200,243,193,107,166, 57, 44,141, 86, 41,252,101,251,150,142,177,195, 6,221,200,122,156,179,102,112, 31,199, 67,199,206, 86,157, -104,200, 66,232,233,193,245,118,178, 43,135,147,109, 59,248, 7,218, 34, 49,233, 46,142, 28,188,132,224,176,110,208,106,181, 48, - 26,141,226,161, 67,135,170,246,236,217,163, 73, 79, 79, 87,168,213,234,158,148,210,244,198,242,159,159,159,202,132,122,116,214, -243, 68, 2,163, 66,198, 83,205,251, 98,255,232,246,157,250, 69, 57,122,122,115, 93,197,204,209,152,158,221,119,253,190,243,167, - 89,115, 62,249, 26,109,219,118,233,114,255,225,241, 86, 0,238, 61, 87,180, 62,162,241, 17,193,196,152,249,240,225,224,156,236, -236,252, 16,119, 15,221,163, 42,106,152, 57,111, 75,223,238, 61, 71,181,110,209,178, 7, 63, 37,245, 34,153,253,193,148,223,191, -219,184,101,156, 89,100, 37, 36,156,236,185,120,113, 54, 31,128,214,170,171,106, 70,229, 2,129,143,196,223,159,147,181,117,171, - 58,112,232,208, 74, 0,208,233,245, 46, 89,217,217,246, 54, 54, 54,160,148,194, 96, 48, 60,229, 35,108,246, 11,142, 8, 13,117, -183,132, 51,235,203, 47, 91,127,250,233,167, 40, 46, 46,134,209,104, 4,151,203,125,182,205,134, 82,169,196,219,111,191,141, 13, -223,126,219,217, 18, 78,147,201, 68,166, 45, 89,178,224,179, 5, 11, 90, 76,157, 58,149, 85,183,237,117,114,114,194,254, 3, 7, -248, 27, 55,110,244,249,124,195,134,183,223, 20, 8, 50, 27,227, 44, 11, 10,130,147, 84, 42, 50,139, 43, 0, 8, 13, 13,197,166, - 77,155, 4,147, 38, 77,226, 15, 29, 58,244, 95, 73,109,218,172, 91,211,173,219, 67,231,144, 16, 59,190, 64,224, 99,105,121, 2, -128, 66,163,137, 88,179,110,157,227,141, 27, 55, 32,149, 74, 81, 92, 92,108,126,151,209,161, 67, 7, 50, 97,194, 4,251,230,190, -190, 29,255,230,199,253,111, 90,228, 31, 47,176,106, 50, 66,106, 50, 70,234,116,138, 79, 9,149,198, 4,214,139,160,170,170, 10, - 85, 85, 85,248,249,231,159,193,227,241,106, 59, 93, 0,208,233,116,150,136,149, 72, 47, 47, 47,200,100, 50,132,132,132, 60,101, -185,226,241,120,224,112, 56,224,241,120, 16, 8, 4,208,106,181,240,243,243,131, 74,165,138,108,136, 83,173, 86,183,117,114,114, -170,237, 88,181, 90,109,173,184, 50,167, 87,167,211,161,178,178, 18,213,213,213, 80, 40, 20, 80, 42,149,237, 44,201, 47,195, 48, - 72, 78, 78,126, 20, 26, 26,218,150,205,102, 67, 34,145,136,149, 74,101,173,239, 80, 69, 69, 5,182,109,219,166,124,235,173,183, - 92,226,226,226, 26, 21, 88,132, 16,124,248,225,135, 16, 8, 4, 80,169, 84,248,241,199, 31,241,209, 71, 31,129,199,227, 65,161, - 80, 96,211,166, 77,152, 61,123, 54, 56, 28, 14,116, 58, 29,214,173, 91, 87,191, 37, 35, 53, 53,235,250,245,235,237,218,183,111, -239,120,232,208,161,210,190,125,251,186,246,239,223, 31, 34,145, 8,106,181, 26, 6,131, 1,157, 59,119, 70, 88, 88, 24, 74, 74, - 74,112,252,248,241,178,224,224, 96,151, 27, 55,110, 48,197,197,197, 57,141,117,222,117, 44,132, 48,153, 76,144, 74,165,168,170, -170, 66,105,105, 41, 10, 11, 11,145,159,159, 15, 14,135,131,198, 6,239,206,206,206,175, 71, 68, 68,176, 1, 64, 36, 18,161,109, -219,182, 88,176, 96,129, 81,173, 86,143, 1,112,188,230,180,129, 91,182,108, 57,116,249,242,101,142,151,151, 23, 30, 60,120, 0, - 87, 87, 87,142, 80, 40,108, 84, 96,121,120,120,252,118,244,232, 81, 39,179,168, 54,151,179, 74,245,228,113,140, 28, 57,210,105, -251,246,237,191, 1, 24,244,170,117,102, 18,150, 3,167, 99, 91, 81,213,177, 51, 15, 91,247, 29, 52,147,227,217, 98, 17, 0,224, - 53,128,115,250,216,186,214,131,250, 4,237, 51,251,101, 53,132,216,129,174,171,135, 14,109,195, 26, 63, 58, 42,147,195, 11,109, -177,115,251, 58,119, 39,199,238,255,215, 72,176,157, 32, 22, 1, 97, 45, 76,172,107,187, 51,221,103,207, 12,213,237,218, 58, 57, -115,231,190,219,125,120,188, 63,123, 1,152, 93, 31,247,221, 20,109, 92,165,194,187,165, 35,239, 2,129,112, 24,218,181, 13,134, -171,107, 21,126,220,188, 29,222,126, 93,161,213,106, 97,103,103,103, 99, 50,153,244,108, 54,123,167, 37,226, 10, 0,206,158,173, - 98,194,195,171,116,108, 5, 99,252,224,163,213, 35,250, 14, 28,214,170, 87,175, 62,204,169,211,167,244, 93,219,233,139,122,245, -234, 34, 61,127, 33, 33,163,184,184, 32, 56, 44,172, 53,210,211,146, 6, 0, 36, 25,120,126,133, 77,206,160, 39, 90,180, 32,231, -247,236,121,143, 81, 51,137,162,111,150,222, 27, 56,120,240,196,136, 30,221,123, 48,167,207,156,211,241, 81,118, 95,210,237,181, -130,137, 99,199, 28,218,115,240, 80,191,243,231,226,131,100,114,105,252,183, 27,169, 85, 92,213, 29,156, 25,141,238, 28,129,128, - 85,122,254,188, 49,114,210, 36,173,249,125,180,177,177,193,145, 35, 71,192,231,243,107, 63, 60, 30,175,246,187,187,187,187,121, - 81,149, 69,156, 0, 80, 84, 84,132,226,226, 98,216,219,219,195,213,213, 21,197,197,197,184,122,245, 42,210,211,211,193,229,114, - 49, 96,192, 0,176,234,241, 93,126,150,115,244,220,185,125, 91, 70, 70,250, 61, 43,174, 0, 64,175,215,163,162,162, 2,195,135, - 15,103, 29, 63,126,220,227, 68,110,238,176, 47,129,157, 13,113,182, 27, 60,184, 92,186,127,255,115,239,221,190,125,123,114,229, -202, 21,193,128,254,253,103,205, 89,186,116,227,134,237,219,243, 76, 70,163, 71, 83,242,206, 98,177, 88,132, 16,248,250,250,162, -162,162, 2,213,213, 79,102,170, 37, 18, 9, 28, 29, 29, 97, 48, 24,192, 80,202,253,155, 7,121,207,213, 34,255,104,129, 85,147, - 25, 0,136,174,219,161, 48, 12, 99,145,184,226,114,185,141,250, 84, 89, 98,213,122, 22,150, 8, 44,115, 90,133, 66, 97,237, 11, - 86, 87, 88,153,211,201, 98,177,192,102,179, 97,137,229,157, 97, 24,182, 66,161,192,129, 3, 7,208,179,103,207,218,233, 39,153, - 76,134,170,170, 42,200,100, 50,104, 52, 26,100,101,101,225,236,217,179, 8, 10, 10, 2, 96,217,166,173,153,153,153,183, 3, 2, - 2,162,204,157,119, 76, 76,140,207,214,173, 91, 11, 7, 13, 26,228, 69, 41,197, 23, 95,124, 81,214,185,115,103,151,186,157,123, - 99, 96,179,217,184,122,245, 42,130,130,130, 64, 41, 5,143,199, 67, 90, 90, 26,220,220,220,192, 48, 12, 56, 28, 14, 74, 75, 75, - 97,107,219,240,222,134,201,201,201,239,188,251,238,187,133,246,246,246,173,203,203,203,139, 4, 2, 65,247,132,132, 4, 95,189, - 94, 15, 59, 59, 59,216,217,217,225,216,177, 99,112,112,112,192,199, 31,127,156,171, 86,171,175,138,197, 98,119,181, 90,125,183, -184,184,248,139,166, 60,111,163,209, 8,165, 82,137,202,202, 74, 84, 84, 84, 64, 46,151, 67,163,209, 52,154,198,231,161,123,247, -238,136,143,143,103, 47, 95,190,252,151,204,204, 39, 3,193,192,192, 64,124,252,241,199,108,111,111,111,100,101,101,225,246,237, -219,208,235,245,104,204,252,204,229,114, 99,230,204,153,211,205,207,207,143,232,245,122, 48, 12, 3,173, 86, 11,243,247,220,220, - 92,180,108,217,146,229,239,239,223,133, 16, 18, 99,201,130, 9, 43,158, 64, 94,178, 23,142, 60, 31,128,237, 4, 70,190, 17,202, - 23,220,140,164,164,164,100,233,184,169,236, 73,199,118, 85,187,167, 61,180,133,111,224, 4,248, 52, 31,142, 41,239,154,176,248, -155,120,120,251,182, 66, 78, 78, 14, 98, 98, 98,120,133,133,133,239, 2,152,107, 41,247,233,211,215, 77,167,142, 29, 31, 53,250, -141,137, 81,125,250, 12, 50,158, 60,121, 12,201,119, 79,166,188,251,198,235, 37,148,169, 38, 14, 14, 54,137, 15, 31,222, 15,142, -136,104, 15,189,193,208, 29, 88,188, 10, 64,189,141,202,163, 71, 84,247,213, 87, 95,177,254, 56,252,219,132,113,227,223,110,211, -187,119, 63,195,201,211, 71,113,251,218,233, 63,255,181,106,202,197,229,235,246,198,244, 29,240,122,184,208,238,250,177,136,112, -245,100, 95, 59,191, 71,214,154, 82, 79,103, 37, 20, 50,168,105, 23, 89,132,128, 82,250,148,184,122, 86, 96,177, 88,172, 70, 7, -254,117, 57,235,246, 69,230,129,244, 79, 63,253, 4,129, 64, 0, 62,159, 15, 46,151,219,168,155, 69, 93,206,148,172,172, 94,219, -118,238, 20, 60, 79, 92,149,151,151,163,188,188, 28,213,213,213, 24, 59,118, 44,239,171, 91,183,218, 55,198,233,231,233,169, 21, -139, 68,210,212,212, 84,175, 86,173, 90, 61,149, 94,185, 92, 14,145, 72,132,157,187,118,241,134, 12, 30, 60,189,247,177, 99,255, - 2, 80,213,212,188, 19, 66,224,230,230, 6, 71, 71, 71, 16, 66, 96, 52, 26, 81, 92, 92,140,148,148, 20,220,186,117, 11,108, 66, -140,127,231, 51,126,158, 22,121, 21, 44, 88,164, 62,107,139,165, 2,139,205,102,191,176, 21,171, 62, 88, 50, 69,104, 99, 99,115, -175,176,176,176,171,183,183, 55,140, 70, 99,173,192,122,118,138,208,108,237, 72, 74, 74,130,141,141,205,189,198, 56, 41,165, 93, - 58,118,236,136,131, 7, 15,226,252,249,243,120,252,248, 49, 84, 42, 21,180, 90, 45,212,106, 53, 82, 82, 82,192, 48, 12, 34, 34, - 34, 32, 22,139, 27,229, 4, 0,165, 82, 89,196,229,114, 67, 69, 34,209,255, 77,119,120,122,162,188,188,156, 49, 24, 12,216,182, -109,155,220,195,195, 67, 44, 18,137, 44, 22,172,132, 16,148,148,148,192,199,199,167,214, 7, 75,161, 80,192,205,205,205, 44, 40, -160,213,106, 97,107,107,219,232, 20, 33,165, 84, 3, 96, 78, 29,238, 14,163, 71,143,254,125,207,158, 61,205,207,156, 57,131, 27, - 55,110,192,213,213, 21,203,150, 45,123,156,157,157, 61,142, 82,122,235,111,120,193, 26, 61,167,188,188,252,192,189,123,247,186, -116,236,216,177,182,117,136,137,137, 33, 49, 49, 49, 46,117, 77,250,165,165,165,184,121,243, 38,206,156, 57, 3, 66, 8, 50, 50, - 50, 76,106,181,250,247, 6,238,205,243,247,247,223,186, 96,193, 2,137,209,104,172,173,219, 34,145, 8, 66,161, 16, 60, 30, 15, -108, 54, 27,217,217,217, 24, 62,124,184,253,247,223,127,255, 27, 33,164, 5,165, 84,143, 87, 4,213, 76,149,241,102,146,218,193, -209,209,255,238,213,139,191,117,121,173,166,141,184,122,241, 55,163,163,163,255,221,155, 73,106,135, 30,190, 85, 70, 73, 35, 60, -135,143,151,206,213,235,111, 13, 56,113,252,222,136, 57,179,167,240,253,155, 7, 74,175,220,184,231,255,154,105, 14, 75, 44, 2, -148,106,160,162, 10,120,240,136,205,248, 55, 15,148,222,186,147,198,255,215,119, 63, 7,170,212,186, 67,199,206, 86,157,104,100, - 48,166, 33,132,196,126,248, 57,247,226,196,119,220,248,124,161, 47, 20,149,119,208,204,223, 25, 99, 94, 15,197,198,205,119, 96, -103,231, 4,119,119,119,176, 88, 44,177,165,121, 47, 43, 43, 35, 7,118, 95,154,244,214,219, 83, 58,247,239, 55,216,120,226,228, - 31,156,243,167,226,174,254,182,249,243, 67,148,173,180, 33, 84, 33,242,245,243,185,155,245, 56,125, 92,143, 30,253, 32,226,219, - 4, 1, 97,207,173,176,181, 11, 7, 40,114, 89, 44, 8,223,122,251,189,215,250,247, 31,102, 60,121,242, 48, 78, 30,219,126,125, -209,162,102,199, 30, 23,236,226, 93,187,149, 47,140, 29,245,126,101,252,241,251,186,215,135, 6,164,123,137,219,170, 97,197,211, - 3, 72, 14, 71,106,212,106,125,125,250,247,103,171,114,114,184, 18,119,119, 35, 0, 24, 12,134, 70, 5, 22, 0,198, 18, 78, 75, -211,162, 82,169,192, 0, 70, 75, 56,139, 75, 74,154,213, 12,190,107, 97, 48, 24,106,197, 85,121,121, 57,170,170,170, 32, 22,139, - 81,170,213,186, 91,194,217,175, 83,167,109, 95, 45, 94, 60,119,255,129, 3,188,186,226,202,252,225,114,185, 88,185,106, 21,239, -163, 79, 62,121,127, 58,135, 51,179, 41,229,105, 30,172,179,217,108,112, 56, 28,228,228,228, 32, 55, 55, 23, 57, 57, 57,200,201, -201,129, 72, 36, 2,173,167, 60, 95,162, 5,139,188, 74,117,183,193,109, 26,154,226,228,110,169, 32, 48,153, 76, 47, 85, 96, 41, -149,202, 51,103,207,158,237, 20, 27, 27,203,185,126,253, 58, 60, 60, 60,106, 5,150,249,175,121,218,201,198,198, 6,135, 14, 29, -210, 43,149,202, 51,141,188, 68,103,143, 29, 59, 22,181,112,225, 66,238, 59,239,188,131,212,212, 84, 76,157, 58, 21, 85, 85, 85, -144,203,229, 40, 47, 47,135, 74,165, 66,167, 78,157, 32, 20, 10,113,247,238, 93,131, 74,165, 58,219, 72,197,161, 37, 37, 37,213, -174,174,174,158,207,254, 54,106,212, 40,247, 31,126,248, 65,245,224,193, 3, 67,215,174, 93,237, 44, 21, 26,102,236,222,189,187, -214, 50,151,158,158,142, 31,126,248,161,214,231,234,206,157, 59, 88,189,122,117,237,222,101, 77,172,236,183,194,195,195,141, 6, -131, 1, 65, 65, 65,240,246,246,134, 70,163,193,218,181,107,141,127,135,184,178, 20, 26,141,102,255,196,137, 19, 63, 75, 76, 76, -244,228,112, 56, 79, 76,215, 53,249,211,235,245,120,248,240, 33, 82, 82, 82,240,224,193, 3, 84, 84, 84,212, 14, 0,146,146,146, - 42, 13, 6,195,222,250,120, 93, 93, 93,191,248,245,215, 95, 61,108,108,108,158,170,207,102,235,167,217, 42, 90, 90, 90, 10, 7, - 7, 7,244,238,221,219,237,236,217,179, 95, 0, 88,248, 42, 52, 6,132, 16,210,181,179,164,219,135,239,191,141,142,237, 21,143, -238,221, 73,198,233, 99,235,106,157,220, 35,219, 71, 60,186,153,104,139,129,253,230,118,187,114,125,106,131, 78,238, 53, 62, 84, -199, 58,117,114,186,124, 56,238,204,198,121,179,167,220,252,114,241, 60, 55,141, 86, 41, 12,107, 97, 98, 1, 79,196,213,181, 68, -177,230,235,197, 83,110,174,248,110, 27,147, 91,162,159,117,227, 70,101,189,171,123,235,138,150,240, 16, 8, 61,252, 7, 23,250, - 55,143, 9,184,123,231,103,184,216, 87,194, 54,168, 43, 6,246,239,132, 51,103,239, 33,167, 64,131,162,162, 34,104,181,218, 6, -183, 61,120,112,247,208, 4, 74,168, 31,161, 36,151,176,168,112,194,196,201,221, 7, 15, 30, 70,227,227,227,140,135, 15,237,188, -188,119,199,250,253, 44, 30,151,163,214,217,235, 8,209,200, 24,150,109,170, 82, 89,254,164,241,228,241,234, 55,183,214,108,200, -218, 42, 60,204, 99,194,196,169,246,131, 6, 14,167,199,142, 29,102,246,238,217,118,126,239,207,145, 59, 25,150,156, 87,148,167, - 18,200,228, 6, 25, 37,124,135,106, 57,163,146,102,182,208,120, 13, 30,165,135, 21, 79,247, 3, 90,109,126,117, 94,158,167, 83, -207,158,130,135,139, 23,219,184,119,234,164, 33, 53, 62,194, 13, 9, 44, 54,155, 13,176, 88,140, 37,156,150,166, 69,173, 86,131, - 1, 12, 47,194,105, 52, 26,159, 18, 87,102,129,101,182,103, 88,194,185,121,209,162,235,126,253,251, 87, 92,184,112,193, 61, 58, - 58,154, 40, 20, 10, 40, 20,138,167, 68,150,151,151, 23,105, 21, 17, 97,179,251,252,249,192,133, 22,150,167, 37,121,103,177, 88, -127,187,192,122,229,172,174, 13,253,104,182, 96, 89, 34,176, 44,180, 96, 25, 12, 6, 3,220,220,220, 80, 86, 86, 86,111,135,207, - 98,177, 32, 18,137,204,115,192, 13,174,164,211,106,181,107,231,206,157, 59, 99,224,192,129, 46,161,161,161, 40, 45, 45,133,187, -187, 59,132, 66, 97,173,111,152,153,239,206,157, 59,248,245,215, 95,229, 90,173,118,109, 35,156,107, 86,173, 90,245,193,200,145, - 35,157, 60, 60, 60,224,232,232,136,187,119,239,194,209,209, 17,114,185, 28,105,105,105,176,181,181,173,245,203,137,139,139, 83, -104,181,218, 53,141,136, 54,154,144,144,160,183,181,181,189, 91, 90, 90,202,174,168,168,224, 84, 86, 86,114,228,114, 57, 87, 38, -147,113, 79,156, 56,225, 98,111,111,175, 58,119,238, 92,169,159,159, 31,251,241,227,199,108,131,193,192,178,160, 83,196,204,153, - 51,193,227,241,160,213,106,177,118,237, 90,204,157, 59,183,214,231,106,213,170, 85, 88,176, 96, 65,173, 96,222,178,101, 75, 83, - 69, 22,244,122, 61, 12, 6, 3, 12, 6,131, 69,162,247,175,192, 18,161, 78, 41, 45, 38,132, 12,233,216,177,227,169,125,251,246, - 57,215,236, 41, 6,169, 84, 10,169, 84,138,210,210, 82, 84, 87, 87,195,104, 52,194,219,219, 27, 82,169, 20,135, 15, 31,150, 41, - 20,138,254, 13,173, 32,100,179,217, 19,187,119,239,206,121, 54, 13,230, 81,157, 89,180, 11, 4, 2, 20, 22, 22, 34, 38, 38,134, -127,225,194,133,137,255,116,129,101, 22, 46, 45,131,193, 27, 58,108, 44,175,109,212, 0,213,205,219, 39,114, 68,196,152, 51,168, - 79,208, 62,224,201, 54, 13, 55, 19,109,209, 54,106, 0,107,104,145,174, 83, 85,229,230,182,173, 66,136,190,161,176, 58, 0,224, - 98,207, 12,239,223,167, 89,145,157, 29,225,124,189,120,197,209, 95,182,111,233,120,109,247,255,109,211,240,245,226, 39,219, 52, -244,239,211,204,152,250, 32,125, 56,128,237,150,138,150, 33, 67,134, 38,110,254,121, 7,242, 51,227,188, 54,174,112,224, 67, 83, - 9,112, 67,209,189,179, 29,110,108,200,197,159,127,254, 89,172,211,233, 98, 26,172, 75,132,250,165,164, 38,135, 68,134,183,242, -152, 48,241, 61,187, 33, 67,134, 35, 62,254, 8,118,108,251, 57,225,245,177, 35,127, 41,168,148,179,221,184, 54, 60, 27,202,240, -217, 60,123,142,208,198,166, 68, 95, 88,248,164,241,228,112,237,128,209, 76, 3, 51,132,152,246,222,120,251, 94,125,134,227,143, - 99, 71,176, 99,219,230,139, 95,134,143,250, 57,160, 93, 75,210,169,253,183,239, 7, 52, 15,240, 87, 86, 75,229, 44,194,215,107, - 52,140,237,183,219,178,191,203, 92, 48, 49, 51, 49,121,244,191,172,171, 8,159,194,221, 29,131, 6,117,252,232,209, 35,158,107, -183,110,162,194,243,231,109,106, 34,135, 52, 40,176, 56, 28, 14,104,253, 83, 90, 79,113,146,237,219, 89, 0, 26, 92, 92,197,227, -241,160, 82,169, 96, 0,244,150,112,122,158, 60,153,247,232,209,163, 96, 39, 39,167,167,196, 85, 69, 69, 69,237,119,141, 70, 3, -149, 74, 5,145, 72,148, 98, 9,167, 52, 33, 65,179, 98,230,204,133,227,198,142, 93,127,230,236, 89,161,179,179, 51,100, 50,217, - 83, 2, 75,167,211,161, 87,239,222,188, 85,137,137, 19, 0, 44,178,164, 60,221, 99, 98, 26,245,247,101,179,217, 96,254,230, 41, -194, 87, 13,172,198,166,106, 44, 93, 69,248,188,142,145, 16,210,231,153, 67, 11,162,162,162, 52,233,233,233,240,243,243,171, 21, - 41,117,239,105,103,103, 7, 7, 7, 7,220,185,115, 7, 75,151, 46, 85, 3, 88,208, 16, 39,165, 84,161, 82,169,222,232,219,183, -175,154,195,225, 32, 44, 44,172,118,255, 43,134, 97,192,231,243, 33, 22,139,145,152,152,136,161, 67,135,170, 84, 42,213, 27,207, -238,129,245, 28, 78,153, 74,165,122,179, 95,191,126,170,212,212, 84,116,239,222, 29,127,254,249, 39,170,171,171, 81, 93, 93,141, -172,172, 44,180,106,213, 10, 42,149, 10, 63,252,240,131, 90,165, 82,189, 73, 41,149, 53,196,169, 80, 40,134,206,157, 59,151,253, -251,239,191, 7,120,123,123,135,119,232,208, 33,180,119,239,222, 45, 70,140, 24,225, 63,104,208, 32,207,224,224, 96, 77,255,254, -253, 93, 7, 14, 28,232,170, 82,169,184, 87,174, 92, 41, 50, 24, 12, 3, 27, 41,207, 90, 81,146,158,158, 94, 59, 37,200,225,112, - 80, 86, 86, 86,187,211,190,185, 49,122,158, 0,174,143,179,174,200, 54, 11, 43,179,208,106,172,237,175,135,179,209, 14,131,207, -231,155, 45,156,180, 49, 78, 74,105,210,253,251,247,251,246,236,217, 51,105,210,164, 73,138,226,226, 98,216,218,218, 34, 48, 48, - 16, 33, 33, 33,112,113,113,129, 94,175,199,161, 67,135,148,135, 15, 31,190, 39,147,201, 98,158,221, 3,235, 89, 78, 22,139,149, -245,188,198,213,108,189, 50, 11, 44,161, 80, 8,111,111,111,115,217,102, 53,165, 60, 95,208,178,244,247,114,214, 8,151,222,189, -250, 55, 31, 52, 56,214,254,112,220, 17,155, 13, 63,110,189,223, 99,248,140, 77, 46,254,115, 14,186,248,207, 57,216, 99,248,140, - 77, 27,126,220,122,255,112,220, 17,155, 65,131, 99,237,123,247,234,223, 60, 53,229, 65,232, 83,113, 9,159,147, 78, 27,190,160, - 83,143,174,193, 85, 9, 87, 18,140, 43,190,219,102,234,250,218,160, 27,235,215,111,218,187,126,253,166,189, 93, 95, 27,116, 99, -197,119,219, 76, 9, 87, 18,140, 61,186, 6, 87,217,240, 5,157, 44,201,251,180,247,198,219, 15, 30, 52, 28,241,241,135,140,251, -119,255,176,106,203,142,194,158, 49, 35,242,165, 89,153,183, 40, 84, 91,225, 98,123, 23,247,239,223,151,233,116,186,152,231, 57, -184, 63,143,115,234,148,241,117,197,213, 37,103,143,238, 91,238,223,135,233,244,233,163,134,179,103, 19,213,151,146, 74,100,183, - 83,203, 42,202,229,154,199, 74,133, 92,199, 48, 12, 40, 99, 98,127,245,213, 19, 71,220,250,158, 81,215,174,209, 56,119,102, 23, -182,109,253, 73,198, 48,208,140,218,183,207, 52,122,244, 98,234,223,172,153,255,206,221,187,200,144, 97,177,246, 20, 96,134,142, - 28,238,240,251,158,223, 73,243,160,230,205, 2, 3,159,108, 77,243,143,172, 75,127, 3,231, 34, 74, 43,229, 57, 57, 23,239,124, -255,189,214,253,141, 55,156,248,238,238,118, 48,153,136,185,125,175,239,195,225,112,158,178,184, 52,196,233,237,226, 82, 16, 23, - 23,135,144,144, 16,120,123,123,163,174, 15,172,121, 35,109,103,103,103, 28, 56,112, 0, 20,184,109, 9,103,187,128,128, 59, 43, - 87,172,208, 49, 12,131,202,202,202,127,179, 94, 85, 86, 86,130, 97, 24, 28,251,227, 15,157,188,186,122,155,165,121,143, 97,179, -171,199,245,232,177,124,240,224,193,250, 71,143, 30,129, 97, 24,212,181,100,149,148,148, 64, 34,145, 64,163,213,250, 18, 66,108, - 44,225, 44, 57,113, 66,140, 70,218,245,103, 45, 88,127,199,115,255,159,178, 96, 25,141,180, 23,131, 27, 0, 0, 32, 0, 73, 68, - 65, 84, 70,248,250,250, 62, 21,122,133,197, 98, 61,245,105,202, 10, 66, 74,233,118, 66,200,201,254,253,251, 47,236,220,185,243, -180,133, 11, 23,178, 67, 67, 67, 33,147,201,224,232,232, 8, 55, 55, 55,164,165,165, 33, 46, 46,206, 84, 86, 86,182, 9,192, 18, - 75,150,194, 83, 74,207, 19, 66,134,180,110,221,122,207,188,121,243,236,251,245,235,199,245,245,245, 5,165, 20,137,137,137, 56, -120,240,160,254,231,159,127,150,215,136,171,243, 22,166,245, 20, 33,228,245,129, 3, 7,238,156, 56,113,162,173,201,100,226,102, -101,101, 65,171,213,194, 96, 48, 32, 55, 55, 87, 31, 31, 31, 95,173, 82,169,198, 83, 74, 79, 89,192,119,135, 16,210,234,244,233, -211, 19,175, 92,185,178,116,210,164, 73,206,189,123,247,230, 25,141, 70, 92,190,124,185,180, 93,187,118,110, 37, 37, 37,250, 3, - 7, 14,148,107, 52,154, 5, 38,147,201,162, 80, 57,132, 16,200,229,114,184,184,184, 64,171,213,130, 97, 24,232,116, 58, 72, 36, -146,218,240, 70,148, 82, 52,197,105,254,153, 58,192,214,235,245, 24, 59,118, 44, 24,134,193,218,181,107, 97, 52, 26,155, 76,102, -111,111,127, 59, 41, 41,105, 72,219,182,109,107, 69,139,185, 14, 9, 4, 2,184,184,184,192,217,217, 25,241,241,241,224,114,185, -183, 45,124, 70,127, 2,104, 71, 8,121,237,222,189,123,111, 1,104,171,215,235,189, 77, 38, 19, 97,177, 88, 69,148,210,187,114, -185,252, 23, 75, 67,229,148,148,148, 44,125,251,237,183,219,237,218,181, 75,194,225,252,223,171,193,225,112, 32, 16, 8, 96,222, -212,146, 82, 10,157, 78,135, 47,190,248, 66,174, 84, 42,151,190, 42,141, 65, 84,135, 78,216,252,195, 58,201,217,115, 39, 75,239, -103,224, 72,221,173, 24, 36, 0,174, 92,159,122,164,170,114,115,219,194,188, 60, 73, 84,135, 78, 22,113,234, 76,198,242, 55,198, -111,242,173, 9,149,179, 52,235,113,206,154, 93, 91, 39,103, 2,192,191,190,251, 57, 48,183, 68, 63, 43,245, 65,250,240, 31, 55, - 93,232,164, 51, 25,203, 45,225,252, 63,209,178, 83, 6, 10, 13,165,244, 6, 33, 36, 32,244, 53,205,130,136, 48,222,176, 66,169, -161,160,186, 90,247, 33,165, 52,211,210,188,119,235,218, 19,231, 78,253,142, 29,219,118,202, 41,195,214,184,184,184, 80, 0,184, -127,223,133,222,191, 95, 69,255,207, 95,216, 65,233,106, 83,186,100,193,252,105,179, 21, 10,197,154,141,223, 54,188,225,108,235, - 54,157,209,186, 77,103,204,248,240,115,251, 86,225, 97,126, 0,176,111, 31, 53, 69, 4,147,163, 11,191, 92, 60,108,201,146,197, -144, 43,180, 48,135,213, 73, 75, 78,253,227,209, 35,170,179,118, 77, 79, 99,161,209,120, 3,179,103, 7,171, 42, 42, 92,187,125, -246,153, 11,231,147, 79, 88, 13, 57,185,215,125,127, 45,225,188,117,247,238, 31, 83, 39, 79, 46, 88,180,112, 97,255, 77, 63,253, - 36,138,140,140, 68,113,113, 49,194,194,194,224,237,237,141,211,167, 79,227,192,222,189,202, 42,133, 98, 1,128, 31, 45,225,220, -126,236, 88, 90,104,120,120,217, 79, 63,253,228, 53,120,240, 96,162, 84, 42, 33,147,201, 32,147,201,160,213,106, 81,179,145, 51, - 77,207,200,184,111, 48, 24, 54, 89,154,119, 83,105,169,112, 73,167, 78,249, 60,134, 89,249,250,200,145,115,151,124,253,181,160, -121,243,230, 68,171,213,214, 90,177,244,122, 61, 36, 18,137, 94,167,211, 57, 3, 80, 89,194, 41,248,249,103, 99,105,105, 41, 92, - 93, 93,107,183, 93,170,187,175,160, 66,161, 0,165,214, 77,112,155, 52, 80,168,175, 15,119,114,114,186,205,225,112,124,234, 90, -179,158, 23,219,174,238, 49,131,193,144, 95, 90, 90, 26, 85, 87,225, 82, 74,207,212, 35, 12, 2, 1, 44,235,213,171,215,235,115, -230,204, 33, 23, 46, 92,192,225,195,135,105,102,102,230,126, 0, 11,234,107, 28, 27,225,180, 21, 8, 4, 31,139,197,226, 62,230, -173, 24,108,108,108,238, 41,149,202, 51, 90,173,118,109,125,187,183, 55,194,105, 39, 16, 8,102,138,197,226,190, 10,133,162, 45, - 0,216,218,218, 38, 41,149,202,211, 90,173,118, 93,125, 1,164, 27,225, 20,217,219,219, 47,117,113,113,121,243,147, 79, 62,113, - 78, 72, 72, 40, 58,119,238, 28,175,170,170,106,151, 78,167,171, 55,216,243,243, 56,157,157,157,111,179,217,108,159,191,227, 25, - 1, 64,155, 54,109,226,135, 14, 29, 58,120,252,248,241, 48, 24, 12,248,241,199, 31,113,250,244,233, 63, 50, 50, 50,134, 52, 52, -250,124,150,147, 16,226,226,227,227,115, 97,218,180,105,254, 99,199,142,181,113,116,116, 4,135,195,129, 82,169,196,195,135, 15, -145,152,152, 72,143, 28, 57, 82,125,231,206,157,124,149, 74, 21, 77, 41, 45,179,180, 60,255,202, 40,249, 89, 78, 46,151,219,211, -215,215,119,247,162, 69,139,108,251,246,237, 43,114,118,118, 6,155,205,134,193, 96, 64, 81, 81, 17,146,147,147,113,242,228, 73, -229,254,253,251,149,229,229,229, 99,159,221,171,229, 63,149,206,151,201,217, 42,132,124,249, 76, 0,231,122,119,103,111,232, 92, - 75,210, 57,184,143,227,160,215, 95,239,208, 7, 0, 14, 28,184,117,230,143, 51,149,199, 94, 52,157,141,165,213, 18,206,150,193, -236, 69, 41,169,201, 79,109, 68, 25,222, 42, 34,189,101,228,200,111, 44,225, 50,239,228,254,108,222,235,236,142, 95,215,134,251, -212,116,170, 57, 32,244,231, 11,230, 99,217,210,229, 56,178,239,208, 31,169,143,104,252, 63,185, 46,253,157,156,230,224,196, 54, -158,158, 61,214, 50,204,252, 63,147,147, 37,117, 7,106,102, 75,115,221,193,164,151,151, 87, 73, 97, 97,161,187, 37,156, 67, 54, -108,208,171,196, 98,193,252,149, 43,123, 86,107, 52, 61,151, 44, 89,194,185,117,235, 22,126,248,254,123,163, 38, 63,127,103, 41, - 48,243,121,179, 31, 13,113,250,207,156, 41,252,244,135, 31,222, 9, 12, 10,114,123,235,173,183,184, 92, 46, 23, 74,165, 18,121, -121,121, 56,117,242,164, 46,245,254,253, 84,185, 92, 62,140, 82, 90,104, 41,231,144, 13, 27,244, 14,129,129,176,113,117,165,103, -207,159,183,159,250,241,199,211,154, 5, 4,216,247, 31, 48,128,107,103,103,135,202,202, 74,100,101,101,225,208,161, 67, 37,213, -213,213, 94,148, 82,147, 37,156, 59,175, 92,105,125,236,226,197, 81,223,124,243, 13, 63, 34, 34, 2,246,246,246, 80, 40, 20, 72, - 78, 78,198,197,139, 23,181,155, 54,109,146,201,100,178,105, 70,163, 49,238,239,122,238,255, 51, 2,235, 63,245,226, 17, 66,162, - 0,124, 89,243,239,215, 22,196,244,123,101, 26, 29, 66,136,159,147,147,211,102,141, 70, 67,213,106,245, 84, 74,105,238,127, 91, - 58, 9, 33,156,168,168,168, 31, 74, 74, 74, 94,163,148,194,222,222,254,106, 74, 74,202,116, 74,169,177,169,156,132, 16, 54,128, -215, 36, 18, 73, 39, 91, 91,219,158, 90,173,182,101,205, 52,219,125,165, 82,121, 81,175,215,223, 0,112,149, 82,106,250,255,153, -247,154,116,246,245,242,242,154,204, 48, 76, 16, 33,196,193,100, 50,193, 96, 48, 84, 49, 12,243, 80, 38,147,253, 12,224,244,255, -239,116,190, 44,206,240, 32, 50,130,178,208,178, 62, 33,240,148,160,121, 70, 56, 16, 6,247, 83, 30,210, 67, 77,168,243,172,216, -129,174,171,129, 39, 43, 13, 27, 11, 57,244,148,192,178, 64,180, 52, 89, 92, 6,113,222,166,132,250, 61,221, 40,146,220,176,214, - 35,118,252, 21,129,101, 41,194, 67, 73, 79, 80,188,198, 80,220,184,159, 65,207,189,170,109,221,203,228, 92, 78,136,211,247,142, -142, 87, 89, 28,142, 7, 0, 86,141,181,133, 97, 8, 49, 81, 66,140,117,167,177,234, 14, 40, 27,227,212, 3,145, 92,129,192,215, -100, 52,186, 23, 3,146, 99, 38, 83,123, 13,165,213, 62,192,151,137,148,166,189, 72, 58,245, 64, 36, 91, 32,240, 59, 70,233,240, - 82,177,184,117,137, 90,237, 10,128, 74,196,226,251,114,165,114,155, 70,163,217,248,156,160,234,141,114,242, 4, 2, 31,147,209, -232, 14, 0, 44, 14,167,100,143, 86,235,155,111,103,247,150, 70,171,245,151, 72, 36, 6,157, 78, 39,215,104, 52,227, 13, 6,195, -217,166,228,253,161,209,216,234, 10,139,213, 93, 47, 22, 59,235, 9, 17,235,140, 70,189, 78,175,207,211,104, 52,247, 0,124, 71, - 41,125,244,119, 62,247, 87, 14,230,213,102,127,199, 7, 64, 31, 43,167,149,211,202,105,229,180,114, 90, 57,173,156,127, 63, 39, - 0, 27, 0,126, 0,216,255,196,188,191,106, 31,142, 85, 98, 90, 97,133, 21, 86, 88, 97,197, 43, 97, 48, 81,225, 57, 62, 87, 86, -252,127,154, 34, 4,208,167,158, 7,101,177,233,239, 69, 86, 19, 88, 48,149, 96,229,180,114, 90, 57,173,156, 86, 78, 43,167,149, -243, 21,227,108,140,251,149,153,122,180, 78, 17, 90, 57,173,156, 86, 78, 43,167,149,211,202,105,229,180, 78, 17,190,220, 15, 11, - 86,212,167,172,221, 9, 33,238, 47,251, 92, 43, 94,237,186,240,156,107,189, 9, 33,222, 77, 60,223,211, 90,234, 86, 88, 97,133, - 21,255,108,252,199, 5,150,165,157,213, 95,236,212,254,146,224, 33,132, 44, 39, 4,133, 79, 62,100,249,203, 58,215,130,251,122, -185,186,186,126, 20, 30, 30,190,211,195,195, 99, 6, 33,196,173,137,215, 7,139,197,226,117, 18,137,228,130, 68, 34,185, 32, 22, -139,215, 17, 66,130, 95,210,115, 35,132,144,169, 66,161,240,188,151,151, 87,129, 64, 32, 56, 79, 8,153, 70, 94, 48, 0, 37, 33, -164, 5, 33,100, 54, 33,100, 14, 33, 36,180, 41,215,186, 71,196,238,117,139,136,189,235, 22, 17,155,236, 18, 57, 44,216, 45, 34, - 54,217, 45, 34,246,174,123, 68,236,222,191,161,190,190,240,243,173,185, 54,247,201,167,241,107, 9, 33,223, 17, 32,143, 16,228, -255,213,186,100,133, 21, 86, 88, 97,197,255, 95, 52,201,201,221,199,199,103, 32,195, 48,227, 0,128,197, 98,253,158,159,159,127, -252, 5, 58,156, 79,107,190,175,162,148,206,255, 43,231, 89,112,237, 26, 74,233,220,166,139, 51,124,202, 48,148,245, 36,159,228, - 51,119,119,119, 27, 54,155,253,111,142,131, 38,147,201,134, 16,204, 96,152, 39, 1, 42, 89, 44,242, 41, 33,100, 29,165, 84,250, - 34,162,112,194,132, 9,107,214,173, 91, 39,180,177,177, 65, 78, 78, 78,191,105,211,166,117, 37,132,204,166,148, 22, 53,118,189, - 72, 36, 26,215,177,211,107,179, 87,126,251, 47,137,187,155,155,216,104, 98,244, 89,217,217,226, 47,230,207,237, 36, 18,137,214, - 53, 20,228,248, 89, 33, 5,224, 61, 14,135, 51, 70, 40, 20,182,208,104, 52,143,140, 70,227,126, 54,155,221,127,233,210,165, 17, -131, 6, 13, 18,202,229,114,190,209,104, 12,218,177, 99,199,236, 95,127,253,117, 32, 33,100,120, 67,203,237,205, 22, 28, 74,105, - 65,157,195, 3,115,115,115, 35,185, 92, 46, 90,180,104, 65, 0,164, 53,114,126, 45, 40, 16,156,114,121, 95, 36, 0,132,119, 27, -157,158,114,121, 31,106,190,255, 13,131,129,167,235,130, 72, 36,250, 81,173, 86,231,153,127,175, 73,167,212,146,107, 9, 33,235, -107,194,252, 68, 0, 24, 89,115,234, 65, 74,105, 50, 33,196, 67, 40, 16,124,172,214,104, 8, 0,242, 87,234,146, 21, 86, 88, 97, -133, 21,255, 48,129, 69, 41,125,235,225,195,135, 54, 12,195, 32, 52, 52,116, 2, 0,139, 5,214,243, 58,156,222,189,123,183, 19, -137, 68, 79,237, 90,172, 86,171,249,132,160,247,139,136, 22,243, 61,116, 58, 45,139,203,229,131,197, 34,179, 91,183,110,221,172, -172,172, 44,129,197, 98,237,204,207,207,175,124,129, 78, 22, 91,182,108, 9,241,244,244,252,183,221,149,139,138,138,248,195,135, - 15,107, 18,223, 59,132, 8,180, 2, 65, 39, 30, 33,158, 38,163,209, 1, 0, 56, 28, 78,101,168,189,125,212,178,111,190,177, 33, -132, 48,229,229,229, 80,171,213,152, 53,107,150, 40, 53, 53, 53, 22,192,198, 70,210, 24,210,185, 75,215, 89, 39, 79,158,104, 41, -175,168,212,108, 89,179, 57, 81,205,225, 42,155,183,106,201,255, 97,243, 54,135,247,222, 25,255, 33, 33, 36,233,121, 97, 67,158, -225, 97, 1, 56,244,241,199, 31,135, 15, 25, 50,132,175, 80, 40,132,106,181,186,217,206,157, 59,191,136,138,138,146,180,109,219, -150,191,123,247,110, 34,147,201, 64, 41,181, 9, 11, 11,163, 99,198,140,209,236,217,179,103, 6,128,245,150, 8, 94, 79, 79,207, -133, 53, 2,189,110,221,227,122,121,121,137,106,202,116, 9, 33,152,213,144,184, 38, 64, 70,120,183,209, 0, 65, 80,202,229,125, -194,240,238,163, 53,160,120, 72,128, 12, 0,240,246,246, 94, 2,212,217,215,233,105,220, 47, 40, 40,120,161,216,129, 67,134, 12, - 5,165,244, 71,111,111,239,120,169, 84, 26, 65, 8,166, 90, 58, 8, 32,132,192,217,217,249,117, 0, 27, 0,188,241,224,193,131, -112, 0, 8, 11, 11,227, 2, 72,118,112,112,104,175,125, 34,174,172,176,194, 10, 43,172,248, 31, 20, 88, 60, 0, 72, 72, 72, 0, -165,148,255, 34, 70,129,186, 29,206,204,153, 51,225,233,233,249,172,104,193,133, 11,231,255, 74,158,158,186,199,215, 95,127, 45, -169,170,170,234,243,203, 47,191,244,240,246,246, 94, 93, 80, 80,112,189,145, 60, 74, 9, 33,171,106, 44, 14, 16, 8,132,233,211, -166, 77, 75,172,249,185,217,209,163, 71,109,134, 14, 29,170, 2,144, 13, 0, 2,129,208,155,205,102,133, 60,113,106,195,170,134, -132,224,104, 66, 2,249,124,126,175,169, 27, 54, 24,219, 15, 29,202, 17,187,186, 18, 0,200,126,240,192,121,213,183,223,118,173, -204,204,228,171,157,157,203,203,149, 74,117,122,122, 58, 4, 2, 1, 97,179,217,237, 27,203,176, 88, 44,254,232,155,101,171,196, -242,138, 42,181, 86, 94,173, 99,155, 12, 90, 91,145,200, 84, 92, 44, 45,147,216,216,168,230,127,249, 21,239,253, 41,111,125, 4, - 96,122, 35, 84, 51,102,207,158,221,178, 99,199,142,222,123,247,238, 37, 50,153, 12, 28, 14, 71,210,182,109, 91, 68, 69, 69,153, -206,157, 59, 71, 2, 2, 2, 16, 17, 17,129,203,151, 47,227,234,213,171,164, 93,187,118, 54, 7, 15, 30,156,240, 60,129,245, 28, - 81, 61,187, 75,151, 46,190, 18,137, 68, 35,151,203, 49,105,210, 36, 0, 64,223,190,125, 67,196, 98,241,143,213,213,213,194,184, -184, 35,175, 55, 38,174,165,201,135,199, 0,128, 91, 68,236, 93, 0,145,160,120, 88,146,124,184,117,157, 83, 90,166,165,165,117, -174,172,172,172,117, 54, 52, 7, 22,239,209,163, 71, 83,234,187,148, 16,178,106,216,176,161,159, 1, 4,209,209,209,210,153, 51, -103,210,228,228,228, 17,163, 71,143,234,157,145,241,176,222,116, 62, 91,143,198,141,123,243,177,147,147, 83, 95, 47, 47,175, 12, - 0, 28, 46,151,107, 62,149,237,237,237,237, 20, 17, 17, 49, 86, 34,145,100,177, 89,172, 0, 10, 74, 27,171, 75, 86, 88, 97,133, - 21, 86,252, 3, 4, 22, 33,132,214,233, 24, 72, 3,163,240,178,164,164, 36, 79,141, 70, 3, 66, 72,153, 5, 29,212,153,186, 29, - 14,155,205,254,129,197, 34,211, 9, 33,136,136,136,124,188,118,237,218,231,197,220,210, 69, 68, 68, 62,102,179, 89,205, 41,165, - 32,132,245, 35,195,152,164,207,227,172,175, 67,228,243, 5,159, 2,128,135,135,103,230,241,227,199,117,163, 70,141,194,183,223, -126,203,155, 55,111,222, 92,127,127,255, 25, 57, 57, 57,197,245,165,179,230,255,249,238,238,238, 54, 91,182,108, 9,153, 54,109, - 90, 98, 97, 97,225,124, 0,240,242,242, 90, 14,160, 21,128,236, 58,199,176,105,211,158,130, 41, 83,166,164, 75,165,210,249,245, -113,190, 78, 72, 11,255,176,176, 94, 75, 18, 18, 40, 75,171, 37,101,151, 46,201, 75,165, 82,195,163,210, 82,155,173,183,111, 15, -249, 98,249,114,174,175,159, 31, 46,196,197,185,148,169, 84,165, 50,173, 86, 35,149, 74,169,209,104,188,106, 65,222,195,221, 92, - 93,109,126,250,238,199, 91,182, 92, 54,227,238,237, 77, 56, 78, 14, 92,150,141, 61,159,197,225,104,154,251, 7,241, 0,132, 55, -246,140,120, 60,222,132,126,253,250,217,236,217,179,135, 68, 68, 68,192,193,193, 1,151, 46, 93, 66, 82, 82, 18, 12, 6, 3,171, -178,178, 18, 29, 58,116,192,202,149, 43,225,231,231,135,170,170, 42,228,230,230,186,240,249,124,215, 6,202,243, 41,193, 59,119, -238, 92,248,250,250,194,104, 52,162,162,162, 2, 70,163, 17, 98,177, 24, 0,144,157,157,141,163, 71,227, 26,173, 75, 22,138, 35, -116,233,210, 69, 65, 8,185,255,172, 5,171, 41,156,158,158,158,219, 74, 74, 74,219,197,196,196, 64, 38,147,233, 22, 45, 90,132, -214,173, 91, 35, 36, 36,212,146, 58, 63, 95, 32, 16,252,236,231,231,247,229, 39,159,124,226,228,228,228, 4,173, 86,251, 97, 81, - 81, 17,166, 77,155, 6, 0, 24, 60,120,112, 24,135,195,217, 58,105,210, 36, 52,107,214,236,129, 66,161, 72, 75, 74, 74,154, 87, - 93, 93,157,250,162,121,183,176,124,172,156, 86, 78, 43,167,149,243,191,138,211, 82, 45,242,143, 18, 88,148, 82, 66, 8,161,141, -101,136, 82, 90,233,237,237,237, 41, 18,137, 64, 41,109,242,116,155,201,100,154,225,226,226, 82, 50,127,254,252,110, 33, 33, 33, -186, 25, 51,102, 36,103,101,101, 45,168,123, 78, 64, 64,192,210,239,191,255, 30,233,233,233,217,203,151, 47,191, 92, 86, 86,246, -117, 19, 31,250, 60, 66,200,218, 26,107, 88, 89, 92, 92, 92,235,132,132,132,233,107,214,172,113,253,224,131, 15,120, 31,125,244, -209,120, 0,223, 54,198,195,102,179, 85,207,155, 22,172,167, 19,214, 61,207, 71,203,140,161,132,136,236,248,252,152, 37, 9, 9, - 84,151,157,173,250,245, 95,255,178,253,233,230,205, 69, 6, 74,221,221,220,220,208,189,107,215,106, 33,155, 93, 86, 82, 92,204, -184,181,104,193,206, 58,126,220, 69,205,231, 23,238,217,179, 71, 86, 94, 94,126,216,130, 74, 41, 55, 49,140,222,214,219,215, 56, -106, 68,191,240, 91, 55,146, 30,216,186,186,176,162,218, 69, 68,166,166,103,223,161, 38,147,129, 16, 34,111,140,199,222,222, 62, -164,188,188, 28,114,185, 28,174,174,174, 88,187,118, 45, 60, 60, 60,160, 82,169,112,237,218, 53,234,227,227, 67, 18, 18, 18,224, -227,227,131,210,210, 82,232,116, 58, 40, 20,138, 18,173, 86,171,174, 79,240,114, 56,156,159, 89, 44, 50, 25, 0,154, 53, 11,184, -255,227,143, 63,106, 0,160,101,203,150, 24, 49, 98, 4, 14, 28, 56,128,212,212, 84, 48, 12, 3, 74,169,198,199,199,247, 62,139, - 69, 90,214,104,164, 23,182,226,152, 67,240, 20, 20, 20,140,124,193, 23,157,120,120,120,140, 8, 11, 11, 27, 63,110,220, 56, 29, -151,203,133, 74,165,130, 74,165,194,253,251,247,117,253,250,245,147, 14, 27, 54,212, 61, 62, 62,190,193,116,106,181,218,199, 94, - 94, 94,115,103,207,158,189,118,211,166, 77,118, 95,124,241, 5, 76, 38, 19, 24,134,169,253,107,254,126,248,240, 97,100,102,102, -174,171, 43,174,172,176,194, 10, 43,254, 87, 96,169, 22,249, 71, 9,172,255, 36,216,108,246, 79,167, 78,157,106,219,163, 71, 15, - 78,239,222,189, 35,124,124,124, 34,242,243,243,147, 1,192,199,199, 39, 98,192,128, 1, 17,110,110,110, 88,183,110,157,138,205, -102,255,244,130, 15,169,110,103,151,232,233,233,185,250,224,193,131,171,166, 78,157, 10, 15, 15,143, 86,255,233, 60,219, 9, 4, -237, 38,173, 93,107,228, 26, 12,172, 13,171, 87,219,253,235,252,249, 85,123,247,237,227,116,233,210,133, 80, 74,113,239,238, 93, -209,202,245,235,109,198,198,198,102,167,101,102, 26,143,156, 60,105,144, 22, 20, 84, 20,148,150, 46,164,148, 86, 52,198,111, 48, - 24,174,101, 60,204,240,238, 22,243,154,215,165,155, 41, 73, 35, 99, 7,245,226,114, 88,228, 97,118,193,109, 79, 15, 23,251, 11, -231, 79,107, 12, 6,195,181,198,120,148, 74,101,150,209,104,116,162,148,186, 94,184,112, 1,174,174,174,168,172,172,132,193, 96, -128, 78,167,211,169, 84, 42, 97,121,121, 57, 52, 26, 13,180, 90, 45,236,236,236,112,239,222, 61,169,209,104, 60, 87, 31,167,209, -104,124, 79, 40, 20, 46,163,148,114,181, 90,109,225,153, 51,103,192,227,241,124,237,237,237,231, 27, 12, 6, 20, 22, 22,226,202, -149, 43,203,245,122,125,158,249, 26, 62, 95,224,170,213,106,141,245, 57,185, 91,106,193,122, 81,248,248,248,120, 5, 4, 4,204, -158, 55,239,211,160,214,173,219,162,172,172, 12, 12,195, 64, 34,145, 64,165, 82,193,206,206, 14,175,189,246, 90,226,210,165, 75, - 43, 40,197,188,198, 68, 96, 97, 97, 97,185,159,159,223,194,105,211,166,205, 14, 10, 10,242, 3,128,224,224, 96,244,235,215, 15, -199,143, 31, 71,122,122, 58,170,171,171, 77,183,110,221, 58, 90, 88, 88,104,141,237,101,133, 21, 86, 88, 97, 21, 88, 77,135, 84, - 42, 45,245,241,241, 57,113,231,206,157, 33, 99,198,140,193,133, 11, 23,222, 6, 48, 27, 0, 4, 2,193,219, 99,198,140,193,157, - 59,119,240,224,193,131, 19, 82,169,180,244,101,220,147,207,231,107,116,186, 39,198, 40,161, 80, 40,108,226,229,205,106,166, 6, - 1,160, 89, 3,199,234, 5,139,195,241,140, 28, 48,128, 83,153,148, 36,223,114,227,198,215, 59,119,238,228,116,235,214,141, 24, -244,122,152, 24, 6,129,129,129,164,119,159, 62,226,223,118,238,116, 50, 41,149, 9,223,124,246,217,165,205,147, 38, 85,167, 83, -154,109, 73, 2,181, 90,237,250, 15,167,191,215,247,236,249, 4,175,176,176, 64,231, 19,167,207, 39, 58, 59,217,219,132, 4, 7, -139, 43, 42, 43, 77, 11,230,125,202,209,106,181, 27, 26,227, 81,171,213,135,206,156, 57, 19,235,235,235,235,154,156,156, 12,157, - 78, 7,147,201,132,222,189,123,131, 82, 42, 0,192,112, 56, 28, 60,120,240, 0,122,189,190, 36, 35, 35,163,240,225,195,135, 2, - 0, 43, 26,226,213,104, 52, 57,117,255,247,243,243,235, 54,120,240, 96, 24,141, 70, 12, 24, 48, 0,113,113,113,221, 10, 11, 11, -183,212, 57, 37,231, 37,140,132, 64, 41,109,233,237,237,125,176,230,144, 69,206,237,158,158,158,161,193,193,193, 75,151, 47, 95, -206,245,245,245, 5,195, 48,112,114,114,128, 82,169, 70,121,121, 57, 90,181,106, 5, 95, 95, 95,172, 92,185, 18,120,178, 2,208, - 34, 11, 91,110,110,110, 22,128, 25,173, 90,181,226, 41, 20,138, 8,181, 90,189,168,119,239,222, 72, 76, 76,196,181,107,215, 62, - 84, 42,149, 21, 98,177,216,224,229,229, 53,142,197, 98,137,245,122,125, 92, 73, 73, 73,137,181,137,178,194, 10, 43,172,120,197, - 5,150,187,187,187,141, 80, 40,124,115,242,228,201, 14, 12,195,128,199,227, 69,186,184,184, 44, 43, 43, 43,171,110,234, 77, 85, - 42,213,222,157, 59,119,246,251,238,187,239,120,131, 6, 13,106,225,227,227,211, 17, 0, 70,142, 28,217,194,214,214, 22, 59,119, -238,212,171, 84,170,151,182,167,145,193, 96,232,209,161, 67, 7, 84, 84, 84, 32, 59, 59, 59,185, 41,215, 30, 61,122,212, 6, 79, -252,174, 26, 60,214, 16,140, 58,157,163,131,183, 55,171,224,252,121,125,133, 92,238,217,163,103, 79, 98,208,235,193, 98,177, 80, - 94, 94,142,220,220, 92,216, 59, 56,144, 7, 25, 25,146,159, 63,253,244,104,179, 54,109,248, 38,157,206,185, 9, 98, 66, 73, 8, -121,251,195, 25, 31, 28,218,181,235,119,151,170, 42,121,166, 80, 36,210, 9,248, 92,247,143,102,124, 96,170,168,168,152, 72, 41, -181,228, 57,173,216,181,107,215,128, 1, 3, 6,220,245,243,243,115, 43, 45, 45,245,168,170,170, 50, 85, 84, 84,176,241,196,151, -138, 0,192,249,243,231, 33,151,203,141, 38,147, 41, 1,192, 18, 74,169,206,210,180, 58, 57, 57,217,198,196,196,116,118,119,119, -135, 92, 46,135,139,139, 11,218,181,107,215,217,201,201,105,111, 69, 69,133,226,101, 86,238,211,167, 79,219, 82, 74, 59, 83, 74, - 49, 96,192, 0,139,174, 33,132,140, 26, 60,120, 48,151,197, 98, 65,173, 86, 65, 32, 16, 66, 34,177,131,173,173, 61, 66, 66, 66, - 80, 88, 88,136,254,253,251,235, 51, 50, 50,118, 20, 21, 21,253,209,212, 52,201,100,178,190, 93,186,116,153, 60,125,250,116,152, - 76, 38, 12, 31, 62, 28,121,121,121, 95,102,101,101, 29,117,113,113,137,125,247,221,119,157,156,157,157, 49,103,206, 28, 17,128, -181,214, 38,202, 10, 43,172,176,226, 31, 46,176, 26,154,243,244,241,241,233,224,226,226,242,161,173,173,173,195,185,115,231,196, - 0,208,173, 91, 55, 48, 12,243,147,151,151,215, 15,133,133,133, 87,154,114,211,202,202, 74,185,167,167,231,145,107,215,174,141, - 30, 57,114, 36, 78,159, 62, 61,177, 70, 96,225,218,181,107,120,252,248,241,145,202,202, 74,249,203,200,160,143,143,207,192,232, -232,232,145, 29, 58,116, 64,124,124, 60, 76, 38,211,213,166, 92, 95,119,197, 32,158,179,138,208,124,204, 34, 50, 54, 27,132, 16, - 24,141, 70, 0, 64, 89,105, 41,210,211,210, 80, 81, 89, 9,173, 70, 3,165, 74,101, 10, 9, 8, 80,203,116, 58, 46, 1,154, 52, -199, 69, 41,205,145, 72, 36,185, 42,149,210,205,201,197, 81, 45, 22, 10, 81, 37,151,241,110,223,186,174,160,148, 62,178,144, 67, - 71, 8,233,121,252,248,241,133,108, 54,123,140, 68, 34,193,244,233,211,217,209,209,209,224,241,120,208,106,181,168,170,170,194, -206,157, 59, 75,141, 70, 99,243, 26, 65, 34, 17,139,197,219,216,108,118,190, 92, 46,255,162,177,123, 8, 4,130,232, 97,195,134, -177,181, 90, 45,150, 44, 89,130,133, 11, 23, 98,192,128, 1,236,155, 55,111, 70, 3,136,123, 89, 21,155, 97, 24,244,237,219,183, -174,147,251,125, 75,174,227,114,185, 33, 65, 65, 65, 40, 45, 45, 69,105,105, 41, 92, 93, 93,225,229,229, 5,119,119,119,172, 89, -179,134,174, 93,187,246,162,201,100,218, 81, 92, 92, 92,246, 2,117,113,220,219,111,191, 61,118,244,232,209, 80, 42,149, 56,119, -238, 28,186,118,237,138,149, 43, 87,186, 94,186,116,105,114,135, 14, 29,192,229,114,113,241,226, 69,232,245,250, 66,107,243,100, -133, 21, 86,252,175,225, 85,241,191,106,212,130,229,232,232,104, 39, 20, 10,167, 14, 25, 50,164, 91,108,108, 44,150, 45, 91, 90, -251, 27,139,197,194,246,237,219, 37,135, 14, 29,250,204,215,215,183, 39,195, 48, 63, 22, 20, 20, 84, 88,122, 99,134, 97, 14,237, -218,181,107, 80,151, 46, 93,108, 98, 98, 98, 2,107, 58, 95,221,174, 93,187, 84, 12,195, 28,106,106, 70,158,221,244,209,219,219, -187, 53,135,195, 25, 57,100,200,144,214,239,188,243, 14, 82, 82, 82,176,115,231,206,135, 33, 33, 33,151,155, 72,157,221,200, 42, -194,229,141, 89,179,216,124,126,121, 85,113,177,131,196,207,143,235,104,107, 91, 20, 31, 31,239,219,167, 79, 31,146,151,151,135, -202,202, 74,104, 52, 26,220,186,117,139,225, 0, 57, 28, 71, 71,146,115,237, 26, 97,243,249,229, 77, 45, 3, 95, 79,199,224, 47, -231, 77,107,166,209,104,194,101, 50,153,145,203,229,114,125, 60, 28,242,154, 88,185,181, 98,177, 56, 10, 0,135, 97, 24,149,147, -147,147,205,169, 83,167,192,231,243, 65, 8, 65,100,100, 36,132, 66, 33, 79, 44, 22,231, 2,128,135,135, 7,255,167,159,126,178, - 31, 63,126,252,165,198,184,163,163,163, 57,254,254,254,253, 66, 66, 66,112,245,234, 85,220,191,127,191,224,250,245,235,222, 81, - 81, 81,240,246,246,238, 23, 29, 29,125,236,194,133, 11,198,151,244,146,190,144,147,187,201,100,162,132, 16,176, 88, 44, 48, 12, -131,210,210, 82, 52,111,222, 28, 27, 55,110,196,154, 53,107, 54,188,168,143, 84,171, 86,173,120,109,219,182, 29, 57,122,244,104, - 60,122,244, 8,203,151, 47,175, 44, 41, 41,185,122,234,212,169,129,211,167, 79,103,119,237,218, 21,229,229,229,248,245,215, 95, -141,137,137,137,251,165, 82,233, 33,107, 83,107,133, 21, 86, 88,241, 10, 10, 44,111,111,239,193, 78, 78, 78,147,223,120,227, 13, -118,104,104, 40,164, 82, 41, 20,138,106, 77,235,214, 17, 12,192,162,124, 62, 79, 47, 22,139,241,222,123,239, 33, 50, 50,178,227, -103,159,125,214,193,195,195, 99,123,113,113,241, 1, 75,110, 44,149, 74, 85,158,158,158,251,167, 79,159,190, 34, 41, 41,177, 57, - 0,220,188,121,243,113, 97, 97,225, 60,169, 84,170,106,162,184, 50,111,102, 73, 68, 34,209,141,224,224,224,172,129, 3, 7,218, -197,198,198,194,213,213, 21,119,238,220,193,202,149, 43, 51,116, 58,221,194,151,213,129, 55, 5, 70,173,182,248,246,225,195,182, -209,111,190,105, 55,115,240,224,213, 31, 76,159,254,221,151, 95,126,201, 9, 13, 13, 37, 42,149, 10, 55,110,220,160, 7, 14, 28, - 48,252,246,245,215,107, 33, 22,115,175, 29, 56,192,215,233,116, 57, 77,180,142,244, 28, 52,160,103,232,234,239,214, 67,163,174, -198,141,171,127,160,178,178, 20, 63,109, 62, 24,234,227,227,211, 51, 63, 63,255, 98, 19,202, 51,228,244,233,211,110,148, 82,240, -249,124, 44, 89,178, 4, 94, 94, 94,176,179,179,131, 66,161,192,236,217,179,237, 63,254,248, 99,123, 0, 72, 73, 73,129, 68, 34, -177,136, 55, 45, 45,173,253,180,105,211,108, 76, 38, 19, 78,156, 56,161,103,179,217,171, 79,159, 62,189,170, 77,155, 54,188,232, -232,104,155,223,126,251, 45, 10,192,245,151, 37,176, 94, 4, 38,147, 41,251,212,169, 83,145, 99,198,140,161, 28, 14,135, 84, 85, - 85,193,222,222, 30, 27, 55,110, 84, 21, 21, 21,189,240, 6,109,229,229,229,220,240,240,112, 30,195, 48,216,191,127, 63, 10, 10, - 10, 62,145, 74,165,165, 94, 94, 94, 39,230,206,157, 59, 53, 52, 52,212,231,193,131, 7, 5,106,181,122, 83, 97, 97, 97,190,181, -105,178,194, 10, 43,172,120,117, 45, 88,111,158, 56,113,130,205, 48, 12, 54,111,222,140, 59,119,238,208,178,178,178,133,132,144, -109,118,118,118,166,178,178,178, 55,167, 76,153, 18,187,112,225, 66,210,189,123,119, 92,187,118,141, 52,111,222,124, 36,128, 3, -117, 58,234, 62, 13,237,149, 33,147,201,110, 73,165,197,205,235,108, 44,217, 92, 32, 16,222,106,164,243,127,138,243,217,205, 44, -217,108, 86,167, 37, 75,150, 40, 61, 61, 61,117,201,201,201,216,180,105, 19,115,251,246,237,243,124, 62,255,167,194,194, 66,173, - 37,156, 47, 3,117, 57,249, 70,227,157, 29,115,231,182,108, 63,124, 56, 51,121,206,156,106,158, 72,244,209,234,245,235, 63,173, - 82, 40,188, 64, 8,117,182,183,207,217,188,100,201,242, 1,195,134, 85,167, 92,188, 40, 76, 58,125,154,235,106, 48,252,217,148, -116,230,231,231, 95, 12,110,225,135,173, 91,190,131, 94,175, 69, 81,193, 19,125, 86, 86, 46, 67, 67,226,234,121,156, 70,163, 81, -246,250,235,175,243, 0,136, 38, 76,152,192, 47, 41, 41, 65,139, 22, 45, 0, 0,114,185, 28,127,252,241, 7,194,194,194, 0, 0, -247,238,221,171,253,222, 88, 58,109,109,109,251,244,232,209, 3, 57, 57, 57, 72, 77, 77,189, 90, 80, 80, 80,229,237,237,125, 53, - 55, 55, 55,186, 67,135, 14, 56,112,224, 64,239,250, 4, 86, 83,159,145, 37, 2,171,158,188,175, 56,116,232,208,232,107,215,174, - 13,153, 51,103, 14,167, 87,175, 94, 0, 0,165, 82,169,161,148,154, 94,132,179, 46, 12, 6,131,121,211, 83, 21, 0,212,136,169, - 47,254, 10,231, 95,173,159, 86, 78, 43,167,149,211,202,249,223,192,249,191, 36,176,140, 12,195,224,194,133, 11, 56,120,240,160, - 73,167,211,205, 47, 42, 42, 74,171,243,251,111,190,190,190,151, 70,142, 28,249,175,244,244,116,118,106,106, 42, 44,233,128,234, - 66,163,209, 24,158, 13, 21,172,209,104, 12,127, 53, 83, 91,183,110, 69,113,113,177, 62, 47, 47,239,140,209,104, 60,244, 23, 87, - 35,254,229, 85,132,191, 81,170,125,147,144, 51,139,186,117,235,187,240,244,105,193,228,207, 63,215,190,253,206, 59,159,152,116, - 58, 3,155,199, 99,248, 98, 49,203, 36, 16,112, 83, 46, 94, 20,174,123,255,125, 39,181, 86,123, 98, 71, 19, 28,199,235, 88,176, -240,246,228, 89, 80,215,177, 96, 93,187,149,142,166, 90,176, 52, 26, 77, 56, 0,136, 68,162, 92, 0, 30,111,189,245, 22, 24,134, -129, 90,173,134, 66,161, 64, 97, 97,161,236,157,119,222, 49, 1,128, 88, 44,230,140, 28, 57,210,206,162,130,108,214,204,131,205, -102,227,216,177, 99, 16, 8, 4,231, 0, 64, 32, 16,156, 59,125,250,116,244,184,113,227,224,235,235,235,103,222, 4,165, 33, 30, -247,136,216,189, 20, 8, 6, 65,208,147, 55, 29, 65,110, 17,177,119, 9,144, 81,179,203,251,253,118,237,218, 1, 22,250, 93,213, - 69,105,105,169, 18,192,175,238,238,238,127,124,242,201, 39,111,117,238,220,185,251,194,133, 11, 9,165,244, 47, 7, 70,167,148, -194,100, 50, 89, 91, 29, 43,172,176,194,138,255,101,129, 69, 8,217, 29, 19, 19, 51,150, 82,202,102,177, 88, 59,159, 17, 87, 0, -128,188,188,188,199, 62, 62, 62,155, 3, 2, 2,106, 3, 64, 55,177,195,145, 18, 66, 86,178, 88,228,211, 39,255, 55,125, 99,201, - 58, 33, 73, 62, 5, 64, 88, 44,246,182,196,196,196,207,115,115,115, 75,155, 42,248,158,135,151,177,138, 16, 0,118, 81,154, 53, -150,144,147,115, 34, 34,250, 12,120,255,125,180, 30, 48,192,206,203,223,223,164,214,235,153,123,151, 47,147,171,251,247,243,146, - 78,159,230,170,181,218, 19, 7, 41,205,109,106, 58,243,243,243, 47,182, 8,244, 57, 53,106,228,160,126,129, 1, 94, 0,128,204, -172, 66,148, 85,200, 78, 53, 69, 92, 61, 35,180,134,111,220,184, 49,142,199,227,113,234,134,156,209,235,245, 21,102, 17, 70, 8, -241,218,188,121,243,110, 22,139,149,211, 24, 95, 90, 90,218,169, 69,139, 22, 13,120,252,248,113, 66, 94, 94, 94, 62, 0,100,102, -102,230,123,121,121, 29, 44, 44, 44, 28,152,155,155,123,156, 90, 96,122,122, 38,216, 51, 82, 46,239, 19, 2,136, 52, 7,123,126, -209, 88,131,117, 81, 35,202, 87,251,248,248, 28, 25, 56,112,224, 88, 66, 72,241, 95,225,147, 72, 36, 70,181, 90,109,100, 24,134, -163,215,235,169, 68, 34, 49, 90,155, 31, 43,172,176,194,138, 38,161, 3, 0,115,228, 16,179,225,196,245,153,239, 58, 0,117, 67, -249,153,255, 47, 5,112,171, 14, 71,221,227,141, 93, 11, 0,101, 0,238,214, 28,251,107, 2, 43, 63, 63,255, 56, 44, 8,230,108, -233,121, 13, 8,164,249,132,144,117,102,177,244, 87, 57,140, 70,227, 75,137,223,198, 98,177,178,134, 14, 29,218,164,243, 27, 59, -103, 55,165, 57, 31, 17,178, 61,126,195,134,182, 39, 54,109,242, 54, 25,141,206, 4,160,108, 62,191, 92,167,211,101,187, 26, 12, -127, 54,213,114, 85, 23,143, 50,243,251, 3, 64, 72, 72, 8,205,200,200,248,203,171, 49, 40,165,127, 2,240,109,228,156, 66, 0, -221, 45,225,203,203,203,139,195,115, 86, 10, 22, 22, 22, 30, 5,112,212,210,116,213, 6,123, 6, 88, 12, 97, 70,133,119, 27,189, - 31, 0, 99, 14,246,252, 50,145,159,159,159, 9,224,235,191,202,243,232,209, 35, 93, 64, 64,192,225, 21, 43, 86,196,222,189,123, - 55, 62, 47, 47, 79, 7, 43,172,176,194, 10, 43,154, 36,174, 8, 33,241, 53,125,207,144,154, 65,126,252,179,223,205,231,152,207, -171,123,142,153,227,217,227, 13, 93, 11, 0,243,230,205,251,124,249,242,229, 54, 0, 44,246,197,229,252, 55,148,218,203, 8,106, -251,178, 3,227,230,231,231,111,249, 59,242,186,254,137,128,186,254,119,150,103,122,122, 58,121,149,223, 50,115,176,231, 58,136, -248, 39,164, 59, 43, 43,107,123,116,116,244,239,121,121,121, 86,235,149, 21, 86, 88, 97, 69,211,224,250, 60, 65, 84,143, 30, 24, -210,208,239, 79, 13,216,255, 31,123,231, 29, 30, 69,213,182,241,251,204,108,205,166,108,122, 47,132,150, 70, 8, 32,157,128,161, -119,233, 29, 21,121, 41, 42,138,136, 82,165,136, 74, 83,154, 82,164,136, 52,233,130, 8, 72,137,210, 59, 1, 66, 8, 16, 8, 37, -164,247,158,173, 51,115,190, 63, 82, 12,144,178, 27, 80, 63,113,126,215, 53,215,238,204,206,220, 83,247,204, 61,207, 57,231,153, - 10,230,171,104,156, 16,114,112,193,130, 5,189,204,217, 96, 70, 60,103, 34, 34,127, 31,255, 68, 47, 86, 17, 17, 17, 17,145,138, -121, 54,106, 85,106,186,158, 29,159, 54,109,218, 12,152, 81, 61, 8, 20,103,230,238, 84,201, 74, 77,238, 29, 64, 8,233, 84,131, -157, 10, 23, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243,191,165, 89,157,118, 37,203,247,172,172, 74,175,170,234,194,103,191, - 87,183,172, 9,243, 30, 50,231, 64,252,101, 3,128, 78,162,166,168, 41,106,138,154,162,166,168, 41,106,138,154, 47, 56, 52,163, -148,246, 68,241, 91, 78, 40,165,180, 39,165,180,219,180,105,211,166,151, 78,155, 54,109,218,116, 74,105,199,210,249, 74,230, 41, - 91,166,116,218,179,159,207, 78,171,102, 94,147,183,249,255, 69, 27, 44, 17, 17, 17, 17, 17, 17, 17,145, 42,184, 2,160, 89,185, -232, 82, 58,128,155, 11, 22, 44,200, 46,215, 54, 42, 29,192, 13, 0,141, 74,230, 75, 47, 9, 36,149,111, 59,165, 47, 25,215, 87, - 48,143,222,148,121, 77, 69, 52, 88,149,208,216,141,253,194,219,211,185,105, 89,148,175, 56, 57, 36,132,146, 44, 2,101,233, 4, - 4, 1,227, 53,143, 79, 0, 0, 32, 0, 73, 68, 65, 84,148, 82, 36,165,229, 68, 68,166,210, 89, 53, 93,159,191, 7,177,119, 86, - 42,151, 11,148,134,150, 76, 58,149,155,169,155, 20,149, 75,115, 76,213, 8,116, 37,129, 74, 6,159, 10, 20, 33, 0,192, 16, 68, -106, 5,124,125, 59,133,222,126,209,227, 65, 8, 33, 13,156, 48, 86,110,161, 26,162,182,181,171,151,157,157,113,207,160,213,237, -142, 78,199, 90, 90,131,180,233,117,237, 73, 75,129, 98, 6, 0, 70,202, 96, 73, 76, 38, 61, 33, 94,117, 34, 34, 34,127, 19,236, - 11, 46, 95, 81, 10,160, 23,237, 92, 68,197,211, 98,146,201,122,150,203, 38,206,247,183, 99,150,193,106,224, 76,222, 5,193, 92, - 0, 20, 20,159,223, 74,163,107,204, 90,222,157,116, 82,178,236, 6, 0,172,214,192, 79,166, 2, 78, 87,120, 51,103,208, 78, 41, - 99,151, 0, 16,180, 60, 63,250, 86,146,233,237,193,130, 61, 73, 55,137,192,108, 21, 40,149,242, 2,221, 12,138,131, 86, 50,156, -187,144, 64,181,230,108,171,183,167,115,211,253,151,147,187,156, 88, 51, 17, 45, 66,234,130,242, 28, 32, 24,161,106,251, 41,126, - 95,246, 38, 90, 4,122,131, 10, 70, 64,224, 96,213,253, 27,116, 15, 86,215,248,207,225,239, 65,236,125, 28,157,163,214,175,223, -224,234, 94, 39,136, 8,156, 1,119, 47, 31, 27,241,209,148,217, 29,130,213, 36,216, 20,147,213,200,157,252,175,110,109,255, 79, - 39,205, 93,202,186,187,123, 89,242,156,142, 75,121,120,187,201,183,139,103,239,109,228, 78,150,220, 72,162, 27, 76, 53, 82, 65, - 78, 24, 39, 81,200, 7, 89, 40, 45,235, 21, 21,229,223,231, 13,198,221,193,238,146,110, 95,127,179,188,113, 88,231, 30, 86,124, -126, 10, 99, 20, 16,180,107,231, 14,159,239, 86,173,238, 65, 8,121,131, 82, 42,152,179,207, 2,197,148,152, 45, 99,123, 72, 37, - 44, 9,124,103, 61, 11, 51,186,190,150, 39,200,133, 12, 35,180,250, 52, 17,148,224, 76,116, 42,221, 94,147,117, 4,186,144, 31, - 8,133, 31, 8,246, 16,138, 29,183,210,104,154, 88,206,137,136,188, 90, 48, 12,115, 66, 16,132,246, 47, 83,147, 16,210,146, 82, -122, 81, 60,186,255, 77,204,139, 96, 17,124,121, 43, 54,222, 14,188, 1, 13,252,234,124, 1,192, 44,131,165,100,217,205, 87,238, -165,186,130, 51, 96,253, 87,239,237,212, 27, 1,206,104, 0,207, 25,193,115, 70,112,156, 1,188,209, 8,106,212, 97,246,198, 19, -128, 62, 31, 77,131,235,111, 6,224,102,234, 58,164,148,217, 26,113,246,152, 61,209,231, 98,251,154, 5, 31,196,167, 23,124, 16, - 30,153,148,209,192,133, 76,143, 78,195,143,230, 24,129, 19,223, 79,196,182,125,135, 18, 86,252, 80,120, 71,160, 20,246, 54, 22, -254, 35,122,221,242,218,242,203,137,248,229,155,181,119, 0, 64,109, 41,247,127, 43,242,158,247,139,156, 4,103,165,114,249,218, -213,223,185,186, 57, 88, 16,238,252, 66,112, 60, 15, 47,159,158,236,244, 9, 35,220,190, 92,182, 97, 25,128,183,171, 90, 62,192, -133, 4,249,213, 13,156,188,249,208,121,239,162,252, 52,253,177,109, 51, 98,169, 14, 70, 87,143, 64,233, 23, 11,150,178, 51,167, - 78,252, 56,192,133, 92,186,147, 74,163,171, 41, 12,152, 64,103,252,178, 96,225, 55, 33, 29,186,247,178, 18, 10,210, 89,109, 97, -129,223,250,141, 27,230, 6,132, 52, 87,181, 13,246,148,165,237, 30, 79, 52,249, 89, 48, 48, 74, 69,135, 6,157,108, 52, 35,135, - 26,215,111,218, 54, 1,192,183,102, 61,254,149,171,158, 22,132,154, 63, 77, 18,138,182,215, 47,158, 24,199, 39, 93, 1,229,141, - 0,111, 40,251, 4,111, 4, 21,138, 63, 91,140,223, 8, 0, 53, 50, 88, 12, 69,151,240,179, 87,220, 82, 83,146,155, 45,251,102, -254,244, 32,103,242, 27,120,108,189,157,133, 83,230, 26, 75, 17, 17,145,255,191, 16, 66, 56, 74,169,228, 37,107,246,160,148, 30, -126, 65,141, 79, 1,252,175,100,116, 3,165,244,235,151,176, 93,158, 0, 92, 75, 70, 83, 40,165,226, 59, 80,255, 81,131, 5, 40, - 65, 5, 96, 79, 95, 0,176, 48,119,101, 20, 80,130,176,128,177, 16,125,186,119,134,163,179, 43, 96, 44, 2, 12, 69,128, 81, 3, - 24, 11, 1,163, 6, 25,201,113,128,161, 16,120,240, 27, 56, 74, 21,102,239,149, 46, 23,136,217,141,142, 77,188,225,164, 86, 98, - 98,159, 32,199,117, 71, 98, 54,108, 56,118,183, 19,128, 33, 38,109, 43,165,104,209,176, 30, 86,108, 40,188,115, 32, 34,173, 43, - 0,244,108,236,120,164, 69,144,143,215,242,205,218, 59,135, 34,179,186, 1, 64,247, 96,245,111,205,253,221,188,133, 23,136,238, - 10,148,182,117,175, 85,143,240,215,215, 66,200, 75, 64, 94,158, 6, 9,143,182,192,206,227, 53,134, 23,240,122,117,203, 91,176, -152,246,225,103,139,164, 69,121,169,122,222,144,206, 59, 50,217, 18,137, 66, 32, 72, 58,165, 43, 20,114,248,143,198,140,228, 63, -153, 61,127, 26,128, 17, 85, 70,131,156, 49, 97,201,146,229, 13,219, 52, 13,112, 78,217, 59,145, 20,100,167,130, 99, 85,138, 62, -173,218,192,182,126,144,144,122,114, 9,145,215,233, 4, 91,135, 58, 72, 60,255, 19, 30, 95,252,153,132, 54,233,175,248,113,187, -108,100,101, 6,171,190, 19, 9,237,218,174,249,206, 58,222,238,110,148, 10, 16, 4, 10, 42,240,120,103, 96, 23, 76,223,245, 0, - 60,207, 99, 64,215,208,142,139,198,117,160,130, 32,128, 82, 1,241, 41,153, 69,127, 92,186,211, 49, 54,139, 94, 50, 37, 50,213, -168,101,251,208,200,136,139, 1,198,152, 95,209,116,196,130, 59, 4, 56, 91,238,154, 11,189,118,244,199, 0, 96, 99, 77, 11, 33, - 18,232, 12,254,241,145,133,240,110, 55,150, 93,187,253,136, 83,110,122,226, 91,123,183,172, 30,184,102,237,218,109, 0,198,139, -197,136,136,200,171, 1,165,244,165,155,172,216,216,216,228, 23, 49, 89,158,158,158,237, 0, 44, 46,109,137, 65, 8, 89,236,235, -235, 59,251,207, 7,212,167,158,241,114,121,158, 31,145,144,144,112,186, 42,205, 94,189,122,185, 3,240, 45,167,233, 75, 8,241, -173,104, 94, 91, 91, 91,190,117,235,214,143, 15, 30, 60,152, 36, 94, 33,127,173,193,186,243,100,247,196, 38,186,228, 2, 0,184, - 99,194,197,250, 84,213,158,214,200, 47,220, 52,247,205,133, 13,106,217, 35,191, 80,143, 99, 87, 31,131,231,141,224, 57,174, 36, -146,197,129,231,140,232,218,200, 17,173,181,227,241,237,193,187,224,120, 97, 65, 85,154,207, 98,160,194,176,198,157, 6,239, 18, - 4, 42, 87, 72,153, 92, 63, 47, 7,231,201, 3, 26, 49, 19,251, 52,128,198,192, 13, 14,114, 33,127, 68,167,210,245, 38,105, 10, -207,167, 44,162, 21, 77,227,185,106,247,189,138,232, 83,139,161,189, 58,219, 80, 93, 46,140, 25, 15,144, 95,100,196,131, 76, 35, - 82,180, 57, 80,144,100,147, 52, 5,138, 16, 15, 55, 55,203,115, 59,167, 62,114,144,228, 73,156, 37,156, 84, 78, 57, 41, 47, 80, - 22, 57,209, 58,135,128,206,146,210,118, 89, 85,109,167,133,202,250,205,118, 93,122,170,159,252, 52,150, 88,248,117,133,115, 19, - 47, 60, 58,189, 9,105, 87, 15,162,160, 32,143, 40,114,115,224,226, 80, 23,221, 71, 12,193,215, 67,154, 33, 63, 47, 31,108,114, -172, 90, 46, 85,216, 86,166, 73,121,140, 88,178,232, 43, 55, 9,203, 20, 31,207,210,129, 55, 66,163,211, 1, 60, 7,165, 68, 0, -161,165,191, 25,193, 27, 13,170,144,254, 83,223, 3,112,169,186,125,143, 78,165,219, 27, 56,147,182, 16,140, 1,212,168, 1, 1, -206,222, 74,163,101,166, 39,200,133, 12,123,173,235,168,182,148,224, 76, 77,206, 81,176, 3,122, 53,245,181,178,180,204,187,131, -132, 61, 31, 32, 22, 74,234,210,230,127, 24,246,206, 4,213,186,117,235,122, 19, 66,222, 45,223, 6,237,175,120,249,169,168, 41, -106,254, 91, 53,213,106,117,237, 90,181,106,205, 54, 26,141,237,100, 50,153,139,193, 96,128, 32, 8, 41,114,185,252,204,227,199, -143,231,229,230,230, 62,252,255,182,239,145,145,145, 38,155, 44, 83, 52,165, 82, 41,238,222,189,123,223, 84,147,245,172,166, 84, - 42,221,122,246,236, 89,236,218,181, 11, 0, 16, 19, 19,131,250,245,235, 91, 86,180,236,163, 71,143, 44,195,194,194,182,226,153, - 55,112, 60,171,121,243,230,205,218,191,254,250, 43,246,236,217, 3, 0,184,123,247, 46,252,252,252, 42,220,158,179,103,207,178, -195,135, 15,175, 13, 32,233,175, 62, 71,175,164,193, 42,121,191, 46,121,246,123, 5, 60,240,182,147, 55,129,150, 7,128, 7,230, -174, 44, 58,133, 46,106,228, 38,237,246,251,158, 85,237,148, 50, 6,115,214, 79,142, 79,207,202,111, 41, 33, 16, 0,128,163, 96, -236,172,228, 23, 22,188,213,200, 59,187, 64,139, 3,151, 19, 79,223, 74, 53, 47, 20,122, 43,137, 30, 7, 96,251,231, 13,146,248, -189,245,245,241, 29, 59,166,117, 11,153,212, 39, 4,191,156,127, 60, 9, 64,181, 89,218,169, 32,128, 10, 92, 89,163,246,146, 71, - 5, 64,224, 80,190, 77,183, 0, 90, 60, 77, 48, 47,130, 21, 70,136, 36,219, 25,221,237, 85,242,149,227,198,141,177, 49,166,223, - 67,150, 94,134,248,108, 45, 82, 52, 82, 20, 72,156,145,120,231, 38,207, 16, 28,175, 62,202,130, 60,240, 90, 91,123,185, 21, 19, -220,249, 61,143,188,163, 51,178,229,148, 99,109,250,126,105,155,241,251,210,199,156, 38,189,144, 16, 84,251, 18,109,181,218,182, -190, 54,243, 49,155,155,157, 1, 91,215, 6,232, 54,184, 23, 62,239, 25,132,252,188, 66,164,159, 63, 68,235,185,217,144,184, 51, -219, 48,179,123, 32, 50, 83,147,161, 51, 2,164, 80,151,165,213,107, 11, 42, 61,142, 12,214,126,244,201,148, 97, 62,110, 78,150, -165,157, 5,168,192,163, 81, 96, 29,116,110,215, 2,199,207,158,195,149,155, 49, 16, 74, 58, 11, 80, 65, 64, 66, 90,118,170,214, -192,111, 50,235,128,242, 28,168, 81, 91,161, 1, 67, 13,170, 6, 27,186, 16, 21, 15,204,106, 89,207,122,244,180, 94, 62,214,150, - 10, 2,173,145,135, 86,111, 68,254,185,149,112,168,213, 16, 42,165,146, 52,129, 70, 2,192, 40, 22, 37, 34, 34,127, 50,104,208, - 32,101,106,106,234,201,158, 61,123, 6,117,238,220, 89,213,182,109, 91, 20, 22, 22,226,216,177, 99, 40, 44, 44,244,241,242,242, -242, 57,118,236, 88,255,150, 45, 91, 70,123,122,122,134,237,222,189,219,156, 54,178, 18,252,217, 72, 93, 0,192, 17, 66, 80, 50, -141, 0, 16, 94,228, 61,180,114,185, 28,113,113,113, 47, 45,146, 37,147,201,160,213,106,145,152,152,120,191, 38,145,172,130,130, - 2,153,135,135, 7,156,156,156,192,243, 60, 10, 11, 11,177,127,255,126,228,230,230, 66, 16, 4, 88, 88, 88,224,203, 37,235,113, -231,218, 73, 92,186,116, 9,185,185,185,178,234, 52, 19, 18, 18, 72,163, 70,141,160,211,233,192,113, 28,180, 90, 45,194,195,195, -203,198, 37, 18, 9,166,124,177, 12, 49, 87, 79,226,250,245,235, 72, 72, 72,248, 91,222, 14, 98,134, 23,121, 37, 35, 88, 47, 12, -207,115,211,215,109,222,113, 97,250,248, 33,152, 48,180,147,215,188, 85, 63,119,138, 78,167,155, 1, 32,200,137,188, 53,178,125, - 61,111, 91,149, 20,159,255,116, 21,160,116,250,139,174, 47, 42,147,198, 52,112, 37,147,246, 93,138, 59, 57, 99, 72, 19,212,113, -179,169, 95,183, 46,145,199,198,154,240,206, 63,129,131,157,149,194,191,103, 99,199, 35, 16, 4,216, 90, 43, 2,192,115,176,181, - 82,248,119, 15, 86,255, 6, 0,182, 42, 89, 64, 69,145,174,202,104,230, 45, 27,171, 82, 72,198, 90,190,230,230,253,118,239,206, - 22, 61,122,247,183,176,146,114,200,188,116, 12,121, 82, 79, 24,237,125,160, 51,102, 33,225, 97, 44,255,251,197,219,137, 25,249, -186,201,213,110, 38,197,233,196,135,119,157,106,135,116,182,203, 56, 56, 51,173,246,168,159,124, 25, 8, 76,254,182,126,169,150, -206,205, 45, 46,223,127, 88, 32,208,231, 35, 56,207,146,151,155,251,216,200,195, 77,195, 75,172, 99, 79,252,136,105,221, 27, 34, - 59, 43, 13, 90, 3,135, 92, 13,103,112,181, 85, 42,116, 15,163,160, 51,112,208, 27, 5, 72,109, 61,112,236,194,205, 12,193,104, -172,244, 93,148,177, 25,244, 58, 0,171,242,211,234, 58,145, 70, 83,109, 44,174,195,168, 65, 92, 66, 18, 54, 31,186,208,164,100, -190,154, 63,157, 10, 92,113, 53,115,185,200, 21,161,104, 91,147,198,237,129, 46,164,185,133, 82,246,221,226, 73,195,131, 90,249, -217, 43,132,132, 11, 32,130, 1,150,188, 4, 26, 57, 15,181, 87, 29, 8,250,124, 90,164,213,230,220, 2,196,204,236, 34, 34,229, - 8, 8, 8,112, 85,171,213,183, 62,249,228, 19,251,126,253,250, 97,223,190,125,200,203,203,195,166, 77,155,176,124,249,114,204, -157, 59, 23, 70,163, 17,235,214,173, 83,237,221,187,183,249,234,213,171, 19,124,124,124, 26,196,197,197, 85,247, 66,117, 2, 64, - 1, 64, 90,114,239, 34, 0,132,195,135, 15,163, 71,143, 30, 56,124,248,176, 80, 50,141, 39,132, 24, 41,165,186,154, 26, 44,185, - 92,142,220,220,220,151,102,178,172,172,172, 32,151,203,145,159,159,111,182,201,226, 56,142, 77, 72, 72, 64,110,110, 46, 58,247, -238,141,101, 11, 22,160,125,251,246,232,220,185, 51, 40,165, 8, 15, 15, 71,167, 54,193, 24,242, 70, 24,110,223,190, 13,142,227, - 76,218,222,148,148, 20,164,166,166,162, 91,239,222, 88,191,122, 53, 90,180,104, 1,127,127,127,112, 28,135,147, 39, 79, 98, 96, -215, 54, 80,246,237,132,152,152, 24,241,162,254,183, 24,172,168, 52,122, 49,200,137, 28, 28,218,181,121,175,222,161, 65, 88,191, -243,247,175,130,130,200, 14, 0,112,176, 86,124,249,102,251, 58,136,126,146,141,223,175, 39, 29,140, 78,127, 57,189, 47, 4, 30, -142, 14, 54, 42,128,149, 67, 99, 16, 56,155, 7,168,182, 97,178, 64, 41, 84,237,166, 98,100,239,104,175, 22, 65, 94, 94,165,189, - 8,173,122, 44,197, 91, 55,239,123, 55,243,119,245, 6,111, 4,120, 35,108,134,252, 4,124, 97, 89,237,118,132,214, 86, 28,159, - 58,121, 82,235,238,125, 7, 91,200, 85,106,240,121,241, 48,166,220, 68,230,189,211, 40, 84,213, 71, 74,220, 3,236, 58,122, 41, -247, 94, 66,102, 30,195,224, 88,106,174,238,211,216, 44, 90, 80,157,174,214,136, 5,179,103, 78,238,185,107,199, 78,107, 69,157, - 80, 18,187,178, 71,174, 92,194, 41,156,106,191,198, 20, 41, 29,233,252, 77, 59,109, 10,245, 88, 88,157, 78, 81, 97,222,207,225, -199,142, 12,169, 87, 59,212,250,209,149, 67,208,104,117,208, 25,129, 6,205,195,192,243, 84, 78, 24, 34,216,176, 44, 73,203,204, - 6, 49,242,169,103,110, 60, 74, 62,123,227, 1,171,179,174, 94,251,169,139,142,176, 31,246, 14,107, 12, 24, 53,120,163, 93, 67, - 44,219,246,251, 7, 0, 70,189,216, 73, 46,142, 96, 81, 32,180,129, 51,249, 30, 64,232,213,253,203, 3,154,246,253, 8,230, 68, -176,130,157, 72,247,224,186,238, 63, 46,251,114,170,189,131,103,125,150, 8, 70, 80,215, 16, 32, 47,129,146,132, 11, 80,123,180, - 0,239,222, 6,235,190,253,166, 64, 16,232,142,154,164,168, 16, 17,121,149,209,106,181, 63, 47, 90,180,200,190, 87,175, 94,165, - 17, 24, 92,184,112, 1, 27, 54,108,128,165,229,211,229,100,143, 30, 61, 64, 41,181,159, 51,103,206,207, 0, 90, 85,166,217,178, -101,203,222,171, 86,173, 74,106,220,184,241,131, 18,147, 37, 3,192, 68, 69, 69, 49,241,241,241,196,206,206,142,186,187,187, 27, -147,146,146, 4, 0,252, 59,239,188,195, 90, 89, 89,213, 43, 40, 40, 56, 85, 83,131, 37,151,203, 95, 74,155, 44,169, 84, 90,166, - 43,147,201, 64, 41, 53,203,100,241, 60, 47, 57,124,248, 48,174, 94,189,138,185,141, 27, 99,146,135, 7,236,237,237,113,242,228, - 73, 80, 74, 97,105,105,137,172,172, 44,236,216,177, 3, 29, 58,116, 0,199,113, 50, 83,116,247,236,217,131,136,136, 8,124,209, -180, 41, 38,169,213,176,178,178, 66,120,120,113,173,159, 66,161, 64, 92, 92, 28,194,195,195, 17, 22, 22, 38, 94,212,127,181,193, - 10, 35, 68, 66, 92,224,106,208,107, 64, 57, 10, 16,184, 7, 5, 17, 89,116, 52, 53,152,187, 82,134,193,204,111, 55, 31,236,185, -244,163,222,100,108,159, 38,238,243,126, 60,241, 46, 0,140, 30,224,231,161, 82, 72,176,226,151,104,202, 48,152,249, 50,118, 48, - 40,136,200, 24, 6,239,118,110,225,143,164, 28, 61, 98,147,114,254,136,166,212,164, 42,157,223,151,142,196,150, 3, 39,227,151, -111,209,222,161,148,194,214, 74,225,255, 86,100,172,247,143,135, 35,158, 44,217,165,189, 67, 5, 10, 91,149, 52, 96,212,237, 54, -213,246, 34,108,230, 45, 27, 59,125,234,167,109,250,140,250, 68,201,221,217, 13,125,236, 81, 8, 6, 13,242, 12, 50,228,176,174, - 72,120,242, 4,243,215, 29,140,207, 43,212, 15,137, 74, 51,207, 88,198,100,208,130, 32, 39,210,111,254,231, 51,142, 47,248,114, -142, 85,209,131,147, 5, 44,225, 52,172,207,235,146, 47,231, 46, 37,249, 58,253,224,216, 44,154, 95,157,142,206, 26, 11, 23, 45, -249,182,231,152, 17,253,239,248,213,127,221,129, 79,122,232,160,205,203, 75,251,233, 72,132,107,201,147, 33, 1,128,216,132, 76, -164,231, 22,114, 60,103, 60,101, 45,197,188, 91,166, 68, 3, 75,168,227, 66,156,250,181, 13, 25,238,100, 45,131,166, 32, 7,206, -214, 82,116,109, 81,119,120, 29, 23, 50,245, 65, 42, 77,175,241,137, 22,140,160, 70, 13, 46, 46,236, 16, 64,121, 99, 0,120, 35, - 12,145, 91,205,143,132, 17, 76,154,208,206,202,198, 78,255,136, 65,161, 37, 96,225, 8, 98,227, 3,168,125,137, 52,112, 48,146, - 30,220,226, 62, 24, 62, 34,243,225,227,132, 31, 28, 45,240,181, 88,132,136,136, 60, 77, 92, 92,220,155,211,167, 79, 63,219,162, - 69, 11, 23, 71, 71, 71, 52,108,216, 16, 7, 14, 28,192, 39,159,124, 82, 54, 79,227,198,141, 65, 41, 69, 86, 86, 22, 22, 45, 90, -148,146,148,148,244,102, 85,154,119,238,220,185,187,101,203,150,182, 65, 65, 65, 6,153, 76,150, 3, 64,145,147,147,163,204,202, -202, 34, 90,173, 22,130, 32, 8,106,181,154, 79, 74, 74, 50, 14, 25, 50, 68,119,254,252,249,186,133,133,133, 79, 94, 36,130,229, -229,229, 21,149,153,153,153, 75, 8,121,161, 20, 14, 82,169, 20, 12,195, 64, 38,147,193,209,209,209,169,160,160, 64, 0,144, 93, -147, 20, 14, 28,199,161,105,211,166, 56,122,250, 26, 14,255,126, 30,121, 73,119,241,238,152, 55,209,176, 97, 67, 28, 61,122,180, -198,231,172, 81,163, 70, 56, 18,126, 22,103,175,222, 64, 92, 76, 36, 62,120,119, 12, 26, 52,104,128, 35, 71,142,136, 23,244, 75, - 48, 88, 97,132,144,210, 39,241,231,236,106,160, 19,105,228, 94, 79,190,117, 78,247,186,129,210,206,115, 64,164, 22,216, 93,255, - 72,155,153,243, 87,222,105,232, 66, 70,220, 76,173,190,183,215, 83, 81,172, 84,122,171,129, 51,217,126,227,118,192,240, 55, 90, -120, 97,253, 1,213, 44, 0, 24,220,182, 54, 46,223, 75,199,165,152,180,237,183,210,232,173, 23,221,185,134, 46, 68, 5,138,237, -139, 62,236, 19,230,227,233,138, 13,251,206,130, 16,252,108,210,141,150, 82,218, 34,200, 7,203,183, 60,219, 99,208,213,123,201, - 46,237,157,163, 81,121,221, 1,160, 75,160,229,111,205,234,218,121, 87, 23,201,176,144, 75,198,117,239, 63, 82,201,197, 28, 0, - 30,135,131,112, 58,104, 12, 2,146, 51,242, 81,164,246,194,201, 11, 55, 52,185, 90,253, 71,183,210,106, 22,181,139, 78,167, 15, - 26,187,145, 39,133,133, 26, 55,149, 83, 93,173,132, 8,180, 64, 43,224,114,244,227,220, 91,201,244,174, 41, 26,177,177, 84,223, -202,147,180,253,126,243,174,217, 82,153,124, 48, 75, 64,156,109, 45,157,190, 95,250, 5,172,173,173, 32,232, 11,128,194,116,244, -123,127,126,250,205, 68, 67,109, 0,240,115, 36, 86,237,234,200, 54, 75, 24,146,240,199,125,253,103,213,173,131, 24, 49,126, 68, -215,198, 82, 65, 95,136, 15, 23,237,196,218,169,125, 48,178, 99,160,244,208,185,152,241, 0,230,213,244, 92, 83,158, 3, 53,106, -208,106,198,233, 59, 4, 56, 75,129,208,171,187,190, 12, 0,174,153,172,241, 26, 33, 82,137, 27, 9, 12,241,182,148, 9, 9,231, - 32, 36,156,163,172, 87, 27, 16,239,118,132,184, 54,165,223, 45,158, 91,184,126,253,134, 99, 2,131,207,171, 75,121, 33, 34,242, - 95,133, 82,250,192,214,214,182, 91,143, 30, 61,126, 63,122,244,168,125,112,112, 48, 0,224,234,213,171, 0,128,166, 77,155,194, -207,207, 15,169,169,169, 24, 58,116,104, 70,114,114,114, 55, 74,105,149,109,122,243,243,243, 31,236,217,179,199,185,160,160,160, -201,172, 89,179, 82,125,124,124,242,180, 90, 45,201,201,201, 17, 56,142,131,157,157,157,188,113,227,198,104,221,186,117,193,249, -243,231,125,227,227,227,243, 0, 60,170,201,246,247,233,211, 7,167, 79, 23,119,194,123, 25,121,177,164, 82, 41,130,131,131, 61, - 30, 60,120,144, 88,114,124, 46,214,224,152,150,125,191,113,227, 6, 78, 93, 75,128, 68,175,129, 60, 61, 9, 23,247,237, 65,239, -113,239,129,227,106,222, 90,225,198,141, 27,216, 31,126, 17,150, 10, 9,238,222,189,133, 61,123,246,224,221,119,223,125, 33,205, - 26, 82,165, 23,249, 87, 26, 44, 74,233, 41, 84,144,133,182,110, 93, 34, 87, 20, 96, 78,215,166, 30, 83, 6,135,214,101,141,121, - 73, 16,120, 1,172, 20,112,118,180,193,214,173,219,107,111,223,185,243, 66, 35, 15,233,183, 2,199,205,188,153, 74,139,204, 88, -247,156,165, 59,207, 14,222, 58, 57, 76,242,110,247, 0,123, 0,144, 73, 24,172, 56,112,139, 3, 48,231, 69,118,170,149, 39, 81, - 22, 24, 49,214,213, 65, 61,107,250,255,122,218,135, 53,245,195,169, 75, 81,248,118,207,133,211,242, 52,108, 49,249,162, 22,140, -120,214, 55, 85,212,139, 16, 66,245,237, 41,121,158,186,202, 44,237, 96,120,124, 2, 48,104,161,213, 25, 16,159,201, 35, 62, 75, - 11,137, 74,134,171, 49, 9, 26,135, 20, 28,172,233, 62, 19, 66, 72,104, 29,165,251,172,175,150,120,106, 53, 5, 92, 94,118, 6, - 39,147, 95,148,170, 44, 20,201,230,232, 92, 72,160,218,215,107,203, 94, 3, 4, 86,174,164, 69, 51, 62,126,219, 50, 49,250, 40, -234, 49, 73, 32,148,194, 34,176, 39,172, 45, 88, 89, 91, 95,217, 19, 0,240,117, 85,203, 23,125,254,137,250,163,169,159, 87,219, -198, 43,136, 16, 89,195,102,174, 31, 5,251,216,225,116,196, 29,156,190, 25,119,235,244,213,187, 13,218, 55,116,135,159,167,237, -196, 32, 66, 22, 70, 83,243, 35,162,197, 39,134, 3,140,218,178, 94,132, 65, 46,100, 88,179,193,159, 85,216,123,176, 50,124, 1, - 33,134,167, 32, 44, 11, 16,166,184, 71, 99,252, 57, 72,108,235,208,237,187,246, 23,109,216,176,229,139,232,116, 42, 70,173, 68, - 68,170, 33, 39, 39, 39, 82,165, 82,117, 13, 9, 9,217,244,225,135, 31, 90,143, 24, 49,194,125,204,152, 49, 12, 0,164,166,166, - 10,203,151, 47, 79,250,238,187,239,114, 51, 50, 50, 70, 25, 12,134,155,166, 60,240, 18, 66,206,111,220,184, 49,253,212,169, 83, - 13, 90,182,108,169,108,218,180, 41,111,103,103, 39, 81, 40, 20,188, 94,175,215,198,196,196, 8, 15, 30, 60,112,207,201,201,185, - 7, 32,182, 38,213,247, 37,209,170,121, 44,203,206,166,148, 6,191,140, 54, 88, 42,149,202, 13,192,125, 66, 72, 61,115,171, 7, -159,187, 97, 75, 36,200,206,206, 70, 81,202, 45, 40, 19,238, 33,196,146, 65,144,157, 21,108,108,108, 94,200, 12,229,230,230, 2, -133,137, 56,123,246, 6,192,113, 80,171,213, 80,171,213,127,187,193,170,204,139,252,219, 35, 88,207,209,192,153,188,107, 39,199, -242,113, 61,235,202,124,189, 61,161, 75,184,138, 27,241, 5,152,217,178,121, 52,171,176,214,142,123,179, 79,211,254, 3,107, 33, -172,117, 51,226,235,166,158,184,112,233,154,247, 27,184,144, 79,110,165,210, 21,166,172,248, 86, 26,125, 24,232, 76, 54,156,136, - 76, 24,239,169,210, 64, 16, 40, 78,220, 76,198,205,199,217, 27,110,167,209,135,230,236, 68, 3,119,210, 73, 2,102, 39,165, 84, -169,182,180,204,111,220, 40,192,177, 83,171, 70, 76,183,215,155, 66,198, 2,103, 47,223,192,164,165, 63, 95, 20, 4,218, 51,194, -196,234,193,226, 30,131, 79, 27,167,226, 30,131,198,167,122, 12, 82, 74,105,113, 47,194,170,155,117,177, 44, 73, 41,138,187,226, - 42,117,168, 15, 77,236, 9, 60,206, 22, 16,151,150,143, 60,137, 43,116,137,137, 0, 21,158,156,164,180,198, 87,179,163,163,163, -115,237, 32,191,186, 43, 55,239,129,161, 40, 23, 15, 79,110, 66, 65,118, 50,190,252,254, 64, 93, 79, 79,207,215, 19, 18, 18, 78, -153, 81,200,248,253,126,112,187, 51, 40,192, 74, 21, 56,180,122, 23, 50, 28, 44,224,168,146, 65,208,164, 99,220, 71, 35,212,221, - 59,143, 80, 3, 64,220,221,235,240, 81,105, 76,210, 53, 56,160,255,224,246,254,182, 48,106,176,249,200,117, 45, 3,116,219,114, -236, 86,108,251, 0, 91,229,224, 80, 31,187,121, 73, 57, 3, 80,195,100,160,165, 17,172,178,136, 94, 13,122, 15,238,166,148, 15, -116, 34,177, 59,207,167, 89, 14,236,252,154, 74, 38, 33,132, 22, 36,130, 90, 56, 98,205,230,221, 5,114, 35,214,137,183, 78, 17, - 17,211, 40, 42, 42,138, 32,132, 52,252,244,211, 79,135,205,152, 49,163,157,165,165,101,109, 0, 40, 44, 44,124,104, 52, 26, 79, - 3,216,110, 78,111,191, 18,195,116,159, 16,242,240,209,163, 71,174, 63,253,244,147, 26,127,230, 99,212, 0,200, 69,113,194,204, - 26,247, 32, 44, 53, 83,132,144,217, 47,209, 52, 28, 46,209,172, 87,147,229, 25,134,225, 9, 33, 32,132, 64,161, 80,224,204,153, - 51, 24,212,179, 51,110, 31,202, 65,176,173, 21,154,143, 26,135,157,199,143,131,101, 89, 16, 66,192,178,172, 89,247, 17,137, 68, -130,179,103,207, 98,228,208,129, 80, 72, 0,181, 90,141, 79, 63,253, 20,191,252,242, 11, 36, 18,241,109,122,127,137,193, 2,193, -188,227,155,230,203,192, 27,241,235,166,111,112, 48,170, 64,127, 55, 29, 51,253,211,177,124, 15,242,133,244,165, 91,198, 31, 63, - 27,245,245, 59, 67,122,169, 58,180,239,140, 14, 97,237, 37, 13,154,189, 62, 11,192,138,114, 55,234, 78, 85,229,202,224, 5,124, -177,238,200,157,113, 59, 79,198, 16, 24,242, 49,164, 75, 51,202, 11,248,162,154,155,255,115,154,106, 11,171,157,103, 47, 92,176, -131,161, 0,143,175,255,161,172, 85,187, 46,192, 27,112,255,254, 61,124,183,121,159,112,242,242,221,173,122, 14, 31,198,102,209, - 66, 83, 53,139, 29, 21, 7,181,165,220,191,123,176,250, 55, 1, 20,182, 42, 89, 0, 21,120,216,170,164, 1, 93, 2, 45,127,163, -148, 82,107, 11,105, 0,229,141,213,106,106,244,220,218,205, 27, 55, 44, 25, 61,122,180,101, 70, 66, 10,146,242,162, 80, 32,247, -128, 81,229,133,216,235,167, 53, 69, 58,174,218,155,119, 85,199, 51, 35, 35, 35, 45,226, 82, 22,118,126,191, 0, 70,189, 14,105, - 9,197, 30, 53, 41, 35, 15, 54,142, 30, 23,204,209, 52,112, 66,110,255, 17, 99,101, 22,214,176, 24,217,191,151, 60, 54, 83,135, - 38,238,214,197,133, 69, 65, 58,110,135,159, 69, 88, 97,177, 95,123, 16,207,192,167,145,187, 73,219,105,173,148,125,216,253, 53, - 15, 60,124,146,140, 51,183, 18, 55, 63,200,164, 73,117, 28,200,230,216,164,156,241,125, 90,122, 99,217, 47,209, 31, 84,102,138, - 42,211, 12,114, 33,195, 0,132, 22, 55,114,215,128, 2,161, 65, 46,100,152, 41, 61, 7, 43,210,148,200, 48,124,201,111,113,159, -237,190,146,209,103,202,240,182, 54,173, 91,247,144,131,211, 35, 95,163, 51, 70,103,211,188, 23, 57, 71, 47, 16,157, 20, 53, 69, -205,127,165,102,137,217,217, 90, 50,188, 76,205,196,146,225,165,237,123,249,234, 64, 74,169,164, 36,122, 85,101, 35,247,234, 52, -203, 87, 7, 82, 74, 15,151, 68,175,170,140, 98, 61,171, 41, 8, 66, 82,211,166, 77,237,123,247,238, 13,158,231,113,239,222, 61, -196,197,199,163,211,248, 15, 96,107,107,139,211,145,145,184,123,247, 46,102,207,158, 13,163,209,136,253,251,247, 39, 84,167, 41, -145, 72, 12,117,235,214,149,245,237,219, 23, 28,199,225,193,131, 7, 72, 76, 76,196,164, 73,147,160, 86,171, 17, 17, 17, 81,166, -153,145,145, 1,137, 68, 98,248, 59,174,165,255,142,193, 2,120,240, 70,228, 30,159,131, 21,103, 96, 48, 24, 17,112, 43,141,150, -175,211, 94, 19,226, 64,126,141,140,186,243, 48,226, 92, 7, 57,210,110, 22, 47, 99, 6, 49, 25, 52,185,153,151, 36, 31,134,124, - 27, 60,248, 13,143, 82,243, 11, 98, 50,104,178,185, 59, 65, 5,158,192, 80, 4, 36, 95,197,249,211,167,112,242,226, 13, 92,185, -121,135, 63, 31, 17,179,147, 17,240, 69,116, 6,189, 87,131,167, 14, 88,245, 92,134,183,111,222,247,110,230,231,226, 13,158, 3, - 21,140, 80, 15,217,142, 81,209,173,189,155,213,177,245, 46,142, 92, 25, 97,247,191, 63,128, 37,202, 42,245,174, 60, 49,172, 11, -173,173, 24,144,159,147,217,178,227,235,173, 44,213,129,221,145,113, 63, 6,247,110,156,213, 68, 68,197,158,191,242,196,240, 66, -209, 17, 15, 15,143,118, 29, 95,247,199,144,113,211, 97, 40,202,197,131,147, 27, 81,144,149,130, 51, 23,172,112, 39, 47,175, 21, - 0,147, 35, 88,231,227,140, 13, 0, 32,212, 87,246,196, 26, 58,215, 55,123,245,134,130,104, 33,232,242, 64,138, 50, 16,155,168, -207, 29,240,125, 60, 15, 0, 42, 5,145, 88,210, 92, 27, 83,116,131,124, 28,234,171, 88, 35,182, 28,191, 5, 65, 40,126,205,146, - 32, 96,205,150, 63, 98,199,127, 49,178, 9,130,188,237, 26,145,146,228, 39, 38, 23,154, 20,109,175,236,252, 60, 64,251,251, 44, - 64, 48,224,236, 68,251,128,182, 43,178,218,214, 52, 18,118, 51,145, 38, 2, 24, 31,232, 78,214, 78, 92,113,100, 86,211,227,209, -161,147,255,215,199, 6, 84,124, 49,186,136,136,200,223, 79, 65, 65,193,184, 81,163, 70,173,149, 74,165, 78, 0,136, 32, 8, 16, - 4, 65,242,245,215, 95, 75,121,158,103, 24,134,225, 89,150,229, 14, 31, 62,108,228,121, 62, 93,171,213,142,171, 78,147,227,184, -216,247,222,123,175,110,117, 61, 14,119,236,216, 1,137, 68, 98,224, 56, 46, 86, 60, 19, 47,211, 96, 81,124,222,102,228,156, 57, - 0, 8, 40,230, 62, 99,174, 0, 0,145,153, 52,169,129, 51,153,212,160,217,235,115, 74,151, 49,119, 3,180, 60, 63,176, 89, 67, -191, 29, 0,160,163,252,200,154,236, 68,158, 78, 51,184,113,179, 86, 59, 5, 74, 37, 28,165, 27, 24, 1,123,181, 28,110,155,210, -115,174, 50,146,210,114, 34, 74, 95,224, 44,128,254, 89, 45, 88,146,142,129, 82, 74,203,170, 5,191, 81, 34, 35, 87, 87,109, 30, -167,179, 15,117,157,155,121,203,198, 30, 59,119,125, 28,207, 83, 87,150, 37, 41, 26, 61,183,246, 69,205, 21, 0, 36, 36, 36,156, - 10,114, 38,199, 34, 27,185,116,113, 84,149, 68,181,138,128,140, 34, 28, 75, 72,203, 63, 85, 19,205,236, 66, 99,159, 25,203,127, - 57, 32,151,178, 18, 80, 90,156, 8,148, 82,104, 13,124, 86,169, 9, 11,113, 32,238,159,238,231,118,176, 44,137,171, 78,239,210, -221,228,101, 67, 22,134,127,114,235,113,246,134, 71,217, 52, 10, 0, 30,101,211,168,122, 14,100, 86,108, 74,254, 39, 81,113,217, -223,152,219,110,130, 18,156,105, 54,100,206,115,211, 94,244,120,222, 78,162, 55, 0,244,107,224, 76, 58, 15,153,252,221,100, 66, - 32,190, 38, 66, 68,228, 63, 68,105, 20,139, 97,152,121, 47, 81,243, 48, 33,164, 7,128,251,102, 44,115, 9, 64,195,151,188,111, -153, 0, 50,197,179,252, 15, 25,172, 91,105,116, 13, 76,120,153,179,169,243, 85,186,124, 18, 13, 7,224,240, 34, 59, 81,162, 97, -255, 50, 15, 76,100, 42,157,245, 87, 28,240, 18, 51,245,151,180,229,137, 78,163, 93, 1,192,207,207,143,222,187,119, 15, 47,154, - 5,247,118, 58,189,129,103, 94,185, 80,145,201, 6,208,214, 20,189,152, 12,250, 5,240,124, 21,240,253, 76,250, 37,128, 47,107, -180,207, 53,204,212,110,242,181,149, 70,143, 3,213,103,211, 23, 17, 17,121, 53, 77,214, 95,160,121, 88, 60,178,255,113,131, 37, -242,239, 37, 38, 38,134,136, 71, 65, 68, 68, 68,164, 82,248,191, 64, 83, 76, 58, 44,242, 20,140,120, 8, 68, 68, 68, 68, 68, 68, - 68, 68, 94, 46, 4, 64,167, 10,173,184, 25,189, 3, 8, 33,157,204,182,250,213,232,139,154,162,166,168, 41,106,138,154,162,166, -168,249,234,105, 86,167,253,202,244, 78,164,229, 26, 47,191,236, 1, 64, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, -205,255,218, 32, 86, 17,138,136,136,136,136,136,136,136,188,100, 68,131, 37, 34, 34, 34, 34, 34, 34, 34, 34, 26, 44, 17, 17, 17, - 17, 17, 17, 17, 17,209, 96,137,136,136,136,136,136,136,136,136, 6, 75, 68, 68, 68, 68, 68, 68, 68, 68,164,230, 16, 51,223, 76, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 82, 13, 12, 0, 16, 66,104,249, 79, 17, 17, 17, 17, 17, 17, 17,145,191,147, 87,205,139,136, - 85,132, 34, 34, 34, 34, 34, 34, 34, 34,162,193, 18, 17, 17, 17, 17, 17, 17, 17,249,119, 24,172,176,146,144, 92,152,120, 72, 68, - 68, 68, 68, 68, 68, 68,254, 1, 94, 41, 47, 82,214,200,157, 16, 66, 41,165, 68, 60,191, 34, 34, 34, 34, 34, 34, 34,255,136, 41, -121,133,188,136,216,139, 80, 68, 68, 68, 68, 68, 68, 68,228, 37, 35,182,193, 18, 17, 17, 17, 17, 17, 17, 17,249, 55, 25, 44, 66, - 72, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, 77,209, 96,137,136,136,136,136,136,136,136,136,136, 6, 75, 68, 68, - 68, 68, 68, 68, 68, 68, 52, 88, 34, 34, 34, 34, 34, 34, 34, 34,162,193, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13,150,136,136, -136,136,136,136,136,200, 63, 4, 1, 80, 97, 79, 0, 74,105,184,201, 34, 53,232, 77, 80,157,190,168, 41,106,138,154,162,166,168, - 41,106,138,154,175,158,102,117,218,230,248,143,255,215, 80, 74,255,178, 1, 64, 39, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, - 53, 69,205,255,218, 32, 86, 17,138,152, 26,165,116, 33,132,184,136, 71, 66, 68, 68, 68, 68, 68,164,122, 36, 47, 83, 44,144,144, - 14,239,133,184,236,126,255, 70,138,125,117,243, 58, 59, 59,175, 85,169, 84, 35,138,138,138, 10, 9, 33, 66,249,136, 26,128,242, -239,239,121,144,150,150,214,182, 58, 61,133, 66,177,220,197,197,229,127, 5, 5, 5, 69,132, 16, 74, 8, 1, 33,164,212, 28, 60, -245,201,243,124, 66, 70, 70, 70,211,127,181,225, 1, 88, 71, 23,151,203, 82,150,245, 48,119, 89, 94, 16, 30,165,166,164,180, 50, -195, 92, 45, 32, 4, 83, 74,190, 47,166,148, 78,127, 5, 29, 36,107,202,108,193,128,117, 12, 48,132,103,152, 15,164,192, 42,157, - 32,124, 95,114,225,242, 53, 93,181,254, 50,169, 75, 40, 26, 17, 2, 53,165,200,165, 4, 55,228,205,105,236, 63,100,164, 91, 74, -165,210,193,118,118,118,214,105,105,105,191, 3, 56, 0,224, 13,103,103,231,142,217,217,217,249, 70,163,113, 23,165,244, 98, 77, -180,219, 53, 38, 83,229, 50,233, 59, 90,131,113,209,217,235,116, 99,216,107,196,129, 19,176, 80, 41,147,180,213,233,185,197,103, -110,208, 13,102,110, 43,121, 38, 26,111,246,123,191,246,152,120,222, 1, 96,191,157,157,159,194,201,230,119,169,156,125,148,147, - 90, 48, 98, 96, 90, 90,252,192, 23, 56,239,255, 31,113,114,114,122,155, 97,152,175, 40,165,224,121,126,102,102,102,230,166,151, -116, 93, 13, 3, 96, 89, 50, 90, 72, 41,221,110,198,178,113, 0,188, 75, 70,159, 80, 74,125,170,154, 46, 98,246,185, 89,179,111, -223,190,241,237,219,183,199,178,101,203,176,102,205,154,199,233,233,233, 11, 1,108,166,148,234,255,110, 29,209, 96, 85, 64, 16, - 33, 13, 71,119,107,117,104,220,160,110,114, 19,254,196, 63,116,235,214,109,228,230,205,155,165, 49, 49, 49, 22,190,190,190, 96, - 24,166,204, 0,149, 47, 39,107,213,170, 37, 84,167,199,178,236,138,126,253,250,141,218,179,103,143, 42, 34, 34, 66, 21, 24, 24, - 88,166, 39, 8, 2,158, 45,119,125,125,125,171,212, 83,171,213, 87, 89,150,245,172,200,156, 85,246,157,231,249,132,204,204,204, -166, 38, 92,132, 93, 1, 76, 51,225,144, 46,164,148, 30,173,106, 6, 41,203,122, 36, 37, 37, 57,155,123,174,188,188,188, 12,102, -252,105, 92, 8,193, 20, 65,160, 12, 0, 48, 12,153,106, 97, 97,177, 70,163,209,196,151,254, 94,114,206, 82,205,217, 6, 79, 79, -207,238,130, 32, 12, 43,214,100,182, 39, 36, 36,252,102,206,242, 54, 54, 54, 87,229,114,185,167, 68, 34, 33, 21,157,151,103,199, -121,158,167, 6,131, 33, 33, 43, 43,203,108, 99,125, 10, 32,221,128,118, 28,203,126,228,224,232,216, 54,226,216, 49,203,224,224, - 96,134,101,217,233, 0,190,127,145,255,141,254, 50,169,203, 27, 49, 72, 99, 84,244, 82,248,204,245,211,197,205,141,177,144,234, - 14,234, 47,147,221,127,183,201, 34,132,116,123,235,173,192,109, 85,192, 0, 0, 32, 0, 73, 68, 65, 84,183,230, 47, 90,180,200, - 81, 46,151, 51,187,118,237,106, 53,105,210,164,119,150, 45, 91,230, 49,120,240, 96,107,189, 94, 47, 76,157, 58,181, 29, 33,228, -115, 74,233, 47,230,104,183,110, 76, 90,250,251,186,205,158, 48,162, 3, 62, 89,176, 99, 66,104, 67,146, 97, 97, 41, 91, 51,160, -109, 93,219, 6,181,237,240,249,218,243, 31, 2,216, 96,198,182, 18,169, 84,218,216,213,213,213, 87,167,211,241, 37, 15,109,180, - 92,153, 0, 0,208,233,116,134,236,236,236,195, 47,122,108, 62, 81, 42, 91,180,176,181, 58, 62,103,216, 91, 22,121,217, 89, 46, - 43, 14, 29,136,220, 3,231,144,129,192,227, 87,233,134,192, 48,204, 87,137,137,137,110,148, 82,184,185,185,125, 5, 96,211, 75, -146,182, 44, 45,135, 9, 33,150,102, 46,235, 93,110, 89,111, 19,166,215,228,218, 87, 74, 24,230, 61,185, 84,218,133,231,249,134, - 37,215,208, 77,189,209,120,156, 19,132, 85,148, 82,237, 43,236, 3,166,140, 31, 63,190,243,140, 25, 51,124,167, 76,153,130, 41, - 83,166,212, 90,191,126,253,218,249,243,231, 79, 37,132,132, 80, 74, 11,254,102, 29,209, 96, 61, 99,174,188,186, 54,246, 59,249, -193, 91,131,100,194,158,229, 4,111,127, 86,165,185,106,213,180,233, 59,155, 55,111, 6, 0,140,232,211, 7, 93,154, 55,135,181, -149, 37,228,242,226,205, 33,148, 64, 38,149,161,239,164,143, 77,249, 99, 44,238,223,191,255,240, 61,123,246, 88, 1,192,154, 53, -107,208,191,127,127,216,219,219, 67,165, 82, 65, 38,147, 65, 42,149, 62,245,105,130, 97,243, 76, 76, 76,116, 86, 42,149,101,134, - 79, 16,132,167,134,114,245,208,224, 56, 14,245,235,215, 55,245,112, 77,203,205,205,109, 87, 88, 88, 88,101,221,109,237,218,181, - 1,224,168, 41,130, 95,125,249, 5, 4,174, 16, 18, 9,192,113,128,206,192, 64,168,224, 89,222,221,221, 29,239,189,247, 30, 94, -228, 5,223,189,122,245, 6,165,116,141,135,135,199,193,212,212,212, 96, 66, 48,174, 38,145, 45, 74,233,155,247,239,223, 87, 9, -130, 0,127,127,255,145, 0,204, 50, 88, 18,137,196, 51, 50, 50,210, 89,161, 80, 84, 26,169, 44,103,126, 97, 48, 24,208,164, 73, - 19,206,156,117,184, 0,222, 89, 12, 51,166,241,107,175,141,157,221,167,143,197,213,171, 87, 21, 12,195,128,227, 56,124,253,245, -215, 28,165,212, 54, 8,176,137, 6,242,170,184, 62,103, 0,120,187, 36, 42,187,129, 82,250,245, 83,191, 83, 52,210, 24, 21,189, - 30, 20,244,109,222,162,214, 84, 68,223,186,217,188,142,213,126, 88, 75,116,177, 0,254, 86,131,165, 86,171, 7, 46, 91,182,204, -105,195,134, 13,121,119,239,222, 53,124,255,253,247, 78,227,198,141, 11, 48, 24, 12, 24, 63,126,124,186,191,191,191,108,217,178, -101, 78,251,246,237,235, 10,192, 44,131, 37, 33,248, 98,104,159, 46,208, 26, 25, 24,141,156,147,155,147,245,214,137,111,133, 73, - 41,213, 99,203, 47, 17, 48,114,194, 70, 51, 35, 87,141, 7, 12, 24,224,179,125,251,118,201,237,219,183, 37,129,129,129,224,121, -190,108, 16, 4, 1, 60,207,195,207,207,239,133,143,203, 59,128,159,163,139,253,241, 86, 61,186, 91,184, 41, 21,176,207, 78,199, -104,153,196,122,147, 74,183, 13, 64,235, 87,233,134, 64, 41,133, 68, 34, 65,124,124, 60,156,157,157, 45,236,237,237,147, 1,204, -205,202,202, 90,247, 23,153,250, 26, 71,182, 94,226, 54, 52,151, 75, 36,123,183,108, 92,225,218,162,117,107,214,197,205, 25, 49, -247,158, 64, 66,248, 78,145, 87, 34,194,222,121,119,242, 68, 66,200, 0, 74,233,229, 87,205, 0,184,181,121,191,159, 91,232, 7, -107, 8, 21,240,249,202, 3,249, 11, 22, 47, 87,141, 31,243, 22, 59,105,210, 36,120,121,121,249,246,235,215,111, 49,128,119,171, -213,105,249,126, 63,215,214, 19,214,128, 82,204,249,238, 64,254,252,197,203, 85,239,214, 64, 71, 52, 88,207, 16, 76,136,109,136, -143,203,169, 47,167,140,179,162,191,253,200, 20,101,166,161, 50, 11,227,236,236,188,182,123,247,238, 35, 54,109,250,243,161,168, - 85,112, 48,250,117, 8,133,179,131, 26, 42, 75,121,241,109, 72, 32,184,113,247,145, 73, 70,192,203,203,107,252,222,189,123,173, -202,155, 8,153, 76, 86, 54,148, 55, 87,165,195,179,145,142,138, 80, 42,149, 8, 15, 15,135, 68, 34, 1,203,178,144, 72, 36,101, - 67,249,113,150,101,225,226, 98, 86,211,164,133,106,181, 58, 36, 63, 63,223, 38, 39, 39, 7,222,222,222,121, 0, 34,203,253, 30, -146,158,158,110, 99,142,160,192, 21, 98,210,232, 64, 72,245, 23,161,151, 54,135, 70,210, 6,231,175,220,198,193,163,167,144,152, -148,130,208,150,141,241,230,176,129, 56,126,252, 56,120,158, 55,183,192, 77, 37,132, 44,126,227,141,222, 83, 1,130,176,176,176, -212,137, 19, 39,210,168,168,168,126,131, 6, 13,236,120,239,222,125, 82, 18,217,154, 66, 8, 89, 97,106, 36,139, 82, 42, 3,128, -211,167, 79,131, 82, 42,175,201,181,167, 80, 40,112,225,194, 5,148, 86, 7, 51, 12, 3,134, 97,192,178, 44,126,189,239,136, 66, - 61,131,162,212, 40,124,208,203, 27,181,107,215, 6,195, 84,223,228, 48, 12, 80,158, 7,250, 17,169,116,146,155,187,187,239,235, -117,234,168,194,195,195, 89, 0,240,241,241,161,201,201,201, 57,251,247,239,207,151, 0,107,124, 40,221, 92,149,185,242,246,246, -110,195, 48,204, 87,165,199,156, 16,178,216,215,215,119,118,217,121, 19, 4, 12,235,108, 47,157, 56,241, 35, 89,139,176,226,135, -146, 22,189,183, 35,239,193,130, 64,146, 53, 67,253,119, 23, 6,185,185,185, 91,253,252,252,216,244,244,244, 63, 0, 60, 52, 26, -141, 43,183,110,221,234, 60,122,244,232,180,109,219,182, 77, 0,224,245,245,215, 95,119, 45, 40, 40,216,105,142,110,219, 70,164, - 71,211,198,193, 45,189,189,188,112,234,252,101,200,228, 82,219,247,222,238, 5, 43, 43, 9,190,217,112, 72,136, 75,200,154,112, -230, 6,221,108,134,185, 10, 25, 56,112,160,215,246,237,219,101, 0, 16, 21, 21,133,180,180, 52, 56, 56, 56, 64,169, 84,150,253, -231, 75,163, 88, 47,106,174,212, 94, 14,151,246,239,255,197,194,222,222, 22, 43, 63,158,136, 55,147, 18, 96,195, 50, 48, 26,225, -251, 42,221, 12, 8, 33,126, 3, 6, 12, 80,242, 60,143,194,194, 66,156, 60,121, 82,109, 97, 97,161,246,244,244,156, 3,192,100, -131,101, 97, 97,145,170,213,106,157, 75,202,209, 52,141, 70,227, 2,160, 72,169, 84, 90,148,204,162, 49, 51,178,245,164, 92,132, -234,137, 9,211,205,217,231,102,205,155,133,132,255,188,231, 39,171,220,252, 20,216,218,165,129, 65, 46,214,173, 91, 5, 11, 11, - 27,204,153, 51, 67,242,168, 83, 7,143,174, 61, 6,132, 19, 66, 58,189,114, 38,139,146,117,157,122,143,176,183, 80, 89,151,220, - 75,140,216,180,126, 34, 24,134,193,236,217,179,209,160, 65,131,177,132,144,207, 40,165, 89, 85,203, 96, 93,195,118,131,237,229, -202,226, 91,177,192, 27,241,253,142, 79,138,117,166,143,195,208,222,181,199,222,216, 70,142, 52,168,131,252,226,242, 31, 26, 41, -131, 39,104, 78,211,202,157,139,215, 41,165,167, 42, 27,255, 87, 26, 44, 66, 8,165,148,150,175,102,121,106,188, 42,106, 17,162, -168,111,103,117,116,245,220,137,238,236,133, 67, 18,205,147,251, 72,210,242,176,253,243, 38,250, 84, 87, 75,149, 74, 53, 98,211, -166, 77, 79,249, 47,111, 23,103,200,100, 82, 72,101, 4,182,109,123, 1, 0,114,206, 28, 4, 33,180,178, 27,243, 83,154,133,133, -133,218,235,215,175, 91,109,216,176, 1,206,206,206,240,245,245,133, 74,165, 42, 43,104,203, 15,165, 70,235, 89,131,245,172,102, -233,239, 18,137, 4, 12,195,224,248,241,227,224, 56, 14, 3, 7, 14,124,206, 92, 73, 36,146, 10, 13, 91,101,221, 76, 41,165, 71, - 9, 33,145,148,210,118, 37, 55,222, 72, 74,233,235,229,214,221,213,201,201,105, 26,128,133,166,106,178, 44, 5,171, 61, 15,193, -115, 57, 36,241, 19,161,151, 54,194,137,179, 17,216,180,118, 25, 0,192, 55,160, 25, 6,245,235, 85, 22,125, 51, 69,243,169,167, - 19, 55,183,205,105,105,233, 77,218,183,111,143,220,220, 92,253,156, 57,115, 16, 18, 18, 2, 63, 63,127,147,206, 81, 37, 5, 91, -198,141, 27, 55,220,180, 90, 45, 8, 33, 25, 38, 24,178,240, 10, 52,176,117,235, 86,104,181,207, 71,239,237, 94,159,143, 79,250, -251, 96,212, 7,155,177,248,238, 46,172, 94,189,186,202,125, 87, 1, 33, 90,117,189, 21,114,150, 11, 89, 52,115,130, 98,228,200, -145,236,168, 81,163,240,228,201, 19,140, 30, 61, 90,123,252,248,113,125, 74,114,242, 47,114, 65, 88,105,120,218, 16, 87,170,169, - 80, 40,182, 28, 61,122, 20,187,118,237, 2, 0,196,196,196,160,126,253,250, 79,221, 68,132,172,221,200,143, 91,137, 75,191,222, - 65,139,222,219,113,233,215, 97,224,115, 14, 73,155,214, 71,174, 57,199,179, 6,145,138,240, 10,166,157, 4,112,178,220,241,253, -108,219,182,109,131, 0,252, 76, 41, 61, 15,224, 60,128, 29,230,104, 22, 11, 97,212,224,254,125, 33,145, 89,227,206,253, 4,188, -222,170, 9, 92,156,157, 17,121, 59, 22,113,137, 89,169,132,224,237,110,109, 20, 11, 53, 26,253,103,167,175,211, 31,170,211,244, -242,242,170,189,123,247,110,105,185,136, 51, 88,150,125,234,129,170,116, 90, 77,175,207, 82,115,101,237,105,117,233,139, 85,109, - 44, 47,221,220,134,250, 62, 61, 96,211,181, 7,150,238,216,142,132,140, 92, 45, 87,196,117,252,187,207,209, 95,165, 73, 8,241, -235,223,191,255,249,159,126,250,201, 54, 62, 62, 30,167, 79,159,134,175,175, 47,138,138,138,170,125,208,125, 86, 83,171,213, 58, -151, 51, 77,165, 77, 24,118,232,116,186,210,130,146,154,179,157,149,181,173, 50,183,205, 85, 5,229,188, 92, 41,147,237,222,255, -243, 14,171,232, 59,167,209,184, 81, 75, 88,169,131, 32,240, 41,200,204, 42, 64,246,253, 36,124,249,229, 98,204,153, 59, 19, 7, -246,237,177,242, 15,108,180,151, 16, 82,175,124,117,225,191,253,188,131,208,177,225,191,110, 91, 67,168, 0, 77,234, 29,133,180, -240,161,106,196,176, 1,236,144, 33, 67,112,224,192, 1,220,186,117,107, 77,101,230,170,188, 38,161, 24, 27,117,122,215, 26, 80, - 10, 77,218, 29,133, 76,243, 80,245,214,240, 65,236,155, 67,187,224,226, 31, 43,208,165,241,195, 40,119,103,244,203, 46,169, 36, -148,176,200, 84, 40,113,206,226, 50,185, 88,206,100,157, 44,121,134, 42, 53, 86, 39, 81,156, 74,234,223, 31,193, 50,199, 88,149, -204,207,190, 38,151,252,188,113,206,251,193,202,199, 81, 50, 93,212, 5, 36,233, 4,186,225, 9,151,189,188,146,101,138,138,138, - 10, 99, 99, 99, 45,222,238,215, 15,173,131,131,225,230,224,128,122,158,158,176, 80,200, 33,151, 73,203,149,199,102, 61,129, 80, -127,127,127,244,238,221, 27, 82,169, 20, 42,149, 10, 86, 86, 86,144,203,229, 21, 70,175,164, 82,169,201,161,114,150,101, 17, 21, - 21,133,184,184, 56,216,218,218,226,220,185,115,232,216,177,227,115, 81,172,242,166,204,156, 80,252,179, 55,252, 82, 3, 6, 19, -171, 6, 75,225,121,130, 2,218, 8,202,199, 19, 80, 68,154, 64,167,227,160,211,233,240,195, 89, 3, 46,199, 22,194, 96,208, 67, -167,211, 85,186,206,170,162, 5,174,174,174,253, 2, 2, 2, 70, 12, 27, 54, 76, 47,149, 74, 81, 84, 84,132,162,162, 34,220,190, -125, 91,223,165, 75,151,212, 55,222,232,237,114,240,224, 65, 74, 41, 22,155,211, 14,139, 82,154,237,238,238,238,166, 84, 42, 65, - 41,205,174,225,211,103,153,121,121,150,183,151, 70, 67,194, 22,159,147, 53,107,214,128,231,121, 84,117,125,107, 9,249,125,238, -252, 37,234, 69,203, 55, 66,109,239,130, 83,167, 78,241, 71,142, 28,201, 39, 64,204,189, 91,183,150,190, 1, 28,222, 13, 24,204, -217,190,236,236,108, 11, 95, 95, 95,120,122,122, 66, 16, 4, 24,141, 70, 68, 70, 70, 34, 37, 37, 5,153,153,153,208,104, 52,176, -183,204, 65, 93, 7, 79,112,249, 39,145, 28,245, 57,220,172,238, 96,243, 81,189,241, 53, 63,220,248,199, 31,110, 41, 61, 12,224, -240,139, 11,193,195,217,213, 11, 12, 53, 34, 41, 45, 19,125,123,118, 1, 43,179,194,163,248, 12, 52, 10,170,227, 54,252,141, 54, -110, 44,225, 48,101,225,246,247, 0,252, 80,157, 92, 81, 81, 17,127,251,246,109,233,141, 27, 55,192,178, 44,108,108,108,202,154, - 3,148, 55, 87,166, 52, 7,168,206, 92,205, 95,211,209,146,145, 22, 34,143, 15,199,247, 63, 94, 68,125,239,142,216,116,231,158, - 86,146, 83,208,233, 27,173, 54,230, 95, 93, 61,228,230, 54, 78, 16,132, 57,148,210,156,254,253,251,187,108,223,190,221, 46, 49, - 49, 17, 17, 17, 17,152, 61,123,118, 58,207,243, 28,165,148, 80, 74, 63,127, 9,215,146, 80, 62,178,101, 97, 97, 81, 26,217, 42, - 44, 23,185, 42,172, 65, 25, 32, 85, 41,241,129,163, 13,233, 35, 97,108,124,185,188,130, 71, 25,122,250, 75, 17, 39,124, 71, 41, - 53, 86,181, 44,195, 48,255,219,179,115,141,187,163,147,128, 48,167, 14, 72, 78, 53, 96,254,199,111, 33, 51, 51, 31, 63,172, 95, - 0, 64, 14, 3,199,162, 93,216, 0, 56, 59,123, 96,236,152,177,174,107,214,126,255, 62,128,111, 94,149, 0, 86,242,185, 85,251, - 8, 33,225, 78, 78, 78,183,222, 31, 59,214,201,215,119, 36,148, 74, 37,118,236,216,129,237, 43, 87,242,203,129, 65,107, 9, 57, - 49,142,210,125, 85,234, 92,252, 83,103,226,248,241, 78,129,129,227,161, 80, 40,240,199,145, 31,161, 77,217,154,223,179, 53, 12, - 69, 90,244,172,213,155,218, 63,254,149,100, 73,165,184, 15, 0, 82, 37,146,165, 64,218, 51,114,255,122, 99,245,156,193, 50,151, - 58, 50,213,249,245, 31, 15,110,226, 36,104, 36,250,179,191, 34, 81, 39,112, 95,223, 55, 24,174,230,208, 17, 85, 92,208,130,183, -183, 55, 58, 52,109,138,126,109,219, 66, 34,145, 64, 41,151,193, 90,105, 1,202, 23, 71,174, 74,171, 8, 77,245,122,165,198,198, -193,193, 1, 50,153,172,204, 88,153, 26,189,170, 76, 83, 16, 4, 72, 36, 18, 68, 70, 70, 34, 52, 52, 20, 94, 94, 94,216,181,107, - 23,186,118,237,250, 92,149,161,185,230,170,212, 96,149,175,174, 43,215,248,189,218,198,237,207,153, 3, 61, 65,134,190, 17, 8, - 9, 6,199, 1, 60, 5,116, 90, 45, 40, 5, 40, 5,140, 6, 61,180, 90,109,217, 58, 77,169,122,245,244,244,116,247,245,245,253, -120,218,180, 41,245, 66, 66, 26, 35, 35, 35, 3,130, 32,192,202,202, 10, 69, 69, 69,176,177,177, 65,235,214,173,175,125,245,213, - 87, 89,148, 98,154,185,141,220, 95, 66,117, 6, 0,224,216,177, 99, 79, 85, 15,150, 14,133,201, 9, 24,245,225, 54,200, 37, 64, -100,100, 36, 2, 2, 2,170, 51,151, 76,251,118,109,112,254, 90, 12, 55,250,211,229, 58,105,102,196, 66, 87, 65,216,148, 0,164, -190,192, 77, 5, 25, 25, 25, 72, 77, 77, 69,159,190,125,177,253,167,159,240,248,241, 99, 4, 5, 5,161,125,251,246,112,118,118, -198,227,199,143,113,249,140, 14,186,236, 44,100,233, 35,160,178,110,129,253,167, 98,117,179, 86,235, 99,255,169, 66,129, 16,210, - 12,192,104,181, 90, 93,171,168,168, 40,197,104, 52,238, 42, 49,253, 93,165, 82,233, 96,149, 74,229,154,155,155,251, 24,192, 15, -148,210, 43,213, 86, 25, 41,149, 14, 10,165, 13, 4, 78, 7,137, 68, 2, 47, 47, 95, 80, 94,143,236, 60, 13,222, 30,210, 27,215, - 34,111,227,200,137,139,156,209, 40,124,107,234, 54,250,249,249, 33, 51, 51, 19, 44,203, 66,165, 82,193,210,210, 18,254,254,254, -136,143,143, 47, 51, 87, 53,173, 34,124, 7,240,179,241,182,186,248,213,170, 98,115,149,146,148,140,196,199, 20, 10,185, 28,107, -215,173, 41, 44, 74,201,110,177, 17,136,249,183, 23,254,130, 32,124,158,152,152,232, 44,145, 72, 92, 57,142, 67,124,124, 60,174, - 94,189,138, 9, 19, 38,164,102,102,102,134, 81, 74,107,180,143, 74,165, 50,173, 52,114,165, 84, 42,211,170,138,108,189, 72,155, - 43, 66, 72, 29, 95, 79,235,227,235,151, 77,242,110,214,162, 53,163,146,216,100, 23,220, 79, 9, 61,123,250, 84,235, 9,203,126, -120,159, 16,210,133, 82,250,160,178,229, 21, 82,105,247,150,109,218, 72, 64, 83, 33,145,135, 98,241,162, 33, 72,207,200, 67,118, - 86, 62,100, 50, 75,232,141, 44,120,129,160,117,104, 91,252,184,121, 39, 26,140, 25,205,202,165,210,206,175,146,193, 42, 97,193, -119,223,125,231,237,239,239,143, 77,155, 54,225,196,150, 45,120, 51, 55, 23,167, 24,134, 53, 74,165,142,135,141,198,117, 0,246, -153,170,211,160, 65, 3,108,220,184, 17, 91,183,110,125, 50,162, 99,218,222, 73, 35,224,108, 48,160, 91,196, 93,216,215,234, 13, - 68,220,133,253,107,254,168,199, 73,112,159, 16, 88, 60,115, 78, 95, 47,255,249, 42, 24,172, 48, 82, 92, 31, 87,246, 89,221, 66, -150, 46,254,195,126, 26,217,185,105, 80,109, 79,198,184,107, 5, 18,139, 56,237,236,187, 6,225,110, 62, 29, 16, 93,133, 57, 96, - 24,134,178, 44, 11,107, 11, 11, 56,217,218, 22, 63,105, 50, 12, 32, 0,130, 17, 32,124,241,159,143, 10, 4,230,116,126, 22, 4, - 1,114,185,188,194, 6,237,230,182,189, 42,175,153,159,159,143, 71,143, 30, 97,236,216,177, 80,169, 84, 0,128,148,148, 20,248, -248,248, 64, 34,145, 32, 49, 49, 17,127,252,241, 7,106,215,174, 13,133, 66, 97,150,203, 42, 23, 77, 10, 33,132,156, 2, 16,146, -156,156,108,227,230,230, 6,179, 35, 88, 2, 69,145,142, 64,175,231,113,239,222, 61, 36, 37, 37,225,209,195,251,104, 86,152, 7, - 10, 22,148, 82,179, 34, 88,110,110,110,254,245,235,215,255,106,193,130, 5, 82, 47, 47, 47, 8,130, 0,123,123, 91, 20, 22,106, -144,153,153,137,160,160, 32,120,121,121, 97,241,226,197, 64,113,245, 81,234, 63,117, 1,151,246, 22, 45,255,201, 48, 12, 62,124, -195, 27, 89, 89, 86, 96,217, 63,123,147, 86,211, 6, 75, 6, 0, 97, 93,250, 75,142, 31, 57,108,201, 1,243, 82, 88,118,158,164, -250,243,104,228, 5, 65, 85,217,239,241,241,241,144, 74,165,216,179,123, 55,178, 82, 83,209,168, 81, 35, 52,111,222, 28,247,239, -223,199,181,107,215,224,224,224, 0, 39,207, 86, 56,245,208,128,232, 36, 13,212,106, 53, 98, 19,152,127,172,235, 63, 33,164, 87, -167, 78,157, 86, 46, 93,186,212,213,213,213, 85,154,158,158,206,173, 90,181,170,235,170, 85,171,162,223,127,255,253,160,247,223, -127,223,206,201,201, 73,146,146,146, 98,252,248,227,143,187, 18, 66,166, 81, 74,119, 84, 89, 94, 88, 90,219,179, 50, 75, 16, 34, -129,173,218, 14, 18,185, 37, 4, 78, 2, 94, 0,108,212, 78, 56,127,109, 15,206,221,204, 31,151,150,137,221, 38,252,111,168,131, -131, 3,101, 89, 22, 14, 14, 14, 79, 85, 13, 2,128,139,139, 11,242,242,242,192,178, 44,164, 82,169,217, 38,171,212, 92,205, 95, -213,209,138,148, 51, 87, 5, 25, 14, 56,113,244,118, 78, 81, 74,118,232,171, 96,174, 74,203, 56, 74, 41, 30, 62,124,136,162,162, - 34,156, 57,115, 6,159,127,254,121,250,179,230,202,197,197,101,140,141,141,205,220,130,130,130,197,201,201,201, 43,170,211, 45, -137, 76,189,204,107, 50, 14,207,164, 99, 32,132, 72,189,220,148, 71,175,157,217,230,163,166, 55, 8,226,198, 2,247,242,110, 89, - 95,114,110,215,163, 89, 79,166,201,234, 47,106, 53, 31, 55,253, 40, 33,196,191,178, 72,150,192,243, 77, 44,173,172, 1,164, 33, -226,234,201, 50,115,149,153,149, 11,157,129,133, 78, 79,160, 53, 48,232,208,169, 27, 86,126,191, 21,137,105, 89, 40,237, 97,248, -170, 64, 8,177, 15, 14, 14, 30, 63,104,208, 32,204,155, 55, 15,225, 75,151,234,223, 37, 36, 79, 2,208, 67, 60, 15,129, 82,194, -152,208, 56,253, 89,157,111,190,249,102, 31,128,161, 11, 39,160, 85,118, 1,222,118,239, 77,237,107,245, 46,158,119,224, 84, 10, - 0,246,233,225,207, 53,213, 33,165, 53,105,230,214,168,253,191, 53, 88,148,210, 83,132, 16,148,255,172,106, 1, 91, 87,255,215, - 63,155, 58,113,121,155, 62,157,152,148,119, 67,145,147,167,211, 79,189,109,100, 18,138,104,191,104, 19, 35, 47,159,174, 90,133, -107, 49,197,255, 95, 79,103,103, 76, 25, 62, 28,148, 3,206,221,138,198,206,240,112, 12,233,212, 9,150, 37, 61,248, 76,141, 54, - 85, 20,181, 42, 31,189, 50, 55,202,148,147,147,131,221,187,119,163,121,243,230, 80,169, 84,144, 72, 36, 8, 9, 9,193,237,219, -183, 81,167, 78, 29, 16, 66,176,127,255,126,244,235,215, 15, 15, 30, 60, 64,171, 86,173,172,106, 98,176,162,163,163,109, 40,165, -237, 74,163, 29, 53, 69,167,211,225,206,157, 59,232,221,187, 55,236,236,236,224,225,177, 29,225, 71,183, 65, 21,252, 38, 8,129, - 89, 6,139, 16, 50,176,103,207,158, 82,134, 97,160,209, 20, 65,161, 80,194,202,202, 6,214,214,106,248,249,249, 33, 41, 41, 9, - 93,187,118, 53,220,187,119,111,107,114,114,242, 33,115,183,213,197,197, 69,149,159,159, 63,209,215,215, 87, 89,242,148,219,193, -209,209,113,126, 70, 70, 70,129,153,133, 67,153,177, 34,132,128,101,217, 50,131, 37, 97, 24,184,185, 58,151,141,151,180, 63, 35, - 85,104,229, 37,102,234, 20, 0,224,237,237,141,149,107, 15, 48, 61,123,246,196,196,137, 19, 97, 52, 26,177,122,245,106, 0,192, -176, 97,195, 96, 48, 24,176,119,239,222,226, 63,144, 68, 82,101,157,243,213,171, 87, 17, 17, 17, 1,163,209,136,220,220, 92,252, -246,219,111, 56,117,250, 52,118,236,255, 29,143, 31,222, 71,136,191, 15, 70,143,126, 7, 82,169, 20,155, 55,111, 70,104,104,232, - 63, 90, 32,200,100,178,183,214,175, 95,239,177,105,211,166,156, 95,126,249, 37,183, 69,139, 22,150,203,151, 47,119, 94,185,114, -101,123,189, 94,143,143, 62,250, 40,237,210,165, 75,133,125,250,244, 81,175, 91,183,206,163, 94,189,122,111,160,130,118, 89, 37, -213, 62, 67, 0,140, 12,107,174,150,228,228,107, 32,112,122, 60,124,252, 8,185, 5,122, 8,188, 1, 79, 18,146, 80,160,229,145, -153,149,143,144, 38, 93,190, 59,121,242,228, 76, 66,200, 12, 74,233,193,106, 31, 42,120, 30, 23, 47, 94,196,185,115,231,112,250, -244,105,196,197,197,149,253,102, 99, 99,131,227,199,143,163,125,251,246, 47,197, 92,229,167, 23,155,171,156, 39, 89,175,140,185, - 42, 41,131,230,184,185,185,205,113,115,115, 83, 30, 59,118, 76, 93,171, 86, 45,112, 28,167,127, 54,114, 21, 22, 22,246,217,250, -245,235,221,234,212,169, 51, 1,192,138,154,174,175,178,200,150, 9, 60,151,142,129, 97, 48,102,241,154,241,142,214,242, 39, 73, -184,183,164, 36, 23, 32, 11, 20,229, 1, 39,127,130,164,205,172, 71, 19,250, 78,181,155,182,105,222, 24, 0,171, 43, 19,142,125, - 16,143, 53,107, 86, 98,210, 71,111,227,199, 31, 22, 67, 16, 36,208, 25, 89,120,251,182,132,206, 32,128, 48, 18, 52,106,210, 20, - 39, 78,158,129,148, 1,118,111, 90,243, 74,133,174, 40,165, 89,132,144,213,251,247,239,255, 96,226,196,137, 16, 4, 65, 62,119, -205, 26, 77,122,122,250, 2,152,145,191,170, 2,157,126,107,214,172,137,153,182, 50,125,223,164, 17, 96, 31,255, 74,178, 34,238, -194,126,224, 84,138, 61,139, 8, 94,243, 71,150,170,226, 91,252,233,103, 62,255,245, 17,172,178,182, 41, 85, 57,198,215,252,234, -124,161,182,183,123,167,117,179, 64,135,143, 39,140,145, 62, 72,209,226,104,211,143,115, 15, 44,155,101,245, 68,176,252, 40,142, -230,153, 21,117,217,249,199, 31,101,223,191,222,190,189,194,223,146, 7, 14, 52,249, 73,172,178,168,149,185,145, 43, 0, 80,169, - 84,182,157, 59,119, 70,199,142, 29, 49, 96,192,128,178, 54, 87,141, 27, 55,198,142, 29, 59,208,191,127,127, 92,191,126, 29,110, -110,110, 8, 8, 8, 64, 64, 64, 0, 14, 31, 62,108,238,133, 13,158,231, 17, 28, 28, 92,218,139, 48, 36, 33, 33,193,166,166, 39, - 82,167,211, 33, 51, 51, 19,246,246,246,144,203,229,104,209,162, 57, 62,248,176, 5, 28,221, 54, 34, 56,208, 31,133,133,133,101, - 93,215,171, 67, 42,149,250,213,171, 87, 15,233,233,233, 72, 79, 79,135,147,147, 19,220,221,221,225,226,226,130,101,203,150,209, -229,203,151,159,226,121,126,107, 74, 74,138,217,142,208,211,211,179,153,163,163,227, 7,105,105,105,202,114,133,166,178, 81,163, - 70,107,221,221,221, 87, 39, 37, 37,157, 51,199, 96, 25, 12, 6, 16, 66,112,232,161, 59, 10,245, 4,121, 9, 17,152,248,134,207, - 83,134, 75, 42,149,154,210, 80,183,112,232,208,161,206, 94, 94,158,136,143,189,133, 61,123, 40,150, 46, 93,138,211,167,139,255, -231, 49, 37, 15, 4,165,227,237,219,183,135,175,175,175, 89,201, 45, 5, 65, 64,100,100, 36,182,255,114, 10,110, 62,129,120,114, -239, 14,174, 29,254, 21,181,156,236,209,160, 73, 83, 24,141,198, 23, 74,161,241, 50, 48, 24, 12,235,234,215,175, 15,189, 94,255, - 59,128,245,145,145,145,253,146,147,147,151, 29, 56,112,192,125,208,160, 65, 73,191,254,250,235, 36, 0,251, 34, 35, 35, 71,125, -245,213, 87, 29,141,197,213, 7,207,193,178,236,143, 31,127,252,113,216,160, 65,131,136,140, 49,234,143, 29,221, 44,225, 56, 35, -249,116,198, 6,254,228,217, 83, 12,199, 25,201,128,161, 31, 11,135,255,184,201,140,251,240,107,190,113,203,158,136,138,138,114, -237,213,171,215,151, 0,170, 52, 88, 44,203,130,231,121, 72,165,210, 50, 3, 93,209, 60,230, 68,175, 70, 3,117,108,124,172, 46, -206, 95,213,201,138, 72, 10, 94,121,115, 5, 0, 25, 25, 25,107, 1,172,181,183,183, 79,181,180,180, 68,126,126,254,115,215, 31, - 33, 68,233,239,239,175,148,203,229,232,210,165,139,189,155,155, 91, 12,195, 48, 43, 18, 19, 19,205,118, 26, 21, 69,182,106,154, -166,193,206, 9,189, 90,180,109, 98,125, 87, 61,207, 90, 41,209, 94,175, 21,163,180, 33, 0,114,117, 46, 15,207,199, 13,201, 35, -105,138,198, 77,219,191, 6, 27,137,101,175,202, 12, 22,195,178,215,114,179,115,186,231,229,235,113,246, 92, 20,134, 14,169, 7, -157,129, 64, 16, 24, 20, 20,234, 0, 86, 10, 6,192,176,225,111,129, 18, 9,178, 82,147,192,178,236, 77,188,122, 76, 31, 63,126, -124,247, 25, 51,102,212, 46,201, 95,229, 83,146,191,106, 10, 33,164, 33,165,180,168,134, 58,181,126,221, 49,107,242, 47,103,190, -207,237,217, 90,115,239,181,226, 62, 81,246,175,249, 35, 75, 42,197,125, 9,139, 76, 74,159,234, 81,138,210, 14, 95,229, 59,126, -253,235, 13, 86,117,212,175,227,217,237,245,102, 77, 63,156, 57, 99,166,245,189,203,167, 49,243,203,239,132,122, 77,187,230, 46, -217,119, 36, 63,215,166, 86,135,162,164, 59,215, 77,245, 21, 0,208,181,125,127,132, 4, 53,127,238,199,208,246,197, 57, 32,207, -158,184,138,212,244, 68,147,111,178, 37,166,160,194, 54, 87,166,116,205,175,160, 32,200,137,138,138,114, 78, 72, 72,120,170, 65, -187,175,175, 47, 8, 33,184,116,233, 18, 46, 94,188,136,161, 67,135, 66, 34,145, 64, 42,149,226,212,169, 83,249, 53,137, 96,161, -164, 23, 33, 33,164,171,167,167,103,133,189, 7, 77,209,210,104, 52,200,205,205,197,209,163, 71, 81,175, 94, 61,204,159, 63, 31, -238,110, 46,152, 57,115, 50, 4, 65, 64, 94, 94, 94, 89,126, 32, 19,162, 3,180, 52, 58, 36, 8, 2,210,211,211, 81,187,118,109, -172, 90,181, 10,203,150, 45,251, 46, 41, 41,201,236, 94, 46,118,118,118, 54, 74,165,114, 92,175, 94,189, 66,251,246,237,139,174, - 93,187, 62,245,251,182,109,219,172,246,237,219, 55,213,203,203,235,117, 65, 16,214, 36, 38, 38,102,153,162,187,113, 99,113,250, - 36, 85,203, 57,152, 54,168, 22, 70,190,183, 25, 75,150,252, 12,133, 66,241,212,205,118,222,188,121, 85,154, 23,129,210,250,178, -140,243, 73,147,167,126,227,188, 96, 65, 56,194,195,211,192, 48, 12,220,220,220,192, 48, 12, 30, 61,122, 4,134, 97,224,227,227, - 3,134, 97,144,152,152, 88,218,230, 47, 27, 90,211,114, 16, 50, 12, 3,173, 86,139,248, 39,143,145, 16, 27, 3,171,188, 20, 56, -217,168,144,125, 43, 18, 33,163,199,192,104, 52,254,127,120,162, 61, 14,224,120,185, 73,123, 8, 33, 70, 66,200,112, 0, 59, 41, -165, 63,151, 76,223,128, 42, 18,131,182,108,217,178,241,140, 25, 51,164,165,105, 51,220,189,191,226, 12, 6,131, 0, 0,254, 33, -237,158,114,249,247,239,223,199,146, 37, 75, 80, 88, 88, 8,153, 25, 45,211, 59,117,234, 84,214, 38, 82, 38,147,193,209,209, 17, - 6,131, 1, 28,199,153, 93, 53,232,224,227,249,221,165,136, 83,252,141,216,239, 53, 55,239,254,102,145,240, 72, 64, 65,134,227, - 43,107,174,158,141,100,121,122,122,206, 17, 4,129, 82, 74,103,149, 43, 91, 21,222,222,222,103,142, 29, 59,230,192,113, 28,190, -253,246, 91,219,148,148, 20,219,118,237,218, 77, 3, 80,169,193,170, 36, 77, 67,101,212, 40, 77, 3,207,195,207,198,218, 22,217, - 72,128,206,209,216, 56,199,129,203, 58,158, 60,230,186,123, 92,147, 32, 75,222, 88,155,201,211,195, 67,101, 11,129,210, 74, 19, -161,233,140,198,223,174, 71, 92,235,226,237, 85,143, 61,112,240, 52,250,244, 27, 4,157,142,129,214, 72, 64, 88, 41, 8, 43, 67, -195,144, 38, 8,104, 16, 2, 10,224,234,229,243,156,222,104, 60,254, 42,157,123,247,208, 15,135,186,135,126,176, 2, 84,160, 21, -228,193,170,221,175, 95,191, 5, 0, 62,172,182, 86,162,213,135, 67, 93, 91, 23,235,148,207,131,245,241, 7,227,113,235,178, 84, -125, 58, 98,145,172,107, 75, 28, 74, 15, 39, 80, 41,255,236, 69, 40,101,106,150, 94,227,149, 49, 88,222,222,222,182,206, 86,170, -141,239,143,126,199, 58,238,198, 5, 36, 68, 94,192,185,179, 49,217, 63,237,253, 37, 49, 47, 55,125,180, 25,230,170,172, 58,207, -209,173, 22,106, 87, 96,176, 44,172,157, 0, 0,181,131,154, 67,242,196,188, 52, 64, 21, 69,175,106, 98,174,202,223,148, 43,202, -129, 53,110,220, 56,172, 95,191, 30,109,218,180, 65,253,250,245,203,158,148,205,141,146, 61, 27, 77,170, 73,239,193,242,228,231, -231,195,199,199, 7,235,214,173,195,205,155, 55, 97,109,109,141,161, 67,135, 34, 63, 63,191,204, 88,153,218,200,157,231,249,199, -199,142, 29,107, 56,120,240, 96, 42,145, 72, 72, 78, 78, 14,212,106, 53, 86,173, 90, 85,148,156,156,124,194,220,109,243,240,240, -232,105,111,111,255,191, 33, 67,134,176,254,254,254, 72, 77, 77,133,141,141,181,158, 16, 34, 7, 0,181, 90,173,183,180,180,196, -216,177, 99,209,176, 97,195,230, 83,167, 78,109,230,234,234,186, 37, 37, 37,101,111, 85,215, 18, 33, 4, 59,118, 20,215, 78,141, - 94,113, 7,122,125,177, 65, 89,189,122, 53, 74,218,178,253, 89, 21, 16, 27, 11,152,208, 51,197,202,202, 10,245,235,215,175,240, -220,183,109,219, 22, 87,175, 94, 45,174,130,148, 72,224,236,236,140,115,231,206,153,212, 45,179, 52,129, 99, 84, 84, 20, 2,125, - 29,113, 51,252, 24, 28, 85, 82, 52,114,119,133,103,219,215, 17, 19, 19,243,143, 70,175, 8, 33,125, 0,244, 2,112,152, 82,186, -143, 16, 50, 16, 64,215,210,113,152,153, 88,148,227, 56,202, 48, 12,137,143,143, 55,168, 84, 42, 98,111,111, 47, 81, 40, 20,208, -233,116,101, 70,235,254,253,251, 56,120,240, 32, 18, 18, 18, 96,111,111,207,168,213,106, 24, 12, 6,147,122,148,242, 60,255, 92, -122,134,146,245,154,109,174,222, 6,130,215,127,181,176,150,130, 97,213,129,142,221,240,224,214,125, 77, 65, 70,142,197,127,193, - 92, 1, 64,118,118,246, 90, 0,107, 75,199,157,156,156, 70,177, 44, 59, 83,173, 86,171, 79,157, 58,101,235,228,228, 68, 54,111, -222,108,156, 53,107, 86, 14,203,178,217,132,144,101, 85,233, 85,146,166,225, 69, 12,160,207,243,211, 16,157,145, 27,235, 35,181, -115, 23,110,104,233,249,143,226,167, 5,100, 75,235, 57,145, 6,193,232,151,118,251,236, 40, 46,182,117,106,114, 10, 67, 33, 68, - 87, 81, 6,111,152, 54, 99,222,167, 49,119,174,121, 43,109,148, 24, 55,126, 6, 14, 29, 57, 1,194, 72,113,230,252, 37,232, 13, - 60, 50,178,114, 49,100,216, 8,120,186, 57, 34,250,226,209,116, 78, 16, 86,189, 90,230, 90, 88,217,165,207, 40, 59,133,133,170, -228,152,240,216,250,195,100, 48,204, 10,204,158, 61, 27,193,193,193,239,149,188,185, 33,171,234,242, 67, 88,217,240,245, 97,118, - 50, 69,177, 14, 21,120,172,219, 61,173, 36, 15,214, 36,172, 90,187,183, 97, 3,223,135,115,171,202,131,245,159, 50, 88,181,106, -213, 82, 88, 74, 49,214,222, 66, 54,229,253,225,125,157,210, 98,111, 33,225,246,181, 98,231,175,211, 24,147, 99, 78, 53, 50,161, -208,238,244, 76,254, 13, 90, 85, 21,149, 86, 91,253, 19,252,179,154,165, 55,218,103,163, 87,230,152,171,138, 52,203,155,172,242, -121,175,188,188,188,176, 96,193,130,106,243, 96, 85,176,239,165,211,187, 2, 8, 41, 53, 89, 40,110,228,222,213,148,158,131,149, -105, 58, 57, 57, 33, 51, 51, 19, 0, 16, 22, 22,134,176,176, 63,251, 41, 24, 12,134,178,168,149,181,181,245,115, 17,172,138, 52, - 57,142, 91,184,111,223,190, 65, 23, 46, 92,232, 53,121,242,100, 73,135, 14, 29,138,227,247,133,133, 90,106,194,187,215, 42,208, - 28,126,228,200, 17, 86, 16, 4,172, 91,183, 14, 17, 17, 17,212,210,210,234, 35, 43, 43,235,205, 54, 54, 54,124, 78, 78,206,240, - 49, 99,198,244,157, 59,119, 46,105,219,182, 45, 46, 92,184, 64,106,215,174,221, 31,192,222,234,246,253,210,165, 75, 96, 24, 6, - 92,214, 19,188, 55,109, 39, 44, 45, 36,184,115,231, 14,178,178,178,158, 75, 62,106,202,241, 20, 4,161,236,198, 93, 58,180,109, -219,182,172,186,177, 69,139, 22, 96, 89, 22,215,175, 95,175,176,186,245, 25, 77,234,224,224, 80,118,125,200,100, 50,156, 56,113, - 2, 95,124,241, 5,188,237,109,145,125,251, 38, 92,195, 58,160,243, 59, 99, 48,116,232, 80,176, 44, 11,123,123,251,178, 72,111, -117,251,254,130,134,170, 76,147, 16,210, 59, 48, 48,112,122,116,116,180,103,195,134, 13,131, 8, 33, 97,193,193,193,205,110,222, -188, 89, 58, 46,165,148,238, 50, 71,243,202,149, 43,123, 86,174, 92, 57,254,237,183,223,150, 9,130,192,199,197,197, 25, 1, 16, - 87, 87, 87,246,202,149, 43,194,129, 3, 7,160,209,104,224,233,233,201,120,120,120,144,227,199,143, 11,183,111,223,190, 68, 41, -157, 97,234,190,151,246, 20, 44,109,204,174,209,104, 76, 50, 87,207,106,214, 10,240,155,223,177,157,191, 87, 70,210,117, 36, 39, -198, 66,155,101,103, 60,113,244,156, 89,230,234,175, 62, 71,127,179,230,188,123,247,238,121,232,116, 58,200,229,114,172, 94,189, -218,176, 96,193,130,232,140,140,140, 80, 74,169,166,166,219,105, 78, 2,210,234, 52,115, 51,113,104,255, 47, 87,154, 89,245,219, -128,247,146,210,203, 26, 46, 82, 66,236,127,118, 9, 10, 85, 53,111,152,200, 28,158,195,228,243, 69,135, 42,211,164,148,234, 9, - 33,131,250,245, 31,246,251,142, 29,219,173,102,205,153,131,115,151,110, 34, 51,167, 0, 2,101, 33, 16,130,153, 51,103,193,213, -209, 30,121, 73,247,138,116, 6, 67,191,103, 95,153,243,111, 63,239,132, 48, 19,142, 31,216,188,130, 33, 16, 10, 83,239, 42,216, -252, 88,213,200,161,253, 36,131, 6, 13,194,207, 63,255,140,168,168,168,239, 43, 51, 87,229, 53, 41,101, 38,220, 60,181,115, 5, - 1, 4, 77,250, 93,133,164,224,161,234,173,225,253, 36, 67,135, 14,197,190,131,231,177,227,215,135,107,182, 31,160,191,226, 63, - 70,165, 6,203, 90,130,168,208,160, 58, 30,109,155, 52, 80, 74,120, 13, 18,110,199, 34,171, 80,139,227,183,226,114, 24,202,252, - 88,211, 21, 22,183,157,144,225,201,147,123,207,253,150,147,163, 44,137,198,152,247,218, 39,134, 97,158,138, 94,189, 72,228,170, -252,118,186,184,184, 60,245,218,149,242, 55,236,210, 54, 62, 53, 72,209, 48,237,201,147, 39, 54, 79,158, 60, 1,165, 20,151, 46, - 93,178,105,209,162,197,180, 23,137, 94, 77,158, 60,249,169,215,131,148,255,172,104, 90,117,164,167,167, 23, 2,216,232,226,226, -114,232,211, 79, 63,125,179,101,203,150,109,103,207,158, 77, 40,165, 53, 61,176,156, 32, 8, 56,121,242, 36,126,254,249,103, 94, -175,215, 79, 79, 78, 78,190, 91,238,247, 31,189,188,188,206,244,237,219,119, 73, 76, 76, 12, 27, 29, 29, 13, 83,140,156, 70,163, - 65,253,250,245,193,113, 28, 22,189,231,133,252,252,134,224, 56, 14, 60,207,195,210,210,242,169,247, 80,154,114,158, 24,134,121, - 42, 50, 82, 58, 92,186,116, 9, 44,203, 34, 52, 52, 20,215,174, 93, 43,139, 96, 85, 23,113, 50, 24, 12, 79, 92, 92, 92, 92,230, -205,155, 87,182, 93,233,233,233, 56,118,236, 24, 90,182,106,141,160,177,227,144,148,148,132,101,203,150, 96, 78,241, 82, 0, 0, - 32, 0, 73, 68, 65, 84,193,221,221, 29,243,231,207, 71, 86, 86, 22, 56,142,251,187,195,230,221,162,163,163, 61,135, 15, 31,158, -118,243,230, 77,207,131, 7, 15,218,246,234,213,203,114,216,176, 97,105, 55,111,222,244, 36,132,180, 3,176,203,204,255,207,116, - 66,200,145,249,243,231, 79,251,240,195, 15, 91,188,253,246,219, 82,169, 84, 42, 36, 38, 38,114,219,183,111, 39,245,235,215,103, -100, 50, 25, 57,122,244,168,112,249,242,229,139, 28,199, 45,162,148,158, 49, 55,202, 92,106,174,204,109,115, 85,202, 71,206,138, -183,172,153,244,208,149,171, 23, 48,254,190,158,134, 45,219,143,197,159,185,112,239, 1,171,227, 62,218, 8, 60,192,127, 16,150, -101,119, 5, 6, 6,142,154, 48, 97,130, 69,215,174, 93, 21,115,231,206,205,205,207,207,175,208, 92, 85,132, 57,105, 26, 96,102, - 2,210,114,252, 48,253,147,131, 31,125,220,112, 84,157,255,185,214, 66,120, 97, 26,178, 37, 44, 99, 99,203,160,137, 15,139,252, -140,251, 78,191,254,190,233, 17,170,201,171, 70, 41,189, 66, 8,233,212,160, 97,227,189,139,230, 47,114,254,108,234, 20,233,222, -131,191,129,114, 6, 92, 58,117, 10, 86, 50,158,222,254, 63,246,174, 59, 44,170, 99,125,191,179,103, 43,203,210,203, 82, 22,148, - 34, 32,138,189, 68,197,128, 45,246, 18,236, 37,177, 37, 70,197, 30,123,139, 70,163,137, 53,198,216,127, 81,185, 98,141,209,104, - 44,216,176, 87, 84, 84,154,138,133,142,116, 88,182,239,158,249,253, 65,185,196, 80, 22, 52,185,185, 55,251, 62,207,121,118,247, -156,179,239,153, 51, 51,103,230, 61,223,204,124, 95,212,249, 76,181, 86, 51,224,127, 49, 84, 78,218,181, 77, 7, 8, 33,199,109, -109,109, 31,142, 29, 61,218,199,223,127, 56,196, 98, 49,142, 28, 57,130,127,109,218,100,216, 8, 12,217, 78,200,253, 9,148, 86, -219,231,103,222, 44,231,121,240,217,216,177,190, 45, 90,140,135, 88, 44,198,225,195,135,177,119,227, 70,163,121,254, 49, 2, 11, - 28, 82,116,235,233,107,249,237,167,175,229, 96, 41,101, 41, 85,115, 56, 72, 46,214,106,191, 73, 72, 76,169,147, 24, 40, 27, 34, - 92,177, 50,244,125, 42,243,114,209, 83,151,101,217, 85,116, 14, 41, 13, 26, 52,192,219, 22,173,234,190,235,116,186, 20, 35,233, - 87,187,187,255, 33, 46,233,234,186,166,181,108,216,207, 88,113,101,172, 31, 44, 0,200,204,204,204, 2,176, 86, 38,147, 29,239, -217,179,231, 48, 66, 72, 70, 29,203,232, 64,167, 78,157,134, 81, 74, 25, 14,135,179,239, 45,113, 5, 0, 72, 78, 78,126, 33,147, -201,118,120,120,120,148, 7,128,174,142,147,101,217, 23, 77,154, 52,209, 86, 86, 22, 85,253,102, 89,182,198, 50,202,207,207, 71, -155, 54,109,254, 16,115,146, 82,138,215,175, 95,151, 89,152,202,243,190, 58,225, 38,151,203, 39, 76,153, 50,101, 59,143,199,115, - 7, 64,202,196,173,193, 96, 96,126,248,225, 7,145,193, 96, 96, 0, 16, 14,135,163,231,241,120,170,163, 71,143,234,245,122,125, -146, 90,173,158,240, 23,183, 3, 7, 9, 33, 60, 0,121, 49, 49, 49, 31,150, 90,174, 82, 30, 63,126,124,254,192,129, 3, 82,160, -102,247, 9, 85,212,205,171, 0,174, 18, 66, 58,110,217,178,101,254,132, 9, 19,218, 12, 27, 54,140, 27, 28, 28,140,223,126,251, -205, 16, 25, 25,121, 91,169, 84,174,174,173,176, 34,132,200,235,213,171, 87,210,128,113,171,159,229,160,215,235,171,125, 91,179, -171, 39,220, 60,114,162,139,104,199,234, 8,121,118,154,230,134, 78,174, 89,176, 7,120,140,127, 48, 50, 50, 50,190, 36,132, 44, -222,176, 97, 67, 90,179,102,205,132,124, 62, 95, 99,172,184, 42,125,241,145,214,162,142,176,117,172, 91,122, 66, 72,175,245,221, - 6, 29, 15, 90, 56,197,163, 91,167, 64,177, 91,125, 71,215,216,231,153,120,118,243,183,226,135, 39, 86,190,162,234,188,254,148, - 82,189, 17, 92,119, 8, 33, 13,102,205,153, 85, 22,236,185,105,151,115,199,232, 63, 40,216,243,138, 53,107,214,248,248,251,251, -227,200,145, 35, 56,183,111, 31,134,102,103,227, 18,195, 48, 28, 62,223,238,132, 86,187, 22,128, 49,194,104,197,186,117,235,124, - 3, 2, 2,112,232,208, 33,156,221,187, 23, 67,234,198, 83, 21, 90, 3,112, 40,253,158, 13, 32, 30, 64, 75, 0,102, 0,212, 0, -228, 0,236, 43,156,159, 83,122,172,236,248, 21, 0,127,233, 68,215, 42, 91,167, 71, 79, 95,182,124,223, 23, 83, 42,149,185, 62, - 62, 62,188,218,252, 71,167,211,189,169,161, 1, 77,241,242,242, 50,218, 74, 97,140, 24,202,201,201,105,245,103,101,248,187,206, -181,250,157, 16,100,217, 87,206,206,206,108, 89,103, 95,153,248,170,108, 31, 5, 94,214,230, 58, 41, 41, 41,137, 0,190,174,107, - 58, 83, 82, 82, 78,195,136, 96,206,198,158, 7, 0,185,185,185,239, 61,200, 46,161, 52,245,171,175,190,170,149,176, 6,165,169, -213,148,245, 35, 0,109,255,238,173, 43,165,244, 74,105,227, 3, 66,200,199,132,144, 94, 0,206, 82, 74,143,188, 39,254,114,161, -181, 99,199,142,233,148, 82, 20, 22, 22,110,172,173,176,170, 32,252, 47,190,175,123,207,205,212, 92,220,191, 45,165,179, 50, 95, - 59,125,167, 92,179, 23, 38,148,149,153,202,209,209,113,247,168, 81,163, 62, 0,176,231,125,112,190,131,155,134,170,210,248,146, - 16,210,236,210,172,175,199, 94,178,182,232, 13, 3,215, 15, 26,206, 9,104,114,126, 3,240,147, 49, 86,240,138,247, 11, 96, 93, -233,246,143, 65,169,255,170,233, 99,198,140,193,226,197,139,113,118,237, 90,237, 68, 66, 10,120, 0, 61, 83,242,130,201, 33,192, - 92, 99,121, 62,253,244, 83, 44, 94,188, 24,167,190,253,182, 78, 60, 53,192,129, 16,114, 18, 0,230,205,155,183, 96,213,170, 85, - 54,243,231,207,111,186,122,245,234,111, 74,127, 63, 41, 59, 94, 90,166,125,230,207,159,223,184,194,241, 34, 0,119,255,234, 7, -233, 79,219, 0,116, 53,113,154, 56, 77,156, 38, 78, 19,167,137,211,196,105,226,124,199,173,119,137,100,169,250,179,170,239, 21, -246,253,149,233, 5,199,244,174,102,130, 9, 38,152, 96,130, 9, 38,252,151, 90,225, 78,190,203,241, 63, 53,109, 0,186, 86, 97, -217, 58, 95,139, 27,236, 90, 7,203,217,121, 19,167,137,211,196,105,226, 52,113,154, 56, 77,156,255, 44,206,154,184,171,248,127, -111, 66,200, 73, 74,105,159,170, 62,203, 4,213,219,223, 43,236,171,117,228,145,119,130,105,136,208,196,105,226, 52,113,154, 56, - 77,156, 38, 78, 19,231,127,195, 16, 33, 0, 58,111,222,188,249,255, 13, 67,132,213, 44,193, 57,194,164,166,194, 82, 32, 16,243, - 1, 64,163, 81,104, 93, 93, 81, 8, 12,250,143, 5,162, 53,225,191,214,132, 43, 45, 21,243,153,239,243, 92, 19, 76, 48,193, 4, - 19,254, 49,200, 42,179, 76, 1,200, 2, 64, 74,127,107, 74, 63,179, 74,251,142,183,191,255,238,248, 95, 9,110, 85,226, 42, 59, - 91,108,207,229,230,249, 26, 12,170,134, 0,192,229,114,226,178,179,109, 18,236,237,143,100,215, 69,100, 57, 72,165, 81, 60,134, -113, 53,230, 92,157,193,144,154,157,153,249, 59, 87,239, 20,248,175, 23,118,198,138,135,119, 17, 25,127,133, 64,113,112,112,144, - 74,165,210,126,150,150,150,237,242,243,243,239,100,101,101,253,146,149,149,149, 89, 69,122, 86, 17,130, 57,165,223,191,163,148, -206,175, 38,237, 70,159, 91,201,127,125,196, 98,241, 36, 66, 72, 64,233,253, 63, 86, 40, 20, 91, 40,165, 79,255,129,130,214, 12, -192, 0, 46,151,251,169,189,189,125,155,140,140,140,175, 40,165, 27,234,200,197, 5, 48,203,218,218,122,152,181,181,181,103,110, -110,110, 98, 97, 97,225, 33, 0,235, 40,165, 53, 46,121, 94, 54,205,165, 93,112,247,224, 69,145,103, 35, 87, 44,253, 62,237,230, - 31,142,127,233, 98,247, 81,183, 14,139, 35, 79,220, 88, 62,127,179,113,225,145, 42,164,141, 3,148,207, 35,101, 75,223, 82,233, -223,184, 92, 62, 0,176,160, 52,205,235, 40,165,151,254,230,245,200, 92, 42,149,126, 11,160, 47,151,203,141, 73, 77, 77,253,156, - 82,154,242,158,184,121, 0,108, 1,228, 26, 83,143,222,170,143,173, 1, 4,160,196,157,198, 93, 99, 92, 49, 24,217,174,141,230, -112, 56, 43, 75, 93,223, 44,204,201,201,217,243,119, 45, 27,161, 80,184,209,201,201,105,188, 82,169, 84, 16, 66,104, 69,127,141, -122,189, 62, 37, 43, 43,171,213,255, 96,211,118,247,191, 45,193,149, 10,172,212, 84, 88,114,185,121,190,111, 50, 30, 13, 77, 75, -143, 30, 2, 0, 46,206, 77, 15, 57, 58, 53, 57,152,154, 42,208,182,238, 22, 34,225,137,185, 91, 24,134,215, 92,165, 81,219,243, -184,188,108,173, 94,247,128,163,161,147,210,227,142, 86,234, 36,145,199, 48,174,175, 18, 46, 57,234,181,185,224,137, 92,192, 51, -115,175, 50, 81, 46, 46, 46,117,186, 25, 91, 91,111, 11,173, 80, 52,157,199, 99,186,177, 84, 31, 64, 89,128, 67,120,143,245, 6, -221, 5,190, 90,189, 62, 55,247,121, 81, 93, 51,170,161, 61,113,162,192, 48, 16,116, 3,197, 57, 2, 28,136,203,166, 25,181,104, - 24,140, 18, 15,239, 40, 50, 42,254,119, 3,165,244,203,247, 93, 97,100, 50,153,205,192,129, 3, 55,126,253,245,215,102, 18,137, -132, 36, 37, 37,117,159, 59,119,238,135, 50,153,108,102, 74, 74, 74,218,219, 98,143, 16,204, 97,217, 18, 7,165, 28, 14,153, 43, -149, 74,197, 12,195,252, 33,120,168,193, 96, 16, 19,130, 80,150, 45, 9, 56,206,225,144, 57,132,144,239,141, 17,138,102,102,102, -195,219,180,109, 63,243,219, 53,235, 36, 82, 71, 71,115,189,129,213,190,124,245,202,124,209,252, 47,219,154,153,153,125,175, 84, - 42,247,215,246, 62, 9, 33,132, 97,152,161, 66,161,176, 15, 0,255,210,221,177,106,181,250,164,193, 96, 56,104,108, 71,238,228, -228,116,133, 97,152,250,181,185,182,193, 96, 72,202,200,200, 8,172, 99,199, 53,216,221,221,253,167,160,160, 32,113,155, 54,109, - 32, 16, 8,176,120,241,226, 89, 0, 54, 24, 35,164,196, 98,241, 80,115,115,115, 47,185, 92,254, 92,169, 84,254, 44, 16, 8,186, -126,255,253,247,110, 29, 58,116,176,200,204,204, 36, 12,195, 72, 79,158, 60,249,201,166, 77,155,186, 19, 66,186,212,212,185, 21, - 60,167,139,132,125,253, 59, 22, 60,191,180, 8, 64,207,183,143,235, 85,162, 79, 41,227,214, 71, 73,239, 39,163, 22, 75,228, 9, - 33, 28, 30,143,247,189,147,147,211, 24,149, 74,165, 2, 64, 9, 33, 84, 42,149,150,119, 52, 0,160,209,104,242,242,242,242,252, -170,125,182, 27, 54,188,199, 48,140,172,154,242, 72,137,139,139,123, 31, 29,214,156,140,140,140, 94, 60, 30,143,184,185,185, 49, - 0, 46,213,226,126,125, 1, 44, 44,237,100,182, 80, 74, 13,132,144, 78, 64,201,243, 14,224,187, 50,193,198, 48,204, 22, 63, 63, -191,126,177,177,177, 91, 41,165, 43,234,154, 88, 39, 39,167,237, 63,254,248,227,144,254,253,251, 51, 89, 89, 89,174,205,154, 53, - 11, 7,208,241, 29,133,149, 0,192,124, 39, 39,167,201,129,129,129,118,247,239,223,207, 37,132,252, 8, 96,117,117,190,166, 8, - 33, 50, 0, 93,173,173,173,187, 44, 92,184, 80,210,167, 79, 31,236,216,177,163,215,206,157, 59,229,132,144, 11, 0,206,191,171, -248,227,112, 56, 43, 83, 83, 83,157, 41,165,112,118,118, 94,137,247,228,158,226,125,131, 97,152,239,135, 14, 29, 58, 38, 60, 60, - 92,252,234,213, 43,177,171,171,107,185,211,107, 66, 72,157,251, 79, 19,254, 34,129, 37, 16,136,249, 6,131,170, 97, 90,122,244, -144, 15,131,126,176, 2,128, 43,151,167, 12,113,116,106,252, 88, 32, 16, 39, 8, 45, 69, 71, 67,250,118,109, 62,168, 79, 16,145, - 57, 59, 34, 37,253,141,244,255, 14,156,237,113,242,236,165,163, 40,113,252, 85, 41,244,218, 92,152,105,207, 35,254,218, 38,216, - 7,167, 97,243,169, 20,220,124,248, 18,138,130,108,212,119, 50,195,154,233, 31,193,201, 70, 92,167, 27,145, 72,125, 59,113, 68, -226,131, 35,134,143,178,234, 55,192,159, 87,207,201, 9,148, 10,145,240, 92,222,254,116,196,165,214, 63, 31,222, 63, 73, 34,245, - 29, 42,207, 76, 48,186, 81,107,233, 66,204,138,181, 24,192,101,200, 39, 29,219, 54,238, 50,188, 87, 71, 78, 35,255, 6,136,121, - 18,251,209,241,139,183,215, 52,146,114, 46,232, 13, 52,204,156,143, 99, 81,105, 85, 59,226,171, 76,104,116,233,210,165,133,153, -153,153,166,226,121, 74,165, 82, 64, 8,186,212, 69,100,148, 93, 67,163, 81,115,120, 60, 1, 56, 28, 50,179,105,211,166,245,179, -179,179,175,112, 56,156,125, 41, 41, 41,121,181,201,207,169,132, 8,242,184,220,150, 28,161,208,217,160,209,216, 1, 0, 17, 8, -242,100, 54, 54, 77, 22, 46, 88, 32, 97, 24,134,205,201,201,129, 66,161, 32,159,125,246,153,232,249,243,231, 33, 0, 54,213,144, - 70,236,220,185,211,215,217,217, 89,243,246,177,244,244,116, 65,255,254,253,234,210, 96,251,126,208,174,195,140,179,103,207,248, - 23,230,230,169,118,110,216,113, 95, 39, 50, 83,121, 52,244,229,111,217,177,215,242,243, 49, 35,167, 16, 66, 30, 80, 74, 19,106, -193,233,110,102,102,118,116,237,218,181, 1,157, 58,117,226, 57, 58, 58, 34, 51, 51, 19,177,177,177, 1, 23, 47, 94, 28,176,119, -239,222, 89,132,144, 16, 74,169, 49, 30,215,125, 46,132,253,228,104,110,107, 7,131, 78, 7,151,166, 45,202,253,147, 61,187, 24, - 1,189, 86, 11, 86,167,131,127,159, 1, 37,102, 24,150, 69,163, 70,141,234,228, 45,151, 16,226,210,184,113,227,127,125,243,205, - 55,124,181, 90,141,219,183,111,227,210,165, 75,108,122,122,250,234,154,196, 21, 33, 36, 98,233,210,165,178,192,192, 64,139,236, -236,108, 24, 12, 6,251, 99,199,142, 77,106,209,162,133,165,155,155,155, 32, 44, 44, 12,114,185, 28,122,189,222,214,203,203,203, -118,248,240,225,154,176,176,176, 89, 0,190,173,202,114, 85,248,156, 46,202, 32, 94, 61,252, 90,126,138, 12,114,166,199,204,158, -206,167, 45,189, 73,185, 37,171,167,183,183,133, 87, 67,243,185, 18,203, 38,182,133,169,231,231,246,244,246,222,121,250,121,205, - 47, 65,132, 16, 14,135,195,249, 62, 36, 36,100,196,129, 3, 7,196,177,177,177, 98,127,127,127,176, 44, 91,238, 49,191,204, 81, -172,143,143,143, 49, 29,150,236,194,133, 11,142,102,102,102,127,112,202, 91, 92, 92,140,254,253,251,255, 25,237,109,109,203,120, -217,139, 23, 47, 6, 31, 61,122,116,228,156, 57,115,124, 0,132, 2, 88,156,147,147, 19, 4, 0,118,118,118, 2, 0,151, 8, 33, - 99,103,207,158, 61,113,222,188,121,232,213,171,215, 98, 66,200,202,186, 88,245, 8, 33,140,189,189,125,175,254,253,251, 51, 58, -157, 14,230,230,230,208,233,116,222,239, 40,174,132,124, 62,255,215,181,107,215,118, 27, 62,124, 56,184, 92, 46, 88,150,181,141, -136,136, 88, 50,102,204,152,142,132,144,158,149,137, 44, 66,200,167, 19, 39, 78, 28, 56,106,212, 40,180,106,213,170,220,185,236, -218,181,107,177,124,249,114, 73, 68, 68,196,128,176,176,176, 1,132,144,159, 41,165,117,246,101, 86, 22, 47, 52, 57, 57, 25,142, -142,142,102,182,182,182,233, 0,190,202,205,205,221,241, 55,178, 42,126, 55,116,232,208, 17,225,225,225, 18, 0, 88,179,102, 13, -102,204,152, 1,169, 84, 10,137, 68, 98, 82, 52,255, 13, 2,171, 38, 40, 20,138, 22,243,167,126, 2, 14,167,228, 45,177,129,167, - 59, 86, 45,248,156, 28, 63,121,182, 69,117,255,227,137, 92, 16,127,109, 19,132,110,211,161,214,233,113,235,225, 11,156, 91,211, - 29, 0,224,219,115, 33,212,218, 46,101, 21,221, 86, 96,102,246,157,198, 96,184, 14, 39,167,219,120,253, 58,171, 38,113,229,224, - 36, 61,185,109,219,183,102, 1,222,126,208,234,117, 72,125,147, 10, 66,132,144,185, 90, 96,236,167, 61,121, 65, 65, 46,246,203, -150,109,255,205,220,193,247,227,226,172,132, 26, 29,125,250, 57,144, 61, 29, 91,248, 12, 25,222, 59, 80,216, 36,160, 49,248, 66, -179,127, 11,175, 86,173,208,178, 85, 43,206, 60,121, 81,183, 59,119,163,186, 29,137,184,165,246,115, 32,135,226,179,232,232,234, -158,141,138, 66, 99,218,180,105,127, 8, 72,156,158,158,142,200,200,119, 26, 53,248,221, 53,190,254,250,107, 73,126,126,126,215, -255,251,191,255,251,208,213,213,117,109,106,106,234, 45, 99, 72, 62, 33,164, 62,132,194, 46, 99,214,173, 99,155,247,235,199, 88, - 59, 57,113, 88,131,129,164, 37, 38,218,109,216,180, 41, 56,247,217, 51,179, 98, 91,219,220, 60,165, 82,145,144,144, 0,145, 72, - 68,184, 92,110,235, 74, 26,172, 76, 66,200,119, 28, 14,153, 75, 8,129, 80, 40, 74,248,226,139, 47,238,151, 30,174,127,226,196, - 9,113,223,190,125, 21, 0, 94,149,152,189, 69,174, 12,195,241, 45,153, 32,136,239,140, 17,150,230,230,230, 83, 87,124,243,157, -121, 97,110,190, 82, 91, 92,172,115,180,148, 16, 72, 36, 76, 81,161,188, 48, 45, 35, 75,181,240,171,229,220, 9, 99, 71, 77, 5, - 48,201, 88,113,213,172, 89,179, 59, 71,143, 30,117,180,179,179, 67,126,126, 62,114,114,114,112,231,206, 29,176, 44,139,144,144, - 16, 97,251,182,109, 90, 44, 88,184,232, 38, 33,164,157, 49, 34,203,220,214, 30,107, 2,155, 3, 0,150,188,202, 41, 47,159, 29, -131,251,148,159,179, 60,165, 0, 0, 32, 18,137,222, 37,212, 83,187, 46, 93,186,240, 1, 96,220,184,113,133, 69, 69, 69,171, 0, -132,211,106,156,161,150, 98,214,162, 69,139, 92, 61, 61, 61,235,133,135,135, 67, 46,151, 3,128,163,167,167, 39,252,252,252, 12, -145,145,145,240,245,245,133,133,133, 5,174, 92,185,130, 91,183,110,161,101,203,150, 22,124, 62,127, 72, 85, 2, 43,184,123,240, - 34, 97, 95,255,142,126, 45, 63,133,196,210, 25, 59,247, 31, 68,124,212,222,142,106,109,236,162, 85,161,174,163,148, 84, 56, 90, -230, 99, 49,175,126,171, 32,187, 6,141,251,161, 94,203,251,246, 42,195,213, 23,139, 39,123,173,230,138, 84,123,151,174, 77,203, -169, 74, 92, 1, 88, 19, 18, 18, 50,248,192,129, 3,214, 0,240,232,209, 35,100,102,102,194,193,193, 1, 34,145, 8, 60, 30,175, - 60,126,168,177, 48, 51, 51, 67,122,122, 58,180, 90,109,153,213, 10, 69, 69, 69,112,114,114, 42, 81, 55,203, 8,103,233, 82,227, -188,142, 19, 66, 2,219,182,109,187,175, 94,189,122,110, 21,247,247,238,221, 27,195,134, 13, 3, 0, 4, 5, 5,117, 25, 52,104, - 16, 45, 19,130,233,233,233,242,187,119,239,118,163,148,222,174,194,186,162, 76, 77, 77,197,236,217,179,241,242,229,203,201,132, -144,215, 0, 68, 2,129,160,252,189,152, 16,226,219,184,113,227,239,103,204,152,129,231,207,159, 35, 38, 38,230, 78, 93,135, 76, - 41,165, 6, 15, 15,143,103, 58,157,174,149, 94,175,135, 82,169,196,199, 31,127, 44,178,181,181,205,100, 24, 38, 46, 59, 59,123, - 36,165, 52,189, 22, 86,171,122, 92, 46,119,243,236,217,179,187,116,237,218, 21,209,209,209, 56,122,244, 40,134, 15, 31,142, 30, - 61,122, 96,237,218,181, 65,161,161,161,243, 0, 44,173,132,162,203,150, 45, 91, 96, 48, 24,254,240,108,136, 68, 34, 4, 6, 6, -162, 81,163, 70, 56,126,252,120, 23, 0,117, 18, 88,132, 16,223,129, 3, 7,138,202, 68,117,100,100,164,149,153,153,153,149, 76, - 38, 91, 10,224,111, 35,176,234,213,171,247,197,129, 3, 7, 36, 21, 71,123,132, 66, 33, 42,212, 3, 19,254,238, 2, 75,163, 81, -104,185, 92, 78,156,139,115,211, 67, 87, 46, 79, 41, 31, 34, 4, 56,113, 26,141, 66, 11, 0, 6,150,162, 80,161,135,153,144,131, - 87, 25, 69,120,146,152, 93,217, 67,250,187,165,150, 60, 51,119, 8,219,188, 2,165, 20, 26,173, 1,234,130, 12,172,250, 77,129, -216, 20, 21, 52,197,121,208,104, 75,166, 89,217,219,219,115,207,158, 61, 61,227,252,249,139, 19,119,239,222,205,164, 88, 89,197, -160,160,160, 69,101,156,182,182,222, 22, 92,115,179, 67, 91,183, 45, 54,163, 76, 34, 18,146,138,209, 64,214, 6,246,214,110,200, -200, 46,198,245,152, 83,136,123,122, 18,158,206,245, 48,125,106, 15,209,138,111,194, 15,218,216,120,186,231,229,189, 40,172, 42, -157,165,248,116,251,153, 4,232,115, 19, 97,200,121, 14, 67, 81,218, 31,133,157,131, 59, 90,118,114,133,131,155,183,112,244,244, -229,159, 2, 24, 93, 25, 39,165, 52,147, 97,152, 45, 28, 14,153, 68, 8, 65, 64, 64,147, 23, 27, 55,110,212, 84,150,245, 1, 1, - 77, 94, 48, 12,199,179, 36, 12, 11,103, 43,203, 26, 50,107, 72,231,239,196,140, 64, 32,156, 83, 98,222,119, 78, 60,125,250,180, -102,208,160, 65, 88,179,102, 13,127,222,188,121, 95,214,171, 87, 47,244,245,235,215, 25,213,149, 81, 8, 33,238,174,222,222, 31, -173,188,126,157,242,116, 58,146,123,231, 78, 97,126,122,186, 62,163,168, 72,112, 56, 46,174,215,248, 47,191, 20,184,185,185,225, -218,201,147,118, 89,197,197, 52, 95,173, 86,230,231,231, 83,189, 94,127,167,138,123,159, 47,149, 74,197, 59,119,238,244,253,226, -139, 47,238,167,165,165,205, 47,109, 24, 86, 1,104, 4,224, 85,133,125,216,182,237, 96,234,103,159,125,150,144,153,153, 57,191, -186,116, 86, 64, 99, 71, 7, 7,241,254,237, 97,209,182, 22,102, 28,123,153, 51,135,103,101,197,211, 11,197,124, 74,161,242,244, -244, 22, 3,104, 92, 69,158,157,127,171,145, 37,102,102,102, 71,127,253,245, 87, 71, 30,143, 7,131,193, 0, 7, 7, 7,188,124, -249, 18,249,249,249, 40, 42, 42,194,139,184, 88,120,184,185, 97,217,188,185,206,161,115,231, 29, 37,132,180,170,216,137, 85,150, - 78,131, 78,251, 7, 75, 94, 21, 1,194,127,247,105, 76,185,191,133,151, 73, 73, 73,144, 72, 36, 8, 8, 8,144, 92,191,126,253, -106, 85,226,170, 34,167, 72, 36, 26,210,161, 67, 7,139,253,251,247,163,101,203,150,176,178,178, 66,100,100, 36, 30, 61,122, 4, -173, 86,203,145,203,229,176,176,176,192,234,213,171, 81,175, 94, 61, 20, 22, 22, 34, 41, 41,201,142,199,227,217, 87,197, 25,121, - 54,114, 69,193,243, 75,139, 50,200,153, 30, 59,247, 31,196,103,195,135,194,137, 38, 94,181,242, 38, 43, 62,234,219, 97, 9,101, -220,250,152, 91, 52,181,241, 9,232, 11,190, 64,130,208, 57,203,145,240,248,132,141,162, 40,122, 50, 49, 36,187, 1,152,246, 54, - 39, 41,201, 24,142,155,155,219,248,195,135, 15, 91, 84,176, 64,149,199, 33,173, 24,156,189,170, 64,236,149,150,145,193, 0,173, - 86, 11,173, 86, 11,131,193,128,236,236,108, 20, 21, 21,193,218,218,186,228,132,165, 0, 1, 33, 20,149, 11,150,183, 56, 71,158, - 63,127,222,205,220,220,252, 15, 22,146,236,236,108,232,245,122,136,197,226,242,107,234,116, 58,168, 84, 42, 73,163, 70,141, 38, - 1,184, 93, 25, 39,203,178, 51,135, 12, 25,210,225,246,237,219, 94,155, 54,109,130, 70,163, 89,147,145,145,129,129, 3, 7,130, -101, 89,116,233,210,229, 3, 74,105,252,194,133, 11, 1, 0, 51,102,204,208, 21, 23, 23,127, 97,204,189, 87, 33, 56, 26, 13, 26, - 52,200,235,194,133, 11,232,216,177, 35,212,106, 53,214,174, 93,107,185,109,219, 54,203,176,176, 48,135, 57,115,230,252, 4,160, -123,117,156,165,194,106, 65,143, 30, 61,102,246,239,223,223, 60, 53, 53, 21,214,214,214, 56,120,240, 32, 86,175, 94,125, 69,163, -209, 44, 8, 11, 11, 91,117,244,232,209,142,195,135, 15,199,218,181,107, 39, 19, 66, 86, 80, 74,117,149,113,190,120,241, 2, 14, - 14, 14,176,180,180, 4, 80, 18,200,254,193,131, 7, 56,119,238, 28, 26, 54,108,104,140,104,172, 42,157,190, 33, 33, 33, 55,194, -195,195,173,147,147,147,113,229,202, 21,120,120,120, 64,161, 80,212, 24, 86,236,125, 7,101,174,137, 83,169, 84,170,146,146,146, - 36,223,126,251, 45,156,157,157, 81,175, 94, 61,136, 68, 34, 16, 66,160,211,233,170, 76,175, 49,233, 12, 14, 38,220,236, 84,155, -254, 86,214, 54,147, 41,165,220,130,130,188,237, 90,228, 31,121,254,156,106,254,170,123,255,159, 20, 88,132, 16, 74, 41, 37,101, -159,174,174, 40,204,206,182, 73,112,116,106,114,208,209,169,113,105, 92, 46, 78, 28,195,216, 36, 72,165,138, 66, 0,208,234, 41, -110,196,229, 35,250, 89, 6, 30, 61,203,128,185,208,184, 48, 53,106,173,190,100,157, 37,165, 80,201,255,253,146,170, 85,228, 65, -173, 45,153,206,161, 81, 43, 80,144, 21, 67, 6,127,220, 77, 52,113,226, 4, 56, 59,187, 58, 84,197,167, 21,138,166,135,206,232, -101,109,107,205,195,201,235,103,240, 65,195,143, 33, 18,242,144, 83,160, 2, 8,240, 52,241, 28,192, 90,224,113, 66, 18,218, 54, - 22,163,251, 71,254,146, 95,142,196,127, 9, 96,177, 49,233,213,167,220, 1,223,167, 39,120, 6, 29,116,217,241, 96,243, 95, 3, -230, 78, 80, 18, 9,114,210, 95, 35,238,234,207, 70,133, 40, 53, 24, 12,161,246,246,246,111,230,207,159, 31,232,235,235,171, 9, - 13, 13,125,252,242,229,203,133, 21,207,241,240,240, 88,185,121,243,102, 36, 36, 36,188, 90,181,106,213,181,236,236,236,175,107, -249, 96,206, 35,132,108, 44,181,134,101,255,250,235,175, 77,175, 92,185, 50,105,195,134, 13, 14,147, 39, 79,230, 79,157, 58,117, - 36,128, 53,213, 13, 11,154, 11,133, 93, 87, 94,185, 66,245, 41, 41,234,127,253,240,131,224,199, 27, 55, 22,106, 89,214,197,222, -209,145,180,111,219,182, 88,204,225,100,231,100,102,234, 29,188,188,152,151,231,206,217, 81, 51,179,180,211,167, 79, 23,202,229, -242,159,171, 25,130, 81, 84, 54, 44, 88, 25,156,157,157, 53,149,205,209,170,166, 35, 40,100, 41,213,218,120,122,224,163, 46,237, - 27, 60,139, 79, 76, 20, 90, 89, 51, 62, 62,245,253, 98,226, 94,221,102,245,122, 53, 33,164,208, 24, 46,134, 97,134,110,220,184, -177,137,165,165, 37, 88,150,133,149,149, 21,178,178,178,160,209,104, 80, 88, 88, 8, 77, 81, 1, 52, 5, 5,120,244,250, 37, 58, - 4, 7, 99,112,143,143,252,195,142,253, 58, 20,192,129,234,120, 93,154,182, 40,183, 92, 45,175,111,247,239, 49,159,228,252,114, -177,245,109, 11, 31,240, 37, 18,116,155, 57,239, 93, 26,230,251, 2,129,224, 84, 72, 72, 72,175, 47,191,252,146,147,158,158,126, -134, 16,210,129, 82, 26, 83,173, 5, 88, 34,241, 46, 19, 20, 86, 86, 86,216,184,113, 35,164, 82, 41, 20, 10, 5,238,222,189, 75, -101, 50, 25,185,116,233, 18,100, 50, 25,178,179,179,161,213,106, 81, 92, 92,156,161,209,104,170, 28, 22, 47, 29, 6,236, 57,179, -167,243,233,248,168,189, 29, 93,201,139,187, 67,102, 5, 61,139,127, 20,151, 20,113,238,250,215,122,149, 40, 57, 63,229,252, 92, -207,214,247,237, 39,207, 94,134,205,107,150, 34,254,246,149, 92,169,123,225,143,102, 68,189,167,109,183,170,211, 91, 92, 92,172, -138,141,141,181,136,142,142, 6, 33, 4, 86, 86, 86, 16,139,197,149,138, 44, 99, 97, 48, 24,202, 63,179,179,179,145,149,149,133, -132,132, 4,236,221,187, 23,105,105,105,246, 27,172, 44, 51,236, 5,252,104,126, 62, 89,160,213,210,251, 53,208,109,239,214,173, -219, 80,119,119,119,139,138, 59, 91,183,110,141, 9, 19, 38, 96,235,214,173,184,113,227,198,239,226, 93,102,100,100,164,235,116, -186, 61,213,148,109, 62, 33,164,199,199, 31,127, 28,117,245,234, 85,203, 93,187,118, 65,175,215, 87,186,237,220,185, 19,183,110, -221, 90, 76, 41,141,171,163, 53,167,225,192,129, 3,175,236,219,183,207, 58, 43, 43, 11,217,217,217,144,203,229, 40, 46, 46,134, -193, 96,128,159,159, 31,209,235,245,126, 53, 13, 7, 58, 56, 56,156,186,124,249,114, 39, 63,191,146, 83,117, 58, 29,174, 95,191, -142,126,253,250, 21,106, 52,154,129,148,210, 28, 66,200,252, 35, 71,142,220,104,219,182, 45, 90,183,110,109,251,250,245,107, 91, - 0,149, 90,174,229,114, 57,228,114, 57,120, 60, 30,156,156,156,176, 98,197, 10,104, 52, 37,205,138,175,175,111, 69, 11,231,134, -134, 13, 27,126, 28, 23, 23,183,154, 82,250, 99, 21,237,204, 4,150,101,151, 82, 74,243, 67, 66, 66,164,251,247,239,183, 73, 77, - 77, 69, 84, 84, 20,150, 44, 89,146,101, 48, 24,244,148, 82,162,213,106, 35,184, 92,238,235, 70,141, 26,185,196,196,196,164, 25, - 12,134,197,148,210,127,253, 7,135, 8, 9,143,199,195,184,113,227,192,229,114, 97,102,102, 6,149, 74, 5,157, 78, 87, 46,226, - 81,203,225,103, 31, 31, 11, 59, 46,248,159,249,250,126, 56,125,240,180, 62, 14,206, 46,174,176,182, 20, 34, 54, 54,166,195,197, - 11,231,126,104,228,231,176,141,213,232,182,197,189,204, 79,250, 11,238,239,119, 90,228,127,116,136,112,144,193,222,254, 72,118, -106,170, 64, 43, 16,136, 19,202,172, 90, 37,226,106,144, 1,216, 15,189, 86, 87,218, 64,208,210,205, 72,129,165, 51,224, 89,252, - 99, 92,141,248, 21,246,138, 84,100,191,104, 14,240,155, 64,163, 44,128, 74,163, 45,125, 91, 51,224, 97,212, 5, 20, 22,228, 34, -160, 85, 31,128,195,169,114,104,203,202,142,244,105,223,178, 41,243, 44,233, 49, 90,251, 14,130,151,172, 35, 94,167, 23, 34, 95, -174, 70, 94,161, 10,205, 3,230, 33, 43, 79,137, 66,133, 10, 49,207,194,224,234,226,197, 33,220,196, 46,198, 10, 44,117,204, 81, -168,227,142,131, 95,175, 3, 4,126,253,192,212, 11, 68, 82,244, 37, 60, 60,189, 1, 41, 79,174,129,178, 6, 56,251,182,129,145, - 29,248,246,136,136,136,230, 31,126,248, 33,183, 75,151, 46, 1, 50,153, 44, 32, 37, 37,229, 49, 0,200,100,178,128, 30, 61,122, - 4, 56, 58, 58,226,251,239,191, 87, 48, 12,179,189,142,157,108,197,198,233,190,179,179,243,218,163, 71,143,126, 55, 97,194, 4, - 56, 57, 57, 53,170,238,191, 89, 60, 94,179,209,223,124, 67,121, 12, 67, 15,108,222,204, 95,118,230,204,186,221,123,246,240, 59, -119,234, 68, 40,165,120,240,224,129,248,219,205,155,197, 35,250,247,127,245,250,205, 27,253,229, 27, 55,180,233, 41, 41, 69,111, -138,139,151,165,165,165,101,252, 39, 42,176, 78,167,187,249,242, 69,162,172, 69,155,230, 14,247, 99, 94,196,116,239,210,190, 29, -135,195,225,196, 37,190,190,233,224, 96, 41,190, 16,113, 94,171,211,233,110, 26,195, 37, 20, 10,251,116,238,220,153,155,151,151, - 7, 23, 23, 23,100,101,101, 33, 53, 53,181,196,194, 80,144, 7,109, 65, 1,116,133,249, 48, 20,203,241,226,238, 29, 52,247,242, - 20, 30, 46,153, 4,127,160,134, 50,169,212, 50, 85,209,146, 37,176,176,128, 64, 34, 1,169,229,240, 32, 33,164,191,181,181,245, -220,252,252,252, 83,148,210, 21, 90,173, 54,116,238,220,185,173, 55,109,218,100,191,114,229, 74,203,207, 63,255,252, 48, 33,164, - 57,165, 84, 93, 21,135, 92, 46,127,174,215,235,237, 1, 56, 94,184,112, 1,142,142,142, 40, 40, 40, 40,179,172,104, 20, 10,133, - 40, 39, 39, 7,106,181, 26, 26,141, 6,150,150,150,184,119,239, 94,158, 94,175,255,181,166,244, 89,122,147, 21,106,109,236, 34, - 59,127,243, 52,173,222, 38,232, 77, 46,155,183,116,109,218,114, 0,235,122,122,123,239,212,178, 87, 94, 60,125,124,194,230,229, -221,200,220,180,167,197, 94, 59,127, 75, 44,170, 38, 31, 41, 33,132, 37,132, 80, 63, 63, 63,100,103,103,131, 97, 24,136,197, 98, - 72, 36, 18, 52,108,216, 16,201,201,201,117, 22, 88,122,189,190, 92, 92,157, 60,121, 18,233,233,233,216,191,127, 63,220,220,220, - 56, 0, 28,146,147,147,187, 13, 30, 60,184,173,157,157,205,170,156,156,188,213,213,164,243, 1, 0,203,183,202,169,147,189,189, -253, 69,181, 90,141,196,196, 68, 28, 59,118, 44,152, 82,122,185,150,207,118, 34, 33,164, 71, 96, 96,224,222,150, 45, 91,122, 83, - 74,209,164, 73, 19, 12, 27, 54, 12, 97, 97, 97,120,248,240, 33, 10, 10, 10,216,115,231,206,237, 6,176,182,182, 29,119,105,254, -250, 13, 28, 56,240, 90,120,120,184, 77, 78, 78, 14,148, 74, 37,138,139,139,113,248,240, 97,116,232,208, 1,246,246,246,216,183, -111,159,158, 82,122,162, 26, 46,145,181,181,245,169,107,215,174, 5, 55,104,208, 0, 49, 49, 49,184,112,225, 2,234,215,175, 15, -129, 64,128,145, 35, 71, 90,110,221,186,117, 10, 33,100, 53,143,199, 91, 49,112,224, 64, 24, 12, 6, 92,191,126, 61, 7, 64,174, - 17,207, 60,242,243,243,145,159,159, 15, 51, 51,179,138,207, 24, 1,176,107,195,134, 13, 99,166, 79,159, 14,111,111,239, 21,132, -144,173,149, 5,148,102, 89,118, 89,106,106,170, 35,151,203,117,210,235,245, 72, 78, 78,198,189,123,247, 16, 26, 26,154,153,147, -147, 19, 76, 41, 77, 32,132,108, 9, 9, 9,153,184,126,253,122,184,185,185, 33, 57, 57,217,125,230,204,153, 97,132, 16,252,213, - 34,203,207,207,166,177,128, 17, 78,227,243,121,118,121,121,121,229,109,135, 70,163,129, 90,173,254,157,229,138,207,231,217,181, -105, 81,239, 55,165,162,104,193,147,132,188, 42, 3,151, 55,106, 96,221, 84,108,110, 53,189,119,143,193, 35, 63,234, 49,128,209, -235,116, 56,123,246, 4,254,239,255,182,160, 83,160, 47,188, 26, 52,193,148,169,211,172,212, 26,253,188,115,231,206,204,109,223, -198,243, 76, 81, 97,254,252,234, 56, 77,168, 68, 96, 85,174, 24, 7, 25, 92, 93,145, 87,250,192,216,219,216,216,108, 54, 24, 12, -157,128,207,192,147, 56, 33,230,222,109,228,230,241,160, 86, 26,192,210, 18,145,101,148, 96, 81,107,112,229,236,113,108,220,176, - 14, 57, 57, 57, 8,252, 48, 24,114,174, 27,220,221,220,161, 82, 42, 74, 31, 22, 64,171,209,193, 65, 90, 15,247,239, 63,212, 21, - 22, 23, 87,217, 16,241, 69, 90,127,119,169, 47,212,218,118, 16, 9, 4, 40, 40,210, 32,175, 84, 92,237, 59, 50, 4,106,133, 18, -122,141, 22,122,141, 14, 14,238, 3,209, 80,218, 25,172,225, 68,227, 90,229, 18,107,128,246,229, 21,104, 95, 94,129, 89,187,169, -248,117,213,240,183, 26, 62,227, 2,194,103,102,102,102,201,100,178, 51, 81, 81, 81,125,134, 12, 25,130,200,200,200,209, 0,102, -150,118,238,163,135, 12, 25,130,168,168, 40,196,197,197,157,201,204,204,124, 47, 62, 59, 4, 2,129,170,236, 45, 79, 36, 18,137, -106, 56,215,181,117, 72, 8,167,224,254,253,194, 13,215,175, 47,221,185,107, 23,191,107,151, 46, 68,167,215,131, 53, 24,208,192, -199,135,124,244,209, 71,230, 97,135, 14,217, 49, 58,221,173,217,161,161, 23,182,142, 26, 85,116, 91, 46, 55,118, 2,121,253,210, -161, 65, 0,168, 95,205, 62,163,161, 86,171, 55,125, 49, 97,124,183, 75,145,151,221,234,215,115,181,136,184,112,229,161, 64,200, -231,120,121,120, 49,249,249,249,220,175,150,206, 55, 83,171,213, 63, 24, 73,231,111,111,111,143,140,140, 12, 60,123,246, 12,106, -181, 26, 58,157, 14,172,162, 24,154,188,124,104, 10,114, 65, 84, 74, 8, 13, 6,168,178, 51, 81,223,203, 19,248,247, 10,195,154, - 58,176, 74, 5, 86,217,167,200,210, 18,124,115, 9, 56, 60,158,209, 65,203, 9, 33, 45,219,180,105,115,232,231,159,127,230,143, - 29, 59,182, 45, 33,100, 51,165,244, 53, 33,164,203,226,197,139,239,108,222,188, 89, 56, 97,194, 4,191,181,107,215,126, 10,160, - 74,193,174, 82,169, 14,253,246,219,111, 35,234,213,171,231,248,232,209, 35,168, 84, 42,176, 44,139,158, 61,123, 2, 64,121,157, -137,143,143, 87,170, 84,170, 55,143, 31, 63, 46,124,253,250,181, 6, 70,172,250, 91,250,125,218,205,153,131,101, 33, 82, 39,215, - 91, 34,179,250, 30, 84,126,255,227,153,131,101,107,214, 31, 78, 81,157,126,254,188,104,241,100,175,213,197, 69,209,147,173,101, -242, 31, 79,159, 72, 52,102,149, 47, 45, 91,150,110,103,103, 7, 46,151, 11, 30,143, 7, 62,159, 15, 0,144, 74,165, 40, 40, 40, -168,118,136,176, 42,129, 85, 88, 88,136,130,130, 2,196,197,197, 33, 61, 61, 29, 55,111,222,132,193, 96, 64,201, 34, 69, 64, 38, -147,225,206,157, 59, 22,173, 91,183, 94, 64,248,228, 18,213, 82,163,151,141, 51, 12, 51,125,212,168, 81,208,104, 52, 24, 54,108, - 24,118,238,220, 57, 29,192,229,218,214,119, 74,233, 45, 66,136,207,195,135, 15, 45, 1,244, 27, 58,116,232,158,129, 3, 7,226, -242,229,203, 56,113,226, 68, 48,128, 4, 0, 74, 0,171, 74, 3, 43,175,170,110,129, 71,169, 43,134, 45, 14, 14, 14,253, 26, 55, -110,252,112,224,192,129, 1,225,225,225,214,111,222,188, 41, 91,212,128,151, 47, 95,226,167,159,126, 74,223,181,107, 87,161,193, - 96,176,227,112, 56,191,229,231,231, 87,181, 10, 90,100,110,110,126,250,218,181,107, 65, 13, 26, 52,192,249,243,231,177, 96,193, - 2, 4, 5, 5, 97,255,254,253,104,216,176, 33,154, 52,105, 2, 71, 71,199,201,185,185,185,237,119,236,216, 17,252,193, 7, 31, - 96,223,190,125, 72, 79, 79,223, 82,149,203,134,154,134,234,116, 58, 29, 1,208,118,195,134, 13,158,211,167, 79,199,207, 63,255, -140, 22, 45, 90, 88, 37, 54,113,246, 33, 0, 0, 32, 0, 73, 68, 65, 84, 38, 38,174, 45,107, 99,223, 18, 88,160,148,226,197,139, - 23, 80, 40, 20,184,122,245, 42,150, 45, 91,150, 85, 38,174, 0,160, 79,159, 62, 19,215,175, 95,143,193,131, 7, 67,171,213, 98, -230,204,153, 88,191,126, 61,142, 31, 63,254, 53,128,191, 76, 96, 53,244,177, 91,221,166,117,208, 92,103,215, 6,216, 23,190, 31, -185,185,185,229,121, 82,150, 47,148, 82, 20, 21, 21, 33, 35, 35, 3, 86,150, 22, 88,179,118, 69,175, 73,159,143,113, 67,137, 59, -139, 63, 54,116,222,182,107, 7, 13, 27, 63,107,216,136, 49,120,244, 48, 10, 97,123,182,227,241,163, 7,229,124,122,157, 22, 9, -177,247,144, 16,123, 15, 82,167,122,248,168,107, 48, 25, 62,124,120,207, 81, 35,134, 58, 0,248,211, 92, 64,252, 47, 89,175,170, - 28, 34,124,235,129,177,183,177,177,121,114,240,224, 65,187,192,192, 64, 70,175,215,227,204,217,179,152, 60,241, 19,124, 58,106, - 30,180,176,129, 94,195, 7,203, 23, 25,117, 65,165, 82, 1, 10,138,226,226, 98,220,184,113, 3,148,213, 35,108,199, 58, 80,202, -150, 11, 44,128, 66,163,213,194,213,221, 15, 91,118,174,212,131,199,171,178, 33, 43,204, 97, 12, 58, 61, 69,234,155, 36, 36,165, - 63,134,149,133, 59,184, 60,119,228,228, 43,192,229, 56, 65,167,138,135,161,212,124,170, 40, 78,129, 82,251,110,229,102, 40,248, -163,149,148,178,172,209,255, 87, 40, 20,135,246,237,219,247,209,250,245,235,249,189,122,245,242,150,201,100,109, 0, 32, 36, 36, -196,219,194,194, 2,251,246,237,211, 42, 20,138, 67,239,209,194,243, 97,235,214,173,145,155,155,139, 87,175, 94, 85,251,230, 97, -208,104,236, 36,142,142,204,155, 75,151,116, 89,121,121,110,157, 59,119, 38, 58,189, 30, 28, 66,144, 91, 80,128,215,175, 94,193, -218,218,154, 60,137,143,151,252, 48,101,202, 47,190, 1, 1,220,178, 21,134,198,224,196,137, 19, 98,148,204,187,170,118, 95, 45, - 31,200, 98, 66,200,232, 41, 83,166,252,242,175,127,237,179,202,200,204,124, 42, 20, 8,245, 18,137,153,243,168,145, 67,185,249, -249,249, 35, 40,165,114, 99,249,242,242,242,240,226,197, 11,152,153,153,129,207,227,129, 85, 42, 96, 40,150, 67,149,155, 5, 70, -171,129,192, 96,128,173, 88, 8, 55,169, 20,238, 14,246, 70,113, 62,187, 24, 81, 62,161,189,226,176,224,154, 54,254, 16,152, 75, - 32,176,144, 96,210,201,200,210,183, 79, 62,176,184,230,145, 97, 66,136,189,171,171,235,175,225,225,225,252,172,172, 44, 60,120, -240,224, 33,165,180,128, 16, 98, 1,128,141,141,141, 61,255,248,241,227, 62,165,171,232,106, 90,253,181,238,232,209,163,221, 2, - 3, 3,245, 30, 30, 30,230,153,153,153,238, 57, 57, 57, 36, 61,253,247,115,152, 79,157, 58, 37, 82, 42,149,197, 44,203,254,130, - 18, 63, 78, 53,250, 31,154, 57, 88, 38,186,113, 31, 83,131,186,215,111, 98,105,223, 20,185,250,251, 77,110, 61, 76,159, 58,115, -176,108,211,250,195, 41, 42, 51,162,222, 67, 12,201,110, 92,145,106,175,145,229, 77,237,237,237, 65, 41,197,157, 59,119,112,237, -218, 53, 92,185,114, 5,175, 95,191,254,183, 85,219,202, 10,231,206,157, 67,167, 78,157,106,243, 92,194,217,217, 25, 54, 54, 54, - 8, 11, 11,195,254,253,251,203, 39,186,151, 33, 59, 59, 27, 98,177, 24,235,215,175,151, 12, 26, 52,232,107, 0, 31, 25, 41,132, - 61,187,117,235,214,219,217,217, 25, 57, 57, 57,112,114,114, 66, 96, 96, 96, 95, 66,136, 7,165,244,101, 29,171,254,164,238,221, -187,175, 88,182,108, 25,116, 58, 29,198,141, 27,135,167, 79,159, 30,122,250,244,233, 70,119,119,247,169,115,230,204,145, 74,165, - 82, 12, 25, 50,196, 28, 64, 72, 85, 36,182,182,182,171,182,111,223, 62,162,119,239,222, 28,173, 86,251,225,197,139, 23,241,234, -213, 43,104, 52, 26,232,245,122, 60,127,254, 28,161,161,161,233, 57, 57, 57, 65,148,210,231, 70,164,107, 94, 68, 68, 68,144,191, -191, 63, 78,158, 60,137,144,144,144, 75,214,214,214,190, 77,155, 54,117,118,113,113,193,225,195,135, 97,105,105, 9,119,119,119, -219,149, 43, 87,118, 30, 48, 96, 0, 78,158, 60,137, 25, 51,102, 68, 2, 88, 93,151,140, 96, 89,150,108,216,176, 33, 96,195,134, - 13,178, 50,113,197,225,112,112,240,224, 65, 60,124,248,176,127,101, 2,139, 82,186,212,217,217,121,169,179,179,179, 40, 34, 34, -194,170,126,253,250,208,235,245, 26, 74,105,130, 76, 38, 75,117,113,113,177, 22, 10,133, 88,176, 96, 1, 10, 11, 11, 63,141,143, -143, 15,107,214,172, 25, 29, 57,114, 36,252,253,253, 93,255,202, 78,154,225,144,209,223, 44,159,141,187,247,227,113,244, 40, 31, -119,239,222,133, 84, 42,133, 80, 40, 4,165, 20,106,181, 26, 89, 89, 89,208,105,213,104,210,216, 19,123,119,173,198,155, 55, 89, - 0,135, 84, 57,181,134,112,200,200, 49,159,124,140,171,215,206, 98,235,214,237,144,203,139,171,120,233, 22,161,129,175, 63, 92, - 93, 28,145,156,146, 12,194,129,253,159,121,175,255,144, 33,194,127,195,218,218,122,227,129, 3, 7,236, 58,117,234,196, 20, 23, - 23,131,101, 89,116, 12, 12,196,212,233,211,113, 34, 60, 28, 62,109,135,129,104, 36,208,139,141, 91,197,160, 82, 42,208,168, 69, -123, 12, 30, 50, 20, 73,175, 95,163,123,159,129, 80,169, 20,229,111, 20,101, 22, 44,141, 70, 11,123, 71, 55, 68, 68, 68, 48, 24, - 55,238, 73,149,162, 64, 43,136, 78,120,174,234,144,175,188,143, 27,119,195,160, 85,107,209,164,201, 98,104, 89, 59, 56,202, 62, -135, 78,119, 12,133, 89, 23, 75,134, 43,236, 58, 33, 37, 41, 9, 28,134,255,164,174, 25,198, 22,103,213,250,237,234,173, 14,188, -208,217,217,249,248,205,155, 55, 7,135,132,132,224,220,185,115,159,150, 10, 44,220,188,121, 19, 47, 94,188, 56,158,151,151, 87, -248, 62, 10, 87, 38,147,245, 12, 14, 14, 14,105,221,186, 53, 78,158, 60, 9,131,193,112,195,168, 7,154,199,163, 28, 14, 7, 44, -203,130, 0,200,201,207,199,211,167, 79,145,147,157, 13,157, 78,135, 98,185,156,245,247,245,149, 83,150,181,168, 77,122, 42,174, - 24, 68, 37,171, 8,203,246,213, 65,100,189,150, 72, 36, 73, 69,114,185,131,165,141,109,145, 72, 32, 48, 20,228, 23, 20,196, 60, -121,164, 49,178, 83, 40, 67,236,227,199,143, 3,210,210,210,144,148,148, 4,125,113, 17, 24,181, 6, 28,181, 2, 93,218,183,131, - 25, 40, 68, 96,193, 99,117,224, 49, 60, 20,149,172,182,139,173, 81,148,235,116,127,176,100, 17, 66, 74,134, 5,205,205, 33,144, - 88,252,206,162,101, 76,125, 18, 10,133,225,135, 15, 31,118,118,117,117,197,242,229,203, 33,147,201, 26, 54,105,210, 68,209,177, - 99, 71, 51,169, 84,138, 70,141, 26,161,125,251,246, 56,125,250, 52, 0, 60,175, 33,255,244,132,144,143,174, 94,189, 58,235,250, -245,235,131, 9, 33,100,222,188,121,232,209,163, 7, 68, 34, 17, 20, 10, 5,242,242,242,176, 99,199, 14, 66, 41,109, 81,154,214, -122, 34,145,104, 63, 33, 36, 69,169, 84, 14,121,155, 51,108, 67, 83,151, 55,185,236, 56,169,147,235,199, 65,221,235, 55,233,220, -189, 43, 60,125, 58,163,115,247, 36, 0, 88,109,203,125, 53,108,205,162,128, 95,236,221,108,127,138, 56,115,110,105, 96, 80,231, -133,243, 38,216,172, 88,189,189,230,186, 79, 8,129,193, 96, 0,151,203, 5,135,195,169,212, 74,197,229,114,193, 48,198, 77, 69, - 49, 24, 12, 41, 3, 6, 12, 40,255,157,150,150,102,239,230,230,198, 41,179, 92, 1, 64, 65, 65, 1,146,147,147,161,211,233, 96, -103,103, 7,173, 86,219,180, 22,245,106,234,216,177, 99,137, 82,169,196,248,241,227,177,115,231, 78, 12, 27, 54,140, 92,190,124, -121, 42,128,233,181,173,239, 28, 14,103,205,156, 57,115,102,133,134,134, 34, 55, 55, 23,167, 78,157, 66,207,158, 61,113,240,224, - 65,135, 83,167, 78,125,211,169, 83, 39, 48, 12,131,147, 39, 79, 66,175,215,199, 87,199,197,231,243,251,245,238,221,155,147,156, -156, 12, 62,159,143, 86,173, 90, 33, 37, 37, 5, 10,133, 2,169,169,169,152, 54,109, 90, 70,169, 85,231,185, 17,229,194,107,208, -160, 65,104,195,134, 13,113,238,220, 57, 12, 26, 52,232,178, 78,167,235,157,149,149, 21,154,151,151,247,221,200,145, 35, 17, 16, - 16,128,132,132, 4,116,235,214, 13, 29, 58,116,192,169, 83,167, 48,126,252,248, 72,157, 78,215,187, 26, 63, 88, 69,111,222,188, -177,242,246,246, 70,102,102, 38,228,114, 57,110,222,188,105, 25, 25, 25,233,225,226,226, 98,157,152,152, 72, 23, 45, 90, 36,158, - 62,125, 58, 54,110,220,136, 7, 15, 30, 32, 44, 44, 12,157, 59,119,214, 61,123,246,172, 82, 43,107,118,118,246,118, 0,219,109, -109,109, 51,205,205,205, 81, 84, 84, 4,137, 68,242,185, 76, 38, 75,189,113,227,134,139,155,155, 27,114,114,114, 48,113,226, 68, - 40,149, 74,184,187,187, 55, 88,185,114, 37,146,147,147,145,151,151,247,151,118,210,172,129, 5,192,194,195, 77,130,179, 39,118, - 33,234, 97, 34,162, 30, 62,134, 64, 88, 50,185, 93,169, 84,160, 69,147, 6,104,219,170, 13,210,210, 83,241,175,176, 93,176,181, -119,173,182, 29,161,148,130,207, 53,192,223,215, 9,225, 97,219,113,242,212, 5,132,253,107,127,249,156, 54, 46,151,135,230, 45, -218,162, 85,171, 64, 36,190,120,142, 93,187,182,194,193,209,205, 52,230, 87,215, 33,194,138,159,111,189, 29,116, 14, 12, 12,100, -228,114, 57, 84, 42, 21, 50, 50, 50,240,234,213, 43, 88,219, 88, 35, 49,237, 37,130,197, 90,100,176,133,136,125,248,196, 64, 24, -222,131,154, 46,216, 59,168, 57, 16,212, 28,147,199, 14,171,186,240, 65, 97,110,105, 15,181, 90, 13,173, 78,247, 12,155, 54, 85, -249,166,172, 55,232,206,159, 61,119,177,205,216, 79,251,241, 34, 46,238,132, 78,195, 66,169,179, 66,177, 74,131, 98, 45, 15, 28, -171,158, 64,246,101, 48, 92, 33, 62,104,214, 0,191, 28, 61,173,165,122,221, 5,163, 51, 72, 26, 0,125,230,227, 10, 2,235,205, -239,142,139, 44,108,141, 30, 34,172,144,167,191,132,135,135,247,106,215,174,157,184, 83,167, 78, 94,165, 29,166, 38, 60, 60, 92, - 81,106, 29,168,173,234,255,157,247,118, 87, 87,215,166, 92, 46, 55,164, 79,159, 62, 77,199,140, 25,131, 39, 79,158, 96,223,190, -125,207,124,125,125,175, 85, 43,172, 4,130, 28,249,155, 55,214, 18, 15, 15,174,141,133, 69,218,233, 83,167,234,117,237,214,141, - 36, 37, 37, 33, 39, 39, 7, 42,149, 10, 15, 30, 62,164, 60,134, 73, 33,150,150,156,248,251,247, 57,140, 64,144, 83,139,164,190, -170, 97, 21,225,170,186, 90,179,220,156,109,188,151,206,255,194, 83,165, 82, 5, 20, 22, 22,234,185, 60, 30, 79,230,100,253,186, -150,195,141, 39,207,159, 63, 63,160,107,215,174,194,132,232, 7,208, 23, 20, 64, 83,144, 7, 62,107,128,109,139,102, 96,180,106, - 64,163,131,171, 63,133, 42, 95,140,203,183,227,117,106,181,186,198, 72,237,101, 2,139, 83,193, 25, 32, 0, 8, 36, 18, 8, 45, - 44, 33,148, 72,222, 30, 66, 36, 53,148,183,184, 95,191,126, 93, 62,248,224, 3, 80, 74,177, 99,199, 14,104,181, 90,129, 86,171, -133, 70,163,129, 86,171, 69, 97, 97, 33,194,194,194,176,101,203,150,235, 0,118, 27, 33, 82,245, 60, 30, 47, 84,175,215, 59, 10, -133, 66,173,131,131, 3,255,208,161, 67,229,110, 35,154, 55,111, 14,115,115,115, 53, 33, 68, 11, 0, 78, 78, 78,186, 61,123,246, -112,251,247,239,207,175,140,207,175, 73,195,217,158,122,155, 32,145, 89,125, 15, 75,251,166,240,244,233, 12, 0,232,214,103, 44, - 60, 27,184,163, 48, 59,218, 67,165,124,245, 49,159,155,103,243,100, 83,106,140, 89,239,128, 49,197,111, 34,159, 2,216,101,228, - 51,132,174, 93,187,162,123,247,238,229,195,129,142,142,142,208,104, 52,149, 46,231,175, 14,101, 78, 68,151, 45, 35, 28, 44, 5, - 54, 88, 89,102, 0,112,168, 40,174,146,146,146,144,148,148, 84,102, 21,174,177,140, 42,148,149,153,143,143,207,232, 22, 45, 90, -224,212,169, 83,184,123,247,110,234,217,179,103, 93, 3, 3, 3,225,225,225, 49,134, 16,178,128,210,170,125,232, 85, 54,164,247, -225,135, 31, 78, 9, 13, 13,197,227,199,143,241,197, 23, 95,228, 36, 39, 39,255,114,232,208,161,241, 75,151, 46,229,116,239,222, - 29,233,233,233, 88,179,102,141,225,218,181,107,107, 1, 44,175,161,220,227,146,147,147,101, 42,149, 10,185,185,185,208,235,245, - 80, 40, 20, 56,125,250, 52,194,194,194,202,230, 35, 61, 51, 50,121,182,129,129,129, 54, 79,159, 62,197,174, 93,187,160,209,104, - 22, 82, 74, 85,132,144,221,115,231,206, 93, 32,149, 74,173,186,117,235,134, 22, 45, 74,124,193, 29, 60,120, 16,211,166, 77,139, -212,104, 52,189,107,200,131,245, 78, 78, 78,159,127,241,197, 23, 13,103,206,156,137,215,175, 95, 91,158, 58,117,170,195,141, 27, - 55, 72,153, 16,178,179,179,195,198,141, 27, 49, 99,198,140,221, 0, 50,111,223,190, 61,250,249,243,231, 95, 83, 74,183,214,112, -255, 75,101, 50,217, 82,150,101,197,221,186,117, 59,189,110,221, 58, 50,120,240, 96,104, 52,154,114,215, 7, 54, 54, 54,123, 5, - 2, 1, 58,118,236,136, 89,179,102,129, 97,152,145,127,117, 71, 77,169, 1,138,188,199, 48,168,109,208,188,137, 31,154, 7,212, -199,217,139, 81, 0,128, 46, 3, 3,161, 40, 46,194,158, 61, 59,240,236,217, 83,112,121, 60, 88,219, 58, 25,245, 12,105, 10,227, -144,175, 77, 71,215, 78,173,208,179,123, 48,118,239, 61, 8,189, 78,139,241, 99, 71, 32, 47, 63, 31,123,247,238, 66,226,139,231, -224,242,120,176,179,119,249, 11,238,179,106, 45,242, 63,105,193, 42,107, 80, 88,150, 69,106,106, 42,238,221,187,135,151, 47, 95, - 66, 44, 22, 67,169, 55,176, 91,207, 95, 99, 9,225,167,176,148, 94,167,250,114,175,194,127,228, 48, 24, 82, 43,120,152,181,178, -177,177, 17,168,213, 74,232,245,186, 10, 45, 21, 1, 8,192,231, 2,206, 46,158, 72, 78, 74,166, 74,149, 42,178,218, 55, 48,181, -106,227,241, 95, 14,135,182,239, 16,104,223,179,203, 50,252,114,108, 49,242, 10, 11,161,210,242, 80,172,210, 66,161, 2,172,109, -125,209,186, 73, 83,164,165,229, 32,250,238,101, 57, 87,173, 48,102, 2,232,211, 31, 22,142,245, 25, 59,121, 54,204,234,117,128, - 58,246, 23,176,242,204,114, 11,150, 72, 98, 3, 91,119,127,228, 23,171,113,248, 66, 20, 0, 24, 29,146, 37, 51, 51, 83,225,236, -236,124,100,210,164, 73,171, 31, 60,184,239, 9, 0,119,238,220,121,145,150,150, 54, 47, 51, 51, 83, 81,155, 2,172,224,189,157, -152,153,153,221,246,241,241,121,217,179,103, 79,203, 1, 3, 6,192,193,193, 1, 81, 81, 81,248,246,219,111,159,106, 52,154, 37, -145,145,145,213, 14,233,104, 52,154,212,168, 99,199, 44,131, 63,249,196,122,118,223,190,107, 66, 67, 67, 55, 46, 95,190,156,231, -227,227, 67,116, 90, 45, 30, 61,122, 68,195,247,237,211,109,153, 63,127,131,192,220,156,123,231,248,113,158, 94,173, 78,253, 79, - 87, 98,153, 76, 22,212,171, 71,144,255,218,245,155,160, 82,202,113,251,198,111,200,203,203,194,246, 29, 71,253,101, 50, 89, 80, - 74, 74,202,101, 35, 45, 25, 7,127,250,233,167, 89,109, 91,180,104,225,229,230,134, 71,175, 95, 66,192, 26,192,215,235,193,104, -213,224,232, 85,112, 11,160, 32, 28, 11,164,103, 20, 98,229,129, 35,143, 13, 6,195,193,154,120, 27,246,234,135,229, 41, 5, 32, -132, 96, 93,187, 0, 8, 44, 36,224,155, 75, 48,233,215,139,229,162,234,228,242,249, 16, 72, 36,240,110, 27,104, 76, 35,164,176, -176,176,184,247,232,209,163,214, 1, 1, 1,152, 53,107, 22, 94,189,122, 5,150,101,145,153,153,169, 74, 79, 79, 79,205,202,202, -122, 5,224, 23, 0, 59,169,145,111, 0,122,189,222, 49, 42, 42, 10, 0,248, 0,112,225,194, 5,184,184,184,192,202,202, 10,133, -133,133,152, 61,123,182,112,201,146, 37, 0,128,123,247,238,241,202, 38, 24, 87,134, 71, 81,177,107,243,139,104, 30,149,223,255, - 56, 87,127,191, 73,231,238,201,232,214,103, 12,206,157,220,141,139,103,207,195,150,251,234, 37,204,139, 78,103,191,204, 46, 76, - 41,246,217,230,223,114, 60,147, 94,124,118,219,212,254, 54,140,179, 51,123,120,222,150,130,252, 26,242, 0, 12,195,148,207,193, - 42,155,208, 94, 91,113, 85, 17, 75,151, 82,150,128, 16,123, 1, 63, 58, 57, 57,185,155, 76, 38, 67,102,102, 38,146,147,147,145, -148,148,132,228,228,100, 52,104,208, 0,137,137,137,224,243,249, 15,140,164, 29, 49,100,200, 16, 11,141, 70,131,253,251,247,235, - 1,244, 57,124,248,240,189,214,173, 91,115,123,244,232, 97,241,227,143, 63,142, 0,176,179, 22,201, 52,183,180,180,228,107,181, - 90,252,248,227,143, 72, 78, 78, 14,162,148,198, 18, 66,182, 13, 25, 50,100, 75, 64, 64, 64,131,199,143, 31, 63,149,203,229,147, - 40,165,209, 70,180, 69, 99, 91,181,106,117,152,101,217,122, 93,187,118, 53, 95,191,126,189,101,124,124, 60,100, 50, 25, 88,150, -125, 84,203, 80, 83,185,231,207,159,207,107,223,190,189, 77,233,132,246,149,132,144,175, 25,134, 89, 29, 18, 18, 98, 21, 30, 30, -142, 83,167, 78, 65,163,209, 32, 46, 46, 46,235,241,227,199, 63, 0, 88, 91,221, 2,140,210,178,126, 1, 96, 46, 33,164,233,182, -109,219,134,185,186,186,142,184,113,227, 6,185,122,245, 42,214,173, 91,167, 95,188,120, 49,183, 84,252,188, 0, 48,190,180,190, - 47, 48,114, 68, 97, 59,128,237, 50,153, 44,117,221,186,117, 22, 87,175, 94, 69, 70, 70,134, 15,128,182,173, 91,183,222,187,117, -235, 86,216,217,217, 33, 57, 57, 25,237,219,183, 55, 16, 66, 70,218,216,216, 28,108,218,180, 41,162,163,163,255,170, 38, 78,167, -213,106, 96,105,235, 9,121,126, 18,178,146,111, 64,108,225,132,238,157,155, 65,161,212,224,196,241,159, 17,253,232, 33, 56, 28, - 14,164, 78,110,176,182,177, 71, 66,194, 83, 0,136,169,158, 83, 11, 11,155,250,144, 23, 36, 67,243, 38, 10,102, 18, 71,140,249, -228, 99, 40,148, 90, 28,253,229,103, 60,126, 28, 13,134, 97,224,228,236, 6, 43,235, 18, 78, 66,171,229, 52,161,182, 2,139, 97, -152, 75,103,206,156, 25,212,182,109, 91,238,179,103,207,240,236,217,179,178,138,169, 39, 48, 28,201,140, 62, 54,188,154,206,191, -107,153,175,140,138,177, 5, 37, 22, 22,169,241,113,177,210,188,220, 76, 60,188,127, 13,207, 18, 30,225,101, 98, 44,180, 90, 21, - 24, 14, 7, 28,134,131,250,158,141,113,237,250, 13,141,198, 96,184, 89, 21, 39, 0,228,230, 62, 47,146, 72,125,135,174, 88,190, -224,228,140,217, 95,153, 13, 30,180, 21,209,241, 49,144,235,157, 64, 41,224,100,103,142,230, 94,115,144,154,150,133, 3,187,127, - 84,176, 90,237,200,138, 62,176, 42,227, 4, 0,105, 54, 26,109,217,177,123,220,206,176,240,175,102, 79,153, 32,237, 31, 50, 18, -130,220, 24,232,210,162,224,217,186, 39,136,208, 26,167, 34, 46,226,242,189,152, 76,214, 64,191,146,230,224,255,106,226,172,136, -130,130,130,187,153,153, 25,158, 21,188,182,123, 10,133,162,187, 53,136,169,174,111,249, 5,250,157,135,120,134,225,180, 93,190, -124,121,177,179,179,179,230,241,227,199,216,182,109, 27,123,239,222,189, 75, 2,129, 96,123, 90, 90,154,186, 38, 78, 7,157,238, - 97,248,188,121,141,218,132,132,208,225, 83,166, 40, 32, 20, 78, 93,179,110,221,188,172,188, 60, 23,202,178,112,176,181, 77, 89, - 51,127,254,170, 65, 67,134,228, 61,185,118,205,236,198,177, 99,102, 2,189, 62,170,166,116,190, 15, 84,199,153,146,146,114,217, -199,219, 29,123,118,174,135, 86,171, 70,122,106,137,225, 42, 59,167, 0,213,137,171,183, 57, 75, 7,255, 67, 22, 45, 89,114,107, -209,140,233, 78, 31,118,233,138,164,135, 15,160,205,205, 2,209,233,193, 35, 92, 20,191, 17,227, 77,166, 28,115,255,117,232,141, - 92,161, 8,121,219,145, 99, 85,233, 44,179, 80, 9, 45, 45,192, 55,151, 64, 32,177,248,157,213, 74,100,105, 9,129,185, 4, 92, -129,160,178,201,240,127,224,148,203,229, 3, 7, 13, 26, 20,125,231,206, 29,155,241,227,199,163,125,251,246,247,149, 74,101, 39, - 74,105, 81, 93,243,147,203,229,190,105,217,178,165, 35,143,199,211,143, 27, 55,142,155,157,157, 93,238, 9, 93, 46,151,227,244, -233,211, 40, 91,114,255,228,201, 19, 52,110,220,184, 74,206,241,115, 30,165, 2, 88, 62,115,176,108,205,173,135,233, 83, 1,172, -246,108,224,134,139,103,207,227,234,197, 27,243, 62, 8, 96, 55,245, 26,217,250,107,113,167, 33,179,253, 91,142,103, 36,150,206, -216,123,244,103, 38, 54,106,215, 74,133,226,145, 55,128, 47,171, 74,103,233, 42,174, 63,184,100, 80, 42,149, 70,137,171,234,234, - 18, 5,165,252,124,178, 96,240,224,193,109,111,223,190,109, 33,145, 72,160,213,106, 65, 41,133,183,183, 55,184, 92, 46,126,248, -225,135,226,236,236,236,197,198,112,154,155,155,135,118,239,222, 29,113,113,113,184,123,247,238,207,148,210,104, 66,200,207,207, -158, 61, 27,218,177, 99, 71,236,222,189, 59,180, 42,129, 85, 21, 39,203,178, 21,125, 30,229,150,214,221,135, 0, 62,168,237,189, -151, 58, 11,237, 0, 0,118,118,118,201, 82,169,212,242,225,195,135,112,119,119,135, 86,171,109, 91,155,186, 68, 41,213, 17, 66, - 54, 71, 70, 70, 46,233,208,161, 3, 66, 67, 67,131, 34, 35, 35,131, 58,116,232, 0,127,127,127, 92,188,120, 17,251,246,237, 59, - 98, 48, 24, 38, 1,200,167,148, 26,106, 83, 70,165,130, 49,186, 73,147, 38, 35,220,220,220,176,110,221, 58,109,116,116,244,180, - 21, 43, 86,108,120,240,224,129,176,113,227,198,156,232,232,104,182, 46,229,110, 99, 99,131, 50, 78,107,107,235,103, 26,141,166, -173, 64, 32,192,192,129, 3,161, 86,171,145,150,150,102,176,181,181,229,254, 39,218, 58, 74,200,194,241,159, 77,221,246,217,248, - 17,162, 86, 45,155, 67, 81,152, 2,165, 60, 19,138,162, 12,252,176, 51, 2,132,112,224,224,224, 12, 71, 39, 25, 94,191, 78,194, -245,223, 78,105,138, 21,202,141, 2, 29,187,186,122,206, 41, 37,156, 45, 74, 56, 21,197,111,160,148,191, 41,231,116,116,116, 41, -229,124,141,107, 55, 78,169,148,197,197,235, 53,148,124,247,103,222,251, 63, 78, 96,229,229,229, 77,155, 48, 97, 66,167,185,115, -231,218,233,245,122,198,214,214, 22,175, 95,191,214, 31, 57,114, 36, 87, 46,151, 79,171,211, 69,121,188,104, 31, 95,191, 78,253, -251,247,215,247,235,215,151, 63,106,108, 15,174,131,163, 35, 10,242,115,144, 16,247, 0,241, 49, 81,240,241,107,134,165,203, 55, - 0,214,214, 53,174,212,145,103, 38, 92,146, 72,125,251, 44, 91,244,229,193, 14, 65, 31, 89,250, 53,110,198,111,238,109, 5,173, - 78,143,148,148, 20, 28, 63,246, 80,251,248,222,213, 66, 86,175, 25, 90,156,101, 92,168,156,200,146, 9,188,219,155, 72,201,190, -111,214,252, 48,235,199,237,123,102,207,157, 58,222,188, 99, 96, 55, 60, 58,191, 27, 63,159, 60, 88,172, 82,107,214,240, 25,172, -123,148, 77, 21,181,205, 3,149, 74,165,123,123,234,136, 74,165,210,189,107,129,238,217,179, 7, 25, 25, 25,218,228,228,228,243, -122,189,254,151,218,172, 70,220, 68,169, 38,132,144,243,139, 2, 3,123, 44, 58,123, 86, 52,122,206, 28,205,200, 81,163,190,132, - 90,173,133, 64, 64,185,230,230, 28, 8,133,188, 39,215,174,153,125, 63,113,162, 45,209,104,206,237,174,225,237,243, 45,188,247, - 85,132, 21, 44, 88, 24, 61,126, 6,148, 21, 44, 88, 55,239, 38,160, 54, 22,172,210, 70, 60,137, 16,242,193,212,133,139,142, 14, -237,222,197, 63,160, 94,125,161,131, 71,125, 72,156,156,144,147,149,133,107,119,227,117,203, 15, 30,125, 92, 42,174,140,242, 11, -195,178,108,249, 42,183, 46,211,230,130, 48, 12, 80, 42, 4,202, 86, 2,121,180,110, 15,194,229,194, 64, 89,168,213,106,106, 68, - 58, 83, 8, 33, 3, 71,142, 28,121,225,228,201,147,156,238,221,187, 55,255,229,151, 95,216,119,169, 59, 58,157, 78, 86, 42,180, - 10,197, 98, 49,119,204,152, 49,208,233,116, 80, 40, 20, 40, 40, 40, 64,108,108,172,122,240,224,193,194, 82,225,160, 27, 58,116, -104,141,237,199,250,195, 41,170,153,131,101,155,108,185,175,134, 21,102, 71,123,216,114, 95,189,252, 32,128,221,180,254,112,138, -106,217, 12,235, 21,217,175, 46, 39,164, 23,159,221,182,247,232,207,204,167, 31, 15, 52,200, 36, 79,231,137, 28,233,145,206,125, -107,236,132,254,224, 84,244, 29, 60,224,255, 14, 90, 45,189,111,103,103,179,170, 77,155, 54, 11,214,175, 95, 47,113,112,112,128, - 94,175,199,139, 23, 47,176,121,243,230,226,188,188,188,149,148,210,123,198,112,249,250,250,122,112,185, 92, 28, 56,112, 0, 0, - 54,151,238,222,252,203, 47,191, 12, 29, 63,126, 60,234,215,175,223,136, 16, 34,164,181,120,142, 40,165,229,163, 10,239,185, 99, - 79,252,254,251,239, 93,157,156,156,200,233,211,167,245, 12,195,156,168, 3,205,170,125,251,246,181, 99, 89,182, 75,199,142, 29, -209,160, 65,131, 50,139, 39,142, 29, 59,118,208, 96, 48,140,172, 78, 88, 25,131,216,216,216,171,201,201,201,195,102,205,154,197, - 95,191,126,253,134,153, 51,103, 10,147,147,147, 17, 19, 19,115,251, 29, 56,175, 39, 39, 39, 15, 41,229, 84, 89, 90, 90, 10,191, -249,230, 27,204,152, 49,131,198,197,197,141,182,181,181, 13,251, 79,117,210,113, 79,115,194,154,120, 73,207, 46, 95,177,126,137, -183,151,199, 23,227,198, 12, 97,124,125, 26,163,184, 32, 5,118,246, 82,200,220, 60,145,245, 38, 27,103,206,156, 54,100,103,231, -255,100,224,144,101, 79,159,230,164,189, 11,167,171,204, 19,111,222,188,193,169, 83,167, 12,249,121,133, 59,160,227, 44,143,121, -149,151, 9, 19,106, 61,230, 89,227, 6,192,222,198,198,102,191,165,165,101,166,165,165,101,166,141,141,205,126, 0,246, 70,252, -175,107,249,119, 74,153,223,109,131, 6,137, 32, 18,125, 0, 46,119,166,181,141,205,105, 43, 43,171,156,224,224, 96,205,182,109, -219, 84,177,177, 79,216,212,212,100,106,101,101, 85, 88,118,126,101,156,111,111, 54, 54, 94, 22,230,206,141,151, 88,201,154, 95, -147, 56, 55, 42,146, 56, 55, 42,178,146, 53,187,110,238,220,232, 43, 27, 27, 47, 11, 99,210, 89,213,230,233, 8, 7, 31,123,252, -232,231, 64,148, 62,246,248,209,211, 17, 14,198,222,123, 53,231,172, 34, 4, 6, 66, 96, 64,201,114,106,212,150,179, 2, 7,203, - 48,204,110,119,119,119, 39, 0,140, 49,229, 90, 21,231, 40,160,254, 40,161,240,179,195,243,230,141,126, 25, 25, 57,178,240,197, -139,225, 5,137,137, 67, 30, 28, 60, 56,116,243,208,161,163,134, 11,133,159, 15, 2,188,140,229,116,118,118, 94, 21, 21, 21,117, -210,216,205,217,217,121, 85,109,243,211,203,211,245,108,247,174,109,105,232,132, 16, 26, 58, 33,132,118,239,218,150,122,121,186, -158,173,107, 25, 1, 32, 12,195, 12, 19,139,197,251,205,197,226, 71,230, 98,241, 35,177, 88,188,159, 97,152, 97, 0,136,177,156, -118,118,118,247,164, 82,105,102,109, 54,123,123,251,251,181, 72,231,112, 15, 15,143,100, 14,135,179,193,216, 50, 55,130,179, 61, -195, 48, 5, 0,180, 21, 55, 46,151,155, 82,225,156,122, 66,161,240,166, 72, 36, 58,100, 12,231,119, 11, 27, 47,185, 30, 49, 57, -250,187,133,141,151,188,125,108,202, 0,155,177,183, 46, 44,203,153, 50,192,102,172, 49,233,116,116,116,140,116,116,116, 76,119, -116,116, 76,151, 74,165,213,110,246,246,246,247,234,242,108, 82, 74, 1, 30, 90,219,219,219, 71, 88, 90, 90,102, 89, 90, 90,190, -177,183,183, 63, 11,160, 85,109,242,147,195,225,172,110,212,168,145,138, 97,152,255,123,235,252,181,222,222,222, 42, 46,151,187, -166,150,207,187,101,199,142, 29, 13, 15, 31, 62,164, 65, 65, 65, 20,128,205,123, 44,119, 39, 27, 27,155,211,150,150,150, 73, 22, - 22, 22, 63, 0, 48,175, 11,103,233, 16,243, 60, 47, 47,175,140,224,224, 96,234,229,229,149, 4, 96, 50, 0,206,123, 74,103,203, -144,144, 16,109, 82, 82, 18,165,148,210,164,164, 36, 26, 18, 18,162, 5,208,242, 29, 56, 91, 87,193, 57,234, 93,219,249,218,110, -213,113,250,123,218,123, 53,108, 96,115,104,196,192, 64, 54,226,248, 6,186,116,193, 23,180, 91, 80, 99,234,231,109,115,212,199, -199,206,231,125,112, 46, 89, 48,129,118,253,176, 17,235,239,101,115,208,223,211,222,235,175,188,247,255,181,141,212, 49, 84, 85, -173, 77,157,196, 24,239,178, 46, 46, 46,200,201,105, 43,226,114, 3,133, 66, 97, 39, 14,135,115, 37, 55, 59,123, 74,137,233, 30, -134,255,196,240,211,219,240,246, 38,130,170, 66, 7,212,133,243,237, 9,234,117,225,172, 13,135,177,156, 85, 5,123,102,213,234, - 52, 59,189,254,222, 38, 90,117, 30,188,205, 41,147,201, 62, 99, 89,214,195,216, 52,113, 56,156,151, 41, 41, 41, 59,235,146,159, -190,190,190,244,233,211,167, 70, 77,146,252, 79,215,165,127, 18,103,216,134,166, 46,126, 77, 26,206,126, 20, 21,187,182,116,248, -176, 28,203,166,218, 90, 4,118, 14, 94,124,237, 98,228,215, 75, 55,229, 22,253,175,221, 59, 33,132, 83,217, 60,184,178,181,232, -181,229,228,243,249,219,218,180,105,243,217,173, 91,183,254, 79,175,215,127,254,119,189,247,210,208, 70, 2, 90, 59, 43,183, 81, -233, 36,132,180,100, 24,102,102,163, 70,141,218,198,196,196,220, 54, 24, 12,235, 41,165, 81,127, 55,206, 63,171,126, 54,242,177, -107, 69,105,185,179,236,149,177,207,114,238,188, 55, 78,202, 26, 88,202,172,136, 79,204,190,255, 87,223,251, 63,110,136,240,189, - 89,202, 74, 5, 82,181, 72, 75, 75, 6,144, 12,224,240,223, 53,195,140, 17, 87,181,180, 32,102,254, 29, 56, 42, 27, 46, 4,112, -227,125,112,189, 45,150,254, 76, 36, 36, 36, 16,211, 99,253,247,195, 39, 51,162,211, 0, 76,111, 85,137,107,170, 82, 81, 53,187, - 83,191,255,217, 81, 2,182,138,253,117,122,187,213,106,181, 95, 16, 66,102,214,102,245,225,127,232,190, 41, 0,245,159,196, 29, - 5, 96,248,223,157,243,207, 66,204,211,156,123, 0,250,254,221, 57,255,233,224,152,178,192, 4, 19, 76, 48,225,191, 78,180, 41, - 77,185, 96,130, 9,127,111, 16, 0, 93,171,120,128,141, 54,253, 17, 66,186,214,161,129, 56,111,226, 52,113,154, 56, 77,156, 38, - 78, 19,167,137,243,159,197,249, 79,122, 19,250,211, 54,252,197, 19, 0, 77,156, 38, 78, 19,167,137,211,196,105,226, 52,113,254, -119,114,254,175,109,166, 33, 66, 19,254,116,252, 16, 66, 92,127, 8, 33,174,127,214,249, 38,152, 96,130, 9, 38,152,240,119, 3, -247, 63,157, 0, 66,136, 11, 74, 28,228,121, 3,136, 7,112,149, 82,154,247, 14,124,246, 0,134, 16, 66, 6,151, 90,232, 14, 3, - 56, 68, 41,205, 54,230,255,102,102,102,153, 42,149,202, 17, 0, 68, 34,209, 27,149, 74, 85, 49,230, 0,169,176, 1, 0, 45,219, -170,155,176,234,233,233,153,169, 86,171, 29,141,184,124, 1,165, 52,154,195,225, 60,146, 72, 36, 23,227,227,227, 79,214,230,222, - 59,119,238, 60,154, 97,152,149, 0, 96, 48, 24, 22, 94,188,120,113,207,159, 88,110,109,221, 92,156,118,107,117, 90,125,102, 86, -238, 98, 74,233,241,202,206,219,210,151,172,226, 18,204, 46,253,190,102,210, 9, 58,191, 58,222,218,158, 95, 77,250, 90,241,120, -188, 80,169, 84,218, 51, 37, 37,229, 30,128, 57,148,210, 26,189, 16,187,187,187,127,194,229,114, 71, 26, 12, 6, 47,134, 97, 18, -245,122,253,190,164,164,164, 48, 83, 83, 97,130, 9, 38,152, 96,194,159, 38,176, 26,218, 19, 39, 10, 12, 3, 65, 55, 80,156, 35, -192,129,184,108,154, 97,236,255,123, 55, 36, 58,157,190,228,154,124, 14, 12,167,159,115,118,244,238,221, 91, 54,101,202, 20,180, -111,223, 30,183,110,221,106,247,211, 79, 63,141,101, 24, 38,154,101,217, 75, 0,110, 81,106,148, 75, 4,115, 0,253, 1,140,232, -217,179,103,215,149, 43, 87, 50,141, 27, 55,134, 82,169, 68,100,100,100,224,154, 53,107, 54, 18, 66,206, 3, 8, 7,112,156, 82, - 90, 92, 21,151, 74,165,114, 44,211, 74,132, 16,199,129, 3, 7,222,173, 24, 35,142, 16, 2, 14,135, 3, 74,233, 77, 0, 55, 89, -150,189,121,248,240,225,228,134,132,180,157,224,193, 63, 50,237,133, 70,246, 54,167, 90,173,118, 60,246,221, 55,224, 10,133, 80, - 23, 21,162,221,152,127,175,172, 62,183,100, 54, 8,171, 7, 3,154,215,105,197,198,104, 0,143,210,210,210,162,131,130,130, 94, -214,182, 48, 25,134, 89,121,230,204, 25,103, 74, 41,186,119,239,190, 18,192,159, 34,176, 8, 33,194, 15, 90, 53,187,116,226,231, -253, 34,121,110, 38,122,244, 31,186,143, 16, 50,154, 82,250,243,239,196, 82, 47, 34, 37, 92,204,158,248, 77, 56, 3, 0, 91, 22, -140,152,179,177, 59,217, 52,253, 44,205, 32,132,116, 2,202, 67, 43,125, 71, 41,189,180,165, 23,145,130,193,220,137,223,132, 19, - 0,216,186, 96,196,236, 45,189,200,247,147, 78,213,110,149, 36, 33,100,210,232,209,163, 55,173, 92,185,146,113,118,118, 70,106, -106,106,143, 70,141, 26,249, 18, 66, 26, 85, 55, 57,216,195,195,227, 96,167,143, 6,120,133, 12, 30,102,102,111,103,131,212,244, - 44,171, 67,251,127,154,224,225,225,209,243,229,203,151, 67, 77,205,133, 9, 38,152, 96,130, 9,239, 77, 96,181,116, 33,102,197, - 90, 12,224, 50,228,147,142,109, 27,119, 25,222,171, 35,167,145,127, 3,196, 60,137,253,232,248,197,219,107, 26, 73, 57, 23,244, - 6, 26,102,206,199,177,168,180,234, 87,182,232,244,224, 70, 28, 11, 7, 0, 76, 26, 59,130,185,115,231, 78,131,150, 45, 91,150, - 71, 80,239,210,165, 11,186,116,233, 66,182,108,217,210, 44, 34, 34,162,217,174, 93,187,180,132,144,221,148,210,223,170,233, 76, - 67,189,189,189,215,108,218,180, 73, 24, 20, 20, 4,161, 80, 88,126, 76, 34,145,160,111,223,190,232,219,183, 47,147,150,150,214, -253,196,137, 19,221,191,251,238, 59, 13, 33,228, 75, 74,233,102, 99, 50,104,201,146, 37, 45, 43,217,125,134, 16,242, 92,175,215, -223,111,218,180,105,178, 31, 33, 13,190,232,213,254,220,164, 14, 62,230, 85,102,180, 64,128,189,163, 75,250,232,138, 2,235,229, -197,211,144, 88, 90,228,136, 45, 44,162, 1, 60, 2, 16, 77, 41,125,244,252,249,243, 88,127, 66,154,125, 96,195,217,189, 43,215, -208,180, 22, 34, 11,201,201,201,176,178,178, 50, 11, 14, 14, 78, 39,132,124,117,233,210,165, 29,239,185,222,180,253,106,246, 36, -126,222,171,104,100,196,221,196,204,193,129,226,233, 63,252,250, 53,128,159,171, 23, 62, 28,206,119, 55,216,121,211,129,105, 0, - 22,231,228,228, 4, 1,128,157,157,157, 0,192,165, 13,183,209,107, 70, 7, 82,103, 55, 11,132, 16, 62,195, 48, 63,238,221,187, -119,252, 39,159,124, 82, 18,226,225,218, 53, 72, 36, 18, 44, 95,190,188,254,172, 89,179, 86,161,228,218,149, 90,174,130,187, 13, -240,220,184,230,107,255,162,220, 2,245,246, 31, 15,221,117, 13,240, 99,190, 8,157,101,177, 89,167,113,114,119,119,255,196,100, -201, 50,193, 4, 19, 76, 48,225,189, 8, 44, 63, 7,178,167, 99, 11,159, 33,195,123, 7, 10,155, 4, 52, 6, 95,248,239,224,174, - 45, 91,181, 66,203, 86,173, 56,243,228, 69,221,238,220,141,234,118, 36,226,150,218,207,129, 28,138,207,162,163,141,189,120, 89, -176,216,149,253,165,157,139,243,223,136, 0,192,220,218, 81,181,224, 88,198,197, 14, 29, 58, 64, 38,147,241, 47, 92,184, 48, 14, -192,111,213,208, 44,136,143,143, 23, 50, 76,245,126, 76, 93, 92, 92, 48,104,208, 32,248,249,249, 9,130,131,131, 23,224,223, 97, - 43,126, 7,145, 72,244,134, 16,226, 8, 0,182,182,182,134,175,190,250,234, 33, 45, 5, 0,176, 44,123,147, 97,152,155, 44,203, -222, 62,126,252,120, 74, 99, 66, 28,251,180,244,187, 58,105,212, 32, 49, 61,178,177, 74,113,160, 42, 44,172,116,191, 88, 98,158, -101,102,110, 30, 45, 20,139, 30, 1,136, 6,240,200,213,213, 53,182, 49, 33,178, 15,252, 60, 34,182,204, 24, 97, 97, 76, 94,182, -108,217,210,183, 83,167, 78, 34,131,193,128,226,226, 98,108,221,186,213,202,204,204,204,170,103,207,158, 75, 1,148, 11,172, 70, -132, 52, 25,232,194,124,254, 85,170,126,114, 29, 4,140,117,199,118,173, 94,253,176,122,169,101,171, 15, 58,226,233,165,127, 33, - 55,183, 8, 5,249,114,176, 44,251,135,200,191,147, 78,209,204, 45,125,201,154, 45,243, 71,204, 37, 28, 14,105,246,241, 28,244, -115, 42,152, 74, 8,121, 2,128, 87, 22,173, 30, 0,151, 16,226, 18, 16, 16,176,166,193, 71, 29,177,117,225, 40, 80,150,165, 0, -214, 24,107,189, 34,132, 56, 90, 88, 88, 28,143,136,136,104,219,186,117, 86,105,112,250, 0, 0, 32, 0, 73, 68, 65, 84,107,220, -186,117, 11, 47, 94,188,192,164, 73,147, 52,147, 39, 79,230,127,250,233,167,100,230,204,153, 83, 8, 33, 71, 40,165,215,255,240, - 32,112,185, 35,251,135, 12, 21,200,243, 11, 85, 90,141, 86, 99,103,103, 69, 85,197,170,162,156,188, 66,229,144, 97,227,181,143, -162,110,141, 4,240, 7,129,245, 46,249,105,130, 9, 38,152, 96,130,209,104, 13,192, 1, 64, 22,128,187,111,253, 70,233,119, 84, -242, 59, 27, 37,211,122,236, 42,112,101,163,100,122,143, 3, 74,124,116,222, 1,144,247,190, 19, 76, 40,165, 40,117, 40, 92,230, - 88,152, 84, 16, 88, 52, 62,139, 66,159,155, 8, 67,206,115, 24,138,254, 24,222,136,136,172, 81,160, 52, 32, 57, 49, 22,163,167, - 47, 71,124, 86,213, 30,180,123, 55, 36, 58, 43, 1,184, 22,124,128, 47,182, 86, 15, 95,125,246, 70,171, 86,173, 84, 11,130, 56, -189, 87,109, 41,177,108,205,252,124, 4,218,205, 56,114, 54, 49, 49, 81,239,226,226,130, 79, 62,249, 4,148,210, 62,213,116,172, -153, 69,119,111, 56,198,245,105,143, 54,153,149, 79,131, 74, 72, 72,192,149, 43, 87,144,148,148, 4, 47, 47, 47,140, 27, 55,238, - 13,165, 84, 90, 21,103,143, 30, 61, 46,127,247,221,119, 31,174, 91,183, 46,122,239,222,189, 29, 40,173, 60,214, 96, 35, 66,204, -155,213,119,186,187,107,213, 92, 47,114,122, 55, 79,145,244, 12,214,151,149,164, 18,113, 71,211,210,254,157,119,223,250, 58,195, -220,202, 2,230,150,146,204, 79, 35,238,149, 91,174, 74, 63,227, 91, 18, 98, 41,115,182,187,119, 96,195, 98, 87,206,197,131, 34, -254,246,155,164, 38,113, 21, 28, 28,124, 99,229,202,149, 54,105,105,105, 56,127,254, 60,234,215,175, 15,133, 66,129,245,235,215, -167, 95,189,122,213,165, 52,189,210, 54,126,245,162,183,206, 26, 99,197, 31,183, 68, 88,219,202,194,231,114, 55,223, 56,115,112, -178,149,144, 34, 63,237, 5,158,199, 62,193,157,152,151,186,176,115,209,134, 66,165,186, 55,165,244, 98,101,255, 11, 13, 36, 13, - 46,165, 57,156, 56, 19,121,215,199,217,217, 25, 19, 38, 76, 64, 70, 70, 6, 40,165, 96, 89,182,124,197,197,130, 5, 11,224,235, -235,139,209,195,250, 41,132,185, 81,193, 39, 98,140,139,247, 70, 8, 9,168, 87,175, 94,196,165, 75,151,164,174,174,174,184,122, -245, 42, 50, 50, 50,224,228,228,132, 11, 23, 46, 96,245,234,213,123, 39, 78,156, 56,120,229,202,149,162,225,195,135,167,158, 61, -123,214,237,237, 57,115,245,235,215,143, 61,113,246,170,228,194, 47,103, 19,109, 44,204, 33,145,218,130,177,176, 81,130, 66, 41, -117,176,226, 15, 29,208,213,251,213,171, 87,254,111,149,255, 59,229,167, 9, 38,152, 96,130, 9,191,107,203, 43,213, 34,101, 18, -130, 16,114,178, 84, 15,104, 0, 8, 42,252, 6, 33,228, 36, 0,188,253,123,222,188,121, 11, 86,173, 90,245,164,236,119,217, 57, -243,231,207,111,188,122,245,234,111,218,181,107,119,224,198,141, 27, 95, 1,120,246,151, 90,176,202,160, 79,185, 3,190, 79, 79, -240, 12, 58,232,178,227,193,230,191, 6,204,157,160, 36, 18,228,164,191, 70,220,213,159, 75,180, 96, 13,248, 45,142,242, 8, 33, - 23, 98, 99, 99, 17, 23, 23,135,228,228,100,136,197,226, 63,156,119,237,218, 53,152,153,153,193,217,217,217,168,155,160,154,223, - 59, 11,142,110, 89, 15,146,118, 65,200, 30,254, 5, 46, 92,184,128, 55,111,222,128,207,231, 67, 32, 16, 64,175,215,215,200,199, -225,112, 72,105, 33, 80, 0,149,122, 97, 14, 38,132, 43,179,149,156,216,178,116,154, 7,231,230, 73,158, 50,233, 25,210, 84, 6, - 88, 27, 99,185,147,152, 67,108, 46, 78, 55, 51, 19,191, 45,174,158,182, 36,132,103, 46, 17,157,216,189, 98,166, 19,115,255,130, - 72,249, 44, 26,252, 74, 56,186,117,235, 54, 1,192, 82, 74,105,126,112,112,176,116,229,202,149, 54,169,169,169,136,137,137,193, -161, 67,135,178,244, 37, 55, 74, 40,165,203, 0,160, 29, 33, 34,119, 7,235,179,155,151, 76,179,192,165,131, 2,140, 91, 82,235, -202, 98,229,223,247,183,129,159, 78,156,188,105, 90, 95, 20, 23, 41, 17,126,238, 62,206, 68, 61,255,127,246,174, 59, 44,138,163, -113,191,179,119,183, 87,184,163,119, 84,176, 16,144,162,160, 32,138, 13, 49,154,104, 68, 99,239, 81, 83, 52,177,199,138, 26, 99, - 52, 42, 36, 26, 91, 98, 98,139,177,196,222, 53,246, 18, 48,246, 74, 19, 11, 22,186,128,244,114,253,118,126,127, 80, 60,145,114, -160,249,125,249,190,220,251, 60,251,220,237,237,238,123,179, 51,187, 51,239,188,211,250, 0,248,171,166,126,109, 63,253, 69, 31, - 17, 66,222,237,223,191,255,157,200,200, 72,155, 77,155, 54, 65,171,213, 86,185,109,218,180, 9,103, 47,222,154,108,232, 98,186, -132, 16,167, 38, 77,154,156,189,118,237,154,173,137,137, 9,206,156, 57,131,188,188,188, 10,231,106,244,232,209, 36, 47, 47,111, -232, 47,191,252, 50,224,217,179,103,203, 47, 94,188,152,141,210,101,155, 94,121, 16,120, 60, 94,130, 86,171,246,112,242,116,227, - 13,234,221,169, 83, 81,118, 20,100,214, 62,184,122, 39,225, 88,126, 94,142,156,199,227, 37,232,159,255, 54,226,211, 8, 35,140, - 48,194,136, 58,139,176, 99,148,210, 16,125,193, 84, 89,104,149,127, 47, 63, 47, 44, 44, 44, 68, 95,124, 1, 64,120,120,248, 82, -189,253,146,191, 35,172,252,151,122,129, 80, 0, 93,170, 58, 73, 25,119, 0,202,248,195, 96, 93, 58, 64,216,188, 15,120, 46, 29, -145, 20,117, 1,119, 79,172, 68, 74,236, 95,160,156, 14,142,238, 1,134,254,167,194,195,195, 3, 10, 69,105,215, 43,165, 82, 9, - 86,106,169,152, 54,118,184, 24, 0, 56,190, 88,169,167, 50, 13, 34, 52,237, 16,140,128, 12,138,235,246,165,130,183,220,201, 90, - 60,102, 12, 88,150, 5,203,178, 40,239,168,110,136,192, 42, 91, 67,171,124,181,122, 90,213,113,127,145, 96,199,174, 5, 19, 3, - 68,207,162,133,202,152, 43, 72, 83,114,244,104,134,238, 15, 47, 3,194,107, 34, 53, 73,149,152,152, 68, 75,100, 82,125,129,149, - 0, 0, 84, 32,216,182,125,225, 68, 31,105,198, 99,169,226,198, 57,164, 43, 56,181, 89,213, 52, 11, 79,156, 56, 97,199,231,243, - 29,116, 58, 29,146,146,146, 16, 27, 27,139,213,171, 87,103, 20, 22, 22,118,185,117,235,214, 3,189,240, 50,109, 36,194, 61,219, - 22, 77,105,202,143,138, 16, 43, 19, 98,170, 20,109, 53,193,182,101,191,247,251,116,241,253, 99,220,200,121,232,251,193,123, 24, -213,197,139, 62, 77,203, 81, 0, 56, 67, 41,173,117, 25, 36, 74,105, 42, 33,164,123,231,206,157,127,111,213,170,149, 39,165, 20, - 45, 91,182,196,208,161, 67,177,109,219, 54,220,189,123, 23, 5, 5, 5,234,211,167, 79,175,162,148,110, 54,240, 69, 51,177,180, -180, 60,121,254,252,121, 91, 19, 19, 19,156, 62,125, 26,114,185, 28,142,142,142,152, 48, 97,130, 48, 60, 60,124,107, 65, 65,193, -160,176,176, 48,241,211,167, 79,127, 58,117,234, 84, 99,148, 46, 56,251,218, 67,160, 82,169, 54,236,216,182,101,205,132,137,147, - 26,156,191, 26,119, 78, 89, 92,104,222,200, 57,185,208,198, 74, 38, 91,249,253,194, 70, 42,149,106, 92,213,241,249,103,189,226, -211, 8, 35,140, 48,194,136,170,188,139,234,181,136,190,104,170, 44,178,234, 34,206, 0,200, 67, 67, 67,231, 18, 66,142,149, 57, - 92,114, 0,105,127,139,192,162,148, 70, 16, 66, 64, 41,141,168,246, 76, 78, 7,245,211, 72,168,159, 70, 66, 18, 56, 25, 71,194, -134, 85,186,105,174,222,129,232,189,232,204,121,165, 82,201,223,178,101, 75, 69,191, 44, 0,208,233,116,111, 61,245, 12, 17, 88, - 40, 91, 66,168, 76, 96,189, 22,136, 38, 34, 89,196,134, 47, 7,181,179,214,149, 8, 84,127, 29, 69,170,146,211, 46,127,164, 46, -185,145, 71,191,159, 91, 13,225,161,169,227,144,124,241, 44, 76,100,178,228, 79, 35,163,245, 93,171, 40, 0, 79, 0,160,137,216, -236,220,158,105,195, 58, 58,176, 96, 85,127,236, 69,154,146, 83,174,123,166,217,188,186,234,135, 12,148, 82, 60,121,242, 4, 37, - 37, 37,184,124,249, 50,246,239,223,159, 85, 89, 92,149,133,247,207, 95,103,141,104,107, 86,248,156, 85,221, 56,139, 52, 37,167, -116, 55, 68, 84,249,244,235,192, 50,228, 52, 97,120,146, 15, 58,121, 97,234,103,253,176,242,215, 35, 90,149, 93,167,144, 53,135, -143, 15, 46, 82,170,231, 26, 34,174,244,194, 28, 5,192,139, 16, 34, 2, 16, 60,116,232,208,227, 3, 6, 12, 64, 68, 68, 4,142, - 30, 61,234, 6, 32,189,236, 37, 88, 4,192, 30,165,163, 11, 31, 87,243,162, 48, 44,203,238, 58,123,246,172,183,147,147, 19,206, -158, 61, 11,185, 92,142, 47,190,248, 66, 53,113,226, 68,118,244,232,209, 36, 63, 63,191,194,185,186,124,249,114,118,117,226, 10, - 0, 82, 82, 82, 78, 52,110,220,184, 67,231,206,157,251, 54,117,107,110,246,184,176, 32, 83,102, 34,150, 92,140,184,192,222,186, -113,229,167,148,148,148,235, 85,199,231, 57,131,227,211, 8, 35,140, 48,194,136, 26,203,136,218,181, 72, 37, 39,170,142,252,229, -215, 9,194,194,194, 98,195,194,194, 94,113,184,254, 46, 7,171, 78,208,229, 39,189, 30,112,142,171,203, 77,190,246,155,165,165, -165, 86, 34,145,188, 34,176, 56, 3, 57,115, 14,238,196,227,241,195, 43,156,171,114, 39, 11, 61, 70,215, 75, 96,149, 59, 88,101, -157,161, 95, 9,132,212,190,249,176, 93, 35,187,119,240,106,218,128,209,236, 89,141,148, 18,173, 98,193,125,181, 34,190,144,246, -137,171,162,243,116, 5,167, 86, 3,177, 84,146, 40,145, 73, 43,139,171,103, 0, 32,115,112, 31,176,117, 88,112, 23,223,230,174, -140,118,247, 10,164,150,104,138, 66,239,169,213,143,139,233,129,106,226,112,193,123,239,189,183,192,218,218, 90,188,102,205, 26, -115, 23, 23, 23,104,181, 90, 85,101,113, 37,181,111, 62,108,247,232, 30, 29,220, 29, 44, 25,205,190, 31,145, 44,215,149,172,126, -172,217,186,206, 0,113,101, 99, 46, 59,181,110,233,120,137,137, 72, 0,133, 66,129,240,159,247,225,244,165,152,144,172,232,131, -167, 0,156,122,131,231,238,211,144,144,144,149,139, 22, 45,130, 70,163,193, 39,159,124,130,132,132,132,211,247,239,223, 95,237, -236,236, 60, 99,214,172, 89, 78, 14, 14, 14, 24, 60,120, 48, 11, 96,116, 53, 28,223,237,216,177, 35,196,215,215, 23, 17, 17, 17, -200,203,203,131,163,163, 35, 38, 78,156, 40, 12, 11, 11,219, 90, 80, 80, 48,104,233,210,165,226, 39, 79,158,212,232, 92, 85,122, - 54,190, 93,191,114,252,244, 54,237, 58, 50,143, 30, 61,208, 38, 5, 4, 49, 23,206, 30,141,180,180,180,220,250, 74,124,142,233, - 89,231,248, 52,194, 8, 35,140, 48,226,173,225, 15, 0,189, 42,187, 90,149,197, 87,185, 67,165,191, 95,249,252,178,227,127,203, -162,228,124,189, 0, 26, 60, 60,158, 43,206, 50, 72, 52, 85, 70, 47, 15,162, 25,215, 6,252,185, 65, 12, 88,169,165,162,247,162, - 51,231,171, 59, 87, 42,149, 26,236, 96,113, 74, 69,109,130,169, 78, 2,139,199,227, 17, 0, 39, 57,142,187,162, 47,176, 44, 28, -154, 7,125, 53,123,202,170,142, 3,122, 48, 25,159, 5, 34,175, 72,169,156, 21,167,229, 82, 74,106, 22, 87,165,170, 84,243,212, - 68, 42,139, 22, 75, 95,233,119,149, 4, 0, 18,251,119, 2, 66,191,156,244,115,215, 97,189, 73,214, 23, 29,145,155, 39, 87,206, -136,213,146, 84, 57, 29, 20, 71,233,133,170,232,206,157, 59,183, 30,192,250, 46, 93,186,100, 72,165, 82, 20, 21, 21,189,150, 6, -229,225,237, 48,160, 7,147,241,105, 91,228, 20,171,149,179, 98,181, 72,147,115,187,106, 19, 87,182, 22,166,167,214, 45, 25,111, -146,150,242, 12, 44,203, 66, 38,147,225,204, 95,209,200,138, 57,244, 38,194, 10, 60, 30,239,155,185,115,231, 46,152, 48, 97, 2, -178,179,179,113,244,232, 81,124,240,193, 7,216,185,115,167,203,241,227,199, 87, 6, 7, 7,131,199,227,225,216,177, 99,208,104, - 52, 15,171, 73,207,126, 99,199,142,157, 49, 96,192, 0, 92,191,126, 29,233,233,233,175, 56, 87,121,121,121, 67,127,254,249,231, - 1, 79,159, 62,173,213,185,170,132,128, 38,174,173,217, 57,243,127,128,178, 36,147,159,149,122, 53,226,220, 25,230, 74, 78, 78, -142, 9,128,252,250,198,167, 17, 70, 24, 97,132, 17, 6, 27, 48,213,105,145,172, 50,241,148, 85,213,190,158,176,170,106,159, 84, -114,189, 84,149,142,223,253,143, 57, 88,124,251, 22,208,102,196,232, 9,172,204, 87,142,139, 77,173, 12,106, 34,212,104,193, 95, -183,185, 98, 30, 44,113,118,118,182,216,198,198, 70,161, 47, 12, 76, 76, 76,224,228,228,132,220,220, 92,108,216,176, 1, 0,106, -235,236,172, 53, 27, 48, 18, 1,195, 62,193,141,134, 66, 80,141,186,194,201, 90, 55,102,204, 43, 34,139,101,217,242,190, 95,181, - 21,182,215, 8, 33,207, 56,142,187, 66, 41,165,126,238,205,190, 21, 75,165, 99,252,125, 92,109,166,142,255, 84,240, 52, 83,137, -243, 29,231,228,237,251,110,182, 44,153,202, 38, 36,210,188, 75,181,240, 61,254,240,151,237,149,157,171,148,214,238,205,230,137, - 77,196,159,181,107,225,238, 16, 58,109,188,224,105,134,146,156, 15,152, 85,176,255,251, 89, 38, 79, 96, 58, 35,153,230, 94, 48, - 32,121, 22,124,240,193, 7, 11, 40,165,148,227,184,249, 0,160, 31,222,105, 19, 63, 19, 60,126,174,192,185,142,243,114,247,127, - 55,219, 52, 25, 53,135,215,214,167, 95, 7,123, 75,179, 83,235,150, 78, 48, 73, 79, 77,132, 72, 36,130,169,169, 41,146, 51,242, - 33,224,243,228,111,242,176, 17, 66, 68, 65, 65, 65,179,199,143, 31,143,232,232,104,124,241,197, 23,233, 73, 73, 73, 7,118,239, -222,253,197,215, 95,127,205,127,255,253,247,145,158,158,142,101,203,150,105,254,250,235,175,165, 0,150, 85,249, 60,242,249,159, -126,251,237,183, 52, 45, 45,141, 60,121,242, 4,142,142,142,152, 52,105,146,112,233,210,165, 21,125,174,234,226, 92,149, 35, 37, - 37, 37,194,205,213, 25,125, 78,172,130, 86,163,140,200,203, 78,138,140,127,156, 27, 97, 37, 20, 78,239,232,231, 83,175,248, 52, -194, 8, 35,140, 48,226,173,224, 70, 45,251,255, 56,212, 38,176, 30,254, 56,239, 99,183,143, 39,204,132,196,165, 3,148,247, 14, -130, 43,202,168,112,176,196, 50, 75, 88, 57,123, 34,175, 88,137,189,231,110, 1,192,195,186,252,121, 97, 97, 33,252,252,252,176, -118,180,123, 87, 69, 97,182, 88, 2, 64, 41, 50, 83, 28, 18,118, 58,127,252,248,241, 18,142,227,118, 1, 56, 94, 11,205, 55,222, -222,222, 63,253,240,195, 15, 66,207, 97, 31,163,232,234,197, 87, 14, 50, 12, 3,137, 68, 2,145, 72,132,168,168, 40,156, 63,127, - 94, 5,224,155, 90,132,192, 53,173, 86,123,119,239,222,189,201,110,205, 26,246,232,210, 38, 96,242,220, 57,161,166,113, 23, 79, - 99,254,210,159,184,119,252,223,207, 15,223,121,168, 48, 95,230,252,110, 73, 90,252, 29, 3,110,245,110, 37,113,149,230,217,212, -185,107, 96,235, 86, 51,231,207,159,103, 22,123,241, 12,190,254,126, 29,117,243,237,150,255,253,254,195, 5, 47, 76, 26,191, 39, -207,184,119,221,144, 56,252,243,207, 63,215, 3, 88, 95,190, 95, 57,188,161,139, 86,115,238,109,122,228,134,239,220, 95, 92, 96, -234,220,173,166,240,218,121,245,111,223,200,209,234,212,143,139, 63, 55,121,158,154, 4,145, 72, 4,153, 76,134,164,244, 60, 44, - 88,181,167, 88,205,113, 61,222,240,121, 19,153,154,154,138,212,106, 53,214,174, 93,139,164,164,164, 64, 74,105, 18, 33,100,221, -144, 33, 67,214,180,108,217,210, 35, 54, 54,246, 97, 81, 81,209, 4, 74,105,124,117, 36, 22, 22, 22,129,182,182,182,228,202,149, - 43,248,252,243,207, 85,147, 38, 77, 98, 71,141, 26, 69,114,115,115,235,235, 92, 1, 0, 26, 54,108, 24,244, 97,175,246,232,208, -253,139, 8,149, 34, 47,242,105,252,214, 8,134, 94, 18,251,181,242,169, 87,124, 26, 97,132, 17, 70, 24,241,239,182,227,170,221, -130, 0,190,187, 53,198,121, 55, 96,159,111,251,110, 18, 45,124,124,153,202,175,175,167, 5, 7, 63,163,127, 44, 27, 69,143,255, - 56,149,126,209,203,155,122,216,145,231,238,214, 24, 23, 4,240,107, 90,109,251,131,230,208,116,119, 5,237,238, 10,218,203, 29, - 26, 0,115, 91,183,110,125,104, 98, 0, 40,141,219, 65,105,220, 14, 58, 49, 0, 20,192,231, 0,100,134,174,224, 13,192, 17,192, - 6, 63, 63, 63,237,133, 11, 23,232,253, 65,221,232,109, 15, 27, 58, 97,194, 4,250,245,215, 95,211,225,195,135, 83, 91, 91, 91, - 45, 74, 39,220,116,172,141,179, 79,159, 62, 13, 41,165,104,212,168,145,133,191,231, 59,207,163,206, 29,165,145,219,214,208, 95, - 39,246,167,109, 91,122,190,112,240,232,124, 87,226,216,188,149,161, 43,141, 59, 56, 56,204,161,148,246,160,148, 58, 82, 74,225, -230,102, 45,107,237,241, 78,218,221,179, 71,233,197,237, 63,209, 95, 39,246,167,237,124,188,178, 27,122, 6,199,139,237, 60, 2, -234,187,122,121,149,225,109,225,241,194,254,157,246,119,170, 11,175, 62,103,211,128,193,135, 83,210, 50,232,181,107,215,232,241, -227,199,233,197,139, 23,233,182,221,135,169,115,155, 65, 69, 54, 45,251,118,120,211, 85,214, 1,152,247,234,213,139, 62,124,248, -144,246,236,217,147, 2, 48,175, 15, 39,128, 67, 79,159, 62,165, 49, 49, 49,116,238,220,185, 20,192,150,241,227,199,203,243,243, -243,105,183,110,221,146, 80, 58, 72,129, 95,159,112, 54,107,210, 32,188, 95,239, 78,223, 76,252,124, 64,208,155,198,231, 63,121, -213,122, 35,167,145,211,200,105,228,252,167,113,254,175,109, 53, 58, 88,127,150,214,254,215,183,180, 39,191, 47, 93,246,227,244, -181,235,183,204,156, 61,249, 83,105,167,142,221, 17,125,246, 55,236, 63,182,187, 88,161, 84, 45, 99,121,248, 33,250, 5,173,117, - 30,137, 63,226,169,160, 10,183,200,196,202, 21, 21,115, 40, 61,202, 5, 40,165,235,234, 40, 18,211, 1,140, 37,132,252, 16, 28, - 28,188,228,179, 14, 1,253, 39,182,239, 10,141, 70,131,109,219,182, 33, 49, 49,241, 0,128,121,148, 82,131, 28,182,232,232,232, - 23,222,239, 52,158, 98, 37, 97,103, 78, 24,222,207, 54, 43, 33, 14, 41,247,110, 3, 0,148, 74,185, 38,253, 65,132,111, 93,194, - 39,145, 72,174,217,218,218,222,183,181,181,205,213, 41,139,198,138,249,102,243,191, 24,250,161, 93,246,211,120, 36,199,150,182, -128, 42, 21, 37,234,228, 7,231, 61,234, 35,146, 27, 55,110, 44,146, 10, 48,174,202,240,170, 20,154,231, 15,239,181, 50,132,167, - 68,169, 90,186,112,229,182,247, 22,207, 28, 35, 50, 51, 51,195,173,152, 71,152,191, 98,103,177, 92,165,233,145, 21,117,240,210, -219, 18,244, 26,141,198,224, 1, 12,213, 96,182,175,175,111,243, 37, 75,150,184,141, 30, 61, 26,111,234, 92,233, 35,225, 73, 74, -104,151, 46, 93,188, 30,221,191, 21,108, 37, 97,127,127,147,248, 52,194, 8, 35,140, 48,226,223, 11,131,250, 96, 69,103,208, 18, - 0,139,154,217,147,117,115,150,172, 92,192,144, 85, 99, 56, 74,127,211, 50, 88,248,248, 5,205,122,195, 2,183,164,151, 7,209, -190,215,119, 56, 31, 0, 4,124,104,223,128,235, 33,128, 1,132,144, 54, 27, 47, 93,255,170,236,231,197,148,210, 58,181,213,154, -242, 17,211,209,171, 89,131, 78,173,189,197, 60,157, 28, 41,247, 18,144, 83,172,192,153,216,196, 60,134, 50,191,213, 53, 92,143, - 31, 63,254, 19, 0, 90,188,211,248, 94, 39, 47, 87,231,206,126,222, 38, 2,162, 66, 74,220, 45,228,203, 85, 56, 29,155,152, 15, - 66,234,221, 81,250,109,133,247,121,212,161, 27,182, 62,253,186, 17, 66,206,206,157, 56, 76,180, 96,197,174,183, 42,174, 0,148, -164,166,166,102,151,148,148, 88,167,165,165,169, 80,207,201,221, 40,165,143, 8, 33, 45,167, 78,157,186,104,198,140, 25, 51,191, -251,238, 59,182, 62,125,174,170, 67,110,106,226,193,206,222,111, 47,253,141, 48,194, 8, 35,140, 48, 10,172,154,133, 66, 6,205, - 2, 48,193,213,149, 76, 75, 72,160,170,183, 21,136,170,156,173, 55, 20,109, 55, 0,244,174, 55, 1, 67, 10,175, 62, 76, 44,186, -246, 48,177, 8, 28,165, 28,165, 74,134, 65,114,177, 90,189,244,193,227,148,250,143,162, 35, 68,119,227, 81,146,252,102, 66,178, -130,114, 28,229, 40, 85, 17,130,231, 26, 13,183, 52,230,241,179,195,255,132,240,102, 69, 29,188,228,224,213,191,211,165,107, 49, -211,138,139,213, 63,101,197, 29,188,252, 22,211, 69, 67, 8, 25, 17, 24, 24,248,177, 78,167, 91, 71, 41,213,188, 1,151, 10,192, -108, 66,200,129,232,232,232, 61,151, 47, 95, 78,127, 27,226,234,111, 77,127, 35,140, 48,194, 8, 35,140, 2,171, 38,188, 77,113, -245, 79, 68,244,195,167,126,127, 7,111,204,195,167, 45,254, 27,194,251, 60,238,192, 77, 0, 67,255,142,176, 82, 74, 79, 3, 56, -253, 54,197, 52, 33,164, 9, 0,222, 91, 17, 87,127, 99,250, 27, 97,132, 17, 70, 24, 97, 20, 88, 70, 24,241, 95,131,178, 53, 35, -181,198,152, 48,194, 8, 35,140, 48,226,159, 2, 2,160, 91, 53,133,214, 89,131, 73, 8,233, 86,143, 66,241,172,145,211,200,105, -228, 52,114, 26, 57,141,156, 70,206,127, 23,231,191,169,246,255,183,109, 48, 14, 97, 53,114, 26, 57,141,156, 70, 78, 35,167,145, -211,200,249, 47,220, 24,163,196, 52,194, 8, 35,140, 48,226,111,107, 38, 33, 68, 84,182,192,123,189,142, 27, 97,196,127, 43,248, -245,120, 89,222, 41,115,190, 30,253,141, 47,228, 68, 71, 71,199,177, 62, 62, 62,158, 44,203, 50,133,133,133, 11,207,159, 63,255, - 77,229,243, 58,123, 11,110,242, 24, 52,212,187, 18, 32, 60,128, 97,160,163, 72,137,188, 91,226,111, 76,226,127,116,198,235, 34, - 49,179, 61, 66, 24,158, 80,167, 85, 67,167, 81, 3,120,185,108, 18,199,105, 19,181, 42,197,251,213, 93,239,216,170,191,179, 86, - 71,195, 1,238,103, 2,230, 11, 10,238, 23, 66,153, 47, 40,131,159, 9,135,207,193,215, 44,131, 86, 48,131,207,242,231,165,221, -218,155,252,191, 16,103,251,246,237,227,189,201,245, 3, 7, 14,172,114,129,207, 6, 13, 26, 28, 51, 49, 49,113,173,238,186,226, -226,226,244,180,180,180,224,255,241,231,177, 51,128, 31, 1,120, 87, 58, 20, 15, 96, 10,165,244,220,155,254, 71, 23, 66,248,246, -192, 56, 22,152, 5, 0,106,224,251, 12, 96,253,159,111,105,128,198,219,128,157,157, 93, 36,159,207,119, 43, 46, 46, 46, 46, 40, - 40,104,102,102,102,246, 88, 42,149, 74,181, 90,237,195,204,204,204,206,117,140,211,241, 40, 91,242,138, 16, 50,147, 82,250,115, - 93,142, 27, 97,196,255,180,192, 34,132,184, 3, 8, 42,219, 58,183,105,211,198,190,184,184, 24,132,144, 12, 0,145, 0, 34, 0, - 68, 80, 74, 31,188,141, 0,241,120,188,229,171, 87,175,158, 62,105,210,164,138, 69,154,163,162,162,170, 62,151, 65,195, 11,199, -206,217,221,136,186,143, 54,221, 6,150, 9, 44, 6, 40,121,142,224,110,109,234,155,201,154, 90, 90, 90, 46, 36,132, 12, 98, 24, -166,214,194,140,227, 56, 29,165,116,111,110,110,238, 2, 74,105, 97, 93,254, 75, 38, 21,107,180, 58, 93,149,255,193,231,241,116, - 69,197,138,106,167,175,176,182,182,190,204, 48, 76, 83,253,133,172,203,194, 95,229,119,253,125,173, 86,155,146,149,149,229,111, - 64, 92,136, 25, 62, 59,133, 16,182, 59, 24,206, 29, 32, 32, 96, 30,112, 58,213, 25, 78,171, 94, 77, 41, 85,188,137,184,114,108, -212,236,226,151,243,194, 27,198,220,139,199,220,137,195,241,221,143, 91, 48,103,202,199, 88,189, 97, 39,166,140, 29, 6, 47, 47, -239, 26, 57,116,148, 44,156, 63,101, 68,240,146,213, 59,218,204,155, 50, 92,186,100,245,142, 54,243,166, 14,151, 45, 89,179,195, -127,222,212, 17,178,197,107,126,247,255,106,234, 8,179, 37,107,118,168, 1,124, 82,159,112,142,112,111, 80, 12,173,182,234,218, - 53,159,175,252,253, 65,170,244, 63,241,226,142, 30, 61,218, 71, 46,151,223, 26,222,189,117,120, 43,247, 6,169, 85,157,147,253, - 60,181,193,227,251,183, 67, 5,172,196,239,195,208, 45, 81, 53,241,137, 68,162,166,241,241,241,110, 28,199, 65,167,211, 65,171, -213, 86,124,170, 84, 42,116,238,220,249,173, 12,136, 33,132,244, 6,176,176,244,101, 69, 24,165,116,207, 27,112,201,248,124,254, -151, 66,161, 48, 72,171,213,122, 2,128, 64, 32,184,167, 84, 42, 35,180, 90,237, 74, 74,105, 81, 29, 41, 87,165,166,166,122,201, -100, 50,168,213,234,138,133,225,121, 60,158,135,179,179,243, 90, 0,110,111,122,255,246,192,184,246, 29, 59,174, 30, 53,125, 58, - 79, 30, 25,137,213,155, 55,175, 66, 65, 1, 0,172,173,237, 90,145, 72,116,138, 97, 24,151,186,252, 31,199,113,137, 74,165,242, -253, 58, 21, 10,124,190, 91, 90, 90,154,157,147,147, 19, 0, 64, 42,149, 74,245,247,235,226, 92, 1, 88, 70, 41,149, 0, 0,195, - 48,171,219,183,111, 31, 72, 8,209, 2,160, 28,199, 49,132,144, 97, 28,199,241,203,206, 95, 70, 8,217, 76, 41, 85, 26,139,102, - 35,254,167, 5, 22, 33,228, 56,128,160, 54,109,218, 72,134, 14, 29,138,160,160, 32,184,185,185, 65, 44, 22,151,102,222,217,217, -246,119,238,220, 25, 28, 25, 25, 57,248,232,209,163, 32,132,200, 1,252, 69, 41,173,242,101,238,214,187,211, 36,177, 76,180, 6, - 0,178, 82,178,211, 83,158,100,174, 73, 79, 79, 95, 70,245, 86,137, 38,132, 52, 27, 53,106,212,180,201,147, 39,227,216,177, 99, -216,185,115, 39,148, 74, 37, 10, 11, 11,113,254,252,249,106,170,214,153,200, 61, 31, 14, 72,159, 1, 73,127, 2, 38,118,128,212, -190,222, 17, 98,105,105,185,112,202,148, 41, 83,189,188,188, 42,102, 29,215,104, 52,208,106,181,208,104, 52,200,205,205,197,180, -105,211, 80,230,226,129,227, 56,156, 56,113, 98,210,216,177, 99, 1,224,203,170, 56, 3,253,157,111, 50,132,105, 88,238,205, 80, -157, 46,229,202,237,100,127,173, 78,199, 83, 40,212, 85,174, 28, 46, 22,179, 53,138, 59,129, 64,208, 48,238,200, 17, 59, 70, 40, - 4,213,233, 0,142, 3,229, 56, 0,122, 27, 45,253,141,234, 56, 80,141, 14,156,150,131, 86,174, 68,192,248,241,134,100,142,237, - 5, 66,201,206, 17,159, 77,119,104,219,174,157,160,113, 35, 39,104,117, 28, 18,158,166, 56,220,186,121,181,195,222,173,107,191, - 32,132, 12,163,148,214,107,158, 44,161,137,217,233,159,126,217,216,240,198,157, 24,156,187, 16,137,179,231, 35, 0, 0,167, 46, -148,210, 49, 12, 83, 91,248, 44,173,221,130,125, 38,125,220, 87,186,248,135, 77,162, 73, 31,247,229,191,252,220, 40,154,244,241, -135,252, 37, 43, 55,138, 38,125,252,161,224,219,239,127,106, 69, 8,177,164,148,230, 86,199, 87, 93, 26, 65,171, 21,253,254, 56, -131, 7, 0, 89,235,214, 65,147,153, 9,167, 5, 11, 74,197, 87, 51,123,131,155, 53,108,109,109,111, 10, 4,130,134,181,157,167, -209,104,106, 21,191,163, 71,143,246,149,203,229, 55,181, 90, 45,229,243,249,161,195,251,189,119,168, 71, 39,223,108,253,115,162, -162,238, 90, 47, 93,122,164,239,158, 91,133,116,176,159,233,173, 99,203, 71,251,135,204,216,114,183,134,130,152, 81, 42,149,120, -248,240, 33,244, 23, 95,215,215,179,245, 20, 65, 12,128,213,214,214,214,109,179,179,179, 71, 0,152, 91, 80, 80,224,195,227,241, - 96,101,101, 53,151, 16,146, 96,110,110,190, 41, 63, 63,255,114,153, 75,196, 25,200,219,217,204,204,108,219,193,131, 7, 45, 91, -183,110,205,100,101,101,161,105,211,166,200,201,201, 9,136,140,140,244,251,228,147, 79, 62, 33,132,124, 68, 41,141,172, 67,112, -155,155,152,152,208, 81,163, 70, 17,157,238,229,237,254,250,235,175,120,191,133,214,245,243, 30,210, 18,133,138,230,159,123,104, -254, 57,203,178,127, 61,123,246, 44,191,174,241,193, 2,179, 70, 77,159,206,147, 61,123, 6,217,221,187, 24, 81, 80,192,255,174, -212,205,170, 85, 96, 49, 12,227,178,109,215,111,110, 66,161,176, 34, 95,170,110,211,233,116, 80,171,212, 8, 95,188,172,222,121, -161,137,137,137,137,147,147, 83,134,137,137,137,201,219, 40,108, 68, 34, 17,127,235,214,173,195,132, 66, 33, 0, 64,165, 82,161, - 69,139, 22,196, 88, 12, 27,241,111,116,176,122, 22, 20, 20, 64,167,211,193,212,212, 20, 60, 30,175,178,131,130,238,221,187,163, -115,231,206, 24, 58,116, 40,226,226,226, 36, 67,135, 14,237, 94, 29,217,240,233, 33,104,228,102, 95, 86,136,112,142,151,254,184, - 19,254,235,183,251,108, 1, 76,215, 59,237,147,113,227,198,145,236,236,108, 12, 26, 52, 40, 82,169, 84,246,161,148, 22, 84,235, - 96,112, 72, 9, 30, 58, 28, 28, 37,146,149,215, 54, 16,149, 66, 78, 25,134,145,151, 55, 17,214,179, 64, 24,228,228,228,132, 93, -187,118, 65,165,122,125,186, 47, 51, 51, 51,196,198,198,234, 59,110,104,215,174, 29,143, 16, 50,168, 58,129, 69, 8,211,240,210, -141,103,118,229,251, 33,221,189,217, 64,127,151, 12, 91,107, 83, 10,128,204,155, 55,175, 66,176, 1,192,194,133, 11, 13, 9, 39, - 24,129, 0, 89, 17, 17, 47, 51, 96, 62, 3,134, 37, 32, 2,128,225,151,182,150,130, 2, 84, 7,112, 90,128,211, 0, 98,199, 70, -134,112, 7, 52,112,118, 59,182,116,197,207, 22, 74, 13,197,174,195,231,240,244,233, 19,240, 24, 6,205, 92,221,240, 94,151, 78, - 2,191, 54,129,141,190,255,102,250, 81, 66, 72, 79, 74,233,245, 58, 71, 52, 71,197,174,206, 54,216,244,235, 45,216, 90,202, 48, -168,239, 7,144,136, 69,248,238,199,223,176,120,206, 68,184, 53,115,193,250, 85, 75,170,189,220,220,220,124, 81,235,150, 30,205, -126,219,115, 18, 65,157,219,243,183,236, 57,133, 46,157, 59,240,127,219,115, 18, 93,130, 58,241,183,236, 57,137, 46,157, 59, 10, -182,236, 57,137,118,254, 45, 93, 47,103, 71, 45, 2, 48,177,250,123,174,148, 70,239,149,166,145, 27,159,173, 40, 0,158,125,241, - 5, 0, 84, 8,172,186, 64, 32, 16, 52, 76, 75, 75,179,171,237,188,218, 92,130, 50,231,234,166, 86,171, 69,102,102, 38,201,203, -203,163, 22, 22, 22,125, 79,174,159,123,240,253,142,190, 57, 0,112,247,238, 93,171,176,176,165,125,119,223, 44,128,252,234, 79, -228,247, 35, 17,220,136, 62, 65, 55, 15,135,143,246, 27, 56,112,224,237,170,120,149, 74,229,211, 86,173, 90,209,178,239, 13, 68, - 34, 17, 91,233,153,112,114,115,115,123,205,165, 54,160,233,112,245,149, 43, 87, 38,122,121,121,193,195,195,227,114,219,182,109, -205,164, 82, 41, 78,158, 60, 9, 79, 79, 79,111, 51, 51,179,107,123,247,238, 21,204,158, 61,219,119,243,230,205, 0, 48,201,128, -231,179, 91,112,112,240,174, 99,199,142,137, 89,150,133, 92, 46, 71,108,108, 44, 44, 44, 44, 32, 20, 10,241,225,135, 31,242, 58, -116,232, 96,221,165, 75,151,253,101,149, 0,131, 71, 52, 41, 20, 10, 58,119,238, 92,152,152,152,192,196,196, 4, 82,169, 20, 82, -169, 20, 50, 49,200,186, 41,206,146,201, 27,242, 36, 95, 46, 88, 23,190,237,231,111, 46, 56, 59, 59,127,157,148,148,148, 87,215, -103, 65, 30, 25, 9,217,221,187,128,222,187,107, 40,204, 77,172, 16, 26, 26, 90,155, 3, 5,150,101,209,190,125,251, 90,249,172, -173,173, 15,240,249,252, 87,106,164,148, 82,113,104,104,168,238,193,131, 7, 82,134, 97,164, 28,199, 33, 52, 52, 84,167,213,106, -197,246,246,246,151, 57,142,203,200,202,202,234, 95, 27, 55,165, 84, 73, 8,153,201, 48,204,106,145, 72,196,111,220,184,113,226, -252,249,243,175,148,185,151,160,148, 50,141, 27, 55, 14,144, 72, 36, 46, 74,165, 82, 11, 96,166,209,189, 50,162, 6,248,149,154, -192, 21, 80, 1, 16,150, 27,246,165,165, 29,108, 42,253, 14, 0, 47,202, 42,136,246,213,236,103, 3,136, 3,208, 28,128, 93,217, -177, 27, 0,114,222,138,192, 34,132, 80,189,151,162,162, 64, 49, 53, 53,197,141, 27, 55, 64, 8,129,169,169, 41,204,204,204, 96, -110,110,142,130,130, 2,196,197,197, 33, 62, 62, 30,207,158, 61, 3, 33, 4,205,154, 53, 67,249,139,163,199, 85,145,177,237,248, -225, 24,196, 50, 17, 8, 1, 90,119,245,129, 79,231, 22,104,115,253,241, 20, 39, 39,167, 13,105,105,105, 15, 9, 33,252, 22, 45, - 90,124,210,174, 93, 59,172, 88,177, 2, 74,165,114, 69, 85,226, 74,159, 51, 50, 86,227, 95, 86, 40,205,216,126, 50,193,100,100, - 15,215,146,180,180,180,229,117,141,132,202, 25,240,139, 23, 47, 12, 94, 43,143,227, 56,228,230,230,214,200, 89,217, 17, 88,185, -250, 39,139,194,252, 12,124,251,221,118,104, 52, 26, 76,159, 62, 29, 28,199, 85,108,121,121,121, 6,133,147,234, 42,153, 10, 76, -233, 70, 24,128,240, 1,231, 33,165,122, 34,105,215, 79, 32, 20, 32, 58, 0,149,238,171, 50, 39, 33, 68,204, 99, 37,187,191,249, -110,141,197,237,248, 20, 28, 62,119, 27,234,130, 84,164,223, 61, 8, 0,104,214,126, 24,246, 40,121,104,235,227,138,169,243,190, -183,252,106,234, 71,187, 9, 33, 30,250,205,133,134, 20,104,148,234,240,237,162, 69,216,176,102, 5,190, 95,177, 6, 5,249,121, - 16, 8,108, 0, 0, 90,173, 14,186, 74,247,246,218,189, 83,218,227,171, 25,227,200,234,141,251,209,226, 29, 7, 28, 61,115, 25, -254,222, 46, 56,113,254, 58,218,181,108,130, 83, 17,183,208,206,167, 41, 34,174,198, 98,250,132, 81,228,210,137, 45, 61,234,146, - 70,171, 86,253,100, 81, 88,144,129, 99, 75,182, 34,115,237, 90, 36, 78,156,136,128,178,115,174, 19, 2,182, 97, 67,128,173, 61, -141, 42,227,222,189,123, 80, 42,149, 85,213,238,225,233,233, 89,107,186,203,229,242, 91, 90,173,150,102,100,100,144,140,140, 12, - 72,165, 82, 18, 27, 27,163,243,246,110,209,143,198,239,219, 8, 0, 97, 97, 75,251,237,185, 85,128,146,203,107, 32,191,242, 35, -216, 38, 81,204,134,133,227,212, 99, 23,172,191,165, 87,184,189, 18,206,244,244,244,158,229,223,155, 53,107, 22,255,224,193,131, -230,229, 77,202,101, 77,133,172, 86,171,117, 43,111, 54,212,106,181, 80, 42,149,232,214,173, 27,175,166,123,183,180,180,108,231, -233,233,137,219,183,111, 99,205,154, 53, 86,193,193,193,120,244,232, 17, 8, 33, 88,186,116, 41,241,242,242, 18,188,120,241, 2, -239,191,255, 62, 14, 28, 56,208,190,182,248, 36,132,152, 74,165,210,205, 71,143, 30, 21, 51, 12,131,194,194, 66,112, 28,135,142, - 29, 59,130, 97, 24,196,196,196, 96,222,188,121, 56,112,224, 0, 14, 29, 58, 36,241,243,243,219, 76, 8,241,212,111,190,175, 33, -141,168, 66,161,160, 34,145, 8, 34,145, 8, 98,177, 24, 98,177, 24, 66,161, 16, 69, 10, 96,236,202, 68, 37, 79,108,195,121,183, -234,232, 58,102,242, 82,102,249,252,143,207, 3, 56,108,232, 51, 15,148,246,185, 90,253,219,111,107, 70,228,231, 51, 0,176,137, - 16, 78, 77,233,247,134,188,239, 0, 80,168,200,131,139,107, 67,236,223,117, 8, 3,134,246,173, 82, 92, 9, 4, 44, 88,129, 0, -166, 86, 38,181,114,178, 44,107, 31, 31, 31,111, 45, 16, 8, 42, 28,121,141, 70,147, 49,127,254,124,219, 94,189,122,153,158, 56, -113,130,233,213,171, 23,103, 99, 99, 83,124,251,246,237, 76,181, 90,109,221,161, 67, 7,131,159,121, 74,233,207,173, 90,181,106, -125,240,224,193,143, 67, 67, 67,111,206,152, 49,227, 91,253,227,203,150, 45, 91,116,252,248,113,151,126,253,250,109,187,115,231, -206,207,117,201, 67,222, 52,159, 55,114,254,243, 56,171,211, 34,101,176, 39,132, 28,211, 59, 30, 82,190, 31, 26, 26, 58, 55, 44, - 44, 44,150, 16,114, 76,255,247,242,243,202,184,143, 85,181, 95,118,173,213,156, 57,115, 90,132,135,135, 47, 13, 12, 12,220,117, -249,242,229, 39,111, 77, 96,149,223,136,254,205, 85,138, 72, 20, 20, 20,160,160,160, 0,201,201,201, 88,183,110, 93,217,139, 44, - 0,159,207, 7,159,207,175,232,175, 80, 29,206, 30,189,248, 35,128, 31,253,252,252, 4,209, 87,246,158,152,181, 97,242,187,254, -221, 90,243,110,157,139, 30, 8, 96, 49,128,158,163, 70,141,178, 1,128,173, 91,183,190, 0,112,226, 63, 33,145, 41,165,123, 31, - 62,124, 56,213,209,209,177,162, 15,138,126, 51,161, 86,171,133, 88, 44, 70,121, 95, 21,133, 66,129,117,235,214,105, 41,165,123, -107,224,196,131,216,243,120, 24,123,161,244, 58,142, 3,167,123,121,253, 55,223,124,163, 63,244, 21, 95,148, 57, 37,181,138,187, -170,226,156, 86,250,172,244,251,107,162,236,181,102, 8,118,242,192,143, 38, 58,114,132,143, 35,231,239, 64, 32, 16,128,211,115, - 47, 5,188,210,218,113,236,163, 52, 56,217,123,163,207,176,113, 14, 7,183,253, 52, 25,192,119,117,141,107, 15,223, 64, 76,153, - 58, 21, 27, 55,108,192,188, 5,139, 42,212,185, 86,167,131,182,214,112, 50, 76, 7,127, 47, 20,101,167,128,199,227,161,251,222, -103,121, 0, 0, 32, 0, 73, 68, 65, 84,125, 43, 87,240,120, 60,116,242,119, 7,143,199, 67,199, 54,205,193,231,243,209,165,157, - 23,222,121,231, 29,240,249,124,166,150,116,199,131,216,115,120, 24,251,167,158,216, 45, 77, 19,117,122,250,107,231,107,210,211, - 65,157,173,235,250,108,225,147, 79, 62,201, 75, 78, 78, 86, 87, 62,214,168, 81, 35, 54, 50, 50,210,162,154,230,185, 10, 72, 36, - 18, 63, 62,159,127, 43, 39, 39,135, 51, 49, 49, 97, 56, 78,199,121,123,183,224,157, 92, 63,247, 96,249, 57,115,230,204, 61, 56, -216,207,172,223,246,189,199, 40,219,184, 35, 33, 2,145,246,179, 5,235, 89, 1, 43, 49,104,134,250,242,230,194,251,247,239,163, -182,240, 84,145, 9,190,130,220,220,220, 81,158,158,158,145, 63,254,248,163, 21, 33, 4, 23, 47, 94, 4,143,199,171,216, 30, 63, -126, 12,134, 97, 48,107,214, 44,117, 65, 65,193,167,181,102, 88,124,254,212,253,251,247,155, 11,133, 66, 20, 22, 22, 86,188, 55, - 60, 30, 15,241,241,241, 88,190,124, 57, 70,141, 26,133,164,164, 36, 56, 57, 57, 97,250,244,233,178,240,240,240,169, 0, 22, 25, -112,235, 81, 42,149,202,223,196,196, 4, 98,177, 24,229, 66, 11, 0, 78,199, 10, 98, 74, 74, 74, 90,218,216,216, 56,216, 70, 28, - 59,210, 62,184,143,175,181,173, 99, 96,185,192, 50, 20, 9,192,134, 39, 90,237, 87, 61, 15, 30,180,187,116,240, 32,119,229,200, -145, 20,113, 81,209,122,131, 9, 52, 60, 36, 38,164,192,207,207, 15,183,110,221,130,159,159,159,190, 88,130, 80, 40, 4,203,178, - 96, 89, 22, 54, 22, 6,117,149,160, 12,195,224,210,165, 87,151, 27,237,212,169, 83,206,133, 11, 23,100, 0,144,152,152, 72, 67, - 66, 66,242,226,226,226,224,230, 86,115, 55, 52, 7, 7,135, 72, 30,143,215,184,210,187,106,217,191,127,127,228,230,230,126,208, -191,127,255,142,101,191,165,238,219,183,111, 36, 0, 8,133, 66, 48, 12,163,131, 17,255,122,212,166, 69,244, 5, 82,101,161, 21, - 22, 22, 22, 82,249, 55,125, 49, 85,213,119,253,107,195,195,195,151,234,113,203,223,198,253,240,245,149, 99,109,153,101, 77,168, - 77, 96,149,227,214,173, 91,154, 6, 13, 26,108,124,120,231,217,187,174, 62,205, 32,145,138,222, 35,132,252, 40, 18,137,166,125, -244,209, 71,184,122,245, 42, 98, 98, 98,126,125,211,101, 79, 90,182,108,121, 74, 36, 18,185, 84,211, 28,146, 24, 29, 29,253,126, - 53, 5,194,130,178, 62,101,213,118,114,215,239, 15,166,223,201,189,218, 7,130,163,208,168, 53, 40, 46,145,191, 44,188,203, 4, - 86,113,113, 49,134, 12, 25,242,138,131,149,153,153,105,136,210,199,242,195,135,113,102,239, 94,124,224,235,139, 3,215,175, 35, -252,163,225,240,112,105, 0,170, 35,160, 4, 72,218,249, 19,178, 11,138,176,227,220, 37,228, 20,150, 96, 68,167, 78,112, 51,179, -169,153, 87,192,118, 15,104, 23,200,158,189, 28, 7,129,128, 15, 6, 28,168,166, 4, 78,158, 93,192, 99, 24,152,219, 55, 1, 43, - 16, 64, 32,224,227,113,242, 11,120,182,104, 35, 60, 38, 20,119,175,143,192,114,118,105, 10, 78,167,195,168, 81,163,176,107,215, - 46, 88, 59,184,192,188, 81, 11, 44, 94,177, 1, 31,116,235, 84,235,253,151,215,216,249,124, 62,120, 60,222,107,159,229,223, 13, -113, 35, 41, 71,161,174,156, 70, 28, 5, 5,208,112,201, 18, 52, 92,178, 4,215,203,254,211,171,184, 24,114,185, 28,104,235, 93, - 39,113,165, 82,169,144,156,156,172, 78, 79, 79,183,175,162, 96,202, 80,169, 84,181, 10,154, 45, 91,182, 68,141, 30, 61,218,223, -202,202,234,102,212,221,187, 26, 31, 95, 95,193,137,117,115, 15,149, 55, 15, 2,128,175,175,111,206,220,185,115, 15,141, 28, 20, -210,247,231,208,161,186,241,139,182,241, 69, 18,137,127,200,140,154, 59,186,235,189, 31, 79,125,124,124,168, 33,231,150,148,148, - 60,175, 33,141,122, 3, 88,216,186,117,107,179,224,224, 96, 68, 70, 70, 98,192,128, 1, 74,181, 90,253, 16, 0,122,245,234,229, -190, 99,199, 14, 97, 92, 92, 28,108,109,109, 5,137,137,137,155, 9, 33, 53,118,124, 23, 10,133, 93,218,180,105,195, 40,149,202, -215,196, 85,120,120, 56,134, 13, 27, 6,119,119,119,112, 28,135,162,162, 34, 4, 7, 7, 11,214,172, 89,211,197, 64,129, 53,197, -195,195, 99, 57, 74, 71, 17,234,231,133,247, 0,204, 44,115,183,159,135, 12, 24, 21,219,169, 91,127,255,198,239,180,112,172,141, -208,222,222,126, 14,195, 48,131, 57,142,227, 21, 20, 20, 36,171, 8,121,199,171,113, 99,251, 14,125,251, 34, 95, 32,224,173, 62, -119,142,201, 40, 42,146, 1, 48,168,169, 81,174, 41,130,139,107,105, 87,190, 1, 67,251,226,214,173, 91, 24, 56,172, 31, 88,150, - 5,159, 47, 40,125, 55,217, 82, 7,203,194,198,212, 48,205,166,209,188,246,172, 82, 74, 97,102,102, 86,209,146, 81,254,155, 70, -163,169,177,240, 3,224,182,103,209,124, 59,137,153, 57,116, 26, 13,188,251, 14,172,120,166,175,109,250, 89, 2,142,147,228, 37, - 62,197,164,189, 71, 5, 48,194,136,106, 92,172,154,180,136,190, 64,122, 11,255,117, 44, 52, 52,116, 46, 0, 26, 26, 26, 58,183, -124, 63, 44, 44, 76, 14, 32,245,173, 8,172, 55, 21, 87,229,205, 8, 53,161,107,215,174,147, 76, 77, 77,215, 0,128,191,191, 63, -146,175,166, 34,249,106, 42, 60,155,123,119,104,237,235,159, 63,108,216, 48, 88, 91, 91, 99,198,140, 25, 20,192,175,117,253,255, -199, 15, 98,101, 0,168,147,147,211, 12, 0,112,114,114,242,189,126,253,186,237,141, 27, 55,208,166,205,203, 17,133,106,181, 26, - 29, 59,118,172,169, 32, 44, 68,105, 95,170, 47,223,158, 42,231,160, 86,171, 81, 82, 34,135, 74,165,134, 86,195, 65,171,213,194, -207,219, 20,219, 54,132,150,254,166, 45,119,203, 74, 93,178,134, 14,166,240,107,233,160, 97, 24, 34,191,113, 55,221,172, 42, 94, -149, 74,133,168,196, 68,220,125,246, 12, 0,208, 39,236,251, 26,195,177,237, 92, 36,188,188,188,106, 11,173,107, 67, 39, 7,164, -157,137, 42,205,180,229,201,184,241,215, 30,152,154,202, 0, 0,222, 65, 35,192,178,165, 2,171, 88,174,134, 77,243, 70, 32,148, - 86, 59,188, 95,106,229,120,138,207,138, 93,168,142, 3,165, 28, 40,167, 3,165, 28, 68,166,214, 38, 19, 63, 31, 3,142,211, 33, - 32, 32, 0,132,199,131, 78,163,196,160,222,221,145,155, 95, 8,107, 11, 51,131,226,150,101, 89, 4, 5, 5, 73,170, 59,254,232, -209, 35,185,190, 32,171, 57,141, 52, 40, 46,150, 67,169, 84, 66,173,210, 66,173,209,130,107,202,226,219,175,134, 67,171,214,162, -100,104, 96,233,111, 83,251, 65,173,210, 32,201,132, 97,124,189,108, 53, 12,136,252,118, 92,166, 89,109, 2,171, 92, 20, 84,135, -170,250,252, 85, 35,178,238,142, 30, 61,218,207,199,215,247,214,224,110,190, 63, 68,199,196,166, 69,199,196,190,118,158,139,187, -239,211,241,225,187,166, 11, 88,137,159,161,226, 10,120,181,185,240, 13, 49,183,176,176,208, 71, 38,147,225,193,131, 7,224,241, -120, 32,132, 60,162,148,250, 0,192,184,113,227, 18,248,124,126, 51, 30,143,135,181,107,215, 18, 62,159,223, 50, 48, 48,112, 46, -128, 61, 53, 84,228, 60, 77, 77, 77, 95,113,175, 88,150, 69,104,104, 40, 70,142, 28, 89, 33,174, 88,150,197,150, 45, 91,224,239, -239, 15,149, 74,229,105,160, 8,190, 1,160,147, 1, 14, 31, 41, 19,229,181,138, 80,173, 86, 59, 58,123,240,224,119, 16, 17,129, - 14,205,154,121,249,249,249, 65,173,126,105, 96, 54,109,218,180, 81, 97, 97,225,115, 66,200,239, 0,126,166,148,222,169,145, 79, - 65,145,152,144, 82, 94, 89, 69, 64, 64, 64,133, 99,165,239, 94,177, 44, 11, 9, 43,171,179,192,162,148,162,184,184,152, 57,121, -242,164,141,167,167, 39, 1, 0, 47, 47, 47,114,245,234, 85, 43,137, 68,242,194,201,201,169,214,138,175,196,204, 28, 91, 70, 15, - 1, 0,124,221,173, 71, 69,133,232,228,194,185, 16, 8, 4,120,119,198,220,215,158,123,142,227,120, 48,194, 40,174, 12,208, 34, -111, 75, 92, 85,118,176,194,194,194, 98,195,194,194, 94,115,195,222,154,131,101,136,229,111,104, 45,168, 50, 86,172, 88,129,150, - 45, 91,214, 88, 0,173, 89,179, 6,219,183,111, 95, 65, 41,125, 92,215,255, 15,121,183,181, 55, 86, 30,140,109,230,238, 77, 0, - 96,209,212,222, 76,113,113, 49, 46, 93,186, 4,115,115,115, 60,122,244,200,208, 4, 54, 53, 55, 55, 95,200, 48,204, 32, 94,229, -158,253, 85, 11, 75, 29,199,113,123,243,243,243,171,157,166,129, 82, 64,173,209,162,184, 68, 1,149, 74,133,169,179,126,170, 53, - 28, 97, 0, 81,171, 10,249, 65,157, 3, 37,213, 57, 56, 1, 45,130, 48, 97,164,244,181, 66,155, 87, 58, 21, 24, 90, 5,148,174, - 45,125,251, 90, 12, 40, 5,116, 58,192,198,206, 10,191,238,250,161,198, 40,208,234,184,178,218,176, 14, 69, 74, 29, 60,219,133, - 32,229, 94, 68,133, 99, 36,100, 75,155,134, 89,129, 0, 28, 37,165,179, 55, 84, 39,128,132, 18,151,220,244,199,110, 27,142, 69, - 99,108, 72, 75,236, 59, 27,133,129,221,124,112,225, 90, 28,130,219,122, 33,246,225, 51,120,187, 53,198,218,205,123, 65, 41, 10, -127, 89,185,248,249,203,130, 76,155,104,136,131,117,245,234, 85,121,101,215, 74,255,147,214, 94, 14,150, 54, 5,150, 57, 88,114, -133, 18, 51,230, 24, 52, 29, 79,105, 26,117,106, 39, 49,228,228,154, 28, 42, 67, 4, 88,101, 39, 11,181, 76,179,210, 20,128, 63, - 48,251, 63,153, 97,234,116, 58,252,241,199, 31, 21,233, 81, 85, 58,234,167,157, 1,226, 6,137,137,137,136,137,137, 65, 96, 96, - 32,242,243,243, 33, 96, 24, 76,143,142,134,215, 71, 31, 65,197,178,224, 56, 14, 66,161, 16,227,198,141, 51, 56, 62,235,152, 43, -151,245, 99,211,209, 90,242,146, 31, 66, 66, 66,222,121, 80, 92,140,216,248,120,116,251,230, 27, 0,192, 31,127,252,241,202, 51, - 49,109,218, 52, 97, 92, 92,220, 39, 55,111,222,252,132, 16,178,130, 82, 58,189, 58, 78, 53, 85, 84,244,193, 26, 60, 98, 0,222, -241,108,138,237,155,119, 86, 28,159, 54,107, 10, 4, 2, 22, 2,129, 0, 22, 22, 22, 6,221,141,126,222, 93, 82, 82,194,236,219, -183,175, 97,151, 46, 93,216,177, 99,199, 18, 0,216,176, 97, 3,179,105,211, 38,233,233,211,167, 89,115,115,243,244, 90, 69,165, - 90,253, 90, 26, 19, 66, 32, 16, 8,192, 10, 89,128,227, 64, 8,145, 46, 91,182,108, 81,108,108,108, 27, 15, 15, 15, 40,149,202, -143, 8, 33,183,141,243, 96, 25, 81,155, 22,169,170, 47, 85,153, 11, 85, 29,178,244,251,101, 85, 39,208,244,251,100, 1,120, 43, -131, 45,248,181,137, 42, 30,143, 87,171, 59,197, 48, 76,173, 77,132,211,166, 77,131,169,169,105,117, 5, 15,141,142,142,142, 75, - 79, 79,223, 64, 41,253,169, 62, 55,114,236,220,237,216,133, 95,246, 43, 68, 89,219,169,133,133,197,139,174, 93,187, 22, 1, 80, -239,217,243,106,133, 88,169, 84, 86, 91,112,155,155,155, 47,220,180,105,211,228,190,125,251, 50,149,167, 10,208,111,198, 43,223, - 52, 26, 13,246,236,217, 51,121,246,236,217,168,206,245, 42, 47,188, 75,138,229,144,151,117,112, 78,136,217,103,104,102, 94,237, - 33,153,165, 19, 26, 54,211, 85, 91,136, 48,108,105, 31, 33, 7, 23,223,138,223, 76, 77,197,208,213,192, 73, 8,243,248, 89, 82, - 90,131, 70, 14, 86, 72, 72,206,130,125,227,150,200, 77,125, 25, 15,124, 62, 15,130,178, 38, 66, 11, 51, 41,178, 50, 51,193, 48, -188, 26, 5,241,226, 29,183,113, 45,230, 25,246,159,189, 3,181,162, 24, 43,183,158,132, 90, 89, 4,181,162, 24,106, 69,233,231, -210,217,159,129, 16, 60, 87, 43,138,220,235,244, 0,243,249,104,219,182,109,181, 2, 39, 53, 53,213, 64, 7,139, 86, 56, 88,114, - 69, 29,211,200,176,154, 82,141, 14, 85,249,241,250, 10,130,242,169, 27, 36, 18,137,255,150, 45,213, 79,199, 80, 21, 28, 29, 29, - 79,200,100,178, 38,134,158, 95,135, 73, 71,151, 90, 88, 88, 44,244,240,240,240, 92,185,114,165,128,199,227,225,221,119,223,117, -255,236,179,207, 18, 1,160,101,203,150, 78,229,121,204,248,241,227,233,213,171, 87, 99, 74,235, 22,213, 67, 40, 20,198,155,155, -155,251,119,237,218, 21,249,249,249, 72, 78, 78,134, 84, 42,133,215, 15, 63, 32,122,252,120,248,174, 91, 7,166,107, 87, 16, 66, - 32, 20, 10, 17, 29, 29, 13,137, 68, 18, 95, 67,102,222, 22,192,247, 0, 58,224,101,179, 32, 5,112, 9,192, 44, 74,233,181, 42, -242, 59, 6, 0,116, 28, 87, 91, 98, 13,159, 49, 99, 6,242, 4, 2,160, 87, 47,176,143, 31, 67,173, 86, 35, 48, 48, 16,254,254, -165, 51,113, 4, 6, 6,130,207,231,195,199,199, 7, 78, 78, 78, 88,187,118,237,112,188, 58,178,250,213,188,171, 72,131,196,132, - 20, 4, 6, 6, 86, 56, 85,189,122,245,170,112,176, 4, 2, 65,133,147, 69,116, 60,131, 10, 51,125,129,165,209,104, 8,203,178, -252,207, 63,255,156,124,250,233,167, 84,163,209,112, 44,203, 50, 27, 55,110, 36, 87,175, 94,229,203,229,242, 90, 43,224, 45,250, - 13,194,215,221, 75, 77,208,197, 77,108, 33, 96, 5, 16,178, 44,102,196,167, 84,164,139,217,150, 93,194,240,240,240,129, 30, 30, - 30,165,205,237, 0,223, 56, 15,150, 17,181, 24, 60, 89,149,196,145, 74,111, 63, 11, 0, 41,219,207,210, 19, 82, 89, 40, 29, 17, -216,166,210,185,229,199, 85,149, 62,203,143,223,125, 27,247, 83, 83, 13,248,225,149, 43, 87,220,252,252,252,144,148,148,244,218, -200,182,242, 2, 75, 42,149, 66, 34,145,224,242,229,203, 0,240,176, 58,178,243,231,207,255,136,210, 89,146, 1, 0, 78, 78, 78, -129,193,131,187, 92, 14,232,209, 6, 59,194,118,230,167,167,167,251,148,207,129, 67, 8, 33, 78, 78, 78, 35, 5, 66,254,144,102, - 45,156,131,192,113,223,159, 61,242,215, 55, 53,221, 72, 51,119,239, 34, 0,114,189, 81,132,203,235, 19, 33, 12,195, 12,234,219, -183, 47, 19, 23, 23,135, 33, 67,134, 96,251,246,237,213,158, 59,114,228, 72,236,218,181, 11,125,251,246,101,230,204,153, 51,168, - 54,129, 85,234,142,168,222,218,195,248,224,225, 93,108,219,185,177,218, 62, 70,118,118,182, 0,128,204,204,172,138,223,252,253, -107,158,136,153,211,170,206,220,190,121, 61,176,125,231,119,217,228,140, 60,112, 90, 37, 20,133, 47, 94,214,112,243, 50, 64,181, - 10,176, 38, 86,112,176, 49,199,173, 43,167, 85,106,149,226, 76, 77,156,147,251,122, 99,124,111, 79,128,114,232, 55,253, 87, 28, -251,105, 82, 69,243, 78,199, 1, 83,112,110,207,106,131,251,240, 85,134, 64, 32, 64,116,116,180,188, 58,247,138,199,227,213, 58, -167,214, 75,151, 81,131,146, 18, 57, 74,228,138,183,150, 70,132, 16, 91,123,123,251, 95,172,172,172,196, 85, 9, 40, 66,136,173, -173,173,237, 47,214,214,214, 98, 67,155, 8,171, 19, 87,101,243, 98,221, 28, 61,122,116,157, 68,150, 72, 36,106,242,240,225,195, -138, 73, 70,107,250, 84,169, 84, 8, 14, 14,230, 27,152, 89, 30, 37,132, 60,113,116,116,188,228,229,229,101,158,144,144,128,157, - 59,119,178, 2,129,192,185, 60,255, 40, 44, 44, 4,143,199, 67,102,102,166, 6,192,199,181, 53,145, 41,149,202,136,136,136,136, - 86,189,123,247,230,197,199,199,131,199,227,149,134, 43, 48, 16,190,235,214, 33,230,203, 47, 17,244,236, 25, 20,106, 53,196, 98, - 49, 78,157, 58,165, 46, 41, 41,137,168,142, 79, 34,145,108,120,250,244,169,183, 88, 44,134, 90,173, 6,199,113, 96, 24,134,240, -249,252,142, 22, 22, 22,107, 0,180,121,245,157,178,179, 27, 55,237,187,230, 58,173, 86,151,158,148,144, 85, 91, 28,100,103,103, -227,232,209,163,104,215,174, 29,130,130,130,144,154,154,138,199,143, 31,163, 87,175, 94, 21,231,220,189,123, 23,183,111,223,134, -171,171,107,237, 14, 30, 79, 3, 87,143, 38, 96, 5, 44, 4,172,160,244, 83, 32, 40,219, 74,191,151,255, 86, 62,103, 97, 93, 28, - 44, 0,144,201,100,229,207, 5,215,164, 73,147,244,244,244,116, 71, 0,188,242, 9, 88, 13,169,172,148,151, 17,229,226,138, 21, -178, 21, 78, 22, 0,228,229,229, 41,250,246,237,251,187, 82,169, 28,131,122,172, 40, 98,196,191, 18, 55,254, 67,215,254, 45, 2, -235,131,246,237,219,175, 27, 54,108,216,187,171, 86,173,130, 76, 38, 67,122,122,122, 69, 65, 40, 20, 10,209,168, 81, 35,228,228, -228, 96,253,250,245, 72, 73, 73, 57, 15, 96,156,161,127,156,158,158,126,245,209,157,135,217,193, 3,219, 91,123,183,111,110,145, -252, 48,165, 29,128,203,101,226,234,215, 97,211, 62, 24, 19,220, 63, 0,172, 80,128,228, 71,207,255,223, 34,132,199,227,241, 8, - 33, 24, 50,100,136, 65,231, 15, 29, 58, 20, 17, 17, 17,168,169, 57,145, 43,119,176, 74, 20, 40,150,191,189,202,217,132,201, 35, - 49, 97,242,200, 10, 17, 97, 72, 19, 75,169,184,221, 93,131,192, 82,175, 58,182,123,253,216,214, 1,129, 46,254,222, 77,112,237, -230, 29,236, 88,247,210, 84,216,252,227, 34,124,183,249, 60, 26,217, 91, 66,173, 44,198,137,125, 27,159,171,149, 37,171,234,105, -194,149,138, 90, 66, 96,224,252,146,175,184,166,229, 2,171, 69,139, 22,213, 58, 88, 57, 57, 57,242,218, 10,132,138, 52, 82,105, - 80, 84, 44,135,188,228,237, 8, 44, 66,136,111,199,142, 29,207,236,221,187,215,218,206,206, 14,105,105,105,175, 8, 44, 66,136, -111,135, 14, 29,206,236,221,187,215,218,222,222, 30,201,201,201, 6, 79, 15, 82,133,184, 66, 86, 86, 22,201,205,205,229, 44, 45, - 45,235, 36,178, 24,134,129, 82,169,196,189,123,247, 12,253, 91,131, 71,124,153,155,155,111,217,181,107,151,249,139, 23, 47,192, -227,241,112,239,222,189, 87, 70, 17,150,111,191,254,250, 43,219,175, 95,191, 77, 0, 90,213,196,167,213,106, 87,140, 28, 57,242, -147,212,212, 84, 75, 59, 59, 59,164,167,167, 67, 40, 20,130, 82, 10, 18, 28,140, 78, 79,158, 64,173,211, 65, 34,145,224,193,131, - 7,216,176, 97, 67,177, 82,169, 92, 81, 77,250, 8, 77, 76, 76,220, 88,150,197,136, 17, 35, 94, 57,182,117,235, 86,244,241,231, -249,143,237, 46, 42,210, 66,172,204,144,244, 60,193,227,241,200,184, 25,223,187,183,237,220,171,197,253,152,107, 9, 89, 25, 41, -151,106,185,125,141, 74,165,130,135,135, 7,110,220,184,129,179,103,207,162,107,215,174, 8, 10, 10, 66, 84, 84, 20, 78,159, 62, -141,219,183,111,131, 16, 2,107,107,235,242,110, 22, 53,246,181, 80, 21,107,145,153,154,253,154, 91, 85,121,159,101, 89, 40,133, -106,131,210, 40, 62, 62, 30, 55,110,148,150, 63, 37, 37, 37,224,243,249,218, 25, 51,102,128, 97, 24, 26, 19, 19, 3, 59, 59, 59, - 58,107,214, 44, 29,159,207,215, 38, 37, 37, 25,250,236,151,186, 85,101,226,138,207, 10, 94, 17,102, 28,199, 21,222,189,123,119, - 44, 33, 36,138, 16, 82, 62, 27,170,113, 30, 44, 35,254,167,192,175,161, 22,242, 4, 64, 55, 66,200,240, 67,135, 14,173, 88,179, -102,141,109, 72, 72, 8,114,115,115,225,226,226, 2, 71, 71, 71, 28, 59,118, 12,199,143, 31,127,161,211,233,166, 83, 74,183, 87, -241,146,117,171,110,174, 12, 74, 41,117,114,114,218,171, 44, 42, 26,239, 23,228,137,243,123, 46,134, 57, 58, 58,142,107,208,160, -193,212,209,115, 63, 28,211,165,111, 27, 60,184,253, 20, 87, 79, 71, 35, 35,233, 5, 70,119,154, 85, 35,103,229, 78,238, 22, 22, - 22,159,152,152,152, 8, 1,168,171,168, 5,191, 50,138, 80,159, 83,167,211,233, 84, 42, 21,118,239,222,109,144,200,218,185,115, - 39, 20, 10, 5,116,149,218, 81,245, 57, 41, 71, 9, 95, 32,130, 83, 35, 15,168,213,197,224,184,250,185, 53,250,156,132, 16, 48, - 12,131, 4,161, 16,118, 47, 94,224,218,181,107, 6,113,232,215,156,171,138, 79, 74,169,130, 16, 50, 98,245,146, 25,199, 38,134, -126,111,209,181,125, 43,124,253,195, 86,168,213,155,193,240, 24, 72, 68, 44,252, 2, 58,128, 7, 37,126, 9,159,153, 87, 82,144, - 59,162,242,146, 57,175,113,214,212,146, 66, 1, 29,199,225,108,228,117,131,239,189,162,148,215,233,192,231,243,241,232,209, 35, -121, 85,163, 7,121,188,210,230, 76,134, 97,170,172,117,191,154, 70, 28, 17,176, 98, 52,114,241,130, 74, 89,244, 86,210,200,206, -206,110,230,193,131, 7,173,203,167, 60,136,138,138, 2, 33,228,158,158, 27, 50,243,224,193,131,214,114,185, 28, 49, 49, 49,229, - 75, 66,221,171,203,123, 84,238, 92,101,101,101,145,244,244,116,152,152,152, 48, 81, 81, 81, 74, 31, 31,159,155,168,121,165,134, - 10, 78,133, 66,241,172,186,254,145, 10,133,162,129, 88, 44, 22, 84,186,214,201,205,205,237, 65,229,166,194,170,194,153,159,159, -127,109,246,236,217,126, 61,122,244,192,204,153, 51,115, 44, 45, 45, 77,127,249,229, 23, 62,143,199, 35, 19, 39, 78,212,101,102, -102, 22,109,220,184,209,252,208,161, 67,200,203,203,187, 92,219,189, 83, 74, 11, 9, 33, 99,219,183,111,191,245,228,201,147, 38, -110,110,110, 40, 40, 40, 0,165, 20, 91,182,108,193,196,137, 19, 33, 22,139,241,224,193, 3,244,233,211,167,164,164,164,100,108, -229,190,145,122,156,132, 16, 66, 57,142,195,252,249,243, 43, 38, 21, 45,159,100,212, 84, 66,176, 97, 90, 83,233,148,141,249,210, -225, 95,111,252, 8, 0,116, 90,173,238,126,204,181,132, 45, 63,125,125,129,101,217,200, 90,210,104,222,148, 41, 83,126,233,213, -171,151, 68, 38,147, 33, 39, 39, 7,151, 46, 93,194,149, 43, 87,112,245,234, 85,168, 84, 42, 88, 91, 91,195,210,210, 18,233,233, -233,136,143,143,151, 3,152, 87, 19,167, 80, 42, 64,179,230,229, 35,121, 95,186, 87, 21,251,172, 0, 2,254,203,145,132,134, 60, - 75,157, 59,119, 70,219,182,109,203,133,143, 46, 49, 49, 49, 93,169, 84, 18, 61,177,159, 90, 46,196,157,157,157,181,191,254,250, - 43,173,137,243,234,134,181, 56,249,237, 60, 8, 89, 22,211,239, 37, 87,136,173,173, 93, 91, 67, 32,100,225,217,123,128,126, 57, -240, 51, 33,100,115,217,119,165, 33,207,252, 27, 84,120,140,156,255,112,206,127,141,192,210,123, 1,118, 16, 66, 78,124,246,217, -103,225,190,190,190,159,173, 92,185,146,176, 44,139,111,190,249,134,166,165,165,253, 86, 86,235,200,173,207,159, 83, 74,127,251, -243,192,229, 47, 70,133,246, 37,211, 86,141,238,120,243, 92, 76,124,203,246,110,104,217,222, 13, 55,207,199,225,167,185, 59,183, -235, 52,186,249,233,233,233,181, 85,155,148,221, 58, 52,175,220,201,221, 58,226,194, 57,235,186,142, 34,228, 56,110,239,206,157, - 59, 39,247,239,223,159,185,126,253,250,107,125,174,202, 39,227,227, 56, 14,103,206,156,129, 90,173,198,111,191,253,198,113, 28, - 87,253, 60, 88,160,135, 87,175, 10, 31,245,219,182,195, 66, 33, 75,112, 37,114, 63,242,115,107,118,229, 88, 86,128, 95,183, 28, - 80,179,172,224,126, 85,199,213,106,117,242,185,115,231,236,223,215,233, 4, 12,195,188, 38,156,170,195,222,189,123, 53, 28,199, - 37,214,146, 46,151, 9, 17,244, 94, 60,243,227,157,189, 6,127,102,223,190,125, 71,129,141,157, 61, 8, 33,200,204,200,196,131, -152,235,154, 19,251, 55,101, 20,151, 20, 26,180, 84,206,199,203,255,172,232,115, 5, 0, 33, 19,215, 84,244,191, 2,128,222,163, -103, 35,184,157, 55,136, 33, 86,211, 75,113,197,105,181, 90, 72,165, 82,104,181,218, 42,167,106, 48, 55, 55,151, 40, 20, 10, 57, -165, 20, 58,157,174, 70,107,136, 2,111, 61,141,116, 58,157,103,110,110, 46,138,139,139,113,229,202, 21,186,100,201,146,172,172, -172,172,138,206,152, 26,141,198, 51, 39, 39, 7, 69, 69, 69,184,124,249, 50, 13, 15, 15,207,202,206,206,158, 91,151,119, 72, 34, -145,248,243,249,252,155,185,185,185,156,137,137, 9,163,209,104, 52, 62, 62, 62, 34,137, 68, 98,240, 66,231,105,105,105, 61,170, - 59,230,234,234,250,240,225,195,135,239,232,116, 58,253, 53, 10, 89,133, 66,225,214,190,125,123, 67,154,118,166,108,222,188, 25, - 7, 14, 28, 8, 40, 40, 40, 24,153,152,152,184, 21, 64, 0,159,207,199,157, 59,119,238, 41, 20,138, 97,253,251,247,223,146,155, -155,123, 13,192, 20, 3,243,141,147,132,144, 17,158,158,158,155, 23, 46, 92, 40, 11, 10, 10,226, 59, 57, 57,161, 77,155, 54,120, -240,224, 1,254,248,227, 15,205,207, 63,255, 92, 92, 82, 82,242, 49,165,244, 76,205,201, 14,162,213,106, 33, 20, 10, 43, 54,145, - 72, 4,150,101, 81, 40,167,248,244,135,199,114, 45, 36,242, 21,223,140,253,131, 2,228,121,242,227, 23,153,207,147,175, 17, 66, - 34,211,210,210,242,171,137, 51,161, 66,161,104,229,232,232,200, 39,132,172, 82,171,213, 99, 38, 77,154,228,176,116,233, 82, 52, -111,222, 28, 47, 94,188,128, 84, 42,133,155,155, 27,178,178,178,112,253,250,117, 93, 73, 73,201, 58, 0,139, 40,165, 53, 54, 59, -230,101, 21,160,161,189,243, 43, 78, 39,165, 20, 84, 11,104,116, 58,232,212, 20, 42,162,129, 64,160, 1,203,178,134, 20,146,148, -227, 56,228, 58, 58, 34,245,212, 41,148,173, 42, 81,173,139,118,236,216, 49, 3, 18,136,131, 80, 36,124,165, 89,144, 16, 2, 86, - 40,132, 64,200,190, 54, 34,198,232, 90, 25,241,175, 21, 88,101, 47, 64, 30,128,113,132,144,173, 93,186,116, 57, 70, 41, 21, 0, -232, 69, 41,189,248, 38,127,158,158,158,126,203,201,201,105,142,125, 67,203,240,158, 35, 59,162,121, 43, 23,232,180, 58, 92, 58, -126, 7,191, 45, 61,180, 43, 53, 57,117,180, 33,107,147,113, 28,119,161,131,127,115, 6,122,115,107, 59, 57, 57,113,245, 25, 69, -152,159,159,191, 96,250,244,233,152, 57,115,102,157, 71, 17, 86,119, 78,212,189,204,113,190,158,182, 13,123,247,236,244, 62, 8, - 67, 85, 42,101, 13, 25, 30, 42,102, 28,101, 89,193,253,235,119,211,124,170, 58, 47, 43, 43,235,253, 49, 99,198,156,225,243,249, - 77,234, 18,231, 28,199, 37,102,100,100,188, 91,123,154,107, 46, 17, 66,220,142,238, 90,255,229,201, 3,155,223,231, 56,157, 43, - 1,192,227,179, 9, 26,181,250,148, 82, 94,176,210,208,197,158,151,141, 11,196,148,213,167,177,118,102,111, 76, 10,223,131, 77, -243, 63,197,156, 31,118,226,251,153, 83,176,100,205,239,248,122,202, 8, 12, 28, 62,134,163,132,249,203,208,251,224,241,120, 39, -215,175, 95, 63,234,211, 79, 63,173, 24,140, 64, 41,125, 37, 67,215,104, 52,114,142,227,176,110,221, 58, 14,192,201,154,248, 94, - 77, 35, 66,107,234, 15,101,104, 26, 21, 20, 20,124, 28, 24, 24,184, 5,128,136, 82,250, 40, 55, 55,247,115, 74,105,197, 18, 78, - 69, 69, 69, 31,183,111,223,126, 11,165, 84, 68, 8,121,237,184, 33, 40,155,178,193,223,210,210,242,102,153,115, 37,170, 79, 71, -247,154,162,186,134,230, 67,157, 1,121, 7, 7,189,229,111, 8, 33, 75, 3, 2, 2,244, 23,123,190, 7,192,191,174,129,162,148, -158, 33,132,120,207,159, 63,255, 75,177, 88, 28, 92, 82, 82,226, 14, 0, 82,169,244,129, 82,169,188, 32,151,203, 87,150,229, 91, - 53,113,168, 76, 76, 76, 30,104,181,218, 22,182,182,182,165, 35,100,203, 68, 22, 0, 28,185,169,187, 73,169,182,206,171,198, 31, - 63,126,188,177,165,165,229,123,132,144,129,148, 82,143,194,194, 66,229, 87, 95,125,117,229,192,129, 3,121, 46, 46, 46, 61,123, -245,234, 69,172,172,172,112,227,198, 13,154,157,157,189, 31,192, 92, 67, 70, 78,115, 28,151,184,108, 89,221,214, 22,172,173, 50, -165, 86,171,159, 31, 63,126,220,166, 71,102, 38,223,138,227, 94, 25,225, 88,213,128,139,251,247,239, 67,169, 84,214, 56, 9,163, - 50, 63, 23, 93,191,156, 13,148,141,230, 44, 71,169,115, 69, 65, 85, 70, 61,101,196,191, 3,228,111, 25,198, 92, 71, 11,209,201, -201,105,136, 88, 42,154,224,226,238,232,147,246, 56, 51,174, 48,191,100,123,122,122,250,122, 74,169,174,190,156,117,153,104,212, -104,243,254,125,156, 47,231,193,210,129, 82, 29, 40, 71, 65, 41, 7,142,211,149, 46, 68, 77, 57, 80,157,142, 16,130,191,148, 37, -249,159, 26, 26, 78, 66,136,165,141,141,205, 34, 74,105, 15, 30,143,199,232,155, 95,250,223,203,156,171,147, 89, 89, 89, 95, 87, -118, 90,255, 27,227,115,223,190,125, 85,138,126, 67, 71, 17, 14, 28, 56, 80, 87,199,119,243,130, 84, 42,173,114, 66,205,226,226, -226,164,180,180,180,247,254, 9,241, 89,238,126, 82, 3, 50,180, 74, 77,237,117, 30, 69, 88, 27,103,227,198,141, 69,106,181,186, - 53, 0,119, 0, 22, 0,114, 52, 26,205,201,172,172,172, 12, 66,136, 63,128,249,101,151,125, 75, 41,189,249,159,124,223, 9, 33, - 18, 27, 27,155,205, 12,195, 52, 52,228,122,173, 86,171,202,201,201, 25,165, 95, 17,208,231,180,177,177,185,201,231,243, 27, 26, -192,147,242,226,197, 11,127, 99,254,105,228,252,215, 59, 88,127, 55,210,210,210,118, 3,216,253, 54, 57,171,155,169,221,136,255, - 95, 20,231,164,255, 45,233, 80, 38,150, 38,254,219,226,179, 92, 32, 85,241,251, 45, 0,228,111,120, 55,131,255, 27,226,133,214, -179,166, 88, 38,160, 58,189,205,176, 60,123,246, 76, 9,224,114,217, 86,249,255,110, 2,232,253, 15,138, 55, 57,128, 33,111,139, -175, 38,209,100,132, 17,255, 54, 48,198, 40, 48,194, 8, 35,140, 48,194, 8, 35,140,120,187, 32, 0,186, 85, 83,179, 49,216,250, - 35,132,116,171, 71,205,233,172,145,211,200,105,228, 52,114, 26, 57,141,156, 70,206,127, 23,231,191, 6,229, 19, 62,254, 29, 27, -128,110, 70, 78, 35,167,145,211,200,105,228, 52,114, 26, 57,141,156,255,182,205,216, 68,104,132, 17, 70, 24, 97,132, 17, 70, 24, -241,150, 97,176,192,146, 57,120,122,218, 54,246,221, 98,213,200, 39,202,170,145, 79,148,109, 99,223, 45, 50, 7, 79,207,127, 99, -164, 17, 66, 36,132,144,225, 2,129,224,140,163,163, 99, 1, 33,228,203,255,209,251, 52, 35,132, 12, 36,132, 44, 34,132,244, 35, -132,152,188, 77,254, 46,132,240,135, 18, 50, 97, 20, 33, 73,163, 8, 73, 26, 74,200,132, 46,132,252,207, 45,155,177,112,138, 83, -224,197,147, 35, 78, 44,156,226, 20, 88,229,241, 25, 78,214,215,206, 12, 94, 29, 54,177,129,213, 91, 74, 55, 83,123,123,251, 13, - 14, 14, 14,207,236,237,237, 19,237,237,237, 55, 19, 66,204,141,217,157, 17, 70, 24, 97,196,255, 31,248,101, 25,114, 16,128, 63, - 1,116,161,148, 70, 84, 62,201,202,165,229,167,158, 30,205,103, 46,254,102, 30,177,181,177,148,104, 52, 58,117,114, 74,186,215, -130,197, 97,251,172, 92, 90,174,200, 73,140,222, 84,143, 66,128,240,120,188, 33, 34,145, 40, 4, 64,185, 80,187,167, 84, 42,143, -233,116,186,221,134,142, 10,114,112,112,136,228,241,120,141,235,242,223, 58,157, 46,233,249,243,231, 29,235, 89,120, 13,114,118, -118,222, 28, 20, 20,100, 18, 16, 16, 0,161, 80,136,249,243,231, 79, 7,176,210, 80, 14, 43, 43, 87, 83,181, 72, 60,149, 47, 20, -118,167, 26, 85, 11, 10, 10, 48,162, 24, 78,171, 60,199, 42,149, 43,114,114, 18, 10, 13, 12,203, 92, 0,163, 81, 58,172,124, 19, -165,116,217,155, 60, 12,163, 91, 19,141, 70, 87,250, 76,176,124,232,204,205,205,255,156, 55,111, 30, 63, 36, 36, 4,155, 54,109, -234,184, 97,195,134,177,132,144,115, 0,142, 80, 74, 19,222,244,225,179, 7,198,181,239,216,113,245,168,233,211,121,242,200, 72, -172,222,188,121, 21, 10, 10, 0, 96,109, 93,159, 37,150,197, 64, 27, 27, 65, 8,165,104, 77, 0, 66,128, 59, 89,217,220,113,181, - 90,183,155,214,117, 29,158, 87,185,135,227,213, 97,245, 59,234,202,145,159, 64,191, 18,245,246,236,148,159,112,225, 43, 0, 61, - 43, 31,215, 42,196,163, 40,175, 81,136,156,222, 78, 6,240,195, 27,138, 43, 19, 91, 91,219,168,195,135, 15, 55, 12, 8, 8,224, - 3,192,205,155, 55, 63, 10, 9, 9,233, 74, 8,105, 65, 41, 45,248, 15,137,117, 49,159, 97, 38, 8, 5,130,238, 58,157,174, 37, - 0,240,120,188,104,149, 70,115, 70,203,113,107, 13,157, 83,205, 8, 35,140,248,159, 54, 47,106,212, 34,255,149, 2, 11,192,159, -148, 82, 66, 8,161,168, 52,212, 91,102,239,225,229,237,237, 57,253,228,193,173,141,242,115,242, 20, 63,254,176,237,118, 17,143, - 45,118,247,116, 19,254,184,114,153,197,132, 41,211,166,202,236, 61,174, 21,101,196,199,213, 33, 18,157, 37, 18,201,129,229,203, -151,183, 8, 14, 14, 22,216,217,217, 33, 35, 35, 3,247,238,221,107,113,254,252,249,190, 91,183,110,157, 78, 8,233, 79, 41, 53, -100,225, 43,183,115,219, 54,219, 73,173,172,161,211,104,224,228,211,186, 98,130,188, 71,231, 79, 67,171, 86,131,211,104,224, 25, -210, 23, 0,192,113, 28,188,188,188,120,245, 76,124, 39,111,111,239,237, 75,151, 46,101,149, 74, 37,174, 93,187,134, 11, 23, 46, -112,233,233,233,225,134,114,200,236,221,131, 25,137,116,247,144, 17,159,153,127, 24,210, 84,224,108,111, 11,192, 4,247,159,106, -219,159, 56,125,190,205,193,221,191,141,151,217,187, 15, 41,202,120,112,161,102,145,102,213,142, 16,178,164,124, 70,103, 66,200, -247, 77,154, 52,249, 90,255,156,202,235,218, 81, 74,193,231,243, 51, 10, 11, 11,135,188,120,241,226,118,101, 78,141, 14,252, 29, - 59, 74,245,195, 87, 19,134,243,254,250,235, 47,169,151,151,151, 18, 0,150, 45, 91,134, 69,139, 22, 9, 79,157, 58,245,193,182, -109,219, 62, 32,132,172,162,148, 30,121,147,135,143, 5,102,141,154, 62,157, 39,123,246, 12,178,187,119, 49,162,160,128,255, 29, - 48,171, 46, 2,139, 16,210,212,193, 65,176,111,250,180, 49,158,205, 92,219,177, 44,107, 83,186,184,182,234,133,123, 82,210,237, -129,225,223,109, 8, 37,132, 12,160,148, 62, 50,144,143, 15, 96, 33, 0, 49,128,175, 0,204,207,202,202,114,211,233,116,112,112, -112,152, 79, 8, 57, 4, 96,177,173,173, 45,205,202,202,154, 77, 41,213,214,228, 92, 21, 36,208,175,158,147,102, 61,154,251,141, -194,115,114,178,199,180,158,142, 39,204, 92,201,226, 5,171,211,174, 0, 64, 79, 87, 87,211,102, 30,210,217, 50,179,150, 86, 5, -169,103,103,247,116,117,221,120, 34,193, 48,129, 93, 89,100, 2,128,147,147,211,178,109,219,182, 53,106,219,182,109,197, 51,222, -170, 85, 43,222,178,101,203, 26,124,249,229,151,171, 0,140, 49,144,207,221,214,214,246,148, 78,167, 83,102,103,103,187,151,255, -110,231,219,191,189,181,169,244,221,172,220,194,200, 23,177,135, 34, 12,228, 10, 16,179,236,254, 35,219, 87, 59,182,106, 27,200, -200,108,236,160, 72, 77, 67,145, 70,221,237,194,165,171, 93,198, 78,152, 53,165, 44,141,174, 27,139, 24, 35,140,248, 87,163, 90, - 45,242,223, 44,176, 80,118, 67,175, 65, 36, 18,134, 46,152, 55,155,228,101,231,201,149,133, 69, 42,173, 66, 33,103, 4,156, 34, -234,222,147, 76,134,207,203,155, 54,121,178,233,236,185,243, 66, 1,140, 48, 84, 92,249,250,250, 94, 63,112,224,128,157,149,149, - 21,242,243,243,145,157,157,141,235,215,175,131, 82,138,254,253,251,139,218,182,105,211,250,171,249,243,175, 16, 66, 2, 13, 17, - 89, 82, 43, 27, 44,235, 88,186, 70,236,215,207,178,203,255, 7, 27, 6,133, 84,156,179, 40,165,116, 85, 11,177, 88, 92,177, 80, -112, 61, 16,248,238,187,239,178, 0,240,201, 39,159, 20, 20, 22, 22,134, 1,216, 65, 41, 77, 53, 84, 92,217, 56, 58, 29,251,101, -221, 50, 73, 75, 87, 55,168, 53, 90, 36, 62, 79, 3, 95, 96,129,134, 13, 89,140, 25,209, 93,208,185,189,149,205,146,111, 55,252, - 33,181,117,239, 87,156,245,224, 84,117, 92, 22, 22, 22, 91,119,239,222,141, 61,123,246, 0, 0, 30, 60,120, 0, 55, 55, 55,105, -109, 97,136,137,137,105,214,167, 79,159, 93, 0,222,169,237,220,202, 19,217,139, 68, 34,116,236,216, 17, 94, 94, 94, 56,124,248, -112, 23, 0, 71,222,244, 1,148, 71, 70, 66,118,247, 46, 16, 81,247,202, 10, 33,164,169,159,159,203,213,227,127,108,183,249,227, -248, 61,252,240,195,102, 36, 36,148, 26,107,205,154, 53,195,240, 97,131, 4,209,209,151,189, 7, 14, 28,126,153, 16,210,145, 82, -250,192, 0,218,133, 27, 55,110,156,219,164, 73, 19, 12, 28, 56,112,144,183,183,183,131,153,153, 25,214,175, 95, 15, 71, 71,199, -102, 42,149,234,209,225,195,135,157,158, 63,127,142,201,147, 39, 3,192,244,234,136,186,188,223,229, 43, 81,111,207, 78,205,253, - 70, 65,102,230,136,141, 59,119,227,254,173,173,157,148,234,123, 95,133, 77,108, 48, 82, 78, 69,163, 27,186,153,134, 54,246, 15, -178,126,199,187, 15, 92,252,110,219, 40,116, 23,159,204,159,208, 44,156, 47, 86,108, 93,176, 60, 45,251,181,123, 30,180,143,215, -162, 32,222, 42,230, 12,178, 41, 93,192,149, 9,171,138,140, 72, 71,209,167,115,231,206, 21, 9,247,236,217, 51, 40,149, 74,120, -122,122, 50, 42,149, 42,216,192,120,117,194,214,225,237, 0, 0, 32, 0, 73, 68, 65, 84,127,239,189,247,254, 58,126,252,184,181, -187,187,251, 43, 75,183, 56, 88, 91,188, 31,113, 96,213,228, 37,171,127,247,176,243,234,151,151, 25,119, 48,186, 54,113,213,161, -157,223,217, 19, 7,182,203, 72, 81, 50,132, 22, 47, 0, 46, 27,143,119,253, 10, 98, 98,133, 33, 95, 76,227, 7,191,219,181, 65, -247,158, 3,206, 18, 66,222,165,148,222, 48,150, 49, 70, 24,241,175,118,177,232,255,202,189,240,245,220, 13, 82,213,141,113,148, -243,113,176,179,150,172, 90,190,229, 6, 79,173, 82,153, 88,152,169,205,205,204, 41, 76,205,120,106,141,186,200,217,173, 9,203, - 81,174,202,165, 66, 42, 15,213, 36,132, 16,137, 68,114,224,200,145, 35,118, 2,129, 0, 28,199,193,214,214, 22, 79,159, 62, 69, - 94, 94, 30, 10, 11, 11,145,112,239, 30,154, 56, 55,194, 55,161,179, 29, 39,207, 14, 61, 64, 8,241,215,111, 46,172,106,248,167, - 78,163,174,156, 64,213, 45,238,251,202,103, 77,156,213,224,105, 82, 82, 18,100, 50, 25, 90,180,104, 33,187,116,233,210,197,234, -196, 85,101, 78, 43, 43, 87, 83,190, 76,178,231,231, 95,230, 75,212,154, 24,196, 61,206, 65,243, 38,157, 96,111,237,140,180, 28, - 21,174, 94, 63,130,152,168, 29,112,109,224,140,137, 95,116, 21,135, 47,219,183,219,210,178,169,115,110,238,147,130,170, 56, 11, - 10, 10,100, 77,155, 54,133,179,115,233,186,100, 58,157, 14,113,113,113,208,233,116, 21,251,250,159, 91,246,159,135,182, 32, 17, -163, 62,250, 8,217,217,217,178,170, 56, 5, 60,104,167,141, 29,206,151, 8, 0,161,212, 74, 85, 84, 84, 84,225, 6,170,213,106, -220,185,115, 7,129,129,129, 65,123,247,238,173, 81, 13, 25, 26,159,106,224,251,213,191,253,182,102, 68,126, 62, 3, 0,155, 8, -225,212,148,126,111,232,179,100,103, 39,216,127,242,196, 54, 27, 30, 19, 15, 43,243,239,112,253,122, 34,212,234,210,240,102,103, -103, 98,210,132, 2,176, 2, 83, 28, 62,252,187,181,167,103,199,253,101, 77,100, 92, 45,225, 20,159, 56,113, 2,147, 38, 77, 66, - 92, 92,156, 19,143,199,195,181,107,215, 32,145, 72,176,124,249,114,158,167,167,167,147, 84, 42,197,201,147, 39,145,145,145, 65, -106, 10,231,159,167,254, 92,156,159,112,225,171,231,228,100,143,141, 59,119,227,179, 97, 67,224, 64, 31, 95, 52,119, 37,139,223, -235,221,225,107,202,107, 20, 34, 53,245,177,116,107,209, 27,172, 80,134,137,179, 22,225, 65,204, 81,203,146,194,168, 9, 68,151, -220, 8,101,107,243,189,178,216,241,222,129,186, 53, 59, 47,251,157,113,190,225,226,228, 55,238, 26,128,168,151, 2,171, 25,159, - 48, 58,243,114,183,242,209,163, 71, 72, 72, 72, 0,159,207,135, 92, 46,135, 86,171,173, 50,156, 13, 26, 52, 24,167,213,106,191, - 46, 75,231, 45,142,142,142, 31,111,223,190,221, 90, 95, 96,151, 59, 87, 57,121, 5,185,151,111,196,222,159, 54,110, 96,151,200, -171, 49,201, 22,190,125,147,242,238, 30,202,175, 38,141,196, 18,161,112,255,201,131,191,203, 52, 79,206, 67,234,217, 5, 2,153, - 27,116,154, 84,148,228, 22,163, 48, 33, 29,202, 95,126, 66,171, 9, 95,226,232,161,125, 50,239,150,254,123, 9, 33,110,148, 82, - 85, 61,222, 77,131, 97,228, 52,114, 26, 57,255,153,156, 53,105, 17, 0,126, 0,236,203,190,103,163,180,107,140, 13,128, 23, 40, - 93,182,203, 30,128, 10,128, 80,239,154,202,251,250,231, 86,222,215,255,158, 93,246,221,174,236,243, 6,128,156,122, 11,172,234, -213, 36, 83,160,229, 56,145,208,214, 86,249,241,224,110, 45, 78,159,189,121, 71,106,109,206,127, 47,216, 47,232,122,116,194, 21, - 6,140,134, 16,198,160,126, 29, 60, 30,111,200,170, 85,171, 90,154,153,153,129,227, 56,152,155,155, 35, 43, 43, 11, 42,149, 10, -249,249,249, 80, 22, 22, 64, 93, 88,128,187,201,207,208, 33,168, 11, 6,244,120,207,243,247, 67, 71,134, 0,216, 85, 19,175,147, - 79,235, 10,231,106, 81, 99,235,151, 86, 68,114, 94,133,216,250,174,181, 27, 88,153, 12,221,167,133,190, 73,194,223, 22, 10,133, - 39,250,247,239,223,115,198,140, 25, 76,122,122,250, 73, 66, 72, 7, 74,105,173,205,163,106,145,120,234,248,169, 33,150,150, 50, -138,189,103,142,160,115,235, 97, 48, 17,242,144, 93,160, 6, 33,192,189,216, 3, 32,196, 10, 81, 15,210,209,169,149, 25,222,123, -223, 83,118,104,223,189, 25,120,217,255,231,181,164,201,205,205, 69,102,102, 38, 52, 26, 13, 52, 26, 13, 6, 14, 26,132,109, 91, -183,162,184,184, 24,114,185, 28, 42,149, 10, 58,157, 14, 12,195,224,204,177,189, 72,126,114, 15,237, 3, 3, 81,157,245,186,229, - 54, 21, 16, 66,174,222,191,127, 31,247,238,221, 67, 74, 74, 10,196, 98, 49, 28, 28, 28,176,104,209, 34, 40,149,165,107,136, 13, - 26, 52, 40, 8, 64,244,155,190, 72, 9,192,134, 39, 90,237, 87, 61, 15, 30,180,187,116,240, 32,119,229,200,145, 20,113, 81,209, -122, 67,174,101, 89, 12, 92,246,253, 23,205,165, 82, 41, 82,146, 86,193,195,131,197,244, 47,173, 17,246,221, 11, 0,192,228, 73, - 13,209,198,223, 6, 5,121,251, 96, 99, 55, 23,107,214, 76,113, 29, 61,122,197, 71, 0,182,212, 66,253,213,145, 35, 71, 6,184, -185,185, 53,184,125,251, 54, 17, 10,133,144, 72, 36,144, 72, 36, 16,139,197,200,204,204,196,211,167, 79,233,178,101,203, 82, 81, -218,132, 88, 45,202,154, 1,123, 78,235,233,120,226,254,173,173,157, 26,240,158,220, 29, 48,177,227,179,168,171,183, 11, 79,159, -185,244,173, 86, 33, 78,206, 75, 57, 59,187,105,155,219, 54, 19,102, 46,196, 79,203, 22,224,254,181,200, 28,123,231,130,181, 18, -162,220,210,182,123, 21,174, 88,151,133,252, 9,243, 7,107,199,141, 30, 96,113,212,254,242,184,227,124,146,245,252,197,173,229, -120,122, 91, 46,122,167,245, 72,247,102,140,234,252,249,243,146,206,157, 59, 67,161, 80, 84, 56,145,219,183,111,231,180, 90,109, -149,205,206,106,181,250,235,212,212, 84, 71,185, 92,142, 30, 61,122, 76, 94,190,124,185,180,124, 13, 57,157, 78,247,138,115,181, -120,229,182, 83, 83,191, 94,123,225,212,174,239,156, 22,135,126,220,101,196,196, 37, 23, 80,205, 58,143,124,134,153,112,244,224, -102, 7,177,165, 6, 18,171,247,160,200,144,227,254,134,207, 80, 82,160, 64,155,197, 11, 1, 8,161,210, 48, 88,223,123, 32, 4, -214, 78, 88,240,233,199, 78,243,214,111,252, 2,192, 42, 99, 61,222, 8, 35,140,168, 4,123, 66,200, 49, 0, 8, 13, 13,157, 27, - 22, 22, 22, 75, 8, 57, 70, 41, 13, 41,171,208, 29,163,148,134,148,159, 83, 86,102,191,182, 95,126,110,229,253,202,223,231,204, -153,227, 29, 30, 30,190, 52, 48, 48,112,215,229,203,151,159,212, 71, 96, 49,229,138, 81,255,243, 21, 7,139,227, 34, 31, 61,126, - 86,242,126,247,118, 13,142,254, 25,125,115,204,152, 94,239, 14,238,211,233,189, 39,201,153,241,174, 46, 14, 54, 49,177,119,205, - 56,142,139, 52,228,207, 68, 34, 81, 72,215,174, 93,249,185,185,185, 48, 49, 49, 65, 86, 86, 22, 82, 83, 83,161, 86,171,161,200, -207,131, 50, 63, 15,138,188, 92,168,243,115,145,112,243, 58,124, 92,155,137,202, 58,193,215, 38,124,170,116,166,244,157, 44,161, -169, 41, 68,166,166, 32,117,108, 30, 36,132,124,104,105,105,121,149, 16,242, 85, 89, 97, 52, 97,246,236,217, 47, 56,142,195,146, - 37, 75,204,100, 50,217, 94, 66,136,168, 54, 30, 83, 91, 94, 72, 96,171, 22, 76,252,211, 40,116,244, 29, 5,247,166, 31,224,105, -134, 28, 47, 10,213,200,204, 83,163, 77,231, 31,209,216,119, 33, 26,181, 10,195,189,196, 28, 56, 53,112, 99,192, 23,213,184, 40, -115, 70, 70,198, 43,251,187,118,238, 68, 73, 73, 9, 92, 93, 93, 49,108,216, 48,204,158, 61, 27,195,134, 13,131,147,147, 19, 70, - 12,238,131, 5, 11, 22, 32, 51, 51,179,182,160, 42,221,221,221,149, 46, 46, 46, 74, 23, 23, 23,165, 90,173, 70, 81, 81, 17,242, -242,242, 42,199,247,148, 58,191, 29,246,246,115, 28, 29, 29,163,236,237,237, 99,197, 98,241,241, 59,132,196, 43, 27, 55,182,239, -208,183, 47,241, 26, 60,152,151,100, 98, 66, 34, 0,153, 33, 92, 54, 86,130, 94,193, 93,123, 10,243,114, 55, 3, 40, 53,165, 62, - 30, 99,139,191, 34,188,113,233,162, 63, 38, 77,112, 5, 97,196, 32,140, 16, 37,197,231,209, 54, 32,144,181,176, 32, 33,181,164, -245,112, 0,119, 58,116,232,224, 52,113,226, 68, 34, 18,137, 48,121,242,100,245,167,159,126,250,112,216,176, 97, 15,207,157, 59, -167,115,113,113, 65,163, 70,141, 72,163, 70,141, 28, 1,220, 41,187,166, 70,152,185,146,197, 74,245,189,139, 22,110,210, 39, 58, -216,180, 47,210,136, 6, 46, 88,158,150,253,237,218,199, 63, 60,189, 95,210,236,254,181,200,236,135, 49, 71,185,167, 55,254,124, -241,127,236,125,119,124, 21, 69,247,254, 51,187,183,151,244, 94,104, 73, 72, 33, 9, 36,180, 80,165,131,210, 65, 2, 34, 29, 20, -120, 65, 20, 44,244,174,128,136,136, 72,175, 2,130,180,128,210,145, 46,189,132, 26, 74, 32, 36,164,247,126,251,221,221,249,253, - 65, 18, 67, 76,185, 1,253,125, 95,125,115, 62,159,253,220,123,119,247, 62,123,118,118,118,230,153,115,206,156, 73,142, 46,240, - 94,184, 58,230,219,233,171,146,202,125,153,207,159,135, 16,113,248,188, 73,171,209,138,250,246,234,160, 29, 59,122,144,159,189, - 58,104, 7, 60,186,134,212,173,237, 57,100,238,162,149,166, 49,227, 63, 49,109,218,188,133, 22, 20, 20, 32, 63, 63, 31, 43, 87, -174,228, 14, 29, 58,148,196,243,252, 39, 21,141,125, 0,192,108, 54, 99,236,216,177, 42,107,107,107, 36, 36, 36,148, 88, 64, 1, - 32, 37, 35,235,222,165, 27,247, 31, 77, 25, 23,222, 78, 99, 48, 24, 78,156,187,249, 48,208,183,142, 39, 33,180,194, 9, 38, 82, -177,184, 75,211,176, 48,150,210, 92, 16, 81,109, 60,219,246, 13,242, 83,179,145,159,158, 13, 86,172, 2, 7, 25,204,130, 20,182, -141,154,227,201,141, 72,120, 56,185,136,100, 98,113,205, 18, 87, 53, 82, 35,255,163, 82, 25, 23, 41, 77,146,150, 44, 89,178,168, -178,227,165, 62,141,101,126,151, 16,168,178,228,171,244,119, 0, 88,178,100,201, 34, 74,105,207,203,151, 47,239, 2,160,123,157, -251,169,146,109,176,122,227,226,207,166,206,130,141,181,194, 38,172,177,175,235,193,227,231,110, 93,184,124,243, 97, 93, 79, 71, - 39,106, 54,218, 45, 93,190,202,147,104,117,150, 6,121, 55,112,116,116,132,201,100,194,211,167, 79,145,152,152, 8,147,201, 4, - 78,163,129, 33, 55, 23,250,156, 28,240,154, 2, 72,120, 30,186,140,116, 56, 40,229,192, 31, 51, 12,171, 34, 66,229, 18,172,226, - 79,185,181, 53,100, 86,214, 96,196,226,114,221,135, 21, 96, 54,105,222,188,249,158,251,247,239,135,117,238,220,121, 33, 33,196, -134, 82,250, 34, 41, 41,169,211,236,217,179, 13, 46, 46, 46, 24, 59,118,172, 63,128,225, 85,146, 75,169,177, 65, 29, 87,127,248, -121, 15, 71,221, 90, 29,145,171, 49, 35, 35,223,140,244, 92, 19,214,255,208, 18,251, 55, 53,199,197,253,109,113,255, 68, 23,228, -154, 93,161,118,239, 3,202, 27,131, 42,195,188,124,249, 50,214,173, 91,135,117,235,214, 97,237,218,181, 88,181,106, 21,114,114, -114, 16, 28, 28,140,248,248,120, 28, 59,118, 12, 41, 41, 41,112,116,116,196,237,219,183,177,126,253,122, 92,191,126,221,146, 74, -110,209, 57,213,245,149,115, 28, 55, 34,165,111,223,134,105,246,246,129,141, 27, 55,126,103,210,164, 73,222,173, 91,183, 46, 57, -238,229,229, 85, 91,161, 80,164, 18, 66, 54, 17, 66, 66, 43,195, 18,128,198, 78, 78,193, 48, 26, 30, 21, 61, 43, 49, 8,145,163, - 99,151,135,104,221,246, 38, 76,102, 9, 24, 34, 3,195,200,193,113, 89,176,179,115, 7,165, 36,184, 10, 21,103,103,100,100,248, -158, 58,117,138,137,141,141,133, 92, 46, 7,128,184,121,243,230,173,250,246,219,111,163, 28, 28, 28,248,195,135, 15,227,224,193, -131,232,217,179, 39, 59,102,204, 24,223, 90,181,106,173,171,234,190,231,126,159,124,101,231,242, 99,239,137,205,118,161,114, 69, -221,122,208,168,251, 76,104,239,164, 2,128, 99,207,158, 21, 56,215,206, 95,162, 41,184, 27,111,235, 89,248,117, 85, 1,238,148, -206, 21,110, 69, 63,186,186,243,192,241,188,244,180, 28,113,227,134, 65,186,197, 11, 62,151,212,173, 87,127,233,220,169,227, 92, -147,242,229,185, 93, 38, 29,123, 20,113,252,122,225,208,145, 31,112,163, 63,156,168, 63,118,252,183, 3,130, 32, 52,172,104, 6, -161, 32, 8, 72, 73, 73,193,131, 7, 15, 16, 19, 19,131,140,140, 12,100,102,102,162,160,160,160,196,173,168, 44,200, 63,178,106, -235,161, 59, 42,133, 66, 25,214,208,183,246,181,200,168,116,149, 66,161,244,173, 87,219,143,144,249,229,182, 35, 60,207, 55,148, - 43, 21, 0, 8,114,239, 95, 64, 97, 78, 33, 10,115, 11, 81,144, 93, 8,131,137,133,222,192, 64,103,100, 80,167, 93, 87, 20,106, -244, 40,204,202,131,192,243, 33, 53,221, 76,141,212, 72,141, 84,210, 47, 31,158, 54,109,218, 12, 11, 79,183,216,141, 89,150,112, - 77,155, 54,109, 6, 33,228,240,244,233,211,131, 96, 65,204,114,121, 82,101,154,134,204,204, 39,133,214, 78,129,253, 39,127, 49, -231,216,174,205,171,157,140, 70, 93,188,163,157,154,183, 82,202,236,198,140,253, 10, 5,133, 57,253, 10,179, 45,159,245,148,147, -147,131,231,207,159, 67,161, 80, 64, 34, 22,131,215,233,192,235, 52,208,229,100,129, 49, 25, 32,225,121,216, 43, 21,168,227,238, -138,186, 46,174, 22, 97, 62, 61,115,178, 36,160,189,180, 91,240,155,230, 13, 32, 85,169, 33,181, 82,227, 63,135,207, 1, 0, 36, - 18, 9, 48,123,161, 37, 15,209,209,195,195,227,215,157, 59,119, 74, 50, 50, 50,112,251,246,237, 59,148,210, 60, 66,136, 21, 0, -225,225,195,135,167,238,223,191,223,211,215,215, 23, 0,124,170,194,203,207,100,120, 51, 71,145,144, 26,135,216,196, 72,216,219, -120, 65,172,244, 67,122,174, 9, 50,133, 23,204,134, 63,188,140,250,252, 23,208,153, 44,155,232,104, 50,153, 96, 50,153, 96, 54, -155, 97, 48, 24, 48,116,232, 80, 92,186,124, 25, 63, 31, 60,141,231,207,158,192,191,158, 43,134, 13, 27,138,208,208, 80,220,184, - 81,121,252,240,136,198,196, 60,243, 45,136,150,191,195, 64,170,118, 48,180,152,122,226,154, 37, 36,171,178,209, 70,169,242,252, -182,103,207,158,245,159,104, 52,120,240,232, 17, 58,207,155, 7, 0, 56,114,228, 72,201, 57, 70,163, 17, 83,166, 76,145, 70, 69, - 69,141,190,121,243,230,104, 66,200,114, 74,105,249, 65,228, 20, 56,114,228, 10,198,141,139, 66, 70,198,203, 56,236,221,187,254, -224,163,177,207, 77,120,187,199, 75,207,149,173,173, 45,150, 47, 15,182,168, 60,121,158,199,134, 13, 27, 74,220,130, 0, 32, 18, -137, 90, 79,153, 50,165,127,121,231,215,175, 95, 95, 82, 21,230,148,112, 79,249,237, 23,138, 9, 54,245,235, 6, 89, 59, 54, 66, -150, 57, 50, 56, 50, 41,229,163, 41,225,158, 43,150,239, 77,212, 43,136,225, 71,194, 39,212, 18,201,245,219, 44,209,241,217,177, -149, 70,219,186, 35,183,165,102,228,207,156,248,193,251, 14,214,182,206,154, 77,171, 22,219, 49, 44, 67,127,189,105,202, 13,242, -118,176,237,211,226,251,194,113,147,103, 71, 26,185,132,137, 72,248,245, 73,101,169, 42,120,158, 71,114,114, 50, 50, 50, 50, 16, - 31, 31,143,204,204,204,162,119, 63,243, 79, 51, 81,171,217, 16, 66, 23, 31,143, 23, 7, 54,161,238,208,161,104,182,112, 1,120, - 65, 4,157,150,199,242, 86,157,144,147,167,131, 65, 32,112,111,210, 10, 31, 28,253, 29, 12,229,129,245,171,107,122,144, 26,169, -145,255, 93,242, 84, 33, 23, 41, 75,132, 22, 47, 94,220,243,175,190,126,105,146,181,120,241,226, 7,139, 23, 47,126,163,107, 85, -153,166, 1, 0,242, 51,162, 98, 28,234, 52, 74,214,232, 10,149,206, 46,142, 70,181, 92, 38,228,229,107,216,200,123,119, 76,133, - 41, 79, 31, 87,227,122, 15,239,223,191, 31,156,156,156,140,248, 23, 47,192,233, 52, 96, 12, 70, 80,189, 22,157,219,180,130, 28, -128,156, 33,144, 8, 38,136, 88, 41, 10, 10,243, 1,224, 97,149,157,162,217,252, 39, 75, 22, 33, 4, 82, 43, 43, 72, 85, 42, 72, -213, 86,175, 88,180, 44,177,208,200,100,178,157,123,247,238,117,243,240,240,192,130, 5, 11,224,233,233, 25,208,176, 97, 67,109, -219,182,109, 21, 46, 46, 46, 8, 12, 12, 68,171, 86,173,112,236,216, 49, 0,168, 50, 39,148,153,147,223,125, 28,135,214,153,217, -151,241,251,185,181, 48,234, 12,104,220,110, 45, 76,162,186,112, 10,154, 15,225,233, 14,104, 83,127,121,105, 45,112,237,133,196, -248, 56, 16, 86,250,160,154,149, 3,119,239,222,197,174, 95,206,195,173, 78, 3,196, 71, 63,194,163,179,167,112,201,201, 1,117, - 3,131, 96, 54,155, 43,189,119, 51, 15,209,151,171, 75,210, 52,200,178,179,179,101,246,246,246,134,226,178,115,115,115,123, 19, -146,245,254,103,159,125,134, 92,177, 24,232,209, 3,146,152, 24,152, 76, 38,180,108,217, 18, 77,155, 54, 5, 0,180,108,217, 18, - 34,145, 8,141, 26, 53,130,187,187, 59, 86,175, 94,253, 62, 42,152,165,199, 16,220,230,184,172, 0,111,111,239, 18,130,181,109, -123, 6, 34,111,118, 1,129, 20, 43, 87,253,145,149,161,118,237,218, 72, 77,137, 1, 33,244,126, 21, 58, 46,116,117,117,157,237, -230,230,230,253,237,183,223,178,114,185, 28,227,199,143,247, 42, 44, 44,172, 91,100, 50,198,244,233,211, 95, 90,165,230,206,197, -188,121,243, 96, 48, 24,180, 21,129,109,255,174,145,123,122,182, 48,218,197,213,163, 95, 7,199,186, 13, 59,118,235, 12, 47,223, -142,232,216, 45, 30, 0, 22,217,139,226, 6,126, 51, 43,248,128, 99, 45,251, 45, 39,143,255, 54,183, 77,187,142, 51,167,141,181, -251,114,201,250,156, 42, 99, 26,243, 94,252, 88,240, 88, 58,232,187, 31,214,109,255,110,206,244,143,229,241, 25,198,156,164, 28, - 90,168,150,137,212, 62, 46, 68,253,209, 23, 11,159, 39, 39,199,124,138,132,227, 85,206,156, 20, 4, 1, 49, 49, 49, 37, 49,123, -122,189, 30, 26,141, 6, 9, 9, 9, 37, 46, 66,157,202,250,237,137, 35,123,133,104,116, 58,237,181,123,209,241,179, 38, 13,105, -169,209,233,180,209,177,241, 79, 40,253,190, 92, 22,198, 48,204, 61,109,129,182,179, 54, 87,143,140,219,143,225,217,169, 14,204, - 28,129,145,227,145,145, 85, 0, 3, 7,240,140, 24, 65, 3,135,129, 39, 34,100, 38, 39,129, 97,217, 59, 53,221, 76,141,212,200, -255,172, 84,153,166,129, 16,114,184,101,203,150, 63,151,182, 50, 21,127, 7, 96, 0, 80, 89,200, 78, 70,105, 18, 85,236, 54,172, -232, 58,101,112, 95,155, 96, 85,234,238, 33,132,144,144,134,117,220,191,153,251,190,167,192,113,254,233,153,105,156, 72, 36, 19, -215,178,209,165, 84,231, 98, 6,131,225,240,169, 83,167,250,118,233,210, 69, 22,125,239, 14,140,121,121, 48,230,229, 66, 44,112, -176, 87, 52, 5, 99, 50,128, 24,141,240, 8, 16,160, 47, 80,224,252,165,251,102,131,193,112,216, 82,130,197,176,236,171,113, 87, -106, 53,100, 86,214,144,169,213,101, 93,136,164, 10, 22,173,236,221,187,119,167, 22, 45, 90,128, 82,138, 13, 27, 54,192,100, 50, - 73, 77, 38, 19,140, 70, 35, 76, 38, 19,242,243,243,177,125,251,118,172, 89,179,230, 18,128,173, 85,118, 98,156,241,212,137,223, -206, 52, 31, 53,164,167,248,232,225,229,224,140, 60,116,196, 19, 26,141, 25,133, 70, 37,120,135,161, 64,218, 17,176, 34, 57, 90, - 54,242,194, 47,251, 34, 76,224, 12,167, 45, 33, 85,165, 69,175,215, 35, 33, 62, 14,137,207,158, 64,157,159, 10, 39,107, 37,180, - 49, 79, 16, 58,108, 56,140, 70, 99,181, 43, 72,173, 90,181, 32, 8, 2, 58,116,232, 80, 18, 52,253,186, 36, 43, 43, 43, 11,135, - 14, 29, 66,139, 22, 45,208,174, 93, 59, 36, 37, 37, 33, 38, 38, 6, 61,122,244, 40, 57,231,206,157, 59,136,140,140,132,143, 79, -229, 70,193,204,108,243,209,196,132,219,225,125,250,244,145, 92,189,122, 21,148, 82,248,250, 90,195,218, 74, 5,194,200,208,160, -129, 51,128,151,220,191,125,251,246,200,207,143,225,114,114,232,209, 42,202,114, 39, 33,228,160,209,104,124,250,214, 91,111,185, - 63,123,246, 12,147, 39, 79, 22,237,222,189,187,216,100,140,105,211, 94,157, 36,161,211, 85,236,154,247,111, 24,240,185, 23,103, -215, 78,174,168, 91,207,218,177, 17,188,124, 59, 2, 0,186,244, 28, 5,175,250,181,145,159,121,183,158, 94, 23,215, 79, 34,202, -177,187,187, 50, 41, 74,209, 35,120,164, 62,253, 92, 52, 0, 75, 18,247, 82, 93,244,238,180,120,241,208, 61, 7,127, 61, 54,182, -123,207,222, 98, 51,207,113,193,117,196,182,123, 15, 28, 73, 79,122, 17,255, 61,226,143,223,255,195,222, 87,169,213,142,207,207, -207,135, 74,165,194,253,251,247, 13, 61,122,244,144, 49, 12,131,167, 79,159,150, 16, 44,103, 71,251,192,214,205,130, 3,190,252, -110,251, 9,149, 76, 38,235,214,190,105,131,168,232, 23,137,148,146,184,138,112,141,102,243,111,247,110,223,233,224,228, 94,159, -141, 57,119, 21, 14,109,187,195, 96, 96,160, 51, 10, 48,112, 0,199, 74,224, 22, 26, 6, 91,159, 6,160, 0,110, 92,189,100, 54, -152,205, 39,106,250,152, 26,169,145,255,105, 43, 22,173,140, 28, 21,125,207, 6, 16,183,120,241,226,204, 82,214,165, 12, 0,119, - 0,132, 20,157,151, 81,230,127, 25,120, 57, 27,176, 89, 41,156,140, 82, 68,171,244,119, 99,153,115, 94,107,224, 87,101,154, 6, - 0,112,116,116,116,110,220,184,169,207,198,205,123, 64, 41,197,227,200,101,200, 73,127,132,217,139,174,248,120,122,122,182, 75, - 76, 76, 60,111,201,197,120,158,223,189,101,203,150, 79,195,154, 52,110, 92,207,211, 19,119,226, 98, 33,161, 60, 36, 60, 15,198, -100,128,136, 55,194, 51,152, 7, 67,212, 72, 78,206,195,146,157,123,238,243, 60,191,187, 42,220,128,238,189,177, 32, 49, 15,132, - 16,124,219, 50, 24, 82, 43, 53, 36, 42, 53,254,243,235,153, 18, 82,117,120,193,116, 72,213,106,248,132, 85,157,192,157, 82,170, -181,178,178,186,121,239,222,189,102,193,193,193,248,244,211, 79, 17, 23, 23, 7, 65, 16,144,150,150,166, 79, 73, 73, 73,202,200, -200,136, 3,112, 0,192, 70, 75, 50,133, 75, 12,250, 21,135,247,111,155,216,178, 77, 59,199, 62,253,214,224,224,190, 41,200,205, -203,135,150, 83, 64,163,231,160, 49,176,176,119,104,136,176, 70,141,144,156,148,142, 7, 87, 79, 20,138, 12,218,101,213,177, 94, - 49, 12,131, 59,119,238,192,219,221, 10, 79,126, 63, 15, 71,165, 24, 33,238,174,112,111,221, 6, 49, 49, 49, 85, 98,136, 89,112, -239,191,255,126, 73, 38,247,174, 93,187,198, 14, 29, 58,212,109,202,148, 41,216,188,121, 51, 46, 93,186,244,167,192,235,118,237, -218,225,194,133, 11,243, 1,204,173,202,136,103, 52, 26, 17, 16, 16,128, 27, 55,110,224,212,169, 83,232,216,177, 35,218,181,107, -135,187,119,239,226,228,201,147,136,140,140, 4, 33, 4, 14, 14, 14, 48,191, 36,205,230,138,192, 76, 38,236,253,122,233,150, 25, -223,125,183, 38,104,200,144, 33,216,191,255,103,140, 26,233, 15,194,200, 64,136, 12,189,123,249, 99,193,194, 27, 8, 11,107, 15, - 71, 71, 49,190, 91,254,203,115,157,142,223,110, 65, 81,126,121,242,228, 73,119,189, 94,143,220,220, 92,170, 86,171, 73, 86,214, -203, 25,170,229, 89,176,180, 90,173,188, 34,160,123,183, 30, 46,203, 45,160, 57,180, 48,178, 95, 54, 23,217,176, 99,183, 4,116, -233, 57, 18,191, 29,222,138, 51, 39, 78,193, 94, 20, 23, 11, 85,193,177,204,216,204,252, 20,141,239,186, 6, 77,198,176,137,154, - 19,235, 38,245,177, 99,221,220,132,189,211,214,228,229, 86,242,188, 41, 33,132,100, 71,237,248,245, 0, 69,239, 86, 45,195,234, - 7,215,118,147,230,100,166,211,125,191, 28,187,111,138,221,127,168,152, 88, 85,181, 42, 2,165,116,193,180,105,211,230, 20,125, -255,113,214,172, 89, 99,150, 44, 89,226,148,154,154, 90, 18,131,149,158,153,125,166, 85,143,143,248,172,220, 60,227,150,239,190, - 24,160,144,203,164,179,150,108, 57,103,102,113,181, 34, 92, 78, 16, 86, 15,156, 60,251,227,232,199,145, 30,117, 21, 82,252,242, -197, 92,220, 57,121, 22,102, 70,130,113,167,174,193, 96,226,145,155,153,133,211,163, 39, 64,237, 98,135, 53,231,246,167, 9,130, -176,182,166,139,169,145, 26,249,223,149, 74,184, 72,121, 49, 46,105, 22,156,119,195, 2,156,191, 69, 44,154, 82,151,153,153,153, -126,225,194, 53,156, 59,252, 37,206, 31,254, 18, 15, 34,239, 32, 57,201,136,164, 52, 61,172,173,173,175, 84,194, 68, 59,151,237, - 20,180, 90,109,255, 89,179,231,164,202, 21, 74,188,213,169, 19, 92,157,156,161,148,136,193,114, 2, 88, 34, 70, 97,134, 45,158, -220,213, 98,234,150, 29,233,133, 90,109,255,178,157, 67, 89,204, 82,251, 65, 8,129,204,218, 10, 82,181, 21,100, 86,214,175,184, - 11,229,214,214,144, 91, 89, 67, 36,149,150, 23, 12,255, 39,204,194,194,194,119, 7, 12, 24,144,147,151,151,135, 49, 99,198,224, -252,249,243,145, 39, 78,156,176,190,115,231,142, 34, 61, 61,189, 62,165,180, 43,165,116,125, 69,228,170, 44,102,118,246,179, 2, -202, 25, 6, 45,158,243,137, 78,207, 57, 32,124,248,110,168,152, 4,112,188, 0, 10,192,221, 94,138,214,157, 23, 34,221,216, 10, -187,215,125,165, 21, 76,250, 33,165,115, 96,149,197,164,148, 82, 7, 7,135, 87,238,133, 97, 24,156, 59,119, 14,225, 3,222, 69, -183,126,125,225, 84,207, 27,206,157,187,163,219,152,113, 88,191,126, 61, 24,134,129,189,189,253, 43, 22,141,210,152, 63, 70, 82, -241,206,187,148,236,188, 75,201,214, 91, 84, 4, 96,216,142, 29, 59,190, 14, 9, 9, 57,123,233,210,165,101, 0, 6,149, 46,239, - 82,186,204, 43,109,189,170,224, 25,205,252,248,227,143,117,209,209,209, 80,169, 84,224, 56, 14,151, 46, 93,194,154, 53,107,240, -237,183,223, 34, 50, 50, 18, 14, 14, 14,240,241,241,129,193, 96,192,141, 27, 55,116, 0,102, 86, 82,151,132,140, 12,238,221,149, - 43,151,100,245,236,217, 22, 91,182,172,130,171,107, 43,136, 69,174, 16,137,157,160, 82, 7, 96,211,198,175,241,206, 59,141,241, -235, 47,123,178, 51,179,184,119,203,102, 93,175, 64, 79,253,181,107,215,176,110,221, 58, 12, 24, 48, 32, 41, 60, 60,156,207,203, -203, 43,177, 96, 21,175,146, 62,175, 40,134,204, 96, 48,200, 42,194, 28,243,197,189,164,207,191,188,191, 32, 45, 53,169,197,249, -179, 87,222, 63,115,226, 20,158, 71,159,193,153, 19,167,240,251,153,203,211,210, 82,147, 90, 52,110,238, 39,233, 63,102,226,231, -219, 34,246,179,106,107, 55,108,139,216,207, 14,254,232,147,175,154,118,235, 56,179,170, 58, 95,244, 28,105, 97,122,218,244, 69, -203,126, 40,228, 76,122,230,155,239, 87, 39,235, 50, 82,102,162,120,106,101, 5,214,171,210,152, 90,173,118,189, 78,167,115,215, -233,116,238,122,189,126,102, 92, 92,220, 91,159,126,250,105, 6,207,243, 37, 22,210,244, 7,191, 92,121,248,251,214, 69,206,142, -118,138, 86,205,130,252,151,175,223,119, 46, 62, 33,237,167,226, 28, 88, 21, 60, 35,125,161, 78,255,110,223,254, 67, 53,185, 57, - 6,180,252,100, 26, 4,185, 26, 6, 30, 48, 83, 22, 28, 17,225,222,151,203,161,176,183,194,206,216, 91,218, 60,179,233,221,210, - 57,176,170,184,247, 55, 25, 33,215, 96,214, 96,214, 96,254, 23, 98,254,219, 68, 84,204, 24, 75,127,150, 21, 15, 15,143,183,250, -244,238,140,246, 61,103,129, 82,138, 71,183,150, 34, 39,227, 49, 60, 92,101,136,137,207,111, 9,224,188,165, 23,164,148,198, 19, - 66, 90,124, 60,115, 86, 68,120,215, 78, 13,130,235,213,147,213,173, 91, 7, 42,103,103,100,102,102,224,226,213, 40,243, 87,187, -246,222, 47, 34, 87,150, 44,149, 3, 65, 16, 94, 6,175, 3,232,244,241, 84, 16,150, 5,138,210, 49, 20,119,136,245,154,181, 2, - 17,137,192, 83, 1, 6,131,129, 90,160,103, 34, 33,228,221, 33, 67,134,156, 62,124,248, 48,211,173, 91,183,208, 3, 7, 14, 8, -111, 82,216,133,105, 79,206,170, 93,252,122,126, 53,125,236,238, 22, 29,251, 90,251, 6, 53,149, 52,173,203,194,100, 38, 72, 78, -122,129,195, 17,215, 77, 81,215, 78,228, 83, 78, 63, 72,147, 81,249, 82, 57, 38,147, 41,222,197,197,197,101,254,252,249,224, 56, - 14, 28,199,129,231,121,100,102,102,226,202,149, 43,104,216, 44, 12, 13, 70,142, 70, 70, 70, 6, 86,174, 92, 9, 79, 79, 79, 44, - 90,180, 8,217,217,217,224, 56, 46,222,194,103,197, 3, 56, 81,180,189, 66,100,139, 71, 25, 85,185, 7,125,124,124,164,122,189, - 62,212,205,205, 77, 68, 8, 89, 97, 52, 26, 71, 78,159, 62,221,117,209,162, 69,240,247,247, 71,102,102, 38, 84, 42, 21,124,125, -125,145,145,145,129,235,215,175,243, 90,173,118, 29,128, 5,148,210,140, 42,244,123, 74, 8,105, 49,105,210,127, 34,190, 94, 50, -214, 87,111,104, 47,181,183,111, 3, 74, 57,100,100,196,161, 32,255,146,105,225,130,173,207,210,210,205,253, 41,165,209, 22, 62, -166,185, 19, 39, 78, 4,138,150,202,137,137,137,185,221,160, 65, 3,223,138, 44, 88,150,200,242,189,137,122, 0,187,190,153,220, -106,114,126,230, 93, 95,123, 81, 92,108,139, 96, 97,229,242,189,137,250,249,147,109,191,204,140, 59,255, 36, 69,115, 98,221,182, -136,253,236,240,126,239,242,158,234,232,105,114,103,186,175, 99,175, 42,159, 15, 13, 13, 13,173, 69, 72,182, 87,122,214,227,155, -163,198,140, 29,104, 35,209, 29, 13,241,204,242, 97,106, 55,150, 71, 70, 70,198, 90,186,166,103, 25,220, 39,132,144,183,166, 79, -159,126,130, 82,250, 74,236, 65,122,102,246,153,150, 61, 39,210,220,220,188,219,233, 81,191,220,179, 0,235, 58, 33,164, 83,112, -195,198,251,191, 94,180,196,165,253,199,159,138,158,156, 61, 7,240,102,188, 56,127, 14,188,204, 40, 44,191,252, 91, 90,158,201, -212,175, 38,139,123,141,212, 72,141,245,170, 50, 46,242,143, 36, 88, 85, 73, 98, 98,226,121, 31,111,207,147, 79,158,188,213,181, -182,167, 19, 0, 32, 38, 54, 25, 73,105,134,147,150,186, 7,203, 33, 89, 77,119, 28, 58, 58, 72, 38,147,245, 36, 69,169, 24,232, -107, 44,246,204,113, 92, 98,189,122,245, 42, 56, 90,126,170, 38,158,231,211, 44,212,243, 28, 33,100,168,143,143,207,146, 23, 47, - 94, 68, 80, 74, 53,111, 90,224,133,105, 79,206,218,219,251,120, 95, 62,181,255,147,171,231, 14,119,166,156,177, 33, 0, 16,145, -180, 90,139, 61, 23, 22, 22,142, 29, 63,126,252,122,177, 88, 92, 27, 69, 49,101,197, 51,190,120,158,103, 77, 38,147,156,231,121, - 22, 0, 97, 24,134, 19,139,197,250,136,136, 8,142,227,184,120,131,193, 48,246, 77, 95, 0, 75,229,232,209,163,117,237,236,236, -186, 18, 66, 6, 80, 74, 3, 10, 10, 10, 12,179,102,205,186, 18, 17, 17,145, 87,167, 78,157,183,123,244,232, 65,236,237,237,113, -227,198, 13,154,149,149,181, 15,192, 76, 74,105, 76, 53,244,137, 33,132,132,140, 29,183,246, 61,123,251,245, 61, 40, 69, 8, 40, - 8, 97,112, 47, 47, 79, 56,170,213,242, 63, 21, 17, 69, 75,241,184, 50,150,179,133,247,239,223,223, 10, 64, 92, 94, 12, 86,181, - 68, 89,248,171, 94, 23,247, 46, 81,107, 15, 44,255, 62, 81, 15, 0,115,191,203,205, 3,176,105, 82, 63,123,225,225,173, 77, 75, - 61,172,163,191,248,254, 64,246, 22, 75,224, 26, 55,110,236,205, 48,204, 32, 0,193,206,178,220,250, 78,210, 60,158, 16,218,129, - 16,198, 17,192,221,192,192,192,195, 0, 18, 95,243, 57, 63, 1, 80,167,236,254,244, 7,191, 92, 1,112,165,154, 88,215, 9, 33, -245, 39,127, 54,101,130, 84, 44,238, 2,158,111,180,240,224, 94, 90,179,216,115,141,212, 72,141,252,235, 45, 88,150,200,179,152, -196,110, 0,224,231,231, 71,163,163,163,223,152, 97, 22, 17,168,159, 81, 69,150,246,170, 36, 51, 51,179,233,223,204,168,119, 1, -216,245, 87, 98, 22, 17,168, 5, 69,219,235,234,117, 15, 64,216,255,245,104,163,200, 87, 62,191,162,115,186,118,237,250,194,100, - 50,157, 42,234,232,109, 1,100,155,205,230,227, 70,163, 49,141, 16,210,116,249,242,229,197,153,234, 23, 82, 74,111,190,166, 30, - 2,128,157, 69,219, 95,125,143, 59,221,221,221,167, 56, 56, 56,248,232,245,122,169, 94,175,151,148,230,254, 10,133, 34,195, 82, - 44, 91, 43,242,163, 68,148,227, 96,107, 69,254, 68,160,236, 61,176, 95,167,185,239,111,239,129,253,150,226, 69, 70, 70,198,132, -134,134,238, 96, 24,166, 30,165,212, 5,160, 54,148, 34,131, 82,154, 41, 18,137,146,162,162,162,146,254, 91, 26,154, 34, 2,181, -172,104,171,145, 26,169,145, 26,169, 33, 88,101,229,201,147, 39,164,166,216,106,164, 52,201,170,236,120, 92, 92,156, 1,192,229, -162,173,236,127,111, 2,232,245,223,126,143,201,201,201,141,255, 10,156, 49, 95,220, 75, 2,240, 73,211,114,150, 92,158,187, 50, -187, 0,192,231, 29,122, 87, 15,243,246,237,219,241, 0,226,107,106, 98,141,212, 72,141,212,200,127,151, 48, 53, 69, 80, 35, 53, - 82, 35, 53, 82, 35, 53, 82, 35, 53,242,215, 10, 1, 80,238, 76,128,234,172,148,253, 58,179, 9,170,194,175,193,172,193,172,193, -172,193,172,193,172,193,172,193,252,247, 97,254,207, 72,241, 44,187,191, 99, 3,208,185, 6,179, 6,179, 6,179, 6,179, 6,179, - 6,179, 6,179, 6,243,127,109, 19,213, 80,204, 26,169,145, 26,249, 95,149,125,251,246, 89,180,232,231,123, 95,108,234,169, 86, -219,205, 46,204,207, 91,242,243,178, 81, 7,138,247, 15, 24, 48,128,175, 41,197, 26,169,145, 26, 41, 79, 42, 36, 88,222,222,181, - 2, 25, 94,104, 77, 41,195, 82,134,154, 73,190,110,247,179,236,236, 87,210, 7,212,174, 93,219, 86,204,160, 23,161, 84, 69,136, -192, 11, 44,115, 41, 38, 38, 33,202,210,139, 19, 66,164,118,118,118, 19, 37, 18, 73,103,163,209,232,201, 48, 76,162,193, 96, 56, -165,213,106, 87,149, 77, 56,248,127, 41,254,254,254,131,207,157, 59,103,219,166, 77, 27,131, 66,161,224,116, 58,157,232,248,241, -227,178,119,222,121, 39,247,233,211,167,175, 53,195,208,195,195,163,227,166, 77,155,188,186,117,235,134,250,245,235,107, 6, 13, - 26, 36,105,217,178,165,100,204,152, 49,207,147,146,146,206, 84, 7,139, 16, 18, 72, 8,217, 78, 8, 97, 5, 65, 24, 86, 52,195, -240, 47, 23, 66, 8, 3,224, 67, 0,125, 1,120, 3,136, 1,112, 16,192, 6, 75,178,217,151,131,247, 46,128,238, 0, 66,138,118, -221, 1,112,148, 82,186,255, 13,116,124, 23, 64,119, 66, 72,104,145,133,246,246, 95,133, 41, 22,139, 67, 1,192,108, 54,223,254, -111,209,147, 16, 50, 82,161, 80,124, 0, 0, 58,157,110, 35,165,116,107,181,149, 89,223,128, 2, 64,224,210, 71, 0,128,168, 47, - 2, 96,233,239,168,231,213,156, 77, 92,193,181, 48,246, 33,121,131,178,236, 62,100,200,144, 69, 63,253,244,211, 92, 74,233, 47, -127, 71,221,119,117,173,181,234,219,239, 55,184,127, 50,113,244, 18,188, 92,193,161, 82, 9, 34,164,139,148,101,123, 27,121,254, -247, 40, 96, 47, 0,145,189,189,253, 96,169, 84,250,150,209,104,116, 19,137, 68, 41, 70,163,241, 66, 94, 94,222, 46, 74,169,249, -141, 21,124, 68,236, 76, 90,184, 18,225,143,117,216, 40, 3,131, 68,137, 84, 4,208,156,202,254,202,178,236, 50, 15, 15,143, 15, -115,115,115, 11, 25,134,161,228,165, 20, 21,109, 73,178,102, 34, 8, 66, 82,118,118,118,211,215,124, 70,114, 0,243,240,114, 77, -183,239, 41,173, 92,167, 10,244,252,196,221,221,189, 95,126,126,190,150,101, 89, 90, 74, 63, 2, 0, 12,195, 16, 65, 16,210,179, -178,178,134,213,116,237, 21,139,187,187, 59, 35,145, 72,134, 51, 12,179,156,227, 56,175,248,248,248, 28, 0,112,118,118, 14, 73, - 79, 79,175, 89, 11,244,175, 38, 88,165,210,210,183,167,148,158,247,246,174, 21, 56,160,111,255, 69,227,198,142, 39, 44,203,224, -254,131, 7,162,247,135,141,236,106,111,111,239,161, 54, 24, 26,128, 16, 65, 43,151,223, 55,155, 77, 73,123,119,253,100, 21,224, -239,207,243,188,128,117,235,215,190,227,237, 93,107,134, 37, 36,139, 16,226,231,234,234,186,125,218,180,105,174,189,123,247,102, - 93, 93, 93, 17, 23, 23,103,251,243,207, 63,251,255,240,195, 15, 3, 9, 33,195,138,114,241, 84,247, 69,110,235,106,207,116,181, - 82,144, 78, 40,224, 81, 96,198,233, 84, 29, 78, 82, 74,127,127,221, 66,210,106,181, 31,105,181,218,176,102,205,154,209,205,155, - 55,147, 17, 35, 70, 80, 66, 8,209,233,116, 63,226, 53, 83, 56,168, 84,170,213,221,186, 79,122,122,247, 0, 0, 32, 0, 73, 68, - 65, 84,117,243,245,245,245,141,121,246,236, 89,247, 61,123,246, 28, 29, 62,124,184,183, 74,165,138, 6,224, 87, 77,184,173, 89, - 89, 89, 33, 58,157, 14,158,158,158,155, 1, 52,249, 27,200, 21, 1,176,223,222,222, 94,191, 96,193,130,141,237,219,183,247, 72, - 78, 78,230,167, 78,157,218,250,246,237,219,111, 19, 66,250, 90, 74,178, 8, 33,118, 0,214,169,213,106,229,212,169, 83, 47,116, -233,210, 37, 86,173, 86,203,239,222,189, 43,158, 58,117,234,135,132,144,112, 0,227,170,211, 8, 23, 99, 58, 57, 57,217,206,157, - 59,247, 94,171, 86,173,206, 75, 36, 18,201,227,199,143,197,211,166, 77,155,240, 38,152,190,190,190, 86,115,230,204,185, 17, 26, - 26,154, 38,151,203, 37,207,158, 61, 19,207,152, 49, 99, 28,203,178,225,130, 32,188, 22,166,189,189,189,245,140, 25, 51,110,182, -107,215, 46, 67, 38,147, 73,163,162,162, 68,211,167, 79, 31, 87, 29, 61, 29, 28, 28, 58, 56, 56, 56,108, 72, 77, 77, 21, 1,128, -155,155, 91,115, 31, 31,159, 31,138,243,161, 21, 17, 55, 20,145,194, 2,189, 94, 63, 36, 43, 43,235, 79, 9,108, 3,151, 62,194, -231,115,126, 28,252,249,156,151,191,183, 21,237,175,234, 55, 48,194,226,186, 31,232,245,178,141,153,240,217,154,161, 47, 63, 95, -238, 95, 91,164,234,106, 47, 66,171, 67,214, 8, 33,125, 58,118,236, 56,239,204,153, 51,107,219,183,111, 63,117,199,142, 29,206, - 9, 9, 9, 95, 19, 66,106,189,247,222,123, 35, 78,159, 62,189, 56, 35, 35, 99,223, 95, 85,255,165, 18,153,140, 48, 4, 10,185, -210,218,146,243,197, 12,211,243,114,159, 62, 31,108,124,252,184,241, 15,143, 30,121,105,220,220,194, 38, 77,154,228,210,191,127, -127,166, 86,173, 90,120,250,244,169,195,142, 29, 59, 26,108,220,184,177, 31, 33,228, 99, 74,233,139, 55, 33, 87,154, 92, 52, 52, - 24,209,152, 82,216,254, 81, 70,200,149,153, 16,169,122, 68,238, 85, 68,178, 8, 33,223,245,233,211,103,216,193,131, 7,213, 59, -118,236, 80,183,106,213, 10, 46, 46, 46, 32,132,128,231,121, 8,130, 0, 65, 16,138,214,250,244,125,147, 25,228, 43,126,255,253, -247, 15,159, 62,125,138, 49, 99,198,176, 0,102, 85,179,253,153,210,175, 95,191, 30, 17, 17, 17,138,189,123,247, 42,154, 53,107, - 6, 87, 87, 87, 0, 40,209,143, 82, 10, 47, 47,175,127, 93, 39,237,237,237, 77,165, 82, 41, 88,150, 5,165, 20,130, 32,192,108, - 54,195,104, 52, 38, 24, 12,134,126,233,233,233,145,150, 98,185,184,184, 48,114,185,124,132, 66,161,216,204,178, 44, 56,142, 59, -235,227,227,211,145,231,121,200,100,178,179,192, 31,245,231,255, 66,202,114,145,127,141, 5,171,244, 10,214, 12, 47,180, 30, 55, -118, 60, 25, 52,248,189,212,167, 49,207, 5,145, 88, 58,248,248,137, 19,202,192,192, 64,198,176,106, 21,184,140, 12,152, 39, 79, -110,117,234,212, 41,115,248,224,161, 58, 49, 75,182,122,123,213, 83,238,222,245,179,107,196,254,125,173, 1, 68, 85,101,185,114, -117,117,221,126,238,220, 57, 15, 47, 47, 47,228,230,230, 34, 46, 46, 14, 26,141, 6, 3, 7, 14, 20,183,110,221,218, 99,192,128, - 1,219, 9, 33,109, 44,181,100, 17, 66, 92,234,123,138, 14,127, 59,103,160,223, 59, 93, 91,171, 60,106,249,128,166,234,145,240, -236, 81,179,195,231,174, 78,242,181,101,158, 60,205,163, 61, 41,165,105,213, 45,164,204,204,204, 47,250,245,235,183,191, 67,135, - 14, 78, 50,153, 12,238,238,238,164,119,239,222,233,201,201,201,243,223,160, 34,161,104,212,197,151,254, 44,187,140,143,133,226, -105,103,103, 7, 59, 59, 59, 0,240,120,147, 10, 17, 30, 30,206,198,199,199,127, 32, 8, 66,131,210,251,157,157,157,253,121,158, -207,121,241, 34,222, 95,103, 52, 53, 24, 63,113,198,188, 65, 3, 58,219, 94,190,124, 89,232,214,173,155,225,194,133, 11, 31, 2, - 88,103,225,101,214, 53,106,212,232,217,138, 21, 43, 12,209, 49,177,245,238, 63,140,134, 74, 46,225,107,213,170, 37,139,138,138, - 50,204,158, 61, 91,243,253,247,223,175, 3, 16, 94, 13,213,215,189,243,206, 59, 57,179,102,205, 74,127,242, 44,214,237, 78,212, - 19,170,150, 73,204, 46, 46,206,236,205,155, 55,245, 95,127,253,181,176,120,241,226,106, 99, 14, 29, 58, 52,121,234,212,169,177, - 25, 89,185, 30, 57,185, 5, 84,170,213,154, 60, 61, 61, 69,103,207,158, 45, 92,179,102,141, 97,234,212,169,213,198,108,223,190, -125,234,194,133, 11,227, 31, 69,199,184, 71,222,127, 12,181, 76,108,118,117,117,102, 35, 35, 35,181,139, 23, 47, 54, 45, 93,186, -212, 34, 76,149, 74,181,109,207,158, 61,162, 95,126,121,105,180,185,114,229, 10,227,237,237,173, 44,125,142, 78,111, 0, 67,128, -204,204, 76,101,203,150, 45,183, 1,240,172, 8,111,248,240,225,169,213,169, 43,195, 13, 75, 45,182, 90, 21, 19,171,241,227,199, - 87,148,155,107,104, 96, 53, 72, 86,247,238,221,103, 30, 57,114,196,103,199,142, 29,203,119,238,220,105, 4, 0,185, 92,238,248, -243,207, 63, 47, 30, 56,112, 32, 6, 14, 28, 56, 27,192, 95, 70,176,120,202,155, 0, 64, 38,151,201, 30, 61,122, 68, 2, 2, 2, - 42, 77,132,108, 18,132,155, 27, 31, 63,110,250,159,128,128,102,217,130, 80, 95,242,206, 59,133, 83,166, 76,201,204,207,207, 71, - 92, 92, 28, 76, 38, 19, 70,140, 24,193,182,111,223,222,125,224,192,129, 43, 9, 33,239, 82, 74, 77, 22, 88,113,150,121,120,120, -124,152,151,151, 87, 88,108,197,105, 80,207, 74,244, 86, 40, 39,107, 84,223, 44,149,176,156,164,215,100,129,156, 92, 69, 52, 1, - 94,184, 8, 0, 18, 45, 50, 36, 64, 78, 57,109,208,210, 62,125,250, 12, 60,120,240,160, 29, 0,236,219,183, 15, 90,173, 22,117, -234,212,129, 68, 34,129, 88, 44,134, 88, 44, 46,249, 94,157,182,137, 16,242,153, 90,173,238, 94, 88, 88,120,144, 82,186, 18,128, -111,155, 54,109,224,237,237, 13, 0,173,139,206, 25,198,178,236,123, 60,207,111,160,148, 30,172, 4,107, 82,159, 62,125,186, 68, - 68, 68, 88, 21,235,105, 54,155,225,237,237, 13,137, 68, 2,169, 84, 90,162,231,191, 81,164, 82, 41,228,114, 57, 68, 34, 17, 40, -165,197,235,131,158, 51,155,205,147, 0, 60,183,179,179, 99,114,114,114, 44, 29,220,178, 34,145,104,121,169,103,219,144,231,249, -173, 28,199,213, 54,153, 76, 54,255, 13,247, 91,154,139,252,211,159, 29, 83,134, 57,182,127,121,131, 12,203,178, 12,158,199,196, -153, 59,116,232, 52, 60, 62, 62, 94, 29, 22, 22,198,136,197, 98,104,206,156,129,254,198, 13,168,213,106,244,235,215, 79,124,225, -194, 5,107,107,181,245,152,216,231,177, 5, 44,203,128, 82,166,202,152, 6, 59, 59,187,137, 51,102,204,112,245,245,245, 5,199, -113, 37, 25,200, 57,142, 67, 66, 66, 2,212,106, 53,134, 13, 27,230,172, 84, 42, 39, 90, 88,105,234,250,121, 59, 71,158, 59,186, -190,201,148,113,221, 85,126,202,223,160, 74,248, 24,234,125,255, 65,131,228,227,152,214, 55, 76,117,114,245,236,198, 62,238,246, -145,132,144,186,213, 45, 36,189, 94,127,241,254,253,251, 99,206,159, 63, 47, 0,192,217,179,103,233,195,135, 15,199,190,201,168, - 83, 16, 4,228,230,230, 66, 16, 4,182,232,119,241,231,255, 89,101, 8, 15, 15,103, 19, 18, 18,198, 54,104,208,192,239,218,181, -107,248,245,215, 95,113,234,212, 41,156, 56,113, 2, 82,169,180,246,128, 1, 3, 50, 50,178,114,237,114,115,243,228, 41,137,207, -154,255,188, 97,131,123,114,108,236,229,159,126,250,169, 16, 47,221,134,150, 60,171,119,213,106,181, 98,249,242,229, 26, 43, 91, -215, 30, 97, 45,218, 54, 19,203,173, 29, 37, 50,181, 83, 94, 94,190,233,206,157, 59,143,190,249,230, 27, 63,127,127,127,187, 34, - 55,154, 69,152,142,142,142, 54, 51,103,206, 52, 41,173,156,218, 54, 11,107, 17, 44,149, 91,219,139,165, 74,251,214,173, 91,247, -123,244,232, 81,236,220,185,115, 61, 66, 67, 67,157,171,131,233,229,229,101, 53,117,234, 84,131,181,141,125,151,192, 6,129,141, - 91,181,108, 62,168, 73,147, 38,195, 68, 34, 17,159,150,150, 22, 61,101,202, 20,143,118,237,218, 57, 84, 7,211,206,206,206,106, -225,194,133,198,122,222,254,239,246,234,213,179,131, 92,105,107, 47, 85, 88,217,235,116, 58,254,225,195,135, 79, 23, 44, 88,224, - 17, 18, 18,226,104, 9,166, 86,171, 21, 59, 58, 58, 34, 56, 56, 24,129,222,222,200,203,203, 67, 68, 68, 4,182,110,221,138, 77, -155, 54, 97,215,174, 93,104,218,166, 43,172,172,172,144,156,156,140,252,252,124,113,121, 56, 37,110,186,191, 67,214, 55,160,107, -133,137, 67,199,143, 31,159, 84, 9,185,194,248,241,227,147, 38,124,182,102,104,177, 11,177, 50,203, 85,167, 78,157,238, 30, 61, -122,244,217,142, 29, 59, 16, 24, 24,136,110,221,186, 73, 1, 96,226,196,137,210,129, 3, 7, 98,207,158, 61,216,183,111, 95,148, -159,159,223, 37, 66, 72, 31, 75,212, 28, 54,108, 88,155,240,240,240,223,195,195,195,111, 15, 26, 52,104,195,216,177, 99,221, 75, - 31, 79, 73, 78,188,105, 52, 26, 17,210,184,153,114,225,230,107, 67,170,194,123, 8,236,216,240,232,209,214, 37, 15, 30,188,152, - 29, 24,104, 91, 39, 54,214,254,199,101,203, 28,139, 23,207, 54,155,205, 72, 72, 72,128,157,157, 29,134, 12, 25,226, 40,147,201, -134, 89, 80,127,190,235,211,167,207,200,248,248,120,245,198,141, 27,221,110,223,190,237,158,146,146,226,118,250,212, 9,167,207, - 63,157,104,101,163,150, 74,147, 51, 94, 18,212,216,100,168, 30, 61, 71, 27, 74, 97, 91,218,109,248,202,168,204,211,243,195,131, - 7, 15,186,150,106,151, 95, 33, 84,101,191,131,161,140,125, 16,217, 82,183, 15, 73,183, 13, 36,159, 84,162,103,143,189,123,247, -126, 19, 27, 27,219,174,103,207,158,223, 19, 66,234,148,115,142, 83,135, 14, 29, 54, 62,126,252,184, 91,159, 62,125, 14, 16, 66, -186, 86, 56,122,244,244,236,119,240,224, 65,135,226,223,142,142,142,144,203,229,127, 34, 87, 18,137, 4, 12,243,239,203, 60,196, -178, 44, 68, 34, 81,201,115, 16,137, 68, 96, 89,246, 36,195, 48, 9, 12,195,152, 44, 37, 87, 69,228,133,229,121,126,176, 32, 8, -133,132, 16,136,197, 98,200,100,178,158, 82,169, 52, 88, 44, 22,255, 87,220,111,105, 46,242,175, 33, 88, 69, 9, 35,207, 1, 0, - 37, 68,115,247,254,125, 49, 43,149, 14,253,105,231, 78,153, 68, 34,193,139, 23, 47, 16, 21, 21, 5,237,233,211,208, 93,190,140, -180,180, 52, 20, 22, 22,194,197,197, 5,235, 55,111, 86, 25,121, 58,234,241,147, 39, 44,101,254,136, 39,168,104,170,166, 76, 38, -235,220,191,127,255, 10,137, 88,114,114, 50,186,119,239, 46,102, 89,182,115, 57, 21,228, 84,153,135, 65,220,157,200,161,211,251, - 23,186,185, 73,163,128,167, 83,128,130, 72,128, 26, 0,206, 8, 36,221, 3,142,204, 71,157,194, 71,228,196,194,225,174, 30, 74, -209, 33, 82,102, 40,102,193, 52, 85,239,128,128,128, 77, 67,135, 14,101, 0,160, 99,199,142, 36, 32, 32, 96, 3, 33,196,187,146, -138,124,170,138,206,241,106, 78, 78, 14, 6, 14, 28,232,224,227,227,115,106,224,192,129, 14,197,251, 95, 23,179,216,115, 20, 20, - 20,148,165, 80, 40,118, 17, 66,100, 22,188,112, 37,152,241,241,241, 31, 4, 4, 4,212,223,184,113, 35,203,178, 44, 54,110,220, -136,221,187,119,227,226,197,139,200,202,202, 82, 79,153, 50,197,230,240,169,171,199, 47, 93,188,254,235,178, 89,159, 57,244,235, -212,222,219, 46, 47, 35,223,195,195,163, 51, 94,198,100, 89,162,103,247,143, 62,250,232,228,237,135, 49,206,172, 88, 34,145,138, - 69, 10, 39, 71,219, 58,174, 78,118,245, 61, 28,236,234, 91, 73,197,182,249,249,249,207,247,236,217, 83,136,151,241, 89, 22, 97, -206,153, 51,231,206,163,152, 4, 7, 70, 44, 18, 73, 68, 18,169,173,141,218,161,119,207,174, 29, 0, 64,193, 18, 89,126,126,126, -194,182,109,219, 52,213,193,156, 61,123,246,149,148,140, 28,103,137, 92,206,202,100,226,146,178,180,179, 86,187,168,100, 50,133, - 86,171,125,177,105,211,166,188,234, 96, 78,159, 62,253,198,131,232, 23,142,132, 1,203,128,136,237,236,172,156,157,108,173, 92, -157,173,213,174,114, 6,242,252,252,252,184,109,219,182,229, 91,130,105, 50,153,196,233,233,233,120,244,232, 17,106, 53,107,134, - 83,167, 78,161,118,237,218, 24, 56,112, 32,222,123,239, 61, 40, 20, 10,116,108,217, 16, 51,102,204,192,179,103,207,192,113,156, -180,154,117, 9,238,238,238,231, 42, 58, 86, 28, 71, 85, 17,102,160, 23, 41, 33, 87,150, 96,151,119, 94, 89,204,238,221,187,207, - 60,125,250,180,207,246,237,219,123, 15, 27, 54,236,226,246,237,219,209,162, 69, 11, 60,124,248, 16,245,234,213,195,143, 63,254, -136,247,222,123,239,226,202,149, 43,123,223,186,117, 43,196,203,203,107, 70, 85,152,131, 6, 13,154, 16, 26, 26,122, 38, 53, 53, -181,101,118,118,118,112, 68, 68,196,168,126,253,250, 61, 31, 60,120,112,167, 18, 11,150,217,188,243,200,175,251,209,163,119,127, -248, 7, 5,175, 27, 49, 99, 71,195,202, 48, 41,165,244, 1,176, 97,107, 74, 74,198, 78,189, 94, 59, 80, 44, 86, 42,175, 93,179, -223,183,118,173, 99,233,149, 0,146,146,146,208,171, 87, 47,177, 68, 34,105, 91,153,158,132,144,165,125,251,246, 29, 24, 17, 17, - 81, 98,109,186,124,249, 50,238,221,187,135,184,184, 56,228,230,230,162,211,216, 66,140, 95,252, 18,123,252, 98,138,174, 19,169, -170, 50,204,194,194, 66,221,129, 3, 7, 16, 30, 30,142, 15, 63,252, 16, 94, 94, 94, 37, 36,171, 44,185, 58,127,253, 55, 72,131, -179,237,219,108,192,200, 46,191,192, 73,229,137,233, 21,232, 41,233,220,185,243,250,222,189,123,131,231,121,232,245,122, 1, 64, -118,121,188,161, 94,189,122,226, 90,181,106,225,203, 47,191,132,173,173,237, 10, 66, 8, 91, 30,166, 70,163, 49, 28, 61,122, 20, -195,134, 13,195,199, 31,127,140,250,245,235,151,232,185,109,199,110,199,247, 70,141,243,107,210,230,173,144,192, 38, 45, 26, 21, - 24,216,102, 18,165,253, 7,164, 28,115,219,223,145, 58,224,255, 7,102,177, 91,176,120, 35,132,128,101,217, 37, 44,203, 14, 96, - 24,134, 86, 7, 83, 16, 4,142,227,184,107, 28,199,141, 40, 38, 89, 44,203,130,101,217,106,147,211,191, 43, 21, 67,105, 46,242, -175,113, 17,150, 94,242,196, 44,224,208,208,225,163,122,157, 58,125, 90, 41,149, 74, 17, 27, 27,139,180,180, 52,236,222,181,139, -223,235,236,172, 21,139,197,116,200,214,173, 86,163, 63,248,128,136,197, 98, 4, 4, 4, 96,192,128, 1,138,119, 7, 14, 78,119, - 18,139,119, 91,192, 80,221,138,253,231,163, 70,141,194,119,223,125,247,202,241,207, 63,255, 28,187,118,237, 2, 33,196,213, 18, -195,203,164,249,125, 61,237,188,108,211,104,228, 54, 49, 97,149,246, 96,149, 0, 35, 1,228,236, 75,146,197,176, 48,220, 58,147, -205,180,216,147,223,191,173,214,227,251,227,235,195, 1,236,177,180,144,220,221,221,103,159, 57,115,198,105,202,148, 41, 52, 63, - 63,159,164,164,164,208, 69,139, 22, 57, 77,152, 48, 97, 54,128,225,175, 83,240,201,201,201, 11,123,244,232,209,237,200,145, 35, - 46,195,135, 15,183, 1,128, 30, 61,122,164, 37, 39, 39, 47,124,147, 7, 42,145, 72,216, 7, 15, 30,216, 47, 95,190,252,189, 79, - 63,253, 52, 40, 56, 56,216, 53, 55, 55, 55, 46, 41, 41,105, 64, 85, 22, 55, 65, 16, 26,108,220,184, 17, 44,251,178,157, 99, 24, - 6, 82,169, 20, 82,169, 20,214,214,214, 57, 49, 49, 49, 66, 93, 23,133, 84,147,150,146,103, 39,178, 19, 19, 55, 87, 7, 91, 87, -183,246, 89, 89, 89,215, 0, 88,106, 94, 14,121,251,237,183,239, 94,190,253,148, 31, 55,188, 67,125,165,132, 17, 91, 41,228,172, - 66, 42, 38,132, 82,222,100, 54,182, 92,189,237,236, 22, 63, 63,191, 64, 75, 77,196,132,144,208, 22, 45, 90,156,190,253,240, 5, -110,223,123,150,232,100,175,116,120,187, 99,107,255,226,227,141,154,183,120,175,212,233,185, 22,189, 24, 34, 81, 72,179,102,205, - 18,211,178, 53,112,182,183,121,133, 72,219, 57, 58,119, 6, 0, 77, 94,222,234, 90,181,106, 5,136, 68,162,122,150,234,217,182, -109,219,148, 91, 81,241,112,117,178,183, 47,218,253, 74, 76, 79,102, 74,202, 58, 95, 95,223, 0, 75, 44,173, 70,163, 81,118,240, -224, 65,220,186,117, 11, 11,131,130,240,121,221,186,112,114,114,194,233,211,167, 65, 41,133, 90,173, 70,110,110, 46,246,236,217, -131, 78,157, 58,193,104, 52,170, 42, 34, 74,197,241, 85, 21, 17,161,228,228,228,191,101, 68, 89, 22, 59,112,233, 35, 68, 85,178, - 82,230,209,163, 71,119,236,216,177, 99,113, 96, 96, 32, 62,249,228,147, 54, 43, 86,172,184, 24, 28, 28,220,166, 99,199,142, 56, -115,230, 12, 70,141, 26,117,113,229,202,149,109,198,141, 27,135,117,235,214,225,249,243,231,155, 43,187,254,160, 65,131,230,141, - 25, 51,102,214,170, 85,171, 80, 60,130,239,219,183,111,113,219,184, 37, 60, 60, 60,171,248,220,189,155, 18, 47,123,121,251,182, -154, 48,233, 51,233,196,113,195,166, 1,120,175,138,142,130,186,187,187, 23,112,111,189,149,189,231,202, 21, 12,146, 72,148, 59, -111,223,198, 33,189, 30,109,251,245,203, 4,128,233,211,167, 99,251,246,237, 0,224, 82, 25,150,167,167,231,135, 7, 14, 28, 40, -169, 43, 14, 14, 14,144, 74,165, 47, 73,144, 72, 12,150,103,113,106,157, 10, 49,241, 90,140, 95, 76,177,118, 58, 65, 61,119,104, - 66,253, 43,173,143,104,221,186, 53,242,243,243,193,178, 44,172,172,172, 96,111,111,255, 10,185,202, 47,204,197, 55,155,231, 33, -221,255, 28,186,252, 10,134,176,192,157,175,128,130,167, 21, 46,233,212,107,249,242,229,110,122,189, 30,103,207,158,197,233,211, -167,127,160,148, 22,150,229, 59,148,210, 84,150,101,183, 46, 93,186,116,148,187,187, 59,198,143, 31,239,183,104,209,162,190,192, -159,113, 9, 33,104,218,180, 41,244,122, 61,196, 98, 49,172,173,173, 97, 52,113,226,240,161, 31,122,215,241, 9,150, 45, 90,182, -136,113,177, 23, 65,196,216, 35,250,133,206,230,251,239,190,252,254,234,239, 23, 70, 19,165, 99, 63,170,205, 76,249,167,119,210, - 60,207,195,108, 54, 23,175,187,234, 93, 76,138, 68, 34,209, 38,150,101,115, 29, 29, 29, 15,102,102,102, 90, 68,180, 4, 65,224, -121,158, 47, 52,155,205, 57,102,179, 89, 67, 8, 81,179, 44, 11,158,231,193,243,255, 29, 19, 98,171, 90,126,237, 31, 71,176,202, - 46,119, 18, 31, 31,159,107,111,111,239,225,239,239,207, 24,141,198,151,174,135,125,251,248, 77, 91,182, 28,209,235,245,147, 0, - 72, 86,173, 89,179,206,195,211,179,195,208, 97,195,136,217,108, 70,143, 30, 61,164,135, 15, 31,118,120,150,150, 86, 96, 65, 1, -190,114,189, 17, 35, 70, 96,197,138, 21, 0,128,143, 62,250,168,196,132, 78, 44,112,250,171,109,208,189, 91,207,166,214, 9,170, - 31,172, 77,173,204,133,117,159, 89, 93, 85, 21, 42,154,130,145,138, 32,103, 33,152,204, 92,116,122,191,155,207,162, 27, 4, 42, -178,179,234,117, 14,106,135, 77,191,109,239, 94, 29,130,165, 84, 42,155, 91, 89, 89,225,230,205,155,217, 77,155, 54,205,165,148, -218, 44, 92,184,208, 81,169, 84, 54,127, 3,150, 30, 75, 8,121,171,117,235,214, 19, 25,134,233, 44, 8,194,169,180,180,180, 85, -148,210, 88, 11, 43,225,120, 0,115, 81, 42,206,196,104, 52,130, 97, 24, 80, 74, 49,104,208, 32, 76,159, 62, 61,240,222,189,123, - 56,115,230,140,125,231,206,157,175, 18, 66,114, 1,140,166,148, 86,104, 37,203,202,202,194,218,181,107,193,178, 44,108,109,109, - 97,101,101, 5,185, 92,142, 54,109,218,164, 46, 89,178,164,193,254,253,251,181,185,233,233, 68, 81,144,103, 32, 14, 14,114,184, -215,126,123, 68,191,254,247,241,114, 54,161, 69,162, 82,169,148, 82, 24, 10, 24, 94,207,124, 51,111,181, 72, 41,145, 16,185, 68, - 4,153,160,101,103, 44,249,146,202, 9, 21, 23, 89, 87,169,165,152,114,185, 92,162,146, 82,131, 88,198,152,149, 12,253, 75,252, -172, 82,169, 84, 34, 19,107,116, 21,146, 89,134,176, 44,203,202,170,131,169, 80, 40, 36,106, 41,111,168,240, 62, 24,176, 12,195, - 84,136, 25, 30, 68,232,222,137, 37, 46,189, 18,221, 56,142, 67,243,230,205,241,243, 47,103,113,244,244,101,100,190,184,139, 73, -227, 71,193,215,215, 23, 39, 78,156,120,163,114, 72, 78, 78, 46,151,100, 85,234, 90, 44,138,187,170,204, 45,248, 10,246, 28,155, - 42,103, 37, 18, 66,250,180,109,219,118,194,206,157, 59,141,111,191,253,182,116,208,160, 65, 8, 14, 14,110, 51,114,228, 72, 0, - 64,231,206,157,177, 98,197,138, 54, 35, 71,142,196,238,221,187, 17, 17, 17, 97,104,223,190,253, 84, 66, 72, 18,165,244,104, 5, - 29, 78,175,245,235,215,151,181, 12,130,227, 56,152,205,102, 55,142,227,220,138,218, 34,124,255,253,202,204,147, 39, 14, 99,234, -140,249,112,118,114, 13,181,208,189, 67, 70,124,246, 89,230,143,203,150, 97,217,238,221,248,172, 94, 61,229,246,168, 40,156,212, -235,177,231,204,153,204,162,235, 84, 25,223,164,209,104,116, 71,143, 30,181,222,179,103, 15,108,109,109, 81,191,126,253, 18, 50, -196,176, 10,176, 18, 59,248, 7, 53, 7,112, 29, 0, 80,207, 29,154, 0, 47, 92, 36, 4,185,148,129,161,146,250, 8, 87, 87, 87, -136, 68, 34,220,126,124, 29, 86,185,214,104, 18, 20, 6,177, 88,140, 2, 77, 30, 38, 44, 27, 0,223, 47, 51,208, 48, 0,208,165, - 1,215,166,192,156,122, 25,203,181, 9, 88, 93, 1,100,227,218,181,107,195, 96, 48, 96,227,198,141,180,168,141,170,168,179,159, -249,237,183,223, 14,159, 51,103, 14,219,172, 89, 51, 0, 8, 45,143, 96, 21,181, 25,240,240,240, 40, 33,126,131,134,143,243, 30, - 59,101,156,162, 95,215, 14, 16,137, 28,145,171, 49, 35,171,192, 12, 59, 71, 53,166, 78, 9,151,159,106,234,209,108,253,202,159, -126, 37,132, 52,163,165, 77,134,255, 64, 49,153, 76, 16, 4,225, 8,195, 48,179, 88,150,253, 82, 36, 18,245, 40, 58, 84,192, 48, - 76, 58,203,178,164, 58,109,165, 32, 8, 67, 57,142, 91,110, 52, 26,173,139, 45, 98, 60,207,195,104,252,191,159,184,255,166,107, - 28,255,215, 90,176,254,228,198, 51,155,253, 13,235,214, 65,115,234, 20,164, 39, 79, 98,143,187,123,161, 94,175,255,148, 82,154, - 80,212,216,125,178,245,199, 31, 47,245,190,114,197,218,248,232, 17,188,239,221,131,216,214, 54,180,186, 10,108,217,178, 5,249, -249,249,200,203,203, 3, 0,252,240,195, 15,200,207,207, 47, 14,228,171,250, 6, 36,104,227,234, 92, 15,169,136,134, 32, 98,212, -113,254,218, 22,106,189, 85,178, 71,188,139, 38,143,241,192,163, 23, 97, 42, 93,150,177, 5, 97,141,208,103,106,225,209,186, 62, - 68, 16,181,169,142,142,197,166, 83,145, 72,148,253,228,201,147, 94,126,126,126,135, 0, 56,190,169,191,159, 82,250, 20,192,164, -215,249, 47,203,178,115,159, 63,127,238,188,121,243,230,137, 11, 23, 46,164,165, 9, 86,241,247,226,160, 72, 27, 27, 27,136,197, - 98,151,203,151, 47,187,132,133,133,173, 46,106,200, 42, 34,147,112,113,113,129, 88, 44,134,141,141, 13, 52,249, 57,170,181,139, -102,181, 87,218,185,216,127,246,217,103,204,136, 17, 35,158,173, 94,189,186,182,171,191,127,192,221,187,119, 95,244, 30, 16,126, -235,232,209,163, 0,176,193, 66,213,239,220,187,119, 79,234,235, 83, 87, 36,152,117,130, 74, 2,200,239,124, 47, 72,173, 92, 33, -103, 89,136, 8,168, 66,169,114,126, 26, 23,151, 12, 32,221,194,114,188, 29, 29, 29, 45,246,116,119, 17, 21,104,244,185, 42,145, - 32,125,126,227,250, 67,175,102,205, 27, 0,128,254,198,229, 3, 50,255, 32,171,231,233, 25,214,222,222,222,113,150, 96,114, 28, -119, 39, 54, 54, 86,226,225,225, 33,142,142,126,250,147,131,181,149,187,189,139, 75,123, 0, 48,102,103, 92, 32, 58,125,178, 88, - 44,246, 72, 78, 77,205,224, 56, 46,217, 82, 61,159, 60,121, 34,241,116,119, 17, 29, 58,114,244,103, 87,149,210,205, 86, 33,179, -145, 51, 32,114, 42,228, 73, 57, 46, 85,161, 84,185, 63,143,143,207,164,148, 38, 86,132,179, 86,152, 56,244,101, 29,248,108, 83, -233,253, 23, 47, 94,196,217,155,207, 97,195,242, 16,155, 53,184, 26,177, 7,253, 63,154, 92,229,187, 20,245, 69, 0, 96, 88,186, - 43,208,107,196, 43,196,233,165, 11,208,173, 92, 34, 84, 37,193,170, 74,214, 55, 56, 87,134,100, 33, 57,185,242,198,117,200,144, - 33,243,119,236,216, 81, 50,137,227,225,195,135,232,216,177, 35, 0, 96,254,252,249,232,214,173, 27,194,194,194,240,240,225, 67, -248,250,250,226,204,153, 51, 50,150,101,101, 67,135, 14, 93, 4,224,104, 85, 42,109,216,176, 1,163, 70,141, 42, 47, 96,250, 25, - 0, 61,177, 11, 40,156,190,100,155, 99,118, 86, 38,210, 51, 82,111, 87, 99, 68,142, 17,159,125,150,185,222,104,196,206,107,215, - 48, 76,165, 82,254,248,244, 41,122,132,133,161, 97,199,142,153,150,180,117,229, 89,113, 28, 28, 28, 32,145, 72,192,138,221, 33, -146,134,128,145, 72,208,184,109, 8,150,125,170,210, 14,127, 7, 43, 9, 65,174, 76,138, 72,137, 18,169, 21, 97,114, 28, 7,177, - 88,140, 61,199,127,196, 93,219,159,128, 2,224, 82,100, 31, 76, 30, 53, 19, 95,172,248, 16,126,139, 50, 96,227, 7,164, 95, 5, -174, 79, 97,132,188, 88, 97,140, 33, 3,199, 40,165, 89, 21, 16,182, 6, 10,133, 2, 26,141, 6,209,209,209, 47, 40,165,249,149, -188, 15,105,157, 59,119, 78,103, 89,214,205,195,195, 3, 0,106, 87, 52, 32, 23, 4,161, 36,206,106,251,206,189,142,161,111,121, -203,187,180, 9,196,182, 67, 95,225, 63,225, 43, 33,102, 9,120,222,132,229, 43,122,130, 55, 20, 34,188,247,135,164, 93,103,223, -144, 83,135,140, 99, 0,108,252, 39,119,210, 70,163,241, 23,147,201, 52,153, 16, 82,192,178,236, 36,177, 88,236,194, 48,140, 47, -207,243,195, 8, 33,247, 36, 18, 73, 93, 55, 55,183,236,148,148,148,188,170,176,178,178,178, 40,128, 45, 69, 91,141,252,205,194, - 20, 85,224,118,132, 16, 74, 8,105, 87,194,114, 41, 21,184,236,108, 80,195,203,193,143, 88, 44,166, 0, 74,207, 80, 82,218,218, -218, 18,177,167, 39,136,236,229,128,155, 2,127,153,141,209,108,182, 44, 53,140,192,131, 5, 49,129,150, 34,240, 26, 57,193, 87, -142,157, 48, 73, 58, 27,169, 82,219,210,111, 52,192, 81,240, 16,216,106,170, 67, 11, 11, 11,193,113,156,157,143,143,207, 17,142, -227,236,138, 93, 0,255,135,102,227, 24,150,101, 49,113,226, 68,160,200,149,102, 52, 26,145,154,154, 10,131,193, 0,163,209,136, -231,207,159, 35, 47, 47, 15, 70,163, 17, 15, 30, 60,128,151,151, 23, 88,150,117,171, 98,116, 3, 39, 39, 39,184,185,185,193,160, -201, 87,237,223,176,162,199,210,249,211, 29, 7,251, 80,102,243,202,111, 5, 79, 79,207,172,160,160, 32, 87,153, 76,102,106,210, -164,137,225,208,161, 67, 39, 1,244,175, 70, 30,172,163, 11, 22, 44, 8, 11, 11, 11,171,107,171, 86,153,100, 82, 22, 50, 78, 67, -101,134, 44, 42,210,101,210, 58,158,117, 77, 80,169,155, 15, 26, 52, 72,106, 73,167, 88,140,249,197, 23, 95,212,111,208,160,129, -163,173,181, 42, 95,196, 32, 73,194,243, 73, 57, 55, 47,255, 6, 0, 18, 71,103, 29, 84,234,230, 69, 49,116, 22, 99, 78,157, 58, - 53,200,195,195,195,129, 97, 72, 46,103, 50,189, 40,105,240,245,186, 52, 86, 38,215, 64, 38,111, 59,122,244,104,113, 53, 49, 27, - 52,106,212,200,193,206,198, 58, 87,204,144,120, 9,207, 37, 40, 40,159, 40, 53,155, 50,100,206, 46,133, 80,169, 91, 15, 30, 60, - 88, 84, 17,102,177,245,170,172,101, 72, 36, 18, 33, 41, 41, 9,218,228,187,144, 36, 61, 66,136, 90,140, 22,174,142, 80,169, 84, - 85, 15, 86,198, 62, 36, 24,251,144, 68, 61,167, 36,234, 57, 37,165,127,255,201,218,180, 32, 15,175,156, 87,129,148,141,207,250, - 19,185, 42,243,223, 34,146, 85,233,251,244,211, 79, 63,205,232,208,161, 67,122,183,110,221,140, 71,142, 28, 1, 33, 4,103,206, -156, 65, 82, 82, 18,186,117,235, 6, 74, 41,174, 94,125,105,156,189,125,251, 54, 58,119,238,108,124,235,173,183,146,126,250,233, -167,185,150, 60,156, 81,163, 70,193,108, 54,163,176,176, 16,217,217,217, 56,124,248, 48, 66, 66, 66,168, 82,169,236,207,214,234, -250, 85,248,152, 25,173,130, 27,133, 98,245,202,101, 70,169, 72,188,164,154,110, 15, 12,255,244,211,204,188,198,141,179,183,107, - 52,218, 17,214,214, 74,159,132, 4,251,155, 39, 78, 56,154, 76, 38,139, 48,138,173, 56,158,158,158, 37,228, 74, 34,145, 64, 36, -117, 2,171,106, 8,169, 67, 55, 40, 93,251,227,108,164,204, 96,163,194, 1, 43, 53,142,171,108,113,175,146, 60, 88,132,227, 56, - 72, 36, 18,156,187,117, 12, 33, 51,129,144,153, 64,114,243, 95,240,222,228,183,225, 56,233, 9,108,252,128,212,223,129,220,101, - 33, 48, 63,183,201, 55,100, 96, 79, 69,228, 10, 0, 12, 6,131,158,231,121, 16, 66, 32,145, 72,164,165, 14, 93, 58,119,238, 28, - 78,159, 62, 13, 0,209,197, 59,115,114,114, 40,195, 48, 80,169, 84, 0,160,170,204, 77, 86, 28, 15,118,238,234, 5,135,247,222, -237, 73, 46,223,249, 13,173, 67, 6, 35,171,208,132,180, 60, 19,114,181, 64, 80,179, 89, 8,238,124, 0,119,159, 23, 32,180, 81, - 48,203, 74, 85,195,241, 15, 23,163,209, 56,214, 96, 48,100,232,245,250, 2,189, 94,159,169,213,106, 71,235,116,186, 94, 28,199, - 93, 20,137, 68, 1,114,185,252,150, 82,169,252,165,118,237,218, 12, 0,120,120,120, 48,238,238,238, 63,254, 19,239,181, 60, 46, -242,143, 39, 88, 0,206,149, 13, 44,227,100,178, 7,220,132, 9,176,253,245, 87,136,163,163, 49,114,248,112,107,165, 82,185,146, - 16,210,132, 16,210, 90,173, 86,175,158, 55,111,158,149,227,226,197,112,191,112, 1,113,135, 15,195, 44, 22,223,120, 29, 37,116, - 58, 29, 68, 34, 81,137,229, 69,165, 82, 21,251,131,171, 36, 48, 60,135, 43, 73,105,143, 32, 69, 93, 8,160,133,199,243,223,186, - 54, 56,102,150,243,225,124, 47,223,167, 26,137,239, 2,167, 22,206, 43,235,180,185,166, 33,162, 66,169,173, 28,241,241, 9,224, - 33, 92,169,142,126,122,189, 62, 79,163,209, 32, 52, 52,212,225,230,205,155, 62, 33, 33, 33,246, 69,251,175,191, 97,101,106,233, -225,225,177,215,211,211, 51,214,195,195, 99, 47, 33,164,101, 53,254,190,249,247,223,127, 7,203,178,152, 55,111, 30, 10, 10, 10, - 96, 50,153,144,149,149,133,248,248,120, 24,141, 70, 36, 38, 38,226,241,227,199, 48, 26,141,136,139,139,131,193, 96,176,136,216, - 90, 89, 89, 33, 55, 43, 93,181,123,237,183, 61,190,154, 63, 91,145,247,244, 22, 18,147,211, 32,240,186,228,111,190,249,230,177, -175,175,239,105,147,201, 84, 75, 16,132,118,148,210,245,150, 18,205,162, 68,165, 23, 3, 2, 2,194,190,249,230,155,118,179,151, -108,146, 89,177, 5, 84,106, 37, 19,164, 86, 82, 42, 13,104,129, 49,115, 87,201,151, 44, 90,120,251,206,157, 59,217,150, 36,221, - 44,198,108,209,162, 69, 80,106,106,106,155,144,144,144, 80,215,250,126,114,153,135,123,166,212,189, 78, 22,213,105, 79, 49,181, -235,245, 90,185,114,229,205,171, 87,175,166, 85, 7,211,195,195,163,225,154, 53,107,154,213,174, 93,187,153,220,198, 70, 81,152, -155,187,193,144,155,189, 73,236,232,170, 96, 28, 28,195,183,111,223,126,229,228,201,147,153,213,193, 12, 12, 12, 12, 94,180,104, - 81,147,198,141, 27, 55,113,243,243,151, 43, 60, 60, 51, 36, 30,117,210, 21,141,154,202,153, 58,222, 3, 86,172, 88,113,237,198, -141, 27, 25,150, 96,138, 68, 34,158, 97, 24,136,197, 98,168, 84, 42,156, 63,127, 30,131,251,191, 13, 87,103,107,248,249,251,163, -253,216,143,112,228,200, 17, 72,165, 82, 48, 12, 3,134, 97,222, 56,161,165, 37, 68,168, 42,169,136,124, 85,133, 77, 41, 61,122, -238,220,185,175, 71,140, 24, 33,237,222,189, 59,174, 93,187,134, 81,163, 70, 93,140,136,136, 0, 0, 92,187,118, 13,147, 39, 79, -190,120,250,244,105,140, 27, 55, 14, 29, 59,118,148,254,254,251,239,171, 45, 73, 62,202,113, 28,182,108,217, 2,142,227,160, 86, -171, 97,111,111,143,158, 61,123,226,254,253,251,227,182,110,221,250,136, 21,139,223,239,209,251, 93, 28,249, 53, 2,143, 31,220, - 31,247,227,162,161,213, 78,230,203, 48, 12,186, 15, 31,158,153, 25, 20,148,253, 99,126,190,118,180,157,157, 50, 32, 53,213,254, -236,222,189,142, 22,212, 31,194,243,124, 9,169, 42, 38, 27, 37, 51,203,164, 78, 16,169,130, 33,178,106,134,187, 79, 37,102,113, -115, 26, 41,105, 74, 31, 86,150,100,148, 16, 2, 65, 16, 32, 22,139,209,184,126,107, 60,221,241,114,127,253,161, 64,147,109, 89, -112,110,245,210, 45,248,226, 27,103,124, 62,122, 62,196,172,196, 92, 85,218, 28, 65, 16, 30,100,101,101, 65, 36, 18,193,207,207, -207,149, 16, 82,108,149, 90,222,161, 67,135, 5,195,134, 13, 91, 10,224,147,162,235,215, 9, 15, 15,119, 55,153, 76,184,125,251, - 54, 0,220,170,228,217,151,204, 26,204,206,143,147,213,115,111,136,144, 6, 99, 97,103,215, 8, 73,217, 70, 36,103, 27,177,105, -109, 95,220,250,253, 75,220, 60, 57, 12, 47, 82, 83,161,112,237, 7,158, 51, 4,255,211, 59,233,140,151,162,203,200,200,224, 76, - 38,147,206,104, 52, 62, 53,153, 76, 55, 40,165,222, 98,177,248, 55,185, 92,110,163, 84, 42,223, 82,169, 84, 91,253,252,252, 68, - 10,133, 98,171, 76, 38, 43,151, 88,218,216,216, 16, 27, 27, 27,214,198,198, 70, 84,222, 86,124,158,183,183, 55,109,208,160, 1, - 13, 14, 14,166, 65, 65, 65,212,223,223,159,214,173, 91, 55,223,205,205,109,172,131,131, 3,251, 55,222,238,185,127, 83,144,123, -217, 52, 13, 0, 0, 31,123,123, 43,179,217,148,248,219,111,191,153, 24,134,129, 82,169,196,136, 81,163,152,181,107,214,180, 29, -220,178,229,153, 15,187,116, 57,118,230,244,233,198, 97, 97, 97,160,148,130, 97, 24,236,222,189, 91,167,215,235,178,106,215,174, -109,107, 73, 99, 81,250,197,201,207,207, 47, 33, 88,121,121,121,112,113,113,177,216, 69,168,201,199,169,211,199,111,229, 80,254, - 63,241,221,159,126,103, 90,146,218, 55, 44, 87,224, 69,121,188, 25,121, 58,138, 2, 61, 68,215, 24,251,176, 17,190,253, 76,207, - 59,135, 61, 62,255,232,114,150,158,215, 87,107,246, 67,122,122,250,204,240,240,240, 44, 55, 55, 55, 98,109,109, 13, 15, 15, 15, -166, 79,159, 62,153, 9, 9, 9, 11, 94,183,224, 29, 29, 29,223,235,208,161,195,161,164,164,164, 1,231,207,159,175,123,225,194, -133, 1, 29, 58,116, 56,228,232,232,248,158,133, 16,123,102,204,152,161,145, 74,165,104,209,162, 5, 10, 10, 10, 96, 52, 26,171, -220,170,180, 8, 10, 2,228,114, 57,246,110, 90,209,245,171,249,179, 21, 89, 15,175,224,238,197,223,112, 60,214,160,157,187,228, -251,171,114,185,252,181,238,215,215, 89,213,176,161,187,213,195,201,163, 6, 37, 79,159, 54,205,234,222,189,123,138, 73, 31,127, -130,184,180, 92, 42,237,190,156, 69,187,217,204, 29,141, 35,233,241, 78, 71,124,189,104, 78, 59, 0,227,170,236,168,157, 85, 13, -131,221,173,162, 62,251,112,112,204,199, 31,127,172, 88,178,100,137,190,121,243,230,230,148,148, 20, 27,181,163,115, 83,177,131, - 99,203,216,212, 52,219,166,205,154, 61,253,248,227,143,245,213,197,156, 51,103,142,242,210,165, 75,146, 78,157, 58,209,244,244, -116, 59,137, 66,209, 74,108,101,211, 46, 57, 51,211,190,115,231,206, 79, 71,142, 28,201,191, 14,230,147, 39, 79, 36, 77,155, 54, -165, 41, 41, 41,118, 74, 7,167, 22, 18, 7,167,183,158,167,164,218,133, 54,110, 28, 61,121,242,100,115,101,152,225,171,254, 32, - 39,106,181, 58, 37, 36, 36, 4,115,231,206,197,194,133, 11, 49,112,224, 64,196,198,197,162,221,200, 15,225, 53, 98, 28, 14, 95, -189,142,228,228,100,204,156, 57, 19,190,190,190, 16,139,197,209,127, 69,163, 97, 9,201,170,200,125, 24,232, 69,206, 85, 22,103, - 85, 21,246,128, 1, 3, 38, 20,167, 98, 24, 61,122,244,197,149, 43, 87,182, 25, 61,122, 52, 0,160, 69,139, 22,248,242,203, 47, -219,204,154, 53,235,226, 87, 95,125,133, 78,157, 58,193,219,219,187,202,124, 98, 60,207,131,227, 56, 12, 30, 60, 24, 28,199, 33, - 35, 35, 3, 79,158, 60,193,134, 13, 27, 64, 41,149, 3,128,155,187,103, 83,169, 84,138, 59,145, 55,180,179, 71,135,253, 84,141, - 65, 20, 41,253,110, 21, 22, 22, 98,192,248,241,153,137,245,235,103,175,203,204,212,142,177,179, 83,214,123,241,194,222,202,104, -244,168,107,105, 47,159, 0, 0, 32, 0, 73, 68, 65, 84, 44,230,180, 52, 25, 42,157,150,160,236, 86, 60, 65,197, 82, 41,198, 28, - 55,120, 50,228,199,219,150,144, 44,117, 29, 64,224,128, 91,211,196,152,216,111, 46, 66, 26,134,194,194, 25,107, 87,175, 93,187, - 6,169, 84,138,201,147, 39, 19,150,101, 87, 16, 66, 8,165, 52,135, 82, 58,151, 82, 58,149, 82,170, 39,132, 16,153, 76,182,126, -212,168, 81, 48, 24, 12,184,120,241, 34, 0,156,174,136,152, 82, 74, 75,238,189, 48,155,128, 23,164,184, 20,121, 28, 39, 47,236, - 67,108, 82, 6, 94,164,235, 1,145, 13,244,154, 68,152,116, 73, 48,230, 70, 34,223,160,252,215,185,156,178,179,179, 5,158,231, -141, 60,207,155, 4, 65,168, 11,192, 90, 36, 18, 65, 34,145, 64,161, 80, 12, 83, 42,149,145, 10,133, 98,152, 84, 42, 45,247,255, -121,121,121, 52, 47, 47,143,207,203,203,227,202,219,138,207, 43,206,189,165, 80, 40, 32,147,201, 32,145, 72, 82, 69, 34,209, 48, - 66,200, 30,252,205,249,169, 74,115,145,127,186,148,151,104, 20,212, 90, 49,104,223,234,181, 54,225,131,135,106, 66, 66, 66,236, - 60, 60, 60, 64, 8, 65,223,126,253, 72,135,243,231,173,196,238,238,112,104,210,164, 36,123,238,169,223,126,195,241,227,199, 53, - 71, 14, 30,240, 24, 53,102, 76, 47,148, 78,246,252,231,194, 19,249,248,248,148, 92, 55, 37, 37,165,248, 1, 2, 0,242,243,243, -225,228,228,132,148,148, 20, 88,104, 24,217, 62,125,218,213,105,233, 97, 51,189,194,172,196,228,152, 38, 21, 60,165, 16, 19, 30, -208, 81,152,121,192, 96,166,104, 90,143,181, 63,169,227,236, 14, 95,139,120, 14, 96,123, 53, 45, 88,103, 9, 33, 99, 5, 65,216, - 7,128, 57,127,254,188, 16, 21, 21, 53,193,210,128,244,242, 68,169, 84,126,113,230,204, 25,251, 47,190,248, 34,231,240,225,195, -121, 61,123,246,180,217,176, 97,131,125,199,142, 29,191, 0,240,115,149, 62, 75, 74,117,132,144,109, 9, 9, 9, 19,154, 53,107, -134,236,236,108,152, 76, 38,220,186,117, 11,190,190,190,184,121,243, 38,252,252,252,112,227,198, 13,248,251,251, 23, 79,153,134, - 32, 8, 85,186,113,147, 19, 94,168,149,134, 28,235,228,107, 71,241,248,238, 77, 28,141, 49,104,191,217,178,251,104,195,208,166, -154,234, 54,224, 0,224,239,162, 10,242,112,118, 56,185,100,254, 28,231,184,179,187, 17,177,101,149,112,238,216,177, 64,169, 21, -198,182,127,239,227,119,141,102,212, 6, 32,107, 21,214,140,190, 99,251, 68, 80,212, 69,234,233, 7,149,103, 50,247,119, 81, 5, -185, 59, 57,156,248,102,201, 66,171,103,199,182, 98,207,250,229,116,255,142, 93, 33,122, 32,172, 97,195,134,221, 9, 33,110, 0, -184,162,103,100,209, 18, 52,229, 97,158, 62,124,184,177, 30, 8,243,241,241,233, 46, 22,139,235, 22, 89,249,146,254, 10,204, 70, -141, 26,117, 47, 26,225,211,162,152,171,106, 45,149, 51,122,244,232,101,159,125,246,217,100,179,217,236, 80,202, 2,201,110,216, -176, 65,196,243, 60, 67, 41, 53, 49, 12, 99, 58,113,226, 4,207,113, 92,178, 94,175, 31,255,166, 13,198,187,239,190,139,171, 87, -175,206, 71, 37,193,203,101, 58, 4,145,189,189, 61, 87, 21,241,178, 20,251,252,249,243, 11,223,127,255,253,233, 63,255,252,243, -147,149, 43, 87,246, 30, 55,110, 28,118,239,222,141,250,245,235,227,206,157, 59,152, 57,115, 38, 0,180,153, 53,107,214,175,155, - 55,111,246,142,139,139, 91,102,137,213,150,227, 56,236,218,181, 11,125,251,246,133,147,147, 19,220,221,221, 65, 8, 57, 59,102, -204,152, 53, 0,192, 18, 86, 2, 0, 6,189,193, 16, 16,208,204, 98,139,173,183,183,119, 73, 91,151,154,154, 90, 50,243,175,235, -251,239,103,110, 90,178, 4, 63,233,116, 24, 99,103,167, 76,244,244,116,251,245,217,179, 15, 9, 33, 27, 42,178, 8, 23, 91,113, -170, 34, 87,213,176, 40,163, 56,182,201,197,197, 5,179, 38, 46,198,226,181,179,240, 20,231, 80,127, 8,240,224, 59,160,175,247, - 71,104, 22,210, 2,238,238,238,150, 86,145,179,255,249,207,127,110, 68, 69, 69, 53,107,212,168, 17, 22, 44, 88,208,103,222,188, -121, 39, 9, 33, 31, 22,207, 98, 38,132,212, 99, 89,118,197,111,191,253,214,197,218,218, 26, 15, 31, 62,196,222,189,123,159,162, - 56, 66,191, 28, 61,139, 59,125,177, 88,140,218,181,252,244,143,227, 10,149,233, 73,151,112,241,247,131,168, 31,242, 9, 20,174, -189, 96, 31,240, 21, 76,143,190,135, 49,235, 36,236,107,245, 68, 98,220, 51,176, 34,217,253,127, 27,201,202,201,201,161, 14, 14, - 14, 2,207,243, 39,120,158,159,201,243,252, 87, 34,145,168, 56,254, 54,152,227,184, 55,158, 17, 88,156,123,171, 24,151, 82,170, - 18,137, 68,249, 44,203,234, 8, 33,127,235,116,195,210, 92,228, 95, 99,193,122,165, 66, 11, 68,236,239,231,199, 75, 24,108,237, -219,171,151,246,246,237,219, 37,163, 60,253,245,235,208, 28, 63, 14,158,231, 65, 41,197,133,243,231, 49,108,232,208, 66, 49, 75, - 54,213,171, 87,151, 18,250, 71,238, 21, 66,200,159,242, 88, 73, 36,146,240,240,240,240,146, 70, 39, 33, 33, 1, 42,149, 10, 82, -169, 20,130, 32,128,227, 56,176, 44, 11, 27, 27, 27,112, 28,103, 44,231,101,235, 92,230, 97,152,249,108,205,128,205, 61,134,164, -184, 23,154,232, 88,219,122,168, 35, 81,148,188,148,174,214, 4,189, 67,196,112, 20,165,211,211,203,186, 36, 11,134,172, 1,101, -215,254, 42, 79,207, 50,199,253, 26, 53,106,180,102,216,176, 97, 12, 0,116,238,220,153,105,212,168,209, 15,132, 16,191, 74,254, - 83, 41,166, 92, 46,151, 1,192,161, 67,135,178,159, 60,121,242,246,161, 67,135,178, 75,239,183, 16,115,195,210,165, 75,161, 84, - 42,193,113, 28,140, 70, 99, 73,252, 85,233, 79,147,201, 4, 71, 71, 71, 28, 57,114, 4, 60,207, 31,169, 74,207, 6,193,141, 10, -243, 68,182,105, 63,254,122, 26,199,226, 76,133,213, 37, 87,165, 49,235,187,169,253, 93, 29, 29,126,251,102,209, 66,167,156,167, -183,144,152,152, 72, 79, 28, 63,114, 69, 71,105, 82,110, 62,157,157, 83, 72,253,181, 6,170,104,238,141,248,223,214, 79,165,179, -222,130, 25,228,207,174,225,210,152, 65,110,106,127, 15, 39,135, 19,203,151, 45,177,202,141,190,137,148,212, 84, 28, 61,114,232, -182,142,210, 36, 74,233,126, 74,233, 72, 65, 16, 26, 10,130,208,144, 82, 58,178, 34,210, 82, 93, 76,147,201,212,208,100, 50,253, -165,152,213,213,179,212, 12, 66,204,159, 63, 63, 58, 49, 49,113, 92, 90, 90,218,187,197, 91,118,118,118,223,130,130,130,158, 90, -173,182,187,238,187,186, 54, 26,141,198,185,160,160,192, 77,167,211, 53,165,148,222,178,180,126,150,149,210, 29,108,114,114,242, -188,228,228,100, 82,105,253, 28,251,144,172, 94,246,159, 29,123,247,238,117,121, 19,236,178,122,102,100,100,236,219,181,107, 87, -168,151,151,151,247,200,145, 35,177,110,221, 58,172, 92,185,210, 0, 0,155, 55,111, 54,148,178, 92,213,138,141,141,109, 86,158, -123,176, 52, 38,195, 48,219,187,118,237, 74, 47, 92,184,128,190,125,251,150, 36, 0,221,184,113, 35, 56,142,203,239,212,169,147, - 0, 0, 58,189, 54,159, 10, 20, 70, 83,249,126,246,242,202, 83, 42,149,190, 83, 58,223, 95,113, 18,101,169, 84, 10, 74, 41,252, -219,180,201,204, 13, 9,201,222,146,151,167,157,215,176,161,245,135, 1, 1, 35, 27, 0, 67,203,195, 36,132,188, 98,197, 41,187, -189,206,187, 89, 44,197, 24,158,158,158, 88,248,233,114,120, 94,127, 23,103,219, 58, 32, 52,107, 36,186,181,237, 13,127,127,127, -139, 49, 41,165, 52, 61, 61,125,220,156, 57,115, 4,169, 84,138, 15, 62,248, 0, 17, 17, 17,157,123,246,236, 25,231,225,225, 17, - 23, 20, 20,148, 58, 97,194,132,152,204,204,204,158, 45, 90,180, 64,118,118, 54,198,143, 31,111,202,206,206, 14, 47, 29,199, 89, - 86,207,226,164,152, 18,137, 4,125,122,116,206, 94,251,195,114,161, 83,187, 9, 80, 42,172, 97, 22,215, 66,118,161, 25, 57, 26, - 10,163, 44, 12, 82,137, 12,221, 90, 6,225,234,137, 31,181,188, 81,179,237,117,235,252,235,150,231,255, 15, 76, 74, 41,229,121, - 94,207,113,220,102, 65, 16,102, 23,123,146,138,243, 89,149, 53,134, 86, 87, 79, 65, 16, 74, 82, 55, 20, 97,171, 69, 34,209, 47, - 44,203, 6, 21, 79,164,250, 59,238,253,223, 38,175,164,105, 40,254, 36, 68,224,121, 94, 64, 61,175,122, 86,113,177,241,171, 6, - 14, 12, 31,221,189,123, 15,101,143, 30, 61,228, 65,143, 94,186, 40, 14, 29, 58,132,136,136, 8,237,201,147, 39,243,101, 98,118, -115,173,218,181, 92,120, 94, 0, 33,149, 91, 72,172,172,172, 62,158, 49, 99,134, 34, 47, 47, 15, 43, 87,174, 20, 66, 67, 67, 25, -149, 74, 5,147,201,132,205,155, 55,155,131,130,130,196, 12,195, 32, 47, 47, 15, 12,195, 60,182,144,241,222, 37,132,116, 91,211, -161,127, 68,179,137,163, 28, 2, 59,180,178,107, 95,203, 3,230, 38, 20,201, 9,177,120,114,250,100,206,131, 19, 43,178,160, 79, -235, 79, 41,141,170,110, 33,185,187,187,207, 61,121,242,164,243, 71, 31,125, 68,245,122, 61,137,143,143,167,139, 22, 45,114,254, -224,131, 15,230,162,138, 92, 56,149,189, 71,185,185,185, 32,132, 8, 69,149,181,184,113,177,216,252, 74, 41,189, 79, 8,249,165, - 95,191,126,125, 58,117,234,132, 71,143, 30,149,184, 2, 75, 19,172,226,217,132,139, 23, 47,206, 5,254, 72, 16, 88,145,200,100, - 50,108,220,119,252, 88,114,226, 11,101,189,122, 62,122, 27, 59, 59,225,117, 44, 87, 0, 32,101,152,121, 95, 47,156,227,156,249, -240, 42,185,127,229,140,176,247,110, 90, 58,199,211,242, 51,244, 23, 36,211, 34,214, 95,249,232,133, 97,231, 45, 93,188,208,166, -216,125,249,115,100, 74, 62,225,233, 71,111, 54,212,248,135, 96,254, 31,200,203, 25,126,201,196,221,221,157, 22,187,240,202, 35, - 88, 85, 73,121,238,193,215,197,126,254,252,249,162, 38, 77,154,124, 22, 29, 29,189, 55, 48, 48,112, 28,128,218, 6,131, 33,119, -214,172, 89,223,108,222,188,121,180, 37,150, 43, 0,216,189,123,247,138, 81,163, 70, 29,239,213,171,215, 84, 65, 16, 26,149,234, -144,158, 59, 59, 59,151,100,228,202, 72, 75,157, 54,118,244,224,105,133,133, 57, 22,231,169, 83,171,213, 31,206,154, 53, 75,174, -209,104,176,122,245,106, 33, 40, 40,136, 41, 30, 12,237,216,177,131,243,243,243, 19,133, 79,152,144,249, 93,106, 42,190,252,253, -119,205,180,224,224,208, 45, 79,158, 52, 45,207,194, 94,220, 97,150,103,185, 42, 14,175,120,141,142,252, 21,130, 85, 76,178,230, - 78, 94,130,164,164, 36, 72, 36, 18,248,250,250,162, 34,119, 83, 37,237,210, 29, 66,200,224,248,248,248,109,171, 87,175,150,182, -104,209, 2,205,155, 55,135, 88, 44,174, 83,172,175,209,104,196,221,187,119, 49, 99,198, 12,122,253,250,245, 15, 42, 91,160,158, -231,249,116, 63, 63,191, 18,247, 17, 33, 36, 43,223, 64,108,246, 52, 8, 83,143, 28,187,151, 92,188,113, 25,201, 38, 1, 6,179, -128,122, 94,141,209,254,237,239,240,235,177,123,124,114, 92, 84,148, 89,151,179,233,223,216,113,103,103,103, 83,103,103,103,174, -200, 40,209,186, 56,164,166,120,102,232,155, 90,176,138, 6,236, 49,130, 32,164, 49, 12,211,186, 40,247,150,181, 72, 36, 58,205, - 48,140, 35, 0,238,239,184,175,178, 92,228, 95,227, 34,124,133,189,178,204,165,117,235,215,190,179,123,215,207,174, 44,203,184, - 62,139,137,185,241,255,216,187,238,248, 40,138,247,253,204,238, 94,111,185,244, 66, 66, 2,129, 16,154, 64, 66,239, 8, 2,138, - 74, 17,228,135,133,166, 1,196,175, 34, 40,162, 2,210, 17, 4, 65,165, 72, 4, 4, 68, 16,176, 34,160, 82, 4,105, 2,130, 34, -129,208, 2,129,244,118,105,151, 92,174,237,206,239,143,220,157, 71, 72,185, 11, 65, 1,239,249,124,230,115,119,217,203,115,179, -179,179, 51,207,190,243,206,251, 62, 57,100,104,218,222,189,123,125,196, 94, 94,237, 1, 8,166,241,227,143,155,141, 6,221, 15, -223,125, 23,222,160, 65, 68,107, 91,178,103, 42,176,204,209,234,126, 80,175,215,151, 28, 62,124,184,244,173,183,222, 34, 41, 41, - 41, 95, 4, 6, 6, 14,223,179,103,143,106,200,144, 33,134,196,196,196,175,130,130,130, 6,246,234,213, 75,253,250,235,175, 27, -245,122,253, 10, 55, 46,204,121, 66, 72,179,147, 51,151, 60,115,114,241,234, 71,192,177, 93, 96, 20, 1,130,229, 40,204,197,123, - 1,124, 65, 41,173, 85,167, 80, 42,149,173,149, 74, 37,254,248,227,143,252, 14, 29, 58,152,202,202,202,196,243,231,207,247, 85, - 42,149,173,239,160, 35,209,252,252,124, 8,130,192, 1, 32,182, 87, 8,238,231,202,249,191, 39,159,124,242,187,109,219,182,245, - 29, 48, 96, 0, 34, 35, 35, 97,177, 88,208,164, 73, 19,152, 76, 38, 68, 69, 69,193,104, 52, 98,246,236,217, 40, 44, 44,156,236, - 74, 18, 97,153, 76, 6,137, 68,130,232,102, 45, 75,101, 50, 25,106, 43,174, 0, 64, 41, 98, 34, 47,254,176, 30,217,121,185,194, -182, 63,179,178, 74,205,124,191,203,217, 37, 9, 21,191, 87,202,163,164,215,232, 87,210, 0,192, 40, 64, 95, 45,167, 4,145, 23, -127,136, 71, 86,118, 46,190, 60,147, 81, 80, 98, 22,250, 95,172,132,211,173,122,222, 39,156,195, 86, 36,162,231, 75,174,127,119, -251,184, 59, 27, 32,106, 35,164,236, 56,127,141, 18,172,105, 70,177,102, 69,165, 49,174,238,132,219,102,153,250,206, 54,169,164, -140, 24, 49, 98,218,245,235,215,231,218,226, 93,173,113,135,107,253,250,245,151, 1,140,169,238, 59, 91,151,140,249, 6,192, 55, -238,240, 22, 23, 23,151,157, 62,125,186,236,245,215, 95, 39, 41, 41, 41,123,130,130,130,250,254,248,227,143,138, 33, 67,134, 24, -207,157, 59,183, 63, 36, 36,164,123,159, 62,125, 84,187, 79,156, 72, 43,189,122,245,135, 31,174, 95, 15,181, 8,194, 15,213, 9, -162,186, 18, 87,118, 62,103,203,144, 93,100,133,132,132, 32, 60, 60,252,142,238,123, 74,233, 54, 66,200,133,174, 93,187,126, 61, -122,244,232,198, 29, 58,116, 64,147, 38, 77,160,211,233,144,154,154,138, 35, 71,142, 32, 62, 62,254,132,193, 96,248,159,179,101, -181, 50,228,229,229,221,150, 70,136,200,125, 67, 54,172,156,181,243,212,145,246, 77,186, 13, 24, 37,111, 25, 34,192,100,166, 72, -185,113, 21,179,103,172, 45,205,184,113,249,188,217,106, 30,124,191,199,192,170, 1,173,120,158,255,198, 98,177,212,183, 89, 99, -235, 44,166,149,201,100,210, 91,173,214, 81, 28,199,241, 34,145,104, 35,203,178,141,109,105,237,230, 81, 74,185,187, 37,176, 30, - 72, 11, 86, 69, 36, 37,165,156,143,140, 12,123,251,235,175,118,116,161,148, 97, 41, 33, 37, 90,173,247,206,155, 55,111,222, 18, - 5,187,145,143,143,122,204,139, 99,134, 19,129,136, 8, 17,120,129,101,142, 38, 37,165,156,175,225,194,141, 27, 62,124,248, 71, - 10,133, 98,186, 78,167,251, 67,171,213,254,217,186,117,235,185,148,210, 25, 6,131,225, 59,181, 90,125,162,115,231,206,243,195, -195,195,151, 83, 74,127,119,243,166,182,162,220,255,107, 99, 29,155,108,231, 0,240,226, 56,174,240,175,191,254,218, 18, 29, 29, - 61,130, 82,234, 69, 8, 41,172, 45,103, 89, 89,217,255, 10, 10, 10,252,226,226,226, 44,241,241,241,209,163, 70,141,154,150,144, -144, 32, 42, 43, 43, 75,114,243,156,141,132,144,129, 79, 63,253,244, 90,145, 72,212,155, 97, 24, 34, 8, 2,117, 58, 14, 74, 41, -120,158,255,190,166,118, 17,137, 68,250, 71, 31,125, 84, 85,163, 85, 74, 34,209,187, 60,201,152,248, 73,171, 15, 36, 44, 44,179, - 80,106, 21,232,184,139, 89, 37,149,110, 33, 59,121,145,182,112,153,179, 76,152,244,209, 79,231, 23, 26, 45,130, 96, 21,232,248, -170, 56,221,154, 12,239, 19, 78, 0,152,192,172,248, 28,107, 86, 56, 28,222,237,203,134, 21, 63,215, 53,236,150, 38,184, 19,101, -217, 22,142,225,252,184,187,192, 93,137,216,114, 23, 67,135, 14,189,107,254, 36,102,179,249,157, 39,159,124,114,174, 86,171,125, - 63, 39, 39,231, 15,173, 86,123,190,105,211,166,147, 4, 65, 88, 94, 90, 90,186, 83,173, 86, 63,209,174, 93,187,201, 17, 17, 17, - 27,146, 41,221, 80, 29, 23,207,243,105,118, 43, 14, 0,106,183, 62,217, 5,132,179,144,176, 88, 44,169,174,212,143,231,249,180, -214,173, 91, 19,103,107, 86,197, 87,103,184,202, 91,225,161,183,233,220,185,115, 59, 3,120, 24, 64,107, 0, 69, 0,110, 0, 56, - 78, 41,253,177,214, 2,206,144,151, 78, 8,137,189,112,230,240,248, 75,231,207, 60, 99,223, 45,200,178,146,115,188,185,116,163, -197,144,191,246, 1, 23, 87,200,206,206,254, 3, 64,248,221,224, 54, 26,141, 35, 8, 33,137, 44,203, 82,145, 72,244, 12,203,178, -191, 8,130,240,190,201,100,218,204,223, 43, 33,223,239, 3,144,187,217, 7, 9, 33,125,234, 58, 95,145,135,211,195,233,225,244, -112,122, 56, 61,156, 30,206,187,199,233,235,235,171, 0, 96, 34,132, 80,150,101,149, 12,195,120, 83, 74, 13, 60,207, 23, 90,173, - 86, 75,126,126,190,112, 55,234,249,159,176, 96,121,224,129, 7, 30,120,224,129, 7,255, 77,240, 60, 95, 86, 80, 80, 32, 0,128, -143,143, 79, 9, 33,196, 68, 41,229, 41,165,124,126,126,190,224,105, 33, 23,133, 45,128, 74,119, 2,184,163, 76,107,179,155,160, - 38,126, 15,167,135,211,195,233,225,244,112,122, 56, 61,156, 15, 30,231,127, 6,118, 31,157,187, 81, 0,244,241,112,122, 56, 61, -156, 30, 78, 15,167,135,211,195,233,225,252,175, 21,198, 35, 49, 61,240,192, 3, 15, 60,240,192, 3, 15,234, 22, 30, 31, 44, 55, - 97,203, 41,247, 18,128,161, 0, 26, 1,184, 10, 96, 7,128, 85,110, 36, 60,118,230,211, 0,152, 6,160, 11,128,134, 0,174, 1, - 56, 12,224, 61, 74,169,222,211,226,149,195,223,223,255,109,145, 72,164, 5,202,131,226,217, 95,157,223,243, 60, 95, 80, 88, 88, -184,224, 46,245, 3,150, 82,202,187, 83, 87,231,186, 57,191, 90, 44,150,187, 86, 79, 15,238,217,113,164,137,143,143,207,102,157, - 78,247, 44,165,244,146,167, 69, 60,120,144, 16, 16, 16, 48,222,108, 54, 79, 23,139,197,243,179,179,179, 87,255,231, 5, 22, 33, -228, 16, 0, 80, 74,123, 0,128, 90,173, 62,198, 48, 76, 67,219, 49, 0,128, 83, 4,215, 74, 95, 5, 65,184,150,151,151,215,185, -170, 31, 83, 40, 20,199, 88,150,109, 72, 8,177, 39,159, 5,195, 48,176, 88, 44,106,150,101,139,171,224, 76,213,233,116,109,239, -145, 65,145, 0,248,193,219,219,187,108,238,220,185,171,122,246,236, 25,150,158,158,110,157, 58,117,106,247, 63,255,252,115, 0, - 33,228, 81,119, 68, 22, 33,164, 19, 33,100, 67,155, 54,109,190, 25, 57,114,228,182, 14, 29, 58, 72,242,242,242,212, 59,118,236, -168,183,113,227,198,211,132,144,103,221, 13, 85,113, 31, 76, 44, 92, 85,241,200,170, 59, 86, 17, 34,145, 72,155,154,154,170,182, -245, 89, 71,228, 97,139,197, 2,139,197,130,146,146, 18,180,110,221,186,206,235, 31, 28, 28, 28, 67, 8, 89, 17, 21, 21,213, 54, - 36, 36,228, 20,128,137,233,233,233,127,186, 83, 87,171,213, 10, 74,169,163,158,205,155, 55,247,140,200,238,245,161, 23, 36, 18, - 73,255,168,168,168,246, 70,163, 49,255,218,181,107, 39,121,158,159, 73, 41,205,172, 35,126, 47, 0, 51,165, 82,105,135, 70,141, - 26,133, 93,190,124, 57,197,108, 54,159, 0, 48,135, 82, 90, 88, 7,252, 77,122,244,232,113,100,229,202,149,190, 19, 38, 76, 56, - 66, 8,233,234, 17, 89, 30,252, 91,168, 95,191,190,182,164,164,100, 45,128, 24,145, 72, 20,100,203, 65,152, 41,149, 74,255,144, -203,229, 99,143, 28, 57, 82,224, 46, 39,207,243, 51,147,147,147,131, 58,118,236,184,184,101,203,150,179,115,115,115,203,204,102, -243,254,252,252,252,201,148,210,162, 26,238,143, 91,180,200,125, 47,176,108,121,127,122,222,114,128,227, 66,147,147,147, 3,212, -106, 53,120,158,119, 88, 7,236,147,153,115,120, 7, 91,156, 37, 52,109,218,212, 92,195, 68, 19,150,154,154, 26,160, 82,253, 29, -106,201,108, 54, 35, 40, 40, 72, 72, 75, 75, 11,168,152, 72,216,100, 50, 33, 52, 52,244, 94,138,101,242,146,143,143, 79,225,205, -155, 41,173,203,140,230, 57, 47,254,239,173,183,159, 29,250,136,247,177, 99,199,132, 71, 31,125,212,120,232,208,161,151, 0,184, - 20, 28,149, 16,226, 69, 8,217, 56,117,234,212,217, 50,133,198,247,192,177,243,198,141, 59,118,165,181,105,210,128, 76,158, 60, -153,125,229,149, 87,126,141,137,137,217, 76, 8,137,117,199,146,165, 86,171,127,148, 74,165, 17, 44,203,194,108, 54,223,212,233, -116,125,239,161,137,177, 13,128, 51,132,144, 24, 74,233, 31,174, 30,171, 14,121,121,121, 48, 24, 12,183,149,230,205,155,163,174, - 67,144, 16, 66,184,176,176,176,239, 22, 46, 92, 88, 47, 51, 35, 3, 31, 44, 91,214, 17,192, 42, 0, 29, 93,249,255,236,236,236, -219,234,217,180,105, 83,120,224,214, 53,152, 54,123,246,236,133,207, 60,243, 12,120,158,135,193, 96, 8,185,114,229, 74,139,233, -211,167, 15, 38,132,180,167,148, 38,221, 33,191,127, 84, 84, 84,226,164, 73,147,124,218,183,111, 15, 91, 86,137,144,195,135, 15, -119, 92,183,110,221,243,132,144,166,148,210,156, 59,249, 13, 31, 31,159,205,159,126,250,169,175, 66,161,192,247,223,127,239,219, -187,119,239,195,132,144,110,181, 21, 89,132, 16,198,215,215,247, 21, 0, 15, 11,130, 32, 1,112, 34, 63, 63,127, 30,165,212,236, -233, 49, 30, 84, 7, 63, 63,191, 23,138,139,139, 87, 74,165, 82,177,183,183, 55, 20, 10,133, 61, 7, 97,125,169, 84, 90, 95, 42, -149, 62,246,240,195, 15, 79, 60,112,224, 64,181, 17,241, 59,199, 4,141, 6, 67,230,176,132, 97, 1,160,121,148,175,198,203,203, - 11,115,230,204, 81, 14, 28, 56, 80, 9, 0, 71,142, 28, 25, 57,106,212,168,222,132,144,150, 85,137,172,202,180,200, 3, 97,193, -162,148, 30,170,112,162,144,203,229,216,182,109, 27, 88,150,189, 37,139,123,101,239,235,215,175, 95,227,143,217, 45, 96, 59,119, -238,132, 70,163,129,151,151,151, 99,130,145, 74,165,216,191,127, 63, 68, 34, 17, 56,142,131, 72, 36, 66,219,182,109, 81, 77,130, -249,187,130, 97, 45,202,147, 76, 86, 22,188,177, 91, 35, 57,134,190, 50,107,120,105,153,185, 29,128,146,130,252,252,252, 83, 95, -127,157,222,166, 73, 19,241,230,205,155,219,215,171, 87,111,168,171, 2, 11,192,180,216,216,216,175, 88,185,151,223,200, 81,163, - 71,142,229, 24,243,243,227, 94,159,159,146,145, 91, 18, 23, 23,247,245,247,223,127, 63,114,209,162, 69, 23,222,120,227,141,105, - 0,222,113,181,254, 18,137, 36,226,202,149, 43, 81,130, 32,224,161,135, 30,186,103,210, 13,216, 5, 20,165, 20,132,144, 91,132, - 84,117,199,106,130,221, 98, 85, 89,169,107,212,171, 87,175,233,115,207, 61,231,167,203,205,197, 7,203,150,217,255,220,182,166, -229, 66,251, 82,160,201,100,194, 83, 79, 61,245, 28,207,243,156, 93,252, 25,141, 70, 83, 97, 97, 97,153,211, 78,157, 28, 74,233, - 35, 46,180,103, 67,165, 82,249, 62,128, 24,131,193, 80, 15, 0,148, 74,101,154, 32, 8,223,148,148,148,188, 67, 41, 53,212,242, - 58,133, 1,104,129,170, 83, 54,209,133, 11, 23, 94,158, 54,109, 90,210, 63,205, 73, 8,137, 8, 12, 12, 92, 48,108,216, 48,236, -218,181, 11,187,119,239,182,200,229,114,110,212,168, 81,100,226,196,137,222,147, 38, 77,122, 12,192,135,119,120,153, 31,155, 61, -123,182, 79,179,102,205,176, 99,199, 14,156, 61,123,214, 16, 21, 21, 37,239,217,179, 39, 56,142,243,121,251,237,183, 31, 5,176, -225, 78,126, 64,167,211,205,123,253,245,215, 55,110,217,178, 69,125,237,218, 53,172, 88,177,194,111,248,240,225,135, 8, 33, 61, - 92, 21, 89,132, 16, 41,128, 87, 0,244, 98, 89,182,219,168, 81,163,172,255,251,223,255, 68, 12,195, 88,150, 45, 91,230,191,110, -221,186,225,126,126,126, 49,185,185,185, 30, 55,131,106,192,178,172, 89, 16, 4, 17, 0, 25,165,212, 88,211,231, 7,233,220,125, -125,125, 39,228,231,231,175, 10, 10, 10, 66, 96, 96,224,109,115,173,209,104,132, 76, 38, 19, 7, 5, 5,125, 58,104,208, 32,209, -183,223,126, 91,229, 82, 31, 97,201,204,239,183,206,173,231,227,173, 6, 0, 44,255,228,167, 82, 0,248,246,219,111,145,158,158, - 14,111,111,111,180,108,217,146,157, 59,119,110,240,228,201,147, 63, 0, 48,182, 42,174,138, 90,228,129, 16, 88, 85, 77, 12,246, - 68,162,118, 33,101, 23, 63, 21,223,219, 69, 89,133,134,218, 87, 97, 80, 32,122,189,222, 33,174, 52, 26, 13,108,147, 42, 44, 22, -203,109,188, 60,207,163, 98, 86,109, 87,182,127, 18, 66, 38, 0,216, 79, 41,189,234, 74, 35, 56,115,110,127,185, 41, 54, 74,167, -142,176,135, 60,127,236,245,242,215,141, 0,142, 93, 31,187, 98,101,143, 30,245, 94,153,241,209, 44, 67, 94,122,238,219,207, 61, - 17, 17, 21,228, 43, 87, 22,100, 23,250, 68, 71,247,131, 83,250, 0, 23,234,217,125,228,200,145,155,126,254, 45,153,200,100, 98, - 49,199,178,162,174, 15, 53,241, 13,243, 98,189,212,128, 87, 74,210,229, 99,163, 71,143,126,232,141, 55,222,232,230,206,185, 51, - 12, 3,141, 70,131, 77,155, 54,129,177, 43, 90, 23,207,189,174, 80,201,117,231,236, 2, 74,167,211, 97,215,174, 93, 24, 48, 96, -192, 25, 66, 72,140,237, 43,103, 40,165, 40, 42, 42, 66, 70, 70, 6,130,131,131,207, 16, 66, 68,206,203,133, 21, 57,237, 86, 84, -187,152, 26, 53,106,212,115, 86,171,149,115, 26, 28, 42, 10,151,219,196,139,171,231, 30, 18, 18,242, 51,128, 71, 88,150,133,169, -172,204,244,254,210,165,206,135,127,119, 22, 87, 85,113,218,235,202,243, 60,119,230,204, 25,145,253,158, 1, 32, 2,160, 4,224, -103, 75,170,250,151, 11,237,217, 84,161, 80, 28,219,185,115,167,166,109,219,182, 68, 34,145,192,106,181,226,220,185,115, 97,139, - 22, 45, 26,183,111,223,190, 71, 9, 33,205, 43, 38, 53,119,241,186,183, 56,124,248,112, 73,100,100,100,165,130,177,168,168,136, -107,210,164, 73, 15, 0, 73,255, 2,103,106, 86, 86,214,160, 71, 30,121,100,124,102,102,102,162,213,106,125, 19, 64, 75, 63, 63, -191, 51, 67,134, 12,129, 92, 46,239,229,138,192,170,238,186, 7, 4, 4, 12,236,220,185, 51, 86,172, 88,129, 69,139, 22,245,161, -148,238, 39,132,244, 46, 42, 42,218,247,228,147, 79, 66,171,213, 14,170, 76, 96,185,218,151, 8, 33, 77,186,119,239,254,233,156, - 57,115,212,187,118,237, 66, 84, 84, 20,138,139,139, 49,101,202,148,128,119,223,125,247, 32, 33,164,167, 93,100, 85,197, 73, 8, -105, 46,149, 74, 55,108,217,178, 69, 21, 25, 25, 25, 41, 22,139,153,200,200, 72,232,116, 58,148,149,149, 73,231,207,159,255,144, - 92, 46,255,243,195, 15, 63,220, 0, 96,200, 63,125,191, 87,168,107, 33, 0, 13, 0,173, 59,203,171,213,156,123, 33, 0,169,227, -230, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,249,242,229, 25, 18,137,100, 25, 42, 73,229, 82, 25, 39,249,123,210,106, 77, - 8, 57,201,178,108,181,159, 43,186,128,252,211,237,105,171,115, 40, 33,100, 57,128, 94,229, 67, 62,115,200,207,207,239,213,204, -204,204, 27,174,114,134,132,132,248,234,245,250, 15,131,131,131, 17, 24, 24,232,152, 59,234,213,171, 7,139,197,130,172,172, 44, - 80, 74, 81, 80, 80, 0,133, 66,129,144,144,144, 15,199,141, 27,183, 99,205,154, 53,121,149,114, 10, 88,244,228,240,233, 51, 89, -150,101, 0,128,229, 84,170, 73,111, 1, 17, 17, 17,232,218,181, 43,202,202,202, 80, 88, 88,136, 22, 45, 90,112,132,144,145, 12, -195,104, 40,165,171, 41,165, 7, 30,100, 1,111,159,144,102, 87, 92,247, 36,132, 64, 16, 4,112, 28,119,139,192,170, 88,236, 98, -200,214, 79, 73, 77,166,108,147,201,228, 16, 87, 94, 94, 94, 14,113,102,181, 90,171, 18, 88,181, 81,230,173, 4, 65,104, 72, 8, - 89,227,170,200,170,136,145, 35, 71,222,230,207, 49,121,242,228,212,236,236,108,250, 84,191,214,202,196, 61,233, 25,141,188, 85, -114,127,181,186,129,204,219, 71,155,151,151,119, 28,128,214,141,159,104, 28, 27, 27, 43,223,248,245,225,212, 23, 95, 91, 56,183, -109,164,175,166, 85,168,159,119,144,151, 92,162, 98, 72,137,204,106, 73,245,241,241,137,170,197, 19, 25, 0, 64,171,213,130,227, -184,123,194,130, 69, 41,181, 18, 66, 98, 8, 33,103,118,237,218,133, 14, 29, 58, 56, 68,150, 93,124, 20, 22, 22,226,220,185,115, -232,222,189, 59, 0,196,184,226,139, 37, 8, 2,204,102, 51,204,102,179, 67,184,136,197,226,219,132,139,253,187, 44,203,254, 85, -203, 83,152,235,237,237,221,189, 87,175, 94,146,173,219,182, 73, 40,165, 37, 40, 79, 72,173,167,180,138,196,213, 21, 96,181, 90, - 29, 86, 53,145, 72,132,155, 55,111, 58,172,192,118, 75,112,197, 37,242,170, 32,149, 74, 95,255,242,203, 47, 53,237,219,183, 39, -121,121,121, 16, 4,193, 49, 56,174, 90,181, 74, 54,116,232,208,122,167, 79,159,126, 27,181, 72, 59, 3,128, 84, 37,132, 0, 64, -163,209, 88, 1,183,119, 31, 87,202,105,181, 90, 73,151, 46, 93,222,200,205,205,125,200, 96, 48,204,119,165, 31, 1,248,222, 86, -236, 99,202,159,137,137,137,134,167,159,126, 90,222,160, 65,131, 14,119,218, 87,155, 52,105,210, 73, 36, 18,225,196,137, 19, 70, - 0,246, 39,233, 67,103,207,158, 53, 14, 25, 50, 68, 26, 22, 22,214,201, 13,203, 93,147,166, 77,155,238, 13, 8, 8,144,219, 45, -150,195,134, 13, 19,197,199,199,171,211,210,210, 96, 54,155, 49,109,218, 52, 60,254,248,227,240,243,243,195,228,201,147, 3, 23, - 47, 94,188, 25, 64,108, 53,156, 50,137, 68,178,233,202,149, 43, 81,193,193,193,242,223,126,251, 13,173, 90,181, 66,110,110, 46, - 50, 51, 51,161,215,235,145,153,153,137,177, 99,199, 6,124,240,193, 7, 33,247,208, 92, 83, 32, 22,139,161, 80, 40,180, 5, 5, - 5,119,226,199, 38, 5, 32,113, 22, 87, 82,169, 20, 82,169, 20, 50,153, 12,130, 32, 60, 16, 73,130,171,185,254,245, 8, 33,231, -197, 98,177, 84,161, 80,136, 25,134,129, 84, 42,237,231,227,227,147,208,183,111,223,150, 63,255,252,115,178, 43, 60,101,101,101, -155,164, 82,169, 40, 32, 32, 0, 0, 16, 21, 21,133, 86,173, 90,161,164,164, 68, 40, 44, 44,132, 86,171,101,110,220,184, 1,131, -193,128,140,140, 12,132,135,135,139, 24,134,217, 4,224,209,202,248,142,158,206,248, 4,192, 39,246,207,254,254,254, 89, 0,228, -246,207, 50,153, 12,245,234,213, 67, 90, 90, 26,212,106, 53,251,238,187,239, 14,217,182,109,219, 96, 66,200, 72, 74,233,231, 78, - 84,179, 31, 56, 31, 44, 74,233, 44, 66, 72,143,202, 38, 48,219,122,108,149,150, 43,123,113, 69, 8,217, 19, 81, 6, 6, 6, 66, -161, 80, 64,161, 80, 56, 18,142,242, 60,127, 27,191,237,137,222,237,147, 82, 42,149,120,230,153,103,232,234,213,171,199,219, 68, -214, 21, 87,255,119,216,138, 68,135,213,170, 34,154, 55,111,126,236,237,183,223, 30,248,203, 47,191,164,181,141,108,192, 41,211, -111,232,101, 26,173, 22,161,245, 7,140, 26, 52,228, 44,202,119, 19,186,138, 43,197,197,197,242, 70,161, 10, 19,195,148,145,250, - 82, 78, 29,172, 20, 75,131,188,189,235,137, 77,198,108,141,183,183,196,104, 52, 22, 0,168, 54, 57,179, 70,163,249, 73, 42,149, -134,179, 44, 11,150,101,225,231,231,231, 69, 41,133, 86,171, 69,104,104,168, 42, 58, 58,250, 18,199,113, 96, 24, 6,122,189,254, -198,245,235,215,251,213, 84, 49,111,111,239,159,164, 82,105,184, 61,121, 40,203,178,142, 13, 9,246,247, 44,203,130, 16,130,210, -210, 82,151, 56, 41,165,127, 16, 66, 98, 6, 12, 24,224, 16, 89,123,246,236, 65,255,254,253, 81, 80, 80,128,132,132, 4,103,113, -229,210,242,160,179, 83, 59,165, 20, 98,177, 24, 23, 47, 94,188,101,233,218, 94,212,106,117,173,111, 18, 31, 31,159, 35,195,134, - 13,195,167,159,126, 74,109, 89,222,149,132,144, 86, 94, 94, 94, 23,207,159, 63,239,146,159, 11,165, 20,102,243,223, 95,181,247, -113,231,251,203, 13, 17,221, 47, 54, 54,150, 20, 22, 22,218,133,163,227, 65,136,101, 89,172, 92,185, 82,222,190,125,251,233, 50, -153,236, 13,177, 88, 92,100,177, 88,182,150,149,149,205,167,148, 22,220, 75,131, 79,183,110,221, 94, 75, 73, 73,121, 60, 60, 60, -124,231, 29,136,119,218,174, 93, 59, 19, 0, 57,203,178,162, 58,152,192, 88, 91,223, 42,179,139,124, 74,169, 53, 54, 54,182,204, - 54,185,187,156, 1,217,207,207,111,243,238,221,187, 67,195,195,195, 97,177, 88, 96,181, 90,161,215,235,113,232,208, 33, 24,141, - 70, 88,173, 86, 68, 69, 69, 97,230,204,153,101,175,190,250,170,108,205,154, 53,217,122,189,254,217, 26,104, 95,221,177, 99,135, - 50, 56, 56, 88,110, 48, 24,144,148,148,132,216,216, 88, 20, 23, 23,163,164,164, 4,165,165,165, 48,155,205, 40, 42, 42,210,242, - 60,111,186,103, 38, 26,142,131, 84, 42,133, 88, 44, 46, 8, 15, 15, 7, 33, 68,150,156,156, 92,155, 37, 55, 13,128, 34,145, 72, - 36,113, 22, 86, 82,169, 20, 39, 78,156,120, 71, 38,147,125, 0, 55, 18, 17, 87,204, 87, 88,211,231,123, 64, 96, 45, 23,139,197, - 82, 31, 31, 31,177,211, 60, 45, 86,169, 84, 8, 8, 8, 88, 1,224, 49, 23,207,187,141,143,143,143, 99,124,111,221,186, 53, 82, - 82, 82,190, 41, 44, 44,124, 62, 59, 59, 27, 12,195,108, 98, 24,102,176, 93, 7,228,231,231, 35, 44, 44,172, 77, 85,124, 93, 98, -131,199,131, 80,135, 5,171,121, 99, 31, 85,133,121, 10, 26,141, 6,215,175, 95, 71, 73, 73, 9,189,124,249, 50,153, 48, 97, 2, - 49,153, 76,159, 17, 66,142, 83, 74,175, 85,167, 69,238,119, 11, 86,165,235,158,246, 37,194,202, 4, 85, 69,193,229,138, 16, 50, -153, 76,170,216,216, 88,193, 62,113,219, 11, 0, 82,149,192,178, 89, 10,220,134, 72, 36, 82, 79,152, 48,161,120,245,234,213,227, - 8, 33,241,148,210,203,181,109,164,157, 95,109, 9, 92, 52,115,218, 76,159,144, 6,141,222,120, 99, 6,247,196, 19, 79,252,182, -113,227, 70,222,167,217, 99,189, 15,252,244,121,224,135, 83,166,238,217,189,123, 55, 80,238,240,236, 42,142,252,240,195, 15, 65, -147, 95,153,136,153,175,191,250,163, 38,202, 79,162, 34, 62, 74,153,177, 36, 71, 5,106,144, 54,110,250,248,215, 59,119,102, 0, -168, 54,211,188, 92, 46, 15,191,124,249,114,148,179,128, 48,155,205,208,106,181,216,184,113,163,191, 90,173,246, 87,169, 84,224, - 56, 14,173, 90,181,114,213, 66, 18,126,233,210,165, 40,181, 90,141,210,210, 82, 24,141, 70, 88, 44, 22, 8,130, 0, 66, 8, 68, - 34, 17, 36, 18, 9,148, 74,165, 91, 59,245,156, 69,214,158, 61,123,208,162, 69, 11,228,231,231, 35, 49, 49,209,109,113,229,108, - 21,114,246,183,226, 56, 14,155, 35, 35,241, 98,122,186, 67,184, 44,247,242,194, 76,161,118,217, 29, 30,122,232, 33,122,244,232, - 81,252,248,227,143,120,242,201, 39,201,119,223,125,103,230,121, 94,156,150,150,230,178, 53, 76, 16, 4, 71, 93,237,227,181,179, -176,114, 87, 96, 89,173, 86,181, 68, 34, 65, 89, 89,153, 99, 9,223,185, 52,108,216, 16, 58,157,142, 43, 42, 42,226,210,211,211, - 21,243,230,205,251,223,193,131, 7,131, 1,140,248, 55, 7,155,213,171, 87,135,191,248,226,139, 55, 57,142,163,253,251,247,127, -238,198,141, 27,131,130,131,131,247,255,242,203, 47, 75, 1, 52,113,151,207,223,223,255,119,142,227, 66, 85, 42,149,120,251,246, -237,150,226,226, 98,113, 64, 64, 64,150, 93,208,218,219,218, 98,177,164, 22, 22, 22,182,117,133,207,223,223, 95,252,241,199, 31, - 91,242,242,242,196, 65, 65, 65, 89,118, 30,165, 82, 41,222,190,125,187,165,168,168, 72,172,213,106,127, 47, 40, 40,168,145, 47, - 55, 55,247,217,145, 35, 71, 30,222,191,127,191, 31,203,178,184,113,227, 6,242,242,242,160,213,106,177,105,211, 38,132,135,135, - 99,199,142, 29, 58,157, 78,247,194,251,239,191, 63, 93,175,215,187, 18,178,161,123,135, 14, 29,194, 11, 10, 10,160,213,106, 81, - 82, 82,130,223,127,255, 29,205,155, 55, 71,122,122, 58, 24,134,129, 86,171,197,170, 85,171, 74, 9, 33,186,123, 97,146, 97, 89, -214, 97,101,114, 18, 69,101,157, 58,117,194,129, 3, 7,222,116, 71, 20, 81, 74, 77, 34,145,232, 22, 97,101,127, 47, 22,139,173, -238,214,141,231,121,177,205, 7,148,184,242,249, 30, 64, 15,185, 92, 46,174,248,199,210,210, 82,113,112,112,112, 55, 55, 4,175, -175, 92, 94,110, 96, 10, 15, 15, 71, 97, 97, 33,111, 50,153,134,111,218,180,201, 2, 0,177,177,177,195,121,158, 47,179, 90,173, -172, 68, 34, 65, 73, 73, 9, 2, 2, 2,124,171, 36,100,234, 68,239, 5, 0, 0, 32, 0, 73, 68, 65, 84,240,230,247, 91,231, 5, - 85,244,193, 10, 14, 14, 70, 76, 76, 12,140, 70, 35, 50, 50, 50,112,232,208, 33, 11,207,243, 95,172, 94,189, 90,240,247,247, 31, -243,212, 83, 79,177,167, 79,159,126, 25,192,107,213,105,145,251, 90, 96,217, 20,227, 65, 0, 61,237, 39,231,188, 68, 88,157,229, -170,130, 5,139,212,112,163, 21,164,166,166, 42,149, 74,165,227,111, 22,139, 5, 33, 33, 33,130, 32, 8,164,226,239,216,235, 81, - 91,136, 68, 34,245, 91,111,189, 85,176,106,213,170,231,225,162,163,248,246,151,155, 98, 99, 5,113,245,201,162, 57, 43, 62, 94, - 60,207,231,234,158,207,176,246,163, 37, 60,207,227,244, 67, 15, 61,212, 77,175,215,115, 94, 74, 11,114, 11,176, 7,229,113,176, - 92, 18,131,182, 88, 90,235, 79,158, 60,121,250,177,199, 30, 59,186,254,203,175,125,210,147,146,142, 75,139,114, 51, 52,141,163, - 56,113,189,240,193,197,101,101,226,225,195,135,251, 3,120,170, 58, 46,134, 97,144,148,148,132,228,228,100,168, 84, 42,168,213, -106,168, 84, 42,104, 52, 26,168,213,106,168,213,106,183,219,144, 97, 24,240, 60,143,175,190,250, 10, 10,133, 2, 74,165,242,150, - 98, 23, 87,119,114,109,250,247,239, 15,157, 78, 7,149, 74,229, 88,214,116, 7,118, 31, 44,147,201, 4,147,201, 4,179,217,204, - 3, 16,113, 28,135,177,169,169, 14,171,142, 59,194,165, 34, 90,181,106, 69,143, 31, 63,142,163, 71,143,162,164,164, 4, 31,127, -252, 49,130,131,131, 31, 6, 48,195,141, 39,206,200,160,160,160,254,125,251,246, 13,177, 88, 44,208,235,245,204, 95,127,253, 5, -153, 76, 6,150,101,145,154,154,138, 45, 91,182,224,250,245,235,118,235, 97, 40, 33,164, 1,165,244,122,117,147, 2,199,113,142, -167, 79,123,113,182, 98,177, 44,139,192,192, 64, 4, 5, 5,225,147, 79, 62, 17, 55,104,208,224,241,127,115,160, 89,188,120,113, -227,229,203,151,175,219,184,113,227,158,103,159,125,118,219,185,115,231, 70,123,121,121,253,117,224,192,129,121, 82,169, 84,168, -229,253, 29,154,158,158, 30,224,252, 39, 65, 16, 20, 86,171,213, 33,104, 75, 75, 75,209,178,101, 75,151,249,206,159, 63,175, 0, -128,121,243,230,137, 0, 40,236,225, 63,236,156,165,165,165,162,230,205,155,135,186, 40, 6, 46, 17, 66,186,245,233,211,231,216, -222,189,123,189,195,195,195,145,150,150,134,180,180, 52, 52,110,220, 24, 11, 22, 44, 40, 41, 42, 42,234, 98, 19, 85,223,185,120, -218, 33,222,222,222,162,155, 55,111,194,106,181,162, 77,155, 54, 88,181,106, 21,134, 15, 31,142,150, 45, 91,162,168,168, 8,231, -207,159,199,134, 13, 27,188,197, 98,241, 83,255,246, 4, 99, 91,194,170,178,212, 6, 86,171, 85, 35,147,201,138,164, 82,169,196, -238,127,117,232,208, 33,183,173, 87,206, 15,126,238,124,190, 23,196,106, 69, 72, 36, 18, 4, 5, 5,185,204, 35,149, 74,137,125, -108,180, 90,173, 40, 44, 44,228,131,131,131, 29,203,248,103,206,156,225, 35, 34, 34,120,150,101, 89,137, 68, 2, 66, 8, 20, 10, - 69,149, 3, 62,229,233,156, 39,134,207,112,236, 34,100, 68, 74,205,164,183,202, 31,246,207,156, 57, 3,179,217,140, 67,135, 14, - 89,222,127,255,253,244,130,130,130, 73, 0,184,159,126,250,105,228,212,169, 83,217,128,128,128, 62, 78,227,229,109, 90,228, 65, -176, 96, 29,164,148, 18,155, 67, 57,177, 11, 27, 74,233,109,162,170, 42,193,101,179, 96,145,154,110, 54,150,101,241,227,143, 63, - 58,132,128,125, 23, 33,165, 20,117, 45,176,124,125,125, 75, 58,116,232,160, 73, 73, 73,217, 82, 91,203,213, 39,139,230,172,120, -111,222, 44,159,188, 11,199,145,154,158, 1, 93,182,229,244,145,191,174,127, 3,224, 27, 0,192,154,102, 7, 49,238,194, 74, 87, - 57,155,249, 43, 90, 63, 20,162,254,230,145,199, 30, 15,123, 58,238, 53,230,165,151, 94,234, 58,114,228,200,194,103,159,125,246, - 21,149, 74,213,196,108, 54,231,127,189,107, 87,242,211, 79, 63,221,128,231,249,145, 53,197, 12,177, 88, 44, 55,134, 12, 25,226, -104,219,160,160, 32,205,214,173, 91, 3,213,106, 53,158,123,238,185,156,228,228,100,199,178, 80,113,113,241, 13, 87,234,104, 54, -155,111,180,110,221,186,202,101, 65,187, 5,210, 29, 78,219,181,116,236, 22,204,203,203,195,197,139, 23,193,113, 28, 58,118,236, -136, 35, 71,142,160,107,215,174,110,237, 32, 44, 43, 43, 67,120,120, 56,202,202,202, 80, 82, 82, 82, 10, 64,186,169, 65, 3, 0, -192,203,121,121,248,253,253,247,241,219,194,133,181,234, 71,173, 91,183,166, 39, 78,156,192, 95,127,253, 5,163,209,136, 23, 94, -120, 1,182,229, 65, 0,232,235,226,249,182,108,218,180,233,190, 3, 7, 14,248,171,213,106,232,245,122,232,245,122,140, 25, 51, - 6,227,199,143,135,197, 98,193,234,213,171,241,237,183,223, 66,163,209, 64,175,215,163,164,164,196,123,192,128, 1,199, 8, 33, -221,171, 90,218,166,148,146,235,215,175,227,189,247,222,131, 32, 8,152, 58,117, 42,162,162,162, 28,194,234,198,141, 27,152, 55, -111, 30,120,158,199,187,239,190,139,198,141, 27,195, 98,177,200,220,137, 51, 86,215,152, 60,121,242,213,111,190,249,102, 79, 74, - 74,202,163,139, 22, 45,234, 65, 8, 17,222,120,227,141,247, 52, 26, 13,127, 39,188,249,133,197,184,120,229,134, 67, 0, 85, 44, -254,126, 62,110,243, 93, 78, 74,113,252, 63,207, 59,243,241,240,245,241,118,183,138,165, 22,139,165,100,240,224,193,218,175,190, -250,138, 52,110,220, 24,215,174, 93,179, 63,148,150,214, 34, 52, 67,154, 78,167,139, 98, 89, 86,124,229,202, 21, 68, 68, 68,160, - 67,135, 14,152, 63,127, 62,114,115,115, 97,181, 90, 17, 16, 16, 32, 88, 44,150, 51, 38,147,233,215,127,123,130,113,182, 50, 57, -151, 95,126,249,229, 77,153, 76, 70, 1,156, 0,224,150,192,166,148,154,234,215,175,127, 11,119,109,172, 87,119, 81, 4,221,181, -157,137,193,193,193,135,212,106,245,227,249,249,249,183, 88,177,186,116,233, 98, 14, 12, 12, 60,236, 42,143, 74,165,202,103, 89, -214, 23, 0,210,210,210,160, 84, 42,197, 73, 73, 73, 11, 9, 33,211, 0,160, 65,131, 6, 11,117, 58,157,184,129,109, 60, 13, 10, - 10,130,201,100,170,210, 93,229,216,153,204,207, 0,124,230, 52,247,102, 20, 22, 22,202,151, 44, 89,162, 95,184,112,161,129,231, -121, 35,128, 3, 5, 5, 5,142, 56, 88, 17, 17, 17,133, 34,145,200, 71,171,213,214,115,162,186, 77,139, 60, 8, 2,235,182,221, -122,206,162,199, 21,145,229,138, 21,130, 16, 2,131,193,112,139, 53,196,190,139,176, 50,129,101,155,200,107,181, 68,104, 19, 87, -242,173, 91,183,126,241,209, 71, 31, 29,117,245,255,156,125,176,214, 44,157,187,200, 46,174,206, 30,217,139,239, 18, 11,115,167, - 46, 92,182,188,182,141,221,220, 95,217, 42, 40,208,239,224,251, 11,231,106,174,238,249, 12,219,214,124, 64,207,158, 58,213,254, -212,169, 83,207, 79,156, 56,177,190,173, 67,233, 0,252, 9,224,105, 87,118,221,228,228,228,220,226,255, 20, 21, 21,117, 73,171, -213, 6,202,100, 50, 36, 37, 37,233, 19, 18, 18,220, 94,122,169,200, 89, 23,168, 40,174, 18, 18, 18,208,171, 87, 47, 0,192,145, - 35, 71,208,165, 75, 23,183, 68,150,197, 98, 41,104,214,172,153,195,154, 85, 88, 88, 40, 0, 64, 92, 70, 6,226,131,131,193,113, - 28,126, 91,184, 16,239, 88, 44,152, 47,114,207, 53,167, 77,155, 54,244,212,169, 83, 72, 78, 78,134,213,106,197,192,129, 3,157, -197,149,203, 8, 10, 10,122,253,192,129, 3,254,241,241,241,198,205,155, 55, 27, 5, 65, 96,218,180,105,163,142,137,137,193,242, -229,229,221,232,233,167,159,198,212,169, 83,145,144,144, 0,133, 66,129,110,221,186,241,179,102,205, 10,152, 52,105,210,203, 40, -223,134, 95,217, 4, 67,251,245,235,135,195,135, 15,131,101, 89,180,111,223, 30,121,121,142,205, 61, 8, 12, 12,172,236, 24,107, -187,223,255,149,137,136,227, 56,122,232,208,161, 69, 61,122,244, 64, 74, 74,202,163,177,177,177, 31,143, 30, 61, 58,237, 78,121, -189,189,212,104,221, 60, 18, 70,163, 17, 70,163, 17, 33, 33, 33, 40, 46, 46,198,213,171, 87, 97, 52, 26, 17, 24,160,117,155, 47, -166,101, 99, 7, 95, 64, 64, 0, 74, 74, 74,112,253,250,117,152, 76, 38,248,249,121,187,211,231,195,250,245,235,247,203, 23, 95, -124,225,187, 97,195, 6, 83,207,158, 61, 37, 31,127,252, 49,209,104, 52,200,206,206,174,237, 41, 31, 58,114,228, 72,120,159, 62, -125,162, 47, 92,184,128, 67,135, 14,193,100, 50, 33, 38, 38, 6,151, 47, 95, 70,167, 78,157,160,215,235, 79,156, 58,117,234,251, -123, 97,130,177, 47,223,217,203,225,195,135,223,209,104, 52, 22, 0,203,238,164, 47,222,188,121, 83,218,170, 85, 43,163, 76, 38, -147,216,196,218, 7,255, 86,223,174,228,186,223,209,206,196, 26,198,148, 73,126,126,126,125, 26, 54,108,136,172,172, 44,177, 68, - 34, 65,151, 46, 93,204,237,218,181, 51, 7, 5, 5,189,236,198,117,185, 32, 22,139,187,151, 63, 68,240,184,121,243, 38, 40,165, - 83, 91,182,108,249,106,113,113, 49,242,242,242, 36, 26,141,198,241, 48, 29, 29, 29, 13,163,209,120,193, 13,145, 57, 39, 34, 34, - 98,186, 88, 44,158,159,147,147,179,186,146, 54,146,180,110,221, 90, 35, 22,139, 97, 54,155,141, 21,142,221, 83,126,111,117, 34, -176,156, 84, 99, 69,179,121,141,203,131,174,250, 96, 17, 66, 96, 50,153,160, 84, 42, 29, 75, 79,206,145,219, 43, 19, 88,181, 65, - 88, 88, 24, 58,116,232, 32,223,182,109,219,230, 37, 75,150, 28,171, 13,199,142, 47, 62, 15,246, 18, 74,195,210, 79,236,198,197, -179,191,227,155,243, 5,185, 83, 23, 46,123,229,137,167, 70,100, 85, 20,100,219,199,213,204,215, 36, 64,217,178, 94,160,239,193, - 15,222,127, 79,147,119,225, 56, 50, 50, 51,177,251,196,169,211, 38, 74,207, 3,152, 90, 87, 23,212,121, 55,218,189,210, 81,157, -195, 52,228,230,230,226,252,249,243,118,113, 21, 3, 0, 93,187,118, 61, 99, 23, 89,167, 79,159, 70,108,108,236,109, 97, 26,110, -179, 52,228,231, 47,168,240, 27,125, 0,248,217,133, 62,199,113,232, 50,125,186,219,226,138, 16, 66,121,158,135, 78,167,179, 63, - 25,214, 74, 92,217,184,186,148,150,150, 98,243,230,205,185, 87,174, 92, 9,107,216,176,225,164,207, 62,251,108,153, 66,161,184, -213,196, 81, 90,138, 62,125,250, 96,194,132, 9,152, 57,115,166, 48,122,244,104,150, 97,152, 42, 51,216,243, 60, 47,110,208,160, -193,126, 0, 15, 95,184,112, 1, 0,142, 81, 74,187,216,143, 87,119,204, 5, 8,197,197,197, 34,181, 90, 93,105,136, 7,113,249, - 54, 77,119,151,244, 28,156, 71,143, 30,125,111,233,210,165,223, 76,153, 50,229,202, 29,114, 86,106,193,122,252,241,199, 81,102, -180, 32, 53,171, 16, 60,111,133,193,156,237, 54,159,179, 5,235,241,199, 31,135,161,204,132,155, 25, 58, 88,173, 60,138, 13, 86, - 87,175,189,226,145, 71, 30,249,105,235,214,173, 65,199,143, 31, 7,207,243,194,229,203,151,175, 15, 30, 60, 88,243,198, 27,111, -248, 58,249,152,186,139,143, 70,140, 24, 49,244,232,209,163,186,232,232,104,159, 19, 39, 78, 32, 59, 59, 27, 86,171, 21, 15, 63, -252, 48, 36, 18,201,205,133, 11, 23,138, 1,124,116,175, 8, 44,169, 84,138,223,127,255,189, 78,132,149, 51, 36, 18, 73,173,151, - 25,239, 87,156, 56,113, 34,109,226,196,137,205, 53, 26,205,242,110,221,186,245,242,245,245,101,188,189,189, 15,213,171, 87,239, -213, 86,173, 90,185,188,154, 32, 18,137, 70, 43,149,202,171, 86,171,149,181, 89,206, 1, 0, 86,171, 85,194, 48, 12, 26, 52,104, -224, 48,154,180,111,223, 30, 65, 65, 65,124, 98, 98,226,104, 87,249,179,179,179,111,217, 85, 88, 9,198,117,233,210,133, 51, 26, -141, 72, 78, 78, 62, 82,209, 66,255,160,136,172, 42, 29, 84, 24,134, 1,165, 20,178,182,109,145,177,119, 47,190,250,234,171,106, -137,214,172, 89,131,138, 38, 61, 66, 72, 31,231, 88, 25,246,221,130, 47,190,248,162,227, 59,167, 79,159,118, 56,187, 15, 28, 56, -240, 22,206,147, 39, 79,222, 38,178, 42,114, 86,113,113, 47,108,223,190,253,212,226,197,139, 79,184, 56, 24, 58, 56,237, 62, 88, - 67,159,121, 46, 99,197,123, 51,207,109,248,126,127,203, 12, 3,205,152,186,112,217,148,138,226,202, 85,206,102, 65,170,102,161, - 1,190,135,150,190,255,158,151,221, 26,182,245, 76,102, 33,172,116,156, 59, 23,203,149,115,119,182, 36, 18, 66,132,186,224,172, -133,176,184,133,211, 57, 76, 67, 70, 70,134, 67, 92, 57, 5, 26,141,233,218,181,235, 25,155,184,178, 31,179,214,166,158, 28,199, - 97,138, 94, 15,142,227,208,115,246,108, 60, 60,119,174,219,231,206,243, 60, 56,142, 67, 84, 84,148,219,226,202,153,147, 82,122, -244,220,185,115, 17,163, 70,141, 82, 71, 69, 69, 37, 17, 66, 68, 99,198,140, 17,130,131,131,153,223,126,251, 13,148, 82,116,237, -218, 21, 89, 89, 89, 16, 4, 1,155, 54,109,194,168, 81,163,200,159,127,254, 73, 5, 65,216, 87, 93, 61,147,147,147,199,245,238, -221,123, 77, 89, 89, 25,151,151,151, 55,206,213, 99, 53,157,251,246,237,219,175, 68, 69, 69,245, 64,213,161, 24, 4, 0,199,239, -132,211,102,189,139,190, 19,206,170, 44, 88, 95,126,249, 37, 4, 65, 64, 88,144, 22, 70,163, 17, 21,197,108, 77,156, 21, 45, 88, -219,182,109,131, 32, 8,168, 31,236, 3,147,201, 4,187, 99,112, 77,156,190,190,190, 31,108,220,184, 49, 52, 49, 49, 17,169,169, -169, 88,182,108,217,141,130,130,130,199, 10, 10, 10,164,179,102,205, 58,248,204, 51,207, 4, 10,130, 96,116,247,222,164,148, 26, - 9, 33,163, 59,119,238,188,105,222,188,121,215,154, 54,109, 90,191, 75,151, 46,218,188,188,188,156, 63,254,248,227,250,154, 53, -107, 84, 86,171,117,116, 85, 75, 79,255,196,253,238,140,180,180,180,217,182,121,198, 45, 97,229, 74, 61, 79,158, 60,249,150,141, -251,164, 43,220,255,212,185,223,233,206,196,154,234,185,114,229,202, 84, 84,136,111,230,110, 61, 79,158, 60,153,220,167, 79,159, -185,129,129,129,179,100, 50, 25,114,114,202,147, 19,216, 45,141,246,249,186,109,219,182,232,215,175, 31, 46, 93,186, 52,119,250, -244,233,201,119,210,158,182, 7,237, 72, 0,207,247,238,221,251,141,161, 67,135, 98,229,202,149,160,148,174,123, 80, 5,177, 61, - 76, 3,113,126, 5, 0,139,197,146,114,245,234,213,224,198,249,249,108, 8, 33,104,223,190, 61,156,115, 8,218,253,114,236,142, -114,191,254,250,171, 85, 16,132,106, 99, 78,241, 60,159,114,244,232,209,192,189,123,247,138,236, 23,210,230,172, 41,164,167,167, - 51, 7, 15, 30,116, 88,195, 56,142,195,161, 67,135,172,102,179,249,166,187, 39,117,233,210,165, 58,121,122,251, 53, 33,249,213, -159,118,127,235,215,177, 67,183, 2,141,143, 79,165, 55,176, 61,226,123,181, 29,139, 99,230, 47, 94, 56, 87,107, 23, 87, 95,158, -201, 44, 40, 51,242,189, 46,228,148,158,173,235, 11, 90, 92, 92,156,108,223, 45,168,215,235,111,222, 43, 29,205,190,131, 48, 56, - 56,248, 12, 42,236, 22,180, 31,139,141,141,189,237,152, 91,102, 18, 65,128,151,151,151, 99,112,112,215,239,138, 16, 66,237, 75, -214, 21,239,135,218, 32, 51, 51,115,201,244,233,211,251, 46, 88,176,192,127,207,158, 61, 26, 27, 39,134, 12, 25,146,125,238,220, -185,110, 0,164, 37, 37, 37,251, 22, 44, 88,224,239,148,143,144, 27, 48, 96, 64, 86, 86, 86,214,138, 26,218,243, 26,128,222,238, - 30,171, 9, 67,135, 14, 77, 66, 37, 1, 63,239, 4,119,131,211, 14, 93, 65, 17,146,146,211,108,185, 40, 5,240, 55,178, 28,126, - 83, 22,139, 21,186,162, 60,183, 45, 88, 87,175,167,217, 82,131,241,224,249,116, 27, 95,185,163, 59,205, 47,117,197, 58,208,117, -249,242,229,143, 49, 12,195,252,246,219,111,198,197,139, 23,167,228,228,228, 12,164,148,222,180,245,179,158, 27, 54,108,216,236, - 66, 72,134,170,174,253,121, 66, 72,167, 55,223,124,243, 21, 0, 93, 1,212, 7,112, 19,192, 17, 0, 31,221, 99, 17,199,151,221, -167,220,181,198,253,178, 51,113,223,190,125,179, 7, 13, 26,196,133,135,135,191, 29, 30, 30,206,228,231,231, 67,175,215,131, 97, - 24, 4, 5, 5,161, 69,139, 22, 8, 10, 10, 18, 46, 92,184,176,224,205, 55,223,172, 49,166, 94,243,230,205, 35, 45, 22, 75, 35, -134, 97, 34, 1, 68, 82, 74, 35, 9, 33,145, 0,124,108,150, 48, 77, 68, 68, 4,215,177, 99, 71,116,232,208, 1, 7, 15, 30,196, -142, 29, 59, 62,163,148,254,228,108,189,170,139,177,247,158,183, 96,229,231,231,247,123,236,177,199,246,178, 44,219,160,178, 9, -171,146,164,204,201, 89, 89, 89,143, 86, 59,120,229,231,247,123,245,213, 87,247,178, 44,219,192,110,153,178, 90,173, 70,157, 78, -247, 82,207,158, 61, 87,137, 68, 34,169, 51,175, 32, 8, 55,178,178,178,254,209, 92,122, 21,227, 96,245,123,108, 80,238,157,114, -170,196, 76,163,139, 63,196, 35, 43, 59, 23, 95,158,201,204, 47, 54,241, 61, 47,229,148,156,187, 27,245, 79, 78, 78,238,127,175, -118, 54,155,144,170,116,233,175,186, 99, 46, 34,199,133, 64,162, 57, 53,212,143,216, 68, 22,169,163,243, 61, 71, 8,233, 60,113, -226,196, 25, 10,133,162, 61, 0,148,150,150,254,150,158,158, 62,215,190, 75,176,166,227, 30, 84, 13,139,197,146,218,162, 89,180, -189,173,111, 9,205,224,252,222,106,181,166,186,195, 87, 25,143,243,103,158,231, 83,107,176, 34, 79,233,208,161, 3, 59,101,202, -148,172, 61,123,246,216, 19,220,150, 58,245,139, 75,168, 38,152,168,139,125,203, 8, 96,177,173,120,112, 15,142,117,238,124,254, -183,240,237,183,223,206, 24, 62,124,248, 6, 31, 31,159,207, 35, 35, 35,163, 3, 3, 3, 53,114,185, 28, 70,163,177,216,100, 50, - 93,188,116,233,210,179,211,167, 79,191,230, 10,215,134, 13, 27, 88, 0, 98, 65, 16,100, 12,195, 40, 1,104, 8, 33,222,118,129, - 69, 8,129,217,108, 70,114,114, 50,222,121,231, 29,126,255,254,253,239, 3,120,215,141,234,182, 3,224,239, 52,142,251, 3, 48, -161, 60,240,108, 14,128, 83,247,141,192,178, 69,171,238, 84,199,157,174, 58,206,240,123,165, 81, 70, 26, 23,111,193,154,197,183, -228, 33,180,139,175, 74, 63,215,176,208, 87,104,176, 78,252,232,167,132, 37, 70, 43, 21,204, 86, 97,204,165,236,146,243,255,225, -129,199, 90,155, 99, 46,240, 62, 82, 71,245, 35,117,124,190, 73, 0, 70,214,246,184, 7,213,168,229,156,156,182,247, 34,159,201, -100,122,181,115,231,206, 31,242, 60,191,212, 98,177, 28,241, 92, 41, 15,238,101,124,249,229,151,215,236,243,242,176, 97,195, 88, - 0,216,190,125,187,219,187,123, 71,141, 26,197,219, 18,140,151, 1, 40, 1, 80,132,242, 64,217, 4, 0, 74, 74, 74,242,211,211, -211, 47,240, 60,127, 1,192,230, 90,236,160,245, 39,132,252, 64, 41,125,220, 38,216,126,160,148, 62,238,252,183,251, 70, 96,253, - 87,177, 61,225,239, 9,182,162,112,170,233,115, 85,184,152,169, 63,116,167, 79,172, 30,120,224,193,125,243, 16,113, 19,192, 64, - 79, 75,120,112,223,205,127,181, 16, 86,118,156, 63,127,254,174,185, 2,220,175, 96, 60, 77,224,129, 7, 30,120,224,129, 7, 30, -120, 80,183, 32, 0,250, 84,241, 20,230,206,238,128, 62,181,120,202,219,231,225,244,112,122, 56, 61,156, 30, 78, 15,167,135,243, -191,197, 89, 75, 12,168, 97,137,112,215, 61,167,176,156,157, 56,235,186, 0,232,227,225,244,112,122, 56, 61,156, 30, 78, 15,167, -135,211,195,121,135,165,215,180,105,211,222, 66,121,126, 98, 58,109,218,180,183, 40,165, 3,202,101, 12, 29,240, 15,215,197,165, -226,241,193,242,192, 3, 15, 60,240,192, 3, 15,238,117, 28, 91,184,112, 97,233,194,133, 11,237, 14,237, 57, 0,136,205,122,149, -115, 47, 86,248, 95, 19, 88,132,144, 16,134, 19, 63, 39, 18, 75,123,129, 10, 45, 0, 0, 12,155,192,155,202,126,177, 90,205,159, - 83, 74,211, 93,224,168,116,199, 87, 52,208, 44, 74, 43,255,206,200,243,226,155,197,166, 97, 23,203, 3,209, 85,102,189,171, 54, -224,219, 48, 66,186,200, 36,146,159, 37, 90,109,165,209, 5, 77, 5, 5,134, 50,147,169,239,118, 74,143,122,250,190, 7, 30,120, -224,129, 7,247, 3, 8, 33, 74,111,111,239,253, 12,195,132, 59,253, 13,149,189, 7, 0,158,231, 51,116, 58, 93, 95, 74,105,238, - 63,201, 89,113,202, 69, 21,115,249,189, 10,206,118,226,118,161, 81, 99, 6,235,166,193,170,110,209,145,225, 95,164,103,102,157, - 41, 42, 51,141,189,152, 86,172,115,251, 71,197,178, 23,181,126, 65,243,255,111,244,171,190, 81, 77,162, 73, 88, 88, 61,128, 2, - 55, 83, 82, 3,175, 94,185,220,123,219,198,143, 38,139,101,178,119,204,101,101,159,186,203, 29, 5, 40, 35, 84,210,195,159, 78, -123, 70,203,193,138, 17,243,190,216, 35,232,205,245, 47,151,111, 27,117, 25,195, 8,233,226,237,227,243,211,226,189,123,229,234, - 54,109, 42, 10, 51, 8,130, 0,253,153, 51,242,105,253,251,255, 52,140,144,126, 30,145,245, 64, 14, 66, 65, 26,141,102,146, 72, - 36,234,105, 54,155,195, 37, 18, 73, 10,207,243,135,242,243,243,151, 83, 74,211, 60, 45,228,129, 7, 53,222, 67, 85, 38, 24,255, - 55,147,143, 3,128, 90,173,254,157, 97,152, 80,231,201,223, 30,159,177, 98,156, 71,167,120,143,215,242,242,242, 58, 87,115,190, -145, 62, 62, 62,171, 0,180,171, 41,208,177,237,249,254,148, 78,167,123,201, 22,174,165, 50, 62,181,183,183,247,108, 66,200, 48, -134, 97,106, 76,248, 43, 8, 2, 79, 41,221,158,159,159,255, 46,165,180,184,170,239,121,123,123,239, 75, 76, 76,108, 23, 16, 16, - 80, 99, 88, 26,171,213,138,155, 55,111,250,183,111,223,254, 87, 0, 77,239, 38,167, 59, 90,228,190, 17, 88,182,139,237, 82, 6, -107, 65,192,115,235,231,191, 84, 47,227,198,149,122,227, 22,108,105,210,212, 79,209, 51, 49,183, 52,211,213, 31,148,200,213,223, -119,125,248,241, 94, 19, 94,153,162,252,227,220, 69,252,124,240, 56,138, 74,140, 96, 25, 6, 90,181, 2, 77,154, 52, 34,203,226, -191,242,251,236,147,101, 75,229, 42,237, 0,131,190,224, 73,119, 78,200, 75,193,189, 61,117,112,123,165,175, 15, 15, 8, 60, 94, -127,172,181,242,237, 31,206,188,141, 82,235,219,110,139,171,125,251, 20,217, 89, 89,120,223,215, 23,156,197, 2, 25, 33,144, 19, - 2, 25, 0,149, 84,138,110, 95,124,129,249,187,118, 41,222, 25, 48,192, 35,178, 30, 48,168,213,234,209, 77,154, 52, 89,188,118, -237, 90,223,134, 13, 27, 66,169, 84, 66,167,211,249, 93,186,116,169,205,107,175,189, 54,210,203,203,107,122, 97, 97,225, 26, 79, - 75,121,224, 65,149, 98,163, 13,128, 74,147,183, 87,119,236,159, 2,195, 48,161,105,105,105, 1, 10,133, 2, 60,207,219,162,247, - 11,142, 7,104,231, 5, 14, 91,128, 89, 52,109,218,212, 92,195,184,177, 50, 59, 59,187,143,115,202,178,234, 22, 74,210,210,210, -250, 52,111,222,124, 37,128,190, 85,136,150,217,175,188,242,202,164,150, 45, 91,218,173, 62,182,172, 5,229,175,185,185,185,152, - 56,113,162,227, 55, 4, 65,192,222,189,123, 95, 25, 61,122, 52, 0,188, 86,205,185,135, 7, 4, 4,144,113,227,170,143, 53, 52, -107,214, 44,204,154, 53, 11, 31,125,244, 17, 17,137, 68,218, 26,218,179, 78, 56, 93,213, 34,247,149,192,114,185, 83, 82, 97,247, -188,229,107,199,206, 25,213,149,172,127,173, 79,212,248,143,246, 29,111, 30, 34,239,126, 62,221,144,226,130,229,106, 76,199,238, -143,246,156, 56,105,170,114,203,183, 7,112,233,194, 89, 36, 30,217,122,203,119,218,246, 29,141,204,220, 98,140,158,240,186,138, -176, 92, 79,177, 76, 49,198, 92, 86,186,222,149,186, 69, 3,129,225, 82,201,255, 58,117,104, 33, 66,253, 84,128, 2, 93, 99, 27, -139,194,126,250,235,127,197,176,126,116, 17,168, 49,151, 96, 69,113,181,229,169,167,208,223, 96, 64, 32,202, 99, 90,216, 75, 41, -128,139,131, 6,161,233, 55,223, 96,246,119,223, 41,222, 29, 56,208,109,145,165, 80, 40, 62, 51, 24, 12,139,106, 17,112,237,223, - 28, 52,155,168,213,234,119,138,138,138,158,187,135,234, 20, 12, 32,167,146,252,133, 98, 0, 90, 74,169, 91, 25,127,101, 50,217, -139, 35, 70,140, 88,182, 98,197, 10, 69, 86, 86, 22,210,211,211,193,243, 60,100, 50, 25,162,162,162,200,190,125,251,124,167, 78, -157,186, 68,163,209, 72,139,138,138, 62,116,163,158,140, 72, 36, 26,229,227,227, 51, 40, 48, 48, 48, 32, 39, 39, 39, 39, 63, 63, -127,167,209,104, 92, 95,219, 39,121, 27,231,179, 17, 17, 17,131, 66, 66, 66, 2,211,210,210,114, 83, 83, 83,191, 55, 26,141,159, - 81, 74,133, 59,108,211, 86, 0,124,109,127,202,136,136,136, 72,184,126,253,122,118, 29,114,166, 71, 68, 68,156,119,151,147, 16, -162, 4,176, 13, 64, 72, 13, 95, 77, 7,240,180, 45,192,177, 7,255,130,184,178,165,158,186, 69, 72, 85,119,236,159,134, 92, 46, -199,214,173, 91, 33, 18,137, 32, 18,137,144,159,159,143,208,208, 80,199,103,177, 88,236,120, 95,191,126,253, 26,249,120,158,111, -207,178, 44,244,122, 61,120,158,119,148,130,130, 2, 80, 74, 33,149, 74,193,243,229,105,151,156,142,183,175,166, 29,135,133,132, -132, 96,203,150, 45, 48,153, 76,183, 29,215,104, 52, 56,119,238,239,164, 32, 44,203,162, 67,135, 14, 12, 33,100, 88,117, 2,203, -110, 41,138,139,139, 3,203,178,142,212,119,246,247,246,194,243, 60,102,205,154, 5,231, 20, 98,255, 36,231,125,127, 31,216, 78, -146, 86,150, 38,164,105,144,234,165,126,189, 58,190, 47,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,250,182, 10, 70, -167,134, 10,228,232,138, 48,110,205,201,162,180, 52, 99,135,115,121,197,151,170,105,252, 16,181, 54,224,207, 79, 54,125,235,247, -243,241, 68, 36,156, 61,131, 51,123, 86, 85,250,221, 62, 35,166,161,121,171,118,120,168,113, 16,222, 24, 63, 52, 55, 47, 59,189, -117,101, 62, 89, 21,125,176, 58,171,197,155, 86, 60,219,107, 68,171, 54, 90, 6, 61,108,243,213, 62, 43, 78, 31,207,228, 95,253, -254,143, 45,199,139,205, 35, 43, 40,229,219, 30, 45, 70, 74,165,165, 31, 31, 63, 46,207,206,206,198,150,167,158, 66,172,193,128, - 92,145, 8,205, 44, 22,135,200, 42, 0,144,199,113, 8,178, 90, 81,166,209, 32,232,171,175,192, 51, 12,166,245,239,111,216,100, - 50, 41, 92,109,124,149, 74,149,195,178, 44, 95, 84, 84,212,243,126, 16, 89, 54,113,117,144, 16, 34, 46, 44, 44,244,185, 7,234, -195, 0,152, 51,118,236,216, 49,135, 15, 31,190,122,245,234,213, 62,182, 72,194, 32,132,112,141, 26, 53, 58,208,173, 91,183,200, -117,235,214,125, 10, 96,142, 43,130,131, 16, 82,175, 97,195,134,127, 36, 36, 36,248, 93,190,124, 25,122,189, 30, 34,145, 8,207, - 62,251, 44,190,250,234, 43,136,197, 98, 72,165, 82,136,197, 98,116,239,222, 61,247,250,245,235,237, 40,165, 55, 92,224,101,189, -188,188, 62, 91,181,106, 85,227,129, 3, 7,114, 70,163, 17, 60,207, 99,251,246,237,150,119,223,125, 55, 57, 47, 47,239,121,119, - 69, 22, 33,132, 9, 14, 14, 94,255,233,167,159, 54,121,248,225,135, 57,131,193, 0, 65, 16,176,107,215, 46,203,219,111,191,125, - 45, 35, 35, 99, 36,165,148,175, 69,187,182, 81, 40, 20,205, 95,122,233,165,156,129, 3, 7,154, 1,224,212,169, 83,204,217,179, -103, 53, 13, 27, 54,188, 49, 99,198,140, 51,181,224,140, 85,171,213,209,227,198,141,203,125,252,241,199, 45, 98,177, 88, 56,122, -244, 40,119,233,210, 37, 77, 68, 68, 68,210,219,111,191,125,214, 13,174,221,199,142, 29,235, 17, 26, 26, 42,216, 6,117,106, 31, -224, 25,134,161,182, 87, 92,188,120,145,235,209,163,199, 65, 74,233,147,240,224,159,188, 47, 57, 0, 22, 74, 41,116, 58, 29, 78, -156, 56,129, 1, 3, 6, 0, 64,140,237, 43,103, 40,165, 40, 42, 42,130,193, 96, 64,112,112, 48, 0,136,254,233,229, 66,173, 86, -155,149,147,147, 19,240,221,119,223, 65, 36, 18, 97,239,222,189, 88,189,122, 53,182,110,221, 90,169,200, 10, 14, 14, 70, 84, 84, - 84,106,122,122,122, 88, 53, 99,122,161, 94,175,215, 20, 22, 22,130,231,121,156, 56,113, 2,107,215,174, 69, 64, 64, 0,252,252, -252,224,239,239,143,246,237,219, 67,169, 84, 58, 68, 86,183,110,221,138,244,122,189, 87,101,124,190,190,190,233, 83,166, 76, 9, - 62,125,250, 52, 44, 22, 75,165, 2,107,210,164, 73,206, 86, 36, 40, 20, 10,116,234,212, 41, 35, 47, 47,175,202, 7, 16,127,127, -255,140,156,156,156,160,179,103,207,222, 34,126, 42, 19, 68, 44,203, 66,173, 86,163, 65,131, 6, 89, 25, 25, 25, 65,119,147,179, - 42, 45,114,223, 91,176,108, 3, 85,207, 91, 44, 66, 17, 65,239, 44,158, 52, 76, 14,222, 12,106, 49, 0,230, 82,192,172,135, 96, - 42, 5, 17,203, 1,139, 1,254, 82, 29,182, 77,136,214,188,185, 37,233, 66, 51,127,205,128, 11, 57, 69, 63, 86,106,249,226,196, -207, 14, 27,245,138,111,106,118, 17,210,178, 10,193, 50,127,199, 56,141,233, 51, 10, 28,203,224,228, 79,229,134, 42,134,101, 81, - 88, 98, 68,129,222,140,161,163, 38,249,124,186,108,230,179, 0, 22, 85,119, 34, 45,128,168, 22, 42,213,224,150, 45,194, 25, 52, -206, 0,137,220, 89, 46,162, 14, 63,129, 54,249, 1,108,211,159, 37,131,245,197,230, 5, 9,192,229,234,120, 36, 90,173, 92,221, -166, 13, 22,251,250,226, 49,131, 1, 87, 57, 14, 35,116, 58,252, 58,105, 18,184,245,235,193, 1, 48,142, 25,131, 46,203,151,227, -156,143, 15, 66,138,138, 96, 30, 51, 6,146,211,167, 33,246,242,146,187,211,248, 98,177,216,188,118,237,218,144, 23, 94,120,225, - 32, 33,228,158, 22, 89,132,144, 38, 62, 62, 62, 7,223,123,239,189,192, 25, 51,102,100,212, 17,103,160, 82,169,220, 94, 82, 82, - 50,201,221, 39, 88,155,184,154,183,102,205,154,241,113,113,113,218, 23, 94,120,129, 94,189,122, 85, 11,192,110, 13,241,239,214, -173, 91,163,181,107,215, 6,181,107,215,238,149,113,227,198,137, 9, 33,211,107, 18, 89, 42,149,106,194,218,181,107,253,114,115, -115, 29,226, 74, 36, 18, 33, 53, 53, 21,114,185,220,145,236, 92, 36, 18,225,189,247,222,243,157, 48, 97,194, 36, 0,147,106,170, -175, 84, 42, 29,181,106,213,170,198,253,250,245,227,146,147,147,193, 48, 12,164, 82, 41,158,121,230, 25, 81,105,105,105,248,156, - 57,115,226, 0,172,114,167, 13, 68, 34,209,179,241,241,241, 77,186,116,233,194, 37, 38, 38,162, 83,167, 78, 56,121,242, 36,158, -122,234, 41, 81,113,113,113,131,169, 83,167,142, 5, 16,239,174,149, 73,161, 80,180,252,229,151, 95, 82,194,194,194, 28, 15, 32, - 13, 26, 52,224, 7, 12, 24,160, 75, 76, 76,140, 62,126,252,120, 94,167, 78,157,110,186,193, 89, 79,161, 80, 52,221,189,123,119, -198,156, 57,115,122,175, 89,179,102, 32, 0,180,111,223,254,251,185,115,231, 30,208,233,116, 45, 14, 31, 62,172,235,214,173, 91, -170,139,148, 33,193,193,193,252,196,137, 19, 85,213,125,105,221,186,117, 5, 0,234, 19, 66, 26,218, 18, 96,123,240, 15,128, 82, -106, 37,132,196, 16, 66,206,236,218,181, 11, 29, 58,116,192,174, 93,187, 48, 96,192,128, 51,182,227, 40, 44, 44,196,185,115,231, -208,189,123,119,160, 60,193,251,191,226,139,197,243, 60, 56,142, 67,106,106, 42,214,173, 91,135, 5, 11, 22, 32, 42, 42, 10, 22, -139,197,113,239,115, 28, 7,145, 72,100,183,182,184, 52,233, 91,173, 86,156, 58,117, 10,159,111,218,132,233,239,188, 3,181, 90, - 13, 0, 48,155,205,208,229,231, 67, 38,147, 57, 44, 88, 53,180,229,246, 43, 87,174, 76, 10, 13, 13,189,101,105,208,254,106, 27, -179, 32, 8, 2,172, 86, 43,202,202,202,176,108,217, 50, 43,165,116,123, 13,247,164,195,226, 53,105,210, 36, 24,141,127,231, 7, -111,213,170, 21, 0, 32, 34, 34, 2,173, 91,183,118,124,102, 24,134,186,202,249,105,231,150, 48, 56,125, 59,122,214, 18, 0, 64, -104,104, 40,162,163,163,237,162,186, 82,206,202,180,200,125, 45,176,170, 82,138, 23,174,103, 46,122, 97,234,146, 37, 74, 25, 43, -122,117,208, 67,168,175, 21, 3,114, 31,136,187,191, 9,162, 13, 47,239, 0,186,107,192,207,111, 98,233, 96, 29, 19,183,185,236, -219, 70, 62, 62,254, 87,117,186,219,156,235, 68, 98, 89,175,200,198, 77,200,205, 12, 29, 56,142,131,210,203, 15,157, 7,189, 6, -150,101,160,210,250,129,240,134,191,205,156, 12, 11,142,229,160, 43, 54, 32,162, 97, 99, 70, 42,147,247,170, 73, 96,121,121,137, - 86,190, 49,188,179,140,145,229, 2, 33, 18,167,161, 88, 2,198,183, 24, 83,250, 71,201,227,190,255,107, 37, 10, 45,189, 93,106, - 24,187,197,202,106,197,175,147, 38,161,119,124, 60,126, 3, 32, 2, 16, 27, 31,143,139,113,113, 8,176, 88, 32, 5,192, 26,141, -176, 86, 88,179,119,113,226,193,160, 65,131,144,155,155, 27,248,206, 59,239,212, 90,100,201,229,242,207, 9, 33,143,137, 68, 34, - 51, 33, 4, 12,195, 56,146,115,219,223,155,205,102, 49,203,178,187,115,115,115,221, 94,218, 35,132, 52,241,246,246, 62,120,236, -216,177, 64,165, 82,137, 89,179,102,213,137,184, 82,171,213,191,141, 29, 59,182,254,231,159,127,254, 35, 33,164,191,171, 34,171, -162,184,138,143,143, 47, 88,183,110,221,167,206, 75,129,148,210, 12, 66,200,250,118,237,218,189, 20, 23, 23,167, 5, 48,126,220, -184,113,168, 73,100, 73,165,210,158,145,145,145,208,233,116,142, 1, 86, 42,149, 2, 0,148, 74, 37,188,188,188, 32, 22,139, 97, - 52, 26, 17, 19, 19, 67, 36, 18, 73, 87, 87,234,172, 86,171, 31, 27, 60,120, 48,119,244,232, 81,100,102,102,194,203,203, 11, 74, -165, 18, 60,207,227,197, 23, 95, 20, 47, 95,190,252, 81,119, 5, 86, 88, 88,216,192,222,189,123,115, 9, 9, 9,184,126,253, 58, -140, 70, 35, 46, 93,186, 4,141, 70,131,231,159,127, 94,188,120,241,226, 39,220, 21, 88, 0, 90,198,197,197,101, 57,139, 43, 59, -148, 74, 37,105,210,164,137,206,215,215, 55, 22,192, 77,119, 56, 95,126,249,229,236,133, 11, 23,118,223,183,111,223,155,246, 63, -238,219,183,111, 42, 0,124,248,225,135,135,253,253,253, 99, 1,184, 42,176, 64, 41, 21,254,239,255,254,239,134, 68, 34,129, 72, - 36,130, 68, 34,185,165,136,197, 98, 48, 12,163,182, 15, 41, 15,176,181,168, 29,128, 15, 80,190,195,234, 29, 74,233,137,123, 68, -100,253, 65, 8,137, 25, 48, 96,128, 67,100,237,217,179, 7,253,251,247, 71, 65, 65, 1, 18, 18, 18,156,197,213,191,229,131, 5, - 65, 16, 32, 18,137,176,100,201, 18,152,205,102,108,222,188, 25, 59,118,236,184,101, 12,213,104, 52,248,232,163,143,220, 90,206, -226,121, 30, 27, 54,108,192,155, 83,167, 58,196,149,237,161, 26, 65,129,129,240,245,243, 67, 82, 82, 82,141, 2, 43, 63, 63,255, -221,157, 59,119,162, 58, 39,247,157, 59,119, 58,222, 59, 59,185,187, 82, 79,150,101, 97, 52, 26,241,200, 35,127,167,114,125,249, -229,151, 29,239,117, 58, 29, 88,150,181,183, 5,113,149,211, 64,129, 65,178,191,255,246,216,148, 41,142,247,185,185,185, 85,114, - 62, 8, 86,171, 74, 45, 88,149,225,114,118,201, 10,142,100,180, 94, 56,177,239,168,250, 1, 94,160,250, 44,136, 31,126, 23,127, -230,200,177,100,217,110, 0,192,235,207,180, 69,171, 62,243, 96,250,172, 47, 38,117, 98, 37,207,165, 26,223, 0, 48,227,246, 27, - 78,104, 26, 90, 47, 4,127, 94, 61, 7,142,101, 33,241,242,131,151, 79, 32, 4,171, 9,133,217,215,113,240,235,149, 0,128, 53, - 27,182,131, 97, 24,112, 28, 11,163,137, 71, 84,253, 16, 8,130,208,180,186,122, 54, 3, 58,247, 12,244,235, 16, 17,225, 67,208, -188, 0,183,101, 0,106, 35, 69, 84,186,138,116, 82,201,219,231, 23, 22,117,190, 0, 28,171,169, 97,100, 54,150, 96, 0,226,245, -235,241, 27,128,142,241,229,115,213,165,184, 56,168,214,175,135,210,246, 29, 41, 33, 40,226,249, 90,221,224, 0, 16, 29, 29,141, - 53,107,214, 4, 78,152, 48,161, 86, 34,171,172,172,108,190, 70,163,233,189,126,253,250,192,193,131, 7,223,118,252,234,213,171, -232,222,189,123, 86,102,102,230,252, 59, 17, 87, 90,173, 22, 41, 41, 41,119,188,110,110, 23, 87,123,247,238, 13, 15, 13, 13, 69, - 76, 76,140,255,235,175,191,238,142,200,154,225, 44,174,198,141, 27,247, 23,128, 0, 66, 72, 69,129, 66,108,199, 30,114, 18, 89, -133, 0, 22, 87,243,228, 25,174, 84, 42,145,157,157,141, 81,163, 70,225,242,229,191, 13,158, 33, 33, 33,142, 39,187,164,164, 36, -248,251,251,131, 16, 18,224,202, 57,251,251,251, 7,154, 76, 38,140, 25, 51, 6, 41, 41,127,187, 43,214, 66, 54, 44, 57, 0, 0, - 17,138, 73, 68, 65, 84,171, 87,207,222,166,126,238,182, 99, 96, 96, 96,160,193, 96, 64,183,110,221, 80, 86, 86, 6, 0,120,250, -233,167, 33, 18,137,144,157,157, 13,145, 72,228, 87,139,203,227, 55, 96,192,128, 42, 67,164,104, 52, 26,179,183,183,119, 51, 55, - 57,125,159,120,226,137,180,248,248,248,219,150,234, 78,158, 60,249,164,143,143,207, 62, 31, 31,159, 38,110,114, 10,206, 98, 74, - 44, 22,223, 34,176, 68, 34, 17, 24,134, 17,240,224,227,125, 0,246, 93,109,171, 1,180,190,135, 44, 89, 14,145,181,103,207, 30, -180,104,209, 2,249,249,249, 72, 76, 76,252,215,197,149,147, 32, 1,199,113,142,135, 99,153, 76,134,152,152, 24,135,184, 34,132, -160,180,180, 20, 28,199,217,199,107,151, 6,191,130,130, 2, 4, 7, 5, 65,173, 86,163,113, 84, 20,174,216,198, 17,251,123,169, - 84, 10, 66, 8,172, 86,107, 77,109, 88,140,114, 95,170,215,234,250,242,216,197, 80,181,166,226,144, 16, 8,130, 96, 31,243,105, - 93,112,250,249,249, 65,175,215,187,202,121,255, 11, 44, 66, 72, 15, 0, 7,225,180, 53,146, 16,194, 52, 11, 84,173, 91, 56,161, -247,168,190, 45,252, 96,200,185, 14,153,218, 15, 68, 27,129, 37,203,118, 35,225, 90, 30, 0, 96,201, 23,191, 99,203,156,199, 0, -185, 15,162,189,114, 17,164,230, 6, 87, 38,176, 8, 40, 17, 40, 5,199,150,175,199,114, 28, 11,150,101,160,203,201,192,242,119, -199,219,196,213, 14,236, 58,156,136,208,200, 22,142,117, 90, 16, 2,208,234, 59,181,191,151,120,205,132, 33, 29,229, 68, 91, 0, -104, 69,183,127,193, 91, 12, 18,193, 96, 98,207, 80,197,169,157,101,107, 46, 20,154,155,215,104, 21, 34,196,225,208,206, 1, 16, - 59, 29, 19,219, 44, 89,140,253,209,216,182,235,164, 22, 66,195, 97,226, 13, 12, 12,196,130, 5, 11, 2,167, 77,155,182, 25,110, - 38,134,166,148, 94, 34,132,244,124,241,197, 23, 15,230,229,229, 5, 70, 71, 71, 67,165, 82, 65,165, 82, 33, 43, 43, 11, 67,135, - 14,205,202,204,204,172,173,117,108,211,216,177, 99, 3,197, 98, 49,174, 94,189, 10, 31, 31, 31,135, 48,172,173,184,210,104, 52, -191,237,219,183, 47,188, 81,163, 70,184,120,241, 34,154, 53,107,134,109,219,182,249,143, 24, 49,194, 37,145, 37,151,203, 7,217, - 4, 19,226,226,226,180,113,113,113, 61, 0,244,168,233,183,227,226,226,180,175,189,246,218, 19,213, 9, 44,145, 72,148,162,211, -233,130,228,114, 57,190,254,250,107,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161, 80,128, 82, 10,139,197, 98, 31, 36, -242, 92, 57,239,156,156,156, 44,158,231,195,126,252,241, 71,228,228,252, 29, 19, 47, 60, 60, 28, 54,127,141, 92,119,219, 50, 61, - 61, 61,139, 16, 18,246,231,159,127, 34, 57, 57, 25,253,251,247,199,183,223,126,139,182,109,219, 2, 0, 76, 38, 83,109,130,239, -241, 44,203,210,106,174, 31, 1,224, 93,151,156,182, 73,203, 45, 78, 65, 16, 4,187,184,114,126,117, 22, 93, 53,252,230,131, 2, -103,223, 29,235,189, 90,201,254,253,251, 67,167,211, 65,165, 82,213, 56, 1,255,211, 2, 75, 36, 18, 97,246,236,217, 24, 63,126, - 60, 2, 3, 3,241,230,155,111,130,227, 56, 71,113, 94, 9,112, 7, 1,129,129,213, 30,183,251, 96,213, 48, 94,170,189,188,188, -102, 51, 12, 51,140,117,161,225,120,158,231, 5, 65,216, 94, 88, 88, 88,109,152, 6,187, 67,186, 43,215,194,185, 13,106,168,235, - 29,115, 86,166, 69,238,103,216,207,238,160,205, 52,119,208, 89, 92,189, 55,190,215,168,190, 45,188,241,253,254, 19, 16,155, 11, - 0, 83,113, 53, 87,214, 2, 34, 86, 34,208, 75, 20, 90,105,227, 51,236,197,212,180,116,248,122,171,108,226,202, 86, 24, 6,173, - 90,148, 63,188,238, 58,156,136,208,134, 45,192,177, 44, 56,150,133, 74, 46, 69, 86,102, 6, 56,142,185, 88,213,207,182,100, 49, -100, 72,147,176,136,192, 0, 9,208,178,154, 27, 32, 86,141,208, 96, 9,250,249,202,194, 91,178, 24, 82,131, 96,129,212, 38,176, -138, 1,152,198,140, 65, 76,124, 60, 46,197,197,225,122, 92, 28, 26,196,199, 3, 99,198, 64,192,223,187, 10,249, 90, 88,176,236, - 29,209, 46,132,102,204,152,145,149,151,151,247,108, 45,159, 22, 47,229,231,231,247,124,231,157,119,178,114,115,115,161, 80, 40, -144,145,145,113, 71,226, 10, 0, 12, 6,195,243,241,241,241, 89, 7, 15, 30,132, 74,165,130, 90,173,174,181,192,178, 91,174,222, -125,247,221,250, 97, 97, 97, 72, 74, 74,130,151,151, 23,124,125,125,209,170, 85, 43, 28, 61,122,212, 63, 44, 44,236, 71,219, 46, -163,234,234,244, 93,124,124,124, 1, 0,196,199,199, 23, 16, 66, 14, 17, 66, 62, 33,132,172,174, 80, 62, 33,132, 28,114,254,174, -193, 96,248,166, 58,110,147,201,116, 40, 49, 49,145, 42, 20, 10,176, 44, 11,179,217, 12,153, 76,230,184, 94,118,199, 92, 0,176, - 57,158, 30,113,229,220,139,139,139,247,124,246,217,103,150,176,176, 48, 60,244,208, 67,136,141,141, 69,167, 78,157, 16, 30, 30, -142,217,179,103,155, 74, 74, 74,246,212, 66, 96,237,218,182,109,155, 37, 44, 44, 12,177,177,177,144, 74,165,104,213,170, 21, 66, - 66, 66,176, 96,193, 2, 83, 97, 97,225,158, 90, 92,166,155,231,206,157, 99,171, 17,183, 26,184,176, 27,183, 2, 82, 78,157, 58, -197,118,236,216,241,251,138, 7,218,183,111,255,189, 74,165,242, 2,224,174, 95, 31,117, 22, 85, 82,169,212, 81,236,127,231, 56, -238,191, 96,193,154, 4,224, 47, 0, 73, 0,222,188,151, 42,230,188, 91, 48, 47, 47, 15,137,137,137, 56,125,250, 52, 58,118,236, -136, 35, 71,142, 0,229, 97, 26,218,252,139,245, 3,165, 20, 34,145, 8,209,209,209,120,237,181,215,176,123,247,110, 92,186,116, - 9, 22,139,197, 33,128,236, 62,151,238, 88,176,196, 98, 49, 2, 3, 3, 97,177, 88, 28,214, 43, 0,184,114,249, 50, 56,142,131, - 32, 8, 48,153, 76, 53, 90,176,188,188,188,102,175, 93,187,246,149,220,220,220,224,156,156,156, 0,231,146,149,149, 21,144,145, -145, 17,144,150,150, 22,144,146,146, 18,112,227,198,141,128,235,215,175, 7, 47, 90,180,232, 21, 47, 47,175,217,174,206, 65,173, - 90,181,194,203, 47,191,236, 40, 43, 86,172,112,148,131, 7, 15,254,109,236,112, 99, 94,139,158,181, 4,143,229, 80, 71,217,237, - 79, 28, 37,225,245,113,213,113,222,162, 69, 30, 8, 11,150,179,250, 4,128,166, 65,138,121,239,189,216,125,212, 35,205,188,240, -221,254,223, 49,231,155,107, 23,163, 70,249, 71, 55,242,206,129,144,147,136,215,159,105,139, 37, 95,252, 14,160,124,137, 80,200, - 78, 0,205, 79, 2, 85,135,225,186, 46,183,210,229, 5,171,169,236,192,181,171,151,123, 69,183,108,199,100,230,234,111,217, 97, - 16,211,115, 40, 8, 33,168,215,176, 5, 88,142, 3,203, 50,224, 88, 22, 90,141, 12,137,127,254, 41, 24, 13,134, 3,149,113,198, - 0,156,175, 92,242,241, 51,253, 90,201, 16,172, 7,228,210,191, 71,223,107, 67, 43,204, 12, 28,208, 82,141,209,105,190,242, 3, - 89,101, 31,139, 74,204,223, 3,176, 84,245, 84,163,150, 74, 81, 10, 32, 87, 36, 66,167,229,203,113, 57, 46, 14,234,245,235,193, -162,220,139,218,127,249,114, 20,111,218, 4,198,106, 5,149,201,238,200,130,149,149,149,133,167,159,126,250,142,132,144,179, 37, -107,194,132, 9, 7, 23, 44, 88, 16, 56, 99,198,140, 58,227,124,243,205, 55, 15,126,241,197, 23,129, 13, 26, 52,168,117,103, 83, -169, 84, 83, 5, 65,208, 46, 94,188, 56,115,233,210,165,168,232, 47,102, 19, 56, 82,173, 86,187, 4, 64,175,106,168,230,140, 27, - 55, 78, 12, 96,188,205,146,245,208,184,113,227,142, 81, 74,167, 87,104,223, 89,107,214,172,121,218,105, 41,241, 19, 0,203,171, -171, 99, 81, 81,209,234,215, 94,123,109,204,175,191,254,234, 39,147,201, 64, 8,129, 88, 44, 70,227,198,141,109,150,215,114,135, - 87, 74, 41,166, 76,153,146,155,157,157,237, 82,152, 6,163,209,184, 97,206,156, 57,189, 12, 6, 67,248,232,209,163,197,222,222, -222,200,202,202,194, 7, 31,124, 96,218,176, 97, 67, 74, 73, 73,137,187,190, 82,176, 88, 44, 27,102,206,156,217, 83,175,215, 55, -124,225,133, 23,196,133,133,133, 48, 24, 12,120,227,141, 55, 76,235,215,175, 79, 53, 24, 12,110, 7,234,237,212,169,211,213, 27, - 55,110,116, 45, 45, 45,205, 87, 40, 20, 21,173,123, 68,169, 84,182, 3,176,201, 29,206,152,152,152,164,155, 55,111,118,156, 55, -111,222, 33,139,197, 34, 58,121,242,164,195,201,253,227,143, 63, 62, 40,147,201,122,195,125,103,124, 65, 42,149,222, 98,177,170, -248,158,227,184, 7,222,130, 69, 41, 61,136,242,208, 23,247, 20, 42,138,171,132,132, 4,244,234, 85,126, 75, 31, 57,114, 4, 93, -186,116,193,145, 35, 71,208,181,107,215,127, 53, 76,131, 93, 96,113, 28,135, 17, 35, 70,160, 79,159, 62,168, 95,191,190,227, 62, -119,118,114,119, 71,100, 88,173, 86,180,108,217, 18, 70,147, 9, 98,177,216,177, 4,201,113, 28,252, 3, 2,112,245,234, 85,151, - 44, 88, 12,195, 12, 27, 52,104, 16,115,254,252,121, 12, 31, 62, 28,159,127,254,121,149,223,125,238,185,231,176,117,235, 86, 12, - 26, 52,136,121,235,173,183,170, 13,211, 96,119, 46,119,229,156,236,243,116, 77, 22,188,186,226,116,214, 34, 15,140,192,114, 10, -238,133,134,254,138,209,125, 26,115,248,238,192,239,152,243,221,205, 13, 60,165, 95,127,125, 38,255,135, 55,187, 0,230,237,207, -160,213,208, 77,229,203,130, 0,132,236, 4,152,183, 63, 7,162,240,195,225, 52, 17, 10, 13,230, 93,149,119, 56,243,231,223,110, - 94,249, 90,199, 85, 93,253,131, 3,188,160, 43, 52, 56, 68,214,153,131, 59, 0, 0, 67,198,205, 7,199,150, 47, 29,106, 84, 50, -200,197, 44,190,218,248, 97,174,217, 92, 86,105,175, 18, 68,204,248, 23, 58, 55,246,242,242,162, 64,115,241,173, 23,169,225,142, -219,133, 86, 27,111,248, 37,228,227,153, 70, 42,205,242,243, 5,227, 1,124,124,155, 5,163,160,192, 80,124,250,180,188,219,230, -205, 72, 28, 60, 24,245,138,139,145,224,237, 13,127,171, 21, 42,187,181,106,253,122, 20,127,254, 57,100, 86, 43,224,229,133,188, -149, 43, 97, 61,119, 14,214,162, 34,131,187, 2,235,202,149, 43,119,108,101,170, 76, 16, 77,155, 54,109,115, 94, 94,222,179,117, -201,249,252,243,207, 31,220,191,127,127, 96,109,121,138,139,139, 39, 3,152, 92, 7,245, 17, 8, 33,211,109, 1,237,198,199,197, -197,105, 79,157, 58, 53,134, 16,178,138, 82,154, 97,107,219,128,177, 99,199,190, 88, 65, 92,213,184,139,144, 82,122, 83,165, 82, -205,157, 60,121,242,252,165, 75,151,170,236, 14,237,103,207,158,133,213,106,133, 72, 36, 2,207,243, 24, 59,118,172, 62, 47, 47, -111, 73, 85, 17,152, 43,225,181, 18, 66,158,155, 63,127,254,216, 15, 63,252,240,113,150,101,253,121,158,207, 49, 24, 12, 63, 26, - 12,134,248,218,236,162,178,181,195,200, 25, 51,102,140, 92,182,108,217, 32,134, 97, 2,172, 86,107,110,113,113,241, 78,131,193, - 80,171,216, 90,199,142, 29,203, 89,181,106,213,181,156,156,156,166,161,161,161,133, 42,149,202,100, 50,153, 88,185, 92,174, 81, - 42,149, 49, 0,142, 3,184,224, 14,231,233,211,167, 51, 63,249,228,147,100,163,209, 24,253,201, 39,159, 28,214,104, 52,251, 9, - 33, 68, 44, 22,123,203,229,242, 94, 0, 14, 1,184,226,150,233,157, 97, 4,103,107, 85, 69,255, 43,137, 68,242, 95,241,193,186, -231, 96, 11,211,112,134, 82,138,220,220, 92,156, 63,127,222, 46,174, 98, 0,160,107,215,174,103,236, 34,235,244,233,211,136,141, -141, 61, 67, 8,249,199,195, 52, 56, 91,176,236, 66,170,126,253,250,142,207,206,197,201, 7,203, 37,240, 60, 15,177, 88, 12,142, -227, 16, 28, 18,226,248, 45, 74, 41,174, 94,189, 10,157, 78,231,146,192, 98, 89,150, 37,132, 96,248,240,225, 46,253,238,255,253, -223,255,225,208,161, 67, 96, 93, 84,131, 44,203, 34, 34, 34,194,165,149, 22,184,232, 47,197,178, 44, 66, 67, 67,107,205,233,172, - 69, 30, 24,129,229,140,164,108,195,188,231, 62, 56,250,214,133,204,178,175, 19,179, 74, 95, 3, 64,183, 39, 40,126,110,229,207, -246,237,219, 36, 21,198,248,174, 32,154,242,160,107, 84,159, 1,162, 12, 68,170, 80, 15,179,190,191,152,105, 5, 89, 92,197,100, -144, 46,150, 41,166,111, 92,251,241,210,177, 19,166,168, 18,146,178, 80,168, 55,130,101, 25,231, 65, 19, 28,199, 66,163,148, 33, - 44,200, 11, 95,124,250, 65,113,113, 81,193,140,170,242, 18,134,171,197,113,189,219, 53,146, 34,168, 4, 40,147, 1,101,127,119, - 86,250,231, 64,219,172, 94,193, 72,213, 66,139, 71,111,150,200,190,189, 89, 18, 87,153,192, 42, 51,153,250,190,245,232,163, 63, -205,251,225, 7, 69,211,175,191, 70,214, 83, 79, 33,164,168, 8, 82,224, 22,159, 44,198, 98, 1,188,188,144,251,249,231, 40,229, -121, 44, 29, 61,186,180,204,108,238,231,166, 5, 66,220,163, 71,143, 58, 19, 87,206,130, 8,110,250,113,185, 42,178,250,244,233, -115,144, 82, 42,189, 7,158,220,237, 34,203,124,234,212,169, 23, 15, 31, 62,156,132, 91, 19,126, 22, 28, 62,124, 56,233,133, 23, - 94, 32,235,214,173, 91, 15, 96,166,171,129, 55,245,122,253,199, 90,173, 22,221,187,119,159,185,112,225, 66,223,182,109,219, 34, - 32, 32, 0,197,197,197, 56,125,250, 52, 38, 77,154,164, 43, 42, 42, 90,152,159,159,191,212,205, 58,243, 54, 75, 77,124, 93,182, - 3,128,207,108,165, 78,240,210, 75, 47,157, 77, 74, 74,202,243,247,247,239, 32, 22,139, 31, 66,185,159, 79, 38,128,245,238, 10, - 33, 59,198,143, 31,255,103, 82, 82, 82,110,189,122,245, 58,218, 56,181, 0,210, 0,172,173, 5,103,250,239,191,255, 30,218,174, - 93, 59, 70, 36, 18, 81,150,101, 33, 18,137, 40,199,113,212,230, 55, 67, 1, 96,231,206,157, 82, 0, 58,120,240, 79,223,155,142, - 48, 13, 25, 25, 25, 14,113,229, 20,104, 52,166,107,215,174,103,108,226,202,126,204,250, 47,213, 21,115,230,204,193,154, 53,107, - 80, 83, 4,114,219,110, 61, 82, 19,159,221,130,197,243, 60,204,102, 51, 18, 18, 18, 64, 8, 1,207,243,142,101, 65,123,136, 6, -171,213, 90,237,238,115,158,231,121,147,201,132, 47,191,252,210, 37,145,181,101,203, 22,148,149,149,129,175, 65,185, 57,135, 84, -104,221,186, 53,116, 58,157, 99, 19, 79, 76, 76,140,227,123,102,179,217, 45,193,106,231,140,142,142, 70,110,110, 46,252,252,202, -247,217,132, 61, 31,247,183,177,165,228,191, 19,247,151,184, 26, 90,160,181, 86,235,101,148, 88,190,121,178,133,180,231,176, 24, - 47, 52, 12, 82, 67, 36,150, 33,189,200,138,125, 23,138,176,246, 96,102,138,193,194, 63,126, 41,187,228, 92,117, 60, 50,165,215, -143,109, 59,247,233,242,252,139,147,148,122, 35,143,228,228, 27,200,201,206, 0, 67, 24, 4,215, 11, 69,120,120, 4,228, 18, 6, -159,199, 47, 45, 57,115,108,255,209,226, 34, 93,255,170,184, 30,215, 74,142, 45,123,170, 75,199,200, 72, 53,129,213, 2,240, 22, -192,106, 1, 4,219,171,253,111,194,173,125,237,252,249, 2,250,214, 31,186,223,126, 40, 48, 85,154, 83,106, 24, 33, 93,188,189, -189,127,154,243,221,119, 10,193,100,130,105,204, 24,200,141, 70,200, 9, 1,161, 20, 12, 0, 34,147, 33,111,229,202,114,113, 53, -106, 84,105, 65, 97,161,219,169,114,252,253,253, 63,203,205,205,189,239, 34,185,251,250,250,190, 83,155,112, 15,119,177, 78, 1, - 0, 10,236, 65, 70, 43, 60, 73,251,219,173, 90,181,224,141,240,247,247,127,139, 97,152, 78,148, 82, 95,134, 97,242, 5, 65, 56, -158,157,157,189,136, 82,122,213, 51,149,254,107,215,219, 30,201,189,166,245,234,108, 0,175, 2, 40,166,148, 38,123, 90,238, 31, -191, 78,109, 0,156, 65, 37,187, 5,171, 59,246, 79,193,215,215,247,196, 79, 63,253,212,182, 97,195,134,140,179,187,130, 61,214, -157,125, 25,139,227,202,237, 16,191,254,250,171,117,248,240,225,199, 51, 51, 51,187, 87,197,169,209,104,126,254,235,175,191, 30, - 41, 44, 44,188, 77, 72, 57, 71,118,183,127, 46, 41, 41,193,132, 9, 19,246, 22, 21, 21, 85,154, 42, 71,171,213, 46, 91,186,116, -233, 43, 67,134, 12, 97,236, 97, 37,156,139, 61,173,143,189,152,205,102,108,218,180, 73,248,240,195, 15, 63, 42, 40, 40,168,114, -137, 48, 36, 36, 36, 37, 61, 61, 61,212, 30, 50,161,170,226,140,136,136,136,140,228,228,228,144,127,146,243, 63, 35,176,108, 55, - 5,137, 14, 80, 62, 77,129, 97, 12,132,150, 12, 33, 18, 43,197, 37, 80,252,172,224, 74, 87,157, 78,167, 46, 45,145,137, 21,138, -137,106,149,247,187, 67,158,125,217, 55, 34, 50,138, 4, 6,215, 3, 1,131,172,204, 52,220,184,118,153,126,179,121,101, 94, 73, -145,110,118,105,169,126,101,117, 60, 77, 9,105, 20,169, 17,111,147,240,104, 2,251,121, 84,200, 31,117,219, 19, 6, 0,179,136, -185,120,173,216, 50, 60,177,154, 73,210, 46,178,102,238,216,161,224,154, 55,191, 45,192,155, 32, 8,176,158, 59,135,165,163, 71, -215, 74, 92,121,224,129, 7,119, 60,129, 55, 68,205, 49,174, 44, 0, 82,255,205,164,194,255,241,107,116,207, 38,123, 38,132, 40, -125,124,124,246,179, 44, 27,110,183,192, 56,251, 4, 85,146,232, 57, 57, 43, 43,171, 55,165,180,180, 26,206, 72,181, 90,189,146, -231,249,246,174, 36,123,102, 89,246,100,113,113,241,196,234,146, 61,223,141, 93,132,126,126,126, 87,111,220,184, 17,105,223, 21, -237, 60, 87, 86,108, 7, 0,184,114,229, 10,122,244,232,113, 35, 35, 35, 35,226,159,228,252, 79, 9,172, 58,238,220, 33, 98,169, -106,164, 68, 46,123, 88,176, 88,163, 65, 0, 78, 36,186,104, 42, 51, 28, 48, 26,244, 27,171, 90, 22,172, 40,248,238,164, 14,180, -134,147, 31, 70, 72, 23,169, 88,252,179,216,203, 75, 94,217, 87,173, 69, 69,134, 50,179,185,175, 71, 92,121,224,129, 7, 30,120, -112, 31, 9,223, 38, 62, 62, 62, 63,137, 68, 34,169,179,136,172,248,222, 49,215, 89,173,101, 57, 57, 57,253,171, 91,109,185, 27, -156,247, 61,236, 74,211,213, 98,215, 37, 46,126,183,143,171,156,182,210,227, 94,231,188,139,231, 78,235,144,179,135,141,115,214, -125, 82,207, 30,247, 42,167,147, 14,119,137,215, 29, 78, 87,251,148,155,245,164,117, 93,207,187,197, 89, 87,247, 81, 37,245,164, -119,225,186,207,186, 79,234,217,227, 94,227,172,216,127, 92,225,117,151,211,149, 62, 85,139,122,210,186,174,231,221,226,188,211, -251,168,154,122,210, 59,237, 75, 85, 92,251, 89,255,223,222, 25,228, 32, 12,195, 64, 16,163,126, 44, 47, 35, 63,107,127, 22, 46, - 65,138, 44, 87, 80, 50, 91, 37,208, 72, 28, 56, 48,172, 99,175,112, 45,145, 28,237, 61,102,124, 45, 7,187,222, 34,106,242,172, -225,219,168,204,118, 31,200, 35,253, 5,215, 3,172, 52,211,237, 39,181,114,253,199,200,118,251,224,160,208, 35,177, 19,121,119, -177, 34,220,150, 73,237,101,203,161,234, 94,205,164,188,228,153, 68,221, 71,121, 23,230,136,210,137,120, 73, 81,243, 65,253,116, -115, 61,147,240,146,103, 18,117,127, 6,147,240, 82,196, 36,234,126, 47,247,255, 50, 41,188,127,179, 89,162,145, 37,126,193,163, -226, 70,110, 69,147,105,102,165,158, 96, 59, 60, 19,206, 81,174,204, 12, 50, 19,149, 35, 69,189,183, 76,138,239, 57, 68,158, 34, -102,175,222, 29,157,120,236,189,117,127, 22, 19,206, 17,226, 37,199, 76,240, 67, 64,106,222,103,146, 73,121, 41,208,217,157,167, -136,217,171,119, 71, 39, 30, 59,241, 27,162,226,206,176,150, 17, 68, 40, 26,161,151,233, 72,182, 98,138,163,154,180, 81, 83,156, -128,187,129,184,149,214, 89,245,217, 47, 29, 86,119,121,233,242,210,204, 94,138,234,166,148,146,205,236, 49, 82,157,123, 38,213, - 8, 5,177,119,121,201,127,150,240,210, 27,166, 41,226,167,253, 52,226,186,143, 34,164,118,181, 69,192, 75, 35, 39, 64,164, 51, -205, 16,187, 66,167,153,101, 81,236,179,236,233,229,165,203, 75,195,121,201,213,100,162, 38, 67,244,131,148,103, 18,223,209, 50, -168, 26, 85,199, 78,122, 73,145,251, 89,214, 19, 68, 42,232, 33,214, 54,113, 84, 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, 37,246, 73, 68, 65, 84,120,218,236, 93,117,184, + 84, 69, 31,126,231,236,217,222,219, 93,112,131,238, 70,186, 67,105,165,249, 16, 68, 12, 66, 76, 16, 12,148,144, 80, 36, 21,196, + 6, 20, 73, 5, 65, 41,165,187, 59, 37, 47,151,219,189, 29,103,190, 63,238,158,117,239,178,123,119, 47, 92, 16,113,222,231, 57, +207,238,169,247,204,156, 51,241,206,111,126, 51, 67, 40,165, 96, 96, 96, 96, 96, 96, 96, 96, 96, 40,123,112,236, 21, 48, 48, 48, + 48, 48, 48, 48, 48, 60, 34, 66,107,227,198,141, 62,155,192, 8, 33, 29,124,229,180,111,173, 31,117,206, 7, 24,119, 90,134,156, +173,237,156, 31,254, 75,194,217,250, 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,240, 95, 18,206,214,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,196,127, 8,252,131, 18, 89,165, 65,215,174, 93,137, 19, 63,121, + 84, 57,157,223,131,200, 95,150, 97, 45, 67,236, 40,107, 78,151,247, 89, 86,248,176,107,215,174,100,227,198,141, 59, 1,180, 46, +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,230, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56, +203,248, 27,125,104,231, 44,203,214, 77,155,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, 41,227,198, 64, 27,167,253, 15,203,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,157,101, 72,183,163,172,195,105, 15, 31,121, 80,214,215, 71, + 29, 44, 47,177,188,244,168,229, 37,119,233,166,107,215,174, 31,110,220,184,241,131, 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, 30,132,133,240, 1,160,204,195,105,111, 41,127,240, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37, +151, 52,217,166, 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,192, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221,216,244, 14, 12, 12, 12, 12, 12, 12, 12, + 12, 15, 8,132, 77, 88,202,192,192,192,192,192,192,192,240, 96,224,209, 71, 43, 54, 54,118,131, 90,173,174,232,233,188, 86,171, +189,147,146,146,210,150,189, 66, 6, 6, 6,175, 45, 58, 66, 56,252, 61,202, 89, 0, 64, 41,107,229, 49, 48, 48,252,151,133,150, + 66,161, 72, 58,127,254,124,101, 65, 16, 96,179,217, 96,181, 90, 29,191, 38,147, 9,173, 90,181, 42,181, 35,125, 84, 84,212, 46, +137, 68,146, 80,154,123,108, 54,219,205,212,212,212, 22, 37, 20,224,251, 0, 36, 17, 66,156,143,149,248, 11, 32,197,108, 54,215, + 47,137,147, 16,146,228,202,231,129, 75,252, 95, 34,103, 80, 80,208, 17,158,231,227,220,113,121,250, 47, 8,194,213,244,244,244, +102, 44,153, 62, 28, 68, 69, 69,237,226,121,190,212,233,243,206,157, 59, 30,211,103, 76, 76,204,113,142,227, 98, 74, 65, 41, 17, + 4,225,226,157, 59,119, 90,120, 18, 34, 98,154,247, 34,108,138,253, 39,132, 36, 91,173,214,134,222,242, 81, 73, 92,110,210,104, +137,156,206, 34,139,231,249, 25, 17, 17, 17, 35,116, 58,157, 1, 0,149, 72, 36, 52, 52, 52, 84, 12, 27, 0,192,106,181,102,228, +228,228,212, 98, 41,145,129,129,225, 63, 33,180, 4, 65,224,140, 70, 35, 46, 93,186, 4, 15,229,189,237, 30,158, 87,249,232, 31, + 91, 35,252, 35, 34, 97, 53,155,161, 9, 11,119,112,167,157, 59, 3,171,197, 12,171,201,132,242,141,154,136,149, 24,106,212,168, + 33,241,194, 25, 55,115,230,204, 8,127,127,127, 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, 91,216,227, 62,250,232,163,136,128,128, 0, 7,159,184,137,156, 34,175, +197, 98,129,193, 96,192,159,127,254, 89, 34, 39,207,243,113, 41, 41, 41, 17, 50,153, 12,148, 82, 8,130,224,206,185,176, 24, 42, + 84,168, 96,102, 73,244,161,162,242, 71,203, 55, 70, 4,170, 20,176, 10, 2,186,213,169,224, 56,113,245,235, 85,160, 86, 27, 4, +171, 21,149, 70, 15, 6,138, 76, 50,168, 94,189,122,137,233,147, 82, 26,255,209,242,141, 65,190,114,102,102,102,234,171, 85,171, +150,130,162,161,207,158, 44, 62,113,122,189, 62, 66, 12,131,171, 32,226, 56,174,216,182,121,243,102,116,235,214,205, 91,220,227, + 94,127,253,245, 8,139,197, 2,147,201, 4,163,209, 8,139,197, 2,171,213,234,216,108, 54,155, 99, 51,153, 76, 56,120,240,160, +175,150,172,153, 29, 59,118, 28,182,113,227, 70,205, 47,191,252,162, 73, 72, 72,128, 76, 38,131, 68, 34,129, 68, 34, 1,199,113, +224,121, 30, 79, 60,241, 4, 97, 73,144,129,129,225, 63, 35,180,140, 70,227,181,122,245,234, 81,251,255, 88,133, 66, 33,115, 41, + 64, 99, 42, 87,174,124,209,245, 62,111, 93,138,254, 17,145,152, 80, 46, 4, 0, 48,241, 70,150,163,130,248,184, 89, 93,199, 53, +147,111,231, 1, 0, 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,118,236, 8,185, 92,142,134, 13, 27, 66, 42,149,186,221,100, + 50, 25,164, 82,169, 47,149, 3,252,252,252, 48,105,210, 36, 81, 36, 65,163, 84,224,149,102, 13,161, 4,197,151,103, 46,195, 36, + 80,240, 60,239,216,124,225,148,201,100, 56,125,250, 52,120,158,135, 68, 34,113,252,138,255,215,175, 95,143, 62,125,250,128,231, +121,168, 84, 42,224, 63, 52,207,200,163,130, 64,149, 2, 67, 22,253, 12, 0,184, 53,103,180,227,219, 29, 28, 57,209,113, 77,252, +139,253, 64, 8,129, 84, 42, 5,199,113,101,198,153,157,157,173, 31, 48, 96,192, 30,127,127,255,205,249,249,249,240, 34,224,112, +235,214, 45,240, 60,239, 49,189,115, 28,135,217,179,103,227,202,149, 43, 62,197,221, 96, 48,224,171,175,190,130,205,102, 43,198, + 43,254,119, 61,230,163,200,154,218,169, 83,167,193, 27, 55,110, 12, 38,132,224,179,207, 62,131, 76, 38, 67,151, 46, 93, 16, 26, + 26,138, 45, 91,182, 64, 38,147, 97,220,184,113, 44,241, 49, 48, 48,148, 4, 41,128,186, 0,194,237,134,158, 2, 0, 65, 78,231, + 51,236,191,225, 78,251,135,221,240, 52,178, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,125, 0,106, 58, + 61, 71,188, 15,158,158,203, 3, 69,235, 15, 1,216, 1,160,141, 56,137,222,157, 59,119,158,114,178,172,156,191,120,241, 98, 85, + 81,243,216,187, 16,101, 86,171,181,178,216,157, 40, 90,139, 58,116,232, 80, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221, + 21,158, 4,140,217,108, 70,191,126,253,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 41, 23,142,247, 59, +215, 67, 99,106,129,182,144,192,154,167, 69, 79, 63, 11,206, 87,175,143,197, 55, 51,112, 35,191, 16, 60,207,251,196, 41, 8,130, + 71,145, 37,145, 72,176,104,209, 34, 12, 24, 48, 0, 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, 91,183,110, 7, 20, 10,197,146,200,200,200,148,228,228,100,175, 66,203, 85,252,184, 54, 42, 62,253,244, + 83,204,159, 63, 31,109,219,182,245, 41,156, 70,163, 17,132, 16, 44, 94,188,248,174,115, 83,166, 76,185,235,121, 37,113,218, 27, + 72, 92, 76, 76,204,200, 77,155, 54, 5,136,215,134,133,133, 65, 42,149,162, 86,173, 90,240,247,247,199,158, 61,123, 96,179,217, +124,206,151, 12, 12, 12,143, 47,220,105, 17, 39,180,154, 48, 97, 66,195, 25, 51,102, 76,107,218,180,233, 79,251,246,237, 91, 78, + 8,217,224, 84, 38,118,179,151, 61, 27,156,246, 27,185,136, 30, 41,128,112, 66,200, 6,241,122,231,125,167,227, 29, 0,200,197, +253, 9, 19, 38,212,156, 49, 99,198,180,241,227,199,191, 51,125,250,116,217,132, 9, 19,106,207,152, 49, 99,154,248, 28,119,225, +112,103,209, 42,113, 86, 97,177, 27,241,194,133, 11,240,230,191, 74, 41, 45,177,180,212,132,133, 59, 44, 89,147,227, 67, 29,199, + 39, 37,231, 58, 42,176, 5, 13, 42, 66,163,209,160,243,228, 79,124,178, 20,153, 76, 38,164,167,167, 59,172, 12,222, 54, 95, 57, +213, 42, 37,182,189, 94, 11,183,178,228,248,112,127, 54, 54,158,184, 2,169, 84,138, 39,171,215,194, 83, 50,127,188, 23, 47,199, +235,151,175,195,226,163, 79, 47,165,212,173,192, 18,255,139, 93, 40, 76,104,253,115,232, 86,167,130,195,234,116,208,191,189,227, +120, 31,237,105,199, 55,121,115,209,199, 0,128,182,245,159,128, 47,254,220,222, 56,179,178,178,244, 45,218,183,217,105,211,155, +190, 31, 60,120,240,181,237,219,183,171,124,106,222,185, 17, 90,162,213, 86, 20, 89, 60,207,195,100, 50,249, 20,119,147,201,228, + 49,127,200,100,178, 82, 91,180, 0, 64,171,213,154,214,173, 91,135, 5, 11, 22, 32, 52, 52, 20,157, 58,117, 66,116,116, 52, 86, +173, 90, 5, 74, 41, 70,143, 30, 13,149, 74, 37, 90,175, 89, 2,100, 96,248,111,163, 36, 45,162,152, 49, 99,198, 52, 87, 33,227, +188,239, 44,160, 92,196,148,179, 88,171,233,165,254,223,224, 42,158,196,231, 18, 66, 54, 76,159, 62,189,155,151,112,100,120, 18, + 90, 37, 78,223,111, 52, 26,175,213,169, 83,199, 39, 53,161,211,233, 82,189,137, 13,119,173,122,103, 43,129,159,159, 31, 52, 1, +126,224,124, 44,119, 45, 22,139, 67,168,108,221,186, 21, 42,149, 10, 93,186,116,185, 47,139,150,217,108,134, 92, 38, 5, 23, 22, +137, 33,115,182, 35,171, 64,239,168, 96,118, 92,189,134, 99,105,233,120,189,105,123,104, 84,233, 40, 52,153,124,178,188, 9,130, +112,151,200,226,121, 30,253,250,245,115, 88, 19,156,253, 86,192,186, 14,255, 49,184, 75,159,174,199, 5, 23, 75,213,189,112,102, +101,101,233,187,117,235,118,192,166, 55,125,127,251,246,237, 3, 0,148,141, 27, 55, 46,181,208, 18, 5,150, 84, 42,197,236,217, +179, 49,127,254,124,199,121, 95,133,150,213,106, 45, 38,160, 46, 95,190, 92,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8, + 0,132,164,164, 36,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,252,248,241,239, 16, 66, 54,216, 45, 75,103, 74, 16, 84,238,208,200, 69,172,101,120, 40,187,186,185, 19, 91, +206,255, 69, 76,152, 48,161,166,155,112, 28,246, 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, 24, 49,162, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59, + 81,137,176,113,187, 29,247,138, 27,199, 75,113, 35,170, 42, 36, 23,142, 67,234, 99,133,235,106,209, 26, 61,122, 52,190,250,234, + 43,112, 28,231,120, 39, 60,207,163, 82,165, 74,184,118,237, 26,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46, + 43, 43, 75,223,183,111,223,157,121,121,121,223,215,168, 81,227, 50,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,188, +121,243,138,137, 34,139,197,226, 83, 67,192, 98,177,220, 37,120,102,205,154, 85,236, 23, 0,154, 53,107,230,147,101, 24, 0,229, + 56,142,202,100, 50,116,236,216, 17,181,107,215,198, 47,191,252, 2, 65, 16, 48,106,212, 40,168, 84, 42,204,157, 59, 23, 86,171, + 21, 51,103,206,100, 22, 45, 6, 6,134,146,180,136,113,250,244,233,103,166, 79,159,238,176, 44,185, 90,180, 60, 81,218, 69, 85, +184, 40,210, 80,228,107,117,184,132,186,186,155, 39, 1,230,124,108,198,140, 25,211,220,132,195,181,187,242,225,175,117,152,122, +246, 52, 62,105, 94, 15, 64,241,238,194, 69, 79, 84,133,198, 79, 3,141,191, 31,250,174,223, 13, 0,246, 66,127,188, 79, 22, 45, + 81,104,101,101,101,149, 40,178, 74, 99,209,226,228, 60, 86,199,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 43, 52, 17, +156, 84, 6,222,102,245,137,147, 82,122, 87, 87,225,208,161, 67, 65, 8,113,140, 16,171, 83,167,142, 51, 23,171,121, 30,118,250, + 60,242, 53,206,175, 25, 9, 0,104,161,213, 58,190,197, 71,117,254, 30,223, 49,231,244, 78,135,245,113, 50,222,186, 39,206,172, +172, 44,125,227,106, 53, 15,200, 66, 2,191,191,121,243,230, 1, 0, 92,255,254,253,131,234,212,169,227, 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, 55,103, 49,228,169, 11,209,110,129,218,229,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 13,158, 68, 26, 47, 42, + 72,231,223,232,232,232,223,253,252,252, 18,125,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,146, 37, 75,224,231,231,135,231,158,123,174,212, 62, 90, 14,161, 37,227, +176, 69,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,191,255,190,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, +190,106,213,170, 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,233,211,167, 59,120,157, 45, 89, 34, 74,147,143,196,176,238,220,185, 19,199,142, 29,195,136, 17, 35,160, 82,169, 48,127,254, +124, 88,173, 86, 76,153, 50, 5, 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, 62,125,250,118,209,146,229,116,188, 88, 56, +188, 90,180, 20, 10, 69,226,165, 75,151, 28,147,149,150,244,107, 50,153,208,182,109, 91,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, 7, 31,124, 0,158,231,241,213, 87, 95, + 1, 0,222,122,235, 45,159,125,180, 68, 78,216, 8,146,233, 95,168, 55,167, 15, 76, 63, 88,144,182,247, 36,120,158, 71, 68,147, +167, 32, 52,238, 3,157,202, 15,188,205,234,243,168,195,236,236,108, 92,187,118, 13, 18,137, 4,111,188,241, 70,177,185,142, 92, + 71,178,109,221,186,149, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,223,188,121,243, + 32, 0,110,240,224,193, 65,106,181, 26,223,124,243,141, 14,128,124,213,170, 85, 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,135, 75,113,109, 35, 39,209,116,248, 30,121, 15,151, 85,192,121, 79, 66,195,104, 52,226,220,185, +115,190,242,248, 60,121,105,185,134, 79, 96,242,237, 60, 16, 66,240,101,179, 26,208, 4,248, 65,173,209,160,247, 47, 59, 29, 5, +247,233,105,111, 65,161,241, 67, 76,203, 78, 62, 21,228, 98,215,161,179,208,202,205,205,133, 84, 42,197,212,169, 83,193,113, 28, +102,206,156,137,216,216, 88,220,185,115, 7,171, 86,173,242,201,162, 37,177, 73, 16,253,108, 53,168,135, 6, 34,224,217, 86, 8, +238,248, 1,110,155,120,236, 51,168,209,202,112, 22,242, 45,243, 96, 18,108, 62,143,192,178, 90,173,216,185,115,167,171,195, 59, + 40,165,142, 89,247, 45, 22, 11,204,102, 51,102,206,156, 9,182, 66,201,195, 71,116,147,209, 8,111,248, 50, 0, 96,253,244,231, + 29,199,223, 63,253,119,250,156,253, 67,209, 2, 0, 85, 19, 58,149,138, 51, 43, 43, 75,255,100,219,102,187, 12,130,244,187, 90, +181,106, 21,179,100, 41,149, 74, 98,223,247, 73, 92,115, 28, 7,137, 68,114, 87,119,161, 39,177,229,139,143,150,213,106,117, 76, + 36, 90,146, 63,227,189, 88,180,158,127,254,121, 68, 71, 71, 59, 44, 89,147, 39, 79,134, 74,165,194,132, 9, 19, 96,177, 88, 48, +111,222, 60,150,248, 24, 24, 24,254, 9, 81,246,192,225,182, 36, 53, 24, 12,215,107,215,174, 13, 15,231, 98,149, 74,165,212,165, +144,142,169, 92,185,242, 69,215, 46, 68, 66, 72, 7, 74,233, 54,119,133, 58, 33, 4,254, 1,254, 80,250,105,160,118,177, 98, 41, +253, 3,160,240,243, 3, 39,147,186,171, 16,238,226, 20,125, 75,156,133,150,184,229,229,229, 65, 42,149, 98,193,130, 5, 8, 8, + 8,128,209,104,244,202, 41, 86, 58, 18,137, 4,186, 91, 5, 56, 63,109, 27,228,202,125,168,216,105, 0,162,165, 42,200,246,172, +133,222,102, 41,113,194, 82,119,156,149, 43, 87,198,196,137, 19,239,154,214,193, 19, 98, 99, 99,189,198,253,126,193, 56,221,115, +150, 52, 42, 86,132, 64,109,238,174,115,203, 41, 90,178, 12,130,244,187,107,215,174,137,150,172, 64,181, 90,141, 47,190,248, 66, + 7,128,155, 50,101,138, 58, 62, 62, 94,226, 75, 90,146, 72, 36,152, 51,103,142, 91,159, 44,119,162,171, 52,249,200,249,222,214, +173, 91,187,157,176,212,157,120,115,199, 41,134, 53, 52, 52,212, 97,201,178,217,108,142,209,134,226,236,243,158, 26, 21, 44,125, + 50, 78,198,249,223,225,124, 92,225,182,150, 79, 73, 73,121,210,211, 13, 21, 43, 86,188,116,233,210,165, 74,226, 82, 28,246,130, + 83,102, 48, 24, 42, 55,107,214,204,171,105, 71, 16, 4, 40, 20, 10, 80, 74,209,110,226, 12, 16, 14,224, 80,188, 18,139,104,222, + 30, 18, 9, 15,161,104,169, 15,175,163, 14,245,122,125,177,202,193,221, 86, 88, 88, 8,163,209,232,243,108,222, 6,131,161,216, + 20, 12,132, 10,184,241,199,202,187, 70, 31,138,155,175,126, 59, 74,165,178, 88,215, 79, 73,240, 54, 39, 25, 67,217, 67, 28,176, + 0, 0, 85,154,117,129, 32,216, 64,109,182, 98,203, 36, 85, 75,124, 18, 2,181,193,108,209,193,104, 52,122, 51, 59,146,204,204, + 76,125,223,190,125,119, 2,248,182,103,207,158, 23, 81, 52,226,133,250,249,249, 41,164, 82,169, 0, 32, 27, 0,205,201,201, 9, +188,125,251,182, 96, 48, 24,202,123, 11,231,198,141, 27,113,238,220, 57,180,108,217,178,216,114, 80,162, 85,212,121,118,119, 95, +210,167,216, 93,238,110, 70,120, 79, 66,206, 87, 72, 36, 18, 4, 6, 6, 66, 38,147, 97,234,212,169,144,201,100, 80,171,213, 0, +128,121,243,230, 57, 38, 95,101, 96, 96, 96,248,207, 8, 45,111,229,102, 9,221,138, 37,118, 33, 90,173,214,228,248,248,248, 82, + 61,204,102,179,165,121, 17,110,201,171, 86,173,146, 57, 91, 33,188,253, 82, 74,211,188, 84,182,201,235,215,175,151,185,179,110, +120, 90, 96,218, 27,167,205,102, 75, 78, 72, 72,240,104, 49,113, 7,139,197,114,155, 37,209,135, 7,155,205, 86, 66,250,124,247, + 94,211,231,229, 42, 85,170,220, 14, 10, 10,250, 45, 50, 50, 50,107,239,222,189,161,141, 26, 53, 10,117,190,166, 81,163, 70,209, + 46,183,153,224,121,157, 67, 16, 66,146,123,246,236,233, 54,205,139,162,201, 77,250, 76,246,150,230, 15, 29, 58, 36,115,190,223, + 19,191, 83, 62, 74,246, 65,184,222,168, 87,175, 30,231,204,227, 41,237, 91, 44,150, 12,150, 10, 25, 24, 24,254,243, 66, 75,175, +215,223,170, 93,187,182,213,195,185,155, 37,221,155,153,153,217,176,172, 35, 96, 54,155,155,253, 27, 56, 51, 50, 50, 26,178,228, +246,104,227, 65,124,163,180,180,180,198,101,205,105,181, 90,203, 60,125, 90, 44,150,102, 15,226,157,102,101,101, 53,101, 41,139, +129,129,129, 9,173, 82,192,215,105, 28, 24, 24, 24, 24, 24, 24, 24, 24,254,235,224,216, 43, 96, 96, 96, 96, 96, 96, 96, 96,120, + 48, 32, 40, 90,165,250, 46,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, 39,227,100,156,143, 31, +167, 55,238,199,110, 52,163, 56,154,234, 65,108, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113,254, 87, 55,214,117, +200,192,192,192,192,192,192,192,240,128,192,179, 87,240,207,128, 16, 34,161,148,218,202,144, 50, 24,128,167, 5,227, 76, 0,114, +238, 37,152, 0,100,246, 77,156,232,200, 2,192,108,223,124,152,186,126, 18,151,146, 18, 92,147,218,164,141, 40, 33, 82, 65,192, +137,242,229,203, 29, 7,158, 52, 1,128, 95, 84,245,234,126, 26, 85, 7,163,217,148,168,144,202,207,229,106, 11,183, 26,210, 46, + 94,103, 41,132,129,225, 31, 41,151,186, 3,152,100,207,251,211, 41,165, 43,217, 91, 97, 96,120, 64, 66,203,223,223,255, 8,199, +113,113,222,230,231,113,202,160,176,217,108,201,217,217,217, 13,125,204,208, 60,128,190,126,126,126,109,165, 82,105,115, 0,176, + 88, 44,123, 11, 11, 11,183, 3, 88, 69, 41,181,222, 99, 65, 17, 0,160, 31,128, 65,246, 67, 63, 2, 88, 73, 41,205,191, 71,190, +218,129,129,129,107,164, 82, 41,205,204,204,108, 2, 0,161,161,161, 7, 44, 22, 11,201,207,207,239, 77, 41, 61, 85, 74, 62, 78, + 42,149,206,110,217,178,101, 43, 66,200,183,148,210, 5,101,244, 45, 21, 28,199,185, 21, 40,130, 32, 36,220, 3,159, 12, 64,224, +130, 5, 11, 66,151, 45, 91, 86, 47, 57, 57,185, 22, 0,196,197,197,157, 30, 60,120,240,241, 87, 94,121, 37, 11, 64,158, 93,112, +121, 68, 74, 74,112,205,244,212,171, 35,210,210,207,245, 3,128,168,232, 90, 43, 37, 18, 78, 22, 27,123,108,191, 58,108, 80, 88, +149,170, 21, 94,254,233,155, 5,178,132,196,114,248,115,223,177,186,175,188,250, 78, 77,101,100,149, 79,153,216,122,120, 8, 8, + 8, 56,194,113, 92, 92, 73,121,220, 93,158,183,217,108,201, 89, 89, 89, 13, 61,113,242, 60, 31, 87, 82,121,225,238,152, 32, 8, + 87, 51, 50, 50,220, 78, 53, 17, 24, 24,184,159,231,249, 68, 95,185,196, 95,171,213,154,236,105,106,153,192,192,192, 35, 18,137, + 36,174,164,120,186, 59, 39, 8,194,213,244,244,116, 79,225,188, 43,238,101, 17,206,123,225, 44, 41,156, 98,121, 4, 96, 94,104, +104,232, 19, 89, 89, 89,255, 3,240, 78,126,126,126, 29,137, 68,130,144,144,144,119, 8, 33, 87, 2, 3, 3,191,206,203,203,219, + 7,224, 85, 74,169,192,114, 12, 3, 67, 25, 9, 45,142,227,226,110,223,190, 29,161,209,104, 0,252,189, 30,159,184,152,180, 32, + 8,160,148, 58,126,173, 86, 43,170, 85,171,230,171,216,168, 21, 16, 16,176,122,194,132, 9,229,251,246,237, 43, 23,151,154, 73, + 73, 73,169,188,102,205,154,255, 77,157, 58,245, 3, 66, 72, 31, 74,233,105, 95,197, 11,128,246, 0,134,214,171, 87,239,153,201, +147, 39,203,218,181,107, 7,155,205,134,223,126,251,173,229,148, 41, 83, 22, 16, 66,214, 2,248, 30,192, 31,190, 22, 22,132,144, + 22, 81, 81, 81,203,247,236,217, 19,125,237,218, 53, 91,223,190,125, 87, 0,192,145, 35, 71,146,108, 54, 27,105,210,164,201, 70, + 66,200, 64, 74,233,158, 82,188,243,103,198,140, 25,211,127,244,232,209, 17,207, 61,247,220, 48, 0, 11,236,207, 34,246,247, 92, +218, 5, 14, 29,150, 44, 74,169,172,132,235,162, 74, 97,217,210, 92,187,118, 45,184, 89,179,102, 35,211,211,211, 95,119,230, 77, + 75, 75,195,209,163, 71,205,211,166, 77,155,179,111,223,190,133,137,137,137, 57, 0,180,158,136,168, 77,218, 40, 45,253, 92,191, + 86, 77, 23, 4, 2,192,170,245, 35, 7, 28, 58,158,225,191, 97,211,226,255,201,149, 50,227,178, 47,231,200, 42, 85, 76,192,142, + 35,151,113,240, 92, 54,169,213,162, 27,159,183, 97,105, 71, 0,139, 89,246,124, 56,144, 72, 36,177,201,201,201, 17,106,181,218, +237,194,241, 46,126, 25,226, 4,168,168, 92,185,178,231,130,133,231,227,110,223,190, 29,161, 84, 42, 29,101,135,107,153, 33,150, + 43,142,180, 66, 41,170, 84,169, 98, 46,161, 76,138,191,121,243,102,132, 90,173,118,240,184, 11,159,171,224,168, 82,165, 74, 73, +113, 47, 22, 78, 95, 56, 41,165,168, 84,169,146,205, 91,220,197, 21, 48,188,197, 91,228, 76, 76, 76,164,165,225,244, 37,156, 21, + 42, 84, 48,123,249,252,243, 46, 94,188, 56,186, 92,185,114,168, 84,169,210,190, 39,158,120, 34, 64,163,209, 96,211,166, 77,168, + 94,189,122,205,128,128,128,131,171, 86,173,146,142, 27, 55,174,238,119,223,125, 7, 0,175,176, 28,195,192, 80, 70, 66,139, 16, + 2,141, 70,131, 21, 43, 86,120, 92,142,195,249,127,249,242,229,125,122, 32, 33,164, 97, 98, 98,226,206, 61,123,246,168,162,163, +255,158, 16,219,100, 50, 33, 56, 56, 24,163, 70,141,146,119,239,222,189, 82,167, 78,157, 14, 16, 66, 90, 83, 74,143,120,225,123, + 38, 60, 60,252,179,247,223,127, 63,178,127,255,254, 8, 13, 45, 54,233, 54,250,246,237,139,222,189,123,203, 46, 94,188, 56, 96, +201,146, 37, 3, 22, 45, 90,148, 74, 8,121,133, 82,186,182, 36, 94,181, 90,221,179, 98,197,138, 95,236,217,179, 39, 34, 34, 34, + 2, 73, 73, 73,220,184,113,227, 42, 85,174, 92, 89, 21, 23, 23,199,221,185,115, 7,191,252,242, 75,236,192,129, 3, 87,203,229, +242,151, 77, 38,211, 58, 31,226, 46, 15, 13, 13,125,231,229,151, 95, 14,203,207,207,183, 30, 61,122,244,146,120, 92, 46,151, 79, +105,218,180,105, 35, 66,200, 15,148,210,175,239,197,146,101,183,218,185,174,101, 98, 17,207,251,104,217,146,159, 56,113, 34,164, +105,211,166,107,141, 70, 99,253, 17, 35, 70,220,156, 54,109,154, 42, 32, 32, 32, 0, 0,201,207,207,207,153, 52,105,146,105,238, +220,185,111, 87,175, 94,189,253,254,253,251,159,169, 91,183,174,197, 46,226,238, 22, 90,132, 56,194,115,235,118, 6,118,238, 19, +228, 19, 39,188, 21,247,241, 71,137, 55, 14,159,189, 37,240,170, 0,252,186,235, 12,210,178, 10,241,251,254,179,136, 10,245, 39, + 50,133,180,102, 80, 92,205,214,121,183,207,238,162,108,101,237, 7, 14, 66, 8,212,106, 53,126,253,245,215,187,150,174,114,183, +172, 21,207,243, 8, 10, 10,242,186,186,129, 82,169,196,214,173, 91,221,174,189,232,110, 73,159,192,192, 64,160,132, 69,181, 9, + 33, 80, 42,149,216,187,119, 47, 56,142,115,187, 52,144,235, 49,141, 70, 3,174,132,181,174, 68,206, 93,187,118,121,229, 18,127, +253,252,252, 0, 64, 82, 98,166, 84, 40,176,103,207, 30,143,113,118,253,239,103, 95,239,213, 27,231,222,189,123,139, 45,253,229, +186, 36,152,243,190, 70,163,113, 52,224, 60,182,210,130,131,155,196,197,197,225,208,161, 67, 88,181,106, 85, 72,205,154, 53,113, +249,242,101, 16, 66, 48,109,218, 52, 82,163, 70, 13,105,106,106, 42, 90,182,108,137,159,127,254,185, 25,203, 45, 12,255, 32,164, + 0,234, 2, 8, 71,209, 42, 52, 5, 0,130,236,117,143, 28, 64, 22, 0,149,125, 51, 2, 40, 4, 16,102,191, 55,211, 94,182, 56, + 11,132, 12, 20, 95,124,186,145,157, 91, 92,161, 34,220,233,156,248, 12,215,125,215, 95,183,220, 60, 0,108,220,184, 81,172,204, +218,116,237,218,117,103,177,152,249, 32,178,196,117,202, 92,243,180,155, 5,102, 21, 26,141,102,205,129, 3, 7, 84,225,225,127, +199,193,104, 52,162,160,160, 0,133,133,133, 40, 40, 40,128,191,191, 63, 86,173, 90,165,106,223,190,253, 26, 66, 72,101, 74,169, +209, 19, 39,128, 57,119,238,220,137,180, 90,173,144,203,229,158, 90,194,168, 86,173, 26,222,121,231, 29,116,238,220, 57,170,109, +219,182,115, 0,172, 45,129, 19,106,181,250,139,163, 71,143, 70,168,213,106, 92,186,116, 9,201,201,201,120,243,205, 55,203, 9, +130,128, 91,183,110,225,242,229,203,184,125,251, 54,150, 44, 89, 18,209,171, 87,175, 47, 0,172, 43, 41,238,118,140,120,253,245, +215,171, 6, 7, 7,115,159,124,242, 73,174, 86,171,253,220,126,124,226,252,249,243,159,109,213,170, 85,196,240,225,195, 41, 33, +100, 25,165,244, 46,225,226,194,233,206,146,101, 3,112,222,229,182,106, 46,150,174, 40,123, 34,204,117,195, 73, 0, 4,118,234, +212,233, 13,163,209, 88,127,207,158, 61, 87,154, 55,111, 30, 15,224,142,152,248, 2, 3, 3, 53,115,230,204,137,236,214,173,219, +197,118,237,218,213,239,212,169,211, 27, 25, 25, 25,211,236,231,169, 43,167, 32,224, 68, 84,116,173,149,187,246,191,210,111,199, + 94,147,236,173, 87, 63,184, 89,190, 92, 66,222,137, 75,217,182,179, 87, 51, 80,160,183,226,233,118, 69, 11,152, 55,169, 85, 30, +159,173,216,131, 81,175,189, 43, 93,187,114,105,239, 43, 20, 26, 0, 27, 75,120,159,247, 5,198,249,183,216, 16, 4, 1, 82,169, + 20, 79, 61,245, 20, 8, 33,119,173,229, 41,149, 74,177,127,255,126,180,107,215, 14, 82,169, 20,207, 63,255,188, 79,156, 60,207, +163, 83,167, 78,142,117, 20,157,249, 92, 69,131, 59, 77,224, 26,119, 74, 41,120,158, 7,199,113, 30, 23,210,118,229,244, 86, 46, +137,225, 44,137,203,249,156,183,112,138,214, 36, 95, 69,150,175,156, 98, 56,121,158, 71,179,102,205,112,252,248,241, 18, 69,151, + 59,125,233, 26,247,156,156,156, 33,149, 43, 87,222,181, 96,193,130, 16, 0,200,202,202,114, 44,120, 47,145, 72,112,225,194, 5, +152, 76, 38,124,248,225,135,230,252,252,252,225, 44, 31, 49,206, 7,201, 89,146, 22, 1,208,106,194,132, 9, 13,103,204,152, 49, +173,105,211,166, 63,237,219,183,111, 57, 33,100, 3,165,180,155,248, 59, 97,194,132,154, 51,102,204,152, 54,126,252,248,119,166, + 79,159,126,134, 16,178, 1, 0, 92,247,237,225,239,230, 34,226,194, 69, 30,123,158, 43,118,173,187,125,215, 95, 15,220,127, 91, +180,186,118,237, 74,236,145, 36,206,133,154,175, 66,203,151,181,251,120,158, 31, 61,109,218,180,200,146, 68, 86, 97, 97, 33, 82, + 82, 82, 16, 31, 31,143,231,159,127, 62,114,193,130, 5,163, 1,204, 42,129, 86, 38,145, 72,112,232,208, 33,164,167,167,163,118, +237,218, 72, 76, 76, 44,118,193, 95,127,253,133,223,126,251, 13,185,185,185,104,208,160, 1, 80,228,127,228, 22,117,235,214,253, +176, 90,181,106,157, 58,117,234,100, 85,169, 84, 56,113,226, 4,234,215,175,143, 21, 43, 86,160,124,249,242, 80,171,213,184,120, +241, 34,106,215,174,141,157, 59,119, 34, 60, 60, 28,245,234,213,179, 54,104,208, 96,119,118,118,246,246,235,215,175,127,232,161, +229, 44,139,141,141,253,224,165,151, 94,146,167,164,164, 8,223,127,255,253, 30, 74,233, 30, 66,200,232,119,223,125,119, 88,231, +206,157, 35,142, 29, 59,150,119,248,240,225,131,238, 68,150,143,150, 44,171,107,165,100,179,217,140,122,189,222,100, 52, 26, 45, + 28,199, 93, 39,132,152,108, 54,155,167, 62, 31,229,208,161, 67, 43,100,102,102,142,122,237,181,215,174,217, 69,214, 5, 20, 57, +192, 3, 0,172, 86,171,177,176,176, 48,191,105,211,166,241, 3, 7, 14,188,178,124,249,242, 81, 67,135, 14, 93,245,253,247,223, + 23, 2,208,187, 18,150, 47, 95,238,184, 68,194,201,180, 5, 33, 87, 87,175,250,250,245,223,214,143, 46,119,235,214,237, 74,161, + 97,225, 90,153, 95,120,202,170, 31,191, 59, 2,192,148,146,145,143, 83,127,165, 66, 42,149,224,220,173, 60,180,122,178,175,244, +202,165,143, 90,136, 66,139,225,129,130,138,139, 80,239,216,177,163, 68,139,214,254,253,251, 33,149, 74,161, 82,169, 48,119,238, +220, 18, 73, 69, 97, 32, 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,254,249,231,120,237,181,215,138, + 61,195, 46, 54,136, 55, 78, 79,225,139, 79, 72, 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,213, 87, 95,161, + 91,183,110,216,176, 97, 67,137,191, 79, 61,245, 20, 56,142,163,190,188,207,102,205,154,193,108, 54, 59,194,124,225,194, 5,183, +188,139, 22, 45,242,102,201,236, 14, 96, 82,253,250,245, 3,218,182,109,139, 93,187,118,161,119,239,222, 70,179,217,124,201, 94, + 39, 84, 89,176, 96,129,252,232,209,163, 8, 13, 13,149,222,188,121,243, 91, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111, +198,140, 25,211, 92, 69,140, 51,196,243,132,144, 13,211,167, 79,239,230, 44,138,156,247,157,172, 78,206, 34,174,166,179, 69,202, + 89, 68,121, 18, 80, 46,245,173,243,245, 25,110,133,150, 61, 98,109,156,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48, +176,203,211, 79, 63,237, 16, 57, 6,131,193, 33,176, 68,145, 37,238, 95,188,120, 17, 13, 27, 54,148, 5, 6, 6,118,241, 34,180, + 68, 17,135,152,152, 24,100,102,102,226,244,233,211,136,143,143,135,197, 98,193,230,205,155,145,151,151, 7,169, 84, 10,153, 76, + 6,179,185,100,151,133,106,213,170, 61,181,108,217,178,134, 75,151, 46,205, 17, 91,116, 63,254,248, 35, 40,165, 8, 15, 15,135, + 78,167, 67, 90, 90, 26,182,111,223, 14,171,213, 10, 63, 63, 63, 36, 37, 37,201,123,246,236,217, 98,210,164, 73, 82, 0, 31,122, +160,110,214,187,119,239,192,128,128, 0,188,250,234,171,212,108, 54, 79, 39,132, 52,235,221,187,247, 7,175,188,242, 74,232,245, +235,215, 77, 47,188,240,194, 33,179,217,252,137,189, 16,148, 82, 74, 45, 94, 90, 20, 30, 45, 89, 22,139, 69,124,167,215, 10, 11, + 11, 17, 22, 22, 22,239,197,135, 11, 0,100,123,247,238,109, 6, 64, 50,101,202, 20, 37,128, 52,103,145,101, 50,153, 80, 88, 88, + 8,173, 86,107,201,203,203, 75, 31, 59,118,172,117,249,242,229, 18,251, 61,231,220, 9, 45,224, 73, 83,141, 26, 26, 57,165,146, +119, 23, 47, 94,236,215,185,115,103,206,207,207, 15, 5, 5, 5, 1,191,111,218,228,215,190,109,139,164,105, 51, 62,222, 18, 16, + 87, 59,109,239,137,171,184,157,154, 7,147,197,130,164,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,237, +218,133, 39,159,124,210,145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,177, 99,135, 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, + 87, 94,121, 5, 82,169, 20,227,198,141, 3,207,243,168, 87,175, 30,120,158, 71,211,166, 77, 33,149, 74,209,174, 93,187, 82,199, +253,192,129, 3,168, 95,191,190, 35, 76,245,234,213, 67,163, 70,141,192,243, 60, 90,182,108, 9,169, 84,138, 78,157, 58,249,194, +249, 78, 65, 65, 65, 29, 63, 63, 63, 92,188,120, 17, 18,137, 4,132,144,203,148,210, 58, 0,240,210, 75, 47, 93,209,233,116, 21, + 12, 6, 3, 94,122,233, 37, 98, 50,153,106,143, 27, 55,238, 93, 0, 76,104, 49, 60, 48,184,106, 17, 39,232,199,143, 31,255, 14, + 33,100,131,104,161,114,181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,228, 34,226,196,110,191,174, 37,220,107,114, 17, 86, +174, 93,135,135,125,182,104,137,133,175,175, 66,203, 27, 12, 6, 67,221,136,136, 8,143, 34,203,249,215,100, 50, 33, 49, 49, 17, + 6,131,161,110,105, 43,141,232,232,104,152,205,102,124,253,245,215,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,179,103, +207, 94, 59,112,224, 64,253, 6, 13, 26, 4,255,252,243,207, 25,173, 91,183, 14,239,220,185, 51, 84, 42, 21,244,122, 61, 44, 22, + 11,154, 52,105,130,106,213,170, 33, 57, 57, 25,191,255,254,123,102,229,202,149,195, 14, 30, 60, 40,164,166,166,222, 40,129,186, + 99,251,246,237, 65, 8,193,166, 77,155, 50, 41,165,135,149, 74,229,111, 31,125,244, 81,176,201,100, 18, 6, 15, 30,124, 51, 59, + 59,251, 53, 0,102,133, 66, 49,191, 83,167, 78, 77, 37, 18,201, 15, 54,155,109,110,105, 19,170,235,187,213,106,181, 80, 42,149, +190, 76, 37, 33,205,206,206,174, 5, 0, 26,141, 38, 4,192, 21, 71, 10,215,235,139,137, 97,147,201,100, 8, 9, 9,209, 0,128, +253, 30,169,135,239, 17,174, 86,171, 87,223,184,113,213,223,217,127, 46, 40, 40, 8,131, 6, 14,228,154, 55,107, 38,175, 83,183, +110,167,247, 62, 93,186, 34, 38, 52,192,148, 20, 19, 10,139,205,130,109, 91, 54, 11, 84,176,108, 97,197,206,195, 17, 90,162,216, +112,181,104, 73,165, 82,236,220,185,243,174, 99, 50,153, 12, 95,126,249,165, 79,194, 64, 20, 85,158,186,206, 92,186,186,136, 55, + 1, 35,149, 74, 33,145, 72,240,213, 87, 95, 65, 16, 4,188,254,250,235,197,186, 19,157,249,125,236, 2,113,220, 83,237, 3, 1, +128, 9,201,179, 21,142,251, 93,195,107,191,199, 39, 43,217,130, 5, 11,124,178,104,117,237,218,213,171,112,117,238, 97,112, 14, +215,241,227,199,221,242, 46, 94,188,216,235,251,180,217,108,216,184,113,163, 67,164,138,120,255,253,247, 95,138,139,139,139,220, +189,123, 55, 82, 83, 83,161,213,106, 81, 88, 88,136, 38, 77,154, 36,117,232,208,225, 68,106,106,234,245,179,103,207, 62,205,114, + 15,195, 67,180,104, 25,167, 79,159,126,102,250,244,233,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 48,236, 93,134,227,199, +143,127, 7, 69,110, 53,135,125,184, 87,238,218,117, 88,162, 33,200, 69, 69, 78,114, 87,248,250,210,125,232,163, 57,157, 39,132, +192, 96, 48,184, 21, 88,206,226,192,108, 54, 35, 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180, 78,159, 62,253,220, +176, 97,195, 82, 2, 3, 3,235,100,100,100,164, 11,130,208,110,255,254,253,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,237,183, +223,160, 86,171,241,202, 43,175,164,219,108,182, 93,254,254,254,161,122,189,254,100,106,106,234,123, 30, 21,140, 84,218,169,101, +203,150, 56,122,244, 40,114,114,114,182, 18, 66,234, 13, 31, 62,252,201,114,229,202,145,143, 62,250,200,240,215, 95,127,205, 5, +144,174,209,104,150, 45, 91,182,172,109,131, 6, 13,252, 7, 15, 30, 12, 66,200, 98, 74,169,193,215, 56,107,181,218, 98, 2, 43, + 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223,153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162, + 75,168,212, 19,159, 70,163,153,178,116,233, 82,149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,253,247,222,147, 77,126, +115,120,125,137, 95,228,126,142, 35, 48,153,105, 46, 21, 76,155,181,105,253,119,179, 98,231,225, 64, 20, 6, 61,122,244,184,171, +187, 80, 38,147, 97,235,214,173,232,213,171,151,163,225,210,160, 65, 3,175,141, 43, 81, 24,116,239,222,221, 97, 25,218,188,121, +179,219,110, 63,209, 34,229,139, 32, 20,175, 29, 51,102, 12,120,158,199,103,159,125,134, 55,222,120, 3, 28,199, 97,246,236,217, +224, 56, 14, 19, 39, 78,244, 89,100, 58, 11,152,235, 31, 23,253,198,189,145,143,172, 69,145, 0, 0,255,128, 0, 49, 66,165, 42, +123,120,158,119, 88,178,234,214,173, 11,169, 84,138,166, 77,155,130,231,121,135, 37,171, 75,151, 46,206,239,145,250,194,201,243, + 60, 46, 93,186,228, 8,115,211,166, 77,139, 89,178,120,158, 71,215,174, 93,125, 9,230,180,160,160,160, 73,213,170, 85,171, 62, +103,206, 28,169, 68, 34, 65,251,246,237,171,188,240,194, 11, 55, 66, 67, 67, 67,167, 76,153,162,118,115,143, 10, 64,157,234,213, +171,107, 88,174, 97,120,128, 22,173, 73,110, 78, 5, 59,251, 92,149,162, 33,185,193,249,122,145,195, 85, 28,217, 45,100,187,188, +113,185,187,215, 27,120, 81, 65,150,100, 82,247, 69,104,217,205,206, 37, 62, 76,173, 86,159, 74, 79, 79,111,170, 82,169,138,137, + 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181,250, 84, 89,126, 68,111, 93,135,118, 81,243,166,211,139,237,208,165, 75,151,239, +183,110,221, 26,189,109,219, 54, 28, 60,120, 16,225,225,225, 88,176, 96,193,157,180,180,180,231, 40,165, 91,125,121,110,133, 10, + 21,106,249,249,249, 97,239,222,189, 0,176, 19,192,240, 81,163, 70, 17,139,197,130, 69,139, 22,105, 1,108, 10, 10, 10,218,184, +106,213,170,250,117,234,212,145,111,219,182, 45,255,224,193,131,127,248, 40,178,108,130, 32,220, 37,176,156,223,169,191,191,191, + 47, 22, 45, 75, 96, 96,224,233,252,252,252,190,122,189, 62, 95,161, 80,248,231,231,231, 27,157, 5,150,200,207,243,188,244,210, +165, 75, 41, 0,146, 2, 3, 3, 79,195,169,139,177, 88, 2,227,249,246,237,219,183,231, 93,191, 65, 90, 90, 26, 82, 83, 83, 97, + 54,155,209,160, 65, 3, 34, 33, 22, 73,246,205,147, 47,177, 98,230, 31,177,104, 81, 49,175,139,163, 4,221,141, 52,220,188,121, +179, 99,159,227, 56,216,135,251,123, 21, 69, 91,183,110, 45,209, 97,221,165,235,208,171,105, 92,188,126,225,194,133, 69,203, 91, +216, 45, 89, 28,199, 97,252,248,241, 80, 40, 20,248,232,163,143, 48,126,252,120,240, 60,239,181,235,208, 89,192, 36,140,211, 57, + 55,142,138, 50,133,221, 31,138, 16,226, 44,182,136,175,226,173, 36,107,158, 47, 61, 1,206,156,226,125, 74,165,210,163, 35,188, + 11, 39, 41, 33,222,191, 18, 66,174, 70, 71, 71,239,109,218,180,105,224,145, 35, 71, 48,123,246,108,153,209,104, 44,191,109,219, + 54,199,115,221,189, 47,173, 86,171, 98, 57,135,225, 65, 88,179, 74, 56,157,225,226, 95, 69,156,187,241, 74,248,117,189, 30, 78, +199,156,121, 51, 92,234, 49,231,227,174,226,202,245, 25,206,215,100,120,180,104,121, 43, 44,188, 9, 46, 95, 44, 90, 58,157,238, +143, 77,155, 54, 53, 26, 56,112, 32, 95, 82,183,161, 86,171, 69,100,100, 36,206,156, 57, 99,213,233,116,127,248, 96, 41, 43, 51, +161,229,166, 80,217, 22, 21, 21, 37,177, 88, 44,168, 84,169, 18, 98, 99, 99, 97, 48, 24,144,155,155, 43,241, 85,100, 17, 66,100, + 13, 27, 54,148, 0, 64,110,110, 46, 80, 52,212,180, 74,229,202,149,113,244,232, 81,100,103,103,175, 5,208,121,210,164, 73, 13, +154, 52,105, 34, 91,177, 98,133,110,196,136, 17,107, 45, 22,203,135, 62, 90, 35, 76, 86,171, 53,145,227, 56,115,110,110,238,109, +231,247, 25, 25, 25, 25,162,209,104, 72, 90, 90,154,197, 23,161, 85,167, 78,157, 67, 55,111,222,196,148, 41, 83, 50,166, 77,155, + 86,185,160,160, 32, 39, 47, 47,207,234, 44,182, 12, 6, 3, 23, 22, 22,166, 88,180,104,145, 10, 0,234,212,169,115,200,147,208, +210,106,181,229,212,234,191, 27,198, 70,163, 17,169,169,169, 72, 77, 77, 69, 90, 90, 26, 10, 10, 10,144,148,148, 4,157, 78, 23, +207,138,153,127, 76,104, 21,235, 62,115,206,223,206, 21,121,105,242,186,179,128,233,209,163,135,195,183, 75,180,144,137,219,234, +213,171, 93, 29,204,125, 18, 90, 11, 23, 46,196,152, 49, 99,160, 84, 42, 49,103,206,156, 98, 93,135,174,226, 64, 16, 4,226, 75, +220, 19,223,214, 35,117,126, 8,164, 82, 41, 66, 71,164, 21,235,162,115, 35, 56,124, 10,231,180,105,211,202,164,235,208,153, 51, + 62,190, 40,171,124,245,213, 87,232,219,183, 47,118,239,222,125,207, 93,135, 53,107,214,252,113,195,134, 13,129,103,207,158, 69, +126,126, 62, 50, 50, 50, 96, 52, 26,145,156,156,236,177, 87,192, 94,150, 43, 89,206, 97,120,200, 56,252,144,121,203,236,121,188, +151, 10,220,103,161,229,139, 69,203,104, 52,206,121,245,213, 87, 71,117,232,208, 33,196,223,223, 31, 41, 41, 41,119,137,172,194, +194, 66,248,249,249, 65,175,215, 99,253,250,245,249, 70,163,113,142, 55,113, 96,177, 88, 16, 17, 17,129,204,204, 76, 8, 30,252, +167, 57,142,131, 74,165, 66, 97, 97, 33, 60,137,130,146, 42, 12,179,217, 12,139,197, 2,139,197, 2,179,217,140, 82, 78,239,164, + 22, 39,126,213,106,181, 0,160,141,137,137,169,164, 84, 42,113,237,218, 53,160,104,100, 95,135, 39,159,124, 82,154,149,149, 69, + 95,120,225,133, 61,148,210,151,188,204,142,111,218,181,107, 87, 34, 0,168, 84,170,139, 0,144,156,156,108,201,205,205, 45,102, + 41, 84,171,213,180, 87,175, 94,209,148, 82,236,218,181, 43, 81, 38,147, 81,120,152,243, 10,128, 97,221,186,117,103, 3, 3, 3, +151,207,152, 49, 99, 96,183,110,221,206,212,170, 85, 43, 81,171,213,166,235,245,122,189,193, 96,160, 18,137, 68, 22, 28, 28,172, +220,178,101,203,149,253,251,247,119, 8, 8, 8, 88,190,110,221,186,179, 0,220, 90,222, 52, 26, 77,178, 78,167, 75, 16,191,169, +179,200, 74, 77, 77, 5,165, 20, 87,175, 94,133, 90,173,190,201,202,145,127, 14, 98,163,202,213,242,226,122,204, 87,145,229, 44, + 12,182,108,217, 82,226, 28, 90,190,114, 58,139,162, 55,222,120, 3,243,231,207,191,203,162,245,209, 71, 31, 1, 0,222,123,239, + 61,159,125,180, 68,235, 85,234,252, 16, 68,141,201, 46, 22,118, 0, 32, 98,248, 74, 57,165, 27,207,243,152, 50,101,202, 93, 78, +234,206, 93,123, 62,118,241, 21, 11,103,122,122, 58,120,158, 71, 72, 72, 8, 6, 13, 26,132, 78,157, 58, 57,186, 32, 75,203,123, +254,252,249,189,111,191,253,118,237,154, 53,107, 98,234,212,169,217, 65, 65, 65,254, 47,190,248, 34,159,155,155, 75, 74,178,104, + 49,161,197,192, 80, 6, 66, 75,204, 96,190,142, 58,116, 87, 88, 18, 66, 58, 56,207,181, 65, 41,205, 35,132, 12,234,216,177,227, +207, 43, 87,174, 84, 85,168, 80, 1,231,207,159, 71,118,118, 54, 76, 38, 19,100, 50, 25,162,163,163,145,155,155,139,239,190,251, + 78,175,211,233, 6, 81, 74,243, 74,226, 4,240,110,195,134, 13,191,152, 53,107,150,178, 94,189,122,200,206,206, 70, 97, 97, 97, +177, 89,172, 3, 2, 2,160, 82,169,112,232,208, 33,108,222,188, 89, 15,224, 93, 47,156,238,212, 28,204,102,179, 67,112,121, 19, + 90, 46,156, 26,209,170,163,211,233, 0,192, 82,174, 92,185, 40, 0,184,122,245, 42, 0, 92, 79, 74, 74,154, 84,161, 66, 5,178, +108,217, 50, 74, 41,221,236, 78,100,185,112,102,183,108,217, 50, 7, 64,148,201,100,146, 1, 64, 94, 94,158, 57, 44, 44, 44, 66, +161, 80, 8, 42,149, 74, 80, 42,149, 66, 74, 74,138,213,106,181,202, 0,160,101,203,150, 38, 0,169,112,242, 5,113,225, 20, 0, +228, 47, 94,188,120,210,224,193,131,155, 54,107,214,172,230,200,145, 35, 79,191,240,194, 11, 92,108,108,108,112, 65, 65,129,225, +242,229,203, 57,159,126,250,105,193,129, 3, 7, 58, 72,165,210, 27,139, 23, 47,158, 4, 32,223,126,239, 93,156, 86,171,245,143, +109,219,182, 61,215,173, 91, 55,254,246,237,219, 72, 75, 75,115,136,172,180,180, 52, 84,171, 86, 13,251,247,239,183,153,205,230, +109,165,120,159,101,101,201, 97,156, 69,141, 16, 42,230,117, 79, 2, 75,108, 76,249,202,233, 44,138,250,246,237, 91,204,138, 37, +147,201,176,102,205, 26,183,229,134,155, 25,206, 59,184,206, 39, 37,134,233,237,183,223, 46, 38,218,222,127,255,125,143, 65,243, +246, 62, 69,158,188,175, 98,139,143, 58,244,144,207, 75, 10,167, 88,118, 74,165, 82,188,255,254,251, 62, 91,180,224,226,163,229, +142, 83,140,123,235,214,173,161,211,233, 28, 66,214,147, 69,203,219,251,180,217,108, 99,230,207,159, 79, 3, 2, 2,158,200,207, +207,255,223,205,155, 55,151,232,116,186,198,121,121,121, 37, 90,180,140, 70,163,130,229, 35,198,249, 32,230,210,250, 79, 9, 45, +123, 37,137,114,229,202, 21, 91, 59,139,227,184, 98, 91,105,252, 12,236, 25,119, 11, 33,228,153,230,205,155,255, 48,102,204, 24, +255,122,245,234, 73, 19, 18, 18,160,213,106,113,237,218, 53,156, 57,115,198,186,110,221,186,124,157, 78,247, 63, 74,233, 22, 31, +248,150, 18, 66, 54,119,238,220,121, 98,147, 38, 77, 94,254,224,131, 15, 36, 85,170, 84, 65, 94, 94, 30,130,131,131, 17, 17, 17, +129, 11, 23, 46, 96,253,250,245,182,204,204,204, 47, 0, 76,166,148,102,148,182,193,111, 54,155, 49, 96,192, 0, 8,130,128,185, +115,231,130, 16, 82,154,230,173,217,108, 54, 83, 0, 36, 51, 51, 19, 0,116,246,217,165,113,249,242,101, 0,184,145,152,152,232, + 15, 0,219,182,109, 35, 0,124, 93,210,135, 58, 91,182,170, 85,171,118,205,181,112, 20, 45, 89,162, 21, 12,222, 23,130, 54,244, +235,215, 47, 93,167,211,117,126,227,141, 55, 38, 46, 92,184,112,224,194,133, 11,239,186, 40, 32, 32, 96,249,236,217,179, 39,247, +235,215, 47,221,147, 53,203,110,193,123,111,200,144, 33,253, 78,157, 58,229,175, 84, 42,161,213,106,145,149,149, 5,179,217,140, +164,164, 36,164,167,167, 99,233,210,165, 5,122,189,254, 67,150, 29,255, 25, 56, 11, 3, 79, 86, 45,111, 34,171, 36,171,206,175, +191,254,234,118,142,170,210,114,186,138, 13, 95,231,182, 42,169, 81, 36, 78, 75,227,110,202,136,210,148,107,238,120,121,158,199, + 39,159,124,226,152,180,213,157, 37,171, 52, 22, 45,145, 51, 36, 36,164,200, 76,110, 95, 50,169,107,215,174,247,204,107, 95,142, +236, 21,167,103, 76, 27, 59,118,236,164,106,213,170, 85, 1,160,112,126, 7,108,145, 6, 6,134, 50, 22, 90, 54,155, 45,185,106, +213,170,197, 10, 56,111,139,153, 90, 44,150,100, 31, 51,247,102, 66, 72,210,236,217,179, 95,213,104, 52, 29,116, 58, 93,109,123, +193,113, 74,171,213,110, 51, 26,141,243, 74,179, 8,180, 93, 56,141, 38,132,204,237,220,185,243, 71,237,218,181,235,243,230,155, +111, 18, 74, 41, 22, 45, 90, 68,255,250,235,175,213, 0,222,165,148,254,117, 47, 47, 41, 36, 36,228,236,119,223,125, 23,249,243, +207, 63,195, 98,177, 96,222,188,121,240,247,247, 63, 91,138,240,165,243, 60,255,125,179,102,205,158,221,191,127,255, 82, 74,233, + 73,185, 92,190,164, 69,139, 22, 67,246,239,223,255, 35,165,244, 12,207,243, 75,154, 52,105, 50,228,240,225,195,171, 40,165,199, + 75, 17, 60,135,101,203,106,117,223,211,232,206,146,229, 5,249,195,134, 13, 51, 15, 27, 54,236,205,126,253,250,125,125,248,240, +225,198,185,185,185,181, 1, 32, 40, 40,232, 84,163, 70,141, 14,173, 92,185,242,130,221,146,101,240,246,109, 8, 33,189,106,215, +174,189,118,234,212,169,154,154, 53,107,242,149, 42, 85,194,245,235,215,113,250,244,105,235,183,223,126, 91,168,215,235,123, 80, + 74,115, 88,118,252,231,132, 22,165, 20, 65, 65, 65,197, 26, 81,226,144,255,210,118, 23, 58, 87,204,226, 82, 61,174,188,158, 56, + 75,154, 54, 65,132,159,159,159, 99,114, 83, 95, 92, 22, 4,161,228,249,216, 40,165, 14, 78,113,243, 65,100,121, 29, 33,104, 95, + 2,199,103, 78, 95,166,119,208,104, 52,176, 88, 44, 14, 94, 31, 70,126,146, 82,126,179, 95, 1,252, 90,169, 82,165,203, 0, 42, + 50,113,197,192,240, 0,133, 86,118,118,118,195, 7,249, 96,187,144,154,108,223,202,138,243, 47, 0,253, 8, 33,179,254,252,243, + 79,177, 31, 97,138,183,245, 18,189,225,252,249,243,221,164, 82,233,151,203,151, 47,111, 66, 41, 69, 96, 96,224,129,235,215,175, +191, 88, 26, 14,171,213, 58,140, 16, 50, 74, 28, 69,104, 50,153,134, 17, 66, 94,165,148, 22, 58,157,119,236,151, 54,234, 0,140, +148,210, 24, 15,231,141,165, 16, 89, 14,203, 22, 0,211,202,149, 43, 11, 1,156,192,223,243,100, 89,236,155, 1, 78,221,133, 94, +190,203,118, 66, 72,165,247,223,127,127,154, 68, 34,105,175,213,106, 99, 53, 26,205, 45,171,213,250,135, 78,167,123,151, 82,154, +197,178,226, 63, 7,147,201,116,187,106,213,170,188,187, 6, 84, 73, 21,121, 73, 13, 43,155,205,150, 92,185,114,101,175,141, 51, + 55,156,183, 75, 72, 71, 55,146,146,146, 56, 95,185, 68,152,205,230,244,146,194,153,148,148,132,210,114,122,139,123, 98, 98,162, +219,184,123, 17,132,183, 75, 40, 63,238,137,179,164,247, 89, 18,244,122,125, 78,120,120,120,161,193, 96,144, 26,141, 70,169,213, +106, 45,102,126, 84,169, 84, 25, 44,231, 48, 48,220,167,208,250, 55,195, 46,172,186,151, 33,159, 17,192,179,101,192, 99,112,217, + 47, 44,105,191,148,120, 16, 22, 33, 1,128,174,140,222, 97, 38,128, 23, 88,150,123,244,144,153,153,249, 68, 89,115,102,101,101, +149,121, 67, 45, 35, 35,163,233, 3,136,123,195,255, 42,103, 73,184,125,251,246, 19, 44,103, 48, 48,148, 13, 56,246, 10, 24, 24, + 24, 24, 24, 24, 24, 24, 30, 12, 8,128, 14,238, 78,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, + 39,227,100,156,143, 31,167, 55,238,199,110, 52, 35,165,244,129,109, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113, +254, 87, 55,214,117,200,192,192,192,192,192,192,192,240,128,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12,255, + 70, 16, 66,170,148, 47, 95,254, 92,213,170, 85,111, 19, 66,134, 62,224,103, 13,106,218,180,105,150, 82,169,220, 66, 8,169,194, +222, 62, 3, 3, 3, 19, 90, 12, 12, 12,143,181,200,170, 93,187,246,158,243,231,207, 87,219,182,109, 91, 76,108,108,236,199, 15, +242,121, 13, 27, 54,156,185,123,247,238,144, 77,155, 54,117,140,138,138,218,117, 47, 98,139, 16, 82, 37, 62, 62,254, 92,213,170, + 85,147, 9, 33,131,202,248,125, 12,109,214,172, 89,182, 66,161,216,204,132, 32,195,127, 32,255,215, 34,132,212,102, 66,139,129, +129,129,225, 1,138,172,125,251,246,133, 26, 12, 6,156, 63,127, 30, 25, 25, 25,199, 31,228, 51, 47, 94,188,152,179,111,223, 62, +196,197,197,225,199, 31,127, 12, 79, 76, 76,220, 93, 26, 65, 35,134,249,220,185,115,213,182,109,219, 22, 27, 17, 17,241,105, 89, +134,175,113,227,198, 31,237,222,189, 59,120,203,150, 45,157,194,195,195,119, 49,177,197,240, 24,230,123, 5, 33,228, 89,142,227, + 14,213,170, 85,235, 84,205,154, 53, 79,114, 28,183,159, 16,210,151, 16,194,255, 39,223,137,184,196,194,198,141, 27,119, 2, 64, +215,174, 93, 91,179,164,194,192,192,112,159,133,109,205,154, 53,107, 30, 56,112,224,128, 90,175,215, 99,213,170, 85,248,224,131, + 15, 44,217,217,217,187, 1,104,221,220,114, 24,192,231,190, 44,189, 69, 8, 9, 0, 48, 10, 64, 35, 55,167, 53, 33, 33, 33, 45, + 39, 77,154, 36,125,242,201, 39, 97, 48, 24,208,187,119,111,195,197,139, 23,235, 81, 74, 47,250, 42, 12,245,122, 61,142, 28, 57, +130, 30, 61,122,108,177, 88, 44,157,203,234,189, 4, 6, 6,158,249,245,215, 95,107,196,196,196,224,234,213,171, 24, 50,100, 72, + 70, 90, 90, 90, 43,111, 97, 99, 96,248, 23,228,249, 4, 0, 47,251,249,249, 13,111,211,166, 77,112,143, 30, 61, 16, 26, 26, 10, +171,213,138, 91,183,110, 97,195,134, 13,216,183,111, 95,138,201,100,154, 15,224, 43, 74,105,174, 59,158,199, 81,139, 16, 74, 41, + 54,110,220, 72, 1,180,177, 71,110, 39, 75, 50, 12, 12, 12,247, 89,232,238,211,233,116, 77,117, 58, 29, 10, 10, 10, 80,174, 92, + 57, 72,165, 82,183,215,166,167,167, 99,239,222,189,120,229,149, 87,206,166,166,166,182, 42,105,221, 75, 66, 72,112,253,250,245, +247,109,223,190,189,138,191,191,191,227,184, 32, 8, 48,155,205,176, 88, 44, 48,155,205, 48, 26,141, 48, 26,141,144,203,229, 80, +169, 84, 8, 9, 9, 57, 77, 41,173,237,171,200, 58,118,236, 24, 6, 15, 30,156,145,149,149, 85,166, 34,136, 16, 82, 37, 34, 34, + 98,215,210,165, 75,195,147,146,146,112,243,230, 77, 60,255,252,243,153, 55,110,220,104,201,196, 22,195,191, 56,191,143,127,230, +153,103, 62,138,140,140,228,106,213,170,133,232,232,104, 24,141, 70,232,245,122, 80, 74,193,243, 60, 40,165,200,203,203,195,174, + 93,187,176,125,251,118, 99, 78, 78,206,119, 0,230, 81, 74, 47, 57,137,172,199, 82,139, 56,132, 86,215,174, 93, 9, 75, 46, 12, + 12, 12,101, 84,240,158,202,203,203,171,101, 52, 26,161,213,106,125,186,231,234,213,171, 24, 58,116,232,217,212,212,212,230,238, + 44, 91,132,144,128,250,245,235, 31,220,181,107, 87, 21,131,193,128,252,124,239,235,206,203,229,114, 40,149, 74,132,134,134,238, +167,148, 54,243,212, 18,175, 85,171,214,145,253,251,247,135,232,245,122, 28, 63,126, 28,131, 6, 13, 50,103,103,103,239,129,123, +235, 27, 0,100,163,104, 29,213, 27,110,248,226, 1,188, 10, 32,193,195,189,154,240,240,240, 22,203,150, 45,147, 85,168, 80, 1, + 58,157, 14,125,251,246,205,190,120,241, 98, 35, 74,233, 53,150,122, 24,254,133,249,253,226,249,243,231, 43,219,108, 54,100,102, +102,194,104, 52, 66,167,211, 57,132,150, 68, 34, 1,165, 20, 86,171,213,209, 48, 58,122,244, 40,182,109,219, 70,175, 94,189,250, + 1,165,116,138, 40,180, 30, 71, 45,194,179, 36,194,192,192,240, 0,208,175,113,227,198,199,127,255,253,119,165, 92, 46,199,250, +245,235, 61,118, 29, 70, 70, 70,214, 92,178,100, 73, 98, 82, 82, 18, 22, 44, 88, 80,163,119,239,222,163, 0, 76,115,195, 57,106, +251,246,237, 85, 12, 6, 3,142, 31, 63,142, 33, 67,134, 92, 75, 75, 75, 59,227, 42, 98, 18, 19, 19, 91,126,250,233,167,210, 6, + 13, 26, 32, 63, 63, 31, 29, 59,118,212, 1,120,185,132,176,142,222,177, 99, 71,136, 94,175, 71, 65, 65, 1,218,180,105,131,172, +172, 44, 25,128,118,158,110,208,235,245, 72, 72, 72,168, 2,224, 46,241, 22, 26, 26,250,205,205,155, 55,219,170, 84,170, 18, 95, +144,217,108, 70,114,114, 50,130,130,130,176, 97,195,134,144,138, 21, 43,190, 7, 96, 24, 75, 58, 12,255, 70,152, 76, 38,252,244, +211, 79,168, 95,191, 62,170, 87,175,142,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161, 81,163, 70,168, 92,185, 50, +121,253,245,215, 7, 1,152,242, 56,191, 27, 81,104, 77, 98, 62, 90, 12, 12, 12,101, 5, 74,233, 69, 66, 72,189, 14, 29, 58,236, + 94,189,122,117, 88,151, 46, 93, 80,177, 98, 69,233,211, 79, 63, 29,174,213,106,219,187,180,134,131,135, 12, 25,114,228,214,173, + 91,137,246, 67,141, 60,208, 54,242,247,247, 23,125,155,174,165,165,165, 53,116,237,102, 84, 40, 20,155, 79,156, 56, 33,149,203, +229, 56,124,248, 48,134, 14, 29,154,121,237,218, 53,111,221,114, 65, 38,147, 9, 18,137, 4, 0,144,156,156,236, 53,126, 55,111, +222,132, 32, 8, 70,119,231, 56,142, 83, 28, 61,122, 20, 49, 49, 49, 37,114,112, 28, 7,153, 76,230,124, 40,151,165, 28,134,127, + 41, 44, 38,147, 9, 13, 27, 54,196,181,107,215,112,244,232, 81,135,224,202,204,204, 68, 74, 74, 74,177,139, 15, 29, 58,132, 99, +199,142,161, 85,171, 86,174, 60,143,165, 22,225,237, 17,250,112,227,198,141, 76, 96, 49, 48, 48,148,181,216,106,217,189,123,247, + 93, 75,151, 46, 13, 47, 87,174, 28,252,253,253, 3,220, 92,151, 67, 8, 57, 35,149, 74, 19,125,229, 78, 75, 75, 59,227,206,151, + 43, 42, 42,170,158,201,100,194,177, 99,199, 48,104,208,160, 12,187,207,151, 55,223,167,169,237,219,183,239,190,101,203,150, 16, +165, 82,137, 51,103,206,248,210,117,120, 29,192, 60,119, 39, 50, 50, 50, 6,181,106,213,234,125, 0, 33, 30,238,213, 84,174, 92, +185,197,145, 35, 71,100,132, 16, 92,191,126, 29,125,251,246,205, 6,240, 25, 75, 53, 12,255, 82, 76,124,230,153,103,190, 29, 53, +106, 84, 96,147, 38, 77,144,156,156,236, 16, 92,245,234,213, 67,157, 58,117,240,215, 95,127, 97,243,230,205, 56,118,236, 24, 20, + 10, 5, 42, 86,172,136,194, 89,159, 2,159,194, 34,146, 60,174, 90,196, 49,234,144,129,129,129,225,129, 20, 50,132, 84,145,201, +100,115,195,195,195,235,222,190,125,251, 13, 74,233,143, 46,231,131,251,244,233,115,102,197,138, 21,209,215,175, 95, 71,133, 10, + 21,214, 83, 74,123,186,225, 89, 71, 41,237,113,245,234, 85, 52,111,222,220,173, 69,139, 16, 50, 52, 42, 42,106,114, 65, 65, 65, +158, 78,167,235,235,171,131, 57, 33,164, 74,165, 74,149,118,175, 95,191, 62, 76,173, 86,227,220,185,115, 15,204, 25,190,106,213, +170,123, 14, 29, 58, 20, 42,149, 74,113,248,240, 97, 12, 25, 50,132, 57,195, 51, 60, 14,249,220, 31,192,216,164,164,164,183, 70, +140, 24,161,168, 81,163, 6,146,147,147,145,145,145,129,156,156, 28, 28, 56,112, 0, 0, 16, 27, 27,139,216,216, 88, 92,184,112, + 1,123,247,238,205, 47, 44, 44, 28, 70, 41,253,249,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,125,250,244, +105,184,108,217,178,232,172,172, 44, 28, 60,120, 16,189,123,247,126,151, 82, 58,205,205,125,239,164,166,166,126, 4, 0,167, 79, +159,118,245,209,242,232,156, 94, 26, 17,148,144,144,176,123,213,170, 85, 97,161,161,161, 56,127,254, 60,250,246,237,123, 70,171, +213,214, 42,171,184,171,213,234, 45,169,169,169, 29,101, 50, 25,246,239,223,143, 65,131, 6,177,233, 29, 24, 30,183,252, 29, 1, +224,189, 26, 53,106,188, 60,124,248,112, 62, 62, 62, 30,183,111,223,198,159,127,254,137,138, 21, 43,226,214,173, 91,216,190,125, +187, 41, 35, 35, 99, 46,128, 25,148,210,188,199,254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,230,179,103, +207, 82, 17, 54,155,141,222,190,125,155,110,217,178,133, 70, 69, 69,157, 1, 16,224,142, 19, 64, 64,245,234,213,207, 95,184,112, +129,222,188,121,147,154,205,102, 7,199,249,243,231, 41,128,157,247, 27, 78, 0, 85, 98, 99, 99,211,119,236,216, 65, 47, 92,184, + 64,163,162,162,110,149,101,220, 19, 18, 18,210, 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84, 97,105,137,113, 62,142, +156,246,134,212,178, 6, 13, 26,216,230,207,159, 79, 95,126,249,101, 26, 31, 31,111, 3,240, 13,128,216, 7,169, 61, 30,181,141, +141, 58,100, 96, 96,120,216, 80, 28, 56,112, 0, 10,133,194,113,224,228,201,147,206,243,104,229,123,104, 20,230, 19, 66,154,119, +233,210,101,247,252,249,243,171, 91, 44, 14,215, 14,236,216,177, 3, 0,140,101,208,240,188, 72, 8,105,213,185,115,231,121,161, +161,161,117, 83, 83, 83, 39,150,101,196,175, 95,191,254, 70,237,218,181,167, 21, 20, 20,228,151,166,107,147,129,225, 95,104,196, +185, 14, 96, 48, 33,228,227,163, 71,143,190, 11,128, 2,152, 74, 41, 61,247, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,125,225, +133, 23, 92,157,197,125,154, 25,222,238, 56,223,172,107,215,174,174, 51,195,123,116, 78,191, 23,177, 5,160,211, 3,170,124,126, + 4,240, 35, 75, 2, 12,255, 33,193,117, 6, 64,255,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 0, 60,127, 31,247,231, +195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252, +187, 64, 0,116,112,119,130, 82,186,205,103, 18, 66, 58,148,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248, +113,122,227, 46,141,254,248, 87,192,199, 97,156,132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107, +194,137,251,143,248,116, 4,228, 81,141,251,127,133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132, + 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125, 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17, + 66,240,168,149, 37,101, 89,207, 61,136,184,255,151, 57, 31, 23,240, 37,189, 48,137, 68,178, 37, 44, 44,172,109,102,102,166, 96, + 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5, 5, 5, 1,247,240, 49,190,137,140,140, 28,154,149,149, 37,112, 28, 7,165, 82, + 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41, 9, 9, 9, 57,122,189,222,207,245,184, 82,169, 52,220,184,113,195,255,191, 80, + 80,202,100,178,103, 66, 66, 66,130, 50, 50, 50,168,184,248,173, 68, 34, 17, 23,194,181,230,230,230,126,239, 43, 95, 72, 72,200, +161,144,144,144, 32,241,126, 66, 8,178,178,178,114,211,210,210, 26, 3,128, 74,165,218,171,209,104, 66,121,158,135, 68, 34,129, + 68, 34,129, 78,167,203,202,204,204,108,206,170,173,127, 39, 86,175, 94, 45,233, 28,251,124, 69,158,234,235,112, 28, 13, 20, 4, +146,103, 37,170,147,155,111,127,115,197,151,251,251,244,233, 99, 99,111,241,225, 65,161, 80,204,141,140,140, 28, 94, 88, 88,168, + 35,132, 80, 66, 8,138,170, 1,220,245,107,179,217,146, 51, 51, 51, 27,122,169,108,165,114,185,124,118, 84, 84,212, 16,157, 78, +167,179,243, 81, 66, 8,162,163,163,139,241, 1,128,197, 98, 73,206,200,200,104,232, 75, 88, 35, 34, 34, 22,171, 84,170,255,233, +116, 58,173, 93, 24, 57,247,208, 56, 87,230,127,101,100,100,180,244, 38, 12,228,114,249,188,200,200,200,231,236,113, 7, 33,132, +134,135,135,223,119,220, 35, 35, 35,135,104,181,218, 98,113,143,136,136,112,203,233, 41,238,238, 56,157,195, 73, 8, 65,120,120, +248,125,135,243, 81,228,124,236,133, 22, 0,142, 16,178,174,121,243,230,109,118,238,220,201,157, 63,127,158,171, 86,173, 26,108, + 54, 27, 4,161, 40, 93,199,197,197,169,239,161, 2, 95,210,178,101,203, 1,187,118,237,226,214,173, 91,199, 53,106,212, 8,132, + 16,216,108, 54,216,108, 54,212,170, 85, 75,117,159, 2,193,143,231,249,215,229,114,121,107,171,213, 90, 29, 0,164, 82,233, 57, +163,209,184,211,106,181,206,161,148, 22,250,194, 99, 54,155,213,233,233,233,119,189,155,164,164, 36,249,189,134, 45, 32, 32, 96, + 31,199,113, 73,142, 23,108, 23, 28,238, 50,179,248, 75, 41,189,154,145,145,209,204, 19,103,112,112,176,131,211, 19,135,235, 49, + 65, 16,174,166,167,167, 55,243, 34,178,122,183,108,217, 50,112,219,182,109,228,214,173, 91, 68,165, 82, 65, 16, 4,216,108, 54, + 88, 44, 22,212,168, 81,163, 84,211,130, 4, 5, 5, 5,140, 31, 63,190,226, 83, 79, 61,133, 53,107,214,224,217,103,159, 69,139, + 22, 45, 46,137,231, 53, 26, 77,232,217,179,103, 43,135,132,132, 64,167,211, 33, 47, 47, 15, 29, 59,118,252,215,103,174, 38,245, +203, 77, 37, 28,113,204, 21, 69,173,182,236, 3, 39,110,191,119,191,188, 65, 65, 65,199,228,114,121,164,248, 93, 57,142,115,251, +173,157,143, 25, 12,134,180,204,204,204,250, 94,242, 79, 2,128,238, 18,137,164, 18,207,243, 85, 1, 36, 88,173,214, 72, 0,144, +201,100,105, 18,137,228,186,197, 98,185, 96, 50,153, 46, 3,248,213, 62, 33,161, 91,116,142,125,190, 34,177,234,250, 20, 24,133, + 46,234, 10, 51,170,232,254, 26,127, 81,173,208,253,214, 57,246,249,213,190,138,173,127,176,161, 81, 5,192, 74, 20, 45, 40,253, +178,125, 30,160,251,225,139, 5,208, 3, 64, 21,153, 76,150,104, 54,155, 51, 1, 28, 5,176,141, 82,122,137, 16, 18, 31, 30, 30, +254,163, 32, 8,198,172,172,172,231,221, 45, 35,212,180, 97,249, 35, 28,199,197,193, 46, 35, 4,106, 75,222,127,228, 86,153, 84, + 80, 18,137,100,222,211, 79, 63,253,220,234,213,171,213, 71,143, 30, 85, 87,175, 94,221, 81, 62, 9,130, 0, 87, 67, 68, 98, 98, +137,107,127, 19, 0, 60,199,113,115,251,244,233, 51,112,217,178,101,234, 27, 55,110,168, 99, 98, 98, 28,156,206, 34, 78, 68, 76, + 76,140, 79, 97, 13, 13, 13,253,230,169,167,158, 26,188,116,233, 82,233,250,245,235, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187, +235,218,230,205,155, 11, 94,232, 56,142,227,230,245,236,217,115,240,138, 21, 43,212, 7, 15, 30, 84,215,170, 85, 11, 18,137,228, +190,227,222,171, 87,175,129, 63,253,244,147,250,212,169, 83,234, 74,149, 42,129,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174, +156, 79,156, 61,122,244, 24,184,114,229, 74,245,177, 99,199,212, 85,171, 86,117,188, 79,167,110,187, 82,135,243, 17,231,124,124, +133,150,221,140,186,172,121,243,230,157,119,238,220, 41, 1,128, 99,199,142, 33, 59, 59, 27,177,177,177,240,243,243,131, 66,161, +128,193, 96,160,165, 44,108,190,177,139, 44, 41, 0,172,253, 95, 47, 92,149, 2,175,164,155, 32,147,201,240,215, 95,127, 65, 34, +145,208,251, 40,204, 90, 5, 4, 4, 44,253,249,231,159,131,235,215,175,207,101,102,102, 34, 49, 49, 17,217,217,217,141,119,237, +218,213,224,249,231,159,127,158, 16,242, 44,165,116,151,175,156,191,253,246, 27, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19, +185,231, 23,205,243,113,215,175, 95,143,240,243,243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,185,114,101,179,151, 2, 50, +238,198,141, 27, 17, 42,149, 10,148,210, 98,124, 54,155, 13, 10,133,194,185,229, 0,155,205,134,164,164, 36,179, 55, 75,150, 40, +178, 0, 96,249,242,229,136,138,138, 66, 68, 68, 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28,157, 59,119,198,135, 31,126, +136, 25, 51,102, 96,236,216,177,197, 10, 90,169, 84,138,144,144, 16,108,218,180, 9, 1, 1, 1,136,143,143,135, 84, 42,253,247, + 91, 6, 57, 18,178,255,200, 77,135,133,246,201,118,213,248, 38, 13,226, 23,218,191, 48, 56, 14, 16,132,162,170,147, 16, 80,171, + 69,200, 57,124,242,246, 68, 31,222,103,204,141, 27, 55, 34,156,103, 86, 47, 9, 54,155, 13,177,177,177, 18, 47,249,167, 75,205, +154, 53,215,142, 28, 57, 82, 86,169, 82, 37, 34,147,201,192,243, 60,120,158, 23,211, 99, 60,165, 52, 94, 16,132, 54,105,105,105, +116,193,130, 5, 31, 19, 66,158,166,148,254,230, 54,189, 83,125,157, 2,163,208,101,247,113, 52,238,211,225,109,108, 90, 53,190, +113,203,122, 2,252,213,250, 43, 0, 30, 89,161, 69, 8,169, 82,179,102,205,227, 7, 15, 30, 84,154,205,102, 52,105,210,228, 0, + 33,164,193,189,204,224, 78, 8, 9, 6,240,233,132, 9, 19, 6,143, 28, 57, 82, 18, 20, 20, 4,185, 92,142,130,130, 2, 92,185, +114,101,200,247,223,127, 79, 9, 33,159, 3,240,191,126,253,122,211, 67,135, 14,161,109,219,182,175, 2,120,253,110, 69, 32,137, +219,123,232, 90,132,184,223,163,115,109, 89,179, 70,241,105, 69, 13, 50,215,171, 41, 4,155,144,124,240,120,114, 67, 31,194,248, +241, 51,207, 60, 51,104,245,234,213,126, 0,176,104,209, 34, 60,243,204, 51, 8, 9, 9,129, 90,173,134, 76, 38,131, 84, 42, 45, +246,235,197, 66, 36, 1,240,113,255,254,253,251, 44, 91,182,204, 31, 0,150, 45, 91,134, 94,189,122, 33, 52, 52, 20,254,254,254, +144,203,229,144, 72, 36,165,254, 54,161,161,161,223,180,104,220,120,216,210,165, 75, 1, 0,239,190,246, 26,158,122,226, 9,248, +169, 85, 80,171,228, 16,223,133, 92, 34,197,147,175,140,241, 22,111, 14,192,172,103,158,121,166,223,138, 21, 43,252, 1,224,232, +209,163, 72, 79, 79, 71,100,100, 36, 84, 42, 21,228,114,185, 35,206,132, 16,168, 84, 42,159,226,254,204, 51,207,244,249,233,167, +159,252, 1, 96,201,146, 37,232,220,185,179, 35,238, 10,133, 2, 50,153,172,216,230, 42, 58,221,113, 62,253,244,211,125, 86,174, + 92,233, 15, 0,223,127,255, 61, 58,116,232,128,224,224, 96,199,251, 20,185, 74,243,141, 30,101,206,199, 90,104,137,190, 83,145, +145,145,253,118,239,222,205, 57,137, 4, 40, 20, 10, 40, 20, 10,200,229,114, 71,247, 97, 41, 10, 28, 18, 25, 25, 57,116,215,174, + 93,142,155, 76,244, 46,211,117,169, 43,112, 39,254, 14,109,219,182,253,105,195,134, 13, 74,153, 76, 6,189, 94,143, 51,103,206, + 32, 48, 48, 16,114,185, 28, 61,123,246,148, 52,111,222, 60,180, 77,155, 54,107, 8, 33, 3,125, 25,209, 64, 41,133,159,159, 95, + 49,161,117,191, 93,204, 42,149, 10,235,215,175,135, 68, 34,113, 91,128, 57,255,143,136,136,240, 37,222, 80, 40, 20,216,183,111, + 31, 36, 18, 9,164, 82, 41,120,158,135, 84, 42,197,198,141, 27,241,230,155,111, 34, 51, 51, 19,132, 16, 72,165, 82,248,251,123, +237,245, 36, 33, 33, 33, 65,162,200, 18, 69,144, 74,165,130, 84, 42, 37, 60,207, 19,177,107,143, 16, 66,124,237,115,231, 56, 14, + 63,252,240, 3,102,206,156,137,113,227,198, 97,241,226,197,168, 83,167,142,179, 8, 69,126,126, 62,130,131,131, 17, 28, 28, 12, +165, 82,121,207,105,225, 81,130,235,219,153, 61,103,190, 26, 2, 69,145, 19,136, 0, 8, 0, 5,133, 64, 5,164,221,190,130, 15, + 62,252,196,231,218, 71,161, 80, 96,239,222,189, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77, +250,229,151, 95,228, 63,252,240, 3, 86,172, 88,225, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,219,111, +191,149,213,169, 83,103, 18,128,223,220,127,115, 26,168,174, 48,163, 74,159, 14,111, 3, 0,250,188, 77,145,115,233,163,186, 92, +238,196,192, 71, 89,100,213,174, 93,123,207,190,125,251,148, 58,157, 14,130, 32,224,183,223,126, 83,119,232,208, 97, 55, 33,164, +101,105,197, 86, 66, 66,194,250,125,251,246, 53, 15, 15, 15, 71, 94, 94, 30,242,243,243, 97,177, 88, 32,145, 72, 16, 31, 31,143, +143, 63,254,152,244,236,217,115,244,144, 33, 67, 12, 42,149, 74,180,108, 36,120, 42,143,156,177,224,179,133, 65,148, 22,165, 31, + 42,208, 98,191,217,233,215,241,218, 27, 31,248, 20,198,114,229,202,189,188,102,205, 26, 63,103,203,146,179, 8,112, 46,163,196, +205,147, 48,176, 91, 53,184,242,229,203, 15,251,241,199, 31, 29,156, 97, 97, 97,142,114,137,231,121,112, 28,135,221,187,119, 99, +250,164, 9, 8, 14,143,193,252,207, 22,121, 13,103, 68, 68,196,226, 46, 93,186,252,111,201,146, 37,142, 99,181, 43, 84, 64,215, +230, 79, 32, 34, 44, 0, 97,193, 69,101, 27, 21, 8, 78, 94,184,230,181, 62, 2,192,149, 43, 87,238,249, 85,171, 86,249, 57, 55, + 8,197,184, 2,128, 78,167,115, 88,241, 77, 38, 19, 26, 54,108,232, 83,220,157, 57, 69,107,155, 40,218, 92,203,122,177, 33, 83, + 18,103,185,114,229,134,137, 66, 24, 0, 66, 66, 66,138,113, 72,165, 82,172,218,180,244,174,186,225,126, 57, 75,251,221, 93, 57, +175, 95,191,142,105,211,166, 57,202, 36,209,170, 71, 8, 65,108,108, 44,230,207,159, 95, 18,167, 59, 52, 2, 16,238,180,111, 2, + 32,119,250,205, 64,209, 10, 19,174,215,137,199,165, 0,234,218,207,217, 0, 20, 0, 8,114,195,231,137, 39, 19, 69,203, 8,133, +187, 92,239,250, 28,247, 66,107,227,198,141, 20, 0,214,175, 95,223,182, 71,143, 30,123, 51, 51, 51,133,243,231,207,115, 71,143, + 30,133, 84, 42, 69, 68, 68, 4, 26, 53,106, 36,118,171, 65, 42,149, 66,163,209,144,160,160,160, 52,177,226, 21, 95,162,115, 95, +187,147,160,225,178,179,179,133,173, 91,183,114,203,158,238, 4, 19, 5,234,189, 63, 29,157,187,117,195,230, 88, 57, 36, 0, 26, +159,207,132, 90,173,230,165, 82,169, 69,252, 24, 34,167,179,239,150,171, 72, 34,132,248,107, 52,154,111,127,253,245, 87, 37,199, +113, 40, 40, 40,128, 32, 8,104,222,188, 57, 56,142,195,233,211,167,241,238,187,239, 98,237,218,181,248,229,151, 95, 84,245,235, +215,255,150, 16, 82,157, 82, 90,224, 84,136,109,115,151, 72,253,253,253,161, 86,171, 29, 66, 75,140,179,179, 9, 92,188,158, 82, +122, 59, 51, 51,179, 65, 73,156, 54,155, 13,189,122,245, 2, 33, 4, 18,137,164, 88,225,227,252, 43,147,201,112,250,244,233,187, + 18,161, 59,129, 40, 8, 2, 90,180,104, 1, 0, 80,171,213,240,243,243, 19,215,125, 3, 0,212,171, 87, 15, 38,147, 9, 97, 97, + 97, 56,119,238,156,187, 2,188, 24,103, 70, 70, 6, 77, 73, 73, 33,203,150, 45,131, 84, 42, 69,104,104, 40,212,106, 53, 89,186, +116,233, 4,153, 76, 22,103, 48, 24, 4,147,201, 4,185, 92, 62, 95,180,110,241, 60,175,205,203,203, 11,245,196, 41,145, 72, 48, +114,228, 72,188,245,214, 91, 88,188,120, 49, 94,122,233,165,187, 44, 94, 6,131, 1, 97, 97, 97, 14,177,229, 75,220,239, 95, 8, + 61, 96, 78,129,226,204,177,205, 56,123,106, 27, 4,155, 0,155, 64, 65,169, 13,130, 21, 56,186,245, 64,229, 59, 87, 83, 98, 41, + 40, 96,239,224, 80,228, 21, 90,219,132, 41,170, 2, 88,183, 35,211, 56,215, 91,250,228,121, 30, 22,139, 5,191,254,250, 43,174, + 92,185,130, 45, 91,182, 64,175,215, 59,222, 99,211,166, 77, 49,108,216, 48,183, 66,203,149,147, 82,186,228,214,173, 91,245, 90, +180,104, 65,114,115,115,145,155,155, 11,189, 94, 15,155,205, 6,171,213, 10,158,231,161, 84, 42,161, 82,169, 16, 25, 25, 9,131, +193, 64,141, 70,227, 18, 79,156,130, 64,242,116,127,141,191,184,105,213,248,198,125,222,166, 88, 61,147,160, 98,121,133,238,143, + 35,254,195,214,237, 25,219, 17, 0, 21,236,218,129, 3,168,197, 38,100,190, 53,225,211,209, 15,253, 27,221, 45,178, 66,245,122, + 61, 10, 10,138,138, 7,185, 92,142,213,171, 87,135,117,239,222,125, 23, 33,164,149, 39,177,229,142,211,223,223, 63, 94, 34,145, +224,244,233,211,248,226,139, 47,240,199, 31,127, 32, 45, 45, 45, 39, 38, 38, 38,176, 77,155, 54,220,107,175,189,134,122,245,234, +225,187,239,190, 83,122,227,164,148,226,250,165,221,184,126,121, 15, 4,129, 58, 89,197,221,255,167, 62,198, 93,171,213, 26,142, + 31, 63,238,247,245,215, 95, 35, 34, 34, 2,137,137,137, 80,171,213, 80, 42,149,197, 42, 89,231,138,215, 91,222,212,235,245,134, +235,215,175,251,253,244,211, 79, 8, 13, 13, 69, 66, 66, 2,212,106, 53,228,114,185,163, 65,176,108,217, 50, 44,255,112, 16,174, + 95, 56,133, 94, 93, 59,122, 13,167, 90,173,254,223,146, 37, 75,138,153, 64, 34,131,131,193, 75, 57, 72,164, 4,193,237,159, 6, + 0,228,252,249,179,199,217, 33, 93, 56, 73, 65, 65,129,225,224,193,131,126, 71,142, 28,129, 32, 8, 72, 72, 72,128, 78,167, 67, + 64, 64,128, 35,254, 91,183,110, 69,207,158, 61,241,195, 15, 63,160,105,211,166, 94,227, 94, 88, 88,104, 56,117,234,148,223,143, + 63,254,136,144,144, 16,148, 43, 87,206, 17,119,113,147, 74,165,144, 72, 36, 72, 74, 74, 66, 94, 94, 30,252,252,252,188,126,163, +163, 71,143,250,253,248,227,143, 8, 14, 14, 70, 92, 92,156,195,226, 38,138,163,153, 11, 63, 44,198,161, 36,209,247,205, 89,218, +239,238,202,217,171, 87, 47, 84,172, 88, 17, 1, 1, 1,208,104, 52, 14,238,146, 56, 69, 45, 2,160, 77,215,174, 93,119,186,124, +194,112, 66,200, 6,167,231,119, 35,132,108,112,254,245,116,157,253,111,171, 9, 19, 38, 52,156, 49, 99,198,180,166, 77,155,254, +180,111,223,190,229,158,248, 60,241, 76,152, 48,161,230,140, 25, 51,166, 57, 95,239,230, 57,158, 45, 90, 93,187,118, 37,246, 72, +242, 0, 80,173, 90, 53,100,103,103, 67,161, 80,160, 81,163, 70,200,204,204,132,159,159, 31,100, 50, 25, 40,165, 24, 61,122,180, +100,236,216,177, 17, 28,199,193,106,181, 58, 10,126, 15,125,237, 2,199,113,104,214,172, 25,206,216,123,132, 58,119,235,134,184, +184, 56,136, 78, 30, 74,165, 18,163, 71,143, 38,111,190,249, 38, 47, 90, 51, 40,165,208,235,245,136,142,142, 86,149,208, 37,247, +218,154, 53,107, 2, 69,147,188,216,117, 38,145, 72,112,254,252,121,204,154, 53, 11, 67,134, 12,193,205,155, 55, 17, 19, 19,131, +183,222,122,203,111,198,140, 25,175, 1,152,236,173, 64,246,243,243,115,136, 44,181, 90,141,215, 94,123,141,111,222,188,121,132, +159,159, 31,252,253,253, 33,118, 3,218,108, 54, 84,168, 80,193,171, 52, 23, 4, 1,155, 55,111, 6,207,243, 94, 45, 90,246, 4, +232, 19,231,193,131, 7, 29, 34,205,185,149, 68, 8,193,153, 51,103, 28,162,206, 7, 78,202,113, 28, 52, 26, 13,162,162,162,160, + 82,169,160, 86,171,201, 79, 63,253,244, 94, 98, 98, 98,244,155,111,190,201,229,231,231,115,205,154, 53,195, 51,207, 60,195, 11, +130, 0,179,217,140,154, 53,107,122,181,188,237,220,185, 19, 95,124,241, 5, 94,122,233, 37,183, 22, 45,209, 89, 50, 32,224, 31, + 31, 11, 81,102, 16, 0,152,173, 22,232, 10,245,142,174, 93,155,205,134, 83, 59, 78, 84,190,122,226, 82,205, 13, 63,253, 32, 5, + 0,195,142,159,157,111,139,126,102,225,202, 42,109, 66,100, 7,119,100,155, 15,122,179, 20,142, 25, 51, 6, 19, 39, 78, 68,255, +254,253,177,117,235, 86,188,251,238,187,120,254,249,231,139, 89,180,124,129,197, 98,249,242,217,103,159,125,105,245,234,213, 85, +223,126,251,109, 78,180,104,169,213,106,209,199, 11, 70,163, 17,122,189, 30, 23, 46, 92, 16, 94,120,225,133,139, 38,147,233, 75, + 79,124, 86,162, 58,169, 86,232,126,171, 16,199, 85,212, 94,251,196,191,197, 19, 9,122,162,106,144,247,116,149, 14,180,203,208, +132, 96, 80, 10, 42, 0, 2, 5,140, 70, 45, 70,143,126, 85,242, 79,125, 39,103,145,101, 48, 24,112,252,248,113,180,109,219, 22, +183,110,221,194,185,115,231, 80,185,114,101, 44, 93,186, 52,124,224,192,129, 37,138, 45, 87,156, 58,117,106, 66,221,186,117,231, + 21, 22, 22,102, 23, 22, 22,206, 3,176,156, 82,154, 75, 8,169,126,229,202,149, 5,155, 55,111,110,249,193, 7, 31, 72, 92,124, +116, 36,158,204,163, 22,139, 21,122,189,177, 68,129, 37,238, 83, 42,248, 26,119, 90,181,106, 85,116,239,222, 29, 82,169,212,209, + 88,115,238, 54,115, 21, 92, 37,149, 31, 0, 4, 66, 8, 98, 98, 98,208,165, 75, 23,200,100,178, 98,156, 98,197,218,165, 75, 23, +140,153,252, 62,190, 28,211, 14, 95, 60, 91, 25, 29,166,166,149, 24, 78,157, 78, 87,184,125,251,118,213, 91, 47,189,132,186,149, + 42, 33, 44, 32, 0,229, 35,195,161, 82,200, 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,171, 86, 45,164,165, +165,225,218,181,107,184,118,237, 26, 56,142, 67,139, 22, 45, 28, 86,152,203,151, 47, 99,242,228,201, 48, 26,141, 62,199,189, 82, +165, 74,104,215,174, 29,228,114, 57,212,106,117,177, 46, 67,241,157, 22, 20, 20,160, 98,197,138, 88,183,110, 29,170, 84,169,226, +149,179, 90,181,106,104,221,186,117,177,247,169, 82,169, 28,245, 6, 0,220, 58, 88,232,120, 70,108,108,108,169, 56,183, 28,186, +137,175,183,110,135,209, 36, 32, 95,103, 41,118, 67,116, 88, 0,246,252,248,182, 79,113, 23, 57,191,250,234, 43,228,230,230, 58, +202, 32,209,104, 34, 26, 41,202,149, 43,135, 69,139,220, 91, 50,157,180, 8,241,240,253,186,249,216,160, 18,175, 19, 19,151, 98, +198,140, 25,211, 92,239,247,198,231,124,222,229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68, +204, 40,142,130,212,106,197,218,181,107, 17, 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 76, 70,145,139,208,166, 24, 25, +174, 3,232,154, 65, 29,126, 36, 54,155, 13,107,214,172,129,179,144,241,247,247, 47,177, 27, 73, 46,151,183,105,212,168, 17,103, + 52, 26,239, 18, 89, 51,102,204,192,192,129, 3, 81,165, 74, 21, 8,130,128,194,194, 66,180,109,219, 86, 58,127,254,252, 54,165, + 17, 90,106,117,145,223,191,201,100,194,142, 29, 59, 16, 28, 28,140,208,208, 80,132,132,132,192,223,223, 95, 28, 57, 73,189,137, + 13, 74, 41,122,245,234,229, 72,124,206, 86, 44, 87,209,181,111,223, 62,159,186,228, 40,165,120,226,137, 39,160,209,104,224,231, +231, 7, 63, 63, 63,108,222,188,217,113, 77,227,198,141, 33, 8, 2, 34, 34, 34,176,127,255,254, 18,187, 63, 41,165, 84, 38,147, + 57,174,151, 74,165,100,233,210,165, 19,146,146,146,162,223,120,227, 13, 78, 34,145,224,216,177, 99, 56,123,246, 44, 18, 18, 18, +124,246,217,202,205,205,189, 51, 97,194, 4,219,132, 9, 19, 0, 0, 53,107,214, 68,110,110,110,186,120, 62, 63, 63, 63,171, 83, +167, 78,197,252, 54, 50, 51, 51,179,254,245, 66, 75, 16, 96, 53, 91,161, 51, 24, 80, 88,160,115, 88,135,210, 83,210,130,222,126, +243,117,233,172,209,207, 1, 0,222,156,251, 25, 10, 22,255, 93,144,253,252,230,128,136,167, 63, 93, 49, 30, 64, 79, 47,149, 15, +140, 70, 35,226,227,227,113,232,208, 33, 20, 20, 20,160, 67,135, 14,197, 44,166,226, 59,245,102,162,167,148,154, 8, 33,205,187, +117,235,118,120,206,156, 57, 21,170, 87,175, 78,180, 90, 45,116, 58, 29,156,127, 79,157, 58, 69,151, 47, 95,126, 85,167,211, 53, +163,148,154, 60,241,109,190,253,205,149,206,177,207,175,254,227,152,164, 91, 68,197,139, 1,183,115, 42, 88,179,110, 43,180,249, +250, 11, 6, 27, 61, 11,106, 3,108, 16, 64,173, 2,108,246,110,175,127, 10, 42,149,106,193,158, 61,123, 66, 13, 6, 3,142, 30, + 61,138,193,131, 7,155, 50, 51, 51,229, 0,240,191,255,253,207,180,108,217, 50,121,197,138, 21,177,116,233,210,240,103,158,121, +102, 21,128, 90, 62, 22,244, 63, 0,248,193,245,120,104,104,232,252,155, 55,111,182,113,246,249, 17, 27,171, 0,220, 54, 42,169, + 0, 88, 44, 22,232,245, 70,228,229, 21,192,100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 65,237, +232, 66, 74, 41, 56, 66,114,143,156,186, 83,206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165, +248,225,135, 31,112,114,239,102,200, 37, 20, 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,187,134,142,213,188, 15,228, + 38,132,208,176,176, 48,116,109,218, 20,221,154, 54, 45, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124, + 75, 74,130, 24,206,200,200, 72, 28, 57,114, 4, 99,198,140,193,204,153, 51,161, 82,169, 28,163,159,207,159, 63,143,149, 43, 87, +162, 99,199,142,165,142,187,104,193, 27, 63,126, 60, 82, 82, 82, 48,119,238, 92, 52,104,208, 0, 82,169, 20,185,185,185,104,214, +172, 25,210,210,210,124,226,116,238,222,147,203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,174, 87, 52,214,239, 93, 14, 2, +130, 3, 63,190, 94,172, 46, 90,180, 98,119,169, 57, 39, 78,156, 88, 44,156,190, 88,179, 74,209, 48,218,224,139,216,114,186,238, +168,104,108, 29, 63,126,252, 59,132,144, 13,227,199,143,127,103,250,244,233,103,124,225,243,112,126,163,168, 11,157,142, 29,245, + 89,104, 81, 74,169, 92, 46,135, 32, 8,197,196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77, + 34,145, 96,255,254,253,216,191,127,127,177,227, 95,127,253,117,137, 21,185,213,106,173,238,239,239, 95,204,154, 37,147,201, 48, +126,252,120, 12, 30, 60,216, 33,178,100, 50, 25,190,255,254,123, 52,108,216, 16, 38,147,169,186, 23,127, 21, 93, 84, 84, 20, 39, + 22, 68, 26,141,134,140, 25, 51, 70, 98,181, 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,101,203, 22,159, 44, 90,190, +250, 40, 81, 74,113,226,196,137, 98,226, 77, 28, 53, 3, 0, 39, 78,156,112,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169, +136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18,137,196,241,189,157,125,246,188,197,253,246,237,219,109, 75, 58,159,158,158,254,216, + 78,227, 96,182, 88,160,215,153, 80, 80,168,199,164,233,223, 21, 29,156,132,131, 0, 14, 54,127,121, 12, 70,118,238,216,206,197, + 15,192,151,130,198, 81, 57,174, 89,179, 6, 82,169, 20,235,214,173, 67, 64, 64, 0,122,244,232,129,128,128, 0,188,253,246,219, +232,223,191,191,207, 22, 45,123, 90,202, 35,132, 52,127,237,181,215, 14,127,242,201, 39,229,203,149, 43, 7,147,201, 4,179,217, + 12,147,201,132, 43, 87,174, 96,249,242,229,183,116, 58, 93,115, 74,105,158, 55,190,205,183,191,185,178,118,215,155, 41, 29,250, + 63,163, 63,159,182, 9,169,169, 89,176, 90,111, 67,176, 89, 97,182, 22,141, 96,182, 89,173,176, 90,109,144,201, 36, 1,159,124, +244,250, 86, 1, 20, 28, 71, 76,125,250,244,121,234, 97,125,163,160,160,160,154, 25, 25, 25,184,116,233, 18,134, 12, 25,146,154, +149,149,117, 14, 64,123, 0,200,202,202,218, 51,120,240,224,234, 75,150, 44,137, 74, 76, 76,132,159,159, 95,128, 15,223,199, 15, +192, 72, 0,157,236,126, 32, 34,178, 1, 76, 9, 15, 15, 87, 28, 61,122,244, 46,235,255,174, 93,187, 0,224,160,123,147,129,221, +162,101, 48, 32, 35, 43, 7,195, 95,126,207, 97, 74, 0,104, 49,113, 65, 65, 49,226, 21, 40, 1, 32, 51,237, 10,158, 27, 62, 70, +225,173, 65,224,174, 34, 44,133,143,142,179,165,200,145, 70,253,252,252,138,186,223,214, 45,199,198, 79, 95, 6,108,102, 80,139, + 30, 48,235, 0,115, 33, 4,147, 14, 68,166, 2, 44,122,159,132,150,159,159, 31,252, 84, 42, 68, 4, 5, 21, 77, 2, 41,145, 64, + 42,229, 33, 88, 0, 98, 35, 14, 65, 42,216,124, 74,235, 52, 44, 44, 12,130, 32, 64,165, 82,225,250,245,235, 24, 57,114, 36,204, +102, 51,122,245,234, 5,147,201, 4,131,193, 0,189, 94,143,164,164, 36,232,116, 58,159,226, 46,150,243, 98,239,207,235,175,191, +142,134, 13, 27, 98,242,228,201, 24, 55,110, 28,146,146,146, 48, 98,196, 8, 44, 95,190, 28, 53,107,214, 44,145,215,249,125,138, +156,226,119,113,237,226, 3, 80,234,111,228,202, 89, 52, 62, 0,119,125,247, 87,159,109, 95,106,206, 25, 51,102, 32, 35, 35,227, + 46, 75,150,248, 63, 54, 54, 22, 11, 23, 46,188,215,174,127,209,122, 20,233,206, 32,230,198, 18,213, 8, 69,190, 83,198,233,211, +167,159,153, 62,125,122, 55, 66,200,134,233,211,167,119, 43,193,162,213,213,139,197,171, 43,138,124,178,124, 2,239,210, 55,218, +198,217, 82, 34, 86,164, 98,133,238, 92,200,171,213,106,172, 93,187, 22,226, 8, 16,231,107, 74, 18, 90,191,133,219, 77,199,118, + 75,150,243,126,247,238,221,145,152,152, 88,204,154,165, 82,169, 74, 76, 60,130, 32,224,198,141, 27, 56,115,230, 12,154, 52,105, +130,188,188, 60, 72, 57, 14,111,158, 58,133, 26,207, 62, 11,147,221, 66, 35,151,203,241,210, 75, 47,249,228,208,126,237,218,181, + 96,231,253,176,176,176,228,150, 45, 91,198, 30, 58,116,200,225, 32,111,239, 86,115, 8, 14, 95, 68, 12,165, 20,189,123,247, 46, +102,197,114, 22, 89,206,219,166, 77,155,124,234, 58,164,148,162,101,203,150, 14,107,150,191,191, 63,126,249,229, 23,199,183,106, +213,170, 85,145, 63, 67,100,164, 79,156, 98, 60,236, 14,240, 48, 24, 12, 66, 65, 65, 1,119,244,232, 81,200,229,114,135, 5, 79, +165, 82, 65,169, 84, 66,161, 80,220,211, 8,162,255, 2, 40, 21, 96,178, 88,160,215,235, 81, 88, 88, 52,179,200,149,211,107,138, + 11, 49, 99,254, 61,243,139, 86,171,130,130, 2,252,241,199, 31,248,249,231,159,209,160, 65,131,187,156,225,125,177,104, 57,165, +167, 12, 66, 72,139,177, 99,199, 30,152, 58,117,106, 76, 72, 72, 8,204,102, 51,110,222,188,137,111,191,253, 54, 69,167,211,181, +160,148,102,248,254, 18, 0,139,197, 10,131,206,136,188,252, 2,124,248,209,247, 30,147, 30, 0,100,167, 95, 64,247, 30,125,229, + 15,243, 59,165,164,164,188,209,162, 69,139,143, 10, 10, 10,114,117, 58, 93, 95, 0,179,156, 13,135, 89, 89, 89, 45,123,244,232, + 49, 39, 36, 36,164, 65,122,122,250, 59, 62, 80,142,191,126,253,250, 59,241,241,241,197, 14,218,173,143, 85,210,211,211, 7,181, +106,213,234,125, 0, 33, 78,167,253, 1,108, 1,176,208, 83, 90, 18,187, 14, 11, 11,245, 8, 8,138,198,237,107, 59,189, 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,247,179,120,106,228, 12,168,165, +192,180,231,154, 35, 41, 8,128, 42, 4,178, 86,111,131, 4,217,223,209,200, 95,125,226, 31,247,197, 23, 56,118,169,104,102,152, +184,240,112,140,237,223, 31,212, 2,236, 59,123, 22, 43,182,111, 71,255,182,109,161, 86, 42,125,110,176,136,141,240, 43, 87,174, + 96,223,190,125,168, 86,173, 26, 46, 95,190, 92,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106, +106, 42,186,117,235,230,104,232,239,220,185, 19, 99,199,142,197,176, 97,195,208,166, 77, 27,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,157, 58,213,237,128, 10, 95, 56,157,181, 72, 9, + 56,234, 98, 77,130,232, 47, 37, 10, 35,215,125, 0,193,226,177,241,227,199,191,227,235,125,206,251,162, 69,172, 52, 93,152, 14, +161,213,181,107, 87,226,174,178, 21,205,200,238,160,209,104, 48,106,212, 40, 76,156, 56, 17, 97, 97, 97, 94,125,107, 68, 37, 91, + 18,126,253,245,238,204,182,110,221, 58,111, 93,135,231, 3, 3, 3, 27,182,109,219, 22,121,121,121,184,117,235, 22, 52, 26, 13, +106,124,250, 41, 78,141, 28,137,186, 95,124, 1,174, 93, 59,199,100,171,167, 78,157,130, 74,165, 58, 95, 90, 11,130,191,191, 63, +130,131,131, 29,125,238,162,224,114,178,104, 81, 31, 18, 35,126,251,237, 55,183,173,198,123,241,209, 18, 11,129, 3, 7, 14, 20, +243,207,114, 22, 62, 7, 14, 28,112, 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,210,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172,198,255, +234,174, 67, 80, 88,205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,118,237, 90, 60,241,196, 19,119,137, 44,241, 93,223, + 67,139, 49,153, 16,210,102,222,188,121, 7,103,207,158, 29, 92, 88, 88,136,239,190,251, 46,175,176,176,176, 13,165, 52,185, 84, + 92, 2,133,197,108,134,206, 96,132,182,176,232, 29,252,117,102,205, 35, 38,136,233,114, 0,203, 93, 45,134, 78,231,255, 2,208, +173, 20,148, 79,196,199,199, 35, 53, 53,181,216,193, 27, 55,110,192,102,179, 25,237,243,100, 61,239,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,209, +163, 71,227,212,201,147,104, 31,147,143,164, 40,127,208,252,219,144,181,251, 0, 39, 50, 84,152, 53,231,183, 82,115,175,116, 26, +236, 51,107,229, 74,183,231,254,234,217,179, 84,113,191,120,241, 34, 84, 42, 21,108, 54,219, 93,245, 77,105,227,239, 44, 96,230, +204,153,131,177, 99,199,226,251,239,191,199,169, 83,167, 80,183,110, 93,116,232,208, 1,233,233,233, 56,121,242, 36,140, 70,163, +207,225,116,246,155,187,120,245, 44,182,237,251, 29, 55,146,175, 33, 37,245,214, 61,127,119,103, 78, 87,161,181,118,219,113,244, +238, 88,255,158, 56, 63,252,240, 67,164,167,167, 23,179,100, 57, 15, 32,243,100,209,114,213, 34, 46,200,116,241,133, 18,247, 77, + 46,162,199,117,223,245,122, 0, 72, 7, 32,241,114,159,235,126,230,244,233,211,119,136,150, 48, 59,175,196,155,127,150,219,174, + 67, 81, 20,137, 25,197,213, 82, 37,254,215,104, 52,240,247,247,135,191,191, 63, 2, 2, 2,188, 90,138, 68,161,213,242,106, 65, + 49, 95, 47,209,178, 5, 0,195,134, 13,187,203,162,229, 60,177,167, 59, 24,141,198,157, 59,119,238,172,215,189,123,119,201,249, +243,231, 33,145, 72, 32, 8, 2, 76, 77,155,162,238, 23, 95,224,244,235,175,163,245,245,235, 48,152,205, 80, 42,149,216,188,121, +179, 89,167,211,237, 44,109,185,225, 44,180, 52, 26, 13, 2, 3, 3, 29, 66,195, 23,149, 46,102,222,146,252, 31,196,205,121, 48, +128, 47,153, 90,172, 80,157,253,114, 8, 33,208,235,245, 14,167, 78, 95,172,142,206, 93,135,206, 25,144,227, 56, 4, 5, 5, 57, + 10, 15,209,162,229,171, 53,207,219,132,164,106,181, 58,224,194,133, 11, 21,197,233, 39, 50, 51, 51,209,174, 93,187, 75,255,122, +147,150, 0,152,173, 54, 20,234, 13, 40,212,235,202,140, 86, 76,107, 63,252,240, 3,174, 92,185, 2,179,217,140,233,211,167,223, + 37,176, 74,227, 12,239, 38, 93, 93,169, 95,191,190,240,228,147, 79,226,192,129, 3, 80, 40, 20, 22, 74,105,169,231,191, 18,168, + 0,179,213, 10,131, 94,143, 66,173,246,191, 98,204,116,168,234,115,231,206,193,100, 50, 97,242,228,201,182,195,135, 15,239, 0, +240,178,253, 27,114, 0, 6,181,110,221,122, 74,215,174, 93,131, 8, 33,175, 82, 74,191, 47, 41,159, 91,172,118,209, 94,134,239, + 81, 76, 75,158,202,164,123,153,102,197,185, 98, 21, 4, 1, 47,190,240, 2, 58,196,228,227,233, 6,225,208,222,185, 4,117, 96, + 56, 72, 80, 2,102,205,249, 13,103,174,250,236,138, 73, 1,224,201,214, 61, 81,167,218,221,211,131,181,104, 95,212, 38,219,243, +199, 33,164,101,166,148, 58,238, 90,173,214,163,229,202, 87,139,150,200, 41, 78,179, 34,149, 74, 81,175, 94, 61, 84,174, 92, 25, + 59,118,236, 64,253,250,245,113,249,242,101, 92,190,124, 25,215,175, 95,199,169, 83,167,144,147,147, 83,234,111,244,203,150, 21, +200, 41,200,134, 92, 38, 71,118,110, 38,110,220,190,134,200,208,168,251,254,238, 34,170,118,253, 16, 0, 16, 19, 30, 88, 42,161, +229,204,249,241,199, 31,223, 37,222,203, 96,202,158, 67, 94,246, 75,123,255, 67, 3,239,193, 74,164, 15, 9, 9, 81, 57,247,175, +114, 28,135,192,192, 64, 50,115,230, 76, 9,199,113,240,247,247, 71, 96, 96, 32, 68,115,161, 55,200,229,114,125, 66, 66,130, 74, + 76,136, 98, 70, 12, 8, 8,144,204,156, 57,147,124,253,245,215, 30,173, 92, 94,124,180,102, 15, 30, 60,248,249,228,228,228,224, +136,136, 8,220,185,115, 7,114,185,188, 40,115,180,109,139,150, 87,175,194, 92,228,115,132,139, 23, 47,226,203, 47,191,212, 26, +141,198,217,165,125, 81,126,126,126, 8, 13, 13,117,116, 25,138, 22, 29, 39,209,232,147, 11,102, 73, 38,122,177, 5,120, 47, 93, + 72,174, 98,235,229,151, 95, 46, 38,186,124,133, 76, 38,179,138, 51,191,115, 28, 7,179,217,140,250,245,235, 35, 61, 61,221,145, +105,156, 45,121,190, 8, 45,111, 19,146,242, 60, 15,147,201,132, 86,173, 90,129, 16,130,207, 62,251,236,241,232,142, 20, 4,226, +231, 23,138,152,152, 42, 8,143, 48, 64, 16,202,110, 85, 25,171,213,138, 17, 35, 70, 20,179, 96,137, 35, 27,197,174,127, 74, 41, + 44, 22,203, 61, 79,254, 42,230,235,251,153, 63,142, 2,142, 46, 47,173,214,240,175,251,132, 17, 17, 17, 77, 8, 33,235, 92, 14, +103, 3,152,226,110, 6,119, 59, 28, 31,250,214,173, 91,232,220,185, 51,126,255,253,119,201,207, 63,255,220,126,253,250,245,103, + 43, 86,172,120,171, 95,191,126,229, 94,122,233, 37, 69,171, 86,173,144,153,153,137, 6, 13, 26, 76, 2, 80,130,208,178,191, 71, +131, 17, 90,109,217, 91, 71, 75,106,240,221,143,128,155, 56,241,125,116,136,206, 69,175,186,129, 88,178, 97, 47, 6,213, 83, 1, + 38, 69,169,249,196,176,132,196, 36, 34,161,102,147,187,206, 43, 2,138,186,236, 18,106, 54, 1,119,235,114,169,227,238, 28,102, +215,242,242, 94, 44,122,206,239,115,248,240,225,120,251,237,183,209,169, 83, 39, 92,190,124, 25,187,118,237,194,229,203,151, 49, +102,204, 24,212,172, 89, 19,117,235,214, 45, 21,231,250,109,171,145, 95,152, 7,142,112,200,206,203,130,193,168,199,184, 17, 19, +239,251,187,139,184,182,109, 58, 0, 96,205,214, 99,247,204,249,238,187,239, 34, 53, 53,181,152, 37,235,126,252,178,254,237,112, + 43,180,178,178,178,220,246, 3,134,135,135,167,117,236,216, 49,226,206,157, 59,240,243,243,243, 42,178, 8, 33, 29,196,185, 54, + 82, 83, 83,221,114,250,251,251,155, 59,118,236, 40,141,142,142, 46, 54,218, 80,163,209,220,149,201, 92, 57,237,149, 64, 1, 33, +228,197,230,205,155, 47,217,180,105,147,186,114,229,202,200,207,207, 7,165, 20,223,127,255, 61, 70,143, 30, 13,165, 82,137,139, + 23, 47,162, 71,143, 30, 58,157, 78,247,162,243, 28, 90,238, 56, 61,181,208,196, 89,241,221,136,172, 18,227,238,156, 89,231,205, +155,135,105,211,166,225,157,119, 74,118,245, 88,188,120, 49,224,210,205,231,142,147, 82,138, 89,179,102,149, 25,103, 86, 86,214, +247, 46,214,168,207,158,126,250,105,254,214,173, 91,197,196,149,243,230,166, 96, 42,198,233,109, 66, 82,137, 68,130,200,200, 72, + 76,157, 58, 21,161,161,161,136,138,138,186,203, 18,227,237, 27,221, 99,101,240, 64, 57,109, 84, 56,250,201,140,247, 91,124,183, +108,189, 84, 33, 7,246,239, 90,131,252,156,226,221, 73, 70,243,223, 67,169,229,245,219,195,116,236, 15,159,194,105, 52, 26,241, +241,199, 31,227,195, 15, 63,196,135, 31,126,232,203,119,191,175,184,251, 34,182,220,114, 10,148,168, 53,193, 80,106, 98, 80,163, +102, 48, 4,106,125,164,190,145, 7, 28, 62,116,232, 80,143,208,208, 80, 36, 39, 39,135, 75,165,210, 30,197,204, 85,122, 61, 18, + 18, 18,170, 0,104,230,141,115,204,152, 49,198,247,222,123, 79, 49, 96,192, 0, 60,253,244,211, 24, 48, 96,128, 66, 38,147, 85, +162,148,194,108, 54, 35, 57, 57, 25,127,252,241, 7, 50, 50, 50,206,151, 20, 78,129, 82,162, 82, 7, 65,169,137, 70,141, 90, 65, + 16, 4,107,153,196, 93,172, 4, 93,173, 89,165,156,144,218,109, 89, 7, 0,135,255, 88,135,137,175,215,194,247, 27, 15, 98,254, + 33,160, 78, 80, 58,106,132,103, 64,200, 56,143,183, 6, 53,196,172, 31,143, 0, 0,118,237,244,250,141, 74,156, 31,217,160, 55, +223, 87,220,157, 45, 87,206,207,241,230,163,229,142, 83,108, 36, 22, 20, 20, 32, 55, 55, 23, 75,150, 44,193,115,207, 61,135,244, +244,116, 92,191,126, 29,151, 46, 93,194, 79, 63,253,228, 24,205, 94,218,111,244,230, 11,239,226,189, 89,111,128,130,162,106,197, + 26, 24, 63,242, 67, 52,170,211,244,190,191,187, 43,188, 89,179, 74,226,156, 59,119,238, 61,165,165,255,148,208, 42,169, 85,193, +113, 28,194,194,194, 28,137,196, 57, 1,222, 75,203, 87, 34,145,192,106,181, 58,124,127,196, 13, 0,186,119,239,142, 95,127,253, +213,151,145, 20,155, 8, 33,255,171, 94,189,250,183,147, 38, 77,242,107,221,186, 53, 31, 19, 19,131, 70,141, 26,225,226,197,139, +216,184,113,163,101,225,194,133, 90,157, 78, 55,140, 82,186,245, 94,202, 39,113, 73, 27,231,173, 52,173, 30,179,217,124,235,242, +229,203,209,179,102,205,146,112, 28,135,185,115,231, 58, 50,165, 56,225,171, 51,118,237,218,101, 21, 4,161,196,174, 26,139,197, +114,235,242,229,203,209,159,126,250,169,132, 16,226,224,228, 56, 14,206, 11, 56,151,134,211,157,200, 20, 7, 70,184,219,220,133, +221,221, 55, 46,105, 66, 82,158,231,113,241,226, 69, 76,156, 56, 17,132, 16,172, 89,179,230,177,200, 92,167,206,103,126, 93,183, + 70, 68,112,247,167, 90,212, 6, 33, 48,155,238,158, 13,193, 47,167,208, 33,178,158,254,116, 5,126,126,179,191, 47,162,231,202, +158, 61,123, 66, 62,254,248, 99, 94, 34,145, 96,206,156, 57,197, 38, 13,118,253,238,187,119,239,182,222, 75,183,159,152,159,205, +102, 51,244,250,123,179,162, 80, 74,247, 77,255,232,189,142, 75,127,248, 77, 74,136, 9,251,119,174, 65, 94,174,123,119, 6,185, +148,199,215, 75,214, 90,101, 82,201,173,127,248,211,125,222,171, 87,175, 1, 11, 22, 44,168,225,238,228,173, 91,183, 32, 8, 66, + 73,206, 53,215, 13, 6, 3,110,223,190, 13,157, 78,183,122,194,132, 9,230,223,126,251,237,249,103,158,121, 6,117,235,214, 69, +116,116, 52,238,220,185,131, 43, 87,174, 96,201,146, 37,116,239,222,189,171, 1,140,242,242, 30,215,205,248,232,189, 33, 75,126, +252, 77,206, 17, 51,246,239, 90,131, 60, 23,209,126,183,117, 90,138,111,190, 95,107,150,201,164, 23,188,149,235,206,214,172,178, +172, 24,123, 12, 30,137,167,231,205, 71,133, 70,157, 49, 99,102, 7,124,243, 81, 95,204,126, 82, 6,243,170, 65,168,211,103, 41, +150, 79,238, 2, 0,136,249,198, 71,107, 9, 47,195, 77, 55, 22,171,220, 60,165, 93,220,148,206,106, 42,198,189,164, 50,188,180, + 22, 45,142,227,144,152,152,136, 10, 21, 42,160,121,243,230,168, 95,191, 62,218,182,109,139,147, 39, 79,226,228,201,147, 24, 51, +102,140, 71,145,229,203, 55,106,211,172, 35, 14,182,188,112,223,223,198,245,187,151, 5,124, 73, 75, 35, 71,142, 4,128,255,148, +117,139,191,151,151, 40, 38,204,251, 93,146, 70,228, 52,153, 76,142, 46, 57,231,121,153, 68,231,120, 31, 71,244,109, 37,132,212, +124,255,253,247, 95, 87, 42,149,109,117, 58, 93, 21,187, 69,230,162,209,104,220,174,215,235,231, 80, 74,115,239, 39,172,206,211, + 57,184, 11, 66, 73,247,230,228,228,116,238,220,185,243, 86,158,231, 19, 93, 23,252,117,151,145, 5, 65,184,158,150,150, 86,226, + 16,247,172,172,172,206,157, 58,117,114,203,233,174,128,240,133,211,221,247, 17, 4,193,163,200,242,165, 32,242, 54, 33, 41,207, +243,208,104, 52,248,229,151, 95, 16, 22, 22,246, 88,101,176, 19,103,211, 63, 46,233,124,155, 48,197, 78, 0,225, 79,127,186,226, +230,142, 76, 83,124,155, 48,249,141,159,223,236, 95,190,164,123, 50, 51, 51, 59, 61,247,220,115,191,243, 60,159,232,250,254,221, +125, 11,171,213,122, 45, 53, 53,181,212,211, 37, 80, 74,113,225,194, 5, 97,248,240,225,153, 25, 25, 25,125,239, 37,254,227, 39, +206,159, 61,109,210,232,208, 39, 59, 54,105, 4, 14, 48,121,118,254,165, 4,160,188, 84,114,107,236, 59,115, 95,248, 39,191, 25, +165, 52,159, 16,210,188,119,239,222,163, 80, 52, 52,252, 46, 33, 5, 96, 94, 9, 20,243,202,149, 43, 87, 75, 34,145, 40, 0, 76, +164,148,222, 32,132,124,190,119,239,222, 78, 0,158,144, 72, 36,209, 54,155,237, 54,138,214,124, 92, 65, 41, 61,225, 61, 29,165, +189, 84,183,122,120,220,147, 29,158,232, 12, 66,168,201,100,244,210, 64, 2, 5,165, 84, 38,147, 94, 56,116, 34,165,142, 55,107, +189,125, 5,142, 50,239,178, 31, 53,106, 20, 70,141, 26,229, 72, 79,159,125,214, 18,171, 79,239, 65,159, 58,201, 48,126,217, 2, + 36,160,188,207, 13, 62, 0,120,247,253,225,101,105,217, 44, 54, 72,171,172,124,180, 36, 18, 9, 50, 51, 51,113,241,226, 69,164, +165,165, 65,167,211,225,220,185,115, 48,155,205,200,201,201, 65,173, 90,181,238, 57,156,101,245,141,254, 73,206,255, 98,247, 97, +169,132,150,213,106, 77,246,182,202,186,197, 98, 41,213,168, 36,169, 84,106,168, 92,185, 50,113, 55, 58, 65,252,175,209,104,244, + 62, 22,144,185, 0, 38, 2,152,104, 95,207, 10,217,217,217,247,173, 6,109, 54, 91, 74,124,124,188,196,147,128,177,191,155, 52, + 47, 97,211, 2,104, 90,198, 21, 66,153,115,186,249, 62,218,106,213,170, 57,124,189, 92,231, 68,177, 47,182, 90,162,119,174,183, + 9, 73,181, 90,237,157,206,157, 59,219,156,207, 59, 79,104,250, 88,131,208, 27, 93, 6, 60, 31,191, 35,211, 20, 15, 0,162,216, +130,103,255, 31, 80, 74,245, 0, 90, 63,232,160, 93,189,122,213,244,196, 19, 79,252, 80, 80, 80, 48,146, 82,122,207,222,252,239, +124,240,217, 59,255,182,207, 66, 41,205, 7, 48,237, 30,239,189, 1,160,157,203,177, 19, 0, 78,220, 79,152, 78,156,203, 40,243, +185,197,172, 86,107,114,133, 10, 21, 74,101,185,241, 86,198, 91, 44,150, 18,235,137, 51, 8,196, 59, 7,128,162,101,226,178,124, +226, 52, 24, 12,217, 77,155, 54,149,150, 50,110,233,190,198, 61, 58, 58, 26, 49, 49, 49,142, 95, 17,174,199,189,133,211,106,181, + 38,199,197,197, 33, 44, 44,204,227,140,239,174, 62, 89,190,112,150,245, 55, 42,137, 51, 38,102,105,153,115,150,149, 94,248, 79, + 8, 45,113, 13,195,178, 68, 90, 90,218, 3, 89,115,133,150,133,185,237,111,203, 81, 35,252, 71,145,149,149, 21,122,191, 28,222, + 38, 36, 77, 75, 75,107,251, 95,125,191, 59, 50, 76, 67,239, 58,102, 23, 93,255, 52,180, 90,109,121,111,211, 14,120, 66,159, 62, +125,108, 96,120,228,145,153,153, 89,230,101,250,131,168, 39,178,179,179,107,255, 87,227,254, 32,194,249,111,225,124, 92,192,188, +212, 24, 24, 24, 60, 53, 86,152, 88, 98, 96, 96, 96,184, 79, 16, 0, 29, 60, 20,178, 62,143,244, 33,132,116,184,135, 66,124, 27, +227,100,156,140,147,113, 50, 78,198,201, 56,255, 91,156,222,184,203,122,164,241,163,208,106,125, 96, 27,128, 14,140,147,113, 50, + 78,198,201, 56, 25, 39,227,100,156,255,213,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 60, 32, 48,161,197,192,192,192,192,192, +192,192,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, + 48, 48, 60, 56,144, 50,156,215,147,129,129,129,129,129,129,129,129,193, 9, 60, 0,108,220,184,209,161,182,186,118,237, 74,216, +107, 97, 96, 96, 96, 96, 96, 96,120,152,120, 92,181, 8,207, 4, 22, 3, 3, 3, 3, 3, 3,195,163,128,199, 81,139,112,238,148, + 36, 3, 3, 3, 3, 3, 3, 3,195,195,198,227,168, 69,184,199, 89, 69, 50, 48, 48, 48, 48, 48, 48,252,123,240,216, 91,180,152, + 85,139,129,129,129,129,129,129,225,159,194,191, 85,139, 16, 66, 40, 33,132, 58,239, 59,254,179, 81,135, 12, 12, 12, 12, 12, 12, + 12, 12,247, 38,176, 40,165,196,211, 47,192,230,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 39,136, 98,202,121,223,217,154,245,192, +133, 22, 33,164, 3,227,100,156,140,147,113, 50, 78,198,201, 56, 25,231,127, 69,112, 81, 74,137,243, 62,207, 94, 15, 3, 3, 3, + 3, 3, 3, 3,195,125,139, 79,234, 78,120, 49,161,197,192,192,192,192,192,192,192,112,159, 34,203, 89, 92, 49, 31, 45, 6, 6, + 6, 6, 6, 6, 6,134,135, 0,102,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 15,184, 58,193,179,174, 67, 6, 6, 6, 6, 6, 6, + 6,134, 50, 22, 91,238,142, 19, 0, 29, 60,220,176,205, 87,242,123, 25,125,224,141,159,113, 50, 78,198,201, 56, 25, 39,227,100, +156,143, 31,167, 55,238,210,232,143, 71, 5,132,144,214, 0,118, 0,104, 99,255,253, 91,120, 81, 74, 31,216, 6,160, 3,227,100, +156,140,147,113, 50, 78,198,201, 56, 25,231,227,188, 21,201,169,191,127,157, 55,230, 12,207,224, 77,165,243,132, 16,254, 94,207, + 63, 44, 78, 6, 6, 6, 6, 6,134,127,184,190,164,226,175,179,191, 22,239,225,226, 74, 0,222, 1, 16,232,116,248, 16,165,116, +186,203,117, 63, 2, 80, 59, 29,210, 2,152, 76, 41,189,236, 67,152,100,118,126,133,125, 19, 0, 24, 0, 24, 1, 20, 0,176,176, +207,246,143, 39,154,166, 0,186,217,255,111,160,148,238, 47,205,249,135,197,249,176, 16, 19, 19,163, 10, 14, 14,238,116,236,216, + 49,249,185,115,231,176,123,247,110,250,245,215, 95,155,115,114,114,182,164,164,164,232, 89,138,121, 44,210,124,103, 0,227,237, +187, 51, 40,165,155,239,147,143,168,213,234, 49, 26,141,166,139, 66,161,136,177, 90,173, 68,167,211,165,104,181,218,173, 86,171, +245, 83, 74,169,112, 15,156, 61, 67, 66, 66,158,175, 90,181,106,165,235,215,175,223, 78, 73, 73,249, 17,192, 42, 0,125, 99, 98, + 98, 6, 37, 36, 36,196, 94,184,112,225,114,118,118,246, 55,148,210,117,255, 84, 56, 25, 24,254, 75,240,228,159,229, 81,104, 1, +152, 72, 41, 29,228,146, 17,239,186,168, 93,187,118, 61,182,108,217,162, 22, 4, 1,226,166, 82,169,172, 0,134,122, 9, 83,232, +190,125,251,226, 71,142, 28,249,116, 74, 74, 74,195,130,130,130,198, 0,160, 86,171, 15, 70, 68, 68, 28,158, 55,111,222, 79,157, + 58,117, 74,182, 11,174, 82, 89, 74,164, 82,233,115,193,193,193, 93,172, 86,107,125, 74, 41,164, 82,233,177,156,156,156,205, 22, +139,229, 27, 74,105,169,197, 27, 33, 68,206,243,252, 40,133, 66,209,217,106,181,214, 6, 0,158,231, 79, 25,141,198,205, 86,171, +245,115, 74,169,233, 30, 56,149,114,185,124, 84, 64, 64, 64, 71,147,201, 84, 27, 0,228,114,249,169,252,252,252,173, 38,147,233, +115, 74,169,225, 17,168,112,120, 0,221, 40,165, 82, 0,144, 72, 36, 61,155, 54,109, 26, 79, 8, 17,196,249, 65, 56,142,171,103, +179,217, 56,251,245,221, 8, 33,135, 41,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,148,134,179, +172, 16, 30, 30, 62, 77, 16,132,152,146,174, 9, 12, 12,108,120,236,216,177,170, 43, 87,174,180,125,249,229,151,185,195,134, 13, +243, 27, 57,114, 36,255,217,103,159,125, 14,224, 85,215,235,195,194,194,102,115, 28, 23,230,203,243, 5, 65,200,204,204,204,124, +131, 21, 87,255, 56,198, 47,220, 86,208,138, 82, 96, 84, 71,127, 14,192,125, 9,173,216,216,216, 37, 67,134, 12, 25, 80,187,118, +109,158, 82, 10,139,197, 2,163,209, 88,117,255,254,253,109,214,172, 89,211, 16, 64,223, 82,230,203, 23,222,126,251,237,169, 83, +166, 76, 9,147, 74,165,196, 98,177, 84, 92,185,114,101,253,151, 94,122,233,181,197,139, 23,151,235,215,175,159,191,120,124,226, +196,137,141, 8, 33, 73,148,210, 79, 31,118, 56, 25, 24,254,131,141,180,214, 40,238,163, 53,137, 82,250, 97, 73, 66, 75, 99,191, + 49, 13,192, 33,209,162,229,122,209,159,127,254,185,158,231,121,209,162,213, 88,171,213, 70,186, 88,193,220, 33, 97,240,224,193, + 77, 87,175, 94, 61,173, 95,191,126,169,106,181,186,242, 51,207, 60, 83, 64, 8,145,172, 92,185,178, 94,133, 10, 21, 84,221,187, +119, 31,220,174, 93,187, 55,127,255,253,247,221, 0, 50,124,140,100,141,144,144,144,181, 31,127,252,113,124,231,206,157,101, 97, + 97, 97,160,148, 34, 37, 37, 37,118,227,198,141, 79, 78,154, 52,233, 77, 66, 72, 47, 74,233,217, 82,188,184, 70, 42,149,106,245, +164, 73,147,162,159,124,242, 73, 62, 42, 42, 10, 6,131, 1,231,206,157,235,176,121,243,230, 86,139, 23, 47,126,149, 16,210,135, + 82,122,184, 20,156,141, 3, 3, 3,215,124,247,246,219,145, 77,158,123,142, 15, 9, 9, 1,165, 20, 25, 25, 25, 29,246, 44, 93, +218,102,196,199, 31,191, 74, 8,233, 77, 41, 61,244, 40, 37, 34,185, 92,206, 45, 91,182,172,174, 92, 46, 7, 0,152, 76, 38,212, +172, 89,147,220, 15,167, 84, 42,229, 62,253,244,211,250, 60,207,195,108, 54, 11, 5, 5, 5,244,153,103,158,225,254,161, 76, 18, +151,146,146, 18, 40,147,201,220,158,183,217,108,104,213,170, 85,162, 76, 38,195,167,159,126,106,201,204,204,172,183, 96,193,130, + 99,203,151, 47, 15,251,252,243,207,251,184, 19, 90, 28,199,133, 37, 39, 39,187,229,180,217,108, 48,155,205,176, 90,173, 48,153, + 76,168, 94,189, 58, 43,169, 30, 13,196, 3,192,111, 39, 13, 0, 16,114,191,100, 26,141,166,218,192,129, 3,249,140,140, 12, 72, +165, 82,152,205,102,164,166,166,162,102,205,154,146, 31,126,248,161, 74,105,249, 42, 86,172, 56,108,198,140, 25,225,191,253,246, +155,121,217,178,101,166,142, 29, 59, 74,135, 13, 27, 22,208,170, 85,171,234,113,113,113,220,183,223,126,107,220,186,117,171,101, +240,224,193,242,233,211,167,135,111,220,184,177, 59,128, 79, 31,118, 56, 25, 24,254,131,216,225,186,168, 52,128, 18,133,150,136, + 67,148,210,158, 0, 32,147,201,234,149, 43, 87,110,137,213,106,141,178, 91,117, 82,165, 82,233,167,102,179,249,184,189,162, 90, + 39, 8, 66, 15,111,150,172,193,131, 7, 55,253,253,247,223,103,237,223,191, 63, 47, 43, 43, 43,106,253,250,245,134, 55,223,124, +243, 58, 0, 92,189,122, 53,169,123,247,238,177,163, 71,143, 78,238,212,169,211,188,182,109,219,190,178,125,251,246,173, 40,234, +146, 44, 81,100,213,172, 89,115,223,174, 93,187,252,131,130,130,138,171,186,132, 4,188,242,202, 43,178, 30, 61,122, 84,104,223, +190,253, 94, 66, 72, 75, 74,233,105, 95, 4, 81,165, 74,149,182,253,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116, + 58, 29, 2, 2, 2,208,175, 95, 63, 89,235, 22,205,203,141, 30,243,234, 54, 66, 72, 7, 95,196, 22, 33,164,113,243, 26, 53,182, + 45,159, 62,221,207,114,243, 38, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,152,152,200, 31, 89,186, 52,118,208,184,113, 34, +231, 67, 23, 91,132, 16,133,221, 12,106, 36,132,108,144, 72, 36, 61,229,114, 57,215,179,103, 79,108,219,182,141, 24, 12, 6, 30, + 0,148, 74,165,181,103,207,158, 80,169, 84, 48,153, 76, 2,128, 13,158, 44, 79,238, 56,165, 82, 41,215,182,109, 91,221,161, 67, +135,178, 69, 78,181, 90,109,105,219,182,109,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,114,229, 74,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, 94,188, 88,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191, 82,141, 26, 53,146, 1, +172,203,206,206,254, 52, 53, 53,245, 6, 43,183,254, 17,220,220,112,220, 80, 30,128, 9,192,181, 50,224, 19, 0, 96,247,238,221, + 72, 75, 75, 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,114,229,202,194, 90,181,106,145, 51,103,206,108, 6,240, +217,202,149, 43,135,102,103,103,143, 31, 59,118,108,200, 39,159,124,146, 61,110,220,184, 25, 0,190, 95,185,114,229,203,213,170, + 85,235,114,254,252,249,197,255, 68, 56, 25, 24, 30, 0, 26, 1, 8,183,255,207,180,151,187,161, 78,251, 39,237,249, 86,188,206, + 4, 64,238,230, 87,132,184,159, 1,224,176,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,141, 27, 55, 82,113,115,119, +115,100,100,228,152,118,237,218,205, 58,122,244,104,245, 59,119,238, 4,223,185,115, 39,248,232,209,163,213,219,181,107, 55, 43, + 50, 50,114,140,120,157,221,227, 30, 78,251,206, 67, 52,101,251,246,237,139, 95,187,118,237,140,109,219,182,229,213,171, 87,207, +244,231,159,127, 90, 59,117,234,148, 14,192, 10,192,218,169, 83,167,244,237,219,183,219,154, 52,105,162,250,253,247,223,111,237, +221,187,119,246,234,213,171, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,101,231,206,157,119,137, 44,103,148, 43, 87, 14, 27, + 54,108, 8, 8, 10, 10, 90, 71, 8,145,149, 16, 78, 16, 66,148, 74,165,114,205,246,237,219,253,252,253,253,145,158,158, 14,169, + 84,138,136,136, 8,228,229,229, 33,245,206, 29,220,184,116, 9,156,201,132, 57, 31, 77,241, 87,169, 84,171, 9, 33,114,111,156, +129,129,129,107,150, 79,155,230,151,181,109, 27, 78, 76,157, 10,179,217,236,232,114, 53,155,205,216, 59,114, 36, 50,254,248, 3, +223, 78,156,232, 23, 24, 24,184,134, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 9, 32, 27, 64, 54, 33,100, 36,165,116,127,205, +154, 53,143,158, 59,119, 14, 45, 91,182,196,170, 85,171,234,140, 29, 59,118,228,216,177, 99, 71,174, 90,181,170, 78,203,150, 45, +113,238,220, 57,212,172, 89,243,168,179, 47,149, 47,156, 59,119,238, 68,187,118,237,114, 86,173, 90,149, 52,113,226,196,105, 19, + 39, 78,156,182, 98,197,138, 10,237,218,181,203,153, 59,119,174,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49, + 49, 49,233,107,215,174, 69,191,126,253, 56,185, 92,126,167,127,255,254,138, 61,123,246, 80, 0, 27, 74, 19, 78,131,193, 0,189, + 94, 15,173, 86,139,171, 87,175,170, 62,254,248,227, 22, 31,126,248, 97,197,109,219,182,197,190,243,206, 59, 35,194,195,195,143, + 69, 69, 69,197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,227,126, 56,219,183,111, 95,171, 98,197,138,145, 43,207, 4, + 35, 71, 86, 21,130, 44, 8,130, 44, 8,182,208, 70,184, 34,127, 10,229,203,151,143,244,247,247,111, 90, 26, 78, 74,233,178,211, +167, 79, 63, 65, 41,253,144, 82,154, 69, 41,157, 53,110,220,184, 73,132,144,221,227,198,141,155, 66, 41,157,101, 63, 62,245,220, +185,115, 77, 40,165,203,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 3, 33,100,195,132, 9, 19,218, 2, 8,117, +217,111,230,124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,171,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,215,174, 93, + 73,215,174, 93,197, 19,135, 8, 33,235, 1, 28,146,201,100,245,234,214,173,219,115,211,166, 77,254,225,225,127, 63, 63, 60, 60, + 28,171, 87,175,246,175, 81,163, 70, 79,153, 76, 86, 15,192,161,128,128,128,245,112,211,197,104, 71,208,200,145, 35,159,126,246, +217,103,243,235,213,171, 7, 0,185,103,207,158, 85, 55,105,210, 68,107,181, 90,137,213,106, 37, 77,154, 52,209,158, 61,123, 86, +109,177, 88, 10, 26, 53,106,164,105,223,190,253,245, 55,222,120, 99, 48, 0,101, 9,241, 27, 56,115,230,204,184,224,224,224,146, + 94, 0, 10, 10, 10, 16, 25, 25,137,145, 35, 71, 70, 73,165,210,231, 75,122, 97, 60,207,143,154, 57,115,102, 68, 80, 80, 16,114, +114,114, 16, 23, 23, 7,147,201,132,139, 23, 47,194,160, 45,132,165, 32, 31,150,252, 92,100,252,117, 25, 65, 82, 30,131,123,116, +139,228,121,126,148, 23,107,201,168,111,198,141,139, 52, 93,191,142,171,171, 86,193,102,189,219, 80, 99, 53,155,113,234,171,175, + 96, 72, 78,198,140,225,195, 35,229,114,249,168,135,108,201,250,132, 82,170,162,148,170, 8, 33,243,154, 53,107,246,131, 74,165, + 26, 57,125,250,244,206, 91,182,108,121,114,215,174, 93,109,172, 86,171,212,106,181, 74,119,239,222,221,210, 96, 48,240, 10,133, + 2, 60,207, 83, 95, 57,155, 54,109,186, 68,165, 82,141, 88,180,104, 81,231,237,219,183, 15, 62,114,228,200, 40,155,205, 38,183, +217,108,242, 35, 71,142,188,164,215,235,165,148, 82,155, 39,206,135, 13,169, 84, 10,153, 76, 6,149, 74,133, 22, 45, 90,252,245, +245,215, 95, 91,226,226,226,164,107,214,172, 9,142,137,137,209,124,246,217,103,185, 5, 5, 5, 51,125,229, 51,155,205, 48, 26, +141,208,235,245, 48, 24, 12,248,243,207, 63, 19, 71,143, 30,205, 27, 12, 6, 91,247,238,221,179, 45, 22,139,113,220,184,113, 1, + 33, 33, 33,111,178, 6,236, 63, 2, 43,128, 66,187,208, 50, 58,167,101, 66, 72,109,209, 58,235, 11,114,115,115, 23,127,243,205, + 55,113,156, 34, 8,123, 76, 93,240,147, 48, 9, 91, 2, 63, 67,122,252, 91,136,136,171,136, 1, 3, 6, 68, 80, 74, 63, 43,131, + 10,111, 1,165,180, 21,165,116,222,189,220,255,160,195, 73, 8,137,247,243,243, 91, 21, 16, 16,176,199,207,207,111, 21, 33, 36, +254,126,227,220,169, 18,233,208,179,186, 36,185, 83, 69, 66,123, 86,151, 36,119,170, 84,250,185,158, 24, 30, 77,184,104, 17,103, +100, 80, 74,187, 81, 74,187,205,152, 49, 99,154, 83,250, 23,247, 85, 62,230,151,110,148,210,110, 46,105,116, 67, 25,212,161,212, +117,115,104, 10,103, 37, 41, 70,206,121,116, 97,185,114,229,150, 44, 89,178,196,223,149,244,206,157, 59,200,207,207,199,123,239, +189,231,255,236,179,207,190,122,235,214,173, 33, 94,194, 33, 79, 77, 77,173, 63,104,208, 32,165,217,108,206, 17, 4,129,203,207, +207,231, 3, 3, 3,109,226, 5,129,129,129,182,188,188, 60,169, 86,171,149,216,108, 54,227,179,207, 62, 43, 31, 62,124,120, 67, +103,139,214, 93, 18, 55, 60,188, 99,151, 46, 93,228,158,206, 91, 44, 22,104,181, 90,104,181, 90,152,205,102,180,104,209, 66,241, +245,215, 95,119, 2,176,200,211, 61, 10,133,162, 99,199,142, 29,165,217,217,217, 8, 12, 12,196,141, 27, 55,112,237,218, 53, 24, + 11, 11, 97, 46,204,135,185,176, 0,214,130,124,208,252, 60,100, 93,190,128, 38,213,170,202,126, 84, 40, 58, 3,152,237,137, 51, + 32, 32,160, 99,147,161, 67,121,141, 70,131, 54,131,138,198, 25,252, 94,173, 26,168,205, 6,193,102,131,205,106, 69,231,139, 23, + 97,177, 88,192,113, 28, 26,101,103,243, 1, 75,151,118, 4, 48,235,159, 72,236, 10,133,130, 95,182,108,217, 64,185, 92, 14, 74, + 41, 49,153, 76,216,178,101,203,125,115, 46, 93,186,116,176,200,105, 54,155,105,173, 90,181,238,202, 80, 70,163,145, 62, 42,153, + 94, 46,151, 67,169, 84,194,108, 54, 35, 33, 33, 65, 63,104,208,160,125, 31,125,244, 81,121,142,227, 52, 50,153,108, 83, 86, 86, +214,180,148,148,148,171,190,242, 89, 44, 22,152, 76, 38,152, 76, 38,232,245,122,252,245,215, 95, 81,137,137,137,100,228,200,145, + 54,157, 78,151, 52,127,254,252, 43, 91,182,108, 81,207,156, 57,243, 25, 0,175,176, 98,247,225,193,110,149, 14, 44, 31,202,107, +165, 18, 20, 2,240,183,139,130,103, 8, 33, 77,170, 87,175, 30,124,238,220,185, 28, 66,200, 1, 0, 63, 81, 74,239,148,196, 39, + 8, 2, 17, 4, 1, 47, 53,206,197,200,166, 18, 88, 44,121,200,203,203,195,141, 27, 55,112,246,236, 89, 28, 60,120,246,158,194, +169, 84, 42,159,247,243,243,235,164, 84, 42, 19,172, 86, 43, 87, 88, 88,120, 67,167,211,109, 19, 4, 97, 49,117,237, 86,240, 1, + 15, 42,156, 34, 52, 26,205,199,239,188,243, 78,243,192,192, 64, 28, 63,126, 60,105,197,138, 21, 31,227, 62,157,235,149, 82,238, +219,217,115, 63,139,141,141, 8,194,201, 93,191,198, 78,251, 98,229,183, 0,226, 88, 42,254,247,195, 89,139,184,224, 48,128,174, +246,209,232,221,238, 35,159,223,215,253, 37, 89,180, 92, 23,150,190, 75,104,121,136, 24,172, 86,107,148,179, 37,139, 82,138, 59, +119,238,224,246,237,219,200,200,200, 64,112,112, 48,204,102,115,148, 47,245,108, 65, 65, 65,227,208,208, 80,157, 84, 42, 53,234, +245,122,168,213,106, 65, 42,149, 82,251,115,136,125,212,162,205,104, 52, 18,158,231, 45,254,254,254,126, 70,163,177, 42, 74,240, + 37,163,148, 54, 14, 13, 13,117,123,206,104, 52,162,176,176, 16, 90,173, 22,133,133,133, 48, 26,141,136,140,140,132,213,106,173, + 95, 98,147,214,106,173, 29, 30, 30,142,148,148, 20,168, 84, 42, 36, 39, 39,195, 84, 88, 0,115, 65, 1,172,218,124,216,242,242, + 32,228,231, 67,208,230,195, 98,210, 33,182,114, 53,136, 35, 18, 61,193,100, 50,213, 14, 13, 13,133, 86,251,183,187, 25,181, 11, + 44,171,213, 10,171,221, 57, 90,236, 78, 12, 11, 11,131, 56, 34,241, 97,192,238, 63, 53,150,227,184,121, 10,133,130, 31, 49, 98, + 4,238,220,185, 83, 44, 77,140, 24, 49,194,225,147,213,170, 85,171,221, 74,165,210,154,145,145, 1,163,209, 40,245,133, 51, 33, + 33,225,198,123,239,189,119,200,100, 50,197,197,196,196, 4, 25,141, 70,125,149, 42, 85, 98, 84, 42, 85,164,201,100,178, 53,108, +216,112,177, 74,165,178, 20, 22, 22, 82,171,213, 74, 30,133, 76, 79, 8, 1, 33,164,232, 27, 89,173, 8, 11, 11,211,102,102,102, + 30,204,201,201, 25,120, 47,124, 22,139, 69, 28,209, 5,189, 94, 15, 74, 41,142, 31, 63, 14,165, 82, 41,181,217,108,103,172, 86, +171, 90, 42,149,130,179, 59,127, 49, 60,180,239,220,166,106,144,124,246,244, 38, 17, 65,117,187,107,180,106,185, 68, 43,220,168, +155,240,221, 39,103, 87, 60, 59,248,121,255,201,147, 39,199,135,133,133, 41,175, 92,185, 98,152, 50,101, 74,226,178,101,203,136, +183, 70,208,205,155, 55,127,126,231,157,119, 66,186,116,233,146,164, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,107,215, +174,209,147, 39, 79,254,101, 52, 26, 87,149, 38,156, 49, 49, 49, 95,143, 30, 61,250,217, 6, 13, 26, 72, 69, 11,169, 86,171,173, +183,115,231,206, 30,191,255,254,123, 75, 0,165, 78,151,183,110,221, 90,245,238,187,239,106,158,122,234,169,170, 10,133,130, 43, +139,112, 58,131,227,184, 72, 63, 63, 63,108,219,182, 13, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176, +119, 54,170,134,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 18, 45, 82, 94,196,146,126,252,248,241,239, 16, 66, 54, +140, 31, 63,254, 29,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,112,251,246,109,164,164,164, +224,246,237,219,200,202,202, 2,199,113, 37,206, 31,225, 28, 6, 66,136,176,117,235,214,224,125,251,246,105, 27, 53,106,148, 43, +250,191, 88,173, 86, 98,177, 88,136,221, 47,134,220,184,113, 67,182,103,207,158,160,243,231,207, 71,162,200, 97, 77,240, 18,185, +187,142,137, 2,203,121, 51, 24, 12, 80, 42,149, 62,197, 85,172, 8,143, 31, 61, 90, 36,178, 10, 11,236, 93,134,121,176,229,231, +129,106, 11, 32,183, 89, 32, 7, 5, 49,232,124,126,127,206, 16, 69,150,217, 46,180, 76, 38, 19, 44, 22, 11, 4, 65,128,213,106, +125,232, 9,156, 82,186,176, 94,189,122,245,127,254,249,231, 97,183,111,223,190,235,124,175, 94,189,240,202, 43,175, 96,244,232, +209,231,187,118,237,122,242,215, 95,127,197,168, 81,163, 32, 8, 66, 93, 66, 72, 30,165,244,247,146, 56,199,143, 31,127,228,214, +173, 91, 59, 46, 93,186, 52, 34, 34, 34, 66, 81,187,118,237,203,181,107,215,150,252,252,243,207,145, 47,188,240,194,209, 39,159, +124,242,250, 31,127,252, 17,178,109,219, 54,165, 32, 8, 13, 8, 33,183,255,233,121,180,140, 70,163,195, 2,101, 48, 24, 96, 54, +155,129, 18,156,223,189,165, 77,241,219, 90,173, 86,145,155,252,252,243, 90,236,222,189,155, 59,123,246, 76,220,136, 17, 35, 69, +135,123, 86,226, 62, 28,129,245,148,156, 35, 95,142,173, 27,170,124,179, 78,168, 86,206,147,194,139, 95,190, 83,120,173,124,128, + 54,178,156,218, 20,151, 24, 20, 51,109,218, 71,209,231,207, 95, 48,190,247,222,123,231,250,247,239, 31,241,230,155,111, 86, 95, +179,102, 77, 75, 66,200, 55,148,210, 92, 15,188,202,161, 67,135, 30,136,136,136, 72,252,226,139, 47,210,111,221,186, 21,108,177, + 88, 52,102,179, 89,208,106,181,215,244,122,253, 54,179,217,188,141, 82,122,180, 52,225,245,247,247,175, 51,116,232, 80,105,110, +110, 46,236,163,117,145,158,158,142,230,205,155, 75,214,175, 95, 95,227, 94,222, 65,118,118,246,108, 66,200,142,229,203,151,119, + 10, 8, 8,104,160, 80, 40,162, 0,216, 10, 10, 10,210,180, 90,237,137,123, 9,103,177,114,206,102, 75, 59,122,244,104,133,128, +128, 0,220,188,121, 19, 54,155, 45,237,126,191,155, 82,198,221, 58,181,107,125,185,106, 97,137,216,179,239, 0,148, 50,238, 22, + 75,205,143, 61, 68, 31, 42, 56, 11, 40, 55, 2,105,223,244,233,211, 85, 51,102,204,192,244,233,211,207,184,179,104,137,130,107, +250,244,233,103,196,235,156,174,223,117, 31,229,137,103,139, 86, 9, 10, 18, 60,207,167,102,100,100, 4, 7, 5, 5, 57, 4, 86, + 74, 74, 10, 82, 82, 82, 32,151,203,113,227,198, 13,200,229,242, 59,190, 52, 66, 84, 42,213,145,122,245,234, 85,185,122,245,170, +108,202,148, 41,229,142, 30, 61, 26,208,188,121,243, 90, 42,149,202, 70, 41,133,193, 96,224,206,157, 59,231, 55,107,214,172,216, +198,141, 27,155, 26, 55,110,124,108,229,202,149,122,148, 48,121, 41, 33,228,208,157, 59,119,146, 18, 18, 18, 68,209, 86, 76, 92, + 57, 11, 46,160,168,203,147,231,249, 99, 37, 5,148,231,249, 83, 23, 47, 94,236,160, 86, 42, 96, 42,200,135,185, 48, 31,214,130, + 2,216, 10,242, 96,203,203, 3,180,249,144, 91,173,144,218, 44, 80, 41,149,184,157,156, 12,158,231, 79,149,196, 41,151,203, 79, +165,165,165,117, 8, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138, 91,183,110, 65, 46,151,159, +122,216, 41,153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,210,164, 9, 70,141, 26, 5,155,205,102,255, 12,164, 13, 33, +100, 15,165,180,208, 19,167, 32, 8,220,185,115,231,158,190,114,229,138, 68, 42,149,114, 79, 60,241, 68,205, 22, 45, 90,152,228, +114, 57,100, 50, 25, 95, 88, 88,232,191,109,219, 54,165,197, 98, 33,118,206,135, 54,143,150,152,118,238,106, 26,217,157,214,245, +122, 61, 10, 11, 11,145,147,147,195,171, 84,170, 42,181,106,213, 58, 96, 50,153, 86, 89,173,214,111,175, 94,189,154,239,137,211, + 46,204, 28,162, 75, 16, 4, 80, 74, 97,179,217, 96,177, 88, 32,147,201,132,157, 59,119, 97,214,156,143,177,228,219,101,180, 71, +143, 30,100,253,250,245, 16, 4, 33,153,149,171, 15, 5,159,230,254,244,145, 18, 86,155,214,184,115,121,225, 15,151,242,181,147, +127,152,123,196, 36,151,228, 55,108, 29, 89, 59, 41,177,138, 36, 40, 40,152, 91,180,120, 94,214,143,203, 86, 95,185,121,243,102, +254,231,159,127,222,180, 74,149, 42,129, 39, 78,156,136, 5,224, 86,104,169,213,234, 74,207, 63,255,252,208,156,156, 28,217,146, + 37, 75, 86,222,185,115,231, 8,128,179,148, 82,173, 83,217,213,149, 16,242, 61,138, 70, 62, 69,218,203,185, 61,148,210, 41, 37, +181,215, 8, 33,216,190,125,251, 93,163, 3,133,251, 83,231, 65, 21, 43, 86,236,119,245,234,213,221,169,169,169,189,221,228,251, +201,149, 43, 87,238,124,230,204,153, 73,148,210,223, 74, 67,172,211,233,198,173, 94,189,250, 19,137, 68, 18, 99,179,217, 82,244, +122,253,184,251,182,104, 89,132,225,211, 23,173,248, 74,111,178,149, 87,201, 37, 55, 13, 22,225, 5,150,148, 31,107,107, 22, 96, +247,209, 18,255, 3, 32, 46,251, 39,236,255, 77, 78,215,102, 56, 89,177, 76, 46, 86, 48,119,231, 50,112,143,147,165,187, 27,113, + 40,138, 46, 79, 51,195, 79, 0,208, 24,192, 33,169, 84, 58,239,217,103,159,157,245,227,143, 63,250,231,231,231, 35, 45, 45, 13, +233,233,233,224,121, 30, 1, 1, 1, 88,184,112,161, 62, 45, 45,109,158,243, 61,174, 51,200,139,121, 35, 44, 44,236,200,178,101, +203,162,190,252,242, 75,126,200,144, 33, 55,186,118,237, 90,117,225,194,133, 87,101, 50, 25,181,217,108,196,104, 52,146,151, 94, +122,169,194,156, 57,115,174, 75, 36, 18,117,191,126,253,136, 70,163, 57,132, 34, 7, 85,247,111, 62, 35, 99,235, 47,191,252,242, +244, 27,111,188,161, 48,153, 76,110, 45, 89,226,177,160,160, 32,236,221,187,215,148,147,147,179,197,139, 21, 99,235,166,223, 54, +182,250, 95,255,254, 50, 75, 65, 62, 44, 5,249,176,230,231,195, 86,144, 11, 82,152, 15,169,205, 10,149, 76, 64, 84,156, 18, 86, +189, 31, 54, 30, 62, 97, 49, 26,141, 37, 78,108,152,159,159,191,117,207,146, 37,109, 26,199,199,243,123,199,140,129,217, 98,193, + 83, 23, 47, 58,196,149,217,108,198,186,218,181, 97, 35, 4,117, 95,124, 17,151,173, 86,107,126,126,254,214, 71, 49, 51,156, 60, +121, 50,125,208,160, 65, 71, 5, 65,168, 95, 26,235,142, 8, 63, 63,191,130,194,194, 66,100,102,102,218,178,178,178, 12, 0,144, +158,158,158,179,126,253,250,115,130, 32, 52,190, 23,206,178,128,197, 98,185,203, 26,101,179,217,138,172,142, 69,150, 3,249,198, +141, 27, 91,157, 59,119, 78,118,250,244,105,236,222,189,187,238,143, 63,254, 56, 33, 62, 62,190,246,141, 27, 55, 82,189,137, 55, +119,147,254,194,238,127,184,114,249, 42,188,252,242,203, 36, 53, 53, 21, 63,253,244, 19,188, 77,158,202, 80,102,208,194,106, 83, +153,118, 46, 47,236,250,219,205,130,253,119,244, 83, 0,108,166,122, 43, 45, 87,174,220,201, 6, 13,130,195, 0,192,104,176, 69, + 85,170, 84,169, 53,207,243,114,123, 26,110, 16, 26, 26,186, 16, 64, 11, 55,229,167,164,127,255,254, 77, 34, 34, 34,234,253,254, +251,239, 39,238,220,185,115,134, 82,122,208,245,186, 10, 21, 42,188,119,254,252,249, 70, 82,169,148,120, 73, 35, 0,128, 54,109, +218, 84,137,143,143, 15,253,237, 82, 32,242,101, 21, 65, 37,121, 0,175,132, 45,168, 14,110,200,170, 35, 46,238, 64,104, 80, 80, + 80,221,220,220,220, 19,165,172, 32,218, 62,253,244,211,223, 46, 89,178, 36,174,117,235,214,148, 16,194,185, 78,233, 80,161, 66, +133, 78,251,247,239,175,255,194, 11, 47,124, 97, 31, 61,236,179,243, 48,165,244, 6,128, 62,101,249,209,182, 92,166,219, 96,159, +243,140,225, 63,131,195, 15,232,218, 50,193,189,204, 12,223, 88, 16,132, 30, 28,199,193,108, 54, 79,143,140,140, 92,215,175, 95, +191, 94, 19, 38, 76,240, 11, 13, 13,117, 88,178, 22, 46, 92,168,191,118,237,218, 26,179,217,124,156, 16, 50, 49, 37, 37,165, 71, + 76,140,199,250,161, 96,254,252,249, 43,186,119,239, 62,228,197, 23, 95,212,215,174, 93, 59,160,106,213,170,186,125,251,246,249, +117,236,216, 49, 95, 34,145,208,189,123,247,250, 87,168, 80,193, 64, 8, 81,252,241,199, 31, 89, 7, 14, 28,168, 48,125,250,244, +111, 80, 52,220,218, 19,150, 79,157, 58,245,189, 30, 61,122, 84, 8, 13, 13, 69,126,126,126, 49,177, 37,254, 87, 42,149, 72, 77, + 77,197,218,181,107,239, 88, 44,150,111,188, 88, 54, 62,255,108,225,162, 87,219, 54,121, 34, 54, 64,173, 66,106,242, 13,216,242, +114, 0,109, 33,228, 86, 11, 84,114,138,216,138,106,240, 18, 13,174,164, 22, 98,201,190,195,169, 86,171,245,243,146, 56, 77, 38, +211,231,175,204,153,243,234,254, 69,139, 98,227,251,246,197,217,165, 75, 29, 93,133,162,208,178, 17,130,242,237,219,131, 11, 12, +196,180, 47,190, 72, 51,153, 76,159, 63,236,196, 34, 8,130,196,100, 50,149, 20, 15, 8,130,144,124,246,236,217, 21,132,144, 2, + 66, 72, 27,251,169, 29,238,172, 89,206,156, 28,199, 9,213,171, 87,255, 57, 50, 50,242,105, 0,218,234,213,171,255,172, 80, 40, +218,153, 76,166, 39, 4, 65, 72, 62,126,252,248, 90, 66, 72, 42, 33, 68,108,117, 60,212,121,180, 44, 22, 11, 38, 78,156,136, 25, + 51,102, 96,252,248,241,142,248,138,221,135,185,185,185,137,123,246,236,145,237,220,185,147,126,241,197, 23, 89, 67,134, 12, 9, +122,241,197, 23,131,190,252,242,203,215, 1,140,243,196, 57,110,220, 56,124,241,197, 23,120,249,229,151,239, 86, 89, 18,137,144, +156,124, 11, 6,131,129,206,159, 63, 63, 69, 42,149, 6,127,243,205, 55,170, 23, 94,120,129,176,114,245,161,224, 93,213,160,247, + 95,179,151, 49,243, 40,165, 59,196, 19, 1, 1, 1,170,159,127,254,133, 7,128, 53,171,215, 74, 41,165,129,226, 4,179, 63,252, +240,131,178,121,243,230, 17, 30, 10, 92,155, 82,169, 52,206,156, 57, 51,116,248,240,225, 79,254,249,231,159,193,132,144, 38, 0, +142, 0, 72,179,139,235, 8, 0,103,195,194,194, 2, 86,174, 92, 25,219,169, 83, 39,141,183,128, 22, 20, 20,124,179, 98,197,138, +132, 57,123, 2,241,155,246,105,220, 18,250,130, 6, 81,132, 68, 20,160,186,223, 77, 12, 28, 56, 48,102,222,188,121, 95, 1,104, + 80, 10,145, 53,176, 87,175, 94, 51,150, 44, 89, 18, 51,124,248,240,212, 99,199,142,165, 1, 88,226, 70,240,101, 62,251,236,179, +119,150, 46, 93, 26, 77, 41, 93, 68, 8,145, 83, 74,215,176,228,195,192,224,200, 75,173, 81, 52, 35,252, 93,226,139,184,243,111, + 34,132,172,179, 90,173, 61,120,158, 95,239, 60, 97,105,100,100,228,171, 38,147, 41,154, 16, 66,101, 50, 89,106, 90, 90,218, 60, +231, 9, 75,147,147,147,123,196,197,197, 57,238,177, 79,186,233, 60,215, 70,192, 83, 79, 61,213, 97,255,254,253, 11, 54,108,216, +144, 94, 80, 80,224,183,122,245,106,213,140, 25, 51,110, 8,130, 64,223,126,251,237,248,206,157, 59,235,108, 54,219,157, 23, 95, +124,177, 66, 98, 98,226,139,231,207,159,223,230, 44,180,220,112,130, 16, 82,163, 98,197,138,123,215,172, 89, 19, 16, 20, 20,132, +244,244,116,100,103,103, 67,171,213,194,102,179, 65, 42,149, 34, 35, 35, 3, 83,166, 76,201, 79, 73, 73,185,107,194, 82, 15,156, +141, 19, 98, 99,183,206,155, 52,209, 63,136,231,144,117,225, 28,172, 57, 89,144, 90, 45, 40, 87, 35, 16, 50,185, 10,151, 47, 22, +224,245,229,107, 11,110,102,231,222, 53, 97,169, 39,206,134,149, 42,109,251, 98,236, 88, 63,195,173, 91,136,126,238, 57,232,116, + 58,152,205,102,112, 28,135,191,230,205,131, 44, 60, 28,239,173, 92,169, 61,115,243,102,123,215, 9, 75,221,113,150, 65,226,112, +112, 18, 66, 70, 18, 66, 28,206,240,189,122,245, 42,118,237, 47,191,252,130, 69,139, 22,193,104, 52, 90, 41,165,175, 82, 74, 23, + 18, 66,252,236, 9,170,208, 27,103, 66, 66,194,205,154, 53,107, 30,182,217,108,188, 93,100,208,179,103,207, 54,184,118,237, 90, + 57, 23, 78,222,206,105,125, 88,113, 15, 13, 13,157,247,251,239,191, 39, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,106,212, +168,246, 7, 14, 28, 80,212,171, 87,207,152,153,153,217, 40, 60, 60,252,207,101,203,150,133,245,235,215, 47,229,204,153, 51,177, +174,156, 97, 97, 97,179,214,172, 89, 83,177, 98,197,138,156,104, 21,115,237,158, 28, 54,108, 88,135,101,203,150,201,159,126,250, +105,163, 86,171,141,244,247,247,191,178,102,205,154,176,158, 61,123,166,158, 57,115, 38,250, 97,196,157,113,186, 71,205,154, 53, + 47,159, 57,115,166,162,184,175,215,235,145,145,145,129,204,204, 76, 4, 5, 5,161, 99,199,142,127, 93,187,118,173,162, 59, 78, + 66, 72,189, 62,125,250, 76,250,234,171,175, 58,104, 52, 26,217,174, 93,187,180,219,182,109, 51,220,184,113,195,106,177, 88,104, +116,116, 52,223,162, 69, 11,101,151, 46, 93, 52, 10,133,130,123,255,253,247, 51, 63,250,232,163, 48, 66,200,114,113,249, 51, 87, +206,250,245,235, 31,220,180,105, 83, 99, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,113,251,118, 50,206,158, 61,139,253,251,247, + 99,203,150, 45, 39, 10, 11, 11,235,249,152,223, 67, 1,236, 50, 26,141, 85,229,114,185,207,194,222,102,179,129,231,249, 11, 0, + 58, 81, 74,147, 89, 90, 98,156, 12,127,251,103,149,202, 25,222, 46,192, 26, 19, 66,214,217, 15, 29,114,157,194,129, 16, 50,129, + 16, 50,209,201, 10,230, 45, 44,249,191,255,254,251,238, 14, 29, 58,140,106,223,190,253,156, 78,157, 58,221,185,115,231, 78,210, +236,217,179,227,172, 86,171,249,236,217,179,220,149, 43, 87,110, 28, 57,114,164, 98,229,202,149, 95, 60,127,254,252, 78, 47,214, + 44, 49,172,103, 9, 33,205,219,182,109,187,246,197, 23, 95, 44,223,164, 73, 19,121, 80, 80, 16,120,158,199,213,171, 87,113,226, +196, 9,211,202,149, 43,147,115,115,115,125, 94,130,135, 82,122,136, 16,210,177,223,232, 87,215,188,216,171,123,216, 19, 85,171, +200,163,163,163, 1,189, 30, 23,110,166,226,192,133, 19,230,175,119, 31,200, 48, 26,141,189,125, 93,130,199,206,217,161,221,216, +177,107, 38,255,239,127,145,184,115,135,143,142,142,134, 92, 46,199,181,107,215,112, 69, 16,172, 51, 23, 47, 78,203,207,207,127, +232, 75,240,136,115, 94, 9,130,192, 3,128, 74,165,194, 43,175,188, 2,231, 37,119, 22, 45, 90, 4,189, 94, 15, 0, 60, 33,228, + 19, 66,200,183,158,172, 88, 30, 56,203,255,246,219,111,229,157, 57,171, 85,171,230,142,211,248,176, 51, 73,118,118,246,123, 79, + 61,245,212,116,158,231, 61,206,122, 27, 28, 28,140,130,130, 2, 88,173, 86,219,237,219,183, 47, 4, 7, 7, 67, 42,149,130, 82, +234, 54, 31,101,101,101,189,215,187,119,239,169, 28,199, 69,120,226, 12, 8, 8,184,241,231,159,127, 86,122,225,133, 23,184,239, +190,251,238,234,240,225,195, 21,127,254,249,167,141, 82,186,150, 21, 93,143, 22,156, 27,165,246, 70, 28, 45,225,218,227,132,144, + 57, 71,142, 28, 9, 31, 53,106, 84,210,255,254,247,191,128,182,109,219,250, 57, 95,163,215,235,133, 95,127,253, 85,187,104,209, +162,188,221,187,119, 95, 31, 54,108, 88, 19, 20,249,151,184,197,205,155, 55, 55, 78,155, 54, 45,176, 75,151, 46,149, 1, 56,252, +179, 50, 50, 50,112,227,198, 13,156, 62,125,250,134,217,108, 94, 95,138,248,100, 17, 66, 38, 15, 24, 48,224,147,165, 75,151,198, + 12, 31, 62, 60,117,229,202,149,167, 81, 52,193,176, 43,130,122,245,234, 85,123,233,210,165,209,195,135, 15, 79, 5, 48,133, 82, +202,252, 8, 25, 24,254, 70, 27, 87, 63,173, 18,125,180, 0,228, 9,130, 0,131,193, 16, 41, 8, 66, 15, 65, 16,224,231,231,231, +238,186,198, 41, 41, 41, 61,156, 23,149,134,151,229,114, 0,100,108,219,182,109,235,242,229,203,219,191,253,246,219,255,203,205, +205,109,124,242,228,201, 38, 0, 32,149, 74,247,107, 52,154,131,211,167, 79,127,110,220,184,113, 25,190,136, 44, 23,177, 85,125, +214,172, 89,101,182,168,180, 93, 24, 85,250,124,213,218, 81,223, 40, 20, 29, 93, 22,149,222,106, 95, 84,218,112, 47,156, 99,191, +250,106, 84,192,170, 85,143,236,162,210, 70,163,209,250,244,211, 79,127,195,113,156, 96,111,197,242, 70,163,241, 57,148,114,164, +170, 43,103,175, 94,189,190,147, 72, 36, 86,187,165,136, 51, 26,141,207,223, 15,103, 25, 86,162,133, 0, 70,151,116, 77,173, 90, +181,150,173, 95,191,126, 80,143, 30, 61,108,102,179, 57,189,123,247,238,252,193,131, 7, 41,199,113,219, 60,112, 26, 1,188, 85, + 18,103, 84, 84, 84,252,103,159,125,118,108,204,152, 49, 1,203,151, 47, 15,217,179,103,143,109,254,252,249,249,217,217,217,159, +178,114,235,209,130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 78, 8,233, 50,118,236,216,103,198, +142, 29,219, 37, 42, 42,170, 66, 66, 66,130,154,227, 56,220,190,125,219,154,146,146,146,110,177, 88,182, 2, 88, 11, 0, 21, 42, + 84,120, 22,192,215,158,248,178,178,178,166, 18, 66,182, 47, 93,186,180,171, 70,163,169,174, 84, 42, 67, 44, 22, 11, 87, 80, 80, +144,173,215,235,207, 25, 12,134, 13,148,210,125,165, 76,247, 43, 9, 33,153, 67,134, 12,249,118,201,146, 37,113, 87,175, 94, 45, + 56,114,228,200, 83,174,215, 85,175, 94,125,207,210,165, 75,163, 95,120,225,133, 59, 43, 87,174, 44,149,143, 22, 3,195,127,164, + 33,182, 19, 30,252,139, 61, 85,112,211,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 92,124,178,242, 0, 76,243, 33, 76, +218,129, 3, 7, 94, 27, 56,112,224, 39,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,178, +111,101,245,242, 12, 40,154, 47,103,214,163,204, 89, 6, 97, 50, 18, 66,198, 18, 66, 62,177, 31, 26,123,252,248,241,133, 46, 22, +170,147,206,231,189, 89,158,220,113,158, 56,113,194,149,243,116,105, 56,255, 73,228,230,230,190,250,217,103,159, 29, 26, 63,126, +188, 98,232,208,161, 56,125,250, 52,102,204,152, 97,204,205,205, 93,126,175,156,169,169,169, 55,162,162,162,234,207,157, 59,247, +205, 57,115,230,244, 36,132,176,181, 14, 31, 17,232,245,250,191,234,212,169, 3, 82,228,176, 68,173, 86,171, 99,180,168,125,134, +255,191,124,177, 26, 1, 88,108,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,172, 15,124,251, 1,236, 47,227,188,191, +157, 16,242,220,149, 43, 87,166,253,245,215, 95,110,133,218,229,203,151,119,180,104,209,194,255,228,201,147,239, 82, 74, 55,178, +212,193,192,224, 59,120, 15, 25,239, 50,128,255,249,144, 65,167,223,199,179,109, 62, 88,191, 24, 30,174,216, 90, 72, 8,249,214, +201, 26, 83,170,243, 15,139,243,159, 66,114,114,114, 14, 0,199, 82, 36, 73, 73, 73,119,249,177,221,171,216, 66,209, 44,240,108, + 38,248, 71, 8, 87,175, 94,125,234, 1,228,177,236, 71, 52,239,239, 0,208,196,211,121,139,197, 50, 17,192, 68,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,181,227, 28, +128, 14, 30, 42,191,109,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,142, +135, 83, 23, 92,248,190,252, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116, 96,156,140,147,113, 50, 78,198,201, 56, 25, 39,227, +188,199,231,188,248, 48,158, 83,198, 97,166, 0, 90,139,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,122, +245,106,137,248,127,192,128, 1,195,108, 54,155, 99,216,187, 68, 34,249,236,167,159,126,250,182,164,135,244,233,211,199, 86, 18, +167, 59,120,123,142, 59,206,154, 85, 2, 71,132, 6,170, 95,205,205,211,205,189,154, 98,219,109, 48, 24,170,139,231,148, 74,229, +185,111,191,253,246, 82, 89,135,115,216,176, 97,149, 93,159,147, 16, 39,109, 19,226,175,124, 37, 59,183,112,246,233, 75, 5, 95, +178,100,246, 96,209,183,111, 95, 73,105,174,191,118, 45,136, 59,134,232, 79, 3, 52,178,238,133, 90,203,167,182,163, 19, 23, 60, + 14,239, 33, 58, 58,186,106, 64, 64,192, 96, 0, 53,116, 58, 93,132, 90,173, 78, 7,112, 54, 63, 63,127,217,157, 59,119, 46,248, +202,211, 38,145,220, 0, 80,222,190,123,115,199, 53, 26,239,203, 57,111,232, 92,145, 24, 40,160, 32, 4,230,205,151,169, 99, 1, +205, 39, 43, 17,131, 64,239, 62,222,185, 18, 49, 81, 10, 25, 1,140,155,175, 80,229,227,146, 94, 9, 33, 1, 0, 58, 2,168, 9, +224, 36,128, 45,148, 82, 29,203,201, 12, 12,143, 15, 92, 39, 42,117,222,231, 61,136,137, 86, 50,158, 44,160,160, 65, 0, 13, 53, + 26,141, 82,185, 92, 14,147,201, 4,181, 90,245,249, 75,195,135, 77, 2,135, 92,139, 21,175,124,251,237,183,247,188,210,117,105, +158,211,167, 79,159,237,174,247, 7, 7,168,166,238,248,245,237,224, 86, 93,103,206, 48, 93,203, 28, 87, 80, 80,192, 41, 20, 10, + 24,141, 70, 4, 6, 6, 54, 31,241,226,139, 13, 56, 41, 53,201,100,154,125,115,230,204, 73,189,215,112,190,254,250,235, 81,102, +179,161,153, 32, 8,114,147,201,164,112,125, 78,160, 90, 51,115,199,175,111,171, 91,119,155, 49, 9, 0, 19, 90,143, 16,138, 68, + 86,212,151,175, 13,124, 98,232,199, 99, 58, 32,168,205,204,113, 0, 22,252,203, 51,180, 36, 41, 41,105, 84,124,124,124,255,197, +139, 23,203,146,146,146,160, 84, 42,161,215,235,163,255,250,235,175,232, 17, 35, 70,180,174, 80,161,194,138,171, 87,175,126, 78, + 41,181,249, 64, 89,126,199,247,239, 3, 0,154, 15,158, 82,158, 16,242, 22, 0, 29, 0,180, 78,248,251, 92,155,161, 83,202, 19, + 66,198,162,248,104,225, 59,148, 82,183,147,100, 82, 64,190, 97,233, 44,244,120,246, 45,158, 16, 50, 66, 60,222,165, 50,176,233, +135,121,120,114,192,171,197,142,119,174, 0,254,215,165,179,208,237,217,183, 60,174,106,254,100,101,206, 34, 8,212,163, 37,158, +227,136,117,243,101,234,110,129,225, 52, 74,233,102, 55,239,178, 51,138, 22,116,118,123,125,183,106,124,154,217, 98,115, 59,225, +172, 76, 42, 73,223,112,222,122,215,189, 67,235, 19,139,197, 86, 84,182,202,120,216, 2, 3, 3,119,188,251,238,187,124,183,110, +221,240,245,215, 95,183,248,242,203, 47, 95, 36,132,252, 1, 96, 61,165,244, 10,203,165, 12, 12,143,175,224,242, 40,180,120, 9, +190, 88,191,230,219,138,105,233,153, 24,242,194,155, 88,190,124, 57,114,114,114, 16, 28, 28, 12,185, 76, 38,157,251,201,251, 81, + 1, 1,154,168, 33, 47,142,251, 2, 64,213,123, 13, 80, 41,159, 83,233,174, 8,217, 39, 52,229, 37,156, 84, 46,151,115, 43, 86, +172, 64,110,110, 46,130,130,130, 32,151, 75,185, 57, 51, 38,168, 2, 2,252, 84,207,143, 28,223, 2,192,170,123, 13,167,201, 84, +216,226,231,229,223, 6,100,100,100, 96,232,203,227,224,250, 28,153, 76,102, 19, 43, 22,150,204,254, 57,100,102,102, 18, 0, 8, + 11, 11,163,197, 69, 86,147,161,115,222,232,132,215,103,111,129,206, 96,250,225,223, 30,207,164,164,164, 81,125,251,246,237, 63, +117,234, 84, 25,199, 21, 13, 28,214,106,181,208,235,245,136,141,141,197,142, 29, 59,100,239,189,247, 94,255, 95,126,249, 5, 0, +230,151,150,255,204,153, 51, 9,229,203,151, 55, 0, 64,247,218,254,174,231,226,197,115, 0,224,239,239,239,149, 47, 52, 72, 99, + 60,115,230, 64, 13,241,190, 81,237, 99,109, 30,142, 27, 0,168, 75,226, 18, 4,202,111, 89, 48,194,227,249, 23,166,254,104, 61, +185,106,119,213,164,164, 36,189,243,113, 15, 19, 46, 3, 64,100, 97, 97, 97,121,215,131,226,245,102,139, 45,194,211,243, 58,189, +178,200,173, 0,179,216,192,255,248,227,143, 0,128, 79,223, 26, 36,249,234, 96, 38,207,243, 69, 69,237, 39,159,124,130,201,147, + 39,203, 55,111,222,220,101,233,210,165, 93, 8, 33,115, 61, 9, 85, 6, 6,134,127,159,200,114,254, 45, 81,104,113,132,248, 7, +248,251,161,207,192,151,240,251,239,155,208,170, 85, 43,199,185,196,196, 68,244,237,221, 19, 63,125, 63, 7, 0,252,239, 39, 80, +247,251,156,156, 60,237, 7, 79,246, 95, 48,229,102,106,225,254, 13, 27, 54,160,101,203,150,197,238, 31,216,175, 15,126,248,230, + 19, 80, 74,101,247,245,242, 40, 39,243, 15,208, 96,192,144,151,225,238, 57, 47, 14,237,181,161,115,223,121, 29,210,178,180,115, + 88, 82,123,184, 56,127,254,188,196,104, 52, 14, 8, 8, 8,104, 34,149, 74, 35, 21, 65,229,133, 20,190,113, 86, 6, 73,186,154, + 30,161,107,245, 70,135,200, 39, 63,125,173, 45, 94,159,189, 5,115,151, 31,248,190, 62, 82,255,213,115, 1, 69, 71, 71, 87,141, +143,143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56,140, 27, 55, 78,182,115,231,206,254,209,209, +209,219,124,232, 70,188,217,124,240,148, 34,177, 33,145, 22, 78,156, 56,209, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 12, +157,226, 15, 0, 28, 47, 43,152, 59,119,174, 41, 54, 54,214,192,243,188,252,213, 87, 95,245,105,122, 24,163,209, 72,157, 57, 77, + 38,163,227,248,204,153, 51, 77,145,145,145, 70,181, 90, 77,205,102,147,207,239,225,212,181,108, 40,100, 18, 40,100, 18, 40,229, + 82,248, 39, 52,130, 34,231, 52,172, 86, 43, 62,254,248, 99,115, 84, 84,148, 73,173, 86, 83,185, 92, 46, 27, 51,102,140,215,112, + 14, 27, 54,140, 6, 5, 5,153,213,106,181,108,242,228,201,119,205,238,252,231,201,219, 80,201,165, 80, 43,120, 84, 74,140,131, +130,234,125, 14,171, 68, 82,188,167, 91,161, 80,160, 69,139, 22,168, 81,163, 6,214,173, 91,215, 6, 0, 19, 90, 12, 12,255,114, +184, 90,177,238, 18, 90, 27, 55,110,108, 13,251,170,211, 93,187,118, 45, 90,109, 26, 20, 99, 71,245,198,243, 67, 7,192,102, 19, + 28,203, 77, 16,142, 96,228,115, 93, 32, 8, 54, 95, 30,236,117,136,103,105,159,227,204, 73, 9, 39, 1,128,138,241,209,244,197, +231,255, 7,155, 32, 20, 77,131, 10, 0, 18,224,165,161, 79, 22, 29, 43,131,112, 74, 96,195,155, 35,158,129,187,231, 84,173, 24, +195, 89,205, 6, 16,167,197, 30, 31,196, 98,155,140,179, 56,246,237,219, 23,173, 86,171,103, 15, 26, 52, 40,102,204,152, 49,114, + 27, 31,196,175,222,159, 21,248,246,194,253, 49, 58,163, 89, 50,176,109, 2,222,248, 95,109,188, 49,247, 79, 81,100,189,152,152, +152,251,175,254, 70, 1, 1, 1,131, 23, 47, 94,124,151,200, 74, 75, 75,227, 10, 11, 11, 97, 54,155,133,130,130, 2,216,108, 54, +140, 31, 63, 94,250,222,123,239, 13, 38,132, 76,182,243, 24,221,113,238,184, 70,227, 9, 33, 99,207,156, 57, 19,255,238,187,239, +154,219,181,107,119, 51, 49, 49, 81, 43,145, 72, 16, 29, 29, 61,175, 99,199,142, 33, 83,167, 78, 53,119,233,210,229,186, 68, 34, + 65,165, 74,149,180,167, 79,159,142, 7,160,242, 53,238,206,156,223,254,249,153,216,234, 67,199,142, 29,111, 84,170, 84, 73, 43, +145, 72,112,233,215,153,212,215,247, 41,229, 57, 84,142, 13, 20,155,145,128,202, 15,200, 41,218,237,216,177, 99,114,213,170, 85, + 11, 57,142,195,169, 83,167,226, 0, 40,189,113,170, 84, 42,203,192,129, 3,111, 94,184,112,225,174,235, 1,128,151,112,104, 82, +213,110,192,138,173, 15, 36,239,241, 24, 78,169, 4,214,247, 70, 13,226,131,148,128,194, 63,204,152,159,159,143,128,128,128, 34, + 11,153,217,140,227,199,143,163,105,211,166,173, 87,173, 90,181,147,229,119,198,201, 56,255,134, 59, 45,242,111,179,102,137,130, +203,157,143,214, 14,215, 72,217,108, 86, 36,150,143,196,204,247,135,193,102, 19, 96,179,217, 96,181,255,218,108, 54, 88,204,230, + 50, 9,220,253, 60, 39, 56, 64, 53,117,211,138, 87,130,219,245,250,164,253,244,119,135,110,181,217, 0, 65,176,192, 98, 1,108, +130, 5,130,205, 6,139,197, 84, 38,225,180, 8, 2,226,227,162, 48,253,221,161,112,125,206,178,159, 86,117,255,115,253, 56,117, +171,110, 51,222, 4,240, 49,211,246, 15,199,146,165, 86,171,103, 47, 91,182, 44,190, 81,163, 70, 28, 0,236,190,104, 85,188,189, +112,127,204,230,233,205, 73,243, 26,161, 72,207, 53,226,213,207, 79,224,247,253,233,155, 92, 69,214,191, 24, 53,146,146,146,138, +137,172, 89,179,102,133, 45, 92,184, 48, 22, 0,122,247,238,125,187,125,251,246,153, 23, 47, 94, 68,116,116, 52,201,204,204,236, + 10,224, 85,123,198, 31, 75, 41, 93,232,129, 87, 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222, + 16, 17, 17, 97,172, 84,169,146, 86, 38,147,129,227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164, +188,211,245,244,110, 11, 18,199,113,110,159,231, 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 63, 70,165, +132,144, 29,148, 82, 28, 59,118, 12, 87,175, 94,133, 76, 38, 67, 84, 84, 20, 38, 79,158, 12,163,177, 72,239,246,237,219,183, 53, +128, 83, 44, 55, 51, 48, 56,176,227,223, 38,176, 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194, + 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142,205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188, + 64,193,102,129, 32, 88,224,238, 57,132,112, 54,123,129, 47, 99,249,228,225,192,104, 52, 14, 28, 48, 96, 64,140, 40,178, 0, 32, +179,192,194,235,140, 22, 73,243, 26,161, 92,131,182,125, 17, 17,164,192,202, 93,183, 17, 17,164,222,245,152,136, 44,232,116,186, + 8,165, 82, 9,173, 86,235,176,100, 45, 92,184, 48,214,100, 50,113, 38,147,137, 91,185,114, 85,220,242,173, 23,203, 45,219,124, +177,220,226,181, 71,203,229,228,228,213,160,148,170, 40,165, 42, 0,159, 16, 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,155,235, 92, 40, 67, + 20,193, 12, 12, 12,238,181,200,191, 85,108, 21, 43, 63, 92,213, 36,236,171, 79, 91, 45,102,183,226,103,213,175,123,113, 51, 85, +139,168,176, 67,160, 30, 86,170,246,132,254,253,251,127, 31, 29, 29,237, 88, 79, 75,161,242, 11,125,241,149, 15, 97,181,154,225, +175,226,240,194,224, 39,139,137,172, 34,139,150, 9,158,228, 92, 78,158,246,131, 39,251,206,159, 18, 24, 16,186,223, 85,252, 76, + 95,114,180, 79, 78,190, 49,142,227, 14, 35,135, 68,219,250,190,244,225, 48,167,194,253,228,138, 69, 19,223,240,249,197, 17, 78, +218,103,196,188, 23, 41,239, 87, 93,205, 21,236,122,123,232, 19, 63, 59,139,185,144,144,144, 13,157,250,204,237,144,150,205,124, +180, 30, 22,228,114,121,135, 49, 99,198, 20,171,241,194,252,165, 86,181, 66,106,219,123, 54,147, 28,221,190,138,219,125, 38, 83, + 80,202, 36, 52,156, 94, 77,122, 92,226,173, 86,171,211,117, 58, 93,180, 94,175, 71,126,126, 62,242,243,243,139, 11, 2,169,148, +188,248,242,232, 48,169, 76, 14,139,217,132,223,151,125,228,149,179, 77, 34,185,209, 58, 1,229,187,215,246,135, 68, 42, 47, 56, +155,148, 52,143,231,121,112, 28,135, 95, 63,127,251,213,181,179, 95,241, 7,128,147, 27, 62,207, 31, 48,238,179,249, 28,199,193, +104, 52, 42, 74, 19,238, 91,183,110,197, 25,141, 70,131, 93,160,137,166,117, 92,187,118,173,156,209,104,212, 59, 31,247, 5, 42, +181, 63, 16,148, 8,168, 35,238,178,158, 93,191,126, 61,198, 98,177,232,120,158,135,201,100,242, 73, 21,113, 28, 39, 59,117,234, + 84,156, 32, 8,110,175,175, 81, 33, 6,136,170, 13,200, 3, 75, 83,224,250,116,141,187, 22, 48, 3,195,127,221,178,133, 82,234, +139, 71, 65, 96,185,251,239, 44,180,218,108,220,184,145, 58,183, 16,173, 22,139, 93,100,253, 45,122,108, 54, 1, 41, 25, 6, 92, +188,120, 9,115,231,206,197,222, 3,111, 5, 78,157, 58, 85,241,222,123,239, 25,251,247,239, 63, 91, 16,132, 58, 28,199,157,236, +211,167,143,219, 86,154, 32, 8,229,142, 30, 61,234,168,244, 44, 22, 11,252,253,253,225,239,239,143,170,149,226,238, 18, 89, 54, +155, 13,230, 18,186, 14, 69, 31, 45, 66, 5,106,177,216, 96, 19, 4,135,248,201,201, 55,198,173,223,118,172,162,211,229, 85,196, + 63, 45, 26, 85,247, 44, 6, 71, 76,118,196, 99,197,162,137,111, 76,253,250,107, 69,142, 45,124,204,128, 62,207,215,236, 59, 96, + 48, 6, 62,243, 84,107,163,201,180, 78,194, 81,193,226,120, 30, 56, 80, 20,243,209, 98,120,112,200,204,204, 36,122,189, 62, 33, + 40, 40,168, 88,133, 21,173,209, 26,199,245,171,156,210,241,237, 61, 49, 6,179, 13, 10, 41, 71, 95,237, 25,159,114,240,151,149, +161,153,198, 76, 34,142, 70,252,151,227,236,149, 43, 87,162,203,149, 43,135,252,252,124, 88,173, 86,161,119,239,222,183,121, 94, + 26,199, 75,165,164,219,128,209, 66,106,106,138,133,227, 36,160,212,134,167,250,142, 32, 10,165, 74,102, 54,153,172, 0,198,122, + 88, 83,210,121, 10, 7,255,142, 29, 59,134,136, 35, 1,215,206,126,197,223,233, 92, 64,131, 6, 13, 66,156, 71, 29,250, 40,138, + 73,255,254,253, 85,229,203,151, 39, 0,112,120,217,187,162,245,140,116,239,222, 93, 89,190,124,145, 31,254, 31,159,251,190,166, +118,152,154, 2,121,215,128,188,235,119, 89,178,186,119,239,174, 72, 74, 74, 42, 85, 94,180, 59,192,123,156,187, 75,195, 91,129, +212, 99, 62,113, 13,173, 79, 44,239,182, 2, 63,251, 41, 14,114,191, 80, 99,147,183, 55, 31,100, 98,139,129,193, 39,184,104,145, +127, 15,236,107, 27,238, 0,208,198,254,139, 98, 62, 90, 93,187,118,221, 89, 76, 61, 82,192, 98, 53,223, 37,178,108, 54, 27,164, +196,136,185,115,231,226,181,215, 94, 3, 0,217, 27,111,188,241,243,212,169, 83,159, 22, 4,161, 14,165,180, 37, 33,164,164, 86, +227,142,232,232,232, 52, 74,169,148,227,184,150,159,127,254,121, 72,151, 46, 93,224,239,239, 15, 42,208,187, 68,150,205, 38,192, +108, 54,193,147, 73, 43, 56, 64, 53,117,211,170, 49,193,237,122,126,210,222, 38, 8, 91, 69,145, 37,216,108,128, 80,116, 83, 86, +250,109,108,249,125, 29,190, 88,244, 69, 14, 8, 61, 15, 10,129,227,184,147,158,194, 40, 8, 66,157, 61,135,207,181,108,209,168, + 58,166,126,253,181,226,204,209, 59, 63,143,126,253,157,154,125, 7, 12,198,170,159,150,129,179,230, 30,115, 22, 89, 54,139,128, +188,156,204,238,219,153,143,214, 63, 6,139,197,130,156,156, 28, 88, 10,115,172, 13,163,181,121, 31,246,141, 48,166,229, 24,120, +169,160,179, 86, 11, 72, 55,110,207,190, 46, 81,171,213,143, 69, 92,243,243,243,151,141, 24, 49,162,245,174, 93,187,100, 28,199, + 33, 63, 63, 31,109,219,182,205,204, 16, 98,149, 47,190, 60, 58, 44, 37,229,182, 53, 64,197, 27,101, 50, 41,210,211,211,133,214, + 93, 6,233, 7, 12,123, 45,230,181,119,167, 47, 78,217,187,112,161, 47,207,112, 30, 9,232,122,238,171,175,190, 50,197,198,198, + 26, 20, 10,133,124,232,208,161, 62,245, 31,154, 76, 38, 58,115,230, 76,163,235,232, 66,147,201, 68,231,206,157,107,138,139,139, + 51,170, 84, 42,106,177,120,247,251,228, 56, 98,125, 97,234,143, 86,171,213, 90,204,138, 37,138, 44,139, 64, 10, 23, 44, 88, 96, +142,139,139, 51,169,213,106,170, 80, 40,100,190,132,115,244,232,209, 52, 56, 56,216,172,209,104,100,227,198,141,187,175, 81,135, + 22, 27,248,169,159, 59,166,119, 80,248,251,251,163,160,160,192, 17,214,232,232,104, 38,182, 24, 24,220,224, 46, 45,242, 47,179, +194,121,242,209,114,235,192, 32, 0,133,105,233,153, 17, 97,145, 9,176, 90,173,246,205, 2,171,197,130, 49, 47, 13,192,236, 69, + 69,243, 61,218,197, 86,199, 55,222,120,227,103,184,248,123,185,195,138, 21, 43,166,188,241,198, 27, 1,105,105,105,155,191,255, +254,251,144, 65,131, 6, 97,236,216,177,248,228,147, 79, 32,149, 43, 17, 18, 94,206,241, 28,241,185,153, 25,217,160,160,133,110, + 21,164,221, 71,139, 82,240,161,225,241,176,216, 44, 16, 44, 22, 88, 44, 22, 16, 73, 81,212,182,252,190, 14,131,158, 27, 13,169, + 34, 32,248,179,185, 31,235,107, 54,140,126,250,189,225,195,141,222,229, 41,184, 51, 71,239,252, 60,250,181,113, 29, 69,145,181, +102,217,162,243,159,142,239,185, 92, 33,231, 29,207,177, 8, 2, 56, 78,194,124,180, 30, 34,194,194,194,104, 70, 70,198,245,220, +220,220, 42, 26,141, 6, 89, 89, 89,200,206,206, 70,110,110, 46,140,249, 57,214, 80, 91,174,150, 88,179,193,243, 60,210,111, 89, + 97,179,217, 82, 31, 19,107, 22,238,220,185,115,161, 66,133, 10, 43,222,121,231,157, 1,227,199,143,151, 10,130,128,139, 23, 47, + 2,132, 80,169, 76, 14,238,255,236, 93,117,120, 20,199, 27,126,103,207, 37, 23,247,132,132, 96, 73, 72,240,226,222, 98,197,139, +187, 91,177, 66,113, 40, 86, 40, 20, 43,197,138,148, 2,197,225, 7,197,139, 20,119, 8, 30,130, 4,226,238,114,185,156,238,252, +254, 32,151, 30,105,228, 46,161,165,208,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249,134, 97, 32, 16,240, +145,145,145,201,202,172,108,227,180,148, 39, 19, 8, 69, 96,120,194,226,134, 9, 71,182, 24,252, 38,188, 3,195, 23,102, 25, 71, + 2, 10,133, 66,220, 60,176, 34,179,197,224,111,173, 1, 64, 40,150,166,181,105,211, 38,162,106,213,170,202,187,119,239,122,163, +192,168,195, 66,158, 79,125,215,193,211,120, 50,169, 68,217,186,117,235, 72, 35,103,248,217,117,153, 3,190,156, 77, 8, 79,164, +236,216,177, 99, 68, 96, 96,160,146,199,227,225,233,145,101,153, 93, 7, 79,147,144, 63,199,244,254, 5,167, 95,210, 17, 15, 15, + 92,241, 91,188,120,177,174,125,251,246, 81, 70,127,177,240,240,112,247, 14, 29, 58,136,127,248,225, 7, 93,135, 14, 29,162,171, + 85,171,150,205, 48, 12,130,130,130, 60,139,179, 84, 25, 33,149, 74,117,195,134, 13,139,124,252,248,113,169, 70, 29,150,132,114, +229,202,129,101, 89,180,108,217, 18,185,185,185,156,101,139, 3,135,143, 16, 5,227,104, 21, 27, 25, 94,167,215,141, 27, 53,113, +193, 58,128, 88,153,180, 2,127, 26,150, 40,200,148, 41, 95,203, 1, 72,141, 98,107,210,164, 73,105, 37,101,194, 68,100,125,210, +175, 95, 63,204,156, 57, 19, 43, 87,174, 52, 44, 95,190,156,247,236, 69,152,118,240,151,243,210, 11,156, 7, 20, 52,155,213,177, +227, 10,227, 75,203, 80,206,107,218, 97,233,130,152,132,156,171,131,199,204,201,111,189, 12, 0, 50,137,155, 1, 0, 54,254,244, +147, 82, 32,182,150,247,236, 51, 0, 0, 90,175, 91,189,236,240, 34,252, 92,178,216,162,196,127,220,164,105,118, 70,145,181,254, +135,197,143,109, 72,194,218,241, 95, 7,235, 76,207, 3, 0,246, 10, 28,110,218, 97,105,219,196, 84,229,143,220,173,246,207, 64, +163,209,156, 91,179,102, 77,249, 57,115,230,136, 82, 83, 83,145,156,156,140,180,180,180,252, 37, 59, 59, 27,174,174,174,248,253, +247,223,181,153,153,153, 55, 63,166,178,191,126,253,122,253,209,163, 71,113,233,210,165,222, 51,102,204, 16,184,186,186, 18, 27, +155, 4,162,211,106, 0, 80,154,148,148,196,202,172,108,227, 28, 93, 60, 35, 99,227, 19,253,117, 90, 13, 88,131,182, 72,111,243, +188,240, 14, 83,158, 60,121, 82,126,197,138, 21, 26,211,145,128,125,166,173, 91, 83,167, 78, 29,251,181,107,215,106, 58,118,236, + 24, 97,116, 94, 55,199, 25,254,204, 43, 76,124,242,228, 81, 64, 65,206, 22, 35, 87,108, 53,114,154,142, 70,236,244,245,166,173, +149, 43, 87,182, 15, 12, 12,140, 40,142,183, 66,133, 10, 42, 55, 55, 55,141,159,159, 95,182, 64, 32,120, 99,201,210,233,114, 42, + 84,168,192,186,184,184,104,170, 86,173,154,109,169,211,190, 84, 42,165, 70,171, 88, 97,176,100,212,161,128, 7,125,191,126,253, +242, 35,195, 79,169, 92, 57,110,192,128, 1,110,147, 39, 79,198,214,173, 91,113,237,218,181,212,130,199, 52,111,222, 28,151, 47, + 95, 94, 0, 96, 30,247,116,115,224,240,225,161,196, 56, 90, 5,177,109,219,206, 63, 96,226,211, 84, 24, 22, 45, 90, 36,206,179, +100,181,254,234,171,175,160, 82,169,236, 10, 81,119,173,140,177, 54, 10, 19, 89,203,150, 45,219, 67, 41,245, 4,208,196, 96, 96, +111,109,249,121, 91, 75, 51, 20, 99, 62, 39, 37, 12,143, 97, 72,182, 72, 64,239,255,180,121,235, 91, 17,191,243,156,223,125, 65, +240,112,221,234,101, 42, 0,173, 11,138,173, 30, 61,122,228, 20,228, 52, 98,244,152,209,249, 34,107,221,234,101,103, 3, 63,241, +250, 98,206,240,111, 11, 21,103,223,206, 27, 37,103, 24,210,200,212, 71,171, 48,206,119,160,150, 57,206, 60,136,197,226, 61,123, +247,238,109,223,180,105, 83,239, 26, 53,106, 48,169,169,169,200,206,206, 70,118,118,182,209,234,133,167, 79,159,178, 17, 17, 17, + 49, 98,177,120,239,199, 84,246,188,105,117,214,184,185,185,157,155, 59,119,238,128,228,228,228, 14,105,105,233, 14,199,183,125, +139,118, 61,199,144,230,237,251, 42, 53,148, 47,137,142, 75,240,187,120,114,183,253,169,125,235,161,213,104, 70, 17,242, 83,136, + 49,188, 67, 33,249,204, 49,134,113,240,243,243, 83,154, 10, 21, 47, 47,175, 92,119,119,119,117, 96, 96, 96,126,122, 97,163,249, + 10, 43,187,165,156,121,254, 95,202,146,234,211, 40,218, 10,134,141,144,201,100, 48,138, 47, 75,242,105, 58,218,178,208,134,178, +132, 81,135,166,156,219,239, 81,129,233,182,237,132,240,118,238,220,217,106,231,206,157,159, 0,184, 15,224, 12, 0, 93,222,113, +249, 78,243,148,210,249, 0,230,115,207, 59,199,249, 95,229,252,192,173, 89,205,145,231,155,149,135, 22,148,210, 75, 69, 10,173, +146, 96,116,124, 7,192, 76,154, 52, 41, 77,165, 82,217, 13, 24, 48,160,216, 99,226,227,227,183,238,216,177,227, 45,145,213,173, + 91,183, 33, 7, 15, 30, 60,151,152,152, 88,170,130,217, 89, 75, 23, 93, 58, 54,221,174,121,199,165, 95, 1, 88, 94,184,204, 4, + 27,248,137,219, 23,235, 86, 47, 59, 92, 64,108,253, 10,160, 91, 97,245, 5, 0,109, 62,239,130,221,219,214, 25,125,187,164,143, +239,198,156,234,125,111, 97,161,163, 21,109,173,196, 11,243,242, 49, 25,156,143,214, 63, 2,127,127,127,195,245,235,215, 39,143, + 25, 51,102,213,103,159,125,230,209,165, 75, 23, 97,185,114,229, 32, 22,139,241,234,213, 43, 92,185,114, 69,251,250,245,235,152, +156,156,156,201, 53,106,212, 48,124,140,117, 16, 23, 23,247, 44, 47, 24,233, 68,227,215,148, 88, 34, 21,246, 29,250,149,103,254, +168,195,125,235,161,206, 85, 1, 0,159, 16,178,156, 16,242, 75, 17, 14,241,111, 4, 5,159, 47,124,240,224,129,183,209,106,165, +213,106,197,198,244,187,119,239,122, 27, 99,107,229,230,230,154, 61,234,240,239,226,124,244,232,145,167,113,116,164,113,116, 33, +159,207, 23, 6, 5, 5,121, 26, 57,213,106,181, 89,163, 14, 69, 34,145,240,193,131, 7,158, 6,131,225,157,141, 58, 44, 32,140, + 79,231, 45,198, 70,217, 40,178,140, 62, 29, 92,183, 33, 7, 14, 31, 54, 46, 22,156, 84,218,168, 39, 74, 37,180,140,142,239, 22, + 40, 61,126,249,242,229,219,244,233,211,231, 45,145,213,163, 71, 15,195,161, 67,135, 46,186,185,185, 37, 48, 12,243,204,210,124, +228,251,104, 1,130,130,219, 24,134,121,216,164,110, 85, 48, 12,243,112,206,240,225,234, 69,248,249, 45,177,117,228,240,254,182, + 69,181,139, 0,224,224,236,129,126, 67,198,161,223,144,113,118, 0, 26, 3, 69,143, 86, 44, 46, 31, 28,254, 62, 52,106,212, 40, + 46, 36, 36,164,223,217,179,103,251, 94,190,124,185, 85, 78, 78, 78,121, 66, 8,164, 82,105,184, 70,163, 57, 39, 22,139,247,124, +172, 34,171, 40,104,181, 90,253,140, 5, 43,118,240,248, 66, 61,203,106,137, 86,171, 29,106,201,115, 62, 99,198, 12, 6,133,248, + 94,141, 31, 63,190,208,244,247,197, 57,107,214,172, 66, 71, 9,142, 31, 63,190,216,209,131, 69,225,235,175,191,126,103,163, 14, +205, 20, 95,156,160,226,192,225,227,179,106, 21,234, 11, 92, 42,161,197, 48,204,195, 66, 70, 23, 18, 0,180,176, 17,125,148, 82, + 61,143,199, 91, 96,107,107, 59, 74,169, 84,254,222,173, 91,183, 73, 61,122,244, 48, 0,111, 28,228, 75, 91,168,180, 12,229,188, + 22,157,190,159,156,158,173, 94, 91,112, 91, 65,203,147, 81,108,173,255,113,217,134,195, 7,247,246,136,143,141,222, 80, 84,217, +138, 18, 84, 69,141, 86,204,200, 84, 45,104,209,233,251,175,210, 50, 85,156,143,214,123,176,108, 1,216, 9, 96,103,193, 73,165, +255, 11,160,148,170, 9, 33, 83, 9, 33, 70,139,238,212,215, 23,126,220,240,231,131,191,230,145,233,182, 98,172, 89,113,230, 76, + 16, 93,216,113,197,109,251, 27, 56, 19,138,153, 32,186, 56, 36, 88,200,151, 0, 0, 66, 1, 47,177,168,201,163,133, 2, 94,226, + 59,186,134,198, 0,135, 11,184, 39,154, 3,135, 15,182, 45,182,204, 71,203, 40,130,138, 66, 81,113,178,138,131,193, 96,248, 30, +192,247,239,178, 96,143, 95,100,109, 6,176,217,220,253,243,124,178, 6,229, 45,133,231, 51,229,137,197,101,235,209,163,199, 70, + 0, 27,185, 91,237,159,193,129, 3, 7, 12, 92, 45,188,245,128,111, 32,132,252, 98, 20, 94,230,110, 43,176,223,209,191, 33, 95, +127, 7,231,233,127,146,239,120,136,222,229,125, 55,210, 28, 56,112,248,247,163, 48,107, 86,177,163, 14, 57,112,224,240,193,137, + 45,117,105,182,113,224,192,129, 3,135,119,247,177, 84,152,175, 37, 1,208,170,136,131,204, 30, 77, 64, 8,105, 85,138, 76,157, +227, 56, 57, 78,142,147,227,228, 56, 57, 78,142,243,191,197, 89, 18,183,233,241,132,144,145,148,210,205,248, 0, 80,228,128, 22, + 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201,113,114,156, 28, 39,199, 89,202,243,140,252, 39,206,243, 14,242, 73, 11, + 46,198,109, 92,215, 33,135,191, 29,158,158,158, 96, 89, 22, 12,195, 32, 58, 58,154,171, 16, 14, 28, 56,112,224,240, 81,193, 98, +103,120, 14,133,152, 4,189,187,206, 1,139, 89,111,254, 96, 25,141,252,109,254,127,162,220,132, 56, 2,232,168,144, 8, 59, 7, +216, 10, 27, 62, 78,201,189,174,212, 26,142, 1, 56, 66, 41, 77, 51,135,131,101, 89, 28, 59,118, 12,157, 58,117, 50,114, 2, 0, +220,220,220,112,236,216,177,252,253,234,212,169,147, 31,188,145, 3, 7, 14,127,243,179,109, 23, 80, 14,132, 12, 5,232,159,195, + 46, 89, 26, 76,211,159,110,123,107, 63,219,170, 67,192,144, 0,147, 36, 21, 40,182,208,180,224,168, 34,218, 12,227, 11,199, 54, + 52, 52,212,187, 82,165, 74, 17, 0,210, 11,236,246,151,109,180,152,135,159, 16, 66, 28, 43,212, 30, 40,147,200,190,212,104, 52, + 62, 86, 10, 69, 98,106, 74,210,198,212,200, 71,235, 77,118,179,190,117,235,150, 91,253,250,245, 99, 1,100,149,196,201,129,195, + 59,126, 87, 54,199,219, 1, 75,223,157, 51, 60,169,210,221, 7,122,102, 16, 40,250,131,224, 1,125,125,160,123,169,120, 42,117, +243, 0,203,175, 7,160, 54, 64,107,203,165,146, 90, 42,141, 54,145,165,116, 32, 13,221,119,223, 98,190, 10, 61, 79, 0,104, 95, +196,214, 5,244,245,126,203,132, 18, 75,103,223,185,124, 72,108, 43, 35,168, 84,167,219, 52,152, 68,112, 46,195,133,145, 2, 24, + 76, 8,249, 76, 38,147, 85,201,201,201, 9,167,148, 62, 2,176,129, 82, 26, 91, 74, 78, 6,192, 48, 43,185,188,157,183, 66, 84, + 59, 50, 57, 35, 38, 75,103,184, 2, 96,185,185,194,200,132, 75,228,109, 39,191,180,186, 79, 11,255,134, 1,149,193, 6, 95, 70, +174, 70,219,249, 98,116,118,231,121, 55, 98, 39, 19, 66,106, 83, 74, 53,230,242, 49, 12, 51,194,221,221,221,199,195,195, 35,108, + 93,231,154, 91,198, 29,125,128, 46, 93,186, 0,192, 8,150,101,125, 60, 60, 60,194, 8, 33, 91,204,109, 27, 9, 33,110, 0,248, +148,210,168,188,255,114, 0,129, 0, 42, 0,120, 13,224, 9,165, 84, 89,198,107,244, 65,112,122,122,122,186,179, 44, 59,220,197, +197,165, 67, 66, 66,194, 9,134, 97,126,142,142,142,142,125,207,109,207, 38,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77, +200,205,205,117, 6, 0,137, 68,146,168, 82,169,254,182, 81,130,255,228,185,254,153, 55, 3, 70,156,185,250,164,157,105, 82,155, + 38, 1,133, 60,184, 36,224,204,213,224,102,111,239, 23,104, 40,172, 13,204,139,190,138, 5, 11, 22,144,133, 11, 23, 14,169, 88, +177, 98,101,134, 97,158,207,157, 59,247,173,208, 55, 5,183,205,155, 55,239,207,200,173,133,112,122,250, 54, 58,210,187, 79,207, + 22, 99, 71, 14,182,242,112,178, 66, 92,178,210,225,167,173, 59, 87,236,220,185,187,227,240,222,173,219, 1,192,183,223,126,219, +181, 92,185,114,229,121, 60, 94,216, 55,223,124,243,107,113,156, 28, 56,252, 13,176,108, 82,233, 18,159,207,128,158,114,228,210, + 30, 0, 25,220,188, 97,157, 38,163, 6,118, 34,148, 39, 65,223, 17,211,245, 22,115,149, 31, 34, 6, 79,181,168,122, 96,192,164, +158,157, 90, 49,159, 4,150,135,155,147, 13,192, 8,176,233,100,184,195,218,101,223,108, 0, 80,191, 20,217,108,255,234,198, 30, +196,165, 27, 64, 8, 64, 8,192, 16, 32, 59,151, 69,155,174,131,230, 89, 46,148, 8, 99, 43, 35,152,180, 39, 23, 0,120,239, 64, +100,213,118,114,114, 90, 63, 97,194, 4,187,234,213,171,187, 73, 36, 18,153, 74,165,170, 28, 26, 26,234, 51,103,206,156,214,132, +144,165,148,210, 67, 22,114,122, 85,242,116,223,191,118,210,176,122, 53, 42,120, 67,160,201, 6,171, 86,150,123, 17,250,178,225, +232, 13, 7, 70, 16, 66,250, 88, 56,101,194,236, 77,227, 7,250, 87, 83, 0,218, 39,215, 32,224,241, 32,179,177, 67,107, 62, 15, + 60,130,170,131, 78,135,207, 34,132,204, 43,169, 29,139,141,141, 53, 90,182,124,142, 29, 59, 22,208,169, 83, 39,212,243,241,196, +173, 78, 73,168,123, 36, 26, 0,242,211, 45, 40,235, 66, 0,179,242,218,225,221, 60, 30,239,108,171, 86,173,124,134, 15, 31, 78, +234,212,169,131,160,160,160, 10,123,246,236,105,197,231,243,195, 12, 6,195, 35, 0,207, 41,165, 58, 51,185, 5, 0,124,121, 60, + 94,245,127, 51,167,187,187,187, 84,163,209, 12,242,244,244, 28,217,185,115,231,234,157, 58,117, 34,190,190,190,120,246,236, 89, +157, 83,167, 78,205,171, 89,179,230,163,232,232,232,205, 34,145,104, 71,108,108,172,234, 61,124,225,141, 4,224,158,103,224, 88, + 96,198, 58, 22,192, 2, 74,105,156,185,231,200,205,205,117, 54,222,127,132, 16,231,191,179, 60,150,156,139, 16,242,148, 16, 98, +159,247, 27,197,173, 25,134,129, 94,175, 87,234,245,250,138, 37,112,250, 2, 96, 44,200, 50,165,148, 22, 23, 8, 90, 10, 0,109, + 26, 7,164,130, 32,216,104,209, 42,228, 35, 51, 56, 95,128, 81, 4,156,185, 22,108,255,150, 21,172, 0, 22, 44, 88, 64,230,205, +155,135,249,243,231,119, 2,208,148,101,217, 43,254,254,254,107,222,162,100,217,252,109,243,230,205,251,113,193,130, 5, 4, 64, +161, 13,137,125,249,154, 3,190,248,162, 75,139,197,179,199, 91,197,164,104,241, 32, 76, 5,123, 43, 33,230, 77, 29, 35, 82,171, +117, 13, 55,252,186,115,228,186,165,211,183, 24, 12,134, 79, 1,124, 98, 48, 24,238, 2,248,181, 56, 78, 14, 28,254, 6,180,176, +104, 82,233,162, 76,183,168,216,189, 25, 12, 24,236, 93,206,165,199,132,225,189,164,129,254,149,144, 11, 43,132, 39, 27,112,242, +248, 41, 0,216,103,153,213,169,247, 39,124, 33,118, 44,155, 63,213,175,105,189, 64, 60,142,209,225,110,140, 1, 57, 97, 58,240, + 24, 29, 12, 44, 5, 40,114, 75, 91,234,232, 52, 61,174, 62,215,128, 33, 0,143, 1, 24,134,128,199,148,146,140,213,188,248,118, +219,189,192,228, 4, 22, 96, 53, 47,202,248, 2,250,180, 74,149, 42,171, 23, 46, 92,232,154,144,144, 96,127,247,238, 93,136,197, + 98,216,217,217,241,221,221,221,253, 86,175, 94,157, 49,126,252,248,169,132,144,251,148,210,112, 51, 57,253,219,127, 82,253,250, +230,101,223,218,232,110,157, 66,250,222,255,129,199, 80, 8,229, 86,240,145, 74,113,234,139, 74,246, 61,142,135, 29, 34,132,248, + 83, 74, 99,204,225,172,228,234,208,166,186,191, 63,210, 14,175,195,131,180, 92,156,138, 85, 97,104,235, 6,168,102, 47, 69, 83, +189, 1,174,114,193,167,229,228,162,121,166,243,181,153,139,244, 59, 23,240, 32,237,175,151,214, 85, 46, 48,167,172,118, 0,166, +107, 52, 26, 70, 40, 20, 18,137, 68, 50, 96,241,226,197,218,190,125,251,230, 59,128, 53,109,218, 20, 77,155, 54, 37, 89, 89, 89, + 21, 46, 92,184, 80, 97,231,206,157,122, 66,200, 83, 74,233,145,162, 45, 22,178,200,220, 92, 85, 57,137, 84,154,243,211,134, 13, + 43,155, 53,107,198,138,197,127,206, 10, 83, 26, 78, 0,176,181,181,221, 82,165, 74, 21, 50,115,230,204,216,119,197,233,227,227, +115,166,105,211,166, 45,219,180,105,195,111,220,184, 49,220,221,221,243,183, 57, 58, 58,162,105,211,166, 36, 42, 42,170,198,149, + 43, 87, 54,156, 57,115,102,141,143,143,207,133,176,176,176, 54,255,100,171,147,103,169,130, 5,194,105,115, 33,129,144, 63, 76, + 99, 17, 33, 86,155, 54,109,114, 54,206,201,168,211,233, 96, 48, 24,242,215,198,133,101, 89, 24, 12, 6, 44, 94,188,216, 96,102, +157, 42,145, 23, 28,218,100, 97, 11, 91,139, 68, 34, 71, 51, 45, 91,193,110,226,244,170,114,185,220, 27, 64,251, 42, 85,170, 76, + 55,221, 92,217,233,205, 90,169, 84, 70,196,169,109,131, 1, 52, 43,238,118, 95,184,112,225,160,249,243,231,119,193,159,115, 86, + 86,239,217,179,231,133, 2,251, 85,207, 91, 43, 9, 33, 23, 25,134, 57, 6, 96, 27,128,191, 88,221,101, 50,171, 81, 19,190, 28, +110, 21,157,172,197,162, 67,201,216,118, 57, 19,131,154, 42, 48,233,115, 27,244,235,219, 91,126,224,127, 7, 71, 1,216, 98,114, +200, 51,127,127,127, 18, 18, 18,194,137,172,143, 11,117, 1, 56,153,252,215, 0, 48, 78,153,149,156,247, 92, 56, 20, 72, 55,221, +207,184, 78,202, 75,119,202, 59,142,154,240, 38, 1,184, 83,202,246,238, 82, 94, 30,254, 2, 62, 0,156, 56,113,130,118,232,208, +129, 24,215,133,183,236, 61, 78, 14,235,219,185, 93,135,207, 26,129,145,216,225, 69, 34,112, 35,146,130,207,232,192,128,226,214, +181, 11, 20,124,118, 71,129, 19, 23,105, 61, 33, 62, 61,190,174, 94, 45,240,251,159,151, 77,228, 61, 77,228, 99,219,149, 28,104, +115,179,145, 20, 31,137,196,216, 8,196, 69,191, 70, 76,228,235, 71, 0,153,103, 46,231, 95, 11, 14, 24,216,188,111, 64, 22,121, +245, 89,232,200,203,146, 57,181,202,144, 10,190,129,129,105, 34, 3,160, 85,134,152, 81,233,231,138,104,128, 91, 87,170, 84,105, +249,236,217,179, 61,159, 60,121, 98,173, 84, 42,149,167, 78,157,186, 20, 17, 17,225,226,234,234, 26, 53,102,204,152, 70, 30, 30, + 30,206, 93,187,118,149,237,223,191,127, 54,128,225,102,112, 6,118,110, 80,235,198,214, 53, 63,200, 83, 14,172,133, 38,244, 33, + 78,198, 41,113, 45, 33,135, 86,176, 17,147,113, 53,156, 96, 37,230,227,219,198,238, 86,237, 15,135,126, 15,160,159, 25,156,232, + 90,175, 90, 69,157, 42, 7,185, 42, 29,118, 60, 75, 85,157,141, 81, 58, 19,219,240,164, 53, 61, 26, 72,120, 73,177,240, 86,136, + 42, 47,104,232,142,246,135, 67,139, 44,187,167,167,231, 8,150,101,125,242,254,150, 55,174, 63,187,154,181,196,228,144,252,116, +162,112, 92,226,238,238, 14,134, 97,194,162,163,163,183,152,123,141, 36,146,194,103, 79,177,179,179, 67,243,230,205,225,239,239, +207,111,214,172, 89,117, 0, 71,138,226,212,106, 53,110, 44, 75,161, 80, 40,164, 14, 14, 14,118, 10,133, 34, 69,171,213,150,137, + 19, 0,236,237,237,187, 55,111,222,156,191,103,207,158,228,176,176,176, 91,125,251,246,125,109,109,109,253,150,245, 87, 46,151, +163,114,229,202,248,230,155,111,248,237,218,181, 43,145,211,197,197,165,245,206,157, 59, 65, 8,201,127,105, 23,132,183,183, 55, + 92, 93, 93,209,190,125,123,126,247,238,221, 91,151,246, 57,178,160,161, 57, 87,136, 69,107,193,219, 98,182,232,238,183,194,246, + 55,227,186, 39, 26,173, 75, 18,137, 36,177, 52,249, 44,128, 34,187, 59,197, 98,113,190, 21,170,224,185, 10,227,100, 24, 6,115, +230,204, 1, 33, 4, 2,129, 0, 66,161,176,208,117,139, 22, 45, 44,205,103, 20, 33,132, 17, 10,133,211,249,124,254,112,181, 90, +237, 41,145, 72, 98, 13, 6,195,118,181, 90,189, 56,207, 34,106, 91,216,189, 91, 20,167, 92, 46,247,126,241,226, 69,149,162, 42, + 69,173, 86,163,122,245,234,128, 26, 79,139,227, 12, 13, 13,245,174, 88,177,162, 47, 0,227, 20,109,151, 41,165,205, 76,254,155, +226, 50,165,244,243,188,223,207, 95,189,122,229,109, 20, 90,166,156, 58,173,214,199,211,217, 26, 15,194, 85,216,118, 57, 19,127, +204,118,199,103,139, 99,209,173, 54, 31,254, 94, 86,208,107,117,190, 61,123,246,220, 1,192, 55,239, 37,217,181,103,207,158,126, + 60, 30,239, 60,128,223, 0,100,252, 83,247, 60,199, 89, 54,148,160, 69,156, 8, 33,199, 77,206,223,209,248,127,198,140, 25,179, +150, 44, 89,242,132, 16,114,220, 52,221,116, 63,211,117, 94,123,115,156, 82,218,113,230,204,153,129, 75,151, 46,253,206,184,239, +223,161, 16, 45,233, 58,180, 78,202,149,227, 74,164, 53,248, 60, 3,248, 12, 1,159, 7,128, 18, 68,132,135, 34, 43, 51,253, 42, +125,253,191, 48,243, 44, 89, 61, 27,215,172, 85,125,217,238,213,211,152, 95,174,228, 32, 93,153,139,144,251, 23,113,231,226,111, +241, 6,189,225, 55, 16,122, 23, 96,130,240,154,125, 70,105,233,163,128,191, 17, 90,121,226,234, 45,177,245,222,190,114, 63,247, +243,243, 91, 50,103,206, 28,239,251,247,239, 43, 50, 51, 51,147,118,237,218,245, 76,173, 86,223, 7,240, 99,100,100,100,243, 31, +127,252, 81,182, 98,197,138, 54,213,171, 87,247, 61,112,224, 64,142, 25,156, 53,166, 14,238,119, 99,248,132,175, 36, 79,247,175, +135,232,105, 16,230, 60, 76, 54,252, 17,151, 51, 27,192,106, 68,101, 55, 78,202,213,159,253,161,121, 57,166,188, 66,136, 74,182, +162, 22,102,112, 98,234,224,126,136, 13, 11,229, 83,190, 4, 26,141, 30, 89, 26, 86, 3, 64,169,214,233,181, 84,238, 40, 1, 0, + 62, 67,248,121,156, 69, 27, 2,243,186, 11, 77,211,142, 29, 59, 38, 3,240, 23,103, 16,211,244,226,186, 17, 41,165,105,132,144, +239, 69, 34,209, 28, 66, 8,173, 91,183,238,131,106,213,170,101,219,217,217, 65,165, 82, 65,173, 86, 67, 40, 20, 66,165, 82, 33, + 34, 34, 2,183,110,221,130,157,157,157, 69,215, 42, 59, 59, 27, 10,133, 2, 44,203,150,153,211, 96, 48,144,141, 27, 55,202,159, + 60,121, 34, 63,120,240,160,203,164, 73,147, 82,170, 86,173,122,183,119,239,222, 47,157,157,157,213, 15, 31, 62,196,245,235,215, +145,150,150,134, 6, 13, 26,152,197,169,209,104,192,231,243,161, 82,169, 32, 22,139,193,231,243,161,215,235,193,178,108,190,248, +202,206,206, 70,106,106, 42,132, 66, 33, 52, 26,205, 63,126,191, 27, 45, 90,166, 40,174,251,173,176,253, 75,194,187,246,147, 42, +174,187, 51, 61, 61, 93,106,107,107, 59,221, 28, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16, 52,107,214, 12,195,134, 13, 67, +237,218,181, 17, 26, 26,138,189,123,247,226,206,157, 59, 16, 8, 4,249,251,155,221, 63,209,162, 5, 79, 34,145, 92,239,220,185, +115,224,236,217,179, 37,229,203,151,199,211,167, 79,189,150, 46, 93, 58,253,220,185,115, 93, 8, 33,159, 80, 74,217,146,173,244, +121, 93,130,111,186, 11,219,171,213,106, 60,125,250,212,146, 99,254,106, 5,175, 84, 41,130, 97,152,151, 44,203, 94, 1, 80,157, + 82,218,140, 16,114, 10,128,188,192,174, 74, 74,233,231,132,144, 76, 0,143, 24,134,121,206,178,108, 68, 97,150,113,133, 66,145, + 20,157,152,233,226, 96, 37,193,192, 38, 86,248,108,113, 44,122,124, 34,134, 88, 72,240, 44, 44, 30,149, 42,150, 39, 15,174, 30, +249, 36, 79,100,213,141,139,139, 3,128, 79, 0,132, 69, 69, 69,185, 25,133, 22,135,143, 3, 5,197,144, 81, 64, 45, 89,178,164, + 99, 97,226,170,144,103,243,173,244,165, 75,151,126,103,242, 63,173, 12,109, 71,115,188,237, 12,223, 34,207,202,245,167,208, 58, +113,226, 68,241, 10,132, 69,183,227,135,246,220,252, 76, 75,188, 3,235, 52, 49,177, 14, 81, 4,221,186, 14,128,110, 55, 43, 51, +238,157,164,140, 76,190,125,227,119,227,153, 77, 23,115, 16, 21,155,136,235, 39,183, 35, 41, 46,124, 27, 64, 39,209,215, 7, 50, +203,220, 88, 86,232, 25,232,236,232,128, 92, 45, 5, 75, 1,252, 69,108,189, 23,145,213,201,215,215,119,225,141, 27, 55,188,115, +115,115, 21,215,174, 93, 75,223,185,115,231, 75,141, 70,243, 51,165,116, 87,222, 62, 71,147,147,147,191,165,148, 66,161, 80,240, + 5, 2,129,180, 56,103, 78, 66, 72,237,169,195, 7, 93,253,126,227, 86,201,203,199, 15,240,227,193,147, 72,207,201, 49, 92, 76, + 84,117,165,148, 30,207,219,231,252,189,100, 85, 12, 5, 45, 39, 96, 8,220,228, 2, 87, 66,136,132, 82,154, 91,164,200, 26, 62, + 8,223,111,220,138,105,131,251, 50, 58, 47, 31, 92,209,231,194,195, 65, 44,162, 73, 57,152, 49,168, 39,239,190, 74,135,107, 15, +159,194,209,202, 90,152,199,137,162,186, 15, 25,134, 9, 51, 17, 77,229,143, 29, 59, 38,235,212,169, 83, 14, 0,211, 46,209,191, +164, 51, 12, 19, 86,194,195, 54,151, 16,226,178, 99,199, 14, 70,167,211,101,135,134,134,194,213,213, 21, 46, 46, 46,176,177,177, + 65, 72, 72, 8,254,248,227, 15, 60,123,246, 12, 44,203,162,102,205,154, 22, 93,175,148,148, 20, 60,124,248, 16,237,219,119,152, +148,148,148,104,109,103,239,160,188,122,229,242,138,210,112,178, 44, 75, 0, 32, 48, 48, 16,129,129,129,146,152,152, 24,207,227, +199,143, 59, 47, 90,180, 40,210,219,219,123,183, 74,165,122,203,114, 96,174,208,202, 19, 46,249, 34, 80, 34,145, 64, 40, 20, 34, + 51, 51, 19, 9, 9, 9,200,202,202,122,211,151, 99,107,251, 94,132, 86, 97, 22,170,119,185,255,223, 41, 14, 11, 19, 83,132,144, +254, 0,166,155, 89, 22,232,245,122, 8,133, 66,212,175, 95, 31,107,215,174,197,157, 59,119,240,219,111,191,193,203,203, 11,131, + 7, 15, 6,195, 48,120,242,228,137,165, 89,100,111,220,184, 49,189,107,215,174,129, 59,118,236,144, 68, 68, 68,224,217,179,103, +176,181,181,197,218,181,107,197, 35, 71,142,172,116,225,194,133,185, 0,150,151, 88, 86,147,209,133,238,238,238,189,170, 87,175, +254,151,125, 92, 93, 93,109, 78,159, 62,237,108, 20, 96, 5, 71, 36, 22,130,244,185,115,231,254,224,239,239,191, 58,175,187,176, + 41, 0, 57,165,180,197,193,131, 7, 9, 0,244,232,209,131, 18, 66,140, 47,164, 71, 7, 14, 28,104, 25, 18, 18, 66,231,207,159, + 95,104, 59,151,148, 24,183,241,135,181,155,126,248,126,193, 84,209,228,246, 54,232,241,137, 0, 18, 33,129,181, 76,128,197,107, +182,232,238,221,186,252,208,205,205,237, 56,128,174,113,113,113,112,115,115,203, 6,240,156,199,227,133, 25, 12,134, 88,206, 23, +254,195, 66, 97, 90, 36,207,170, 28, 87,152, 80, 42,141, 80, 51,181,120, 25, 49,115,230,204,192, 37, 75,150,220, 46,139,200, 50, +117,130, 39,132, 80, 66, 72, 11, 74,233,165,124,143,165, 34,187, 12,243,109, 95,140,155,171,139,163,253,140,193,141,193,178,128, +222, 0,232, 13, 20,202, 28, 21,158, 62,190,147, 3, 9, 57,104, 86,142,196,162,101,139,102,127, 85,225, 65, 52,131,216, 52, 45, + 46, 29,217, 68,147,226,194,187,211,215,251,135,190, 43,145,229,234,236,120,113,207,166,111,113,231,181, 6, 6,246,141,206, 98, + 89,154,255,251, 61,188,112, 42, 59, 58, 58,174,184,121,243,102,121,177, 88,172,120,241,226,133,225,192,129, 3,177, 26,141,102, +131, 81,100,229,161,127,157, 58,117,116,114,185, 28,217,217,217,106,173, 86,155, 93,140,200,242,108, 81,187,198,229,239, 55,110, +149,228,106, 52,200, 80,169,193,115,112,126, 75,100,229,161, 81,203, 42, 30, 30, 68,162, 0, 5, 16,158,169,141, 45, 78,100,181, +168, 93, 3,223,111,220,138, 92,141, 6, 86, 54,182,140,231, 39, 45,240,201,196,181,200, 36, 10, 10, 0, 14,110, 30, 76,203, 47, + 23,163,221,143,151,160,100, 20,108, 30,103,145, 62, 90,209,209,209, 91, 98, 99, 99,103,198,198,198,206, 52, 17, 87,225, 0,102, + 86,181, 17,254, 37, 61,192, 86, 52, 51, 54, 54,118, 38,203,178, 91,204,168,218,216,126,253,250, 69, 7, 4, 4,100,248,251,251, +103,164,164,164, 32, 56, 56, 24,105,105,105,248,241,199, 31,241,244,233, 83,176,236, 27,101, 93, 88, 55,138, 25, 2, 9,105,105, +169, 86,148, 82,164,165,166,200,103,207,158,109, 83, 26, 78,131,193,240,214,179,229,225,225,129, 49, 99,198, 8,115,114,114,108, + 35, 35, 35,173, 77,183,153,203,169,209,104,242,235,156, 82, 10,141, 70,131,140,140, 12,104, 52, 26,188,124,249, 50, 95,100,229, +157,255,189, 89,180,140,191,165, 82,105,130,209, 65, 84, 34,145,128, 16, 82, 88,247,219, 59,137,254,108, 60, 23, 33,132, 74,165, +210,132, 82,136,195, 18,203, 99,230,117,135, 80, 40,196,176, 97,195,112,251,246,109,132,134,134,130,199,227, 65,169, 84, 34, 39, + 39, 7,173, 91,183,134, 72, 36,178,212,162, 69,133, 66, 97,255, 89,179,102, 73,194,194,194,144,156,156,108,116,166,135,193, 96, +192,164, 73,147,164, 98,177,184,191,165,166,251,216,216,216,182, 47, 94,188,240, 45,184,196,199,199,103,152,250, 20,150, 22, 7, + 15, 30, 36, 61,122,244,160, 61,122,244,160, 70,193,101, 46,210,163,131, 55,254,118,244,248,217,175,191, 89,150,157,163,204, 66, + 69,119, 41,178,179, 50,176,120,201,247,186, 27, 55,174, 92,156, 62,105,116,195, 3, 7, 14, 44, 5,240, 60,239,144,231, 7, 14, + 28, 24,244,205, 55,223,252,138,188, 48, 15, 28, 62, 28, 20,166, 69, 76,159,189,119,209,189, 87, 24, 71, 94,247,161,180,148,148, +198, 17,135,205,141,194, 43, 79,116, 93,124,203,162, 85,108,227, 83,169,119, 45, 23, 71,135, 11, 59,214, 45,176, 58,254, 24,136, +142, 10, 71, 82, 92, 4, 62,105,216, 2, 79, 31, 63, 0,171, 51, 28,162, 47, 14,148, 56, 60,157,248,244,172,226, 95, 53,224,203, +230, 13,171, 97,217,241,108,188, 8, 58,141,244,164,184,117, 52,108,255,161,119,113,129, 72,133,158,129, 46, 78,142, 23,127, 93, +191,208,254, 84, 48,131,168,168,112, 28,249,117, 53,116,218,191,232,138,147, 22, 55,222,172, 70,148,157,158, 0, 77,150, 1, 18, + 38, 71, 98,225, 69,125,233,228,228,180,227,135, 31,126, 24,221,176, 97, 67, 89,223,190,125, 95,164,165,165, 45,162,148,238, 55, +105,224, 63,245,245,245,157,178,110,221,186, 74, 81, 81, 81,248,227,143, 63, 94, 0,184, 91, 12,103, 52,143,199,219,240,199,175, + 91,166, 74, 43,248,225,199, 89, 95,235, 15,222, 9,238, 76, 41, 61,101,194,233,223,170,122,149,227,139,166,140,101,216,123,191, +227, 97, 68, 2, 94,103,168,255, 40,134, 19, 60, 30, 15,127,252,186, 5,210, 10,126, 8, 77, 87,234, 4, 98, 41,172, 92,203,227, + 69,182, 65,200,231,243,111, 15, 31, 62, 76,200,240,248, 96,248, 66, 4,167,229,234, 30, 38,241,240, 58,163,116, 83,233,189,200, + 54,128,207,231,195,217,249,207, 30,164,224, 52,139,198, 62, 88,221,190,125,155,225,241,120,111, 9,116, 83, 11,145,165,150, 34, + 75, 96, 46,103, 65,161,101,132, 94,175, 39,165,229, 84,171,213,133,138,219,194,124,181, 88,150,253, 91,202,111,137,133,202,180, +203,208,232, 79,151,155,155,235, 44,149, 74, 19,140,221,127,239,202,162, 85,150,145,136,197,117, 95, 90,146, 63,134, 97,192,178, + 44,132, 66, 33,106,214,172,137,227,199,143,195,222,222, 30,214,214,214,176,182,182,134, 84, 42,133,131,131, 67,190,208, 98, 24, +179, 71,233, 80,181, 90,237,229,229,229,133,151, 47, 95, 66, 34,145,228, 47, 98,177, 24,129,129,129, 80, 42,149, 30,239,207,118, +255,247, 96, 68,239, 86, 93,214,239, 60, 60,240,248,241, 19, 95,106,213,185,213,252,252,124,233,221, 27, 23, 30, 78,159, 52,186, + 29, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,180,124, 51,102,204,152, 85,152,133,171,180,130, 11,111,186,250, +140,107,228, 11, 45,163,130, 44, 76, 73, 26, 69,214,182,181,243,173, 15,223, 7,162,163,195,112,118,255,154, 44,157, 86,147,198, +178, 58,239,215,207, 30, 0, 12,182,155,149, 5,134,214,235,210,190, 37, 57,251, 68,131,204,244, 36, 60,191,123, 58, 28, 42,209, +204,119, 41,178,118,172, 95, 96,127,236, 49, 65, 84, 84, 56, 78,237, 93,157,161,211,107, 63,165,175, 15,220, 47, 11,247, 0,145, +168, 75,239,170,182, 29,135, 55,141,133,129, 24,208,255,105,200,231,238, 77, 73,151,216, 43,197,143, 12, 51, 69, 82, 82,210, 98, + 43, 43, 43,102,249,242,229, 67,115,115,115,231, 83, 74, 15,154,220, 56,173, 43, 86,172,184,108,227,198,141,158,145,145,145,162, +171, 87,175,166, 94,188,120,145, 2, 88, 82,194, 11,124, 26, 33,132, 87,187,188,199,248,123,225, 49,157, 41,165,191,155,112, 6, +118,172, 19,112,109,235,146,185, 10,221,181,131,200,142,139,194,204,107,209,153, 0,102,150,244, 21,158,247,162,177,119,116,116, + 36, 3, 6, 12, 96,179,178,178, 32, 20,137, 88,157, 78,199,107,212,168,145,225,171,175,190, 98,226,227,227,145,153,149,205,239, +122, 44,193, 30, 64,106,105,234, 85, 40, 18, 65,167,211,193,195,195, 35, 63, 45, 51, 43, 27,132, 16,184,185,185,149,244,176, 45, + 4, 48,169, 81,163, 70,164,126,253,250,183, 86,175, 94,125,166, 56,177, 82, 26,139, 86, 73, 48,151,147,101,217, 66,223,162, 58, +157,142,148,150,211,212,162, 85,146,208,122,159, 22,173,194, 68,139,169, 72, 52, 21, 66,165,241,209,250, 59,197,161, 37, 34,172, + 48,235,176,209,162,245,224,193, 3,148, 43, 87, 14, 90,173, 22, 10,133, 2, 10,133, 2, 86, 86, 86,200,202,202,130, 64, 32,128, +133,101,102, 37, 18, 73,100,112,112,176,175,147,147, 19, 12, 6,195, 91, 98,235,197,139, 23,144,203,229, 49,150, 90,180,220,221, +221, 79,231,141, 58,124, 11,174,174,174, 54,239,162, 94, 77, 45, 89, 61,122,244, 40, 85,191,194,250, 37, 83,119, 2,216,217,179, +103,207, 29,143,110,156,248,196,205,205,237,132,191,191, 63, 1, 0,110,132,225,199,101,205, 42,162,135, 45,169,128, 37, 74, 99, +242, 63, 9, 0,201,251,159,100, 34,196, 76,127,107, 10, 73, 75, 89,178,100,201, 5, 19,255,174,164, 50, 22,193, 24,226,225, 45, + 95,104,126, 73,150, 44,103, 7,251, 11, 63,255, 56,223,122,127, 16, 16, 19, 21,134, 75,135,214,102,232, 13,218, 79,193,210,184, + 27,231, 14, 29, 4, 65, 14, 94, 31,188, 4,236, 55,163,137, 64,237,218, 85,189,241,219, 19, 29,146,162, 95,128, 82,118, 27, 77, +248, 53,167,204,141, 99,158,200,218,182,118,190,253,225, 7, 4,209, 81, 97, 56,187,127, 77,134,222,160,253,180, 52,193, 78,141, + 24, 78,136, 29, 79, 46,217, 48,176, 77,221, 94,222, 21, 61,193, 82, 29, 88, 33, 69,183,105,142,252,231,247,114,126,243,106,195, +219,207,102,179, 95, 70,223, 48, 47, 16,104,118,118,246,183,132,144,195,148,210,167, 38, 13,242,231,149, 42, 85,250,238,167,159, +126, 42, 31, 19, 19,163,184,119,239, 94,230,230,205,155,195, 88,150, 93, 72, 41, 45,113, 20, 21,165,244,107, 66,200,207,166,241, +114, 8, 33, 53,166, 14,237,119,163,223,144,225,146,176,115, 59, 97, 23,246, 20, 83,174,197, 26,158,167,105,250, 82, 74,227,205, +200,170,189, 88, 44, 62,120,242,228,201,151,181,107,215, 38, 74,165, 18, 58,157, 14,201,201,201, 56,124,248,112, 48,165, 20,118, +118,118, 56,121,242, 36,219,175, 95,191,131,106,181,186, 71, 81, 98,171,168, 81,135, 0,150,168, 84, 42,163,200,202, 79,183,182, +182, 94, 98,109,109,109,244,209,218, 82,196, 75,204, 24,222,129,228,133,119,104,240,251,239,191,135,180,107,215, 46,186, 48,177, + 34, 22,139,145,155,107, 89,148,144,162, 70, 49,150,134,179, 40,139, 86,193,116, 75, 56,141,221,151, 70, 39,248,130,233, 70,240, +120, 60,176, 44,251,151,244,127, 90,180,152,142, 14, 44,141,200,121,203,186, 92, 66,224,208,210,140, 68,124,215, 22, 45,227,181, + 16, 10,133, 56,122,244, 40,134, 12, 25, 2,131,193, 0,153, 76, 6, 43, 43, 43,200,229,114, 28, 58,116, 8,198,240, 15,150,100, + 81,167,211,237, 90,178,100,201,172,141, 27, 55, 74, 41,165, 16,137, 68,249, 66,107,254,252,249, 42,173, 86,187,203, 28,161,149, + 31,241,157,165,193,149,157,138, 31,117, 88,216, 49, 69,248,107,217, 46, 92,184,112, 16,203,178, 93, 80, 32,132, 67,129,253,222, + 10,253, 80, 92,120, 7, 0,118, 11, 23, 46, 28,193,178,172,113, 0,205, 91,163, 11, 77,246, 51,190, 75,124,123,246,236,185,163, +224,168, 67, 14, 31, 60,238,252,139,243,214,194, 36, 80, 41,201,107, 47,242, 5, 23,191,104,145,213,211,223,217,193,241,194,150, +213,243,173,119,223, 6, 98,163, 94,227,250,209,117, 25, 6, 86,103, 42, 94,154, 88,216,242,214,118,119,182, 69,234, 77, 21, 50, +147, 35, 1,138,123,101, 23, 89,189, 43, 59, 59, 58, 92,220,186,102,190,253,129,251, 12, 98, 34,195,112, 49, 79, 12,150, 69,100, + 13, 16,137,186, 4, 86,241,220,218,231,243,198,118, 54, 68, 15,125, 68, 8,126, 30,220, 11, 65,157,180,104,220,219, 6,245,218, + 43, 80,169,150,164,215,201, 45,169,159,185, 55, 37,195,205,181,110, 21, 16, 89,157,202,151, 47,191,224,214,173, 91,222, 44,203, + 42, 46, 93,186,148,181,113,227,198,215,185,185,185,107, 40,165, 39, 44,120, 57,152,138,172,218, 51, 70, 14,190,250,221, 79, 63, + 75,130,131,238, 96,217,174, 99, 80,233, 52,134,211,209,217, 61, 77,187, 21,139,131, 72, 36,250,246,252,249,243,242,234,213,171, +147,148,148,148,124, 43,137, 86,171, 69, 70, 70, 6,178,178,178,160, 86,171, 81,167, 78, 29,102,205,154, 53,242,241,227,199,127, + 11,224,203, 34, 94, 54,239,124,212, 97, 97, 80, 40, 20, 16, 10,133,208,106,181,249, 22, 45,177, 88, 12, 27, 27, 27,164,164,164, + 96,223,190,125, 40,201,242, 38, 20,138,226, 24,134,148,147,202,100,106,137, 68,194, 22,102, 85,179,148, 51, 15,209,159,127,254, +185,231,194,133, 11, 37,117,234,212,249,139, 69,171, 52,156,148,210,156, 54,109,218,200,214,172, 89, 3,111,111,111,104, 52,154, +183, 4, 21,195, 48, 16, 10,133,136,138,138,194,162, 69,139, 64, 41,205,249,167, 91, 30, 83,209, 98, 42,134,242,124,168,254, 34, +132,204,181, 24,149,212, 53,104,233, 72, 68, 83,225, 38, 22,139,145,158,158, 46, 37,132,244, 47, 34,130,189,217, 22, 45,163,208, +122,250,244, 41,118,236,216,129,246,237,219,195,206,206, 14,105,105,105,216,191,127, 63, 66, 66, 66, 32, 18,137, 64, 8,177,196, +170,197,214,175, 95,255,251, 43, 87,174,116,234,219,183,111,192,148, 41, 83,164,213,170, 85,195,243,231,207,177,112,225,194,220, +160,160,160, 80,149, 74,181, 16,230, 4, 54,205,139,248,110, 12, 70,106,214,168,195, 2,199, 20, 68, 17,225, 29, 62, 47,130,205, + 52,244,195, 91,225, 29, 76,113,253,250,117,159,242,229,203,251,227,205, 72, 66,227, 11,215,116,116,225, 91, 47,227,184,184,184, +186,224, 70, 29,114,248,103,219,186, 75,132,144,252,128,165, 70,241,245,151, 81,135,127, 61,146, 76,234, 59,120,164,245,174,219, + 4, 81, 17,161,184,123,114, 67, 65,145,101, 78, 99,211,202, 52,214,134, 68, 42,175,198,146, 55,195,153, 51,147,163, 0,202,179, + 88,104, 21,228, 4,101,191,238, 59,104,164,253,158,187, 4,177, 81,175,112,237,200,122,139, 69,150, 41,231, 0,145,232, 27, 1, +143,204,233,208,172,182,176, 73,173, 42,144, 39,134, 35, 62, 58, 22,251,158, 38,165,134,166,169,135, 95, 35, 90, 68,188, 82,255, +220,126,132,189,189,157,171, 0, 29, 71, 59,216,223, 60,150,249,155,199,167,140,150,106,233,146,216,171,116,126,161,249,252,235, + 57, 43, 91, 91, 91, 47, 15, 10, 10,114,146, 72, 36,214,119,239,222, 53,108,218,180, 41, 42, 55, 55,119, 5,165,116,175, 89,101, +255,235,118,207,186, 85, 42, 94,250,110,253, 22, 73,182, 50, 7, 74,141, 22, 98, 23, 55,195,225, 27,143,187, 23, 21, 0,179, 32, + 39, 33,164,229,208,161, 67,107,212,175, 95,159, 49, 21, 89, 26,141, 6,153,153,153,200,202,202, 66,102,102, 38, 50, 51, 51, 17, + 19, 19,131,230,205,155, 51, 53,106,212,168, 70, 8,105, 73, 41,189, 80,144,243, 93,141, 58, 52,229, 52, 9,239, 48, 11, 0, 67, + 8,185,243,224,193,131,236,118,237,218, 65, 42,149, 66,169, 84,194,203,203, 11,122,189, 30, 39, 79,158, 68, 80, 80,144,146,101, +217, 75, 0, 30, 20, 87,118,149, 42,199,139, 16,194,168,114,114,106, 14, 26, 52,168,249,228,201,147,223, 26,146,238,236,236, 12, +123,123,123,139, 56, 1, 32, 53, 53,181,234,239,191,255,254,213,131, 7, 15,190,110,223,190,189,205,172, 89,179,196, 62, 62, 62, + 48, 24, 12, 76,105, 57,211,210,210,108,238,221,187,183,162, 73,147, 38, 99,219,181,107,199,255,238,187,239, 96, 99, 99, 3,131, +193, 0,169, 84,138,204,204, 76, 44, 92,184, 16, 87,175, 94,213, 83, 74,215,103,100,100, 76,177,228, 94, 42,165, 5,171,224,189, + 84,168, 5,168, 40, 33, 84,216,254,255, 68, 62, 11, 8, 55,216,218,218, 78, 7, 48,189,136, 8,246, 48,247,217, 52, 10, 45, 30, +143,135,240,240,112,108,218,180,233, 47,113,180,140,225, 31, 10,227, 46,162,236,244,226,197,139, 6, 66, 72,195,187,119,239, 78, + 31, 56,112,224,112,165, 82,233, 41,151,203, 99,117, 58,221,118,149, 74,101,140,163, 37,180,164, 13, 81, 42,149, 17,133,141, 58, + 44,184, 15, 96, 91, 44,103,129,240, 14,111,133,112, 40,112,216, 91,161, 31, 10,134,119, 48,229,108,212,168, 81, 24,195, 48,207, +242,186,224,159,161,192,232, 66, 19, 78,223,184,184,184,186,110,110,110,151, 0,200, 10,142, 58,252, 39,238, 37,142,243,191, 45, +182, 80, 92,192,210,194,143,130,228,220,173,112,136,164,169,120,248,199, 54,139, 69, 86, 97, 80,231,230,132,206,221, 19, 89, 75, +163,206,133, 50, 35,225, 57, 13,219,155, 88,246,171, 13,249,185, 59, 17,144,200,211,113,255,220, 47,233, 6, 67,238,167, 52,244, +127, 15, 74, 79,135,153, 63,157, 58, 40, 36, 54,246,120,248,213, 16,196,166, 43,113,234,117,218,126,154,163,254,114,103,222, 92, +129,158, 13,201,149,173,179,227, 55, 52,237,102,211,203,209, 67,128, 85, 83,183, 67, 50,195, 65, 88,239,179,102,102,207,129,104, +116,144,255,241,199, 31,199, 52,109,218,212,170, 87,175, 94, 47, 82, 83, 83,223,114,144, 47,197,133,142, 38,132,252,116, 98,227, +202,169, 14,213, 27, 96,221, 55,211, 12,123,110, 60, 46, 56, 10, 17,197, 91,117,132, 45,102,204,152, 33, 84, 42,149,127, 17, 89, + 5,133, 86,102,102, 38, 30, 62,124,136,193,131, 7,139, 31, 60,120,208, 2,192,133,191,152,114,162,163,183,136, 68, 34, 4, 7, + 7,163,121,243,230, 75,242, 44, 86,225,215,175, 95,159,105,228,232,211,167, 79,126,250,184,113,227,102, 86,172, 88, 17,169,169, +169, 37,149,117, 46, 33,100, 35,222,204,117, 24,191,115,231,206,134, 71,142, 28,105, 56,105,210, 36, 97,251,246,237,113,243,230, + 77,156, 61,123, 86,171,213,106,111, 0,184, 97,238,180, 54,121,241,135,238, 17, 66, 30, 47, 91,182,172, 33,143,199,155,107,220, + 22, 28, 28,140,109,219,182,149,134, 83, 15, 96, 5, 33,228,167,157, 59,119,206, 61,119,238,220,208, 65,131, 6, 89,235,116, 58, + 60,125,250, 20,191,252,242, 75,105, 57,191,114,114,114,154,115,242,228,201,237,103,206,156,233, 58, 96,192, 0,102,194,132, 9, + 88,187,118, 45,254,247,191,255,177, 6,131,225,136, 64, 32, 24,148,148,148,164,124, 79, 13,207,230,188,105,117, 54, 91, 48,231, + 97,137,188,101,233, 26, 52, 51,223,113,101,110,150,242,202,209,162, 69,139,124, 43, 35,165,244, 45,191, 58,163,192,178,180,235, + 16,128,109,222,125,186, 30,192, 90,188, 29, 21,158,135, 63, 35,199,155,203, 24, 16,167,182, 13,134, 26, 79,139,159, 84,218, 22, +160, 8, 40,129, 45,125,238,220,185, 63,204,155, 55,239,135,130, 33, 28, 76,119, 42, 24,250, 97,193,130, 5, 40, 42,188, 3,128, +180,185,115,231,126, 15, 0,254,254,254, 36,175,187,240, 19,228,141, 46, 52,225,220,145,151, 46,155, 63,127,254, 64, 0,197,113, +114,224,240,143,161, 24, 31, 45, 58, 43,248,202, 30, 29, 0, 7, 16,102, 38,125,181, 47,184,204, 13, 24, 75,103,156,223, 61,127, + 45, 40,210,168, 65, 63,253,157,148,128,229,205, 14,190,178,155, 5,136, 45, 8, 51,131,190,250, 95,153,243, 73,108,236,145,181, +112, 12,254,247, 36,150,198, 43,117, 95,236,212,104,222,178, 6,229,249,100,245,118,111, 74,246,217,185, 11, 14,127,245,169, 3, + 57,145, 58,208,226,243, 36, 37, 37,125,103,101,101,197, 91,177, 98,197, 80,149, 74,245,150,131,124, 25, 94, 18,211, 8, 33,188, +122,149,189,199,223,126, 25,209,197,220,238, 66,147,198, 95,228,238,238,254, 56, 55, 55, 23,132, 16,168,213,234,124,129,149,149, +149,133,140,140,140,252,255, 90,173, 22, 73, 73, 73,240,242,242, 2, 33, 68, 88,220, 75,199,116,138, 24, 0,111,113,154,194,148, +211,194, 23,226,101, 66, 72,208,194,133, 11,155, 45, 92,184,176,102,158, 85,232,114,105,187,204,242, 4,207,101,169, 84, 22, 75, + 8,241, 20,138,196,202,235,215,175,159, 43, 35,103, 78,158,165,100,213,170, 85,171, 22,203,229,242,186,193,193,193,127,148,133, + 51, 79, 68,117,119,112,112,112,223,177, 99,199,129,173, 91,183, 54,224,243,249, 55, 9, 33, 61,211,211,211,223,247,164,210,163, + 96,222, 28,135, 37, 90,140,204,177,136,149, 22,127,135,112, 51, 24, 12,217,115,230,204, 73, 44, 40,188, 10, 90,175,140,255,181, + 90,109,174,153,207,167, 37,163, 40, 75, 16, 25, 36, 27, 0,222,204, 93,248,102, 90, 29,115, 39,149, 6, 80,228,220,153,243,230, +205,163, 11, 22, 44, 32, 12,195, 28, 1,240,156, 97,152,151, 5,157,213, 77,183, 45, 88,176, 0,243,230,205,163,243,231, 23,253, +141,106,228, 12, 9, 9,161, 60, 30,239, 15, 0, 97, 60, 30, 47,220,148,215, 52,221,120, 76,113,156, 28, 56,188,119,161, 69, 95, + 31,136, 2, 48,228,157,126, 41,134, 29, 56,135, 55,142,140,239,142, 51,124,111, 4,128, 1,239,138,143, 5,150, 15,175,215, 98, + 42, 0, 66,129, 85, 5, 69,150, 41, 98,175,208, 35,110,141,201,146,122,159, 53,155,148,103, 13,251,206,210,243, 21,230, 32,255, + 14,196,214, 95, 28,228, 45,120, 65,156,145, 74,165, 68,169, 84, 66,165, 82,189,101,189,202,204,204, 68, 78, 78, 14,178,179,179, +243, 29,206,179,179,179,141, 93, 86,180, 24, 78, 72,165,210,252,110, 68,134, 97,194,210,211,211,243, 57, 77,211, 77, 57, 75, 41, +100, 78, 17, 66,206, 80, 74, 13,239,162, 46, 85,170,156,114,121, 47, 56,222,187,226,204, 27,228, 48,252, 93,114,166,164,164,196, + 2,104, 84,169, 82, 37, 81,104,104,168,230,223,210,192,188, 11,235,208,223,141,119, 45,220,242, 62, 24,170,254, 13,117,249,252, + 29, 19,254,210,166, 73, 0, 15,166,177,131, 74,154, 84,218, 40,208, 40,126, 41, 34,143,148,188, 81,146, 20,192,142, 87,175, 94, +121,179, 44, 27, 81,136,101,233,173,109,243,231,207, 71, 81, 49, 3, 11,112, 2,192,111, 81, 81, 81,238, 6,131, 33,174, 0,239, + 91,233,197,113,114,224,240, 47,177,104,253, 55,177, 75,163,153, 7, 96,158,185,251,199, 93,163,179, 1,204, 46, 99, 3,250,244, + 93,151,163, 52, 34, 11, 0,116, 58,221,121, 0,112,114,114,130,147,147,147, 37,199,149,184,205,116,238, 66, 83, 12, 28, 56,112, +203, 59, 46,187,225,111,168,207, 15,130,243,223, 36,178, 56,252,187, 65,211,130,163, 0,124, 83,226,126, 37, 71,131,255,139, 48, +202,251,153, 6, 32,173, 8,173, 83,220,182,226, 56, 1, 32, 19, 64,102, 33,199, 22,149,206,129,195,123, 5,195, 85, 1, 7, 14, + 28, 56,112,224,192,129,195,223, 3, 2,160, 85, 17, 95, 16,102,143, 38, 32,132,180, 42,197,215,252, 57,142,147,227,228, 56, 57, + 78,142,147,227,228, 56,255, 91,156, 37,113, 23, 28,189,252,174,166,231,250, 71,197,149,105,190,141, 35, 97,254,142, 5, 64, 43, +142,147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206, 82,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3, +135, 15, 8,173,125,137, 27,223, 0,230, 84, 40,141,121, 23,124,159, 87, 34, 30, 0,240,174,248,254,139, 32,132,184, 1,232, 96, +146,116,194, 56, 24,136, 19, 90, 31,238, 69,173, 12, 96, 22, 0, 27,147,228,219,148,210, 37, 5,246,219, 13, 64,102,146,164, 4, +176,144, 82,250,210,146,243,241,120,188, 37,205,154, 53,251,242,234,213,171, 43,117, 58,221,194, 82,228,215,219,205,205,237,123, + 66, 72, 29, 0, 2, 66,200,171,132,132,132, 37, 58,157,238, 92, 25,234,160,130,171,171,235, 82, 0,181, 24,134, 17, 16, 66, 66, + 19, 18, 18, 22,233,116,186,139,101,224, 84,184,184,184, 52,166,148,186, 2,224, 9, 4,130,148,152,152,152, 91,165, 29, 61,215, +115, 65,136, 48, 83,169, 23, 0,128,181,156,175, 59, 48,207, 95,107,110, 26,119,151,115,224,240,159,111,232,121, 5,147,218, 86, +196, 98, 66, 49,197, 0,144,182, 21,200,154,211, 97,152, 82,228,241,133, 13,184, 41,192,217,182, 34, 22, 83,250,134,163,109, 37, +178,226,244,171, 18, 6,119,153,193,105,196,102,128, 25,105,206, 4,231,127,195,192,160,247,128, 14,166, 93,156,121, 1,152, 55, +151, 40,180,250,248, 18, 55, 3, 31,252, 3,193, 52,202,248, 18, 2, 80, 19, 64,101, 0, 47, 1, 60,160,148,102,149, 81, 48,124, + 16,156,255, 66,204,165,148,246, 43, 80,238,191,236,244,233,167,159,118, 62,115,230,140,204, 56, 61, 11,203,178,144, 74,165,122, + 0,131, 45,168, 79,231,190,125,251,206,248,249,231,159,209,171, 87,175, 57,132,144, 31, 40,165,217,230, 30,111,111,111,223,163, + 66,133, 10,107,183,108,217,226,212,160, 65, 67, 34, 18,137,240,234, 85,168,231,168, 81,163,170,185,184,184, 28, 73, 72, 72, 24, +110,105,225, 29, 28, 28,250, 87,172, 88,113,213,166, 77,155, 28,155, 52,105, 2, 66, 8,130,130,130, 60,191,250,234,171,154,174, +174,174,123,227,227,227,199, 90,202,233,232,232, 88,165, 98,197,138, 45,215,173, 91, 39,109,220,184, 49, 36, 18, 9, 30, 60,120, + 96, 53,122,244,104, 87, 87, 87,215,167,241,241,241,151, 44, 21, 89,143,130,142,117,213,107,213,203, 0,128, 47, 20, 79,107,248, + 67,230,177,212,160,203,157, 74, 74,235,185, 0,191,113, 98,139, 3, 7, 14,166,232,239, 14, 87, 74, 49,245,204, 47,223, 48, 0, +208,102,232,183, 19,250,187, 99,229,174, 88,196,191, 35,190, 41,131, 60,176,118, 71, 12, 18,202,146,207,205, 0,243, 21,159, 63, +161, 94,253,250,142,227,174, 93, 11,213, 2,219,255, 35, 6,144,145,133,165, 23, 41,180,122, 4,144,133,224, 99, 22, 0,242,121, +101,178,247,108, 24,239, 74,235,214,173, 43, 13, 27, 54,140,212,174, 93, 27, 65, 65, 65, 85,246,238,221,219,129,207,231,135, 26, + 12,134, 32, 0, 79,204,141,106, 77, 8, 17, 0, 8,228,241,120,117,254,205,156,255,114,200,243,202,157, 0,224,182,209,162, 85, +112,167,243,231,207, 31,229,243,249, 70,139, 86, 61,165, 82,233, 82,192, 10,102, 14,202,235,116, 58, 60,123,246, 12, 12,195, 8, + 0,248,224,175, 83,106, 20,117, 93, 60, 61, 61, 61, 55,220,184, 29,228, 64,248, 82,164,229, 2,200,213, 66,100,229,130,159,183, +237,180,159, 60,113,108,119,107,107,235, 43,153,153,153,191, 90,112, 51,251,120,121,121,253,240,240,225, 67, 7,153, 76, 6,150, +101,145,149,149, 5, 87, 87, 87,108,217,178,197,118,242,228,201,253,164, 82,233, 69,149, 74,245, 63, 75,196,121,197,138, 21, 91, + 62,126,252, 88,106,156, 80, 90,163,209,192,211,211, 19,187,119,239, 22, 79,152, 48,161,170, 88, 44,142, 86,171,213,175,205,229, +204, 84,234, 5,122,173,122,217,142,245,243,203, 1,192,160,177,243,151,137,178,172, 79,154,147,150,169,212,159, 0,192, 9, 45, + 14,255,244,139,162,142,163,163,227,193,228,228,228, 75, 0,134,191,139, 16, 36,132, 16,119, 62,159,239, 67, 41,181,205,251,159, +174,215,235,195, 40,165,165, 14,168,235, 88,169,101, 39,136,101, 67, 64,217,154, 12, 0,194, 48, 15, 12,218,156,109,201,207, 47, + 28, 43, 19,167, 72, 58, 20,160, 53, 25,128, 37, 12,243,144,213,231,108, 73, 10,185,112,234,223,114,125,110,102,192,183,162,171, +249, 19, 99,190, 11,190, 62, 21,224,198,176, 96,118,135,195,236,110,197,241, 64,251,137, 19, 39,186,142,253,242, 75, 50,100,240, +224,202,151,174, 94, 37,205, 45,153,173,224, 3, 68,113, 14,251,133, 10,173,158, 1,196, 14,192,244,189,107,103, 49,124, 30,143, +244,157,184,164,223,214,245, 43,152,214,157,122,230,119,159, 52,109,218, 20, 77,155, 54, 37,203,150, 45,171,252,199, 31,127, 84, +222,189,123,183,158, 16,242,144, 82,186,175,168,147,181,171, 68, 84, 44, 32,233,224,199, 87,246,253,230,215, 77,245,235,215,135, + 88, 44, 70, 89, 56, 1,160, 77,101,222,235,246,245, 43, 61,236, 59,126,110, 68,131, 6,141,232,187,224,252,128,112,155, 82,218, + 37,175, 1,179,243,242,242,106,172,215,235, 37, 0,192,231,243,115, 1,140,167,121, 83, 7, 17, 66,142,176, 44,219,217,130, 6, +146, 1, 48,175,115,231,206,115,198,141, 27, 7, 47, 47, 47, 76,152, 48, 1, 58,157, 46,136, 16, 50, 23,192,210,146, 2, 2, 58, + 59, 59,207,221,176, 97,131, 61, 95, 36, 71,237,233, 97,136, 75,215, 3, 0,172,196,192,209, 49, 20, 19, 38, 76,176,190,123,247, +238, 34, 0,102, 11, 45,103,103,231,133, 91,182,108,177,151,201,100,160,148, 34, 59, 59, 27, 89, 89, 89,200,206,206, 70,118,118, + 54,198,142, 29,107,253,244,233,211,239, 1,152, 45,180, 92, 92, 92, 26,175, 91,183, 78, 42,145, 72,144,157,157, 45,212,106,181, + 36, 43, 43, 11, 57, 57, 57, 84,163,209,104,199,143, 31, 47,126,242,228, 73, 11, 0,175,193,225,223, 34, 10,120, 0,190, 16, 8, + 4,221, 42, 85,170,244,201,203,151, 47,239,235,245,250, 67, 0, 14,149,245, 99,138, 16,242,153,187,187,251,226,216,216,216,117, +148,210,157,255,149, 58,117,113,113, 57,116,253,250,245,114, 27, 54,108, 24,188,114,229,202,147,150, 60, 67, 69,124,252, 54,172, + 87,175,158, 99,183,110,221, 4,174,174,174,200,201,201, 65,104,104,168,236,220,185,115, 78, 18,137, 36, 69,173, 86,223,176,228, + 90, 57,250, 54,182, 2,223,122,111,195,150,173,154,244,234,254,133,194,197,193, 6, 42,141, 1, 47, 35,226,188,126, 63,121,180, +185,123,181, 14,215,181,218,140, 62,201,207,175,101, 91,202,217,178, 93,199, 38,173, 62,251, 76, 97, 99,107,131, 12,165, 22,175, +194, 99,188, 47,156, 61,214,212,173, 90,135,203, 44,209, 13, 72,120,116, 38,231,125, 94,155, 9, 0, 95, 41,113,168, 81,179, 81, +237,187,109,134, 45,250,132, 82, 10,134, 98, 77, 65,107,214, 4,128,191, 6,208, 91,202, 7, 74, 41, 33, 88, 97,106,205,202,239, + 86,100, 64,218,250,160,248,110, 74,227,251, 24, 16,219,218,219,215, 31, 61,114, 36,201,202,204,196,131, 7, 15,114, 10,138,172, + 31, 60, 32,188,204,160,252,145, 40,188,248,152,172, 89, 5,187, 14,141,255,205,142,163, 37,147,201, 10, 77,183,177,177, 65,203, +150, 45,177,100,201, 18, 62,128, 58, 5, 20,222,219,147,172, 2,226,227, 27,103,194, 70, 46,102,188,188,188, 20,214,214,214,101, +230,124,147,200,250, 52,242,162,159,223,249,117,214,224,115,187, 87, 5, 42,179,210, 5, 5,119,177,178,178,130,175,175, 47,230, +204,153, 99, 30,103,217,213,237, 63,202,233,230,230,230,215,180,105,211, 58,231, 47, 93,178,141,141,141, 21,199,198,198,138,207, +156, 63,111,219,176, 97,195, 58,110,110,110,126, 38, 28,150,228,243,219,245,235,215,207, 61,114,228, 8,211,180,105, 83,216,217, +217,161,101,203,150, 56,121,242, 36,127,229,202,149,223, 1,152, 83, 82, 62, 25,134,105,210,180,105, 83, 2, 74, 17,159,161,199, +173, 37,126,120,176,194, 31, 89,185, 20,169, 25,153, 80,169,114, 33,147,201, 36,121,221,189,230,150,189, 81,195,134, 13, 9,128, +124,113,149,149,245,102,201,206, 86, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165,174,141, 27, 55, 6, 0,104,181,218, +252, 47,188,244,244,116,146,145,145, 1,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,160,177,243, +163, 6,141,157, 31,197, 23,138,167,105, 20,153, 6,115,210,172,229,124,221,251,188, 63, 9, 33, 78, 60, 30,239,151, 74,149, 42, + 61,229,241,120, 59, 8, 33,174,101,225, 36,132,212, 37,132,124, 39,147,201,206, 85,173, 90, 53, 74, 46,151,159, 39,132, 44, 37, +132, 52, 44, 13, 39, 33, 68, 36,147,201,206,127,247,221,119, 7,238,223,191,223,235,143, 63,254,240,121,244,232, 81,247,101,203, +150,237,181,178,178,186, 66, 8,145,149,229,217,244,241,241,217,122,235,214,173,186,141, 26, 53,250,153, 16, 34,126, 23,207, 59, + 33,132, 71, 8,169, 69,204,156,107,232,159,190,238,132, 16,247,218,181,107,151,147, 72, 36,104,213,170, 21, 0,180, 40, 35,103, +195,209,163, 71,187, 78,158, 60, 89,240,224,193, 3,252,252,243,207, 56,114,228, 8, 18, 19, 19,209,177, 99, 71,225,167,159,126, +234, 42, 22,139, 27, 90,196,201,183,222, 59,241,171, 73,237,166, 78, 24,161,120, 24,169,197,182,115,145,248,237, 70, 28, 18,115, + 68,232,212,125,144, 77,219, 46,189,219,138,196, 54,123, 45,229,156, 49,125,122,187,145, 67,251, 41,130,227, 88, 28,189, 25,143, +155,207, 50,160, 23,216,162,125,247,225,118, 53, 27,183,235,192,135, 96,251,251,190, 70, 91,128, 6, 19, 39, 78,116,154,182, 98, +215, 53,247,186, 95,172, 73, 74, 67, 83, 83,225, 83, 5,176,181,151,203,191,120,214,188,249, 8,233,155, 57, 31,139,229,124,139, +175, 78,151,181,137,105,104,102,234,159,213,204, 30,149,243,186, 21,121,103,126,249,134,161, 4, 19,250,187,195,181,164,124, 94, + 4,122, 77,156, 52, 73, 96, 99,103,135,245,235,215, 67,173, 84,190,229, 51,251, 89, 57,180, 59, 39,227, 71, 87,240,247,124,218, +210,155, 92,249, 8, 63, 0, 71, 22,105,209, 58,113,226, 4,237,208,161, 3, 1,128, 3,193, 52,173, 71, 0,249,190,247,184,239, +230, 16,134,208,242,129,141,130, 61, 42, 6, 40, 29, 28, 28,144,147,147, 3,181, 90, 13,161, 80,136,220,220, 92, 68, 70, 70,226, +230,205,155,176,179,179,179, 40, 51,153,153,153,176,178,178,130,149,149,213, 59,225,156, 57,184,149,248, 85, 84,146,248,244,205, +139,205,127,252,242,127, 13, 42,214,106,241,232,179,222, 19, 30, 91, 59,185,231, 62,122,244, 8,215,175, 95, 71, 90, 90, 26,234, +215,175,255,177, 92,207,219,121,237,245,109, 66,136, 93,211,166, 77, 61, 79,159,187,108,151,157,203, 90,135, 39,232, 4, 44,203, + 66, 38,115,211,239, 59,120, 52,163, 87,247, 78,132, 16,146, 8,224,118,158,184,189, 93,194,141, 34, 1,224,215,163, 71,143, 25, + 95,126,249, 37, 66, 67, 67, 49, 98,196, 8,213,237,219,183, 83, 26, 53,106,228,176,101,203, 22,233,228,201,147,113,233,210,165, +121,132,144,195, 0,194, 40,165,185, 69, 52, 26, 66,161, 80, 8,125,158,108,208, 26,216,124,125,159,153,153, 9,170, 74,131, 80, + 40,228, 1,112, 2, 96,150, 31, 29,203,178, 66,129, 64,144, 47,178, 34, 19, 50, 17,153,152,131,204,108, 13, 84, 42, 61, 52, 42, + 10,158,204,129, 15,132,187, 0, 8, 55,179, 62,121, 18,137, 4,122,189, 62,127,254, 69,163,165, 76,163,209, 32, 35, 35, 3, 60, + 30,207, 10,128, 53,128, 84,115, 8,223, 56,185,227,183,188,110, 64,220,217,213,217,241,229,137,153,218, 30,243,159,230,167, 89, +203,249,186,131,147,171,242, 28, 60,107, 94,173,213,107,187,191, 49,237,125,250,103, 17, 66,196, 78, 78, 78, 23, 14, 28, 56, 80, +181,114,229,202, 8, 11, 11,243,239,217,179,103,125, 66, 72, 45, 75,231,100, 36,132,200, 24,134,249,126,200,144, 33, 95,246,237, +219,151, 84,169, 82, 5,124, 62, 31,122,189,222, 51, 52, 52,180,229,254,253,251,167,243,249,252, 45, 6,131,225,107,115,253,254, + 8, 33,140, 72, 36,218,183,105,211,166,102,245,235,215,199,142, 29, 59,112,251,246,109,182,110,221,186,204,192,129, 3,225,237, +237, 93,127,224,192,129,191, 17, 66,218,151,198,178, 69, 8,241,238,223,191,127, 57, 30,143,135, 70,141, 26, 9,175, 95,191, 94, + 27,192,245, 50,214,169,149,167,167,231,165, 22, 45, 90,212, 58,119,238,220, 61, 66, 72, 11, 75,252, 28, 9, 33, 93,220,221,221, +151,217,216,216,216, 89,208,198,230,196,196,196, 76,177, 96, 14,213, 6,117,234,212, 65, 68, 68, 4,252,252,252, 32, 20, 10, 27, + 18, 66, 70, 1,104, 7, 96,182, 37, 51, 88, 16, 66,220, 27, 54,108,232,216,162, 69, 11,178,116,233, 82, 0,128, 64, 32,128,193, + 96, 0,195, 48, 16, 8, 4,240,247,247, 39,175, 95,191,182, 39,132,184,155,211,141,232, 88,169,101,167, 70,159,181,107,210,172, +126, 13,102,229,193,151, 48,176, 6,240,136, 30,124,194,130,213,137, 33, 22,242, 80, 37,240, 19,222,179, 39, 15,235, 59,250,182, +238,148,252,252,236, 49,115, 56,219,117,234,220,180,170, 95, 21,230,199,223, 94, 33, 61,230,169, 33, 38,228,114, 50,195, 99, 80, +181,206,167,142, 85, 2,106,241,106,213,111, 33,136, 13,123,210,210,190,114,243, 86,169, 47, 47,157,123, 31,207,228, 2,128,231, +233,225,248, 69,199,214, 45,132,113,177,177,202,253, 7,143, 61,206,209,225, 38, 0, 92, 2, 72,123,160, 70,245,122,245,154,111, + 89,186,212,193,205,205, 77, 48,160,111, 95,253,230,123,247,238,141, 4, 12, 69,241, 57,186,186,182, 26, 61,122, 52, 47, 46, 54, +150,238, 63,116,226,145,145, 15, 0,100, 64,245, 26,158,254, 29,161,124,102, 81, 55,101, 39, 64,228,226,234, 90,117,212,168, 81, +136,143,141,197,142,157, 59,179,115,129, 27, 70, 43,214, 81, 30,214, 5, 84,116, 29, 50,109,120,103, 82,206,205, 17,163,231,109, +110,216, 82,155, 88,241, 2,254,180,108,153,106,145, 15, 85,100, 21, 20, 91, 69,126,157, 31, 12,166,115,173, 69,196,103,255,254, + 61, 76, 82,150, 86, 25, 26, 26, 10, 71, 71, 71,184,185,185,193,198,198, 6,193,193,193, 56,127,254, 60,158, 63,127, 14,150,101, + 81,179,102, 77,139, 50,148,156,156,140,135, 15, 31,194,206,206,238,157,113, 86, 44,231,132,113,229,156,132, 9, 41,153,194,115, +183,159,215,223, 60,179,123, 0,227,223,125,107,110,238,159, 26, 64,163,249, 56,102, 40, 49, 29, 93,232,229,229,213,120,219,182, +109, 66,181, 30,138, 42,163,110, 44, 87,230, 26,228, 0, 32,151,240,148, 65,203,124,191,254,246,219,111,149, 67,135, 14,245,143, +140,140, 92, 82, 18,175, 72, 36, 90,252,249,231,159, 79,165,148, 10, 38, 78,156, 8, 0, 24, 52,104, 80,230,205,155, 55,171, 80, + 74, 19, 9, 33,238,195,134, 13,123,113,225,194, 5,217,164, 73,147,120,122,189, 62,152,207,231, 83, 66,200, 66, 74,233,252,130, +124, 12,195,220,189,119,239, 94,121,119,111, 95,120, 59, 48,104, 58,231,205,116,109, 14, 50, 22,209,225,175, 16,242,232, 54, 92, + 93, 93,109,220,220,220,158,250,249,249,105, 99, 98, 98,166,103,103,103,111, 40, 46,143, 66,161,240, 65, 80, 80,144,155,183,183, + 55,178,179,179, 17,157,148,131, 9,135,100,200, 84,189, 49, 98, 8,160, 66,173,114,190, 10, 41,163,185,237,226,226,162,213,104, + 52,223,164,167,167, 23, 59,141,136, 64, 32, 72,121,244,232,145,149,151,151, 23,114,115,115,105,106,106, 42, 81, 42,149,200,202, +202, 34, 39, 78,156,232, 26, 23, 23, 87,215,199,199,135,120,122,122, 46,172, 92,185,178, 42, 38, 38,102,132, 57, 62, 96, 7,230, +249,107, 9, 33, 6, 62,159,191,114,228,200,145,189, 14, 31, 62,124,247,224,252,170, 93, 40,165,218,188, 7,210, 38, 48, 48,240, +116,141, 26, 1,238, 59, 87, 84, 95, 67, 41, 93,254, 47,184,189,134,204,154, 53,171,170,189,189, 61, 70,143, 30,141, 5, 11, 22, + 96,238,220,185,149, 71,143, 30, 61, 18,192, 15, 22, 52, 58, 82, 87, 87,215, 59, 63,254,248,163,127,227,198,141,113,242,228, 73, +236,217,179, 7,175, 95,191,214,251,248,248,240,235,215,175,143,121,243,230,161,109,219,182, 35,198,143, 31,223,156, 16, 82,219, + 76,241, 49,116,222,188,121, 93,154, 52,105,130,193,131, 7,171, 47, 94,188,216, 11,192,153,179,103,207,126,122,233,210,165,131, +187,118,237,146,126,247,221,119,173, 38, 79,158, 60, 26,192,218, 82,148,191,107,179,102,111,230, 80,110,210,164, 9,150, 45, 91, +214,182, 44, 66,139, 16, 34,114,112,112, 56,177, 99,199,142, 90,190,190,190, 24, 48, 96, 64,237, 94,189,122,157, 32,132,180,166, +148,154,213, 32,121,120,120,124,127,228,200,145, 74, 69,245, 44, 20, 6,181, 90,109,255,197, 23, 95, 44, 5, 96,145,208,218,189, +123, 55,166, 76,153,130,154, 53,107,214,104,208,160,193,198, 81,163, 70,161, 71,143, 30,159, 17, 66, 92, 40,165, 74,115,136,248, +124,190, 79,199,142, 29, 5,135, 14, 29,122, 99, 29,105,214, 12,173, 90,181,194,227,199,143,113,245,234, 85,240,120, 60,200,229, +114, 52,110,220, 88, 20, 27, 27,235, 3,160, 68,161,197,136,101, 67,186,116,108,175, 56,122, 51, 14, 6, 86,143, 79, 42, 89,163, +190,191, 51,158, 69,103, 34,232,105, 52, 12, 26, 33,172,237, 29,208,176,121, 27,251,248,152,215, 67, 0,148,236,175, 37,150, 13, +233,214,165,131,213,209, 27,177, 72,143, 13,161, 47,111, 31, 62,175,203, 85,142, 0,128,187,127,236,221,232,234, 32,109, 93,165, +206, 39,188, 22,173, 59,219, 29,218, 19, 63, 4,192,123, 17, 90,151,202, 97,147,183, 32,121,208,180,126, 77,169,192,206,243,182, + 66,167, 91,103,220,214, 22,104, 51,125,214,172, 6,195, 71,142,148,176, 44,139, 93,191,254,154,249,240,222,189,103,197,141,246, + 91, 7,120,247,234,210, 69,172,176,182,198, 87, 19, 38, 64,161,211, 93,200,175, 18,224,179,175,166, 78,109, 60,118,236, 88,233, +198,133, 95,222,109, 59,108, 81, 29,150, 82, 82, 88, 55,101, 65,156, 3,234, 14,235,210, 5, 10,107,107, 76,156, 56, 17, 68,171, + 61,109,220,118,156,143, 11, 67,187, 54,173,223,175, 83, 19, 16, 16,236, 57,126, 21, 47, 35,146, 30, 93,136,195,171,143,228,157, +108,153,143,150, 17, 89, 90, 36,124,214,161, 59,238,221,187, 7, 0, 72, 73, 73, 65, 74, 74, 10, 42, 85,170,132,181,107,223,110, +191, 74, 35, 96, 88,150,125,231,156, 0,224,226, 96,141, 1,237,235,241,175, 62,220, 35, 81, 38, 37, 73,172,172,172,114, 63, 54, +161,101, 10,189, 94, 47,241,241,241, 65,166, 10, 36, 35, 71,103,149,188,247,141,197,223,177,207, 69, 43,141, 70,195, 88, 89, 89, + 65,173, 86, 75,204,120, 33, 8,186,116,233, 50,117,223,190,125,130,144,144, 16, 84,172, 88, 17, 90,173, 22, 55,111,222,140,206, +155, 8, 25,148,210, 88, 30,143, 23,203,178,108,229,154, 53,107, 98,201,146, 37,240,247,247, 39,237,219,183,159,158, 39,182,222, +122,184,227,226,226,190, 31, 53,106,212,167,251, 15, 30,182,223,212, 91,133,204,140, 76,100,103,103,227,193,253,187, 72, 77,200, +197,230,205,155, 33,145, 72, 9, 0, 97, 98, 98,130,112,210,164, 73,107, 60, 61, 61,219, 69, 71, 71,119, 44, 42,159,177,177,177, +139,199,142, 29,219,112,239,222,189,182, 89, 89, 89, 80,169,114,145,170,148,225,233,234, 55,243,248, 86,253,234, 41,214,175,219, +192, 84, 47, 47,119,204,201,201,193,151, 95,126,185,202,221,221,189,113,108,108,236,176,162, 56, 99, 98, 98,110,141, 27, 55,206, +101,215,174, 93, 18,141, 70,163, 53, 24, 12, 80,169, 84,204,222,189,123,167,151, 47, 95,222,110,203,150, 45, 68, 34,145,230,237, + 27, 45, 28, 51,102,204, 62, 87, 87,215, 93,241,241,241,131, 75,234, 46,226,241,120,171,119,238,220, 57,176,119,239,222,138,184, +184,184,128, 35, 71,142,136, 1,168,242,118,113,107,221,186,117,249, 21, 43, 86, 56, 5, 6, 6, 78, 39,132, 8, 40,165,223,189, +207,251,201,209,209,113,124,151, 46, 93,176,116,233, 82, 28, 59,118,108,178,189,189,253,170, 5, 11, 22,192,221,221,125, 28, 33, +100,181, 5, 19,245, 46,255,225,135, 31,252,253,253,253, 49,104,208, 32,205,185,115,231,102, 1,248, 13, 64,196,149, 43, 87,188, +182,111,223,222,105,223,190,125, 75,127,252,241, 71,201,218,181,107, 43,117,239,222,125, 53,128, 97, 37, 62,223, 46, 46,147,250, +246,237,139, 21, 43, 86,224,226,197,139,221, 41,165, 39,243, 54,157, 34,132,116,250,238,187,239,254,152, 51,103, 14,126,248,225, +135,137,150, 10, 45, 66,136, 85,213,170, 85,191,105,215,174, 29,174, 92,185,130,166, 77,155,162, 97,195,134,147, 9, 33,107, 40, +165,201,165, 16, 89,140,149,149,213,190,109,219,182, 53, 45, 95,190, 60, 22, 45, 90,132,169, 83,167, 98,235,214,173, 77, 7, 12, + 24,176,143, 16,210,173,224, 51, 83, 24,108,108,108,172,100, 50, 25,166, 79,159, 78, 95,191,126,157, 86,210,254,229,202,149,179, + 91,181,106, 21,177,179,179,179, 49, 87, 20, 75, 36,146, 70,213,170, 85,195,188,121,243,112,246,236, 89,204,153, 51, 7,213,170, + 85, 67, 68, 68, 4,250,244,233, 35,155, 61,123,118, 15, 0,219,204,124,233,216, 56, 56, 56, 32, 49, 49, 17, 2,129, 0,141, 27, + 55,198,111,191,253, 6,181, 90, 13,103,103,103,164,167,167,163, 94,189,122, 70, 81,102, 99,230,171,172,154,163,189, 13, 18,159, +196,128, 15, 61,234, 84,113,196,133,199, 41,208,234, 88, 56, 59,216, 34, 62, 49, 1, 13,170,121, 66,163,241, 2,165,108, 53,115, + 24, 69, 60,166,142, 88, 34, 69,106, 86, 50, 98,158, 94, 76,209, 26,212,163,210, 95, 95,141, 2, 0,251,138,205, 70,221,189,122, +246,110,207, 14,205,156,179,149,229, 64, 40, 91,239,125, 60,143, 61,189, 80, 78, 46,225, 15, 58,190,105, 38,209,179, 44, 62, 31, +182,184,110, 59, 23,228, 32, 1,112, 2,124,122,246,233,211,232,235,175,191, 22,189, 8, 13,101, 39, 77,152,144,126,255,206,157, +139,191, 3,119,139,227,204, 6, 42,183,110,221, 26, 12,128,223,207,156, 81, 38, 3,209, 0,224, 2,148,235,252,197, 23,205,102, +205,152, 33,122, 21, 30,206,222, 12,205, 62,250, 42,145, 46,105,100,143,135,123, 35,222,236, 83, 28, 12, 64,117, 35,239,233,211, +167,169, 42, 47, 31, 45,202, 97, 92,219,198,129,245, 7,118,105,134,232,248, 20, 44,251,249, 40, 30,189,136, 59,237,192,162,255, +199,242, 30, 46, 46,130, 61, 99,198, 3,243,151,180,156,156,191,246, 30,148, 85,192,252, 29,156,133,225, 99, 20, 90, 70, 24, 39, +111,214,232, 88,104,116,172,241,171, 22, 42,149,202, 92, 69,174, 59,125,250,244,142, 9, 19, 38, 96,213,170, 85,120,241,226, 5, +132, 66, 33,170, 85,171,230, 70, 8,177, 50, 90, 96,234,212,169,227,204, 48, 12,158, 61,123,134,149, 43, 87, 98,232,208,161,244, +250,245,235, 91, 11,123, 97, 80, 74,239,167,166,166,174, 27, 53, 98,104,122, 90, 66, 36,116,170, 52, 36,198,188,130, 90,153,142, + 69, 75,190, 71,142,142,143,248, 12, 45,226, 51,180, 96,196,246,216,184,101, 27,175,106,213,170,237,248,124,126,199, 98,242,121, + 51, 33, 33, 97,203,152, 49, 99,210,227,227,227,243,203,167,209, 81,104,116,111,223,175, 50,153, 12,171, 87,175,182,169, 82,165, + 74, 23,129, 64,208,178, 24,206,184,168,168,168,144, 49, 99,198,104, 18, 18, 18,144,145,145,129,163, 71,143,118, 42, 95,190,188, +221,210,229,171,136, 82,203, 71,124,186, 22,241,233, 90,136,172,156,177,239,224, 97,158,175,175,111, 63,129, 64,208,176, 36,145, +181,107,215,174,129,189,123,247, 86, 44, 95,190, 60,245,200,145, 35,235, 41,165,166, 23,228,217,234,213,171,247,239,219,183, 47, +107,234,212,169,246,203,150, 45,155, 76, 8,153,245, 30, 27,139,150,189,123,247,246, 99, 89, 22, 7, 14, 28,120, 68, 41,253,225, +240,225,195,119,212,106, 53,250,244,233,227,147,215,141,100, 14, 79,221,126,253,250,125,217,180,105, 83,124,245,213, 87,218,115, +231,206,213,161,148,174,162,148,134,211, 55,136,160,148,174,185,116,233, 82,205,241,227,199,171,235,213,171,135,193,131, 7, 15, + 37,132, 52, 45,129,183, 81,223,190,125,253, 89,150,197,222,189,123, 31,154,136, 44,227,117, 60,127,240,224,193,155, 26,141, 6, +253,251,247,175, 64, 8,249,212,130,178, 11,197, 98,241,129,111,191,253,214, 54, 38, 38, 6, 3, 7, 14, 84, 63,123,246, 12,243, +231,207,151,218,216,216,156, 52, 62, 3,150, 64, 44, 22,111,254,233,167,159,186, 84,175, 94, 29, 99,198,140,209,108,216,176, 97, +194,151, 95,126,169,169, 83,167, 14,214,175, 95,223, 69, 36, 18, 89, 52,181, 72,108,108,108,122,112,112,176, 67, 73, 75,116,116, +116,130,153,101,150, 41, 20,138, 27,129,129,129,153,213,170, 85,251, 68,175,215, 35, 56, 56,248,213,142, 29, 59,216,106,213,170, + 97,221,186,117, 88,182,108, 25, 58,118,236, 8, 30,143,215,195,146,188, 42,149, 74, 72, 36, 18, 8,133, 66, 4, 5, 5, 65,173, + 86, 67, 38,147, 65, 34,145,128,199,227,193,214,214, 22, 10,133, 2, 48,115, 52, 26, 33,160,153, 57, 58, 8, 4, 12,248, 12,139, +144,136, 12,104,117, 44, 36, 66, 30, 4,124, 2, 80, 22,182,114, 1, 36, 34, 30, 24, 66, 88, 51, 57,145,161,212, 66, 36,100, 32, + 16,138, 8,163, 55, 72,243, 95,142,124,131, 84, 42, 21, 17, 71,107, 49, 36,194,127,209,180,192,228, 77,125, 13, 1, 4,114, 47, +175, 94, 43, 86,174, 20,101,102,103,163,123,247,238,169,225,119,238,236, 84, 1,119,154,151, 80,167, 12,159, 95,165, 69,243,230, + 8,186,119, 15, 89,105,105, 47,129, 55,206,241, 34,119,247,222,171, 87,175, 22,169,114,115,209,189, 91,183,244, 23, 87,175,238, +138,202,198,113,115, 68, 22, 0,240,132, 66, 87, 35,111, 70, 90, 90, 26,240, 38,132,132,139,147,213,210,177,253,218, 34, 43, 39, + 23,211,190,223,201,222, 11,137, 27,119, 37, 26, 29, 14,199, 34,227, 99,122, 7, 19, 66, 70,154, 46,102, 89,180,140, 86, 39,115, +196,138, 90,173,126,231, 2,168,172,156,133,137,196,178,114,254, 27,193,231,243,115,159, 63,127, 46,178,118,112,103, 29, 20,130, +180,242, 67,175,218, 0,128,189, 21, 63, 67,107,208,177,177,177,177, 16,139,197,185,230,112,229,230,230,142, 32,132, 44, 2, 16, +192,231,243,143,111,219,182,141,236,220,185,211,174,111,223,190,161,132,144,152,192,192, 64,239,109,219,182, 89, 3,192,154, 53, +107,232,190,125,251,218,226, 77,200,140, 34, 77,202,241,241,241,243, 5, 2,193,245,177, 99,199,174, 21,137, 68,118,114,185,220, +225,202,149, 43, 36, 87, 75, 81,119, 86, 68,254, 72, 68,107, 41,131,203, 51,173, 49,114,228, 72,222,211,167, 79,151, 0, 56, 94, + 12,231,116,177, 88,124,229,197,139, 23,171,108, 60,107, 57,201,189,103,217,212,159,249, 12, 0,224,237, 40, 0,147,215, 46,166, +167,167, 35, 41, 41, 9, 95,126,249,165, 93,104,104,232,116, 0, 23,138,226,140,142,142,190, 36, 22,139,163,159, 60,121,210, 66, + 32, 16,136,228,114,121,221, 27, 55,110,144, 92, 13,139, 26,211, 35,144,154,253, 38,159,246, 86,124,220,253,214, 5,227,198,141, +227,191,124,249,242,123, 0, 77, 10,109,204, 24,102,153,169,200,154, 54,109,218, 3, 0, 21, 8, 33,111,117,141, 26, 12, 6,210, +191,127,255,199, 0,170, 77,157, 58,213,158, 82, 58,153, 16,146, 74, 41,221,244, 79,223, 75,214,214,214, 75, 71,141, 26,133,125, +251,246, 33, 45, 45,109, 53, 0,100,102,102,254,176,123,247,238,189, 35, 70,140,192,175,191,254,186,148, 16,242,187, 25, 86,173, +207,251,244,233,131, 83,167, 78,225,143, 63,254,248,134, 82, 26, 92,196, 51,250,130, 16, 50,253,200,145, 35, 63,246,237,219, 23, +191,252,242, 75, 59, 0,197, 57,200,182,110,219,182, 45, 78,158, 60,137,148,148,148,245,133,237,144,158,158,190,225,232,209,163, + 13,218,182,109,139, 37, 75,150,180, 6,112,222,140, 6,210,223,198,198,102,219,143, 63,254, 88,183,122,245,234,232,215,175, 95, +174, 86,171,109, 55,117,234,212, 99,123,246,236, 81,236,216,177,227,147,145, 35, 71,222, 34,132, 12,167,148,222, 52,235,165,195, +227,125,183,118,237,218, 97, 45, 90,180,192,228,201,147,245,167, 79,159,238, 76, 41, 61, 67, 8, 9,157, 54,109,218,137,149, 43, + 87,242, 86,172, 88, 49,140,199,227, 37, 25, 12,134,247, 37,174,191, 93,179,102, 77,131, 54,109,218,224,213,171, 87,184,121,243, + 38,180, 90,237,175, 55,110,220,184, 92,185,114,229,111, 53, 26,205, 49,185, 92, 62, 72,161, 80, 4,214,170, 85,235, 83, 66,136, +204, 28, 63, 61, 66, 72,122,104,104,168,220,217,217, 25, 2,129, 0, 15, 31, 62,132,179,179, 51, 0, 32, 49, 49, 17,213,170, 85, + 3,143,199, 67,122,122, 58, 0,243, 94,182,132, 48,143, 66,195, 99, 43,216, 43,228,128, 65,130,251,207,162,225,228,104, 7, 3, + 97, 16, 31, 31,135, 90,126,158, 32,132, 32, 61, 37, 30,132,144,199,230,112, 26, 40, 27, 20, 25,155,232,225,160, 16,163,122,131, + 54, 14, 55,126, 79,218,105, 83,177,201, 72, 62,143,240,196, 18,235, 77,195, 6, 15,118,100, 89,138,244,148, 4,240, 25,230,246, +251,184, 64, 7, 34, 17,213,188,162,228,126,155, 97,139,106, 17, 10,170,210, 98,199, 47, 9, 72,147, 1,181,214,204,158,109,235, +224,232,136,126,253,250,177, 41, 49, 49,231,114, 0,179, 2, 43, 87,168, 92,217,197, 74,161,192,181,107,215,192, 3,194, 0, 96, + 43,224,191,108,218, 52, 7,103, 87, 87, 12, 29, 54,140, 77,136,140, 60,175, 50,163, 75,247, 45,222,138, 21, 5, 70, 94, 38,143, + 55,142,135, 9, 83, 59, 55, 21,203,165, 98,124,183,241, 48,162,146,149,123,111,196, 97,227,199,104,236, 40,209,162, 85,148,243, +217, 27,167,106, 89,177, 98, 69, 34,145,228, 91, 83, 44,248,210,123,231,156, 37,225,239,224,124,143,202,121, 38, 33,228, 8, 33, +100,102, 84, 84, 84,200,176, 97,195,180,122,173, 58,235,250,162, 10, 51,238, 45, 41, 63,230,198,124,183, 49,191, 77,176,153,145, +147,145,154,181,102,205, 26, 93, 84, 84, 84,136,233, 49, 37,220, 44,145,148,210,147,219,183,111,223,112,224,192, 1, 84,171, 86, + 13,193,193,193,206, 74,165,178,246,227,199,143,237,253,253,253,177,115,231, 78,236,219,183,111, 21,165,244,108,113, 34,203,196, +218,118, 46, 46, 46,206, 55, 34, 34,162,146,173,173,173,206,214,214, 22, 5, 71, 34,102,170, 88,164,164,103,192,222,222, 1,214, +214,214, 62, 37,113,170,213,234,147,113,113,113, 85, 88, 59,191,102, 85,146, 87,103, 4,125, 87, 14, 65,223,149,195,201,233,238, +112,179, 21, 33, 45, 45, 13, 73, 73, 73, 72, 74, 74, 2, 33, 4, 58,157,174,170, 25,156,175, 99, 99, 99,127,142,140,140, 60,226, +226,226, 2,133, 66, 1, 10, 32, 62, 93,135, 7, 43,252,241, 96,133, 63,226,211,117,200,204,202, 66,249,242,229,161, 80, 40,170, + 21,213,101,228,225,225,209,190,119,239,222, 10, 0,200, 19, 80,159, 81, 74,199, 20,178,140,214,235,245,141,141,251, 78,153, 50, +197, 30, 64,219,127,248,126,226, 17, 66,198,142, 24, 49,226, 19,137, 68,130,117,235,214,189, 6,176,203,216,214,111,216,176,225, + 25, 0, 76,152, 48, 33, 16,192,100, 82, 68, 36,104, 35,132, 66, 97,157,170, 85,171,226,198,141, 27, 0,112,184,132,211, 31,188, +126,253, 58, 42, 87,174, 12,137, 68, 82,183,132,125,125,202,149, 43,135,103,207,158, 1,192,253, 34,246,185,255,236,217, 51,148, + 43, 87, 14,132, 16, 31, 51,202,222,165, 77,155, 54,143, 46, 92,184, 80,183, 81,163, 70, 24, 54,108,152,230,214,173, 91,237, 41, +165,151,239,223,191,223,178,127,255,254,202, 42, 85,170,224,210,165, 75,254,253,251,247,191,206,227,241, 22,153,193, 57,116,225, +194,133, 51,187,118,237,138,133, 11, 23,210,253,251,247,247,163,148,158,201,123,190, 78,239,221,187,119,224,226,197,139,105,183, +110,221,176, 96,193,130,153,132,144, 49, 37, 88,135, 50, 12, 6, 3,148, 74,165, 89, 38,121,115,247,119,116,116,252,188, 77,155, + 54,152, 51,103, 14, 60, 60, 60,112,236,216, 49, 10,224, 56,165,244,138, 90,173,110, 70, 41, 93,169, 84, 42,127,187,113,227, 6, + 90,183,110, 45,196,219, 83,140, 20, 9,189, 94, 31,126,225,194, 5,173,131,131, 3, 60, 61, 61,225,229,229, 5,165, 82,137,244, +244,116, 84,171, 86, 13, 13, 26, 52,128, 82,169,196,241,227,199,181,233,233,233,102, 13, 88,209,107,148, 59,206,158, 56,148,225, +160, 16,195,211,217, 6,229, 61,236,145,157,158,140,164,248, 88,212,169,234,133,230,117,202, 35, 57, 67,131,211,199, 15,165,101, +101,229,236, 48,171, 23, 64,157,179,237,220,239,199, 50,236, 20, 66,248,250, 5,162,255,176, 9,181,106,213,174,127,182, 94,189, +198,167,151, 47,253,174,198,103, 13,171,146,232,228, 92,156, 58,126, 56, 45, 35, 51,115,219,251,104,235, 23, 0,188, 92,155, 42, +151,215, 31, 9,250, 57,160,221,136,159, 67,162,177, 26, 0,116, 60,158,127,251,207, 63, 71,116,116, 52, 14, 29, 56, 16,151, 3, + 60, 52,151, 79, 42,149, 50, 0,144,145,145, 1,241,155,217, 66,160, 7,252, 58,116,232,128,164,228,100,236,222,181, 43,233, 20, +112,207,146,124,118, 2, 68, 50,233, 27,131, 96, 70, 70, 6, 8,144, 9, 0,132,143,246,245,170, 85, 70, 82,106, 38, 46,220, 14, +201, 46,175,194,151,197,241,124,168,142,240,197,249,104,149,100, 15, 77,158, 60,121, 50,196, 98, 49,220,220,220,242,197,145, 81, +172,136, 68, 34,184,185,185, 65,175,215, 99,239,222,189, 0, 80,172, 15, 3, 3,168, 59,143, 89,194,170,117, 52, 71, 32, 16,188, + 19,206, 60,203,129,186,251,180, 95,216,223,175, 23, 62, 40,166, 52,156, 31, 0,234,229,197,196,170, 71, 41, 77, 11, 15, 15,143, +238,213,189,115, 70, 68,232,147,120,101,122,108, 92,102, 74, 84, 92,212,235,199,241,179,166, 79,206,136,142,142,142,202,139,165, + 85, 47, 54, 54,182, 51, 0,115,125, 13, 38,247,234,213,235,167, 17, 35, 70,208, 7, 15, 30, 0, 0,130,130,130, 48,120,240, 96, + 58,112,224,192,213, 0,102,148, 34,223, 74,149, 74,245,150, 53, 68,107, 96,243,187,252, 50, 51, 51, 17, 27, 27, 11,141, 70, 99, +182, 34,126,113,122,197,243,212,240,187,186, 64,111, 57, 2,189,229,240, 47, 39, 3,209,103,231,139,172,164,164, 36, 36, 36, 36, + 0, 64,174, 5,249,204, 84,171,213,111,229,211,180,107, 50, 51, 51, 19,241,241,241, 48, 24, 12,154, 34, 30, 58, 54, 38, 38,230, +244,190,125,251,178, 0, 96,249,242,229,169,132,144, 63, 8, 33, 63, 21,178,108,228,243,249,215,140,251,174, 88,177, 34, 21,192, +201,127, 80,100,117,173, 94,189,122,218,204,153, 51,215, 77,156, 56, 17, 27, 55,110, 68, 92, 92,220, 12, 74,169,222, 88,150,228, +228,228,105,235,215,175,199,144, 33, 67, 48,119,238,220, 21,181,107,215,206, 36,132, 20,233, 95,225,228,228,228,201,231,243,113, +239,222,189, 76, 74,233,171, 18, 26,168,248,123,247,238, 37, 16, 66,224,230,230, 86,177,184,125,237,237,237, 43, 41, 20, 10,196, +196,196, 0,121, 95,204,133, 32, 60, 54, 54,150,138, 68, 34,184,187,187, 87, 46,169,252,118,118,118,211,126,254,249,103,254,147, + 39, 79,240,217,103,159, 69, 95,186,116,169, 53,165,244, 98, 94,222,238, 5, 5, 5, 53,109,217,178,229,243,179,103,207,226,251, +239,191, 39, 53,107,214, 28, 83, 18,167,183,183,247,232,161, 67,135, 98,237,218,181,216,180,105,211, 24, 74,233,129, 2,101,222, +179,126,253,250, 9,155, 54,109,194,176, 97,195,224,227,227, 83,172,175, 74, 68, 68,196,244, 22, 45, 90, 4,189,120,241,194,172, + 25, 15,204,217,159, 16,210,178,126,253,250,149, 84, 42, 21,182,109,219,246,170, 82,165, 74,119, 14, 28, 56, 48,153, 82, 90,240, +133,253,219,161, 67,135, 48, 96,192, 0,212,172, 89,115, 27, 33,164,175, 25, 47,157,216,136,136,136,228,135, 15, 31,178, 60, 30, + 15,158,158,158,104,223,190, 61,250,244,233,131,154, 53,107, 34, 49, 49, 17,151, 47, 95,102, 67, 67, 67,147,205, 13, 92,154,252, +252,194,177,176,176,231,215,238,221,186,172,227,243, 24,120,185,217,227,139, 86,181, 48,188, 71, 99,212,241,247, 64, 68,162, 10, +231,207,159,213,133,133,189,186, 97,206,136, 67, 35,103, 72,240,195,235, 79,238, 93,213, 11,248, 4,254,126, 85, 48,103,214, 52, +187,197,243,166,219, 86,169,232,133,135,175, 51,112,246,204, 41, 93,108,116,212,133,247, 53,226,240, 18, 32,180, 18, 19, 57,143, + 97, 96, 96,196, 74, 94, 94, 32,227,106, 1, 1,190, 46,174,174, 56,113,226, 4, 24,224,169, 69,124, 86,111,122,193,179,179,179, + 97,228,171,228,231,231,231,229,237,141,147, 39, 78,128,199,178, 79,155, 91, 24, 96,244, 25, 32, 51,229, 37, 64,238,151,229,160, +168, 84,206,217,207,206, 70,142, 91, 15, 95, 66,173,163,183,119,165, 33, 7, 31, 33, 10,118, 27, 90,210,117,184,124,227,198,141, +245,126,254,249,231,214,147, 39, 79,182, 26, 52,104, 16, 36, 18, 9,114,114,114,224,233,233, 9,131,193,128,223,127,255, 29,119, +239,222,205,102, 89,246, 44, 10,132, 13, 32,132,180, 50,141,181,241,123, 40,149,190, 9,130,153, 83,239, 72,207,158,239,132, 19, + 0,172, 94,178,214, 41,229, 53, 59,215, 28,184,218,109,247,233,123,228,171,190,205,153, 58,126,229, 0, 0, 46, 46, 46,176,182, +182,182,152,243, 29, 84,250,223,206,105,218,173, 27, 23, 23,247,140, 16,146, 56, 98,196, 8,127,163,227,187, 88, 44,206,141,138, +138, 10, 49, 6, 44, 45,120, 76, 73,249,204, 27, 25,247, 37, 33,228,104, 70, 70,198,233,169, 83,167, 98,241,226,197, 56,118,236, + 88, 83, 74,233,181,210,148,157, 82,106,240,241,241, 73,191,125,251,182, 75,229,170,181, 81,193, 89,128,102,223,188, 0,165, 20, + 14, 50,138,172,244, 84,220,191,127, 15, 89, 89, 89,183, 44,201,167,187,187,123,122, 98, 98,162,163,179,179, 51, 82, 83, 83,145, +156,156,156, 47,178,210,210,210,144,154,154, 74, 9,121, 59,102, 75, 9,156,202, 74,149, 42,229,132,132,132,136, 92,202, 85, 70, + 69,103, 33,234,207,122, 6, 80, 10, 47,123, 6, 89,153,233,184,113,227, 6, 50, 50, 50, 46, 22,197,201,178,236,215,253,251,247, +231, 1, 24, 56,117,234, 84,123, 0, 53,167, 77,155,118,182,224,200, 66,129, 64,240,195,206,157, 59,171, 25,187, 24,167, 79,159, +190,138, 82,250,243, 63,117, 47, 57, 56, 56,124,125,226,196, 9,133, 86,171,197,154, 53,107,176,106,213,170,173,148,210,255, 21, +168,143, 19, 60, 30,111, 61,195, 48, 99,199,141, 27,135, 81,163, 70,201, 62,249,228,147,201, 38, 86,175,183, 56, 99, 98, 98,230, +212,169, 83,103,110, 98, 98,162, 89,142,253, 47, 94,188, 24, 89,167, 78,157, 57,137,137,137,203,138,187, 70,114,185, 92,110, 48, + 24, 16, 22, 22,150, 70, 41,205, 40,226,218,229, 86,169, 82, 37,198, 96, 48,120,202,100, 50,251,146,238,207,180,180,180,239, 62, +249,228,147,249, 9, 9, 9,103, 0, 44, 42, 24,170,132, 82,250,128, 16, 18, 56,113,226,196,241, 75,151, 46,237, 22, 31, 31,191, +183, 36,206,136,136,136,239, 90,182,108,249,205,243,231,207,183, 23,213, 5, 76, 41, 93, 71, 8,209,238,220,185,115, 76, 88, 88, +216,146,226, 56, 41,165,199, 81, 76, 87,122, 33,220,133,238,111,202,201,227,241,166, 45, 93,186,148,217,184,113, 35, 40,165, 43, +244,122,125, 81,249,124,200,227,241,118, 52,110,220,120,208,129, 3, 7, 36,129,129,129,163, 0,236, 41,233,254, 84,171,213, 55, +175, 95,191,222, 32, 60, 60,220,177,101,203,150, 66,227, 7, 74,122,122, 58,142, 31, 63,174, 13, 13, 13, 77, 86, 42,149, 55, 45, +105, 67,244,154,204,190,215,207, 31,217, 19,254,226,113,195, 22,237,186,216,105,180,158, 16,167,240,144,158, 18,143,223,143, 31, + 74, 11, 11,123,117, 35, 39, 39,189,175, 37,156, 90,117, 70,159, 27, 23,142,238,141, 14, 11,105,208,172,101,123,187, 92,141, 55, +196, 66, 6, 41, 9, 49,248,253,196,145,212,176,176,215, 87,114,117,234,193,239,171,157,231,249, 96, 17, 47,254,238,136,209,157, +106, 65,106,231,121, 95, 0,172,105, 12, 72, 29, 93, 92,132,121,207, 14,172,128, 8,115, 57, 19, 0, 81,229,188, 94,170,156,156, + 28, 8, 0,205, 16, 64,224,228,228, 36, 5,128,231,207,159, 67, 6, 68, 90,154,207,108, 64, 46, 51,225,101,128,156, 20, 62, 60, + 42, 89,203, 9, 0, 68,199,167, 64,163,195, 53,124,164, 48, 90,180, 10,115,138, 47, 41,248, 34, 11,224, 38, 33,228,222,178,101, +203,154,253,244,211, 79,205, 39, 77,154, 36,250,252,243,207,113,231,206, 29,156, 59,119, 78,163, 86,171, 47, 1,184,108, 28,174, +110, 70,102,222, 57,231,129, 55,251,245,170,231, 65,236,181,172,234,240,156,159, 78, 53, 41,239,106, 75,245, 6,150, 60,126,252, + 24,215,175, 95,183,152,243, 3,185,176, 0, 80,143, 16,114, 36, 47,233,118,193, 16, 14,121,221,133,245, 76,172, 96,165, 57,213, +125, 62,159, 79,253,252,252, 72,222,244, 52,193,101,201,119,124,124,124,191,233,211,167,159,217,127,240, 48,255,208, 56, 41, 50, +210, 51,222, 52,192, 25,233, 72, 73,136,197,249,243,231,181, 73, 73, 73,163, 44,225, 76, 74, 74,250,178,111,223,190,251,247,236, +217, 99,159,150,150,150, 47,180,210,210,210,192,178, 44,182,110,221,154,148,144,144, 48,219, 18,206,184,184,184, 97, 83,167, 78, + 61,184,123,239, 65,254,217, 25,118,200, 54, 70,159, 87,102, 32, 37, 49, 14,199,142, 29, 83, 39, 39, 39, 79, 44,230,250, 24, 8, + 33, 95,245,239,223, 31, 70,177,117,227,198,141, 9,132,144,117,198,151, 57, 33,164,194,215, 95,127,221,215,196,143,107,213, 63, + 61,234, 48, 37, 37,101,113,131, 6, 13, 86, 37, 37, 37,189,214,106,181, 7, 40,165,133, 70,233, 55, 24, 12,227, 8, 33,215,215, +173, 91,215,199,209,209,209, 37, 62, 62,126,169,165, 47,250,178,238, 31, 25, 25, 57,179, 78,157, 58,179, 18, 19, 19,151, 22,183, +223,203,151, 47,199,230,237,183,204,140,115,159, 0,112,162,132,125,244,120, 19,218,226, 7, 51,203,115, 4,192, 17, 51, 27,231, +205,239,163,253, 48, 24, 12,203,171, 87,175, 46,209,235,245,103, 75,242, 7,100, 89,118,228,164, 73,147,162,167, 76,153, 82,203, + 96, 48,152, 91, 7, 58, 0, 87, 8, 33,238,201,201,201, 62, 0,108, 1,128,207,231,167,167,167,167,151,106, 10,158,188,136,239, + 29, 29,125, 91,119, 58,176,125,237, 16,202, 26,106, 18, 66,192, 99,120, 15,178,178,115,182,153,107,201, 42,132,179,131,163,111, +235, 78, 9, 49, 17, 67, 41,107,168, 9, 16,150,207,103, 30,102,101,231,108, 73, 10, 57,251,222,166,224, 25,228, 1, 23, 30,193, +184, 51,191,124, 67, 0,160,245,208,111,107,149,183,133,149, 62, 29,233,200,107,203,227,226,226, 96, 7,164,153,203, 41, 3,244, +218, 60,159,232,180,212, 84,200, 0, 85, 28,192,203,243,187, 36, 9,241,241,176,178,128, 47,255,131, 17,208, 22,224,205, 0, 32, + 54,186,115,166,102, 42, 1,243,227, 26,126,144, 22,173,130,191,243, 5, 23,165,212,236, 5,111,230,215,251, 2,192,146,188,181, +188,132,253, 91,189, 15,206, 6,110,240,109, 85,137,132,180,247,227,167, 2,232,241, 46, 56, 45, 93,254,110, 78, 0,219, 53, 26, + 13,205,205,205,165, 57, 57, 57, 52, 59, 59,155, 2, 56, 82,200, 49, 71, 98, 99, 99,105,116,116, 52,141,140,140,164,225,225,225, + 20,192, 46, 75,243,105,109,109,253,115,207,158, 61, 13, 2,129, 96,237,187, 40,187,189,189,253,146,250,245,235,107,127,252,241, + 71,250,219,111,191,209, 45, 91,182,208,113,227,198,209,106,213,170,169,109,109,109,251,150,134,211,213,213,117,142,159,159, 95, +202,214,173, 91,233,174, 93,187,232,234,213,171,233,236,217,179, 13,158,158,158,241, 10,133,162,109,105, 56,157,157,157, 55, 55, +105,210, 68,187,121,243,102,122,246,236, 89,186,123,247,110,250,245,215, 95, 83,127,127,127,181, 92, 46,239,110, 14, 39, 0, 30, +159,207, 95, 57,122,244,232,120,119,119,247, 19, 5,182,201, 2, 2, 2,238,244,239,223, 63, 22,192,244,143,229,254,228, 56, 57, + 78,142,179,236,156, 3, 61,224,222,186, 2,244,244,242, 55,148, 94,254,134,182,170, 0,182,159, 59, 60, 40,192,147, 9,133,125, +154, 55,109,186, 66, 8,244,161, 0,175,208,165,176,124, 2, 60, 9,143,215,163,113,253,250, 43,132, 64, 95,227,190, 18, 30,175, + 71,243,166, 77, 87, 8,120,188, 1, 69,242, 21,195, 73, 1,158,144,207,159,222,184, 97,195,149,124, 96,150, 49,237,211, 10,228, +233,215,237,202,209,166,222,228,229, 0,103,200,138,227, 44,162, 62, 70,190,235, 58,254,167,151,210,222, 8,252,119,125, 19,126, + 40,156,255, 34,161, 85, 57,175,219,230,136,201, 50,179,144, 99,102, 22,216,103, 59,128,202,165,172, 79,233,187, 44, 59,128,234, +142,142,142,167, 42, 87,174,156, 84,190,124,249, 88, 59, 59,187, 61, 0, 60,203,200, 25,232,234,234,250,171,139,139,203, 11, 55, + 55,183,135,142,142,142, 63, 0,112, 42, 11,167, 64, 32,168,239,226,226,114,209,199,199, 39,221,219,219, 59,193,209,209,113, 47, + 0, 23, 75, 57, 1,184,161,144, 70, 5,128, 16,128, 27,247,210,225, 56, 57, 78,142,179,160,128,105, 83, 17, 75, 91, 87,128,190, +117, 5, 24,218,248,224, 7, 83,129,210, 17,144,150, 86, 20, 13, 6,196, 5,247, 47,145,175, 4, 78, 10,240, 26, 1, 86, 5,143, +105,239,137, 0,115, 56, 63,100,161,101,204,103, 94, 59, 63,210, 52,223,252,210,152,200,140, 78,178,239,184, 27,236,131,224,252, + 23,117, 27,190, 4, 74, 14,246,102, 26, 65,254, 29,156, 83,245,142,203,240, 8,192,231,239,152,243, 9,128,129,239,146, 83,171, +213,222,130,153,243,190,149,144,183,184, 98,124,225,226,192,129, 3, 7, 14,111, 55, 14,134,211,192,140,214,190,100, 13,223, 0, +230,212, 43, 26, 99,186,249,216,159,129,143, 45,226, 4,128,109,133, 76,207, 83, 42, 62, 19, 78, 0,184, 6,252,101,118,135, 19, +101,116, 55,249,192,222,205,113, 0, 54, 91, 20, 71,139, 3, 7, 14, 28, 56,112,224,240,254,112,246, 57,229, 62,196,254,253, 56, + 81, 96,142,195,124,191, 79, 2,160, 85, 17,170,204,236,145, 20,132,144, 86,165, 80,125,231, 56, 78,142,147,227,228, 56, 57, 78, +142,147,227,252,111,113,154,112, 23, 53,176,226, 89, 1,190,247, 50, 96,228, 93,129,152, 63,109, 89, 41,200, 63,208,176, 9, 28, + 39,199,201,113,114,156, 28, 39,199,201,113,254,179,156, 31,180,152,122,219,154,245,150, 64,228,186, 14, 57,112,224,192,129, 3, + 7, 14, 28,202,128,226,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112, 40, 3, 8, 33,110,120, 51, 69,213,137,188, 53,103, +209,226,192,129, 3, 7, 14, 28, 56,112,120, 71,232, 64, 41,221, 92, 88,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3,135, +178,193,232,167,101,233, 92,135, 28, 56,112,224,192,129, 3, 7, 14, 28,138, 65,113, 62, 90,111,141, 58, 60,113,226, 4,237,208, +161, 3,225,170,140, 3, 7, 14, 28, 56,112,224,240, 62,240, 33,106, 17, 19, 11,214,137,130,193,169, 57,139, 22, 7, 14, 28, 56, +112,224,192,129, 67, 25, 96,180,104,229,117, 27,190,149,198, 9, 45, 14, 28, 56,112,224,192,129, 3,135, 50,160, 56,139, 22, 3, +188, 49,211,113,213,196,129, 3, 7, 14, 28, 56,112,120, 95,248,144,181, 8,165,116,115,222,242,151,233,146,140,163, 14, 91,228, + 21,176, 5,119,169, 57,112,224,192,129, 3, 7, 14,239, 1, 31,172, 22, 33,132,184,229,117, 27,186,253,101,219,223, 57, 5, 15, + 7, 14, 28, 56,112,224,192,129,195,199, 14, 99,252,172,194,226,104,113, 66,139, 3, 7, 14, 28, 56,112,224,192,161,140, 66,171, + 96, 90,190,131, 60, 39,180, 56,112,224,192,129, 3, 7, 14, 28,254, 30,252,173,145,225, 9, 33,173, 56, 78,142,147,227,228, 56, + 57, 78,142,147,227,228, 56, 63,118, 24, 35,194, 23,180,110,113,225, 29, 56,112,224,192,129, 3, 7, 14, 28,202, 40,178, 76,125, +179, 76,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 77,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,101,128,113, +196,161,233,127, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 67,177, 85, 88, 58,215,117,200,129, 3, 7, 14, 28, 56,112,224, + 80, 6, 20,116,128, 55,253, 79, 0,180, 42, 66,153,157,179,224, 4, 22,143, 62, 40,137,159,227,228, 56, 57, 78,142,147,227,228, + 56, 57,206,143,143,179, 36,110, 75,244,199,191, 73,104, 21,229, 12, 15, 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201, +113,114,156, 28, 39,199,249, 49, 47, 0,220, 0,140, 52, 89,220,140,219, 56, 31, 45, 14, 28, 62,116, 28, 36, 60,164,249,249,128, + 82,119,240, 68,113,136,123,244, 10,243, 40, 91,102,206,132, 0,111, 72,117, 46,208, 75,146,144,240,240,117,153, 57, 57,112,224, +192,225, 35, 69,222,100,210,133,250,104,113, 66,139, 3,135, 15, 29, 73,254,190,224, 99, 9, 24,184,129,106, 67,225, 20,176, 4, +192,227, 50,115, 10,217, 69, 48, 48,158,160,218,231,112,246, 91, 10, 32,152,171,108, 14, 28, 56,112,176, 12,255,184, 51,188, 64, + 32, 72, 32,132,176, 98,177,248, 80, 97,179, 92,115,224,240,174, 64, 8,113,147, 74,165,135, 8, 33,172, 80, 40, 76,248, 40, 11, +185,179,186, 12,140,225,115,141,142,245,248,253, 81,186,115,142,218,224, 11, 70,223, 30,191,248, 90,149,137,147, 79,218,228,106, + 89,175, 93,183,115, 92,148, 26,125, 85, 80,148,141,243,207,107, 98, 43, 18,137,126, 39,132, 56,114,119,232,199,137, 0, 66, 62, +169, 43, 16, 76,169, 74,200,167,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245,206, 81, 81, 81,100,203,150, 45,157,173,173, +173, 67, 5, 2,193, 76, 66,136,240,191, 82,225, 10,133,226,186,141,141, 77,130,173,173,109,130,141,141,205,189,146,210, 63, 82, + 1,228,235,236,236, 28,225,224,224,240,220, 52,221,185,102,183, 70, 85,154, 12,154,231, 24,216,181,121, 25,249,133, 2,129, 96, +166,141,141, 77,232,230,205,155, 59,135,132,132, 16,157, 78,231,252, 81, 86,102, 46,235, 2,134,215,242, 73, 92,142, 44, 46, 83, +231, 18, 20,158,163, 0,120, 45,160, 65,233, 63, 98, 50, 88, 23,128,126,250, 32, 90, 37,191,158,234,228,114,229,149,218, 26, 12, +211, 18,185,196,181,204, 13, 14,195,140, 97, 89,182,181, 80, 40,252,138,107,126, 63, 78,136, 24,166,241,245,206,157, 23, 77,175, + 81, 99,188, 63,208,169, 48,177, 69,222, 96, 66,213,170, 85, 79, 17, 66,250,188,195,182,229,123,127,127,255, 24, 66,200, 68,238, + 74,112,248,135,223,107,181,141, 31,248,121,211,240,184, 89, 44,180,122, 86, 32,141,251, 85, 36,151,122, 87, 32, 89,125, 42,146, +236,129, 21,201,213, 30, 21,200,167,165,201,144,167,167, 39, 26, 53,106,196,139,140,140,148, 78,156, 56,113,158, 88, 44, 14, 35, +132,180, 45, 13,151, 76, 38,187, 43,151,203,163, 4, 2,193, 91,121,145,203,229,119,173,172,172,162, 4, 2,193,103,166,233,214, +214,214,215,109,108,108, 18,172,173,173,239, 21, 33,132,238,218,216,216, 36, 40, 20,138,187,166,233, 2,129,224, 51,133, 66, 17, +109,109,109, 93, 48,253, 83,107,107,235,168,130,233, 69, 65, 32, 16,120, 70, 69, 69, 57, 71, 71, 71, 59,139, 68, 34, 23,211,244, +200,200, 72,231,168,168,168,183,210, 45,129, 64, 32,248,212,202,202, 42, 74, 46,151,223, 45, 44,189, 96,153,138,130, 73,221,125, +106, 78,186,165, 34,171, 77,155, 54, 87,227,226,226,188,108,109,109,109, 77,183,217,219,216,182,253,117,235,250,201, 93,218,183, + 25,227, 28,240, 69,245, 82,242,183, 21,139,197, 97,147, 38, 77,154, 23, 29, 29, 45,173, 95,191, 62, 79, 40,252, 72,117,252,193, + 0, 33, 8,219,140,165,212,233,105, 76,174, 83,135,206, 61,249,247,163, 84, 78, 58,131,193, 30,224,181,192,246,242,226, 82,113, +242,117, 77, 89, 74, 93,254, 8, 23, 56,181,236, 53,158,119, 62,156,239,164, 51, 24, 28,192,160,121,169, 56,255,188, 54, 2, 30, +143, 55,121,229,202,149, 12,128,113,132, 16,209,127,169, 33,174,239, 65, 60, 62,171,204,191, 93,199,157, 52,126,135,141,123,160, + 92, 46,191, 75, 8,241,253,183,148, 83,195,178,207,246,190,126,125,122, 64,165, 74, 29,167,215,168, 49,164,160,216,202,251, 61, +125,233,210,165, 3,159, 60,121,226, 84,161, 66,133, 81,132, 16,230, 29,212,197,234,165, 75,151, 78,123,242,228,137,187,143,143, +207,130,119,193,201,225,223,165,225, 1,180, 4,208, 1,192,103, 0,234,229,253,174,155,183,116,192,155, 40, 10,166,235,186,121, +199, 26,183,215, 47,130,163, 67, 33,199,213, 53, 73, 55,253, 95,240,183, 17,181,243,214, 29,242, 70, 27,118,200,223, 66, 41,197, +241,227,199,169,233,186,224,210,219, 7,243,199, 55,242,200,121,122,108, 55,205,142,122, 77,211, 66,238,211,251,155,191,163,227, +235, 58,229,244,171,128,239, 45,244,204,167,148, 82,186,107,215, 46,122,254,252,121,154,158,158, 78,131,131,131,105,189,122,245, + 84, 50,153,236, 15, 0, 62,150,240, 41, 20,138,132, 63,254,248,131,182,105,211, 38,195,202,202,106, 5, 0,134, 82, 10,107,107, +235,132,107,215,174,209, 54,109,218,100, 40, 20,138,213, 0,120,148, 82,116,239,222, 61,145, 82, 74,157,156,156, 98, 11,227,235, +210,165, 75, 26,165,148,218,216,216, 36,228,229,151,167, 80, 40, 86,143, 29, 59, 54,251,206,157, 59,212,206,206,206,152,206, 88, + 91, 91,175, 24, 55,110, 92,118, 80, 80, 80,126,122, 73,139,189,189,125,148,193, 96,160,199,142, 29,163,206,206,206,249,121,176, +179,179,139, 50, 24, 12,244,200,145, 35, 69,230,173,152, 58,101,172,172,172,150, 15, 24, 48, 32, 43, 60, 60,156, 58, 56, 56, 36, +152,164,175, 24, 52,104, 80, 86,100,100, 36,117,116,116, 52, 43,143, 14, 14, 14, 9,215,175, 95,167,221,186,117,203, 52,173, 83, + 7, 7,135,132, 27, 55,110, 24,211,151, 27,211,139, 91,220,221,221, 71, 57, 59, 59,199, 58, 59, 59,199,218,218,218, 46,118,115, +115,139, 79, 74, 74,162,148, 82, 90,177, 98,197, 68, 74, 41,156,106,124,209,168,114,227,129,243,156, 3, 59, 79,218,120,224,198, +173,203,143, 83,146,106,180, 30,179,220,166, 70, 23, 27, 11,234,192, 71, 34,145,252,209,172, 89, 51, 85,120,120, 56,205,206,206, +166,119,239,222,165, 87,174, 92,161, 79,159, 62,165,121,247,221,199, 53,210,101,125,128, 39,221,228,183, 55,120,174, 87,200,229, +165,237,116, 52,252, 60,221, 61,196, 73,119,105,146, 71, 40,253,201,255,127,116, 83,213,114,165,226,252,169,234,238,135,179,189, +158,173, 93, 48, 65, 23, 17, 17, 65,167, 12,106,167, 63, 51,222,227, 21,221,232,127,160, 84,156,127, 94,163,190, 95,124,241, 69, +118,100,100, 36, 13, 8, 8, 80,242,120,188, 97,255,149, 17, 73,245,220,225,209,202, 87, 20,243,112,215, 20,182, 83,160, 44,165, +182, 27, 26,191,131, 81, 78,129,206,206,206,201,219,183,111,167, 10,133, 34, 17,128,239,191,100,244, 21,241, 7, 58,239,168, 81, +227, 8,219,163,135, 97, 71,141, 26, 71,252,129,206,120, 19, 78,136, 0,152,177,108,217,178, 32,157, 78, 23,180,109,219,182,160, +206,157, 59, 7, 1,152, 82,198,115,254,248,253,247,223, 83,157, 78, 71,183,109,219, 70, 59,119,238, 76, 1,172, 49,247,120, 43, + 43,171,202,213,171, 87,223, 25, 16, 16, 16, 89,179,102, 77, 77,213,170, 85,115,125,125,125,195, 3, 3, 3,183,139,197, 98, 31, +110, 84,221, 63,179,148,160, 69,234,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210, 14,121,237,122, 7,211,223, 5,215,148, +210, 86,166,255, 11,227, 48, 46,133,113, 22,118,142, 2,191, 11,142, 58,116,203,251, 63, 50,127,155,177, 80,199,143, 31,111,126, +252,248,241, 75, 5, 11,215,179, 2, 26,141,111,228,161, 82, 37,197,209,199,223,125, 69, 47,180,244,164,215, 90,184,210,231,147, +191,160,113,187, 86,211, 47,107,217,229,244,168,128,150,150, 10,173, 67,135, 14,209, 35, 71,142,208,147, 39, 79,210,199,143, 31, +211,148,148, 20,186,107,215, 46,131,131,131,131, 74, 44, 22, 47, 5, 32, 53,135,207,218,218, 58,129, 82, 74,213,106, 53, 93,188, +120,113,174, 66,161,184, 7,192, 37, 79, 40,209,244,244,116,186,116,233,210, 92, 27, 27,155,135, 0,220, 29, 29, 29,163, 94,191, +126, 77, 93, 92, 92, 10, 21, 51,118,118,118, 9,207,158, 61,163,118,118,118, 9, 0, 60,236,236,236, 30, 31, 61,122, 84, 75, 41, +165,209,209,209,212,222,222, 62, 1,128,139,131,131,195,253,227,199,143,107, 41,165, 52, 54, 54,150,218,219,219,155, 45,180, 84, + 42, 21, 61,115,230,204, 91,121, 48,166,159, 58,117,234, 45, 1,102, 70,125,186,216,216,216, 4,237,219,183, 79, 99, 48, 24,232, +227,199,143,169,141,141, 77, 2, 0, 23, 91, 91,219,123, 7, 14, 28,208, 24, 12, 6, 26, 18, 18, 98,182, 24, 44, 95,190,124, 34, +165,148,234,245,122,186,113,227, 70,181,177, 78,141,233, 26,141,134,110,216,176, 65,109,109,109, 29, 4,192,165, 56, 46, 71, 71, +199, 88,141, 70, 67,211,211,211,105,253,250,245,179,175, 93,187, 70, 51, 51, 51, 41,165,148,230,241,193,175,249,176,111,111,189, +200,206, 28, 58,109,253,126,159,122,253,190, 59,125, 59, 38,250,231,223,238, 6, 57, 6,118,105,103, 70,249,165, 66,161,112,169, +155,155, 91,238,249,243,231, 13, 26,141,134,190,124,249,146, 94,191,126,157,222,188,121,147,222,189,123,151, 62,126,252,248,227, + 19, 90, 7,192,163,155,252,186,208, 77,126, 65,219, 7, 56, 38,103,221,219, 67,233,217,137,244,213,183, 21,232,220,118,138, 44, +118,147, 95, 16,221,228,223,131,206,111,206,183,136,115,115,213, 78,116,147, 95,208,247, 61,189, 83,238, 7,221,161,151, 46, 93, +162, 27, 86, 47,163,227, 91,121, 40,217, 77,126, 65,244,167,170,221, 44,226, 52, 89,196, 98,241,139,171, 87,175,210,203,151, 47, +211, 5, 11, 22, 80,153, 76, 22, 89,246,122,168, 42,164, 63,249,122,211, 45,190,205,233,214, 42,110,244, 98,233,242,246,119,139, +172,214,190,162,232,228,251,191, 81,154,250,146,198,175, 8,160,237,252, 4,101, 18, 91,121, 34, 43, 41, 60, 60,156,198,199,199, +211, 85,171, 86, 81,107,107,235,127,181,216,242, 3,186, 0,152,185,124,249,242,124,145,181,126,253,250,160, 71,143, 30, 5,121, +121,121,157, 44,195,185,214, 44, 95,190, 60, 95,100,173, 95,191,158, 62,122,244,136,122,123,123, 71,149,116,236,128, 1, 3,100, +141, 26, 53, 10,234,223,191,127,206,246,237,219,105,120,120, 56,125,248,240, 33, 93,190,124, 57,157, 55,111, 30,253,229,151, 95, +104,183,110,221,148,245,235,215,191,213,163, 71, 15,137,133,121,227, 83, 74, 69,121,139,128, 82,106, 20,154,124, 0, 2,227,199, + 63,183,188, 45,180,138,210, 34, 69,137,169,162, 4, 86,193,109,197, 8,177, 98, 5, 91, 73,231, 43, 40,170, 10, 91, 76, 77,171, + 23, 59,116,232,240, 23,223, 24, 62,197,194,145, 95,127, 43, 9,219,190, 10, 9,251,214,129,151,158, 0, 65, 86, 10,212, 87, 79, + 64,119,245, 40, 6, 54,108, 40,149, 18,178,200, 82, 27,160, 68, 34,129, 84, 42,133, 88, 44, 70,122,122, 58, 94,189,122,133, 70, +141, 26, 49,119,239,222,149,140, 28, 57,114,162, 84, 42,141, 36,132,116, 53,195, 92, 12, 0,184,126,253, 58, 70,140, 24, 33,222, +185,115,103, 77, 39, 39,167, 7, 6,131, 65, 4, 0, 33, 33, 33,232,221,187,183,120,207,158, 61,213,220,221,221,239,105,181, 90, +153, 88, 44, 6,143,199, 43,146, 79, 36, 18, 65,167,211,137,171, 84,169,242,240,193,131, 7,129, 29, 59,118, 20, 68, 68, 68,224, +245,235,215,208,233,116, 34, 95, 95,223, 71,247,238,221,171,217,161, 67, 7, 65, 84, 84, 20, 34, 34, 34, 96,174,207, 39, 33, 4, + 26,141, 6, 98,177, 24, 12,195,188,149,174, 86,171, 33, 18,137,204,230, 18, 8, 4,159,250,251,251, 63,122,240,224, 65,237, 46, + 93,186, 8,239,220,185,131,232,232,104, 24, 12, 6, 81,213,170, 85, 31, 61,120,240,160, 86,231,206,157,133, 15, 31, 62, 68, 66, + 66,194, 91,231, 43,193,143, 6, 0,240,224,193, 3,244,239,223, 95,244,251,239,191,215,114,115,115,123,168,215,235, 69, 0,240, +232,209, 35,244,238,221, 91,116,250,244,233,218,229,202,149,123, 88, 66, 87, 34, 15, 0,116, 58, 29, 70,141, 26, 37,183,182,182, + 70, 84, 84, 20, 88,150,133,193, 96, 0, 0,164,164,165, 60,122,240,232,113,200,192,190, 61,155,171,180,106,245,141,219,119,159, + 86, 44,239,237, 73, 8, 45, 95, 66, 93,118,149,201,100,145,223,127,255,253,164,176,176, 48,177,159,159, 31,243,240,225, 67,164, +167,167, 67, 36, 18, 65, 34,145, 64, 44, 22, 67, 32, 16,124,124, 70,244,204, 0, 7,176,104, 29,145,164, 17,139,109, 61, 21, 86, +110,190, 64,228,101, 84,112, 18,131,199,240, 36,119, 94,231,200, 1,218, 26, 94,201, 14,150,113,178,173, 95, 39,106,196, 58,251, +106, 86,238,158, 94, 72, 73, 73, 65,185,138,254,200, 21, 57,137,174,191, 84, 90,129, 88,200,249,231,181,106, 90,165, 74, 21,215, +202,149, 43, 35, 57, 57, 25,181,107,215,134,157,157,157, 29, 33,164,117,169,235, 96,123,121, 49, 50,209, 24, 96, 86,192, 64, 22, + 64,199, 95,130,151, 73,181,177,185,206,191,230,130,215,247, 32, 30,214, 86,162,155,123,246,238,243,112,240,170, 10,156, 24, 10, + 23, 91, 49,182,142,169,109,239,100, 35, 62, 82,154,110, 68, 66, 72,160,139,139,203,249, 91,183,110, 57, 74, 36, 18,220,187,119, + 15, 1, 1, 1, 88,181,106,149,147,157,157,221,229,127, 67, 55, 34,165,148,134, 0,199,190,127,248,112,219,206,208,208,227, 3, + 42, 85,234,216,223,215,119,241,232, 62,125,134, 77,152, 48, 1,203,150, 45,195,145, 35, 71,208,184,113, 99,140, 28, 57, 82, 23, + 25, 25,185,163,148,221,133,235, 86,172, 88, 49,126,226,196,137, 5, 57,181, 17, 17, 17,223, 23,119,108, 96, 96,160,231,139, 23, + 47, 98, 38, 79,158, 92,123,231,206,157, 82,153, 76,134,244,244,116,108,217,178, 5, 51,103,206, 4, 33, 4,148, 82,252,242,203, + 47,178, 33, 67,134,212, 11, 13, 13,141, 41, 95,190,188, 57,110, 29, 4,128, 4,128, 44,111,145, 3,144,237,217,179,199,166, 75, +151, 46,214,121,105, 82, 0, 82, 66,136, 24, 28, 10,162, 80, 45, 98,114,205,143, 23,184,215, 58, 22, 76, 43,184,141, 82,218,177, + 56, 14, 11,239,237,194,206,119,162, 96,100,248,183,222,169, 38,191, 91,156, 56,113,226,210, 95, 72,129, 26,174, 62,126,200, 56, +123, 0, 82, 62,129,148,151,183,240, 9,152, 87,143, 80, 78, 34,128,142,210,192,210, 8, 45,163,216,146, 74,165, 16, 10,133,200, +206,206,134, 78,167,195,172, 89,179,196,103,207,158,117, 96, 24,230,127, 37,241,152, 10,166,231,207,159,163,106,213,170,228,216, +177, 99, 46,227,198,141,147, 2,128, 72, 36, 66, 70, 70, 6, 42, 87,174, 76, 78,157, 58,229, 60,123,246,108,171,226,196, 12, 33, + 4, 66,161, 16, 19, 39, 78,148,222,190,125,219,222,221,221, 29,175, 94,189, 66,106,106, 42,172,172,172, 48,113,226, 68,233,173, + 91,183,156,220,221,221, 17, 30, 30,142,140,140, 12, 88, 89, 89, 89, 44,180,132, 66,225, 91,199, 16, 66,160,213,106, 33, 18,137, +204, 22, 68, 54, 54, 54,187,131,130,130,156,108,108,108,240,240,225, 67,232,245,122,216,216,216, 96,252,248,241,210,160,160, 32, + 39, 91, 91, 91,132,132,132, 24, 45,127, 22,229, 17, 0, 88,150, 69, 72, 72, 8,202,151, 47,143,203,151, 47, 59,143, 30, 61, 90, + 98, 76,127,249,242, 37, 60, 61, 61,113,249,242,101,103,185, 92,190,187, 40, 46,150,101, 17, 23, 23,135, 39, 79,158,224,213,171, + 87, 72, 74, 74, 66,114,114, 50,178,178,178,160,215,235,223,248,217,101,101,158,216,179,255,216, 3,169, 84, 42, 11,240,173,226, +245,232,113,112,162, 84, 42,149,121,123,121,249, 18,178,128, 41, 38,159,255, 11, 13, 13,117, 24, 50,100,136,240,197,139, 23,136, +141,141,133, 64, 32,200,191,183,140,139, 88,252,145,181,101,132, 16, 16, 77, 21, 16, 82,251,230, 43,165,125,211,142,125,133,120, +253, 59,192,234, 0,134,143, 22, 53, 60,249, 71, 30, 41, 93, 64, 81, 3,106,248, 3,102, 92,120, 66, 8,160,173, 12,144, 79,206, +188,208, 59, 52,254, 98,140, 48, 38, 38, 6, 66,161, 16, 98,177, 24,181, 63,237,206,223,243, 64,231, 10,130,154,208,194,207, 44, + 78, 19, 72,165,210,111,230,205,155, 39, 55,229, 28, 54,108,152,220,198,198,102, 94,169, 69,150, 82,214, 16,122, 58,241, 73, 76, + 78,249,197, 39,226,171,134, 38,170,252, 64,233,100, 64, 87,171,172, 98,139, 16,210, 66, 34,145,188, 38,132, 52, 41,147,200, 82, +136,110,236,221,187,207,195,190,220, 27,145, 5,125, 46, 32,144,194,213,201, 22, 91, 39,181,180,119,178,149, 90, 36,182,242, 68, +214, 31, 55,111,222,116,148, 72, 36, 8, 10, 10,130, 80, 40,132, 68, 34, 65,245,234,213,177,105,211, 38, 39,123,123,251,127,149, +216, 90,250,240,225,246, 37, 79,158, 60,159, 17, 24,232,223, 85, 46,183, 31,219,191,191,205,236,217,179,143, 31, 61,122,116, 91, +135, 14, 29,146,111,223,190,253, 3,165,244,128,133,215,135, 16, 66,214,175, 92,185,114,172, 81,184,205,158, 61,251,151,163, 71, +143, 46,233,208,161, 67,220,237,219,183, 39, 83, 74,215, 23,199,145,157,157,125,116,206,156, 57, 54, 95,124,241,133,241, 63,174, + 94,189,138, 29, 59,118, 64, 46,151,191,181,111,231,206,157, 49, 98,196, 8, 59,141, 70, 83,236, 59,201,197,197,229,179,155, 55, +111, 6, 0, 16, 2, 16, 27,133,214,227,199,143,109, 51, 51, 51,109,173,172,172,108,221,220,220, 20, 70,177,245,197, 23, 95,216, + 10, 4,130, 38,224,128,146,180,136,169,208, 49, 39,173,180,251,155, 43,182, 10,252,143, 43,106,158,195,183,132, 86,135, 14, 29, + 46, 1,104, 86,216, 78,218,212, 4,136, 97,128,148, 71, 32,227,153,136, 45,176,224,103, 36,162, 52, 3,120, 11,190, 12,165, 82, + 41, 36, 18, 9, 4, 2, 1,116, 58, 29, 50, 50, 50, 44, 18, 5,214,214,214,176,178,178,130, 74,165,130, 94,175,135, 68, 34, 49, +138, 17, 88, 91, 91, 67, 32, 16,228,191,132, 11, 90,147, 10, 90,115,132, 66, 33,228,114, 57,226,226,226, 16, 17, 17, 1,150,101, + 97,101,101, 5,185, 92, 14,145, 72,132,216,216, 88,196,198,198,130, 82, 10,185, 92, 14,185, 92,110,182, 56, 2, 0,131,193, 0, +145,232,175,126,192, 58,157,206, 34,139,150, 94,175,199,211,167, 79, 17, 25, 25, 9,137, 68,146, 95, 86,177, 88,140,151, 47, 95, + 34, 62, 62, 30, 50,153, 12,214,214,214,176,177,177, 49,155,215, 88, 22,133, 66, 1,169, 84,138,180,180, 52,228,228,228,228,215, +169,181,181, 53,228,114, 57, 50, 50, 50,144,152,152, 88,108,217, 13, 6, 3, 98, 99, 99,145,148,148,132,168,168, 40, 36, 39, 39, +231,139, 45,150, 45,123,252,203,203,151, 47,227,213,171, 87,198,174,169,252,235,107,186, 54,230,251,163,193,134, 64, 27,232, 4, +109,146,179,117,226, 36,173,208,198, 37,176, 21,240,250, 20,192,240, 1,137, 29, 26, 84,171,128,136, 52,131,252, 89,130, 70, 2, +130,182, 88,239,107,103, 22,167, 65,208, 58, 41, 75, 39, 14,215, 58, 89, 87,173, 81, 7, 9, 9, 9, 16,139,197, 16,139,197,248, +164,113, 43,188, 78, 49,200,130, 99, 84, 50, 80,180, 49,139,243,207,103,180,162,149,149, 85,195, 38, 77,154, 16, 83,206,246,237, +219,131, 16, 82,157, 16,226,111, 81,249,215, 86, 18, 65, 43,107, 0, 62,157, 24, 28,151,227,126,228,113,174,111,167,174,221,237, +127, 60,151, 88,245,105,188,218, 7, 84,247, 53,168,182, 78,105,197, 22, 33,164,185, 66,161, 56,190,118,237, 90, 31,137, 68,114, +138, 16,210,180, 52, 60, 86, 82,222,198,111,198,246,245,176, 51,138, 44, 93, 14,192,151, 2, 2, 41,192,151,194,213,217, 17,139, + 70,180,182,151, 73, 4,135, 44, 16,172,123,214,175, 95,239, 84, 80,100, 25,151,218,181,107, 99,238,220,185, 78,246,246,246,187, +223,243,183, 64, 27, 91, 91,219,157,173, 90,181,186, 25,171, 80,140,136,171, 83, 71,244,135,141, 77,198,103, 25, 25, 54,222,143, + 31,107,253,128, 71, 0, 54, 68, 69, 69,181, 51, 87,100, 17, 66,250,216,216,216, 4,181,106,213, 74,171, 80, 40, 34, 87,173, 90, +245,229,184,113,227,176,108,217, 50,204,153, 51,103, 11,128,225,148,210, 89, 81, 81, 81,238, 37,137, 44, 0,136,143,143,239, 55, +125,250,244,228,228,228,100, 0, 64,245,234,213,145,158,158,142, 41, 83,166,224,171,175,190, 2, 0,212,170, 85, 11,148, 82, 36, + 36, 36, 96,197,138, 21, 9,241,241,241,131, 75,104,219,163, 14, 28, 56, 80, 79,171,213,122,230,117, 15,138,211,211,211,173, 83, + 83, 83, 21, 90,173, 86,206,178,172,220,214,214,214, 10,128,108,224,192,129,252,224,224,224,170,122,189, 62,134,211, 86,127,162, + 56, 45, 82, 74,156, 40,139,229,170, 48,139, 88, 17,247,103,241, 22,173, 14, 29, 58, 16,211,245, 91, 22, 35,130,135,145,119, 47, +195, 62,176,206, 91,214, 44, 25,143, 64,106,109,131,215, 81, 17, 16,130, 60,177,180, 16, 70, 97, 85, 80,108,101,100,100, 96,204, +152, 49,170, 94,189,122,165,176, 44,219,221, 92, 81, 96, 99, 99, 3, 27, 27, 27, 4, 7, 7,211,110,221,186, 37,172, 90,181, 74, +101, 42,180,158, 63,127, 78,219,180,105,147, 56,111,222,188,236,226,132,150,209,162,181,116,233, 82, 85,139, 22, 45,146,158, 60, +121, 66,141, 98,202,202,202, 10, 43, 86,172, 80,181,108,217, 50,225,206,157, 59,212,152,102,137, 69,139, 97,152,124,161,101,122, + 12,195, 48, 96, 89,214, 34,161,165, 84, 42,251,117,232,208, 33, 33, 36, 36,132, 26,203,105, 99, 99,131, 85,171, 86,169, 90,183, +110,157,240,228,201, 19,106, 76,179,182,182, 54, 91, 12, 26,207,175, 80, 40, 96,109,109,141,224,224, 96,218,166, 77,155,132, 53, +107,214,228,154,166, 63,125,250,148,118,238,220, 57, 33, 43, 43,171, 95,113, 22,173, 87,175, 94,229, 91,176,114,115,115,145,156, +156,140,168,168,168,252,174, 67,149,220,186, 93,223, 94,157,106,170, 84,170,156,224,231, 47, 34,171, 87, 11,112, 86,169, 84, 57, + 17,145,145,207, 41,157,199, 22,243, 32,116, 31, 58,116,104,202,204,153, 51, 85,153,153,153,133,138, 44,227,250,163, 2,195,186, +130,208, 38, 87, 94,100,219,182,238,212, 91, 68,226,111, 3,218,108, 64,108, 7,136,237,192,151, 59,224,243,166,181,120,219,111, +102,186,130,178,141, 32, 20,123,150,200, 41,160, 46, 0,219,244,236,243, 92,187, 38, 61,198,139, 82, 83, 83,193,227,241,242, 69, +145, 76, 46,199,103, 93, 7, 50,191,220, 86,187, 2,180, 49, 8,207,211,220,236,138, 68,162,105,223,124,243,141, 48, 45, 45, 13, + 12,195,252,201, 41,147, 97,244,232,209, 98,107,107,235, 57,102,151,253, 96,128, 16, 2,113, 3,128,126,245, 44, 62,215,253,232, + 35,149,223,215, 75,183, 74, 3,107,213,195,168, 22,206,210,165, 39, 18, 3, 31, 68,169, 42, 0,134, 73,208,107, 62,177, 84,108, + 17, 66,154, 42, 20,138, 19,119,239,222,149,181,111,223, 30, 43, 86,172,144, 75,165,210, 83,132, 16,139, 27,126,101,182, 97,220, +194, 53,191, 38, 60,252,161, 45,160, 85,190, 17, 88, 38, 75, 98, 54,139,185, 91,207,103,232,116,180,175,185,156, 42,149,106,208, +240,225,195, 83, 14, 29, 58,244, 23,145, 37,145, 72, 16, 22, 22,134,197,139, 23,167,166,166,166, 14,126,159, 34,107,220,184,113, +139,163,163,163,253,206,158, 61,203, 79, 74, 74,114, 94,249,243,207, 25, 7, 51, 50, 82,151, 60,126,252,108, 86,181,106, 85,102, +212,168, 49,184,168,208, 15, 69,137,172,177, 99,199,238,137,142,142,174,125,238,220, 57, 65, 82, 82,146,231,216,177, 99,177,124, +249,114,204,153, 51,103, 19,128, 81, 52,207, 89,198, 92,104, 52,154,103,105,105,105, 29,219,182,109,155,158,150,150,134, 26, 53, +106,160, 83,167, 78,112,117,117,133,187,187, 59,186,116,233, 2, 95, 95, 95,164,164,164,160,111,223,190,169, 73, 73, 73,109, 41, +165,175,138,227, 76, 73, 73, 9,221,189,123,247,243,241,227,199,215,142,142,142,174, 10,192, 33, 43, 43, 75,158,149,149, 37,214, +104, 52, 82, 59, 59, 59,187, 90,181,106, 57,142, 28, 57,210,234,254,253,251, 85,163,163,163,179, 1, 68,112,242, 42, 95,100, 21, +169, 69, 0, 36,229, 9, 30, 77,129,117, 82, 9,219,204, 61,182,208,223,102,236,247,150,216, 50, 93,254, 98,209, 42, 10, 90, 96, +238,142, 3,219,115, 69, 94,149, 97,227, 87, 19, 50,137, 4, 82,145, 8, 82, 59, 7,168, 89, 22, 63,135,197,231, 40, 41,157, 99, +105,133,154,118, 27, 74, 36, 18,240,120, 60,108,216,176, 65,223,176, 97,195,220,243,231,207,175,205,201,201,241,162,148,254,102, +137, 40, 88,179,102, 77,206,196,137, 19, 31, 36, 38, 38,214,148, 72, 36, 26, 99,250,218,181,107,115, 6, 14, 28,248, 56, 58, 58, +186,182, 76, 38,203, 41,202, 63,203, 84,104,137,197, 98,117, 98, 98, 98,189, 97,195,134,133,108,216,176, 65, 41,147,201, 32,151, +203, 33, 22,139, 53,137,137,137, 53,191,252,242,203, 7,203,151, 47,207,145, 74,165,144,203,229, 22,117,203, 81, 74,255, 34,168, + 76,211,205,133, 78,167, 59,159,152,152, 88,115,226,196,137,247,127,252,241, 71,165, 81, 0,153,230,113,229,202,149, 57, 86, 86, + 86, 22, 89,180,140,251,201,229,114,172, 94,189, 58,103,252,248,241, 15, 18, 19, 19,107,138,197, 98,141, 73,186,114,220,184,113, +247, 19, 19, 19,107,234,116,186,243,197,124,225, 25, 50, 51, 51,193,231,243,241,248,241, 99,181, 80, 40, 4,195, 48,120,249,242, +101,190,208,178,183,183, 15,168, 89,189,154,255,175,123, 14, 92,146, 10,197,226,134,245, 62,169,250, 42, 60, 34,154, 82, 18, 94, +194, 23,199,111,185,185,185, 94, 87,175, 94, 93,219,182,109,219,220, 45, 91,182,232,249,124,254, 95, 94, 62, 31,159,208,130, 12, + 4,210, 23,137,106,133,132,209, 19, 60,255,237,141,200,146,216, 2, 18, 59, 64, 98, 7, 15, 15, 79,220, 14,203, 81,128,129, 8, + 6, 51, 98,136, 81, 42, 7,129,236,113, 2, 20, 2,145,148,196,199,199,231, 11, 34,227,226, 83,185, 42,238, 69,100, 91,129, 80, + 49,120,176, 36, 4, 73, 71, 7, 7, 7,126, 92, 92,220, 95, 56, 3, 2, 2,120, 58,157,206,252,208, 46,177, 6, 55,128, 29,251, + 60, 62,215,237,240, 3,165,223,164, 37,191, 72,165,134,116,224,238, 26, 4, 86,116,199,164, 30,181, 68,179,143, 38, 5,222, 9, +207,169, 8, 30, 29, 5, 54,219,201, 2,129,208, 68,161, 80,156,186,115,231,142, 76,161, 80,224,213,171, 87,168, 87,175, 30, 54, +111,222, 44,147,201,100, 39, 9, 33, 45, 44,185, 76, 55,227,105, 68,118,150,161,225,180, 3,145,241, 15,227,244,111,137,172, 36, + 37,197,240,239,143,166,167,101,230,118,191, 17, 89,244,243, 83,200, 61,127, 63, 61, 61,189,205,156, 57,115, 82,146,146,146,222, +186,199, 35, 34, 34,140,130,160, 5,165,244,201,251,186, 61,109,108,108,250, 47, 89,178, 4,119,238,220, 65,251,246,237,113,249, +242,101,164,166,166, 98,239,169, 83, 47,118,191,120, 49,203,232,179, 85, 88,232,135,162, 96,109,109,253,245,146, 37, 75,112,247, +238,221,124,206,148,148, 20, 44, 89,178, 36, 26,192, 24, 75, 69,150, 17, 9, 9, 9,183,159, 61,123,214,182, 70,141, 26, 79,215, +174, 93, 27,237,230,230,198,142, 28, 57, 18,195,135, 15,135,147,147,147, 97,245,234,213,145, 77,155, 54,125, 28, 26, 26,218, 74, +169, 84, 62, 50,227,250,208,228,228,228,235,155, 55,111,190,249,233,167,159,202, 6, 13, 26,228,116,228,200, 17,135,156,156, 28, +119,177, 88,236,172,209,104, 68, 79,159, 62,229, 29, 60,120,208, 53, 56, 56, 56, 76,165, 82,221, 46,109,222,255,131,184,147,103, +157, 58, 87, 96,125,167,132,109,230, 30, 91,212,239,146,246, 51,189,254,155, 77, 23,211, 13, 37, 46,253, 43, 98,254,232,106,138, +156,235, 3, 26,208,248,145, 77,104, 66,239,170,244,106,115,123, 58,172, 18, 81, 14, 42,101,120,135,152,152, 24,154,144,144, 64, + 83, 82, 82,232,190,125,251,168,171,171,171, 82,161, 80, 88, 28,222,193,213,213, 53, 33, 51, 51,147,214,173, 91, 55,213,201,201, + 41, 63, 20,129,155,155, 91,130, 82,169,164, 13, 26, 52, 72,117,118,118, 94,141,188, 17, 30,158,158,158, 81,148, 82,234,237,237, + 29, 91, 20,159, 94,175,167,174,174,174,198, 16, 9, 2,123,123,251,159,234,215,175,159,154,144,144, 64,221,220,220,242, 67, 39, + 56, 57, 57,173,168, 87,175,222, 91,233,102,228, 55, 42, 58, 58,154, 70, 71, 71,211,114,229,202,197,154,166, 71, 68, 68,208,136, +136, 8,234,233,233,105,113,120, 7, 39, 39,167,229, 5,243, 82,218, 60,122,121,121, 37,168, 84, 42,218,168, 81,163,183,234,212, +203,203, 43, 33, 55, 55,215,152,110, 86,120, 7,169, 84, 58, 74, 34,145,196, 74, 36,146, 88,177, 88,188,184,124,249,242,137,251, +247,239,167,171, 87,175,166, 10,133,226, 77,120,135,128,206, 13, 43, 55, 26, 60,203, 41,160,203,215,101, 9,239,160, 80, 40,254, +112,117,117, 85, 30, 60,120,144,170,213,106,170,211,233,168, 17,248,152, 70, 29,110,246,173, 76,127,242, 63, 26,186,208, 39,120, + 98, 51, 89,238,163, 69, 53, 41,253,223, 23,148,158, 28, 78,233,249,105,244,246,166,145,180,145,143,216,112,109, 74,185,231,116, +163,223, 97,179, 66, 50,108,174, 94,153,254,228,127,242,197, 2,159,224, 65, 77,221,115,127,222,176,154,222,186,117,139, 62,126, +252,152,190,122,245,138,158,252,109, 63,109, 84, 81,246,134,243, 39,255,163,150,132,121, 0,208, 88, 44, 22,103,175, 90,181,138, +222,188,121, 51,159,243,232,209,163, 84, 38,147,229, 0,102,142, 90, 6, 8,253, 41,160,171,126,131,223,149,217,173,173,178, 82, +142, 79,163,244,209,118, 74, 55, 7, 82,186,173, 62,165,251, 59, 80,122,108, 48,189,185,186, 7,109,236, 35,212,209,141,126,151, +233,166,128,214,230,230, 83, 32, 16,100, 30, 58,116,136,198,198,198,210,203,151, 47,211,187,119,239,210,144,144, 16, 26, 25, 25, + 73, 79,156, 56, 65, 5, 2, 65, 46, 0,139, 71, 53,214,119,129,119,171, 42,194,184, 7, 75, 27, 83,122,164, 47, 77,218,221,159, +118,172,166, 72,109, 80,142,255,105, 25, 70,218,213,114,112,112, 72, 62,113,226, 4, 13, 11, 11,163,151, 46, 93,162,206,206,206, +201, 0, 2,223,247,253,217,170, 85,171, 91,148,210,160,246,237,219, 7, 1,248,189, 85,171, 86, 65,175, 95,191, 14,170, 87,175, +222, 77, 20, 19,250,161, 56,206,207, 62,251, 76, 75, 41,165,237,219,183,167, 0, 98, 91,181,106, 69, 95,191,126, 77,235,213,171, +167,121, 71,163, 36,121, 0, 6, 11, 4,130,159,237,237,237, 47,216,217,217,157,231,241,120,155, 1, 12, 48,167,157, 43,134,211, + 29, 64, 0,128, 79,242,150,170,121,105,220,136,195,255,210,132,211,230,238,216,195, 7,141,135, 84, 36,151,250, 85, 64, 86,223, + 10,200, 30, 90,137, 92,237,238,131, 79, 45,157,221,219, 40,180, 82, 83, 83,233,253,251,247,105,243,230,205,149,114,185, 60, 6, + 64,219,210,204, 24,238,232,232,120,215,217,217, 57,138,207,127,187,209, 50, 73,255,204, 52,221,217,217,249,186,155,155, 91,130, +147,147,211,189,194, 56, 29, 29, 29,239,186,185,185, 37, 56, 58, 58,222, 53, 61,142,199,227,181,119,116,116,140, 41,152,206,231, +243, 63,117,118,118,142, 42,152,142, 34,102, 54,119,117,117,141,138,141,141,165, 73, 73, 73,212,203,203, 43,182,160, 0,139,143, +143,127, 75,128, 89, 50, 91,122, 81,121, 41, 42,189, 40, 78, 51,234,212,226,235,110,178,205,215,195,195, 35,113,229,202,149,212, +202,202, 42,209,116,155, 95,179,161,223,220,122,145,157, 57,124,250, 79,251,157,170,118,173, 94,154,153,226, 1,180,149,203,229, + 49, 45, 91,182, 84,190,124,249,178, 88,161,133, 15,100, 70,251,191,112, 30,168, 42,164,155,170, 54,166, 27,171,158, 8,153,231, +253,116,112,125,185, 58,104,101,123, 74,207, 79,163, 55,127, 26, 78, 27,250,136,222, 8,162, 77,254,167,232, 47,190,205,232,154, +138, 34,179, 56,127,174,212,148,110,242, 63, 21, 60,215,251,233, 23,117,156, 52,123,182,111,162, 47, 95,190,164, 71, 15,238,166, + 13, 42,228,137,172,141, 85,207,208,159,170,182, 52,139,179, 16,177,181,117,235, 86,250,242,229, 75,122,248,240, 97,179, 68,214, + 91,156, 38, 66,107,102, 43,171,244,225,245, 37,234,190,181, 68,154, 46,129, 66,109,155,202, 66,125, 35,111,190,161,166, 27,195, + 86,117, 2,109,227, 39, 85,211,141,126,151,233,198,170,109,205,205,167, 72, 36,138,132, 73, 76,157,130,139, 88, 44, 78, 42, 74, +104,149,116,221,235,187,192,187,149,175, 56,238,143,133,159,210, 78, 53, 20, 41,230,136,172,146, 56, 1,212,114,116,116, 76,222, +182,109, 27,117,113,113, 73, 50, 71,100,253, 19,247,167,141,141,205,206,236,236,236,160,211,167, 79, 7,181,106,213, 42,104,231, +206,157, 65, 87,175, 94, 13,146,201,100, 59,139, 10,253, 80,181, 64,251, 95,144,211,218,218, 58, 40, 43, 43,139,158, 62,125,154, +182,106,213,138,238,220,185,147, 94,189,122,149,202,100,178,160,127,213,179,201,113,254,119,197,212,155, 24, 90,111, 45, 22, 11, +173,119,117, 33, 0,208,244,244,116, 58,105,210, 36,141, 68, 34,201, 17, 10,133, 51, 1, 8,255, 43, 55,161,163,163,227,117, 23, + 23,151, 4, 23, 23,151,183,196,158,105,186,163,163,227,189,143,249, 1, 4,224, 43, 20, 10, 35, 4, 2,193,115,211,116,167,128, +206, 13, 43, 53, 30, 52,199, 37,176,243,231,101,201, 39, 0,161, 80, 40,156, 41,145, 72,114,166, 76,153,162,201,206,206,254,184, +132, 22,165,160,107, 42,138,140, 98,235,209, 28,239,144, 78,213,100,218,205,147,219,208,134,229, 11,136,172,109,222, 98,139, 56, +243,196,214,253,217, 94, 33, 45,125,173,244, 75,230, 76,162, 13, 42, 72,223, 22, 89,150,112, 22, 16, 91, 50,153, 44,107,222,188, +121,102, 91,178,254,194,249,179,159, 23,221,228,191,243,141,136, 42, 97,249,201,111, 11, 93,231,231,245,111,185,238,245, 93,224, +253,153,175,248,137,185,150, 44,115, 56, 1,212,178,179,179,123,106,174, 37,235,159, 40, 59,128, 54,163, 71,143, 14,122,253,250, +117,208,171, 87,175,130,174, 94,189, 26,212,181,107,215, 32, 0,109, 10,139,179,165,237,214, 77, 93,139, 97, 38,149,192,217,103, +244,232,209,244,245,235,215,244,213,171, 87,244,234,213,171,180,107,215,174, 20, 64, 31, 78,192,112, 66,235,223,190,240,255,233, + 78, 86,137, 68,146,104,107,107,235,100,101,101,117, 34, 55, 55,119, 60,165, 52,238,191,212,201,156,148,148,212,200,146,244,143, + 17,148,210,231, 0,188, 11,166, 39, 62, 57,114, 3,192,141,119,192,175, 5,176,132, 16,178, 99,211,166, 77,107, 87,172, 88,209, + 85, 34,145, 36,125, 84,149, 56, 62, 84,131,181,149,238, 66, 36, 90, 90,205, 67, 54,227,155,246,148, 44, 57,125,221,123, 89, 55, +231,200, 70,149,228, 97, 16,176,223,131,168,111, 99,112,184,218, 66,206,219,144,234,150,214, 44, 39,155,241, 93, 23,144,239, 79, +109,247, 94,222,213, 33,178, 81, 69,171, 72, 80,124, 15,113,206, 13,139, 56,223,190, 46,215, 8, 33,159,175, 92,185,114, 71, 78, + 78,206, 8, 74,233, 5,139, 73, 20, 76, 60,148,186,121,208,241,170,129, 66, 84,204,201,114,192,240, 30, 35, 17,255,154,201,196, +111,198,211, 8, 0,129,239,248, 89,186,159,215, 29,245,111,122,190,207, 16, 66,176,123,247,238,254,254,254,254, 21,131,131,131, + 95,229,228,228,236,162,148,158, 49,245,101, 34,132, 28,251,254,225, 67,229,186,224,224,107, 26,150,189, 86, 2,231,222, 60,206, +175,253,253,253, 3,131,131,131,159,228,228,228,172,164,148,238,229, 92,151, 56,252,219,241,143, 11, 45,149, 74,229,194, 85, 59, +135,127,168,193,143, 3,208,237,163, 45,160,137,216,170,227, 37, 29,127,104,180, 52, 7,148, 68, 67,192,174,182, 88,100, 21, 34, +182,234,121, 75,191, 58, 60, 74,154, 3,138,120, 80,252, 80, 22,145,101, 42,182, 0, 84, 40, 53, 65,143, 96, 45,128, 48, 16, 18, +142,249, 40,218,137,122, 62,242, 63,187, 57,188, 31,177, 5,224, 76, 9,251, 80, 0,231,243, 22,115, 56,247, 2,224,132, 21, 7, + 78,104,113,224,192,225, 31, 22, 91, 7, 3,238, 32,153, 55, 5, 12, 42, 0,250, 8, 40,245,241, 24, 31,174, 41, 35,231, 45, 36, +147,137,224,193, 23, 34,125, 40,178, 53,241, 24, 93, 6,206,191,225, 77,142, 55,190, 83,133, 99, 30,119,107,112,224,192,225,159, + 3, 33,100,164,233, 72, 67,211,255,156,208,226,192,225, 67,199, 27, 43, 79,116,222,242,239,229,228,192,129, 3,135,255,152,224, + 2,222,204,201,212,170,136, 15,198,115, 22, 16,183, 42,197, 7,233, 57,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 91, +156, 37,113, 91,162, 63,254, 77, 2,171,144,114,108, 54,254,248, 71, 71, 29,114,156, 28, 39,199,201,113,114,156, 28, 39,199,201, +113,254, 87, 22, 6, 28, 56,112,224,192,129, 3, 7, 14, 28,202, 98,209,170,157,183,118,203,155,130,199,205,184,237,189,250,104, +201, 28,125,221,192,103,106, 16,150,250, 3, 0,101, 72, 8,244,236,195,156,228,231,101, 14,249,160,240,240,179,167, 16, 29, 32, +208,244,204,138,121,150, 90, 86,190,234,126, 54,221, 92, 28, 21,253,227, 83, 50,118, 60, 14,201, 58, 98,201,177,182,182,229,109, + 36,246,118, 61,212, 90, 93, 53,145, 80, 24,169, 77,207,220,156,154, 26,154,197,221,154, 28, 56,112,224,192,129,195, 71,129,218, + 0,238, 1,232, 64, 41,221,156,215,149, 88,188, 51,124,249,192,166,119, 36, 18,169, 15, 0,176,148,130,165,128, 50, 51, 61, 40, + 46,244, 78, 91, 0,112,242,169,115, 90, 32,177,174,195,210, 55,219, 13, 44,160,215,230,134,101,132,223,172,107, 78,142,172,156, +253,190,104,213,166, 85,183,142, 29, 59,248, 85,175, 86,189, 18, 0, 60,122,252, 40,244,248,241, 19,207,172,156,253, 14,101, 39, + 62, 59, 92,150, 18, 83, 72,190,253,228,147, 90, 77,238,222,189,183, 16,192,216,178,214,160,131,131,213,248, 51,255,155,210,236, +179,110, 43,228, 0, 44, 18, 90, 18,123,187, 30, 93, 58,181,171, 53,117,194,104,102,248,148,239,124,238, 92,187,184, 76,225, 94, + 45,157,178,186, 51,202,132,222, 87,138,155, 56,153, 3, 7, 14, 28, 56,112,224,240,175,199,137, 60,113,117,162,224,134, 34,133, +150, 68, 34,245,185,121,241,184,253,225,171, 81, 0,128, 86,181, 93, 49,107,209,218, 54,132,144,103, 0,208,121,248,124,223,133, + 51, 39,224,250,147, 68, 80, 74, 81,171,178, 3, 62,239,210,211,172,220, 72, 93, 3,234,246,238,213,171,223,148, 41, 95,119,126, +249,242,101,248,158, 61,123,174, 0, 64,211,102,205, 42,127,247,221,119,189, 86,216,217,139,165,174, 1, 49,170,248,224, 59,165, + 41,173,212,163,146, 71, 64,149, 26,253,247,253,178,150,105,209,182,123, 95,169, 71,165, 37,170,152,208, 24,115,142,117,114,114, +154, 40, 16, 8,108, 0,128,101,255,212, 63, 21,203,241, 92, 1, 64,111, 96, 21,246, 30,254, 89, 60,161,196, 32, 22, 11,131,179, +178,179,119,100, 68, 7,255, 92, 28,167, 90,167, 11,252,106,204, 16,230,254,171, 20,248, 4, 54,229,173, 94, 50, 27,172, 65,103, + 55,105,230,162, 30,119,111,237, 3, 48,239, 18,119,143,114,224,192,129, 3, 7, 14, 31, 38,242,226, 54,110, 54,249,191,185, 68, +161, 5, 0, 86, 82, 62,158,189,142, 7, 0,216, 74,129,241,163, 6, 33, 37, 57,201, 87,163,103, 49,116,208, 0,220, 11,137,195, +179,176, 36, 80, 74,225,235, 41, 51, 59, 67, 60,176,159, 12, 29, 54,180,249,233, 51,103,110,127, 51,231,155, 95, 9,121, 19, 13, +124,211,230, 45, 13,231,206,155, 59, 98,192,160, 1,173, 15, 30, 60,248, 4, 5,102,198, 54, 23,124,162, 88,187,124,233, 98, 81, +116,114,110,238,196, 41, 51,216,175, 39, 79, 92, 13,160,187, 57,199, 10, 4, 2,155,232,232,104, 43,134,121,219,125,237,251,197, + 51, 46,183,238,182,226, 69,120,100,250,253,211, 71,143,214, 13, 8, 8, 64,116, 76,124,227,101, 63,110,172,233, 86,169,238,144, +172, 76, 85, 55,101, 82,112,161, 81,168,197, 2,193,147, 5,203,126,170,197,218, 86,102,102,141,104,143,192, 74,238,136, 73, 76, + 71,179,182,157,249, 65,119,238,180, 1,192, 9, 45, 14, 28, 56,112,224,192,225, 3, 69,113,163, 14, 25, 0, 56,113,226, 68,161, +129,255, 12, 6,138,103, 97,113,120, 22, 22,135,219, 33, 73,208, 82, 1, 86, 47, 91,128,149, 75,230, 33, 85,197,224,240,245, 40, + 60, 15,139,199,243,176,120, 36,167,101, 23,166,240,222, 26,162,185,114,169,172,246,234,213, 54,203,219, 52,147,183,176,183,179, +179,123,241,228, 87,229,220,201, 9, 85, 23,124, 21, 37, 20,104,196,209,114, 43,121,163, 3, 7,246, 7,184, 56, 57,203,173,172, + 20,211,228,158,181,182,218,218,214,180, 41,142,179, 32,100, 46, 85, 59,119,238,208,238, 83, 87, 87, 23,118,244,234,160,144,106, + 85,253,117, 85, 42, 87,105, 44,115,241,237, 92,140, 18,205,231,100, 89, 22, 12,195, 32, 33, 33, 1,177,177,177,120,253,250, 53, +158, 63,127,142,168,168,240, 4,150, 82,129, 1, 44,227,230,230, 9, 62, 95, 4,159,242,222,248,105,245, 18,217,162,249,179,234, + 73,228,162, 35,132, 16, 82, 24,103,110,106,218,193,147,191,159,137, 57,181,231, 39, 3, 0, 36,166,101,227,252,157,151,184, 23, + 28,101,169, 98,126,231, 67, 94, 57, 78,142,147,227,228, 56, 57, 78,142,243,223,192, 89,148, 22,249, 16, 64, 41,221, 92,112, 49, +110, 43,118,212, 97,104, 84, 42,158,189,142, 71, 29,127, 15, 84, 42,239,134,219,207,211,176,235,124, 20,182,158,142,192,249, 7, + 73, 96,249, 10,196,103, 2, 47,194, 19,240, 34, 34,185,184, 56,205, 0, 0,158, 88,208,251,171,175, 50,166, 84, 15,200,108,112, +241,212,120,120, 56,189, 8,152, 62, 61,125, 60, 79, 44,232,109, 87, 78,177,103,198,148, 73,253, 21, 50,153, 72,163,214,160, 98, + 5,111,201,132,113,227,135, 16, 59,241, 30,115, 11,106,237, 25, 96, 39,150, 74,127, 94, 52,127,154,248,135,195, 47, 34,149, 26, + 40, 15,221, 72,120,245,245,140,185,169,124,129,228, 39,107,207, 0, 59,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45, + 98,162,158,118,254,227,240,212,182, 21,202,217,183, 21, 75, 36,160, 0, 50, 85,122,188,142,203, 65,203,207, 90,243,234,212,174, + 29,104,229, 86,117, 88, 97, 92,233,233,225, 25, 44,229, 41,142,255,182,155,183,255,236,125,252,122,252, 14,142, 92,184,143,219, +151, 78,233, 41,171,203,159,166, 66,225, 94,197, 87,225, 94, 35, 66,225, 81, 51, 33,127,241,172,126,151,251, 86,224,192,129, 3, + 7, 14, 28,254,189,200, 27,105, 56,178,224,136, 67,160,152,174,195,220, 92, 85, 88,247,222, 3,224,230,236,106,213,165,197, 96, + 97, 80,104, 58,146,226, 34,240,242,249, 99,228,228,234, 32,180,171, 0, 72, 92, 81,222,199, 27, 15,159, 29,209,174, 89,126, 34, +155,213,171,195,138,226,235,210,197,221,211,205, 73,206, 44, 95,230,117,243,249,179,180, 58,187,231,108, 67,191,126, 86,142,203, +151,121,221, 12,127, 37,103,100, 18,218,104,200,160,190,132, 33, 20,211,167, 79, 65,151,142,237, 48,116,200, 64,178, 99,199,246, + 6,230, 22,148,133, 96,221,204,217, 11, 68, 9,233,122,205,237,231,217,106,153, 92, 42,189,246, 34, 91, 25,232,227, 37,109,223, +109,112,236,137, 3, 63,255, 0, 96,144, 57, 92, 70,129,165,211,233,160,213,106, 1,192, 0, 0, 12,243,102,157,146,165, 65, 98, +186, 26, 9,233,106,232, 13, 44,186,245, 30, 36,189,115,247,193, 32, 0, 69,248,107,177,172, 78,175,195,161,179,247, 16,115,231, + 32, 75, 24, 94,134,209, 25,222, 40,178, 92, 93,189, 46,119,236, 54,208, 73, 36,121,211, 13,155,165, 84, 99,199,198,101,220, 29, +204,129, 3, 7, 14, 28, 56,252,139, 81,112,250, 29, 66, 8, 74,156,130, 39,252,201,149,186, 0,224, 87,183,109,138,149,132,111, +207,103, 8, 18,162, 67,177, 99,197, 68,176, 44, 69,251, 17,203,161,240,113,133, 84,200,131, 58, 59, 37, 59,229,229, 69,135,226, +213,158,174,245,250, 77, 49, 62, 95,142,169,104,189,123,119,182, 0, 0,118,239,206, 22,140, 25, 93,206,122,195,166, 48,159,250, + 77,234,128, 26, 12,232,216,165, 59,122,247,233,141,240,248, 28,252,239,114, 36,148, 42,141, 89,243,171,201,156,170,214,116,118, +247,104,247,213,224,118,114, 62,143,144, 42,222, 54,188,168, 36,157,158,199, 19, 24,142,221,201,136,237,214,173,143,227,249,147, +251, 63,149, 57, 85,173,153,147,244,244, 65, 73,124,106,181, 26, 6,131, 1,106,181, 26, 58,157, 14,246,142, 21, 78,182,238,190, + 34, 58, 46, 62,235, 68,124, 90,110,125,165, 78,143,132,116, 53, 18,211,213, 72, 87,106,225,170,176,131, 94,167,169, 94,204, 69, +248,181,107,247, 1, 3, 1, 48,132,209,111,203,138,125,250,220,184,205, 40,178,218,117,233,231,116, 57, 40, 20, 47,239,158, 74, +163,172, 94,247,166,226, 88,110, 10, 20, 14, 28, 56,112,224,192,225, 95, 14, 19, 63,173, 19,121,206,241,120, 75,104, 25,251, 70, + 59,116,232, 64, 10, 30, 28,147,144, 10, 7, 43, 62,156,220,125,208,127,226, 74,252,250,195,100, 24, 12, 58, 80, 10,232, 13,230, + 69, 38,160, 84,112,118,236, 24, 31,255,242, 62, 60,167,254,253,100,170, 93,187,115,164,253,251,201, 84,213,170, 59,100,140, 29, +227, 19,150,149,235,213, 88,111, 48,224,218,147, 68, 60, 14,203,192,227,240, 76, 88, 73,205, 15,243,197, 19, 9,199, 44, 91,186, + 68,200,231, 17,242, 36, 34, 59, 59, 58, 69,159,205, 19, 8,180, 50,169,136,106, 40, 95, 29,158, 76, 83, 62,235, 58, 68,117,108, +231,143,195, 0,140, 43,138,199, 56,210,208,104,201, 50,174, 41,165,148, 0, 44, 75, 12,134,232,228, 92,100,107,117, 72, 72,251, + 83,104, 17,125,209, 61,167, 10,247, 42,190, 54,214,246,191,243,120, 60, 49,165,128, 78,171,239,165,112,175,210, 54, 43,246,197, +115, 83,145,117,243, 73, 44, 66,239,159, 75, 48,104,115, 6, 40, 19, 66,254,224,110, 91, 14, 28, 56,112,224,240, 95, 66,113, 90, +228,223, 14,163, 5,171, 80,139, 86,113, 5,162, 20,120, 17,145,140,242,158, 78,240, 44, 95, 9,207,159, 62,252,115, 27, 0,189, +193, 60,223,181, 35, 71, 98,163, 87,173,178, 97, 39, 79,206,104,184,108,153,215,141, 49,163,203,217, 84,171,238,144, 49,109, 90, +100,195, 85,171,108,110,156,189, 41, 48,208,188,120, 93,198,216, 92,121, 97,254,205, 4, 83,175,102, 64, 5,222,130,221, 47, 34, +255,120,148,149, 40, 20, 10,117,174,118, 18,162,176, 18,241,120,140, 64,164,214, 49,106,223,192,218,188, 99,204,155,232,173, 37, + 9,173,130, 93,135, 41, 73,161,157,207,252,111, 74,181, 22, 93,151,219,199, 36,169,144,161,225,229,119, 29,242, 24,130, 71, 79, + 35, 0,158,240,113, 97,156,214, 10,251,211,123,118,253,234,181,106,217, 98,104,245, 6,140,157,252, 13,134, 12, 26,112, 90,225, + 94,165,173,151,143, 95,208,149, 99,219,100,109, 71,255,132,136,103,119,227,245,234,204,189,156,200,226,192,129, 3, 7, 14,255, + 53,124,136,226,202,136, 2,163, 14, 11,183,104, 21, 7,111, 79, 23,220,122, 28,134,234,254, 21, 96, 99,173, 64, 72,104, 52,120, +140, 0, 12, 1,116,122,243,197, 16,213,234,246,173, 90,101,131,136, 48, 57,179,225,167, 48,159,177, 99,124,194, 86,173,178,185, + 65,181,186,125, 0, 6, 80,250,102,238, 69, 99,128, 84,131, 5, 97, 60, 41,171, 43,231, 98, 47,227,221,125,165, 76, 97, 24,158, +218,193, 70,194, 58,216,136, 25, 7,133, 72, 32, 20,240, 88, 61,101,180,158,206, 62,185,148,101,107,154,195,103,218,117,104, 48, + 24, 64, 8, 99,200, 19, 98,242,168, 20, 21, 50,114,121, 72, 72, 87, 35, 45, 75,139, 42, 30,114,156, 59,127, 48,199,160, 83,237, + 46,140,139, 39, 16,218, 84,242,241,196,172,111, 87, 65,165, 54,224, 69, 76, 54,132, 98,177,171,139,107,224,131, 1, 95,206, 16, + 79,216, 28,138, 97,159, 58, 96,242,149,208,152,156, 4,201, 12,238,113,227,192,129, 3, 7, 14, 28, 62, 28,152,250,104, 21,132, + 89, 66,203, 74, 38, 1,229, 73,112, 37, 40, 20,126, 1, 53,176,253,232,109, 84,174,222, 0,113, 89,122, 80, 48, 37,142, 54, 52, +226,235, 25, 57,247, 0,220,235,210,197,221,243,139, 47, 60, 90, 83, 42, 56,187, 97, 99, 70, 52, 0,252,180,183, 57, 40, 0,150, +165,160, 20,160,236, 27,193,101,190,156,228, 71,132,197,101,150,247,113,149, 35, 56, 90,171,150,139,133,140,157, 92,196,115,178, + 17, 9,133,124, 62, 12,148,168,227,226, 66,213, 4, 8, 55,135,174, 96,215,161,204,202,237,228,103, 93,151, 39,133, 71,102,220, +173,146,154, 83, 51, 67, 43, 2,165, 64, 21, 15, 57, 30,223, 60, 97, 72,136,121,249, 66,149,240,108, 99, 97, 92, 44, 11,158, 86, +207,226,193,171, 12,164, 43,117, 72,207,214,162,113,203, 78,194,198,173, 58,227,202,227,100,176,122, 29,150,109, 57,145,101,160, +186,222,148, 6,235,184, 91,150, 3, 7, 14, 28, 56,112,248,112,144, 55,210,176, 3,222, 68,134,239, 96, 42,190,204,154, 84,218, +192, 82, 56, 58,216, 67, 34,183, 70, 88,130, 22, 89,196, 25,105, 57, 20, 6,195, 27,139, 22, 91,244,137, 91, 21,150,126,228, 72, +108,244,111,191, 37,109, 61,114, 36,214,196,209,251, 79, 75, 86,254,154,165,102,115, 18,106, 56,119,244,212,197,140,206,245,157, +236, 24, 30, 79, 37, 20, 48,106,190,144,167, 21,242, 25,157,144,207,104, 92,172, 5,188,139,199,246,138, 40,193,197,146, 56,115, +115,115,209,170, 85, 43,180,111,223, 30, 93,186,116, 65,207,158, 61,225,235, 91,213,153,225, 17, 13, 37, 44,235, 36,202, 66, 37, + 39, 2,126,110, 20,254,216,251,125,206,227,107,191, 61, 48,168,115, 59, 81,147,190,206,183, 56, 41,101, 83, 51,212,200,213, 26, +144,150,173, 69,154, 82, 11,189, 83, 67,252,118, 61, 22, 42,141, 1, 17, 65, 7, 85, 73,241,209, 19,115, 19, 94,132,149,112, 33, + 91,253, 13, 55, 7,199,201,113,114,156, 28, 39,199,201,113,190,119,206, 15, 28, 29,242,132, 85,135,130,113,180,204,176,104, 81, + 84,116,147,163,178,135, 28,185, 90,103,228,106, 12, 80,230, 26,144,153,163, 69,102,142, 14, 97,241, 57,120,124,180,236, 57,124, + 99,197, 2, 72,222,111,144, 55, 2,207, 92,155,150, 72,171,249,118,229,178,239,122,237,173, 93, 75, 51,161,131, 91,185,135, 97, +154, 88, 66, 24, 21,195,227,235,236, 21,124, 65, 72,200,195,164, 27,151, 79, 54,147,232, 13, 3,139,227,209,235,245, 25, 30, 30, + 30, 0,222,158,130,167,106, 37,105,151,107, 39,166, 87,104,222,121,153,211, 15,139,167,228, 48, 60, 33, 75,248,194,199, 6,157, +106,143, 42,225,217, 79,180, 24,135, 50, 70, 40,121,122,235,126,112, 3, 91,251,114,120, 25,163,132, 50, 87, 15,173,158,133,157, +149, 16,209,143, 78,107,195, 66,238,238,207,138,121,176,157,187, 79, 57,112,224,192,129, 3,135, 15, 19, 70, 63, 45,227,186,196, +240, 14, 38,214,157,176, 38,173, 58,129,101, 41, 12, 20, 96, 13,121,150, 39,246, 79,235,147, 65,151, 27, 86,214, 12,178,172,225, +246,186,205, 91,219,215,174,215,156, 23,224,101,133,204,148,120,220,188,118, 65, 15,150,222, 48,231,248,228,228,231,217, 50,215, + 42,221,123,245,248,226,192,160,161,163,211,155,181,108, 41,119,118,118, 85, 71,199, 68,231,252,178,115,151,238,244,201, 35,205, + 88,232,251, 36, 39,191,200, 46,142, 39, 61, 61,253,199,194,210, 63,107, 82,174, 49,128, 10, 60, 62,209,228, 36, 62,151, 91, 82, +182,228,152,168,110,223,125, 59, 63,188,223,136, 73,162,138, 30,149,144,152,193, 67, 88,116, 60, 66, 46, 31, 81,199, 60,191,115, + 56, 51,250,222, 48,238, 22,229,192,129, 3, 7, 14, 28, 62, 76,148,201, 71, 43, 50,248, 77, 60,173,191, 27, 89,241,137, 3,182, +111,255,117,209,175, 59,247, 54,206,213,104, 60, 40,132, 81, 6,189,230, 82,182, 1,115,205,229,200,137,127,113,215,209,209,183, +218, 47, 91,214,205,254,101,235,134,230, 96, 13,254, 4, 8,167, 4, 23, 37, 58,195,160,146, 68, 86,241, 66, 46,107, 83,235,238, + 43, 84, 41, 41,217,191, 90,122,108, 78,114, 72,188,149, 75,197,114,155, 86,127,187,156, 97,120,109, 12, 6, 86,192, 26,116, 47, + 13,218,220,239, 85, 73,207,142, 82,203,134, 87,114,224,192,129, 3, 7, 14, 28,254, 69, 32,132,140, 44, 24,180,212,108,139,214, + 63,133,212,212,208, 44, 0, 19,202,202,147,156,252, 60, 27,192, 59, 31,185,247,232,121,198,255, 0,252,175,180,199,103, 39,188, + 74,130,153, 81,233, 57,112,224,192,129, 3, 7, 14, 31,190,224, 2,204,116,134,231,192,129, 3, 7, 14, 28, 56,112,224, 80,188, +200, 50, 93,231,167, 3, 40,116,228,128, 37, 51,115,151,102,244, 65, 73,252, 28, 39,199,201,113,114,156, 28, 39,199,201,113,126, +124,156, 37,113, 91,162, 63, 62, 8, 1,246,119,186, 7, 17, 66, 90,189,235, 10,227, 56, 57, 78,142,147,227,228, 56, 57, 78,142, +243,227,227,252,160,197, 84, 1, 43, 86,158, 96,252,119,249,104,113,224,192,129, 3, 7, 14,255, 20, 28, 29,125,173,128,124,191, +222, 18, 33,119, 10,112, 1, 0,101, 82,112, 2, 87,123, 28,138, 18, 85,133,249,104,149, 74,104, 17, 66, 4, 12, 95,244,149, 68, +106, 53,152, 48,176,206, 78, 79,246,248, 15,171, 88,226, 91, 94, 62,174, 92, 57,167,150,209, 49, 9, 59, 66, 94,229, 28,121, 31, +156, 86, 46, 21,157,136,200,238, 48, 97,213,223,101, 70, 63, 62,245,142,203, 40, 14, 8, 8,168, 5, 0,193,193,193,247, 41,165, +234,178,114,202, 93,252,250,218, 89,219,142,210,178, 26, 67,142, 50,231,167,236,248,231, 7,223,101,158, 21,238, 85, 28,192, 87, +108,132, 65,223, 18, 20, 60,240,248, 15,136, 58,119,120,102, 82,240,171,226,142,243,234,178,196,127, 88,175, 14,115,182,238, 63, +177, 40,242,200,204,144,130,219,237, 63, 95,171, 24, 63,176,205,244,245,123,143, 44, 77, 62, 58, 45,155,107, 94, 44,135, 87,147, +126,182,122,190, 43, 47,246,226,138, 20, 75,142,243,244,107,248, 68, 32, 16, 56,105,181,218,196,152,231, 55,171,153,115, 76, 57, +255, 70,247,120, 60,198,221,160,103,163,163,158, 93,255,132,171,253,146, 33,117,174,216, 16,122,253, 44, 10, 16, 16,254,202,220, +148, 87, 23,202,194,231,238,238, 46,181,177,177,105,102,109,109, 93, 78, 38,147, 73,210,210,210, 84,105,105,105,145, 17, 17, 17, +231, 41,165,250,247, 81, 70,185,139,223, 76, 34, 32,243,242,126, 47, 80, 38, 60, 91, 82,124,251,234,191,136, 48,116,102,222,239, + 37,217, 9, 33,115,254, 13,215, 74,226,234,231,205,163,152,192, 99,248,141,244,172,110,113, 78,194,243, 99,150, 28,111,111,111, +223,134,207,231, 75,141,255,245,122,189, 42, 53, 53,245, 12,247, 20,148,234, 61, 57,178,224,239, 82, 91,180, 8, 33, 60,129, 88, +118,181,223,208,177,213,150,206,159, 33, 89,189,245, 55, 72,172,236,130,115,179,211, 2,254,141,133,119,170, 88,255, 46,143,225, +121,154,166, 25, 88, 67,116,210,171, 91,239,164,209,245, 43, 47, 29, 54,123,218,128,201,125,123,181,242,110,213,113, 34, 1, 80, +168, 40, 82,120,213,189, 78, 8, 83,129, 33, 0,195, 16, 48, 4, 0,104,108,242,171, 91,181, 75,203,105,132,141,115,165, 10, 34, + 43,167,203, 77,186,140,117, 13, 58,183,107,187,220, 41,160,181, 50, 41,248,225, 59,184,113,156, 42, 85,170, 84,215,215,215,215, + 97,252,248,241, 66, 0,248,225,135, 31, 42, 87,174, 92, 57, 37, 52, 52,244, 14,165, 52,169, 84,141,156,179,255,128, 31, 87, 44, +252,245,243,207,219, 35, 54, 89,137,101,171,214,183,176,114,245,237,249,174,196,150,157, 93, 5,107,190,181,221,163,137,211, 22, + 58,183,107, 81,151,151,157,171,199,239,151,239, 55,221,181,126,225,109,107,167,128,122,197,137, 45, 54, 39, 99,142,139, 21,109, +199,230,100, 0, 64,223,130,219, 61,172,116,173,156,164,134,118,110, 98,254,125, 0,135, 74,204,139, 79,147,211, 2,177,216,155, + 97, 24, 24,175, 61,143,188,185,254, 58,173, 42, 34,250,233,229,182,255,134,231,196,218,187,126, 60,120,124, 7,134,252,153, 63, +146,119,159, 18, 74, 51,227,158, 95,113,120, 7,247,147, 77,181,202,182,129, 29, 26, 55,249,229,210,235, 84,185, 87,243, 73, 39, + 8,101, 54, 68, 92, 94,249,192,172,151,138, 68, 98,119,236,216, 49,167,118,237,218,217,184, 84,235,122,201,156, 99,172, 68,146, +128,227,199,143, 10,219,181,107,107,193,253,233,215, 26, 12,179,147, 0, 2,150,165, 63,240, 88,186, 63, 59,229,121,168,165, 97, + 88,100, 46,254,195, 24, 80,179,219, 25, 22,228,110, 78, 66,200,214,210,214,175, 64, 98,243,153, 64, 40,252,170,130,111,245,218, + 49,225, 47,239, 42,179,179, 86,233,114,211, 47, 89, 76,164,211, 79, 61,119, 37,232,115,190, 64, 64,218,125, 86,159, 7,160, 76, + 66,203,197,197,165,235,218,181,107, 43, 54,108,216,208,248, 50,183, 62,112,224,128,235,183,223,126, 43, 55,231, 25, 42,226, 94, +242,112,114,114,242, 18,137, 68, 30, 0,160,209,104, 98,146,146,146, 34, 41,165, 49, 37,222, 19,174,149, 28, 9,248, 11,175, 92, +190,204, 7,128,166, 77,155, 45,242,110, 58,222,142, 39,180, 82, 21, 90, 29,154, 44, 57,128, 73, 55,111,221, 32, 0,208,160,126, +195, 25,114,167,128,117,239,211,178, 37,117,241,175,207, 0,147, 27, 55,107,221,173,119,159, 1, 76, 96, 21, 47,180,105,253,233, +116, 0, 22, 9, 45, 62,159, 47,189,125,251,118, 37,134, 97,120,122,189, 62,183, 65,131, 6,145,101,201,151,135, 95,163,235, 4, + 76, 57,173, 94,179, 37,233,213,221, 69,148, 82,182,160,126,176, 41, 87,123, 54,120,252, 17, 44,203, 70,101, 70,220,105,244,177, + 89,180, 10,173,103, 75,201, 24,190,232,171,190, 67,190,172, 54,233,235, 89,146,137,171,207,227,196,250, 25,201,255, 86,145, 5, + 0, 60,134,231,121,250,204,105,103,153,136, 7, 0,200,206,213,227,243,118,237, 74, 60,206,214,167,254, 69,134, 16, 63,227, 84, +226, 6,189, 86,194, 23,136,114, 9, 0,144, 55,163, 8, 28,221,203,159,119,115,179,151,245,237,213,202,123,231,222,179,209,145, +209, 41, 69, 54,106, 12,195,243, 60,114,244,152,179,135,131, 4,124, 30, 65,182, 74,143,118,237, 59, 25, 10,219,215,205,205,190, + 67,223, 94,173,188,119,239, 59, 23, 25, 23,151,122,162,216,198,220,205,183,142,220,198,229,247,110,163,190,117,200,101,236, 49, +119,241,143,142,151, 79,237,190,212,188,195, 0, 54, 34, 34, 42,151, 18, 18,156,150, 26,247, 85,118,220,203,103,230, 10,105, 43, + 43,171,138, 86, 86, 86, 53, 63,255,252,115,201,148, 41, 83, 4, 45, 90,180,200,223, 62,114,228, 72,225,197,139, 23,221, 86,172, + 88,209,222,221,221, 61, 55, 59, 59,251, 65,118,118,246, 43, 74,169,193,220,107,226,234,234, 52,174,251, 23,157,240,105,183,177, + 48,176, 4, 35,191,156,132,211,167, 14,141, 6,240, 78,132,150, 78,102,253,237,136, 81, 83,156, 26,212,173,197, 91,184,251, 25, +164, 34, 62,218,126,226, 71,134,140,159, 99,187,117,205,194,159, 1, 52, 47,204,146,197,230,100,204,169,230,168,233,211,185, 97, + 5, 28,221,163,233,227,217,106, 58, 24,153, 77,190,101,171,210,231, 19, 20,118, 82,233, 90,119, 91,158,179,216,144,180,182,210, +231, 19,206,133,158, 90,147, 85,236,203, 79, 44,246,222,179,123,119, 21, 59,133, 16,124,134,128,199, 35,224,243, 24,228,106, 12, +232,217,171,207,187,250,146,226, 73,157,171,180,103,128, 33,111, 94,216,216,166, 74,124,113,210,146,107, 66,120, 66,135,227, 71, + 15,243,157,109,196,224,241, 8,120, 12,192, 99, 8,194, 19, 84, 24, 54,108,136, 77, 89, 5,251,231,141,157,235, 94, 92,215,188, +109,131,106,246, 53,246,221, 32, 54, 13, 62,239,237,144,156, 43, 27,188,247,200,133, 62, 94,205, 38,223,162,148, 93, 30,117,101, +117,177, 95,210,106,181, 58,161,109,187,207,173, 9, 95, 46, 59,247,219,246,102,124,134, 64,103,160,208, 27, 40, 12,121,115,163, +190,121, 94, 9, 24,134,128,178, 20, 35, 70, 12, 67,219,118,159,231,176,122, 54,218,252, 70,142,217,249,251,185,107, 78,106, 29, +139, 21,107,183, 46, 84,102, 36, 45,124, 29,226, 16, 46,115,241,157,148,147,240,220,236,121, 48, 24,208, 79,162, 94, 61, 30,181, +251,248, 77, 84, 11,168, 10, 3,251, 38,159,126,158,114,236, 62,113, 19,254,126,254,111,242,205, 82,248,150,179, 66,221, 79,234, + 2, 64,169,132,150, 64, 98, 61,183,121,135,129, 11, 58,246, 28, 10,103, 39, 39, 48, 84,215,241,220,137,221, 29, 5, 82,155,169, + 58, 85,198, 10,203,222, 24,134,252,247, 2,101,217, 50,187,151,184,187,187, 59,213,173,251,103, 56, 70,189, 94, 15, 31, 31, 31, +196,196,196,248,149,226, 94,146,185,185,185,117,216,180,105,147,115,251,246,237, 5,174,174,174, 0,128,248,248,120,143,223,127, +255,189,182,187,187,123, 98, 92, 92,220, 9, 74,105, 78, 81, 28, 6, 29, 35,100,248,224, 73, 36,178, 55,101, 4, 97,166,140, 27, + 88,195,197,205,189, 80, 75,125, 82, 82,188,104,218,216, 11,132,207, 23,230,237, 15,134, 82,150, 20, 99, 37,106, 37, 16, 8,164, +133,109,211,242,172, 27, 80,129,205,112,134,199,188,185, 89,245,186,164,212,136,160,170, 22, 88,226, 2, 5, 34,225, 79,253, 6, +141,106,212,163, 91, 23,184, 57,217,224,220,213,135, 24, 61,110,178, 78,175,213,173, 42,213, 59,146,199,227, 39, 38, 38,134,219, +217,217,185,150,253,125, 75, 42,156, 61,125,202,249,220, 31,231,103,172, 92,189,102,140,187,111, 83, 29, 75,105,254, 60,198, 94, +213, 62, 21,180,238,216,203,218,185, 82, 3,201,154,121,195, 5, 31,155, 69,171, 40,177,101,241, 67, 36,146, 42,122,125, 51,109, +188,228,219, 93, 55,113, 98,253,232,100,101, 70,146, 83,254,151,130,141,221,189,236,140,180,218,165,201,164,194,217,175, 33,225, +241, 71, 17, 30, 79, 78, 24, 34, 98, 13,108,148, 94,163, 89,148,147,252, 60,174,172, 21,192,178, 20,255,187,158,104, 89,165, 81, + 84,222,185,239,176,179,139,173, 24,185, 90, 3,122,247, 29,128, 95,127,253, 85,225,100, 35, 66,174, 70,143,229, 43, 87,102,101, +135,159,112, 14,143, 74,139,105,213,105,242,153, 87, 97,137,143, 35,227,114,247, 23,125, 17, 24, 56,219,136,177,120,239,115, 88, + 75, 5,176, 83, 8,193, 48,196,244, 34,229,119, 23,198,198,165,101,152,112,238, 42,242,161,115,171,222,214,198,206,125,207, 23, +163, 22,219,190, 72,228,131, 66,139, 80,107, 9,122, 13,158, 96, 93,209, 85, 10,185,132,103,251,127,246,206, 59, 44,170,163,109, +227,247,108, 99, 89,118, 97,233, 85, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 24, 75, 76,140,137,198, 24, 91, 44,137, 26, +163,177,199, 88, 98,139,189, 27,123,239,137, 21, 20,197, 2, 74,145,222,217,222,203,124,127, 0,190,196, 80, 22, 53,223,251, 38, +153,223,117,157, 11,118,247,236,189,115,206,153,115,206,125,158,121,102, 38,225,101,154,207,180, 47,191,188, 33,245,172,209, 84, +158,253, 34,161,162,237,174, 90,181,106,255,158, 61,123, 58,124,241,197, 23,124,127,127,127,108,219,125, 32,176, 77,183, 65,189, +210, 51,178,252, 41,165,240,242,244, 76, 25,247,193,160,227,167, 78,157,122,153,146,146,194, 95,186,116,105,179, 35, 71,142,212, +169,204,147,169,133, 82,232,244, 22, 88,138,110,144, 57,114,125,101, 43, 52,241,243,243, 19,166,165,165,233,139,163, 12,132,144, + 87, 59, 83,226,215,176, 91,167,118,205,120, 27, 79, 39, 66,165,179, 64,108,207, 71, 98,150, 6,141, 27,134,145,159, 45,230, 6, +165,105,126, 56, 56, 98,142,151,132,118,239,221,162, 58, 60, 93, 28,176,245,199, 69, 56,118, 51,161,123,150,138,192,189,247,210, + 9, 62, 66, 94, 23, 15, 7,193,218,246,141,107,120,119,108, 20,136,187,141,107,120, 95,139,124, 22, 27, 54,120,197,167,105, 42, +254,133,252,211,159, 42, 75,191,240,112,224,234, 40,192,150,179, 47,225, 96,207,131,216,158, 7,177,176,240,111,201,227,255, 70, + 79,181,190,117,252,185, 86,203,135, 78,190,117, 62, 28, 58,120,144,239,240,161,131, 40,184, 28, 28, 56,116,188,207,174, 93, 59, + 51, 36,222, 33,155, 45, 28,238, 22,109,250,227,148, 10,247, 41, 7,240,148,218,225,203,205,143,224, 36,226,195,209,129, 15, 39, + 7, 62, 58,214,247, 0,151,243,198, 23, 30,151,143,250, 4,245,136,222,209,185, 67, 72,128, 36,248,193, 11,249,227, 15, 23,222, + 91,117, 69,214,225,243, 31, 87,214,113, 83,201, 12,188,185,211,198,241, 82,211,211, 59, 28, 56,126,181,163,111,211, 15,159,153, +141,234, 89,217, 15,246,151, 26,193, 77,121,250,123,120,149, 22,131,236,141, 42,211,195, 7,207, 82,107, 20,232,133,136, 73, 82, + 64,108,207,131,164,120,223,218,243, 32,182,231, 67, 98,207, 67,122,106, 34,242,213,220, 27,105,110,156, 14,244,202,239,149,106, +162,210, 25, 45,184,159,160, 66,213,144,134,240,241,241,133,161,199,136,170,183, 47, 29,250, 85,236, 83,251, 59,117,198,147, 89, +182,234,236, 62,113, 11, 51,166, 76,136, 36, 64, 84,209, 77, 58,124,238,146,117,141,190,153,241,201, 31,222,155,182, 96, 77,163, + 55,143,100, 57,205,233,216,239,227, 5,109,186,244,131, 50, 63, 11,191,159,219,143,110, 61, 7, 96,196,152,207,224,236,236,190, +140,111, 47,125, 96,210,201, 47,253,233,154,235, 83,187,117, 88,189,218,187,252,124,125,253,173,214,194, 89, 62, 40, 5, 90,183, +235,136,233,159,143,131,149, 82, 52, 8,111,218,177,199,208, 79, 41, 45,154, 13, 36, 55, 47, 87,253,236,233,227,206,218,172,167, +183,109,222,151, 58,157, 41, 39, 39, 7,247,239,223, 71,108,108, 44, 98, 98, 98,144,151,151, 7,169, 84,170,170,100,125,114,170, + 95,191,254,240, 75,151, 46,217,187,184,184,188,122,223, 96, 48,192,209,209, 17,195,135, 15,231,119,237,218,213, 47, 34, 34, 98, + 20, 33,100, 55,165, 84, 81,154,142, 54, 47, 46,221,201, 59,116, 67,187,246,237, 38, 2,128,200,201, 39, 97,237,182,227, 49,229, +158,107, 82,223,192,150, 45, 91,213, 0,165, 32,160,171,213,185,207, 50,203,137, 18,137,111,221,186, 21,196,229,114,121,255,185, + 7, 89,241,211,214,125,161,231,175, 63,236,191,100,217, 15,246, 78, 98, 33,114,228, 6,140, 29,209,207,230,123,176,131,119,104, +143, 86,173,218,253,250,205,130,175,121, 18,177, 24,231,110,199,227,211,207,191,212,101, 36, 61,250,129, 90,249,235,212,217,207, +178,223,242, 86,249, 78,122,198, 5, 87,145,192,177,119, 55,251,143,222,239,109,111, 48, 89, 32, 83,155,160, 55, 90, 96,177, 82, +200,213, 38, 60, 78, 86,194,221,201,238, 77,164,155, 0,240, 0,144, 3,224,238,107,175, 81,244, 63, 74,121,157, 91, 24, 30,129, + 27, 0, 3,128,146, 63, 94,252,186,172,247,139,191,255, 24, 64,237, 34, 77, 11,128, 59, 0, 10, 74, 51, 91,165, 69,185,120, 39, + 79,158,164, 17, 17, 17,175,174,248,175,191,126, 29,161,128,239, 43,150,122,128,210, 39, 40,113,111,131,151, 79,149,188,245, 27, +126,118,149,186,184,189,148, 23,228, 5, 22,253,200, 5, 91,110, 22, 60,194, 93,209,174,125,219,174, 19, 63,254, 24, 33, 65, 85, + 4, 22,139,133, 62,138, 77, 48,109,223,178,117,180,212, 63,108,149, 34,245,209,156,226, 16,100,101,123, 57, 88,172,150,212,215, + 35, 88, 22,171, 37,245,181,157,113,225,207, 59, 12,112,150,216, 97,195,233, 68, 80, 10, 16, 80, 72,197,124,236,189,146,138,132, +200,195,138,158, 13, 20,234,225, 75,230,119,236,208, 99,242,165,199, 47,116,251,179,179,117,103, 41,165,153,101,105,114, 8,192, +227, 18, 56, 57,240, 33,117, 16,192, 89, 44, 0, 41,113, 3, 43,217, 92,216,190,199,228,243,151,126,123, 57, 11, 64, 78,201,124, +168,146,154, 34,239,224, 38, 78,206, 85,246,247,159,184,212,241, 97,170, 25, 60, 46, 80,221, 91, 4, 87, 71, 1, 12,102,130,164, + 28, 99,209,153,227,140, 79,167, 45,112,157, 49,117,226, 41, 66,234,212,163,244,177,177,188,109,215,104, 52,118, 35, 71,142,228, +155, 76, 38,227,240,177,159,117,205,204,204,233,243,211,234,239,133,158,158, 94,208,232,204,136,140,121, 94,251,155,111, 22, 84, + 63,126,230,202,209,249, 95,126,244,107,247,238,221,165,251,246,237,179, 86,180, 63,255,240,132,152,149,251,227,214, 93, 7,119, +172,252, 97, 49,158,189, 44,192,150,141,235, 64, 45,230, 13, 21,132,101, 47,148,248,159,206,154, 53, 75,116,244,232,209, 42, 98, +177, 88,161,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,238,142,118, 16,240, 56,240,114,177,135,167, 84, 8, 62, 23,224, 16, + 98, 41, 77,115,203,254,147, 11,173, 26, 57,142,237, 49, 12,221,250,227, 34,140,153, 52, 27,143,114,237,206,112, 28,164, 11, 63, + 25,218,127,134,135,200,210,221,215,153,227,217,177, 81, 85,136,237, 5,152, 57,121, 36,154, 70, 38,121,166,201,172,179,115,180, +220,134, 0,102,151,122,220, 57,133, 17, 44, 71, 7, 62,206,236, 90,150,173,150,231,200,139,155,228, 12,122,221, 75, 27, 67,210, + 23, 74,121,178,157,209,168, 97,253, 69, 19,199,127,200,105,213,162, 41,229,112,248,200, 85, 26, 8,165,192,231,159,126,132, 79, + 62, 26,231,157,146,158, 61,119,221,186, 13,115, 36,158,181,191, 85,101, 63,153, 95,158, 38,135, 20, 70,129, 36,246, 60, 72, 68, +133,198, 69, 98,207,131,206, 96, 1, 33,224,186, 4, 54,146,147,194, 72,110,122, 94, 82,233, 79,224,175,107,186, 6,212,189,120, + 62,193, 49,180, 96,127,193,205,196,244,152,133,145,209, 89,119, 40,165,249, 1,237,166,142, 50,154, 41, 84, 58, 51, 18,179, 52, + 48, 27, 41, 25,243, 94, 32,170, 13, 36, 33,139,183, 70,237, 32,132, 56, 21, 27,232,215, 53, 83,111, 30,208,185,135,245, 31,178, +114,205,198,187, 63, 44,154,205,205,149, 27, 96,165, 20,246,118, 92,136,236,120, 69, 11, 23, 90,181, 28,235,214,255,156,105, 6, +233, 79,175, 92, 49, 87,166,126,194, 74, 71,244,235,209,118, 47, 1,236, 8, 71,144,234, 27, 88, 53,176, 83,175,209,246,157,122, +143,132,197,108,152, 33,246, 10,189,172,206,122,122,209, 22,205,122,117,106,131, 0, 81,170,172,103, 31, 1,128,196, 43,100, 67, +104, 72,104,163,215,223,171, 89, 51,164,145, 45,199,189, 24,129,200,105,146,139,171,199,236,144,186, 13, 61,131,194,218, 17, 71, +183, 42, 72,140,187,143, 61,235,231,238,180,234, 12, 11, 46,158,220,191,104,213,150, 35,131, 59,117,239,135,173, 63,125, 63, 19, +192,165, 63,157, 71, 86,235,136,237,155, 55,249,243,237,132, 48,153,173, 48, 89,104,225, 95,179, 5,249,249, 5, 48,153,173,176, +119,112,132,217, 74, 96,178, 88, 97, 50, 91,161, 55,152,197, 31,141,140,248, 24,192,237,210,202, 89,165,118,251,179, 2,161, 48, +144,162,112,238, 90, 74, 41,184,102, 3,199,199,199,103, 55, 0, 8,133, 66, 8,133, 66, 88,173, 86, 68, 62,203,153,228, 17,218, +121, 34,138, 12,158,197,104,120, 89,144,120,163, 91, 89,219,238,237,237,221,235,117,147,165,211,233,160, 82,169,112,253,230, 93, +233,230, 29, 7,187, 39,190, 76, 13,178, 82,169,222,209, 51,168, 27,128, 94,101,237, 79, 69,230,211,143,253, 91,140,231,124,241, +201,168,154,107,182,159,184, 19,119,230,219,153,229, 85,137,234,157,103, 24,190,152, 48,160,241,146,213, 91,226,242,111,172,159, + 82,209, 49,226,241,120,252,156,156,156, 87,231,247,218,159,247, 52,142,122,150,214,119,213,202, 85,246,145,241, 74, 60, 76, 76, +199,168,206, 1,248,195, 77,160, 28, 77,137,119, 13,247, 26, 53, 66,119,175, 91,189,132, 23,151,174,195,143,135,239,224,210,175, + 27,174,103,102,223,238, 78, 51,211,181,111,114, 13,121, 91,163, 85,158,230,229,232, 92,168,116,102,232, 13,102,152,172, 20, 10, +141, 9,217, 50, 3, 20, 26, 35, 84, 90, 51, 70,117, 9, 40,245,123, 21,248, 17, 15, 66,200, 9, 74,105, 79, 20, 14, 75,101, 87, +226, 53, 8, 33, 39,138,202,245,135,215, 51,102,204,152,245,221,119,223,197, 20,175, 91,252,126,241,186,229,189, 95,226,251,110, + 51,103,206,172,183,100,201,146,197, 45, 90,180,216,251,251,239,191, 39,148,102,180,202,141,104, 21,111,204,201,147, 39,105, 5, + 79, 20, 65, 14, 78,110, 66, 39, 17, 31,213,171, 5,224,131, 89, 91,221,157, 92,189,178,237,237,120,220,211,167,207,184,230, 25, + 36,224,112,184,106,219,163, 88,181, 90,138, 68, 14, 39,151, 47, 95,142,161,189,218,136,146,115, 77,170,232,100,109,150,218, 0, +179,167, 71, 45,187,133,139,151, 72,150, 44, 93,246,201,137, 99, 86, 25,128,101,165, 55,241, 53,185,199, 37, 37,114,176, 8, 1, +181, 90, 82,243, 19,239, 52, 6,128,183,201,197, 82,233, 76,224, 22,229,214, 16, 2,104,116,102,112,185, 36, 91,246,108,255,227, +225,223, 46,236,184,115,239,249,116,202,113, 86,170,213,137, 14,148,210,212,242, 35, 6, 4, 10,141, 9, 82, 7, 62,156, 37,124, + 72,197, 2,112, 75,156,100,197,205,133, 59,247,156, 75,123,249, 50,239,110,145,201, 42, 83,147,199,229, 36, 80,139, 73, 71,169, +197,177,103, 19, 15,120, 58,219,193,199, 69, 8,161, 29, 15, 38, 51,160, 53, 88,161, 51, 88,144,148,173,133, 82, 43, 66, 88,187, + 65,213,221,124,238,233,221, 2,155, 28,205,123,121,183,127,185,230,212, 98,193,246,221, 7,107,166,167,103,245, 57,117,116,151, + 48, 71, 97, 66,116,146, 26,217, 50, 61,192,245,192,188,197, 63, 10,191,154, 50,190,239,246, 61,135, 94,118,106,211,236,101,101, +247,171, 58,251,233,206,176,150, 17, 27,122,246,236, 43,138,185,125, 10,113,247, 47, 46, 82,101,217,158,159, 69, 8,225, 28, 56, +112,192, 60,126,252,120,229,226,197,139,253,143, 29, 59, 86, 45, 39, 39,231, 62, 0,147,179,179,115,104,173,154,129, 15,206,157, + 57,237, 23,209,119, 16, 63, 53, 87, 11,169,131, 0,129,158, 14,184,121,253,172,201,206,142, 95,106,190, 73, 81,243,224,176, 42, +157,191,194,177,155, 9,221, 99,242,236,175,140,251,112,212,203,115,215,158,229,173,221,113,238,123, 63,137,233,190,189, 53,103, +237,189,198, 53,188,103,124, 58, 18,223,173,217,137,171,145,207,178,213, 28,159, 69, 25,122,243,249,249, 67,166,151, 17, 74, 47, + 52,216,142, 34, 62,212,138, 28,249,243,200,211,181,222, 81,164,122,212,185,163, 59, 57,249, 74, 19, 82,114,117, 36, 61, 95, 9, +139,149,194,217, 65, 0,179,149, 66,150,159, 75,118,237,220,129,187,119,111,114,192,229,140, 5, 48,191,220,102, 46, 82,216, 84, + 40,177,231, 23, 70,132, 68,133,127, 77, 22, 43, 66,106,214,192,166,181, 43,156,220, 61,189,208,186,109, 7,219,163,212,110,129, + 13,246,110, 91,139, 43,191, 71,181,191,186,234,199, 38, 18, 95,143, 53, 78, 85,234,252, 32,173,214, 69,167, 55, 90, 32,151, 21, +192,206,144,130,166,126, 57,112,117,176, 32, 73,225,131, 71,153,113,146,138,114,161,114, 31, 30,190,239, 81,175,223,156,131,199, + 47,125,215,173, 75,123, 60, 74, 82, 64,100,199,131,189, 29, 23,246,118, 92,240,137, 5, 43,214,111, 48, 21,200,149, 61,115, 31, + 29,205,125,131,250,121,161,232,233,183,240, 38,231, 21,228,177,115,205,156, 95,198, 77, 95,218,173,123,191,209,228,209,221,203, +179, 0, 92,180,237, 65,143,218,244,158,213,106,251, 61, 78,228,228,177,122,234,156,101,147,187,246, 28, 4, 46,151, 7,147,201, +132, 67,251,118, 98,219,143,243,158, 26, 84,121,163, 41,165, 86, 66, 92,199,239,223,185,126,208,244,185, 43, 72,189, 6, 77,155, +149,234, 39,185,100,227,251, 31, 78, 24,226,229,229,229,248,159,136, 22, 69,173,144, 58,232,209,123, 0,206,254,122, 4,143, 99, +162, 97,165,133,134,201,106,165,144, 21,228,101,154, 77,134,237,101,182,120,216,219, 7,110,221,182, 35,152,195, 33, 48,154,172, + 48,152,173,152,242,241, 7,134,143, 62,159,213,186, 71,215,118, 49,118, 92, 40,146,146, 51,156,111, 70, 61, 9,179,242, 37,254, + 31, 78, 91, 33,208,233, 45,144,107, 76, 56,181,165,108,175, 35,114, 13,108,209,160,101,223, 15, 63,250,122,147, 80,200,229, 24, +235,214,242, 79,104,215,188,110, 74,128,175,187,242,155, 37, 63, 54,189,113, 59,170,199,224,225, 31,218,143, 10,109, 68,124,221, + 68,142, 31, 12,239, 87, 95,236, 22,240,190, 58, 47,185,204, 41,211,248, 14, 46,178,128,106, 53, 53,255,137, 24,133, 28, 38, 20, +213,255,112,227, 36, 72,208,100, 62,235, 15, 0, 62,190, 1, 58,190,208, 73, 89, 9, 35, 66, 1, 96,205,207,123, 26, 63,136, 77, + 31,183,114,229, 42,135,200,120, 37,238,199,203, 33, 20,112, 96, 52, 89, 65,108, 12,106, 91, 41,119,194,236,153, 51,156, 10,212, + 22, 92,137,206, 65,204,189,203,212,160,210, 13,119, 48, 59,245, 23,123,133,188, 15,160, 6,128, 23,132,208,141,234, 44,239, 95, + 41,189, 82,233, 78, 6, 86,107,225,243,178,212,179, 70,117, 11, 79,216,131,111, 39,110, 65, 8,173, 75, 40, 92, 0,154,150, 87, +116, 79,181,213,169,169,179, 98,177,116,241, 92,172,222,124, 4,233,121, 58, 72, 45, 41,248,117,203, 66,124,241,221,110,104,245, +101,103, 53, 84,228, 71, 74, 51, 70,175, 27,174,226,255,139,215,251,238,187,239,122,190,118,108,122,150,113,204,254,180, 94,241, +247,151, 44, 89,178,184,196,231, 26, 91, 77,214, 43,163, 85,188, 81, 21,108, 92, 45, 15,159,192,223,127, 61,122,216,165, 64,101, +132,189,128,139,128,106, 53, 49,127,237,175, 30,239, 53,118, 71,174, 81,138, 61,155,126,200,215,105,148,251,108,186, 88,120,133, + 54,115,116,116, 60,117,248,208, 17, 4, 5,120, 10,118, 93,207, 79,140, 74,208,190, 10,245, 42,114, 94,218, 85,115,210,240,250, +247,235,231,112,241,210,229,207,203, 50, 90, 92,194,173,242,243,142, 67,158,142, 34, 62, 8, 1,148, 90, 51,198,189, 63,224,237, +111, 99,212,202,253,112,244, 40,144, 34,147,165,200,203,196,172,175, 62,214,137, 77,113,143,147,147,146,211, 58,247,250,226,162, + 66, 69,116, 67, 70,126,124,247,113,236,119, 5, 21,215, 98, 83,106,143,136, 30,130,194,200, 1,192, 37, 4, 86,106,205, 10,169, + 38,249,244, 79,205,133,153,250,159, 43, 50,110,202,180,103,249,142, 62, 97, 3,119, 46,159,244,179,175,151,167,155, 68, 44,162, + 18, 7, 33,169, 27, 26, 44,104,222,188,165, 93,181,144,250,130,235, 79,180, 72,206,209, 34, 33, 93, 14,161, 87, 67,222,208,142, +239, 97,231,170,105,237, 9, 33,156,215,147, 20, 95,231,252,149, 91,189, 54,175, 95, 41,204,146, 25,241, 52, 89,133,204, 2, 29, + 50, 10,244,200,204,215, 65, 34,226,163,109,239,241,194,147,191,110,236,213,169, 77,179, 53,111,178,123, 19, 18, 18, 79, 38,165, +101, 12,170, 31,222, 20, 59,127,217,214,198,197,165,186, 83, 65, 65,130,194,214,163,179,112,225, 66,187, 37, 75,150,240,214,174, + 93,171,104,222,188,185,247,204,153, 51,187,101,103,103,223,169, 90,181,106,200,217,195,219, 47, 53,108,219,167, 9,172, 70,143, + 54,237, 58, 8,132, 86, 30,206,157, 56, 97,220,191,111, 87,158, 86,171,252,168, 92,195,225, 32, 93,152,165, 34,240,240,243,139, +145,216, 89,186,240, 56,178,216,252,211,159,238, 0,112,184,198,123,147, 47, 92,190,247, 44,182,113,100,146,231,165,200,231,217, +249, 26, 99,173, 23,167,167,150,123,225,229, 18, 2, 62,151, 3, 71, 17, 15,156,162,171,170,163, 95,131,231, 32,196,163, 56,114, + 74, 64,138,254, 2,132, 32, 61,255,101,148, 13, 57, 27,132, 90, 41,240, 44, 85, 13,149,174, 48, 52, 95,197,221, 1, 57, 89,169, +248,105,205,118, 68,221,187,139,174,239,245,198,186,159,119, 97,220,251,131,116, 21,169,113, 56, 69, 17,173, 18,209, 44,137,136, + 7,128, 64,166, 54,225,208,141, 20,212,168,206,177,249,198, 0, 0,142, 18, 7,200,149, 90,112, 4,142,120, 17,121,202,225,244, +229,219, 51,231,124,187,242,203,130,140,232,228,231, 15,175, 35,196, 93,142,234,126, 70,196,100, 58,225, 94, 94, 53,132,212, 12, + 2, 71,112,215, 38,237,220,152,176,165,191,114, 14,245,108,220,176, 78,139, 64, 79,103,104, 13,150,162,168, 22, 23,219,182,238, + 64, 82, 98,234,135,185, 49, 71,163,222,133,163, 85,101,197,231,216,123, 5,127,242,240,246,197,132,126,195, 63,129,143, 95, 64, +131,202,164, 45,216,242,158,197, 70,163,101, 39,118,153, 57,109,238,242,201, 93, 35, 6,226,214,245,139,184, 31,243, 2,205,154, + 53,193,123,125,135, 66,169,200, 15, 61,176, 99, 85, 23, 0,103,121, 66,243,228,166, 45, 59, 18,171,197,130,184,167,143, 94,148, +166,165, 73,127,122, 31,128,211, 31,154,167, 60,106, 55,144, 72, 93,239,235,141, 22,164,165,165,226,183,223,175,132, 23,173,103, + 51, 66, 1, 23,231,162,178, 97, 52, 89, 97, 52, 91,209,182, 93, 23,131,128,163,111,179,104,229,214,230, 25,233, 25, 28,177,147, +187,213,213,175,182,192, 71,104,212, 63,136,151, 11,140, 38, 43,130,124,197,229,106,122,248,214, 92, 60,109,218,148,218, 92,129, + 8, 74,181,222,144,145,158,230,189,105,207,101,213,147,167, 15,253,170,120, 74,157,190, 95,181, 81,160,208, 17,100,203,245,200, + 87, 42,200,240, 9,211,125, 55,255,248,221, 8, 0, 54,207, 77, 75, 40,170,159, 60,119, 61,212,197, 81, 64, 84, 58,179, 53, 79, + 97,180, 12,239,219,225,173,234, 78,145,201, 26,191,114,197, 42,135,168,120, 37, 30,196,203, 97, 47,224,194, 78,192,129,193,100, +133, 45,167, 19, 33,132, 83,189, 94,187,143, 90, 54, 14,195,217,251,185,224,114, 57,208, 42, 11, 52, 60,228,197, 54,110,223,213, +161, 81,211,230,232,208,190, 29,158,199, 62, 11, 56,113,236, 80,167,155,191, 93,205,148,120,134, 76, 82,101, 63, 59, 82,169,122, +174,209,112, 77,118,222, 31,248,248, 85,109,213,127,232, 7,210,192, 0, 63,226,233,238, 6, 51,229, 97,252,251, 3,108, 62,243, + 11,141, 57,176,228,219,153,208,235, 13,240,112,182, 3,165,192,214, 53,243, 97, 48, 24,224,235, 38,132, 92,109, 42,243,251, 21, +249,145,178,162, 80,149,108,134, 62, 81,154,217,122,253,125, 66,200,137, 25, 51,102,204, 2, 64,103,204,152, 49,171,248,245,119, +223,125,167, 5,144, 94, 94,211, 97, 73,227,197, 43,185,113,101, 22,202,206, 46,196,221, 39,240,230,185,179,103,164, 71, 31, 88, +113,235,200, 61, 68, 52,243,129,128,199,129,131,212, 23, 15, 18,229, 56,121,120,189,236,215,189, 27,211,244,122,253,178,138,219, +154,131, 27, 59,138,157,206,254,178,115,159,213,221,205,141,243,211,185,156,248, 60,165,249, 85,147, 86,236,237, 99,214,123,103, + 55,249, 80,144, 51,246,246,246, 53, 13, 6,131, 75, 69, 7,118,235,185,151, 69, 73,188,228, 93, 92, 91, 65,184, 92,203,206, 93, + 59,225,238,100, 7,189,201,138, 25, 95,126,166, 29,213, 85, 34, 27, 62,120,104,199, 14, 61, 38, 95,226,139,131, 47,182, 12, 15, +166, 13, 27, 54,148,113,185,220, 10,245,242, 18,238,252,169,119, 69,104, 53,135,177,179,167,143,154, 93, 74,115,161, 77,137,187, +202,140,135, 55, 0,252, 33, 66, 66,106,212,176,219,125,224,215,207, 6, 14, 30, 50,199,175, 65, 95, 73, 98,134, 28, 2, 98, 68, +147,218, 62,184,124,230, 8, 77, 77,138,157, 82,145,201, 2,128,236,156,124,127, 15, 15, 47, 68, 37,168,144,150,167, 69,102,145, +201,202, 40,208, 67,169, 85,162,126,160, 47,100,114,185,255, 27,239, 95,224,200,217,179,103, 7,245,232, 51, 4,147,191, 92,208, +122,203,250, 31,162, 37,222,181,198,168, 50, 99,175,216,242,164, 72, 8,201,255,234,171,175,106,252,252,243,207,156, 17, 35, 70, +104,195,194,194,236, 71,142, 28,217,122,199,142, 29,246, 14, 14,246,218, 7,215,143,205, 25,251,233,140, 62,155, 86, 47,108, 80, + 80, 80, 64,204, 38,211,105, 99, 65,193, 12,101, 5,102, 46,249,215,153, 79, 73,157, 5,163,187,180,241, 56,230,234,192,169, 43, +164,134,161,164,206,130,125,244,241, 60,227,139,211,107,148, 97,131, 87,124,154, 46,179,206,214,113, 60, 23, 85,100,178, 0,128, +195, 37, 48,152, 45,112, 20,241,193,225,112,138, 77,188,207,182,125,167, 29, 60,164,118,224,115, 57,224,113, 11,163,157,185, 10, + 35, 62,249,160,143,205, 79, 2,102, 11,133,214, 96,134,166,232,233, 80,169,200,197,204, 47,167,226,189, 94,253, 48,246,163,169, + 40,208, 2,247, 18,148, 48,154, 76, 21,158, 20, 28,194,129, 70,111,198,152,174,129,200, 87, 25,161,214,154, 97, 48, 91,225, 96, +199, 3,159,199,129,216,158, 7, 39, 7, 62, 64,169,160,248, 98,194,231,243,117, 70,163,113,103, 57,199, 9,213,252,189,160, 53, +113,208,116,200, 15,232,220,162, 22, 98,110, 28,226, 93,189,245,176,250,231, 95,206,198,103,227,122,225,224,211, 26,112,245, 12, +132, 68, 44,130,137,114, 0,216, 54,116, 8,165,243,172, 62,161,253,135,109,248,121,235,179,111,230,206,176,151,169, 9,132, 2, + 46, 46, 93,188,128,155,183,239,173,206,137, 57,186, 19,239, 16, 62,229,120, 57, 57, 57,193,222,142, 11,131, 81,111,176, 61,117, +129,130, 2,225, 18,175,144, 13, 69, 79,252,225, 22, 43, 74,121,175, 98,163,197, 23, 73,103, 76,254,106,225,226,174, 17, 3,113, +238,196, 65, 28, 56,184,207,210,162,251,135,220, 93,219,214,163,117,231,222,104,221,117, 8, 78, 31,217, 49,149, 47,146,214, 25, +255,217,215,223,182,237,216, 3,231, 78, 30, 68, 86,102,234,114, 91,203,203,229,147,201, 29,187,244,130,206, 96, 65,155, 78, 61, +113,230,248,145, 79, 81,212,201,194,246,155,216,107,215,103,112,204, 83,167, 76,230,103,203, 12,252, 28,133, 1,169, 57, 26, 36, +102,105,240,235,222, 45,212,246,235,133,161, 73,219,250, 85,248,227,151, 94, 74,241,175,226,163,231,235,181,162,216, 23,241,161, + 99, 63, 24,197,175, 94, 51,148,147, 45,215, 35, 71,174, 71,174, 92, 15,149,206,140,154, 85,130, 57, 38, 51,105, 81,217,227,236, + 46,181,227,175, 59,158, 0, 39, 49, 31, 45, 67,223,188,163,173,213,106,253,143,201, 90, 89,104,178,162, 19,228, 16, 10,184, 16, + 10, 56, 16, 10,184, 48, 91,168, 77, 15, 46, 34,207, 90, 61, 62,153,244,177,175,193, 12,228,201, 13,224,113, 9, 60,221, 93,196, + 77, 26, 12,195,214, 31, 62, 5, 0,140,251,234, 39,140, 29, 51, 18,181,235,134, 65, 86, 80,224, 61,108, 96,143,149, 0,142,216, + 90,214, 83,231,174, 4,156,187, 22,245,213, 39,211,230, 73, 6,247,234,192,189, 31, 47, 71, 70,190, 30, 47, 98,149,149,138,188, + 1,128,217, 98, 5, 5,197,246,125, 39, 32,178,227, 33, 71,110, 4,165, 20, 11,215,238,135,163,136,143,140,130,194,230,254,242, + 40,207,143,148, 23,145,170, 68,180,177, 39, 10,115,185, 60,108,141,104,125,247,221,119, 49,223,125,247, 93,169, 17,178, 98,147, +245,198,147, 74,219,217, 73, 66,221,221,124,111,157, 59,115,202,241,200, 3, 11, 46, 63,200,195,192, 54, 85,160,202, 79,198,178, + 47, 7,231, 19, 80, 3,135,203,149,233,181,154,195, 90,173,122, 17,165,212, 88,174,201,242, 9, 9, 23,139,156, 46,172,219,244, +139,217,221,211, 19, 59,175,231,167, 22,168,205,166,255, 52, 91,153,200,189,179,155,170,155,173,166,238,218,204,184, 10, 31,111, +173, 20,130,239,214,255, 10,128,194,106,181,130, 90,173,224,219, 75,196, 30, 53, 90,100, 21, 93,232,236,121, 28,162, 43,121, 5, +160, 86,115,106, 78,124,249, 97, 80, 2, 64,234,192,199,190,171,105, 0,144,197, 85, 70, 62, 25, 62,184,176,185, 80,103,176, 87, +212,173, 81,131, 54,105,210, 68, 38, 18,137,222,248, 96, 87,182,185,208,166, 10,244,226,133, 1,192, 82,223,144, 54,253,186, 73, +234, 55,181,227, 8,208, 40,196, 7,151,207, 30,165,183,206,108, 29,167,201,122,246,139,141, 21, 17, 42,157, 9,233,121, 58,164, +229,233,144, 89,160, 67,102,190, 30,153, 5, 58, 16, 66,160, 51,188,221,240, 55,234,236,103, 7,118,254,178,185,183,222,136,161, +109,187,246,195,212,121,235, 2,119,110, 88,114, 65,228, 21,218,202,150, 68, 91, 74,169,133, 16,146,244,193, 7, 31, 52,216,179, +103, 15,183, 94,189,122,218, 39, 79,158, 56, 0,176, 2, 48, 74, 36, 14,162, 45, 63,126,119,182,105,211,166,123,211, 98,159, 94, + 2, 80, 96, 75,247,252,170,237, 63, 16,134, 58,229,143, 15, 16,183,236, 22,228,237,128, 0,177,178, 91,168,228,193, 50,207, 78, +159, 47,206,190,184, 42, 59, 67,111, 62,159,163,229, 54, 76, 83,241,109,202, 21, 52,233,117, 47,251, 15, 28, 10, 46,225,192,168, +211,188, 44,174, 92,158, 82, 59,204,223,245, 20, 18,123, 62, 28, 69, 60, 72, 68,124,180,174,227,138, 74, 92,207,168,201, 98,133, + 70,111,129, 86,111,134,206, 96,134,187,191, 11,126,222,121, 0,201,217, 90,252,122, 55, 23,207, 94, 42, 17, 92, 69, 12, 74, 43, +190, 76, 90, 45, 38,117,175, 1, 35, 28,185, 28, 2, 46,135,112,234,132,214, 66,190,202, 8, 1,143, 3,129,189, 8, 98, 33, 15, + 78, 34, 62, 4, 2, 62,178,179,179,161,215,235, 17, 16, 16, 96, 95,190, 21,164,112,148,136, 16, 92,221, 23, 70,147, 25,167,174, + 61,198,162, 41,253,209,165,109, 99, 16,190, 4, 79,245,225,112,116,117,132,149,195,129,209,108,133,193,104, 1,192, 41, 51,250, + 22, 16, 16,208, 81, 44, 22,139, 53, 26,141,242,229,203,151, 87, 50,158, 30, 78,246,172,219,119,252,153,115,151,118,246,124,175, + 11,162,162, 99,112,240,200,177,235,185,110,242,105,197,223,169, 87,175, 94,115,119,119,119, 73, 94, 94,158,226,225,195,135,119, +222,240,233,151,136,189, 66, 63,111,209,186, 61, 84,178,108,100,165, 36,218,252, 20, 93, 59,208, 17, 95,127,183,174, 81, 72,173, +144, 70, 22, 90,104,188,234, 4, 56,226,139,121,107, 26,213, 8,174,213,168,184, 67, 72,237, 0, 73,249, 38, 75,236,212,245,253, +241, 95,124,215,123,224,104, 92, 58,119, 12, 43, 22,125,185, 83, 44,245,168,237,234, 34,109, 88,175,121, 87, 92,191,112, 12,246, +142,222,112,113,243,110, 61, 98,204,164,206, 3, 71, 76,192,205,235, 23,176,122,201,172, 29, 22,189,114,183, 45,101,149,120, 5, +121, 52,108,210,118,184,163,171, 23,100,114, 37, 28, 93, 60, 81,187,126,147,225, 18,175,160,175, 84, 89,241, 57,111,122,174, 91, + 41,133,222, 72, 81,160, 50, 34, 37, 71,139,164,204, 66,163,101,181, 86, 34, 39,200, 98, 37, 18,123, 30,207,213,244, 60,224,225, +133, 75, 52,208,223,139, 44,253,246, 75,174, 17,246,200,145, 21,154,172, 28,133, 1, 57,114, 3, 84, 58, 19, 92,197, 60, 88, 45, +214, 74, 63,117, 23,168,140,112, 44,202,163,181, 88,223, 60, 55,124,253,182,125, 33, 15, 98,211,251,174, 88,177,202,225,126, 66, + 9,147,197, 47,140,102, 9, 5, 92, 88,172,214,162, 59, 77, 5, 6,155,199,159,220,167, 71,103,164,228,106, 11,123, 45,115, 8, +130,195,154,194, 93,100, 69,167, 33, 51, 0, 0,189,122, 20, 14, 95,146,144,161,198,241, 91, 57,192, 31, 19,187,203,191, 22,107, +181,220, 77,187, 78,126,126, 96,255, 94,169,206,194,195,198,211, 73,208,232,205,176, 23,112, 33, 20,112, 33, 18,112,255,144,143, + 93,177,209, 42,204,185, 75,206, 53, 65,163,211, 65,161, 53,129, 2,184,243, 92, 5,173,193, 12,185,218,132,230,161, 46,111,251, +236,115, 18, 64,196,235,134,232,117,179, 84, 34, 34, 85, 26,119, 75,106, 20,175, 95,150,145, 43,153,179, 5,160, 82, 61,184,120, +175, 59,199,146,175,237, 36,174,181,165,110, 30,183,206,156, 62, 33, 57,242,192,138, 43,209,133, 38,203,164,205,197,242,175,134, +165, 42,100,185, 29, 40,165,241,182,254,152,216,163, 78,125,145,131,195,165,239, 87,109, 52,122,122,249, 89, 15,223,146,101,203, + 53,150, 63,196, 16, 45,122, 61,135, 90,169,192, 22,147, 85,212,228, 97,156,247,105, 63, 88, 41,197,252, 85, 7,176,120,218, 16, + 72, 68, 35, 28, 8, 33, 14,106,157, 25, 83, 22,108,198,242,175, 63,116,116, 16,242, 64, 8,160, 51, 88,240,254,208,126,182, 85, + 64,157, 25, 47,110,239, 81, 41, 19, 78, 60, 41,217, 92,216,172,245,123,247,154, 53,107, 38,115,113,113,129, 72, 36,250, 79,164, +194,198,139,118,105,189, 11,179,101, 72,117,116,116,108,231,228,228, 84, 82, 79, 45,147,201,142,190, 73, 45, 84,202,114, 47,101, + 38, 61,108,218,170, 67, 47, 92, 57,123,148,222, 58,189,101, 92,101,198,232,113,113,117, 73,137,124,248,162, 54, 33,174,133, 17, +173, 34,147,101, 48, 89, 17,232,229,128,148,164, 23,112,150, 74, 83,108,213,115,240, 12,237, 67, 56,244, 35, 2,186, 85,149, 25, +123,160,200,244, 12, 19,123,135, 70,199, 60,186,191,168,231,240,201,188,174, 3, 63,230,110,248,110,210, 44,188,150,196, 90, 14, +198,103,207,158, 61,254,240,195, 15, 91,222,188,121,211, 2, 64, 67, 8, 49,113,185, 92, 7,131,193, 32,232,208,161,131,252,233, +211,167, 87, 81, 74,210,226,235,180, 25,115,208,157, 8,149,239,213, 8,110, 50, 44,208, 81,217,165, 67,155, 22,104, 81,215, 31, + 41,109, 90, 0,192,228,151, 42, 73, 72,235,137, 91,246, 85,247,168,114,106,195,182,227,139,199, 13,233, 60,197,183,215,130, 21, +233,199,231,149,155,136,154,252,248, 74,183,210,108, 60,143,203,129,163,136, 15,137,136, 7, 71, 17, 31,142,246,124,152,204,180, + 50, 79,142,212,100,182, 22, 70,180, 12,102,168,180,102, 92,186,159,133, 76,185, 1, 50,165, 17, 90,163, 5, 20,180,240,105,212, +134,171,121,118,220, 13,231, 87,199, 62,176,145,124,211,218, 31,156, 14,221, 72,125,213,163, 79,234, 96, 7, 71,135,194,222,216, +215,174, 93,131,155, 91,197, 79,251, 86,171, 21, 7,207,220,193,138,237,151,112,102,235,116,216, 11,184,168,223,103, 1, 70,247, +109, 6, 43,181,226,197,179,152,172,224, 58, 13,188, 56, 28, 17, 56,132, 64,111,178, 2,160,101,238, 79,131,193,224,150,156,156, +172,168, 89,179,166,183,159,159,223, 64, 46,151, 75,133,128,254,232,222,124,205,197, 19,187, 29,212, 90,189,197,193, 44,223, 90, + 51, 67, 27, 17, 28, 28, 12, 66, 8,117,119,119, 23, 92,186,116, 73, 21, 22, 22,230,241,134, 38,139, 35,242,172,181,122,236,196, +207, 7,214, 8, 10,194,129,221, 91, 65, 41, 57,100,235,247,119, 29,191,137,111,103,254,177,135,225, 23,243,214, 52, 90,190, 96, +242, 31,222,155, 56,115, 69,185,189, 14, 69, 66,201,180,254,195,198,227,222,157,223,177,108,193, 23,123,245,170,252,209, 38,179, +105, 80,126, 70,194,222,234,117,154,129, 26,149, 56,183,255, 7, 12, 25, 57, 78,216,181,231, 64,220,188,126, 1,139,103, 77,220, +165,145,101,127, 96,235,248, 95, 86,202,255,168, 67,183,190,124,173,222,136, 53, 75,231, 98,194,180, 69,104,222,177, 23,255,209, +253, 91, 31, 1,248,198,214,109,214, 27, 45,232, 16,230, 94,104,158, 77, 86, 28, 75,224,242, 74,171,129, 60, 46,225, 52, 12,114, +134,214, 96,134, 66, 99, 42,255, 70, 37,224,103,202,228,138,170, 63, 46,254,156,171,214,153,145, 35, 55, 32, 91,174, 71,174,236, + 63, 6, 43, 87,174, 71,142,220, 0, 62,143, 32, 54,254, 37, 56,124, 94,165,243,243, 10, 84, 38, 52,173,229, 82,120,142,190, 97, +235,136,137,231,212,236,204,213, 7,253, 87,172, 88,105,255, 32, 81,137,232, 4, 69, 81, 36,139, 11, 33,159, 3,187,162,255, 45, + 86,160,162,159,144,122,214,168, 62,234,195,113,157,156, 36, 34,164,199,101,131,199, 45, 28, 34, 70,234,233, 15,169, 80,135, 73, + 19,199,195,221,205, 25,201,185,122,172, 62, 18,139,232,199,207, 97,213, 86,110,179,215,108,220,219,125,236, 39, 95, 56,115,248, +118,216,113, 54,177,176,156, 92, 11,158,222, 58,174, 75,127,241, 80,173, 82,228, 81, 80,139,141, 1, 0, 66,205,150,194,234,182, +120,254, 12,236,221,254, 19,206, 70,102,191, 74,222,186,113,104, 57, 62,159,185, 16,185, 10, 67, 81,213, 47, 63,146,245,218,235, +156, 18,145,168, 63,189, 46, 97,142, 74,123, 77,138, 94, 27,202,208, 48,188,102,174, 12,175,189,111,120, 77,239, 65, 41, 15,255, +155, 42,108, 58,252,147, 41,114,241,172, 39,117,148,254,126,250,244,113,241,209,104,250,202,100, 25, 53,185,116,209,228, 94,169, + 10, 89, 78,215, 74,153, 44,207, 90,245,132, 98,241,213, 57, 11, 87,235,189,252,170,154, 79,221, 87,228, 41,117,150, 63,133, 69, + 4, 14, 98,139, 88,234,161,115, 14, 12, 95,193,215, 26,230,230,228, 60, 86, 87, 20,121,178, 82,138, 19,183, 51, 65,105,225, 35, +210,254,107,105, 40,122, 50,135,197, 90,216,172,114,254,126, 54,120, 69,121, 40,182,134,191,215,111,252, 73, 17, 17, 38, 87, 15, + 95, 60,255, 85,115, 97,243, 6,133,145, 44, 39, 39, 39, 56, 59, 59, 67, 34,145,192,150,166,195, 98,202,234, 93,232,232,232,216, +238,254,253,251,246, 78, 78, 78,224,114,185,208,235,245,168, 91,183,238, 27,157,232, 18,239,208, 79,154,118,236, 55,171,117,199, + 94,184,116,230, 48,189,117,102,219,248,202, 14,132, 24,209,185,229,241,111,191,157, 95,125,206,162, 31,133,142,246, 60, 60, 81, + 25,192, 33, 4,129, 94, 14,112, 19,115,112,229,232, 14,221,144, 94, 45,109, 30, 28,207,223,223,111,231,242,181,155,196,203,151, + 44,232,224,232, 23,114, 73,153,246, 44, 31, 0,212,153, 79,151, 58,120,135, 62,174,242,251,185, 83, 13,218,245,131,151,111, 80, +151, 74,132,127, 41, 33, 68, 19, 31, 31,159, 48,103,206,156,144, 37, 75,150, 80, 46,151,107, 5, 32, 92,181,106,149, 38, 46, 46, +238, 62, 10,187,230,162,162,155, 77,167, 46,117,167, 72,236, 44,205, 93, 29, 56,117,131,188, 29,208,162,110, 97,171,232,144,136, +214,240, 15, 8, 64,124,166,166, 97,190,198,202, 87, 25,184, 65,235, 54, 70,223,173,230,206, 29,103,214, 26, 30,163,130,193,100, +203,170,179,197, 9,242,197,209, 44, 71, 17, 31,214,194, 27,123,165,140,150,222,104,129, 86,111,129,214, 96,134,218, 96,129,198, + 96,129,149, 22,158, 19,132, 16, 24,205, 86,216,244,216,252, 90,221,119,114,117, 71, 80,181,194, 94,178,142,162,194,161, 30,156, + 28,248,133,125,164,221,220,224,233,233,105, 83, 84,212, 96, 44, 60,197, 13, 38,235,171,102,125,131,209, 12, 74, 41, 98, 99,159, + 77, 79, 74, 72,232, 83, 51,184,102,219, 58,245, 27,184, 58, 8, 57, 0, 80,166,209,210,104, 52, 22, 71, 71, 71, 79, 87, 87, 87, + 78, 90, 90,218, 43,243, 92,179, 97, 7,243,145,195,135,208,191,127, 63,213,147, 59, 15, 94,117,113,215,106,181,164, 85,171, 86, + 78,254,254,254, 28,189, 94,175,168,220, 62, 32, 68,236, 81,171,175,127,104,203, 69,239,127, 48,161, 86,135,206,221,113,249,226, + 57,252,122,120,207, 47,234,236,103, 54,143,156, 29, 18, 18,250,167, 94,135, 53,130,107,253,169,215, 97,213,234,193,229, 26,173, + 58,245,155, 52,163,132,135,179, 39,246, 83, 29,199, 56,177, 48,225,157,236,223,183,254,235,111,134,125, 52,179, 70,143,222,195, +240,254,200,209,224,241,184,184,114,254, 56,150, 47,152,122, 82, 37,207, 30,101, 75,154, 0, 0,144, 58,117, 4, 53, 3,170,126, + 22, 80,163, 30, 34,111, 93,199,139,216, 71, 49, 15,238,222,172, 91, 51,172, 57, 60,124, 3, 63, 35,117,234, 44,161,143, 31, 27, + 43,210, 49,232,116, 47, 71,143, 26,137,146,189, 14, 91,132,135,184,145,215, 79, 0, 0, 26,101,182,113,203, 15, 83,226,138,123, + 29, 90,141,134,151,101,233,202, 11,114, 14, 94,249,237,246,180, 62, 17,221, 57,185, 10, 67, 97, 4, 75,110, 40, 90,244,200, 45, +254, 95,161, 71,176,175, 4,207, 98, 34,173, 58,121,238,161, 74,158,151,186,209,131,186, 61, 46,174,187, 86, 43, 5, 1,116,149, + 61,191, 41,223,105,252,210,101, 43,236, 31, 36,168, 16,157,168, 40,108, 42,228,115, 11, 13, 22,159,243,202,116, 21,246,102,175, + 32, 58, 68,184,139,199,140, 26,138, 92,133, 17, 86, 43,192,227,114,138, 22, 1,146,149, 4, 41, 74, 13,114, 11,114,144,144,244, + 18,178,204, 23,224,112, 56,112,247,173, 5, 91,195,143, 22,106,231,163, 49,208,176,129, 17,109,121,135,127,207,128,131,144, 7, +189, 50, 11,167,247,253,144,163, 87, 41, 22,105, 53,170,195,218,188,184,116, 91,183,157, 67, 72,142, 66,165,243, 18,242,185, 56, +176,253, 71, 12, 26, 61,177,104,167, 20,254,153, 62,251, 91,128, 67,144, 95,160, 4, 33,164,178, 81,210,187, 21,188,126, 19,222, +133, 6, 74, 51, 87,127,120, 80, 40,251,105,148,158, 62,119,230,184,248, 70,146, 16,119,158,101, 20,153,172, 28,235,194, 79, 35, + 82,149,242,252,110,148,210,216, 74,149,128,195,233, 54,100,204,180,152,160, 90,117,244,151, 31,169, 18,101,106, 83,153,121, 14, + 45, 6,206,137,185,119,114,109, 15,185, 41,254, 99,137,111, 93,139,213,108, 94,170,201,126,182,160,140,166, 67,187, 5,171, 15, +188,106, 54,252,106,201,142,194,255, 45, 22, 88,168, 21,212, 10, 76,250,122, 61,204, 86, 11,172, 22, 11,172, 22, 10,147,133, 58, + 84, 84, 92, 79,223,170,135, 11,158,238, 15, 29,254,205,159,155, 11,157,157,157,225,230,230, 6, 55, 55, 55, 20, 27,163,183,109, + 46,116,114,114,130, 68, 34,193,245,235,215, 33, 18,137, 32, 22,139, 43,165, 91,194,100,125,220,164,125,159, 31, 59,246,254, 16, +231, 15,111,164,119,175, 29,159,160,201,122,182,217,230, 8,189,197, 66, 76, 38, 19, 34,186,182,127, 25, 21,243,252,204,236,105, + 31,117,111,217,115,130,176, 69,136, 31,116, 6, 11, 82,147, 94,224,202,209,109,186, 90,213,125,206,118,106,211,236,165,201,100, +130,197, 98,169,240, 70,174, 51, 24,115,185,124,145,120,232,208,225,252,187,119,238, 28,146,120,214, 58, 96, 33,156, 7,132, 90, +235, 19, 66,250,215,175, 95, 27, 70,147, 21, 26,141,162,160,178,219,172, 84, 42, 19,182,110,221, 90,125,212,168, 81, 14,117,234, +212,225,191,120,241, 2,203,151, 47,207, 83, 42,149, 9,182,106,156,187,246,108, 21,143, 20,196,217, 89,141,195, 2, 29,149, 93, +146, 91,183,192,208,158,173,177,247,228, 13, 92,185,126, 19, 47, 85,146,251, 42, 51,239,104,202,203,116,125, 93, 87,197,161,222, + 45,170,114, 15,108, 47, 56,228,217, 97,230, 96, 74,133,231,114,174,204, 83,219,126, 19, 7,148, 90, 19,156, 28, 10,199,123, 42, +142,108,113, 9,177,217, 17, 17, 32,225,250,205,200,122,141,131,235, 32, 42, 65,142,108,153, 30, 90,189, 25, 86, 43,133, 21, 20, +110,142,118,176, 23,112,144,156,148, 0, 43, 53, 38, 86,242,114,145,211,174,109, 59, 30, 64, 64, 8,229,241,121, 60, 80, 20,142, +175, 40, 18,137, 84,158,158,158, 54, 69,180,140,102, 51,250,119,111,134,230, 77,234,163,207,132,194, 49, 51, 47,254, 50, 3, 46, + 18, 62,246,238,220,140,228,171, 43,119, 6,181,156,120,238,209,195,152, 1, 49, 81,191, 15,127,175,145,168,161, 55, 47, 93, 80, +150,158, 74,165, 58, 68, 8,177, 19, 8, 4,221,219,182,109,235,122,232,208, 33,153,187,187,187,213, 78, 32,200,233,221,171,167, +149, 47, 16,228, 23,175,251,219,111,191,241, 39, 76,152,224, 88, 80, 80,144,156,149,149,117,147, 82,106, 42,255, 65, 48,180, 51, + 56,216, 3, 66,236, 37, 34,135,151, 45, 58, 15,245,109,210,188,153,180,111,255, 65, 16,218, 9,113,254,220, 25,172, 89,185,100, +191, 42,227,201,152,202,236,201,119,213,235, 48, 53, 57, 49, 65,163,213,135,213,107,220,158, 92, 63,119,116, 50, 33, 30, 43,185, + 66,167, 31, 58,247,159, 88, 35, 33, 93,133, 53,223, 77,135,139, 84,140,196, 23, 79,181,113, 79, 30,174, 55,233, 20,211,109, 53, + 89, 0,224,144,103, 25,208, 98,100,119, 23,189,209,130,107,151, 78,234,172,102,107,247,155, 87, 79,189,168, 82,171,137,125,189, + 38,157, 92,114,127,221,220, 31,192,222,138,116, 82,159,252, 57,130, 27, 16,210, 52,241,226,165, 11, 82,175,192,186, 92, 2, 2, +163, 94,135,156,248,187,102, 77,214, 83,133, 60,245,161, 77,189,112,243, 82,240,245,204,121,223,127,220,164,113, 99, 49,133,253, + 31, 34, 88,197, 6, 43, 87, 97,128,187,163, 29,180,138, 28,196,221, 61,163,211,228,112,203, 29,239,204,108, 80, 59,228,102,103, +189,106, 98, 83,101, 61,107, 94,222,250,185,217, 89,118,102,131,218,161,226, 91, 29, 23, 78, 98, 59, 60, 76, 76,123,149,248, 46, +228, 23,230,102,217,241,185,175,242,180,138,175, 5, 21,208, 94, 96,239,140,180, 60, 29, 8, 40,172, 22, 51,204, 38, 3,148, 10, + 5,210,210, 51,145,149,153, 5,165, 82, 6, 7,137, 11,234, 53,108, 10, 71,177, 61, 30, 92,217, 15, 74,169, 77,227, 26,154, 8, + 63,164, 73,243, 54,194, 71, 73,133,185, 88,246,124,138,227,123,150,228,169, 20,217,109,148,233,177,113,149,189, 22,155, 45,150, + 11,209,143,227,234, 86,241,169, 70,238,191,144, 99,231,207,107, 97, 40,138,108,154, 76, 22, 60, 74, 86, 35, 35, 95,131,228,248, + 39,212,106,177,252,107, 38,164,230,149, 29, 0, 4,175,126,189,218,232, 58,162, 47,126,250,105, 61,226, 19,146,172,139, 38,247, + 72, 86, 41,101,239,217,106,178, 74,206,238,173,206,124,186,116,204, 79,137,169,199,162,242, 57, 90, 67,249,243, 91,217,123, 4, +162,205,152,229,103,181,202,124, 59,139, 94,195, 59,190,115,204,158,210, 52, 11, 29, 52, 12,139,190, 24, 2,137,136, 7, 66, 8, +138,155, 11,215,125, 59, 30, 14,194,194,182,101,173,222,140, 17, 83, 86, 96,231,138,169,160, 0,134, 13,186,161, 41,171,156, 37, +154,246,170,188, 76,202, 78,235,220,235,139,139, 58,163, 80,223,179,223,168,123,141, 27, 55,150,137, 68, 34,136, 68, 34, 56, 57, + 57,193,197,197, 5,206,206,206, 21,110,123,153,131,145,150,232, 93,200,225,112,192,225,112, 32, 22,139, 33,145, 72, 32, 22,139, +203,213, 44,211,100,181,235,189,174, 83,159,177, 56,127,120, 19,189,123,237,248, 71,154,172,103, 63,219,122,140,138,154,123, 30, +244,239,223, 63,108,194,132, 9,130,121,211, 38,156, 61,121,238, 74,236,129, 19,155,122, 21, 20,200,252, 41,165,112,150, 74, 83, +134,244,106,121,188, 67,171, 38, 47, 47, 94,188,104,221,179,103,143,158, 16,242,176,162,114,230,102,103,255,114,241,194,165,249, +109,218,181,199,230,237,123,218,197, 60,126,210,238,197,139, 56,248, 7, 6,161, 90,245, 96,104,136, 11, 46, 93,189, 14,149, 44, +251, 23, 91,202,249, 90, 84,139, 20, 20, 20,252, 62,100,200,144,174, 55,110,220,224, 12, 25, 50, 68,147,155,155,251, 91,241,115, + 84, 89,209,172,146,154,191,175,239,155, 3,224,151,170,237, 63,216,159,102,148,125, 6, 96, 73, 64, 96, 0,174, 92,191,137,155, + 55,110,175,207,117, 8, 88, 48,102,196, 7,227,171,246,230,142,237,221,162, 42,215,211,197, 1,187, 55, 45,231, 30,187,153,180, + 34, 41,207,178, 25,192,183,182, 28,163, 87, 55, 14,165, 17,173,106,187,194,100,161,176,210,194, 11,174,163, 61,191,212, 11,111, +105,154, 60,131,112,204, 71, 19, 38,188,168, 87,191,225,231, 35, 62,248, 72,208, 48,200, 31,119,158,203, 0, 66,224,234, 45, 70, + 70, 70, 6,174, 29,220,100, 46, 72,123,186,158,203,181,126, 83,153,186,148,159, 20, 85,179,196,122,227,115,115,115,113,229,202, + 21, 20, 27, 44, 15, 15,143, 82,141,214,235,154,121, 89,233,191,125,187,108, 99,171,113,239,247, 67,207,246,117,113,245,238, 11, + 24,138,198,107, 42,238, 74,158,112,115,131,221,103, 67,130, 12, 31,247,175,165,208,154,236,146,190, 78,148, 95, 43,217, 43,246, +117, 77, 74,169,129, 16,114,236,217,179,103,173, 27, 52,104, 80,245,212,169, 83,249, 49,183,207, 78, 46, 89,142, 47,190,248, 66, +242,211, 79, 63, 57, 80, 74,127,211,235,245,241, 54,109, 59, 7,187, 35,239,221,115, 51,154,172,184,126,251, 65,237, 78,173, 26, +194, 74,129,187,119,239, 98,243,150,205,186,135,209,247,127, 80,103,121,127, 83,150,121, 41,107,127, 90,222,162,215, 97, 73,205, +140,180,164, 31,206,159, 60,184,179, 73,187, 94, 24, 62,233,155,111,174,156,220, 51,191, 81,155,158,156,218, 77,186, 34,242,230, + 37, 92, 56,117,230,123,163, 42,127,126, 69,243,144,150, 85, 78,161,200,225,211, 58,141,218, 33,249,101, 18, 18,227, 30,253,162, +205,139, 75,151,120,135,254,146,158,250,242,163,234,117, 91,225,198,217,189,147,203, 50, 90, 21,213,121,127, 15,209,166, 83, 39, +142, 13, 77, 77,221,224,173,214,234,132,148, 82,157,208,142,151, 41,225,148,221, 67,253,207,199,253,177, 81,236, 90,173,255,160, + 17, 31,157, 92,179,102, 37,223,203,217, 1,153, 5, 58, 40,180, 70, 40, 53, 70,112, 8, 65, 77, 95, 49, 52,202,124, 92, 61,184, +204,100, 80, 21, 12,161,244,185,177, 44, 77,137, 87,232, 66,128, 78,250, 98,226,101,216, 73,253,125,171,119,154, 85,110,180, 78, +153, 30,221,235,139,137,199, 67, 40,165,157, 36, 94,161,202,226,185, 14, 75,219,118, 66, 10,207,239,225, 29,252, 97, 52, 23,142, + 63,102,182, 2, 22,171,181, 40,202, 7,208, 87,237,249,164,130,109, 39,214,125, 39,127, 67,122,150, 12, 90,131, 9,122,131, 25, + 70,147, 5, 28, 46, 23,206, 46,206, 8,174, 22, 14,169,179, 19,178, 50,211,113,243,226, 49,196, 70, 95,253,141, 80, 44,208,100, +199, 94,180,229, 24, 9, 68,206, 33, 62,190,222,156, 12,133, 1, 34, 59, 46,238, 95, 61,101, 52, 25,244, 63,216, 98,178, 74,211, +148,229,229,175,248,124,218,151,195,182,109,221,238, 29, 86,221, 9,169,185, 90,164,230,232,160,212,153,138,140,152, 21,122, 85, + 46,162, 47,109,207,180,232,148, 43,254,245, 70,203,108,212, 41, 15,157,185,227, 54, 99,254, 50,238,243, 23,241,166,133,159, 69, +164,106, 85,138, 30,149,142,100,149, 96,235,199,213,246, 86,238, 27, 69, 67,154,124,147, 84,254,243,247,235,205,133,212, 10, 43, +165, 56,126, 59,243, 85,115,161,181, 40,243, 50,234,133,172, 82, 77,123,209,207,148,187,180,218, 44,233,211,231, 63, 20, 0, 0, +151,203,125,181, 20,231, 82,233,116, 58,195,155, 52, 23,190,158,248,110,181, 90,225,228,228, 4,145, 72, 84,233, 38, 73,177, 87, +200,208, 38,237,251,252,216,169,239, 56, 92, 56,242, 51,189,123,245,216, 68, 77,246,179, 77,149,206, 81, 40, 40,136, 33,132,196, +253,240,195, 15, 13, 55,111,222, 92,125,218,180,105,241, 59,126,156,191, 6, 0,242,242, 10,231, 0,142,138,138,162, 19, 39, 78, +212,235,116,186,132,130,130,130,200,138, 58, 64, 0,128, 54,199, 97,241,230,117, 75,234,165,164,101,244, 11,170,215, 20, 30,213, +155,194,187,102, 51, 20, 40,141,184,243, 60, 29,241, 79, 46,226,201,245,131,167, 52, 18,243,252,202,150,185, 65,131, 6,254, 28, + 14,167,154, 74,165,242,174, 83,167, 78, 3,177, 88, 28,213,160, 65,131,112, 30,143,151,122,239,222,189,164,202,104, 37, 93,217, +166,175,218,254,131,213, 47,149,142, 29,226, 51, 53,225, 47,149,142, 81, 26,161,116,106,246,197, 85,122,175,174, 63,172,160,198, +220,152, 3,219, 21,135,118,111, 90,206, 29, 49,254, 11,203, 35,185,203,103, 60,145,221,249,239, 70,135, 85,162, 89,138,147,241, +241,168, 62,255, 25,222,161, 40,146, 85,244,191, 77, 97,122,153,236,129, 28,192, 87, 34,223,186, 63, 62,250,108,194,183,245,155, +180, 26,217,246,189, 33, 28,179, 64,130,179, 71, 54,208,132,232, 75, 7,120,212, 50, 91, 99,195,108, 0, 21, 54, 7, 25, 12, 21, +154,172, 82,155,123, 82,196,237, 15,236,217, 50,250,208,145,195,223,245,237,221,199,109,221,215,131,177,108,227, 81,136, 69, 66, + 80,171, 21, 67, 58, 6, 12,124,178,167, 91, 47,127, 47,123,191, 67,151, 83,175, 77, 90,249,232, 43,141,198, 24, 91, 81, 36,166, +200, 56, 95,119,116,116,204,105,221,186,117,115,161, 80, 72,114,115,115,121,158,158,158,102,169, 84,106, 72, 77, 77,213,232,245, +250, 67,148, 82,117,101,182,211,104,178, 34, 49, 75,135, 95, 15, 31,194,131,219, 23,241,228,201, 51,229,147,199, 79,214, 18, 30, + 93,169,202,140,205,127,147,125,103, 45,181,215, 33,173,116,175, 67,139, 94,185,123,199,250,133, 29, 53, 58,253,232, 6, 45, 35, + 80,181,118, 43,142,209,100,193,195,187,151,113,249,224,202,101, 6,101,222,140,183, 57,198,190, 85,170, 7, 83,174, 29,126,191, +114, 18,212,106, 93, 15, 0,212,106, 93, 31,117,227,212, 71,205,122,140,133,171,103,213, 6,132, 16, 82,217,249, 30, 1, 64,192, +227,168, 79, 31,218,118, 36, 49, 49, 17, 79,159, 62,197,243,231,207,145,159,159,143,221,187, 19, 43,117,124,212,249,137,231, 37, +110, 65,221, 6, 12, 30,126,124,224,208,247,237,171, 7,135,113, 66,170,184,192, 77,194,195,179,231, 73,136,189, 23,109,125,118, +231,148,206,168,200,238,171,201, 79, 44,211,248,137, 61,234,120, 17, 14,157, 81, 60,119, 97,139, 22,173, 66,190, 92,244, 93,115, + 55, 15,207, 82,175,227,121, 57,217,118,211, 39, 29, 11,185,121,235,119,155,230, 58,180, 90, 44,121,227, 71, 15,177,114, 11, 39, + 10,197,171, 56, 53, 41, 60,216,133, 15, 83,133,239, 83,171,185,194, 8,254, 7,253,218,192,108,181, 66,173, 53, 66,161,214, 67, +174,212, 33, 35, 59, 15, 15,162,163,113,245,248, 49,188,120,246, 32,193,100, 48,156,227,112,200, 65, 77,230,179,171,149,107,105, +226, 85,119,115,117, 69, 66,190, 10,246,118, 60, 36,197,222,211,171, 21,242, 93,111, 90,143, 52,185,177, 25, 98,175,144,174, 67, +134, 12, 61,211,177, 91,111,105,147,150,157, 29,220,157,156, 33,224, 81,196, 37,166, 35,242,183, 51,234,248, 7,215, 20, 38,131, +170,251,187,152,245,229,127, 25,155,122, 29, 26,245,234, 94,195,250,180, 59,204,229,242,236,172, 86,179,222,104,208, 15,120, 27, +147,245, 87, 65,169, 37,117,244,176,126,127,120, 54, 48, 91,169,104,216,160,179,218,146,207, 10, 38, 11,117, 24, 54,232, 55, 77, +225, 5,164,236,196,190, 87, 77,123,123,207,167,190,124,153,119, 55, 63, 95,127,249,109,123, 2,150,156,187,176,156,222,133,234, +208,208,208, 87,230,138,203,229,194, 98,177,216,124, 33, 18, 8, 69,227, 58,246,254,144, 92, 56,250, 51,189,115,229,232,199,154, +236,216,141,111,209,206,108, 4,112,155, 16,242,104,246,236,217, 77,188,188,188,188,230,206,157,107,175, 80, 40,248,235,214,173, +211,229,230,230,102, 42, 20,138,155,148, 82,173,237,154,145, 38, 0,253, 37, 94,181, 58,208, 67, 63,119,113,118,247,235, 42,245, +168, 82, 67,150,147,150, 32,207, 73, 63, 7,224, 66,209, 64,145,149, 34, 60, 60, 60,136,195,225, 12, 1, 80, 79, 44, 22,215,148, + 72, 36, 66, 74,105, 40, 33, 36,198,106,181, 70,215,169, 83,231, 4,128, 74, 29,191,164, 43,219,244,109, 63,222,178, 39, 95, 99, + 21, 24, 56,130, 61, 73, 87,182,233, 1, 32,235,220, 52, 13,128, 95,189, 58,204,232,127,236,102,210,154,152, 2,233,228,236,203, +139,143, 85,182,204,178,148,251, 53,223, 85,253,215,166,199,164, 2, 24, 45,246, 10, 89,254, 48,234,230, 60, 66,193,183,192,188, + 80,147, 21,119,239, 93,232,243,249,124,157,159,159, 95,169,189, 11,133, 66,161,174,252, 99,126,197, 12, 96, 51, 33,237,183, 31, +222,191,125,244,209, 99,191,126,215,182, 83, 95, 55,251, 42, 85, 80,205,147, 96,251,140, 70,147, 47, 70,229,220,233,253,229,181, +159,226,211,117,209,148,210, 74,229,195, 40,149,202, 88, 66, 72,129, 74,165,234, 67, 41, 77, 33,132,248, 23, 20, 20,220, 55,153, + 76, 15, 43,109, 8,172, 24,222,162, 69,211,221,132, 16, 30, 53, 91,151,222,228,115,247,232, 50,158,164,190,137,177, 40, 73, 88, + 53, 39, 76,153,187,186, 81,141,154,181, 26, 21,207,117, 88,183,170, 35, 38,124,181,188, 81,213,234,193,141,254, 51,255,161,164, +162,115,146, 18, 66,198, 28,222,178,244, 90,212,173,203,179,220,125,170, 86,205, 76,141,127,146,242,252,254,183,102,173,252,240, +219, 30,231,196,231, 49, 43, 55,255,240,213,180,140,180,132,205,234,236,216, 71, 0,160,206,142,125,228,224, 85,235,235,220,204, +212,105,121,217,241, 63,188,233,190, 80,171,213,233,187,118,237,114,110,213,170, 21,199,203,203, 11, 57, 57, 57,184,124,249,178, +213,106,181,166, 85, 86, 75,149, 23,127,153,144, 26,174,191,108,252,113,169, 64,236,216,195,108, 54,251, 82, 10,240,120,188, 12, +131, 70,113, 70,201, 17,127, 73,243, 19, 43,168,151, 86, 2,128, 83, 60,119,161,213,106, 37, 75,215,108, 79,226,219, 59,150, 58, + 63,162, 73,167,116,176, 90,173, 54,207,117, 88,240,242, 94,141,119,118,179,166,116, 65,131,198,205,103,153, 76, 70, 29, 10,243, +197,116, 0,116,148, 34,143,195, 33, 87,185, 86,211, 89,249, 91, 60, 76, 17, 2, 39, 74,120,112, 20,241, 64, 64,160,146,231,211, +202,228,100,149,122,188,179,158,197, 16,210, 62,240,180, 97,255,168, 75,231, 79, 13,178, 88, 44,213,138,106, 78,162, 94,171, 62, +160,202,112,249,133,210,187,102,252,243, 57, 89,108,182,120,229,156,216,177, 40,156,219,231,127,154,188,132, 59,141,223,165, 94, + 70, 86,254,246,110,125,167,209,196,164,236, 59,201,153,250, 95, 74, 78,171,243,182,154, 41, 41, 57,151,139,154, 11,245,127,142, + 80,188, 89,239,194, 87,198, 88,167,253,126,213,236,161,208,105,213, 59, 52,217,177,219,223,141,137,165, 90, 0, 87, 9, 33,210, +143, 63,254, 56, 92, 34,145,240,115,115,115,111, 83, 74,229,111,170,169,202,138,189, 12,224, 50,128, 25,239,162,140, 81, 81, 81, +241, 13, 27, 54,220,201,225,112,170, 81, 74,189, 40,165,210, 34, 35,155,203,227,241,210, 30, 63,126,156,246, 70,219,174,119, 60, +173, 50,112,131,205,212,229,204,159,204,135,155,231,249,151,249,150,159,185, 98,251,255,153, 28, 3,117,214,179, 24, 0, 3,222, +181,110,121,227,100,217, 94,143,254, 99,184,174,156,220, 54,154, 99, 39, 93,216, 41, 68,167,233,250,121,218,183,215, 31,230,220, +166,148, 42,223,162,142,230,216,217,217,105, 9, 33,254, 2,129, 64,107, 48, 24,162,223,104,255, 21,154,124,143,119,185,239,172, + 32,247, 26, 53,106, 92,169,245,109,136,228,109, 47, 90,222, 41,170,204,167,223,162,168,249,251, 15, 17,138,172,216,133, 0, 22, +190,141,246,221,187,119,143,255,240,195, 15,242, 53,107,214, 4, 88, 44, 22, 7,131,193,160,209,106,181,137,169,169,169,191,191, +217, 49,127, 97, 0,240, 89,209,242, 6, 81,151,167,153, 18,175, 90,171, 91,182,104,249, 89,225, 3, 58, 93,157,120,117,245,148, +242,190, 35,241,170,165, 45,185,126,121,115, 29,190,211,227,146, 29,187, 30,192,250,191, 46, 82, 97,205, 25, 62,176, 15, 80, 52, + 48,183,213,108,206,121, 39,178,133,231,252, 22,188,225, 36,233,255, 4, 40,165, 25, 0, 54, 21, 25,102,250,151,253,144,173,249, + 42, 76,147,105, 50,205,127,151,166, 45,179, 19,176,253,201, 52,255, 74, 77,145,111, 29,127, 0,176,101,210,245,178,214,103,251, +147,254,107, 18,218,109,216, 31,227, 75, 49, 91,182, 13, 88,202, 96, 48, 24,127,193,211,158,149,237, 5,198,127, 19, 91, 13,214, +155,174,207,248,215, 93,211,202,204,137, 38, 40,156, 5,187,180, 47,217,236, 84, 9, 33,157,223,160, 80, 23,152, 38,211,100,154, + 76,147,105, 50, 77,166,249,239,210,172, 72,251,239, 24, 41, 43, 37,162,117,178,168,249,176,112, 96,182,191,106, 1,208,153,105, + 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 95,252, 63, 7, 12, 6,131,193, 96, 48, 24,140,191, 4,150,163, +197, 96, 48, 24, 12, 6,131,241, 22,148,214,116,200,140, 22,131,193, 96, 48, 24, 12,198, 59,160,188,100,120,214,116,200, 96, 48, + 24, 12, 6,131,241, 22, 20, 71,180, 8, 33, 62,132,144,241, 37, 35, 92,204,104, 49, 24, 12, 6,131,193, 96,188, 3, 40,165, 25, +175, 71,183, 8,165, 20, 39, 79,158,164, 17, 17, 17, 4,192, 31,254,103, 48, 24, 12, 6,131,193,248,255,224,239,236, 69, 8, 33, + 62, 0, 34, 74,110, 78,241,240, 14,156,146, 27,200, 14, 51,131,193, 96, 48, 24,140,255,166,217,250, 59,150,187, 56,146, 85, 98, +121, 53,105,246, 43,163, 21, 17, 17, 65,152,217, 98, 48, 24, 12, 6,131,241,223,226,159,232, 69, 56,175,111, 32, 59,204, 12, 6, +131,193, 96, 48,254,155,102,235,159,180, 61,108,120, 7, 6,131,193, 96, 48, 24,140,183,160,188, 28, 45, 82, 52, 84, 60,131,193, + 96, 48, 24, 12, 6,227,205,140,214,248,146,189, 13, 75,190,102, 17, 45, 6,131,193, 96, 48, 24,140,119, 96,182, 74,125,159, 69, +180, 24, 12, 6,131,193, 96, 48,254, 26,254,210, 1, 75, 9, 33,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,201, + 20,143, 8, 95,244,255,248,162,156,173,191,222,104, 49, 24, 12, 6,131,193, 96,252, 11,136,160,148,110, 42,145,155, 21,193,140, + 22,131,193, 96, 48, 24, 12,198, 59,164,180,201,165,153,209, 98, 48, 24, 12, 6,131,193,120,135, 6,171,228,107,102,180, 24, 12, + 6,131,193, 96, 48,254, 34,152,209, 98, 48, 24, 12, 6,131,193,248,139, 32, 0, 74,237, 57, 64, 41,189, 96,179,200, 27,244, 62, +168, 72,159,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 60,205,138,180, 43,227, 63,254,103,204,212,127, 70,134, 63, 89,244, +247, 63,205,135,148,210,191,108, 1,208,153,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,159,188, 0, 24, 95,242,111,201, +133, 53, 29, 50, 24, 12, 6,131,193, 96,188,125, 84,171,228, 56, 90,175, 70,137,103, 83,240, 48, 24, 12, 6,131,193, 96,188, 5, +165, 13,235, 80, 12,139,104, 49, 24, 12, 6,131,193, 96,188, 5,175,207,115, 88,242, 53, 51, 90, 12, 6,131,193, 96, 48, 24,127, +129,225, 98, 70,139,193, 96, 48, 24, 12, 6,227, 29,154,172, 63, 69,183,138,178,228,113,242,228, 73, 26, 17, 17, 65,216,174, 98, + 48, 24, 12, 6,131,241,223,224,159,232, 69, 56, 37, 55,236,228,201,147,148, 29,102, 6,131,193, 96, 48, 24,255, 45,147,245,119, +244, 34,132, 16,159,226,222,134, 69,139, 79,241,103,172,215, 33,131,193, 96, 48, 24, 12,198,219, 17, 81,178,231, 97, 81,243,225, + 38,102,180, 24, 12, 6,131,193, 96, 48,222, 1,165, 37,194, 3, 44, 71,139,193, 96, 48, 24, 12,198,255, 8,255, 68, 47,242,202, +104, 49, 24, 12, 6,131,193, 96, 48,222,192, 76,149, 18,205, 42,110, 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 29, 25,174,215, + 71,137,103,227,104, 49, 24, 12, 6,131,193, 96,252, 5, 38,235, 47, 55, 90,132,144,206, 76,147,105, 50, 77,166,201, 52,153, 38, +211,100,154,255,116,147, 85,252,151, 77, 42,205, 96, 48, 24, 12, 6,131,241, 14, 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,239,208,100,189,110,182, 88,142, 22, +131,193, 96, 48, 24, 12,198, 91, 80, 94,142, 22, 1,208,185,140, 47, 93,168,132,139,235,252, 6,133,186,192, 52,153, 38,211,100, +154, 76,147,105, 50,205,127,151,102, 69,218,149,241, 31,255,171,252, 97,168, 7, 74,233, 95,182, 0,232,204, 52,153, 38,211,100, +154, 76,147,105, 50, 77,166,249,111, 90, 0,140, 47,254,159, 53, 29, 50, 24, 12, 6,131,193, 96,188,101, 4,171,172,207,152,209, + 98, 48, 24, 12, 6,131,193,120, 11,216, 56, 90, 12, 6,131,193, 96, 48, 24,127, 17,132, 16,159,162, 17,225,139,255,134, 51,163, +197, 96, 48, 24, 12, 6,131,241,110,136, 40,138,106, 21,255,101, 70,139,193, 96, 48, 24, 12, 6,227, 93, 81,214, 56, 90,132, 82, +138,147, 39, 79,210,162,215,237, 35, 34, 34,174,178,221,197, 96, 48, 24, 12, 6,227,255,147,127,170, 23,121, 21,209,138,136,136, + 32, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112, 94,115,146,237,217, 97,102, 48, 24, 12, 6,131,241,223, +224,159,232, 69,120,175,185, 72, 6,131,193, 96, 48, 24,140,255, 10,127, 87, 47, 66, 8,241, 1, 16, 1,224,100,209,223, 87, 67, + 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,210, 35, 82, 74, 55,253, 97,234,157, 98, 19, 86, 52, 84, 60,131,193, 96, 48, 24, + 12, 6,227, 13, 40,109,100,248, 98,195,197,140, 22,131,193, 96, 48, 24, 12,198, 95, 4,107, 58,100, 48, 24, 12, 6,131,193,120, + 75, 74, 70,181, 74, 54, 31,114,254,226, 31,237,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 79, 55, 89,148,210, 77, +197, 75, 73,211,197, 70,134,103, 48, 24, 12, 6,131,193,248,139, 96, 77,135, 12, 6,131,193, 96, 48, 24,111,193,235, 81,172,146, + 77,135,204,104, 49, 24, 12, 6,131,193, 96,188, 3,179, 85,218,251,172,233,144,193, 96, 48, 24, 12, 6,227, 45, 40,109,120, 7, +102,180, 24, 12, 6,131,193, 96, 48,254, 98,195, 69, 0,148,218,115,128, 82,122,161, 18,194,149,238,125, 80,145, 62,211,100,154, + 76,147,105, 50, 77,166,201, 52,255,121,154, 21,105, 87,198,127,252, 47, 27,172, 87, 77,137,148,210,191,108, 1,208,153,105, 50, + 77,166,201, 52,153, 38,211,100,154, 76,243,223,186,176,166, 67, 6,131,193, 96, 48, 24,140,191, 8,155,141, 22, 33,196,131,207, +231,207,114,112,112,248,201,193,193, 97, 35,159,207,255,129, 16,226, 82,217, 31,148, 72, 36,147,125,124,124,158,250,248,248,164, + 6, 6, 6,158,114,114, 18,127, 94,195,158,180, 37,132,240,223, 65,232,142, 67, 8, 9, 33,132,124,238,224,224,240, 68, 36, 18, + 37, 17, 66,118, 18, 66, 62, 39,132,184,191,141,246, 66, 63, 50, 32,230,243,190, 71, 23,250,145, 1,175,253,102,132,183,183,247, +117, 66, 72,215,119,117, 80,134,137, 73,231, 65, 18,146, 60, 72, 66,146,135,137,223,124, 80, 56, 39, 39,167,145,190,190,190, 55, +221,221,221,211,124,125,125,127, 19,137, 68, 3, 43,185, 63, 61,189,189,189,151, 5, 4, 4,196,250,249,249,173, 42,154,157,252, +127,150,182,246,164, 77, 11,123,146,211, 82, 72,148,173,133,228,167,150, 66,210,165, 43, 33, 14,111, 88,151, 90, 19, 66, 14, 74, +165,210,251,124, 62,255, 4, 33,164,127, 81,253,234,207,231,243, 79, 72,165,210,251,132,144,131,132,144,214,111, 88, 79,151, 17, + 66,210, 8, 33,139,139, 94,127, 26, 16, 16,160,108,208,160, 65, 82,131, 6, 13,182, 5, 7, 7,191,111,171,158, 88, 44,238, 18, + 16, 16,112, 40, 48, 48, 48,169,101,203,150,249, 85,170, 84,121,230,239,239,191,221,222,222,190, 61,187,196, 49, 24, 12,198,127, + 25, 27,194,131,189, 0,124, 7, 96,109,116,116,116, 36,165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 39, 0, 75, 80, 70, 8,241, +245,247,221,220,220, 22, 44, 92,184, 80,151,145,145, 65,115,114,114,104,108,108, 44, 93, 57,231, 43,107, 55, 87, 30, 13,242,112, +209,248,248,248,188, 8,172, 82,101,111, 93, 9,231, 43, 0, 53, 42, 19,174, 4,224, 34, 18,137,110,207,153, 51, 71,117,253,250, +117,149,193, 96, 80, 89,173, 86, 85,122,122,186,234,194,133, 11,170, 86,173, 90,169, 0, 76, 1,192,125,147, 16,232, 55,190,184, + 74,183,124, 77,191,241,197,213,146,239,135,134,134, 62,182, 90,173,116,192,128, 1,122, 0,126,111, 19, 86,245, 3,236,235, 58, +193,121,160, 4, 89,230,237,223, 82,186,110, 26, 29, 40, 70,242,155,104,122,122,122,254, 58,121,242,100, 69, 90, 90, 26,213,235, +245, 52, 57, 57,153, 78,152, 48, 65,238,233,233,185,203,198,253,233, 22, 22, 22,150,117,243,230, 77,171, 76, 38,163, 87,174, 92, +177,214,171, 87, 47, 11,128, 79,101, 67,202,158,158,158,155,124,125,125, 79, 85,102,241,244,244,220, 92,217, 99,212, 76,136,100, + 99,228,101, 74,239,158,163,199, 6,180,160, 43, 27, 87,161,253, 93,237,100,173,237,240,105, 59,128, 87,137,186, 52,168, 93,187, +118,234,135, 15, 31, 90,242,242,242,232,227,199,143,173,227,198,141,211, 1,136, 25, 55,110,156,238,241,227,199,214,188,188, 60, +250,240,225, 67, 75,187,118,237,212, 0,198,218, 90,206,162,135,155,173,243,231,207,167,148, 82,186,112,225, 66, 90,191,126,125, +218,177, 99, 71,170, 82,169, 40,165, 52,137, 82,186,205,108, 54,143,182, 69, 83, 42,149,142,156, 60,121,178, 74,163,209,208, 98, +172, 86, 43,149,201,100,116,237,218,181,106,111,111,239, 83, 0,220, 89,243, 4,211,100,154, 76,147, 53, 29,254,165,169, 82, 62, + 0,198,151, 88, 94,221, 43, 43,250,226,176,175,190,250,170,216, 84,157,110,221,186,245,157,209,163, 71, 71,142, 30, 61, 58,178, +117,235,214, 87, 0,156,189,119,239, 94,228,244,233,211, 35, 1, 12, 43,239, 64, 0,112,105,217,178,165, 44, 51, 51,147, 6, 7, + 7,211,170, 85,171,210,204,204, 76, 74, 41,165,119, 7, 53,162, 23,107,131,166, 92, 59, 77,207, 29, 57, 72,199,249,240,104, 27, + 31,169,201,199,219, 59,207,221,221,125, 17,138, 38,191, 46,235,224, 2,232, 87,187,118,109,101, 76, 76,140, 42, 46, 46, 78,181, + 96,193, 2, 85,199,142, 29, 85, 97, 97, 97,170,254,253,251,171,214,172, 89,163, 50, 26,141,170,205,155, 55,171,156,156,156, 98, + 94, 55, 91,111, 99,180,120, 60,222,234,232,232,104,250,226,197, 11, 10, 96, 89, 89,154, 0,164,206,206,206,221, 93, 92, 92,166, + 56, 59, 59,119, 7, 32,165,148, 34, 24,144, 52,144, 34,224,211, 6, 65,161, 39,134,117,174,177,182,115,147, 70, 3, 29, 57, 50, +211,143,211, 40, 29, 16,240, 70, 70, 75, 42,149,142,252,252,243,207,149,122,189,158,106, 52, 26,170, 82,169,168, 70,163,161, 74, +165,146, 14, 27, 54, 76, 97,111,111,223,175, 34, 77,119,119,247,111,175, 93,187,102,206,204,204,164,215,174, 93,163,167, 78,157, +162,235,214,173,179,122,122,122,174,168,236, 9,232,237,237,125,254,220,185,115,145, 81, 81, 81,145,183,111,223,142, 52,153, 76, +145, 70,163, 49,210,104, 52, 70,158, 56,113, 34,242,240,225,195,145,251,246,237,139, 52, 24, 12,145, 6,131, 33, 82,175,215, 71, + 86,175, 94,253, 76,101,143, 81, 83, 33, 82, 12,215,143, 81,186,226, 19, 42,255,126, 34,149, 77,237, 65,179, 39,180,165, 63, 53, +169, 66,219,138,112,188,100, 61, 42, 79,147,207,231, 95, 77, 74, 74,178,206,156, 57,211, 80,167, 78, 29,249,152, 49, 99,116,122, +189,158, 82, 74,169, 94,175,167, 99,198,140,209,213,169, 83, 71, 62,115,230, 76, 67, 98, 98,162,149,199,227, 93,168,132,209, 90, + 82,108,178,174, 94,189, 74, 75,162, 82,169,104,199,142, 29,147,234,215,175,191,173, 90,181,106,195, 43,210,148, 72, 36,125,102, +204,152,161,162,165, 96, 50,153,168, 82,169,164,137,137,137,214,170, 85,171,166, 3,112, 99, 23,115,166,201, 52,153, 38, 51, 90, +127,153,209, 26, 95,214,235,114,119,226,244,233,211, 35, 41,165,145,179,103,207,142, 44,138,108, 9, 0, 72,138, 22, 30,128,161, + 51,102,204,136,164,148, 70,126,245,213, 87,145, 0,122,149, 99,180,122, 29, 56,112,192,184,106,213, 42,234,229,229, 69,189,189, +189,233,234,213,171,169,213,106,165,153, 39,118,209,139,181, 65,159,204, 26, 69, 41,165, 52,118,209, 36,122,177, 54,104,252,250, +111,232,136, 17, 35, 52, 14, 14, 14,195,202, 49, 48,174,141, 26, 53, 82,106,181, 90,213,246,237,219, 85, 14, 14, 14,119, 1,212, + 1,192, 71, 97,175, 74, 9,128,247,235,212,169,163,120,244,232,145,106,207,158, 61, 42, 0, 11,108,140,108,212, 0,208, 65, 44, + 22,247,159,225,199,143,163, 91,190,166, 51,188,240, 16, 64, 61, 0, 30, 69,235,248,126,245,213, 87,148, 82, 74,253,253,253,175, +149,177,237,210,176,176,176,175,226,226,226,230,153, 76,166,121, 81, 81, 81,243,106,213,170, 53,179,119,117,159, 22, 71,135,117, + 9,151,127, 51, 49,156, 46,159, 26,246,195,123, 77, 59,239, 29,210,126,216, 7,213,220,175,143,241,180,215, 12,150,114,149, 67, + 29,254,160, 99, 83,197,246,243,243,187,157,156,156,252,202, 92, 41,149, 74,154,150,150, 70, 19, 18, 18,232,245,235,215,169,143, +143,207,197,138, 52,189,189,189, 31, 39, 39, 39,211,245, 43, 87,210, 1,245, 66,105, 91,103, 71,218,206,197,145, 54,150,216,171, +107, 3,141, 43,107,180,238,223,191, 31, 9, 32, 18, 64,100, 94, 94, 94,100, 94, 94, 94,100, 65, 65,193,171,247, 0, 68,202,229, +242, 72,185, 92, 30,105, 48, 24, 34,131,130,130, 42,109,180, 90,217,163, 85, 51,123,228,183, 16, 66,219,203,207, 61,125, 98,117, +119,203,173, 97, 45,104,193, 39, 29,233,170,112, 63,218,218, 14,159,218,120,220,123,217,217,217, 93, 1, 48, 13, 0, 23,192,168, +238,221,187,107, 40,165,180,123,247,238, 26, 0,163,138,222,255,156,199,227, 93, 0,208,221,150,114, 2,224,212,172, 89, 83, 93, + 28,201, 2,240,123,205,154, 53,213,245,235,215,167,245,235,215,167,254,254,254, 74, 0,163,108,189,160,213,168, 81, 35, 86,171, +213,190, 50,128, 50,153,140,166,167,167,211,248,248,120, 26, 19, 19, 67,239,222,189, 75,147,146,146,232,254,253,251, 45,206,206, +206, 39,217,197,156,105, 50, 77,166,201,140,214, 95,103,180, 94, 95,254,100,180, 78,156, 56, 65, 95,251,210,247,247,238,221,139, +156, 49, 99, 70,228,235, 78,237,117,241,217,179,103, 23, 71,189,190, 43,231,230,191, 57, 54, 54,150,142, 26, 53,138,134,132,132, +208,144,144, 16, 58,122,244,104, 42,151,203,169,234,249, 35,122,177, 54,232,221,193,141, 41,165,148, 42,159, 68,209,139,181, 65, + 35, 71,180,164, 15, 30, 60,160, 85,170, 84, 57, 87,206,239, 31,255,237,183,223,114,118,237,218,149, 9, 96,103,145,193,106, 14, + 96,181, 72, 36,218, 90,212, 92, 88, 21,128, 75,112,112,112,190, 70,163, 81, 13, 24, 48, 64, 5, 32,160, 28,205,118, 33, 33, 33, + 47, 54,111,222, 76,179,179,179,105,126,126, 62, 93,218,170, 22,165, 91,190,166, 11, 27, 87,181,174, 95,191, 94, 63,109,218, 52, +181,171,171,235, 9, 0,190, 3, 6, 12, 48, 83, 74,105,219,182,109,179, 74,211,115,118,118,238, 30, 23, 23, 55, 79,167,211,205, +147,201,100,243,242,243,243,231, 29, 59,122,116, 94,183,122,181, 70,201,191,153, 24,126,116, 88,151,240,247,252, 92,250,175,232, +218,228,163,180,153, 99, 7,204,110, 89,231,137,110,201,103,151, 7, 85,247, 90,246, 38, 7,220,195,195, 35, 67,175,215, 83, 0, +127, 90, 94,188,120, 65,221,220,220,146, 43,210,112,117,117,157,253,249,208, 33,150,126, 85,253,232,139, 85,115,168,233,252, 30, +106, 58,181,157, 62,255,126, 42,237,237,237,174,104, 46,224,204,176,181, 60,222,222,222,231,111,223,190,253, 7,163, 85, 80, 80, + 80,170,209, 82, 40, 20,145, 6,131, 33,178,102,205,154,103,222,182,226, 55,183, 67, 80, 59, 17,247,110,212,168, 54, 52,103, 98, + 71,218, 93,202, 79,122,139,147,104, 40,128, 43, 0, 70, 84,242,123, 28, 0, 75,138, 13,213,247,223,127, 79, 41,165,180,102,205, +154,106, 0,156,183, 40,143, 52, 52, 52, 52, 97,236,216,177,230,218,181,107,103,183,106,213, 74,118,231,206, 29,122,245,234, 85, +122,234,212, 41,122,240,224, 65,250,232,209, 35,154,150,150, 70, 99, 99, 99,105, 68, 68,132, 12, 64, 59,118, 65,100, 11, 91,216, +242,191,188,188,238, 69,254, 49,189, 14, 79,158, 60, 73, 35, 34, 34,200,201,147, 39,105, 81,178,174, 20,128,125,227,198,141,115, +150, 44, 89,178,188,104, 14, 31, 82,159, 71, 6,117,114,224, 63,232,228,192,127, 80,159, 71, 6, 17, 66, 8,165,116,211,162, 69, +139,190,173, 95,191,126, 6, 0, 17, 33,196,187,140, 92,176, 54,110,110,110, 72, 78, 78,134, 84, 42,133, 84, 42, 69,114,114, 50, + 40,165, 48, 83,192, 68, 1,189,209, 8,173, 86, 11,157,149, 66,107, 5, 20, 42, 21,188,189,189, 97, 52, 26,131,202, 72, 42,110, + 48,120,240,224,160,176,176,176,156,233,211,167,167, 3, 24, 11, 96,235,135, 31,126,120,254,247,223,127, 15, 83,169, 84,249, 49, + 49, 49,186,122,245,234,117, 7,224, 29, 23, 23, 55,114,237,218,181, 24, 53,106, 20, 0,180, 43, 67,179, 94, 68, 68,196,169, 71, +143, 30, 5,141, 24, 49, 2, 87,174, 92,193,210,165, 75,145,155,155, 75, 1, 64,175,215, 83,139,197, 98,108,217,178,165,113,213, +170, 85, 77,219,182,109,123,187,122,245,234, 92, 0, 72, 72, 72,120, 94,134,102,173,192,192, 64,232,245,122,228,228,228,224,209, +163, 71,112,148, 74, 17,157,158,235,213,126,197,250,188, 89, 71,207,243,135, 54, 13,115,157,210,165,149,126,241,185, 43,193,117, +124,189,188, 12, 70,147,119,108, 70, 86,250,155,228,221, 9, 4,130,228,220,220, 92, 24, 12, 6,104,181, 90, 40, 20, 10,228,229, +229, 33, 55, 55, 23,233,233,233, 16, 8, 4, 47, 42, 76,164,207,207,191,150,240,219, 85,178,127,195,247, 8, 50,231,131,119,104, + 53,120,191,254,132, 26,134, 28,108,156, 51,193,209,224,230, 49, 95,234,228, 84,224,226,226,178,137, 16, 82,179, 34,189,240,240, +112,228,229,229, 33, 47, 47, 15,110,110,110,112,113,113,129,139,139, 11,100, 50, 25,228,114, 57, 20, 10, 5,130,131,131,209,160, + 65, 3,236,216,177,227,157,228, 31,222,212,211,120, 51, 44, 19,207, 63, 75,135, 64, 44, 70,117, 23, 73, 96, 83, 71,226, 90, 78, +146,122, 71,129, 64,112,192,205,205,237, 28, 33,228, 19, 66,136,152, 16,242,137,155,155,219, 57, 62,159,223, 23,192, 66, 74,233, +174, 74, 22, 99,241,252,249,243,191,138,139,139,115,120,240,224, 1,166, 79,159,142, 5, 11, 22,224,249,243,231, 63, 82, 74,173, + 69,191,251,177,187,187,251, 9, 46,151,251, 51, 33,164, 7, 33,164,187,175,175,111,167, 10,116,251, 78,155, 54, 77,215,168, 81, +163,216, 39, 79,158,244,253,237,183,223, 26, 79,157, 58, 85,254,242,229, 75,196,198,198,194,199,199, 7,254,254,254, 80,169, 84, + 40, 40, 40, 64,223,190,125,165, 78, 78, 78,195, 88, 86, 42,131,193,248, 95,229,117, 47,242,119,226,245,113,180, 74,190, 46,181, +215,161,131,131,195,252,200,200,200, 22,245,235,215,231, 1,216, 15, 0, 97, 92, 12,236,219,178,225,214,163,155,190,175,127,120, +213,156,250,221,234, 7,111, 13,227,162,184, 23,219,137,198,141, 27,187, 68, 70, 70,182, 20, 10,133,159,150,149,119, 15, 0, 46, + 46, 46,144, 74,165,112,118,118,134,139,139, 11,172, 86, 43, 84, 26, 29,212, 22, 64,169, 51, 64, 46,151, 67, 89,244, 90,165, 55, + 66,173, 86,191,250,110, 41,180, 31, 59,118,108,206,218,181,107,179, 51, 50, 50,190, 7, 80,111,212,168, 81,125,214,172, 89,131, + 75,151, 46,233,122,132,212,112, 91,212,166,225,183,117, 50,158,207, 11,225, 99, 28,128,107,215,174, 93, 67,203,150, 45, 65, 8, + 25, 82,154,160, 72, 36,250,105,239,222,189,162,152,152, 24,212,168, 81, 35,102,200,144, 33,131,190,255,254,251, 32,177, 42,255, + 6, 0,152,243, 50, 99, 38, 77,154,244,245,162, 69,139,114,114,114,114,140, 26,141,198,179,119,239,222, 72, 78, 78, 70, 90, 90, +218,239,101,152,204,216,168,168, 40, 42,151,203, 17, 31, 31,143,168,168, 40,209,215, 95,127,221,212,194,225,244, 73,133,227, 7, +163, 90, 53,110, 58,162,121, 67,236,186,249, 64,112,253, 89,130,115,227,170,126, 46,247, 83, 50,170,153, 8, 94,188,201, 1, 87, + 42,149,171,191,253,246, 91,149, 74,165, 66,106,106, 42, 30, 62,124,136, 39, 79,158, 32, 41, 41, 9, 75,151, 46, 85,229,231,231, +175,169, 72,195,215,158,247,197,178,169, 31, 18,222,227,223,129, 7, 87, 1,141, 18,208,170,160,127, 26,137,109, 79, 51,177,238, +208, 17,187,151,201,201,206,251,246,237, 27, 27, 16, 16, 16, 73, 8, 9,174,168,211, 5, 0,112, 56,156,215, 43, 39, 56, 28,142, + 18, 64,166, 88, 44, 78,113,116,116, 76,225,112, 56,153,148, 82,245,187,168,252, 28, 51,140,224,114, 1, 59, 17, 56,124, 94,121, + 39,201,160, 33, 67,134,236, 77, 73, 73,233, 22, 31, 31,223, 98,205,154, 53,223,218,219,219, 71,175, 89,179,230,219,248,248,248, + 22, 41, 41, 41,221,134, 12, 25,178,151, 16,242,126,101,126,191,102,205,154,147,230,205,155,135,165, 75,151,162, 65,131, 6, 8, + 14, 14,214,204,159, 63,127, 53,128, 57,132,144, 79,131,131,131,111, 76,154, 52,105, 76,118,118,182,119,106,106,106,131, 31,127, +252,113,194,234,213,171,155,164,167,167,219, 87, 32,221,186,107,215,174, 56,125,250, 52, 0,100, 80, 74,227,243,242,242,204,233, +233,233, 8, 13, 13, 69,211,166, 77,161, 82,169,160, 82,169, 32,147,201, 16, 24, 24, 8,171,213,218,130, 93,202, 25, 12, 6,227, +255,207,112,149,105,180,236,237,237, 93,194,195,195, 81,189,122,117,151,162, 92, 44,184,217,241,102, 78, 25, 59,212, 65, 18,121, + 6, 36,234, 34,134,180,169,235,224,102,199,155, 89,244, 21, 94, 96, 96,160, 48, 60, 60, 28, 98,177,216,175,140,223,191,146,153, +153,137,240,240,112, 56, 59, 59, 67, 42,149, 34, 60, 60, 28, 70,163, 17,114,165, 18,106, 11,160, 49, 89, 33,151,203,145,159,147, + 5,141, 5, 48, 59,186, 33, 41, 41, 9, 92, 46, 55,161, 12, 77,159, 26, 53,106,228, 68, 71, 71,231, 0,184, 6,224,163, 5, 11, + 22, 96,198,140, 25,152, 59,119,238, 94,135,140,196,174,123, 79,255,234,182,123,254,199, 30,193,118,100, 40, 0, 99, 74, 74, 10, +156,157,157, 33, 22,139, 75, 53, 6,109,219,182,109, 36, 22,139,177,125,251,118,154,154,154,218,138, 82,122,144, 82,154, 64, 72, +161,217, 19,113, 32,167,148,174,142,140,140,108,246,245,215, 95, 63,235,220,185, 51,191,121,243,230, 88,184,112, 33, 0,156, 40, + 77, 83, 38,147,221,122,255,253,247, 13,151, 47, 95,198,211,167, 79,197, 71,143, 30, 29,184,112,225,194,186, 47, 95,190, 20, 30, + 63,117,230,189,157, 41,138,129,223,159,187,110,191,232,236,149, 91,238, 78,226, 58,213,220, 93, 17,245, 50, 77, 96,225,226, 78, + 69, 7,181,185,128, 55,182,131,136, 31,213,214,158,155,209, 65,196,143,108, 42,224,125,168, 80, 40,246, 29, 59,118,236,236,212, +169, 83, 85,217,217,217,112,116,116, 68, 94, 94, 30, 22, 47, 94,172,138,138,138, 58,164,215,235,143, 87,164,107,177,210, 70,254, + 85, 3,128, 23,209,175,222, 51, 90, 41,238, 24, 4,232,249,209,103, 8, 9, 13,133,193, 96, 64,189,122,245,200,130, 5, 11,196, + 82,169,244,203, 10, 77, 15,231, 79,213,205, 76, 8,201,164,148,166,169, 84,170, 84,145, 72,244, 82, 32, 16,188,204,207,207, 79, +165,148,102,189,131, 10,207,161, 28,124,209,178, 94, 77, 64, 40,194,203, 60, 85,250, 29, 37,205, 47,109, 93, 71, 71,199, 15,215, +173, 91,103,191,101,203, 22,211,164, 73,147,244, 19, 38, 76,224,107,181, 90,207, 9, 19, 38,240, 39, 77,154,164,223,178,101,139, +105,221,186,117,246, 18,137,164,255,155,148,197,100, 50, 33, 58, 58,250,251,184,184, 56, 49,165,244,115, 0,159,205,159, 63,127, + 84, 92, 92,156,253,218,181,107,113,240,224, 65, 28, 60,120, 16,125,250,244,193,228,201,147, 49,111,222,188,242,182,203,161,126, +253,250,225,110,110,110,184,122,245,106, 58,165,244, 37, 33,164,145, 68, 34,113,236,211,167, 15,186,117,235, 6,157, 78, 7,163, +209,248,202,104,113,185, 92, 56, 59, 59,187,177,203, 32,131,193, 96,252,181, 38,235,117,179,197, 3,128,226, 80, 93, 68, 68, 4, + 41,239,198,104, 41,200,134, 76,173, 65,146, 92,131,228, 2,235, 31, 62,179, 90,173,229, 22, 32, 61, 61,253,248,205,155, 55, 63, + 12, 15, 15,231,165,167, 23,182,136,133,135,135, 67,163,209, 32,253,193,109,168,173,128,184, 70, 24,212,106, 53, 10,158,220,135, +164,126, 11,184, 69,140,192,138,181,107,245,121,121,121, 27, 74,211,180,179,179,227, 87,169, 82, 37, 39, 33, 33,193, 12, 32, 95, + 42,149,118, 13, 8, 8,192,149, 43, 87, 0, 96, 23, 5,150, 33,234, 50,112,245, 48,104, 97, 72, 69, 18, 24, 24,136,236,236,108, +168, 84,170, 43,165,105,222,188,121, 51,206,100, 50,213,235,221,187, 55,249,229,151, 95,246, 19, 66,230, 2,120, 56,203, 27,220, + 7, 41, 89, 80, 91, 96, 79, 8,233,226,226,226,242,249,188,121,243, 58, 77,154, 52, 9,199,142, 29,195,185,115,231,140, 40,204, + 5,187, 89, 74, 52, 71, 78, 8,217, 56,109,218,180,230, 28, 14,231,163,243,231,207,155,131,131,131, 21, 70,163,209, 82, 43, 36, +132, 51,119,193, 55,130, 79, 62, 26,239,156,167,193,227,110,181,124, 90, 18, 2, 60, 78,203,126, 25,167,164,121,229,237,211,118, + 66,222,137, 33,109,234,183,253,112, 72, 47,137,184, 70, 29,168, 31,221,246,222,120,224,212,138,246, 34, 94,207, 44,173,185,143, + 84, 42, 29,120,229,202,149, 79, 12, 6, 67,117,161, 80,248, 66, 38,147,173, 82, 42,149, 21,154, 44, 30,143, 23, 17,230, 95,197, + 69,150,159, 15,251,162, 72,148,194,100, 69,174,222,140,167,206,193, 24, 86,197,255, 85, 51,104,102,102, 38,188,189,189,137,197, + 98,233, 85,158,230,185,115,231,208,179,103,207, 98,227, 9, 66, 8, 8, 33,185, 33, 33, 33, 89, 66,161, 48, 79, 32, 16, 40,150, + 45, 91,166,211,233,116,224,241,120,246, 22,139,133,251, 54, 21,190,153,152,120,182, 21,145,159, 38,244,238,208,185, 65,157, 80, +122,237,238, 3, 82,160,209,109, 43, 39, 10,248, 99,205,154, 53,121,249,249,249,199, 1, 60, 53,153, 76,187,247,239,223,111, 63, +114,228, 72,221,129, 3, 7,134, 3, 8, 90,190,124,249, 64,149, 74,181,169, 50,229,120,254,252,249,143,139, 22, 45,250,106,246, +236,217,216,177, 99,199, 36, 0, 51,138, 34, 93,125,230,205,155,135,101,203,150, 97,199,142, 29,214,167, 79,159,158,178, 90,173, +207,167, 78,157, 90,223,203,203, 43, 55, 35, 35,227,249,130, 5, 11,202,146,109,220,189,123,119,253,141, 27, 55,236,148, 74,229, +117, 66,200,231, 19, 39, 78, 28,219,172, 89, 51,197,144, 33, 67, 36,249,249,249, 50, 7, 7, 7,187,205,155, 55,187,240,120, 60, +168,213,106, 16, 66,160, 84, 42, 13,236, 82,200, 96, 48,254, 87, 41,203,139,252, 29,120, 53,221, 78,105,247,212,210, 54, 80,163, +209,100, 37, 39, 39,135,166,165,165,153, 1,152, 1, 32,207, 96,254,110,209,230,195, 91,250, 55,175, 41,206, 48,153,112,244,110, +140, 38,207, 96,254,174, 56, 50,145,150,150,166,124,249,242,165,163, 86,171, 85,149,241, 91,191,255,244,211, 79,218,203,151, 47, + 59,198,199,199,195, 98,177,160, 81,163, 70,136,141,141, 69,193,211,104,136, 67, 27, 65,220,174, 39, 98, 34,239, 34,234,220, 5, + 36,170, 12,230,103,115, 22,201, 85,106,245, 60,131,193,112,180, 52, 65, 62,159,159, 95,184,125,212, 2, 0, 10,133,226,161, 74, +165,106,227,229,229,133,199,143, 31,139,213, 22, 76, 30, 56,115,197, 26, 74,169, 69, 80,216, 83,108,202,144, 33, 67,112,239,222, + 61, 0,184, 87,154,166, 66,161,152, 52,110,220,184,203,219,183,111,231,197,199,199,119,219,178,101, 75,183,103,207,158, 81,146, +159,108,185,161,225, 35,104,212,228, 38,235, 3, 67,206,245,236,217, 19, 62, 62, 62,216,188,121, 51, 86,173, 90,101,250,248,227, +143,227, 86,173, 90,213, 4,192,238, 50, 14,130, 28,192, 25,119,119,247, 79,234,214,173,171, 84,171,213,200,203,203, 67,122,122, + 58, 92,221,220, 56,102,112, 90,122, 56, 59,239, 62,158,169, 20,243,206,220,194,237,212,140,114,163, 89, 45, 4,188,247,135,182, +111,216,246,211,217, 51, 37,184,113, 20,100,220, 60,208, 45,223,226,179,209, 3, 29,117,250,221,237, 26,243,120, 35,229,102,243, + 78, 0, 7, 43,233,200,187,183,105,211,102,239,162, 69,139, 68,179,150, 46,194,242, 80, 63,152,243,242,144,163,183, 32, 87,111, +134,162,224, 41, 30, 63,142,129,155,155, 59, 18, 19, 19,161,211,233,240,228,201, 19,202,229,114,143, 87, 20,209, 41,241, 27,197, +205,133, 50,161, 80,152,199,231,243,179,120, 60, 94,126,124,124,188, 90,167,211,129,195,225,136, 45, 22,139,200,134,178, 86,113, +119,119,159, 10,160, 63,128, 99,202,220,220,213,225,124, 56,131,135,246,213, 61,221,222,155, 51, 97,164,123,128,175,167, 44, 62, +238,133,105,195,217,223,114,117,122,124, 87,206, 73,114,162,100, 68,146, 16,242,217,129, 3, 7,198, 2,216, 90, 52,239,214, 5, + 0,235,223,224,252,155,115,232,208,161,175,102,207,158, 13,145, 72,244,106,240, 84,145, 72,100, 15, 0,123,246,236,193,227,199, +143,155, 21,231,107, 1,216,107,131,102, 80, 88, 88, 88,252,225,195,135,237, 0,248, 78,156, 56,177,197,154, 53,107, 48,122,244, +232,156,152,152,152,230,133, 17, 88, 18,244,209, 71, 31,221,217,177, 99,135,139,213,106, 69, 65, 65, 1, 12, 6, 67, 2,187,148, + 51, 24, 12,102,182,254,146,104, 86, 56,165, 52,170,104, 96,239, 8, 0, 39, 41,165, 25,127, 48, 90,197, 27, 8, 0, 58,157,238, +199,192,192, 64, 41, 0,127, 0, 61, 1, 28,123,104,193, 65, 60, 75, 66,116, 98,234,204, 98,227,245,208,242,234, 38, 62,248,206, +157, 59,134,170, 85,171, 62, 0,240,109, 25, 55, 50,133,187,187,251,194,169, 83,167, 46, 94,184,112, 33,143,199,227,225,242,229, +203,184,121,246,164,245,201,245,219, 36, 73,107,209, 42,238, 78, 75,227, 81,203, 45, 47,109,254,163,251, 26, 28,162,148,166,150, +183, 97,106,181, 58,249,249,243,231,118,117,235,214,181,220,191,127,223,157, 82,122,228,212,169, 83,109,166, 79,159,142, 43, 87, +174,236, 62,175,179, 12,163,212,186,159, 16,194, 3, 48,172, 87,175, 94,159, 15, 28, 56, 16, 13, 26, 52, 48, 2,216, 81, 70, 57, +111, 16, 66,134,165,164,164,108,252,242,203, 47,157,191,252,242, 75,112, 56, 28, 82,114, 95,229,230,230,226,193,131, 7, 24, 50, +100,136,252,183,223,126,155,220,169, 83,167, 49,173, 91,183,198,233,211,167,125,109, 56, 24,191, 63,121,242,164,159, 84, 42, 37, +207,159, 63,135, 66,161,192,141, 27, 55,248,129,129,129, 45,247,239,223, 47,172, 94,189, 58, 98, 30, 61,194,169, 97,195, 34, 8, + 33,129,148,210,151,165,233,136,248,228,147, 81,131,122, 73,244, 55,142, 3, 81,215, 0, 0, 42,133, 18,218,196,104, 12,108, 90, +211,233,202,147,164,137, 40,236,133, 89, 41, 92, 93, 93, 63, 91,190,124,185, 56, 56, 56, 24, 95, 44, 90,138,169,179,167,227, 35, +207, 64, 40,210,146,145,107, 1,236, 28, 28,176,112,206,108,244, 26, 52, 4,158,158,158,120,244,232, 17,221,188,121,179, 90, 46, +151, 47,179,197,104,113,185, 92, 16, 66, 0, 64, 45,151,203, 85,118,118,118,114, 30,143,151,103,177, 88,178, 78,172, 93,221,136, +147,151,245, 1, 33,132, 43,178,114, 78, 20,117,182, 40, 53, 63,207,153,144,192, 26, 65, 65,143,126,222,188, 89,220,172, 89, 51, +114,247,238,221, 79, 38,142, 31, 55,182,127, 88,181, 83,125, 59,183,133,183,143,183,222,106, 52,200, 78, 29, 59, 97, 90,127,224, +212, 85, 3,177,126, 25, 73,169,182, 18, 79, 39,123, 75,154, 30, 66,200, 80, 0,131, 0, 28,166,148,238, 34,132,140, 2,208, 23, +192,161,178, 18,228, 9, 33, 28, 0,155, 6, 12, 40,156, 76, 64,171,213,106,138,223,175, 95,191,126,201,223,178, 86,230, 24, 57, + 56, 56, 56,218,219,219,191, 56,125,250,180,104,200,144, 33, 46,139, 23, 47, 78, 27, 61,122,180,223,238,221,187,127, 4,144, 72, + 8, 9, 1, 80, 67,173, 86, 91, 56, 28, 14, 66, 66, 66,176,110,221, 58,149,197, 98,217,202, 46,227, 12, 6,227,239, 96,182,254, +134,197, 14, 7, 16, 5, 32,162,168, 3,225,120, 0,229, 79, 42, 13, 96, 81,116,116,116,241, 24, 90, 19,203, 27,222, 97,198,140, + 25,145,247,238,221,139, 4,176,164,162,110,142, 60, 30,239,200,199, 31,127, 76,189,188,188, 84,158,158,158, 71,248, 92,238, 88, +127, 17,194,241, 6, 93,221, 1,180,217,185,115,103,159, 31,127,252, 49, 2, 64, 51, 0,124, 63, 63,191,244,204,204, 76,213,111, +191,253,166,106,213,170,149,202,221,221, 61, 59, 44, 44, 76,181,124,249,114,149,201,100, 82, 77,157, 58, 85,133,215,198,251, 42, + 67,219, 30,192, 39,118,118,118, 71,106,215,174, 29, 61,167,119, 71,211,210,201, 99,233,168,154, 30, 42, 0, 63, 2,248, 24,128, + 51, 0,254,192,129, 3, 47, 62,121,242,228,108, 88, 88,216, 70, 27,116,125,235,214,173,123,105,239,222,189,247, 14, 31, 62, 28, +249,229,151, 95,222,115,115,115, 75,141,139,139,179,234,116, 58, 90, 80, 80, 64,101, 50, 25, 61,121,242,164,197,213,213,117,109, + 89, 58,109,132,220, 12,122,110, 87,169, 67, 56,164,204, 30, 65, 91,217,113,210,222,164, 27,170, 88, 44,206,207,203,203,163,153, +153,153, 52, 62, 62,158, 30, 58,116,136,118,111,217,148,238,251,168, 63,221,245, 97, 31,186,172,123, 83,218,204,209, 94,237,237, + 40,185,231,232,232,152,237,236,236,188, 9, 64,205,138,134,119,208,235,245,175,134,111,168, 82,165, 74,100, 72, 72,200,225,176, +176,176, 21,199,142, 29,251,108,229,202,149,125, 58, 84, 11,252,106,113,183,150, 90,205,133, 3, 84,185,255, 71, 58,163, 81,176, + 46,140,139, 65,101, 14, 23,226,230,186,243,234,149, 43,214,226, 1, 58,205,102, 51, 61,122,228, 8, 29,252, 94,151,104,249,153, + 61, 63, 95,159, 55,105,239,212, 70,193, 71, 91,217, 99, 40, 94, 27,168,180,180, 37, 92, 2,183,182, 78,156,117, 61, 2, 92, 51, +218, 72, 57, 63, 54,119,132, 75,137, 99, 54, 56, 56, 56, 56,158, 82,154, 17, 26, 26, 26, 15, 96, 87,104,104,104,201,215, 31, 84, + 52, 56,233,252,249,243, 41, 10,103, 81,224, 0,152,187,104,209,162, 72, 74,105,100,205,154, 53,111, 80, 74,209, 64, 12,247,118, + 82,206,207,189,131,188,242,218, 73, 57, 63, 55, 16,255,121, 52,119, 74, 41, 2, 5,168,213,198,195,225,122,159,154, 62,202,246, +126,210,107,187,182,109, 89,218,163, 71,143,205, 0,214, 2,248,214,205,205,237,250,208,161, 67, 31,239,216,177,227,241,242,229, +203,141,113,113,113,116,204,152, 49,106,161, 80,248, 45,235, 58,206, 22,182,176,133, 45,127,249,200,240, 62,149, 25,176,180,215, + 87, 95,125, 21, 73, 41, 45, 30, 75,107,100, 41,235,244,158, 61,123,118, 36,165,180,120,116,248,206, 21, 13,104, 6, 96,254,186, +117,235,168, 80, 40,252,249,109, 7, 73, 3,224,221,183,111,223,230, 10,133,162,137,151,151, 87,147,162,168,147,191,187,187,123, +252,238,221,187, 85, 90,173, 86, 69, 41, 85,153,205,102,213,189,123,247, 84,237,219,183, 87,161,112, 8, 8,155, 70, 8, 47,185, +204,242,198,141,187,115, 62,164,179,188,113,227,181,239,142,216,186,117,235,233,132,132,132,227, 78, 78, 78,211,109, 28,184,210, +223,195,195, 99,174,171,171,235, 89,119,119,247, 89,174,174,174, 25, 70,163,145, 22, 20, 20,208,216,216, 88,122,229,202, 21,122, +243,230, 77,234,234,234,154, 90, 86, 57, 59,137,120,183, 10,150,126, 66,173, 91, 23, 81,195,154,153, 20, 0,149,173,156, 65,115, +127, 90, 64,239,142,235, 70,219,219,115,127,127,147, 65,231,156,157,157, 55, 29, 57,114,196,250,252,249,115,122,226,196, 9,122, +242,228, 73, 58,121,242,100, 90,203,215, 71,223,220,142,147,213, 70,200, 59,251, 38, 3,150,234,245,250, 72,133, 66, 17,169, 82, +169, 34,107,215,174, 29,217,180,105,211,195,205,155, 55, 95,113,224,192,129,207, 22, 47, 94,220,167,147,163, 48, 86,115,225, 0, +165, 95,190, 71,233, 39,173,233,139,177,237,105, 71, 17,239, 65,153,154, 94, 94,169,197,163,181,171,213,106,122,237,218, 53,122, +233,210, 37,234,237,238,174,104, 43,226,142,111, 37, 68,187, 86, 78,112,182,181,156, 29,164,156,109,183,126,250,206,162, 61,189, +131,238, 25,245,158,185,189, 51,103, 93,137,245,246, 81, 74, 51, 6, 12, 24,144, 72, 41,205, 56,116,232, 80, 10,165, 52,163,127, +255,254,137, 69,161,225,189,165,105,190, 54, 56,233,214, 34,147,245,201,252,249,243, 35, 41,165,145,243,231,207,143, 4, 10, 7, + 81,109, 39,229,108,191,189,113,153, 85,127,114, 59, 61, 48, 38,194,210, 78,202,217, 94,106, 57,157,121,199,163,182,174,164,134, +179,187,232,145,201,195, 45,173,189,157,174, 6, 7, 7, 47,251,236,179,207, 14,223,188,121,243,161,197, 98,121, 28, 31, 31,255, +120,237,218,181,143, 91,180,104,113,195,205,205, 45,218,206,206,238, 99, 54, 40, 34,211,100,154, 76,147, 13, 88,250,223, 89,120, +229, 52,157, 28, 39,132,136, 41,165, 83, 7, 14, 28,136, 37, 75,150, 12,174, 87,175,222, 80, 63, 63, 63, 15, 0, 72, 79, 79,215, + 0, 80, 12, 28, 56, 16,115,231,206,197,210,165, 75, 87, 20,229,178,252,127, 38,159,101, 18, 66,170, 76,154, 52, 41,123,241,226, +197,214, 49, 99,198,132, 82, 74, 31, 17, 66,106, 13, 31, 62,252, 19, 30,143, 55, 48, 48, 48, 48, 44, 35, 35, 35, 71,171,213,238, + 2,176,177,184,205,180,178, 8, 57,176, 52,174,234,131,179, 28, 88, 74, 52, 13,189, 55,119,238,220, 33,253,251,247, 55,174, 92, +185,210,172, 80, 40,142,217, 88,238, 20, 0,223, 20,191,118,115,115,243,126,240,224,193,199,158,158,158,156,248,248,120,232,245, +122, 60,127,254,220, 10,224,215,178, 52, 84,102,186,122,253,161,243, 33, 83, 71,244,116,210, 60,189, 15, 1,151, 11, 19,223, 14, +153,183,206, 98,235,181,167, 10,181, 17,107,222,100, 59,101, 50,217, 15,147, 39, 79, 30, 62,125,250,116,251,192,192, 64,242,251, +239,191, 99,255,254,253,250,236,236,236,238,148,210,171,111,122,172,172, 86, 43,236,236,236, 0, 0, 51,102,204, 0,135,195,225, +103,103,103,219, 17, 66,132,132, 16, 7, 66, 8,215,148,240, 24, 86, 69, 1,178, 10,100, 72,201,146,149,171,103,177, 90,247,223, +190,125,123, 74,195,134, 13, 57,119,239,222, 69, 78, 78, 14,158, 63,127, 78, 45,148,238,189,170, 49,111,170,108,249, 28, 92,221, +250, 54,112, 17,114,236,182,205, 69, 91, 3,135,187,193,138, 1, 0, 62, 41,250,120, 43, 33, 68, 0, 32,175,118,237,218, 29,158, + 60,121, 34,170, 93,187,182,246,233,211,167,167, 9, 33,126, 0,182,151,218,188, 43, 18,229, 2,200, 61,116,232, 16, 0,140,163, +148, 90, 9, 33,141,230,205,155,151,113,237,218, 53,204,159, 63, 63, 11,192, 58, 0,144,184,184,245, 14,147, 10,136,221, 47,243, +209, 66, 15,206, 26, 43, 45,181,115,129,196,211,171, 99, 93, 49, 7,252, 45, 95,163,137,119, 8,199,206,108,172,183, 96,193,130, +107, 42,149, 74,191,111,223, 62,195, 7, 31,124,192,141,139,139,187, 3,224,122, 81,179,166,153, 53, 68, 48, 24, 12,198, 95,158, +163,245,250,176, 14,165,231,104,149, 98, 8,246, 16, 66,114,151, 46, 93,218, 17,128,211,129, 3, 7, 26,215,170, 85, 11, 0, 16, + 27, 27,235, 16, 18, 18,242,172,126,253,250, 79, 0,220,162,148, 30,183,177, 60,197, 23,126,235, 59,218,190,152,233,211,167,147, + 29, 59,118,152,129, 66, 19, 84,116,115, 89, 13, 96,117,121,121, 62,111, 75,112,112,112,151,175,191,254,218,176,101,203, 22,203, +183,223,126,123,140, 82, 26,247, 38, 58,249,249,249,203, 71,142, 28, 57,124,222,188,121, 82, 71, 71, 71, 18, 29, 29,109,221,186, +117,171, 34, 63, 63,127,121, 89,223,185,109, 48,239,107, 39,228,245,151,169, 15,116, 25, 28, 94,213,241,201,164, 8,196,222,190, +142, 93, 87, 31, 43,227,242,181,231,238,154,205,251,223,208,188, 62, 39,132, 52,152, 59,119,238, 12,163,209,216,159,207,231,223, + 81, 40, 20, 11, 40,165,191,191,233,126, 50,153, 76, 89,213,171, 87,127,253,119, 76, 86,171,149, 82, 74,249,102,179, 89,236,106, +180,158,156,183,106,203, 71, 31,132, 72,133,185,185, 50,252, 18,167,208,151,232,108,241, 39,114,114,114, 86,140, 29, 59,118,244, +188,121,243, 92,156,156,156, 72, 76, 76, 12,221,183,111,159, 42, 39, 47,111,201,155,148, 81, 83,144,127,238,196,193, 3, 3, 91, + 27,204,100,103,162,146,242,184,228,116,137,178,158, 7,112,190,232,100, 26, 65, 8, 25, 0,224, 40,165,244,151,114, 53, 53,154, +115, 0,236, 6, 12, 24,128,232,232,232,193, 0,246, 0,216,251,205, 55,223, 52,159, 59,119, 46, 22, 44, 88,128,121,243,230,117, + 1,112, 86, 89,144,119,242,240,222, 93,195,218,155, 76,156,157, 73, 74, 43,151, 67, 78,149,170,153,155,117,254,244,249, 11,189, +155, 56,249,146, 77,103,175, 91, 53, 86,122,127,212,168, 81, 5, 6,131,225, 44,128, 53, 0,162, 41,165,172,119, 33,131,193, 96, +252,255, 6,126, 54,149, 98,188, 54, 85,104,180,138,190,124, 1,192, 5, 66,136,119,171, 86,173, 22, 73,165, 82,177,197, 98, 65, +126,126,126, 26,128, 85, 69,209,153,202,176, 79, 46,151,127, 41, 20, 10, 55,188,163,141,211, 17, 66, 60,107,215,174,205, 7,160, + 47,229,243,119, 99,178, 40, 14, 61,143,123,238, 4,138, 67,197,111,197,197,197,237, 13, 11, 11,235,243,244,233,211,223, 40,165, +167,222, 98, 27, 94, 18, 66, 26, 78,158, 60,249, 11, 0,125, 0,252,154,159,159,191,188,172, 68,248, 98,174,234,205, 3,155,240, +120,195,239, 39,101,126,108,176,210,106,118, 28, 78,130,218, 72,127,186, 99, 54,239,121,203,125,250, 28,192,152,162,229,173,201, +205,205,173,112,144, 79, 66, 8,185,250, 34,253,214,227,148,236,210, 58, 91,148, 86,198, 12, 66, 72,131,169, 83,167, 78,181, 90, +173,131, 56, 28,206,145,220,220,220, 10,247, 89,153,145, 60,131,101,202,134,203,119, 5,171, 44,214,206, 66, 14,231,172,202,100, +153, 89,198,239,238, 2, 96,211,232,240, 47, 94,188,248,121,193,130, 5,117,231,205,155,135,245,235,215, 23,119,187,188, 48,111, +222,188,108,139,197,226,191, 96,193, 2,108,220,184,209, 12, 0,122,147,117,218,150,107,247, 57, 27,172,214,247,248, 28,206,105, +189,201, 58,173, 84, 83,174, 51,127,178,230,240, 25,163,209,106,237,194, 5, 57,157, 97,176,206,209,235,105, 18,187,204, 49, 24, + 12,198,255, 38, 60, 91, 87,164,148,102,190,139, 27, 47,165, 52, 30,128,211,172, 89,179,222,165,147,204,254,171,119,212,215,233, +244, 71, 0, 63,126,253,253,190,146,191,123, 7,168,120, 80, 81, 91,205, 22,128, 79,139, 22,155,185,107, 54,239, 70, 25, 67, 74, +252,205,158, 6, 40,128, 3, 69,139,173,223, 73, 69,225, 92,150, 83,222,246,247,239,107,104, 6, 10,123, 17,190,203,109,138, 66, + 97, 47, 20,164,165,165,149,220,206,135, 69, 11,138,199,148,187,173,166,217, 0,134,219, 88,206,193,236,210,197, 96, 48, 24,255, + 59,148,214,116, 88,105,163,197, 96, 48, 24, 12, 6,131,193, 40,245,193,186,204,220, 96, 2,160,115, 25, 95,178, 57,177,157, 16, +210,249, 13, 10,117,129,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,191, 59,214,253,127,184,176,191,114, + 92, 9,214,245,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255,218,133,195, 2,126, 12, 6,131,193, 96, 48, 24,111, 14, 33, + 36,188,232,175, 15, 33,100,124,209, 84, 60, 0,202,200,209,226, 55, 91,148,101, 54,155, 61, 1,128,199,227,101,155,238,204,241, + 41,239, 7,248, 64, 39, 51,240,115,145,224, 56, 83, 97,119,248,215, 53,207,155,205,102,151, 34,205, 2,211,157, 57,221,202,213, +108,186,240,236, 31,214,191, 61,187, 75, 41, 91,198,229, 55, 93,152,254, 90, 89,125,109,222, 51, 69,115, 36,254,213,229,252,187, +104,254,155, 17, 52, 95,148,101, 50, 21,214, 35, 62,159,151,109,188, 93,126, 61, 18, 52, 91,152,254,135,245,111,205,246, 42, 79, +211, 65, 36,204,171,225,231,177,162, 60,205,248,244,220,169,106,141,206,173, 60,205,202,158,155,254, 62, 62,157, 44, 69,231, 38, + 23, 24,151,146,158,126,254,127,169, 46, 17, 66, 26, 3,152, 3,192,169,196,219,209,148,210,207, 89,173,100, 48, 24,127, 35,202, +156,130,167, 84,163,101, 54,155, 61, 35,143,204,131, 90, 15,116,122,127,161,103, 80,223,141,127,234,213,102,214, 21,216,201, 98, +246,133,113, 77, 10, 23, 15,158,209, 41, 61, 61,157, 20, 93, 56,127, 6, 16, 80,138,166, 75,228,145,121,208, 24,128,182, 67, 23, +184, 4, 0, 78, 57, 2,193, 23, 34,177,184,131, 86,171,173, 11, 0, 34,145, 40, 70,171, 86, 95,246, 48, 26,151,191,190,126, 89, + 91, 86,178,172, 29, 71, 46,244, 12,237,187,113,178,197,106,181, 75,187,187,161,173, 46, 55,142,199, 55,235,215,205, 2, 78,207, + 3, 44,182,236,169, 63,252,238,160,153,110,124,160,163,157,189,125, 3,103, 23,151, 54, 86, 74,107, 91,173, 86, 98, 49,155, 31, + 43,228,242,235, 86,179,249,129,217,160,118,139, 60,246,157,181,188,114,190,190, 45,131, 0,222, 17, 96,160, 88, 34,233,192,229, +243, 91, 2,128,197,100,250, 93,173, 82, 93,238, 7, 28,180,101,219,109,221, 63,111,186,254,191, 13,147,201,236,153,112,118, 30, +244, 38, 32,124,192,119,158,245,135,255,178, 27, 0, 12,217, 15,188, 84,113,199,154, 1,128,184, 70,207,219, 66,239,240, 44, 0, +224,189,204,240,140, 61, 49, 27,122, 19, 80,187,231, 2,207,138, 52, 63,152,187,223,109,250,248,254, 66, 0, 56,119,232,199, 90, +151, 14,175,127, 15, 0, 58,246,159,120,186,235,128, 73,177, 0,176,116,211, 97,183,189,223, 13, 46, 87,211,182,115, 83, 46,144, +199,157,168,105, 80,100, 56,251,139,121,222,113,113,113, 28, 0,240,245,245,181,233,220,172, 2, 72, 51,128, 79, 56, 92,110,155, + 26, 53,107,134, 3,160,241, 47, 94, 68, 89,204,230, 27, 62,192,186,119, 92,151, 38, 83,250,199,193, 89,139,230,194,100, 48, 24, +140,191, 19, 39,139,204,213,201,215, 63, 40,179,215,161, 90, 15, 92,125, 14,180,107, 94, 31,227,135,247,144,148,252,236,224,198, + 5, 1,113,119,127, 13,221,242,203,114, 78,253,250,245,145,144,144, 96, 83, 41, 52, 6,224, 74, 28, 0,217, 19,199, 2,177,248, +197,202,101,203,156,186,116,233,194,243,245,245, 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 31, 65,246,164, 64, + 99,128,242,138, 13, 67,128, 22,151,181,110,173,170,152, 51,105,176, 20, 0,102,189,191,174,241,221,103, 89,174, 47, 94,188,232, +244,213, 87, 95,229,113, 47, 95, 94,239, 14,108,203, 2, 82,108, 41,231,142,227,183,237,165, 25,123,130, 70, 76,154,116,168,102, +205,154,146,192,192, 64,226,232,232, 8, 46,151,139,130,130,130,128, 71,143, 30,189,119,231,206, 29,245,133,171, 63,219,221,187, +211, 59, 62,219,190,153,206,166,109,215,166,219,159,115,116,140, 25,217,175, 95,149,193,131, 7,219,215,168, 81, 3, 0,240,226, +197,139,224,131, 7, 15, 14, 61,116,232,208, 92,104,211,205, 26, 3,116, 21,109,251, 43, 77, 0,246, 64, 75,103, 79,207, 17, 92, + 62,191,174,217,108,246, 43,138, 54,164, 89, 76,166, 24, 89,118,246,174,215,215,103,252, 25,189, 9,120,146, 1,116,110, 19,142, +145,253, 59,139, 1,224,171, 33,139,154,191, 76,124, 46, 48, 24, 12,168, 21, 82,187,213,183,223,173, 56, 11, 14, 7, 59, 15, 95, +120,181,190, 45,154,209, 79, 18, 48,239,219,149, 72,127,120,176,185, 69,254,188,131, 82, 33,231, 2,128,147, 84,218,255,224,190, + 61,151,125,195, 6,222,122,158,107,180, 73,179,188,115,243,204,190,181, 62,169,143, 46,215,249,233,220, 86,126, 64, 64, 0, 30, + 62,124, 88,185,115, 83,254,204,209,234,227,243,120,249,151, 95,122,183,109,219, 22, 18,137, 4, 60, 30, 15,102,179,185,243,141, + 27, 55, 58,207,155, 55,111, 34,228,207,212,182,158,155, 54,176,156, 16,210,225,131,241,147,125,122,244, 25,136,254,221, 91,177, +138,200, 96, 48,254, 86, 16, 66,198, 23,245, 58,124,213,243,176,100, 47,196, 82,141, 22,143,199,203,238, 50,106,177,103,155,102, +245,112,247, 65,172, 60, 41, 57, 67, 85,252, 89,126,204,193, 90,125, 90,249,213,185,118,237, 42,244,122, 61,126,255,253,119, 60, +120,240, 0,137,137,137,152, 48, 97,130,158, 7,140, 43, 67,179,160,237,208, 5, 46,144,199, 73,130,237,158, 85,187,240,244, 41, + 87,167,211,225,218,181,107, 40, 40, 40,128,157,157, 29,170, 84,169,130,174, 93,187,242,158, 62,125,234,218,169, 75,119,105,219, +238,195, 18, 32, 13, 86,241,120,188,130,178, 54,144,199,227,101,119,122,127,161,103,157,224,170,120,145,148, 46,159,243,221, 22, +149,213, 74,121,241,137, 47,141, 87,175, 94, 69,120,120, 56,206,159, 63,239,150,159,159,255,245,186,117,235,230,240,191,255,105, +181,201,144, 55,173, 28,189,130,182, 67, 23,184,184,101, 31, 8,188,116,230,168, 32, 38, 38, 70,176, 97,195, 6,228,229,229,193, +206,206, 14,206,206,206,240,246,246, 70,173, 90,181,200,172, 89,179, 36, 61,123,198,224,211,113, 3, 3,141, 65, 99,159,149, 85, +206, 87,219,174,122,233,224,174, 56, 87,227,240,201,147,156,214,173, 91,255,225,177,189,122,245,234,232,214,173,155,253,136, 17, + 35,106, 12, 30, 58,220,218, 54,226,131, 23,144, 4,106, 42,212, 84,167,136,220, 52, 55,125, 59, 15, 29,122,108,193,130, 5,206, +222,222,222, 16,139,197, 0, 0,185, 92, 94, 37, 41, 41,169,249,220,185,115, 7,220,142,222,199,107,219, 51, 37, 29, 98,127,109, +121,251,243,223, 10,159,207,203, 46,142, 34, 57,138, 69, 5, 41,169, 89,106, 0, 48, 24, 12, 48, 24, 12,208,235,245,248,120,226, + 4,238,184, 1, 77,107, 6,182,153,124, 63, 49, 45, 43,191,246,133, 91,174,197,223,173, 72,147,167, 73,148,201,146, 47,142,155, +247,229,151,222, 94, 94,255,105, 17,220,185, 99, 7, 55, 63, 63,191,243,188,121,243,234, 80,135,246,178,218, 61, 23, 56,151,167, + 89,222,185, 41,139, 61, 89,237,219, 73,221, 26,108,252,238, 4, 44, 22, 11,110,222,188,137,107,215,174, 97,197,138, 21,244,244, +233,211,114, 39,177,184,130,115,243,153, 99,107,159,204,160,239,191, 63, 68,132, 66, 33,126,253,245, 87, 60,125,250, 20, 28, 14, + 7,245,235,215,199,200,145, 35,209,185,115,103,239,241,227, 39,208,182,221,135,196, 67, 26,162,124,155,186, 68, 8,225, 0,152, + 60,115,222,247, 62,239,143,253, 4, 75,191,157,197,140, 22,131,193,248,219, 70,179,202, 28,226,129, 82,138, 19, 39, 78,208,162, +165, 29,165, 20, 20,224, 84,239,187,113,239,129,123,214,147,213,251,110,220, 75, 1, 14, 5, 56, 78, 64,213,134, 13, 27,154,100, + 50, 25,189,115,231, 14,253,248,227,143,213,171, 87,175,190,124,242,228,201,131,102,163,113,179,175,143,207, 15, 20,224,148,154, +121, 15,112, 2, 1,169,131,131, 67, 78,114,114, 50, 61,117,234, 20,157, 63,127, 62,221,181,107, 23, 61,125,250, 52,189,112,225, + 2, 61,125,250, 52,221,187,119, 47,141,142,142,166,177,177,177, 84, 44, 22,231, 4, 2,210,114, 52,185, 20,224,214,234,187, 97, +218,161,187,166, 5, 33,125, 55, 78,161, 0,215, 5, 8,109,216,176,161,229,224,193,131,116,231,206,157,244,151, 95,126,161,209, +209,209, 52, 55, 55,151,242,132,226,156,226,239,149, 85, 78, 10,112,252,252,252,114,100, 50, 25,245,247,247,167,118,118,118,212, +203,203,139,214,170, 85,139, 54,111,222,156,190,247,222,123,116,248,240,225,244,235,175,191,166, 50,153,140,218,219,219,103, 21, +127,175, 44,205,112, 64, 36, 22,139,147, 35, 35, 35,105, 89,104,181, 90,154,155,155, 75,207,158, 61, 75,197, 98,113,114, 56, 32, + 42, 79, 83, 4, 52, 10, 11, 11,203,201,205,205,165, 70,163,145, 38, 39, 39,211, 71,143, 30,209,167, 79,159,210,228,228,100,170, +213,106, 95,105,199,198,198,210,160,160,160, 28, 17,208,168, 76,205,127,243, 82, 92, 39, 94, 91, 2,188,188,222,243,246,246,214, + 30, 58,116,136,166,165,165,209,237,219,183, 83, 14,176,232, 79,235,150,163,105, 7,116,109,221,186,181,229,230,205,155,244,254, +253,251,116,198,140, 25,180, 91,183,110,180,123,247,238,116,222,188,121, 52, 53, 53,149,166,166,166,210,247,222,123,207, 98, 7, +116,173,168,126,150,118,110, 74,129,128,158, 61,123,106,141, 70, 35,141,143,143,167,117,235,214, 77,229, 2, 35,196, 64,157,118, +128,176,162,250,233, 7,184,248,248,248,100,220,188,121,147, 30, 62,124,152, 6, 6, 6,230,112,129, 15,156,128,234, 78, 64,117, + 46,240, 65,245,234,213,115,110,222,188, 73,243,242,242,104, 64, 64, 64,134, 31,224,242,166,117, 9,133, 19,108,111,157, 57,239, +123,250, 44, 85, 77,103,206,251,158, 2, 72, 46, 26,208,245, 60,171,147,108, 97,203,191,111,249,147, 23,249,167,245, 58,140,136, +136, 32, 0,174,148,103,217,180, 92,238,226,165, 75,151,242,116, 58, 29,182,108,217,162, 28, 52, 96,192,129,118,109,218,196, 87, + 11, 12,148, 17, 14,167,194,185, 11,115,132,194,207,150, 46, 93,234,108, 48, 24,112,239,222, 61, 52,110,220, 24,222,222,222,144, + 72, 36,144, 72, 36,240,244,244, 68, 72, 72, 8,178,179,179,225,232,232,136,233,211,167, 75,115,132,194,207, 42,210,181, 90, 41, + 15, 0, 44, 86,171,157, 0, 24, 31,212,164,201,189,185,115,231,114,220,220,220,224,234,234, 10,137, 68,130,167, 79,159,194, 96, + 48,192, 65,228, 96,211, 32,173, 28, 14,135, 35,145, 72,112,233,210, 37, 76,158, 60, 25, 45, 91,182,132,179,179, 51, 28, 29, 29, + 81,183,110, 93,116,237,218, 21,227,198,141, 67,124,124, 60,136, 13, 73, 37,143,121,188, 79,198,141, 27,231, 25, 30, 30, 94,234, +231, 58,157, 14, 50,153, 12, 57, 57, 57,168, 82,165, 10, 6, 14, 28,232,249,152,199,251,164, 44, 61, 55,192,187, 74,112,240,177, + 59,119,238,184,139,197, 98,236,220,185, 19, 71,143, 30,197,153, 51,103,112,234,212, 41,156, 56,113, 2,191,254,250, 43,114,114, +114, 0, 0,193,193,193,216,191,127,191,187,196,211,243,132, 27,224,205, 30, 64,108,227,101, 86,214,185,186,153,153,238, 35,134, + 15,191,174, 82,169, 48, 98,196, 8, 44, 94,178,100, 22,223,198,209,232, 67, 0,169,171,143,207,182,239,191,255,158,147,153,153, +137,126,253,250,229, 46, 95,178,228,195,168,179,103,107, 68,158, 57, 83, 99,241,130, 5, 31,182,107,215, 46, 55, 53, 53, 21, 59, +118,236,224,120, 5, 4,108, 11, 1,164,149, 45,167, 18,152,188,106,213, 42,123,157, 78,135, 46, 93,186,196, 91, 99, 98, 66,204, +192, 30, 21,240,244, 10, 96,172,232,251, 25,192, 39,211,167, 79,247, 22, 10,133,248,226,139, 47,114, 53, 47, 95,214, 51, 3,191, +200,129, 36, 57,144,100, 6,126, 81, 38, 36,212,123,255,253,247,115,133, 66, 33, 86,174, 92,233,157,241,159, 73,183,109,141, 96, + 53, 38,132, 28, 35,132, 92, 5,144,254,193,248,201, 31,132, 55,109,129, 29,155,215,225,187, 5, 95,109, 3, 48,136, 16,178, 11, +192, 52, 86,243, 24,140,127, 39,182,120,145,255,213,230,195, 50, 91,202, 94,197,189, 78,158,164, 0,218,151, 39,228,226,230,214, +184, 94,189,122,184,118,237, 26,194,194,194,238, 56, 59, 59,155, 5, 66, 33,248,124, 62,168,181,226, 57,162, 69, 98,113,167,206, +157, 59,243,110,221,186,133,160,160, 32,136, 68, 34,240,249,252, 63, 44, 2,129, 0, 62, 62, 62, 80, 40, 20,232,212,169, 19,127, +205,154, 53,157,160,215,127, 91,225, 13, 49,238,145, 36,231,214,247,195,127,222,190,173,122,219,182,109, 33,151, 43, 96,181, 90, +225,224,224, 0,131,193, 0, 30,143, 87,216, 4,100,162, 10, 91,118,154,197, 98,177,112,185, 92, 4, 5, 5, 97,241,226,197,208, +233,116, 16, 8, 4, 0, 0,133, 66, 1,153, 76,134, 71,143, 30, 33, 41, 41,201,166,249, 20, 29,165,210, 30,131, 7, 15,182, 43, +237, 51,189, 94, 15,185, 92, 14,185, 92, 14,153, 76, 6,157, 78,135, 22, 45, 90,216,157, 60,113,162, 7,242,242, 74,157, 88, 90, +111,111, 63, 96,199,142, 29,158,118,118,118,208,106,181, 80, 42,149, 72, 73, 73,193,203,151, 47,117,217,217,217,102, 71, 71, 71, + 78, 96, 96, 32, 71, 40, 20, 10,251,246,237, 75, 20, 10, 5, 8, 33,232,217,179,167,219,238,157, 59, 7, 3, 88,193, 78,105,219, + 56, 7,232, 27, 25, 12,189,154, 53,109,122,233,206,221,187,225,159,125,246, 25,162,163,163,191,119,216,183,239,170, 6,120, 80, +222,119,227,129, 79,126, 40, 97, 96,232,203,151, 97, 70, 32,167,196, 42, 73,129, 9, 9,103,222,127,255,253,135,209,209,209,238, + 43, 87,174,244, 30,212,175,223, 39, 0, 22, 85,166,140,142, 82,105, 19, 31, 31, 31,156, 62,125, 26,201,137,137, 95,153, 1,109, +101,190,207,225,114, 91,183,109,219, 22,191,254,250, 43, 82, 95,190,252,202,252,199, 50, 22, 62, 40, 1, 57,188,248,248,175,182, +109,219,182,117,204,152, 49,224,242,120,173, 97, 54, 87,230,103,254,148,248, 62,102,194,103,216,182,105,205, 54, 0, 99, 41,165, + 86,188,163, 41,173, 24, 12,198,223,180, 13,206, 6, 47,242,119, 49, 91,197, 77,137,149,138,104,121,122,122,250, 73, 36, 18,164, +167,167,163,118,104,104,182, 80, 40,132, 29,159, 15,123, 59, 59,155, 10,161,209,104,194,124,125,125, 33,151,203,225,238,238, 14, +129, 64,240,106,177,179,179,123,245,191,163,163, 35, 56, 28, 14, 2, 2, 2,160,209,104,194, 42,212,205,122,228,185,111,205,196, +143,111, 94, 61, 93,189, 95,191,254,112,113,113,133,191,127, 21,120,122,122, 66, 36, 18,193,223,223, 31, 53,106,212,160,203,151, + 47,135,131,103,125,155, 46,228, 37,205, 19,143,199,131,197, 98, 65, 86, 86, 22,158, 61,123,134,232,232,104,220,188,121, 19,247, +239,223,135, 82,169,132, 45,243, 86,107,180,218, 6, 60, 30,175, 84,147, 37,147,201, 32,147,201, 94, 25,173,156,156, 28, 36, 37, + 37, 65,165, 86, 55, 44,199,244,246,175, 87,175, 30, 23, 0, 68, 34, 17, 26, 54,108,136,141, 27, 55,154,143, 31, 61, 58,164,206, +205,155,174,254,103,207, 58,255,188, 97,195,144,129, 3, 7, 90,110,221,186, 5,133, 66,129, 39, 79,158,192,195,195,131,103,103, +111,207,230,202,171, 36,145,128,218, 93,169,236,222,178,101,203, 4,185, 92,142,101,203,150,113,248,142,142,155, 22, 0,220,114, +191,200,229,182,106,219,182, 45,142, 29, 59,134,244,151, 47,103,188, 44,197,192,188, 4,114,146,227,227,103,108,219,182, 13, 93, +187,118, 5,225,241, 42,157,168,212,188,121,243,122, 86,171, 21, 15, 31, 62,132, 51,112,187,178,223,175, 81,179,102,120,113,228, + 87, 12, 92, 47,107, 61, 49,112, 61, 42, 42, 10, 34,145, 8,181,235,212,105, 84,201,159, 89, 78, 8,201, 24, 51,225, 51, 28, 62, +243, 27, 0, 96,219,166, 53, 89, 37, 76, 22,131,193, 96, 17,173,191,101, 68,171,216, 88,149, 92, 94, 61,200, 86, 82, 4, 0,192, +231,243, 97, 39, 20,194,206,206,174,208, 32, 9,133,149,113,124,176,183,183,127,101,172, 74, 26,172,146,255, 59, 56, 56,216,100, + 96, 0,160,224,249,153, 54, 99, 63, 28, 99, 39, 20, 10, 97, 48,232, 65, 41,133, 80,104, 15,103,103,103, 4, 5, 5, 65,161, 80, +160,101,171,118,250, 20,153,224,132, 91,237,190,209,111,178, 3,205,102, 51,212,106, 53, 10, 10, 10,144,159,159, 15,133, 66, 1, +173, 86,107,115, 87,116,171,213,202, 77, 73, 73,193,158, 61,123,144,151,151, 7,160, 48,209,186,216, 92, 21,255, 77, 72, 72,192, +206,157, 59,145,152,152, 88,169,227,211,166, 77, 27,156, 56,113,130,219,190, 83,167,205,231, 3, 3,211,207, 7, 6,166,183,239, +212,105,243,177, 99,199,184,126,126,126, 72, 74, 74,194,189,123,247, 80, 80, 80, 0, 74, 41,235, 63,255, 6,188, 0, 10, 52,249, +249, 99,102,205,154, 69, 37, 18, 9,150,253,240, 67,131, 69,192, 48, 91, 13,140,180, 28, 3, 35,125, 59, 3, 3, 74, 41,172, 86, + 43, 44, 22,203, 27,109, 27, 33,132,240,249,252,202, 14,173, 64, 42,161,255, 42,241,125,250,215,139,113,234,215,131,197, 31,197, + 49,147,197, 96, 48,254,238,148, 55,215, 33,175,132,131,124,245,183, 44,178,178,178,210,212,106,117,245,192,192, 64,164,166,166, +122, 6, 4, 4,188,180,227,243, 33,176,179, 3,225, 84,236, 9, 28, 28, 28, 30,166,167,167,183,242,243,243,131,217,108,126,101, +170, 94,111, 58, 44,142,210,220,191,127, 31, 14, 14, 14, 15,161, 43,119,228, 4, 88, 12, 5, 85, 27, 53,106,244, 42, 50,228,236, +236, 12,103,103, 41,132, 66,123,204,158, 61,219,186,114,249,242,117, 1, 29, 23,200, 71, 79,153, 69,103, 45,218,252, 78,119,174, +173, 55, 38, 7, 7,135,135,254,254,254, 45,164, 82, 41, 14, 31, 62,140,164,164, 36, 20, 20, 20, 64,163,209, 64,175,215, 67,163, +209,192, 96, 48,192,222,222, 30,117,234,212,129,147,147, 19, 46, 92,184,240, 16,122,125,233,230, 50, 47,239,240,195,135, 15, 91, + 52,109,218,244, 85, 68,165, 67,135, 14,164, 67,135, 14,238,175,162,104, 26, 13,114,115,115,113,231,206, 29, 92,184,112, 1,132, + 16,196,197,197, 89,244, 90,237, 94,118, 90,188, 25, 58,224,119,238,182,109, 91, 63,250,232,163, 15, 91,181,106, 5, 11,240, 30, +128,157,255, 45, 3, 83,204,205,155, 55, 31, 89, 44,150, 86,181,106,213,130, 12,104, 6,224,215, 74,153,200,231,207,163,204,102, +115,167, 6, 13, 26,224,240,129, 3,109, 0, 36,149,182,158, 26,104, 19, 30, 30, 14,173, 86,139, 39,143, 31, 71, 86,194,100,109, +158, 57,239,251, 15,222, 31,251, 9,118,108, 94,135,109,155,214,164,108,221,184,218, 31, 54,228,143, 49, 24,140,127, 85, 52,171, + 66, 47,242,191, 72,105, 57, 90,197,230,139, 87, 25, 33,121, 65, 65,100, 84, 84, 84,245, 70,141, 26, 97,243,230,205, 77, 91,182, +104,145, 38,176,179, 51,219, 9, 4,224,216,112, 35,209,170,213, 23, 47, 94,188,216,172,111,223,190,188, 91,183,110,193,219,219, +251,149,209, 42,254,203,227,241, 64, 41,133,131,131, 3,142, 28, 57, 98,212,170,213, 23, 43,140, 22, 89,172, 22, 78,145,209,163, +148, 66, 38,147, 65, 32, 16, 96,197,138,149, 88,187,124,249,112, 11,112, 48, 88,236,241, 37, 0,251,255,218, 13, 90,163,185,116, +234,212,169,198,115,231,206,229, 87,169, 82, 5, 50,153, 12, 5, 5, 5,200,203,203,131, 66,161,128, 66,161, 64, 65, 65, 1,100, + 50, 25,236,237,237, 17, 29, 29,109,210,105, 52,151,202,210, 19,234,116,135, 70,141, 26, 53, 61, 42, 42,202,135,199,227,193,100, + 50,193,106,181,194,106,181,194,104, 52,226,249,243,231,136,137,137,193,211,167, 79,145,159,159, 15, 62,159, 15, 46,151,139,251, +247,239, 23,136, 77,166, 3,236,148,126,115,248,192,225, 27, 55,110,124, 56,114,228, 72,248, 86,169,210, 14,169,169, 54, 25,152, +163,229, 24, 24,249, 27, 24,152, 63, 24, 32,165,242,110, 66, 66, 66,171,246,237,219,195,167, 74,149,239,235,164,166,158,127, 92, +137, 60, 45,139,217,124,253,198,141, 27,157,222,127,255,125,108,222,188,249,123,143,132,132, 51, 57,175, 53,115,122, 0, 30,213, +106,212,248,254,131, 15, 62,192,185,115,231, 96, 49,155,175,151,115,209, 41, 57,226,123,213, 15,198, 79,246,127, 45,241,125, 35, + 33,100, 18,128,101,172, 70, 49, 24,140,127,114, 68,171, 82, 77,135, 34,139,101,230,180,105,211, 76, 28, 14, 7,253,251,247,119, +252,245,216,177,129,247, 31, 60, 8,202,206,206,118,182, 88, 44, 21,106,121,232,245,171,167, 77,155, 38, 51, 24, 12, 8, 9, 9, + 65,126,126, 62, 44, 22, 11,120, 60, 30,120, 60, 30, 8, 33,224,112, 56,144, 72, 36,136,138,138,194,214,173, 91, 21, 30,122,253, +234, 10,111, 18, 22,203,195,157, 59,119,130,203,229, 82,123,123,123, 16, 66,192,227,241,176,114,229,202,236,181,192, 97, 0,224, +114, 56, 6, 0,224,112,136,173,217,187, 21,182, 91,218,217,217,193, 90,216, 9,160,194,117, 93,244,250, 85, 75,151, 46, 85, 62, +121,242, 4,106,181,250, 85,244, 77,165, 82,189, 74,174,151,201,100, 32,132, 64,173, 86,227,216,177, 99, 74, 23,189,126, 85, 89, +122,121, 64,102,106, 92, 92,239,166, 77,155,230, 37, 36, 36, 64, 46,151,227,225,195,135,184,112,225, 2,246,239,223,143,115,231, +206,225,249,243,231, 48,155,205,240,243,243, 3,165, 20, 71,143, 30,149,155,149,202,247,242,128, 76,118, 90,148, 77, 85,111,239, + 78, 94,158,158,201, 30,238,238,169, 85,189,189, 59,189,254,185, 20,136,141,141,141,133,217,108, 70, 80, 80,144,107,121,121, 90, +212,108,190,113,227,198, 13,188,255,254,251,240,175, 94,125, 73, 32,224,241,250, 58,129,128, 71, 96,141, 26, 75,138, 13, 12, 53, +155,111, 84,182,204,142,192,154, 47,191,252, 82, 43, 16, 8,176,111,223,190, 32, 83,205,154, 79,121,192, 48, 9, 16,218, 30, 16, + 84,244,125, 31, 96,221,215, 95,127,157, 73, 8,193,174, 93,187,220,165, 53,106, 60,226, 1,163,164, 64, 85, 41, 80,149, 7,140, +146,214,168,241,104,223,190,125,238,102,179, 25, 83,166, 76,201,244, 1,214,149, 35, 57,153, 82,218,139, 82,218,150, 82,234,191, +117,227,106,156,250,245, 96,177,201, 26, 75, 41,189, 67, 41, 29, 73, 41,125,196,106, 28,131,193,248, 39, 67, 74,203,131,226, 55, + 91,148, 5, 80,207,118,205,235,227,238,131,103,114,119, 23,167,179,197,159,229,199, 28,172,213, 49,204,169,254, 79, 63,253, 4, + 62,159,143,148,148, 20, 60,126,252, 24, 78, 78, 78, 24, 62,124,184, 94,171, 84,246, 46,158,235,144, 16,210,153, 82,122,161, 72, +179,112, 62, 53,121,156,164, 6, 47,186,250,153, 83, 39,184, 82,169, 20, 42,149, 10, 28, 14, 7,246,246,246,112,112,112,128, 72, + 36,194,189,123,247, 16,209,171,143, 37,199,161,237,171, 1, 75,139,231, 83, 43,169, 9, 66,184, 0,208, 12,112,136, 2,190,240, +244,245,157, 54,103,206, 28, 81,183,110,221, 32, 16, 8, 80,165,106,112,102, 80,247,101,107, 56, 28, 98, 78,205, 83,204,174, 81, +213, 87,250, 56, 46, 9, 0, 41,156, 19,177,104,174,195,210,202, 25, 96,184, 26,116,228,151,229, 78, 13, 27, 22,230,163,203,100, + 50,100,101,101, 33, 59, 59, 27, 50,153, 12,106,181, 26, 0,112,226,196, 9,156,186,246, 84,161,173, 50, 48,190,172,114,254,103, +219,159, 57,250, 26,111, 87,219,189,243, 23,174,135,135, 7,178,178,178,144,147,147, 3,153, 76, 6,173, 86, 11,139,197,130,252, +252,124,108,217,246,139, 37, 79,210, 54,177,120, 64,200,114, 53,213, 41, 34, 87,213,111,126,225,117, 2,233,135, 31,126,232,232, +228,228, 4,171,213,138,130,130, 2, 36, 39, 39, 35, 33, 33, 1,215,174, 93, 83,103,203, 12, 80,187,119, 73, 45, 30,176,180,212, +253,249,238, 66,168,127, 63,205,162,186, 4, 0,190, 62, 62,233, 47, 95,190,244,180, 88, 44,240,243,243, 51,203,242,243,151,216, + 1,231, 28,129, 12, 0, 52, 23,152,179,106,205,154, 49,125,250,244, 65,147, 38, 77, 82, 50,179,178,170,149, 86,151, 64, 8, 55, + 4,144,106,170, 84,137,185,115,231,142,119,114,114, 50,222,127,255,253,220,151, 47, 94,204,144, 22,229,107,201,129, 54,129, 53, +106, 44,217,183,111,159,123,245,234,213, 17, 22, 22,150,105,159,156, 92,247, 25, 32, 47,163,126,150,121,110,202, 98, 79, 86,155, +216,175, 94,147,143, 63,254, 24,102,179, 25,215,174, 93,195,237,219,183,241,242,229, 75,252,246,219,111, 50, 39,177,120, 72,241, + 92,135,101,213,207,247,130,213, 65,187,118,237, 36, 2,129, 0,219,182,109, 67, 84, 84, 20, 0, 32, 60, 60, 28, 31,124,240, 1, +204,102, 51, 70,140, 24, 73, 79, 62, 19,197,151, 87, 63, 9, 33,245, 0,252,128, 66,147,215,132, 82,106, 79, 8, 73, 7,224, 95, +153,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,112,174,195,133,235, 33,253,227, 52, 31,227,210, 15,110, 92,192,107,221, +166,109,232,130,249,243, 56, 77,155, 54,133,191,191, 63,194,195,195,145,156,156, 44,116,118,118,174,104, 62, 53, 85,219,238,195, + 18,234,215,175,239, 60, 99,198, 12,105,215,174, 93,249,254,254,254,160,148, 34, 42, 42, 10,135, 15, 31, 54,110,222,188, 89,161, +241,234, 37,139,188,188, 71,101,203,124,106,183, 1, 13,128,111,170,164,167,111,250,100,226,196,121, 13, 27, 53,250,112,254,252, +249, 28,137,131,136,191,120,246, 88,123, 0, 88,248,227,126,105,159,129,195,177,170, 38,208,110, 88,233,243,200,149, 44,103,114, +234,184,151, 61,250,117,170,249,197,164, 49,150,193,131, 7,139,157,156,156,224,239,239, 15, 23, 23, 23,196,199,199, 35, 53, 53, +149, 30, 63,126, 92,117,243,126, 44,255,232,185,187, 47,237,165, 62,182,204, 75,168,108,219,109, 80, 98,143, 30, 61, 92, 70,141, + 26,229,216,184,113, 99,190, 80, 40,132, 80, 40, 68, 86, 86, 22,158, 63,127,110, 60,126,252,184, 74,227,249, 94, 65,228,229,125, + 74, 27,231, 58,212,182, 29,186,224,249,245,243,243,167,196, 60,124, 56,210, 10, 52, 48, 26,141,126, 22,139,133,112, 56,156, 12, +171,213,250,208,168, 84,110,213,135,207, 95,201,230, 58,180, 13,139,197, 34,176, 88, 44,144,201,100, 56,127,254, 60,239,197,139, + 23,115, 30, 60,120, 48, 39, 61, 61, 29, 38,147, 9, 3, 6, 12, 64,120,120, 56, 46, 95,190,140,156,172,172,227,229,105, 61, 3, +228,194,212,212, 15,198,141, 27,119,122,231,206,157,156, 7, 15, 30,184,111,219,182,109, 75,105, 6,102,228,200,145,214,172,228, +228, 15,244,128,188,156,250, 89,222,185,153,123,102,223,218, 7,125,251, 15,172, 51,127,238, 28,126,203,150, 45,225,238,238,142, + 54,109,218,192,104, 52, 58,215,174, 93,187,162,115, 83,217,182,251,144,248, 6, 13, 26,136, 87,174, 92,233, 61,102,204, 24, 76, +154, 52, 9, 0,160,213,106,113,238,220, 57, 76,153, 50, 37, 51,153,215, 76, 93, 81,253, 44,138, 84, 21, 27,176,171, 0,218, 2, +136,103,137,239, 12, 6,227, 31, 25,181, 34, 36,156, 82, 26, 69, 8,241, 1, 16, 1,224, 36,165, 52,163, 76,163, 5,252,103, 62, +181,235,183, 31,161,228, 52, 31,133,248, 60, 54, 7,140,122, 49, 97,218,146, 48,174, 73,225,194, 39, 58,167,184,216, 88, 82,209, +156,135,175,230, 83,147, 6,171,220, 18,246, 54, 93,188,112,225,103,171, 86,173,234, 84, 60,132,131,131,131,195, 67,173, 90,125, +209, 67,175, 95,173,145, 6, 95,172,236,220,124,169, 64, 22,128,137, 46,145,145,107,122,246, 25,176,212,222, 53,136, 63,107,209, +102, 29,151,195, 49, 60, 79,207,193,170,154,128,216,134, 14,146, 26, 3, 16, 35,243, 49,103,185, 13,124,246,245,151, 95,126,177, +240,155,111,154, 74, 36,146,118, 70,179, 57,216,106,181, 2, 86,107,156, 70,173,190, 74,141,198, 59,250,240,185,203,237,165, 62, +212,230,121, 9,157,107, 43, 93, 19, 15, 54,221,190,117,235,228, 3, 7, 14,252,105,219,221,244,250, 53, 26,231,218, 23,108,217, +246,146,235,232,128,223,145,157,253,123,153,149, 0,108,174, 67,155,159, 62,172,214,241, 46, 46, 46, 59, 58,117,234,100,223,185, +115,103, 68, 68, 68,160,101,203,150,176, 90,173,160,148, 66,169, 84, 98,255,254,253, 88,186,116,105, 92, 53,224,155,138,244,244, +192, 69,225,169, 83,239, 53,104,208, 96, 91,121, 6,166,200,100, 85,152,147, 88,254,185, 41,140, 51, 75,123, 39, 13,253,100,113, + 77,131, 34,195,217,205,193,236, 29,243,232, 33,199,246,115, 51, 68,105,137,218,223,108, 64,191,126,159,112,121,188, 54, 69, 61, + 32,233,147,199,143, 35,139, 39,149, 70,248, 7,231, 43, 89,151,138,199,174, 99,137,239, 12, 6,227,159, 74, 56,128, 40, 0, 17, +148,210, 77, 69,201,241,101, 39,195,243,120,188,236,226,168, 15,143,199,203,142, 63, 58, 97,120,121,234,124,160, 83, 81, 36, 11, + 21,206,117, 88,244,127, 18,160,132, 94,255,237, 31, 6, 35, 45,209,187,144,255,218,250,149,217,218, 2,224, 25,204,250,158,200, +126, 12, 28,155, 88,168,215,116,225, 87, 37,183,169,204,155,236, 31,126, 87,144,175, 3,174, 67,165,186, 14,149,170,212,164, 93, + 62, 79,144, 95, 81, 57, 95,223,246,100, 64,241,182,219,206,171,228,254,225,189,197,254,252,183,145,150,155,123, 20,128,164,202, +137, 19, 94,103, 78,156, 24,252,197,212,169, 3,124,124,125,107,184,187,187,187, 56, 58, 58,114,110,221,186,149, 96,214,233,214, + 52, 4,182, 23, 69, 83, 43, 68, 15, 92, 12, 73, 78,174, 59,168, 95,191, 79, 8,143,215,186,164,129,161,102,243,111, 65,192,186, +242, 34, 89,111,122,110,250, 11,125, 58, 21, 69,178,192,181,241,220, 76, 45, 44,199, 34,152,205,139, 16, 29, 93, 74,157,175,116, + 93, 90, 72, 8, 81,130, 37,190, 51, 24,140,127, 46, 39,139,204,213,201, 63,125,242, 87,206,239, 3,160, 51,211,100,154,255, 20, +205, 66,175, 2, 39,182, 63,153, 38,211,100,154, 76,243,221,107,254, 83, 23, 30, 51,161, 12,134,109,208,194,228,116, 5,219, 19, + 12, 6,131,193, 40, 73,137,220,172,146,247,140, 77, 64, 97,234, 78,231, 50,110, 42, 23, 42,241, 3,157,223,224,166,117,129,105, + 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,142,189, 25, 9, 33,227,139,115,179, 94, 31, 83,139,216, 58,205, +205, 27,254, 48,235,250,202, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 52,229, 69,180, 56,108,247, 48, 24, 12, 6,176, 96, + 1,225, 0,132, 0, 11, 56,192, 65, 46, 48,136, 91,248,250,205, 25, 52,136,148, 58,152,237,228, 17,174,142,108,143, 51, 24,255, + 28, 40,165, 25,101, 77, 42,205,114,180,254,187, 14, 56,192,219,219,123, 35, 0,146,153,153, 57,158, 82,154,204,246,202,255, 30, +110,110,110,157,204,102, 51,228,114,249,197,127,226,246,213,173, 73,250, 81, 14,106,255,231,138,129,228,199,113,116, 71,105,235, +214, 9, 38,239,131,252,103, 44, 46, 98,197,147,152,231,244, 72, 37,234, 60,231,189,206,254,235, 0,224,244,133,148, 79,254,138, +113,181, 8, 33,181, 60, 60, 60,206,242,120, 60,158,197, 98,153,152,149,149,117,162,108, 35, 52,136, 11, 0,124,122,121,166,187, +107,232,140,207, 63, 34,124,141,126,171, 76,175, 85,203,185,124,110,162,144,239,125, 3, 92,191,211, 5,170, 22,143, 75,251,254, +129, 3, 7,202,156,197,187, 94, 48,121, 47,180, 78,157, 94,141,194, 68,241, 63,172,110,186,170, 93,144, 59, 63, 33,229,190,228, +251, 13,242,141, 78,174, 85,123,141, 26,226,118,130,231, 64, 70,110,217,146,171, 98,103,153,237,124, 71,136,171, 17, 8,227, 11, +133,254, 22,179,217,139, 0,148,203,227,101,153,244,250, 20, 1, 16, 61,131, 82,217, 63, 93, 83, 32, 20, 86,177,152,205, 94, 0, +240,191, 88, 78,198, 31, 41,211,104, 57, 58, 58,222,227,112, 56, 85, 74, 78,134, 91, 60,159, 96,241,123, 37, 63, 35,132,192, 98, +177,164,230,231,231, 55,174,196, 5,209, 9,192, 96, 0,197, 93,212,119, 3,216, 79, 41, 85,188,225, 5,214, 73, 32, 16, 76, 19, +139,197, 29,181, 90,109, 93, 0, 16,137, 68, 49,106,181,250,146,209,104,252,225, 77,116, 9, 33, 60, 0,131, 36, 18, 73, 7, 14, +135,211,129, 82, 74, 40,165,151, 85, 42,213, 37, 0, 7, 40,165,230, 55,208, 20,121,122,122, 46, 10, 13, 13, 29, 54,115,230,204, + 60, 55, 55,183,144, 41, 83,166,220,245,240,240,216,147,155,155, 59,155, 82,170,253, 95,168, 28,132,144, 26,222,222,222,187,249, +124, 62, 55, 37, 37,165, 3, 0,248,251,251, 95, 54, 24, 12,150,236,236,236,225,148,210, 23,149,212, 19, 3,104, 46,145, 72, 26, + 75, 36,146,182, 22,139,165,118,209,252,140, 79, 84, 42,213, 53,163,209,120, 15,192, 45, 74,169,250,127,200, 12, 59,122,122,122, +238, 36,132,128, 16, 18, 76, 41, 85,254,227,158,196, 56,168,253, 56,230,105,200, 43, 51, 85, 55,180,156, 29,130,128, 82,214,181, +217,104,117,108,231,211,171,119,239, 46, 28, 0, 48,152, 78,247, 66, 37, 39,191,182,197,100,245,239,223,255,247,157, 59,119,186, +232,245,122,140, 31, 63,126,183, 84, 42, 93, 39,151,203,103,150,247, 61, 39,137,203,148,101, 43,207, 57, 20,206,127, 13, 79,171, +213,226,153,150,246, 34,248,241,163,223,187,199,196,220, 92,172,125,122,233,150,149,240, 39, 24,209,230,169, 45,229,168, 83,131, +244,236, 51,168, 95,196, 55,223,204,199,176, 33,195,170,198,196,232, 68,126, 78,241,118,249, 90,113, 77, 55, 15,207,222,223, 44, + 60, 72,110, 92, 63,218,123,231,182, 5,151, 62,252,208,189, 35, 51, 91, 54, 29, 91,178,144,199,107,238, 18, 26,218,118,200,209, +163,144,248,251,243,120, 66, 33, 7, 0,204,122,189,191, 42, 37,197,103, 95,239,222,205, 22, 16,114,101, 30,165,183,153,230,255, +191, 38,163,146, 70,139,195,225, 84, 73, 75, 75,243, 20,139,197,197, 97, 49, 88, 44, 22, 88, 44,150, 87,147, 23, 83, 74, 95,253, + 53,155,205, 8, 13, 13,181,233,137, 22, 64, 71, 0,163,219,183,111, 63,240,135, 31,126,224,135,133,133, 21, 79, 25,210,102,214, +172, 89, 63, 18, 66, 14, 1,216, 14,224,162,173, 79,188,132,144,110, 98,177,120,215,178,101,203,156,186,116,233,194,243,245,245, + 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 19, 9, 33, 35, 40,165,103, 43,113, 98,215,115,116,116, 60,216,175, + 95,191, 42,237,218,181,179,175, 83,167, 14, 44, 22, 11,238,223,191, 63,230,222,189,123, 67, 15, 29, 58, 52,143, 16, 50,208,214, +249,218, 8, 33, 68, 34,145,140,242,243,243, 91, 52,119,238, 92,215, 17, 35, 70,216, 61,122,244,168, 32, 40, 40,136,220,184,113, +195, 99,255,254,253, 19,151, 44, 89, 50,200,209,209,113,182, 74,165,250,133,218,144, 64,231,228,228,116,143,195,225, 84,177,197, + 8, 3,176,217, 12, 19, 66, 26, 86,171, 86,109,255,245,235,215,171, 37, 37, 37, 89,250,246,237,187, 3, 0, 46, 93,186, 20,102, + 50,153, 72,215,174, 93, 79, 19, 66, 6, 83, 74,239,219,184,237,245, 93, 93, 93,127, 29, 54,108,152,107,141, 26, 53, 28,170, 85, +171, 70,196, 98, 49,184, 92, 46,228,114,185,239,163, 71,143, 58,223,190,125, 91,123,225,194,133,124, 66, 72,111, 74,105,116, 37, +142, 83, 75, 79, 79,207,145,124, 62,191,158,217,108,246, 3, 0, 30,143,151,102, 50,153, 30,101,103,103,239,164,148,254,254,166, + 39,136,151,151,215,218, 69,139, 22,185,103,103,103,211, 37, 75,150,172, 5, 48,234,159,122, 49,216,189,231, 0,238,221,189, 13, + 0, 2, 66, 8,121,189,254, 17, 66, 72,237, 96, 8, 62,255,124, 42, 26, 55,105,134,225,195, 6, 85,168, 25,209,217,127, 25,223, + 78,224,166,211,233,126,151,107,244, 7,188,220,156, 7, 15, 27,218, 51, 14, 0, 78,159,185, 50,184, 89, 51,215,203, 82, 7,225, + 32,123,123,251,150, 38,131, 49,239,228,133,148, 47, 43, 99,170,252,252,252,206,186,184,184, 56,228,231,231,103,230,228,228,172, +239,223,191,255,194,237,219,183,187, 36, 36, 36, 32, 37, 37, 5,159,125,246,153, 36, 53, 53,245, 19,161, 80,120, 83,175,215,151, + 25,217, 82, 42,243, 87,207,154,209,103,174, 84,234,206, 21, 59, 56,193, 81,234,138,160, 26, 13,208,188,101, 47,188, 23,241, 33, +158,199, 69, 53,223,190,237,155,168,180,180, 11,223, 73, 92,171, 47,148,201,170,149,121, 93,170, 27, 66,218, 21,155,172,185,115, +231, 35,246,233, 83,101, 82, 34,231,211,147, 71,121, 14,239,117, 10, 21,154, 13,153, 73, 55,174, 31,173,214,186, 77, 95, 0,104, +188,115,219,130, 75,147, 71,184,118, 90,179, 43, 95,201,110, 73,101, 95, 59,191,225,243, 71,117, 91,185,210, 51,124,226, 68,129, + 42, 49,209, 24,191, 97,131, 38,235,218, 53, 11, 79, 40,164,254,221,187, 19,143, 14, 29,236, 39, 62,121, 34,248,109,201,146,182, +139,237,236,130,102, 25, 12,187,152,230,255,159, 38,171,163,175,146,225, 95,229,106, 21, 55, 31,242,202,249, 18,196, 98, 49,246, +237,219, 7, 62,159, 15, 30,143, 7, 62,159, 95,230,255, 1, 1, 1,182, 20,164,191,183,183,247,143,235,214,173,243,234,214,173, + 27,236,237,237, 95,125,198,229,114,209,165, 75, 23,116,238,220,153,159,158,158, 62,116,223,190,125, 67, 23, 47, 94,156, 69, 8, +153, 68, 41, 61, 92,129,110,135,144,144,144,195,231,206,157, 19,233,116, 58, 92,187,118, 13, 5, 5, 5,176,179,179, 67,149, 42, + 85,208,181,107, 87,222,211,167, 79, 93,187,116,233,114,152, 16,210,147, 82,122,217,134,178, 54,246,244,244,188,122,224,192, 1, +251, 6, 13, 26,144,231,207,159, 35, 60, 60, 28, 0, 32,151,203,209,183,111, 95,251, 17, 35, 70,212, 24, 58,116,232, 45, 66, 72, + 59, 74,233,189, 10,244, 26,121,123,123,255,210,175, 95, 63,223,197,139, 23, 59, 57, 58, 58, 34, 41, 41, 41,195,219,219, 59,184, +120,127, 15, 29, 58,212,174, 87,175, 94, 62, 75,151, 46, 93,125,240,224,193, 47, 9, 33,163, 40,165,145,229,233, 22, 27, 98, 7, + 7, 7,100,101,101, 97,247,238,221,248,228,147, 79,192,229,114,145,157,157,141,253,251,247,227,211, 79, 63, 45, 54, 52, 54,153, + 97,177, 88,220,185, 65,131, 6, 91, 46, 93,186, 84,197,217,217, 25,190,190,190,156,175,191,254,186, 94, 80, 80,144,168,106,213, +170,220,140,140, 12, 28, 62,124, 56,104,228,200,145,191,218,219,219,143,209,233,116, 21, 54,169,121,121,121,109, 61,121,242,100, + 64, 76, 76, 12, 54,108,216,128,252,252,124,216,217,217,193,217,217, 25,222,222,222, 8, 14, 14, 38, 51,102,204,112,232,213,171, +151,195,164, 73,147,182, 2,104,104,195, 49,106,224,233,233,185,113,232,208,161, 65, 11, 22, 44,112,246,246,246, 70,241,131,129, + 92, 46,175,146,148,148,212,124,238,220,185, 3,189,188,188, 18,178,179,179, 39, 80, 74, 31, 84,242,196,105,216,169, 83,167,158, +125,251,246,229,102,100,100, 96,231,206,157, 61, 9, 33, 13,109, 53,151,127, 55,238,221,189,141,241, 31,127,166,242,245,247, 23, +156, 59,187,165,191, 76, 86,231,174,179,168,112, 66,106,153, 22,198,142,237,184, 77,186,118,251, 80,208, 35,162,175,106,211, 79, +171, 37,182, 24, 45,190,157,192,109,247,174, 21,201,215,111,220,171,119,254,194,237,238,253,123,247,166, 2,129,115, 16, 0,124, + 57,229,115,254,225, 99,199,182,117,233,220, 44,189, 77,235,198,201,195, 71, 76, 13,168,196,177,169, 85,171, 86,173, 43, 81, 81, + 81, 94, 66,161, 16,249,249,249,110,155, 54,109, 90,209,186,117,107, 78,124,124, 60,158, 62,125,138,196,196, 68,200,229,114,116, +233,210, 69, 18, 25, 25,185, 30, 64,153, 70,203,200,233,184,200,183,170,105,141,155, 72, 92,205,104, 81,120, 82, 83, 70,157,243, + 39,207,215,223,187, 83, 27,238,229, 19, 26, 60,250,131,121,248,102,225, 33,254,158,221,223,207,189,120, 97, 47,192,169, 86,246, +140, 0, 20, 45,103,205,158, 9,133, 82,143, 17,195,198, 97,228,176,113,110, 20, 6, 31,106,209,137, 13,218, 2,103, 71,193,147, + 19,235, 54,175,232, 7,160, 74, 9,179,117,145,153,173,178,249,134,199,107,214,243,199, 31, 61,234,141, 29, 43,124,176, 96,129, + 58,247,218, 53,109,205, 30, 61, 10,194, 63,250, 72, 15, 0,202,196, 68, 65,236,188,121, 14, 30,109,219,138, 90, 76,155,230, 98, + 49, 24,188,191, 37,164,233,215,148,222,169,172,102,192,224,193,150,185,219,182, 53,185, 54,117,106,123, 98, 50,113,187,183,104, +113,127,201,206,157,105,111,163,249, 46,203,153,126,245,170, 62, 63, 40, 8,225,125,251,230, 5,120,122,234,223,229,182,191, 77, + 57, 25, 40, 14, 74,101, 0, 40, 30, 25,190,240,122, 69, 41,197,201,147, 39,219, 1,184, 2, 96, 65, 68, 68,196,124, 0,112,118, +118,206,146,201,100,158,135, 15, 31,174,208,100,241,249,124,248,248,248, 32, 56, 56, 56, 59, 43, 43,203,171,156,139, 99,138,213, +106,173, 66, 41,125, 21,125, 41, 11,189, 94,143,184,184, 56,212,175, 95, 63,149, 82,234, 95, 94,211,142,131,131, 67,252,211,167, + 79,221, 31, 63,126,140,123,247,238, 33, 40, 40, 8, 46, 46, 46,224,243,249, 48,153, 76, 80, 40, 20, 8, 9, 9,129, 80, 40, 68, +163, 70,141,114,213,106,117, 80,121, 77, 64,132, 16,161, 88, 44,142,187,122,245,170,127,120,120, 56,238,220,185, 3,127,127,127, +120,123,123, 3, 0, 18, 19, 19,113,227,198, 13,244,232,209, 3, 81, 81, 81, 24, 48, 96, 64,138, 90,173, 14,166,148,234,203,210, +116,115,115,203,184,116,233, 82,106, 88, 88,152, 78,173, 86,115,178,178,178,248,215,174, 93, 51, 43,149, 74,137, 92, 46,231,203, +100, 50,190, 66,161,224,169,213,106, 62,135,195, 17,104,181, 90,254,197,139, 23,185, 6,131,193,169,188,253, 84,124,156,142, 29, + 59,134,176,176, 48, 28, 62,124, 24, 95,124,241, 5,126,251,237, 55,248,251,251,227,192,129, 3,152, 54,109, 26,158, 61,123, 6, +119,119,119,212,169, 83,167,220, 99, 4, 0, 53,107,214,124,254,240,225,195, 26, 2,129,160,120, 94,199,226,249,242,144,147,147, +131, 23, 47, 94, 32, 45, 45, 13, 53,107,214,196,176, 97,195, 94,164,166,166,214,172,168,242, 85,169, 82, 37, 39, 38, 38,198,189, +126,253,250,200,202,202,130,179,179, 51,164, 82, 41,156,157,157, 95,253, 31, 20, 20,132,169, 83,167,194,219,219, 59, 91,171,213, +122, 85,100,130,194,194,194,206, 94,188,120,209,221,201,201, 9,153,153,153, 80, 40, 20,224,241,120,112,112,112,128,187,187,251, + 43, 35, 31, 23, 23,135,136,136,136,220,248,248,248,110,149,136,192,113,188,188,188,158, 70, 71, 71, 7, 83, 74,145,156,156,140, +103,207,158,225,227,143, 63,142,211,233,116,161,255,164, 57,251, 74,228, 93, 9, 70,125, 48, 94,208,175, 79, 75,195,147,152, 19, + 68,104,125,134,134,245,156,228, 0,112,255,145, 66,170,231,132,160,118,221,158,244,200,175,191,219,253,178,125, 19, 31, 86,120, +129,224,217,227, 88,250,109, 89,218,221, 58,250,142,253,252,243, 49,245,218,183,110,199, 81,170,213,158,235,215,175,108, 20, 31, +255,196, 19, 0,130,130,106,103, 79,156, 56, 37,210, 81, 44,206,190,114,227,170,117,213,170,173,143,206, 94, 74,223,108,195,177, + 9, 10, 14, 14,190,121,236,216, 49,119, 79, 79, 79, 72,165, 82,168,213,106, 24,141, 70, 60,126,252, 88,183,111,223, 62,147,147, +147,147, 99,102,102, 38,100, 50, 25, 8, 33, 56,118,236, 88, 50,165, 52,240,117,173,226, 28, 45, 0,248,248,189,218,252, 58, 29, +131, 93, 4, 66,179, 72,196,143,245, 1,177, 8, 9,149,120,157, 62,123,191,254,233,243,119,134,247,235,255,133, 71,155,118,253, + 48,119,206, 64, 83,122,122,114,184, 17,109,158,150,150,163, 85, 59,152,116,236, 59,160,223,160,111,190,153,143,249,115, 23,224, +196,177,163,114,137,152,163,119,114,230, 75,219, 54,111,165,155,250, 73,159, 20,149, 42,221,255,155,165,251,134, 69,244,153, 90, +165,117,155,190,184,113,253, 40,118,110, 91,112,143,136, 40,107, 70,124,141, 5,132,184, 56, 7, 5, 77,152, 28, 23, 39,120, 48, +127,190,202,156,158, 94,208,120,202,148,220,210,214, 77, 61,127, 94,108,231,235,235,228,210,187,183,235,234,192, 64,106,202,206, +222, 88, 90,142, 81,105,154, 23, 36, 18,231,189,167, 79,119,162,124,126,187,233, 95,125, 37,234,217,179, 39, 20, 10, 5, 14, 29, + 58,132,141, 27, 54,232,125,124,124, 30,250, 62,122, 20, 85, 79,161,152, 99,171,102,227, 41, 83,114, 45, 22, 11, 25, 52,109, 90, +151,152,196,196,142,153,217,217, 85, 1,192,199,213, 53,165,113, 80,208,189,173, 39, 78, 60, 91, 91,173,154,213,214,114,254,124, +230,140,215,193,164,164,177,174,174,174,162,172,236,108,158,208,206, 46,175,121,157, 58, 7,126,154, 61,251,138, 57, 58, 90, 96, + 95,165,138,147,180,103,207, 74,111,123,227, 41, 83,114,243,149, 74,222,228,133, 11, 91,189,204,202,170,170,210,235,107,202,148, + 74,111,139,201,196,113,114,112,200,171, 30, 18,146,173,189,118, 45,163,186, 70,243,217,207,148,102,255, 85,199,186, 52, 47,242, + 55,138,104,189,222,235,240, 79,115, 29, 94,137,136,136, 32,165, 56, 51,155,162, 89,124, 62,255, 15,205, 84,229, 32, 32,132, 32, + 50, 50, 18,110,110,110,240,246,246,134, 80,248,199,201, 7,115,114,114,240,219,111,191,225,201,147, 39,104,208,160, 1,128,194, + 39,234,178, 16, 10,133,159, 47, 93,186,212,217, 96, 48,224,222,189,123,104,220,184, 49,132, 66, 33, 4, 2,193, 31, 76, 96,118, +118, 54,234,214,173,139,233,211,167, 75, 23, 47, 94,252, 57,202,153,163,142,199,227, 77, 26, 55,110,156,103,113, 4, 43, 37, 37, + 5,141, 26, 53,122,245,185,135,135, 7,238,223,191,143,198,141, 27,163, 74,149, 42, 24, 56,112,160,231,206,157, 59, 39, 1,248, +161, 44, 77, 59, 59, 59, 78, 88, 88, 88,147,162,136, 17, 56, 28, 78,172,147,147,147,135,151,151,151,216,201,201,233, 79,219,184, +109,219, 54, 25,135,195, 49, 85,180, 67, 57, 28, 14, 50, 51, 51, 81,175, 94, 61,200,229,114, 0,128, 90,173, 70,205,154, 53,161, + 80, 40, 94,153, 86, 95, 95, 95,104,181,229,167,126, 53,104,208, 96,126,104,104,104,215,246,237,219, 11,249,124, 62, 30, 60,120, +128,240,240,112,236,219,183, 15, 1, 1, 1,112,112,112, 64, 92, 92, 28,194,194,194,112,245,234, 85,120,120,120,160,110,221,186, +194, 70,141, 26, 93,207,207,207,191,156,148,148, 52,191,156,114,114, 36, 18, 9,174, 94,189,138,173, 91,183, 34, 49, 49, 17,233, +233,233,112,116,116, 68,195,134, 13, 81,167, 78, 29,180,108,217, 18,113,113,113, 32, 21, 84, 38, 66,136,119,112,112,240,137, 59, +119,238,184, 83, 74,177,115,231, 78,168, 84, 42, 24, 12, 6,112, 56, 28,216,219,219,195,197,197, 5, 29, 59,118,132,135,135, 7, +130,131,131,177,127,255,126,247,247,222,123,239, 84, 81, 68, 42,179,162,253,234,226,226,242,217,188,121,243,252, 61, 61, 61,145, +148,148, 4,185, 92, 14, 47, 47, 47,180,111,223,222,239,194,133, 11,159, 1, 88,249, 79,185,145, 21, 39,190, 19, 66,200,185,179, + 91,250, 7, 87, 47, 8,107, 16,226,224,127,248,132,151,255,190, 19,217,117, 1,160, 94,109,175,152,254, 61, 29, 82, 30,196,156, + 72, 57,119,246,232,189, 39,177, 56,108, 75,211,182, 92,163, 63,112,254,194,237,238,225, 13, 26, 89,151,126, 63, 45,226,147,143, +199, 10, 61,189, 62, 68, 86,242, 81, 92,184, 20, 25, 48,237,139,113, 30, 63, 44,255,249,244,249, 11,183, 57,114,141,126,142, 45, +229,173, 85, 43, 96,237,246,159, 90,186, 43,115, 15,226,249, 83, 59,136, 28,235, 33, 40,168, 22, 20, 10, 5,236,237,237,237,135, + 13, 27,102,153, 57,115,166,198,201,201,201,129, 16,130,203,151, 47,103, 3,232, 86,145,174,206,211,133, 90,140, 38, 51,181,227, + 90, 41,113,212, 18, 75,190,221,163,199, 9,232,218,185, 67, 86,235,102,245, 22,207,252,102,249,172,224, 90,225, 30, 99,198, 46, +224, 47,156, 63,124, 3, 8,218,148,166,243, 36,142, 94,170, 83,131,136, 0, 68,124,243,237,124,196,199,199,185,140, 31, 45, 91, +192, 19,138,124, 67, 3, 91, 57,110,216,122,185,123,205,154,213,170, 78,157, 52,240,228,138, 31, 87, 68,148,140,108,109,223, 54, +239, 87, 66, 72, 39,250, 87,142,187,243,247,163,254,200, 19, 39,160, 74, 78, 54,229, 95,191,174,235,244,227,143,185,254,221,186, +173, 52, 24,141,238,197,151, 10, 14, 33, 32,197,169, 19, 86, 43,225, 77,159,206,161, 60, 30, 76, 46, 46,163,103, 0,181, 42,210, +252, 34, 35,163,255,240,177, 99, 35,126, 61,115, 6,213,170, 85,123,117, 63,115,118,118,198,180,105,211, 48,101,202, 20,225,253, +251,247,155, 30, 60,120,176,233, 15,203,150,121,205, 0,250,219, 82,206,115,183,110,185,124,244,205, 55,179, 27, 52,110, 28,176, + 99,247,110, 97,141, 26, 53, 0, 0, 47, 94,188, 8,254,126,201,146,192,122, 97, 97, 89,139, 63,255,124,123,204,204,153,117, 1, + 92, 47, 79, 51,243,218, 53,195,193,164,164,177,151, 46, 95,118,174, 87,175, 30, 0,224,217,179,103,158,171, 87,175, 30, 87,119, +224,192, 17,223, 76,156, 56,167,167, 78, 39,115,202,201, 17,246, 92,187,150,183,119,208,160, 10, 53,139,203, 9, 0,237,199,140, +249,188, 77,135, 14,117,250,143, 29,235, 26, 16, 16, 64, 36, 18, 9,140, 70, 35,210,211,211, 93, 98, 98, 98,106,156, 80, 42, 21, + 71,110,221,218,249,115,209,100,241,127, 17,165,122,145,191, 83, 36,171, 84, 79, 81,244,183,253,201,147, 39, 41,128,246, 17, 17, + 17, 87,139,111,224, 22,139,197, 38,147,197,227,241, 80,148, 44,108,107,129,144,155,155,139,220,220,220, 87, 77, 71,217,217,217, +184,116,233, 18,226,226,226,192,231,243, 33, 16, 8, 96, 52, 86, 60, 7,173, 88, 44,238,220,185,115,103,222,173, 91,183, 16, 20, + 20, 4,145, 72,244,170, 92,197,139, 64, 32,128,143,143, 15, 20, 10, 5, 58,117,234,196, 95,179,102, 77,231,242,140,150, 84, 42, +237, 49,120,240, 96,187,226,215, 42,149, 10, 92, 46,247,149,105, 81,169, 84,200,207,207,135, 76, 38,131, 78,167, 67,139, 22, 45, +236, 78,156, 56,209,163, 60,163, 85, 18,141, 70,163,202,206,206,118,110,211,166,141,203,246,237,219,159,181,104,209, 34,228, 15, + 53,237,202, 21,157, 78,167,227,115, 56, 28,155,230,209,219,181,107,215,171,125,159,150,150,134, 13, 27, 54,188,250, 44, 46, 46, + 14,107,214,172,121, 53, 21, 64,121,199, 40, 52, 52,244,189,157, 59,119, 54,222,177, 99, 71, 1,151,203,197,179,103,207,176,123, +247,110, 80, 74,225,225,225, 1,141, 70,131,172,172, 44, 92,190,124, 25,102,179, 25, 18,137, 4,126,126,126,246,147, 38, 77,106, +189, 96,193, 2, 62,128, 50,141,150,197, 98,177,112,185, 92, 4, 6, 6, 98,238,220,185,208,233,116, 16, 8, 10,253,165, 66,161, +128, 76, 38, 67, 84, 84, 20,146,146,146, 80,209, 77,198,222,222,126,224,142, 29, 59, 60,237,236,236,160,213,106,161, 84, 42,145, +146,146,130,151, 47, 95,234,178,179,179,205,142,142,142,156,192,192, 64,142, 80, 40, 20,246,237,219,151, 20, 27,206,158, 61,123, +186,237,220,185,115, 72, 69, 38,137, 16,226, 81,187,118,237, 89,227,198,141,179, 47, 89,103, 51, 51, 51,209,191,127,127,135,223, +127,255,125, 38, 33,100, 55,165, 52,231, 31, 22,242,166, 50, 89,157,187,247, 46, 60, 11, 59,124,194,203,255,101,170,165,213,180, + 47,151,243, 0, 96,211,198,239, 90, 29, 62,145,246, 91,104,181,172,148,131, 71,106,221,117,118,126, 76, 43,138, 8,118,108,231, +211,203,203,205,121,112,255,222,189,233,250,245, 43, 27,125,242,241, 88, 97, 96,173,105, 0, 0, 63,190, 39, 58,153,191, 37, 26, +237, 11,251,245,235, 87, 54,234,223,123, 64, 84, 98, 98,210,198, 78,237,125,247, 95,186,154,113,188,188,136,161,167,155,189,159, +131, 80, 13,191,160, 58, 8,169, 45,198,253, 7,207,112,232,192, 77,212,174,219, 28,122,189, 30,102,179, 89,220,171, 87, 47,205, +190,125,251,116,177,177,177, 74,173, 86,219,142, 82, 26, 91,209,246,167,166, 62,182,134,120, 55, 55, 10, 68, 66,179, 82, 46,208, +204,152,115,112, 80,163,102, 93, 27,187,248,248,241, 61,196,214,227,239,117,105,186,123,235,230,185, 83,230,204,219,141, 38, 77, +187,182,120,242,236,122, 29, 0, 15, 75, 53,175, 47,232,137,122,193,196, 28,255,252,121,196,203,164,164,212, 90, 94,222,134, 23, + 50,106,250,108,198,207, 93,218,180, 27, 88,191, 70,237,182,118, 79, 30, 95, 37,115,167, 15,217,243,205,210, 21,195,138,205,214, +197,243,123,218,141, 30,125,211, 14,128,158,249,171,162,167,115,161,176,138, 36, 48,144,151,184,125,187, 54,168, 87,175, 2, 0, + 48, 24,141,238,137, 73, 73, 82, 7, 7, 7, 80, 74, 97, 50,153,254,144, 67, 92,156, 55, 92, 47, 36,196,203, 22,205,196,175,191, +174, 63,125,250,116,100,102,102,194,108, 54,131,207,231,191,126,205,134, 90,173,198,232,209,163,177,118,217,178,230,182,104, 90, + 44, 22,242,209, 55,223,204,254,106,246,236, 26, 19, 38, 76,224,148,188,246,186,186,186,226,224,161, 67,118,235,214,173,171, 50, +107,237,218,209,195,133,194,248,138, 52,115,107,214,132,107, 86,150,168,216,100, 1, 64, 72, 72, 8, 54,108,216, 32,252,240,195, + 15,237,122,245,234,181,252,126,131, 6,171, 87,182,110,253,220,173, 86, 45, 39, 59,161,176,138,173,251, 19, 0,148, 58, 93,189, +149,171, 87,187,220,190,125, 27, 89, 89, 89,200,204,204, 44, 62,151,209,164, 73, 19, 50,114,228, 72,105,117,127,255,166,127,241, +225,254,147, 23,249, 27, 69,180,198,151,114, 77,253, 79,142, 86,209, 6,145,162, 13, 36, 37,110,142,127, 48, 44, 21, 25,173, 55, + 65, 38,147, 65, 38,147, 97,243,230,205, 16, 8, 4,175,110,190, 0, 96, 48, 24,108, 49, 45, 97,190,190,190,144,203,229,168, 85, +171,214, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0, 66,161, 16,122,189, 30, 1, 1, 1,208,104, 52, 97,229,105,106,181,218, +134,174,174,174,175,110,176,122,189,254,149,201, 42, 46,175,193, 96, 64, 65, 65, 1, 84, 42, 21,148, 74, 37,212,106,117,184, 45, +219,107,181, 90,241,232,209,163, 23, 33, 33, 33, 13,185, 92, 46, 36, 18,137, 88,173, 86,191,202, 45,202,207,207,199, 47,191,252, +162,126,255,253,247,221,143, 29, 59,166,177,225,224,226,211, 79, 63,133, 80, 40,132, 70,163,193,250,245,235, 49,121,242,100, 8, + 4, 2, 40,149, 74,108,216,176, 1, 83,167, 78, 5,143,199,131,193, 96,192,234,213,171,203,142,108, 60,126,156,120,235,214,173, +240, 70,141, 26,185, 28, 57,114, 36,167, 75,151, 46, 30,221,186,117,131, 72, 36,130, 86,171,133,201,100, 66,243,230,205, 17, 26, + 26,138,236,236,108,156, 62,125, 58, 55, 56, 56,216,253,246,237,219,214,204,204,204,151, 21,221,196, 75, 68, 12, 97,177, 88,144, +149,149, 5,153, 76,134,156,156, 28,164,167,167, 35, 53, 53, 21, 60, 30, 15, 21, 61,204,187,185,185, 13,168, 87,175, 30, 23, 0, + 68, 34, 17, 26, 54,108,136,217,179,103,155,181, 90,237, 96, 0,167,139, 86,123,239,231,159,127, 62,114,227,198, 13,158,175,175, + 47,158, 62,125, 10, 15, 15, 15,222,255,177,119,213,225, 81, 28,255,251,157,221,243,139,187, 39, 4, 73, 2, 73,112,105,113,183, + 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42,120,145,226,208, 22,119, 39, 56, 37,184,107, 18, 32, 16, 36, 33,238,122,190, +183,243,251, 35,242, 13,105,228, 18,168,241,219,247,121,238,185,219,189,221,119,199,118,230,157,207,204,124, 70, 46,151,151, 43, +180,156,157,157,127, 63,122,244,168,109,129,184, 46, 72,103,149, 42, 47, 59,122,247,238,109,187,117,235,214,223, 1,116,125,223, + 26, 53,107, 5, 36,245, 2, 45, 51,119, 31, 75, 10,152,252,205, 82, 81,205,192,188,206,235,200, 81, 16, 45, 89, 60, 41, 96,112, + 15,203, 96,107, 69,150,164, 60,158, 46,237, 61, 86,127,244, 81, 7,102,208,192,110, 79, 37, 18,235,106,235, 55,124,231,232,232, + 52,188,136,137,211, 18,118,246,150,168,230, 37, 37,251,130, 31, 57, 78,155,254,189,118,251,214,159,159,239,220,117,172,179, 84, +124,166, 35,128, 49,165,113, 71, 68,102, 28, 81,105,229,181,178, 82, 31, 16, 91,167,102,168, 87,215, 15,142, 14,233,216,248,251, +110,120, 87,109, 4,173, 86, 11, 75, 75, 75,165,209,104,212,179, 44,187,221, 20,145, 5, 0,231,206,101,240, 1, 1, 25, 58, 54, +155,231,190,248,106, 73,175, 14, 93, 62,242,111,219,182, 61,127,250,204,105,125,179,250,250,248, 46,157,234, 37,158, 60,179,250, +105,124,220, 11,159,128,218,205, 17, 30,118,190, 51, 64, 66,129,146, 11,108,232, 83,122,178,122,117,114,126,247,238,145,188,154, +191,171,248,225,199,135, 93,130,130,134, 4,182,108,209,146, 63,115,246, 15,157, 20, 41,143, 44,155, 55,141,253,226,243, 46, 7, +127,221,190,162,227,201, 19,191,215,200,204,138, 58,246,251,239, 84, 16, 89, 69, 59,105, 28,231, 36,146,201,152,228,243,231,185, +218,195,135,107, 11,222, 71,165, 82,137,195,135, 15, 67, 42,149, 22,126, 36, 18, 73,225,111, 39, 39,167,130,197, 87, 38,113, 2, + 64,124,124, 60, 18, 18, 18, 96,101,101, 5, 7, 7, 7, 36, 36, 36,224,234,213,171,136,136,136,128, 88, 44, 70,231,206,157,193, +148, 50,183,185, 56,103,191,201,147, 59,212,170, 93,219,179,184,200, 2, 0,189, 94,143,180,180, 52,244,232,209,131, 57,113,226, +132,243,201,232,232,143,102, 1,219,203,226,172, 31, 20,148,154,184,111, 95,137,207,110,208,160, 1,185,114,229,138,172,115,167, + 78, 19, 39,253,248,227,234, 95,182,110,125,109,228, 56,231,138,196,157, 97, 24,134, 16, 2, 15, 15, 15,164,165,165, 33, 39, 39, +111, 4,219,220,220, 28, 54, 54, 54, 48, 24, 12,224, 41, 21,255,149,121, 93,154, 22,249,143,116, 84, 55, 20, 8,174,226,158,225, + 69,249,227,162, 5, 21, 69,235,162, 13, 11,207,243, 38,137, 44,177, 88, 92,238,156, 43, 83,172, 92,197, 97,138,208, 42, 8,171, + 92, 46, 47,124,209,138, 10,172,130,112, 50, 12, 3,150,101, 97,138, 69,158,231,121, 54, 59, 59, 27,251,247,239, 71,171, 86,173, + 10,135,165, 50, 51, 51,145,145,145,129,204,204, 76,104, 52, 26,188,124,249, 18,231,206,157, 67,141, 26, 53, 0, 19,157,191, 62, +127,254,252,182,183,183,119,195,130, 70,188, 77,155, 54,238,155, 55,111,142,235,218,181,171, 43,165, 20, 51,103,206, 76,249,224, +131, 15,236,139, 54,242,229,129,101, 89, 92,189,122, 21, 53,106,212, 0,165, 20, 18,137, 4, 79,158, 60,129,163,163, 35,120,158, +135, 72, 36, 66,114,114, 50, 44, 44,202,246,145, 24, 26, 26, 58,236,179,207, 62,139,179,178,178,170,147,154,154, 26, 47,147,201, + 90, 92,188,120,209, 67,175,215,195,210,210, 18,150,150,150, 56,126,252, 56,172,173,173, 49, 97,194,132,104,181, 90,125,213,204, +204,204, 73,173, 86, 63, 72, 72, 72,152, 89,145,252,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,209,104, +202, 13, 99, 73,104,209,162, 5,142, 29, 59,198,206,159, 63,255,215,231,207,243, 58,134,213,170, 85,195,132, 9, 19, 88, 55, 55, + 55,188,124,249, 18,183,111,223,134, 94,175, 7,165,180,204,151, 87, 44, 22,183,153, 52,105, 82,115, 79, 79, 79,162,215,235,193, +243, 60,180, 90, 45, 10,126, 71, 71, 71,163, 86,173, 90,140,151,151,215,135,132,144, 54,166, 44,172, 16,144,135,196,232, 67,112, + 19, 59, 2,140, 37,168,250, 16, 82, 83, 42,183,109,100, 82, 82,210,143, 83,102, 93, 25,254,203, 34,189, 83, 76, 60,224, 23,216, + 19, 62,254,237, 48,236, 19, 14,243, 23,239,135,167,151, 31,162,162,162,208,166, 77, 27, 73, 92, 92,220,103, 0, 38,155,202,125, +230,204,117,227,233,227, 39,250,246, 27, 48,164, 97,251,246, 93,185, 83,167,142, 35,244,193,169,176,207, 6,244, 73,162,124, 14, +177,181, 86,220,125,242,248,150, 79,157,122,173,161,227,140, 45,128,185,139, 0,148, 90,169, 68, 70, 82,221,119,223,125,199, 4, + 31,250,253,147, 65,131,135,214,109,215,174,163,225,212,153,163,184,125,237,204,253,165,139, 70, 92,152,191, 98, 79,155, 14,157, +251, 4, 56, 56, 93, 61, 30,232,171,253,220,195,206, 42, 82, 40, 41, 37, 67, 36,151,243,200,175, 23, 25, 66, 64, 41,125, 67,100, + 21, 23, 90, 12,195,148,107, 0, 40,202, 89,180, 45, 42,232, 80,175, 95,191, 30, 50,153, 12, 82,169, 20, 98,177,184,220,233, 23, + 69, 57,195, 94,190,108,187,101,251,118, 89, 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3, 37,223,221,186,213, +160, 60, 78, 79, 23, 23,173,153, 66,145, 24, 30, 30,238,234,239,239,255, 70,120,179,178,178,160, 80, 40,176,125,199, 14, 73,183, +160,160,177,237,142, 31, 95, 10, 32,163,162,113, 39,132,192,209,209, 17, 54, 54, 54, 32,132,128,227, 56, 36, 36, 36, 32, 44, 44, + 12,183,110,221, 2, 75, 8,247, 87,230,113, 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23, 83,133, 22,203,178, +149,182,106,149, 6, 83,134, 14,149, 74,229,195,184,184,184,102,110,110,110,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,187, +119, 15, 74,165,242, 97,121,156,148,210, 15, 27, 55,110,140, 3, 7, 14,224,252,249,243,120,241,226, 5, 84, 42, 21,180, 90, 45, +212,106, 53,194,194,194,192,243, 60, 2, 3, 3, 97,102,102, 86, 46, 39, 0,228,230,230,198,139,197, 98, 63,133, 66, 81,120,206, +197,197, 5,169,169,169,188,193, 96,192,150, 45, 91,178,156,157,157,205, 20, 10,133,201,194,149, 16,130,164,164, 36,184,187,187, + 23,206,209,202,206,206,134,163,163, 99,129,176,128, 86,171,133,133,133, 69,185, 67,135,148, 82, 13,128, 73, 69,184, 27,245,235, +215,111,231,238,221,187,171,158, 61,123, 22, 55,110,220,128,131,131, 3,126,250,233,167, 23,175, 94,189, 26, 68, 41,189,245, 23, + 20,212,114,175, 73, 77, 77,221,255,240,225,195, 15, 27, 55,110, 92, 88, 75,180,105,211,134,180,105,211,198,190,168,169, 63, 57, + 57, 25, 55,111,222,196,217,179,103, 65, 8,193,211,167, 79,141,106,181,122,103, 25,207,150,120,121,121,109,158, 49, 99,134, 57, +199,113,133,101, 91,161, 80, 64, 46,151, 67, 34,145,128,101, 89,188,122,245, 10, 61,122,244,176, 90,181,106,213,239,132,144,234, +148, 82, 61,222, 19,100,168,161,191, 23,154,101, 21, 88,203, 41,108,195,250,249,205, 70,142, 66,193,208, 33, 23, 88,203, 49,236, + 94,104,162, 85, 67, 71,232,173,165,101,243,156, 56,251,250, 11,157,225, 68,247, 19, 39, 67,250,127, 51,113,130,184, 90,181, 90, + 73,103,255,184,227,217,142,251,158,216,217, 91, 34, 53, 37, 11,175,162, 19,241, 60, 74, 71,171, 85,171,149,116,251,230, 67,217, +226,101,203,125,114, 85,154, 61,127, 92,136, 63, 90, 78,167, 76, 67, 8,233,185,116,165,236,194,144,207, 26, 73, 21, 10, 87,164, +165, 60,132,167,167, 3,122,116,171,131,223,182, 94,133,149,149, 45,156,156,156,192, 48,140,153,169,113, 79, 73, 73, 33,251,119, + 93, 26,254,233,208, 17, 31,116,234, 24,196,157, 60, 21, 44, 58,127,250,200,213,223, 55,124,123,144,178,185, 74, 66,179, 21, 85, +188,157, 31, 68, 62,187, 55,168,109,251,129, 80, 72, 44,106, 0, 53, 75, 44,176,133, 11, 12, 40,162, 25, 6,242, 79,135,142,108, +218,169,211, 71,220,169, 83,135,112,234,248,214,235,115,230, 84, 57,254, 34,118,135,228,218,173, 24,121,207,190, 99,210,143,157, +120,164,235,211,221, 59,194,213,172,158, 26, 2,222,236, 72,138, 68,137,156, 86,235,225,222,169, 19,171,138,138, 18,155, 59, 57, +113, 0, 96, 48, 24,202, 21, 90, 0,120, 83, 56, 77, 13,139, 74,165, 2, 15,112,166,112, 38, 36, 37, 85,201,239,132, 23,194, 96, + 48, 20,138,172,212,212, 84,100,100,100,192,204,204, 12,201, 90,173,147, 41,156, 29,155, 52,217,242,221,220,185,147,247,237,223, + 47, 41, 42,178, 10, 62, 98,177, 24, 11, 23, 45,146,124,245,205, 55, 99,198,138, 68,227, 43,146,158, 5,157,118,150,101, 33, 18, +137, 16, 21, 21,133,232,232,104, 68, 69, 69, 33, 42, 42, 10, 10,133, 2,180,148,244,124,135, 22, 45,242, 95, 45,167, 5, 67,135, + 69,135, 16, 77,114,239, 80,145,201,240,166, 10, 3,163,209,248, 78,133, 86,110,110,238,217,115,231,206, 53,233,217,179,167,232, +250,245,235,112,118,118, 46, 20, 90, 5,223, 5,195, 81, 74,165, 18, 7, 15, 30,212,231,230,230,158, 45,231,101, 58,119,252,248, +241,134,179,103,207, 22, 15, 27, 54, 12,225,225,225, 24, 53,106, 20, 50, 50, 50,144,149,149,133,212,212, 84,168, 84, 42, 52,105, +210, 4,114,185, 28, 15, 30, 60, 48,168, 84,170,115,229, 52, 14, 52, 41, 41, 41,199,193,193,193,165,248,127,125,251,246,117, 90, +179,102,141,234,241,227,199,134,102,205,154, 89,154, 42, 56, 10,176,107,215,174, 66, 75, 93, 68, 68, 4,214,172, 89, 83, 56, 39, +235,206,157, 59, 88,178,100, 73,161,239,179, 10, 90, 25,111, 5, 4, 4,112, 6,131, 1, 53,106,212,128,155,155, 27, 52, 26, 13, +150, 47, 95,206,253, 21, 34,203, 84,104, 52,154,125, 67,134, 12,153,122,247,238, 93, 23,145, 72,148,103,210,206,143,159, 94,175, +199,179,103,207, 16, 22, 22,134,199,143, 31, 35, 45, 45,173,176, 35,112,239,222,189,116,131,193,176,167, 52, 94, 7, 7,135,153, +191,253,246,155,179, 82,169,124,163, 60, 23, 88, 67, 11,172,164,201,201,201,176,182,182, 70,187,118,237, 28,207,157, 59, 55, 19, +192,236,247,161, 65, 35,132,144,182,173,216, 70, 95,125,209, 19,189,187, 41, 95, 31, 56, 22,123,101,201,226, 73,249,147,225, 29, +195,122,119,115,123,125,255,137, 53,250,246, 58,212,232,143, 11, 36,166,172,185,116,249,115,172, 14, 55,105, 98,123,254,192,145, + 35,191, 79,159, 50,241,206,228, 73, 35, 28, 84,234, 72,121, 53, 47, 41, 1,128,231, 81, 58,250, 32,156,215, 44, 89, 58,241,206, +252, 69,171,152,196,212,140, 81, 55,110,148,238,222,160,168,120, 9,240,133,188, 90,205, 86,113, 62,190,205,189,175, 95,221, 14, +115,165, 26,126, 53, 27,161, 83,199, 15,113, 62,228, 30, 18,146, 53,136,143,143,135, 86,171, 45,211, 93,194,227, 7, 7, 63,161, +132,122, 18, 74,162, 9, 67,229,159, 12,249,188, 69, 80,208, 71,244,216,177, 35,220,161,131,219, 47,239,217,182,114, 31, 35, 17, +139,212, 58, 43, 29, 33,154, 76, 48,161,225, 57,185,121, 29, 26,177, 76, 82,186,249, 53,223,177,171,127, 64, 77,231, 79,134,140, +178,234,218,165, 7, 61,126,252, 16,191,103,247,150,243,123, 54,213,222,206, 51, 89,146,248,215, 42, 89,102,150, 33,147, 18,169, +117, 78, 22,175, 74,124, 94, 93,227, 26,212,247,189, 17,237,239,172,195,173,213,198,228,188,126,237, 98,219,170,149,236,217,220, +185, 74,167, 38, 77, 52, 36,127, 14,113, 89, 66,139,101, 89,128, 97,120, 83, 56, 77, 13,139, 90,173, 6, 15, 24, 42,195,201,113, +220, 27, 34,171, 64,104, 21,216, 53, 76,225,220, 48,103,206,117,207, 78,157,210, 66, 66, 66,156, 90,183,110, 77,178,179,179,145, +157,157,253,134,216,114,117,117, 37,254,129,129,202, 93,231,207, 87,155,109, 98,122,154, 18,119,134, 97,254,114,161,245, 95, 70, + 73,150,172, 55, 44, 90,165,161,192,162,101,138,208, 50,209,162,101, 48, 24, 12,112,116,116, 68, 74, 74, 74,169, 13, 63,195, 48, + 80, 40, 20, 5, 99,196,101,174,188,211,106,181,203, 39, 79,158, 60,174, 75,151, 46,246,126,126,126, 72, 78, 78,134,147,147, 19, +228,114,121,225,220,177, 2,190, 59,119,238,224,183,223,126,203,210,106,181,203,203,225, 92,182,104,209,162, 47,122,247,238,109, +235,236,236, 12, 27, 27, 27, 60,120,240, 0, 54, 54, 54,200,202,202,194,147, 39, 79, 96, 97, 97, 81, 56,111,231,200,145, 35,217, + 90,173,118, 89, 57,226,141, 94,188,120, 81,111, 97, 97,241, 32, 57, 57,153, 77, 75, 75, 19,165,167,167,139,178,178,178,196,153, +153,153,226,147, 39, 79,218, 91, 89, 89,169,254,248,227,143,100, 79, 79, 79,246,197,139, 23,172,193, 96, 96, 76,104, 28, 49,126, +252,120, 72, 36, 18,104,181, 90, 44, 95,190, 28,147, 39, 79, 46,156,147,181,104,209, 34,204,152, 49,163, 80, 56,111,220,184,177, +162,133, 7,122,189, 30, 6,131, 1, 6,131,193, 36,241,251, 54, 48, 69,176, 83, 74, 19, 8, 33,221, 26, 55,110,124,122,239,222, +189,118,249, 62,201,144,152,152,136,196,196, 68, 36, 39, 39, 35, 39, 39, 7, 28,199,193,205,205, 13,137,137,137, 56,116,232, 80, +102,118,118,118,167,178, 86, 28,178, 44, 59,164, 69,139, 22,162,226, 97, 40,232,229, 21,136,119,153, 76,134,184,184, 56,180,105, +211, 70, 26, 18, 18, 50,228,191, 46,180, 10, 4, 76, 45, 31, 72, 58,118, 26, 46,169, 21,208, 84,119, 63,236,216,235,154,222,137, +175, 7,247,176, 12, 6,128,123,161,137, 86,247,159, 88,163, 86, 64, 55,218,177,147, 77,195,196,132, 13,181,253,125,137,190,172, +237,122, 0,192, 74, 41,235,215,161,125,147, 56, 11, 51, 51,102,201,210,141, 39,214,174, 93,214, 96, 95,240,255,220, 59, 44, 89, +154,231,222,161, 67,251, 38,252,227, 71,143,251, 1,216,100,170,120,233,214,173,251,221,223, 54,255,134,199, 97,127,184, 78, 29, + 95, 71,154,150,104,128,194,220, 3, 13,235, 57, 97,195,230,135,184,127,255,126,130, 78,167,107, 83,102, 89, 34,212, 51, 44, 60, +212,183,118,128,191,243, 39, 67, 70, 90,118,235,214, 3,199,142, 29,198,182, 45,155, 46,246, 25,216,251,215,216,244, 44,214, 81, +172,148, 40, 41, 47,101, 37, 86, 34,137, 76,145,164,211,229,173,129, 16,139,229,150, 64, 63,190,140,145, 67,140, 30, 57,216,170, +109,251, 30, 8, 62,126, 24,219,182,108,184, 48, 43,160,239, 38,239,250,181, 72,147, 6,139,199,120, 87,245,246,202,205, 73,204, + 98,136, 84,175,209,240, 22,139,183,188,250,249,249,140, 33,207,239,134,246, 91, 42,172, 58,124, 3, 15,182,117,237,218,248,171, +200, 72,137, 67,243,230,138,184,243,231,149,249, 59,145,148, 41,180, 68, 34, 17,104,233, 67, 93,111,112,146,173, 91, 25, 0,101, + 46,194,146, 72, 36, 80,169, 84, 48, 0,122, 83, 56, 93, 78,157,122, 29, 25, 25,233, 99,107,107,251,134,200, 74, 75, 75, 43,252, +173,209,104,160, 82,169,160, 80, 40,194, 76,225, 76,188,120, 81,179, 96,252,248,217,131, 6, 14, 92,121,246,220, 57,185,157,157, + 29, 50, 51, 51,223, 16, 90, 58,157, 14,109,219,181,147, 44,186,123,247, 19, 0,115, 76, 73, 79,167, 54,109,202,157, 15,204,178, + 44,248,191,120,232,240, 61,232,172,142, 44, 73,120, 49,229, 13,225,152,186,234,176,164, 6,146, 16,210,190,216,169, 25, 13, 27, + 54,212, 68, 68, 68,192,211,211,179, 80,172, 20,125,166,165,165, 37,172,173,173,113,231,206, 29,252,248,227,143,106, 0, 51,202, +226,164,148,102,171, 84,170, 1, 29, 58,116, 80,139, 68, 34,212,172, 89,179,208,127, 22,207,243,144, 74,165, 48, 51, 51,195,221, +187,119,209,189,123,119,149, 74,165, 26, 80,220,135, 86, 9,156,153, 42,149,234,227,142, 29, 59,170,194,195,195,209,162, 69, 11, +220,191,127, 31, 57, 57, 57,200,201,201,193,203,151, 47,225,239,239, 15,149, 74,133, 53,107,214,168, 85, 42,213,199,148,210,204, +178, 56,179,179,179,187, 79,158, 60,153,221,185,115,167,183,155,155, 91, 64,163, 70,141,252,218,181,107, 87,189, 87,175, 94, 94, + 93,187,118,117,241,241,241,209,116,234,212,201,161, 75,151, 46, 14, 42,149, 74,124,229,202,149,120,131,193,208,165,156,244, 44, + 20, 39, 17, 17, 17,133, 67,133, 34,145, 8, 41, 41, 41,133,158,251, 11, 42,165,146,132,112,105,156, 69,197,118,129,192, 42, 16, + 92,229,181, 1,165,112,150,219,112, 72,165,210, 2,139, 39, 45,143,147, 82,122,239,209,163, 71, 29, 90,181,106,117,111,248,240, +225,217, 9, 9, 9,176,176,176, 64,181,106,213,224,235,235, 11,123,123,123,232,245,122, 28, 60,120, 48,247,208,161, 67, 15, 51, + 51, 51,219, 20,247,161, 85,156,147, 97,152,151, 37, 85,178, 5,214,172, 2,161, 37,151,203,225,230,230, 86,144,182, 47, 43,146, +158,149,124,121,255, 90,206,124, 1,211,174,109,167,170, 93,131,122, 90, 29, 60,124, 85,186,114,245,161,135, 13,219, 99,163, 93, +149,172, 35,118, 85,178,142, 52,108,143,141, 43, 87, 31,122,120,240,240, 85,105,215,160,158, 86,237,218,118,170, 26, 30,246,216, +239,141,125, 15, 75, 8,167, 92, 46,111,218,162,121,195,244,144,203, 23,248,249,139, 86, 49,109,219,244,185,187,233,215,131, 7, + 55,253,122,240, 96,219, 54,125,238,206, 95,180,138, 9,185,124,129,111,209,188, 97,186, 92, 46,111,106, 74,220, 71,143, 28,108, + 21,212,181, 7,142, 29, 59,200,237,219,181,102,209,238,253, 79, 91,125, 62,238, 98, 98, 68,196,125,154, 20,115, 10, 98, 38, 10, +143, 30, 61,202,212,233,116,109, 74,154, 8, 95, 18,231,168, 17,131,139,138,172, 75,118,206, 45, 54, 62,122, 4,227,153, 51, 71, + 13,231,206,221, 85, 95,186,151,148,121, 59, 60, 37, 45, 46, 57,237, 69, 86, 86,170,142,231,141, 48, 26,141,236,119,223,229, 77, +216, 45, 45,143,154, 53,107,141, 63,206,238,192,150,205,235, 51,121, 30,154,190,123,247, 26,251,245,155, 75,189,170, 84,241,218, +190,107, 7,233,246, 81, 79, 43, 10,240,221,123,247,176,222,185,123, 39,169, 90,163,106,149,106,213,242, 92,218,252, 39,203,210, + 95,192, 57,135,210,244,172,168,168, 11,119, 86,173,210, 58, 13, 24, 96, 43,117,114,178,132,209, 72, 10,234,247,210, 62, 34,145, +232, 13, 11, 76, 89,156,110,246,246,177, 71,142, 28,129,175,175, 47,220,220,220, 80,116,142,108,129, 67,110, 59, 59, 59,236,223, +191, 31, 20,184,109, 10,103,125,111,239, 59, 11, 23, 44,208,241, 60,143,244,244,244, 63, 89,179,210,211,211,193,243, 60,142, 7, + 7,235,178,114,114,182,152, 26,247, 54, 44,155, 51,168,101,203,249, 65, 65, 65,250,200,200, 72,240, 60,143,162,150,173,164,164, + 36,152,155,155, 67,163,213,122, 16, 66,148,166,112, 38,157, 60,105,134,114,234,245,226, 22,173,191, 34,223,255,235, 34,171,232, +134,210, 69, 69, 87,153, 22, 45,142,227,224,225,225,241,198,150, 46, 12,195,188,241,169,200,138, 67, 74,233, 86, 66,200,169, 78, +157, 58,205,254,224,131, 15, 70,207,158, 61,155,245,243,243, 67,102,102, 38,108,108,108,224,232,232,136, 39, 79,158,224,200,145, + 35,198,148,148,148,117, 0,230,153,178,132,158, 82,122,158, 16,210,173, 78,157, 58,187,167, 77,155,102,213,177, 99, 71,177,135, +135, 7, 40,165,184,123,247, 46, 14, 28, 56,160,223,180,105, 83, 86,190,200, 58,111, 98, 88, 79, 19, 66,250,116,233,210,101,251, +144, 33, 67, 44,140, 70,163,248,229,203,151,208,106,181, 48, 24, 12,136,142,142,214, 31, 59,118, 44, 71,165, 82, 13,166,148,158, + 54,129,239, 14, 33,196,255,204,153, 51, 67,174, 92,185,242,227,240,225,195,237,218,181,107, 39,225, 56, 14,151, 47, 95, 78,174, + 95,191,190, 99, 82, 82,146,126,255,254,253,169, 26,141,102,134,209,104, 52,105, 11, 30, 66, 8,178,178,178, 96,111,111, 15,173, + 86, 11,158,231,161,211,233, 96,110,110, 94,184,109, 18,165, 20, 21,153, 92, 95,172, 12,176,122,189, 30, 3, 7, 14, 4,207,243, + 88,190,124, 57, 56,142,171, 48,153,149,149,213,237,123,247,238,117,171, 87,175, 94,161,120, 41, 40, 67, 50,153, 12,246,246,246, +176,179,179,195,177, 99,199, 32, 22,139,111,155,152, 71,247, 1,212, 39,132, 52,125,248,240,225,167, 0,234,233,245,122, 55,163, +209, 72, 24,134,137,167,148, 62,200,202,202,250,213,212, 45,120,146,146,146,126, 28, 58,116,104,253, 29, 59,118,152,139, 68,255, +123, 53, 68, 34, 17,100, 50, 25, 10,156, 99, 82, 74,161,211,233, 48,115,230,204,172,220,220,220, 31,223,151,138,162, 97,163, 38, +216,176,102,133,249,185, 63, 78, 37, 63,122,138, 3, 69, 93, 56, 88, 75,129, 63, 46,144,152,196,132, 13,181,227, 94,191, 54,111, +216,168,137, 73,156, 6,157, 62,245,227,193, 95,123,230,111,193, 51,243,229,203, 87,235,183,111,253,249, 57, 0, 44, 94,182,220, + 39, 49, 53, 99,212,227, 71,143,251,173, 95,191,171,169, 65,167, 79, 53,133,243,127,226,101,123, 38, 40, 52,148,210, 27,132, 16, +239,238, 3, 78,206,168, 81,213,242,163,164, 84,117,108, 78,142,234, 75, 74,233,115, 83,227,222,188, 89, 43,252,113,122, 39,182, +109,217,158, 69,121, 86, 99,111,111, 79, 1,224,209, 35,123,250,232, 81, 6,253,223,188, 98,235, 92, 49,189, 63,239,235, 47,219, +125,157,153,149,182,108,217,234,178, 29,215,214,169,251, 1,234,212,253, 0,227,190,252,214,202, 63,160,166, 39, 0,236,221, 75, +141,129, 62,228,232,236, 89,115, 63,154, 55,111, 46,178,178,181,152, 55, 47,111,187,158, 39,161,225,193,145,145, 84, 39, 52, 91, +111, 98, 54,199,221,192,215, 95,251,168,210,210, 28,154, 79,157,106, 47,250,230, 27,166,172,201,240, 69,223, 95, 83, 56,111, 61, +120, 16, 60,234,243,207, 99,231,204,158,221,105,221,250,245,138,218,181,107, 35, 33, 33, 1, 53,107,214,132,155,155, 27,206,156, + 57,131,253,123,246,228,102,100,103,207, 0,176,214, 20,206,173,199,143, 63,241, 11, 8, 72, 89,191,126,189,107, 80, 80, 16,201, +205,205, 69,102,102, 38, 50, 51, 51,161,213,106,145,239, 16,154, 70, 60,125,250,200, 96, 48,172, 51, 53,238,198,228,100,249,188, + 38, 77, 98, 36, 60,191,176, 79,239,222,147,231,125,255,189,172,106,213,170, 68,171,213, 22, 90,181,244,122, 61,204,205,205,245, + 58,157,206, 14,128,202, 20, 78,217,166, 77, 92,114,114, 50, 28, 28, 28, 10,221, 53, 21,245, 75,152,157,157, 13, 74,169,224, 76, +183, 50, 34,172,180,182,220,214,214,246,182, 72, 36,114, 47,106,221, 42,105,239,188,162,231, 12, 6, 67, 76,114,114,114,195,162, +138,151, 82,122,182, 20,129, 80, 13,192, 79,109,219,182,237, 51,105,210, 36, 18, 18, 18,130, 67,135, 14,209,231,207,159,239, 3, + 48,163,180, 74,178, 28, 78, 11,153, 76, 54,193,204,204,172,125,129, 11, 7,165, 82,249, 48, 55, 55,247,172, 86,171, 93, 94,154, + 55,248,114, 56, 45,101, 50,217,120, 51, 51,179, 14,217,217,217,245, 0,192,194,194,226, 94,110,110,238, 25,173, 86,187,162,180, +141,170,203,225, 84, 88, 89, 89,253,104,111,111,255,241, 55,223,124, 99,119,241,226,197,248, 63,254,248, 67,146,145,145,177, 67, +167,211,149,186,169,116, 73,156,118,118,118,183, 89,150,117,255, 43,242, 8, 0,234,214,173,123,172,123,247,238, 65,131, 7, 15, +134,193, 96,192,218,181,107,113,230,204,153,224,167, 79,159,118, 43,171, 55, 90,156,147, 16, 98,239,238,238, 30, 50,122,244,104, +175,129, 3, 7, 42,109,108,108, 32, 18,137,144,155,155,139,103,207,158,225,238,221,187,244,240,225,195, 57,119,238,220,137, 81, +169, 84,173, 41,165, 41,166,166,231,219,244,154,139,115,138,197,226, 86, 30, 30, 30,187,230,204,153, 99,209,161, 67, 7,133,157, +157, 29, 88,150,133,193, 96, 64,124,124, 60, 66, 67, 67,113,234,212,169,220,125,251,246,229,166,166,166, 14,164,148, 94,248, 39, +194,249, 46, 57,253,125,201,172, 98, 27, 69,151,234,237,189,172,107, 77, 9,103,187,214,174, 61,250,245,233,210, 25, 0,246,238, + 63,113,242, 92, 72,220,225,202,134,179,188,176,154,194, 89,203,135,157, 19, 22, 30,250,134, 67,203, 0,255,192,136, 90,181,123, +255, 96, 10, 87,129,103,248,226,113, 47,226,109,191,168, 77,247,141, 97,214,130,141,167,191,157, 49, 29, 63,253, 56, 31,135,247, + 30, 12, 14,143,164,199,254,203,101,233,175,228, 44,216, 4, 89,233,226,210,114, 57,207, 79,191, 31, 26,106, 94,180,195, 86, 96, +121, 46,218,169,116,117,117, 77,138,139,139,115, 50,133,179,219, 47,191,232, 85,102,102,178,233, 11, 23,182,202,209,104, 90,205, +155, 55, 79,116,235,214, 45,172, 89,181,138,211,196,196,108, 79, 6,198,151, 52, 26, 82, 22,167,215,248,241,242, 41,107,214, 12, +171, 86,163,134,227,167,159,126, 42, 22,139,197,200,205,205,197,235,215,175,113,250,212, 41, 93,248,163, 71,225, 89, 89, 89, 31, + 81, 74,227, 76,229,236,246,203, 47,122,235,106,213,160,116,112,160,231,206,159,183, 26, 53, 97,194,232, 42,222,222, 86,157, 58, +119, 22, 91, 90, 90, 34, 61, 61, 29, 47, 95,190,196,193,131, 7,147,114,114,114, 92, 41,165, 70, 83, 56,183, 95,185, 82,231,248, +133, 11,125,127,248,225, 7,105, 96, 96, 32,172,172,172,144,157,157,141,208,208, 80, 92,184,112, 65,187,110,221,186,204,204,204, +204,209, 28,199, 29,249,171,242,253,125, 29, 58, 36,127,229, 84, 0, 83, 50,130, 16,210, 16,192,172,252,195,239, 77,216, 51,240, +189,169,124, 8, 33,158,182,182,182, 27, 52, 26, 13, 85,171,213,163, 40,165,209,255,182,112, 18, 66, 68, 13, 27, 54, 92,147,148, +148,212,148, 82, 10, 43, 43,171,171, 97, 97, 97, 99, 41,165, 92, 69, 57, 9, 33, 44,128,166,230,230,230, 77, 44, 44, 44, 90,105, +181,218, 90,249,195,111,143,114,115,115, 47,232,245,250, 27, 0,174, 82, 74,141,255,100,220,243,195,217,193,213,213,245,115,158, +231,107, 16, 66,172,141, 70, 35, 12, 6, 67, 6,207,243,207, 50, 51, 51, 55, 1, 56,243, 79,135,243, 93,113, 6,212, 32,189, 40, +131, 90,165, 9,130, 55,132, 77, 49, 1, 65,120, 60, 10,123, 70, 15, 86,160,204, 51, 93,218,123,172, 6,242, 86, 38,150,183,149, +209, 27, 66,203, 4,241, 82, 97,145, 89, 67, 52,148, 18,234,249,102,239,147, 68,215,172,211,107,219,219, 8, 45, 83, 17,224, 71, + 90,129,162, 41, 79,113,227,209, 83,250,199,251, 90,215,189, 75,206,249,132,216,174,178,177,185,202,136, 68,206, 0,152,124,235, + 11,207, 19, 98,164,132,112, 69,135,183,138,118, 44,203,227,212, 3,181,197, 50,153,135,145,227,156, 18, 0,243,227, 70, 99, 3, + 13,165, 57,238,192,172,187,148, 62,169, 76, 56,245, 64,109, 86, 38,243, 60, 78,105,143,100, 51,179, 58, 73,106,181, 3, 0,106, +110,102,246, 40, 43, 55,119,139, 70,163, 89, 93,194,230,237,229,114, 74,100, 50,119, 35,199, 57, 1, 0, 35, 18, 37,237,214,106, + 61, 98, 44, 45, 63,213,104,181, 94,230,230,230, 6,157, 78,151,165,209,104, 6, 27, 12,134,115, 21,137,251, 51,142,243,191,194, + 48, 45,244,102,102,118,122, 66,204,116, 28,167,215,233,245,175, 53, 26,205, 67, 0, 63, 83, 74, 35,255,202,124,127,111, 81,176, + 58,237,175,248, 0,104, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231, 95,207, 9, 64, 9,192, 19, 0,251, 95,140,251,251, +244, 1, 48,178,224,183, 72,144,154, 2, 4, 8, 16, 32, 64,192,123, 97, 56, 81,161,132, 57, 89, 2,254, 89, 16, 0,237, 75,201, + 48,147, 77,130,149, 89,125, 96,194, 16,131,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,239, 25,103,121,220,255,197, 33,201, +178,246, 58, 20,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20,134, 14,255,162, 15, 3, 1,165,169, 83, 39, 66,136, +211,187,190, 86,192,251, 93, 22, 74,184,215,141, 16,226, 86,193,235, 93,132, 84, 23, 32, 64,128,128,247, 3,127,187,208, 50,181, +209,122,203,198,237,173,132, 15, 33,100, 62, 33,136,203,251,144,249,239,234, 90, 19,158,235,234,224,224,240, 85, 64, 64,192,118, +103,103,231,113,132, 16,199, 10,222,239, 99,102,102,182,194,220,220, 60,196,220,220, 60,196,204,204,108, 5, 33,196,231, 29,229, + 27, 33,132,140,146,203,229,231, 93, 93, 93, 99,101, 50,217,121, 66,200,104, 82,201, 13, 46, 9, 33,126,132,144,121,132,144,239, + 9, 33,117, 42,114,175, 83, 96,207, 61,142,129, 61, 31, 56, 6,246, 12,181,175,253,145,143, 99, 96,207, 80,199,192,158, 15,156, + 2,123,238,249, 11,202,107,165,243, 55,255,222,232,188, 79,249,247, 18, 66,126, 38,192,107, 66, 16,243,182,101, 73,128, 0, 1, + 2, 4,252, 59, 80,161,201,240,110,110,110,125, 40,165,163, 0, 80, 66,200,134,216,216,216,253,149,104,120,166,228,255, 94, 68, + 41,157,254, 54,215,153,112,239, 50, 74,233,228,138,139, 52, 76,225,121,202, 0, 0,195,144,169, 78, 78, 78, 74,150,101,255, 52, +193,208,104, 52, 42, 9,193, 56,158,167, 36,255,218, 41,132,144, 21,148,210,196,202,136,195, 79, 62,249,100,217,138, 21, 43,228, + 74,165, 18, 81, 81, 81, 29, 71,143, 30,221,140, 16,242, 53,165, 52,190,188,251, 21, 10,197,160,198, 77,154,126,189,112,241, 82, +115, 39, 71, 71, 51,206,200,235, 95, 70,189, 82,206,156, 54,185,137, 66,161, 88, 81,214,102,202,197, 5, 21,128,145, 34,145,168, +191, 92, 46,175,174,209,104, 34, 57,142,219,199,178,108,167, 31,127,252, 49,176,107,215,174,242,172,172, 44, 41,199,113, 53,182, +109,219,246,245,111,191,253,214,133, 16,210,163,172,101,250, 5, 22, 29, 74,105,108,145,211,125,163,162,162, 26, 74, 36, 18, 82, +173, 90, 53, 6,192,131,114,174, 47, 4, 5,124,194, 46,239,173, 13, 0, 1,205,251, 69,132, 93,222,139,252,223,127, 65,167,224, +205,178, 32,151,203,215,105, 52,154,232,130,255,243,195,153,104,202,189,132,144,149,249,219, 7, 53, 4,240,105,254,165, 91, 41, +165,183, 9, 33,206,114,153,108,130, 90,163, 33, 0,200,219,148, 37, 1, 2, 4, 8, 16,240,183, 27,145,234, 83, 74,239,230,143, + 72, 4, 1, 8, 46,104,187, 43,186,234,240,139,167, 79,159,154, 3,128,175,175,239, 88, 0,251, 43, 16,136, 63, 53, 60,237,218, +181,171,175, 80, 40,222,240,130,172, 86,171,165,132,160, 93,101,196, 75,193, 51,116, 58, 45, 35, 22, 75,193, 48,228,235, 58,117, +234, 84, 73, 73, 73,185,200, 48,204,246,152,152,152,244, 74, 36, 30, 54,110,220,232,235,226,226,242, 39,111,205,241,241,241,210, + 30, 61, 62,170, 16,223, 48, 66,100, 90,153,172,137,132, 16, 23, 35,199, 89, 3,128, 72, 36, 74,247,179,178,106,248,211, 15, 63, + 40, 9, 33,124,106,106, 42,212,106, 53, 38, 78,156,168, 8, 15, 15,239, 9, 96,117, 57, 97,244,253,224,195,102, 19, 79,157, 58, + 89, 43, 43, 45, 93,179,113,217,250, 59,106,145, 68,229,237, 95, 83,178,102,195, 22,155,145,195, 6,127, 73, 8,185, 87,210,118, + 36,197,120, 24, 0, 7, 39, 76,152, 16,208,173, 91, 55,105,118,118,182, 92,173, 86, 87,217,190,125,251,204,134, 13, 27,154,215, +171, 87, 79,186,107,215, 46,146,153,153, 9, 74,169,178,102,205,154,180,127,255,254,154,221,187,119,143, 3,176,178, 60,225,203, +178,236,114, 63, 63,191, 57,249,113,150, 20,185, 70,236,239,239,111, 6, 0, 79,158, 60,249,142, 16, 76, 40, 75,100, 19,224,105, + 64,243,126, 0, 65,141,176,203,123,229, 1, 45,250,105, 64,241,140, 0, 79,243, 59, 4,243,128, 34,126,161,222,196,163,216,216, +216, 74,237, 77, 24, 20,212,141, 16, 66,246,185,186,186,238, 79, 74, 74,242, 38, 4, 35, 76,237, 12, 16, 66,136,157,157,221, 80, + 0,243, 1,124,254,232,209,163,250, 0, 80,171, 86, 45, 9,128,219,150,150,150,205,244, 58, 29, 17,170, 43, 1, 2, 4, 8,248, + 79,162, 62,128,187, 0,130,138,108,193,179,161, 50, 66, 75, 10, 0, 23, 47, 94, 4, 0, 89,101, 68, 95, 81, 1, 51,126,252,120, +184,184,184, 20, 23, 47, 8, 9, 57,255, 54,145,125,227, 25,223,127,255,189,121, 70, 70, 70,251, 95,127,253,181,165,155,155,219, +146,216,216,216,235,101,221, 76, 41, 77, 36,132, 44,202,183, 64, 64, 38,147, 71,140, 30, 61,250,110,254,223, 85,142, 30, 61,170, +236,222,189,187, 10,192, 43, 0,144,201,228,110, 44,203,248,230, 77,122,195,162,178, 4, 97, 63, 66,170, 73,165,210,182,163,126, +249,133,107,208,189,187,200,204,193,129, 0,192,171,199,143,237, 22, 45, 94,220, 44,253,249,115,169,218,206, 46, 53, 53, 55, 87, + 29, 17, 17, 1,153, 76, 70, 88,150,109, 80, 94,132,205,204,204,190,250,225,167,133,102, 89,105, 25,106, 77, 86,182,142,229, 12, + 90, 11,133,210,152,152,144,148,106,174, 48, 83, 77,157, 53, 87,250,197,136, 33, 95, 1, 24, 91, 14,213,184,175,191,254,186, 86, +227,198,141,221,246,236,217, 67, 50, 51, 51, 33, 18,137,204,235,213,171,135,134, 13, 27, 26,255,248,227, 15,226,237,237,141,192, +192, 64, 92,190,124, 25, 87,175, 94, 37,245,235,215, 87, 30, 56,112,224,147,146,132, 86,113,113,205,178,204,196,154, 53,107,214, + 51, 51, 51,211,249,250,250, 98,196,136, 17,160,148,162,125,251,246,129,230,230,230,251,115,115,115,165, 79,158, 60,110, 89,158, +200, 78, 12, 61,212, 31, 0, 28, 3,123, 62, 0, 80, 27, 20,207,146, 66, 15,213, 41,114, 73,173, 39, 79,158,124,144,158,158, 94, + 56, 25,177, 96, 3,243,150, 45, 91,154, 92,144, 10,202, 66,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199, +143, 63,238,213,171,103,224,211,167,207, 80, 90, 56,139,149, 35, 50,116,232,176, 68,115,115,243,222,174,174,174, 79, 0,136, 36, +146, 66,157,201, 58, 57, 57, 57,212,169, 83,103,140,173,173,109, 18,203, 48,142, 20,148,150, 87,150, 4, 8, 16, 32, 64,192,191, + 10,193,249,226, 42,184,248, 31, 34, 0, 8, 14, 14,166,255,235,181, 7,145,178, 26,158,251,247,239,123,168, 84, 42,152,210, 8, + 20, 93,162, 73, 41, 77,100, 89,118, 13,195,144,177,132, 16, 4, 6,214,126,177,124,249,242,146,246,244,210, 5, 6,214,126,193, +178, 76, 85, 74, 41, 8, 97,214,242,188, 49,177, 36,206,210, 26, 70,169, 84, 54, 5, 0,156,157, 93,158,159, 56,113, 66,215,183, +111, 95, 44, 94,188, 88, 50,109,218,180,201, 94, 94, 94,227,162,162,162, 18, 74, 11,103,254,241,116, 39, 39, 39,229,198,141, 27, +125, 71,143, 30,125, 55, 46, 46,110, 58, 0,184,186,186,206, 7,224, 15,224, 85,145,115, 88,183,110,119,236,136, 17, 35, 34, 18, + 19, 19,167,151,198,217,135,144,234, 94, 53,107,182,157,119,241, 34,101,180, 90,146,114,233, 82, 86,114, 98,162, 33, 50, 57, 89, +185,249,246,237,110, 51,231,207, 23,123,120,122, 34,228,200, 17,251, 20,149, 42, 57, 83,171,213, 36, 38, 38, 82,142,227,174,154, + 16,247, 0, 71, 7, 71,229,250,159,215,222,178, 16,179,188,163,187, 27, 17,219,218,138, 24,165,165,148, 21, 49,218,170, 85,124, +164, 0, 2,202,203, 35,137, 68,242, 73,199,142, 29,149,187,119,239, 38,129,129,129,176,182,182,198,165, 75,151,112,239,222, 61, +164,167,167, 51, 6,131, 1,141, 26, 53,194,194,133, 11,225,233,233,137,140,140, 12, 68, 71, 71,219, 75,165, 82,135, 50,210,243, +141,242, 52,101,202, 20,184,184,184,128,227, 56,164,165,165,129,227, 56,152,155,155, 3, 0, 98, 98, 98,112,228,200,225,114,203, +146,137, 34, 9, 31,126,248, 97, 54, 33,228, 81,113,139, 86, 69, 56,221,220,220,118, 37, 39,167,116,105,219,182, 45,210,211,211, + 13,115,231,206, 69,157, 58,117,224,235,235,107, 74,153,159, 46,147,201,126,245,242,242,250,121,252,248,241, 46,182,182,182,208, +106,181, 51, 19, 18, 18, 48,102,204, 24, 0, 64,215,174, 93,235,136,197,226, 19,195,135, 15,135,183,183,119,108, 90, 90, 90,244, +157, 59,119, 70,228,230,230,134, 86, 54,238, 38,166,143,192, 41,112, 10,156, 2,231,191,138,211, 84, 45,242,111, 68,254, 48,225, +134, 34,199, 27,222, 16, 90, 65, 65, 65, 36, 56, 56,152,154, 16,177, 84,119,119,119, 15,133, 66, 1, 0,169, 21, 13,136,209,104, + 28,103,111,111,159, 52,125,250,244,230,190,190,190,186,113,227,198,133,190,124,249,114, 70,209,107,188,189,189,127, 92,181,106, + 21, 34, 34, 34, 94,205,159, 63,255,114, 74, 74,202,247, 21,140,236, 52, 66,200,242,124,235, 88,202,145, 35, 71,234, 92,188,120, +113,236,178,101,203, 28,190,248,226, 11,201, 87, 95,125, 53, 24,192,226,242,120, 88,150, 85,149, 52, 92, 88, 18, 92, 92, 92,116, + 37,205,225, 42, 64,119, 66, 20,150, 82,105,155,121, 23, 47, 82,221,171, 87,170,223,150, 46,181, 88,127,243,230, 28, 3,165, 78, +142,142,142,104,209,172, 89,142,156,101, 83,146, 18, 18,120,199,234,213,217,151, 39, 78,216,171,165,210,184,221,187,119,103,166, +166,166, 30, 42,215,132, 71, 72, 22, 79,169,206,220,221,211,208,183,103,135,192, 91, 55,238, 61,182,112,180,103,234,215, 11,172, +243, 56,226,213, 29,240,188,158, 16,146, 85, 30,143,149,149,149,111,106,106, 42,178,178,178,224,224,224,128,229,203,151,195,217, +217, 25, 42,149, 10, 97, 97, 97,212,221,221,157, 92,188,120, 17,238,238,238, 72, 78, 78,134, 78,167, 67,118,118,118,146, 86,171, + 85,151, 38,124, 69, 34,209,239, 12, 67,134, 17, 66, 80,181,106,181,168,213,171, 87,235,120,158, 71,173, 90,181,208,171, 87, 47, + 28, 56,112, 0, 97, 97, 97, 5,150, 39,157,151, 87,149, 40,134, 33, 94,249, 90,169,210, 86,157,130,173,125, 98, 99, 99,123, 87, +202, 44, 74, 8,227,234,234, 58,216,199,199,103,236,160, 65,131, 12, 82,169, 20,185,185,185, 5,105, 97,232,210,165,107, 70,247, +238,221,172,130,131,131,203, 12,167, 86,171,125,238,228,228,244,249,215, 95,127,189,125,221,186,117, 54, 51,102,204, 0,207,243, +160,148,130,227,184,194, 77,191,121,158,199,193,131, 7, 17, 25, 25,249, 99, 81,145, 37, 64,128, 0, 1,255, 95, 80, 1, 45,242, +175, 67,145,185, 89, 40, 46,182,254,118,207,240, 44,203,174, 63,125,250,116,189,150, 45, 91,138,218,181,107, 23,232,238,238, 30, + 24, 19, 19, 19, 10, 0,238,238,238,129,157, 59,119, 14,116,116,116,196,138, 21, 43, 84, 44,203,174,175,164,178, 44,218,232,221, +117,113,113, 89,114,224,192,129, 69,163, 70,141,130,179,179,179,255,223, 29,103, 75,153,172,254,240,229,203, 57,177,193,192,252, +178,100,137,229,210,243,231, 23,237,217,187, 87,244,225,135, 31, 18, 74, 41, 30, 62,120,160, 88,184,114,165,114, 96,207,158,175, +158, 60,127,206, 29, 62,117,202,144, 24, 27,155, 22,155,156, 60,155, 82,154, 86, 30,191,193, 96,184,246,244,233, 83,215, 22,173, + 62,116,187,112, 51,244, 94,223,158, 93,219,138, 69, 12,121,246, 42,230,182,139,179,189, 85,200,249,179,106,131,193,112,173, 60, +158,220,220,220,151, 28,199,217, 82, 74, 29, 66, 66, 66,224,224,224,128,244,244,116, 24, 12, 6,232,116, 58,157, 74,165,146,167, +166,166, 66,163,209, 64,171,213,194,210,210, 18, 15, 31, 62, 76,228, 56,238,143,210, 56, 57,142, 27, 46,151,203,191, 23,139,197, + 82,137, 68, 18,119,251,246,109,100,101,101, 85,177,182,182, 94,204,113, 28,226,226,226,112,241,226,197,111, 44, 45, 45, 95, 1, +128, 92, 46,135, 84, 42,179,211,106,181, 92,105,147,225, 77,181,104, 85, 22, 46, 46, 46,158, 85,171, 86,157, 55,117,234,148, 90, +117,235,214, 67,114,114, 50,120,158,135,153,153, 25, 84, 42, 21, 44, 45, 45,209,180,105,211,151,243,230,205,139,167, 20, 35,203, + 19,131,137,137,137,201,110,110,110,227, 70,141, 26,245,189,175,175,111, 85, 74, 41,124,124,124,208,177, 99, 71,156, 56,113, 2, + 17, 17, 17,200,205,205, 53, 94,191,126,125,103, 92, 92,220, 81,161,186, 21, 32, 64,128,128,255,158, 78, 44,152,155, 85,212,154, +245,143, 8,173,196,196,196,100,119,119,247,147,119,238,220,233,214,191,127,127,132,132,132, 12, 5,240, 53, 0,200,100,178,161, +253,251,247,199,157, 59,119,240,248,241,227,147,137,137,137,201,239,226,153, 82,169, 84,163,211,229, 25,167,228,114,185,188,130, +183, 87,201, 31, 50, 4,128, 42,101,156, 43, 21,140, 72,228, 82,187,115,103, 81,250,189,123, 89, 27,111,220,248,126,251,246,237, +162,230,205,155, 19,131, 94, 15, 35,207,163, 90,181,106,164, 93,251,246,102,191,111,223,110,107,204,205,189,248,195,212,169,151, + 54, 12, 31,158, 19, 65,233, 43, 83, 2,168,213,106, 87,142, 29,243,121,251,243, 33,151,220,252,107, 86,183, 61,121,250,252, 93, + 59, 59, 43,165,111,141, 26,102,169,233,105,198, 25,211,190, 17,105,181,218, 95,202,227, 81,171,213, 7,207,158, 61,219,211,195, +195,195, 33, 52, 52, 20, 58,157, 14, 70,163, 17,237,218,181, 3,165, 84, 6,128, 23,137, 68,120,252,248, 49,244,122,125,210,211, +167, 79,227,158, 61,123, 38, 3,176,160, 44, 94,141, 70, 19, 85,244,216,195,195,163, 67, 80, 80, 16, 56,142, 67,231,206,157,113, +248,240,225, 14,225,225,225, 75,139,106,190,183,205,243,124, 11, 89, 45, 55, 55,183, 3,249,167, 76,154, 4,239,238,238, 30,232, +227,227,179,110,193,130, 5, 18,119,119,119, 80, 74, 97, 99, 99, 13,149, 74,133,148,148, 84,248,251,251,195,195,195, 3, 11, 22, + 44, 0,128,157,166, 90,220, 98, 99, 99,159, 1,232,239,239,239, 47,201,200,200,104,216,161, 67,135, 21,237,219,183,199,221,187, +119,113,233,210,165,129, 50,153, 44, 73,175,215,115, 46, 46, 46, 35, 9, 33,150,122,189,126, 71, 74, 74, 74,188, 80,119, 9, 16, + 32, 64,192,127, 2, 5,115,180, 10,189,196, 87,216,162,229,239,239,111,150,153,153,249,105,149, 42, 85,164, 0,160, 80, 40,252, +171, 87,175, 62, 57, 50, 50, 50,187,162,161, 81,169, 84,123,182,111,223,222,241,231,159,127,150,116,237,218,181,186,187,187,123, + 99, 0,232,221,187,119,117, 11, 11, 11,108,223,190, 93,175, 82,169,222,153, 79, 36,131,193,208,178, 81,163, 70, 72, 75, 75,195, +171, 87,175, 42, 52, 44,115,244,232, 81, 37,242,230,101,149,121,174, 44,112, 58,157,141,181,155, 27, 19,123,254,188, 62, 45, 43, +203,165,101,171, 86,196,160,215,131, 97, 24,164,166,166, 34, 58, 58, 26, 86,214,214,228,241,211,167,230,155,166, 76, 57, 90,165, +110, 93,169, 81,167,179,171,128,168,200, 37,132, 12,251,114,220, 23, 7,119,236,216,233,144,145,149, 21,169, 80, 40,181, 50,153, +196,121,252,151, 95, 26,211,210,210,134, 80, 74,115, 76,160, 90,176, 99,199,142,206,157, 59,119,126,224,233,233,233,152,156,156, +236,156,145,145, 97, 76, 75, 75, 99,145, 55,215,138, 0,192,249,243,231,145,149,149,197, 25,141,198,139, 0,230, 81, 74,117,166, +134,181, 74,149, 42, 86, 77,154, 52,105,237,224,224,128,204,204, 76,216,217,217,161, 94,189,122,173,171, 84,169,242,235,171, 87, +175, 50,223,101,169, 63,115,230,140, 5,165,244, 3, 74, 41, 58,119,238,108,210, 61, 70,163,241,179,160,160, 32, 9, 33, 4,106, +181, 10,114,185, 2,102,102,230,176,176,176,132,175,175, 31,226,226,226,208,169, 83, 39, 93,100,100,228,154,248,248,248, 10,151, +209,204,204,204, 30, 77,155, 54,157, 52,102,204, 24,112, 28,135, 30, 61,122,224,245,235,215, 75, 95,190,124,185,219,213,213,117, +240,103,159,125,230, 96,103,103,135, 73,147, 38, 41, 0,124, 39,212, 93, 2, 4, 8, 16,240,239, 71,241, 57, 90, 37, 90,180,202, + 26, 19,117,113,113,105, 97,107,107, 59, 83,173, 86, 75, 11,134,100, 8, 33, 82, 7, 7,135,195,174,174,174,243,227,226,226, 42, + 52, 41, 46, 61, 61, 61,203,197,197,229,240,181,107,215,250,245,238,221, 27,103,206,156, 25,146, 47,180,112,237,218, 53,188,120, +241,226,112,122,122,122,214,187,136,188,187,187,123,151,214,173, 91,247,110,212,168, 17,142, 29, 59, 6,163,209,120,181, 34,247, + 23, 93, 97,136, 18, 86, 29, 22,156, 51,137,140,101, 65, 8, 1,199,113, 0,128,148,228,100, 68, 60,121,130,180,244,116,104, 53, + 26,228,170, 84, 70, 95,111,111,117,166, 78, 39, 38, 0,173, 96, 38, 71,153,155,155, 71,171,114,115, 29,237,108,108,213, 74,165, + 12, 25, 89,153,146,219,183,174,231, 80, 74, 35, 77,228,208, 17, 66, 90,157, 56,113, 98, 54,203,178,253,205,205,205, 49,118,236, + 88,182,117,235,214,144, 72, 36,208,106,181,200,200,200,192,246,237,219,147, 57,142,171,154, 95, 14,204,205,204,204,182,176, 44, + 27,147,149,149, 53,179,188,103,232,116,186,174,221,186,117, 19,233,116, 58,252,240,195, 15,152, 51,103, 14, 58,119,238, 44,186, +117,235, 86, 87, 0, 59,222, 85,161,231,121, 30, 29, 58,116, 40, 58, 25,254,145, 41,247,137,197,226,192, 26, 53,106, 32, 57, 57, + 25,201,201,201,112,112,112,128,171,171, 43,156,157,157,177,116,233, 82,186, 98,197,138,147,122,189,126, 77,114,114,114, 98, 37, +202,226,200,161, 67,135,142,236,215,175, 31,114,114,114,112,237,218, 53, 52,107,214, 12,139, 22, 45,114,185,120,241,226,215,141, + 26, 53,130, 88, 44, 70, 72, 72, 8, 56,142,123, 45, 84, 93, 2, 4, 8,248,255,134,255,226,252,172,242, 80,166, 69,203,211,211, +211,218,104, 52,126,211,189,123,247, 14, 61,123,246, 68,167, 78,157,222,248,127,199,142, 29, 22,251,247,239,159,239,225,225,209, + 89,175,215, 47,168,200, 80, 31,207,243, 7,119,236,216,209,245,195, 15, 63, 84,182,105,211,166, 26, 0,200,100, 50,221,142, 29, + 59, 84, 60,207, 31,172,104, 68,138, 59,143,116,115,115,171, 35, 18,137,122,119,235,214,173,206,176, 97,195, 16, 22, 22,134,237, +219,183, 63,243,245,245,189, 92, 65,234, 87,229,172, 58,156, 95,158,117,139,149, 74, 83, 51, 18, 18,172,205, 61, 61,197, 54, 22, + 22,241,199,142, 29,243,104,223,190, 61,121,253,250, 53,210,211,211,161,209,104,112,235,214, 45, 94, 4, 68,137,108,108, 72,212, +181,107,132,149, 74, 43,188,216,192,195,197,198,103,214,180,209, 85, 52, 90, 77, 64,102,102, 38, 39, 18,139,197,238,206,214, 21, +106,176, 41,165, 90, 51, 51,179,134, 0, 68, 60,207,171,108,109,109,149,167, 79,159,134, 84, 42, 5, 33, 4,181,107,215,134, 92, + 46,151,152,153,153, 69, 3,128,179,179,179,116,253,250,245, 86,131, 7, 15,190, 84, 30,119,131, 6, 13,196,222,222,222, 31,249, +250,250,226,218,181,107, 8, 13, 13,141,186,118,237,154, 87,253,250,245,225,233,233,249, 81,131, 6, 13,246,222,185,115,199,240, +142,122, 23,149,154, 12,111, 52, 26,121, 66, 8, 24,134, 1,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252, +135,184,184,184, 35,149, 9,143,191,191,191,164, 94,189,122, 67,250,245,235,135,231,207,159, 99,254,252,249, 41,241,241,241,231, + 79,157, 58,213,103,204,152, 49,108,179,102,205,144,154,154,138,223,127,255,157,187,125,251,246,111, 9, 9, 9, 91,133, 42, 87, +128, 0, 1, 2,222, 99,161,229,233,233,217, 79, 34,145, 76, 26, 48, 96, 0,235,231,231,135,196,196, 68, 88, 90, 90, 26, 8, 33, + 98, 0,176,182,182, 54, 40, 20, 10,140, 30, 61, 26,117,235,214,109, 49,101,202,148,102,110,110,110,171, 99, 99, 99,183,152,242, +224,196,196, 68,149,139,139,203,190,177, 99,199, 46,184,119,239,110, 85, 0,184,121,243,230,139,184,184,184,105,137,137,137,170, + 10,138,172, 2,167,152, 68,161, 80,220,240,241,241,121,217,165, 75, 23,203,158, 61,123,194,193,193, 1,119,238,220,193,194,133, + 11,159,234,116,186,217, 33, 33, 33,220,223,157,200,156, 86,155,112,251,208, 33,139,214, 31,127,108, 57, 62, 40,104,201, 23, 99, +199,254, 60,107,214, 44,145,159,159, 31, 81,169, 84,184,113,227, 6,221,191,127,191,225,247,239,191, 95, 14, 51, 51,241,181,253, +251,165, 58,157, 46,170,130,214,146, 86, 93, 59,183,242, 91,242,243, 74,104,212, 57,184,113, 53, 24,233,233,201, 88,191,225,128, +159,187,187,123,171,152,152,152, 11, 21, 72, 79,223, 51,103,206, 56, 82, 74, 33,149, 74, 49,111,222, 60,184,186,186,194,210,210, + 18,217,217,217,248,250,235,175,173, 38, 76,152, 96, 5, 0, 97, 97, 97,133,238, 25,202, 67, 92, 92, 92,211,209,163, 71, 91,112, + 28,135,147, 39, 79,234, 8, 33, 51,207,158, 61,251,107,237,218,181,165, 45, 90,180,176,216,186,117,107, 51, 0, 33,239, 74,104, + 85,242,190,103,167, 79,159,110,212,191,127,127, 42, 22,139, 73, 70, 70, 6,172,173,173,177,122,245,234,220,248,248,248,224, 74, +151, 1,142,147, 42,149, 74, 41,165, 20,251,246,237, 67, 84, 84,212,103, 41, 41, 41, 9, 78, 78, 78, 7,190,249,230,155,201,126, +126,126,222, 79,158, 60,137,202,206,206, 94,148,152,152,248, 82,168,154, 4, 8, 16, 32,224,191,131,130, 73,240, 21,242, 12,111, + 52, 26, 71,159, 58,117,138,229,121, 30, 27, 54,108,192,237,219,183,169, 82,169,156,169, 84, 42, 87, 41, 20, 10,163, 90,173, 30, + 53, 98,196,136,193,115,230,204, 97, 90,180,104,129,107,215,174, 49, 85,171, 86, 29, 2, 96, 75,145, 7,183, 47,203,215, 70,102, +102,230,173,196,196,132,170, 69, 28, 84, 86,149,201,228,183,202,137,204, 27,156, 37, 56,197,108, 50,111,222,188, 92, 23, 23, 23, + 93,104,104, 40,214,173, 91,199,223,190,125,251,188, 84, 42, 93, 31, 23, 23,167, 53,133,243, 29, 37,122, 33,167,148,227,238,108, +155, 60,185, 86,131, 30, 61,248,207, 39, 77,202,145, 40, 20, 95, 45, 89,185,114, 74, 70,118,182, 43, 8,161,118, 86, 86, 81, 27, +230,205,155,223,249,163,143,114,194, 46, 92,144,223, 59,115, 70,236, 96, 48,220,175, 72, 56, 99, 98, 98, 46,248, 84,247,196,230, +141, 63, 67,175,215, 34, 62, 54, 79,167,165,164,102,162, 44,145, 85, 18, 39,199,113,153,125,250,244,145, 0, 80,124,242,201, 39, +210,164,164, 36, 84,175, 94, 29, 0,144,149,149,133,224,224, 96,212,172, 89, 19, 0,240,240,225,195,194,223,229,133,211,204,204, +236,163,102,205,154, 33, 42, 42, 10, 97, 97, 97,231,226,226,226, 82, 93, 93, 93,207,189,126,253,186,107,163, 70,141,112,240,224, +193,238,165, 9,173,138,230,145, 41, 66,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, +181, 3, 0,100,103,103,171, 40,165,198,202,112, 22, 13,147,193, 96, 0,207,243,176,181,181,205,205,239,112,188, 68, 57,142,100, +255,234,242, 41,112, 10,156, 2,167,192,249,111,224,124, 79, 96,186,103,120, 74, 41,199,243, 60, 66, 66, 66,112,224,192, 1,163, + 94,175, 31, 25, 23, 23,247,176,200, 37, 43, 93, 93, 93,207,244,233,211,103,203,147, 39, 79,216,240,240,112,152,210, 16, 21,133, + 70,163, 49, 20,223,146, 88,163,209,188,245,208,209,230,205,155,145,144,144,160,127,253,250,245, 89,142,227, 14,190,229,234,197, +183, 94,117,248, 59,165,218,143, 9, 57, 59,167,121,243, 14,179,207,156,145,125,254,237,183,218,161,195,134,125, 99,212,233, 12, +172, 68,194, 75,205,204, 24,163, 76, 38, 14,187,112, 65,190, 98,204, 24, 91,181, 86,123,114, 91, 5, 38,152, 23,177,104, 97,232, +231, 19,161, 46, 98,209,186,118, 43, 2, 21,181,104,105, 52,154,128,124,209, 17, 13,192,249,211, 79, 63, 5,207,243, 80,171,213, +200,206,206, 70, 92, 92, 92,230,176, 97,195,140,249,226, 73,212,187,119,111, 75, 83,120,171, 85,171,230, 42, 22,139,113,242,228, + 73,136,197,226, 96, 0, 16,139,197,193,103,206,156,233, 58,112,224, 64,184,185,185, 85, 35,132, 16, 90,142, 74,114, 10,236,185, +135, 2, 62, 32,168,145,247,198,163,134, 99, 96,207, 7, 4,120,154,239, 53,254, 81,253,250,245, 1, 19,231,101, 21, 69,254,226, +142,229,246,246,246,123,167, 76,153, 50,182, 73,147, 38, 29,231,204,153, 67, 0,176,239,196,186,201,113,111,229,122, 66,128, 0, + 1, 2, 4,252,123,173, 90, 37,157, 23,149,113,195,134, 86,173, 90,141, 4,192, 18, 66,214,197,198,198, 62, 44,126, 77, 92, 92, + 92,132,155,155,219, 98,111,111,239,194,141,166, 43, 18,168,124, 79,238, 11, 25,134, 76,201, 59,174,184,131,202, 34, 91,157, 76, + 1, 64, 24,134,221,114,247,238,221,111,163,163,163,147, 43, 42,252, 74,194,187, 88,117, 8, 0, 59, 40,125, 57,144,144, 83,147, + 2, 3,219,119, 30, 51, 6,117, 58,119,182,116,245,242, 50,170,245,122,254,225,229,203,228,234,190,125,146,123,103,206,136,213, + 90,237,201, 3,148, 70, 87, 52,156, 49, 49, 49, 23,170, 87,115, 63,221,183,119,215,142,213,188, 93, 1, 0,207, 95,198, 33, 37, + 45,243,116, 69, 68, 86, 49,193,213, 99,245,234,213, 71, 36, 18,137,168,232, 86, 54,122,189, 62,173, 64,140, 17, 66, 92, 55,108, +216,176,139, 97,152,168,242,248,194,195,195, 15,207,158, 61,187,247,171, 87,175, 78, 71, 71, 71,191, 2,128,168,168,168, 87,174, +174,174, 91,226,227,227,123, 71, 69, 69,237,167, 38,168,144, 98,155, 74, 35,236,242, 94, 57,128,218, 5,155, 74, 87,118, 47,195, +162,200,119,173, 48,211,197,197,101, 71,199,142, 29, 71, 0,136,125, 27, 62,157, 78,103, 80,171,213,156,209,104, 20,233,245,122, +170,211,233, 12, 66,181, 36, 64,128, 0, 1, 21, 66, 35, 0, 5, 59,145, 20, 24, 80, 28,138,253,214, 33,127,187,192,130,234, 55, +255, 56, 25,192,173, 34, 28, 69,207,151,119, 47, 0,164, 0,120,144,127,174, 36, 45,178,161,180,227, 82,133, 86,108,108,236,126, +152,176,105,180,169,215,149, 33,148,166, 19, 66, 86, 20,136,166,183,229,224, 56,238,157,236, 15,199, 48,204,203,238,221,187, 87, +232,250,242,174,217, 69,105,212, 87,132,108, 61,246,203, 47,245, 78,174, 91,231,102,228, 56, 59, 2, 80, 86, 42, 77,213,233,116, +175, 28, 12,134,251, 21,181,100,189, 97,141,121, 30,211, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171,213, 27,148,210,251, + 0, 60,202,185, 38, 14, 64, 11, 19,197,224, 78, 0, 59, 75, 16,236,187, 0,236, 50,185,215, 80,176,169, 52,192,240,132,239, 27, +208,188,223, 62, 0,124,193,166,210,239, 18,241,241,241, 79,144,239,231,237,109,240,234,213, 43,173,183,183,247,182,133, 11, 23, +126,114,239,222,189,221,177,177,177, 90,161,206, 20, 32, 64,128,128,138,137, 44, 66,200,177,252,182,167, 91,126,103,255, 88,241, +223, 5,215, 20, 92, 87,244,154, 2,142,226,231,203,186, 23, 0,166, 77,155,246,237,252,249,243,149, 0, 76,218,140,185,168,227, + 82,209,191, 33,245,222,197,230,185,239,122, 3,222,152,152,152,141,127, 69, 92, 87,230, 9,169,235,127,101,122, 62,125,250,148, +188,207,111, 91,193,166,210, 69, 16,248, 95, 8,247,203,151, 47, 87,183,110,221,122,125,108,108, 44, 7, 1, 2, 4, 8, 16, 80, + 17, 56,148, 36,140, 74,209, 3,221,202,250,191,152, 32,250,211,117, 37, 29, 19, 66,142,205,159, 63,191,155,169,129, 45,106,209, + 98,132,188, 19, 32,224,239,195, 63,177,234, 85,128, 0, 1, 2, 4,148, 42,136,222,176, 98, 21,136,175,226,199,211,166, 77,251, + 22,165, 12, 27,230, 95,227, 66, 8, 25,153,191,234,240,141,249, 90, 4, 64,251, 82, 30,110,242,106, 2, 66, 72,251, 74, 68,238, +172,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,191, 56,203,227, 46,229,254,160,210,134,250,202, 26, 70, 44,254,187,188, +123, 77,184, 54,184,148,184,140, 44,186,215,225, 27,123, 30, 22, 76,114,254, 43, 62, 0,218, 11,156, 2,167,192, 41,112, 10,156, + 2,167,192, 41,112,190,229,167, 17,165, 52, 8,121,187,166, 80, 74,105, 16,165,180,243,180,105,211,166, 23,156,155, 54,109,218, +116, 74,105,187,130,235,242,175, 41,188,167,224, 92,241,239,226,231,202,185,182,180,244, 24, 89,244,119,209,227,127,197, 28, 45, + 1, 2, 4, 8, 16, 32, 64,128,128, 50,112, 11, 64,163, 34,214,166,100, 0, 15,231,207,159,159, 94,100,238, 84, 50,128,251, 0, +234,230, 95,151,156,111, 80, 42, 58,183, 74,151,127,172, 43,225, 26,157, 41,215,150, 98,133,219, 80,210,111, 0,130,208, 42, 13, +245, 92,216,239, 61,221, 29, 27, 22, 90,253,120, 30, 0,192,231,123, 31, 40,116, 67,192,243,160,148, 34, 46, 41,227,206,131, 68, + 58,171,178,207,243,115, 35,182,142,114,249,114,158,210,230,249,167, 46,100,166,106, 39,134,102,210, 12, 83, 57,106, 57,147, 90, +114, 6,223,240, 20,117, 0,128, 33,120,160,225,177,248, 81, 2,125,244,182,233, 65, 8, 33, 1, 14, 24, 41, 85, 40, 7, 88, 89, +219,212, 72, 79, 79,121,170,215,104,247,134, 39, 99, 61,173,132, 99,168,234,182,228, 3,158,226, 91, 0,140,152,193,210,136, 84, +122, 94, 40,117, 2, 4, 8,248,155,240,182,126,241, 74,114, 29,244,182,139,144, 4, 7,123,166,137,173,226,184,105,226,117,255, + 24, 42, 36,180, 2, 28,201, 24, 16,204, 5, 64, 65,241, 93, 88, 18, 93, 91,161,251, 93, 73,123, 57,203,110, 2,192,106,244,198, + 73,148,199,197, 18, 27,117, 6, 45,229, 18,118, 41, 0, 94, 99, 52, 14, 15,139, 51,125,190, 88,160, 59,233, 44,226,153,109, 60, +165, 98, 35, 79,183,128,226,152,185, 4, 87,174,197, 80, 77, 69,194,234,233,238,216,240,208,205,248,142,231,215,142, 71,147, 58, +213, 65,141, 28,192, 27,160,108,241, 13,206, 45,251, 20, 77,106,121,130,242, 6,128,231, 96,222,101, 9,186, 4, 90, 85,250, 37, +241,115, 35,182, 94,246,142,161, 27, 55,110,114,118,173,230, 79,120, 78,143, 39, 55, 79, 15,158, 48,101,118,219, 64, 43, 18,104, +138,216,170,235, 74, 62,175, 94,213,239,155,137,115,127,102, 93, 92, 61,204,120,131,150, 75,120,249,168,254,202, 69,179,247,215, +117, 37, 75,239,199,209, 77,166, 10, 42,127, 7,140, 18,201,164,253, 20,114,179, 26, 42, 85,246, 51,163,222,176, 55,208, 85,212, +121,241,146,229,245, 90,119,232,106,110,204, 78, 96, 12, 60,252,247,236,222,229,245,203,234, 53, 93, 9, 33, 31, 81, 74,249,138, +196,153,167,152, 18,177,117,100, 87,177,136, 37,181, 62,219,200,194,196, 37,179,197,225,239, 68, 6, 17, 90,190,123, 9, 74,112, + 41, 60,145,238,172,204, 51,106, 57,145, 95, 9,133, 47, 8,246, 17,138, 93, 97, 73, 52, 73,168,239, 4, 8,120,191,192, 48,204, +121,158,231,219,188, 75, 78, 66,200, 7,148,210,235, 66,234,254,255, 70,197, 44, 90, 4, 63,132, 69,190,182,129, 81,143, 0,223, +106,223, 3,168,144,208,146,179,236,150, 91, 79, 19,157,193,233,177,241,199,177,187,117, 6,128, 51,232, 97,228, 12, 48,114, 6, +112,156, 30, 70,131, 1,212,160,197,236,223,206, 3,186,108, 52, 12,244,217, 2,192,197,212,103,136, 41,179,237,206,229,211,182, + 68,151,137,157,107,231,127,249, 58, 57,231,203,179, 15,226, 82, 2,156,200,244,240, 36,252, 94, 17, 65,112,126,221,120,108, 63, + 24, 28,179,226,215,220,199, 60,165,176,181, 84,248, 13,238, 22,230,177,245,240,249,215,203,183,104, 30, 3,128,149,153,212,111, +200,131,167,158,111,147, 9,142,114,249,242,245,107,126,113,118,177, 83, 16,238,234, 2,112, 70, 35, 60,188,130,216,233,227, 6, +187,252,176,108,211, 50, 0, 67,203,186,191,166, 19,241,247,173, 94,107,210,150,224,171,158,185, 89, 73,186,211, 59,190,141,132, + 22, 6,103,183, 90,226,239,231,255,204,206,152, 58,254,235,154, 78,228,198,227, 68, 26, 94, 78,165,192,212,114,196,225,249, 11, +150,212,105,219,165,155, 57,159,147,204,106,114,115,124, 55,254,182,105,110,205, 58,141,149, 45, 2,221, 37, 73,123, 71, 19,117, +118, 26,244,140, 92,214, 54,160,189,165,250,147,129,134,141,155,183,143, 3,176,178, 66,221,193, 34,195,214, 60, 95,249,222, 37, +161,104,113,239,250,249, 81,198,184, 91,160, 70, 3, 96,212, 23,126,195,104, 0,229,243,190,155,140,254, 13, 40,193,135,151, 73, + 21, 48, 69,199,179,151,111,185, 36, 38,196, 55, 90,182,228,167,233,254,142,228, 4,140,216,246, 40, 13, 23, 42, 42, 48, 5, 8, + 16,240,239, 5, 33,132,163,148,138,222, 49,103, 87, 74,233,241,183,228,248, 6,192,231,249,135,155, 40,165,139,223, 65,184,220, + 1, 56,231, 31, 38, 80, 74, 99,132, 18,240, 86,233, 57,178,232,144,225,219,248,209,146,131,242,192,190,158, 0,160,168,104, 64, + 40, 32, 7, 97, 1, 67, 46,122,116,233, 0,123, 71,103,192,160, 2,244, 42,192,160, 6, 12,185,128, 65,141,148,248, 40, 64,159, + 11, 60, 63, 1,142, 82, 89,133, 99,172,205, 4, 34,246,162, 93,125, 79, 56, 88,201, 49,190,135,191,253,134,147, 17,155, 54,157, +126,210, 30,192, 0,147,194, 74, 41,154,212,174,129, 21,155,114, 31, 31,185,147,212, 9, 0,130,234,217,159,108,226,239,229,177, +124,139,230,113,240,131,180,206, 0,208, 37,208,234, 68, 99, 63, 23, 79,254, 45,172,190, 60,165, 45, 92,171,212, 32,198,123,235, +193,103,197, 32, 43, 75,141,152,151, 91, 97,227,214,128, 49,242,104, 85,222,253, 10, 22,211,190,154,177, 80,172,202, 74,212,241, +250,100,163, 3,155,206,138,164, 60, 65,236, 5,109, 14,159, 97,156, 56,242, 83,110,210,172, 31,167, 1, 24, 92,166,117,200, 17, +227,150, 46, 93, 94,187, 89,195,154,142, 9,251,199,147,156,244, 68,112,172, 82,214,227,195,102,176,246,241,231, 19, 67,150, 18, +105,181,246,176,182,171,134,216,171, 59,240,234,250, 1,210,188,126,111,217,239, 59, 37,159,148, 38,180,124, 28, 72,243, 78, 45, + 27,239,174,230,233,234, 66, 41, 15,158,167,160,188, 17,159,245,237,136,233,123,158,195,104, 52,162, 79,167,230,237, 22,142,106, + 75,121,158, 7,165, 60, 94, 39,164,170,254,184,241,184, 93,100, 26,189, 97,138,165,170,238, 7,109,154, 63,184,115,189,166, 33, +226, 40, 26, 14,158,255,152, 0,151,139,148,185,230,119, 79,253, 94, 19,248,173,178, 47, 15,169,229, 8,227,171,147, 11,224,217, +114, 36,187,126,231, 73,135,204,228,216, 33,251,183,174,233,187,118,253,250,237, 0, 70, 11, 85,140, 0, 1,239, 7, 40,165,239, + 92,108, 69, 69, 69,197,189,141,216,114,119,119,111, 9, 96, 81,193, 12, 13, 66,200, 34,111,111,239,217,255,235,168,190,209,215, +203, 52, 26,141,131, 99, 98, 98, 46,150,197,217,173, 91, 55, 87, 0,222, 69, 56,189, 9, 33,222, 37, 93,107,109,109,109,108,218, +180,233,171, 99,199,142,197, 9, 37,164,226,130,171, 50, 66,235,113,244,222,241,245,181,241, 57, 0,240,216,132, 66,251,198,144, +159,198, 96, 92,176,121,238,167, 11, 2,170,216, 34, 59, 87,135,211,183, 95,193,104, 52,192,200,113,249,150, 45, 14, 70,206,128, + 78,117,237,209, 84, 51, 26, 43,143, 61, 1,103,228,231,151,197, 89, 28,122,202, 15,170,215,190,255, 30,158,167, 82,153,152,201, +244,245,176,115,156,212,167, 46, 51,190, 71, 0,212,122,174,191,191, 19,249, 35, 60,145,110, 52,137,147,255,179,203, 35, 90,210, + 57, 35, 87,110,220,203,176, 70, 53, 25,216,173,131, 37,213,102,194,144,242, 28,217, 42, 3,158,167, 26,144,160,201,128,140,196, +155,196,201, 83,212,113,119,115, 81, 94,217, 61,245,165, 29,155, 37,114,100, 57,137,148,225, 96,228, 41, 75, 51,194,181,182, 53, + 59,136, 11,230,109,149, 21, 78,133,210,226,211,150, 29,131,172,162,119,140, 36, 10,223, 78,112,172,239,129,151, 23, 55, 35,233, +246, 49,164,198,189, 34,150,154, 12, 56,217, 85, 71,151,193, 3,176,120, 64, 35,100,103,101,131,141,143,180,146,138,101,214,165, +113, 82, 35, 6, 47, 93,248,163,139,136,101,242,210,179,224, 99, 52, 64,173,213, 2, 70, 14,114, 17, 15, 66, 11,254, 51,192,104, +208, 43,235,244,158, 58, 22,192,141,242,226, 30,158, 72,119, 6, 56,146, 22,224, 13, 53,169, 65, 13, 2, 92, 14, 75,162,133,226, +199,223,137, 12,106,208,105, 88, 11, 74,112,169, 50,121, 20,104,135,110, 13,189,205,205,204,178, 30, 35,102,223,151,136,132,156, + 58, 53,251, 28,131, 62, 27,167,220,176, 97, 67,119, 66,200,152,162,115,212,254,138, 77, 86, 5, 78,129,243,191,202,105,101,101, + 85,181, 74,149, 42,179, 13, 6, 67, 75,137, 68,226,164,215,235,193,243,124,130, 84, 42,189,244,234,213,171,121,153,153,153, 47, +254,109,113,127,240,224,129,201, 98,203, 20, 78,177, 88,140, 39, 79,158, 60, 51, 85,108, 21,231, 20,139,197,219, 46, 95,190,140, + 61,123,246, 0, 0, 34, 34, 34,224,227,227, 99, 86,210,189, 47, 95,190, 52,107,221,186,245, 54, 20,219,209,163, 56,231,195,135, + 15,171, 30, 61,122, 20,251,246,237, 3, 0, 60,121,242, 4,190,190,190, 37,134,231,242,229,203,236,199, 31,127, 92, 21, 64,220, + 95,157, 71,239,131,200, 42,250,253,134,208, 10, 14, 14,166, 65, 65, 65,164,248,239, 18,240,220,211, 70, 90, 31, 26, 35, 0, 60, +175,104, 32,194, 19,232,194,186, 46,226,206,231,246,173,110, 41,151, 48,152,179,113,210,235,228,180,236, 15, 68, 4, 60, 0,112, + 20,140,141,185,244,218,252, 33,117, 61,211,115, 52, 56,114, 51,246, 98, 88, 98,197, 76,164, 97,113,244, 12, 0,235,255, 53,148, +196,119,200,226, 51,187,118, 77,235, 92,103, 98,143, 58, 56,124,245,213, 68, 0,229,122,125,167, 60, 15,202,115,133,147,223,243, +187, 14, 0,255,230,166,192, 60,104,222, 57,190, 98, 22,173,214,132,136,210, 29,209,197, 86, 41, 93, 53,106,212, 8, 75, 67,242, + 83,164,233, 36,120,157,174, 65,130, 90,140, 28,145, 35, 98, 31, 63, 52, 50, 4,103,202,207, 92,100, 81, 78, 99,109, 35, 53,103, + 2, 59,140,117,203, 58,249,109,186,148,112,172,101,175, 31,172, 83,206,253,252,138,203, 77,206, 37, 4,229,238,173,103,101,101, +237,163, 73,125,197,102,166,167,192,218, 57, 0,157,251,119,195,119, 65,254,200,206,202, 69,114,218, 53, 90,195,197,146, 68, 93, +218,142, 25, 93,106, 33, 53, 49, 30, 90, 3, 64,114,181,105, 26,157, 38,167,212,116,100,176,126,194,228, 41,131,188, 92, 28,204, + 10, 22, 21, 80,222,136,186,181,170,161, 67,203, 38, 56,115,249, 10,110, 61,140, 0,159,191,168,128,242, 60, 98,146,210, 19, 53, +122,227,230, 10, 37,168,145, 3, 53,104, 74, 20, 98,168,196,144, 97,109, 39,162, 52, 2,179, 62,168, 97, 49,124, 90, 55, 47, 11, + 51, 25,129,198, 96,132, 70,103, 64,246,149, 85,176,171, 82, 27, 74,185,156,212,135, 90, 4, 64,216,183, 80,128,128, 34,232,215, +175,159, 60, 49, 49, 49, 36, 40, 40,200,191, 67,135, 14,202, 22, 45, 90, 32, 55, 55, 23,167, 79,159, 70,110,110,174,151,135,135, +135,215,233,211,167,123,127,240,193, 7,225,238,238,238,173,247,238,221, 91,145, 57,180, 34,252,111, 50, 59, 15,128, 35,132, 32, +255, 28, 1,192,191,205, 62,183, 82,169, 20, 81, 81, 81,239,220,178, 21, 27, 27,251,172, 50,150,173,156,156, 28,137,155,155, 27, + 28, 28, 28, 96, 52, 26,145,155,155,139, 67,135, 14, 33, 51, 51, 19, 60,207, 67,161, 80,224,135,165, 27,241,248,110, 8,110,220, +184,129,204,204, 76, 73,121,156, 49, 49, 49,164,110,221,186,208,106,181,224, 56, 14, 26,141, 6,103,207,158, 45, 60, 22,137, 68, +152,242,253, 50, 68,220, 14,193,189,123,247, 16, 19, 19,243,183,236, 54, 82, 1, 45,242,111,180,134,110, 40,171,192,254,173, 48, + 26,185,233, 27,182,236,186, 54,125,244, 0,140, 27,216,222, 99,222,234, 3,237,195,147,233, 22, 0,240,119, 32, 67, 62,105, 83, +195,211, 90, 41,198,119, 59,110, 3,148, 78,127,219,231,133,166,210,136, 0,103, 50,241,224,141,168,144,111, 7,212, 71, 53, 23, + 75,159,234,213,137, 52, 50,210,132, 61, 5,121, 14, 54,230, 50,191,160,122,246, 39,193,243,176,182,144,213,132,145,131,181,185, +204,175, 75,160,213, 9, 0,176, 86, 74,106,150,100,249, 42, 13,141, 60, 37, 35,149, 50,209, 72,179, 6, 46,158, 67,187,119, 80, +116,237,222, 91, 97, 46,230,144,122,227, 52,178,196,238, 48,216,122, 65,107, 72, 67,204,139, 72,227,185,235,143, 98, 83,178,181, +147,202, 13, 38,197,197,216, 23, 79, 28,170,214,233, 96,147,114,108, 70, 82,213, 97, 59,188, 25,240, 76,246,246, 94,137,102,142, +141, 21, 55,159,191,200,225,233,159, 45, 58,197,145,149,153,249,202, 96,132,139,218, 40,178,136, 60,255, 59,166,117,169,141,244, +180, 36,104,244, 28, 50,213,156,222,217, 90, 46,211,190, 8,133, 86,207, 65,103,224, 33,182,118,195,233,107, 15, 83,120,131,225, + 68,105,156,145, 41,244, 30, 0,243,162,231,170, 59,144,186, 83, 45, 21,247, 96, 80, 35, 42, 38, 14, 91,130,175,213,207,191,174, +242,133,156,231,242,134,159,139, 88,178, 8, 69,139,202, 76,130,175,229, 68, 26, 43,228,146, 95, 22, 77,252,216,255, 67, 95, 91, + 25, 31,115, 13,132,215,195,204, 40,130, 90,106,132,149, 71, 53,240,186,108,170,210,104, 50,194, 0,193,211,187, 0, 1, 69, 80, +179,102, 77,103, 43, 43,171,176,201,147, 39,219,246,234,213, 11, 7, 15, 30, 68, 86, 86, 22, 54,111,222,140,229,203,151, 99,238, +220,185, 48, 24, 12,216,176, 97,131,114,255,254,253,141,215,172, 89, 19,227,229,229, 21, 16, 21, 21,149, 80, 94,159, 18,128, 12, +128, 56,191,237, 34, 0,248,227,199,143,163,107,215,174, 56,126,252, 56,159,127,206, 72, 8, 49, 80, 74, 43,181,159,168, 84, 42, +133, 84, 42, 69,102,102,230, 59, 17, 91, 98,177, 24,230,230,230,144, 74,165,200,206,206,174,176,216,226, 56,142,141,137,137, 65, +102,102, 38, 58,116,239,142,101,243,231,163, 77,155, 54,232,208,161, 3, 40,165, 56,123,246, 44,218, 55, 11,196,128,143, 90,227, +209,163, 71,224, 56,206,164,240, 38, 36, 36, 32, 49, 49, 17,157,187,119,199,198, 53,107,208,164, 73, 19,248,249,249,129,227, 56, +132,132,132,160,111,167,102,144,247,108,143,136,136, 8,161, 80,155,104,205,122, 87,115,180,222, 26,161, 73,244,186,191, 3, 57, + 54,176, 83,227,110,221,155,251, 99,227,238,115, 63,250,251,147, 93, 0, 96,103, 33,251,225,211, 54,213, 16, 30,157,142,115,247, +226,142,133, 39,191,155,213, 26,188, 17,246,118,150, 74,128,149, 66,173,231, 57,203,231, 40,119, 2, 51, 79, 41,148, 45,167,226, +147,238,225, 30, 77,252, 61, 60, 10, 86, 29,154,119,253, 25, 67, 30, 62,243,108,228,231,236, 9,163, 1, 48, 26, 96, 57, 96, 7, +240,189, 89,185,225,104, 94, 85,118,102,234,164,137, 77,187,244,236,175,144, 42,173, 96,204,122, 13, 67,194, 67,164, 62,189,136, + 92,165, 15, 18,162,158, 99,207,169, 27,153, 79, 99, 82,179, 24, 6,167, 19, 51,181,223, 68,166,209,156,242,120, 53, 6,204,159, + 61, 99, 82,208,158, 93,187, 45,100,213,154,147,200, 85, 93, 51,165, 34, 78,230,224,221,128, 81,201,237,233, 79,155,119, 91,230, +234,176,160, 60, 30, 85,110,214,129,179,167, 79, 14,168, 81,181,185,197,203, 91,193, 80,107,180,208, 26,128,128,198,173, 97, 52, + 82, 41, 97, 8,111,201,178, 36, 41, 53, 29,196, 96, 76,188,116,255,101,252,229,251,207, 89,173, 69,249,220,111,168,123,194,126, +213,189,117, 61,192,160,198, 71, 45,107, 99,217,246,115, 95, 2, 24,246,118,153,156,103,209,162, 64,243, 0, 71,178, 14, 64,243, +219,135,150,215,108,216,115, 2, 42, 98,209, 10,116, 32, 93, 2,171,187,254,190,236,135,169,182,118,238, 62, 44,225, 13,160,206, +117,128,172, 24, 74, 98,174,193,202,173, 9,140,174,205,176, 97,229,146, 28,158,167,187, 42,227,218, 66,128,128,247, 25, 26,141, +230,192,194,133, 11,109,187,117,235, 86, 96,145,193,181,107,215,176,105,211, 38,152,153,189, 89, 79,118,237,218, 21,148, 82,219, + 57,115,230, 28, 0,240, 97,105,156,205,154, 53,235,190,114,229,202,184,122,245,234, 61,207, 23, 91, 18, 0, 76,104,104, 40,243, +250,245,107, 98, 99, 99, 67, 93, 93, 93, 13,113,113,113, 60, 0,227,103,159,125,198,154,155,155,215,200,201,201,185, 80, 89,161, + 37,149, 74,223,201,156, 45,177, 88, 12, 66, 8,164, 82, 41, 36, 18, 9, 40,165, 21, 18, 91, 70,163, 81,116,252,248,113,220,190, +125, 27,115,235,213,195, 68, 55, 55,216,218,218, 34, 36, 36, 4,148, 82,152,153,153, 33, 45, 45, 13,187,118,237, 66,219,182,109, +193,113,156,196, 20,222,125,251,246,225,206,157, 59,248,190, 97, 67, 76,180,178,130,185,185, 57,206,158,205, 27, 13,148,201,100, +136,138,138,194,217,179,103,209,186,117,107,161, 80,191, 37, 76, 46, 60,173, 9, 17, 17, 39, 56,235,117,106, 80,142, 2, 4,174, +254,254, 68, 18, 30, 78,245, 21,125, 40,195, 96,198,202, 45,199,130,126,158,208,157,140,236, 81,223,117,222,239,231,199, 0,192, +240, 62,190,110, 74,153, 8, 43, 14,135, 83,134,193,140,119, 17, 65,127,127, 34, 97, 24,140,233,208,196, 15,113, 25, 58, 68,198, +101,252, 17, 78,169, 73, 67, 61,231,126,254, 4, 91,143,132,188, 94,190, 85,243,152, 82, 10,107,115,153,223,144, 7,145,158,191, + 31,191, 19,189,116,143,230, 49,229, 41,172,149,226,154,195, 30, 53, 43,119,213, 97, 35, 79,201,200,233, 83,191,105,214, 99,216, +100, 57,247,120, 47,116,145,167,192,235,213,200,210, 75,144,193, 58, 35, 38, 58, 26, 63,109, 56,246, 58, 43, 87, 55, 32, 52,169, + 98, 2, 51, 34,133,230,248, 59,144, 94, 63,125,247,237,153,249, 63,204, 49, 87, 63, 15,201, 97, 9,167,102,171,180, 18,253, 48, +247,103,146,173,213,245,143, 76,163,217,229,241,104, 45,176, 96,225,210,149, 65, 35, 6,247,126,236,235,211,202,206, 24,247,194, + 78,147,149,149,180,227,228, 29,231,252,158, 34, 1,128,200,152, 84, 36,103,230,114, 70,206,112,193, 66,140,121, 97,166, 88, 7, +243, 81,205,137, 56,244,106, 81,231, 99, 7, 11, 9,212, 57, 25,112,180, 16,163, 83,147,234, 31, 87,115, 34, 83,159, 39,210,228, +202, 11, 45, 3,168, 65,141,235, 11,218,214,164, 70, 67, 77, 24, 13,208, 63,216, 86,113,203, 24,193,196,113, 45,205, 45,109,116, + 47, 25,228,154, 1, 10,123, 16, 75, 47,192,202,155,136,107,245, 71,220,243, 48,238,203,143, 7,167,190,120, 21,243,171,189, 2, +139,133, 42, 68,128,128, 55, 17, 21, 21,245,233,244,233,211, 47, 55,105,210,196,201,222,222, 30,181,107,215,198,145, 35, 71, 48, +121,242,228,194,107,234,213,171, 7, 74, 41,210,210,210,176,112,225,194,132,184,184,184, 79,203,226, 12, 11, 11,123,188,117,235, +214,150,254,254,254,122,137, 68,146, 1, 64,150,145,145, 33, 79, 75, 75, 35, 26,141, 6, 60,207,243, 86, 86, 86,198,184,184, 56, +195,128, 1, 3,180, 87,175, 94,173,158,155,155, 27,245, 54, 22, 45, 15, 15,143,208,212,212,212, 76, 66,200, 91,187,126, 40, 16, + 89,246,246,246, 14, 57, 57, 57, 60,128,244,202,184,126,224, 56, 14, 13, 27, 54,196,169,139,119,113,252,220, 85,100,197, 61,193, +152, 17,159,162,118,237,218, 56,117,234, 84,165,243,172,110,221,186, 56,121,246, 50, 46,223,190,143,168,136, 7,248,114,204, 8, + 4, 4, 4,224,228,201,147, 66,129, 54, 29,193,197,230,102, 5, 23, 23, 90,173,131,131,131, 11,122,230,127,146,175,181, 28, 72, + 93,215, 26,210,109,115,186, 84,175, 37,238, 48, 7, 68,172,192, 94,159,147,205,102,252,180,234,113,109, 39, 50,248, 97, 98,249, +171,195,222,176,106, 37,210,176, 0, 71,178,243,254,163,154, 31,127,212,196, 3, 27,143, 40,103, 1, 64,255, 22, 85,113,243,105, + 50,110, 68, 36,237, 12, 75,162, 97,111, 27,235,218, 78, 68, 9,138,157, 11,191,234,209,218,203,221, 25,155, 14, 94, 6, 33, 56, + 96, 82,131, 75, 41,109,226,239,133,229, 91,139,175, 48,116,246, 92,186, 71,243,248, 84,104, 86, 23, 0,232, 88,203,236, 68,163, +234, 54,158,229, 89, 54, 20, 82,209,168, 46,189, 63,145,115, 17, 71,128, 87,103, 65, 56, 45,212,122, 30,241, 41,217, 80, 89,121, + 32,228,218,125,117,166, 70, 55, 33, 44,169,114, 86,188,240,100,250,188,158, 11,137,206,201, 85,187, 40, 29,170,107, 88,134,231, +115,180, 20, 55,195, 95,101,133,197,211, 39,166,112, 68, 70, 82,221,135,238,164,197,186, 45,123,102,139, 37,210,254, 44, 1,113, +180, 54,115, 88,247,243,247,176,176, 48, 7,175,203, 1,114,147,209,235,139,159,146, 31,198,234,171, 2,128,175, 61, 49,111, 89, + 77,178, 69,196,144,152, 63,158,233,102,150,107, 94, 53, 96,244,224, 78,245,196,188, 46, 23, 95, 45,220,141,245, 83,123,224,147, +118,181,196,193, 87, 34, 70, 3,152, 87,217,188,166, 70, 14,212,160,198,135,223, 94,124, 76,128,203, 20,104,126,123,207, 15, 53, +129,187, 38,115, 52, 32, 68, 44,114, 33,181,234,120,154, 73,248,152, 43,224, 99,174, 80,214,163, 25,136,103, 75, 66,156, 27,210, + 95, 22,205,205,221,184,113,211,105,158,193,119,229,185,202, 16, 32,224,255, 43, 40,165,207,173,173,173, 59,119,237,218,245,220, +169, 83,167,108, 3, 3, 3, 1, 0,183,111,223, 6, 0, 52,108,216, 16,190,190,190, 72, 76, 76,196,192,129, 3, 83,226,227,227, + 59, 83, 74,203,156,243,155,157,157,253, 98,223,190,125, 78,185,185,185,245,102,206,156,153,228,229,229,149,165,209,104, 72, 70, + 70, 6,207,113, 28,108,108,108,164,245,234,213, 67,211,166, 77,115,174, 93,187, 86,229,245,235,215,217, 0, 94, 85, 38,252, 61, +122,244,192,197,139,121,139,246,222,133, 95, 45,137, 68,130,192,192, 64,183,231,207,159,199,230,167,207,245, 74,164,105,225,239, +251,247,239,227,194,221, 24,136,116,106, 72,147,227,112,253,224, 62,116, 31, 53, 22, 28, 87,249, 89, 12,247,239,223,199,161,179, +215, 97, 38, 19,225,201,147, 48,236,219,183, 15, 99,198,140,121, 43,206, 74,162, 76, 45,242, 47, 47,247,241, 0, 54,148,106,209, + 10, 10, 10,186,128, 18,188,218, 86,175, 78,164,178, 28,204,233,212,208,109, 74,255,230,213, 89, 67, 86, 28,120, 35, 15, 86, 12, + 56,218, 91, 98,219,182,157, 85,119,238,222,125,173,174,155,120, 37,207,113, 51, 30, 38, 82, 85, 5,194, 53,231,231,221,151,251, +111,155,212, 90, 52,166, 75, 77, 91, 0,144,136, 24,172, 56, 18,198, 1,152,243, 54, 17,254,208,157,200,115, 12, 24,233,108,103, + 53,107,250,231, 65,182,173, 27,250,226,194,141, 80,172,220,119,237,162, 52, 9, 91, 77, 78, 56,222,128,226,250,169,164, 85,135, +224,203,159,119,105, 52, 82,103,137,153, 13,244,175,206, 3,122, 13, 52, 90, 61, 94,167, 26,241, 58, 77, 3,145, 82,130,219, 17, + 49,106,187, 4, 28,171,108,156, 9, 33,164,121, 53,185,235,236, 31,151,186,107,212, 57, 92, 86,122, 10, 39,145, 94, 23, 43, 21, +178,248,138,240, 92,139,161,154, 86, 85, 37, 13, 0,158,149,202,169,234,219,175,135,154,197,134,159, 66, 13, 38, 14,132, 82, 40, +106, 5,193, 66,193, 74, 90,120, 75,162, 1,192,219,217, 74,186,240,187,201, 86, 19,166,126, 87,238, 28, 48,127, 66, 36,181, 27, + 57, 79, 8,244,178,193,197, 59,143,113,241, 97, 84,216,197,219, 79, 2,218,212,118,133,175,187,245,120,127, 66, 22,132,211,138, + 91, 72,243, 50,134, 3, 12,154,194, 85,135,254, 78,100, 80,163,254, 51, 75, 92,109, 88, 26,188, 1, 62,194, 72, 65, 88, 22, 32, + 76,222, 10,200,215, 87, 32,178,174, 70,119,238, 57,164,218,180,105,235,247,225,201, 84,176, 98, 9, 16, 80, 14, 50, 50, 50, 30, + 40,149,202, 78,117,234,212,217,252,213, 87, 95, 89, 12, 30, 60,216,117,196,136, 17, 12, 0, 36, 38, 38,242,203,151, 47,143,251, +229,151, 95, 50, 83, 82, 82,134,233,245,250,135,166,116,124, 9, 33, 87,127,253,245,215,228, 75,151, 46, 5, 52,110,220, 88,214, +160, 65, 3,222,198,198, 70, 36,147,201,140, 58,157, 78, 19, 17, 17, 97,124,254,252,185, 75, 70, 70,198, 51, 0,145,149, 25,214, +207,183, 94,205, 99, 89,118, 54,165, 52,240, 93,204,209, 82, 42,149,174, 0,158, 17, 66,106, 84,116,216,240, 79, 13,182, 72,132, +244,244,116,168, 18,194, 32,143,121,138, 58,102, 12,252,109,204, 97,105,105,249, 86,162, 40, 51, 51, 19,200,141,197,229,203,247, + 1,142,131,149,149, 21,172,172,172,254,118,161, 85,154, 22,249, 47,160,248, 74,195,252,114, 91,246, 28,173, 0, 71, 50,198, 70, +138,229,163,130,170, 75,188, 61,221,161,141,185,141,251,175,115, 48,227,131,198,225,172,204, 66, 51,234,211, 30, 13,123,247,173, +130,214, 77, 27, 17,111, 23,171,241, 11,126, 94,251, 69,128, 19,153, 28,150, 72, 87,152, 18,168,176, 36,250,162,150, 35,217,116, +254, 65,204,104,119,165, 26, 60, 79,113,254, 97, 60, 30,190, 74,223,244, 40,137,190,168, 72, 4, 3, 92, 73,123, 17,152,221,148, + 82,185,149,153, 89,118,189,186, 53,237,219,127, 88,151,233,220,170, 33, 36, 44,112,249,230,125, 76,252,249,192,117,158,167, 65, +119, 76, 28, 54,204, 91, 97,248,166,128,202, 91, 97,104,120, 99,133, 33,165,148,230,173, 58, 44,123,218, 23,203,146, 4, 85,212, + 45,103,177,157, 15,212,145,231,241, 42,157, 71, 84, 82, 54,178, 68,206,208,198,198, 2,148,143, 14,161,180,210,165,218,222,222, +222,177,170,191,111,245, 85, 91,246, 65,175,202,196,139,144,205,200, 73,143,199, 15,235,142, 84,119,119,119,111, 21, 19, 19,115, +161, 2, 5,198,247,220,177,157,142,160, 0, 43,150, 33,120,205, 30,164,216, 41, 96,175,148,128, 87, 39, 99,212,132,193, 86, 93, + 58, 12,182, 2,128,168, 39,247,224,165, 84,155,196,171,183, 67,239,254,109,252,172, 97, 80, 99,203,201,123, 26, 6,232,188,245, +116, 88,100,155,154,214,242,254,205,189,108,230,197,101,244, 65, 37,157,138, 22, 88,180, 10, 45,124,149, 88,109,184,151, 82, 99, + 45, 7, 18,185,251,106,146, 89,223, 14, 13,148, 18, 17, 33, 52, 39, 22, 84, 97,143,181, 91,246,230, 72, 13,216, 32, 52,161, 2, + 4,152, 6,149, 74,117,135, 16, 82,251,155,111,190, 25,244,237,183,223,182, 52, 51, 51,171, 10, 0,185,185,185, 47, 12, 6,195, + 69, 0, 59, 43,178, 58, 48, 95, 56, 61, 35,132,188,136,140,140,116,218,190,125,187, 53, 0,121,254,223, 26, 0, 25, 0, 18,223, +102,197, 97,129,168, 34,132,204,126,135,150,142,227,249,156, 53, 42,115, 63,195, 48, 70, 66, 8, 8, 33,144,201,100,184,116,233, + 18,250, 5,117,192,163,224, 12, 4, 90,155,163,241,176, 81,216,125,230, 12, 88,150, 5, 33, 4, 44,203, 86,168, 29, 17,137, 68, +184,124,249, 50, 62, 25,216, 23, 50, 17, 96,101,101,133,111,190,249, 6,135, 15, 31,134, 72, 36,236,210, 87,129,124,222, 80, 32, +184, 76,247,163, 69, 48,239,204,230,159, 36, 48, 26,112,116,243, 18, 28, 11,205,209, 61, 73,198, 12,191,100, 44,223,135,108, 62, +249,231,173,163,207, 92, 14, 93,252,217,128,110,202,182,109, 58,160,109,235, 54,162,128, 70,173,102, 1, 88, 81,164,193,110, 95, +150,175, 13, 35,143,239, 55,156,124, 60,106,119, 72, 4,129, 62, 27, 3, 58, 54,162, 70, 30,223,151, 35, 2,254,196,105,165, 48, +223,125,249,218, 53, 27,232,115,240,234,222, 31,242, 42, 85,171, 3, 70, 61,158, 61,123,138, 95,182, 28,228, 67,110, 62,217,166, +227,240, 85,100, 26,205, 53,149, 51, 79, 89,113,176, 50,147,250,117, 9,180, 58,193,131,194, 90, 41,169, 73,121, 35,172,149,226, +154, 29,107,153,157,160,148, 82, 11,133,184, 38, 53, 26,202,229, 84,235,184,245, 91,126,219,180,116,248,240,225,102, 41, 49, 9, +136,203, 10, 69,142,212, 13, 6,165, 7, 34,239, 93, 84,171,180, 92,185,141,120, 89,233,153,146,146,146,116,231, 70, 26,118,175, +155, 15,131, 78,139,164,152, 60,173, 26,151,146, 5, 75,123,183,107, 21,225,212,115,124,102,239,193, 35, 37, 10, 11, 40, 62,233, +221, 77, 26,153,170, 69,125, 87,139,188,194,148,147,140, 71,103, 47,163,117,110,158,110,123,254,154,129, 87, 93, 87,147,194,105, + 33,151,124,213,165,129, 27, 94, 68,199,227, 82, 88,236,150,231,169, 52,174,154, 29,217, 18, 25,151, 49,186,199, 7,158, 88,118, + 56,252,203,210,196, 81,105,156,254, 78,100, 16,128,230,121,147,225,213,160, 64,115,127, 39, 50,200,148,149,134, 37,113,138, 36, +248,120,233,137,168,153,123,111,165,244,152,242,113, 11,203,166, 77,187, 74,193,233,144,173,214, 26,194,211,105,214,219,228,209, + 91,244,148, 4, 78,129,243, 63,201,153, 47,122,182,229,127,222, 37,103, 28,138,249,117,122,219,184, 23, 29, 38,164,148,138,242, +173, 89,101, 78,134, 47,143,179,232, 48, 33,165,244,120,190, 53,171, 76,171, 86,113, 78,158,231,227, 26, 54,108,104,219,189,123, +119, 24,141, 70, 60,125,250, 20, 81,175, 95,163,253,232, 47, 97,109,109,141,139, 15, 30,224,201,147, 39,152, 61,123, 54, 12, 6, + 3, 14, 29, 58, 20, 83, 30,167, 72, 36,210, 87,175, 94, 93,210,179,103, 79,112, 28,135,231,207,159, 35, 54, 54, 22, 19, 39, 78, +132,149,149, 21,238,220,185, 83,200,153,146,146, 2,145, 72,164,255, 59,202,210,127, 29, 37,137,172,178,133, 22, 96,132,209,128, +204, 51,115,176,226, 18,244,122, 3,106,134, 37,209,151, 69,254, 95, 91,199,142, 28,125, 16,250,248,197,157, 43,109,165, 72,122, +152,119, 79, 5, 16,145, 66,227, 27,121,136,178,161,207,182,196,243, 19,120,153,152,157, 19,145, 66,227, 43, 26, 57,202, 27, 9, +244, 42, 32,254, 54,174, 94,188,128,144,235,247,113,235,225, 99,227,213, 59, 17,187, 25, 30,223,135,167,208,167,149, 80,167, 48, + 15, 90,134,161, 15,159,121, 54,242,117,242,132,145, 3,229, 13,176, 26,176, 19,195,194,155,122, 54,170,102,237,153,103,201, 50, +192,230,243, 63,128,165,242, 50,249,110, 69,235, 55, 52,175, 42,235,147,157,145,250, 65,187, 86, 31,154, 89,213,234,130,148,103, + 17,120,122,255,178,250, 78,104,228,213, 91,209,250,183,178,150,184,185,185,181,108,215,202, 15, 3, 70, 77,135, 94,149,137,231, + 33,191, 33, 39, 45, 1,151,174,153,227,113, 86,214,135, 0, 76,182,104, 93,141, 50, 4, 0, 64,115,111, 73,180, 5,180,206,159, +118,235, 14, 25,209,128,215,102,129,168, 82, 16, 25,171,203,236,179,238,181, 17, 0,148, 50, 34, 50,163,153,150,166,240,250,123, +217,249, 40, 89, 3,182,158, 9, 3,207,231,109,223,196,243, 88,187,245,143,200,209,223,127, 82, 31,254,158, 54,117, 9, 33,164, + 34, 38,127, 66,209,226,214,238,239,106,106,206,205, 2,120, 61, 46,143,183,173,217, 98, 69, 90,139,202, 90,198, 30,198,210, 88, + 0,163,107,185,146,245,227, 87,156,156,213,240, 76,120,243, 73,159,247,176, 4, 21, 54, 96, 23, 32, 64,192,223,143,156,156,156, + 81,195,134, 13, 91, 47, 22,139, 29, 0, 16,158,231,193,243,188,104,241,226,197, 98,163,209,200, 48, 12, 99,100, 89,150, 59,126, +252,184,193,104, 52, 38,107, 52,154, 81,229,113,114, 28, 23, 57,118,236,216,234,229,173, 80,220,181,107, 23, 68, 34,145,158,227, +184, 72, 33, 39,202, 23, 89, 69,191,139, 90,185, 74,111, 60, 40,190,107,246,201,156, 57, 0, 8, 40,230, 22, 19, 89, 0,128, 7, +169, 52, 46,192,145, 76, 12,104,212,106, 78,193, 61, 21, 13,156,198,104,236,219,168,182,239, 46, 0,208, 82,227, 39,149,137, 96, +150, 86,221,191, 94,163, 15,119,243,148,138, 56, 74, 55, 49, 60,246,107, 56, 60, 50,101,165, 93,105,136, 75,202,184, 83,176, 81, + 52, 15,250,191,225,194,124, 55, 14,148, 82, 90, 56, 92,184, 68,142,148, 76,109,185,126,160, 46,191,208,118,104,228, 41, 25,121, +250,202,189, 81, 70, 35,117,102, 89,146,160,214,113,235,223, 86,100, 1, 64, 76, 76,204, 5,127, 71,114,250, 65, 93,167,142,246, +202,124, 43,151, 10, 72, 81,225,116, 76, 82,246,133,202,112,166,231, 26,122,124,187,252,240, 17,169,152, 21,129,210, 60,135,162, +148, 66,163, 55,166, 21,136,177, 58,118,196,245,155, 67,220, 46,150, 37, 81,229,241,221,120, 18,191,108,192,130,179,147,195, 94, +165,111,122,153, 78, 67, 1,224,101, 58, 13,173, 97, 71,102, 69, 38,100, 79, 14,141, 74, 95, 82,209,121, 21,148,224, 82,163, 1, +115,254,116,238,109,211,243, 81, 28,189, 15,160, 87,128, 35,233, 48, 96,210, 47,147, 8,129,176,253,132, 0, 1,255,143, 80, 96, +213, 98, 24,102,222, 59,228, 60, 78, 8,233, 10,224, 89, 5,238,185, 1,160,246, 59,142, 91, 42,128, 84, 33,151,223,105,154, 86, +220, 97,105, 88, 18, 93, 11, 19, 54,141, 54,245,186, 82,239,143,163,103, 1,216,189, 77, 4,243, 57,108,223,101,162, 61, 72,164, +179,254,138,204,200, 23, 85,127,201, 92,159,240, 36,218, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171, 73,133,143,146,233, +125, 20,219,202,161, 36,177, 13,160,133, 41,124, 17, 41,244,123,224,207, 67,195,207, 82,233, 15, 0,126,168, 84,156, 43,233,249, +221,228,178,149, 68,207, 0,229,123,231, 23, 32, 64,192,251, 41,182,254, 2,206,227, 66,202,190,127, 40,203, 97, 41, 35, 36,207, +251,135,167, 79,159,146,183, 21, 89, 2, 4, 8, 16,240, 30,195,248,150,159, 18, 53,212, 91,126, 4,188, 39,130,171,248, 57, 65, +104, 9, 16, 32, 64,128, 0, 1, 2, 4,188, 35,145, 85, 92,108, 17, 0,237, 75,148,230, 21, 88, 77, 64, 8,105, 95,209, 0,149, +199, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,251,199, 89, 30,247,123,183,154,145, 22,153,228,252,174, 63, 0,218, 11, +156, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,207, 31, 0, 35, 75, 59, 22,134, 14, 5, 8, 16, 32, 64,128, 0, 1, 2, +254, 34, 8,190,129, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 14,229,110, 42, 45, 64,128, 0, 1, 2, 4, 8, 16, 32,160, 18, 40, +119, 83,105, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,149, 67,165, 54,149, 22, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 62,202,242, + 12, 79, 42,184,227,137, 0, 1, 2, 4, 8, 16, 32, 64,128,128, 50,240, 39,207,240,193,193,193,180,232,183, 0, 1, 2, 4, 8, + 16, 32, 64,192,223,137,247, 85,139, 8, 67,135, 2, 4, 8, 16, 32, 64,128, 0, 1,111,129,146,230,104, 9, 66, 75,128, 0, 1, + 2, 4, 8, 16, 32,224, 29,160,172, 57, 90, 5, 14, 75, 91,231,155,234, 90, 11,201, 37, 64,128, 0, 1, 2, 4, 8,248, 7,240, + 94,106,145,194,201,240,193,193,193, 52, 40, 40,136, 8,249, 44, 64,128, 0, 1, 2, 4, 8,248, 39,240, 62,106, 17, 97,213,161, + 0, 1, 2, 4, 8, 16, 32, 64,192,219,136,169, 34,171, 12,139, 31, 11,123, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,188, 35,193, + 85,252, 28,243, 23, 63,176,189,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,255, 23,145, 85, 92,108, 9,171, 14, 5, + 8, 16, 32, 64,128, 0, 1, 2,222, 2,166,172, 58, 20, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 9, 16, 66, 70, 18, 66,186,229, +255,238, 86,212,170, 37, 88,180, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 2,148,210, 13,132, 16,151,124,129, 21, 76, 41,141, 23, +132,150, 0, 1, 2, 4, 8, 16, 32, 64,192, 59, 64,177,121, 89, 65,132,144,194,225, 68, 65,104, 9, 16, 32, 64,128, 0, 1, 2, + 4,188, 5,202,154,163, 69, 0,180, 47,229,166,179, 21, 80,114,237, 43, 17,168,179, 2,167,192, 41,112, 10,156, 2,167,192, 41, +112,254,255,226, 44,143,187, 34,250,227,223,130,146,220, 58, 20,138, 47, 74,233, 95,246, 1,208, 94,224, 20, 56, 5, 78,129, 83, +224, 20, 56, 5, 78,129,243,255,235,231,157,175, 58,108, 64,136, 66, 48, 34,190,127, 32,132, 56, 17, 66,156,132,148, 16, 32, 64, +128, 0, 1, 2, 76,183,112,189,211, 57, 90,254,132,124,254,121,160,195,186,218,132, 88, 62,164, 84, 85,214,181,142,142,142,235, +149, 74,229, 96,149, 74,149, 75, 8,225,139,152,218, 0,160,232,190, 64,207,147,146,146, 90,148,247,108,153, 76,182,220,201,201, +233,243,156,156, 28, 21, 33,132, 18, 66, 64, 8, 41,136,240, 27,223, 70,163, 49, 38, 37, 37,165,225,127, 58, 19, 1,214,222,201, +233,166,152,101,221, 42,122,175,145,231, 95, 38, 38, 36,124, 88,129, 2, 51,159, 16, 76,201,255,189,136, 82, 58,253, 61,124, 43, + 88, 83, 46, 11, 4, 44, 34,128, 1, 70,134,249, 82, 12,172,214,242,252,186,252,130,107,172,236,163,117, 55, 73,117, 66, 81,151, + 16, 88, 81,138, 76, 74,112, 95,218,152, 70,254, 67,149, 67,111,177, 88,220,195,210,210,210, 60, 53, 53,245, 2,128, 93, 0, 6, +218,217,217,181,202,202,202,202, 49, 24, 12,135, 41,165, 7, 42,195,221,178, 30,153, 42,149,136, 63,211,232, 13, 11, 47,223,163, +191,181,110, 64,236, 56, 30, 11,228, 18, 81, 11,173,142, 91,116,233, 62,221, 84,193,176,146,188, 87,161,160,234,168,248,126, 98, +251, 76,204,119, 0, 56,100, 99,227, 43,115,176, 60, 39,150,178, 47, 51, 18,115, 6,247, 77, 74,122,221,247, 45,242,253,223, 8, + 7, 7,135,161, 12,195,252, 72, 41,133,209,104,156,145,154,154,186,249, 29,149,171, 25, 0,172,243, 15, 51, 40,165, 63,190, 37, + 95, 20, 0,207,252,195,104, 74,169,151,208,180, 87, 58, 45,215, 30, 60,120,112,116,155, 54,109,176,108,217, 50,172, 93,187,246, + 85,114,114,242, 2, 0, 91, 40,165,186,191,155,231,125,196, 59, 19, 90, 1,132,116, 29,218,169,201,250,113,253,187,146, 9, 67, +103,170,202,121,153,127,237,220,185,243, 39, 91,182,108, 17, 71, 68, 68, 40,188,189,189,193, 48, 76,161, 16, 42, 90, 95, 86,169, + 82,133, 47,239,217, 44,203,174,232,213,171,215,176,125,251,246, 41,239,220,185,163,172, 85,171, 86, 33, 31,207,243, 40, 94,255, +122,123,123,151,201,103,101,101,117,155,101, 89,247,146, 68, 90,105,191,141, 70, 99, 76,106,106,106, 67, 19, 10, 99, 39, 0,211, + 76, 72,210, 5,148,210, 83,101, 93, 32,102, 89,183,184,184, 56,199,138,230,149,135,135,135,190, 2, 47,143, 19, 33,152,194,243, +148, 1, 0,134, 33, 83,229,114,249, 58,141, 70, 19, 93,240,127,126,158, 37, 86, 36, 12,110,110,110,125, 40,165,163, 0, 80, 66, +200,134,216,216,216,253, 21,185,223,210,210,242,182, 84, 42,117, 23,137, 68,164,164,124, 41,126,108, 52, 26,169, 94,175,143, 73, + 75, 75,171,176,192,190, 0,144,206, 64, 75,142,101, 39,216,217,219,183,184,115,250,180, 89, 96, 96, 32,195,178,236,116, 0,235, +222,230,189,209,221, 36,213,141, 6,244, 83, 27,100,221,100, 94,115,125,181, 81,115, 35, 20, 98,237, 49,221, 77,178,247,239, 22, + 91,132,144, 33, 67,134, 12,153,176,112,225, 66,123,169, 84,202,236,217,179,199,119,226,196,137,189,151, 45, 91,102,223,191,127, +127, 11,157, 78,199, 79,157, 58,213,159, 16,226, 72, 41, 93, 83, 17,238,166,245,200, 7,126,222, 46,179,199, 13,110,139,201,243, +119,141,107, 94,155,164, 40,204, 36,107,251,180,168,110, 29, 80,213, 6,223,173,191,250, 21,128, 77, 21, 8, 43, 17,137, 68, 31, +186,186,186,250,104, 52, 26, 46,191,243, 70,139,212, 9,121,233,171,211,233,210,210,210,246,190,109,218, 76,150,203,155, 52,177, + 54, 63, 51,103,208, 16, 69, 86,122,154,211,138,224, 35, 15,246,193,177, 78, 95,224,213,251,212, 32, 48, 12,243, 99,108,108,172, + 11,165, 20, 46, 46, 46, 63, 2,216,252,142,168,173, 11,234, 97, 66,136,245, 59,224,243, 44,194,231,249, 14,202,190, 92,196, 48, + 99,165, 98,113, 71,163,209, 88, 59,191, 12, 61,212, 25, 12,103, 56,158, 95, 77, 41,213,188,199, 58, 96,202,232,209,163, 59,124, +251,237,183,222, 83,166, 76,193,148, 41, 83,170,108,220,184,113,253, 79, 63,253, 52,149, 16, 82,135, 82,154,243, 55,243,252,231, + 45, 88,127,137,208,242, 39,164, 97,187,186, 53,246,143, 31, 58, 0,252,190,229, 4, 67,103,150, 41,178, 62,108,216,240,179, 45, + 91,182, 0, 0, 6,247,232,129,142,141, 27,195,194,220, 12, 82,105, 94,112, 8, 37,144,136, 37,232, 57,241,107, 83, 34,183,168, +119,239,222, 31,239,219,183,207, 28, 0,214,174, 93,139,222,189,123,195,214,214, 22, 74,165, 18, 18,137, 4, 98,177,248,141,111, + 19,132,155,123,108,108,172,163, 92, 46, 47, 20,126, 60,207,191,241, 41, 50, 78, 13,142,227,224,227,227, 99,106,114, 77,203,204, +204,108,153,155,155, 91,230,152,110,213,170, 85, 1,224,148, 41,132, 63,254,240, 61,120, 46, 23, 34, 17,192,113,128, 86,207,128, + 47,161,111,239,234,234,138,177, 99,199,226,109, 54, 18, 15, 10,234, 70, 8, 33,251, 92, 93, 93,247, 39, 37, 37,121, 19,130, 17, +149,180,116,125,241,244,233, 83,115, 0,240,245,245, 29, 11,160, 66, 66, 75, 36, 18,185, 63,120,240,192, 81, 38,147,149,106,185, + 44, 34,130,161,215,235, 81,191,126,125,174, 34,207,112, 2, 60,211, 24,102, 68,189, 6, 13, 70,206,233,217, 83,126,243,230, 77, + 57,195, 48,224, 56, 14,139, 23, 47,230, 40,165,214,254,128,101, 56,144, 85, 70,249,252, 22,192,208,124, 43,237, 38, 74,233,226, + 55,254,167,168,171, 54,200,186, 61,207,233,217,184, 73,149,169, 8, 15,123,216,184,154,249, 33, 88,136,180,145, 0,254, 86,161, +101,105,105,217, 99,217,178,101, 14,155, 54,109,202,122,242,228,137,126,221,186,117, 14,163, 70,141,178,208,235,245, 24, 61,122, +116,178,159,159,159,100,217,178,101, 14, 7, 14, 28,104, 11,160, 66, 66, 75, 68,240,253,192, 30, 29,161, 49, 48, 48, 24, 56, 7, + 23, 7,139,109,227,135,180, 22, 83,170,195,214,195,119, 96,224,248,223, 42,104,201,250,176,111,223,190,213,118,238,220, 41,122, +252,248,177,168,102,205,154,224,121, 30, 70,163, 17, 6,131, 1, 0,192,243, 60,106,212,168,241,214,233,242, 25,224,107,239,100, +123,230,195,174, 93, 20, 46,114, 25,108,211,147, 49, 92, 34,178,216,172,212,110, 7,208,244,125,106, 44, 40,165, 16,137, 68,120, +253,250, 53, 28, 29, 29, 21,182,182,182,241, 0,230,166,165,165,109,120,143, 27,200,198, 82,145,104,255,214,223, 86, 56, 55,105, +218,148,117,114,113, 68,196,211,104,136,136,177,253,131, 91,119, 90,127, 54,102,210,120, 66, 72, 31, 74,233,205,247, 45,238, 46, +205,190,232,229,210,252,203,181,132,242,248,110,213,145,236,249,139,150, 43, 71,143, 24,194, 78,156, 56, 17, 30, 30, 30,222,189, +122,245, 90, 4, 96, 76,185, 60, 31,124,209,203,185,233,184,181,160, 20,115,126, 57,146,253,211,162,229,202, 49,149,224,249,143, +191, 59, 27,254, 50,161,229, 79, 72,181, 0, 15,199,211,243,167,140, 17,211, 19,191, 51,170,212, 36,148, 38,101, 28, 29, 29,215, +119,233,210,101,240,230,205,255,235, 36,125, 24, 24,136, 94,109,155,195,209,206, 10, 74, 51,105, 94,115,196, 19,220,127,242,210, + 36, 65,224,225,225, 49,122,255,254,253,230, 69,197,132, 68, 34, 41,252, 20, 21, 89, 5,159,226,150,143,146, 32,151,203,113,246, +236, 89,136, 68, 34,176, 44, 11,145, 72, 84,248, 41,122,204,178, 44,156,156, 42, 52,117,105,129,149,149, 85,157,236,236,108,203, +140,140, 12,120,122,122,102, 1,120, 80,228,255, 58,201,201,201,150, 21, 33,228,185, 92, 76, 28, 94, 11, 98,221,117,232,196,141, +161, 22, 53,195,213, 91,143,112,236,212, 5,196,198, 37,160,249, 7,245,240,233,160,190, 56,115,230, 12,140, 70, 99, 69, 11, 79, + 34, 33,100, 81,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199,143, 63,238,213,171,103,224,211,167,207,242, +123,194,100, 10, 33,100, 69, 5, 44, 91, 82, 0,184,120,241, 34, 0,200, 42, 83,246,100, 50, 25,174, 93,187,134,130, 97, 98,134, + 97,192, 48, 12, 88,150,197,209,103,246,200,213, 49, 80, 37,134,226,203,110,158,168, 90,181, 42, 24,166,252, 41,137,173, 1,249, + 85,160, 23, 17,139, 39,186,184,186,122,183,170, 86, 77,121,246,236, 89, 22, 0,188,188,188,104,124,124,124,198,225,195,135,179, + 69,192, 90, 47, 74,183,148, 37,178, 60, 61, 61,155, 49, 12,243, 99, 65,154, 19, 66, 22,121,123,123,207, 46,204, 55,158,199,160, + 14,182,226,241,227, 39, 72,154,180,206,235,156, 52,233,190, 19, 89,207,231,215, 34,105,223, 90,253,221, 21, 69, 86, 86,214,238, + 26, 53,106,176,169,169,169, 87, 1, 68, 25, 12,134,105,219,182,109,115, 28, 62,124,120,210,246,237,219, 23, 0,112, 93,184,112, + 97,235,220,220,220, 61, 21,225,109, 81,151,116,109, 88, 47,240, 3, 79, 15, 15, 92,184,122, 19, 18,169,216,122,236,208,110, 48, + 55, 23, 97,201,166, 96, 62, 42, 38,109,220,165,251,116, 75, 5, 68, 86,227,190,125,251,122,239,220,185, 83, 10, 0, 15, 30, 60, + 64, 66, 66, 2, 28, 28, 28,160, 80, 40, 32, 22,139,193,178, 44,196, 98,241, 59, 17, 89, 86, 30,118, 55, 14, 29, 58,172,176,181, +181,198,170,175,199,227,211,164, 68, 88, 91,152,195,144,147,235,253,158, 9, 14,223, 62,125,250,200,141, 70, 35,114,115,115, 17, + 18, 18, 98,165, 80, 40,172,220,221,221,231, 0, 48, 89,104, 41, 20,138, 68,141, 70,227,152, 95,143, 38,169,213,106, 39, 0, 89, + 50,153,172,160,158,206,201,127,158, 73,195,137,165, 12, 19, 70, 23,177,100, 69,191, 69,156, 27, 53,110, 84,231,236,129,125, 59, +204, 51,179, 19, 96,109,147, 4, 6,153,216,176, 97, 53, 20, 10, 75,204,153,243,173,232,101,251,182,110,157,186,246, 57, 75, 8, +105,255,222,137, 45, 74, 54,180,239, 62,216, 86,161,180,200,111, 75, 12,216,188,113, 60, 24,134,193,236,217,179, 17, 16, 16, 48, +146, 16, 50,147, 82,154, 86, 54, 13, 54,212,110,217,223, 86, 42,207,203, 98,222,104,192,186, 93,147,243,120,166,143,194,192,238, + 85, 71,222,223, 78, 78, 6, 84, 67,118, 94,187, 2,181,152, 65, 52, 26,211,164, 2,142,224,224,224, 86, 65, 65, 65, 23, 74, 59, +254, 15,188, 63, 46, 0,130, 74, 18, 95,162,224,224, 96, 26, 20, 20, 68,138, 68,238,141,227,178, 80,143, 16,123, 39, 43,229,217, +181,115,199,155,139,174, 7,179,234,232,103,136,211, 24, 11,223,156,226, 75, 52,149, 74,229,224,205,155, 55,191,161,195, 60,157, + 28, 33,145,136, 33,150, 16, 88,183,232,150,247,198, 93, 58, 6, 66,104,105, 13,255, 27,156,185,185,185,154,123,247,238,153,111, +218,180, 9,142,142,142,240,246,246,134, 82,169,132, 92, 46,127, 67, 92, 21, 21, 92,197,133, 86,113,206,130,255, 69, 34, 17, 24, +134,193,153, 51,103,192,113, 28,250,246,237,251, 39,145, 37, 18,137, 74, 20,110,165, 45, 79,165,148,158, 34,132, 60,160,148,182, +204,111,128, 31, 80, 74, 91, 21,121,118, 39, 7, 7,135,105, 0, 22,152,202,201,178, 20,172,230, 42,120,247,229, 16,189, 30, 15, +157,184, 46,206, 95,190,131,205,235,151, 1, 0,188,107, 54, 66,191, 94,221, 10,173,113,166,112, 22,133,155,155,219,174,228,228, +148, 46,109,219,182, 69,122,122,186, 97,238,220,185,168, 83,167, 14,124,125,125, 77,202,163,210, 4,220,131, 7, 15, 60,212,106, +181, 73,195,142, 37,113, 18, 66,176,109,219, 54,104, 52,127,182,234,219,180,250, 9,147,123,123, 97,216,151, 91,176,232,201, 30, +172, 89,179,166,204,184, 43,129, 58, 26,171, 26, 43,164, 44, 87,103,193,183, 95,200, 62,253,244, 83,118,216,176, 97,136,142,142, +198,240,225,195, 53,103,206,156,209, 37,196,199, 31,150,242,252, 42,253,155,194,184, 84, 78,153, 76,182,245,212,169, 83,216,179, + 39, 79,151, 68, 68, 68,192,199,199,199,236, 13,145,156,182, 23,217, 81,171,112,227,232, 99, 52,233,190, 19, 55,142, 14,130, 49, + 35, 88,220,208, 7,153, 21, 73,207, 74,244,190,206,150,112,110, 15,128, 61, 69,210, 87,177,125,251,246,158, 0,142,228,255, 7, + 0, 63, 87,132, 51,143, 8,195,250,247,238, 9,145,196, 2,143,159,197,160,213,135,245,225,228,232,136, 7,143, 34, 17, 21,155, +150, 72, 8,134,118,110, 38, 91,160, 86,235,102, 94,188, 71,127, 45,135,147,184,187,187,251,238,221,187, 87, 82,196, 2, 93,248, +142,179, 44, 91,120, 92, 32,188, 43, 83, 62, 11, 68,150,133,187,249,141,239, 87, 55, 51,187,241,112, 59,124,188,186,194,166,107, + 55,252,122,250, 52,158,134,133,107,116, 42,174,221,223,157, 71,127, 21, 39, 33,196,183,119,239,222, 87,119,236,216, 97,253,250, +245,107, 92,188,120, 17,222,222,222, 80,169, 84,229,118,120,139,115,106, 52, 26,199, 34,195,122, 5, 83, 27,126,212,233,116, 5, +153, 81,240, 34,150, 58,156, 88,140,243, 79,195,132,149,153,147, 85, 66, 61, 47,149, 75, 36,123, 15, 29,216,101, 30,254,248, 34, +234,213,253, 0,230, 86,254,224,141, 9, 72, 77,203, 65,250,179, 56,252,240,195, 34,204,153, 59, 3, 71, 14,238, 51,247,171, 85, +119, 63, 33,164, 70,209, 97,196,255,122,190,131,208,145,103,143,110, 95, 75, 40, 15,117,226, 99,153, 56,247,133,114,240,160, 62, +236,128, 1, 3,112,228,200, 17,132,133,133,173, 45, 77,100, 21,229, 36, 20, 35, 67, 47,238, 89, 11, 74,161, 78,122, 44,147,168, + 95, 40,135,124,220,143,253,116, 96, 71, 92,255, 99, 5, 58,214,123, 17,234,234,136, 94,233,249,131,135, 34, 22,169, 50, 57,174, + 40,110,146,235, 69,196, 86, 8, 0, 82, 68, 96,133,224,127,115, 48,255, 11, 8,202,247, 14, 63,178,184,117, 75, 84, 25,129, 5, + 0,190,132,152, 43,165,146, 27,155,231,124,225,170,140, 14, 19,105, 67,175, 33, 78,203,211,117,175, 56,254, 6, 33,138, 59,148, +170,139,223,163, 82,169,114, 35, 35, 35, 21, 67,123,245, 66,211,192, 64,184,216,217,161,134,187, 59, 20, 50, 41,164, 18,113,145, +122,185, 66, 42,146,250,249,249,161,123,247,238, 16,139,197, 80, 42,149, 48, 55, 55,135, 84, 42, 45,209,154,101,106, 47,151, 82, + 10,150,101, 17, 26, 26,138,168,168, 40, 88, 91, 91,227,202,149, 43,104,215,174,221,159,172, 90, 69,197, 89, 69, 76,244,197, 27, +254, 2, 33, 6, 19,135, 12, 11, 96, 52, 18,228,208,186,144,191, 26, 7, 21,169, 15,173,150,131, 86,171,197,175,151,245,184, 25, +153, 11,189, 94, 7,173, 86, 91,234, 51,203, 72, 91,198,213,213,117,176,143,143,207,216, 65,131, 6, 25,164, 82, 41,114,115,115, +161, 82,169, 16, 22, 22,102,232,210,165,107, 70,247,238,221,172,130,131,131, 41,165, 88, 84,193,121, 90,169,110,110,110, 30,249, +195,179,169,149,236, 65, 20,138,152,226, 24,250,115, 56, 68,108, 94,158,172, 93,187, 22, 70,163, 17,148,210, 82, 51, 73, 67,200, +185,185, 63, 45,181, 90,184,252, 55, 88,217, 58,225,194,133, 11,198,147, 39, 79,102, 19, 32,226,105, 88,216,207, 31, 1,199,247, + 2,250,138,132, 47, 61, 61, 93,225,237,237, 13,119,119,119,240, 60, 15,131,193, 80,104,125, 73, 77, 77,133, 90,173,134,173, 89, + 6,170,219,185,131,203, 14, 65,124,232,119,112, 49,127,140, 45,167,116,134, 6,190,184,255, 47, 48,133,255, 14,224,247,183, 39, +130,155,163,179, 7, 24,106, 64, 92, 82, 42,122, 6,117, 4, 43, 49,199,203,215, 41,168,235, 95,205,229,227,143,154,185,176,132, +195,148, 5, 59,199, 2,248,181, 60,186,156,156, 28,227,227,199,143,241,224, 65,158,222,181,180,180,132,153,153,217, 27,239, 56, +195, 48,111,101,209, 42, 16, 89, 63,173,109,103,198,136,115,145,101, 60,139, 77,219,238,160,174, 95, 55,172,187,113, 75, 99, 76, + 76,107,191, 68,163,137,248, 79, 15, 27,185,184,140,226,121,126, 14,165, 52,163,119,239,222, 78, 59,119,238,180,137,141,141,197, +157, 59,119, 48,123,246,236,100,163,209,200, 81, 74, 9,165,244,187,119, 80,150,248, 34, 2,235, 93, 90, 17,196, 74, 57,190,180, +183, 36, 61, 68,140,165, 55,151,149,243, 50, 69, 71, 15,171, 56,254, 23, 74,169,161,172,123, 25,134,249,124,223,238,181,174,246, + 14, 60, 90, 59,180, 69,124,162, 30, 63,125, 61, 4,169,169,217,248,117,227,124, 0, 82,232, 57, 22, 45, 91,247,129,163,163, 27, + 70,142, 24,233,188,118,253,186, 47, 0, 44,121, 95, 12, 90,241, 87, 86, 31, 36,132,156,117,112,112, 8,251, 98,228, 72, 7,111, +239, 79, 32,151,203,177,107,215, 46,236, 92,181,202,184, 28,232,183,158,144,243,163, 40, 61, 88, 38,207,245,255,241,140, 31, 61, +218,161, 86,173,209,144,201,100,248,227,228,239,208, 36,108,203, 14,106, 10,189, 74,131,160, 42,221,169,237,171,163, 36, 77, 44, +198, 51, 0, 16,203, 17, 47, 6,146,138,209,253,215, 4, 86,161,140, 42,152,167, 85,240,253,214,158,225,169, 88,250,112,227,132, +129, 94, 78,208, 18,221,229,163,136,213,242,198,133, 79,245,236,221, 76, 58, 57,188, 4,145,149, 95,176,121, 79, 79, 79,180,109, +216, 16,189, 90,180,128, 72, 36,130, 92, 42,129,133, 92, 1,106,204,179,100, 21, 12, 29,150,209, 38,162, 36,235,147,157,157, 29, + 36, 18, 73,161,192, 50,213,154, 85, 26, 39,207,243, 16,137, 68,120,240,224, 1,154, 55,111, 14, 15, 15, 15,236,217,179, 7,157, + 58,117,250,211, 80, 98, 69, 69, 86,129,208, 42, 58,140, 87,100,146,124,185,147,224,255, 36, 18,116, 4, 41,186,186, 32, 36, 16, + 28, 7, 24, 41,160,213,104, 64, 41, 64, 41, 96,208,235,160,209,104, 10,159,105,202,144,172,139,139,139,103,213,170, 85,231, 77, +157, 58,165, 86,221,186,245,144,156,156, 12,158,231, 97,102,102, 6,149, 74, 5, 75, 75, 75, 52,109,218,244,229,188,121,243,226, + 41,197,200,138, 78,134,127, 7, 21, 44, 0,224,244,233,211,111, 12, 27, 22,124,114,227, 99, 48,236,171,237,144,138,242,134,150, + 10,230,240,148, 85,239,182,105,217, 12, 87,239, 70,112,159, 79, 89,161, 21,167,222, 89,224,204,243,155, 99,128,196,183,104, 92, +144,146,146,130,196,196, 68,244,232,217, 19, 59,119,236,192,171, 87,175,224,239,239,143, 54,109,218,192,209,209, 17,175, 94,189, +194,205, 75, 90,104,211,211,144,166,187, 3,165, 69, 19, 28,186, 16,169,157,181, 70, 23,249, 79,213, 22,132,144, 30, 0,134, 88, + 90, 90, 86, 85,169, 84,241, 28,199,237, 5,176, 23, 64, 63,145, 72,212, 79,169, 84,186,100,101,101,189, 64,222,106,162,195,229, + 14, 37,201,229,118, 50,185, 37,120, 78, 11,145, 72, 4, 15, 15,111, 80,163, 14,233, 89,106, 12, 29,208, 29,119, 31, 60,194,201, +243,215, 57,131,129, 95,105, 74,178,178, 44, 75,125,125,125,145,148,148, 4,177, 88, 12,133, 66, 1,115,115,115, 76,159, 62, 29, +171, 86,173, 42, 20, 89,149, 21, 90,159, 1,190,150,158,230,215,127, 92,157, 39,178, 18,226,226,145, 24, 35,134,131,157, 19, 86, +174, 90,158,155,254, 42,161,201,111,192,127, 90,100, 1, 0,207,243,223,197,198,198, 58,138, 68, 34,103,142,227,240,250,245,107, +220,190,125, 27,227,198,141, 75, 76, 77, 77,109, 77, 41,173, 84, 28,229,114,121, 82,129, 37, 75, 46,151, 39, 1,165, 14, 39,102, + 20,177,100,101,148, 65, 89,226, 48, 33, 33,164,154,183,187,197,153,141,203, 38,122, 54,106,210,148, 81,138, 44,211,115,158, 37, + 52,191,124,241, 66,211,113,203,126,253,130, 16,210,145, 82,250,188, 52, 82,153, 88,220,229,131,102,205, 68,160,137, 16, 73,155, + 99,209,194, 1, 72, 78,201, 66,122, 90, 54, 36, 18, 51,232, 12, 44,140, 60, 65,211,230, 45,240,251,150,221, 8, 24, 49,156,149, +138,197, 29,222, 39,161,149,143,249,191,252,242,139,167,159,159, 31, 54,111,222,140,243, 91,183,226,211,204, 76, 92, 96, 24,214, + 32, 22,219, 31, 55, 24, 54, 0, 56,104, 42, 79, 64, 64, 0,126,251,237, 55,108,219,182, 45,122,112,187,164,253, 19, 7,195, 81, +175, 71,231, 59, 79, 96, 91,165, 59,112,231, 9,108, 27,248,161, 6, 39,194, 51, 66,240,134, 59,168,224,224,224, 86, 69,191,255, + 75,200,223,219,176,196, 33,118, 17,128,214,193,193,193,180,232,119,121,132, 74, 71,223,209,219, 6,180,245, 10,172,238, 73, 12, +123, 86,224,117, 46,167,155,249, 68, 47,125,154, 67, 39,134, 83,186,188,140, 30, 4,101, 89, 22, 22, 10, 5, 28,172,173,243,204, +252, 12, 3,240, 0,111, 0,136, 49, 79, 0, 80,158,160, 34,139,166,121,158,135, 84, 42, 45,113,226,123, 69,231,102, 21,229,204, +206,206,198,203,151, 47, 49,114,228, 72, 40,149, 74, 0, 64, 66, 66, 2,188,188,188, 32, 18,137, 16, 27, 27,139, 63,254,248, 3, + 85,171, 86,133, 76, 38, 35, 21,204,148,130,134,191, 14, 33,228, 2,128, 58,241,241,241,150, 46, 46, 46,168,176, 69,139,167, 80, +105, 9,116, 58, 35,158, 62,125,138,184,184, 56,188,124,241, 12,141,114,179, 64,193,130, 82, 90, 33,139,150,187,187,123,160,143, +143,207,186, 5, 11, 22, 72,220,221,221, 65, 41,133,141,141, 53, 84, 42, 21, 82, 82, 82,225,239,239, 15, 15, 15, 15, 44, 90,180, + 8, 0,118,254,221, 34,171, 88,153, 42, 20, 90, 69, 5,215, 87, 31,121, 34, 45,205, 28, 44,251,191,213,167,229,204,209,146, 0, + 64,235,142,189, 69,103, 78, 30, 55,227,128,121, 9, 44, 59, 79, 84,126, 62, 26,140, 60,175, 44,237,255,215,175, 95, 67, 44, 22, + 99,223,222,189, 72, 75, 76, 68,221,186,117,209,184,113, 99, 60,123,246, 12,119,239,222,133,157,157, 29, 28,220, 63,196,133, 23, +122,132,199,169, 97,101,101,133,200, 24,230, 31,115, 25, 64, 8, 25,209,190,125,251,217, 63,255,252,179,163,179,179,179, 56, 57, + 57,217,111,245,234,213,117, 87,175, 94, 61,254,139, 47,190,112,250,226,139, 47,108, 28, 28, 28, 68, 9, 9, 9,190, 95,127,253, +117, 3, 66, 72, 85, 74,233,210,178, 56,205,204, 44,108, 89,137, 25, 8, 17,193,218,202, 6, 34,169, 25,120, 78, 4, 35, 15, 88, + 90, 57,224,234,221,125,184,242, 48,123, 84, 82, 42,246,154,240,222, 80, 59, 59, 59, 48, 12, 3, 59, 59,187, 63, 89,170,199,141, + 27,135,141, 27, 55, 22, 14, 35, 86, 86,100,253,180,186,157, 57,201, 23, 89, 9,175, 69, 32,218,170, 56,122,240, 90, 70,250,171, +132,230,239,131,200, 42,168,227, 40,165,120,241,226, 5, 84, 42, 21, 46, 93,186,132,239,190,251, 46,185,184,200,114,114,114, 26, + 97,105,105, 57, 55, 39, 39,103, 81,124,124,252,138,242,120,243, 69,212,155,157,193, 18,134, 19, 77,117,241, 80,210, 48, 33, 33, + 68,236,225, 34, 63,117,247,210,118, 47, 43,122,159, 32,106, 36,240, 52, 43,204,226,134, 99,203,174,141,130,152,250,107,190,175, +210,120,212,244, 83,132, 16,191,210, 44, 91,188,209, 88,223,204,220, 2, 64, 18,238,220, 14, 41, 20, 89,169,105,153,208,234, 89, +104,117, 4, 26, 61,131,182,237, 59, 99,213,186,109,136, 77, 74, 67,193,138,196,247, 5,132, 16,219,192,192,192,209,253,250,245, +195,188,121,243,112,246,231,159,117, 99, 8,201, 18, 1, 52,216,104, 4, 79, 41, 97, 76,152,196, 94,156,103,201,146, 37, 7, 1, + 12, 92, 48, 14, 31,166,231, 96,168,107,119,106, 91,165,123,222,181,125,167, 82, 0,176, 77, 62,251,102,147, 25, 20, 20, 68, 10, + 70,214, 42, 58,194,246,111,135, 40, 40, 40,232, 66,112,112, 48,138,126,151,117,131,165,115,205,174,211,191, 25,183,176, 81,167, + 22, 36,126, 82, 7,164,101,105,184,111,195,245,210, 24,117,217, 34,171, 40,190, 89,189, 26,119, 35,242,222, 99,119, 71, 71, 76, +249,248, 99, 80, 14,184, 18, 22,142,221,103,207, 98, 64,251,246, 48,203, 95,241,103,170,245,169, 36, 43, 86, 81,107, 86, 69,173, + 78, 25, 25, 25,216,187,119, 47, 26, 55,110, 12,165, 82, 9,145, 72,132, 58,117,234,224,209,163, 71,168, 86,173, 26, 8, 33, 56, +116,232, 16,122,245,234,133,231,207,159,227,195, 15, 63, 52,175,140,208, 10, 15, 15,183,164,148,182, 44,176,126, 84, 22, 90,173, + 22,143, 31, 63, 70,247,238,221, 97, 99, 99, 3, 55,183,157, 56,123,106, 59,148,129,159,130, 16, 84, 72,104, 25,141,198,207,130, +130,130, 36,132, 16,168,213, 42,200,229, 10,152,153,153,195,194,194, 18,190,190,126,136,139,139, 67,167, 78,157,116,145,145,145, +107,226,227,227,247, 84, 52,172,254,254,254,102,153,153,153,159, 86,169, 82, 69,154,223,219,245,175, 94,189,250,228,200,200,200, +236,138, 90,181, 10, 4, 22, 33, 4, 44,203, 22, 10, 45, 17,195,192,197,217,177,240, 56,127,126, 26, 41,131, 43, 43, 54, 85, 43, + 3, 0, 79, 79, 79,172, 90,127,132, 9, 10, 10,194,248,241,227, 97, 48, 24,176,102, 77,222, 34,187, 65,131, 6, 65,175,215, 99, +255,254,188, 69,146, 34,145,168, 76,179,201,237,219,183,113,231,206, 29, 24, 12, 6,100,102,102,226,196,137, 19,184,112,241, 34, +118, 29, 58,135, 87, 47,158,161,142,159, 23,134, 15,255, 12, 98,177, 24, 91,182,108, 65,243,230,205,255,209, 10, 65, 44, 22, 15, +222,184,113,163,203,230,205,155, 51, 14, 29, 58,148,251,193, 7, 31,200,150, 47, 95,238,184,106,213, 42, 7,157, 78,135, 9, 19, + 38, 36, 93,191,126, 93,219,179,103, 79,179, 13, 27, 54,184, 84,175, 94,189, 3,128,165, 37,164,167, 25,128, 1, 0, 62,105,221, +216, 74,148,145,173, 6,207,233,240,226,213, 75,100,230,232,192, 27,245,136,142,137, 67,142,198,136,212,180,108,212,169,223,241, +151,144,144,144, 25,132,144,111, 41,165,199,202, 11,103, 88, 88, 24,174, 95,191,142, 87,175, 94,225,197,139, 23,111,252, 55, 98, +196, 8,108,219,182,173,194, 22,173,146, 69, 22, 11,162,173,134, 99,135,110,100, 36, 61,139,127,111, 68, 86,126, 29, 52,199,197, +197,101,142,139,139,139,252,244,233,211, 86, 85,170, 84, 1,199,113,186,226,150,172,214,173, 91,207,220,184,113,163, 75,181,106, +213,198, 1, 88,241,111, 8, 59,195, 96,196,162,181,163,237, 45,164,209,113,120,186, 52,223,151, 32, 11,168,178,128,144, 29, 16, + 53,155,245,114, 92,207,169, 54,211, 54,207, 27,129, 50, 86,200, 70, 62,127,141,181,107, 87, 97,226,132,161,248,253,215, 69,224, +121, 17,180, 6, 22,158,222, 31, 64,171,231, 65, 24, 17,234,214,111,136,243, 33,151, 32,102,128,189,155,215,190, 87,166, 44, 74, +105, 26, 33,100,205,161, 67,135,190, 28, 63,126, 60,120,158,151,206, 93,187, 86,157,156,156, 60, 31, 21,240,127, 85, 2, 79,175, +181,107,215, 70, 76, 91,149,124,112,226, 96,176,175,142,146,180, 59, 79, 96,219,119, 42,197,190,133, 4, 13,252,144,166, 44,185, +137,191, 88,236,251,253, 16, 90, 5, 74,178,232,119, 73,104,224, 91,237,123, 43, 91,155,207, 26,215,241,181,159, 50,126,140,232, +121,130, 6,251,171,124,156,243,199,214,149,102, 9,156,236,151,103, 84,189,188, 34, 15,222,253,199, 31,133,191, 23,239,220, 89, +226,127,241,125,251,154,220, 51, 43,205,138, 85, 81, 75, 22, 0, 40,149, 74,235, 14, 29, 58,160, 93,187,118,232,211,167, 79,225, +156,172,122,245,234, 97,215,174, 93,232,221,187, 55,238,221,187, 7, 23, 23, 23,212,172, 89, 19, 53,107,214,196,241,227,199, 43, + 90,192, 97, 52, 26, 17, 24, 24, 88,176,234,176, 78, 76, 76,140,101,101, 51, 82,171,213, 34, 53, 53, 21,182,182,182,144, 74,165, +104,210,164, 49,190,252,170, 9,236, 93,126, 67, 96, 45, 63,228,230,230, 22, 46,127, 55,161,177, 13,172, 81,163, 6,146,147,147, +145,156,156, 12, 7, 7, 7,184,186,186,194,217,217, 25, 75,151, 46,165, 43, 86,172, 56,169,215,235,215, 36, 39, 39, 87,216,146, +229,226,226,210,194,214,214,118,166, 90,173,150, 22,233,225, 74, 29, 28, 28, 14,187,186,186,206,143,139,139,171,200, 30,155,208, +235,245, 32,132, 32,248,133, 43,114,117, 4, 89, 49,119, 48,254, 35,175, 55,132,151, 88, 44, 54,101, 66,111,238,192,129, 3, 29, + 61, 60,220,241, 58, 50, 12,251,246, 81,252,252,243,207, 5,171, 34, 17,145,223, 49, 40, 56,110,211,166, 13,188,189,189, 81, 17, + 39,153, 60,207,227,193,131, 7,216,121,248, 2, 92,188,106, 33,250,233, 99,220, 61,126, 20, 85, 28,108, 17, 80,191, 33, 12, 6, +195, 91,185,222,120, 23, 48, 24, 12,155,124,124,124,168, 78,167,187, 0, 96,213,195,135, 15,135,198,199,199, 79, 56,114,228,136, +107,191,126,253,226,142, 30, 61,186, 28,192,230,135, 15, 31,142,254,225,135, 31,218,113, 28, 87,226,106, 65,150,101,127,255,250, +235,175, 91,247,235,215,143, 72, 24,131,238,244,169, 45, 34,142, 51,144,111,190,221,100, 12,185,124,129,225, 56, 3,233, 51,240, +107,254,248, 31, 15,153, 81, 95, 45, 54,214,251, 32, 8,161,161,161,206,221,186,117,251, 1, 64,153, 66,171,192, 82, 85,154,133, +146,101, 89, 12, 29, 58, 20,187,118,237, 50, 57,222,195,129,106,150, 94,230,215,127, 90,221,222,156,136,114,138,136,172,234, 56, +118,232, 70, 70,226,211,184,247, 74,100, 1, 64, 74, 74,202,122, 0,235,109,109,109, 19,205,204,204,144,157,157,253,167,242, 71, + 8,145,251,249,249,201,165, 82, 41, 58,118,236,104,235,226,226, 18,193, 48,204,138,216,216,216, 82, 21, 71, 73,195,132, 37, 13, + 39,190,205,170, 67, 27, 7,116,107,210,162,190,197, 19,171,121, 22,114,145,230, 94,149, 8,185, 37, 1,144,169,117,122,113, 53, +106, 64, 22, 73,146,213,107,216,166, 1, 44, 69,102,221, 74, 19, 90, 12,203,222,205, 76,207,232,146,149,173,195,229, 43,161, 24, + 56,160, 6,180,122, 2,158,103,144,147,171, 5, 88, 49, 24, 0,131, 62, 30, 2, 74, 68, 72, 75,140, 3,203,178, 15,241,254, 97, +250,232,209,163,187,124,251,237,183, 85,243,253, 95,121,229,251,191,154, 66, 8,169, 77,203,113, 62, 94, 6, 79,149,163,187,102, + 77, 58,124,105, 93,102, 80, 83,245,211, 6,126, 0, 0,219, 6,126, 72, 19,139,241, 76,196, 34,149, 82,168,139, 89,181, 90, 21, +253,254,143, 89, 7,223,152, 4, 95,244,216,164, 57, 90, 62,213,220, 59,183,106,212,240,171, 25,223,206,176,120,116, 53, 4,211, +190, 95, 69,125, 26,118,200, 94,127,233,174, 46,199,204,187, 75,118,242,211, 43,166,234, 11, 0,232,220,182, 55,234,248, 55,254, +211,159,205,219,228,249,146,188,124,254, 54, 18,147, 99, 77,110,108,243,197, 65,137,115,178, 76, 89,210, 95,130,233, 59, 35, 52, + 52,212, 49, 38, 38,230,141,137,239,222,222,222, 32,132,224,198,141, 27,184,126,253, 58, 6, 14, 28, 8,145, 72, 4,177, 88,140, + 11, 23, 46, 84,200, 26, 83,196,186,244,128, 82,218,138, 16,210,201,221,221,189,196,213,134,166,112,169,213,106,100,102,102,226, +212,169, 83,168, 81,163, 6,126,250,233, 39,184,186, 56, 97,198,140, 73,224,121, 30, 89, 89, 89, 48, 26,141,166, 90,180,248, 2, +107, 17,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252,135,184,184,184, 35, 21, 13,163,167,167,167,181,209, +104,252,166,123,247,238, 29,122,246,236,137, 78,157, 58,189,241,255,142, 29, 59, 44,246,239,223, 63,223,195,195,163,179, 94,175, + 95,144,152,152,152,108, 10,239,111,191,229,185, 95, 82,126, 48, 7,211,250, 85,193, 39, 99,183, 96,233,210, 3,144,201,100,111, + 52,188,243,230,205, 43, 83,196,240,148,250, 72, 82,174,198, 77,154,186,196,113,254,252,179, 56,123, 54, 9, 12,195,192,197,197, + 5, 12,195,224,229,203,151, 96, 24, 6, 94, 94, 94, 96, 24, 6,177,177,177, 5,115, 2,211,161, 49,205,151, 33,195, 48,208,104, + 52,120, 29,253, 10, 49,145, 17, 48,207, 74,128,131,165, 18,233, 97, 15, 80,103,248,136, 66,255, 79,255,112, 15,119, 27,128,109, + 69, 78, 45, 33,132,232, 8, 33,125, 0, 28,164,148, 22, 88, 52,126,200,255,148,136, 15, 62,248,160,222,183,223,126, 43, 46,112, +183,225,234,249, 35,167,215,235,121, 0,240,171,211,242, 13,181,255,236,217, 51, 44, 93,186, 20,185,185,185,144,152,226,232, 46, + 95,180, 22,172, 48, 44, 73,132, 85, 68,100, 1,128,157,151,251, 47, 55,238, 92, 48,222,143, 92,167,126,248,228,132, 34, 62,154, + 1,163,123,127, 69, 86,113,203,150,187,187,251, 28,158,231, 41,165,116, 86,145,186, 85,230,233,233,121,233,244,233,211,118, 28, +199, 97,229,202,149,214, 9, 9, 9,214, 45, 91,182,156, 6,160, 84,161, 85,210, 48, 97, 73,195,137, 40,178,234, 80, 38,147,217, +150, 85,125, 20, 95,117,104, 52,194,215,210,194, 26,233,136,129,214,222, 80, 47,195,142, 75, 59, 19, 63,226,158,107, 84,125,127, + 51,163,161, 42,147,165,131,155,210, 26, 60,165,190,165,118, 78, 13,134, 19,247,238,220,237,232,233, 81,131, 61,114,236, 34,122, +244,234, 7,173,150,129,198, 64, 64, 88, 49, 8, 43, 65,237, 58,245, 81, 51,160, 14, 40,128,219, 55,175,114, 58,131,225,204,251, +148,247,174,205,191, 26,232,218,252,203, 21,160, 60, 45,193,143, 86,213, 94,189,122,205, 7,240, 85,121, 60, 78, 31,126, 53,208, +185,105, 30, 79, 81, 63, 90, 95,127, 57, 26, 97, 55,197, 86, 23,239, 44,148,116,250, 0,193,201,103, 9,148,242,255,173, 58, 20, + 51,149,119,205,241, 95, 17, 92, 38, 9, 45, 79, 79, 79,107, 71,115,229,111, 95, 12,255,204, 34,234,254, 53, 36,132,223,192,149, +139, 17,233,187,247, 31, 72,203, 77, 77, 26, 94, 1,145, 85, 56,204,103,231, 92, 5,222,181,254, 44,180,228,230, 14, 0, 0,239, + 90,141,193,154, 89, 85,116,200,227, 79,214,172,202,136,172,162, 21,118, 73, 62,180, 70,141, 26,133,141, 27, 55,162, 89,179,102, +240,241,241, 41,172,236, 43,106, 53, 43,110, 93,170,204,106,195,162,200,206,206,134,151,151, 23, 54,108,216,128,135, 15, 31,194, +194,194, 2, 3, 7, 14, 68,118,118,118,161,192, 50,117, 50, 60,165,244,217,233,211,167, 27,245,239,223,159,138,197, 98,146,145, +145, 1,107,107,107,172, 94,189, 58, 55, 62, 62, 62,184, 18, 34,171,159, 68, 34,153, 52, 96,192, 0,214,207,207, 15,137,137,137, +176,180,180, 52, 16, 66,196, 0, 96,109,109,109, 80, 40, 20, 24, 61,122, 52,234,214,173,219, 98,202,148, 41,205,220,220,220, 86, +199,198,198,110, 41,171, 44, 17, 66, 10, 27,212,225, 43, 30, 67,167,203, 19, 42,107,214,172, 65,254, 92,183,255, 13, 17, 68, 70, + 2, 38,172,100, 49, 55, 55,135,143,143, 79,137,121,223,162, 69, 11,220,190,125, 59,111,104, 82, 36,130,163,163, 35,174, 92,185, + 98,210, 74,170, 2, 71,144,161,161,161,168,229,109,143,135,103, 79,195, 94, 41, 70, 93, 87,103,184,183,104,133,136,136,136,127, +204,154,149,239,155,106, 12,128,246,249,101,112, 19,128, 81, 69,142, 87, 83, 74,127,169, 8, 39,199,113,148, 97, 24,242,250,245, +107,189, 82,169, 36,182,182,182, 34,153, 76, 6,173, 86, 91, 40,184,158, 61,123,134, 99,199,142, 33, 38, 38, 6,182,182,182,140, +149,149, 21,244,122,125,186, 41,252,190,190,190,112,118,118,126, 99,226,251,240,225,195, 43, 37,178,134, 2,129, 27,127, 92, 80, + 69,198,176, 86,181,236, 59,227,197,227,151, 26, 70, 7,249,255, 7,145, 5, 0,233,233,233,235, 1,172, 47, 56,118,112,112, 24, +198,178,236, 12, 43, 43, 43,171, 11, 23, 46, 88, 59, 56, 56,144, 45, 91,182, 24,102,205,154,149,193,178,108, 58, 33,100,217, 63, + 47, 14, 17,158,146, 25,233, 37,182,113,229,239,107,232,213, 9,175,167,213, 76, 23,215,112, 32, 1,129,232,149,244,232,242, 48, + 46,178,105, 98,124, 2, 67,193,135,151, 81, 7,111,154,246,237,188,111, 34, 30,223,245,148, 91,202, 49,106,244,183, 8, 62,121, + 30,132, 17,227,210,213, 27,208,233,141, 72, 73,203,196,128, 65,131,225,238, 98,143,240,235,167,146, 57,158, 95,253,126,137,108, +126, 85,199, 30,195,108,100, 10,101,126,154, 24,177,237,215, 73, 96,152, 21,152, 61,123, 54, 2, 3, 3,199, 18, 66,190, 43,207, +143, 22, 33,252,170,218,173, 6,217, 72,100,121, 60,148, 55, 98,195,222,105,249,126,180, 38, 98,245,250,253,181, 3,188, 95,204, + 45,203,143,214,251, 34,178,138,126,151, 43,180,170, 84,169, 34, 51, 19, 99,164,173, 66, 50,229,139,143,123, 58, 36, 69,134, 33, +230,209,221,188,225, 5,189, 90, 31, 31, 17,238, 99,194, 67,219, 23,243,223, 65,203, 26,186,210,104, 12,168, 40,103, 65,131, 91, +220,154, 85, 17,145, 85, 18,103, 81,177, 85,212,111,150,135,135, 7,230,207,159, 95,174, 31,173, 18,226, 94,112,190, 19,128, 58, + 5, 98, 11,121,147,225, 59,153,178,210,176, 52, 78, 7, 7, 7,164,166,230,121, 72,104,221,186, 53, 90,183,254,223,122, 6,189, + 94, 95,104,197,178,176,176,248,147, 69,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, +181, 43, 16,115, 42,106,194,222,110,197, 57,141, 70,227,232, 83,167, 78,177, 60,207, 99,195,134, 13,184,125,251, 54, 85, 42,149, + 51,149, 74,229, 42,133, 66, 97, 84,171,213,163, 70,140, 24, 49,120,238,220,185, 76,139, 22, 45,112,237,218, 53,166,106,213,170, + 67, 0,108, 41, 47,238, 55,110,220, 0,195, 48,224,210,162, 49,118,218,110,152, 41, 68,120,252,248, 49,210,210,210,254,228,196, +212,148,244, 44,106, 41, 41,248,180,104,209,162,112, 24,178, 73,147, 38, 96, 89, 22,247,238,221, 43,113, 24,182, 24, 39,181,179, +179, 43, 44, 31, 18,137, 4,231,207,159,199,247,223,127, 15, 79, 91,107,164, 63,122, 8,231,214,109,209,225,179, 17, 24, 56,112, + 32, 88,150,133,173,173,109,161,229,183,188,184,191,101,133, 80,148,243,179, 90,181,106, 13, 9, 15, 15,119,175, 93,187,182, 75, +104,104,104,155,192,192, 64,175,135, 15, 31, 22, 28,203, 96,194,220,156,162,156,183,110,221,218,183,106,213,170,209, 67,135, 14, +149,240, 60,111,140,138,138, 50, 0, 32,206,206,206,236,173, 91,183,248, 35, 71,142, 64,173, 86,195,221,221,157,113,115,115, 35, +103,206,156,225, 31, 61,122,116,131, 82,250,173, 41,113, 55, 26,141,111,184,113, 40,248,189, 99,199,142, 10,191,239, 85,106,250, +254,212,174,165,159, 71, 74,220, 61,196,199, 70,194,152,233,160, 63,118,232,168,182, 34, 34,235,111,200,163,191,147,115,222,211, +167, 79,221,180, 90, 45,164, 82, 41,214,172, 89,163,159, 63,127,126,120, 74, 74, 74,115, 90,194,138,242,226,156,149, 92,117,152, + 86, 6,231,159, 86, 29,102,166, 34,248,208,225, 91,141,204,123,109,194,216,184,228,194,137,141,148, 16,219, 3, 78,254,205,149, +141,107,199, 50,199,231, 48,217, 70, 85,112,105,225,164,148,234, 8, 33,253,122,245, 30,116,110,215,174,157,230,179,230,204,193, +149, 27, 15,145,154,145, 3,158,178,224, 9,193,140, 25,179,224,108,111,139,172,184,167, 42,173, 94,223,171,248, 86, 60,255,245, +124, 39,132, 25,119,230,200,150, 21, 12, 1,159,155,248, 68,198,102, 71, 42, 63, 25,216, 75,212,175, 95, 63, 28, 56,112, 0,161, +161,161,235, 74, 19, 89, 69, 57, 41,101,198, 61,188,176,123, 5, 1,120,117,242, 19,153, 40,231,133,114,200,199,189, 68, 3, 7, + 14,196,193, 99, 87,177,235,232,139,181, 59,143,208,163,239,115,135,165, 82,158,225, 45, 68, 8,109,238, 95,205,173, 69,253, 0, +185,200,168, 70,204,163, 72,164,229,106,112, 38, 44, 42,131,161, 76,165,125,235,228, 85,144, 18, 68, 71, 63,253,211,127, 25, 25, +242,252, 6,189, 98,219, 74, 49, 12,243,134, 53,235,109, 44, 89, 69,195,233,228,228,244,198,118, 46, 69, 27,238,130, 57, 64,149, +112,237, 48, 45, 58, 58,218, 50, 58, 58, 26,148, 82,220,184,113,195,178, 73,147, 38,211,222,198,154, 53,105,210,164, 66,171, 85, +241,239,146,206,149,135,252, 73,233,203,237,237,237,247, 78,153, 50,101,108,147, 38, 77, 58,206,153, 51,135, 0, 96, 43, 89, 0, + 57,158,231, 17, 18, 18,130, 3, 7, 14, 24,245,122,253,200,184,184,184,162,115, 29, 86,186,186,186,158,233,221,187,247,150, 39, + 79,158,176,225,225,225, 48, 69,208,169,213,106,248,248,248,128,227, 56, 44, 28,235,129,236,236,218,224, 56, 14, 70,163, 17,102, +102,102,111,236,115,105, 74, 62, 49, 12, 3,163,209,248, 39,161,117,227,198, 13,176, 44,139,230,205,155,227,238,221,187,133, 22, +173,242, 44, 80,122,189, 62,218,201,201,201,105,222,188,121,133,225, 74, 78, 78,198,233,211,167,241,193,135, 77,225, 63,114, 20, +226,226,226,176,108,217, 50,184,186,186,226,167,159,126, 66, 90, 90, 26, 56,142,251,187,205,233, 93,194,195,195,221, 63,254,248, +227,164,135, 15, 31,186, 31, 59,118,204,186, 91,183,110,102,131, 6, 13, 74,122,248,240,161, 59, 33,164, 41, 42, 56, 9,218,104, + 52, 78, 39,132,156,252,233,167,159,166,125,245,213, 87, 77,134, 14, 29, 42, 22,139,197,124,108,108, 44,183,115,231, 78,226,227, +227,195, 72, 36, 18,114,234,212, 41,254,230,205,155,215, 57,142, 91, 72, 41,189, 84, 17,139,115, 81,145,197,178,172, 73, 34,171, + 56, 38, 56,202,134, 88, 48,201,205, 87,173,153,207,248,121,187,235,183,238, 60,253,250,210,181,167,207, 89, 45, 55,225, 55,224, + 57,254, 31,130,101,217, 61,181,106,213, 26, 54,110,220, 56, 69,167, 78,157,100,115,231,206,205,204,206,206, 46, 81,100,149,242, + 94,254,229,171, 14, 1,252, 58,125,242,177, 9, 95,215, 30, 86,237,115,231, 42, 56,155,155,132,116, 17,203, 88, 90, 51,168,239, +197, 34, 59,229,153,195,209,115,155, 95,162, 28,191,108,148,210, 91,132,144,246, 1,181,235,237, 95,248,211, 66,199,153, 83,167, +136,247, 31, 59, 1,202,233,113,227,194, 5,152, 75,140,244,209,157,179,137, 90,189,174,231,251,184, 5, 79,220,229,149,187, 8, + 33,135,109,109,109,239,127, 54,116,168, 79,173, 90,131,160, 84, 42,177,111,223, 62,108, 91,185,210,184, 28,232,191,158,144,187, +163,242,124,234,149,138,196,107,133, 60,247, 70,124,246,153,111,253,250,159, 67,169, 84, 98,239,222,189,216,178,124,185,201, 60, +255,113,107, 86,129,103,248,224,252,111, 19,252,104, 49, 36,251,250,211,168,156, 27, 79,163,114,192, 83,202, 83,170,101, 24,188, +206,213,235,127,138,120, 30,115,170,146, 1, 1,207,243,248,225,199,113,239, 50,114,133,226,167,178, 75,186, 75,104, 36, 98,138, +238,145, 86,222,134,210, 0, 96, 48, 24, 98, 76,164, 95,224,233,249,167, 61, 80, 23, 84, 54,172, 5,195,129,166,138, 44, 83,253, +104, 1, 64, 74, 74, 74, 60,128,153, 46, 46, 46, 59, 58,118,236, 56, 2, 64,108, 37,243,104, 67,171, 86,173, 70, 2, 96, 9, 33, +235, 98, 99, 99,255, 52,161, 52, 46, 46, 46,194,205,205,109,177,183,183,119,225, 70,211,101,113,242, 60,255,162,118,237,218,250, +146,242,162,180, 99,158,231,203,205,163,140,140, 12, 52,110,220,248, 79,123, 90, 82, 74, 17, 21, 21, 85, 96,113, 42, 76,251,178, + 4, 92, 78, 78,206,168, 47,191,252,114,189, 88, 44,246, 4, 64, 10, 68,174,209,104,100,127,249,229, 23,185,209,104,100, 1, 16, +134, 97, 56,177, 88,172, 57,112,224, 0,199,113, 92,180, 86,171, 29,245, 55,215, 17,123, 73,222, 86, 12,185,225,225,225,126,249, +150,172,152,208,208,208,123,187,118,237,114, 0,176,187,146,101,243, 18,128, 75,132,144, 22,107,214,172,153, 62,106,212,168,198, + 3, 7, 14, 20,181,110,221, 26,193,193,193,198,144,144,144, 27,106,181,122, 65, 69, 4, 86,126, 94,102,122,120,120, 20, 10,174, +114,222,229, 50, 39,242,218,121,201, 86, 13, 30,227, 42,223,176,224,116, 78, 74,156,238,170, 33, 71,247,237,102, 32, 20,255,143, +145,144,144, 48,153, 16, 50,107,217,178,101,113,117,235,214,149, 73, 36, 18,157,169, 34,235,111,180, 30,112,132,144,174, 63,119, +232,123,184,213,140, 47,189, 59,180,105,174,244,168,226,232,246, 40, 50, 17,207,174, 5,231,222, 63,250,227, 43,170, 77,239, 65, + 41,229, 76,224,186, 73, 8,169, 49,105,202,164,130, 77,165,235,180, 59,115,136,254, 63,218, 84,250,135,197,139, 23,251,212,170, + 85, 11,251,246,237,195,153,237,219, 49, 32, 37, 5,231, 89,150,101, 36, 18,187,163,122,253, 18,152,230,184,248,135,165, 75,151, +250, 6, 6, 6, 98,207,158, 61, 56,181,101, 11,250, 87,142,167, 52, 52, 2,224, 80,208, 60, 1,120, 2,160, 1, 0, 5, 0, 45, +242,182,118,178, 47,114,125,106,254,127, 5,255, 95, 4,240, 87, 78,132, 45,223, 51,124,113, 60,124,250,178,193,187, 14,133, 90, +173, 78,243,241,241,169,208,154,107,131,193, 80,230, 24, 46,199,113, 49,213,170, 85, 51,217,106, 97,138, 40, 74, 77, 77,109,248, + 23, 86, 16,111, 53, 23,235,141, 70,132,231, 95,185,184,184,240, 5,141,126, 73, 34,172,164,115, 20,120, 89,145,231,196,199,199, + 63, 1,240,117,101,195, 25, 27, 27,187, 31, 38,108, 26,109,234,117, 0,144,150,150,246,206, 55,243, 37,148,198,206,157, 59,183, + 66, 2, 27,148,198,150,145,215, 15, 1, 52,249,183,215,178, 5, 91,239, 16, 66,152,208,208,208, 17,249,195,219,103, 1,172,203, +247,232,253,182,252,133,130,107,195,134, 13, 19, 40,165,200,202,202, 90, 94, 81,129, 85,216,123, 78, 76, 12,126, 87,113, 79, 75, +212,253,177,115, 93, 76, 91,117,134,126,194,198, 28,221, 22, 8, 40,200, 51,141,163,163,227,239,159,124,242,201, 7, 0, 54,191, + 45, 95, 73,195,137,239, 32,140, 47, 9, 33,117,207, 79,250,254,179,243,214, 22, 65, 48,138,252,160, 99,142, 66,151, 26, 12,224, + 55, 83,172,226, 69,227,139, 60, 55, 37, 75,255, 63,229,115,190,255,171, 9,195,134, 13,195,172, 89,179,112,106,201, 18,253, 24, + 66, 50,197, 0, 61,153,215,209,100, 8, 48,213, 84,158, 33, 67,134, 96,214,172, 89, 56,190,112, 97,165,120,202,129, 3, 33,228, + 24, 0, 76,155, 54,237,219,249,243,231,219, 76,159, 62,189,206,130, 5, 11,126,202, 63, 14, 43,248, 63, 63, 79,187, 77,159, 62, + 61,160,200,255,217, 0,110,253,197,233, 89,162,103,248, 55,122,236,239,250, 3,160,189,192, 41,112, 10,156, 2,167,192, 41,112, + 10,156, 2,231, 91,126,130,242, 36, 75,233,223,165,253, 46,114, 14,255,196, 71, 36,244,221, 4, 8, 16, 32, 64,128, 0, 1,255, + 81,171,220,177,183,249,255, 29,134,163, 96,142, 86, 81, 75,233, 6, 32,111,185,123,251, 82, 76,169, 21,113, 28,217,190, 18,102, +223,179, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,254,255,226, 44,143,187,148,251,131, 8, 33,199, 40,165,221, 74,251, 46, + 16, 86,197,127, 23, 57,247,206,166, 29,148, 16,151,145,165,205,209, 18,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, +252, 79, 12, 29, 2,160,211,166, 77,155,254,111, 27, 58, 4,224, 2, 96,100,209,143, 9, 67,135,251,216,216, 88, 88, 74,165, 74, + 9, 0,232,116, 42,189,155, 27,178,128,190,255,216,134,183, 2,254,179,166, 93,167,124, 81,159,248, 46,175, 21, 32, 64,128, 0, + 1,255,111,144, 92, 96,169, 2,144, 12,128,228, 31,235,242,191,147,243,219,142,226,191,223,248,255,175, 2,165, 52, 30, 64,137, +171,229, 69,165,137,172,148, 20,165,189, 72,148,238,107, 52,106,106, 2,128, 72,196, 60, 78, 73,177,137,176,183,223,151, 82, 25, +177,229,224,228,116, 71,204,178,110,166, 92,107, 48, 26, 99, 83, 18, 19,223,112, 29, 79,129,255,188,192, 51, 85, 68,188,141,216, +248, 59,132,138,131,131,131,147,147,147,211, 71,150,150,150, 31,102,100,100,220, 76, 78, 78, 62, 88,218,190,135,132,144,249,132, + 96, 74,254,239, 69,148,210,233,101,132,221,228,107, 75,184,215, 71,169, 84,142, 37,132, 4,230,199, 63, 84,165, 82,173,161,148, + 62,253,127, 40,108, 21, 0,122,138, 68,162, 33,246,246,246,141, 19, 18, 18,230, 82, 74,151, 85,146, 75, 4, 96,146,181,181,245, + 64,107,107,235,170,105,105,105,207,179,178,178,246, 0, 88, 74, 41, 45,119,169,244,119,227, 93, 63,108,221,169,245,204,144, 83, + 33, 63,204, 89, 17,119,237, 79,255, 79,118,181,235,216,161,217,172,144,163, 87,231, 77, 95, 21,155, 86,193,176, 49, 0, 10,156, +230,241,249,189, 86,250,142,211, 82, 12,160, 59,128,214, 0, 66, 0, 28, 53, 37,222,165,112,125, 0,224,219,252, 48, 47,165,148, +158,255,151,151, 35, 51, 39, 39,167,133, 0,186,139, 68,162,240,216,216,216,145,148,210,152,127, 56, 76, 34,228, 45,243, 15, 68, +158, 27,142, 91,166,184,112, 48, 5,246,246,246,221, 68, 34,209,216,124,215, 46,107, 82, 82, 82,142,253, 91,243, 70, 38,147, 45, +119,118,118,254, 92,173, 86,171, 8, 33,180,168,191, 71,142,227, 98,146,147,147, 27,190,135, 85,219,173,127,249,251, 50,178, 4, +241, 85,186, 31,173,216, 88, 88,138, 68,233,190, 73, 9, 15, 7,196,197, 63,232, 15, 0,174, 46,117,246, 56, 58,215,222, 29, 27, + 43,213, 55,234,208,219, 92,172, 20,173, 97, 89,113, 61,141, 78,107, 47, 22,137, 83,244,156,225, 30,163,163, 99,227, 31, 31, 40, +209,217,162,152,101,221, 94, 69,156,119,228,244,105, 16,203, 93, 33, 86,120,150, 26, 96, 87, 87,215, 74, 69,212,214,182,186,133, + 94, 38,159, 32, 22,179, 29,120,202, 5, 82, 30, 96,136, 56,148, 51, 26,206, 73,180,218,159,211,210, 34,179, 43,155,136, 53,237, +137, 51, 5, 6,130,160, 3, 40,206, 16, 96,215,227, 20,154, 80,129, 76, 48, 73, 68,188,165,216, 40,122,239, 50, 74,233,228,119, + 93,152,220,221,221,109,250,244,233,179,252,251,239,191, 87,152,155,155,147,232,232,232, 78, 83,167, 78,109,233,238,238,254,117, + 76, 76, 76, 92,113,209, 71, 8,166,240, 60,101, 0,128, 97,200, 84, 39, 39, 39, 37,203,178,127,242,109,100, 52, 26,149,132, 96, + 28,207, 83,146,127,237, 20, 66,200, 10, 83, 4,163, 66,161, 24,212,184, 73,211,175, 23, 46, 94,106,238,228,232,104,198, 25,121, +253,203,168, 87,202,153,211, 38, 55, 81, 40, 20, 43,212,106,245,206, 74,188, 52,132,101,217, 1, 50,153,172, 27,128, 90,249,167, + 31,105,181,218, 99, 70,163,113,183,169, 13,186,179,179,243, 69,150,101,171, 84,228,217, 70,163, 49, 58, 33, 33,161,121, 37, 95, +246,126,158,158,158,191,181,106,213, 74,217,184,113, 99, 72,165, 82,204,154, 53,107, 18,128,101,166, 8, 42,165, 82, 57,192,204, +204,172, 90, 78, 78, 78,164, 90,173,222, 47,149, 74,219,175, 88,177,194,163, 89,179,102, 22,137,137,137,132,101, 89,167, 99,199, +142,125,186,114,229,202, 78,132,144,118,229, 53,114,153,145,116,166,172,123,173, 22,153,145,231,103, 2,232, 82,252,127, 78, 35, + 31, 66, 89,143,110,106,122,247, 53, 42,176,180,158, 16,194,136,197,226, 21,206,206,206,195, 52, 26,141, 6,121,190,215,168,147, +147, 83, 97,131, 3, 0, 58,157, 46, 61, 61, 61,221,175, 18,233,232, 7, 96,184,181,181,245,176,111,190,249,198,166, 75,151, 46, +216,190,125,251, 23, 27, 55,110, 76, 39,132,252, 14,224, 87, 74,233,147, 10,210, 78, 73, 72, 72,232, 42, 22,139,137,135,135, 7, + 11,224,124, 5,194,227, 11, 96, 70,126, 99,179,134, 82,106, 36,132,180, 1,242,222,119, 0,139, 10,132, 27,203,178,107,252,252, +252, 62,122,244,232,209, 90, 74,233, 15,149,125,215,157,157,157,215,175, 94,189,186,127,143, 30, 61,216,228,228,100,183,186,117, +235,238, 0,208,226, 29, 52, 72,159,201,100,178,137,117,234,212,241,127,242,228, 73, 68, 86, 86,214,210,252,244,164,101,220,227, + 14,160,189,181,181,117,187, 25, 51,102,152,119,235,214, 13, 27, 54,108,232,186,113,227,198, 28, 66,200, 57, 0,103,223, 86, 4, +138, 68,162,177, 49, 49, 49,246,148, 82,184,184,184,140, 69, 57,155,155,255, 83, 96, 89,118,197,128, 1, 3,134,237,216,177, 67, +249,234,213, 43,165,155,155, 91,161,243,108, 66, 72,165,219, 79, 1,111,109,209,218, 80, 32,184, 76,242,163, 37,149, 42, 37, 70, +163,166,102, 92,252,131,254, 45, 91,253, 98, 5, 0, 23, 47,124,217,223,209, 57, 32, 84, 42, 85, 70,200, 44,229, 7,122,119,111, + 95,175,111,183, 86,196,221,197, 17, 49,241, 73, 78,191,238, 58,213,249,216,169,243, 7,144,231, 64,172, 68,112,250, 52, 40,244, +103,241,228,242, 74,216,183,142,195,170,227, 49,184,118,255, 37, 84,153, 41,168,226,172,192,226, 9, 29,225,108,163,172, 84, 36, +205,157,124,219, 48,114,229,238,143, 7,125, 98,245, 81,207, 90, 98, 47,103,103, 80, 42, 67, 68,100, 78,211, 19,167,207, 55,218, +191,119,231, 88,115, 39,223, 1, 57,137, 17, 38, 87,110, 13, 92,137, 34, 87,143,158, 34,150,124,218,162, 73, 64,187, 65, 93, 91, + 48,254,181,106, 32, 60,236, 81,199,195,127,220, 88,236,239,196,156,227,140,116,171,153, 4,135,238,196,149,238,208,175, 36,193, +209,161, 67,135, 22, 50,153, 76, 95,244, 58,173, 86, 43, 33, 4, 31, 84, 70,108, 20, 60, 67,167,211, 50, 98,177, 20, 12, 67,190, +174, 83,167, 78,173,148,148,148,243,132,144,223, 98, 99, 43,102, 45,248,138, 16,105,186, 72,212,128,145,201, 92,140, 58,157, 29, + 0, 16,169, 52,221,221,198,166,246,140,111,191, 53,103, 89,150, 79, 77, 77,133, 74,165, 34, 35, 70,140,144, 71, 70, 70,246, 6, +176,178,156, 48, 98,227,198,141,190, 46, 46, 46,186,226,255,197,199,199, 75,123,244,248,168, 50,149,182,239, 7, 31, 54,155,120, +234,212,201, 90, 89,105,233,154,141,203,214,223, 49,200,149,218,170,181,252,196,107, 54,108,177, 26, 57,108,240,151,132,144,123, +148,210,136, 10,112,122, 42, 20,138, 3, 75,150, 44, 9,108,211,166,141,216,209,209, 17,137,137,137,120,244,232, 81,224, 31,127, +252,209,115,203,150, 45,147, 8, 33,189, 41,165,166,120,112,247, 57,183,245, 55, 71, 51, 91, 59, 24, 13, 6,184,214,169, 95,232, +223,236,217, 31,167,193,233,245,224, 13, 6,212,234,214, 51,207, 44,195,243,240,247,247,175,148,215, 93, 66,136,107, 64, 64,192, +182,159,126,250, 73,162,213,106,113,227,198, 13,156, 63,127,158,143,143,143, 95, 80,158,200, 34,132,156,158, 51,103,142,123,243, +230,205, 45, 82, 82, 82, 96, 52, 26,237, 15, 29, 58, 52,182,126,253,250,150, 30, 30, 30,210,173, 91,183, 34, 39, 39, 7, 28,199, +217, 86,171, 86,205,118,208,160, 65,186,173, 91,183, 78, 2,176,176, 52, 75, 86, 86, 36,157,153, 64,170,117,246,107, 48, 4, 9, +228,100,231,175,187,184,156,176,172, 78, 10, 45, 91, 93,170, 87,183,168, 86,211,108,170,185,101,109,219,172,216,179, 83,187, 84, +175,190,241, 68,100,249,157, 33, 66, 8,195, 48,204,138,222,189,123,127,188,107,215, 46,229,163, 71,143,148,181,106,213, 2,207, +243,133, 30,248, 11, 28,206,250,248,248, 84, 38, 29, 23,140, 30, 61,122,106,255,254,253, 81,167, 78,157, 66,167,168,179,103,207, +198,212,169, 83,109, 46, 94,188, 56,105,231,206,157,147, 8, 33, 11, 41,165,211, 42,210,150, 23,109, 47, 43, 24,172,239, 94,188, +120,209,239,192,129, 3,131,167, 76,153,226, 3, 96, 28,128, 89,169,169,169,173, 0,192,206,206, 78, 10,224, 60, 33,228,179,111, +190,249,102,204,180,105,211,208,181,107,215, 89,132,144, 31, 43, 99,229, 35,132,176,246,246,246, 93,123,244,232,193, 26, 12, 6, +152,153,153,193, 96, 48, 84,127, 75,129, 69, 0,172, 30, 53,106,212,152,209,163, 71,195,198,198, 6, 6,131,193,119,215,174, 93, + 27,103,205,154,245, 33, 33,100,120, 73, 97, 37,132, 12, 25, 51,102, 76,159, 79, 62,249, 4, 13, 27, 54,132, 72,148,151,140, 75, +150, 44,193,188,121,243,204, 79,159, 62,221,115,235,214,173, 61, 9, 33,251, 41,165,149,246,133,198,243, 60, 68, 34, 17, 94,191, +126, 13, 71, 71, 71,153,173,173,237, 41, 66,200,134,212,212,212,131,255, 34,171,201,162, 1, 3, 6,124,188, 99,199, 14,115, 0, + 88,188,120, 49, 38, 78,156, 8, 39, 39, 39,152,155,155, 11,106,231, 95, 98,209, 42,238, 71,171, 82,238, 29, 84, 42, 85,253,233, + 95,125, 10,134,201,235, 53,214,168,234,137,249,223,142, 36,135,143,157,170, 95,214,125, 98,185, 43,158, 92, 94, 9,153,199, 4, +104, 13, 28,174,223,127,129, 51,139, 59, 1, 0,124,187,204,128, 86,223,174, 64, 25,218, 74, 21,138, 69, 58,163,241, 10,156,157, +111, 32, 42, 42,185, 60,145,229,224,236,116,108,221,186,133,138,192,234,126,208,115, 6,196, 38,197,130, 16, 25,220,221, 44,240, +217,144, 46,226, 86,173, 92,237,191,251,110,125,176,153,131,111,175,220,228,136,114, 29,134,250, 57,144,205, 45,234,251,244, 31, + 20,212, 92, 86, 59, 48, 0, 18,153,226,127, 2,172, 97, 67, 52,104,216,144,153,150,147,221,225,230,173, 59, 29,246,157,190,174, +245,115, 32,123,158, 36,211,161,101,229, 67, 81,193, 49,126,252,120, 20,244,190, 11,144,152,152,136, 63,254, 56, 87,226, 61,166, +230,117,209,103,252,248,227,143, 22,233,233,233, 93, 54,109,218,212,214,197,197,229,199,248,248,248,203,166,144,124, 74, 72, 21, +200,100,237,134, 45, 93,202,215,251,232, 35,214,218,217,153,225,141, 70, 18,247,252,185,221,178,149, 43, 91,167, 61,123,166,200, +181,181, 77, 75, 87,171, 85, 17, 17, 17,144,203,229, 68, 36, 18, 53, 42, 65,225, 39, 18, 66, 22, 49, 12,153, 74, 8,129, 76, 38, +143, 24, 61,122,244,221,252,191,171, 28, 61,122, 84,217,189,123,119, 21,128, 87,121,230,112,185, 27,203, 50,190,121, 19, 8,177, +200, 20,129,105,102,102,246,213, 15, 63, 45, 52,203, 74,203, 80,235,115,115, 13, 14,150,230,132,152, 91,176, 89,153,217,217,177, +241,201,218, 25,115,231,177,163, 62,251,228, 43, 0, 99, 77, 21, 89,117,235,214,189,121,224,192, 1, 71, 59, 59, 59,100,100,100, + 32, 53, 53, 21, 55,111,222, 4,207,243,232,221,187,183,172,105,147,198,245,191,157, 49,243, 26, 33,228, 67, 83,196,150,153,173, + 61, 22, 55,175,151,215, 88,191, 74, 45,204,159, 13,253,186, 21, 94, 51, 47, 38, 19, 0, 32,151,203,223,102, 11,169, 15,219,181, +107, 39, 1,128,225,195,135,103,101,103,103,207, 7,176,131,150,225, 84, 53, 31,147,102,206,156,233, 86,181,106, 85,175, 29, 59, +118, 32, 39, 39, 7, 0, 28,171, 86,173, 10, 63, 63, 63, 99, 72, 72, 8,124,125,125, 97, 97, 97,129,139, 23, 47,226,250,245,235, +104,208,160,129,133, 68, 34,233, 95,154,208,106,221,169,245, 76, 89,247, 90, 45,252, 26, 12,129,185,165, 11, 54,238,220,141, 39, +119,182,180,208,234, 31,205,156, 63,206,237, 19, 53,149, 13,117,247,177,152, 86,165, 97, 43,187, 26, 1, 31,193,171,193, 93,123, +141,241,210,139, 89, 95, 84, 91, 32,146,107,182,204, 89, 18,151, 90,154,200, 2,176,184,119,239,222,253,118,237,218,101, 13, 0, + 15, 31, 62, 68, 98, 98, 34, 28, 28, 28, 32,151,203, 33, 22,139, 11,247, 39,173, 36,134,174, 89,179,166, 80,180,113, 28, 87,184, + 11,128, 82,169, 68,203,150, 45, 81,175, 94, 61, 28, 60,120,112, 40,128,105, 37,132,177,121,147, 38, 77,182,123,121,121,121, 20, + 61, 31, 20, 20,132,129, 3, 7, 2, 0, 90,181,106,213,174,111,223,190,180, 64, 16,198,199,199,231,220,186,117,171, 3,165,244, + 70, 73, 1, 98, 24, 70, 29, 27, 27,139,111,190,249, 6, 47, 95,190,252,130, 16, 18, 5, 64, 46,149, 74, 11,251,199,132, 16,223, +128,128,128, 21, 19, 39, 78, 68,100,100, 36,194,195,195,111, 86,118, 40,149, 82,106,244,246,246,126,102, 48, 24, 26,114, 28, 7, +181, 90,141, 94,189,122,201,109,109,109, 19, 89,150,125,156,146,146, 50, 56,127, 78,138,169,141,144, 28,192,210,209,163, 71,143, +153, 50,101, 10,206,157, 59,135,195,135, 15,227,147, 79, 62,193,132, 9, 19, 96,110,110, 62,108,194,132, 9,215,144,183,161,121, +113,180, 91,179,102, 13,140, 70,227,159,222, 13,185, 92,142,230,205,155,195,223,223, 31,135, 15, 31,110,135, 34,251,163, 86,176, +145,244,234,221,187,183,148,231,121,228,230,230, 34, 36, 36,196, 92,161, 80,152,187,187,187,143, 0,240,175, 17, 90, 94, 94, 94, +163,119,237,218,101, 94,116,244, 71, 38,147,161, 72, 57, 16,240, 15, 91,180,202,235, 97, 21, 66,167, 83,233, 69, 34,230,177,171, + 75,157, 61, 23, 47,124, 89, 56,116, 8, 48,143,117, 58,149, 30, 0,140, 60, 69,150,138,131, 66,198,224, 85, 66, 54,194,158,167, +148,244,224, 55,150,104,138, 21,158,144, 53,126, 5, 74, 41,116,122, 35,180,153, 9,152, 31,172,194,163, 24, 13,116,185,233,208, +233,243,166, 97,217,219,219,139, 78,157, 58, 49,241,236,217, 63,198,252,254,251,239,108,140,149, 85, 56, 50, 51,235,151,196,105, +107, 91,221, 66,100,166,216,179,118,221, 44, 5,101,159, 35, 34, 58, 23, 53,220, 27,195,222,218, 3, 9, 41,185,184, 18,126, 28, +143,159, 30, 67, 85, 23, 47, 76,248,170,179,252,135,159,118,236,182,177,169,234,153,158,254, 34,171,180,112,230, 99,200,250,147, + 17,224,210,158,195,152, 26, 9, 99,118,220,159, 5,158,131, 39, 26,180,113,131,131, 71,117,217,208, 9,243,134, 0, 24, 90, 18, + 39,165, 52,145,101,217,181, 12, 67,198, 16, 66, 80,167, 78,221,152,165, 75,151,234, 75,120,166,190, 78,157,186, 49, 44,203,184, +231, 85,236,204, 26,158, 55, 38,150, 19,206, 55, 68,141, 84, 42,155,146,103,246,119,121, 29, 28, 28,172,239,215,175, 31,150, 44, + 89, 34,157, 58,117,234, 12,119,119,247,225,197,135,247,138,115,246, 38,196,211,173,122,245,142, 63, 94,185, 66,197, 6, 3, 73, +187,121, 51, 43, 35, 62,158, 75,200,206,150,238,125,252,184,235,231,147, 39, 75, 61, 60, 60,112,249,216, 49,187,228,220, 92,154, +161,213,170, 51, 50, 50, 40,199,113, 55, 75,137,251,116, 39, 39, 39,229,198,141, 27,125, 71,143, 30,125, 55, 46, 46,110,122,126, + 5, 49, 31,128, 63,128, 87, 69,206, 97,221,186,221,177, 35, 70,140,136, 72, 76, 76,156, 94, 86, 56,139, 32,192,209,193, 81,185, +115,253,214, 7,182, 22, 10,198,193,221,149, 17, 91, 91,139, 56,169, 66,194, 3,234,170, 30,213,205, 0, 4,148,146,102,103,139, +247,184, 21, 10,197,129, 35, 71,142, 56,138,197, 98, 24,141, 70, 56, 56, 56,224,229,203,151,200,200,200, 64,118,118, 54, 94, 60, +126, 4,111, 15, 15,124, 55,109,170,203,184,169,211, 14, 16, 66, 26, 22,109,204, 74,220, 0,217,160,255,147,101,175,148,141,200, +223,248, 54, 37,223,139,225,101,116,116, 52,204,205,205, 17, 24, 24,104,126,229,202,149, 75,165,137,172, 98,155, 0,247,111,214, +172,153,197,206,157, 59,209,160, 65, 3, 88, 89, 89, 33, 36, 36, 4, 15, 31, 62,132, 94,175,103,114,114,114, 96, 97, 97,129, 5, + 11, 22,192,203,203, 11, 89, 89, 89,136,142,142,182, 19,139,197,246,165,113,134,156, 10,249, 33, 51,242,252,204, 4,114,178,243, +198,157,187, 49, 98,208, 0, 56,211,231,151,172,170,147, 31, 58,118,111, 54,155,178, 30,221,204, 44,234,216,248, 4,118,135, 68, +106,142,113, 83,230, 33, 34,244,168,141, 42,251,193, 23,196,248,218, 3,192,248,226,156,249, 22, 17,198,195,195,227,243,189,123, +247, 90, 20, 25, 74, 41,220,243,176,232, 38,240,165,109,248,110, 74,122, 18, 66,240,242,229, 75, 56, 58, 58,194,220,220,188,112, + 3,241, 71,143, 30,225,250,245,235, 40,216,141,162, 20,206,193,103,207,158,245, 48, 51, 51, 43,126, 13, 82, 82, 82,192,113, 28, +148, 74, 37,140, 70, 35,244,122, 61, 12, 6, 3, 52, 26,141,185,191,191,255, 88, 0, 55, 74,226,228,121,254,235,254,253,251, 55, +187,113,227, 70,181,149, 43, 87, 66,167,211, 45, 78, 72, 72, 64,159, 62,125,192,243, 60,218,181,107,247, 1,165,244,201,140, 25, + 51, 0, 0, 19, 39, 78, 52,228,230,230,142,174, 76,220,243,227,239,223,183,111,223,106,231,206,157, 67,139, 22, 45,160,213,106, +177,100,201, 18,203,117,235,214, 89,110,221,186,213, 97,202,148, 41,191, 1,232, 84, 22,103,126,126, 45,118,118,118, 30, 51,104, +208, 32, 69,254, 30,166,216,178,101, 11,190,251,238,187, 93, 0,102,156, 56,113, 98,206,225,195,135,135,124,254,249,231,248,238, +187,239, 38, 20, 8,173,146, 56, 95,188,120, 1, 7, 7, 7, 88, 90, 90,230, 85,150,122, 61,238,221,187,135, 51,103,206,160,102, +205,154,166, 52,132,103,203, 16, 89,191,237,220,185,211,226,245,235,215,184,120,241, 34,188,189,189,161, 82,169,202,221, 27,246, + 93,111,254, 92, 30,167, 90,173,214, 68, 71, 71,155, 47, 92,184, 16, 46, 46, 46,240,242,242,130, 92, 46, 7, 33, 4, 6,131,161, +212,237,213, 76, 9,103,235,214, 68,148, 18,107,211,195,202,218,230, 11, 74,169, 40, 51, 51,125,189, 30, 25,251, 34, 35,169,238, +239,138,251,127,220,162, 85,159, 82,122,183,232,158,135, 5,157, 17, 17, 0, 4, 7, 7,211,160,160, 32, 82,240,237,230,134,172, +148, 20,155, 8, 71,231,218,187, 29,157, 3,242,247,253, 98, 30,179,172, 77,132,147,147, 42, 11, 0,244, 28,197,213,199, 25,120, +240, 44, 1, 15,159, 37,192, 76,102,154,241, 69,171,231,242,214,103, 82, 10, 77,206,255, 58,173,122, 85, 58,180,250,188,233, 30, + 58,173, 10,153,201,225,164, 95,175, 14,242, 49, 99, 70,193,197,197,205,161, 52, 62,189, 76, 62, 97,220,196,174,214,182,214, 98, + 28,187,114, 18, 31,212,236, 5,185, 76,140,212, 76, 13, 64,128,167,207,207, 0,188, 5, 66, 35,162,209, 36, 64,137, 78, 29,255, +143,189,171, 14,143,234,120,187,103,214,119,147,141,187,144, 32, 33, 64,112,119, 66,144, 34, 1,138,123,209, 66,113, 47,193,138, +147,180,184, 22, 43,238,197,138, 59, 65,130, 67, 4, 2, 1, 66, 60, 33,238,235,247,222,249,254,136, 52,132,200, 6,232,247,179, + 61,207,179,207,238,221,123,247,221,185, 51,115,103,206,156,119,230, 29, 15,249,233, 63,223,204, 6,176, 72,159,244, 50,177,143, + 33,114,239, 6, 33,171,131, 46,229, 13,184,140, 40,192,216, 30, 74, 34, 71,106, 66, 20, 94,223, 61,153,183,224,180, 28,176, 44, + 59,201,198,198, 38, 99,193,130, 5,237,171, 87,175,174,157, 56,113, 98, 96,100,100,228, 39,219,218, 84,174, 92,121,221,182,109, +219,240,238,221,187,184,149, 43, 87,222, 78, 78, 78, 94, 88,193, 7,212,135, 16,178, 33,223, 21,151,114,230,204,153,198,254,254, +254,211, 55,108,216, 96, 55,101,202, 20,241,148, 41, 83, 70, 3, 88, 94,150,187,208, 88, 34,233,180,242,206, 29,202,196,198,170, + 15,110,222, 44,222, 26, 16,176, 64,203,113,142,214,182,182,164, 85,243,230,185, 70, 60, 94, 74,106, 98, 34, 99, 83,173, 26, 63, +226,218, 53, 43, 42,147,197, 95,186,116, 41, 43, 39, 39,167,212,173,115,248,124,190,162, 36,119, 97, 73,112,112,112,208,148, 52, +135,171,140,202,157,197, 81,170, 53,175, 90,149,126,215,177,101,245,119,111,194,195,165,230,230,124,247,234, 85,106,190,124, 29, +241,152,178,172,138, 16,146,165,143, 45, 62,159, 63,104,195,134, 13,245, 76, 77, 77,193,113, 28,204,204,204,144,156,156, 12,141, + 70,131,172,172, 44,104,178, 51,161,201,204, 68,112, 84, 4, 90,183,111,143, 1, 93,191,243, 56,112,230,175, 65, 0,142,150,101, +215,177,126,163, 66, 37,107, 89,101,171,191,125, 65, 49, 25,133,164,235,215, 70,238, 16,201,229,232, 60,211,231,107, 26,232,231, + 98,177,248, 98,223,190,125,187,207,158, 61,155,151,144,144,112,153, 16,210,154, 82,250,170, 76, 69, 88, 46,119, 75, 73, 73, 65, +118,118, 54,204,204,204,176, 97,195, 6,216,217,217, 65,161, 80,224,201,147, 39,212,217,217,153,220,186,117, 11,206,206,206, 72, + 73, 73,129, 86,171, 69,110,110,238, 71,141, 70, 83,170,187, 60,223, 61,216,109,102, 55,135, 75,111,158,237,111,235, 68, 62, 60, + 25, 56,203,243,221,155,224,215,209, 87,175,221, 95,206,168,164, 49, 25,177,215,231, 86,109,250,220,122,210,156,165,216,178,122, + 49,222, 60,186,147,102,231,146,181, 85, 70,212,251,154,119, 46, 61,189,185,185,185,170,215,175, 95,155, 4, 6, 6,130, 16, 2, + 51, 51, 51, 24, 25, 25,149, 72,182,190,160,177,228, 21,249, 31,228,230,230, 66, 36, 18,193,202,202, 10,187,119,239, 46,236,120, +171, 84,169, 82,150,153, 29,157, 59,119, 30,228,226,226, 98, 82,244,203,166, 77,155, 98,252,248,241,248,253,247,223, 17, 16, 16, +240,201,126,154, 31, 63,126, 76,208,233,116,251,202, 40,219, 12, 66, 72,215, 62,125,250, 60,187,123,247,174,233,238,221,187,193, + 48, 76,137,175, 93,187,118,225,225,195,135,139, 40,165,175,191,176,195,168,213,175, 95,191, 59,135, 14, 29, 50, 79, 78, 78, 70, + 74, 74, 10,114,114,114,144,155,155, 11,150,101, 81,179,102, 77,194, 48, 76,205,242,242,145,207,231,159,217,188,121,115,207, 31, +127,252, 17, 2,129, 0, 26,141, 6,155, 55,111,198,220,185,115, 19, 1,140,164,148,106, 9, 33, 11,246,237,219, 55,162, 87,175, + 94,104,208,160,129, 71, 89, 54,115,114,114,144,147,147, 3,161, 80, 8,123,123,123,172, 88,177, 2, 26, 77, 94,179, 82,163, 70, +141, 66,151, 39,128, 29, 53,106,212,232, 25, 22, 22,182,134, 82,250, 91, 41,237, 76, 31, 74,233, 56,150,101,179,251,246,237,107, +117,228,200, 17,147,184,184, 56, 60,123,246, 12,139, 22, 45, 74,231, 56,142,229, 56,142, 40,149,202, 15,118,118,118,207, 36, 18, +137, 76,161, 80,164,165,166,166,174,162,148, 94,254, 23,118,230, 68, 40, 20, 98,204,152, 49, 16, 8, 4,144,201,100, 80,169, 84, +208,233,116,133,100, 30, 21,116, 75,187,187,155, 88, 9, 32,250,177, 70,141,118,211, 7, 76,235, 97,227,224,232, 4,115, 83, 9, + 66, 67, 95,181,190,121,227,218,230,218, 53,109,182,115, 26,221,246,215, 17, 25,255,248,102,247,197,185,200,127, 24,215,106, 4, +224, 57,138,236,121,136,252, 85,136,165,180, 68,253, 89,107,235, 63, 83,226,226,196, 90,177,216, 40,172, 64,229,202, 35, 89,253, + 89,224, 8, 24,173, 46,191,161,160,249, 47, 61,137,150,142,197,187, 55, 33,184,123,245, 47, 88, 43,226,144,242,161, 33, 32,170, + 7,141, 50, 19, 42,141, 54,127,244,198, 34,240,217, 13,100,101,166,161,110,147, 30, 0,143,247,176, 52,123,102, 86,164, 71,171, +198,245,249,239,162, 67,208,180, 70,127, 84,115,110,139,168,132, 44,100,228,168,145,158,165, 66,195,186, 62, 72, 78, 87, 34, 75, +161,194,171,119, 7,224,228, 88,141, 71, 4,225, 29,245, 37, 90,234, 87,167,160,126,125, 22, 34,215,214, 16,215,236, 5,190,107, + 27, 68, 7,221, 66,224,165,245,136,125,121, 15,148, 99,225, 80,163,153,190, 15,201,230,203,151, 47, 55,107,221,186,181,160, 83, +167, 78, 13, 28, 29, 29, 27,196,199,199, 7,230,171, 57, 13,186,119,239,222,192,198,198, 6, 27, 55,110, 84, 18, 66, 54,127, 97, +103, 91,212,221,246,216,206,206,110,229,169, 83,167, 54,143, 31, 63, 30,182,182,182,245,202,250,109,178, 80,216, 96,228,170, 85, + 84,200,231,211,163, 91,182,136,150, 94,190,188,118,239,190,125,162, 14, 94, 94,132, 82,138, 23, 47, 94, 24,253,186,101,139,209, +208,239,191,143,140, 74, 74, 98,252, 3, 2,180, 9,177,177,217, 73,185,185, 75,227,227,227, 63,254, 43,106,182, 78,167,123,240, + 33,226,131, 83,147,230, 13,109,158,135,126,120,217,165, 67,171, 86, 60, 30,143,247, 38, 60, 42,192,198,198,212,232,218,213,107, + 90,157, 78,247, 64, 31, 91, 18,137,164, 71,135, 14, 29, 4,233,233,233,112,116,116, 68,114,114, 50,226,226,226,242, 20,135,204, +116,104, 51, 51,161,203,202, 0,155,155,131, 15, 79, 30,163, 97,181,170,146, 19,121,147,229,143,150, 83, 38, 37, 42, 85, 69,149, + 45,177,137, 9,196,114, 57, 72, 5,221,134,132,144,239,205,205,205,231,102,100,100, 92,164,148,174,208,106,181,147,231,206,157, +219,116,211,166, 77,214, 43, 87,174, 52, 29, 55,110,220, 9, 66, 72, 67, 74,169,186,140, 14,236, 61,195, 48,214, 0,108,111,220, +184, 1, 91, 91, 91,100,102,102, 22, 40, 45, 26,133, 66, 33, 77, 77, 77,133, 90,173,134, 70,163,129,169,169, 41,158, 62,125,154, +206, 48,204, 95,229,165,207,212,141,172, 80,107, 67, 23, 90,121, 24,199,107, 25, 11,207,164, 52, 46,125,241,154,248,101, 0,214, +118,115,115,219,165,229,238,124,120, 27,114,206, 34,226,201,237,180,248,183,185,213,118, 93, 8,207, 46, 35, 31, 41, 33,132, 35, +132,208, 26, 53,106, 32, 57, 57, 25,124, 62, 31, 70, 70, 70,144,203,229,152, 55,111, 30, 54,111,222, 92, 97,162, 69, 8,145, 26, + 27, 27,175,226,241,120,131,204,204,204,108, 88,150,133,143,143, 15,122,246,236, 9,177, 88, 12,173, 86, 91,168,104, 22,168, 84, +101, 41, 29,148,210, 23, 0, 76,139,253,135,151,181,181,245, 77,181, 90,141,240,240,112,156, 57,115,166, 61,165,212,191,130,207, +118, 56, 33,164,107,155, 54,109,246, 55,110,220,216,141, 82,138,122,245,234, 97,240,224,193, 56,112,224, 0, 2, 3, 3,145,153, +153,201, 93,187,118,109, 47,128, 53, 21,237,192,243,243,183,102,191,126,253,238, 29, 62,124,216, 34, 53, 53, 21, 74,165, 18,185, +185,185, 56,113,226, 4, 90,183,110, 13,107,107,107, 28, 58,116,136,161,148,158, 43,139,100,241,120,188,221,219,183,111,239, 57, +118,236, 88,108,221,186, 21, 71,143, 30, 69,175, 94,189, 48,104,208, 32, 36, 39, 39,219,173, 94,189,122, 4, 33,100, 55,128,197, +131, 7, 15, 70, 78, 78, 14,158, 60,121, 18,170,231, 51,143,140,140, 12,100,100,100, 64, 38,147, 21,125,198, 8,128, 3,235,215, +175, 31, 50,125,250,116, 84,171, 86,109,113,254,162,160,207, 86,137,114, 28,247, 83, 92, 92,156,133, 64, 32,176, 98, 24, 6, 49, + 49, 49,120,250,244, 41, 38, 77,154,148,150,150,150, 54,158, 82, 26, 69, 8, 89, 48,102,204,152, 21, 51,103,206, 44,172, 75, 51, +103,206, 60, 79, 8,233,250,255,173,230,212,172,105, 81, 71,204,151, 76, 19,137,132, 86,233,233,233,133,109,135, 70,163,129, 90, +173,254, 68,201, 18,137,132, 86,205, 26,185, 94, 80, 42,178,231,191, 12, 75, 47,117,131,244,218,213,205,235, 27, 25,155, 77,247, +238, 58, 96,216,119, 93,123,243, 25,157, 14, 87,174,156,195, 31,127,108,131, 87,155, 26,168, 86,189, 30,166, 76,157,102,166,214, + 48, 62,215,174, 93,158,219,170, 89,213,203,217, 89, 25,243,202,178,249, 63,142, 11,249,228,234, 66,137,174,195,146, 25,100,127, +214,201, 9,233,249, 15,142,181,133,133,197, 22,150,101,189,128, 31, 33,148,219,227,213,211, 71, 72, 75, 23, 66,173,100,193,209, + 60,178,165, 23,113, 81,107,112,231,202, 89,108, 88,191, 22,169,169,169,104,211,174, 61,114, 4,149,224, 82,201, 5, 42,165, 34, +255,161, 1,180, 26, 29,108,236, 92,241,252,121,160, 46, 43, 55,183,212, 6, 73, 36,213,122,184,216,213,128, 90,219, 18, 82,177, + 24,153,217, 26,164,231,147,172, 67,127, 14,132, 90,161, 4,163,209,130,209,232, 96,227,210, 15,181,236, 58,128, 99,207,213,169, + 80,246,113, 44,180, 17,119,160,141,184, 3, 89,203,169,248,203,119, 72,177, 6, 80,191,125,119,147,146,146,146, 28, 29, 29,207, +189,120,241,162,207,192,129, 3,113,235,214,173,113, 0, 38,228,187,111,198, 13, 28, 56, 16, 47, 94,188,192,203,151, 47,207, 37, + 37, 37,125,147,141, 87,197, 98,177, 82,173,206,235, 99,141,140,140,164,229, 92,235,212,180,111, 95, 94,230,243,231, 89,235,239, +223, 95,188,107,247,110, 81,167,142, 29,137,142, 97,192,177, 44,170,187,187,147,239,190,251,206,248,192,241,227, 86,124,157,238, +225,156,201,147,111,252, 62,124,120,246,163,156, 28,125, 39,154, 87,206,119, 25, 2, 64,229, 50,190,211, 27,106,181,122,211, 79, + 63,142,234,228,127,231, 94, 37,151, 74, 78,166, 87,174,249, 7, 74,100, 98, 94,181, 42,110,252,244,204, 52,193,178,197,243,101, +106,181, 90, 95,210,234, 97,109,109,141,143, 31, 63,226,221,187,119, 80,171,213,208,233,116,224, 20,185,208,164,103, 64,147,153, + 6,162, 82, 66,194,178, 80,165, 36,162,114,181,170,192,223, 43, 18,203,117, 69,149, 68,180, 10,222,165,166,166, 16, 25,203,193, + 19, 10,245,222, 28,157, 16,210,184, 89,179,102,199, 79,158, 60, 41, 26, 61,122,116,115, 66,200,150,252, 14,162,227,162, 69,139, + 30,111,217,178, 69, 50,126,252,248,154,107,214,172, 25, 1, 96, 71,105,118, 84, 42,213,241, 11, 23, 46, 12,117,117,117,181, 13, + 14, 14,134, 74,165, 2,199,113,232,214,173, 27, 0, 20,214,153, 55,111,222, 40, 85, 42, 85, 82, 72, 72, 72, 86, 84, 84,148, 6, +122,172, 18, 92,188, 49,254,193,204, 1,206,125,237,236,157, 30, 74,101,149,171,208,156,231,125,102, 14,112, 94,189,238, 68,172, +234,210,251,247,217,139, 38, 85,243,203,205, 14,154,100,238,156,179,245,210,185,112,125, 86, 5,211,130,229,236, 86, 86, 86, 16, + 8, 4, 16, 10,133, 16,137, 68, 32,132, 96,234,212,169,216,185,115,103,153,174,195,226, 36,203,196,196,228,229,210,165, 75,157, +199,143, 31, 47,146, 74,165, 72, 79, 79,199,161, 67,135, 48,102,204, 24,252,241,199, 31, 37,206,127, 41,207,165, 84,130, 90, 58, +125,248,240,225,208,104, 52, 24, 60,120, 48,118,237,218, 53, 29,128,127, 69,235, 59,165,244, 33, 33,196, 61, 48, 48,208, 20, 64, +175, 65,131, 6,237,235,215,175, 31,252,253,253,113,238,220,185,246, 0,194, 0, 40, 1,248,230,111,226,236, 91,214, 66,144,252, + 16, 14,219,108,108,108,122,213,169, 83, 39,176, 95,191,126,117, 15, 31, 62,108,158,148,148, 84,176,248, 1, 17, 17, 17,216,179, +103, 79,194,238,221,187,179, 88,150,181,226,241,120, 23, 50, 50, 50,230,149,225, 46,220,189,126,253,250, 81,249,238, 64,156, 60, +121,146,174, 93,187,150, 44, 90,180, 8,233,233,233,240,242,242,194,246,237,219,167,229,228,228, 52, 88,187,118,237,143, 3, 6, + 12,192,178,101,203,144,155,155,187,190,188,193, 74, 25,228,139, 0,104,181,126,253,122,215,233,211,167,227,228,201,147,104,220, +184,177,236,195,135, 15,191, 3, 24, 91, 82,249, 81, 74,241,225,195, 7, 40, 20, 10,220,187,119, 15,139, 23, 47, 78, 47, 66,178, +166, 77,152, 48, 97,197,180,105,211,176,106,213, 42, 26, 28, 28,156,212,175, 95, 63,187,157, 59,119,242,171, 87,175, 62, 13,121, +155,174,255,191,160,150,187,149, 95,179,166,158,115, 29,156,170,227,208,225, 35, 72, 75, 75, 43,204,147,130,124,161,148, 34, 59, + 59, 27, 31, 63,126,132,153,169, 9, 86,175, 89,209,125,226,184, 81,149,144, 23, 6,227,243,134,206,205,114, 77,255,193, 99,103, + 13, 30, 58, 10,193,129,207,112, 96,223, 14,132, 4,191, 40,180,199,232,180, 8, 11,125,138,176,208,167,176,179,119,197,119,157, +218,147, 33, 67,134,116, 27, 62,116,144, 13,128,127, 44,116,196,127,176,154,245, 89, 28,173,162,115,182, 4,229,201,117,249, 36, +235,229,177, 99,199,172,218,180,105,195,103, 24, 6,151,175, 92,193,164, 9, 63, 96,196,112, 31,104, 97, 1, 70, 35, 2, 39,146, +234,149, 24,165, 82, 1, 10,138,220,220, 92, 4, 4, 4,128,114, 12, 14,236, 92, 11, 74,185, 66,162, 5, 80,104,180, 90, 56,185, +212,196,182, 93, 43, 25, 8,133,143, 75,179,151,149,202,103,117, 12, 69, 92, 82, 52,162, 19, 66, 96,102,226, 2,129,208, 5,169, + 25, 10, 8,120,246,208,169,222,128,205,151, 85, 21,185,177, 80,106,191,174,252,216,204,207,213, 83, 90,129, 70, 87,169, 84, 30, + 60,120,240, 96,247,117,235,214,137,189,189,189,107, 56, 58, 58,182, 2,128,254,253,251,215, 48, 53, 53,197,193,131, 7, 53, 74, +165,242,224, 55, 84,124, 58, 52,107,214, 12,233,233,233,136,136,136, 8, 44,243,222, 52, 26, 43,185,173, 45, 63,233,214, 45, 93, +114,122,122,165, 14, 29, 58, 16, 29,195,128, 71, 8,210, 50, 51, 17, 21, 25, 9,115,115,115,242,242,205, 27,249,230, 41, 83, 78, +215,168, 91, 87, 80,176, 34, 81, 31,156, 59,119,206, 8,121,243,178,202,252,174,130,149, 59,151, 16, 50,106,242,228,201,167, 15, + 30, 60,100,150,152,148, 24, 38, 17,139, 25,185, 92,234, 56,124,216, 68, 65, 70, 70,198, 80, 74,105,142,190,246,210,211,211,241, +225,195, 7,200,100, 50,136,132, 66,112, 74, 5,216,220, 28,168,210,146,193,215,106, 32,102, 89, 88, 26, 73, 80,201,206, 14, 46, + 54,214,122,217,124,119,243,106,225,196,247,162,238,194,213,205, 60, 32, 54,150, 67,108, 34,199,196,243,183,243, 71,163, 34, 96, +209,114,125, 72,150,181,147,147,211, 95,135, 15, 31, 22, 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52, +244,122, 72, 72, 72,143,252, 85,119,229,173, 22, 91,123,234,212,169,206,109,218,180, 97,170, 84,169, 98,156,152,152,232,146,154, +154, 74, 18, 18, 62,157,235,124,241,226, 69,169, 82,169,204,229, 56,238, 52,242,226, 64,149, 27,191,104,230, 0,103,105,192,115, + 76,245,236, 82,185,158,169,117,125,164, 49,207,235, 61, 12, 76,152, 58,115,128,243,166,117, 39, 98, 85, 50,162,222, 71,216,152, + 74, 2,169,106,191,158,229, 77,173,173,173, 17, 26, 26,138,128,128, 0, 68, 69, 69,225,195,135, 15,159, 16,170,113,227,198,225, +192,129, 3,122, 41, 90,198,198,198,171,150, 44, 89,226, 60,125,250,116, 81, 17, 82,132,201,147, 39, 35, 51, 51, 19,187,118,237, +194,228,201,147, 43,220,241, 23, 43,171,170,157, 59,119,246,118,112,112, 64,106,106, 42,236,237,237,209,166, 77,155,158,132,144, + 42,148,210,136, 47,172,250, 19,187,116,233,178, 98,233,210,165,208,233,116, 24, 51,102, 12,222,190,125,123,252,237,219,183, 27, + 92, 92, 92,166,254,252,243,207,118,118,118,118, 24, 56,112,160, 49,128,190,165, 25,177,180,180,244,221,177, 99,199, 80,111,111, +111,158, 86,171,109,119,243,230, 77, 68, 70, 70, 66,163,209,128, 97, 24,188,127,255, 30,147, 39, 79, 78, 72, 77, 77,245,164,148, +190,215, 35, 93,163, 23, 44, 88, 48,106,234,212,169,248,245,215, 95,177,100,201,146,189,102,102,102,117, 27, 54,108,216,104,201, +146, 37,152, 51,103, 14, 92, 93, 93, 97,101,101, 85,107,209,162, 69, 30, 51,103,206,196,166, 77,155,176,120,241,226,189, 0,246, +124, 73, 70,112, 28, 71,252,252,252, 26,172, 95,191,222,161,128,100,241,120, 60, 28, 59,118, 12,207,159, 63,239, 89,202,111,182, +219,219,219,143,115,112,112, 16, 95,187,118, 77,238,234,234, 10,134, 97,116,249, 36,107,179,139,139,203,164,247,239,223,195,219, +219, 27,225,225,225, 7, 41,165, 35, 60, 61, 61,115,103,206,156,105, 36,147,201,204,254, 63, 59,112, 62,143,140, 92,181,108, 14, +158, 60,127,131, 83,167, 68,120,242,228, 9,236,236,236, 32,145, 72, 64, 41,133, 90,173, 70,114,114, 50,116, 90, 53,234,213,169, +138,253,187,253,144,148,148, 12,240, 72,169, 83,110, 8,143, 12, 27,245, 67, 31,220,189,119, 5,191,255,190, 3, 57, 57,185,165, + 12,190,165,168, 94,195, 3, 78,142,182,136,137,141, 1,225,193,250,159,188,215,255,112,215, 97,193,243,174, 95,120,135,162, 48, + 55, 55,223,112,244,232, 81, 43, 47, 47, 47,126,110,110, 46, 56,142, 67,219, 54,109, 48,117,250,116,156, 59,124, 24,238,205, 7, +131,104,228, 96,140,244, 91,245,160, 82, 42, 80,187, 81, 43, 12, 24, 56, 8,209, 81, 81,232,210,163, 31, 84, 42, 69,225, 8,163, + 64,209,210,104,180,176,182,173,132,171, 87,175,242, 49,102, 76,169,115, 76, 88,173, 56, 40,236,189,170,117,134,242, 57, 2,158, + 28,128, 86,173, 69,189,122,139,160,229,172, 96,235, 60, 14, 58,221, 25,100, 37,223,204,115, 99, 88,121, 33, 54, 58, 26, 60,190, +232,229,151,102, 34,151,155,252, 85,141,110, 70, 70, 70,166,163,163,227,159, 1, 1, 1,195,250,246,237,139,171, 87,175,254, 8, + 0,125,251,246, 69, 64, 64, 0, 62,124,248,240,103, 70, 70, 70,230,183, 40,112, 71, 71,199, 94, 94, 94, 94,131,155, 54,109,138, +243,231,207,131, 82,122, 87,175, 7, 91, 40,164, 60, 30, 15, 28,199,129, 0, 72,205,200,192,219,183,111,145,154,146, 2,157, 78, +135,220,156, 28,206,163, 70,141, 28,202,113, 38, 21, 73, 79,209, 21,134, 40, 97,213, 97,193,119, 95, 64,182,162,228,114,121,116, +118, 78,142,141,133,185, 69,182, 88, 44,102,211, 51, 50, 50, 95,189, 12,214,232,217, 57, 20, 32, 52, 36, 36,164,110,124,124, 60, +162,163,163,193,228,102,131,175,214,128,167, 86,160, 99,171,150,144,129, 66, 10, 14, 66, 78, 7, 33, 95,136,236,188,213,121,229, +186, 59, 10,136,126, 81,101,139, 16,146,231, 46, 52, 54,134, 88,110,242,137,194,165, 79,125,146, 72, 36,135, 79,156, 56,225,224, +228,228,132,101,203,150,193,217,217,185, 86,189,122,245, 20,109,219,182,149,217,217,217,161,118,237,218,104,213,170, 21, 46, 93, +186, 4, 0,239,203,201, 63,134, 16,242,221,221,187,119,103,221,191,127,127, 0, 33,132,248,248,248,160,107,215,174,144, 74,165, + 80, 40, 20, 72, 79, 79,199,206,157, 59, 9,165,180, 81,126, 90, 93,165, 82,233, 17, 66, 72,172, 82,169, 28, 88,220,230,129,245, +245, 29,147,210,184, 49,118,246, 78,125, 60,187, 84,174,215,161, 75, 39, 84,117,239,128, 14, 93,162, 1,192,207, 82, 16, 57,120, +245,194,186,167,173, 43, 89,238,185,122,249,218,226, 54,158, 29, 22,248,140,183, 88,225,183, 35, 61, 75,143,134, 12, 28,199,125, + 18, 59,168,248,249, 17, 35, 70,224,216,177, 99,229,230, 35,143,199, 27, 52,126,252,120, 81,209,239, 10, 92,198, 61,122,244, 64, +223,190,125, 63, 33, 90,214,214,214,176,183,183, 71,100,100, 36, 0,164,234, 89,175,166,142, 30, 61,154, 40,149, 74,140, 29, 59, + 22,187,118,237,194,224,193,131,137,191,191,255, 84, 0,211, 43, 90,223,121, 60,222,234,159,127,254,121,214,228,201,147,145,150, +150,134,139, 23, 47,162, 91,183,110, 56,118,236,152,205,197,139, 23, 87,121,121,121,129,207,231,227,252,249,243, 96, 24,166,204, + 88, 95, 34,145,168,151,183,183, 55, 47, 38, 38, 6, 34,145, 8, 77,154, 52, 65,108,108, 44, 20, 10, 5,226,226,226, 48,109,218, +180,143,169,169,169,237,245,125,142, 68, 34,209,244,169, 83,167,226,232,209,163,240,241,241,217, 7, 96,108,102,102,230,128,251, +247,239, 31,253,254,251,239, 17, 23, 23,135,211,167, 79, 99,241,226,197,100,196,136, 17,216,186,117, 43,166, 77,155,182, 23,192, +216, 50, 86, 72,102, 39, 37, 37,153,185,185,185, 33, 49, 49, 17, 57, 57, 57, 56,125,250,180,237,165, 75,151,170, 56, 57, 57,153, +126,248,240,129, 93,190,124,185,120,250,244,233,216,176, 97, 3, 94,188,120,129, 3, 7, 14,160, 67,135, 14, 76,120,120,120,137, + 42, 89,126,200,134,211,150,150,150,215,140,141,141,145,157,157, 93,176,178,116,182,143,143,207,100, 95,223, 60,145, 61, 62, 62, + 30, 35, 71,142, 28, 78, 8,225,150, 46, 93,106, 36, 18,137,160, 82,169,114,255, 63, 59,110,142,229, 0,112,168, 82, 73,142, 43, +231,118,227, 89, 96, 56,158, 5,134, 64, 44,201,155, 4,175, 84, 42,208,168, 94,117, 52,111,210, 12,241, 9,113, 56,120, 96, 55, + 44,173,157,202,108, 71, 40,165, 16, 9, 88,120,212,176,199,225, 3, 59,112,254,226, 13, 28, 56,120,164,112,206,155, 64, 32, 68, +195, 70,205,209,164, 73, 27,132,127,120,143,221,187,127,135,141,109, 37,131,115,240, 11, 81,232, 58, 44,250, 94,140,249,119,104, +211,166, 13, 63, 39, 39, 7, 42,149, 10, 31, 63,126, 68,100,100, 36,204, 45,204, 17, 30, 31,129,246, 70, 90,124,228,178, 16, 26, +248,146, 37,124,225,139,114,165, 65,207,134,128,103, 67, 76, 26, 61,184,244, 74, 0, 10, 99, 83,235, 60,215, 13,195,188,195,166, + 77,165,142,156, 25, 86,119,253,202,181,155,205, 70,143,232, 37,188,122,115, 23,116, 26, 14, 74,157, 25,114, 85, 26,228,106,133, +224,153,117, 3, 82,252,193, 23, 72,208,162, 65,117,156, 62,117, 73, 75, 25,221, 13,189, 51,200,174, 46,152,196,144, 34, 68,235, + 83,143,158,212,196, 82,111,215, 97, 97,199,203,178,199, 14, 29, 58,212,187,101,203,150, 70, 94, 94, 94,110,249, 29,167,246,208, +161, 67, 10,150,101,143, 85,180, 16,139, 71,131,119,112,112,104, 36, 18,137, 6,247,234,213,171,209,168, 81,163,240,234,213, 43, + 28, 60,120, 48,172,122,245,234,101,198, 16,227,139,197,169, 57, 73, 73,230,242, 42, 85, 4, 22, 38, 38,241,151, 46, 94,116,237, +212,185, 51,137,142,142, 70,106,106, 42, 84, 42, 21, 94, 4, 6, 82, 33,159, 31, 75, 76, 77,121,111,158, 63,231,241,197,226,212, + 10, 36, 53,178,156, 85,135,190, 95,170,110, 85,114,176,112, 91,236,243, 83, 85,149, 90, 85, 55, 43, 43,139, 17, 8,133, 66,103, +123,243,168, 10,186, 33,207, 95,191,126,189,119,167, 78,157, 36, 97, 65, 47,192,100,102, 66,147,153, 14, 17,199,194,178, 81, 3, +240,181,106, 64,163,131,147, 7,133, 42,195, 8,254,143,222,232,212,106,117,185, 65, 13, 11,136, 22,175, 24, 49, 16,203,229,144, +152,152, 66, 34,151, 23, 39, 12,164,156,242, 54,234,213,171, 87,199, 22, 45, 90,128, 82,138,157, 59,119, 66,171,213,138,181, 90, + 45, 52, 26, 13,180, 90, 45,178,178,178,112,224,192, 1,108,219,182,237, 62,128,189,122,144, 85, 70, 40, 20, 78,102, 24,198, 86, + 34,145,104,109,108,108, 68,199,143, 31, 47, 12, 55,209,176, 97, 67, 24, 27, 27,171, 9, 33, 90, 0,176,183,183,215,237,219,183, + 79,240,253,247,223,139, 74,178, 87,179, 94,173, 57, 85, 25, 11, 79,169,172,114, 21, 83,235,250,168,234,222, 1, 0,208,185,199, +104, 84,173,238,130,172,148,160, 42, 42,101,100, 31,145, 32,221,226,229,166,184, 87, 50,239,186,163,114,147,110,191, 69,201,203, +251, 75,236, 40,120, 60, 94,169,238, 88,125, 72, 22, 33,132,103,102,102,102, 83, 48,207, 39,191, 3, 70, 66, 66, 2, 66, 67, 67, + 81,179,102, 77,164,165,165,193,201,201, 9, 26,141, 6, 77,155, 54,133, 82,169,196,250,245,235,113,239,222,189,251,200, 95, 25, + 89,206,127,200,220,221,221, 71, 54,106,212, 8, 23, 47, 94,196,147, 39, 79,226,174, 92,185,226,212,166, 77, 27, 84,169, 82,101, + 20, 33,100, 62,165,165,199,224, 43,201,213,215,174, 93,187, 41,147, 39, 79, 70, 72, 72, 8,126,250,233,167,212,152,152,152,211, +199,143, 31, 31,187,120,241, 98, 94,151, 46, 93,144,144,144,128,213,171, 87,179,247,238,221, 91, 3, 96, 89, 57,249,248, 58, 38, + 38,198, 89,165, 82, 33, 45, 45, 13, 12,195, 64,161, 80,224,210,165, 75, 56,112,224, 64, 98, 62,201,122,167,111,250, 26, 52,104, + 80,155,199,227,225,232,209,163, 0,176,144, 82,202, 17, 66, 78,247,233,211, 39,110,249,242,229, 78,243,230,205,195,143, 63,254, + 8,173, 86,139, 95,127,253, 21,243,230,205,187,144, 79,178,202,106, 68,215,217,219,219,143,251,233,167,159,106,205,156, 57, 19, + 1, 1, 1,182, 79,159, 62,109,242,226,197, 11, 84,170, 84, 9,169,169,169, 2, 43, 43, 43,108,216,176, 1, 51,102,204, 56, 9, + 32,229,193,131, 7,131, 62,124,248,224, 75, 41, 93, 93, 78,126,110,119,114,114, 26, 71, 41,165, 10,133, 34,210,199,199,103,245, +202,149, 43, 49, 99,198, 12,188,124,249, 18,153,153,153, 48, 49, 49, 33, 63,255,252,243,200,133, 11, 23, 98,204,152, 49, 52, 55, + 55,119,219,255,191, 91,138,133, 34, 61, 4,172,218, 2, 13,235,213, 68,195,186,149,113,229,230, 51, 0, 64,199,126,109,160,200, +205,198,190,125, 59,241,238,221, 91, 8,132, 66,152, 91,218,235,163, 4, 66,147,245, 26, 25,218, 4,116,242,106,130,110, 93,218, + 99,239,254, 99, 96,116, 90,140, 29, 61, 20,233, 25, 25,216,191,127, 55,194, 63,188,135, 64, 40,132,149,245, 63, 31, 8,181, 44, + 46,242, 31, 79,180,244,112, 63,129,227, 56,196,197,197,225,233,211,167,136,136,136,128,145,145, 17,148, 12,203,253,126,253, 30, + 71,136, 40,150,163,244, 62,101, 10,163, 20,127,110,131,101,227,138, 68,172, 53,179,176,176, 16,171,213, 74, 48,140,174, 72,175, + 66, 0, 2,136, 4,128,131, 99, 85,196, 68,199, 80,149, 74,117,187,204, 17,148, 90,181,225,236,233, 19,147, 91,181,110, 99,221, +173,227, 82,156, 62,179, 8,233, 89, 89, 80,105,133,200, 85,105,161, 80, 1,230,150, 53,208,180, 94,125,196,199,167, 34,232,137, +127,142, 64,173,208,103,162,232,219,205, 11, 70,187,143,158, 52, 7, 50,215,214, 80,135,158, 6,151,147, 88,168,104, 73,229, 22, +176,116,241, 64, 70,174, 26, 39,110, 60, 3, 0,189,183,122, 73, 76, 76, 84, 56, 58, 58, 30,154, 60,121,242,175,207,158, 61,117, + 6,128,103,207,158,197, 38, 36, 36,204, 77, 76, 76, 84, 84,164, 0,139, 68,131, 39, 70, 70, 70,207,170, 87,175, 30,239,237,237, +109,214,167, 79, 31, 88, 91, 91,227,197,139, 23,240,245,245,125,173,213,106,231,220,190,125,187, 76, 87,143, 70,163,137,123,118, +230,140,105,251, 31,126, 48,159,211,179,231,234,201,147, 39,111, 88,182,108,153,208,221,221,157,232,180, 90, 4, 7, 7,211,195, +135, 14,233,182,205,155,183, 94,108,108, 44,120,124,246,172,144, 81,171,227,254,213,149,216,217,217,217,179,123, 87, 79,143, 53, +235, 54, 65,165,204,193,163,128, 11, 72, 79, 79,198,142,157,167, 60,156,157,157, 61, 99, 99, 99,253,245, 37,192,123,246,236,153, +213,188, 81,163, 70,213, 42, 85, 66,112, 84, 4,196, 28, 11, 17,195,128,175, 85,131,199,168, 80,169, 46, 5,225,153, 32,225, 99, + 22, 86, 30,253, 51, 68, 31, 98, 92,171,123, 47, 44,139,205, 4, 33, 4,107, 91,214,133,216, 68, 14,145,177, 28, 19,255,186, 89, + 72, 12,206, 47,155, 7,177, 92, 14,183,230,109,244,104,116,169,194,196,196,228,105,112,112,112,211,186,117,235, 98,214,172, 89, +136,140,140, 4,199,113, 72, 76, 76, 84, 37, 36, 36,196, 37, 39, 39, 71, 34, 47,254,207, 46,170,231, 72,128, 97, 24,219,103,207, +158, 1,128, 8, 0,110,220,184, 1, 71, 71, 71,152,153,153, 33, 43, 43, 11,115,230,204,145,252,242,203, 47, 0,128,167, 79,159, + 10,139, 18,148,226, 8,126, 22,186, 38, 35,155,166,211,156,231,125,210,152,231,245, 58,116,137, 65,231, 30,163,112,237,252, 94, +220,188,114, 29,150,130,200, 8, 24,103, 95, 74,137, 72,201,138,205,117,223,238,209,120, 44, 63, 33,247,202,246,169,223, 91,240, + 29, 28,184, 19, 62,219, 50, 51,202, 74,171,187,187, 59,236,236,236, 10,231,104, 9, 4, 2,140, 25, 51, 6,148, 82,189, 72, 86, +126, 62,114,166,166,166,201, 42,149,202, 78, 42,149,226,227,199,143,120,255,254, 61,194,195,195, 11, 67, 7,112, 28,167,155, 61, +123,182,112,202,148, 41,248,253,247,223,113,251,246,237,251, 0,150, 82, 74,245, 29,172, 13, 29, 56,112,160,137, 70,163,193,145, + 35, 71, 24, 0, 61, 78,156, 56,241,180,105,211,166,130,174, 93,187,154,108,221,186,117, 40,128, 93, 21,168,238,198,166,166,166, + 34,173, 86,139,173, 91,183, 34, 38, 38,198,147, 82, 26, 74, 8,217, 62,112,224,192,109,117,235,214,173, 30, 18, 18,242, 54, 39, + 39,103, 34,165, 52, 72,143,182,104,116,147, 38, 77, 78,112, 28,231,218,169, 83, 39,227,117,235,214,153,190,121,243, 6,206,206, +206,224, 56, 46,184,162, 91, 88,189,125,251, 54, 52, 33, 33,193,163,125,251,246,184,116,233,146, 31, 33,100, 21,128, 95, 39, 76, +152,224, 20, 21, 21,133, 70,141, 26,193,210,210, 18,111,222,188,201, 78, 72, 72,216, 6, 96,126,121,177,190, 40,165, 31, 0,204, + 37,132,212,223,190,125,251, 96, 75, 75,203, 22, 47, 94,188,192,221,187,119,177,102,205, 26,252,242,203, 47,104,219,182, 45,102, +205,154,149, 2, 96,112,190, 75, 91,175,184,121, 5,202, 22, 0, 52,105,210, 36,222,215,215, 23, 99,199,142,165,127,252,241,199, +198, 67,135, 14, 77, 31, 58,116,104, 97, 31, 56,114,228, 72,122,240,224,193,145,101, 45, 4,248,135,160,211,106, 53, 48,181,172, +138,156,140,104, 36,199, 4,192,200,196, 30, 93, 58, 52,128, 66,169,193,185,179, 39, 17, 20, 28, 8, 30,143, 7, 59,251, 74, 48, +183,176, 70, 88,216, 91, 0,120, 85,182, 77, 45, 76, 44, 42, 35, 39, 51, 6,154,164,103,144,201,109, 49,234,135, 62, 80, 40,181, + 56,117,250, 36, 66, 66,130,192,231,243, 97,239, 80, 9,102,230,121, 54, 9, 45,211,166, 1, 40, 57,158, 86,185, 68,139,207,231, +223,186,124,249,114,255,230,205,155, 11,222,189,123,135,119,239,242, 6, 55,233,233,233, 12, 1,251,103, 98,208,153, 33,101,144, +128, 78, 5,171, 51,138,238, 93, 40, 55, 49,137,123,243, 58,212, 46, 61, 45, 17,129,207,239,225, 93, 88, 48, 34,194, 67,161,213, +170,192,231,241,192,227,243, 80,185,106, 29,220,187, 31,160, 81, 49, 76, 64,105, 54, 1, 32, 45,237,125,182,220,174,198,160, 21, +203,230,159,159, 49,103,137,108, 64,255,223, 17,244,230, 21,114, 24,123, 80, 10,216, 91, 25,163, 97,181,159, 17, 23,159,140,163, +123,183, 42, 56,173,118, 88,209, 24, 90, 37,217, 4, 0,187, 20,212,222,182,115,239,152, 93, 7, 14, 47,153, 51,101,188,221,247, +125,135, 65,156,246, 10,186,248,103,168,218,180, 27,136,196, 28, 23,175,222,132,255,211, 87,137, 28, 75,151,216,165,226,143,242, +108, 22,115, 33, 62,248,248, 49,193,185, 72, 20,120,103,137, 68,250,160, 28, 82,213,169, 88, 92,161, 79, 34,206,243,249,188,198, + 43, 86,172,208,217,217,217,105, 67, 66, 66,240,251,239,191,115,207,158, 61,187,202,227,241, 54,199,199,199,171,202,179,105,163, +211, 5, 30,246,241,169,221,172,111, 95, 58,100,202, 20, 5, 36,146,169,171,215,174,245, 73, 78, 79,119,164, 28, 7, 27, 75,203, +216,213,243,230,249,246, 31, 56, 48,253,229,189,123,178,128, 51,103,100, 98,134,121, 86, 94, 58,191,145,223,187, 84,155,177,177, +177,254,238,110, 46,216,183,107, 29,180, 90, 53, 18,226,242,132,172,148,212, 76,148, 69,178,138,219,204, 95,117,213,119,225, 47, +191, 60, 92, 56, 99,186,125,187,142,157, 16, 29,248, 2,218,180,100, 16, 29, 3, 33, 17, 32, 55,201, 8, 73,137, 57,152,123,240, +120, 82,142, 66,209,183,120, 39, 81, 90, 58, 11, 20, 43,137,169, 9, 68,198,114,136,229, 38,159,168, 88, 82, 83, 83,136,141,229, + 16,136,197, 37,169, 52,159,217,204,201,201,233,215,191,127,255,160,199,143, 31, 91,140, 29, 59, 22,173, 90,181,122,174, 84, 42, +189, 40,165,217, 95,154,159, 2,129, 32,169,113,227,198,182, 66,161,144, 25, 51,102,140, 32, 37, 37,165, 48,178,122, 78, 78, 14, + 46, 93,186,132,154, 53,243, 86,245,191,124,249, 18,117,234,212, 41,213,230,216,159,131,227, 0, 44,155, 57,192,121,245,195,192, +132,169, 0,252,170, 86,175,132,155, 87,174,227,238,205, 0,159, 22,117,185, 77,221,135, 53, 93,110,228, 53,112,142, 71,227,177, +124,185,169, 3,246,159, 58,201, 15,125,182,123,165, 66, 17,236, 6, 96,118,105,233, 36,132,128, 82,250, 89, 40, 7, 62,159,143, + 67,135, 14, 85,244,222,143,239,218,181,107,194, 79, 63,253, 36, 74, 72, 72,192,235,215,175,145,155,155, 11,169, 84,138, 43, 87, +174, 48, 0,182, 30, 58,116,232,202,161, 67,135,186, 34, 47, 46,206,141,138,212, 79, 99, 99,227,201, 93,186,116,193,235,215,175, +241,228,201,147,147,148,210, 32, 66,200,201,119,239,222, 13,106,219,182, 45,246,238,221, 59,185, 52,162, 85,154, 77,142,227,138, +198, 76, 74,203,175,187,129, 0, 90, 84,180,220,243, 39,240,182, 6, 0, 43, 43,171, 24, 59, 59, 59,211,192,192, 64,184,184,184, + 64,171,213, 54,175,104, 93,202,204,204, 92,183,121,243,230, 63, 70,143, 30,141,229,203,151, 15, 59,126,252,248,176,238,221,187, +195,219,219, 27,123,246,236, 65, 80, 80,144,159, 62,219,138,149,116,239,249,196, 49,168,118,237,218,147, 42, 85,170,132, 53,107, +214, 32, 56, 56,216,119,217,178,101,243,130,130,130, 80,179,102, 77,201,171, 87,175,152, 47,105, 67, 0,192,212,212,212, 84,167, +211,225,204,153, 51,143, 40,165, 51, 8, 33,182, 27, 54,108, 24, 44,151,203,145,150,150,166, 12, 9, 9, 25, 74, 41, 61,251,255, +221,214, 81, 66, 22,140,253,113,234,246, 31,199, 14,149, 54,105,220, 16,138,172, 88, 40,115, 18,161,200,254,136,205,187,174,130, + 16, 30,108,108, 28, 96,107,239,140,168,168,104,220,191,112, 81,147,171, 80,110, 16,235, 56,191,178,109, 78,201,179,217, 40,207, +166, 34, 55, 9,202,156,164, 66,155,182,182,142,249, 54,163,112, 47,224,162, 74,153,155,187, 78, 67,201,111,255,228,189,255, 39, +163,194,123, 29, 22, 69,122,122,250,180,241,227,199,123,205,157, 59,215,138, 97, 24,190,165,165, 37,162,162,162,152, 63,255,252, + 51, 45, 39, 39,103,218,151, 36, 72, 32, 20, 6,185,215,168,233,245,253,247,223, 51,189,122,245, 20, 13, 31,221, 85, 96, 99,107, +139,204,140, 84,132,189,126,129, 55,175,158,193,189,102, 3, 44, 94,182, 30, 48, 55, 47,119, 35,201,156,196,176, 91,114,187, 26, + 61,150, 46,156,125,172,181,231,119,166, 53,235, 52, 16, 53,116, 51,131, 86,199, 32, 54, 54, 22,103,207, 4,106, 67,158,222,205, +226, 24,205,160,220,100,253,182,224,185,157, 55, 42,218, 81,207,142, 28, 90,181,122,243,172,173, 59,246,205,153, 59,117,172,113, +219, 54,157, 17,124,125, 47, 78,158, 63,150,171, 82,107, 86,139,248, 88, 27,156, 66, 21, 21,205, 3,149, 74,165, 45,190, 32, 74, +165, 82,105,191,182,176,247,236,217,131,196,196, 68, 77,100,100,228,101,134, 97,142,151,182,217,115, 73,216, 68,169,166, 47, 33, +215, 23,182,105,211,117,225,149, 43,210,145, 63,255,172, 25, 54,124,248,108,168,213, 90,136,197, 84, 96,108,204,131, 68, 34,124, +121,239,158,108,227,132, 9,150, 68,163,185,182,183,140,176, 1, 37,224,155,175, 58, 44,162,104, 97,228,216, 25, 80, 22, 81,180, + 30, 60, 9, 67, 69, 20,173,252, 7, 35,154, 16,210, 98,234,130,133,167, 6,117,233,232, 81,215,181,178,196,166, 74,101,200,237, +237,145,154,156,140,123, 79,222,232,150, 29, 59, 21,146, 79,178,244,138, 43,195,113, 92,222, 36,119, 0, 29,167,205, 5,225,243, +129,252, 48, 14, 5, 43,135,170, 52,109, 5, 34, 16,128,165, 28,212,106, 53,213, 35,157,177,132,144,126,195,134, 13,187,113,254, +252,121, 94,151, 46, 93, 26,158, 62,125,154,251,154,186,163,211,233,156,243, 9, 87,150,145,145,145, 96,212,168, 81,208,233,116, + 80, 40, 20,200,204,204, 68,104,104,168,122,192,128, 1,146,124, 2,161, 27, 52,104, 80,185,237,199,186, 19,177,170,153, 3,156, + 55, 89, 10, 34, 7,103,165, 4, 85,177, 20, 68, 70,180,168,203,109, 90,119, 34, 86,181,116,134,249,138,148, 72,255,176,132,220, + 43,219,247,159, 58,201, 31,209,167, 31,235, 44,127,235, 35,181,165,127,118,232, 89,110,163,246, 89,112, 82,125, 72, 86,113,100, +103,103,207, 91,180,104,145,119,122,122,186,115,215,174, 93, 69, 30, 30, 30,120,248,240, 33,206,159, 63,207, 60,120,240, 32, 38, + 55, 55,119, 62,165, 84, 5,224,234,151,228,105,141, 26, 53,170, 8, 4,130, 2, 87,218,150,252,175,183,156, 62,125,122,208,216, +177, 99, 81,185,114,229,218,132, 16, 9,173,192,115, 68, 41, 45,244, 50,124,227,142, 34,124,227,198,141, 78,246,246,246,228,210, +165, 75, 12,159,207,175,176,114, 67, 41,221, 67, 8,105,174,211,233,126, 28, 55,110, 28, 60, 61, 61,193, 48, 12, 14, 30, 60,136, +221,187,119,251, 85,100,239,214,210, 16, 22, 22,246, 44, 38, 38,166,221,236,217,179,177,102,205,154,121,179,103,207, 70, 76, 76, + 12,194,194,194, 94,124,141,221,172,172, 44,101,116,116,180, 81,203,150, 45,155,184,184,184,132,140, 28, 57,178,206,216,177, 99, +225,231,231, 71,111,223,190,221,159, 82,122,233, 95,209,129,191,126,155,122,160, 94, 53,187, 43,203, 86,172,251,197,173, 90,149, +159,198,140, 26,200,175,225, 94, 7,185,153,177,176,178,182,131,115,165,170, 72, 78, 74,193,229,203,151,216,148,148,140, 61, 44, +143, 44,125,251, 54, 53,254,107,108, 58, 57, 87, 69, 82, 82, 18, 46, 94,188,200,102,164,103,237,132,142,183,236, 85,100,122, 34, + 12, 40, 87,201, 42,105, 50, 60,209,103,226,109,254,202,195,141,121,225, 29,242, 84,174,244,244,244,105,148,210, 20,125,153, 57, + 41, 30, 68,109,192, 0, 17, 46, 92,168, 15,157,174,133,185,137, 73, 71,202,113, 77, 27, 52,104, 32, 31, 56,112, 32,215,166, 77, + 43,177,169,169, 41,169, 93,187,110, 86,102, 70,134, 37, 0, 80,128, 45,143, 69, 23,108, 42, 45,224, 11, 59,177,172,182, 94, 94, + 90,203,223, 84, 90, 31,102, 94,205,142,216, 8, 56, 44,230, 17, 50,138,163,116, 47,195,195,210,240, 68,154,252,165,163,167, 98, +110,191,130, 45,103,230, 85,116,148, 87,212,117,200,227,241, 15, 56, 56, 56,204,143,141,141, 77,162,148,178, 95,170,108, 20,108, +193,211, 99,250,116, 93,227,239,190, 99, 44, 43, 85,226, 40,165,108,196,179,103,228,193,217,179,194, 7,103,207, 74,117,106,245, +173, 19,148,134,235, 99,211,209,209,209,247,220,185,115,122,207,189,234,217,179,231,171,130,121, 91,250,230,167, 91, 53,231, 43, +213,170, 56,125, 87,173, 74,158,123, 58, 60, 34, 30,225, 17,113, 87,223,135,199,118,249,146, 50, 42,186,169, 52,201, 15,225, 64, +245,216, 84,186,184, 77,107,107,235,167, 2,129,192,185, 34, 15, 44,203,178,241,201,201,201,141,244, 76,231,144, 42, 85,170,248, + 69, 69, 69,157, 98, 89,118,198,183, 80, 8, 9, 33,173,248,124,254, 69,150,101,101,197, 21,175, 2, 50, 70, 8,113,149, 72, 36, +159, 76,134, 47,203,230,234,133,117,127,105,217,182,109,159, 7,119,239,158,158,179, 34,228,147,121, 67, 83,251, 88,142, 30, 50, +105,218,111, 71,182,110,252,121,211,233,180, 61,229,170,205,118,118,183, 1,184, 23, 16, 46, 61,242,178, 73, 57,202,176,212,196, +196,196, 23,192, 32,142,227,172, 9, 33, 41,148,210,163, 69, 72,214, 23,231, 39,159,207,247,171, 85,171,214,180, 55,111,222, 28, + 97, 24,102, 76,145,235,215,184,185,185, 77,138,140,140,220,162,211,233,230, 84,224,121, 55,109,219,182,109,250,198,141, 27,121, + 51,102,204,128,191,191,191, 37,165, 52,253, 27,149,187,189,133,133,197, 31, 44,203,122, 80, 74,207,101,103,103,207,163,148,230, + 86,212,102,126,136,135, 65, 78, 78, 78,115,220,221,221,221,223,190,125, 27, 20, 23, 23,183,186,184, 26,244, 21,233,244,238,221, +187,247,185, 13, 27, 54,144, 74,149, 42, 33, 38, 38, 6,211,167, 79,167,103,206,156,233, 73, 41,189,240,165,109, 50, 33,100,193, +132, 9, 19, 86, 12, 31, 62,188,144,208,250,250,250,210, 11, 23, 46,140,164,148, 30,248,210,118,254, 91,170,247,181,171,217, 84, +163,124,118,101,131,186, 30,253,127, 24,214,135, 60,120,242, 22, 15, 31, 4, 32, 54, 62,254, 52,199,227,205, 15, 11, 75,121,251, +181, 54, 3,158,132,225, 97, 64, 0, 77,136, 79, 56, 1,202, 95,248, 42, 60, 57,252,255,235,222,255, 27, 84,173,146, 92,135,228, + 11,183,194,170,112,133, 33,250, 68,171,117,116,116, 68,106,106,115,169, 64,208, 70, 34,145,120,241,248,252, 91,105,201,201,211, +245, 37, 90,255, 68,197,254,172, 67,119, 35,226,210,182, 36,248, 18,155,197, 39,178,127,137,205,138,216,208,215,102,105,155, 74, +115,106,117,188, 21,195, 60,221, 68, 75,207,131,226, 54,157,157,157,127,228, 56,174,138,190,105,226,241,120, 17,177,177,177,187, +190, 36, 63,221,221,221,233,187,119,239, 64, 41, 37,223,178,220,255,137,186,244,191,100,243,192,250,250,142, 53,235,213,154, 19, +252, 44,116, 77,190, 91,177, 16, 75,167, 90,154,180,233,208,126,209,189,155,183,151, 47,222,148,150,253,175, 76, 39, 33,132, 71, + 43,186,186,229, 11,109, 22, 4, 9,173,168, 77,145, 72,180,189, 89,179,102, 63, 62,124,248,240, 15,134, 97,198,253, 47,214, 79, + 66,136, 55,159,207,159, 93,163, 70,141,134, 97, 97, 97, 47, 88,150, 93, 83, 22,201,170,192,224,119,126,149, 42, 85, 38,138, 68, + 34, 73, 78, 78, 78,122,124,124,252, 34, 74,233,241,127,183,252,172,237,110,213,132,210,194,160,219, 43, 67,223,165, 62,254,102, + 54, 41,199,114,148,191,226, 77,120,202,243,255,239,114,255, 79, 39, 89,165,169, 92,130,255,175, 68, 20, 16,165, 50, 17, 31, 31, + 3, 32, 6,192,137,127,215,204,212,135,100, 85, 80,110, 76,252,119,176, 81, 28,249, 68, 42,224, 91,216, 42, 78,154,254, 73,188, +125,251,150, 24, 30,249,127, 63,252, 48, 35, 40, 30,192,244, 38, 94,159,159,203, 39, 87,115,188,122,253,235,211,249, 37, 36,235, + 75,109,126,233,134,207, 90,173,246, 39, 66,200,204,138,172, 86,252,111, 67, 62,169,186,240, 15,216, 93, 5, 96,213,191,251,253, +191,122,155,250, 20, 64,207,127,119,155,255, 99,117,178, 98,155, 74, 27, 96,128, 1, 6, 24,240,111,221,168, 43, 13,185, 96,128, + 1,255, 94, 40,170,106, 21, 37, 94, 4, 64,167, 82, 30,228,235, 21, 48,222,233, 11, 26,138,235, 6,155, 6,155, 6,155, 6,155, + 6,155, 6,155, 6,155,255, 91, 54,255, 91, 73,214, 39,228,170,232,113,193,170,167,127,226, 5,160,147,193,166,193,166,193,166, +193,166,193,166,193,166,193,166,193,230,127,243, 11,192,184,210,142, 13,174, 67, 3,254,113,108,238, 75,156, 0, 96,202, 41, 26, +247, 79, 92,111,128, 1, 6, 24, 96,128, 1,255, 74, 80, 74,119,150,230, 58,252,151, 19, 45, 66,136, 35,242, 2,237,185, 1,120, + 3,224,110, 69,150, 43,151, 96,207, 26,192, 64, 66,200,128,252,155, 61, 1,224,120,121,161, 40, 10, 32,147,201, 18, 85, 42,149, + 45, 0, 72,165,210, 36,149, 74, 85,116, 47, 3,130,207,183, 71,161,121,127, 83,250,196,214,170, 85,171, 38,170,213,106, 91, 61, +254, 62,147, 82, 26,196,227,241,130,229,114,249,205, 55,111,222,156,175,200,189,119,232,208, 97, 36,159,207, 95, 9, 0, 44,203, + 46,184,121,243,230,190,127,176,220,154, 87,114,180,223,171,213,105,153,196,228,180, 69,165, 45,221,222,214,147,248, 10, 8,230, +228,127, 94, 61,241, 92,217, 33, 44, 42,122,125, 25,233,107, 34, 20, 10, 39,219,217,217,117,139,141,141,125, 10,224,103, 74,105, +185, 81,141, 93, 92, 92,126, 16, 8, 4,195, 88,150,173,198,231,243,195, 25,134, 57, 20, 29, 29,125,192,208,140, 24, 96,128, 1, + 6, 24, 80, 30,217, 42,233,251, 10, 17,173, 90,214,196,158, 2,131, 65,208, 25, 20,215, 8,112,244,117, 10,253,168,239,239,189, +107, 17,157,142,201,251, 79, 17, 15,236,165,247,188,157,222,222,222,206, 83,166, 76, 65,171, 86,173,240,240,225,195,150,123,246, +236, 25,205,231,243,131, 56,142,187, 5,224, 33,165,122,133, 82, 48, 6,240, 61,128,161,221,186,117,235,180,114,229, 74,126,157, + 58,117,160, 84, 42,113,251,246,237, 54,171, 87,175,222, 64, 8,185, 14,224, 48,128,179,101,197,134, 81,169, 84,182, 5,156,137, + 16, 98,219,191,127,255,199, 69,201, 85,254,254,106,132, 82,250,128, 16, 18,192,178,236,195, 19, 39, 78,196,212, 34,164,249,248, + 42,162, 63,167,125,208,124, 22, 51, 73,173, 86,219,158,249,109, 21, 4, 18, 9,212,217, 89,104, 57,234,239, 85,160,215,126,153, + 3,194, 49,224,131,166,123,173,216, 16, 4, 32, 56, 62, 62, 62,200,211,211, 51,162,162,133,204,231,243, 87, 94,190,124,217,129, + 82,138, 46, 93,186,172, 4,240,143, 16, 45, 66,136,164, 69,147, 6,183,206,157, 60, 34,205, 73, 75, 68,215,239, 7, 29, 34,132, +140,164,148,158,252,132, 52,117, 39,118, 68,128, 57, 19, 86, 29,230, 3,192,182,249, 67,127,222,208,133,108,154,126,133,126, 36, +132,120, 1,133, 91, 54,253, 70, 41,189,181,173, 59,177, 3, 31,115, 39,172, 58, 76, 0,224,247,249, 67,231,108,235, 78, 54, 78, +188, 88,177, 85,149,132,144,137, 35, 71,142,220,180,114,229, 74,190,131,131, 3,226,226,226,186,214,174, 93,187, 6, 33,164,118, + 89,147,136,171, 84,169,114,172,125,231,222, 85,251, 14, 24,108,100, 99,109,129,248,132, 20,211, 99, 71,254, 24, 95,165, 74,149, +110, 17, 17, 17,131, 12,205,136, 1, 6, 24, 96,128, 1,165,244, 59, 95, 30,222,161,177, 35,145,229,106,209, 91,192, 39, 63,180, +109, 94,167,227,144,238,109,121,181, 61,170,227,213,203,208,239,206,222,124,180,186,182, 29,239, 6,195,210, 3,198, 34,156,121, + 22, 95,246, 74, 24, 29, 3,193,213, 51,135, 1, 0, 19, 71, 15,229, 63,126,252,184,122,227,198,141, 11, 3, 2,118,236,216, 17, + 29, 59,118, 36,219,182,109,107,112,245,234,213, 6,187,119,239,214, 18, 66,246,150, 19,132,110,178,155,155,219,234, 77,155, 54, + 73, 60, 61, 61, 33,145, 72, 10,207,201,229,114,244,236,217, 19, 61,123,246,228,199,199,199,119, 57,119,238, 92,151,223,126,251, + 77, 67, 8,153, 77, 41,221,162, 79,230, 45, 90,180,168, 73, 9, 95, 95, 38,132,188,103, 24,230, 69,253,250,245, 99,106, 18, 82, +253,167,238,173,174, 77,108,237,110, 92,154, 29,129, 88,140,253, 35,243,250,234,162, 68, 43,226,230, 37,200, 77, 77, 82,141, 76, + 76,130, 0, 4, 3, 8,162,148, 6,191,127,255, 62,212,131,144, 6, 45, 44,120,123,119,167,177,245, 43, 64,182, 16, 19, 19, 3, + 51, 51, 51, 89,251,246,237, 19, 8, 33, 75,110,221,186,181,243, 27,215,169,230, 75,230, 76, 20,165, 71, 6,225,227,235, 7,152, + 57,160,141,209,244,205,127, 45, 7,112,178,236,138,200,227,253, 22,192,249, 76,207,219,140,119, 81,106,106,170, 39, 0, 88, 89, + 89,137, 1,220, 90,255, 8,221,103,180, 38,228, 43, 42,186,136,207,231,111,221,191,127,255,216, 31,126,248, 33,111,235,136,123, +247, 32,151,203,177,108,217,178,202,179,102,205,242, 69, 41, 27, 1,187,184,184,252,208,190,115,239,170, 27,215, 44,175,157,157, +150,169,222,177,245,248, 19,199,186, 53,121, 19, 38,207, 50,217,168, 85,219,187,184,184,252, 96, 80,182, 12, 48,192, 0, 3, 12, +168,136,154, 85, 46,209,170,105, 67,246,181,109,228, 62,112,136,119, 27, 73,189,186,117, 32,146,252, 29, 40,186,113,147, 38,104, +220,164, 9,207, 39, 39,187,243,227, 39,207, 58,255,121,245,161,186,166, 13, 57,254, 38,153,142,212, 55, 97, 5,155,210,174,252, +222,174, 67,110, 70,146, 20, 0,140,205,109, 85,243,207,124,188,217,186,117,107, 56, 59, 59,139,110,220,184, 49, 6,101,199, 75, +153,255,230,205, 27, 9,159, 95,118, 60, 84, 71, 71, 71,244,239,223, 31, 53,107,214, 20,183,111,223,126, 62,254,222, 14,227, 19, + 72,165,210, 36, 66,136, 45, 0, 88, 90, 90,178, 75,150, 44,121, 65,105,161,103,144, 82, 74, 31,240,120,188,135, 28,199, 61, 58, +123,246,108,108, 29, 66,108,123, 52,174,121,119,226,240,254, 70,244,207, 13,165,146, 4, 85, 86, 86,137,223, 27,201,141,147,101, +198,198, 65, 18, 35,105, 48,128, 32, 0,193, 78, 78, 78,161,117, 8,113,110, 81,179,202,213,109, 51,134,154,232,147,151,141, 27, + 55,174,225,229,229, 37,101, 89, 22,185,185,185,248,253,247,223,205,100, 50,153, 89,183,110,221, 22, 3, 40,172, 0,181, 9,169, +215,207,145, 63,110, 73, 28, 51,233, 11,136,140,121,219,150, 77, 34, 55,251, 45, 54,109,210,162, 45,222,222, 58,136,180,180,108, +100,102,228,128,227,184,207,118, 24,158,120,145, 38,110,235, 73, 86,111,155, 55,116, 46,225,241, 72,131, 62, 63,163,151,125,230, + 84, 66,200, 75, 0, 66,177, 88, 92, 88, 15, 9, 33,142,117,235,214, 93, 93,253,187,182,248,125,193,112, 80,142,163, 0, 86,235, +171,102, 17, 66,108, 77, 76, 76,206, 94,189,122,181,121,211,166, 77,241,240,225, 67,124,248,240, 1, 19, 39, 78,212, 76,154, 52, + 73, 52, 98,196, 8, 50,115,230,204, 41,132,144, 63, 41,165,247, 63,123, 16, 4,130, 97,223,247, 29, 36,206,201,200, 82,105,212, + 90,141,165,181, 57,167,206, 85, 41, 82,210,179, 84,131,134,254,168,121,249,252,209, 48, 0,159, 17,173,175,201, 79, 3, 12, 48, +192, 0, 3,244, 70, 83, 0, 54, 0,146, 1, 60, 41,118,140,252,207, 40,225, 56, 5,121, 94, 41,171, 34,182, 82,144, 55,237,199, + 6,121, 49, 62, 31, 3, 72,255,154,196,149, 22, 21, 30,200,143, 12,159, 31,160,184, 32, 80, 49, 41, 66,180,232,155,100, 10, 38, + 45, 28,108,234,123,176,217,159,111,159, 68,164,230,200, 84,178,136, 9, 15,197,200,233,203,240, 38,185,244,136,220,222,181,136, +206, 76, 12,129,137, 8, 16, 25,153,171,135,248, 93, 9,104,210,164,137,106,190, 39,207,219,119, 91,158,210, 53,115,220, 80,180, +156,241,231,149,240,240,112,198,209,209, 17, 63,252,240, 3, 40,165, 61,202,184,185,196,236, 39, 1,182,175,123,180, 66,179,196, +146,167, 73,133,133,133,225,206,157, 59,136,142,142, 70,181,106,213, 48,102,204,152, 36, 74,169, 93,105, 54,187,118,237,122,251, +183,223,126,243, 92,187,118,109,224,254,253,251, 91,151,230,110,170, 77,136,113,131,202,246, 79,118,251,206,173, 70, 46,237, 21, + 42,162,223,193,220, 95, 73, 74, 32,121, 52, 62,254,239,188,251,181,134, 3,140,205, 76, 96,108, 42, 79, 28,113,245,105,161,146, +149,255,254,166, 49, 33,166,206, 14, 86, 79,143,174, 95,228,196,187,121, 76, 42,218,241,128,148, 71,178,218,183,111, 31,176,114, +229, 74,139,248,248,120, 92,191,126, 29,149, 43, 87,134, 66,161,192,186,117,235, 18,238,222,189,235,152,159, 94,187,102, 53, 93, +131,126,159, 53,202, 76, 52,230, 23, 73, 69, 43,146, 72, 32,216, 18,112,249,216, 36, 51, 9, 69, 70,252, 7,188, 15,125,137,199, +175, 34,116, 7,174, 5,177, 89, 74,181, 55,165,244,102, 73,191,155,220,134, 84,191, 21,111,115,238,242,237, 39,238, 14, 14, 14, + 24, 63,126, 60, 62,126,252, 8, 74, 41, 56,142, 43, 92,165, 49,127,254,124,212,168, 81, 3, 35, 7,247, 82, 72,210,158,181, 63, +247,138, 62,213,179,130,215,117,117,117,189,122,235,214, 45, 59, 39, 39, 39,220,189,123, 23, 31, 63,126,132,189,189, 61,110,220, +184, 1, 63, 63,191,253, 19, 38, 76, 24,176,114,229, 74,233,144, 33, 67,226,174, 92,185, 82,169,248,156,186,202,149, 43,135,158, +187,114, 87,126,243,244,213,247, 22, 38, 70, 48,182,181, 2, 95,110,170,162, 32, 10,123, 91, 11,209,160,222, 29,171, 71, 70, 70, +122, 20, 43,255,175,202, 79, 3, 12, 48,192, 0, 3,254,198,133, 11, 23,168,183,183, 55, 41,120, 47, 78, 33, 8, 33,231,243,249, +128, 6,128,184,200, 49, 8, 33,231,243,213,144, 79,142,125,124,124,230,251,250,250,190, 44, 56, 46,184,102,222,188,121,117,252, +252,252, 86,181,108,217,242,104, 64, 64,192, 18, 0,239,190,150,104,149,166,114,233, 53, 71,139,137,125, 12,145,123, 55, 8, 89, + 29,116, 41,111,192,101, 68, 1,198,246, 80, 18, 57, 82, 19,162,240,250,238,201, 60,110, 88, 94, 38,190,166, 66, 66,200,141,208, +208, 80,188,126,253, 26, 49, 49, 49, 48, 50, 50,250,236,186,123,247,238, 65, 38,147,193,193,193, 65, 63,201, 78,243,233,126,172, + 65,141, 93, 33,111,233,137,148, 33, 63,225,198,141, 27, 72, 74, 74,130, 72, 36,130, 88, 44, 6,195, 48,229,218,227,241,242,118, +252, 45, 80,177, 74,186,166, 61, 33, 2,103, 75,249,185,109,139,167, 85,225, 61, 56, 47, 84, 70,191, 67,188,138,133,185, 62, 74, +158,220, 24, 70,198, 70, 9, 50,153, 81,113,146,245,182, 49, 33, 66, 99,185,244,220,222, 21, 51,237,249,207,111, 72,149,239,130, + 32, 42,193, 70,231,206,157,199, 3, 88, 76, 41,205,104,223,190,189,221,202,149, 43, 45,226,226,226,240,234,213, 43, 28, 63,126, + 60,153,201,187, 81, 66, 41, 93, 10, 0, 45, 9,145,186,216,152, 95,217,242,203, 52, 19,220, 58, 38,198,152, 95, 42, 92,145,204, + 60,122, 94,232, 55, 98,194,164, 77,211,122, 34, 55, 91,137,195,215,158,227,242,179,247,189, 0,220, 43,107,222,219,150,123,244, + 29, 33,164, 99,223,190,125, 95,220,185,115,199,122,247,238,221, 96, 24,166,196,215,238,221,187,113,253,238,179,169,148,234, 77, +178, 28,171, 84,169,114,253,209,163, 71, 54, 70, 70, 70,184,118,237, 26, 50, 50, 50, 10,149,172,145, 35, 71,146,140,140,140,193, +191,255,254,123,191,200,200,200, 53,119,239,222, 77, 69,222,118, 80,159, 84, 4, 62,159,255,158, 97,180,181, 28, 60,170, 11, 6, +244,108,219, 54, 39, 53, 8,114,171,250,120, 16,248,254, 92, 70,122,170,146,207,231,191, 47,122,253,183,200, 79, 3, 12, 48,192, + 0, 3, 42, 76,104,206, 83, 74,123, 20, 37, 78,197, 9, 87,193,231,130,235,124,125,125,123, 20, 37, 97, 0,224,231,231,183,170, +200,177,226, 91,164,173,188,201,240,237, 9, 33, 20, 64,251,146, 46, 82,191, 58, 5,245,235,179, 16,185,182,134,184,102, 47,240, + 93,219, 32, 58,232, 22, 2, 47,173, 71,236,203,123,160, 28, 11,135, 26,205,244, 77,139,170, 86,173, 90, 80,169,242,166,102,169, +213,106,136,140, 45, 84, 51,199, 13,149, 2, 0, 39,144,170,139, 36, 90, 47,131, 38,173,189,208, 44,145,226,177, 93, 30, 1, 46, + 80,182, 86,140, 26, 5,145, 72, 4,145, 72, 84,184,249,172, 62, 68, 43,127, 83, 84,112,121,238, 43, 90,210,249, 38, 18,225,225, +163,139, 39, 55,147, 68, 6,139,213, 33, 15, 16,175,230,232,185, 68,246,130, 62, 59, 39, 27, 25, 27,197,201,140,140,130,101,114, +227,162, 68,235, 61, 0, 80,161,240,192,193,165,147,235, 27, 39,134, 27,171,158,220, 64,130,138,211,154,150,108,102,233,165, 75, +151,108, 5, 2,129, 61,203,178,136,142,142,198,203,151, 47,177,113,227,198,196,236,236,236,246,207,158, 61, 11, 43,146, 94, 94, + 83,153,248,248,129,101,211,170, 10,130,252,165,234,247, 33, 37,146,183,178, 96, 83,175, 79,151, 94,237, 27, 92, 24, 63,124, 1, +122,119,255, 14, 35,218,215,166, 17,241,105, 42, 0,215,244,217,192,154, 82, 26, 71, 8,233,220,174, 93,187, 67, 13, 27, 54,244, +160,148,162, 94,189,122, 24, 60,120, 48, 14, 28, 56,128,192,192, 64,100,101,101,105,175, 94,189,186,129, 82,186, 71,207, 7,206, +200,194,194,226,242,205,155, 55,109,140,140,140,112,245,234, 85, 40,149, 74, 56, 56, 56, 96,210,164, 73, 98, 63, 63,191,253, 89, + 89, 89, 3,124,125,125,165, 17, 17, 17, 91,174, 92,185, 82, 25, 0,143, 82,250, 89, 37,208,104, 52, 59, 15, 31,216,183,105,210, +228, 41, 78, 55, 31,190,186,161,206,201, 54,115,117,141,201,178,177,144,155,108,248,117,169,139, 70,163, 25, 95,114,126,222,254, +162,252, 52,192, 0, 3, 12, 48,224,115, 13,227,194,133, 11,165,114,145,162,228,169, 56,217,170, 8, 73, 3,160,244,241,241,153, + 79, 8, 57,159,175,120, 41, 1,196,255, 19, 36,171,144,104, 81, 74,253, 9, 33,160,148,250,151,106,133, 99,161,141,184, 3,109, +196, 29,200, 90, 78,197, 95,190, 67,138,253,201,151,111, 17,214,115,217,181,155,106,181, 90,176,111,223,190,194,121, 91, 0,192, +178,236, 55, 47,197,138, 16,173,124,162,247, 89, 34,170, 72,228,254, 59,103, 12,104, 97,197, 42,132,154,123,231, 16,167,230,152, + 53,239,180,138, 39, 25,244,183,249,165,216, 60, 51,125, 60, 98,238, 94,135,145, 92, 30, 51,246, 78,112, 81, 21, 43, 8,192, 7, + 0,168, 34, 53,189,113,124,230,144, 54,246, 34,136, 52, 23, 78, 32, 94,205,169,183, 71,234,246,108, 44,185, 80, 65, 41,197,135, + 15, 31,160, 80, 40, 16, 16, 16,128,147, 39, 79, 38, 23, 39, 89,249,233,189,253,199,207,195,154,155,102,127, 20,105,158, 92, 71, +188,154, 83,215,208,135, 92,213,239,211, 90,196, 35, 87, 9,143, 47,235,222,182, 54,166,255,216, 7,235,255,248,139,209,216,182, +237,177,233,236,197,129, 57,106,237,124,125, 72, 86,145, 52, 7, 1,168, 77, 8,145, 0,240, 26, 60,120,240,197,126,253,250,193, +223,223, 31,231,206,157,115, 7,144,144,159,255,203, 0,216, 33,111, 53, 98,105, 59,199,243, 68, 34,209,209,235,215,175,215,113, +116,116,196,245,235,215,161, 84, 42, 49, 97,194, 4,205,228,201,147, 69, 35, 71,142, 36,153,153,153,133, 74, 86, 64, 64, 64,106, +105, 36, 11, 0, 98, 99, 99, 47,185,186,186,182,106,215,174, 93,159,170,238, 53, 77,195,179,179,146,140,140,164,178,187,254,183, + 68, 79, 30,221,223, 18, 27, 27,251,184,228,252,188,161,119,126, 26, 96,128, 1, 6, 24, 80, 58,188,189,189,253, 47, 92,184, 0, +111,111,111,255,114,250,146, 30, 95, 72,134, 10,126, 39,244,245,245,125,233,235,235,251,137,226,245,149, 74, 91,113,215,225, 5, + 74,105, 66, 81, 69,171, 66, 96, 51,163, 63,191, 1,142,171,200,205,126,246,157,133,133, 5, 35,147,201, 62, 33, 90,156,158, 54, +211, 78, 31, 65,248,196,161,133, 74, 86,129,178,133,174, 35,191,138,104,113, 28, 23, 0,224,147, 68, 24,219,213, 28,114,116,120, +231,214,181,171, 58,241,116,199, 55, 34, 86,193,168, 22,191,209,170, 94,103,211, 94,175, 74,152,100, 93,104,147,209, 65,106, 44, +139,146,201,141,139,147,172, 72, 0,144,219,215,232,183,127,136, 87,251, 6, 53,221,120,204,177,117,136, 83,232,114,124, 66,181, +218,240, 92,122,170,148, 60, 92,252,221,119,223, 45,182,178,178,146,110,218,180,201,204,213,213, 21, 12,195,104,138,147, 44, 99, +187,154, 67,142,141,236,218,186,134,189, 5, 79,247,231,102,196, 40, 89,197,198,112,221,254,237,122,144, 44,107, 51,249,149,237, +171, 38,202,140, 36, 66,168, 84, 42,248,109,251, 19, 87,239,135,244, 72, 14, 62,125, 5,192,149,175,168,147, 99,123,244,232,177, +126,217,178,101,208,233,116, 24, 51,102, 12,222,191,127,127,245,205,155, 55, 27, 93, 92, 92,102,255,252,243,207,142,246,246,246, + 24, 56,112,160, 8,192,200, 82,108,252,122,248,240,225, 30, 13, 26, 52,128,191,191, 63, 50, 50, 50,224,224,224,128,201,147, 39, +139,125,125,125,247,103,101,101, 13, 88,181,106,149,244,195,135, 15,101, 42, 89,159,212,107,150, 93,177, 99,253,196,217, 77, 91, +180,225,189,123, 23,198, 68, 55,243,228,221,186,126,238,142,149,149,213,254, 79,242,115, 84,183, 10,231,167, 1, 6, 24, 96,128, + 1,223, 12, 23, 0,120, 23, 87,185,138,147,176, 2,197,170,232,113,241,235,243,207,171,191, 54, 65,197, 21,173,124,226,245,233, + 28,173,162,147,224,203, 3,151,155,172, 23,121,250,140,173,214, 34,186,241, 77, 33,152,239,201,131,200,216, 66,213,115,217,181, +155,165, 93,107,108,108,172,183,162,197,169, 85,229, 17,167, 10, 17,173,252, 57, 90,151, 41,165,159, 16, 45,115,251,154,158, 11, +231, 78,219,208,166, 95, 87, 94,226,143, 45,145,145,163, 86,255,252,138,225, 98, 21,101,147,172,188, 94, 92, 23, 97,100, 44, 15, +150, 26,127, 50, 47, 43, 26, 0,100,118,213,155,249,204,152,178,173,195,144,158, 36,121, 66, 27,164,103, 40,213,179, 95, 50, 36, + 78, 73, 7,188,162,244, 86, 73,230,110,220,184,177, 3,192,142,246,237,219, 39, 26, 27, 27, 35, 39, 39,231,179, 50, 40, 72,111, +235,126, 93,121,137, 99,155, 35, 45, 87,171,254,249, 37,131,120, 37,119,180, 60,146,101, 99,110,114,101,251,202,137, 70,241,177, +145, 16,137, 68,144,203,229,184,118, 47, 24,201, 33,103,190,134, 96,129,207,231, 47,153, 63,127,254,226, 73,147, 38, 33, 53, 53, + 21,231,206,157, 67,247,238,221,113,228,200, 17,215,139, 23, 47,174,247,242,242, 2,159,207,199,249,243,231,161,211,233,222,150, + 82,158,125,198,141, 27, 55,187, 95,191,126,120,252,248, 49, 18, 18, 18, 62, 81,178, 50, 50, 50, 6,111,219,182,173, 95, 68, 68, + 68,185, 74, 86, 49, 52,171,226,214, 72, 52,111,209, 90,168, 21, 73,130,228,184,135,254, 55,174,241, 30,164,165,165, 25, 1,200, +252,210,252, 52,192, 0, 3, 12, 48, 64,111, 85,171, 52, 46,146,156, 79,162,146, 75, 58, 46, 66,176, 74, 58, 38,197, 84, 48, 77, +177,243,129,255,228, 61,233,165,104, 9,236,234,130, 73, 12, 41, 66,180,146, 62, 57, 47, 53,177,212,203,117,168, 99, 32,216,190, +167, 48,142,150, 52, 53, 53, 85,106,109,109,173, 42, 74, 16,140,140,140,224,232,232,136,244,244,116,236,220,185, 19, 0,202,155, + 20,205,152,246, 27,142,102, 67,198,224,137,179, 24, 84,167, 45, 84,182,182,143, 26,245, 9,217, 18,137, 68, 5,115,195,202,235, +116, 31, 17, 66, 34, 1, 60,160,148,210,198, 53,170, 45,151, 26, 27,143,106, 82,223,205,122,250,196,177,194,136, 36, 53,110,182, +153,151,241,231,175,115,229, 49, 84, 62, 41,138,102,220, 47,199, 94,248,247,191, 31, 44,174,100,197, 54,170, 81,109,129,212, 72, +250, 99,139,186, 53,236,125,102, 78, 20, 70, 36,170,201,205,102, 63,103,157,252,237,103,163, 15, 48,153, 29, 67,211,111,233, 81, + 60,139,187,119,239,190,152, 82, 74, 57,142, 91, 4, 0, 69,211, 59,115,242,143,194,240,143, 42,220,104,179, 32,253,228,175,115, + 77, 98, 80,118,122,109,234,247,105,109,103, 97,122,101,251,170, 73, 70, 9,113, 81,144, 72, 36, 48, 49, 49, 65, 76, 98, 38,132, + 2,190,242,107, 42, 27, 33, 68,226,233,233, 57,119,226,196,137, 8, 14, 14,198,132, 9, 19, 18,162,163,163, 79, 29, 59,118,108, +194, 47,191,252, 34,232,210,165, 11, 18, 18, 18,176,122,245,106,221,189,123,247, 86, 1, 88, 93, 98,125, 20, 8,198, 46, 95,190, +156,198,199,199,147, 15, 31, 62,192,193,193, 1, 83,166, 76, 17,175, 90,181,170,112, 78, 86, 69,148,172, 2,196,198,198,250,187, +187,185,160,215,165, 13, 96,116,106,255,140,212,232, 59,175,195,211,253, 45,197,226, 89,109, 26,215,255,162,252, 52,192, 0, 3, + 12, 48,224,155,224, 73, 57,199,255, 82,148,228, 58,212,151,104,189,221,188, 96,180,251,232, 73,115, 32,115,109, 13,117,232,105, +112, 57,137,133,138,150, 84,110, 1, 75, 23, 15,100,228,170,113,226,198, 51, 0,120, 91,145,132,101,103,103,163,113,227,198,216, + 58,178, 70, 7, 85,118,170, 84, 6, 64, 45, 49, 85,157, 17,183,189,121,241,226, 69, 5,199,113, 71, 1, 92, 44,199,204,146, 58, +117,234,108, 89,187,118,173,216, 99,200,104,228, 60,188, 91, 92,157,130, 76, 38,131, 68, 34, 65, 80, 80, 16,110,222,188,169, 1, +176,164,156, 12,123,196, 48, 76,224,209,163, 71, 99,221,171, 57,119,109,223,180,217,212,249,243,124, 76, 94,221,189,138, 69,171, +182,112,213,155,116,201,244, 59,114, 38, 59, 83,238,210, 81, 17,255,250,133, 30,183, 26, 88,140,100,197,123, 84,117,233,208,178, + 81,195, 57,139, 22, 45, 48,125,121,247, 26,126,249,109, 59,117,111,208, 41,243,183,147,103,179, 82,140, 42,127,167, 76, 12,125, +172, 79, 30,222,190,125,123, 7,128, 29, 5,199,197,211,235,179,108, 35, 87,163,105,215,116,191, 35, 39,115,179, 76, 92, 58,149, +149, 94,219,218,125, 91, 85,114,176,188,178,121,197, 79, 70, 31,227,162, 33,145, 72, 32,151,203, 17,157,144,129,197, 27,142,231, +106, 57,174,235, 87,214, 69,137,137,137,137, 68,171,213, 98,235,214,173,136,142,142,110, 73, 41,141, 38,132,108, 31, 52,104,208, +166,122,245,234,213,122,249,242,229,219,156,156,156, 73,148,210,215,165, 25, 49, 55, 55,111,105, 99, 99, 67, 30, 60,120,128,159, +126,250, 73, 51,101,202, 20,209,136, 17, 35, 72,122,122,250,151, 42, 89, 0, 0,103,103,103,207,239,189, 91,161,117,231, 9,254, + 26, 85,198,157,136,215,251,253,121,244,190,180,113,195,250, 95,148,159, 6, 24, 96,128, 1, 6,252,111,160,172,201,240,101,238, + 70,237, 9, 8,106, 88, 97,124, 29, 39,209,199, 3,191, 78,161,217,225, 1, 84,249,120, 7,205, 58,253, 35,189,176,122, 4,189, +184,121, 58,157,224, 93,135,214,178, 37, 31,107, 88, 97,188, 39, 32, 40,107,119,239,238, 53,161,235,236, 6,218,217, 13,212,187, + 6,116, 0,230, 55,106,212,232,204,228,102,160,244,213, 97, 74, 95, 29,166,147,155,129, 2,248, 9,128, 92,223, 29,195, 1, 56, + 0,216,217,184,113, 99,230,214,173, 91,244,205,128, 78,244,121, 45,107, 58,105,210, 36,250,203, 47,191,208,161, 67,135, 82, 27, + 27, 27, 6,121,254, 82,135,242,108,246,234,213,203,153, 82,138, 74,149, 42,153, 55,241,168,254, 49,232,198, 57,122,231,192, 38, +250,199,228,190,180,121, 61,143, 20,251, 90,237, 2,101, 14, 53, 27,234,187,179,185,189,189,253, 60, 74,105, 87, 74,169, 3,165, + 20,238,238, 86,242, 70,181,170,199, 7, 94, 63, 71,239, 30,220, 66,255,152,220,151,182,168, 95, 59,213,217,195,235,181,212,182, + 86,179, 47,221, 45,189,196,244,214,173,149, 98, 87,189,213,139,210,210, 91,212,102,213,102, 3,207,198,198, 39,210, 71,143, 30, +209,139, 23, 47,210,187,119,239,210, 3,199,206, 82,151,166, 3,114,172,235,245,110,253,181,187,186, 3, 48,243,246,246,166,111, +223,190,165,221,186,117,163, 0,204,190,196, 38,128, 51, 17, 17, 17, 52, 36, 36,132,206,159, 63,159, 2,216, 55,113,226, 68,101, +102,102, 38,237,212,169, 83, 52, 0, 30,138,213, 69,125,211, 89,173,138,147, 95,159,158,109,151, 76,254,169,159,231,215,230,231, + 55,220, 21,222, 96,211, 96,211, 96,211, 96,243,191,222,230,127,242, 43,159,135,140, 43,242,222,168,224, 92,153,138,214,237, 60, + 53, 96, 71, 61, 59,114,104,213,234,205,179,182,238,216, 55,103,238,212,177,198,109,219,116, 70,240,245,189, 56,121,254, 88,174, + 74,173, 89, 45,226, 99,109,112, 10, 45, 55, 14,197,133,215, 84, 88,130,122,100,100,233,134,194, 24, 76,239,210, 1, 74,233,246, + 10, 50,201, 4, 0,227, 8, 33,107,189,188,188, 86,254,216,186, 89,223,201,173, 58, 64,167,211,225,192,129, 3,136,138,138, 58, + 5, 96, 1,165, 84, 47,197, 45, 56, 56, 56,165, 78,245,202,211, 44,101,162, 57,147,134,246,177, 73,126,255, 10,177,161,207, 1, + 0,106,181, 82,151, 16,230,223,160, 34,233,147,201,100,143,108,108,108,222,216,216,216,164,179,234,156,113, 82,129,233,162, 9, +131,191,183, 77,141,120,141,152,151,121,158, 81,181, 74,161,141, 9,187, 89,235, 75,152,116,229,202,149, 37,198, 66,140, 47, 49, +189, 26,149,238,227,219,208,134,250,216, 81,168, 53,171,150,174, 63,240,221,138, 57,163, 36,166,166,166,120, 22,242, 14,139,214, + 29,201, 85,106,116, 93,147,131, 78,223,255, 70,172, 31, 58,157, 78,239,133, 14,165, 96,110,131, 6, 13,106,174, 92,185,210,125, +228,200,145,248, 90, 37,171, 40,222,127,136,245,105,223,190,125,237,119,111,158,121, 89,202, 68,135,190, 38, 63, 13, 48,192, 0, + 3, 12,248,159,129, 55,165,116,103, 65,132,248,124, 87,226,115,125, 92,135,121,196, 35,145, 42, 0, 44,171,102, 71,182,207, 91, +185,126, 49,143,108, 24,197, 81,186,151,225, 97,105,120, 10, 77,254,202,142, 87,225, 93,139, 48,223,245, 30, 42, 0, 0,161, 0, +204, 87,216,122, 11,160, 31, 33,164,233,174,251,143, 23,230,127,189,130, 82, 90, 33, 95,174,137, 0, 33,109,106, 87,115,106,219, +168,142,148,207, 42, 17, 27,250, 30,105,185, 42, 92,123, 25,149,193,163,188,189, 21, 77, 87,120,120,248,109, 0,168, 91,189,114, +104,219,218,110, 46,237, 26,215, 49, 18, 18, 13, 98, 95, 61, 67,166, 82,131,171, 47,163, 50, 65,200, 23, 79,168,254, 86,233,253, + 24,116,230,137, 77,253, 62,157, 8, 33,215,231, 79, 30, 34, 89,188,238,232, 55, 37, 89, 0, 20,113,113,113,169, 10,133,194, 42, + 62, 62, 94,131, 47, 12, 18, 71, 41,125, 71, 8,169, 55,125,250,244,101,179,103,207,158,243,235,175,191,138,190,100, 78, 86,105, + 72,143,139, 58,221,174,206,183, 43,127, 3, 12, 48,192, 0, 3,254,251, 81, 48, 79,171,248,124,173, 10,133,119, 8, 79,164,201, + 0, 38,185,185,145,153,239,223, 83,205,183, 74, 92, 73, 74,215, 87,146,183, 39, 0,122,126,177, 1, 30,201,126,248, 54, 42,231, +209,219,168, 28,112,148,114,148,170,121, 60,196,228,106,181,171,194,194, 99,175,124, 69, 41,176, 79,222, 69, 43,159,190,143, 81, + 81,142,163, 28,165, 26, 66,240, 81,167,227, 86,133,132, 71,158,253,119, 72,111,114,208,233,251,246,181,251,182,189,255, 40,100, +102,110,174,118, 75,242,171,211, 1,223,176, 92,116,132,144, 97, 45, 91,182, 28,205,178,236,118, 74,169,238, 43,108,105, 0,204, + 37,132,156, 10, 14, 14, 62, 30, 16, 16,144,240, 45, 72,214, 63, 90,254, 6, 24, 96,128, 1, 6,252, 87,226,139, 55,149, 46, 13, +223,146,100,253, 59, 34,248,109, 68,227,127,194,110,200,219,136,186,255, 9,233,253,248,234,212, 83, 0,131,255,161,202,120, 21, +192,213,111, 73,170, 9, 33, 85, 0,240,191, 9,201,250, 7,203,223, 0, 3, 12, 48,192,128,255, 78,124,245, 94,135, 6, 24,240, +111, 62,146,160, 0, 24, 67, 78, 24, 96,128, 1, 6, 24,240, 47,234,135, 74, 85,180, 8,128, 78,165,252,232,122, 5,152, 92,167, + 47, 72,212,117,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255, 45,155,255,141, 32,132, 56, 32, 47, 90,125, 97,212, +250, 66,242,245, 15, 47,119, 52, 44,125, 53,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,111, 15,239, 48,174,232,123, +209, 23,207, 32,248, 25, 96,128, 1, 6, 24,240, 15,142,244, 37,249, 27,201,127,209,121, 3, 12,248, 15,170,235,133,171, 14,139, +206,217, 18,124,129,161,234,249, 74,216,187,127, 48,177,147, 29, 28, 28,198,213,175, 95,223, 67, 36, 18,241,178,179,179,151,222, +188,121,115, 73,241,235,218,213, 17, 62,229,243,224, 92,228,151, 0,225, 3, 60, 30, 88,138,216, 59,129,138, 38,134,162,255,183, +174,148,174, 50, 83,155,191, 8,143, 47,102, 25, 45, 88,157, 22,192,223,219, 49,113, 28, 19,197,104, 84, 93, 74,251,189, 67,195, +190, 46, 12, 75,253, 0,110, 27, 1,111, 2, 5,247, 59,161,188, 9,148,135,109,132,195, 79, 16,232, 86,131, 17,206, 22,136, 4, + 11,226,159,157,136,249,111,200,179, 63,255,252,147,255, 53,191,239,223,191,127,137, 27,136, 58, 57, 57,157, 55, 50, 50,114, 43, +237,119,185,185,185, 9,241,241,241, 94,255,229,245,177, 29,128,205, 0,234, 20, 59,245, 26,192, 52, 74,233,141,175,253,143,246, +132, 8,236,128,241, 34,224,103, 0,208, 2,191, 37, 2, 59,110,127,163,133, 28,223, 2,182,182,182,119, 4, 2,129,123,110,110, +110,110, 86, 86, 86, 53, 83, 83,211,112, 99, 99, 99, 99,134, 97,222, 38, 37, 37,181,171, 96,158, 78, 68,254, 86, 90,132,144, 57, +148,210,109, 21, 57,111,128, 1,255, 41,248,170, 85,135,132,144, 26, 0, 60,243, 95,237,154, 54,109,106,151,155,155, 11, 66, 72, + 34,128, 59, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124,254,154,141, 27, 55,206,154, 50,101, 74,225,102,208, 65, 65, 65, 37, + 95,203,131,243,173,115,215,109,159, 4,135,161,105,167,254,249, 68,139, 7,228, 38,192,171,115,179, 47,109,108, 77, 44, 44, 44, +150, 18, 66, 6,240,120,188,114, 59, 53,142,227, 88, 74,233,137,244,244,244,197,148,210,236,138,252,151,220, 88,170, 99, 88,182, +196,255, 16,240,249,108, 78,174,170,212,176, 23, 86, 86, 86, 1, 60, 30,175,106,209, 13,179,243,211, 95,226,231,162,199, 12,195, +196, 38, 39, 39, 55,209, 35, 47,164, 60,129,104, 26, 33,162,206,224,113, 53, 0, 2, 2, 94, 24,199,106,174,113,140,118, 35,165, + 84,245, 53, 36,203,161, 82,181,187, 51, 22,248, 57,135,132,190,198,252,201, 67,241,235,230,125,152, 55,109, 52, 54,238, 60,130, +105,227,134,160,118,237, 58,101,218, 96, 41, 89,186,104,218, 48,175,149, 27, 15, 55, 93, 48,109,168,241,202,141,135,155, 46,152, + 62, 84,190,114,211,225, 38, 11,166, 15,147,175,216,116,168,201,194,233,195, 76, 87,110, 58,172, 5, 48,230, 75,210, 57,180,134, + 83, 46, 97,152, 18, 71,219, 84, 32, 80, 31, 14,139, 51,254, 87, 60,212, 35, 71,142,172,175, 84, 42,159, 13,237,220,200,175, 97, + 13,167,184,146,174, 73,253, 24,231, 20,254,230,185,143, 80, 36,107,252,189,207,190,160,178,236, 73, 36,146,170,175, 95,191,118, +231, 56, 14, 44,203,130, 97,152,194,119,141, 70,131,118,237,218,125,147,133, 51,132,144,158, 0,150,230, 61,172,240,165,148, 30, +255, 10, 91,114,129, 64, 48, 67, 44, 22,123, 50, 12,227, 1, 0, 66,161, 48, 84,173, 86,251, 51, 12,179,158, 82,154, 83, 65,147, + 27,226,226,226,106,203,229,114,104,181,218,194, 13,232,249,124,126, 45, 23, 23,151,173, 0,220,191,246,254,237,128,241,173,218, +180,217, 56, 98,214, 44,190,242,206, 29,108,220,179,103, 3,178,178, 0, 96,107,121,191,149, 72, 36, 87,120, 60,158,107, 69,254, +143,227,184, 40,181, 90,221,165, 34,191, 17, 8, 4,238,241,241,241,182,142,142,142, 0, 0, 99, 99, 99,227,162,199, 21, 81,178, + 0,172,166,148,202, 0,128,199,227,109,108,213,170, 85, 75, 66, 8, 3,128,114, 28,199, 35,132, 12,225, 56, 78,144,127,253,106, + 66,200, 30, 74,169,218,208,109, 27,240,159,168,102,149, 70,182, 4,101,252,232, 34, 0,207,166, 77,155,202, 6, 15, 30, 12, 79, + 79, 79,184,187,187, 67, 42,149,230, 53,226,169,169,118, 47, 94,188, 24,120,231,206,157,129,231,206,157, 3, 33, 68, 9,224, 30, +165,180,196,135,186, 83,207,182, 83,164,114,201, 38, 0, 72,142, 77, 77,136,253,144,180, 41, 33, 33, 97, 53, 45,178, 27, 53, 33, +164,218,136, 17, 35,102, 78,157, 58, 21,231,207,159,199,145, 35, 71,160, 86,171,145,157,157,141,155, 55,111,150,156, 80, 69, 18, +210,111,250, 1,198, 17, 64,180, 63, 96,100, 11, 24,219,125,113,102, 89, 88, 88, 44,157, 54,109,218,244,218,181,107, 23, 70, 49, +215,233,116, 96, 24, 6, 58,157, 14,233,233,233,152, 57,115,102, 1,131, 5,199,113,184,116,233,210,148,113,227,198, 1,192,140, +146,108,182,108,226,242,148, 71,120,206, 5, 90, 13,101,217,216, 7,207, 99,154, 48, 44,203, 87,169,180, 37,238, 84, 46,149,138, +202, 36,121, 66,161,208,249,213, 95,127,217,242,196, 98, 80,150, 5, 56, 14,148,227, 0, 20,121,209,188,239, 40,203,129,234, 88, +112, 12, 7, 70,169, 70,179,137, 19,245,169, 52,173,132, 98,217,145, 97, 63,206,178,111,222,162,133,176,114, 37, 71, 48, 44,135, +247, 17,177,246,207,158, 62,108,125, 98,255,214, 9,132,144, 33,148,210, 47,138,179, 37, 54, 50,189,186,229,247, 93,206, 79, 94, +132,224,198,173, 59,184,126,211, 31, 0,112,229, 86,158, 57, 30,143, 87, 94,250, 44,172,220,189,234, 79, 25,221,219,120,197,218, +221,146, 41,163,123, 11,254,126,223, 37,153, 50,250,123,193,202,245,187, 36, 83, 70,127, 47, 92,254,219,150,134,132, 16, 11, 74, +105,122,105,246, 74, 43, 35,194, 48,146, 67,225,137,124, 0, 72,222,190, 29,186,164, 36, 56, 46, 94, 12, 0, 24, 86,205, 78,111, +119,135,141,141,205, 83,161, 80,232, 92,222,117, 58,157,174, 92, 18, 60,114,228,200, 6, 74,165,242, 41,195, 48, 84, 32, 16,248, + 12,237,243,221,153,174,109, 27,164, 22,189, 38, 40, 40,208,106,213,170,191,122, 31,127,150, 77, 7, 54, 54,121,118,126,205,200, + 38, 61,102,239, 11, 44,163, 67,230,169,213,106,188,125,251, 22, 69, 55,121, 47,202,107,191,176,241,225, 1,216,104,101,101,213, + 60, 53, 53,117, 24,128,249, 89, 89, 89,245,249,124, 62, 44, 45, 45,231, 19, 66,222,155,153,153,237,206,204,204, 12,200, 87,141, + 56, 61,237,182, 51, 53, 53, 61,112,250,244,105,139, 70,141, 26,241, 82, 82, 82, 80,165, 74, 21,164,165,165, 53,187,115,231, 78, +227, 49, 99,198,140, 33,132,252, 64, 41,189, 83,129,228,214, 52, 50, 50,162, 35, 70,140, 32, 44,251,247,237,254,241,199, 31,232, + 82,151,113,251,169,171,177, 66,165,161,153, 55,222,154,253, 36, 18,137,238, 69, 70, 70,102, 86, 52, 63, 68,192,207, 35,102,205, +226,203, 35, 35, 33, 15, 12,196,176,172, 44,193,175,121,234, 86,185, 68,139,199,227,185, 30, 56,178,215, 93, 44, 22,131, 97,152, + 66, 50, 88,208, 70,233,116, 58,104,181, 90,232,116, 58,176, 44, 11,157, 86, 7,223, 21,191,125,113, 91,104,100,100,100,228,232, +232,152,104,100,100,100,244, 45, 58, 34,137, 68, 34,216,191,127,255, 16,177, 88, 12, 0,208,104, 52,168, 91,183, 46, 49,116,209, + 6,252, 55,145,173,146, 84,174,178, 70,169,221,178,178,178,192,178, 44, 76, 76, 76,192,231,243,139, 43, 42,232,220,185, 51,218, +181,107,135,193,131, 7,227,213,171, 87,178,193,131, 7,119, 46, 85, 25,152,213, 3,149,220,237,242, 59, 19,206,225,254,133, 23, +126,127, 44,255,211, 6,192,172, 34,151,141, 25, 63,126, 60, 73, 77, 77,197,128, 1, 3,238,168,213,234, 94,148,210,172, 82, 21, + 13, 14,177, 94,131,135,129,163, 68,182,254,209, 46,162, 81, 41, 41,143,199, 83, 22,184, 14,191, 48,163, 6, 56, 58, 58,226,232, +209,163,208,104, 62, 15, 23,102,106,106,138,151, 47, 95, 22, 85,224,208,162, 69, 11, 62, 33,100, 64,105, 68,139, 16,158,243,253, + 39,145,182, 5,199, 61, 58,215, 17,181,108,226,154,104, 99,101, 66, 1,144, 5, 11, 22, 20, 18, 55, 0, 88,186,116,169, 62,233, + 4, 79, 40, 68,178,191,255,223, 13,177,128, 7,158,136,128, 8, 1,158, 32,207,139, 10, 10, 80, 22,224, 24,128,211, 1, 82,135, + 74,250,216,110,230,228,226,126,126,213,186,109,230,106, 29,197,209,179, 55, 16, 17,241, 1,124, 30, 15,213,220,220,241, 93,251, +182,194,198, 77, 91, 86,250,109,201,172,115,132,144,110,148,210,199, 21,206,104,142, 74,221, 92,172,177,251,143,103,176,177,144, + 99, 64,239,238,144, 73, 37,248,117,243, 94,172,152, 55, 25,238,213, 92,177, 99,195,202, 82,127,110,102,102,182,172, 81,189, 90, +213,246, 30,191, 12,207,118,173, 4,251,142, 95, 65,251,118,173, 5,123,143, 95, 70,123,207,182,130,125,199, 47,163,125,187, 54, +194,125,199, 47,163, 69,147,122,110, 1,169, 65,203, 0, 76, 46,253,158,139,149,209,119,121,101,228, 46, 16, 21,118, 4,145, 19, + 38, 0, 64, 33,209,170, 8,132, 66,161,115,124,124,188,109,121,215,149,167, 26,228, 43, 89, 79, 25,134, 65, 82, 82, 18,201,200, +200,160,230,230,230,189, 47,239,152,127,186, 75,155, 6,105, 0, 16, 24, 24,104,233,235,187,170,247,177,167, 89, 80, 62,220, 66, + 14,253,229,207, 13,235,229,249,244,172,223,200,198,253,251,247,127, 94,146, 93,181, 90, 29,209,176, 97, 67,154,255,217, 73, 34, +145,136,138,213, 9, 71,119,119,247,207, 84,107, 61, 92,138, 27, 31, 60,120, 48,185,118,237,218,168, 85,171, 86, 64,243,230,205, + 77,141,141,141,113,249,242,101,120,120,120,212, 49, 53, 53,125,116,226,196, 9,225,220,185,115, 27,236,217,179, 7, 0,166,232, + 81, 63, 59,121,121,121, 29, 61,127,254,188, 84, 36, 18, 65,169, 84,226,229,203,151, 48, 51, 51,131, 88, 44,198,247,223,127,207, +111,221,186,181, 85,251,246,237, 79,230, 15, 6,244, 94, 1,165, 82,169,232,252,249,243, 97,100,100, 4, 35, 35, 35, 24, 27, 27, +195,216,216, 24,114, 41,200,246,105, 46,178,169, 59, 51,100, 51, 22,111,247, 59,176,109,201, 45, 23, 23,151, 95,162,163,163, 51, + 42, 90, 23,148,119,238, 64, 30, 24, 8, 20,121,118,245,133,153,177, 37,124,124,124,202, 83,164, 32, 18,137,208,170, 85,171,114, +237, 89, 89, 89,157, 18, 8, 4,118,197, 58, 7,169,143,143, 15, 27, 22, 22,102,204,227,241,140, 57,142,131,143,143, 15,203, 48, +140,212,206,206, 46,128,227,184,196,228,228,228,190,229,217,166,148,170, 9, 33,115,120, 60,222, 70,137, 68, 34,168, 92,185,114, +212,162, 69,139, 30,228,171,153,160,148,242, 42, 87,174,220, 76, 38,147,185,170,213,106, 6,192, 28,131,154,101, 64, 25,104,156, + 39, 10, 23, 66, 3, 64, 92, 32,224,231,245,118,176, 46,246, 61, 0,164,228, 15, 20,237, 74, 57, 78, 5,240, 10, 64, 77, 0,182, +249,231,158, 0, 72,171,104, 2,203, 84,180, 8, 33,180,200,133,133, 29,139,137,137, 9,158, 60,121, 2, 66, 8, 76, 76, 76, 96, +106,106, 10, 51, 51, 51,100,101,101,225,213,171, 87,120,253,250, 53, 34, 35, 35, 65, 8, 65,181,106,213, 80,240, 0, 21,177, 85, +216,192, 29, 94,123, 30, 82,185, 4,132, 0,141, 58,212, 71,253,118,117,209,244,113,248, 52, 71, 71,199,157,241,241,241,111, 9, + 33,130,186,117,235,142,105,209,162, 5,214,173, 91, 7,181, 90,189,174, 36,146, 85,212,230,157,151,186, 38,249,157,211,236,131, +151,223, 27, 13,239,234,166,136,143,143, 95,243, 5,153,243, 73, 67,156,146,146,162,247, 94,124, 28,199, 33, 61, 61,189, 76,155, +197, 21,130,245, 27,183,152,103,103, 38, 98,249,175, 7,161,211,233, 48,107,214, 44,112, 28, 87,248,202,200,200,208, 43,157,148, + 45, 38, 50,240,242, 94,132, 7, 16, 1,224, 50, 40,143, 87, 68, 31,221, 2, 66, 1,194, 2, 40,118, 95,197,109, 18, 66,164,124, +145,236,216,146, 95, 55,153, 63,127, 29,139,179, 55,158, 67,155, 21,135,132,192,211, 0,128,106,173,134,224,184,154,143,230,245, +221, 48,125,193,111, 22, 11,167,255,112,140, 16, 82,171,168, 27, 81,159,142,141, 82, 22,203,151, 45,195,206, 77,235,240,219,186, + 77,200,202,204,128, 80,104, 13, 0, 96, 24, 22,108,177,123,251,236,222, 41,237,186,112,246,120,178,113,215, 73,212,173,110,143, +115,215, 2,208,164,142, 43, 46,221,124,140, 22,245,170,224,138,255, 51,180,168, 95, 21,254, 15, 95, 98,214,164, 17,228,254,165, +125, 93, 43, 82, 70, 27, 54,108, 49,207,206, 74,196,249,149,251,145,180,117, 43,162, 38, 79, 70,179,252,107, 30, 19, 2,145,179, + 51, 32, 42,191,140,138, 35, 52, 52, 20,106,181,186,164,209, 62, 60, 60, 60,202, 45,119,165, 82,249,140, 97, 24,154,152,152, 72, + 18, 19, 19, 97,108,108, 76, 94,190, 12, 97,235,212,169,219,135,190,254,115, 23, 0,248,250,174,234,115,252, 89, 22, 20, 1,155, +160,124,176, 25,162, 42, 65,188,157, 75,199,107,199, 45,222,241,172, 72, 39,247, 73, 58, 19, 18, 18,186, 21,124,174, 86,173,218, +235,176,176,176,154, 5,174,230,124, 23,162,136, 97, 24,247, 2,119, 34,195, 48, 80,171,213,232,212,169, 19,191,172,123,183,176, +176,104,225,225,225,129,231,207,159, 99,211,166, 77,150, 94, 94, 94,120,247,238, 29, 8, 33, 88,181,106, 21,169, 93,187,182, 48, + 37, 37, 5, 93,186,116,193,169, 83,167, 90,149,151,159,132, 16, 19, 99, 99,227, 61,231,206,157,147,242,120, 60,100,103,103,131, +227, 56,180,110,221, 26, 60, 30, 15, 33, 33, 33, 88,176, 96, 1, 78,157, 58,133, 51,103,206,200, 26, 55,110,188,135, 16,226, 81, +212,173, 95, 70, 25, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49,114, 84,192,184,245, 81,106,190, +212,154,171,211,176,141,219,168,169,171,120,107, 22,141,190, 9,224,172,190,117, 30,200,155,147,181,113,239,222, 77,195, 50, 51, +121, 0,176,155, 16, 78, 75,233,111,250, 60,239, 0,144,163,202,132,107, 53,103,156, 60,118, 6,253, 6,245, 46,145,100, 9,133, + 34,136,132, 66,152, 90, 26,151,107, 83, 36, 18,217,189,126,253,218, 74, 40, 20,130, 82, 10,150,101,161,213,106, 19, 23, 46, 92, +104,227,237,237,109,114,233,210, 37,158,183,183, 55,103, 97, 97,145,251,248,241,227, 36,134, 97,172,218,182,109,171,119,157,167, +148,110,107,216,176, 97,163,211,167, 79,143,246,241,241,121, 58,123,246,236,229, 69,207,175, 94,189,122,217,197,139, 23, 93,251, +244,233,115,224,197,139, 23,219, 42,210,134,124,109, 59,111,176,249,239,103,243,194,133, 11,133, 13,177,183,183,119,113,181,211, +142, 16,114,190,200,255,247, 40, 56,246,241,241,153,239,235,235,251,146, 16,114,190,232,247, 5,215,229,183, 29,231, 75, 58,206, +255,173,229,188,121,243,234,250,249,249,173,106,217,178,229,209,128,128,128, 15, 21, 37, 90,229,206,209, 42, 32, 87, 69, 9, 87, + 49, 3,200,202,202, 66, 86, 86, 22, 98, 98, 98,176,125,251,246,252, 7, 90, 8,129, 64, 0,129, 64, 80, 56,159,161, 52, 92, 63, +119,119, 51,128,205,141, 27, 55, 22, 6, 63, 56,113,233,231,157, 83, 59, 54,233,212,136,255,236, 70,112,127, 0, 43, 0,116, 27, + 49, 98,132, 53, 0,236,223,191, 63, 5,192,165,127, 5,101,166,148,158,120,251,246,237,116, 7, 7,135,194, 57, 42, 69,221,135, + 12,195, 64, 42,149,162, 96, 46,139, 74,165,194,246,237,219, 25, 74,233,137, 50,108, 34,236,229, 77,188,125,121, 43,239,119, 28, + 7,142,253,251,247, 75,150, 44, 41,186, 68, 20, 19,242,149,147,114, 73, 94, 73,121, 78,139,189, 23,251,254, 51,114,246,153,123, + 66, 52,181,255, 15,147, 29, 56, 34,192, 95, 55, 95, 64, 40, 20,130, 43,162,102, 10,249,121,163,229,151,239,226,225,104, 87, 7, +189,134,140,183, 63,125, 96,203, 84, 0,191, 86, 52,175,107,213,111,137,105,211,167, 99,215,206,157, 88,176,120, 89, 33, 75,103, + 88, 22, 76,185,233,228,241, 90, 55,169,141,156,212, 88,240,249,124,180,106,232, 6, 62,159,143,182, 77,106,128,207,231,163, 77, +211,154, 16, 8, 4,104,223,162, 54,170, 87,175, 14,129, 64,192, 43,167,220, 17,246,242, 6,222,190,188, 93,132,244, 82, 80, 0, +218,132,132,207,174,215, 37, 36,128,186, 88, 85,180,110, 97,204,152, 49, 25, 49, 49, 49,218,226,231, 42, 85,170, 36,186,115,231, +142,121, 41,110,187, 66,200,100,178,198, 2,129,224, 89, 90, 90, 26,103,100,100,196,227, 56,150,171, 83,167, 46,255,242,142,249, +167, 11,174,153, 55,111,254,233,129,141, 77,251, 28, 60,113,158,138, 42,183, 33, 68, 40, 97,126, 92,188, 67, 36, 20,201,244,138, +120, 95,224, 70,124,243,230, 13,202, 75, 79,209,129, 89, 73, 72, 79, 79, 31,225,225,225,113,103,243,230,205,150,132, 16,220,189, +123, 23,124, 62,191,240, 21, 30, 30, 14, 30,143,135,159,127,254, 89,155,149,149, 53,182,188,180, 9, 4,130,233, 39, 79,158, 52, + 19,139,197,200,206,206, 46,124,110,248,124, 62, 94,191,126,141, 53,107,214, 96,196,136, 17,136,142,142,134,163,163, 35,102,205, +154, 37,247,243,243,155, 14, 96,153, 30,183, 30,164,209,104,154, 24, 25, 25, 65, 42,149,162,128,112, 1,192,213,151,194, 16,133, + 66, 81,207,218,218,218,222,198,255,252, 95,173,188,122, 53,176,178,113,104, 89, 64,180,244,197,123, 96,103, 4,203, 46,236,118, +250,180,237,253,211,167,185,135,231,206,197, 74,178,179,119,232, 93,135,116, 60, 68,133,199,162,113,227,198,120,246,236, 25, 26, + 55,110, 92,148, 52, 65, 44, 22, 67, 36, 18, 65, 36, 18,193,218, 66,175, 41, 20,148,199,227,225,254,253,251, 96, 89, 22, 26,141, + 6, 26,141, 6,181,107,215, 78,187,117,235,150, 28, 0,194,195,195,233,240,225,195, 51, 30, 61,122,132,134, 13,203,222, 79,221, +222,222,254, 14,159,207,175, 92,236, 89,181,232,219,183, 47,210,211,211,187,247,237,219,183, 77,254,119,113,127,254,249,231,112, + 0, 16,139,197,224,241,120, 44, 12,248,159, 71, 1,185, 42, 74,184, 74,104,115,122, 20, 63, 38,132,156,247,245,245,237, 81,252, +187,162,164,170,164,207, 69,127,235,231,231,183,170,136,109,229, 23,120,195,202,159,163, 69, 8,161,229, 53,154,101,161, 60,162, + 85,128,103,207,158,233,156,156,156,118,189,125, 17,217,209,173,126, 53,200,140, 37,223, 17, 66, 54, 75, 36,146,153, 63,252,240, + 3, 30, 62,124,136,144,144,144, 63,190,118, 59,149,122,245,234, 93,145, 72, 36,174,165,184, 73,162,130,131,131,187,148,210, 49, + 44,206,159,115, 86,234,100,248,162,243,197,138, 78,134, 47,181, 98,112, 20, 58,173, 14,185, 10,229,223,157,120, 62,209,202,205, +205,197,160, 65,131, 62, 81,180,146,146,146,244, 41, 84,172, 57,123, 22,215, 78,156, 64,247, 6, 13,112,234,241, 99,248,253, 48, + 20,181, 92,157, 64, 89, 2, 74,128,232, 35, 91,144,154,149,131,195, 55,238, 35, 45, 91,129, 97,109,219,194,221,212,186,108,187, + 66, 81,231,102, 45, 90,138,174, 7,188,130, 80, 40, 0, 15, 28,168, 78, 1, 71,143,246,224,243,120, 48,179,171, 2,145, 80, 8, +161, 80,128,240,152, 20,120,212,109, 42, 62, 47,150,118,254, 18,162, 85,201,181, 10, 88,150,197,136, 17, 35,112,244,232, 81, 88, +217,187,194,172, 82, 93,172, 88,183, 19,221, 59,181, 45,247,254, 11, 70,240, 2,129, 0,124, 62,255,179,247,130,207,250,168,147, +148,163,208, 22, 47, 35,142, 2,148,194,121,229, 74, 56,175, 92,137,199,249,255, 89, 59, 55, 23, 74,165, 18,104, 94,167, 66, 36, + 75,163,209, 32, 38, 38, 70,155,144,144, 96, 87, 66, 7,149,168,209,104,202, 37, 54,251,246,237, 11, 26, 57,114,100, 19, 75, 75, +203,167, 65,129,129,186,250, 13, 26, 8, 47,109,159,127,166,192,109, 8, 0, 13, 26, 52, 72,155, 63,127,254,153,225, 3,122,244, +222,230, 51,152,157,184,236,128, 64, 34,147, 53,233, 49,187,236, 9,241, 69,158,143,136,250,245,235, 83,125,174, 85, 40, 20, 31, +203, 40,163,158, 0,150, 54,106,212,200,212,203,203, 11,119,238,220, 65,191,126,253,212, 90,173,246,109,126,163, 90,227,240,225, +195,226, 87,175, 94,193,198,198, 70, 24, 21, 21,181,135, 16, 82,230, 4,121,177, 88,220,190,105,211,166, 60,181, 90,253, 25,201, +242,243,243,195,144, 33, 67, 80,163, 70, 13,112, 28,135,156,156, 28,120,121,121, 9, 55,109,218,212, 94, 79,162, 53,173, 86,173, + 90,107,144,183,234,176,104, 91, 24, 10, 96, 78,190,218,253,177, 71,191, 17, 47,219,118,234,219,164,114,245,186, 14,229, 25,180, +179,179,155,199,227,241, 6,114, 28,199,207,202,202,138,209, 16, 82,189,182,171,171, 93,235,222,189,145, 41, 20,242, 55,222,184, +193, 75,204,206,150, 3,208,203, 5,169,210,229,194,181, 90,222, 84,191,126,131,122,227,217,179,103,232, 63,184, 15, 68, 34, 17, + 4, 2, 97,222,179, 41,202, 83,180,204,173, 77,245,170,155, 58,157,174,176, 13, 47,152,231,165,213,106, 81, 48, 53,203,200,200, +168,240,156, 90,173, 46,117, 64,158, 15,247,227,203, 22,217,202, 76,205,192,234,116,168,211,187,127, 97,157,126,180,123,155, 12, + 28, 39,203,136,138,192,148, 19,231,132, 48,192,128, 82, 84,173, 18,212,172,162,237,202,249,226,100,235, 75, 65, 8, 57,239,227, +227, 51, 31, 0,245,241,241,153, 95,112,236,235,235,171, 4, 16,247, 37,100,171, 36,149, 75,240, 45, 72, 86,129,123,161, 44,116, +232,208, 97,138,137,137,201, 38, 0,104,210,164, 9, 98, 30,198, 33,230, 97, 28, 60,106,214,105,221,168, 65,147,204, 33, 67,134, +192,202,202, 10,179,103,207,166, 0,254,168,232,255,135,135,189,148, 3,160,142,142,142,179, 1,192,209,209,177,193,227,199,143, +109,158, 60,121,130,166, 77,155,254, 45,221,107,181,104,211,166, 77, 89, 29, 98, 54,242,230, 90,205,248,118, 42, 25, 7,173, 86, + 11,133, 66, 9,141, 70, 11, 70,199,129, 97, 24, 52,174, 99,130, 3, 59,125,242,190, 99, 10,212,179, 60,213,204,217,222, 4,141, +235,217,235,120, 60,162,124, 18,152, 80, 98,139,169,209,104, 16, 20, 21,133,192,200, 72, 0, 64, 47,223,178, 39,190, 30,184,113, + 7,181,107,215, 46, 47,181,110,206,142,246,136,191, 22,148,215,120, 43, 99,240,228,222,113,152,152,200, 1, 0,117, 60,135, 65, + 36,202, 35, 90,185, 74, 45,172,107, 86, 2,161,180,212,176, 0,198,150, 14, 87, 4, 34,169, 43,101, 57, 80,202,129,114, 44, 40, +229, 32, 49,177, 50,154, 50, 97, 52, 56,142, 69,179,102,205, 64,248,124,176, 58, 53, 6,244,236,140,244,204,108, 88,153,235,215, + 73,136, 68, 34,120,122,122,202, 74, 59,255,238,221, 59,101, 81, 98, 86,118, 25,233,144,155,171,132, 90,173,134, 86,195, 64,171, + 99,192, 86, 21, 97,249,194,161, 96,180, 12, 20,131, 91, 66,171, 99,192, 77,239, 3,173, 70,135,104, 35, 30,175, 65,109, 27, 29, + 15, 68,249,252, 85,146,105,121, 68,171,128, 28,148,134,146,230, 4,150, 66,182, 2, 71,142, 28,217,184,126,131, 6,207, 6,118, +106,176, 54, 56,228,101,124,112,200,203,207,174,115,173,209, 32, 98,162,223,209, 89, 66,145,172,177,190, 36, 11,248,212,141,248, +149,152,159,157,157, 93, 95, 46,151, 35, 44, 44, 12,124, 62, 31,132,144,119,148,210,250, 0, 48,126,252,248,247, 2,129,160, 26, +159,207,199,214,173, 91,137, 64, 32,168,215,178,101,203,249, 0,142,151, 49,160,243, 48, 49, 49,249, 68,205, 18,137, 68,240,241, +241,193,240,225,195, 11, 73,150, 72, 36,194,190,125,251,208,164, 73, 19,104, 52, 26, 15, 61,201,240, 19, 0,109,245, 80,252, 72, + 62, 57, 47,151,140, 50, 12, 51, 50,117,224,192,234,240,247, 71,235,106,213,106, 55,110,220, 24, 90,237,223,130,102,181,106,213, + 42,101,103,103,127, 36,132, 28, 2,176,141, 82,250,162, 76, 82,164,226, 16, 21, 30, 91, 48,104, 69,179,102,205, 10, 21,172,162, +106,150, 72, 36,130, 76, 44,175, 16,209,226,184,188,118, 41, 59, 59,155,231,239,239,111, 93,171, 86, 45, 2, 0,181,106,213, 34, + 47, 94,188,176, 52, 50, 50, 74,113,115,115, 43,119, 0, 44, 51, 53,195,190,145,131, 0, 0,191,116,234, 90, 56, 48,186,188,116, + 62,132, 66, 33, 58,206,158,255, 89,189,231, 56,142, 15, 3, 12, 36,171, 28,146, 85,146,162,245,117,125,243,223,138,150,175,175, +239, 75, 95, 95,223,207,212,177, 10,218, 43, 95,209,210,199, 21, 80,222,195, 90, 26,214,173, 91,135,122,245,234,149,217, 17,109, +218,180, 9, 7, 15, 30, 92, 71, 41, 13,175,232,255,247,232,216,168, 14,214,159,126, 89,173, 70, 29, 2, 0,203,166,247,228,229, +230,230,226,254,253,251, 48, 51, 51,195,187,119,250,133,253, 34,132,152,152,153,153, 45,229,241,120, 3,248,197, 87, 0,148, 76, + 48, 89,142,227, 78,100,102,102,150, 26,222,129, 82, 64,171, 99,144,171, 80, 65,163,209, 96,250,207, 91,202, 77,135, 47, 64,180, +154,108,129,103,187,150,178,210, 20,157,102,245,218, 99,210, 15,242,207, 58,111, 62, 15,224,241,128,134,205,242, 20,151, 23,143, + 95,130,227, 0,150, 3,172,109, 45,240,199,145,181,101,102, 1,195,114,249,163, 99, 22, 57,106, 22, 30, 45,122, 32, 54,212,191, + 80, 65, 18,139,242, 92,198, 34,161, 16, 28, 37,121, 81, 31, 74, 35, 66, 98,153,107,122, 66,184,251,206,243,193, 24,215,163, 30, +254,188, 30,132,254,157,234,227,214,163, 87,240,106, 94, 27, 47,223, 70,162,142,123,101,108,221,115, 2,148, 34,251,247,245, 43, + 62,254,221,161, 49, 81,250, 40, 90, 15, 31, 62, 84, 22, 87,177,138,190,211,242,251, 67, 80,250,183,162,165, 84,169, 49,123,158, + 94,225,124,242,202,168,109, 11,153, 62, 23,151,165, 88,233, 67,196,138, 43, 91, 40, 39, 60, 75, 85, 0, 77,128,185,255,202,134, +147,101, 89, 92,184,112,161,176, 60, 74, 42,199,162,101,167, 7,201, 65, 84, 84, 20, 94,190,124,137, 22, 45, 90, 32, 51, 51, 19, + 66, 30, 15,179,130,131, 81,251,135, 31,160, 17,137,192,113, 28,196, 98, 49,198,143, 31,175,119,126, 86,176, 53,205,159,231,198, +210,114,218,146,181, 61,122,244,168, 30,150,155,139,151,175, 95,163,211,146, 37, 0,128,139, 23, 47,126, 82, 39,102,206,156, 41, +126,245,234,213,152,167, 79,159,142, 33,132,172,163,148,206, 42,181,157,165,234,194, 57, 90, 3,135,246, 67,245, 90, 85,113,112, +239,145,194,243, 51,231, 76,131, 80, 40,130, 80, 36,132,185,153,185, 94,119,163,211,233, 10, 73,171, 66,161,224, 93,188,120,209, +185,115,231,206,162,105,211,166, 17, 0, 56,120,240, 32,111,243,230,205,198,215,174, 93, 19, 57, 57, 57, 37,148, 75, 46,181,218, +207,202,152, 16, 2,161, 80, 8,145, 88, 4,112, 28, 8, 33,198,171, 87,175, 94,246,242,229,203,166,181,106,213,130, 90,173,254, +129, 16,242,220, 16, 71,203,128, 2,183, 97,105,132,171,164,185, 86,249,170, 84,105, 72, 46, 58,111,171, 52,162, 86,116,206, 22, + 0,117,197,155, 5, 61,231,104,149, 4, 62,159, 95,174, 90,197,227,241,202,117, 29,206,156, 57, 19, 38, 38, 38,165,117, 64, 52, + 56, 56,248, 85, 66, 66,194, 78, 74,233,150, 47, 41,156,243, 55,158,191, 92, 58,163, 79, 54,242,125,171,230,230,230, 41, 29, 58, +116,200, 1,160, 61,126,252,211, 1,178, 90,173, 46,181, 3, 55, 51, 51, 91,186,123,247,238,169,189,123,247,230, 21, 15, 49, 80, +212,189, 87,240,210,233,116, 56,126,252,248,212,185,115,231,162, 52, 21,172,160, 19, 87,228, 42,161,204,159, 8,253, 62,228, 79, +125, 75,175,212, 83,114,115, 7, 56, 87,173, 95,106,103,194, 19,229,205, 33,178,115,249,187, 3, 51, 49,145,130, 45,195, 38, 33, +188,240,200,232,120,167, 74,246,150,120, 31,147, 12,187,202,245,144, 30,247,119, 62, 8, 4,124, 8,243, 93,135,230,166,198, 72, + 78, 74, 2,143,199, 47,147, 24,175, 56,252, 28,143, 66, 34,113,242,250, 11,104, 85,185, 88,191,255, 50,180,234, 28,104, 85,185, +208,170,242,222, 87,205,253, 17,132,224,163, 86,149, 83,163, 34,229, 46, 16, 8,208,188,121,243, 82,137, 78, 92, 92,156,158,138, + 22, 45, 84,180,148,170, 10,150,145,126, 15, 97,153,138, 85,193,249, 47, 37, 6, 5, 33, 31,100, 50, 89,147,125,251, 74, 15,227, + 80, 18, 28, 28, 28, 46,201,229,242, 42,250, 94, 95,129,224,165,171,204,205,205,151,214,170, 85,203, 99,253,250,245, 66, 62,159, +143,142, 29, 59,214,248,241,199, 31,163, 0,160, 94,189,122,142, 5,109,204,196,137, 19,233,195,135, 15, 67,242,198, 24,165, 67, + 44, 22,191, 54, 51, 51,107,226,229,229,133,204,204, 76,196,196,196,192,216,216, 24,181,215,174, 69,240,196,137,104,176,125, 59, +120, 29, 58,128, 16, 2,177, 88,140,224,224, 96,200,100,178,215,101,144,161,230, 0,126, 3,208, 26,127,187, 11, 41,128,251, 0, +126,166,148, 62, 42,161,189,227, 1, 0,203,113,229, 21,214,208,217,179,103, 35, 67, 40, 4,188,189, 33, 10, 15,135, 86,171, 69, +139, 22, 45, 10, 85,246, 22, 45, 90, 64, 32, 16,160,126,253,250,112,116,116,196,214,173, 91,135,226,211,149,216,159, 64,149,163, + 69, 84,120, 44, 90,182,108, 89,168, 92,121,123,123, 23, 42, 90, 66,161,176, 80,217, 34,108,249,196,149, 16, 66,139, 14,146, 89, +150, 37, 2,129, 64, 48, 99,198, 12,210,175, 95, 63,170,209,104, 56,177, 88,204, 59,121,242, 36,185,117,235,150, 32, 55, 55,183, +220,129,120,221, 62, 3,240, 75,231, 60, 81,116, 69, 21, 27, 8, 69, 66,136, 69, 34,204,126, 29, 91, 88, 46,166,251,142,138,253, +252,252,250,215,170, 85, 43,207, 13, 15, 8, 12,113,180, 12, 40, 71,205, 74, 46, 70,146, 52, 69,142,147, 1,144,252,227,228, 34, +132, 42, 25,121, 43, 8,155, 22,187,182,224,188,166,216,123,193,249,192,138,166,189,200, 94,135,159,145,175,178, 70,196,111, 31, + 60,120,224,222,184,113, 99, 68, 71, 71,127,182, 18,174,160,227, 50, 54, 54,134, 76, 38, 67, 64, 64, 0, 0,188, 45,205,216,205, +155, 55, 55, 35, 47,234, 50, 0,192,209,209,177,165,215,192,246, 1,205,186, 54,197, 97,223, 35,153, 9, 9, 9,245, 11, 98,232, + 16, 66,136,163,163,227,112,161, 88, 48,168, 90, 93, 23, 79,112,220,111,215,255,186,183,164,172,155,172, 86,163, 78, 14, 0,101, +145, 85,135,107,190,164,160,121, 60,222,128,222,189,123,243, 94,189,122,133, 65,131, 6,225,224,193,131,165, 94, 59,124,248,112, + 28, 61,122, 20,189,123,247,230,205,155, 55,111, 64,121, 68, 43, 79, 45,209,124,179, 74, 25,246, 46, 16, 7,142,238, 46,117, 14, +146,173,109,222,124,172,164,164,148,194,239,154, 54, 46,219, 51,194, 49,154,107,207,159, 62,110,217,170, 93, 71, 81, 76, 98, 6, + 56, 70, 13, 85,246,223,191, 87,100, 36,130, 50, 42,136,140, 44, 97,111,109,134,103, 15,174,106,180, 26,213,181,178,108, 78,237, + 93, 7, 19,123,122, 0,148, 67,159, 89,127,224,252,150, 41,133, 35,232, 54,253,166,225,198,241,141,122,207,241, 43, 14,161, 80, +136,224,224, 96,101,105,106, 22,159,207, 47, 55, 38,215,223,170,163, 14, 10,133, 18, 10,165,234,155,149, 17, 33,196,198,206,206, +238,119, 75, 75, 75,105, 73, 68,138, 16, 98, 99, 99, 99,243,187,149,149,149, 84, 95,215, 97,105, 36, 43, 63,174,214,211,145, 35, + 71, 86,136,108, 73, 36,146, 42,111,223,190, 45, 12, 86, 90,214,187, 70,163,129,151,151,151, 94,193, 75, 41,165,231, 8, 33, 31, + 28, 28, 28,238,215,174, 93,219,236,253,251,247, 56,114,228,136, 72, 40, 20,186, 20,180, 31,217,217,217,224,243,249, 72, 74, 74, +210, 1, 24, 93,158,235, 76,173, 86,251,251,251,251, 55,236,217,179, 39,255,245,235,215,224,243,249,121,233,106,217, 18, 13,182, +111, 71,200,140, 25,240,140,140,132, 74,171,133, 84, 42,197,149, 43, 87,180, 10,133,194,191, 52,123, 50,153,108,103, 68, 68, 68, + 29,169, 84, 10,173, 86, 11,142,227,192,227,241,136, 64, 32,104, 99,110,110,190, 9, 64,211, 79,159, 41, 91,219,241, 51,127,173, +201, 50, 12,155, 16,253, 62,185,188, 60, 72, 77, 77,197,185,115,231,208,162, 69, 11,120,122,122, 34, 46, 46, 14,225,225,225,232, +222,189,123,225, 53,129,129,129,120,254,252, 57,220,220,220,202, 87,244,120, 58,184,213,172, 2,145, 72,148,167, 16, 9, 69,249, + 3, 31, 97,161,146, 37, 18,138, 32, 20, 8, 33,149, 73,245, 86,180, 8, 33,224,241,120, 32,132, 64, 38,147, 21, 12,178, 57,103, +103,231,132,180,180, 52, 7, 0,124,153, 76, 6,150,101,245, 26,180, 20,244, 17, 5, 36, 75, 36, 22, 21, 42, 91, 0,144,145,145, +161,234,221,187,247, 33,181, 90, 61, 10, 95,176, 67,137, 1,255,147,120,242, 47,250,173,222, 60,145, 82,186,179,164, 73,241,101, + 85,240,238,173, 90,181,218, 62,100,200,144,142, 27, 54,108,128, 92, 46, 71, 66, 66, 66, 97,135, 40, 22,139, 81,169, 82, 37,164, +165,165, 97,199,142, 29,136,141,141,189, 9, 96,188,190, 41, 74, 72, 72,120,248,238,197,219, 84,175,254,173,172,234,180,170,105, + 30,243, 54,182, 5,128,128,124,146,245,199,144,153,221, 71,121,245,109, 6,145, 88,136,152,119, 31,255,223, 74,146,207,231,243, + 9, 33, 24, 52,104,144, 94,215, 15, 30, 60, 24,254,254,254, 40,203,205,200, 21, 40, 90, 10, 21,114,149,223,110,176, 54,105,202, +112, 76,154, 50,188,144, 76,232,227,122,201, 35,185,199,202, 32, 90,218, 13,231,143,237, 24,215,168, 89, 75,215, 38,117,170,224, +209,211, 23, 56,188,253,111,145, 97,207,230,101,248,117,207, 77, 84,178,179,128, 86,157,139, 75,127,238,250,168, 85, 43, 54,124, +161, 40,151, 71,110, 9,129,158,113, 42, 63, 81, 81, 11,136, 86,221,186,117, 75, 85,180,210,210,210,148,229,117, 12,133,101,164, +209, 33, 39, 87, 9,165,226,219, 16, 45, 66, 72,131, 54,109,218, 92, 59,113,226,132,149,173,173, 45,226,227,227, 63, 33, 90,132, +144, 6,173, 91,183,190,118,226,196, 9, 43, 59, 59, 59,196,196,196,232, 29, 86,164, 4,146,133,228,228,100,146,158,158,206, 89, + 88, 88, 84,136,108,241,120, 60,168,213,106,132,134,134,234,251,183,122,175, 16, 51, 51, 51,219,119,244,232, 81,179,148,148, 20, +240,249,124,132,134,134,126,178,234,176,224,245,199, 31,127,136,250,244,233,179, 27, 64,153,203,218, 24,134, 89, 55,124,248,240, + 49,113,113,113, 22,182,182,182, 72, 72, 72,128, 88, 44, 6,165, 20,196,203, 11,109, 63,124,128,150,101, 33,147,201, 16, 22, 22, +134,157, 59,119,230,170,213,234,117,165,148,143,216,200,200,200, 93, 36, 18, 97,216,176, 97,159,156,219,191,127, 63,122, 53,225, + 55, 25,215, 89,146,195, 64,170, 78,148,117,187,196,231,243,201,248,217,191,213,104,222,206,187,238,155,144, 71,239,147, 19, 99, +239,151,115,251, 58,141, 70,131, 90,181,106,225,201,147, 39,184,126,253, 58, 58,116,232, 0, 79, 79, 79, 4, 5, 5,225,234,213, +171,120,254,252, 57, 8, 33,176,178,178, 42,152,126, 81,230, 28, 12,141,130, 65, 82,124,234,103,234, 85,241, 99,145, 72, 4,181, + 82,171, 87, 25,189,126,253, 26, 79,158, 60, 41, 12, 45,195,231,243,153, 31,126,248, 1,148, 82, 26, 17, 17, 1, 19, 19, 19, 58, +114,228, 72, 86, 32, 16, 48,113,113,113,250,214,253, 60,245, 42,159,100, 9, 68,194, 79, 8, 26,199,113,217,129,129,129,227, 8, + 33, 65,132,144,213,249, 95, 27,226,104, 25,240,159,140, 11, 69,247, 58,212, 75,209,162,148,126, 0,208,137, 16, 50,244,204,153, + 51,235, 54,109,218,100,211,163, 71, 15,164,167,167,195,213,213, 21, 14, 14, 14, 56,127,254, 60, 46, 94,188,152,194,178,236, 44, + 74,233,193, 18, 30,182, 78,165,197,218,160,148, 82, 71, 71,199, 19,234,156,156,137,141, 61, 61,112,243,248, 93, 95, 7, 7,135, +241, 78, 78, 78,211, 71,206,255,126, 84,251,222, 77, 17,246, 60, 2, 15,175, 6, 35, 49, 58, 5, 35,219,254, 92,166,205,226,147, +225,205,205,205,199, 24, 25, 25,137, 1,104, 75, 24, 21,127,178,234,176,168, 77,150,101, 89,141, 70,131, 99,199,142,233, 69,182, +142, 28, 57, 2,149, 74, 5,182,152,127,181,168, 77,202, 81, 34, 16, 74,224, 88,169, 22,180,218, 92,112,220,151,169, 55, 69,109, + 22,140, 64,223,139,197,176, 77, 73,193,163, 71,143,244,149,102,203, 44, 35, 74,169,138, 16, 50,108,227,202,217,231, 39,251,252, +102,222,161, 85, 67,252,178,118, 63,180,218, 61,224,241,121,144, 73, 68,104,220,172, 53,248, 80,227,119,191, 57, 25,138,172,244, + 97,197,183,226,249,204,102, 89, 30, 22, 10,176, 28,135,235,119, 30,235,125,239,133,189, 61,203, 66, 32, 16,224,221,187,119,202, +146, 86, 27,242,249,121,110,206,130,145,122, 89, 54, 41,199, 17,161, 72,138, 74,174,181,161, 81,231,124,147, 50,178,181,181,157, +115,250,244,105,171,130, 80, 9, 65, 65, 65, 32,132,132, 22, 81, 71,230,156, 62,125,218, 74,169, 84, 34, 36, 36,164, 96,171,169, +208,138, 60, 71, 5, 74, 86,114,114, 50, 73, 72, 72,128,145,145, 17, 47, 40, 40, 72, 93,191,126,253,167, 40,123,231,135, 66,155, + 42,149, 42,178,180,249,147, 42,149,202, 73, 42,149, 10,139,253,214,209,221,221, 61,172,184, 11,177,164,116,102,102,102, 62,154, + 59,119,110,227,174, 93,187, 98,206,156, 57,105, 22, 22, 22, 38,191,255,254,187,128,207,231,147,201,147, 39,179, 73, 73, 73, 57, +187,118,237, 50, 59,115,230, 12, 50, 50, 50, 2,202,187,119, 74,105, 54, 33,100, 92,171, 86,173,246, 95,190,124,217,200,221,221, + 29, 89, 89, 89,160,148, 98,223,190,125,152, 60,121, 50,164, 82, 41,194,194,194,208,171, 87, 47,133, 66,161, 24, 87,124,238,100, + 17,155,132, 16, 66, 57,142,195,162, 69,139, 10,131,147, 22, 4, 43, 53,145, 17,236,156, 89,213,120,218,174, 76,227,161,191,236, +250, 1, 0, 88,134, 97,223,132, 60,122,191,111,203, 47,183, 68, 34,209,157,114,202,104,193,180,105,211,126,247,246,246,150,201, +229,114,164,165,165,225,254,253,251,120,240,224, 1, 30, 62,124, 8,141, 70, 3, 43, 43, 43, 88, 88, 88, 32, 33, 33, 1,175, 95, +191, 86, 2, 88, 80,150, 77,177,145, 16,213,106, 20,172,252,205, 83,176,132, 69, 86, 27, 22, 85,183, 68, 66,161, 94,207, 81,187, +118,237,208,188,121,243, 2, 2,196, 70, 69, 69, 37,168,213,106, 82,132,244,199, 21, 16,114, 23, 23, 23,230,224,193,131,180, 44, +155, 15,119,110,197,229,229, 11, 32, 22,137, 48, 43, 52,166,144,116,237,239,208, 8, 66,177, 8, 30, 61,251, 21,237, 7,182, 17, + 66,246,228,127, 86,235, 83,231,191, 98,224, 99,176,249,111,110,243, 63, 25,148,210, 4, 0, 21,219,130,167,200,143, 15, 19, 66, + 46,253,248,227,143,126, 13, 26, 52,248,113,253,250,245, 68, 36, 18, 97,201,146, 37, 52, 62, 62,126,111,254, 40, 36,253, 11, 19, +182,247,246,169,128, 9, 35,124,122,147,153, 27, 70,182,121,122, 35,228,117,189, 86,238,168,215,202, 29, 79,111,190,194,150,249, + 71, 14,178, 58,118, 81, 66, 66, 66,116, 57,166,212,157, 90,215, 44, 62, 25,222,202,255,214, 13,171,138,174, 58,228, 56,238,196, +145, 35, 71,166,246,237,219,151,247,248,241,227,207,230,100, 21,108,187,195,113, 28,174, 93,187, 6,173, 86,139,189,123,247,114, + 28,199,149, 30, 71, 11,244,236,198, 13,126, 35,246, 30, 56, 43, 22,139, 8, 30,220, 57,137,204,244,178, 85, 58,145, 72,136, 63, +246,157,210,138, 68,194, 55, 37,157,215,106,181, 49, 55,110,220,176,235,194,178, 66, 30,143,247, 25,129, 42, 13, 39, 78,156,208, +113, 28, 23, 85, 78,185, 4, 16, 34,236,185, 98,206,232, 35,222, 3,127,180,107,213,170,141,208,218,214, 14,132, 16, 36, 37, 38, + 33, 44,228,177,238,210,201,221,137,185,138,108,189,182,224, 25,189,230,118,225,156, 44, 0,232, 49,121, 83,225,252, 44, 0,232, + 57,114, 46,188, 90,212, 1,209, 71,122,250,155,100,113, 12,195,192,216,216, 24, 12,195,148, 24,226,193,204,204, 76,166, 82,169, +148,249,129, 24,203,148,138, 40,240,205,203,136,101, 89,143,244,244,116,228,230,230,226,193,131, 7,116,229,202,149,201,201,201, +201,133,147, 54,117, 58,157, 71, 90, 90, 26,114,114,114, 16, 16, 16, 64,253,252,252,146, 83, 83, 83,231, 87,228, 25,146,201,100, + 77, 4, 2,193,211,244,244,116,206,200,200,136,167,211,233,116,245,235,215,151,200,100, 50,189, 55, 84,143,143,143,239, 90,218, + 57, 55, 55,183,183,111,223,190,173,206,178,108,209, 61, 16, 69, 42,149,202,189, 85,171, 86,250,184,124,166,237,217,179, 7,167, + 78,157,106,150,149,149, 53, 60, 42, 42,106, 63,128,102, 2,129, 0, 47, 94,188, 8, 85,169, 84, 67,250,246,237,187, 47, 61, 61, +253, 17,128,105,122,182, 27,151, 9, 33,195, 60, 60, 60,246, 44, 93,186, 84,238,233,233, 41,112,116,116, 68,211,166, 77, 17, 22, + 22,134, 11, 23, 46,232,182,109,219,150,171, 80, 40, 70, 83, 74,175,149, 93,236, 32, 12,195, 64, 44, 22, 23,190, 36, 18, 9, 68, + 34, 17,178,149, 20, 99,215,134, 43, 25,200,148,235,150,140,187, 64, 1,242, 49, 38, 60, 37,233, 99,204, 35, 66,200,157,248,248, +248,204, 82,242, 76,172, 82,169, 26, 58, 56, 56,240, 9, 33, 27,180, 90,237,200, 41, 83,166, 56,172, 90,181, 10, 53,107,214, 68, + 74, 74, 10,140,141,141,225,238,238,142,228,228,100, 60,126,252,152, 85, 40, 20,219, 1, 44,163,148,150,233,142,204, 72,201,130, +179,189,203, 39,202, 39,165, 20,148, 5,116,106, 22,172,150, 66, 67,116, 16, 10,117, 16,137, 68,250,116,150,148,227, 56,164, 59, + 56,128, 11, 9,193,195,135, 15, 65, 41, 45, 85, 85,171, 85,171,150, 30, 5,196, 65, 44, 17,127,226, 46, 36,132, 64, 36, 22, 67, + 40, 22,125,182,114,198,160, 98, 25,240,223, 14,125,231, 90,100, 0, 24, 79, 8,217,223,190,125,251,243,148, 82, 33,242,252,145, +119,191,230,207, 19, 18, 18,158, 57, 58, 58,206,179,115,182,240,235, 54,188, 13,106, 54,116, 5,203,176,184,127,241, 5,246,174, + 58,115, 52, 46, 38,110,164, 62,123,159,113, 28,119,171,117,147,154, 60, 20,137,213,237,232,232,200,125,201,170,195,204,204,204, +197,179,102,205,194,156, 57,115, 42,188,234,176,180,107,130, 66,147,198, 55,240,176,113,238,217,173,109, 23, 16, 30,213,104,212, +101, 52,124, 40,140, 92, 42, 18, 9,223, 60, 14,140,175, 95,210,117,201,201,201, 93, 70,141, 26,117, 77, 32, 16, 84,169, 72,158, +115, 28, 23,149,152,152,216,177,252, 50,215,221, 39,132,184,159, 59,186, 99,198,229, 83,123,186,112, 28,235, 70, 0,240, 5,162, +247, 58,173,246,138, 90,153,181, 94,223, 77,165, 87,143,111,137,105, 27,175, 98,235,156,158,152,226,119, 28,187, 23,141,197,188, +181, 71,240,219,156,105, 88,185,233, 16,126,153, 54, 12,253,135,142,226, 40,225,221,211,247, 62,248,124,254,229, 29, 59,118,140, + 24, 59,118,108,225,162, 5, 74,233, 39, 13,187, 78,167, 83,114, 28,135,237,219,183,115, 0, 46,151,101,239,211, 50, 34,180,172, +249, 82,250,150, 81, 86, 86,214,232,150, 45, 91,238, 3, 32,161,148,190, 75, 79, 79,255,137, 82, 90,184, 53, 84, 78, 78,206,232, + 86,173, 90,237,163,148, 74, 8, 33,159,157,215, 7,249,161, 30,154, 88, 88, 88, 60,205, 87,178, 36, 95, 50, 33,190,172,172, 46, +195,173,200,234,209,118,112, 40,178,173, 14, 33,100, 85,179,102,205,138,110, 42, 29, 10,160, 73, 69, 19, 69, 41,189, 70, 8,169, +179,104,209,162, 25, 82,169,212, 75,161, 80,212, 0, 0, 99, 99,227, 48,181, 90,125, 75,169, 84,174,207,111,183,202,178,161, 49, + 50, 50, 10, 99, 24,166,174,141,141, 77,222,138,218,124,178, 5, 0,127, 61,101,159, 82,202, 52,173,104,218, 46, 94,188, 88,217, +194,194,226, 59, 66, 72,127, 74,105,173,236,236,108,245,162, 69,139, 2, 78,156, 56,145, 89,165, 74,149,110,222,222,222,196,210, +210, 18, 79,158, 60,161,169,169,169, 39, 1,204,215,103,165, 53,199,113, 81,171, 87,175, 70, 69,159,247,178,206,107,181,218,143, + 23, 47, 94,180,238,154,148, 36,224, 56, 14, 61,123,246,252,132,192, 21,199,155, 55,111,160, 86,171,203, 12,230,168,206, 76, 71, +135, 25,115,129,252,213,159, 5,200, 83,178, 40,168,198,192,171, 12,248,223, 2,249, 71,150, 63, 87, 80, 90,116,116,116, 28, 36, + 53,150, 76,114,173,225, 80, 63, 62, 60,233, 85,118,166,226, 96, 66, 66,194, 14, 74, 41,251,165, 54, 43, 18,176,212, 32,255,254, +115, 54,255,142,163,197,130, 82, 22,148,163,160,148, 3,199,177,121, 27, 94, 83, 14,148,101, 9, 33,184,167, 86,100,142,213, 55, +157,132, 16, 11,107,107,235,101,148,210,174,124, 62,159, 87, 84, 12, 43,250, 57, 95,201,186,156,156,156,252, 75,113,229,245, 63, + 49, 63,255,252,243,207, 18,201,191,190,171, 14,251,247,239,207, 86,240,217,188,101,108,108, 92, 98, 96,206,220,220,220,232,248, +248,248,239,254, 29,242,179, 64, 13,165,122, 52,104,197, 92,240, 21, 94,117, 88,158,205,202,149, 43, 75,180, 90,109, 35, 0,238, +132, 16,115, 0,105, 90,173,246, 74,114,114,114, 34, 33,164, 9,128, 69,249, 63, 91, 78, 41,125,250,175,124,222, 9, 33, 50,107, +107,235, 61, 60, 30,207, 89,159,223, 51, 12,163, 73, 75, 75, 27, 81,116, 64, 80,212,166,181,181,245, 83,129, 64,224,172,135,157, +216,148,148,148, 38,134,246,211, 96,243,191,134, 76, 21,155, 4, 95,244,248,223, 98,181, 71,124,124,252, 49, 0,199,190,165,205, +210, 34,191, 27,240,255,139,220,180,132,127,164, 28,242, 73,211,228,255,181,252, 44, 32, 74, 37,124,255, 12, 0,249, 7,158, 77, +175,255,132,124,161, 95, 56, 98,204, 39, 82,109,191,101, 90, 34, 35, 35,213, 0, 2,242, 95,197,255,239, 41,128,158,255, 70,249, +166, 4, 48,232, 91,217, 43,139, 60, 25, 96,192,255, 42, 12,203,106, 13, 48,192, 0, 3, 12, 48,192, 0, 3,190, 14, 23,138,109, +193,115,161,224, 3, 1,208,169,148,145,142,222,146, 32, 33,164,211, 23,140,164,174, 27,108, 26,108, 26,108, 26,108, 26,108, 26, +108, 26,108,254,111,217,252,159, 67, 65,224,200,127,226, 5,160,147,193,166,193,166,193,166,193,166,193,166,193,166,193,166,193, +230,127,243, 11,192,184,210,142,121, 6,170,105,128, 1, 6, 24, 96,128, 1, 6, 24,240,207, 64,111,162, 37,183,247,240,176,169, +220, 96,159,101,165,250, 65,150,149,234, 7,217, 84,110,176, 79,110,239,225,241,191,152,105,132, 16, 25, 33,100,168, 80, 40,188, +230,224,224,144, 69, 8,153,241, 95,122,159,166,132,144,254,132,144,101,132,144, 62,132, 16,163,111,105,191, 61, 33,130,193,132, + 76, 26, 65, 72,244, 8, 66,162, 7, 19, 50,169, 61, 33,255,117,243, 6,151, 78,115,108,121,247,242,176, 75, 75,167, 57,182, 44, +241,252,108, 71,171, 71,215, 6,110,244,157,236,100,249,141,202,205,196,206,206,110,167,189,189,125,164,157,157, 93,148,157,157, +221, 30, 66,136,153,161,185, 51,192, 0, 3, 12,248,199,112,129, 16, 50,174,224,133, 34,115,180, 4, 0,112,225,194, 5, 79, 0, +183, 1,180,247,246,246,246, 47,254,107, 75,215,122, 99, 61,106,213,156,179, 98,201,124, 98,111,107,109,196,176,156, 54, 34, 50, +166,246,226, 21,126,127, 90,186,214, 91,151, 22, 21,188,251, 11, 58, 3,194,231,243, 7, 73, 36,146, 30, 0, 10, 8, 91,168, 90, +173, 62,207,178,236, 49,125, 87, 17,217,219,219,223,225,243,249,149, 43,242,223, 44,203, 70,127,252,248,177,205, 23,118, 98, 3, + 92, 92, 92,246,120,122,122, 26, 53,107,214, 12, 98,177, 24,139, 22, 45,154, 5, 96,189,190, 54, 44, 45,221, 76,180, 18,233,116, +129, 88,220,153,234, 52,117, 41, 40,192,147,132,112,140,250,134, 72,173, 94,151,150,246, 62, 91,207,180,204, 7, 48, 18,121,203, +209,119, 83, 74, 87,127, 77, 45, 25,217,136,232,116,108, 94,157, 16, 9,192,154,153,153,221, 94,176, 96,129,160, 71,143, 30,216, +189,123,119,155,157, 59,119,142, 35,132,220, 0,240, 23,165,244,253,215,214, 74, 59, 96,124,171, 54,109, 54,142,152, 53,139,175, +188,115, 7, 27,247,236,217,128,172, 44, 0,216, 90,209,186, 36, 18,161,191,181,181,176, 7,165,104, 68, 0, 66,128, 23,201,169, +220, 69,173,150, 61, 70, 43,186,191,207,167,182,135,226,211,229,248,135, 43,106, 35,243, 61, 93, 40,233,233,209, 54,243,253,173, +133, 0,186, 21, 63,207,168,164, 35, 40,191, 82, 15, 37,125, 30, 3, 96,237, 87,146, 44, 35, 27, 27,155,160,179,103,207, 58, 55, +107,214, 76, 0, 0, 79,159, 62,253,161, 71,143, 30, 29, 8, 33,117, 41,165, 89,255, 34,210, 46, 21,240,120,147,196, 66, 97,103, +150,101,235, 1, 0,159,207, 15,214,232,116,215, 24,142,219,170,111, 76, 54, 3, 12, 48,224,191,152,169,148,195, 69,254,157,161, + 79,100,248,219,222,222,222,228,194,133, 11, 20,197,150,136,203,237,106,213,174, 83,199, 99,214,229,211,251, 43,101,164,101,168, + 54,175,217,255, 44, 87, 32, 86,184,215,118, 23,109, 94,191,218, 98,210,180,153,211,229,118,181, 30,229, 36,190,126, 85,129, 70, +215, 69, 38,147,157, 90,179,102, 77, 93, 47, 47, 47,161,173,173, 45, 18, 19, 19, 17, 26, 26, 90,247,230,205,155,189,247,239,223, + 63,139, 16,210,151, 82, 26,173,135, 57,247, 27, 7,246,216, 26, 91, 90,129,213,233,224, 88,191, 81, 97,160,189,119, 55,175,130, +209,106,193,233,116,240,232,209, 27, 0,192,113, 28,106,215,174,205,255,146,140, 36,132, 56,214,169, 83,231,224,170, 85,171, 68, +106,181, 26,143, 30, 61,194,173, 91,183,184,132,132, 4, 63,125,109,200,237,106,120,241,100,198,199, 6, 13,251,209,236,251, 30, + 85,133, 46,118, 54, 0,140,240, 38,130,105,117,233,234,205,166,167,143,237,157, 40,183,171, 49, 40, 39, 49,236, 86,217,100,205, +178, 5, 33,100,101, 65,132,104, 66,200,111, 85,170, 84,249,165,232, 53,197,247,205,163,148, 66, 32, 16, 36,102,103,103, 15, 74, + 73, 73,121, 94,220,166,142,133,224,240,225, 60, 30,177,112,210, 80,254,189,123,247,140,107,215,174,173, 6,128,213,171, 87, 99, +217,178,101,226, 43, 87,174,116, 63,112,224, 64,119, 66,200, 6, 74,233, 95, 95, 83, 49, 69,192,207, 35,102,205,226,203, 35, 35, + 33, 15, 12,196,176,172, 44,193,175,192,207, 21, 33, 90,132,144,170,246,246,194, 63,103,205, 28,229, 81,205,173,133, 72, 36,178, +206,219,196, 91,147, 82, 35, 58,250,121,127,191, 95,119,250, 16, 66,250, 81, 74,223,233,105, 79, 0, 96, 41, 0, 41,128,133, 0, + 22, 37, 39, 39,187,179, 44, 11,123,123,251, 69,132,144, 51, 0, 86,216,216,216,208,228,228,228,185,148, 82,166, 44, 37, 43,235, + 61, 93,248,145, 84,235, 90,179,241, 8,124, 36,151,187,206,236,230,112,201,212,141,172, 88,188, 49,254, 1, 0,116,115,115, 51, +169, 86,203,120,174,220,180,158,101, 86,220,245,185,221,220,220,118, 93,122,175, 31,209, 46, 78, 54, 1,192,209,209,113,245,129, + 3, 7, 42, 53,111,222,188,176,142, 55,108,216,144,191,122,245,106,167, 25, 51,102,108, 0, 48, 74, 79,123, 53,108,108,108,174, +176, 44,171, 78, 77, 77,173, 81,240,189,109,131,190,173,172, 76,140, 59, 38,167,103,223, 73,121,121,198, 95, 79, 91,205,164, 34, +209,201,191, 14,110,116,104,216,188, 37, 79,110,109, 11, 85, 92, 60,114,116,218, 78,183,238, 63,108, 63,110,210,207,211,242,203, +232,177,161,171, 49,192,128,255,105,148,202, 69,254,147, 33, 40,194, 36, 75, 84,144, 36, 18,177,207,226, 5,115, 73, 70,106,134, + 82,149,149,173,209,169, 84, 42,158,136,170,130, 95,125, 72,226, 9,248, 25, 51,166, 77, 53,241,153,183,192, 7,192, 48,125, 73, + 86,131, 6, 13, 30,159, 58,117,202,214,210,210, 18,153,153,153, 72, 77, 77,197,227,199,143, 65, 41, 69,223,190,125, 37,205,155, + 54,109,180,112,209,162, 7,132,144,150,250,144, 45, 99, 75,107,172,110,147,183, 23,237, 47,145,169, 5,255,131,157, 3,122, 20, + 94,179, 44, 54, 19, 0, 32,149, 74, 11, 55, 36,254, 2,180,236,216,177,163, 8, 0,198,140, 25,147,149,157,157,237, 11,224, 48, +165, 84,175,157, 86,229,118, 53,188,172, 29, 28,207,255,190,125,181,172,158,155, 59,180, 58, 6, 81, 31,227, 33, 16,154,195,217, + 89,132, 81,195, 58, 11,219,181,178,180, 94,185,124,231, 5, 99,155, 26,125,114,147,195,174,148,102,203,220,220,124,255,177, 99, +199,112,252,248,113, 0, 64, 88, 88, 24,220,221,221,141,203, 75, 67, 72, 72, 72,181, 94,189,122, 29, 5, 80,189,188,107,139, 7, +198,151, 72, 36,104,211,166, 13,106,215,174,141,179,103,207,182, 7,240,215,215, 86, 64,229,157, 59,144, 7, 6, 2,254, 21, 31, +188, 16, 66,170, 54,110,236,250,240,226,133,131,214, 23, 46,134, 98,237,218, 61,120,255, 62, 79,104,171, 86,173, 26,134, 14, 25, + 32, 12, 14, 14,168,211,191,255,208, 0, 66, 72, 27, 74,105,152, 30,102,151,238,218,181,107,126,149, 42, 85,208,191,127,255, 1, +117,234,212,177, 55, 53, 53,197,142, 29, 59,224,224,224, 80, 77,163,209,188, 59,123,246,172,227,199,143, 31, 49,117,234, 84, 0, +152, 85,154,161,246, 93,218, 47,148,244,244,104, 91,179,241, 8,200, 77, 29,176,235,200, 49,188,121,182,191,173, 90, 27,186,208, +119,178,211,112, 37,149,140,116,118, 55,241,169,220,196,211,170,122,157, 94,112,109,252,220, 90,197,222,253,176,104, 82, 53, 63, +129, 84,181,127,241,154,248,212,207,238,121,192,159,252,186, 89,175, 45, 67,174, 33,149,210,197, 92, 62,193, 42,108,144, 88,138, + 94,237,218,181, 43, 44,184,200,200, 72,168,213,106,120,120,120,240, 52, 26,141,151,158,249, 90,227,187,239,190,187,119,241,226, + 69,171, 26, 53,106,124,178, 37,140,189,149,121, 23,255, 83, 27,166,174,220,120,168,150,109,237, 62, 25, 73,175, 78, 7,151, 71, +178, 90,183,104,124,253,210,169,131,114,146, 19, 3,177,121, 10,192,165, 34,252,232, 31, 32, 70,150, 24, 52, 97,166,192,171, 99, + 7,167,206,221,250, 93, 39,132,116,164,148, 62, 49,244, 53, 6, 24,240, 63,173,106,209,255,182,123, 42, 36, 90, 69, 88,228, 39, +224, 40, 87,223,206,214, 74,182, 97,205,190, 39,124,173, 70, 99,108,110,166, 17,154,153,114,196,196,140,175,213,232,114, 92,171, +185,138, 57,202,213, 47, 69, 74,187, 94,124,212, 45,147,201, 78,253,245,215, 95,182, 66,161, 16, 28,199,193,198,198, 6, 17, 17, + 17,200,200,200, 64,118,118, 54,222,135,134,162,138, 75, 37, 44,241,153,235, 48,117,174,207, 41, 66, 72,147,162,110,196,146,150, +141,178, 58,109,241,198,189,180, 77,132, 63,121, 47,203,102, 41,136,136,142,142,134, 92, 46, 71,221,186,117,229,247,239,223,191, + 91, 26,201, 42,110,211,210,210,205, 68, 32,151, 29,223,246,251, 34,153, 86, 23,130, 87,225,105,168, 89,165, 45,236,172, 92, 16, +159,166,193,195,199,127, 33, 36,232, 48,220,156, 92, 48,121, 66, 7,169,223,234, 63,143, 89, 88, 84,117, 73, 79,255,144, 85,146, +205,172,172, 44,121,213,170, 85,225,226,146,183,239, 25,203,178,120,245,234, 21, 88,150, 45, 60, 46,250,190,239,228, 77, 48, 89, + 81, 24,241,195, 15, 72, 77, 77,149,151,100, 83,200, 7, 51,115,220, 80,129, 76, 8,136,141, 45, 53, 57, 57, 57,133,234,160, 86, +171,197,139, 23, 47,208,178,101, 75,207, 19, 39, 78,248,151, 35,161,234,149,159, 90,224,183,141,123,247,110, 26,150,153,201, 3, +128,221,132,112, 90, 74,127,211,183, 46,217,218, 10, 79, 94,190,116,192,154,207,123, 13, 75,179, 95,241,248,113, 20,180,218,188, +244,166,166, 38, 97,202,164, 44,136,132, 38, 56,123,246,144,149,135, 71,155,147,249,174, 51,174,156,116, 74, 47, 93,186,132, 41, + 83,166,224,213,171, 87,142,124, 62, 31,143, 30, 61,130, 76, 38,195,154, 53,107,248, 30, 30, 30,142,198,198,198,184,124,249, 50, + 18, 19, 19, 73, 89,233,188,125,229,246,138,204,247,183, 22,126, 36,151,187,238, 58,114, 12, 63, 14, 25, 4,123, 26,126,215,204, +141,172,248,174,103,235, 95, 40,191, 82, 15, 99,147,250, 22,238,117,123, 66, 36,150, 99,242,207,203, 16, 22,114,206, 66,145, 29, + 52,137,176, 49,149,144,191,247,223, 39,155, 42,159,232,207,110, 58, 18,208,248,154,203, 19, 87,199,198,227, 31, 1, 8,250,155, +104, 85, 19, 16, 30,107, 86,160, 94,190,123,247, 14,239,223,191,135, 64, 32,128, 82,169, 4,195, 48, 37,166,211,201,201,105, 60, +195, 48,191,228,151,243, 62, 7, 7,135,209, 7, 15, 30,180, 42, 74,180, 11,148,172,180,140,172,244,128, 39, 47,223,204, 28,223, +191,253,157,135, 33, 49,230, 13,122, 71,103, 4,158,201, 44,165,140,164, 50,177,248,228,229,211,135,228,186, 15, 55, 97,236,209, + 30, 66,185, 59, 88, 93, 28, 20,233,185,200,126,159, 0,245,239, 91,208,112,210, 12,156, 59,243,167,188, 78,189, 38, 39, 8, 33, +238,148, 82,205, 23, 60,155, 21,145,248, 13, 54, 13, 54, 13, 54,255, 13,109,150,197, 69, 0, 52, 6, 96,151,255, 57, 21,121, 83, +102,172, 1,164, 32,111, 59, 48, 59, 0, 26, 0,226, 34,191, 41,126, 92,244,218,226,199, 69, 63,167,230,127,182,205,127,127, 2, + 32,173,156, 65,165, 3, 0,111,228,205,205,242,206,207, 35,253, 34,195, 19,194,203, 98, 89, 78, 34,178,177, 85,141, 25,216,177, +222,213,235, 79, 95, 24, 89,155, 10,186,180,111,228,249, 56,248,195, 3,194, 35, 58, 66,120,122,205,251,224,243,249,131, 54,108, +216, 80,207,212,212, 20, 28,199,193,204,204, 12,201,201,201,208,104, 52,200,204,204,132, 58, 59, 11,218,236, 44, 4,198, 68,162, +181,103,123,244,235,250,157,199,161, 51,127, 13, 2,112,180, 44,187,142,245, 27, 21, 42, 89,203, 42, 91,253, 45, 77,196,100, 20, +146,174, 95, 27,185, 67, 36,151,163,243, 76,159,175,169, 88,207,197, 98,241,165,190,125,251,118,155, 61,123, 54, 47, 33, 33,225, + 50, 33,164, 53,165,180, 92,183,169, 86, 34,157, 62,113,122, 15, 11, 11, 57,197,137,107,127,161, 93,163, 33, 48, 18,243,145,154, +165, 5, 33, 64,232,203, 83, 32,196, 18, 65, 97, 9,104,219,208, 20,223,117,241,144,159,249, 51,116, 54,254,158, 31,244, 89,209, +164,167,167, 35, 41, 41, 9, 58,157, 14, 58,157, 14,253, 7, 12,192,129,253,251,145,155,155, 11,165, 82, 9,141, 70, 3,150,101, +193,227,241,112,237,252, 9,196,124, 8, 69,171,150, 45, 81,154, 36,187,239, 57, 21, 18, 66, 30,190,121,243, 6,161,161,161,136, +141,141,133, 84, 42,133,189,189, 61,150, 45, 91, 6,181, 58,111,143,178, 1, 3, 6,120, 2, 8,254,218, 7,234, 61,176, 51,130, +101, 23,118, 59,125,218,246,254,233,211,220,195,115,231, 98, 37,217,217, 59,244,249,173, 72,132,254,171,127,155, 80,211,216,216, + 24,177,209, 27, 80,171,150, 8,179,102, 88,193,247,215, 20, 0,192,212, 41,206,104,218,196, 26, 89, 25,127,194,218,118, 62, 54, +109,154,230, 54,114,228,186, 31, 0,236, 43,199,244,194,191,254,250,171,159,187,187,187,211,243,231,207,137, 88, 44,134, 76, 38, +131, 76, 38,131, 84, 42, 69, 82, 82, 18, 34, 34, 34,232,234,213,171,227,144,231, 90, 44, 21,249,238,193,110, 51,187, 57, 92,122, +243,108,127, 91, 39,254,135,192,126,147,219, 68, 6, 61,124,158,125,245,218,253,229,140, 74, 26,147, 17,123,125,110,213,166,207, +173, 39,205, 89,138, 45,171, 23,227,205,163, 59,105,118, 46, 89, 91,101, 68,189,175,121,231, 18, 84,178,246, 75, 5,147, 22, 13, +100,198,143,236,103,126,206, 46, 96,252, 69, 1, 73,254,152,242,108, 13, 34,158, 43, 37,213, 27, 13,175, 81,141,167,185,121,243, +166,172, 93,187,118, 80,169, 84,133,202,228,193,131, 7, 57,134, 97, 74,116, 71,107,181,218, 95,226,226,226, 28,148, 74, 37,186, +118,237, 58,117,205,154, 53,198, 5,123,212,177, 44,251,137,146,181, 98,253,129, 43,211,127,217,122,235,202,209, 95, 29, 87,248, +140,110, 63,108,242,202, 91, 40,101, 31, 73, 1,143, 55,233,220,233, 61,246, 82, 11, 29,100,150,223, 65,149,168,196,155,157, 63, + 66,145,165, 66,211, 21, 75, 1,136,161,209,241,176,163,103,127, 8,173, 28,177,120,236,104,199, 5, 59,118, 77, 0,176,193, 48, +174, 55,192, 0, 3,138,193,142, 16,114, 30, 0,124,124,124,230,251,250,250,190, 36,132,156,167,148,246,200, 39, 58,231, 41,165, + 61, 10,174,201,239,179, 63, 59, 46,184,182,248,113,241,207,243,230,205,171,227,231,231,183,170,101,203,150, 71, 3, 2, 2, 62, +148, 71,180,144,183,255,243,206,226, 91,241, 0,249,171, 14,189,189,189, 73,209,247, 79, 20, 45,142,187,243,238, 67,164,226,187, + 78,205,157,207,251, 7, 63, 25, 53,202,187,227,160,158,237,186, 68, 68,167,134,186,185,218, 91,191,124, 25,108,202,113,220, 29, +125,114, 73, 34,145,244,232,208,161,131, 32, 61, 61, 29, 70, 70, 70, 72, 78, 78, 70, 92, 92, 28,180, 90, 45, 84,153, 25, 80,103, +102, 64,149,145, 14,109,102, 58,222, 63,125,140,250,110,213, 36,249,147,229,203, 35, 64, 37, 42, 85, 69,149, 45,177,137, 9, 36, + 38, 38, 32, 21,116, 27, 18, 66,190,183,176,176,120, 72, 8, 89,152,223, 41, 77,154, 59,119,110, 10,199,113, 88,185,114,165,169, + 92, 46, 63, 65, 8,145,148,103,199,196,134,223,163,101,195,186,188,215, 17, 65,104,211, 96, 4,106, 84,237,142,136, 68, 37, 82, +178,181, 72,202,208,162,105,187,205,168,220, 96, 41, 42, 53,244, 69,104, 84, 26, 28,157,220,121, 16, 72,202,220,252, 57, 38, 38, +230,147,227,163, 71,142, 64,161, 80,192,205,205, 13, 67,134, 12,193,220,185,115, 49,100,200, 16, 56, 58, 58, 98,216,192, 94, 88, +188,120, 49, 62,126,252, 88, 94, 82,213, 53,106,212, 80,187,186,186,170, 93, 93, 93,213, 90,173, 22, 57, 57, 57,200,200,200, 40, +158,223,211, 42,252,148,216,217,205,115,112,112, 8,178,179,179,123, 41,149, 74, 47,190, 32,228,181,202,213,213,174,117,239,222, +164,246,192,129,252, 40,153,140,248, 3,114,125,108, 89, 91, 10,189,189, 58,116, 19,103,164,239, 1,144, 39, 82,141, 30,101,131, +123,254,117,112,255,110, 19, 76,153,228, 6,194,147,130,240,196, 80,228,222, 68,243,102, 45, 69,230,230,164, 71, 57,101, 61, 20, +192,139,214,173, 91, 59, 78,158, 60,153, 72, 36, 18, 76,157, 58, 85, 59,118,236,216,183, 67,134, 12,121,123,227,198, 13,214,213, +213, 21,149, 42, 85, 34,149, 42, 85,114, 0,240, 34,255, 55,101,194,212,141,172, 80,107, 67,239,154,187, 27,127, 96, 97,221, 42, + 71, 39,233,191,120, 77,124,234,242,173,225,107, 35,222, 40,170,189,121,116, 39,245,109,200, 57, 46,226,201,237,148,248,183,217, +213,150,111, 13, 95, 59,111, 75, 92,137, 15,181,191, 63,184, 83,231,253,181,138, 92,133,160,119, 79, 47,197,248, 49,131,106, 88, +202,235, 28,132,211,119, 13, 42,187, 56, 15, 91,188,106,147,118,236,132,233,218,221,127,236,161,217,217,217,200,202,202,194,166, + 77,155,152,115,231,206,197,177, 44, 59,189,180, 49, 16, 0,232,116, 58,140, 31, 63,222,216,212,212, 20, 49, 49, 49,133,138, 40, + 0, 36, 36,167, 6,223,127, 18,242,122,230, 79, 3, 60,115,213,106,245,149,219, 79, 67,107,187,187, 58, 19, 66, 75, 93,136, 34, + 22, 10, 59, 55,105,222,156, 79,105, 6,136,192, 5,239,247,175, 70,214,199, 52,100, 37,165,129, 47, 52, 6, 3, 9,116,156, 24, +230,245,155, 33,236,201,115, 56,217,216, 9, 36, 66,161, 97,235, 44, 3, 12,248, 31, 69, 89, 92,164, 40, 89,242,243,243, 91, 85, +214,249, 34,239,154, 98,199,133, 68,170, 56, 9, 43,250, 25, 0,252,252,252, 86, 81, 74,123, 4, 4, 4, 28, 1,160,212,147, 47, +140, 43,120, 47, 26, 37,190, 92,214,193, 87,105,124,103,207, 93, 8, 11, 51,153, 89,179, 70,238,246,103, 47,251, 63,189, 19,240, + 52,180,114, 37,107, 27,170,211, 88,252,182,110,139, 51, 81, 40,245,157, 12,238, 97,109,109, 13,173, 86,139,119,239,222, 33, 54, + 54, 22, 90,173, 22, 76,110, 46,212, 25, 25, 80,165,167,131,205,205,134,136,101,161, 76, 78,130,149,145, 20,248,123, 69, 98,121, + 55, 88, 34,209, 42,120,151,154,154, 66, 98, 98, 10,158, 80, 88,162, 91,177, 20,155,141,155, 53,107,118, 60, 36, 36,164,121,167, + 78,157,150, 19, 66,204, 40,165, 81,113,113,113, 29, 23, 45, 90,164,182,179,179,195,248,241,227,107, 2, 24, 81, 46,201, 20,107, + 60, 92,237,107,162, 70,181, 17,168, 92,169, 3, 50,114,117, 72,206,210, 33, 41, 67,139, 29,155, 91,226,228,238,102,184,119,178, + 45, 66,174,116, 70,134,206, 30,114,199,239, 65, 89, 77,157,178,108, 94,187,118, 13,203,150, 45,195,242,229,203,177,114,229, 74, + 44, 95,190, 28,113,113,113,168, 91,183, 46,162,163,163,113,233,210, 37, 36, 36, 36,192,218,218, 26,143, 31, 63,198,250,245,235, +113,239,222, 61,125,148, 59,189,174, 33,132, 84,200,151,206, 48,204,200,132,222,189,235, 37, 90, 90,214,110,212,168, 81,183,169, + 83,167, 86,107,221,186,117,225,249,106,213,170,185,200,100,178,143,132,144,221,132,144,134,101,217,226,128, 70, 54, 54,117,161, + 81,191,206, 47, 43, 33, 8,145,162, 67,231, 80,180,110,251, 20, 90,157, 8, 60, 34, 1,143, 39, 5,195,164,194,194,194, 17,148, +146,186,229, 36,113, 81,114,114,178,251,245,235,215,121, 17, 17, 17,144, 74,165, 0, 16,185,100,201,146, 45,107,215,174,125,101, +101,101,197,158, 63,127, 30,103,206,156, 65,143, 30, 61,248, 99,199,142,117,175, 84,169,210,246,242,238,123,241,198,248, 7,135, +215, 93, 26, 44,212, 89, 52,148,202, 42, 87, 65,174,252,251, 73,237,109,140, 1,224,210,251,247,217,182, 46, 89,126,185,217, 65, +209,230,206, 57,191,150, 55, 17,158,210,197,220,179,183,175, 31, 30, 62,125, 57, 51, 41, 49, 93,216,168, 94, 29,165,239,178, 57, +162,202, 85,170,255,182,120,238, 79,246,113, 89,210,140,206, 83, 47,189, 62,117,249,113,206,240, 81, 63, 50, 99,198, 77, 86, 93, +186,124,237, 52,199,113,245, 74, 91,113,200,113, 28, 18, 18, 18,240,242,229, 75,132,135,135, 35, 57, 57, 25, 41, 41, 41,200,206, +206, 46,116, 55, 26,101,103, 93,216,178,247, 92,160,177, 76,102,212,188,158,187,203,163,231,175,146,140,101, 50, 35,247, 42, 46, + 53, 8, 89, 90, 98, 59,194,178,108, 61,169,145, 12, 0, 65, 70,200, 29,228,164,231, 32, 39, 35, 7,217,105, 57, 80,107,249, 80, +169,121, 80,106,120,112,245,252, 14, 57,185, 42,228,164,102,130, 99,217, 6,134,238,198, 0, 3, 12, 40,163, 95, 62,239,227,227, + 51, 95,207,203,245,118,111, 22, 39, 94, 62, 62, 62,243, 9, 33,231,231,205,155, 87, 7,122,204,105,166,148,238, 44,254, 42, 56, + 87,110,120,135,148,148,176, 28, 83,155,218,125,103,252,252,203,165, 35,127,108,182, 85,171, 21,209, 86, 22,114, 86,110, 36,182, + 30, 51,126, 37,178,115,210,251,228,164,233,191, 74, 42, 61, 61, 29, 31, 62,124,128, 76, 38,131, 72, 40, 4,171, 84,130, 85,230, + 66,153,158, 10,158, 86, 13, 17,203,194,210, 72, 6, 87, 71,123, 84,182,179,215,203,230,187,155, 87, 11, 39,190, 23,117, 23,174, +110,230, 1,177,177, 28, 98, 19, 57, 38,158,191, 13, 0, 16,137, 68,192,162,229,250, 20,166,181,147,147,211, 95,135, 15, 31, 22, + 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52,244,122, 72, 72, 72, 15,119,119,119, 0,112, 43,207, 94, + 86, 10,143,213, 49, 20, 49, 31, 35, 17, 17,251, 28,150,102, 85, 33, 52,170,129,164, 12, 45, 36,178,170,208,169,255,246, 62,170, +178,162,160,212,234,183, 48, 82,163,209,128, 97, 24, 48, 12, 3,141, 70,131,113,227,198,225,126, 64, 0,142,158,185,129, 15,239, +195, 80,179,138, 61,126,248, 97, 56,154, 53,107,134,128,128,128, 50,109,141,108, 68,116, 11,218, 65,176,174, 27, 15, 98,185,149, +186,197,220, 43,143,244, 33, 91,148, 82,162, 71,126,174,237,209,163, 71,245,176,220, 92,188,124,253, 26,157,150, 44, 1, 0, 92, +188,120,241,147,123,153, 57,115,166,248,213,171, 87, 99,158, 62,125, 58,134, 16,178,142, 82, 90,242,100,115, 10, 92,184,240, 0, + 63,253,244, 10,201,201,121,243,181,143, 29,249,155,151, 70,124,208,162,171,119,158, 71,203,220,220, 28,235,214,213,213, 43, 63, + 89,150,197,206,157, 59, 11,221,133, 0, 32, 16, 8, 90,207,156, 57,179,111, 73,215, 87,175, 94, 93, 84,158,205,153, 3,156,165, + 47,162,100,147,204,170, 87,174, 99,106, 93, 31,169,186,231,117,159,199, 37, 76,153, 57,192,121,195,186, 19,177, 42, 25, 81,239, + 35,108, 76, 37,129, 84,181, 95,159, 52,190,191,180, 73, 99, 94,121,212,254,143,201, 89, 11, 38,255, 56,212,202,212,220, 54,119, +247, 22, 95, 11, 30,159, 71,255,122,170,205,168, 83,205,202,252,251, 22, 27,115,126,154,177,232,185,134,137,153,140,152,191,194, +202, 10,113,193,178, 44,226,227,227,145,156,156,140,232,232,104,164,164,164,228, 63,251, 41,159,173, 92,173, 96,131, 8,101,116, + 52,162, 78,239, 70,229,225,195,209,116,249, 50,176,156, 0, 74, 5,139,117,173, 58, 34, 61, 83, 9, 53, 71,224,216,184, 21,126, +188,120, 23, 60,202, 2, 59,182, 26,122, 18, 3, 12,248, 31,133, 62,225, 29, 10, 8,145,175,175,111,143,111,253,255, 69,201,150, +175,175,239, 75, 95, 95, 95,189,255,171,184,203,176,232,113,185,225, 29, 0, 32, 43,249, 85,184,149,107,253,248, 92,101,174,145, +157,173,141,218, 72, 42,225, 50,179,178,249,207,131, 3,181, 57, 9,239,222, 84,224, 62, 66, 67, 66, 66,234,198,199,199, 35, 58, + 42, 10,140, 50, 23, 60,181, 6, 84,165, 64,167, 54,173, 32, 5, 32,229, 17,136, 56, 45, 4,124, 49,178,115,178, 0, 32,180,220, +206, 81,167,251, 76,217, 34,132, 64,108, 98, 2,177,177, 49,196,114,147, 79, 20, 46,125, 20, 27,137, 68,114,248,196,137, 19, 14, + 78, 78, 78, 88,182,108, 25,156,157,157,107,213,171, 87, 79,209,182,109, 91,153,157,157, 29,106,215,174,141, 86,173, 90,225,210, +165, 75, 0, 80,110, 76, 41, 29, 35, 13,122, 19,137,214, 41,105, 1,184,123,251,119,104,148,106, 52,242,252, 29, 90, 65,101,216, +212, 89, 10,238,221, 65, 40, 62,158,205, 83, 15,236,123, 34, 54, 58, 18,132, 47,126,169,175,242, 84,240, 57, 48, 48, 16, 71,206, +250,195,193,213, 3,209,111, 95,227,245,173,235,184,111, 99, 5, 87,143,218,133,110,160, 82,211,200, 66,176, 98,107, 97,120, 7, + 73, 90, 90,154,196,210,210, 82, 93,144,119, 14, 14, 14, 95, 67,182,134,206,158, 61, 27, 25, 66, 33,224,237, 13, 81,120, 56,180, + 90, 45, 90,180,104,129,166, 77,155, 2, 0, 90,180,104, 1,129, 64,128,250,245,235,195,209,209, 17, 91,183,110, 29,138, 82, 86, +245,241, 8, 94, 48, 76,106,173,106,213,170, 21, 18,173,253, 7,146,241,252,105,103, 16,136,177,105,203,223,209, 28, 92, 92, 92, +240, 49, 33, 28,132,208,144,114,210,184,220,222,222,126,145,131,131, 67,181,181,107,215,242,165, 82, 41, 38, 76,152, 80, 53, 39, + 39,167,114,190,148,140,121,243,230,229,169, 84,139, 23, 99,201,146, 37, 80,171,213,138,210,140, 29, 88, 95,223, 49, 41,141, 27, + 99,103,239,212,199,203,186,114,189, 14, 93, 58,161,170,123, 7,116,232, 18, 13, 0,171, 44, 5,145, 3, 87, 47,172,123,218,186, +146,229,158,171,151,175, 45,110,227,217, 97,129,207,120,139, 21,126, 59,210,203,157,243,152, 25,181, 47,251,141,120,208,250,205, +219, 15,172,255,101,222, 52,105,116,178, 38, 61, 46,157,230,200, 37, 2,185,155, 29,145, 79,249,121,249,135,248,248,240, 89,136, +185, 92,238, 74, 75,142,227, 16, 30, 30, 94, 56,167, 79,165, 82, 33, 55, 55, 23, 49, 49, 49,133,117, 70,105,108,218,117,242,168, +158, 13,114,149, 74,197,163,224,183,209, 11,167, 14,107,153,171, 84, 42,222, 70, 68,135, 81,186,177, 68, 54,198,227,241,130, 21, +217,138, 78,138, 12, 21,146, 95,188,129,115, 71, 87,232, 24, 2, 13,195, 34, 57, 53, 27,106, 6, 96,121, 66,212, 25,248, 3, 88, + 34, 64, 74,124, 28,120,124,126,160,161,187, 49,192,128,255, 89,148, 27,222,129, 16,114,190,101,203,150, 71,139,170, 78, 5,159, + 1,168, 1,148, 53,149, 39,185, 40,153, 42,112, 39,150,246, 63,197,236,234, 59,192,252,108,142, 86,185,225, 29,242,127, 72, 26, +212,115,117, 92,189,120,152, 51,199, 48, 53,147, 82, 18, 25,129, 64, 34,172,100,166, 76,168, 72, 14,170,213,234,243,215,175, 95, +239,221,185,115,103,201,219,224, 64,104, 50, 51,161,201,204,128,144, 99, 96, 41,107, 2,158, 86, 13,162,209,192,169, 22, 7, 85, +182, 12,254,247, 67,116,106,181,250,188,190, 68,139,199,231,127, 58, 47, 75, 46,135,196,196, 20, 18,185,188,184,107,145,148,147, + 81, 70,189,122,245,234,216,162, 69, 11, 80, 74,177,115,231, 78,104,181, 90,177, 86,171,133, 70,163,129, 86,171, 69, 86, 86, 22, + 14, 28, 56,128,109,219,182,221, 7,176,183,220,206,140,209, 92,191,114,237,102,179,209,195,122, 8, 47,158, 95, 7, 70,195, 66, + 73,156,145,155,171, 67,142,198, 8,172,213,112, 32,241, 2,248, 2, 41, 90,214,175,138,179,127,158,210,130, 81,223,208,147,133, +127,162, 10,197, 68, 71, 34,246,125, 24,228, 89, 31, 97, 99,106, 4, 69,120, 24, 26,253, 48,226,139,212,137, 74,149, 42,129,227, + 56,120,121,121, 21, 78,174,254, 82,178,149,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209, +189,123,247,194,107, 2, 3, 3,241,252,249,115,184,185,149, 45, 18,166,164,233, 46,198,198,188, 24,240,253,247,223,139, 30, 62, +124, 8, 74, 41,220,221, 77, 97,106, 98, 12,194,147,192,195,195, 22, 64,222, 24,160,125,251,246,200,202, 10,103,210,211,233,197, +114,242,241, 48, 33,228,140, 70,163,121,215,174, 93, 59,199,247,239,223, 99,198,140, 25,130, 99,199,142, 21, 72,201,240,241,249, +116, 49,133, 82, 89,186,235,190,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209, +168, 90,221, 5, 89, 41, 65, 85, 84,202,200, 62, 34, 65,186, 69,208,166,184, 87, 50,239,186,163, 84, 73,183,223, 2,208, 39, 0, + 48, 85,190, 61,150, 24, 45, 28,126,252,204, 95,151,198,119,239,209, 75,168, 99, 25,166,174,171,208,252,196,233, 11, 73,113, 81, +209, 27, 17,125, 57,228,111,253,175, 76, 21,143,205,202,202,130,177,177, 49, 66, 66, 66,212,222,222,222, 18, 30,143,135,119,239, +222, 21, 18, 45, 91,107,203,218,173,155,214,173,181, 98,253,129, 43,198, 18,137,164, 75,251, 38, 30,175,222, 70,197, 82, 74, 34, + 75, 85, 91,117,186,107,193, 47, 2,189,108, 28,171,243,195,111, 63,132, 85,219,238, 80,171,121, 80,106, 56,168, 25,128,225,139, +224,208,176, 57,204,221, 60, 64, 1, 60,121,120, 95,167,214,233,174, 24,250, 26, 3, 12,248,159, 86,181,104, 89, 36, 41,255,115, + 26,128, 72, 95, 95,223,148, 34,106, 83, 50,128, 64, 0, 13,242,175, 75, 46,246,187,100,228,173, 30,108, 90,196, 78,114, 17,194, + 85,244,179,166,216, 53,122, 13, 0,139,206,209, 42,145,104,149,177,164, 18,214,214,214,182,141, 26, 53,113,219,245,199,113, 80, + 74,241,230,249, 26,164, 39,189,198,162, 85, 15,220,156,157,157, 61, 99, 99, 99,253,245, 73, 4,203,178,199,246,236,217, 51,171, +121,227, 70,141,170, 56, 59, 35, 48, 50, 2, 34,202, 66,196,178,224,105,213, 16,176, 26, 56,215,101,193, 35,114,196,199,103,194, +239,240,241, 16,150,101,143,149,103,183, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117, +179,144, 92,157, 95, 54, 15, 98,185, 28,110,205,203, 15, 8, 79, 41, 85,152,152,152, 60, 13, 14, 14,110, 90,183,110, 93,204,154, + 53, 11,145,145,145,224, 56, 14,137,137,137,170,132,132,132,184,228,228,228, 72, 0,167, 1,236,210, 39,242,184, 72,173,218,112, +254,228,254,201, 45,219,120, 90,127,223,103, 27,206,252, 57, 19, 25,153, 89, 80, 48, 50,228,170, 24,228,170,249,176,180,170,135, +230,245,235, 35, 62, 46, 9, 47, 31, 94,201, 17,168, 21,107, 42, 82, 65, 9, 33,120,254,252, 57,170, 57,154, 32,236,174, 63,172, +141,132,104,224,104, 15,199,214,109, 10,227, 75,149, 5, 33, 31,204,208,161, 67, 11, 35,195,127,247,221,119, 17,195,135, 15,119, +152, 57,115, 38,254,248,227, 15,220,191,127,255,179, 9,218,158,158,158,184,115,231,206, 82, 0,139,203, 19,245, 52, 26, 13,106, +213,170,133, 39, 79,158,224,250,245,235,232,208,161, 3, 60, 61, 61, 17, 20, 20,132,171, 87,175,226,249,243,231, 32,132,192,202, +202, 10,186, 60,242,172, 43,205,152, 86,139, 19,191,254,182,103,254,250,245,219,234, 12, 27, 54, 12, 39, 79, 30,197,232, 81, 53, + 65,120, 18, 16, 34, 65,175,158, 53,177,108,249, 19, 52,111,222, 30,214,214, 66,172, 95,119,246,131, 82,201, 30,208, 35, 27, 87, + 92,189,122,213, 81,165, 82, 33, 35, 35,131,202,229,114,146,154,154,183,162,181, 36, 69, 75,161, 80, 72, 75, 51, 20,252, 44,116, + 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145, 17, 48, +206,190,148, 18,145,146,149,144,235,190,221,163,241, 88,126,108,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101,102,148, + 81, 71, 41, 33,132,164,189, 58,248,215,105,138, 94,173, 90, 54,175, 94,215,197, 65,156,158,146, 68,255, 60,123, 41, 68, 27,113, +242, 92, 1,193, 42,111,151, 5, 74,233, 50, 31, 31,159, 95,242, 63,239, 91,184,112,225, 88, 63, 63, 63,155,143, 31, 63, 22,206, +209, 74, 74, 73,187,217,202,123, 10,155,154,145,169,217,179,254,231,254, 50,169, 68,188,208,111,207,109, 29, 31, 15, 75,179,203, +112,220,214,129, 51, 22, 77,123,251,230,185, 83,101,153, 24,103,127, 94,140,192,171,183,160,227,137,240,211,245, 71, 80,107, 89, +100,164,164,226,198,152, 73,144,219, 89, 96,219,237,147,137, 28,199,253,110,232,106, 12, 48,224,127, 23,101,112,145,146, 98,236, + 37,234,113,221, 19, 61,236,124, 53,138,171, 88, 69,161,215, 18,188,148,148,148,164, 59,119, 30,225,246,249, 21,240, 63,191, 2, + 47,159, 7, 34, 62, 78,131,184, 68, 21, 76, 77, 77, 31,148,209,241,119, 42,222, 57, 40, 20,138,190, 11, 23,253,242, 81, 42, 51, + 66,187,142, 29, 97,111, 99, 11, 35,145, 16,124,134, 3,159, 8,145,147,108,142,176, 32, 5,230,238, 57,152,148,163, 80,244, 45, +222, 73, 20,183, 89,148,100, 16, 66, 32, 49, 53,129, 88,110, 2,137,137,233, 39,110, 68,169,169, 41,164, 38,166, 16,136,197, 37, + 77,154,255,204,102, 78, 78, 78,191,254,253,251,167,103,102,102, 98,236,216,177,240,247,247,127,126,229,202, 21,211,192,192, 64, + 89, 82, 82, 82,117, 74,233,119,148,210, 29,165,145,172,226, 54,211,210,222,103, 83, 70, 61,200,247,151,233, 74, 21, 99,133, 1, + 35,142,193,152, 23, 3,134,229, 64, 1, 56, 90,138,209,186,211,114, 36,105, 90,225,216,246,149, 10, 78,171, 26, 86, 52,134, 86, +113,155,148, 82,106,103,103,247, 89, 30, 92,191,126, 29, 3,250,247, 67,151, 62,189, 97, 83,165, 26,108, 59,117, 71,151,177, 63, + 97,251,246,237,224,241,120,176,182,182,254, 68,225, 40,106,115,223,115, 42, 60, 28, 68,201,225, 32, 74,246, 62,163, 2, 0, 63, + 28, 60,120,240,215, 6, 13, 26,220,186,127,255,254, 26, 0,131,138,254, 87,145,180, 44, 41,170,102,149, 82, 70, 11,166, 77,155, +166,124,251,246, 45,140,141,141,193, 48, 12,238,223,191,143,109,219,182, 97,237,218,181,120,254,252, 57,172,172,172,224,230,230, + 6,181, 90,141, 39, 79,158, 40, 1, 44, 40,163, 46,113,201,201, 76,191, 77,155,252, 82,123,244,104,139, 61,123,182,192,222,190, + 21,132, 2,123, 8,132, 54, 48,150,215,194,238, 93,191,162, 91,183, 70,248,235,236,241,180,148, 84,166, 95,241, 40,238,165,164, + 83,245,232,209, 35,108,223,190, 29,253,251,247,143, 27, 48, 96, 0,155,153,153, 89,168,104, 21,236,198,190, 36,127,142,153, 90, +173,150,148,102,115,236,207,193,113,115, 86,132, 44, 75,252, 24,215,194,255,214,131,161, 55,175, 92,199,135,183, 55,113,243,202, +117,220,189, 25,224,147,248, 49,174, 69,163,102, 53, 68,125,199, 78,158,179,255,212, 73,190,220,212, 1,251, 79,157,228, 15,153, + 50,125,101,147, 46, 29, 22,148, 87,231,243,203,145,230, 36, 37,206, 91,181,102,115, 14,163, 85,241, 86,111,220, 26,175, 76, 78, + 88,128,130,165,152,165,168, 89, 69,109, 42, 20,138, 29, 74,165,210, 81,169, 84, 58,170, 84,170, 5,145,145,145,237,102,205,154, +149,204,178,108,161, 90,154,244,242,236,131,208,187,123, 87,217, 90, 91,200, 90, 53,173, 83,115,221,142, 63,111, 71,199, 36, 30, + 42,136,161, 85, 74, 25,169,114,148,170,126,189,251, 14,207,205, 72, 87,163,229,116, 31,112, 82, 57,212, 44,160,163,124, 48, 68, +128,224, 21,235, 32,179, 52,193,225,136,103,138, 76,157,182, 95,209, 24, 90,229,220,251, 23,195, 96,211, 96,211, 96,243,223,211, +230,127, 50, 8, 33, 14, 69,247, 58,204,143,171,245,183,162, 85,222,146, 74, 39, 39,167,118,223,247,234,132,246, 61, 22,130, 82, +138,215,207,126, 67,122,242, 27, 56,217, 75, 16, 30,157,213, 18,128,191,190,137,161,148, 70, 19, 66, 90, 76, 91,176,240,212,128, +239, 58,122,212,173, 82, 69, 82,185,178, 43,140,109,109,145,146,146,140,123, 15, 95,233, 86, 30, 57, 17,146, 79,178,244,217,130, + 7, 28,199,229, 77,114, 7,208,113,218, 92, 16, 62, 31,200, 15,227, 80,208, 49, 86,105,218, 10, 68, 32, 0, 75, 57,168,213,106, +170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52, 60,125,250, 52,247, 53, 5,145,147, 24,118, 75, +110, 87,163,199,202,121,227,143,181,232,208,219,212,189, 78, 19, 81,147,202,124,104,117, 4,241,113, 81, 56,127,234,177,246,213, +163, 43, 89,148, 81, 13,202, 77, 46,123, 11, 30,173, 86, 27, 93,189,122,117,187,237,219,183, 23, 78,134,103, 89, 22, 41, 41, 41, +120,240,224, 1,234, 53,109, 14,143, 81, 99,144,156,156,140, 77,155, 54,193,197,197, 5, 61,123,246, 68, 90, 90, 26, 24,134,137, +214,179,172, 88, 0, 87,242, 95,159, 16,218,124, 65,133,150,231, 54,116,115,115, 19,171, 84,170,134, 14, 14, 14,124, 66,200, 6, +141, 70, 51,114,222,188,121, 14,171, 86,173, 66,205,154, 53,145,146,146, 2, 99, 99, 99,184,187,187, 35, 57, 57, 25,143, 31, 63, +102, 21, 10,197,118, 0,203, 40,165,201,229,164,239, 29, 33,164,197,212,169, 19, 79,253,234, 55,222, 93,165,110, 47,182,180,108, + 3, 74, 25, 36, 39, 71, 34, 59,235,190,118,249,178,189,239, 19,147,116,125, 41,165,111,245, 44,166,197,147, 39, 79, 6,242,183, +224, 9, 15, 15,127,225,225,225,225, 94,154,162,165, 15,214,157,136, 85, 1, 56,178,122, 70,171, 25, 89, 41, 65,238,150,130,200, +136, 22,117,185, 77,235, 78,196,170,150,206, 48, 95,145, 18,233, 31,150,144,123,101,251,254, 83, 39,249, 35,250,244, 99,157,229, +111,125,164,182,244,207, 14, 61,203, 45, 31,218,176, 97,195, 74,132,164, 85, 77, 74,125,243,116,244,216,241, 3,205, 68,202,139, + 13,156, 83,221,120, 46,141,164,207,159, 63,143,208,119,207,208, 98,118,195, 8, 33,237,230,205,155,119,133, 82,250,201,220,132, +164,148,180,155, 45,123, 76,166, 25, 25,153, 47,146, 94,157, 13,214,195,214, 99, 66, 72,199,186,245, 26,157,252,117,149,159, 93, +251,105,179, 4, 97,183,110, 3,172, 14, 81,254,183,193, 74, 52,220,186,128,107,137,153, 90,109, 31, 67, 84,120, 3, 12, 48,168, + 89,101,113,145,127,247,228, 23,159, 12,143,252,189, 15, 5,250,252, 58, 54, 54,214,223,173,154,243,213,176,176,118,223,185, 56, +219, 0, 0,194, 35,226, 17,151,168,190,170,175,219,176, 4,178,213,228,224,185,139,131, 36, 18, 73, 15,146, 31,194,129,126,193, +166,210, 12,195,196, 86,169, 82,165,148,179, 37,135,122, 98, 89, 54, 81,207,116,222, 38,132, 12,119,115,115,243,139,138,138, 58, + 69, 41,205,253,218,146,200, 73, 12,187,101,105,233, 86, 45,224,250,201,233, 15,111,159,239, 68, 25, 77, 61, 0, 32, 2,113,133, + 54,149,206,201,201, 25, 63, 97,194,132, 29, 66,161,240,255,216,187,238,240,168,138,175,253,206,189,219,107, 54,189, 19, 32,144, + 66, 39,116,233, 69, 65,162, 52, 41, 34,189, 35, 22, 68, 65, 80, 80, 58,202, 15, 5, 17, 21,144,142,168, 84,165,119,233,210,145, + 26, 90, 32,144,222, 54,117,147,173,247,206,247, 7,217,117, 9, 41,187, 33, 40,248,237,121,158,155, 45,119,243,222,233,243,206, +153, 51,231, 84, 65,145,205,153,213, 6,139,227, 56,214,100, 50, 73, 57,142, 99, 1, 16,134, 97, 44, 66,161, 80,191,117,235, 86, +139,197, 98,121,104, 48, 24, 70, 63,133,122,212,169, 14,176,123,247,238,170,238,238,238,175, 16, 66,122, 83, 74, 35,243,242,242, + 12,211,166, 77, 59,181,105,211,166,220,106,213,170,117,137,142,142, 38, 30, 30, 30, 56,119,238, 28,205,204,204,220, 12,224, 83, + 74,105,172, 19,233,137, 37,132, 52, 24, 61,230,135, 55, 61, 60,150, 69, 83,138, 6,160, 32,132,193,149,156, 28,126,119, 65, 1, +247, 83, 17, 97,116, 20,207, 82, 76,147, 54,235,234,213,171,171, 1, 8, 75,178,209,114, 74,228,249,219,245,133,113,111, 16,101, +193,182,175,191, 73,208, 3,192,231, 11,179,115, 0,172,120,175,167, 7,127,227,194,138,249,129,234,219,147,190,217,166, 93,229, + 8, 92, 84, 84, 84, 40,195, 48,253, 0,212,245,145,100,215,244, 22,231,112,132,208,246,132, 48, 94, 0, 46,215,174, 93,123, 39, +128,132, 10,214,243, 45, 0, 33,197,191, 79,187,246,251,159, 0,254,116, 18,235, 44, 33,164,230, 7, 31, 77, 24, 39, 22, 10, 95, + 6,199,213,159,245,219, 38,234, 10, 42,237, 18,151,184,228, 63,166,213, 26, 85,210,247, 2, 71, 1,238,198, 38,116, 6,128,176, +176, 48,122,231,206, 29,167, 39,220,146, 86,227,120,228,241,253,151,167,193,201,200,200,104,252, 44, 11,142, 82,250, 51,128,159, + 43, 19,179,136, 72,205, 44,186, 42,154,174, 43, 0,154,253,155,141,202,170,213,194,163, 32,204, 37,202, 43,175,188,242,192,100, + 50, 29, 4, 16, 79, 8,209, 0,208,154, 76,166,125,102,179, 57,149, 16,210,248,235,175,191,182,122,190,159, 69, 41, 61, 95,193, +116,240, 0, 54, 20, 93,149,157,199, 13, 1, 1, 1, 19, 60, 61, 61,107,232,245,122,177, 94,175, 23,217,175, 1,100, 50, 89,186, +163, 88, 26, 21, 89, 35, 18,100,121,106, 84,228, 9, 34,229, 17,136, 45,133,186,171, 17, 30,129,216,226, 40,222,197,139, 23, 99, + 27, 54,108,184,158, 97,152,106,148, 82, 95,128,186, 81,138,116, 74,105,134, 64, 32, 72,188,126,253,122,226,243, 50, 0, 21, 17, +169, 5, 69,151, 75, 92,226, 18,151,252,167,164, 44, 27, 45,129,179, 96,183,111,223, 38,174, 34,117,137, 61,217, 42,235,126, 92, + 92,156, 1,192,169,162,171,248,255,158, 7,240,250,243,158,199,164,164,164,168,202,192, 25, 49,233, 74, 34,128,241,141, 75, 8, +237,252,249, 98,109, 30,128,137,237,187, 57,135,121,233,210,165,135, 0, 30,186, 90,162, 75, 92,226, 18,151,252,123, 82,146, 54, +203,225, 88,135, 46,113,137, 75, 92,226, 18,151,184,196, 37, 46, 41, 93,172,164,170, 36, 63, 90, 4, 64,167, 82,254,201, 97,215, +245, 21, 57,125, 80, 30,190, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,127, 85, 74, 34, 89, 0, 64, 42,112, + 40,201,153,135,118,170,236, 2,119, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209, 73, 86, 9,132,211,181, +117,232, 18,151,184,228,255,183,108,222,188,217,161,160,162,111, 78, 90,241,154, 82,233, 62, 45, 63, 55,231,139, 95, 22, 12,219, +102,253,190,119,239,222,156,171, 20, 93,226, 18,151, 84,200, 24, 62, 52, 52,184, 54,195,241, 45, 41,101, 88,202, 80, 51,201, 45, +252,245,174, 86,251,152,219,129, 42, 85,170,104,132, 12, 94, 39,148, 42, 8,225, 57,158,101, 78,198,198,198, 95,119,130, 1,138, +221,221,221,223, 17,137, 68,157,140, 70, 99, 16,195, 48, 9, 6,131,225, 96, 65, 65,193,146,226,142, 11,255, 77,137,136,136,232, +127,228,200, 17, 77,171, 86,173, 12, 50,153,204, 82, 88, 88, 40,216,187,119,175,228,213, 87, 95,205,190,115,231, 78,133, 78, 36, + 6, 6, 6,118, 88,177, 98, 69,245,206,157, 59,163,102,205,154,186,126,253,250,137, 90,180,104, 33, 26, 49, 98,196,189,196,196, +196,195, 78, 50,233,218,132,144,117,132, 16,150,231,249, 65, 69, 39, 18,159, 5, 99,103, 24,134, 25, 77, 8,233, 73, 41, 13, 37, +132,196, 82, 74,183,241, 60,191,204, 17,239,248, 37,224,189, 1,160, 43,195, 48, 81, 0,192,243,252, 69, 0,187, 41,165, 91,158, + 34,141,207, 12, 83, 46,151, 55, 4,128,130,130,130, 75,149,133, 73, 8,105, 88,212, 73, 43,132, 73, 8, 25, 42,147,201, 70, 2, + 64, 97, 97,225,143,148,210,213, 78, 39,102, 89, 45, 26, 53, 35, 6, 0,112,241,243, 72, 0,128, 83,159, 71,223, 32,206, 60,171, + 36, 60,167, 48,158, 44,131,174, 3, 6, 12,152,251,211, 79, 63,125, 78, 41,253,253, 89,180,125, 63,191,224, 37, 95,125,179, 60, + 96,252, 59,195,191,192,163,136, 16,101, 74, 29, 66, 94, 22,179,108, 55, 35,199, 29,191, 14,108, 2, 32,240,240,240,232, 47, 22, +139,219, 24,141, 70,127,129, 64,144,108, 52, 26,143,229,228,228,252, 76, 41, 53, 63,117, 2, 99,136,187,169, 0,126,132,255, 59, +206, 27,101, 96, 16,201,145,130, 72,154,245, 28,172,246, 25, 60,242,183, 99, 6,176,178, 34,238, 60, 88,150, 29, 31, 16, 16,208, + 51, 55, 55,183,128,101, 89,250, 8,150, 60,250, 3,128, 97, 24,194,243,124, 90,102,102,230,160,255, 71, 90,148,144,162,114,173, + 90,244,149, 16,128, 47,128,203, 0,198, 83, 74,243, 93, 20,232, 31,171,139,226, 26,173, 93,148,210,100, 27,209,178,115,119,223, + 46, 58, 58,250,104,104,104,112,237,222, 61,122,205, 29, 51,122, 44, 97, 89, 6, 87,175, 93, 19,188, 53,104,232, 43, 30, 30, 30, +129, 74,131,161, 22, 8,225, 11,164,210,171,102,179, 41,113,211,207, 63,169, 34, 35, 34, 56,142,227,177,116,217, 15,175,134,134, + 6,127,226, 8,217, 34,132,132,251,249,249,173,155, 60,121,178, 95,183,110,221, 88, 63, 63, 63,196,197,197,105,126,249,229,151, +136,111,191,253,182, 47, 33,100, 80,145, 47, 31,103, 51,219,218,207,131,121, 69, 37, 35, 29,145,199, 33,207,140, 67, 41,133,216, + 79, 41, 61, 94,209, 2, 44, 40, 40,120,183,160,160,160, 89,147, 38, 77,232,202,149, 43,201,144, 33, 67, 40, 33,132, 20, 22, 22, +174, 65, 5, 93, 63, 40, 20,138,239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133, + 66,113, 27, 64,184,147,112,171, 51, 51, 51, 27, 20, 22, 22, 34, 40, 40,104, 37,128, 70,207,160, 17, 17,150,101,183, 5, 6, 6, +210,249,243,231,255,222,160, 65, 3, 95,173, 86,107,153, 56,113, 98,167,211,167, 79,191, 74, 8,233,230, 40,217, 34,132,184, 19, + 66,150,249,249,249,121,125,241,197, 23,119, 26, 55,110,124, 89, 34,145,136,111,223,190, 45,159, 48, 97,194, 7, 12,195,244,165, +148,142,166,212,241, 9,194,138, 25, 24, 24,232, 53,119,238,220,184,168,168,168,171, 34,145, 72,116,251,246,109,197,199, 31,127, + 60,190,162,152, 12,195, 44,109,209,162,133,251,231,159,127,126, 35, 34, 34,226, 20,203,178,226,132,132, 4,102,250,244,233,239, +176, 44,219,135,231,249, 49, 21, 73,167,175,175,175,251,244,233,211,111,180,104,209,226,180, 72, 36, 18,221,188,121,147,153, 60, +121,242, 59,206,164,211,211,211,179,189,167,167,231,242,148,148, 20, 1, 0,248,251,251, 55,173, 81,163,198,183,246, 49, 45,173, +166, 1,102,179, 57, 79,175,215, 15,200,204,204, 44,209, 17,238,144, 41,139, 95, 7,128,111, 77,214,207,143, 94,203,251, 12, 44, +221,225, 72,190,163,252, 9, 5,128,254, 31, 46,232,241,232,245,209,247, 95,233, 0,129, 64,192,175,243, 39,244, 98,178,227, 46, + 99, 8, 33,221, 59,116,232, 48,253,240,225,195, 63,180,107,215,238,227,245,235,215,251,196,199,199,127, 73, 8, 9,126,243,205, + 55,135, 28, 58,116,104, 94,122,122,250,230,202,106,255, 98,145, 68, 66, 24, 2,153, 84,174,118,228,247, 66,134,121,237, 84,247, +238, 35,127,188,121, 51,234,219,152,152,234, 58,127,255,102,239,189,247,158,111,175, 94,189,152,224,224, 96,220,185,115,199,115, +253,250,245,181,126,252,241,199,158,132,144,247, 41,165, 15,158,134,100,233,178, 81,207, 96, 68, 20,165,208,252, 93, 70,200,150, +152,112, 81, 17, 67,174, 60, 7,100,235,179,213,171, 87,127,126,231,206, 29,204,155, 55, 15, 0,150, 56, 57,254, 76,232,217,179, +103,244,214,173, 91,101,155, 54,109,146, 53,105,210, 4,126,126,126, 40, 90, 76,217, 28, 83, 87,175, 94,253,255,213,228,238,233, +233,185,242,222,189,123,237, 21, 10,197, 99,223,199,198,198, 54, 12, 11, 11,203, 1,240,161,179,196,205,219,219,123, 3,207,243, +134,204,204,204,225, 0,160, 82,169,126, 82, 40, 20,238,201,201,201,159, 60,171,133,140,141,153, 20,227, 34, 47,178, 70,171, 68, +135,165,246, 17,179, 25,142,111, 57,102,244, 88,210,175,255,155, 41,119, 98,239,241, 2,161,184,255,222,125,251,228,181,107,215, +102, 12, 75,150,192,146,158, 14,243, 7, 31,188,116,240,224, 65,115,159,254, 3, 11,133, 44, 89, 29, 90,189,154,252,215,159,127, +241,219,186,101,115, 75, 0,215,203,211,100,249,249,249,173, 59,114,228, 72, 96,245,234,213,145,157,157,141,184,184, 56,232,116, + 58,244,237,219, 87,216,178,101,203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195, + 95,125,165,165, 34, 48,184, 6,104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108, + 1,102,100,100, 76,234,217,179,231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226, +130,162, 85, 24,103,255, 90, 60, 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122, +231,230,230, 22, 50, 12, 67, 9, 33, 84,161, 80,200,220,221,221,255,186, 17,115, 43,192, 96, 48,212, 92,176,232,199,111, 58,180, +110,160, 62,112,224, 0,122,245,234, 69,247,239,223, 63, 26,192, 15, 14, 62, 99, 89,207,158, 61, 11,166, 77,155,166,191, 19, 27, + 23,120,227, 86, 44, 81, 72,197,188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236, +205, 55,223, 52,125,244,209, 71,201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25, +134, 89, 58,105,210,164,220,209,163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195, +134, 13,204,200,145, 35,151, 2,232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18, +161,217,215,215,135, 61,119,238,156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26, +251,254,252,243, 79, 38, 52, 52, 84,110,255,155, 66,189, 1, 12, 1, 50, 50, 50,228, 45, 90,180, 88, 11, 32,232, 9, 18, 52, 35, + 6, 67,166, 0,239,190,251,110,178,179,237, 37,202,255, 61, 92, 44,199,253, 45,191,180, 22,237,255,225,130, 30, 2,129,128, 31, + 57,114,100, 74,241,251,122,189,158, 0,232, 22,229, 4,217,234,218,181,235,167,187,118,237,170,177,126,253,250,175, 55,108,216, + 96, 4, 0,169, 84,234,245,203, 47,191,204,235,219,183, 47,250,246,237, 59, 13, 64,165, 17, 45,142,114, 38, 0,144, 72, 37,146, +152,152, 24, 18, 25, 25, 89,166,113,171,137,231,207,255,120,243,102,227,183, 35, 35,155,104,121,190,166,232,213, 87,243, 39, 76, +152,144,145,155,155,139,184,184, 56,152, 76, 38, 12, 25, 50,132,109,215,174, 93, 64,223,190,125, 23, 19, 66,222,160,148,154, 28, +208,234, 44, 8, 12, 12, 28,149,147,147,147,111,213,234,212,170,166, 18,180,105,104,145,212,175,105, 22,139, 88,139,232,245, 15, +120,178,127, 9,209, 69, 86,199, 9, 0, 16, 21, 32, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91, +240,121,254, 3,186,164, 44,141,173, 66,161,232,161,211,233, 54, 23, 77,206,225,175,189,246, 26, 78,159, 62, 13, 0, 45, 1, 44, + 33,132,116, 96, 24,230, 45,158,231, 87, 80, 74,203, 10,229,246, 94,247,238,221, 95,222,186,117,171, 10, 0, 54,111,222, 12,179, +217,140,208,208, 80,136, 68, 34,136,197, 98, 8,133, 66, 91,116,144,255, 79,194, 48,140,228,242,229,203, 8, 8, 8, 40,222, 78, + 0,160, 77, 5, 32,167,197,198,198,182,184,112,225, 2,218,183,111, 63,173, 94,189,122, 93,142, 30, 61,234,151,153,153,137,246, +237,219, 47, 6,240,251,179,206,147, 61, 23,249,207,212, 83, 49, 38,217,238, 17, 51, 99, 88,150,101,112, 47, 54,206,220,190,125, +199,193, 15, 31, 62, 84, 54,107,214,140, 17, 10,133,208, 29, 62, 12,253,185,115, 80, 42,149,232,217,179,167,240,216,177, 99,106, +181, 82, 61,226,254,189,251,121, 44,203,128, 82,166, 92,155, 7,119,119,247,119, 62,249,228, 19,191,176,176, 48, 88, 44, 22,155, + 71,115,139,197,130,248,248,120, 40,149, 74, 12, 26, 52,200, 71, 46,151,191,227,224, 36, 91, 53, 60,212,231,226,145,221,203, 26, + 77, 24,211, 85, 17, 46, 63, 0, 69,252,251, 80,110,126, 27,181,146,246, 98,114,143,102,138,253,223, 77,139,170, 17,224,113,145, + 16, 82,213,217, 66,210,235,245, 39,174, 94,189, 58,226,232,209,163, 60, 0,252,241,199, 31,244,198,141, 27,163,159,102, 21,202, +243, 60,178,179,179,193,243, 60, 91,244,217,250,250,175,170,247,213,106,245,210, 46, 93,186,188,249,224,193, 3,217,158, 61,123, + 60, 31, 62,124,232,117,255,254,125,239,240,240,112,193,188,121,243,118,233, 13, 38,214,204, 81,163,133, 51,231, 37, 95,187, 22, +155,149,154,122,113,213,170, 85,133,132,144,158, 14, 62,227, 13,127,127,127,207, 41, 83,166,128, 8,229, 77, 35,106,213, 11, 99, +133, 50, 55, 70, 40,118, 43, 44,212,115,247,238,221,139,159, 50,101, 74,181, 6, 13, 26, 4, 20,109,175, 57,132, 25, 16, 16,224, +245,209, 71, 31, 65, 32, 81, 53,172,223, 32,170,134, 88,162, 80,177, 66,153,170, 89,179,102,237, 98, 99, 99,147, 38, 79,158,236, +223,164, 73, 19,167, 48,155, 52,105,226, 62,114,228, 72,139, 84,166,106, 81,189,122,104,173,250,117,106, 69,135,135,135,247, 16, + 8, 4,150,244,244,244, 7,131, 6, 13,242,127,253,245,215,125,157,193,244,241,241,113,159, 60,121,178, 37, 56, 36,180,115,231, +151, 95,105, 46,146,169,220, 4, 98,133,166,160, 64,207,221,188,121,243,193,212,169, 83,253, 27, 54,108,232,227, 8,102, 65, 65, +129,208,203,203, 11,117,235,214, 69,237,208, 80,228,228,228, 96,235,214,173, 88,189,122, 53, 86,172, 88,129,159,127,254, 25,141, + 91,189, 2,149, 74,133,164,164, 36,228,230,230, 10,255,233, 54,197, 47,173, 69,191, 53,142,234, 54,118,236,216,164,145, 35, 71, +166,200,100, 50,190,248,229,225,225,193, 13, 24, 48, 32,117,208,199,139,186, 89,183, 22,203,210,100,117,236,216,241,242,238,221, +187,239,174, 95,191, 30,181,107,215, 70,231,206,157,197, 0,240,206, 59,239,136,251,246,237,139,141, 27, 55, 98,243,230,205,215, +195,195,195, 79, 18, 66,186, 59,146,206, 65,131, 6,181,234,211,167,207,241, 62,125,250, 92,234,215,175,223,242,209,163, 71, 63, + 54,115, 37, 39, 37,156, 55, 26,141,104, 16,213, 68, 62,107,229,153, 1,229,225,221, 0,214, 47,143,137, 89,253,197,181,107, 15, +166,213,174,173, 9,185,127,223, 99,205,130, 5, 94,214, 32,221,102,179, 25,241,241,241,112,119,119,199,128, 1, 3,188, 36, 18, +201, 32, 7,218,207,194,238,221,187, 15,125,248,240,161,242,199, 31,127,244,191,116,233, 82, 64,114,114,178,255,161,131,251,188, + 39,126,248,142,202, 77, 41, 22, 39,165, 63, 34,170,247,147,160,136,185,135, 86,148, 66, 99,191,157, 88,161,113, 33,128,200,228, +193,228,219, 26,173, 52,183, 62,218,216,176,223,228,223, 26,186,123, 5, 75, 63, 41, 35,157,245,231,207,159,191,105,199,142, 29, +253, 91,181,106,181,133, 16, 34, 43,225, 55,210,198,141, 27,111,221,184,113,227,208,214,173, 91,159, 32,132,212, 45,117, 21, 25, + 20,212,243,183,223,126,243,180,126,246,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155, + 54,109, 54,117,237,218,213,112,225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194, +194,250, 31, 59,118,204,207,108, 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187, +158, 32, 90, 69,177,133,142, 0, 0, 37, 68,119,249,234, 85, 33, 43, 22, 15,252,105,195, 6,137, 72, 36,194,131, 7, 15,112,253, +250,117, 20, 28, 58,132,194, 83,167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165, +204,223,246, 6,165,157, 72,144, 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119, +176, 88,230, 72,128, 55,217,113,104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64, + 72,126, 12,217, 55,107,176, 95,160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161, + 3,137,140,140, 92, 78, 8, 9, 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246, +245,180,126, 95, 81, 76,171, 54,185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222, + 27, 54,108, 16, 1,192,145, 35, 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15, +107, 23,246,104,217, 32,160, 93,211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220, +125,224,198, 8,132, 2,145, 80, 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,160,160, 32,229,231,159,127,230, + 1,116,117, 20,115,214,172, 89,247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42, +202,205,205, 77, 93,189,122,181,201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91, + 46,145,136, 13, 6, 67,226, 55,223,124, 83,232, 12,230,140, 25, 51,174,223,188,251,208,131, 33,132, 37,132, 17,168, 85, 10, 79, + 79, 55,185,183,183, 82,230, 37, 23,176,226,220,220,220,196,117,235,214, 57,132,105, 50,153, 68,169,169,169,184,113,227, 6,130, +155, 52,193,129, 3, 7, 80,165, 74, 21,244,237,219, 23,111,190,249, 38,100, 50, 25, 58,180,168,135, 41, 83,166,224,238,221,187, + 48,153, 76,146,146, 48,109,118, 82,197, 36, 32, 32,224, 66,121,237,199,254,127,139,167, 51,202,159,208,111,141,163,186,217, 19, +172,210,240, 61, 60, 60,184,146,180, 93,197, 49,187,118,237,250,233,161, 67,135,106,172, 91,183,174,219,160, 65,131, 78,172, 91, +183, 14,205,155, 55,199,141, 27, 55, 80,173, 90, 53,172, 89,179, 6,111,190,249,230,137,197,139, 23,119,187,112,225, 66,131,234, +213,171,127, 82, 30,102,191,126,253,198, 53,108,216,240,112, 74, 74, 74, 11,173, 86, 91,119,235,214,173,195,122,246,236,121,175, +127,255,254, 29,109, 26, 45,179,121,195,174,237, 91, 16,221,173, 23, 34,234,212, 93, 58,228,147,245,245,202,194,164,148,210,107, +192,242,213,201,201,233, 27,244,250,130,190, 66,161, 92,126,230,140,199,230, 31,126,240,178, 63,233,157,152,152,136,215, 95,127, + 93, 40, 18,137, 90,151,149, 78, 66,200,252, 30, 61,122,244,221,186,117,171,187, 85,171,115,234,212, 41, 92,185,114, 5,113,113, +113,200,206,206, 70,199,209,249, 24, 59,239, 17,246,216,121, 20,175,188, 67, 21, 21, 28, 67,108, 34, 15, 33,126,158,106,193,201, + 97,223, 68,188, 51,106,105,109,129,210, 67,136,159, 62,190,141,212, 59,250,205,165,164,147,180,104,209, 98,125,159, 62,125,136, +209,104,132,209,104, 52, 82, 74, 11, 75,194, 14, 12, 12,148,214,175, 95, 31,163, 71,143,102,212,106,245,226,210,210,169,211,233, + 12,187,119,239,198,160, 65,131,240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120, +163, 86,109, 26,212,110,212,188,126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157, + 61,123, 86,210,166, 77, 27, 60,120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120, +240,224, 68,147,201,244,193,179,206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240, +176,130,157, 59,119,202,197, 98, 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213, +212,104, 52,130, 82,138,200,200, 72,244,238,221, 91,246, 70,223,254,105, 36,183,240, 87, 7,152,159,191,117,127,125,216,176, 97, + 79,220,159, 56,113, 34,212,106, 53, 8, 33,126, 14,228,175,207,123, 51,122, 4,185, 87,215,164,210,148,181, 90,176, 82, 64,160, + 2, 4,106, 64,234, 6, 72, 84,128, 88, 14,195,133,195, 90,134,118,142,235,213,122,120,160,147, 91, 61, 8, 8, 8,152,118,248, +240, 97,239, 11, 23, 46,208,220,220, 92, 36, 39, 39,211,185,115,231,122, 7, 4, 4, 76,171,104,165, 36, 37, 37,205,138,142,142, + 78, 29, 60,120,176,219,222,189,123,131, 7, 15, 30,236, 22, 29, 29,157,154,148,148, 52,235,105, 42, 91, 36, 18,177,215,174, 93, +243,152, 61,123,246,155, 0,206,215,173, 91, 55, 51, 40, 40,232,124,145,209,100,153,162, 82,169,108, 36,203,170, 93, 19, 8, 4, + 16, 10,133, 8, 8, 8, 48,106,181, 90,174,117,163, 80, 89,164, 27, 99, 14,144,136,100, 30, 50,105,144, 74,237,214, 44, 51, 51, +243, 50, 33,196,161,248,132,132,144,134, 77,155, 54, 21,114, 84,200,143, 29,216, 33,224,157,161,237,125,190,159, 61,178,202, 55, +179, 70, 5,206,159, 62, 34,114,214,164, 1,237, 25,158,215, 87,171, 86,205,207,106,208,238,128,250, 60,170,113,227,198, 2, 30, + 66,220,184, 21,151,250, 32, 33, 49,239,229,118, 45,108,154,203,218, 13,163, 58,123,123,123,183,137,140,140,108,236,168, 79, 24, +153, 76,214, 48, 34, 34, 66,192,176, 66,226,233,174, 10, 86, 41,101,190,214,123,106,141,230, 37, 15,111,239, 62, 12,165, 57,254, +254,254, 62, 50,153,172,161, 19,121, 23,240, 16,193,215,199,195,205,219, 75,163,236,220,190,101,205, 22, 47,181, 8,175,215,172, +121,139, 58,141, 26,191, 65, 44,150,220,208,208, 80, 31,171,145,124, 89, 98, 48, 24,164, 27, 54,108,192,236,217,179, 81, 63, 36, + 4,129,129,129,240,241,241,193,169, 83,167,112,246,236, 89,184,187,187, 35, 45, 45, 13, 11, 22, 44,192,182,109,219, 96, 50,153, + 84,206,182, 39, 71,200, 86, 89, 98,177, 88,152,226, 4,171, 52,124,153, 76,198, 91,141,228, 75,147,221,187,119,175,183,106,178, +198,143, 31,223,106,209,162, 69, 39, 98, 98, 98,160, 84, 42,113,246,236, 89, 12, 27, 54,236,196,226,197,139, 91,141, 25, 51, 6, +171, 87,175,198,189,123,247, 86,150,133,215,175, 95,191,233, 35, 70,140,248,230,232,209,163,140,175,175, 47,220,221,221,209,163, + 71, 15,172, 92,185, 82, 96,177, 88, 86,245,233,211,231, 82,159, 62,125, 46,113,241,251, 63,221,180, 98,238,169,171,151, 47, 97, +220,123, 31,137,141, 22,243,100, 7, 6, 94, 90,168, 84,230, 89,218,180,209,110, 52,155, 11,250,137, 68,114,183, 75,151, 60,118, +172, 90,101, 35, 91, 83,166, 76,129,155,155, 27,240,200,128, 25,101,104,117, 70,109,219,182,205, 54, 30,122,122,122, 66, 44, 22, + 67, 36, 18, 65, 40, 20,130,101, 89, 28, 92,170,192, 15, 83, 30,241,139, 31,166, 16,236, 95, 66,158, 42, 54,171, 34,136,212,117, +247, 21, 95,122,123, 77,157, 6,117, 59,122,226,212, 47, 41,152, 27,125, 33,225,236,198,244, 9,250,180, 82, 67, 41, 53,154, 56, +113, 98,237,180,180, 52,156, 59,119, 14,231,206,157,155, 93, 74,217,232,183,111,223,254,101,126,126, 62,170, 87,175,142,238,221, +187,183, 33,132, 52, 41,165,223,160,113,227,198,120,253,245,215,209,190,125,123,212,175, 95, 31, 70,147, 69,216,103,224,168,136, +107,247,210, 3,231, 46,152, 43, 63,252,199, 86,230,196,137,163,236,250, 45,251,221, 90,180,127,229, 27,145,202,255, 52,145,123, +249,255,215, 53, 90, 82,169,116,209,209,163, 71,253, 76, 38, 19,174, 94,189,138,247,223,127,255,105, 99,134,218, 20, 32,193,193, +193, 56,114,228, 8, 6, 12, 24,160, 79, 77, 77,253,243,159,202,147, 61, 23,249,175,136,192,142, 65,218,228,225,195,135,217, 30, + 30, 30,129, 17, 17, 17,140,209,104,124,180, 37,177,121, 51,183, 98,213,170, 93,122,189,254, 61, 0,162, 37,223,127,191, 52, 48, + 40,168,253,192, 65,131,136,217,108, 70,116,116,180,120,231,206,157,158,119, 83, 83,203, 13,136, 92,124,181, 49,100,200, 16, 44, + 90,180, 8, 0,240,238,187,239,218, 84,235,196, 1,131, 37,165, 27,186,118,126,173,177, 58, 94,241,173,218,244,146, 57,191,234, + 93,213,105, 69,190,172, 49, 24,177, 0, 82, 22,188,201,108,185,157,214,243,252,221,219,181,106,203,180,153,213, 58,213,105,139, + 21, 7,214,117, 5,176,209,225, 85,157, 92,222, 84,169, 84,226,252,249,243,218,198,141, 27,103, 83, 74,221,102,205,154,229, 37, +151,203,155, 62, 5,251,189, 79, 8,105,211,178,101,203,119, 24,134,233,196,243,252,193,212,212,212, 37,148,210,251, 14, 78,218, + 99, 1,124, 14, 59, 59, 20,163,209, 8,134, 97, 64, 41, 69,191,126,253, 48,101,202,148,218, 87,174, 92,193,225,195,135, 61, 58, +117,234,116,154, 16,146, 13, 96, 56,165,180, 68,173, 89,110,110,110,225,217,179,103,101,135, 15, 31, 6,207,243,240,240,240,128, + 90,173,134, 68, 34, 65,143, 30, 61,148,147, 39, 79,238,184,111,223,190,180,220,170, 85, 88,105,114,162, 78,162, 84,170,224, 23, +216,122, 76,255,183, 98, 40,165,219,156, 24, 28,196, 50,129, 69, 79, 56, 3, 51,255,179,197,140, 92, 36, 34, 82,145, 0, 18,190, + 0,159,126, 57,135,136, 40, 39,128,147,251,243, 34,145, 72,164,146,192,200,138, 89,179,156,160, 82,156,195,177, 44, 43,150,138, + 96, 40,237,190,144, 97, 24,134, 97, 68, 0, 44,142, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,232,116,214, + 19, 18,229, 79,168,157, 22,201, 96, 79,138, 91,183,110,141, 93,135,207, 99,243,142,131,200,120,112, 25, 83, 63, 30,143, 38, 77, +154, 96,231,206,157,101,166,201,106,163, 85,154,118, 57, 32, 32,224, 66, 82, 82, 82,163,210,254,183, 36, 27, 45,126,105, 45, 58, +232,227, 69,221, 74,210, 82,149,136,255,153,219, 35,172, 50,108,180, 8, 33,221, 91,183,110, 61,110,195,134, 13,198, 46, 93,186, +136,251,245,235,135,186,117,235,182, 26, 58,116, 40, 0,160, 83,167, 78, 88,180,104, 81,171,161, 67,135,226,215, 95,127,197,214, +173, 91, 13,237,218,181,251,152, 16,146, 72, 41,221, 93, 18, 38,207,243,175, 47, 91,182,172,184,166, 16, 22,139, 5,102,179,217, +223, 98,177,248, 23,141, 69,248,230,155,197, 25,251,247,237,196,199,159,204,128,143,183, 95, 67, 7,219, 16, 25,242,209, 71, 25, +107, 22, 44,192,130, 95,127,197, 71,213,170,201,215, 93,191,142,253,122, 61, 54, 30, 62,156, 81,244,156,114,109, 51,117, 58, 93, +225,238,221,187,213, 27, 55,110,132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0, +103, 1, 0,213, 2,160,139,172,142, 19,132, 32,155, 50,165,183,225, 82,251,104, 8,169,234, 27, 34, 61, 58,110,117, 93,141,218, + 71,132,189, 75, 30, 98,223,183,241,219,244, 25,248, 26, 22,220, 44,227,176, 70,227,234,213,171, 35, 45, 45, 13,187,119,239,214, + 1,248,170,180,103,240, 60,255,229,247,223,127, 63,241,147, 79, 62,145, 68, 70, 70, 2, 64, 67, 0,231, 74, 36,125, 10, 5, 2, + 3, 3,109,196,178,223,224, 49,161,163, 39,140,145,245,124,165, 61, 4, 2, 47,100,235,204,200,204, 51,195,221, 75,137,143, 39, +244,145, 30,108, 28,216,100,217,226,159,182, 19, 66,154,208,103,233, 44,242, 95, 22, 79, 79,207,134,153,153,153,184,127,255, 62, + 6, 15, 30,156,152,145,145,113, 64,167,211, 13, 75, 74, 74, 2, 0,109, 5, 32,109,100,190, 97,195,134,104,218,180, 41,250,246, +237, 43, 45, 40, 40,232, 19, 26, 26, 26, 8,224,165,103,153,159,226, 92,228, 63, 69,180, 74,156, 16,204,230, 8,195,210,165,208, + 29, 60, 8,241,254,253,216, 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49, + 49, 8,189,114, 5, 66,141,166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171, + 45, 67,185, 25, 16,161,149,159, 79, 53,164,224, 54,120, 1,163,140,139, 40,104,174,212,171,146, 2, 31,250,234,114,152, 64,196, + 60,104,166, 40,204, 52, 54, 39,172, 17,250,140, 2, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186, +245,122,120,120,248, 14, 0, 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205, +154, 69,237,137,150,245,189, 64, 32, 0,165, 20,110,110,110, 16, 10,133,190,167, 78,157,242,109,214,172,217,119, 69, 3, 90, 73, +249,164,117,235,214,197,189,123,247, 32, 16, 8,224,230,230, 6,222, 98,194,140, 9, 99,192,177, 18,193,164, 73,147, 26,246,234, +213,235,234,202,149, 43,205,234, 22, 45, 95,202,204,204,188, 54,110,192,192,171,191,255,254,187,145,231,249,101, 14,230,249,210, +237,219,183,217,160, 0, 95,150, 90, 10,120,133, 8,144, 94,254,134,138,149,126,144, 10, 88, 42, 34, 12, 36, 82,153,219,253,132, +132, 76,158,231,111, 56,130,201,243,252,197,123,247,238,201,124,125, 60, 5, 5,133,198,124,153,144,138,227, 46,158,143,173, 26, +213, 56, 20, 0,244, 23,207, 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,102, 97, 97,225,165,196,196, 68,214,215,215, + 87,240, 32, 62, 97,187, 70,169,240, 86,107, 52,205, 1,192,148,151,115,150, 49, 24,210, 89,161,192, 55, 61, 51, 83, 91, 88, 88, +120,207,209,188,223,189,123, 87,224,239,239,195,238,221,127,104,135,175, 92,226,163, 18, 11,212, 18, 66,136,156, 37,185, 34, 11, +159, 33,149,203,125,238, 39, 36,104, 41,165,165,106, 8,191,200, 30,216,243, 81,125,205,248,213, 14, 27,151, 47, 95,198,158, 19, + 55,160,160, 70, 16,125, 14,246,175,254, 17, 3, 38,125,242,212,118,127,229,145,173, 10,105,179,150,213,186, 80, 12, 31, 73,229, + 24,194, 15, 24, 48, 96,198,250,245,235,109, 6, 40, 55,110,220, 64,135, 14, 29,172,219, 28,232,220,185, 51,154, 53,107,134, 27, + 55,110, 32, 44, 44, 12,135, 15, 31,150,176, 44, 43, 25, 56,112,224, 92, 0,187,203, 75,239,242,229,203, 49,108,216,176,146, 12, +171,239, 2,208, 19,247,200,252, 41, 95,172,245,210,102,102, 32, 45, 61,229,146,163,229, 64, 8,193,144,143, 62,202, 88,102, 52, + 98,195,153, 51, 24,164, 80,200,215,220,185,131,232,102,205, 80,175, 67,135, 12, 71,198, 58,171, 86, 71,175,215, 67, 40, 20, 66, +173, 86,195,211,211, 19, 34,145, 8,172, 48, 0, 2,113, 3, 48, 34, 17,162, 90, 55,192,130, 15, 21, 5,131, 95,197, 98, 66,144, + 45, 17,227,162, 72, 94,178,173, 14, 33,132, 40,170,160, 7,165,200, 45,136,199, 31, 86, 66,162,169, 74,220,148,106,225,254, 17, +223, 69,106,212, 62, 34,236, 89,252, 0,251,191, 75,216,162, 79,193, 84, 0,119,203, 58, 93, 44,145, 72,234,105, 52, 26,196,199, +199,227,225,195,135,215,203, 50,240,167,148, 22,180,104,209, 34, 86, 34,145,212,246,246,246, 6,128,234,165,165,147,231,121,155, + 29,214,186, 13,155,188, 26,182, 9,149,190,220,170, 54,214,238,152,131,183,251, 44,134,144, 37,224, 56, 19,190, 94,244, 26, 56, + 67, 62,250,116, 27, 69,218,118, 10,107,112,112,135,113, 4,128, 31,255,171, 68, 43, 33, 33,225,189, 54,109,218,204,205,203,203, +203,210,233,116, 3, 0,160,122,245,234, 33, 12,195, 72, 0,204, 42,163, 61,133,160,100,183, 16,162, 43, 87,174, 64,165, 82, 33, + 49,241,239,152,244,241,241,241,224,121,222, 0,151,148,213, 71,163, 40,165, 23, 9, 33,254, 0,162, 97,231,222,129, 41, 82,213, +181,221,181,107, 23,221,181,107, 87, 91,219,228, 69, 41,111,209,106, 65, 13,143,202, 86, 40, 20, 82, 0,246, 39,154,228, 26,141, +134, 8,131,130, 64, 36,143, 76, 63,168,221,158,240,211,138,217,236,152,107, 25,158, 3, 11, 98, 2,181, 83, 98,232,164, 4,115, +188, 58,226, 61,241, 52,164,136, 53,246, 61, 27,176, 80,112,224, 89, 39,147, 67,117, 58, 29, 44, 22,139,123,141, 26, 53,118, 89, + 44, 22,119,235,214,192,191, 85,169, 28,199,197,178, 44,139,119,222,121, 7, 86,237,143,209,104, 68, 74, 74, 10, 12, 6, 3,140, + 70, 35,238,221,187,135,156,156, 28, 24,141, 70, 92,187,118, 13,213,171, 87, 7,203,178,254,101, 52, 20, 74, 41, 69,112,112, 48, +170, 86,173, 10,150, 80,172,152, 63, 29,159,190, 63, 6,111, 86,231,177,106,201,215,104,215,174, 93,173,106,213,170,181, 16, 8, + 4,156,159,159,159,104,235,214,173,219, 57,142,235,225,132, 31,173,221, 83,166, 76,169, 90,167, 78, 29, 31,141, 90,101,150,136, + 89,136,205, 58, 42, 49,100, 82, 65, 65, 6,130,131, 67, 44,144,201,195, 6, 13, 26,196, 57, 50, 57, 90, 49, 63,252,240, 67,255, +200,200, 72, 55,119,141, 74, 39, 22,178,105, 34,208,140,156,203,231, 78, 3,128,216,219, 71, 15,169,188,246,224,193,131, 45,206, + 96, 78,155, 54,173,186,183,183,183,134, 1,205,227, 76,166,191,247,219, 13,198, 76, 34, 20, 22, 66, 36,110,252,238,187,239, 18, +103, 48, 39, 78,156, 88,173,118,237,218, 26,141, 90,145, 47, 16,178,201, 34,158, 79,150,130, 79, 17, 26, 77, 89, 82,111,175, 2, +200,149, 81,131, 6, 13, 42, 21,211,170,205,154, 60,121,114,124, 49,226, 13,173, 86, 11,125,202, 85,136, 18, 99,208, 64, 41, 68, + 19,111,119, 72, 36, 18,219,209,247,210,154,107,105, 54, 90, 37,145, 45, 71,255,183,241,204, 50,182, 0,151,213,186, 80,220,111, + 86, 17,126,153,253,233,167,159,126,250,164,125,251,246,105,157, 59,119, 54,238,218,181, 11,132, 16, 28, 62,124, 24,137,137,137, +232,220,185, 51, 40,165,214, 83,109,184,116,233, 18, 58,117,234,100,108,211,166, 77,226, 79, 63,253,244,185, 35,149, 51,108,216, + 48,152,205,102,228,231,231, 67,171,213, 98,231,206,157,104,208,160, 1,149,203,229,189,216,224, 87,230,244, 25,241,201, 75,117, +235, 55,196,119,139, 23, 24,197, 2,225, 23, 78, 14,194, 24,252,225,135, 25, 57, 81, 81,218,117, 58, 93,193, 16,181, 90, 94, 35, + 62,222,227,252,190,125, 94, 38,147,201, 33, 12,171, 86, 39, 40, 40,200, 70,178, 68, 34, 17, 4, 98,111,176,138,122, 16,123,118, +134,220,175, 23,254,184, 40, 49,184, 41,176, 77,165,196, 94,133, 6,165,186,118,144, 7, 99,206, 75,253,252,183,182,124,211,255, +144,188, 10, 86, 18, 66, 24, 66, 8, 67, 5,100,235,208,175,195,107,120, 87,149,225,207, 77, 41,216,255, 93,194,111,250, 20, 76, + 7,112,167,188,126,110, 50,153,244, 28,199,129, 97, 24, 8, 4, 2,123, 27,209,147,191,253,246, 27,206,159, 63, 15, 0, 54,183, + 61,121,121,121, 28,203,178,144, 74,165, 0,160, 44, 99,188,131, 80, 40,132, 80, 40,196,145,211,199, 60,223,124,227, 53,114,234, +175, 3,104,217,160, 63, 50,243, 77, 72,205, 49, 33,187, 0,168,211,100, 42,234,118,218,134,203,247,242,208,176,126, 93,150, 21, + 43, 6,191,224,147,119,136,143,143,207, 41, 47, 47,175,195,132,144, 16, 66, 72,136, 90,173, 62, 25, 16, 16, 16, 67, 8,233, 78, + 41,253, 61, 41, 41, 41, 50, 63, 63,191, 37,165,244, 1,165,244, 65, 70, 70, 70,135,180,180,180,151,202, 58,172,229,233,233,185, + 50, 55, 55,119, 60,199,113,221,138,174, 87, 57,142,107,120,251,246,237,218, 13, 27, 54,188, 30, 26, 26,122, 41, 52, 52,116, 79, +104,104,232,246,208,208,208,237,237,219,183, 95,100,117,247,240, 44,165, 36, 46,242, 2,137,213,212, 37,186,200,213, 67,180,109, +206, 40,122, 61, 82,220, 0,205, 34,145, 92,179,140, 27, 7,205,246,237, 16,222,190,141,161,131, 7,171,229,114,249, 98, 66, 72, + 35, 66, 72, 75,165, 82,249,221,244,233,211, 85, 94,243,230, 33,224,216, 49,196,237,220, 9,179, 80,120,174, 34,169, 43, 44, 44, +132, 64, 32,176,105, 98, 20, 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115, +166,127,236, 84,159,157,185,213,195,238,232, 68, 97, 51,189,155,251, 44, 14,105,117, 70, 71, 4,249, 98,141, 20, 15, 31,198,131, + 3,239,212,126,179, 94,175,207,209,233,116,104,216,176,161,231,249,243,231,107, 52,104,208,192,163,232,251,179, 79,217,137, 90, + 4, 6, 6,110, 10, 10, 10,186, 31, 24, 24,184,137, 16,210,194,137,127, 95,121,252,248,113,176, 44,139,233,211,167, 35, 47, 47, + 15, 38,147, 9,153,153,153,120,248,240, 33,140, 70, 35, 18, 18, 18,112,243,230, 77, 24,141, 70,196,197,197,193, 96, 40,127, 65, +194,243, 60,212,106, 53,244,133,249,248, 97,206,167,152, 54,121, 2,114,238, 94, 64, 66, 82, 42, 52,110, 10,188,247,222,123,172, +187,187, 59,207,113, 92, 85,139,197,210,137,227,184,165,142, 18,206, 34,167,133, 39,130,131,131,235,206,159, 63,191,246,167,115, +150,138,212,130,124, 42, 81, 73,121,177, 74, 66,197,181,154, 99,216,212,197,162,111, 22,126,117,235,207, 63,255, 76,116,196,121, +167, 21, 51, 42, 42, 42, 60, 49, 49,177, 65,100,100,100,132, 87, 72, 53,137,196, 63, 48, 91,228, 95, 37,151, 26,244,103, 72, 96, +149,214, 75,151, 46,189,122,242,228,201, 36,103, 48, 21, 10, 69,173,181,107,215,214,245,245,245,173, 43,148,201,164, 5, 57, 57, + 27, 45, 5,186, 77,172,198, 93,202,168, 53,175,110,219,182,237,194,150, 45, 91, 82,156,193, 12, 11, 11,139,156, 51,103, 78,157, +122,245,234,213,241,171, 94, 67, 34, 11, 12,206,148, 6,133,100,202,234, 53,144, 32,168,106,151,239,190,251,238,210,159,127,254, +233, 16, 38,203,178, 22,134, 97, 32, 20, 10, 33,151,203,177,119,239, 94,140, 27,209, 31,193,129,158,136,136,140, 68,199,183,199, + 99,203,150, 45, 54, 27, 30,150,101, 75,157,209,215,204,123,111, 71,148, 63,185,128,101,181, 46, 96, 89,173, 11, 81,254,228, 66, +169,100,171,232,126, 73,191,113,104, 52, 42,197, 14,171, 60,178, 69, 41,221,125,228,200,145, 47,135, 12, 25, 34,238,218,181, 43, +206,156, 57,131, 97,195,134,157,216,186,117, 43, 0,224,204,153, 51,248,224,131, 15, 78, 28, 58,116, 8, 99,198,140, 65,135, 14, + 29,196,199,143, 31,255,206, 17,223, 63, 22,139, 5,171, 86,173,130,197, 98,129, 82,169,132,135,135, 7, 94,123,237, 53, 92,189, +122,117,204,234,213,171, 99, 88,161,240,173,232,110,111, 96,215,246,173,184,121,237,234,152, 53,115, 7, 58,237, 20,152, 97, 24, +116, 29, 60, 56, 35,163, 78, 29,237,154,220,220,130,225,238,238,242,200,148, 20,143, 63, 54,109,242,114,160,253, 16,142,227,108, +228,202, 74, 58,172,151, 64,236, 13,129,162, 46, 4,170, 38,184,124, 71,100, 22, 54,165, 23, 69,141,233,141,178,252,103, 9,197, +204,176, 94,159, 86, 71,175, 79,171,163,251,164,106, 67,229, 85,176, 66, 81, 5, 99,187,190, 95,181,125,104, 19, 55,228,166,153, +176,243,235,184, 7,250, 76,204, 3,112,211,145,126,206,243,252,245,196,196, 68,136,197, 98, 84,169, 82, 37,156, 16, 98,181, 11, + 92, 57,114,228,200,119,103,206,156, 57, 1,192,204,162, 60, 41,219,183,111, 95, 39, 63, 63, 31,183,111,223, 6,128,243,101,212, +189,237,148,161, 54, 55, 78, 82, 45,160, 30, 26,212, 26, 13,119,247,250, 72,212, 26,145,164, 53, 98,197, 15, 61,112,225,248,108, +156,223, 63, 8, 15, 82, 82, 32,243,235, 9,206, 98,168,251,130, 43, 74,166,197,198,198,182,216,180,105, 83,123, 0,211,234,213, +171,247,231,195,135, 15, 95, 58,118,236, 88, 68, 80, 80,208,226,138,130, 90,221, 66,196,197,197, 61,118, 21,185,133, 48, 82, 74, +163, 40,165, 93, 41,165,221,139,174, 15,158,202,215,155,227,114,228, 69, 53,134, 7,176,171,248,105,195,226, 68,203,222, 81, 24, +106,120,120,168,204,102, 83,194,129, 3, 7, 76, 12,195, 64, 46,151, 99,200,176, 97,204, 15,223,127,223,186,127,139, 22,135, 71, +189,252,242,158,195,135, 14, 69, 53,107,214, 12,148, 82, 48, 12,131, 95,127,253,181, 80,175, 47,204,172, 82,165,138,198,145, 65, +195,190, 3,229,230,230,218,136, 86, 78, 78, 14,124,125,125, 29,222, 58,212,229,226,224,161,189, 23,178, 40,247,246,195,174,119, + 22,154,190, 72,233,209, 44,155,231, 4, 57,156, 25, 57,133, 20,121,122, 8,206, 48, 30,205,134,132,245, 52,221,235,212,236,230, +209,152, 83,153,122, 78,239,212,105,137,180,180,180, 79,251,244,233,147,233,239,239, 79,212,106, 53, 2, 3, 3,153,238,221,187, +103,196,199,199,207,172,104,141,120,121,121,189,217,190,125,251, 29,137,137,137,189,143, 30, 61, 90,245,216,177, 99,189,219,183, +111,191,195,203,203,235, 77, 7, 33, 54,126,242,201, 39, 58,177, 88,140,230,205,155, 35, 47, 47, 15, 69,167,124,202,188,202,155, + 8, 0, 64, 36, 18, 97,217,252,207, 49,109,242, 4,104, 99,206,224,242,137, 3, 56,146, 66, 48,117,206, 87, 16,137, 68, 21,242, +245, 21,230,163,168, 87, 47, 64,117,227,131, 97,253,146,166, 76,158,172,186,116,233,146,240,221,247, 63,160,113,201, 90,136,187, + 46, 96,209,246, 83,230, 47,157, 55,162, 95,237,136,233,211, 62,170, 71, 41, 29, 93, 30,102,109, 31, 69,189,186, 1,170,235, 31, +141,234, 31,251,254,251,239,203,190,248,226, 11,125,139, 22, 45, 10, 83, 83, 83,101, 10,119,143, 72,129,155,166,110, 92,114,138, +178, 69,139, 22,247,222,126,251,237,108,103, 49,167, 78,157, 42,223,183,111,159,160, 79,159, 62,150,172,172, 44,165, 80, 38,107, + 72, 36,210,166,233, 89, 89,110,189,251,244,185,211,187,119,239, 2,158,231,199, 56,131,249,217,103,159,201,111,222,188, 41,104, +209,162,133, 57, 37, 37, 69,165,240,244,106,192,106, 60,154,220, 79, 78, 85, 55,109,214,236,238,187,239,190,171, 43, 43,157,246, + 36, 69,165, 82, 37,182,108,217, 18, 95,127,253, 53,190,249,230, 27,116,233,210, 5, 87,175, 93, 69,244,187, 19, 80,123,236, 7, +216,126,234, 52, 18, 19, 19, 49,107,214, 44, 52,104,208, 0, 34,145,232,102,137,160,163,111,144,139,201,148, 92, 76,166, 4,163, +111, 16,235,231, 82,201,208,204, 28, 60,246,251, 18,228,252,103, 37,107,186,162,252,201,133,178,236,176,202, 35, 91,189,123,247, + 30,103,117,225, 48,124,248,240, 19,139, 23, 47,110, 53,124,248,163,133,118,243,230,205, 49,123,246,236, 86, 83,167, 78, 61, 49, +103,206, 28,116,236,216, 17,161,161,161,229, 30,124,225, 56, 14, 22,139, 5,253,251,247,135,197, 98, 65,122,122, 58,110,221,186, +133,229,203,151,131, 82, 42, 5, 0,255,128,160,198, 98,177, 24,127, 93, 60, 87, 48,109,120,179,159,156, 88, 76, 17,251, 69, 76, +126,126, 62,122,143, 29,155,145, 80,179,166,118,105, 70, 70,193, 8,119,119,121,181, 7, 15, 60, 84, 70, 99, 96, 89, 54,169,132, + 16,240, 60,111, 35, 86, 86,194, 85,252, 42,154, 40, 29, 18, 83, 1,191,251,216,250, 36, 0, 64,155,129, 1,232, 62,169,218, 80, +255, 48,249,183,173, 7, 60, 82,122,111,153, 29, 75,243,146,184, 47, 96,198,117, 39, 52,214,103,206,156, 57, 3,141, 70,131, 62, +125,250, 72, 24,134,153, 87, 52,206,235, 41,165, 75, 40,165, 11,173, 88, 18,137,100,193,160, 65,131,152,236,236,108, 92,190,124, + 25, 0, 14,149, 54, 46, 81, 74,109,121,207,215, 18,112,188, 24, 39, 47,238,197,254, 99,155,113, 63, 49, 29, 15,210,244,128,192, + 13,122, 93, 2, 76,133,137, 48,102, 95, 68,174, 65,254, 95,216,145,122, 38,238, 22,158,129, 91,136,202,212,106,189,144, 54,117, +148,210,100,251,211,134,246, 14, 76, 75,114, 88, 10,170,150,245,219,252,221, 15,110,125,250, 15,212, 53,104,208,192, 61, 48, 48, + 16,132, 16,244,232,217,147,180, 63,122, 84, 37, 12, 8,128,103,163, 70,182,237,136,131, 7, 14, 96,239,222,189,186, 93,191,109, + 11, 28, 54, 98,196,235, 0,214,150, 49, 96, 8,106,212,168, 97,123,110,114,114, 50, 36, 18,137,205, 38, 34, 55, 55, 23,222,222, +222, 72, 78, 78,134,131,138,146,117, 83, 38,159,158,156,214,236,211,234,205, 84, 66,178, 71,151, 2,142, 82, 8, 9, 7, 20, 82, +152, 57,192, 96,166,104, 92,141,245,216, 95,104,113,223,121,102,235, 61, 0,235,156,212,104,253, 65, 8, 25,205,243,252,102, 0, +204,209,163, 71,249,235,215,175,143,115,212,112,189, 68,181,189, 92, 62,233,240,225,195, 30,147, 38, 77,202,218,185,115,103,206, +107,175,189,230,182,124,249,114,143, 14, 29, 58, 76, 2,240,139, 3,149, 90, 72, 8, 89, 27, 31, 31, 63,174, 73,147, 38,208,106, +181, 48,153, 76,184,112,225, 2,194,194,194,112,254,252,121,132,135,135,227,220,185,115,136,136,136, 0,199,113,208,235,245,224, +121,158, 43,111, 48,215,102,164, 3,153, 15,145,116,102, 15,110, 93,185,128,195, 73, 4, 75,126,217,129, 42, 85,171, 87,200, 79, + 77,132,175,162, 78,160,143,231,254, 47,102,124,230, 19,247,199,175,216,186,106, 9,127,100,207,158,218, 98, 21, 70,183,237, 63, +254, 13,163, 25, 33, 0,196, 47, 53,107,130,174,238, 55, 57,121, 85,164, 28,186, 86,182, 39,235, 8, 95, 69,157, 0,111,207,125, +255,155, 55, 83,117,119,239, 26,108, 92,246, 53,221,178,254,231, 6,122,160, 89,157, 58,117,186, 50, 12,163, 1,160, 47,178,243, +114, 40,180, 77, 73,152, 7,119,236,136,210, 3,205,126,255,253,247,174,114,185,220, 15,128,185,160,160, 32,246,105, 48, 15,237, +220, 25,101, 77, 39, 33,196, 7,128,137, 82,122, 23, 78,134,224,233,219,183,239,236, 15, 62,248, 96, 50,199,113,222,214,239,204, +102, 51,187, 96,193, 2, 1,207,243, 44,165,212,196, 48,140,105,223,190,125,156,197, 98, 73,210,235,245, 99,159,102, 32,121,227, +141, 55,112,250,244,233, 25,120,116, 8,195, 81,109,245, 99,118, 90,101,109, 83, 58,130,127,244,232,209, 89,111,189,245,214,148, + 95,126,249,229,214,226,197,139,187,141, 25, 51, 6,191,254,250, 43,106,214,172,137,191,254,250, 11,159,126,250, 41, 0,180,154, + 58,117,234,246,149, 43, 87,134,198,197,197, 45, 40, 47,141,102,179, 25, 22,139, 5, 63,255,252, 51,122,244,232, 1,111,111,111, + 4, 4, 4,128, 16,242,199,136, 17, 35,190, 7, 0,150,176, 34, 0, 48,232, 13,134,200,200, 38, 14,107,112, 67, 67, 67,109, 99, + 93, 74, 74,138,237,164,224, 43,111,189,149,177,226,139, 47,240, 83, 97, 33, 70,184,187,203, 19,130,130,252,183,223,189, 59,138, + 16,178,188, 52,205,145, 85,171, 83, 30,201,114, 84,195, 92,152,140, 79,126,155,123,223, 15, 64,151, 54, 3, 3,208,102, 96, 0, +154,116,247, 33, 12, 75,112,101,127, 38,174, 30,212,110, 49,231,226, 15,103,194,229, 80, 74,175,123,122,122,110,111,219,182,109, +183, 90,181,106, 97,228,200,145,111,139, 68, 34,145,217,108,126,223,234,230,129, 16,226,198, 48,204,204,213,171, 87,143,242,240, +240,192,241,227,199,113,236,216,177, 63, 40,165, 15, 75, 27,151, 0,216,124,102, 85, 9, 14,215,223,140,203,151,167, 37,158,196, +137,227,191,161,102,131,241,144,249,189, 14,143,200, 57, 48,197,124, 3, 99,230,126,120, 4,191,134,132,184,187, 96, 5,146,171, +248,143,136,213,221,194,213,171, 87, 75,116,183,224,172,212,171, 87,175,213,177, 99,199, 36,122,189, 30, 71,142, 28, 65,211,166, +182,179, 93,255,106,252, 78,123, 46,242, 34, 73, 89, 65,165, 75,156, 53, 9, 79,132, 17,225,225,156,136,193,234, 30,175,191, 94, +112,233,210, 37,219,170, 79,127,246, 44,116,123,247,130,227, 56, 80, 74,113,236,232, 81, 12, 26, 56, 48, 95,200,146, 21,213,170, + 85,165,132,254,237,187,165,164,163,244, 34,145,168, 79,159, 62,125,108,131, 79,124,124, 60, 20, 10, 5,196, 98, 49,120,158,135, +197, 98, 1,203,178,112,115,115,131,197, 98, 49,150,144,153, 78,197, 50, 98,230,180,186,222, 43,163, 7, 36, 7,228,155,232,104, + 77, 53,132,136,100,182,206,233,167, 38,232,214, 64, 8, 47, 65, 26, 61,180,224,229, 36,222,144,217,187,120,108,177,242,142,252, + 19, 66,194,235,215,175,255,253,160, 65,131, 24, 0,232,212,169, 19, 83,191,126,253,111, 9, 33,225,101,252, 79,153,152, 82,169, + 84, 2, 0, 59,118,236,208,222,186,117,171,203,142, 29, 59,180,246,223, 59,136,185,124,254,252,249,144,203,229,176, 88, 44, 48, + 26,141, 54,251, 44,251, 87,147,201, 4, 47, 47, 47,236,218,181, 11, 28,199,237, 42, 47,157,193, 33, 85, 65,188,107, 96,237,142, +195, 56,150, 33,114,154,100,217, 99,214,244, 87, 70,248,121,121, 30,248,223,220, 89,222, 89,119, 46, 32, 33, 33,129,238,219,187, +235,207, 66, 74, 19,179,115,233,180,172,124, 26, 81, 96,160,210,166,161,120,120, 96,217,199,116,106, 27,152, 81,194,169, 65,123, +204, 58,254,202,136, 64,111,207,125, 95,253,111,174, 42,251,206, 5, 36,167,164, 96,247,174, 29,151, 10, 41, 77,164,148,110,161, +148, 14,229, 56,174, 46,199,113,117, 41,165, 67, 75, 35, 47,206, 98,234,116,186,122, 58,157,174, 94,101, 98,242, 60, 95,143,231, +121,135, 49,237,137,202,194,133, 11, 99,146,147,147, 7,165,165,165,117,182, 94, 89, 89, 89,157,242,243,243,219, 21, 20, 20,180, + 46, 92, 88,213, 77,167,211,249,228,229,229,249, 23, 22, 22, 54,166,148, 94,112,180,125,218,139,189,215,233,164,164,164,233, 73, + 73, 73,164,188,116, 50, 99,110,144, 13, 95,125,244,219,178,101,203,252,159, 6,191,120, 58,211,211,211, 55,255,252,243,207, 13, +171, 87,175, 30, 58,116,232, 80, 44, 93,186, 20,139, 23, 47, 54, 0,192,202,149, 43, 13,118,154,172,224,251,247,239, 55, 41,105, +219,240,177,116, 50,204,186, 87, 94,121,133, 30, 59,118, 12, 61,122,244,176, 57, 18,253,241,199, 31, 97,177, 88,114, 59,118,236, +200, 3, 64,161,190, 32,151,242, 20, 70, 83,201,251,239, 37,149,167, 88, 44,126,213,222, 95,160,213, 25,179, 88, 44, 6,165, 20, + 17,173, 90,101,100, 55,104,160, 93,149,147, 83, 48,189, 94, 61,245,168,200,200,161,181,128,129, 37, 97, 18, 66, 30,211,234, 20, +191, 28,213,100,217, 99, 82, 74,211, 10,147, 48,242,183,185,247,247, 90, 53, 91, 82,165, 0,250, 60, 11,182,125,113, 63, 93,159, +142, 31, 1, 60,116, 6, 19, 0,180, 90,237,187, 95,124,241,133,193,221,221, 29,111,188,241, 6,230,204,153, 51,162, 85,171, 86, + 57,190,190,190,167,195,194,194,174,244,235,215, 47,249,194,133, 11,239,182,111,223, 30,183,111,223,198, 87, 95,125,149,157,149, +149, 53,160, 44, 76, 66,136, 77,147,215, 61,186,147,246,135,111,191,230, 59,182, 29, 7,185, 76, 13,179, 48, 24,218,124, 51,178, +116, 20, 70, 73, 51,136, 69, 18,116,110, 81, 7,167,247,173, 41,224,140,186,181, 21,105,243, 78, 76,174,207, 26,179, 82,220, 45, + 20, 79,103,101,184,133,120, 22,121,127,145,165, 4, 63, 90,143,107,180,172, 71, 42,173,175,132,240, 28,199,241,168, 86,189,154, + 42,238,254,195, 37,125,251,246, 25,222,181,107,180, 60, 58, 58, 90, 90, 39,230,209,214,197,142, 29, 59,176,117,235,214,130,253, +251,247,231, 74,132,236,202,224, 42,193,190, 28,199,131, 16,190, 76, 54,172, 82,169,222,255,228,147, 79,100, 57, 57, 57, 88,188, +120, 49,223,176, 97, 67, 70,161, 80,192,100, 50, 97,229,202,149,230, 58,117,234, 8, 25,134, 65, 78, 78, 14, 24,134,185,233, 96, + 6, 47, 19, 66, 58,127,223,190,215,214, 38,239, 12,243,172,221,254, 37,247,118,193,129, 48, 55,162, 72,138,191,143, 91,135,246, +103, 93,219,183, 40, 19,250,212, 94,148,210,235,206, 22, 96, 64, 64,192,231,251,247,239,247,121,247,221,119,169, 94,175, 39, 15, + 31, 62,164,115,231,206,245, 25, 57,114,228,231, 0,222,172,104,127,202,206,206, 6, 33,132, 47,106,180,214, 85, 63,113,162, 98, +175, 18, 66,126,239,217,179,103,247,142, 29, 59, 34, 38, 38,198,182, 69,104, 79,180,172,167, 15,231,205,155,151, 13, 96, 74,121, +184, 66,161, 16,139,215,110, 70,118, 86, 6,124,125, 3, 32,149,201, 42,236,113, 89,204, 48,211,191,156,245,153, 79,198,141,211, +228,234,159,135,249, 77,151, 83,211, 44, 28, 45,217,227,127, 94, 18, 45, 98,255,101,175,102, 24,118,250,151,115,103,186, 89,183, + 53,127,185,152,156, 75, 56,250,238, 83,245,146, 23, 5,243, 31,150,128,128, 0, 36, 37, 37,145,128,128, 0,106,221,214, 43,141, +104, 61,209,192, 31,109,151,145,178,182, 13, 43,138,127,239,222,189,185,141, 26, 53,250,232,246,237,219,155,106,215,174, 61, 6, + 64, 21,131,193,144, 61,117,234,212,255,173, 92,185,114,184, 35,154, 44, 0,248,245,215, 95, 23, 13, 27, 54,108,239,235,175,191, +254, 49,207,243,245,237, 38,145,123, 62, 62, 62,182, 45,220,244,212,148,201,163,135,247,159,156,159,159,229,176,159, 59,165, 82, + 57,106,234,212,169, 82,157, 78,135,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92, +198,194,148, 20,204, 62,126, 92, 55,185,110,221,134,171,110,221,106, 92,146,198,221,186,112, 44, 73,147,101, 53,187,168,224,228, +144, 68, 8, 25,249,219,220,251, 63, 2,232,242, 82, 95, 63,252, 62,255, 62,178,226,140,255,131, 5,119, 29, 9, 11, 84, 2,102, + 2, 33,164,115,106,106,234,239,159,125,246,153, 91,227,198,141, 81,183,110, 93,161, 82,169,108,102,117, 23,147,147,147,131,131, + 7, 15, 98,233,210,165,198,107,215,174,245,164,148,150,186, 93,197,113, 92, 90,120,120,184,181, 28, 40, 33, 36, 51,215, 64,220, + 54,214,106,166, 28, 58,122, 19, 57,113,238, 20,146, 76, 60, 12,102, 30,213,170, 71,161, 93,151,133,216,190,231, 10,151, 20,119, +253,186,185, 48,107,197, 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210, +101, 63,188,250,235,207,191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142, + 25,243,167,201, 80,168,221,249,251,239, 33,213,170, 85,109, 80, 20, 84,154,242, 44,115,178,172, 7,230,231,231,235,142, 31, 63, + 94, 48,101,202, 20, 18, 31, 31,191,193,215,215,183,223,158, 61,123,148,189,122,245, 42,140,137,137,217,226,231,231,215,189,125, +251,246,170,143, 62,250,200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194, + 32, 4,120,243, 73,152,242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168, +215,235, 69,115,230,204,241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221, +186,117,251,125,227,198,141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140, + 25, 51,144,147,147, 51,161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111, +238, 92,133,180,204, 12,126,227, 95,169,169, 5, 38,174,243,237, 52,221,181,226,191, 43,224,160,107, 63,244,189, 68, 0, 48,240, + 40, 51,226,188, 66,140,208, 91,187,126, 68,106, 90, 6,126,189,152,156,173, 51,241, 93,110,150,128,233, 84, 58, 95, 16,204,168, + 25, 49,232,253,158,227,191,189, 56,186,226,207,114,148, 80,149, 38, 23,147, 41,225,151,214,162, 88,182,170, 68, 31, 89, 79,131, + 95,164,169,250,189,168,221,198,247,239,223,127,242,253,251,247,103, 21,249,203, 90,230, 12,214,170, 85,171,110, 3, 24, 86,214, +111,126, 89, 48,108, 27,128,109,206,224,230,229,229,233, 47, 92,184,160,255,232,163,143, 72,124,124,252, 30, 63, 63,191, 87,246, +238,221, 43,239,213,171,151,225,234,213,171,135, 2, 2, 2,218,116,234,212, 73,185,251,204,153,196,130,187,119,119,238,188,127, + 63,200,204,243, 59,203,234,159,149, 73,178,138,147,173,109,179,239,127,249,251,151,247, 59,241, 6,108, 49,102,225, 79, 0, 9, + 79,129,121,140, 16, 82,123,224,192,129, 27, 95,123,237,181,151,106,215,174,141, 42, 85,170,224,214,173, 91, 72, 79, 79,199,229, +203,151,177, 99,199,142, 29,122,189,190,220,128,218,153,153,153, 79,132, 39, 34, 50,207,128, 53,223, 77,223,113,238, 68,211,240, +214,209, 67,100,117, 3,120, 24, 77, 20,241, 15,238, 98,198,180, 21, 5,201, 15,110, 95, 55, 89, 76, 61,255, 3, 62,180,142,197, +198,198, 70,177, 44, 91,169,238, 22, 42,234, 22,194, 37,149, 72,180, 98, 99,227,175,135,134, 6,127,178,117,203,230,150,148, 50, + 44, 37, 68,167,209,184,239,120,248,240, 97,182,253,239,106,120,120,168,134,141, 28,214,143,240, 68, 72, 8,207,241, 44,115, 50, + 54, 54,190, 76,141,145,209,104, 28,221,175, 95,191,197,114,185,124,170, 86,171,189,164,209,104,254,106,208,160,193, 44, 74,233, +180,194,194,194,223, 85, 42,213,153,151, 94,122,105, 78, 72, 72,200, 34, 74,233,121, 39, 59,183, 5,143,236,195,214, 86,178, 42, +119, 38,165,212, 77, 32, 16,228, 92,185,114,229,231,136,136,136,254,148, 82, 55, 66, 72, 78, 69, 49,245,122,253,187,217,217,217, + 94,163, 70,141, 50, 47, 95,190, 60, 98,200,144, 33,147,175, 93,187, 38,212,235,245,177, 78,230,217, 64, 8,233,222,183,111,223, + 21, 66,161,176, 35,195, 48,132,231,121,106,119, 31,148, 82,112, 28,183,189,188,114,225, 56, 46,177, 86,173, 90,143,173,160, 75, +178,207, 53,155,205,137, 14, 79, 54, 70,110,252, 15,135,175,205,211,155, 41,181,240,116,244,205, 84, 93,137, 71,206,206,222,164, +117, 28,198,212,243,227, 23,239,187, 62,207, 96,230,121, 11, 79,199,148,134,233,212,164,248,130, 96, 2,192,100,205,250,109, 88, +182,222,102, 24,111,221, 78, 44,254,185, 50,197,170,117,130,147, 30,155,153, 49,143,140,229,203, 35,124, 21,197, 47, 78,186,156, +149,222,189,123, 63, 51,123, 20,147,201,244,105,183,110,221,102,105, 52,154,255,165,167,167, 95,210,104, 52,215, 35, 35, 35,199, +243, 60,191,168,160,160, 96,135, 74,165,122,189, 73,147, 38, 19,170, 86,173,186, 38,142,210, 53,229,245, 77,171, 86, 7, 0,181, +246, 75, 43,145,176, 39, 20,102,179, 57,161, 2,101,152, 68, 8,249, 16, 64, 53, 60,114,192,123,135, 82,250, 84,101, 67, 41, 77, + 2,208,146, 16, 82, 29, 64, 71, 60,242,223,151, 13,224, 30,128,243,148,210,203, 21,198, 46,204, 76, 34,132, 52,186,113,241,248, +152, 91,215, 47,190,101, 61, 93,200,178,226,171,156,169, 96,173,185, 48,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1, +164,226,111, 71,198,113, 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,187,247, 44,219, 34, 33,164, + 83,101,199, 67,114, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151, +184,196, 37, 46,113,137, 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 31, 28,102,170, 21, 57,125, 80, 30,190, 11,211, +133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,255, 55,113,109, 29,186, 48, 93,152, 46, 76, 23,166, 11,211,133,233,194, +252,215, 49, 95,104, 50,229,218, 58,116,137, 75, 92,226, 18,151,184,196, 37, 46,121, 54, 98, 37, 85, 37, 25,197,187,136,150,243, +172,149, 1,240, 54,128,222, 0,106, 0,184, 11, 96, 51,128,239,157, 8, 83, 97,143,167, 6, 48, 25, 64, 75, 60,138, 94,127, 15, +192,113, 0, 95, 80, 74,243, 93, 37, 94,178,120,123,123,127, 34, 20, 10, 53,192,163,208, 38,214, 87,251,247, 28,199,101,231,228, +228,204,125, 70,237,128,117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159, +180, 90,237, 0, 74,233, 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253, +186,196,147,135, 54,162,181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,253, 51,128,191, 99,225, + 21, 63,250,111,125,229,121,254, 94,102,102,102,169, 14,212,228,114,249, 41,150,101,171, 19, 66,192, 48,140,237, 50,155,205, 42, +150,101,243, 74,193, 76,208,106,181,141,159,147, 66, 36, 0,118,186,187,187,235,103,205,154,245,125,187,118,237,130,147,146,146, + 44,147, 38, 77,106,243,215, 95,127, 69, 19, 66, 94,117,134,108, 17, 66, 90, 16, 66,214, 52,108,216,112,219,224,193,131, 55, 54, +107,214, 76,156,153,153,169,218,188,121,115,224,218,181,107, 47, 16, 66, 6, 56,235,226,226, 5,104,136,130,210,252,153,149,117, +175,184, 8,133, 66, 77, 66, 66,130,170,104, 37, 97, 37, 86, 48,155,205, 48,155,205,208,233,116,104,208,160, 65,165,167,223,223, +223, 63,138, 16,178, 36, 44, 44,172,113, 64, 64,192, 57, 0,227,146,146,146,254,114, 38,173, 22,139, 5,148, 82, 91, 58,107,215, +174,237, 26,153,157,107, 67, 35,196, 98,113,151,176,176,176,166, 6,131, 33,235,222,189,123,103, 57,142,251,172, 44,167,151, 78, +226,187, 1,248, 76, 34,145, 52,171, 81,163, 70,240,237,219,183,227, 77, 38,211, 25, 0, 51, 41,165, 57,149, 65,178,218,182,109, +123,226,187,239,190,243, 28, 59,118,236, 9, 66, 72, 43, 23,217,114,201,191, 37, 85,170, 84,209,232,116,186, 21, 0,162,132, 66, +161,159, 84, 42,133, 76, 38, 75,145, 72, 36,151,100, 50,217,240, 19, 39, 78,100, 59,139,201,113,220,103,113,113,113,126,205,155, + 55,159, 95,183,110,221, 25, 25, 25, 25,122,147,201,116, 40, 43, 43,107, 2,165, 52,183,172,255, 45,206, 69, 94, 36,146,101,255, + 90, 52,222,255,189,117, 88, 20, 87,168,221, 99, 12, 76, 32, 8,138,139,139,243, 81,169, 84,224, 56,206,166, 45,176, 78,106,246, +182, 93, 69,126,154, 16, 25, 25,105, 42,103,194, 9, 78, 72, 72,240, 81, 42,149,182,239, 76, 38, 19,252,252,252,248,196,196, 68, + 31,169, 84,250,216,239,141, 70, 35,130,130,130,158, 39, 95, 40,111,123,120,120,228, 60,124, 24,223, 64,111, 48,205, 28,249,238, +148, 79, 6,244,126,217,253,212,169, 83,252,171,175,190,106, 56,122,244,232,219, 0,150, 56, 88, 41,110,132,144,181,147, 38, 77, +154, 33,149,171, 61, 15,159,186,110, 88,187,121, 87, 98,195,240,106,100,194,132, 9,236,123,239,189,119, 44, 42, 42,234, 39, 66, + 72, 35,103, 52, 91, 42,149,106,175, 68, 34,169,202,178, 44, 76, 38,211, 67,173, 86,251,202,115,212, 16, 27, 2,184, 72, 8,137, +162,148, 94,114,244, 94, 89,146,153,153,137,194,194,194, 39,174,218,181,107,163,178,237, 15, 9, 33,130,224,224,224,223,231,205, +155, 23,152,146,156,140,175, 23, 46,108, 14,224,123, 0,205, 29,249,255,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147, +103,204,152, 49,239,173,183,222, 2,199,113, 40, 44, 44, 12,184,115,231, 78,157,169, 83,167,246, 36,132, 52,165,148,198, 62, 37, +190,119, 88, 88, 88,204,248,241,227, 61,154, 54,109,138,162, 40, 21, 1,199,143, 31,111,190,114,229,202, 65,132,144, 72, 74,105, +250,211, 60,195,195,195,227,167, 31,127,252,209, 83, 46,151, 99,251,246,237,158, 29, 59,118, 60, 78, 8,105, 93, 81,178, 69, 8, + 97, 60, 61, 61,223, 3,208,129,231,121, 49,128, 51, 89, 89, 89,179, 43,226,213,221, 37,255,191,196,203,203,107, 68, 94, 94,222, +119, 18,137, 68,228,238,238, 14,185, 92, 14,129, 64, 0,129, 64, 80, 69, 34,145, 84,145, 72, 36, 93, 59,116,232, 48,238,240,225, +195,101,122,216,127, 41,202,111, 40, 24, 50,147, 37, 12, 11, 0,181,195, 60,213,110,110,110,152, 57,115,166,162,123,247,238, 10, + 0, 56,113,226,196,224, 33, 67,134,116, 36,132,212, 45,141,108,149,196, 69, 94, 20, 41,237,196,225, 99, 26,173,232,232,232,163, +197, 58, 47,100, 50, 25, 54,110,220, 8,150,101, 31,139, 26, 95,210,251, 42, 85,170,148,155, 16,171, 70,108,199,142, 29, 80,171, +213,112,115,115,179, 77, 52, 18,137, 4,135, 14, 29,130, 80, 40,132, 64, 32,128, 80, 40, 68,227,198,141, 81, 70, 64,251,103, 34, +125,234, 16, 10, 0,155,222,121,148,174, 62, 75, 30, 57,129,220,244, 78, 36, 90,215,144,161,247,123,211,251, 21,232, 77, 77, 0, +232,178,179,178,178,206,109,221,154,212, 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91, + 88,153,155,215,224, 33, 67, 7, 15, 23, 48,166, 65,163, 63,154, 19,159,156,161, 27, 53,106,212,214,237,219,183, 15,254,242,203, + 47,111, 76,156, 56,113, 50,128, 79, 29, 77,191, 88, 44,174,122,231,206,157, 48,158,231, 81,175, 94,189,231, 38,140,129,149, 72, + 81, 74, 65, 8,121,140, 80,149,117,175, 60,177,106,176, 74,186, 42, 91, 2, 3, 3, 35, 7, 14, 28,232,165,205,200,192,215, 11, + 23, 90,191,110, 92,222, 54,162,117,139,208,104, 52,226,141, 55,222, 24,200,113,156,192, 74, 2, 13, 6,131, 49, 39, 39, 71,111, +119,178, 39,157, 82,250,178, 3,229, 89, 93,161, 80,252, 15, 64, 84, 97, 97, 97, 32, 0, 40, 20,138, 68,158,231,183,233,116,186, + 79,173, 1,124, 43, 80, 79,193, 0,234,160,244, 80, 80,116,222,188,121,183, 39, 79,158, 28,251, 79, 99, 18, 66,170,250,250,250, +206,237,211,167, 15,118,237,218,133,221,187,119,155,101, 50,153, 96,200,144, 33,100,220,184,113,238,227,199,143,239,138,167,112, +226, 88, 36, 93,103,204,152,225, 81,171, 86, 45,108,222,188, 25,151, 47, 95, 46, 12, 11, 11,147,181,107,215, 14, 2,129,192,227, +147, 79, 62,121, 21,192,154,167,121,128, 86,171,157,253,209, 71, 31,173,253,249,231,159, 85,247,238,221,195,146, 37, 75,188,250, +245,235,119,148, 16,210,214, 81,178, 69, 8,145, 0,120, 15, 64,123,150,101, 91, 15, 25, 50,196,242,238,187,239, 10, 25,134, 49, + 47, 92,184,208,123,229,202,149,253,188,188,188,162, 50, 50, 50, 92,230, 7,101, 8,203,178, 38,158,231,133, 0,164,148, 82, 67, +121,159,255, 75,121,247,244,244, 28,155,149,149,245,189,159,159, 31,124,125,125,159,152,107, 13, 6, 3,164, 82,169,200,207,207, +239,199, 30, 61,122, 8,127,251,237,183, 82,183, 0, 9, 75, 62,219,254,203,172, 64, 15,119, 21, 0, 96,209,210,125, 5, 0,240, +219,111,191, 33, 41, 41, 9,238,238,238,168, 91,183, 46, 59,107,214, 44,255, 9, 19, 38,124, 13, 96,120,105, 88,197,185,200,139, +164,209,178, 39, 91,246,159,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,123, 43, 57, 43,198,240, 14, 22, 75, 8, +201,207,207,183,145, 44,181, 90,141,162,201, 21,102,179,249, 9, 92,142,227, 64, 8,161,101, 97,150,146,225,177, 0, 14, 81, 74, +239, 58,200, 68,109,152,155,222,137,196, 90,201,164,254, 86, 23,234, 93, 63,122,244,186, 22,192,169,251,195,151,124,215,182,109, +224,123,211, 22, 79, 47,204, 76,202,248,100,224,235, 85,195,252, 60,101,138,236,180, 28,143,136,136,206,120,228, 81,217,209,116, +182, 25, 60,120,240,186,253,167,227,136, 84, 42, 18, 9, 88, 86,216,170, 94,184,103,176, 27,235,166, 2,220,226, 99,111,159, 26, + 58,116,104,189,137, 19, 39,182,118, 38,239, 12,195, 64,173, 86, 99,221,186,117, 96, 28,136,157,243, 44, 78,141,148, 80,239, 2, + 43,145,210,106,181,216,181,107, 23,162,163,163, 47, 18, 66,162,138,126,114,145, 82,138,220,220, 92, 36, 39, 39,195,223,223,255, + 34, 33, 68,104,191,141, 88, 28,211,170, 85,181,146,170, 33, 67,134, 12,180, 88, 44, 2,187, 65,162, 56,129,121,130,196, 56,154, +247,128,128,128,253, 0, 94,102, 89, 22, 70,189,222,248,191,175,190,178,191,125,222,158,100,149,134,105, 77, 43,199,113,130,139, + 23, 47, 10,173,125, 6,128, 16,128, 2,128, 23,165, 20, 12,195, 92,113,160, 60, 35,229,114,249,169, 29, 59,118,168, 27, 55,110, + 76,196, 98, 49, 44, 22, 11,174, 94,189, 26,252,229,151, 95,142, 62,120,240,224,171,132,144,218,197,131,167, 59, 88,239,117,142, + 31, 63,174, 11, 13, 13, 45,145, 56,230,230,230, 10,194,195,195,219, 2,136,253, 23, 48, 19, 82, 83, 83,123,188,252,242,203, 99, + 82, 82, 82, 98, 44, 22,203,199, 0,234,122,121,121, 93,236,213,171, 23,100, 50, 89,123, 71,136, 86, 89,245,238,227,227,211,253, +165,151, 94,194,146, 37, 75,240,229,151, 95,118,162,148, 30, 34,132,116,204,205,205, 61,216,173, 91, 55,104, 52,154, 30, 37, 17, + 45, 71,219, 18, 33, 36,188, 77,155, 54, 63,206,156, 57, 83,181,107,215, 46,132,133,133, 33, 47, 47, 15, 31,126,248,161,207,231, +159,127,126,132, 16,210,206, 74,182, 74,195, 36,132,212,150, 72, 36,107,126,254,249,103,101,104,104,104,168, 72, 36, 98, 66, 67, + 67,161,213,106,161,215,235, 37,115,230,204,169, 39,147,201,254,250,230,155,111,214, 0,232,245, 79,247,247, 98,105,205, 1,160, + 6,160,113,102,219,181,140,188,231, 0,144,216, 58,143, 80, 8,169, 84, 10,169, 84, 10,137, 68,130,155, 55,111, 78,147, 74,165, + 11,237,199,226,178, 48,201,223,147, 86, 3, 66,200, 89,150,101,203,252, 92,220, 52,228,159, 46,207,162, 52, 7, 17, 66, 22, 1, +104,255,104,200,103,142,122,121,121,189,159,146,146,242,192, 81,204,128,128, 0,207,252,252,252,111,252,253,253,225,235,235,107, +155, 59, 2, 3, 3, 97, 54,155,145,154,154, 10, 74, 41,178,179,179, 33,151,203, 17, 16, 16,240,205,232,209,163, 55, 47, 91,182, + 44,179, 68, 76, 30, 95,118,235, 55,245, 51,150,101, 25, 0, 96, 5, 74,229,248, 41, 64,213,170, 85,209,170, 85, 43,232,245,122, +228,228,228,160, 78,157, 58, 2, 66,200, 96,134, 97,212,148,210, 31, 40,165,135,255,131, 90,247, 82,141,225,103, 20,223, 23, 37, +132,128,231,121, 8, 4,130,199,136, 86,241,203, 74,138,138,218, 43, 41, 79,197,109, 52, 26,109, 36,203,205,205,205, 70,210, 44, + 22, 75,105, 68,171, 34, 76,189, 62,207,243,213, 9, 33,203, 28, 37, 91,197,101,240,224,193, 79,216,123, 76,152, 48, 33, 33, 45, + 45,141,190,209,185,129, 34,102, 79, 82,114, 13,119,165,204, 91,165,170, 38,117,247,208,100,102,102,254, 9, 64,227,196, 35,106, + 54,106,212, 72,182,118,235,241,132,145, 31,204,155,213, 56,212, 83, 93, 63,200,203,221,207, 77, 38, 86, 50, 68, 39,181,152, 19, + 60, 60, 60,194, 42,176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102, +205,154,217,200,150,149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147, +141,192,136, 68,162, 39, 8,140,245,183, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148, 82, + 29, 30, 5,190,206,167,180,148, 0,217,197,196, 98,177,216,180,108, 66,161, 16, 15, 31, 62,180,105,133,173,154,225,226, 91,231, +165,137, 68, 34,249,232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120, +225,194,133, 79, 80,129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70, + 70,189,194,194,194, 57,142,180, 35, 0,219,139, 46,235,152,242, 87, 76, 76, 76, 97,223,190,125,101,213,170, 85,107,246,180,109, + 53, 60, 60,188,133, 80, 40,196,153, 51,103, 12, 0,172, 43,235,163,151, 47, 95, 54,244,234,213, 75, 18, 28, 28,220,194,137, 1, + 55, 60, 50, 50,242,128,143,143,143,204,170,193,236,211,167,143,112,249,242,229,170,196,196, 68,152, 76, 38, 76,158, 60, 25,175, +189,246, 26,188,188,188, 48, 97,194, 4,223,249,243,231,255, 4,160, 81, 25,152, 82,177, 88,188,238,206,157, 59, 97,254,254,254, +178,211,167, 79,163,126,253,250,200,200,200, 64, 74, 74, 10,242,243,243,145,146,146,130,225,195,135,251,124,253,245,215, 1,207, +209,252,147, 45, 18,137, 32,151,203, 53,217,217,217, 57, 79,129, 35, 1, 32,182, 39, 89, 18,137, 4, 18,137, 4, 82,169,244,169, +226,178,190, 32,147,120, 32, 33,228,186, 72, 36,146,200,229,114, 17,195, 48,144, 72, 36,157, 61, 60, 60,174,189,242,202, 43,117, +247,239,223, 31,231, 8,142, 94,175, 95, 39,145, 72,132, 62, 62, 62, 0,128,176,176, 48,212,175, 95, 31, 58,157,142,207,201,201, +129, 70,163, 97, 30, 60,120,128,194,194, 66, 36, 39, 39, 35, 36, 36, 68,200, 48,204, 58, 0,175,150,132,119,242, 66,242, 82, 0, + 75,173,159,189,189,189, 83, 1,200,172,159,165, 82, 41, 2, 3, 3,145,152,152, 8,149, 74,197,126,254,249,231,189, 54,110,220, +216,147, 16, 50,152, 82,186,222, 14,106,198,139,106,163,101, 37, 89,246,175,143, 17,173,232,232,232,233,187,118,237,106, 91,210, + 68, 86,180, 95, 91,170, 38,203,122, 57, 66,136, 8, 33,224, 56, 14,190,190,190,144,203,229,144,203,229, 32,132,216,190, 47,142, + 95,180,194,119, 58,179, 10,133, 2,111,189,245, 22,253,225,135, 31,198, 20,145,173, 59,142,254,111,159, 37, 49, 54, 45, 86,113, +169, 93,187,246,169, 79, 62,249,164,251, 31,127,252,145,216, 56,180,154, 64,145,244, 32, 95,170,214,104, 16, 84, 37,122, 72,143, + 94,151,241,232,244,161,163,114, 39, 47, 47, 79, 86, 35, 72,110,100, 24, 61,169, 34, 17,168,252, 21, 34,137,159,187,123,160,200, +104, 72, 83,187,187,139, 13, 6, 67, 54,128,172,178, 64,212,106,245, 62,137, 68, 18,194,178, 44, 88,150,133,151,151,151, 27,165, + 20, 26,141, 6, 65, 65, 65,202,136,136,136, 91, 2,129, 0, 12,195, 32, 63, 63,255,193,253,251,247, 59,151,151, 48,119,119,247, +125, 18,137, 36,132, 97, 24, 16, 66,192,178,172,237,224,130,245, 61,203,178, 32,132,160,160,160,192, 33, 76, 74,233, 37, 66, 72, + 84,116,116,180,141,108,237,217,179, 7, 93,186,116, 65,118,118, 54,174, 93,187,102, 79,178, 28,218, 54,180, 55,126,167,148, 66, + 36, 18,225,230,205,155,143,109,105, 91, 47,149, 74, 85,225,206,227,225,225,113,162, 79,159, 62,248,241,199, 31, 41,165,148, 0, + 80, 16, 66,234,187,185,185,221,188,126,253,186, 67,118, 48,148, 82,152, 76,127,255,212,218,198,237,251,151, 19,100,186,115,163, + 70,141, 72, 78, 78,142,149, 64,218, 22, 68, 44,203,226,187,239,190,147, 53,109,218,116,170, 84, 42,157, 40, 18,137,114,205,102, +243, 47,122,189,126, 14,165, 52,251,121, 26,148, 90,183,110,253, 65,124,124,252,107, 33, 33, 33, 59,158,130,196,211, 38, 77,154, + 24, 1,200, 88,150, 21, 86,194, 64,201, 22,181, 45,189,149,236, 83, 74, 45,141, 26, 53,210, 23, 77,242,172,163, 88, 94, 94, 94, + 63,237,222,189, 59, 40, 36, 36, 4,102,179, 25, 22,139, 5,249,249,249, 56,122,244, 40, 12, 6, 3, 44, 22, 11,194,194,194,240, +217,103,159,233,223,127,255,125,233,178,101,203,210,242,243,243, 7,148, 3,251,254,230,205,155, 21,254,254,254,178,194,194, 66, +196,198,198,162, 81,163, 70,200,203,203,131, 78,167, 67, 65, 65, 1, 76, 38, 19,114,115,115, 53, 28,199, 25,159,151,186, 22, 8, + 4,144, 72, 36, 16,137, 68,217, 33, 33, 33, 32,132, 72,227,226,226, 42,178, 21,167, 6,144, 43, 20, 10,197,246, 4, 75, 34,145, +224,204,153, 51,159,136,197,226, 18,181, 89,101,181, 31,103, 62, 63, 7, 19,249, 34,145, 72, 36,241,240,240, 16,217,205,211, 34, +165, 82, 9, 31, 31,159, 37, 0,186, 58,152,239,134, 30, 30, 30,182,241,189, 65,131, 6,136,143,143,223,150,147,147, 51, 40, 45, + 45, 13, 12,195,172, 99, 24,166,167,149, 7,100,101,101, 33, 56, 56,184, 97,105,120, 45, 27,249,143, 1,161, 54,141, 86,237,154, + 30,202, 98,243, 20,212,106, 53,238,223,191, 15,157, 78, 71,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210, +123,101,113,145, 23, 65, 42,100,163,101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122, + 1, 32,165, 17,173, 34,205,129,211, 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119, +108,249,217,247,203,207, 38,127,230, 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188, +111,189,239, 55, 31, 78,218,179,123,247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58, +204, 75,172, 36, 30, 10,169, 65,151,174, 4, 45,148,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190, + 29,102, 79, 36, 76, 38, 19, 52, 26, 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228, +214,173, 91, 97, 42,149, 10, 5, 5, 5, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78, +246,217,147,173, 61,123,246,160, 78,157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104, + 40, 70, 38, 37,217, 8,204, 34, 55, 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249, +253,247,223, 77, 28,199,137, 18, 19, 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197, +208,235,245,182,173,125,251,171,122,245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31, + 64,255,127,115, 32,250,225,135, 31, 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127, +252,241,199, 87, 0,194,157,197,243,246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170, +149,216, 90,203,218,108, 54, 39,228,228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86, + 28,133, 66, 33,218,180,105,147, 57, 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29, + 58,228,197,178, 44, 30, 60,120,128,204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223, +255,254, 55, 53, 63, 63,223, 17, 87, 15,109,154, 53,107, 22,146,157,157, 13,141, 70, 3,157, 78,135,243,231,207,163,118,237,218, + 72, 74, 74, 2,195, 48,208,104, 52,248,254,251,239, 11, 8, 33,218,231, 97, 2, 98, 89,214,166,117,178, 35, 71,250, 22, 45, 90, +224,200,145, 35,147,156, 33, 71,148, 82,163, 80, 40,124,140, 96,217,189,183, 56,155, 54,142,227, 68, 69, 54,162,196,145,207,207, +129,180,149,201,100,162,226, 95, 22, 20, 20,136,252,253,253, 91, 59, 65,124, 61,101,178, 71, 10,167,144,144, 16,228,228,228,112, + 70,163,177,223,186,117,235,204, 0,208,168, 81,163,126, 28,199,233, 45, 22, 11, 43, 22,139,161,211,233,224,227,227,227, 89, 42, + 32,131,143,183,255, 50,219,175,184,141,150,191,191, 63,162,162,162, 96, 48, 24,144,156,156,140,163, 71,143,154, 57,142,219,240, +195, 15, 63,240,222,222,222,195,222,120,227, 13,246,194,133, 11,239, 0,248,160, 44, 46,242,162,104,179, 74, 35, 91,214, 83,135, +109, 1, 28, 1,208,206,154, 73,251,173,195,178, 52, 89,197, 52, 90,164,156, 14,151,157,144,144,160, 80, 40, 20,182,239,204,102, + 51, 2, 2, 2,120,158,231, 73,241,231, 88,211, 81, 81, 17, 10,133,170, 41, 83,166,100,127,255,253,247,131,224,160, 65,249,166, +119, 34,177,182, 24,201, 90,250,229,204, 37,223,126, 57,219,227,238,222,213, 88,177,120, 1,199,113,184, 80,175, 94,189,214,249, +249,249, 2, 55,133, 25, 25,217,216,131, 71,126,180,168,131, 21,194, 0, 88,117,246,236,217, 11, 93,187,118, 61,185,234,215,173, + 30, 73,177,177,127, 74,114, 51,146,213, 53,195, 4,162,192,144,158,121,122,189,168, 95,191,126,222, 0,222, 40, 11,139, 97, 24, +196,198,198, 34, 46, 46, 14, 74,165, 18, 42,149, 10, 74,165, 18,106,181, 26, 42,149, 10, 42,149,202,233, 50,100, 24, 6, 28,199, + 97,203,150, 45,144,203,229, 80, 40, 20,143, 93, 86,146,245, 52,117,211,165, 75, 23,104,181, 90, 40,149, 74,219,118,167, 51, 98, +181,209, 50, 26,141, 48, 26,141, 48,153, 76, 28, 0,161, 64, 32,192,240,132, 4,155,150,199, 25, 2, 83, 92,234,215,175, 79,255, +252,243, 79,156, 60,121, 18, 58,157, 14,223,126,251, 45,252,253,253, 59, 0,152,230, 44,150,157,145, 62,151,155,155, 43,204,205, +205,181,105, 7,133, 66,161, 77, 99,232,232,228, 32, 16, 8,108,171, 81,235,101,175,213, 98, 89, 22,190,190,190,240,243,243,195, +210,165, 75, 69,213,170, 85,123,237,223, 28,132,230,207,159, 95,115,209,162, 69, 43,215,174, 93,187,103,192,128, 1, 27,175, 94, +189, 58,212,205,205,237,202,225,195,135,103, 75, 36, 18,190,130,253, 59, 40, 41, 41,201,199,254, 43,158,231,229, 22,139,197, 70, +108, 11, 10, 10, 80,183,110, 93,135,241,174, 95,191, 46, 7,128,217,179,103, 11, 1,200,173,110, 67,172,152, 5, 5, 5,194,218, +181,107, 7, 57, 72, 10,110, 17, 66, 90,119,234,212,233,212,129, 3, 7,220, 67, 66, 66,144,152,152,136,196,196, 68,212,172, 89, + 19,115,231,206,213,229,230,230,182, 44, 34, 87,191, 59,152,237, 0,119,119,119,225,195,135, 15, 97,177, 88,208,176, 97, 67,124, +255,253,247,232,215,175, 31,234,214,173,139,220,220, 92, 92,191,126, 29,107,214,172,113, 23,137, 68,111,252,219,147, 79,209,214, + 86,169, 87, 69,196, 98,177,168,165, 82,105,174, 68, 34, 17, 91,237,179,142, 30, 61,234,180, 54,203,126, 1,232,204,231,231,129, +180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177,142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197, +139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228,114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10, +245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163, 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111, +240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69, 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88, + 9, 14,165,244, 9,114, 85, 26,241, 42,154, 36, 72,121,157,142,101, 89,236,221,187,215, 70, 8,172,167, 14, 41,165,168,108,162, +229,233,233,169,107,214,172,153, 58, 62, 62,254,231,138,106,178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50, +180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173, 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185, +235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30,156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87, + 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249, 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42, + 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123,224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58, +131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4, 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212, +235,245, 8, 9, 9,129, 94,175,135, 78,167, 43, 0, 32, 89, 87,173, 26, 0,224,157,204, 76,156,255,223,255,112,122,222,188, 10, +181,163, 6, 13, 26,208, 51,103,206,224,202,149, 43, 48, 24, 12, 24, 49, 98, 4,138,182, 13, 1,224, 21, 39,242, 28,234,231,231, +215,165,107,215,174, 1, 0,160,211,233,200,217,179,103, 33,149, 74, 65, 8, 65,114,114, 50,118,236,216,129,196,196, 68, 16, 66, +224,238,238, 30, 68, 8,169, 70, 41,189, 95,198,196, 64,238,223,191,143, 47,190,248, 2, 60,207, 99,210,164, 73, 8, 11, 11,179, + 17,172, 7, 15, 30, 96,246,236,217,224, 56, 14,159,127,254, 57,106,214,172, 9,179,217, 44,117,198, 79, 89,101,203,132, 9, 19, +238,110,219,182,109, 79,124,124,252,171, 95,126,249,101, 91, 66, 8, 63,113,226,196, 47,212,106, 53,247, 52,184, 89, 57,121,184, +121,231,129,141, 8, 21,191,188,189, 60,156,198,187, 29, 27,111,251,127,142,179,199,227,224,233,225,238,108, 18, 11,204,102,179, +174,103,207,158,154, 45, 91,182,144,154, 53,107,226,222,189,123,214,197,105, 65, 5, 92, 58, 36,106,181,218, 48,150,101, 69,119, +238,220, 65,213,170, 85,209,172, 89, 51,204,153, 51, 7, 25, 25, 25,176, 88, 44,240,241,241,225,205,102,243, 69,163,209,120,236, +223,158,120,236,181, 78,246,215,209,163, 71, 39,137,197, 98, 10,224, 12, 0,167,136, 54,165,212, 88,165, 74,149,226,216, 22, 60, + 39,242, 44, 79, 50,250,251,251, 31, 85,169, 84,175,101,101,101, 61,166,213,106,217,178,165,201,215,215,247,184,163, 56, 74,165, + 50,139,101, 89, 79, 0, 72, 76, 76,132, 66,161, 16,197,198,198,206, 35,132, 76, 6,128,106,213,170,205,211,106,181,162,106, 69, +227,169,159,159, 31,140, 70, 99,169,102, 44,167, 46,166,172, 6,176,218,110,238, 77,206,201,201,145, 45, 88,176, 32,127,222,188, +121,133, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90,181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145, 23, 73, +202,212,104, 21, 49, 73, 90,194, 63,149,168,201, 42,137,108, 57,162,149, 32,132,160,176,176,240, 49,237,136,245,212, 97, 73, 68, +171,104, 66,175,208,214, 97, 17,201,146,253,242,203, 47, 27, 22, 47, 94,124,210,209,255,179,183,209, 90,246,213,172, 47,173, 36, +235,242,201, 3,248, 61, 38, 39, 99,210,188,133,139, 42, 90, 9,181,189, 21,245,253,124,189,142,252,111,238, 76,245,221,189,107, +176,113,217,215,244,242,185,115, 77,207,157, 59, 55,104,220,184,113, 85,138, 26,150, 22,192, 95, 0,250, 58,114, 74, 39, 61, 61, +253, 49,251,168,176,176,176, 91, 26,141,198, 87, 42,149, 34, 54, 54, 54,255,218,181,107, 78,111,201, 20,199,172, 36,166,255, 24, +201,186,118,237, 26,218,183,111, 15, 0, 56,113,226, 4, 90,182,108,233, 20,217, 50,155,205,217,181,106,213,178,105,183,114,114, +114,120, 0, 24,149,156,140,229,254,254, 16, 8, 4, 56, 61,111, 30, 62, 53,155, 49, 71,232,156,233, 78,195,134, 13,233,185,115, +231, 16, 23, 23, 7,139,197,130,238,221,187,219,147, 44,103,242, 92, 55, 50, 50,242,224,225,195,135,189,149, 74, 37,116, 58, 29, +242,243,243, 49,100,200, 16,244,235,215, 15, 6,131, 1,155, 54,109,194,246,237,219,161, 82,169,160,211,233,160,211,233,220,163, +163,163, 79, 17, 66,218,148,102, 91, 72, 41,165,157, 59,119,198,241,227,199,193,178, 44,154, 54,109,138,204, 76,219, 97, 32,248, +250,250,150,116,143, 45,234,239,255,202,132, 36, 16, 8,232,209,163, 71,191,108,219,182, 45,226,227,227, 95,109,212,168,209,183, + 67,135, 14, 77,124, 90, 92,119, 55, 21, 26,212, 14,133,193, 96,128,193, 96, 64, 64, 64, 0,242,242,242,112,247,238, 93, 24, 12, + 6,248,250,104,156,198,139,170, 91,211,134,231,227,227, 3,157, 78,135,251,247,239,195,104, 52,194,203,203,221,153,250, 15,238, +220,185,243, 31, 27, 54,108,240, 92,179,102,141,177, 93,187,118,226,111,191,253,150,168,213,106,164,165,165, 85, 52,203, 71, 79, +156, 56, 17,210,169, 83,167,136, 27, 55,110,224,232,209,163, 48, 26,141,136,138,138,194,237,219,183,209,162, 69, 11,228,231,231, +159, 57,119,238,220,246,231, 97,226,177,110,235,217,105,158, 62,213,104, 52, 38, 0,139,158,166, 45, 62,124,248, 80, 82,191,126, +125,131, 84, 42, 21, 23,145,182,133,255, 86,219, 46,161,222,159,234, 36, 99, 89,226,231,231, 55,222,203,203,171, 83,245,234,213, +145,154,154, 42, 18,139,197,104,217,178,165,169, 73,147, 38, 38, 63, 63,191,119,156,168,151, 27, 34,145,168,205,163,197, 4,135, +135, 15, 31,130, 82, 58,169,110,221,186,239,231,229,229, 33, 51, 51, 83,172, 86,171,109,139,234,136,136, 8, 24, 12,134, 27, 78, +144,205,153, 85,171, 86,157, 42, 18,137,230,164,167,167,255, 80, 66, 25,137, 27, 52,104,160, 22,137, 68, 48,153, 76,143,145,205, +146,184,200,139, 76,178, 30, 35, 90,118, 44,178,184, 58,189,220,109, 67, 71,109,180, 8, 33, 48, 26,141, 80, 40, 20,182, 45, 41, +123, 79,240, 37, 17,173,138, 72,112,112, 48,154, 53,107, 38,219,184,113,227, 79, 11, 22, 44, 56, 85, 17,140,205, 27,214,251,187, +241, 5,193, 73,103,118,227,214,149, 11,216,118, 61, 59, 99,210,188,133,239,189,254, 70,255,212,226,196,108,211,232,242,241,194, +125, 20,117, 3,125, 61,143,124, 53,127,158, 90,123,227, 52,146, 83, 82,176,251,204,185, 11, 70, 74,175, 3,152, 84, 89,149,109, +127,122,173,162, 36,245, 25, 12, 60, 54,247, 14, 25, 25, 25,184,126,253,186,149,100, 69, 1, 64,171, 86,173, 46, 90,201,214,133, + 11, 23,208,168, 81,163, 39,220, 59, 60,161,121,200,202,154, 91,236, 25,157, 0,120, 89, 9,191, 64, 32, 64,203,169, 83,157, 38, + 89,132, 16,202,113, 28,180, 90,173,117,165, 88, 33,146, 85, 52, 40,126,116,248,240, 97,239, 85,171, 86,229,174, 93,187, 54,147, +231,121, 97,131, 6, 13,130, 26, 55,110, 76,214,173, 91, 7, 0,232,219,183, 47, 38, 77,154,132,107,215,174, 65,161, 80,160, 85, +171, 86,220,244,233,211,125,198,143, 31,255, 14, 30,249, 73,122, 66, 56,142, 19, 85,171, 86,237, 16,128, 14, 55,110,220, 0,128, + 83,148,210,150,214,251,101,221,115, 64,248,188,188, 60,161, 74,165, 42,209, 53,132,232,209,177, 78,103,183,250,108,152, 39, 79, +158,252,226,171,175,190,218,246,225,135, 31,222,121, 74,204, 18, 53, 90,175,189,246, 26, 10, 13, 38, 36,164,230,128,227, 44, 40, + 52,165, 57,141,103,175,209,122,237,181,215, 80,160, 55,226, 97,178, 22, 22, 11,135,188, 66,139,163,237, 72,254,242,203, 47,239, +251,229,151, 95,252,254,252,243, 79,112, 28,199,223,190,125,251,126,207,158, 61,213, 19, 39, 78,244,180,179, 65,117, 86, 22,247, +239,223,191,247,201,147, 39,181, 17, 17, 17, 30,103,206,156, 65, 90, 90, 26, 44, 22, 11, 58,116,232, 0,177, 88,252,112,222,188, +121, 34, 0,139,159, 23,162, 37,145, 72,112,246,236,217, 74, 33, 88,246, 34, 22,139, 43,188,253,248,162,202,153, 51,103, 18,199, +141, 27, 87, 91,173, 86, 47,106,221,186,117,123, 79, 79, 79,198,221,221,253,104, 96, 96,224,251,245,235,215,119,120,119, 65, 40, + 20, 14, 85, 40, 20,119, 45, 22, 11,155,159,159, 15,157, 78, 7, 0,176, 88, 44, 98,134, 97, 80,173, 90, 53,155,242,164,105,211, +166,240,243,243,227, 98, 98, 98,134, 58,138,159,150,150,246,216, 41,196, 18,100,116,203,150, 45, 5, 6,131, 1,113,113,113, 39, +236,111,148,198, 69,158,119,169, 80, 80,105,134, 97, 64, 41,133,180,113, 99, 36, 31, 56,128, 45, 91,182,148,249,144,101,203,150, +161,184,170,175,120,116,111,235,233,194,145, 35, 71,218,126,115,225,194, 5,155, 81,124,247,238,221, 31,195, 60,123,246,236, 19, +100,203,145,136,225,105,105,105, 55, 54,109,218,116,110,254,252,249,103, 28, 44, 32, 27,166,213, 70,171,247, 91, 3,147,151,124, +241,217,213,181, 59, 14,215, 77, 46,164,201,147,230, 45,252,176, 56,201,114, 20,179,150,159,178, 86,144,143,231,209, 5,243,231, +185, 89,181, 99,191, 92, 76,201,129,133,142,118,178, 34,203,205,187,189,102,145, 16,194, 87, 6,102, 5, 26,220, 99,152,246,238, + 29,146,147,147,109, 36,203,206, 97,105, 84,171, 86,173, 46, 22,145, 44,235, 61, 75, 69,210, 41, 16, 8,240, 97,126, 62, 4, 2, + 1,218,205,152,129, 14,179,102, 57,157,119,142,227, 32, 16, 8, 16, 22, 22,230, 52,201,178,199, 36,132,180, 44, 40, 40,192,154, + 53,107,242,238,220,185, 19, 90,189,122,245,241,171, 87,175, 94, 40,151,203, 31,251,159,130,130, 2,188,254,250,235,248,225,135, + 31,208,185,115,103,243,208,161, 67, 37, 12,195,116, 42, 43,157,113,113,113,163, 59,118,236,184, 76,175,215, 11, 50, 51, 51, 71, + 59,122,175,188,188,111,218,180,233, 78, 88, 88, 88, 91,148,238,194,129, 7,240,231,211, 96, 46, 90,180, 8, 0, 34,158, 6,179, + 52,141,214,175,191,254, 10,158,231, 17,236,167,129,193, 96, 64,241,178, 46, 15,179,184, 70,107,227,198,141,224,121, 30, 85,252, + 61, 96, 52, 26, 97, 53, 32, 46, 15,211,211,211,243,235,181,107,215, 6,197,196,196, 32, 33, 33, 1, 11, 23, 46,124,144,157,157, +221, 53, 59, 59, 91, 50,125,250,244, 35,111,189,245,150, 47,207,243, 6,103,251, 38,165,212, 64, 8, 25,250,210, 75, 47,173,155, + 61,123,246,189,200,200,200, 42, 45, 91,182,212,100,102,102,166, 95,186,116,233,254,178,101,203,148, 22,139,101,104,105, 91, 82, +255, 68,127,183,151,196,196,196, 25, 69,218, 84,167, 8,150, 35,233, 60,123,246,236,148, 34,236,115,142, 96,255, 83,121,127,218, +147,140,229,165,243,187,239,190, 75, 64, 49,255,104,206,166,243,236,217,179,113,157, 58,117,154,229,235,235, 59, 93, 42,149, 34, + 61,253, 81,176, 3,171,230,209, 58, 95, 55,110,220, 24,157, 59,119,198,173, 91,183,102, 77,157, 58, 53,238,105,202,179,104,193, + 29, 10, 96, 80,199,142, 29, 39,246,238,221, 27,223,125,247, 29, 40,165, 43,255, 11, 36,184,220,160,210,209,209,209,196,254, 21, + 0,204,102,115,252,221,187,119,253,107,102,101,177, 1,132,160,105,211,166,176,143, 81,104,181,219,177, 26,212, 29, 59,118,204, +194,243,124,153, 62,171, 56,142,139, 63,121,242,164,239,129, 3, 7,132,214, 10, 45, 50,234,228,147,146,146,152, 35, 71,142,216, +180, 99, 2,129, 0, 71,143, 30,181,152, 76,166,135,206,102,248,214,173, 91,149,178,154, 59,118, 45,238,253,125,187,127,243,106, +222,172,117,182,218,195,163,196,142,108,245, 32, 95,102, 3, 19, 48,115,190,156, 59, 83, 99, 37, 89,191, 94, 76,201,214, 27,184, +246, 55,210, 11, 46, 87,118,101,231,229,229,197, 89, 79, 23,230,231,231, 63,124,142, 26,225, 37, 66, 72,148,191,191,255, 69, 20, + 59, 93,104,189,215,168, 81,163, 39,238, 57,165, 54,225,121,184,185,185,217, 6, 9,103,237,178, 8, 33,212,186,149, 93,148, 46, +242,148,121, 62,121,245,234,213,170, 67,134, 12, 81,133,133,133,197, 18, 66,132,195,135, 15, 55,249,249,249,137, 78,156, 56, 97, + 6, 64,218,182,109, 43, 72, 73, 73,161,137,137,137,218,110,221,186,229,141, 28, 57,210,243,175,191,254, 18,243, 60,127,176, 28, +236,123, 0, 58, 58,123,175, 60,233,221,187,119, 44, 74,112, 28,250, 52,242, 44, 48,173,162,205,206, 69,108, 92, 98, 81,172, 75, + 30,220,131, 84,155, 93,149,217,108,129, 54, 55,211,105,141,214,221,251,137, 69, 33,199, 56,112, 92, 82, 17,222, 35,131,120,154, + 85,224,136,182,160,213,162, 69,139,186, 50, 12,195,156, 62,125,218, 48,127,254,252,248,244,244,244,238,148,210,135, 69,237,172, +221,154, 53,107,126,114,192,149, 67,105,117,127,157, 16,210,226,227,143, 63,126, 15, 64, 43, 0, 85, 0, 60, 4,112, 2,192,226, +231,204,131,249,194, 23, 20,187,194,242,162,156,100, 60,120,240,224,140, 30, 61,122, 8, 66, 66, 66, 62, 9, 9, 9, 97,178,178, +178,144,159,159, 15,134, 97,224,231,231,135, 58,117,234,192,207,207,143,191,113,227,198,220,143, 63,254,184, 92,159,124,181,107, +215, 14, 53,155,205, 53, 24,134, 9, 5, 16, 74, 41, 13, 37,132,132, 2,240, 40,210,140,169,171, 86,173, 42,104,222,188, 57,154, + 53,107,134, 35, 71,142, 96,243,230,205,171, 41,165,251,236,181, 89,197,185,200,243, 32,215, 27,147,182,132,199, 17,202,160, 93, +237,243,244,232,141, 40, 66,107, 93,124,114,126, 40, 55,168,244, 19, 3, 78, 86, 86,231,174, 93,187, 30, 96, 89,182, 90, 73, 19, + 87, 9,193,159,227, 82, 83, 83, 95, 45,115, 16,203,202,234,252,254,251,239, 31, 96, 89,182,154, 85, 83,101,177, 88, 12, 90,173, +246,237,118,237,218,125, 47, 20, 10, 37,246,184, 60,207, 63, 72, 77, 77,253, 71, 99,245, 21,247,163,213,185,107,143,140,167,197, + 84,138,152, 26,183,118,253,136,212,180, 12,252,122, 49, 37, 43,207,200,181,187,149,174,187,250, 44,210, 31, 23, 23,215,229, 57, +102,252,151, 74,219, 18, 44,235,158,131,146,238,128, 67,210,244,114,210, 71,138,200, 86,165,116,242,148,148,148, 5, 83,167, 78, +125,101,238,220,185,222,123,246,236, 81, 23, 61, 3,189,122,245, 74,187,122,245,106,107, 0, 18,189, 94,127,112,238,220,185,222, + 51,103,206,244, 4,224, 89, 52,200,164,166,166,166, 46,129, 75,202, 20,179,217,156, 80,167, 86,132,181,238, 30,115,233, 96,255, +222, 98,177, 36, 56,131, 87, 18,142,253,103,142,227, 18,202,209, 42,127,216,172, 89, 51,246,195, 15, 63, 76,221,179,103,143, 53, +144,110,129, 93, 59,187,133, 50,156,146, 58,216,151, 12, 0,230, 23, 93, 46,121, 14,199, 58,103, 62,255, 91,242,219,111,191, 77, +235,215,175,223, 26, 15, 15,143,245,161,161,161, 17,190,190,190,106,153, 76, 6,131,193,144,103, 52, 26,111,222,186,117,107,192, +212,169, 83,239, 57,130,181,102,205, 26, 22,128,136,231,121, 41,195, 48, 10, 0,106, 66,136,187,149,104, 17, 66, 96, 50,153, 16, + 23, 23,135, 79, 63,253,148, 59,116,232,208,255, 0,124,238, 68,114,155, 0,240,182, 27,199,189, 1, 24,241,200,129,109,122,145, +102,243,153, 8,225,113,164,214, 69, 74,110, 68,145, 82,141,244,203, 13, 42, 93, 74, 67,209, 1,104, 81,201,141,175, 44,204,144, +231,165,147, 12, 54,204,255, 25,203,230, 63, 22,231,208, 74,194, 74,252, 92,206, 6, 96, 78,161,101,220,226,125,215, 22, 24, 44, +148, 55, 89,248, 97,183,210,116,215,255, 31, 15, 64,150,138,220,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37,132,188, 52,110, +220,184,105,114,185,188, 41, 0, 20, 20, 20,156, 78, 74, 74,154,101, 61, 85, 88,222,125,151,148,193,154,211,211, 27, 63,143,120, + 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214,121,185, 79,159, + 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1,232, 0,228,226,145,195,109, 2, 0, 58,157, 46, 43, + 41, 41,233, 6,199,113, 55, 0,252, 84,129, 19,183,222,132,144,157,148,210,215,138,198,206,157,148,210,215,236,191,123,214, 98, + 71,182, 74, 26,239,203, 55,134,119,201, 35,217,116,237,239,137,182, 56,129, 42,239,115,105,114, 51, 37,255,232,211,174, 96, 93, +242,194, 18,203, 88, 0,131, 43,122,223, 37, 47,100,157, 63, 4,208,221, 85, 18, 46,121,225,230,191, 10, 16, 44,171, 92,191,126, +253,153,153, 8,252,219, 98,191, 77, 88,210,150,161, 85, 74,210,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 89, + 36,178,200, 70,203, 70,162,138,108,181,138,147, 44,123,114,101,255,153, 0,232, 84,202,170,204,153,211, 4,157, 42,176,234, 59, +232,194,116, 97,186, 48, 93,152, 46, 76, 23,166, 11,243,255, 23,102, 5, 37,186,156,173,195, 93,207,138,104, 89,141,223,175, 71, +145,233,181, 47,210,233, 37, 25,195,151, 69,180, 30, 51,246,172,236, 11, 64, 39, 23,166, 11,211,133,233,194,116, 97,186, 48, 93, +152, 46,204,167,188,218, 79,158, 60,121, 10, 30,197, 63,166,147, 39, 79,158, 66, 41,141,126, 68, 99,104,244,179,124,246,181, 70, +104,123,189, 33,168,245,186,214, 8,109, 75, 41,147, 81,214,203,254,123,215,214,161, 75, 92,226, 18,151,184,196, 37, 46,121,222, +229,212,188,121,243, 10,230,205,155,103, 53,124, 79, 7, 64,138,180, 89,233,207,242,193, 69,219,132,229, 30,148, 42, 55, 4,207, + 63, 45,132,144, 0, 70, 32, 26, 40, 20, 73,218,131,242,117, 0, 0, 12,123,141, 51,234,255,176, 88, 76,235, 41,165, 73, 21,197, +174, 69, 72,173,154, 26,217,118, 3,199,137,226,243,140,189,111, 80,122,182, 34, 56,125, 8,105, 41, 17,139,247, 75, 52,154, 18, +189, 20, 26,178,179, 11, 13, 70,227, 43,155, 40, 61,233,234, 3, 46,113,137, 75, 92,226,146, 23, 65, 8, 33, 10,119,119,247, 67, + 12,195,132,216,125,135,146,222, 3, 0,199,113,201, 90,173,246, 21, 74,105,198, 63,137, 89, 76,140, 0,206, 62, 15,229,231,236, +214,161, 0,120, 44,182, 80,185, 17,179, 35,253,149,173, 35, 66, 67, 54, 36,165,164, 94,204,213, 27,135,223, 76,204,211, 58,155, + 72,129, 72, 58, 82,227,229, 55,231,205,161,239,123,134,133, 71,144,224,224, 64,128, 2, 15,227, 19,124,239,222,185,221,113,227, +218,197, 19, 68, 82,233,167, 38,189,254, 71,167,153, 39, 33,138, 16,165,228,196,143,147,223,210, 8, 96, 65,255,217, 27,246,214, + 38, 36,248,250, 35,215, 18, 78,145, 44,141,167,231,190,121, 7, 15,202,220,139, 28,128,218,177,214, 71,241,245, 46, 95,150,125, +242,202, 43,251,250, 16,210,217, 69,182,254,147,131,145,159, 90,173, 30, 47, 20, 10,219,153, 76,166, 16,177, 88, 28,207,113,220, +209,172,172,172, 69,148,210, 68, 87, 9,185,196, 37,229,246,161, 82, 3,153,255,155, 65,206, 1, 64,165, 82,157,103, 24, 38,200, +158, 4, 88,253, 59, 22,247, 19,105,231, 47,242, 94,102,102,230, 75,101,228, 55,212,195,195,227,123, 0, 77,202,115,152, 92,180, +213,116, 78,171,213,190, 93,116,250,184, 36, 60,149,187,187,251, 12, 66, 72, 31,134, 97,202, 13, 40,204,243, 60, 71, 41,221,148, +149,149,245, 57,165, 52,175,180,223,185,187,187, 31,140,137,137,105,226,227,227, 83,174,150,198, 98,177,224,225,195,135,222, 77, +155, 54, 61, 6, 32,242, 89, 98, 58,195, 69,254, 77, 41,235,228, 97,137,156,199,250,198,209,136,217, 60,143,129,171,230,188, 29, +152,252,224, 78,224,232,185, 63,135, 71,122,201,219,197,100, 20,164, 56,250, 64,177, 76,181,189, 85,135,215,218,143,125,239, 67, +197,165,171, 55,177,255,200,159,200,213, 25,192, 50, 12, 52, 42, 57,194,195,107,144,133,203,183,120,173, 94,186,240, 43,153, 82, + 19, 93,152,159,221,205,153, 12, 41,228,130, 79, 39,245,108,170,240,244,224, 0,158,195, 71, 93, 27, 40, 62,217,121,241, 83, 0, + 83,156, 38, 89,135, 14,201,211, 82, 83, 49, 51, 32, 0, 2,139, 5, 82,134,129,148, 16, 72, 25, 6, 10,169, 20, 93, 86,174,196, +172, 61,123,228,211, 94,125,213, 69,182,254, 99,162, 82,169,134,134,135,135,207, 95,177, 98,133,103,245,234,213,161, 80, 40,160, +213,106,189,110,221,186,213,240,131, 15, 62, 24,236,230,230, 54, 53, 39, 39,103,153,171,164, 92,226,146, 82, 73, 71, 67, 0, 37, + 6,137, 47,235,222, 63, 37, 12,195, 4, 37, 38, 38,250,200,229,114,112, 28, 87, 20, 13,128,183, 45,164,237, 35,229, 20, 57,170, + 69,100,100,164,169,156,113,227,187,180,180,180, 78,246,161,208,202,138,184,147,152,152,216,169,118,237,218,223, 1,120,165, 20, +242, 50,227,189,247,222, 27, 95,183,110, 93,171, 22,168, 40, 10,194,163,215,140,140, 12,140, 27, 55,206,246, 12,158,231,113,224, +192,129,247,134, 14, 29, 10, 0, 31,148,145,247, 16, 31, 31, 31, 50,122,116,217, 62,138,166, 79,159,142,233,211,167, 99,241,226, +197, 68, 40, 20,106,202, 41,207, 74,193,116,148,139,252, 27, 26,172,226, 30,226,139,253,108, 87,177,120,135,187,158, 32, 90, 14, + 55, 78,202,239,158,189,104,197,240,153, 67, 90,145, 85, 31,116, 10, 27,179,248,224,159,181, 3,100,109,174, 39, 21,198, 59,160, +201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,111, 26,191, 50, 20, 41, 25,121, + 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190, 96,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35, 76,148,221,130, +159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133,214,102, 51,124, + 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157, 38, 91,114,185, +124,117, 97, 97,225,151, 21,112,220,246,111, 14,158,225, 42,149,234,211,220,220,220,129,207, 81,154,252, 1,164,151, 16, 31, 81, + 4, 64, 67, 41,117, 42,178,176, 84, 42, 29,217,191,127,255,133, 75,150, 44,145,167,166,166, 34, 41, 41, 9, 28,199, 65, 42,149, + 34, 44, 44,140, 28, 60,120,208,115,210,164, 73, 11,212,106,181, 36, 55, 55,247, 27, 39,210,201, 8,133,194, 33, 30, 30, 30, 61, +124,125,125,125,210,211,211,211,179,178,178,118, 24, 12,134, 85, 21, 93,217, 23, 97, 14,168, 90,181,106,143,128,128, 0,223,196, +196,196,140,132,132,132,237, 6,131, 97, 53,165,148,127,202, 50,173,143, 34,111,245, 0,146,171, 86,173,122,237,254,253,251,105, +149,136,153, 84,181,106,213,235,206, 98, 18, 66, 20, 0, 54, 2, 8, 40,231,167, 73, 0,250, 82, 39,181,217, 46,169, 60,146, 85, + 20,210,234, 49, 66, 85,214,189,127, 90,100, 50, 25,126,249,229, 23, 8,133, 66, 8,133, 66,100,101,101, 33, 40, 40,200,246, 89, + 36, 18,217,222, 87,169, 82,165, 92, 60,142,227,154,178, 44,139,252,252,124,112, 28,103,187,178,179,179, 65, 41,133, 68, 34, 1, +199, 61, 10,231,100,119,191,105, 25,229,216, 39, 32, 32, 0, 63,255,252, 51,140, 70,227, 19,247,213,106, 53,174, 94,253, 59,200, + 8,203,178,104,214,172, 25, 67, 8,233, 83, 22,209, 34,228,145,211,205, 81,163, 70,129,101, 89, 91, 72, 61,235,123,235,197,113, + 28,166, 79,159, 14,251,208,100,255, 36,230,115,215,174,203,240, 16, 79, 41, 77, 6, 80,162,141, 22, 83, 22,104,164,159,242,237, + 9,111,189, 92, 48,117,120, 52,253,100,240, 43,244,227,183,218,209, 87,219,212,251,141, 21, 8,200,153,235, 15, 17,228, 6,172, + 30,215, 36, 36,216, 75,113,181,174,167, 42,188, 4,213,168,125, 64,233, 0,185, 66,253,197,219,239,127,164,220,117,236, 10, 30, +198, 63,124,130,100, 1,192,249,253,171,145,156,148,136,139, 49, 9, 24, 48,236, 29,165, 90,173,249,130, 16, 18, 80, 18,102,113, +113, 83,137,254, 55,185,111, 43,105,190, 57, 9,121,238, 0, 27, 42,134, 80,174,195,164,215,234, 75,212, 42,209,252, 50, 84,184, + 54, 76,137, 88,188,127,222,193,131, 54,146,213,210, 96,128,132,227, 96,225, 56, 27,201, 50, 90, 44, 40, 52, 26,225,159,159,143, +187, 67,135,130,154,205,152,186,109,155, 92, 34, 22,239,119, 36,157,118, 43,128,174,106,181,250, 8, 33, 36,220,145, 74,126, 22, + 71,102,157,116,227, 17,174, 82,169,142, 16, 66, 94,125, 30,210, 73, 8, 97, 8, 33,179,135, 15, 31,126,161, 70,141, 26,135,139, +136,149,245,158,160, 70,141, 26, 7,135, 15, 31,126,137, 16, 50,157, 16,194, 56,136, 25, 24, 16, 16, 48,103,201,146, 37,242,219, +183,111, 35, 49, 49, 17,102,179, 25,253,251,247, 7,199,113, 40, 44, 44,132,209,104,196,151, 95,126,169,240,244,244,252,148, 16, + 18,226, 72,222, 9, 33,172,155,155,219,154,181,107,215,142,186,127,255,190,223, 31,127,252,193, 92,185,114,197,247,171,175,190, + 26,234,233,233,185,174, 40,224,170, 83,229, 73, 8, 97,252,253,253, 87,253,254,251,239,111, 95,189,122, 53,104,235,214,173,194, +211,167, 79,251, 47, 93,186,116,132,191,191,255, 58, 66, 8, 91,145, 58, 34,132, 52,148,203,229, 29, 39, 78,156,200,159, 58,117, + 42,241,212,169, 83,137, 11, 23, 46, 68,235,214,173, 91,206,154, 53, 43,170,130,152,141, 84, 42, 85,135,137, 19, 39,242,199,143, + 31, 79, 58,115,230, 76,194,130, 5, 11,152, 14, 29, 58,180,154, 59,119,110,125, 39, 49, 55,158, 58,117,170,109,124,124,124,245, +132,132,132,106, 9, 9, 9, 85, 19, 18, 18,170, 38, 38, 38,134, 36, 39, 39, 87, 73, 73, 73, 9, 78, 75, 75, 11, 62,122,244,104, + 43, 0, 27,158,183,126,244, 95,199, 44,106,203, 23, 41,165,208,106,181,216,181,107, 23,138,180, 87, 13,237, 73, 86,110,110, 46, +146,147,147,173,247, 4,255, 66, 58,193,113,156,141, 72, 29, 56,112, 0,195,135, 15,135, 86,171,181,125, 39, 16, 8,108,239,173, +255, 83, 30,166, 85,243,196,113, 28,206,156, 57,131,209,163, 71, 99,225,194,133,216,176, 97, 3,118,238,220, 9,173, 86,107, 35, + 91, 22,139,165, 92,204,140,140, 12,240, 60,239,104, 30,145,147,147,227,112,189,219, 19, 32,129, 64,240, 4, 41,178, 94,206,180, +165,167,193,124,158,165, 52,143,240,142,136,173,113, 23,169,234,218,217,223,140,168,234,247,233,252,241,125,100,224, 76,160,230, + 66,192, 84, 0,152,242,193, 27, 11, 64, 68, 50,192, 92, 8,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117,244,141, +244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44,131,179, +251, 30, 41,174, 24,150, 69,142,206,128,236,124, 19,122, 15, 25,239,241,227,194,207, 6, 0,248,178,172,140,212, 35, 36,172, 69, +128, 71,207,218,181,171, 48, 55, 36, 49,136,122,245, 4, 56, 30,160,199, 95, 71,195, 44, 31, 54,114,191,184,103, 61, 66,230, 92, +161,244,118, 89, 56, 18,141, 70,230, 94,191, 62,102, 6, 4,160,141,217, 12, 17,165,120, 57, 53, 21,151,199,143,135, 97,203, 22, + 48, 0, 68,111,188,129,246,139, 22,225, 88, 64, 0,252, 10, 11,145, 61, 97, 2,188,247,238,133, 72,173,150, 57, 83,248, 34,145, +200,180, 98,197,138,128, 17, 35, 70, 28, 33,132,180,123,158, 53, 91,132,144,112, 15, 15,143, 35, 95,124,241,133,239,180,105,211, +146, 43, 9,211, 87,161, 80,108,210,233,116,227,157, 93,209, 22, 17,167,217,203,150, 45, 27, 51,106,212, 40,205,136, 17, 35,232, +221,187,119, 53, 0,172,218, 17,239,214,173, 91,215, 88,177, 98,133, 95,147, 38, 77,222, 27, 61,122,180,136, 16, 50,181, 60, 45, +143, 82,169, 28,187, 98,197, 10,175,140,140, 12,228,231,231,219, 6,217,132,132, 4,200,100, 50, 91, 80,117,161, 80,136, 47,190, +248,194,115,236,216,177,227, 1,140, 47, 47,189, 18,137,100,200,247,223,127, 95,179,115,231,206,130,184,184, 56, 48, 12, 3,137, + 68,130,183,222,122, 75, 88, 80, 80, 16, 50,115,230,204, 81, 0,190,119,166, 12,132, 66,225,128,229,203,151,135,183,108,217, 82, + 16, 19, 19,131, 22, 45, 90,224,236,217,179,120,227,141, 55,132,121,121,121,213, 38, 77,154, 52,188,180, 21, 86, 89, 90, 39,185, + 92, 94,247,143, 63,254,136, 15, 14, 14,182, 13, 44,213,170, 85,227,162,163,163,181, 49, 49, 49, 17,127,254,249,103,102,139, 22, + 45, 30, 58,129, 25, 40,151,203, 35,119,239,222,157, 60,115,230,204,142,203,150, 45,235, 14, 0, 77,155, 54,221, 62,107,214,172, +195, 90,173,182,206,241,227,199,181,173, 91,183, 78,112, 16, 50,192,223,223,159, 27, 55,110,156,178,172, 31,173, 92,185, 50, 27, + 64, 21, 66, 72,245,162, 64,219, 46,249, 7,132, 82,106, 33,132, 68, 17, 66, 46,238,218,181, 11,205,154, 53,195,174, 93,187, 16, + 29, 29,125,209,158, 12, 92,189,122, 21,109,218,180, 1, 30, 5,146,255, 87,108,181, 56,142,131, 64, 32, 64, 66, 66, 2, 86,174, + 92,137,185,115,231, 34, 44, 44, 12,102,179,249, 9,178, 85, 68,136, 28, 82,193, 88, 44, 22,156, 59,119, 14,235,215,173,195,212, + 79, 63,133, 74,165, 2, 0,152, 76, 38,104,179,178, 32,149, 74,109,100,172,156,178,220,116,231,206,157,241, 65, 65, 65,143,109, + 25, 90, 95,139,198, 44,240, 60, 15,139,197, 2,189, 94,143,133, 11, 23, 90, 40,165,155,202,233,147, 54, 82, 52,126,252,120, 24, + 12,127,199, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,246,153, 97, 24,234, 40,230,143, 47,213, 69,161,221,175, 35,166, + 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101,223,184, +159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181,247,128, +253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135,201, 90, + 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16,174,240,111, 70,204,176, 16,176, 2,104,243, 10, 81,181,122, + 77, 70, 34,149,181, 47,143,104,169,221,132,223, 79,236,247,146, 52,211,146, 0, 89, 21, 41, 56,235,116, 26, 32, 6,227,153,135, + 15,187,132,201, 70,109,191,242, 61,128, 14,142, 20, 12,107,177,192,135,101, 97,162, 20,151,199,143, 71,212,242,229,184,104, 37, +134,203,151,227,226,168, 81,240, 16, 10, 33, 97, 24, 80,179,249,137, 61,125, 7, 39, 32,244,232,209, 3, 25, 25, 25,190,159,126, +250,105,133,201,150, 76, 38, 91, 79, 8,233, 42, 20, 10, 77,132, 16, 48, 12, 99, 11, 2,110,125,111, 50,153, 68, 44,203,238,206, +200,200,112,122,203,143, 16, 18,238,238,238,126,228,212,169, 83,190, 10,133, 2,211,167, 79,175, 20,146,165, 82,169, 78, 15, 31, + 62,188,202,250,245,235,247, 18, 66,186, 56, 74,182,138,147,172,229,203,151,103,175, 92,185,242, 71,251, 45, 66, 74,105, 50, 33, +100, 85,147, 38, 77,222, 30, 53,106,148, 6,192,152,209,163, 71,163, 60,178, 37,145, 72,218,133,134,134, 62,182,170,149, 72, 36, + 0, 0,133, 66, 1, 55, 55, 55,136, 68, 34, 24, 12, 6, 68, 69, 69, 17,177, 88,220,202,145, 52,171, 84,170,174, 61,123,246, 20, +156, 60,121, 18, 41, 41, 41,112,115,115,131, 66,161, 0,199,113, 24, 57,114,164,104,209,162, 69,175, 58, 75,180,130,131,131,187, +119,236,216, 81,112,237,218, 53,220,191,127, 31, 6,131, 1,183,110,221,130, 90,173,198,160, 65,131, 68,243,231,207,127,221, 89, +162, 5,160,238,168, 81,163, 82,237, 73,150, 85, 20, 10, 5, 9, 15, 15,215,122,122,122, 54, 2,240,208, 25,204,119,222,121, 39, +109,222,188,121,109, 14, 30, 60,248,177,245,203,131, 7, 15, 78, 2,128,111,190,249,230,184,183,183,119, 35, 0,142, 18, 45, 80, + 74,249, 55,223,124,243,129, 88, 44,134, 80, 40,132, 88, 44,126,236, 18,137, 68, 96, 24, 70,101,237,206,255, 85, 82, 67, 8,105, + 2,224,107, 60, 58,145,245, 41,165,244,204,115, 66,182, 46, 17, 66,162,162,163,163,109,100,107,207,158, 61,232,210,165, 11,178, +179,179,113,237,218, 53,123,146,245,111,217,104,129,231,121, 8,133, 66, 44, 88,176, 0, 38,147, 9, 63,253,244, 19, 54,111,222, +252,216, 24,170, 86,171,177,120,241, 98,167,182,185, 56,142,195,154, 53,107,240,241,164, 73, 54,146, 85,180,184,134,159,175, 47, + 60,189,188, 16, 27, 27, 91, 46,209,202,202,202,250,124,199,142, 29, 40,203, 24,126,199,142, 29,182,247,246,198,240, 14,205,115, + 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,123,175,213,106,193,178,172,181, 44,136,163,152,133, 20,232, 33,253, +251,187,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128, 93, 69, +219,137,101,219,104,221, 78,211, 45, 17,144,228, 6,243,198,189, 50,164,138,143, 27,104,126, 42, 68, 29, 62,199, 95,233, 50, 44, + 88,184, 27, 0,240,209, 91,141, 81,191,211,108, 24, 87,191,130,241, 45, 88,241,192, 4,195, 68, 0,211,158,236,120,124,100, 80, + 96, 0,254,186,123, 21, 2,150,133,216,205, 11,110, 30,190,224, 45, 70,228,164,221,199,145,173,223, 1, 0,150,173,217, 4,134, + 97, 32, 16,176, 48, 24, 57,132, 85, 9, 0,207,243,145,101,165,179, 54, 33, 47,245, 10,247,111, 22, 28,162, 33,215,220,239, 35, +220,199,243,241, 31, 52,148, 32, 44, 73, 73, 90, 40,101, 77,107, 19,242,210,117, 74, 79,149,171,129, 96, 24, 48,132, 64, 46, 18, +193,176,101, 11, 46, 22, 17, 44, 0,184, 56,106, 20,152,223,126,131, 74, 34, 1, 75, 8, 4, 69, 42,232,138,116,116, 0,136,136, +136,192,178,101,203,124,199,142, 29, 91, 33,178,165,215,235,231,168,213,234,142,171, 86,173,242,237,217,179,231, 19,247,239,222, +189,139, 54,109,218,164,166,164,164,204,121, 26,146,165,209,104, 16, 31, 31,255,212,251,234, 86,146,117,224,192,129,144,160,160, + 32, 68, 69, 69,121,127,244,209, 71,206,144,173,105,246, 36,107,244,232,209, 87, 0,248, 16, 66,138, 19, 21, 82,116,175,158, 29, +217,202, 1, 48,191,140,149,104,136, 66,161, 64, 90, 90, 26,134, 12, 25,130,219,183,255, 86,128, 6, 4, 4,216, 86,122,177,177, +177,240,246,246, 6, 33,196,199,145, 60,123,123,123,251, 26,141, 70, 12, 27, 54, 12,241,241,127,155, 51, 6, 6, 6, 90,203,212, +203,217,114,244,245,245,245, 45, 44, 44, 68,235,214,173,161,215,235, 1, 0,125,251,246,133, 80, 40, 68, 90, 90, 26,132, 66,161, + 87, 5,170,199, 43, 58, 58,186, 84,215, 42,106,181,218,228,238,238, 94,203, 73, 76,207,215, 95,127, 61,113,249,242,229, 79, 28, +108, 57,123,246,108, 55, 15, 15,143,131, 30, 30, 30,225, 78, 98,242,246,164, 74, 36, 18, 61, 70,180,132, 66, 33, 24,134,225,241, +223,151,255, 1,176,158,130,251, 1, 64,131,231, 72,179,101, 35, 91,123,246,236, 65,157, 58,117,144,149,149,133,152,152,152,127, +157,100,217, 17, 19, 8, 4, 2,219, 34, 89, 42,149, 34, 42, 42,202, 70,178, 8, 33, 40, 40, 40,128, 64, 32,176,142,215, 14, 13, +126,217,217,217,240,247,243,131, 74,165, 66,205,176, 48,220, 41, 26, 71,172,239, 37, 18, 9, 8, 33,176, 88, 44,229,149, 97, 30, + 30,217, 90,125, 80,217,213, 99, 37, 69,101,170,142, 3, 2,192,243,188,117,204,167,149,129,233,229,229,133,252,252,124, 71, 49, +159, 75, 41, 69,163, 21, 5,224, 34,128,104, 74,233,242, 34,195,248,199,220, 59,180, 5,112, 4,118, 71, 42, 9, 33, 76, 45, 95, +229,202,121, 99, 59, 14,121,165,142, 23, 10,211,239, 67,170,242, 2,209, 84,197,130,133,187,113,237, 94, 38, 0, 96,193,134,243, +248,121,102, 87, 64,230,129, 8,183, 12,248,169, 4, 61, 75, 34, 90, 4,148,240,148, 66,192, 50, 69,123,183, 44, 88,150,129, 54, + 61, 25,139, 62, 31, 83, 68,178, 54, 99,215,241, 24, 4,133,214,249,123, 31,151, 16,128,150,221,184,189,221, 68,203,199,246,106, + 46, 75, 37,201,208, 4,200, 33,149, 22,227,143,238, 34,144,170, 12,198,181, 11,146,159,219,161, 95, 14,160,220,137, 66,202, 48, +143,140,223, 9, 41,209,144,141, 41,186,199, 18,242,200,251, 43,239,252,152,110, 37, 44, 74,165, 18,190,190,190,152, 59,119,174, +239,228,201,147,127,130,147, 1,168, 41,165,183, 8, 33,237, 70,142, 28,121, 36, 51, 51,211, 55, 34, 34, 2, 74,165, 18, 74,165, + 18,169,169,169,232,221,187,119,106, 74, 74, 74, 69,181,101,235,134, 15, 31,238, 43, 18,137,112,247,238, 93,120,120,120,216, 8, + 98, 69, 73,150, 90,173, 62,125,240,224,193,144, 26, 53,106,224,230,205,155,168, 85,171, 22, 54,110,220,232,221,191,127,127,135, +200,150, 76, 38,235, 81, 68,156, 48,106,212, 40,205,168, 81,163,218, 2,104, 91,222,179, 71,141, 26,165,249,224,131, 15, 94, 47, +139,104, 9,133,194,120,173, 86,235, 39,147,201,176,117,235, 86, 40,149, 74,200,229,114, 4, 4, 4, 64,171,213, 66, 46,151,131, + 82, 10,179,217,108, 29, 44, 50, 29,201,119,122,122,122, 42,199,113,193,123,247,238, 69,122,250,223,190,245, 66, 66, 66,144,147, +147, 3,142,227, 50,156, 45,203,164,164,164, 84, 66, 72,240, 95,127,253,133,184,184, 56,116,233,210, 5,191,253,246, 27, 26, 55, +110, 12, 0, 48, 26,141, 21,113,226,199,177, 44, 75,203,168, 63, 2,192,189, 50, 49,139, 38, 47,167, 48,121,158,231,173, 36,203, +254,213,158,124,149,243,204,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177,106,180, +102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,188,111, 53,136, + 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195,117, 71, +234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46,143, 20, +169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5,124,221, +132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80,245, 58, + 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210, 30, 91, 79, 64,122,245, 10, 15,174,234,238, 41, 68,134,183, + 17,254,190,242,146,127,216, 72,133, 32,127, 49, 58,123, 74, 67,234, 9, 72,175,114,136,139,141,104,153, 44, 22,136,222,120,195, +182, 93,120,113,212, 40, 68, 45, 95, 14,174,123,119,232, 76,166,199, 84,197,206,138,181, 65, 90, 9,209,180,105,211, 82, 51, 51, + 51, 7, 84,112,245,120, 43, 43, 43,171,221,167,159,126,154,154,145,145, 1,185, 92,142,228,228,228,167, 34, 89, 0, 80, 88, 88, + 56,104,249,242,229,169, 71,142, 28,129, 82,169,132, 74,165,170, 48,209,178,106,178, 62,255,252,243, 42,193,193,193,136,141,141, +133,155,155, 27, 60, 61, 61, 81,191,126,125,156, 60,121,210, 59, 56, 56,120,111,145,193,108, 89,105,250,125,249,242,229,217, 0, +176,124,249,242,108, 66,200, 81, 66,200, 82, 66,200, 15,197,174,165,132,144,163,246,191, 45, 44, 44,220, 86, 22,182,209,104, 60, + 26, 19, 19, 67,229,114, 57, 88,150,133,201,100,130, 84, 42,181,213, 87,110,110, 46, 10, 11, 31,109,115, 95,184,112, 1,102,179, +249,132, 35,121,207,203,203,219,179,122,245,106,115,112,112, 48,234,213,171,135, 70,141, 26,161, 69,139, 22, 8, 9, 9,193,140, + 25, 51,140, 58,157,110, 79, 5,136,214,174,141, 27, 55,154,131,131,131,209,168, 81, 35, 72, 36, 18,212,175, 95, 31, 1, 1, 1, +152, 59,119,174, 49, 39, 39,103, 79, 5,170,233,225,213,171, 87,217, 50, 72,174, 26, 64,170,147,152,241,231,206,157, 99,155, 55, +111,190,189,248,141,166, 77,155,110, 87, 42,149,110, 0,156,181,251,163,246,228, 74, 34,145,216, 46,235,247, 2,129,224,255,131, + 70,107, 60,128, 43, 0, 98, 1,124,252, 60, 37,204,222,240, 61, 51, 51, 19, 49, 49, 49,184,112,225, 2,154, 55,111,142, 19, 39, + 78, 0, 69, 6,242,255, 98,250, 64, 41,133, 80, 40, 68, 68, 68, 4, 62,248,224, 3,236,222,189, 27,183,110,221,130,217,108,182, + 17, 33,171, 77,166, 51, 26, 45,145, 72, 4, 95, 95, 95,152,205,102,155, 54, 11, 0,238,220,190, 13,129, 64, 0,158,231, 97, 52, + 26,203,213,104,185,185,185,205, 88,177, 98,197,123, 25, 25, 25,254,233,233,233, 62,246, 87,106,106,170, 79,114,114,178, 79, 98, + 98,162, 79,124,124,188,207,131, 7, 15,124,238,223,191,239,255,229,151, 95,190,231,230,230, 54,195,209, 57,168,126,253,250,120, +231,157,119,108,215,146, 37, 75,108,215,145, 35, 71,156, 54, 94,103, 89, 22, 17,211, 23,160,107, 58,181, 93,187,189,137,237,186, +246,209,232,178, 48, 31,227, 34,207, 77, 91, 46, 58,109,104, 31, 88,186,132, 57, 56,153, 82,186,220,186, 93,104,239,188,180,184, + 49, 60, 0, 32,210, 79, 62,251,139,145,109,134,188, 92,203, 13,191, 31, 58,143,153,219,238,221, 12, 27,226, 29, 81,195, 61, 29, +124,122, 12, 62,122,171, 49, 22,108, 56, 15,224,209,214, 33,159,118, 13, 52, 43, 22, 84, 21,140,251,218,140, 18,183, 29, 44, 70, +253,225,123,119,111,183,143,168,219,132, 73,201,200,127,236,248,103, 84,187,222, 32,132, 32,176,122, 29,176, 2, 1, 88,150,129, +128,101,161, 81, 75, 17,243,215, 95,188,161,176,240,112, 73,152,237, 8, 17,248, 41,197, 75,222,234, 92, 95,154, 36, 78,131,183, +191, 2, 34,225, 35, 18, 64,239,245, 46, 54, 67, 8,128,186, 42, 12, 77,244,148, 29, 78,213, 47,105, 71,200,246, 35,165, 24, 96, +242, 60, 15,165, 68, 2,189,193,128, 66,139, 5,237, 22, 45,178,109, 23, 50,132,224, 18,128,122,139, 22,225,212,150, 45, 80,139, +197,128, 68,226,240,169,144,146, 52, 90,169,169,169,232,219,183,239, 83, 17, 34,123,205,214,216,177, 99,143,204,157, 59,215,119, +218,180,105,149,134,249,241,199, 31, 31,217,176, 97,131,111,181,106,213, 42,220, 88,149, 74,229, 36,158,231, 53,243,231,207, 79, +249,234,171,175, 80,220,158,172,136,232, 72, 52, 26,205, 2, 0,237,203,128,154, 57,122,244,104, 17,128, 49, 69,154,173,122,163, + 71,143, 62, 69, 41,157, 90,172,124,167, 47, 91,182,172,175,221, 22,227, 82, 0,139,202, 74, 99,110,110,238, 15, 31,124,240,193, +176, 99,199,142,121, 73,165, 82, 16, 66, 32, 18,137, 80,179,102, 77,219, 41, 26,161, 80, 8, 74, 41, 62,252,240,195,140,180,180, + 52,135,220, 59, 24, 12,134, 53, 51,103,206,108, 95, 88, 88, 24, 50,116,232, 80,145,187,187, 59, 82, 83, 83,241,245,215, 95, 27, +215,172, 89, 19,175,211,233,156,181,165,130,217,108, 94,243,217,103,159,181,203,207,207,175, 62, 98,196, 8, 81, 78, 78, 14, 10, + 11, 11, 49,113,226, 68,227,170, 85,171, 18, 10, 11, 11,157,118,248,219,162, 69,139,187, 15, 30, 60,104, 85, 80, 80,144, 37,151, +203,139,107,251,136, 66,161,104, 2, 96,157, 51,152, 81, 81, 81,177, 15, 31, 62,108, 62,123,246,236,163,102,179, 89,120,246,236, +217,238, 86,146,245,237,183,223, 30,145, 74,165, 29,225,188,209, 62, 47,145, 72, 30,211, 96, 21,127, 47, 16, 8,254,243, 26, 45, + 74,233, 17, 60,114,153,241, 92, 73,113,146,117,237,218, 53,180,111,255,168, 75,159, 56,113, 2, 45, 91,182,196,137, 19, 39,208, +170, 85,171,127,213,189,131,149,104, 9, 4, 2,244,239,223, 31,157, 58,117, 66,149, 42, 85, 30, 59,109,104,125,239, 12,217,176, + 88, 44,168, 91,183, 46, 12, 70, 35, 68, 34,145,109,107, 82, 32, 16,192,219,199, 7,119,239,222,117, 72,163,197, 48, 76,159, 30, + 61,122, 48,215,175, 95, 71,191,126,253,176,126,253,250, 82,127, 59,112,224, 64,252,242,203, 47,232,209,163, 7, 51,101,202,148, + 50,221, 59, 88,141,208, 29,201,147,117,158, 46, 79,163, 87, 89,152,246, 92,228,121, 19, 59,215, 14, 37,181,249, 81, 37,180,175, +229,143, 17, 45, 59, 39, 97,168,238, 45, 31,218,169,166, 0,191, 31, 62,143,153,191, 63, 92,195, 81,186,117,235,197,172,157, 31, +183, 4, 76,155,222, 66,253,222,235, 30,109, 23, 2,224,211,174,193,180,105, 32,136,220, 11,199, 19,133,200, 41, 52,237, 42,185, +225,153,214,255,246,211,119, 31, 52,255,190,149,183,191,143, 27,180, 57,133, 54,178,117,241,200,102, 0, 64,175,209,115, 32, 96, + 31,109, 41,170,149, 82,200, 68, 44,182,172,253, 38,195,100,210,151,216,186,242,132,204,152, 41, 47,213,116, 19, 43,204,200,245, +163,168,227,253,247,161, 63, 82,125,243,147,132,171,161, 59,188,174,101,225,173, 26, 74,245, 55,215,179,199, 0, 88,242,196,132, +152,157, 93,152,253,215, 95,178, 46, 43, 86,224,236,160, 65, 8,228, 56, 28, 13, 8,128,135, 80, 8, 55,137, 4, 12, 33, 40,220, +185, 19,167,182,110,133,175, 68, 2,168, 84,176,204,154, 5, 67, 76, 12,204,121,121,133,206, 18,173, 59,119,238, 60,181,214,169, + 36, 98, 52,121,242,228,159, 50, 51, 51, 7, 84, 38,230,160, 65,131,142, 28, 58,116,200,183,162, 56,121,121,121, 19, 0, 76,168, +132,244,240,132,144,169, 69,142,241,198,140, 26, 53, 74,115,238,220,185, 97,132,144,239,173,171, 9, 66,136,207,240,225,195, 71, + 22, 35, 89,229,158, 58,164,148, 62, 84, 42,149,179, 38, 76,152, 48,231,171,175,190, 82, 90, 13,223, 47, 95,190, 12,139,197, 2, +161, 80, 8,142,227, 48,124,248,240,252,204,204,204, 5,165,121,116, 46, 1,215, 66, 8, 25, 56,103,206,156,225,223,124,243,205, +107, 44,203,122,115, 28,151, 94, 88, 88,184,183,176,176,112,121, 69, 78, 93, 21,149,195,224,105,211,166, 13, 94,184,112, 97, 15, +134, 97,124, 44, 22, 75, 70, 94, 94,222,142,194,194,194, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40, + 40, 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198, + 25, 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188, +189,246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171, + 86, 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216, 62,219, 95, +118, 54, 90, 14, 9,199,113, 16,137, 68, 16, 8, 4,240, 15, 8,176, 61,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150, +101, 9, 33,232,215,175,159, 67,207,125,243,205, 55,113,244,232, 81,176, 14,178, 66,150,101, 81,181,106, 85,135,118, 94,224,160, + 61, 21,203,178, 8, 10, 10,170, 48,166, 61, 23,121,158, 8, 86, 73,239, 75, 34, 85, 37, 73,137,198,240,177,105,133,179, 7,126, +125,114,202,141, 20,253,214,152,212,130, 15, 0,208, 77,215,228,251,235,123,179,175,188, 18,158, 0,195,242, 86, 32,234, 71,206, +219,104,126, 50,136,194, 23, 9,124, 32,166,111,191,153, 98, 1,153, 95, 74, 34,146, 68, 82,249,212,181, 43,190,253,106,248,216, + 15,149,215, 98, 83,145,147,111, 0,203, 50,246,131, 39, 4, 2, 22,106,133, 20,193,126,110,216,240,227,215,121,121,185,217,211, + 74,139,123, 88, 69, 37, 26,221,177, 73, 13,137,200, 95,135,136,122,125,193, 74,255,118, 50, 75, 83, 74,217, 29,108,185, 31,175, + 62,212, 73,127,123,168, 27, 93, 34,209, 50, 26, 95,249,180,115,231,125, 51,119,239,150, 55, 93,179, 6,177,195,135, 35,160,176, + 16,146,162,173, 68,134, 16, 40, 69, 34, 40, 69,162, 71, 36,107,225, 66, 20, 90, 44, 88, 52,104, 80,129,193,104,236,236,164, 70, + 66,212,182,109,219, 74, 35, 89,246,196, 8, 78,218,121, 57, 74,182, 58,117,234,116,132, 82, 42,121, 14, 86,242, 86,178,101, 58, +119,238,220,200,227,199,143,199,226,241,192,162,217,199,143, 31,143, 29, 49, 98, 4, 89,185,114,229, 42, 0,159, 57,234,192, 51, + 63, 63,255, 91,141, 70,131, 54,109,218,124, 54,111,222, 60,207,198,141, 27,195,199,199, 7,121,121,121,184,112,225, 2,198,143, + 31,175,205,205,205,157,151,149,149,245,149,147,105,230,138, 52, 55,203, 43,179, 28, 0,172, 46,186, 42, 69,222,126,251,237,203, +177,177,177,153,222,222,222,205, 68, 34, 81, 61, 60,178, 3, 74, 1,176,202, 89, 66,100,149, 49, 99,198,252, 21, 27, 27,155, 17, + 24, 24,216,188, 8, 83, 3, 32, 17,192,138, 10, 96, 38,157, 63,127, 62,168, 73,147, 38,140, 80, 40,164, 44,203, 66, 40, 20, 82, +129, 64, 64,139,236,106, 40, 0,236,216,177, 67, 2, 64, 11,151,252,211,125,211,230,222, 33, 57, 57,217, 70,178,236, 28,150, 70, +181,106,213,234, 98, 17,201,178,222,179,252, 75,105,197,204,153, 51,177,108,217, 50,148,231,209,188,232,116, 31, 41, 15,207,170, +209,226, 56, 14, 38,147, 9,215,174, 93,179,249,236,178,110, 23, 90, 93, 59, 88, 44,150, 50, 79,171,115, 28,199, 25,141, 70,252, +250,235,175, 14,145,173,159,127,254, 25,122,189, 30, 92, 57, 12,206,222, 21, 67,131, 6, 13,160,213,106,109,135,125,162,162,254, +118,149,103, 50,153,156, 34,174, 86,204,136,136, 8,100,100,100,192,203,235,209,121,156,224, 65,127, 43,123, 44,186,255,166,255, +224,178, 52, 90,196, 81,151, 4, 13, 52, 26, 55,131,216,188,173, 91, 29, 73,187, 62, 81,110,168,238,167,130, 80, 36, 69, 82,174, + 5, 7,111,228, 98,197,145,148,248, 66, 51,247,218,173, 52,221,213,178,112,164, 10,183,189,141, 95,234,212,114,208,200,241,138, +124, 3,135,184,184, 7, 72, 79, 75, 6, 67, 24,248, 7, 6, 33, 36,164, 42,100, 98, 6,235,151,127,165,187,120,234,208,201,188, + 92,109,151,210,176, 94,211,136, 79, 45,124,163,101,243,208, 80, 21,129,197, 12,112,102,192, 98, 6,248,162, 87,235,119,252,227, +109,238,250,245,108, 58,229,146,246,244,206,108, 99,137, 49,171,250, 16,210, 82,227,225,177,111,250,142, 29,114,222,100, 66,230, +132, 9,144, 91, 44,144, 22,173, 74, 0, 0, 18, 9, 44,179,102, 61, 34, 89, 3, 7, 22,228,100,103, 59, 29,130,199,219,219,123, +117, 70, 70,198, 11,231, 25,222,211,211,243,211,138,184,137,120,134,105,242, 1,144, 77, 41, 53,149,176,178,246,182,106,185, 42, +128, 91,213,219,219,123, 10,195, 48, 45, 40,165,158, 12,195,100,241, 60,255,103, 90, 90,218,151,148,210,187,174, 41,245, 95,171, +111,171,103,248,242,246,177,211, 0,188, 15, 32,143, 82, 26,231, 42,185,127,188,158, 26,226,209, 41,172, 82, 67,240,224, 95, 60, +121,232,233,233,121,102,223,190,125,141,171, 87,175,206,216,155, 49, 88,125,229, 89,183,183, 4,130, 71,250,136, 99,199,142, 89, +250,245,235,247,103, 74, 74, 74,155,210, 48,213,106,245,254, 43, 87,174,188,156,147,147,243, 4,161,178,247, 20,111,253,172,211, +233, 48,118,236,216, 3,185,185,185, 37,134,224,209,104, 52, 11,191,250,234,171,247,122,245,234,197, 88,221, 81,216, 95,214,112, + 65,214,203,100, 50, 97,221,186,117,252, 55,223,124,179, 56, 59, 59,187,212,173,195,128,128,128,248,164,164,164, 32,171,171, 5, + 71,156,138, 86,173, 90, 53, 57, 46, 46, 46,224,159,196,124, 81, 9, 87,113,237, 22,113,198,247, 19, 33,132, 68,248, 40,250, 82, +160, 15, 3,190, 46, 67,136,216, 66,113, 11, 20,251,229,130,130,239, 47, 36, 81,135,182,206, 68,114,249, 56,149,210,253,243, 94, + 3,222,241,172, 26, 26, 70,124,253, 3, 65,192, 32, 53, 37, 17, 15,238,221,166,219,126,250, 46, 83,151,171,157, 81, 80,144,255, + 93, 89, 56,181, 9, 9,173,166, 22,109, 18,115, 8,135, 53, 31,197,226, 83, 61,193, 48, 1,152,132,204,205,184, 60,115,223,235, +101,108,251, 88,201,214,212,109,219,228,226,240,240, 39, 28,197,241, 60, 15, 67, 76, 12, 22, 13, 26, 84, 33,146,229, 18,151,184, +228,169, 7,180,234, 40,223, 71,150, 25, 64,194,191, 25,188,248,255,121, 29, 61,183, 65,165, 9, 33, 10, 15, 15,143, 67, 44,203, +134, 88, 53, 50,246, 54, 67, 37, 4,148,142, 75, 77, 77,237, 72, 41, 45, 40, 3, 51, 84,165, 82,125,199,113, 92, 83, 71,130, 74, +179, 44,123, 54, 47, 47,111, 92, 89, 65,165,159,197,169, 67, 47, 47,175,187, 15, 30, 60, 8,181,158,162,182,159, 43,139,151, 3, + 0,220,185,115, 7,109,219,182,125,144,156,156, 92,245,159,196,124, 94,165, 20, 63, 90, 79,175,209,122, 6,141, 60, 64, 36, 81, + 14, 22,203,164, 29,120,179, 37, 2, 4, 16, 8,133, 55,141,250,194,195,134,194,252,181,165,109, 23,254,147,210,135,144,150, 18, +177,120,191, 72,173,150,149, 84, 78,230,188,188, 66,131,209,248,138,139,100,185,196, 37, 46,113,137, 75, 94, 32, 2, 28,238,225, +225,177, 79, 40, 20, 74,236,201,100,241,247, 86,177, 88, 44,250,244,244,244, 46,101,237,190, 60, 11,204,255, 76,121, 59, 75,180, +118,237,218, 69, 29,245,222, 74, 8,233,228, 72,204, 42, 59,195,183,114,125,103,252,219,152,207, 48,239,229,122,197,117, 2,179, + 45, 30, 29,143,157, 17, 29, 29, 61,253, 5, 72,103,101,214, 81,165, 98, 90,235,220, 81, 92,103, 48, 29,109, 83, 78,166,211,161, +118,255, 60, 96, 58,210,151, 42,152,206, 50,219,104, 5,235,189,204,190,244, 28,165,179, 50,235,168, 82, 48,139,183, 31, 71,112, +157,197,116,164, 47, 85, 32,157,229,182,251,231, 5,243,105,199,144, 50,210, 89,106, 27,117,180, 45,149, 82,247,229,206, 77,207, +171, 38, 11, 0,172,254,180,138,107,180, 74, 51,136, 23, 56, 75,178,158, 69,226,237, 39, 29, 56,232,167,228,223,192,172, 8,225, +114, 38,173,149, 40, 71, 42, 27,179, 88,121, 86,150, 76, 47, 26,208,143,194, 1,135,163,206,228,189, 50,234,189, 88, 94, 43, 5, +215, 30,179,178,202,178,164, 65,177, 50,211,249, 44, 48, 43,171, 47, 21,199,172,140,118, 95, 82,189, 63,195, 58,170,172,116, 86, + 74, 95,122, 22,109,190,132,246,243,212,184,197, 49, 43,163, 47, 21,199,172,140,118,255, 79, 96, 86, 70, 95, 42, 9,179, 50,218, +125,105,117,255,162,106,166,172,219,133, 69,132,139,148, 64, 62, 31,219, 62,180, 18, 47,166, 34,133,246, 44,228, 89, 4,146,172, +108, 66,244,172,200,230,174, 93,187,104, 17,211,127,238, 49, 43,185,142,166, 23, 97, 86,230,202,166, 93,101,213,209,179,104,239, +246,152,149,133, 95, 28,167, 50,234,169, 36,204,167, 77,111, 41,233,172,244,188, 63,109,187,255,167, 48, 43,185,142, 42,165, 47, + 21,195,108, 87,201,139,129,118,118,159,167, 87, 38,102,101,245,165, 18,210,249,212,245, 84, 18,230,211,166,183,148,116, 86,122, +222, 43, 99, 14,121, 86,184,255,150, 70,235, 70, 20,161,148, 41,185, 77, 20, 57, 44,181, 93, 21,210,104, 61, 75,146,245,172, 38, +181,202,196,126, 22, 90,157,103,165,121,171, 44,173, 78, 9,184, 71, 43, 17,238, 72,101,167,179, 40,125,228,121,118,122,231,234, + 75,174,190,244,255,169, 47,149,212,110,162,163,163,167,239,218,181,235,243,231,169,157, 23,199,172, 44, 66, 84, 66,222,159,170, + 47, 21,255,223,202,232, 75,229, 96,146,103,145,255,202,238, 79,255,164, 70,171, 52,146, 85,218, 61,193,243,146, 1,107, 35,169, +228,149, 9, 42, 89, 3,243,204,242, 93,201,233,108,247, 44, 52,132,207, 64, 42, 61,157, 69, 43,229,207,159, 65,222, 95,148, 50, +117,245, 37, 87, 95,122,238,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,207,176,199,168,172, 54,250,172,243, + 94,153,125,233, 89,212,253,139, 38,255, 55, 0,242, 66,135, 78, 90, 48, 10,210, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index 01029ef90d4..b9d5e98b88e 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -641,9 +641,9 @@ DEF_ICON(ICON_PROP_OFF) DEF_ICON(ICON_PROP_ON) DEF_ICON(ICON_PROP_CON) DEF_ICON(ICON_BLANK212) -DEF_ICON(ICON_BLANK213) -DEF_ICON(ICON_BLANK214) -DEF_ICON(ICON_BLANK214b) +DEF_ICON(ICON_PARTICLE_POINT) +DEF_ICON(ICON_PARTICLE_TIP) +DEF_ICON(ICON_PARTICLE_PATH) /* EDITING */ DEF_ICON(ICON_MAN_TRANS) @@ -709,7 +709,7 @@ DEF_ICON(ICON_SMOOTH) DEF_ICON(ICON_POTATO) DEF_ICON(ICON_BLANK248) DEF_ICON(ICON_ORTHO) -DEF_ICON(ICON_BLANK249) +DEF_ICON(ICON_ORTHO_OFF) DEF_ICON(ICON_CAMERA) DEF_ICON(ICON_LOCKVIEW_OFF) DEF_ICON(ICON_LOCKVIEW_ON) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 84e54abc20c..701e9a43f1b 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -2219,7 +2219,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlockEndAlign(block); header_xco_step(ar, &xco, &yco, &maxco, 10); if(v3d->drawtype > OB_WIRE) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); + if (v3d->flag & V3D_ZBUF_SELECT) { + uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); + } else { + uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO_OFF, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); + } } xco+= XIC; uiBlockEndAlign(block); @@ -2229,11 +2233,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) } else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_EDGESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode"); + uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_PARTICLE_PATH, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode"); xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode"); + uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_PARTICLE_POINT, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode"); xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_FACESEL, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode"); + uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_PARTICLE_TIP, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode"); xco+= XIC; uiBlockEndAlign(block); -- cgit v1.2.3 From 552134db45e2f33b4ca6a14ee4b53742626b0b7d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Nov 2009 13:24:04 +0000 Subject: new palm rig type + some refactoring to make names less confusing for the arm rig linked text would not run --- release/scripts/modules/rigify.py | 326 +++++++++++++++++++++------ source/blender/editors/space_text/text_ops.c | 2 +- 2 files changed, 255 insertions(+), 73 deletions(-) diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py index 9575f38a3ea..f9640c41dca 100644 --- a/release/scripts/modules/rigify.py +++ b/release/scripts/modules/rigify.py @@ -25,6 +25,49 @@ from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get empty_layer = [False] * 16 +def auto_class(slots, name="ContainerClass"): + return type(name, (object,), {"__slots__":tuple(slots)}) + +def auto_class_instance(slots, name="ContainerClass"): + return auto_class(slots, name)() + + + +def bone_class_instance(obj, slots, name="BoneContainer"): + for member in slots[:]: + slots.append(member + "_b") # bone bone + slots.append(member + "_p") # pose bone + slots.append(member + "_e") # edit bone + + slots.extend(["obj", "update"]) + + instance = auto_class_instance(slots, name) + + def update(): + ''' + Re-Assigns bones from the blender data + ''' + arm = obj.data + + bbones = arm.bones + pbones = obj.pose.bones + ebones = arm.edit_bones + + for member in slots: + + if member in ("update", "obj"): + continue + + if not member[-2] == "_": + name = getattr(instance, member, None) + if name is not None: + setattr(instance, member + "_b", bbones.get(name, None)) + setattr(instance, member + "_p", pbones.get(name, None)) + setattr(instance, member + "_e", ebones.get(name, None)) + + instance.update = update + + return instance def gen_none(obj, orig_bone_name): pass @@ -388,22 +431,31 @@ def gen_arm(obj, orig_bone_name): - IKSwitch, MCH-%s () """ - def validate_chain(): + # Since there are 3 chains, this gets confusing so divide into 3 chains + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) + sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) + + def chain_init(): ''' Sanity check and return the arm as a list of bone names. ''' # do a sanity check - arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) - shoulder_pbone = orig_pbone.parent + mt.arm = orig_bone_name + mt.update() + + mt.shoulder_p = mt.arm_p.parent + mt.shoulder = mt.shoulder_p.name - if not shoulder_pbone: + if not mt.shoulder_p: print("could not find 'arm' parent, skipping:", orig_bone_name) return # We could have some bones attached, find the bone that has this as its 2nd parent hands = [] for pbone in obj.pose.bones: - index = pbone.parent_index(orig_pbone) + index = pbone.parent_index(mt.arm_p) if index == 2: hands.append(pbone) @@ -412,53 +464,48 @@ def gen_arm(obj, orig_bone_name): return # first add the 2 new bones - hand_pbone = hands[0] - forearm_pbone = hand_pbone.parent - - return shoulder_pbone.name, orig_pbone.name, forearm_pbone.name, hand_pbone.name - + mt.hand_p = hands[0] + mt.hand = mt.hand_p.name + + mt.forearm_p = mt.hand_p.parent + mt.forearm = mt.forearm_p.name arm = obj.data - original_chain_tuple = validate_chain() - shoulder_name, arm_name, forearm_name, hand_name = original_chain_tuple - def chain_ik(prefix="MCH-%s_ik"): - arm, arm_pbone, arm_ebone = get_bone_data(obj, arm_name) - arm, hand_pbone, hand_ebone = get_bone_data(obj, hand_name) + mt.update() # Add the edit bones - hand_ik_ebone = copy_bone_simple(arm, hand_name, prefix % hand_name) - hand_ik_name = hand_ik_ebone.name + ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + ik.hand = ik.hand_e.name - arm_ik_ebone = copy_bone_simple(arm, arm_name, prefix % arm_name) - arm_ik_name = arm_ik_ebone.name + ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + ik.arm = ik.arm_e.name - forearm_ik_ebone = copy_bone_simple(arm, forearm_name, prefix % forearm_name) - forearm_ik_name = forearm_ik_ebone.name + ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + ik.forearm = ik.forearm_e.name - arm_ik_ebone.parent = arm_ebone.parent - forearm_ik_ebone.connected = arm_ebone.connected + ik.arm_e.parent = mt.arm_e.parent + ik.forearm_e.connected = mt.arm_e.connected - forearm_ik_ebone.parent = arm_ik_ebone - forearm_ik_ebone.connected = True + ik.forearm_e.parent = ik.arm_e + ik.forearm_e.connected = True # Add the bone used for the arms poll target - pole_ik_name = add_pole_target_bone(obj, forearm_name, "elbow_poll", mode='+Z') + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') bpy.ops.object.mode_set(mode='OBJECT') - arm, forearm_ik_pbone, forearm_ik_bone = get_bone_data(obj, forearm_ik_name) + ik.update() - - con = forearm_ik_pbone.constraints.new('IK') + con = ik.forearm_p.constraints.new('IK') con.target = obj - con.subtarget = hand_ik_name + con.subtarget = ik.hand con.pole_target = obj - con.pole_subtarget = pole_ik_name + con.pole_subtarget = ik.pole con.use_tail = True con.use_stretch = True @@ -468,46 +515,47 @@ def gen_arm(obj, orig_bone_name): con.pole_angle = -90.0 # XXX, RAD2DEG # ID Propery on the hand for IK/FK switch - arm, hand_ik_pbone, hand_ik_bone = get_bone_data(obj, hand_ik_name) - prop = rna_idprop_ui_prop_get(hand_ik_pbone, "ik", create=True) - hand_ik_pbone["ik"] = 0.5 + prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) + ik.hand_p["ik"] = 0.5 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 bpy.ops.object.mode_set(mode='EDIT') - return None, arm_ik_name, forearm_ik_name, hand_ik_name, pole_ik_name - - ik_chain_tuple = chain_ik() + + ik.arm = ik.arm + ik.forearm = ik.forearm + ik.hand = ik.hand + ik.pole = ik.pole def chain_switch(prefix="MCH-%s"): + + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) + sw.shoulder = sw.shoulder_e.name + + sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + sw.arm = sw.arm_e.name + sw.arm_e.parent = sw.arm_e + sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected - arm_sw_ebone = copy_bone_simple(arm, arm_name, prefix % arm_name) - arm_sw_name = arm_sw_ebone.name - - - - forearm_sw_ebone = copy_bone_simple(arm, forearm_name, prefix % forearm_name) - forearm_sw_name = forearm_sw_ebone.name - forearm_sw_ebone.parent = arm_sw_ebone - forearm_sw_ebone.connected = arm.edit_bones[forearm_name].connected + sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + sw.forearm = sw.forearm_e.name + sw.forearm_e.parent = sw.arm_e + sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected - hand_sw_ebone = copy_bone_simple(arm, hand_name, prefix % hand_name) - hand_sw_name = hand_sw_ebone.name - hand_sw_ebone.parent = forearm_sw_ebone - hand_sw_ebone.connected = arm.edit_bones[hand_name].connected + sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + sw.hand = sw.hand_e.name + sw.hand_e.parent = sw.forearm_e + sw.hand_e.connected = arm.edit_bones[mt.hand].connected bpy.ops.object.mode_set(mode='OBJECT') - # Add constraints - arm_sw_pbone = obj.pose.bones[arm_sw_name] - forearm_sw_pbone = obj.pose.bones[forearm_sw_name] - hand_sw_pbone = obj.pose.bones[hand_sw_name] + sw.update() - dummy, arm_ik_name, forearm_ik_name, hand_ik_name, pole_ik_name = ik_chain_tuple + #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple - ik_driver_path = obj.pose.bones[hand_ik_name].path_to_id() + '["ik"]' + ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' def ik_fk_driver(con): @@ -524,60 +572,194 @@ def gen_arm(obj, orig_bone_name): tar.rna_path = ik_driver_path # *********** - con = arm_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.arm_p.constraints.new('COPY_ROTATION') con.name = "FK" con.target = obj - con.subtarget = arm_name + con.subtarget = mt.arm - con = arm_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.arm_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = arm_ik_name + con.subtarget = ik.arm con.influence = 0.5 ik_fk_driver(con) # *********** - con = forearm_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.forearm_p.constraints.new('COPY_ROTATION') con.name = "FK" con.target = obj - con.subtarget = forearm_name + con.subtarget = mt.forearm - con = forearm_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.forearm_p.constraints.new('COPY_ROTATION') con.name = "IK" con.target = obj - con.subtarget = forearm_ik_name + con.subtarget = ik.forearm con.influence = 0.5 ik_fk_driver(con) # *********** - con = hand_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.hand_p.constraints.new('COPY_ROTATION') con.name = "FK" con.target = obj - con.subtarget = hand_name + con.subtarget = mt.hand - con = hand_sw_pbone.constraints.new('COPY_ROTATION') + con = sw.hand_p.constraints.new('COPY_ROTATION') con.name = "IK" con.target = obj - con.subtarget = hand_ik_name + con.subtarget = ik.hand con.influence = 0.5 ik_fk_driver(con) - add_stretch_to(obj, forearm_sw_name, pole_ik_name, "VIS-elbow_ik_poll") - add_stretch_to(obj, hand_sw_name, hand_ik_name, "VIS-hand_ik") + add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") + add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") + + bpy.ops.object.mode_set(mode='EDIT') + + + def chain_shoulder(prefix="MCH-%s"): + + sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") + sw.socket = sw.socket_e.name + sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail + + bpy.ops.object.mode_set(mode='OBJECT') + con = mt.arm_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = sw.socket bpy.ops.object.mode_set(mode='EDIT') - return None, arm_sw_name, forearm_sw_name, hand_sw_name + + + + + chain_init() + chain_ik() + chain_switch() + + # add the shoulder + chain_shoulder() + + # Shoulder with its delta and hinge. + + + + + +def gen_palm(obj, orig_bone_name): + arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) + children = [ebone.name for ebone in palm_ebone.children] + children.sort() # simply assume the pinky has the lowest name + + # Make a copy of the pinky + control_ebone = copy_bone_simple(arm, children[0], "palm_control") + control_name = control_ebone.name + offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) + + control_ebone.head += offset + control_ebone.tail += offset + + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) + arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) - switch_chain_tuple = chain_switch() + control_pbone.rotation_mode = 'YZX' + control_pbone.lock_rotation = False, True, True + driver_fcurves = pinky_pbone.driver_add("rotation_euler") + + controller_path = control_pbone.path_to_id() + + # add custom prop + control_pbone["spread"] = 0.0 + prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) + prop["soft_min"] = -1.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurves[0].driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[1].driver + driver.expression = "-x/4.0" + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[2].driver + driver.expression = "(1.0-cos(x))-s" + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + tar = driver.targets.new() + tar.name = "s" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["spread"]' + + + for i, child_name in enumerate(children): + child_pbone = obj.pose.bones[child_name] + child_pbone.rotation_mode = 'YZX' + + if child_name != children[-1] and child_name != children[0]: + + # this is somewhat arbitrary but seems to look good + inf = i / (len(children)+1) + inf = 1.0 - inf + inf = ((inf * inf) + inf) / 2.0 + + # used for X/Y constraint + inf_minor = inf * inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy Z Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = False, False, True + con.influence = inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy XY Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = True, True, False + con.influence = inf_minor + + + child_pbone = obj.pose.bones[children[-1]] + child_pbone.rotation_mode = 'QUATERNION' + + gen_table = { "":gen_none, \ "finger":gen_finger, \ "delta":gen_delta, \ "arm":gen_arm, \ + "palm":gen_palm, \ } def generate_rig(context, ob): diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index c7fcfb15c1c..16a7f97afd6 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -555,7 +555,7 @@ void TEXT_OT_run_script(wmOperatorType *ot) /* api callbacks */ ot->exec= run_script_exec; - ot->poll= text_edit_poll; +// ot->poll= text_edit_poll; // dont do this since linked texts cant run } -- cgit v1.2.3 From 794685da795b4756b01546a9b44328699a5d27ae Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 27 Nov 2009 14:58:13 +0000 Subject: CLICK missing from *other* event rna enum (how many of these do we need?!) --- source/blender/makesrna/intern/rna_wm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 203c7991142..de872b41335 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -62,6 +62,7 @@ EnumPropertyItem event_value_items[] = { {KM_NOTHING, "NOTHING", 0, "Nothing", ""}, {KM_PRESS, "PRESS", 0, "Press", ""}, {KM_RELEASE, "RELEASE", 0, "Release", ""}, + {KM_CLICK, "CLICK", 0, "Click", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem event_tweak_type_items[]= { -- cgit v1.2.3 From 994776811f06d5c0b19242bf8d5ca49ae38ae0a6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Nov 2009 15:15:03 +0000 Subject: edge loop delete was using snap, making it not actually delete the edge loop --- release/scripts/op/wm.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 92b1434b696..f4cb136693f 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -30,9 +30,14 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bl_label = "Delete Edge Loop" def execute(self, context): + snap = bpy.context.scene.tool_settings.snap + bpy.context.scene.tool_settings.snap = False + bpy.ops.tfm.edge_slide(value=1.0) bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() + + bpy.context.scene.tool_settings.snap = snap return ('FINISHED',) rna_path_prop = StringProperty(name="Context Attributes", -- cgit v1.2.3 From 20a2100a365da94182f3e90174a7a043cfba3a12 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 27 Nov 2009 16:15:34 +0000 Subject: Add missing snap properties to transform operator. This is used to force snap on and off when needed. Also, when transform is not run modal, it will use default values for PET and snap properties (False) instead of scene settings. No need to force them off when calling transform with Exec. --- release/scripts/op/wm.py | 4 -- source/blender/editors/include/ED_transform.h | 2 +- .../blender/editors/transform/transform_generics.c | 24 +++++++----- source/blender/editors/transform/transform_ops.c | 44 ++++++++++++++-------- source/blender/editors/transform/transform_snap.c | 26 +++++++++---- 5 files changed, 61 insertions(+), 39 deletions(-) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index f4cb136693f..f93c0d47e28 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -30,14 +30,10 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bl_label = "Delete Edge Loop" def execute(self, context): - snap = bpy.context.scene.tool_settings.snap - bpy.context.scene.tool_settings.snap = False - bpy.ops.tfm.edge_slide(value=1.0) bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() - bpy.context.scene.tool_settings.snap = snap return ('FINISHED',) rna_path_prop = StringProperty(name="Context Attributes", diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 0f17599daae..065867a3bb3 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -135,7 +135,7 @@ 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 align); +void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align); void Properties_Constraints(struct wmOperatorType *ot); /* view3d manipulators */ diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 7fa4f8b0ffc..8b7c4b7503b 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -930,6 +930,11 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) unit_m3(t->mat); + /* if there's an event, we're modal */ + if (event) { + t->flag |= T_MODAL; + } + t->spacetype = sa->spacetype; if(t->spacetype == SPACE_VIEW3D) { @@ -1010,11 +1015,15 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } else { - if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) { - t->flag |= T_PROP_EDIT; - - if(ts->proportional == PROP_EDIT_CONNECTED) - t->flag |= T_PROP_CONNECTED; + /* use settings from scene only if modal */ + if (t->flag & T_MODAL) + { + if ((t->options & CTX_NO_PET) == 0 && (ts->proportional != PROP_EDIT_OFF)) { + t->flag |= T_PROP_EDIT; + + if(ts->proportional == PROP_EDIT_CONNECTED) + t->flag |= T_PROP_CONNECTED; + } } } @@ -1048,11 +1057,6 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->options |= CTX_NO_PET; } - /* Snapping */ - if (ts->snap_flag & SCE_SNAP) { - t->modifiers |= MOD_SNAP; - } - setTransformViewMatrices(t); initNumInput(&t->num); initNDofInput(&t->ndof); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index e01f4373516..0c54b5273e3 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -354,13 +354,9 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event) return transform_exec(C, op); } else { - TransInfo *t = op->customdata; - /* add temp handler */ WM_event_add_modal_handler(C, op); - t->flag |= T_MODAL; // XXX meh maybe somewhere else - op->flag |= OP_GRAB_POINTER; // XXX maybe we want this with the manipulator only? return OPERATOR_RUNNING_MODAL; } @@ -373,16 +369,18 @@ void Properties_Proportional(struct wmOperatorType *ot) RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100); } -void Properties_Snapping(struct wmOperatorType *ot, short align) +void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align) { - RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", ""); - 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); + RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); - 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); + 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 (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); + } } } @@ -419,7 +417,7 @@ void TFM_OT_translate(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 1); + Properties_Snapping(ot, 1, 1); } void TFM_OT_resize(struct wmOperatorType *ot) @@ -445,7 +443,7 @@ void TFM_OT_resize(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 0); + Properties_Snapping(ot, 1, 0); } @@ -469,6 +467,8 @@ void TFM_OT_trackball(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_rotate(struct wmOperatorType *ot) @@ -494,7 +494,7 @@ void TFM_OT_rotate(struct wmOperatorType *ot) Properties_Constraints(ot); - Properties_Snapping(ot, 0); + Properties_Snapping(ot, 1, 0); } void TFM_OT_tilt(struct wmOperatorType *ot) @@ -522,6 +522,8 @@ void TFM_OT_tilt(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); Properties_Constraints(ot); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_warp(struct wmOperatorType *ot) @@ -545,7 +547,9 @@ void TFM_OT_warp(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - // XXX Shear axis? + Properties_Snapping(ot, 0, 0); + + // XXX Warp axis? // Properties_Constraints(ot); } @@ -570,6 +574,8 @@ void TFM_OT_shear(struct wmOperatorType *ot) RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + Properties_Snapping(ot, 0, 0); + // XXX Shear axis? // Properties_Constraints(ot); } @@ -594,6 +600,8 @@ void TFM_OT_shrink_fatten(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_tosphere(struct wmOperatorType *ot) @@ -617,6 +625,8 @@ void TFM_OT_tosphere(struct wmOperatorType *ot) Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + + Properties_Snapping(ot, 0, 0); } void TFM_OT_mirror(struct wmOperatorType *ot) @@ -656,6 +666,8 @@ void TFM_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); } void TFM_OT_transform(struct wmOperatorType *ot) diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index bbea9d4ba25..d36b7c9b903 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -347,20 +347,27 @@ void initSnapping(TransInfo *t, wmOperator *op) ToolSettings *ts = t->settings; Object *obedit = t->obedit; Scene *scene = t->scene; - int snapping = 0; short snap_target = t->settings->snap_target; resetSnapping(t); + /* if snap property exists */ if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_property_is_set(op->ptr, "snap")) { if (RNA_boolean_get(op->ptr, "snap")) { - snapping = 1; - snap_target = RNA_enum_get(op->ptr, "snap_target"); + t->modifiers |= MOD_SNAP; + + if (RNA_property_is_set(op->ptr, "snap_target")) + { + snap_target = RNA_enum_get(op->ptr, "snap_target"); + } - t->tsnap.status |= SNAP_FORCED|POINT_INIT; - RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); + if (RNA_property_is_set(op->ptr, "snap_point")) + { + RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); + t->tsnap.status |= SNAP_FORCED|POINT_INIT; + } /* snap align only defined in specific cases */ if (RNA_struct_find_property(op->ptr, "snap_align")) @@ -376,9 +383,13 @@ void initSnapping(TransInfo *t, wmOperator *op) } } } - else + /* use scene defaults only when transform is modal */ + else if (t->flag & T_MODAL) { - snapping = ((ts->snap_flag & SCE_SNAP) == SCE_SNAP); + if (ts->snap_flag & SCE_SNAP) { + t->modifiers |= MOD_SNAP; + } + t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE); t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); @@ -411,7 +422,6 @@ void initSnapping(TransInfo *t, wmOperator *op) } /* Particles edit mode*/ else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (snapping) && // Only if the snap flag is on (obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) { t->tsnap.modeSelect = SNAP_ALL; -- cgit v1.2.3 From c3884d9547146517792711547d4a48196e16c5a9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Nov 2009 17:07:50 +0000 Subject: shoulder improvements, fixes for linking arm/palm/finger together --- release/scripts/modules/rigify.py | 110 +++++++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 12 deletions(-) diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py index f9640c41dca..3cdd2baa0dd 100644 --- a/release/scripts/modules/rigify.py +++ b/release/scripts/modules/rigify.py @@ -85,9 +85,14 @@ def get_bone_data(obj, bone_name): def bone_basename(name): return name.split(".")[0] -def copy_bone_simple(arm, from_bone, name): +def copy_bone_simple(arm, from_bone, name, parent=False): ebone = arm.edit_bones[from_bone] ebone_new = arm.edit_bones.new(name) + + if parent: + ebone_new.connected = ebone.connected + ebone_new.parent = ebone.parent + ebone_new.head = ebone.head ebone_new.tail = ebone.tail ebone_new.roll = ebone.roll @@ -201,6 +206,9 @@ def gen_finger(obj, orig_bone_name): control_ebone = arm.edit_bones.new(base_name) control_bone_name = control_ebone.name # we dont know if we get the name requested + control_ebone.connected = orig_ebone.connected + control_ebone.parent = orig_ebone.parent + # Place the finger bone head = orig_ebone.head.copy() tail = orig_ebone.tail.copy() @@ -306,8 +314,7 @@ def gen_finger(obj, orig_bone_name): tar.name = "scale" tar.id_type = 'OBJECT' tar.id = obj - tar.array_index = 1 # Y scale - tar.rna_path = controller_path + '.scale' + tar.rna_path = controller_path + '.scale[1]' # bend target tar = driver.targets.new() @@ -433,9 +440,11 @@ def gen_arm(obj, orig_bone_name): # Since there are 3 chains, this gets confusing so divide into 3 chains # Initialize container classes for convenience - mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) - ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) - sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) + mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik + sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge + ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras + def chain_init(): ''' @@ -529,13 +538,18 @@ def gen_arm(obj, orig_bone_name): ik.pole = ik.pole def chain_switch(prefix="MCH-%s"): - + + sw.update() + mt.update() + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) sw.shoulder = sw.shoulder_e.name + sw.shoulder_e.parent = mt.shoulder_e.parent + sw.shoulder_e.connected = mt.shoulder_e.connected sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) sw.arm = sw.arm_e.name - sw.arm_e.parent = sw.arm_e + sw.arm_e.parent = sw.shoulder_e sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) @@ -548,6 +562,14 @@ def gen_arm(obj, orig_bone_name): sw.hand_e.parent = sw.forearm_e sw.hand_e.connected = arm.edit_bones[mt.hand].connected + # The sw.hand_e needs to own all the children on the metarig's hand + for child in mt.hand_e.children: + child.parent = sw.hand_e + + + # These are made the children of sw.shoulder_e + + bpy.ops.object.mode_set(mode='OBJECT') # Add constraints @@ -623,22 +645,75 @@ def gen_arm(obj, orig_bone_name): sw.socket = sw.socket_e.name sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail + + # Set the shoulder as parent + ik.update() + sw.update() + mt.update() + + sw.socket_e.parent = sw.shoulder_e + ik.arm_e.parent = sw.shoulder_e + + + # ***** add the shoulder hinge + # yes this is correct, the shoulder copy gets the arm's name + ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") + ex.arm_hinge = ex.arm_hinge_e.name + offset = ex.arm_hinge_e.length / 2.0 + + ex.arm_hinge_e.head.y += offset + ex.arm_hinge_e.tail.y += offset + + # Note: meta arm becomes child of hinge + mt.arm_e.parent = ex.arm_hinge_e + + bpy.ops.object.mode_set(mode='OBJECT') + ex.update() + con = mt.arm_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = sw.socket + + # Hinge constraint & driver + con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = sw.shoulder + driver_fcurve = con.driver_add("influence", 0) + driver = driver_fcurve.driver + + + controller_path = mt.arm_p.path_to_id() + # add custom prop + mt.arm_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurve.driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "hinge" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["hinge"]' + + bpy.ops.object.mode_set(mode='EDIT') + # remove the shoulder and re-parent chain_init() chain_ik() chain_switch() - - # add the shoulder chain_shoulder() # Shoulder with its delta and hinge. @@ -653,8 +728,10 @@ def gen_palm(obj, orig_bone_name): children.sort() # simply assume the pinky has the lowest name # Make a copy of the pinky - control_ebone = copy_bone_simple(arm, children[0], "palm_control") - control_name = control_ebone.name + pinky_ebone = arm.edit_bones[children[0]] + control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) + control_name = control_ebone.name + offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) control_ebone.head += offset @@ -764,6 +841,9 @@ gen_table = { def generate_rig(context, ob): + global_undo = context.user_preferences.edit.global_undo + context.user_preferences.edit.global_undo = False + # add_stretch_to(ob, "a", "b", "c") bpy.ops.object.mode_set(mode='OBJECT') @@ -797,6 +877,12 @@ def generate_rig(context, ob): # needed to update driver deps # context.scene.update() + + # Only for demo'ing + ob.restrict_view = True + ob_new.data.draw_axes = False + + context.user_preferences.edit.global_undo = global_undo if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) -- cgit v1.2.3 From 22f49ffe717aceda6a5dfb9eb16bb00bf4af9705 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Fri, 27 Nov 2009 18:55:59 +0000 Subject: * Small Cleanup. --- release/scripts/op/object.py | 2 +- release/scripts/op/presets.py | 17 +---------------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 42e59b8de2f..103507ae64e 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -19,7 +19,7 @@ import bpy class SubsurfSet(bpy.types.Operator): - '''TODO, doc.''' + '''Sets a Subdivision Surface Level (1-5)''' bl_idname = "object.subsurf_set" bl_label = "Subsurf Set" diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 5af6fb00e98..0b2e959ff0c 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -23,25 +23,11 @@ class AddPresetBase(bpy.types.Operator): '''Base preset class, only for subclassing subclasses must define - preset_values - - preset_path ''' + - preset_subdir ''' bl_idname = "render.preset_add" bl_label = "Add Render Preset" name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "") - - ''' - preset_values = [ - "bpy.context.scene.render_data.resolution_x", - "bpy.context.scene.render_data.resolution_y", - "bpy.context.scene.render_data.pixel_aspect_x", - "bpy.context.scene.render_data.pixel_aspect_y", - "bpy.context.scene.render_data.fps", - "bpy.context.scene.render_data.fps_base", - "bpy.context.scene.render_data.resolution_percentage", - ] - - preset_subdir = "render" - ''' def _as_filename(self, name): # could reuse for other presets for char in " !@#$%^&*(){}:\";'[]<>,./?": @@ -136,4 +122,3 @@ bpy.ops.add(AddPresetRender) bpy.ops.add(AddPresetSSS) bpy.ops.add(AddPresetCloth) - -- cgit v1.2.3 From e96bd73513cc3e068b2e8b1aeeebccb3a3cd0aac Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 27 Nov 2009 21:15:01 +0000 Subject: Shaded view toggle key (Shift-Z) not needed anymore. --- source/blender/editors/space_view3d/view3d_ops.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index db5fbc70669..03820cbd2d7 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -223,11 +223,6 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "value_1", "TEXTURED"); RNA_string_set(kmi->ptr, "value_2", "SOLID"); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); - RNA_string_set(kmi->ptr, "value_1", "SHADED"); - RNA_string_set(kmi->ptr, "value_2", "WIREFRAME"); - /* selection*/ WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE); -- cgit v1.2.3 From f3692d5e723dbe3d6257469a2a4ff5eb7a27604e Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 28 Nov 2009 01:26:14 +0000 Subject: BPlayer fix (we were still using old scene.r instead of scene.gm here) and more stubs update from Mitchell Stokes (Moguri) (+ a fix in a logic_window.c comment) --- source/blender/editors/space_logic/logic_window.c | 2 +- source/blenderplayer/bad_level_call_stubs/stubs.c | 7 +++++++ source/gameengine/GamePlayer/ghost/GPG_ghost.cpp | 22 ++++++++++++---------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index bc86d8c37b9..8ba0577e3c7 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -637,7 +637,7 @@ static char *sensor_name(int type) static char *sensor_pup(void) { - /* the number needs to match defines in game.h */ + /* the number needs to match defines in DNA_sensor_types.h */ return "Sensors %t|Always %x0|Delay %x13|Keyboard %x3|Mouse %x5|" "Touch %x1|Collision %x6|Near %x2|Radar %x7|" "Property %x4|Random %x8|Ray %x9|Message %x10|Joystick %x11|Actuator %x12|Armature %x14"; diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index f4885724802..f4d3929b08c 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -70,6 +70,8 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen void texture_rgb_blend(float *in, float *tex, float *out, float fact, float facg, int blendtype){} char stipple_quarttone[1]; //GLubyte stipple_quarttone[128] double elbeemEstimateMemreq(int res, float sx, float sy, float sz, int refine, char *retstr) {return 0.0f;} +struct Render *RE_NewRender(const char *name){return (struct Render*) NULL;} +void RE_BlenderFrame(struct Render *re, struct Scene *scene, int frame){} /* rna */ void WM_menutype_free(void){} @@ -82,13 +84,16 @@ void WM_jobs_stop_all(struct wmWindowManager *wm){} void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference){} void ED_armature_bone_rename(struct bArmature *arm, char *oldnamep, char *newnamep){} +void ED_armature_edit_bone_remove(struct bArmature *arm, struct EditBone *exBone){} void object_test_constraints (struct Object *owner){} void ED_object_parent(struct Object *ob, struct Object *par, int type, const char *substr){} void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con){} void ED_node_composit_default(struct Scene *sce){} struct EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, struct EditBone *ebo){return (struct EditBone *) NULL;} +struct EditBone *ED_armature_edit_bone_add(struct bArmature *arm, char *name){return (struct EditBone*) NULL;} struct ListBase *get_active_constraints (struct Object *ob){return (struct ListBase *) NULL;} +struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r){return (struct ListBase *) NULL;} int ED_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan){return 0;} int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit){return 0;} @@ -177,6 +182,7 @@ void uiItemStringO(struct uiLayout *layout, char *name, int icon, char *opname, void uiItemL(struct uiLayout *layout, char *name, int icon){} void uiItemM(struct uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname){} void uiItemS(struct uiLayout *layout){} +void uiItemFullR(struct uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag){} void uiLayoutSetContextPointer(struct uiLayout *layout, char *name, struct PointerRNA *ptr){} /* rna template */ @@ -224,6 +230,7 @@ int WM_operator_poll(struct bContext *C, struct wmOperatorType *ot){return 0;} int WM_operator_props_popup(struct bContext *C, struct wmOperator *op, struct wmEvent *event){return 0;} void WM_operator_properties_free(struct PointerRNA *ptr){} void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring){} +void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot){} void WM_operatortype_append_ptr(void (*opfunc)(struct wmOperatorType*, void*), void *userdata){} void WM_operator_bl_idname(char *to, const char *from){} void WM_operator_py_idname(char *to, const char *from){} diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index fb2e1c72a85..8d9a59b1871 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -688,19 +688,19 @@ int main(int argc, char** argv) if ((!fullScreenParFound) && (!windowParFound)) { // Only use file settings when command line did not override - if (scene->r.fullscreen) { + if (scene->gm.fullscreen) { //printf("fullscreen option found in Blender file\n"); fullScreen = true; - fullScreenWidth= scene->r.xplay; - fullScreenHeight= scene->r.yplay; - fullScreenFrequency= scene->r.freqplay; - fullScreenBpp = scene->r.depth; + fullScreenWidth= scene->gm.xplay; + fullScreenHeight= scene->gm.yplay; + fullScreenFrequency= scene->gm.freqplay; + fullScreenBpp = scene->gm.depth; } else { fullScreen = false; - windowWidth = scene->r.xplay; - windowHeight = scene->r.yplay; + windowWidth = scene->gm.xplay; + windowHeight = scene->gm.yplay; } } @@ -708,9 +708,11 @@ int main(int argc, char** argv) // Check whether the game should be displayed in stereo if (!stereoParFound) { - stereomode = (RAS_IRasterizer::StereoMode) scene->r.stereomode; - if (stereomode == RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) - stereoWindow = true; + if(scene->gm.stereoflag == STEREO_ENABLED){ + stereomode = (RAS_IRasterizer::StereoMode) scene->gm.stereomode; + if (stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) + stereoWindow = true; + } } // GPG_Application app (system, maggie, startscenename); -- cgit v1.2.3 From afe48799911ca09d9eaa4d1928eacc99fb6c7176 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sat, 28 Nov 2009 02:53:11 +0000 Subject: Bugfix #20125: View 2D Zoom to Border was missing modal keymap TODO: a better keymap for specifying zoom in or out mapped to LMB and RMB respectively for zoom to border is required. The current behaviour only allows zoom in... --- source/blender/windowmanager/intern/wm_operators.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7c92eadd1f9..1d6941f471d 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2662,12 +2662,12 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) {GESTURE_MODAL_BORDER_BEGIN, "BEGIN", 0, "Begin", ""}, {0, NULL, 0, NULL, NULL}}; - wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "View3D Gesture Border"); + wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Border"); /* this function is called for each spacetype, only needs to add map once */ if(keymap) return; - keymap= WM_modalkeymap_add(keyconf, "View3D Gesture Border", modal_items); + keymap= WM_modalkeymap_add(keyconf, "Gesture Border", modal_items); /* items for modal map */ WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); @@ -2697,10 +2697,11 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) // WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template WM_modalkeymap_assign(keymap, "SEQUENCER_OT_select_border"); WM_modalkeymap_assign(keymap, "UV_OT_select_border"); + WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_clip_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_render_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_border"); - WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); + WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); // XXX TODO: zoom border should perhaps map rightmouse to zoom out instead of in+cancel } /* default keymap for windows and screens, only call once per WM */ -- cgit v1.2.3 From c6b4c2716a5fb2784b9b2ddc5ec555ff68a2d24b Mon Sep 17 00:00:00 2001 From: Roland Hess Date: Sat, 28 Nov 2009 03:45:40 +0000 Subject: Head/Tail property was never added for Track To and Stretch To constraint types. Added to RNA and changed UI check. --- release/scripts/ui/properties_object_constraint.py | 2 +- source/blender/makesrna/intern/rna_constraint.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 54efa733152..d3bad4e7bdb 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -77,7 +77,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): else: layout.prop_object(con, "subtarget", con.target.data, "bones", text="") - if con.type == 'COPY_LOCATION': + if con.type in ('COPY_LOCATION', 'STRETCH_TO', 'TRACK_TO'): row = layout.row() row.label(text="Head/Tail:") row.prop(con, "head_tail", text="") diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index b7602a5948b..de306e21756 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -610,6 +610,12 @@ static void rna_def_constraint_track_to(BlenderRNA *brna) srna= RNA_def_struct(brna, "TrackToConstraint", "Constraint"); RNA_def_struct_ui_text(srna, "Track To Constraint", "Aims the constrained object toward the target."); + + prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, "bConstraint", "headtail"); + RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + RNA_def_struct_sdna_from(srna, "bTrackToConstraint", "data"); prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); @@ -1061,6 +1067,12 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna) srna= RNA_def_struct(brna, "StretchToConstraint", "Constraint"); RNA_def_struct_ui_text(srna, "Stretch To Constraint", "Stretches to meet the target object."); + + prop= RNA_def_property(srna, "head_tail", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, "bConstraint", "headtail"); + RNA_def_property_ui_text(prop, "Head/Tail", "Target along length of bone: Head=0, Tail=1."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + RNA_def_struct_sdna_from(srna, "bStretchToConstraint", "data"); prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); -- cgit v1.2.3 From 54c5859578362976cc54b4e04f0a513117b4698e Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sat, 28 Nov 2009 03:49:45 +0000 Subject: Durian Rigging Requests: (Armature Layers + Rotation Locking Tweaks) * Increased the number of Armature and Bone Layers from 16 to 32. Please note that older versions of Blender may not correctly resolve the layers that bones are on when loading new files. * Newly added objects are now made by default to allow locking of 4-component rotations using 4 separate locks (i.e. one by component) instead of requiring the obscure 'W' toggle (renamed '4L' now) to be enabled first. The objects in the default scene need modifying manually though. --- source/blender/blenkernel/intern/action.c | 5 +++ source/blender/blenkernel/intern/object.c | 4 ++ source/blender/editors/armature/poseobject.c | 26 ++++++------ source/blender/editors/include/ED_armature.h | 7 ++-- .../blender/editors/space_view3d/view3d_buttons.c | 27 ++++++------- source/blender/makesdna/DNA_armature_types.h | 12 ++++-- source/blender/makesrna/intern/rna_armature.c | 46 +++++----------------- 7 files changed, 54 insertions(+), 73 deletions(-) diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index cb6fef0bc30..ace1292f813 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -456,6 +456,8 @@ bPoseChannel *verify_pose_channel(bPose* pose, const char* name) chan->ikrotweight = chan->iklinweight = 0.0f; unit_m4(chan->constinv); + chan->protectflag = OB_LOCK_ROT4D; /* lock by components by default */ + BLI_addtail(&pose->chanbase, chan); return chan; @@ -1083,7 +1085,10 @@ void copy_pose_result(bPose *to, bPose *from) VECCOPY(pchanto->pose_head, pchanfrom->pose_head); VECCOPY(pchanto->pose_tail, pchanfrom->pose_tail); + + pchanto->rotmode= pchanfrom->rotmode; pchanto->flag= pchanfrom->flag; + pchanto->protectflag= pchanfrom->protectflag; } } } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c537f9f57b0..73a1d2023a2 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1044,6 +1044,10 @@ Object *add_object(struct Scene *scene, int type) ob->rotmode= ROT_MODE_EUL; /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */ ob->rotAxis[1]= ob->drotAxis[1]= 1.0f; + /* quaternions should be 1,0,0,0 by default.... */ + ob->quat[0]= 1.0f; + /* rotation locks should be 4D for 4 component rotations by default... */ + ob->protectflag = OB_LOCK_ROT4D; base= scene_add_base(scene, ob); scene_select_base(scene, base); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index f415eeb421f..aeb42142abd 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1464,7 +1464,7 @@ static short pose_select_same_layer (Object *ob) bPose *pose= (ob)? ob->pose : NULL; bArmature *arm= (ob)? ob->data : NULL; bPoseChannel *pchan; - short layers= 0, changed= 0; + int layers= 0, changed= 0; if (ELEM3(NULL, ob, pose, arm)) return 0; @@ -1670,7 +1670,7 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev Object *ob= CTX_data_active_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* sanity checking */ if (arm == NULL) @@ -1691,7 +1691,7 @@ static int pose_armature_layers_exec (bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); bArmature *arm= (ob)? ob->data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); @@ -1723,7 +1723,7 @@ void POSE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible"); } void ARMATURE_OT_armature_layers (wmOperatorType *ot) @@ -1742,7 +1742,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers to make visible"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers to make visible"); } /* ------------------- */ @@ -1750,7 +1750,7 @@ void ARMATURE_OT_armature_layers (wmOperatorType *ot) /* Present a popup to get the layers that should be used */ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) { - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */ @@ -1760,7 +1760,7 @@ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ - for (bit= 0; bit < 16; bit++) { + for (bit= 0; bit < 32; bit++) { if (pchan->bone->layer & (1<data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); @@ -1816,7 +1816,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to"); } /* ------------------- */ @@ -1824,7 +1824,7 @@ void POSE_OT_bone_layers (wmOperatorType *ot) /* Present a popup to get the layers that should be used */ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) { - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ memset(&layers, 0, sizeof(layers)); /* set all layers to be off by default */ @@ -1834,7 +1834,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ - for (bit= 0; bit < 16; bit++) { + for (bit= 0; bit < 32; bit++) { if (ebone->layer & (1<data : NULL; PointerRNA ptr; - int layers[16]; /* hardcoded for now - we can only have 16 armature layers, so this should be fine... */ + int layers[32]; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get the values set in the operator properties */ RNA_boolean_get_array(op->ptr, "layers", layers); @@ -1890,7 +1890,7 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean_layer_member(ot->srna, "layers", 16, NULL, "Layer", "Armature layers that bone belongs to"); + RNA_def_boolean_layer_member(ot->srna, "layers", 32, NULL, "Layer", "Armature layers that bone belongs to"); } /* ********************************************** */ diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index f054e229147..083884336d2 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -65,17 +65,16 @@ typedef struct EditBone their parents. Therefore any rotations specified during the animation are automatically relative to the bones' rest positions*/ int flag; - - int parNr; /* Used for retrieving values from the menu system */ + int layer; float dist, weight; float xwidth, length, zwidth; /* put them in order! transform uses this as scale */ float ease1, ease2; float rad_head, rad_tail; - short layer, segments; float oldlength; /* for envelope scaling */ - + + short segments; } EditBone; #define BONESEL_ROOT 0x10000000 diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index 0eddeba6ff9..a988ceb50e7 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -521,40 +521,35 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) split = uiLayoutSplit(layout, 0.8); switch(RNA_enum_get(ptr, "rotation_mode")) { - case ROT_MODE_XYZ: - case ROT_MODE_XZY: - case ROT_MODE_YXZ: - case ROT_MODE_YZX: - case ROT_MODE_ZXY: - case ROT_MODE_ZYX: - colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); - colsub = uiLayoutColumn(split, 1); - uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); - break; - case ROT_MODE_QUAT: + case ROT_MODE_QUAT: /* quaternion */ colsub = uiLayoutColumn(split, 1); uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); 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); else uiItemL(colsub, "", 0); uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); break; - case ROT_MODE_AXISANGLE: + case ROT_MODE_AXISANGLE: /* axis angle */ colsub = uiLayoutColumn(split, 1); uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); 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); else uiItemL(colsub, "", 0); uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); break; + default: /* euler rotations */ + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); + colsub = uiLayoutColumn(split, 1); + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + break; } uiItemR(layout, "", 0, ptr, "rotation_mode", 0); diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 0f0da7fe807..ea549f9aeba 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -66,8 +66,9 @@ typedef struct Bone { float rad_head, rad_tail; /* radius for head/tail sphere, defining deform as well, parent->rad_tip overrides rad_head*/ float size[3]; /* patch for upward compat, UNUSED! */ - short layer; + int layer; /* layers that bone appears on */ short segments; /* for B-bones */ + short pad[3]; } Bone; typedef struct bArmature { @@ -78,8 +79,8 @@ typedef struct bArmature { ListBase chainbase; ListBase *edbo; /* editbone listbase, we use pointer so we can check state */ - Bone *act_bone; - void *act_edbone; + Bone *act_bone; /* active bone (when not in editmode) */ + void *act_edbone; /* active editbone (in editmode) */ void *sketch; /* sketch struct for etch-a-ton */ @@ -87,7 +88,10 @@ typedef struct bArmature { int drawtype; short deformflag; short pathflag; - short layer, layer_protected; /* for buttons to work, both variables in this order together */ + + int pad; + + int layer, layer_protected; /* for buttons to work, both variables in this order together */ short ghostep, ghostsize; /* number of frames to ghosts to show, and step between them */ short ghosttype, pathsize; /* ghost drawing options and number of frames between points of path */ int ghostsf, ghostef; /* start and end frames of ghost-drawing range */ diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index a5b21d5447d..7986da818c8 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -139,19 +139,19 @@ static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create) return ebone->prop; } -static void rna_bone_layer_set(short *layer, const int *values) +static void rna_bone_layer_set(int *layer, const int *values) { int i, tot= 0; /* ensure we always have some layer selected */ - for(i=0; i<16; i++) + for(i=0; i<32; i++) if(values[i]) tot++; if(tot==0) return; - for(i=0; i<16; i++) { + for(i=0; i<32; i++) { if(values[i]) *layer |= (1<layer |= (1<layer &= ~(1<data); - values[0]= ((data->layer & (1<<0)) != 0); - values[1]= ((data->layer & (1<<1)) != 0); - values[2]= ((data->layer & (1<<2)) != 0); - values[3]= ((data->layer & (1<<3)) != 0); - values[4]= ((data->layer & (1<<4)) != 0); - values[5]= ((data->layer & (1<<5)) != 0); - values[6]= ((data->layer & (1<<6)) != 0); - values[7]= ((data->layer & (1<<7)) != 0); - values[8]= ((data->layer & (1<<8)) != 0); - values[9]= ((data->layer & (1<<9)) != 0); - values[10]= ((data->layer & (1<<10)) != 0); - values[11]= ((data->layer & (1<<11)) != 0); - values[12]= ((data->layer & (1<<12)) != 0); - values[13]= ((data->layer & (1<<13)) != 0); - values[14]= ((data->layer & (1<<14)) != 0); - values[15]= ((data->layer & (1<<15)) != 0); -} - -static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16]) +static void rna_EditBone_layer_set(PointerRNA *ptr, const int values[]) { EditBone *data= (EditBone*)(ptr->data); rna_bone_layer_set(&data->layer, values); @@ -405,8 +384,8 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) /* flags */ prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "layer", 1); - RNA_def_property_array(prop, 16); - if(editbone) RNA_def_property_boolean_funcs(prop, "rna_EditBone_layer_get", "rna_EditBone_layer_set"); + RNA_def_property_array(prop, 32); + if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_layer_set"); else RNA_def_property_boolean_funcs(prop, NULL, "rna_Bone_layer_set"); RNA_def_property_ui_text(prop, "Layers", "Layers bone exists in"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); @@ -763,11 +742,6 @@ static void rna_def_armature(BlenderRNA *brna) rna_def_armature_edit_bones(brna, prop); /* Enum values */ -// prop= RNA_def_property(srna, "rest_position", PROP_BOOLEAN, PROP_NONE); -// RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_RESTPOS); -// RNA_def_property_ui_text(prop, "Rest Position", "Show Armature in Rest Position. No posing possible."); -// RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "pose_position", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, prop_pose_position_items); @@ -801,7 +775,7 @@ static void rna_def_armature(BlenderRNA *brna) /* layer */ prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "layer", 1); - RNA_def_property_array(prop, 16); + RNA_def_property_array(prop, 32); RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility."); RNA_def_property_boolean_funcs(prop, NULL, "rna_Armature_layer_set"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Armature_redraw_data"); @@ -810,7 +784,7 @@ static void rna_def_armature(BlenderRNA *brna) /* layer protection */ prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_LAYER); RNA_def_property_boolean_sdna(prop, NULL, "layer_protected", 1); - RNA_def_property_array(prop, 16); + RNA_def_property_array(prop, 32); RNA_def_property_ui_text(prop, "Layer Proxy Protection", "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo."); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); -- cgit v1.2.3 From aa3ed478483e02101d7ee04d9118f5ecca066a8e Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sat, 28 Nov 2009 04:04:01 +0000 Subject: * New tool - Join as Shapes Available in object mode (Object -> Join as Shapes), only works for meshes at the present. Will merge all selected objects as shape keys on the active object, if the vertex count is the same. This does not keep references to the external objects like in some applications, rather it's a quick way to update the shapes on the active object (perhaps after importing new versions from external applications). --- release/scripts/ui/space_view3d.py | 1 + source/blender/editors/include/ED_mesh.h | 1 + source/blender/editors/mesh/meshtools.c | 78 +++++++++++ source/blender/editors/object/object_add.c | 70 ++++++++-- source/blender/editors/object/object_intern.h | 1 + source/blender/editors/object/object_modifier.c | 166 +++++++++++++----------- source/blender/editors/object/object_ops.c | 1 + 7 files changed, 231 insertions(+), 87 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index fa7cbe152de..e61394832da 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -603,6 +603,7 @@ class VIEW3D_MT_object(bpy.types.Menu): layout.separator() + layout.operator("object.join_shapes") layout.operator("object.join") layout.separator() diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 35e1f10b516..ba26104a555 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -83,6 +83,7 @@ int mesh_get_x_mirror_vert(struct Object *ob, int index); int *mesh_get_x_mirror_faces(struct Object *ob, struct EditMesh *em); int join_mesh_exec(struct bContext *C, struct wmOperator *op); +int join_mesh_shapes_exec(struct bContext *C, struct wmOperator *op); /* mesh_ops.c */ void ED_operatortypes_mesh(void); diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 5313b68be9b..02833bdf3f7 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -31,6 +31,7 @@ meshtools.c: no editmode (violated already :), tools operating on meshes */ +#include #include #include #include @@ -62,6 +63,7 @@ #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_depsgraph.h" +#include "BKE_DerivedMesh.h" #include "BKE_customdata.h" #include "BKE_global.h" #include "BKE_image.h" @@ -543,6 +545,82 @@ int join_mesh_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +/*********************** JOIN AS SHAPES ***************************/ + +/* Append selected meshes vertex locations as shapes of the active mesh, + return 0 if no join is made (error) and 1 of the join is done */ + +int join_mesh_shapes_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); + Mesh *me= (Mesh *)ob->data; + Mesh *selme=NULL; + DerivedMesh *dm=NULL; + Key *key=me->key; + KeyBlock *kb; + int ok=0, nonequal_verts=0; + + CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + if (base->object == ob) continue; + + if (base->object->type==OB_MESH) { + selme = (Mesh *)base->object->data; + + if (selme->totvert==me->totvert) + ok++; + else + nonequal_verts=1; + } + } + CTX_DATA_END; + + if (!ok) { + if (nonequal_verts) + BKE_report(op->reports, RPT_ERROR, "Selected meshes must have equal numbers of vertices."); + else + BKE_report(op->reports, RPT_ERROR, "No additional selected meshes with equal vertex count to join."); + return OPERATOR_CANCELLED; + } + + if(key == NULL) { + key= me->key= add_key((ID *)me); + key->type= KEY_RELATIVE; + + /* first key added, so it was the basis. initialise it with the existing mesh */ + kb= add_keyblock(scene, key); + mesh_to_key(me, kb); + } + + /* now ready to add new keys from selected meshes */ + CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + if (base->object == ob) continue; + + if(base->object->type==OB_MESH) { + selme = (Mesh *)base->object->data; + + if (selme->totvert==me->totvert) { + dm = mesh_get_derived_deform(scene, base->object, CD_MASK_BAREMESH); + + if (!dm) continue; + + kb= add_keyblock(scene, key); + strcpy(kb->name, base->object->id.name+2); + BLI_uniquename(&key->block, kb, "Key", '.', offsetof(KeyBlock, name), 32); + + DM_to_meshkey(dm, me, kb); + + dm->release(dm); + } + } + } + CTX_DATA_END; + + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + + return OPERATOR_FINISHED; +} + /* ********************** SORT FACES ******************* */ static void permutate(void *list, int num, int size, int *index) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e3d2ef336fc..1cda61fe90f 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1506,6 +1506,18 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) } /**************************** Join *************************/ +static int join_poll(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if (!ob) return 0; + + if (ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_ARMATURE)) + return ED_operator_screenactive(C); + else + return 0; +} + static int join_exec(bContext *C, wmOperator *op) { @@ -1516,10 +1528,6 @@ static int join_exec(bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode."); return OPERATOR_CANCELLED; } - else if(!ob) { - BKE_report(op->reports, RPT_ERROR, "Can't join unless there is an active object."); - return OPERATOR_CANCELLED; - } else if(object_data_is_libdata(ob)) { BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata."); return OPERATOR_CANCELLED; @@ -1531,9 +1539,7 @@ static int join_exec(bContext *C, wmOperator *op) return join_curve_exec(C, op); else if(ob->type == OB_ARMATURE) return join_armature_exec(C, op); - - BKE_report(op->reports, RPT_ERROR, "This object type doesn't support joining."); - + return OPERATOR_CANCELLED; } @@ -1546,9 +1552,57 @@ void OBJECT_OT_join(wmOperatorType *ot) /* api callbacks */ ot->exec= join_exec; - ot->poll= ED_operator_scene_editable; + ot->poll= join_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/**************************** Join as Shape Key*************************/ +static int join_shapes_poll(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if (!ob) return 0; + + /* only meshes supported at the moment */ + if (ob->type == OB_MESH) + return ED_operator_screenactive(C); + else + return 0; +} + +static int join_shapes_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); + + if(scene->obedit) { + BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode."); + return OPERATOR_CANCELLED; + } + else if(object_data_is_libdata(ob)) { + BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata."); + return OPERATOR_CANCELLED; + } + + if(ob->type == OB_MESH) + return join_mesh_shapes_exec(C, op); + + return OPERATOR_CANCELLED; +} + +void OBJECT_OT_join_shapes(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Join as Shapes"; + ot->description = "Merge selected objects to shapes of active object."; + ot->idname= "OBJECT_OT_join_shapes"; + + /* api callbacks */ + ot->exec= join_shapes_exec; + ot->poll= join_shapes_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 046dd8939ba..9230dca7ba2 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -106,6 +106,7 @@ void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot); void OBJECT_OT_duplicate(struct wmOperatorType *ot); void OBJECT_OT_delete(struct wmOperatorType *ot); void OBJECT_OT_join(struct wmOperatorType *ot); +void OBJECT_OT_join_shapes(struct wmOperatorType *ot); void OBJECT_OT_convert(struct wmOperatorType *ot); /* object_hook.c */ diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 58f2ed443ca..7bb5eb6f63b 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -331,119 +331,127 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo return 1; } -int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode) +static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) { - DerivedMesh *dm; - Mesh *me = ob->data; - int converted = 0; + if (ob->type==OB_MESH) { + DerivedMesh *dm; + Mesh *me= ob->data; + Key *key=me->key; + KeyBlock *kb; + + if(!modifier_sameTopology(md)) { + BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes"); + return 0; + } + mesh_pmv_off(ob, me); + + 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(key == NULL) { + key= me->key= add_key((ID *)me); + key->type= KEY_RELATIVE; + /* if that was the first key block added, then it was the basis. + * Initialise it with the mesh, and add another for the modifier */ + kb= add_keyblock(scene, key); + mesh_to_key(me, kb); + } - if (scene->obedit) { - BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode"); - return 0; - } else if (((ID*) ob->data)->us>1) { - BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data"); + kb= add_keyblock(scene, key); + DM_to_meshkey(dm, me, kb); + + dm->release(dm); + } + else { + BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type"); return 0; } + return 1; +} - if (md!=ob->modifiers.first) - BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected."); - +static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) +{ if (ob->type==OB_MESH) { - if (mode == MODIFIER_APPLY_SHAPE) { - Key *key=me->key; - KeyBlock *kb; - int newkey=0; - - if(!modifier_sameTopology(md)) { - BKE_report(reports, RPT_ERROR, "Only deforming modifiers can be applied to Shapes"); - return 0; - } - mesh_pmv_off(ob, me); - - 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(key == NULL) { - key= me->key= add_key((ID *)me); - key->type= KEY_RELATIVE; - newkey= 1; - } - kb= add_keyblock(scene, key); - - if (newkey) { - /* if that was the first key block added, then it was the basis. - * Initialise it with the mesh, and add another for the modifier */ - mesh_to_key(me, kb); - kb= add_keyblock(scene, key); - } - DM_to_meshkey(dm, me, kb); - converted = 1; - - dm->release(dm); + DerivedMesh *dm; + Mesh *me = ob->data; + if( me->key) { + BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys"); + return 0; } - else { /* MODIFIER_APPLY_DATA */ - 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; - } - - DM_to_mesh(dm, me); - converted = 1; - - dm->release(dm); + + 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; } + + 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; 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))) { BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); return 0; } - + vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts); mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0); curve_applyVertexCos(cu, &cu->nurb, vertexCos); - converted = 1; - MEM_freeN(vertexCos); - + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else { BKE_report(reports, RPT_ERROR, "Cannot apply modifier for this object type"); return 0; } + return 1; +} - if (converted) { - BLI_remlink(&ob->modifiers, md); - modifier_free(md); +int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, ModifierData *md, int mode) +{ + if (scene->obedit) { + BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode"); + return 0; + } else if (((ID*) ob->data)->us>1) { + BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data"); + return 0; + } + + if (md!=ob->modifiers.first) + BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected."); - return 1; + if (mode == MODIFIER_APPLY_SHAPE) { + if (!modifier_apply_shape(reports, scene, ob, md)) + return 0; + } else { + if (!modifier_apply_obdata(reports, scene, ob, md)) + return 0; } - return 0; + BLI_remlink(&ob->modifiers, md); + modifier_free(md); + + return 1; } int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md) diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index c9a0b3f0614..edcd15492e8 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -124,6 +124,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_duplicates_make_real); WM_operatortype_append(OBJECT_OT_duplicate); WM_operatortype_append(OBJECT_OT_join); + WM_operatortype_append(OBJECT_OT_join_shapes); WM_operatortype_append(OBJECT_OT_convert); WM_operatortype_append(OBJECT_OT_modifier_add); -- cgit v1.2.3 From 49b828f7fe484886d050e7884b69cab08db448b6 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sat, 28 Nov 2009 04:43:15 +0000 Subject: A few new mouse navigation config options to help transitioning users * Dolly zoom Vertical/Horizontal switch Changes between using vertical or horizontal mouse movement for zooming * Invert Zoom Direction Inverts the vertical or horizontal mouse movement for dolly zoom --- release/scripts/ui/space_userpref.py | 4 +++- source/blender/editors/space_view3d/view3d_edit.c | 15 +++++++++++-- source/blender/makesdna/DNA_userdef_types.h | 4 +++- source/blender/makesrna/intern/rna_userdef.c | 26 +++++++++++++---------- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 4dfcc80ca1d..e9f49665062 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1136,6 +1136,9 @@ class USERPREF_PT_input(bpy.types.Panel): sub.label(text="Zoom Style:") sub.row().prop(inputs, "viewport_zoom_style", expand=True) + if inputs.viewport_zoom_style == 'DOLLY': + sub.row().prop(inputs, "zoom_axis", expand=True) + sub.prop(inputs, "invert_zoom_direction") #sub.prop(inputs, "use_middle_mouse_paste") @@ -1143,7 +1146,6 @@ class USERPREF_PT_input(bpy.types.Panel): #sub = col.column() #sub.label(text="Mouse Wheel:") - #sub.prop(view, "wheel_invert_zoom", text="Invert Zoom") #sub.prop(view, "wheel_scroll_lines", text="Scroll Lines") col.separator() diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 22dd7c6da87..2444c461bd0 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -851,8 +851,19 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) zfac = vod->dist0 * ((float)len2/len1) / vod->rv3d->dist; } else { /* USER_ZOOM_DOLLY */ - float len1 = (vod->ar->winrct.ymax - y) + 5; - float len2 = (vod->ar->winrct.ymax - vod->origy) + 5; + float len1, len2; + + if (U.uiflag & USER_ZOOM_DOLLY_HORIZ) { + len1 = (vod->ar->winrct.xmax - x) + 5; + len2 = (vod->ar->winrct.xmax - vod->origx) + 5; + } + else { + len1 = (vod->ar->winrct.ymax - y) + 5; + len2 = (vod->ar->winrct.ymax - vod->origy) + 5; + } + if (U.uiflag & USER_ZOOM_INVERT) + SWAP(float, len1, len2); + zfac = vod->dist0 * (2.0*((len2/len1)-1.0) + 1.0) / vod->rv3d->dist; } diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index b70d3786eae..6e610b1c32d 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -414,7 +414,9 @@ extern UserDef U; /* from blenkernel blender.c */ #define USER_SHOW_FPS (1 << 21) #define USER_MMB_PASTE (1 << 22) #define USER_MENUFIXEDORDER (1 << 23) -#define USER_CONTINUOUS_MOUSE (1 << 24) +#define USER_CONTINUOUS_MOUSE (1 << 24) +#define USER_ZOOM_INVERT (1 << 25) +#define USER_ZOOM_DOLLY_HORIZ (1 << 26) /* Auto-Keying mode */ /* AUTOKEY_ON is a bitflag */ diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 1d4e422c7d5..d46f78a7c60 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2268,26 +2268,21 @@ static void rna_def_userdef_input(BlenderRNA *brna) {USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem middle_mouse_mouse_items[] = { - {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."}, - {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."}, - {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem view_zoom_styles[] = { {USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."}, {USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."}, {USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem view_zoom_axes[] = { + {0, "VERTICAL", 0, "Vertical", "Zooms in and out based on vertical mouse movement."}, + {USER_ZOOM_DOLLY_HORIZ, "HORIZONTAL", 0, "Horizontal", "Zooms in and out based on horizontal mouse movement."}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesInput", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "UserPreferences"); RNA_def_struct_ui_text(srna, "Input", "Settings for input devices."); - - prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, middle_mouse_mouse_items); - RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view."); prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); @@ -2299,6 +2294,15 @@ static void rna_def_userdef_input(BlenderRNA *brna) RNA_def_property_enum_items(prop, view_zoom_styles); RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling."); + prop= RNA_def_property(srna, "zoom_axis", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag"); + RNA_def_property_enum_items(prop, view_zoom_axes); + RNA_def_property_ui_text(prop, "Zoom Axis", "Axis of mouse movement to zoom in or out on."); + + prop= RNA_def_property(srna, "invert_zoom_direction", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_INVERT); + RNA_def_property_ui_text(prop, "Invert Zoom Direction", "Invert the axis of mouse movement for zooming"); + prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, view_rotation_items); @@ -2306,7 +2310,7 @@ static void rna_def_userdef_input(BlenderRNA *brna) prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE); - RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view"); + RNA_def_property_ui_text(prop, "Continuous Grab", "Allow moving the mouse outside the view on some manipulations (transform, ui control drag)."); prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "ndof_pan"); -- cgit v1.2.3 From bc43e47c2b761938ecfb7cbfad05c4fd164622a1 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sat, 28 Nov 2009 04:51:15 +0000 Subject: Bugfix #20127: Crash in dope sheet when opening regression file Was using wrong pointer to action/keyframe data for shapekey expander channels causing crash --- source/blender/editors/animation/keyframes_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index 23daa4a9034..83acfbee940 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -382,7 +382,7 @@ short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, B case ALE_GROUP: /* action group */ return agrp_keys_bezier_loop(bed, (bActionGroup *)ale->data, bezt_ok, bezt_cb, fcu_cb); case ALE_ACT: /* action */ - return act_keys_bezier_loop(bed, (bAction *)ale->data, bezt_ok, bezt_cb, fcu_cb); + return act_keys_bezier_loop(bed, (bAction *)ale->key_data, bezt_ok, bezt_cb, fcu_cb); case ALE_OB: /* object */ return ob_keys_bezier_loop(bed, (Object *)ale->key_data, bezt_ok, bezt_cb, fcu_cb, filterflag); -- cgit v1.2.3 From b4aceb0e405c342362c7a3fe12c8fa9acf8b5cdf Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 28 Nov 2009 11:32:09 +0000 Subject: Fixed some more names after the Python UI API changes --- release/scripts/ui/space_view3d.py | 12 ++++++------ release/scripts/ui/space_view3d_toolbar.py | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index e61394832da..6a6505e1fb2 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -102,9 +102,9 @@ class VIEW3D_MT_transform(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' - layout.operator("object.center_set", text="ObData to Center").type = 'CENTER' - layout.operator("object.center_set", text="Center New").type = 'CENTER_NEW' - layout.operator("object.center_set", text="Center Cursor").type = 'CENTER_CURSOR' + layout.operator("object.center_set", text="ObData to Centroid").type = 'CENTER' + layout.operator("object.center_set", text="Centroid to ObData").type = 'CENTER_NEW' + layout.operator("object.center_set", text="Centroid to 3D Cursor").type = 'CENTER_CURSOR' class VIEW3D_MT_mirror(bpy.types.Menu): bl_label = "Mirror" @@ -197,7 +197,7 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() - layout.operator("view3d.view_persportho") + layout.operator("view3d.view_persportho", text="Toggle Perspective") layout.separator() @@ -349,8 +349,8 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): layout.separator() - layout.operator("pose.select_hierarchy").direction = 'PARENT' - layout.operator("pose.select_hierarchy").direction = 'CHILD' + layout.operator("pose.select_hierarchy", text="Parent").direction = 'PARENT' + layout.operator("pose.select_hierarchy", text="Child").direction = 'CHILD' layout.separator() diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index f9147dc8b76..012a4a18fdd 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -173,8 +173,8 @@ class VIEW3D_PT_tools_curveedit(View3DPanel): col.operator("tfm.resize", text="Scale") col = layout.column(align=True) - col.operator("tfm.transform").mode = 'TILT' - col.operator("tfm.transform").mode = 'CURVE_SHRINKFATTEN' + col.operator("tfm.transform", text="Tilt").mode = 'TILT' + col.operator("tfm.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN' col = layout.column(align=True) col.label(text="Curve:") @@ -188,9 +188,9 @@ class VIEW3D_PT_tools_curveedit(View3DPanel): col.label(text="Handles:") row = col.row() row.operator("curve.handle_type_set", text="Auto").type = 'AUTOMATIC' - row.operator("curve.handle_type_set").type = 'VECTOR' + row.operator("curve.handle_type_set", text="Vector").type = 'VECTOR' row = col.row() - row.operator("curve.handle_type_set").type = 'ALIGN' + row.operator("curve.handle_type_set", text="Align").type = 'ALIGN' row.operator("curve.handle_type_set", text="Free").type = 'FREE_ALIGN' col = layout.column(align=True) @@ -273,9 +273,9 @@ class VIEW3D_PT_tools_textedit(View3DPanel): col = layout.column(align=True) col.label(text="Style:") - col.operator("font.style_toggle").style = 'BOLD' - col.operator("font.style_toggle").style = 'ITALIC' - col.operator("font.style_toggle").style = 'UNDERLINE' + col.operator("font.style_toggle", text="Bold").style = 'BOLD' + col.operator("font.style_toggle", text="Italic").style = 'ITALIC' + col.operator("font.style_toggle", text="Underline").style = 'UNDERLINE' col = layout.column(align=True) col.label(text="Repeat:") -- cgit v1.2.3 From 9094f2072e2e9c3d67c62058e21ee103d5726f37 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 28 Nov 2009 11:34:04 +0000 Subject: Rename 'Object Center' to 'Centroid'. This makes the Center/Center Cursor etc popup menu much easier to understand. --- source/blender/editors/object/object_transform.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index a8be62f96cf..19157c6aa6a 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -695,9 +695,9 @@ void texspace_edit(Scene *scene, View3D *v3d) /********************* Set Object Center ************************/ static EnumPropertyItem prop_set_center_types[] = { - {0, "CENTER", 0, "ObData to Center", "Move object data around Object center"}, - {1, "CENTER_NEW", 0, "Center New", "Move Object center to center of object data"}, - {2, "CENTER_CURSOR", 0, "Center Cursor", "Move Object Center to position of the 3d cursor"}, + {0, "CENTER", 0, "ObData to Centroi", "Move object data to Object centroid"}, + {1, "CENTER_NEW", 0, "Centroid to ObData", "Move Object centroid to center of object data"}, + {2, "CENTER_CURSOR", 0, "Centroid to 3D Cursor", "Move Object centroid to position of the 3d cursor"}, {0, NULL, 0, NULL, NULL} }; -- cgit v1.2.3 From b83751d8c2a3fd85e6e8e301ee1f986d684b03d5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Nov 2009 13:11:41 +0000 Subject: Math Lib: merging over some changes from the sculpt branch: * swap v2/v3 * multiply-and-add (madd) v3 * inline v3 short/float conversion * mul_v3_m3v3 --- source/blender/blenlib/BLI_math_matrix.h | 1 + source/blender/blenlib/BLI_math_vector.h | 12 ++++- source/blender/blenlib/intern/math_geom.c | 2 +- source/blender/blenlib/intern/math_matrix.c | 18 ++++--- source/blender/blenlib/intern/math_vector.c | 14 ----- source/blender/blenlib/intern/math_vector_inline.c | 59 +++++++++++++++++++++- 6 files changed, 80 insertions(+), 26 deletions(-) diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h index 53476e4d03c..5667fb79332 100644 --- a/source/blender/blenlib/BLI_math_matrix.h +++ b/source/blender/blenlib/BLI_math_matrix.h @@ -82,6 +82,7 @@ void mul_m4_v4(float M[4][4], float r[3]); void mul_project_m4_v4(float M[4][4], float r[3]); void mul_m3_v3(float M[3][3], float r[3]); +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]); void mul_transposed_m3_v3(float M[3][3], float r[3]); void mul_m3_v3_double(float M[3][3], double r[3]); diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index e21c3800acc..399c234a108 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -54,6 +54,9 @@ MINLINE void zero_v3(float r[3]); MINLINE void copy_v2_v2(float r[2], float a[2]); MINLINE void copy_v3_v3(float r[3], float a[3]); +MINLINE void swap_v2_v2(float a[2], float b[2]); +MINLINE void swap_v3_v3(float a[3], float b[3]); + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float r[2], float a[2]); @@ -72,6 +75,11 @@ MINLINE void mul_v3_v3fl(float r[3], float a[3], float f); MINLINE void mul_v3_v3(float r[3], float a[3]); MINLINE void mul_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f); +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]); +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f); +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]); + MINLINE void negate_v3(float r[3]); MINLINE void negate_v3_v3(float r[3], float a[3]); @@ -137,8 +145,8 @@ void print_v2(char *str, float a[2]); void print_v3(char *str, float a[3]); void print_v4(char *str, float a[4]); -void normal_short_to_float_v3(float r[3], short n[3]); -void normal_float_to_short_v3(short r[3], float n[3]); +MINLINE void normal_short_to_float_v3(float r[3], short n[3]); +MINLINE void normal_float_to_short_v3(short r[3], float n[3]); void minmax_v3_v3v3(float r[3], float min[3], float max[3]); diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index aa43201fd46..efa5876e1b0 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1602,7 +1602,7 @@ void tangent_from_uv(float *uv1, float *uv2, float *uv3, float *co1, float *co2, /* vector clouds */ /* void vcloud_estimate_transform(int list_size, float (*pos)[3], float *weight,float (*rpos)[3], float *rweight, float lloc[3],float rloc[3],float lrot[3][3],float lscale[3][3]) -/* + input ( int list_size diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index edab1cc2440..47b99bce8ab 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -338,15 +338,19 @@ void mul_m4_v4(float mat[][4], float *vec) vec[3]=x*mat[0][3] + y*mat[1][3] + z*mat[2][3] + mat[3][3]*vec[3]; } -void mul_m3_v3(float mat[][3], float *vec) +void mul_v3_m3v3(float r[3], float M[3][3], float a[3]) { - float x,y; + r[0]= M[0][0]*a[0] + M[1][0]*a[1] + M[2][0]*a[2]; + r[1]= M[0][1]*a[0] + M[1][1]*a[1] + M[2][1]*a[2]; + r[2]= M[0][2]*a[0] + M[1][2]*a[1] + M[2][2]*a[2]; +} - x=vec[0]; - y=vec[1]; - vec[0]= x*mat[0][0] + y*mat[1][0] + mat[2][0]*vec[2]; - vec[1]= x*mat[0][1] + y*mat[1][1] + mat[2][1]*vec[2]; - vec[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2]; +void mul_m3_v3(float M[3][3], float r[3]) +{ + float tmp[3]; + + mul_v3_m3v3(tmp, M, r); + copy_v3_v3(r, tmp); } void mul_transposed_m3_v3(float mat[][3], float *vec) diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 502f241c195..289d8818753 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -292,20 +292,6 @@ void print_v4(char *str, float v[4]) printf("%s: %.3f %.3f %.3f %.3f\n", str, v[0], v[1], v[2], v[3]); } -void normal_short_to_float_v3(float *out, short *in) -{ - out[0] = in[0]*(1.0f/32767.0f); - out[1] = in[1]*(1.0f/32767.0f); - out[2] = in[2]*(1.0f/32767.0f); -} - -void normal_float_to_short_v3(short *out, float *in) -{ - out[0] = (short)(in[0]*32767.0f); - out[1] = (short)(in[1]*32767.0f); - out[2] = (short)(in[2]*32767.0f); -} - void minmax_v3_v3v3(float *min, float *max, float *vec) { if(min[0]>vec[0]) min[0]= vec[0]; diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c index 6830f44ae1b..cb629312712 100644 --- a/source/blender/blenlib/intern/math_vector_inline.c +++ b/source/blender/blenlib/intern/math_vector_inline.c @@ -58,6 +58,19 @@ MINLINE void copy_v3_v3(float r[3], float a[3]) r[2]= a[2]; } +MINLINE void swap_v2_v2(float a[2], float b[2]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); +} + +MINLINE void swap_v3_v3(float a[3], float b[3]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); + SWAP(float, a[2], b[2]); +} + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float *r, float *a) @@ -76,7 +89,7 @@ MINLINE void add_v3_v3(float *r, float *a) { r[0] += a[0]; r[1] += a[1]; - r[1] += a[1]; + r[2] += a[2]; } MINLINE void add_v3_v3v3(float *r, float *a, float *b) @@ -102,7 +115,7 @@ MINLINE void sub_v3_v3(float *r, float *a) { r[0] -= a[0]; r[1] -= a[1]; - r[1] -= a[1]; + r[2] -= a[2]; } MINLINE void sub_v3_v3v3(float *r, float *a, float *b) @@ -139,6 +152,34 @@ MINLINE void mul_v3_v3(float r[3], float a[3]) r[2] *= a[2]; } +MINLINE void madd_v3_v3fl(float r[3], float a[3], float f) +{ + r[0] += a[0]*f; + r[1] += a[1]*f; + r[2] += a[2]*f; +} + +MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]) +{ + r[0] += a[0]*b[0]; + r[1] += a[1]*b[1]; + r[2] += a[2]*b[2]; +} + +MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f) +{ + r[0] = a[0] + b[0]*f; + r[1] = a[1] + b[1]*f; + r[2] = a[2] + b[2]*f; +} + +MINLINE void madd_v3_v3v3v3(float r[3], float a[3], float b[3], float c[3]) +{ + r[0] = a[0] + b[0]*c[0]; + r[1] = a[1] + b[1]*c[1]; + r[2] = a[2] + b[2]*c[2]; +} + MINLINE void mul_v3_v3v3(float *v, float *v1, float *v2) { v[0] = v1[0] * v2[0]; @@ -254,5 +295,19 @@ MINLINE float normalize_v3(float n[3]) return d; } +MINLINE void normal_short_to_float_v3(float *out, short *in) +{ + out[0] = in[0]*(1.0f/32767.0f); + out[1] = in[1]*(1.0f/32767.0f); + out[2] = in[2]*(1.0f/32767.0f); +} + +MINLINE void normal_float_to_short_v3(short *out, float *in) +{ + out[0] = (short)(in[0]*32767.0f); + out[1] = (short)(in[1]*32767.0f); + out[2] = (short)(in[2]*32767.0f); +} + #endif /* BLI_MATH_VECTOR_INLINE */ -- cgit v1.2.3 From c4933cccfa74836ff88a6904abfaf52c8e0cde87 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Nov 2009 13:33:17 +0000 Subject: Mesh Deform Modifier * Now support a Surface mode next to the existing Volume mode. This binds the mesh to the cage mesh surface rather than it's volume. * Implemented reusing the bone heat weighting code. * Advantage is that it works for cage meshes that are not volumes and that binding is much faster. * Weak point is that disconnected components of a mesh are not guaranteed to stick together (same problem exists with bone heat weighting). * Bind weights could still be compressed better to use less memory. Example file: http://download.blender.org/ftp/incoming/cloth_mdef_surface.blend --- release/scripts/ui/properties_data_modifier.py | 22 +- source/blender/blenkernel/intern/modifier.c | 2 +- source/blender/editors/armature/meshlaplacian.c | 438 +++++++++++++++--------- source/blender/editors/armature/meshlaplacian.h | 3 +- source/blender/editors/include/ED_armature.h | 3 +- source/blender/editors/object/object_modifier.c | 2 +- source/blender/makesdna/DNA_modifier_types.h | 8 +- source/blender/makesrna/intern/rna_modifier.c | 8 + 8 files changed, 303 insertions(+), 183 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 26b2c2a34f2..c43dbd9c90a 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -365,11 +365,11 @@ class DATA_PT_modifiers(DataButtonsPanel): def MESH_DEFORM(self, layout, ob, md, wide_ui): split = layout.split() col = split.column() - col.label(text="Object:") - col.prop(md, "object", text="") - if md.object and md.object.type == 'ARMATURE': - col.label(text="Bone:") - col.prop_object(md, "subtarget", md.object.data, "bones", text="") + sub = col.column() + sub.label(text="Object:") + sub.prop(md, "object", text="") + sub.prop(md, "mode", text="") + sub.active = not md.is_bound if wide_ui: col = split.column() col.label(text="Vertex Group:") @@ -385,14 +385,16 @@ class DATA_PT_modifiers(DataButtonsPanel): layout.operator("object.meshdeform_bind", text="Unbind") else: layout.operator("object.meshdeform_bind", text="Bind") - split = layout.split() - col = split.column() - col.prop(md, "precision") + if md.mode == 'VOLUME': + split = layout.split() - if wide_ui: col = split.column() - col.prop(md, "dynamic") + col.prop(md, "precision") + + if wide_ui: + col = split.column() + col.prop(md, "dynamic") def MIRROR(self, layout, ob, md, wide_ui): layout.prop(md, "merge_limit") diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index b5e0ca9ea5c..56aab7d2ba9 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -7894,7 +7894,7 @@ static void meshdeformModifier_do( /* progress bar redraw can make this recursive .. */ if(!recursive) { recursive = 1; - mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat); + mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat); recursive = 0; } } diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index b9019410348..2ad71881f47 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -93,13 +93,16 @@ struct LaplacianSystem { EdgeHash *edgehash; /* edge hash for construction */ struct HeatWeighting { - Mesh *mesh; + MFace *mface; + int totvert; + int totface; float (*verts)[3]; /* vertex coordinates */ float (*vnors)[3]; /* vertex normals */ float (*root)[3]; /* bone root */ float (*tip)[3]; /* bone tip */ - int numbones; + float (*source)[3]; /* vertex source */ + int numsource; float *H; /* diagonal H matrix */ float *p; /* values from all p vectors */ @@ -394,38 +397,40 @@ float laplacian_system_get_solution(int v) #define WEIGHT_LIMIT_END 0.025f #define DISTANCE_EPSILON 1e-4f -/* Raytracing for vertex to bone visibility */ +/* Raytracing for vertex to bone/vertex visibility */ static void heat_ray_tree_create(LaplacianSystem *sys) { - Mesh *me = sys->heat.mesh; + MFace *mface = sys->heat.mface; + int totface = sys->heat.totface; + int totvert = sys->heat.totvert; int a; - sys->heat.raytree = RE_rayobject_vbvh_create(me->totface); - sys->heat.faces = MEM_callocN(sizeof(RayFace)*me->totface, "Heat RayFaces"); - sys->heat.vface = MEM_callocN(sizeof(MFace*)*me->totvert, "HeatVFaces"); + sys->heat.raytree = RE_rayobject_vbvh_create(totface); + sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces"); + sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces"); - for(a=0; atotface; a++) { + for(a=0; amface+a; + MFace *mf = mface+a; RayFace *rayface = sys->heat.faces+a; RayObject *obj = RE_rayface_from_coords( - rayface, me, mface, - sys->heat.verts[mface->v1], sys->heat.verts[mface->v2], - sys->heat.verts[mface->v3], mface->v4 ? sys->heat.verts[mface->v4] : 0 + 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); //Setup inverse pointers to use on isect.orig - sys->heat.vface[mface->v1]= mface; - sys->heat.vface[mface->v2]= mface; - sys->heat.vface[mface->v3]= mface; - if(mface->v4) sys->heat.vface[mface->v4]= mface; + sys->heat.vface[mf->v1]= mf; + sys->heat.vface[mf->v2]= mf; + sys->heat.vface[mf->v3]= mf; + if(mf->v4) sys->heat.vface[mf->v4]= mf; } RE_rayobject_done(sys->heat.raytree); } -static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone) +static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) { Isect isec; MFace *mface; @@ -440,30 +445,37 @@ static int heat_ray_bone_visible(LaplacianSystem *sys, int vertex, int bone) memset(&isec, 0, sizeof(isec)); isec.mode= RE_RAY_SHADOW; isec.lay= -1; - isec.orig.ob = sys->heat.mesh; + isec.orig.ob = &sys->heat; isec.orig.face = mface; isec.skip = RE_SKIP_CULLFACE; + copy_v3_v3(isec.start, sys->heat.verts[vertex]); - VECCOPY(isec.start, sys->heat.verts[vertex]); - closest_to_line_segment_v3(end, isec.start, sys->heat.root[bone], sys->heat.tip[bone]); + if(sys->heat.root) /* bone */ + closest_to_line_segment_v3(end, isec.start, + sys->heat.root[source], sys->heat.tip[source]); + else /* vertex */ + copy_v3_v3(end, sys->heat.source[source]); - VECSUB(isec.vec, end, isec.start); + sub_v3_v3v3(isec.vec, end, isec.start); isec.labda = 1.0f - 1e-5; - VECADDFAC( isec.start, isec.start, isec.vec, 1e-5); + madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5); visible= !RE_rayobject_raycast(sys->heat.raytree, &isec); return visible; } -static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone) +static float heat_source_distance(LaplacianSystem *sys, int vertex, int source) { float closest[3], d[3], dist, cosine; /* compute euclidian distance */ - closest_to_line_segment_v3(closest, sys->heat.verts[vertex], - sys->heat.root[bone], sys->heat.tip[bone]); + if(sys->heat.root) /* bone */ + closest_to_line_segment_v3(closest, sys->heat.verts[vertex], + sys->heat.root[source], sys->heat.tip[source]); + else /* vertex */ + copy_v3_v3(closest, sys->heat.source[source]); sub_v3_v3v3(d, sys->heat.verts[vertex], closest); dist= normalize_v3(d); @@ -474,16 +486,16 @@ static float heat_bone_distance(LaplacianSystem *sys, int vertex, int bone) return dist/(0.5f*(cosine + 1.001f)); } -static int heat_bone_closest(LaplacianSystem *sys, int vertex, int bone) +static int heat_source_closest(LaplacianSystem *sys, int vertex, int source) { float dist; - - dist= heat_bone_distance(sys, vertex, bone); + + dist= heat_source_distance(sys, vertex, source); if(dist <= sys->heat.mindist[vertex]*(1.0f + DISTANCE_EPSILON)) - if(heat_ray_bone_visible(sys, vertex, bone)) + if(heat_ray_source_visible(sys, vertex, source)) return 1; - + return 0; } @@ -495,8 +507,8 @@ static void heat_set_H(LaplacianSystem *sys, int vertex) mindist= 1e10; /* compute minimum distance */ - for(j=0; jheat.numbones; j++) { - dist= heat_bone_distance(sys, vertex, j); + for(j=0; jheat.numsource; j++) { + dist= heat_source_distance(sys, vertex, j); if(dist < mindist) mindist= dist; @@ -504,9 +516,9 @@ static void heat_set_H(LaplacianSystem *sys, int vertex) sys->heat.mindist[vertex]= mindist; - /* count number of bones with approximately this minimum distance */ - for(j=0; jheat.numbones; j++) - if(heat_bone_closest(sys, vertex, j)) + /* count number of sources with approximately this minimum distance */ + for(j=0; jheat.numsource; j++) + if(heat_source_closest(sys, vertex, j)) numclosest++; sys->heat.p[vertex]= (numclosest > 0)? 1.0f/numclosest: 0.0f; @@ -549,32 +561,45 @@ void heat_calc_vnormals(LaplacianSystem *sys) static void heat_laplacian_create(LaplacianSystem *sys) { - Mesh *me = sys->heat.mesh; - MFace *mface; + MFace *mface = sys->heat.mface, *mf; + int totface= sys->heat.totface; + int totvert= sys->heat.totvert; int a; /* heat specific definitions */ - sys->heat.mindist= MEM_callocN(sizeof(float)*me->totvert, "HeatMinDist"); - sys->heat.H= MEM_callocN(sizeof(float)*me->totvert, "HeatH"); - sys->heat.p= MEM_callocN(sizeof(float)*me->totvert, "HeatP"); + sys->heat.mindist= MEM_callocN(sizeof(float)*totvert, "HeatMinDist"); + sys->heat.H= MEM_callocN(sizeof(float)*totvert, "HeatH"); + sys->heat.p= MEM_callocN(sizeof(float)*totvert, "HeatP"); /* add verts and faces to laplacian */ - for(a=0; atotvert; a++) + for(a=0; aheat.verts[a], 0); - for(a=0, mface=me->mface; atotface; a++, mface++) { - laplacian_add_triangle(sys, mface->v1, mface->v2, mface->v3); - if(mface->v4) - laplacian_add_triangle(sys, mface->v1, mface->v3, mface->v4); + for(a=0, mf=mface; av1, mf->v2, mf->v3); + if(mf->v4) + laplacian_add_triangle(sys, mf->v1, mf->v3, mf->v4); } /* for distance computation in set_H */ heat_calc_vnormals(sys); - for(a=0; atotvert; a++) + for(a=0; aheat.raytree); + MEM_freeN(sys->heat.vface); + MEM_freeN(sys->heat.faces); + + MEM_freeN(sys->heat.mindist); + MEM_freeN(sys->heat.H); + MEM_freeN(sys->heat.p); + MEM_freeN(sys->heat.vnors); +} + static float heat_limit_weight(float weight) { float t; @@ -590,7 +615,7 @@ static float heat_limit_weight(float weight) return weight; } -void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected) +void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, bDeformGroup **dgrouplist, bDeformGroup **dgroupflip, float (*root)[3], float (*tip)[3], int *selected) { LaplacianSystem *sys; MFace *mface; @@ -607,11 +632,13 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, /* create laplacian */ sys = laplacian_system_construct_begin(me->totvert, totface, 1); - sys->heat.mesh= me; + sys->heat.mface= me->mface; + sys->heat.totface= me->totface; + sys->heat.totvert= me->totvert; sys->heat.verts= verts; sys->heat.root= root; sys->heat.tip= tip; - sys->heat.numbones= numbones; + sys->heat.numsource= numsource; heat_ray_tree_create(sys); heat_laplacian_create(sys); @@ -625,12 +652,12 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, } /* compute weights per bone */ - for(j=0; jtotvert; a++) - if(heat_bone_closest(sys, a, j)) + if(heat_source_closest(sys, a, j)) laplacian_add_right_hand_side(sys, a, sys->heat.H[a]*sys->heat.p[a]); @@ -716,14 +743,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numbones, /* free */ if(vertsflipped) MEM_freeN(vertsflipped); - RE_rayobject_free(sys->heat.raytree); - MEM_freeN(sys->heat.vface); - MEM_freeN(sys->heat.faces); - - MEM_freeN(sys->heat.mindist); - MEM_freeN(sys->heat.H); - MEM_freeN(sys->heat.p); - MEM_freeN(sys->heat.vnors); + heat_system_free(sys); laplacian_system_delete(sys); } @@ -1027,11 +1047,11 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], float edge1[3], edge2[3], tvec[3], pvec[3], qvec[3]; float det,inv_det, u, v, dir[3], isectdir[3]; - VECSUB(dir, end, orig); + sub_v3_v3v3(dir, end, orig); /* find vectors for two edges sharing vert0 */ - VECSUB(edge1, vert1, vert0); - VECSUB(edge2, vert2, vert0); + sub_v3_v3v3(edge1, vert1, vert0); + sub_v3_v3v3(edge2, vert2, vert0); /* begin calculating determinant - also used to calculate U parameter */ cross_v3_v3v3(pvec, dir, edge2); @@ -1044,7 +1064,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], inv_det = 1.0f / det; /* calculate distance from vert0 to ray origin */ - VECSUB(tvec, orig, vert0); + sub_v3_v3v3(tvec, orig, vert0); /* calculate U parameter and test bounds */ u = INPR(tvec, pvec) * inv_det; @@ -1068,7 +1088,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], uvw[2]= v; /* check if it is within the length of the line segment */ - VECSUB(isectdir, isectco, orig); + sub_v3_v3v3(isectdir, isectco, orig); if(INPR(dir, isectdir) < -EPSILON) return 0; @@ -1149,12 +1169,12 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) VECADDFAC( end, isec->start, isec->vec, isec->labda ); for(f=0; fcagecos[mface->v1]); - VECCOPY(face[1], mdb->cagecos[mface->v2]); - VECCOPY(face[2], mdb->cagecos[mface->v3]); + copy_v3_v3(face[0], mdb->cagecos[mface->v1]); + copy_v3_v3(face[1], mdb->cagecos[mface->v2]); + copy_v3_v3(face[2], mdb->cagecos[mface->v3]); if(mface->v4) { - VECCOPY(face[3], mdb->cagecos[mface->v4]); + copy_v3_v3(face[3], mdb->cagecos[mface->v4]); hit = meshdeform_tri_intersect(isec->start, end, face[0], face[1], face[2], co, uvw); if(hit) { @@ -1201,7 +1221,7 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float VECADD(isec.start, co1, epsilon); VECADD(end, co2, epsilon); - VECSUB(isec.vec, end, isec.start); + sub_v3_v3v3(isec.vec, end, isec.start); #if 0 /*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/ @@ -1233,10 +1253,10 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float /* compute mean value coordinates for interpolation */ cagecos= mdb->cagecos; - VECCOPY(vert[0], cagecos[mface->v1]); - VECCOPY(vert[1], cagecos[mface->v2]); - VECCOPY(vert[2], cagecos[mface->v3]); - if(mface->v4) VECCOPY(vert[3], cagecos[mface->v4]); + copy_v3_v3(vert[0], cagecos[mface->v1]); + copy_v3_v3(vert[1], cagecos[mface->v2]); + copy_v3_v3(vert[2], cagecos[mface->v3]); + if(mface->v4) copy_v3_v3(vert[3], cagecos[mface->v4]); interp_weights_poly_v3( isect->uvw,vert, isect->nvert, isect->co); return isect; @@ -1258,8 +1278,8 @@ static int meshdeform_inside_cage(MeshDeformBind *mdb, float *co) outside[1] = co[1] + (mdb->max[1] - mdb->min[1] + 1.0f)*MESHDEFORM_OFFSET[i][1]; outside[2] = co[2] + (mdb->max[2] - mdb->min[2] + 1.0f)*MESHDEFORM_OFFSET[i][2]; - VECCOPY(start, co); - VECSUB(dir, outside, start); + copy_v3_v3(start, co); + sub_v3_v3v3(dir, outside, start); normalize_v3(dir); isect = meshdeform_ray_tree_intersect(mdb, start, outside); @@ -1649,7 +1669,7 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) /* static bind : compute weights for each vertex */ for(b=0; btotvert; b++) { if(mdb->inside[b]) { - VECCOPY(vec, mdb->vertexcos[b]); + copy_v3_v3(vec, mdb->vertexcos[b]); mul_m4_v3(mdb->cagemat, vec); gridvec[0]= (vec[0] - mdb->min[0] - mdb->halfwidth[0])/mdb->width[0]; gridvec[1]= (vec[1] - mdb->min[1] - mdb->halfwidth[1])/mdb->width[1]; @@ -1698,148 +1718,123 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) nlDeleteContext(context); } -void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, MeshDeformBind *mdb) { - MeshDeformBind mdb; MDefBindInfluence *inf; MDefInfluence *mdinf; MDefCell *cell; - MVert *mvert; float center[3], vec[3], maxwidth, totweight; int a, b, x, y, z, totinside, offset; - waitcursor(1); - start_progress_bar(); - - memset(&mdb, 0, sizeof(MeshDeformBind)); - - /* get mesh and cage mesh */ - mdb.vertexcos= (float(*)[3])vertexcos; - mdb.totvert= totvert; - - mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH); - mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm); - mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos"); - copy_m4_m4(mdb.cagemat, cagemat); - - mvert= mdb.cagedm->getVertArray(mdb.cagedm); - for(a=0; amin, mdb->max); - for(a=0; atotcagevert; a++) + DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max); /* allocate memory */ - mdb.size= (2<<(mmd->gridsize-1)) + 2; - mdb.size3= mdb.size*mdb.size*mdb.size; - mdb.tag= MEM_callocN(sizeof(int)*mdb.size3, "MeshDeformBindTag"); - mdb.phi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindPhi"); - mdb.totalphi= MEM_callocN(sizeof(float)*mdb.size3, "MeshDeformBindTotalPhi"); - mdb.boundisect= MEM_callocN(sizeof(*mdb.boundisect)*mdb.size3, "MDefBoundIsect"); - mdb.semibound= MEM_callocN(sizeof(int)*mdb.size3, "MDefSemiBound"); + mdb->size= (2<<(mmd->gridsize-1)) + 2; + mdb->size3= mdb->size*mdb->size*mdb->size; + mdb->tag= MEM_callocN(sizeof(int)*mdb->size3, "MeshDeformBindTag"); + mdb->phi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindPhi"); + mdb->totalphi= MEM_callocN(sizeof(float)*mdb->size3, "MeshDeformBindTotalPhi"); + mdb->boundisect= MEM_callocN(sizeof(*mdb->boundisect)*mdb->size3, "MDefBoundIsect"); + mdb->semibound= MEM_callocN(sizeof(int)*mdb->size3, "MDefSemiBound"); - mdb.inside= MEM_callocN(sizeof(int)*mdb.totvert, "MDefInside"); + mdb->inside= MEM_callocN(sizeof(int)*mdb->totvert, "MDefInside"); if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) - mdb.dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb.size3, "MDefDynGrid"); + mdb->dyngrid= MEM_callocN(sizeof(MDefBindInfluence*)*mdb->size3, "MDefDynGrid"); else - mdb.weights= MEM_callocN(sizeof(float)*mdb.totvert*mdb.totcagevert, "MDefWeights"); + mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights"); - mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); - BLI_memarena_use_calloc(mdb.memarena); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + BLI_memarena_use_calloc(mdb->memarena); /* make bounding box equal size in all directions, add padding, and compute * width of the cells */ maxwidth = -1.0f; for(a=0; a<3; a++) - if(mdb.max[a]-mdb.min[a] > maxwidth) - maxwidth= mdb.max[a]-mdb.min[a]; + if(mdb->max[a]-mdb->min[a] > maxwidth) + maxwidth= mdb->max[a]-mdb->min[a]; for(a=0; a<3; a++) { - center[a]= (mdb.min[a]+mdb.max[a])*0.5f; - mdb.min[a]= center[a] - maxwidth*0.5f; - mdb.max[a]= center[a] + maxwidth*0.5f; + center[a]= (mdb->min[a]+mdb->max[a])*0.5f; + mdb->min[a]= center[a] - maxwidth*0.5f; + mdb->max[a]= center[a] + maxwidth*0.5f; - mdb.width[a]= (mdb.max[a]-mdb.min[a])/(mdb.size-4); - mdb.min[a] -= 2.1f*mdb.width[a]; - mdb.max[a] += 2.1f*mdb.width[a]; + mdb->width[a]= (mdb->max[a]-mdb->min[a])/(mdb->size-4); + mdb->min[a] -= 2.1f*mdb->width[a]; + mdb->max[a] += 2.1f*mdb->width[a]; - mdb.width[a]= (mdb.max[a]-mdb.min[a])/mdb.size; - mdb.halfwidth[a]= mdb.width[a]*0.5f; + mdb->width[a]= (mdb->max[a]-mdb->min[a])/mdb->size; + mdb->halfwidth[a]= mdb->width[a]*0.5f; } progress_bar(0, "Setting up mesh deform system"); #if 0 /* create ray tree */ - meshdeform_ray_tree_create(&mdb); + meshdeform_ray_tree_create(mdb); #endif totinside= 0; - for(a=0; atotvert; a++) { + copy_v3_v3(vec, mdb->vertexcos[a]); + mul_m4_v3(mdb->cagemat, vec); + mdb->inside[a]= meshdeform_inside_cage(mdb, vec); + if(mdb->inside[a]) totinside++; } /* free temporary MDefBoundIsects */ - BLI_memarena_free(mdb.memarena); - mdb.memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + BLI_memarena_free(mdb->memarena); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); /* start with all cells untyped */ - for(a=0; asize3; a++) + mdb->tag[a]= MESHDEFORM_TAG_UNTYPED; /* detect intersections and tag boundary cells */ - for(z=0; zsize; z++) + for(y=0; ysize; y++) + for(x=0; xsize; x++) + meshdeform_add_intersections(mdb, x, y, z); #if 0 /* free ray tree */ - meshdeform_ray_tree_free(&mdb); + meshdeform_ray_tree_free(mdb); #endif /* compute exterior and interior tags */ - meshdeform_bind_floodfill(&mdb); + meshdeform_bind_floodfill(mdb); - for(z=0; zsize; z++) + for(y=0; ysize; y++) + for(x=0; xsize; x++) + meshdeform_check_semibound(mdb, x, y, z); /* solve */ - meshdeform_matrix_solve(&mdb); + meshdeform_matrix_solve(mdb); /* assign results */ - mmd->bindcos= (float*)mdb.cagecos; - mmd->totvert= mdb.totvert; - mmd->totcagevert= mdb.totcagevert; - copy_m4_m4(mmd->bindmat, mmd->object->obmat); - if(mmd->flag & MOD_MDEF_DYNAMIC_BIND) { mmd->totinfluence= 0; - for(a=0; anext) + for(a=0; asize3; a++) + for(inf=mdb->dyngrid[a]; inf; inf=inf->next) mmd->totinfluence++; /* convert MDefBindInfluences to smaller MDefInfluences */ - mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb.size3, "MDefDynGrid"); + mmd->dyngrid= MEM_callocN(sizeof(MDefCell)*mdb->size3, "MDefDynGrid"); mmd->dyninfluences= MEM_callocN(sizeof(MDefInfluence)*mmd->totinfluence, "MDefInfluence"); offset= 0; - for(a=0; asize3; a++) { cell= &mmd->dyngrid[a]; cell->offset= offset; totweight= 0.0f; mdinf= mmd->dyninfluences + cell->offset; - for(inf=mdb.dyngrid[a]; inf; inf=inf->next, mdinf++) { + for(inf=mdb->dyngrid[a]; inf; inf=inf->next, mdinf++) { mdinf->weight= inf->weight; mdinf->vertex= inf->vertex; totweight += mdinf->weight; @@ -1855,29 +1850,138 @@ void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float offset += cell->totinfluence; } - mmd->dynverts= mdb.inside; - mmd->dyngridsize= mdb.size; - VECCOPY(mmd->dyncellmin, mdb.min); - mmd->dyncellwidth= mdb.width[0]; - MEM_freeN(mdb.dyngrid); + mmd->dynverts= mdb->inside; + mmd->dyngridsize= mdb->size; + copy_v3_v3(mmd->dyncellmin, mdb->min); + mmd->dyncellwidth= mdb->width[0]; + MEM_freeN(mdb->dyngrid); } else { - mmd->bindweights= mdb.weights; - MEM_freeN(mdb.inside); + mmd->bindweights= mdb->weights; + MEM_freeN(mdb->inside); } + MEM_freeN(mdb->tag); + MEM_freeN(mdb->phi); + MEM_freeN(mdb->totalphi); + MEM_freeN(mdb->boundisect); + MEM_freeN(mdb->semibound); + BLI_memarena_free(mdb->memarena); +} + +static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, MeshDeformBind *mdb) +{ + LaplacianSystem *sys; + MFace *mface= dm->getFaceArray(dm), *mf; + int totvert= dm->getNumVerts(dm); + int totface= dm->getNumFaces(dm); + float solution, weight; + int a, tottri, j, thrownerror = 0; + + mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights"); + + /* count triangles */ + for(tottri=0, a=0, mf=mface; av4) tottri++; + } + + /* create laplacian */ + sys = laplacian_system_construct_begin(totvert, tottri, 1); + + sys->heat.mface= mface; + sys->heat.totface= totface; + sys->heat.totvert= totvert; + sys->heat.verts= mdb->vertexcos; + sys->heat.source = mdb->cagecos; + sys->heat.numsource= mdb->totcagevert; + + heat_ray_tree_create(sys); + heat_laplacian_create(sys); + + laplacian_system_construct_end(sys); + + /* compute weights per bone */ + for(j=0; jtotcagevert; j++) { + /* fill right hand side */ + laplacian_begin_solve(sys, -1); + + for(a=0; aheat.H[a]*sys->heat.p[a]); + + /* solve */ + if(laplacian_system_solve(sys)) { + /* load solution into vertex groups */ + for(a=0; a 0.0f) + mdb->weights[a*mdb->totcagevert + j] = weight; + } + } + else if(!thrownerror) { + error("Mesh Deform Heat Weighting:" + " failed to find solution for one or more vertices"); + thrownerror= 1; + break; + } + } + + /* free */ + heat_system_free(sys); + laplacian_system_delete(sys); + + mmd->bindweights= mdb->weights; +} + +void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +{ + MeshDeformBind mdb; + MVert *mvert; + int a; + + waitcursor(1); + start_progress_bar(); + + memset(&mdb, 0, sizeof(MeshDeformBind)); + + /* get mesh and cage mesh */ + mdb.vertexcos= MEM_callocN(sizeof(float)*3*totvert, "MeshDeformCos"); + mdb.totvert= totvert; + + mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH); + mdb.totcagevert= mdb.cagedm->getNumVerts(mdb.cagedm); + mdb.cagecos= MEM_callocN(sizeof(*mdb.cagecos)*mdb.totcagevert, "MeshDeformBindCos"); + copy_m4_m4(mdb.cagemat, cagemat); + + mvert= mdb.cagedm->getVertArray(mdb.cagedm); + for(a=0; amode == MOD_MDEF_VOLUME) + harmonic_coordinates_bind(scene, mmd, &mdb); + else + heat_weighting_bind(scene, dm, mmd, &mdb); + + /* assign bind variables */ + mmd->bindcos= (float*)mdb.cagecos; + mmd->totvert= mdb.totvert; + mmd->totcagevert= mdb.totcagevert; + copy_m4_m4(mmd->bindmat, mmd->object->obmat); + /* transform bindcos to world space */ for(a=0; aobject->obmat, mmd->bindcos+a*3); /* free */ mdb.cagedm->release(mdb.cagedm); - MEM_freeN(mdb.tag); - MEM_freeN(mdb.phi); - MEM_freeN(mdb.totalphi); - MEM_freeN(mdb.boundisect); - MEM_freeN(mdb.semibound); - BLI_memarena_free(mdb.memarena); + MEM_freeN(mdb.vertexcos); end_progress_bar(); waitcursor(0); diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h index 1ee01561cd4..215a3579cab 100644 --- a/source/blender/editors/armature/meshlaplacian.h +++ b/source/blender/editors/armature/meshlaplacian.h @@ -78,7 +78,8 @@ void rigid_deform_end(int cancel); /* Harmonic Coordinates */ -void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, +void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); #endif diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 083884336d2..74f1f7e3b83 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -165,7 +165,8 @@ void BDR_drawSketch(const struct bContext *vc); int BDR_drawSketchNames(struct ViewContext *vc); /* meshlaplacian.c */ -void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, +void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); #endif /* ED_ARMATURE_H */ diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 7bb5eb6f63b..7ab49f5c838 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -840,7 +840,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) int mode= mmd->modifier.mode; /* force modifier to run, it will call binding routine */ - mmd->bindfunc= harmonic_coordinates_bind; + mmd->bindfunc= mesh_deform_bind; mmd->modifier.mode |= eModifierMode_Realtime; if(ob->type == OB_MESH) { diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index fe6a5b050e3..040dc4dbd78 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -492,6 +492,9 @@ typedef struct BooleanModifierData { #define MOD_MDEF_INVERT_VGROUP (1<<0) #define MOD_MDEF_DYNAMIC_BIND (1<<1) +#define MOD_MDEF_VOLUME 0 +#define MOD_MDEF_SURFACE 1 + typedef struct MDefInfluence { int vertex; float weight; @@ -508,7 +511,7 @@ typedef struct MeshDeformModifierData { struct Object *object; /* mesh object */ char defgrp_name[32]; /* optional vertexgroup name */ - short gridsize, flag, pad[2]; + short gridsize, flag, mode, pad; /* variables filled in when bound */ float *bindweights, *bindcos; /* computed binding weights */ @@ -523,7 +526,8 @@ typedef struct MeshDeformModifierData { float bindmat[4][4]; /* matrix of cage at binding time */ /* runtime */ - void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd, + void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm, + struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); } MeshDeformModifierData; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 5b619e702a0..a86d889d6cf 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1397,6 +1397,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem prop_mode_items[] = { + {0, "VOLUME", 0, "Volume", "Bind to volume inside cage mesh."}, + {1, "SURFACE", 0, "Surface", "Bind to surface of cage mesh."}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "MeshDeformModifier", "Modifier"); RNA_def_struct_ui_text(srna, "MeshDeform Modifier", "Mesh deformation modifier to deform with other meshes."); @@ -1436,6 +1440,10 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Dynamic", "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, prop_mode_items); + RNA_def_property_ui_text(prop, "Mode", "Method of binding vertices are bound to cage mesh."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); } static void rna_def_modifier_particlesystem(BlenderRNA *brna) -- cgit v1.2.3 From a2b370dd6f55d6114da3ec1d86788e9c9786822f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 13:33:56 +0000 Subject: py/rna api - object.modifiers.add()/remove() - armature.edit_bones.active wasnt named correctly --- release/scripts/op/object.py | 3 +- source/blender/blenkernel/BKE_particle.h | 2 +- source/blender/blenkernel/intern/particle.c | 12 +++- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/object/object_modifier.c | 17 ++++-- source/blender/editors/object/object_relations.c | 6 +- source/blender/editors/physics/particle_object.c | 2 +- source/blender/makesrna/intern/rna_armature.c | 2 +- source/blender/makesrna/intern/rna_object.c | 68 +++++++++++++++++++++-- source/blender/makesrna/intern/rna_object_force.c | 4 +- source/blender/makesrna/intern/rna_pose.c | 2 +- source/blenderplayer/bad_level_call_stubs/stubs.c | 2 +- 12 files changed, 97 insertions(+), 25 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 103507ae64e..4d3d8288833 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -43,8 +43,7 @@ class SubsurfSet(bpy.types.Operator): return ('FINISHED',) # adda new modifier - bpy.ops.object.modifier_add(type='SUBSURF') # TODO, support adding directly - mod = ob.modifiers[-1] + mod = ob.modifiers.new("Subsurf", 'SUBSURF') mod.levels = level return ('FINISHED',) diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h index 2291601bd47..2199240d77b 100644 --- a/source/blender/blenkernel/BKE_particle.h +++ b/source/blender/blenkernel/BKE_particle.h @@ -222,7 +222,7 @@ void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int tim void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor); struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys); -void object_add_particle_system(struct Scene *scene, struct Object *ob); +struct ModifierData *object_add_particle_system(struct Scene *scene, struct Object *ob, char *name); void object_remove_particle_system(struct Scene *scene, struct Object *ob); struct ParticleSettings *psys_new_settings(char *name, struct Main *main); struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index e241d5808cd..bb2f4128891 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -3268,14 +3268,14 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa /************************************************/ /* ParticleSettings handling */ /************************************************/ -void object_add_particle_system(Scene *scene, Object *ob) +ModifierData *object_add_particle_system(Scene *scene, Object *ob, char *name) { ParticleSystem *psys; ModifierData *md; ParticleSystemModifierData *psmd; if(!ob || ob->type != OB_MESH) - return; + return NULL; psys = ob->particlesystem.first; for(; psys; psys=psys->next) @@ -3293,7 +3293,11 @@ void object_add_particle_system(Scene *scene, Object *ob) strcpy(psys->name, "ParticleSystem"); md= modifier_new(eModifierType_ParticleSystem); - sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem)); + + if(name) BLI_strncpy(md->name, name, sizeof(md->name)); + else sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem)); + modifier_unique_name(&ob->modifiers, md); + psmd= (ParticleSystemModifierData*) md; psmd->psys=psys; BLI_addtail(&ob->modifiers, md); @@ -3304,6 +3308,8 @@ void object_add_particle_system(Scene *scene, Object *ob) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + + return md; } void object_remove_particle_system(Scene *scene, Object *ob) { diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 1ac15aa49f6..69b478c6dfa 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -121,7 +121,7 @@ enum { MODIFIER_APPLY_SHAPE, } eModifier_Apply_Mode; -struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type); +struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type); int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md); int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md); int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 7ab49f5c838..88763f63f7b 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -43,6 +43,7 @@ #include "BLI_math.h" #include "BLI_listbase.h" +#include "BLI_string.h" #include "BKE_action.h" #include "BKE_curve.h" @@ -78,7 +79,7 @@ /******************************** API ****************************/ -ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int type) +ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, char *name, int type) { ModifierData *md=NULL, *new_md=NULL; ModifierTypeInfo *mti = modifierType_getInfo(type); @@ -94,7 +95,7 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object * /* don't need to worry about the new modifier's name, since that is set to the number * of particle systems which shouldn't have too many duplicates */ - object_add_particle_system(scene, ob); + new_md = object_add_particle_system(scene, ob, name); } else { /* get new modifier data to add */ @@ -110,8 +111,12 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Scene *scene, Object * } else BLI_addtail(&ob->modifiers, new_md); - + + if(name) + BLI_strncpy(new_md->name, name, sizeof(new_md->name)); + /* make sure modifier data has unique name */ + modifier_unique_name(&ob->modifiers, new_md); /* special cases */ @@ -148,8 +153,10 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod if(obmd==md) break; - if(!obmd) + if(!obmd) { + BKE_reportf(reports, RPT_ERROR, "Modifier '%s' not in object '%s'.", ob->id.name, md->name); return 0; + } /* special cases */ if(md->type == eModifierType_ParticleSystem) { @@ -482,7 +489,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op) Object *ob = CTX_data_active_object(C); int type= RNA_enum_get(op->ptr, "type"); - if(!ED_object_modifier_add(op->reports, scene, ob, type)) + if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type)) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index c0979e410fd..749b1e34651 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -620,15 +620,15 @@ static int parent_set_exec(bContext *C, wmOperator *op) switch (partype) { case PAR_CURVE: /* curve deform */ - md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Curve); + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Curve); ((CurveModifierData *)md)->object= par; break; case PAR_LATTICE: /* lattice deform */ - md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Lattice); + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Lattice); ((LatticeModifierData *)md)->object= par; break; default: /* armature deform */ - md= ED_object_modifier_add(op->reports, scene, ob, eModifierType_Armature); + md= ED_object_modifier_add(op->reports, scene, ob, NULL, eModifierType_Armature); ((ArmatureModifierData *)md)->object= par; break; } diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index 1ef3ffa6c34..d29280876d0 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -69,7 +69,7 @@ static int particle_system_add_exec(bContext *C, wmOperator *op) if(!scene || !ob) return OPERATOR_CANCELLED; - object_add_particle_system(scene, ob); + object_add_particle_system(scene, ob, NULL); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 7986da818c8..57bb88496d3 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -662,7 +662,7 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_struct_sdna(srna, "bArmature"); RNA_def_struct_ui_text(srna, "Armature EditBones", "Collection of armature edit bones."); - prop= RNA_def_property(srna, "edit_bones", PROP_POINTER, PROP_NONE); + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "EditBone"); RNA_def_property_pointer_sdna(prop, NULL, "act_edbone"); RNA_def_property_flag(prop, PROP_EDITABLE); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 7b340595f4a..b1e3d9b2408 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -940,13 +940,13 @@ static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value) constraints_set_active(&ob->constraints, (bConstraint *)value.data); } -static bConstraint *rna_Object_constraints_new(Object *object, bContext *C, int type) +static bConstraint *rna_Object_constraint_new(Object *object, bContext *C, int type) { WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); return add_ob_constraint(object, NULL, type); } -static int rna_Object_constraints_remove(Object *object, bContext *C, int index) +static int rna_Object_constraint_remove(Object *object, bContext *C, int index) { int ok = remove_constraint_index(&object->constraints, index); if(ok) { @@ -957,6 +957,16 @@ static int rna_Object_constraints_remove(Object *object, bContext *C, int index) return ok; } +static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, ReportList *reports, char *name, int type) +{ + return ED_object_modifier_add(reports, CTX_data_scene(C), object, name, type); +} + +static void rna_Object_modifier_remove(Object *object, bContext *C, ReportList *reports, ModifierData *md) +{ + return ED_object_modifier_remove(reports, CTX_data_scene(C), object, md); +} + #else static void rna_def_vertex_group(BlenderRNA *brna) @@ -1248,7 +1258,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) /* Constraint collection */ - func= RNA_def_function(srna, "new", "rna_Object_constraints_new"); + func= RNA_def_function(srna, "new", "rna_Object_constraint_new"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Add a new constraint to this object"); /* return type */ @@ -1258,7 +1268,7 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "remove", "rna_Object_constraints_remove"); + func= RNA_def_function(srna, "remove", "rna_Object_constraint_remove"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Remove a constraint from this object."); /* return type */ @@ -1269,6 +1279,55 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_flag(parm, PROP_REQUIRED); } +/* armature.bones.* */ +static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + PropertyRNA *prop; + + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "ObjectModifiers"); + srna= RNA_def_struct(brna, "ObjectModifiers", NULL); + RNA_def_struct_sdna(srna, "Object"); + RNA_def_struct_ui_text(srna, "Object Modifiers", "Collection of object modifiers."); + +#if 0 + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "EditBone"); + RNA_def_property_pointer_sdna(prop, NULL, "act_edbone"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Active EditBone", "Armatures active edit bone."); + //RNA_def_property_update(prop, 0, "rna_Armature_act_editbone_update"); + RNA_def_property_pointer_funcs(prop, NULL, "rna_Armature_act_edit_bone_set", NULL); + + /* todo, redraw */ +// RNA_def_property_collection_active(prop, prop_act); +#endif + + /* add target */ + func= RNA_def_function(srna, "new", "rna_Object_modifier_new"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Add a new bone."); + parm= RNA_def_string(func, "name", "Name", 0, "", "New name for the bone."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* modifier to add */ + parm= RNA_def_enum(func, "type", modifier_type_items, 1, "", "Modifier type to add."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier."); + RNA_def_function_return(func, parm); + + /* remove target */ + func= RNA_def_function(srna, "remove", "rna_Object_modifier_remove"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove an existing modifier from the object."); + /* target to remove*/ + parm= RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + static void rna_def_object(BlenderRNA *brna) { StructRNA *srna; @@ -1581,6 +1640,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "Modifier"); RNA_def_property_ui_text(prop, "Modifiers", "Modifiers affecting the geometric data of the Object."); + rna_def_object_modifiers(brna, prop); /* game engine */ prop= RNA_def_property(srna, "game", PROP_POINTER, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 0669344ec82..c601622fcc3 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -485,7 +485,7 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr) if(!md) { if(pd && (pd->shape == PFIELD_SHAPE_SURFACE) && ELEM(pd->forcefield,PFIELD_GUIDE,PFIELD_TEXTURE)==0) if(ELEM4(ob->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE)) - ED_object_modifier_add(NULL, scene, ob, eModifierType_Surface); + ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Surface); } else { if(!pd || pd->shape != PFIELD_SHAPE_SURFACE) @@ -620,7 +620,7 @@ static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr /* add/remove modifier as needed */ if(ob->pd->deflect && !md) - ED_object_modifier_add(NULL, scene, ob, eModifierType_Collision); + ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Collision); else if(!ob->pd->deflect && md) ED_object_modifier_remove(NULL, scene, ob, md); diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 8d43d72c02e..8a4aadcba57 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -611,7 +611,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro /* return type */ parm= RNA_def_pointer(func, "constraint", "Constraint", "", "New constraint."); RNA_def_function_return(func, parm); - /* object to add */ + /* constraint to add */ parm= RNA_def_enum(func, "type", constraint_type_items, 1, "", "Constraint type to add."); RNA_def_property_flag(parm, PROP_REQUIRED); diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index f4d3929b08c..7f9928262c3 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -132,7 +132,7 @@ void ED_node_shader_default(struct Material *ma){} void ED_screen_animation_timer_update(struct bContext *C, int redraws){} void ED_base_object_select(struct Base *base, short mode){} int ED_object_modifier_remove(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md){return 0;} -int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, int type){return 0;} +int ED_object_modifier_add(struct ReportList *reports, struct Scene *scene, struct Object *ob, char *name, int type){return 0;} void ED_object_enter_editmode(struct bContext *C, int flag){} void ED_object_exit_editmode(struct bContext *C, int flag){} int uiLayoutGetActive(struct uiLayout *layout){return 0;} -- cgit v1.2.3 From ac0039bfdb2feb8aa4c57894108e10ce8cef0079 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 28 Nov 2009 13:39:35 +0000 Subject: slight reorganization of 3D view UI region. --- release/scripts/ui/space_view3d.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 6a6505e1fb2..03bb635d5b0 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -197,7 +197,7 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() - layout.operator("view3d.view_persportho", text="Toggle Perspective") + layout.operator("view3d.view_persportho") layout.separator() @@ -1517,25 +1517,21 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel): col.label(text="Camera:") col.prop(view, "camera", text="") col.prop(view, "lens") + col.label(text="Lock to Object:") + col.prop(view, "lock_object", text="") + if view.lock_object and view.lock_object.type == 'ARMATURE': + col.prop_object(view, "lock_bone", view.lock_object.data, "bones", text="") col = layout.column(align=True) col.label(text="Clip:") col.prop(view, "clip_start", text="Start") col.prop(view, "clip_end", text="End") - col = layout.column(align=True) - col.label(text="Grid:") - col.prop(view, "grid_lines", text="Lines") - col.prop(view, "grid_spacing", text="Spacing") - col.prop(view, "grid_subdivisions", text="Subdivisions") + layout.column().prop(scene, "cursor_location", text="3D Cursor:") - col = layout.column() - col.label(text="Lock to Object:") - col.prop(view, "lock_object", text="") - if view.lock_object and view.lock_object.type == 'ARMATURE': - col.prop_object(view, "lock_bone", view.lock_object.data, "bones", text="") + class VIEW3D_PT_3dview_name(bpy.types.Panel): @@ -1578,9 +1574,8 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): view = context.space_data gs = context.scene.game_data ob = context.object - + col = layout.column() - col.prop(view, "display_floor", text="Grid Floor") col.prop(view, "display_x_axis", text="X Axis") col.prop(view, "display_y_axis", text="Y Axis") col.prop(view, "display_z_axis", text="Z Axis") @@ -1590,7 +1585,15 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): if ob and ob.type == 'MESH': mesh = ob.data col.prop(mesh, "all_edges") - + + col = layout.column() + col.prop(view, "display_floor", text="Grid Floor") + sub = col.column(align=True) + sub.active = view.display_floor + sub.prop(view, "grid_lines", text="Lines") + sub.prop(view, "grid_spacing", text="Spacing") + sub.prop(view, "grid_subdivisions", text="Subdivisions") + col = layout.column() col.label(text="Shading:") col.prop(gs, "material_mode", text="") -- cgit v1.2.3 From 510c0facdf809bcf2023d9f09630cf948e3f2e62 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 14:37:21 +0000 Subject: operator renaming for more consistent word ordering (_add/_remmove shold be last, ACT_OT_* --> ACTION_OT_*) ACT_OT_clean --> ACTION_OT_clean ACT_OT_clickselect --> ACTION_OT_clickselect ACT_OT_copy --> ACTION_OT_copy ACT_OT_delete --> ACTION_OT_delete ACT_OT_duplicate --> ACTION_OT_duplicate ACT_OT_extrapolation_type --> ACTION_OT_extrapolation_type ACT_OT_frame_jump --> ACTION_OT_frame_jump ACT_OT_handle_type --> ACTION_OT_handle_type ACT_OT_insert_keyframe --> ACTION_OT_insert_keyframe ACT_OT_insert_keyframe --> ACT_OT_keyframe_insert ACT_OT_interpolation_type --> ACTION_OT_interpolation_type ACT_OT_keyframe_type --> ACTION_OT_keyframe_type ACT_OT_mirror --> ACTION_OT_mirror ACT_OT_new --> ACTION_OT_new ACT_OT_paste --> ACTION_OT_paste ACT_OT_previewrange_set --> ACTION_OT_previewrange_set ACT_OT_properties --> ACTION_OT_properties ACT_OT_sample --> ACTION_OT_sample ACT_OT_select_all_toggle --> ACTION_OT_select_all_toggle ACT_OT_select_border --> ACTION_OT_select_border ACT_OT_select_column --> ACTION_OT_select_column ACT_OT_snap --> ACTION_OT_snap ACT_OT_test --> ACTION_OT_test ACT_OT_unlink --> ACTION_OT_unlink ACT_OT_view_all --> ACTION_OT_view_all ANIM_OT_add_driver_button --> ANIM_OT_driver_button_add ANIM_OT_add_keyingset_button --> ANIM_OT_keyingset_button_add ANIM_OT_delete_keyframe --> ANIM_OT_keyframe_delete ANIM_OT_delete_keyframe_button --> ANIM_OT_keyframe_delete_button ANIM_OT_delete_keyframe_v3d --> ANIM_OT_keyframe_delete_v3d ANIM_OT_insert_keyframe --> ANIM_OT_keyframe_insert ANIM_OT_insert_keyframe_button --> ANIM_OT_keyframe_insert_button ANIM_OT_insert_keyframe_menu --> ANIM_OT_keyframe_insert_menu ANIM_OT_remove_driver_button --> ANIM_OT_driver_button_remove ANIM_OT_remove_keyingset_button --> ANIM_OT_keyingset_button_remove FILE_OT_add_bookmark --> FILE_OT_bookmark_add GRAPH_OT_insert_keyframe --> GRAPH_OT_keyframe_insert NLA_OT_add_actionclip --> NLA_OT_actionclip_add NLA_OT_add_meta --> NLA_OT_meta_add NLA_OT_add_tracks --> NLA_OT_tracks_add NLA_OT_add_transition --> NLA_OT_transition_add NLA_OT_remove_meta --> NLA_OT_meta_remove PARTICLE_OT_remove_target --> PARTICLE_OT_target_remove PTCACHE_OT_add_new --> PTCACHE_OT_add --- release/scripts/io/import_anim_bvh.py | 6 +- release/scripts/ui/properties_particle.py | 2 +- release/scripts/ui/properties_physics_common.py | 2 +- release/scripts/ui/space_outliner.py | 4 +- release/scripts/ui/space_time.py | 4 +- release/scripts/ui/space_view3d.py | 8 +- release/scripts/ui/space_view3d_toolbar.py | 8 +- source/blender/editors/animation/anim_intern.h | 20 ++-- source/blender/editors/animation/anim_ops.c | 20 ++-- source/blender/editors/animation/drivers.c | 8 +- source/blender/editors/animation/keyframing.c | 30 +++--- source/blender/editors/animation/keyingsets.c | 8 +- source/blender/editors/armature/armature_ops.c | 4 +- source/blender/editors/interface/interface_anim.c | 12 +-- .../blender/editors/interface/interface_handlers.c | 40 ++++---- source/blender/editors/object/object_ops.c | 4 +- source/blender/editors/physics/particle_object.c | 4 +- source/blender/editors/physics/physics_intern.h | 4 +- source/blender/editors/physics/physics_ops.c | 4 +- .../blender/editors/physics/physics_pointcache.c | 4 +- source/blender/editors/space_action/action_edit.c | 68 ++++++------- .../blender/editors/space_action/action_header.c | 56 +++++------ .../blender/editors/space_action/action_intern.h | 42 ++++---- source/blender/editors/space_action/action_ops.c | 106 ++++++++++----------- .../blender/editors/space_action/action_select.c | 16 ++-- source/blender/editors/space_file/file_intern.h | 2 +- source/blender/editors/space_file/file_ops.c | 4 +- source/blender/editors/space_file/file_panels.c | 2 +- source/blender/editors/space_file/space_file.c | 4 +- source/blender/editors/space_graph/graph_edit.c | 4 +- source/blender/editors/space_graph/graph_header.c | 2 +- source/blender/editors/space_graph/graph_intern.h | 2 +- source/blender/editors/space_graph/graph_ops.c | 4 +- source/blender/editors/space_nla/nla_buttons.c | 2 +- source/blender/editors/space_nla/nla_channels.c | 4 +- source/blender/editors/space_nla/nla_edit.c | 18 ++-- source/blender/editors/space_nla/nla_header.c | 12 +-- source/blender/editors/space_nla/nla_intern.h | 10 +- source/blender/editors/space_nla/nla_ops.c | 22 ++--- .../blender/editors/space_outliner/outliner_ops.c | 4 +- source/blender/windowmanager/intern/wm_operators.c | 2 +- 41 files changed, 291 insertions(+), 291 deletions(-) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 0eff15f9ba1..9f7063b24cf 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -485,7 +485,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO bpy.ops.pose.select_all_toggle() # set - bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? @@ -498,7 +498,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO #XXX action = Blender.Armature.NLA.NewAction("Action") #XXX action.setActive(arm_ob) - #bpy.ops.act.new() + #bpy.ops.action.new() #action = bpy.data.actions[-1] # arm_ob.animation_data.action = action @@ -617,7 +617,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO - # bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + # bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? bpy.ops.screen.frame_offset(delta=1) # First time, set the IPO's to linear diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 1b4ba95f540..d95455f7c10 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -454,7 +454,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): sub = col.row() subsub = sub.column(align=True) subsub.operator("particle.new_target", icon='ICON_ZOOMIN', text="") - subsub.operator("particle.remove_target", icon='ICON_ZOOMOUT', text="") + subsub.operator("particle.target_remove", icon='ICON_ZOOMOUT', text="") sub = col.row() subsub = sub.column(align=True) subsub.operator("particle.target_move_up", icon='VICON_MOVE_UP', text="") diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index d1720a2c323..7c1d71302ec 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -30,7 +30,7 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): row = layout.row() row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2) col = row.column(align=True) - col.operator("ptcache.add_new", icon='ICON_ZOOMIN', text="") + col.operator("ptcache.add", icon='ICON_ZOOMIN', text="") col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="") row = layout.row() diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index 5cb8721603d..a398bc66f45 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -53,8 +53,8 @@ class OUTLINER_HT_header(bpy.types.Header): row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") row = layout.row(align=True) - row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') else: row = layout.row(align=False) row.label(text="No Keying Set active") diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index de8d1eb96ab..938a365ed3a 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -78,8 +78,8 @@ class TIME_HT_header(bpy.types.Header): row = layout.row(align=True) row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") - row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') class TIME_MT_view(bpy.types.Menu): diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 03bb635d5b0..de186f4b8a7 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -580,8 +580,8 @@ class VIEW3D_MT_object(bpy.types.Menu): layout.separator() - layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...") + layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...") + layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...") layout.separator() @@ -873,8 +873,8 @@ class VIEW3D_MT_pose(bpy.types.Menu): layout.separator() - layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...") + layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...") + layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...") layout.separator() diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 012a4a18fdd..533ff496c08 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -57,8 +57,8 @@ class VIEW3D_PT_tools_objectmode(View3DPanel): col = layout.column(align=True) col.label(text="Keyframes:") - col.operator("anim.insert_keyframe_menu", text="Insert") - col.operator("anim.delete_keyframe_v3d", text="Remove") + col.operator("anim.keyframe_insert_menu", text="Insert") + col.operator("anim.keyframe_delete_v3d", text="Remove") col = layout.column(align=True) col.label(text="Repeat:") @@ -430,8 +430,8 @@ class VIEW3D_PT_tools_posemode(View3DPanel): col = layout.column(align=True) col.label(text="Keyframes:") - col.operator("anim.insert_keyframe_menu", text="Insert") - col.operator("anim.delete_keyframe_v3d", text="Remove") + col.operator("anim.keyframe_insert_menu", text="Insert") + col.operator("anim.keyframe_delete_v3d", text="Remove") col = layout.column(align=True) col.label(text="Repeat:") diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h index 0101e3d0ef7..bc4f528d43f 100644 --- a/source/blender/editors/animation/anim_intern.h +++ b/source/blender/editors/animation/anim_intern.h @@ -45,25 +45,25 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks * These handle keyframes management from various spaces. They only make use of * Keying Sets. */ -void ANIM_OT_insert_keyframe(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete(struct wmOperatorType *ot); /* Main Keyframe Management operators: * These handle keyframes management from various spaces. They will handle the menus * required for each space. */ -void ANIM_OT_insert_keyframe_menu(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe_v3d(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert_menu(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete_v3d(struct wmOperatorType *ot); /* Keyframe managment operators for UI buttons (RMB menu). */ -void ANIM_OT_insert_keyframe_button(struct wmOperatorType *ot); -void ANIM_OT_delete_keyframe_button(struct wmOperatorType *ot); +void ANIM_OT_keyframe_insert_button(struct wmOperatorType *ot); +void ANIM_OT_keyframe_delete_button(struct wmOperatorType *ot); /* .......... */ /* KeyingSet managment operators for UI buttons (RMB menu) */ -void ANIM_OT_add_keyingset_button(struct wmOperatorType *ot); -void ANIM_OT_remove_keyingset_button(struct wmOperatorType *ot); +void ANIM_OT_keyingset_button_add(struct wmOperatorType *ot); +void ANIM_OT_keyingset_button_remove(struct wmOperatorType *ot); /* KeyingSet management operators for RNA collections/UI buttons */ void ANIM_OT_keying_set_add(struct wmOperatorType *ot); @@ -74,8 +74,8 @@ void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot); /* .......... */ /* Driver management operators for UI buttons (RMB menu) */ -void ANIM_OT_add_driver_button(struct wmOperatorType *ot); -void ANIM_OT_remove_driver_button(struct wmOperatorType *ot); +void ANIM_OT_driver_button_add(struct wmOperatorType *ot); +void ANIM_OT_driver_button_remove(struct wmOperatorType *ot); void ANIM_OT_copy_driver_button(struct wmOperatorType *ot); void ANIM_OT_paste_driver_button(struct wmOperatorType *ot); diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 0f9b2939260..6c8a982b323 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -402,24 +402,24 @@ void ED_operatortypes_anim(void) WM_operatortype_append(ANIM_OT_previewrange_clear); /* Entire UI --------------------------------------- */ - WM_operatortype_append(ANIM_OT_insert_keyframe); - WM_operatortype_append(ANIM_OT_delete_keyframe); - WM_operatortype_append(ANIM_OT_insert_keyframe_menu); - WM_operatortype_append(ANIM_OT_delete_keyframe_v3d); - WM_operatortype_append(ANIM_OT_insert_keyframe_button); - WM_operatortype_append(ANIM_OT_delete_keyframe_button); + WM_operatortype_append(ANIM_OT_keyframe_insert); + WM_operatortype_append(ANIM_OT_keyframe_delete); + WM_operatortype_append(ANIM_OT_keyframe_insert_menu); + WM_operatortype_append(ANIM_OT_keyframe_delete_v3d); + WM_operatortype_append(ANIM_OT_keyframe_insert_button); + WM_operatortype_append(ANIM_OT_keyframe_delete_button); - WM_operatortype_append(ANIM_OT_add_driver_button); - WM_operatortype_append(ANIM_OT_remove_driver_button); + WM_operatortype_append(ANIM_OT_driver_button_add); + WM_operatortype_append(ANIM_OT_driver_button_remove); WM_operatortype_append(ANIM_OT_copy_driver_button); WM_operatortype_append(ANIM_OT_paste_driver_button); WM_operatortype_append(ANIM_OT_copy_clipboard_button); - WM_operatortype_append(ANIM_OT_add_keyingset_button); - WM_operatortype_append(ANIM_OT_remove_keyingset_button); + WM_operatortype_append(ANIM_OT_keyingset_button_add); + WM_operatortype_append(ANIM_OT_keyingset_button_remove); WM_operatortype_append(ANIM_OT_keying_set_add); WM_operatortype_append(ANIM_OT_keying_set_remove); diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index d7d3c21607f..bc7005b82c4 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -411,11 +411,11 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_add_driver_button (wmOperatorType *ot) +void ANIM_OT_driver_button_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Driver"; - ot->idname= "ANIM_OT_add_driver_button"; + ot->idname= "ANIM_OT_driver_button_add"; ot->description= "Add driver(s) for the property(s) connected represented by the highlighted button."; /* callbacks */ @@ -475,11 +475,11 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_remove_driver_button (wmOperatorType *ot) +void ANIM_OT_driver_button_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Driver"; - ot->idname= "ANIM_OT_remove_driver_button"; + ot->idname= "ANIM_OT_driver_button_remove"; ot->description= "Remove the driver(s) for the property(s) connected represented by the highlighted button."; /* callbacks */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index e8d78d2ea8e..8628e2c506a 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -1029,11 +1029,11 @@ static int insert_key_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ANIM_OT_insert_keyframe (wmOperatorType *ot) +void ANIM_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe"; - ot->idname= "ANIM_OT_insert_keyframe"; + ot->idname= "ANIM_OT_keyframe_insert"; ot->description= "Insert keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ @@ -1073,7 +1073,7 @@ static void insert_key_menu_prompt (bContext *C) * - only include entry if it exists */ if (scene->active_keyingset) { - uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_insert_keyframe_menu", "type", i++); + uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_keyframe_insert_menu", "type", i++); uiItemS(layout); } else @@ -1084,7 +1084,7 @@ static void insert_key_menu_prompt (bContext *C) */ if (scene->keyingsets.first) { for (ks= scene->keyingsets.first; ks; ks= ks->next) - uiItemIntO(layout, ks->name, 0, "ANIM_OT_insert_keyframe_menu", "type", i++); + uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i++); uiItemS(layout); } @@ -1093,7 +1093,7 @@ static void insert_key_menu_prompt (bContext *C) 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_insert_keyframe_menu", "type", i--); + uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i--); } } @@ -1119,11 +1119,11 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) } } -void ANIM_OT_insert_keyframe_menu (wmOperatorType *ot) +void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe Menu"; - ot->idname= "ANIM_OT_insert_keyframe_menu"; + ot->idname= "ANIM_OT_keyframe_insert_menu"; /* callbacks */ ot->invoke= insert_key_menu_invoke; @@ -1216,11 +1216,11 @@ static int delete_key_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ANIM_OT_delete_keyframe (wmOperatorType *ot) +void ANIM_OT_keyframe_delete (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe"; - ot->idname= "ANIM_OT_delete_keyframe"; + ot->idname= "ANIM_OT_keyframe_delete"; ot->description= "Delete keyframes on the current frame for all properties in the specified Keying Set."; /* callbacks */ @@ -1285,11 +1285,11 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ANIM_OT_delete_keyframe_v3d (wmOperatorType *ot) +void ANIM_OT_keyframe_delete_v3d (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe"; - ot->idname= "ANIM_OT_delete_keyframe_v3d"; + ot->idname= "ANIM_OT_keyframe_delete_v3d"; /* callbacks */ ot->invoke= WM_operator_confirm; @@ -1377,11 +1377,11 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_insert_keyframe_button (wmOperatorType *ot) +void ANIM_OT_keyframe_insert_button (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframe (Buttons)"; - ot->idname= "ANIM_OT_insert_keyframe_button"; + ot->idname= "ANIM_OT_keyframe_insert_button"; /* callbacks */ ot->exec= insert_key_button_exec; @@ -1447,11 +1447,11 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_delete_keyframe_button (wmOperatorType *ot) +void ANIM_OT_keyframe_delete_button (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframe (Buttons)"; - ot->idname= "ANIM_OT_delete_keyframe_button"; + ot->idname= "ANIM_OT_keyframe_delete_button"; /* callbacks */ ot->exec= delete_key_button_exec; diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index d39e52ab4f4..c3606a03d1e 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -376,11 +376,11 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_add_keyingset_button (wmOperatorType *ot) +void ANIM_OT_keyingset_button_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add to Keying Set"; - ot->idname= "ANIM_OT_add_keyingset_button"; + ot->idname= "ANIM_OT_keyingset_button_add"; /* callbacks */ ot->exec= add_keyingset_button_exec; @@ -454,11 +454,11 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void ANIM_OT_remove_keyingset_button (wmOperatorType *ot) +void ANIM_OT_keyingset_button_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove from Keying Set"; - ot->idname= "ANIM_OT_remove_keyingset_button"; + ot->idname= "ANIM_OT_keyingset_button_remove"; /* callbacks */ ot->exec= remove_keyingset_button_exec; diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 57eab530310..e3c823283d1 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -339,8 +339,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith - WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0); + 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); /* Pose -> PoseLib ------------- */ /* only set in posemode, by space_view3d listener */ diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index d2948852346..0925598cc99 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -189,25 +189,25 @@ void uiAnimContextProperty(const bContext *C, struct PointerRNA *ptr, struct Pro void ui_but_anim_insert_keyframe(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_insert_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyframe_insert_button", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_delete_keyframe(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_delete_keyframe_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyframe_delete_button", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_add_driver(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_add_driver_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_driver_button_add", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_remove_driver(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_remove_driver_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_driver_button_remove", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_copy_driver(bContext *C) @@ -225,11 +225,11 @@ void ui_but_anim_paste_driver(bContext *C) void ui_but_anim_add_keyingset(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_add_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyingset_button_add", WM_OP_INVOKE_DEFAULT, NULL); } void ui_but_anim_remove_keyingset(bContext *C) { /* this operator calls uiAnimContextProperty above */ - WM_operator_name_call(C, "ANIM_OT_remove_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL); + WM_operator_name_call(C, "ANIM_OT_keyingset_button_remove", WM_OP_INVOKE_DEFAULT, NULL); } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index fafa8047a00..fdd751a8fd8 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3409,24 +3409,24 @@ static int ui_but_menu(bContext *C, uiBut *but) /* Keyframes */ if(but->flag & UI_BUT_ANIMATED_KEY) { if(length) { - uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1); + uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_keyframe_delete_button", "all", 1); + uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0); } else { - uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_keyframe_delete_button", "all", 0); } } else if(but->flag & UI_BUT_DRIVEN); else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { if(length) { - uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_keyframe_insert_button", "all", 1); + uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); } else - uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_keyframe_insert_button", "all", 0); } /* Drivers */ @@ -3434,11 +3434,11 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_driver_button_remove", "all", 1); + uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_driver_button_remove", "all", 0); } else - uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_driver_button_remove", "all", 0); uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button"); if (ANIM_driver_can_paste()) @@ -3449,11 +3449,11 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1); - uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_driver_button_add", "all", 1); + uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_driver_button_add", "all", 0); } else - uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_driver_button_add", "all", 0); if (ANIM_driver_can_paste()) uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); @@ -3464,13 +3464,13 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); if(length) { - uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1); - uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 1); + uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove"); } else { - uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_keyingset_button_add", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_keyingset_button_remove"); } } diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index edcd15492e8..4dcecc92880 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -306,8 +306,8 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 0); // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith - WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0); + 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, "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); diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index d29280876d0..ce740a53db8 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -266,11 +266,11 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void PARTICLE_OT_remove_target(wmOperatorType *ot) +void PARTICLE_OT_target_remove(wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Particle Target"; - ot->idname= "PARTICLE_OT_remove_target"; + ot->idname= "PARTICLE_OT_target_remove"; ot->description="Remove the selected particle target."; /* api callbacks */ diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index e8169adc8dc..e7543cbb83e 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -68,7 +68,7 @@ void OBJECT_OT_particle_system_remove(struct wmOperatorType *ot); void PARTICLE_OT_new(struct wmOperatorType *ot); void PARTICLE_OT_new_target(struct wmOperatorType *ot); -void PARTICLE_OT_remove_target(struct wmOperatorType *ot); +void PARTICLE_OT_target_remove(struct wmOperatorType *ot); void PARTICLE_OT_target_move_up(struct wmOperatorType *ot); void PARTICLE_OT_target_move_down(struct wmOperatorType *ot); void PARTICLE_OT_connect_hair(struct wmOperatorType *ot); @@ -99,7 +99,7 @@ void PTCACHE_OT_free_bake_all(struct wmOperatorType *ot); void PTCACHE_OT_bake(struct wmOperatorType *ot); void PTCACHE_OT_free_bake(struct wmOperatorType *ot); void PTCACHE_OT_bake_from_cache(struct wmOperatorType *ot); -void PTCACHE_OT_add_new(struct wmOperatorType *ot); +void PTCACHE_OT_add(struct wmOperatorType *ot); void PTCACHE_OT_remove(struct wmOperatorType *ot); #endif /* ED_PHYSICS_INTERN_H */ diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index af269dc8ed0..b0d804da457 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -75,7 +75,7 @@ static void operatortypes_particle(void) WM_operatortype_append(PARTICLE_OT_new); WM_operatortype_append(PARTICLE_OT_new_target); - WM_operatortype_append(PARTICLE_OT_remove_target); + WM_operatortype_append(PARTICLE_OT_target_remove); WM_operatortype_append(PARTICLE_OT_target_move_up); WM_operatortype_append(PARTICLE_OT_target_move_down); WM_operatortype_append(PARTICLE_OT_connect_hair); @@ -149,7 +149,7 @@ static void operatortypes_pointcache(void) WM_operatortype_append(PTCACHE_OT_bake); WM_operatortype_append(PTCACHE_OT_free_bake); WM_operatortype_append(PTCACHE_OT_bake_from_cache); - WM_operatortype_append(PTCACHE_OT_add_new); + WM_operatortype_append(PTCACHE_OT_add); WM_operatortype_append(PTCACHE_OT_remove); } diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 26099a18966..78728ae9eb0 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -308,11 +308,11 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void PTCACHE_OT_add_new(wmOperatorType *ot) +void PTCACHE_OT_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add new cache"; - ot->idname= "PTCACHE_OT_add_new"; + ot->idname= "PTCACHE_OT_add"; /* api callbacks */ ot->exec= ptcache_add_new_exec; diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index a7c012fc654..1ba837afba3 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -123,11 +123,11 @@ static int act_new_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_new (wmOperatorType *ot) +void ACTION_OT_new (wmOperatorType *ot) { /* identifiers */ ot->name= "New"; - ot->idname= "ACT_OT_new"; + ot->idname= "ACTION_OT_new"; ot->description= "Create new action."; /* api callbacks */ @@ -224,11 +224,11 @@ static int actkeys_previewrange_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_previewrange_set (wmOperatorType *ot) +void ACTION_OT_previewrange_set (wmOperatorType *ot) { /* identifiers */ ot->name= "Auto-Set Preview Range"; - ot->idname= "ACT_OT_previewrange_set"; + ot->idname= "ACTION_OT_previewrange_set"; ot->description= "Set Preview Range based on extents of selected Keyframes."; /* api callbacks */ @@ -272,11 +272,11 @@ static int actkeys_viewall_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_view_all (wmOperatorType *ot) +void ACTION_OT_view_all (wmOperatorType *ot) { /* identifiers */ ot->name= "View All"; - ot->idname= "ACT_OT_view_all"; + ot->idname= "ACTION_OT_view_all"; ot->description= "Reset viewable area to show full keyframe range."; /* api callbacks */ @@ -357,11 +357,11 @@ static int actkeys_copy_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_copy (wmOperatorType *ot) +void ACTION_OT_copy (wmOperatorType *ot) { /* identifiers */ ot->name= "Copy Keyframes"; - ot->idname= "ACT_OT_copy"; + ot->idname= "ACTION_OT_copy"; ot->description= "Copy selected keyframes to the copy/paste buffer."; /* api callbacks */ @@ -402,11 +402,11 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_paste (wmOperatorType *ot) +void ACTION_OT_paste (wmOperatorType *ot) { /* identifiers */ ot->name= "Paste Keyframes"; - ot->idname= "ACT_OT_paste"; + ot->idname= "ACTION_OT_paste"; ot->description= "Paste keyframes from copy/paste buffer for the selected channels, starting on the current frame."; /* api callbacks */ @@ -499,11 +499,11 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_insert_keyframe (wmOperatorType *ot) +void ACT_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframes"; - ot->idname= "ACT_OT_insert_keyframe"; + ot->idname= "ACT_OT_keyframe_insert"; ot->description= "Insert keyframes for the specified channels."; /* api callbacks */ @@ -577,11 +577,11 @@ static int actkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } -void ACT_OT_duplicate (wmOperatorType *ot) +void ACTION_OT_duplicate (wmOperatorType *ot) { /* identifiers */ ot->name= "Duplicate Keyframes"; - ot->idname= "ACT_OT_duplicate"; + ot->idname= "ACTION_OT_duplicate"; ot->description= "Make a copy of all selected keyframes."; /* api callbacks */ @@ -645,11 +645,11 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_delete (wmOperatorType *ot) +void ACTION_OT_delete (wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Keyframes"; - ot->idname= "ACT_OT_delete"; + ot->idname= "ACTION_OT_delete"; ot->description= "Remove all selected keyframes."; /* api callbacks */ @@ -709,11 +709,11 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_clean (wmOperatorType *ot) +void ACTION_OT_clean (wmOperatorType *ot) { /* identifiers */ ot->name= "Clean Keyframes"; - ot->idname= "ACT_OT_clean"; + ot->idname= "ACTION_OT_clean"; ot->description= "Simplify F-Curves by removing closely spaced keyframes."; /* api callbacks */ @@ -773,11 +773,11 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_sample (wmOperatorType *ot) +void ACTION_OT_sample (wmOperatorType *ot) { /* identifiers */ ot->name= "Sample Keyframes"; - ot->idname= "ACT_OT_sample"; + ot->idname= "ACTION_OT_sample"; ot->description= "Add keyframes on every frame between the selected keyframes."; /* api callbacks */ @@ -849,11 +849,11 @@ static int actkeys_expo_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_extrapolation_type (wmOperatorType *ot) +void ACTION_OT_extrapolation_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Extrapolation"; - ot->idname= "ACT_OT_extrapolation_type"; + ot->idname= "ACTION_OT_extrapolation_type"; ot->description= "Set extrapolation mode for selected F-Curves."; /* api callbacks */ @@ -920,11 +920,11 @@ static int actkeys_ipo_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_interpolation_type (wmOperatorType *ot) +void ACTION_OT_interpolation_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Interpolation"; - ot->idname= "ACT_OT_interpolation_type"; + ot->idname= "ACTION_OT_interpolation_type"; ot->description= "Set interpolation mode for the F-Curve segments starting from the selected keyframes."; /* api callbacks */ @@ -1009,11 +1009,11 @@ static int actkeys_handletype_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_handle_type (wmOperatorType *ot) +void ACTION_OT_handle_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Handle Type"; - ot->idname= "ACT_OT_handle_type"; + ot->idname= "ACTION_OT_handle_type"; ot->description= "Set type of handle for selected keyframes."; /* api callbacks */ @@ -1080,11 +1080,11 @@ static int actkeys_keytype_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_keyframe_type (wmOperatorType *ot) +void ACTION_OT_keyframe_type (wmOperatorType *ot) { /* identifiers */ ot->name= "Set Keyframe Type"; - ot->idname= "ACT_OT_keyframe_type"; + ot->idname= "ACTION_OT_keyframe_type"; ot->description= "Set type of keyframe for the seleced keyframes."; /* api callbacks */ @@ -1150,11 +1150,11 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_frame_jump (wmOperatorType *ot) +void ACTION_OT_frame_jump (wmOperatorType *ot) { /* identifiers */ ot->name= "Jump to Frame"; - ot->idname= "ACT_OT_frame_jump"; + ot->idname= "ACTION_OT_frame_jump"; ot->description= "Set the current frame to the average frame of the selected keyframes."; /* api callbacks */ @@ -1246,11 +1246,11 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_snap (wmOperatorType *ot) +void ACTION_OT_snap (wmOperatorType *ot) { /* identifiers */ ot->name= "Snap Keys"; - ot->idname= "ACT_OT_snap"; + ot->idname= "ACTION_OT_snap"; ot->description= "Snap selected keyframes to the times specified."; /* api callbacks */ @@ -1363,11 +1363,11 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_mirror (wmOperatorType *ot) +void ACTION_OT_mirror (wmOperatorType *ot) { /* identifiers */ ot->name= "Mirror Keys"; - ot->idname= "ACT_OT_mirror"; + ot->idname= "ACTION_OT_mirror"; ot->description= "Flip selected keyframes over the selected mirror line."; /* api callbacks */ diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c index 6ec106077f7..d2dbb5fe3b0 100644 --- a/source/blender/editors/space_action/action_header.c +++ b/source/blender/editors/space_action/action_header.c @@ -86,7 +86,7 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, sact, &spaceptr); /* create menu */ - //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACT_OT_properties"); + //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACTION_OT_properties"); //uiItemS(layout); @@ -104,13 +104,13 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set"); uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear"); - uiItemO(layout, NULL, 0, "ACT_OT_previewrange_set"); + uiItemO(layout, NULL, 0, "ACTION_OT_previewrange_set"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_frame_jump"); + uiItemO(layout, NULL, 0, "ACTION_OT_frame_jump"); - uiItemO(layout, NULL, 0, "ACT_OT_view_all"); + uiItemO(layout, NULL, 0, "ACTION_OT_view_all"); if (sa->full) uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow @@ -120,21 +120,21 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) static void act_selectmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemO(layout, NULL, 0, "ACT_OT_select_all_toggle"); - uiItemBooleanO(layout, "Invert All", 0, "ACT_OT_select_all_toggle", "invert", 1); + uiItemO(layout, NULL, 0, "ACTION_OT_select_all_toggle"); + uiItemBooleanO(layout, "Invert All", 0, "ACTION_OT_select_all_toggle", "invert", 1); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_select_border"); - uiItemBooleanO(layout, "Border Axis Range", 0, "ACT_OT_select_border", "axis_range", 1); + uiItemO(layout, NULL, 0, "ACTION_OT_select_border"); + uiItemBooleanO(layout, "Border Axis Range", 0, "ACTION_OT_select_border", "axis_range", 1); uiItemS(layout); - uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS); - uiItemEnumO(layout, "Column on Current Frame", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA); + uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS); + uiItemEnumO(layout, "Column on Current Frame", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA); - uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - uiItemEnumO(layout, "Between Selected Markers", 0, "ACT_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); + uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); + uiItemEnumO(layout, "Between Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); } static void act_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) @@ -170,34 +170,34 @@ static void act_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unus static void act_editmenu(bContext *C, uiLayout *layout, void *arg_unused) { uiItemMenuF(layout, "Transform", 0, act_edit_transformmenu, NULL); - uiItemMenuEnumO(layout, "Snap", 0, "ACT_OT_snap", "type"); - uiItemMenuEnumO(layout, "Mirror", 0, "ACT_OT_mirror", "type"); + uiItemMenuEnumO(layout, "Snap", 0, "ACTION_OT_snap", "type"); + uiItemMenuEnumO(layout, "Mirror", 0, "ACTION_OT_mirror", "type"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_insert_keyframe"); + uiItemO(layout, NULL, 0, "ACT_OT_keyframe_insert"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_duplicate"); - uiItemO(layout, NULL, 0, "ACT_OT_delete"); + uiItemO(layout, NULL, 0, "ACTION_OT_duplicate"); + uiItemO(layout, NULL, 0, "ACTION_OT_delete"); uiItemS(layout); - uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACT_OT_keyframe_type", "type"); - uiItemMenuEnumO(layout, "Handle Type", 0, "ACT_OT_handle_type", "type"); - uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACT_OT_interpolation_type", "type"); - uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACT_OT_extrapolation_type", "type"); + uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACTION_OT_keyframe_type", "type"); + uiItemMenuEnumO(layout, "Handle Type", 0, "ACTION_OT_handle_type", "type"); + uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACTION_OT_interpolation_type", "type"); + uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACTION_OT_extrapolation_type", "type"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_clean"); - uiItemO(layout, NULL, 0, "ACT_OT_sample"); + uiItemO(layout, NULL, 0, "ACTION_OT_clean"); + uiItemO(layout, NULL, 0, "ACTION_OT_sample"); uiItemS(layout); - uiItemO(layout, NULL, 0, "ACT_OT_copy"); - uiItemO(layout, NULL, 0, "ACT_OT_paste"); + uiItemO(layout, NULL, 0, "ACTION_OT_copy"); + uiItemO(layout, NULL, 0, "ACTION_OT_paste"); } /* ************************ header area region *********************** */ @@ -305,7 +305,7 @@ void action_header_buttons(const bContext *C, ARegion *ar) RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, saction, &ptr); layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, 20+3, 20, 1, U.uistyles.first); - uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACT_OT_new", NULL, NULL); + uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACTION_OT_new", NULL, NULL); uiBlockLayoutResolve(block, &xco, NULL); xco += 8; @@ -331,9 +331,9 @@ void action_header_buttons(const bContext *C, ARegion *ar) /* COPY PASTE */ uiBlockBeginAlign(block); - uiDefIconButO(block, BUT, "ACT_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer."); + uiDefIconButO(block, BUT, "ACTION_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer."); xco += XIC; - uiDefIconButO(block, BUT, "ACT_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels."); + uiDefIconButO(block, BUT, "ACTION_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels."); uiBlockEndAlign(block); xco += (XIC + 8); } diff --git a/source/blender/editors/space_action/action_intern.h b/source/blender/editors/space_action/action_intern.h index c436475b537..e45b2d05fac 100644 --- a/source/blender/editors/space_action/action_intern.h +++ b/source/blender/editors/space_action/action_intern.h @@ -53,10 +53,10 @@ void action_header_buttons(const struct bContext *C, struct ARegion *ar); /* ***************************************** */ /* action_select.c */ -void ACT_OT_select_all_toggle(struct wmOperatorType *ot); -void ACT_OT_select_border(struct wmOperatorType *ot); -void ACT_OT_select_column(struct wmOperatorType *ot); -void ACT_OT_clickselect(struct wmOperatorType *ot); +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_clickselect(struct wmOperatorType *ot); /* defines for left-right select tool */ enum { @@ -77,29 +77,29 @@ enum { /* ***************************************** */ /* action_edit.c */ -void ACT_OT_previewrange_set(struct wmOperatorType *ot); -void ACT_OT_view_all(struct wmOperatorType *ot); +void ACTION_OT_previewrange_set(struct wmOperatorType *ot); +void ACTION_OT_view_all(struct wmOperatorType *ot); -void ACT_OT_copy(struct wmOperatorType *ot); -void ACT_OT_paste(struct wmOperatorType *ot); +void ACTION_OT_copy(struct wmOperatorType *ot); +void ACTION_OT_paste(struct wmOperatorType *ot); -void ACT_OT_insert_keyframe(struct wmOperatorType *ot); -void ACT_OT_duplicate(struct wmOperatorType *ot); -void ACT_OT_delete(struct wmOperatorType *ot); -void ACT_OT_clean(struct wmOperatorType *ot); -void ACT_OT_sample(struct wmOperatorType *ot); +void ACT_OT_keyframe_insert(struct wmOperatorType *ot); +void ACTION_OT_duplicate(struct wmOperatorType *ot); +void ACTION_OT_delete(struct wmOperatorType *ot); +void ACTION_OT_clean(struct wmOperatorType *ot); +void ACTION_OT_sample(struct wmOperatorType *ot); -void ACT_OT_keyframe_type(struct wmOperatorType *ot); -void ACT_OT_handle_type(struct wmOperatorType *ot); -void ACT_OT_interpolation_type(struct wmOperatorType *ot); -void ACT_OT_extrapolation_type(struct wmOperatorType *ot); +void ACTION_OT_keyframe_type(struct wmOperatorType *ot); +void ACTION_OT_handle_type(struct wmOperatorType *ot); +void ACTION_OT_interpolation_type(struct wmOperatorType *ot); +void ACTION_OT_extrapolation_type(struct wmOperatorType *ot); -void ACT_OT_frame_jump(struct wmOperatorType *ot); +void ACTION_OT_frame_jump(struct wmOperatorType *ot); -void ACT_OT_snap(struct wmOperatorType *ot); -void ACT_OT_mirror(struct wmOperatorType *ot); +void ACTION_OT_snap(struct wmOperatorType *ot); +void ACTION_OT_mirror(struct wmOperatorType *ot); -void ACT_OT_new(struct wmOperatorType *ot); +void ACTION_OT_new(struct wmOperatorType *ot); /* defines for snap keyframes * NOTE: keep in sync with eEditKeyframes_Snap (in ED_keyframes_edit.h) diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index ba504fa8a69..b4c9fee8469 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -63,30 +63,30 @@ void action_operatortypes(void) { /* keyframes */ /* selection */ - WM_operatortype_append(ACT_OT_clickselect); - WM_operatortype_append(ACT_OT_select_all_toggle); - WM_operatortype_append(ACT_OT_select_border); - WM_operatortype_append(ACT_OT_select_column); + WM_operatortype_append(ACTION_OT_clickselect); + WM_operatortype_append(ACTION_OT_select_all_toggle); + WM_operatortype_append(ACTION_OT_select_border); + WM_operatortype_append(ACTION_OT_select_column); /* editing */ - WM_operatortype_append(ACT_OT_snap); - WM_operatortype_append(ACT_OT_mirror); - WM_operatortype_append(ACT_OT_frame_jump); - WM_operatortype_append(ACT_OT_handle_type); - WM_operatortype_append(ACT_OT_interpolation_type); - WM_operatortype_append(ACT_OT_extrapolation_type); - WM_operatortype_append(ACT_OT_keyframe_type); - WM_operatortype_append(ACT_OT_sample); - WM_operatortype_append(ACT_OT_clean); - WM_operatortype_append(ACT_OT_delete); - WM_operatortype_append(ACT_OT_duplicate); - WM_operatortype_append(ACT_OT_insert_keyframe); - WM_operatortype_append(ACT_OT_copy); - WM_operatortype_append(ACT_OT_paste); - WM_operatortype_append(ACT_OT_new); - - WM_operatortype_append(ACT_OT_previewrange_set); - WM_operatortype_append(ACT_OT_view_all); + WM_operatortype_append(ACTION_OT_snap); + WM_operatortype_append(ACTION_OT_mirror); + WM_operatortype_append(ACTION_OT_frame_jump); + WM_operatortype_append(ACTION_OT_handle_type); + WM_operatortype_append(ACTION_OT_interpolation_type); + WM_operatortype_append(ACTION_OT_extrapolation_type); + WM_operatortype_append(ACTION_OT_keyframe_type); + WM_operatortype_append(ACTION_OT_sample); + WM_operatortype_append(ACTION_OT_clean); + WM_operatortype_append(ACTION_OT_delete); + WM_operatortype_append(ACTION_OT_duplicate); + WM_operatortype_append(ACT_OT_keyframe_insert); + WM_operatortype_append(ACTION_OT_copy); + WM_operatortype_append(ACTION_OT_paste); + WM_operatortype_append(ACTION_OT_new); + + WM_operatortype_append(ACTION_OT_previewrange_set); + WM_operatortype_append(ACTION_OT_view_all); } /* ************************** registration - keymaps **********************************/ @@ -97,69 +97,69 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) /* action_select.c - selection tools */ /* click-select */ - WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); RNA_boolean_set(kmi->ptr, "column", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT|KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); RNA_boolean_set(kmi->ptr, "column", 1); - kmi= WM_keymap_add_item(keymap, "ACT_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); + kmi= WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); RNA_enum_set(kmi->ptr, "left_right", ACTKEYS_LRSEL_TEST); /* deselect all */ - WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1); + WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1); /* borderselect */ - WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ACT_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1); + WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "ACTION_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1); /* column select */ - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - RNA_enum_set(WM_keymap_add_item(keymap, "ACT_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); + RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); /* action_edit.c */ /* snap - current frame to selected keys */ // TODO: maybe since this is called jump, we're better to have it on -J? - WM_keymap_add_item(keymap, "ACT_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_frame_jump", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); /* menu + single-step transform */ - WM_keymap_add_item(keymap, "ACT_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_mirror", MKEY, KM_PRESS, KM_SHIFT, 0); /* menu + set setting */ - WM_keymap_add_item(keymap, "ACT_OT_handle_type", HKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_keyframe_type", RKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_handle_type", HKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_interpolation_type", TKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_keyframe_type", RKEY, KM_PRESS, 0, 0); /* destructive */ - WM_keymap_add_item(keymap, "ACT_OT_clean", OKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_clean", OKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_sample", OKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACT_OT_delete", DELKEY, KM_PRESS, 0, 0); + 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, "ACT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACT_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ACT_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); /* copy/paste */ - WM_keymap_add_item(keymap, "ACT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ACT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); /* auto-set range */ - WM_keymap_add_item(keymap, "ACT_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "ACT_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); /* transform system */ transform_keymap_for_space(keyconf, keymap, SPACE_ACTION); /* test */ - /* WM_keymap_add_item(keymap, "ACT_OT_test", QKEY, KM_PRESS, 0, 0); */ + /* WM_keymap_add_item(keymap, "ACTION_OT_test", QKEY, 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 c4f2e40e958..8eeed6da100 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -181,11 +181,11 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_all_toggle (wmOperatorType *ot) +void ACTION_OT_select_all_toggle (wmOperatorType *ot) { /* identifiers */ ot->name= "Select All"; - ot->idname= "ACT_OT_select_all_toggle"; + ot->idname= "ACTION_OT_select_all_toggle"; ot->description= "Toggle selection of all keyframes."; /* api callbacks */ @@ -342,11 +342,11 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_border(wmOperatorType *ot) +void ACTION_OT_select_border(wmOperatorType *ot) { /* identifiers */ ot->name= "Border Select"; - ot->idname= "ACT_OT_select_border"; + ot->idname= "ACTION_OT_select_border"; ot->description= "Select all keyframes within the specified region."; /* api callbacks */ @@ -556,11 +556,11 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ACT_OT_select_column (wmOperatorType *ot) +void ACTION_OT_select_column (wmOperatorType *ot) { /* identifiers */ ot->name= "Select All"; - ot->idname= "ACT_OT_select_column"; + ot->idname= "ACTION_OT_select_column"; ot->description= "Select all keyframes on the specified frame(s)."; /* api callbacks */ @@ -979,11 +979,11 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; } -void ACT_OT_clickselect (wmOperatorType *ot) +void ACTION_OT_clickselect (wmOperatorType *ot) { /* identifiers */ ot->name= "Mouse Select Keys"; - ot->idname= "ACT_OT_clickselect"; + ot->idname= "ACTION_OT_clickselect"; ot->description= "Select keyframes by clicking on them."; /* api callbacks - absolutely no exec() this yet... */ diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h index d07ffd4b964..fa99dc6e1ee 100644 --- a/source/blender/editors/space_file/file_intern.h +++ b/source/blender/editors/space_file/file_intern.h @@ -55,7 +55,7 @@ void FILE_OT_select(struct wmOperatorType *ot); void FILE_OT_select_all_toggle(struct wmOperatorType *ot); void FILE_OT_select_border(struct wmOperatorType *ot); void FILE_OT_select_bookmark(struct wmOperatorType *ot); -void FILE_OT_add_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); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 7aa56158304..2d4185e871a 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -386,12 +386,12 @@ static int bookmark_add_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void FILE_OT_add_bookmark(wmOperatorType *ot) +void FILE_OT_bookmark_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add Bookmark"; ot->description= "Add a bookmark for the selected/active directory."; - ot->idname= "FILE_OT_add_bookmark"; + ot->idname= "FILE_OT_bookmark_add"; /* api callbacks */ ot->exec= bookmark_add_exec; diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index afdb0d24917..b6f37000afa 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -138,7 +138,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa) if(sfile) { row= uiLayoutRow(pa->layout, 0); - uiItemO(row, "Add", ICON_ZOOMIN, "file.add_bookmark"); + uiItemO(row, "Add", ICON_ZOOMIN, "file.bookmark_add"); uiItemL(row, NULL, 0); file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index cadb5767508..8bbdbbeb4fb 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -354,7 +354,7 @@ void file_operatortypes(void) WM_operatortype_append(FILE_OT_next); WM_operatortype_append(FILE_OT_refresh); WM_operatortype_append(FILE_OT_bookmark_toggle); - WM_operatortype_append(FILE_OT_add_bookmark); + WM_operatortype_append(FILE_OT_bookmark_add); WM_operatortype_append(FILE_OT_delete_bookmark); WM_operatortype_append(FILE_OT_hidedot); WM_operatortype_append(FILE_OT_filenum); @@ -371,7 +371,7 @@ void file_keymap(struct wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "File", SPACE_FILE, 0); WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "FILE_OT_bookmark_add", BKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 2088ee4030c..381d5becb1e 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -481,11 +481,11 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void GRAPH_OT_insert_keyframe (wmOperatorType *ot) +void GRAPH_OT_keyframe_insert (wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Keyframes"; - ot->idname= "GRAPH_OT_insert_keyframe"; + ot->idname= "GRAPH_OT_keyframe_insert"; ot->description= "Insert keyframes for the specified channels."; /* api callbacks */ diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index 63c95b18e2d..a5f9cb23555 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -167,7 +167,7 @@ static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemS(layout); - uiItemO(layout, NULL, 0, "GRAPH_OT_insert_keyframe"); + uiItemO(layout, NULL, 0, "GRAPH_OT_keyframe_insert"); uiItemO(layout, NULL, 0, "GRAPH_OT_fmodifier_add"); uiItemS(layout); diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h index 1e0f66751f0..87e03247353 100644 --- a/source/blender/editors/space_graph/graph_intern.h +++ b/source/blender/editors/space_graph/graph_intern.h @@ -90,7 +90,7 @@ void GRAPH_OT_previewrange_set(struct wmOperatorType *ot); void GRAPH_OT_view_all(struct wmOperatorType *ot); void GRAPH_OT_click_insert(struct wmOperatorType *ot); -void GRAPH_OT_insert_keyframe(struct wmOperatorType *ot); +void GRAPH_OT_keyframe_insert(struct wmOperatorType *ot); void GRAPH_OT_copy(struct wmOperatorType *ot); void GRAPH_OT_paste(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index 1780942a123..cddb1965964 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -255,7 +255,7 @@ void graphedit_operatortypes(void) WM_operatortype_append(GRAPH_OT_copy); WM_operatortype_append(GRAPH_OT_paste); - WM_operatortype_append(GRAPH_OT_insert_keyframe); + WM_operatortype_append(GRAPH_OT_keyframe_insert); WM_operatortype_append(GRAPH_OT_click_insert); /* F-Curve Modifiers */ @@ -337,7 +337,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); /* insertkey */ - WM_keymap_add_item(keymap, "GRAPH_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); /* copy/paste */ diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 205aff27be7..e8eca9de281 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -247,7 +247,7 @@ 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", "ACT_OT_new", NULL, NULL /*"ACT_OT_unlink"*/); // XXX: need to make these operators + uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators /* extrapolation */ row= uiLayoutRow(layout, 1); diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index ab447dd974a..5f9d6b03efc 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -429,11 +429,11 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_tracks (wmOperatorType *ot) +void NLA_OT_tracks_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Track(s)"; - ot->idname= "NLA_OT_add_tracks"; + ot->idname= "NLA_OT_tracks_add"; ot->description= "Add NLA-Tracks above/after the selected tracks."; /* api callbacks */ diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 12e43465a29..0ae3a347872 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -259,7 +259,7 @@ static int nlaedit_add_actionclip_invoke (bContext *C, wmOperator *op, wmEvent * /* loop through Actions in Main database, adding as items in the menu */ for (act= m->action.first; act; act= act->id.next) - uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_add_actionclip", "action", act->id.name); + uiItemStringO(layout, act->id.name+2, 0, "NLA_OT_actionclip_add", "action", act->id.name); uiItemS(layout); uiPupMenuEnd(C, pup); @@ -347,11 +347,11 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_actionclip (wmOperatorType *ot) +void NLA_OT_actionclip_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Action Strip"; - ot->idname= "NLA_OT_add_actionclip"; + ot->idname= "NLA_OT_actionclip_add"; ot->description= "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track."; /* api callbacks */ @@ -467,11 +467,11 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op) } } -void NLA_OT_add_transition (wmOperatorType *ot) +void NLA_OT_transition_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Transition"; - ot->idname= "NLA_OT_add_transition"; + ot->idname= "NLA_OT_transition_add"; ot->description= "Add a transition strip between two adjacent selected strips."; /* api callbacks */ @@ -529,11 +529,11 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_add_meta (wmOperatorType *ot) +void NLA_OT_meta_add (wmOperatorType *ot) { /* identifiers */ ot->name= "Add Meta-Strips"; - ot->idname= "NLA_OT_add_meta"; + ot->idname= "NLA_OT_meta_add"; ot->description= "Add new meta-strips incorporating the selected strips."; /* api callbacks */ @@ -581,11 +581,11 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NLA_OT_remove_meta (wmOperatorType *ot) +void NLA_OT_meta_remove (wmOperatorType *ot) { /* identifiers */ ot->name= "Remove Meta-Strips"; - ot->idname= "NLA_OT_remove_meta"; + ot->idname= "NLA_OT_meta_remove"; ot->description= "Separate out the strips held by the selected meta-strips."; /* api callbacks */ diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c index 0c0deaf75ef..2624e7a9255 100644 --- a/source/blender/editors/space_nla/nla_header.c +++ b/source/blender/editors/space_nla/nla_header.c @@ -177,18 +177,18 @@ static void nla_editmenu(bContext *C, uiLayout *layout, void *arg_unused) static void nla_addmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemO(layout, NULL, 0, "NLA_OT_add_actionclip"); - uiItemO(layout, NULL, 0, "NLA_OT_add_transition"); + uiItemO(layout, NULL, 0, "NLA_OT_actionclip_add"); + uiItemO(layout, NULL, 0, "NLA_OT_transition_add"); uiItemS(layout); - uiItemO(layout, NULL, 0, "NLA_OT_add_meta"); - uiItemO(layout, NULL, 0, "NLA_OT_remove_meta"); + uiItemO(layout, NULL, 0, "NLA_OT_meta_add"); + uiItemO(layout, NULL, 0, "NLA_OT_meta_remove"); uiItemS(layout); - uiItemO(layout, NULL, 0, "NLA_OT_add_tracks"); - uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_add_tracks", "above_selected", 1); + uiItemO(layout, NULL, 0, "NLA_OT_tracks_add"); + uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_tracks_add", "above_selected", 1); } /* ------------------ */ diff --git a/source/blender/editors/space_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h index 91c1decc576..ca50452b442 100644 --- a/source/blender/editors/space_nla/nla_intern.h +++ b/source/blender/editors/space_nla/nla_intern.h @@ -88,11 +88,11 @@ void NLA_OT_tweakmode_exit(wmOperatorType *ot); /* --- */ -void NLA_OT_add_actionclip(wmOperatorType *ot); -void NLA_OT_add_transition(wmOperatorType *ot); +void NLA_OT_actionclip_add(wmOperatorType *ot); +void NLA_OT_transition_add(wmOperatorType *ot); -void NLA_OT_add_meta(wmOperatorType *ot); -void NLA_OT_remove_meta(wmOperatorType *ot); +void NLA_OT_meta_add(wmOperatorType *ot); +void NLA_OT_meta_remove(wmOperatorType *ot); void NLA_OT_duplicate(wmOperatorType *ot); void NLA_OT_delete(wmOperatorType *ot); @@ -116,7 +116,7 @@ void NLA_OT_fmodifier_add(wmOperatorType *ot); void NLA_OT_channels_click(wmOperatorType *ot); -void NLA_OT_add_tracks(wmOperatorType *ot); +void NLA_OT_tracks_add(wmOperatorType *ot); void NLA_OT_delete_tracks(wmOperatorType *ot); /* **************************************** */ diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index d210016d201..8f057c2d751 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -130,7 +130,7 @@ void nla_operatortypes(void) /* channels */ WM_operatortype_append(NLA_OT_channels_click); - WM_operatortype_append(NLA_OT_add_tracks); + WM_operatortype_append(NLA_OT_tracks_add); WM_operatortype_append(NLA_OT_delete_tracks); /* select */ @@ -142,11 +142,11 @@ void nla_operatortypes(void) WM_operatortype_append(NLA_OT_tweakmode_enter); WM_operatortype_append(NLA_OT_tweakmode_exit); - WM_operatortype_append(NLA_OT_add_actionclip); - WM_operatortype_append(NLA_OT_add_transition); + WM_operatortype_append(NLA_OT_actionclip_add); + WM_operatortype_append(NLA_OT_transition_add); - WM_operatortype_append(NLA_OT_add_meta); - WM_operatortype_append(NLA_OT_remove_meta); + WM_operatortype_append(NLA_OT_meta_add); + WM_operatortype_append(NLA_OT_meta_remove); WM_operatortype_append(NLA_OT_duplicate); WM_operatortype_append(NLA_OT_delete); @@ -178,8 +178,8 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap) /* channel operations */ /* add tracks */ - WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_add_tracks", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1); + WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "above_selected", 1); /* delete tracks */ WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0); @@ -240,12 +240,12 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, 0, 0); /* add strips */ - WM_keymap_add_item(keymap, "NLA_OT_add_actionclip", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_add_transition", TKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_actionclip_add", AKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_transition_add", TKEY, KM_PRESS, KM_SHIFT, 0); /* meta-strips */ - WM_keymap_add_item(keymap, "NLA_OT_add_meta", GKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_remove_meta", GKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "NLA_OT_meta_add", GKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NLA_OT_meta_remove", GKEY, KM_PRESS, KM_ALT, 0); /* duplicate */ WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index 431801d50f2..434c7942714 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -107,8 +107,8 @@ void outliner_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_add_selected", DKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "OUTLINER_OT_drivers_delete_selected", DKEY, KM_PRESS, KM_ALT, 0); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 1d6941f471d..2915cc64cf0 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2685,7 +2685,7 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) #endif /* assign map to operators */ - WM_modalkeymap_assign(keymap, "ACT_OT_select_border"); + WM_modalkeymap_assign(keymap, "ACTION_OT_select_border"); WM_modalkeymap_assign(keymap, "ANIM_OT_channels_select_border"); WM_modalkeymap_assign(keymap, "ANIM_OT_previewrange_set"); WM_modalkeymap_assign(keymap, "CONSOLE_OT_select_border"); -- cgit v1.2.3 From 5814a39aedbf9a4398a9be91ad4e9db7b40ff540 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 15:11:10 +0000 Subject: lasso select for editbones missing flush select call --- source/blender/editors/space_view3d/view3d_select.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 7f08a4b91e3..2b45cfef6e1 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -648,7 +648,7 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m else ebone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); } } - + ED_armature_sync_selection(arm->edbo); ED_armature_validate_active(arm); } -- cgit v1.2.3 From 38ba32a42396aeb320beee88a3909cfb6de5e631 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 17:20:42 +0000 Subject: UI: * Added icons for the 3d manipulator RNA * Fixed the snap RNA icon (was off by one) --- source/blender/makesrna/intern/rna_scene.c | 2 +- source/blender/makesrna/intern/rna_space.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 9c964b18ffa..7fa2f145a7e 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -649,7 +649,7 @@ static void rna_def_tool_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP); RNA_def_property_ui_text(prop, "Snap", "Snap during transform."); - RNA_def_property_ui_icon(prop, ICON_SNAP_ON, 1); + RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1); RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 9307d56c1cb..8739733ec61 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -776,21 +776,25 @@ static void rna_def_space_3dview(BlenderRNA *brna) prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR); RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms."); + RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "manipulator_translate", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE); RNA_def_property_ui_text(prop, "Manipulator Translate", "Use the manipulator for movement transformations."); + RNA_def_property_ui_icon(prop, ICON_MAN_TRANS, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "manipulator_rotate", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE); RNA_def_property_ui_text(prop, "Manipulator Rotate", "Use the manipulator for rotation transformations."); + RNA_def_property_ui_icon(prop, ICON_MAN_ROT, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "manipulator_scale", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE); RNA_def_property_ui_text(prop, "Manipulator Scale", "Use the manipulator for scale transformations."); + RNA_def_property_ui_icon(prop, ICON_MAN_SCALE, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE); -- cgit v1.2.3 From 1c4150f21138ad0ab6e8b1a41688074e8a87e64c Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Sat, 28 Nov 2009 17:30:34 +0000 Subject: BGE: ray casting works on soft body, the hit polygon is also returned. The modifications to Bullet have been reported to Bullet forum. Note: welding is completely disabled on soft body as it breaks the relationship between the soft body collision shape and the graphics mesh without bringing any additional stability (the reverse actually). --- .../BroadphaseCollision/btBroadphaseProxy.h | 4 ++++ .../CollisionDispatch/btCollisionWorld.cpp | 26 ++++++++++++++++++++++ .../CollisionShapes/btCollisionShape.h | 4 ++++ .../Converter/BL_BlenderDataConversion.cpp | 4 +++- .../Physics/Bullet/CcdPhysicsEnvironment.cpp | 10 ++++++++- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h index be261ec4080..a9f3223798b 100644 --- a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h @@ -152,6 +152,10 @@ BT_DECLARE_ALIGNED_ALLOCATOR(); { return (proxyType == STATIC_PLANE_PROXYTYPE); } + static SIMD_FORCE_INLINE bool isSoftBody(int proxyType) + { + return (proxyType == SOFTBODY_SHAPE_PROXYTYPE); + } } ; diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index 10e880e2523..7159f552829 100644 --- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -31,6 +31,7 @@ subject to the following restrictions: #include "LinearMath/btAabbUtil2.h" #include "LinearMath/btQuickprof.h" #include "LinearMath/btStackAlloc.h" +#include "BulletSoftBody/btSoftBody.h" //#define USE_BRUTEFORCE_RAYBROADPHASE 1 //RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest @@ -411,6 +412,31 @@ void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTra // restore collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); } + } else { + if (collisionShape->isSoftBody()) { + btSoftBody* softBody = static_cast(collisionObject); + btSoftBody::sRayCast softResult; + if (softBody->rayTest(rayFromTrans.getOrigin(), rayToTrans.getOrigin(), softResult)) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = 0; + shapeInfo.m_triangleIndex = softResult.index; + // get the normal + btVector3 normal = softBody->m_faces[softResult.index].m_normal; + btVector3 rayDir = rayToTrans.getOrigin() - rayFromTrans.getOrigin(); + if (normal.dot(rayDir) > 0) { + // normal always point toward origin of the ray + normal = -normal; + } + btCollisionWorld::LocalRayResult rayResult + (collisionObject, + &shapeInfo, + normal, + softResult.fraction); + bool normalInWorldSpace = true; + resultCallback.addSingleResult(rayResult,normalInWorldSpace); + } + } } } } diff --git a/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h b/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h index 1f4b9bec647..b6374e64153 100644 --- a/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h +++ b/extern/bullet2/src/BulletCollision/CollisionShapes/btCollisionShape.h @@ -72,6 +72,10 @@ public: { return btBroadphaseProxy::isCompound(getShapeType()); } + SIMD_FORCE_INLINE bool isSoftBody() const + { + return btBroadphaseProxy::isSoftBody(getShapeType()); + } ///isInfinite is used to catch simulation error (aabb check) SIMD_FORCE_INLINE bool isInfinite() const diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index d837b2c4466..31616fdec15 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1458,7 +1458,9 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, objprop.m_soft_kAHR= blenderobject->bsoft->kAHR; /* Anchors hardness [0,1] */ objprop.m_soft_collisionflags= blenderobject->bsoft->collisionflags; /* Vertex/Face or Signed Distance Field(SDF) or Clusters, Soft versus Soft or Rigid */ objprop.m_soft_numclusteriterations= blenderobject->bsoft->numclusteriterations; /* number of iterations to refine collision clusters*/ - objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */ + //objprop.m_soft_welding = blenderobject->bsoft->welding; /* welding */ + /* disable welding: it doesn't bring any additional stability and it breaks the relation between soft body collision shape and graphic mesh */ + objprop.m_soft_welding = 0.f; objprop.m_margin = blenderobject->bsoft->margin; objprop.m_contactProcessingThreshold = 0.f; } else diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 5cd20a3ec12..3d1fa6fc180 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -1070,6 +1070,8 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac rayCallback.m_hitTriangleIndex < shapeInfo->m_polygonIndexArray.size()) { result.m_meshObject = shapeInfo->GetMesh(); + // note for softbody: this assumes that the softbody shape uses the same triangle numbering + // than the triangle mesh shape that was used to build it result.m_polygon = shapeInfo->m_polygonIndexArray.at(rayCallback.m_hitTriangleIndex); // Bullet returns the normal from "outside". @@ -1078,7 +1080,13 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac { // mesh shapes are shared and stored in the shapeInfo btTriangleMeshShape* triangleShape = shapeInfo->GetMeshShape(); - if (triangleShape) + + if (shape->isSoftBody()) + { + // we can get the real normal directly from the body + btSoftBody* softBody = static_cast(rayCallback.m_collisionObject); + rayCallback.m_hitNormalWorld = softBody->m_faces[rayCallback.m_hitTriangleIndex].m_normal; + } else if (triangleShape) { // this code is copied from Bullet btVector3 triangle[3]; -- cgit v1.2.3 From 4780f89370d31d3afd2ec19df3ddd1f68306e5da Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 17:30:56 +0000 Subject: UI: * Convert pose buttons in the 3dview header to uiItems. Fixes the spacing between pose buttons and opengl render buttons. --- .../blender/editors/space_view3d/view3d_header.c | 25 +++++----------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 701e9a43f1b..9dbe95d5c0e 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -2253,27 +2253,12 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) row= uiLayoutRow(layout, 1); uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); - - if (ob && (ob->mode & OB_MODE_POSE)) { - PointerRNA *but_ptr; - uiBut *but; - - xco+= XIC*2; - uiBlockBeginAlign(block); - - uiDefIconButO(block, BUT, "POSE_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, NULL); - uiBlockSetButLock(block, object_data_is_libdata(ob), "Can't edit external libdata"); - xco+= XIC; - - uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, NULL); - xco+= XIC; - but=uiDefIconButO(block, BUT, "POSE_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEFLIPDOWN, xco,yco,XIC,YIC, NULL); - but_ptr= uiButGetOperatorPtrRNA(but); - RNA_boolean_set(but_ptr, "flipped", 1); - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); - + if(ob && (ob->mode & OB_MODE_POSE)) { + row= uiLayoutRow(layout, 1); + uiItemO(row, "", ICON_COPYDOWN, "POSE_OT_copy"); + uiItemO(row, "", ICON_PASTEDOWN, "POSE_OT_paste"); + uiItemBooleanO(row, "", ICON_PASTEFLIPDOWN, "POSE_OT_paste", "flipped", 1); } } } -- cgit v1.2.3 From cd574f32e675be2857524d339ae9e8e10f8abe5a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 17:45:23 +0000 Subject: experemental UI introspection added for mindrones, in python this gives a map of the ui... ui_dict = eval(layout.introspect()) --- source/blender/editors/include/UI_interface.h | 1 + .../blender/editors/interface/interface_layout.c | 86 ++++++++++++++++++++++ source/blender/makesrna/intern/rna_ui_api.c | 6 ++ source/blender/windowmanager/intern/wm_operators.c | 7 +- 4 files changed, 98 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 7fa601c749d..ce49f11be54 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -600,6 +600,7 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout); void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv); void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr); +char *uiLayoutIntrospect(uiLayout *layout); // XXX - testing void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext); void uiLayoutSetActive(uiLayout *layout, int active); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 9ffd2bf434a..d46cb4df1c0 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -2454,3 +2454,89 @@ void uiLayoutSetContextPointer(uiLayout *layout, char *name, PointerRNA *ptr) layout->context= CTX_store_add(&block->contexts, name, ptr); } + +/* introspect funcs */ +#include "BLI_dynstr.h" + +static void ui_intro_button(DynStr *ds, uiButtonItem *bitem) +{ + uiBut *but = bitem->but; + BLI_dynstr_appendf(ds, "'type':%d, ", but->type); /* see ~ UI_interface.h:200 */ + BLI_dynstr_appendf(ds, "'draw_string':'''%s''', ", but->drawstr); + BLI_dynstr_appendf(ds, "'tip':'''%s''', ", but->tip ? but->tip : ""); // not exactly needed, rna has this + + if(but->optype) { + char *opstr = WM_operator_pystring(but->block->evil_C, but->optype, but->opptr, 0); + BLI_dynstr_appendf(ds, "'operator':'''%s''', ", opstr ? opstr : ""); + MEM_freeN(opstr); + } + + if(but->rnaprop) { + BLI_dynstr_appendf(ds, "'rna':'%s.%s[%d]', ", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop), but->rnaindex); + } + +} + +static void ui_intro_items(DynStr *ds, ListBase *lb) +{ + uiItem *item; + + BLI_dynstr_append(ds, "["); + + for(item=lb->first; item; item=item->next) { + + BLI_dynstr_append(ds, "{"); + + /* could also use the INT but this is nicer*/ + switch(item->type) { + case ITEM_BUTTON: BLI_dynstr_append(ds, "'type':'BUTTON', ");break; + case ITEM_LAYOUT_ROW: BLI_dynstr_append(ds, "'type':'ROW', "); break; + case ITEM_LAYOUT_COLUMN: BLI_dynstr_append(ds, "'type':'COLUMN', "); break; + case ITEM_LAYOUT_COLUMN_FLOW:BLI_dynstr_append(ds, "'type':'COLUMN_FLOW', "); break; + case ITEM_LAYOUT_ROW_FLOW: BLI_dynstr_append(ds, "'type':'ROW_FLOW', "); break; + case ITEM_LAYOUT_BOX: BLI_dynstr_append(ds, "'type':'BOX', "); break; + case ITEM_LAYOUT_ABSOLUTE: BLI_dynstr_append(ds, "'type':'ABSOLUTE', "); break; + case ITEM_LAYOUT_SPLIT: BLI_dynstr_append(ds, "'type':'SPLIT', "); break; + case ITEM_LAYOUT_OVERLAP: BLI_dynstr_append(ds, "'type':'OVERLAP', "); break; + case ITEM_LAYOUT_ROOT: BLI_dynstr_append(ds, "'type':'ROOT', "); break; + default: BLI_dynstr_append(ds, "'type':'UNKNOWN', "); break; + } + + switch(item->type) { + case ITEM_BUTTON: + ui_intro_button(ds, (uiButtonItem *)item); + break; + default: + BLI_dynstr_append(ds, "'items':"); + ui_intro_items(ds, &((uiLayout*)item)->items); + break; + } + + BLI_dynstr_append(ds, "}"); + + if(item != lb->last) + BLI_dynstr_append(ds, ", "); + } + BLI_dynstr_append(ds, "], "); +} + +static void ui_intro_uiLayout(DynStr *ds, uiLayout *layout) +{ + ui_intro_items(ds, &layout->items); +} + +static char *str = NULL; // XXX, constant re-freeing, far from ideal. +char *uiLayoutIntrospect(uiLayout *layout) +{ + DynStr *ds= BLI_dynstr_new(); + + if(str) + MEM_freeN(str); + + ui_intro_uiLayout(ds, layout); + + str = BLI_dynstr_get_cstring(ds); + BLI_dynstr_free(ds); + + return str; +} diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 4ae18107ad7..a726a5b628e 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -348,6 +348,12 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "template_header_3D", "uiTemplateHeader3D"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); + + + + func= RNA_def_function(srna, "introspect", "uiLayoutIntrospect"); + parm= RNA_def_string(func, "string", "", 1024*1024, "Descr", "DESCR"); + RNA_def_function_return(func, parm); } #endif diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 2915cc64cf0..5820220f780 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -465,8 +465,11 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i PointerRNA opptr_default; PropertyRNA *prop_default; char *buf_default; - if(!all_args) { + if(all_args==0 || opptr==NULL) { WM_operator_properties_create_ptr(&opptr_default, ot); + + if(opptr==NULL) + opptr = &opptr_default; } @@ -510,7 +513,7 @@ char *WM_operator_pystring(bContext *C, wmOperatorType *ot, PointerRNA *opptr, i } RNA_PROP_END; - if(all_args==0) + if(all_args==0 || opptr==&opptr_default ) WM_operator_properties_free(&opptr_default); BLI_dynstr_append(dynstr, ")"); -- cgit v1.2.3 From b3784c475108af9ea19cbc583326bdde14f64592 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 28 Nov 2009 18:08:17 +0000 Subject: * Restored the "Solid OpenGL lamps" Buttons in user Preferences. --- release/scripts/ui/space_userpref.py | 43 +++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index e9f49665062..34669e14859 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -119,11 +119,11 @@ class USERPREF_PT_interface(bpy.types.Panel): sub1 = sub.column() #Toolbox doesn't exist yet -# sub1.label(text="Toolbox:") -# sub1.prop(view, "use_column_layout") -# sub1.label(text="Open Toolbox Delay:") -# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB") -# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB") +# sub1.label(text="Toolbox:") +# sub1.prop(view, "use_column_layout") +# sub1.label(text="Open Toolbox Delay:") +# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB") +# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB") #manipulator sub1.prop(view, "use_manipulator") @@ -264,6 +264,9 @@ class USERPREF_PT_system(bpy.types.Panel): userpref = context.user_preferences system = userpref.system + lamp0 = system.solid_lights[0] + lamp1 = system.solid_lights[1] + lamp2 = system.solid_lights[2] split = layout.split() @@ -321,6 +324,34 @@ class USERPREF_PT_system(bpy.types.Panel): sub1 = sub.column() + sub1.label(text="Solid OpenGL lights:") + + sub2 = sub1.split() + + col = sub2.column() + col.prop(lamp0, "enabled") + sub = col.column() + sub.active = lamp0.enabled + sub.prop(lamp0, "diffuse_color") + sub.prop(lamp0, "specular_color") + sub.prop(lamp0, "direction") + + col = sub2.column() + col.prop(lamp1, "enabled") + sub = col.column() + sub.active = lamp1.enabled + sub.prop(lamp1, "diffuse_color") + sub.prop(lamp1, "specular_color") + sub.prop(lamp1, "direction") + + col = sub2.column() + col.prop(lamp2, "enabled") + sub = col.column() + sub.active = lamp2.enabled + sub.prop(lamp2, "diffuse_color") + sub.prop(lamp2, "specular_color") + sub.prop(lamp2, "direction") + sub1.label(text="OpenGL:") sub1.prop(system, "clip_alpha", slider=True) sub1.prop(system, "use_mipmaps") @@ -1434,4 +1465,4 @@ bpy.ops.add(WM_OT_keyconfig_export) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) -bpy.ops.add(WM_OT_keyitem_remove) +bpy.ops.add(WM_OT_keyitem_remove) \ No newline at end of file -- cgit v1.2.3 From 201f789cee84235a47dfc4e1f350f80b90c7fcd0 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Sat, 28 Nov 2009 18:16:27 +0000 Subject: qtkit : improve thread safety, enforce build on OSX 10.5+ qtkit movie creation functions can be started in a worker thread only from OSX 10.5 --- source/blender/quicktime/apple/qtkit_export.m | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 9f2a97dee23..6788c22d9a1 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -60,6 +60,11 @@ #endif #import #import + +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +#error OSX 10.5 minimum is needed for QTKit +#endif + #endif /* __APPLE__ */ typedef struct QuicktimeExport { @@ -127,9 +132,12 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) char name[2048]; - if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); - if (G.afbreek != 1) { + + if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); + + [QTMovie enterQTKitOnThread]; + /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */ if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) { G.afbreek = 1; @@ -144,6 +152,7 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) if(qtexport->movie == nil) { G.afbreek = 1; NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]); + [QTMovie exitQTKitOnThread]; } else { [qtexport->movie retain]; [qtexport->filename retain]; @@ -235,6 +244,8 @@ void end_qt(void) [qtexport->frameAttributes release]; [qtexport->movie release]; } + + [QTMovie exitQTKitOnThread]; if(qtexport) { MEM_freeN(qtexport); -- cgit v1.2.3 From baa4a9c7d4dd2da81e74331889475e13eb62cd14 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Sat, 28 Nov 2009 18:19:22 +0000 Subject: CMake/OSX: remove gcc arguments conflicts raising warnings when building in release mode Quicktime/Qtkit linkflags fix for i386 platform --- CMakeLists.txt | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 749a99f5919..100d6065c77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# $Id$ + # $Id$ # ***** BEGIN GPL LICENSE BLOCK ***** # # This program is free software; you can redistribute it and/or @@ -531,19 +531,21 @@ IF(APPLE) SET(LLIBS stdc++ SystemStubs) IF (WITH_COCOA) - SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -DGHOST_COCOA") - SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio") - IF(USE_QTKIT) - SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT") - SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit") - ELSE(USE_QTKIT) - IF(WITH_QUICKTIME) - SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") - ENDIF(WITH_QUICKTIME) - ENDIF(USE_QTKIT) + SET(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA") + SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio") + IF(USE_QTKIT) + SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT") + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit") + IF(CMAKE_OSX_ARCHITECTURES MATCHES i386) + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") + #libSDL still needs 32bit carbon quicktime + ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386) + ELSEIF(WITH_QUICKTIME) + SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime") + ENDIF(USE_QTKIT) ELSE (WITH_COCOA) - SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") - SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime") + SET(PLATFORM_CFLAGS "-pipe -funsigned-char") + SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime") ENDIF (WITH_COCOA) IF(WITH_OPENMP) @@ -585,13 +587,17 @@ IF(APPLE) SET(EXETYPE MACOSX_BUNDLE) - + SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") + SET(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g") IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") - SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") - SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") - SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") - SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + ELSE(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") + SET(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") + SET(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") # Better warnings -- cgit v1.2.3 From da442c1d43c6a0077d13dbf11acd1c4de5feca78 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 18:19:34 +0000 Subject: UI/RNA: * Set default particleedit selection mode in add scene (TODO: not yet changed in the default blend) * Corrected names for particleedit selection mode in RNA, added icons * Added occlude geometry flag to view3d RNA * Converted particleedit buttons to uiItems in view3d header --- source/blender/blenkernel/intern/scene.c | 1 + .../blender/editors/space_view3d/view3d_header.c | 27 ++++++++++------------ source/blender/makesrna/intern/rna_sculpt_paint.c | 6 ++--- source/blender/makesrna/intern/rna_space.c | 6 +++++ 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 91fd0bac400..27cb3ad834b 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -416,6 +416,7 @@ Scene *add_scene(char *name) pset->brushtype= PE_BRUSH_NONE; pset->draw_step= 2; pset->fade_frames= 2; + pset->selectmode= SCE_SELECT_PATH; for(a=0; abrush[a].strength= 50; pset->brush[a].size= 50; diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 9dbe95d5c0e..997a031e605 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1993,6 +1993,7 @@ static int object_mode_icon(int mode) void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) { + bScreen *screen= CTX_wm_screen(C); ARegion *ar= CTX_wm_region(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; @@ -2232,21 +2233,17 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) BKE_mesh_end_editmesh(obedit->data, em); } else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOG, SCE_SELECT_PATH, B_SEL_PATH, ICON_PARTICLE_PATH, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Path edit mode"); - xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_POINT, B_SEL_POINT, ICON_PARTICLE_POINT, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Point select mode"); - xco+= XIC; - uiDefIconButBitI(block, TOG, SCE_SELECT_END, B_SEL_END, ICON_PARTICLE_TIP, xco,yco,XIC,YIC, &ts->particle.selectmode, 1.0, 0.0, 0, 0, "Tip select mode"); - xco+= XIC; - uiBlockEndAlign(block); - - if(v3d->drawtype > OB_WIRE) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Limit selection to visible (clipped with depth buffer)"); - xco+= XIC; - } - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); + PointerRNA v3dptr; + PointerRNA particleptr; + + RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); + RNA_pointer_create(&scene->id, &RNA_ParticleEdit, &ts->particle, &particleptr); + + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &particleptr, "selection_mode", UI_ITEM_R_EXPAND+UI_ITEM_R_ICON_ONLY); + + if(v3d->drawtype > OB_WIRE) + uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); } /* OpenGL Render */ diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index db100c38257..d78ecaa0b46 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -341,9 +341,9 @@ static void rna_def_particle_edit(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem select_mode_items[] = { - {SCE_SELECT_PATH, "PATH", ICON_EDGESEL, "Path", ""}, // XXX icon - {SCE_SELECT_POINT, "POINT", ICON_VERTEXSEL, "Point", ""}, // XXX icon - {SCE_SELECT_END, "END", ICON_FACESEL, "End", "E"}, // XXX icon + {SCE_SELECT_PATH, "PATH", ICON_PARTICLE_PATH, "Path", "Path edit mode"}, + {SCE_SELECT_POINT, "POINT", ICON_PARTICLE_POINT, "Point", "Point select mode"}, + {SCE_SELECT_END, "TIP", ICON_PARTICLE_TIP, "Tip", "Tip select mode"}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem puff_mode[] = { diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 8739733ec61..a16a6cc905a 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -756,6 +756,12 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT); + RNA_def_property_ui_text(prop, "Occlude Geometry", "Limit selection to visible (clipped with depth buffer)"); + RNA_def_property_ui_icon(prop, ICON_ORTHO, 0); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "display_background_image", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, NULL, "rna_View3D_display_background_image_set"); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPIC); -- cgit v1.2.3 From 96900e793c7ac217992ebe80dc1372224dc58f0f Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 18:37:56 +0000 Subject: RNA: * Added ND_DRAW flag to particle selection mode update --- source/blender/makesrna/intern/rna_sculpt_paint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index d78ecaa0b46..6cfd38ba26e 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -380,7 +380,7 @@ static void rna_def_particle_edit(BlenderRNA *brna) RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode"); RNA_def_property_enum_items(prop, select_mode_items); RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode."); - RNA_def_property_update(prop, NC_OBJECT, "rna_ParticleEdit_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update"); prop= RNA_def_property(srna, "keep_lengths", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS); -- cgit v1.2.3 From b52c154f34f8d9d87318e35d468c20579c0fcd78 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 19:32:23 +0000 Subject: - color updating is not working when changing userpefs, added some commented out lines that works when the view in the same window as the userprefs, probably needs a new notifier. - fix for warning --- source/blender/makesrna/intern/rna_object.c | 2 +- source/blender/makesrna/intern/rna_userdef.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index b1e3d9b2408..9d0cdbd2be8 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -964,7 +964,7 @@ static ModifierData *rna_Object_modifier_new(Object *object, bContext *C, Report static void rna_Object_modifier_remove(Object *object, bContext *C, ReportList *reports, ModifierData *md) { - return ED_object_modifier_remove(reports, CTX_data_scene(C), object, md); + ED_object_modifier_remove(reports, CTX_data_scene(C), object, md); } #else diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index d46f78a7c60..9f7d897d09c 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -46,6 +46,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_depsgraph.h" #include "DNA_object_types.h" +// #include "GPU_draw.h" static void rna_userdef_update(bContext *C, PointerRNA *ptr) { @@ -151,6 +152,15 @@ static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr) rna_userdef_update(C, ptr); } +// XXX - todo, this is not accessible from here and it only works when the userprefs are in the same window. +// extern int GPU_default_lights(void); +static void rna_UserDef_viewport_lights_update(bContext *C, PointerRNA *ptr) +{ + // GPU_default_lights(); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL); + rna_userdef_update(C, ptr); +} + static void rna_userdef_autosave_update(bContext *C, PointerRNA *ptr) { WM_autosave_init(C); @@ -1596,21 +1606,25 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna) prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", 1); RNA_def_property_ui_text(prop, "Enabled", "Enable this OpenGL light in solid draw mode."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "direction", PROP_FLOAT, PROP_DIRECTION); RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "diffuse_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Diffuse Color", "The diffuse color of the OpenGL light."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "specular_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "spec"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Specular Color", "The color of the lights specular highlight."); + RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); } static void rna_def_userdef_view(BlenderRNA *brna) -- cgit v1.2.3 From 55c00c53bc9948511cc89d8b4ce4e33d8f7b6f1f Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 19:38:05 +0000 Subject: UI/RNA: * Added icons to proportional edit RNA * Converted proportional edit and snap buttons in 3dview header to uiItems --- .../blender/editors/space_view3d/view3d_header.c | 106 +++++---------------- source/blender/makesrna/intern/rna_scene.c | 20 ++-- 2 files changed, 36 insertions(+), 90 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 997a031e605..fafbe3c850d 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1686,38 +1686,6 @@ static char *ndof_pup(void) return string; } - -static char *snapmode_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Snap Element: %t"); - str += sprintf(str, "%s", "|Increments%x0"); - str += sprintf(str, "%s", "|Vertex%x1"); - str += sprintf(str, "%s", "|Edge%x2"); - str += sprintf(str, "%s", "|Face%x3"); - str += sprintf(str, "%s", "|Volume%x4"); - return string; -} - -static char *propfalloff_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Falloff: %t"); - str += sprintf(str, "%s", "|Smooth Falloff%x0"); - str += sprintf(str, "%s", "|Sphere Falloff%x1"); - str += sprintf(str, "%s", "|Root Falloff%x2"); - str += sprintf(str, "%s", "|Sharp Falloff%x3"); - str += sprintf(str, "%s", "|Linear Falloff%x4"); - str += sprintf(str, "%s", "|Random Falloff%x6"); - str += sprintf(str, "%s", "|Constant, No Falloff%x5"); - return string; -} - - static void do_view3d_header_buttons(bContext *C, void *arg, int event) { wmWindow *win= CTX_wm_window(C); @@ -1999,12 +1967,15 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) View3D *v3d= sa->spacedata.first; Scene *scene= CTX_data_scene(C); ToolSettings *ts= CTX_data_tool_settings(C); + PointerRNA toolsptr; Object *ob= OBACT; Object *obedit = CTX_data_edit_object(C); uiBlock *block; uiLayout *row; int a, xco=0, maxco=0, yco= 0; + RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); + block= uiLayoutAbsoluteBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); @@ -2157,54 +2128,6 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) header_xco_step(ar, &xco, &yco, &maxco, XIC+10); } - - /* proportional falloff */ - if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { - - uiBlockBeginAlign(block); - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) "); - xco+= XIC+10; - - if(ts->proportional) { - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SMOOTHCURVE, propfalloff_pup(), xco,yco,XIC+10,YIC, &(ts->prop_mode), 0.0, 0.0, 0, 0, "Proportional Edit Falloff (Hotkey: Shift O) "); - xco+= XIC+10; - } - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - } - - /* Snap */ - uiBlockBeginAlign(block); - - if (ts->snap_flag & SCE_SNAP) { - uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_ON,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap during transform (Ctrl)"); - } else { - uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_OFF,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Snap during transform (Ctrl)"); - } - xco+= XIC; - - if(v3d->modeselect == OB_MODE_OBJECT && ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { - uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, ICON_SNAP_PEEL_OBJECT,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center"); - xco+= XIC; - } - if (ts->snap_mode == SCE_SNAP_MODE_FACE) { - uiDefIconButBitS(block, TOG, SCE_SNAP_PROJECT, B_REDR, ICON_RETOPO,xco,yco,XIC,YIC, &ts->snap_flag, 0, 0, 0, 0, "Project elements instead of snapping them"); - xco+= XIC; - } - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_INCREMENT, snapmode_pup(), xco,yco,XIC+10,YIC, &(ts->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode"); - xco+= XIC + 10; - if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { - uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &ts->snap_target, 0, 0, 0, 0, "Snap Target Mode"); - xco+= 70; - } - - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - /* selection modus */ if(obedit && (obedit->type == OB_MESH)) { @@ -2245,6 +2168,29 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if(v3d->drawtype > OB_WIRE) uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); } + + /* Proportional editing */ + if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &toolsptr, "proportional_editing", UI_ITEM_R_ICON_ONLY); + if(ts->proportional) + uiItemR(row, "", 0, &toolsptr, "proportional_editing_falloff", UI_ITEM_R_ICON_ONLY); + } + + /* Snap */ + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &toolsptr, "snap", UI_ITEM_R_ICON_ONLY); + uiItemR(row, "", 0, &toolsptr, "snap_element", UI_ITEM_R_ICON_ONLY); + + if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { + uiItemR(row, "", 0, &toolsptr, "snap_target", UI_ITEM_R_ICON_ONLY); + if(v3d->modeselect == OB_MODE_OBJECT) + uiItemR(row, "", 0, &toolsptr, "snap_align_rotation", UI_ITEM_R_ICON_ONLY); + } + if(ts->snap_mode == SCE_SNAP_MODE_VOLUME) + uiItemR(row, "", 0, &toolsptr, "snap_peel_object", UI_ITEM_R_ICON_ONLY); + else if(ts->snap_mode == SCE_SNAP_MODE_FACE) + uiItemR(row, "", 0, &toolsptr, "snap_project", UI_ITEM_R_ICON_ONLY); /* OpenGL Render */ row= uiLayoutRow(layout, 1); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 7fa2f145a7e..7d5a74cbf68 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -56,20 +56,20 @@ EnumPropertyItem snap_target_items[] = { {0, NULL, 0, NULL, NULL}}; EnumPropertyItem proportional_falloff_items[] ={ - {PROP_SMOOTH, "SMOOTH", 0, "Smooth", ""}, - {PROP_SPHERE, "SPHERE", 0, "Sphere", ""}, - {PROP_ROOT, "ROOT", 0, "Root", ""}, - {PROP_SHARP, "SHARP", 0, "Sharp", ""}, - {PROP_LIN, "LINEAR", 0, "Linear", ""}, - {PROP_CONST, "CONSTANT", 0, "Constant", ""}, - {PROP_RANDOM, "RANDOM", 0, "Random", ""}, + {PROP_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""}, + {PROP_SPHERE, "SPHERE", ICON_SPHERECURVE, "Sphere", ""}, + {PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""}, + {PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""}, + {PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", ""}, + {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", ""}, + {PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem proportional_editing_items[] = { - {PROP_EDIT_OFF, "DISABLED", 0, "Disable", ""}, - {PROP_EDIT_ON, "ENABLED", 0, "Enable", ""}, - {PROP_EDIT_CONNECTED, "CONNECTED", 0, "Connected", ""}, + {PROP_EDIT_OFF, "DISABLED", ICON_PROP_OFF, "Disable", ""}, + {PROP_EDIT_ON, "ENABLED", ICON_PROP_ON, "Enable", ""}, + {PROP_EDIT_CONNECTED, "CONNECTED", ICON_PROP_CON, "Connected", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem mesh_select_mode_items[] = { -- cgit v1.2.3 From 267c8de581005b1ffda35e0149c8a7a21e5345db Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 20:02:10 +0000 Subject: UI/RNA: * Removed retopo paint code from view3d header * Added icons to 3dview pivot RNA * Small warning fix --- .../blender/editors/space_view3d/view3d_header.c | 301 +++++++++------------ source/blender/makesrna/intern/rna_object.c | 1 - source/blender/makesrna/intern/rna_space.c | 11 +- 3 files changed, 140 insertions(+), 173 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index fafbe3c850d..434207e0ad7 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -112,7 +112,6 @@ /* XXX port over */ static void countall(void) {} extern void borderselect(); -static int retopo_mesh_paint_check() {return 0;} /* view3d handler codes */ #define VIEW3D_HANDLER_BACKGROUND 1 @@ -2012,197 +2011,165 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlockBeginAlign(block); - if(retopo_mesh_paint_check()) { - void *rpd= NULL; // XXX RetopoPaintData *rpd= get_retopo_paint_data(); - if(rpd) { - ToolSettings *ts= scene->toolsettings; - - uiDefButC(block,ROW,B_REDR,"Pen",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_PEN,0,0,""); - xco+= 40; - uiDefButC(block,ROW,B_REDR,"Line",xco,yco,40,20,&ts->retopo_paint_tool,6.0,RETOPO_LINE,0,0,""); - xco+= 40; - uiDefButC(block,ROW,B_REDR,"Ellipse",xco,yco,60,20,&ts->retopo_paint_tool,6.0,RETOPO_ELLIPSE,0,0,""); - xco+= 65; - - uiBlockBeginAlign(block); - if(ts->retopo_paint_tool == RETOPO_PEN) { - uiDefButC(block,TOG,B_NOP,"Hotspot",xco,yco,60,20, &ts->retopo_hotspot, 0,0,0,0,"Show hotspots at line ends to allow line continuation"); - xco+= 80; - } - else if(ts->retopo_paint_tool == RETOPO_LINE) { - uiDefButC(block,NUM,B_NOP,"LineDiv",xco,yco,80,20,&ts->line_div,1,50,0,0,"Subdivisions per retopo line"); - xco+= 80; - } - else if(ts->retopo_paint_tool == RETOPO_ELLIPSE) { - uiDefButC(block,NUM,B_NOP,"EllDiv",xco,yco,80,20,&ts->ellipse_div,3,50,0,0,"Subdivisions per retopo ellipse"); - xco+= 80; - } - header_xco_step(ar, &xco, &yco, &maxco, 5); - - uiBlockEndAlign(block); - } - } else { - if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { - Mesh *me= ob->data; - uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); - } else { - /* Manipulators aren't used in weight paint mode */ - char *str_menu; - uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)"); - xco+= XIC+10; + if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { + Mesh *me= ob->data; + uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)"); + header_xco_step(ar, &xco, &yco, &maxco, XIC+10); + } else { + /* Manipulators aren't used in weight paint mode */ + char *str_menu; + uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)"); + xco+= XIC+10; - uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, - xco,yco,XIC,YIC, - &v3d->flag, 0, 0, 0, 0, "Move object centers only"); - uiBlockEndAlign(block); + uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, + xco,yco,XIC,YIC, + &v3d->flag, 0, 0, 0, 0, "Move object centers only"); + uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); + header_xco_step(ar, &xco, &yco, &maxco, XIC+8); - uiBlockBeginAlign(block); + uiBlockBeginAlign(block); - /* NDOF */ - if (G.ndofdevice ==0 ) { - uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); - xco+= XIC+10; - - uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM, - xco,yco,XIC,YIC, - &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); - uiBlockEndAlign(block); + /* NDOF */ + if (G.ndofdevice ==0 ) { + uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); + xco+= XIC+10; - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); - } + uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM, + xco,yco,XIC,YIC, + &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); uiBlockEndAlign(block); + + header_xco_step(ar, &xco, &yco, &maxco, XIC+8); + } + uiBlockEndAlign(block); - /* Transform widget / manipulators */ - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); - xco+= XIC; + /* Transform widget / manipulators */ + uiBlockBeginAlign(block); + uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); + xco+= XIC; - if(v3d->twflag & V3D_USE_MANIPULATOR) { - uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); - xco+= XIC; - } + if(v3d->twflag & V3D_USE_MANIPULATOR) { + uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); + xco+= XIC; + } - if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { - v3d->twmode = 0; - } + if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { + v3d->twmode = 0; + } - str_menu = BIF_menustringTransformOrientation(C, "Orientation"); - uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); - MEM_freeN(str_menu); + str_menu = BIF_menustringTransformOrientation(C, "Orientation"); + uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); + MEM_freeN(str_menu); - header_xco_step(ar, &xco, &yco, &maxco, 78); - uiBlockEndAlign(block); - } + header_xco_step(ar, &xco, &yco, &maxco, 78); + uiBlockEndAlign(block); + } - /* LAYERS */ - if(obedit==NULL && v3d->localvd==NULL) { - int ob_lay = ob ? ob->lay : 0; - uiBlockBeginAlign(block); - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - xco+= 5; - uiBlockBeginAlign(block); - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - uiBlockEndAlign(block); + /* LAYERS */ + if(obedit==NULL && v3d->localvd==NULL) { + int ob_lay = ob ? ob->lay : 0; + uiBlockBeginAlign(block); + for(a=0; a<5; a++) { + uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); + } + for(a=0; a<5; a++) { + uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); + } + xco+= 5; + uiBlockBeginAlign(block); + for(a=5; a<10; a++) { + uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); + } + for(a=5; a<10; a++) { + uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); + } + uiBlockEndAlign(block); - xco+= (a-2)*(XIC/2)+3; - - /* LOCK */ - uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); + xco+= (a-2)*(XIC/2)+3; - } + /* LOCK */ + uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)"); + header_xco_step(ar, &xco, &yco, &maxco, XIC+10); - /* selection modus */ - if(obedit && (obedit->type == OB_MESH)) { - EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); + } - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); - xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - if(v3d->drawtype > OB_WIRE) { - if (v3d->flag & V3D_ZBUF_SELECT) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); - } else { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO_OFF, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); - } + /* selection modus */ + if(obedit && (obedit->type == OB_MESH)) { + EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); + + uiBlockBeginAlign(block); + uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); + xco+= XIC; + uiBlockEndAlign(block); + header_xco_step(ar, &xco, &yco, &maxco, 10); + if(v3d->drawtype > OB_WIRE) { + if (v3d->flag & V3D_ZBUF_SELECT) { + uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); + } else { + uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO_OFF, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); } - xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); - - BKE_mesh_end_editmesh(obedit->data, em); } - else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - PointerRNA v3dptr; - PointerRNA particleptr; + xco+= XIC; + uiBlockEndAlign(block); + header_xco_step(ar, &xco, &yco, &maxco, XIC); + + BKE_mesh_end_editmesh(obedit->data, em); + } + else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { + PointerRNA v3dptr; + PointerRNA particleptr; - RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); - RNA_pointer_create(&scene->id, &RNA_ParticleEdit, &ts->particle, &particleptr); + RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); + RNA_pointer_create(&scene->id, &RNA_ParticleEdit, &ts->particle, &particleptr); - row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &particleptr, "selection_mode", UI_ITEM_R_EXPAND+UI_ITEM_R_ICON_ONLY); + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &particleptr, "selection_mode", UI_ITEM_R_EXPAND+UI_ITEM_R_ICON_ONLY); - if(v3d->drawtype > OB_WIRE) - uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); - } + if(v3d->drawtype > OB_WIRE) + uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); + } - /* Proportional editing */ - if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { - row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &toolsptr, "proportional_editing", UI_ITEM_R_ICON_ONLY); - if(ts->proportional) - uiItemR(row, "", 0, &toolsptr, "proportional_editing_falloff", UI_ITEM_R_ICON_ONLY); - } - - /* Snap */ + /* Proportional editing */ + if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &toolsptr, "snap", UI_ITEM_R_ICON_ONLY); - uiItemR(row, "", 0, &toolsptr, "snap_element", UI_ITEM_R_ICON_ONLY); + uiItemR(row, "", 0, &toolsptr, "proportional_editing", UI_ITEM_R_ICON_ONLY); + if(ts->proportional) + uiItemR(row, "", 0, &toolsptr, "proportional_editing_falloff", UI_ITEM_R_ICON_ONLY); + } - if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { - uiItemR(row, "", 0, &toolsptr, "snap_target", UI_ITEM_R_ICON_ONLY); - if(v3d->modeselect == OB_MODE_OBJECT) - uiItemR(row, "", 0, &toolsptr, "snap_align_rotation", UI_ITEM_R_ICON_ONLY); - } - if(ts->snap_mode == SCE_SNAP_MODE_VOLUME) - uiItemR(row, "", 0, &toolsptr, "snap_peel_object", UI_ITEM_R_ICON_ONLY); - else if(ts->snap_mode == SCE_SNAP_MODE_FACE) - uiItemR(row, "", 0, &toolsptr, "snap_project", UI_ITEM_R_ICON_ONLY); + /* Snap */ + row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &toolsptr, "snap", UI_ITEM_R_ICON_ONLY); + uiItemR(row, "", 0, &toolsptr, "snap_element", UI_ITEM_R_ICON_ONLY); - /* OpenGL Render */ - row= uiLayoutRow(layout, 1); - uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); - uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); + if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { + uiItemR(row, "", 0, &toolsptr, "snap_target", UI_ITEM_R_ICON_ONLY); + if(v3d->modeselect == OB_MODE_OBJECT) + uiItemR(row, "", 0, &toolsptr, "snap_align_rotation", UI_ITEM_R_ICON_ONLY); + } + if(ts->snap_mode == SCE_SNAP_MODE_VOLUME) + uiItemR(row, "", 0, &toolsptr, "snap_peel_object", UI_ITEM_R_ICON_ONLY); + else if(ts->snap_mode == SCE_SNAP_MODE_FACE) + uiItemR(row, "", 0, &toolsptr, "snap_project", UI_ITEM_R_ICON_ONLY); + + /* OpenGL Render */ + row= uiLayoutRow(layout, 1); + uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); + uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); - if(ob && (ob->mode & OB_MODE_POSE)) { - row= uiLayoutRow(layout, 1); - uiItemO(row, "", ICON_COPYDOWN, "POSE_OT_copy"); - uiItemO(row, "", ICON_PASTEDOWN, "POSE_OT_paste"); - uiItemBooleanO(row, "", ICON_PASTEFLIPDOWN, "POSE_OT_paste", "flipped", 1); - } + if(ob && (ob->mode & OB_MODE_POSE)) { + row= uiLayoutRow(layout, 1); + uiItemO(row, "", ICON_COPYDOWN, "POSE_OT_copy"); + uiItemO(row, "", ICON_PASTEDOWN, "POSE_OT_paste"); + uiItemBooleanO(row, "", ICON_PASTEFLIPDOWN, "POSE_OT_paste", "flipped", 1); } } - diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 9d0cdbd2be8..9b5e0e0a659 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1283,7 +1283,6 @@ static void rna_def_object_constraints(BlenderRNA *brna, PropertyRNA *cprop) static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; - PropertyRNA *prop; FunctionRNA *func; PropertyRNA *parm; diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index a16a6cc905a..3c5fad067a5 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -638,11 +638,11 @@ static void rna_def_space_3dview(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem pivot_items[] = { - {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""}, - {V3D_CURSOR, "CURSOR", 0, "3D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""}, - {V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""}, - {V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, + {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, + {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""}, + {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECENTER, "Individual Centers", ""}, + {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECOLLECTION, "Median Point", ""}, + {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "Space3DView", "Space"); @@ -777,6 +777,7 @@ static void rna_def_space_3dview(BlenderRNA *brna) prop= RNA_def_property(srna, "pivot_point_align", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ALIGN); RNA_def_property_ui_text(prop, "Align", "Manipulate object centers only."); + RNA_def_property_ui_icon(prop, ICON_ALIGN, 0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From c7f1ec7c3a7b107ea60d213d5b681c1c710da7ea Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 20:26:22 +0000 Subject: bugfix [#20143] .obj import fails --- release/scripts/io/import_scene_obj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 0ef0083b44d..a1996266674 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -807,7 +807,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l blender_tface.uv2= verts_tex[face_vert_tex_indicies[1]] blender_tface.uv3= verts_tex[face_vert_tex_indicies[2]] - if blender_face.verts[3] != 0: + if len(face_vert_loc_indicies)==4: blender_tface.uv4= verts_tex[face_vert_tex_indicies[3]] # for ii, uv in enumerate(blender_face.uv): -- cgit v1.2.3 From 2e61294cbcda690dad6246743784591425705ee0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 20:50:31 +0000 Subject: simple fixes [#20123] "Import" menu entry becomes empty [#20141] In Object menu Make Links appears twice - SVN 24970 also moved OBJs name cleaning func to bpy.utils.clean_name(name, replace="_") --- release/scripts/io/export_obj.py | 23 +++++------------------ release/scripts/modules/bpy/utils.py | 27 +++++++++++++++++++++++++++ release/scripts/ui/space_view3d.py | 1 - 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 0a9085c15f1..94e8a365c0f 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -85,19 +85,6 @@ def fixName(name): else: return name.replace(' ', '_') - -# this used to be in BPySys module -# frankly, I don't understand how it works -def BPySys_cleanName(name): - - v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] - - invalid = ''.join([chr(i) for i in v]) - - for ch in invalid: - name = name.replace(ch, '_') - return name - # A Dict of Materials # (material.name, image.name):matname_imagename # matname_imagename has gaps removed. MTL_DICT = {} @@ -884,7 +871,7 @@ def do_export(filename, context, orig_frame = scn.current_frame if EXPORT_ALL_SCENES: # Add scene name into the context_name - context_name[1] = '_%s' % BPySys_cleanName(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. + context_name[1] = '_%s' % bpy.utils.clean_name(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. # Export an animation? if EXPORT_ANIMATION: @@ -998,9 +985,9 @@ class ExportOBJ(bpy.types.Operator): wm.add_fileselect(self) return ('RUNNING_MODAL',) - def poll(self, context): # Poll isnt working yet - print("Poll") - return context.active_object != None + + + bpy.ops.add(ExportOBJ) @@ -1021,4 +1008,4 @@ if __name__ == "__main__": # - NURBS - needs API additions # - all scenes export # + normals calculation -# - get rid of cleanName somehow + diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index a2c6f764e3b..a10c8bc4dd9 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -25,6 +25,33 @@ def expandpath(path): return path + +_unclean_chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, \ + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, \ + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 58, 59, 60, 61, 62, 63, \ + 64, 91, 92, 93, 94, 96, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, \ + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, \ + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, \ + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, \ + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, \ + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, \ + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, \ + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, \ + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, \ + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254] + +_unclean_chars = ''.join([chr(i) for i in _unclean_chars]) + +def clean_name(name, replace="_"): + ''' + All characters besides A-Z/a-z, 0-9 are replaced with "_" + or the replace argumet if defined. + ''' + for ch in _unclean_chars: + name = name.replace(ch, replace) + return name + + # base scripts _scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) _scripts = (os.path.normpath(_scripts), ) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index de186f4b8a7..751653db15b 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -592,7 +592,6 @@ class VIEW3D_MT_object(bpy.types.Menu): layout.menu("VIEW3D_MT_make_links", text="Make Links...") layout.operator_menu_enum("object.make_local", "type", text="Make Local...") layout.menu("VIEW3D_MT_make_single_user") - layout.menu("VIEW3D_MT_make_links") layout.separator() -- cgit v1.2.3 From ac4cf783a2e585eac21f60a1ad0dea2f1a25038f Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 21:27:28 +0000 Subject: UI/RNA: * Added icon to paint mask RNA * Added v3d->scenelock RNA * Moved more of the 3dview header to use uiItems --- .../blender/editors/space_view3d/view3d_header.c | 102 ++++++--------------- source/blender/makesrna/intern/rna_mesh.c | 3 +- source/blender/makesrna/intern/rna_space.c | 35 ++++++- 3 files changed, 64 insertions(+), 76 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 434207e0ad7..66a24edb196 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1641,38 +1641,6 @@ static char *view3d_modeselect_pup(Scene *scene) return (string); } - -static char *drawtype_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Draw type: %t"); - str += sprintf(str, "%s", "|Bounding Box %x1"); - str += sprintf(str, "%s", "|Wireframe %x2"); - str += sprintf(str, "%s", "|Solid %x3"); -//XXX not working in 2.5! str += sprintf(str, "%s", "|Shaded %x4"); - str += sprintf(str, "%s", "|Textured %x5"); - return string; -} -static char *around_pup(const bContext *C) -{ - Object *obedit = CTX_data_edit_object(C); - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Pivot: %t"); - str += sprintf(str, "%s", "|Bounding Box Center %x0"); - str += sprintf(str, "%s", "|Median Point %x3"); - str += sprintf(str, "%s", "|3D Cursor %x1"); - str += sprintf(str, "%s", "|Individual Centers %x2"); - if ((obedit) && (obedit->type == OB_MESH)) - str += sprintf(str, "%s", "|Active Vert/Edge/Face %x4"); - else - str += sprintf(str, "%s", "|Active Object %x4"); - return string; -} - static char *ndof_pup(void) { static char string[512]; @@ -1966,13 +1934,14 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) View3D *v3d= sa->spacedata.first; Scene *scene= CTX_data_scene(C); ToolSettings *ts= CTX_data_tool_settings(C); - PointerRNA toolsptr; + PointerRNA v3dptr, toolsptr; Object *ob= OBACT; Object *obedit = CTX_data_edit_object(C); uiBlock *block; uiLayout *row; int a, xco=0, maxco=0, yco= 0; + RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); block= uiLayoutAbsoluteBlock(layout); @@ -2004,31 +1973,26 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)"); header_xco_step(ar, &xco, &yco, &maxco, 126+8); - /* DRAWTYPE */ - uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_BBOX, drawtype_pup(), xco,yco,XIC+10,YIC, &(v3d->drawtype), 1.0, 5.0, 0, 0, "Viewport Shading (Hotkeys: Z, Shift Z, Alt Z)"); - - header_xco_step(ar, &xco, &yco, &maxco, XIC+18); - - uiBlockBeginAlign(block); + /* Draw type */ + uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY); if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { - Mesh *me= ob->data; - uiDefIconButBitS(block, TOG, ME_EDIT_PAINT_MASK, B_VIEW_BUTSEDIT, ICON_FACESEL_HLT,xco,yco,XIC,YIC, &me->editflag, 0, 0, 0, 0, "Painting Mask (FKey)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); - } else { /* Manipulators aren't used in weight paint mode */ - char *str_menu; - uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(C), xco,yco,XIC+10,YIC, &(v3d->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period, Ctrl Period, Alt Period)"); - xco+= XIC+10; - - uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, - xco,yco,XIC,YIC, - &v3d->flag, 0, 0, 0, 0, "Move object centers only"); - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); - - uiBlockBeginAlign(block); + PointerRNA meshptr; + + RNA_pointer_create(&ob->id, &RNA_Mesh, ob->data, &meshptr); + uiItemR(layout, "", 0, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY); + } 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); + + block= uiLayoutAbsoluteBlock(layout); + uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); + xco = maxco = yco= 0; /* NDOF */ if (G.ndofdevice ==0 ) { @@ -2073,6 +2037,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) /* LAYERS */ if(obedit==NULL && v3d->localvd==NULL) { int ob_lay = ob ? ob->lay : 0; + + block= uiLayoutAbsoluteBlock(layout); + uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); + xco = maxco = yco= 0; + uiBlockBeginAlign(block); for(a=0; a<5; a++) { uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); @@ -2092,10 +2061,8 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) xco+= (a-2)*(XIC/2)+3; - /* LOCK */ - uiDefIconButS(block, ICONTOG, B_SCENELOCK, ICON_LOCKVIEW_OFF, xco+=XIC,yco,XIC,YIC, &(v3d->scenelock), 0, 0, 0, 0, "Locks Active Camera and layers to Scene (Ctrl `)"); - header_xco_step(ar, &xco, &yco, &maxco, XIC+10); - + /* Scene lock */ + uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); } /* selection modus */ @@ -2110,33 +2077,22 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); xco+= XIC; uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, 10); - if(v3d->drawtype > OB_WIRE) { - if (v3d->flag & V3D_ZBUF_SELECT) { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); - } else { - uiDefIconButBitS(block, TOG, V3D_ZBUF_SELECT, B_REDR, ICON_ORTHO_OFF, xco,yco,XIC,YIC, &v3d->flag, 1.0, 0.0, 0, 0, "Occlude background geometry"); - } - } - xco+= XIC; - uiBlockEndAlign(block); header_xco_step(ar, &xco, &yco, &maxco, XIC); BKE_mesh_end_editmesh(obedit->data, em); } else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - PointerRNA v3dptr; PointerRNA particleptr; - RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); RNA_pointer_create(&scene->id, &RNA_ParticleEdit, &ts->particle, &particleptr); row= uiLayoutRow(layout, 1); uiItemR(row, "", 0, &particleptr, "selection_mode", UI_ITEM_R_EXPAND+UI_ITEM_R_ICON_ONLY); - - if(v3d->drawtype > OB_WIRE) - uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); } + + /* Occlude geometry */ + if(v3d->drawtype > OB_WIRE && ((ob && ob->mode & OB_MODE_PARTICLE_EDIT) || (obedit && (obedit->type == OB_MESH)))) + uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); /* Proportional editing */ if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 2eb360aa35c..bacd7fc2b72 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1727,7 +1727,8 @@ static void rna_def_mesh(BlenderRNA *brna) prop= RNA_def_property(srna, "use_paint_mask", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "editflag", ME_EDIT_PAINT_MASK); RNA_def_property_ui_text(prop, "Paint Mask", "Face selection masking for painting"); - + RNA_def_property_ui_icon(prop, ICON_FACESEL_HLT, 0); + RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); rna_def_texmat_common(srna, "rna_Mesh_texspace_editable"); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 3c5fad067a5..b072da4f64a 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -202,6 +202,31 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i return item; } +/* Space 3D View */ +static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int value) +{ + View3D *v3d= (View3D*)(ptr->data); + bScreen *sc= (bScreen*)ptr->id.data; + + v3d->scenelock = value; + + if(value) { + int bit; + v3d->lay= sc->scene->lay; + /* seek for layact */ + bit= 0; + while(bit<32) { + if(v3d->lay & (1<layact= 1<camera= sc->scene->camera; + } +} + + /* Space Image Editor */ static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr) @@ -640,8 +665,8 @@ static void rna_def_space_3dview(BlenderRNA *brna) static EnumPropertyItem pivot_items[] = { {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECENTER, "Individual Centers", ""}, - {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECOLLECTION, "Median Point", ""}, + {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, + {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", ""}, {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; @@ -830,6 +855,12 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_BOXCLIP); RNA_def_property_ui_text(prop, "Clip", ""); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set"); + RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene."); + RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1); } static void rna_def_space_buttons(BlenderRNA *brna) -- cgit v1.2.3 From 9e6d1705a4215d9a32796f7c474fe327df9decfe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 21:45:34 +0000 Subject: bugfix [#20050] Hex color value fields capped to 2 characters on first paste. also use memmove rather then a loop for deleting the selected text --- .../blender/editors/interface/interface_handlers.c | 28 +++++++++------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index fdd751a8fd8..6d65a2a57a1 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1059,24 +1059,16 @@ static short test_special_char(char ch) static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data) { - char *str; - int x, changed; - - str= data->str; - changed= (but->selsta != but->selend); - - for(x=0; x< strlen(str); x++) { - if (but->selend + x <= strlen(str) ) { - str[but->selsta + x]= str[but->selend + x]; - } else { - str[but->selsta + x]= '\0'; - break; - } + char *str= data->str; + int len= strlen(str); + int change= 0; + if(but->selsta != but->selend && len) { + memmove( str+but->selsta, str+but->selend, len+1 ); + change= 1; } - + but->pos = but->selend = but->selsta; - - return changed; + return change; } static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x) @@ -1365,8 +1357,10 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste buf[i]= 0; /* paste over the current selection */ - if ((but->selend - but->selsta) > 0) + if ((but->selend - but->selsta) > 0) { ui_textedit_delete_selection(but, data); + len= strlen(str); + } for (y=0; y Date: Sat, 28 Nov 2009 21:52:37 +0000 Subject: UI: * Removed most of the manual positioning from the 3dview header --- .../blender/editors/space_view3d/view3d_header.c | 79 ++++++---------------- 1 file changed, 22 insertions(+), 57 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 66a24edb196..bee5e636ad1 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1838,11 +1838,11 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) BKE_mesh_end_editmesh(obedit->data, em); } -static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob, int *xcoord, int yco) +static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob) { Object *obedit = CTX_data_edit_object(C); RegionView3D *rv3d= wm_region_view3d(C); - short xmax, xco= *xcoord; + short xmax, xco= 0, yco = 0; /* compensate for local mode when setting up the viewing menu/iconrow values */ if(rv3d->view==7) rv3d->viewbut= 1; @@ -1885,8 +1885,6 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o /* ported to python */ } } - - *xcoord= xco; } static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay) @@ -1899,19 +1897,6 @@ static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay) return ICON_BLANK1; } -static void header_xco_step(ARegion *ar, int *xco, int *yco, int *maxco, int step) -{ - *xco += step; - if(*maxco < *xco) *maxco = *xco; - - if(ar->winy > *yco + 44) { - if(*xco > ar->winrct.xmax) { - *xco= 8; - *yco+= 22; - } - } -} - /* Returns the icon associated with an object mode */ static int object_mode_icon(int mode) { @@ -1929,7 +1914,6 @@ static int object_mode_icon(int mode) void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) { bScreen *screen= CTX_wm_screen(C); - ARegion *ar= CTX_wm_region(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; Scene *scene= CTX_data_scene(C); @@ -1939,16 +1923,15 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) Object *obedit = CTX_data_edit_object(C); uiBlock *block; uiLayout *row; - int a, xco=0, maxco=0, yco= 0; RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); - block= uiLayoutAbsoluteBlock(layout); + block= uiLayoutGetBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); if((sa->flag & HEADER_NO_PULLDOWN)==0) - view3d_header_pulldowns(C, block, ob, &xco, yco); + view3d_header_pulldowns(C, block, ob); /* other buttons: */ uiBlockSetEmboss(block, UI_EMBOSS); @@ -1969,9 +1952,10 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if(ob && (ob->mode & OB_MODE_TEXTURE_PAINT)) v3d->flag |= V3D_TEXTUREPAINT; if(paint_facesel_test(ob)) v3d->flag |= V3D_FACESELECT; + uiBlockBeginAlign(block); uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) , - xco,yco,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)"); - header_xco_step(ar, &xco, &yco, &maxco, 126+8); + 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)"); + uiBlockEndAlign(block); /* Draw type */ uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY); @@ -1990,36 +1974,24 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiItemR(row, "", 0, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY); uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY); - block= uiLayoutAbsoluteBlock(layout); - uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); - xco = maxco = yco= 0; - /* NDOF */ if (G.ndofdevice ==0 ) { - uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), xco,yco,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); - xco+= XIC+10; + 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, - xco,yco,XIC,YIC, + 0,0,XIC,YIC, &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); - uiBlockEndAlign(block); - - header_xco_step(ar, &xco, &yco, &maxco, XIC+8); } - uiBlockEndAlign(block); /* Transform widget / manipulators */ - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,yco,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); - xco+= XIC; + row= uiLayoutRow(layout, 1); + block= uiLayoutGetBlock(row); + uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,0,0,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); if(v3d->twflag & V3D_USE_MANIPULATOR) { - uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,yco,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); - xco+= XIC; + uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); + uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); + uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); } if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { @@ -2027,20 +1999,17 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) } str_menu = BIF_menustringTransformOrientation(C, "Orientation"); - uiDefButS(block, MENU, B_MAN_MODE, str_menu,xco,yco,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); + uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); MEM_freeN(str_menu); - - header_xco_step(ar, &xco, &yco, &maxco, 78); - uiBlockEndAlign(block); } /* LAYERS */ if(obedit==NULL && v3d->localvd==NULL) { int ob_lay = ob ? ob->lay : 0; + int a, xco = 0, yco = 0; block= uiLayoutAbsoluteBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); - xco = maxco = yco= 0; uiBlockBeginAlign(block); for(a=0; a<5; a++) { @@ -2069,15 +2038,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if(obedit && (obedit->type == OB_MESH)) { EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, xco,yco,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); - xco+= XIC; - uiBlockEndAlign(block); - header_xco_step(ar, &xco, &yco, &maxco, XIC); + row= uiLayoutRow(layout, 1); + block= uiLayoutGetBlock(row); + uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); + uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); + uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); BKE_mesh_end_editmesh(obedit->data, em); } -- cgit v1.2.3 From 2b9cdd5ebdfc523dbea96cf536914f8ba8b8f2c7 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sat, 28 Nov 2009 22:35:56 +0000 Subject: UI: * Started moving buttons out of the C 3dview header template and into the python UI script --- release/scripts/ui/space_view3d.py | 36 ++++++++++++++++++++++ .../blender/editors/space_view3d/view3d_header.c | 35 --------------------- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 751653db15b..72191e822ee 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -31,6 +31,7 @@ class VIEW3D_HT_header(bpy.types.Header): mode_string = context.mode edit_object = context.edit_object object = context.active_object + toolsettings = context.scene.tool_settings row = layout.row(align=True) row.template_header() @@ -55,6 +56,41 @@ class VIEW3D_HT_header(bpy.types.Header): layout.template_header_3D() + # Proportional editing + if object.mode in ('OBJECT', 'EDIT'): + row = layout.row(align=True) + row.prop(toolsettings, "proportional_editing", text="", icon_only=True) + if toolsettings.proportional_editing != 'DISABLED': + row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True) + + # Snap + row = layout.row(align=True) + row.prop(toolsettings, "snap", text="") + row.prop(toolsettings, "snap_element", text="", icon_only=True) + if toolsettings.snap_element != 'INCREMENT': + row.prop(toolsettings, "snap_target", text="", icon_only=True) + if object.mode == 'OBJECT': + row.prop(toolsettings, "snap_align_rotation", text="") + if toolsettings.snap_element == 'VOLUME': + row.prop(toolsettings, "snap_peel_object", text="") + elif toolsettings.snap_element == 'FACE': + row.prop(toolsettings, "snap_project", text="") + + # OpenGL render + row = layout.row(align=True) + row.operator("screen.opengl_render", text="", icon='ICON_RENDER_STILL') + props = row.operator("screen.opengl_render", text="", icon='ICON_RENDER_ANIMATION') + props.animation = True + + # Pose + if object.mode == 'POSE': + row = layout.row(align=True) + row.operator("pose.copy", text="", icon='ICON_COPYDOWN') + row.operator("pose.paste", text="", icon='ICON_PASTEDOWN') + props = row.operator("pose.paste", text="", icon='ICON_PASTEFLIPDOWN') + props.flipped = 1 + + # ********** Menu ********** # ********** Utilities ********** diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index bee5e636ad1..74f08d2b145 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -2058,39 +2058,4 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) /* Occlude geometry */ if(v3d->drawtype > OB_WIRE && ((ob && ob->mode & OB_MODE_PARTICLE_EDIT) || (obedit && (obedit->type == OB_MESH)))) uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); - - /* Proportional editing */ - if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { - row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &toolsptr, "proportional_editing", UI_ITEM_R_ICON_ONLY); - if(ts->proportional) - uiItemR(row, "", 0, &toolsptr, "proportional_editing_falloff", UI_ITEM_R_ICON_ONLY); - } - - /* Snap */ - row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &toolsptr, "snap", UI_ITEM_R_ICON_ONLY); - uiItemR(row, "", 0, &toolsptr, "snap_element", UI_ITEM_R_ICON_ONLY); - - if(ts->snap_mode != SCE_SNAP_MODE_INCREMENT) { - uiItemR(row, "", 0, &toolsptr, "snap_target", UI_ITEM_R_ICON_ONLY); - if(v3d->modeselect == OB_MODE_OBJECT) - uiItemR(row, "", 0, &toolsptr, "snap_align_rotation", UI_ITEM_R_ICON_ONLY); - } - if(ts->snap_mode == SCE_SNAP_MODE_VOLUME) - uiItemR(row, "", 0, &toolsptr, "snap_peel_object", UI_ITEM_R_ICON_ONLY); - else if(ts->snap_mode == SCE_SNAP_MODE_FACE) - uiItemR(row, "", 0, &toolsptr, "snap_project", UI_ITEM_R_ICON_ONLY); - - /* OpenGL Render */ - row= uiLayoutRow(layout, 1); - uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); - uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); - - if(ob && (ob->mode & OB_MODE_POSE)) { - row= uiLayoutRow(layout, 1); - uiItemO(row, "", ICON_COPYDOWN, "POSE_OT_copy"); - uiItemO(row, "", ICON_PASTEDOWN, "POSE_OT_paste"); - uiItemBooleanO(row, "", ICON_PASTEFLIPDOWN, "POSE_OT_paste", "flipped", 1); - } } -- cgit v1.2.3 From 98a7a11e556e020265c4ca8d54e9609e9e86631c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 22:45:47 +0000 Subject: bugfix [#20091] Crash when starting render on meta-edit mode note: EM_DO_UNDO wasnt used because EM_FREEDATA wasnt set --- source/blender/editors/screen/screen_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 456671b3d75..4a002088c3d 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3014,7 +3014,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) multires_force_update(CTX_data_active_object(C)); /* get editmode results */ - ED_object_exit_editmode(C, EM_DO_UNDO); /* 0 = does not exit editmode */ + 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 -- cgit v1.2.3 From 8b897879cd3925f701708e30710534aa5d0ae616 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Nov 2009 23:37:56 +0000 Subject: pep8 cleanup in ui and op dirs, added popup to select pattern --- release/scripts/op/mesh_skin.py | 1176 +++++------ release/scripts/op/object.py | 44 +- release/scripts/op/presets.py | 16 +- release/scripts/op/uvcalc_smart_project.py | 2048 ++++++++++---------- release/scripts/op/wm.py | 2 +- release/scripts/ui/properties_data_bone.py | 1 + release/scripts/ui/properties_material.py | 2 +- release/scripts/ui/properties_object_constraint.py | 1 + release/scripts/ui/properties_physics_cloth.py | 4 +- release/scripts/ui/properties_render.py | 6 +- release/scripts/ui/space_image.py | 8 +- release/scripts/ui/space_sequencer.py | 4 +- release/scripts/ui/space_text.py | 1 - release/scripts/ui/space_userpref.py | 2 +- release/scripts/ui/space_view3d.py | 110 +- release/scripts/ui/space_view3d_toolbar.py | 2 +- 16 files changed, 1711 insertions(+), 1716 deletions(-) diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index 63b5a44e901..5cf526cc23e 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -29,620 +29,620 @@ from Mathutils import AngleBetweenVecs as _AngleBetweenVecs_ BIG_NUM = 1<<30 global CULL_METHOD -CULL_METHOD = 0 +CULL_METHOD = 0 def AngleBetweenVecs(a1,a2): - import math - try: - return math.degrees(_AngleBetweenVecs_(a1,a2)) - except: - return 180.0 + import math + try: + return math.degrees(_AngleBetweenVecs_(a1,a2)) + except: + return 180.0 class edge(object): - __slots__ = 'v1', 'v2', 'co1', 'co2', 'length', 'removed', 'match', 'cent', 'angle', 'next', 'prev', 'normal', 'fake' - def __init__(self, v1,v2): - self.v1 = v1 - self.v2 = v2 - co1, co2= v1.co, v2.co - self.co1= co1 - self.co2= co2 - - # uv1 uv2 vcol1 vcol2 # Add later - self.length = (co1 - co2).length - self.removed = 0 # Have we been culled from the eloop - self.match = None # The other edge were making a face with - - self.cent= MidpointVecs(co1, co2) - self.angle= 0.0 - self.fake= False + __slots__ = 'v1', 'v2', 'co1', 'co2', 'length', 'removed', 'match', 'cent', 'angle', 'next', 'prev', 'normal', 'fake' + def __init__(self, v1,v2): + self.v1 = v1 + self.v2 = v2 + co1, co2= v1.co, v2.co + self.co1= co1 + self.co2= co2 + + # uv1 uv2 vcol1 vcol2 # Add later + self.length = (co1 - co2).length + self.removed = 0 # Have we been culled from the eloop + self.match = None # The other edge were making a face with + + self.cent= MidpointVecs(co1, co2) + self.angle= 0.0 + self.fake= False class edgeLoop(object): - __slots__ = 'centre', 'edges', 'normal', 'closed', 'backup_edges' - def __init__(self, loop, me, closed): # Vert loop - # Use next and prev, nextDist, prevDist - - # Get Loops centre. - fac= len(loop) - verts = me.verts - self.centre= functools.reduce(lambda a,b: a+verts[b].co/fac, loop, Vector()) - - # Convert Vert loop to Edges. - self.edges = [edge(verts[loop[vIdx-1]], verts[loop[vIdx]]) for vIdx in range(len(loop))] - - if not closed: - self.edges[0].fake = True # fake edge option - - self.closed = closed - - - # Assign linked list - for eIdx in range(len(self.edges)-1): - self.edges[eIdx].next = self.edges[eIdx+1] - self.edges[eIdx].prev = self.edges[eIdx-1] - # Now last - self.edges[-1].next = self.edges[0] - self.edges[-1].prev = self.edges[-2] - - - - # GENERATE AN AVERAGE NORMAL FOR THE WHOLE LOOP. - self.normal = Vector() - for e in self.edges: - n = (self.centre-e.co1).cross(self.centre-e.co2) - # Do we realy need tot normalize? - n.normalize() - self.normal += n - - # Generate the angle - va= e.cent - e.prev.cent - vb= e.next.cent - e.cent - - e.angle= AngleBetweenVecs(va, vb) - - # Blur the angles - #for e in self.edges: - # e.angle= (e.angle+e.next.angle)/2 - - # Blur the angles - #for e in self.edges: - # e.angle= (e.angle+e.prev.angle)/2 - - self.normal.normalize() - - # Generate a normal for each edge. - for e in self.edges: - - n1 = e.co1 - n2 = e.co2 - n3 = e.prev.co1 - - a = n1-n2 - b = n1-n3 - normal1 = a.cross(b) - normal1.normalize() - - n1 = e.co2 - n3 = e.next.co2 - n2 = e.co1 - - a = n1-n2 - b = n1-n3 - - normal2 = a.cross(b) - normal2.normalize() - - # Reuse normal1 var - normal1 += normal1 + normal2 - normal1.normalize() - - e.normal = normal1 - #print e.normal - - - - def backup(self): - # Keep a backup of the edges - self.backup_edges = self.edges[:] - - def restore(self): - self.edges = self.backup_edges[:] - for e in self.edges: - e.removed = 0 - - def reverse(self): - self.edges.reverse() - self.normal.negate() - - for e in self.edges: - e.normal.negate() - e.v1, e.v2 = e.v2, e.v1 - e.co1, e.co2 = e.co2, e.co1 - e.next, e.prev = e.prev, e.next - - - def removeSmallest(self, cullNum, otherLoopLen): - ''' - Removes N Smallest edges and backs up the loop, - this is so we can loop between 2 loops as if they are the same length, - backing up and restoring incase the loop needs to be skinned with another loop of a different length. - ''' - global CULL_METHOD - if CULL_METHOD == 1: # Shortest edge - eloopCopy = self.edges[:] - - # Length sort, smallest first - try: eloopCopy.sort(key = lambda e1: e1.length) - except: eloopCopy.sort(lambda e1, e2: cmp(e1.length, e2.length )) - - # Dont use atm - #eloopCopy.sort(lambda e1, e2: cmp(e1.angle*e1.length, e2.angle*e2.length)) # Length sort, smallest first - #eloopCopy.sort(lambda e1, e2: cmp(e1.angle, e2.angle)) # Length sort, smallest first - - remNum = 0 - for i, e in enumerate(eloopCopy): - if not e.fake: - e.removed = 1 - self.edges.remove( e ) # Remove from own list, still in linked list. - remNum += 1 - - if not remNum < cullNum: - break - - else: # CULL METHOD is even - - culled = 0 - - step = int(otherLoopLen / float(cullNum)) * 2 - - currentEdge = self.edges[0] - while culled < cullNum: - - # Get the shortest face in the next STEP - step_count= 0 - bestAng= 360.0 - smallestEdge= None - while step_count<=step or smallestEdge==None: - step_count+=1 - if not currentEdge.removed: # 0 or -1 will not be accepted - if currentEdge.angle 2: - return None - - vert_used[i] = True - - # do an edgeloop seek - if len(sbl) == 2: - contextVertLoop= [sbl[0], i, sbl[1]] # start the vert loop - vert_used[contextVertLoop[ 0]] = True - vert_used[contextVertLoop[-1]] = True - else: - contextVertLoop= [i, sbl[0]] - vert_used[contextVertLoop[ 1]] = True - - # Always seek up - ok = True - while ok: - ok = False - closed = False - sbl = vert_siblings[contextVertLoop[-1]] - if len(sbl) == 2: - next = sbl[not sbl.index( contextVertLoop[-2] )] - if vert_used[next]: - closed = True - # break - else: - contextVertLoop.append( next ) # get the vert that isnt the second last - vert_used[next] = True - ok = True - - # Seek down as long as the starting vert was not at the edge. - if not closed and len(vert_siblings[i]) == 2: - - ok = True - while ok: - ok = False - sbl = vert_siblings[contextVertLoop[0]] - if len(sbl) == 2: - next = sbl[not sbl.index( contextVertLoop[1] )] - if vert_used[next]: - closed = True - else: - contextVertLoop.insert(0, next) # get the vert that isnt the second last - vert_used[next] = True - ok = True - - mainVertLoops.append((contextVertLoop, closed)) - - - verts = me.verts - # convert from indicies to verts - # mainVertLoops = [([verts[i] for i in contextVertLoop], closed) for contextVertLoop, closed in mainVertLoops] - # print len(mainVertLoops) - return mainVertLoops - + ''' + return a list of vert loops, closed and open [(loop, closed)...] + ''' + + mainVertLoops = [] + # second method + tot = len(me.verts) + vert_siblings = [[] for i in range(tot)] + vert_used = [False] * tot + + for ed in selEdges: + i1, i2 = ed.key + vert_siblings[i1].append(i2) + vert_siblings[i2].append(i1) + + # find the first used vert and keep looping. + for i in range(tot): + if vert_siblings[i] and not vert_used[i]: + sbl = vert_siblings[i] # siblings + + if len(sbl) > 2: + return None + + vert_used[i] = True + + # do an edgeloop seek + if len(sbl) == 2: + contextVertLoop= [sbl[0], i, sbl[1]] # start the vert loop + vert_used[contextVertLoop[ 0]] = True + vert_used[contextVertLoop[-1]] = True + else: + contextVertLoop= [i, sbl[0]] + vert_used[contextVertLoop[ 1]] = True + + # Always seek up + ok = True + while ok: + ok = False + closed = False + sbl = vert_siblings[contextVertLoop[-1]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[-2] )] + if vert_used[next]: + closed = True + # break + else: + contextVertLoop.append( next ) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + # Seek down as long as the starting vert was not at the edge. + if not closed and len(vert_siblings[i]) == 2: + + ok = True + while ok: + ok = False + sbl = vert_siblings[contextVertLoop[0]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[1] )] + if vert_used[next]: + closed = True + else: + contextVertLoop.insert(0, next) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + mainVertLoops.append((contextVertLoop, closed)) + + + verts = me.verts + # convert from indicies to verts + # mainVertLoops = [([verts[i] for i in contextVertLoop], closed) for contextVertLoop, closed in mainVertLoops] + # print len(mainVertLoops) + return mainVertLoops + def skin2EdgeLoops(eloop1, eloop2, me, ob, MODE): - - new_faces= [] # - - # Make sure e1 loops is bigger then e2 - if len(eloop1.edges) != len(eloop2.edges): - if len(eloop1.edges) < len(eloop2.edges): - eloop1, eloop2 = eloop2, eloop1 - - eloop1.backup() # were about to cull faces - CULL_FACES = len(eloop1.edges) - len(eloop2.edges) - eloop1.removeSmallest(CULL_FACES, len(eloop1.edges)) - else: - CULL_FACES = 0 - # First make sure poly vert loops are in sync with eachother. - - # The vector allong which we are skinning. - skinVector = eloop1.centre - eloop2.centre - - loopDist = skinVector.length - - # IS THE LOOP FLIPPED, IF SO FLIP BACK. we keep it flipped, its ok, - if eloop1.closed or eloop2.closed: - angleBetweenLoopNormals = AngleBetweenVecs(eloop1.normal, eloop2.normal) - if angleBetweenLoopNormals > 90: - eloop2.reverse() - - - DIR= eloop1.centre - eloop2.centre - - # if eloop2.closed: - bestEloopDist = BIG_NUM - bestOffset = 0 - # Loop rotation offset to test.1 - eLoopIdxs = list(range(len(eloop1.edges))) - for offset in range(len(eloop1.edges)): - totEloopDist = 0 # Measure this total distance for thsi loop. - - offsetIndexLs = eLoopIdxs[offset:] + eLoopIdxs[:offset] # Make offset index list - - - # e1Idx is always from 0uu to N, e2Idx is offset. - for e1Idx, e2Idx in enumerate(offsetIndexLs): - e1= eloop1.edges[e1Idx] - e2= eloop2.edges[e2Idx] - - - # Include fan connections in the measurement. - OK= True - while OK or e1.removed: - OK= False - - # Measure the vloop distance =============== - diff= ((e1.cent - e2.cent).length) #/ nangle1 - - ed_dir= e1.cent-e2.cent - a_diff= AngleBetweenVecs(DIR, ed_dir)/18 # 0 t0 18 - - totEloopDist += (diff * (1+a_diff)) / (1+loopDist) - - # Premeture break if where no better off - if totEloopDist > bestEloopDist: - break - - e1=e1.next - - if totEloopDist < bestEloopDist: - bestOffset = offset - bestEloopDist = totEloopDist - - # Modify V2 LS for Best offset - eloop2.edges = eloop2.edges[bestOffset:] + eloop2.edges[:bestOffset] - - else: - # Both are open loops, easier to calculate. - - - # Make sure the fake edges are at the start. - for i, edloop in enumerate((eloop1, eloop2)): - # print "LOOPO" - if edloop.edges[0].fake: - # alredy at the start - #print "A" - pass - elif edloop.edges[-1].fake: - # put the end at the start - edloop.edges.insert(0, edloop.edges.pop()) - #print "B" - - else: - for j, ed in enumerate(edloop.edges): - if ed.fake: - #print "C" - edloop.edges = edloop.edges = edloop.edges[j:] + edloop.edges[:j] - break - # print "DONE" - ed1, ed2 = eloop1.edges[0], eloop2.edges[0] - - if not ed1.fake or not ed2.fake: - raise "Error" - - # Find the join that isnt flipped (juts like detecting a bow-tie face) - a1 = (ed1.co1 - ed2.co1).length + (ed1.co2 - ed2.co2).length - a2 = (ed1.co1 - ed2.co2).length + (ed1.co2 - ed2.co1).length - - if a1 > a2: - eloop2.reverse() - # make the first edge the start edge still - eloop2.edges.insert(0, eloop2.edges.pop()) - - - - - for loopIdx in range(len(eloop2.edges)): - e1 = eloop1.edges[loopIdx] - e2 = eloop2.edges[loopIdx] - - # Remember the pairs for fan filling culled edges. - e1.match = e2; e2.match = e1 - - if not (e1.fake or e2.fake): - new_faces.append([e1.v1, e1.v2, e2.v2, e2.v1]) - - # FAN FILL MISSING FACES. - if CULL_FACES: - # Culled edges will be in eloop1. - FAN_FILLED_FACES = 0 - - contextEdge = eloop1.edges[0] # The larger of teh 2 - while FAN_FILLED_FACES < CULL_FACES: - while contextEdge.next.removed == 0: - contextEdge = contextEdge.next - - vertFanPivot = contextEdge.match.v2 - - while contextEdge.next.removed == 1: - #if not contextEdge.next.fake: - new_faces.append([contextEdge.next.v1, contextEdge.next.v2, vertFanPivot]) - - # Should we use another var?, this will work for now. - contextEdge.next.removed = 1 - - contextEdge = contextEdge.next - FAN_FILLED_FACES += 1 - - # may need to fan fill backwards 1 for non closed loops. - - eloop1.restore() # Add culled back into the list. - - return new_faces + + new_faces= [] # + + # Make sure e1 loops is bigger then e2 + if len(eloop1.edges) != len(eloop2.edges): + if len(eloop1.edges) < len(eloop2.edges): + eloop1, eloop2 = eloop2, eloop1 + + eloop1.backup() # were about to cull faces + CULL_FACES = len(eloop1.edges) - len(eloop2.edges) + eloop1.removeSmallest(CULL_FACES, len(eloop1.edges)) + else: + CULL_FACES = 0 + # First make sure poly vert loops are in sync with eachother. + + # The vector allong which we are skinning. + skinVector = eloop1.centre - eloop2.centre + + loopDist = skinVector.length + + # IS THE LOOP FLIPPED, IF SO FLIP BACK. we keep it flipped, its ok, + if eloop1.closed or eloop2.closed: + angleBetweenLoopNormals = AngleBetweenVecs(eloop1.normal, eloop2.normal) + if angleBetweenLoopNormals > 90: + eloop2.reverse() + + + DIR= eloop1.centre - eloop2.centre + + # if eloop2.closed: + bestEloopDist = BIG_NUM + bestOffset = 0 + # Loop rotation offset to test.1 + eLoopIdxs = list(range(len(eloop1.edges))) + for offset in range(len(eloop1.edges)): + totEloopDist = 0 # Measure this total distance for thsi loop. + + offsetIndexLs = eLoopIdxs[offset:] + eLoopIdxs[:offset] # Make offset index list + + + # e1Idx is always from 0uu to N, e2Idx is offset. + for e1Idx, e2Idx in enumerate(offsetIndexLs): + e1= eloop1.edges[e1Idx] + e2= eloop2.edges[e2Idx] + + + # Include fan connections in the measurement. + OK= True + while OK or e1.removed: + OK= False + + # Measure the vloop distance =============== + diff= ((e1.cent - e2.cent).length) #/ nangle1 + + ed_dir= e1.cent-e2.cent + a_diff= AngleBetweenVecs(DIR, ed_dir)/18 # 0 t0 18 + + totEloopDist += (diff * (1+a_diff)) / (1+loopDist) + + # Premeture break if where no better off + if totEloopDist > bestEloopDist: + break + + e1=e1.next + + if totEloopDist < bestEloopDist: + bestOffset = offset + bestEloopDist = totEloopDist + + # Modify V2 LS for Best offset + eloop2.edges = eloop2.edges[bestOffset:] + eloop2.edges[:bestOffset] + + else: + # Both are open loops, easier to calculate. + + + # Make sure the fake edges are at the start. + for i, edloop in enumerate((eloop1, eloop2)): + # print "LOOPO" + if edloop.edges[0].fake: + # alredy at the start + #print "A" + pass + elif edloop.edges[-1].fake: + # put the end at the start + edloop.edges.insert(0, edloop.edges.pop()) + #print "B" + + else: + for j, ed in enumerate(edloop.edges): + if ed.fake: + #print "C" + edloop.edges = edloop.edges = edloop.edges[j:] + edloop.edges[:j] + break + # print "DONE" + ed1, ed2 = eloop1.edges[0], eloop2.edges[0] + + if not ed1.fake or not ed2.fake: + raise "Error" + + # Find the join that isnt flipped (juts like detecting a bow-tie face) + a1 = (ed1.co1 - ed2.co1).length + (ed1.co2 - ed2.co2).length + a2 = (ed1.co1 - ed2.co2).length + (ed1.co2 - ed2.co1).length + + if a1 > a2: + eloop2.reverse() + # make the first edge the start edge still + eloop2.edges.insert(0, eloop2.edges.pop()) + + + + + for loopIdx in range(len(eloop2.edges)): + e1 = eloop1.edges[loopIdx] + e2 = eloop2.edges[loopIdx] + + # Remember the pairs for fan filling culled edges. + e1.match = e2; e2.match = e1 + + if not (e1.fake or e2.fake): + new_faces.append([e1.v1, e1.v2, e2.v2, e2.v1]) + + # FAN FILL MISSING FACES. + if CULL_FACES: + # Culled edges will be in eloop1. + FAN_FILLED_FACES = 0 + + contextEdge = eloop1.edges[0] # The larger of teh 2 + while FAN_FILLED_FACES < CULL_FACES: + while contextEdge.next.removed == 0: + contextEdge = contextEdge.next + + vertFanPivot = contextEdge.match.v2 + + while contextEdge.next.removed == 1: + #if not contextEdge.next.fake: + new_faces.append([contextEdge.next.v1, contextEdge.next.v2, vertFanPivot]) + + # Should we use another var?, this will work for now. + contextEdge.next.removed = 1 + + contextEdge = contextEdge.next + FAN_FILLED_FACES += 1 + + # may need to fan fill backwards 1 for non closed loops. + + eloop1.restore() # Add culled back into the list. + + return new_faces def main(context): - global CULL_METHOD - - ob = context.object - - is_editmode = (ob.mode=='EDIT') - if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - if ob == None or ob.type != 'MESH': - raise Exception("BPyMessages.Error_NoMeshActive()") - return - - me = ob.data - - time1 = time.time() - selEdges = getSelectedEdges(context, me, ob) - vertLoops = getVertLoops(selEdges, me) # list of lists of edges. - if vertLoops == None: - raise Exception('Error%t|Selection includes verts that are a part of more then 1 loop') - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - # print len(vertLoops) - - - if len(vertLoops) > 2: - choice = PupMenu('Loft '+str(len(vertLoops))+' edge loops%t|loop|segment') - if choice == -1: - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - - elif len(vertLoops) < 2: - raise Exception('Error%t|No Vertloops found!') - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) - return - else: - choice = 2 - - - # The line below checks if any of the vert loops are differenyt in length. - if False in [len(v[0]) == len(vertLoops[0][0]) for v in vertLoops]: + global CULL_METHOD + + ob = context.object + + is_editmode = (ob.mode=='EDIT') + if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + if ob == None or ob.type != 'MESH': + raise Exception("BPyMessages.Error_NoMeshActive()") + return + + me = ob.data + + time1 = time.time() + selEdges = getSelectedEdges(context, me, ob) + vertLoops = getVertLoops(selEdges, me) # list of lists of edges. + if vertLoops == None: + raise Exception('Error%t|Selection includes verts that are a part of more then 1 loop') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + # print len(vertLoops) + + + if len(vertLoops) > 2: + choice = PupMenu('Loft '+str(len(vertLoops))+' edge loops%t|loop|segment') + if choice == -1: + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + + elif len(vertLoops) < 2: + raise Exception('Error%t|No Vertloops found!') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + else: + choice = 2 + + + # The line below checks if any of the vert loops are differenyt in length. + if False in [len(v[0]) == len(vertLoops[0][0]) for v in vertLoops]: #XXX CULL_METHOD = PupMenu('Small to large edge loop distrobution method%t|remove edges evenly|remove smallest edges') #XXX if CULL_METHOD == -1: #XXX if is_editmode: Window.EditMode(1) #XXX return - CULL_METHOD = 1 # XXX FIXME - - - - - if CULL_METHOD ==1: # RESET CULL_METHOD - CULL_METHOD = 0 # shortest - else: - CULL_METHOD = 1 # even - - - time1 = time.time() - # Convert to special edge data. - edgeLoops = [] - for vloop, closed in vertLoops: - edgeLoops.append(edgeLoop(vloop, me, closed)) - - - # VERT LOOP ORDERING CODE - # "Build a worm" list - grow from Both ends - edgeOrderedList = [edgeLoops.pop()] - - # Find the closest. - bestSoFar = BIG_NUM - bestIdxSoFar = None - for edLoopIdx, edLoop in enumerate(edgeLoops): - l =(edgeOrderedList[-1].centre - edLoop.centre).length - if l < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l - - edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) - - # Now we have the 2 closest, append to either end- - # Find the closest. - while edgeLoops: - bestSoFar = BIG_NUM - bestIdxSoFar = None - first_or_last = 0 # Zero is first - for edLoopIdx, edLoop in enumerate(edgeLoops): - l1 =(edgeOrderedList[-1].centre - edLoop.centre).length - - if l1 < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l1 - first_or_last = 1 # last - - l2 =(edgeOrderedList[0].centre - edLoop.centre).length - if l2 < bestSoFar: - bestIdxSoFar = edLoopIdx - bestSoFar = l2 - first_or_last = 0 # last - - if first_or_last: # add closest Last - edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) - else: # Add closest First - edgeOrderedList.insert(0, edgeLoops.pop(bestIdxSoFar) ) # First - - faces = [] - - for i in range(len(edgeOrderedList)-1): - faces.extend( skin2EdgeLoops(edgeOrderedList[i], edgeOrderedList[i+1], me, ob, 0) ) - if choice == 1 and len(edgeOrderedList) > 2: # Loop - faces.extend( skin2EdgeLoops(edgeOrderedList[0], edgeOrderedList[-1], me, ob, 0) ) - - # REMOVE SELECTED FACES. - MESH_MODE= ob.mode - if MESH_MODE == 'EDGE' or MESH_MODE == 'VERTEX': pass - elif MESH_MODE == 'FACE': - try: me.faces.delete(1, [ f for f in me.faces if f.sel ]) - except: pass - - if 1: # 2.5 - mesh_faces_extend(me, faces, ob.active_material_index) - me.update(calc_edges=True) - else: - me.faces.extend(faces, smooth = True) - - print('\nSkin done in %.4f sec.' % (time.time()-time1)) - - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + CULL_METHOD = 1 # XXX FIXME + + + + + if CULL_METHOD ==1: # RESET CULL_METHOD + CULL_METHOD = 0 # shortest + else: + CULL_METHOD = 1 # even + + + time1 = time.time() + # Convert to special edge data. + edgeLoops = [] + for vloop, closed in vertLoops: + edgeLoops.append(edgeLoop(vloop, me, closed)) + + + # VERT LOOP ORDERING CODE + # "Build a worm" list - grow from Both ends + edgeOrderedList = [edgeLoops.pop()] + + # Find the closest. + bestSoFar = BIG_NUM + bestIdxSoFar = None + for edLoopIdx, edLoop in enumerate(edgeLoops): + l =(edgeOrderedList[-1].centre - edLoop.centre).length + if l < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l + + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + + # Now we have the 2 closest, append to either end- + # Find the closest. + while edgeLoops: + bestSoFar = BIG_NUM + bestIdxSoFar = None + first_or_last = 0 # Zero is first + for edLoopIdx, edLoop in enumerate(edgeLoops): + l1 =(edgeOrderedList[-1].centre - edLoop.centre).length + + if l1 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l1 + first_or_last = 1 # last + + l2 =(edgeOrderedList[0].centre - edLoop.centre).length + if l2 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l2 + first_or_last = 0 # last + + if first_or_last: # add closest Last + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + else: # Add closest First + edgeOrderedList.insert(0, edgeLoops.pop(bestIdxSoFar) ) # First + + faces = [] + + for i in range(len(edgeOrderedList)-1): + faces.extend( skin2EdgeLoops(edgeOrderedList[i], edgeOrderedList[i+1], me, ob, 0) ) + if choice == 1 and len(edgeOrderedList) > 2: # Loop + faces.extend( skin2EdgeLoops(edgeOrderedList[0], edgeOrderedList[-1], me, ob, 0) ) + + # REMOVE SELECTED FACES. + MESH_MODE= ob.mode + if MESH_MODE == 'EDGE' or MESH_MODE == 'VERTEX': pass + elif MESH_MODE == 'FACE': + try: me.faces.delete(1, [ f for f in me.faces if f.sel ]) + except: pass + + if 1: # 2.5 + mesh_faces_extend(me, faces, ob.active_material_index) + me.update(calc_edges=True) + else: + me.faces.extend(faces, smooth = True) + + print('\nSkin done in %.4f sec.' % (time.time()-time1)) + + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) class MESH_OT_skin(bpy.types.Operator): - '''Bridge face loops.''' - - bl_idname = "mesh.skin" - bl_label = "Add Torus" - bl_register = True - bl_undo = True - - ''' - loft_method = EnumProperty(attr="loft_method", items=[(), ()], description="", default= True) - - ''' - - def execute(self, context): - main(context) - return ('FINISHED',) + '''Bridge face loops.''' + + bl_idname = "mesh.skin" + bl_label = "Add Torus" + bl_register = True + bl_undo = True + + ''' + loft_method = EnumProperty(attr="loft_method", items=[(), ()], description="", default= True) + + ''' + + def execute(self, context): + main(context) + return ('FINISHED',) # Register the operator @@ -653,4 +653,4 @@ import dynamic_menu menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.operator("mesh.skin", text="Bridge Faces")) ) if __name__ == "__main__": - bpy.ops.mesh.skin() + bpy.ops.mesh.skin() diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 4d3d8288833..50bbbf8158a 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -17,6 +17,42 @@ # ##### END GPL LICENSE BLOCK ##### import bpy +from bpy.props import * + + +class SelectPattern(bpy.types.Operator): + '''Select object matching a naming pattern.''' + bl_idname = "object.select_pattern" + bl_label = "Select Pattern" + bl_register = True + bl_undo = True + + pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*") + case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False) + extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True) + + def execute(self, context): + + import fnmatch + + if self.properties.case_sensitive: + pattern_match = fnmatch.fnmatchcase + else: + pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) + + for ob in context.visible_objects: + if pattern_match(ob.name, self.properties.pattern): + ob.selected = True + elif not self.properties.extend: + ob.selected = False + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.invoke_props_popup(self, event) + return ('RUNNING_MODAL',) + class SubsurfSet(bpy.types.Operator): '''Sets a Subdivision Surface Level (1-5)''' @@ -25,8 +61,8 @@ class SubsurfSet(bpy.types.Operator): bl_label = "Subsurf Set" bl_register = True bl_undo = True - - level = bpy.props.IntProperty(name="Level", + + level = IntProperty(name="Level", default=1, min=0, max=6) def poll(self, context): @@ -41,12 +77,12 @@ class SubsurfSet(bpy.types.Operator): if mod.levels != level: mod.levels = level return ('FINISHED',) - + # adda new modifier mod = ob.modifiers.new("Subsurf", 'SUBSURF') mod.levels = level return ('FINISHED',) -# Register the operator +bpy.ops.add(SelectPattern) bpy.ops.add(SubsurfSet) diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 0b2e959ff0c..84a60765fa4 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -21,14 +21,14 @@ import os class AddPresetBase(bpy.types.Operator): '''Base preset class, only for subclassing - subclasses must define + subclasses must define - preset_values - preset_subdir ''' bl_idname = "render.preset_add" bl_label = "Add Render Preset" name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "") - + def _as_filename(self, name): # could reuse for other presets for char in " !@#$%^&*(){}:\";'[]<>,./?": name = name.replace('.', '_') @@ -44,7 +44,7 @@ class AddPresetBase(bpy.types.Operator): target_path = bpy.utils.preset_paths(self.preset_subdir)[0] # we need some way to tell the user and system preset path file_preset = open(os.path.join(target_path, filename), 'w') - + for rna_path in self.preset_values: file_preset.write("%s = %s\n" % (rna_path, eval(rna_path))) @@ -100,13 +100,13 @@ class AddPresetSSS(AddPresetBase): ] preset_subdir = "sss" - + class AddPresetCloth(AddPresetBase): '''Add a Cloth Preset.''' bl_idname = "cloth.preset_add" bl_label = "Add Cloth Preset" name = AddPresetBase.name - + preset_values = [ "bpy.context.cloth.settings.quality", "bpy.context.cloth.settings.mass", @@ -115,7 +115,7 @@ class AddPresetCloth(AddPresetBase): "bpy.context.cloth.settings.spring_damping", "bpy.context.cloth.settings.air_damping", ] - + preset_subdir = "cloth" bpy.ops.add(AddPresetRender) diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index cc8aa5fe63a..2da7174ed99 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -1,24 +1,24 @@ -# -------------------------------------------------------------------------- -# Smart Projection UV Projection Unwrapper v1.2 by Campbell Barton (AKA Ideasman) -# -------------------------------------------------------------------------- -# ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ***** END GPL LICENCE BLOCK ***** -# -------------------------------------------------------------------------- +# -------------------------------------------------------------------------- +# Smart Projection UV Projection Unwrapper v1.2 by Campbell Barton (AKA Ideasman) +# -------------------------------------------------------------------------- +# ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- #from Blender import Object, Draw, Window, sys, Mesh, Geometry @@ -40,96 +40,96 @@ USER_FILL_HOLES_QUALITY = None dict_matrix = {} def pointInTri2D(v, v1, v2, v3): - global dict_matrix - - key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y - - # Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face. - ''' - # BOUNDS CHECK - xmin= 1000000 - ymin= 1000000 - - xmax= -1000000 - ymax= -1000000 - - for i in (0,2,4): - x= key[i] - y= key[i+1] - - if xmaxx: xmin= x - if ymin>y: ymin= y - - x= v.x - y= v.y - - if xxmax or y < ymin or y > ymax: - return False - # Done with bounds check - ''' - try: - mtx = dict_matrix[key] - if not mtx: - return False - except: - side1 = v2 - v1 - side2 = v3 - v1 - - nor = side1.cross(side2) - - l1 = [side1[0], side1[1], side1[2]] - l2 = [side2[0], side2[1], side2[2]] - l3 = [nor[0], nor[1], nor[2]] - - mtx = Matrix(l1, l2, l3) - - # Zero area 2d tri, even tho we throw away zerop area faces - # the projection UV can result in a zero area UV. - if not mtx.determinant(): - dict_matrix[key] = None - return False - - mtx.invert() - - dict_matrix[key] = mtx - - uvw = (v - v1) * mtx - return 0 <= uvw[0] and 0 <= uvw[1] and uvw[0] + uvw[1] <= 1 - - + global dict_matrix + + key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y + + # Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face. + ''' + # BOUNDS CHECK + xmin= 1000000 + ymin= 1000000 + + xmax= -1000000 + ymax= -1000000 + + for i in (0,2,4): + x= key[i] + y= key[i+1] + + if xmaxx: xmin= x + if ymin>y: ymin= y + + x= v.x + y= v.y + + if xxmax or y < ymin or y > ymax: + return False + # Done with bounds check + ''' + try: + mtx = dict_matrix[key] + if not mtx: + return False + except: + side1 = v2 - v1 + side2 = v3 - v1 + + nor = side1.cross(side2) + + l1 = [side1[0], side1[1], side1[2]] + l2 = [side2[0], side2[1], side2[2]] + l3 = [nor[0], nor[1], nor[2]] + + mtx = Matrix(l1, l2, l3) + + # Zero area 2d tri, even tho we throw away zerop area faces + # the projection UV can result in a zero area UV. + if not mtx.determinant(): + dict_matrix[key] = None + return False + + mtx.invert() + + dict_matrix[key] = mtx + + uvw = (v - v1) * mtx + return 0 <= uvw[0] and 0 <= uvw[1] and uvw[0] + uvw[1] <= 1 + + def boundsIsland(faces): - minx = maxx = faces[0].uv[0][0] # Set initial bounds. - miny = maxy = faces[0].uv[0][1] - # print len(faces), minx, maxx, miny , maxy - for f in faces: - for uv in f.uv: - x= uv.x - y= uv.y - if xmaxx: maxx= x - if y>maxy: maxy= y - - return minx, miny, maxx, maxy + minx = maxx = faces[0].uv[0][0] # Set initial bounds. + miny = maxy = faces[0].uv[0][1] + # print len(faces), minx, maxx, miny , maxy + for f in faces: + for uv in f.uv: + x= uv.x + y= uv.y + if xmaxx: maxx= x + if y>maxy: maxy= y + + return minx, miny, maxx, maxy """ def boundsEdgeLoop(edges): - minx = maxx = edges[0][0] # Set initial bounds. - miny = maxy = edges[0][1] - # print len(faces), minx, maxx, miny , maxy - for ed in edges: - for pt in ed: - print 'ass' - x= pt[0] - y= pt[1] - if xmaxx: x= maxx - if y>maxy: y= maxy - - return minx, miny, maxx, maxy + minx = maxx = edges[0][0] # Set initial bounds. + miny = maxy = edges[0][1] + # print len(faces), minx, maxx, miny , maxy + for ed in edges: + for pt in ed: + print 'ass' + x= pt[0] + y= pt[1] + if xmaxx: x= maxx + if y>maxy: y= maxy + + return minx, miny, maxx, maxy """ # Turns the islands into a list of unpordered edges (Non internal) @@ -137,44 +137,44 @@ def boundsEdgeLoop(edges): # only returns outline edges for intersection tests. and unique points. def island2Edge(island): - - # Vert index edges - edges = {} - - unique_points= {} - - for f in island: - f_uvkey= map(tuple, f.uv) - - - for vIdx, edkey in enumerate(f.edge_keys): - unique_points[f_uvkey[vIdx]] = f.uv[vIdx] - - if f.v[vIdx].index > f.v[vIdx-1].index: - i1= vIdx-1; i2= vIdx - else: - i1= vIdx; i2= vIdx-1 - - try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. - except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, - - # If 2 are the same then they will be together, but full [a,b] order is not correct. - - # Sort by length - - - length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0] - - try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first - except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2])) - - # Its okay to leave the length in there. - #for e in length_sorted_edges: - # e.pop(2) - - # return edges and unique points - return length_sorted_edges, [v.__copy__().resize3D() for v in unique_points.values()] - + + # Vert index edges + edges = {} + + unique_points= {} + + for f in island: + f_uvkey= map(tuple, f.uv) + + + for vIdx, edkey in enumerate(f.edge_keys): + unique_points[f_uvkey[vIdx]] = f.uv[vIdx] + + if f.v[vIdx].index > f.v[vIdx-1].index: + i1= vIdx-1; i2= vIdx + else: + i1= vIdx; i2= vIdx-1 + + try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. + except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, + + # If 2 are the same then they will be together, but full [a,b] order is not correct. + + # Sort by length + + + length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0] + + try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first + except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2])) + + # Its okay to leave the length in there. + #for e in length_sorted_edges: + # e.pop(2) + + # return edges and unique points + return length_sorted_edges, [v.__copy__().resize3D() for v in unique_points.values()] + # ========================= NOT WORKING???? # Find if a points inside an edge loop, un-orderd. # pt is and x/y @@ -182,97 +182,97 @@ def island2Edge(island): # #offsets are the edge x and y offset. """ def pointInEdges(pt, edges): - # - x1 = pt[0] - y1 = pt[1] - - # Point to the left of this line. - x2 = -100000 - y2 = -10000 - intersectCount = 0 - for ed in edges: - xi, yi = lineIntersection2D(x1,y1, x2,y2, ed[0][0], ed[0][1], ed[1][0], ed[1][1]) - if xi != None: # Is there an intersection. - intersectCount+=1 - - return intersectCount % 2 + # + x1 = pt[0] + y1 = pt[1] + + # Point to the left of this line. + x2 = -100000 + y2 = -10000 + intersectCount = 0 + for ed in edges: + xi, yi = lineIntersection2D(x1,y1, x2,y2, ed[0][0], ed[0][1], ed[1][0], ed[1][1]) + if xi != None: # Is there an intersection. + intersectCount+=1 + + return intersectCount % 2 """ def pointInIsland(pt, island): - vec1 = Vector(); vec2 = Vector(); vec3 = Vector() - for f in island: - vec1.x, vec1.y = f.uv[0] - vec2.x, vec2.y = f.uv[1] - vec3.x, vec3.y = f.uv[2] - - if pointInTri2D(pt, vec1, vec2, vec3): - return True - - if len(f.v) == 4: - vec1.x, vec1.y = f.uv[0] - vec2.x, vec2.y = f.uv[2] - vec3.x, vec3.y = f.uv[3] - if pointInTri2D(pt, vec1, vec2, vec3): - return True - return False + vec1 = Vector(); vec2 = Vector(); vec3 = Vector() + for f in island: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[1] + vec3.x, vec3.y = f.uv[2] + + if pointInTri2D(pt, vec1, vec2, vec3): + return True + + if len(f.v) == 4: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[2] + vec3.x, vec3.y = f.uv[3] + if pointInTri2D(pt, vec1, vec2, vec3): + return True + return False # box is (left,bottom, right, top) def islandIntersectUvIsland(source, target, SourceOffset): - # Is 1 point in the box, inside the vertLoops - edgeLoopsSource = source[6] # Pretend this is offset - edgeLoopsTarget = target[6] - - # Edge intersect test - for ed in edgeLoopsSource: - for seg in edgeLoopsTarget: - i = Geometry.LineIntersect2D(\ - seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) - if i: - return 1 # LINE INTERSECTION - - # 1 test for source being totally inside target - SourceOffset.resize3D() - for pv in source[7]: - if pointInIsland(pv+SourceOffset, target[0]): - return 2 # SOURCE INSIDE TARGET - - # 2 test for a part of the target being totaly inside the source. - for pv in target[7]: - if pointInIsland(pv-SourceOffset, source[0]): - return 3 # PART OF TARGET INSIDE SOURCE. - - return 0 # NO INTERSECTION + # Is 1 point in the box, inside the vertLoops + edgeLoopsSource = source[6] # Pretend this is offset + edgeLoopsTarget = target[6] + + # Edge intersect test + for ed in edgeLoopsSource: + for seg in edgeLoopsTarget: + i = Geometry.LineIntersect2D(\ + seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) + if i: + return 1 # LINE INTERSECTION + + # 1 test for source being totally inside target + SourceOffset.resize3D() + for pv in source[7]: + if pointInIsland(pv+SourceOffset, target[0]): + return 2 # SOURCE INSIDE TARGET + + # 2 test for a part of the target being totaly inside the source. + for pv in target[7]: + if pointInIsland(pv-SourceOffset, source[0]): + return 3 # PART OF TARGET INSIDE SOURCE. + + return 0 # NO INTERSECTION # Returns the X/y Bounds of a list of vectors. def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): - - # UV's will never extend this far. - minx = miny = BIG_NUM - maxx = maxy = -BIG_NUM - - for i, v in enumerate(vecs): - - # Do this allong the way - if mat != -1: - v = vecs[i] = v*mat - x= v.x - y= v.y - if xmaxx: maxx= x - if y>maxy: maxy= y - - # Spesific to this algo, bail out if we get bigger then the current area - if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: - return (BIG_NUM, None), None - w = maxx-minx - h = maxy-miny - return (w*h, w,h), vecs # Area, vecs - + + # UV's will never extend this far. + minx = miny = BIG_NUM + maxx = maxy = -BIG_NUM + + for i, v in enumerate(vecs): + + # Do this allong the way + if mat != -1: + v = vecs[i] = v*mat + x= v.x + y= v.y + if xmaxx: maxx= x + if y>maxy: maxy= y + + # Spesific to this algo, bail out if we get bigger then the current area + if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: + return (BIG_NUM, None), None + w = maxx-minx + h = maxy-miny + return (w*h, w,h), vecs # Area, vecs + # Takes a list of faces that make up a UV island and rotate # until they optimally fit inside a square. ROTMAT_2D_POS_90D = RotationMatrix( radians(90.0), 2) @@ -281,855 +281,855 @@ ROTMAT_2D_POS_45D = RotationMatrix( radians(45.0), 2) RotMatStepRotation = [] rot_angle = 22.5 #45.0/2 while rot_angle > 0.1: - RotMatStepRotation.append([\ - RotationMatrix( radians(rot_angle), 2),\ - RotationMatrix( radians(-rot_angle), 2)]) - - rot_angle = rot_angle/2.0 - + RotMatStepRotation.append([\ + RotationMatrix( radians(rot_angle), 2),\ + RotationMatrix( radians(-rot_angle), 2)]) + + rot_angle = rot_angle/2.0 + def optiRotateUvIsland(faces): - global currentArea - - # Bestfit Rotation - def best2dRotation(uvVecs, MAT1, MAT2): - global currentArea - - newAreaPos, newfaceProjectionGroupListPos =\ - testNewVecLs2DRotIsBetter(uvVecs[:], MAT1, currentArea[0]) - - - # Why do I use newpos here? May as well give the best area to date for an early bailout - # some slight speed increase in this. - # If the new rotation is smaller then the existing, we can - # avoid copying a list and overwrite the old, crappy one. - - if newAreaPos[0] < currentArea[0]: - newAreaNeg, newfaceProjectionGroupListNeg =\ - testNewVecLs2DRotIsBetter(uvVecs, MAT2, newAreaPos[0]) # Reuse the old bigger list. - else: - newAreaNeg, newfaceProjectionGroupListNeg =\ - testNewVecLs2DRotIsBetter(uvVecs[:], MAT2, currentArea[0]) # Cant reuse, make a copy. - - - # Now from the 3 options we need to discover which to use - # we have cerrentArea/newAreaPos/newAreaNeg - bestArea = min(currentArea[0], newAreaPos[0], newAreaNeg[0]) - - if currentArea[0] == bestArea: - return uvVecs - elif newAreaPos[0] == bestArea: - uvVecs = newfaceProjectionGroupListPos - currentArea = newAreaPos - elif newAreaNeg[0] == bestArea: - uvVecs = newfaceProjectionGroupListNeg - currentArea = newAreaNeg - - return uvVecs - - - # Serialized UV coords to Vectors - uvVecs = [uv for f in faces for uv in f.uv] - - # Theres a small enough number of these to hard code it - # rather then a loop. - - # Will not modify anything - currentArea, dummy =\ - testNewVecLs2DRotIsBetter(uvVecs) - - - # Try a 45d rotation - newAreaPos, newfaceProjectionGroupListPos = testNewVecLs2DRotIsBetter(uvVecs[:], ROTMAT_2D_POS_45D, currentArea[0]) - - if newAreaPos[0] < currentArea[0]: - uvVecs = newfaceProjectionGroupListPos - currentArea = newAreaPos - # 45d done - - # Testcase different rotations and find the onfe that best fits in a square - for ROTMAT in RotMatStepRotation: - uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) - - # Only if you want it, make faces verticle! - if currentArea[1] > currentArea[2]: - # Rotate 90d - # Work directly on the list, no need to return a value. - testNewVecLs2DRotIsBetter(uvVecs, ROTMAT_2D_POS_90D) - - - # Now write the vectors back to the face UV's - i = 0 # count the serialized uv/vectors - for f in faces: - #f.uv = [uv for uv in uvVecs[i:len(f)+i] ] - for j, k in enumerate(range(i, len(f.v)+i)): - f.uv[j][:] = uvVecs[k] - i += len(f.v) + global currentArea + + # Bestfit Rotation + def best2dRotation(uvVecs, MAT1, MAT2): + global currentArea + + newAreaPos, newfaceProjectionGroupListPos =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT1, currentArea[0]) + + + # Why do I use newpos here? May as well give the best area to date for an early bailout + # some slight speed increase in this. + # If the new rotation is smaller then the existing, we can + # avoid copying a list and overwrite the old, crappy one. + + if newAreaPos[0] < currentArea[0]: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs, MAT2, newAreaPos[0]) # Reuse the old bigger list. + else: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT2, currentArea[0]) # Cant reuse, make a copy. + + + # Now from the 3 options we need to discover which to use + # we have cerrentArea/newAreaPos/newAreaNeg + bestArea = min(currentArea[0], newAreaPos[0], newAreaNeg[0]) + + if currentArea[0] == bestArea: + return uvVecs + elif newAreaPos[0] == bestArea: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + elif newAreaNeg[0] == bestArea: + uvVecs = newfaceProjectionGroupListNeg + currentArea = newAreaNeg + + return uvVecs + + + # Serialized UV coords to Vectors + uvVecs = [uv for f in faces for uv in f.uv] + + # Theres a small enough number of these to hard code it + # rather then a loop. + + # Will not modify anything + currentArea, dummy =\ + testNewVecLs2DRotIsBetter(uvVecs) + + + # Try a 45d rotation + newAreaPos, newfaceProjectionGroupListPos = testNewVecLs2DRotIsBetter(uvVecs[:], ROTMAT_2D_POS_45D, currentArea[0]) + + if newAreaPos[0] < currentArea[0]: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + # 45d done + + # Testcase different rotations and find the onfe that best fits in a square + for ROTMAT in RotMatStepRotation: + uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) + + # Only if you want it, make faces verticle! + if currentArea[1] > currentArea[2]: + # Rotate 90d + # Work directly on the list, no need to return a value. + testNewVecLs2DRotIsBetter(uvVecs, ROTMAT_2D_POS_90D) + + + # Now write the vectors back to the face UV's + i = 0 # count the serialized uv/vectors + for f in faces: + #f.uv = [uv for uv in uvVecs[i:len(f)+i] ] + for j, k in enumerate(range(i, len(f.v)+i)): + f.uv[j][:] = uvVecs[k] + i += len(f.v) # Takes an island list and tries to find concave, hollow areas to pack smaller islands into. def mergeUvIslands(islandList): - global USER_FILL_HOLES - global USER_FILL_HOLES_QUALITY - - - # Pack islands to bottom LHS - # Sync with island - - #islandTotFaceArea = [] # A list of floats, each island area - #islandArea = [] # a list of tuples ( area, w,h) - - - decoratedIslandList = [] - - islandIdx = len(islandList) - while islandIdx: - islandIdx-=1 - minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) - w, h = maxx-minx, maxy-miny - - totFaceArea = 0 - offset= Vector(minx, miny) - for f in islandList[islandIdx]: - for uv in f.uv: - uv -= offset - - totFaceArea += f.area - - islandBoundsArea = w*h - efficiency = abs(islandBoundsArea - totFaceArea) - - # UV Edge list used for intersections as well as unique points. - edges, uniqueEdgePoints = island2Edge(islandList[islandIdx]) - - decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w,h, edges, uniqueEdgePoints]) - - - # Sort by island bounding box area, smallest face area first. - # no.. chance that to most simple edge loop first. - decoratedIslandListAreaSort =decoratedIslandList[:] - - decoratedIslandListAreaSort.sort(key = lambda A: A[3]) - - # sort by efficiency, Least Efficient first. - decoratedIslandListEfficSort = decoratedIslandList[:] - # decoratedIslandListEfficSort.sort(lambda A, B: cmp(B[2], A[2])) - - decoratedIslandListEfficSort.sort(key = lambda A: -A[2]) - - # ================================================== THESE CAN BE TWEAKED. - # This is a quality value for the number of tests. - # from 1 to 4, generic quality value is from 1 to 100 - USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1 - - # If 100 will test as long as there is enough free space. - # this is rarely enough, and testing takes a while, so lower quality speeds this up. - - # 1 means they have the same quality - USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY)/100.0) *5) - - #print 'USER_STEP_QUALITY', USER_STEP_QUALITY - #print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY - - removedCount = 0 - - areaIslandIdx = 0 - ctrl = Window.Qual.CTRL - BREAK= False - while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK: - sourceIsland = decoratedIslandListAreaSort[areaIslandIdx] - # Alredy packed? - if not sourceIsland[0]: - areaIslandIdx+=1 - else: - efficIslandIdx = 0 - while efficIslandIdx < len(decoratedIslandListEfficSort) and not BREAK: - - if Window.GetKeyQualifiers() & ctrl: - BREAK= True - break - - # Now we have 2 islands, is the efficience of the islands lowers theres an - # increasing likely hood that we can fit merge into the bigger UV island. - # this ensures a tight fit. - - # Just use figures we have about user/unused area to see if they might fit. - - targetIsland = decoratedIslandListEfficSort[efficIslandIdx] - - - if sourceIsland[0] == targetIsland[0] or\ - not targetIsland[0] or\ - not sourceIsland[0]: - pass - else: - - # ([island, totFaceArea, efficiency, islandArea, w,h]) - # Waisted space on target is greater then UV bounding island area. - - - # if targetIsland[3] > (sourceIsland[2]) and\ # - # print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass' - if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ - targetIsland[4] > sourceIsland[4] and\ - targetIsland[5] > sourceIsland[5]: - - # DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1]) - - # These enough spare space lets move the box until it fits - - # How many times does the source fit into the target x/y - blockTestXUnit = targetIsland[4]/sourceIsland[4] - blockTestYUnit = targetIsland[5]/sourceIsland[5] - - boxLeft = 0 - - - # Distllllance we can move between whilst staying inside the targets bounds. - testWidth = targetIsland[4] - sourceIsland[4] - testHeight = targetIsland[5] - sourceIsland[5] - - # Increment we move each test. x/y - xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1))) - yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1))) - - # Make sure were not moving less then a 3rg of our width/height - if xIncrement (sourceIsland[2]) and\ # + # print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass' + if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ + targetIsland[4] > sourceIsland[4] and\ + targetIsland[5] > sourceIsland[5]: + + # DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1]) + + # These enough spare space lets move the box until it fits + + # How many times does the source fit into the target x/y + blockTestXUnit = targetIsland[4]/sourceIsland[4] + blockTestYUnit = targetIsland[5]/sourceIsland[5] + + boxLeft = 0 + + + # Distllllance we can move between whilst staying inside the targets bounds. + testWidth = targetIsland[4] - sourceIsland[4] + testHeight = targetIsland[5] - sourceIsland[5] + + # Increment we move each test. x/y + xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1))) + yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1))) + + # Make sure were not moving less then a 3rg of our width/height + if xIncrement testWidth: - boxBottom += yIncrement - boxLeft = 0.0 - else: - boxLeft += xIncrement - ##print testcount - - efficIslandIdx+=1 - areaIslandIdx+=1 - - # Remove empty islands - i = len(islandList) - while i: - i-=1 - if not islandList[i]: - del islandList[i] # Can increment islands removed here. + + # Move faces into new island and offset + targetIsland[0].extend(sourceIsland[0]) + offset= Vector(boxLeft, boxBottom) + + for f in sourceIsland[0]: + for uv in f.uv: + uv+= offset + + sourceIsland[0][:] = [] # Empty + + + # Move edge loop into new and offset. + # targetIsland[6].extend(sourceIsland[6]) + #while sourceIsland[6]: + targetIsland[6].extend( [ (\ + (e[0]+offset, e[1]+offset, e[2])\ + ) for e in sourceIsland[6] ] ) + + sourceIsland[6][:] = [] # Empty + + # Sort by edge length, reverse so biggest are first. + + try: targetIsland[6].sort(key = lambda A: A[2]) + except: targetIsland[6].sort(lambda B,A: cmp(A[2], B[2] )) + + + targetIsland[7].extend(sourceIsland[7]) + offset= Vector(boxLeft, boxBottom, 0) + for p in sourceIsland[7]: + p+= offset + + sourceIsland[7][:] = [] + + + # Decrement the efficiency + targetIsland[1]+=sourceIsland[1] # Increment totFaceArea + targetIsland[2]-=sourceIsland[1] # Decrement efficiency + # IF we ever used these again, should set to 0, eg + sourceIsland[2] = 0 # No area if anyone wants to know + + break + + + # INCREMENR NEXT LOCATION + if boxLeft > testWidth: + boxBottom += yIncrement + boxLeft = 0.0 + else: + boxLeft += xIncrement + ##print testcount + + efficIslandIdx+=1 + areaIslandIdx+=1 + + # Remove empty islands + i = len(islandList) + while i: + i-=1 + if not islandList[i]: + del islandList[i] # Can increment islands removed here. # Takes groups of faces. assumes face groups are UV groups. def getUvIslands(faceGroups, me): - - # Get seams so we dont cross over seams - edge_seams = {} # shoudl be a set - for ed in me.edges: - if ed.seam: - edge_seams[ed.key] = None # dummy var- use sets! - # Done finding seams - - - islandList = [] - + + # Get seams so we dont cross over seams + edge_seams = {} # shoudl be a set + for ed in me.edges: + if ed.seam: + edge_seams[ed.key] = None # dummy var- use sets! + # Done finding seams + + + islandList = [] + #XXX Window.DrawProgressBar(0.0, 'Splitting %d projection groups into UV islands:' % len(faceGroups)) - #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups), - # Find grouped faces - - faceGroupIdx = len(faceGroups) - - while faceGroupIdx: - faceGroupIdx-=1 - faces = faceGroups[faceGroupIdx] - - if not faces: - continue - - # Build edge dict - edge_users = {} - - for i, f in enumerate(faces): - for ed_key in f.edge_keys: - if ed_key in edge_seams: # DELIMIT SEAMS! ;) - edge_users[ed_key] = [] # so as not to raise an error - else: - try: edge_users[ed_key].append(i) - except: edge_users[ed_key] = [i] - - # Modes - # 0 - face not yet touched. - # 1 - added to island list, and need to search - # 2 - touched and searched - dont touch again. - face_modes = [0] * len(faces) # initialize zero - untested. - - face_modes[0] = 1 # start the search with face 1 - - newIsland = [] - - newIsland.append(faces[0]) - - - ok = True - while ok: - - ok = True - while ok: - ok= False - for i in range(len(faces)): - if face_modes[i] == 1: # search - for ed_key in faces[i].edge_keys: - for ii in edge_users[ed_key]: - if i != ii and face_modes[ii] == 0: - face_modes[ii] = ok = 1 # mark as searched - newIsland.append(faces[ii]) - - # mark as searched, dont look again. - face_modes[i] = 2 - - islandList.append(newIsland) - - ok = False - for i in range(len(faces)): - if face_modes[i] == 0: - newIsland = [] - newIsland.append(faces[i]) - - face_modes[i] = ok = 1 - break - # if not ok will stop looping - + #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups), + # Find grouped faces + + faceGroupIdx = len(faceGroups) + + while faceGroupIdx: + faceGroupIdx-=1 + faces = faceGroups[faceGroupIdx] + + if not faces: + continue + + # Build edge dict + edge_users = {} + + for i, f in enumerate(faces): + for ed_key in f.edge_keys: + if ed_key in edge_seams: # DELIMIT SEAMS! ;) + edge_users[ed_key] = [] # so as not to raise an error + else: + try: edge_users[ed_key].append(i) + except: edge_users[ed_key] = [i] + + # Modes + # 0 - face not yet touched. + # 1 - added to island list, and need to search + # 2 - touched and searched - dont touch again. + face_modes = [0] * len(faces) # initialize zero - untested. + + face_modes[0] = 1 # start the search with face 1 + + newIsland = [] + + newIsland.append(faces[0]) + + + ok = True + while ok: + + ok = True + while ok: + ok= False + for i in range(len(faces)): + if face_modes[i] == 1: # search + for ed_key in faces[i].edge_keys: + for ii in edge_users[ed_key]: + if i != ii and face_modes[ii] == 0: + face_modes[ii] = ok = 1 # mark as searched + newIsland.append(faces[ii]) + + # mark as searched, dont look again. + face_modes[i] = 2 + + islandList.append(newIsland) + + ok = False + for i in range(len(faces)): + if face_modes[i] == 0: + newIsland = [] + newIsland.append(faces[i]) + + face_modes[i] = ok = 1 + break + # if not ok will stop looping + #XXX Window.DrawProgressBar(0.1, 'Optimizing Rotation for %i UV Islands' % len(islandList)) - - for island in islandList: - optiRotateUvIsland(island) - - return islandList - + + for island in islandList: + optiRotateUvIsland(island) + + return islandList + def packIslands(islandList): - if USER_FILL_HOLES: + if USER_FILL_HOLES: #XXX Window.DrawProgressBar(0.1, 'Merging Islands (Ctrl: skip merge)...') - mergeUvIslands(islandList) # Modify in place - - - # Now we have UV islands, we need to pack them. - - # Make a synchronised list with the islands - # so we can box pak the islands. - packBoxes = [] - - # Keep a list of X/Y offset so we can save time by writing the - # uv's and packed data in one pass. - islandOffsetList = [] - - islandIdx = 0 - - while islandIdx < len(islandList): - minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) - - w, h = maxx-minx, maxy-miny - - if USER_ISLAND_MARGIN: - minx -= USER_ISLAND_MARGIN# *w - miny -= USER_ISLAND_MARGIN# *h - maxx += USER_ISLAND_MARGIN# *w - maxy += USER_ISLAND_MARGIN# *h - - # recalc width and height - w, h = maxx-minx, maxy-miny - - if w < 0.00001 or h < 0.00001: - del islandList[islandIdx] - islandIdx -=1 - continue - - '''Save the offset to be applied later, - we could apply to the UVs now and allign them to the bottom left hand area - of the UV coords like the box packer imagines they are - but, its quicker just to remember their offset and - apply the packing and offset in 1 pass ''' - islandOffsetList.append((minx, miny)) - - # Add to boxList. use the island idx for the BOX id. - packBoxes.append([0, 0, w, h]) - islandIdx+=1 - - # Now we have a list of boxes to pack that syncs - # with the islands. - - #print '\tPacking UV Islands...' + mergeUvIslands(islandList) # Modify in place + + + # Now we have UV islands, we need to pack them. + + # Make a synchronised list with the islands + # so we can box pak the islands. + packBoxes = [] + + # Keep a list of X/Y offset so we can save time by writing the + # uv's and packed data in one pass. + islandOffsetList = [] + + islandIdx = 0 + + while islandIdx < len(islandList): + minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) + + w, h = maxx-minx, maxy-miny + + if USER_ISLAND_MARGIN: + minx -= USER_ISLAND_MARGIN# *w + miny -= USER_ISLAND_MARGIN# *h + maxx += USER_ISLAND_MARGIN# *w + maxy += USER_ISLAND_MARGIN# *h + + # recalc width and height + w, h = maxx-minx, maxy-miny + + if w < 0.00001 or h < 0.00001: + del islandList[islandIdx] + islandIdx -=1 + continue + + '''Save the offset to be applied later, + we could apply to the UVs now and allign them to the bottom left hand area + of the UV coords like the box packer imagines they are + but, its quicker just to remember their offset and + apply the packing and offset in 1 pass ''' + islandOffsetList.append((minx, miny)) + + # Add to boxList. use the island idx for the BOX id. + packBoxes.append([0, 0, w, h]) + islandIdx+=1 + + # Now we have a list of boxes to pack that syncs + # with the islands. + + #print '\tPacking UV Islands...' #XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) ) - - time1 = time.time() - packWidth, packHeight = Geometry.BoxPack2D(packBoxes) - - # print 'Box Packing Time:', time.time() - time1 - - #if len(pa ckedLs) != len(islandList): - # raise "Error packed boxes differes from original length" - - #print '\tWriting Packed Data to faces' + + time1 = time.time() + packWidth, packHeight = Geometry.BoxPack2D(packBoxes) + + # print 'Box Packing Time:', time.time() - time1 + + #if len(pa ckedLs) != len(islandList): + # raise "Error packed boxes differes from original length" + + #print '\tWriting Packed Data to faces' #XXX Window.DrawProgressBar(0.8, 'Writing Packed Data to faces') - - # Sort by ID, so there in sync again - islandIdx = len(islandList) - # Having these here avoids devide by 0 - if islandIdx: - - if USER_STRETCH_ASPECT: - # Maximize to uv area?? Will write a normalize function. - xfactor = 1.0 / packWidth - yfactor = 1.0 / packHeight - else: - # Keep proportions. - xfactor = yfactor = 1.0 / max(packWidth, packHeight) - - while islandIdx: - islandIdx -=1 - # Write the packed values to the UV's - - xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0] - yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1] - - for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box - for uv in f.uv: - uv.x= (uv.x+xoffset) * xfactor - uv.y= (uv.y+yoffset) * yfactor - - + + # Sort by ID, so there in sync again + islandIdx = len(islandList) + # Having these here avoids devide by 0 + if islandIdx: + + if USER_STRETCH_ASPECT: + # Maximize to uv area?? Will write a normalize function. + xfactor = 1.0 / packWidth + yfactor = 1.0 / packHeight + else: + # Keep proportions. + xfactor = yfactor = 1.0 / max(packWidth, packHeight) + + while islandIdx: + islandIdx -=1 + # Write the packed values to the UV's + + xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0] + yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1] + + for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box + for uv in f.uv: + uv.x= (uv.x+xoffset) * xfactor + uv.y= (uv.y+yoffset) * yfactor + + def VectoMat(vec): - a3 = vec.__copy__().normalize() - - up = Vector(0,0,1) - if abs(a3.dot(up)) == 1.0: - up = Vector(0,1,0) - - a1 = a3.cross(up).normalize() - a2 = a3.cross(a1) - return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]]) + a3 = vec.__copy__().normalize() + + up = Vector(0,0,1) + if abs(a3.dot(up)) == 1.0: + up = Vector(0,1,0) + + a1 = a3.cross(up).normalize() + a2 = a3.cross(a1) + return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]]) class thickface(object): - __slost__= 'v', 'uv', 'no', 'area', 'edge_keys' - def __init__(self, face, uvface, mesh_verts): - self.v = [mesh_verts[i] for i in face.verts] - if len(self.v)==4: - self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4 - else: - self.uv = uvface.uv1, uvface.uv2, uvface.uv3 - - self.no = face.normal - self.area = face.area - self.edge_keys = face.edge_keys + __slost__= 'v', 'uv', 'no', 'area', 'edge_keys' + def __init__(self, face, uvface, mesh_verts): + self.v = [mesh_verts[i] for i in face.verts] + if len(self.v)==4: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4 + else: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3 + + self.no = face.normal + self.area = face.area + self.edge_keys = face.edge_keys global ob ob = None def main(context, island_margin, projection_limit): - global USER_FILL_HOLES - global USER_FILL_HOLES_QUALITY - global USER_STRETCH_ASPECT - global USER_ISLAND_MARGIN - + global USER_FILL_HOLES + global USER_FILL_HOLES_QUALITY + global USER_STRETCH_ASPECT + global USER_ISLAND_MARGIN + #XXX objects= bpy.data.scenes.active.objects - objects = context.selected_editable_objects - - - # we can will tag them later. - obList = [ob for ob in objects if ob.type == 'MESH'] - - # Face select object may not be selected. + objects = context.selected_editable_objects + + + # we can will tag them later. + obList = [ob for ob in objects if ob.type == 'MESH'] + + # Face select object may not be selected. #XXX ob = objects.active - ob= objects[0] - - if ob and ob.selected == 0 and ob.type == 'MESH': - # Add to the list - obList =[ob] - del objects - - if not obList: - raise('error, no selected mesh objects') - - # Create the variables. - USER_PROJECTION_LIMIT = projection_limit - USER_ONLY_SELECTED_FACES = (1) - USER_SHARE_SPACE = (1) # Only for hole filling. - USER_STRETCH_ASPECT = (1) # Only for hole filling. - USER_ISLAND_MARGIN = island_margin # Only for hole filling. - USER_FILL_HOLES = (0) - USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. - USER_VIEW_INIT = (0) # Only for hole filling. - USER_AREA_WEIGHT = (1) # Only for hole filling. - - # Reuse variable - if len(obList) == 1: - ob = "Unwrap %i Selected Mesh" - else: - ob = "Unwrap %i Selected Meshes" - - # HACK, loop until mouse is lifted. - ''' - while Window.GetMouseButtons() != 0: - time.sleep(10) - ''' - + ob= objects[0] + + if ob and ob.selected == 0 and ob.type == 'MESH': + # Add to the list + obList =[ob] + del objects + + if not obList: + raise('error, no selected mesh objects') + + # Create the variables. + USER_PROJECTION_LIMIT = projection_limit + USER_ONLY_SELECTED_FACES = (1) + USER_SHARE_SPACE = (1) # Only for hole filling. + USER_STRETCH_ASPECT = (1) # Only for hole filling. + USER_ISLAND_MARGIN = island_margin # Only for hole filling. + USER_FILL_HOLES = (0) + USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. + USER_VIEW_INIT = (0) # Only for hole filling. + USER_AREA_WEIGHT = (1) # Only for hole filling. + + # Reuse variable + if len(obList) == 1: + ob = "Unwrap %i Selected Mesh" + else: + ob = "Unwrap %i Selected Meshes" + + # HACK, loop until mouse is lifted. + ''' + while Window.GetMouseButtons() != 0: + time.sleep(10) + ''' + #XXX if not Draw.PupBlock(ob % len(obList), pup_block): #XXX return #XXX del ob - - # Convert from being button types - - USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD) - USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD) - - - # Toggle Edit mode - is_editmode = (context.active_object.mode == 'EDIT') - if is_editmode: - bpy.ops.object.mode_set(mode='OBJECT') - # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. - - if USER_SHARE_SPACE: - # Sort by data name so we get consistant results - obList.sort(key = lambda ob: ob.data.name) - collected_islandList= [] - + + # Convert from being button types + + USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD) + USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD) + + + # Toggle Edit mode + is_editmode = (context.active_object.mode == 'EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT') + # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. + + if USER_SHARE_SPACE: + # Sort by data name so we get consistant results + obList.sort(key = lambda ob: ob.data.name) + collected_islandList= [] + #XXX Window.WaitCursor(1) - - time1 = time.time() - - # Tag as False se we dont operate on teh same mesh twice. -#XXX bpy.data.meshes.tag = False - for me in bpy.data.meshes: - me.tag = False - - - for ob in obList: - me = ob.data - - if me.tag or me.library: - continue - - # Tag as used - me.tag = True - - if len(me.uv_textures)==0: # Mesh has no UV Coords, dont bother. - me.add_uv_texture() - - uv_layer = me.active_uv_texture.data - me_verts = list(me.verts) - - if USER_ONLY_SELECTED_FACES: - meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] - #else: - # meshFaces = map(thickface, me.faces) - - if not meshFaces: - continue - + + time1 = time.time() + + # Tag as False se we dont operate on teh same mesh twice. +#XXX bpy.data.meshes.tag = False + for me in bpy.data.meshes: + me.tag = False + + + for ob in obList: + me = ob.data + + if me.tag or me.library: + continue + + # Tag as used + me.tag = True + + if len(me.uv_textures)==0: # Mesh has no UV Coords, dont bother. + me.add_uv_texture() + + uv_layer = me.active_uv_texture.data + me_verts = list(me.verts) + + if USER_ONLY_SELECTED_FACES: + meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] + #else: + # meshFaces = map(thickface, me.faces) + + if not meshFaces: + continue + #XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces))) - - # ======= - # Generate a projection list from face normals, this is ment to be smart :) - - # make a list of face props that are in sync with meshFaces - # Make a Face List that is sorted by area. - # meshFaces = [] - - # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. - meshFaces.sort( key = lambda a: -a.area ) - - # remove all zero area faces - while meshFaces and meshFaces[-1].area <= SMALL_NUM: - # Set their UV's to 0,0 - for uv in meshFaces[-1].uv: - uv.zero() - meshFaces.pop() - - # Smallest first is slightly more efficient, but if the user cancels early then its better we work on the larger data. - - # Generate Projection Vecs - # 0d is 1.0 - # 180 IS -0.59846 - - - # Initialize projectVecs - if USER_VIEW_INIT: - # Generate Projection - projectVecs = [Vector(Window.GetViewVector()) * ob.matrixWorld.copy().invert().rotationPart()] # We add to this allong the way - else: - projectVecs = [] - - newProjectVec = meshFaces[0].no - newProjectMeshFaces = [] # Popping stuffs it up. - - - # Predent that the most unique angke is ages away to start the loop off - mostUniqueAngle = -1.0 - - # This is popped - tempMeshFaces = meshFaces[:] - - - - # This while only gathers projection vecs, faces are assigned later on. - while 1: - # If theres none there then start with the largest face - - # add all the faces that are close. - for fIdx in range(len(tempMeshFaces)-1, -1, -1): - # Use half the angle limit so we dont overweight faces towards this - # normal and hog all the faces. - if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: - newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) - - # Add the average of all these faces normals as a projectionVec - averageVec = Vector(0,0,0) - if USER_AREA_WEIGHT: - for fprop in newProjectMeshFaces: - averageVec += (fprop.no * fprop.area) - else: - for fprop in newProjectMeshFaces: - averageVec += fprop.no - - if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN - projectVecs.append(averageVec.normalize()) - - - # Get the next vec! - # Pick the face thats most different to all existing angles :) - mostUniqueAngle = 1.0 # 1.0 is 0d. no difference. - mostUniqueIndex = 0 # dummy - - for fIdx in range(len(tempMeshFaces)-1, -1, -1): - angleDifference = -1.0 # 180d difference. - - # Get the closest vec angle we are to. - for p in projectVecs: - temp_angle_diff= p.dot(tempMeshFaces[fIdx].no) - - if angleDifference < temp_angle_diff: - angleDifference= temp_angle_diff - - if angleDifference < mostUniqueAngle: - # We have a new most different angle - mostUniqueIndex = fIdx - mostUniqueAngle = angleDifference - - if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED: - #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces) - # Now weight the vector to all its faces, will give a more direct projection - # if the face its self was not representive of the normal from surrounding faces. - - newProjectVec = tempMeshFaces[mostUniqueIndex].no - newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)] - - - else: - if len(projectVecs) >= 1: # Must have at least 2 projections - break - - - # If there are only zero area faces then its possible - # there are no projectionVecs - if not len(projectVecs): - Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.') - return - - faceProjectionGroupList =[[] for i in range(len(projectVecs)) ] - - # MAP and Arrange # We know there are 3 or 4 faces here - - for fIdx in range(len(meshFaces)-1, -1, -1): - fvec = meshFaces[fIdx].no - i = len(projectVecs) - - # Initialize first - bestAng = fvec.dot(projectVecs[0]) - bestAngIdx = 0 - - # Cycle through the remaining, first alredy done - while i-1: - i-=1 - - newAng = fvec.dot(projectVecs[i]) - if newAng > bestAng: # Reverse logic for dotvecs - bestAng = newAng - bestAngIdx = i - - # Store the area for later use. - faceProjectionGroupList[bestAngIdx].append(meshFaces[fIdx]) - - # Cull faceProjectionGroupList, - - - # Now faceProjectionGroupList is full of faces that face match the project Vecs list - for i in range(len(projectVecs)): - # Account for projectVecs having no faces. - if not faceProjectionGroupList[i]: - continue - - # Make a projection matrix from a unit length vector. - MatProj = VectoMat(projectVecs[i]) - - # Get the faces UV's from the projected vertex. - for f in faceProjectionGroupList[i]: - f_uv = f.uv - for j, v in enumerate(f.v): - # XXX - note, between Mathutils in 2.4 and 2.5 the order changed. - f_uv[j][:] = (v.co * MatProj)[:2] - - - if USER_SHARE_SPACE: - # Should we collect and pack later? - islandList = getUvIslands(faceProjectionGroupList, me) - collected_islandList.extend(islandList) - - else: - # Should we pack the islands for this 1 object? - islandList = getUvIslands(faceProjectionGroupList, me) - packIslands(islandList) - - - # update the mesh here if we need to. - - # We want to pack all in 1 go, so pack now - if USER_SHARE_SPACE: + + # ======= + # Generate a projection list from face normals, this is ment to be smart :) + + # make a list of face props that are in sync with meshFaces + # Make a Face List that is sorted by area. + # meshFaces = [] + + # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. + meshFaces.sort( key = lambda a: -a.area ) + + # remove all zero area faces + while meshFaces and meshFaces[-1].area <= SMALL_NUM: + # Set their UV's to 0,0 + for uv in meshFaces[-1].uv: + uv.zero() + meshFaces.pop() + + # Smallest first is slightly more efficient, but if the user cancels early then its better we work on the larger data. + + # Generate Projection Vecs + # 0d is 1.0 + # 180 IS -0.59846 + + + # Initialize projectVecs + if USER_VIEW_INIT: + # Generate Projection + projectVecs = [Vector(Window.GetViewVector()) * ob.matrixWorld.copy().invert().rotationPart()] # We add to this allong the way + else: + projectVecs = [] + + newProjectVec = meshFaces[0].no + newProjectMeshFaces = [] # Popping stuffs it up. + + + # Predent that the most unique angke is ages away to start the loop off + mostUniqueAngle = -1.0 + + # This is popped + tempMeshFaces = meshFaces[:] + + + + # This while only gathers projection vecs, faces are assigned later on. + while 1: + # If theres none there then start with the largest face + + # add all the faces that are close. + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + # Use half the angle limit so we dont overweight faces towards this + # normal and hog all the faces. + if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: + newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) + + # Add the average of all these faces normals as a projectionVec + averageVec = Vector(0,0,0) + if USER_AREA_WEIGHT: + for fprop in newProjectMeshFaces: + averageVec += (fprop.no * fprop.area) + else: + for fprop in newProjectMeshFaces: + averageVec += fprop.no + + if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN + projectVecs.append(averageVec.normalize()) + + + # Get the next vec! + # Pick the face thats most different to all existing angles :) + mostUniqueAngle = 1.0 # 1.0 is 0d. no difference. + mostUniqueIndex = 0 # dummy + + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + angleDifference = -1.0 # 180d difference. + + # Get the closest vec angle we are to. + for p in projectVecs: + temp_angle_diff= p.dot(tempMeshFaces[fIdx].no) + + if angleDifference < temp_angle_diff: + angleDifference= temp_angle_diff + + if angleDifference < mostUniqueAngle: + # We have a new most different angle + mostUniqueIndex = fIdx + mostUniqueAngle = angleDifference + + if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED: + #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces) + # Now weight the vector to all its faces, will give a more direct projection + # if the face its self was not representive of the normal from surrounding faces. + + newProjectVec = tempMeshFaces[mostUniqueIndex].no + newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)] + + + else: + if len(projectVecs) >= 1: # Must have at least 2 projections + break + + + # If there are only zero area faces then its possible + # there are no projectionVecs + if not len(projectVecs): + Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.') + return + + faceProjectionGroupList =[[] for i in range(len(projectVecs)) ] + + # MAP and Arrange # We know there are 3 or 4 faces here + + for fIdx in range(len(meshFaces)-1, -1, -1): + fvec = meshFaces[fIdx].no + i = len(projectVecs) + + # Initialize first + bestAng = fvec.dot(projectVecs[0]) + bestAngIdx = 0 + + # Cycle through the remaining, first alredy done + while i-1: + i-=1 + + newAng = fvec.dot(projectVecs[i]) + if newAng > bestAng: # Reverse logic for dotvecs + bestAng = newAng + bestAngIdx = i + + # Store the area for later use. + faceProjectionGroupList[bestAngIdx].append(meshFaces[fIdx]) + + # Cull faceProjectionGroupList, + + + # Now faceProjectionGroupList is full of faces that face match the project Vecs list + for i in range(len(projectVecs)): + # Account for projectVecs having no faces. + if not faceProjectionGroupList[i]: + continue + + # Make a projection matrix from a unit length vector. + MatProj = VectoMat(projectVecs[i]) + + # Get the faces UV's from the projected vertex. + for f in faceProjectionGroupList[i]: + f_uv = f.uv + for j, v in enumerate(f.v): + # XXX - note, between Mathutils in 2.4 and 2.5 the order changed. + f_uv[j][:] = (v.co * MatProj)[:2] + + + if USER_SHARE_SPACE: + # Should we collect and pack later? + islandList = getUvIslands(faceProjectionGroupList, me) + collected_islandList.extend(islandList) + + else: + # Should we pack the islands for this 1 object? + islandList = getUvIslands(faceProjectionGroupList, me) + packIslands(islandList) + + + # update the mesh here if we need to. + + # We want to pack all in 1 go, so pack now + if USER_SHARE_SPACE: #XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...") - packIslands(collected_islandList) - - print("Smart Projection time: %.2f" % (time.time() - time1)) - # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1)) - - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT') - + packIslands(collected_islandList) + + print("Smart Projection time: %.2f" % (time.time() - time1)) + # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1)) + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + #XXX Window.DrawProgressBar(1.0, "") #XXX Window.WaitCursor(0) #XXX Window.RedrawAll() """ - pup_block = [\ - 'Projection',\ + pup_block = [\ + 'Projection',\ * ('Angle Limit:', USER_PROJECTION_LIMIT, 1, 89, ''),\ - ('Selected Faces Only', USER_ONLY_SELECTED_FACES, 'Use only selected faces from all selected meshes.'),\ - ('Init from view', USER_VIEW_INIT, 'The first projection will be from the view vector.'),\ - ('Area Weight', USER_AREA_WEIGHT, 'Weight projections vector by face area.'),\ - '',\ - '',\ - '',\ - 'UV Layout',\ - ('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\ - ('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\ + ('Selected Faces Only', USER_ONLY_SELECTED_FACES, 'Use only selected faces from all selected meshes.'),\ + ('Init from view', USER_VIEW_INIT, 'The first projection will be from the view vector.'),\ + ('Area Weight', USER_AREA_WEIGHT, 'Weight projections vector by face area.'),\ + '',\ + '',\ + '',\ + 'UV Layout',\ + ('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\ + ('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\ * ('Island Margin:', USER_ISLAND_MARGIN, 0.0, 0.5, ''),\ - 'Fill in empty areas',\ - ('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\ - ('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\ - ] + 'Fill in empty areas',\ + ('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\ + ('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\ + ] """ from bpy.props import * class SmartProject(bpy.types.Operator): - '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' - bl_idname = "uv.smart_project" - bl_label = "Smart UV Project" + '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' + bl_idname = "uv.smart_project" + bl_label = "Smart UV Project" - bl_register = True - bl_undo = True + bl_register = True + bl_undo = True - angle_limit = FloatProperty(name="Angle Limit", - description="lower for more projection groups, higher for less distortion.", - default=66.0, min=1.0, max=89.0) + angle_limit = FloatProperty(name="Angle Limit", + description="lower for more projection groups, higher for less distortion.", + default=66.0, min=1.0, max=89.0) - island_margin = FloatProperty(name="Island Margin", - description="Margin to reduce bleed from adjacent islands.", - default=0.0, min=0.0, max=1.0) + island_margin = FloatProperty(name="Island Margin", + description="Margin to reduce bleed from adjacent islands.", + default=0.0, min=0.0, max=1.0) - def poll(self, context): - return context.active_object != None + def poll(self, context): + return context.active_object != None - def execute(self, context): - main(context, self.properties.island_margin, self.properties.angle_limit) - return ('FINISHED',) + def execute(self, context): + main(context, self.properties.island_margin, self.properties.angle_limit) + return ('FINISHED',) bpy.ops.add(SmartProject) @@ -1137,10 +1137,10 @@ bpy.ops.add(SmartProject) import dynamic_menu menu_func = (lambda self, context: self.layout.operator(SmartProject.bl_idname, - text="Smart Project")) + text="Smart Project")) menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) if __name__ == '__main__': - bpy.ops.uv.smart_project() + bpy.ops.uv.smart_project() diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index f93c0d47e28..c5fc18964bf 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -33,7 +33,7 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bpy.ops.tfm.edge_slide(value=1.0) bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() - + return ('FINISHED',) rna_path_prop = StringProperty(name="Context Attributes", diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 2c47ac03d7d..4a10ff80a32 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -193,6 +193,7 @@ class BONE_PT_relations(BoneButtonsPanel): sub.active = (not bone.parent or not bone.connected) sub.prop(bone, "local_location", text="Local Location") + class BONE_PT_display(BoneButtonsPanel): bl_label = "Display" diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 0f3221254cc..eb2a73d1790 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -481,7 +481,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): mat = active_node_mat(context.material) sss = mat.subsurface_scattering wide_ui = context.region.width > narrowui - + layout.active = (sss.enabled) and (not mat.shadeless) row = layout.row().split() diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index d3bad4e7bdb..8a1d26518fe 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -21,6 +21,7 @@ import bpy narrowui = 180 + class ConstraintButtonsPanel(bpy.types.Panel): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index d483bf8f804..0829b533c81 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -28,7 +28,7 @@ from properties_physics_common import effector_weights_ui def cloth_panel_enabled(md): return md.point_cache.baked is False - + class CLOTH_MT_presets(bpy.types.Menu): ''' @@ -227,7 +227,7 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel): def draw(self, context): cloth = context.cloth.settings effector_weights_ui(self, context, cloth.effector_weights) - + bpy.types.register(CLOTH_MT_presets) bpy.types.register(PHYSICS_PT_cloth) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 3f176e965b4..35f52552e6b 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -401,8 +401,8 @@ class RENDER_PT_encoding(RenderButtonsPanel): col.label(text="Mux:") col.prop(rd, "ffmpeg_muxrate", text="Rate") col.prop(rd, "ffmpeg_packetsize", text="Packet Size") - - # Audio: + + # Audio: layout.prop(rd, "ffmpeg_multiplex_audio", text="Audio") sub = layout.column() @@ -554,4 +554,4 @@ bpy.types.register(RENDER_PT_output) bpy.types.register(RENDER_PT_encoding) bpy.types.register(RENDER_PT_performance) bpy.types.register(RENDER_PT_post_processing) -bpy.types.register(RENDER_PT_stamp) \ No newline at end of file +bpy.types.register(RENDER_PT_stamp) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 44a90c084d0..32c5dbb9375 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -149,14 +149,15 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu): layout.operator("tfm.translate") layout.operator("tfm.rotate") layout.operator("tfm.resize") - + + class IMAGE_MT_uvs_snap(bpy.types.Menu): bl_label = "Snap" - def draw(self, context): + def draw(self, context): layout = self.layout layout.operator_context = 'EXEC_REGION_WIN' - + layout.operator("uv.snap_selection", text="Selected to Pixels").target = 'PIXELS' layout.operator("uv.snap_selection", text="Selected to Cursor").target = 'CURSOR' layout.operator("uv.snap_selection", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED' @@ -166,6 +167,7 @@ class IMAGE_MT_uvs_snap(bpy.types.Menu): layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS' layout.operator("uv.snap_cursor", text="Cursor to Selection").target = 'SELECTION' + class IMAGE_MT_uvs_mirror(bpy.types.Menu): bl_label = "Mirror" diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 8ac77a50d55..56f5aa883c8 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -522,7 +522,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): row.prop(strip.sound, "caching") layout.prop(strip, "volume") - + class SEQUENCER_PT_scene(SequencerButtonsPanel): bl_label = "Scene" @@ -541,7 +541,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel): layout = self.layout strip = act_strip(context) - + layout.template_ID(strip, "scene") diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index f3e0dbb57c4..6ea499704fc 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -168,7 +168,6 @@ class TEXT_MT_templates(bpy.types.Menu): bl_label = "Script Templates" def draw(self, context): - import os self.path_menu(bpy.utils.script_paths("templates"), "text.open") diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 34669e14859..32a9f0d2534 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1465,4 +1465,4 @@ bpy.ops.add(WM_OT_keyconfig_export) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) -bpy.ops.add(WM_OT_keyitem_remove) \ No newline at end of file +bpy.ops.add(WM_OT_keyitem_remove) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 72191e822ee..8de29dc30ff 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -30,7 +30,7 @@ class VIEW3D_HT_header(bpy.types.Header): # view = context.space_data mode_string = context.mode edit_object = context.edit_object - object = context.active_object + obj = context.active_object toolsettings = context.scene.tool_settings row = layout.row(align=True) @@ -48,7 +48,7 @@ class VIEW3D_HT_header(bpy.types.Header): if edit_object: sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower()) - elif object: + elif obj: if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']: sub.menu("VIEW3D_MT_%s" % mode_string.lower()) else: @@ -57,7 +57,7 @@ class VIEW3D_HT_header(bpy.types.Header): layout.template_header_3D() # Proportional editing - if object.mode in ('OBJECT', 'EDIT'): + if obj.mode in ('OBJECT', 'EDIT'): row = layout.row(align=True) row.prop(toolsettings, "proportional_editing", text="", icon_only=True) if toolsettings.proportional_editing != 'DISABLED': @@ -69,7 +69,7 @@ class VIEW3D_HT_header(bpy.types.Header): row.prop(toolsettings, "snap_element", text="", icon_only=True) if toolsettings.snap_element != 'INCREMENT': row.prop(toolsettings, "snap_target", text="", icon_only=True) - if object.mode == 'OBJECT': + if obj.mode == 'OBJECT': row.prop(toolsettings, "snap_align_rotation", text="") if toolsettings.snap_element == 'VOLUME': row.prop(toolsettings, "snap_peel_object", text="") @@ -83,7 +83,7 @@ class VIEW3D_HT_header(bpy.types.Header): props.animation = True # Pose - if object.mode == 'POSE': + if obj.mode == 'POSE': row = layout.row(align=True) row.operator("pose.copy", text="", icon='ICON_COPYDOWN') row.operator("pose.paste", text="", icon='ICON_PASTEDOWN') @@ -114,16 +114,16 @@ class VIEW3D_MT_transform(bpy.types.Menu): # TODO: get rid of the custom text strings? def draw(self, context): layout = self.layout - + layout.operator("tfm.translate", text="Grab/Move") # TODO: sub-menu for grab per axis layout.operator("tfm.rotate", text="Rotate") # TODO: sub-menu for rot per axis layout.operator("tfm.resize", text="Scale") # TODO: sub-menu for scale per axis - + layout.separator() - + layout.operator("tfm.tosphere", text="To Sphere") layout.operator("tfm.shear", text="Shear") layout.operator("tfm.warp", text="Warp") @@ -133,15 +133,16 @@ class VIEW3D_MT_transform(bpy.types.Menu): else: layout.operator_context = 'EXEC_AREA' layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working - + layout.separator() - + layout.operator_context = 'EXEC_AREA' - + layout.operator("object.center_set", text="ObData to Centroid").type = 'CENTER' layout.operator("object.center_set", text="Centroid to ObData").type = 'CENTER_NEW' layout.operator("object.center_set", text="Centroid to 3D Cursor").type = 'CENTER_CURSOR' - + + class VIEW3D_MT_mirror(bpy.types.Menu): bl_label = "Mirror" @@ -149,11 +150,11 @@ class VIEW3D_MT_mirror(bpy.types.Menu): layout = self.layout layout.operator("tfm.mirror", text="Interactive Mirror") - + layout.separator() - + layout.operator_context = 'INVOKE_REGION_WIN' - + props = layout.operator("tfm.mirror", text="X Global") props.constraint_axis = (True, False, False) props.constraint_orientation = 'GLOBAL' @@ -163,10 +164,10 @@ class VIEW3D_MT_mirror(bpy.types.Menu): props = layout.operator("tfm.mirror", text="Z Global") props.constraint_axis = (False, False, True) props.constraint_orientation = 'GLOBAL' - + if context.edit_object: layout.separator() - + props = layout.operator("tfm.mirror", text="X Local") props.constraint_axis = (True, False, False) props.constraint_orientation = 'LOCAL' @@ -176,7 +177,8 @@ class VIEW3D_MT_mirror(bpy.types.Menu): props = layout.operator("tfm.mirror", text="Z Local") props.constraint_axis = (False, False, True) props.constraint_orientation = 'LOCAL' - + + class VIEW3D_MT_snap(bpy.types.Menu): bl_label = "Snap" @@ -594,7 +596,7 @@ class VIEW3D_MT_select_face(bpy.types.Menu):# XXX no matching enum def draw(self, context): layout = self.layout - + # TODO # see view3d_select_faceselmenu @@ -785,7 +787,7 @@ class VIEW3D_MT_hook(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' layout.operator("object.hook_add_newob") layout.operator("object.hook_add_selob") - + if [mod.type == 'HOOK' for mod in context.active_object.modifiers]: layout.separator() layout.operator_menu_enum("object.hook_assign", "modifier") @@ -803,7 +805,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_AREA' layout.operator("object.vertex_group_assign", text="Assign to New Group").new = True - + ob = context.active_object if ob.mode == 'EDIT': if ob.vertex_groups and ob.active_vertex_group: @@ -812,7 +814,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu): layout.operator("object.vertex_group_remove_from", text="Remove from Active Group") layout.operator("object.vertex_group_remove_from", text="Remove from All").all = True layout.separator() - + if ob.vertex_groups and ob.active_vertex_group: layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group") layout.operator("object.vertex_group_remove", text="Remove Active Group") @@ -898,7 +900,7 @@ class VIEW3D_MT_pose(bpy.types.Menu): layout = self.layout arm = context.active_object.data - + layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_snap") if arm.drawtype in ('BBONE', 'ENVELOPE'): @@ -1238,7 +1240,7 @@ def draw_curve(self, context): layout = self.layout settings = context.tool_settings - + layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_mirror") layout.menu("VIEW3D_MT_snap") @@ -1374,7 +1376,7 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu): layout.operator("ed.redo") layout.separator() - + layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_mirror") layout.menu("VIEW3D_MT_snap") @@ -1412,7 +1414,7 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu): layout = self.layout settings = context.tool_settings - + layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_mirror") layout.menu("VIEW3D_MT_snap") @@ -1435,7 +1437,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu): edit_object = context.edit_object arm = edit_object.data - + layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_mirror") layout.menu("VIEW3D_MT_snap") @@ -1562,11 +1564,7 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel): col.prop(view, "clip_start", text="Start") col.prop(view, "clip_end", text="End") - - layout.column().prop(scene, "cursor_location", text="3D Cursor:") - - class VIEW3D_PT_3dview_name(bpy.types.Panel): @@ -1609,7 +1607,7 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): view = context.space_data gs = context.scene.game_data ob = context.object - + col = layout.column() col.prop(view, "display_x_axis", text="X Axis") col.prop(view, "display_y_axis", text="Y Axis") @@ -1620,7 +1618,7 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): if ob and ob.type == 'MESH': mesh = ob.data col.prop(mesh, "all_edges") - + col = layout.column() col.prop(view, "display_floor", text="Grid Floor") sub = col.column(align=True) @@ -1628,7 +1626,7 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): sub.prop(view, "grid_lines", text="Lines") sub.prop(view, "grid_spacing", text="Spacing") sub.prop(view, "grid_subdivisions", text="Subdivisions") - + col = layout.column() col.label(text="Shading:") col.prop(gs, "material_mode", text="") @@ -1826,7 +1824,7 @@ class VIEW3D_PT_context_properties(bpy.types.Panel): return "object" return "" - + def poll(self, context): member = self._active_context_member(context) if member: @@ -1845,46 +1843,6 @@ class VIEW3D_PT_context_properties(bpy.types.Panel): rna_prop_ui.draw(self.layout, context, member, False) -# Operators -from bpy.props import * - - -class OBJECT_OT_select_pattern(bpy.types.Operator): - '''Select object matching a naming pattern.''' - bl_idname = "object.select_pattern" - bl_label = "Select Pattern" - bl_register = True - bl_undo = True - - pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*") - case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False) - extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True) - - def execute(self, context): - - import fnmatch - - if self.properties.case_sensitive: - pattern_match = fnmatch.fnmatchcase - else: - pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) - - for ob in context.visible_objects: - if pattern_match(ob.name, self.properties.pattern): - ob.selected = True - elif not self.properties.extend: - ob.selected = False - - return ('FINISHED',) - - # TODO - python cant do popups yet - ''' - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) - ''' - bpy.types.register(VIEW3D_HT_header) # Header bpy.types.register(VIEW3D_MT_view) #View Menus @@ -1979,5 +1937,3 @@ bpy.types.register(VIEW3D_PT_transform_orientations) bpy.types.register(VIEW3D_PT_etch_a_ton) bpy.types.register(VIEW3D_PT_context_properties) - -bpy.ops.add(OBJECT_OT_select_pattern) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 533ff496c08..fe267c725a2 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -171,7 +171,7 @@ class VIEW3D_PT_tools_curveedit(View3DPanel): col.operator("tfm.translate") col.operator("tfm.rotate") col.operator("tfm.resize", text="Scale") - + col = layout.column(align=True) col.operator("tfm.transform", text="Tilt").mode = 'TILT' col.operator("tfm.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN' -- cgit v1.2.3 From 03c897da1bd1c0c41e0263788387149da5baa9f6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 Nov 2009 00:13:34 +0000 Subject: [#20103] Shortcut (Ctrl Space) not working for to show 3d transform manipulator --- source/blender/editors/space_view3d/view3d_ops.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 03820cbd2d7..62672dc19bc 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -270,6 +270,9 @@ void view3d_keymap(wmKeyConfig *keyconf) 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"); + 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"); + 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, "value", "CURSOR"); @@ -282,7 +285,6 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT"); - transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); fly_modal_keymap(keyconf); -- cgit v1.2.3 From 36cbf42e5d0806d3b94163517e953d1e1f0e2cf4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 Nov 2009 01:49:22 +0000 Subject: Draw function for operators (just like panels), used for the redo popup, file selector and redo tool panel. Used for ply export & select pattern. --- release/scripts/io/export_ply.py | 21 ++++++-- release/scripts/op/object.py | 11 ++++ source/blender/editors/space_file/file_panels.c | 2 +- .../blender/editors/space_view3d/view3d_toolbar.c | 2 +- source/blender/makesdna/DNA_windowmanager_types.h | 2 +- source/blender/python/intern/bpy_operator_wrap.c | 63 +++++++++++++++++++--- source/blender/windowmanager/intern/wm_operators.c | 4 +- 7 files changed, 89 insertions(+), 16 deletions(-) diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index 50cb3134f83..f9720be4646 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -263,9 +263,9 @@ class ExportPLY(bpy.types.Operator): path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) - use_normals = BoolProperty(name="Export Normals", description="Export Normals for smooth and hard shaded faces", default= True) - use_uvs = BoolProperty(name="Export UVs", description="Exort the active UV layer", default= True) - use_colors = BoolProperty(name="Export Vertex Colors", description="Exort the active vertex color layer", default= True) + use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True) + use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True) + use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True) def poll(self, context): @@ -291,14 +291,25 @@ class ExportPLY(bpy.types.Operator): wm.add_fileselect(self) return ('RUNNING_MODAL',) + def draw(self, context): + layout = self.layout + props = self.properties + + row = layout.row() + row.prop(props, "use_modifiers") + row.prop(props, "use_normals") + row = layout.row() + row.prop(props, "use_uvs") + row.prop(props, "use_colors") + bpy.ops.add(ExportPLY) import dynamic_menu def menu_func(self, context): - default_path = bpy.data.filename.replace(".blend", ".ply") - self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path + default_path = bpy.data.filename.replace(".blend", ".ply") + self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 50bbbf8158a..8823045e07d 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -52,6 +52,17 @@ class SelectPattern(bpy.types.Operator): wm = context.manager wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) + + def draw(self, context): + print("WoW") + layout = self.layout + props = self.properties + + layout.prop(props, "pattern") + row = layout.row() + row.prop(props, "case_sensitive") + row.prop(props, "extend") + class SubsurfSet(bpy.types.Operator): diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index b6f37000afa..fb52a36cdcf 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -175,7 +175,7 @@ static void file_panel_operator(const bContext *C, Panel *pa) int empty= 1, flag; if(op->type->ui) { - op->type->ui((bContext*)C, op->ptr, pa->layout); + op->type->ui((bContext*)C, op, pa->layout); } else { RNA_STRUCT_BEGIN(op->ptr, prop) { diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 3249f26aff6..5dbc6cc232c 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -143,7 +143,7 @@ static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOper RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); if(op->type->ui) - op->type->ui((bContext*)C, &ptr, pa->layout); + op->type->ui((bContext*)C, op, pa->layout); else uiDefAutoButsRNA(C, pa->layout, &ptr, 1); } diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 5e5c9856669..1af1dd7a158 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -217,7 +217,7 @@ typedef struct wmOperatorType { int (*poll)(struct bContext *); /* optional panel for redo and repeat, autogenerated if not set */ - void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *); + void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *); /* rna for properties */ struct StructRNA *srna; diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index 0c0d043c4be..f12c7979f3e 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -32,6 +32,7 @@ #include "MEM_guardedalloc.h" #include "WM_api.h" #include "WM_types.h" +#include "UI_interface.h" #include "ED_screen.h" #include "RNA_define.h" @@ -78,10 +79,11 @@ static struct BPY_flag_def pyop_ret_flags[] = { #define PYOP_EXEC 1 #define PYOP_INVOKE 2 #define PYOP_POLL 3 +#define PYOP_DRAW 4 extern void BPY_update_modules( void ); //XXX temp solution -static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event) +static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperator *op, wmEvent *event, uiLayout *layout) { PyObject *py_class = ot->pyop_data; PyObject *args; @@ -89,7 +91,6 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat int ret_flag= (mode==PYOP_POLL ? 0:OPERATOR_CANCELLED); PointerRNA ptr_context; PointerRNA ptr_operator; - PointerRNA ptr_event; PyGILState_STATE gilstate; @@ -113,6 +114,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); if (mode==PYOP_INVOKE) { + PointerRNA ptr_event; item= PyObject_GetAttrString(py_class, "invoke"); args = PyTuple_New(3); @@ -134,6 +136,36 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat args = PyTuple_New(2); PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context)); } + else if (mode==PYOP_DRAW) { + PointerRNA ptr_layout; + item= PyObject_GetAttrString(py_class, "draw"); + args = PyTuple_New(2); + + RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout); + + // PyTuple_SET_ITEM "steals" object reference, it is + // an object passed shouldn't be DECREF'ed + PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context)); +#if 0 + PyTuple_SET_ITEM(args, 2, pyrna_struct_CreatePyObject(&ptr_layout)); +#else + { + /* mimic panels */ + PyObject *py_layout= pyrna_struct_CreatePyObject(&ptr_layout); + PyObject *pyname= PyUnicode_FromString("layout"); + + if(PyObject_GenericSetAttr(py_class_instance, pyname, py_layout)) { + PyErr_Print(); + PyErr_Clear(); + } + else { + Py_DECREF(py_layout); + } + + Py_DECREF(pyname); + } +#endif + } PyTuple_SET_ITEM(args, 0, py_class_instance); ret = PyObject_Call(item, args, NULL); @@ -155,7 +187,8 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat else { ret_flag= ret==Py_True ? 1:0; } - + } else if(mode==PYOP_DRAW) { + /* pass */ } else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) { /* the returned value could not be converted into a flag */ PyErr_Format(PyExc_ValueError, "Python operator, error using return value from \"%s\"\n", ot->idname); @@ -209,19 +242,34 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event) { - return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event); + return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL); } static int PYTHON_OT_execute(bContext *C, wmOperator *op) { - return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL); + return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL); } static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot) { - return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL); + return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL); } +static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) +{ + PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); +} + +// void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *); +// +//static int PYTHON_OT_ui(bContext *C, PointerRNA *, uiLayout *layout) +//{ +// PointerRNA ptr_context, ptr_layout; +// RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); +// RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout); +// +//} + void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) { PyObject *py_class = (PyObject *)userdata; @@ -256,6 +304,8 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) ot->exec= PYTHON_OT_execute; if (PyObject_HasAttrString(py_class, "poll")) ot->pyop_poll= PYTHON_OT_poll; + if (PyObject_HasAttrString(py_class, "draw")) + ot->ui= PYTHON_OT_draw; ot->pyop_data= userdata; @@ -320,6 +370,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) {"execute", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, {"invoke", 'f', 3, -1, BPY_CLASS_ATTR_OPTIONAL}, {"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, + {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, {NULL, 0, 0, 0} }; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 5820220f780..15e27f45d5e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -731,7 +731,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) uiItemL(layout, op->type->name, 0); if(op->type->ui) - op->type->ui((bContext*)C, &ptr, layout); + op->type->ui((bContext*)C, op, layout); else uiDefAutoButsRNA(C, layout, &ptr, columns); @@ -778,7 +778,7 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op) uiItemL(layout, op->type->name, 0); if(op->type->ui) - op->type->ui(C, op->ptr, layout); + op->type->ui(C, op, layout); else uiDefAutoButsRNA(C, layout, op->ptr, 2); -- cgit v1.2.3 From 16efe1ac46fca2fafda292344a37f1f2deede2a0 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 29 Nov 2009 02:14:34 +0000 Subject: UI Scripts Bugfixes: * Toolbar shows "Loopcut and Slide" instead of "Loopcut" now * Follow Path "Offset" option was broken by one of the "use_*" prefix commits --- release/scripts/ui/properties_object_constraint.py | 2 +- release/scripts/ui/space_view3d_toolbar.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 8a1d26518fe..d6552585191 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -258,7 +258,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): if con.use_fixed_position: col.prop(con, "offset_factor", text="Offset") else: - col.prop(con, "use_offset") + col.prop(con, "offset") row = layout.row() if wide_ui: diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index fe267c725a2..8559efa42c6 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -101,7 +101,7 @@ class VIEW3D_PT_tools_meshedit(View3DPanel): col.label(text="Add:") col.operator("mesh.extrude_move") col.operator("mesh.subdivide") - col.operator("mesh.loopcut") + col.operator("mesh.loopcut_slide") col.operator("mesh.duplicate_move") col.operator("mesh.spin") col.operator("mesh.screw") -- cgit v1.2.3 From 65edb6e55f11f20a552d8f9fd1375923d9854e49 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sun, 29 Nov 2009 02:42:47 +0000 Subject: UI: * Moved more of 3dview header to python * Fixed the layout of the ui layers template to show the correct number of buttons * Added support for layer icons (active layer, used layers) --- release/scripts/ui/space_view3d.py | 18 +++++++--- source/blender/editors/include/UI_interface.h | 3 +- .../editors/interface/interface_templates.c | 42 ++++++++++++++-------- .../blender/editors/space_view3d/view3d_header.c | 17 ++------- source/blender/makesrna/intern/rna_space.c | 6 ++++ source/blender/makesrna/intern/rna_ui_api.c | 6 ++++ 6 files changed, 58 insertions(+), 34 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 8de29dc30ff..5b33fbecac2 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -27,12 +27,12 @@ class VIEW3D_HT_header(bpy.types.Header): def draw(self, context): layout = self.layout - # view = context.space_data + view = context.space_data mode_string = context.mode edit_object = context.edit_object obj = context.active_object toolsettings = context.scene.tool_settings - + row = layout.row(align=True) row.template_header() @@ -56,8 +56,16 @@ class VIEW3D_HT_header(bpy.types.Header): layout.template_header_3D() + # Particle edit + if obj and obj.mode == 'PARTICLE_EDIT': + layout.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True) + + # Occlude geometry + if obj and view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')): + layout.prop(view, "occlude_geometry", text="") + # Proportional editing - if obj.mode in ('OBJECT', 'EDIT'): + if obj and obj.mode in ('OBJECT', 'EDIT'): row = layout.row(align=True) row.prop(toolsettings, "proportional_editing", text="", icon_only=True) if toolsettings.proportional_editing != 'DISABLED': @@ -69,7 +77,7 @@ class VIEW3D_HT_header(bpy.types.Header): row.prop(toolsettings, "snap_element", text="", icon_only=True) if toolsettings.snap_element != 'INCREMENT': row.prop(toolsettings, "snap_target", text="", icon_only=True) - if obj.mode == 'OBJECT': + if obj and obj.mode == 'OBJECT': row.prop(toolsettings, "snap_align_rotation", text="") if toolsettings.snap_element == 'VOLUME': row.prop(toolsettings, "snap_peel_object", text="") @@ -83,7 +91,7 @@ class VIEW3D_HT_header(bpy.types.Header): props.animation = True # Pose - if obj.mode == 'POSE': + if obj and obj.mode == 'POSE': row = layout.row(align=True) row.operator("pose.copy", text="", icon='ICON_COPYDOWN') row.operator("pose.paste", text="", icon='ICON_PASTEDOWN') diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index ce49f11be54..608954eeed8 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -648,7 +648,8 @@ void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struc void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels); void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname); -void uiTemplateLayers(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); 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); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index c263729f4fe..0b55571dbcd 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1879,16 +1879,17 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) /********************* Layer Buttons Template ************************/ // TODO: -// - option for showing extra info like whether layer has contents? // - for now, grouping of layers is determined by dividing up the length of // the array of layer bitflags -void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname) +void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, + PointerRNA *used_ptr, char *used_propname, int active_layer) { - uiLayout *uRow, *uSplit, *uCol; - PropertyRNA *prop; + uiLayout *uRow, *uCol; + PropertyRNA *prop, *used_prop; int groups, cols, layers; int group, col, layer, row; + int cols_per_group = 5; prop= RNA_struct_find_property(ptr, propname); if (!prop) { @@ -1900,28 +1901,41 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname) * - we want 2 rows only (for now) * - the number of columns (cols) is the total number of buttons per row * the 'remainder' is added to this, as it will be ok to have first row slightly wider if need be - * - for now, only split into groups if if group will have at least 5 items + * - for now, only split into groups if group will have at least 5 items */ layers= RNA_property_array_length(ptr, prop); cols= (layers / 2) + (layers % 2); - groups= ((cols / 2) < 5) ? (1) : (cols / 2); + groups= ((cols / 2) < cols_per_group) ? (1) : (cols / cols_per_group); + + if(used_ptr && used_propname) { + used_prop= RNA_struct_find_property(used_ptr, used_propname); + if (!used_prop) { + printf("uiTemplateLayer: used layers property not found: %s\n", used_propname); + return; + } + + if(RNA_property_array_length(used_ptr, used_prop) < layers) + used_prop = NULL; + } /* layers are laid out going across rows, with the columns being divided into groups */ - if (groups > 1) - uSplit= uiLayoutSplit(layout, (1.0f/(float)groups)); - else - uSplit= layout; for (group= 0; group < groups; group++) { - uCol= uiLayoutColumn(uSplit, 1); + uCol= uiLayoutColumn(layout, 1); for (row= 0; row < 2; row++) { uRow= uiLayoutRow(uCol, 1); - layer= groups*cols*row + cols*group; + layer= groups*cols_per_group*row + cols_per_group*group; /* add layers as toggle buts */ - for (col= 0; (col < cols) && (layer < layers); col++, layer++) { - int icon=0; // XXX - add some way of setting this... + for (col= 0; (col < cols_per_group) && (layer < layers); col++, layer++) { + int icon = 0; + int butlay = 1 << layer; + if(active_layer & butlay) + icon = ICON_LAYER_ACTIVE; + else if(used_prop && RNA_property_boolean_get_index(used_ptr, used_prop, layer)) + icon = ICON_LAYER_USED; + uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE); } } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 74f08d2b145..4dec705be15 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1918,7 +1918,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) View3D *v3d= sa->spacedata.first; Scene *scene= CTX_data_scene(C); ToolSettings *ts= CTX_data_tool_settings(C); - PointerRNA v3dptr, toolsptr; + PointerRNA v3dptr, toolsptr, sceneptr; Object *ob= OBACT; Object *obedit = CTX_data_edit_object(C); uiBlock *block; @@ -1926,6 +1926,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); + RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr); block= uiLayoutGetBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); @@ -1985,8 +1986,8 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) /* Transform widget / manipulators */ row= uiLayoutRow(layout, 1); + uiItemR(row, "", 0, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY); block= uiLayoutGetBlock(row); - uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,0,0,XIC,YIC, &v3d->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); if(v3d->twflag & V3D_USE_MANIPULATOR) { uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); @@ -2046,16 +2047,4 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) BKE_mesh_end_editmesh(obedit->data, em); } - else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - PointerRNA particleptr; - - RNA_pointer_create(&scene->id, &RNA_ParticleEdit, &ts->particle, &particleptr); - - row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &particleptr, "selection_mode", UI_ITEM_R_EXPAND+UI_ITEM_R_ICON_ONLY); - } - - /* Occlude geometry */ - if(v3d->drawtype > OB_WIRE && ((ob && ob->mode & OB_MODE_PARTICLE_EDIT) || (obedit && (obedit->type == OB_MESH)))) - uiItemR(layout, "", 0, &v3dptr, "occlude_geometry", UI_ITEM_R_ICON_ONLY); } diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index b072da4f64a..b37bca202bb 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -861,6 +861,12 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set"); RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene."); RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1); + + prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); + RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1); + RNA_def_property_array(prop, 20); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Used Layers", "Layers that contain something."); } static void rna_def_space_buttons(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index a726a5b628e..e15cc130899 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -310,6 +310,12 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "template_layers", "uiTemplateLayers"); api_ui_item_rna_common(func); + parm= RNA_def_pointer(func, "used_layers_data", "AnyType", "", "Data from which to take property."); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); + parm= RNA_def_string(func, "used_layers_property", "", 0, "", "Identifier of property in data."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_int(func, "active_layer", 0, 0, INT_MAX, "Active Layer", "", 0, INT_MAX); + RNA_def_property_flag(parm, PROP_REQUIRED); func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet"); api_ui_item_rna_common(func); -- cgit v1.2.3 From 625a360b4b1f70262931294a4bff6bec244cd8c4 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 29 Nov 2009 04:52:01 +0000 Subject: Animation Editor (mostly Graph Editor) bugfixes: * Durian Report / Own Todo: Action Groups with no F-Curves in them visible were still shown in the animation editors. After several failed attempts in the past, finally got this working by making a little shuffling + a simpler solution. * Bugfix #20134: Graph Editor Keys -> Transform Menu was using the wrong operators. C+P error from copying menus over from Dopesheet * Muting Action Groups didn't draw all F-Curves contained in group as being muted too. --- source/blender/editors/animation/anim_filter.c | 116 ++++++++++++++-------- source/blender/editors/space_graph/graph_draw.c | 2 +- source/blender/editors/space_graph/graph_header.c | 5 +- 3 files changed, 76 insertions(+), 47 deletions(-) diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index eb3a0377711..6586317b6dc 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -734,7 +734,6 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s ale->flag= nlt->flag; - // XXX or should this be done some other way? ale->key_data= &nlt->strips; ale->datatype= ALE_NLASTRIP; } @@ -755,12 +754,10 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s /* ----------------------------------------- */ - -static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id) +/* find the next F-Curve that is usable for inclusion */ +static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id) { - bAnimListElem *ale = NULL; - FCurve *fcu; - int items = 0; + FCurve *fcu = NULL; /* loop over F-Curves - assume that the caller of this has already checked that these should be included * NOTE: we need to check if the F-Curves belong to the same group, as this gets called for groups too... @@ -803,18 +800,42 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve if ( ANIMCHANNEL_SELOK(SEL_FCU(fcu)) && ANIMCHANNEL_SELEDITOK(SEL_FCU(fcu)) ) { /* only include if this curve is active */ if (!(filter_mode & ANIMFILTER_ACTIVE) || (fcu->flag & FCURVE_ACTIVE)) { - ale= make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id); - - if (ale) { - BLI_addtail(anim_data, ale); - items++; - } + /* this F-Curve can be used, so return it */ + return fcu; } } } } } + /* no (more) F-Curves from the list are suitable... */ + return NULL; +} + +static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, bActionGroup *grp, void *owner, short ownertype, int filter_mode, ID *owner_id) +{ + FCurve *fcu; + int items = 0; + + /* loop over every F-Curve able to be included + * - this for-loop works like this: + * 1) the starting F-Curve is assigned to the fcu pointer so that we have a starting point to search from + * 2) the first valid F-Curve to start from (which may include the one given as 'first') in the remaining + * list of F-Curves is found, and verified to be non-null + * 3) the F-Curve referenced by fcu pointer is added to the list + * 4) the fcu pointer is set to the F-Curve after the one we just added, so that we can keep going through + * the rest of the F-Curve list without an eternal loop. Back to step 2 :) + */ + for (fcu=first; ( (fcu = animdata_filter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next) + { + bAnimListElem *ale = make_new_animlistelem(fcu, ANIMTYPE_FCURVE, owner, ownertype, owner_id); + + if (ale) { + BLI_addtail(anim_data, ale); + items++; + } + } + /* return the number of items added to the list */ return items; } @@ -829,50 +850,57 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction /* loop over groups */ // TODO: in future, should we expect to need nested groups? for (agrp= act->groups.first; agrp; agrp= agrp->next) { - /* add this group as a channel first */ - if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { - /* check if filtering by selection */ - if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) { - ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id); - if (ale) { - BLI_addtail(anim_data, ale); - items++; - } - } - } + FCurve *first_fcu; /* store reference to last channel of group */ if (agrp->channels.last) lastchan= agrp->channels.last; + /* get the first F-Curve in this group we can start to use, + * and if there isn't any F-Curve to start from, then don't + * this group at all... + */ + first_fcu = animdata_filter_fcurve_next(ads, agrp->channels.first, agrp, filter_mode, owner_id); - /* there are some situations, where only the channels of the action group should get considered */ - if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) { - /* filters here are a bit convoulted... - * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes - * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed) - * - * cases when we should include F-Curves inside group: - * - we don't care about visibility - * - group is expanded - * - we just need the F-Curves present - */ - if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) ) - { - /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter, - * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing - * all its sub-curves to be shown + if (first_fcu) { + /* add this group as a channel first */ + if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { + /* check if filtering by selection */ + if ( ANIMCHANNEL_SELOK(SEL_AGRP(agrp)) ) { + ale= make_new_animlistelem(agrp, ANIMTYPE_GROUP, NULL, ANIMTYPE_NONE, owner_id); + if (ale) { + BLI_addtail(anim_data, ale); + items++; + } + } + } + + /* there are some situations, where only the channels of the action group should get considered */ + if (!(filter_mode & ANIMFILTER_ACTGROUPED) || (agrp->flag & AGRP_ACTIVE)) { + /* filters here are a bit convoulted... + * - groups show a "summary" of keyframes beside their name which must accessable for tools which handle keyframes + * - groups can be collapsed (and those tools which are only interested in channels rely on knowing that group is closed) + * + * cases when we should include F-Curves inside group: + * - we don't care about visibility + * - group is expanded + * - we just need the F-Curves present */ - if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) ) + if ( (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_AGRP(agrp)) || (filter_mode & ANIMFILTER_CURVESONLY) ) { - if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) { - items += animdata_filter_fcurves(anim_data, ads, agrp->channels.first, agrp, owner, ownertype, filter_mode, owner_id); + /* for the Graph Editor, curves may be set to not be visible in the view to lessen clutter, + * but to do this, we need to check that the group doesn't have it's not-visible flag set preventing + * all its sub-curves to be shown + */ + if ( !(filter_mode & ANIMFILTER_CURVEVISIBLE) || !(agrp->flag & AGRP_NOTVISIBLE) ) + { + if (!(filter_mode & ANIMFILTER_FOREDIT) || EDITABLE_AGRP(agrp)) { + items += animdata_filter_fcurves(anim_data, ads, first_fcu, agrp, owner, ownertype, filter_mode, owner_id); + } } } } } - - // TODO: but we still need to deal with the case when the group may be closed, but it has no visible curves too } /* loop over un-grouped F-Curves (only if we're not only considering those channels in the animive group) */ diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 6e0878972f8..3a7f9024510 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -818,7 +818,7 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri /* protected curves (non editable) are drawn with dotted lines */ setlinestyle(2); } - if (fcu->flag & FCURVE_MUTED) { + if ( ((fcu->grp) && (fcu->grp->flag & AGRP_MUTED)) || (fcu->flag & FCURVE_MUTED) ) { /* muted curves are drawn in a greyish hue */ // XXX should we have some variations? UI_ThemeColorShade(TH_HEADER, 50); diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index a5f9cb23555..e05e41f1b66 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -154,9 +154,10 @@ static void graph_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) static void graph_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) { - uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE); + uiItemO(layout, "Grab/Move", 0, "TFM_OT_translate"); uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND); - uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE); + uiItemO(layout, "Rotate", 0, "TFM_OT_rotate"); + uiItemO(layout, "Scale", 0, "TFM_OT_resize"); } static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused) -- cgit v1.2.3 From 7c21fa3b721d196f00a5e4d0745f1334f1c22459 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 29 Nov 2009 05:56:39 +0000 Subject: Armature Bugfixes: * Bugfix #20136: unclear tool tip for inherit rotation toggle * Bugfix for Apply Pose as Restpose (Ctrl A in Pose Mode): missing call to free edit-data was causing drawing code to only draw editbones until editmode was entered + toggled * Added missing notifier for deleting F-Modifiers, so deleting F-Modifiers now updates the view correctly afterwards --- source/blender/editors/animation/fmodifier_ui.c | 4 ++++ source/blender/editors/armature/editarmature.c | 7 ++++--- source/blender/makesrna/intern/rna_armature.c | 2 +- source/blender/makesrna/intern/rna_space.c | 5 ++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 2448f1b8596..35f7f424f85 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -119,6 +119,10 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) /* remove the given F-Modifier from the active modifier-stack */ remove_fmodifier(modifiers, fcm); + + /* 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); } /* --------------- */ diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index f8aacd3112d..95b743a7b27 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -334,7 +334,7 @@ void ED_armature_from_edit(Object *obedit) memcpy(newBone->head, eBone->head, sizeof(float)*3); memcpy(newBone->tail, eBone->tail, sizeof(float)*3); newBone->flag= eBone->flag; - + if (eBone == arm->act_edbone) { newBone->flag |= BONE_SELECTED; /* important, editbones can be active with only 1 point selected */ arm->act_edbone= NULL; @@ -353,7 +353,7 @@ void ED_armature_from_edit(Object *obedit) newBone->rad_tail= eBone->rad_tail; newBone->segments= eBone->segments; newBone->layer = eBone->layer; - + if(eBone->prop) newBone->prop= IDP_CopyProperty(eBone->prop); } @@ -620,8 +620,9 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op) curbone->flag |= BONE_UNKEYED; } - /* convert editbones back to bones */ + /* convert editbones back to bones, and then free the edit-data */ ED_armature_from_edit(ob); + ED_armature_edit_free(ob); /* flush positions of posebones */ where_is_pose(scene, ob); diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 57bb88496d3..4bea061758d 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -399,7 +399,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) prop= RNA_def_property(srna, "hinge", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_HINGE); - RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone doesn't inherit rotation or scale from parent bone."); + RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone inherits rotation or scale from parent bone."); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); prop= RNA_def_property(srna, "multiply_vertexgroup_with_envelope", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index b37bca202bb..ea695880526 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -443,6 +443,9 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) /* set action */ adt->action= saction->action; id_us_plus(&adt->action->id); + + /* force depsgraph flush too */ + DAG_id_flush_update(&obact->id, OB_RECALC_OB|OB_RECALC_DATA); } } @@ -1212,7 +1215,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL); RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space."); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_action_update"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, "rna_SpaceDopeSheetEditor_action_update"); /* mode */ prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); -- cgit v1.2.3 From 46e1abeda7142b8df6998f820a7a0e5bea19553f Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sun, 29 Nov 2009 06:04:39 +0000 Subject: UI: * Finished fixing the layer UI template. It's now used in the 3dview header rather than the custom layer grid. --- .../editors/interface/interface_templates.c | 31 +++++++++++++++++++++- .../blender/editors/space_view3d/view3d_header.c | 25 ++--------------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 0b55571dbcd..9402da2f2c6 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1878,6 +1878,25 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) /********************* Layer Buttons Template ************************/ +static void handle_layer_buttons(bContext *C, void *arg1, void *arg2) +{ + uiBut *but = arg1; + int cur = GET_INT_FROM_POINTER(arg2); + wmWindow *win= CTX_wm_window(C); + int i, tot, shift= win->eventstate->shift; + + if(!shift) { + tot= RNA_property_array_length(&but->rnapoin, but->rnaprop); + + /* Normally clicking only selects one layer */ + RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, cur, 1); + for(i = 0; i < tot; ++i) { + if(i != cur) + RNA_property_boolean_set_index(&but->rnapoin, but->rnaprop, i, 0); + } + } +} + // TODO: // - for now, grouping of layers is determined by dividing up the length of // the array of layer bitflags @@ -1890,12 +1909,15 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, int groups, cols, layers; int group, col, layer, row; int cols_per_group = 5; + const char *desc; prop= RNA_struct_find_property(ptr, propname); if (!prop) { printf("uiTemplateLayer: layers property not found: %s\n", propname); return; } + + desc= RNA_property_description(prop); /* the number of layers determines the way we group them * - we want 2 rows only (for now) @@ -1924,19 +1946,26 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, uCol= uiLayoutColumn(layout, 1); for (row= 0; row < 2; row++) { + uiBlock *block; + uiBut *but; + uRow= uiLayoutRow(uCol, 1); + block= uiLayoutGetBlock(uRow); layer= groups*cols_per_group*row + cols_per_group*group; /* add layers as toggle buts */ for (col= 0; (col < cols_per_group) && (layer < layers); col++, layer++) { int icon = 0; int butlay = 1 << layer; + if(active_layer & butlay) icon = ICON_LAYER_ACTIVE; else if(used_prop && RNA_property_boolean_get_index(used_ptr, used_prop, layer)) icon = ICON_LAYER_USED; - uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE); + but= uiDefAutoButR(block, ptr, prop, layer, "", icon, 0, 0, 10, 10); + uiButSetFunc(but, handle_layer_buttons, but, SET_INT_IN_POINTER(layer)); + but->type= TOG; } } } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 4dec705be15..886b2c2db99 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -2004,32 +2004,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) MEM_freeN(str_menu); } - /* LAYERS */ if(obedit==NULL && v3d->localvd==NULL) { int ob_lay = ob ? ob->lay : 0; - int a, xco = 0, yco = 0; - block= uiLayoutAbsoluteBlock(layout); - uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); - - uiBlockBeginAlign(block); - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=0; a<5; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - xco+= 5; - uiBlockBeginAlign(block); - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<lay_used), (short)(xco+a*(XIC/2)), yco+(short)(YIC/2),(short)(XIC/2),(short)(YIC/2), &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - for(a=5; a<10; a++) { - uiDefIconButBitI(block, TOG, 1<<(a+10), B_LAY+10+a, view3d_layer_icon(1<<(a+10), ob_lay, v3d->lay_used), (short)(xco+a*(XIC/2)), yco, XIC/2, (YIC)/2, &(v3d->lay), 0, 0, 0, 0, "Toggles Layer visibility (Alt Num, Alt Shift Num)"); - } - uiBlockEndAlign(block); - - xco+= (a-2)*(XIC/2)+3; + /* Layers */ + uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay); /* Scene lock */ uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); -- cgit v1.2.3 From e08b6b837691d2d7a9d246759d6f43a49dd0e004 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sun, 29 Nov 2009 06:10:26 +0000 Subject: UI: * Removed hardcoded shortcut keys in 3dview header tooltips * Removed an unused function --- .../blender/editors/space_view3d/view3d_header.c | 26 +++++++--------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 886b2c2db99..dd5df957a95 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -1887,16 +1887,6 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o } } -static int view3d_layer_icon(int but_lay, int ob_lay, int used_lay) -{ - if (but_lay & ob_lay) - return ICON_LAYER_ACTIVE; - else if (but_lay & used_lay) - return ICON_LAYER_USED; - else - return ICON_BLANK1; -} - /* Returns the icon associated with an object mode */ static int object_mode_icon(int mode) { @@ -1955,7 +1945,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlockBeginAlign(block); uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) , - 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, V, Ctrl Tab)"); + 0,0,126,20, &(v3d->modeselect), 0, 0, 0, 0, "Mode"); uiBlockEndAlign(block); /* Draw type */ @@ -1990,9 +1980,9 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) block= uiLayoutGetBlock(row); if(v3d->twflag & V3D_USE_MANIPULATOR) { - uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); - uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); - uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); + uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode"); + uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode"); + uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,XIC,YIC, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode"); } if (v3d->twmode > (BIF_countTransformOrientation(C) - 1) + V3D_MANIP_CUSTOM) { @@ -2000,7 +1990,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) } str_menu = BIF_menustringTransformOrientation(C, "Orientation"); - uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation (ALT+Space)"); + uiDefButS(block, MENU, B_MAN_MODE, str_menu,0,0,70,YIC, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation"); MEM_freeN(str_menu); } @@ -2020,9 +2010,9 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) row= uiLayoutRow(layout, 1); block= uiLayoutGetBlock(row); - uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode (Ctrl Tab 1)"); - uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode (Ctrl Tab 2)"); - uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode (Ctrl Tab 3)"); + uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_SEL_VERT, ICON_VERTEXSEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_SEL_EDGE, ICON_EDGESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Edge select mode"); + uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_SEL_FACE, ICON_FACESEL, 0,0,XIC,YIC, &em->selectmode, 1.0, 0.0, 0, 0, "Face select mode"); BKE_mesh_end_editmesh(obedit->data, em); } -- cgit v1.2.3 From 3b72584b7dd71737099184bc5a981874a7b4fa21 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 Nov 2009 16:42:51 +0000 Subject: - access to a nurbs points was broken - sizeof(BPoint) vs sizeof(BPoint *) - renamed CurvePoint --> SplinePoint - renamed point.point --> point.co (less stupid, matches vertex.co) - access point.co was a 3D vector rather then a 4D vector with the Nurbs weight included. - rename point.weight --> point.weight_softbody, move point.point[3] --> point.weight - sorted RNA structs (for pedaticness only) --- source/blender/makesrna/RNA_access.h | 48 ++++++++++++------------ source/blender/makesrna/intern/rna_curve.c | 26 ++++++++----- source/blender/makesrna/intern/rna_fcurve.c | 2 +- source/blender/python/intern/bpy_operator_wrap.c | 13 ------- 4 files changed, 41 insertions(+), 48 deletions(-) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 3c420535e2b..36653f8c06e 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -60,9 +60,9 @@ extern StructRNA RNA_ArmatureSensor; extern StructRNA RNA_ArrayModifier; extern StructRNA RNA_BackgroundImage; extern StructRNA RNA_BevelModifier; -extern StructRNA RNA_BezierCurvePoint; -extern StructRNA RNA_BlendTexture; +extern StructRNA RNA_BezierSplinePoint; extern StructRNA RNA_BlenderRNA; +extern StructRNA RNA_BlendTexture; extern StructRNA RNA_BoidRule; extern StructRNA RNA_BoidRuleAverageSpeed; extern StructRNA RNA_BoidRuleAvoid; @@ -168,8 +168,8 @@ extern StructRNA RNA_CopyRotationConstraint; extern StructRNA RNA_CopyScaleConstraint; extern StructRNA RNA_Curve; extern StructRNA RNA_CurveMap; -extern StructRNA RNA_CurveMapPoint; extern StructRNA RNA_CurveMapping; +extern StructRNA RNA_CurveMapPoint; extern StructRNA RNA_CurveModifier; extern StructRNA RNA_CurvePoint; extern StructRNA RNA_DampedTrackConstraint; @@ -183,8 +183,8 @@ extern StructRNA RNA_DriverTarget; extern StructRNA RNA_DupliObject; extern StructRNA RNA_EdgeSplitModifier; extern StructRNA RNA_EditBone; -extern StructRNA RNA_EffectSequence; extern StructRNA RNA_EffectorWeights; +extern StructRNA RNA_EffectSequence; extern StructRNA RNA_EnumProperty; extern StructRNA RNA_EnumPropertyItem; extern StructRNA RNA_EnvironmentMap; @@ -194,6 +194,13 @@ extern StructRNA RNA_ExplodeModifier; extern StructRNA RNA_ExpressionController; extern StructRNA RNA_FCurve; extern StructRNA RNA_FCurveSample; +extern StructRNA RNA_FieldSettings; +extern StructRNA RNA_FileSelectParams; +extern StructRNA RNA_FloatProperty; +extern StructRNA RNA_FloorConstraint; +extern StructRNA RNA_FluidFluidSettings; +extern StructRNA RNA_FluidSettings; +extern StructRNA RNA_FluidSimulationModifier; extern StructRNA RNA_FModifier; extern StructRNA RNA_FModifierCycles; extern StructRNA RNA_FModifierEnvelope; @@ -204,19 +211,8 @@ extern StructRNA RNA_FModifierLimits; extern StructRNA RNA_FModifierNoise; extern StructRNA RNA_FModifierPython; extern StructRNA RNA_FModifierSound; -extern StructRNA RNA_FieldSettings; -extern StructRNA RNA_FileSelectParams; -extern StructRNA RNA_FloatProperty; -extern StructRNA RNA_FloorConstraint; -extern StructRNA RNA_FluidFluidSettings; -extern StructRNA RNA_FluidSettings; -extern StructRNA RNA_FluidSimulationModifier; extern StructRNA RNA_FollowPathConstraint; extern StructRNA RNA_Function; -extern StructRNA RNA_GPencilFrame; -extern StructRNA RNA_GPencilLayer; -extern StructRNA RNA_GPencilStroke; -extern StructRNA RNA_GPencilStrokePoint; extern StructRNA RNA_GameBooleanProperty; extern StructRNA RNA_GameFloatProperty; extern StructRNA RNA_GameIntProperty; @@ -226,6 +222,10 @@ extern StructRNA RNA_GameSoftBodySettings; extern StructRNA RNA_GameStringProperty; extern StructRNA RNA_GameTimerProperty; extern StructRNA RNA_GlowSequence; +extern StructRNA RNA_GPencilFrame; +extern StructRNA RNA_GPencilLayer; +extern StructRNA RNA_GPencilStroke; +extern StructRNA RNA_GPencilStrokePoint; extern StructRNA RNA_GreasePencil; extern StructRNA RNA_Group; extern StructRNA RNA_Header; @@ -245,12 +245,12 @@ extern StructRNA RNA_IntProperty; extern StructRNA RNA_Itasc; extern StructRNA RNA_JoystickSensor; extern StructRNA RNA_Key; -extern StructRNA RNA_KeyConfig; -extern StructRNA RNA_KeyMap; -extern StructRNA RNA_KeyMapItem; extern StructRNA RNA_KeyboardSensor; +extern StructRNA RNA_KeyConfig; extern StructRNA RNA_KeyingSet; extern StructRNA RNA_KeyingSetPath; +extern StructRNA RNA_KeyMap; +extern StructRNA RNA_KeyMapItem; extern StructRNA RNA_KinematicConstraint; extern StructRNA RNA_Lamp; extern StructRNA RNA_LampSkySettings; @@ -310,8 +310,8 @@ extern StructRNA RNA_NearSensor; extern StructRNA RNA_NlaStrip; extern StructRNA RNA_NlaTrack; extern StructRNA RNA_Node; -extern StructRNA RNA_NodeTree; extern StructRNA RNA_NodeSocket; +extern StructRNA RNA_NodeTree; extern StructRNA RNA_NoiseTexture; extern StructRNA RNA_NorController; extern StructRNA RNA_Nurb; @@ -345,8 +345,8 @@ extern StructRNA RNA_PluginTexture; extern StructRNA RNA_PointCache; extern StructRNA RNA_PointDensity; extern StructRNA RNA_PointDensityTexture; -extern StructRNA RNA_PointLamp; extern StructRNA RNA_PointerProperty; +extern StructRNA RNA_PointLamp; extern StructRNA RNA_Pose; extern StructRNA RNA_PoseBone; extern StructRNA RNA_Property; @@ -417,7 +417,6 @@ extern StructRNA RNA_SoftBodyModifier; extern StructRNA RNA_SoftBodySettings; extern StructRNA RNA_Sound; extern StructRNA RNA_SoundSequence; -extern StructRNA RNA_SplineIKConstraint; extern StructRNA RNA_Space; extern StructRNA RNA_Space3DView; extern StructRNA RNA_SpaceConsole; @@ -434,9 +433,10 @@ extern StructRNA RNA_SpaceProperties; extern StructRNA RNA_SpaceSequenceEditor; extern StructRNA RNA_SpaceTextEditor; extern StructRNA RNA_SpaceTimeline; -extern StructRNA RNA_SpaceUVEditor; extern StructRNA RNA_SpaceUserPreferences; +extern StructRNA RNA_SpaceUVEditor; extern StructRNA RNA_SpeedControlSequence; +extern StructRNA RNA_SplineIKConstraint; extern StructRNA RNA_SpotLamp; extern StructRNA RNA_StretchToConstraint; extern StructRNA RNA_StringProperty; @@ -509,8 +509,6 @@ extern StructRNA RNA_TransformConstraint; extern StructRNA RNA_TransformSequence; extern StructRNA RNA_UILayout; extern StructRNA RNA_UIListItem; -extern StructRNA RNA_UVProjectModifier; -extern StructRNA RNA_UVProjector; extern StructRNA RNA_UnitSettings; extern StructRNA RNA_UnknownType; extern StructRNA RNA_UserPreferences; @@ -519,6 +517,8 @@ extern StructRNA RNA_UserPreferencesFilePaths; extern StructRNA RNA_UserPreferencesSystem; extern StructRNA RNA_UserPreferencesView; extern StructRNA RNA_UserSolidLight; +extern StructRNA RNA_UVProjectModifier; +extern StructRNA RNA_UVProjector; extern StructRNA RNA_ValueNodeSocket; extern StructRNA RNA_VectorFont; extern StructRNA RNA_VectorNodeSocket; diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 4c7a88d304b..179bc8bcd7d 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -212,7 +212,7 @@ static void rna_Nurb_type_set(PointerRNA *ptr, int value) static void rna_BPoint_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; - rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint*), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL); + rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL); } static void rna_Curve_update_data(bContext *C, PointerRNA *ptr) @@ -298,9 +298,9 @@ static void rna_def_bpoint(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - srna= RNA_def_struct(brna, "CurvePoint", NULL); + srna= RNA_def_struct(brna, "SplinePoint", NULL); RNA_def_struct_sdna(srna, "BPoint"); - RNA_def_struct_ui_text(srna, "CurvePoint", "Curve point without handles."); + RNA_def_struct_ui_text(srna, "SplinePoint", "Spline point without handles."); /* Boolean values */ prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); @@ -314,12 +314,17 @@ static void rna_def_bpoint(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Curve_update_data"); /* Vector value */ - prop= RNA_def_property(srna, "point", PROP_FLOAT, PROP_TRANSLATION); - RNA_def_property_array(prop, 4); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_array(prop, 3); RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_ui_text(prop, "Point", "Point coordinates"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "vec[3]"); + RNA_def_property_ui_text(prop, "Weight", "Nurbs weight"); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + /* Number values */ prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "alfa"); @@ -327,7 +332,8 @@ static void rna_def_bpoint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Tilt", "Tilt in 3d View"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "weight_softbody", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "weight"); RNA_def_property_range(prop, 0.01f, 100.0f); RNA_def_property_ui_text(prop, "Weight", "Softbody goal weight"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); @@ -345,7 +351,7 @@ static void rna_def_beztriple(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - srna= RNA_def_struct(brna, "BezierCurvePoint", NULL); + srna= RNA_def_struct(brna, "BezierSplinePoint", NULL); RNA_def_struct_sdna(srna, "BezTriple"); RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles."); @@ -402,7 +408,7 @@ static void rna_def_beztriple(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "control_point", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); RNA_def_property_float_funcs(prop, "rna_BezTriple_ctrlpoint_get", "rna_BezTriple_ctrlpoint_set", NULL); RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point"); @@ -888,12 +894,12 @@ static void rna_def_curve_nurb(BlenderRNA *brna) prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "bp", NULL); - RNA_def_property_struct_type(prop, "CurvePoint"); + RNA_def_property_struct_type(prop, "SplinePoint"); RNA_def_property_collection_funcs(prop, "rna_BPoint_array_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_Nurb_length", 0, 0); RNA_def_property_ui_text(prop, "Points", "Collection of points that make up this poly or nurbs spline."); prop= RNA_def_property(srna, "bezier_points", PROP_COLLECTION, PROP_NONE); - RNA_def_property_struct_type(prop, "BezierCurvePoint"); + RNA_def_property_struct_type(prop, "BezierSplinePoint"); RNA_def_property_collection_sdna(prop, NULL, "bezt", "pntsu"); RNA_def_property_ui_text(prop, "Bezier Points", "Collection of points for bezier curves only."); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index c9e9f6789d2..88dfe358f98 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -941,7 +941,7 @@ static void rna_def_fcurve(BlenderRNA *brna) prop= RNA_def_property(srna, "keyframe_points", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "bezt", "totvert"); - RNA_def_property_struct_type(prop, "BezierCurvePoint"); + RNA_def_property_struct_type(prop, "BezierSplinePoint"); RNA_def_property_ui_text(prop, "Keyframes", "User-editable keyframes"); prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE); diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index f12c7979f3e..ff49d381dd1 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -260,16 +260,6 @@ static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); } -// void (*ui)(struct bContext *, struct PointerRNA *, struct uiLayout *); -// -//static int PYTHON_OT_ui(bContext *C, PointerRNA *, uiLayout *layout) -//{ -// PointerRNA ptr_context, ptr_layout; -// RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); -// RNA_pointer_create(NULL, &RNA_UILayout, layout, &ptr_layout); -// -//} - void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) { PyObject *py_class = (PyObject *)userdata; @@ -453,6 +443,3 @@ PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value) Py_RETURN_NONE; } - - - -- cgit v1.2.3 From ae16f465738b538964e5f00c1506582d47ead7d1 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 29 Nov 2009 16:49:26 +0000 Subject: Fix CLICK event for modal operators. modal operators should return RUNNING_MODAL|PASSTHROUGH for unhandled events to be able to receive clicks correctly (this needs to be fixed for other modal operators). Maybe it's time to have "handled" flag in event instead. --- source/blender/editors/transform/transform.c | 21 +++++++++++++++++++-- source/blender/editors/transform/transform.h | 2 +- source/blender/editors/transform/transform_ops.c | 8 ++++---- .../blender/windowmanager/intern/wm_event_system.c | 18 +++++++++++------- source/blender/windowmanager/wm_event_system.h | 1 + 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index cd267f51601..ce7076c691f 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -560,10 +560,11 @@ void transform_modal_keymap(wmKeyConfig *keyconf) } -void transformEvent(TransInfo *t, wmEvent *event) +int transformEvent(TransInfo *t, wmEvent *event) { float mati[3][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}}; char cmode = constraintModeToChar(t); + int handled = 1; t->redraw |= handleMouseInput(t, &t->mouse, event); @@ -641,6 +642,9 @@ void transformEvent(TransInfo *t, wmEvent *event) t->modifiers ^= MOD_SNAP; t->redraw = 1; break; + default: + handled = 0; + break; } } /* else do non-mapped events */ @@ -898,6 +902,9 @@ void transformEvent(TransInfo *t, wmEvent *event) // case NDOFMOTION: // viewmoveNDOF(1); // break; + default: + handled = 0; + break; } // Numerical input events @@ -935,7 +942,9 @@ void transformEvent(TransInfo *t, wmEvent *event) case NDOF_REFRESH: t->redraw = 1; break; - + default: + handled = 0; + break; } // Snapping events @@ -964,6 +973,9 @@ void transformEvent(TransInfo *t, wmEvent *event) //// if (t->options & CTX_TWEAK) // t->state = TRANS_CONFIRM; // break; + default: + handled = 0; + break; } /* confirm transform if launch key is released after mouse move */ @@ -977,6 +989,11 @@ void transformEvent(TransInfo *t, wmEvent *event) // Per transform event, if present if (t->handleEvent) t->redraw |= t->handleEvent(t, event); + + if (handled || t->redraw) + return 0; + else + return OPERATOR_PASS_THROUGH; } int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float *vec) diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 1d284d2cc5b..bf3562cbe65 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -429,7 +429,7 @@ void TFM_OT_transform(struct wmOperatorType *ot); int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode); void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op); -void transformEvent(TransInfo *t, struct wmEvent *event); +int transformEvent(TransInfo *t, struct wmEvent *event); void transformApply(struct bContext *C, TransInfo *t); int transformEnd(struct bContext *C, TransInfo *t); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 0c54b5273e3..1b8b331af62 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -293,16 +293,16 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event) TransInfo *t = op->customdata; - transformEvent(t, event); + exit_code = transformEvent(t, event); transformApply(C, t); + exit_code |= transformEnd(C, t); - exit_code = transformEnd(C, t); - - if (exit_code != OPERATOR_RUNNING_MODAL) + if ((exit_code & OPERATOR_RUNNING_MODAL) == 0) { transformops_exit(C, op); + exit_code &= ~OPERATOR_PASS_THROUGH; /* preventively remove passthrough */ } return exit_code; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 8e83ceceab0..93c8b669611 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -941,6 +941,10 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand if(retval == (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH)) return WM_HANDLER_HANDLED; + /* Modal unhandled, break */ + if(retval == (OPERATOR_PASS_THROUGH|OPERATOR_RUNNING_MODAL)) + return (WM_HANDLER_BREAK|WM_HANDLER_MODAL); + if(retval & OPERATOR_PASS_THROUGH) return WM_HANDLER_CONTINUE; @@ -1159,7 +1163,7 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) } /* test for CLICK event */ - if (event->val == KM_RELEASE && action == WM_HANDLER_CONTINUE) { + if (event->val == KM_RELEASE && (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL))) { wmWindow *win = CTX_wm_window(C); if (win && win->last_type == event->type && win->last_val == KM_PRESS) { @@ -1354,15 +1358,15 @@ void wm_event_do_handlers(bContext *C) } /* store last event for this window */ - if (action == WM_HANDLER_CONTINUE) { - /* mousemove event don't overwrite last type */ - if (event->type != MOUSEMOVE) { + /* mousemove event don't overwrite last type */ + if (event->type != MOUSEMOVE) { + if (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) { win->last_type = event->type; win->last_val = event->val; + } else { + win->last_type = -1; + win->last_val = 0; } - } else { - win->last_type = -1; - win->last_val = 0; } /* unlink and free here, blender-quit then frees all */ diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h index 78655a9fcd3..3d7cb3fbad1 100644 --- a/source/blender/windowmanager/wm_event_system.h +++ b/source/blender/windowmanager/wm_event_system.h @@ -32,6 +32,7 @@ #define WM_HANDLER_CONTINUE 0 #define WM_HANDLER_BREAK 1 #define WM_HANDLER_HANDLED 2 +#define WM_HANDLER_MODAL 4 /* MODAL|BREAK means unhandled */ struct ScrArea; struct ARegion; -- cgit v1.2.3 From a22cfe99db567fb34047b1cf3cacde1be271efac Mon Sep 17 00:00:00 2001 From: Peter Schlaile Date: Sun, 29 Nov 2009 18:14:16 +0000 Subject: == Sequencer == Brought back default effect fading: (adding a wipe effect makes it wipe by default for the length of the strip) First round in upgrading IPOs from older versions. (works for non-IPO case now and sets at least the new "default effect fade"-flag) Still non-working for old IPOs, since Sequence-Strips aren't real IDs! And: non-frame-lock case should stretch the FCurve to the right length! --- release/scripts/ui/space_sequencer.py | 9 +++- source/blender/blenkernel/intern/ipo.c | 57 ++++++++++++++++++++++ source/blender/blenkernel/intern/sequence.c | 34 +++++++------ .../editors/space_sequencer/sequencer_add.c | 2 + source/blender/makesdna/DNA_ipo_types.h | 2 + source/blender/makesdna/DNA_sequence_types.h | 1 + source/blender/makesrna/intern/rna_sequence.c | 8 ++- 7 files changed, 96 insertions(+), 17 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 56f5aa883c8..8476a98992c 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -351,7 +351,10 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): if not strip: return False - return strip.type in ('COLOR', 'WIPE', 'GLOW', 'SPEED', 'TRANSFORM') + return strip.type in ('ADD','SUBTRACT','ALPHA_OVER','ALPHA_UNDER', + 'GAMMA_CROSS','MULTIPLY','OVER_DROP', + 'PLUGIN', + 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED') def draw(self, context): layout = self.layout @@ -431,7 +434,9 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): if strip.type == 'SPEED': col.prop(strip, "speed_fader", text="Speed fader") else: - col.prop(strip, "effect_fader", text="Effect fader") + col.prop(strip, "use_effect_default_fade", "Default fade") + if not strip.use_effect_default_fade: + col.prop(strip, "effect_fader", text="Effect fader") class SEQUENCER_PT_input(SequencerButtonsPanel): diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 18a8210c68d..6fc3fc547df 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -885,6 +885,17 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co case ID_SEQ: /* sequencer strip */ //SEQ_FAC1: + switch (adrcode) { + case SEQ_FAC1: + propname= "effect_fader"; + break; + case SEQ_FAC_SPEED: + propname= "speed_fader"; + break; + case SEQ_FAC_OPACITY: + propname= "blend_opacity"; + break; + } // poin= &(seq->facf0); // XXX this doesn't seem to be included anywhere in sequencer RNA... break; @@ -1604,6 +1615,7 @@ void do_versions_ipos_to_animato(Main *main) ListBase drivers = {NULL, NULL}; ID *id; AnimData *adt; + Scene *scene; if (main == NULL) { printf("Argh! Main is NULL in do_versions_ipos_to_animato() \n"); @@ -1781,6 +1793,51 @@ void do_versions_ipos_to_animato(Main *main) } } + /* sequence strips */ + for(scene = main->scene.first; scene; scene = scene->id.next) { + if(scene->ed && scene->ed->seqbasep) { + Sequence * seq; + + for(seq = scene->ed->seqbasep->first; + seq; seq = seq->next) { + short adrcode = SEQ_FAC1; + + if (G.f & G_DEBUG) + printf("\tconverting sequence strip %s \n", seq->name+2); + + if (!seq->ipo || !seq->ipo->curve.first) { + seq->flag |= + SEQ_USE_EFFECT_DEFAULT_FADE; + continue; + } + + /* patch adrcode, so that we can map + to different DNA variables later + (semi-hack (tm) ) + */ + switch(seq->type) { + case SEQ_IMAGE: + case SEQ_META: + case SEQ_SCENE: + case SEQ_MOVIE: + case SEQ_COLOR: + adrcode = SEQ_FAC_OPACITY; + break; + case SEQ_SPEED: + adrcode = SEQ_FAC_SPEED; + break; + } + ((IpoCurve*) seq->ipo->curve.first) + ->adrcode = adrcode; + ipo_to_animdata((ID*) seq, seq->ipo, + NULL, NULL); + seq->ipo->id.us--; + seq->ipo = NULL; + } + } + } + + /* textures */ for (id= main->tex.first; id; id= id->next) { Tex *te= (Tex *)id; diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index 1920e82b4ab..39b911d1c37 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -820,16 +820,19 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) return; } - fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, - "effect_fader", 0); - - if (!fcu) { + if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { sh.get_default_fac(seq, cfra, &fac, &facf); if( scene->r.mode & R_FIELDS ); else facf= fac; } else { - fac = facf = evaluate_fcurve(fcu, cfra); - if( scene->r.mode & R_FIELDS ) { - facf = evaluate_fcurve(fcu, cfra + 0.5); + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + if (fcu) { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } + } else { + fac = facf = seq->effect_fader; } } @@ -2122,16 +2125,19 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s se->se2 = 0; se->se3 = 0; - fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, - "effect_fader", 0); - - if (!fcu) { + if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { sh.get_default_fac(seq, cfra, &fac, &facf); if( scene->r.mode & R_FIELDS ); else facf= fac; } else { - fac = facf = evaluate_fcurve(fcu, cfra); - if( scene->r.mode & R_FIELDS ) { - facf = evaluate_fcurve(fcu, cfra + 0.5); + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + if (fcu) { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } + } else { + fac = facf = seq->effect_fader; } } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index cfce8aeb8ed..ba3735834bc 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -513,6 +513,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) seq_tx_set_final_right(seq, end_frame); } + seq->flag |= SEQ_USE_EFFECT_DEFAULT_FADE; + calc_sequence(seq); /* basic defaults */ diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h index 58c26f06e4c..cf3d713c690 100644 --- a/source/blender/makesdna/DNA_ipo_types.h +++ b/source/blender/makesdna/DNA_ipo_types.h @@ -275,6 +275,8 @@ typedef struct Ipo { #define SEQ_TOTNAM 1 #define SEQ_FAC1 1 +#define SEQ_FAC_SPEED 2 +#define SEQ_FAC_OPACITY 3 /* ********* Curve (ID_CU) *********** */ diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 9b38ad6b8cf..3b8182b8759 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -268,6 +268,7 @@ typedef struct SpeedControlVars { #define SEQ_USE_COLOR_BALANCE 262144 #define SEQ_USE_PROXY_CUSTOM_DIR 524288 #define SEQ_USE_PROXY_CUSTOM_FILE 2097152 +#define SEQ_USE_EFFECT_DEFAULT_FADE 4194304 /* deprecated, dont use a flag anymore*/ /*#define SEQ_ACTIVE 1048576*/ diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 9f9298c66f6..2e31facfd19 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -538,6 +538,12 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Effect fader position", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE); + RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + + prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "speed_fader"); RNA_def_property_ui_text(prop, "Speed effect fader position", ""); @@ -637,7 +643,7 @@ static void rna_def_filter_video(StructRNA *srna) RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing."); RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set"); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - + prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->transform"); RNA_def_property_ui_text(prop, "Transform", ""); -- cgit v1.2.3 From edf32a6fb0213bf35748890dfbc84b20d384298e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 29 Nov 2009 18:20:26 +0000 Subject: Gimbal orientation defaults to Normal instead of Global when bone or object is not using euler orientation (Normal is bone axis for pose and Local axis for object, so this is more useful than defaulting to Global). --- source/blender/editors/transform/transform.h | 2 +- .../editors/transform/transform_manipulator.c | 100 +++++++++++---------- .../editors/transform/transform_orientations.c | 7 +- 3 files changed, 59 insertions(+), 50 deletions(-) diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index bf3562cbe65..4b7d24dc1fa 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -534,7 +534,7 @@ void flushTransNodes(TransInfo *t); void flushTransSeq(TransInfo *t); /*********************** exported from transform_manipulator.c ********** */ -void gimbal_axis(struct Object *ob, float gmat[][3]); +int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */ int calc_manipulator_stats(const struct bContext *C); float get_drawsize(struct ARegion *ar, float *co); diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index fe79e9b4285..7530e015496 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -182,60 +182,67 @@ static int test_rotmode_euler(short rotmode) return (ELEM(rotmode, ROT_MODE_AXISANGLE, ROT_MODE_QUAT)) ? 0:1; } -void gimbal_axis(Object *ob, float gmat[][3]) +int gimbal_axis(Object *ob, float gmat[][3]) { - if(ob->mode & OB_MODE_POSE) - { - bPoseChannel *pchan= get_active_posechannel(ob); + if (ob) { + if(ob->mode & OB_MODE_POSE) + { + bPoseChannel *pchan= get_active_posechannel(ob); - if(pchan && test_rotmode_euler(pchan->rotmode)) { - float mat[3][3], tmat[3][3], obmat[3][3]; + if(pchan && test_rotmode_euler(pchan->rotmode)) { + float mat[3][3], tmat[3][3], obmat[3][3]; - eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode); + eulO_to_gimbal_axis(mat, pchan->eul, pchan->rotmode); - /* apply bone transformation */ - mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat); - - if (pchan->parent) - { - float parent_mat[3][3]; + /* apply bone transformation */ + mul_m3_m3m3(tmat, pchan->bone->bone_mat, mat); - copy_m3_m4(parent_mat, pchan->parent->pose_mat); - mul_m3_m3m3(mat, parent_mat, tmat); + if (pchan->parent) + { + float parent_mat[3][3]; - /* needed if object transformation isn't identity */ - copy_m3_m4(obmat, ob->obmat); - mul_m3_m3m3(gmat, obmat, mat); - } - else - { - /* needed if object transformation isn't identity */ - copy_m3_m4(obmat, ob->obmat); - mul_m3_m3m3(gmat, obmat, tmat); - } + copy_m3_m4(parent_mat, pchan->parent->pose_mat); + mul_m3_m3m3(mat, parent_mat, tmat); - normalize_m3(gmat); + /* needed if object transformation isn't identity */ + copy_m3_m4(obmat, ob->obmat); + mul_m3_m3m3(gmat, obmat, mat); + } + else + { + /* needed if object transformation isn't identity */ + copy_m3_m4(obmat, ob->obmat); + mul_m3_m3m3(gmat, obmat, tmat); + } + + normalize_m3(gmat); + return 1; + } } - } - else { - if(test_rotmode_euler(ob->rotmode)) { - - - if (ob->parent) - { - float parent_mat[3][3], amat[3][3]; + else { + if(test_rotmode_euler(ob->rotmode)) { + - eulO_to_gimbal_axis(amat, ob->rot, ob->rotmode); - copy_m3_m4(parent_mat, ob->parent->obmat); - normalize_m3(parent_mat); - mul_m3_m3m3(gmat, parent_mat, amat); - } - else - { - eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode); + if (ob->parent) + { + float parent_mat[3][3], amat[3][3]; + + eulO_to_gimbal_axis(amat, ob->rot, ob->rotmode); + copy_m3_m4(parent_mat, ob->parent->obmat); + normalize_m3(parent_mat); + mul_m3_m3m3(gmat, parent_mat, amat); + return 1; + } + else + { + eulO_to_gimbal_axis(gmat, ob->rot, ob->rotmode); + return 1; + } } } } + + return 0; } @@ -481,10 +488,11 @@ int calc_manipulator_stats(const bContext *C) case V3D_MANIP_GIMBAL: { float mat[3][3]; - unit_m3(mat); - gimbal_axis(ob, mat); - copy_m4_m3(rv3d->twmat, mat); - break; + if (gimbal_axis(ob, mat)) { + copy_m4_m3(rv3d->twmat, mat); + break; + } + /* if not gimbal, fall through to normal */ } case V3D_MANIP_NORMAL: if(obedit || ob->mode & OB_MODE_POSE) { diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 8847d0ccd58..98067291e07 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -523,9 +523,10 @@ void initTransformOrientation(bContext *C, TransInfo *t) case V3D_MANIP_GIMBAL: unit_m3(t->spacemtx); - if(ob) - gimbal_axis(ob, t->spacemtx); - break; + if (gimbal_axis(ob, t->spacemtx)) { + break; + } + /* no gimbal fallthrough to normal */ case V3D_MANIP_NORMAL: if(obedit || (ob && ob->mode & OB_MODE_POSE)) { strcpy(t->spacename, "normal"); -- cgit v1.2.3 From 92b4316708bad0448f4c433ef9c6c2d3cc1f4fb5 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Sun, 29 Nov 2009 19:16:52 +0000 Subject: Merge from COLLADA branch into trunk of -c 24572 (cmake and scons for OpenCollada @ 675, Linux) and 25001 (bone animation import). See corresponding log entries for more detail. --- CMakeLists.txt | 4 +- config/linux2-config.py | 6 +- source/blender/blenkernel/BKE_texture.h | 2 +- source/blender/blenkernel/intern/texture.c | 2 +- source/blender/blenlib/BLI_util.h | 2 +- source/blender/blenlib/intern/util.c | 2 +- source/blender/collada/DocumentExporter.cpp | 2 +- source/blender/collada/DocumentImporter.cpp | 1046 +++++++++++++++++++++++---- source/blender/collada/collada_internal.h | 11 +- 9 files changed, 908 insertions(+), 169 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 100d6065c77..602fec4b759 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -216,8 +216,8 @@ IF(UNIX AND NOT APPLE) IF (WITH_OPENCOLLADA) SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory") - SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}) - SET(OPENCOLLADA_LIB OpenCollada) + SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) + SET(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre ftoa Buffer) SET(OPENCOLLADA_INC ${OPENCOLLADA}) SET(PCRE /usr CACHE FILEPATH "PCRE Directory") SET(PCRE_LIBPATH ${PCRE}/lib) diff --git a/config/linux2-config.py b/config/linux2-config.py index 3eccb913932..3e40b7af416 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -155,9 +155,9 @@ WITH_BF_COLLADA = False BF_COLLADA = '#source/blender/collada' BF_COLLADA_INC = '${BF_COLLADA}' BF_COLLADA_LIB = 'bf_collada' -BF_OPENCOLLADA = '' -BF_OPENCOLLADA_LIB = 'OpenCollada' -BF_OPENCOLLADA_LIBPATH = '/usr/lib' +BF_OPENCOLLADA = '/usr' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre Buffer ftoa' +BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' BF_PCRE = '' BF_PCRE_LIB = 'pcre' BF_PCRE_LIBPATH = '/usr/lib' diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h index b9dc5916e69..95ada45f5d8 100644 --- a/source/blender/blenkernel/BKE_texture.h +++ b/source/blender/blenkernel/BKE_texture.h @@ -62,7 +62,7 @@ int do_colorband(struct ColorBand *coba, float in, float out[4]); void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size); void default_tex(struct Tex *tex); -struct Tex *add_texture(char *name); +struct Tex *add_texture(const char *name); void default_mtex(struct MTex *mtex); struct MTex *add_mtex(void); struct Tex *copy_texture(struct Tex *tex); diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 0171c58f2c6..818e6195049 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -518,7 +518,7 @@ void default_tex(Tex *tex) /* ------------------------------------------------------------------------- */ -Tex *add_texture(char *name) +Tex *add_texture(const char *name) { Tex *tex; diff --git a/source/blender/blenlib/BLI_util.h b/source/blender/blenlib/BLI_util.h index 7642b71eea0..ca483903d46 100644 --- a/source/blender/blenlib/BLI_util.h +++ b/source/blender/blenlib/BLI_util.h @@ -61,7 +61,7 @@ void BLI_split_dirfile_basic(const char *string, char *dir, char *file); void BLI_join_dirfile(char *string, const char *dir, const char *file); void BLI_getlastdir(const char* dir, char *last, int maxlen); int BLI_testextensie(const char *str, const char *ext); -void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len); +void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len); void BLI_newname(char * name, int add); int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen); void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic); diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c index 39afced92bc..5ff4dfe4e96 100644 --- a/source/blender/blenlib/intern/util.c +++ b/source/blender/blenlib/intern/util.c @@ -223,7 +223,7 @@ void BLI_newname(char *name, int add) * defname: the name that should be used by default if none is specified already * delim: the character which acts as a delimeter between parts of the name */ -void BLI_uniquename(ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len) +void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len) { Link *link; char tempname[128]; diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index fac7b2c882a..c3550dfd408 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -673,7 +673,7 @@ protected: copy_m4_m4(local, mat); } - TransformBase::decompose(local, loc, rot, size); + TransformBase::decompose(local, loc, rot, NULL, size); /* // this code used to create a single representing object rotation diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index f50df355a82..9ebcc8b191f 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -1,3 +1,7 @@ +// TODO: +// * name imported objects +// * import object rotation as euler + #include "COLLADAFWRoot.h" #include "COLLADAFWIWriter.h" #include "COLLADAFWStableHeaders.h" @@ -51,6 +55,7 @@ extern "C" #include "BLI_util.h" #include "BKE_displist.h" #include "BLI_math.h" +#include "BKE_scene.h" } #include "BKE_armature.h" #include "BKE_mesh.h" @@ -91,6 +96,7 @@ extern "C" #include // #define COLLADA_DEBUG +#define ARMATURE_TEST char *CustomData_get_layer_name(const struct CustomData *data, int type, int n); @@ -129,8 +135,10 @@ const char *geomTypeToStr(COLLADAFW::Geometry::GeometryType type) return "SPLINE"; case COLLADAFW::Geometry::GEO_TYPE_CONVEX_MESH: return "CONVEX_MESH"; + case COLLADAFW::Geometry::GEO_TYPE_UNKNOWN: + default: + return "UNKNOWN"; } - return "UNKNOWN"; } // works for COLLADAFW::Node, COLLADAFW::Geometry @@ -193,41 +201,16 @@ public: switch(type) { case COLLADAFW::Transformation::TRANSLATE: - { - COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm; - COLLADABU::Math::Vector3& t = tra->getTranslation(); - - unit_m4(cur); - cur[3][0] = (float)t[0]; - cur[3][1] = (float)t[1]; - cur[3][2] = (float)t[2]; - } + dae_translate_to_mat4(tm, cur); break; case COLLADAFW::Transformation::ROTATE: - { - COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm; - COLLADABU::Math::Vector3& raxis = ro->getRotationAxis(); - float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f); - float axis[] = {raxis[0], raxis[1], raxis[2]}; - float quat[4]; - float rot_copy[3][3]; - float mat[3][3]; - axis_angle_to_quat(quat, axis, angle); - - quat_to_mat4( cur,quat); - } + dae_rotate_to_mat4(tm, cur); break; case COLLADAFW::Transformation::SCALE: - { - COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale(); - float size[3] = {(float)s[0], (float)s[1], (float)s[2]}; - size_to_mat4( cur,size); - } + dae_scale_to_mat4(tm, cur); break; case COLLADAFW::Transformation::MATRIX: - { - unit_converter->mat4_from_dae(cur, ((COLLADAFW::Matrix*)tm)->getMatrix()); - } + dae_matrix_to_mat4(tm, cur); break; case COLLADAFW::Transformation::LOOKAT: case COLLADAFW::Transformation::SKEW: @@ -248,6 +231,42 @@ public: } } } + + void dae_rotate_to_mat4(COLLADAFW::Transformation *tm, float m[][4]) + { + COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm; + COLLADABU::Math::Vector3& axis = ro->getRotationAxis(); + float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f); + float ax[] = {axis[0], axis[1], axis[2]}; + // float quat[4]; + // axis_angle_to_quat(quat, axis, angle); + // quat_to_mat4(m, quat); + axis_angle_to_mat4(m, ax, angle); + } + + void dae_translate_to_mat4(COLLADAFW::Transformation *tm, float m[][4]) + { + COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm; + COLLADABU::Math::Vector3& t = tra->getTranslation(); + + unit_m4(m); + + m[3][0] = (float)t[0]; + m[3][1] = (float)t[1]; + m[3][2] = (float)t[2]; + } + + void dae_scale_to_mat4(COLLADAFW::Transformation *tm, float m[][4]) + { + COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale(); + float size[3] = {(float)s[0], (float)s[1], (float)s[2]}; + size_to_mat4(m, size); + } + + void dae_matrix_to_mat4(COLLADAFW::Transformation *tm, float m[][4]) + { + unit_converter->dae_matrix_to_mat4(m, ((COLLADAFW::Matrix*)tm)->getMatrix()); + } }; // only for ArmatureImporter to "see" MeshImporter::get_object_by_geom_uid @@ -261,7 +280,7 @@ public: class AnimationImporterBase { public: - virtual void change_eul_to_quat(Object *ob, bAction *act) = 0; + // virtual void change_eul_to_quat(Object *ob, bAction *act) = 0; }; class ArmatureImporter : private TransformReader @@ -387,7 +406,7 @@ private: for (int i = 0; i < weight.getValuesCount(); i++) weights.push_back(get_float_value(weight, i)); - unit_converter->mat4_from_dae(bind_shape_matrix, skin->getBindShapeMatrix()); + unit_converter->dae_matrix_to_mat4(bind_shape_matrix, skin->getBindShapeMatrix()); } void free() @@ -404,7 +423,7 @@ private: void add_joint(const COLLADABU::Math::Matrix4& matrix) { JointData jd; - unit_converter->mat4_from_dae(jd.inv_bind_mat, matrix); + unit_converter->dae_matrix_to_mat4(jd.inv_bind_mat, matrix); joint_data.push_back(jd); } @@ -478,7 +497,7 @@ private: void link_armature(bContext *C, Object *ob, std::map& joint_by_uid, TransformReader *tm) { - tm->decompose(bind_shape_matrix, ob->loc, ob->rot, ob->size); + tm->decompose(bind_shape_matrix, ob->loc, ob->rot, NULL, ob->size); ob->parent = ob_arm; ob->partype = PARSKEL; @@ -705,6 +724,7 @@ private: } } +#if 0 void set_euler_rotmode() { // just set rotmode = ROT_MODE_EUL on pose channel for each joint @@ -735,6 +755,7 @@ private: } } } +#endif Object *get_empty_for_leaves() { @@ -817,7 +838,7 @@ private: set_leaf_bone_shapes(ob_arm); - set_euler_rotmode(); + // set_euler_rotmode(); } @@ -989,6 +1010,7 @@ public: BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", get_joint_name(node)); } +#if 0 void fix_animation() { /* Change Euler rotation to Quaternion for bone animation */ @@ -999,6 +1021,23 @@ public: anim_importer->change_eul_to_quat(ob, ob->adt->action); } } +#endif + + // gives a world-space mat + bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint) + { + std::map::iterator it; + bool found = false; + for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { + SkinInfo& skin = it->second; + if ((found = skin.get_joint_inv_bind_matrix(m, joint))) { + invert_m4(m); + break; + } + } + + return found; + } }; class MeshImporter : public MeshImporterBase @@ -1077,6 +1116,9 @@ private: } break; + case COLLADAFW::MeshVertexData::DATA_TYPE_UNKNOWN: + default: + fprintf(stderr, "MeshImporter.getUV(): unknown data type\n"); } } }; @@ -1317,7 +1359,7 @@ private: int count_new_tris(COLLADAFW::Mesh *mesh, Mesh *me) { COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); - int i, j, k; + int i, j; int tottri = 0; for (i = 0; i < prim_arr.getCount(); i++) { @@ -1727,11 +1769,14 @@ private: ArmatureImporter *armature_importer; Scene *scene; - std::map > uid_fcurve_map; + std::map > curve_map; std::map uid_animated_map; - std::map > fcurves_actionGroup_map; + // std::map > fcurves_actionGroup_map; + std::map animlist_map; + std::vector unused_curves; + std::map joint_objects; - FCurve *create_fcurve(int array_index, char *rna_path) + FCurve *create_fcurve(int array_index, const char *rna_path) { FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); @@ -1754,6 +1799,105 @@ private: calchandles_fcurve(fcu); } + // create one or several fcurves depending on the number of parameters being animated + void animation_to_fcurves(COLLADAFW::AnimationCurve *curve) + { + COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues(); + COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues(); + // COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues(); + // COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues(); + float fps = (float)FPS; + size_t dim = curve->getOutDimension(); + int i; + + std::vector& fcurves = curve_map[curve->getUniqueId()]; + + if (dim == 1) { + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + // fcu->rna_path = BLI_strdupn(path, strlen(path)); + fcu->array_index = 0; + //fcu->totvert = curve->getKeyCount(); + + // create beztriple for each key + for (i = 0; i < curve->getKeyCount(); i++) { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + + // intangent + // bez.vec[0][0] = get_float_value(intan, i + i) * fps; + // bez.vec[0][1] = get_float_value(intan, i + i + 1); + + // input, output + bez.vec[1][0] = get_float_value(input, i) * fps; + bez.vec[1][1] = get_float_value(output, i); + + // outtangent + // bez.vec[2][0] = get_float_value(outtan, i + i) * fps; + // bez.vec[2][1] = get_float_value(outtan, i + i + 1); + + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + } + + calchandles_fcurve(fcu); + + fcurves.push_back(fcu); + } + else if(dim == 3) { + for (i = 0; i < dim; i++ ) { + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + // fcu->rna_path = BLI_strdupn(path, strlen(path)); + fcu->array_index = 0; + //fcu->totvert = curve->getKeyCount(); + + // create beztriple for each key + for (int j = 0; j < curve->getKeyCount(); j++) { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + + // intangent + // bez.vec[0][0] = get_float_value(intan, j * 6 + i + i) * fps; + // bez.vec[0][1] = get_float_value(intan, j * 6 + i + i + 1); + + // input, output + bez.vec[1][0] = get_float_value(input, j) * fps; + bez.vec[1][1] = get_float_value(output, j * 3 + i); + + // outtangent + // bez.vec[2][0] = get_float_value(outtan, j * 6 + i + i) * fps; + // bez.vec[2][1] = get_float_value(outtan, j * 6 + i + i + 1); + + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + } + + calchandles_fcurve(fcu); + + fcurves.push_back(fcu); + } + } + + for (std::vector::iterator it = fcurves.begin(); it != fcurves.end(); it++) + unused_curves.push_back(*it); + } + + void fcurve_deg_to_rad(FCurve *cu) + { + for (int i = 0; i < cu->totvert; i++) { + // TODO convert handles too + cu->bezt[i].vec[1][1] *= M_PI / 180.0f; + } + } + +#if 0 void make_fcurves_from_animation(COLLADAFW::AnimationCurve *curve, COLLADAFW::FloatOrDoubleArray& input, COLLADAFW::FloatOrDoubleArray& output, @@ -1762,7 +1906,7 @@ private: { int i; // char *path = "location"; - std::vector& fcurves = uid_fcurve_map[curve->getUniqueId()]; + std::vector& fcurves = curve_map[curve->getUniqueId()]; if (dim == 1) { // create fcurve @@ -1831,49 +1975,36 @@ private: } } } +#endif void add_fcurves_to_object(Object *ob, std::vector& curves, char *rna_path, int array_index, Animation *animated) { - ID *id = &ob->id; bAction *act; - bActionGroup *grp = NULL; - if (!ob->adt || !ob->adt->action) act = verify_adt_action(id, 1); - else act = verify_adt_action(id, 0); - - if (!ob->adt || !ob->adt->action) { - fprintf(stderr, "Cannot create anim data or action for this object. \n"); - return; - } + if (!ob->adt || !ob->adt->action) act = verify_adt_action((ID*)&ob->id, 1); + else act = ob->adt->action; - FCurve *fcu; std::vector::iterator it; - int i = 0; + int i; +#if 0 char *p = strstr(rna_path, "rotation_euler"); bool is_rotation = p && *(p + strlen("rotation_euler")) == '\0'; + + // convert degrees to radians for rotation + if (is_rotation) + fcurve_deg_to_rad(fcu); +#endif - for (it = curves.begin(); it != curves.end(); it++) { - fcu = *it; + for (it = curves.begin(), i = 0; it != curves.end(); it++, i++) { + FCurve *fcu = *it; fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path)); if (array_index == -1) fcu->array_index = i; else fcu->array_index = array_index; - - // convert degrees to radians for rotation - if (is_rotation) { - for(int j = 0; j < fcu->totvert; j++) { - float rot_intan = fcu->bezt[j].vec[0][1]; - float rot_output = fcu->bezt[j].vec[1][1]; - float rot_outtan = fcu->bezt[j].vec[2][1]; - fcu->bezt[j].vec[0][1] = rot_intan * M_PI / 180.0f; - fcu->bezt[j].vec[1][1] = rot_output * M_PI / 180.0f; - fcu->bezt[j].vec[2][1] = rot_outtan * M_PI / 180.0f; - } - } - + if (ob->type == OB_ARMATURE) { - bAction *act = ob->adt->action; + bActionGroup *grp = NULL; const char *bone_name = get_joint_name(animated->node); if (bone_name) { @@ -1886,7 +2017,7 @@ private: grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup"); grp->flag = AGRP_SELECTED; - BLI_snprintf(grp->name, sizeof(grp->name), bone_name); + BLI_strncpy(grp->name, bone_name, sizeof(grp->name)); BLI_addtail(&act->groups, grp); BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64); @@ -1896,15 +2027,18 @@ private: action_groups_add_channel(act, grp, fcu); } +#if 0 if (is_rotation) { fcurves_actionGroup_map[grp].push_back(fcu); } +#endif } else { BLI_addtail(&act->curves, fcu); } - i++; + // curve is used, so remove it from unused_curves + unused_curves.erase(std::remove(unused_curves.begin(), unused_curves.end(), fcu), unused_curves.end()); } } public: @@ -1912,13 +2046,20 @@ public: AnimationImporter(UnitConverter *conv, ArmatureImporter *arm, Scene *scene) : TransformReader(conv), armature_importer(arm), scene(scene) { } - bool write_animation( const COLLADAFW::Animation* anim ) + ~AnimationImporter() { - float fps = (float)FPS; + // free unused FCurves + for (std::vector::iterator it = unused_curves.begin(); it != unused_curves.end(); it++) + free_fcurve(*it); + + if (unused_curves.size()) + fprintf(stderr, "removed %u unused curves\n", unused_curves.size()); + } + bool write_animation(const COLLADAFW::Animation* anim) + { if (anim->getAnimationType() == COLLADAFW::Animation::ANIMATION_CURVE) { COLLADAFW::AnimationCurve *curve = (COLLADAFW::AnimationCurve*)anim; - size_t dim = curve->getOutDimension(); // XXX Don't know if it's necessary // Should we check outPhysicalDimension? @@ -1927,11 +2068,6 @@ public: return true; } - COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues(); - COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues(); - COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues(); - COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues(); - // a curve can have mixed interpolation type, // in this case curve->getInterpolationTypes returns a list of interpolation types per key COLLADAFW::AnimationCurve::InterpolationType interp = curve->getInterpolationType(); @@ -1939,17 +2075,11 @@ public: if (interp != COLLADAFW::AnimationCurve::INTERPOLATION_MIXED) { switch (interp) { case COLLADAFW::AnimationCurve::INTERPOLATION_LINEAR: - // support this - make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps); - break; case COLLADAFW::AnimationCurve::INTERPOLATION_BEZIER: - // and this - make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps); + animation_to_fcurves(curve); break; - case COLLADAFW::AnimationCurve::INTERPOLATION_CARDINAL: - case COLLADAFW::AnimationCurve::INTERPOLATION_HERMITE: - case COLLADAFW::AnimationCurve::INTERPOLATION_BSPLINE: - case COLLADAFW::AnimationCurve::INTERPOLATION_STEP: + default: + // TODO there're also CARDINAL, HERMITE, BSPLINE and STEP types fprintf(stderr, "CARDINAL, HERMITE, BSPLINE and STEP anim interpolation types not supported yet.\n"); break; } @@ -1967,19 +2097,22 @@ public: } // called on post-process stage after writeVisualScenes - bool write_animation_list( const COLLADAFW::AnimationList* animationList ) + bool write_animation_list(const COLLADAFW::AnimationList* animlist) { - const COLLADAFW::UniqueId& anim_list_id = animationList->getUniqueId(); + const COLLADAFW::UniqueId& animlist_id = animlist->getUniqueId(); + + animlist_map[animlist_id] = animlist; - // possible in case we cannot interpret some transform - if (uid_animated_map.find(anim_list_id) == uid_animated_map.end()) { +#if 0 + // should not happen + if (uid_animated_map.find(animlist_id) == uid_animated_map.end()) { return true; } // for bones rna_path is like: pose.bones["bone-name"].rotation // what does this AnimationList animate? - Animation& animated = uid_animated_map[anim_list_id]; + Animation& animated = uid_animated_map[animlist_id]; Object *ob = animated.ob; char rna_path[100]; @@ -2000,26 +2133,28 @@ public: is_joint = true; } - const COLLADAFW::AnimationList::AnimationBindings& bindings = animationList->getAnimationBindings(); + const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings(); switch (animated.tm->getTransformationType()) { case COLLADAFW::Transformation::TRANSLATE: + case COLLADAFW::Transformation::SCALE: { + bool loc = animated.tm->getTransformationType() == COLLADAFW::Transformation::TRANSLATE; if (is_joint) - BLI_snprintf(rna_path, sizeof(rna_path), "%s.location", joint_path); + BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, loc ? "location" : "scale"); else - BLI_strncpy(rna_path, "location", sizeof(rna_path)); + BLI_strncpy(rna_path, loc ? "location" : "scale", sizeof(rna_path)); for (int i = 0; i < bindings.getCount(); i++) { const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; COLLADAFW::UniqueId anim_uid = binding.animation; - if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { + if (curve_map.find(anim_uid) == curve_map.end()) { fprintf(stderr, "Cannot find FCurve by animation UID.\n"); continue; } - std::vector& fcurves = uid_fcurve_map[anim_uid]; + std::vector& fcurves = curve_map[anim_uid]; switch (binding.animationClass) { case COLLADAFW::AnimationList::POSITION_X: @@ -2035,8 +2170,8 @@ public: add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated); break; default: - fprintf(stderr, "AnimationClass %d is not supported for TRANSLATE transformation.\n", - binding.animationClass); + fprintf(stderr, "AnimationClass %d is not supported for %s.\n", + binding.animationClass, loc ? "TRANSLATE" : "SCALE"); } } } @@ -2055,12 +2190,12 @@ public: const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; COLLADAFW::UniqueId anim_uid = binding.animation; - if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { + if (curve_map.find(anim_uid) == curve_map.end()) { fprintf(stderr, "Cannot find FCurve by animation UID.\n"); continue; } - std::vector& fcurves = uid_fcurve_map[anim_uid]; + std::vector& fcurves = curve_map[anim_uid]; switch (binding.animationClass) { case COLLADAFW::AnimationList::ANGLE: @@ -2083,51 +2218,13 @@ public: } } break; - case COLLADAFW::Transformation::SCALE: - { - if (is_joint) - BLI_snprintf(rna_path, sizeof(rna_path), "%s.scale", joint_path); - else - BLI_strncpy(rna_path, "scale", sizeof(rna_path)); - - // same as for TRANSLATE - for (int i = 0; i < bindings.getCount(); i++) { - const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; - COLLADAFW::UniqueId anim_uid = binding.animation; - - if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { - fprintf(stderr, "Cannot find FCurve by animation UID.\n"); - continue; - } - - std::vector& fcurves = uid_fcurve_map[anim_uid]; - - switch (binding.animationClass) { - case COLLADAFW::AnimationList::POSITION_X: - add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated); - break; - case COLLADAFW::AnimationList::POSITION_Y: - add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated); - break; - case COLLADAFW::AnimationList::POSITION_Z: - add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated); - break; - case COLLADAFW::AnimationList::POSITION_XYZ: - add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated); - break; - default: - fprintf(stderr, "AnimationClass %d is not supported for SCALE transformation.\n", - binding.animationClass); - } - } - } - break; case COLLADAFW::Transformation::MATRIX: case COLLADAFW::Transformation::SKEW: case COLLADAFW::Transformation::LOOKAT: fprintf(stderr, "Animation of MATRIX, SKEW and LOOKAT transformations is not supported yet.\n"); break; } +#endif return true; } @@ -2137,9 +2234,10 @@ public: float mat[4][4]; TransformReader::get_node_mat(mat, node, &uid_animated_map, ob); if (ob) - TransformReader::decompose(mat, ob->loc, ob->rot, ob->size); + TransformReader::decompose(mat, ob->loc, ob->rot, NULL, ob->size); } +#if 0 virtual void change_eul_to_quat(Object *ob, bAction *act) { bActionGroup *grp; @@ -2163,7 +2261,7 @@ public: char rna_path[100]; BLI_snprintf(joint_path, sizeof(joint_path), "pose.bones[\"%s\"]", grp->name); - BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path); + BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_quaternion", joint_path); FCurve *quatcu[4] = { create_fcurve(0, rna_path), @@ -2172,6 +2270,12 @@ public: create_fcurve(3, rna_path) }; + bPoseChannel *chan = get_pose_channel(ob->pose, grp->name); + + float m4[4][4], irest[3][3]; + invert_m4_m4(m4, chan->bone->arm_mat); + copy_m3_m4(irest, m4); + for (i = 0; i < 3; i++) { FCurve *cu = eulcu[i]; @@ -2187,9 +2291,17 @@ public: eulcu[2] ? evaluate_fcurve(eulcu[2], frame) : 0.0f }; - float quat[4]; + // make eul relative to bone rest pose + float rot[3][3], rel[3][3], quat[4]; + + /*eul_to_mat3(rot, eul); + + mul_m3_m3m3(rel, irest, rot); - eul_to_quat( quat,eul); + mat3_to_quat(quat, rel); + */ + + eul_to_quat(quat, eul); for (int k = 0; k < 4; k++) create_bezt(quatcu[k], frame, quat[k]); @@ -2205,7 +2317,7 @@ public: free_fcurve(eulcu[i]); } - get_pose_channel(ob->pose, grp->name)->rotmode = ROT_MODE_QUAT; + chan->rotmode = ROT_MODE_QUAT; for (i = 0; i < 4; i++) action_groups_add_channel(act, grp, quatcu[i]); @@ -2215,7 +2327,581 @@ public: for (pchan = (bPoseChannel*)ob->pose->chanbase.first; pchan; pchan = pchan->next) { pchan->rotmode = ROT_MODE_QUAT; } - } + } +#endif + + // prerequisites: + // animlist_map - map animlist id -> animlist + // curve_map - map anim id -> curve(s) +#ifdef ARMATURE_TEST + Object *translate_animation(COLLADAFW::Node *node, + std::map& object_map, + std::map& root_map, + COLLADAFW::Transformation::TransformationType tm_type, + Object *par_job = NULL) +#else + void translate_animation(COLLADAFW::Node *node, + std::map& object_map, + std::map& root_map, + COLLADAFW::Transformation::TransformationType tm_type) +#endif + { + bool is_rotation = tm_type == COLLADAFW::Transformation::ROTATE; + bool is_joint = node->getType() == COLLADAFW::Node::JOINT; + COLLADAFW::Node *root = root_map.find(node->getUniqueId()) == root_map.end() ? node : root_map[node->getUniqueId()]; + Object *ob = is_joint ? armature_importer->get_armature_for_joint(node) : object_map[node->getUniqueId()]; + const char *bone_name = is_joint ? get_joint_name(node) : NULL; + + if (!ob) { + fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str()); +#ifdef ARMATURE_TEST + return NULL; +#else + return; +#endif + } + + // frames at which to sample + std::vector frames; + + // for each , , etc. there is a separate Transformation + const COLLADAFW::TransformationPointerArray& tms = node->getTransformations(); + + std::vector old_curves; + + int i; + + // find frames at which to sample plus convert all keys to radians + for (i = 0; i < tms.getCount(); i++) { + COLLADAFW::Transformation *tm = tms[i]; + COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); + + if (type == tm_type) { + const COLLADAFW::UniqueId& listid = tm->getAnimationList(); + + if (animlist_map.find(listid) != animlist_map.end()) { + const COLLADAFW::AnimationList *animlist = animlist_map[listid]; + const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings(); + + if (bindings.getCount()) { + for (int j = 0; j < bindings.getCount(); j++) { + std::vector& curves = curve_map[bindings[j].animation]; + bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ); + + if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) { + std::vector::iterator iter; + + for (iter = curves.begin(); iter != curves.end(); iter++) { + FCurve *fcu = *iter; + + if (is_rotation) + fcurve_deg_to_rad(fcu); + + for (int k = 0; k < fcu->totvert; k++) { + float fra = fcu->bezt[k].vec[1][0]; + if (std::find(frames.begin(), frames.end(), fra) == frames.end()) + frames.push_back(fra); + } + } + } + else { + fprintf(stderr, "expected 1 or 3 curves, got %u\n", curves.size()); + } + + for (std::vector::iterator it = curves.begin(); it != curves.end(); it++) + old_curves.push_back(*it); + } + } + } + } + } + + sort(frames.begin(), frames.end()); + + float irest_dae[4][4]; + float rest[4][4], irest[4][4]; + + if (is_joint) { + if (is_joint) + get_joint_rest_mat(irest_dae, root, node); + else + evaluate_transform_at_frame(irest_dae, node, 0.0f); + invert_m4(irest_dae); + + Bone *bone = get_named_bone((bArmature*)ob->data, bone_name); + if (!bone) { + fprintf(stderr, "cannot find bone \"%s\"", bone_name); +#ifdef ARMATURE_TEST + return NULL; +#else + return; +#endif + } + + unit_m4(rest); + copy_m4_m4(rest, bone->arm_mat); + invert_m4_m4(irest, rest); + } + + char rna_path[200]; + +#ifdef ARMATURE_TEST + Object *job = get_joint_object(root, node, par_job); + FCurve *job_curves[4]; +#endif + + if (frames.size() == 0) { +#ifdef ARMATURE_TEST + return job; +#else + return; +#endif + } + + const char *tm_str = NULL; + switch (tm_type) { + case COLLADAFW::Transformation::ROTATE: + tm_str = "rotation_quaternion"; + break; + case COLLADAFW::Transformation::SCALE: + tm_str = "scale"; + break; + case COLLADAFW::Transformation::TRANSLATE: + tm_str = "location"; + break; + default: +#ifdef ARMATURE_TEST + return job; +#else + return; +#endif + } + + if (is_joint) { + char joint_path[200]; + armature_importer->get_rna_path_for_joint(node, joint_path, sizeof(joint_path)); + BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str); + } + else { + strcpy(rna_path, tm_str); + } + + // new curves + FCurve *newcu[4]; + int totcu = is_rotation ? 4 : 3; + + for (i = 0; i < totcu; i++) { + newcu[i] = create_fcurve(i, rna_path); +#ifdef ARMATURE_TEST + job_curves[i] = create_fcurve(i, tm_str); +#endif + } + + std::vector::iterator it; + + // sample values at each frame + for (it = frames.begin(); it != frames.end(); it++) { + float fra = *it; + + float mat[4][4]; + + unit_m4(mat); + + // calc object-space mat + evaluate_transform_at_frame(mat, node, fra); + + // for joints, we need a special matrix + if (is_joint) { + // special matrix: iR * M * iR_dae * R + // where R, iR are bone rest and inverse rest mats in world space (Blender bones), + // iR_dae is joint inverse rest matrix (DAE) and M is an evaluated joint world-space matrix (DAE) + float temp[4][4], par[4][4]; + + // calc M + calc_joint_parent_mat_rest(par, NULL, root, node); + mul_m4_m4m4(temp, mat, par); + + // evaluate_joint_world_transform_at_frame(temp, NULL, , node, fra); + + // calc special matrix + mul_serie_m4(mat, irest, temp, irest_dae, rest, NULL, NULL, NULL, NULL); + } + + float val[4]; + + switch (tm_type) { + case COLLADAFW::Transformation::ROTATE: + mat4_to_quat(val, mat); + break; + case COLLADAFW::Transformation::SCALE: + mat4_to_size(val, mat); + break; + case COLLADAFW::Transformation::TRANSLATE: + copy_v3_v3(val, mat[3]); + break; + default: + break; + } + + // add 4 or 3 keys + for (i = 0; i < totcu; i++) { + add_bezt(newcu[i], fra, val[i]); + } + +#ifdef ARMATURE_TEST + if (is_joint) { + evaluate_transform_at_frame(mat, node, fra); + + switch (tm_type) { + case COLLADAFW::Transformation::ROTATE: + mat4_to_quat(val, mat); + break; + case COLLADAFW::Transformation::SCALE: + mat4_to_size(val, mat); + break; + case COLLADAFW::Transformation::TRANSLATE: + copy_v3_v3(val, mat[3]); + break; + default: + break; + } + + for (i = 0; i < totcu; i++) + add_bezt(job_curves[i], fra, val[i]); + } +#endif + } + + verify_adt_action((ID*)&ob->id, 1); + + ListBase *curves = &ob->adt->action->curves; + // no longer needed +#if 0 + // remove old curves + for (std::vector::iterator it = old_curves.begin(); it != old_curves.end(); it++) { + if (is_joint) + action_groups_remove_channel(ob->adt->action, *it); + else + BLI_remlink(curves, *it); + + // std::remove(unused_curves.begin(), unused_curves.end(), *it); + // free_fcurve(*it); + } +#endif + + // add curves + for (i = 0; i < totcu; i++) { + if (is_joint) + add_bone_fcurve(ob, node, newcu[i]); + else + BLI_addtail(curves, newcu[i]); + +#ifdef ARMATURE_TEST + if (is_joint) + BLI_addtail(&job->adt->action->curves, job_curves[i]); +#endif + } + + if (is_rotation) { + if (is_joint) { + bPoseChannel *chan = get_pose_channel(ob->pose, bone_name); + chan->rotmode = ROT_MODE_QUAT; + } + else { + ob->rotmode = ROT_MODE_QUAT; + } + } + +#ifdef ARMATURE_TEST + return job; +#endif + } + + // internal, better make it private + // warning: evaluates only rotation + // prerequisites: animlist_map, curve_map + void evaluate_transform_at_frame(float mat[4][4], COLLADAFW::Node *node, float fra) + { + const COLLADAFW::TransformationPointerArray& tms = node->getTransformations(); + + unit_m4(mat); + + for (int i = 0; i < tms.getCount(); i++) { + COLLADAFW::Transformation *tm = tms[i]; + COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); + float m[4][4]; + + unit_m4(m); + + if (!evaluate_animation(tm, m, fra)) { + switch (type) { + case COLLADAFW::Transformation::ROTATE: + dae_rotate_to_mat4(tm, m); + break; + case COLLADAFW::Transformation::TRANSLATE: + dae_translate_to_mat4(tm, m); + break; + case COLLADAFW::Transformation::SCALE: + dae_scale_to_mat4(tm, m); + break; + case COLLADAFW::Transformation::MATRIX: + dae_matrix_to_mat4(tm, m); + break; + default: + fprintf(stderr, "unsupported transformation type %d\n", type); + } + } + + float temp[4][4]; + copy_m4_m4(temp, mat); + + mul_m4_m4m4(mat, m, temp); + } + } + + bool evaluate_animation(COLLADAFW::Transformation *tm, float mat[4][4], float fra) + { + const COLLADAFW::UniqueId& listid = tm->getAnimationList(); + + if (animlist_map.find(listid) != animlist_map.end()) { + const COLLADAFW::AnimationList *animlist = animlist_map[listid]; + const COLLADAFW::AnimationList::AnimationBindings& bindings = animlist->getAnimationBindings(); + + if (bindings.getCount()) { + for (int j = 0; j < bindings.getCount(); j++) { + std::vector& curves = curve_map[bindings[j].animation]; + COLLADAFW::AnimationList::AnimationClass animclass = bindings[j].animationClass; + COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); + bool xyz = ((type == COLLADAFW::Transformation::TRANSLATE || type == COLLADAFW::Transformation::SCALE) && bindings[j].animationClass == COLLADAFW::AnimationList::POSITION_XYZ); + + if (type == COLLADAFW::Transformation::ROTATE) { + if (curves.size() != 1) { + fprintf(stderr, "expected 1 curve, got %u\n", curves.size()); + } + else { + if (animclass == COLLADAFW::AnimationList::ANGLE) { + COLLADABU::Math::Vector3& axis = ((COLLADAFW::Rotate*)tm)->getRotationAxis(); + float ax[3] = {axis[0], axis[1], axis[2]}; + float angle = evaluate_fcurve(curves[0], fra); + axis_angle_to_mat4(mat, ax, angle); + + return true; + } + else { + // TODO support other animclasses + fprintf(stderr, " animclass %d is not supported yet\n", bindings[j].animationClass); + } + } + } + else if (type == COLLADAFW::Transformation::SCALE || type == COLLADAFW::Transformation::TRANSLATE) { + if ((!xyz && curves.size() == 1) || (xyz && curves.size() == 3)) { + bool animated = true; + bool scale = (type == COLLADAFW::Transformation::SCALE); + + float vec[3] = {0.0f, 0.0f, 0.0f}; + if (scale) + vec[0] = vec[1] = vec[2] = 1.0f; + + switch (animclass) { + case COLLADAFW::AnimationList::POSITION_X: + vec[0] = evaluate_fcurve(curves[0], fra); + break; + case COLLADAFW::AnimationList::POSITION_Y: + vec[1] = evaluate_fcurve(curves[0], fra); + break; + case COLLADAFW::AnimationList::POSITION_Z: + vec[2] = evaluate_fcurve(curves[0], fra); + break; + case COLLADAFW::AnimationList::POSITION_XYZ: + vec[0] = evaluate_fcurve(curves[0], fra); + vec[1] = evaluate_fcurve(curves[1], fra); + vec[2] = evaluate_fcurve(curves[2], fra); + break; + default: + fprintf(stderr, "<%s> animclass %d is not supported yet\n", scale ? "scale" : "translate", animclass); + animated = false; + break; + } + + if (animated) { + if (scale) + size_to_mat4(mat, vec); + else + copy_v3_v3(mat[3], vec); + } + + return animated; + } + else { + fprintf(stderr, "expected 1 or 3 curves, got %u, animclass is %d\n", curves.size(), animclass); + } + } + else { + // not very useful for user + fprintf(stderr, "animation of transformation %d is not supported yet\n", type); + } + } + } + } + + return false; + } + + // gives a world-space mat of joint at rest position + void get_joint_rest_mat(float mat[4][4], COLLADAFW::Node *root, COLLADAFW::Node *node) + { + // if bind mat is not available, + // use "current" node transform, i.e. all those tms listed inside + if (!armature_importer->get_joint_bind_mat(mat, node)) { + float par[4][4], m[4][4]; + + calc_joint_parent_mat_rest(par, NULL, root, node); + get_node_mat(m, node, NULL, NULL); + mul_m4_m4m4(mat, m, par); + } + } + + // gives a world-space mat, end's mat not included + bool calc_joint_parent_mat_rest(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end) + { + float m[4][4]; + + if (node == end) { + par ? copy_m4_m4(mat, par) : unit_m4(mat); + return true; + } + + // use bind matrix if available or calc "current" world mat + if (!armature_importer->get_joint_bind_mat(m, node)) { + float temp[4][4]; + get_node_mat(temp, node, NULL, NULL); + mul_m4_m4m4(m, temp, par); + } + + COLLADAFW::NodePointerArray& children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + if (calc_joint_parent_mat_rest(mat, m, children[i], end)) + return true; + } + + return false; + } + +#ifdef ARMATURE_TEST + Object *get_joint_object(COLLADAFW::Node *root, COLLADAFW::Node *node, Object *par_job) + { + if (joint_objects.find(node->getUniqueId()) == joint_objects.end()) { + Object *job = add_object(scene, OB_EMPTY); + + rename_id((ID*)&job->id, (char*)get_joint_name(node)); + + job->lay = object_in_scene(job, scene)->lay = 2; + + mul_v3_fl(job->size, 0.5f); + job->recalc |= OB_RECALC_OB; + + verify_adt_action((ID*)&job->id, 1); + + job->rotmode = ROT_MODE_QUAT; + + float mat[4][4]; + get_joint_rest_mat(mat, root, node); + + if (par_job) { + float temp[4][4], ipar[4][4]; + invert_m4_m4(ipar, par_job->obmat); + copy_m4_m4(temp, mat); + mul_m4_m4m4(mat, temp, ipar); + } + + TransformBase::decompose(mat, job->loc, NULL, job->quat, job->size); + + if (par_job) { + job->parent = par_job; + + par_job->recalc |= OB_RECALC_OB; + job->parsubstr[0] = 0; + } + + where_is_object(scene, job); + + // after parenting and layer change + DAG_scene_sort(scene); + + joint_objects[node->getUniqueId()] = job; + } + + return joint_objects[node->getUniqueId()]; + } +#endif + +#if 0 + // recursively evaluates joint tree until end is found, mat then is world-space matrix of end + // mat must be identity on enter, node must be root + bool evaluate_joint_world_transform_at_frame(float mat[4][4], float par[4][4], COLLADAFW::Node *node, COLLADAFW::Node *end, float fra) + { + float m[4][4]; + if (par) { + float temp[4][4]; + evaluate_transform_at_frame(temp, node, node == end ? fra : 0.0f); + mul_m4_m4m4(m, temp, par); + } + else { + evaluate_transform_at_frame(m, node, node == end ? fra : 0.0f); + } + + if (node == end) { + copy_m4_m4(mat, m); + return true; + } + else { + COLLADAFW::NodePointerArray& children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + if (evaluate_joint_world_transform_at_frame(mat, m, children[i], end, fra)) + return true; + } + } + + return false; + } +#endif + + void add_bone_fcurve(Object *ob, COLLADAFW::Node *node, FCurve *fcu) + { + const char *bone_name = get_joint_name(node); + bAction *act = ob->adt->action; + + /* try to find group */ + bActionGroup *grp = action_groups_find_named(act, bone_name); + + /* no matching groups, so add one */ + if (grp == NULL) { + /* Add a new group, and make it active */ + grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup"); + + grp->flag = AGRP_SELECTED; + BLI_strncpy(grp->name, bone_name, sizeof(grp->name)); + + BLI_addtail(&act->groups, grp); + BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64); + } + + /* add F-Curve to group */ + action_groups_add_channel(act, grp, fcu); + } + + void add_bezt(FCurve *fcu, float fra, float value) + { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + bez.vec[1][0] = fra; + bez.vec[1][1] = value; + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + calchandles_fcurve(fcu); + } }; /* @@ -2245,6 +2931,11 @@ private: std::map uid_camera_map; std::map uid_lamp_map; std::map material_texture_mapping_map; + std::map object_map; + std::vector vscenes; + + std::map root_map; // find root joint by child joint uid, for bone tree evaluation during resampling + // animation // std::map > uid_fcurve_map; // Nodes don't share AnimationLists (Arystan) @@ -2253,7 +2944,7 @@ private: public: /** Constructor. */ - Writer(bContext *C, const char *filename) : mContext(C), mFilename(filename), + Writer(bContext *C, const char *filename) : mFilename(filename), mContext(C), armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)), mesh_importer(&armature_importer, CTX_data_scene(C)), anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) {} @@ -2295,8 +2986,51 @@ public: /** This method is called after the last write* method. No other methods will be called after this.*/ virtual void finish() { +#if 0 armature_importer.fix_animation(); +#endif + + for (std::vector::iterator it = vscenes.begin(); it != vscenes.end(); it++) { + const COLLADAFW::NodePointerArray& roots = (*it)->getRootNodes(); + + for (int i = 0; i < roots.getCount(); i++) + translate_anim_recursive(roots[i]); + } + + } + + +#ifdef ARMATURE_TEST + void translate_anim_recursive(COLLADAFW::Node *node, COLLADAFW::Node *par = NULL, Object *parob = NULL) + { + if (par && par->getType() == COLLADAFW::Node::JOINT) { + // par is root if there's no corresp. key in root_map + if (root_map.find(par->getUniqueId()) == root_map.end()) + root_map[node->getUniqueId()] = par; + else + root_map[node->getUniqueId()] = root_map[par->getUniqueId()]; + } + + COLLADAFW::Transformation::TransformationType types[] = { + COLLADAFW::Transformation::ROTATE, + COLLADAFW::Transformation::SCALE, + COLLADAFW::Transformation::TRANSLATE + }; + + int i; + Object *ob; + + for (i = 0; i < 3; i++) + ob = anim_importer.translate_animation(node, object_map, root_map, types[i]); + + COLLADAFW::NodePointerArray &children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + translate_anim_recursive(children[i], node, ob); + } } +#else + +#endif /** When this method is called, the writer must write the global document asset. @return The writer should return true, if writing succeeded, false otherwise.*/ @@ -2396,11 +3130,11 @@ public: // check if object is not NULL if (!ob) return; + + object_map[node->getUniqueId()] = ob; // if par was given make this object child of the previous if (par && ob) { - Object workob; - ob->parent = par; // doing what 'set parent' operator does @@ -2424,7 +3158,7 @@ public: @return The writer should return true, if writing succeeded, false otherwise.*/ virtual bool writeVisualScene ( const COLLADAFW::VisualScene* visualScene ) { - // This method is guaranteed to be called _after_ writeGeometry, writeMaterial, etc. + // this method called on post process after writeGeometry, writeMaterial, etc. // for each in : // create an Object @@ -2434,15 +3168,15 @@ public: // writeGeometry because does not reference , // we link Objects with Meshes here + vscenes.push_back(visualScene); + // TODO: create a new scene except the selected - use current blender // scene for it Scene *sce = CTX_data_scene(mContext); + const COLLADAFW::NodePointerArray& roots = visualScene->getRootNodes(); - for (int i = 0; i < visualScene->getRootNodes().getCount(); i++) { - COLLADAFW::Node *node = visualScene->getRootNodes()[i]; - const COLLADAFW::Node::NodeType& type = node->getType(); - - write_node(node, NULL, sce, NULL); + for (int i = 0; i < roots.getCount(); i++) { + write_node(roots[i], NULL, sce, NULL); } armature_importer.make_armatures(mContext); @@ -2494,7 +3228,7 @@ public: ma->mtex[i] = add_mtex(); ma->mtex[i]->texco = TEXCO_UV; - ma->mtex[i]->tex = add_texture("texture"); + ma->mtex[i]->tex = add_texture("Texture"); ma->mtex[i]->tex->type = TEX_IMAGE; ma->mtex[i]->tex->imaflag &= ~TEX_USEALPHA; ma->mtex[i]->tex->ima = uid_image_map[ima_uid]; @@ -2799,12 +3533,14 @@ public: // this function is called only for animations that pass COLLADAFW::validate virtual bool writeAnimation( const COLLADAFW::Animation* anim ) { + // return true; return anim_importer.write_animation(anim); } // called on post-process stage after writeVisualScenes virtual bool writeAnimationList( const COLLADAFW::AnimationList* animationList ) { + // return true; return anim_importer.write_animation_list(animationList); } diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h index 32c3e7af874..278cd37ac66 100644 --- a/source/blender/collada/collada_internal.h +++ b/source/blender/collada/collada_internal.h @@ -26,7 +26,7 @@ public: // TODO need also for angle conversion, time conversion... - void mat4_from_dae(float out[][4], const COLLADABU::Math::Matrix4& in) + void dae_matrix_to_mat4(float out[][4], const COLLADABU::Math::Matrix4& in) { // in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h) // so here, to make a blender matrix, we swap columns and rows @@ -58,10 +58,13 @@ public: class TransformBase { public: - void decompose(float mat[][4], float *loc, float *rot, float *size) + void decompose(float mat[][4], float *loc, float eul[3], float quat[4], float *size) { - mat4_to_size( size,mat); - mat4_to_eul( rot,mat); + mat4_to_size(size, mat); + if (eul) + mat4_to_eul(eul, mat); + if (quat) + mat4_to_quat(quat, mat); copy_v3_v3(loc, mat[3]); } }; -- cgit v1.2.3 From cd154da9732962870339952898499ed1b1c32d93 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 29 Nov 2009 22:16:29 +0000 Subject: 1. Extend option for 3d view border select now does something (default True to keep same behavior) 2. Add action parameter to Select_All_Toggle operators, rename to Select_All. Options are Toggle (default), Select, Deselect, Invert (same as select swap). This makes it possible to map separate hotkeys for select all and deselect all. NOTE for Aligorith: I didn't change animation operators for select_all which already had an Invert operator. These should be fixed eventually. --- release/scripts/io/import_anim_bvh.py | 4 +- release/scripts/io/import_scene_obj.py | 4 +- release/scripts/ui/space_image.py | 2 +- release/scripts/ui/space_view3d.py | 16 ++--- source/blender/editors/animation/anim_markers.c | 51 +++++++------- source/blender/editors/armature/armature_intern.h | 4 +- source/blender/editors/armature/armature_ops.c | 8 +-- source/blender/editors/armature/editarmature.c | 70 ++++++++++++------ source/blender/editors/curve/curve_intern.h | 2 +- source/blender/editors/curve/curve_ops.c | 4 +- source/blender/editors/curve/editcurve.c | 82 +++++++++++++++++++--- source/blender/editors/include/ED_curve.h | 4 ++ source/blender/editors/include/ED_mesh.h | 5 +- source/blender/editors/include/ED_object.h | 4 ++ source/blender/editors/include/ED_particle.h | 2 +- source/blender/editors/mesh/editface.c | 50 ++++++++----- source/blender/editors/mesh/editmesh_mods.c | 33 +++++++-- source/blender/editors/mesh/mesh_intern.h | 2 +- source/blender/editors/mesh/mesh_ops.c | 4 +- source/blender/editors/metaball/mball_edit.c | 46 +++++++----- source/blender/editors/metaball/mball_intern.h | 2 +- source/blender/editors/metaball/mball_ops.c | 4 +- source/blender/editors/object/object_intern.h | 4 +- source/blender/editors/object/object_lattice.c | 70 ++++++++++++------ source/blender/editors/object/object_ops.c | 8 +-- source/blender/editors/object/object_select.c | 55 +++++++++------ source/blender/editors/physics/particle_edit.c | 69 +++++++++++++----- source/blender/editors/physics/physics_intern.h | 2 +- source/blender/editors/physics/physics_ops.c | 4 +- source/blender/editors/sculpt_paint/paint_intern.h | 2 +- source/blender/editors/sculpt_paint/paint_ops.c | 4 +- source/blender/editors/sculpt_paint/paint_utils.c | 16 +++-- .../blender/editors/space_view3d/view3d_select.c | 70 +++++++++++++++--- source/blender/editors/uvedit/uvedit_ops.c | 77 ++++++++++++++------ source/blender/windowmanager/WM_api.h | 7 ++ source/blender/windowmanager/intern/wm_operators.c | 14 +++- 36 files changed, 571 insertions(+), 234 deletions(-) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 9f7063b24cf..bb0f486b09e 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -399,7 +399,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO #XXX - sloppy operator code bpy.ops.armature.delete() - bpy.ops.armature.select_all_toggle() + bpy.ops.armature.select_all() bpy.ops.armature.delete() ZERO_AREA_BONES= [] @@ -484,7 +484,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO pass - bpy.ops.pose.select_all_toggle() # set + bpy.ops.pose.select_all() # set bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index a1996266674..febd1174a06 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -1277,7 +1277,7 @@ def load_obj(filepath, # deselect all # if context.selected_objects: -# bpy.ops.OBJECT_OT_select_all_toggle() +# bpy.ops.OBJECT_OT_select_all() scene = context.scene # scn = bpy.data.scenes.active @@ -1640,5 +1640,5 @@ menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) # search image in bpy.config.textureDir - load_image # replaced BPyImage.comprehensiveImageLoad with a simplified version that only checks additional directory specified, but doesn't search dirs recursively (obj_image_load) # bitmask won't work? - 132 -# uses operator bpy.ops.OBJECT_OT_select_all_toggle() to deselect all (not necessary?) +# uses operator bpy.ops.OBJECT_OT_select_all() to deselect all (not necessary?) # uses bpy.sys.time() diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 32c5dbb9375..ea8ed19d31b 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -75,7 +75,7 @@ class IMAGE_MT_select(bpy.types.Menu): layout.separator() - layout.operator("uv.select_all_toggle") + layout.operator("uv.select_all") layout.operator("uv.select_inverse") layout.operator("uv.unlink_selection") diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 5b33fbecac2..58954601337 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -364,7 +364,7 @@ class VIEW3D_MT_select_object(bpy.types.Menu): layout.separator() - layout.operator("object.select_all_toggle", text="Select/Deselect All") + layout.operator("object.select_all", text="Select/Deselect All") layout.operator("object.select_inverse", text="Inverse") layout.operator("object.select_random", text="Random") layout.operator("object.select_mirror", text="Mirror") @@ -388,7 +388,7 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): layout.separator() - layout.operator("pose.select_all_toggle", text="Select/Deselect All") + layout.operator("pose.select_all", text="Select/Deselect All") layout.operator("pose.select_inverse", text="Inverse") layout.operator("pose.select_constraint_target", text="Constraint Target") layout.operator("pose.select_linked", text="Linked") @@ -419,7 +419,7 @@ class VIEW3D_MT_select_particle(bpy.types.Menu): layout.separator() - layout.operator("particle.select_all_toggle", text="Select/Deselect All") + layout.operator("particle.select_all", text="Select/Deselect All") layout.operator("particle.select_linked") layout.operator("particle.select_inverse") @@ -445,7 +445,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): layout.separator() - layout.operator("mesh.select_all_toggle", text="Select/Deselect All") + layout.operator("mesh.select_all", text="Select/Deselect All") layout.operator("mesh.select_inverse", text="Inverse") layout.separator() @@ -494,7 +494,7 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu): layout.separator() - layout.operator("curve.select_all_toggle", text="Select/Deselect All") + layout.operator("curve.select_all", text="Select/Deselect All") layout.operator("curve.select_inverse") layout.operator("curve.select_random") layout.operator("curve.select_every_nth") @@ -523,7 +523,7 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu): layout.separator() - layout.operator("curve.select_all_toggle", text="Select/Deselect All") + layout.operator("curve.select_all", text="Select/Deselect All") layout.operator("curve.select_inverse") layout.operator("curve.select_random") layout.operator("curve.select_every_nth") @@ -566,7 +566,7 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): layout.separator() - layout.operator("lattice.select_all_toggle", text="Select/Deselect All") + layout.operator("lattice.select_all", text="Select/Deselect All") class VIEW3D_MT_select_edit_armature(bpy.types.Menu): @@ -580,7 +580,7 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu): layout.separator() - layout.operator("armature.select_all_toggle", text="Select/Deselect All") + layout.operator("armature.select_all", text="Select/Deselect All") layout.operator("armature.select_inverse", text="Inverse") layout.separator() diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 463518a32ff..721fa928e44 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -878,27 +878,37 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op) { ListBase *markers= context_get_markers(C); TimeMarker *marker; - int select= RNA_int_get(op->ptr, "select_type"); + int action = RNA_enum_get(op->ptr, "action"); if(markers == NULL) return OPERATOR_CANCELLED; - - if(RNA_boolean_get(op->ptr, "select_swap")) { + + if (action == SEL_TOGGLE) { + action = SEL_SELECT; for(marker= markers->first; marker; marker= marker->next) { - if(marker->flag & SELECT) + if(marker->flag & SELECT) { + action = SEL_DESELECT; break; + } } - if(marker) - select= 0; - else - select= 1; } for(marker= markers->first; marker; marker= marker->next) { - if(select) + switch (action) { + case SEL_SELECT: marker->flag |= SELECT; - else + break; + case SEL_DESELECT: marker->flag &= ~SELECT; + break; + case SEL_INVERT: + if (marker->flag & SELECT) { + marker->flag &= ~SELECT; + } else { + marker->flag |= SELECT; + } + break; + } } WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL); @@ -906,31 +916,22 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int ed_marker_select_all_invoke(bContext *C, wmOperator *op, wmEvent *evt) -{ - RNA_boolean_set(op->ptr, "select_swap", 1); - - return ed_marker_select_all_exec(C, op); -} - -static void MARKER_OT_select_all_toggle(wmOperatorType *ot) +static void MARKER_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "(De)select all markers"; - ot->description= "(de)select all time markers."; - ot->idname= "MARKER_OT_select_all_toggle"; + ot->description= "Change selection of all time markers."; + ot->idname= "MARKER_OT_select_all"; /* api callbacks */ ot->exec= ed_marker_select_all_exec; - ot->invoke= ed_marker_select_all_invoke; ot->poll= ED_operator_areaactive; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* rna */ - RNA_def_boolean(ot->srna, "select_swap", 0, "Select Swap", ""); - RNA_def_int(ot->srna, "select_type", 0, INT_MIN, INT_MAX, "Select Type", "", INT_MIN, INT_MAX); + WM_operator_properties_select_all(ot); } /* ******************************* remove marker ***************** */ @@ -987,7 +988,7 @@ void ED_operatortypes_marker(void) WM_operatortype_append(MARKER_OT_duplicate); WM_operatortype_append(MARKER_OT_select); WM_operatortype_append(MARKER_OT_select_border); - WM_operatortype_append(MARKER_OT_select_all_toggle); + WM_operatortype_append(MARKER_OT_select_all); WM_operatortype_append(MARKER_OT_delete); } @@ -1002,7 +1003,7 @@ void ED_marker_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1); WM_keymap_verify_item(keymap, "MARKER_OT_select_border", BKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "MARKER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + 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); diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index f53b70120d5..c65d4637dcf 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -45,7 +45,7 @@ void ARMATURE_OT_subdivide_multi(struct wmOperatorType *ot); void ARMATURE_OT_parent_set(struct wmOperatorType *ot); void ARMATURE_OT_parent_clear(struct wmOperatorType *ot); -void ARMATURE_OT_select_all_toggle(struct wmOperatorType *ot); +void ARMATURE_OT_select_all(struct wmOperatorType *ot); void ARMATURE_OT_select_inverse(struct wmOperatorType *ot); void ARMATURE_OT_select_hierarchy(struct wmOperatorType *ot); void ARMATURE_OT_select_linked(struct wmOperatorType *ot); @@ -80,7 +80,7 @@ void POSE_OT_scale_clear(struct wmOperatorType *ot); void POSE_OT_copy(struct wmOperatorType *ot); void POSE_OT_paste(struct wmOperatorType *ot); -void POSE_OT_select_all_toggle(struct wmOperatorType *ot); +void POSE_OT_select_all(struct wmOperatorType *ot); void POSE_OT_select_inverse(struct wmOperatorType *ot); void POSE_OT_select_parent(struct wmOperatorType *ot); void POSE_OT_select_hierarchy(struct wmOperatorType *ot); diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index e3c823283d1..d1c50439c01 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -77,7 +77,7 @@ void ED_operatortypes_armature(void) WM_operatortype_append(ARMATURE_OT_parent_set); WM_operatortype_append(ARMATURE_OT_parent_clear); - WM_operatortype_append(ARMATURE_OT_select_all_toggle); + WM_operatortype_append(ARMATURE_OT_select_all); WM_operatortype_append(ARMATURE_OT_select_inverse); WM_operatortype_append(ARMATURE_OT_select_hierarchy); WM_operatortype_append(ARMATURE_OT_select_linked); @@ -120,7 +120,7 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_copy); WM_operatortype_append(POSE_OT_paste); - WM_operatortype_append(POSE_OT_select_all_toggle); + WM_operatortype_append(POSE_OT_select_all); WM_operatortype_append(POSE_OT_select_inverse); WM_operatortype_append(POSE_OT_select_parent); @@ -219,7 +219,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); @@ -295,7 +295,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) kmi= WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "flipped", 1); - WM_keymap_add_item(keymap, "POSE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "POSE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "POSE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 95b743a7b27..38daa22bbc7 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -3993,25 +3993,38 @@ void ARMATURE_OT_select_inverse(wmOperatorType *ot) } static int armature_de_select_all_exec(bContext *C, wmOperator *op) { - int sel=1; + int action = RNA_enum_get(op->ptr, "action"); - /* Determine if there are any selected bones - And therefore whether we are selecting or deselecting */ - if (CTX_DATA_COUNT(C, selected_bones) > 0) sel=0; + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + /* Determine if there are any selected bones + And therefore whether we are selecting or deselecting */ + if (CTX_DATA_COUNT(C, selected_bones) > 0) + action = SEL_DESELECT; + } /* Set the flags */ CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) { /* ignore bone if selection can't change */ if ((ebone->flag & BONE_UNSELECTABLE) == 0) { - if (sel==1) { - /* select bone */ + switch (action) { + case SEL_SELECT: ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); if(ebone->parent) ebone->parent->flag |= (BONE_TIPSEL); - } - else { - /* deselect bone */ + break; + case SEL_DESELECT: ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + break; + case SEL_INVERT: + if (ebone->flag & BONE_SELECTED) { + ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + } else { + ebone->flag |= (BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + if(ebone->parent) + ebone->parent->flag |= (BONE_TIPSEL); + } + break; } } } @@ -4022,12 +4035,12 @@ static int armature_de_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void ARMATURE_OT_select_all_toggle(wmOperatorType *ot) +void ARMATURE_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "deselect all editbone"; - ot->idname= "ARMATURE_OT_select_all_toggle"; + ot->idname= "ARMATURE_OT_select_all"; /* api callbacks */ ot->exec= armature_de_select_all_exec; @@ -4036,6 +4049,7 @@ void ARMATURE_OT_select_all_toggle(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + WM_operator_properties_select_all(ot); } /* ********************* select hierarchy operator ************** */ @@ -5077,20 +5091,35 @@ void POSE_OT_select_inverse(wmOperatorType *ot) } static int pose_de_select_all_exec(bContext *C, wmOperator *op) { - int sel=1; + int action = RNA_enum_get(op->ptr, "action"); - /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */ - // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared... - if (CTX_DATA_COUNT(C, selected_pose_bones) > 1) sel=0; + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + /* Determine if there are any selected bones and therefore whether we are selecting or deselecting */ + // NOTE: we have to check for > 1 not > 0, since there is almost always an active bone that can't be cleared... + if (CTX_DATA_COUNT(C, selected_pose_bones) > 1) + action = SEL_DESELECT; + } /* Set the flags */ CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { /* select pchan only if selectable, but deselect works always */ - if (sel==0) { + switch (action) { + case SEL_SELECT: + if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) + pchan->bone->flag |= BONE_SELECTED; + break; + case SEL_DESELECT: pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); + break; + case SEL_INVERT: + if (pchan->bone->flag & BONE_SELECTED) { + pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); + } else if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) { + pchan->bone->flag |= BONE_SELECTED; + } + break; } - else if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) - pchan->bone->flag |= BONE_SELECTED; } CTX_DATA_END; @@ -5099,12 +5128,12 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void POSE_OT_select_all_toggle(wmOperatorType *ot) +void POSE_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "deselect all bones"; - ot->idname= "POSE_OT_select_all_toggle"; + ot->idname= "POSE_OT_select_all"; /* api callbacks */ ot->exec= pose_de_select_all_exec; @@ -5113,6 +5142,7 @@ void POSE_OT_select_all_toggle(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + WM_operator_properties_select_all(ot); } static int pose_select_parent_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index ad3e9427861..6c477bd011a 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -84,7 +84,7 @@ void CURVE_OT_smooth_radius(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_toggle(struct wmOperatorType *ot); +void CURVE_OT_select_all(struct wmOperatorType *ot); void CURVE_OT_select_inverse(struct wmOperatorType *ot); void CURVE_OT_select_linked(struct wmOperatorType *ot); void CURVE_OT_select_row(struct wmOperatorType *ot); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 15ff971b9cf..c54739902d0 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -139,7 +139,7 @@ void ED_operatortypes_curve(void) WM_operatortype_append(CURVE_OT_de_select_first); WM_operatortype_append(CURVE_OT_de_select_last); - WM_operatortype_append(CURVE_OT_select_all_toggle); + WM_operatortype_append(CURVE_OT_select_all); WM_operatortype_append(CURVE_OT_select_inverse); WM_operatortype_append(CURVE_OT_select_linked); WM_operatortype_append(CURVE_OT_select_row); @@ -222,7 +222,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_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_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index e53b419c6ea..a65e1164a27 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -83,6 +83,9 @@ #include "RNA_access.h" #include "RNA_define.h" +void selectend_nurb(Object *obedit, short selfirst, short doswap, short selstatus); +static void select_adjacent_cp(ListBase *editnurb, short next, short cont, short selstatus); + /* still need to eradicate a few :( */ #define callocstructN(x,y,name) (x*)MEM_callocN((y)* sizeof(x),name) @@ -363,6 +366,26 @@ void free_editNurb(Object *obedit) } } +void CU_deselect_all(Object *obedit) +{ + ListBase *editnurb= curve_get_editcurve(obedit); + + if (editnurb) { + selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */ + select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */ + } +} + +void CU_select_all(Object *obedit) +{ + ListBase *editnurb= curve_get_editcurve(obedit); + + if (editnurb) { + selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */ + select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */ + } +} + /******************** separate operator ***********************/ static int separate_exec(bContext *C, wmOperator *op) @@ -1580,26 +1603,67 @@ static int de_select_all_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); ListBase *editnurb= curve_get_editcurve(obedit); + int action = RNA_enum_get(op->ptr, "action"); - if(nurb_has_selected_cps(editnurb)) { /* deselect all */ - selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */ - select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */ + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + if(nurb_has_selected_cps(editnurb)) + action = SEL_DESELECT; + } + + switch (action) { + case SEL_SELECT: + CU_select_all(obedit); + break; + case SEL_DESELECT: + CU_deselect_all(obedit); + break; + case SEL_INVERT: + { + Curve *cu= obedit->data; + Nurb *nu; + BPoint *bp; + BezTriple *bezt; + int a; + + for(nu= editnurb->first; nu; nu= nu->next) { + if(nu->type == CU_BEZIER) { + bezt= nu->bezt; + a= nu->pntsu; + while(a--) { + if(bezt->hide==0) { + bezt->f2 ^= SELECT; /* always do the center point */ + if((cu->drawflag & CU_HIDE_HANDLES)==0) { + bezt->f1 ^= SELECT; + bezt->f3 ^= SELECT; + } + } + bezt++; + } + } + else { + bp= nu->bp; + a= nu->pntsu*nu->pntsv; + while(a--) { + swap_selection_bpoint(bp); + bp++; + } + } + } + break; + } } - else { /* select all */ - selectend_nurb(obedit, FIRST, 0, SELECT); /* set first control points as selected */ - select_adjacent_cp(editnurb, 1, 1, SELECT); /* cascade selection */ - } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); return OPERATOR_FINISHED; } -void CURVE_OT_select_all_toggle(wmOperatorType *ot) +void CURVE_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select or Deselect All"; - ot->idname= "CURVE_OT_select_all_toggle"; + ot->idname= "CURVE_OT_select_all"; /* api callbacks */ ot->exec= de_select_all_exec; diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index 66a481ca5ac..3166f77815c 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -43,6 +43,10 @@ void ED_operatortypes_curve(void); void ED_keymap_curve (struct wmKeyConfig *keyconf); /* editcurve.c */ +void CU_deselect_all(struct Object *obedit); +void CU_select_all(struct Object *obedit); + + void undo_push_curve (struct bContext *C, char *name); ListBase *curve_get_editcurve(struct Object *ob); diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index ba26104a555..58f4a566ff7 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -126,6 +126,7 @@ void EM_select_face_fgon(struct EditMesh *em, struct EditFace *efa, int val); void EM_select_swap(struct EditMesh *em); void EM_toggle_select_all(struct EditMesh *em); void EM_select_all(struct EditMesh *em); +void EM_deselect_all(struct EditMesh *em); void EM_selectmode_flush(struct EditMesh *em); void EM_deselect_flush(struct EditMesh *em); void EM_selectmode_set(struct EditMesh *em); @@ -168,8 +169,8 @@ void EM_automerge(struct Scene *scene, struct Object *obedit, int update); /* editface.c */ struct MTFace *EM_get_active_mtface(struct EditMesh *em, struct EditFace **act_efa, struct MCol **mcol, int sloppy); int face_select(struct bContext *C, struct Object *ob, short mval[2], int extend); -void face_borderselect(struct bContext *C, struct Object *ob, struct rcti *rect, int select); -void deselectall_tface(struct Object *ob); +void face_borderselect(struct bContext *C, struct Object *ob, struct rcti *rect, int select, int extend); +void selectall_tface(struct Object *ob, int action); void select_linked_tfaces(struct bContext *C, struct Object *ob, short mval[2], int mode); /* object_vgroup.c */ diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 69b478c6dfa..1b77d298e3a 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -115,6 +115,10 @@ void latt_to_key(struct Lattice *lt, struct KeyBlock *kb); void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb); void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb); +/* object_lattice.c */ + +void ED_setflagsLatt(struct Object *obedit, int flag); + /* object_modifier.c */ enum { MODIFIER_APPLY_DATA=1, diff --git a/source/blender/editors/include/ED_particle.h b/source/blender/editors/include/ED_particle.h index fcdaf8cb59d..6dd54fd9b1a 100644 --- a/source/blender/editors/include/ED_particle.h +++ b/source/blender/editors/include/ED_particle.h @@ -57,7 +57,7 @@ void PE_update_object(struct Scene *scene, struct Object *ob, int useflag); /* selection tools */ int PE_mouse_particles(struct bContext *C, short *mval, int extend); -int PE_border_select(struct bContext *C, struct rcti *rect, int select); +int PE_border_select(struct bContext *C, struct rcti *rect, int select, int extend); int PE_circle_select(struct bContext *C, int selecting, short *mval, float rad); int PE_lasso_select(struct bContext *C, short mcords[][2], short moves, short select); diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 5d94fb32438..d034fe4a783 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -378,34 +378,44 @@ void select_linked_tfaces(bContext *C, Object *ob, short mval[2], int mode) object_facesel_flush_dm(ob); } -void deselectall_tface(Object *ob) +void selectall_tface(Object *ob, int action) { Mesh *me; MFace *mface; - int a, sel; + int a; me= get_mesh(ob); if(me==0) return; - mface= me->mface; - a= me->totface; - sel= 0; - while(a--) { - if(mface->flag & ME_HIDE); - else if(mface->flag & ME_FACE_SEL) { - sel= 1; - break; + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + + mface= me->mface; + a= me->totface; + while(a--) { + if((mface->flag & ME_HIDE) == 0 && mface->flag & ME_FACE_SEL) { + action = SEL_DESELECT; + break; + } + mface++; } - mface++; } mface= me->mface; a= me->totface; while(a--) { - if(mface->flag & ME_HIDE); - else { - if(sel) mface->flag &= ~ME_FACE_SEL; - else mface->flag |= ME_FACE_SEL; + if((mface->flag & ME_HIDE) == 0) { + switch (action) { + case SEL_SELECT: + mface->flag |= ME_FACE_SEL; + break; + case SEL_DESELECT: + mface->flag &= ~ME_FACE_SEL; + break; + case SEL_INVERT: + mface->flag ^= ME_FACE_SEL; + break; + } } mface++; } @@ -815,7 +825,7 @@ int face_select(struct bContext *C, Object *ob, short mval[2], int extend) return 1; } -void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select) +void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select, int extend) { Mesh *me; MFace *mface; @@ -837,6 +847,14 @@ void face_borderselect(struct bContext *C, Object *ob, rcti *rect, int select) sy= (rect->ymax-rect->ymin+1); if(sx*sy<=0) return; + if (extend == 0 && select) { + mface= me->mface; + for(a=1; a<=me->totface; a++, mface++) { + if((mface->flag & ME_HIDE) == 0) + mface->flag &= ~ME_FACE_SEL; + } + } + view3d_validate_backbuf(&vc); ibuf = IMB_allocImBuf(sx,sy,32,IB_rect,0); diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 8501b7fba92..c79ef342150 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3372,12 +3372,31 @@ void EM_select_all(EditMesh *em) EM_set_flag_all(em, SELECT); } -static int toggle_select_all_exec(bContext *C, wmOperator *op) +void EM_deselect_all(EditMesh *em) +{ + EM_clear_flag_all(em, SELECT); +} + +static int select_all_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); + int action = RNA_enum_get(op->ptr, "action"); - EM_toggle_select_all(em); + switch (action) { + case SEL_TOGGLE: + EM_toggle_select_all(em); + break; + case SEL_SELECT: + EM_select_all(em); + break; + case SEL_DESELECT: + EM_deselect_all(em); + break; + case SEL_INVERT: + EM_select_swap(em); + break; + } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); BKE_mesh_end_editmesh(obedit->data, em); @@ -3385,19 +3404,21 @@ static int toggle_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void MESH_OT_select_all_toggle(wmOperatorType *ot) +void MESH_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select/Deselect All"; - ot->description= "(de)select all vertices, edges or faces."; - ot->idname= "MESH_OT_select_all_toggle"; + ot->description= "Change selection of all vertices, edges or faces."; + ot->idname= "MESH_OT_select_all"; /* api callbacks */ - ot->exec= toggle_select_all_exec; + ot->exec= select_all_exec; ot->poll= ED_operator_editmesh; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } /* ******************** **************** */ diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 3f79b9b4370..4ce9afaf237 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -141,7 +141,7 @@ void MESH_OT_knife_cut(struct wmOperatorType *ot); /* ******************* editmesh_mods.c */ void MESH_OT_loop_select(struct wmOperatorType *ot); -void MESH_OT_select_all_toggle(struct wmOperatorType *ot); +void MESH_OT_select_all(struct wmOperatorType *ot); void MESH_OT_select_more(struct wmOperatorType *ot); void MESH_OT_select_less(struct wmOperatorType *ot); void MESH_OT_select_inverse(struct wmOperatorType *ot); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 1363d8b2102..866638d2f20 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -68,7 +68,7 @@ void ED_operatortypes_mesh(void) { - WM_operatortype_append(MESH_OT_select_all_toggle); + WM_operatortype_append(MESH_OT_select_all); WM_operatortype_append(MESH_OT_select_more); WM_operatortype_append(MESH_OT_select_less); WM_operatortype_append(MESH_OT_select_inverse); @@ -222,7 +222,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_select_shortest_path", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MESH_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 09200514c0f..d4ad833d11e 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -189,49 +189,63 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname) /***************************** Select/Deselect operator *****************************/ /* Select or deselect all MetaElements */ -static int select_deselect_all_metaelems_exec(bContext *C, wmOperator *op) +static int select_all_exec(bContext *C, wmOperator *op) { //Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); MetaBall *mb = (MetaBall*)obedit->data; MetaElem *ml; - int any_sel= 0; - - /* Is any metaelem selected? */ + int action = RNA_enum_get(op->ptr, "action"); + ml= mb->editelems->first; if(ml) { - while(ml) { - if(ml->flag & SELECT) break; - ml= ml->next; + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + while(ml) { + if(ml->flag & SELECT) { + action = SEL_DESELECT; + break; + } + ml= ml->next; + } } - if(ml) any_sel= 1; ml= mb->editelems->first; while(ml) { - if(any_sel) ml->flag &= ~SELECT; - else ml->flag |= SELECT; + switch (action) { + case SEL_SELECT: + ml->flag |= SELECT; + break; + case SEL_DESELECT: + ml->flag &= ~SELECT; + break; + case SEL_INVERT: + ml->flag ^= SELECT; + break; + } ml= ml->next; } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, mb); - //DAG_id_flush_update(obedit->data, OB_RECALC_DATA); } return OPERATOR_FINISHED; } -void MBALL_OT_select_deselect_all_metaelems(wmOperatorType *ot) +void MBALL_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select/Deselect All"; - ot->description= "(de)select all metaelements."; - ot->idname= "MBALL_OT_select_deselect_all_metaelems"; + ot->description= "Change selection of all meta elements."; + ot->idname= "MBALL_OT_select_all"; /* callback functions */ - ot->exec= select_deselect_all_metaelems_exec; + ot->exec= select_all_exec; ot->poll= ED_operator_editmball; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } /***************************** Select inverse operator *****************************/ diff --git a/source/blender/editors/metaball/mball_intern.h b/source/blender/editors/metaball/mball_intern.h index 8cf749733dd..fca9fc7e650 100644 --- a/source/blender/editors/metaball/mball_intern.h +++ b/source/blender/editors/metaball/mball_intern.h @@ -39,7 +39,7 @@ void MBALL_OT_reveal_metaelems(struct wmOperatorType *ot); void MBALL_OT_delete_metaelems(struct wmOperatorType *ot); void MBALL_OT_duplicate_metaelems(struct wmOperatorType *ot); -void MBALL_OT_select_deselect_all_metaelems(struct wmOperatorType *ot); +void MBALL_OT_select_all(struct wmOperatorType *ot); void MBALL_OT_select_inverse_metaelems(struct wmOperatorType *ot); void MBALL_OT_select_random_metaelems(struct wmOperatorType *ot); diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c index 01da90212a0..b638eaecbc2 100644 --- a/source/blender/editors/metaball/mball_ops.c +++ b/source/blender/editors/metaball/mball_ops.c @@ -46,7 +46,7 @@ void ED_operatortypes_metaball(void) WM_operatortype_append(MBALL_OT_hide_metaelems); WM_operatortype_append(MBALL_OT_reveal_metaelems); - WM_operatortype_append(MBALL_OT_select_deselect_all_metaelems); + WM_operatortype_append(MBALL_OT_select_all); WM_operatortype_append(MBALL_OT_select_inverse_metaelems); WM_operatortype_append(MBALL_OT_select_random_metaelems); } @@ -68,7 +68,7 @@ void ED_keymap_metaball(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, 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_deselect_all_metaelems", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MBALL_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_select_inverse_metaelems", IKEY, KM_PRESS, KM_CTRL, 0); } diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 9230dca7ba2..ebd8261f207 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -81,7 +81,7 @@ void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); /* object_select.c */ -void OBJECT_OT_select_all_toggle(struct wmOperatorType *ot); +void OBJECT_OT_select_all(struct wmOperatorType *ot); void OBJECT_OT_select_inverse(struct wmOperatorType *ot); void OBJECT_OT_select_random(struct wmOperatorType *ot); void OBJECT_OT_select_by_type(struct wmOperatorType *ot); @@ -124,7 +124,7 @@ void make_editLatt(Object *obedit); void load_editLatt(Object *obedit); void remake_editLatt(Object *obedit); -void LATTICE_OT_select_all_toggle(struct wmOperatorType *ot); +void LATTICE_OT_select_all(struct wmOperatorType *ot); void LATTICE_OT_make_regular(struct wmOperatorType *ot); /* object_group.c */ diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c index 3f27ea407a2..1cda843845a 100644 --- a/source/blender/editors/object/object_lattice.c +++ b/source/blender/editors/object/object_lattice.c @@ -38,6 +38,8 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "RNA_access.h" + #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_key.h" @@ -154,7 +156,7 @@ void load_editLatt(Object *obedit) /************************** Operators *************************/ -static void setflagsLatt(Object *obedit, int flag) +void ED_setflagsLatt(Object *obedit, int flag) { Lattice *lt= obedit->data; BPoint *bp; @@ -172,49 +174,71 @@ static void setflagsLatt(Object *obedit, int flag) } } -int de_select_all_exec(bContext *C, wmOperator *op) +int select_all_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); Lattice *lt= obedit->data; BPoint *bp; - int a, deselect= 0; - - bp= lt->editlatt->def; - a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw; - - while(a--) { - if(bp->hide==0) { - if(bp->f1) { - deselect= 1; - break; + int a; + int action = RNA_enum_get(op->ptr, "action"); + + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + + bp= lt->editlatt->def; + a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw; + + while(a--) { + if(bp->hide==0) { + if(bp->f1) { + action = SEL_DESELECT; + break; + } } + bp++; } - bp++; } - if(deselect) - setflagsLatt(obedit, 0); - else - setflagsLatt(obedit, 1); - + switch (action) { + case SEL_SELECT: + ED_setflagsLatt(obedit, 1); + break; + case SEL_DESELECT: + ED_setflagsLatt(obedit, 0); + break; + case SEL_INVERT: + bp= lt->editlatt->def; + a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw; + + while(a--) { + if(bp->hide==0) { + bp->f1 ^= 1; + } + bp++; + } + break; + } + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); return OPERATOR_FINISHED; } -void LATTICE_OT_select_all_toggle(wmOperatorType *ot) +void LATTICE_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select or Deselect All"; - ot->description= "Toggle (de)select all UVW control points."; - ot->idname= "LATTICE_OT_select_all_toggle"; + ot->description= "Change selection of all UVW control points."; + ot->idname= "LATTICE_OT_select_all"; /* api callbacks */ - ot->exec= de_select_all_exec; + ot->exec= select_all_exec; ot->poll= ED_operator_editlattice; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } int make_regular_poll(bContext *C) @@ -308,7 +332,7 @@ int mouse_lattice(bContext *C, short mval[2], int extend) if(bp) { if(extend==0) { - setflagsLatt(vc.obedit, 0); + ED_setflagsLatt(vc.obedit, 0); bp->f1 |= SELECT; } else diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 4dcecc92880..8d407b0e571 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -98,7 +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_toggle); + WM_operatortype_append(OBJECT_OT_select_all); WM_operatortype_append(OBJECT_OT_select_by_type); WM_operatortype_append(OBJECT_OT_select_by_layer); WM_operatortype_append(OBJECT_OT_select_linked); @@ -180,7 +180,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_shape_key_mirror); WM_operatortype_append(OBJECT_OT_shape_key_move); - WM_operatortype_append(LATTICE_OT_select_all_toggle); + WM_operatortype_append(LATTICE_OT_select_all); WM_operatortype_append(LATTICE_OT_make_regular); WM_operatortype_append(OBJECT_OT_group_add); @@ -261,7 +261,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) /* object mode supports PET now */ ED_object_generic_keymap(keyconf, keymap, TRUE); - WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); @@ -329,7 +329,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Lattice", 0, 0); keymap->poll= ED_operator_editlattice; - WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "LATTICE_OT_select_all", AKEY, KM_PRESS, 0, 0); /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 20f3ea3df9e..5366446c8ae 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -707,49 +707,64 @@ void OBJECT_OT_select_inverse(wmOperatorType *ot) /**************************** (De)select All ****************************/ -static int object_select_de_select_all_exec(bContext *C, wmOperator *op) +static int object_select_all_exec(bContext *C, wmOperator *op) { + int action = RNA_enum_get(op->ptr, "action"); - int a=0, ok=0; - - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { - if (base->flag & SELECT) { - ok= a= 1; - break; + /* passthrough if no objects are visible */ + if (CTX_DATA_COUNT(C, visible_bases) == 0) return OPERATOR_PASS_THROUGH; + + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + if (base->flag & SELECT) { + action = SEL_DESELECT; + break; + } } - else ok=1; + CTX_DATA_END; } - CTX_DATA_END; - - if (!ok) return OPERATOR_PASS_THROUGH; - + CTX_DATA_BEGIN(C, Base*, base, visible_bases) { - if (a) ED_base_object_select(base, BA_DESELECT); - else ED_base_object_select(base, BA_SELECT); + switch (action) { + case SEL_SELECT: + ED_base_object_select(base, BA_SELECT); + break; + case SEL_DESELECT: + ED_base_object_select(base, BA_DESELECT); + break; + case SEL_INVERT: + if (base->flag & SELECT) { + ED_base_object_select(base, BA_DESELECT); + } else { + ED_base_object_select(base, BA_SELECT); + } + break; + } } CTX_DATA_END; - /* undo? */ WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } -void OBJECT_OT_select_all_toggle(wmOperatorType *ot) +void OBJECT_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "deselect all"; - ot->description = "(de)select all visible objects in scene."; - ot->idname= "OBJECT_OT_select_all_toggle"; + ot->description = "Change selection of all visible objects in scene."; + ot->idname= "OBJECT_OT_select_all"; /* api callbacks */ - ot->exec= object_select_de_select_all_exec; + ot->exec= object_select_all_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - + + WM_operator_properties_select_all(ot); } /**************************** Select Mirror ****************************/ diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index b5007ff72ce..68e673c31b1 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -1261,29 +1261,51 @@ static void toggle_key_select(PEData *data, int point_index, int key_index) /************************ de select all operator ************************/ -static int de_select_all_exec(bContext *C, wmOperator *op) +static int select_all_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); PTCacheEdit *edit= PE_get_current(scene, ob); POINT_P; KEY_K; - int sel= 0; - - LOOP_VISIBLE_POINTS { - LOOP_SELECTED_KEYS { - sel= 1; - key->flag &= ~PEK_SELECT; - point->flag |= PEP_EDIT_RECALC; + int action = RNA_enum_get(op->ptr, "action"); + + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + LOOP_VISIBLE_POINTS { + LOOP_SELECTED_KEYS { + action = SEL_DESELECT; + break; + } + + if (action == SEL_DESELECT) + break; } } - if(sel==0) { - LOOP_VISIBLE_POINTS { - LOOP_KEYS { - if(!(key->flag & PEK_SELECT)) { + LOOP_VISIBLE_POINTS { + LOOP_VISIBLE_KEYS { + switch (action) { + case SEL_SELECT: + if ((key->flag & PEK_SELECT) == 0) { key->flag |= PEK_SELECT; point->flag |= PEP_EDIT_RECALC; } + break; + case SEL_DESELECT: + if (key->flag & PEK_SELECT) { + key->flag &= ~PEK_SELECT; + point->flag |= PEP_EDIT_RECALC; + } + break; + case SEL_INVERT: + if ((key->flag & PEK_SELECT) == 0) { + key->flag |= PEK_SELECT; + point->flag |= PEP_EDIT_RECALC; + } else { + key->flag &= ~PEK_SELECT; + point->flag |= PEP_EDIT_RECALC; + } + break; } } } @@ -1294,18 +1316,20 @@ static int de_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void PARTICLE_OT_select_all_toggle(wmOperatorType *ot) +void PARTICLE_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select or Deselect All"; - ot->idname= "PARTICLE_OT_select_all_toggle"; + ot->name= "Selection of all particles"; + ot->idname= "PARTICLE_OT_select_all"; /* api callbacks */ - ot->exec= de_select_all_exec; + ot->exec= select_all_exec; ot->poll= PE_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } /************************ pick select operator ************************/ @@ -1472,7 +1496,7 @@ void PARTICLE_OT_select_linked(wmOperatorType *ot) /************************ border select operator ************************/ -int PE_border_select(bContext *C, rcti *rect, int select) +int PE_border_select(bContext *C, rcti *rect, int select, int extend) { Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); @@ -1482,6 +1506,17 @@ int PE_border_select(bContext *C, rcti *rect, int select) if(!PE_start_edit(edit)) return OPERATOR_CANCELLED; + if (extend == 0 && select) { + POINT_P; KEY_K; + + LOOP_VISIBLE_POINTS { + LOOP_SELECTED_KEYS { + key->flag &= ~PEK_SELECT; + point->flag |= PEP_EDIT_RECALC; + } + } + } + PE_set_view3d_data(C, &data); data.rect= rect; data.select= select; diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index e7543cbb83e..085332b1788 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -36,7 +36,7 @@ struct wmOperatorType; /* particle_edit.c */ -void PARTICLE_OT_select_all_toggle(struct wmOperatorType *ot); +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_linked(struct wmOperatorType *ot); diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index b0d804da457..09b4ebec7a2 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -43,7 +43,7 @@ static void operatortypes_particle(void) { - WM_operatortype_append(PARTICLE_OT_select_all_toggle); + 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_linked); @@ -94,7 +94,7 @@ static void keymap_particle(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Particle", 0, 0); keymap->poll= PE_poll; - WM_keymap_add_item(keymap, "PARTICLE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "PARTICLE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index b5748d7bc88..f86e1077ef3 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -96,7 +96,7 @@ void BRUSH_OT_curve_preset(struct wmOperatorType *ot); void PAINT_OT_face_select_linked(struct wmOperatorType *ot); void PAINT_OT_face_select_linked_pick(struct wmOperatorType *ot); -void PAINT_OT_face_deselect_all(struct wmOperatorType *ot); +void PAINT_OT_face_select_all(struct wmOperatorType *ot); int facemask_paint_poll(struct bContext *C); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 256d114fbdc..92812c2ab08 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -137,7 +137,7 @@ void ED_operatortypes_paint(void) /* face-select */ WM_operatortype_append(PAINT_OT_face_select_linked); WM_operatortype_append(PAINT_OT_face_select_linked_pick); - WM_operatortype_append(PAINT_OT_face_deselect_all); + WM_operatortype_append(PAINT_OT_face_select_all); } static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) @@ -238,7 +238,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0); keymap->poll= facemask_paint_poll; - WM_keymap_add_item(keymap, "PAINT_OT_face_deselect_all", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "PAINT_OT_face_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked_pick", LKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 24d9e0f4bc1..496d15d793f 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -273,22 +273,24 @@ void PAINT_OT_face_select_linked_pick(wmOperatorType *ot) } -static int face_deselect_all_exec(bContext *C, wmOperator *op) +static int face_select_all_exec(bContext *C, wmOperator *op) { - deselectall_tface(CTX_data_active_object(C)); + selectall_tface(CTX_data_active_object(C), RNA_enum_get(op->ptr, "action")); ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } -void PAINT_OT_face_deselect_all(wmOperatorType *ot) +void PAINT_OT_face_select_all(wmOperatorType *ot) { - ot->name= "Select Linked"; - ot->description= "Select linked faces under the mouse."; - ot->idname= "PAINT_OT_face_deselect_all"; + ot->name= "Face Selection"; + ot->description= "Change selection for all faces."; + ot->idname= "PAINT_OT_face_select_all"; - ot->exec= face_deselect_all_exec; + ot->exec= face_select_all_exec; ot->poll= facemask_paint_poll; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_select_all(ot); } diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 2b45cfef6e1..54038853775 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -1262,7 +1262,7 @@ static void do_nurbs_box_select__doSelect(void *userData, Nurb *nu, BPoint *bp, } } } -static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select) +static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select, int extend) { struct { ViewContext vc; rcti *rect; int select; } data; @@ -1270,6 +1270,10 @@ static void do_nurbs_box_select(ViewContext *vc, rcti *rect, int select) data.rect = rect; data.select = select; + if (extend == 0 && select) { + CU_deselect_all(vc->obedit); + } + ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ nurbs_foreachScreenVert(vc, do_nurbs_box_select__doSelect, &data); } @@ -1282,7 +1286,7 @@ static void do_lattice_box_select__doSelect(void *userData, BPoint *bp, int x, i bp->f1 = data->select?(bp->f1|SELECT):(bp->f1&~SELECT); } } -static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select) +static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select, int extend) { struct { ViewContext vc; rcti *rect; int select, pass, done; } data; @@ -1290,6 +1294,10 @@ static void do_lattice_box_select(ViewContext *vc, rcti *rect, int select) data.rect = rect; data.select = select; + if (extend == 0 && select) { + ED_setflagsLatt(vc->obedit, 0); + } + ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ lattice_foreachScreenVert(vc, do_lattice_box_select__doSelect, &data); } @@ -1327,7 +1335,7 @@ static void do_mesh_box_select__doSelectFace(void *userData, EditFace *efa, int EM_select_face_fgon(data->vc.em, efa, data->select); } } -static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select) +static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int extend) { struct { ViewContext vc; rcti *rect; short select, pass, done; } data; ToolSettings *ts= vc->scene->toolsettings; @@ -1339,6 +1347,11 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select) data.pass = 0; data.done = 0; + if (extend == 0 && select) + { + EM_deselect_all(vc->em); + } + bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax); ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ @@ -1387,6 +1400,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) MetaElem *ml; unsigned int buffer[4*MAXPICKBUF]; int a, index; + int extend; short hits, selecting; view3d_operator_needs_opengl(C); @@ -1399,31 +1413,41 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) rect.ymin= RNA_int_get(op->ptr, "ymin"); rect.xmax= RNA_int_get(op->ptr, "xmax"); rect.ymax= RNA_int_get(op->ptr, "ymax"); + extend = RNA_boolean_get(op->ptr, "extend"); if(obedit==NULL && (paint_facesel_test(OBACT))) { - face_borderselect(C, obact, &rect, selecting); + face_borderselect(C, obact, &rect, selecting, extend); return OPERATOR_FINISHED; } else if(obedit==NULL && (obact && obact->mode & OB_MODE_PARTICLE_EDIT)) { - return PE_border_select(C, &rect, selecting); + return PE_border_select(C, &rect, selecting, extend); } if(obedit) { if(obedit->type==OB_MESH) { Mesh *me= obedit->data; vc.em= me->edit_mesh; - do_mesh_box_select(&vc, &rect, selecting); + do_mesh_box_select(&vc, &rect, selecting, extend); // if (EM_texFaceCheck()) WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); } else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) { - do_nurbs_box_select(&vc, &rect, selecting); + do_nurbs_box_select(&vc, &rect, selecting, extend); } else if(obedit->type==OB_MBALL) { MetaBall *mb = (MetaBall*)obedit->data; hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect); + if (extend == 0 && selecting) { + ml= mb->editelems->first; + + while(ml) { + ml->flag &= ~SELECT; + ml= ml->next; + } + } + ml= mb->editelems->first; while(ml) { @@ -1452,6 +1476,17 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) for(ebone= arm->edbo->first; ebone; ebone= ebone->next) ebone->flag &= ~BONE_DONE; + if (extend==0 && selecting) { + /* Set the flags */ + CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) { + /* ignore bone if selection can't change */ + if ((ebone->flag & BONE_UNSELECTABLE) == 0) { + ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); + } + } + CTX_DATA_END; + } + hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect); /* first we only check points inside the border */ @@ -1500,7 +1535,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) ED_armature_sync_selection(arm->edbo); } else if(obedit->type==OB_LATTICE) { - do_lattice_box_select(&vc, &rect, selecting); + do_lattice_box_select(&vc, &rect, selecting, extend); } } else { /* no editmode, unified for bones and objects */ @@ -1516,6 +1551,25 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) else bone_only= 0; + if (extend == 0 && selecting) { + base= FIRSTBASE; + + if (bone_only) { + CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { + pchan->bone->flag &= ~(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); + } + CTX_DATA_END; + } else { + while(base) { + Base *next = base->next; + if(base->lay & v3d->lay) { + ED_base_object_select(base, BA_DESELECT); + } + base= next; + } + } + } + /* selection buffer now has bones potentially too, so we add MAXPICKBUF */ vbuffer = MEM_mallocN(4 * (totobj+MAXPICKBUF) * sizeof(unsigned int), "selection buffer"); hits= view3d_opengl_select(&vc, vbuffer, 4*(totobj+MAXPICKBUF), &rect); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 623ddaae188..fb02f5100b6 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -1323,7 +1323,7 @@ void UV_OT_select_inverse(wmOperatorType *ot) /* ******************** (de)select all operator **************** */ -static int de_select_all_exec(bContext *C, wmOperator *op) +static int select_all_exec(bContext *C, wmOperator *op) { Scene *scene; ToolSettings *ts; @@ -1332,7 +1332,7 @@ static int de_select_all_exec(bContext *C, wmOperator *op) EditFace *efa; Image *ima; MTFace *tf; - int sel; + int action = RNA_enum_get(op->ptr, "action"); scene= CTX_data_scene(C); ts= CTX_data_tool_settings(C); @@ -1341,18 +1341,33 @@ static int de_select_all_exec(bContext *C, wmOperator *op) ima= CTX_data_edit_image(C); if(ts->uv_flag & UV_SYNC_SELECTION) { - EM_toggle_select_all(em); + switch (action) { + case SEL_TOGGLE: + EM_toggle_select_all(em); + break; + case SEL_SELECT: + EM_select_all(em); + break; + case SEL_DESELECT: + EM_deselect_all(em); + break; + case SEL_INVERT: + EM_select_swap(em); + break; + } } else { - sel= 0; - for(efa= em->faces.first; efa; efa= efa->next) { - tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + if (action == SEL_TOGGLE) { + action = SEL_SELECT; + for(efa= em->faces.first; efa; efa= efa->next) { + tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if(uvedit_face_visible(scene, ima, efa, tf)) { - if(tf->flag & (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4)) { - sel= 1; - break; + if(uvedit_face_visible(scene, ima, efa, tf)) { + if(tf->flag & (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4)) { + action = SEL_DESELECT; + break; + } } } } @@ -1361,13 +1376,27 @@ static int de_select_all_exec(bContext *C, wmOperator *op) tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); if(uvedit_face_visible(scene, ima, efa, tf)) { - if(efa->v4) { - if(sel) tf->flag &= ~(TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4); - else tf->flag |= (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4); - } - else { - if(sel) tf->flag &= ~(TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4); - else tf->flag |= (TF_SEL1+TF_SEL2+TF_SEL3); + char select_flag; + + if(efa->v4) + select_flag = (TF_SEL1+TF_SEL2+TF_SEL3+TF_SEL4); + else + select_flag = (TF_SEL1+TF_SEL2+TF_SEL3); + + switch (action) { + case SEL_SELECT: + tf->flag |= select_flag; + break; + case SEL_DESELECT: + tf->flag &= ~select_flag; + break; + case SEL_INVERT: + if ((tf->flag & select_flag) == select_flag) { + tf->flag &= ~select_flag; + } else { + tf->flag &= ~select_flag; + } + break; } } } @@ -1379,17 +1408,19 @@ static int de_select_all_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void UV_OT_select_all_toggle(wmOperatorType *ot) +void UV_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select or Deselect All"; - ot->description= "(de)select all UV vertices."; - ot->idname= "UV_OT_select_all_toggle"; + ot->description= "Change selection of all UV vertices."; + ot->idname= "UV_OT_select_all"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* api callbacks */ - ot->exec= de_select_all_exec; + ot->exec= select_all_exec; ot->poll= ED_operator_uvedit; + + WM_operator_properties_select_all(ot); } /* ******************** mouse select operator **************** */ @@ -3065,7 +3096,7 @@ void UV_OT_tile_set(wmOperatorType *ot) void ED_operatortypes_uvedit(void) { - WM_operatortype_append(UV_OT_select_all_toggle); + WM_operatortype_append(UV_OT_select_all); WM_operatortype_append(UV_OT_select_inverse); WM_operatortype_append(UV_OT_select); WM_operatortype_append(UV_OT_select_loop); @@ -3121,7 +3152,7 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) /* selection manipulation */ WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "UV_OT_unlink_selection", LKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "UV_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "UV_OT_select_all", AKEY, KM_PRESS, 0, 0); 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); diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index a965b484087..22820d578a5 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -197,6 +197,13 @@ void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperato void WM_operator_properties_free(struct PointerRNA *ptr); void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type); void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend); +void WM_operator_properties_select_all(wmOperatorType *ot); + +/* MOVE THIS SOMEWHERE ELSE */ +#define SEL_TOGGLE 0 +#define SEL_SELECT 1 +#define SEL_DESELECT 2 +#define SEL_INVERT 3 /* operator as a python command (resultuing string must be free'd) */ char *WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 15e27f45d5e..ab4355bc524 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -668,6 +668,18 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type) RNA_def_property_flag(prop, PROP_HIDDEN); } +void WM_operator_properties_select_all(wmOperatorType *ot) { + static EnumPropertyItem select_all_actions[] = { + {SEL_TOGGLE, "TOGGLE", 0, "Toggle", "Toggle selection for all elements"}, + {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, + {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, + {SEL_INVERT, "INVERT", 0, "Invert", "Invert selection of all elements"}, + {0, NULL, 0, NULL, NULL} + }; + + RNA_def_enum(ot->srna, "action", select_all_actions, SEL_TOGGLE, "Action", "Selection action to execute"); +} + void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend) { RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); @@ -677,7 +689,7 @@ void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend) RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); if(extend) - RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); + RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection instead of deselecting everything first."); } -- cgit v1.2.3 From d98093a91ac7ce96ab6b1e14168493f9f69f379d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 Nov 2009 22:42:33 +0000 Subject: - added a new math function double_round, useful for rounding a number to a number of decimal places. - added Mathutils vector method, vec.asTuple(round), since this is tedious in python and fairly common task. --- source/blender/blenlib/BLI_math_base.h | 2 ++ source/blender/blenlib/intern/math_base.c | 31 +++++++++++++++++++++++++++++++ source/blender/python/generic/vector.c | 26 ++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h index 4e845ae35d9..af301386920 100644 --- a/source/blender/blenlib/BLI_math_base.h +++ b/source/blender/blenlib/BLI_math_base.h @@ -148,6 +148,8 @@ float power_of_2(float f); float shell_angle_to_dist(float angle); +double double_round(double x, int ndigits); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c index f3fe09c088f..e1a53a09d40 100644 --- a/source/blender/blenlib/intern/math_base.c +++ b/source/blender/blenlib/intern/math_base.c @@ -109,3 +109,34 @@ float power_of_2(float val) return (float)pow(2, ceil(log(val) / log(2))); } +/* from python 3.1 floatobject.c + * ndigits must be between 0 and 21 */ +double double_round(double x, int ndigits) { + double pow1, pow2, y, z; + if (ndigits >= 0) { + pow1 = pow(10.0, (double)ndigits); + pow2 = 1.0; + y = (x*pow1)*pow2; + /* if y overflows, then rounded value is exactly x */ + if (!finite(y)) + return x; + } + else { + pow1 = pow(10.0, (double)-ndigits); + pow2 = 1.0; /* unused; silences a gcc compiler warning */ + y = x / pow1; + } + + z = round(y); + if (fabs(y-z) == 0.5) + /* halfway between two integers; use round-half-even */ + z = 2.0*round(y/2.0); + + if (ndigits >= 0) + z = (z / pow2) / pow1; + else + z *= pow1; + + /* if computation resulted in overflow, raise OverflowError */ + return z; +} diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index b3e54ac2250..b8f2ca6f1df 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -48,6 +48,7 @@ static PyObject *Vector_Negate( VectorObject * self ); static PyObject *Vector_Resize2D( VectorObject * self ); static PyObject *Vector_Resize3D( VectorObject * self ); static PyObject *Vector_Resize4D( VectorObject * self ); +static PyObject *Vector_ToTuple( VectorObject * self, PyObject *value ); static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ); static PyObject *Vector_Reflect( VectorObject *self, VectorObject *value ); static PyObject *Vector_Cross( VectorObject * self, VectorObject * value ); @@ -61,6 +62,7 @@ static struct PyMethodDef Vector_methods[] = { {"resize2D", (PyCFunction) Vector_Resize2D, METH_NOARGS, NULL}, {"resize3D", (PyCFunction) Vector_Resize3D, METH_NOARGS, NULL}, {"resize4D", (PyCFunction) Vector_Resize4D, METH_NOARGS, NULL}, + {"toTuple", (PyCFunction) Vector_ToTuple, METH_O, NULL}, {"toTrackQuat", ( PyCFunction ) Vector_ToTrackQuat, METH_VARARGS, NULL}, {"reflect", ( PyCFunction ) Vector_Reflect, METH_O, NULL}, {"cross", ( PyCFunction ) Vector_Cross, METH_O, NULL}, @@ -236,6 +238,30 @@ static PyObject *Vector_Resize4D(VectorObject * self) Py_INCREF(self); return (PyObject*)self; } + +/*----------------------------Vector.resize4D() ------------------ + resize the vector to x,y,z,w */ +static PyObject *Vector_ToTuple(VectorObject * self, PyObject *value) +{ + int ndigits= PyLong_AsSsize_t(value); + int x; + + PyObject *ret; + + if(ndigits > 22 || ndigits < 0) { /* accounts for non ints */ + PyErr_SetString(PyExc_TypeError, "vector.key(ndigits): ndigits must be between 0 and 21"); + return NULL; + } + + ret= PyTuple_New(self->size); + + for(x = 0; x < self->size; x++) { + PyTuple_SET_ITEM(ret, x, PyFloat_FromDouble(double_round((double)self->vec[x], ndigits))); + } + + return ret; +} + /*----------------------------Vector.toTrackQuat(track, up) ---------------------- extract a quaternion from the vector and the track and up axis */ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) -- cgit v1.2.3 From 2bef608fb391fda4c87238abf10e2d3823a883d8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 Nov 2009 23:14:41 +0000 Subject: - new objects added from the rna api defaulted to quat rotation, not even using an identity quat. - making meshes in python isnt nice at the moment, added a helper function. mesh.from_pydata(verts, edges, faces) --- release/scripts/modules/bpy_types.py | 26 ++++++++++++++++++++++++++ source/blender/blenkernel/intern/object.c | 1 + 2 files changed, 27 insertions(+) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 13d48f05d18..fb1d2978c90 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -128,6 +128,32 @@ def ord_ind(i1,i2): return i2,i1 class Mesh(bpy_types.ID): + + def from_pydata(self, verts, edges, faces): + ''' + Make a mesh from a list of verts/edges/faces + Until we have a nicer way to make geometry, use this. + ''' + self.add_geometry(len(verts), len(edges), len(faces)) + + verts_flat = [f for v in verts for f in v] + self.verts.foreach_set("co", verts_flat) + del verts_flat + + edges_flat = [i for e in edges for i in e] + self.edges.foreach_set("verts", edges_flat) + del edges_flat + + def treat_face(f): + if len(f) == 3: + return f[0], f[1], f[2], 0 + elif f[3] == 0: + return f[3], f[0], f[1], f[2] + return f + + faces_flat = [v for f in faces for v in treat_face(f)] + self.faces.foreach_set("verts_raw", faces_flat) + del faces_flat @property def edge_keys(self): diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 73a1d2023a2..69c57fb38fe 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -963,6 +963,7 @@ Object *add_only_object(int type, char *name) /* default object vars */ ob->type= type; /* ob->transflag= OB_QUAT; */ + ob->rotmode= ROT_MODE_EUL; #if 0 /* not used yet */ unit_qt(ob->quat); -- cgit v1.2.3 From a96f6f2e15af08a9eb2f0ea4567abaddecdf5ac0 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 29 Nov 2009 23:54:41 +0000 Subject: * Moved rotation initialisation code for new objects to 'the other' add object function that campbell fixed earlier. This should mean that the py-api does everything in the right way now. * Tried adding 'Load Factory Settings' to File menu, but I seem to be running up against some RNA bugs. Can be removed if is too problematic. --- release/scripts/ui/space_info.py | 6 +++++ source/blender/blenkernel/intern/object.c | 40 ++++++++++--------------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index acbf44eb532..a9365ad2ecb 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -83,12 +83,18 @@ class INFO_MT_file(bpy.types.Menu): layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_as_mainfile", text="Save As...") + + layout.separator() + layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') + layout.operator("wm.read_homefile", text="Load Factory Settings").factory = True layout.separator() + layout.operator_context = 'INVOKE_AREA' layout.operator("wm.link_append", text="Link") layout.operator("wm.link_append", text="Append").link = False + layout.separator() layout.menu("INFO_MT_file_import") diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 69c57fb38fe..1e047380641 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -962,20 +962,22 @@ Object *add_only_object(int type, char *name) /* default object vars */ ob->type= type; - /* ob->transflag= OB_QUAT; */ - ob->rotmode= ROT_MODE_EUL; - -#if 0 /* not used yet */ - unit_qt(ob->quat); - unit_qt(ob->dquat); -#endif - + ob->col[0]= ob->col[1]= ob->col[2]= 1.0; ob->col[3]= 1.0; - - ob->loc[0]= ob->loc[1]= ob->loc[2]= 0.0; - ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0; + ob->size[0]= ob->size[1]= ob->size[2]= 1.0; + + /* objects should default to having Euler XYZ rotations, + * but rotations default to quaternions + */ + ob->rotmode= ROT_MODE_EUL; + /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */ + ob->rotAxis[1]= ob->drotAxis[1]= 1.0f; + /* quaternions should be 1,0,0,0 by default.... */ + ob->quat[0]= ob->dquat[0]= 1.0f; + /* rotation locks should be 4D for 4 component rotations by default... */ + ob->protectflag = OB_LOCK_ROT4D; unit_m4(ob->constinv); unit_m4(ob->parentinv); @@ -993,11 +995,6 @@ Object *add_only_object(int type, char *name) ob->upflag= OB_POSZ; } -#if 0 // XXX old animation system - ob->ipoflag = OB_OFFS_OB+OB_OFFS_PARENT; - ob->ipowin= ID_OB; /* the ipowin shown */ -#endif // XXX old animation system - ob->dupon= 1; ob->dupoff= 0; ob->dupsta= 1; ob->dupend= 100; ob->dupfacesca = 1.0; @@ -1039,17 +1036,6 @@ Object *add_object(struct Scene *scene, int type) ob->lay= scene->lay; - /* objects should default to having Euler XYZ rotations, - * but rotations default to quaternions - */ - ob->rotmode= ROT_MODE_EUL; - /* axis-angle must not have a 0,0,0 axis, so set y-axis as default... */ - ob->rotAxis[1]= ob->drotAxis[1]= 1.0f; - /* quaternions should be 1,0,0,0 by default.... */ - ob->quat[0]= 1.0f; - /* rotation locks should be 4D for 4 component rotations by default... */ - ob->protectflag = OB_LOCK_ROT4D; - base= scene_add_base(scene, ob); scene_select_base(scene, base); ob->recalc |= OB_RECALC; -- cgit v1.2.3 From 3d1f2974899308b5a58d28493da6f9eab966564c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 00:18:36 +0000 Subject: Added temporary compiling fix for MSVC after Campbell's rounding commit. Copied (in if-defs - for msvc win32/64) the python math functions used for dealing with the lack of a 'round()' function. --- source/blender/blenlib/intern/math_base.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c index e1a53a09d40..c5d0a1090b3 100644 --- a/source/blender/blenlib/intern/math_base.c +++ b/source/blender/blenlib/intern/math_base.c @@ -109,6 +109,35 @@ float power_of_2(float val) return (float)pow(2, ceil(log(val) / log(2))); } + +/* WARNING: MSVC compiling hack for double_round() */ +#if (WIN32 || WIN64) && !(FREE_WINDOWS) + +/* from python 3.1 pymath.c */ +double copysign(double x, double y) +{ + /* use atan2 to distinguish -0. from 0. */ + if (y > 0. || (y == 0. && atan2(y, -1.) > 0.)) { + return fabs(x); + } else { + return -fabs(x); + } +} + +/* from python 3.1 pymath.c */ +double round(double x) +{ + double absx, y; + absx = fabs(x); + y = floor(absx); + if (absx - y >= 0.5) + y += 1.0; + return copysign(y, x); +} + +#endif + + /* from python 3.1 floatobject.c * ndigits must be between 0 and 21 */ double double_round(double x, int ndigits) { -- cgit v1.2.3 From dc1af66d8a971ce5855ba5ceae1052e001acfae6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 01:13:46 +0000 Subject: - grease pencil drawing on the surface of objects (only when enable face snap & projection, a bit hidden I know) - retopo operator to convert grease pencil drawn topology into geometry, not in the convert menu yet since its not quite finished, use the operator search menu for retopo. will test this week and see what needs fixing. --- release/scripts/modules/retopo.py | 291 ++++++++++++++++++++++ release/scripts/op/object.py | 15 ++ source/blender/editors/gpencil/gpencil_edit.c | 2 +- source/blender/editors/gpencil/gpencil_paint.c | 62 +++-- source/blender/editors/include/ED_view3d.h | 5 + source/blender/editors/space_view3d/view3d_edit.c | 46 ++++ 6 files changed, 402 insertions(+), 19 deletions(-) create mode 100644 release/scripts/modules/retopo.py diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py new file mode 100644 index 00000000000..7d1c48a3f8f --- /dev/null +++ b/release/scripts/modules/retopo.py @@ -0,0 +1,291 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy + +EPS = 0.001 +EPS_LINE_LINE = 0.02 +EPS_COLLAPSE = 0.05 +EPS_HUB = 0.05 + +def get_hub(co, _hubs): + + if 1: + for hub in _hubs.values(): + if (hub.co - co).length < EPS_HUB: + return hub + + key = co.toTuple(3) + hub = _hubs[key] = Hub(co, key, len(_hubs)) + return hub + else: + pass + + ''' + key = co.toTuple(3) + try: + return _hubs[key] + except: + hub = _hubs[key] = Hub(co, key, len(_hubs)) + return hub + ''' + + +class Hub: + def __init__(self, co, key, index): + self.co = co.copy() + self.key = key + self.index = index + self.links = [] + + def get_weight(self): + f = 0.0 + + for hub_other in self.links: + f += (self.co - hub_other.co).length + + def replace(self, other): + for hub in self.links: + try: + hub.links.remove(self) + except: + pass + if other not in hub.links: + hub.links.append(other) + + + def dist(self, other): + return (self.co - other.co).length + + def calc_faces(self, hub_ls): + faces = [] + # first tris + for l_a in self.links: + for l_b in l_a.links: + if l_b is not self and l_b in self.links: + # will give duplicates + faces.append((self.index, l_a.index, l_b.index)) + + # now quads, check which links share 2 different verts + # directly + def validate_quad(face): + if len(set(face)) != len(face): + return False + if hub_ls[face[0]] in hub_ls[face[2]].links: + return False + if hub_ls[face[2]] in hub_ls[face[0]].links: + return False + + if hub_ls[face[1]] in hub_ls[face[3]].links: + return False + if hub_ls[face[3]] in hub_ls[face[1]].links: + return False + + return True + + for i, l_a in enumerate(self.links): + links_a = set([l.index for l in l_a.links]) + for j in range(i): + l_b = self.links[j] + + links_b = set([l.index for l in l_b.links]) + + isect = links_a.intersection(links_b) + if len(isect) == 2: + isect = list(isect) + + # check there are no diagonal lines + face = (isect[0], l_a.index, isect[1], l_b.index) + if validate_quad(face): + + faces.append(face) + + return faces + + + +class Spline: + def __init__(self, points): + self.points = points + self.hubs = [] + + def link(self): + if len(self.hubs) < 2: + return + + edges = list(set([i for i, hub in self.hubs])) + edges.sort() + + edges_order = {} + for i in edges: + edges_order[i] = [] + + + # self.hubs.sort() + for i, hub in self.hubs: + edges_order[i].append(hub) + + hubs_order = [] + for i in edges: + ls = edges_order[i] + edge_start = self.points[i] + ls.sort(key=lambda hub: (hub.co - edge_start).length) + hubs_order.extend(ls) + + # Now we have the order, connect the hubs + hub_prev = hubs_order[0] + + for hub in hubs_order[1:]: + hub.links.append(hub_prev) + hub_prev.links.append(hub) + hub_prev = hub + + + +def get_points(spline): + points = spline.points + + if len(spline.bezier_points): + points = spline.bezier_points + + return [point.co.copy().resize3D() for point in points] + + +def get_splines(data): + return [Spline(get_points(spline)) for spline in data.splines] + +def xsect_spline(sp_a, sp_b, _hubs): + from Mathutils import LineIntersect + from Mathutils import MidpointVecs + from Geometry import ClosestPointOnLine + pt_a_prev = pt_b_prev = None + + pt_a_prev = sp_a.points[0] + for a, pt_a in enumerate(sp_a.points[1:]): + pt_b_prev = sp_b.points[0] + for b, pt_b in enumerate(sp_b.points[1:]): + + # Now we have 2 edges + # print(pt_a, pt_a_prev, pt_b, pt_b_prev) + xsect = LineIntersect(pt_a, pt_a_prev, pt_b, pt_b_prev) + if xsect is not None: + if (xsect[0]-xsect[1]).length <= EPS_LINE_LINE: + f = ClosestPointOnLine(xsect[1], pt_a, pt_a_prev)[1] + if f >= 0.0 and f <= 1.0: + f = ClosestPointOnLine(xsect[0], pt_b, pt_b_prev)[1] + if f >= 0.0 and f <= 1.0: + # This wont happen often + co = MidpointVecs(xsect[0], xsect[1]) + hub = get_hub(co, _hubs) + + sp_a.hubs.append((a, hub)) + sp_b.hubs.append((b, hub)) + + pt_b_prev = pt_b + + pt_a_prev = pt_a + + +def calculate(scene, obj): + data = obj.data + splines = get_splines(data) + _hubs = {} + + for i, sp in enumerate(splines): + for j, sp_other in enumerate(splines): + if j<=i: + continue + + xsect_spline(sp, sp_other, _hubs) + + for sp in splines: + sp.link() + + # remove these + hubs_ls = [hub for hub in _hubs.values() if hub.index != -1] + + _hubs.clear() + _hubs = None + + for i, hub in enumerate(hubs_ls): + hub.index = i + + # Now we have connected hubs, write all edges! + def order(i1, i2): + if i1 > i2: + return i2, i1 + return i1, i2 + + edges = {} + + for hub in hubs_ls: + i1 = hub.index + for hub_other in hub.links: + i2 = hub_other.index + edges[order(i1, i2)] = None + + verts = [] + edges = edges.keys() + faces = [] + + for hub in hubs_ls: + verts.append(hub.co) + faces.extend(hub.calc_faces(hubs_ls)) + + # remove double faces + faces = dict([(tuple(sorted(f)), f) for f in faces]).values() + + mesh = bpy.data.add_mesh("Retopo") + mesh.from_pydata(verts, [], faces) + + scene = bpy.context.scene + mesh.update() + obj_new = bpy.data.add_object('MESH', "Torus") + obj_new.data = mesh + scene.objects.link(obj_new) + + return obj_new + + +def main(): + # first convert gpencil + # *** evil! + scene = bpy.context.scene + + bpy.ops.gpencil.convert(type='PATH') + + + scene = bpy.context.scene + obj = bpy.context.object + if not obj: + raise Exception("no active object") + + obj_new = calculate(scene, obj) + + # obj.selected = False + scene.objects.unlink(obj) + + scene.objects.active = obj_new + obj_new.selected = True + + # nasty, recalc normals + bpy.ops.object.mode_set(mode='EDIT', toggle=False) + bpy.ops.mesh.normals_make_consistent(inside=False) + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 8823045e07d..89ba38860b3 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -95,5 +95,20 @@ class SubsurfSet(bpy.types.Operator): return ('FINISHED',) +class Retopo(bpy.types.Operator): + '''TODO - doc''' + + bl_idname = "object.retopology" + bl_label = "Retopology from Grease Pencil" + bl_register = True + bl_undo = True + + def execute(self, context): + import retopo + retopo.main() + return ('FINISHED',) + + bpy.ops.add(SelectPattern) bpy.ops.add(SubsurfSet) +bpy.ops.add(Retopo) diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index c2b9a1a4bb9..2f41d90b37c 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -531,7 +531,7 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short } /* restore old active object */ - BASACT= base; + // BASACT= base; // removing since this is expected new objects are active. } /* --- */ diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index 4229c66353c..dce49cc4845 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -151,6 +151,21 @@ static int gpencil_draw_poll (bContext *C) return (gpencil_data_get_pointers(C, NULL) != NULL); } +static int gpencil_project_check(tGPsdata *p) +{ + bGPdata *gpd= p->gpd; + + /* in 3d-space - pt->x/y/z are 3 side-by-side floats */ + if( (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) && + (p->scene->toolsettings->snap_mode==SCE_SNAP_MODE_FACE) && + (p->scene->toolsettings->snap_flag & SCE_SNAP_PROJECT) ) + { + return 1; + } + + return 0; +} + /* ******************************************* */ /* Calculations/Conversions */ @@ -211,24 +226,29 @@ static void gp_stroke_convertcoords (tGPsdata *p, short mval[], float out[]) /* in 3d-space - pt->x/y/z are 3 side-by-side floats */ if (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) { - const short mx=mval[0], my=mval[1]; - float rvec[3], dvec[3]; - - /* Current method just converts each point in screen-coordinates to - * 3D-coordinates using the 3D-cursor as reference. In general, this - * works OK, but it could of course be improved. - * - * TODO: - * - investigate using nearest point(s) on a previous stroke as - * reference point instead or as offset, for easier stroke matching - * - investigate projection onto geometry (ala retopo) - */ - gp_get_3d_reference(p, rvec); - - /* method taken from editview.c - mouse_cursor() */ - project_short_noclip(p->ar, rvec, mval); - window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my); - sub_v3_v3v3(out, rvec, dvec); + if(gpencil_project_check(p) && (view_autodist_simple(p->ar, mval, out))) { + /* pass */ + } + else { + const short mx=mval[0], my=mval[1]; + float rvec[3], dvec[3]; + + /* Current method just converts each point in screen-coordinates to + * 3D-coordinates using the 3D-cursor as reference. In general, this + * works OK, but it could of course be improved. + * + * TODO: + * - investigate using nearest point(s) on a previous stroke as + * reference point instead or as offset, for easier stroke matching + */ + + gp_get_3d_reference(p, rvec); + + /* method taken from editview.c - mouse_cursor() */ + project_short_noclip(p->ar, rvec, mval); + window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my); + sub_v3_v3v3(out, rvec, dvec); + } } /* 2d - on 'canvas' (assume that p->v2d is set) */ @@ -1114,6 +1134,12 @@ static void gpencil_draw_exit (bContext *C, wmOperator *op) } /* cleanup */ + if(gpencil_project_check(p)) { + View3D *v3d= p->sa->spacedata.first; + view3d_operator_needs_opengl(C); + view_autodist_init(p->scene, p->ar, v3d); + } + gp_paint_cleanup(p); gp_session_cleanup(p); diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index ecd2d69b7fb..38a1d5ef9eb 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -117,8 +117,13 @@ unsigned int view3d_sample_backbuf_rect(struct ViewContext *vc, short mval[2], i void *handle, unsigned int (*indextest)(void *handle, unsigned int index)); unsigned int view3d_sample_backbuf(struct ViewContext *vc, int x, int y); +/* draws and does a 4x4 sample */ int view_autodist(struct Scene *scene, struct ARegion *ar, struct View3D *v3d, short *mval, float mouse_worldloc[3]); +/* only draw so view_autodist_simple can be called many times after */ +int view_autodist_init(struct Scene *scene, struct ARegion *ar, struct View3D *v3d); +int view_autodist_simple(struct ARegion *ar, short *mval, float mouse_worldloc[3]); + /* select */ #define MAXPICKBUF 10000 short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, rcti *input); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 2444c461bd0..9737e0cb167 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2205,7 +2205,53 @@ int view_autodist(Scene *scene, ARegion *ar, View3D *v3d, short *mval, float mou return 1; } +int view_autodist_init(Scene *scene, ARegion *ar, View3D *v3d) //, float *autodist ) +{ + RegionView3D *rv3d= ar->regiondata; + + /* Get Z Depths, needed for perspective, nice for ortho */ + draw_depth(scene, ar, v3d, NULL); + + /* force updating */ + if (rv3d->depths) { + rv3d->depths->damaged = 1; + } + + view3d_update_depths(ar, v3d); + return 1; +} + +// no 4x4 sampling, run view_autodist_init first +int view_autodist_simple(ARegion *ar, short *mval, float mouse_worldloc[3] ) //, float *autodist ) +{ + RegionView3D *rv3d= ar->regiondata; + bglMats mats; /* ZBuffer depth vars, could cache? */ + float depth; + double cent[2], p[3]; + + if (mval[0] < 0) return 0; + if (mval[1] < 0) return 0; + if (mval[0] >= rv3d->depths->w) return 0; + if (mval[1] >= rv3d->depths->h) return 0; + + /* Get Z Depths, needed for perspective, nice for ortho */ + bgl_get_mats(&mats); + depth= rv3d->depths->depths[mval[1]*rv3d->depths->w+mval[0]]; + if (depth==MAXFLOAT) + return 0; + + cent[0] = (double)mval[0]; + cent[1] = (double)mval[1]; + + if (!gluUnProject(cent[0], cent[1], depth, mats.modelview, mats.projection, (GLint *)mats.viewport, &p[0], &p[1], &p[2])) + return 0; + + mouse_worldloc[0] = (float)p[0]; + mouse_worldloc[1] = (float)p[1]; + mouse_worldloc[2] = (float)p[2]; + return 1; +} /* ********************* NDOF ************************ */ /* note: this code is confusing and unclear... (ton) */ -- cgit v1.2.3 From 3f37f32e177d125646b624e596157858f9ead443 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 02:28:50 +0000 Subject: scons + gcc linking fix for bullet softbodies: Upped the priority for the softbody module so that gcc linkers (mingw, linux-gcc) would be able to resolve the dependencies. MSVC still worked though. --- extern/bullet2/src/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/bullet2/src/SConscript b/extern/bullet2/src/SConscript index c0ee56045d8..5cb9185d6a1 100644 --- a/extern/bullet2/src/SConscript +++ b/extern/bullet2/src/SConscript @@ -42,4 +42,4 @@ env.BlenderLib ( libname = 'extern_bullet2collision_dispatch', sources=collision env.BlenderLib ( libname = 'extern_bullet2collision_gimpact', sources=collision_gimpact_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) env.BlenderLib ( libname = 'extern_bullet2collision_shapes', sources=collision_shapes_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) env.BlenderLib ( libname = 'extern_bullet2collision_narrowphase', sources=collision_narrowphase_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2softbody', sources=softbody_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[18,135], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2softbody', sources=softbody_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[30,135], compileflags=cflags ) -- cgit v1.2.3 From 9b0a3ee9ce7c2edf93d84457420a46703eb9c82f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 02:34:49 +0000 Subject: previous commit for retopo converted the strokes into a curve first, better to use the grease pencil data directly. renamed coordinates --> co, matching mesh verts --- release/scripts/modules/retopo.py | 50 +++++++++++++--------------- source/blender/makesrna/intern/rna_gpencil.c | 2 +- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index 7d1c48a3f8f..89d1066da52 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -156,20 +156,20 @@ class Spline: hub.links.append(hub_prev) hub_prev.links.append(hub) hub_prev = hub - - - -def get_points(spline): - points = spline.points - if len(spline.bezier_points): - points = spline.bezier_points +def get_points(stroke): + from Mathutils import Vector + # TODO - why isnt point.co a Vector? + return [Vector(tuple(point.co)) for point in stroke.points] - return [point.co.copy().resize3D() for point in points] - - -def get_splines(data): - return [Spline(get_points(spline)) for spline in data.splines] +def get_splines(gp): + for l in gp.layers: + if l.active: # XXX - should be layers.active + break + + frame = l.active_frame + + return [Spline(get_points(stroke)) for stroke in frame.strokes] def xsect_spline(sp_a, sp_b, _hubs): from Mathutils import LineIntersect @@ -203,9 +203,8 @@ def xsect_spline(sp_a, sp_b, _hubs): pt_a_prev = pt_a -def calculate(scene, obj): - data = obj.data - splines = get_splines(data) +def calculate(gp): + splines = get_splines(gp) _hubs = {} for i, sp in enumerate(splines): @@ -265,22 +264,21 @@ def calculate(scene, obj): def main(): - # first convert gpencil - # *** evil! scene = bpy.context.scene + obj = bpy.context.object - bpy.ops.gpencil.convert(type='PATH') - + gp = None - scene = bpy.context.scene - obj = bpy.context.object - if not obj: - raise Exception("no active object") + if obj: + gp = obj.grease_pencil - obj_new = calculate(scene, obj) + if not gp: + gp = scene.grease_pencil + + if not gp: + raise Exception("no active grease pencil") - # obj.selected = False - scene.objects.unlink(obj) + obj_new = calculate(gp) scene.objects.active = obj_new obj_new.selected = True diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index 2a4ff112c3c..87900c943a9 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -77,7 +77,7 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna) RNA_def_struct_sdna(srna, "bGPDspoint"); RNA_def_struct_ui_text(srna, "Grease Pencil Stroke Point", "Data point for freehand stroke curve."); - prop= RNA_def_property(srna, "coordinates", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "x"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Coordinates", ""); -- cgit v1.2.3 From caa11aae048639e6569d22c11af256447c8eb395 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 02:42:10 +0000 Subject: Assorted tweaks for subdivide operator ranges - soft/hard ranges were swapped. --- source/blender/editors/armature/editarmature.c | 6 +++--- source/blender/editors/mesh/editmesh_tools.c | 4 ++-- source/blender/makesrna/intern/rna_scene.c | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 38daa22bbc7..a9efe4be9cb 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -1139,7 +1139,7 @@ static int separate_armature_exec (bContext *C, wmOperator *op) void ARMATURE_OT_separate (wmOperatorType *ot) { /* identifiers */ - ot->name= "Separate Armature"; + ot->name= "Separate Bones"; ot->idname= "ARMATURE_OT_separate"; ot->description= "Isolate selected bones into a separate armature."; @@ -3573,7 +3573,7 @@ void ARMATURE_OT_subdivide_multi(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* Properties */ - RNA_def_int(ot->srna, "number_cuts", 2, 1, 10, "Number of Cuts", "", 1, INT_MAX); + RNA_def_int(ot->srna, "number_cuts", 2, 1, INT_MAX, "Number of Cuts", "", 1, 10); } @@ -3631,7 +3631,7 @@ void ARMATURE_OT_subdivs(wmOperatorType *ot) RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); /* this is temp, the ops are different, but they are called from subdivs, so all the possible props should be here as well*/ - RNA_def_int(ot->srna, "number_cuts", 2, 1, 10, "Number of Cuts", "", 1, INT_MAX); + RNA_def_int(ot->srna, "number_cuts", 2, 1, INT_MAX, "Number of Cuts", "", 1, 10); } /* ----------- */ diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index b89940fa882..e439968d380 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -6711,9 +6711,9 @@ void MESH_OT_subdivide(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_int(ot->srna, "number_cuts", 1, 1, 10, "Number of Cuts", "", 1, INT_MAX); + RNA_def_int(ot->srna, "number_cuts", 1, 1, INT_MAX, "Number of Cuts", "", 1, 10); RNA_def_float(ot->srna, "fractal", 0.0, 0.0f, FLT_MAX, "Fractal", "Fractal randomness factor.", 0.0f, 1000.0f); - RNA_def_float(ot->srna, "smoothness", 0.0f, 0.0f, 1000.0f, "Smoothness", "Smoothness factor.", 0.0f, FLT_MAX); + RNA_def_float(ot->srna, "smoothness", 0.0f, 0.0f, FLT_MAX, "Smoothness", "Smoothness factor.", 0.0f, 1000.0f); } /********************** Fill Operators *************************/ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 7d5a74cbf68..433e0974d35 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2314,7 +2314,6 @@ void RNA_def_scene(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; -// PropertyRNA *prop_act; FunctionRNA *func; static EnumPropertyItem audio_distance_model_items[] = { -- cgit v1.2.3 From 7fd2a2da6fe7c57aecfe615725f57156e1f37721 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 03:10:46 +0000 Subject: * Grease Pencil drawing now works with Repeat Last operator. Stroke info is now saved when drawing strokes, but unfortunately, the post-draw settings tweaking doesn't work from the toolbar still (due to missing region context info) * Added some update callbacks/flags for F-Curve properties, so changing the colour of an F-Curve updates in realtime. --- source/blender/editors/armature/armature_ops.c | 2 +- source/blender/editors/gpencil/gpencil_paint.c | 27 +++++++++++++------------- source/blender/makesrna/intern/rna_fcurve.c | 7 ++++++- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index d1c50439c01..7caadf532e5 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -162,7 +162,7 @@ void ED_operatormacros_armature(void) wmOperatorType *ot; wmOperatorTypeMacro *otmacro; - ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); + ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate"); otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index dce49cc4845..3f9e3e04411 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -151,11 +151,11 @@ static int gpencil_draw_poll (bContext *C) return (gpencil_data_get_pointers(C, NULL) != NULL); } -static int gpencil_project_check(tGPsdata *p) +/* check if projecting strokes into 3d-geometry in the 3D-View */ +static int gpencil_project_check (tGPsdata *p) { bGPdata *gpd= p->gpd; - - /* in 3d-space - pt->x/y/z are 3 side-by-side floats */ + if( (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) && (p->scene->toolsettings->snap_mode==SCE_SNAP_MODE_FACE) && (p->scene->toolsettings->snap_flag & SCE_SNAP_PROJECT) ) @@ -227,12 +227,14 @@ static void gp_stroke_convertcoords (tGPsdata *p, short mval[], float out[]) /* in 3d-space - pt->x/y/z are 3 side-by-side floats */ if (gpd->sbuffer_sflag & GP_STROKE_3DSPACE) { if(gpencil_project_check(p) && (view_autodist_simple(p->ar, mval, out))) { - /* pass */ + /* projecting onto 3D-Geometry + * - nothing more needs to be done here, since view_autodist_simple() has already done it + */ } else { const short mx=mval[0], my=mval[1]; float rvec[3], dvec[3]; - + /* Current method just converts each point in screen-coordinates to * 3D-coordinates using the 3D-cursor as reference. In general, this * works OK, but it could of course be improved. @@ -241,9 +243,9 @@ static void gp_stroke_convertcoords (tGPsdata *p, short mval[], float out[]) * - investigate using nearest point(s) on a previous stroke as * reference point instead or as offset, for easier stroke matching */ - + gp_get_3d_reference(p, rvec); - + /* method taken from editview.c - mouse_cursor() */ project_short_noclip(p->ar, rvec, mval); window_to_3d_delta(p->ar, dvec, mval[0]-mx, mval[1]-my); @@ -1136,6 +1138,8 @@ static void gpencil_draw_exit (bContext *C, wmOperator *op) /* cleanup */ if(gpencil_project_check(p)) { View3D *v3d= p->sa->spacedata.first; + + /* need to restore the original projection settings before packing up */ view3d_operator_needs_opengl(C); view_autodist_init(p->scene, p->ar, v3d); } @@ -1206,8 +1210,8 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even { tGPsdata *p= op->customdata; ARegion *ar= p->ar; - //PointerRNA itemptr; - //float mousef[2]; + PointerRNA itemptr; + float mousef[2]; int tablet=0; /* convert from window-space to area-space mouse coordintes */ @@ -1242,7 +1246,6 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even return; } -#if 0 // NOTE: disabled for now, since creating this data is currently useless anyways (and slows things down) /* fill in stroke data (not actually used directly by gpencil_draw_apply) */ RNA_collection_add(op->ptr, "stroke", &itemptr); @@ -1250,7 +1253,6 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even mousef[1]= p->mval[1]; RNA_float_set_array(&itemptr, "mouse", mousef); RNA_float_set(&itemptr, "pressure", p->pressure); -#endif /* apply the current latest drawing point */ gpencil_draw_apply(C, op, p); @@ -1261,7 +1263,7 @@ static void gpencil_draw_apply_event (bContext *C, wmOperator *op, wmEvent *even /* ------------------------------- */ -/* operator 'redo' (i.e. after changing some properties) */ +/* operator 'redo' (i.e. after changing some properties, but also for repeat last) */ static int gpencil_draw_exec (bContext *C, wmOperator *op) { tGPsdata *p = NULL; @@ -1462,6 +1464,5 @@ void GPENCIL_OT_draw (wmOperatorType *ot) /* settings for drawing */ RNA_def_enum(ot->srna, "mode", prop_gpencil_drawmodes, 0, "Mode", "Way to intepret mouse movements."); - // xxx the stuff below is used only for redo operator, but is not really working RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", ""); } diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 88dfe358f98..fbf4a8b41c5 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -862,7 +862,7 @@ static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_struct_type(prop, "FModifier"); RNA_def_property_pointer_funcs(prop, "rna_FCurve_active_modifier_get", "rna_FCurve_active_modifier_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve modifier."); + RNA_def_property_ui_text(prop, "Active F-Curve Modifier", "Active F-Curve Modifier."); /* Constraint collection */ func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new"); @@ -910,6 +910,7 @@ static void rna_def_fcurve(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "extend"); RNA_def_property_enum_items(prop, prop_mode_extend_items); RNA_def_property_ui_text(prop, "Extrapolation", ""); + RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this so that animation gets evaluated /* Pointers */ prop= RNA_def_property(srna, "driver", PROP_POINTER, PROP_NONE); @@ -920,18 +921,22 @@ static void rna_def_fcurve(BlenderRNA *brna) prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_FCurve_RnaPath_get", "rna_FCurve_RnaPath_length", "rna_FCurve_RnaPath_set"); RNA_def_property_ui_text(prop, "RNA Path", "RNA Path to property affected by F-Curve."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this to that animation gets evaluated prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific property affected by F-Curve if applicable."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this so that animation gets evaluated /* Color */ prop= RNA_def_property(srna, "color_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, prop_mode_color_items); RNA_def_property_ui_text(prop, "Color Mode", "Method used to determine color of F-Curve in Graph Editor."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Color", "Color of the F-Curve in the Graph Editor."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* Collections */ prop= RNA_def_property(srna, "sampled_points", PROP_COLLECTION, PROP_NONE); -- cgit v1.2.3 From e5260470615635600b2cea2ff7f707453a21502e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 10:21:42 +0000 Subject: retopo: use a smaller scale for faces that are modeled where 1.0==1m, will eventually try to use a method that doesnt depend on scale like this grease pencil point.co wasnt a vector when it should be --- release/scripts/modules/retopo.py | 6 ++---- source/blender/makesrna/intern/rna_gpencil.c | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index 89d1066da52..e9cd6240740 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -23,7 +23,7 @@ import bpy EPS = 0.001 EPS_LINE_LINE = 0.02 EPS_COLLAPSE = 0.05 -EPS_HUB = 0.05 +EPS_HUB = 0.002 def get_hub(co, _hubs): @@ -158,9 +158,7 @@ class Spline: hub_prev = hub def get_points(stroke): - from Mathutils import Vector - # TODO - why isnt point.co a Vector? - return [Vector(tuple(point.co)) for point in stroke.points] + return [point.co.copy() for point in stroke.points] def get_splines(gp): for l in gp.layers: diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index 87900c943a9..129fad4e98c 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -77,7 +77,7 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna) RNA_def_struct_sdna(srna, "bGPDspoint"); RNA_def_struct_ui_text(srna, "Grease Pencil Stroke Point", "Data point for freehand stroke curve."); - prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "x"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Coordinates", ""); -- cgit v1.2.3 From a2d757dc7d12ee6e58c853738a6a9a934da5b357 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 11:10:03 +0000 Subject: Durian Requests for Graph Editor Visibility Toggles (2): Improved the hotkeys for toggling the visibility of channels in the keys area for the Graph Editor. * VKEY - this is now used for making only the selected channels visible, hiding everything else * Shift-VKEY - the old toggling behaviour In addition to this, I've made these toggling operators flush the visibility flags up/down the hierarchy, just like clicking on the channels manually do. There are still a few minor oddities to iron out, but it should be better than before. Also, fixed a bug with these toggling operators introduced during my earlier commit to make filtering work ok. It's always tricky getting these layers of checks just right, so hopefully nothing breaks now again... --- .../editors/animation/anim_channels_defines.c | 92 +--------- .../blender/editors/animation/anim_channels_edit.c | 190 ++++++++++++++++++++- source/blender/editors/animation/anim_filter.c | 10 +- source/blender/editors/include/ED_anim_api.h | 11 ++ 4 files changed, 210 insertions(+), 93 deletions(-) diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 24a8fb445c7..c3044e03a2f 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -2340,13 +2340,10 @@ static void achannel_setting_widget_cb(bContext *C, void *poin, void *poin2) static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, void *dummy_poin) { bAnimListElem *ale_setting= (bAnimListElem *)ale_npoin; - int prevLevel=0, matchLevel=0; - short vizOn = 0; - bAnimContext ac; ListBase anim_data = {NULL, NULL}; - bAnimListElem *ale, *match=NULL; int filter; + short vizOn = 0; /* send notifiers before doing anything else... */ WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); @@ -2374,91 +2371,8 @@ static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, voi filter= ANIMFILTER_CHANNELS; ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); - /* find the channel that got changed */ - for (ale= anim_data.first; ale; ale= ale->next) { - /* compare data, and type as main way of identifying the channel */ - if ((ale->data == ale_setting->data) && (ale->type == ale_setting->type)) { - /* we also have to check the ID, this is assigned to, since a block may have multiple users */ - // TODO: is the owner-data more revealing? - if (ale->id == ale_setting->id) { - match= ale; - break; - } - } - } - if (match == NULL) { - printf("ERROR: no channel matching the one changed was found \n"); - BLI_freelistN(&anim_data); - return; - } - else { - bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale_setting); - - /* get the level of the channel that was affected - * - we define the level as simply being the offset for the start of the channel - */ - matchLevel= (acf->get_offset)? acf->get_offset(&ac, ale_setting) : 0; - } - - /* flush up? - * - only flush up if the current state is now enabled - * (otherwise, it's too much work to force the parents to be inactive too) - */ - if (vizOn) { - /* go backwards in the list, until the highest-ranking element (by indention has been covered) */ - for (ale= match->prev; ale; ale= ale->prev) { - bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); - int level; - - /* get the level of the current channel traversed - * - we define the level as simply being the offset for the start of the channel - */ - level= (acf->get_offset)? acf->get_offset(&ac, ale) : 0; - - /* if the level is 'less than' (i.e. more important) the previous channel, - * flush the new status... - */ - if (level < matchLevel) - ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn); - /* however, if the level is 'greater than' (i.e. less important than the previous channel, - * stop searching, since we've already reached the bottom of another hierarchy - */ - else if (level > matchLevel) - break; - - /* store this level as the 'old' level now */ - prevLevel= level; - } - } - - /* flush down (always) */ - { - /* go forwards in the list, until the lowest-ranking element (by indention has been covered) */ - for (ale= match->next; ale; ale= ale->next) { - bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); - int level; - - /* get the level of the current channel traversed - * - we define the level as simply being the offset for the start of the channel - */ - level= (acf->get_offset)? acf->get_offset(&ac, ale) : 0; - - /* if the level is 'greater than' (i.e. less important) the channel that was changed, - * flush the new status... - */ - if (level > matchLevel) - ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn); - /* however, if the level is 'less than or equal to' the channel that was changed, - * (i.e. the current channel is as important if not more important than the changed channel) - * then we should stop, since we've found the last one of the children we should flush - */ - else - break; - - /* store this level as the 'old' level now */ - prevLevel= level; - } - } + /* call API method to flush the setting */ + ANIM_visibility_flush_anim_channels(&ac, &anim_data, ale_setting, vizOn); /* free temp data */ BLI_freelistN(&anim_data); diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 01ab7bd530c..e4ce26b6156 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -352,6 +352,106 @@ void ANIM_deselect_anim_channels (void *data, short datatype, short test, short BLI_freelistN(&anim_data); } +/* Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting + * - anim_data: list of the all the anim channels that can be chosen + * -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too, + * then the channels under closed expanders get ignored... + * - ale_setting: the anim channel (not in the anim_data list directly, though occuring there) + * with the new state of the setting that we want flushed up/down the hierarchy + * - vizOn: whether the visibility setting has been enabled or disabled + */ +void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, short vizOn) +{ + bAnimListElem *ale, *match=NULL; + int prevLevel=0, matchLevel=0; + + /* find the channel that got changed */ + for (ale= anim_data->first; ale; ale= ale->next) { + /* compare data, and type as main way of identifying the channel */ + if ((ale->data == ale_setting->data) && (ale->type == ale_setting->type)) { + /* we also have to check the ID, this is assigned to, since a block may have multiple users */ + // TODO: is the owner-data more revealing? + if (ale->id == ale_setting->id) { + match= ale; + break; + } + } + } + if (match == NULL) { + printf("ERROR: no channel matching the one changed was found \n"); + return; + } + else { + bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale_setting); + + /* get the level of the channel that was affected + * - we define the level as simply being the offset for the start of the channel + */ + matchLevel= (acf->get_offset)? acf->get_offset(ac, ale_setting) : 0; + } + + /* flush up? + * - only flush up if the current state is now enabled + * (otherwise, it's too much work to force the parents to be inactive too) + */ + if (vizOn) { + /* go backwards in the list, until the highest-ranking element (by indention has been covered) */ + for (ale= match->prev; ale; ale= ale->prev) { + bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); + int level; + + /* get the level of the current channel traversed + * - we define the level as simply being the offset for the start of the channel + */ + level= (acf->get_offset)? acf->get_offset(ac, ale) : 0; + + /* if the level is 'less than' (i.e. more important) the level we're matching + * but also 'less than' the level just tried (i.e. only the 1st group above grouped F-Curves, + * when toggling visibility of F-Curves, gets flushed), flush the new status... + */ + if (level < prevLevel) + ANIM_channel_setting_set(ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn); + /* however, if the level is 'greater than' (i.e. less important than the previous channel, + * stop searching, since we've already reached the bottom of another hierarchy + */ + else if (level > matchLevel) + break; + + /* store this level as the 'old' level now */ + prevLevel= level; + } + } + + /* flush down (always) */ + { + /* go forwards in the list, until the lowest-ranking element (by indention has been covered) */ + for (ale= match->next; ale; ale= ale->next) { + bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); + int level; + + /* get the level of the current channel traversed + * - we define the level as simply being the offset for the start of the channel + */ + level= (acf->get_offset)? acf->get_offset(ac, ale) : 0; + + /* if the level is 'greater than' (i.e. less important) the channel that was changed, + * flush the new status... + */ + if (level > matchLevel) + ANIM_channel_setting_set(ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn); + /* however, if the level is 'less than or equal to' the channel that was changed, + * (i.e. the current channel is as important if not more important than the changed channel) + * then we should stop, since we've found the last one of the children we should flush + */ + else + break; + + /* store this level as the 'old' level now */ + prevLevel= level; + } + } +} + /* ************************************************************************** */ /* OPERATORS */ @@ -895,12 +995,87 @@ void ANIM_OT_channels_delete (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ******************** Set Channel Visibility Operator *********************** */ +/* NOTE: this operator is only valid in the Graph Editor channels region */ + +static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) +{ + bAnimContext ac; + ListBase anim_data = {NULL, NULL}; + ListBase all_data = {NULL, NULL}; + bAnimListElem *ale; + int filter; + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + + /* hide all channels not selected */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_UNSEL); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + for (ale= anim_data.first; ale; ale= ale->next) + ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, ACHANNEL_SETFLAG_CLEAR); + + BLI_freelistN(&anim_data); + + + /* get list of all channels that selection may need to be flushed to */ + filter= ANIMFILTER_CHANNELS; + ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype); + + /* make all the selected channels visible */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + for (ale= anim_data.first; ale; ale= ale->next) { + /* hack: skip object channels for now, since flushing those will always flush everything, but they are always included */ + // TODO: find out why this is the case, and fix that + if (ale->type == ANIMTYPE_OBJECT) + continue; + + /* enable the setting */ + ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, ACHANNEL_SETFLAG_ADD); + + /* now, also flush selection status up/down as appropriate */ + ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, 1); + } + + BLI_freelistN(&anim_data); + BLI_freelistN(&all_data); + + + /* send notifier that things have changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + + return OPERATOR_FINISHED; +} + +void ANIM_OT_channels_visibility_set (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Set Visibility"; + ot->idname= "ANIM_OT_channels_visibility_set"; + ot->description= "Make only the selected animation channels visible in the Graph Editor."; + + /* api callbacks */ + ot->exec= animchannels_visibility_set_exec; + ot->poll= ED_operator_ipo_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /* ******************** Toggle Channel Visibility Operator *********************** */ +/* NOTE: this operator is only valid in the Graph Editor channels region */ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) { bAnimContext ac; ListBase anim_data = {NULL, NULL}; + ListBase all_data = {NULL, NULL}; bAnimListElem *ale; int filter; short vis= ACHANNEL_SETFLAG_ADD; @@ -909,6 +1084,10 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; + /* get list of all channels that selection may need to be flushed to */ + filter= ANIMFILTER_CHANNELS; + ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype); + /* filter data */ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); @@ -922,14 +1101,19 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) if (ANIM_channel_setting_get(&ac, ale, ACHANNEL_SETTING_VISIBLE)) vis= ACHANNEL_SETFLAG_CLEAR; } - + /* Now set the flags */ for (ale= anim_data.first; ale; ale= ale->next) { + /* change the setting */ ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vis); + + /* now, also flush selection status up/down as appropriate */ + //ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, (vis == ACHANNEL_SETFLAG_ADD)); } /* cleanup */ BLI_freelistN(&anim_data); + BLI_freelistN(&all_data); /* send notifier that things have changed */ WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); @@ -1696,6 +1880,7 @@ void ED_operatortypes_animchannels(void) WM_operatortype_append(ANIM_OT_channels_collapse); WM_operatortype_append(ANIM_OT_channels_visibility_toggle); + WM_operatortype_append(ANIM_OT_channels_visibility_set); } void ED_keymap_animchannels(wmKeyConfig *keyconf) @@ -1742,7 +1927,8 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) //WM_keymap_add_item(keymap, "ANIM_OT_channels_move_to_bottom", PAGEDOWNKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); /* Graph Editor only */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_toggle", VKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_set", VKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_channels_visibility_toggle", VKEY, KM_PRESS, KM_SHIFT, 0); } /* ************************************************************************** */ diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 6586317b6dc..544157c4030 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -859,10 +859,16 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction /* get the first F-Curve in this group we can start to use, * and if there isn't any F-Curve to start from, then don't * this group at all... + * + * exceptions for when we might not care whether there's anything inside this group or not + * - if we're interested in channels and their selections, in which case group channel should get considered too + * even if all its sub channels are hidden... */ first_fcu = animdata_filter_fcurve_next(ads, agrp->channels.first, agrp, filter_mode, owner_id); - if (first_fcu) { + if ( (filter_mode & (ANIMFILTER_SEL|ANIMFILTER_UNSEL)) || + (first_fcu) ) + { /* add this group as a channel first */ if ((filter_mode & ANIMFILTER_CHANNELS) || !(filter_mode & ANIMFILTER_CURVESONLY)) { /* check if filtering by selection */ @@ -1806,7 +1812,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo /* additionally, dopesheet filtering also affects what objects to consider */ if (ads->filterflag) { /* check selection and object type filters */ - if ( (ads->filterflag & ADS_FILTER_ONLYSEL) && !((base->flag & SELECT) || (base == sce->basact)) ) { + if ( (ads->filterflag & ADS_FILTER_ONLYSEL) && !((base->flag & SELECT) /*|| (base == sce->basact)*/) ) { /* only selected should be shown */ continue; } diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 59efa01cc35..8a73e12f39b 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -377,6 +377,17 @@ short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, int setting void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, int setting, short mode); +/* Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting + * - anim_data: list of the all the anim channels that can be chosen + * -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too, + * then the channels under closed expanders get ignored... + * - ale_setting: the anim channel (not in the anim_data list directly, though occuring there) + * with the new state of the setting that we want flushed up/down the hierarchy + * - vizOn: whether the visibility setting has been enabled or disabled + */ +void ANIM_visibility_flush_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, short vizOn); + + /* Deselect all animation channels */ void ANIM_deselect_anim_channels(void *data, short datatype, short test, short sel); -- cgit v1.2.3 From e1ba5517e65a702bfabac00e5981cf1b103d971a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 11:18:46 +0000 Subject: better remove doubles for retopo, use 15th the of the average of both splines lengths (less scale dependant) --- release/scripts/modules/retopo.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index e9cd6240740..081ac1b0168 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -20,16 +20,13 @@ import bpy -EPS = 0.001 -EPS_LINE_LINE = 0.02 -EPS_COLLAPSE = 0.05 -EPS_HUB = 0.002 +EPS_SPLINE_DIV = 15.0 # remove doubles is ~15th the length of the spline -def get_hub(co, _hubs): +def get_hub(co, _hubs, EPS_SPLINE): if 1: for hub in _hubs.values(): - if (hub.co - co).length < EPS_HUB: + if (hub.co - co).length < EPS_SPLINE: return hub key = co.toTuple(3) @@ -48,7 +45,8 @@ def get_hub(co, _hubs): ''' -class Hub: +class Hub(object): + __slots__ = "co", "key", "index", "links" def __init__(self, co, key, index): self.co = co.copy() self.key = key @@ -122,9 +120,18 @@ class Hub: class Spline: + __slots__ = "points", "hubs", "length" def __init__(self, points): self.points = points self.hubs = [] + + # calc length + f = 0.0 + co_prev = self.points[0] + for co in self.points[1:]: + f += (co - co_prev).length + co_prev = co + self.length = f def link(self): if len(self.hubs) < 2: @@ -174,7 +181,7 @@ def xsect_spline(sp_a, sp_b, _hubs): from Mathutils import MidpointVecs from Geometry import ClosestPointOnLine pt_a_prev = pt_b_prev = None - + EPS_SPLINE = (sp_a.length + sp_b.length) / (EPS_SPLINE_DIV * 2) pt_a_prev = sp_a.points[0] for a, pt_a in enumerate(sp_a.points[1:]): pt_b_prev = sp_b.points[0] @@ -184,14 +191,16 @@ def xsect_spline(sp_a, sp_b, _hubs): # print(pt_a, pt_a_prev, pt_b, pt_b_prev) xsect = LineIntersect(pt_a, pt_a_prev, pt_b, pt_b_prev) if xsect is not None: - if (xsect[0]-xsect[1]).length <= EPS_LINE_LINE: + if (xsect[0]-xsect[1]).length <= EPS_SPLINE: f = ClosestPointOnLine(xsect[1], pt_a, pt_a_prev)[1] + # if f >= 0.0-EPS_SPLINE and f <= 1.0+EPS_SPLINE: # for some reason doesnt work so well, same below if f >= 0.0 and f <= 1.0: f = ClosestPointOnLine(xsect[0], pt_b, pt_b_prev)[1] + # if f >= 0.0-EPS_SPLINE and f <= 1.0+EPS_SPLINE: if f >= 0.0 and f <= 1.0: # This wont happen often co = MidpointVecs(xsect[0], xsect[1]) - hub = get_hub(co, _hubs) + hub = get_hub(co, _hubs, EPS_SPLINE) sp_a.hubs.append((a, hub)) sp_b.hubs.append((b, hub)) -- cgit v1.2.3 From 679da5eb50651f9000333df424fbcdd73d129fc0 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 30 Nov 2009 11:37:27 +0000 Subject: Durian Graph Editor Request: Only show handles of selected keyframes This option for the Graph Editor means that only the handles for selected keyframes get shown in the view, eliminating clutter. Currently, the selection code isn't aware of this option, so clicking anywhere near where a handle might be may often trigger it to show up. This may/may not be desireable, but we'll see how Lee goes with this first :) --- source/blender/editors/space_graph/graph_draw.c | 46 ++++++++++++++++------- source/blender/editors/space_graph/graph_header.c | 1 + source/blender/makesdna/DNA_space_types.h | 1 + source/blender/makesrna/intern/rna_space.c | 6 +++ 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 3a7f9024510..9681d20c13b 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -235,7 +235,7 @@ static void draw_fcurve_handle_control (float x, float y, float xscale, float ys } /* helper func - draw handle vertices only for an F-Curve (if it is not protected) */ -static void draw_fcurve_vertices_handles (FCurve *fcu, View2D *v2d, short sel) +static void draw_fcurve_vertices_handles (SpaceIpo *sipo, FCurve *fcu, View2D *v2d, short sel) { BezTriple *bezt= fcu->bezt; BezTriple *prevbezt = NULL; @@ -255,19 +255,24 @@ static void draw_fcurve_vertices_handles (FCurve *fcu, View2D *v2d, short sel) glEnable(GL_BLEND); for (i=0; i < fcu->totvert; i++, prevbezt=bezt, bezt++) { - /* Draw the editmode handels for a bezier curve (others don't have handles) + /* Draw the editmode handles for a bezier curve (others don't have handles) * if their selection status matches the selection status we're drawing for * - first handle only if previous beztriple was bezier-mode * - second handle only if current beztriple is bezier-mode + * + * Also, need to take into account whether the keyframe was selected + * if a Graph Editor option to only show handles of selected keys is on. */ - if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) { - if ((bezt->f1 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[0][0] < v2d->cur.xmax)*/ - draw_fcurve_handle_control(bezt->vec[0][0], bezt->vec[0][1], xscale, yscale, hsize); - } - - if (bezt->ipo==BEZT_IPO_BEZ) { - if ((bezt->f3 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[2][0] < v2d->cur.xmax)*/ - draw_fcurve_handle_control(bezt->vec[2][0], bezt->vec[2][1], xscale, yscale, hsize); + if ( !(sipo->flag & SIPO_SELVHANDLESONLY) || BEZSELECTED(bezt) ) { + if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) { + if ((bezt->f1 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[0][0] < v2d->cur.xmax)*/ + draw_fcurve_handle_control(bezt->vec[0][0], bezt->vec[0][1], xscale, yscale, hsize); + } + + if (bezt->ipo==BEZT_IPO_BEZ) { + if ((bezt->f3 & SELECT) == sel)/* && v2d->cur.xmin < bezt->vec[2][0] < v2d->cur.xmax)*/ + draw_fcurve_handle_control(bezt->vec[2][0], bezt->vec[2][1], xscale, yscale, hsize); + } } } @@ -313,10 +318,10 @@ void draw_fcurve_vertices (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) (sipo->flag & SIPO_NOHANDLES)==0 && (fcu->totvert > 1)) { set_fcurve_vertex_color(sipo, fcu, 0); - draw_fcurve_vertices_handles(fcu, v2d, 0); + draw_fcurve_vertices_handles(sipo, fcu, v2d, 0); set_fcurve_vertex_color(sipo, fcu, 1); - draw_fcurve_vertices_handles(fcu, v2d, 1); + draw_fcurve_vertices_handles(sipo, fcu, v2d, 1); } /* draw keyframes over the handles */ @@ -347,13 +352,28 @@ static void draw_fcurve_handles (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) */ glBegin(GL_LINES); - /* slightly hacky, but we want to draw unselected points before selected ones */ + /* slightly hacky, but we want to draw unselected points before selected ones + * so that selected points are clearly visible + */ for (sel= 0; sel < 2; sel++) { BezTriple *bezt=fcu->bezt, *prevbezt=NULL; unsigned int *col= (sel)? (nurbcol+4) : (nurbcol); float *fp; + /* if only selected keyframes have handles shown, skip the first round */ + if ((sel == 0) && (sipo->flag & SIPO_SELVHANDLESONLY)) + continue; + for (b= 0; b < fcu->totvert; b++, prevbezt=bezt, bezt++) { + /* if only selected keyframes can get their handles shown, + * check that keyframe is selected + */ + if (sipo->flag & SIPO_SELVHANDLESONLY) { + if (BEZSELECTED(bezt) == 0) + continue; + } + + /* draw handle with appropriate set of colors if selection is ok */ if ((bezt->f2 & SELECT)==sel) { fp= bezt->vec[0]; diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index e05e41f1b66..bf8777164c5 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -91,6 +91,7 @@ static void graph_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemO(layout, "Show Handles", ICON_CHECKBOX_HLT, "GRAPH_OT_handles_view_toggle"); uiItemR(layout, NULL, 0, &spaceptr, "only_selected_curves_handles", 0); + uiItemR(layout, NULL, 0, &spaceptr, "only_selected_keyframe_handles", 0); if (sipo->flag & SIPO_DRAWTIME) diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index fd2e03e173e..7a76417fe4b 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -726,6 +726,7 @@ enum FileSortTypeE { #define SIPO_DRAWNAMES (1<<6) #define SIPO_SLIDERS (1<<7) #define SIPO_NODRAWCURSOR (1<<8) +#define SIPO_SELVHANDLESONLY (1<<9) /* SpaceIpo->mode (Graph Editor Mode) */ enum { diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index ea695880526..a5c02462ac2 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -93,6 +93,7 @@ static EnumPropertyItem transform_orientation_items[] = { #include "BKE_brush.h" #include "BKE_colortools.h" #include "BKE_context.h" +#include "BKE_depsgraph.h" #include "BKE_paint.h" #include "ED_image.h" @@ -1308,6 +1309,11 @@ static void rna_def_space_graph(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Only Selected Curve Keyframes", "Only keyframes of selected F-Curves are visible and editable."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + prop= RNA_def_property(srna, "only_selected_keyframe_handles", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_SELVHANDLESONLY); + RNA_def_property_ui_text(prop, "Only Selected Keyframes Handles", "Only show and edit handles of selected keyframes."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + /* editing */ prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOTRANSKEYCULL); -- cgit v1.2.3 From a2140192fe0784538c9b9e905d0672b05ec00b5d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 12:31:11 +0000 Subject: convert rigify into a package. advantage is new types can be added into the package without modifying any existing files, the bone 'type' property will find the matching submodule --- release/scripts/modules/rigify.py | 888 ----------------------------- release/scripts/modules/rigify/__init__.py | 236 ++++++++ release/scripts/modules/rigify/arm.py | 315 ++++++++++ release/scripts/modules/rigify/delta.py | 109 ++++ release/scripts/modules/rigify/finger.py | 173 ++++++ release/scripts/modules/rigify/palm.py | 130 +++++ 6 files changed, 963 insertions(+), 888 deletions(-) delete mode 100644 release/scripts/modules/rigify.py create mode 100644 release/scripts/modules/rigify/__init__.py create mode 100644 release/scripts/modules/rigify/arm.py create mode 100644 release/scripts/modules/rigify/delta.py create mode 100644 release/scripts/modules/rigify/finger.py create mode 100644 release/scripts/modules/rigify/palm.py diff --git a/release/scripts/modules/rigify.py b/release/scripts/modules/rigify.py deleted file mode 100644 index 3cdd2baa0dd..00000000000 --- a/release/scripts/modules/rigify.py +++ /dev/null @@ -1,888 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -import bpy -from functools import reduce -from Mathutils import Vector - -# TODO, have these in a more general module -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get - -empty_layer = [False] * 16 - -def auto_class(slots, name="ContainerClass"): - return type(name, (object,), {"__slots__":tuple(slots)}) - -def auto_class_instance(slots, name="ContainerClass"): - return auto_class(slots, name)() - - - -def bone_class_instance(obj, slots, name="BoneContainer"): - for member in slots[:]: - slots.append(member + "_b") # bone bone - slots.append(member + "_p") # pose bone - slots.append(member + "_e") # edit bone - - slots.extend(["obj", "update"]) - - instance = auto_class_instance(slots, name) - - def update(): - ''' - Re-Assigns bones from the blender data - ''' - arm = obj.data - - bbones = arm.bones - pbones = obj.pose.bones - ebones = arm.edit_bones - - for member in slots: - - if member in ("update", "obj"): - continue - - if not member[-2] == "_": - name = getattr(instance, member, None) - if name is not None: - setattr(instance, member + "_b", bbones.get(name, None)) - setattr(instance, member + "_p", pbones.get(name, None)) - setattr(instance, member + "_e", ebones.get(name, None)) - - instance.update = update - - return instance - -def gen_none(obj, orig_bone_name): - pass - -def get_bone_data(obj, bone_name): - arm = obj.data - pbone = obj.pose.bones[bone_name] - if obj.mode == 'EDIT': - bone = arm.edit_bones[bone_name] - else: - bone = arm.bones[bone_name] - - return arm, pbone, bone - -def bone_basename(name): - return name.split(".")[0] - -def copy_bone_simple(arm, from_bone, name, parent=False): - ebone = arm.edit_bones[from_bone] - ebone_new = arm.edit_bones.new(name) - - if parent: - ebone_new.connected = ebone.connected - ebone_new.parent = ebone.parent - - ebone_new.head = ebone.head - ebone_new.tail = ebone.tail - ebone_new.roll = ebone.roll - return ebone_new - - -def add_stretch_to(obj, from_name, to_name, name): - ''' - Adds a bone that stretches from one to another - ''' - - mode_orig = obj.mode - bpy.ops.object.mode_set(mode='EDIT') - - arm = obj.data - stretch_ebone = arm.edit_bones.new(name) - stretch_name = stretch_ebone.name - del name - - head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() - #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() - - # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter - #if (head - tail).length < 0.1: - if 1: - tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() - - - # Now for the constraint - bpy.ops.object.mode_set(mode='OBJECT') - from_pbone = obj.pose.bones[from_name] - to_pbone = obj.pose.bones[to_name] - - stretch_pbone = obj.pose.bones[stretch_name] - - con = stretch_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = from_name - - con = stretch_pbone.constraints.new('STRETCH_TO') - con.target = obj - con.subtarget = to_name - con.original_length = (head - tail).length - con.keep_axis = 'PLANE_X' - con.volume = 'NO_VOLUME' - - bpy.ops.object.mode_set(mode=mode_orig) - - -def add_pole_target_bone(obj, base_name, name, mode='CROSS'): - ''' - Does not actually create a poll target, just the bone to use as a poll target - ''' - mode_orig = obj.mode - bpy.ops.object.mode_set(mode='EDIT') - - arm = obj.data - - poll_ebone = arm.edit_bones.new(base_name + "_poll") - base_ebone = arm.edit_bones[base_name] - poll_name = poll_ebone.name - parent_ebone = base_ebone.parent - - base_head = base_ebone.head.copy() - base_tail = base_ebone.tail.copy() - base_dir = base_head - base_tail - - parent_head = parent_ebone.head.copy() - parent_tail = parent_ebone.tail.copy() - parent_dir = parent_head - parent_tail - - distance = (base_dir.length + parent_dir.length) - - if mode == 'CROSS': - offset = base_dir.copy().normalize() - parent_dir.copy().normalize() - offset.length = distance - else: - offset = Vector(0,0,0) - if mode[0]=="+": - val = distance - else: - val = -distance - - setattr(offset, mode[1].lower(), val) - - poll_ebone.head = base_head + offset - poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) - - bpy.ops.object.mode_set(mode=mode_orig) - - return poll_name - - -def gen_finger(obj, orig_bone_name): - - # *** EDITMODE - - # get assosiated data - arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) - - obj.animation_data_create() # needed if its a new armature with no keys - - arm.layer[0] = arm.layer[8] = True - - children = orig_pbone.children_recursive - tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - - base_name = bone_basename(orig_pbone.name) - - # first make a new bone at the location of the finger - control_ebone = arm.edit_bones.new(base_name) - control_bone_name = control_ebone.name # we dont know if we get the name requested - - control_ebone.connected = orig_ebone.connected - control_ebone.parent = orig_ebone.parent - - # Place the finger bone - head = orig_ebone.head.copy() - tail = orig_ebone.tail.copy() - - control_ebone.head = head - control_ebone.tail = head + ((tail - head).normalize() * tot_len) - control_ebone.roll = orig_ebone.roll - - # now add bones inbetween this and its children recursively - - # switching modes so store names only! - children = [pbone.name for pbone in children] - - # set an alternate layer for driver bones - other_layer = empty_layer[:] - other_layer[8] = True - - - driver_bone_pairs = [] - - for child_bone_name in children: - arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) - - # finger.02 --> finger_driver.02 - driver_bone_name = child_bone_name.split('.') - driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) - - driver_ebone = arm.edit_bones.new(driver_bone_name) - driver_bone_name = driver_ebone.name # cant be too sure! - driver_ebone.layer = other_layer - - new_len = pbone_child.bone.length / 2.0 - - head = child_ebone.head.copy() - tail = child_ebone.tail.copy() - - driver_ebone.head = head - driver_ebone.tail = head + ((tail - head).normalize() * new_len) - driver_ebone.roll = child_ebone.roll - - # Insert driver_ebone in the chain without connected parents - driver_ebone.connected = False - driver_ebone.parent = child_ebone.parent - - child_ebone.connected = False - child_ebone.parent = driver_ebone - - # Add the drivers to these when in posemode. - driver_bone_pairs.append((child_bone_name, driver_bone_name)) - - del control_ebone - - - # *** POSEMODE - bpy.ops.object.mode_set(mode='OBJECT') - - - arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) - arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) - - - # only allow Y scale - control_pbone.lock_scale = (True, False, True) - - control_pbone["bend_ratio"] = 0.4 - prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - con = orig_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = control_bone_name - - con = orig_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = control_bone_name - - - - # setup child drivers on each new smaller bone added. assume 2 for now. - - # drives the bones - controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name - - i = 0 - for child_bone_name, driver_bone_name in driver_bone_pairs: - - # XXX - todo, any number - if i==2: - break - - arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) - - driver_pbone.rotation_mode = 'YZX' - fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) - - #obj.driver_add('pose.bones["%s"].scale', 1) - #obj.animation_data.drivers[-1] # XXX, WATCH THIS - driver = fcurve_driver.driver - - # scale target - tar = driver.targets.new() - tar.name = "scale" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '.scale[1]' - - # bend target - tar = driver.targets.new() - tar.name = "br" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["bend_ratio"]' - - # XXX - todo, any number - if i==0: - driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' - elif i==1: - driver.expression = '(-scale+1.0)*pi*2.0*br' - - arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) - - # only allow X rotation - driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) - - i += 1 - - -def gen_delta(obj, delta_name): - ''' - Use this bone to define a delta thats applied to its child in pose mode. - ''' - - arm = obj.data - - mode_orig = obj.mode - bpy.ops.object.mode_set(mode='OBJECT') - - delta_pbone = obj.pose.bones[delta_name] - children = delta_pbone.children - - if len(children) != 1: - print("only 1 child supported for delta") - - child_name = children[0].name - arm, child_pbone, child_bone = get_bone_data(obj, child_name) - - delta_phead = delta_pbone.head.copy() - delta_ptail = delta_pbone.tail.copy() - delta_pmatrix = delta_pbone.matrix.copy() - - child_phead = child_pbone.head.copy() - child_ptail = child_pbone.tail.copy() - child_pmatrix = child_pbone.matrix.copy() - - - children = delta_pbone.children - - bpy.ops.object.mode_set(mode='EDIT') - - delta_ebone = arm.edit_bones[delta_name] - child_ebone = arm.edit_bones[child_name] - - delta_head = delta_ebone.head.copy() - delta_tail = delta_ebone.tail.copy() - - # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) - child_head = child_ebone.head.copy() - child_tail = child_ebone.tail.copy() - - arm.edit_bones.remove(delta_ebone) - del delta_ebone # cant use thz - - bpy.ops.object.mode_set(mode='OBJECT') - - - # Move the child bone to the deltas location - obj.animation_data_create() - child_pbone = obj.pose.bones[child_name] - - # ------------------- drivers - - child_pbone.rotation_mode = 'XYZ' - - rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() - rot = rot.invert().toEuler() - - fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) - for i, fcurve_driver in enumerate(fcurve_drivers): - driver = fcurve_driver.driver - driver.type = 'AVERAGE' - #mod = fcurve_driver.modifiers.new('GENERATOR') - mod = fcurve_driver.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = rot[i] - mod.coefficients[1] = 0.0 - - # tricky, find the transform to drive the bone to this location. - delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) - - fcurve_drivers = child_pbone.driver_add("location", -1) - for i, fcurve_driver in enumerate(fcurve_drivers): - driver = fcurve_driver.driver - driver.type = 'AVERAGE' - #mod = fcurve_driver.modifiers.new('GENERATOR') - mod = fcurve_driver.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = delta_head_offset[i] - mod.coefficients[1] = 0.0 - - - # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) - bpy.ops.object.mode_set(mode='EDIT') - - bpy.ops.object.mode_set(mode=mode_orig) - - -def gen_arm(obj, orig_bone_name): - """ - the bone with the 'arm' property is the upper arm, this assumes a chain as follows. - [shoulder, upper_arm, forearm, hand] - ...where this bone is 'upper_arm' - - there are 3 chains - - Original - - IK, MCH-%s_ik - - IKSwitch, MCH-%s () - """ - - # Since there are 3 chains, this gets confusing so divide into 3 chains - # Initialize container classes for convenience - mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta - ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik - sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge - ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras - - - def chain_init(): - ''' - Sanity check and return the arm as a list of bone names. - ''' - # do a sanity check - mt.arm = orig_bone_name - mt.update() - - mt.shoulder_p = mt.arm_p.parent - mt.shoulder = mt.shoulder_p.name - - if not mt.shoulder_p: - print("could not find 'arm' parent, skipping:", orig_bone_name) - return - - # We could have some bones attached, find the bone that has this as its 2nd parent - hands = [] - for pbone in obj.pose.bones: - index = pbone.parent_index(mt.arm_p) - if index == 2: - hands.append(pbone) - - if len(hands) > 1: - print("more then 1 hand found on:", orig_bone_name) - return - - # first add the 2 new bones - mt.hand_p = hands[0] - mt.hand = mt.hand_p.name - - mt.forearm_p = mt.hand_p.parent - mt.forearm = mt.forearm_p.name - - arm = obj.data - - - def chain_ik(prefix="MCH-%s_ik"): - - mt.update() - - # Add the edit bones - ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) - ik.hand = ik.hand_e.name - - ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) - ik.arm = ik.arm_e.name - - ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) - ik.forearm = ik.forearm_e.name - - ik.arm_e.parent = mt.arm_e.parent - ik.forearm_e.connected = mt.arm_e.connected - - ik.forearm_e.parent = ik.arm_e - ik.forearm_e.connected = True - - - # Add the bone used for the arms poll target - ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') - - bpy.ops.object.mode_set(mode='OBJECT') - - ik.update() - - con = ik.forearm_p.constraints.new('IK') - con.target = obj - con.subtarget = ik.hand - con.pole_target = obj - con.pole_subtarget = ik.pole - - con.use_tail = True - con.use_stretch = True - con.use_target = True - con.use_rotation = False - con.chain_length = 2 - con.pole_angle = -90.0 # XXX, RAD2DEG - - # ID Propery on the hand for IK/FK switch - - prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) - ik.hand_p["ik"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - bpy.ops.object.mode_set(mode='EDIT') - - ik.arm = ik.arm - ik.forearm = ik.forearm - ik.hand = ik.hand - ik.pole = ik.pole - - def chain_switch(prefix="MCH-%s"): - - sw.update() - mt.update() - - sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) - sw.shoulder = sw.shoulder_e.name - sw.shoulder_e.parent = mt.shoulder_e.parent - sw.shoulder_e.connected = mt.shoulder_e.connected - - sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) - sw.arm = sw.arm_e.name - sw.arm_e.parent = sw.shoulder_e - sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected - - sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) - sw.forearm = sw.forearm_e.name - sw.forearm_e.parent = sw.arm_e - sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected - - sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) - sw.hand = sw.hand_e.name - sw.hand_e.parent = sw.forearm_e - sw.hand_e.connected = arm.edit_bones[mt.hand].connected - - # The sw.hand_e needs to own all the children on the metarig's hand - for child in mt.hand_e.children: - child.parent = sw.hand_e - - - # These are made the children of sw.shoulder_e - - - bpy.ops.object.mode_set(mode='OBJECT') - - # Add constraints - sw.update() - - #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple - - ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' - - - def ik_fk_driver(con): - ''' - 3 bones use this for ik/fk switching - ''' - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "ik" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = ik_driver_path - - # *********** - con = sw.arm_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.arm - - con = sw.arm_p.constraints.new('COPY_ROTATION') - - con.target = obj - con.subtarget = ik.arm - con.influence = 0.5 - ik_fk_driver(con) - - # *********** - con = sw.forearm_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.forearm - - con = sw.forearm_p.constraints.new('COPY_ROTATION') - con.name = "IK" - con.target = obj - con.subtarget = ik.forearm - con.influence = 0.5 - ik_fk_driver(con) - - # *********** - con = sw.hand_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.hand - - con = sw.hand_p.constraints.new('COPY_ROTATION') - con.name = "IK" - con.target = obj - con.subtarget = ik.hand - con.influence = 0.5 - ik_fk_driver(con) - - - add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") - add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") - - bpy.ops.object.mode_set(mode='EDIT') - - - def chain_shoulder(prefix="MCH-%s"): - - sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") - sw.socket = sw.socket_e.name - sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail - - - # Set the shoulder as parent - ik.update() - sw.update() - mt.update() - - sw.socket_e.parent = sw.shoulder_e - ik.arm_e.parent = sw.shoulder_e - - - # ***** add the shoulder hinge - # yes this is correct, the shoulder copy gets the arm's name - ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") - ex.arm_hinge = ex.arm_hinge_e.name - offset = ex.arm_hinge_e.length / 2.0 - - ex.arm_hinge_e.head.y += offset - ex.arm_hinge_e.tail.y += offset - - # Note: meta arm becomes child of hinge - mt.arm_e.parent = ex.arm_hinge_e - - - bpy.ops.object.mode_set(mode='OBJECT') - - ex.update() - - con = mt.arm_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = sw.socket - - - # Hinge constraint & driver - con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') - con.name = "hinge" - con.target = obj - con.subtarget = sw.shoulder - driver_fcurve = con.driver_add("influence", 0) - driver = driver_fcurve.driver - - - controller_path = mt.arm_p.path_to_id() - # add custom prop - mt.arm_p["hinge"] = 0.0 - prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - - # ***** - driver = driver_fcurve.driver - driver.type = 'AVERAGE' - - tar = driver.targets.new() - tar.name = "hinge" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["hinge"]' - - - bpy.ops.object.mode_set(mode='EDIT') - - # remove the shoulder and re-parent - - - - chain_init() - chain_ik() - chain_switch() - chain_shoulder() - - # Shoulder with its delta and hinge. - - - - - -def gen_palm(obj, orig_bone_name): - arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) - children = [ebone.name for ebone in palm_ebone.children] - children.sort() # simply assume the pinky has the lowest name - - # Make a copy of the pinky - pinky_ebone = arm.edit_bones[children[0]] - control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) - control_name = control_ebone.name - - offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) - - control_ebone.head += offset - control_ebone.tail += offset - - bpy.ops.object.mode_set(mode='OBJECT') - - - arm, control_pbone, control_ebone = get_bone_data(obj, control_name) - arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) - - control_pbone.rotation_mode = 'YZX' - control_pbone.lock_rotation = False, True, True - - driver_fcurves = pinky_pbone.driver_add("rotation_euler") - - - controller_path = control_pbone.path_to_id() - - # add custom prop - control_pbone["spread"] = 0.0 - prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) - prop["soft_min"] = -1.0 - prop["soft_max"] = 1.0 - - - # ***** - driver = driver_fcurves[0].driver - driver.type = 'AVERAGE' - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[1].driver - driver.expression = "-x/4.0" - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[2].driver - driver.expression = "(1.0-cos(x))-s" - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - tar = driver.targets.new() - tar.name = "s" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["spread"]' - - - for i, child_name in enumerate(children): - child_pbone = obj.pose.bones[child_name] - child_pbone.rotation_mode = 'YZX' - - if child_name != children[-1] and child_name != children[0]: - - # this is somewhat arbitrary but seems to look good - inf = i / (len(children)+1) - inf = 1.0 - inf - inf = ((inf * inf) + inf) / 2.0 - - # used for X/Y constraint - inf_minor = inf * inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy Z Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = False, False, True - con.influence = inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy XY Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = True, True, False - con.influence = inf_minor - - - child_pbone = obj.pose.bones[children[-1]] - child_pbone.rotation_mode = 'QUATERNION' - - -gen_table = { - "":gen_none, \ - "finger":gen_finger, \ - "delta":gen_delta, \ - "arm":gen_arm, \ - "palm":gen_palm, \ -} - -def generate_rig(context, ob): - - global_undo = context.user_preferences.edit.global_undo - context.user_preferences.edit.global_undo = False - - # add_stretch_to(ob, "a", "b", "c") - - bpy.ops.object.mode_set(mode='OBJECT') - - - # copy object and data - ob.selected = False - ob_new = ob.copy() - ob_new.data = ob.data.copy() - scene = context.scene - scene.objects.link(ob_new) - scene.objects.active = ob_new - ob_new.selected = True - - # enter armature editmode - - - for pbone_name in ob_new.pose.bones.keys(): - bone_type = ob_new.pose.bones[pbone_name].get("type", "") - - try: - func = gen_table[bone_type] - except KeyError: - print("\tunknown type '%s', bone '%s'" % (bone_type, pbone_name)) - - - # Toggle editmode so the pose data is always up to date - bpy.ops.object.mode_set(mode='EDIT') - func(ob_new, pbone_name) - bpy.ops.object.mode_set(mode='OBJECT') - - # needed to update driver deps - # context.scene.update() - - # Only for demo'ing - ob.restrict_view = True - ob_new.data.draw_axes = False - - context.user_preferences.edit.global_undo = global_undo - -if __name__ == "__main__": - generate_rig(bpy.context, bpy.context.object) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py new file mode 100644 index 00000000000..fa2a8040d01 --- /dev/null +++ b/release/scripts/modules/rigify/__init__.py @@ -0,0 +1,236 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from Mathutils import Vector + +# TODO, have these in a more general module +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + +empty_layer = [False] * 32 + +def auto_class(slots, name="ContainerClass"): + return type(name, (object,), {"__slots__":tuple(slots)}) + +def auto_class_instance(slots, name="ContainerClass"): + return auto_class(slots, name)() + +def bone_class_instance(obj, slots, name="BoneContainer"): + for member in slots[:]: + slots.append(member + "_b") # bone bone + slots.append(member + "_p") # pose bone + slots.append(member + "_e") # edit bone + + slots.extend(["obj", "update"]) + + instance = auto_class_instance(slots, name) + + def update(): + ''' + Re-Assigns bones from the blender data + ''' + arm = obj.data + + bbones = arm.bones + pbones = obj.pose.bones + ebones = arm.edit_bones + + for member in slots: + + if member in ("update", "obj"): + continue + + if not member[-2] == "_": + name = getattr(instance, member, None) + if name is not None: + setattr(instance, member + "_b", bbones.get(name, None)) + setattr(instance, member + "_p", pbones.get(name, None)) + setattr(instance, member + "_e", ebones.get(name, None)) + + instance.update = update + + return instance + +def gen_none(obj, orig_bone_name): + pass + +def get_bone_data(obj, bone_name): + arm = obj.data + pbone = obj.pose.bones[bone_name] + if obj.mode == 'EDIT': + bone = arm.edit_bones[bone_name] + else: + bone = arm.bones[bone_name] + + return arm, pbone, bone + +def bone_basename(name): + return name.split(".")[0] + +def copy_bone_simple(arm, from_bone, name, parent=False): + ebone = arm.edit_bones[from_bone] + ebone_new = arm.edit_bones.new(name) + + if parent: + ebone_new.connected = ebone.connected + ebone_new.parent = ebone.parent + + ebone_new.head = ebone.head + ebone_new.tail = ebone.tail + ebone_new.roll = ebone.roll + return ebone_new + + +def add_stretch_to(obj, from_name, to_name, name): + ''' + Adds a bone that stretches from one to another + ''' + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + stretch_ebone = arm.edit_bones.new(name) + stretch_name = stretch_ebone.name + del name + + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() + #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + + # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter + #if (head - tail).length < 0.1: + if 1: + tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() + + + # Now for the constraint + bpy.ops.object.mode_set(mode='OBJECT') + from_pbone = obj.pose.bones[from_name] + to_pbone = obj.pose.bones[to_name] + + stretch_pbone = obj.pose.bones[stretch_name] + + con = stretch_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_name + + con = stretch_pbone.constraints.new('STRETCH_TO') + con.target = obj + con.subtarget = to_name + con.original_length = (head - tail).length + con.keep_axis = 'PLANE_X' + con.volume = 'NO_VOLUME' + + bpy.ops.object.mode_set(mode=mode_orig) + + +def add_pole_target_bone(obj, base_name, name, mode='CROSS'): + ''' + Does not actually create a poll target, just the bone to use as a poll target + ''' + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + + poll_ebone = arm.edit_bones.new(base_name + "_poll") + base_ebone = arm.edit_bones[base_name] + poll_name = poll_ebone.name + parent_ebone = base_ebone.parent + + base_head = base_ebone.head.copy() + base_tail = base_ebone.tail.copy() + base_dir = base_head - base_tail + + parent_head = parent_ebone.head.copy() + parent_tail = parent_ebone.tail.copy() + parent_dir = parent_head - parent_tail + + distance = (base_dir.length + parent_dir.length) + + if mode == 'CROSS': + offset = base_dir.copy().normalize() - parent_dir.copy().normalize() + offset.length = distance + else: + offset = Vector(0,0,0) + if mode[0]=="+": + val = distance + else: + val = -distance + + setattr(offset, mode[1].lower(), val) + + poll_ebone.head = base_head + offset + poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) + + bpy.ops.object.mode_set(mode=mode_orig) + + return poll_name + + +def generate_rig(context, ob): + + global_undo = context.user_preferences.edit.global_undo + context.user_preferences.edit.global_undo = False + + # add_stretch_to(ob, "a", "b", "c") + + bpy.ops.object.mode_set(mode='OBJECT') + + + # copy object and data + ob.selected = False + ob_new = ob.copy() + ob_new.data = ob.data.copy() + scene = context.scene + scene.objects.link(ob_new) + scene.objects.active = ob_new + ob_new.selected = True + + # enter armature editmode + + + for pbone_name in ob_new.pose.bones.keys(): + bone_type = ob_new.pose.bones[pbone_name].get("type", "") + + if bone_type == "": + continue + + # submodule = getattr(self, bone_type) + # exec("from rigify import %s as submodule") + submodule = __import__(name="%s.%s" % (__package__, bone_type), fromlist=[bone_type]) + + reload(submodule) # XXX, dev only + + + # Toggle editmode so the pose data is always up to date + bpy.ops.object.mode_set(mode='EDIT') + submodule.main(ob_new, pbone_name) + bpy.ops.object.mode_set(mode='OBJECT') + + # needed to update driver deps + # context.scene.update() + + # Only for demo'ing + ob.restrict_view = True + ob_new.data.draw_axes = False + + context.user_preferences.edit.global_undo = global_undo + +if __name__ == "__main__": + generate_rig(bpy.context, bpy.context.object) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py new file mode 100644 index 00000000000..d2c9208d4ff --- /dev/null +++ b/release/scripts/modules/rigify/arm.py @@ -0,0 +1,315 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + + +def main(obj, orig_bone_name): + """ + the bone with the 'arm' property is the upper arm, this assumes a chain as follows. + [shoulder, upper_arm, forearm, hand] + ...where this bone is 'upper_arm' + + there are 3 chains + - Original + - IK, MCH-%s_ik + - IKSwitch, MCH-%s () + """ + + # Since there are 3 chains, this gets confusing so divide into 3 chains + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik + sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge + ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras + + + def chain_init(): + ''' + Sanity check and return the arm as a list of bone names. + ''' + # do a sanity check + mt.arm = orig_bone_name + mt.update() + + mt.shoulder_p = mt.arm_p.parent + mt.shoulder = mt.shoulder_p.name + + if not mt.shoulder_p: + print("could not find 'arm' parent, skipping:", orig_bone_name) + return + + # We could have some bones attached, find the bone that has this as its 2nd parent + hands = [] + for pbone in obj.pose.bones: + index = pbone.parent_index(mt.arm_p) + if index == 2: + hands.append(pbone) + + if len(hands) > 1: + print("more then 1 hand found on:", orig_bone_name) + return + + # first add the 2 new bones + mt.hand_p = hands[0] + mt.hand = mt.hand_p.name + + mt.forearm_p = mt.hand_p.parent + mt.forearm = mt.forearm_p.name + + arm = obj.data + + + def chain_ik(prefix="MCH-%s_ik"): + + mt.update() + + # Add the edit bones + ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + ik.hand = ik.hand_e.name + + ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + ik.arm = ik.arm_e.name + + ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + ik.forearm = ik.forearm_e.name + + ik.arm_e.parent = mt.arm_e.parent + ik.forearm_e.connected = mt.arm_e.connected + + ik.forearm_e.parent = ik.arm_e + ik.forearm_e.connected = True + + + # Add the bone used for the arms poll target + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') + + bpy.ops.object.mode_set(mode='OBJECT') + + ik.update() + + con = ik.forearm_p.constraints.new('IK') + con.target = obj + con.subtarget = ik.hand + con.pole_target = obj + con.pole_subtarget = ik.pole + + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.chain_length = 2 + con.pole_angle = -90.0 # XXX, RAD2DEG + + # ID Propery on the hand for IK/FK switch + + prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) + ik.hand_p["ik"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + bpy.ops.object.mode_set(mode='EDIT') + + ik.arm = ik.arm + ik.forearm = ik.forearm + ik.hand = ik.hand + ik.pole = ik.pole + + def chain_switch(prefix="MCH-%s"): + + sw.update() + mt.update() + + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) + sw.shoulder = sw.shoulder_e.name + sw.shoulder_e.parent = mt.shoulder_e.parent + sw.shoulder_e.connected = mt.shoulder_e.connected + + sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + sw.arm = sw.arm_e.name + sw.arm_e.parent = sw.shoulder_e + sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected + + sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + sw.forearm = sw.forearm_e.name + sw.forearm_e.parent = sw.arm_e + sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected + + sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + sw.hand = sw.hand_e.name + sw.hand_e.parent = sw.forearm_e + sw.hand_e.connected = arm.edit_bones[mt.hand].connected + + # The sw.hand_e needs to own all the children on the metarig's hand + for child in mt.hand_e.children: + child.parent = sw.hand_e + + + # These are made the children of sw.shoulder_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + # Add constraints + sw.update() + + #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple + + ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' + + + def ik_fk_driver(con): + ''' + 3 bones use this for ik/fk switching + ''' + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "ik" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = ik_driver_path + + # *********** + con = sw.arm_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.arm + + con = sw.arm_p.constraints.new('COPY_ROTATION') + + con.target = obj + con.subtarget = ik.arm + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = sw.forearm_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.forearm + + con = sw.forearm_p.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = ik.forearm + con.influence = 0.5 + ik_fk_driver(con) + + # *********** + con = sw.hand_p.constraints.new('COPY_ROTATION') + con.name = "FK" + con.target = obj + con.subtarget = mt.hand + + con = sw.hand_p.constraints.new('COPY_ROTATION') + con.name = "IK" + con.target = obj + con.subtarget = ik.hand + con.influence = 0.5 + ik_fk_driver(con) + + + add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") + add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") + + bpy.ops.object.mode_set(mode='EDIT') + + + def chain_shoulder(prefix="MCH-%s"): + + sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") + sw.socket = sw.socket_e.name + sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail + + + # Set the shoulder as parent + ik.update() + sw.update() + mt.update() + + sw.socket_e.parent = sw.shoulder_e + ik.arm_e.parent = sw.shoulder_e + + + # ***** add the shoulder hinge + # yes this is correct, the shoulder copy gets the arm's name + ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") + ex.arm_hinge = ex.arm_hinge_e.name + offset = ex.arm_hinge_e.length / 2.0 + + ex.arm_hinge_e.head.y += offset + ex.arm_hinge_e.tail.y += offset + + # Note: meta arm becomes child of hinge + mt.arm_e.parent = ex.arm_hinge_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + ex.update() + + con = mt.arm_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = sw.socket + + + # Hinge constraint & driver + con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = sw.shoulder + driver_fcurve = con.driver_add("influence", 0) + driver = driver_fcurve.driver + + + controller_path = mt.arm_p.path_to_id() + # add custom prop + mt.arm_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurve.driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "hinge" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["hinge"]' + + + bpy.ops.object.mode_set(mode='EDIT') + + # remove the shoulder and re-parent + + + + chain_init() + chain_ik() + chain_switch() + chain_shoulder() + + # Shoulder with its delta and hinge. + diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py new file mode 100644 index 00000000000..a8458537c12 --- /dev/null +++ b/release/scripts/modules/rigify/delta.py @@ -0,0 +1,109 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import get_bone_data + +def main(obj, delta_name): + ''' + Use this bone to define a delta thats applied to its child in pose mode. + ''' + + arm = obj.data + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='OBJECT') + + delta_pbone = obj.pose.bones[delta_name] + children = delta_pbone.children + + if len(children) != 1: + print("only 1 child supported for delta") + + child_name = children[0].name + arm, child_pbone, child_bone = get_bone_data(obj, child_name) + + delta_phead = delta_pbone.head.copy() + delta_ptail = delta_pbone.tail.copy() + delta_pmatrix = delta_pbone.matrix.copy() + + child_phead = child_pbone.head.copy() + child_ptail = child_pbone.tail.copy() + child_pmatrix = child_pbone.matrix.copy() + + + children = delta_pbone.children + + bpy.ops.object.mode_set(mode='EDIT') + + delta_ebone = arm.edit_bones[delta_name] + child_ebone = arm.edit_bones[child_name] + + delta_head = delta_ebone.head.copy() + delta_tail = delta_ebone.tail.copy() + + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + child_head = child_ebone.head.copy() + child_tail = child_ebone.tail.copy() + + arm.edit_bones.remove(delta_ebone) + del delta_ebone # cant use thz + + bpy.ops.object.mode_set(mode='OBJECT') + + + # Move the child bone to the deltas location + obj.animation_data_create() + child_pbone = obj.pose.bones[child_name] + + # ------------------- drivers + + child_pbone.rotation_mode = 'XYZ' + + rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() + rot = rot.invert().toEuler() + + fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = rot[i] + mod.coefficients[1] = 0.0 + + # tricky, find the transform to drive the bone to this location. + delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) + + fcurve_drivers = child_pbone.driver_add("location", -1) + for i, fcurve_driver in enumerate(fcurve_drivers): + driver = fcurve_driver.driver + driver.type = 'AVERAGE' + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve_driver.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = delta_head_offset[i] + mod.coefficients[1] = 0.0 + + + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) + bpy.ops.object.mode_set(mode='EDIT') + + bpy.ops.object.mode_set(mode=mode_orig) + diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py new file mode 100644 index 00000000000..a5e8f2d0ea1 --- /dev/null +++ b/release/scripts/modules/rigify/finger.py @@ -0,0 +1,173 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import get_bone_data, bone_basename, empty_layer +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from functools import reduce + +def main(obj, orig_bone_name): + + # *** EDITMODE + + # get assosiated data + arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + + obj.animation_data_create() # needed if its a new armature with no keys + + arm.layer[0] = arm.layer[8] = True + + children = orig_pbone.children_recursive + tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) + + base_name = bone_basename(orig_pbone.name) + + # first make a new bone at the location of the finger + control_ebone = arm.edit_bones.new(base_name) + control_bone_name = control_ebone.name # we dont know if we get the name requested + + control_ebone.connected = orig_ebone.connected + control_ebone.parent = orig_ebone.parent + + # Place the finger bone + head = orig_ebone.head.copy() + tail = orig_ebone.tail.copy() + + control_ebone.head = head + control_ebone.tail = head + ((tail - head).normalize() * tot_len) + control_ebone.roll = orig_ebone.roll + + # now add bones inbetween this and its children recursively + + # switching modes so store names only! + children = [pbone.name for pbone in children] + + # set an alternate layer for driver bones + other_layer = empty_layer[:] + other_layer[8] = True + + + driver_bone_pairs = [] + + for child_bone_name in children: + arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) + + # finger.02 --> finger_driver.02 + driver_bone_name = child_bone_name.split('.') + driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) + + driver_ebone = arm.edit_bones.new(driver_bone_name) + driver_bone_name = driver_ebone.name # cant be too sure! + driver_ebone.layer = other_layer + + new_len = pbone_child.bone.length / 2.0 + + head = child_ebone.head.copy() + tail = child_ebone.tail.copy() + + driver_ebone.head = head + driver_ebone.tail = head + ((tail - head).normalize() * new_len) + driver_ebone.roll = child_ebone.roll + + # Insert driver_ebone in the chain without connected parents + driver_ebone.connected = False + driver_ebone.parent = child_ebone.parent + + child_ebone.connected = False + child_ebone.parent = driver_ebone + + # Add the drivers to these when in posemode. + driver_bone_pairs.append((child_bone_name, driver_bone_name)) + + del control_ebone + + + # *** POSEMODE + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) + arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) + + + # only allow Y scale + control_pbone.lock_scale = (True, False, True) + + control_pbone["bend_ratio"] = 0.4 + prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = orig_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = control_bone_name + + con = orig_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = control_bone_name + + + + # setup child drivers on each new smaller bone added. assume 2 for now. + + # drives the bones + controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name + + i = 0 + for child_bone_name, driver_bone_name in driver_bone_pairs: + + # XXX - todo, any number + if i==2: + break + + arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) + + driver_pbone.rotation_mode = 'YZX' + fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) + + #obj.driver_add('pose.bones["%s"].scale', 1) + #obj.animation_data.drivers[-1] # XXX, WATCH THIS + driver = fcurve_driver.driver + + # scale target + tar = driver.targets.new() + tar.name = "scale" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '.scale[1]' + + # bend target + tar = driver.targets.new() + tar.name = "br" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["bend_ratio"]' + + # XXX - todo, any number + if i==0: + driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' + elif i==1: + driver.expression = '(-scale+1.0)*pi*2.0*br' + + arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) + + # only allow X rotation + driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) + + i += 1 + diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py new file mode 100644 index 00000000000..f6f55541c64 --- /dev/null +++ b/release/scripts/modules/rigify/palm.py @@ -0,0 +1,130 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import get_bone_data, copy_bone_simple +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + +def main(obj, orig_bone_name): + arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) + children = [ebone.name for ebone in palm_ebone.children] + children.sort() # simply assume the pinky has the lowest name + + # Make a copy of the pinky + pinky_ebone = arm.edit_bones[children[0]] + control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) + control_name = control_ebone.name + + offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) + + control_ebone.head += offset + control_ebone.tail += offset + + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) + arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) + + control_pbone.rotation_mode = 'YZX' + control_pbone.lock_rotation = False, True, True + + driver_fcurves = pinky_pbone.driver_add("rotation_euler") + + + controller_path = control_pbone.path_to_id() + + # add custom prop + control_pbone["spread"] = 0.0 + prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) + prop["soft_min"] = -1.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurves[0].driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[1].driver + driver.expression = "-x/4.0" + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[2].driver + driver.expression = "(1.0-cos(x))-s" + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + tar = driver.targets.new() + tar.name = "s" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["spread"]' + + + for i, child_name in enumerate(children): + child_pbone = obj.pose.bones[child_name] + child_pbone.rotation_mode = 'YZX' + + if child_name != children[-1] and child_name != children[0]: + + # this is somewhat arbitrary but seems to look good + inf = i / (len(children)+1) + inf = 1.0 - inf + inf = ((inf * inf) + inf) / 2.0 + + # used for X/Y constraint + inf_minor = inf * inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy Z Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = False, False, True + con.influence = inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy XY Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = True, True, False + con.influence = inf_minor + + + child_pbone = obj.pose.bones[children[-1]] + child_pbone.rotation_mode = 'QUATERNION' + -- cgit v1.2.3 From 0f24af750680f7467433f1522d69a4fcc835fc93 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 12:50:22 +0000 Subject: curve select toggle was broken from recent select operator update --- source/blender/editors/curve/editcurve.c | 80 +++++++++++++++++-------------- source/blender/editors/include/ED_curve.h | 1 + 2 files changed, 46 insertions(+), 35 deletions(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index a65e1164a27..a139a75f844 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -381,8 +381,46 @@ void CU_select_all(Object *obedit) ListBase *editnurb= curve_get_editcurve(obedit); if (editnurb) { - selectend_nurb(obedit, FIRST, 0, DESELECT); /* set first control points as unselected */ - select_adjacent_cp(editnurb, 1, 1, DESELECT); /* cascade selection */ + selectend_nurb(obedit, FIRST, 0, SELECT); /* set first control points as unselected */ + select_adjacent_cp(editnurb, 1, 1, SELECT); /* cascade selection */ + } +} + +void CU_select_swap(Object *obedit) +{ + ListBase *editnurb= curve_get_editcurve(obedit); + + if (editnurb) { + Curve *cu= obedit->data; + Nurb *nu; + BPoint *bp; + BezTriple *bezt; + int a; + + for(nu= editnurb->first; nu; nu= nu->next) { + if(nu->type == CU_BEZIER) { + bezt= nu->bezt; + a= nu->pntsu; + while(a--) { + if(bezt->hide==0) { + bezt->f2 ^= SELECT; /* always do the center point */ + if((cu->drawflag & CU_HIDE_HANDLES)==0) { + bezt->f1 ^= SELECT; + bezt->f3 ^= SELECT; + } + } + bezt++; + } + } + else { + bp= nu->bp; + a= nu->pntsu*nu->pntsv; + while(a--) { + swap_selection_bpoint(bp); + bp++; + } + } + } } } @@ -1604,7 +1642,7 @@ static int de_select_all_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); ListBase *editnurb= curve_get_editcurve(obedit); int action = RNA_enum_get(op->ptr, "action"); - + if (action == SEL_TOGGLE) { action = SEL_SELECT; if(nurb_has_selected_cps(editnurb)) @@ -1619,39 +1657,8 @@ static int de_select_all_exec(bContext *C, wmOperator *op) CU_deselect_all(obedit); break; case SEL_INVERT: - { - Curve *cu= obedit->data; - Nurb *nu; - BPoint *bp; - BezTriple *bezt; - int a; - - for(nu= editnurb->first; nu; nu= nu->next) { - if(nu->type == CU_BEZIER) { - bezt= nu->bezt; - a= nu->pntsu; - while(a--) { - if(bezt->hide==0) { - bezt->f2 ^= SELECT; /* always do the center point */ - if((cu->drawflag & CU_HIDE_HANDLES)==0) { - bezt->f1 ^= SELECT; - bezt->f3 ^= SELECT; - } - } - bezt++; - } - } - else { - bp= nu->bp; - a= nu->pntsu*nu->pntsv; - while(a--) { - swap_selection_bpoint(bp); - bp++; - } - } - } + CU_select_swap(obedit); break; - } } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); @@ -1671,6 +1678,9 @@ void CURVE_OT_select_all(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + WM_operator_properties_select_all(ot); } /********************** hide operator *********************/ diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index 3166f77815c..0cfa743b0fa 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -45,6 +45,7 @@ void ED_keymap_curve (struct wmKeyConfig *keyconf); /* editcurve.c */ void CU_deselect_all(struct Object *obedit); void CU_select_all(struct Object *obedit); +void CU_select_swap(struct Object *obedit); void undo_push_curve (struct bContext *C, char *name); -- cgit v1.2.3 From ab4a141560a221860cfce00c878d8fd0cff47b9c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 13:58:27 +0000 Subject: bugfix [#20083] Wrong position of splash screen on dualhead --- source/blender/windowmanager/intern/wm_init_exit.c | 6 +++++- source/creator/creator.c | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index d5fe9d324c4..d62ed7dd13a 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -160,7 +160,11 @@ void WM_init_splash(bContext *C) wmWindow *prevwin= CTX_wm_window(C); if(wm->windows.first) { - CTX_wm_window_set(C, wm->windows.first); + CTX_wm_window_set(C, wm->windows.first); + + /* needed to get the right screen size for centering the splash */ + wm_window_process_events(C); + WM_operator_name_call(C, "WM_OT_splash", WM_OP_INVOKE_DEFAULT, NULL); CTX_wm_window_set(C, prevwin); } diff --git a/source/creator/creator.c b/source/creator/creator.c index 3a9ee9859e8..f17cb95fe3f 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -890,8 +890,11 @@ int main(int argc, char **argv) WM_exit(C); } - if(!G.background && !file_loaded) + if(!G.background && !file_loaded) { + /* careful, calls wm_window_process_events but seems safe + * since its called first in WM_main */ WM_init_splash(C); + } WM_main(C); -- cgit v1.2.3 From b911d83091f607f56f34b0f4e72655f2b6ebbc6b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 14:10:46 +0000 Subject: better not process events early, could cause troubles later. added a function - wm_window_get_size_ghost(), which looks into the ghost window directly so events dont need processing first. --- source/blender/editors/interface/interface.c | 6 +++++- source/blender/windowmanager/intern/wm_init_exit.c | 4 ---- source/blender/windowmanager/intern/wm_window.c | 9 +++++++++ source/blender/windowmanager/wm_window.h | 1 + source/creator/creator.c | 5 +---- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 23ad50d448b..70bef5534a1 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -320,7 +320,11 @@ static void ui_centered_bounds_block(const bContext *C, uiBlock *block) int startx, starty; int width, height; - wm_window_get_size(window, &xmax, &ymax); + /* note: this is used for the splash where window bounds event has not been + * updated by ghost, get the window bounds from ghost directly */ + + // wm_window_get_size(window, &xmax, &ymax); + wm_window_get_size_ghost(window, &xmax, &ymax); ui_bounds_block(block); diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index d62ed7dd13a..09eecf2f425 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -161,10 +161,6 @@ void WM_init_splash(bContext *C) if(wm->windows.first) { CTX_wm_window_set(C, wm->windows.first); - - /* needed to get the right screen size for centering the splash */ - wm_window_process_events(C); - WM_operator_name_call(C, "WM_OT_splash", WM_OP_INVOKE_DEFAULT, NULL); CTX_wm_window_set(C, prevwin); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 78d70c96ad6..75325a1d9f9 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -936,6 +936,15 @@ void wm_window_get_size(wmWindow *win, int *width_r, int *height_r) *height_r= win->sizey; } +/* exceptional case: - splash is called before events are processed + * this means we dont actually know the window size so get this from GHOST */ +void wm_window_get_size_ghost(wmWindow *win, int *width_r, int *height_r) +{ + GHOST_RectangleHandle bounds= GHOST_GetClientBounds(win->ghostwin); + *width_r= GHOST_GetWidthRectangle(bounds); + *height_r= GHOST_GetHeightRectangle(bounds); +} + void wm_window_set_size(wmWindow *win, int width, int height) { GHOST_SetClientSize(win->ghostwin, width, height); diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h index f0a2c0ec9a9..4328f915101 100644 --- a/source/blender/windowmanager/wm_window.h +++ b/source/blender/windowmanager/wm_window.h @@ -50,6 +50,7 @@ void wm_window_raise (wmWindow *win); void wm_window_lower (wmWindow *win); void wm_window_set_size (wmWindow *win, int width, int height); void wm_window_get_size (wmWindow *win, int *width_r, int *height_r); +void wm_window_get_size_ghost (wmWindow *win, int *width_r, int *height_r); void wm_window_get_position (wmWindow *win, int *posx_r, int *posy_r); void wm_window_set_title (wmWindow *win, char *title); void wm_window_swap_buffers (wmWindow *win); diff --git a/source/creator/creator.c b/source/creator/creator.c index f17cb95fe3f..3a9ee9859e8 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -890,11 +890,8 @@ int main(int argc, char **argv) WM_exit(C); } - if(!G.background && !file_loaded) { - /* careful, calls wm_window_process_events but seems safe - * since its called first in WM_main */ + if(!G.background && !file_loaded) WM_init_splash(C); - } WM_main(C); -- cgit v1.2.3 From e7beae56704c2e25923337354934e193fef42120 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 30 Nov 2009 14:40:45 +0000 Subject: Rename Centroid to Origin, following discussions on mailing list. --- release/scripts/ui/space_userpref.py | 2 +- release/scripts/ui/space_view3d.py | 10 +++++----- source/blender/makesrna/intern/rna_constraint.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 4 ++-- source/blender/makesrna/intern/rna_group.c | 2 +- source/blender/makesrna/intern/rna_object.c | 2 +- source/blender/makesrna/intern/rna_space.c | 10 +++++----- source/blender/makesrna/intern/rna_userdef.c | 6 +++--- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 32a9f0d2534..ec459146e5c 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -88,7 +88,7 @@ class USERPREF_PT_interface(bpy.types.Panel): sub1.prop(view, "show_playback_fps", text="Playback FPS") sub1.prop(view, "global_scene") sub1.prop(view, "pin_floating_panels") - sub1.prop(view, "object_center_size") + sub1.prop(view, "object_origin_size") sub1.separator() sub1.separator() sub1.separator() diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 58954601337..c100cde5a20 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -146,9 +146,9 @@ class VIEW3D_MT_transform(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' - layout.operator("object.center_set", text="ObData to Centroid").type = 'CENTER' - layout.operator("object.center_set", text="Centroid to ObData").type = 'CENTER_NEW' - layout.operator("object.center_set", text="Centroid to 3D Cursor").type = 'CENTER_CURSOR' + layout.operator("object.center_set", text="Object Data to Origin").type = 'CENTER' + layout.operator("object.center_set", text="Origin to Object Data").type = 'CENTER_NEW' + layout.operator("object.center_set", text="Origin to 3D Cursor").type = 'CENTER_CURSOR' class VIEW3D_MT_mirror(bpy.types.Menu): @@ -195,7 +195,7 @@ class VIEW3D_MT_snap(bpy.types.Menu): layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid") layout.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor") - layout.operator("view3d.snap_selected_to_center", text="Selection to Center") + layout.operator("view3d.snap_selected_to_center", text="Selection to Origin") layout.separator() @@ -1621,7 +1621,7 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel): col.prop(view, "display_y_axis", text="Y Axis") col.prop(view, "display_z_axis", text="Z Axis") col.prop(view, "outline_selected") - col.prop(view, "all_object_centers") + col.prop(view, "all_object_origins") col.prop(view, "relationship_lines") if ob and ob.type == 'MESH': mesh = ob.data diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index de306e21756..226554f9ee6 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -813,7 +813,7 @@ static void rna_def_constraint_minmax(BlenderRNA *brna) prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_range(prop, 0.0, 100.f); - RNA_def_property_ui_text(prop, "Offset", "Offset of floor from object center."); + RNA_def_property_ui_text(prop, "Offset", "Offset of floor from object origin."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 179bc8bcd7d..2925fe55a56 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -547,13 +547,13 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna) prop= RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xof"); RNA_def_property_range(prop, -50.0f, 50.0f); - RNA_def_property_ui_text(prop, "X Offset", "Horizontal offset from the object center"); + RNA_def_property_ui_text(prop, "X Offset", "Horizontal offset from the object origin"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yof"); RNA_def_property_range(prop, -50.0f, 50.0f); - RNA_def_property_ui_text(prop, "Y Offset", "Vertical offset from the object center"); + RNA_def_property_ui_text(prop, "Y Offset", "Vertical offset from the object origin"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "ul_position", PROP_FLOAT, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c index a05485986d1..f13eb4fedc1 100644 --- a/source/blender/makesrna/intern/rna_group.c +++ b/source/blender/makesrna/intern/rna_group.c @@ -114,7 +114,7 @@ void RNA_def_group(BlenderRNA *brna) prop= RNA_def_property(srna, "dupli_offset", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "dupli_ofs"); - RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the center to use when instancing as DupliGroup."); + RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the origin to use when instancing as DupliGroup."); RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 4); prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 9b5e0e0a659..c90dc6749c9 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1868,7 +1868,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "draw_axis", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_AXIS); - RNA_def_property_ui_text(prop, "Draw Axis", "Displays the object's center and axis"); + RNA_def_property_ui_text(prop, "Draw Axis", "Displays the object's origin and axis"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); prop= RNA_def_property(srna, "draw_texture_space", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index a5c02462ac2..7d8562e7272 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -632,12 +632,12 @@ static void rna_def_background_image(BlenderRNA *brna) prop= RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xof"); - RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the view center"); + RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the world origin"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yof"); - RNA_def_property_ui_text(prop, "Y Offset", "Offsets image vertically from the view center"); + RNA_def_property_ui_text(prop, "Y Offset", "Offsets image vertically from the world origin"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE); @@ -669,7 +669,7 @@ static void rna_def_space_3dview(BlenderRNA *brna) static EnumPropertyItem pivot_items[] = { {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, + {V3D_LOCAL, "INDIVIDUAL_ORIGINS", ICON_ROTATECOLLECTION, "Individual Origins", ""}, {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", ""}, {V3D_ACTIVE, "ACTIVE_ELEMENT", ICON_ROTACTIVE, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; @@ -770,9 +770,9 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Outline Selected", "Show an outline highlight around selected objects in non-wireframe views."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); - prop= RNA_def_property(srna, "all_object_centers", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "all_object_origins", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS); - RNA_def_property_ui_text(prop, "All Object Centers", "Show the object center dot for all (selected and unselected) objects."); + RNA_def_property_ui_text(prop, "All Object Origins", "Show the object origin center dot for all (selected and unselected) objects."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "relationship_lines", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 9f7d897d09c..f3be443ef60 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1729,7 +1729,7 @@ static void rna_def_userdef_view(BlenderRNA *brna) prop= RNA_def_property(srna, "rotate_around_selection", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ORBIT_SELECTION); - RNA_def_property_ui_text(prop, "Rotate Around Selection", "Use selection as the orbiting center."); + RNA_def_property_ui_text(prop, "Rotate Around Selection", "Use selection as the pivot point."); /* select with */ @@ -1804,10 +1804,10 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_range(prop, 4, 40); RNA_def_property_ui_text(prop, "Manipulator Hotspot", "Hotspot in pixels for clicking widget handles."); - prop= RNA_def_property(srna, "object_center_size", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "object_origin_size", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "obcenter_dia"); RNA_def_property_range(prop, 4, 10); - RNA_def_property_ui_text(prop, "Object Center Size", "Diameter in Pixels for Object/Lamp center display."); + RNA_def_property_ui_text(prop, "Object Origin Size", "Diameter in Pixels for Object/Lamp origin display."); RNA_def_property_update(prop, 0, "rna_userdef_update"); -- cgit v1.2.3 From e31810971476b74cf3413c909c12ffe9b1658150 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 30 Nov 2009 18:06:45 +0000 Subject: * Disabled "Shaded View" again, not working in 2.5 (yet). --- source/blender/makesrna/intern/rna_space.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 7d8562e7272..e7f9a8edcae 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -662,7 +662,7 @@ static void rna_def_space_3dview(BlenderRNA *brna) {OB_BOUNDBOX, "BOUNDBOX", ICON_BBOX, "Bounding Box", "Display the object's local bounding boxes only"}, {OB_WIRE, "WIREFRAME", ICON_WIRE, "Wireframe", "Display the object as wire edges"}, {OB_SOLID, "SOLID", ICON_SOLID, "Solid", "Display the object solid, lit with default OpenGL lights"}, - {OB_SHADED, "SHADED", ICON_SMOOTH, "Shaded", "Display the object solid, with preview shading interpolated at vertices"}, + //{OB_SHADED, "SHADED", ICON_SMOOTH, "Shaded", "Display the object solid, with preview shading interpolated at vertices"}, {OB_TEXTURE, "TEXTURED", ICON_POTATO, "Textured", "Display the object solid, with face-assigned textures"}, {0, NULL, 0, NULL, NULL}}; -- cgit v1.2.3 From 4a4fff5b213bbd32d5c43d9e0a664b428cd16389 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 30 Nov 2009 18:26:53 +0000 Subject: Cleanup: * Deleted "Add" Prefix for mesh.duplicate_move in Toolbar. * Renamed "duplicate_ipo" property to "duplicate_fcurve" --- release/scripts/ui/space_userpref.py | 2 +- release/scripts/ui/space_view3d_toolbar.py | 2 +- source/blender/makesrna/intern/rna_userdef.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index ec459146e5c..69f75b54482 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -244,7 +244,7 @@ class USERPREF_PT_edit(bpy.types.Panel): sub1.prop(edit, "duplicate_lamp", text="Lamp") sub1.prop(edit, "duplicate_material", text="Material") sub1.prop(edit, "duplicate_texture", text="Texture") - sub1.prop(edit, "duplicate_ipo", text="F-Curve") + sub1.prop(edit, "duplicate_fcurve", text="F-Curve") sub1.prop(edit, "duplicate_action", text="Action") sub1.prop(edit, "duplicate_particle", text="Particle") diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 8559efa42c6..61707b60631 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -102,7 +102,7 @@ class VIEW3D_PT_tools_meshedit(View3DPanel): col.operator("mesh.extrude_move") col.operator("mesh.subdivide") col.operator("mesh.loopcut_slide") - col.operator("mesh.duplicate_move") + col.operator("mesh.duplicate_move", text="Duplicate") col.operator("mesh.spin") col.operator("mesh.screw") diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index f3be443ef60..278d7855f3a 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1981,9 +1981,9 @@ static void rna_def_userdef_edit(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_TEX); RNA_def_property_ui_text(prop, "Duplicate Texture", "Causes texture data to be duplicated with the object."); - prop= RNA_def_property(srna, "duplicate_ipo", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "duplicate_fcurve", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_IPO); - RNA_def_property_ui_text(prop, "Duplicate Ipo", "Causes ipo data to be duplicated with the object."); + RNA_def_property_ui_text(prop, "Duplicate F-Curve", "Causes F-curve data to be duplicated with the object."); prop= RNA_def_property(srna, "duplicate_action", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_ACT); -- cgit v1.2.3 From afe475b55b24ffdac9b9401bc81e5522ab901c4c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 30 Nov 2009 18:42:13 +0000 Subject: Approximate AO: Diffuse Bounce Hack This brings back the single bounce indirect diffuse lighting for AAO, it's not integrated well but that will be tackled later as part of shading system refactor and subdivision changes. The caveats are the same as AAO, with one extra thing, the diffuse lighting is sampled once per face, so it will not be accurate unless faces are subdivided. I'm committing this now so we can start testing it for Durian, and since changes need to make it work properly are planned. --- release/scripts/ui/properties_world.py | 1 + source/blender/makesdna/DNA_world_types.h | 1 + source/blender/makesrna/intern/rna_world.c | 6 + .../blender/render/extern/include/RE_shader_ext.h | 2 +- .../blender/render/intern/include/render_types.h | 3 +- source/blender/render/intern/source/occlusion.c | 221 ++++++++++++++------- source/blender/render/intern/source/shadeoutput.c | 1 + source/blender/render/intern/source/strand.c | 6 +- 8 files changed, 164 insertions(+), 77 deletions(-) diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index 4f662df8cc8..ec0e1c42add 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -219,6 +219,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel): col = split.column() col.prop(ao, "energy") + col.prop(ao, "indirect_energy") if wide_ui: col = split.column() diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 64ff23dd1a8..11ecbf97d97 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -107,6 +107,7 @@ typedef struct World { short aomode, aosamp, aomix, aocolor; float ao_adapt_thresh, ao_adapt_speed_fac; float ao_approx_error, ao_approx_correction; + float ao_indirect_energy, aopad; short ao_samp_method, ao_gather_method, ao_approx_passes; /* assorted settings (in the middle of ambient occlusion settings for padding reasons) */ diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index c0c9c1d6568..88992387148 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -312,6 +312,12 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna) RNA_def_property_range(prop, 0, 10); RNA_def_property_ui_text(prop, "Passes", "Number of preprocessing passes to reduce overocclusion (for Approximate)."); RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "indirect_energy", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "ao_indirect_energy"); + RNA_def_property_ui_range(prop, 0, 10, 0.1, 3); + RNA_def_property_ui_text(prop, "Indirect", "Use approximate ambient occlusion for indirect diffuse lighting."); + RNA_def_property_update(prop, 0, "rna_World_update"); } static void rna_def_world_mist(BlenderRNA *brna) diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h index b36163f57c0..2615be1440a 100644 --- a/source/blender/render/extern/include/RE_shader_ext.h +++ b/source/blender/render/extern/include/RE_shader_ext.h @@ -153,7 +153,7 @@ typedef struct ShadeInput float dxstrand, dystrand; /* AO is a pre-process now */ - float ao[3]; + float ao[3], indirect[3]; int xs, ys; /* pixel to be rendered */ int mask; /* subsample mask */ diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 48bf34d0696..d41851db5ff 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -398,7 +398,8 @@ typedef struct StrandSurface { int (*face)[4]; float (*co)[3]; /* for occlusion caching */ - float (*col)[3]; + float (*ao)[3]; + float (*indirect)[3]; /* for speedvectors */ float (*prevco)[3], (*nextco)[3]; int totvert, totface; diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index f62668b84c0..90929db2f74 100644 --- a/source/blender/render/intern/source/occlusion.c +++ b/source/blender/render/intern/source/occlusion.c @@ -64,7 +64,7 @@ #define CACHE_STEP 3 typedef struct OcclusionCacheSample { - float co[3], n[3], col[3], intensity, dist2; + float co[3], n[3], ao[3], indirect[3], intensity, dist2; int x, y, filled; } OcclusionCacheSample; @@ -81,7 +81,7 @@ typedef struct OccFace { typedef struct OccNode { float co[3], area; float sh[9], dco; - float occlusion; + float occlusion, rad[3]; int childflag; union { //OccFace face; @@ -97,6 +97,7 @@ typedef struct OcclusionTree { OccFace *face; /* instance and face indices */ float *occlusion; /* occlusion for faces */ + float (*rad)[3]; /* radiance for faces */ OccNode *root; @@ -117,7 +118,8 @@ typedef struct OcclusionTree { typedef struct OcclusionThread { Render *re; StrandSurface *mesh; - float (*facecol)[3]; + float (*faceao)[3]; + float (*faceindirect)[3]; int begin, end; int thread; } OcclusionThread; @@ -132,7 +134,6 @@ typedef struct OcclusionBuildThread { extern Render R; // meh -#if 0 static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr, float *rad) { ShadeInput *shi= ssamp->shi; @@ -160,7 +161,7 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr, shi->co[0]= l*v3[0]+u*v1[0]+v*v2[0]; shi->co[1]= l*v3[1]+u*v1[1]+v*v2[1]; shi->co[2]= l*v3[2]+u*v1[2]+v*v2[2]; - + shade_input_set_triangle_i(shi, obi, vlr, 0, 1, 2); /* set up view vector */ @@ -179,6 +180,8 @@ static void occ_shade(ShadeSample *ssamp, ObjectInstanceRen *obi, VlakRen *vlr, if(shi->flippednor) shade_input_flip_normals(shi); + madd_v3_v3fl(shi->co, shi->vn, 0.0001f); /* ugly.. */ + /* not a pretty solution, but fixes common cases */ if(shi->obr->ob && shi->obr->ob->transflag & OB_NEG_SCALE) { negate_v3(shi->vn); @@ -215,12 +218,11 @@ static void occ_build_shade(Render *re, OcclusionTree *tree) for(a=0; atotface; a++) { obi= &R.objectinstance[tree->face[a].obi]; - vlr= RE_findOrAddVlak(obi->obr, tree->face[a].vlr); + vlr= RE_findOrAddVlak(obi->obr, tree->face[a].facenr); occ_shade(&ssamp, obi, vlr, tree->rad[a]); } } -#endif /* ------------------------- Spherical Harmonics --------------------------- */ @@ -352,17 +354,19 @@ static void occ_face(const OccFace *face, float *co, float *normal, float *area) static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node) { OccNode *child; - float occ, area, totarea; + float occ, area, totarea, rad[3]; int a, b; occ= 0.0f; totarea= 0.0f; + zero_v3(rad); for(b=0; bchildflag & (1<child[b].face; occ_face(&tree->face[a], 0, 0, &area); occ += area*tree->occlusion[a]; + madd_v3_v3fl(rad, tree->rad[a], area); totarea += area; } else if(node->child[b].node) { @@ -370,14 +374,18 @@ static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node) occ_sum_occlusion(tree, child); occ += child->area*child->occlusion; + madd_v3_v3fl(rad, child->rad, child->area); totarea += child->area; } } - if(totarea != 0.0f) + if(totarea != 0.0f) { occ /= totarea; + mul_v3_fl(rad, 1.0f/totarea); + } node->occlusion= occ; + copy_v3_v3(node->rad, rad); } static int occ_find_bbox_axis(OcclusionTree *tree, int begin, int end, float *min, float *max) @@ -656,6 +664,9 @@ static OcclusionTree *occ_tree_build(Render *re) tree->co= MEM_callocN(sizeof(float)*3*totface, "OcclusionCo"); tree->occlusion= MEM_callocN(sizeof(float)*totface, "OcclusionOcclusion"); + if(re->wrld.ao_indirect_energy != 0.0f) + tree->rad= MEM_callocN(sizeof(float)*3*totface, "OcclusionRad"); + /* make array of face pointers */ for(b=0, c=0, obi=re->instancetable.first; obi; obi=obi->next, c++) { obr= obi->obr; @@ -682,12 +693,10 @@ static OcclusionTree *occ_tree_build(Render *re) tree->maxdepth= 1; occ_build_recursive(tree, tree->root, 0, totface, 1); -#if 0 - if(tree->doindirect) { + if(re->wrld.ao_indirect_energy != 0.0f) { occ_build_shade(re, tree); occ_sum_occlusion(tree, tree->root); } -#endif MEM_freeN(tree->co); tree->co= NULL; @@ -710,8 +719,9 @@ static void occ_free_tree(OcclusionTree *tree) if(tree->stack[a]) MEM_freeN(tree->stack[a]); if(tree->occlusion) MEM_freeN(tree->occlusion); - if(tree->face) MEM_freeN(tree->face); if(tree->cache) MEM_freeN(tree->cache); + if(tree->face) MEM_freeN(tree->face); + if(tree->rad) MEM_freeN(tree->rad); MEM_freeN(tree); } } @@ -1171,13 +1181,13 @@ static float occ_form_factor(OccFace *face, float *p, float *n) return contrib; } -static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float *pp, float *pn, float *occ, float *bentn) +static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float *pp, float *pn, float *occ, float rad[3], float bentn[3]) { OccNode *node, **stack; OccFace *face; - float resultocc, v[3], p[3], n[3], co[3], invd2; + float resultocc, resultrad[3], v[3], p[3], n[3], co[3], invd2; float distfac, fac, error, d2, weight, emitarea; - int b, totstack; + int b, f, totstack; /* init variables */ VECCOPY(p, pp); @@ -1185,12 +1195,13 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float VECADDFAC(p, p, n, 1e-4f); if(bentn) - VECCOPY(bentn, n); + copy_v3_v3(bentn, n); error= tree->error; distfac= tree->distfac; resultocc= 0.0f; + zero_v3(resultrad); /* init stack */ stack= tree->stack[thread]; @@ -1217,6 +1228,10 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float /* accumulate occlusion from spherical harmonics */ invd2 = 1.0f/sqrtf(d2); weight= occ_solid_angle(node, v, d2, invd2, n); + + if(rad) + madd_v3_v3fl(resultrad, node->rad, weight*fac); + weight *= node->occlusion; if(bentn) { @@ -1231,7 +1246,8 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float /* traverse into children */ for(b=0; bchildflag & (1<face+node->child[b].face; + f= node->child[b].face; + face= &tree->face[f]; /* accumulate occlusion with face form factor */ if(!exclude || !(face->obi == exclude->obi && face->facenr == exclude->facenr)) { @@ -1248,7 +1264,11 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float fac= 1.0f; weight= occ_form_factor(face, p, n); - weight *= tree->occlusion[node->child[b].face]; + + if(rad) + madd_v3_v3fl(resultrad, tree->rad[f], weight*fac); + + weight *= tree->occlusion[f]; if(bentn) { invd2= 1.0f/sqrtf(d2); @@ -1269,15 +1289,24 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float } if(occ) *occ= resultocc; + if(rad) copy_v3_v3(rad, resultrad); + /*if(rad && exclude) { + int a; + for(a=0; atotface; a++) + if((tree->face[a].obi == exclude->obi && tree->face[a].facenr == exclude->facenr)) + copy_v3_v3(rad, tree->rad[a]); + }*/ if(bentn) normalize_v3(bentn); } static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) { - float *occ, co[3], n[3]; + float *occ, (*rad)[3]= NULL, co[3], n[3]; int pass, i; occ= MEM_callocN(sizeof(float)*tree->totface, "OcclusionPassOcc"); + if(tree->rad) + rad= MEM_callocN(sizeof(float)*3*tree->totface, "OcclusionPassRad"); for(pass=0; passtotface; i++) { @@ -1285,7 +1314,7 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) negate_v3(n); VECADDFAC(co, co, n, 1e-8f); - occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL); + occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL, (rad)? rad[i]: NULL); if(re->test_break(re->tbh)) break; } @@ -1297,27 +1326,41 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) tree->occlusion[i] -= occ[i]; //MAX2(1.0f-occ[i], 0.0f); if(tree->occlusion[i] < 0.0f) tree->occlusion[i]= 0.0f; + + if(rad) { + sub_v3_v3(tree->rad[i], rad[i]); + + if(tree->rad[i][0] < 0.0f) + tree->rad[i][0]= 0.0f; + if(tree->rad[i][1] < 0.0f) + tree->rad[i][1]= 0.0f; + if(tree->rad[i][2] < 0.0f) + tree->rad[i][2]= 0.0f; + } } occ_sum_occlusion(tree, tree->root); } MEM_freeN(occ); + if(rad) + MEM_freeN(rad); } -static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *skycol) +static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *ao, float *indirect) { - float nn[3], bn[3], fac, occ, occlusion, correction; - int aocolor; + float nn[3], bn[3], fac, occ, occlusion, correction, rad[3]; + int aocolor, aorad; aocolor= re->wrld.aocolor; if(onlyshadow) aocolor= WO_AOPLAIN; + aorad= (re->wrld.ao_indirect_energy != 0.0f); VECCOPY(nn, n); negate_v3(nn); - occ_lookup(tree, thread, exclude, co, nn, &occ, (aocolor)? bn: NULL); + occ_lookup(tree, thread, exclude, co, nn, &occ, (aorad)? rad: NULL, (aocolor)? bn: NULL); correction= re->wrld.ao_approx_correction; @@ -1330,9 +1373,9 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f /* sky shading using bent normal */ if(ELEM(aocolor, WO_AOSKYCOL, WO_AOSKYTEX)) { fac= 0.5*(1.0f+bn[0]*re->grvec[0]+ bn[1]*re->grvec[1]+ bn[2]*re->grvec[2]); - skycol[0]= (1.0f-fac)*re->wrld.horr + fac*re->wrld.zenr; - skycol[1]= (1.0f-fac)*re->wrld.horg + fac*re->wrld.zeng; - skycol[2]= (1.0f-fac)*re->wrld.horb + fac*re->wrld.zenb; + ao[0]= (1.0f-fac)*re->wrld.horr + fac*re->wrld.zenr; + ao[1]= (1.0f-fac)*re->wrld.horg + fac*re->wrld.zeng; + ao[2]= (1.0f-fac)*re->wrld.horb + fac*re->wrld.zenb; } #if 0 else { /* WO_AOSKYTEX */ @@ -1343,17 +1386,20 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f dxyview[0]= 1.0f; dxyview[1]= 1.0f; dxyview[2]= 0.0f; - shadeSkyView(skycol, co, bn, dxyview); + shadeSkyView(ao, co, bn, dxyview); } #endif - mul_v3_fl(skycol, occlusion); + mul_v3_fl(ao, occlusion); } else { - skycol[0]= occlusion; - skycol[1]= occlusion; - skycol[2]= occlusion; + ao[0]= occlusion; + ao[1]= occlusion; + ao[2]= occlusion; } + + if(aorad) copy_v3_v3(indirect, rad); + else zero_v3(indirect); } /* ---------------------------- Caching ------------------------------- */ @@ -1374,7 +1420,7 @@ static OcclusionCacheSample *find_occ_sample(OcclusionCache *cache, int x, int y return &cache->sample[y*cache->w + x]; } -static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int y, int thread, float *col) +static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int y, int thread, float *ao, float *indirect) { OcclusionCache *cache; OcclusionCacheSample *samples[4], *sample; @@ -1394,7 +1440,8 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int VECSUB(d, sample->co, co); dist2= INPR(d, d); if(dist2 < 0.5f*sample->dist2 && INPR(sample->n, n) > 0.98f) { - VECCOPY(col, sample->col); + VECCOPY(ao, sample->ao); + VECCOPY(indirect, sample->indirect); return 1; } } @@ -1420,7 +1467,8 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int return 0; /* compute weighted interpolation between samples */ - col[0]= col[1]= col[2]= 0.0f; + zero_v3(ao); + zero_v3(indirect); totw= 0.0f; x1= samples[0]->x; @@ -1446,16 +1494,14 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int w= wb[i]*wn[i]*wz[i]; totw += w; - col[0] += w*samples[i]->col[0]; - col[1] += w*samples[i]->col[1]; - col[2] += w*samples[i]->col[2]; + madd_v3_v3fl(ao, samples[i]->ao, w); + madd_v3_v3fl(indirect, samples[i]->indirect, w); } if(totw >= 0.9f) { totw= 1.0f/totw; - col[0] *= totw; - col[1] *= totw; - col[2] *= totw; + mul_v3_fl(ao, totw); + mul_v3_fl(indirect, totw); return 1; } @@ -1469,7 +1515,7 @@ static void sample_occ_surface(ShadeInput *shi) int *face, *index = RE_strandren_get_face(shi->obr, strand, 0); float w[4], *co1, *co2, *co3, *co4; - if(mesh && mesh->face && mesh->co && mesh->col && index) { + if(mesh && mesh->face && mesh->co && mesh->ao && index) { face= mesh->face[*index]; co1= mesh->co[face[0]]; @@ -1477,19 +1523,27 @@ static void sample_occ_surface(ShadeInput *shi) co3= mesh->co[face[2]]; co4= (face[3])? mesh->co[face[3]]: NULL; - interp_weights_face_v3( w,co1, co2, co3, co4, strand->vert->co); + interp_weights_face_v3(w, co1, co2, co3, co4, strand->vert->co); + + zero_v3(shi->ao); + zero_v3(shi->indirect); - shi->ao[0]= shi->ao[1]= shi->ao[2]= 0.0f; - VECADDFAC(shi->ao, shi->ao, mesh->col[face[0]], w[0]); - VECADDFAC(shi->ao, shi->ao, mesh->col[face[1]], w[1]); - VECADDFAC(shi->ao, shi->ao, mesh->col[face[2]], w[2]); - if(face[3]) - VECADDFAC(shi->ao, shi->ao, mesh->col[face[3]], w[3]); + madd_v3_v3fl(shi->ao, mesh->ao[face[0]], w[0]); + madd_v3_v3fl(shi->indirect, mesh->indirect[face[0]], w[0]); + madd_v3_v3fl(shi->ao, mesh->ao[face[1]], w[1]); + madd_v3_v3fl(shi->indirect, mesh->indirect[face[1]], w[1]); + madd_v3_v3fl(shi->ao, mesh->ao[face[2]], w[2]); + madd_v3_v3fl(shi->indirect, mesh->indirect[face[2]], w[2]); + if(face[3]) { + madd_v3_v3fl(shi->ao, mesh->ao[face[3]], w[3]); + madd_v3_v3fl(shi->indirect, mesh->indirect[face[3]], w[3]); + } } else { shi->ao[0]= 1.0f; shi->ao[1]= 1.0f; shi->ao[2]= 1.0f; + zero_v3(shi->indirect); } } @@ -1500,7 +1554,7 @@ static void *exec_strandsurface_sample(void *data) OcclusionThread *othread= (OcclusionThread*)data; Render *re= othread->re; StrandSurface *mesh= othread->mesh; - float col[3], co[3], n[3], *co1, *co2, *co3, *co4; + float ao[3], indirect[3], co[3], n[3], *co1, *co2, *co3, *co4; int a, *face; for(a=othread->begin; aend; a++) { @@ -1521,8 +1575,9 @@ static void *exec_strandsurface_sample(void *data) } negate_v3(n); - sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, col); - VECCOPY(othread->facecol[a], col); + sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, ao, indirect); + VECCOPY(othread->faceao[a], ao); + VECCOPY(othread->faceindirect[a], indirect); } return 0; @@ -1533,7 +1588,7 @@ void make_occ_tree(Render *re) OcclusionThread othreads[BLENDER_MAX_THREADS]; StrandSurface *mesh; ListBase threads; - float col[3], (*facecol)[3]; + float ao[3], indirect[3], (*faceao)[3], (*faceindirect)[3]; int a, totface, totthread, *face, *count; /* ugly, needed for occ_face */ @@ -1549,17 +1604,19 @@ void make_occ_tree(Render *re) occ_compute_passes(re, re->occlusiontree, re->wrld.ao_approx_passes); for(mesh=re->strandsurface.first; mesh; mesh=mesh->next) { - if(!mesh->face || !mesh->co || !mesh->col) + if(!mesh->face || !mesh->co || !mesh->ao) continue; count= MEM_callocN(sizeof(int)*mesh->totvert, "OcclusionCount"); - facecol= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceCol"); + faceao= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceAO"); + faceindirect= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceIndirect"); totthread= (mesh->totface > 10000)? re->r.threads: 1; totface= mesh->totface/totthread; for(a=0; atotface; a++) { face= mesh->face[a]; - VECCOPY(col, facecol[a]); - VECADD(mesh->col[face[0]], mesh->col[face[0]], col); + VECCOPY(ao, faceao[a]); + VECCOPY(indirect, faceindirect[a]); + + VECADD(mesh->ao[face[0]], mesh->ao[face[0]], ao); + VECADD(mesh->indirect[face[0]], mesh->indirect[face[0]], indirect); count[face[0]]++; - VECADD(mesh->col[face[1]], mesh->col[face[1]], col); + VECADD(mesh->ao[face[1]], mesh->ao[face[1]], ao); + VECADD(mesh->indirect[face[1]], mesh->indirect[face[1]], indirect); count[face[1]]++; - VECADD(mesh->col[face[2]], mesh->col[face[2]], col); + VECADD(mesh->ao[face[2]], mesh->ao[face[2]], ao); + VECADD(mesh->indirect[face[2]], mesh->indirect[face[2]], indirect); count[face[2]]++; if(face[3]) { - VECADD(mesh->col[face[3]], mesh->col[face[3]], col); + VECADD(mesh->ao[face[3]], mesh->ao[face[3]], ao); + VECADD(mesh->indirect[face[3]], mesh->indirect[face[3]], indirect); count[face[3]]++; } } - for(a=0; atotvert; a++) - if(count[a]) - mul_v3_fl(mesh->col[a], 1.0f/count[a]); + for(a=0; atotvert; a++) { + if(count[a]) { + mul_v3_fl(mesh->ao[a], 1.0f/count[a]); + mul_v3_fl(mesh->indirect[a], 1.0f/count[a]); + } + } MEM_freeN(count); - MEM_freeN(facecol); + MEM_freeN(faceao); + MEM_freeN(faceindirect); } } } @@ -1626,12 +1693,12 @@ void sample_occ(Render *re, ShadeInput *shi) sample_occ_surface(shi); } /* try to get result from the cache if possible */ - else if(shi->depth!=0 || !sample_occ_cache(tree, shi->co, shi->vno, shi->xs, shi->ys, shi->thread, shi->ao)) { + else if(shi->depth!=0 || !sample_occ_cache(tree, shi->co, shi->vno, shi->xs, shi->ys, shi->thread, shi->ao, shi->indirect)) { /* no luck, let's sample the occlusion */ exclude.obi= shi->obi - re->objectinstance; exclude.facenr= shi->vlr->index; onlyshadow= (shi->mat->mode & MA_ONLYSHADOW); - sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao); + sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->indirect); /* fill result into sample, each time */ if(tree->cache) { @@ -1641,8 +1708,10 @@ void sample_occ(Render *re, ShadeInput *shi) sample= &cache->sample[(shi->ys-cache->y)*cache->w + (shi->xs-cache->x)]; VECCOPY(sample->co, shi->co); VECCOPY(sample->n, shi->vno); - VECCOPY(sample->col, shi->ao); - sample->intensity= MAX3(sample->col[0], sample->col[1], sample->col[2]); + VECCOPY(sample->ao, shi->ao); + VECCOPY(sample->indirect, shi->indirect); + sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]); + sample->intensity= MAX2(sample->intensity, MAX3(sample->indirect[0], sample->indirect[1], sample->indirect[2])); sample->dist2= INPR(shi->dxco, shi->dxco) + INPR(shi->dyco, shi->dyco); sample->filled= 1; } @@ -1653,6 +1722,10 @@ void sample_occ(Render *re, ShadeInput *shi) shi->ao[0]= 1.0f; shi->ao[1]= 1.0f; shi->ao[2]= 1.0f; + + shi->indirect[0]= 0.0f; + shi->indirect[1]= 0.0f; + shi->indirect[2]= 0.0f; } } @@ -1720,12 +1793,14 @@ void cache_occ_samples(Render *re, RenderPart *pa, ShadeSample *ssamp) onlyshadow= (shi->mat->mode & MA_ONLYSHADOW); exclude.obi= shi->obi - re->objectinstance; exclude.facenr= shi->vlr->index; - sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao); + sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->indirect); VECCOPY(sample->co, shi->co); VECCOPY(sample->n, shi->vno); - VECCOPY(sample->col, shi->ao); - sample->intensity= MAX3(sample->col[0], sample->col[1], sample->col[2]); + VECCOPY(sample->ao, shi->ao); + VECCOPY(sample->indirect, shi->indirect); + sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]); + sample->intensity= MAX2(sample->intensity, MAX3(sample->indirect[0], sample->indirect[1], sample->indirect[2])); sample->dist2= INPR(shi->dxco, shi->dxco) + INPR(shi->dyco, shi->dyco); sample->x= shi->xs; sample->y= shi->ys; diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index f167122f497..958a2e34215 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1041,6 +1041,7 @@ void ambient_occlusion_to_diffuse(ShadeInput *shi, float *diff) } VECMUL(diff, f); + madd_v3_v3fl(diff, shi->indirect, R.wrld.ao_indirect_energy*shi->amb); } else diff[0]= diff[1]= diff[2]= 0.0f; diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c index 47a7c052b18..ecea7360974 100644 --- a/source/blender/render/intern/source/strand.c +++ b/source/blender/render/intern/source/strand.c @@ -959,7 +959,8 @@ StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm, mesh->totvert= totvert; mesh->totface= totface; mesh->face= MEM_callocN(sizeof(int)*4*mesh->totface, "StrandSurfFaces"); - mesh->col= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfCol"); + mesh->ao= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfAO"); + mesh->indirect= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfIndirect"); BLI_addtail(&re->strandsurface, mesh); } @@ -997,7 +998,8 @@ void free_strand_surface(Render *re) if(mesh->co) MEM_freeN(mesh->co); if(mesh->prevco) MEM_freeN(mesh->prevco); if(mesh->nextco) MEM_freeN(mesh->nextco); - if(mesh->col) MEM_freeN(mesh->col); + if(mesh->ao) MEM_freeN(mesh->ao); + if(mesh->indirect) MEM_freeN(mesh->indirect); if(mesh->face) MEM_freeN(mesh->face); } -- cgit v1.2.3 From 9d8b94eceed50ad0b397a87d4322bd6951176872 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 19:24:13 +0000 Subject: surfaces were displaying the Geometry panel that only curves need --- release/scripts/ui/properties_data_curve.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 9a7961cfa33..b6e82e05994 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -128,6 +128,14 @@ class DATA_PT_shape_curve(DataButtonsPanel): class DATA_PT_geometry_curve(DataButtonsPanel): bl_label = "Geometry" + def poll(self, context): + obj = context.object + if obj and obj.type == 'SURFACE': + return False + + curve = context.curve + return (curve and curve.active_spline) + def draw(self, context): layout = self.layout -- cgit v1.2.3 From 29f6357ddceb112159e2b2e388924ed3c451f6c0 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 30 Nov 2009 19:43:59 +0000 Subject: Bugfix: PET circle not drawn correctly in edit mode. --- source/blender/editors/transform/transform_constraints.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index f59803924d5..1a810d4adc3 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -668,6 +668,7 @@ void drawPropCircle(const struct bContext *C, TransInfo *t) if (t->flag & T_PROP_EDIT) { RegionView3D *rv3d = CTX_wm_region_view3d(C); float tmat[4][4], imat[4][4]; + float center[3]; UI_ThemeColor(TH_GRID); @@ -684,9 +685,11 @@ void drawPropCircle(const struct bContext *C, TransInfo *t) glPushMatrix(); + VECCOPY(center, t->center); + if((t->spacetype == SPACE_VIEW3D) && t->obedit) { - glMultMatrixf(t->obedit->obmat); /* because t->center is in local space */ + mul_m4_v3(t->obedit->obmat, center); /* because t->center is in local space */ } else if(t->spacetype == SPACE_IMAGE) { @@ -697,7 +700,7 @@ void drawPropCircle(const struct bContext *C, TransInfo *t) } set_inverted_drawing(1); - drawcircball(GL_LINE_LOOP, t->center, t->prop_size, imat); + drawcircball(GL_LINE_LOOP, center, t->prop_size, imat); set_inverted_drawing(0); glPopMatrix(); -- cgit v1.2.3 From 168fe0b4b53b048fa7c125f46112f53670610bd4 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 30 Nov 2009 20:20:00 +0000 Subject: Transform Modal Map: Adding events for X/Y/Z axis and planar constraints (always use the user orientation, not global first) and for turning constraints off. Built-in keys (toggle between global, user and off) are not in the map but can be overridden (any events handled by the modal keymap will not enter the built-in map). --- source/blender/editors/transform/transform.c | 113 +++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index ce7076c691f..2e1922d8a07 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -502,14 +502,21 @@ static char *transform_to_undostr(TransInfo *t) /* ************************************************* */ /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */ -#define TFM_MODAL_CANCEL 1 -#define TFM_MODAL_CONFIRM 2 -#define TFM_MODAL_TRANSLATE 3 -#define TFM_MODAL_ROTATE 4 -#define TFM_MODAL_RESIZE 5 +#define TFM_MODAL_CANCEL 1 +#define TFM_MODAL_CONFIRM 2 +#define TFM_MODAL_TRANSLATE 3 +#define TFM_MODAL_ROTATE 4 +#define TFM_MODAL_RESIZE 5 #define TFM_MODAL_SNAP_ON 6 -#define TFM_MODAL_SNAP_OFF 7 +#define TFM_MODAL_SNAP_OFF 7 #define TFM_MODAL_SNAP_TOGGLE 8 +#define TFM_MODAL_AXIS_X 9 +#define TFM_MODAL_AXIS_Y 10 +#define TFM_MODAL_AXIS_Z 11 +#define TFM_MODAL_PLANE_X 12 +#define TFM_MODAL_PLANE_Y 13 +#define TFM_MODAL_PLANE_Z 14 +#define TFM_MODAL_CONS_OFF 15 /* called in transform_ops.c, on each regeneration of keymaps */ void transform_modal_keymap(wmKeyConfig *keyconf) @@ -523,6 +530,13 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_SNAP_ON, "SNAP_ON", 0, "Snap On", ""}, {TFM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap Off", ""}, {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""}, + {TFM_MODAL_AXIS_X, "AXIS_X", 0, "Orientation X axis", ""}, + {TFM_MODAL_AXIS_Y, "AXIS_Y", 0, "Orientation Y axis", ""}, + {TFM_MODAL_AXIS_Z, "AXIS_Z", 0, "Orientation Z axis", ""}, + {TFM_MODAL_PLANE_X, "PLANE_X", 0, "Orientation X plane", ""}, + {TFM_MODAL_PLANE_Y, "PLANE_Y", 0, "Orientation Y plane", ""}, + {TFM_MODAL_PLANE_Z, "PLANE_Z", 0, "Orientation Z plane", ""}, + {TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -642,6 +656,93 @@ int transformEvent(TransInfo *t, wmEvent *event) t->modifiers ^= MOD_SNAP; t->redraw = 1; break; + case TFM_MODAL_AXIS_X: + if ((t->flag & T_NO_CONSTRAINT)==0) { + if (cmode == 'X') { + stopConstraint(t); + } + else { + if (t->flag & T_2D_EDIT) { + setConstraint(t, mati, (CON_AXIS0), "along X axis"); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS0), "along %s X"); + } + } + t->redraw = 1; + } + break; + case TFM_MODAL_AXIS_Y: + if ((t->flag & T_NO_CONSTRAINT)==0) { + if (cmode == 'Y') { + stopConstraint(t); + } + else { + if (t->flag & T_2D_EDIT) { + setConstraint(t, mati, (CON_AXIS1), "along Y axis"); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS1), "along %s Y"); + } + } + t->redraw = 1; + } + break; + case TFM_MODAL_AXIS_Z: + if ((t->flag & T_NO_CONSTRAINT)==0) { + if (cmode == 'Z') { + stopConstraint(t); + } + else { + if (t->flag & T_2D_EDIT) { + setConstraint(t, mati, (CON_AXIS0), "along Z axis"); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS2), "along %s Z"); + } + } + t->redraw = 1; + } + break; + case TFM_MODAL_PLANE_X: + if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) { + if (cmode == 'X') { + stopConstraint(t); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS1|CON_AXIS2), "locking %s X"); + } + t->redraw = 1; + } + break; + case TFM_MODAL_PLANE_Y: + if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) { + if (cmode == 'Y') { + stopConstraint(t); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS0|CON_AXIS2), "locking %s Y"); + } + t->redraw = 1; + } + break; + case TFM_MODAL_PLANE_Z: + if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) { + if (cmode == 'Z') { + stopConstraint(t); + } + else { + setUserConstraint(t, t->current_orientation, (CON_AXIS0|CON_AXIS1), "locking %s Z"); + } + t->redraw = 1; + } + break; + case TFM_MODAL_CONS_OFF: + if ((t->flag & T_NO_CONSTRAINT)==0) { + stopConstraint(t); + t->redraw = 1; + } + break; default: handled = 0; break; -- cgit v1.2.3 From 33c444f9651d8b726b6203c36051db21c24829b1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 30 Nov 2009 22:32:04 +0000 Subject: User Script support added back. - the scripts path set in the user preferences or ~/.blender/scripts/ui (io, op, io etc..) will be used to load scripts. - the default home dir part probably only works in *nix os's - Added a missing sync callback to vector.toTuple() --- release/scripts/modules/bpy/__init__.py | 29 +++++++++++++++-------------- release/scripts/modules/bpy/utils.py | 18 ++++++++++++++++-- source/blender/python/generic/vector.c | 3 +++ 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 39b8fd340ba..0df11659336 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -46,20 +46,21 @@ def load_scripts(reload_scripts=False): for base_path in utils.script_paths(): for path_subdir in ("ui", "op", "io"): path = os.path.join(base_path, path_subdir) - sys.path.insert(0, path) - for f in sorted(os.listdir(path)): - if f.endswith(".py"): - # python module - mod = test_import(f[0:-3]) - elif "." not in f: - # python package - mod = test_import(f) - else: - mod = None - - if reload_scripts and mod: - print("Reloading:", mod) - reload(mod) + if os.path.isdir(path): + sys.path.insert(0, path) + for f in sorted(os.listdir(path)): + if f.endswith(".py"): + # python module + mod = test_import(f[0:-3]) + elif "." not in f: + # python package + mod = test_import(f) + else: + mod = None + + if reload_scripts and mod: + print("Reloading:", mod) + reload(mod) def _main(): diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index a10c8bc4dd9..3af163e1069 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -57,12 +57,26 @@ _scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardi _scripts = (os.path.normpath(_scripts), ) def script_paths(*args): + scripts = list(_scripts) + + # add user scripts dir + user_script_path = bpy.context.user_preferences.filepaths.python_scripts_directory + + if not user_script_path: + # XXX - WIN32 needs checking, perhaps better call a blender internal function. + user_script_path = os.path.join(os.path.expanduser("~"), ".blender", "scripts") + + user_script_path = os.path.normpath(user_script_path) + + if user_script_path not in scripts and os.path.isdir(user_script_path): + scripts.append(user_script_path) + if not args: - return _scripts + return scripts subdir = os.path.join(*args) script_paths = [] - for path in _scripts: + for path in scripts: script_paths.append(os.path.join(path, subdir)) return script_paths diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index b8f2ca6f1df..ae2c96fa86a 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -253,6 +253,9 @@ static PyObject *Vector_ToTuple(VectorObject * self, PyObject *value) return NULL; } + if(!BaseMath_ReadCallback(self)) + return NULL; + ret= PyTuple_New(self->size); for(x = 0; x < self->size; x++) { -- cgit v1.2.3 From 99e765ee000503e6e917d52619d96a5ee557943e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 00:44:53 +0000 Subject: added autorig neck type new bone properties - bone.basename (name without the extension), "Some.Bone.001" --> "Some.Bone" - bone.children_recursive_basename, gives a chain of children that have the same basename --- release/scripts/modules/bpy_types.py | 34 +++++ release/scripts/modules/rigify/__init__.py | 3 - release/scripts/modules/rigify/finger.py | 4 +- release/scripts/modules/rigify/neck.py | 194 +++++++++++++++++++++++++++++ 4 files changed, 230 insertions(+), 5 deletions(-) create mode 100644 release/scripts/modules/rigify/neck.py diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index fb1d2978c90..7727d30328f 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -46,6 +46,7 @@ class _GenericBone: functions for bones, common between Armature/Pose/Edit bones. internal subclassing use only. ''' + def parent_index(self, parent_test): ''' The same as 'bone in other_bone.parent_recursive' but saved generating a list. @@ -63,6 +64,10 @@ class _GenericBone: return 0 + @property + def basename(self): + return self.name.rsplit(".", 1)[0] + @property def parent_recursive(self): parent_list = [] @@ -96,6 +101,35 @@ class _GenericBone: bones_children.sort(key=lambda bone_pair: bone_pair[0]) return [bone for index, bone in bones_children] + @property + def children_recursive_basename(self): + ''' + Returns a chain of children with the same base name as this bone + Only direct chains are supported, forks caused by multiple children with matching basenames will. + ''' + basename = self.basename + chain = [] + + child = self + while True: + children = child.children + children_basename = [] + + for child in children: + if basename == child.basename: + children_basename.append(child) + + if len(children_basename) == 1: + child = children_basename[0] + chain.append(child) + else: + if len(children_basename): + print("multiple basenames found, this is probably not what you want!", bone.name, children_basename) + + break + + return chain + @property def _other_bones(self): id_data = self.id_data diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index fa2a8040d01..9d34f9a72ff 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -79,9 +79,6 @@ def get_bone_data(obj, bone_name): return arm, pbone, bone -def bone_basename(name): - return name.split(".")[0] - def copy_bone_simple(arm, from_bone, name, parent=False): ebone = arm.edit_bones[from_bone] ebone_new = arm.edit_bones.new(name) diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index a5e8f2d0ea1..c71473dca8e 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -17,7 +17,7 @@ # ##### END GPL LICENSE BLOCK ##### import bpy -from rigify import get_bone_data, bone_basename, empty_layer +from rigify import get_bone_data, empty_layer from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get from functools import reduce @@ -35,7 +35,7 @@ def main(obj, orig_bone_name): children = orig_pbone.children_recursive tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - base_name = bone_basename(orig_pbone.name) + base_name = orig_pbone.basename # first make a new bone at the location of the finger control_ebone = arm.edit_bones.new(base_name) diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py new file mode 100644 index 00000000000..c9c732b5df6 --- /dev/null +++ b/release/scripts/modules/rigify/neck.py @@ -0,0 +1,194 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import bone_class_instance, copy_bone_simple +from rna_prop_ui import rna_idprop_ui_prop_get + + +def main(obj, orig_bone_name): + from Mathutils import Vector + + arm = obj.data + + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["body", "head"]) # meta + mt.head = orig_bone_name + mt.update() + mt.body = mt.head_e.parent.name + mt.update() + + # child chain of the 'head' + children = mt.head_e.children + if len(children) != 1: + print("expected the head to have only 1 child.") + + child = children[0] + neck_chain = [child] + child.children_recursive_basename + neck_chain = [child.name for child in neck_chain] + + mt_chain = bone_class_instance(obj, [("neck_%.2d" % (i + 1)) for i in range(len(neck_chain))]) # 99 bones enough eh? + for i, child_name in enumerate(neck_chain): + setattr(mt_chain, ("neck_%.2d" % (i + 1)), child_name) + mt_chain.update() + + neck_chain_basename = mt_chain.neck_01_e.basename + neck_chain_segment_length = mt_chain.neck_01_e.length + + ex = bone_class_instance(obj, ["body", "head", "head_hinge","neck_socket"]) # hinge & extras + + # Add the head hinge at the bodys location, becomes the parent of the original head + + + # Copy the head bone and offset + ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % mt.head, parent=True) + ex.head = ex.head_e.name + # offset + head_length = ex.head_e.length + ex.head_e.head.y += head_length / 2.0 + ex.head_e.tail.y += head_length / 2.0 + + # Yes, use the body bone but call it a head hinge + ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % mt.head, parent=True) + ex.head_hinge = ex.head_hinge_e.name + ex.head_hinge_e.head.y += head_length / 4.0 + ex.head_hinge_e.tail.y += head_length / 4.0 + + # reparent the head, assume its not connected + mt.head_e.parent = ex.head_hinge_e + + # Insert the neck socket, the head copys this loation + ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) + ex.neck_socket = ex.neck_socket_e.name + ex.neck_socket_e.parent = mt.body_e + ex.neck_socket_e.head = mt.head_e.head + ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) + ex.neck_socket_e.roll = 0.0 + + # offset the head, not really needed since it has a copyloc constraint + mt.head_e.head.y += head_length / 4.0 + mt.head_e.tail.y += head_length / 4.0 + + for i in range(len(neck_chain)): + neck_e = getattr(mt_chain, "neck_%.2d_e" % (i + 1)) + + # dont store parent names, re-reference as each chain bones parent. + neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) + neck_e_parent.head = neck_e.head + neck_e_parent.tail = neck_e.head + Vector(0.0, 0.0, neck_chain_segment_length / 2.0) + neck_e_parent.roll = 0.0 + + orig_parent = neck_e.parent + neck_e.connected = False + neck_e.parent = neck_e_parent + neck_e_parent.connected = False + + if i == 0: + neck_e_parent.parent = mt.body_e + else: + neck_e_parent.parent = orig_parent + + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + mt_chain.update() + ex.update() + + # Simple one off constraints, no drivers + con = mt.head_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.neck_socket + + con = ex.head_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.head + + # driven hinge + prop = rna_idprop_ui_prop_get(mt.head_p, "hinge", create=True) + mt.head_p["hinge"] = 0.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = ex.head_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = mt.body + + # add driver + hinge_driver_path = mt.head_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + head_driver_path = mt.head_p.path_to_id() + + # b01/max(0.001,b01+b02+b03+b04+b05) + target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] + expression_suffix = "/max(0.001,%s)" % "+".join(target_names) + + + for i in range(len(neck_chain)): + neck_p = getattr(mt_chain, "neck_%.2d_p" % (i + 1)) + neck_p.lock_location = True, True, True + neck_p.lock_location = True, True, True + neck_p.lock_rotations_4d = True + + # Add bend prop + prop_name = "bend_%.2d" % (i + 1) + prop = rna_idprop_ui_prop_get(mt.head_p, prop_name, create=True) + mt.head_p[prop_name] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + # add parent constraint + neck_p_parent = neck_p.parent + + # add constraint + con = neck_p_parent.constraints.new('COPY_ROTATION') + con.name = "Copy Rotation" + con.target = obj + con.subtarget = ex.head + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'SCRIPTED' + # b01/max(0.001,b01+b02+b03+b04+b05) + driver.expression = target_names[i] + expression_suffix + fcurve.modifiers.remove(0) # grr dont need a modifier + + for j in range(len(neck_chain)): + tar = driver.targets.new() + tar.name = target_names[j] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (j + 1)) -- cgit v1.2.3 From eb24e788b82be4f957ca6a43c344173e80f27ff8 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 1 Dec 2009 10:23:27 +0000 Subject: Cocoa: implement Cmd+W to close window, workaround for wrong modifiers key status upon focus retrieval The carbon GetModifierFlag function (to get the current modifier keys status) is reimplemented in cocoa only from 10.6. So we need to use a workaround to get the correct modifiers when blender application gets focus back. Current one is to assume no modifiers. This at least fixes the issue when blender has been hidden using Cmd+H. The Cmd modifier was still seen as ON until the user pressed again on it. --- intern/ghost/intern/GHOST_SystemCocoa.mm | 36 +++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 86203a49da7..eb2abd6cdd0 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -392,6 +392,8 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG]) { #pragma mark Cocoa objects +static bool justGotFocus = false; + /** * CocoaAppDelegate * ObjC object to capture applicationShouldTerminate, and send quit event @@ -403,6 +405,7 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG]) { - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename; - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; - (void)applicationWillTerminate:(NSNotification *)aNotification; +- (void)applicationWillBecomeActive:(NSNotification *)aNotification; @end @implementation CocoaAppDelegate : NSObject @@ -436,6 +439,11 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG]) { /*G.afbreek = 0; //Let Cocoa perform the termination at the end WM_exit(C);*/ } + +- (void)applicationWillBecomeActive:(NSNotification *)aNotification +{ + justGotFocus = true; +} @end @@ -530,6 +538,9 @@ GHOST_TSuccess GHOST_SystemCocoa::init() [windowMenu addItemWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""]; + menuItem = [windowMenu addItemWithTitle:@"Close" action:@selector(performClose:) keyEquivalent:@"w"]; + [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; + menuItem = [[NSMenuItem alloc] init]; [menuItem setSubmenu:windowMenu]; @@ -706,14 +717,33 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 GHOST_TSuccess GHOST_SystemCocoa::getModifierKeys(GHOST_ModifierKeys& keys) const { - unsigned int modifiers = [[NSApp currentEvent] modifierFlags]; - //Direct query to modifierFlags can be used in 10.6 +#ifdef MAC_OS_X_VERSION_10_6 + unsigned int modifiers = [NSEvent modifierFlags]; keys.set(GHOST_kModifierKeyCommand, (modifiers & NSCommandKeyMask) ? true : false); keys.set(GHOST_kModifierKeyLeftAlt, (modifiers & NSAlternateKeyMask) ? true : false); keys.set(GHOST_kModifierKeyLeftShift, (modifiers & NSShiftKeyMask) ? true : false); keys.set(GHOST_kModifierKeyLeftControl, (modifiers & NSControlKeyMask) ? true : false); - + +#else + if (justGotFocus) { + //TODO: need to find a better workaround for the missing cocoa "getModifierFlag" function in 10.4/10.5 + justGotFocus = false; + keys.set(GHOST_kModifierKeyCommand, false); + keys.set(GHOST_kModifierKeyLeftAlt, false); + keys.set(GHOST_kModifierKeyLeftShift, false); + keys.set(GHOST_kModifierKeyLeftControl, false); + } + else { + unsigned int modifiers = [[NSApp currentEvent] modifierFlags]; + + keys.set(GHOST_kModifierKeyCommand, (modifiers & NSCommandKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftAlt, (modifiers & NSAlternateKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftShift, (modifiers & NSShiftKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftControl, (modifiers & NSControlKeyMask) ? true : false); + } + +#endif return GHOST_kSuccess; } -- cgit v1.2.3 From 370fe43b2b7beb7e56a7dafee1761473290b8967 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 1 Dec 2009 10:25:21 +0000 Subject: Eigen: fix 10.5 ppc compile error --- extern/Eigen2/Eigen/src/Core/util/Macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/Eigen2/Eigen/src/Core/util/Macros.h b/extern/Eigen2/Eigen/src/Core/util/Macros.h index 6be6f096055..89b20312a52 100644 --- a/extern/Eigen2/Eigen/src/Core/util/Macros.h +++ b/extern/Eigen2/Eigen/src/Core/util/Macros.h @@ -39,7 +39,7 @@ // 16 byte alignment is only useful for vectorization. Since it affects the ABI, we need to enable 16 byte alignment on all // platforms where vectorization might be enabled. In theory we could always enable alignment, but it can be a cause of problems // on some platforms, so we just disable it in certain common platform (compiler+architecture combinations) to avoid these problems. -#if defined(__GNUC__) && !(defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__ia64__)) +#if defined(__GNUC__) && !(defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__ia64__) || defined(__ppc__)) #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_ALIGNMENT 1 #else #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_ALIGNMENT 0 -- cgit v1.2.3 From bd8f50234f090e07cff293f3aef98bf61f7b4f14 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 1 Dec 2009 11:19:18 +0000 Subject: Mac scons config: enable cross-compile, set 10.4 as default for ppc (using darwin-8.0.0-powerpc libs), set opencollada not to be built by default --- config/darwin-config.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/config/darwin-config.py b/config/darwin-config.py index 825d00f892d..beb8f0d3e59 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -40,11 +40,17 @@ if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'ppc64': # Can be customized if MACOSX_ARCHITECTURE == 'ppc': - MAC_MIN_VERS = '10.3' - MACOSX_SDK='/Developer/SDKs/MacOSX10.3.9.sdk' - LCGDIR = '#../lib/darwin-6.1-powerpc' - CC = 'gcc-3.3' - CXX = 'g++-3.3' +# ppc release are now made for 10.4 +# MAC_MIN_VERS = '10.3' +# MACOSX_SDK='/Developer/SDKs/MacOSX10.3.9.sdk' +# LCGDIR = '#../lib/darwin-6.1-powerpc' +# CC = 'gcc-3.3' +# CXX = 'g++-3.3' + MAC_MIN_VERS = '10.4' + MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk' + LCGDIR = '#../lib/darwin-8.0.0-powerpc' + CC = 'gcc-4.0' + CXX = 'g++-4.0' elif MACOSX_ARCHITECTURE == 'i386': MAC_MIN_VERS = '10.4' MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk' @@ -249,7 +255,7 @@ BF_OPENGL_LIBPATH = '/System/Library/Frameworks/OpenGL.framework/Libraries' BF_OPENGL_LINKFLAGS = ['-framework', 'OpenGL'] #OpenCollada flags -WITH_BF_COLLADA = True +WITH_BF_COLLADA = False BF_COLLADA = '#source/blender/collada' BF_COLLADA_INC = '${BF_COLLADA}' BF_COLLADA_LIB = 'bf_collada' @@ -303,8 +309,8 @@ if MAC_MIN_VERS == '10.3': LLIBS.append('crt3.o') if USE_SDK==True: - SDK_FLAGS=['-isysroot', MACOSX_SDK,'-mmacosx-version-min='+MAC_MIN_VERS] - PLATFORM_LINKFLAGS = ['-mmacosx-version-min='+MAC_MIN_VERS,'-Wl','-syslibroot '+MACOSX_SDK]+PLATFORM_LINKFLAGS + SDK_FLAGS=['-isysroot', MACOSX_SDK,'-mmacosx-version-min='+MAC_MIN_VERS,'-arch',MACOSX_ARCHITECTURE] + PLATFORM_LINKFLAGS = ['-mmacosx-version-min='+MAC_MIN_VERS,'-Wl','-syslibroot '+MACOSX_SDK,'-arch',MACOSX_ARCHITECTURE]+PLATFORM_LINKFLAGS CCFLAGS=SDK_FLAGS+CCFLAGS CXXFLAGS=SDK_FLAGS+CXXFLAGS -- cgit v1.2.3 From 0391000c4ebe46dc896aed8e4d63732a90622fb6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 12:02:23 +0000 Subject: export an armature to graphviz showing hierarchy, constraint and driver relationships, useful for understanding other peoples complicated rigs. can be extended for 2.4x oops like graph too/ Example of Cessens spine rig http://www.pasteall.org/pic/show.php?id=378 --- release/scripts/modules/graphviz_export.py | 119 +++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 release/scripts/modules/graphviz_export.py diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py new file mode 100644 index 00000000000..c370d0c1f7b --- /dev/null +++ b/release/scripts/modules/graphviz_export.py @@ -0,0 +1,119 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +header = ''' +digraph ancestors { +graph [fontsize=30 labelloc="t" label="" splines=false overlap=true, rankdir=BT]; +ratio = "auto" ; +''' + +footer = ''' +} +''' + +def compat_str(text): + text = text.replace("\n", "\\n") + text = text.replace('"', '\\"') + return text + +def graph_armature(obj, path): + + file = open("/tmp/test.dot", "w") + fw = file.write + fw(header) + fw('label = "%s::%s" ;' % (bpy.data.filename.split("/")[-1].split("\\")[-1], obj.name)) + + arm = obj.data + + for bone in arm.bones: + label = [bone.name] + for key, value in obj.pose.bones[bone.name].items(): + if key.startswith("_"): + continue + + if type(value) == float: + value = "%.3f" % value + elif type(value) == str: + value = compat_str(value) + + label.append("%s = %s" % (key, value)) + + opts = ["shape=box", "regular=1", "style=filled", "fillcolor=white", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % ("\\n".join(label))] + + fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) + + for bone in arm.bones: + parent = bone.parent + if parent: + opts = ["dir=forward", "weight=2", "arrowhead=normal"] + if not bone.connected: + opts.append("style=dotted") + + fw('"%s" -> "%s" [%s] ;\n' % (bone.name, parent.name, ','.join(opts))) + del bone + + # constraints + for pbone in obj.pose.bones: + for constraint in pbone.constraints: + subtarget = constraint.subtarget + if subtarget: + # TODO, not internal links + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"'] # , + label = "%s\n%s" % (constraint.type, constraint.name) + opts.append('label="%s"' % compat_str(label)) + fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) + + # Drivers + def rna_path_as_pbone(rna_path): + if not rna_path.startswith("pose.bones["): + return None + + #rna_path_bone = rna_path[:rna_path.index("]") + 1] + #return obj.path_resolve(rna_path_bone) + bone_name = rna_path.split("[")[1].split("]")[0] + return obj.pose.bones[bone_name[1:-1]] + + for fcurve_driver in obj.animation_data.drivers: + rna_path = fcurve_driver.rna_path + pbone = rna_path_as_pbone(rna_path) + + if pbone: + for target in fcurve_driver.driver.targets: + pbone_target = rna_path_as_pbone(target.rna_path) + rna_path_target = target.rna_path + if pbone_target: + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"'] # , + display_source = rna_path.replace("pose.bones", "") + display_target = rna_path_target.replace("pose.bones", "") + label = "%s\\n%s" % (display_source, display_target) + opts.append('label="%s"' % compat_str(label)) + fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) + + fw(footer) + file.close() + + print(".", end='') + import sys + sys.stdout.flush() + +if __name__ == "__main__": + import bpy + import os + path ="/tmp/test.dot" + graph_armature(bpy.context.object, path) + os.system("dot -Tpng %s > %s; eog %s &" % (path, path + '.png', path + '.png')) -- cgit v1.2.3 From 2afc967a2f68ebe25fa1da3935064f90ebb8efec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 12:25:59 +0000 Subject: small fixes, also option for fake parent so hierarchy is always from the parent down --- release/scripts/modules/graphviz_export.py | 58 ++++++++++++++++++------------ 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index c370d0c1f7b..1f550541a81 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -31,9 +31,9 @@ def compat_str(text): text = text.replace('"', '\\"') return text -def graph_armature(obj, path): +def graph_armature(obj, path, FAKE_PARENT=True): - file = open("/tmp/test.dot", "w") + file = open(path, "w") fw = file.write fw(header) fw('label = "%s::%s" ;' % (bpy.data.filename.split("/")[-1].split("\\")[-1], obj.name)) @@ -57,14 +57,26 @@ def graph_armature(obj, path): fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) + # Root node. + if FAKE_PARENT: + fw('"Object::%s" [];\n' % obj.name) + for bone in arm.bones: parent = bone.parent if parent: - opts = ["dir=forward", "weight=2", "arrowhead=normal"] - if not bone.connected: - opts.append("style=dotted") + parent_name = parent.name + connected = bone.connected + elif FAKE_PARENT: + parent_name = 'Object::%s' % obj.name + connected = False + else: + continue - fw('"%s" -> "%s" [%s] ;\n' % (bone.name, parent.name, ','.join(opts))) + opts = ["dir=forward", "weight=2", "arrowhead=normal"] + if not connected: + opts.append("style=dotted") + + fw('"%s" -> "%s" [%s] ;\n' % (bone.name, parent_name, ','.join(opts))) del bone # constraints @@ -73,7 +85,7 @@ def graph_armature(obj, path): subtarget = constraint.subtarget if subtarget: # TODO, not internal links - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"'] # , + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"'] label = "%s\n%s" % (constraint.type, constraint.name) opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) @@ -88,21 +100,23 @@ def graph_armature(obj, path): bone_name = rna_path.split("[")[1].split("]")[0] return obj.pose.bones[bone_name[1:-1]] - for fcurve_driver in obj.animation_data.drivers: - rna_path = fcurve_driver.rna_path - pbone = rna_path_as_pbone(rna_path) - - if pbone: - for target in fcurve_driver.driver.targets: - pbone_target = rna_path_as_pbone(target.rna_path) - rna_path_target = target.rna_path - if pbone_target: - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"'] # , - display_source = rna_path.replace("pose.bones", "") - display_target = rna_path_target.replace("pose.bones", "") - label = "%s\\n%s" % (display_source, display_target) - opts.append('label="%s"' % compat_str(label)) - fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) + animation_data = obj.animation_data + if animation_data: + for fcurve_driver in obj.animation_data.drivers: + rna_path = fcurve_driver.rna_path + pbone = rna_path_as_pbone(rna_path) + + if pbone: + for target in fcurve_driver.driver.targets: + pbone_target = rna_path_as_pbone(target.rna_path) + rna_path_target = target.rna_path + if pbone_target: + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"'] # , + display_source = rna_path.replace("pose.bones", "") + display_target = rna_path_target.replace("pose.bones", "") + label = "%s\\n%s" % (display_source, display_target) + opts.append('label="%s"' % compat_str(label)) + fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) fw(footer) file.close() -- cgit v1.2.3 From 48398c978e2c00a8484a9e228671a7c7c7d7b831 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 12:43:06 +0000 Subject: more small fixes --- release/scripts/modules/graphviz_export.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 1f550541a81..c69a74f3d11 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -53,7 +53,7 @@ def graph_armature(obj, path, FAKE_PARENT=True): label.append("%s = %s" % (key, value)) - opts = ["shape=box", "regular=1", "style=filled", "fillcolor=white", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % ("\\n".join(label))] + opts = ["shape=box", "regular=1", "style=filled", "fillcolor=white", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) @@ -85,7 +85,7 @@ def graph_armature(obj, path, FAKE_PARENT=True): subtarget = constraint.subtarget if subtarget: # TODO, not internal links - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"'] + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=8'] label = "%s\n%s" % (constraint.type, constraint.name) opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) @@ -102,7 +102,7 @@ def graph_armature(obj, path, FAKE_PARENT=True): animation_data = obj.animation_data if animation_data: - for fcurve_driver in obj.animation_data.drivers: + for fcurve_driver in animation_data.drivers: rna_path = fcurve_driver.rna_path pbone = rna_path_as_pbone(rna_path) @@ -111,7 +111,7 @@ def graph_armature(obj, path, FAKE_PARENT=True): pbone_target = rna_path_as_pbone(target.rna_path) rna_path_target = target.rna_path if pbone_target: - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"'] # , + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=8"] # , display_source = rna_path.replace("pose.bones", "") display_target = rna_path_target.replace("pose.bones", "") label = "%s\\n%s" % (display_source, display_target) -- cgit v1.2.3 From 6372c63ae96da1b762c79cfe18299e3c72e188ac Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 14:48:36 +0000 Subject: select pattern for bones --- release/scripts/op/object.py | 19 +++++++++++++------ release/scripts/ui/space_view3d.py | 4 ++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 89ba38860b3..af864edee4f 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -40,11 +40,20 @@ class SelectPattern(bpy.types.Operator): else: pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) - for ob in context.visible_objects: - if pattern_match(ob.name, self.properties.pattern): - ob.selected = True + obj = context.object + if obj and obj.mode == 'POSE': + items = obj.data.bones + elif obj and obj.type == 'ARMATURE' and obj.mode == 'EDIT': + items = obj.data.edit_bones + else: + items = context.visible_objects + + # Can be pose bones or objects + for item in items: + if pattern_match(item.name, self.properties.pattern): + item.selected = True elif not self.properties.extend: - ob.selected = False + item.selected = False return ('FINISHED',) @@ -54,7 +63,6 @@ class SelectPattern(bpy.types.Operator): return ('RUNNING_MODAL',) def draw(self, context): - print("WoW") layout = self.layout props = self.properties @@ -62,7 +70,6 @@ class SelectPattern(bpy.types.Operator): row = layout.row() row.prop(props, "case_sensitive") row.prop(props, "extend") - class SubsurfSet(bpy.types.Operator): diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index c100cde5a20..871f0e30270 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -407,6 +407,8 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): props = layout.operator("pose.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' + + layout.operator("object.select_pattern", text="Select Pattern...") class VIEW3D_MT_select_particle(bpy.types.Menu): @@ -597,6 +599,8 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu): props = layout.operator("armature.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' + + layout.operator("object.select_pattern", text="Select Pattern...") class VIEW3D_MT_select_face(bpy.types.Menu):# XXX no matching enum -- cgit v1.2.3 From d7877d360a12d3ad6497a80c4ab4522fe3a2665d Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 1 Dec 2009 15:46:37 +0000 Subject: Cocoa: proper implementation of the modifiers key wrong value when application becomes active again Note: this works fine when running under 10.6, even if compiled with an older sdk Under 10.4/10.5, workaround remains to assume no modifier key is pressed when the user restores the focus to the application --- intern/ghost/intern/GHOST_SystemCocoa.h | 6 +++ intern/ghost/intern/GHOST_SystemCocoa.mm | 75 +++++++++++++++++++------------- 2 files changed, 51 insertions(+), 30 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index 684f028a833..bcc5da72b2e 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -200,6 +200,12 @@ public: */ GHOST_TSuccess handleWindowEvent(GHOST_TEventType eventType, GHOST_WindowCocoa* window); + /** + * Handles the Cocoa event telling the application has become active (again) + * @return Indication whether the event was handled. + */ + GHOST_TSuccess handleApplicationBecomeActiveEvent(); + /** * Handles a drag'n'drop destination event. Called by GHOST_WindowCocoa window subclass diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index eb2abd6cdd0..573b815a4ae 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -392,8 +392,6 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG]) { #pragma mark Cocoa objects -static bool justGotFocus = false; - /** * CocoaAppDelegate * ObjC object to capture applicationShouldTerminate, and send quit event @@ -442,7 +440,7 @@ static bool justGotFocus = false; - (void)applicationWillBecomeActive:(NSNotification *)aNotification { - justGotFocus = true; + systemCocoa->handleApplicationBecomeActiveEvent(); } @end @@ -717,33 +715,11 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 GHOST_TSuccess GHOST_SystemCocoa::getModifierKeys(GHOST_ModifierKeys& keys) const { -#ifdef MAC_OS_X_VERSION_10_6 - unsigned int modifiers = [NSEvent modifierFlags]; - - keys.set(GHOST_kModifierKeyCommand, (modifiers & NSCommandKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftAlt, (modifiers & NSAlternateKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftShift, (modifiers & NSShiftKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftControl, (modifiers & NSControlKeyMask) ? true : false); - -#else - if (justGotFocus) { - //TODO: need to find a better workaround for the missing cocoa "getModifierFlag" function in 10.4/10.5 - justGotFocus = false; - keys.set(GHOST_kModifierKeyCommand, false); - keys.set(GHOST_kModifierKeyLeftAlt, false); - keys.set(GHOST_kModifierKeyLeftShift, false); - keys.set(GHOST_kModifierKeyLeftControl, false); - } - else { - unsigned int modifiers = [[NSApp currentEvent] modifierFlags]; - - keys.set(GHOST_kModifierKeyCommand, (modifiers & NSCommandKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftAlt, (modifiers & NSAlternateKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftShift, (modifiers & NSShiftKeyMask) ? true : false); - keys.set(GHOST_kModifierKeyLeftControl, (modifiers & NSControlKeyMask) ? true : false); - } - -#endif + keys.set(GHOST_kModifierKeyCommand, (m_modifierMask & NSCommandKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftAlt, (m_modifierMask & NSAlternateKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftShift, (m_modifierMask & NSShiftKeyMask) ? true : false); + keys.set(GHOST_kModifierKeyLeftControl, (m_modifierMask & NSControlKeyMask) ? true : false); + return GHOST_kSuccess; } @@ -873,6 +849,45 @@ bool GHOST_SystemCocoa::processEvents(bool waitForEvent) return anyProcessed || m_outsideLoopEventProcessed; } +//Note: called from NSApplication delegate +GHOST_TSuccess GHOST_SystemCocoa::handleApplicationBecomeActiveEvent() +{ + //Update the modifiers key mask, as its status may have changed when the application was not active + //(that is when update events are sent to another application) + unsigned int modifiers; + GHOST_IWindow* window = m_windowManager->getActiveWindow(); + +#ifdef MAC_OS_X_VERSION_10_6 + modifiers = [NSEvent modifierFlags]; +#else + //If build against an older SDK, check if running on 10.6 to use the correct function + if ([NSEvent respondsToSelector:@selector(modifierFlags)]) { + modifiers = (unsigned int)[NSEvent modifierFlags]; + } + else { + //TODO: need to find a better workaround for the missing cocoa "getModifierFlag" function in 10.4/10.5 + modifiers = 0; + } +#endif + + if ((modifiers & NSShiftKeyMask) != (m_modifierMask & NSShiftKeyMask)) { + pushEvent( new GHOST_EventKey(getMilliSeconds(), (modifiers & NSShiftKeyMask)?GHOST_kEventKeyDown:GHOST_kEventKeyUp, window, GHOST_kKeyLeftShift) ); + } + if ((modifiers & NSControlKeyMask) != (m_modifierMask & NSControlKeyMask)) { + pushEvent( new GHOST_EventKey(getMilliSeconds(), (modifiers & NSControlKeyMask)?GHOST_kEventKeyDown:GHOST_kEventKeyUp, window, GHOST_kKeyLeftControl) ); + } + if ((modifiers & NSAlternateKeyMask) != (m_modifierMask & NSAlternateKeyMask)) { + pushEvent( new GHOST_EventKey(getMilliSeconds(), (modifiers & NSAlternateKeyMask)?GHOST_kEventKeyDown:GHOST_kEventKeyUp, window, GHOST_kKeyLeftAlt) ); + } + if ((modifiers & NSCommandKeyMask) != (m_modifierMask & NSCommandKeyMask)) { + pushEvent( new GHOST_EventKey(getMilliSeconds(), (modifiers & NSCommandKeyMask)?GHOST_kEventKeyDown:GHOST_kEventKeyUp, window, GHOST_kKeyCommand) ); + } + + m_modifierMask = modifiers; + + return GHOST_kSuccess; +} + //Note: called from NSWindow delegate GHOST_TSuccess GHOST_SystemCocoa::handleWindowEvent(GHOST_TEventType eventType, GHOST_WindowCocoa* window) { -- cgit v1.2.3 From 9f251ce3016b5b37e294c35f695e2b6345937764 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 1 Dec 2009 18:26:18 +0000 Subject: Additive snap for Transform. Easy snapping between two vertices, in the middle of three faces, ... A to add the current snapping point to the list Alt-A to remove the last one The resulting snapping point is the average of all snap points in the list (and the one under the mouse pointer, if valid). Snapping between two verts is a matter of moving over the first, pressing A, moving over the other, confirming transform. --- source/blender/editors/transform/transform.c | 15 ++++ source/blender/editors/transform/transform.h | 13 ++++ .../blender/editors/transform/transform_generics.c | 2 + source/blender/editors/transform/transform_snap.c | 82 +++++++++++++++++++--- 4 files changed, 102 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 2e1922d8a07..cbcb3953f49 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -517,6 +517,8 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_PLANE_Y 13 #define TFM_MODAL_PLANE_Z 14 #define TFM_MODAL_CONS_OFF 15 +#define TFM_MODAL_ADD_SNAP 16 +#define TFM_MODAL_REMOVE_SNAP 17 /* called in transform_ops.c, on each regeneration of keymaps */ void transform_modal_keymap(wmKeyConfig *keyconf) @@ -537,6 +539,8 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_PLANE_Y, "PLANE_Y", 0, "Orientation Y plane", ""}, {TFM_MODAL_PLANE_Z, "PLANE_Z", 0, "Orientation Z plane", ""}, {TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""}, + {TFM_MODAL_ADD_SNAP, "ADD_SNAP", 0, "Add Snap Point", ""}, + {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -558,6 +562,9 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE); + WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); + WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); + /* assign map to operators */ WM_modalkeymap_assign(keymap, "TFM_OT_transform"); WM_modalkeymap_assign(keymap, "TFM_OT_translate"); @@ -743,6 +750,14 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw = 1; } break; + case TFM_MODAL_ADD_SNAP: + addSnapPoint(t); + t->redraw = 1; + break; + case TFM_MODAL_REMOVE_SNAP: + removeSnapPoint(t); + t->redraw = 1; + break; default: handled = 0; break; diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 4b7d24dc1fa..1577c05cc88 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -32,6 +32,8 @@ #include "ED_transform.h" +#include "DNA_listBase.h" + #include "BLI_editVert.h" /* ************************** Types ***************************** */ @@ -82,6 +84,11 @@ typedef struct NumInput { Negative : number is negative */ +typedef struct TransSnapPoint { + struct TransSnapPoint *next,*prev; + float co[3]; +} TransSnapPoint; + typedef struct TransSnap { short mode; short modePoint; @@ -95,6 +102,7 @@ typedef struct TransSnap { float snapTarget[3]; /* to this point */ float snapNormal[3]; float snapTangent[3]; + ListBase points; float dist; // Distance from snapPoint to snapTarget double last; void (*applySnap)(struct TransInfo *, float *); @@ -417,6 +425,7 @@ typedef struct TransInfo { #define SNAP_FORCED 1 #define TARGET_INIT 2 #define POINT_INIT 4 +#define MULTI_POINTS 8 /* transsnap->modeTarget */ #define SNAP_CLOSEST 0 @@ -597,6 +606,10 @@ void drawSnapping(const struct bContext *C, TransInfo *t); int usingSnappingNormal(TransInfo *t); int validSnappingNormal(TransInfo *t); +void getSnapPoint(TransInfo *t, float vec[3]); +void addSnapPoint(TransInfo *t); +void removeSnapPoint(TransInfo *t); + /********************** Mouse Input ******************************/ typedef enum { diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 8b7c4b7503b..71a5affb573 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1095,6 +1095,8 @@ void postTrans (TransInfo *t) MEM_freeN(t->data); } + BLI_freelistN(&t->tsnap.points); + if (t->ext) MEM_freeN(t->ext); if (t->data2d) { MEM_freeN(t->data2d); diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index d36b7c9b903..7f1e67b62ac 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -123,9 +123,14 @@ int BIF_snappingSupported(Object *obedit) return status; } +int validSnap(TransInfo *t) { + return (t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) || + (t->tsnap.status & (MULTI_POINTS|TARGET_INIT)) == (MULTI_POINTS|TARGET_INIT); +} + void drawSnapping(const struct bContext *C, TransInfo *t) { - if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) && + if (validSnap(t) && (t->modifiers & MOD_SNAP)) { @@ -134,6 +139,7 @@ void drawSnapping(const struct bContext *C, TransInfo *t) glColor4ub(col[0], col[1], col[2], 128); if (t->spacetype == SPACE_VIEW3D) { + TransSnapPoint *p; View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d = CTX_wm_region_view3d(C); float tmat[4][4], imat[4][4]; @@ -141,14 +147,18 @@ void drawSnapping(const struct bContext *C, TransInfo *t) glDisable(GL_DEPTH_TEST); - size = get_drawsize(t->ar, t->tsnap.snapPoint); - - size *= 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); + size = 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); copy_m4_m4(tmat, rv3d->viewmat); invert_m4_m4(imat, tmat); - drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size, imat); + for (p = t->tsnap.points.first; p; p = p->next) { + drawcircball(GL_LINE_LOOP, p->co, size * get_drawsize(t->ar, p->co), imat); + } + + if (t->tsnap.status & POINT_INIT) { + drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size * get_drawsize(t->ar, t->tsnap.snapPoint), imat); + } /* draw normal if needed */ if (usingSnappingNormal(t) && validSnappingNormal(t)) @@ -302,7 +312,7 @@ void applySnapping(TransInfo *t, float *vec) t->tsnap.last = current; } - if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT)) + if (validSnap(t)) { t->tsnap.applySnap(t, vec); } @@ -331,7 +341,7 @@ int usingSnappingNormal(TransInfo *t) int validSnappingNormal(TransInfo *t) { - if ((t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT)) + if (validSnap(t)) { if (dot_v3v3(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0) { @@ -502,11 +512,59 @@ void setSnappingCallback(TransInfo *t, short snap_target) } } +void addSnapPoint(TransInfo *t) +{ + if (t->tsnap.status & POINT_INIT) { + TransSnapPoint *p = MEM_callocN(sizeof(TransSnapPoint), "SnapPoint"); + + VECCOPY(p->co, t->tsnap.snapPoint); + + BLI_addtail(&t->tsnap.points, p); + + t->tsnap.status |= MULTI_POINTS; + } +} + +void removeSnapPoint(TransInfo *t) +{ + if (t->tsnap.status & MULTI_POINTS) { + BLI_freelinkN(&t->tsnap.points, t->tsnap.points.last); + + if (t->tsnap.points.first == NULL) + t->tsnap.status &= ~MULTI_POINTS; + } +} + +void getSnapPoint(TransInfo *t, float vec[3]) +{ + if (t->tsnap.points.first) { + TransSnapPoint *p; + int total = 0; + + vec[0] = vec[1] = vec[2] = 0; + + for (p = t->tsnap.points.first; p; p = p->next, total++) { + add_v3_v3(vec, p->co); + } + + if (t->tsnap.status & POINT_INIT) { + add_v3_v3(vec, t->tsnap.snapPoint); + total++; + } + + mul_v3_fl(vec, 1.0f / total); + } else { + VECCOPY(vec, t->tsnap.snapPoint) + } +} + /********************** APPLY **************************/ void ApplySnapTranslation(TransInfo *t, float vec[3]) { - sub_v3_v3v3(vec, t->tsnap.snapPoint, t->tsnap.snapTarget); + float point[3]; + getSnapPoint(t, point); + sub_v3_v3v3(vec, point, t->tsnap.snapTarget); } void ApplySnapRotation(TransInfo *t, float *vec) @@ -515,7 +573,9 @@ void ApplySnapRotation(TransInfo *t, float *vec) *vec = t->tsnap.dist; } else { - *vec = RotationBetween(t, t->tsnap.snapTarget, t->tsnap.snapPoint); + float point[3]; + getSnapPoint(t, point); + *vec = RotationBetween(t, t->tsnap.snapTarget, point); } } @@ -525,7 +585,9 @@ void ApplySnapResize(TransInfo *t, float vec[3]) vec[0] = vec[1] = vec[2] = t->tsnap.dist; } else { - vec[0] = vec[1] = vec[2] = ResizeBetween(t, t->tsnap.snapTarget, t->tsnap.snapPoint); + float point[3]; + getSnapPoint(t, point); + vec[0] = vec[1] = vec[2] = ResizeBetween(t, t->tsnap.snapTarget, point); } } -- cgit v1.2.3 From 9bf3845539175bb03e05b75bc2db7e57e5e3139e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 19:43:09 +0000 Subject: circle select modal operator wasnt returning FINISHED so it wasnt getting an undo push --- source/blender/windowmanager/intern/wm_operators.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index ab4355bc524..793250f390e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1955,7 +1955,7 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, wmEvent *event) case GESTURE_MODAL_CANCEL: case GESTURE_MODAL_CONFIRM: wm_gesture_end(C, op); - return OPERATOR_CANCELLED; + return OPERATOR_FINISHED; /* use finish or we dont get an undo */ } } // // Allow view navigation??? -- cgit v1.2.3 From ce13cded15bb8429d495c3976eeab2e2d46dd104 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Tue, 1 Dec 2009 20:37:26 +0000 Subject: fix for [#19990] file browser crash needed to fix jpg error handling to not return control to the library from jpg_error used as error exit. Needed to add structured exception handling (setjmp/longjmp) - not very nice but needed in this case. (Also recommended in example.c from libjpg and used in gimp ;) ) --- source/blender/imbuf/intern/jpeg.c | 121 +++++++++++++++++++++++++++---------- 1 file changed, 88 insertions(+), 33 deletions(-) diff --git a/source/blender/imbuf/intern/jpeg.c b/source/blender/imbuf/intern/jpeg.c index 2f721e1d805..2df522ff4a2 100644 --- a/source/blender/imbuf/intern/jpeg.c +++ b/source/blender/imbuf/intern/jpeg.c @@ -32,6 +32,8 @@ /* This little block needed for linking to Blender... */ #include +#include + #include "BLI_blenlib.h" #include "imbuf.h" @@ -41,6 +43,7 @@ #include "IMB_imginfo.h" #include "IMB_jpeg.h" #include "jpeglib.h" +#include "jerror.h" /* the types are from the jpeg lib */ static void jpeg_error (j_common_ptr cinfo); @@ -66,7 +69,6 @@ type 3 is unsupported as of jul 05 2000 Frank. * 4. jmax - no scaling in the components */ -static int jpeg_failed = FALSE; static int jpeg_default_quality; static int ibuf_ftype; @@ -76,15 +78,30 @@ int imb_is_a_jpeg(unsigned char *mem) { return 0; } +//---------------------------------------------------------- +// JPG ERROR HANDLING +//---------------------------------------------------------- + +typedef struct my_error_mgr { + struct jpeg_error_mgr pub; /* "public" fields */ + + jmp_buf setjmp_buffer; /* for return to caller */ +} my_error_mgr; + +typedef my_error_mgr * my_error_ptr; + static void jpeg_error (j_common_ptr cinfo) { + my_error_ptr err = (my_error_ptr)cinfo->err; + /* Always display the message */ (*cinfo->err->output_message) (cinfo); /* Let the memory manager delete any temp files before we die */ jpeg_destroy(cinfo); - jpeg_failed = TRUE; + /* return control to the setjmp point */ + longjmp(err->setjmp_buffer, 1); } //---------------------------------------------------------- @@ -255,7 +272,7 @@ static ImBuf * ibJpegImageFromCinfo(struct jpeg_decompress_struct * cinfo, int f x = cinfo->image_width; y = cinfo->image_height; depth = cinfo->num_components; - + if (cinfo->jpeg_color_space == JCS_YCCK) cinfo->out_color_space = JCS_CMYK; jpeg_start_decompress(cinfo); @@ -407,14 +424,24 @@ next_stamp_marker: ImBuf * imb_ibJpegImageFromFilename (const char * filename, int flags) { struct jpeg_decompress_struct _cinfo, *cinfo = &_cinfo; - struct jpeg_error_mgr jerr; + struct my_error_mgr jerr; FILE * infile; ImBuf * ibuf; if ((infile = fopen(filename, "rb")) == NULL) return 0; - cinfo->err = jpeg_std_error(&jerr); - jerr.error_exit = jpeg_error; + cinfo->err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = jpeg_error; + + /* Establish the setjmp return context for my_error_exit to use. */ + if (setjmp(jerr.setjmp_buffer)) { + /* If we get here, the JPEG code has signaled an error. + * We need to clean up the JPEG object, close the input file, and return. + */ + jpeg_destroy_decompress(cinfo); + fclose(infile); + return NULL; + } jpeg_create_decompress(cinfo); jpeg_stdio_src(cinfo, infile); @@ -428,11 +455,20 @@ ImBuf * imb_ibJpegImageFromFilename (const char * filename, int flags) ImBuf * imb_ibJpegImageFromMemory (unsigned char * buffer, int size, int flags) { struct jpeg_decompress_struct _cinfo, *cinfo = &_cinfo; - struct jpeg_error_mgr jerr; + struct my_error_mgr jerr; ImBuf * ibuf; - cinfo->err = jpeg_std_error(&jerr); - jerr.error_exit = jpeg_error; + cinfo->err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = jpeg_error; + + /* Establish the setjmp return context for my_error_exit to use. */ + if (setjmp(jerr.setjmp_buffer)) { + /* If we get here, the JPEG code has signaled an error. + * We need to clean up the JPEG object, close the input file, and return. + */ + jpeg_destroy_decompress(cinfo); + return NULL; + } jpeg_create_decompress(cinfo); memory_source(cinfo, buffer, size); @@ -521,11 +557,9 @@ next_stamp_info: } jpeg_write_scanlines(cinfo, row_pointer, 1); - - if (jpeg_failed) break; } - if (jpeg_failed == FALSE) jpeg_finish_compress(cinfo); + jpeg_finish_compress(cinfo); free(row_pointer[0]); } @@ -577,13 +611,24 @@ static int save_stdjpeg(char * name, struct ImBuf * ibuf) { FILE * outfile; struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo; - struct jpeg_error_mgr jerr; + struct my_error_mgr jerr; if ((outfile = fopen(name, "wb")) == NULL) return 0; jpeg_default_quality = 75; - cinfo->err = jpeg_std_error(&jerr); - jerr.error_exit = jpeg_error; + cinfo->err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = jpeg_error; + + /* Establish the setjmp return context for jpeg_error to use. */ + if (setjmp(jerr.setjmp_buffer)) { + /* If we get here, the JPEG code has signaled an error. + * We need to clean up the JPEG object, close the input file, and return. + */ + jpeg_destroy_compress(cinfo); + fclose(outfile); + remove(name); + return 0; + } init_jpeg(outfile, cinfo, ibuf); @@ -592,10 +637,6 @@ static int save_stdjpeg(char * name, struct ImBuf * ibuf) fclose(outfile); jpeg_destroy_compress(cinfo); - if (jpeg_failed) { - remove(name); - return 0; - } return 1; } @@ -604,13 +645,24 @@ static int save_vidjpeg(char * name, struct ImBuf * ibuf) { FILE * outfile; struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo; - struct jpeg_error_mgr jerr; + struct my_error_mgr jerr; if ((outfile = fopen(name, "wb")) == NULL) return 0; jpeg_default_quality = 90; - cinfo->err = jpeg_std_error(&jerr); - jerr.error_exit = jpeg_error; + cinfo->err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = jpeg_error; + + /* Establish the setjmp return context for jpeg_error to use. */ + if (setjmp(jerr.setjmp_buffer)) { + /* If we get here, the JPEG code has signaled an error. + * We need to clean up the JPEG object, close the input file, and return. + */ + jpeg_destroy_compress(cinfo); + fclose(outfile); + remove(name); + return 0; + } init_jpeg(outfile, cinfo, ibuf); @@ -625,10 +677,6 @@ static int save_vidjpeg(char * name, struct ImBuf * ibuf) fclose(outfile); jpeg_destroy_compress(cinfo); - if (jpeg_failed) { - remove(name); - return 0; - } return 1; } @@ -667,13 +715,24 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf) { FILE * outfile; struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo; - struct jpeg_error_mgr jerr; + struct my_error_mgr jerr; if ((outfile = fopen(name, "wb")) == NULL) return 0; jpeg_default_quality = 100; - cinfo->err = jpeg_std_error(&jerr); - jerr.error_exit = jpeg_error; + cinfo->err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = jpeg_error; + + /* Establish the setjmp return context for jpeg_error to use. */ + if (setjmp(jerr.setjmp_buffer)) { + /* If we get here, the JPEG code has signaled an error. + * We need to clean up the JPEG object, close the input file, and return. + */ + jpeg_destroy_compress(cinfo); + fclose(outfile); + remove(name); + return 0; + } init_jpeg(outfile, cinfo, ibuf); @@ -688,10 +747,6 @@ static int save_maxjpeg(char * name, struct ImBuf * ibuf) fclose(outfile); jpeg_destroy_compress(cinfo); - if (jpeg_failed) { - remove(name); - return 0; - } return 1; } -- cgit v1.2.3 From c27f3adadcec0855fe15a059851551e0500d588a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 1 Dec 2009 22:45:56 +0000 Subject: - rig spine type WIP, editmode done, still needs pose constraints and drivers. - bone.translate(vec) utility function --- release/scripts/modules/bpy_types.py | 6 +- release/scripts/modules/graphviz_export.py | 111 ++++++++++------- release/scripts/modules/rigify/spine.py | 187 +++++++++++++++++++++++++++++ 3 files changed, 262 insertions(+), 42 deletions(-) create mode 100644 release/scripts/modules/rigify/spine.py diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 7727d30328f..4351ee7579b 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -46,7 +46,11 @@ class _GenericBone: functions for bones, common between Armature/Pose/Edit bones. internal subclassing use only. ''' - + + def translate(self, vec): + self.head += vec + self.tail += vec + def parent_index(self, parent_test): ''' The same as 'bone in other_bone.parent_recursive' but saved generating a list. diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index c69a74f3d11..1e6d9ffe95b 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -26,12 +26,26 @@ footer = ''' } ''' -def compat_str(text): +def compat_str(text, line_length=22): + + if line_length: + text_ls = [] + while len(text) > line_length: + text_ls.append(text[:line_length]) + text = text[line_length:] + + if text: + text_ls.append(text) + text = '\n '.join(text_ls) + + + #text = text.replace('.', '.\n') + #text = text.replace(']', ']\n') text = text.replace("\n", "\\n") text = text.replace('"', '\\"') - return text + return "* " + text -def graph_armature(obj, path, FAKE_PARENT=True): +def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): file = open(path, "w") fw = file.write @@ -40,8 +54,15 @@ def graph_armature(obj, path, FAKE_PARENT=True): arm = obj.data - for bone in arm.bones: - label = [bone.name] + bones = [bone.name for bone in arm.bones] + bones.sort() + print("") + for bone in bones: + b = arm.bones[bone] + print(">>", bone, ["*>", "->"][b.connected], getattr(getattr(b, "parent", ""), "name", "")) + label = [bone] + bone = arm.bones[bone] + for key, value in obj.pose.bones[bone.name].items(): if key.startswith("_"): continue @@ -53,7 +74,13 @@ def graph_armature(obj, path, FAKE_PARENT=True): label.append("%s = %s" % (key, value)) - opts = ["shape=box", "regular=1", "style=filled", "fillcolor=white", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] + opts = ["shape=box", "regular=1", "style=filled", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] + + if bone.name.startswith('ORG'): + opts.append("fillcolor=yellow") + else: + opts.append("fillcolor=white") + fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) @@ -80,43 +107,45 @@ def graph_armature(obj, path, FAKE_PARENT=True): del bone # constraints - for pbone in obj.pose.bones: - for constraint in pbone.constraints: - subtarget = constraint.subtarget - if subtarget: - # TODO, not internal links - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=8'] - label = "%s\n%s" % (constraint.type, constraint.name) - opts.append('label="%s"' % compat_str(label)) - fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) + if CONSTRAINTS: + for pbone in obj.pose.bones: + for constraint in pbone.constraints: + subtarget = constraint.subtarget + if subtarget: + # TODO, not internal links + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=4'] + label = "%s\n%s" % (constraint.type, constraint.name) + opts.append('label="%s"' % compat_str(label)) + fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) # Drivers - def rna_path_as_pbone(rna_path): - if not rna_path.startswith("pose.bones["): - return None + if DRIVERS: + def rna_path_as_pbone(rna_path): + if not rna_path.startswith("pose.bones["): + return None - #rna_path_bone = rna_path[:rna_path.index("]") + 1] - #return obj.path_resolve(rna_path_bone) - bone_name = rna_path.split("[")[1].split("]")[0] - return obj.pose.bones[bone_name[1:-1]] - - animation_data = obj.animation_data - if animation_data: - for fcurve_driver in animation_data.drivers: - rna_path = fcurve_driver.rna_path - pbone = rna_path_as_pbone(rna_path) - - if pbone: - for target in fcurve_driver.driver.targets: - pbone_target = rna_path_as_pbone(target.rna_path) - rna_path_target = target.rna_path - if pbone_target: - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=8"] # , - display_source = rna_path.replace("pose.bones", "") - display_target = rna_path_target.replace("pose.bones", "") - label = "%s\\n%s" % (display_source, display_target) - opts.append('label="%s"' % compat_str(label)) - fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) + #rna_path_bone = rna_path[:rna_path.index("]") + 1] + #return obj.path_resolve(rna_path_bone) + bone_name = rna_path.split("[")[1].split("]")[0] + return obj.pose.bones[bone_name[1:-1]] + + animation_data = obj.animation_data + if animation_data: + for fcurve_driver in animation_data.drivers: + rna_path = fcurve_driver.rna_path + pbone = rna_path_as_pbone(rna_path) + + if pbone: + for target in fcurve_driver.driver.targets: + pbone_target = rna_path_as_pbone(target.rna_path) + rna_path_target = target.rna_path + if pbone_target: + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # , + display_source = rna_path.replace("pose.bones", "") + display_target = rna_path_target.replace("pose.bones", "") + label = "%s\\n%s" % (display_source, display_target) + opts.append('label="%s"' % compat_str(label)) + fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) fw(footer) file.close() @@ -129,5 +158,5 @@ if __name__ == "__main__": import bpy import os path ="/tmp/test.dot" - graph_armature(bpy.context.object, path) + graph_armature(bpy.context.object, path, CONSTRAINTS=False, DRIVERS=False) os.system("dot -Tpng %s > %s; eog %s &" % (path, path + '.png', path + '.png')) diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py new file mode 100644 index 00000000000..ebc8b6ccdc0 --- /dev/null +++ b/release/scripts/modules/rigify/spine.py @@ -0,0 +1,187 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import bone_class_instance, copy_bone_simple +from rna_prop_ui import rna_idprop_ui_prop_get + +def validate(obj, orig_bone_name): + ''' + The bone given is the second in a chain. + Expects at least 1 parent and a chain of children withe the same basename + eg. + pelvis -> rib_cage -> spine.01 -> spine.02 -> spine.03 + ''' + orig_bone = obj.data.bones[orig_bone_name] + if not orig_bone.parent: + return "expected spine bone '%s' to have a parent" % orig_bone_name + + children = orig_bone.children + + if len(children) != 1: + return "expected spine bone '%s' to have only 1 child for the sine chain" % orig_bone_name + + children_spine = children[0].children_recursive_basename + + if len(children_spine) == 0: + return "expected '%s' to define a chain of children with its basename (2 or more)" % children[0] + + return '' + +def main(obj, orig_bone_name): + from Mathutils import Vector, Matrix, RotationMatrix + from math import radians, pi + + arm = obj.data + + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["pelvis", "ribcage"]) # meta + mt.ribcage = orig_bone_name + mt.update() + mt.pelvis = mt.ribcage_e.parent.name + mt.update() + + children = mt.ribcage_e.children + child = children[0] # validate checks for 1 only. + spine_chain_basename = child.basename # probably 'spine' + spine_chain_segment_length = child.length + spine_chain = [child] + child.children_recursive_basename + spine_chain_orig = [child.name for child in spine_chain] + child.parent = mt.pelvis_e # was mt.ribcage + + # The first bone in the chain happens to be the basis of others, create them now + ex = bone_class_instance(obj, ["pelvis", "ribcage", "ribcage_hinge", "spine_rotate"]) + df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage + + + # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge + ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % mt.ribcage) + ex.ribcage_hinge = ex.ribcage_hinge_e.name + ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) + mt.ribcage_e.parent = ex.ribcage_hinge_e + + ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) + ex.spine_rotate = ex.spine_rotate_e.name + ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) + # swap head/tail + ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() + ex.spine_rotate_e.parent = mt.pelvis_e + + df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.pelvis) + df.pelvis = df.pelvis_e.name + df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, -spine_chain_segment_length, 0.0)) + + ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.pelvis) + ex.pelvis = ex.pelvis_e.name + ex.pelvis_e.translate(Vector(0.0, -spine_chain_segment_length, 0.0)) + ex.pelvis_e.parent = mt.pelvis_e + + # Copy the last bone now + child = spine_chain[-1] + + df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.ribcage) + df.ribcage = df.ribcage_e.name + df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, -df.ribcage_e.length / 2.0, 0.0)) + + ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.ribcage) + ex.ribcage = ex.ribcage_e.name + ex.ribcage_e.translate(Vector(0.0, -ex.ribcage_e.length / 2.0, 0.0)) + ex.ribcage_e.parent = mt.ribcage_e + + # rename! + for child in spine_chain: + child.name = "ORG-" + child.name + + spine_chain = [child.name for child in spine_chain] + + # We have 3 spine chains + # - original (ORG_*) + # - copy (*use original name*) + # - reverse (MCH-rev_*) + spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(len(spine_chain_orig))] + mt_chain = bone_class_instance(obj, spine_chain_attrs) # ORG_* + rv_chain = bone_class_instance(obj, spine_chain_attrs) # * + ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* + + for i, child_name in enumerate(spine_chain): + child_name_orig = spine_chain_orig[i] + + attr = spine_chain_attrs[i] # eg. spine_04 + + setattr(mt_chain, attr, spine_chain[i]) # use the new name + + ebone = copy_bone_simple(arm, child_name, child_name_orig) # use the original name + setattr(ex_chain, attr, ebone.name) + + ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig) + setattr(rv_chain, attr, ebone.name) + ebone.connected = False + + mt_chain.update() + ex_chain.update() + rv_chain.update() + + # Now we need to re-parent these chains + for i, child_name in enumerate(spine_chain_orig): + attr = spine_chain_attrs[i] + "_e" + + if i == 0: + getattr(ex_chain, attr).parent = mt.pelvis_e + else: + attr_parent = spine_chain_attrs[i-1] + "_e" + getattr(ex_chain, attr).parent = getattr(ex_chain, attr_parent) + + # intentional! get the parent from the other paralelle chain member + getattr(rv_chain, attr).parent = getattr(ex_chain, attr) + + + # ex_chain needs to interlace bones! + # Note, skip the first bone + for i in range(1, len(spine_chain_orig)): # similar to neck + child_name_orig = spine_chain_orig[i] + spine_e = getattr(mt_chain, spine_chain_attrs[i] + "_e") + + # dont store parent names, re-reference as each chain bones parent. + spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) + spine_e_parent.head = spine_e.head + spine_e_parent.tail = spine_e.head + Vector(0.0, 0.0, spine_chain_segment_length / 2.0) + spine_e_parent.roll = 0.0 + + spine_e = getattr(ex_chain, spine_chain_attrs[i] + "_e") + orig_parent = spine_e.parent + spine_e.connected = False + spine_e.parent = spine_e_parent + spine_e_parent.connected = False + + spine_e_parent.parent = orig_parent + + + # Rotate the rev chain 180 about the by the first bones center point + pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 + matrix = RotationMatrix(radians(180), 3, 'X') + for i in range(len(spine_chain_orig)): # similar to neck + spine_e = getattr(rv_chain, spine_chain_attrs[i] + "_e") + # use the first bone as the pivot + + spine_e.head = ((spine_e.head - pivot) * matrix) + pivot + spine_e.tail = ((spine_e.tail - pivot) * matrix) + pivot + spine_e.roll += pi # 180d roll + + # done with editmode + # TODO, posemode + \ No newline at end of file -- cgit v1.2.3 From 5d4b45e2d9513251989fde089f9495e1af900ab2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 1 Dec 2009 23:55:33 +0000 Subject: * Fix for earlier fix, only check for basis metaball if the object's actually a metaball --- source/blender/render/intern/source/convertblender.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index f9d32f9c541..32c2e18197f 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4501,7 +4501,7 @@ static int allow_render_object(Render *re, Object *ob, int nolamps, int onlysele return 0; /* don't add non-basic meta objects, ends up having renderobjects with no geometry */ - if (ob!=find_basis_mball(re->scene, ob)) + if (ob->type == OB_MBALL && ob!=find_basis_mball(re->scene, ob)) return 0; if(nolamps && (ob->type==OB_LAMP)) -- cgit v1.2.3 From d86a27f7b6d7b226d7369f17df6bcc3f24325e73 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 00:53:33 +0000 Subject: Bugfix: crash when no active object Misc fixes. --- source/blender/editors/transform/transform_conversions.c | 3 --- source/blender/editors/transform/transform_ops.c | 1 + source/blender/editors/transform/transform_snap.c | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 403d8449a67..33e37ec8536 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5316,9 +5316,6 @@ void createTransData(bContext *C, TransInfo *t) } } else { - // t->flag &= ~T_PROP_EDIT; /* no proportional edit in object mode */ - t->options |= CTX_NO_PET; - createTransObject(C, t); t->flag |= T_OBJECT; diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 1b8b331af62..6ab2982b51e 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -269,6 +269,7 @@ static int transformops_data(bContext *C, wmOperator *op, wmEvent *event) if (op->type->idname == tmode->idname) { mode = tmode->mode; + break; } } diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 7f1e67b62ac..ae28986017f 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -432,7 +432,7 @@ void initSnapping(TransInfo *t, wmOperator *op) } /* Particles edit mode*/ else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (obedit == NULL && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) + (obedit == NULL && BASACT && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) { t->tsnap.modeSelect = SNAP_ALL; } -- cgit v1.2.3 From 5a3791ab5b2274fffde961bd01c75bacee74f634 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 2 Dec 2009 00:57:12 +0000 Subject: Apply patch [#20145] Ghost Win32 roundup patch: Minimum Window Size, Continuous Grab and Drag And Drop This nice patch by Matt D. (matd in #blendercoders) adds three nice features that can be seen already in the other supported OSes: * minimum window size: to prevent some bugs with the window manager of Blender, system windows cannot be resized smaller than the minimum size. * Continuous Grab is finally in Windows! Default settings since alpha 0 already have the feature enabled by default, so grab a new build and enjoy :) * GHOST support for drag and drop added. This prepares Blender for drag and drop from OS -> Blender. Currently not very useful, since wm needs to be readied for that. But it does work (do BF_GHOST_DEBUG=1 build and drag a file onto a Blender window). Thanks Matt D.! --- config/win32-mingw-config.py | 2 +- intern/ghost/SConscript | 6 +- intern/ghost/intern/GHOST_Debug.h | 7 +- intern/ghost/intern/GHOST_DropTargetWin32.cpp | 426 +++++++++++++++++++++++ intern/ghost/intern/GHOST_DropTargetWin32.h | 155 +++++++++ intern/ghost/intern/GHOST_EventPrinter.cpp | 13 +- intern/ghost/intern/GHOST_SystemWin32.cpp | 100 +++++- intern/ghost/intern/GHOST_SystemWin32.h | 22 +- intern/ghost/intern/GHOST_WindowWin32.cpp | 48 +++ intern/ghost/intern/GHOST_WindowWin32.h | 21 ++ source/blender/windowmanager/intern/wm_cursors.c | 7 +- tools/btools.py | 6 +- 12 files changed, 788 insertions(+), 25 deletions(-) create mode 100644 intern/ghost/intern/GHOST_DropTargetWin32.cpp create mode 100644 intern/ghost/intern/GHOST_DropTargetWin32.h diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 709261ec1ca..0f07ca4c2ee 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -145,7 +145,7 @@ C_WARN = [ '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] CC_WARN = [ '-Wall' ] -LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++'] +LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid'] BF_DEBUG = False BF_DEBUG_CCFLAGS= ['-g'] diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 09da6f94ddc..84ca97fdb93 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -37,8 +37,12 @@ else: print "Unknown window system specified." Exit() +defs=['_USE_MATH_DEFINES'] +if env['BF_GHOST_DEBUG']: + defs.append('BF_GHOST_DEBUG') + incs = '. ../string ' + env['BF_OPENGL_INC'] if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): incs = env['BF_WINTAB_INC'] + ' ' + incs -env.BlenderLib ('bf_ghost', sources, Split(incs), defines=['_USE_MATH_DEFINES'], libtype=['intern','player'], priority = [40,15] ) +env.BlenderLib ('bf_ghost', sources, Split(incs), defines=defs, libtype=['intern','player'], priority = [40,15] ) diff --git a/intern/ghost/intern/GHOST_Debug.h b/intern/ghost/intern/GHOST_Debug.h index 7f836202720..1ca4ce2b6de 100644 --- a/intern/ghost/intern/GHOST_Debug.h +++ b/intern/ghost/intern/GHOST_Debug.h @@ -37,12 +37,17 @@ #ifdef WIN32 #ifdef _DEBUG #pragma warning (disable:4786) // suppress stl-MSVC debug info warning - #define GHOST_DEBUG + // #define GHOST_DEBUG #endif // _DEBUG #endif // WIN32 +#ifdef BF_GHOST_DEBUG + #define GHOST_DEBUG // spit ghost events to stdout +#endif // BF_GHOST_DEBUG + #ifdef GHOST_DEBUG #include + #include //for printf() #endif // GHOST_DEBUG diff --git a/intern/ghost/intern/GHOST_DropTargetWin32.cpp b/intern/ghost/intern/GHOST_DropTargetWin32.cpp new file mode 100644 index 00000000000..d75770383fb --- /dev/null +++ b/intern/ghost/intern/GHOST_DropTargetWin32.cpp @@ -0,0 +1,426 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "GHOST_Debug.h" +#include "GHOST_DropTargetWin32.h" + +#ifdef GHOST_DEBUG +// utility +void printLastError(void); +#endif // GHOST_DEBUG + + +GHOST_DropTargetWin32::GHOST_DropTargetWin32(GHOST_WindowWin32 * window, GHOST_SystemWin32 * system) +: +m_window(window), +m_system(system) +{ + m_cRef = 1; + m_hWnd = window->getHWND(); + m_draggedObjectType = GHOST_kDragnDropTypeUnknown; + + // register our window as drop target + ::RegisterDragDrop(m_hWnd, this); +} + +GHOST_DropTargetWin32::~GHOST_DropTargetWin32() +{ + ::RevokeDragDrop(m_hWnd); +} + + +/* + * IUnknown::QueryInterface + */ +HRESULT __stdcall GHOST_DropTargetWin32::QueryInterface (REFIID riid, void ** ppvObj) +{ + + if (!ppvObj) + return E_INVALIDARG; + *ppvObj = NULL; + + if(riid == IID_IUnknown || riid == IID_IDropTarget) + { + AddRef(); + *ppvObj = (void*)this; + return S_OK; + } + else + { + *ppvObj = 0; + return E_NOINTERFACE; + } +} + + +/* + * IUnknown::AddRef + */ + +ULONG __stdcall GHOST_DropTargetWin32::AddRef(void) +{ + return ::InterlockedIncrement(&m_cRef); +} + +/* + * IUnknown::Release + */ +ULONG __stdcall GHOST_DropTargetWin32::Release(void) +{ + ULONG refs = ::InterlockedDecrement(&m_cRef); + + if(refs == 0) + { + delete this; + return 0; + } + else + { + return refs; + } +} + +/* + * Implementation of IDropTarget::DragEnter + */ +HRESULT __stdcall GHOST_DropTargetWin32::DragEnter(IDataObject * pDataObject, DWORD grfKeyState, POINTL pt, DWORD * pdwEffect) +{ + // we don't know yet if we accept the drop. + m_window->setAcceptDragOperation(false); + *pdwEffect = DROPEFFECT_NONE; + + m_draggedObjectType = getGhostType(pDataObject); + m_system->pushDragDropEvent(GHOST_kEventDraggingEntered, m_draggedObjectType, m_window, pt.x, pt.y, NULL); + return S_OK; +} + +/* + * Implementation of IDropTarget::DragOver + */ +HRESULT __stdcall GHOST_DropTargetWin32::DragOver(DWORD grfKeyState, POINTL pt, DWORD * pdwEffect) +{ + if(m_window->canAcceptDragOperation()) + { + *pdwEffect = allowedDropEffect(*pdwEffect); + } + else + { + *pdwEffect = DROPEFFECT_NONE; + //*pdwEffect = DROPEFFECT_COPY; // XXX Uncomment to test drop. Drop will not be called if pdwEffect == DROPEFFECT_NONE. + } + m_system->pushDragDropEvent(GHOST_kEventDraggingUpdated, m_draggedObjectType, m_window, pt.x, pt.y, NULL); + return S_OK; +} + +/* + * Implementation of IDropTarget::DragLeave + */ +HRESULT __stdcall GHOST_DropTargetWin32::DragLeave(void) +{ + m_system->pushDragDropEvent(GHOST_kEventDraggingExited, m_draggedObjectType, m_window, 0, 0, NULL); + m_draggedObjectType = GHOST_kDragnDropTypeUnknown; + return S_OK; +} + +/* Implementation of IDropTarget::Drop + * This function will not be called if pdwEffect is set to DROPEFFECT_NONE in + * the implementation of IDropTarget::DragOver + */ +HRESULT __stdcall GHOST_DropTargetWin32::Drop(IDataObject * pDataObject, DWORD grfKeyState, POINTL pt, DWORD * pdwEffect) +{ + void * data = getGhostData(pDataObject); + if(m_window->canAcceptDragOperation()) + { + *pdwEffect = allowedDropEffect(*pdwEffect); + + } + else + { + *pdwEffect = DROPEFFECT_NONE; + } + if (data) + m_system->pushDragDropEvent(GHOST_kEventDraggingDropDone, m_draggedObjectType, m_window, pt.x, pt.y, data ); + + m_draggedObjectType = GHOST_kDragnDropTypeUnknown; + return S_OK; +} + +/* + * Helpers + */ + +DWORD GHOST_DropTargetWin32::allowedDropEffect(DWORD dwAllowed) +{ + DWORD dwEffect = DROPEFFECT_NONE; + if(dwAllowed & DROPEFFECT_COPY) + dwEffect = DROPEFFECT_COPY; + + return dwEffect; +} + +GHOST_TDragnDropTypes GHOST_DropTargetWin32::getGhostType(IDataObject * pDataObject) +{ + /* Text + * Note: Unicode text is aviable as CF_TEXT too, the system can do the + * conversion, but we do the conversion ourself with WC_NO_BEST_FIT_CHARS. + */ + FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + if(pDataObject->QueryGetData(&fmtetc) == S_OK) + { + return GHOST_kDragnDropTypeString; + } + + // Filesnames + fmtetc.cfFormat = CF_HDROP; + if(pDataObject->QueryGetData(&fmtetc) == S_OK) + { + return GHOST_kDragnDropTypeFilenames; + } + + return GHOST_kDragnDropTypeUnknown; +} + +void * GHOST_DropTargetWin32::getGhostData(IDataObject * pDataObject) +{ + GHOST_TDragnDropTypes type = getGhostType(pDataObject); + switch(type) + { + case GHOST_kDragnDropTypeFilenames: + return getDropDataAsFilenames(pDataObject); + break; + case GHOST_kDragnDropTypeString: + return getDropDataAsString(pDataObject); + break; + case GHOST_kDragnDropTypeBitmap: + //return getDropDataAsBitmap(pDataObject); + break; + default: +#ifdef GHOST_DEBUG + ::printf("\nGHOST_kDragnDropTypeUnknown"); +#endif // GHOST_DEBUG + return NULL; + break; + } + return NULL; +} + +void * GHOST_DropTargetWin32::getDropDataAsFilenames(IDataObject * pDataObject) +{ + UINT totfiles, nvalid=0; + WCHAR fpath [MAX_PATH]; + char * temp_path; + GHOST_TStringArray *strArray = NULL; + FORMATETC fmtetc = { CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + STGMEDIUM stgmed; + HDROP hdrop; + + // Check if dataobject supplies the format we want. + // Double checking here, first in getGhostType. + if(pDataObject->QueryGetData(&fmtetc) == S_OK) + { + if(pDataObject->GetData(&fmtetc, &stgmed) == S_OK) + { + hdrop = (HDROP)::GlobalLock(stgmed.hGlobal); + + totfiles = ::DragQueryFileW ( hdrop, -1, NULL, 0 ); + if (!totfiles) + { + ::GlobalUnlock(stgmed.hGlobal); + return NULL; + } + + strArray = (GHOST_TStringArray*) ::malloc(sizeof(GHOST_TStringArray)); + strArray->count = 0; + strArray->strings = (GHOST_TUns8**) ::malloc(totfiles*sizeof(GHOST_TUns8*)); + + for ( UINT nfile = 0; nfile < totfiles; nfile++ ) + { + if ( ::DragQueryFileW ( hdrop, nfile, fpath, MAX_PATH ) > 0 ) + { + if ( !WideCharToANSI(fpath, temp_path) ) + { + continue; + } + // Just ignore paths that could not be converted verbatim. + if (strpbrk(temp_path, "?")) + { +#ifdef GHOST_DEBUG + ::printf("\ndiscarding path that contains illegal characters: %s", temp_path); +#endif // GHOST_DEBUG + ::free(temp_path); + temp_path = NULL; + continue; + } + strArray->strings[nvalid] = (GHOST_TUns8*) temp_path; + strArray->count = nvalid+1; + nvalid++; + } + } + // Free up memory. + ::GlobalUnlock(stgmed.hGlobal); + ::ReleaseStgMedium(&stgmed); + + return strArray; + } + } + return NULL; +} + +void * GHOST_DropTargetWin32::getDropDataAsString(IDataObject * pDataObject) +{ + char* tmp_string; + FORMATETC fmtetc = { CF_UNICODETEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + STGMEDIUM stgmed; + + // Try unicode first. + // Check if dataobject supplies the format we want. + if(pDataObject->QueryGetData(&fmtetc) == S_OK) + { + if(pDataObject->GetData(&fmtetc, &stgmed) == S_OK) + { + LPCWSTR wstr = (LPCWSTR)::GlobalLock(stgmed.hGlobal); + if ( !WideCharToANSI(wstr, tmp_string) ) + { + ::GlobalUnlock(stgmed.hGlobal); + return NULL; + } + // Free memory + ::GlobalUnlock(stgmed.hGlobal); + ::ReleaseStgMedium(&stgmed); +#ifdef GHOST_DEBUG + ::printf("\n\n%s\n\n",tmp_string); +#endif // GHOST_DEBUG + return tmp_string; + } + } + + fmtetc.cfFormat = CF_TEXT; + + if(pDataObject->QueryGetData(&fmtetc) == S_OK) + { + if(pDataObject->GetData(&fmtetc, &stgmed) == S_OK) + { + char * str = (char*)::GlobalLock(stgmed.hGlobal); + + tmp_string = (char*)::malloc(::strlen(str)+1); + if ( !tmp_string ) + { + ::GlobalUnlock(stgmed.hGlobal); + return NULL; + } + + if ( !::strcpy(tmp_string, str) ) + { + ::free(tmp_string); + ::GlobalUnlock(stgmed.hGlobal); + return NULL; + } + // Free memory + ::GlobalUnlock(stgmed.hGlobal); + ::ReleaseStgMedium(&stgmed); + + return tmp_string; + } + } + + return NULL; +} + +int GHOST_DropTargetWin32::WideCharToANSI(LPCWSTR in, char * &out) +{ + int size; + out = NULL; //caller should free if != NULL + + // Get the required size. + size = ::WideCharToMultiByte(CP_ACP, //System Default Codepage + 0x00000400, // WC_NO_BEST_FIT_CHARS + in, + -1, //-1 null terminated, makes output null terminated too. + NULL, + 0, + NULL,NULL + ); + + if(!size) + { +#ifdef GHOST_DEBUG + ::printLastError(); +#endif // GHOST_DEBUG + return 0; + } + + out = (char*)::malloc(size); + if (!out) + { + ::printf("\nmalloc failed!!!"); + return 0; + } + + size = ::WideCharToMultiByte(CP_ACP, + 0x00000400, + in, + -1, + (LPSTR) out, + size, + NULL,NULL + ); + + if(!size) + { +#ifdef GHOST_DEBUG + ::printLastError(); +#endif //GHOST_DEBUG + ::free(out); + out = NULL; + } + return size; +} + +#ifdef GHOST_DEBUG +void printLastError(void) +{ + LPTSTR s; + DWORD err; + + err = GetLastError(); + if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + err, + 0, + (LPTSTR)&s, + 0, + NULL) + ) + { + printf("\nLastError: (%d) %s\n", (int)err, s); + LocalFree(s); + } +} +#endif // GHOST_DEBUG + diff --git a/intern/ghost/intern/GHOST_DropTargetWin32.h b/intern/ghost/intern/GHOST_DropTargetWin32.h new file mode 100644 index 00000000000..6ea6ed85a93 --- /dev/null +++ b/intern/ghost/intern/GHOST_DropTargetWin32.h @@ -0,0 +1,155 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ +#ifndef _GHOST_DROP_TARGET_WIN32_H_ +#define _GHOST_DROP_TARGET_WIN32_H_ + +#include +#include +#include +#include "GHOST_WindowWin32.h" +#include "GHOST_SystemWin32.h" + +class GHOST_DropTargetWin32 : public IDropTarget +{ +public: + /* IUnknownd implementation. + * Enables clients to get pointers to other interfaces on a given object + * through the QueryInterface method, and manage the existence of the object + * through the AddRef and Release methods. All other COM interfaces are + * inherited, directly or indirectly, from IUnknown. Therefore, the three + * methods in IUnknown are the first entries in the VTable for every interface. + */ + HRESULT __stdcall QueryInterface (REFIID riid, void ** ppvObj); + ULONG __stdcall AddRef (void); + ULONG __stdcall Release (void); + + /* IDropTarget implementation + + The IDropTarget interface is one of the interfaces you implement to + provide drag-and-drop operations in your application. It contains methods + used in any application that can be a target for data during a + drag-and-drop operation. A drop-target application is responsible for: + * + * - Determining the effect of the drop on the target application. + * - Incorporating any valid dropped data when the drop occurs. + * - Communicating target feedback to the source so the source application + * can provide appropriate visual feedback such as setting the cursor. + * - Implementing drag scrolling. + * - Registering and revoking its application windows as drop targets. + * + * The IDropTarget interface contains methods that handle all these + * responsibilities except registering and revoking the application window + * as a drop target, for which you must call the RegisterDragDrop and the + * RevokeDragDrop functions. + */ + + HRESULT __stdcall DragEnter (IDataObject * pDataObject, DWORD grfKeyState, POINTL pt, DWORD * pdwEffect); + HRESULT __stdcall DragOver (DWORD grfKeyState, POINTL pt, DWORD * pdwEffect); + HRESULT __stdcall DragLeave (void); + HRESULT __stdcall Drop (IDataObject * pDataObject, DWORD grfKeyState, POINTL pt, DWORD * pdwEffect); + + /** + * Constructor + * With the modifier keys, we want to distinguish left and right keys. + * Sometimes this is not possible (Windows ME for instance). Then, we want + * events generated for both keys. + * @param window The window to register as drop target. + * @param system The associated system. + */ + GHOST_DropTargetWin32(GHOST_WindowWin32 * window, GHOST_SystemWin32 * system); + + /** + * Destructor + * Do NOT destroy directly. Use Release() instead to make COM happy. + */ + ~GHOST_DropTargetWin32(); + +private: + + /* Internal helper functions */ + + /** + * Base the effect on those allowed by the dropsource. + * @param dwAllowed Drop sources allowed drop effect. + * @return The allowed drop effect. + */ + DWORD allowedDropEffect(DWORD dwAllowed); + + /** + * Query DataObject for the data types it supports. + * @param pDataObject Pointer to the DataObject. + * @return GHOST data type. + */ + GHOST_TDragnDropTypes getGhostType(IDataObject * pDataObject); + + /** + * Get data to pass in event. + * It checks the type and calls specific functions for each type. + * @param pDataObject Pointer to the DataObject. + * @return Pointer to data. + */ + void * getGhostData(IDataObject * pDataObject); + + /** + * Allocate data as file array to pass in event. + * @param pDataObject Pointer to the DataObject. + * @return Pointer to data. + */ + void * getDropDataAsFilenames(IDataObject * pDataObject); + + /** + * Allocate data as string to pass in event. + * @param pDataObject Pointer to the DataObject. + * @return Pointer to data. + */ + void * getDropDataAsString(IDataObject * pDataObject); + + /** + * Convert Unicode to ANSI, replacing unconvertable chars with '?'. + * The ANSI codepage is the system default codepage, + * and can change from system to system. + * @param in LPCWSTR. + * @param out char *. Is set to NULL on failure. + * @return 0 on failure. Else the size of the string including '\0'. + */ + int WideCharToANSI(LPCWSTR in, char * &out); + + /* Private member variables */ + /* COM reference count. */ + LONG m_cRef; + /* Handle of the associated window. */ + HWND m_hWnd; + /* The associated GHOST_WindowWin32. */ + GHOST_WindowWin32 * m_window; + /* The System. */ + GHOST_SystemWin32 * m_system; + /* Data type of the dragged object */ + GHOST_TDragnDropTypes m_draggedObjectType; + +}; + +#endif // _GHOST_DROP_TARGET_WIN32_H_ diff --git a/intern/ghost/intern/GHOST_EventPrinter.cpp b/intern/ghost/intern/GHOST_EventPrinter.cpp index c6b3416669e..91b55474441 100644 --- a/intern/ghost/intern/GHOST_EventPrinter.cpp +++ b/intern/ghost/intern/GHOST_EventPrinter.cpp @@ -49,7 +49,7 @@ bool GHOST_EventPrinter::processEvent(GHOST_IEvent* event) if (event->getType() == GHOST_kEventWindowUpdate) return false; - std::cout << "GHOST_EventPrinter::processEvent, time: " << (GHOST_TInt32)event->getTime() << ", type: "; + std::cout << "\nGHOST_EventPrinter::processEvent, time: " << (GHOST_TInt32)event->getTime() << ", type: "; switch (event->getType()) { case GHOST_kEventUnknown: std::cout << "GHOST_kEventUnknown"; handled = false; @@ -125,19 +125,21 @@ bool GHOST_EventPrinter::processEvent(GHOST_IEvent* event) case GHOST_kEventDraggingDropDone: { GHOST_TEventDragnDropData* dragnDropData = (GHOST_TEventDragnDropData*)((GHOST_IEvent*)event)->getData(); - std::cout << "GHOST_kEventDraggingDropDone, dragged object type : " << dragnDropData->dataType; + std::cout << "GHOST_kEventDraggingDropDone,"; std::cout << " mouse at x=" << dragnDropData->x << " y=" << dragnDropData->y; switch (dragnDropData->dataType) { case GHOST_kDragnDropTypeString: - std::cout << " string received = " << (char*)dragnDropData->data; + std::cout << " type : GHOST_kDragnDropTypeString,"; + std::cout << "\n String received = " << (char*)dragnDropData->data; break; case GHOST_kDragnDropTypeFilenames: { GHOST_TStringArray *strArray = (GHOST_TStringArray*)dragnDropData->data; int i; - std::cout << "\nReceived " << strArray->count << " filenames"; + std::cout << " type : GHOST_kDragnDropTypeFilenames,"; + std::cout << "\n Received " << strArray->count << " filename" << (strArray->count > 1 ? "s:" : ":"); for (i=0;icount;i++) - std::cout << " Filename #" << i << ": " << strArray->strings[i]; + std::cout << "\n File[" << i << "] : " << strArray->strings[i]; } break; default: @@ -192,7 +194,6 @@ bool GHOST_EventPrinter::processEvent(GHOST_IEvent* event) std::cout << "not found"; handled = false; break; } - std::cout << "\n"; return handled; } diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 8a17d455695..15914a5bf43 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -39,6 +39,7 @@ #endif #include "GHOST_SystemWin32.h" +#include "GHOST_EventDragnDrop.h" // win64 doesn't define GWL_USERDATA #ifdef WIN32 @@ -138,10 +139,15 @@ GHOST_SystemWin32::GHOST_SystemWin32() m_displayManager = new GHOST_DisplayManagerWin32 (); GHOST_ASSERT(m_displayManager, "GHOST_SystemWin32::GHOST_SystemWin32(): m_displayManager==0\n"); m_displayManager->initialize(); + + // Require COM for GHOST_DropTargetWin32 created in GHOST_WindowWin32. + OleInitialize(0); } GHOST_SystemWin32::~GHOST_SystemWin32() { + // Shutdown COM + OleUninitialize(); } @@ -187,7 +193,7 @@ GHOST_IWindow* GHOST_SystemWin32::createWindow( bool stereoVisual, const GHOST_TEmbedderWindowID parentWindow ) { GHOST_Window* window = 0; - window = new GHOST_WindowWin32 (title, left, top, width, height, state, type, stereoVisual); + window = new GHOST_WindowWin32 (this, title, left, top, width, height, state, type, stereoVisual); if (window) { if (window->getValid()) { // Store the pointer to the window @@ -248,10 +254,12 @@ bool GHOST_SystemWin32::processEvents(bool waitForEvent) GHOST_TSuccess GHOST_SystemWin32::getCursorPosition(GHOST_TInt32& x, GHOST_TInt32& y) const { POINT point; - ::GetCursorPos(&point); - x = point.x; - y = point.y; - return GHOST_kSuccess; + if(::GetCursorPos(&point)){ + x = point.x; + y = point.y; + return GHOST_kSuccess; + } + return GHOST_kFailure; } @@ -499,11 +507,56 @@ GHOST_EventButton* GHOST_SystemWin32::processButtonEvent(GHOST_TEventType type, } -GHOST_EventCursor* GHOST_SystemWin32::processCursorEvent(GHOST_TEventType type, GHOST_IWindow *window) +GHOST_EventCursor* GHOST_SystemWin32::processCursorEvent(GHOST_TEventType type, GHOST_IWindow *Iwindow) { - GHOST_TInt32 x, y; - getSystem()->getCursorPosition(x, y); - return new GHOST_EventCursor (getSystem()->getMilliSeconds(), type, window, x, y); + GHOST_TInt32 x_screen, y_screen; + GHOST_SystemWin32 * system = ((GHOST_SystemWin32 * ) getSystem()); + GHOST_WindowWin32 * window = ( GHOST_WindowWin32 * ) Iwindow; + + system->getCursorPosition(x_screen, y_screen); + + if(window->getCursorGrabMode() != GHOST_kGrabDisable && window->getCursorGrabMode() != GHOST_kGrabNormal) + { + GHOST_TInt32 x_new= x_screen; + GHOST_TInt32 y_new= y_screen; + GHOST_TInt32 x_accum, y_accum; + GHOST_Rect bounds; + + /* fallback to window bounds */ + if(window->getCursorGrabBounds(bounds)==GHOST_kFailure){ + window->getClientBounds(bounds); + } + + /* could also clamp to screen bounds + * wrap with a window outside the view will fail atm */ + + bounds.wrapPoint(x_new, y_new, 2); /* offset of one incase blender is at screen bounds */ + + window->getCursorGrabAccum(x_accum, y_accum); + if(x_new != x_screen|| y_new != y_screen) { + /* when wrapping we don't need to add an event because the + * setCursorPosition call will cause a new event after */ + system->setCursorPosition(x_new, y_new); /* wrap */ + window->setCursorGrabAccum(x_accum + (x_screen - x_new), y_accum + (y_screen - y_new)); + }else{ + return new GHOST_EventCursor(system->getMilliSeconds(), + GHOST_kEventCursorMove, + window, + x_screen + x_accum, + y_screen + y_accum + ); + } + + } + else { + return new GHOST_EventCursor(system->getMilliSeconds(), + GHOST_kEventCursorMove, + window, + x_screen, + y_screen + ); + } + return NULL; } @@ -549,6 +602,26 @@ GHOST_Event* GHOST_SystemWin32::processWindowEvent(GHOST_TEventType type, GHOST_ return new GHOST_Event(getSystem()->getMilliSeconds(), type, window); } +GHOST_TSuccess GHOST_SystemWin32::pushDragDropEvent(GHOST_TEventType eventType, + GHOST_TDragnDropTypes draggedObjectType, + GHOST_IWindow* window, + int mouseX, int mouseY, + void* data) +{ + GHOST_SystemWin32* system = ((GHOST_SystemWin32*)getSystem()); + return system->pushEvent(new GHOST_EventDragnDrop(system->getMilliSeconds(), + eventType, + draggedObjectType, + window,mouseX,mouseY,data) + ); +} + +void GHOST_SystemWin32::processMinMaxInfo(MINMAXINFO * minmax) +{ + minmax->ptMinTrackSize.x=320; + minmax->ptMinTrackSize.y=240; +} + LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -793,6 +866,15 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, event = processWindowEvent(GHOST_kEventWindowUpdate, window); ::ValidateRect(hwnd, NULL); break; + case WM_GETMINMAXINFO: + /* The WM_GETMINMAXINFO message is sent to a window when the size or + * position of the window is about to change. An application can use + * this message to override the window's default maximized size and + * position, or its default minimum or maximum tracking size. + */ + processMinMaxInfo((MINMAXINFO *) lParam); + /* Let DefWindowProc handle it. */ + break; case WM_SIZE: /* The WM_SIZE message is sent to a window after its size has changed. * The WM_SIZE and WM_MOVE messages are not sent if an application handles the diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index 6a12975a3dd..517f7ddbeea 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -51,6 +51,7 @@ class GHOST_EventCursor; class GHOST_EventKey; class GHOST_EventWheel; class GHOST_EventWindow; +class GHOST_EventDragnDrop; /** * WIN32 Implementation of GHOST_System class. @@ -181,6 +182,18 @@ public: * @return No return */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; + + /** + * Creates a drag'n'drop event and pushes it immediately onto the event queue. + * Called by GHOST_DropTargetWin32 class. + * @param eventType The type of drag'n'drop event + * @param draggedObjectType The type object concerned (currently array of file names, string, ?bitmap) + * @param mouseX x mouse coordinate (in window coordinates) + * @param mouseY y mouse coordinate + * @param window The window on which the event occured + * @return Indication whether the event was handled. + */ + static GHOST_TSuccess pushDragDropEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType,GHOST_IWindow* window, int mouseX, int mouseY, void* data); protected: /** @@ -228,7 +241,7 @@ protected: * @param window The window receiving the event (the active window). * @return The event created. */ - static GHOST_EventCursor* processCursorEvent(GHOST_TEventType type, GHOST_IWindow *window); + static GHOST_EventCursor* processCursorEvent(GHOST_TEventType type, GHOST_IWindow *Iwindow); /** * Creates a mouse wheel event. @@ -255,7 +268,12 @@ protected: * @return The event created. */ static GHOST_Event* processWindowEvent(GHOST_TEventType type, GHOST_IWindow* window); - + /** + * Handles minimum window size. + * @param minmax The MINMAXINFO structure. + */ + static void processMinMaxInfo(MINMAXINFO * minmax); + /** * Returns the local state of the modifier keys (from the message queue). * @param keys The state of the keys. diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp index e2caf31edee..ea14f1dfc1b 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cpp +++ b/intern/ghost/intern/GHOST_WindowWin32.cpp @@ -40,6 +40,8 @@ #include #include "GHOST_WindowWin32.h" +#include "GHOST_SystemWin32.h" +#include "GHOST_DropTargetWin32.h" #include #include @@ -95,6 +97,7 @@ static PIXELFORMATDESCRIPTOR sPreferredFormat = { }; GHOST_WindowWin32::GHOST_WindowWin32( + GHOST_SystemWin32 * system, const STR_String& title, GHOST_TInt32 left, GHOST_TInt32 top, @@ -106,6 +109,7 @@ GHOST_WindowWin32::GHOST_WindowWin32( : GHOST_Window(title, left, top, width, height, state, GHOST_kDrawingContextTypeNone, stereoVisual), + m_system(system), m_hDC(0), m_hGlRc(0), m_hasMouseCaptured(false), @@ -167,6 +171,9 @@ GHOST_WindowWin32::GHOST_WindowWin32( 0); // pointer to window-creation data } if (m_hWnd) { + // Register this window as a droptarget. Requires m_hWnd to be valid. + // Note that OleInitialize(0) has to be called prior to this. Done in GHOST_SystemWin32. + m_dropTarget = new GHOST_DropTargetWin32(this, m_system); // Store a pointer to this class in the window structure ::SetWindowLongPtr(m_hWnd, GWL_USERDATA, (LONG_PTR)this); @@ -275,6 +282,7 @@ GHOST_WindowWin32::~GHOST_WindowWin32() m_hDC = 0; } if (m_hWnd) { + m_dropTarget->Release(); // frees itself. ::DestroyWindow(m_hWnd); m_hWnd = 0; } @@ -285,6 +293,10 @@ bool GHOST_WindowWin32::getValid() const return m_hWnd != 0; } +HWND GHOST_WindowWin32::getHWND() const +{ + return m_hWnd; +} void GHOST_WindowWin32::setTitle(const STR_String& title) { @@ -663,6 +675,41 @@ GHOST_TSuccess GHOST_WindowWin32::setWindowCursorVisibility(bool visible) return GHOST_kSuccess; } +GHOST_TSuccess GHOST_WindowWin32::setWindowCursorGrab(GHOST_TGrabCursorMode mode) +{ + if(mode != GHOST_kGrabDisable) { + if(mode != GHOST_kGrabNormal) { + m_system->getCursorPosition(m_cursorGrabInitPos[0], m_cursorGrabInitPos[1]); + setCursorGrabAccum(0, 0); + + if(mode == GHOST_kGrabHide) + setWindowCursorVisibility(false); + } + registerMouseClickEvent(true); + } + else { + if (m_cursorGrab==GHOST_kGrabHide) { + m_system->setCursorPosition(m_cursorGrabInitPos[0], m_cursorGrabInitPos[1]); + setWindowCursorVisibility(true); + } + if(m_cursorGrab != GHOST_kGrabNormal) { + /* use to generate a mouse move event, otherwise the last event + * blender gets can be outside the screen causing menus not to show + * properly unless the user moves the mouse */ + GHOST_TInt32 pos[2]; + m_system->getCursorPosition(pos[0], pos[1]); + m_system->setCursorPosition(pos[0], pos[1]); + } + + /* Almost works without but important otherwise the mouse GHOST location can be incorrect on exit */ + setCursorGrabAccum(0, 0); + m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1; /* disable */ + registerMouseClickEvent(false); + } + + return GHOST_kSuccess; +} + GHOST_TSuccess GHOST_WindowWin32::setWindowCursorShape(GHOST_TStandardCursor cursorShape) { if (m_customCursor) { @@ -676,6 +723,7 @@ GHOST_TSuccess GHOST_WindowWin32::setWindowCursorShape(GHOST_TStandardCursor cur return GHOST_kSuccess; } + void GHOST_WindowWin32::processWin32TabletInitEvent() { if (m_wintab) { diff --git a/intern/ghost/intern/GHOST_WindowWin32.h b/intern/ghost/intern/GHOST_WindowWin32.h index 8b461802fa4..07a31911a5e 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.h +++ b/intern/ghost/intern/GHOST_WindowWin32.h @@ -47,6 +47,9 @@ #define PACKETMODE PK_BUTTONS #include +class GHOST_SystemWin32; +class GHOST_DropTargetWin32; + // typedefs for WinTab functions to allow dynamic loading typedef UINT (API * GHOST_WIN32_WTInfo) ( UINT, UINT, LPVOID ); typedef HCTX (API * GHOST_WIN32_WTOpen) (HWND, LPLOGCONTEXTA, BOOL); @@ -74,6 +77,7 @@ public: * @param stereoVisual Stereo visual for quad buffered stereo. */ GHOST_WindowWin32( + GHOST_SystemWin32 * system, const STR_String& title, GHOST_TInt32 left, GHOST_TInt32 top, @@ -96,6 +100,12 @@ public: */ virtual bool getValid() const; + /** + * Access to the handle of the window. + * @return The handle of the window. + */ + virtual HWND getHWND() const; + /** * Sets the title displayed in the title bar. * @param title The title to display in the title bar. @@ -250,6 +260,13 @@ protected: */ virtual GHOST_TSuccess setWindowCursorVisibility(bool visible); + /** + * Sets the cursor grab on the window using native window system calls. + * Using registerMouseClickEvent. + * @param mode GHOST_TGrabCursorMode. + */ + virtual GHOST_TSuccess setWindowCursorGrab(GHOST_TGrabCursorMode mode); + /** * Sets the cursor shape on the window using * native window system calls. @@ -273,6 +290,10 @@ protected: int bg_color ); + /** Pointer to system */ + GHOST_SystemWin32 * m_system; + /** Pointer to COM IDropTarget implementor */ + GHOST_DropTargetWin32 * m_dropTarget; /** Window handle. */ HWND m_hWnd; /** Device context handle. */ diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index 6145871f9d4..7decf7b2ed2 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -172,12 +172,13 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) if(hide) mode = GHOST_kGrabHide; else if(wrap) mode = GHOST_kGrabWrap; - if ((G.f & G_DEBUG) == 0) { if (win && win->ghostwin) { const GHOST_TabletData *tabletdata= GHOST_GetTabletData(win->ghostwin); - - if ((tabletdata) && (tabletdata->Active == GHOST_kTabletModeNone)) + // Note: There is no tabletdata on Windows if no tablet device is connected. + if (!tabletdata) + GHOST_SetCursorGrab(win->ghostwin, mode, bounds); + else if (tabletdata->Active == GHOST_kTabletModeNone) GHOST_SetCursorGrab(win->ghostwin, mode, bounds); } } diff --git a/tools/btools.py b/tools/btools.py index e34ee05fbe7..f010a82fd6a 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -75,6 +75,7 @@ def validate_arguments(args, bc): 'BF_MSVS', 'WITH_BF_FHS', 'BF_VERSION', + 'BF_GHOST_DEBUG' ] # Have options here that scons expects to be lists @@ -418,8 +419,9 @@ def read_opts(cfg, args): (BoolVariable('WITH_BF_FHS', 'Use the Unix "Filesystem Hierarchy Standard" rather then a redistributable directory layout', False)), ('BF_VERSION', 'The root path for Unix (non-apple)', '2.5'), - (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)) - + (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)), + + (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)) ) # end of opts.AddOptions() return localopts -- cgit v1.2.3 From 884761511676ec76c8a7c59691246a635c07f2f9 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 2 Dec 2009 01:05:37 +0000 Subject: * make sure drop target files are filtered too. --- intern/ghost/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 84ca97fdb93..b69482bd9a5 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -11,7 +11,7 @@ if window_system == 'darwin': sources += env.Glob('intern/*.mm') -pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window'] +pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window', 'GHOST_DropTarget'] if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd6', 'irix6'): for f in pf: -- cgit v1.2.3 From 372bfeb0c530ac1de74734c3fb5e1282bb31084a Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 2 Dec 2009 01:12:22 +0000 Subject: =?UTF-8?q?*=20make=20sure=20we=20don't=20choke=20on=20what=20we?= =?UTF-8?q?=20don't=20have=20:=C2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- intern/ghost/SConscript | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index b69482bd9a5..90a86ae01a9 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -15,23 +15,35 @@ pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window', 'GHOST_DropTarget' if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd6', 'irix6'): for f in pf: - sources.remove('intern' + os.sep + f + 'Win32.cpp') - sources.remove('intern' + os.sep + f + 'Carbon.cpp') + try: + sources.remove('intern' + os.sep + f + 'Win32.cpp') + sources.remove('intern' + os.sep + f + 'Carbon.cpp') + except ValueError: + pass elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): for f in pf: - sources.remove('intern' + os.sep + f + 'X11.cpp') - sources.remove('intern' + os.sep + f + 'Carbon.cpp') + try: + sources.remove('intern' + os.sep + f + 'X11.cpp') + sources.remove('intern' + os.sep + f + 'Carbon.cpp') + except ValueError: + pass elif window_system == 'darwin': if env['WITH_GHOST_COCOA']: for f in pf: - sources.remove('intern' + os.sep + f + 'Win32.cpp') - sources.remove('intern' + os.sep + f + 'X11.cpp') - sources.remove('intern' + os.sep + f + 'Carbon.cpp') + try: + sources.remove('intern' + os.sep + f + 'Win32.cpp') + sources.remove('intern' + os.sep + f + 'X11.cpp') + sources.remove('intern' + os.sep + f + 'Carbon.cpp') + except ValueError: + pass else: for f in pf: - sources.remove('intern' + os.sep + f + 'Win32.cpp') - sources.remove('intern' + os.sep + f + 'X11.cpp') - sources.remove('intern' + os.sep + f + 'Cocoa.mm') + try: + sources.remove('intern' + os.sep + f + 'Win32.cpp') + sources.remove('intern' + os.sep + f + 'X11.cpp') + sources.remove('intern' + os.sep + f + 'Cocoa.mm') + except ValueError: + pass else: print "Unknown window system specified." -- cgit v1.2.3 From 4913f415cc6d1952f7417863e12c2162cd374c6b Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Wed, 2 Dec 2009 01:23:29 +0000 Subject: SVN maintenance. --- intern/ghost/intern/GHOST_DropTargetWin32.cpp | 2 +- intern/ghost/intern/GHOST_DropTargetWin32.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/intern/ghost/intern/GHOST_DropTargetWin32.cpp b/intern/ghost/intern/GHOST_DropTargetWin32.cpp index d75770383fb..631187cc6e8 100644 --- a/intern/ghost/intern/GHOST_DropTargetWin32.cpp +++ b/intern/ghost/intern/GHOST_DropTargetWin32.cpp @@ -1,5 +1,5 @@ /** - * $Id: $ + * $Id$ * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or diff --git a/intern/ghost/intern/GHOST_DropTargetWin32.h b/intern/ghost/intern/GHOST_DropTargetWin32.h index 6ea6ed85a93..03afcf88102 100644 --- a/intern/ghost/intern/GHOST_DropTargetWin32.h +++ b/intern/ghost/intern/GHOST_DropTargetWin32.h @@ -1,5 +1,5 @@ /** - * $Id: $ + * $Id$ * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or -- cgit v1.2.3 From fd69360fd2c8bb9850134e37ec18608cfd94dbce Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 01:38:54 +0000 Subject: remove icon_only option for snap target option in header to make the button wider. Now it's a bit too wide, but at least it can be read. --- release/scripts/ui/space_view3d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 871f0e30270..5ad63a578d2 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -76,7 +76,7 @@ class VIEW3D_HT_header(bpy.types.Header): row.prop(toolsettings, "snap", text="") row.prop(toolsettings, "snap_element", text="", icon_only=True) if toolsettings.snap_element != 'INCREMENT': - row.prop(toolsettings, "snap_target", text="", icon_only=True) + row.prop(toolsettings, "snap_target", text="") if obj and obj.mode == 'OBJECT': row.prop(toolsettings, "snap_align_rotation", text="") if toolsettings.snap_element == 'VOLUME': -- cgit v1.2.3 From 50c8c28c60a88a615c1dbace004b75316ebd2437 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 02:56:22 +0000 Subject: - finished spine rig generator, (drivers, constraints) - bug with args passed for class slots being modified in place. - sort graphviz bones & drivers (useful for diffing 2 armatures) --- release/scripts/modules/graphviz_export.py | 14 +- release/scripts/modules/rigify/__init__.py | 4 +- release/scripts/modules/rigify/spine.py | 215 ++++++++++++++++++++++++++++- 3 files changed, 223 insertions(+), 10 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 1e6d9ffe95b..c5b8b185893 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -26,7 +26,7 @@ footer = ''' } ''' -def compat_str(text, line_length=22): +def compat_str(text, line_length=0): if line_length: text_ls = [] @@ -88,7 +88,9 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): if FAKE_PARENT: fw('"Object::%s" [];\n' % obj.name) - for bone in arm.bones: + for bone in bones: + bone = arm.bones[bone] + parent = bone.parent if parent: parent_name = parent.name @@ -131,7 +133,11 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): animation_data = obj.animation_data if animation_data: - for fcurve_driver in animation_data.drivers: + + fcurve_drivers = [fcurve_driver for fcurve_driver in animation_data.drivers] + fcurve_drivers.sort(key=lambda fcurve_driver: fcurve_driver.rna_path) + + for fcurve_driver in fcurve_drivers: rna_path = fcurve_driver.rna_path pbone = rna_path_as_pbone(rna_path) @@ -158,5 +164,5 @@ if __name__ == "__main__": import bpy import os path ="/tmp/test.dot" - graph_armature(bpy.context.object, path, CONSTRAINTS=False, DRIVERS=False) + graph_armature(bpy.context.object, path, CONSTRAINTS=True, DRIVERS=True) os.system("dot -Tpng %s > %s; eog %s &" % (path, path + '.png', path + '.png')) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 9d34f9a72ff..a0b5c721b2a 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -31,7 +31,9 @@ def auto_class_instance(slots, name="ContainerClass"): return auto_class(slots, name)() def bone_class_instance(obj, slots, name="BoneContainer"): - for member in slots[:]: + slots = slots[:] # dont modify the original + for i in range(len(slots)): + member = slots[i] slots.append(member + "_b") # bone bone slots.append(member + "_p") # pose bone slots.append(member + "_e") # edit bone diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index ebc8b6ccdc0..d507d6fe1bc 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -114,6 +114,7 @@ def main(obj, orig_bone_name): # - copy (*use original name*) # - reverse (MCH-rev_*) spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(len(spine_chain_orig))] + mt_chain = bone_class_instance(obj, spine_chain_attrs) # ORG_* rv_chain = bone_class_instance(obj, spine_chain_attrs) # * ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* @@ -152,7 +153,7 @@ def main(obj, orig_bone_name): # ex_chain needs to interlace bones! # Note, skip the first bone - for i in range(1, len(spine_chain_orig)): # similar to neck + for i in range(1, len(spine_chain_attrs)): # similar to neck child_name_orig = spine_chain_orig[i] spine_e = getattr(mt_chain, spine_chain_attrs[i] + "_e") @@ -174,14 +175,218 @@ def main(obj, orig_bone_name): # Rotate the rev chain 180 about the by the first bones center point pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 matrix = RotationMatrix(radians(180), 3, 'X') - for i in range(len(spine_chain_orig)): # similar to neck + for i in range(len(spine_chain_attrs)): # similar to neck spine_e = getattr(rv_chain, spine_chain_attrs[i] + "_e") # use the first bone as the pivot spine_e.head = ((spine_e.head - pivot) * matrix) + pivot spine_e.tail = ((spine_e.tail - pivot) * matrix) + pivot spine_e.roll += pi # 180d roll + del spine_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + # refresh pose bones + mt.update() + ex.update() + df.update() + mt_chain.update() + ex_chain.update() + rv_chain.update() + + # df.pelvis_p / DEF-wgt_pelvis + con = df.pelvis_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.pelvis + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = df.pelvis_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.pelvis + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + # df.ribcage_p / DEF-wgt_rib_cage + con = df.ribcage_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.ribcage + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = df.ribcage_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.ribcage + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = ex.ribcage_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = mt.pelvis + + # add driver + hinge_driver_path = mt.ribcage_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + + + con = ex.spine_rotate_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.ribcage + + + # ex.pelvis_p / MCH-wgt_pelvis + con = ex.pelvis_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt_chain.spine_01 + + con = ex.pelvis_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt_chain.spine_01 + + # ex.ribcage_p / MCH-wgt_rib_cage + con = ex.ribcage_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = getattr(mt_chain, spine_chain_attrs[-1]) + con.head_tail = 0.0 + + con = ex.ribcage_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = getattr(mt_chain, spine_chain_attrs[-1]) + + # mt.pelvis_p / rib_cage + con = mt.ribcage_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt.pelvis + con.head_tail = 0.0 + + # This stores all important ID props + prop = rna_idprop_ui_prop_get(mt.ribcage_p, "hinge", create=True) + mt.ribcage_p["hinge"] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + prop = rna_idprop_ui_prop_get(mt.ribcage_p, "pivot_slide", create=True) + mt.ribcage_p["pivot_slide"] = 0.5 + prop["soft_min"] = 1.0 / len(spine_chain_attrs) + prop["soft_max"] = 1.0 + + for i in range(len(spine_chain_attrs) - 1): + prop_name = "bend_%.2d" % (i + 1) + prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) + mt.ribcage_p[prop_name] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + # Create a fake connected parent/child relationship with bone location constraints + # positioned at the tip. + + # reverse bones / MCH-rev_spine.## + for i in range(1, len(spine_chain_attrs)): + spine_p = getattr(rv_chain, spine_chain_attrs[i] + "_p") + spine_fake_parent_name = getattr(rv_chain, spine_chain_attrs[i - 1]) + + con = spine_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = spine_fake_parent_name + con.head_tail = 1.0 + del spine_p, spine_fake_parent_name, con + + + # Constrain 'inbetween' bones + + # b01/max(0.001,b01+b02+b03+b04+b05) + target_names = [("b%.2d" % (i + 1)) for i in range(len(spine_chain_attrs) - 1)] + expression_suffix = "/max(0.001,%s)" % "+".join(target_names) + + rib_driver_path = mt.ribcage_p.path_to_id() + + for i in range(1, len(spine_chain_attrs)): + + spine_p = getattr(ex_chain, spine_chain_attrs[i] + "_p") + spine_p_parent = spine_p.parent # interlaced bone + + con = spine_p_parent.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.spine_rotate + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + del spine_p + + # add driver + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'SCRIPTED' + # b01/max(0.001,b01+b02+b03+b04+b05) + driver.expression = target_names[i - 1] + expression_suffix + fcurve.modifiers.remove(0) # grr dont need a modifier + + for j in range(len(spine_chain_attrs) - 1): + tar = driver.targets.new() + tar.name = target_names[j] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (j + 1)) + + + # original bone drivers + # note: the first bone has a lot more constraints, but also this simple one is first. + for i in range(len(spine_chain_attrs)): + spine_p = getattr(mt_chain, spine_chain_attrs[i] + "_p") + + con = spine_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = getattr(ex_chain, spine_chain_attrs[i]) # lock to the copy's rotation + del spine_p + + # pivot slide: - lots of copy location constraints. + + con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') + con.name = "base" + con.target = obj + con.subtarget = rv_chain.spine_01 # lock to the reverse location + + for i in range(1, len(spine_chain_attrs) + 1): + con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') + con.name = "slide_%d" % i + con.target = obj + + if i == len(spine_chain_attrs): + attr = spine_chain_attrs[i - 1] + else: + attr = spine_chain_attrs[i] + + con.subtarget = getattr(rv_chain, attr) # lock to the reverse location + + if i == len(spine_chain_attrs): + con.head_tail = 1.0 + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + '["pivot_slide"]' + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = - (i - 1) + mod.coefficients[1] = len(spine_chain_attrs) - # done with editmode - # TODO, posemode - \ No newline at end of file -- cgit v1.2.3 From fa2ec6af38ef2fb451d02deca2e6c1353049c9af Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 04:07:40 +0000 Subject: Restore new snap align icon that was lost in previous changes. --- release/datafiles/blenderbuttons | Bin 209099 -> 209415 bytes source/blender/editors/datafiles/blenderbuttons.c | 13082 ++++++++++---------- 2 files changed, 6546 insertions(+), 6536 deletions(-) diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons index 2bfb1d10219..b538ff3ce6d 100644 Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 4e57645b791..702641f4f99 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6541 +1,6551 @@ /* DataToC output of file */ -int datatoc_blenderbuttons_size= 209099; +int datatoc_blenderbuttons_size= 209415; 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, 37,246, 73, 68, 65, 84,120,218,236, 93,117,184, - 84, 69, 31,126,231,236,217,222,219, 93,112,131,238, 70,186, 67,105,165,249, 16, 68, 12, 66, 76, 16, 12,148,144, 80, 36, 21,196, - 6, 20, 73, 5, 65, 41,165,187, 59, 37, 47,151,219,189, 29,103,190, 63,238,158,117,239,178,123,119, 47, 92, 16,113,222,231, 57, -207,238,169,247,204,156, 51,241,206,111,126, 51, 67, 40,165, 96, 96, 96, 96, 96, 96, 96, 96, 96, 40,123,112,236, 21, 48, 48, 48, - 48, 48, 48, 48, 48, 60, 34, 66,107,227,198,141, 62,155,192, 8, 33, 29,124,229,180,111,173, 31,117,206, 7, 24,119, 90,134,156, -173,237,156, 31,254, 75,194,217,250, 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,240, 95, 18,206,214,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,196,127, 8,252,131, 18, 89,165, 65,215,174, 93,137, 19, 63,121, - 84, 57,157,223,131,200, 95,150, 97, 45, 67,236, 40,107, 78,151,247, 89, 86,248,176,107,215,174,100,227,198,141, 59, 1,180, 46, -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,230, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56, -203,248, 27,125,104,231, 44,203,214, 77,155,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, 41,227,198, 64, 27,167,253, 15,203,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,157,101, 72,183,163,172,195,105, 15, 31,121, 80,214,215, 71, - 29, 44, 47,177,188,244,168,229, 37,119,233,166,107,215,174, 31,110,220,184,241,131, 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, 30,132,133,240, 1,160,204,195,105,111, 41,127,240, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37, -151, 52,217,166, 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,192, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221,216,244, 14, 12, 12, 12, 12, 12, 12, 12, - 12, 15, 8,132, 77, 88,202,192,192,192,192,192,192,192,240, 96,224,209, 71, 43, 54, 54,118,131, 90,173,174,232,233,188, 86,171, -189,147,146,146,210,150,189, 66, 6, 6, 6,175, 45, 58, 66, 56,252, 61,202, 89, 0, 64, 41,107,229, 49, 48, 48,252,151,133,150, - 66,161, 72, 58,127,254,124,101, 65, 16, 96,179,217, 96,181, 90, 29,191, 38,147, 9,173, 90,181, 42,181, 35,125, 84, 84,212, 46, -137, 68,146, 80,154,123,108, 54,219,205,212,212,212, 22, 37, 20,224,251, 0, 36, 17, 66,156,143,149,248, 11, 32,197,108, 54,215, - 47,137,147, 16,146,228,202,231,129, 75,252, 95, 34,103, 80, 80,208, 17,158,231,227,220,113,121,250, 47, 8,194,213,244,244,244, -102, 44,153, 62, 28, 68, 69, 69,237,226,121,190,212,233,243,206,157, 59, 30,211,103, 76, 76,204,113,142,227, 98, 74, 65, 41, 17, - 4,225,226,157, 59,119, 90,120, 18, 34, 98,154,247, 34,108,138,253, 39,132, 36, 91,173,214,134,222,242, 81, 73, 92,110,210,104, -137,156,206, 34,139,231,249, 25, 17, 17, 17, 35,116, 58,157, 1, 0,149, 72, 36, 52, 52, 52, 84, 12, 27, 0,192,106,181,102,228, -228,228,212, 98, 41,145,129,129,225, 63, 33,180, 4, 65,224,140, 70, 35, 46, 93,186, 4, 15,229,189,237, 30,158, 87,249,232, 31, - 91, 35,252, 35, 34, 97, 53,155,161, 9, 11,119,112,167,157, 59, 3,171,197, 12,171,201,132,242,141,154,136,149, 24,106,212,168, - 33,241,194, 25, 55,115,230,204, 8,127,127,127, 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, 91,216,227, 62,250,232,163,136,128,128, 0, 7,159,184,137,156, 34,175, -197, 98,129,193, 96,192,159,127,254, 89, 34, 39,207,243,113, 41, 41, 41, 17, 50,153, 12,148, 82, 8,130,224,206,185,176, 24, 42, - 84,168, 96,102, 73,244,161,162,242, 71,203, 55, 70, 4,170, 20,176, 10, 2,186,213,169,224, 56,113,245,235, 85,160, 86, 27, 4, -171, 21,149, 70, 15, 6,138, 76, 50,168, 94,189,122,137,233,147, 82, 26,255,209,242,141, 65,190,114,102,102,102,234,171, 85,171, -150,130,162,161,207,158, 44, 62,113,122,189, 62, 66, 12,131,171, 32,226, 56,174,216,182,121,243,102,116,235,214,205, 91,220,227, - 94,127,253,245, 8,139,197, 2,147,201, 4,163,209, 8,139,197, 2,171,213,234,216,108, 54,155, 99, 51,153, 76, 56,120,240,160, -175,150,172,153, 29, 59,118, 28,182,113,227, 70,205, 47,191,252,162, 73, 72, 72,128, 76, 38,131, 68, 34,129, 68, 34, 1,199,113, -224,121, 30, 79, 60,241, 4, 97, 73,144,129,129,225, 63, 35,180,140, 70,227,181,122,245,234, 81,251,255, 88,133, 66, 33,115, 41, - 64, 99, 42, 87,174,124,209,245, 62,111, 93,138,254, 17,145,152, 80, 46, 4, 0, 48,241, 70,150,163,130,248,184, 89, 93,199, 53, -147,111,231, 1, 0, 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,118,236, 8,185, 92,142,134, 13, 27, 66, 42,149,186,221,100, - 50, 25,164, 82,169, 47,149, 3,252,252,252, 48,105,210, 36, 81, 36, 65,163, 84,224,149,102, 13,161, 4,197,151,103, 46,195, 36, - 80,240, 60,239,216,124,225,148,201,100, 56,125,250, 52,120,158,135, 68, 34,113,252,138,255,215,175, 95,143, 62,125,250,128,231, -121,168, 84, 42,224, 63, 52,207,200,163,130, 64,149, 2, 67, 22,253, 12, 0,184, 53,103,180,227,219, 29, 28, 57,209,113, 77,252, -139,253, 64, 8,129, 84, 42, 5,199,113,101,198,153,157,157,173, 31, 48, 96,192, 30,127,127,255,205,249,249,249,240, 34,224,112, -235,214, 45,240, 60,239, 49,189,115, 28,135,217,179,103,227,202,149, 43, 62,197,221, 96, 48,224,171,175,190,130,205,102, 43,198, - 43,254,119, 61,230,163,200,154,218,169, 83,167,193, 27, 55,110, 12, 38,132,224,179,207, 62,131, 76, 38, 67,151, 46, 93, 16, 26, - 26,138, 45, 91,182, 64, 38,147, 97,220,184,113, 44,241, 49, 48, 48,148, 4, 41,128,186, 0,194,237,134,158, 2, 0, 65, 78,231, - 51,236,191,225, 78,251,135,221,240, 52,178, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,125, 0,106, 58, - 61, 71,188, 15,158,158,203, 3, 69,235, 15, 1,216, 1,160,141, 56,137,222,157, 59,119,158,114,178,172,156,191,120,241, 98, 85, - 81,243,216,187, 16,101, 86,171,181,178,216,157, 40, 90,139, 58,116,232, 80, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221, - 21,158, 4,140,217,108, 70,191,126,253,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 41, 23,142,247, 59, -215, 67, 99,106,129,182,144,192,154,167, 69, 79, 63, 11,206, 87,175,143,197, 55, 51,112, 35,191, 16, 60,207,251,196, 41, 8,130, - 71,145, 37,145, 72,176,104,209, 34, 12, 24, 48, 0, 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, 91,183,110, 7, 20, 10,197,146,200,200,200,148,228,228,100,175, 66,203, 85,252,184, 54, 42, 62,253,244, - 83,204,159, 63, 31,109,219,182,245, 41,156, 70,163, 17,132, 16, 44, 94,188,248,174,115, 83,166, 76,185,235,121, 37,113,218, 27, - 72, 92, 76, 76,204,200, 77,155, 54, 5,136,215,134,133,133, 65, 42,149,162, 86,173, 90,240,247,247,199,158, 61,123, 96,179,217, -124,206,151, 12, 12, 12,143, 47,220,105, 17, 39,180,154, 48, 97, 66,195, 25, 51,102, 76,107,218,180,233, 79,251,246,237, 91, 78, - 8,217,224, 84, 38,118,179,151, 61, 27,156,246, 27,185,136, 30, 41,128,112, 66,200, 6,241,122,231,125,167,227, 29, 0,200,197, -253, 9, 19, 38,212,156, 49, 99,198,180,241,227,199,191, 51,125,250,116,217,132, 9, 19,106,207,152, 49, 99,154,248, 28,119,225, -112,103,209, 42,113, 86, 97,177, 27,241,194,133, 11,240,230,191, 74, 41, 45,177,180,212,132,133, 59, 44, 89,147,227, 67, 29,199, - 39, 37,231, 58, 42,176, 5, 13, 42, 66,163,209,160,243,228, 79,124,178, 20,153, 76, 38,164,167,167, 59,172, 12,222, 54, 95, 57, -213, 42, 37,182,189, 94, 11,183,178,228,248,112,127, 54, 54,158,184, 2,169, 84,138, 39,171,215,194, 83, 50,127,188, 23, 47,199, -235,151,175,195,226,163, 79, 47,165,212,173,192, 18,255,139, 93, 40, 76,104,253,115,232, 86,167,130,195,234,116,208,191,189,227, -120, 31,237,105,199, 55,121,115,209,199, 0,128,182,245,159,128, 47,254,220,222, 56,179,178,178,244, 45,218,183,217,105,211,155, -190, 31, 60,120,240,181,237,219,183,171,124,106,222,185, 17, 90,162,213, 86, 20, 89, 60,207,195,100, 50,249, 20,119,147,201,228, - 49,127,200,100,178, 82, 91,180, 0, 64,171,213,154,214,173, 91,135, 5, 11, 22, 32, 52, 52, 20,157, 58,117, 66,116,116, 52, 86, -173, 90, 5, 74, 41, 70,143, 30, 13,149, 74, 37, 90,175, 89, 2,100, 96,248,111,163, 36, 45,162,152, 49, 99,198, 52, 87, 33,227, -188,239, 44,160, 92,196,148,179, 88,171,233,165,254,223,224, 42,158,196,231, 18, 66, 54, 76,159, 62,189,155,151,112,100,120, 18, - 90, 37, 78,223,111, 52, 26,175,213,169, 83,199, 39, 53,161,211,233, 82,189,137, 13,119,173,122,103, 43,129,159,159, 31, 52, 1, -126,224,124, 44,119, 45, 22,139, 67,168,108,221,186, 21, 42,149, 10, 93,186,116,185, 47,139,150,217,108,134, 92, 38, 5, 23, 22, -137, 33,115,182, 35,171, 64,239,168, 96,118, 92,189,134, 99,105,233,120,189,105,123,104, 84,233, 40, 52,153,124,178,188, 9,130, -112,151,200,226,121, 30,253,250,245,115, 88, 19,156,253, 86,192,186, 14,255, 49,184, 75,159,174,199, 5, 23, 75,213,189,112,102, -101,101,233,187,117,235,118,192,166, 55,125,127,251,246,237, 3, 0,148,141, 27, 55, 46,181,208, 18, 5,150, 84, 42,197,236,217, -179, 49,127,254,124,199,121, 95,133,150,213,106, 45, 38,160, 46, 95,190, 92,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8, - 0,132,164,164, 36,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,252,248,241,239, 16, 66, 54,216, 45, 75,103, 74, 16, 84,238,208,200, 69,172,101,120, 40,187,186,185, 19, 91, -206,255, 69, 76,152, 48,161,166,155,112, 28,246, 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, 24, 49,162, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59, - 81,137,176,113,187, 29,247,138, 27,199, 75,113, 35,170, 42, 36, 23,142, 67,234, 99,133,235,106,209, 26, 61,122, 52,190,250,234, - 43,112, 28,231,120, 39, 60,207,163, 82,165, 74,184,118,237, 26,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46, - 43, 43, 75,223,183,111,223,157,121,121,121,223,215,168, 81,227, 50,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,188, -121,243,138,137, 34,139,197,226, 83, 67,192, 98,177,220, 37,120,102,205,154, 85,236, 23, 0,154, 53,107,230,147,101, 24, 0,229, - 56,142,202,100, 50,116,236,216, 17,181,107,215,198, 47,191,252, 2, 65, 16, 48,106,212, 40,168, 84, 42,204,157, 59, 23, 86,171, - 21, 51,103,206,100, 22, 45, 6, 6,134,146,180,136,113,250,244,233,103,166, 79,159,238,176, 44,185, 90,180, 60, 81,218, 69, 85, -184, 40,210, 80,228,107,117,184,132,186,186,155, 39, 1,230,124,108,198,140, 25,211,220,132,195,181,187,242,225,175,117,152,122, -246, 52, 62,105, 94, 15, 64,241,238,194, 69, 79, 84,133,198, 79, 3,141,191, 31,250,174,223, 13, 0,246, 66,127,188, 79, 22, 45, - 81,104,101,101,101,149, 40,178, 74, 99,209,226,228, 60, 86,199,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 43, 52, 17, -156, 84, 6,222,102,245,137,147, 82,122, 87, 87,225,208,161, 67, 65, 8,113,140, 16,171, 83,167,142, 51, 23,171,121, 30,118,250, - 60,242, 53,206,175, 25, 9, 0,104,161,213, 58,190,197, 71,117,254, 30,223, 49,231,244, 78,135,245,113, 50,222,186, 39,206,172, -172, 44,125,227,106, 53, 15,200, 66, 2,191,191,121,243,230, 1, 0, 92,255,254,253,131,234,212,169,227, 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, 55,103, 49,228,169, 11,209,110,129,218,229,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 13,158, 68, 26, 47, 42, - 72,231,223,232,232,232,223,253,252,252, 18,125,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,146, 37, 75,224,231,231,135,231,158,123,174,212, 62, 90, 14,161, 37,227, -176, 69,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,191,255,190,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, -190,106,213,170, 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,233,211,167, 59,120,157, 45, 89, 34, 74,147,143,196,176,238,220,185, 19,199,142, 29,195,136, 17, 35,160, 82,169, 48,127,254, -124, 88,173, 86, 76,153, 50, 5, 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, 62,125,250,118,209,146,229,116,188, 88, 56, -188, 90,180, 20, 10, 69,226,165, 75,151, 28,147,149,150,244,107, 50,153,208,182,109, 91,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, 7, 31,124, 0,158,231,241,213, 87, 95, - 1, 0,222,122,235, 45,159,125,180, 68, 78,216, 8,146,233, 95,168, 55,167, 15, 76, 63, 88,144,182,247, 36,120,158, 71, 68,147, -167, 32, 52,238, 3,157,202, 15,188,205,234,243,168,195,236,236,108, 92,187,118, 13, 18,137, 4,111,188,241, 70,177,185,142, 92, - 71,178,109,221,186,149, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,223,188,121,243, - 32, 0,110,240,224,193, 65,106,181, 26,223,124,243,141, 14,128,124,213,170, 85, 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,135, 75,113,109, 35, 39,209,116,248, 30,121, 15,151, 85,192,121, 79, 66,195,104, 52,226,220,185, -115,190,242,248, 60,121,105,185,134, 79, 96,242,237, 60, 16, 66,240,101,179, 26,208, 4,248, 65,173,209,160,247, 47, 59, 29, 5, -247,233,105,111, 65,161,241, 67, 76,203, 78, 62, 21,228, 98,215,161,179,208,202,205,205,133, 84, 42,197,212,169, 83,193,113, 28, -102,206,156,137,216,216, 88,220,185,115, 7,171, 86,173,242,201,162, 37,177, 73, 16,253,108, 53,168,135, 6, 34,224,217, 86, 8, -238,248, 1,110,155,120,236, 51,168,209,202,112, 22,242, 45,243, 96, 18,108, 62,143,192,178, 90,173,216,185,115,167,171,195, 59, - 40,165,142, 89,247, 45, 22, 11,204,102, 51,102,206,156, 9,182, 66,201,195, 71,116,147,209, 8,111,248, 50, 0, 96,253,244,231, - 29,199,223, 63,253,119,250,156,253, 67,209, 2, 0, 85, 19, 58,149,138, 51, 43, 43, 75,255,100,219,102,187, 12,130,244,187, 90, -181,106, 21,179,100, 41,149, 74, 98,223,247, 73, 92,115, 28, 7,137, 68,114, 87,119,161, 39,177,229,139,143,150,213,106,117, 76, - 36, 90,146, 63,227,189, 88,180,158,127,254,121, 68, 71, 71, 59, 44, 89,147, 39, 79,134, 74,165,194,132, 9, 19, 96,177, 88, 48, -111,222, 60,150,248, 24, 24, 24,254, 9, 81,246,192,225,182, 36, 53, 24, 12,215,107,215,174, 13, 15,231, 98,149, 74,165,212,165, -144,142,169, 92,185,242, 69,215, 46, 68, 66, 72, 7, 74,233, 54,119,133, 58, 33, 4,254, 1,254, 80,250,105,160,118,177, 98, 41, -253, 3,160,240,243, 3, 39,147,186,171, 16,238,226, 20,125, 75,156,133,150,184,229,229,229, 65, 42,149, 98,193,130, 5, 8, 8, - 8,128,209,104,244,202, 41, 86, 58, 18,137, 4,186, 91, 5, 56, 63,109, 27,228,202,125,168,216,105, 0,162,165, 42,200,246,172, -133,222,102, 41,113,194, 82,119,156,149, 43, 87,198,196,137, 19,239,154,214,193, 19, 98, 99, 99,189,198,253,126,193, 56,221,115, -150, 52, 42, 86,132, 64,109,238,174,115,203, 41, 90,178, 12,130,244,187,107,215,174,137,150,172, 64,181, 90,141, 47,190,248, 66, - 7,128,155, 50,101,138, 58, 62, 62, 94,226, 75, 90,146, 72, 36,152, 51,103,142, 91,159, 44,119,162,171, 52,249,200,249,222,214, -173, 91,187,157,176,212,157,120,115,199, 41,134, 53, 52, 52,212, 97,201,178,217,108,142,209,134,226,236,243,158, 26, 21, 44,125, - 50, 78,198,249,223,225,124, 92,225,182,150, 79, 73, 73,121,210,211, 13, 21, 43, 86,188,116,233,210,165, 74,226, 82, 28,246,130, - 83,102, 48, 24, 42, 55,107,214,204,171,105, 71, 16, 4, 40, 20, 10, 80, 74,209,110,226, 12, 16, 14,224, 80,188, 18,139,104,222, - 30, 18, 9, 15,161,104,169, 15,175,163, 14,245,122,125,177,202,193,221, 86, 88, 88, 8,163,209,232,243,108,222, 6,131,161,216, - 20, 12,132, 10,184,241,199,202,187, 70, 31,138,155,175,126, 59, 74,165,178, 88,215, 79, 73,240, 54, 39, 25, 67,217, 67, 28,176, - 0, 0, 85,154,117,129, 32,216, 64,109,182, 98,203, 36, 85, 75,124, 18, 2,181,193,108,209,193,104, 52,122, 51, 59,146,204,204, - 76,125,223,190,125,119, 2,248,182,103,207,158, 23, 81, 52,226,133,250,249,249, 41,164, 82,169, 0, 32, 27, 0,205,201,201, 9, -188,125,251,182, 96, 48, 24,202,123, 11,231,198,141, 27,113,238,220, 57,180,108,217,178,216,114, 80,162, 85,212,121,118,119, 95, -210,167,216, 93,238,110, 70,120, 79, 66,206, 87, 72, 36, 18, 4, 6, 6, 66, 38,147, 97,234,212,169,144,201,100, 80,171,213, 0, -128,121,243,230, 57, 38, 95,101, 96, 96, 96,248,207, 8, 45,111,229,102, 9,221,138, 37,118, 33, 90,173,214,228,248,248,248, 82, - 61,204,102,179,165,121, 17,110,201,171, 86,173,146, 57, 91, 33,188,253, 82, 74,211,188, 84,182,201,235,215,175,151,185,179,110, -120, 90, 96,218, 27,167,205,102, 75, 78, 72, 72,240,104, 49,113, 7,139,197,114,155, 37,209,135, 7,155,205, 86, 66,250,124,247, - 94,211,231,229, 42, 85,170,220, 14, 10, 10,250, 45, 50, 50, 50,107,239,222,189,161,141, 26, 53, 10,117,190,166, 81,163, 70,209, - 46,183,153,224,121,157, 67, 16, 66,146,123,246,236,233, 54,205,139,162,201, 77,250, 76,246,150,230, 15, 29, 58, 36,115,190,223, - 19,191, 83, 62, 74,246, 65,184,222,168, 87,175, 30,231,204,227, 41,237, 91, 44,150, 12,150, 10, 25, 24, 24,254,243, 66, 75,175, -215,223,170, 93,187,182,213,195,185,155, 37,221,155,153,153,217,176,172, 35, 96, 54,155,155,253, 27, 56, 51, 50, 50, 26,178,228, -246,104,227, 65,124,163,180,180,180,198,101,205,105,181, 90,203, 60,125, 90, 44,150,102, 15,226,157,102,101,101, 53,101, 41,139, -129,129,129, 9,173, 82,192,215,105, 28, 24, 24, 24, 24, 24, 24, 24, 24,254,235,224,216, 43, 96, 96, 96, 96, 96, 96, 96, 96,120, - 48, 32, 40, 90,165,250, 46,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, 39,227,100,156,143, 31, -167, 55,238,199,110, 52,163, 56,154,234, 65,108, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113,254, 87, 55,214,117, -200,192,192,192,192,192,192,192,240,128,192,179, 87,240,207,128, 16, 34,161,148,218,202,144, 50, 24,128,167, 5,227, 76, 0,114, -238, 37,152, 0,100,246, 77,156,232,200, 2,192,108,223,124,152,186,126, 18,151,146, 18, 92,147,218,164,141, 40, 33, 82, 65,192, -137,242,229,203, 29, 7,158, 52, 1,128, 95, 84,245,234,126, 26, 85, 7,163,217,148,168,144,202,207,229,106, 11,183, 26,210, 46, - 94,103, 41,132,129,225, 31, 41,151,186, 3,152,100,207,251,211, 41,165, 43,217, 91, 97, 96,120, 64, 66,203,223,223,255, 8,199, -113,113,222,230,231,113,202,160,176,217,108,201,217,217,217, 13,125,204,208, 60,128,190,126,126,126,109,165, 82,105,115, 0,176, - 88, 44,123, 11, 11, 11,183, 3, 88, 69, 41,181,222, 99, 65, 17, 0,160, 31,128, 65,246, 67, 63, 2, 88, 73, 41,205,191, 71,190, -218,129,129,129,107,164, 82, 41,205,204,204,108, 2, 0,161,161,161, 7, 44, 22, 11,201,207,207,239, 77, 41, 61, 85, 74, 62, 78, - 42,149,206,110,217,178,101, 43, 66,200,183,148,210, 5,101,244, 45, 21, 28,199,185, 21, 40,130, 32, 36,220, 3,159, 12, 64,224, -130, 5, 11, 66,151, 45, 91, 86, 47, 57, 57,185, 22, 0,196,197,197,157, 30, 60,120,240,241, 87, 94,121, 37, 11, 64,158, 93,112, -121, 68, 74, 74,112,205,244,212,171, 35,210,210,207,245, 3,128,168,232, 90, 43, 37, 18, 78, 22, 27,123,108,191, 58,108, 80, 88, -149,170, 21, 94,254,233,155, 5,178,132,196,114,248,115,223,177,186,175,188,250, 78, 77,101,100,149, 79,153,216,122,120, 8, 8, - 8, 56,194,113, 92, 92, 73,121,220, 93,158,183,217,108,201, 89, 89, 89, 13, 61,113,242, 60, 31, 87, 82,121,225,238,152, 32, 8, - 87, 51, 50, 50,220, 78, 53, 17, 24, 24,184,159,231,249, 68, 95,185,196, 95,171,213,154,236,105,106,153,192,192,192, 35, 18,137, - 36,174,164,120,186, 59, 39, 8,194,213,244,244,116, 79,225,188, 43,238,101, 17,206,123,225, 44, 41,156, 98,121, 4, 96, 94,104, -104,232, 19, 89, 89, 89,255, 3,240, 78,126,126,126, 29,137, 68,130,144,144,144,119, 8, 33, 87, 2, 3, 3,191,206,203,203,219, - 7,224, 85, 74,169,192,114, 12, 3, 67, 25, 9, 45,142,227,226,110,223,190, 29,161,209,104, 0,252,189, 30,159,184,152,180, 32, - 8,160,148, 58,126,173, 86, 43,170, 85,171,230,171,216,168, 21, 16, 16,176,122,194,132, 9,229,251,246,237, 43, 23,151,154, 73, - 73, 73,169,188,102,205,154,255, 77,157, 58,245, 3, 66, 72, 31, 74,233,105, 95,197, 11,128,246, 0,134,214,171, 87,239,153,201, -147, 39,203,218,181,107, 7,155,205,134,223,126,251,173,229,148, 41, 83, 22, 16, 66,214, 2,248, 30,192, 31,190, 22, 22,132,144, - 22, 81, 81, 81,203,247,236,217, 19,125,237,218, 53, 91,223,190,125, 87, 0,192,145, 35, 71,146,108, 54, 27,105,210,164,201, 70, - 66,200, 64, 74,233,158, 82,188,243,103,198,140, 25,211,127,244,232,209, 17,207, 61,247,220, 48, 0, 11,236,207, 34,246,247, 92, -218, 5, 14, 29,150, 44, 74,169,172,132,235,162, 74, 97,217,210, 92,187,118, 45,184, 89,179,102, 35,211,211,211, 95,119,230, 77, - 75, 75,195,209,163, 71,205,211,166, 77,155,179,111,223,190,133,137,137,137, 57, 0,180,158,136,168, 77,218, 40, 45,253, 92,191, - 86, 77, 23, 4, 2,192,170,245, 35, 7, 28, 58,158,225,191, 97,211,226,255,201,149, 50,227,178, 47,231,200, 42, 85, 76,192,142, - 35,151,113,240, 92, 54,169,213,162, 27,159,183, 97,105, 71, 0,139, 89,246,124, 56,144, 72, 36,177,201,201,201, 17,106,181,218, -237,194,241, 46,126, 25,226, 4,168,168, 92,185,178,231,130,133,231,227,110,223,190, 29,161, 84, 42, 29,101,135,107,153, 33,150, - 43,142,180, 66, 41,170, 84,169, 98, 46,161, 76,138,191,121,243,102,132, 90,173,118,240,184, 11,159,171,224,168, 82,165, 74, 73, -113, 47, 22, 78, 95, 56, 41,165,168, 84,169,146,205, 91,220,197, 21, 48,188,197, 91,228, 76, 76, 76,164,165,225,244, 37,156, 21, - 42, 84, 48,123,249,252,243, 46, 94,188, 56,186, 92,185,114,168, 84,169,210,190, 39,158,120, 34, 64,163,209, 96,211,166, 77,168, - 94,189,122,205,128,128,128,131,171, 86,173,146,142, 27, 55,174,238,119,223,125, 7, 0,175,176, 28,195,192, 80, 70, 66,139, 16, - 2,141, 70,131, 21, 43, 86,120, 92,142,195,249,127,249,242,229,125,122, 32, 33,164, 97, 98, 98,226,206, 61,123,246,168,162,163, -255,158, 16,219,100, 50, 33, 56, 56, 24,163, 70,141,146,119,239,222,189, 82,167, 78,157, 14, 16, 66, 90, 83, 74,143,120,225,123, - 38, 60, 60,252,179,247,223,127, 63,178,127,255,254, 8, 13, 45, 54,233, 54,250,246,237,139,222,189,123,203, 46, 94,188, 56, 96, -201,146, 37, 3, 22, 45, 90,148, 74, 8,121,133, 82,186,182, 36, 94,181, 90,221,179, 98,197,138, 95,236,217,179, 39, 34, 34, 34, - 2, 73, 73, 73,220,184,113,227, 42, 85,174, 92, 89, 21, 23, 23,199,221,185,115, 7,191,252,242, 75,236,192,129, 3, 87,203,229, -242,151, 77, 38,211, 58, 31,226, 46, 15, 13, 13,125,231,229,151, 95, 14,203,207,207,183, 30, 61,122,244,146,120, 92, 46,151, 79, -105,218,180,105, 35, 66,200, 15,148,210,175,239,197,146,101,183,218,185,174,101, 98, 17,207,251,104,217,146,159, 56,113, 34,164, -105,211,166,107,141, 70, 99,253, 17, 35, 70,220,156, 54,109,154, 42, 32, 32, 32, 0, 0,201,207,207,207,153, 52,105,146,105,238, -220,185,111, 87,175, 94,189,253,254,253,251,159,169, 91,183,174,197, 46,226,238, 22, 90,132, 56,194,115,235,118, 6,118,238, 19, -228, 19, 39,188, 21,247,241, 71,137, 55, 14,159,189, 37,240,170, 0,252,186,235, 12,210,178, 10,241,251,254,179,136, 10,245, 39, - 50,133,180,102, 80, 92,205,214,121,183,207,238,162,108,101,237, 7, 14, 66, 8,212,106, 53,126,253,245,215,187,150,174,114,183, -172, 21,207,243, 8, 10, 10,242,186,186,129, 82,169,196,214,173, 91,221,174,189,232,110, 73,159,192,192, 64,160,132, 69,181, 9, - 33, 80, 42,149,216,187,119, 47, 56,142,115,187, 52,144,235, 49,141, 70, 3,174,132,181,174, 68,206, 93,187,118,121,229, 18,127, -253,252,252, 0, 64, 82, 98,166, 84, 40,176,103,207, 30,143,113,118,253,239,103, 95,239,213, 27,231,222,189,123,139, 45,253,229, -186, 36,152,243,190, 70,163,113, 52,224, 60,182,210,130,131,155,196,197,197,225,208,161, 67, 88,181,106, 85, 72,205,154, 53,113, -249,242,101, 16, 66, 48,109,218, 52, 82,163, 70, 13,105,106,106, 42, 90,182,108,137,159,127,254,185, 25,203, 45, 12,255, 32,164, - 0,234, 2, 8, 71,209, 42, 52, 5, 0,130,236,117,143, 28, 64, 22, 0,149,125, 51, 2, 40, 4, 16,102,191, 55,211, 94,182, 56, - 11,132, 12, 20, 95,124,186,145,157, 91, 92,161, 34,220,233,156,248, 12,215,125,215, 95,183,220, 60, 0,108,220,184, 81,172,204, -218,116,237,218,117,103,177,152,249, 32,178,196,117,202, 92,243,180,155, 5,102, 21, 26,141,102,205,129, 3, 7, 84,225,225,127, -199,193,104, 52,162,160,160, 0,133,133,133, 40, 40, 40,128,191,191, 63, 86,173, 90,165,106,223,190,253, 26, 66, 72,101, 74,169, -209, 19, 39,128, 57,119,238,220,137,180, 90,173,144,203,229,158, 90,194,168, 86,173, 26,222,121,231, 29,116,238,220, 57,170,109, -219,182,115, 0,172, 45,129, 19,106,181,250,139,163, 71,143, 70,168,213,106, 92,186,116, 9,201,201,201,120,243,205, 55,203, 9, -130,128, 91,183,110,225,242,229,203,184,125,251, 54,150, 44, 89, 18,209,171, 87,175, 47, 0,172, 43, 41,238,118,140,120,253,245, -215,171, 6, 7, 7,115,159,124,242, 73,174, 86,171,253,220,126,124,226,252,249,243,159,109,213,170, 85,196,240,225,195, 41, 33, -100, 25,165,244, 46,225,226,194,233,206,146,101, 3,112,222,229,182,106, 46,150,174, 40,123, 34,204,117,195, 73, 0, 4,118,234, -212,233, 13,163,209, 88,127,207,158, 61, 87,154, 55,111, 30, 15,224,142,152,248, 2, 3, 3, 53,115,230,204,137,236,214,173,219, -197,118,237,218,213,239,212,169,211, 27, 25, 25, 25,211,236,231,169, 43,167, 32,224, 68, 84,116,173,149,187,246,191,210,111,199, - 94,147,236,173, 87, 63,184, 89,190, 92, 66,222,137, 75,217,182,179, 87, 51, 80,160,183,226,233,118, 69, 11,152, 55,169, 85, 30, -159,173,216,131, 81,175,189, 43, 93,187,114,105,239, 43, 20, 26, 0, 27, 75,120,159,247, 5,198,249,183,216, 16, 4, 1, 82,169, - 20, 79, 61,245, 20, 8, 33,119,173,229, 41,149, 74,177,127,255,126,180,107,215, 14, 82,169, 20,207, 63,255,188, 79,156, 60,207, -163, 83,167, 78,142,117, 20,157,249, 92, 69,131, 59, 77,224, 26,119, 74, 41,120,158, 7,199,113, 30, 23,210,118,229,244, 86, 46, -137,225, 44,137,203,249,156,183,112,138,214, 36, 95, 69,150,175,156, 98, 56,121,158, 71,179,102,205,112,252,248,241, 18, 69,151, - 59,125,233, 26,247,156,156,156, 33,149, 43, 87,222,181, 96,193,130, 16, 0,200,202,202,114, 44,120, 47,145, 72,112,225,194, 5, -152, 76, 38,124,248,225,135,230,252,252,252,225, 44, 31, 49,206, 7,201, 89,146, 22, 1,208,106,194,132, 9, 13,103,204,152, 49, -173,105,211,166, 63,237,219,183,111, 57, 33,100, 3,165,180,155,248, 59, 97,194,132,154, 51,102,204,152, 54,126,252,248,119,166, - 79,159,126,134, 16,178, 1, 0, 92,247,237,225,239,230, 34,226,194, 69, 30,123,158, 43,118,173,187,125,215, 95, 15,220,127, 91, -180,186,118,237, 74,236,145, 36,206,133,154,175, 66,203,151,181,251,120,158, 31, 61,109,218,180,200,146, 68, 86, 97, 97, 33, 82, - 82, 82, 16, 31, 31,143,231,159,127, 62,114,193,130, 5,163, 1,204, 42,129, 86, 38,145, 72,112,232,208, 33,164,167,167,163,118, -237,218, 72, 76, 76, 44,118,193, 95,127,253,133,223,126,251, 13,185,185,185,104,208,160, 1, 80,228,127,228, 22,117,235,214,253, -176, 90,181,106,157, 58,117,234,100, 85,169, 84, 56,113,226, 4,234,215,175,143, 21, 43, 86,160,124,249,242, 80,171,213,184,120, -241, 34,106,215,174,141,157, 59,119, 34, 60, 60, 28,245,234,213,179, 54,104,208, 96,119,118,118,246,246,235,215,175,127,232,161, -229, 44,139,141,141,253,224,165,151, 94,146,167,164,164, 8,223,127,255,253, 30, 74,233, 30, 66,200,232,119,223,125,119, 88,231, -206,157, 35,142, 29, 59,150,119,248,240,225,131,238, 68,150,143,150, 44,171,107,165,100,179,217,140,122,189,222,100, 52, 26, 45, - 28,199, 93, 39,132,152,108, 54,155,167, 62, 31,229,208,161, 67, 43,100,102,102,142,122,237,181,215,174,217, 69,214, 5, 20, 57, -192, 3, 0,172, 86,171,177,176,176, 48,191,105,211,166,241, 3, 7, 14,188,178,124,249,242, 81, 67,135, 14, 93,245,253,247,223, - 23, 2,208,187, 18,150, 47, 95,238,184, 68,194,201,180, 5, 33, 87, 87,175,250,250,245,223,214,143, 46,119,235,214,237, 74,161, - 97,225, 90,153, 95,120,202,170, 31,191, 59, 2,192,148,146,145,143, 83,127,165, 66, 42,149,224,220,173, 60,180,122,178,175,244, -202,165,143, 90,136, 66,139,225,129,130,138,139, 80,239,216,177,163, 68,139,214,254,253,251, 33,149, 74,161, 82,169, 48,119,238, -220, 18, 73, 69, 97, 32, 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,254,249,231,120,237,181,215,138, - 61,195, 46, 54,136, 55, 78, 79,225,139, 79, 72, 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,213, 87, 95,161, - 91,183,110,216,176, 97, 67,137,191, 79, 61,245, 20, 56,142,163,190,188,207,102,205,154,193,108, 54, 59,194,124,225,194, 5,183, -188,139, 22, 45,242,102,201,236, 14, 96, 82,253,250,245, 3,218,182,109,139, 93,187,118,161,119,239,222, 70,179,217,124,201, 94, - 39, 84, 89,176, 96,129,252,232,209,163, 8, 13, 13,149,222,188,121,243, 91, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111, -198,140, 25,211, 92, 69,140, 51,196,243,132,144, 13,211,167, 79,239,230, 44,138,156,247,157,172, 78,206, 34,174,166,179, 69,202, - 89, 68,121, 18, 80, 46,245,173,243,245, 25,110,133,150, 61, 98,109,156,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48, -176,203,211, 79, 63,237, 16, 57, 6,131,193, 33,176, 68,145, 37,238, 95,188,120, 17, 13, 27, 54,148, 5, 6, 6,118,241, 34,180, - 68, 17,135,152,152, 24,100,102,102,226,244,233,211,136,143,143,135,197, 98,193,230,205,155,145,151,151, 7,169, 84, 10,153, 76, - 6,179,185,100,151,133,106,213,170, 61,181,108,217,178,134, 75,151, 46,205, 17, 91,116, 63,254,248, 35, 40,165, 8, 15, 15,135, - 78,167, 67, 90, 90, 26,182,111,223, 14,171,213, 10, 63, 63, 63, 36, 37, 37,201,123,246,236,217, 98,210,164, 73, 82, 0, 31,122, -160,110,214,187,119,239,192,128,128, 0,188,250,234,171,212,108, 54, 79, 39,132, 52,235,221,187,247, 7,175,188,242, 74,232,245, -235,215, 77, 47,188,240,194, 33,179,217,252,137,189, 16,148, 82, 74, 45, 94, 90, 20, 30, 45, 89, 22,139, 69,124,167,215, 10, 11, - 11, 17, 22, 22, 22,239,197,135, 11, 0,100,123,247,238,109, 6, 64, 50,101,202, 20, 37,128, 52,103,145,101, 50,153, 80, 88, 88, - 8,173, 86,107,201,203,203, 75, 31, 59,118,172,117,249,242,229, 18,251, 61,231,220, 9, 45,224, 73, 83,141, 26, 26, 57,165,146, -119, 23, 47, 94,236,215,185,115,103,206,207,207, 15, 5, 5, 5, 1,191,111,218,228,215,190,109,139,164,105, 51, 62,222, 18, 16, - 87, 59,109,239,137,171,184,157,154, 7,147,197,130,164,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,237, -218,133, 39,159,124,210,145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,177, 99,135, 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, - 87, 94,121, 5, 82,169, 20,227,198,141, 3,207,243,168, 87,175, 30,120,158, 71,211,166, 77, 33,149, 74,209,174, 93,187, 82,199, -253,192,129, 3,168, 95,191,190, 35, 76,245,234,213, 67,163, 70,141,192,243, 60, 90,182,108, 9,169, 84,138, 78,157, 58,249,194, -249, 78, 65, 65, 65, 29, 63, 63, 63, 92,188,120, 17, 18,137, 4,132,144,203,148,210, 58, 0,240,210, 75, 47, 93,209,233,116, 21, - 12, 6, 3, 94,122,233, 37, 98, 50,153,106,143, 27, 55,238, 93, 0, 76,104, 49, 60, 48,184,106, 17, 39,232,199,143, 31,255, 14, - 33,100,131,104,161,114,181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,228, 34,226,196,110,191,174, 37,220,107,114, 17, 86, -174, 93,135,135,125,182,104,137,133,175,175, 66,203, 27, 12, 6, 67,221,136,136, 8,143, 34,203,249,215,100, 50, 33, 49, 49, 17, - 6,131,161,110,105, 43,141,232,232,104,152,205,102,124,253,245,215,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,179,103, -207, 94, 59,112,224, 64,253, 6, 13, 26, 4,255,252,243,207, 25,173, 91,183, 14,239,220,185, 51, 84, 42, 21,244,122, 61, 44, 22, - 11,154, 52,105,130,106,213,170, 33, 57, 57, 25,191,255,254,123,102,229,202,149,195, 14, 30, 60, 40,164,166,166,222, 40,129,186, - 99,251,246,237, 65, 8,193,166, 77,155, 50, 41,165,135,149, 74,229,111, 31,125,244, 81,176,201,100, 18, 6, 15, 30,124, 51, 59, - 59,251, 53, 0,102,133, 66, 49,191, 83,167, 78, 77, 37, 18,201, 15, 54,155,109,110,105, 19,170,235,187,213,106,181, 80, 42,149, -190, 76, 37, 33,205,206,206,174, 5, 0, 26,141, 38, 4,192, 21, 71, 10,215,235,139,137, 97,147,201,100, 8, 9, 9,209, 0,128, -253, 30,169,135,239, 17,174, 86,171, 87,223,184,113,213,223,217,127, 46, 40, 40, 8,131, 6, 14,228,154, 55,107, 38,175, 83,183, -110,167,247, 62, 93,186, 34, 38, 52,192,148, 20, 19, 10,139,205,130,109, 91, 54, 11, 84,176,108, 97,197,206,195, 17, 90,162,216, -112,181,104, 73,165, 82,236,220,185,243,174, 99, 50,153, 12, 95,126,249,165, 79,194, 64, 20, 85,158,186,206, 92,186,186,136, 55, - 1, 35,149, 74, 33,145, 72,240,213, 87, 95, 65, 16, 4,188,254,250,235,197,186, 19,157,249,125,236, 2,113,220, 83,237, 3, 1, -128, 9,201,179, 21,142,251, 93,195,107,191,199, 39, 43,217,130, 5, 11,124,178,104,117,237,218,213,171,112,117,238, 97,112, 14, -215,241,227,199,221,242, 46, 94,188,216,235,251,180,217,108,216,184,113,163, 67,164,138,120,255,253,247, 95,138,139,139,139,220, -189,123, 55, 82, 83, 83,161,213,106, 81, 88, 88,136, 38, 77,154, 36,117,232,208,225, 68,106,106,234,245,179,103,207, 62,205,114, - 15,195, 67,180,104, 25,167, 79,159,126,102,250,244,233,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 48,236, 93,134,227,199, -143,127, 7, 69,110, 53,135,125,184, 87,238,218,117, 88,162, 33,200, 69, 69, 78,114, 87,248,250,210,125,232,163, 57,157, 39,132, -192, 96, 48,184, 21, 88,206,226,192,108, 54, 35, 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180, 78,159, 62,253,220, -176, 97,195, 82, 2, 3, 3,235,100,100,100,164, 11,130,208,110,255,254,253,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,237,183, -223,160, 86,171,241,202, 43,175,164,219,108,182, 93,254,254,254,161,122,189,254,100,106,106,234,123, 30, 21,140, 84,218,169,101, -203,150, 56,122,244, 40,114,114,114,182, 18, 66,234, 13, 31, 62,252,201,114,229,202,145,143, 62,250,200,240,215, 95,127,205, 5, -144,174,209,104,150, 45, 91,182,172,109,131, 6, 13,252, 7, 15, 30, 12, 66,200, 98, 74,169,193,215, 56,107,181,218, 98, 2, 43, - 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223,153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162, - 75,168,212, 19,159, 70,163,153,178,116,233, 82,149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,253,247,222,147, 77,126, -115,120,125,137, 95,228,126,142, 35, 48,153,105, 46, 21, 76,155,181,105,253,119,179, 98,231,225, 64, 20, 6, 61,122,244,184,171, -187, 80, 38,147, 97,235,214,173,232,213,171,151,163,225,210,160, 65, 3,175,141, 43, 81, 24,116,239,222,221, 97, 25,218,188,121, -179,219,110, 63,209, 34,229,139, 32, 20,175, 29, 51,102, 12,120,158,199,103,159,125,134, 55,222,120, 3, 28,199, 97,246,236,217, -224, 56, 14, 19, 39, 78,244, 89,100, 58, 11,152,235, 31, 23,253,198,189,145,143,172, 69,145, 0, 0,255,128, 0, 49, 66,165, 42, -123,120,158,119, 88,178,234,214,173, 11,169, 84,138,166, 77,155,130,231,121,135, 37,171, 75,151, 46,206,239,145,250,194,201,243, - 60, 46, 93,186,228, 8,115,211,166, 77,139, 89,178,120,158, 71,215,174, 93,125, 9,230,180,160,160,160, 73,213,170, 85,171, 62, -103,206, 28,169, 68, 34, 65,251,246,237,171,188,240,194, 11, 55, 66, 67, 67, 67,167, 76,153,162,118,115,143, 10, 64,157,234,213, -171,107, 88,174, 97,120,128, 22,173, 73,110, 78, 5, 59,251, 92,149,162, 33,185,193,249,122,145,195, 85, 28,217, 45,100,187,188, -113,185,187,215, 27,120, 81, 65,150,100, 82,247, 69,104,217,205,206, 37, 62, 76,173, 86,159, 74, 79, 79,111,170, 82,169,138,137, - 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181,250, 84, 89,126, 68,111, 93,135,118, 81,243,166,211,139,237,208,165, 75,151,239, -183,110,221, 26,189,109,219, 54, 28, 60,120, 16,225,225,225, 88,176, 96,193,157,180,180,180,231, 40,165, 91,125,121,110,133, 10, - 21,106,249,249,249, 97,239,222,189, 0,176, 19,192,240, 81,163, 70, 17,139,197,130, 69,139, 22,105, 1,108, 10, 10, 10,218,184, -106,213,170,250,117,234,212,145,111,219,182, 45,255,224,193,131,127,248, 40,178,108,130, 32,220, 37,176,156,223,169,191,191,191, - 47, 22, 45, 75, 96, 96,224,233,252,252,252,190,122,189, 62, 95,161, 80,248,231,231,231, 27,157, 5,150,200,207,243,188,244,210, -165, 75, 41, 0,146, 2, 3, 3, 79,195,169,139,177, 88, 2,227,249,246,237,219,183,231, 93,191, 65, 90, 90, 26, 82, 83, 83, 97, - 54,155,209,160, 65, 3, 34, 33, 22, 73,246,205,147, 47,177, 98,230, 31,177,104, 81, 49,175,139,163, 4,221,141, 52,220,188,121, -179, 99,159,227, 56,216,135,251,123, 21, 69, 91,183,110, 45,209, 97,221,165,235,208,171,105, 92,188,126,225,194,133, 69,203, 91, -216, 45, 89, 28,199, 97,252,248,241, 80, 40, 20,248,232,163,143, 48,126,252,120,240, 60,239,181,235,208, 89,192, 36,140,211, 57, - 55,142,138, 50,133,221, 31,138, 16,226, 44,182,136,175,226,173, 36,107,158, 47, 61, 1,206,156,226,125, 74,165,210,163, 35,188, - 11, 39, 41, 33,222,191, 18, 66,174, 70, 71, 71,239,109,218,180,105,224,145, 35, 71, 48,123,246,108,153,209,104, 44,191,109,219, - 54,199,115,221,189, 47,173, 86,171, 98, 57,135,225, 65, 88,179, 74, 56,157,225,226, 95, 69,156,187,241, 74,248,117,189, 30, 78, -199,156,121, 51, 92,234, 49,231,227,174,226,202,245, 25,206,215,100,120,180,104,121, 43, 44,188, 9, 46, 95, 44, 90, 58,157,238, -143, 77,155, 54, 53, 26, 56,112, 32, 95, 82,183,161, 86,171, 69,100,100, 36,206,156, 57, 99,213,233,116,127,248, 96, 41, 43, 51, -161,229,166, 80,217, 22, 21, 21, 37,177, 88, 44,168, 84,169, 18, 98, 99, 99, 97, 48, 24,144,155,155, 43,241, 85,100, 17, 66,100, - 13, 27, 54,148, 0, 64,110,110, 46, 80, 52,212,180, 74,229,202,149,113,244,232, 81,100,103,103,175, 5,208,121,210,164, 73, 13, -154, 52,105, 34, 91,177, 98,133,110,196,136, 17,107, 45, 22,203,135, 62, 90, 35, 76, 86,171, 53,145,227, 56,115,110,110,238,109, -231,247, 25, 25, 25, 25,162,209,104, 72, 90, 90,154,197, 23,161, 85,167, 78,157, 67, 55,111,222,196,148, 41, 83, 50,166, 77,155, - 86,185,160,160, 32, 39, 47, 47,207,234, 44,182, 12, 6, 3, 23, 22, 22,166, 88,180,104,145, 10, 0,234,212,169,115,200,147,208, -210,106,181,229,212,234,191, 27,198, 70,163, 17,169,169,169, 72, 77, 77, 69, 90, 90, 26, 10, 10, 10,144,148,148, 4,157, 78, 23, -207,138,153,127, 76,104, 21,235, 62,115,206,223,206, 21,121,105,242,186,179,128,233,209,163,135,195,183, 75,180,144,137,219,234, -213,171, 93, 29,204,125, 18, 90, 11, 23, 46,196,152, 49, 99,160, 84, 42, 49,103,206,156, 98, 93,135,174,226, 64, 16, 4,226, 75, -220, 19,223,214, 35,117,126, 8,164, 82, 41, 66, 71,164, 21,235,162,115, 35, 56,124, 10,231,180,105,211,202,164,235,208,153, 51, - 62,190, 40,171,124,245,213, 87,232,219,183, 47,118,239,222,125,207, 93,135, 53,107,214,252,113,195,134, 13,129,103,207,158, 69, -126,126, 62, 50, 50, 50, 96, 52, 26,145,156,156,236,177, 87,192, 94,150, 43, 89,206, 97,120,200, 56,252,144,121,203,236,121,188, -151, 10,220,103,161,229,139, 69,203,104, 52,206,121,245,213, 87, 71,117,232,208, 33,196,223,223, 31, 41, 41, 41,119,137,172,194, -194, 66,248,249,249, 65,175,215, 99,253,250,245,249, 70,163,113,142, 55,113, 96,177, 88, 16, 17, 17,129,204,204, 76, 8, 30,252, -167, 57,142,131, 74,165, 66, 97, 97, 33, 60,137,130,146, 42, 12,179,217, 12,139,197, 2,139,197, 2,179,217,140, 82, 78,239,164, - 22, 39,126,213,106,181, 0,160,141,137,137,169,164, 84, 42,113,237,218, 53,160,104,100, 95,135, 39,159,124, 82,154,149,149, 69, - 95,120,225,133, 61,148,210,151,188,204,142,111,218,181,107, 87, 34, 0,168, 84,170,139, 0,144,156,156,108,201,205,205, 45,102, - 41, 84,171,213,180, 87,175, 94,209,148, 82,236,218,181, 43, 81, 38,147, 81,120,152,243, 10,128, 97,221,186,117,103, 3, 3, 3, -151,207,152, 49, 99, 96,183,110,221,206,212,170, 85, 43, 81,171,213,166,235,245,122,189,193, 96,160, 18,137, 68, 22, 28, 28,172, -220,178,101,203,149,253,251,247,119, 8, 8, 8, 88,190,110,221,186,179, 0,220, 90,222, 52, 26, 77,178, 78,167, 75, 16,191,169, -179,200, 74, 77, 77, 5,165, 20, 87,175, 94,133, 90,173,190,201,202,145,127, 14, 98,163,202,213,242,226,122,204, 87,145,229, 44, - 12,182,108,217, 82,226, 28, 90,190,114, 58,139,162, 55,222,120, 3,243,231,207,191,203,162,245,209, 71, 31, 1, 0,222,123,239, - 61,159,125,180, 68,235, 85,234,252, 16, 68,141,201, 46, 22,118, 0, 32, 98,248, 74, 57,165, 27,207,243,152, 50,101,202, 93, 78, -234,206, 93,123, 62,118,241, 21, 11,103,122,122, 58,120,158, 71, 72, 72, 8, 6, 13, 26,132, 78,157, 58, 57,186, 32, 75,203,123, -254,252,249,189,111,191,253,118,237,154, 53,107, 98,234,212,169,217, 65, 65, 65,254, 47,190,248, 34,159,155,155, 75, 74,178,104, - 49,161,197,192, 80, 6, 66, 75,204, 96,190,142, 58,116, 87, 88, 18, 66, 58, 56,207,181, 65, 41,205, 35,132, 12,234,216,177,227, -207, 43, 87,174, 84, 85,168, 80, 1,231,207,159, 71,118,118, 54, 76, 38, 19,100, 50, 25,162,163,163,145,155,155,139,239,190,251, - 78,175,211,233, 6, 81, 74,243, 74,226, 4,240,110,195,134, 13,191,152, 53,107,150,178, 94,189,122,200,206,206, 70, 97, 97, 97, -177, 89,172, 3, 2, 2,160, 82,169,112,232,208, 33,108,222,188, 89, 15,224, 93, 47,156,238,212, 28,204,102,179, 67,112,121, 19, - 90, 46,156, 26,209,170,163,211,233, 0,192, 82,174, 92,185, 40, 0,184,122,245, 42, 0, 92, 79, 74, 74,154, 84,161, 66, 5,178, -108,217, 50, 74, 41,221,236, 78,100,185,112,102,183,108,217, 50, 7, 64,148,201,100,146, 1, 64, 94, 94,158, 57, 44, 44, 44, 66, -161, 80, 8, 42,149, 74, 80, 42,149, 66, 74, 74,138,213,106,181,202, 0,160,101,203,150, 38, 0,169,112,242, 5,113,225, 20, 0, -228, 47, 94,188,120,210,224,193,131,155, 54,107,214,172,230,200,145, 35, 79,191,240,194, 11, 92,108,108,108,112, 65, 65,129,225, -242,229,203, 57,159,126,250,105,193,129, 3, 7, 58, 72,165,210, 27,139, 23, 47,158, 4, 32,223,126,239, 93,156, 86,171,245,143, -109,219,182, 61,215,173, 91, 55,254,246,237,219, 72, 75, 75,115,136,172,180,180, 52, 84,171, 86, 13,251,247,239,183,153,205,230, -109,165,120,159,101,101,201, 97,156, 69,141, 16, 42,230,117, 79, 2, 75,108, 76,249,202,233, 44,138,250,246,237, 91,204,138, 37, -147,201,176,102,205, 26,183,229,134,155, 25,206, 59,184,206, 39, 37,134,233,237,183,223, 46, 38,218,222,127,255,125,143, 65,243, -246, 62, 69,158,188,175, 98,139,143, 58,244,144,207, 75, 10,167, 88,118, 74,165, 82,188,255,254,251, 62, 91,180,224,226,163,229, -142, 83,140,123,235,214,173,161,211,233, 28, 66,214,147, 69,203,219,251,180,217,108, 99,230,207,159, 79, 3, 2, 2,158,200,207, -207,255,223,205,155, 55,151,232,116,186,198,121,121,121, 37, 90,180,140, 70,163,130,229, 35,198,249, 32,230,210,250, 79, 9, 45, -123, 37,137,114,229,202, 21, 91, 59,139,227,184, 98, 91,105,252, 12,236, 25,119, 11, 33,228,153,230,205,155,255, 48,102,204, 24, -255,122,245,234, 73, 19, 18, 18,160,213,106,113,237,218, 53,156, 57,115,198,186,110,221,186,124,157, 78,247, 63, 74,233, 22, 31, -248,150, 18, 66, 54,119,238,220,121, 98,147, 38, 77, 94,254,224,131, 15, 36, 85,170, 84, 65, 94, 94, 30,130,131,131, 17, 17, 17, -129, 11, 23, 46, 96,253,250,245,182,204,204,204, 47, 0, 76,166,148,102,148,182,193,111, 54,155, 49, 96,192, 0, 8,130,128,185, -115,231,130, 16, 82,154,230,173,217,108, 54, 83, 0, 36, 51, 51, 19, 0,116,246,217,165,113,249,242,101, 0,184,145,152,152,232, - 15, 0,219,182,109, 35, 0,124, 93,210,135, 58, 91,182,170, 85,171,118,205,181,112, 20, 45, 89,162, 21, 12,222, 23,130, 54,244, -235,215, 47, 93,167,211,117,126,227,141, 55, 38, 46, 92,184,112,224,194,133, 11,239,186, 40, 32, 32, 96,249,236,217,179, 39,247, -235,215, 47,221,147, 53,203,110,193,123,111,200,144, 33,253, 78,157, 58,229,175, 84, 42,161,213,106,145,149,149, 5,179,217,140, -164,164, 36,164,167,167, 99,233,210,165, 5,122,189,254, 67,150, 29,255, 25, 56, 11, 3, 79, 86, 45,111, 34,171, 36,171,206,175, -191,254,234,118,142,170,210,114,186,138, 13, 95,231,182, 42,169, 81, 36, 78, 75,227,110,202,136,210,148,107,238,120,121,158,199, - 39,159,124,226,152,180,213,157, 37,171, 52, 22, 45,145, 51, 36, 36,164,200, 76,110, 95, 50,169,107,215,174,247,204,107, 95,142, -236, 21,167,103, 76, 27, 59,118,236,164,106,213,170, 85, 1,160,112,126, 7,108,145, 6, 6,134, 50, 22, 90, 54,155, 45,185,106, -213,170,197, 10, 56,111,139,153, 90, 44,150,100, 31, 51,247,102, 66, 72,210,236,217,179, 95,213,104, 52, 29,116, 58, 93,109,123, -193,113, 74,171,213,110, 51, 26,141,243, 74,179, 8,180, 93, 56,141, 38,132,204,237,220,185,243, 71,237,218,181,235,243,230,155, -111, 18, 74, 41, 22, 45, 90, 68,255,250,235,175,213, 0,222,165,148,254,117, 47, 47, 41, 36, 36,228,236,119,223,125, 23,249,243, -207, 63,195, 98,177, 96,222,188,121,240,247,247, 63, 91,138,240,165,243, 60,255,125,179,102,205,158,221,191,127,255, 82, 74,233, - 73,185, 92,190,164, 69,139, 22, 67,246,239,223,255, 35,165,244, 12,207,243, 75,154, 52,105, 50,228,240,225,195,171, 40,165,199, - 75, 17, 60,135,101,203,106,117,223,211,232,206,146,229, 5,249,195,134, 13, 51, 15, 27, 54,236,205,126,253,250,125,125,248,240, -225,198,185,185,185,181, 1, 32, 40, 40,232, 84,163, 70,141, 14,173, 92,185,242,130,221,146,101,240,246,109, 8, 33,189,106,215, -174,189,118,234,212,169,154,154, 53,107,242,149, 42, 85,194,245,235,215,113,250,244,105,235,183,223,126, 91,168,215,235,123, 80, - 74,115, 88,118,252,231,132, 22,165, 20, 65, 65, 65,197, 26, 81,226,144,255,210,118, 23, 58, 87,204,226, 82, 61,174,188,158, 56, - 75,154, 54, 65,132,159,159,159, 99,114, 83, 95, 92, 22, 4,161,228,249,216, 40,165, 14, 78,113,243, 65,100,121, 29, 33,104, 95, - 2,199,103, 78, 95,166,119,208,104, 52,176, 88, 44, 14, 94, 31, 70,126,146, 82,126,179, 95, 1,252, 90,169, 82,165,203, 0, 42, - 50,113,197,192,240, 0,133, 86,118,118,118,195, 7,249, 96,187,144,154,108,223,202,138,243, 47, 0,253, 8, 33,179,254,252,243, - 79,177, 31, 97,138,183,245, 18,189,225,252,249,243,221,164, 82,233,151,203,151, 47,111, 66, 41, 69, 96, 96,224,129,235,215,175, -191, 88, 26, 14,171,213, 58,140, 16, 50, 74, 28, 69,104, 50,153,134, 17, 66, 94,165,148, 22, 58,157,119,236,151, 54,234, 0,140, -148,210, 24, 15,231,141,165, 16, 89, 14,203, 22, 0,211,202,149, 43, 11, 1,156,192,223,243,100, 89,236,155, 1, 78,221,133, 94, -190,203,118, 66, 72,165,247,223,127,127,154, 68, 34,105,175,213,106, 99, 53, 26,205, 45,171,213,250,135, 78,167,123,151, 82,154, -197,178,226, 63, 7,147,201,116,187,106,213,170,188,187, 6, 84, 73, 21,121, 73, 13, 43,155,205,150, 92,185,114,101,175,141, 51, - 55,156,183, 75, 72, 71, 55,146,146,146, 56, 95,185, 68,152,205,230,244,146,194,153,148,148,132,210,114,122,139,123, 98, 98,162, -219,184,123, 17,132,183, 75, 40, 63,238,137,179,164,247, 89, 18,244,122,125, 78,120,120,120,161,193, 96,144, 26,141, 70,169,213, -106, 45,102,126, 84,169, 84, 25, 44,231, 48, 48,220,167,208,250, 55,195, 46,172,186,151, 33,159, 17,192,179,101,192, 99,112,217, - 47, 44,105,191,148,120, 16, 22, 33, 1,128,174,140,222, 97, 38,128, 23, 88,150,123,244,144,153,153,249, 68, 89,115,102,101,101, -149,121, 67, 45, 35, 35,163,233, 3,136,123,195,255, 42,103, 73,184,125,251,246, 19, 44,103, 48, 48,148, 13, 56,246, 10, 24, 24, - 24, 24, 24, 24, 24, 24, 30, 12, 8,128, 14,238, 78,148,102, 52, 1, 33,164, 67,105, 31,236,141,159,113, 50, 78,198,201, 56, 25, - 39,227,100,156,143, 31,167, 55,238,199,110, 52, 35,165,244,129,109, 0, 58, 48, 78,198,201, 56, 25, 39,227,100,156,140,147,113, -254, 87, 55,214,117,200,192,192,192,192,192,192,192,240,128,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12,255, - 70, 16, 66,170,148, 47, 95,254, 92,213,170, 85,111, 19, 66,134, 62,224,103, 13,106,218,180,105,150, 82,169,220, 66, 8,169,194, -222, 62, 3, 3, 3, 19, 90, 12, 12, 12,143,181,200,170, 93,187,246,158,243,231,207, 87,219,182,109, 91, 76,108,108,236,199, 15, -242,121, 13, 27, 54,156,185,123,247,238,144, 77,155, 54,117,140,138,138,218,117, 47, 98,139, 16, 82, 37, 62, 62,254, 92,213,170, - 85,147, 9, 33,131,202,248,125, 12,109,214,172, 89,182, 66,161,216,204,132, 32,195,127, 32,255,215, 34,132,212,102, 66,139,129, -129,129,225, 1,138,172,125,251,246,133, 26, 12, 6,156, 63,127, 30, 25, 25, 25,199, 31,228, 51, 47, 94,188,152,179,111,223, 62, -196,197,197,225,199, 31,127, 12, 79, 76, 76,220, 93, 26, 65, 35,134,249,220,185,115,213,182,109,219, 22, 27, 17, 17,241,105, 89, -134,175,113,227,198, 31,237,222,189, 59,120,203,150, 45,157,194,195,195,119, 49,177,197,240, 24,230,123, 5, 33,228, 89,142,227, - 14,213,170, 85,235, 84,205,154, 53, 79,114, 28,183,159, 16,210,151, 16,194,255, 39,223,137,184,196,194,198,141, 27,119, 2, 64, -215,174, 93, 91,179,164,194,192,192,112,159,133,109,205,154, 53,107, 30, 56,112,224,128, 90,175,215, 99,213,170, 85,248,224,131, - 15, 44,217,217,217,187, 1,104,221,220,114, 24,192,231,190, 44,189, 69, 8, 9, 0, 48, 10, 64, 35, 55,167, 53, 33, 33, 33, 45, - 39, 77,154, 36,125,242,201, 39, 97, 48, 24,208,187,119,111,195,197,139, 23,235, 81, 74, 47,250, 42, 12,245,122, 61,142, 28, 57, -130, 30, 61,122,108,177, 88, 44,157,203,234,189, 4, 6, 6,158,249,245,215, 95,107,196,196,196,224,234,213,171, 24, 50,100, 72, - 70, 90, 90, 90, 43,111, 97, 99, 96,248, 23,228,249, 4, 0, 47,251,249,249, 13,111,211,166, 77,112,143, 30, 61, 16, 26, 26, 10, -171,213,138, 91,183,110, 97,195,134, 13,216,183,111, 95,138,201,100,154, 15,224, 43, 74,105,174, 59,158,199, 81,139, 16, 74, 41, - 54,110,220, 72, 1,180,177, 71,110, 39, 75, 50, 12, 12, 12,247, 89,232,238,211,233,116, 77,117, 58, 29, 10, 10, 10, 80,174, 92, - 57, 72,165, 82,183,215,166,167,167, 99,239,222,189,120,229,149, 87,206,166,166,166,182, 42,105,221, 75, 66, 72,112,253,250,245, -247,109,223,190,189,138,191,191,191,227,184, 32, 8, 48,155,205,176, 88, 44, 48,155,205, 48, 26,141, 48, 26,141,144,203,229, 80, -169, 84, 8, 9, 9, 57, 77, 41,173,237,171,200, 58,118,236, 24, 6, 15, 30,156,145,149,149, 85,166, 34,136, 16, 82, 37, 34, 34, - 98,215,210,165, 75,195,147,146,146,112,243,230, 77, 60,255,252,243,153, 55,110,220,104,201,196, 22,195,191, 56,191,143,127,230, -153,103, 62,138,140,140,228,106,213,170,133,232,232,104, 24,141, 70,232,245,122, 80, 74,193,243, 60, 40,165,200,203,203,195,174, - 93,187,176,125,251,118, 99, 78, 78,206,119, 0,230, 81, 74, 47, 57,137,172,199, 82,139, 56,132, 86,215,174, 93, 9, 75, 46, 12, - 12, 12,101, 84,240,158,202,203,203,171,101, 52, 26,161,213,106,125,186,231,234,213,171, 24, 58,116,232,217,212,212,212,230,238, - 44, 91,132,144,128,250,245,235, 31,220,181,107, 87, 21,131,193,128,252,124,239,235,206,203,229,114, 40,149, 74,132,134,134,238, -167,148, 54,243,212, 18,175, 85,171,214,145,253,251,247,135,232,245,122, 28, 63,126, 28,131, 6, 13, 50,103,103,103,239,129,123, -235, 27, 0,100,163,104, 29,213, 27,110,248,226, 1,188, 10, 32,193,195,189,154,240,240,240, 22,203,150, 45,147, 85,168, 80, 1, - 58,157, 14,125,251,246,205,190,120,241, 98, 35, 74,233, 53,150,122, 24,254,133,249,253,226,249,243,231, 43,219,108, 54,100,102, -102,194,104, 52, 66,167,211, 57,132,150, 68, 34, 1,165, 20, 86,171,213,209, 48, 58,122,244, 40,182,109,219, 70,175, 94,189,250, - 1,165,116,138, 40,180, 30, 71, 45,194,179, 36,194,192,192,240, 0,208,175,113,227,198,199,127,255,253,119,165, 92, 46,199,250, -245,235, 61,118, 29, 70, 70, 70,214, 92,178,100, 73, 98, 82, 82, 18, 22, 44, 88, 80,163,119,239,222,163, 0, 76,115,195, 57,106, -251,246,237, 85, 12, 6, 3,142, 31, 63,142, 33, 67,134, 92, 75, 75, 75, 59,227, 42, 98, 18, 19, 19, 91,126,250,233,167,210, 6, - 13, 26, 32, 63, 63, 31, 29, 59,118,212, 1,120,185,132,176,142,222,177, 99, 71,136, 94,175, 71, 65, 65, 1,218,180,105,131,172, -172, 44, 25,128,118,158,110,208,235,245, 72, 72, 72,168, 2,224, 46,241, 22, 26, 26,250,205,205,155, 55,219,170, 84,170, 18, 95, -144,217,108, 70,114,114, 50,130,130,130,176, 97,195,134,144,138, 21, 43,190, 7, 96, 24, 75, 58, 12,255, 70,152, 76, 38,252,244, -211, 79,168, 95,191, 62,170, 87,175,142,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161, 81,163, 70,168, 92,185, 50, -121,253,245,215, 7, 1,152,242, 56,191, 27, 81,104, 77, 98, 62, 90, 12, 12, 12,101, 5, 74,233, 69, 66, 72,189, 14, 29, 58,236, - 94,189,122,117, 88,151, 46, 93, 80,177, 98, 69,233,211, 79, 63, 29,174,213,106,219,187,180,134,131,135, 12, 25,114,228,214,173, - 91,137,246, 67,141, 60,208, 54,242,247,247, 23,125,155,174,165,165,165, 53,116,237,102, 84, 40, 20,155, 79,156, 56, 33,149,203, -229, 56,124,248, 48,134, 14, 29,154,121,237,218, 53,111,221,114, 65, 38,147, 9, 18,137, 4, 0,144,156,156,236, 53,126, 55,111, -222,132, 32, 8, 70,119,231, 56,142, 83, 28, 61,122, 20, 49, 49, 49, 37,114,112, 28, 7,153, 76,230,124, 40,151,165, 28,134,127, - 41, 44, 38,147, 9, 13, 27, 54,196,181,107,215,112,244,232, 81,135,224,202,204,204, 68, 74, 74, 74,177,139, 15, 29, 58,132, 99, -199,142,161, 85,171, 86,174, 60,143,165, 22,225,237, 17,250,112,227,198,141, 76, 96, 49, 48, 48,148,181,216,106,217,189,123,247, - 93, 75,151, 46, 13, 47, 87,174, 28,252,253,253, 3,220, 92,151, 67, 8, 57, 35,149, 74, 19,125,229, 78, 75, 75, 59,227,206,151, - 43, 42, 42,170,158,201,100,194,177, 99,199, 48,104,208,160, 12,187,207,151, 55,223,167,169,237,219,183,239,190,101,203,150, 16, -165, 82,137, 51,103,206,248,210,117,120, 29,192, 60,119, 39, 50, 50, 50, 6,181,106,213,234,125, 0, 33, 30,238,213, 84,174, 92, -185,197,145, 35, 71,100,132, 16, 92,191,126, 29,125,251,246,205, 6,240, 25, 75, 53, 12,255, 82, 76,124,230,153,103,190, 29, 53, -106, 84, 96,147, 38, 77,144,156,156,236, 16, 92,245,234,213, 67,157, 58,117,240,215, 95,127, 97,243,230,205, 56,118,236, 24, 20, - 10, 5, 42, 86,172,136,194, 89,159, 2,159,194, 34,146, 60,174, 90,196, 49,234,144,129,129,129,225,129, 20, 50,132, 84,145,201, -100,115,195,195,195,235,222,190,125,251, 13, 74,233,143, 46,231,131,251,244,233,115,102,197,138, 21,209,215,175, 95, 71,133, 10, - 21,214, 83, 74,123,186,225, 89, 71, 41,237,113,245,234, 85, 52,111,222,220,173, 69,139, 16, 50, 52, 42, 42,106,114, 65, 65, 65, -158, 78,167,235,235,171,131, 57, 33,164, 74,165, 74,149,118,175, 95,191, 62, 76,173, 86,227,220,185,115, 15,204, 25,190,106,213, -170,123, 14, 29, 58, 20, 42,149, 74,113,248,240, 97, 12, 25, 50,132, 57,195, 51, 60, 14,249,220, 31,192,216,164,164,164,183, 70, -140, 24,161,168, 81,163, 6,146,147,147,145,145,145,129,156,156, 28, 28, 56,112, 0, 0, 16, 27, 27,139,216,216, 88, 92,184,112, - 1,123,247,238,205, 47, 44, 44, 28, 70, 41,253,249,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,125,250,244, -105,184,108,217,178,232,172,172, 44, 28, 60,120, 16,189,123,247,126,151, 82, 58,205,205,125,239,164,166,166,126, 4, 0,167, 79, -159,118,245,209,242,232,156, 94, 26, 17,148,144,144,176,123,213,170, 85, 97,161,161,161, 56,127,254, 60,250,246,237,123, 70,171, -213,214, 42,171,184,171,213,234, 45,169,169,169, 29,101, 50, 25,246,239,223,143, 65,131, 6,177,233, 29, 24, 30,183,252, 29, 1, -224,189, 26, 53,106,188, 60,124,248,112, 62, 62, 62, 30,183,111,223,198,159,127,254,137,138, 21, 43,226,214,173, 91,216,190,125, -187, 41, 35, 35, 99, 46,128, 25,148,210,188,199,254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,230,179,103, -207, 82, 17, 54,155,141,222,190,125,155,110,217,178,133, 70, 69, 69,157, 1, 16,224,142, 19, 64, 64,245,234,213,207, 95,184,112, -129,222,188,121,147,154,205,102, 7,199,249,243,231, 41,128,157,247, 27, 78, 0, 85, 98, 99, 99,211,119,236,216, 65, 47, 92,184, - 64,163,162,162,110,149,101,220, 19, 18, 18,210, 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84, 97,105,137,113, 62,142, -156,246,134,212,178, 6, 13, 26,216,230,207,159, 79, 95,126,249,101, 26, 31, 31,111, 3,240, 13,128,216, 7,169, 61, 30,181,141, -141, 58,100, 96, 96,120,216, 80, 28, 56,112, 0, 10,133,194,113,224,228,201,147,206,243,104,229,123,104, 20,230, 19, 66,154,119, -233,210,101,247,252,249,243,171, 91, 44, 14,215, 14,236,216,177, 3, 0,140,101,208,240,188, 72, 8,105,213,185,115,231,121,161, -161,161,117, 83, 83, 83, 39,150,101,196,175, 95,191,254, 70,237,218,181,167, 21, 20, 20,228,151,166,107,147,129,225, 95,104,196, -185, 14, 96, 48, 33,228,227,163, 71,143,190, 11,128, 2,152, 74, 41, 61,247, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,125,225, -133, 23, 92,157,197,125,154, 25,222,238, 56,223,172,107,215,174,174, 51,195,123,116, 78,191, 23,177, 5,160,211, 3,170,124,126, - 4,240, 35, 75, 2, 12,255, 33,193,117, 6, 64,255,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 0, 60,127, 31,247,231, -195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252, -187, 64, 0,116,112,119,130, 82,186,205,103, 18, 66, 58,148,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248, -113,122,227, 46,141,254,248, 87,192,199, 97,156,132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107, -194,137,251,143,248,116, 4,228, 81,141,251,127,133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132, - 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125, 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17, - 66,240,168,149, 37,101, 89,207, 61,136,184,255,151, 57, 31, 23,240, 37,189, 48,137, 68,178, 37, 44, 44,172,109,102,102,166, 96, - 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5, 5, 5, 1,247,240, 49,190,137,140,140, 28,154,149,149, 37,112, 28, 7,165, 82, - 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41, 9, 9, 9, 57,122,189,222,207,245,184, 82,169, 52,220,184,113,195,255,191, 80, - 80,202,100,178,103, 66, 66, 66,130, 50, 50, 50,168,184,248,173, 68, 34, 17, 23,194,181,230,230,230,126,239, 43, 95, 72, 72,200, -161,144,144,144, 32,241,126, 66, 8,178,178,178,114,211,210,210, 26, 3,128, 74,165,218,171,209,104, 66,121,158,135, 68, 34,129, - 68, 34,129, 78,167,203,202,204,204,108,206,170,173,127, 39, 86,175, 94, 45,233, 28,251,124, 69,158,234,235,112, 28, 13, 20, 4, -146,103, 37,170,147,155,111,127,115,197,151,251,251,244,233, 99, 99,111,241,225, 65,161, 80,204,141,140,140, 28, 94, 88, 88,168, - 35,132, 80, 66, 8,138,170, 1,220,245,107,179,217,146, 51, 51, 51, 27,122,169,108,165,114,185,124,118, 84, 84,212, 16,157, 78, -167,179,243, 81, 66, 8,162,163,163,139,241, 1,128,197, 98, 73,206,200,200,104,232, 75, 88, 35, 34, 34, 22,171, 84,170,255,233, -116, 58,173, 93, 24, 57,247,208, 56, 87,230,127,101,100,100,180,244, 38, 12,228,114,249,188,200,200,200,231,236,113, 7, 33,132, -134,135,135,223,119,220, 35, 35, 35,135,104,181,218, 98,113,143,136,136,112,203,233, 41,238,238, 56,157,195, 73, 8, 65,120,120, -248,125,135,243, 81,228,124,236,133, 22, 0,142, 16,178,174,121,243,230,109,118,238,220,201,157, 63,127,158,171, 86,173, 26,108, - 54, 27, 4,161, 40, 93,199,197,197,169,239,161, 2, 95,210,178,101,203, 1,187,118,237,226,214,173, 91,199, 53,106,212, 8,132, - 16,216,108, 54,216,108, 54,212,170, 85, 75,117,159, 2,193,143,231,249,215,229,114,121,107,171,213, 90, 29, 0,164, 82,233, 57, -163,209,184,211,106,181,206,161,148, 22,250,194, 99, 54,155,213,233,233,233,119,189,155,164,164, 36,249,189,134, 45, 32, 32, 96, - 31,199,113, 73,142, 23,108, 23, 28,238, 50,179,248, 75, 41,189,154,145,145,209,204, 19,103,112,112,176,131,211, 19,135,235, 49, - 65, 16,174,166,167,167, 55,243, 34,178,122,183,108,217, 50,112,219,182,109,228,214,173, 91, 68,165, 82, 65, 16, 4,216,108, 54, - 88, 44, 22,212,168, 81,163, 84,211,130, 4, 5, 5, 5,140, 31, 63,190,226, 83, 79, 61,133, 53,107,214,224,217,103,159, 69,139, - 22, 45, 46,137,231, 53, 26, 77,232,217,179,103, 43,135,132,132, 64,167,211, 33, 47, 47, 15, 29, 59,118,252,215,103,174, 38,245, -203, 77, 37, 28,113,204, 21, 69,173,182,236, 3, 39,110,191,119,191,188, 65, 65, 65,199,228,114,121,164,248, 93, 57,142,115,251, -173,157,143, 25, 12,134,180,204,204,204,250, 94,242, 79, 2,128,238, 18,137,164, 18,207,243, 85, 1, 36, 88,173,214, 72, 0,144, -201,100,105, 18,137,228,186,197, 98,185, 96, 50,153, 46, 3,248,213, 62, 33,161, 91,116,142,125,190, 34,177,234,250, 20, 24,133, - 46,234, 10, 51,170,232,254, 26,127, 81,173,208,253,214, 57,246,249,213,190,138,173,127,176,161, 81, 5,192, 74, 20, 45, 40,253, -178,125, 30,160,251,225,139, 5,208, 3, 64, 21,153, 76,150,104, 54,155, 51, 1, 28, 5,176,141, 82,122,137, 16, 18, 31, 30, 30, -254,163, 32, 8,198,172,172,172,231,221, 45, 35,212,180, 97,249, 35, 28,199,197,193, 46, 35, 4,106, 75,222,127,228, 86,153, 84, - 80, 18,137,100,222,211, 79, 63,253,220,234,213,171,213, 71,143, 30, 85, 87,175, 94,221, 81, 62, 9,130, 0, 87, 67, 68, 98, 98, -137,107,127, 19, 0, 60,199,113,115,251,244,233, 51,112,217,178,101,234, 27, 55,110,168, 99, 98, 98, 28,156,206, 34, 78, 68, 76, - 76,140, 79, 97, 13, 13, 13,253,230,169,167,158, 26,188,116,233, 82,233,250,245,235, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187, -235,218,230,205,155, 11, 94,232, 56,142,227,230,245,236,217,115,240,138, 21, 43,212, 7, 15, 30, 84,215,170, 85, 11, 18,137,228, -190,227,222,171, 87,175,129, 63,253,244,147,250,212,169, 83,234, 74,149, 42,129,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174, -156, 79,156, 61,122,244, 24,184,114,229, 74,245,177, 99,199,212, 85,171, 86,117,188, 79,167,110,187, 82,135,243, 17,231,124,124, -133,150,221,140,186,172,121,243,230,157,119,238,220, 41, 1,128, 99,199,142, 33, 59, 59, 27,177,177,177,240,243,243,131, 66,161, -128,193, 96,160,165, 44,108,190,177,139, 44, 41, 0,172,253, 95, 47, 92,149, 2,175,164,155, 32,147,201,240,215, 95,127, 65, 34, -145,208,251, 40,204, 90, 5, 4, 4, 44,253,249,231,159,131,235,215,175,207,101,102,102, 34, 49, 49, 17,217,217,217,141,119,237, -218,213,224,249,231,159,127,158, 16,242, 44,165,116,151,175,156,191,253,246, 27, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19, -185,231, 23,205,243,113,215,175, 95,143,240,243,243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,185,114,101,179,151, 2, 50, -238,198,141, 27, 17, 42,149, 10,148,210, 98,124, 54,155, 13, 10,133,194,185,229, 0,155,205,134,164,164, 36,179, 55, 75,150, 40, -178, 0, 96,249,242,229,136,138,138, 66, 68, 68, 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28,157, 59,119,198,135, 31,126, -136, 25, 51,102, 96,236,216,177,197, 10, 90,169, 84,138,144,144, 16,108,218,180, 9, 1, 1, 1,136,143,143,135, 84, 42,253,247, - 91, 6, 57, 18,178,255,200, 77,135,133,246,201,118,213,248, 38, 13,226, 23,218,191, 48, 56, 14, 16,132,162,170,147, 16, 80,171, - 69,200, 57,124,242,246, 68, 31,222,103,204,141, 27, 55, 34,156,103, 86, 47, 9, 54,155, 13,177,177,177, 18, 47,249,167, 75,205, -154, 53,215,142, 28, 57, 82, 86,169, 82, 37, 34,147,201,192,243, 60,120,158, 23,211, 99, 60,165, 52, 94, 16,132, 54,105,105,105, -116,193,130, 5, 31, 19, 66,158,166,148,254,230, 54,189, 83,125,157, 2,163,208,101,247,113, 52,238,211,225,109,108, 90, 53,190, -113,203,122, 2,252,213,250, 43, 0, 30, 89,161, 69, 8,169, 82,179,102,205,227, 7, 15, 30, 84,154,205,102, 52,105,210,228, 0, - 33,164,193,189,204,224, 78, 8, 9, 6,240,233,132, 9, 19, 6,143, 28, 57, 82, 18, 20, 20, 4,185, 92,142,130,130, 2, 92,185, -114,101,200,247,223,127, 79, 9, 33,159, 3,240,191,126,253,122,211, 67,135, 14,161,109,219,182,175, 2,120,253,110, 69, 32,137, -219,123,232, 90,132,184,223,163,115,109, 89,179, 70,241,105, 69, 13, 50,215,171, 41, 4,155,144,124,240,120,114, 67, 31,194,248, -241, 51,207, 60, 51,104,245,234,213,126, 0,176,104,209, 34, 60,243,204, 51, 8, 9, 9,129, 90,173,134, 76, 38,131, 84, 42, 45, -246,235,197, 66, 36, 1,240,113,255,254,253,251, 44, 91,182,204, 31, 0,150, 45, 91,134, 94,189,122, 33, 52, 52, 20,254,254,254, -144,203,229,144, 72, 36,165,254, 54,161,161,161,223,180,104,220,120,216,210,165, 75, 1, 0,239,190,246, 26,158,122,226, 9,248, -169, 85, 80,171,228, 16,223,133, 92, 34,197,147,175,140,241, 22,111, 14,192,172,103,158,121,166,223,138, 21, 43,252, 1,224,232, -209,163, 72, 79, 79, 71,100,100, 36, 84, 42, 21,228,114,185, 35,206,132, 16,168, 84, 42,159,226,254,204, 51,207,244,249,233,167, -159,252, 1, 96,201,146, 37,232,220,185,179, 35,238, 10,133, 2, 50,153,172,216,230, 42, 58,221,113, 62,253,244,211,125, 86,174, - 92,233, 15, 0,223,127,255, 61, 58,116,232,128,224,224, 96,199,251, 20,185, 74,243,141, 30,101,206,199, 90,104,137,190, 83,145, -145,145,253,118,239,222,205, 57,137, 4, 40, 20, 10, 40, 20, 10,200,229,114, 71,247, 97, 41, 10, 28, 18, 25, 25, 57,116,215,174, - 93,142,155, 76,244, 46,211,117,169, 43,112, 39,254, 14,109,219,182,253,105,195,134, 13, 74,153, 76, 6,189, 94,143, 51,103,206, - 32, 48, 48, 16,114,185, 28, 61,123,246,148, 52,111,222, 60,180, 77,155, 54,107, 8, 33, 3,125, 25,209, 64, 41,133,159,159, 95, - 49,161,117,191, 93,204, 42,149, 10,235,215,175,135, 68, 34,113, 91,128, 57,255,143,136,136,240, 37,222, 80, 40, 20,216,183,111, - 31, 36, 18, 9,164, 82, 41,120,158,135, 84, 42,197,198,141, 27,241,230,155,111, 34, 51, 51, 19,132, 16, 72,165, 82,248,251,123, -237,245, 36, 33, 33, 33, 65,162,200, 18, 69,144, 74,165,130, 84, 42, 37, 60,207, 19,177,107,143, 16, 66,124,237,115,231, 56, 14, - 63,252,240, 3,102,206,156,137,113,227,198, 97,241,226,197,168, 83,167,142,179, 8, 69,126,126, 62,130,131,131, 17, 28, 28, 12, -165, 82,121,207,105,225, 81,130,235,219,153, 61,103,190, 26, 2, 69,145, 19,136, 0, 8, 0, 5,133, 64, 5,164,221,190,130, 15, - 62,252,196,231,218, 71,161, 80, 96,239,222,189, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77, -250,229,151, 95,228, 63,252,240, 3, 86,172, 88,225, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,219,111, -191,149,213,169, 83,103, 18,128,223,220,127,115, 26,168,174, 48,163, 74,159, 14,111, 3, 0,250,188, 77,145,115,233,163,186, 92, -238,196,192, 71, 89,100,213,174, 93,123,207,190,125,251,148, 58,157, 14,130, 32,224,183,223,126, 83,119,232,208, 97, 55, 33,164, -101,105,197, 86, 66, 66,194,250,125,251,246, 53, 15, 15, 15, 71, 94, 94, 30,242,243,243, 97,177, 88, 32,145, 72, 16, 31, 31,143, -143, 63,254,152,244,236,217,115,244,144, 33, 67, 12, 42,149, 74,180,108, 36,120, 42,143,156,177,224,179,133, 65,148, 22,165, 31, - 42,208, 98,191,217,233,215,241,218, 27, 31,248, 20,198,114,229,202,189,188,102,205, 26, 63,103,203,146,179, 8,112, 46,163,196, -205,147, 48,176, 91, 53,184,242,229,203, 15,251,241,199, 31, 29,156, 97, 97, 97,142,114,137,231,121,112, 28,135,221,187,119, 99, -250,164, 9, 8, 14,143,193,252,207, 22,121, 13,103, 68, 68,196,226, 46, 93,186,252,111,201,146, 37,142, 99,181, 43, 84, 64,215, -230, 79, 32, 34, 44, 0, 97,193, 69,101, 27, 21, 8, 78, 94,184,230,181, 62, 2,192,149, 43, 87,238,249, 85,171, 86,249, 57, 55, - 8,197,184, 2,128, 78,167,115, 88,241, 77, 38, 19, 26, 54,108,232, 83,220,157, 57, 69,107,155, 40,218, 92,203,122,177, 33, 83, - 18,103,185,114,229,134,137, 66, 24, 0, 66, 66, 66,138,113, 72,165, 82,172,218,180,244,174,186,225,126, 57, 75,251,221, 93, 57, -175, 95,191,142,105,211,166, 57,202, 36,209,170, 71, 8, 65,108,108, 44,230,207,159, 95, 18,167, 59, 52, 2, 16,238,180,111, 2, - 32,119,250,205, 64,209, 10, 19,174,215,137,199,165, 0,234,218,207,217, 0, 20, 0, 8,114,195,231,137, 39, 19, 69,203, 8,133, -187, 92,239,250, 28,247, 66,107,227,198,141, 20, 0,214,175, 95,223,182, 71,143, 30,123, 51, 51, 51,133,243,231,207,115, 71,143, - 30,133, 84, 42, 69, 68, 68, 4, 26, 53,106, 36,118,171, 65, 42,149, 66,163,209,144,160,160,160, 52,177,226, 21, 95,162,115, 95, -187,147,160,225,178,179,179,133,173, 91,183,114,203,158,238, 4, 19, 5,234,189, 63, 29,157,187,117,195,230, 88, 57, 36, 0, 26, -159,207,132, 90,173,230,165, 82,169, 69,252, 24, 34,167,179,239,150,171, 72, 34,132,248,107, 52,154,111,127,253,245, 87, 37,199, -113, 40, 40, 40,128, 32, 8,104,222,188, 57, 56,142,195,233,211,167,241,238,187,239, 98,237,218,181,248,229,151, 95, 84,245,235, -215,255,150, 16, 82,157, 82, 90,224, 84,136,109,115,151, 72,253,253,253,161, 86,171, 29, 66, 75,140,179,179, 9, 92,188,158, 82, -122, 59, 51, 51,179, 65, 73,156, 54,155, 13,189,122,245, 2, 33, 4, 18,137,164, 88,225,227,252, 43,147,201,112,250,244,233,187, - 18,161, 59,129, 40, 8, 2, 90,180,104, 1, 0, 80,171,213,240,243,243, 19,215,125, 3, 0,212,171, 87, 15, 38,147, 9, 97, 97, - 97, 56,119,238,156,187, 2,188, 24,103, 70, 70, 6, 77, 73, 73, 33,203,150, 45,131, 84, 42, 69,104,104, 40,212,106, 53, 89,186, -116,233, 4,153, 76, 22,103, 48, 24, 4,147,201, 4,185, 92, 62, 95,180,110,241, 60,175,205,203,203, 11,245,196, 41,145, 72, 48, -114,228, 72,188,245,214, 91, 88,188,120, 49, 94,122,233,165,187, 44, 94, 6,131, 1, 97, 97, 97, 14,177,229, 75,220,239, 95, 8, - 61, 96, 78,129,226,204,177,205, 56,123,106, 27, 4,155, 0,155, 64, 65,169, 13,130, 21, 56,186,245, 64,229, 59, 87, 83, 98, 41, - 40, 96,239,224, 80,228, 21, 90,219,132, 41,170, 2, 88,183, 35,211, 56,215, 91,250,228,121, 30, 22,139, 5,191,254,250, 43,174, - 92,185,130, 45, 91,182, 64,175,215, 59,222, 99,211,166, 77, 49,108,216, 48,183, 66,203,149,147, 82,186,228,214,173, 91,245, 90, -180,104, 65,114,115,115,145,155,155, 11,189, 94, 15,155,205, 6,171,213, 10,158,231,161, 84, 42,161, 82,169, 16, 25, 25, 9,131, -193, 64,141, 70,227, 18, 79,156,130, 64,242,116,127,141,191,184,105,213,248,198,125,222,166, 88, 61,147,160, 98,121,133,238,143, - 35,254,195,214,237, 25,219, 17, 0, 21,236,218,129, 3,168,197, 38,100,190, 53,225,211,209, 15,253, 27,221, 45,178, 66,245,122, - 61, 10, 10,138,138, 7,185, 92,142,213,171, 87,135,117,239,222,125, 23, 33,164,149, 39,177,229,142,211,223,223, 63, 94, 34,145, -224,244,233,211,248,226,139, 47,240,199, 31,127, 32, 45, 45, 45, 39, 38, 38, 38,176, 77,155, 54,220,107,175,189,134,122,245,234, -225,187,239,190, 83,122,227,164,148,226,250,165,221,184,126,121, 15, 4,129, 58, 89,197,221,255,167, 62,198, 93,171,213, 26,142, - 31, 63,238,247,245,215, 95, 35, 34, 34, 2,137,137,137, 80,171,213, 80, 42,149,197, 42, 89,231,138,215, 91,222,212,235,245,134, -235,215,175,251,253,244,211, 79, 8, 13, 13, 69, 66, 66, 2,212,106, 53,228,114,185,163, 65,176,108,217, 50, 44,255,112, 16,174, - 95, 56,133, 94, 93, 59,122, 13,167, 90,173,254,223,146, 37, 75,138,153, 64, 34,131,131,193, 75, 57, 72,164, 4,193,237,159, 6, - 0,228,252,249,179,199,217, 33, 93, 56, 73, 65, 65,129,225,224,193,131,126, 71,142, 28,129, 32, 8, 72, 72, 72,128, 78,167, 67, - 64, 64,128, 35,254, 91,183,110, 69,207,158, 61,241,195, 15, 63,160,105,211,166, 94,227, 94, 88, 88,104, 56,117,234,148,223,143, - 63,254,136,144,144, 16,148, 43, 87,206, 17,119,113,147, 74,165,144, 72, 36, 72, 74, 74, 66, 94, 94, 30,252,252,252,188,126,163, -163, 71,143,250,253,248,227,143, 8, 14, 14, 70, 92, 92,156,195,226, 38,138,163,153, 11, 63, 44,198,161, 36,209,247,205, 89,218, -239,238,202,217,171, 87, 47, 84,172, 88, 17, 1, 1, 1,208,104, 52, 14,238,146, 56, 69, 45, 2,160, 77,215,174, 93,119,186,124, -194,112, 66,200, 6,167,231,119, 35,132,108,112,254,245,116,157,253,111,171, 9, 19, 38, 52,156, 49, 99,198,180,166, 77,155,254, -180,111,223,190,229,158,248, 60,241, 76,152, 48,161,230,140, 25, 51,166, 57, 95,239,230, 57,158, 45, 90, 93,187,118, 37,246, 72, -242, 0, 80,173, 90, 53,100,103,103, 67,161, 80,160, 81,163, 70,200,204,204,132,159,159, 31,100, 50, 25, 40,165, 24, 61,122,180, -100,236,216,177, 17, 28,199,193,106,181, 58, 10,126, 15,125,237, 2,199,113,104,214,172, 25,206,216,123,132, 58,119,235,134,184, -184, 56,136, 78, 30, 74,165, 18,163, 71,143, 38,111,190,249, 38, 47, 90, 51, 40,165,208,235,245,136,142,142, 86,149,208, 37,247, -218,154, 53,107, 2, 69,147,188,216,117, 38,145, 72,112,254,252,121,204,154, 53, 11, 67,134, 12,193,205,155, 55, 17, 19, 19,131, -183,222,122,203,111,198,140, 25,175, 1,152,236,173, 64,246,243,243,115,136, 44,181, 90,141,215, 94,123,141,111,222,188,121,132, -159,159, 31,252,253,253, 33,118, 3,218,108, 54, 84,168, 80,193,171, 52, 23, 4, 1,155, 55,111, 6,207,243, 94, 45, 90,246, 4, -232, 19,231,193,131, 7, 29, 34,205,185,149, 68, 8,193,153, 51,103, 28,162,206, 7, 78,202,113, 28, 52, 26, 13,162,162,162,160, - 82,169,160, 86,171,201, 79, 63,253,244, 94, 98, 98, 98,244,155,111,190,201,229,231,231,115,205,154, 53,195, 51,207, 60,195, 11, -130, 0,179,217,140,154, 53,107,122,181,188,237,220,185, 19, 95,124,241, 5, 94,122,233, 37,183, 22, 45,209, 89, 50, 32,224, 31, - 31, 11, 81,102, 16, 0,152,173, 22,232, 10,245,142,174, 93,155,205,134, 83, 59, 78, 84,190,122,226, 82,205, 13, 63,253, 32, 5, - 0,195,142,159,157,111,139,126,102,225,202, 42,109, 66,100, 7,119,100,155, 15,122,179, 20,142, 25, 51, 6, 19, 39, 78, 68,255, -254,253,177,117,235, 86,188,251,238,187,120,254,249,231,139, 89,180,124,129,197, 98,249,242,217,103,159,125,105,245,234,213, 85, -223,126,251,109, 78,180,104,169,213,106,209,199, 11, 70,163, 17,122,189, 30, 23, 46, 92, 16, 94,120,225,133,139, 38,147,233, 75, - 79,124, 86,162, 58,169, 86,232,126,171, 16,199, 85,212, 94,251,196,191,197, 19, 9,122,162,106,144,247,116,149, 14,180,203,208, -132, 96, 80, 10, 42, 0, 2, 5,140, 70, 45, 70,143,126, 85,242, 79,125, 39,103,145,101, 48, 24,112,252,248,113,180,109,219, 22, -183,110,221,194,185,115,231, 80,185,114,101, 44, 93,186, 52,124,224,192,129, 37,138, 45, 87,156, 58,117,106, 66,221,186,117,231, - 21, 22, 22,102, 23, 22, 22,206, 3,176,156, 82,154, 75, 8,169,126,229,202,149, 5,155, 55,111,110,249,193, 7, 31, 72, 92,124, -116, 36,158,204,163, 22,139, 21,122,189,177, 68,129, 37,238, 83, 42,248, 26,119, 90,181,106, 85,116,239,222, 29, 82,169,212,209, - 88,115,238, 54,115, 21, 92, 37,149, 31, 0, 4, 66, 8, 98, 98, 98,208,165, 75, 23,200,100,178, 98,156, 98,197,218,165, 75, 23, -140,153,252, 62,190, 28,211, 14, 95, 60, 91, 25, 29,166,166,149, 24, 78,157, 78, 87,184,125,251,118,213, 91, 47,189,132,186,149, - 42, 33, 44, 32, 0,229, 35,195,161, 82,200, 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,171, 86, 45,164,165, -165,225,218,181,107,184,118,237, 26, 56,142, 67,139, 22, 45, 28, 86,152,203,151, 47, 99,242,228,201, 48, 26,141, 62,199,189, 82, -165, 74,104,215,174, 29,228,114, 57,212,106,117,177, 46, 67,241,157, 22, 20, 20,160, 98,197,138, 88,183,110, 29,170, 84,169,226, -149,179, 90,181,106,104,221,186,117,177,247,169, 82,169, 28,245, 6, 0,220, 58, 88,232,120, 70,108,108,108,169, 56,183, 28,186, -137,175,183,110,135,209, 36, 32, 95,103, 41,118, 67,116, 88, 0,246,252,248,182, 79,113, 23, 57,191,250,234, 43,228,230,230, 58, -202, 32,209,104, 34, 26, 41,202,149, 43,135, 69,139,220, 91, 50,157,180, 8,241,240,253,186,249,216,160, 18,175, 19, 19,151, 98, -198,140, 25,211, 92,239,247,198,231,124,222,229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68, -204, 40,142,130,212,106,197,218,181,107, 17, 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 76, 70,145,139,208,166, 24, 25, -174, 3,232,154, 65, 29,126, 36, 54,155, 13,107,214,172,129,179,144,241,247,247, 47,177, 27, 73, 46,151,183,105,212,168, 17,103, - 52, 26,239, 18, 89, 51,102,204,192,192,129, 3, 81,165, 74, 21, 8,130,128,194,194, 66,180,109,219, 86, 58,127,254,252, 54,165, - 17, 90,106,117,145,223,191,201,100,194,142, 29, 59, 16, 28, 28,140,208,208, 80,132,132,132,192,223,223, 95, 28, 57, 73,189,137, - 13, 74, 41,122,245,234,229, 72,124,206, 86, 44, 87,209,181,111,223, 62,159,186,228, 40,165,120,226,137, 39,160,209,104,224,231, -231, 7, 63, 63, 63,108,222,188,217,113, 77,227,198,141, 33, 8, 2, 34, 34, 34,176,127,255,254, 18,187, 63, 41,165, 84, 38,147, - 57,174,151, 74,165,100,233,210,165, 19,146,146,146,162,223,120,227, 13, 78, 34,145,224,216,177, 99, 56,123,246, 44, 18, 18, 18, -124,246,217,202,205,205,189, 51, 97,194, 4,219,132, 9, 19, 0, 0, 53,107,214, 68,110,110,110,186,120, 62, 63, 63, 63,171, 83, -167, 78,197,252, 54, 50, 51, 51,179,254,245, 66, 75, 16, 96, 53, 91,161, 51, 24, 80, 88,160,115, 88,135,210, 83,210,130,222,126, -243,117,233,172,209,207, 1, 0,222,156,251, 25, 10, 22,255, 93,144,253,252,230,128,136,167, 63, 93, 49, 30, 64, 79, 47,149, 15, -140, 70, 35,226,227,227,113,232,208, 33, 20, 20, 20,160, 67,135, 14,197, 44,166,226, 59,245,102,162,167,148,154, 8, 33,205,187, -117,235,118,120,206,156, 57, 21,170, 87,175, 78,180, 90, 45,116, 58, 29,156,127, 79,157, 58, 69,151, 47, 95,126, 85,167,211, 53, -163,148,154, 60,241,109,190,253,205,149,206,177,207,175,254,227,152,164, 91, 68,197,139, 1,183,115, 42, 88,179,110, 43,180,249, -250, 11, 6, 27, 61, 11,106, 3,108, 16, 64,173, 2,108,246,110,175,127, 10, 42,149,106,193,158, 61,123, 66, 13, 6, 3,142, 30, - 61,138,193,131, 7,155, 50, 51, 51,229, 0,240,191,255,253,207,180,108,217, 50,121,197,138, 21,177,116,233,210,240,103,158,121, -102, 21,128, 90, 62, 22,244, 63, 0,248,193,245,120,104,104,232,252,155, 55,111,182,113,246,249, 17, 27,171, 0,220, 54, 42,169, - 0, 88, 44, 22,232,245, 70,228,229, 21,192,100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 65,237, -232, 66, 74, 41, 56, 66,114,143,156,186, 83,206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165, -248,225,135, 31,112,114,239,102,200, 37, 20, 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,187,134,142,213,188, 15,228, - 38,132,208,176,176, 48,116,109,218, 20,221,154, 54, 45, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124, - 75, 74,130, 24,206,200,200, 72, 28, 57,114, 4, 99,198,140,193,204,153, 51,161, 82,169, 28,163,159,207,159, 63,143,149, 43, 87, -162, 99,199,142,165,142,187,104,193, 27, 63,126, 60, 82, 82, 82, 48,119,238, 92, 52,104,208, 0, 82,169, 20,185,185,185,104,214, -172, 25,210,210,210,124,226,116,238,222,147,203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,174, 87, 52,214,239, 93, 14, 2, -130, 3, 63,190, 94,172, 46, 90,180, 98,119,169, 57, 39, 78,156, 88, 44,156,190, 88,179, 74,209, 48,218,224,139,216,114,186,238, -168,104,108, 29, 63,126,252, 59,132,144, 13,227,199,143,127,103,250,244,233,103,124,225,243,112,126,163,168, 11,157,142, 29,245, - 89,104, 81, 74,169, 92, 46,135, 32, 8,197,196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77, - 34,145, 96,255,254,253,216,191,127,127,177,227, 95,127,253,117,137, 21,185,213,106,173,238,239,239, 95,204,154, 37,147,201, 48, -126,252,120, 12, 30, 60,216, 33,178,100, 50, 25,190,255,254,123, 52,108,216, 16, 38,147,169,186, 23,127, 21, 93, 84, 84, 20, 39, - 22, 68, 26,141,134,140, 25, 51, 70, 98,181, 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,101,203, 22,159, 44, 90,190, -250, 40, 81, 74,113,226,196,137, 98,226, 77, 28, 53, 3, 0, 39, 78,156,112,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169, -136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18,137,196,241,189,157,125,246,188,197,253,246,237,219,109, 75, 58,159,158,158,254,216, - 78,227, 96,182, 88,160,215,153, 80, 80,168,199,164,233,223, 21, 29,156,132,131, 0, 14, 54,127,121, 12, 70,118,238,216,206,197, - 15,192,151,130,198, 81, 57,174, 89,179, 6, 82,169, 20,235,214,173, 67, 64, 64, 0,122,244,232,129,128,128, 0,188,253,246,219, -232,223,191,191,207, 22, 45,123, 90,202, 35,132, 52,127,237,181,215, 14,127,242,201, 39,229,203,149, 43, 7,147,201, 4,179,217, - 12,147,201,132, 43, 87,174, 96,249,242,229,183,116, 58, 93,115, 74,105,158, 55,190,205,183,191,185,178,118,215,155, 41, 29,250, - 63,163, 63,159,182, 9,169,169, 89,176, 90,111, 67,176, 89, 97,182, 22,141, 96,182, 89,173,176, 90,109,144,201, 36, 1,159,124, -244,250, 86, 1, 20, 28, 71, 76,125,250,244,121,234, 97,125,163,160,160,160,154, 25, 25, 25,184,116,233, 18,134, 12, 25,146,154, -149,149,117, 14, 64,123, 0,200,202,202,218, 51,120,240,224,234, 75,150, 44,137, 74, 76, 76,132,159,159, 95,128, 15,223,199, 15, -192, 72, 0,157,236,126, 32, 34,178, 1, 76, 9, 15, 15, 87, 28, 61,122,244, 46,235,255,174, 93,187, 0,224,160,123,147,129,221, -162,101, 48, 32, 35, 43, 7,195, 95,126,207, 97, 74, 0,104, 49,113, 65, 65, 49,226, 21, 40, 1, 32, 51,237, 10,158, 27, 62, 70, -225,173, 65,224,174, 34, 44,133,143,142,179,165,200,145, 70,253,252,252,138,186,223,214, 45,199,198, 79, 95, 6,108,102, 80,139, - 30, 48,235, 0,115, 33, 4,147, 14, 68,166, 2, 44,122,159,132,150,159,159, 31,252, 84, 42, 68, 4, 5, 21, 77, 2, 41,145, 64, - 42,229, 33, 88, 0, 98, 35, 14, 65, 42,216,124, 74,235, 52, 44, 44, 12,130, 32, 64,165, 82,225,250,245,235, 24, 57,114, 36,204, -102, 51,122,245,234, 5,147,201, 4,131,193, 0,189, 94,143,164,164, 36,232,116, 58,159,226, 46,150,243, 98,239,207,235,175,191, -142,134, 13, 27, 98,242,228,201, 24, 55,110, 28,146,146,146, 48, 98,196, 8, 44, 95,190, 28, 53,107,214, 44,145,215,249,125,138, -156,226,119,113,237,226, 3, 80,234,111,228,202, 89, 52, 62, 0,119,125,247, 87,159,109, 95,106,206, 25, 51,102, 32, 35, 35,227, - 46, 75,150,248, 63, 54, 54, 22, 11, 23, 46,188,215,174,127,209,122, 20,233,206, 32,230,198, 18,213, 8, 69,190, 83,198,233,211, -167,159,153, 62,125,122, 55, 66,200,134,233,211,167,119, 43,193,162,213,213,139,197,171, 43,138,124,178,124, 2,239,210, 55,218, -198,217, 82, 34, 86,164, 98,133,238, 92,200,171,213,106,172, 93,187, 22,226, 8, 16,231,107, 74, 18, 90,191,133,219, 77,199,118, - 75,150,243,126,247,238,221,145,152,152, 88,204,154,165, 82,169, 74, 76, 60,130, 32,224,198,141, 27, 56,115,230, 12,154, 52,105, -130,188,188, 60, 72, 57, 14,111,158, 58,133, 26,207, 62, 11,147,221, 66, 35,151,203,241,210, 75, 47,249,228,208,126,237,218,181, - 96,231,253,176,176,176,228,150, 45, 91,198, 30, 58,116,200,225, 32,111,239, 86,115, 8, 14, 95, 68, 12,165, 20,189,123,247, 46, -102,197,114, 22, 89,206,219,166, 77,155,124,234, 58,164,148,162,101,203,150, 14,107,150,191,191, 63,126,249,229, 23,199,183,106, -213,170, 85,145, 63, 67,100,164, 79,156, 98, 60,236, 14,240, 48, 24, 12, 66, 65, 65, 1,119,244,232, 81,200,229,114,135, 5, 79, -165, 82, 65,169, 84, 66,161, 80,220,211, 8,162,255, 2, 40, 21, 96,178, 88,160,215,235, 81, 88, 88, 52,179,200,149,211,107,138, - 11, 49, 99,254, 61,243,139, 86,171,130,130, 2,252,241,199, 31,248,249,231,159,209,160, 65,131,187,156,225,125,177,104, 57,165, -167, 12, 66, 72,139,177, 99,199, 30,152, 58,117,106, 76, 72, 72, 8,204,102, 51,110,222,188,137,111,191,253, 54, 69,167,211,181, -160,148,102,248,254, 18, 0,139,197, 10,131,206,136,188,252, 2,124,248,209,247, 30,147, 30, 0,100,167, 95, 64,247, 30,125,229, - 15,243, 59,165,164,164,188,209,162, 69,139,143, 10, 10, 10,114,117, 58, 93, 95, 0,179,156, 13,135, 89, 89, 89, 45,123,244,232, - 49, 39, 36, 36,164, 65,122,122,250, 59, 62, 80,142,191,126,253,250, 59,241,241,241,197, 14,218,173,143, 85,210,211,211, 7,181, -106,213,234,125, 0, 33, 78,167,253, 1,108, 1,176,208, 83, 90, 18,187, 14, 11, 11,245, 8, 8,138,198,237,107, 59,189, 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,247,179,120,106,228, 12,168,165, -192,180,231,154, 35, 41, 8,128, 42, 4,178, 86,111,131, 4,217,223,209,200, 95,125,226, 31,247,197, 23, 56,118,169,104,102,152, -184,240,112,140,237,223, 31,212, 2,236, 59,123, 22, 43,182,111, 71,255,182,109,161, 86, 42,125,110,176,136,141,240, 43, 87,174, - 96,223,190,125,168, 86,173, 26, 46, 95,190, 92,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106, -106, 42,186,117,235,230,104,232,239,220,185, 19, 99,199,142,197,176, 97,195,208,166, 77, 27,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,157, 58,213,237,128, 10, 95, 56,157,181, 72, 9, - 56,234, 98, 77,130,232, 47, 37, 10, 35,215,125, 0,193,226,177,241,227,199,191,227,235,125,206,251,162, 69,172, 52, 93,152, 14, -161,213,181,107, 87,226,174,178, 21,205,200,238,160,209,104, 48,106,212, 40, 76,156, 56, 17, 97, 97, 97, 94,125,107, 68, 37, 91, - 18,126,253,245,238,204,182,110,221, 58,111, 93,135,231, 3, 3, 3, 27,182,109,219, 22,121,121,121,184,117,235, 22, 52, 26, 13, -106,124,250, 41, 78,141, 28,137,186, 95,124, 1,174, 93, 59,199,100,171,167, 78,157,130, 74,165, 58, 95, 90, 11,130,191,191, 63, -130,131,131, 29,125,238,162,224,114,178,104, 81, 31, 18, 35,126,251,237, 55,183,173,198,123,241,209, 18, 11,129, 3, 7, 14, 20, -243,207,114, 22, 62, 7, 14, 28,112, 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,210,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172,198,255, -234,174, 67, 80, 88,205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,118,237, 90, 60,241,196, 19,119,137, 44,241, 93,223, - 67,139, 49,153, 16,210,102,222,188,121, 7,103,207,158, 29, 92, 88, 88,136,239,190,251, 46,175,176,176,176, 13,165, 52,185, 84, - 92, 2,133,197,108,134,206, 96,132,182,176,232, 29,252,117,102,205, 35, 38,136,233,114, 0,203, 93, 45,134, 78,231,255, 2,208, -173, 20,148, 79,196,199,199, 35, 53, 53,181,216,193, 27, 55,110,192,102,179, 25,237,243,100, 61,239,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,209, -163, 71,227,212,201,147,104, 31,147,143,164, 40,127,208,252,219,144,181,251, 0, 39, 50, 84,152, 53,231,183, 82,115,175,116, 26, -236, 51,107,229, 74,183,231,254,234,217,179, 84,113,191,120,241, 34, 84, 42, 21,108, 54,219, 93,245, 77,105,227,239, 44, 96,230, -204,153,131,177, 99,199,226,251,239,191,199,169, 83,167, 80,183,110, 93,116,232,208, 1,233,233,233, 56,121,242, 36,140, 70,163, -207,225,116,246,155,187,120,245, 44,182,237,251, 29, 55,146,175, 33, 37,245,214, 61,127,119,103, 78, 87,161,181,118,219,113,244, -238, 88,255,158, 56, 63,252,240, 67,164,167,167, 23,179,100, 57, 15, 32,243,100,209,114,213, 34, 46,200,116,241,133, 18,247, 77, - 46,162,199,117,223,245,122, 0, 72, 7, 32,241,114,159,235,126,230,244,233,211,119,136,150, 48, 59,175,196,155,127,150,219,174, - 67, 81, 20,137, 25,197,213, 82, 37,254,215,104, 52,240,247,247,135,191,191, 63, 2, 2, 2,188, 90,138, 68,161,213,242,106, 65, - 49, 95, 47,209,178, 5, 0,195,134, 13,187,203,162,229, 60,177,167, 59, 24,141,198,157, 59,119,238,172,215,189,123,119,201,249, -243,231, 33,145, 72, 32, 8, 2, 76, 77,155,162,238, 23, 95,224,244,235,175,163,245,245,235, 48,152,205, 80, 42,149,216,188,121, -179, 89,167,211,237, 44,109,185,225, 44,180, 52, 26, 13, 2, 3, 3, 29, 66,195, 23,149, 46,102,222,146,252, 31,196,205,121, 48, -128, 47,153, 90,172, 80,157,253,114, 8, 33,208,235,245, 14,167, 78, 95,172,142,206, 93,135,206, 25,144,227, 56, 4, 5, 5, 57, - 10, 15,209,162,229,171, 53,207,219,132,164,106,181, 58,224,194,133, 11, 21,197,233, 39, 50, 51, 51,209,174, 93,187, 75,255,122, -147,150, 0,152,173, 54, 20,234, 13, 40,212,235,202,140, 86, 76,107, 63,252,240, 3,174, 92,185, 2,179,217,140,233,211,167,223, - 37,176, 74,227, 12,239, 38, 93, 93,169, 95,191,190,240,228,147, 79,226,192,129, 3, 80, 40, 20, 22, 74,105,169,231,191, 18,168, - 0,179,213, 10,131, 94,143, 66,173,246,191, 98,204,116,168,234,115,231,206,193,100, 50, 97,242,228,201,182,195,135, 15,239, 0, -240,178,253, 27,114, 0, 6,181,110,221,122, 74,215,174, 93,131, 8, 33,175, 82, 74,191, 47, 41,159, 91,172,118,209, 94,134,239, - 81, 76, 75,158,202,164,123,153,102,197,185, 98, 21, 4, 1, 47,190,240, 2, 58,196,228,227,233, 6,225,208,222,185, 4,117, 96, - 56, 72, 80, 2,102,205,249, 13,103,174,250,236,138, 73, 1,224,201,214, 61, 81,167,218,221,211,131,181,104, 95,212, 38,219,243, -199, 33,164,101,166,148, 58,238, 90,173,214,163,229,202, 87,139,150,200, 41, 78,179, 34,149, 74, 81,175, 94, 61, 84,174, 92, 25, - 59,118,236, 64,253,250,245,113,249,242,101, 92,190,124, 25,215,175, 95,199,169, 83,167,144,147,147, 83,234,111,244,203,150, 21, -200, 41,200,134, 92, 38, 71,118,110, 38,110,220,190,134,200,208,168,251,254,238, 34,170,118,253, 16, 0, 16, 19, 30, 88, 42,161, -229,204,249,241,199, 31,223, 37,222,203, 96,202,158, 67, 94,246, 75,123,255, 67, 3,239,193, 74,164, 15, 9, 9, 81, 57,247,175, -114, 28,135,192,192, 64, 50,115,230, 76, 9,199,113,240,247,247, 71, 96, 96, 32, 68,115,161, 55,200,229,114,125, 66, 66,130, 74, - 76,136, 98, 70, 12, 8, 8,144,204,156, 57,147,124,253,245,215, 30,173, 92, 94,124,180,102, 15, 30, 60,248,249,228,228,228,224, -136,136, 8,220,185,115, 7,114,185,188, 40,115,180,109,139,150, 87,175,194, 92,228,115,132,139, 23, 47,226,203, 47,191,212, 26, -141,198,217,165,125, 81,126,126,126, 8, 13, 13,117,116, 25,138, 22, 29, 39,209,232,147, 11,102, 73, 38,122,177, 5,120, 47, 93, - 72,174, 98,235,229,151, 95, 46, 38,186,124,133, 76, 38,179,138, 51,191,115, 28, 7,179,217,140,250,245,235, 35, 61, 61,221,145, -105,156, 45,121,190, 8, 45,111, 19,146,242, 60, 15,147,201,132, 86,173, 90,129, 16,130,207, 62,251,236,241,232,142, 20, 4,226, -231, 23,138,152,152, 42, 8,143, 48, 64, 16,202,110, 85, 25,171,213,138, 17, 35, 70, 20,179, 96,137, 35, 27,197,174,127, 74, 41, - 44, 22,203, 61, 79,254, 42,230,235,251,153, 63,142, 2,142, 46, 47,173,214,240,175,251,132, 17, 17, 17, 77, 8, 33,235, 92, 14, -103, 3,152,226,110, 6,119, 59, 28, 31,250,214,173, 91,232,220,185, 51,126,255,253,119,201,207, 63,255,220,126,253,250,245,103, - 43, 86,172,120,171, 95,191,126,229, 94,122,233, 37, 69,171, 86,173,144,153,153,137, 6, 13, 26, 76, 2, 80,130,208,178,191, 71, -131, 17, 90,109,217, 91, 71, 75,106,240,221,143,128,155, 56,241,125,116,136,206, 69,175,186,129, 88,178, 97, 47, 6,213, 83, 1, - 38, 69,169,249,196,176,132,196, 36, 34,161,102,147,187,206, 43, 2,138,186,236, 18,106, 54, 1,119,235,114,169,227,238, 28,102, -215,242,242, 94, 44,122,206,239,115,248,240,225,120,251,237,183,209,169, 83, 39, 92,190,124, 25,187,118,237,194,229,203,151, 49, -102,204, 24,212,172, 89, 19,117,235,214, 45, 21,231,250,109,171,145, 95,152, 7,142,112,200,206,203,130,193,168,199,184, 17, 19, -239,251,187,139,184,182,109, 58, 0, 96,205,214, 99,247,204,249,238,187,239, 34, 53, 53,181,152, 37,235,126,252,178,254,237,112, - 43,180,178,178,178,220,246, 3,134,135,135,167,117,236,216, 49,226,206,157, 59,240,243,243,243, 42,178, 8, 33, 29,196,185, 54, - 82, 83, 83,221,114,250,251,251,155, 59,118,236, 40,141,142,142, 46, 54,218, 80,163,209,220,149,201, 92, 57,237,149, 64, 1, 33, -228,197,230,205,155, 47,217,180,105,147,186,114,229,202,200,207,207, 7,165, 20,223,127,255, 61, 70,143, 30, 13,165, 82,137,139, - 23, 47,162, 71,143, 30, 58,157, 78,247,162,243, 28, 90,238, 56, 61,181,208,196, 89,241,221,136,172, 18,227,238,156, 89,231,205, -155,135,105,211,166,225,157,119, 74,118,245, 88,188,120, 49,224,210,205,231,142,147, 82,138, 89,179,102,149, 25,103, 86, 86,214, -247, 46,214,168,207,158,126,250,105,254,214,173, 91,197,196,149,243,230,166, 96, 42,198,233,109, 66, 82,137, 68,130,200,200, 72, - 76,157, 58, 21,161,161,161,136,138,138,186,203, 18,227,237, 27,221, 99,101,240, 64, 57,109, 84, 56,250,201,140,247, 91,124,183, -108,189, 84, 33, 7,246,239, 90,131,252,156,226,221, 73, 70,243,223, 67,169,229,245,219,195,116,236, 15,159,194,105, 52, 26,241, -241,199, 31,227,195, 15, 63,196,135, 31,126,232,203,119,191,175,184,251, 34,182,220,114, 10,148,168, 53,193, 80,106, 98, 80,163, -102, 48, 4,106,125,164,190,145, 7, 28, 62,116,232, 80,143,208,208, 80, 36, 39, 39,135, 75,165,210, 30,197,204, 85,122, 61, 18, - 18, 18,170, 0,104,230,141,115,204,152, 49,198,247,222,123, 79, 49, 96,192, 0, 60,253,244,211, 24, 48, 96,128, 66, 38,147, 85, -162,148,194,108, 54, 35, 57, 57, 25,127,252,241, 7, 50, 50, 50,206,151, 20, 78,129, 82,162, 82, 7, 65,169,137, 70,141, 90, 65, - 16, 4,107,153,196, 93,172, 4, 93,173, 89,165,156,144,218,109, 89, 7, 0,135,255, 88,135,137,175,215,194,247, 27, 15, 98,254, - 33,160, 78, 80, 58,106,132,103, 64,200, 56,143,183, 6, 53,196,172, 31,143, 0, 0,118,237,244,250,141, 74,156, 31,217,160, 55, -223, 87,220,157, 45, 87,206,207,241,230,163,229,142, 83,108, 36, 22, 20, 20, 32, 55, 55, 23, 75,150, 44,193,115,207, 61,135,244, -244,116, 92,191,126, 29,151, 46, 93,194, 79, 63,253,228, 24,205, 94,218,111,244,230, 11,239,226,189, 89,111,128,130,162,106,197, - 26, 24, 63,242, 67, 52,170,211,244,190,191,187, 43,188, 89,179, 74,226,156, 59,119,238, 61,165,165,255,148,208, 42,169, 85,193, -113, 28,194,194,194, 28,137,196, 57, 1,222, 75,203, 87, 34,145,192,106,181, 58,124,127,196, 13, 0,186,119,239,142, 95,127,253, -213,151,145, 20,155, 8, 33,255,171, 94,189,250,183,147, 38, 77,242,107,221,186, 53, 31, 19, 19,131, 70,141, 26,225,226,197,139, -216,184,113,163,101,225,194,133, 90,157, 78, 55,140, 82,186,245, 94,202, 39,113, 73, 27,231,173, 52,173, 30,179,217,124,235,242, -229,203,209,179,102,205,146,112, 28,135,185,115,231, 58, 50,165, 56,225,171, 51,118,237,218,101, 21, 4,161,196,174, 26,139,197, -114,235,242,229,203,209,159,126,250,169,132, 16,226,224,228, 56, 14,206, 11, 56,151,134,211,157,200, 20, 7, 70,184,219,220,133, -221,221, 55, 46,105, 66, 82,158,231,113,241,226, 69, 76,156, 56, 17,132, 16,172, 89,179,230,177,200, 92,167,206,103,126, 93,183, - 70, 68,112,247,167, 90,212, 6, 33, 48,155,238,158, 13,193, 47,167,208, 33,178,158,254,116, 5,126,126,179,191, 47,162,231,202, -158, 61,123, 66, 62,254,248, 99, 94, 34,145, 96,206,156, 57,197, 38, 13,118,253,238,187,119,239,182,222, 75,183,159,152,159,205, -102, 51,244,250,123,179,162, 80, 74,247, 77,255,232,189,142, 75,127,248, 77, 74,136, 9,251,119,174, 65, 94,174,123,119, 6,185, -148,199,215, 75,214, 90,101, 82,201,173,127,248,211,125,222,171, 87,175, 1, 11, 22, 44,168,225,238,228,173, 91,183, 32, 8, 66, - 73,206, 53,215, 13, 6, 3,110,223,190, 13,157, 78,183,122,194,132, 9,230,223,126,251,237,249,103,158,121, 6,117,235,214, 69, -116,116, 52,238,220,185,131, 43, 87,174, 96,201,146, 37,116,239,222,189,171, 1,140,242,242, 30,215,205,248,232,189, 33, 75,126, -252, 77,206, 17, 51,246,239, 90,131, 60, 23,209,126,183,117, 90,138,111,190, 95,107,150,201,164, 23,188,149,235,206,214,172,178, -172, 24,123, 12, 30,137,167,231,205, 71,133, 70,157, 49, 99,102, 7,124,243, 81, 95,204,126, 82, 6,243,170, 65,168,211,103, 41, -150, 79,238, 2, 0,136,249,198, 71,107, 9, 47,195, 77, 55, 22,171,220, 60,165, 93,220,148,206,106, 42,198,189,164, 50,188,180, - 22, 45,142,227,144,152,152,136, 10, 21, 42,160,121,243,230,168, 95,191, 62,218,182,109,139,147, 39, 79,226,228,201,147, 24, 51, -102,140, 71,145,229,203, 55,106,211,172, 35, 14,182,188,112,223,223,198,245,187,151, 5,124, 73, 75, 35, 71,142, 4,128,255,148, -117,139,191,151,151, 40, 38,204,251, 93,146, 70,228, 52,153, 76,142, 46, 57,231,121,153, 68,231,120, 31, 71,244,109, 37,132,212, -124,255,253,247, 95, 87, 42,149,109,117, 58, 93, 21,187, 69,230,162,209,104,220,174,215,235,231, 80, 74,115,239, 39,172,206,211, - 57,184, 11, 66, 73,247,230,228,228,116,238,220,185,243, 86,158,231, 19, 93, 23,252,117,151,145, 5, 65,184,158,150,150, 86,226, - 16,247,172,172,172,206,157, 58,117,114,203,233,174,128,240,133,211,221,247, 17, 4,193,163,200,242,165, 32,242, 54, 33, 41,207, -243,208,104, 52,248,229,151, 95, 16, 22, 22,246, 88,101,176, 19,103,211, 63, 46,233,124,155, 48,197, 78, 0,225, 79,127,186,226, -230,142, 76, 83,124,155, 48,249,141,159,223,236, 95,190,164,123, 50, 51, 51, 59, 61,247,220,115,191,243, 60,159,232,250,254,221, -125, 11,171,213,122, 45, 53, 53,181,212,211, 37, 80, 74,113,225,194, 5, 97,248,240,225,153, 25, 25, 25,125,239, 37,254,227, 39, -206,159, 61,109,210,232,208, 39, 59, 54,105, 4, 14, 48,121,118,254,165, 4,160,188, 84,114,107,236, 59,115, 95,248, 39,191, 25, -165, 52,159, 16,210,188,119,239,222,163, 80, 52, 52,252, 46, 33, 5, 96, 94, 9, 20,243,202,149, 43, 87, 75, 34,145, 40, 0, 76, -164,148,222, 32,132,124,190,119,239,222, 78, 0,158,144, 72, 36,209, 54,155,237, 54,138,214,124, 92, 65, 41, 61,225, 61, 29,165, -189, 84,183,122,120,220,147, 29,158,232, 12, 66,168,201,100,244,210, 64, 2, 5,165, 84, 38,147, 94, 56,116, 34,165,142, 55,107, -189,125, 5,142, 50,239,178, 31, 53,106, 20, 70,141, 26,229, 72, 79,159,125,214, 18,171, 79,239, 65,159, 58,201, 48,126,217, 2, - 36,160,188,207, 13, 62, 0,120,247,253,225,101,105,217, 44, 54, 72,171,172,124,180, 36, 18, 9, 50, 51, 51,113,241,226, 69,164, -165,165, 65,167,211,225,220,185,115, 48,155,205,200,201,201, 65,173, 90,181,238, 57,156,101,245,141,254, 73,206,255, 98,247, 97, -169,132,150,213,106, 77,246,182,202,186,197, 98, 41,213,168, 36,169, 84,106,168, 92,185, 50,113, 55, 58, 65,252,175,209,104,244, - 62, 22,144,185, 0, 38, 2,152,104, 95,207, 10,217,217,217,247,173, 6,109, 54, 91, 74,124,124,188,196,147,128,177,191,155, 52, - 47, 97,211, 2,104, 90,198, 21, 66,153,115,186,249, 62,218,106,213,170, 57,124,189, 92,231, 68,177, 47,182, 90,162,119,174,183, - 9, 73,181, 90,237,157,206,157, 59,219,156,207, 59, 79,104,250, 88,131,208, 27, 93, 6, 60, 31,191, 35,211, 20, 15, 0,162,216, -130,103,255, 31, 80, 74,245, 0, 90, 63,232,160, 93,189,122,213,244,196, 19, 79,252, 80, 80, 80, 48,146, 82,122,207,222,252,239, -124,240,217, 59,255,182,207, 66, 41,205, 7, 48,237, 30,239,189, 1,160,157,203,177, 19, 0, 78,220, 79,152, 78,156,203, 40,243, -185,197,172, 86,107,114,133, 10, 21, 74,101,185,241, 86,198, 91, 44,150, 18,235,137, 51, 8,196, 59, 7,128,162,101,226,178,124, -226, 52, 24, 12,217, 77,155, 54,149,150, 50,110,233,190,198, 61, 58, 58, 26, 49, 49, 49,142, 95, 17,174,199,189,133,211,106,181, - 38,199,197,197, 33, 44, 44,204,227,140,239,174, 62, 89,190,112,150,245, 55, 42,137, 51, 38,102,105,153,115,150,149, 94,248, 79, - 8, 45,113, 13,195,178, 68, 90, 90,218, 3, 89,115,133,150,133,185,237,111,203, 81, 35,252, 71,145,149,149, 21,122,191, 28,222, - 38, 36, 77, 75, 75,107,251, 95,125,191, 59, 50, 76, 67,239, 58,102, 23, 93,255, 52,180, 90,109,121,111,211, 14,120, 66,159, 62, -125,108, 96,120,228,145,153,153, 89,230,101,250,131,168, 39,178,179,179,107,255, 87,227,254, 32,194,249,111,225,124, 92,192,188, -212, 24, 24, 24, 60, 53, 86,152, 88, 98, 96, 96, 96,184, 79, 16, 0, 29, 60, 20,178, 62,143,244, 33,132,116,184,135, 66,124, 27, -227,100,156,140,147,113, 50, 78,198,201, 56,255, 91,156,222,184,203,122,164,241,163,208,106,125, 96, 27,128, 14,140,147,113, 50, - 78,198,201, 56, 25, 39,227,100,156,255,213,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 60, 32, 48,161,197,192,192,192,192,192, -192,192,192,132, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 90, 12, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, - 48, 48, 60, 56,144, 50,156,215,147,129,129,129,129,129,129,129,129,193, 9, 60, 0,108,220,184,209,161,182,186,118,237, 74,216, -107, 97, 96, 96, 96, 96, 96, 96,120,152,120, 92,181, 8,207, 4, 22, 3, 3, 3, 3, 3, 3,195,163,128,199, 81,139,112,238,148, - 36, 3, 3, 3, 3, 3, 3, 3,195,195,198,227,168, 69,184,199, 89, 69, 50, 48, 48, 48, 48, 48, 48,252,123,240,216, 91,180,152, - 85,139,129,129,129,129,129,129,225,159,194,191, 85,139, 16, 66, 40, 33,132, 58,239, 59,254,179, 81,135, 12, 12, 12, 12, 12, 12, - 12, 12,247, 38,176, 40,165,196,211, 47,192,230,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 39,136, 98,202,121,223,217,154,245,192, -133, 22, 33,164, 3,227,100,156,140,147,113, 50, 78,198,201, 56, 25,231,127, 69,112, 81, 74,137,243, 62,207, 94, 15, 3, 3, 3, - 3, 3, 3, 3,195,125,139, 79,234, 78,120, 49,161,197,192,192,192,192,192,192,192,112,159, 34,203, 89, 92, 49, 31, 45, 6, 6, - 6, 6, 6, 6, 6,134,135, 0,102,209, 98, 96, 96, 96, 96, 96, 96, 96,184, 15,184, 58,193,179,174, 67, 6, 6, 6, 6, 6, 6, - 6,134, 50, 22, 91,238,142, 19, 0, 29, 60,220,176,205, 87,242,123, 25,125,224,141,159,113, 50, 78,198,201, 56, 25, 39,227,100, -156,143, 31,167, 55,238,210,232,143, 71, 5,132,144,214, 0,118, 0,104, 99,255,253, 91,120, 81, 74, 31,216, 6,160, 3,227,100, -156,140,147,113, 50, 78,198,201, 56, 25,231,227,188, 21,201,169,191,127,157, 55,230, 12,207,224, 77,165,243,132, 16,254, 94,207, - 63, 44, 78, 6, 6, 6, 6, 6,134,127,184,190,164,226,175,179,191, 22,239,225,226, 74, 0,222, 1, 16,232,116,248, 16,165,116, -186,203,117, 63, 2, 80, 59, 29,210, 2,152, 76, 41,189,236, 67,152,100,118,126,133,125, 19, 0, 24, 0, 24, 1, 20, 0,176,176, -207,246,143, 39,154,166, 0,186,217,255,111,160,148,238, 47,205,249,135,197,249,176, 16, 19, 19,163, 10, 14, 14,238,116,236,216, - 49,249,185,115,231,176,123,247,110,250,245,215, 95,155,115,114,114,182,164,164,164,232, 89,138,121, 44,210,124,103, 0,227,237, -187, 51, 40,165,155,239,147,143,168,213,234, 49, 26,141,166,139, 66,161,136,177, 90,173, 68,167,211,165,104,181,218,173, 86,171, -245, 83, 74,169,112, 15,156, 61, 67, 66, 66,158,175, 90,181,106,165,235,215,175,223, 78, 73, 73,249, 17,192, 42, 0,125, 99, 98, - 98, 6, 37, 36, 36,196, 94,184,112,225,114,118,118,246, 55,148,210,117,255, 84, 56, 25, 24,254, 75,240,228,159,229, 81,104, 1, -152, 72, 41, 29,228,146, 17,239,186,168, 93,187,118, 61,182,108,217,162, 22, 4, 1,226,166, 82,169,172, 0,134,122, 9, 83,232, -190,125,251,226, 71,142, 28,249,116, 74, 74, 74,195,130,130,130,198, 0,160, 86,171, 15, 70, 68, 68, 28,158, 55,111,222, 79,157, - 58,117, 74,182, 11,174, 82, 89, 74,164, 82,233,115,193,193,193, 93,172, 86,107,125, 74, 41,164, 82,233,177,156,156,156,205, 22, -139,229, 27, 74,105,169,197, 27, 33, 68,206,243,252, 40,133, 66,209,217,106,181,214, 6, 0,158,231, 79, 25,141,198,205, 86,171, -245,115, 74,169,233, 30, 56,149,114,185,124, 84, 64, 64, 64, 71,147,201, 84, 27, 0,228,114,249,169,252,252,252,173, 38,147,233, -115, 74,169,225, 17,168,112,120, 0,221, 40,165, 82, 0,144, 72, 36, 61,155, 54,109, 26, 79, 8, 17,196,249, 65, 56,142,171,103, -179,217, 56,251,245,221, 8, 33,135, 41,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,148,134,179, -172, 16, 30, 30, 62, 77, 16,132,152,146,174, 9, 12, 12,108,120,236,216,177,170, 43, 87,174,180,125,249,229,151,185,195,134, 13, -243, 27, 57,114, 36,255,217,103,159,125, 14,224, 85,215,235,195,194,194,102,115, 28, 23,230,203,243, 5, 65,200,204,204,204,124, -131, 21, 87,255, 56,198, 47,220, 86,208,138, 82, 96, 84, 71,127, 14,192,125, 9,173,216,216,216, 37, 67,134, 12, 25, 80,187,118, -109,158, 82, 10,139,197, 2,163,209, 88,117,255,254,253,109,214,172, 89,211, 16, 64,223, 82,230,203, 23,222,126,251,237,169, 83, -166, 76, 9,147, 74,165,196, 98,177, 84, 92,185,114,101,253,151, 94,122,233,181,197,139, 23,151,235,215,175,159,191,120,124,226, -196,137,141, 8, 33, 73,148,210, 79, 31,118, 56, 25, 24,254,131,141,180,214, 40,238,163, 53,137, 82,250, 97, 73, 66, 75, 99,191, - 49, 13,192, 33,209,162,229,122,209,159,127,254,185,158,231,121,209,162,213, 88,171,213, 70,186, 88,193,220, 33, 97,240,224,193, - 77, 87,175, 94, 61,173, 95,191,126,169,106,181,186,242, 51,207, 60, 83, 64, 8,145,172, 92,185,178, 94,133, 10, 21, 84,221,187, -119, 31,220,174, 93,187, 55,127,255,253,247,221, 0, 50,124,140,100,141,144,144,144,181, 31,127,252,113,124,231,206,157,101, 97, - 97, 97,160,148, 34, 37, 37, 37,118,227,198,141, 79, 78,154, 52,233, 77, 66, 72, 47, 74,233,217, 82,188,184, 70, 42,149,106,245, -164, 73,147,162,159,124,242, 73, 62, 42, 42, 10, 6,131, 1,231,206,157,235,176,121,243,230, 86,139, 23, 47,126,149, 16,210,135, - 82,122,184, 20,156,141, 3, 3, 3,215,124,247,246,219,145, 77,158,123,142, 15, 9, 9, 1,165, 20, 25, 25, 25, 29,246, 44, 93, -218,102,196,199, 31,191, 74, 8,233, 77, 41, 61,244, 40, 37, 34,185, 92,206, 45, 91,182,172,174, 92, 46, 7, 0,152, 76, 38,212, -172, 89,147,220, 15,167, 84, 42,229, 62,253,244,211,250, 60,207,195,108, 54, 11, 5, 5, 5,244,153,103,158,225,254,161, 76, 18, -151,146,146, 18, 40,147,201,220,158,183,217,108,104,213,170, 85,162, 76, 38,195,167,159,126,106,201,204,204,172,183, 96,193,130, - 99,203,151, 47, 15,251,252,243,207,251,184, 19, 90, 28,199,133, 37, 39, 39,187,229,180,217,108, 48,155,205,176, 90,173, 48,153, - 76,168, 94,189, 58, 43,169, 30, 13,196, 3,192,111, 39, 13, 0, 16,114,191,100, 26,141,166,218,192,129, 3,249,140,140, 12, 72, -165, 82,152,205,102,164,166,166,162,102,205,154,146, 31,126,248,161, 74,105,249, 42, 86,172, 56,108,198,140, 25,225,191,253,246, -155,121,217,178,101,166,142, 29, 59, 74,135, 13, 27, 22,208,170, 85,171,234,113,113,113,220,183,223,126,107,220,186,117,171,101, -240,224,193,242,233,211,167,135,111,220,184,177, 59,128, 79, 31,118, 56, 25, 24,254,131,216,225,186,168, 52,128, 18,133,150,136, - 67,148,210,158, 0, 32,147,201,234,149, 43, 87,110,137,213,106,141,178, 91,117, 82,165, 82,233,167,102,179,249,184,189,162, 90, - 39, 8, 66, 15,111,150,172,193,131, 7, 55,253,253,247,223,103,237,223,191, 63, 47, 43, 43, 43,106,253,250,245,134, 55,223,124, -243, 58, 0, 92,189,122, 53,169,123,247,238,177,163, 71,143, 78,238,212,169,211,188,182,109,219,190,178,125,251,246,173, 40,234, -146, 44, 81,100,213,172, 89,115,223,174, 93,187,252,131,130,130,138,171,186,132, 4,188,242,202, 43,178, 30, 61,122, 84,104,223, -190,253, 94, 66, 72, 75, 74,233,105, 95, 4, 81,165, 74,149,182,253,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116, - 58, 29, 2, 2, 2,208,175, 95, 63, 89,235, 22,205,203,141, 30,243,234, 54, 66, 72, 7, 95,196, 22, 33,164,113,243, 26, 53,182, - 45,159, 62,221,207,114,243, 38, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,152,152,200, 31, 89,186, 52,118,208,184,113, 34, -231, 67, 23, 91,132, 16,133,221, 12,106, 36,132,108,144, 72, 36, 61,229,114, 57,215,179,103, 79,108,219,182,141, 24, 12, 6, 30, - 0,148, 74,165,181,103,207,158, 80,169, 84, 48,153, 76, 2,128, 13,158, 44, 79,238, 56,165, 82, 41,215,182,109, 91,221,161, 67, -135,178, 69, 78,181, 90,109,105,219,182,109,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,114,229, 74,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, 94,188, 88,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191, 82,141, 26, 53,146, 1, -172,203,206,206,254, 52, 53, 53,245, 6, 43,183,254, 17,220,220,112,220, 80, 30,128, 9,192,181, 50,224, 19, 0, 96,247,238,221, - 72, 75, 75, 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,114,229,202,194, 90,181,106,145, 51,103,206,108, 6,240, -217,202,149, 43,135,102,103,103,143, 31, 59,118,108,200, 39,159,124,146, 61,110,220,184, 25, 0,190, 95,185,114,229,203,213,170, - 85,235,114,254,252,249,197,255, 68, 56, 25, 24, 30, 0, 26, 1, 8,183,255,207,180,151,187,161, 78,251, 39,237,249, 86,188,206, - 4, 64,238,230, 87,132,184,159, 1,224,176,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,141, 27, 55, 82,113,115,119, -115,100,100,228,152,118,237,218,205, 58,122,244,104,245, 59,119,238, 4,223,185,115, 39,248,232,209,163,213,219,181,107, 55, 43, - 50, 50,114,140,120,157,221,227, 30, 78,251,206, 67, 52,101,251,246,237,139, 95,187,118,237,140,109,219,182,229,213,171, 87,207, -244,231,159,127, 90, 59,117,234,148, 14,192, 10,192,218,169, 83,167,244,237,219,183,219,154, 52,105,162,250,253,247,223,111,237, -221,187,119,246,234,213,171, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,101,231,206,157,119,137, 44,103,148, 43, 87, 14, 27, - 54,108, 8, 8, 10, 10, 90, 71, 8,145,149, 16, 78, 16, 66,148, 74,165,114,205,246,237,219,253,252,253,253,145,158,158, 14,169, - 84,138,136,136, 8,228,229,229, 33,245,206, 29,220,184,116, 9,156,201,132, 57, 31, 77,241, 87,169, 84,171, 9, 33,114,111,156, -129,129,129,107,150, 79,155,230,151,181,109, 27, 78, 76,157, 10,179,217,236,232,114, 53,155,205,216, 59,114, 36, 50,254,248, 3, -223, 78,156,232, 23, 24, 24,184,134, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 9, 32, 27, 64, 54, 33,100, 36,165,116,127,205, -154, 53,143,158, 59,119, 14, 45, 91,182,196,170, 85,171,234,140, 29, 59,118,228,216,177, 99, 71,174, 90,181,170, 78,203,150, 45, -113,238,220, 57,212,172, 89,243,168,179, 47,149, 47,156, 59,119,238, 68,187,118,237,114, 86,173, 90,149, 52,113,226,196,105, 19, - 39, 78,156,182, 98,197,138, 10,237,218,181,203,153, 59,119,174,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49, - 49, 49,233,107,215,174, 69,191,126,253, 56,185, 92,126,167,127,255,254,138, 61,123,246, 80, 0, 27, 74, 19, 78,131,193, 0,189, - 94, 15,173, 86,139,171, 87,175,170, 62,254,248,227, 22, 31,126,248, 97,197,109,219,182,197,190,243,206, 59, 35,194,195,195,143, - 69, 69, 69,197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,227,126, 56,219,183,111, 95,171, 98,197,138,145, 43,207, 4, - 35, 71, 86, 21,130, 44, 8,130, 44, 8,182,208, 70,184, 34,127, 10,229,203,151,143,244,247,247,111, 90, 26, 78, 74,233,178,211, -167, 79, 63, 65, 41,253,144, 82,154, 69, 41,157, 53,110,220,184, 73,132,144,221,227,198,141,155, 66, 41,157,101, 63, 62,245,220, -185,115, 77, 40,165,203,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 3, 33,100,195,132, 9, 19,218, 2, 8,117, -217,111,230,124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,171,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,215,174, 93, - 73,215,174, 93,197, 19,135, 8, 33,235, 1, 28,146,201,100,245,234,214,173,219,115,211,166, 77,254,225,225,127, 63, 63, 60, 60, - 28,171, 87,175,246,175, 81,163, 70, 79,153, 76, 86, 15,192,161,128,128,128,245,112,211,197,104, 71,208,200,145, 35,159,126,246, -217,103,243,235,213,171, 7, 0,185,103,207,158, 85, 55,105,210, 68,107,181, 90,137,213,106, 37, 77,154, 52,209,158, 61,123, 86, -109,177, 88, 10, 26, 53,106,164,105,223,190,253,245, 55,222,120, 99, 48, 0,101, 9,241, 27, 56,115,230,204,184,224,224,224,146, - 94, 0, 10, 10, 10, 16, 25, 25,137,145, 35, 71, 70, 73,165,210,231, 75,122, 97, 60,207,143,154, 57,115,102, 68, 80, 80, 16,114, -114,114, 16, 23, 23, 7,147,201,132,139, 23, 47,194,160, 45,132,165, 32, 31,150,252, 92,100,252,117, 25, 65, 82, 30,131,123,116, -139,228,121,126,148, 23,107,201,168,111,198,141,139, 52, 93,191,142,171,171, 86,193,102,189,219, 80, 99, 53,155,113,234,171,175, - 96, 72, 78,198,140,225,195, 35,229,114,249,168,135,108,201,250,132, 82,170,162,148,170, 8, 33,243,154, 53,107,246,131, 74,165, - 26, 57,125,250,244,206, 91,182,108,121,114,215,174, 93,109,172, 86,171,212,106,181, 74,119,239,222,221,210, 96, 48,240, 10,133, - 2, 60,207, 83, 95, 57,155, 54,109,186, 68,165, 82,141, 88,180,104, 81,231,237,219,183, 15, 62,114,228,200, 40,155,205, 38,183, -217,108,242, 35, 71,142,188,164,215,235,165,148, 82,155, 39,206,135, 13,169, 84, 10,153, 76, 6,149, 74,133, 22, 45, 90,252,245, -245,215, 95, 91,226,226,226,164,107,214,172, 9,142,137,137,209,124,246,217,103,185, 5, 5, 5, 51,125,229, 51,155,205, 48, 26, -141,208,235,245, 48, 24, 12,248,243,207, 63, 19, 71,143, 30,205, 27, 12, 6, 91,247,238,221,179, 45, 22,139,113,220,184,113, 1, - 33, 33, 33,111,178, 6,236, 63, 2, 43,128, 66,187,208, 50, 58,167,101, 66, 72,109,209, 58,235, 11,114,115,115, 23,127,243,205, - 55,113,156, 34, 8,123, 76, 93,240,147, 48, 9, 91, 2, 63, 67,122,252, 91,136,136,171,136, 1, 3, 6, 68, 80, 74, 63, 43,131, - 10,111, 1,165,180, 21,165,116,222,189,220,255,160,195, 73, 8,137,247,243,243, 91, 21, 16, 16,176,199,207,207,111, 21, 33, 36, -254,126,227,220,169, 18,233,208,179,186, 36,185, 83, 69, 66,123, 86,151, 36,119,170, 84,250,185,158, 24, 30, 77,184,104, 17,103, -100, 80, 74,187, 81, 74,187,205,152, 49, 99,154, 83,250, 23,247, 85, 62,230,151,110,148,210,110, 46,105,116, 67, 25,212,161,212, -117,115,104, 10,103, 37, 41, 70,206,121,116, 97,185,114,229,150, 44, 89,178,196,223,149,244,206,157, 59,200,207,207,199,123,239, -189,231,255,236,179,207,190,122,235,214,173, 33, 94,194, 33, 79, 77, 77,173, 63,104,208, 32,165,217,108,206, 17, 4,129,203,207, -207,231, 3, 3, 3,109,226, 5,129,129,129,182,188,188, 60,169, 86,171,149,216,108, 54,227,179,207, 62, 43, 31, 62,124,120, 67, -103,139,214, 93, 18, 55, 60,188, 99,151, 46, 93,228,158,206, 91, 44, 22,104,181, 90,104,181, 90,152,205,102,180,104,209, 66,241, -245,215, 95,119, 2,176,200,211, 61, 10,133,162, 99,199,142, 29,165,217,217,217, 8, 12, 12,196,141, 27, 55,112,237,218, 53, 24, - 11, 11, 97, 46,204,135,185,176, 0,214,130,124,208,252, 60,100, 93,190,128, 38,213,170,202,126, 84, 40, 58, 3,152,237,137, 51, - 32, 32,160, 99,147,161, 67,121,141, 70,131, 54,131,138,198, 25,252, 94,173, 26,168,205, 6,193,102,131,205,106, 69,231,139, 23, - 97,177, 88,192,113, 28, 26,101,103,243, 1, 75,151,118, 4, 48,235,159, 72,236, 10,133,130, 95,182,108,217, 64,185, 92, 14, 74, - 41, 49,153, 76,216,178,101,203,125,115, 46, 93,186,116,176,200,105, 54,155,105,173, 90,181,238,202, 80, 70,163,145, 62, 42,153, - 94, 46,151, 67,169, 84,194,108, 54, 35, 33, 33, 65, 63,104,208,160,125, 31,125,244, 81,121,142,227, 52, 50,153,108, 83, 86, 86, -214,180,148,148,148,171,190,242, 89, 44, 22,152, 76, 38,152, 76, 38,232,245,122,252,245,215, 95, 81,137,137,137,100,228,200,145, - 54,157, 78,151, 52,127,254,252, 43, 91,182,108, 81,207,156, 57,243, 25, 0,175,176, 98,247,225,193,110,149, 14, 44, 31,202,107, -165, 18, 20, 2,240,183,139,130,103, 8, 33, 77,170, 87,175, 30,124,238,220,185, 28, 66,200, 1, 0, 63, 81, 74,239,148,196, 39, - 8, 2, 17, 4, 1, 47, 53,206,197,200,166, 18, 88, 44,121,200,203,203,195,141, 27, 55,112,246,236, 89, 28, 60,120,246,158,194, -169, 84, 42,159,247,243,243,235,164, 84, 42, 19,172, 86, 43, 87, 88, 88,120, 67,167,211,109, 19, 4, 97, 49,117,237, 86,240, 1, - 15, 42,156, 34, 52, 26,205,199,239,188,243, 78,243,192,192, 64, 28, 63,126, 60,105,197,138, 21, 31,227, 62,157,235,149, 82,238, -219,217,115, 63,139,141,141, 8,194,201, 93,191,198, 78,251, 98,229,183, 0,226, 88, 42,254,247,195, 89,139,184,224, 48,128,174, -246,209,232,221,238, 35,159,223,215,253, 37, 89,180, 92, 23,150,190, 75,104,121,136, 24,172, 86,107,148,179, 37,139, 82,138, 59, -119,238,224,246,237,219,200,200,200, 64,112,112, 48,204,102,115,148, 47,245,108, 65, 65, 65,227,208,208, 80,157, 84, 42, 53,234, -245,122,168,213,106, 65, 42,149, 82,251,115,136,125,212,162,205,104, 52, 18,158,231, 45,254,254,254,126, 70,163,177, 42, 74,240, - 37,163,148, 54, 14, 13, 13,117,123,206,104, 52,162,176,176, 16, 90,173, 22,133,133,133, 48, 26,141,136,140,140,132,213,106,173, - 95, 98,147,214,106,173, 29, 30, 30,142,148,148, 20,168, 84, 42, 36, 39, 39,195, 84, 88, 0,115, 65, 1,172,218,124,216,242,242, - 32,228,231, 67,208,230,195, 98,210, 33,182,114, 53,136, 35, 18, 61,193,100, 50,213, 14, 13, 13,133, 86,251,183,187, 25,181, 11, - 44,171,213, 10,171,221, 57, 90,236, 78, 12, 11, 11,131, 56, 34,241, 97,192,238, 63, 53,150,227,184,121, 10,133,130, 31, 49, 98, - 4,238,220,185, 83, 44, 77,140, 24, 49,194,225,147,213,170, 85,171,221, 74,165,210,154,145,145, 1,163,209, 40,245,133, 51, 33, - 33,225,198,123,239,189,119,200,100, 50,197,197,196,196, 4, 25,141, 70,125,149, 42, 85, 98, 84, 42, 85,164,201,100,178, 53,108, -216,112,177, 74,165,178, 20, 22, 22, 82,171,213, 74, 30,133, 76, 79, 8, 1, 33,164,232, 27, 89,173, 8, 11, 11,211,102,102,102, - 30,204,201,201, 25,120, 47,124, 22,139, 69, 28,209, 5,189, 94, 15, 74, 41,142, 31, 63, 14,165, 82, 41,181,217,108,103,172, 86, -171, 90, 42,149,130,179, 59,127, 49, 60,180,239,220,166,106,144,124,246,244, 38, 17, 65,117,187,107,180,106,185, 68, 43,220,168, -155,240,221, 39,103, 87, 60, 59,248,121,255,201,147, 39,199,135,133,133, 41,175, 92,185, 98,152, 50,101, 74,226,178,101,203,136, -183, 70,208,205,155, 55,127,126,231,157,119, 66,186,116,233,146,164, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,107,215, -174,209,147, 39, 79,254,101, 52, 26, 87,149, 38,156, 49, 49, 49, 95,143, 30, 61,250,217, 6, 13, 26, 72, 69, 11,169, 86,171,173, -183,115,231,206, 30,191,255,254,123, 75, 0,165, 78,151,183,110,221, 90,245,238,187,239,106,158,122,234,169,170, 10,133,130, 43, -139,112, 58,131,227,184, 72, 63, 63, 63,108,219,182, 13, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176, -119, 54,170,134,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 18, 45, 82, 94,196,146,126,252,248,241,239, 16, 66, 54, -140, 31, 63,254, 29,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,112,251,246,109,164,164,164, -224,246,237,219,200,202,202, 2,199,113, 37,206, 31,225, 28, 6, 66,136,176,117,235,214,224,125,251,246,105, 27, 53,106,148, 43, -250,191, 88,173, 86, 98,177, 88,136,221, 47,134,220,184,113, 67,182,103,207,158,160,243,231,207, 71,162,200, 97, 77,240, 18,185, -187,142,137, 2,203,121, 51, 24, 12, 80, 42,149, 62,197, 85,172, 8,143, 31, 61, 90, 36,178, 10, 11,236, 93,134,121,176,229,231, -129,106, 11, 32,183, 89, 32, 7, 5, 49,232,124,126,127,206, 16, 69,150,217, 46,180, 76, 38, 19, 44, 22, 11, 4, 65,128,213,106, -125,232, 9,156, 82,186,176, 94,189,122,245,127,254,249,231, 97,183,111,223,190,235,124,175, 94,189,240,202, 43,175, 96,244,232, -209,231,187,118,237,122,242,215, 95,127,197,168, 81,163, 32, 8, 66, 93, 66, 72, 30,165,244,247,146, 56,199,143, 31,127,228,214, -173, 91, 59, 46, 93,186, 52, 34, 34, 34, 66, 81,187,118,237,203,181,107,215,150,252,252,243,207,145, 47,188,240,194,209, 39,159, -124,242,250, 31,127,252, 17,178,109,219, 54,165, 32, 8, 13, 8, 33,183,255,233,121,180,140, 70,163,195, 2,101, 48, 24, 96, 54, -155,129, 18,156,223,189,165, 77,241,219, 90,173, 86,145,155,252,252,243, 90,236,222,189,155, 59,123,246, 76,220,136, 17, 35, 69, -135,123, 86,226, 62, 28,129,245,148,156, 35, 95,142,173, 27,170,124,179, 78,168, 86,206,147,194,139, 95,190, 83,120,173,124,128, - 54,178,156,218, 20,151, 24, 20, 51,109,218, 71,209,231,207, 95, 48,190,247,222,123,231,250,247,239, 31,241,230,155,111, 86, 95, -179,102, 77, 75, 66,200, 55,148,210, 92, 15,188,202,161, 67,135, 30,136,136,136, 72,252,226,139, 47,210,111,221,186, 21,108,177, - 88, 52,102,179, 89,208,106,181,215,244,122,253, 54,179,217,188,141, 82,122,180, 52,225,245,247,247,175, 51,116,232, 80,105,110, -110, 46,236,163,117,145,158,158,142,230,205,155, 75,214,175, 95, 95,227, 94,222, 65,118,118,246,108, 66,200,142,229,203,151,119, - 10, 8, 8,104,160, 80, 40,162, 0,216, 10, 10, 10,210,180, 90,237,137,123, 9,103,177,114,206,102, 75, 59,122,244,104,133,128, -128, 0,220,188,121, 19, 54,155, 45,237,126,191,155, 82,198,221, 58,181,107,125,185,106, 97,137,216,179,239, 0,148, 50,238, 22, - 75,205,143, 61, 68, 31, 42, 56, 11, 40, 55, 2,105,223,244,233,211, 85, 51,102,204,192,244,233,211,207,184,179,104,137,130,107, -250,244,233,103,196,235,156,174,223,117, 31,229,137,103,139, 86, 9, 10, 18, 60,207,167,102,100,100, 4, 7, 5, 5, 57, 4, 86, - 74, 74, 10, 82, 82, 82, 32,151,203,113,227,198, 13,200,229,242, 59,190, 52, 66, 84, 42,213,145,122,245,234, 85,185,122,245,170, -108,202,148, 41,229,142, 30, 61, 26,208,188,121,243, 90, 42,149,202, 70, 41,133,193, 96,224,206,157, 59,231, 55,107,214,172,216, -198,141, 27,155, 26, 55,110,124,108,229,202,149,122,148, 48,121, 41, 33,228,208,157, 59,119,146, 18, 18, 18, 68,209, 86, 76, 92, - 57, 11, 46,160,168,203,147,231,249, 99, 37, 5,148,231,249, 83, 23, 47, 94,236,160, 86, 42, 96, 42,200,135,185, 48, 31,214,130, - 2,216, 10,242, 96,203,203, 3,180,249,144, 91,173,144,218, 44, 80, 41,149,184,157,156, 12,158,231, 79,149,196, 41,151,203, 79, -165,165,165,117, 8, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138, 91,183,110, 65, 46,151,159, -122,216, 41,153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,210,164, 9, 70,141, 26, 5,155,205,102,255, 12,164, 13, 33, -100, 15,165,180,208, 19,167, 32, 8,220,185,115,231,158,190,114,229,138, 68, 42,149,114, 79, 60,241, 68,205, 22, 45, 90,152,228, -114, 57,100, 50, 25, 95, 88, 88,232,191,109,219, 54,165,197, 98, 33,118,206,135, 54,143,150,152,118,238,106, 26,217,157,214,245, -122, 61, 10, 11, 11,145,147,147,195,171, 84,170, 42,181,106,213, 58, 96, 50,153, 86, 89,173,214,111,175, 94,189,154,239,137,211, - 46,204, 28,162, 75, 16, 4, 80, 74, 97,179,217, 96,177, 88, 32,147,201,132,157, 59,119, 97,214,156,143,177,228,219,101,180, 71, -143, 30,100,253,250,245, 16, 4, 33,153,149,171, 15, 5,159,230,254,244,145, 18, 86,155,214,184,115,121,225, 15,151,242,181,147, -127,152,123,196, 36,151,228, 55,108, 29, 89, 59, 41,177,138, 36, 40, 40,152, 91,180,120, 94,214,143,203, 86, 95,185,121,243,102, -254,231,159,127,222,180, 74,149, 42,129, 39, 78,156,136, 5,224, 86,104,169,213,234, 74,207, 63,255,252,208,156,156, 28,217,146, - 37, 75, 86,222,185,115,231, 8,128,179,148, 82,173, 83,217,213,149, 16,242, 61,138, 70, 62, 69,218,203,185, 61,148,210, 41, 37, -181,215, 8, 33,216,190,125,251, 93,163, 3,133,251, 83,231, 65, 21, 43, 86,236,119,245,234,213,221,169,169,169,189,221,228,251, -201,149, 43, 87,238,124,230,204,153, 73,148,210,223, 74, 67,172,211,233,198,173, 94,189,250, 19,137, 68, 18, 99,179,217, 82,244, -122,253,184,251,182,104, 89,132,225,211, 23,173,248, 74,111,178,149, 87,201, 37, 55, 13, 22,225, 5,150,148, 31,107,107, 22, 96, -247,209, 18,255, 3, 32, 46,251, 39,236,255, 77, 78,215,102, 56, 89,177, 76, 46, 86, 48,119,231, 50,112,143,147,165,187, 27,113, - 40,138, 46, 79, 51,195, 79, 0,208, 24,192, 33,169, 84, 58,239,217,103,159,157,245,227,143, 63,250,231,231,231, 35, 45, 45, 13, -233,233,233,224,121, 30, 1, 1, 1, 88,184,112,161, 62, 45, 45,109,158,243, 61,174, 51,200,139,121, 35, 44, 44,236,200,178,101, -203,162,190,252,242, 75,126,200,144, 33, 55,186,118,237, 90,117,225,194,133, 87,101, 50, 25,181,217,108,196,104, 52,146,151, 94, -122,169,194,156, 57,115,174, 75, 36, 18,117,191,126,253,136, 70,163, 57,132, 34, 7, 85,247,111, 62, 35, 99,235, 47,191,252,242, -244, 27,111,188,161, 48,153, 76,110, 45, 89,226,177,160,160, 32,236,221,187,215,148,147,147,179,197,139, 21, 99,235,166,223, 54, -182,250, 95,255,254, 50, 75, 65, 62, 44, 5,249,176,230,231,195, 86,144, 11, 82,152, 15,169,205, 10,149, 76, 64, 84,156, 18, 86, -189, 31, 54, 30, 62, 97, 49, 26,141, 37, 78,108,152,159,159,191,117,207,146, 37,109, 26,199,199,243,123,199,140,129,217, 98,193, - 83, 23, 47, 58,196,149,217,108,198,186,218,181, 97, 35, 4,117, 95,124, 17,151,173, 86,107,126,126,254,214, 71, 49, 51,156, 60, -121, 50,125,208,160, 65, 71, 5, 65,168, 95, 26,235,142, 8, 63, 63,191,130,194,194, 66,100,102,102,218,178,178,178, 12, 0,144, -158,158,158,179,126,253,250,115,130, 32, 52,190, 23,206,178,128,197, 98,185,203, 26,101,179,217,138,172,142, 69,150, 3,249,198, -141, 27, 91,157, 59,119, 78,118,250,244,105,236,222,189,187,238,143, 63,254, 56, 33, 62, 62,190,246,141, 27, 55, 82,189,137, 55, -119,147,254,194,238,127,184,114,249, 42,188,252,242,203, 36, 53, 53, 21, 63,253,244, 19,188, 77,158,202, 80,102,208,194,106, 83, -153,118, 46, 47,236,250,219,205,130,253,119,244, 83, 0,108,166,122, 43, 45, 87,174,220,201, 6, 13,130,195, 0,192,104,176, 69, - 85,170, 84,169, 53,207,243,114,123, 26,110, 16, 26, 26,186, 16, 64, 11, 55,229,167,164,127,255,254, 77, 34, 34, 34,234,253,254, -251,239, 39,238,220,185,115,134, 82,122,208,245,186, 10, 21, 42,188,119,254,252,249, 70, 82,169,148,120, 73, 35, 0,128, 54,109, -218, 84,137,143,143, 15,253,237, 82, 32,242,101, 21, 65, 37,121, 0,175,132, 45,168, 14,110,200,170, 35, 46,238, 64,104, 80, 80, - 80,221,220,220,220, 19,165,172, 32,218, 62,253,244,211,223, 46, 89,178, 36,174,117,235,214,148, 16,194,185, 78,233, 80,161, 66, -133, 78,251,247,239,175,255,194, 11, 47,124, 97, 31, 61,236,179,243, 48,165,244, 6,128, 62,101,249,209,182, 92,166,219, 96,159, -243,140,225, 63,131,195, 15,232,218, 50,193,189,204, 12,223, 88, 16,132, 30, 28,199,193,108, 54, 79,143,140,140, 92,215,175, 95, -191, 94, 19, 38, 76,240, 11, 13, 13,117, 88,178, 22, 46, 92,168,191,118,237,218, 26,179,217,124,156, 16, 50, 49, 37, 37,165, 71, - 76,140,199,250,161, 96,254,252,249, 43,186,119,239, 62,228,197, 23, 95,212,215,174, 93, 59,160,106,213,170,186,125,251,246,249, -117,236,216, 49, 95, 34,145,208,189,123,247,250, 87,168, 80,193, 64, 8, 81,252,241,199, 31, 89, 7, 14, 28,168, 48,125,250,244, -111, 80, 52,220,218, 19,150, 79,157, 58,245,189, 30, 61,122, 84, 8, 13, 13, 69,126,126,126, 49,177, 37,254, 87, 42,149, 72, 77, - 77,197,218,181,107,239, 88, 44,150,111,188, 88, 54, 62,255,108,225,162, 87,219, 54,121, 34, 54, 64,173, 66,106,242, 13,216,242, -114, 0,109, 33,228, 86, 11, 84,114,138,216,138,106,240, 18, 13,174,164, 22, 98,201,190,195,169, 86,171,245,243,146, 56, 77, 38, -211,231,175,204,153,243,234,254, 69,139, 98,227,251,246,197,217,165, 75, 29, 93,133,162,208,178, 17,130,242,237,219,131, 11, 12, -196,180, 47,190, 72, 51,153, 76,159, 63,236,196, 34, 8,130,196,100, 50,149, 20, 15, 8,130,144,124,246,236,217, 21,132,144, 2, - 66, 72, 27,251,169, 29,238,172, 89,206,156, 28,199, 9,213,171, 87,255, 57, 50, 50,242,105, 0,218,234,213,171,255,172, 80, 40, -218,153, 76,166, 39, 4, 65, 72, 62,126,252,248, 90, 66, 72, 42, 33, 68,108,117, 60,212,121,180, 44, 22, 11, 38, 78,156,136, 25, - 51,102, 96,252,248,241,142,248,138,221,135,185,185,185,137,123,246,236,145,237,220,185,147,126,241,197, 23, 89, 67,134, 12, 9, -122,241,197, 23,131,190,252,242,203,215, 1,140,243,196, 57,110,220, 56,124,241,197, 23,120,249,229,151,239, 86, 89, 18,137,144, -156,124, 11, 6,131,129,206,159, 63, 63, 69, 42,149, 6,127,243,205, 55,170, 23, 94,120,129,176,114,245,161,224, 93,213,160,247, - 95,179,151, 49,243, 40,165, 59,196, 19, 1, 1, 1,170,159,127,254,133, 7,128, 53,171,215, 74, 41,165,129,226, 4,179, 63,252, -240,131,178,121,243,230, 17, 30, 10, 92,155, 82,169, 52,206,156, 57, 51,116,248,240,225, 79,254,249,231,159,193,132,144, 38, 0, -142, 0, 72,179,139,235, 8, 0,103,195,194,194, 2, 86,174, 92, 25,219,169, 83, 39,141,183,128, 22, 20, 20,124,179, 98,197,138, -132, 57,123, 2,241,155,246,105,220, 18,250,130, 6, 81,132, 68, 20,160,186,223, 77, 12, 28, 56, 48,102,222,188,121, 95, 1,104, - 80, 10,145, 53,176, 87,175, 94, 51,150, 44, 89, 18, 51,124,248,240,212, 99,199,142,165, 1, 88,226, 70,240,101, 62,251,236,179, -119,150, 46, 93, 26, 77, 41, 93, 68, 8,145, 83, 74,215,176,228,195,192,224,200, 75,173, 81, 52, 35,252, 93,226,139,184,243,111, - 34,132,172,179, 90,173, 61,120,158, 95,239, 60, 97,105,100,100,228,171, 38,147, 41,154, 16, 66,101, 50, 89,106, 90, 90,218, 60, -231, 9, 75,147,147,147,123,196,197,197, 57,238,177, 79,186,233, 60,215, 70,192, 83, 79, 61,213, 97,255,254,253, 11, 54,108,216, -144, 94, 80, 80,224,183,122,245,106,213,140, 25, 51,110, 8,130, 64,223,126,251,237,248,206,157, 59,235,108, 54,219,157, 23, 95, -124,177, 66, 98, 98,226,139,231,207,159,223,230, 44,180,220,112,130, 16, 82,163, 98,197,138,123,215,172, 89, 19, 16, 20, 20,132, -244,244,116,100,103,103, 67,171,213,194,102,179, 65, 42,149, 34, 35, 35, 3, 83,166, 76,201, 79, 73, 73,185,107,194, 82, 15,156, -141, 19, 98, 99,183,206,155, 52,209, 63,136,231,144,117,225, 28,172, 57, 89,144, 90, 45, 40, 87, 35, 16, 50,185, 10,151, 47, 22, -224,245,229,107, 11,110,102,231,222, 53, 97,169, 39,206,134,149, 42,109,251, 98,236, 88, 63,195,173, 91,136,126,238, 57,232,116, - 58,152,205,102,112, 28,135,191,230,205,131, 44, 60, 28,239,173, 92,169, 61,115,243,102,123,215, 9, 75,221,113,150, 65,226,112, -112, 18, 66, 70, 18, 66, 28,206,240,189,122,245, 42,118,237, 47,191,252,130, 69,139, 22,193,104, 52, 90, 41,165,175, 82, 74, 23, - 18, 66,252,236, 9,170,208, 27,103, 66, 66,194,205,154, 53,107, 30,182,217,108,188, 93,100,208,179,103,207, 54,184,118,237, 90, - 57, 23, 78,222,206,105,125, 88,113, 15, 13, 13,157,247,251,239,191, 39, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,106,212, -168,246, 7, 14, 28, 80,212,171, 87,207,152,153,153,217, 40, 60, 60,252,207,101,203,150,133,245,235,215, 47,229,204,153, 51,177, -174,156, 97, 97, 97,179,214,172, 89, 83,177, 98,197,138,156,104, 21,115,237,158, 28, 54,108, 88,135,101,203,150,201,159,126,250, -105,163, 86,171,141,244,247,247,191,178,102,205,154,176,158, 61,123,166,158, 57,115, 38,250, 97,196,157,113,186, 71,205,154, 53, - 47,159, 57,115,166,162,184,175,215,235,145,145,145,129,204,204, 76, 4, 5, 5,161, 99,199,142,127, 93,187,118,173,162, 59, 78, - 66, 72,189, 62,125,250, 76,250,234,171,175, 58,104, 52, 26,217,174, 93,187,180,219,182,109, 51,220,184,113,195,106,177, 88,104, -116,116, 52,223,162, 69, 11,101,151, 46, 93, 52, 10,133,130,123,255,253,247, 51, 63,250,232,163, 48, 66,200,114,113,249, 51, 87, -206,250,245,235, 31,220,180,105, 83, 99, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,113,251,118, 50,206,158, 61,139,253,251,247, - 99,203,150, 45, 39, 10, 11, 11,235,249,152,223, 67, 1,236, 50, 26,141, 85,229,114,185,207,194,222,102,179,129,231,249, 11, 0, - 58, 81, 74,147, 89, 90, 98,156, 12,127,251,103,149,202, 25,222, 46,192, 26, 19, 66,214,217, 15, 29,114,157,194,129, 16, 50,129, - 16, 50,209,201, 10,230, 45, 44,249,191,255,254,251,238, 14, 29, 58,140,106,223,190,253,156, 78,157, 58,221,185,115,231, 78,210, -236,217,179,227,172, 86,171,249,236,217,179,220,149, 43, 87,110, 28, 57,114,164, 98,229,202,149, 95, 60,127,254,252, 78, 47,214, - 44, 49,172,103, 9, 33,205,219,182,109,187,246,197, 23, 95, 44,223,164, 73, 19,121, 80, 80, 16,120,158,199,213,171, 87,113,226, -196, 9,211,202,149, 43,147,115,115,115,125, 94,130,135, 82,122,136, 16,210,177,223,232, 87,215,188,216,171,123,216, 19, 85,171, -200,163,163,163, 1,189, 30, 23,110,166,226,192,133, 19,230,175,119, 31,200, 48, 26,141,189,125, 93,130,199,206,217,161,221,216, -177,107, 38,255,239,127,145,184,115,135,143,142,142,134, 92, 46,199,181,107,215,112, 69, 16,172, 51, 23, 47, 78,203,207,207,127, -232, 75,240,136,115, 94, 9,130,192, 3,128, 74,165,194, 43,175,188, 2,231, 37,119, 22, 45, 90, 4,189, 94, 15, 0, 60, 33,228, - 19, 66,200,183,158,172, 88, 30, 56,203,255,246,219,111,229,157, 57,171, 85,171,230,142,211,248,176, 51, 73,118,118,246,123, 79, - 61,245,212,116,158,231, 61,206,122, 27, 28, 28,140,130,130, 2, 88,173, 86,219,237,219,183, 47, 4, 7, 7, 67, 42,149,130, 82, -234, 54, 31,101,101,101,189,215,187,119,239,169, 28,199, 69,120,226, 12, 8, 8,184,241,231,159,127, 86,122,225,133, 23,184,239, -190,251,238,234,240,225,195, 21,127,254,249,167,141, 82,186,150, 21, 93,143, 22,156, 27,165,246, 70, 28, 45,225,218,227,132,144, - 57, 71,142, 28, 9, 31, 53,106, 84,210,255,254,247,191,128,182,109,219,250, 57, 95,163,215,235,133, 95,127,253, 85,187,104,209, -162,188,221,187,119, 95, 31, 54,108, 88, 19, 20,249,151,184,197,205,155, 55, 55, 78,155, 54, 45,176, 75,151, 46,149, 1, 56,252, -179, 50, 50, 50,112,227,198, 13,156, 62,125,250,134,217,108, 94, 95,138,248,100, 17, 66, 38, 15, 24, 48,224,147,165, 75,151,198, - 12, 31, 62, 60,117,229,202,149,167, 81, 52,193,176, 43,130,122,245,234, 85,123,233,210,165,209,195,135, 15, 79, 5, 48,133, 82, -202,252, 8, 25, 24,254, 70, 27, 87, 63,173, 18,125,180, 0,228, 9,130, 0,131,193, 16, 41, 8, 66, 15, 65, 16,224,231,231,231, -238,186,198, 41, 41, 41, 61,156, 23,149,134,151,229,114, 0,100,108,219,182,109,235,242,229,203,219,191,253,246,219,255,203,205, -205,109,124,242,228,201, 38, 0, 32,149, 74,247,107, 52,154,131,211,167, 79,127,110,220,184,113, 25,190,136, 44, 23,177, 85,125, -214,172, 89,101,182,168,180, 93, 24, 85,250,124,213,218, 81,223, 40, 20, 29, 93, 22,149,222,106, 95, 84,218,112, 47,156, 99,191, -250,106, 84,192,170, 85,143,236,162,210, 70,163,209,250,244,211, 79,127,195,113,156, 96,111,197,242, 70,163,241, 57,148,114,164, -170, 43,103,175, 94,189,190,147, 72, 36, 86,187,165,136, 51, 26,141,207,223, 15,103, 25, 86,162,133, 0, 70,151,116, 77,173, 90, -181,150,173, 95,191,126, 80,143, 30, 61,108,102,179, 57,189,123,247,238,252,193,131, 7, 41,199,113,219, 60,112, 26, 1,188, 85, - 18,103, 84, 84, 84,252,103,159,125,118,108,204,152, 49, 1,203,151, 47, 15,217,179,103,143,109,254,252,249,249,217,217,217,159, -178,114,235,209,130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 78, 8,233, 50,118,236,216,103,198, -142, 29,219, 37, 42, 42,170, 66, 66, 66,130,154,227, 56,220,190,125,219,154,146,146,146,110,177, 88,182, 2, 88, 11, 0, 21, 42, - 84,120, 22,192,215,158,248,178,178,178,166, 18, 66,182, 47, 93,186,180,171, 70,163,169,174, 84, 42, 67, 44, 22, 11, 87, 80, 80, -144,173,215,235,207, 25, 12,134, 13,148,210,125,165, 76,247, 43, 9, 33,153, 67,134, 12,249,118,201,146, 37,113, 87,175, 94, 45, - 56,114,228,200, 83,174,215, 85,175, 94,125,207,210,165, 75,163, 95,120,225,133, 59, 43, 87,174, 44,149,143, 22, 3,195,127,164, - 33,182, 19, 30,252,139, 61, 85,112,211,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 92,124,178,242, 0, 76,243, 33, 76, -218,129, 3, 7, 94, 27, 56,112,224, 39,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,178, -111,101,245,242, 12, 40,154, 47,103,214,163,204, 89, 6, 97, 50, 18, 66,198, 18, 66, 62,177, 31, 26,123,252,248,241,133, 46, 22, -170,147,206,231,189, 89,158,220,113,158, 56,113,194,149,243,116,105, 56,255, 73,228,230,230,190,250,217,103,159, 29, 26, 63,126, -188, 98,232,208,161, 56,125,250, 52,102,204,152, 97,204,205,205, 93,126,175,156,169,169,169, 55,162,162,162,234,207,157, 59,247, -205, 57,115,230,244, 36,132,176,181, 14, 31, 17,232,245,250,191,234,212,169, 3, 82,228,176, 68,173, 86,171, 99,180,168,125,134, -255,191,124,177, 26, 1, 88,108,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,172, 15,124,251, 1,236, 47,227,188,191, -157, 16,242,220,149, 43, 87,166,253,245,215, 95,110,133,218,229,203,151,119,180,104,209,194,255,228,201,147,239, 82, 74, 55,178, -212,193,192,224, 59,120, 15, 25,239, 50,128,255,249,144, 65,167,223,199,179,109, 62, 88,191, 24, 30,174,216, 90, 72, 8,249,214, -201, 26, 83,170,243, 15,139,243,159, 66,114,114,114, 14, 0,199, 82, 36, 73, 73, 73,119,249,177,221,171,216, 66,209, 44,240,108, - 38,248, 71, 8, 87,175, 94,125,234, 1,228,177,236, 71, 52,239,239, 0,208,196,211,121,139,197, 50, 17,192, 68,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,181,227, 28, -128, 14, 30, 42,191,109,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,142, -135, 83, 23, 92,248,190,252, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116, 96,156,140,147,113, 50, 78,198,201, 56, 25, 39,227, -188,199,231,188,248, 48,158, 83,198, 97,166, 0, 90,139,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,122, -245,106,137,248,127,192,128, 1,195,108, 54,155, 99,216,187, 68, 34,249,236,167,159,126,250,182,164,135,244,233,211,199, 86, 18, -167, 59,120,123,142, 59,206,154, 85, 2, 71,132, 6,170, 95,205,205,211,205,189,154, 98,219,109, 48, 24,170,139,231,148, 74,229, -185,111,191,253,246, 82, 89,135,115,216,176, 97,149, 93,159,147, 16, 39,109, 19,226,175,124, 37, 59,183,112,246,233, 75, 5, 95, -178,100,246, 96,209,183,111, 95, 73,105,174,191,118, 45,136, 59,134,232, 79, 3, 52,178,238,133, 90,203,167,182,163, 19, 23, 60, - 14,239, 33, 58, 58,186,106, 64, 64,192, 96, 0, 53,116, 58, 93,132, 90,173, 78, 7,112, 54, 63, 63,127,217,157, 59,119, 46,248, -202,211, 38,145,220, 0, 80,222,190,123,115,199, 53, 26,239,203, 57,111,232, 92,145, 24, 40,160, 32, 4,230,205,151,169, 99, 1, -205, 39, 43, 17,131, 64,239, 62,222,185, 18, 49, 81, 10, 25, 1,140,155,175, 80,229,227,146, 94, 9, 33, 1, 0, 58, 2,168, 9, -224, 36,128, 45,148, 82, 29,203,201, 12, 12,143, 15, 92, 39, 42,117,222,231, 61,136,137, 86, 50,158, 44,160,160, 65, 0, 13, 53, - 26,141, 82,185, 92, 14,147,201, 4,181, 90,245,249, 75,195,135, 77, 2,135, 92,139, 21,175,124,251,237,183,247,188,210,117,105, -158,211,167, 79,159,237,174,247, 7, 7,168,166,238,248,245,237,224, 86, 93,103,206, 48, 93,203, 28, 87, 80, 80,192, 41, 20, 10, - 24,141, 70, 4, 6, 6, 54, 31,241,226,139, 13, 56, 41, 53,201,100,154,125,115,230,204, 73,189,215,112,190,254,250,235, 81,102, -179,161,153, 32, 8,114,147,201,164,112,125, 78,160, 90, 51,115,199,175,111,171, 91,119,155, 49, 9, 0, 19, 90,143, 16,138, 68, - 86,212,151,175, 13,124, 98,232,199, 99, 58, 32,168,205,204,113, 0, 22,252,203, 51,180, 36, 41, 41,105, 84,124,124,124,255,197, -139, 23,203,146,146,146,160, 84, 42,161,215,235,163,255,250,235,175,232, 17, 35, 70,180,174, 80,161,194,138,171, 87,175,126, 78, - 41,181,249, 64, 89,126,199,247,239, 3, 0,154, 15,158, 82,158, 16,242, 22, 0, 29, 0,180, 78,248,251, 92,155,161, 83,202, 19, - 66,198,162,248,104,225, 59,148, 82,183,147,100, 82, 64,190, 97,233, 44,244,120,246, 45,158, 16, 50, 66, 60,222,165, 50,176,233, -135,121,120,114,192,171,197,142,119,174, 0,254,215,165,179,208,237,217,183, 60,174,106,254,100,101,206, 34, 8,212,163, 37,158, -227,136,117,243,101,234,110,129,225, 52, 74,233,102, 55,239,178, 51,138, 22,116,118,123,125,183,106,124,154,217, 98,115, 59,225, -172, 76, 42, 73,223,112,222,122,215,189, 67,235, 19,139,197, 86, 84,182,202,120,216, 2, 3, 3,119,188,251,238,187,124,183,110, -221,240,245,215, 95,183,248,242,203, 47, 95, 36,132,252, 1, 96, 61,165,244, 10,203,165, 12, 12,143,175,224,242, 40,180,120, 9, -190, 88,191,230,219,138,105,233,153, 24,242,194,155, 88,190,124, 57,114,114,114, 16, 28, 28, 12,185, 76, 38,157,251,201,251, 81, - 1, 1,154,168, 33, 47,142,251, 2, 64,213,123, 13, 80, 41,159, 83,233,174, 8,217, 39, 52,229, 37,156, 84, 46,151,115, 43, 86, -172, 64,110,110, 46,130,130,130, 32,151, 75,185, 57, 51, 38,168, 2, 2,252, 84,207,143, 28,223, 2,192,170,123, 13,167,201, 84, -216,226,231,229,223, 6,100,100,100, 96,232,203,227,224,250, 28,153, 76,102, 19, 43, 22,150,204,254, 57,100,102,102, 18, 0, 8, - 11, 11,163,197, 69, 86,147,161,115,222,232,132,215,103,111,129,206, 96,250,225,223, 30,207,164,164,164, 81,125,251,246,237, 63, -117,234, 84, 25,199, 21, 13, 28,214,106,181,208,235,245,136,141,141,197,142, 29, 59,100,239,189,247, 94,255, 95,126,249, 5, 0, -230,151,150,255,204,153, 51, 9,229,203,151, 55, 0, 64,247,218,254,174,231,226,197,115, 0,224,239,239,239,149, 47, 52, 72, 99, - 60,115,230, 64, 13,241,190, 81,237, 99,109, 30,142, 27, 0,168, 75,226, 18, 4,202,111, 89, 48,194,227,249, 23,166,254,104, 61, -185,106,119,213,164,164, 36,189,243,113, 15, 19, 46, 3, 64,100, 97, 97, 97,121,215,131,226,245,102,139, 45,194,211,243, 58,189, -178,200,173, 0,179,216,192,255,248,227,143, 0,128, 79,223, 26, 36,249,234, 96, 38,207,243, 69, 69,237, 39,159,124,130,201,147, - 39,203, 55,111,222,220,101,233,210,165, 93, 8, 33,115, 61, 9, 85, 6, 6,134,127,159,200,114,254, 45, 81,104,113,132,248, 7, -248,251,161,207,192,151,240,251,239,155,208,170, 85, 43,199,185,196,196, 68,244,237,221, 19, 63,125, 63, 7, 0,252,239, 39, 80, -247,251,156,156, 60,237, 7, 79,246, 95, 48,229,102,106,225,254, 13, 27, 54,160,101,203,150,197,238, 31,216,175, 15,126,248,230, - 19, 80, 74,101,247,245,242, 40, 39,243, 15,208, 96,192,144,151,225,238, 57, 47, 14,237,181,161,115,223,121, 29,210,178,180,115, - 88, 82,123,184, 56,127,254,188,196,104, 52, 14, 8, 8, 8,104, 34,149, 74, 35, 21, 65,229,133, 20,190,113, 86, 6, 73,186,154, - 30,161,107,245, 70,135,200, 39, 63,125,173, 45, 94,159,189, 5,115,151, 31,248,190, 62, 82,255,213,115, 1, 69, 71, 71, 87,141, -143,143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56,140, 27, 55, 78,182,115,231,206,254,209,209, -209,219,124,232, 70,188,217,124,240,148, 34,177, 33,145, 22, 78,156, 56,209, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 12, -157,226, 15, 0, 28, 47, 43,152, 59,119,174, 41, 54, 54,214,192,243,188,252,213, 87, 95,245,105,122, 24,163,209, 72,157, 57, 77, - 38,163,227,248,204,153, 51, 77,145,145,145, 70,181, 90, 77,205,102,147,207,239,225,212,181,108, 40,100, 18, 40,100, 18, 40,229, - 82,248, 39, 52,130, 34,231, 52,172, 86, 43, 62,254,248, 99,115, 84, 84,148, 73,173, 86, 83,185, 92, 46, 27, 51,102,140,215,112, - 14, 27, 54,140, 6, 5, 5,153,213,106,181,108,242,228,201,119,205,238,252,231,201,219, 80,201,165, 80, 43,120, 84, 74,140,131, -130,234,125, 14,171, 68, 82,188,167, 91,161, 80,160, 69,139, 22,168, 81,163, 6,214,173, 91,215, 6, 0, 19, 90, 12, 12,255,114, -184, 90,177,238, 18, 90, 27, 55,110,108, 13,251,170,211, 93,187,118, 45, 90,109, 26, 20, 99, 71,245,198,243, 67, 7,192,102, 19, - 28,203, 77, 16,142, 96,228,115, 93, 32, 8, 54, 95, 30,236,117,136,103,105,159,227,204, 73, 9, 39, 1,128,138,241,209,244,197, -231,255, 7,155, 32, 20, 77,131, 10, 0, 18,224,165,161, 79, 22, 29, 43,131,112, 74, 96,195,155, 35,158,129,187,231, 84,173, 24, -195, 89,205, 6, 16,167,197, 30, 31,196, 98,155,140,179, 56,246,237,219, 23,173, 86,171,103, 15, 26, 52, 40,102,204,152, 49,114, - 27, 31,196,175,222,159, 21,248,246,194,253, 49, 58,163, 89, 50,176,109, 2,222,248, 95,109,188, 49,247, 79, 81,100,189,152,152, -152,251,175,254, 70, 1, 1, 1,131, 23, 47, 94,124,151,200, 74, 75, 75,227, 10, 11, 11, 97, 54,155,133,130,130, 2,216,108, 54, -140, 31, 63, 94,250,222,123,239, 13, 38,132, 76,182,243, 24,221,113,238,184, 70,227, 9, 33, 99,207,156, 57, 19,255,238,187,239, -154,219,181,107,119, 51, 49, 49, 81, 43,145, 72, 16, 29, 29, 61,175, 99,199,142, 33, 83,167, 78, 53,119,233,210,229,186, 68, 34, - 65,165, 74,149,180,167, 79,159,142, 7,160,242, 53,238,206,156,223,254,249,153,216,234, 67,199,142, 29,111, 84,170, 84, 73, 43, -145, 72,112,233,215,153,212,215,247, 41,229, 57, 84,142, 13, 20,155,145,128,202, 15,200, 41,218,237,216,177, 99,114,213,170, 85, - 11, 57,142,195,169, 83,167,226, 0, 40,189,113,170, 84, 42,203,192,129, 3,111, 94,184,112,225,174,235, 1,128,151,112,104, 82, -213,110,192,138,173, 15, 36,239,241, 24, 78,169, 4,214,247, 70, 13,226,131,148,128,194, 63,204,152,159,159,143,128,128,128, 34, - 11,153,217,140,227,199,143,163,105,211,166,173, 87,173, 90,181,147,229,119,198,201, 56,255,134, 59, 45,242,111,179,102,137,130, -203,157,143,214, 14,215, 72,217,108, 86, 36,150,143,196,204,247,135,193,102, 19, 96,179,217, 96,181,255,218,108, 54, 88,204,230, - 50, 9,220,253, 60, 39, 56, 64, 53,117,211,138, 87,130,219,245,250,164,253,244,119,135,110,181,217, 0, 65,176,192, 98, 1,108, -130, 5,130,205, 6,139,197, 84, 38,225,180, 8, 2,226,227,162, 48,253,221,161,112,125,206,178,159, 86,117,255,115,253, 56,117, -171,110, 51,222, 4,240, 49,211,246, 15,199,146,165, 86,171,103, 47, 91,182, 44,190, 81,163, 70, 28, 0,236,190,104, 85,188,189, -112,127,204,230,233,205, 73,243, 26,161, 72,207, 53,226,213,207, 79,224,247,253,233,155, 92, 69,214,191, 24, 53,146,146,146,138, -137,172, 89,179,102,133, 45, 92,184, 48, 22, 0,122,247,238,125,187,125,251,246,153, 23, 47, 94, 68,116,116, 52,201,204,204,236, - 10,224, 85,123,198, 31, 75, 41, 93,232,129, 87, 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222, - 16, 17, 17, 97,172, 84,169,146, 86, 38,147,129,227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164, -188,211,245,244,110, 11, 18,199,113,110,159,231, 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 63, 70,165, -132,144, 29,148, 82, 28, 59,118, 12, 87,175, 94,133, 76, 38, 67, 84, 84, 20, 38, 79,158, 12,163,177, 72,239,246,237,219,183, 53, -128, 83, 44, 55, 51, 48, 56,176,227,223, 38,176, 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194, - 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142,205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188, - 64,193,102,129, 32, 88,224,238, 57,132,112, 54,123,129, 47, 99,249,228,225,192,104, 52, 14, 28, 48, 96, 64,140, 40,178, 0, 32, -179,192,194,235,140, 22, 73,243, 26,161, 92,131,182,125, 17, 17,164,192,202, 93,183, 17, 17,164,222,245,152,136, 44,232,116,186, - 8,165, 82, 9,173, 86,235,176,100, 45, 92,184, 48,214,100, 50,113, 38,147,137, 91,185,114, 85,220,242,173, 23,203, 45,219,124, -177,220,226,181, 71,203,229,228,228,213,160,148,170, 40,165, 42, 0,159, 16, 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,155,235, 92, 40, 67, - 20,193, 12, 12, 12,238,181,200,191, 85,108, 21, 43, 63, 92,213, 36,236,171, 79, 91, 45,102,183,226,103,213,175,123,113, 51, 85, -139,168,176, 67,160, 30, 86,170,246,132,254,253,251,127, 31, 29, 29,237, 88, 79, 75,161,242, 11,125,241,149, 15, 97,181,154,225, -175,226,240,194,224, 39,139,137,172, 34,139,150, 9,158,228, 92, 78,158,246,131, 39,251,206,159, 18, 24, 16,186,223, 85,252, 76, - 95,114,180, 79, 78,190, 49,142,227, 14, 35,135, 68,219,250,190,244,225, 48,167,194,253,228,138, 69, 19,223,240,249,197, 17, 78, -218,103,196,188, 23, 41,239, 87, 93,205, 21,236,122,123,232, 19, 63, 59,139,185,144,144,144, 13,157,250,204,237,144,150,205,124, -180, 30, 22,228,114,121,135, 49, 99,198, 20,171,241,194,252,165, 86,181, 66,106,219,123, 54,147, 28,221,190,138,219,125, 38, 83, - 80,202, 36, 52,156, 94, 77,122, 92,226,173, 86,171,211,117, 58, 93,180, 94,175, 71,126,126, 62,242,243,243,139, 11, 2,169,148, -188,248,242,232, 48,169, 76, 14,139,217,132,223,151,125,228,149,179, 77, 34,185,209, 58, 1,229,187,215,246,135, 68, 42, 47, 56, -155,148, 52,143,231,121,112, 28,135, 95, 63,127,251,213,181,179, 95,241, 7,128,147, 27, 62,207, 31, 48,238,179,249, 28,199,193, -104, 52, 42, 74, 19,238, 91,183,110,197, 25,141, 70,131, 93,160,137,166,117, 92,187,118,173,156,209,104,212, 59, 31,247, 5, 42, -181, 63, 16,148, 8,168, 35,238,178,158, 93,191,126, 61,198, 98,177,232,120,158,135,201,100,242, 73, 21,113, 28, 39, 59,117,234, - 84,156, 32, 8,110,175,175, 81, 33, 6,136,170, 13,200, 3, 75, 83,224,250,116,141,187, 22, 48, 3,195,127,221,178,133, 82,234, -139, 71, 65, 96,185,251,239, 44,180,218,108,220,184,145, 58,183, 16,173, 22,139, 93,100,253, 45,122,108, 54, 1, 41, 25, 6, 92, -188,120, 9,115,231,206,197,222, 3,111, 5, 78,157, 58, 85,241,222,123,239, 25,251,247,239, 63, 91, 16,132, 58, 28,199,157,236, -211,167,143,219, 86,154, 32, 8,229,142, 30, 61,234,168,244, 44, 22, 11,252,253,253,225,239,239,143,170,149,226,238, 18, 89, 54, -155, 13,230, 18,186, 14, 69, 31, 45, 66, 5,106,177,216, 96, 19, 4,135,248,201,201, 55,198,173,223,118,172,162,211,229, 85,196, - 63, 45, 26, 85,247, 44, 6, 71, 76,118,196, 99,197,162,137,111, 76,253,250,107, 69,142, 45,124,204,128, 62,207,215,236, 59, 96, - 48, 6, 62,243, 84,107,163,201,180, 78,194, 81,193,226,120, 30, 56, 80, 20,243,209, 98,120,112,200,204,204, 36,122,189, 62, 33, - 40, 40,168, 88,133, 21,173,209, 26,199,245,171,156,210,241,237, 61, 49, 6,179, 13, 10, 41, 71, 95,237, 25,159,114,240,151,149, -161,153,198, 76, 34,142, 70,252,151,227,236,149, 43, 87,162,203,149, 43,135,252,252,124, 88,173, 86,161,119,239,222,183,121, 94, - 26,199, 75,165,164,219,128,209, 66,106,106,138,133,227, 36,160,212,134,167,250,142, 32, 10,165, 74,102, 54,153,172, 0,198,122, - 88, 83,210,121, 10, 7,255,142, 29, 59,134,136, 35, 1,215,206,126,197,223,233, 92, 64,131, 6, 13, 66,156, 71, 29,250, 40,138, - 73,255,254,253, 85,229,203,151, 39, 0,112,120,217,187,162,245,140,116,239,222, 93, 89,190,124,145, 31,254, 31,159,251,190,166, -118,152,154, 2,121,215,128,188,235,119, 89,178,186,119,239,174, 72, 74, 74, 42, 85, 94,180, 59,192,123,156,187, 75,195, 91,129, -212, 99, 62,113, 13,173, 79, 44,239,182, 2, 63,251, 41, 14,114,191, 80, 99,147,183, 55, 31,100, 98,139,129,193, 39,184,104,145, -127, 15,236,107, 27,238, 0,208,198,254,139, 98, 62, 90, 93,187,118,221, 89, 76, 61, 82,192, 98, 53,223, 37,178,108, 54, 27,164, -196,136,185,115,231,226,181,215, 94, 3, 0,217, 27,111,188,241,243,212,169, 83,159, 22, 4,161, 14,165,180, 37, 33,164,164, 86, -227,142,232,232,232, 52, 74,169,148,227,184,150,159,127,254,121, 72,151, 46, 93,224,239,239, 15, 42,208,187, 68,150,205, 38,192, -108, 54,193,147, 73, 43, 56, 64, 53,117,211,170, 49,193,237,122,126,210,222, 38, 8, 91, 69,145, 37,216,108,128, 80,116, 83, 86, -250,109,108,249,125, 29,190, 88,244, 69, 14, 8, 61, 15, 10,129,227,184,147,158,194, 40, 8, 66,157, 61,135,207,181,108,209,168, - 58,166,126,253,181,226,204,209, 59, 63,143,126,253,157,154,125, 7, 12,198,170,159,150,129,179,230, 30,115, 22, 89, 54,139,128, -188,156,204,238,219,153,143,214, 63, 6,139,197,130,156,156, 28, 88, 10,115,172, 13,163,181,121, 31,246,141, 48,166,229, 24,120, -169,160,179, 86, 11, 72, 55,110,207,190, 46, 81,171,213,143, 69, 92,243,243,243,151,141, 24, 49,162,245,174, 93,187,100, 28,199, - 33, 63, 63, 31,109,219,182,205,204, 16, 98,149, 47,190, 60, 58, 44, 37,229,182, 53, 64,197, 27,101, 50, 41,210,211,211,133,214, - 93, 6,233, 7, 12,123, 45,230,181,119,167, 47, 78,217,187,112,161, 47,207,112, 30, 9,232,122,238,171,175,190, 50,197,198,198, - 26, 20, 10,133,124,232,208,161, 62,245, 31,154, 76, 38, 58,115,230, 76,163,235,232, 66,147,201, 68,231,206,157,107,138,139,139, - 51,170, 84, 42,106,177,120,247,251,228, 56, 98,125, 97,234,143, 86,171,213, 90,204,138, 37,138, 44,139, 64, 10, 23, 44, 88, 96, -142,139,139, 51,169,213,106,170, 80, 40,100,190,132,115,244,232,209, 52, 56, 56,216,172,209,104,100,227,198,141,187,175, 81,135, - 22, 27,248,169,159, 59,166,119, 80,248,251,251,163,160,160,192, 17,214,232,232,104, 38,182, 24, 24,220,224, 46, 45,242, 47,179, -194,121,242,209,114,235,192, 32, 0,133,105,233,153, 17, 97,145, 9,176, 90,173,246,205, 2,171,197,130, 49, 47, 13,192,236, 69, - 69,243, 61,218,197, 86,199, 55,222,120,227,103,184,248,123,185,195,138, 21, 43,166,188,241,198, 27, 1,105,105,105,155,191,255, -254,251,144, 65,131, 6, 97,236,216,177,248,228,147, 79, 32,149, 43, 17, 18, 94,206,241, 28,241,185,153, 25,217,160,160,133,110, - 21,164,221, 71,139, 82,240,161,225,241,176,216, 44, 16, 44, 22, 88, 44, 22, 16, 73, 81,212,182,252,190, 14,131,158, 27, 13,169, - 34, 32,248,179,185, 31,235,107, 54,140,126,250,189,225,195,141,222,229, 41,184, 51, 71,239,252, 60,250,181,113, 29, 69,145,181, -102,217,162,243,159,142,239,185, 92, 33,231, 29,207,177, 8, 2, 56, 78,194,124,180, 30, 34,194,194,194,104, 70, 70,198,245,220, -220,220, 42, 26,141, 6, 89, 89, 89,200,206,206, 70,110,110, 46,140,249, 57,214, 80, 91,174,150, 88,179,193,243, 60,210,111, 89, - 97,179,217, 82, 31, 19,107, 22,238,220,185,115,161, 66,133, 10, 43,222,121,231,157, 1,227,199,143,151, 10,130,128,139, 23, 47, - 2,132, 80,169, 76, 14,238,255,236, 93,117,120, 20,199, 27,126,103,207, 37, 23,247,132,132, 96, 73, 72,240,226,222, 98,197,139, -187, 91,177, 66,113, 40, 86, 40, 20, 43,197,138,148, 2,197,225, 7,197,139, 20,119, 8, 30,130, 4,226,238,114,185,156,238,252, -254, 32,151, 30,105,228, 46,161,165,208,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249,134, 97, 32, 16,240, -145,145,145,201,202,172,108,227,180,148, 39, 19, 8, 69, 96,120,194,226,134, 9, 71,182, 24,252, 38,188, 3,195, 23,102, 25, 71, - 2, 10,133, 66,220, 60,176, 34,179,197,224,111,173, 1, 64, 40,150,166,181,105,211, 38,162,106,213,170,202,187,119,239,122,163, -192,168,195, 66,158, 79,125,215,193,211,120, 50,169, 68,217,186,117,235, 72, 35,103,248,217,117,153, 3,190,156, 77, 8, 79,164, -236,216,177, 99, 68, 96, 96,160,146,199,227,225,233,145,101,153, 93, 7, 79,147,144, 63,199,244,254, 5,167, 95,210, 17, 15, 15, - 92,241, 91,188,120,177,174,125,251,246, 81, 70,127,177,240,240,112,247, 14, 29, 58,136,127,248,225, 7, 93,135, 14, 29,162,171, - 85,171,150,205, 48, 12,130,130,130, 60,139,179, 84, 25, 33,149, 74,117,195,134, 13,139,124,252,248,113,169, 70, 29,150,132,114, -229,202,129,101, 89,180,108,217, 18,185,185,185,156,101,139, 3,135,143, 16, 5,227,104, 21, 27, 25, 94,167,215,141, 27, 53,113, -193, 58,128, 88,153,180, 2,127, 26,150, 40,200,148, 41, 95,203, 1, 72,141, 98,107,210,164, 73,105, 37,101,194, 68,100,125,210, -175, 95, 63,204,156, 57, 19, 43, 87,174, 52, 44, 95,190,156,247,236, 69,152,118,240,151,243,210, 11,156, 7, 20, 52,155,213,177, -227, 10,227, 75,203, 80,206,107,218, 97,233,130,152,132,156,171,131,199,204,201,111,189, 12, 0, 50,137,155, 1, 0, 54,254,244, -147, 82, 32,182,150,247,236, 51, 0, 0, 90,175, 91,189,236,240, 34,252, 92,178,216,162,196,127,220,164,105,118, 70,145,181,254, -135,197,143,109, 72,194,218,241, 95, 7,235, 76,207, 3, 0,246, 10, 28,110,218, 97,105,219,196, 84,229,143,220,173,246,207, 64, -163,209,156, 91,179,102, 77,249, 57,115,230,136, 82, 83, 83,145,156,156,140,180,180,180,252, 37, 59, 59, 27,174,174,174,248,253, -247,223,181,153,153,153, 55, 63,166,178,191,126,253,122,253,209,163, 71,113,233,210,165,222, 51,102,204, 16,184,186,186, 18, 27, -155, 4,162,211,106, 0, 80,154,148,148,196,202,172,108,227, 28, 93, 60, 35, 99,227, 19,253,117, 90, 13, 88,131,182, 72,111,243, -188,240, 14, 83,158, 60,121, 82,126,197,138, 21, 26,211,145,128,125,166,173, 91, 83,167, 78, 29,251,181,107,215,106, 58,118,236, - 24, 97,116, 94, 55,199, 25,254,204, 43, 76,124,242,228, 81, 64, 65,206, 22, 35, 87,108, 53,114,154,142, 70,236,244,245,166,173, -149, 43, 87,182, 15, 12, 12,140, 40,142,183, 66,133, 10, 42, 55, 55, 55,141,159,159, 95,182, 64, 32,120, 99,201,210,233,114, 42, - 84,168,192,186,184,184,104,170, 86,173,154,109,169,211,190, 84, 42,165, 70,171, 88, 97,176,100,212,161,128, 7,125,191,126,253, -242, 35,195, 79,169, 92, 57,110,192,128, 1,110,147, 39, 79,198,214,173, 91,113,237,218,181,212,130,199, 52,111,222, 28,151, 47, - 95, 94, 0, 96, 30,247,116,115,224,240,225,161,196, 56, 90, 5,177,109,219,206, 63, 96,226,211, 84, 24, 22, 45, 90, 36,206,179, -100,181,254,234,171,175,160, 82,169,236, 10, 81,119,173,140,177, 54, 10, 19, 89,203,150, 45,219, 67, 41,245, 4,208,196, 96, 96, -111,109,249,121, 91, 75, 51, 20, 99, 62, 39, 37, 12,143, 97, 72,182, 72, 64,239,255,180,121,235, 91, 17,191,243,156,223,125, 65, -240,112,221,234,101, 42, 0,173, 11,138,173, 30, 61,122,228, 20,228, 52, 98,244,152,209,249, 34,107,221,234,101,103, 3, 63,241, -250, 98,206,240,111, 11, 21,103,223,206, 27, 37,103, 24,210,200,212, 71,171, 48,206,119,160,150, 57,206, 60,136,197,226, 61,123, -247,238,109,223,180,105, 83,239, 26, 53,106, 48,169,169,169,200,206,206, 70,118,118,182,209,234,133,167, 79,159,178, 17, 17, 17, - 49, 98,177,120,239,199, 84,246,188,105,117,214,184,185,185,157,155, 59,119,238,128,228,228,228, 14,105,105,233, 14,199,183,125, -139,118, 61,199,144,230,237,251, 42, 53,148, 47,137,142, 75,240,187,120,114,183,253,169,125,235,161,213,104, 70, 17,242, 83,136, - 49,188, 67, 33,249,204, 49,134,113,240,243,243, 83,154, 10, 21, 47, 47,175, 92,119,119,119,117, 96, 96, 96,126,122, 97,163,249, - 10, 43,187,165,156,121,254, 95,202,146,234,211, 40,218, 10,134,141,144,201,100, 48,138, 47, 75,242,105, 58,218,178,208,134,178, -132, 81,135,166,156,219,239, 81,129,233,182,237,132,240,118,238,220,217,106,231,206,157,159, 0,184, 15,224, 12, 0, 93,222,113, -249, 78,243,148,210,249, 0,230,115,207, 59,199,249, 95,229,252,192,173, 89,205,145,231,155,149,135, 22,148,210, 75, 69, 10,173, -146, 96,116,124, 7,192, 76,154, 52, 41, 77,165, 82,217, 13, 24, 48,160,216, 99,226,227,227,183,238,216,177,227, 45,145,213,173, - 91,183, 33, 7, 15, 30, 60,151,152,152, 88,170,130,217, 89, 75, 23, 93, 58, 54,221,174,121,199,165, 95, 1, 88, 94,184,204, 4, - 27,248,137,219, 23,235, 86, 47, 59, 92, 64,108,253, 10,160, 91, 97,245, 5, 0,109, 62,239,130,221,219,214, 25,125,187,164,143, -239,198,156,234,125,111, 97,161,163, 21,109,173,196, 11,243,242, 49, 25,156,143,214, 63, 2,127,127,127,195,245,235,215, 39,143, - 25, 51,102,213,103,159,125,230,209,165, 75, 23, 97,185,114,229, 32, 22,139,241,234,213, 43, 92,185,114, 69,251,250,245,235,152, -156,156,156,201, 53,106,212, 48,124,140,117, 16, 23, 23,247, 44, 47, 24,233, 68,227,215,148, 88, 34, 21,246, 29,250,149,103,254, -168,195,125,235,161,206, 85, 1, 0,159, 16,178,156, 16,242, 75, 17, 14,241,111, 4, 5,159, 47,124,240,224,129,183,209,106,165, -213,106,197,198,244,187,119,239,122, 27, 99,107,229,230,230,154, 61,234,240,239,226,124,244,232,145,167,113,116,164,113,116, 33, -159,207, 23, 6, 5, 5,121, 26, 57,213,106,181, 89,163, 14, 69, 34,145,240,193,131, 7,158, 6,131,225,157,141, 58, 44, 32,140, - 79,231, 45,198, 70,217, 40,178,140, 62, 29, 92,183, 33, 7, 14, 31, 54, 46, 22,156, 84,218,168, 39, 74, 37,180,140,142,239, 22, - 40, 61,126,249,242,229,219,244,233,211,231, 45,145,213,163, 71, 15,195,161, 67,135, 46,186,185,185, 37, 48, 12,243,204,210,124, -228,251,104, 1,130,130,219, 24,134,121,216,164,110, 85, 48, 12,243,112,206,240,225,234, 69,248,249, 45,177,117,228,240,254,182, - 69,181,139, 0,224,224,236,129,126, 67,198,161,223,144,113,118, 0, 26, 3, 69,143, 86, 44, 46, 31, 28,254, 62, 52,106,212, 40, - 46, 36, 36,164,223,217,179,103,251, 94,190,124,185, 85, 78, 78, 78,121, 66, 8,164, 82,105,184, 70,163, 57, 39, 22,139,247,124, -172, 34,171, 40,104,181, 90,253,140, 5, 43,118,240,248, 66, 61,203,106,137, 86,171, 29,106,201,115, 62, 99,198, 12, 6,133,248, - 94,141, 31, 63,190,208,244,247,197, 57,107,214,172, 66, 71, 9,142, 31, 63,190,216,209,131, 69,225,235,175,191,126,103,163, 14, -205, 20, 95,156,160,226,192,225,227,179,106, 21,234, 11, 92, 42,161,197, 48,204,195, 66, 70, 23, 18, 0,180,176, 17,125,148, 82, - 61,143,199, 91, 96,107,107, 59, 74,169, 84,254,222,173, 91,183, 73, 61,122,244, 48, 0,111, 28,228, 75, 91,168,180, 12,229,188, - 22,157,190,159,156,158,173, 94, 91,112, 91, 65,203,147, 81,108,173,255,113,217,134,195, 7,247,246,136,143,141,222, 80, 84,217, -138, 18, 84, 69,141, 86,204,200, 84, 45,104,209,233,251,175,210, 50, 85,156,143,214,123,176,108, 1,216, 9, 96,103,193, 73,165, -255, 11,160,148,170, 9, 33, 83, 9, 33, 70,139,238,212,215, 23,126,220,240,231,131,191,230,145,233,182, 98,172, 89,113,230, 76, - 16, 93,216,113,197,109,251, 27, 56, 19,138,153, 32,186, 56, 36, 88,200,151, 0, 0, 66, 1, 47,177,168,201,163,133, 2, 94,226, - 59,186,134,198, 0,135, 11,184, 39,154, 3,135, 15,182, 45,182,204, 71,203, 40,130,138, 66, 81,113,178,138,131,193, 96,248, 30, -192,247,239,178, 96,143, 95,100,109, 6,176,217,220,253,243,124,178, 6,229, 45,133,231, 51,229,137,197,101,235,209,163,199, 70, - 0, 27,185, 91,237,159,193,129, 3, 7, 12, 92, 45,188,245,128,111, 32,132,252, 98, 20, 94,230,110, 43,176,223,209,191, 33, 95, -127, 7,231,233,127,146,239,120,136,222,229,125, 55,210, 28, 56,112,248,247,163, 48,107, 86,177,163, 14, 57,112,224,240,193,137, - 45,117,105,182,113,224,192,129, 3,135,119,247,177, 84,152,175, 37, 1,208,170,136,131,204, 30, 77, 64, 8,105, 85,138, 76,157, -227, 56, 57, 78,142,147,227,228, 56, 57, 78,142,243,191,197, 89, 18,183,233,241,132,144,145,148,210,205,248, 0, 80,228,128, 22, - 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201,113,114,156, 28, 39,199, 89,202,243,140,252, 39,206,243, 14,242, 73, 11, - 46,198,109, 92,215, 33,135,191, 29,158,158,158, 96, 89, 22, 12,195, 32, 58, 58,154,171, 16, 14, 28, 56,112,224,240, 81,193, 98, -103,120, 14,133,152, 4,189,187,206, 1,139, 89,111,254, 96, 25,141,252,109,254,127,162,220,132, 56, 2,232,168,144, 8, 59, 7, -216, 10, 27, 62, 78,201,189,174,212, 26,142, 1, 56, 66, 41, 77, 51,135,131,101, 89, 28, 59,118, 12,157, 58,117, 50,114, 2, 0, -220,220,220,112,236,216,177,252,253,234,212,169,147, 31,188,145, 3, 7, 14,127,243,179,109, 23, 80, 14,132, 12, 5,232,159,195, - 46, 89, 26, 76,211,159,110,123,107, 63,219,170, 67,192,144, 0,147, 36, 21, 40,182,208,180,224,168, 34,218, 12,227, 11,199, 54, - 52, 52,212,187, 82,165, 74, 17, 0,210, 11,236,246,151,109,180,152,135,159, 16, 66, 28, 43,212, 30, 40,147,200,190,212,104, 52, - 62, 86, 10, 69, 98,106, 74,210,198,212,200, 71,235, 77,118,179,190,117,235,150, 91,253,250,245, 99, 1,100,149,196,201,129,195, - 59,126, 87, 54,199,219, 1, 75,223,157, 51, 60,169,210,221, 7,122,102, 16, 40,250,131,224, 1,125,125,160,123,169,120, 42,117, -243, 0,203,175, 7,160, 54, 64,107,203,165,146, 90, 42,141, 54,145,165,116, 32, 13,221,119,223, 98,190, 10, 61, 79, 0,104, 95, -196,214, 5,244,245,126,203,132, 18, 75,103,223,185,124, 72,108, 43, 35,168, 84,167,219, 52,152, 68,112, 46,195,133,145, 2, 24, - 76, 8,249, 76, 38,147, 85,201,201,201, 9,167,148, 62, 2,176,129, 82, 26, 91, 74, 78, 6,192, 48, 43,185,188,157,183, 66, 84, - 59, 50, 57, 35, 38, 75,103,184, 2, 96,185,185,194,200,132, 75,228,109, 39,191,180,186, 79, 11,255,134, 1,149,193, 6, 95, 70, -174, 70,219,249, 98,116,118,231,121, 55, 98, 39, 19, 66,106, 83, 74, 53,230,242, 49, 12, 51,194,221,221,221,199,195,195, 35,108, - 93,231,154, 91,198, 29,125,128, 46, 93,186, 0,192, 8,150,101,125, 60, 60, 60,194, 8, 33, 91,204,109, 27, 9, 33,110, 0,248, -148,210,168,188,255,114, 0,129, 0, 42, 0,120, 13,224, 9,165, 84, 89,198,107,244, 65,112,122,122,122,186,179, 44, 59,220,197, -197,165, 67, 66, 66,194, 9,134, 97,126,142,142,142,142,125,207,109,207, 38,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77, -200,205,205,117, 6, 0,137, 68,146,168, 82,169,254,182, 81,130,255,228,185,254,153, 55, 3, 70,156,185,250,164,157,105, 82,155, - 38, 1,133, 60,184, 36,224,204,213,224,102,111,239, 23,104, 40,172, 13,204,139,190,138, 5, 11, 22,144,133, 11, 23, 14,169, 88, -177, 98,101,134, 97,158,207,157, 59,247,173,208, 55, 5,183,205,155, 55,239,207,200,173,133,112,122,250, 54, 58,210,187, 79,207, - 22, 99, 71, 14,182,242,112,178, 66, 92,178,210,225,167,173, 59, 87,236,220,185,187,227,240,222,173,219, 1,192,183,223,126,219, -181, 92,185,114,229,121, 60, 94,216, 55,223,124,243,107,113,156, 28, 56,252, 13,176,108, 82,233, 18,159,207,128,158,114,228,210, - 30, 0, 25,220,188, 97,157, 38,163, 6,118, 34,148, 39, 65,223, 17,211,245, 22,115,149, 31, 34, 6, 79,181,168,122, 96,192,164, -158,157, 90, 49,159, 4,150,135,155,147, 13,192, 8,176,233,100,184,195,218,101,223,108, 0, 80,191, 20,217,108,255,234,198, 30, -196,165, 27, 64, 8, 64, 8,192, 16, 32, 59,151, 69,155,174,131,230, 89, 46,148, 8, 99, 43, 35,152,180, 39, 23, 0,120,239, 64, -100,213,118,114,114, 90, 63, 97,194, 4,187,234,213,171,187, 73, 36, 18,153, 74,165,170, 28, 26, 26,234, 51,103,206,156,214,132, -144,165,148,210, 67, 22,114,122, 85,242,116,223,191,118,210,176,122, 53, 42,120, 67,160,201, 6,171, 86,150,123, 17,250,178,225, -232, 13, 7, 70, 16, 66,250, 88, 56,101,194,236, 77,227, 7,250, 87, 83, 0,218, 39,215, 32,224,241, 32,179,177, 67,107, 62, 15, - 60,130,170,131, 78,135,207, 34,132,204, 43,169, 29,139,141,141, 53, 90,182,124,142, 29, 59, 22,208,169, 83, 39,212,243,241,196, -173, 78, 73,168,123, 36, 26, 0,242,211, 45, 40,235, 66, 0,179,242,218,225,221, 60, 30,239,108,171, 86,173,124,134, 15, 31, 78, -234,212,169,131,160,160,160, 10,123,246,236,105,197,231,243,195, 12, 6,195, 35, 0,207, 41,165, 58, 51,185, 5, 0,124,121, 60, - 94,245,127, 51,167,187,187,187, 84,163,209, 12,242,244,244, 28,217,185,115,231,234,157, 58,117, 34,190,190,190,120,246,236, 89, -157, 83,167, 78,205,171, 89,179,230,163,232,232,232,205, 34,145,104, 71,108,108,172,234, 61,124,225,141, 4,224,158,103,224, 88, - 96,198, 58, 22,192, 2, 74,105,156,185,231,200,205,205,117, 54,222,127,132, 16,231,191,179, 60,150,156,139, 16,242,148, 16, 98, -159,247, 27,197,173, 25,134,129, 94,175, 87,234,245,250,138, 37,112,250, 2, 96, 44,200, 50,165,148, 22, 23, 8, 90, 10, 0,109, - 26, 7,164,130, 32,216,104,209, 42,228, 35, 51, 56, 95,128, 81, 4,156,185, 22,108,255,150, 21,172, 0, 22, 44, 88, 64,230,205, -155,135,249,243,231,119, 2,208,148,101,217, 43,254,254,254,107,222,162,100,217,252,109,243,230,205,251,113,193,130, 5, 4, 64, -161, 13,137,125,249,154, 3,190,248,162, 75,139,197,179,199, 91,197,164,104,241, 32, 76, 5,123, 43, 33,230, 77, 29, 35, 82,171, -117, 13, 55,252,186,115,228,186,165,211,183, 24, 12,134, 79, 1,124, 98, 48, 24,238, 2,248,181, 56, 78, 14, 28,254, 6,180,176, -104, 82,233,162, 76,183,168,216,189, 25, 12, 24,236, 93,206,165,199,132,225,189,164,129,254,149,144, 11, 43,132, 39, 27,112,242, -248, 41, 0,216,103,153,213,169,247, 39,124, 33,118, 44,155, 63,213,175,105,189, 64, 60,142,209,225,110,140, 1, 57, 97, 58,240, - 24, 29, 12, 44, 5, 40,114, 75, 91,234,232, 52, 61,174, 62,215,128, 33, 0,143, 1, 24,134,128,199,148,146,140,213,188,248,118, -219,189,192,228, 4, 22, 96, 53, 47,202,248, 2,250,180, 74,149, 42,171, 23, 46, 92,232,154,144,144, 96,127,247,238, 93,136,197, - 98,216,217,217,241,221,221,221,253, 86,175, 94,157, 49,126,252,248,169,132,144,251,148,210,112, 51, 57,253,219,127, 82,253,250, -230,101,223,218,232,110,157, 66,250,222,255,129,199, 80, 8,229, 86,240,145, 74,113,234,139, 74,246, 61,142,135, 29, 34,132,248, - 83, 74, 99,204,225,172,228,234,208,166,186,191, 63,210, 14,175,195,131,180, 92,156,138, 85, 97,104,235, 6,168,102, 47, 69, 83, -189, 1,174,114,193,167,229,228,162,121,166,243,181,153,139,244, 59, 23,240, 32,237,175,151,214, 85, 46, 48,167,172,118, 0,166, -107, 52, 26, 70, 40, 20, 18,137, 68, 50, 96,241,226,197,218,190,125,251,230, 59,128, 53,109,218, 20, 77,155, 54, 37, 89, 89, 89, - 21, 46, 92,184, 80, 97,231,206,157,122, 66,200, 83, 74,233,145,162, 45, 22,178,200,220, 92, 85, 57,137, 84,154,243,211,134, 13, - 43,155, 53,107,198,138,197,127,206, 10, 83, 26, 78, 0,176,181,181,221, 82,165, 74, 21, 50,115,230,204,216,119,197,233,227,227, -115,166,105,211,166, 45,219,180,105,195,111,220,184, 49,220,221,221,243,183, 57, 58, 58,162,105,211,166, 36, 42, 42,170,198,149, - 43, 87, 54,156, 57,115,102,141,143,143,207,133,176,176,176, 54,255,100,171,147,103,169,130, 5,194,105,115, 33,129,144, 63, 76, - 99, 17, 33, 86,155, 54,109,114, 54,206,201,168,211,233, 96, 48, 24,242,215,198,133,101, 89, 24, 12, 6, 44, 94,188,216, 96,102, -157, 42,145, 23, 28,218,100, 97, 11, 91,139, 68, 34, 71, 51, 45, 91,193,110,226,244,170,114,185,220, 27, 64,251, 42, 85,170, 76, - 55,221, 92,217,233,205, 90,169, 84, 70,196,169,109,131, 1, 52, 43,238,118, 95,184,112,225,160,249,243,231,119,193,159,115, 86, - 86,239,217,179,231,133, 2,251, 85,207, 91, 43, 9, 33, 23, 25,134, 57, 6, 96, 27,128,191, 88,221,101, 50,171, 81, 19,190, 28, -110, 21,157,172,197,162, 67,201,216,118, 57, 19,131,154, 42, 48,233,115, 27,244,235,219, 91,126,224,127, 7, 71, 1,216, 98,114, -200, 51,127,127,127, 18, 18, 18,194,137,172,143, 11,117, 1, 56,153,252,215, 0, 48, 78,153,149,156,247, 92, 56, 20, 72, 55,221, -207,184, 78,202, 75,119,202, 59,142,154,240, 38, 1,184, 83,202,246,238, 82, 94, 30,254, 2, 62, 0,156, 56,113,130,118,232,208, -129, 24,215,133,183,236, 61, 78, 14,235,219,185, 93,135,207, 26,129,145,216,225, 69, 34,112, 35,146,130,207,232,192,128,226,214, -181, 11, 20,124,118, 71,129, 19, 23,105, 61, 33, 62, 61,190,174, 94, 45,240,251,159,151, 77,228, 61, 77,228, 99,219,149, 28,104, -115,179,145, 20, 31,137,196,216, 8,196, 69,191, 70, 76,228,235, 71, 0,153,103, 46,231, 95, 11, 14, 24,216,188,111, 64, 22,121, -245, 89,232,200,203,146, 57,181,202,144, 10,190,129,129,105, 34, 3,160, 85,134,152, 81,233,231,138,104,128, 91, 87,170, 84,105, -249,236,217,179, 61,159, 60,121, 98,173, 84, 42,149,167, 78,157,186, 20, 17, 17,225,226,234,234, 26, 53,102,204,152, 70, 30, 30, - 30,206, 93,187,118,149,237,223,191,127, 54,128,225,102,112, 6,118,110, 80,235,198,214, 53, 63,200, 83, 14,172,133, 38,244, 33, - 78,198, 41,113, 45, 33,135, 86,176, 17,147,113, 53,156, 96, 37,230,227,219,198,238, 86,237, 15,135,126, 15,160,159, 25,156,232, - 90,175, 90, 69,157, 42, 7,185, 42, 29,118, 60, 75, 85,157,141, 81, 58, 19,219,240,164, 53, 61, 26, 72,120, 73,177,240, 86,136, - 42, 47,104,232,142,246,135, 67,139, 44,187,167,167,231, 8,150,101,125,242,254,150, 55,174, 63,187,154,181,196,228,144,252,116, -162,112, 92,226,238,238, 14,134, 97,194,162,163,163,183,152,123,141, 36,146,194,103, 79,177,179,179, 67,243,230,205,225,239,239, -207,111,214,172, 89,117, 0, 71,138,226,212,106, 53,110, 44, 75,161, 80, 40,164, 14, 14, 14,118, 10,133, 34, 69,171,213,150,137, - 19, 0,236,237,237,187, 55,111,222,156,191,103,207,158,228,176,176,176, 91,125,251,246,125,109,109,109,253,150,245, 87, 46,151, -163,114,229,202,248,230,155,111,248,237,218,181, 43,145,211,197,197,165,245,206,157, 59, 65, 8,201,127,105, 23,132,183,183, 55, - 92, 93, 93,209,190,125,123,126,247,238,221, 91,151,246, 57,178,160,161, 57, 87,136, 69,107,193,219, 98,182,232,238,183,194,246, - 55,227,186, 39, 26,173, 75, 18,137, 36,177, 52,249, 44,128, 34,187, 59,197, 98,113,190, 21,170,224,185, 10,227,100, 24, 6,115, -230,204, 1, 33, 4, 2,129, 0, 66,161,176,208,117,139, 22, 45, 44,205,103, 20, 33,132, 17, 10,133,211,249,124,254,112,181, 90, -237, 41,145, 72, 98, 13, 6,195,118,181, 90,189, 56,207, 34,106, 91,216,189, 91, 20,167, 92, 46,247,126,241,226, 69,149,162, 42, - 69,173, 86,163,122,245,234,128, 26, 79,139,227, 12, 13, 13,245,174, 88,177,162, 47, 0,227, 20,109,151, 41,165,205, 76,254,155, -226, 50,165,244,243,188,223,207, 95,189,122,229,109, 20, 90,166,156, 58,173,214,199,211,217, 26, 15,194, 85,216,118, 57, 19,127, -204,118,199,103,139, 99,209,173, 54, 31,254, 94, 86,208,107,117,190, 61,123,246,220, 1,192, 55,239, 37,217,181,103,207,158,126, - 60, 30,239, 60,128,223, 0,100,252, 83,247, 60,199, 89, 54,148,160, 69,156, 8, 33,199, 77,206,223,209,248,127,198,140, 25,179, -150, 44, 89,242,132, 16,114,220, 52,221,116, 63,211,117, 94,123,115,156, 82,218,113,230,204,153,129, 75,151, 46,253,206,184,239, -223,161, 16, 45,233, 58,180, 78,202,149,227, 74,164, 53,248, 60, 3,248, 12, 1,159, 7,128, 18, 68,132,135, 34, 43, 51,253, 42, -125,253,191, 48,243, 44, 89, 61, 27,215,172, 85,125,217,238,213,211,152, 95,174,228, 32, 93,153,139,144,251, 23,113,231,226,111, -241, 6,189,225, 55, 16,122, 23, 96,130,240,154,125, 70,105,233,163,128,191, 17, 90,121,226,234, 45,177,245,222,190,114, 63,247, -243,243, 91, 50,103,206, 28,239,251,247,239, 43, 50, 51, 51,147,118,237,218,245, 76,173, 86,223, 7,240, 99,100,100,100,243, 31, -127,252, 81,182, 98,197,138, 54,213,171, 87,247, 61,112,224, 64,142, 25,156, 53,166, 14,238,119, 99,248,132,175, 36, 79,247,175, -135,232,105, 16,230, 60, 76, 54,252, 17,151, 51, 27,192,106, 68,101, 55, 78,202,213,159,253,161,121, 57,166,188, 66,136, 74,182, -162, 22,102,112, 98,234,224,126,136, 13, 11,229, 83,190, 4, 26,141, 30, 89, 26, 86, 3, 64,169,214,233,181, 84,238, 40, 1, 0, - 62, 67,248,121,156, 69, 27, 2,243,186, 11, 77,211,142, 29, 59, 38, 3,240, 23,103, 16,211,244,226,186, 17, 41,165,105,132,144, -239, 69, 34,209, 28, 66, 8,173, 91,183,238,131,106,213,170,101,219,217,217, 65,165, 82, 65,173, 86, 67, 40, 20, 66,165, 82, 33, - 34, 34, 2,183,110,221,130,157,157,157, 69,215, 42, 59, 59, 27, 10,133, 2, 44,203,150,153,211, 96, 48,144,141, 27, 55,202,159, - 60,121, 34, 63,120,240,160,203,164, 73,147, 82,170, 86,173,122,183,119,239,222, 47,157,157,157,213, 15, 31, 62,196,245,235,215, -145,150,150,134, 6, 13, 26,152,197,169,209,104,192,231,243,161, 82,169, 32, 22,139,193,231,243,161,215,235,193,178,108,190,248, -202,206,206, 70,106,106, 42,132, 66, 33, 52, 26,205, 63,126,191, 27, 45, 90,166, 40,174,251,173,176,253, 75,194,187,246,147, 42, -174,187, 51, 61, 61, 93,106,107,107, 59,221, 28, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16, 52,107,214, 12,195,134, 13, 67, -237,218,181, 17, 26, 26,138,189,123,247,226,206,157, 59, 16, 8, 4,249,251,155,221, 63,209,162, 5, 79, 34,145, 92,239,220,185, -115,224,236,217,179, 37,229,203,151,199,211,167, 79,189,150, 46, 93, 58,253,220,185,115, 93, 8, 33,159, 80, 74,217,146,173,244, -121, 93,130,111,186, 11,219,171,213,106, 60,125,250,212,146, 99,254,106, 5,175, 84, 41,130, 97,152,151, 44,203, 94, 1, 80,157, - 82,218,140, 16,114, 10,128,188,192,174, 74, 74,233,231,132,144, 76, 0,143, 24,134,121,206,178,108, 68, 97,150,113,133, 66,145, - 20,157,152,233,226, 96, 37,193,192, 38, 86,248,108,113, 44,122,124, 34,134, 88, 72,240, 44, 44, 30,149, 42,150, 39, 15,174, 30, -249, 36, 79,100,213,141,139,139, 3,128, 79, 0,132, 69, 69, 69,185, 25,133, 22,135,143, 3, 5,197,144, 81, 64, 45, 89,178,164, - 99, 97,226,170,144,103,243,173,244,165, 75,151,126,103,242, 63,173, 12,109, 71,115,188,237, 12,223, 34,207,202,245,167,208, 58, -113,226, 68,241, 10,132, 69,183,227,135,246,220,252, 76, 75,188, 3,235, 52, 49,177, 14, 81, 4,221,186, 14,128,110, 55, 43, 51, -238,157,164,140, 76,190,125,227,119,227,153, 77, 23,115, 16, 21,155,136,235, 39,183, 35, 41, 46,124, 27, 64, 39,209,215, 7, 50, -203,220, 88, 86,232, 25,232,236,232,128, 92, 45, 5, 75, 1,252, 69,108,189, 23,145,213,201,215,215,119,225,141, 27, 55,188,115, -115,115, 21,215,174, 93, 75,223,185,115,231, 75,141, 70,243, 51,165,116, 87,222, 62, 71,147,147,147,191,165,148, 66,161, 80,240, - 5, 2,129,180, 56,103, 78, 66, 72,237,169,195, 7, 93,253,126,227, 86,201,203,199, 15,240,227,193,147, 72,207,201, 49, 92, 76, - 84,117,165,148, 30,207,219,231,252,189,100, 85, 12, 5, 45, 39, 96, 8,220,228, 2, 87, 66,136,132, 82,154, 91,164,200, 26, 62, - 8,223,111,220,138,105,131,251, 50, 58, 47, 31, 92,209,231,194,195, 65, 44,162, 73, 57,152, 49,168, 39,239,190, 74,135,107, 15, -159,194,209,202, 90,152,199,137,162,186, 15, 25,134, 9, 51, 17, 77,229,143, 29, 59, 38,235,212,169, 83, 14, 0,211, 46,209,191, -164, 51, 12, 19, 86,194,195, 54,151, 16,226,178, 99,199, 14, 70,167,211,101,135,134,134,194,213,213, 21, 46, 46, 46,176,177,177, - 65, 72, 72, 8,254,248,227, 15, 60,123,246, 12, 44,203,162,102,205,154, 22, 93,175,148,148, 20, 60,124,248, 16,237,219,119,152, -148,148,148,104,109,103,239,160,188,122,229,242,138,210,112,178, 44, 75, 0, 32, 48, 48, 16,129,129,129,146,152,152, 24,207,227, -199,143, 59, 47, 90,180, 40,210,219,219,123,183, 74,165,122,203,114, 96,174,208,202, 19, 46,249, 34, 80, 34,145, 64, 40, 20, 34, - 51, 51, 19, 9, 9, 9,200,202,202,122,211,151, 99,107,251, 94,132, 86, 97, 22,170,119,185,255,223, 41, 14, 11, 19, 83,132,144, -254, 0,166,155, 89, 22,232,245,122, 8,133, 66,212,175, 95, 31,107,215,174,197,157, 59,119,240,219,111,191,193,203,203, 11,131, - 7, 15, 6,195, 48,120,242,228,137,165, 89,100,111,220,184, 49,189,107,215,174,129, 59,118,236,144, 68, 68, 68,224,217,179,103, -176,181,181,197,218,181,107,197, 35, 71,142,172,116,225,194,133,185, 0,150,151, 88, 86,147,209,133,238,238,238,189,170, 87,175, -254,151,125, 92, 93, 93,109, 78,159, 62,237,108, 20, 96, 5, 71, 36, 22,130,244,185,115,231,254,224,239,239,191, 58,175,187,176, - 41, 0, 57,165,180,197,193,131, 7, 9, 0,244,232,209,131, 18, 66,140, 47,164, 71, 7, 14, 28,104, 25, 18, 18, 66,231,207,159, - 95,104, 59,151,148, 24,183,241,135,181,155,126,248,126,193, 84,209,228,246, 54,232,241,137, 0, 18, 33,129,181, 76,128,197,107, -182,232,238,221,186,252,208,205,205,237, 56,128,174,113,113,113,112,115,115,203, 6,240,156,199,227,133, 25, 12,134, 88,206, 23, -254,195, 66, 97, 90, 36,207,170, 28, 87,152, 80, 42,141, 80, 51,181,120, 25, 49,115,230,204,192, 37, 75,150,220, 46,139,200, 50, -117,130, 39,132, 80, 66, 72, 11, 74,233,165,124,143,165, 34,187, 12,243,109, 95,140,155,171,139,163,253,140,193,141,193,178,128, -222, 0,232, 13, 20,202, 28, 21,158, 62,190,147, 3, 9, 57,104, 86,142,196,162,101,139,102,127, 85,225, 65, 52,131,216, 52, 45, - 46, 29,217, 68,147,226,194,187,211,215,251,135,190, 43,145,229,234,236,120,113,207,166,111,113,231,181, 6, 6,246,141,206, 98, - 89,154,255,251, 61,188,112, 42, 59, 58, 58,174,184,121,243,102,121,177, 88,172,120,241,226,133,225,192,129, 3,177, 26,141,102, -131, 81,100,229,161,127,157, 58,117,116,114,185, 28,217,217,217,106,173, 86,155, 93,140,200,242,108, 81,187,198,229,239, 55,110, -149,228,106, 52,200, 80,169,193,115,112,126, 75,100,229,161, 81,203, 42, 30, 30, 68,162, 0, 5, 16,158,169,141, 45, 78,100,181, -168, 93, 3,223,111,220,138, 92,141, 6, 86, 54,182,140,231, 39, 45,240,201,196,181,200, 36, 10, 10, 0, 14,110, 30, 76,203, 47, - 23,163,221,143,151,160,100, 20,108, 30,103,145, 62, 90,209,209,209, 91, 98, 99, 99,103,198,198,198,206, 52, 17, 87,225, 0,102, - 86,181, 17,254, 37, 61,192, 86, 52, 51, 54, 54,118, 38,203,178, 91,204,168,218,216,126,253,250, 69, 7, 4, 4,100,248,251,251, -103,164,164,164, 32, 56, 56, 24,105,105,105,248,241,199, 31,241,244,233, 83,176,236, 27,101, 93, 88, 55,138, 25, 2, 9,105,105, -169, 86,148, 82,164,165,166,200,103,207,158,109, 83, 26, 78,131,193,240,214,179,229,225,225,129, 49, 99,198, 8,115,114,114,108, - 35, 35, 35,173, 77,183,153,203,169,209,104,242,235,156, 82, 10,141, 70,131,140,140, 12,104, 52, 26,188,124,249, 50, 95,100,229, -157,255,189, 89,180,140,191,165, 82,105,130,209, 65, 84, 34,145,128, 16, 82, 88,247,219, 59,137,254,108, 60, 23, 33,132, 74,165, -210,132, 82,136,195, 18,203, 99,230,117,135, 80, 40,196,176, 97,195,112,251,246,109,132,134,134,130,199,227, 65,169, 84, 34, 39, - 39, 7,173, 91,183,134, 72, 36,178,212,162, 69,133, 66, 97,255, 89,179,102, 73,194,194,194,144,156,156,108,116,166,135,193, 96, -192,164, 73,147,164, 98,177,184,191,165,166,251,216,216,216,182, 47, 94,188,240, 45,184,196,199,199,103,152,250, 20,150, 22, 7, - 15, 30, 36, 61,122,244,160, 61,122,244,160, 70,193,101, 46,210,163,131, 55,254,118,244,248,217,175,191, 89,150,157,163,204, 66, - 69,119, 41,178,179, 50,176,120,201,247,186, 27, 55,174, 92,156, 62,105,116,195, 3, 7, 14, 44, 5,240, 60,239,144,231, 7, 14, - 28, 24,244,205, 55,223,252,138,188, 48, 15, 28, 62, 28, 20,166, 69, 76,159,189,119,209,189, 87, 24, 71, 94,247,161,180,148,148, -198, 17,135,205,141,194, 43, 79,116, 93,124,203,162, 85,108,227, 83,169,119, 45, 23, 71,135, 11, 59,214, 45,176, 58,254, 24,136, -142, 10, 71, 82, 92, 4, 62,105,216, 2, 79, 31, 63, 0,171, 51, 28,162, 47, 14,148, 56, 60,157,248,244,172,226, 95, 53,224,203, -230, 13,171, 97,217,241,108,188, 8, 58,141,244,164,184,117, 52,108,255,161,119,113,129, 72,133,158,129, 46, 78,142, 23,127, 93, -191,208,254, 84, 48,131,168,168,112, 28,249,117, 53,116,218,191,232,138,147, 22, 55,222,172, 70,148,157,158, 0, 77,150, 1, 18, - 38, 71, 98,225, 69,125,233,228,228,180,227,135, 31,126, 24,221,176, 97, 67, 89,223,190,125, 95,164,165,165, 45,162,148,238, 55, -105,224, 63,245,245,245,157,178,110,221,186, 74, 81, 81, 81,248,227,143, 63, 94, 0,184, 91, 12,103, 52,143,199,219,240,199,175, - 91,166, 74, 43,248,225,199, 89, 95,235, 15,222, 9,238, 76, 41, 61,101,194,233,223,170,122,149,227,139,166,140,101,216,123,191, -227, 97, 68, 2, 94,103,168,255, 40,134, 19, 60, 30, 15,127,252,186, 5,210, 10,126, 8, 77, 87,234, 4, 98, 41,172, 92,203,227, - 69,182, 65,200,231,243,111, 15, 31, 62, 76,200,240,248, 96,248, 66, 4,167,229,234, 30, 38,241,240, 58,163,116, 83,233,189,200, - 54,128,207,231,195,217,249,207, 30,164,224, 52,139,198, 62, 88,221,190,125,155,225,241,120,111, 9,116, 83, 11,145,165,150, 34, - 75, 96, 46,103, 65,161,101,132, 94,175, 39,165,229, 84,171,213,133,138,219,194,124,181, 88,150,253, 91,202,111,137,133,202,180, -203,208,232, 79,151,155,155,235, 44,149, 74, 19,140,221,127,239,202,162, 85,150,145,136,197,117, 95, 90,146, 63,134, 97,192,178, - 44,132, 66, 33,106,214,172,137,227,199,143,195,222,222, 30,214,214,214,176,182,182,134, 84, 42,133,131,131, 67,190,208, 98, 24, -179, 71,233, 80,181, 90,237,229,229,229,133,151, 47, 95, 66, 34,145,228, 47, 98,177, 24,129,129,129, 80, 42,149, 30,239,207,118, -255,247, 96, 68,239, 86, 93,214,239, 60, 60,240,248,241, 19, 95,106,213,185,213,252,252,124,233,221, 27, 23, 30, 78,159, 52,186, - 29, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,180,124, 51,102,204,152, 85,152,133,171,180,130, 11,111,186,250, -140,107,228, 11, 45,163,130, 44, 76, 73, 26, 69,214,182,181,243,173, 15,223, 7,162,163,195,112,118,255,154, 44,157, 86,147,198, -178, 58,239,215,207, 30, 0, 12,182,155,149, 5,134,214,235,210,190, 37, 57,251, 68,131,204,244, 36, 60,191,123, 58, 28, 42,209, -204,119, 41,178,118,172, 95, 96,127,236, 49, 65, 84, 84, 56, 78,237, 93,157,161,211,107, 63,165,175, 15,220, 47, 11,247, 0,145, -168, 75,239,170,182, 29,135, 55,141,133,129, 24,208,255,105,200,231,238, 77, 73,151,216, 43,197,143, 12, 51, 69, 82, 82,210, 98, - 43, 43, 43,102,249,242,229, 67,115,115,115,231, 83, 74, 15,154,220, 56,173, 43, 86,172,184,108,227,198,141,158,145,145,145,162, -171, 87,175,166, 94,188,120,145, 2, 88, 82,194, 11,124, 26, 33,132, 87,187,188,199,248,123,225, 49,157, 41,165,191,155,112, 6, -118,172, 19,112,109,235,146,185, 10,221,181,131,200,142,139,194,204,107,209,153, 0,102,150,244, 21,158,247,162,177,119,116,116, - 36, 3, 6, 12, 96,179,178,178, 32, 20,137, 88,157, 78,199,107,212,168,145,225,171,175,190, 98,226,227,227,145,153,149,205,239, -122, 44,193, 30, 64,106,105,234, 85, 40, 18, 65,167,211,193,195,195, 35, 63, 45, 51, 43, 27,132, 16,184,185,185,149,244,176, 45, - 4, 48,169, 81,163, 70,164,126,253,250,183, 86,175, 94,125,166, 56,177, 82, 26,139, 86, 73, 48,151,147,101,217, 66,223,162, 58, -157,142,148,150,211,212,162, 85,146,208,122,159, 22,173,194, 68,139,169, 72, 52, 21, 66,165,241,209,250, 59,197,161, 37, 34,172, - 48,235,176,209,162,245,224,193, 3,148, 43, 87, 14, 90,173, 22, 10,133, 2, 10,133, 2, 86, 86, 86,200,202,202,130, 64, 32,128, -133,101,102, 37, 18, 73,100,112,112,176,175,147,147, 19, 12, 6,195, 91, 98,235,197,139, 23,144,203,229, 49,150, 90,180,220,221, -221, 79,231,141, 58,124, 11,174,174,174, 54,239,162, 94, 77, 45, 89, 61,122,244, 40, 85,191,194,250, 37, 83,119, 2,216,217,179, -103,207, 29,143,110,156,248,196,205,205,237,132,191,191, 63, 1, 0,110,132,225,199,101,205, 42,162,135, 45,169,128, 37, 74, 99, -242, 63, 9, 0,201,251,159,100, 34,196, 76,127,107, 10, 73, 75, 89,178,100,201, 5, 19,255,174,164, 50, 22,193, 24,226,225, 45, - 95,104,126, 73,150, 44,103, 7,251, 11, 63,255, 56,223,122,127, 16, 16, 19, 21,134, 75,135,214,102,232, 13,218, 79,193,210,184, - 27,231, 14, 29, 4, 65, 14, 94, 31,188, 4,236, 55,163,137, 64,237,218, 85,189,241,219, 19, 29,146,162, 95,128, 82,118, 27, 77, -248, 53,167,204,141, 99,158,200,218,182,118,190,253,225, 7, 4,209, 81, 97, 56,187,127, 77,134,222,160,253,180, 52,193, 78,141, - 24, 78,136, 29, 79, 46,217, 48,176, 77,221, 94,222, 21, 61,193, 82, 29, 88, 33, 69,183,105,142,252,231,247,114,126,243,106,195, -219,207,102,179, 95, 70,223, 48, 47, 16,104,118,118,246,183,132,144,195,148,210,167, 38, 13,242,231,149, 42, 85,250,238,167,159, -126, 42, 31, 19, 19,163,184,119,239, 94,230,230,205,155,195, 88,150, 93, 72, 41, 45,113, 20, 21,165,244,107, 66,200,207,166,241, -114, 8, 33, 53,166, 14,237,119,163,223,144,225,146,176,115, 59, 97, 23,246, 20, 83,174,197, 26,158,167,105,250, 82, 74,227,205, -200,170,189, 88, 44, 62,120,242,228,201,151,181,107,215, 38, 74,165, 18, 58,157, 14,201,201,201, 56,124,248,112, 48,165, 20,118, -118,118, 56,121,242, 36,219,175, 95,191,131,106,181,186, 71, 81, 98,171,168, 81,135, 0,150,168, 84, 42,163,200,202, 79,183,182, -182, 94, 98,109,109,109,244,209,218, 82,196, 75,204, 24,222,129,228,133,119,104,240,251,239,191,135,180,107,215, 46,186, 48,177, - 34, 22,139,145,155,107, 89,148,144,162, 70, 49,150,134,179, 40,139, 86,193,116, 75, 56,141,221,151, 70, 39,248,130,233, 70,240, -120, 60,176, 44,251,151,244,127, 90,180,152,142, 14, 44,141,200,121,203,186, 92, 66,224,208,210,140, 68,124,215, 22, 45,227,181, - 16, 10,133, 56,122,244, 40,134, 12, 25, 2,131,193, 0,153, 76, 6, 43, 43, 43,200,229,114, 28, 58,116, 8,198,240, 15,150,100, - 81,167,211,237, 90,178,100,201,172,141, 27, 55, 74, 41,165, 16,137, 68,249, 66,107,254,252,249, 42,173, 86,187,203, 28,161,149, - 31,241,157,165,193,149,157,138, 31,117, 88,216, 49, 69,248,107,217, 46, 92,184,112, 16,203,178, 93, 80, 32,132, 67,129,253,222, - 10,253, 80, 92,120, 7, 0,118, 11, 23, 46, 28,193,178,172,113, 0,205, 91,163, 11, 77,246, 51,190, 75,124,123,246,236,185,163, -224,168, 67, 14, 31, 60,238,252,139,243,214,194, 36, 80, 41,201,107, 47,242, 5, 23,191,104,145,213,211,223,217,193,241,194,150, -213,243,173,119,223, 6, 98,163, 94,227,250,209,117, 25, 6, 86,103, 42, 94,154, 88,216,242,214,118,119,182, 69,234, 77, 21, 50, -147, 35, 1,138,123,101, 23, 89,189, 43, 59, 59, 58, 92,220,186,102,190,253,129,251, 12, 98, 34,195,112, 49, 79, 12,150, 69,100, - 13, 16,137,186, 4, 86,241,220,218,231,243,198,118, 54, 68, 15,125, 68, 8,126, 30,220, 11, 65,157,180,104,220,219, 6,245,218, - 43, 80,169,150,164,215,201, 45,169,159,185, 55, 37,195,205,181,110, 21, 16, 89,157,202,151, 47,191,224,214,173, 91,222, 44,203, - 42, 46, 93,186,148,181,113,227,198,215,185,185,185,107, 40,165, 39, 44,120, 57,152,138,172,218, 51, 70, 14,190,250,221, 79, 63, - 75,130,131,238, 96,217,174, 99, 80,233, 52,134,211,209,217, 61, 77,187, 21,139,131, 72, 36,250,246,252,249,243,242,234,213,171, -147,148,148,148,124, 43,137, 86,171, 69, 70, 70, 6,178,178,178,160, 86,171, 81,167, 78, 29,102,205,154, 53,242,241,227,199,127, - 11,224,203, 34, 94, 54,239,124,212, 97, 97, 80, 40, 20, 16, 10,133,208,106,181,249, 22, 45,177, 88, 12, 27, 27, 27,164,164,164, - 96,223,190,125, 40,201,242, 38, 20,138,226, 24,134,148,147,202,100,106,137, 68,194, 22,102, 85,179,148, 51, 15,209,159,127,254, -185,231,194,133, 11, 37,117,234,212,249,139, 69,171, 52,156,148,210,156, 54,109,218,200,214,172, 89, 3,111,111,111,104, 52,154, -183, 4, 21,195, 48, 16, 10,133,136,138,138,194,162, 69,139, 64, 41,205,249,167, 91, 30, 83,209, 98, 42,134,242,124,168,254, 34, -132,204,181, 24,149,212, 53,104,233, 72, 68, 83,225, 38, 22,139,145,158,158, 46, 37,132,244, 47, 34,130,189,217, 22, 45,163,208, -122,250,244, 41,118,236,216,129,246,237,219,195,206,206, 14,105,105,105,216,191,127, 63, 66, 66, 66, 32, 18,137, 64, 8,177,196, -170,197,214,175, 95,255,251, 43, 87,174,116,234,219,183,111,192,148, 41, 83,164,213,170, 85,195,243,231,207,177,112,225,194,220, -160,160,160, 80,149, 74,181, 16,230, 4, 54,205,139,248,110, 12, 70,106,214,168,195, 2,199, 20, 68, 17,225, 29, 62, 47,130,205, - 52,244,195, 91,225, 29, 76,113,253,250,117,159,242,229,203,251,227,205, 72, 66,227, 11,215,116,116,225, 91, 47,227,184,184,184, -186,224, 70, 29,114,248,103,219,186, 75,132,144,252,128,165, 70,241,245,151, 81,135,127, 61,146, 76,234, 59,120,164,245,174,219, - 4, 81, 17,161,184,123,114, 67, 65,145,101, 78, 99,211,202, 52,214,134, 68, 42,175,198,146, 55,195,153, 51,147,163, 0,202,179, - 88,104, 21,228, 4,101,191,238, 59,104,164,253,158,187, 4,177, 81,175,112,237,200,122,139, 69,150, 41,231, 0,145,232, 27, 1, -143,204,233,208,172,182,176, 73,173, 42,144, 39,134, 35, 62, 58, 22,251,158, 38,165,134,166,169,135, 95, 35, 90, 68,188, 82,255, -220,126,132,189,189,157,171, 0, 29, 71, 59,216,223, 60,150,249,155,199,167,140,150,106,233,146,216,171,116,126,161,249,252,235, - 57, 43, 91, 91, 91, 47, 15, 10, 10,114,146, 72, 36,214,119,239,222, 53,108,218,180, 41, 42, 55, 55,119, 5,165,116,175, 89,101, -255,235,118,207,186, 85, 42, 94,250,110,253, 22, 73,182, 50, 7, 74,141, 22, 98, 23, 55,195,225, 27,143,187, 23, 21, 0,179, 32, - 39, 33,164,229,208,161, 67,107,212,175, 95,159, 49, 21, 89, 26,141, 6,153,153,153,200,202,202, 66,102,102, 38, 50, 51, 51, 17, - 19, 19,131,230,205,155, 51, 53,106,212,168, 70, 8,105, 73, 41,189, 80,144,243, 93,141, 58, 52,229, 52, 9,239, 48, 11, 0, 67, - 8,185,243,224,193,131,236,118,237,218, 65, 42,149, 66,169, 84,194,203,203, 11,122,189, 30, 39, 79,158, 68, 80, 80,144,146,101, -217, 75, 0, 30, 20, 87,118,149, 42,199,139, 16,194,168,114,114,106, 14, 26, 52,168,249,228,201,147,223, 26,146,238,236,236, 12, -123,123,123,139, 56, 1, 32, 53, 53,181,234,239,191,255,254,213,131, 7, 15,190,110,223,190,189,205,172, 89,179,196, 62, 62, 62, - 48, 24, 12, 76,105, 57,211,210,210,108,238,221,187,183,162, 73,147, 38, 99,219,181,107,199,255,238,187,239, 96, 99, 99, 3,131, -193, 0,169, 84,138,204,204, 76, 44, 92,184, 16, 87,175, 94,213, 83, 74,215,103,100,100, 76,177,228, 94, 42,165, 5,171,224,189, - 84,168, 5,168, 40, 33, 84,216,254,255, 68, 62, 11, 8, 55,216,218,218, 78, 7, 48,189,136, 8,246, 48,247,217, 52, 10, 45, 30, -143,135,240,240,112,108,218,180,233, 47,113,180,140,225, 31, 10,227, 46,162,236,244,226,197,139, 6, 66, 72,195,187,119,239, 78, - 31, 56,112,224,112,165, 82,233, 41,151,203, 99,117, 58,221,118,149, 74,101,140,163, 37,180,164, 13, 81, 42,149, 17,133,141, 58, - 44,184, 15, 96, 91, 44,103,129,240, 14,111,133,112, 40,112,216, 91,161, 31, 10,134,119, 48,229,108,212,168, 81, 24,195, 48,207, -242,186,224,159,161,192,232, 66, 19, 78,223,184,184,184,186,110,110,110,151, 0,200, 10,142, 58,252, 39,238, 37,142,243,191, 45, -182, 80, 92,192,210,194,143,130,228,220,173,112,136,164,169,120,248,199, 54,139, 69, 86, 97, 80,231,230,132,206,221, 19, 89, 75, -163,206,133, 50, 35,225, 57, 13,219,155, 88,246,171, 13,249,185, 59, 17,144,200,211,113,255,220, 47,233, 6, 67,238,167, 52,244, -127, 15, 74, 79,135,153, 63,157, 58, 40, 36, 54,246,120,248,213, 16,196,166, 43,113,234,117,218,126,154,163,254,114,103,222, 92, -129,158, 13,201,149,173,179,227, 55, 52,237,102,211,203,209, 67,128, 85, 83,183, 67, 50,195, 65, 88,239,179,102,102,207,129,104, -116,144,255,241,199, 31,199, 52,109,218,212,170, 87,175, 94, 47, 82, 83, 83,223,114,144, 47,197,133,142, 38,132,252,116, 98,227, -202,169, 14,213, 27, 96,221, 55,211, 12,123,110, 60, 46, 56, 10, 17,197, 91,117,132, 45,102,204,152, 33, 84, 42,149,127, 17, 89, - 5,133, 86,102,102, 38, 30, 62,124,136,193,131, 7,139, 31, 60,120,208, 2,192,133,191,152,114,162,163,183,136, 68, 34, 4, 7, - 7,163,121,243,230, 75,242, 44, 86,225,215,175, 95,159,105,228,232,211,167, 79,126,250,184,113,227,102, 86,172, 88, 17,169,169, -169, 37,149,117, 46, 33,100, 35,222,204,117, 24,191,115,231,206,134, 71,142, 28,105, 56,105,210, 36, 97,251,246,237,113,243,230, - 77,156, 61,123, 86,171,213,106,111, 0,184, 97,238,180, 54,121,241,135,238, 17, 66, 30, 47, 91,182,172, 33,143,199,155,107,220, - 22, 28, 28,140,109,219,182,149,134, 83, 15, 96, 5, 33,228,167,157, 59,119,206, 61,119,238,220,208, 65,131, 6, 89,235,116, 58, - 60,125,250, 20,191,252,242, 75,105, 57,191,114,114,114,154,115,242,228,201,237,103,206,156,233, 58, 96,192, 0,102,194,132, 9, - 88,187,118, 45,254,247,191,255,177, 6,131,225,136, 64, 32, 24,148,148,148,164,124, 79, 13,207,230,188,105,117, 54, 91, 48,231, - 97,137,188,101,233, 26, 52, 51,223,113,101,110,150,242,202,209,162, 69,139,124, 43, 35,165,244, 45,191, 58,163,192,178,180,235, - 16,128,109,222,125,186, 30,192, 90,188, 29, 21,158,135, 63, 35,199,155,203, 24, 16,167,182, 13,134, 26, 79,139,159, 84,218, 22, -160, 8, 40,129, 45,125,238,220,185, 63,204,155, 55,239,135,130, 33, 28, 76,119, 42, 24,250, 97,193,130, 5, 40, 42,188, 3,128, -180,185,115,231,126, 15, 0,254,254,254, 36,175,187,240, 19,228,141, 46, 52,225,220,145,151, 46,155, 63,127,254, 64, 0,197,113, -114,224,240,143,161, 24, 31, 45, 58, 43,248,202, 30, 29, 0, 7, 16,102, 38,125,181, 47,184,204, 13, 24, 75,103,156,223, 61,127, - 45, 40,210,168, 65, 63,253,157,148,128,229,205, 14,190,178,155, 5,136, 45, 8, 51,131,190,250, 95,153,243, 73,108,236,145,181, -112, 12,254,247, 36,150,198, 43,117, 95,236,212,104,222,178, 6,229,249,100,245,118,111, 74,246,217,185, 11, 14,127,245,169, 3, - 57,145, 58,208,226,243, 36, 37, 37,125,103,101,101,197, 91,177, 98,197, 80,149, 74,245,150,131,124, 25, 94, 18,211, 8, 33,188, -122,149,189,199,223,126, 25,209,197,220,238, 66,147,198, 95,228,238,238,254, 56, 55, 55, 23,132, 16,168,213,234,124,129,149,149, -149,133,140,140,140,252,255, 90,173, 22, 73, 73, 73,240,242,242, 2, 33, 68, 88,220, 75,199,116,138, 24, 0,111,113,154,194,148, -211,194, 23,226,101, 66, 72,208,194,133, 11,155, 45, 92,184,176,102,158, 85,232,114,105,187,204,242, 4,207,101,169, 84, 22, 75, - 8,241, 20,138,196,202,235,215,175,159, 43, 35,103, 78,158,165,100,213,170, 85,171, 22,203,229,242,186,193,193,193,127,148,133, - 51, 79, 68,117,119,112,112,112,223,177, 99,199,129,173, 91,183, 54,224,243,249, 55, 9, 33, 61,211,211,211,223,247,164,210,163, - 96,222, 28,135, 37, 90,140,204,177,136,149, 22,127,135,112, 51, 24, 12,217,115,230,204, 73, 44, 40,188, 10, 90,175,140,255,181, - 90,109,174,153,207,167, 37,163, 40, 75, 16, 25, 36, 27, 0,222,204, 93,248,102, 90, 29,115, 39,149, 6, 80,228,220,153,243,230, -205,163, 11, 22, 44, 32, 12,195, 28, 1,240,156, 97,152,151, 5,157,213, 77,183, 45, 88,176, 0,243,230,205,163,243,231, 23,253, -141,106,228, 12, 9, 9,161, 60, 30,239, 15, 0, 97, 60, 30, 47,220,148,215, 52,221,120, 76,113,156, 28, 56,188,119,161, 69, 95, - 31,136, 2, 48,228,157,126, 41,134, 29, 56,135, 55,142,140,239,142, 51,124,111, 4,128, 1,239,138,143, 5,150, 15,175,215, 98, - 42, 0, 66,129, 85, 5, 69,150, 41, 98,175,208, 35,110,141,201,146,122,159, 53,155,148,103, 13,251,206,210,243, 21,230, 32,255, - 14,196,214, 95, 28,228, 45,120, 65,156,145, 74,165, 68,169, 84, 66,165, 82,189,101,189,202,204,204, 68, 78, 78, 14,178,179,179, -243, 29,206,179,179,179,141, 93, 86,180, 24, 78, 72,165,210,252,110, 68,134, 97,194,210,211,211,243, 57, 77,211, 77, 57, 75, 41, -100, 78, 17, 66,206, 80, 74, 13,239,162, 46, 85,170,156,114,121, 47, 56,222,187,226,204, 27,228, 48,252, 93,114,166,164,164,196, - 2,104, 84,169, 82, 37, 81,104,104,168,230,223,210,192,188, 11,235,208,223,141,119, 45,220,242, 62, 24,170,254, 13,117,249,252, - 29, 19,254,210,166, 73, 0, 15,166,177,131, 74,154, 84,218, 40,208, 40,126, 41, 34,143,148,188, 81,146, 20,192,142, 87,175, 94, -121,179, 44, 27, 81,136,101,233,173,109,243,231,207, 71, 81, 49, 3, 11,112, 2,192,111, 81, 81, 81,238, 6,131, 33,174, 0,239, - 91,233,197,113,114,224,240, 47,177,104,253, 55,177, 75,163,153, 7, 96,158,185,251,199, 93,163,179, 1,204, 46, 99, 3,250,244, - 93,151,163, 52, 34, 11, 0,116, 58,221,121, 0,112,114,114,130,147,147,147, 37,199,149,184,205,116,238, 66, 83, 12, 28, 56,112, -203, 59, 46,187,225,111,168,207, 15,130,243,223, 36,178, 56,252,187, 65,211,130,163, 0,124, 83,226,126, 37, 71,131,255,139, 48, -202,251,153, 6, 32,173, 8,173, 83,220,182,226, 56, 1, 32, 19, 64,102, 33,199, 22,149,206,129,195,123, 5,195, 85, 1, 7, 14, - 28, 56,112,224,192,129,195,223, 3, 2,160, 85, 17, 95, 16,102,143, 38, 32,132,180, 42,197,215,252, 57,142,147,227,228, 56, 57, - 78,142,147,227,228, 56,255, 91,156, 37,113, 23, 28,189,252,174,166,231,250, 71,197,149,105,190,141, 35, 97,254,142, 5, 64, 43, -142,147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206, 82,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3, -135, 15, 8,173,125,137, 27,223, 0,230, 84, 40,141,121, 23,124,159, 87, 34, 30, 0,240,174,248,254,139, 32,132,184, 1,232, 96, -146,116,194, 56, 24,136, 19, 90, 31,238, 69,173, 12, 96, 22, 0, 27,147,228,219,148,210, 37, 5,246,219, 13, 64,102,146,164, 4, -176,144, 82,250,210,146,243,241,120,188, 37,205,154, 53,251,242,234,213,171, 43,117, 58,221,194, 82,228,215,219,205,205,237,123, - 66, 72, 29, 0, 2, 66,200,171,132,132,132, 37, 58,157,238, 92, 25,234,160,130,171,171,235, 82, 0,181, 24,134, 17, 16, 66, 66, - 19, 18, 18, 22,233,116,186,139,101,224, 84,184,184,184, 52,166,148,186, 2,224, 9, 4,130,148,152,152,152, 91,165, 29, 61,215, -115, 65,136, 48, 83,169, 23, 0,128,181,156,175, 59, 48,207, 95,107,110, 26,119,151,115,224,240,159,111,232,121, 5,147,218, 86, -196, 98, 66, 49,197, 0,144,182, 21,200,154,211, 97,152, 82,228,241,133, 13,184, 41,192,217,182, 34, 22, 83,250,134,163,109, 37, -178,226,244,171, 18, 6,119,153,193,105,196,102,128, 25,105,206, 4,231,127,195,192,160,247,128, 14,166, 93,156,121, 1,152, 55, -151, 40,180,250,248, 18, 55, 3, 31,252, 3,193, 52,202,248, 18, 2, 80, 19, 64,101, 0, 47, 1, 60,160,148,102,149, 81, 48,124, - 16,156,255, 66,204,165,148,246, 43, 80,238,191,236,244,233,167,159,118, 62,115,230,140,204, 56, 61, 11,203,178,144, 74,165,122, - 0,131, 45,168, 79,231,190,125,251,206,248,249,231,159,209,171, 87,175, 57,132,144, 31, 40,165,217,230, 30,111,111,111,223,163, - 66,133, 10,107,183,108,217,226,212,160, 65, 67, 34, 18,137,240,234, 85,168,231,168, 81,163,170,185,184,184, 28, 73, 72, 72, 24, -110,105,225, 29, 28, 28,250, 87,172, 88,113,213,166, 77,155, 28,155, 52,105, 2, 66, 8,130,130,130, 60,191,250,234,171,154,174, -174,174,123,227,227,227,199, 90,202,233,232,232, 88,165, 98,197,138, 45,215,173, 91, 39,109,220,184, 49, 36, 18, 9, 30, 60,120, - 96, 53,122,244,104, 87, 87, 87,215,167,241,241,241,151, 44, 21, 89,143,130,142,117,213,107,213,203, 0,128, 47, 20, 79,107,248, - 67,230,177,212,160,203,157, 74, 74,235,185, 0,191,113, 98,139, 3, 7, 14,166,232,239, 14, 87, 74, 49,245,204, 47,223, 48, 0, -208,102,232,183, 19,250,187, 99,229,174, 88,196,191, 35,190, 41,131, 60,176,118, 71, 12, 18,202,146,207,205, 0,243, 21,159, 63, -161, 94,253,250,142,227,174, 93, 11,213, 2,219,255, 35, 6,144,145,133,165, 23, 41,180,122, 4,144,133,224, 99, 22, 0,242,121, -101,178,247,108, 24,239, 74,235,214,173, 43, 13, 27, 54,140,212,174, 93, 27, 65, 65, 65, 85,246,238,221,219,129,207,231,135, 26, - 12,134, 32, 0, 79,204,141,106, 77, 8, 17, 0, 8,228,241,120,117,254,205,156,255,114,200,243,202,157, 0,224,182,209,162, 85, -112,167,243,231,207, 31,229,243,249, 70,139, 86, 61,165, 82,233, 82,192, 10,102, 14,202,235,116, 58, 60,123,246, 12, 12,195, 8, - 0,248,224,175, 83,106, 20,117, 93, 60, 61, 61, 61, 55,220,184, 29,228, 64,248, 82,164,229, 2,200,213, 66,100,229,130,159,183, -237,180,159, 60,113,108,119,107,107,235, 43,153,153,153,191, 90,112, 51,251,120,121,121,253,240,240,225, 67, 7,153, 76, 6,150, -101,145,149,149, 5, 87, 87, 87,108,217,178,197,118,242,228,201,253,164, 82,233, 69,149, 74,245, 63, 75,196,121,197,138, 21, 91, - 62,126,252, 88,106,156, 80, 90,163,209,192,211,211, 19,187,119,239, 22, 79,152, 48,161,170, 88, 44,142, 86,171,213,175,205,229, -204, 84,234, 5,122,173,122,217,142,245,243,203, 1,192,160,177,243,151,137,178,172, 79,154,147,150,169,212,159, 0,192, 9, 45, - 14,255,244,139,162,142,163,163,227,193,228,228,228, 75, 0,134,191,139, 16, 36,132, 16,119, 62,159,239, 67, 41,181,205,251,159, -174,215,235,195, 40,165,165, 14,168,235, 88,169,101, 39,136,101, 67, 64,217,154, 12, 0,194, 48, 15, 12,218,156,109,201,207, 47, - 28, 43, 19,167, 72, 58, 20,160, 53, 25,128, 37, 12,243,144,213,231,108, 73, 10,185,112,234,223,114,125,110,102,192,183,162,171, -249, 19, 99,190, 11,190, 62, 21,224,198,176, 96,118,135,195,236,110,197,241, 64,251,137, 19, 39,186,142,253,242, 75, 50,100,240, -224,202,151,174, 94, 37,205, 45,153,173,224, 3, 68,113, 14,251,133, 10,173,158, 1,196, 14,192,244,189,107,103, 49,124, 30,143, -244,157,184,164,223,214,245, 43,152,214,157,122,230,119,159, 52,109,218, 20, 77,155, 54, 37,203,150, 45,171,252,199, 31,127, 84, -222,189,123,183,158, 16,242,144, 82,186,175,168,147,181,171, 68, 84, 44, 32,233,224,199, 87,246,253,230,215, 77,245,235,215,135, - 88, 44, 70, 89, 56, 1,160, 77,101,222,235,246,245, 43, 61,236, 59,126,110, 68,131, 6,141,232,187,224,252,128,112,155, 82,218, - 37,175, 1,179,243,242,242,106,172,215,235, 37, 0,192,231,243,115, 1,140,167,121, 83, 7, 17, 66,142,176, 44,219,217,130, 6, -146, 1, 48,175,115,231,206,115,198,141, 27, 7, 47, 47, 47, 76,152, 48, 1, 58,157, 46,136, 16, 50, 23,192,210,146, 2, 2, 58, - 59, 59,207,221,176, 97,131, 61, 95, 36, 71,237,233, 97,136, 75,215, 3, 0,172,196,192,209, 49, 20, 19, 38, 76,176,190,123,247, -238, 34, 0,102, 11, 45,103,103,231,133, 91,182,108,177,151,201,100,160,148, 34, 59, 59, 27, 89, 89, 89,200,206,206, 70,118,118, - 54,198,142, 29,107,253,244,233,211,239, 1,152, 45,180, 92, 92, 92, 26,175, 91,183, 78, 42,145, 72,144,157,157, 45,212,106,181, - 36, 43, 43, 11, 57, 57, 57, 84,163,209,104,199,143, 31, 47,126,242,228, 73, 11, 0,175,193,225,223, 34, 10,120, 0,190, 16, 8, - 4,221, 42, 85,170,244,201,203,151, 47,239,235,245,250, 67, 0, 14,149,245, 99,138, 16,242,153,187,187,251,226,216,216,216,117, -148,210,157,255,149, 58,117,113,113, 57,116,253,250,245,114, 27, 54,108, 24,188,114,229,202,147,150, 60, 67, 69,124,252, 54,172, - 87,175,158, 99,183,110,221, 4,174,174,174,200,201,201, 65,104,104,168,236,220,185,115, 78, 18,137, 36, 69,173, 86,223,176,228, - 90, 57,250, 54,182, 2,223,122,111,195,150,173,154,244,234,254,133,194,197,193, 6, 42,141, 1, 47, 35,226,188,126, 63,121,180, -185,123,181, 14,215,181,218,140, 62,201,207,175,101, 91,202,217,178, 93,199, 38,173, 62,251, 76, 97, 99,107,131, 12,165, 22,175, -194, 99,188, 47,156, 61,214,212,173, 90,135,203, 44,209, 13, 72,120,116, 38,231,125, 94,155, 9, 0, 95, 41,113,168, 81,179, 81, -237,187,109,134, 45,250,132, 82, 10,134, 98, 77, 65,107,214, 4,128,191, 6,208, 91,202, 7, 74, 41, 33, 88, 97,106,205,202,239, - 86,100, 64,218,250,160,248,110, 74,227,251, 24, 16,219,218,219,215, 31, 61,114, 36,201,202,204,196,131, 7, 15,114, 10,138,172, - 31, 60, 32,188,204,160,252,145, 40,188,248,152,172, 89, 5,187, 14,141,255,205,142,163, 37,147,201, 10, 77,183,177,177, 65,203, -150, 45,177,100,201, 18, 62,128, 58, 5, 20,222,219,147,172, 2,226,227, 27,103,194, 70, 46,102,188,188,188, 20,214,214,214,101, -230,124,147,200,250, 52,242,162,159,223,249,117,214,224,115,187, 87, 5, 42,179,210, 5, 5,119,177,178,178,130,175,175, 47,230, -204,153, 99, 30,103,217,213,237, 63,202,233,230,230,230,215,180,105,211, 58,231, 47, 93,178,141,141,141, 21,199,198,198,138,207, -156, 63,111,219,176, 97,195, 58,110,110,110,126, 38, 28,150,228,243,219,245,235,215,207, 61,114,228, 8,211,180,105, 83,216,217, -217,161,101,203,150, 56,121,242, 36,127,229,202,149,223, 1,152, 83, 82, 62, 25,134,105,210,180,105, 83, 2, 74, 17,159,161,199, -173, 37,126,120,176,194, 31, 89,185, 20,169, 25,153, 80,169,114, 33,147,201, 36,121,221,189,230,150,189, 81,195,134, 13, 9,128, -124,113,149,149,245,102,201,206, 86, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165,174,141, 27, 55, 6, 0,104,181,218, -252, 47,188,244,244,116,146,145,145, 1,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,160,177,243, -163, 6,141,157, 31,197, 23,138,167,105, 20,153, 6,115,210,172,229,124,221,251,188, 63, 9, 33, 78, 60, 30,239,151, 74,149, 42, - 61,229,241,120, 59, 8, 33,174,101,225, 36,132,212, 37,132,124, 39,147,201,206, 85,173, 90, 53, 74, 46,151,159, 39,132, 44, 37, -132, 52, 44, 13, 39, 33, 68, 36,147,201,206,127,247,221,119, 7,238,223,191,223,235,143, 63,254,240,121,244,232, 81,247,101,203, -150,237,181,178,178,186, 66, 8,145,149,229,217,244,241,241,217,122,235,214,173,186,141, 26, 53,250,153, 16, 34,126, 23,207, 59, - 33,132, 71, 8,169, 69,204,156,107,232,159,190,238,132, 16,247,218,181,107,151,147, 72, 36,104,213,170, 21, 0,180, 40, 35,103, -195,209,163, 71,187, 78,158, 60, 89,240,224,193, 3,252,252,243,207, 56,114,228, 8, 18, 19, 19,209,177, 99, 71,225,167,159,126, -234, 42, 22,139, 27, 90,196,201,183,222, 59,241,171, 73,237,166, 78, 24,161,120, 24,169,197,182,115,145,248,237, 70, 28, 18,115, - 68,232,212,125,144, 77,219, 46,189,219,138,196, 54,123, 45,229,156, 49,125,122,187,145, 67,251, 41,130,227, 88, 28,189, 25,143, -155,207, 50,160, 23,216,162,125,247,225,118, 53, 27,183,235,192,135, 96,251,251,190, 70, 91,128, 6, 19, 39, 78,116,154,182, 98, -215, 53,247,186, 95,172, 73, 74, 67, 83, 83,225, 83, 5,176,181,151,203,191,120,214,188,249, 8,233,155, 57, 31,139,229,124,139, -175, 78,151,181,137,105,104,102,234,159,213,204, 30,149,243,186, 21,121,103,126,249,134,161, 4, 19,250,187,195,181,164,124, 94, - 4,122, 77,156, 52, 73, 96, 99,103,135,245,235,215, 67,173, 84,190,229, 51,251, 89, 57,180, 59, 39,227, 71, 87,240,247,124,218, -210,155, 92,249, 8, 63, 0, 71, 22,105,209, 58,113,226, 4,237,208,161, 3, 1,128, 3,193, 52,173, 71, 0,249,190,247,184,239, -230, 16,134,208,242,129,141,130, 61, 42, 6, 40, 29, 28, 28,144,147,147, 3,181, 90, 13,161, 80,136,220,220, 92, 68, 70, 70,226, -230,205,155,176,179,179,179, 40, 51,153,153,153,176,178,178,130,149,149,213, 59,225,156, 57,184,149,248, 85, 84,146,248,244,205, -139,205,127,252,242,127, 13, 42,214,106,241,232,179,222, 19, 30, 91, 59,185,231, 62,122,244, 8,215,175, 95, 71, 90, 90, 26,234, -215,175,255,177, 92,207,219,121,237,245,109, 66,136, 93,211,166, 77, 61, 79,159,187,108,151,157,203, 90,135, 39,232, 4, 44,203, - 66, 38,115,211,239, 59,120, 52,163, 87,247, 78,132, 16,146, 8,224,118,158,184,189, 93,194,141, 34, 1,224,215,163, 71,143, 25, - 95,126,249, 37, 66, 67, 67, 49, 98,196, 8,213,237,219,183, 83, 26, 53,106,228,176,101,203, 22,233,228,201,147,113,233,210,165, -121,132,144,195, 0,194, 40,165,185, 69, 52, 26, 66,161, 80, 8,125,158,108,208, 26,216,124,125,159,153,153, 9,170, 74,131, 80, - 40,228, 1,112, 2, 96,150, 31, 29,203,178, 66,129, 64,144, 47,178, 34, 19, 50, 17,153,152,131,204,108, 13, 84, 42, 61, 52, 42, - 10,158,204,129, 15,132,187, 0, 8, 55,179, 62,121, 18,137, 4,122,189, 62,127,254, 69,163,165, 76,163,209, 32, 35, 35, 3, 60, - 30,207, 10,128, 53,128, 84,115, 8,223, 56,185,227,183,188,110, 64,220,217,213,217,241,229,137,153,218, 30,243,159,230,167, 89, -203,249,186,131,147,171,242, 28, 60,107, 94,173,213,107,187,191, 49,237,125,250,103, 17, 66,196, 78, 78, 78, 23, 14, 28, 56, 80, -181,114,229,202, 8, 11, 11,243,239,217,179,103,125, 66, 72, 45, 75,231,100, 36,132,200, 24,134,249,126,200,144, 33, 95,246,237, -219,151, 84,169, 82, 5,124, 62, 31,122,189,222, 51, 52, 52,180,229,254,253,251,167,243,249,252, 45, 6,131,225,107,115,253,254, - 8, 33,140, 72, 36,218,183,105,211,166,102,245,235,215,199,142, 29, 59,112,251,246,109,182,110,221,186,204,192,129, 3,225,237, -237, 93,127,224,192,129,191, 17, 66,218,151,198,178, 69, 8,241,238,223,191,127, 57, 30,143,135, 70,141, 26, 9,175, 95,191, 94, - 27,192,245, 50,214,169,149,167,167,231,165, 22, 45, 90,212, 58,119,238,220, 61, 66, 72, 11, 75,252, 28, 9, 33, 93,220,221,221, -151,217,216,216,216, 89,208,198,230,196,196,196, 76,177, 96, 14,213, 6,117,234,212, 65, 68, 68, 4,252,252,252, 32, 20, 10, 27, - 18, 66, 70, 1,104, 7, 96,182, 37, 51, 88, 16, 66,220, 27, 54,108,232,216,162, 69, 11,178,116,233, 82, 0,128, 64, 32,128,193, - 96, 0,195, 48, 16, 8, 4,240,247,247, 39,175, 95,191,182, 39,132,184,155,211,141,232, 88,169,101,167, 70,159,181,107,210,172, -126, 13,102,229,193,151, 48,176, 6,240,136, 30,124,194,130,213,137, 33, 22,242, 80, 37,240, 19,222,179, 39, 15,235, 59,250,182, -238,148,252,252,236, 49,115, 56,219,117,234,220,180,170, 95, 21,230,199,223, 94, 33, 61,230,169, 33, 38,228,114, 50,195, 99, 80, -181,206,167,142, 85, 2,106,241,106,213,111, 33,136, 13,123,210,210,190,114,243, 86,169, 47, 47,157,123, 31,207,228, 2,128,231, -233,225,248, 69,199,214, 45,132,113,177,177,202,253, 7,143, 61,206,209,225, 38, 0, 92, 2, 72,123,160, 70,245,122,245,154,111, - 89,186,212,193,205,205, 77, 48,160,111, 95,253,230,123,247,238,141, 4, 12, 69,241, 57,186,186,182, 26, 61,122, 52, 47, 46, 54, -150,238, 63,116,226,145,145, 15, 0,100, 64,245, 26,158,254, 29,161,124,102, 81, 55,101, 39, 64,228,226,234, 90,117,212,168, 81, -136,143,141,197,142,157, 59,179,115,129, 27, 70, 43,214, 81, 30,214, 5, 84,116, 29, 50,109,120,103, 82,206,205, 17,163,231,109, -110,216, 82,155, 88,241, 2,254,180,108,153,106,145, 15, 85,100, 21, 20, 91, 69,126,157, 31, 12,166,115,173, 69,196,103,255,254, - 61, 76, 82,150, 86, 25, 26, 26, 10, 71, 71, 71,184,185,185,193,198,198, 6,193,193,193, 56,127,254, 60,158, 63,127, 14,150,101, - 81,179,102, 77,139, 50,148,156,156,140,135, 15, 31,194,206,206,238,157,113, 86, 44,231,132,113,229,156,132, 9, 41,153,194,115, -183,159,215,223, 60,179,123, 0,227,223,125,107,110,238,159, 26, 64,163,249, 56,102, 40, 49, 29, 93,232,229,229,213,120,219,182, -109, 66,181, 30,138, 42,163,110, 44, 87,230, 26,228, 0, 32,151,240,148, 65,203,124,191,254,246,219,111,149, 67,135, 14,245,143, -140,140, 92, 82, 18,175, 72, 36, 90,252,249,231,159, 79,165,148, 10, 38, 78,156, 8, 0, 24, 52,104, 80,230,205,155, 55,171, 80, - 74, 19, 9, 33,238,195,134, 13,123,113,225,194, 5,217,164, 73,147,120,122,189, 62,152,207,231, 83, 66,200, 66, 74,233,252,130, -124, 12,195,220,189,119,239, 94,121,119,111, 95,120, 59, 48,104, 58,231,205,116,109, 14, 50, 22,209,225,175, 16,242,232, 54, 92, - 93, 93,109,220,220,220,158,250,249,249,105, 99, 98, 98,166,103,103,103,111, 40, 46,143, 66,161,240, 65, 80, 80,144,155,183,183, - 55,178,179,179, 17,157,148,131, 9,135,100,200, 84,189, 49, 98, 8,160, 66,173,114,190, 10, 41,163,185,237,226,226,162,213,104, - 52,223,164,167,167, 23, 59,141,136, 64, 32, 72,121,244,232,145,149,151,151, 23,114,115,115,105,106,106, 42, 81, 42,149,200,202, -202, 34, 39, 78,156,232, 26, 23, 23, 87,215,199,199,135,120,122,122, 46,172, 92,185,178, 42, 38, 38,102,132, 57, 62, 96, 7,230, -249,107, 9, 33, 6, 62,159,191,114,228,200,145,189, 14, 31, 62,124,247,224,252,170, 93, 40,165,218,188, 7,210, 38, 48, 48,240, -116,141, 26, 1,238, 59, 87, 84, 95, 67, 41, 93,254, 47,184,189,134,204,154, 53,171,170,189,189, 61, 70,143, 30,141, 5, 11, 22, - 96,238,220,185,149, 71,143, 30, 61, 18,192, 15, 22, 52, 58, 82, 87, 87,215, 59, 63,254,248,163,127,227,198,141,113,242,228, 73, -236,217,179, 7,175, 95,191,214,251,248,248,240,235,215,175,143,121,243,230,161,109,219,182, 35,198,143, 31,223,156, 16, 82,219, - 76,241, 49,116,222,188,121, 93,154, 52,105,130,193,131, 7,171, 47, 94,188,216, 11,192,153,179,103,207,126,122,233,210,165,131, -187,118,237,146,126,247,221,119,173, 38, 79,158, 60, 26,192,218, 82,148,191,107,179,102,111,230, 80,110,210,164, 9,150, 45, 91, -214,182, 44, 66,139, 16, 34,114,112,112, 56,177, 99,199,142, 90,190,190,190, 24, 48, 96, 64,237, 94,189,122,157, 32,132,180,166, -148,154,213, 32,121,120,120,124,127,228,200,145, 74, 69,245, 44, 20, 6,181, 90,109,255,197, 23, 95, 44, 5, 96,145,208,218,189, -123, 55,166, 76,153,130,154, 53,107,214,104,208,160,193,198, 81,163, 70,161, 71,143, 30,159, 17, 66, 92, 40,165, 74,115,136,248, -124,190, 79,199,142, 29, 5,135, 14, 29,122, 99, 29,105,214, 12,173, 90,181,194,227,199,143,113,245,234, 85,240,120, 60,200,229, -114, 52,110,220, 88, 20, 27, 27,235, 3,160, 68,161,197,136,101, 67,186,116,108,175, 56,122, 51, 14, 6, 86,143, 79, 42, 89,163, -190,191, 51,158, 69,103, 34,232,105, 52, 12, 26, 33,172,237, 29,208,176,121, 27,251,248,152,215, 67, 0,148,236,175, 37,150, 13, -233,214,165,131,213,209, 27,177, 72,143, 13,161, 47,111, 31, 62,175,203, 85,142, 0,128,187,127,236,221,232,234, 32,109, 93,165, -206, 39,188, 22,173, 59,219, 29,218, 19, 63, 4,192,123, 17, 90,151,202, 97,147,183, 32,121,208,180,126, 77,169,192,206,243,182, - 66,167, 91,103,220,214, 22,104, 51,125,214,172, 6,195, 71,142,148,176, 44,139, 93,191,254,154,249,240,222,189,103,197,141,246, - 91, 7,120,247,234,210, 69,172,176,182,198, 87, 19, 38, 64,161,211, 93,200,175, 18,224,179,175,166, 78,109, 60,118,236, 88,233, -198,133, 95,222,109, 59,108, 81, 29,150, 82, 82, 88, 55,101, 65,156, 3,234, 14,235,210, 5, 10,107,107, 76,156, 56, 17, 68,171, - 61,109,220,118,156,143, 11, 67,187, 54,173,223,175, 83, 19, 16, 16,236, 57,126, 21, 47, 35,146, 30, 93,136,195,171,143,228,157, -108,153,143,150, 17, 89, 90, 36,124,214,161, 59,238,221,187, 7, 0, 72, 73, 73, 65, 74, 74, 10, 42, 85,170,132,181,107,223,110, -191, 74, 35, 96, 88,150,125,231,156, 0,224,226, 96,141, 1,237,235,241,175, 62,220, 35, 81, 38, 37, 73,172,172,172,114, 63, 54, -161,101, 10,189, 94, 47,241,241,241, 65,166, 10, 36, 35, 71,103,149,188,247,141,197,223,177,207, 69, 43,141, 70,195, 88, 89, 89, - 65,173, 86, 75,204,120, 33, 8,186,116,233, 50,117,223,190,125,130,144,144, 16, 84,172, 88, 17, 90,173, 22, 55,111,222,140,206, -155, 8, 25,148,210, 88, 30,143, 23,203,178,108,229,154, 53,107, 98,201,146, 37,240,247,247, 39,237,219,183,159,158, 39,182,222, -122,184,227,226,226,190, 31, 53,106,212,167,251, 15, 30,182,223,212, 91,133,204,140, 76,100,103,103,227,193,253,187, 72, 77,200, -197,230,205,155, 33,145, 72, 9, 0, 97, 98, 98,130,112,210,164, 73,107, 60, 61, 61,219, 69, 71, 71,119, 44, 42,159,177,177,177, -139,199,142, 29,219,112,239,222,189,182, 89, 89, 89, 80,169,114,145,170,148,225,233,234, 55,243,248, 86,253,234, 41,214,175,219, -192, 84, 47, 47,119,204,201,201,193,151, 95,126,185,202,221,221,189,113,108,108,236,176,162, 56, 99, 98, 98,110,141, 27, 55,206, -101,215,174, 93, 18,141, 70,163, 53, 24, 12, 80,169, 84,204,222,189,123,167,151, 47, 95,222,110,203,150, 45, 68, 34,145,230,237, - 27, 45, 28, 51,102,204, 62, 87, 87,215, 93,241,241,241,131, 75,234, 46,226,241,120,171,119,238,220, 57,176,119,239,222,138,184, -184,184,128, 35, 71,142,136, 1,168,242,118,113,107,221,186,117,249, 21, 43, 86, 56, 5, 6, 6, 78, 39,132, 8, 40,165,223,189, -207,251,201,209,209,113,124,151, 46, 93,176,116,233, 82, 28, 59,118,108,178,189,189,253,170, 5, 11, 22,192,221,221,125, 28, 33, -100,181, 5, 19,245, 46,255,225,135, 31,252,253,253,253, 49,104,208, 32,205,185,115,231,102, 1,248, 13, 64,196,149, 43, 87,188, -182,111,223,222,105,223,190,125, 75,127,252,241, 71,201,218,181,107, 43,117,239,222,125, 53,128, 97, 37, 62,223, 46, 46,147,250, -246,237,139, 21, 43, 86,224,226,197,139,221, 41,165, 39,243, 54,157, 34,132,116,250,238,187,239,254,152, 51,103, 14,126,248,225, -135,137,150, 10, 45, 66,136, 85,213,170, 85,191,105,215,174, 29,174, 92,185,130,166, 77,155,162, 97,195,134,147, 9, 33,107, 40, -165,201,165, 16, 89,140,149,149,213,190,109,219,182, 53, 45, 95,190, 60, 22, 45, 90,132,169, 83,167, 98,235,214,173, 77, 7, 12, - 24,176,143, 16,210,173,224, 51, 83, 24,108,108,108,172,100, 50, 25,166, 79,159, 78, 95,191,126,157, 86,210,254,229,202,149,179, - 91,181,106, 21,177,179,179,179, 49, 87, 20, 75, 36,146, 70,213,170, 85,195,188,121,243,112,246,236, 89,204,153, 51, 7,213,170, - 85, 67, 68, 68, 4,250,244,233, 35,155, 61,123,118, 15, 0,219,204,124,233,216, 56, 56, 56, 32, 49, 49, 17, 2,129, 0,141, 27, - 55,198,111,191,253, 6,181, 90, 13,103,103,103,164,167,167,163, 94,189,122, 70, 81,102, 99,230,171,172,154,163,189, 13, 18,159, -196,128, 15, 61,234, 84,113,196,133,199, 41,208,234, 88, 56, 59,216, 34, 62, 49, 1, 13,170,121, 66,163,241, 2,165,108, 53,115, - 24, 69, 60,166,142, 88, 34, 69,106, 86, 50, 98,158, 94, 76,209, 26,212,163,210, 95, 95,141, 2, 0,251,138,205, 70,221,189,122, -246,110,207, 14,205,156,179,149,229, 64, 40, 91,239,125, 60,143, 61,189, 80, 78, 46,225, 15, 58,190,105, 38,209,179, 44, 62, 31, -182,184,110, 59, 23,228, 32, 1,112, 2,124,122,246,233,211,232,235,175,191, 22,189, 8, 13,101, 39, 77,152,144,126,255,206,157, -139,191, 3,119,139,227,204, 6, 42,183,110,221, 26, 12,128,223,207,156, 81, 38, 3,209, 0,224, 2,148,235,252,197, 23,205,102, -205,152, 33,122, 21, 30,206,222, 12,205, 62,250, 42,145, 46,105,100,143,135,123, 35,222,236, 83, 28, 12, 64,117, 35,239,233,211, -167,169, 42, 47, 31, 45,202, 97, 92,219,198,129,245, 7,118,105,134,232,248, 20, 44,251,249, 40, 30,189,136, 59,237,192,162,255, -199,242, 30, 46, 46,130, 61, 99,198, 3,243,151,180,156,156,191,246, 30,148, 85,192,252, 29,156,133,225, 99, 20, 90, 70, 24, 39, -111,214,232, 88,104,116,172,241,171, 22, 42,149,202, 92, 69,174, 59,125,250,244,142, 9, 19, 38, 96,213,170, 85,120,241,226, 5, -132, 66, 33,170, 85,171,230, 70, 8,177, 50, 90, 96,234,212,169,227,204, 48, 12,158, 61,123,134,149, 43, 87, 98,232,208,161,244, -250,245,235, 91, 11,123, 97, 80, 74,239,167,166,166,174, 27, 53, 98,104,122, 90, 66, 36,116,170, 52, 36,198,188,130, 90,153,142, - 69, 75,190, 71,142,142,143,248, 12, 45,226, 51,180, 96,196,246,216,184,101, 27,175,106,213,170,237,248,124,126,199, 98,242,121, - 51, 33, 33, 97,203,152, 49, 99,210,227,227,227,243,203,167,209, 81,104,116,111,223,175, 50,153, 12,171, 87,175,182,169, 82,165, - 74, 23,129, 64,208,178, 24,206,184,168,168,168,144, 49, 99,198,104, 18, 18, 18,144,145,145,129,163, 71,143,118, 42, 95,190,188, -221,210,229,171,136, 82,203, 71,124,186, 22,241,233, 90,136,172,156,177,239,224, 97,158,175,175,111, 63,129, 64,208,176, 36,145, -181,107,215,174,129,189,123,247, 86, 44, 95,190, 60,245,200,145, 35,235, 41,165,166, 23,228,217,234,213,171,247,239,219,183, 47, -107,234,212,169,246,203,150, 45,155, 76, 8,153,245, 30, 27,139,150,189,123,247,246, 99, 89, 22, 7, 14, 28,120, 68, 41,253,225, -240,225,195,119,212,106, 53,250,244,233,227,147,215,141,100, 14, 79,221,126,253,250,125,217,180,105, 83,124,245,213, 87,218,115, -231,206,213,161,148,174,162,148,134,211, 55,136,160,148,174,185,116,233, 82,205,241,227,199,171,235,213,171,135,193,131, 7, 15, - 37,132, 52, 45,129,183, 81,223,190,125,253, 89,150,197,222,189,123, 31,154,136, 44,227,117, 60,127,240,224,193,155, 26,141, 6, -253,251,247,175, 64, 8,249,212,130,178, 11,197, 98,241,129,111,191,253,214, 54, 38, 38, 6, 3, 7, 14, 84, 63,123,246, 12,243, -231,207,151,218,216,216,156, 52, 62, 3,150, 64, 44, 22,111,254,233,167,159,186, 84,175, 94, 29, 99,198,140,209,108,216,176, 97, -194,151, 95,126,169,169, 83,167, 14,214,175, 95,223, 69, 36, 18, 89, 52,181, 72,108,108,108,122,112,112,176, 67, 73, 75,116,116, -116,130,153,101,150, 41, 20,138, 27,129,129,129,153,213,170, 85,251, 68,175,215, 35, 56, 56,248,213,142, 29, 59,216,106,213,170, - 97,221,186,117, 88,182,108, 25, 58,118,236, 8, 30,143,215,195,146,188, 42,149, 74, 72, 36, 18, 8,133, 66, 4, 5, 5, 65,173, - 86, 67, 38,147, 65, 34,145,128,199,227,193,214,214, 22, 10,133, 2, 48,115, 52, 26, 33,160,153, 57, 58, 8, 4, 12,248, 12,139, -144,136, 12,104,117, 44, 36, 66, 30, 4,124, 2, 80, 22,182,114, 1, 36, 34, 30, 24, 66, 88, 51, 57,145,161,212, 66, 36,100, 32, - 16,138, 8,163, 55, 72,243, 95,142,124,131, 84, 42, 21, 17, 71,107, 49, 36,194,127,209,180,192,228, 77,125, 13, 1, 4,114, 47, -175, 94, 43, 86,174, 20,101,102,103,163,123,247,238,169,225,119,238,236, 84, 1,119,154,151, 80,167, 12,159, 95,165, 69,243,230, - 8,186,119, 15, 89,105,105, 47,129, 55,206,241, 34,119,247,222,171, 87,175, 22,169,114,115,209,189, 91,183,244, 23, 87,175,238, -138,202,198,113,115, 68, 22, 0,240,132, 66, 87, 35,111, 70, 90, 90, 26,240, 38,132,132,139,147,213,210,177,253,218, 34, 43, 39, - 23,211,190,223,201,222, 11,137, 27,119, 37, 26, 29, 14,199, 34,227, 99,122, 7, 19, 66, 70,154, 46,102, 89,180,140, 86, 39,115, -196,138, 90,173,126,231, 2,168,172,156,133,137,196,178,114,254, 27,193,231,243,115,159, 63,127, 46,178,118,112,103, 29, 20,130, -180,242, 67,175,218, 0,128,189, 21, 63, 67,107,208,177,177,177,177, 16,139,197,185,230,112,229,230,230,142, 32,132, 44, 2, 16, -192,231,243,143,111,219,182,141,236,220,185,211,174,111,223,190,161,132,144,152,192,192, 64,239,109,219,182, 89, 3,192,154, 53, -107,232,190,125,251,218,226, 77,200,140, 34, 77,202,241,241,241,243, 5, 2,193,245,177, 99,199,174, 21,137, 68,118,114,185,220, -225,202,149, 43, 36, 87, 75, 81,119, 86, 68,254, 72, 68,107, 41,131,203, 51,173, 49,114,228, 72,222,211,167, 79,151, 0, 56, 94, - 12,231,116,177, 88,124,229,197,139, 23,171,108, 60,107, 57,201,189,103,217,212,159,249, 12, 0,224,237, 40, 0,147,215, 46,166, -167,167, 35, 41, 41, 9, 95,126,249,165, 93,104,104,232,116, 0, 23,138,226,140,142,142,190, 36, 22,139,163,159, 60,121,210, 66, - 32, 16,136,228,114,121,221, 27, 55,110,144, 92, 13,139, 26,211, 35,144,154,253, 38,159,246, 86,124,220,253,214, 5,227,198,141, -227,191,124,249,242,123, 0, 77, 10,109,204, 24,102,153,169,200,154, 54,109,218, 3, 0, 21, 8, 33,111,117,141, 26, 12, 6,210, -191,127,255,199, 0,170, 77,157, 58,213,158, 82, 58,153, 16,146, 74, 41,221,244, 79,223, 75,214,214,214, 75, 71,141, 26,133,125, -251,246, 33, 45, 45,109, 53, 0,100,102,102,254,176,123,247,238,189, 35, 70,140,192,175,191,254,186,148, 16,242,187, 25, 86,173, -207,251,244,233,131, 83,167, 78,225,143, 63,254,248,134, 82, 26, 92,196, 51,250,130, 16, 50,253,200,145, 35, 63,246,237,219, 23, -191,252,242, 75, 59, 0,197, 57,200,182,110,219,182, 45, 78,158, 60,137,148,148,148,245,133,237,144,158,158,190,225,232,209,163, - 13,218,182,109,139, 37, 75,150,180, 6,112,222,140, 6,210,223,198,198,102,219,143, 63,254, 88,183,122,245,234,232,215,175, 95, -174, 86,171,109, 55,117,234,212, 99,123,246,236, 81,236,216,177,227,147,145, 35, 71,222, 34,132, 12,167,148,222, 52,235,165,195, -227,125,183,118,237,218, 97, 45, 90,180,192,228,201,147,245,167, 79,159,238, 76, 41, 61, 67, 8, 9,157, 54,109,218,137,149, 43, - 87,242, 86,172, 88, 49,140,199,227, 37, 25, 12,134,247, 37,174,191, 93,179,102, 77,131, 54,109,218,224,213,171, 87,184,121,243, - 38,180, 90,237,175, 55,110,220,184, 92,185,114,229,111, 53, 26,205, 49,185, 92, 62, 72,161, 80, 4,214,170, 85,235, 83, 66,136, -204, 28, 63, 61, 66, 72,122,104,104,168,220,217,217, 25, 2,129, 0, 15, 31, 62,132,179,179, 51, 0, 32, 49, 49, 17,213,170, 85, - 3,143,199, 67,122,122, 58, 0,243, 94,182,132, 48,143, 66,195, 99, 43,216, 43,228,128, 65,130,251,207,162,225,228,104, 7, 3, - 97, 16, 31, 31,135, 90,126,158, 32,132, 32, 61, 37, 30,132,144,199,230,112, 26, 40, 27, 20, 25,155,232,225,160, 16,163,122,131, - 54, 14, 55,126, 79,218,105, 83,177,201, 72, 62,143,240,196, 18,235, 77,195, 6, 15,118,100, 89,138,244,148, 4,240, 25,230,246, -251,184, 64, 7, 34, 17,213,188,162,228,126,155, 97,139,106, 17, 10,170,210, 98,199, 47, 9, 72,147, 1,181,214,204,158,109,235, -224,232,136,126,253,250,177, 41, 49, 49,231,114, 0,179, 2, 43, 87,168, 92,217,197, 74,161,192,181,107,215,192, 3,194, 0, 96, - 43,224,191,108,218, 52, 7,103, 87, 87, 12, 29, 54,140, 77,136,140, 60,175, 50,163, 75,247, 45,222,138, 21, 5, 70, 94, 38,143, - 55,142,135, 9, 83, 59, 55, 21,203,165, 98,124,183,241, 48,162,146,149,123,111,196, 97,227,199,104,236, 40,209,162, 85,148,243, -217, 27,167,106, 89,177, 98, 69, 34,145,228, 91, 83, 44,248,210,123,231,156, 37,225,239,224,124,143,202,121, 38, 33,228, 8, 33, -100,102, 84, 84, 84,200,176, 97,195,180,122,173, 58,235,250,162, 10, 51,238, 45, 41, 63,230,198,124,183, 49,191, 77,176,153,145, -147,145,154,181,102,205, 26, 93, 84, 84, 84,136,233, 49, 37,220, 44,145,148,210,147,219,183,111,223,112,224,192, 1, 84,171, 86, - 13,193,193,193,206, 74,165,178,246,227,199,143,237,253,253,253,177,115,231, 78,236,219,183,111, 21,165,244,108,113, 34,203,196, -218,118, 46, 46, 46,206, 55, 34, 34,162,146,173,173,173,206,214,214, 22, 5, 71, 34,102,170, 88,164,164,103,192,222,222, 1,214, -214,214, 62, 37,113,170,213,234,147,113,113,113, 85, 88, 59,191,102, 85,146, 87,103, 4,125, 87, 14, 65,223,149,195,201,233,238, -112,179, 21, 33, 45, 45, 13, 73, 73, 73, 72, 74, 74, 2, 33, 4, 58,157,174,170, 25,156,175, 99, 99, 99,127,142,140,140, 60,226, -226,226, 2,133, 66, 1, 10, 32, 62, 93,135, 7, 43,252,241, 96,133, 63,226,211,117,200,204,202, 66,249,242,229,161, 80, 40,170, - 21,213,101,228,225,225,209,190,119,239,222, 10, 0,200, 19, 80,159, 81, 74,199, 20,178,140,214,235,245,141,141,251, 78,153, 50, -197, 30, 64,219,127,248,126,226, 17, 66,198,142, 24, 49,226, 19,137, 68,130,117,235,214,189, 6,176,203,216,214,111,216,176,225, - 25, 0, 76,152, 48, 33, 16,192,100, 82, 68, 36,104, 35,132, 66, 97,157,170, 85,171,226,198,141, 27, 0,112,184,132,211, 31,188, -126,253, 58, 42, 87,174, 12,137, 68, 82,183,132,125,125,202,149, 43,135,103,207,158, 1,192,253, 34,246,185,255,236,217, 51,148, - 43, 87, 14,132, 16, 31, 51,202,222,165, 77,155, 54,143, 46, 92,184, 80,183, 81,163, 70, 24, 54,108,152,230,214,173, 91,237, 41, -165,151,239,223,191,223,178,127,255,254,202, 42, 85,170,224,210,165, 75,254,253,251,247,191,206,227,241, 22,153,193, 57,116,225, -194,133, 51,187,118,237,138,133, 11, 23,210,253,251,247,247,163,148,158,201,123,190, 78,239,221,187,119,224,226,197,139,105,183, -110,221,176, 96,193,130,153,132,144, 49, 37, 88,135, 50, 12, 6, 3,148, 74,165, 89, 38,121,115,247,119,116,116,252,188, 77,155, - 54,152, 51,103, 14, 60, 60, 60,112,236,216, 49, 10,224, 56,165,244,138, 90,173,110, 70, 41, 93,169, 84, 42,127,187,113,227, 6, - 90,183,110, 45,196,219, 83,140, 20, 9,189, 94, 31,126,225,194, 5,173,131,131, 3, 60, 61, 61,225,229,229, 5,165, 82,137,244, -244,116, 84,171, 86, 13, 13, 26, 52,128, 82,169,196,241,227,199,181,233,233,233,102, 13, 88,209,107,148, 59,206,158, 56,148,225, -160, 16,195,211,217, 6,229, 61,236,145,157,158,140,164,248, 88,212,169,234,133,230,117,202, 35, 57, 67,131,211,199, 15,165,101, -101,229,236, 48,171, 23, 64,157,179,237,220,239,199, 50,236, 20, 66,248,250, 5,162,255,176, 9,181,106,213,174,127,182, 94,189, -198,167,151, 47,253,174,198,103, 13,171,146,232,228, 92,156, 58,126, 56, 45, 35, 51,115,219,251,104,235, 23, 0,188, 92,155, 42, -151,215, 31, 9,250, 57,160,221,136,159, 67,162,177, 26, 0,116, 60,158,127,251,207, 63, 71,116,116, 52, 14, 29, 56, 16,151, 3, - 60, 52,151, 79, 42,149, 50, 0,144,145,145, 1,241,155,217, 66,160, 7,252, 58,116,232,128,164,228,100,236,222,181, 43,233, 20, -112,207,146,124,118, 2, 68, 50,233, 27,131, 96, 70, 70, 6, 8,144, 9, 0,132,143,246,245,170, 85, 70, 82,106, 38, 46,220, 14, -201, 46,175,194,151,197,241,124,168,142,240,197,249,104,149,100, 15, 77,158, 60,121, 50,196, 98, 49,220,220,220,242,197,145, 81, -172,136, 68, 34,184,185,185, 65,175,215, 99,239,222,189, 0, 80,172, 15, 3, 3,168, 59,143, 89,194,170,117, 52, 71, 32, 16,188, - 19,206, 60,203,129,186,251,180, 95,216,223,175, 23, 62, 40,166, 52,156, 31, 0,234,229,197,196,170, 71, 41, 77, 11, 15, 15,143, -238,213,189,115, 70, 68,232,147,120,101,122,108, 92,102, 74, 84, 92,212,235,199,241,179,166, 79,206,136,142,142,142,202,139,165, - 85, 47, 54, 54,182, 51, 0,115,125, 13, 38,247,234,213,235,167, 17, 35, 70,208, 7, 15, 30, 0, 0,130,130,130, 48,120,240, 96, - 58,112,224,192,213, 0,102,148, 34,223, 74,149, 74,245,150, 53, 68,107, 96,243,187,252, 50, 51, 51, 17, 27, 27, 11,141, 70, 99, -182, 34,126,113,122,197,243,212,240,187,186, 64,111, 57, 2,189,229,240, 47, 39, 3,209,103,231,139,172,164,164, 36, 36, 36, 36, - 0, 64,174, 5,249,204, 84,171,213,111,229,211,180,107, 50, 51, 51, 19,241,241,241, 48, 24, 12,154, 34, 30, 58, 54, 38, 38,230, -244,190,125,251,178, 0, 96,249,242,229,169,132,144, 63, 8, 33, 63, 21,178,108,228,243,249,215,140,251,174, 88,177, 34, 21,192, -201,127, 80,100,117,173, 94,189,122,218,204,153, 51,215, 77,156, 56, 17, 27, 55,110, 68, 92, 92,220, 12, 74,169,222, 88,150,228, -228,228,105,235,215,175,199,144, 33, 67, 48,119,238,220, 21,181,107,215,206, 36,132, 20,233, 95,225,228,228,228,201,231,243,113, -239,222,189, 76, 74,233,171, 18, 26,168,248,123,247,238, 37, 16, 66,224,230,230, 86,177,184,125,237,237,237, 43, 41, 20, 10,196, -196,196, 0,121, 95,204,133, 32, 60, 54, 54,150,138, 68, 34,184,187,187, 87, 46,169,252,118,118,118,211,126,254,249,103,254,147, - 39, 79,240,217,103,159, 69, 95,186,116,169, 53,165,244, 98, 94,222,238, 5, 5, 5, 53,109,217,178,229,243,179,103,207,226,251, -239,191, 39, 53,107,214, 28, 83, 18,167,183,183,247,232,161, 67,135, 98,237,218,181,216,180,105,211, 24, 74,233,129, 2,101,222, -179,126,253,250, 9,155, 54,109,194,176, 97,195,224,227,227, 83,172,175, 74, 68, 68,196,244, 22, 45, 90, 4,189,120,241,194,172, - 25, 15,204,217,159, 16,210,178,126,253,250,149, 84, 42, 21,182,109,219,246,170, 82,165, 74,119, 14, 28, 56, 48,153, 82, 90,240, -133,253,219,161, 67,135, 48, 96,192, 0,212,172, 89,115, 27, 33,164,175, 25, 47,157,216,136,136,136,228,135, 15, 31,178, 60, 30, - 15,158,158,158,104,223,190, 61,250,244,233,131,154, 53,107, 34, 49, 49, 17,151, 47, 95,102, 67, 67, 67,147,205, 13, 92,154,252, -252,194,177,176,176,231,215,238,221,186,172,227,243, 24,120,185,217,227,139, 86,181, 48,188, 71, 99,212,241,247, 64, 68,162, 10, -231,207,159,213,133,133,189,186, 97,206,136, 67, 35,103, 72,240,195,235, 79,238, 93,213, 11,248, 4,254,126, 85, 48,103,214, 52, -187,197,243,166,219, 86,169,232,133,135,175, 51,112,246,204, 41, 93,108,116,212,133,247, 53,226,240, 18, 32,180, 18, 19, 57,143, - 97, 96, 96,196, 74, 94, 94, 32,227,106, 1, 1,190, 46,174,174, 56,113,226, 4, 24,224,169, 69,124, 86,111,122,193,179,179,179, - 97,228,171,228,231,231,231,229,237,141,147, 39, 78,128,199,178, 79,155, 91, 24, 96,244, 25, 32, 51,229, 37, 64,238,151,229,160, -168, 84,206,217,207,206, 70,142, 91, 15, 95, 66,173,163,183,119,165, 33, 7, 31, 33, 10,118, 27, 90,210,117,184,124,227,198,141, -245,126,254,249,231,214,147, 39, 79,182, 26, 52,104, 16, 36, 18, 9,114,114,114,224,233,233, 9,131,193,128,223,127,255, 29,119, -239,222,205,102, 89,246, 44, 10,132, 13, 32,132,180, 50,141,181,241,123, 40,149,190, 9,130,153, 83,239, 72,207,158,239,132, 19, - 0,172, 94,178,214, 41,229, 53, 59,215, 28,184,218,109,247,233,123,228,171,190,205,153, 58,126,229, 0, 0, 46, 46, 46,176,182, -182,182,152,243, 29, 84,250,223,206,105,218,173, 27, 23, 23,247,140, 16,146, 56, 98,196, 8,127,163,227,187, 88, 44,206,141,138, -138, 10, 49, 6, 44, 45,120, 76, 73,249,204, 27, 25,247, 37, 33,228,104, 70, 70,198,233,169, 83,167, 98,241,226,197, 56,118,236, - 88, 83, 74,233,181,210,148,157, 82,106,240,241,241, 73,191,125,251,182, 75,229,170,181, 81,193, 89,128,102,223,188, 0,165, 20, - 14, 50,138,172,244, 84,220,191,127, 15, 89, 89, 89,183, 44,201,167,187,187,123,122, 98, 98,162,163,179,179, 51, 82, 83, 83,145, -156,156,156, 47,178,210,210,210,144,154,154, 74, 9,121, 59,102, 75, 9,156,202, 74,149, 42,229,132,132,132,136, 92,202, 85, 70, - 69,103, 33,234,207,122, 6, 80, 10, 47,123, 6, 89,153,233,184,113,227, 6, 50, 50, 50, 46, 22,197,201,178,236,215,253,251,247, -231, 1, 24, 56,117,234, 84,123, 0, 53,167, 77,155,118,182,224,200, 66,129, 64,240,195,206,157, 59,171, 25,187, 24,167, 79,159, -190,138, 82,250,243, 63,117, 47, 57, 56, 56,124,125,226,196, 9,133, 86,171,197,154, 53,107,176,106,213,170,173,148,210,255, 21, -168,143, 19, 60, 30,111, 61,195, 48, 99,199,141, 27,135, 81,163, 70,201, 62,249,228,147,201, 38, 86,175,183, 56, 99, 98, 98,230, -212,169, 83,103,110, 98, 98,162, 89,142,253, 47, 94,188, 24, 89,167, 78,157, 57,137,137,137,203,138,187, 70,114,185, 92,110, 48, - 24, 16, 22, 22,150, 70, 41,205, 40,226,218,229, 86,169, 82, 37,198, 96, 48,120,202,100, 50,251,146,238,207,180,180,180,239, 62, -249,228,147,249, 9, 9, 9,103, 0, 44, 42, 24,170,132, 82,250,128, 16, 18, 56,113,226,196,241, 75,151, 46,237, 22, 31, 31,191, -183, 36,206,136,136,136,239, 90,182,108,249,205,243,231,207,183, 23,213, 5, 76, 41, 93, 71, 8,209,238,220,185,115, 76, 88, 88, -216,146,226, 56, 41,165,199, 81, 76, 87,122, 33,220,133,238,111,202,201,227,241,166, 45, 93,186,148,217,184,113, 35, 40,165, 43, -244,122,125, 81,249,124,200,227,241,118, 52,110,220,120,208,129, 3, 7, 36,129,129,129,163, 0,236, 41,233,254, 84,171,213, 55, -175, 95,191,222, 32, 60, 60,220,177,101,203,150, 66,227, 7, 74,122,122, 58,142, 31, 63,174, 13, 13, 13, 77, 86, 42,149, 55, 45, -105, 67,244,154,204,190,215,207, 31,217, 19,254,226,113,195, 22,237,186,216,105,180,158, 16,167,240,144,158, 18,143,223,143, 31, - 74, 11, 11,123,117, 35, 39, 39,189,175, 37,156, 90,117, 70,159, 27, 23,142,238,141, 14, 11,105,208,172,101,123,187, 92,141, 55, -196, 66, 6, 41, 9, 49,248,253,196,145,212,176,176,215, 87,114,117,234,193,239,171,157,231,249, 96, 17, 47,254,238,136,209,157, -106, 65,106,231,121, 95, 0,172,105, 12, 72, 29, 93, 92,132,121,207, 14,172,128, 8,115, 57, 19, 0, 81,229,188, 94,170,156,156, - 28, 8, 0,205, 16, 64,224,228,228, 36, 5,128,231,207,159, 67, 6, 68, 90,154,207,108, 64, 46, 51,225,101,128,156, 20, 62, 60, - 42, 89,203, 9, 0, 68,199,167, 64,163,195, 53,124,164, 48, 90,180, 10,115,138, 47, 41,248, 34, 11,224, 38, 33,228,222,178,101, -203,154,253,244,211, 79,205, 39, 77,154, 36,250,252,243,207,113,231,206, 29,156, 59,119, 78,163, 86,171, 47, 1,184,108, 28,174, -110, 70,102,222, 57,231,129, 55,251,245,170,231, 65,236,181,172,234,240,156,159, 78, 53, 41,239,106, 75,245, 6,150, 60,126,252, - 24,215,175, 95,183,152,243, 3,185,176, 0, 80,143, 16,114, 36, 47,233,118,193, 16, 14,121,221,133,245, 76,172, 96,165, 57,213, -125, 62,159, 79,253,252,252, 72,222,244, 52,193,101,201,119,124,124,124,191,233,211,167,159,217,127,240, 48,255,208, 56, 41, 50, -210, 51,222, 52,192, 25,233, 72, 73,136,197,249,243,231,181, 73, 73, 73,163, 44,225, 76, 74, 74,250,178,111,223,190,251,247,236, -217, 99,159,150,150,150, 47,180,210,210,210,192,178, 44,182,110,221,154,148,144,144, 48,219, 18,206,184,184,184, 97, 83,167, 78, - 61,184,123,239, 65,254,217, 25,118,200, 54, 70,159, 87,102, 32, 37, 49, 14,199,142, 29, 83, 39, 39, 39, 79, 44,230,250, 24, 8, - 33, 95,245,239,223, 31, 70,177,117,227,198,141, 9,132,144,117,198,151, 57, 33,164,194,215, 95,127,221,215,196,143,107,213, 63, - 61,234, 48, 37, 37,101,113,131, 6, 13, 86, 37, 37, 37,189,214,106,181, 7, 40,165,133, 70,233, 55, 24, 12,227, 8, 33,215,215, -173, 91,215,199,209,209,209, 37, 62, 62,126,169,165, 47,250,178,238, 31, 25, 25, 57,179, 78,157, 58,179, 18, 19, 19,151, 22,183, -223,203,151, 47,199,230,237,183,204,140,115,159, 0,112,162,132,125,244,120, 19,218,226, 7, 51,203,115, 4,192, 17, 51, 27,231, -205,239,163,253, 48, 24, 12,203,171, 87,175, 46,209,235,245,103, 75,242, 7,100, 89,118,228,164, 73,147,162,167, 76,153, 82,203, - 96, 48,152, 91, 7, 58, 0, 87, 8, 33,238,201,201,201, 62, 0,108, 1,128,207,231,167,167,167,167,151,106, 10,158,188,136,239, - 29, 29,125, 91,119, 58,176,125,237, 16,202, 26,106, 18, 66,192, 99,120, 15,178,178,115,182,153,107,201, 42,132,179,131,163,111, -235, 78, 9, 49, 17, 67, 41,107,168, 9, 16,150,207,103, 30,102,101,231,108, 73, 10, 57,251,222,166,224, 25,228, 1, 23, 30,193, -184, 51,191,124, 67, 0,160,245,208,111,107,149,183,133,149, 62, 29,233,200,107,203,227,226,226, 96, 7,164,153,203, 41, 3,244, -218, 60,159,232,180,212, 84,200, 0, 85, 28,192,203,243,187, 36, 9,241,241,176,178,128, 47,255,131, 17,208, 22,224,205, 0, 32, - 54,186,115,166,102, 42, 1,243,227, 26,126,144, 22,173,130,191,243, 5, 23,165,212,236, 5,111,230,215,251, 2,192,146,188,181, -188,132,253, 91,189, 15,206, 6,110,240,109, 85,137,132,180,247,227,167, 2,232,241, 46, 56, 45, 93,254,110, 78, 0,219, 53, 26, - 13,205,205,205,165, 57, 57, 57, 52, 59, 59,155, 2, 56, 82,200, 49, 71, 98, 99, 99,105,116,116, 52,141,140,140,164,225,225,225, - 20,192, 46, 75,243,105,109,109,253,115,207,158, 61, 13, 2,129, 96,237,187, 40,187,189,189,253,146,250,245,235,107,127,252,241, - 71,250,219,111,191,209, 45, 91,182,208,113,227,198,209,106,213,170,169,109,109,109,251,150,134,211,213,213,117,142,159,159, 95, -202,214,173, 91,233,174, 93,187,232,234,213,171,233,236,217,179, 13,158,158,158,241, 10,133,162,109,105, 56,157,157,157, 55, 55, -105,210, 68,187,121,243,102,122,246,236, 89,186,123,247,110,250,245,215, 95, 83,127,127,127,181, 92, 46,239,110, 14, 39, 0, 30, -159,207, 95, 57,122,244,232,120,119,119,247, 19, 5,182,201, 2, 2, 2,238,244,239,223, 63, 22,192,244,143,229,254,228, 56, 57, - 78,142,179,236,156, 3, 61,224,222,186, 2,244,244,242, 55,148, 94,254,134,182,170, 0,182,159, 59, 60, 40,192,147, 9,133,125, -154, 55,109,186, 66, 8,244,161, 0,175,208,165,176,124, 2, 60, 9,143,215,163,113,253,250, 43,132, 64, 95,227,190, 18, 30,175, - 71,243,166, 77, 87, 8,120,188, 1, 69,242, 21,195, 73, 1,158,144,207,159,222,184, 97,195,149,124, 96,150, 49,237,211, 10,228, -233,215,237,202,209,166,222,228,229, 0,103,200,138,227, 44,162, 62, 70,190,235, 58,254,167,151,210,222, 8,252,119,125, 19,126, - 40,156,255, 34,161, 85, 57,175,219,230,136,201, 50,179,144, 99,102, 22,216,103, 59,128,202,165,172, 79,233,187, 44, 59,128,234, -142,142,142,167, 42, 87,174,156, 84,190,124,249, 88, 59, 59,187, 61, 0, 60,203,200, 25,232,234,234,250,171,139,139,203, 11, 55, - 55,183,135,142,142,142, 63, 0,112, 42, 11,167, 64, 32,168,239,226,226,114,209,199,199, 39,221,219,219, 59,193,209,209,113, 47, - 0, 23, 75, 57, 1,184,161,144, 70, 5,128, 16,128, 27,247,210,225, 56, 57, 78,142,179,160,128,105, 83, 17, 75, 91, 87,128,190, -117, 5, 24,218,248,224, 7, 83,129,210, 17,144,150, 86, 20, 13, 6,196, 5,247, 47,145,175, 4, 78, 10,240, 26, 1, 86, 5,143, -105,239,137, 0,115, 56, 63,100,161,101,204,103, 94, 59, 63,210, 52,223,252,210,152,200,140, 78,178,239,184, 27,236,131,224,252, - 23,117, 27,190, 4, 74, 14,246,102, 26, 65,254, 29,156, 83,245,142,203,240, 8,192,231,239,152,243, 9,128,129,239,146, 83,171, -213,222,130,153,243,190,149,144,183,184, 98,124,225,226,192,129, 3, 7, 14,111, 55, 14,134,211,192,140,214,190,100, 13,223, 0, -230,212, 43, 26, 99,186,249,216,159,129,143, 45,226, 4,128,109,133, 76,207, 83, 42, 62, 19, 78, 0,184, 6,252,101,118,135, 19, -101,116, 55,249,192,222,205,113, 0, 54, 91, 20, 71,139, 3, 7, 14, 28, 56,112,224,240,254,112,246, 57,229, 62,196,254,253, 56, - 81, 96,142,195,124,191, 79, 2,160, 85, 17,170,204,236,145, 20,132,144, 86,165, 80,125,231, 56, 78,142,147,227,228, 56, 57, 78, -142,147,227,252,111,113,154,112, 23, 53,176,226, 89, 1,190,247, 50, 96,228, 93,129,152, 63,109, 89, 41,200, 63,208,176, 9, 28, - 39,199,201,113,114,156, 28, 39,199,201,113,254,179,156, 31,180,152,122,219,154,245,150, 64,228,186, 14, 57,112,224,192,129, 3, - 7, 14, 28,202,128,226,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112, 40, 3, 8, 33,110,120, 51, 69,213,137,188, 53,103, -209,226,192,129, 3, 7, 14, 28, 56,112,120, 71,232, 64, 41,221, 92, 88,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3,135, -178,193,232,167,101,233, 92,135, 28, 56,112,224,192,129, 3, 7, 14, 28,138, 65,113, 62, 90,111,141, 58, 60,113,226, 4,237,208, -161, 3,225,170,140, 3, 7, 14, 28, 56,112,224,240, 62,240, 33,106, 17, 19, 11,214,137,130,193,169, 57,139, 22, 7, 14, 28, 56, -112,224,192,129, 67, 25, 96,180,104,229,117, 27,190,149,198, 9, 45, 14, 28, 56,112,224,192,129, 3,135, 50,160, 56,139, 22, 3, -188, 49,211,113,213,196,129, 3, 7, 14, 28, 56,112,120, 95,248,144,181, 8,165,116,115,222,242,151,233,146,140,163, 14, 91,228, - 21,176, 5,119,169, 57,112,224,192,129, 3, 7, 14,239, 1, 31,172, 22, 33,132,184,229,117, 27,186,253,101,219,223, 57, 5, 15, - 7, 14, 28, 56,112,224,192,129,195,199, 14, 99,252,172,194,226,104,113, 66,139, 3, 7, 14, 28, 56,112,224,192,161,140, 66,171, - 96, 90,190,131, 60, 39,180, 56,112,224,192,129, 3, 7, 14, 28,254, 30,252,173,145,225, 9, 33,173, 56, 78,142,147,227,228, 56, - 57, 78,142,147,227,228, 56, 63,118, 24, 35,194, 23,180,110,113,225, 29, 56,112,224,192,129, 3, 7, 14, 28,202, 40,178, 76,125, -179, 76,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 77,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,101,128,113, -196,161,233,127, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 67,177, 85, 88, 58,215,117,200,129, 3, 7, 14, 28, 56,112,224, - 80, 6, 20,116,128, 55,253, 79, 0,180, 42, 66,153,157,179,224, 4, 22,143, 62, 40,137,159,227,228, 56, 57, 78,142,147,227,228, - 56, 57,206,143,143,179, 36,110, 75,244,199,191, 73,104, 21,229, 12, 15, 74,233,223,182, 0,104,197,113,114,156, 28, 39,199,201, -113,114,156, 28, 39,199,249, 49, 47, 0,220, 0,140, 52, 89,220,140,219, 56, 31, 45, 14, 28, 62,116, 28, 36, 60,164,249,249,128, - 82,119,240, 68,113,136,123,244, 10,243, 40, 91,102,206,132, 0,111, 72,117, 46,208, 75,146,144,240,240,117,153, 57, 57,112,224, -192,225, 35, 69,222,100,210,133,250,104,113, 66,139, 3,135, 15, 29, 73,254,190,224, 99, 9, 24,184,129,106, 67,225, 20,176, 4, -192,227, 50,115, 10,217, 69, 48, 48,158,160,218,231,112,246, 91, 10, 32,152,171,108, 14, 28, 56,112,176, 12,255,184, 51,188, 64, - 32, 72, 32,132,176, 98,177,248, 80, 97,179, 92,115,224,240,174, 64, 8,113,147, 74,165,135, 8, 33,172, 80, 40, 76,248, 40, 11, -185,179,186, 12,140,225,115,141,142,245,248,253, 81,186,115,142,218,224, 11, 70,223, 30,191,248, 90,149,137,147, 79,218,228,106, - 89,175, 93,183,115, 92,148, 26,125, 85, 80,148,141,243,207,107, 98, 43, 18,137,126, 39,132, 56,114,119,232,199,137, 0, 66, 62, -169, 43, 16, 76,169, 74,200,167,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245,206, 81, 81, 81,100,203,150, 45,157,173,173, -173, 67, 5, 2,193, 76, 66,136,240,191, 82,225, 10,133,226,186,141,141, 77,130,173,173,109,130,141,141,205,189,146,210, 63, 82, - 1,228,235,236,236, 28,225,224,224,240,220, 52,221,185,102,183, 70, 85,154, 12,154,231, 24,216,181,121, 25,249,133, 2,129, 96, -166,141,141, 77,232,230,205,155, 59,135,132,132, 16,157, 78,231,252, 81, 86,102, 46,235, 2,134,215,242, 73, 92,142, 44, 46, 83, -231, 18, 20,158,163, 0,120, 45,160, 65,233, 63, 98, 50, 88, 23,128,126,250, 32, 90, 37,191,158,234,228,114,229,149,218, 26, 12, -211, 18,185,196,181,204, 13, 14,195,140, 97, 89,182,181, 80, 40,252,138,107,126, 63, 78,136, 24,166,241,245,206,157, 23, 77,175, - 81, 99,188, 63,208,169, 48,177, 69,222, 96, 66,213,170, 85, 79, 17, 66,250,188,195,182,229,123,127,127,255, 24, 66,200, 68,238, - 74,112,248,135,223,107,181,141, 31,248,121,211,240,184, 89, 44,180,122, 86, 32,141,251, 85, 36,151,122, 87, 32, 89,125, 42,146, -236,129, 21,201,213, 30, 21,200,167,165,201,144,167,167, 39, 26, 53,106,196,139,140,140,148, 78,156, 56,113,158, 88, 44, 14, 35, -132,180, 45, 13,151, 76, 38,187, 43,151,203,163, 4, 2,193, 91,121,145,203,229,119,173,172,172,162, 4, 2,193,103,166,233,214, -214,214,215,109,108,108, 18,172,173,173,239, 21, 33,132,238,218,216,216, 36, 40, 20,138,187,166,233, 2,129,224, 51,133, 66, 17, -109,109,109, 93, 48,253, 83,107,107,235,168,130,233, 69, 65, 32, 16,120, 70, 69, 69, 57, 71, 71, 71, 59,139, 68, 34, 23,211,244, -200,200, 72,231,168,168,168,183,210, 45,129, 64, 32,248,212,202,202, 42, 74, 46,151,223, 45, 44,189, 96,153,138,130, 73,221,125, -106, 78,186,165, 34,171, 77,155, 54, 87,227,226,226,188,108,109,109,109, 77,183,217,219,216,182,253,117,235,250,201, 93,218,183, - 25,227, 28,240, 69,245, 82,242,183, 21,139,197, 97,147, 38, 77,154, 23, 29, 29, 45,173, 95,191, 62, 79, 40,252, 72,117,252,193, - 0, 33, 8,219,140,165,212,233,105, 76,174, 83,135,206, 61,249,247,163, 84, 78, 58,131,193, 30,224,181,192,246,242,226, 82,113, -242,117, 77, 89, 74, 93,254, 8, 23, 56,181,236, 53,158,119, 62,156,239,164, 51, 24, 28,192,160,121,169, 56,255,188, 54, 2, 30, -143, 55,121,229,202,149, 12,128,113,132, 16,209,127,169, 33,174,239, 65, 60, 62,171,204,191, 93,199,157, 52,126,135,141,123,160, - 92, 46,191, 75, 8,241,253,183,148, 83,195,178,207,246,190,126,125,122, 64,165, 74, 29,167,215,168, 49,164,160,216,202,251, 61, -125,233,210,165, 3,159, 60,121,226, 84,161, 66,133, 81,132, 16,230, 29,212,197,234,165, 75,151, 78,123,242,228,137,187,143,143, -207,130,119,193,201,225,223,165,225, 1,180, 4,208, 1,192,103, 0,234,229,253,174,155,183,116,192,155, 40, 10,166,235,186,121, -199, 26,183,215, 47,130,163, 67, 33,199,213, 53, 73, 55,253, 95,240,183, 17,181,243,214, 29,242, 70, 27,118,200,223, 66, 41,197, -241,227,199,169,233,186,224,210,219, 7,243,199, 55,242,200,121,122,108, 55,205,142,122, 77,211, 66,238,211,251,155,191,163,227, -235, 58,229,244,171,128,239, 45,244,204,167,148, 82,186,107,215, 46,122,254,252,121,154,158,158, 78,131,131,131,105,189,122,245, - 84, 50,153,236, 15, 0, 62,150,240, 41, 20,138,132, 63,254,248,131,182,105,211, 38,195,202,202,106, 5, 0,134, 82, 10,107,107, -235,132,107,215,174,209, 54,109,218,100, 40, 20,138,213, 0,120,148, 82,116,239,222, 61,145, 82, 74,157,156,156, 98, 11,227,235, -210,165, 75, 26,165,148,218,216,216, 36,228,229,151,167, 80, 40, 86,143, 29, 59, 54,251,206,157, 59,212,206,206,206,152,206, 88, - 91, 91,175, 24, 55,110, 92,118, 80, 80, 80,126,122, 73,139,189,189,125,148,193, 96,160,199,142, 29,163,206,206,206,249,121,176, -179,179,139, 50, 24, 12,244,200,145, 35, 69,230,173,152, 58,101,172,172,172,150, 15, 24, 48, 32, 43, 60, 60,156, 58, 56, 56, 36, -152,164,175, 24, 52,104, 80, 86,100,100, 36,117,116,116, 52, 43,143, 14, 14, 14, 9,215,175, 95,167,221,186,117,203, 52,173, 83, - 7, 7,135,132, 27, 55,110, 24,211,151, 27,211,139, 91,220,221,221, 71, 57, 59, 59,199, 58, 59, 59,199,218,218,218, 46,118,115, -115,139, 79, 74, 74,162,148, 82, 90,177, 98,197, 68, 74, 41,156,106,124,209,168,114,227,129,243,156, 3, 59, 79,218,120,224,198, -173,203,143, 83,146,106,180, 30,179,220,166, 70, 23, 27, 11,234,192, 71, 34,145,252,209,172, 89, 51, 85,120,120, 56,205,206,206, -166,119,239,222,165, 87,174, 92,161, 79,159, 62,165,121,247,221,199, 53,210,101,125,128, 39,221,228,183, 55,120,174, 87,200,229, -165,237,116, 52,252, 60,221, 61,196, 73,119,105,146, 71, 40,253,201,255,127,116, 83,213,114,165,226,252,169,234,238,135,179,189, -158,173, 93, 48, 65, 23, 17, 17, 65,167, 12,106,167, 63, 51,222,227, 21,221,232,127,160, 84,156,127, 94,163,190, 95,124,241, 69, -118,100,100, 36, 13, 8, 8, 80,242,120,188, 97,255,149, 17, 73,245,220,225,209,202, 87, 20,243,112,215, 20,182, 83,160, 44,165, -182, 27, 26,191,131, 81, 78,129,206,206,206,201,219,183,111,167, 10,133, 34, 17,128,239,191,100,244, 21,241, 7, 58,239,168, 81, -227, 8,219,163,135, 97, 71,141, 26, 71,252,129,206,120, 19, 78,136, 0,152,177,108,217,178, 32,157, 78, 23,180,109,219,182,160, -206,157, 59, 7, 1,152, 82,198,115,254,248,253,247,223, 83,157, 78, 71,183,109,219, 70, 59,119,238, 76, 1,172, 49,247,120, 43, - 43,171,202,213,171, 87,223, 25, 16, 16, 16, 89,179,102, 77, 77,213,170, 85,115,125,125,125,195, 3, 3, 3,183,139,197, 98, 31, -110, 84,221, 63,179,148,160, 69,234,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210, 14,121,237,122, 7,211,223, 5,215,148, -210, 86,166,255, 11,227, 48, 46,133,113, 22,118,142, 2,191, 11,142, 58,116,203,251, 63, 50,127,155,177, 80,199,143, 31,111,126, -252,248,241, 75, 5, 11,215,179, 2, 26,141,111,228,161, 82, 37,197,209,199,223,125, 69, 47,180,244,164,215, 90,184,210,231,147, -191,160,113,187, 86,211, 47,107,217,229,244,168,128,150,150, 10,173, 67,135, 14,209, 35, 71,142,208,147, 39, 79,210,199,143, 31, -211,148,148, 20,186,107,215, 46,131,131,131,131, 74, 44, 22, 47, 5, 32, 53,135,207,218,218, 58,129, 82, 74,213,106, 53, 93,188, -120,113,174, 66,161,184, 7,192, 37, 79, 40,209,244,244,116,186,116,233,210, 92, 27, 27,155,135, 0,220, 29, 29, 29,163, 94,191, -126, 77, 93, 92, 92, 10, 21, 51,118,118,118, 9,207,158, 61,163,118,118,118, 9, 0, 60,236,236,236, 30, 31, 61,122, 84, 75, 41, -165,209,209,209,212,222,222, 62, 1,128,139,131,131,195,253,227,199,143,107, 41,165, 52, 54, 54,150,218,219,219,155, 45,180, 84, - 42, 21, 61,115,230,204, 91,121, 48,166,159, 58,117,234, 45, 1,102, 70,125,186,216,216,216, 4,237,219,183, 79, 99, 48, 24,232, -227,199,143,169,141,141, 77, 2, 0, 23, 91, 91,219,123, 7, 14, 28,208, 24, 12, 6, 26, 18, 18, 98,182, 24, 44, 95,190,124, 34, -165,148,234,245,122,186,113,227, 70,181,177, 78,141,233, 26,141,134,110,216,176, 65,109,109,109, 29, 4,192,165, 56, 46, 71, 71, -199, 88,141, 70, 67,211,211,211,105,253,250,245,179,175, 93,187, 70, 51, 51, 51, 41,165,148,230,241,193,175,249,176,111,111,189, -200,206, 28, 58,109,253,126,159,122,253,190, 59,125, 59, 38,250,231,223,238, 6, 57, 6,118,105,103, 70,249,165, 66,161,112,169, -155,155, 91,238,249,243,231, 13, 26,141,134,190,124,249,146, 94,191,126,157,222,188,121,147,222,189,123,151, 62,126,252,248,227, - 19, 90, 7,192,163,155,252,186,208, 77,126, 65,219, 7, 56, 38,103,221,219, 67,233,217,137,244,213,183, 21,232,220,118,138, 44, -118,147, 95, 16,221,228,223,131,206,111,206,183,136,115,115,213, 78,116,147, 95,208,247, 61,189, 83,238, 7,221,161,151, 46, 93, -162, 27, 86, 47,163,227, 91,121, 40,217, 77,126, 65,244,167,170,221, 44,226, 52, 89,196, 98,241,139,171, 87,175,210,203,151, 47, -211, 5, 11, 22, 80,153, 76, 22, 89,246,122,168, 42,164, 63,249,122,211, 45,190,205,233,214, 42,110,244, 98,233,242,246,119,139, -172,214,190,162,232,228,251,191, 81,154,250,146,198,175, 8,160,237,252, 4,101, 18, 91,121, 34, 43, 41, 60, 60,156,198,199,199, -211, 85,171, 86, 81,107,107,235,127,181,216,242, 3,186, 0,152,185,124,249,242,124,145,181,126,253,250,160, 71,143, 30, 5,121, -121,121,157, 44,195,185,214, 44, 95,190, 60, 95,100,173, 95,191,158, 62,122,244,136,122,123,123, 71,149,116,236,128, 1, 3,100, -141, 26, 53, 10,234,223,191,127,206,246,237,219,105,120,120, 56,125,248,240, 33, 93,190,124, 57,157, 55,111, 30,253,229,151, 95, -104,183,110,221,148,245,235,215,191,213,163, 71, 15,137,133,121,227, 83, 74, 69,121,139,128, 82,106, 20,154,124, 0, 2,227,199, - 63,183,188, 45,180,138,210, 34, 69,137,169,162, 4, 86,193,109,197, 8,177, 98, 5, 91, 73,231, 43, 40,170, 10, 91, 76, 77,171, - 23, 59,116,232,240, 23,223, 24, 62,197,194,145, 95,127, 43, 9,219,190, 10, 9,251,214,129,151,158, 0, 65, 86, 10,212, 87, 79, - 64,119,245, 40, 6, 54,108, 40,149, 18,178,200, 82, 27,160, 68, 34,129, 84, 42,133, 88, 44, 70,122,122, 58, 94,189,122,133, 70, -141, 26, 49,119,239,222,149,140, 28, 57,114,162, 84, 42,141, 36,132,116, 53,195, 92, 12, 0,184,126,253, 58, 70,140, 24, 33,222, -185,115,103, 77, 39, 39,167, 7, 6,131, 65, 4, 0, 33, 33, 33,232,221,187,183,120,207,158, 61,213,220,221,221,239,105,181, 90, -153, 88, 44, 6,143,199, 43,146, 79, 36, 18, 65,167,211,137,171, 84,169,242,240,193,131, 7,129, 29, 59,118, 20, 68, 68, 68,224, -245,235,215,208,233,116, 34, 95, 95,223, 71,247,238,221,171,217,161, 67, 7, 65, 84, 84, 20, 34, 34, 34, 96,174,207, 39, 33, 4, - 26,141, 6, 98,177, 24, 12,195,188,149,174, 86,171, 33, 18,137,204,230, 18, 8, 4,159,250,251,251, 63,122,240,224, 65,237, 46, - 93,186, 8,239,220,185,131,232,232,104, 24, 12, 6, 81,213,170, 85, 31, 61,120,240,160, 86,231,206,157,133, 15, 31, 62, 68, 66, - 66,194, 91,231, 43,193,143, 6, 0,240,224,193, 3,244,239,223, 95,244,251,239,191,215,114,115,115,123,168,215,235, 69, 0,240, -232,209, 35,244,238,221, 91,116,250,244,233,218,229,202,149,123, 88, 66, 87, 34, 15, 0,116, 58, 29, 70,141, 26, 37,183,182,182, - 70, 84, 84, 20, 88,150,133,193, 96, 0, 0,164,164,165, 60,122,240,232,113,200,192,190, 61,155,171,180,106,245,141,219,119,159, - 86, 44,239,237, 73, 8, 45, 95, 66, 93,118,149,201,100,145,223,127,255,253,164,176,176, 48,177,159,159, 31,243,240,225, 67,164, -167,167, 67, 36, 18, 65, 34,145, 64, 44, 22, 67, 32, 16,124,124, 70,244,204, 0, 7,176,104, 29,145,164, 17,139,109, 61, 21, 86, -110,190, 64,228,101, 84,112, 18,131,199,240, 36,119, 94,231,200, 1,218, 26, 94,201, 14,150,113,178,173, 95, 39,106,196, 58,251, -106, 86,238,158, 94, 72, 73, 73, 65,185,138,254,200, 21, 57,137,174,191, 84, 90,129, 88,200,249,231,181,106, 90,165, 74, 21,215, -202,149, 43, 35, 57, 57, 25,181,107,215,134,157,157,157, 29, 33,164,117,169,235, 96,123,121, 49, 50,209, 24, 96, 86,192, 64, 22, - 64,199, 95,130,151, 73,181,177,185,206,191,230,130,215,247, 32, 30,214, 86,162,155,123,246,238,243,112,240,170, 10,156, 24, 10, - 23, 91, 49,182,142,169,109,239,100, 35, 62, 82,154,110, 68, 66, 72,160,139,139,203,249, 91,183,110, 57, 74, 36, 18,220,187,119, - 15, 1, 1, 1, 88,181,106,149,147,157,157,221,229,127, 67, 55, 34,165,148,134, 0,199,190,127,248,112,219,206,208,208,227, 3, - 42, 85,234,216,223,215,119,241,232, 62,125,134, 77,152, 48, 1,203,150, 45,195,145, 35, 71,208,184,113, 99,140, 28, 57, 82, 23, - 25, 25,185,163,148,221,133,235, 86,172, 88, 49,126,226,196,137, 5, 57,181, 17, 17, 17,223, 23,119,108, 96, 96,160,231,139, 23, - 47, 98, 38, 79,158, 92,123,231,206,157, 82,153, 76,134,244,244,116,108,217,178, 5, 51,103,206, 4, 33, 4,148, 82,252,242,203, - 47,178, 33, 67,134,212, 11, 13, 13,141, 41, 95,190,188, 57,110, 29, 4,128, 4,128, 44,111,145, 3,144,237,217,179,199,166, 75, -151, 46,214,121,105, 82, 0, 82, 66,136, 24, 28, 10,162, 80, 45, 98,114,205,143, 23,184,215, 58, 22, 76, 43,184,141, 82,218,177, - 56, 14, 11,239,237,194,206,119,162, 96,100,248,183,222,169, 38,191, 91,156, 56,113,226,210, 95, 72,129, 26,174, 62,126,200, 56, -123, 0, 82, 62,129,148,151,183,240, 9,152, 87,143, 80, 78, 34,128,142,210,192,210, 8, 45,163,216,146, 74,165, 16, 10,133,200, -206,206,134, 78,167,195,172, 89,179,196,103,207,158,117, 96, 24,230,127, 37,241,152, 10,166,231,207,159,163,106,213,170,228,216, -177, 99, 46,227,198,141,147, 2,128, 72, 36, 66, 70, 70, 6, 42, 87,174, 76, 78,157, 58,229, 60,123,246,108,171,226,196, 12, 33, - 4, 66,161, 16, 19, 39, 78,148,222,190,125,219,222,221,221, 29,175, 94,189, 66,106,106, 42,172,172,172, 48,113,226, 68,233,173, - 91,183,156,220,221,221, 17, 30, 30,142,140,140, 12, 88, 89, 89, 89, 44,180,132, 66,225, 91,199, 16, 66,160,213,106, 33, 18,137, -204, 22, 68, 54, 54, 54,187,131,130,130,156,108,108,108,240,240,225, 67,232,245,122,216,216,216, 96,252,248,241,210,160,160, 32, - 39, 91, 91, 91,132,132,132, 24, 45,127, 22,229, 17, 0, 88,150, 69, 72, 72, 8,202,151, 47,143,203,151, 47, 59,143, 30, 61, 90, - 98, 76,127,249,242, 37, 60, 61, 61,113,249,242,101,103,185, 92,190,187, 40, 46,150,101, 17, 23, 23,135, 39, 79,158,224,213,171, - 87, 72, 74, 74, 66,114,114, 50,178,178,178,160,215,235,223,248,217,101,101,158,216,179,255,216, 3,169, 84, 42, 11,240,173,226, -245,232,113,112,162, 84, 42,149,121,123,121,249, 18,178,128, 41, 38,159,255, 11, 13, 13,117, 24, 50,100,136,240,197,139, 23,136, -141,141,133, 64, 32,200,191,183,140,139, 88,252,145,181,101,132, 16, 16, 77, 21, 16, 82,251,230, 43,165,125,211,142,125,133,120, -253, 59,192,234, 0,134,143, 22, 53, 60,249, 71, 30, 41, 93, 64, 81, 3,106,248, 3,102, 92,120, 66, 8,160,173, 12,144, 79,206, -188,208, 59, 52,254, 98,140, 48, 38, 38, 6, 66,161, 16, 98,177, 24,181, 63,237,206,223,243, 64,231, 10,130,154,208,194,207, 44, - 78, 19, 72,165,210,111,230,205,155, 39, 55,229, 28, 54,108,152,220,198,198,102, 94,169, 69,150, 82,214, 16,122, 58,241, 73, 76, - 78,249,197, 39,226,171,134, 38,170,252, 64,233,100, 64, 87,171,172, 98,139, 16,210, 66, 34,145,188, 38,132, 52, 41,147,200, 82, -136,110,236,221,187,207,195,190,220, 27,145, 5,125, 46, 32,144,194,213,201, 22, 91, 39,181,180,119,178,149, 90, 36,182,242, 68, -214, 31, 55,111,222,116,148, 72, 36, 8, 10, 10,130, 80, 40,132, 68, 34, 65,245,234,213,177,105,211, 38, 39,123,123,251,127,149, -216, 90,250,240,225,246, 37, 79,158, 60,159, 17, 24,232,223, 85, 46,183, 31,219,191,191,205,236,217,179,143, 31, 61,122,116, 91, -135, 14, 29,146,111,223,190,253, 3,165,244,128,133,215,135, 16, 66,214,175, 92,185,114,172, 81,184,205,158, 61,251,151,163, 71, -143, 46,233,208,161, 67,220,237,219,183, 39, 83, 74,215, 23,199,145,157,157,125,116,206,156, 57, 54, 95,124,241,133,241, 63,174, - 94,189,138, 29, 59,118, 64, 46,151,191,181,111,231,206,157, 49, 98,196, 8, 59,141, 70, 83,236, 59,201,197,197,229,179,155, 55, -111, 6, 0, 16, 2, 16, 27,133,214,227,199,143,109, 51, 51, 51,109,173,172,172,108,221,220,220, 20, 70,177,245,197, 23, 95,216, - 10, 4,130, 38,224,128,146,180,136,169,208, 49, 39,173,180,251,155, 43,182, 10,252,143, 43,106,158,195,183,132, 86,135, 14, 29, - 46, 1,104, 86,216, 78,218,212, 4,136, 97,128,148, 71, 32,227,153,136, 45,176,224,103, 36,162, 52, 3,120, 11,190, 12,165, 82, - 41, 36, 18, 9, 4, 2, 1,116, 58, 29, 50, 50, 50, 44, 18, 5,214,214,214,176,178,178,130, 74,165,130, 94,175,135, 68, 34, 49, -138, 17, 88, 91, 91, 67, 32, 16,228,191,132, 11, 90,147, 10, 90,115,132, 66, 33,228,114, 57,226,226,226, 16, 17, 17, 1,150,101, - 97,101,101, 5,185, 92, 14,145, 72,132,216,216, 88,196,198,198,130, 82, 10,185, 92, 14,185, 92,110,182, 56, 2, 0,131,193, 0, -145,232,175,126,192, 58,157,206, 34,139,150, 94,175,199,211,167, 79, 17, 25, 25, 9,137, 68,146, 95, 86,177, 88,140,151, 47, 95, - 34, 62, 62, 30, 50,153, 12,214,214,214,176,177,177, 49,155,215, 88, 22,133, 66, 1,169, 84,138,180,180, 52,228,228,228,228,215, -169,181,181, 53,228,114, 57, 50, 50, 50,144,152,152, 88,108,217, 13, 6, 3, 98, 99, 99,145,148,148,132,168,168, 40, 36, 39, 39, -231,139, 45,150, 45,123,252,203,203,151, 47,227,213,171, 87,198,174,169,252,235,107,186, 54,230,251,163,193,134, 64, 27,232, 4, -109,146,179,117,226, 36,173,208,198, 37,176, 21,240,250, 20,192,240, 1,137, 29, 26, 84,171,128,136, 52,131,252, 89,130, 70, 2, -130,182, 88,239,107,103, 22,167, 65,208, 58, 41, 75, 39, 14,215, 58, 89, 87,173, 81, 7, 9, 9, 9, 16,139,197, 16,139,197,248, -164,113, 43,188, 78, 49,200,130, 99, 84, 50, 80,180, 49,139,243,207,103,180,162,149,149, 85,195, 38, 77,154, 16, 83,206,246,237, -219,131, 16, 82,157, 16,226,111, 81,249,215, 86, 18, 65, 43,107, 0, 62,157, 24, 28,151,227,126,228,113,174,111,167,174,221,237, -127, 60,151, 88,245,105,188,218, 7, 84,247, 53,168,182, 78,105,197, 22, 33,164,185, 66,161, 56,190,118,237, 90, 31,137, 68,114, -138, 16,210,180, 52, 60, 86, 82,222,198,111,198,246,245,176, 51,138, 44, 93, 14,192,151, 2, 2, 41,192,151,194,213,217, 17,139, - 70,180,182,151, 73, 4,135, 44, 16,172,123,214,175, 95,239, 84, 80,100, 25,151,218,181,107, 99,238,220,185, 78,246,246,246,187, -223,243,183, 64, 27, 91, 91,219,157,173, 90,181,186, 25,171, 80,140,136,171, 83, 71,244,135,141, 77,198,103, 25, 25, 54,222,143, - 31,107,253,128, 71, 0, 54, 68, 69, 69,181, 51, 87,100, 17, 66,250,216,216,216, 4,181,106,213, 74,171, 80, 40, 34, 87,173, 90, -245,229,184,113,227,176,108,217, 50,204,153, 51,103, 11,128,225,148,210, 89, 81, 81, 81,238, 37,137, 44, 0,136,143,143,239, 55, -125,250,244,228,228,228,100, 0, 64,245,234,213,145,158,158,142, 41, 83,166,224,171,175,190, 2, 0,212,170, 85, 11,148, 82, 36, - 36, 36, 96,197,138, 21, 9,241,241,241,131, 75,104,219,163, 14, 28, 56, 80, 79,171,213,122,230,117, 15,138,211,211,211,173, 83, - 83, 83, 21, 90,173, 86,206,178,172,220,214,214,214, 10,128,108,224,192,129,252,224,224,224,170,122,189, 62,134,211, 86,127,162, - 56, 45, 82, 74,156, 40,139,229,170, 48,139, 88, 17,247,103,241, 22,173, 14, 29, 58, 16,211,245, 91, 22, 35,130,135,145,119, 47, -195, 62,176,206, 91,214, 44, 25,143, 64,106,109,131,215, 81, 17, 16,130, 60,177,180, 16, 70, 97, 85, 80,108,101,100,100, 96,204, -152, 49,170, 94,189,122,165,176, 44,219,221, 92, 81, 96, 99, 99, 3, 27, 27, 27, 4, 7, 7,211,110,221,186, 37,172, 90,181, 74, -101, 42,180,158, 63,127, 78,219,180,105,147, 56,111,222,188,236,226,132,150,209,162,181,116,233, 82, 85,139, 22, 45,146,158, 60, -121, 66,141, 98,202,202,202, 10, 43, 86,172, 80,181,108,217, 50,225,206,157, 59,212,152,102,137, 69,139, 97,152,124,161,101,122, - 12,195, 48, 96, 89,214, 34,161,165, 84, 42,251,117,232,208, 33, 33, 36, 36,132, 26,203,105, 99, 99,131, 85,171, 86,169, 90,183, -110,157,240,228,201, 19,106, 76,179,182,182, 54, 91, 12, 26,207,175, 80, 40, 96,109,109,141,224,224, 96,218,166, 77,155,132, 53, -107,214,228,154,166, 63,125,250,148,118,238,220, 57, 33, 43, 43,171, 95,113, 22,173, 87,175, 94,229, 91,176,114,115,115,145,156, -156,140,168,168,168,252,174, 67,149,220,186, 93,223, 94,157,106,170, 84,170,156,224,231, 47, 34,171, 87, 11,112, 86,169, 84, 57, - 17,145,145,207, 41,157,199, 22,243, 32,116, 31, 58,116,104,202,204,153, 51, 85,153,153,153,133,138, 44,227,250,163, 2,195,186, -130,208, 38, 87, 94,100,219,182,238,212, 91, 68,226,111, 3,218,108, 64,108, 7,136,237,192,151, 59,224,243,166,181,120,219,111, -102,186,130,178,141, 32, 20,123,150,200, 41,160, 46, 0,219,244,236,243, 92,187, 38, 61,198,139, 82, 83, 83,193,227,241,242, 69, -145, 76, 46,199,103, 93, 7, 50,191,220, 86,187, 2,180, 49, 8,207,211,220,236,138, 68,162,105,223,124,243,141, 48, 45, 45, 13, - 12,195,252,201, 41,147, 97,244,232,209, 98,107,107,235, 57,102,151,253, 96,128, 16, 2,113, 3,128,126,245, 44, 62,215,253,232, - 35,149,223,215, 75,183, 74, 3,107,213,195,168, 22,206,210,165, 39, 18, 3, 31, 68,169, 42, 0,134, 73,208,107, 62,177, 84,108, - 17, 66,154, 42, 20,138, 19,119,239,222,149,181,111,223, 30, 43, 86,172,144, 75,165,210, 83,132, 16,139, 27,126,101,182, 97,220, -194, 53,191, 38, 60,252,161, 45,160, 85,190, 17, 88, 38, 75, 98, 54,139,185, 91,207,103,232,116,180,175,185,156, 42,149,106,208, -240,225,195, 83, 14, 29, 58,244, 23,145, 37,145, 72, 16, 22, 22,134,197,139, 23,167,166,166,166, 14,126,159, 34,107,220,184,113, -139,163,163,163,253,206,158, 61,203, 79, 74, 74,114, 94,249,243,207, 25, 7, 51, 50, 82,151, 60,126,252,108, 86,181,106, 85,102, -212,168, 49,184,168,208, 15, 69,137,172,177, 99,199,238,137,142,142,174,125,238,220, 57, 65, 82, 82,146,231,216,177, 99,177,124, -249,114,204,153, 51,103, 19,128, 81, 52,207, 89,198, 92,104, 52,154,103,105,105,105, 29,219,182,109,155,158,150,150,134, 26, 53, -106,160, 83,167, 78,112,117,117,133,187,187, 59,186,116,233, 2, 95, 95, 95,164,164,164,160,111,223,190,169, 73, 73, 73,109, 41, -165,175,138,227, 76, 73, 73, 9,221,189,123,247,243,241,227,199,215,142,142,142,174, 10,192, 33, 43, 43, 75,158,149,149, 37,214, -104, 52, 82, 59, 59, 59,187, 90,181,106, 57,142, 28, 57,210,234,254,253,251, 85,163,163,163,179, 1, 68,112,242, 42, 95,100, 21, -169, 69, 0, 36,229, 9, 30, 77,129,117, 82, 9,219,204, 61,182,208,223,102,236,247,150,216, 50, 93,254, 98,209, 42, 10, 90, 96, -238,142, 3,219,115, 69, 94,149, 97,227, 87, 19, 50,137, 4, 82,145, 8, 82, 59, 7,168, 89, 22, 63,135,197,231, 40, 41,157, 99, -105,133,154,118, 27, 74, 36, 18,240,120, 60,108,216,176, 65,223,176, 97,195,220,243,231,207,175,205,201,201,241,162,148,254,102, -137, 40, 88,179,102, 77,206,196,137, 19, 31, 36, 38, 38,214,148, 72, 36, 26, 99,250,218,181,107,115, 6, 14, 28,248, 56, 58, 58, -186,182, 76, 38,203, 41,202, 63,203, 84,104,137,197, 98,117, 98, 98, 98,189, 97,195,134,133,108,216,176, 65, 41,147,201, 32,151, -203, 33, 22,139, 53,137,137,137, 53,191,252,242,203, 7,203,151, 47,207,145, 74,165,144,203,229, 22,117,203, 81, 74,255, 34,168, - 76,211,205,133, 78,167, 59,159,152,152, 88,115,226,196,137,247,127,252,241, 71,165, 81, 0,153,230,113,229,202,149, 57, 86, 86, - 86, 22, 89,180,140,251,201,229,114,172, 94,189, 58,103,252,248,241, 15, 18, 19, 19,107,138,197, 98,141, 73,186,114,220,184,113, -247, 19, 19, 19,107,234,116,186,243,197,124,225, 25, 50, 51, 51,193,231,243,241,248,241, 99,181, 80, 40, 4,195, 48,120,249,242, -101,190,208,178,183,183, 15,168, 89,189,154,255,175,123, 14, 92,146, 10,197,226,134,245, 62,169,250, 42, 60, 34,154, 82, 18, 94, -194, 23,199,111,185,185,185, 94, 87,175, 94, 93,219,182,109,219,220, 45, 91,182,232,249,124,254, 95, 94, 62, 31,159,208,130, 12, - 4,210, 23,137,106,133,132,209, 19, 60,255,237,141,200,146,216, 2, 18, 59, 64, 98, 7, 15, 15, 79,220, 14,203, 81,128,129, 8, - 6, 51, 98,136, 81, 42, 7,129,236,113, 2, 20, 2,145,148,196,199,199,231, 11, 34,227,226, 83,185, 42,238, 69,100, 91,129, 80, - 49,120,176, 36, 4, 73, 71, 7, 7, 7,126, 92, 92,220, 95, 56, 3, 2, 2,120, 58,157,206,252,208, 46,177, 6, 55,128, 29,251, - 60, 62,215,237,240, 3,165,223,164, 37,191, 72,165,134,116,224,238, 26, 4, 86,116,199,164, 30,181, 68,179,143, 38, 5,222, 9, -207,169, 8, 30, 29, 5, 54,219,201, 2,129,208, 68,161, 80,156,186,115,231,142, 76,161, 80,224,213,171, 87,168, 87,175, 30, 54, -111,222, 44,147,201,100, 39, 9, 33, 45, 44,185, 76, 55,227,105, 68,118,150,161,225,180, 3,145,241, 15,227,244,111,137,172, 36, - 37,197,240,239,143,166,167,101,230,118,191, 17, 89,244,243, 83,200, 61,127, 63, 61, 61,189,205,156, 57,115, 82,146,146,146,222, -186,199, 35, 34, 34,140,130,160, 5,165,244,201,251,186, 61,109,108,108,250, 47, 89,178, 4,119,238,220, 65,251,246,237,113,249, -242,101,164,166,166, 98,239,169, 83, 47,118,191,120, 49,203,232,179, 85, 88,232,135,162, 96,109,109,253,245,146, 37, 75,112,247, -238,221,124,206,148,148, 20, 44, 89,178, 36, 26,192, 24, 75, 69,150, 17, 9, 9, 9,183,159, 61,123,214,182, 70,141, 26, 79,215, -174, 93, 27,237,230,230,198,142, 28, 57, 18,195,135, 15,135,147,147,147, 97,245,234,213,145, 77,155, 54,125, 28, 26, 26,218, 74, -169, 84, 62, 50,227,250,208,228,228,228,235,155, 55,111,190,249,233,167,159,202, 6, 13, 26,228,116,228,200, 17,135,156,156, 28, -119,177, 88,236,172,209,104, 68, 79,159, 62,229, 29, 60,120,208, 53, 56, 56, 56, 76,165, 82,221, 46,109,222,255,131,184,147,103, -157, 58, 87, 96,125,167,132,109,230, 30, 91,212,239,146,246, 51,189,254,155, 77, 23,211, 13, 37, 46,253, 43, 98,254,232,106,138, -156,235, 3, 26,208,248,145, 77,104, 66,239,170,244,106,115,123, 58,172, 18, 81, 14, 42,101,120,135,152,152, 24,154,144,144, 64, - 83, 82, 82,232,190,125,251,168,171,171,171, 82,161, 80, 88, 28,222,193,213,213, 53, 33, 51, 51,147,214,173, 91, 55,213,201,201, - 41, 63, 20,129,155,155, 91,130, 82,169,164, 13, 26, 52, 72,117,118,118, 94,141,188, 17, 30,158,158,158, 81,148, 82,234,237,237, - 29, 91, 20,159, 94,175,167,174,174,174,198, 16, 9, 2,123,123,251,159,234,215,175,159,154,144,144, 64,221,220,220,242, 67, 39, - 56, 57, 57,173,168, 87,175,222, 91,233,102,228, 55, 42, 58, 58,154, 70, 71, 71,211,114,229,202,197,154,166, 71, 68, 68,208,136, -136, 8,234,233,233,105,113,120, 7, 39, 39,167,229, 5,243, 82,218, 60,122,121,121, 37,168, 84, 42,218,168, 81,163,183,234,212, -203,203, 43, 33, 55, 55,215,152,110, 86,120, 7,169, 84, 58, 74, 34,145,196, 74, 36,146, 88,177, 88,188,184,124,249,242,137,251, -247,239,167,171, 87,175,166, 10,133,226, 77,120,135,128,206, 13, 43, 55, 26, 60,203, 41,160,203,215,101, 9,239,160, 80, 40,254, -112,117,117, 85, 30, 60,120,144,170,213,106,170,211,233,168, 17,248,152, 70, 29,110,246,173, 76,127,242, 63, 26,186,208, 39,120, - 98, 51, 89,238,163, 69, 53, 41,253,223, 23,148,158, 28, 78,233,249,105,244,246,166,145,180,145,143,216,112,109, 74,185,231,116, -163,223, 97,179, 66, 50,108,174, 94,153,254,228,127,242,197, 2,159,224, 65, 77,221,115,127,222,176,154,222,186,117,139, 62,126, -252,152,190,122,245,138,158,252,109, 63,109, 84, 81,246,134,243, 39,255,163,150,132,121, 0,208, 88, 44, 22,103,175, 90,181,138, -222,188,121, 51,159,243,232,209,163, 84, 38,147,229, 0,102,142, 90, 6, 8,253, 41,160,171,126,131,223,149,217,173,173,178, 82, -142, 79,163,244,209,118, 74, 55, 7, 82,186,173, 62,165,251, 59, 80,122,108, 48,189,185,186, 7,109,236, 35,212,209,141,126,151, -233,166,128,214,230,230, 83, 32, 16,100, 30, 58,116,136,198,198,198,210,203,151, 47,211,187,119,239,210,144,144, 16, 26, 25, 25, - 73, 79,156, 56, 65, 5, 2, 65, 46, 0,139, 71, 53,214,119,129,119,171, 42,194,184, 7, 75, 27, 83,122,164, 47, 77,218,221,159, -118,172,166, 72,109, 80,142,255,105, 25, 70,218,213,114,112,112, 72, 62,113,226, 4, 13, 11, 11,163,151, 46, 93,162,206,206,206, -201, 0, 2,223,247,253,217,170, 85,171, 91,148,210,160,246,237,219, 7, 1,248,189, 85,171, 86, 65,175, 95,191, 14,170, 87,175, -222, 77, 20, 19,250,161, 56,206,207, 62,251, 76, 75, 41,165,237,219,183,167, 0, 98, 91,181,106, 69, 95,191,126, 77,235,213,171, -167,121, 71,163, 36,121, 0, 6, 11, 4,130,159,237,237,237, 47,216,217,217,157,231,241,120,155, 1, 12, 48,167,157, 43,134,211, - 29, 64, 0,128, 79,242,150,170,121,105,220,136,195,255,210,132,211,230,238,216,195, 7,141,135, 84, 36,151,250, 85, 64, 86,223, - 10,200, 30, 90,137, 92,237,238,131, 79, 45,157,221,219, 40,180, 82, 83, 83,233,253,251,247,105,243,230,205,149,114,185, 60, 6, - 64,219,210,204, 24,238,232,232,120,215,217,217, 57,138,207,127,187,209, 50, 73,255,204, 52,221,217,217,249,186,155,155, 91,130, -147,147,211,189,194, 56, 29, 29, 29,239,186,185,185, 37, 56, 58, 58,222, 53, 61,142,199,227,181,119,116,116,140, 41,152,206,231, -243, 63,117,118,118,142, 42,152,142, 34,102, 54,119,117,117,141,138,141,141,165, 73, 73, 73,212,203,203, 43,182,160, 0,139,143, -143,127, 75,128, 89, 50, 91,122, 81,121, 41, 42,189, 40, 78, 51,234,212,226,235,110,178,205,215,195,195, 35,113,229,202,149,212, -202,202, 42,209,116,155, 95,179,161,223,220,122,145,157, 57,124,250, 79,251,157,170,118,173, 94,154,153,226, 1,180,149,203,229, - 49, 45, 91,182, 84,190,124,249,178, 88,161,133, 15,100, 70,251,191,112, 30,168, 42,164,155,170, 54,166, 27,171,158, 8,153,231, -253,116,112,125,185, 58,104,101,123, 74,207, 79,163, 55,127, 26, 78, 27,250,136,222, 8,162, 77,254,167,232, 47,190,205,232,154, -138, 34,179, 56,127,174,212,148,110,242, 63, 21, 60,215,251,233, 23,117,156, 52,123,182,111,162, 47, 95,190,164, 71, 15,238,166, - 13, 42,228,137,172,141, 85,207,208,159,170,182, 52,139,179, 16,177,181,117,235, 86,250,242,229, 75,122,248,240, 97,179, 68,214, - 91,156, 38, 66,107,102, 43,171,244,225,245, 37,234,190,181, 68,154, 46,129, 66,109,155,202, 66,125, 35,111,190,161,166, 27,195, - 86,117, 2,109,227, 39, 85,211,141,126,151,233,198,170,109,205,205,167, 72, 36,138,132, 73, 76,157,130,139, 88, 44, 78, 42, 74, -104,149,116,221,235,187,192,187,149,175, 56,238,143,133,159,210, 78, 53, 20, 41,230,136,172,146, 56, 1,212,114,116,116, 76,222, -182,109, 27,117,113,113, 73, 50, 71,100,253, 19,247,167,141,141,205,206,236,236,236,160,211,167, 79, 7,181,106,213, 42,104,231, -206,157, 65, 87,175, 94, 13,146,201,100, 59,139, 10,253, 80,181, 64,251, 95,144,211,218,218, 58, 40, 43, 43,139,158, 62,125,154, -182,106,213,138,238,220,185,147, 94,189,122,149,202,100,178,160,127,213,179,201,113,254,119,197,212,155, 24, 90,111, 45, 22, 11, -173,119,117, 33, 0,208,244,244,116, 58,105,210, 36,141, 68, 34,201, 17, 10,133, 51, 1, 8,255, 43, 55,161,163,163,227,117, 23, - 23,151, 4, 23, 23,151,183,196,158,105,186,163,163,227,189,143,249, 1, 4,224, 43, 20, 10, 35, 4, 2,193,115,211,116,167,128, -206, 13, 43, 53, 30, 52,199, 37,176,243,231,101,201, 39, 0,161, 80, 40,156, 41,145, 72,114,166, 76,153,162,201,206,206,254,184, -132, 22,165,160,107, 42,138,140, 98,235,209, 28,239,144, 78,213,100,218,205,147,219,208,134,229, 11,136,172,109,222, 98,139, 56, -243,196,214,253,217, 94, 33, 45,125,173,244, 75,230, 76,162, 13, 42, 72,223, 22, 89,150,112, 22, 16, 91, 50,153, 44,107,222,188, -121,102, 91,178,254,194,249,179,159, 23,221,228,191,243,141,136, 42, 97,249,201,111, 11, 93,231,231,245,111,185,238,245, 93,224, -253,153,175,248,137,185,150, 44,115, 56, 1,212,178,179,179,123,106,174, 37,235,159, 40, 59,128, 54,163, 71,143, 14,122,253,250, -117,208,171, 87,175,130,174, 94,189, 26,212,181,107,215, 32, 0,109, 10,139,179,165,237,214, 77, 93,139, 97, 38,149,192,217,103, -244,232,209,244,245,235,215,244,213,171, 87,244,234,213,171,180,107,215,174, 20, 64, 31, 78,192,112, 66,235,223,190,240,255,233, - 78, 86,137, 68,146,104,107,107,235,100,101,101,117, 34, 55, 55,119, 60,165, 52,238,191,212,201,156,148,148,212,200,146,244,143, - 17,148,210,231, 0,188, 11,166, 39, 62, 57,114, 3,192,141,119,192,175, 5,176,132, 16,178, 99,211,166, 77,107, 87,172, 88,209, - 85, 34,145, 36,125, 84,149, 56, 62, 84,131,181,149,238, 66, 36, 90, 90,205, 67, 54,227,155,246,148, 44, 57,125,221,123, 89, 55, -231,200, 70,149,228, 97, 16,176,223,131,168,111, 99,112,184,218, 66,206,219,144,234,150,214, 44, 39,155,241, 93, 23,144,239, 79, -109,247, 94,222,213, 33,178, 81, 69,171, 72, 80,124, 15,113,206, 13,139, 56,223,190, 46,215, 8, 33,159,175, 92,185,114, 71, 78, - 78,206, 8, 74,233, 5,139, 73, 20, 76, 60,148,186,121,208,241,170,129, 66, 84,204,201,114,192,240, 30, 35, 17,255,154,201,196, -111,198,211, 8, 0,129,239,248, 89,186,159,215, 29,245,111,122,190,207, 16, 66,176,123,247,238,254,254,254,254, 21,131,131,131, - 95,229,228,228,236,162,148,158, 49,245,101, 34,132, 28,251,254,225, 67,229,186,224,224,107, 26,150,189, 86, 2,231,222, 60,206, -175,253,253,253, 3,131,131,131,159,228,228,228,172,164,148,238,229, 92,151, 56,252,219,241,143, 11, 45,149, 74,229,194, 85, 59, -135,127,168,193,143, 3,208,237,163, 45,160,137,216,170,227, 37, 29,127,104,180, 52, 7,148, 68, 67,192,174,182, 88,100, 21, 34, -182,234,121, 75,191, 58, 60, 74,154, 3,138,120, 80,252, 80, 22,145,101, 42,182, 0, 84, 40, 53, 65,143, 96, 45,128, 48, 16, 18, -142,249, 40,218,137,122, 62,242, 63,187, 57,188, 31,177, 5,224, 76, 9,251, 80, 0,231,243, 22,115, 56,247, 2,224,132, 21, 7, - 78,104,113,224,192,225, 31, 22, 91, 7, 3,238, 32,153, 55, 5, 12, 42, 0,250, 8, 40,245,241, 24, 31,174, 41, 35,231, 45, 36, -147,137,224,193, 23, 34,125, 40,178, 53,241, 24, 93, 6,206,191,225, 77,142, 55,190, 83,133, 99, 30,119,107,112,224,192,225,159, - 3, 33,100,164,233, 72, 67,211,255,156,208,226,192,225, 67,199, 27, 43, 79,116,222,242,239,229,228,192,129, 3,135,255,152,224, - 2,222,204,201,212,170,136, 15,198,115, 22, 16,183, 42,197, 7,233, 57,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 91, -156, 37,113, 91,162, 63,254, 77, 2,171,144,114,108, 54,254,248, 71, 71, 29,114,156, 28, 39,199,201,113,114,156, 28, 39,199,201, -113,254, 87, 22, 6, 28, 56,112,224,192,129, 3, 7, 14, 28,202, 98,209,170,157,183,118,203,155,130,199,205,184,237,189,250,104, -201, 28,125,221,192,103,106, 16,150,250, 3, 0,101, 72, 8,244,236,195,156,228,231,101, 14,249,160,240,240,179,167, 16, 29, 32, -208,244,204,138,121,150, 90, 86,190,234,126, 54,221, 92, 28, 21,253,227, 83, 50,118, 60, 14,201, 58, 98,201,177,182,182,229,109, - 36,246,118, 61,212, 90, 93, 53,145, 80, 24,169, 77,207,220,156,154, 26,154,197,221,154, 28, 56,112,224,192,129,195, 71,129,218, - 0,238, 1,232, 64, 41,221,156,215,149, 88,188, 51,124,249,192,166,119, 36, 18,169, 15, 0,176,148,130,165,128, 50, 51, 61, 40, - 46,244, 78, 91, 0,112,242,169,115, 90, 32,177,174,195,210, 55,219, 13, 44,160,215,230,134,101,132,223,172,107, 78,142,172,156, -253,190,104,213,166, 85,183,142, 29, 59,248, 85,175, 86,189, 18, 0, 60,122,252, 40,244,248,241, 19,207,172,156,253, 14,101, 39, - 62, 59, 92,150, 18, 83, 72,190,253,228,147, 90, 77,238,222,189,183, 16,192,216,178,214,160,131,131,213,248, 51,255,155,210,236, -179,110, 43,228, 0, 44, 18, 90, 18,123,187, 30, 93, 58,181,171, 53,117,194,104,102,248,148,239,124,238, 92,187,184, 76,225, 94, - 45,157,178,186, 51,202,132,222, 87,138,155, 56,153, 3, 7, 14, 28, 56,112,224,240,175,199,137, 60,113,117,162,224,134, 34,133, -150, 68, 34,245,185,121,241,184,253,225,171, 81, 0,128, 86,181, 93, 49,107,209,218, 54,132,144,103, 0,208,121,248,124,223,133, - 51, 39,224,250,147, 68, 80, 74, 81,171,178, 3, 62,239,210,211,172,220, 72, 93, 3,234,246,238,213,171,223,148, 41, 95,119,126, -249,242,101,248,158, 61,123,174, 0, 64,211,102,205, 42,127,247,221,119,189, 86,216,217,139,165,174, 1, 49,170,248,224, 59,165, - 41,173,212,163,146, 71, 64,149, 26,253,247,253,178,150,105,209,182,123, 95,169, 71,165, 37,170,152,208, 24,115,142,117,114,114, -154, 40, 16, 8,108, 0,128,101,255,212, 63, 21,203,241, 92, 1, 64,111, 96, 21,246, 30,254, 89, 60,161,196, 32, 22, 11,131,179, -178,179,119,100, 68, 7,255, 92, 28,167, 90,167, 11,252,106,204, 16,230,254,171, 20,248, 4, 54,229,173, 94, 50, 27,172, 65,103, - 55,105,230,162, 30,119,111,237, 3, 48,239, 18,119,143,114,224,192,129, 3, 7, 14, 31, 38,242,226, 54,110, 54,249,191,185, 68, -161, 5, 0, 86, 82, 62,158,189,142, 7, 0,216, 74,129,241,163, 6, 33, 37, 57,201, 87,163,103, 49,116,208, 0,220, 11,137,195, -179,176, 36, 80, 74,225,235, 41, 51, 59, 67, 60,176,159, 12, 29, 54,180,249,233, 51,103,110,127, 51,231,155, 95, 9,121, 19, 13, -124,211,230, 45, 13,231,206,155, 59, 98,192,160, 1,173, 15, 30, 60,248, 4, 5,102,198, 54, 23,124,162, 88,187,124,233, 98, 81, -116,114,110,238,196, 41, 51,216,175, 39, 79, 92, 13,160,187, 57,199, 10, 4, 2,155,232,232,104, 43,134,121,219,125,237,251,197, - 51, 46,183,238,182,226, 69,120,100,250,253,211, 71,143,214, 13, 8, 8, 64,116, 76,124,227,101, 63,110,172,233, 86,169,238,144, -172, 76, 85, 55,101, 82,112,161, 81,168,197, 2,193,147, 5,203,126,170,197,218, 86,102,102,141,104,143,192, 74,238,136, 73, 76, - 71,179,182,157,249, 65,119,238,180, 1,192, 9, 45, 14, 28, 56,112,224,192,225, 3, 69,113,163, 14, 25, 0, 56,113,226, 68,161, -129,255, 12, 6,138,103, 97,113,120, 22, 22,135,219, 33, 73,208, 82, 1, 86, 47, 91,128,149, 75,230, 33, 85,197,224,240,245, 40, - 60, 15,139,199,243,176,120, 36,167,101, 23,166,240,222, 26,162,185,114,169,172,246,234,213, 54,203,219, 52,147,183,176,183,179, -179,123,241,228, 87,229,220,201, 9, 85, 23,124, 21, 37, 20,104,196,209,114, 43,121,163, 3, 7,246, 7,184, 56, 57,203,173,172, - 20,211,228,158,181,182,218,218,214,180, 41,142,179, 32,100, 46, 85, 59,119,238,208,238, 83, 87, 87, 23,118,244,234,160,144,106, - 85,253,117, 85, 42, 87,105, 44,115,241,237, 92,140, 18,205,231,100, 89, 22, 12,195, 32, 33, 33, 1,177,177,177,120,253,250, 53, -158, 63,127,142,168,168,240, 4,150, 82,129, 1, 44,227,230,230, 9, 62, 95, 4,159,242,222,248,105,245, 18,217,162,249,179,234, - 73,228,162, 35,132, 16, 82, 24,103,110,106,218,193,147,191,159,137, 57,181,231, 39, 3, 0, 36,166,101,227,252,157,151,184, 23, - 28,101,169, 98,126,231, 67, 94, 57, 78,142,147,227,228, 56, 57, 78,142,243,223,192, 89,148, 22,249, 16, 64, 41,221, 92,112, 49, -110, 43,118,212, 97,104, 84, 42,158,189,142, 71, 29,127, 15, 84, 42,239,134,219,207,211,176,235,124, 20,182,158,142,192,249, 7, - 73, 96,249, 10,196,103, 2, 47,194, 19,240, 34, 34,185,184, 56,205, 0, 0,158, 88,208,251,171,175, 50,166, 84, 15,200,108,112, -241,212,120,120, 56,189, 8,152, 62, 61,125, 60, 79, 44,232,109, 87, 78,177,103,198,148, 73,253, 21, 50,153, 72,163,214,160, 98, - 5,111,201,132,113,227,135, 16, 59,241, 30,115, 11,106,237, 25, 96, 39,150, 74,127, 94, 52,127,154,248,135,195, 47, 34,149, 26, - 40, 15,221, 72,120,245,245,140,185,169,124,129,228, 39,107,207, 0, 59,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45, - 98,162,158,118,254,227,240,212,182, 21,202,217,183, 21, 75, 36,160, 0, 50, 85,122,188,142,203, 65,203,207, 90,243,234,212,174, - 29,104,229, 86,117, 88, 97, 92,233,233,225, 25, 44,229, 41,142,255,182,155,183,255,236,125,252,122,252, 14,142, 92,184,143,219, -151, 78,233, 41,171,203,159,166, 66,225, 94,197, 87,225, 94, 35, 66,225, 81, 51, 33,127,241,172,126,151,251, 86,224,192,129, 3, - 7, 14, 28,254,189,200, 27,105, 56,178,224,136, 67,160,152,174,195,220, 92, 85, 88,247,222, 3,224,230,236,106,213,165,197, 96, - 97, 80,104, 58,146,226, 34,240,242,249, 99,228,228,234, 32,180,171, 0, 72, 92, 81,222,199, 27, 15,159, 29,209,174, 89,126, 34, -155,213,171,195,138,226,235,210,197,221,211,205, 73,206, 44, 95,230,117,243,249,179,180, 58,187,231,108, 67,191,126, 86,142,203, -151,121,221, 12,127, 37,103,100, 18,218,104,200,160,190,132, 33, 20,211,167, 79, 65,151,142,237, 48,116,200, 64,178, 99,199,246, - 6,230, 22,148,133, 96,221,204,217, 11, 68, 9,233,122,205,237,231,217,106,153, 92, 42,189,246, 34, 91, 25,232,227, 37,109,223, -109,112,236,137, 3, 63,255, 0, 96,144, 57, 92, 70,129,165,211,233,160,213,106, 1,192, 0, 0, 12,243,102,157,146,165, 65, 98, -186, 26, 9,233,106,232, 13, 44,186,245, 30, 36,189,115,247,193, 32, 0, 69,248,107,177,172, 78,175,195,161,179,247, 16,115,231, - 32, 75, 24, 94,134,209, 25,222, 40,178, 92, 93,189, 46,119,236, 54,208, 73, 36,121,211, 13,155,165, 84, 99,199,198,101,220, 29, -204,129, 3, 7, 14, 28, 56,252,139, 81,112,250, 29, 66, 8, 74,156,130, 39,252,201,149,186, 0,224, 87,183,109,138,149,132,111, -207,103, 8, 18,162, 67,177, 99,197, 68,176, 44, 69,251, 17,203,161,240,113,133, 84,200,131, 58, 59, 37, 59,229,229, 69,135,226, -213,158,174,245,250, 77, 49, 62, 95,142,169,104,189,123,119,182, 0, 0,118,239,206, 22,140, 25, 93,206,122,195,166, 48,159,250, - 77,234,128, 26, 12,232,216,165, 59,122,247,233,141,240,248, 28,252,239,114, 36,148, 42,141, 89,243,171,201,156,170,214,116,118, -247,104,247,213,224,118,114, 62,143,144, 42,222, 54,188,168, 36,157,158,199, 19, 24,142,221,201,136,237,214,173,143,227,249,147, -251, 63,149, 57, 85,173,153,147,244,244, 65, 73,124,106,181, 26, 6,131, 1,106,181, 26, 58,157, 14,246,142, 21, 78,182,238,190, - 34, 58, 46, 62,235, 68,124, 90,110,125,165, 78,143,132,116, 53, 18,211,213, 72, 87,106,225,170,176,131, 94,167,169, 94,204, 69, -248,181,107,247, 1, 3, 1, 48,132,209,111,203,138,125,250,220,184,205, 40,178,218,117,233,231,116, 57, 40, 20, 47,239,158, 74, -163,172, 94,247,166,226, 88,110, 10, 20, 14, 28, 56,112,224,192,225, 95, 14, 19, 63,173, 19,121,206,241,120, 75,104, 25,251, 70, - 59,116,232, 64, 10, 30, 28,147,144, 10, 7, 43, 62,156,220,125,208,127,226, 74,252,250,195,100, 24, 12, 58, 80, 10,232, 13,230, - 69, 38,160, 84,112,118,236, 24, 31,255,242, 62, 60,167,254,253,100,170, 93,187,115,164,253,251,201, 84,213,170, 59,100,140, 29, -227, 19,150,149,235,213, 88,111, 48,224,218,147, 68, 60, 14,203,192,227,240, 76, 88, 73,205, 15,243,197, 19, 9,199, 44, 91,186, - 68,200,231, 17,242, 36, 34, 59, 59, 58, 69,159,205, 19, 8,180, 50,169,136,106, 40, 95, 29,158, 76, 83, 62,235, 58, 68,117,108, -231,143,195, 0,140, 43,138,199, 56,210,208,104,201, 50,174, 41,165,148, 0, 44, 75, 12,134,232,228, 92,100,107,117, 72, 72,251, - 83,104, 17,125,209, 61,167, 10,247, 42,190, 54,214,246,191,243,120, 60, 49,165,128, 78,171,239,165,112,175,210, 54, 43,246,197, -115, 83,145,117,243, 73, 44, 66,239,159, 75, 48,104,115, 6, 40, 19, 66,254,224,110, 91, 14, 28, 56,112,224,240, 95, 66,113, 90, -228,223, 14,163, 5,171, 80,139, 86,113, 5,162, 20,120, 17,145,140,242,158, 78,240, 44, 95, 9,207,159, 62,252,115, 27, 0,189, -193, 60,223,181, 35, 71, 98,163, 87,173,178, 97, 39, 79,206,104,184,108,153,215,141, 49,163,203,217, 84,171,238,144, 49,109, 90, -100,195, 85,171,108,110,156,189, 41, 48,208,188,120, 93,198,216, 92,121, 97,254,205, 4, 83,175,102, 64, 5,222,130,221, 47, 34, -255,120,148,149, 40, 20, 10,117,174,118, 18,162,176, 18,241,120,140, 64,164,214, 49,106,223,192,218,188, 99,204,155,232,173, 37, - 9,173,130, 93,135, 41, 73,161,157,207,252,111, 74,181, 22, 93,151,219,199, 36,169,144,161,225,229,119, 29,242, 24,130, 71, 79, - 35, 0,158,240,113, 97,156,214, 10,251,211,123,118,253,234,181,106,217, 98,104,245, 6,140,157,252, 13,134, 12, 26,112, 90,225, - 94,165,173,151,143, 95,208,149, 99,219,100,109, 71,255,132,136,103,119,227,245,234,204,189,156,200,226,192,129, 3, 7, 14,255, - 53,124,136,226,202,136, 2,163, 14, 11,183,104, 21, 7,111, 79, 23,220,122, 28,134,234,254, 21, 96, 99,173, 64, 72,104, 52,120, -140, 0, 12, 1,116,122,243,197, 16,213,234,246,173, 90,101,131,136, 48, 57,179,225,167, 48,159,177, 99,124,194, 86,173,178,185, - 65,181,186,125, 0, 6, 80,250,102,238, 69, 99,128, 84,131, 5, 97, 60, 41,171, 43,231, 98, 47,227,221,125,165, 76, 97, 24,158, -218,193, 70,194, 58,216,136, 25, 7,133, 72, 32, 20,240, 88, 61,101,180,158,206, 62,185,148,101,107,154,195,103,218,117,104, 48, - 24, 64, 8, 99,200, 19, 98,242,168, 20, 21, 50,114,121, 72, 72, 87, 35, 45, 75,139, 42, 30,114,156, 59,127, 48,199,160, 83,237, - 46,140,139, 39, 16,218, 84,242,241,196,172,111, 87, 65,165, 54,224, 69, 76, 54,132, 98,177,171,139,107,224,131, 1, 95,206, 16, - 79,216, 28,138, 97,159, 58, 96,242,149,208,152,156, 4,201, 12,238,113,227,192,129, 3, 7, 14, 28, 62, 28,152,250,104, 21,132, - 89, 66,203, 74, 38, 1,229, 73,112, 37, 40, 20,126, 1, 53,176,253,232,109, 84,174,222, 0,113, 89,122, 80, 48, 37,142, 54, 52, -226,235, 25, 57,247, 0,220,235,210,197,221,243,139, 47, 60, 90, 83, 42, 56,187, 97, 99, 70, 52, 0,252,180,183, 57, 40, 0,150, -165,160, 20,160,236, 27,193,101,190,156,228, 71,132,197,101,150,247,113,149, 35, 56, 90,171,150,139,133,140,157, 92,196,115,178, - 17, 9,133,124, 62, 12,148,168,227,226, 66,213, 4, 8, 55,135,174, 96,215,161,204,202,237,228,103, 93,151, 39,133, 71,102,220, -173,146,154, 83, 51, 67, 43, 2,165, 64, 21, 15, 57, 30,223, 60, 97, 72,136,121,249, 66,149,240,108, 99, 97, 92, 44, 11,158, 86, -207,226,193,171, 12,164, 43,117, 72,207,214,162,113,203, 78,194,198,173, 58,227,202,227,100,176,122, 29,150,109, 57,145,101,160, -186,222,148, 6,235,184, 91,150, 3, 7, 14, 28, 56,112,248,112,144, 55,210,176, 3,222, 68,134,239, 96, 42,190,204,154, 84,218, -192, 82, 56, 58,216, 67, 34,183, 70, 88,130, 22, 89,196, 25,105, 57, 20, 6,195, 27,139, 22, 91,244,137, 91, 21,150,126,228, 72, -108,244,111,191, 37,109, 61,114, 36,214,196,209,251, 79, 75, 86,254,154,165,102,115, 18,106, 56,119,244,212,197,140,206,245,157, -236, 24, 30, 79, 37, 20, 48,106,190,144,167, 21,242, 25,157,144,207,104, 92,172, 5,188,139,199,246,138, 40,193,197,146, 56,115, -115,115,209,170, 85, 43,180,111,223, 30, 93,186,116, 65,207,158, 61,225,235, 91,213,153,225, 17, 13, 37, 44,235, 36,202, 66, 37, - 39, 2,126,110, 20,254,216,251,125,206,227,107,191, 61, 48,168,115, 59, 81,147,190,206,183, 56, 41,101, 83, 51,212,200,213, 26, -144,150,173, 69,154, 82, 11,189, 83, 67,252,118, 61, 22, 42,141, 1, 17, 65, 7, 85, 73,241,209, 19,115, 19, 94,132,149,112, 33, - 91,253, 13, 55, 7,199,201,113,114,156, 28, 39,199,201,113,190,119,206, 15, 28, 29,242,132, 85,135,130,113,180,204,176,104, 81, - 84,116,147,163,178,135, 28,185, 90,103,228,106, 12, 80,230, 26,144,153,163, 69,102,142, 14, 97,241, 57,120,124,180,236, 57,124, - 99,197, 2, 72,222,111,144, 55, 2,207, 92,155,150, 72,171,249,118,229,178,239,122,237,173, 93, 75, 51,161,131, 91,185,135, 97, -154, 88, 66, 24, 21,195,227,235,236, 21,124, 65, 72,200,195,164, 27,151, 79, 54,147,232, 13, 3,139,227,209,235,245, 25, 30, 30, - 30, 0,222,158,130,167,106, 37,105,151,107, 39,166, 87,104,222,121,153,211, 15,139,167,228, 48, 60, 33, 75,248,194,199, 6,157, -106,143, 42,225,217, 79,180, 24,135, 50, 70, 40,121,122,235,126,112, 3, 91,251,114,120, 25,163,132, 50, 87, 15,173,158,133,157, -149, 16,209,143, 78,107,195, 66,238,238,207,138,121,176,157,187, 79, 57,112,224,192,129, 3,135, 15, 19, 70, 63, 45,227,186,196, -240, 14, 38,214,157,176, 38,173, 58,129,101, 41, 12, 20, 96, 13,121,150, 39,246, 79,235,147, 65,151, 27, 86,214, 12,178,172,225, -246,186,205, 91,219,215,174,215,156, 23,224,101,133,204,148,120,220,188,118, 65, 15,150,222, 48,231,248,228,228,231,217, 50,215, - 42,221,123,245,248,226,192,160,161,163,211,155,181,108, 41,119,118,118, 85, 71,199, 68,231,252,178,115,151,238,244,201, 35,205, - 88,232,251, 36, 39,191,200, 46,142, 39, 61, 61,253,199,194,210, 63,107, 82,174, 49,128, 10, 60, 62,209,228, 36, 62,151, 91, 82, -182,228,152,168,110,223,125, 59, 63,188,223,136, 73,162,138, 30,149,144,152,193, 67, 88,116, 60, 66, 46, 31, 81,199, 60,191,115, - 56, 51,250,222, 48,238, 22,229,192,129, 3, 7, 14, 28, 62, 76,148,201, 71, 43, 50,248, 77, 60,173,191, 27, 89,241,137, 3,182, -111,255,117,209,175, 59,247, 54,206,213,104, 60, 40,132, 81, 6,189,230, 82,182, 1,115,205,229,200,137,127,113,215,209,209,183, -218, 47, 91,214,205,254,101,235,134,230, 96, 13,254, 4, 8,167, 4, 23, 37, 58,195,160,146, 68, 86,241, 66, 46,107, 83,235,238, - 43, 84, 41, 41,217,191, 90,122,108, 78,114, 72,188,149, 75,197,114,155, 86,127,187,156, 97,120,109, 12, 6, 86,192, 26,116, 47, - 13,218,220,239, 85, 73,207,142, 82,203,134, 87,114,224,192,129, 3, 7, 14, 28,254, 69, 32,132,140, 44, 24,180,212,108,139,214, - 63,133,212,212,208, 44, 0, 19,202,202,147,156,252, 60, 27,192, 59, 31,185,247,232,121,198,255, 0,252,175,180,199,103, 39,188, - 74,130,153, 81,233, 57,112,224,192,129, 3, 7, 14, 31,190,224, 2,204,116,134,231,192,129, 3, 7, 14, 28, 56,112,224, 80,188, -200, 50, 93,231,167, 3, 40,116,228,128, 37, 51,115,151,102,244, 65, 73,252, 28, 39,199,201,113,114,156, 28, 39,199,201,113,126, -124,156, 37,113, 91,162, 63, 62, 8, 1,246,119,186, 7, 17, 66, 90,189,235, 10,227, 56, 57, 78,142,147,227,228, 56, 57, 78,142, -243,227,227,252,160,197, 84, 1, 43, 86,158, 96,252,119,249,104,113,224,192,129, 3, 7, 14,255, 20, 28, 29,125,173,128,124,191, -222, 18, 33,119, 10,112, 1, 0,101, 82,112, 2, 87,123, 28,138, 18, 85,133,249,104,149, 74,104, 17, 66, 4, 12, 95,244,149, 68, -106, 53,152, 48,176,206, 78, 79,246,248, 15,171, 88,226, 91, 94, 62,174, 92, 57,167,150,209, 49, 9, 59, 66, 94,229, 28,121, 31, -156, 86, 46, 21,157,136,200,238, 48, 97,213,223,101, 70, 63, 62,245,142,203, 40, 14, 8, 8,168, 5, 0,193,193,193,247, 41,165, -234,178,114,202, 93,252,250,218, 89,219,142,210,178, 26, 67,142, 50,231,167,236,248,231, 7,223,101,158, 21,238, 85, 28,192, 87, -108,132, 65,223, 18, 20, 60,240,248, 15,136, 58,119,120,102, 82,240,171,226,142,243,234,178,196,127, 88,175, 14,115,182,238, 63, -177, 40,242,200,204,144,130,219,237, 63, 95,171, 24, 63,176,205,244,245,123,143, 44, 77, 62, 58, 45,155,107, 94, 44,135, 87,147, -126,182,122,190, 43, 47,246,226,138, 20, 75,142,243,244,107,248, 68, 32, 16, 56,105,181,218,196,152,231, 55,171,153,115, 76, 57, -255, 70,247,120, 60,198,221,160,103,163,163,158, 93,255,132,171,253,146, 33,117,174,216, 16,122,253, 44, 10, 16, 16,254,202,220, -148, 87, 23,202,194,231,238,238, 46,181,177,177,105,102,109,109, 93, 78, 38,147, 73,210,210,210, 84,105,105,105,145, 17, 17, 17, -231, 41,165,250,247, 81, 70,185,139,223, 76, 34, 32,243,242,126, 47, 80, 38, 60, 91, 82,124,251,234,191,136, 48,116,102,222,239, - 37,217, 9, 33,115,254, 13,215, 74,226,234,231,205,163,152,192, 99,248,141,244,172,110,113, 78,194,243, 99,150, 28,111,111,111, -223,134,207,231, 75,141,255,245,122,189, 42, 53, 53,245, 12,247, 20,148,234, 61, 57,178,224,239, 82, 91,180, 8, 33, 60,129, 88, -118,181,223,208,177,213,150,206,159, 33, 89,189,245, 55, 72,172,236,130,115,179,211, 2,254,141,133,119,170, 88,255, 46,143,225, -121,154,166, 25, 88, 67,116,210,171, 91,239,164,209,245, 43, 47, 29, 54,123,218,128,201,125,123,181,242,110,213,113, 34, 1, 80, -168, 40, 82,120,213,189, 78, 8, 83,129, 33, 0,195, 16, 48, 4, 0,104,108,242,171, 91,181, 75,203,105,132,141,115,165, 10, 34, - 43,167,203, 77,186,140,117, 13, 58,183,107,187,220, 41,160,181, 50, 41,248,225, 59,184,113,156, 42, 85,170, 84,215,215,215,215, - 97,252,248,241, 66, 0,248,225,135, 31, 42, 87,174, 92, 57, 37, 52, 52,244, 14,165, 52,169, 84,141,156,179,255,128, 31, 87, 44, -252,245,243,207,219, 35, 54, 89,137,101,171,214,183,176,114,245,237,249,174,196,150,157, 93, 5,107,190,181,221,163,137,211, 22, - 58,183,107, 81,151,151,157,171,199,239,151,239, 55,221,181,126,225,109,107,167,128,122,197,137, 45, 54, 39, 99,142,139, 21,109, -199,230,100, 0, 64,223,130,219, 61,172,116,173,156,164,134,118,110, 98,254,125, 0,135, 74,204,139, 79,147,211, 2,177,216,155, - 97, 24, 24,175, 61,143,188,185,254, 58,173, 42, 34,250,233,229,182,255,134,231,196,218,187,126, 60,120,124, 7,134,252,153, 63, -146,119,159, 18, 74, 51,227,158, 95,113,120, 7,247,147, 77,181,202,182,129, 29, 26, 55,249,229,210,235, 84,185, 87,243, 73, 39, - 8,101, 54, 68, 92, 94,249,192,172,151,138, 68, 98,119,236,216, 49,167,118,237,218,217,184, 84,235,122,201,156, 99,172, 68,146, -128,227,199,143, 10,219,181,107,107,193,253,233,215, 26, 12,179,147, 0, 2,150,165, 63,240, 88,186, 63, 59,229,121,168,165, 97, - 88,100, 46,254,195, 24, 80,179,219, 25, 22,228,110, 78, 66,200,214,210,214,175, 64, 98,243,153, 64, 40,252,170,130,111,245,218, - 49,225, 47,239, 42,179,179, 86,233,114,211, 47, 89, 76,164,211, 79, 61,119, 37,232,115,190, 64, 64,218,125, 86,159, 7,160, 76, - 66,203,197,197,165,235,218,181,107, 43, 54,108,216,208,248, 50,183, 62,112,224,128,235,183,223,126, 43, 55,231, 25, 42,226, 94, -242,112,114,114,242, 18,137, 68, 30, 0,160,209,104, 98,146,146,146, 34, 41,165, 49, 37,222, 19,174,149, 28, 9,248, 11,175, 92, -190,204, 7,128,166, 77,155, 45,242,110, 58,222,142, 39,180, 82, 21, 90, 29,154, 44, 57,128, 73, 55,111,221, 32, 0,208,160,126, -195, 25,114,167,128,117,239,211,178, 37,117,241,175,207, 0,147, 27, 55,107,221,173,119,159, 1, 76, 96, 21, 47,180,105,253,233, -116, 0, 22, 9, 45, 62,159, 47,189,125,251,118, 37,134, 97,120,122,189, 62,183, 65,131, 6,145,101,201,151,135, 95,163,235, 4, - 76, 57,173, 94,179, 37,233,213,221, 69,148, 82,182,160,126,176, 41, 87,123, 54,120,252, 17, 44,203, 70,101, 70,220,105,244,177, - 89,180, 10,173,103, 75,201, 24,190,232,171,190, 67,190,172, 54,233,235, 89,146,137,171,207,227,196,250, 25,201,255, 86,145, 5, - 0, 60,134,231,121,250,204,105,103,153,136, 7, 0,200,206,213,227,243,118,237, 74, 60,206,214,167,254, 69,134, 16, 63,227, 84, -226, 6,189, 86,194, 23,136,114, 9, 0,144, 55,163, 8, 28,221,203,159,119,115,179,151,245,237,213,202,123,231,222,179,209,145, -209, 41, 69, 54,106, 12,195,243, 60,114,244,152,179,135,131, 4,124, 30, 65,182, 74,143,118,237, 59, 25, 10,219,215,205,205,190, - 67,223, 94,173,188,119,239, 59, 23, 25, 23,151,122,162,216,198,220,205,183,142,220,198,229,247,110,163,190,117,200,101,236, 49, -119,241,143,142,151, 79,237,190,212,188,195, 0, 54, 34, 34, 42,151, 18, 18,156,150, 26,247, 85,118,220,203,103,230, 10,105, 43, - 43,171,138, 86, 86, 86, 53, 63,255,252,115,201,148, 41, 83, 4, 45, 90,180,200,223, 62,114,228, 72,225,197,139, 23,221, 86,172, - 88,209,222,221,221, 61, 55, 59, 59,251, 65,118,118,246, 43, 74,169,193,220,107,226,234,234, 52,174,251, 23,157,240,105,183,177, - 48,176, 4, 35,191,156,132,211,167, 14,141, 6,240, 78,132,150, 78,102,253,237,136, 81, 83,156, 26,212,173,197, 91,184,251, 25, -164, 34, 62,218,126,226, 71,134,140,159, 99,187,117,205,194,159, 1, 52, 47,204,146,197,230,100,204,169,230,168,233,211,185, 97, - 5, 28,221,163,233,227,217,106, 58, 24,153, 77,190,101,171,210,231, 19, 20,118, 82,233, 90,119, 91,158,179,216,144,180,182,210, -231, 19,206,133,158, 90,147, 85,236,203, 79, 44,246,222,179,123,119, 21, 59,133, 16,124,134,128,199, 35,224,243, 24,228,106, 12, -232,217,171,207,187,250,146,226, 73,157,171,180,103,128, 33,111, 94,216,216,166, 74,124,113,210,146,107, 66,120, 66,135,227, 71, - 15,243,157,109,196,224,241, 8,120, 12,192, 99, 8,194, 19, 84, 24, 54,108,136, 77, 89, 5,251,231,141,157,235, 94, 92,215,188, -109,131,106,246, 53,246,221, 32, 54, 13, 62,239,237,144,156, 43, 27,188,247,200,133, 62, 94,205, 38,223,162,148, 93, 30,117,101, -117,177, 95,210,106,181, 58,161,109,187,207,173, 9, 95, 46, 59,247,219,246,102,124,134, 64,103,160,208, 27, 40, 12,121,115,163, -190,121, 94, 9, 24,134,128,178, 20, 35, 70, 12, 67,219,118,159,231,176,122, 54,218,252, 70,142,217,249,251,185,107, 78,106, 29, -139, 21,107,183, 46, 84,102, 36, 45,124, 29,226, 16, 46,115,241,157,148,147,240,220,236,121, 48, 24,208, 79,162, 94, 61, 30,181, -251,248, 77, 84, 11,168, 10, 3,251, 38,159,126,158,114,236, 62,113, 19,254,126,254,111,242,205, 82,248,150,179, 66,221, 79,234, - 2, 64,169,132,150, 64, 98, 61,183,121,135,129, 11, 58,246, 28, 10,103, 39, 39, 48, 84,215,241,220,137,221, 29, 5, 82,155,169, - 58, 85,198, 10,203,222, 24,134,252,247, 2,101,217, 50,187,151,184,187,187, 59,213,173,251,103, 56, 70,189, 94, 15, 31, 31, 31, -196,196,196,248,149,226, 94,146,185,185,185,117,216,180,105,147,115,251,246,237, 5,174,174,174, 0,128,248,248,120,143,223,127, -255,189,182,187,187,123, 98, 92, 92,220, 9, 74,105, 78, 81, 28, 6, 29, 35,100,248,224, 73, 36,178, 55,101, 4, 97,166,140, 27, - 88,195,197,205,189, 80, 75,125, 82, 82,188,104,218,216, 11,132,207, 23,230,237, 15,134, 82,150, 20, 99, 37,106, 37, 16, 8,164, -133,109,211,242,172, 27, 80,129,205,112,134,199,188,185, 89,245,186,164,212,136,160,170, 22, 88,226, 2, 5, 34,225, 79,253, 6, -141,106,212,163, 91, 23,184, 57,217,224,220,213,135, 24, 61,110,178, 78,175,213,173, 42,213, 59,146,199,227, 39, 38, 38,134,219, -217,217,185,150,253,125, 75, 42,156, 61,125,202,249,220, 31,231,103,172, 92,189,102,140,187,111, 83, 29, 75,105,254, 60,198, 94, -213, 62, 21,180,238,216,203,218,185, 82, 3,201,154,121,195, 5, 31,155, 69,171, 40,177,101,241, 67, 36,146, 42,122,125, 51,109, -188,228,219, 93, 55,113, 98,253,232,100,101, 70,146, 83,254,151,130,141,221,189,236,140,180,218,165,201,164,194,217,175, 33,225, -241, 71, 17, 30, 79, 78, 24, 34, 98, 13,108,148, 94,163, 89,148,147,252, 60,174,172, 21,192,178, 20,255,187,158,104, 89,165, 81, - 84,222,185,239,176,179,139,173, 24,185, 90, 3,122,247, 29,128, 95,127,253, 85,225,100, 35, 66,174, 70,143,229, 43, 87,102,101, -135,159,112, 14,143, 74,139,105,213,105,242,153, 87, 97,137,143, 35,227,114,247, 23,125, 17, 24, 56,219,136,177,120,239,115, 88, - 75, 5,176, 83, 8,193, 48,196,244, 34,229,119, 23,198,198,165,101,152,112,238, 42,242,161,115,171,222,214,198,206,125,207, 23, -163, 22,219,190, 72,228,131, 66,139, 80,107, 9,122, 13,158, 96, 93,209, 85, 10,185,132,103,251,127,246,206, 59, 44,170,163,109, -227,247,108, 99, 89,118, 97,233, 85, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 24, 75, 76,140,137,198, 24, 91, 44,137, 26, -163,177,199, 88, 98,139,189, 27,123,239,137, 21, 20,197, 2, 74,145,222,217,222,203,124,127, 0,190,196, 80, 22, 53,223,251, 38, -153,223,117,157, 11,118,247,236,189,115,206,153,115,206,125,158,121,102, 38,225,101,154,207,180, 47,191,188, 33,245,172,209, 84, -158,253, 34,161,162,237,174, 90,181,106,255,158, 61,123, 58,124,241,197, 23,124,127,127,127,108,219,125, 32,176, 77,183, 65,189, -210, 51,178,252, 41,165,240,242,244, 76, 25,247,193,160,227,167, 78,157,122,153,146,146,194, 95,186,116,105,179, 35, 71,142,212, -169,204,147,169,133, 82,232,244, 22, 88,138,110,144, 57,114,125,101, 43, 52,241,243,243, 19,166,165,165,233,139,163, 12,132,144, - 87, 59, 83,226,215,176, 91,167,118,205,120, 27, 79, 39, 66,165,179, 64,108,207, 71, 98,150, 6,141, 27,134,145,159, 45,230, 6, -165,105,126, 56, 56, 98,142,151,132,118,239,221,162, 58, 60, 93, 28,176,245,199, 69, 56,118, 51,161,123,150,138,192,189,247,210, - 9, 62, 66, 94, 23, 15, 7,193,218,246,141,107,120,119,108, 20,136,187,141,107,120, 95,139,124, 22, 27, 54,120,197,167,105, 42, -254,133,252,211,159, 42, 75,191,240,112,224,234, 40,192,150,179, 47,225, 96,207,131,216,158, 7,177,176,240,111,201,227,255, 70, - 79,181,190,117,252,185, 86,203,135, 78,190,117, 62, 28, 58,120,144,239,240,161,131, 40,184, 28, 28, 56,116,188,207,174, 93, 59, - 51, 36,222, 33,155, 45, 28,238, 22,109,250,227,148, 10,247, 41, 7,240,148,218,225,203,205,143,224, 36,226,195,209,129, 15, 39, - 7, 62, 58,214,247, 0,151,243,198, 23, 30,151,143,250, 4,245,136,222,209,185, 67, 72,128, 36,248,193, 11,249,227, 15, 23,222, - 91,117, 69,214,225,243, 31, 87,214,113, 83,201, 12,188,185,211,198,241, 82,211,211, 59, 28, 56,126,181,163,111,211, 15,159,153, -141,234, 89,217, 15,246,151, 26,193, 77,121,250,123,120,149, 22,131,236,141, 42,211,195, 7,207, 82,107, 20,232,133,136, 73, 82, - 64,108,207,131,164,120,223,218,243, 32,182,231, 67, 98,207, 67,122,106, 34,242,213,220, 27,105,110,156, 14,244,202,239,149,106, -162,210, 25, 45,184,159,160, 66,213,144,134,240,241,241,133,161,199,136,170,183, 47, 29,250, 85,236, 83,251, 59,117,198,147, 89, -182,234,236, 62,113, 11, 51,166, 76,136, 36, 64, 84,209, 77, 58,124,238,146,117,141,190,153,241,201, 31,222,155,182, 96, 77,163, - 55,143,100, 57,205,233,216,239,227, 5,109,186,244,131, 50, 63, 11,191,159,219,143,110, 61, 7, 96,196,152,207,224,236,236,190, -140,111, 47,125, 96,210,201, 47,253,233,154,235, 83,187,117, 88,189,218,187,252,124,125,253,173,214,194, 89, 62, 40, 5, 90,183, -235,136,233,159,143,131,149, 82, 52, 8,111,218,177,199,208, 79, 41, 45,154, 13, 36, 55, 47, 87,253,236,233,227,206,218,172,167, -183,109,222,151, 58,157, 41, 39, 39, 7,247,239,223, 71,108,108, 44, 98, 98, 98,144,151,151, 7,169, 84,170,170,100,125,114,170, - 95,191,254,240, 75,151, 46,217,187,184,184,188,122,223, 96, 48,192,209,209, 17,195,135, 15,231,119,237,218,213, 47, 34, 34, 98, - 20, 33,100, 55,165, 84, 81,154,142, 54, 47, 46,221,201, 59,116, 67,187,246,237, 38, 2,128,200,201, 39, 97,237,182,227, 49,229, -158,107, 82,223,192,150, 45, 91,213, 0,165, 32,160,171,213,185,207, 50,203,137, 18,137,111,221,186, 21,196,229,114,121,255,185, - 7, 89,241,211,214,125,161,231,175, 63,236,191,100,217, 15,246, 78, 98, 33,114,228, 6,140, 29,209,207,230,123,176,131,119,104, -143, 86,173,218,253,250,205,130,175,121, 18,177, 24,231,110,199,227,211,207,191,212,101, 36, 61,250,129, 90,249,235,212,217,207, -178,223,242, 86,249, 78,122,198, 5, 87,145,192,177,119, 55,251,143,222,239,109,111, 48, 89, 32, 83,155,160, 55, 90, 96,177, 82, -200,213, 38, 60, 78, 86,194,221,201,238, 77,164,155, 0,240, 0,144, 3,224,238,107,175, 81,244, 63, 74,121,157, 91, 24, 30,129, - 27, 0, 3,128,146, 63, 94,252,186,172,247,139,191,255, 24, 64,237, 34, 77, 11,128, 59, 0, 10, 74, 51, 91,165, 69,185,120, 39, - 79,158,164, 17, 17, 17,175,174,248,175,191,126, 29,161,128,239, 43,150,122,128,210, 39, 40,113,111,131,151, 79,149,188,245, 27, -126,118,149,186,184,189,148, 23,228, 5, 22,253,200, 5, 91,110, 22, 60,194, 93,209,174,125,219,174, 19, 63,254, 24, 33, 65, 85, - 4, 22,139,133, 62,138, 77, 48,109,223,178,117,180,212, 63,108,149, 34,245,209,156,226, 16,100,101,123, 57, 88,172,150,212,215, - 35, 88, 22,171, 37,245,181,157,113,225,207, 59, 12,112,150,216, 97,195,233, 68, 80, 10, 16, 80, 72,197,124,236,189,146,138,132, -200,195,138,158, 13, 20,234,225, 75,230,119,236,208, 99,242,165,199, 47,116,251,179,179,117,103, 41,165,153,101,105,114, 8,192, -227, 18, 56, 57,240, 33,117, 16,192, 89, 44, 0, 41,113, 3, 43,217, 92,216,190,199,228,243,151,126,123, 57, 11, 64, 78,201,124, -168,146,154, 34,239,224, 38, 78,206, 85,246,247,159,184,212,241, 97,170, 25, 60, 46, 80,221, 91, 4, 87, 71, 1, 12,102,130,164, - 28, 99,209,153,227,140, 79,167, 45,112,157, 49,117,226, 41, 66,234,212,163,244,177,177,188,109,215,104, 52,118, 35, 71,142,228, -155, 76, 38,227,240,177,159,117,205,204,204,233,243,211,234,239,133,158,158, 94,208,232,204,136,140,121, 94,251,155,111, 22, 84, - 63,126,230,202,209,249, 95,126,244,107,247,238,221,165,251,246,237,179, 86,180, 63,255,240,132,152,149,251,227,214, 93, 7,119, -172,252, 97, 49,158,189, 44,192,150,141,235, 64, 45,230, 13, 21,132,101, 47,148,248,159,206,154, 53, 75,116,244,232,209, 42, 98, -177, 88,161,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,238,142,118, 16,240, 56,240,114,177,135,167, 84, 8, 62, 23,224, 16, - 98, 41, 77,115,203,254,147, 11,173, 26, 57,142,237, 49, 12,221,250,227, 34,140,153, 52, 27,143,114,237,206,112, 28,164, 11, 63, - 25,218,127,134,135,200,210,221,215,153,227,217,177, 81, 85,136,237, 5,152, 57,121, 36,154, 70, 38,121,166,201,172,179,115,180, -220,134, 0,102,151,122,220, 57,133, 17, 44, 71, 7, 62,206,236, 90,150,173,150,231,200,139,155,228, 12,122,221, 75, 27, 67,210, - 23, 74,121,178,157,209,168, 97,253, 69, 19,199,127,200,105,213,162, 41,229,112,248,200, 85, 26, 8,165,192,231,159,126,132, 79, - 62, 26,231,157,146,158, 61,119,221,186, 13,115, 36,158,181,191, 85,101, 63,153, 95,158, 38,135, 20, 70,129, 36,246, 60, 72, 68, -133,198, 69, 98,207,131,206, 96, 1, 33,224,186, 4, 54,146,147,194, 72,110,122, 94, 82,233, 79,224,175,107,186, 6,212,189,120, - 62,193, 49,180, 96,127,193,205,196,244,152,133,145,209, 89,119, 40,165,249, 1,237,166,142, 50,154, 41, 84, 58, 51, 18,179, 52, - 48, 27, 41, 25,243, 94, 32,170, 13, 36, 33,139,183, 70,237, 32,132, 56, 21, 27,232,215, 53, 83,111, 30,208,185,135,245, 31,178, -114,205,198,187, 63, 44,154,205,205,149, 27, 96,165, 20,246,118, 92,136,236,120, 69, 11, 23, 90,181, 28,235,214,255,156,105, 6, -233, 79,175, 92, 49, 87,166,126,194, 74, 71,244,235,209,118, 47, 1,236, 8, 71,144,234, 27, 88, 53,176, 83,175,209,246,157,122, -143,132,197,108,152, 33,246, 10,189,172,206,122,122,209, 22,205,122,117,106,131, 0, 81,170,172,103, 31, 1,128,196, 43,100, 67, -104, 72,104,163,215,223,171, 89, 51,164,145, 45,199,189, 24,129,200,105,146,139,171,199,236,144,186, 13, 61,131,194,218, 17, 71, -183, 42, 72,140,187,143, 61,235,231,238,180,234, 12, 11, 46,158,220,191,104,213,150, 35,131, 59,117,239,135,173, 63,125, 63, 19, -192,165, 63,157, 71, 86,235,136,237,155, 55,249,243,237,132, 48,153,173, 48, 89,104,225, 95,179, 5,249,249, 5, 48,153,173,176, -119,112,132,217, 74, 96,178, 88, 97, 50, 91,161, 55,152,197, 31,141,140,248, 24,192,237,210,202, 89,165,118,251,179, 2,161, 48, -144,162,112,238, 90, 74, 41,184,102, 3,199,199,199,103, 55, 0, 8,133, 66, 8,133, 66, 88,173, 86, 68, 62,203,153,228, 17,218, -121, 34,138, 12,158,197,104,120, 89,144,120,163, 91, 89,219,238,237,237,221,235,117,147,165,211,233,160, 82,169,112,253,230, 93, -233,230, 29, 7,187, 39,190, 76, 13,178, 82,169,222,209, 51,168, 27,128, 94,101,237, 79, 69,230,211,143,253, 91,140,231,124,241, -201,168,154,107,182,159,184, 19,119,230,219,153,229, 85,137,234,157,103, 24,190,152, 48,160,241,146,213, 91,226,242,111,172,159, - 82,209, 49,226,241,120,252,156,156,156, 87,231,247,218,159,247, 52,142,122,150,214,119,213,202, 85,246,145,241, 74, 60, 76, 76, -199,168,206, 1,248,195, 77,160, 28, 77,137,119, 13,247, 26, 53, 66,119,175, 91,189,132, 23,151,174,195,143,135,239,224,210,175, - 27,174,103,102,223,238, 78, 51,211,181,111,114, 13,121, 91,163, 85,158,230,229,232, 92,168,116,102,232, 13,102,152,172, 20, 10, -141, 9,217, 50, 3, 20, 26, 35, 84, 90, 51, 70,117, 9, 40,245,123, 21,248, 17, 15, 66,200, 9, 74,105, 79, 20, 14, 75,101, 87, -226, 53, 8, 33, 39,138,202,245,135,215, 51,102,204,152,245,221,119,223,197, 20,175, 91,252,126,241,186,229,189, 95,226,251,110, - 51,103,206,172,183,100,201,146,197, 45, 90,180,216,251,251,239,191, 39,148,102,180,202,141,104, 21,111,204,201,147, 39,105, 5, - 79, 20, 65, 14, 78,110, 66, 39, 17, 31,213,171, 5,224,131, 89, 91,221,157, 92,189,178,237,237,120,220,211,167,207,184,230, 25, - 36,224,112,184,106,219,163, 88,181, 90,138, 68, 14, 39,151, 47, 95,142,161,189,218,136,146,115, 77,170,232,100,109,150,218, 0, -179,167, 71, 45,187,133,139,151, 72,150, 44, 93,246,201,137, 99, 86, 25,128,101,165, 55,241, 53,185,199, 37, 37,114,176, 8, 1, -181, 90, 82,243, 19,239, 52, 6,128,183,201,197, 82,233, 76,224, 22,229,214, 16, 2,104,116,102,112,185, 36, 91,246,108,255,227, -225,223, 46,236,184,115,239,249,116,202,113, 86,170,213,137, 14,148,210,212,242, 35, 6, 4, 10,141, 9, 82, 7, 62,156, 37,124, - 72,197, 2,112, 75,156,100,197,205,133, 59,247,156, 75,123,249, 50,239,110,145,201, 42, 83,147,199,229, 36, 80,139, 73, 71,169, -197,177,103, 19, 15,120, 58,219,193,199, 69, 8,161, 29, 15, 38, 51,160, 53, 88,161, 51, 88,144,148,173,133, 82, 43, 66, 88,187, - 65,213,221,124,238,233,221, 2,155, 28,205,123,121,183,127,185,230,212, 98,193,246,221, 7,107,166,167,103,245, 57,117,116,151, - 48, 71, 97, 66,116,146, 26,217, 50, 61,192,245,192,188,197, 63, 10,191,154, 50,190,239,246, 61,135, 94,118,106,211,236,101,101, -247,171, 58,251,233,206,176,150, 17, 27,122,246,236, 43,138,185,125, 10,113,247, 47, 46, 82,101,217,158,159, 69, 8,225, 28, 56, -112,192, 60,126,252,120,229,226,197,139,253,143, 29, 59, 86, 45, 39, 39,231, 62, 0,147,179,179,115,104,173,154,129, 15,206,157, - 57,237, 23,209,119, 16, 63, 53, 87, 11,169,131, 0,129,158, 14,184,121,253,172,201,206,142, 95,106,190, 73, 81,243,224,176, 42, -157,191,194,177,155, 9,221, 99,242,236,175,140,251,112,212,203,115,215,158,229,173,221,113,238,123, 63,137,233,190,189, 53,103, -237,189,198, 53,188,103,124, 58, 18,223,173,217,137,171,145,207,178,213, 28,159, 69, 25,122,243,249,249, 67,166,151, 17, 74, 47, - 52,216,142, 34, 62,212,138, 28,249,243,200,211,181,222, 81,164,122,212,185,163, 59, 57,249, 74, 19, 82,114,117, 36, 61, 95, 9, -139,149,194,217, 65, 0,179,149, 66,150,159, 75,118,237,220,129,187,119,111,114,192,229,140, 5, 48,191,220,102, 46, 82,216, 84, - 40,177,231, 23, 70,132, 68,133,127, 77, 22, 43, 66,106,214,192,166,181, 43,156,220, 61,189,208,186,109, 7,219,163,212,110,129, - 13,246,110, 91,139, 43,191, 71,181,191,186,234,199, 38, 18, 95,143, 53, 78, 85,234,252, 32,173,214, 69,167, 55, 90, 32,151, 21, -192,206,144,130,166,126, 57,112,117,176, 32, 73,225,131, 71,153,113,146,138,114,161,114, 31, 30,190,239, 81,175,223,156,131,199, - 47,125,215,173, 75,123, 60, 74, 82, 64,100,199,131,189, 29, 23,246,118, 92,240,137, 5, 43,214,111, 48, 21,200,149, 61,115, 31, - 29,205,125,131,250,121,161,232,233,183,240, 38,231, 21,228,177,115,205,156, 95,198, 77, 95,218,173,123,191,209,228,209,221,203, -179, 0, 92,180,237, 65,143,218,244,158,213,106,251, 61, 78,228,228,177,122,234,156,101,147,187,246, 28, 4, 46,151, 7,147,201, -132, 67,251,118, 98,219,143,243,158, 26, 84,121,163, 41,165, 86, 66, 92,199,239,223,185,126,208,244,185, 43, 72,189, 6, 77,155, -149,234, 39,185,100,227,251, 31, 78, 24,226,229,229,229,248,159,136, 22, 69,173,144, 58,232,209,123, 0,206,254,122, 4,143, 99, -162, 97,165,133,134,201,106,165,144, 21,228,101,154, 77,134,237,101,182,120,216,219, 7,110,221,182, 35,152,195, 33, 48,154,172, - 48,152,173,152,242,241, 7,134,143, 62,159,213,186, 71,215,118, 49,118, 92, 40,146,146, 51,156,111, 70, 61, 9,179,242, 37,254, - 31, 78, 91, 33,208,233, 45,144,107, 76, 56,181,165,108,175, 35,114, 13,108,209,160,101,223, 15, 63,250,122,147, 80,200,229, 24, -235,214,242, 79,104,215,188,110, 74,128,175,187,242,155, 37, 63, 54,189,113, 59,170,199,224,225, 31,218,143, 10,109, 68,124,221, - 68,142, 31, 12,239, 87, 95,236, 22,240,190, 58, 47,185,204, 41,211,248, 14, 46,178,128,106, 53, 53,255,137, 24,133, 28, 38, 20, -213,255,112,227, 36, 72,208,100, 62,235, 15, 0, 62,190, 1, 58,190,208, 73, 89, 9, 35, 66, 1, 96,205,207,123, 26, 63,136, 77, - 31,183,114,229, 42,135,200,120, 37,238,199,203, 33, 20,112, 96, 52, 89, 65,108, 12,106, 91, 41,119,194,236,153, 51,156, 10,212, - 22, 92,137,206, 65,204,189,203,212,160,210, 13,119, 48, 59,245, 23,123,133,188, 15,160, 6,128, 23,132,208,141,234, 44,239, 95, - 41,189, 82,233, 78, 6, 86,107,225,243,178,212,179, 70,117, 11, 79,216,131,111, 39,110, 65, 8,173, 75, 40, 92, 0,154,150, 87, -116, 79,181,213,169,169,179, 98,177,116,241, 92,172,222,124, 4,233,121, 58, 72, 45, 41,248,117,203, 66,124,241,221,110,104,245, -101,103, 53, 84,228, 71, 74, 51, 70,175, 27,174,226,255,139,215,251,238,187,239,122,190,118,108,122,150,113,204,254,180, 94,241, -247,151, 44, 89,178,184,196,231, 26, 91, 77,214, 43,163, 85,188, 81, 21,108, 92, 45, 15,159,192,223,127, 61,122,216,165, 64,101, -132,189,128,139,128,106, 53, 49,127,237,175, 30,239, 53,118, 71,174, 81,138, 61,155,126,200,215,105,148,251,108,186, 88,120,133, - 54,115,116,116, 60,117,248,208, 17, 4, 5,120, 10,118, 93,207, 79,140, 74,208,190, 10,245, 42,114, 94,218, 85,115,210,240,250, -247,235,231,112,241,210,229,207,203, 50, 90, 92,194,173,242,243,142, 67,158,142, 34, 62, 8, 1,148, 90, 51,198,189, 63,224,237, -111, 99,212,202,253,112,244, 40,144, 34,147,165,200,203,196,172,175, 62,214,137, 77,113,143,147,147,146,211, 58,247,250,226,162, - 66, 69,116, 67, 70,126,124,247,113,236,119, 5, 21,215, 98, 83,106,143,136, 30,130,194,200, 1,192, 37, 4, 86,106,205, 10,169, - 38,249,244, 79,205,133,153,250,159, 43, 50,110,202,180,103,249,142, 62, 97, 3,119, 46,159,244,179,175,151,167,155, 68, 44,162, - 18, 7, 33,169, 27, 26, 44,104,222,188,165, 93,181,144,250,130,235, 79,180, 72,206,209, 34, 33, 93, 14,161, 87, 67,222,208,142, -239, 97,231,170,105,237, 9, 33,156,215,147, 20, 95,231,252,149, 91,189, 54,175, 95, 41,204,146, 25,241, 52, 89,133,204, 2, 29, - 50, 10,244,200,204,215, 65, 34,226,163,109,239,241,194,147,191,110,236,213,169, 77,179, 53,111,178,123, 19, 18, 18, 79, 38,165, -101, 12,170, 31,222, 20, 59,127,217,214,198,197,165,186, 83, 65, 65,130,194,214,163,179,112,225, 66,187, 37, 75,150,240,214,174, - 93,171,104,222,188,185,247,204,153, 51,187,101,103,103,223,169, 90,181,106,200,217,195,219, 47, 53,108,219,167, 9,172, 70,143, - 54,237, 58, 8,132, 86, 30,206,157, 56, 97,220,191,111, 87,158, 86,171,252,168, 92,195,225, 32, 93,152,165, 34,240,240,243,139, -145,216, 89,186,240, 56,178,216,252,211,159,238, 0,112,184,198,123,147, 47, 92,190,247, 44,182,113,100,146,231,165,200,231,217, -249, 26, 99,173, 23,167,167,150,123,225,229, 18, 2, 62,151, 3, 71, 17, 15,156,162,171,170,163, 95,131,231, 32,196,163, 56,114, - 74, 64,138,254, 2,132, 32, 61,255,101,148, 13, 57, 27,132, 90, 41,240, 44, 85, 13,149,174, 48, 52, 95,197,221, 1, 57, 89,169, -248,105,205,118, 68,221,187,139,174,239,245,198,186,159,119, 97,220,251,131,116, 21,169,113, 56, 69, 17,173, 18,209, 44,137,136, - 7,128, 64,166, 54,225,208,141, 20,212,168,206,177,249,198, 0, 0,142, 18, 7,200,149, 90,112, 4,142,120, 17,121,202,225,244, -229,219, 51,231,124,187,242,203,130,140,232,228,231, 15,175, 35,196, 93,142,234,126, 70,196,100, 58,225, 94, 94, 53,132,212, 12, - 2, 71,112,215, 38,237,220,152,176,165,191,114, 14,245,108,220,176, 78,139, 64, 79,103,104, 13,150,162,168, 22, 23,219,182,238, - 64, 82, 98,234,135,185, 49, 71,163,222,133,163, 85,101,197,231,216,123, 5,127,242,240,246,197,132,126,195, 63,129,143, 95, 64, -131,202,164, 45,216,242,158,197, 70,163,101, 39,118,153, 57,109,238,242,201, 93, 35, 6,226,214,245,139,184, 31,243, 2,205,154, - 53,193,123,125,135, 66,169,200, 15, 61,176, 99, 85, 23, 0,103,121, 66,243,228,166, 45, 59, 18,171,197,130,184,167,143, 94,148, -166,165, 73,127,122, 31,128,211, 31,154,167, 60,106, 55,144, 72, 93,239,235,141, 22,164,165,165,226,183,223,175,132, 23,173,103, - 51, 66, 1, 23,231,162,178, 97, 52, 89, 97, 52, 91,209,182, 93, 23,131,128,163,111,179,104,229,214,230, 25,233, 25, 28,177,147, -187,213,213,175,182,192, 71,104,212, 63,136,151, 11,140, 38, 43,130,124,197,229,106,122,248,214, 92, 60,109,218,148,218, 92,129, - 8, 74,181,222,144,145,158,230,189,105,207,101,213,147,167, 15,253,170,120, 74,157,190, 95,181, 81,160,208, 17,100,203,245,200, - 87, 42,200,240, 9,211,125, 55,255,248,221, 8, 0, 54,207, 77, 75, 40,170,159, 60,119, 61,212,197, 81, 64, 84, 58,179, 53, 79, - 97,180, 12,239,219,225,173,234, 78,145,201, 26,191,114,197, 42,135,168,120, 37, 30,196,203, 97, 47,224,194, 78,192,129,193,100, -133, 45,167, 19, 33,132, 83,189, 94,187,143, 90, 54, 14,195,217,251,185,224,114, 57,208, 42, 11, 52, 60,228,197, 54,110,223,213, -161, 81,211,230,232,208,190, 29,158,199, 62, 11, 56,113,236, 80,167,155,191, 93,205,148,120,134, 76, 82,101, 63, 59, 82,169,122, -174,209,112, 77,118,222, 31,248,248, 85,109,213,127,232, 7,210,192, 0, 63,226,233,238, 6, 51,229, 97,252,251, 3,108, 62,243, - 11,141, 57,176,228,219,153,208,235, 13,240,112,182, 3,165,192,214, 53,243, 97, 48, 24,224,235, 38,132, 92,109, 42,243,251, 21, -249,145,178,162, 80,149,108,134, 62, 81,154,217,122,253,125, 66,200,137, 25, 51,102,204, 2, 64,103,204,152, 49,171,248,245,119, -223,125,167, 5,144, 94, 94,211, 97, 73,227,197, 43,185,113,101, 22,202,206, 46,196,221, 39,240,230,185,179,103,164, 71, 31, 88, -113,235,200, 61, 68, 52,243,129,128,199,129,131,212, 23, 15, 18,229, 56,121,120,189,236,215,189, 27,211,244,122,253,178,138,219, -154,131, 27, 59,138,157,206,254,178,115,159,213,221,205,141,243,211,185,156,248, 60,165,249, 85,147, 86,236,237, 99,214,123,103, - 55,249, 80,144, 51,246,246,246, 53, 13, 6,131, 75, 69, 7,118,235,185,151, 69, 73,188,228, 93, 92, 91, 65,184, 92,203,206, 93, - 59,225,238,100, 7,189,201,138, 25, 95,126,166, 29,213, 85, 34, 27, 62,120,104,199, 14, 61, 38, 95,226,139,131, 47,182, 12, 15, -166, 13, 27, 54,148,113,185,220, 10,245,242, 18,238,252,169,119, 69,104, 53,135,177,179,167,143,154, 93, 74,115,161, 77,137,187, -202,140,135, 55, 0,252, 33, 66, 66,106,212,176,219,125,224,215,207, 6, 14, 30, 50,199,175, 65, 95, 73, 98,134, 28, 2, 98, 68, -147,218, 62,184,124,230, 8, 77, 77,138,157, 82,145,201, 2,128,236,156,124,127, 15, 15, 47, 68, 37,168,144,150,167, 69,102,145, -201,202, 40,208, 67,169, 85,162,126,160, 47,100,114,185,255, 27,239, 95,224,200,217,179,103, 7,245,232, 51, 4,147,191, 92,208, -122,203,250, 31,162, 37,222,181,198,168, 50, 99,175,216,242,164, 72, 8,201,255,234,171,175,106,252,252,243,207,156, 17, 35, 70, -104,195,194,194,236, 71,142, 28,217,122,199,142, 29,246, 14, 14,246,218, 7,215,143,205, 25,251,233,140, 62,155, 86, 47,108, 80, - 80, 80, 64,204, 38,211,105, 99, 65,193, 12,101, 5,102, 46,249,215,153, 79, 73,157, 5,163,187,180,241, 56,230,234,192,169, 43, -164,134,161,164,206,130,125,244,241, 60,227,139,211,107,148, 97,131, 87,124,154, 46,179,206,214,113, 60, 23, 85,100,178, 0,128, -195, 37, 48,152, 45,112, 20,241,193,225,112,138, 77,188,207,182,125,167, 29, 60,164,118,224,115, 57,224,113, 11,163,157,185, 10, - 35, 62,249,160,143,205, 79, 2,102, 11,133,214, 96,134,166,232,233, 80,169,200,197,204, 47,167,226,189, 94,253, 48,246,163,169, - 40,208, 2,247, 18,148, 48,154, 76, 21,158, 20, 28,194,129, 70,111,198,152,174,129,200, 87, 25,161,214,154, 97, 48, 91,225, 96, -199, 3,159,199,129,216,158, 7, 39, 7, 62, 64,169,160,248, 98,194,231,243,117, 70,163,113,103, 57,199, 9,213,252,189,160, 53, -113,208,116,200, 15,232,220,162, 22, 98,110, 28,226, 93,189,245,176,250,231, 95,206,198,103,227,122,225,224,211, 26,112,245, 12, -132, 68, 44,130,137,114, 0,216, 54,116, 8,165,243,172, 62,161,253,135,109,248,121,235,179,111,230,206,176,151,169, 9,132, 2, - 46, 46, 93,188,128,155,183,239,173,206,137, 57,186, 19,239, 16, 62,229,120, 57, 57, 57,193,222,142, 11,131, 81,111,176, 61,117, -129,130, 2,225, 18,175,144, 13, 69, 79,252,225, 22, 43, 74,121,175, 98,163,197, 23, 73,103, 76,254,106,225,226,174, 17, 3,113, -238,196, 65, 28, 56,184,207,210,162,251,135,220, 93,219,214,163,117,231,222,104,221,117, 8, 78, 31,217, 49,149, 47,146,214, 25, -255,217,215,223,182,237,216, 3,231, 78, 30, 68, 86,102,234,114, 91,203,203,229,147,201, 29,187,244,130,206, 96, 65,155, 78, 61, -113,230,248,145, 79, 81,212,201,194,246,155,216,107,215,103,112,204, 83,167, 76,230,103,203, 12,252, 28,133, 1,169, 57, 26, 36, -102,105,240,235,222, 45,212,246,235,133,161, 73,219,250, 85,248,227,151, 94, 74,241,175,226,163,231,235,181,162,216, 23,241,161, - 99, 63, 24,197,175, 94, 51,148,147, 45,215, 35, 71,174, 71,174, 92, 15,149,206,140,154, 85,130, 57, 38, 51,105, 81,217,227,236, - 46,181,227,175, 59,158, 0, 39, 49, 31, 45, 67,223,188,163,173,213,106,253,143,201, 90, 89,104,178,162, 19,228, 16, 10,184, 16, - 10, 56, 16, 10,184, 48, 91,168, 77, 15, 46, 34,207, 90, 61, 62,153,244,177,175,193, 12,228,201, 13,224,113, 9, 60,221, 93,196, - 77, 26, 12,195,214, 31, 62, 5, 0,140,251,234, 39,140, 29, 51, 18,181,235,134, 65, 86, 80,224, 61,108, 96,143,149, 0,142,216, - 90,214, 83,231,174, 4,156,187, 22,245,213, 39,211,230, 73, 6,247,234,192,189, 31, 47, 71, 70,190, 30, 47, 98,149,149,138,188, - 1,128,217, 98, 5, 5,197,246,125, 39, 32,178,227, 33, 71,110, 4,165, 20, 11,215,238,135,163,136,143,140,130,194,230,254,242, - 40,207,143,148, 23,145,170, 68,180,177, 39, 10,115,185, 60,108,141,104,125,247,221,119, 49,223,125,247, 93,169, 17,178, 98,147, -245,198,147, 74,219,217, 73, 66,221,221,124,111,157, 59,115,202,241,200, 3, 11, 46, 63,200,195,192, 54, 85,160,202, 79,198,178, - 47, 7,231, 19, 80, 3,135,203,149,233,181,154,195, 90,173,122, 17,165,212, 88,174,201,242, 9, 9, 23,139,156, 46,172,219,244, -139,217,221,211, 19, 59,175,231,167, 22,168,205,166,255, 52, 91,153,200,189,179,155,170,155,173,166,238,218,204,184, 10, 31,111, -173, 20,130,239,214,255, 10,128,194,106,181,130, 90,173,224,219, 75,196, 30, 53, 90,100, 21, 93,232,236,121, 28,162, 43,121, 5, -160, 86,115,106, 78,124,249, 97, 80, 2, 64,234,192,199,190,171,105, 0,144,197, 85, 70, 62, 25, 62,184,176,185, 80,103,176, 87, -212,173, 81,131, 54,105,210, 68, 38, 18,137,222,248, 96, 87,182,185,208,166, 10,244,226,133, 1,192, 82,223,144, 54,253,186, 73, -234, 55,181,227, 8,208, 40,196, 7,151,207, 30,165,183,206,108, 29,167,201,122,246,139,141, 21, 17, 42,157, 9,233,121, 58,164, -229,233,144, 89,160, 67,102,190, 30,153, 5, 58, 16, 66,160, 51,188,221,240, 55,234,236,103, 7,118,254,178,185,183,222,136,161, -109,187,246,195,212,121,235, 2,119,110, 88,114, 65,228, 21,218,202,150, 68, 91, 74,169,133, 16,146,244,193, 7, 31, 52,216,179, -103, 15,183, 94,189,122,218, 39, 79,158, 56, 0,176, 2, 48, 74, 36, 14,162, 45, 63,126,119,182,105,211,166,123,211, 98,159, 94, - 2, 80, 96, 75,247,252,170,237, 63, 16,134, 58,229,143, 15, 16,183,236, 22,228,237,128, 0,177,178, 91,168,228,193, 50,207, 78, -159, 47,206,190,184, 42, 59, 67,111, 62,159,163,229, 54, 76, 83,241,109,202, 21, 52,233,117, 47,251, 15, 28, 10, 46,225,192,168, -211,188, 44,174, 92,158, 82, 59,204,223,245, 20, 18,123, 62, 28, 69, 60, 72, 68,124,180,174,227,138, 74, 92,207,168,201, 98,133, - 70,111,129, 86,111,134,206, 96,134,187,191, 11,126,222,121, 0,201,217, 90,252,122, 55, 23,207, 94, 42, 17, 92, 69, 12, 74, 43, -190, 76, 90, 45, 38,117,175, 1, 35, 28,185, 28, 2, 46,135,112,234,132,214, 66,190,202, 8, 1,143, 3,129,189, 8, 98, 33, 15, - 78, 34, 62, 4, 2, 62,178,179,179,161,215,235, 17, 16, 16, 96, 95,190, 21,164,112,148,136, 16, 92,221, 23, 70,147, 25,167,174, - 61,198,162, 41,253,209,165,109, 99, 16,190, 4, 79,245,225,112,116,117,132,149,195,129,209,108,133,193,104, 1,192, 41, 51,250, - 22, 16, 16,208, 81, 44, 22,139, 53, 26,141,242,229,203,151, 87, 50,158, 30, 78,246,172,219,119,252,153,115,151,118,246,124,175, - 11,162,162, 99,112,240,200,177,235,185,110,242,105,197,223,169, 87,175, 94,115,119,119,119, 73, 94, 94,158,226,225,195,135,119, -222,240,233,151,136,189, 66, 63,111,209,186, 61, 84,178,108,100,165, 36,218,252, 20, 93, 59,208, 17, 95,127,183,174, 81, 72,173, -144, 70, 22, 90,104,188,234, 4, 56,226,139,121,107, 26,213, 8,174,213,168,184, 67, 72,237, 0, 73,249, 38, 75,236,212,245,253, -241, 95,124,215,123,224,104, 92, 58,119, 12, 43, 22,125,185, 83, 44,245,168,237,234, 34,109, 88,175,121, 87, 92,191,112, 12,246, -142,222,112,113,243,110, 61, 98,204,164,206, 3, 71, 76,192,205,235, 23,176,122,201,172, 29, 22,189,114,183, 45,101,149,120, 5, -121, 52,108,210,118,184,163,171, 23,100,114, 37, 28, 93, 60, 81,187,126,147,225, 18,175,160,175, 84, 89,241, 57,111,122,174, 91, - 41,133,222, 72, 81,160, 50, 34, 37, 71,139,164,204, 66,163,101,181, 86, 34, 39,200, 98, 37, 18,123, 30,207,213,244, 60,224,225, -133, 75, 52,208,223,139, 44,253,246, 75,174, 17,246,200,145, 21,154,172, 28,133, 1, 57,114, 3, 84, 58, 19, 92,197, 60, 88, 45, -214, 74, 63,117, 23,168,140,112, 44,202,163,181, 88,223, 60, 55,124,253,182,125, 33, 15, 98,211,251,174, 88,177,202,225,126, 66, - 9,147,197, 47,140,102, 9, 5, 92, 88,172,214,162, 59, 77, 5, 6,155,199,159,220,167, 71,103,164,228,106, 11,123, 45,115, 8, -130,195,154,194, 93,100, 69,167, 33, 51, 0, 0,189,122, 20, 14, 95,146,144,161,198,241, 91, 57,192, 31, 19,187,203,191, 22,107, -181,220, 77,187, 78,126,126, 96,255, 94,169,206,194,195,198,211, 73,208,232,205,176, 23,112, 33, 20,112, 33, 18,112,255,144,143, - 93,177,209, 42,204,185, 75,206, 53, 65,163,211, 65,161, 53,129, 2,184,243, 92, 5,173,193, 12,185,218,132,230,161, 46,111,251, -236,115, 18, 64,196,235,134,232,117,179, 84, 34, 34, 85, 26,119, 75,106, 20,175, 95,150,145, 43,153,179, 5,160, 82, 61,184,120, -175, 59,199,146,175,237, 36,174,181,165,110, 30,183,206,156, 62, 33, 57,242,192,138, 43,209,133, 38,203,164,205,197,242,175,134, -165, 42,100,185, 29, 40,165,241,182,254,152,216,163, 78,125,145,131,195,165,239, 87,109, 52,122,122,249, 89, 15,223,146,101,203, - 53,150, 63,196, 16, 45,122, 61,135, 90,169,192, 22,147, 85,212,228, 97,156,247,105, 63, 88, 41,197,252, 85, 7,176,120,218, 16, - 72, 68, 35, 28, 8, 33, 14,106,157, 25, 83, 22,108,198,242,175, 63,116,116, 16,242, 64, 8,160, 51, 88,240,254,208,126,182, 85, - 64,157, 25, 47,110,239, 81, 41, 19, 78, 60, 41,217, 92,216,172,245,123,247,154, 53,107, 38,115,113,113,129, 72, 36,250, 79,164, -194,198,139,118,105,189, 11,179,101, 72,117,116,116,108,231,228,228, 84, 82, 79, 45,147,201,142,190, 73, 45, 84,202,114, 47,101, - 38, 61,108,218,170, 67, 47, 92, 57,123,148,222, 58,189,101, 92,101,198,232,113,113,117, 73,137,124,248,162, 54, 33,174,133, 17, -173, 34,147,101, 48, 89, 17,232,229,128,148,164, 23,112,150, 74, 83,108,213,115,240, 12,237, 67, 56,244, 35, 2,186, 85,149, 25, -123,160,200,244, 12, 19,123,135, 70,199, 60,186,191,168,231,240,201,188,174, 3, 63,230,110,248,110,210, 44,188,150,196, 90, 14, -198,103,207,158, 61,254,240,195, 15, 91,222,188,121,211, 2, 64, 67, 8, 49,113,185, 92, 7,131,193, 32,232,208,161,131,252,233, -211,167, 87, 81, 74,210,226,235,180, 25,115,208,157, 8,149,239,213, 8,110, 50, 44,208, 81,217,165, 67,155, 22,104, 81,215, 31, - 41,109, 90, 0,192,228,151, 42, 73, 72,235,137, 91,246, 85,247,168,114,106,195,182,227,139,199, 13,233, 60,197,183,215,130, 21, -233,199,231,149,155,136,154,252,248, 74,183,210,108, 60,143,203,129,163,136, 15,137,136, 7, 71, 17, 31,142,246,124,152,204,180, - 50, 79,142,212,100,182, 22, 70,180, 12,102,168,180,102, 92,186,159,133, 76,185, 1, 50,165, 17, 90,163, 5, 20,180,240,105,212, -134,171,121,118,220, 13,231, 87,199, 62,176,145,124,211,218, 31,156, 14,221, 72,125,213,163, 79,234, 96, 7, 71,135,194,222,216, -215,174, 93,131,155, 91,197, 79,251, 86,171, 21, 7,207,220,193,138,237,151,112,102,235,116,216, 11,184,168,223,103, 1, 70,247, -109, 6, 43,181,226,197,179,152,172,224, 58, 13,188, 56, 28, 17, 56,132, 64,111,178, 2,160,101,238, 79,131,193,224,150,156,156, -172,168, 89,179,166,183,159,159,223, 64, 46,151, 75,133,128,254,232,222,124,205,197, 19,187, 29,212, 90,189,197,193, 44,223, 90, - 51, 67, 27, 17, 28, 28, 12, 66, 8,117,119,119, 23, 92,186,116, 73, 21, 22, 22,230,241,134, 38,139, 35,242,172,181,122,236,196, -207, 7,214, 8, 10,194,129,221, 91, 65, 41, 57,100,235,247,119, 29,191,137,111,103,254,177,135,225, 23,243,214, 52, 90,190, 96, -242, 31,222,155, 56,115, 69,185,189, 14, 69, 66,201,180,254,195,198,227,222,157,223,177,108,193, 23,123,245,170,252,209, 38,179, -105, 80,126, 70,194,222,234,117,154,129, 26,149, 56,183,255, 7, 12, 25, 57, 78,216,181,231, 64,220,188,126, 1,139,103, 77,220, -165,145,101,127, 96,235,248, 95, 86,202,255,168, 67,183,190,124,173,222,136, 53, 75,231, 98,194,180, 69,104,222,177, 23,255,209, -253, 91, 31, 1,248,198,214,109,214, 27, 45,232, 16,230, 94,104,158, 77, 86, 28, 75,224,242, 74,171,129, 60, 46,225, 52, 12,114, -134,214, 96,134, 66, 99, 42,255, 70, 37,224,103,202,228,138,170, 63, 46,254,156,171,214,153,145, 35, 55, 32, 91,174, 71,174,236, - 63, 6, 43, 87,174, 71,142,220, 0, 62,143, 32, 54,254, 37, 56,124, 94,165,243,243, 10, 84, 38, 52,173,229, 82,120,142,190, 97, -235,136,137,231,212,236,204,213, 7,253, 87,172, 88,105,255, 32, 81,137,232, 4, 69, 81, 36,139, 11, 33,159, 3,187,162,255, 45, - 86,160,162,159,144,122,214,168, 62,234,195,113,157,156, 36, 34,164,199,101,131,199, 45, 28, 34, 70,234,233, 15,169, 80,135, 73, - 19,199,195,221,205, 25,201,185,122,172, 62, 18,139,232,199,207, 97,213, 86,110,179,215,108,220,219,125,236, 39, 95, 56,115,248, -118,216,113, 54,177,176,156, 92, 11,158,222, 58,174, 75,127,241, 80,173, 82,228, 81, 80,139,141, 1, 0, 66,205,150,194,234,182, -120,254, 12,236,221,254, 19,206, 70,102,191, 74,222,186,113,104, 57, 62,159,185, 16,185, 10, 67, 81,213, 47, 63,146,245,218,235, -156, 18,145,168, 63,189, 46, 97,142, 74,123, 77,138, 94, 27,202,208, 48,188,102,174, 12,175,189,111,120, 77,239, 65, 41, 15,255, -155, 42,108, 58,252,147, 41,114,241,172, 39,117,148,254,126,250,244,113,241,209,104,250,202,100, 25, 53,185,116,209,228, 94,169, - 10, 89, 78,215, 74,153, 44,207, 90,245,132, 98,241,213, 57, 11, 87,235,189,252,170,154, 79,221, 87,228, 41,117,150, 63,133, 69, - 4, 14, 98,139, 88,234,161,115, 14, 12, 95,193,215, 26,230,230,228, 60, 86, 87, 20,121,178, 82,138, 19,183, 51, 65,105,225, 35, -210,254,107,105, 40,122, 50,135,197, 90,216,172,114,254,126, 54,120, 69,121, 40,182,134,191,215,111,252, 73, 17, 17, 38, 87, 15, - 95, 60,255, 85,115, 97,243, 6,133,145, 44, 39, 39, 39, 56, 59, 59, 67, 34,145,192,150,166,195, 98,202,234, 93,232,232,232,216, -238,254,253,251,246, 78, 78, 78,224,114,185,208,235,245,168, 91,183,238, 27,157,232, 18,239,208, 79,154,118,236, 55,171,117,199, - 94,184,116,230, 48,189,117,102,219,248,202, 14,132, 24,209,185,229,241,111,191,157, 95,125,206,162, 31,133,142,246, 60, 60, 81, - 25,192, 33, 4,129, 94, 14,112, 19,115,112,229,232, 14,221,144, 94, 45,109, 30, 28,207,223,223,111,231,242,181,155,196,203,151, - 44,232,224,232, 23,114, 73,153,246, 44, 31, 0,212,153, 79,151, 58,120,135, 62,174,242,251,185, 83, 13,218,245,131,151,111, 80, -151, 74,132,127, 41, 33, 68, 19, 31, 31,159, 48,103,206,156,144, 37, 75,150, 80, 46,151,107, 5, 32, 92,181,106,149, 38, 46, 46, -238, 62, 10,187,230,162,162,155, 77,167, 46,117,167, 72,236, 44,205, 93, 29, 56,117,131,188, 29,208,162,110, 97,171,232,144,136, -214,240, 15, 8, 64,124,166,166, 97,190,198,202, 87, 25,184, 65,235, 54, 70,223,173,230,206, 29,103,214, 26, 30,163,130,193,100, -203,170,179,197, 9,242,197,209, 44, 71, 17, 31,214,194, 27,123,165,140,150,222,104,129, 86,111,129,214, 96,134,218, 96,129,198, - 96,129,149, 22,158, 19,132, 16, 24,205, 86,216,244,216,252, 90,221,119,114,117, 71, 80,181,194, 94,178,142,162,194,161, 30,156, - 28,248,133,125,164,221,220,224,233,233,105, 83, 84,212, 96, 44, 60,197, 13, 38,235,171,102,125,131,209, 12, 74, 41, 98, 99,159, - 77, 79, 74, 72,232, 83, 51,184,102,219, 58,245, 27,184, 58, 8, 57, 0, 80,166,209,210,104, 52, 22, 71, 71, 71, 79, 87, 87, 87, - 78, 90, 90,218, 43,243, 92,179, 97, 7,243,145,195,135,208,191,127, 63,213,147, 59, 15, 94,117,113,215,106,181,164, 85,171, 86, - 78,254,254,254, 28,189, 94,175,168,220, 62, 32, 68,236, 81,171,175,127,104,203, 69,239,127, 48,161, 86,135,206,221,113,249,226, - 57,252,122,120,207, 47,234,236,103, 54,143,156, 29, 18, 18,250,167, 94,135, 53,130,107,253,169,215, 97,213,234,193,229, 26,173, - 58,245,155, 52,163,132,135,179, 39,246, 83, 29,199, 56,177, 48,225,157,236,223,183,254,235,111,134,125, 52,179, 70,143,222,195, -240,254,200,209,224,241,184,184,114,254, 56,150, 47,152,122, 82, 37,207, 30,101, 75,154, 0, 0,144, 58,117, 4, 53, 3,170,126, - 22, 80,163, 30, 34,111, 93,199,139,216, 71, 49, 15,238,222,172, 91, 51,172, 57, 60,124, 3, 63, 35,117,234, 44,161,143, 31, 27, - 43,210, 49,232,116, 47, 71,143, 26,137,146,189, 14, 91,132,135,184,145,215, 79, 0, 0, 26,101,182,113,203, 15, 83,226,138,123, - 29, 90,141,134,151,101,233,202, 11,114, 14, 94,249,237,246,180, 62, 17,221, 57,185, 10, 67, 97, 4, 75,110, 40, 90,244,200, 45, -254, 95,161, 71,176,175, 4,207, 98, 34,173, 58,121,238,161, 74,158,151,186,209,131,186, 61, 46,174,187, 86, 43, 5, 1,116,149, - 61,191, 41,223,105,252,210,101, 43,236, 31, 36,168, 16,157,168, 40,108, 42,228,115, 11, 13, 22,159,243,202,116, 21,246,102,175, - 32, 58, 68,184,139,199,140, 26,138, 92,133, 17, 86, 43,192,227,114,138, 22, 1,146,149, 4, 41, 74, 13,114, 11,114,144,144,244, - 18,178,204, 23,224,112, 56,112,247,173, 5, 91,195,143, 22,106,231,163, 49,208,176,129, 17,109,121,135,127,207,128,131,144, 7, -189, 50, 11,167,247,253,144,163, 87, 41, 22,105, 53,170,195,218,188,184,116, 91,183,157, 67, 72,142, 66,165,243, 18,242,185, 56, -176,253, 71, 12, 26, 61,177,104,167, 20,254,153, 62,251, 91,128, 67,144, 95,160, 4, 33,164,178, 81,210,187, 21,188,126, 19,222, -133, 6, 74, 51, 87,127,120, 80, 40,251,105,148,158, 62,119,230,184,248, 70,146, 16,119,158,101, 20,153,172, 28,235,194, 79, 35, - 82,149,242,252,110,148,210,216, 74,149,128,195,233, 54,100,204,180,152,160, 90,117,244,151, 31,169, 18,101,106, 83,153,121, 14, - 45, 6,206,137,185,119,114,109, 15,185, 41,254, 99,137,111, 93,139,213,108, 94,170,201,126,182,160,140,166, 67,187, 5,171, 15, -188,106, 54,252,106,201,142,194,255, 45, 22, 88,168, 21,212, 10, 76,250,122, 61,204, 86, 11,172, 22, 11,172, 22, 10,147,133, 58, - 84, 84, 92, 79,223,170,135, 11,158,238, 15, 29,254,205,159,155, 11,157,157,157,225,230,230, 6, 55, 55, 55, 20, 27,163,183,109, - 46,116,114,114,130, 68, 34,193,245,235,215, 33, 18,137, 32, 22,139, 43,165, 91,194,100,125,220,164,125,159, 31, 59,246,254, 16, -231, 15,111,164,119,175, 29,159,160,201,122,182,217,230, 8,189,197, 66, 76, 38, 19, 34,186,182,127, 25, 21,243,252,204,236,105, - 31,117,111,217,115,130,176, 69,136, 31,116, 6, 11, 82,147, 94,224,202,209,109,186, 90,213,125,206,118,106,211,236,165,201,100, -130,197, 98,169,240, 70,174, 51, 24,115,185,124,145,120,232,208,225,252,187,119,238, 28,146,120,214, 58, 96, 33,156, 7,132, 90, -235, 19, 66,250,215,175, 95, 27, 70,147, 21, 26,141,162,160,178,219,172, 84, 42, 19,182,110,221, 90,125,212,168, 81, 14,117,234, -212,225,191,120,241, 2,203,151, 47,207, 83, 42,149, 9,182,106,156,187,246,108, 21,143, 20,196,217, 89,141,195, 2, 29,149, 93, -146, 91,183,192,208,158,173,177,247,228, 13, 92,185,126, 19, 47, 85,146,251, 42, 51,239,104,202,203,116,125, 93, 87,197,161,222, - 45,170,114, 15,108, 47, 56,228,217, 97,230, 96, 74,133,231,114,174,204, 83,219,126, 19, 7,148, 90, 19,156, 28, 10,199,123, 42, -142,108,113, 9,177,217, 17, 17, 32,225,250,205,200,122,141,131,235, 32, 42, 65,142,108,153, 30, 90,189, 25, 86, 43,133, 21, 20, -110,142,118,176, 23,112,144,156,148, 0, 43, 53, 38, 86,242,114,145,211,174,109, 59, 30, 64, 64, 8,229,241,121, 60, 80, 20,142, -175, 40, 18,137, 84,158,158,158, 54, 69,180,140,102, 51,250,119,111,134,230, 77,234,163,207,132,194, 49, 51, 47,254, 50, 3, 46, - 18, 62,246,238,220,140,228,171, 43,119, 6,181,156,120,238,209,195,152, 1, 49, 81,191, 15,127,175,145,168,161, 55, 47, 93, 80, -150,158, 74,165, 58, 68, 8,177, 19, 8, 4,221,219,182,109,235,122,232,208, 33,153,187,187,187,213, 78, 32,200,233,221,171,167, -149, 47, 16,228, 23,175,251,219,111,191,241, 39, 76,152,224, 88, 80, 80,144,156,149,149,117,147, 82,106, 42,255, 65, 48,180, 51, - 56,216, 3, 66,236, 37, 34,135,151, 45, 58, 15,245,109,210,188,153,180,111,255, 65, 16,218, 9,113,254,220, 25,172, 89,185,100, -191, 42,227,201,152,202,236,201,119,213,235, 48, 53, 57, 49, 65,163,213,135,213,107,220,158, 92, 63,119,116, 50, 33, 30, 43,185, - 66,167, 31, 58,247,159, 88, 35, 33, 93,133, 53,223, 77,135,139, 84,140,196, 23, 79,181,113, 79, 30,174, 55,233, 20,211,109, 53, - 89, 0,224,144,103, 25,208, 98,100,119, 23,189,209,130,107,151, 78,234,172,102,107,247,155, 87, 79,189,168, 82,171,137,125,189, - 38,157, 92,114,127,221,220, 31,192,222,138,116, 82,159,252, 57,130, 27, 16,210, 52,241,226,165, 11, 82,175,192,186, 92, 2, 2, -163, 94,135,156,248,187,102, 77,214, 83,133, 60,245,161, 77,189,112,243, 82,240,245,204,121,223,127,220,164,113, 99, 49,133,253, - 31, 34, 88,197, 6, 43, 87, 97,128,187,163, 29,180,138, 28,196,221, 61,163,211,228,112,203, 29,239,204,108, 80, 59,228,102,103, -189,106, 98, 83,101, 61,107, 94,222,250,185,217, 89,118,102,131,218,161,226, 91, 29, 23, 78, 98, 59, 60, 76, 76,123,149,248, 46, -228, 23,230,102,217,241,185,175,242,180,138,175, 5, 21,208, 94, 96,239,140,180, 60, 29, 8, 40,172, 22, 51,204, 38, 3,148, 10, - 5,210,210, 51,145,149,153, 5,165, 82, 6, 7,137, 11,234, 53,108, 10, 71,177, 61, 30, 92,217, 15, 74,169, 77,227, 26,154, 8, - 63,164, 73,243, 54,194, 71, 73,133,185, 88,246,124,138,227,123,150,228,169, 20,217,109,148,233,177,113,149,189, 22,155, 45,150, - 11,209,143,227,234, 86,241,169, 70,238,191,144, 99,231,207,107, 97, 40,138,108,154, 76, 22, 60, 74, 86, 35, 35, 95,131,228,248, - 39,212,106,177,252,107, 38,164,230,149, 29, 0, 4,175,126,189,218,232, 58,162, 47,126,250,105, 61,226, 19,146,172,139, 38,247, - 72, 86, 41,101,239,217,106,178, 74,206,238,173,206,124,186,116,204, 79,137,169,199,162,242, 57, 90, 67,249,243, 91,217,123, 4, -162,205,152,229,103,181,202,124, 59,139, 94,195, 59,190,115,204,158,210, 52, 11, 29, 52, 12,139,190, 24, 2,137,136, 7, 66, 8, -138,155, 11,215,125, 59, 30, 14,194,194,182,101,173,222,140, 17, 83, 86, 96,231,138,169,160, 0,134, 13,186,161, 41,171,156, 37, -154,246,170,188, 76,202, 78,235,220,235,139,139, 58,163, 80,223,179,223,168,123,141, 27, 55,150,137, 68, 34,136, 68, 34, 56, 57, - 57,193,197,197, 5,206,206,206, 21,110,123,153,131,145,150,232, 93,200,225,112,192,225,112, 32, 22,139, 33,145, 72, 32, 22,139, -203,213, 44,211,100,181,235,189,174, 83,159,177, 56,127,120, 19,189,123,237,248, 71,154,172,103, 63,219,122,140,138,154,123, 30, -244,239,223, 63,108,194,132, 9,130,121,211, 38,156, 61,121,238, 74,236,129, 19,155,122, 21, 20,200,252, 41,165,112,150, 74, 83, -134,244,106,121,188, 67,171, 38, 47, 47, 94,188,104,221,179,103,143,158, 16,242,176,162,114,230,102,103,255,114,241,194,165,249, -109,218,181,199,230,237,123,218,197, 60,126,210,238,197,139, 56,248, 7, 6,161, 90,245, 96,104,136, 11, 46, 93,189, 14,149, 44, -251, 23, 91,202,249, 90, 84,139, 20, 20, 20,252, 62,100,200,144,174, 55,110,220,224, 12, 25, 50, 68,147,155,155,251, 91,241,115, - 84, 89,209,172,146,154,191,175,239,155, 3,224,151,170,237, 63,216,159,102,148,125, 6, 96, 73, 64, 96, 0,174, 92,191,137,155, - 55,110,175,207,117, 8, 88, 48,102,196, 7,227,171,246,230,142,237,221,162, 42,215,211,197, 1,187, 55, 45,231, 30,187,153,180, - 34, 41,207,178, 25,192,183,182, 28,163, 87, 55, 14,165, 17,173,106,187,194,100,161,176,210,194, 11,174,163, 61,191,212, 11,111, -105,154, 60,131,112,204, 71, 19, 38,188,168, 87,191,225,231, 35, 62,248, 72,208, 48,200, 31,119,158,203, 0, 66,224,234, 45, 70, - 70, 70, 6,174, 29,220,100, 46, 72,123,186,158,203,181,126, 83,153,186,148,159, 20, 85,179,196,122,227,115,115,115,113,229,202, - 21, 20, 27, 44, 15, 15,143, 82,141,214,235,154,121, 89,233,191,125,187,108, 99,171,113,239,247, 67,207,246,117,113,245,238, 11, - 24,138,198,107, 42,238, 74,158,112,115,131,221,103, 67,130, 12, 31,247,175,165,208,154,236,146,190, 78,148, 95, 43,217, 43,246, -117, 77, 74,169,129, 16,114,236,217,179,103,173, 27, 52,104, 80,245,212,169, 83,249, 49,183,207, 78, 46, 89,142, 47,190,248, 66, -242,211, 79, 63, 57, 80, 74,127,211,235,245,241, 54,109, 59, 7,187, 35,239,221,115, 51,154,172,184,126,251, 65,237, 78,173, 26, -194, 74,129,187,119,239, 98,243,150,205,186,135,209,247,127, 80,103,121,127, 83,150,121, 41,107,127, 90,222,162,215, 97, 73,205, -140,180,164, 31,206,159, 60,184,179, 73,187, 94, 24, 62,233,155,111,174,156,220, 51,191, 81,155,158,156,218, 77,186, 34,242,230, - 37, 92, 56,117,230,123,163, 42,127,126, 69,243,144,150, 85, 78,161,200,225,211, 58,141,218, 33,249,101, 18, 18,227, 30,253,162, -205,139, 75,151,120,135,254,146,158,250,242,163,234,117, 91,225,198,217,189,147,203, 50, 90, 21,213,121,127, 15,209,166, 83, 39, -142, 13, 77, 77,221,224,173,214,234,132,148, 82,157,208,142,151, 41,225,148,221, 67,253,207,199,253,177, 81,236, 90,173,255,160, - 17, 31,157, 92,179,102, 37,223,203,217, 1,153, 5, 58, 40,180, 70, 40, 53, 70,112, 8, 65, 77, 95, 49, 52,202,124, 92, 61,184, -204,100, 80, 21, 12,161,244,185,177, 44, 77,137, 87,232, 66,128, 78,250, 98,226,101,216, 73,253,125,171,119,154, 85,110,180, 78, -153, 30,221,235,139,137,199, 67, 40,165,157, 36, 94,161,202,226,185, 14, 75,219,118, 66, 10,207,239,225, 29,252, 97, 52, 23,142, - 63,102,182, 2, 22,171,181, 40,202, 7,208, 87,237,249,164,130,109, 39,214,125, 39,127, 67,122,150, 12, 90,131, 9,122,131, 25, - 70,147, 5, 28, 46, 23,206, 46,206, 8,174, 22, 14,169,179, 19,178, 50,211,113,243,226, 49,196, 70, 95,253,141, 80, 44,208,100, -199, 94,180,229, 24, 9, 68,206, 33, 62,190,222,156, 12,133, 1, 34, 59, 46,238, 95, 61,101, 52, 25,244, 63,216, 98,178, 74,211, -148,229,229,175,248,124,218,151,195,182,109,221,238, 29, 86,221, 9,169,185, 90,164,230,232,160,212,153,138,140,152, 21,122, 85, - 46,162, 47,109,207,180,232,148, 43,254,245, 70,203,108,212, 41, 15,157,185,227, 54, 99,254, 50,238,243, 23,241,166,133,159, 69, -164,106, 85,138, 30,149,142,100,149, 96,235,199,213,246, 86,238, 27, 69, 67,154,124,147, 84,254,243,247,235,205,133,212, 10, 43, -165, 56,126, 59,243, 85,115,161,181, 40,243, 50,234,133,172, 82, 77,123,209,207,148,187,180,218, 44,233,211,231, 63, 20, 0, 0, -151,203,125,181, 20,231, 82,233,116, 58,195,155, 52, 23,190,158,248,110,181, 90,225,228,228, 4,145, 72, 84,233, 38, 73,177, 87, -200,208, 38,237,251,252,216,169,239, 56, 92, 56,242, 51,189,123,245,216, 68, 77,246,179, 77,149,206, 81, 40, 40,136, 33,132,196, -253,240,195, 15, 13, 55,111,222, 92,125,218,180,105,241, 59,126,156,191, 6, 0,242,242, 10,231, 0,142,138,138,162, 19, 39, 78, -212,235,116,186,132,130,130,130,200,138, 58, 64, 0,128, 54,199, 97,241,230,117, 75,234,165,164,101,244, 11,170,215, 20, 30,213, -155,194,187,102, 51, 20, 40,141,184,243, 60, 29,241, 79, 46,226,201,245,131,167, 52, 18,243,252,202,150,185, 65,131, 6,254, 28, - 14,167,154, 74,165,242,174, 83,167, 78, 3,177, 88, 28,213,160, 65,131,112, 30,143,151,122,239,222,189,164,202,104, 37, 93,217, -166,175,218,254,131,213, 47,149,142, 29,226, 51, 53,225, 47,149,142, 81, 26,161,116,106,246,197, 85,122,175,174, 63,172,160,198, -220,152, 3,219, 21,135,118,111, 90,206, 29, 49,254, 11,203, 35,185,203,103, 60,145,221,249,239, 70,135, 85,162, 89,138,147,241, -241,168, 62,255, 25,222,161, 40,146, 85,244,191, 77, 97,122,153,236,129, 28,192, 87, 34,223,186, 63, 62,250,108,194,183,245,155, -180, 26,217,246,189, 33, 28,179, 64,130,179, 71, 54,208,132,232, 75, 7,120,212, 50, 91, 99,195,108, 0, 21, 54, 7, 25, 12, 21, -154,172, 82,155,123, 82,196,237, 15,236,217, 50,250,208,145,195,223,245,237,221,199,109,221,215,131,177,108,227, 81,136, 69, 66, - 80,171, 21, 67, 58, 6, 12,124,178,167, 91, 47,127, 47,123,191, 67,151, 83,175, 77, 90,249,232, 43,141,198, 24, 91, 81, 36,166, -200, 56, 95,119,116,116,204,105,221,186,117,115,161, 80, 72,114,115,115,121,158,158,158,102,169, 84,106, 72, 77, 77,213,232,245, -250, 67,148, 82,117,101,182,211,104,178, 34, 49, 75,135, 95, 15, 31,194,131,219, 23,241,228,201, 51,229,147,199, 79,214, 18, 30, - 93,169,202,140,205,127,147,125,103, 45,181,215, 33,173,116,175, 67,139, 94,185,123,199,250,133, 29, 53, 58,253,232, 6, 45, 35, - 80,181,118, 43,142,209,100,193,195,187,151,113,249,224,202,101, 6,101,222,140,183, 57,198,190, 85,170, 7, 83,174, 29,126,191, -114, 18,212,106, 93, 15, 0,212,106, 93, 31,117,227,212, 71,205,122,140,133,171,103,213, 6,132, 16, 82,217,249, 30, 1, 64,192, -227,168, 79, 31,218,118, 36, 49, 49, 17, 79,159, 62,197,243,231,207,145,159,159,143,221,187, 19, 43,117,124,212,249,137,231, 37, -110, 65,221, 6, 12, 30,126,124,224,208,247,237,171, 7,135,113, 66,170,184,192, 77,194,195,179,231, 73,136,189, 23,109,125,118, -231,148,206,168,200,238,171,201, 79, 44,211,248,137, 61,234,120, 17, 14,157, 81, 60,119, 97,139, 22,173, 66,190, 92,244, 93,115, - 55, 15,207, 82,175,227,121, 57,217,118,211, 39, 29, 11,185,121,235,119,155,230, 58,180, 90, 44,121,227, 71, 15,177,114, 11, 39, - 10,197,171, 56, 53, 41, 60,216,133, 15, 83,133,239, 83,171,185,194, 8,254, 7,253,218,192,108,181, 66,173, 53, 66,161,214, 67, -174,212, 33, 35, 59, 15, 15,162,163,113,245,248, 49,188,120,246, 32,193,100, 48,156,227,112,200, 65, 77,230,179,171,149,107,105, -226, 85,119,115,117, 69, 66,190, 10,246,118, 60, 36,197,222,211,171, 21,242, 93,111, 90,143, 52,185,177, 25, 98,175,144,174, 67, -134, 12, 61,211,177, 91,111,105,147,150,157, 29,220,157,156, 33,224, 81,196, 37,166, 35,242,183, 51,234,248, 7,215, 20, 38,131, -170,251,187,152,245,229,127, 25,155,122, 29, 26,245,234, 94,195,250,180, 59,204,229,242,236,172, 86,179,222,104,208, 15,120, 27, -147,245, 87, 65,169, 37,117,244,176,126,127,120, 54, 48, 91,169,104,216,160,179,218,146,207, 10, 38, 11,117, 24, 54,232, 55, 77, -225, 5,164,236,196,190, 87, 77,123,123,207,167,190,124,153,119, 55, 63, 95,127,249,109,123, 2,150,156,187,176,156,222,133,234, -208,208,208, 87,230,138,203,229,194, 98,177,216,124, 33, 18, 8, 69,227, 58,246,254,144, 92, 56,250, 51,189,115,229,232,199,154, -236,216,141,111,209,206,108, 4,112,155, 16,242,104,246,236,217, 77,188,188,188,188,230,206,157,107,175, 80, 40,248,235,214,173, -211,229,230,230,102, 42, 20,138,155,148, 82,173,237,154,145, 38, 0,253, 37, 94,181, 58,208, 67, 63,119,113,118,247,235, 42,245, -168, 82, 67,150,147,150, 32,207, 73, 63, 7,224, 66,209, 64,145,149, 34, 60, 60, 60,136,195,225, 12, 1, 80, 79, 44, 22,215,148, - 72, 36, 66, 74,105, 40, 33, 36,198,106,181, 70,215,169, 83,231, 4,128, 74, 29,191,164, 43,219,244,109, 63,222,178, 39, 95, 99, - 21, 24, 56,130, 61, 73, 87,182,233, 1, 32,235,220, 52, 13,128, 95,189, 58,204,232,127,236,102,210,154,152, 2,233,228,236,203, -139,143, 85,182,204,178,148,251, 53,223, 85,253,215,166,199,164, 2, 24, 45,246, 10, 89,254, 48,234,230, 60, 66,193,183,192,188, - 80,147, 21,119,239, 93,232,243,249,124,157,159,159, 95,169,189, 11,133, 66,161,174,252, 99,126,197, 12, 96, 51, 33,237,183, 31, -222,191,125,244,209, 99,191,126,215,182, 83, 95, 55,251, 42, 85, 80,205,147, 96,251,140, 70,147, 47, 70,229,220,233,253,229,181, -159,226,211,117,209,148,210, 74,229,195, 40,149,202, 88, 66, 72,129, 74,165,234, 67, 41, 77, 33,132,248, 23, 20, 20,220, 55,153, - 76, 15, 43,109, 8,172, 24,222,162, 69,211,221,132, 16, 30, 53, 91,151,222,228,115,247,232, 50,158,164,190,137,177, 40, 73, 88, - 53, 39, 76,153,187,186, 81,141,154,181, 26, 21,207,117, 88,183,170, 35, 38,124,181,188, 81,213,234,193,141,254, 51,255,161,164, -162,115,146, 18, 66,198, 28,222,178,244, 90,212,173,203,179,220,125,170, 86,205, 76,141,127,146,242,252,254,183,102,173,252,240, -219, 30,231,196,231, 49, 43, 55,255,240,213,180,140,180,132,205,234,236,216, 71, 0,160,206,142,125,228,224, 85,235,235,220,204, -212,105,121,217,241, 63,188,233,190, 80,171,213,233,187,118,237,114,110,213,170, 21,199,203,203, 11, 57, 57, 57,184,124,249,178, -213,106,181,166, 85, 86, 75,149, 23,127,153,144, 26,174,191,108,252,113,169, 64,236,216,195,108, 54,251, 82, 10,240,120,188, 12, -131, 70,113, 70,201, 17,127, 73,243, 19, 43,168,151, 86, 2,128, 83, 60,119,161,213,106, 37, 75,215,108, 79,226,219, 59,150, 58, - 63,162, 73,167,116,176, 90,173, 54,207,117, 88,240,242, 94,141,119,118,179,166,116, 65,131,198,205,103,153, 76, 70, 29, 10,243, -197,116, 0,116,148, 34,143,195, 33, 87,185, 86,211, 89,249, 91, 60, 76, 17, 2, 39, 74,120,112, 20,241, 64, 64,160,146,231,211, -202,228,100,149,122,188,179,158,197, 16,210, 62,240,180, 97,255,168, 75,231, 79, 13,178, 88, 44,213,138,106, 78,162, 94,171, 62, -160,202,112,249,133,210,187,102,252,243, 57, 89,108,182,120,229,156,216,177, 40,156,219,231,127,154,188,132, 59,141,223,165, 94, - 70, 86,254,246,110,125,167,209,196,164,236, 59,201,153,250, 95, 74, 78,171,243,182,154, 41, 41, 57,151,139,154, 11,245,127,142, - 80,188, 89,239,194, 87,198, 88,167,253,126,213,236,161,208,105,213, 59, 52,217,177,219,223,141,137,165, 90, 0, 87, 9, 33,210, -143, 63,254, 56, 92, 34,145,240,115,115,115,111, 83, 74,229,111,170,169,202,138,189, 12,224, 50,128, 25,239,162,140, 81, 81, 81, -241, 13, 27, 54,220,201,225,112,170, 81, 74,189, 40,165,210, 34, 35,155,203,227,241,210, 30, 63,126,156,246, 70,219,174,119, 60, -173, 50,112,131,205,212,229,204,159,204,135,155,231,249,151,249,150,159,185, 98,251,255,153, 28, 3,117,214,179, 24, 0, 3,222, -181,110,121,227,100,217, 94,143,254, 99,184,174,156,220, 54,154, 99, 39, 93,216, 41, 68,167,233,250,121,218,183,215, 31,230,220, -166,148, 42,223,162,142,230,216,217,217,105, 9, 33,254, 2,129, 64,107, 48, 24,162,223,104,255, 21,154,124,143,119,185,239,172, - 32,247, 26, 53,106, 92,169,245,109,136,228,109, 47, 90,222, 41,170,204,167,223,162,168,249,251, 15, 17,138,172,216,133, 0, 22, -190,141,246,221,187,119,143,255,240,195, 15,242, 53,107,214, 4, 88, 44, 22, 7,131,193,160,209,106,181,137,169,169,169,191,191, -217, 49,127, 97, 0,240, 89,209,242, 6, 81,151,167,153, 18,175, 90,171, 91,182,104,249, 89,225, 3, 58, 93,157,120,117,245,148, -242,190, 35,241,170,165, 45,185,126,121,115, 29,190,211,227,146, 29,187, 30,192,250,191, 46, 82, 97,205, 25, 62,176, 15, 80, 52, - 48,183,213,108,206,121, 39,178,133,231,252, 22,188,225, 36,233,255, 4, 40,165, 25, 0, 54, 21, 25,102,250,151,253,144,173,249, - 42, 76,147,105, 50,205,127,151,166, 45,179, 19,176,253,201, 52,255, 74, 77,145,111, 29,127, 0,176,101,210,245,178,214,103,251, -147,254,107, 18,218,109,216, 31,227, 75, 49, 91,182, 13, 88,202, 96, 48, 24,127,193,211,158,149,237, 5,198,127, 19, 91, 13,214, -155,174,207,248,215, 93,211,202,204,137, 38, 40,156, 5,187,180, 47,217,236, 84, 9, 33,157,223,160, 80, 23,152, 38,211,100,154, - 76,147,105, 50, 77,166,249,239,210,172, 72,251,239, 24, 41, 43, 37,162,117,178,168,249,176,112, 96,182,191,106, 1,208,153,105, - 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 95,252, 63, 7, 12, 6,131,193, 96, 48, 24,140,191, 4,150,163, -197, 96, 48, 24, 12, 6,131,241, 22,148,214,116,200,140, 22,131,193, 96, 48, 24, 12,198, 59,160,188,100,120,214,116,200, 96, 48, - 24, 12, 6,131,241, 22, 20, 71,180, 8, 33, 62,132,144,241, 37, 35, 92,204,104, 49, 24, 12, 6,131,193, 96,188, 3, 40,165, 25, -175, 71,183, 8,165, 20, 39, 79,158,164, 17, 17, 17, 4,192, 31,254,103, 48, 24, 12, 6,131,193,248,255,224,239,236, 69, 8, 33, - 62, 0, 34, 74,110, 78,241,240, 14,156,146, 27,200, 14, 51,131,193, 96, 48, 24,140,255,166,217,250, 59,150,187, 56,146, 85, 98, -121, 53,105,246, 43,163, 21, 17, 17, 65,152,217, 98, 48, 24, 12, 6,131,241,223,226,159,232, 69, 56,175,111, 32, 59,204, 12, 6, -131,193, 96, 48,254,155,102,235,159,180, 61,108,120, 7, 6,131,193, 96, 48, 24,140,183,160,188, 28, 45, 82, 52, 84, 60,131,193, - 96, 48, 24, 12, 6,227,205,140,214,248,146,189, 13, 75,190,102, 17, 45, 6,131,193, 96, 48, 24,140,119, 96,182, 74,125,159, 69, -180, 24, 12, 6,131,193, 96, 48,254, 26,254,210, 1, 75, 9, 33,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,201, - 20,143, 8, 95,244,255,248,162,156,173,191,222,104, 49, 24, 12, 6,131,193, 96,252, 11,136,160,148,110, 42,145,155, 21,193,140, - 22,131,193, 96, 48, 24, 12,198, 59,164,180,201,165,153,209, 98, 48, 24, 12, 6,131,193,120,135, 6,171,228,107,102,180, 24, 12, - 6,131,193, 96, 48,254, 34,152,209, 98, 48, 24, 12, 6,131,193,248,139, 32, 0, 74,237, 57, 64, 41,189, 96,179,200, 27,244, 62, -168, 72,159,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 60,205,138,180, 43,227, 63,254,103,204,212,127, 70,134, 63, 89,244, -247, 63,205,135,148,210,191,108, 1,208,153,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,159,188, 0, 24, 95,242,111,201, -133, 53, 29, 50, 24, 12, 6,131,193, 96,188,125, 84,171,228, 56, 90,175, 70,137,103, 83,240, 48, 24, 12, 6,131,193, 96,188, 5, -165, 13,235, 80, 12,139,104, 49, 24, 12, 6,131,193, 96,188, 5,175,207,115, 88,242, 53, 51, 90, 12, 6,131,193, 96, 48, 24,127, -129,225, 98, 70,139,193, 96, 48, 24, 12, 6,227, 29,154,172, 63, 69,183,138,178,228,113,242,228, 73, 26, 17, 17, 65,216,174, 98, - 48, 24, 12, 6,131,241,223,224,159,232, 69, 56, 37, 55,236,228,201,147,148, 29,102, 6,131,193, 96, 48, 24,255, 45,147,245,119, -244, 34,132, 16,159,226,222,134, 69,139, 79,241,103,172,215, 33,131,193, 96, 48, 24, 12,198,219, 17, 81,178,231, 97, 81,243,225, - 38,102,180, 24, 12, 6,131,193, 96, 48,222, 1,165, 37,194, 3, 44, 71,139,193, 96, 48, 24, 12,198,255, 8,255, 68, 47,242,202, -104, 49, 24, 12, 6,131,193, 96, 48,222,192, 76,149, 18,205, 42,110, 74,100, 70,139,193, 96, 48, 24, 12, 6,227, 29, 25,174,215, - 71,137,103,227,104, 49, 24, 12, 6,131,193, 96,252, 5, 38,235, 47, 55, 90,132,144,206, 76,147,105, 50, 77,166,201, 52,153, 38, -211,100,154,255,116,147, 85,252,151, 77, 42,205, 96, 48, 24, 12, 6,131,241, 14, 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,239,208,100,189,110,182, 88,142, 22, -131,193, 96, 48, 24, 12,198, 91, 80, 94,142, 22, 1,208,185,140, 47, 93,168,132,139,235,252, 6,133,186,192, 52,153, 38,211,100, -154, 76,147,105, 50,205,127,151,102, 69,218,149,241, 31,255,171,252, 97,168, 7, 74,233, 95,182, 0,232,204, 52,153, 38,211,100, -154, 76,147,105, 50, 77,166,249,111, 90, 0,140, 47,254,159, 53, 29, 50, 24, 12, 6,131,193, 96,188,101, 4,171,172,207,152,209, - 98, 48, 24, 12, 6,131,193,120, 11,216, 56, 90, 12, 6,131,193, 96, 48, 24,127, 17,132, 16,159,162, 17,225,139,255,134, 51,163, -197, 96, 48, 24, 12, 6,131,241,110,136, 40,138,106, 21,255,101, 70,139,193, 96, 48, 24, 12, 6,227, 93, 81,214, 56, 90,132, 82, -138,147, 39, 79,210,162,215,237, 35, 34, 34,174,178,221,197, 96, 48, 24, 12, 6,227,255,147,127,170, 23,121, 21,209,138,136,136, - 32, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112, 94,115,146,237,217, 97,102, 48, 24, 12, 6,131,241,223, -224,159,232, 69,120,175,185, 72, 6,131,193, 96, 48, 24,140,255, 10,127, 87, 47, 66, 8,241, 1, 16, 1,224,100,209,223, 87, 67, - 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,210, 35, 82, 74, 55,253, 97,234,157, 98, 19, 86, 52, 84, 60,131,193, 96, 48, 24, - 12, 6,227, 13, 40,109,100,248, 98,195,197,140, 22,131,193, 96, 48, 24, 12,198, 95, 4,107, 58,100, 48, 24, 12, 6,131,193,120, - 75, 74, 70,181, 74, 54, 31,114,254,226, 31,237,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 79, 55, 89,148,210, 77, -197, 75, 73,211,197, 70,134,103, 48, 24, 12, 6,131,193,248,139, 96, 77,135, 12, 6,131,193, 96, 48, 24,111,193,235, 81,172,146, - 77,135,204,104, 49, 24, 12, 6,131,193, 96,188, 3,179, 85,218,251,172,233,144,193, 96, 48, 24, 12, 6,227, 45, 40,109,120, 7, -102,180, 24, 12, 6,131,193, 96, 48,254, 98,195, 69, 0,148,218,115,128, 82,122,161, 18,194,149,238,125, 80,145, 62,211,100,154, - 76,147,105, 50, 77,166,201, 52,255,121,154, 21,105, 87,198,127,252, 47, 27,172, 87, 77,137,148,210,191,108, 1,208,153,105, 50, - 77,166,201, 52,153, 38,211,100,154, 76,243,223,186,176,166, 67, 6,131,193, 96, 48, 24,140,191, 8,155,141, 22, 33,196,131,207, -231,207,114,112,112,248,201,193,193, 97, 35,159,207,255,129, 16,226, 82,217, 31,148, 72, 36,147,125,124,124,158,250,248,248,164, - 6, 6, 6,158,114,114, 18,127, 94,195,158,180, 37,132,240,223, 65,232,142, 67, 8, 9, 33,132,124,238,224,224,240, 68, 36, 18, - 37, 17, 66,118, 18, 66, 62, 39,132,184,191,141,246, 66, 63, 50, 32,230,243,190, 71, 23,250,145, 1,175,253,102,132,183,183,247, -117, 66, 72,215,119,117, 80,134,137, 73,231, 65, 18,146, 60, 72, 66,146,135,137,223,124, 80, 56, 39, 39,167,145,190,190,190, 55, -221,221,221,211,124,125,125,127, 19,137, 68, 3, 43,185, 63, 61,189,189,189,151, 5, 4, 4,196,250,249,249,173, 42,154,157,252, -127,150,182,246,164, 77, 11,123,146,211, 82, 72,148,173,133,228,167,150, 66,210,165, 43, 33, 14,111, 88,151, 90, 19, 66, 14, 74, -165,210,251,124, 62,255, 4, 33,164,127, 81,253,234,207,231,243, 79, 72,165,210,251,132,144,131,132,144,214,111, 88, 79,151, 17, - 66,210, 8, 33,139,139, 94,127, 26, 16, 16,160,108,208,160, 65, 82,131, 6, 13,182, 5, 7, 7,191,111,171,158, 88, 44,238, 18, - 16, 16,112, 40, 48, 48, 48,169,101,203,150,249, 85,170, 84,121,230,239,239,191,221,222,222,190, 61,187,196, 49, 24, 12,198,127, - 25, 27,194,131,189, 0,124, 7, 96,109,116,116,116, 36,165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 39, 0, 75, 80, 70, 8,241, -245,247,221,220,220, 22, 44, 92,184, 80,151,145,145, 65,115,114,114,104,108,108, 44, 93, 57,231, 43,107, 55, 87, 30, 13,242,112, -209,248,248,248,188, 8,172, 82,101,111, 93, 9,231, 43, 0, 53, 42, 19,174, 4,224, 34, 18,137,110,207,153, 51, 71,117,253,250, -117,149,193, 96, 80, 89,173, 86, 85,122,122,186,234,194,133, 11,170, 86,173, 90,169, 0, 76, 1,192,125,147, 16,232, 55,190,184, - 74,183,124, 77,191,241,197,213,146,239,135,134,134, 62,182, 90,173,116,192,128, 1,122, 0,126,111, 19, 86,245, 3,236,235, 58, -193,121,160, 4, 89,230,237,223, 82,186,110, 26, 29, 40, 70,242,155,104,122,122,122,254, 58,121,242,100, 69, 90, 90, 26,213,235, -245, 52, 57, 57,153, 78,152, 48, 65,238,233,233,185,203,198,253,233, 22, 22, 22,150,117,243,230, 77,171, 76, 38,163, 87,174, 92, -177,214,171, 87, 47, 11,128, 79,101, 67,202,158,158,158,155,124,125,125, 79, 85,102,241,244,244,220, 92,217, 99,212, 76,136,100, - 99,228,101, 74,239,158,163,199, 6,180,160, 43, 27, 87,161,253, 93,237,100,173,237,240,105, 59,128, 87,137,186, 52,168, 93,187, -118,234,135, 15, 31, 90,242,242,242,232,227,199,143,173,227,198,141,211, 1,136, 25, 55,110,156,238,241,227,199,214,188,188, 60, -250,240,225, 67, 75,187,118,237,212, 0,198,218, 90,206,162,135,155,173,243,231,207,167,148, 82,186,112,225, 66, 90,191,126,125, -218,177, 99, 71,170, 82,169, 40,165, 52,137, 82,186,205,108, 54,143,182, 69, 83, 42,149,142,156, 60,121,178, 74,163,209,208, 98, -172, 86, 43,149,201,100,116,237,218,181,106,111,111,239, 83, 0,220, 89,243, 4,211,100,154, 76,147, 53, 29,254,165,169, 82, 62, - 0,198,151, 88, 94,221, 43, 43,250,226,176,175,190,250,170,216, 84,157,110,221,186,245,157,209,163, 71, 71,142, 30, 61, 58,178, -117,235,214, 87, 0,156,189,119,239, 94,228,244,233,211, 35, 1, 12, 43,239, 64, 0,112,105,217,178,165, 44, 51, 51,147, 6, 7, - 7,211,170, 85,171,210,204,204, 76, 74, 41,165,119, 7, 53,162, 23,107,131,166, 92, 59, 77,207, 29, 57, 72,199,249,240,104, 27, - 31,169,201,199,219, 59,207,221,221,125, 17,138, 38,191, 46,235,224, 2,232, 87,187,118,109,101, 76, 76,140, 42, 46, 46, 78,181, - 96,193, 2, 85,199,142, 29, 85, 97, 97, 97,170,254,253,251,171,214,172, 89,163, 50, 26,141,170,205,155, 55,171,156,156,156, 98, - 94, 55, 91,111, 99,180,120, 60,222,234,232,232,104,250,226,197, 11, 10, 96, 89, 89,154, 0,164,206,206,206,221, 93, 92, 92,166, - 56, 59, 59,119, 7, 32,165,148, 34, 24,144, 52,144, 34,224,211, 6, 65,161, 39,134,117,174,177,182,115,147, 70, 3, 29, 57, 50, -211,143,211, 40, 29, 16,240, 70, 70, 75, 42,149,142,252,252,243,207,149,122,189,158,106, 52, 26,170, 82,169,168, 70,163,161, 74, -165,146, 14, 27, 54, 76, 97,111,111,223,175, 34, 77,119,119,247,111,175, 93,187,102,206,204,204,164,215,174, 93,163,167, 78,157, -162,235,214,173,179,122,122,122,174,168,236, 9,232,237,237,125,254,220,185,115,145, 81, 81, 81,145,183,111,223,142, 52,153, 76, -145, 70,163, 49,210,104, 52, 70,158, 56,113, 34,242,240,225,195,145,251,246,237,139, 52, 24, 12,145, 6,131, 33, 82,175,215, 71, - 86,175, 94,253, 76,101,143, 81, 83, 33, 82, 12,215,143, 81,186,226, 19, 42,255,126, 34,149, 77,237, 65,179, 39,180,165, 63, 53, -169, 66,219,138,112,188,100, 61, 42, 79,147,207,231, 95, 77, 74, 74,178,206,156, 57,211, 80,167, 78, 29,249,152, 49, 99,116,122, -189,158, 82, 74,169, 94,175,167, 99,198,140,209,213,169, 83, 71, 62,115,230, 76, 67, 98, 98,162,149,199,227, 93,168,132,209, 90, - 82,108,178,174, 94,189, 74, 75,162, 82,169,104,199,142, 29,147,234,215,175,191,173, 90,181,106,195, 43,210,148, 72, 36,125,102, -204,152,161,162,165, 96, 50,153,168, 82,169,164,137,137,137,214,170, 85,171,166, 3,112, 99, 23,115,166,201, 52,153, 38, 51, 90, -127,153,209, 26, 95,214,235,114,119,226,244,233,211, 35, 41,165,145,179,103,207,142, 44,138,108, 9, 0, 72,138, 22, 30,128,161, - 51,102,204,136,164,148, 70,126,245,213, 87,145, 0,122,149, 99,180,122, 29, 56,112,192,184,106,213, 42,234,229,229, 69,189,189, -189,233,234,213,171,169,213,106,165,153, 39,118,209,139,181, 65,159,204, 26, 69, 41,165, 52,118,209, 36,122,177, 54,104,252,250, -111,232,136, 17, 35, 52, 14, 14, 14,195,202, 49, 48,174,141, 26, 53, 82,106,181, 90,213,246,237,219, 85, 14, 14, 14,119, 1,212, - 1,192, 71, 97,175, 74, 9,128,247,235,212,169,163,120,244,232,145,106,207,158, 61, 42, 0, 11,108,140,108,212, 0,208, 65, 44, - 22,247,159,225,199,143,163, 91,190,166, 51,188,240, 16, 64, 61, 0, 30, 69,235,248,126,245,213, 87,148, 82, 74,253,253,253,175, -149,177,237,210,176,176,176,175,226,226,226,230,153, 76,166,121, 81, 81, 81,243,106,213,170, 53,179,119,117,159, 22, 71,135,117, - 9,151,127, 51, 49,156, 46,159, 26,246,195,123, 77, 59,239, 29,210,126,216, 7,213,220,175,143,241,180,215, 12,150,114,149, 67, - 29,254,160, 99, 83,197,246,243,243,187,157,156,156,252,202, 92, 41,149, 74,154,150,150, 70, 19, 18, 18,232,245,235,215,169,143, -143,207,197,138, 52,189,189,189, 31, 39, 39, 39,211,245, 43, 87,210, 1,245, 66,105, 91,103, 71,218,206,197,145, 54,150,216,171, -107, 3,141, 43,107,180,238,223,191, 31, 9, 32, 18, 64,100, 94, 94, 94,100, 94, 94, 94,100, 65, 65,193,171,247, 0, 68,202,229, -242, 72,185, 92, 30,105, 48, 24, 34,131,130,130, 42,109,180, 90,217,163, 85, 51,123,228,183, 16, 66,219,203,207, 61,125, 98,117, -119,203,173, 97, 45,104,193, 39, 29,233,170,112, 63,218,218, 14,159,218,120,220,123,217,217,217, 93, 1, 48, 13, 0, 23,192,168, -238,221,187,107, 40,165,180,123,247,238, 26, 0,163,138,222,255,156,199,227, 93, 0,208,221,150,114, 2,224,212,172, 89, 83, 93, - 28,201, 2,240,123,205,154, 53,213,245,235,215,167,245,235,215,167,254,254,254, 74, 0,163,108,189,160,213,168, 81, 35, 86,171, -213,190, 50,128, 50,153,140,166,167,167,211,248,248,120, 26, 19, 19, 67,239,222,189, 75,147,146,146,232,254,253,251, 45,206,206, -206, 39,217,197,156,105, 50, 77,166,201,140,214, 95,103,180, 94, 95,254,100,180, 78,156, 56, 65, 95,251,210,247,247,238,221,139, -156, 49, 99, 70,228,235, 78,237,117,241,217,179,103, 23, 71,189,190, 43,231,230,191, 57, 54, 54,150,142, 26, 53,138,134,132,132, -208,144,144, 16, 58,122,244,104, 42,151,203,169,234,249, 35,122,177, 54,232,221,193,141, 41,165,148, 42,159, 68,209,139,181, 65, - 35, 71,180,164, 15, 30, 60,160, 85,170, 84, 57, 87,206,239, 31,255,237,183,223,114,118,237,218,149, 9, 96,103,145,193,106, 14, - 96,181, 72, 36,218, 90,212, 92, 88, 21,128, 75,112,112,112,190, 70,163, 81, 13, 24, 48, 64, 5, 32,160, 28,205,118, 33, 33, 33, - 47, 54,111,222, 76,179,179,179,105,126,126, 62, 93,218,170, 22,165, 91,190,166, 11, 27, 87,181,174, 95,191, 94, 63,109,218, 52, -181,171,171,235, 9, 0,190, 3, 6, 12, 48, 83, 74,105,219,182,109,179, 74,211,115,118,118,238, 30, 23, 23, 55, 79,167,211,205, -147,201,100,243,242,243,243,231, 29, 59,122,116, 94,183,122,181, 70,201,191,153, 24,126,116, 88,151,240,247,252, 92,250,175,232, -218,228,163,180,153, 99, 7,204,110, 89,231,137,110,201,103,151, 7, 85,247, 90,246, 38, 7,220,195,195, 35, 67,175,215, 83, 0, -127, 90, 94,188,120, 65,221,220,220,146, 43,210,112,117,117,157,253,249,208, 33,150,126, 85,253,232,139, 85,115,168,233,252, 30, -106, 58,181,157, 62,255,126, 42,237,237,237,174,104, 46,224,204,176,181, 60,222,222,222,231,111,223,190,253, 7,163, 85, 80, 80, - 80,170,209, 82, 40, 20,145, 6,131, 33,178,102,205,154,103,222,182,226, 55,183, 67, 80, 59, 17,247,110,212,168, 54, 52,103, 98, - 71,218, 93,202, 79,122,139,147,104, 40,128, 43, 0, 70, 84,242,123, 28, 0, 75,138, 13,213,247,223,127, 79, 41,165,180,102,205, -154,106, 0,156,183, 40,143, 52, 52, 52, 52, 97,236,216,177,230,218,181,107,103,183,106,213, 74,118,231,206, 29,122,245,234, 85, -122,234,212, 41,122,240,224, 65,250,232,209, 35,154,150,150, 70, 99, 99, 99,105, 68, 68,132, 12, 64, 59,118, 65,100, 11, 91,216, -242,191,188,188,238, 69,254, 49,189, 14, 79,158, 60, 73, 35, 34, 34,200,201,147, 39,105, 81,178,174, 20,128,125,227,198,141,115, -150, 44, 89,178,188,104, 14, 31, 82,159, 71, 6,117,114,224, 63,232,228,192,127, 80,159, 71, 6, 17, 66, 8,165,116,211,162, 69, -139,190,173, 95,191,126, 6, 0, 17, 33,196,187,140, 92,176, 54,110,110,110, 72, 78, 78,134, 84, 42,133, 84, 42, 69,114,114, 50, - 40,165, 48, 83,192, 68, 1,189,209, 8,173, 86, 11,157,149, 66,107, 5, 20, 42, 21,188,189,189, 97, 52, 26,131,202, 72, 42,110, - 48,120,240,224,160,176,176,176,156,233,211,167,167, 3, 24, 11, 96,235,135, 31,126,120,254,247,223,127, 15, 83,169, 84,249, 49, - 49, 49,186,122,245,234,117, 7,224, 29, 23, 23, 55,114,237,218,181, 24, 53,106, 20, 0,180, 43, 67,179, 94, 68, 68,196,169, 71, -143, 30, 5,141, 24, 49, 2, 87,174, 92,193,210,165, 75,145,155,155, 75, 1, 64,175,215, 83,139,197, 98,108,217,178,165,113,213, -170, 85, 77,219,182,109,123,187,122,245,234, 92, 0, 72, 72, 72,120, 94,134,102,173,192,192, 64,232,245,122,228,228,228,224,209, -163, 71,112,148, 74, 17,157,158,235,213,126,197,250,188, 89, 71,207,243,135, 54, 13,115,157,210,165,149,126,241,185, 43,193,117, -124,189,188, 12, 70,147,119,108, 70, 86,250,155,228,221, 9, 4,130,228,220,220, 92, 24, 12, 6,104,181, 90, 40, 20, 10,228,229, -229, 33, 55, 55, 23,233,233,233, 16, 8, 4, 47, 42, 76,164,207,207,191,150,240,219, 85,178,127,195,247, 8, 50,231,131,119,104, - 53,120,191,254,132, 26,134, 28,108,156, 51,193,209,224,230, 49, 95,234,228, 84,224,226,226,178,137, 16, 82,179, 34,189,240,240, -112,228,229,229, 33, 47, 47, 15,110,110,110,112,113,113,129,139,139, 11,100, 50, 25,228,114, 57, 20, 10, 5,130,131,131,209,160, - 65, 3,236,216,177,227,157,228, 31,222,212,211,120, 51, 44, 19,207, 63, 75,135, 64, 44, 70,117, 23, 73, 96, 83, 71,226, 90, 78, -146,122, 71,129, 64,112,192,205,205,237, 28, 33,228, 19, 66,136,152, 16,242,137,155,155,219, 57, 62,159,223, 23,192, 66, 74,233, -174, 74, 22, 99,241,252,249,243,191,138,139,139,115,120,240,224, 1,166, 79,159,142, 5, 11, 22,224,249,243,231, 63, 82, 74,173, - 69,191,251,177,187,187,251, 9, 46,151,251, 51, 33,164, 7, 33,164,187,175,175,111,167, 10,116,251, 78,155, 54, 77,215,168, 81, -163,216, 39, 79,158,244,253,237,183,223, 26, 79,157, 58, 85,254,242,229, 75,196,198,198,194,199,199, 7,254,254,254, 80,169, 84, - 40, 40, 40, 64,223,190,125,165, 78, 78, 78,195, 88, 86, 42,131,193,248, 95,229,117, 47,242,119,226,245,113,180, 74,190, 46,181, -215,161,131,131,195,252,200,200,200, 22,245,235,215,231, 1,216, 15, 0, 97, 92, 12,236,219,178,225,214,163,155,190,175,127,120, -213,156,250,221,234, 7,111, 13,227,162,184, 23,219,137,198,141, 27,187, 68, 70, 70,182, 20, 10,133,159,150,149,119, 15, 0, 46, - 46, 46,144, 74,165,112,118,118,134,139,139, 11,172, 86, 43, 84, 26, 29,212, 22, 64,169, 51, 64, 46,151, 67, 89,244, 90,165, 55, - 66,173, 86,191,250,110, 41,180, 31, 59,118,108,206,218,181,107,179, 51, 50, 50,190, 7, 80,111,212,168, 81,125,214,172, 89,131, - 75,151, 46,233,122,132,212,112, 91,212,166,225,183,117, 50,158,207, 11,225, 99, 28,128,107,215,174, 93, 67,203,150, 45, 65, 8, - 25, 82,154,160, 72, 36,250,105,239,222,189,162,152,152, 24,212,168, 81, 35,102,200,144, 33,131,190,255,254,251, 32,177, 42,255, - 6, 0,152,243, 50, 99, 38, 77,154,244,245,162, 69,139,114,114,114,114,140, 26,141,198,179,119,239,222, 72, 78, 78, 70, 90, 90, -218,239,101,152,204,216,168,168, 40, 42,151,203, 17, 31, 31,143,168,168, 40,209,215, 95,127,221,212,194,225,244, 73,133,227, 7, -163, 90, 53,110, 58,162,121, 67,236,186,249, 64,112,253, 89,130,115,227,170,126, 46,247, 83, 50,170,153, 8, 94,188,201, 1, 87, - 42,149,171,191,253,246, 91,149, 74,165, 66,106,106, 42, 30, 62,124,136, 39, 79,158, 32, 41, 41, 9, 75,151, 46, 85,229,231,231, -175,169, 72,195,215,158,247,197,178,169, 31, 18,222,227,223,129, 7, 87, 1,141, 18,208,170,160,127, 26,137,109, 79, 51,177,238, -208, 17,187,151,201,201,206,251,246,237, 27, 27, 16, 16, 16, 73, 8, 9,174,168,211, 5, 0,112, 56,156,215, 43, 39, 56, 28,142, - 18, 64,166, 88, 44, 78,113,116,116, 76,225,112, 56,153,148, 82,245,187,168,252, 28, 51,140,224,114, 1, 59, 17, 56,124, 94,121, - 39,201,160, 33, 67,134,236, 77, 73, 73,233, 22, 31, 31,223, 98,205,154, 53,223,218,219,219, 71,175, 89,179,230,219,248,248,248, - 22, 41, 41, 41,221,134, 12, 25,178,151, 16,242,126,101,126,191,102,205,154,147,230,205,155,135,165, 75,151,162, 65,131, 6, 8, - 14, 14,214,204,159, 63,127, 53,128, 57,132,144, 79,131,131,131,111, 76,154, 52,105, 76,118,118,182,119,106,106,106,131, 31,127, -252,113,194,234,213,171,155,164,167,167,219, 87, 32,221,186,107,215,174, 56,125,250, 52, 0,100, 80, 74,227,243,242,242,204,233, -233,233, 8, 13, 13, 69,211,166, 77,161, 82,169,160, 82,169, 32,147,201, 16, 24, 24, 8,171,213,218,130, 93,202, 25, 12, 6,227, -255,207,112,149,105,180,236,237,237, 93,194,195,195, 81,189,122,117,151,162, 92, 44,184,217,241,102, 78, 25, 59,212, 65, 18,121, - 6, 36,234, 34,134,180,169,235,224,102,199,155, 89,244, 21, 94, 96, 96,160, 48, 60, 60, 28, 98,177,216,175,140,223,191,146,153, -153,137,240,240,112, 56, 59, 59, 67, 42,149, 34, 60, 60, 28, 70,163, 17,114,165, 18,106, 11,160, 49, 89, 33,151,203,145,159,147, - 5,141, 5, 48, 59,186, 33, 41, 41, 9, 92, 46, 55,161, 12, 77,159, 26, 53,106,228, 68, 71, 71,231, 0,184, 6,224,163, 5, 11, - 22, 96,198,140, 25,152, 59,119,238, 94,135,140,196,174,123, 79,255,234,182,123,254,199, 30,193,118,100, 40, 0, 99, 74, 74, 10, -156,157,157, 33, 22,139, 75, 53, 6,109,219,182,109, 36, 22,139,177,125,251,118,154,154,154,218,138, 82,122,144, 82,154, 64, 72, -161,217, 19,113, 32,167,148,174,142,140,140,108,246,245,215, 95, 63,235,220,185, 51,191,121,243,230, 88,184,112, 33, 0,156, 40, - 77, 83, 38,147,221,122,255,253,247, 13,151, 47, 95,198,211,167, 79,197, 71,143, 30, 29,184,112,225,194,186, 47, 95,190, 20, 30, - 63,117,230,189,157, 41,138,129,223,159,187,110,191,232,236,149, 91,238, 78,226, 58,213,220, 93, 17,245, 50, 77, 96,225,226, 78, - 69, 7,181,185,128, 55,182,131,136, 31,213,214,158,155,209, 65,196,143,108, 42,224,125,168, 80, 40,246, 29, 59,118,236,236,212, -169, 83, 85,217,217,217,112,116,116, 68, 94, 94, 30, 22, 47, 94,172,138,138,138, 58,164,215,235,143, 87,164,107,177,210, 70,254, - 85, 3,128, 23,209,175,222, 51, 90, 41,238, 24, 4,232,249,209,103, 8, 9, 13,133,193, 96, 64,189,122,245,200,130, 5, 11,196, - 82,169,244,203, 10, 77, 15,231, 79,213,205, 76, 8,201,164,148,166,169, 84,170, 84,145, 72,244, 82, 32, 16,188,204,207,207, 79, -165,148,102,189,131, 10,207,161, 28,124,209,178, 94, 77, 64, 40,194,203, 60, 85,250, 29, 37,205, 47,109, 93, 71, 71,199, 15,215, -173, 91,103,191,101,203, 22,211,164, 73,147,244, 19, 38, 76,224,107,181, 90,207, 9, 19, 38,240, 39, 77,154,164,223,178,101,139, -105,221,186,117,246, 18,137,164,255,155,148,197,100, 50, 33, 58, 58,250,251,184,184, 56, 49,165,244,115, 0,159,205,159, 63,127, - 84, 92, 92,156,253,218,181,107,113,240,224, 65, 28, 60,120, 16,125,250,244,193,228,201,147, 49,111,222,188,242,182,203,161,126, -253,250,225,110,110,110,184,122,245,106, 58,165,244, 37, 33,164,145, 68, 34,113,236,211,167, 15,186,117,235, 6,157, 78, 7,163, -209,248,202,104,113,185, 92, 56, 59, 59,187,177,203, 32,131,193, 96,252,181, 38,235,117,179,197, 3,128,226, 80, 93, 68, 68, 4, - 41,239,198,104, 41,200,134, 76,173, 65,146, 92,131,228, 2,235, 31, 62,179, 90,173,229, 22, 32, 61, 61,253,248,205,155, 55, 63, - 12, 15, 15,231,165,167, 23,182,136,133,135,135, 67,163,209, 32,253,193,109,168,173,128,184, 70, 24,212,106, 53, 10,158,220,135, -164,126, 11,184, 69,140,192,138,181,107,245,121,121,121, 27, 74,211,180,179,179,227, 87,169, 82, 37, 39, 33, 33,193, 12, 32, 95, - 42,149,118, 13, 8, 8,192,149, 43, 87, 0, 96, 23, 5,150, 33,234, 50,112,245, 48,104, 97, 72, 69, 18, 24, 24,136,236,236,108, -168, 84,170, 43,165,105,222,188,121, 51,206,100, 50,213,235,221,187, 55,249,229,151, 95,246, 19, 66,230, 2,120, 56,203, 27,220, - 7, 41, 89, 80, 91, 96, 79, 8,233,226,226,226,242,249,188,121,243, 58, 77,154, 52, 9,199,142, 29,195,185,115,231,140, 40,204, - 5,187, 89, 74, 52, 71, 78, 8,217, 56,109,218,180,230, 28, 14,231,163,243,231,207,155,131,131,131, 21, 70,163,209, 82, 43, 36, -132, 51,119,193, 55,130, 79, 62, 26,239,156,167,193,227,110,181,124, 90, 18, 2, 60, 78,203,126, 25,167,164,121,229,237,211,118, - 66,222,137, 33,109,234,183,253,112, 72, 47,137,184, 70, 29,168, 31,221,246,222,120,224,212,138,246, 34, 94,207, 44,173,185,143, - 84, 42, 29,120,229,202,149, 79, 12, 6, 67,117,161, 80,248, 66, 38,147,173, 82, 42,149, 21,154, 44, 30,143, 23, 17,230, 95,197, - 69,150,159, 15,251,162, 72,148,194,100, 69,174,222,140,167,206,193, 24, 86,197,255, 85, 51,104,102,102, 38,188,189,189,137,197, - 98,233, 85,158,230,185,115,231,208,179,103,207, 98,227, 9, 66, 8, 8, 33,185, 33, 33, 33, 89, 66,161, 48, 79, 32, 16, 40,150, - 45, 91,166,211,233,116,224,241,120,246, 22,139,133,251, 54, 21,190,153,152,120,182, 21,145,159, 38,244,238,208,185, 65,157, 80, -122,237,238, 3, 82,160,209,109, 43, 39, 10,248, 99,205,154, 53,121,249,249,249,199, 1, 60, 53,153, 76,187,247,239,223,111, 63, -114,228, 72,221,129, 3, 7,134, 3, 8, 90,190,124,249, 64,149, 74,181,169, 50,229,120,254,252,249,143,139, 22, 45,250,106,246, -236,217,216,177, 99,199, 36, 0, 51,138, 34, 93,125,230,205,155,135,101,203,150, 97,199,142, 29,214,167, 79,159,158,178, 90,173, -207,167, 78,157, 90,223,203,203, 43, 55, 35, 35,227,249,130, 5, 11,202,146,109,220,189,123,119,253,141, 27, 55,236,148, 74,229, -117, 66,200,231, 19, 39, 78, 28,219,172, 89, 51,197,144, 33, 67, 36,249,249,249, 50, 7, 7, 7,187,205,155, 55,187,240,120, 60, -168,213,106, 16, 66,160, 84, 42, 13,236, 82,200, 96, 48,254, 87, 41,203,139,252, 29,120, 53,221, 78,105,247,212,210, 54, 80,163, -209,100, 37, 39, 39,135,166,165,165,153, 1,152, 1, 32,207, 96,254,110,209,230,195, 91,250, 55,175, 41,206, 48,153,112,244,110, -140, 38,207, 96,254,174, 56, 50,145,150,150,166,124,249,242,165,163, 86,171, 85,149,241, 91,191,255,244,211, 79,218,203,151, 47, - 59,198,199,199,195, 98,177,160, 81,163, 70,136,141,141, 69,193,211,104,136, 67, 27, 65,220,174, 39, 98, 34,239, 34,234,220, 5, - 36,170, 12,230,103,115, 22,201, 85,106,245, 60,131,193,112,180, 52, 65, 62,159,159, 95,184,125,212, 2, 0, 10,133,226,161, 74, -165,106,227,229,229,133,199,143, 31,139,213, 22, 76, 30, 56,115,197, 26, 74,169, 69, 80,216, 83,108,202,144, 33, 67,112,239,222, - 61, 0,184, 87,154,166, 66,161,152, 52,110,220,184,203,219,183,111,231,197,199,199,119,219,178,101, 75,183,103,207,158, 81,146, -159,108,185,161,225, 35,104,212,228, 38,235, 3, 67,206,245,236,217, 19, 62, 62, 62,216,188,121, 51, 86,173, 90,101,250,248,227, -143,227, 86,173, 90,213, 4,192,238, 50, 14,130, 28,192, 25,119,119,247, 79,234,214,173,171, 84,171,213,200,203,203, 67,122,122, - 58, 92,221,220, 56,102,112, 90,122, 56, 59,239, 62,158,169, 20,243,206,220,194,237,212,140,114,163, 89, 45, 4,188,247,135,182, -111,216,246,211,217, 51, 37,184,113, 20,100,220, 60,208, 45,223,226,179,209, 3, 29,117,250,221,237, 26,243,120, 35,229,102,243, - 78, 0, 7, 43,233,200,187,183,105,211,102,239,162, 69,139, 68,179,150, 46,194,242, 80, 63,152,243,242,144,163,183, 32, 87,111, -134,162,224, 41, 30, 63,142,129,155,155, 59, 18, 19, 19,161,211,233,240,228,201, 19,202,229,114,143, 87, 20,209, 41,241, 27,197, -205,133, 50,161, 80,152,199,231,243,179,120, 60, 94,126,124,124,188, 90,167,211,129,195,225,136, 45, 22,139,200,134,178, 86,113, -119,119,159, 10,160, 63,128, 99,202,220,220,213,225,124, 56,131,135,246,213, 61,221,222,155, 51, 97,164,123,128,175,167, 44, 62, -238,133,105,195,217,223,114,117,122,124, 87,206, 73,114,162,100, 68,146, 16,242,217,129, 3, 7,198, 2,216, 90, 52,239,214, 5, - 0,235,223,224,252,155,115,232,208,161,175,102,207,158, 13,145, 72,244,106,240, 84,145, 72,100, 15, 0,123,246,236,193,227,199, -143,155, 21,231,107, 1,216,107,131,102, 80, 88, 88, 88,252,225,195,135,237, 0,248, 78,156, 56,177,197,154, 53,107, 48,122,244, -232,156,152,152,152,230,133, 17, 88, 18,244,209, 71, 31,221,217,177, 99,135,139,213,106, 69, 65, 65, 1, 12, 6, 67, 2,187,148, - 51, 24, 12,102,182,254,146,104, 86, 56,165, 52,170,104, 96,239, 8, 0, 39, 41,165, 25,127, 48, 90,197, 27, 8, 0, 58,157,238, -199,192,192, 64, 41, 0,127, 0, 61, 1, 28,123,104,193, 65, 60, 75, 66,116, 98,234,204, 98,227,245,208,242,234, 38, 62,248,206, -157, 59,134,170, 85,171, 62, 0,240,109, 25, 55, 50,133,187,187,251,194,169, 83,167, 46, 94,184,112, 33,143,199,227,225,242,229, -203,184,121,246,164,245,201,245,219, 36, 73,107,209, 42,238, 78, 75,227, 81,203, 45, 47,109,254,163,251, 26, 28,162,148,166,150, -183, 97,106,181, 58,249,249,243,231,118,117,235,214,181,220,191,127,223,157, 82,122,228,212,169, 83,109,166, 79,159,142, 43, 87, -174,236, 62,175,179, 12,163,212,186,159, 16,194, 3, 48,172, 87,175, 94,159, 15, 28, 56, 16, 13, 26, 52, 48, 2,216, 81, 70, 57, -111, 16, 66,134,165,164,164,108,252,242,203, 47,157,191,252,242, 75,112, 56, 28, 82,114, 95,229,230,230,226,193,131, 7, 24, 50, -100,136,252,183,223,126,155,220,169, 83,167, 49,173, 91,183,198,233,211,167,125,109, 56, 24,191, 63,121,242,164,159, 84, 42, 37, -207,159, 63,135, 66,161,192,141, 27, 55,248,129,129,129, 45,247,239,223, 47,172, 94,189, 58, 98, 30, 61,194,169, 97,195, 34, 8, - 33,129,148,210,151,165,233,136,248,228,147, 81,131,122, 73,244, 55,142, 3, 81,215, 0, 0, 42,133, 18,218,196,104, 12,108, 90, -211,233,202,147,164,137, 40,236,133, 89, 41, 92, 93, 93, 63, 91,190,124,185, 56, 56, 56, 24, 95, 44, 90,138,169,179,167,227, 35, -207, 64, 40,210,146,145,107, 1,236, 28, 28,176,112,206,108,244, 26, 52, 4,158,158,158,120,244,232, 17,221,188,121,179, 90, 46, -151, 47,179,197,104,113,185, 92, 16, 66, 0, 64, 45,151,203, 85,118,118,118,114, 30,143,151,103,177, 88,178, 78,172, 93,221,136, -147,151,245, 1, 33,132, 43,178,114, 78, 20,117,182, 40, 53, 63,207,153,144,192, 26, 65, 65,143,126,222,188, 89,220,172, 89, 51, -114,247,238,221, 79, 38,142, 31, 55,182,127, 88,181, 83,125, 59,183,133,183,143,183,222,106, 52,200, 78, 29, 59, 97, 90,127,224, -212, 85, 3,177,126, 25, 73,169,182, 18, 79, 39,123, 75,154, 30, 66,200, 80, 0,131, 0, 28,166,148,238, 34,132,140, 2,208, 23, -192,161,178, 18,228, 9, 33, 28, 0,155, 6, 12, 40,156, 76, 64,171,213,106,138,223,175, 95,191,126,201,223,178, 86,230, 24, 57, - 56, 56, 56,218,219,219,191, 56,125,250,180,104,200,144, 33, 46,139, 23, 47, 78, 27, 61,122,180,223,238,221,187,127, 4,144, 72, - 8, 9, 1, 80, 67,173, 86, 91, 56, 28, 14, 66, 66, 66,176,110,221, 58,149,197, 98,217,202, 46,227, 12, 6,227,239, 96,182,254, -134,197, 14, 7, 16, 5, 32,162,168, 3,225,120, 0,229, 79, 42, 13, 96, 81,116,116,116,241, 24, 90, 19,203, 27,222, 97,198,140, - 25,145,247,238,221,139, 4,176,164,162,110,142, 60, 30,239,200,199, 31,127, 76,189,188,188, 84,158,158,158, 71,248, 92,238, 88, -127, 17,194,241, 6, 93,221, 1,180,217,185,115,103,159, 31,127,252, 49, 2, 64, 51, 0,124, 63, 63,191,244,204,204, 76,213,111, -191,253,166,106,213,170,149,202,221,221, 61, 59, 44, 44, 76,181,124,249,114,149,201,100, 82, 77,157, 58, 85,133,215,198,251, 42, - 67,219, 30,192, 39,118,118,118, 71,106,215,174, 29, 61,167,119, 71,211,210,201, 99,233,168,154, 30, 42, 0, 63, 2,248, 24,128, - 51, 0,254,192,129, 3, 47, 62,121,242,228,108, 88, 88,216, 70, 27,116,125,235,214,173,123,105,239,222,189,247, 14, 31, 62, 28, -249,229,151, 95,222,115,115,115, 75,141,139,139,179,234,116, 58, 90, 80, 80, 64,101, 50, 25, 61,121,242,164,197,213,213,117,109, - 89, 58,109,132,220, 12,122,110, 87,169, 67, 56,164,204, 30, 65, 91,217,113,210,222,164, 27,170, 88, 44,206,207,203,203,163,153, -153,153, 52, 62, 62,158, 30, 58,116,136,118,111,217,148,238,251,168, 63,221,245, 97, 31,186,172,123, 83,218,204,209, 94,237,237, - 40,185,231,232,232,152,237,236,236,188, 9, 64,205,138,134,119,208,235,245,175,134,111,168, 82,165, 74,100, 72, 72,200,225,176, -176,176, 21,199,142, 29,251,108,229,202,149,125, 58, 84, 11,252,106,113,183,150, 90,205,133, 3, 84,185,255, 71, 58,163, 81,176, - 46,140,139, 65,101, 14, 23,226,230,186,243,234,149, 43,214,226, 1, 58,205,102, 51, 61,122,228, 8, 29,252, 94,151,104,249,153, - 61, 63, 95,159, 55,105,239,212, 70,193, 71, 91,217, 99, 40, 94, 27,168,180,180, 37, 92, 2,183,182, 78,156,117, 61, 2, 92, 51, -218, 72, 57, 63, 54,119,132, 75,137, 99, 54, 56, 56, 56, 56,158, 82,154, 17, 26, 26, 26, 15, 96, 87,104,104,104,201,215, 31, 84, - 52, 56,233,252,249,243, 41, 10,103, 81,224, 0,152,187,104,209,162, 72, 74,105,100,205,154, 53,111, 80, 74,209, 64, 12,247,118, - 82,206,207,189,131,188,242,218, 73, 57, 63, 55, 16,255,121, 52,119, 74, 41, 2, 5,168,213,198,195,225,122,159,154, 62,202,246, -126,210,107,187,182,109, 89,218,163, 71,143,205, 0,214, 2,248,214,205,205,237,250,208,161, 67, 31,239,216,177,227,241,242,229, -203,141,113,113,113,116,204,152, 49,106,161, 80,248, 45,235, 58,206, 22,182,176,133, 45,127,249,200,240, 62,149, 25,176,180,215, - 87, 95,125, 21, 73, 41, 45, 30, 75,107,100, 41,235,244,158, 61,123,118, 36,165,180,120,116,248,206, 21, 13,104, 6, 96,254,186, -117,235,168, 80, 40,252,249,109, 7, 73, 3,224,221,183,111,223,230, 10,133,162,137,151,151, 87,147,162,168,147,191,187,187,123, -252,238,221,187, 85, 90,173, 86, 69, 41, 85,153,205,102,213,189,123,247, 84,237,219,183, 87,161,112, 8, 8,155, 70, 8, 47,185, -204,242,198,141,187,115, 62,164,179,188,113,227,181,239,142,216,186,117,235,233,132,132,132,227, 78, 78, 78,211,109, 28,184,210, -223,195,195, 99,174,171,171,235, 89,119,119,247, 89,174,174,174, 25, 70,163,145, 22, 20, 20,208,216,216, 88,122,229,202, 21,122, -243,230, 77,234,234,234,154, 90, 86, 57, 59,137,120,183, 10,150,126, 66,173, 91, 23, 81,195,154,153, 20, 0,149,173,156, 65,115, -127, 90, 64,239,142,235, 70,219,219,115,127,127,147, 65,231,156,157,157, 55, 29, 57,114,196,250,252,249,115,122,226,196, 9,122, -242,228, 73, 58,121,242,100, 90,203,215, 71,223,220,142,147,213, 70,200, 59,251, 38, 3,150,234,245,250, 72,133, 66, 17,169, 82, -169, 34,107,215,174, 29,217,180,105,211,195,205,155, 55, 95,113,224,192,129,207, 22, 47, 94,220,167,147,163, 48, 86,115,225, 0, -165, 95,190, 71,233, 39,173,233,139,177,237,105, 71, 17,239, 65,153,154, 94, 94,169,197,163,181,171,213,106,122,237,218, 53,122, -233,210, 37,234,237,238,174,104, 43,226,142,111, 37, 68,187, 86, 78,112,182,181,156, 29,164,156,109,183,126,250,206,162, 61,189, -131,238, 25,245,158,185,189, 51,103, 93,137,245,246, 81, 74, 51, 6, 12, 24,144, 72, 41,205, 56,116,232, 80, 10,165, 52,163,127, -255,254,137, 69,161,225,189,165,105,190, 54, 56,233,214, 34,147,245,201,252,249,243, 35, 41,165,145,243,231,207,143, 4, 10, 7, - 81,109, 39,229,108,191,189,113,153, 85,127,114, 59, 61, 48, 38,194,210, 78,202,217, 94,106, 57,157,121,199,163,182,174,164,134, -179,187,232,145,201,195, 45,173,189,157,174, 6, 7, 7, 47,251,236,179,207, 14,223,188,121,243,161,197, 98,121, 28, 31, 31,255, -120,237,218,181,143, 91,180,104,113,195,205,205, 45,218,206,206,238, 99, 54, 40, 34,211,100,154, 76,147, 13, 88,250,223, 89,120, -229, 52,157, 28, 39,132,136, 41,165, 83, 7, 14, 28,136, 37, 75,150, 12,174, 87,175,222, 80, 63, 63, 63, 15, 0, 72, 79, 79,215, - 0, 80, 12, 28, 56, 16,115,231,206,197,210,165, 75, 87, 20,229,178,252,127, 38,159,101, 18, 66,170, 76,154, 52, 41,123,241,226, -197,214, 49, 99,198,132, 82, 74, 31, 17, 66,106, 13, 31, 62,252, 19, 30,143, 55, 48, 48, 48, 48, 44, 35, 35, 35, 71,171,213,238, - 2,176,177,184,205,180,178, 8, 57,176, 52,174,234,131,179, 28, 88, 74, 52, 13,189, 55,119,238,220, 33,253,251,247, 55,174, 92, -185,210,172, 80, 40,142,217, 88,238, 20, 0,223, 20,191,118,115,115,243,126,240,224,193,199,158,158,158,156,248,248,120,232,245, -122, 60,127,254,220, 10,224,215,178, 52, 84,102,186,122,253,161,243, 33, 83, 71,244,116,210, 60,189, 15, 1,151, 11, 19,223, 14, -153,183,206, 98,235,181,167, 10,181, 17,107,222,100, 59,101, 50,217, 15,147, 39, 79, 30, 62,125,250,116,251,192,192, 64,242,251, -239,191, 99,255,254,253,250,236,236,236,238,148,210,171,111,122,172,172, 86, 43,236,236,236, 0, 0, 51,102,204, 0,135,195,225, -103,103,103,219, 17, 66,132,132, 16, 7, 66, 8,215,148,240, 24, 86, 69, 1,178, 10,100, 72,201,146,149,171,103,177, 90,247,223, -190,125,123, 74,195,134, 13, 57,119,239,222, 69, 78, 78, 14,158, 63,127, 78, 45,148,238,189,170, 49,111,170,108,249, 28, 92,221, -250, 54,112, 17,114,236,182,205, 69, 91, 3,135,187,193,138, 1, 0, 62, 41,250,120, 43, 33, 68, 0, 32,175,118,237,218, 29,158, - 60,121, 34,170, 93,187,182,246,233,211,167,167, 9, 33,126, 0,182,151,218,188, 43, 18,229, 2,200, 61,116,232, 16, 0,140,163, -148, 90, 9, 33,141,230,205,155,151,113,237,218, 53,204,159, 63, 63, 11,192, 58, 0,144,184,184,245, 14,147, 10,136,221, 47,243, -209, 66, 15,206, 26, 43, 45,181,115,129,196,211,171, 99, 93, 49, 7,252, 45, 95,163,137,119, 8,199,206,108,172,183, 96,193,130, -107, 42,149, 74,191,111,223, 62,195, 7, 31,124,192,141,139,139,187, 3,224,122, 81,179,166,153, 53, 68, 48, 24, 12,198, 95,158, -163,245,250,176, 14,165,231,104,149, 98, 8,246, 16, 66,114,151, 46, 93,218, 17,128,211,129, 3, 7, 26,215,170, 85, 11, 0, 16, - 27, 27,235, 16, 18, 18,242,172,126,253,250, 79, 0,220,162,148, 30,183,177, 60,197, 23,126,235, 59,218,190,152,233,211,167,147, - 29, 59,118,152,129, 66, 19, 84,116,115, 89, 13, 96,117,121,121, 62,111, 75,112,112,112,151,175,191,254,218,176,101,203, 22,203, -183,223,126,123,140, 82, 26,247, 38, 58,249,249,249,203, 71,142, 28, 57,124,222,188,121, 82, 71, 71, 71, 18, 29, 29,109,221,186, -117,171, 34, 63, 63,127,121, 89,223,185,109, 48,239,107, 39,228,245,151,169, 15,116, 25, 28, 94,213,241,201,164, 8,196,222,190, -142, 93, 87, 31, 43,227,242,181,231,238,154,205,251,223,208,188, 62, 39,132, 52,152, 59,119,238, 12,163,209,216,159,207,231,223, - 81, 40, 20, 11, 40,165,191,191,233,126, 50,153, 76, 89,213,171, 87,127,253,119, 76, 86,171,149, 82, 74,249,102,179, 89,236,106, -180,158,156,183,106,203, 71, 31,132, 72,133,185,185, 50,252, 18,167,208,151,232,108,241, 39,114,114,114, 86,140, 29, 59,118,244, -188,121,243, 92,156,156,156, 72, 76, 76, 12,221,183,111,159, 42, 39, 47,111,201,155,148, 81, 83,144,127,238,196,193, 3, 3, 91, - 27,204,100,103,162,146,242,184,228,116,137,178,158, 7,112,190,232,100, 26, 65, 8, 25, 0,224, 40,165,244,151,114, 53, 53,154, -115, 0,236, 6, 12, 24,128,232,232,232,193, 0,246, 0,216,251,205, 55,223, 52,159, 59,119, 46, 22, 44, 88,128,121,243,230,117, - 1,112, 86, 89,144,119,242,240,222, 93,195,218,155, 76,156,157, 73, 74, 43,151, 67, 78,149,170,153,155,117,254,244,249, 11,189, -155, 56,249,146, 77,103,175, 91, 53, 86,122,127,212,168, 81, 5, 6,131,225, 44,128, 53, 0,162, 41,165,172,119, 33,131,193, 96, -252,255, 6,126, 54,149, 98,188, 54, 85,104,180,138,190,124, 1,192, 5, 66,136,119,171, 86,173, 22, 73,165, 82,177,197, 98, 65, -126,126,126, 26,128, 85, 69,209,153,202,176, 79, 46,151,127, 41, 20, 10, 55,188,163,141,211, 17, 66, 60,107,215,174,205, 7,160, - 47,229,243,119, 99,178, 40, 14, 61,143,123,238, 4,138, 67,197,111,197,197,197,237, 13, 11, 11,235,243,244,233,211,223, 40,165, -167,222, 98, 27, 94, 18, 66, 26, 78,158, 60,249, 11, 0,125, 0,252,154,159,159,191,188,172, 68,248, 98,174,234,205, 3,155,240, -120,195,239, 39,101,126,108,176,210,106,118, 28, 78,130,218, 72,127,186, 99, 54,239,121,203,125,250, 28,192,152,162,229,173,201, -205,205,173,112,144, 79, 66, 8,185,250, 34,253,214,227,148,236,210, 58, 91,148, 86,198, 12, 66, 72,131,169, 83,167, 78,181, 90, -173,131, 56, 28,206,145,220,220,220, 10,247, 89,153,145, 60,131,101,202,134,203,119, 5,171, 44,214,206, 66, 14,231,172,202,100, -153, 89,198,239,238, 2, 96,211,232,240, 47, 94,188,248,121,193,130, 5,117,231,205,155,135,245,235,215, 23,119,187,188, 48,111, -222,188,108,139,197,226,191, 96,193, 2,108,220,184,209, 12, 0,122,147,117,218,150,107,247, 57, 27,172,214,247,248, 28,206,105, -189,201, 58,173, 84, 83,174, 51,127,178,230,240, 25,163,209,106,237,194, 5, 57,157, 97,176,206,209,235,105, 18,187,204, 49, 24, - 12,198,255, 38, 60, 91, 87,164,148,102,190,139, 27, 47,165, 52, 30,128,211,172, 89,179,222,165,147,204,254,171,119,212,215,233, -244, 71, 0, 63,126,253,253,190,146,191,123, 7,168,120, 80, 81, 91,205, 22,128, 79,139, 22,155,185,107, 54,239, 70, 25, 67, 74, -252,205,158, 6, 40,128, 3, 69,139,173,223, 73, 69,225, 92,150, 83,222,246,247,239,107,104, 6, 10,123, 17,190,203,109,138, 66, - 97, 47, 20,164,165,165,149,220,206,135, 69, 11,138,199,148,187,173,166,217, 0,134,219, 88,206,193,236,210,197, 96, 48, 24,255, - 59,148,214,116, 88,105,163,197, 96, 48, 24, 12, 6,131,193, 40,245,193,186,204,220, 96, 2,160,115, 25, 95,178, 57,177,157, 16, -210,249, 13, 10,117,129,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,191, 59,214,253,127,184,176,191,114, - 92, 9,214,245,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255,218,133,195, 2,126, 12, 6,131,193, 96, 48, 24,111, 14, 33, - 36,188,232,175, 15, 33,100,124,209, 84, 60, 0,202,200,209,226, 55, 91,148,101, 54,155, 61, 1,128,199,227,101,155,238,204,241, - 41,239, 7,248, 64, 39, 51,240,115,145,224, 56, 83, 97,119,248,215, 53,207,155,205,102,151, 34,205, 2,211,157, 57,221,202,213, -108,186,240,236, 31,214,191, 61,187, 75, 41, 91,198,229, 55, 93,152,254, 90, 89,125,109,222, 51, 69,115, 36,254,213,229,252,187, -104,254,155, 17, 52, 95,148,101, 50, 21,214, 35, 62,159,151,109,188, 93,126, 61, 18, 52, 91,152,254,135,245,111,205,246, 42, 79, -211, 65, 36,204,171,225,231,177,162, 60,205,248,244,220,169,106,141,206,173, 60,205,202,158,155,254, 62, 62,157, 44, 69,231, 38, - 23, 24,151,146,158,126,254,127,169, 46, 17, 66, 26, 3,152, 3,192,169,196,219,209,148,210,207, 89,173,100, 48, 24,127, 35,202, -156,130,167, 84,163,101, 54,155, 61, 35,143,204,131, 90, 15,116,122,127,161,103, 80,223,141,127,234,213,102,214, 21,216,201, 98, -246,133,113, 77, 10, 23, 15,158,209, 41, 61, 61,157, 20, 93, 56,127, 6, 16, 80,138,166, 75,228,145,121,208, 24,128,182, 67, 23, -184, 4, 0, 78, 57, 2,193, 23, 34,177,184,131, 86,171,173, 11, 0, 34,145, 40, 70,171, 86, 95,246, 48, 26,151,191,190,126, 89, - 91, 86,178,172, 29, 71, 46,244, 12,237,187,113,178,197,106,181, 75,187,187,161,173, 46, 55,142,199, 55,235,215,205, 2, 78,207, - 3, 44,182,236,169, 63,252,238,160,153,110,124,160,163,157,189,125, 3,103, 23,151, 54, 86, 74,107, 91,173, 86, 98, 49,155, 31, - 43,228,242,235, 86,179,249,129,217,160,118,139, 60,246,157,181,188,114,190,190, 45,131, 0,222, 17, 96,160, 88, 34,233,192,229, -243, 91, 2,128,197,100,250, 93,173, 82, 93,238, 7, 28,180,101,219,109,221, 63,111,186,254,191, 13,147,201,236,153,112,118, 30, -244, 38, 32,124,192,119,158,245,135,255,178, 27, 0, 12,217, 15,188, 84,113,199,154, 1,128,184, 70,207,219, 66,239,240, 44, 0, -224,189,204,240,140, 61, 49, 27,122, 19, 80,187,231, 2,207,138, 52, 63,152,187,223,109,250,248,254, 66, 0, 56,119,232,199, 90, -151, 14,175,127, 15, 0, 58,246,159,120,186,235,128, 73,177, 0,176,116,211, 97,183,189,223, 13, 46, 87,211,182,115, 83, 46,144, -199,157,168,105, 80,100, 56,251,139,121,222,113,113,113, 28, 0,240,245,245,181,233,220,172, 2, 72, 51,128, 79, 56, 92,110,155, - 26, 53,107,134, 3,160,241, 47, 94, 68, 89,204,230, 27, 62,192,186,119, 92,151, 38, 83,250,199,193, 89,139,230,194,100, 48, 24, -140,191, 19, 39,139,204,213,201,215, 63, 40,179,215,161, 90, 15, 92,125, 14,180,107, 94, 31,227,135,247,144,148,252,236,224,198, - 5, 1,113,119,127, 13,221,242,203,114, 78,253,250,245,145,144,144, 96, 83, 41, 52, 6,224, 74, 28, 0,217, 19,199, 2,177,248, -197,202,101,203,156,186,116,233,194,243,245,245, 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 31, 65,246,164, 64, - 99,128,242,138, 13, 67,128, 22,151,181,110,173,170,152, 51,105,176, 20, 0,102,189,191,174,241,221,103, 89,174, 47, 94,188,232, -244,213, 87, 95,229,113, 47, 95, 94,239, 14,108,203, 2, 82,108, 41,231,142,227,183,237,165, 25,123,130, 70, 76,154,116,168,102, -205,154,146,192,192, 64,226,232,232, 8, 46,151,139,130,130,130,128, 71,143, 30,189,119,231,206, 29,245,133,171, 63,219,221,187, -211, 59, 62,219,190,153,206,166,109,215,166,219,159,115,116,140, 25,217,175, 95,149,193,131, 7,219,215,168, 81, 3, 0,240,226, -197,139,224,131, 7, 15, 14, 61,116,232,208, 92,104,211,205, 26, 3,116, 21,109,251, 43, 77, 0,246, 64, 75,103, 79,207, 17, 92, - 62,191,174,217,108,246, 43,138, 54,164, 89, 76,166, 24, 89,118,246,174,215,215,103,252, 25,189, 9,120,146, 1,116,110, 19,142, -145,253, 59,139, 1,224,171, 33,139,154,191, 76,124, 46, 48, 24, 12,168, 21, 82,187,213,183,223,173, 56, 11, 14, 7, 59, 15, 95, -120,181,190, 45,154,209, 79, 18, 48,239,219,149, 72,127,120,176,185, 69,254,188,131, 82, 33,231, 2,128,147, 84,218,255,224,190, - 61,151,125,195, 6,222,122,158,107,180, 73,179,188,115,243,204,190,181, 62,169,143, 46,215,249,233,220, 86,126, 64, 64, 0, 30, - 62,124, 88,185,115, 83,254,204,209,234,227,243,120,249,151, 95,122,183,109,219, 22, 18,137, 4, 60, 30, 15,102,179,185,243,141, - 27, 55, 58,207,155, 55,111, 34,228,207,212,182,158,155, 54,176,156, 16,210,225,131,241,147,125,122,244, 25,136,254,221, 91,177, -138,200, 96, 48,254, 86, 16, 66,198, 23,245, 58,124,213,243,176,100, 47,196, 82,141, 22,143,199,203,238, 50,106,177,103,155,102, -245,112,247, 65,172, 60, 41, 57, 67, 85,252, 89,126,204,193, 90,125, 90,249,213,185,118,237, 42,244,122, 61,126,255,253,119, 60, -120,240, 0,137,137,137,152, 48, 97,130,158, 7,140, 43, 67,179,160,237,208, 5, 46,144,199, 73,130,237,158, 85,187,240,244, 41, - 87,167,211,225,218,181,107, 40, 40, 40,128,157,157, 29,170, 84,169,130,174, 93,187,242,158, 62,125,234,218,169, 75,119,105,219, -238,195, 18, 32, 13, 86,241,120,188,130,178, 54,144,199,227,101,119,122,127,161,103,157,224,170,120,145,148, 46,159,243,221, 22, -149,213, 74,121,241,137, 47,141, 87,175, 94, 69,120,120, 56,206,159, 63,239,150,159,159,255,245,186,117,235,230,240,191,255,105, -181,201,144, 55,173, 28,189,130,182, 67, 23,184,184,101, 31, 8,188,116,230,168, 32, 38, 38, 70,176, 97,195, 6,228,229,229,193, -206,206, 14,206,206,206,240,246,246, 70,173, 90,181,200,172, 89,179, 36, 61,123,198,224,211,113, 3, 3,141, 65, 99,159,149, 85, -206, 87,219,174,122,233,224,174, 56, 87,227,240,201,147,156,214,173, 91,255,225,177,189,122,245,234,232,214,173,155,253,136, 17, - 35,106, 12, 30, 58,220,218, 54,226,131, 23,144, 4,106, 42,212, 84,167,136,220, 52, 55,125, 59, 15, 29,122,108,193,130, 5,206, -222,222,222, 16,139,197, 0, 0,185, 92, 94, 37, 41, 41,169,249,220,185,115, 7,220,142,222,199,107,219, 51, 37, 29, 98,127,109, -121,251,243,223, 10,159,207,203, 46,142, 34, 57,138, 69, 5, 41,169, 89,106, 0, 48, 24, 12, 48, 24, 12,208,235,245,248,120,226, - 4,238,184, 1, 77,107, 6,182,153,124, 63, 49, 45, 43,191,246,133, 91,174,197,223,173, 72,147,167, 73,148,201,146, 47,142,155, -247,229,151,222, 94, 94,255,105, 17,220,185, 99, 7, 55, 63, 63,191,243,188,121,243,234, 80,135,246,178,218, 61, 23, 56,151,167, - 89,222,185, 41,139, 61, 89,237,219, 73,221, 26,108,252,238, 4, 44, 22, 11,110,222,188,137,107,215,174, 97,197,138, 21,244,244, -233,211,114, 39,177,184,130,115,243,153, 99,107,159,204,160,239,191, 63, 68,132, 66, 33,126,253,245, 87, 60,125,250, 20, 28, 14, - 7,245,235,215,199,200,145, 35,209,185,115,103,239,241,227, 39,208,182,221,135,196, 67, 26,162,124,155,186, 68, 8,225, 0,152, - 60,115,222,247, 62,239,143,253, 4, 75,191,157,197,140, 22,131,193,248,219, 70,179,202, 28,226,129, 82,138, 19, 39, 78,208,162, -165, 29,165, 20, 20,224, 84,239,187,113,239,129,123,214,147,213,251,110,220, 75, 1, 14, 5, 56, 78, 64,213,134, 13, 27,154,100, - 50, 25,189,115,231, 14,253,248,227,143,213,171, 87,175,190,124,242,228,201,131,102,163,113,179,175,143,207, 15, 20,224,148,154, -121, 15,112, 2, 1,169,131,131, 67, 78,114,114, 50, 61,117,234, 20,157, 63,127, 62,221,181,107, 23, 61,125,250, 52,189,112,225, - 2, 61,125,250, 52,221,187,119, 47,141,142,142,166,177,177,177, 84, 44, 22,231, 4, 2,210,114, 52,185, 20,224,214,234,187, 97, -218,161,187,166, 5, 33,125, 55, 78,161, 0,215, 5, 8,109,216,176,161,229,224,193,131,116,231,206,157,244,151, 95,126,161,209, -209,209, 52, 55, 55,151,242,132,226,156,226,239,149, 85, 78, 10,112,252,252,252,114,100, 50, 25,245,247,247,167,118,118,118,212, -203,203,139,214,170, 85,139, 54,111,222,156,190,247,222,123,116,248,240,225,244,235,175,191,166, 50,153,140,218,219,219,103, 21, -127,175, 44,205,112, 64, 36, 22,139,147, 35, 35, 35,105, 89,104,181, 90,154,155,155, 75,207,158, 61, 75,197, 98,113,114, 56, 32, - 42, 79, 83, 4, 52, 10, 11, 11,203,201,205,205,165, 70,163,145, 38, 39, 39,211, 71,143, 30,209,167, 79,159,210,228,228,100,170, -213,106, 95,105,199,198,198,210,160,160,160, 28, 17,208,168, 76,205,127,243, 82, 92, 39, 94, 91, 2,188,188,222,243,246,246,214, - 30, 58,116,136,166,165,165,209,237,219,183, 83, 14,176,232, 79,235,150,163,105, 7,116,109,221,186,181,229,230,205,155,244,254, -253,251,116,198,140, 25,180, 91,183,110,180,123,247,238,116,222,188,121, 52, 53, 53,149,166,166,166,210,247,222,123,207, 98, 7, -116,173,168,126,150,118,110, 74,129,128,158, 61,123,106,141, 70, 35,141,143,143,167,117,235,214, 77,229, 2, 35,196, 64,157,118, -128,176,162,250,233, 7,184,248,248,248,100,220,188,121,147, 30, 62,124,152, 6, 6, 6,230,112,129, 15,156,128,234, 78, 64,117, - 46,240, 65,245,234,213,115,110,222,188, 73,243,242,242,104, 64, 64, 64,134, 31,224,242,166,117, 9,133, 19,108,111,157, 57,239, -123,250, 44, 85, 77,103,206,251,158, 2, 72, 46, 26,208,245, 60,171,147,108, 97,203,191,111,249,147, 23,249,167,245, 58,140,136, -136, 32, 0,174,148,103,217,180, 92,238,226,165, 75,151,242,116, 58, 29,182,108,217,162, 28, 52, 96,192,129,118,109,218,196, 87, - 11, 12,148, 17, 14,167,194,185, 11,115,132,194,207,150, 46, 93,234,108, 48, 24,112,239,222, 61, 52,110,220, 24,222,222,222,144, - 72, 36,144, 72, 36,240,244,244, 68, 72, 72, 8,178,179,179,225,232,232,136,233,211,167, 75,115,132,194,207, 42,210,181, 90, 41, - 15, 0, 44, 86,171,157, 0, 24, 31,212,164,201,189,185,115,231,114,220,220,220,224,234,234, 10,137, 68,130,167, 79,159,194, 96, - 48,192, 65,228, 96,211, 32,173, 28, 14,135, 35,145, 72,112,233,210, 37, 76,158, 60, 25, 45, 91,182,132,179,179, 51, 28, 29, 29, - 81,183,110, 93,116,237,218, 21,227,198,141, 67,124,124, 60,136, 13, 73, 37,143,121,188, 79,198,141, 27,231, 25, 30, 30, 94,234, -231, 58,157, 14, 50,153, 12, 57, 57, 57,168, 82,165, 10, 6, 14, 28,232,249,152,199,251,164, 44, 61, 55,192,187, 74,112,240,177, - 59,119,238,184,139,197, 98,236,220,185, 19, 71,143, 30,197,153, 51,103,112,234,212, 41,156, 56,113, 2,191,254,250, 43,114,114, -114, 0, 0,193,193,193,216,191,127,191,187,196,211,243,132, 27,224,205, 30, 64,108,227,101, 86,214,185,186,153,153,238, 35,134, - 15,191,174, 82,169, 48, 98,196, 8, 44, 94,178,100, 22,223,198,209,232, 67, 0,169,171,143,207,182,239,191,255,158,147,153,153, -137,126,253,250,229, 46, 95,178,228,195,168,179,103,107, 68,158, 57, 83, 99,241,130, 5, 31,182,107,215, 46, 55, 53, 53, 21, 59, -118,236,224,120, 5, 4,108, 11, 1,164,149, 45,167, 18,152,188,106,213, 42,123,157, 78,135, 46, 93,186,196, 91, 99, 98, 66,204, -192, 30, 21,240,244, 10, 96,172,232,251, 25,192, 39,211,167, 79,247, 22, 10,133,248,226,139, 47,114, 53, 47, 95,214, 51, 3,191, -200,129, 36, 57,144,100, 6,126, 81, 38, 36,212,123,255,253,247,115,133, 66, 33, 86,174, 92,233,157,241,159, 73,183,109,141, 96, - 53, 38,132, 28, 35,132, 92, 5,144,254,193,248,201, 31,132, 55,109,129, 29,155,215,225,187, 5, 95,109, 3, 48,136, 16,178, 11, -192, 52, 86,243, 24,140,127, 39,182,120,145,255,213,230,195, 50, 91,202, 94,197,189, 78,158,164, 0,218,151, 39,228,226,230,214, -184, 94,189,122,184,118,237, 26,194,194,194,238, 56, 59, 59,155, 5, 66, 33,248,124, 62,168,181,226, 57,162, 69, 98,113,167,206, -157, 59,243,110,221,186,133,160,160, 32,136, 68, 34,240,249,252, 63, 44, 2,129, 0, 62, 62, 62, 80, 40, 20,232,212,169, 19,127, -205,154, 53,157,160,215,127, 91,225, 13, 49,238,145, 36,231,214,247,195,127,222,190,173,122,219,182,109, 33,151, 43, 96,181, 90, -225,224,224, 0,131,193, 0, 30,143, 87,216, 4,100,162, 10, 91,118,154,197, 98,177,112,185, 92, 4, 5, 5, 97,241,226,197,208, -233,116, 16, 8, 4, 0, 0,133, 66, 1,153, 76,134, 71,143, 30, 33, 41, 41,201,166,249, 20, 29,165,210, 30,131, 7, 15,182, 43, -237, 51,189, 94, 15,185, 92, 14,185, 92, 14,153, 76, 6,157, 78,135, 22, 45, 90,216,157, 60,113,162, 7,242,242, 74,157, 88, 90, -111,111, 63, 96,199,142, 29,158,118,118,118,208,106,181, 80, 42,149, 72, 73, 73,193,203,151, 47,117,217,217,217,102, 71, 71, 71, - 78, 96, 96, 32, 71, 40, 20, 10,251,246,237, 75, 20, 10, 5, 8, 33,232,217,179,167,219,238,157, 59, 7, 3, 88,193, 78,105,219, - 56, 7,232, 27, 25, 12,189,154, 53,109,122,233,206,221,187,225,159,125,246, 25,162,163,163,191,119,216,183,239,170, 6,120, 80, -222,119,227,129, 79,126, 40, 97, 96,232,203,151, 97, 70, 32,167,196, 42, 73,129, 9, 9,103,222,127,255,253,135,209,209,209,238, - 43, 87,174,244, 30,212,175,223, 39, 0, 22, 85,166,140,142, 82,105, 19, 31, 31, 31,156, 62,125, 26,201,137,137, 95,153, 1,109, -101,190,207,225,114, 91,183,109,219, 22,191,254,250, 43, 82, 95,190,252,202,252,199, 50, 22, 62, 40, 1, 57,188,248,248,175,182, -109,219,182,117,204,152, 49,224,242,120,173, 97, 54, 87,230,103,254,148,248, 62,102,194,103,216,182,105,205, 54, 0, 99, 41,165, - 86,188,163, 41,173, 24, 12,198,223,180, 13,206, 6, 47,242,119, 49, 91,197, 77,137,149,138,104,121,122,122,250, 73, 36, 18,164, -167,167,163,118,104,104,182, 80, 40,132, 29,159, 15,123, 59, 59,155, 10,161,209,104,194,124,125,125, 33,151,203,225,238,238, 14, -129, 64,240,106,177,179,179,123,245,191,163,163, 35, 56, 28, 14, 2, 2, 2,160,209,104,194, 42,212,205,122,228,185,111,205,196, -143,111, 94, 61, 93,189, 95,191,254,112,113,113,133,191,127, 21,120,122,122, 66, 36, 18,193,223,223, 31, 53,106,212,160,203,151, - 47,135,131,103,125,155, 46,228, 37,205, 19,143,199,131,197, 98, 65, 86, 86, 22,158, 61,123,134,232,232,104,220,188,121, 19,247, -239,223,135, 82,169,132, 45,243, 86,107,180,218, 6, 60, 30,175, 84,147, 37,147,201, 32,147,201, 94, 25,173,156,156, 28, 36, 37, - 37, 65,165, 86, 55, 44,199,244,246,175, 87,175, 30, 23, 0, 68, 34, 17, 26, 54,108,136,141, 27, 55,154,143, 31, 61, 58,164,206, -205,155,174,254,103,207, 58,255,188, 97,195,144,129, 3, 7, 90,110,221,186, 5,133, 66,129, 39, 79,158,192,195,195,131,103,103, -111,207,230,202,171, 36,145,128,218, 93,169,236,222,178,101,203, 4,185, 92,142,101,203,150,113,248,142,142,155, 22, 0,220,114, -191,200,229,182,106,219,182, 45,142, 29, 59,134,244,151, 47,103,188, 44,197,192,188, 4,114,146,227,227,103,108,219,182, 13, 93, -187,118, 5,225,241, 42,157,168,212,188,121,243,122, 86,171, 21, 15, 31, 62,132, 51,112,187,178,223,175, 81,179,102,120,113,228, - 87, 12, 92, 47,107, 61, 49,112, 61, 42, 42, 10, 34,145, 8,181,235,212,105, 84,201,159, 89, 78, 8,201, 24, 51,225, 51, 28, 62, -243, 27, 0, 96,219,166, 53, 89, 37, 76, 22,131,193, 96, 17,173,191,101, 68,171,216, 88,149, 92, 94, 61,200, 86, 82, 4, 0,192, -231,243, 97, 39, 20,194,206,206,174,208, 32, 9,133,149,113,124,176,183,183,127,101,172, 74, 26,172,146,255, 59, 56, 56,216,100, - 96, 0,160,224,249,153, 54, 99, 63, 28, 99, 39, 20, 10, 97, 48,232, 65, 41,133, 80,104, 15,103,103,103, 4, 5, 5, 65,161, 80, -160,101,171,118,250, 20,153,224,132, 91,237,190,209,111,178, 3,205,102, 51,212,106, 53, 10, 10, 10,144,159,159, 15,133, 66, 1, -173, 86,107,115, 87,116,171,213,202, 77, 73, 73,193,158, 61,123,144,151,151, 7,160, 48,209,186,216, 92, 21,255, 77, 72, 72,192, -206,157, 59,145,152,152, 88,169,227,211,166, 77, 27,156, 56,113,130,219,190, 83,167,205,231, 3, 3,211,207, 7, 6,166,183,239, -212,105,243,177, 99,199,184,126,126,126, 72, 74, 74,194,189,123,247, 80, 80, 80, 0, 74, 41,235, 63,255, 6,188, 0, 10, 52,249, -249, 99,102,205,154, 69, 37, 18, 9,150,253,240, 67,131, 69,192, 48, 91, 13,140,180, 28, 3, 35,125, 59, 3, 3, 74, 41,172, 86, - 43, 44, 22,203, 27,109, 27, 33,132,240,249,252,202, 14,173, 64, 42,161,255, 42,241,125,250,215,139,113,234,215,131,197, 31,197, - 49,147,197, 96, 48,254,238,148, 55,215, 33,175,132,131,124,245,183, 44,178,178,178,210,212,106,117,245,192,192, 64,164,166,166, -122, 6, 4, 4,188,180,227,243, 33,176,179, 3,225, 84,236, 9, 28, 28, 28, 30,166,167,167,183,242,243,243,131,217,108,126,101, -170, 94,111, 58, 44,142,210,220,191,127, 31, 14, 14, 14, 15,161, 43,119,228, 4, 88, 12, 5, 85, 27, 53,106,244, 42, 50,228,236, -236, 12,103,103, 41,132, 66,123,204,158, 61,219,186,114,249,242,117, 1, 29, 23,200, 71, 79,153, 69,103, 45,218,252, 78,119,174, -173, 55, 38, 7, 7,135,135,254,254,254, 45,164, 82, 41, 14, 31, 62,140,164,164, 36, 20, 20, 20, 64,163,209, 64,175,215, 67,163, -209,192, 96, 48,192,222,222, 30,117,234,212,129,147,147, 19, 46, 92,184,240, 16,122,125,233,230, 50, 47,239,240,195,135, 15, 91, - 52,109,218,244, 85, 68,165, 67,135, 14,164, 67,135, 14,238,175,162,104, 26, 13,114,115,115,113,231,206, 29, 92,184,112, 1,132, - 16,196,197,197, 89,244, 90,237, 94,118, 90,188, 25, 58,224,119,238,182,109, 91, 63,250,232,163, 15, 91,181,106, 5, 11,240, 30, -128,157,255, 45, 3, 83,204,205,155, 55, 31, 89, 44,150, 86,181,106,213,130, 12,104, 6,224,215, 74,153,200,231,207,163,204,102, -115,167, 6, 13, 26,224,240,129, 3,109, 0, 36,149,182,158, 26,104, 19, 30, 30, 14,173, 86,139, 39,143, 31, 71, 86,194,100,109, -158, 57,239,251, 15,222, 31,251, 9,118,108, 94,135,109,155,214,164,108,221,184,218, 31, 54,228,143, 49, 24,140,127, 85, 52,171, - 66, 47,242,191, 72,105, 57, 90,197,230,139, 87, 25, 33,121, 65, 65,100, 84, 84, 84,245, 70,141, 26, 97,243,230,205, 77, 91,182, -104,145, 38,176,179, 51,219, 9, 4,224,216,112, 35,209,170,213, 23, 47, 94,188,216,172,111,223,190,188, 91,183,110,193,219,219, -251,149,209, 42,254,203,227,241, 64, 41,133,131,131, 3,142, 28, 57, 98,212,170,213, 23, 43,140, 22, 89,172, 22, 78,145,209,163, -148, 66, 38,147, 65, 32, 16, 96,197,138,149, 88,187,124,249,112, 11,112, 48, 88,236,241, 37, 0,251,255,218, 13, 90,163,185,116, -234,212,169,198,115,231,206,229, 87,169, 82, 5, 50,153, 12, 5, 5, 5,200,203,203,131, 66,161,128, 66,161, 64, 65, 65, 1,100, - 50, 25,236,237,237, 17, 29, 29,109,210,105, 52,151,202,210, 19,234,116,135, 70,141, 26, 53, 61, 42, 42,202,135,199,227,193,100, - 50,193,106,181,194,106,181,194,104, 52,226,249,243,231,136,137,137,193,211,167, 79,145,159,159, 15, 62,159, 15, 46,151,139,251, -247,239, 23,136, 77,166, 3,236,148,126,115,248,192,225, 27, 55,110,124, 56,114,228, 72,248, 86,169,210, 14,169,169, 54, 25,152, -163,229, 24, 24,249, 27, 24,152, 63, 24, 32,165,242,110, 66, 66, 66,171,246,237,219,195,167, 74,149,239,235,164,166,158,127, 92, -137, 60, 45,139,217,124,253,198,141, 27,157,222,127,255,125,108,222,188,249,123,143,132,132, 51, 57,175, 53,115,122, 0, 30,213, -106,212,248,254,131, 15, 62,192,185,115,231, 96, 49,155,175,151,115,209, 41, 57,226,123,213, 15,198, 79,246,127, 45,241,125, 35, - 33,100, 18,128,101,172, 70, 49, 24,140,127,114, 68,171, 82, 77,135, 34,139,101,230,180,105,211, 76, 28, 14, 7,253,251,247,119, -252,245,216,177,129,247, 31, 60, 8,202,206,206,118,182, 88, 44, 21,106,121,232,245,171,167, 77,155, 38, 51, 24, 12, 8, 9, 9, - 65,126,126, 62, 44, 22, 11,120, 60, 30,120, 60, 30, 8, 33,224,112, 56,144, 72, 36,136,138,138,194,214,173, 91, 21, 30,122,253, -234, 10,111, 18, 22,203,195,157, 59,119,130,203,229, 82,123,123,123, 16, 66,192,227,241,176,114,229,202,236,181,192, 97, 0,224, -114, 56, 6, 0,224,112,136,173,217,187, 21,182, 91,218,217,217,193, 90,216, 9,160,194,117, 93,244,250, 85, 75,151, 46, 85, 62, -121,242, 4,106,181,250, 85,244, 77,165, 82,189, 74,174,151,201,100, 32,132, 64,173, 86,227,216,177, 99, 74, 23,189,126, 85, 89, -122,121, 64,102,106, 92, 92,239,166, 77,155,230, 37, 36, 36, 64, 46,151,227,225,195,135,184,112,225, 2,246,239,223,143,115,231, -206,225,249,243,231, 48,155,205,240,243,243, 3,165, 20, 71,143, 30,149,155,149,202,247,242,128, 76,118, 90,148, 77, 85,111,239, - 78, 94,158,158,201, 30,238,238,169, 85,189,189, 59,189,254,185, 20,136,141,141,141,133,217,108, 70, 80, 80,144,107,121,121, 90, -212,108,190,113,227,198, 13,188,255,254,251,240,175, 94,125, 73, 32,224,241,250, 58,129,128, 71, 96,141, 26, 75,138, 13, 12, 53, -155,111, 84,182,204,142,192,154, 47,191,252, 82, 43, 16, 8,176,111,223,190, 32, 83,205,154, 79,121,192, 48, 9, 16,218, 30, 16, - 84,244,125, 31, 96,221,215, 95,127,157, 73, 8,193,174, 93,187,220,165, 53,106, 60,226, 1,163,164, 64, 85, 41, 80,149, 7,140, -146,214,168,241,104,223,190,125,238,102,179, 25, 83,166, 76,201,244, 1,214,149, 35, 57,153, 82,218,139, 82,218,150, 82,234,191, -117,227,106,156,250,245, 96,177,201, 26, 75, 41,189, 67, 41, 29, 73, 41,125,196,106, 28,131,193,248, 39, 67, 74,203,131,226, 55, - 91,148, 5, 80,207,118,205,235,227,238,131,103,114,119, 23,167,179,197,159,229,199, 28,172,213, 49,204,169,254, 79, 63,253, 4, - 62,159,143,148,148, 20, 60,126,252, 24, 78, 78, 78, 24, 62,124,184, 94,171, 84,246, 46,158,235,144, 16,210,153, 82,122,161, 72, -179,112, 62, 53,121,156,164, 6, 47,186,250,153, 83, 39,184, 82,169, 20, 42,149, 10, 28, 14, 7,246,246,246,112,112,112,128, 72, - 36,194,189,123,247, 16,209,171,143, 37,199,161,237,171, 1, 75,139,231, 83, 43,169, 9, 66,184, 0,208, 12,112,136, 2,190,240, -244,245,157, 54,103,206, 28, 81,183,110,221, 32, 16, 8, 80,165,106,112,102, 80,247,101,107, 56, 28, 98, 78,205, 83,204,174, 81, -213, 87,250, 56, 46, 9, 0, 41,156, 19,177,104,174,195,210,202, 25, 96,184, 26,116,228,151,229, 78, 13, 27, 22,230,163,203,100, - 50,100,101,101, 33, 59, 59, 27, 50,153, 12,106,181, 26, 0,112,226,196, 9,156,186,246, 84,161,173, 50, 48,190,172,114,254,103, -219,159, 57,250, 26,111, 87,219,189,243, 23,174,135,135, 7,178,178,178,144,147,147, 3,153, 76, 6,173, 86, 11,139,197,130,252, -252,124,108,217,246,139, 37, 79,210, 54,177,120, 64,200,114, 53,213, 41, 34, 87,213,111,126,225,117, 2,233,135, 31,126,232,232, -228,228, 4,171,213,138,130,130, 2, 36, 39, 39, 35, 33, 33, 1,215,174, 93, 83,103,203, 12, 80,187,119, 73, 45, 30,176,180,212, -253,249,238, 66,168,127, 63,205,162,186, 4, 0,190, 62, 62,233, 47, 95,190,244,180, 88, 44,240,243,243, 51,203,242,243,151,216, - 1,231, 28,129, 12, 0, 52, 23,152,179,106,205,154, 49,125,250,244, 65,147, 38, 77, 82, 50,179,178,170,149, 86,151, 64, 8, 55, - 4,144,106,170, 84,137,185,115,231,142,119,114,114, 50,222,127,255,253,220,151, 47, 94,204,144, 22,229,107,201,129, 54,129, 53, -106, 44,217,183,111,159,123,245,234,213, 17, 22, 22,150,105,159,156, 92,247, 25, 32, 47,163,126,150,121,110,202, 98, 79, 86,155, -216,175, 94,147,143, 63,254, 24,102,179, 25,215,174, 93,195,237,219,183,241,242,229, 75,252,246,219,111, 50, 39,177,120, 72,241, - 92,135,101,213,207,247,130,213, 65,187,118,237, 36, 2,129, 0,219,182,109, 67, 84, 84, 20, 0, 32, 60, 60, 28, 31,124,240, 1, -204,102, 51, 70,140, 24, 73, 79, 62, 19,197,151, 87, 63, 9, 33,245, 0,252,128, 66,147,215,132, 82,106, 79, 8, 73, 7,224, 95, -153,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,112,174,195,133,235, 33,253,227, 52, 31,227,210, 15,110, 92,192,107,221, -166,109,232,130,249,243, 56, 77,155, 54,133,191,191, 63,194,195,195,145,156,156, 44,116,118,118,174,104, 62, 53, 85,219,238,195, - 18,234,215,175,239, 60, 99,198, 12,105,215,174, 93,249,254,254,254,160,148, 34, 42, 42, 10,135, 15, 31, 54,110,222,188, 89,161, -241,234, 37,139,188,188, 71,101,203,124,106,183, 1, 13,128,111,170,164,167,111,250,100,226,196,121, 13, 27, 53,250,112,254,252, -249, 28,137,131,136,191,120,246, 88,123, 0, 88,248,227,126,105,159,129,195,177,170, 38,208,110, 88,233,243,200,149, 44,103,114, -234,184,151, 61,250,117,170,249,197,164, 49,150,193,131, 7,139,157,156,156,224,239,239, 15, 23, 23, 23,196,199,199, 35, 53, 53, -149, 30, 63,126, 92,117,243,126, 44,255,232,185,187, 47,237,165, 62,182,204, 75,168,108,219,109, 80, 98,143, 30, 61, 92, 70,141, - 26,229,216,184,113, 99,190, 80, 40,132, 80, 40, 68, 86, 86, 22,158, 63,127,110, 60,126,252,184, 74,227,249, 94, 65,228,229,125, - 74, 27,231, 58,212,182, 29,186,224,249,245,243,243,167,196, 60,124, 56,210, 10, 52, 48, 26,141,126, 22,139,133,112, 56,156, 12, -171,213,250,208,168, 84,110,213,135,207, 95,201,230, 58,180, 13,139,197, 34,176, 88, 44,144,201,100, 56,127,254, 60,239,197,139, - 23,115, 30, 60,120, 48, 39, 61, 61, 29, 38,147, 9, 3, 6, 12, 64,120,120, 56, 46, 95,190,140,156,172,172,227,229,105, 61, 3, -228,194,212,212, 15,198,141, 27,119,122,231,206,157,156, 7, 15, 30,184,111,219,182,109, 75,105, 6,102,228,200,145,214,172,228, -228, 15,244,128,188,156,250, 89,222,185,153,123,102,223,218, 7,125,251, 15,172, 51,127,238, 28,126,203,150, 45,225,238,238,142, - 54,109,218,192,104, 52, 58,215,174, 93,187,162,115, 83,217,182,251,144,248, 6, 13, 26,136, 87,174, 92,233, 61,102,204, 24, 76, -154, 52, 9, 0,160,213,106,113,238,220, 57, 76,153, 50, 37, 51,153,215, 76, 93, 81,253, 44,138, 84, 21, 27,176,171, 0,218, 2, -136,103,137,239, 12, 6,227, 31, 25,181, 34, 36,156, 82, 26, 69, 8,241, 1, 16, 1,224, 36,165, 52,163, 76,163, 5,252,103, 62, -181,235,183, 31,161,228, 52, 31,133,248, 60, 54, 7,140,122, 49, 97,218,146, 48,174, 73,225,194, 39, 58,167,184,216, 88, 82,209, -156,135,175,230, 83,147, 6,171,220, 18,246, 54, 93,188,112,225,103,171, 86,173,234, 84, 60,132,131,131,131,195, 67,173, 90,125, -209, 67,175, 95,173,145, 6, 95,172,236,220,124,169, 64, 22,128,137, 46,145,145,107,122,246, 25,176,212,222, 53,136, 63,107,209, -102, 29,151,195, 49, 60, 79,207,193,170,154,128,216,134, 14,146, 26, 3, 16, 35,243, 49,103,185, 13,124,246,245,151, 95,126,177, -240,155,111,154, 74, 36,146,118, 70,179, 57,216,106,181, 2, 86,107,156, 70,173,190, 74,141,198, 59,250,240,185,203,237,165, 62, -212,230,121, 9,157,107, 43, 93, 19, 15, 54,221,190,117,235,228, 3, 7, 14,252,105,219,221,244,250, 53, 26,231,218, 23,108,217, -246,146,235,232,128,223,145,157,253,123,153,149, 0,108,174, 67,155,159, 62,172,214,241, 46, 46, 46, 59, 58,117,234,100,223,185, -115,103, 68, 68, 68,160,101,203,150,176, 90,173,160,148, 66,169, 84, 98,255,254,253, 88,186,116,105, 92, 53,224,155,138,244,244, -192, 69,225,169, 83,239, 53,104,208, 96, 91,121, 6,166,200,100, 85,152,147, 88,254,185, 41,140, 51, 75,123, 39, 13,253,100,113, - 77,131, 34,195,217,205,193,236, 29,243,232, 33,199,246,115, 51, 68,105,137,218,223,108, 64,191,126,159,112,121,188, 54, 69, 61, - 32,233,147,199,143, 35,139, 39,149, 70,248, 7,231, 43, 89,151,138,199,174, 99,137,239, 12, 6,227,159, 74, 56,128, 40, 0, 17, -148,210, 77, 69,201,241,101, 39,195,243,120,188,236,226,168, 15,143,199,203,142, 63, 58, 97,120,121,234,124,160, 83, 81, 36, 11, - 21,206,117, 88,244,127, 18,160,132, 94,255,237, 31, 6, 35, 45,209,187,144,255,218,250,149,217,218, 2,224, 25,204,250,158,200, -126, 12, 28,155, 88,168,215,116,225, 87, 37,183,169,204,155,236, 31,126, 87,144,175, 3,174, 67,165,186, 14,149,170,212,164, 93, - 62, 79,144, 95, 81, 57, 95,223,246,100, 64,241,182,219,206,171,228,254,225,189,197,254,252,183,145,150,155,123, 20,128,164,202, -137, 19, 94,103, 78,156, 24,252,197,212,169, 3,124,124,125,107,184,187,187,187, 56, 58, 58,114,110,221,186,149, 96,214,233,214, - 52, 4,182, 23, 69, 83, 43, 68, 15, 92, 12, 73, 78,174, 59,168, 95,191, 79, 8,143,215,186,164,129,161,102,243,111, 65,192,186, -242, 34, 89,111,122,110,250, 11,125, 58, 21, 69,178,192,181,241,220, 76, 45, 44,199, 34,152,205,139, 16, 29, 93, 74,157,175,116, - 93, 90, 72, 8, 81,130, 37,190, 51, 24,140,127, 46, 39,139,204,213,201, 63,125,242, 87,206,239, 3,160, 51,211,100,154,255, 20, -205, 66,175, 2, 39,182, 63,153, 38,211,100,154, 76,243,221,107,254, 83, 23, 30, 51,161, 12,134,109,208,194,228,116, 5,219, 19, - 12, 6,131,193, 40, 73,137,220,172,146,247,140, 77, 64, 97,234, 78,231, 50,110, 42, 23, 42,241, 3,157,223,224,166,117,129,105, - 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,138,180,255,142,189, 25, 9, 33,227,139,115,179, 94, 31, 83,139,216, 58,205, -205, 27,254, 48,235,250,202, 52,153, 38,211,100,154, 76,147,105, 50,205,127, 52,229, 69,180, 56,108,247, 48, 24, 12, 6,176, 96, - 1,225, 0,132, 0, 11, 56,192, 65, 46, 48,136, 91,248,250,205, 25, 52,136,148, 58,152,237,228, 17,174,142,108,143, 51, 24,255, - 28, 40,165, 25,101, 77, 42,205,114,180,254,187, 14, 56,192,219,219,123, 35, 0,146,153,153, 57,158, 82,154,204,246,202,255, 30, -110,110,110,157,204,102, 51,228,114,249,197,127,226,246,213,173, 73,250, 81, 14,106,255,231,138,129,228,199,113,116, 71,105,235, -214, 9, 38,239,131,252,103, 44, 46, 98,197,147,152,231,244, 72, 37,234, 60,231,189,206,254,235, 0,224,244,133,148, 79,254,138, -113,181, 8, 33,181, 60, 60, 60,206,242,120, 60,158,197, 98,153,152,149,149,117,162,108, 35, 52,136, 11, 0,124,122,121,166,187, -107,232,140,207, 63, 34,124,141,126,171, 76,175, 85,203,185,124,110,162,144,239,125, 3, 92,191,211, 5,170, 22,143, 75,251,254, -129, 3, 7,202,156,197,187, 94, 48,121, 47,180, 78,157, 94,141,194, 68,241, 63,172,110,186,170, 93,144, 59, 63, 33,229,190,228, -251, 13,242,141, 78,174, 85,123,141, 26,226,118,130,231, 64, 70,110,217,146,171, 98,103,153,237,124, 71,136,171, 17, 8,227, 11, -133,254, 22,179,217,139, 0,148,203,227,101,153,244,250, 20, 1, 16, 61,131, 82,217, 63, 93, 83, 32, 20, 86,177,152,205, 94, 0, -240,191, 88, 78,198, 31, 41,211,104, 57, 58, 58,222,227,112, 56, 85, 74, 78,134, 91, 60,159, 96,241,123, 37, 63, 35,132,192, 98, -177,164,230,231,231, 55,174,196, 5,209, 9,192, 96, 0,197, 93,212,119, 3,216, 79, 41, 85,188,225, 5,214, 73, 32, 16, 76, 19, -139,197, 29,181, 90,109, 93, 0, 16,137, 68, 49,106,181,250,146,209,104,252,225, 77,116, 9, 33, 60, 0,131, 36, 18, 73, 7, 14, -135,211,129, 82, 74, 40,165,151, 85, 42,213, 37, 0, 7, 40,165,230, 55,208, 20,121,122,122, 46, 10, 13, 13, 29, 54,115,230,204, - 60, 55, 55,183,144, 41, 83,166,220,245,240,240,216,147,155,155, 59,155, 82,170,253, 95,168, 28,132,144, 26,222,222,222,187,249, -124, 62, 55, 37, 37,165, 3, 0,248,251,251, 95, 54, 24, 12,150,236,236,236,225,148,210, 23,149,212, 19, 3,104, 46,145, 72, 26, - 75, 36,146,182, 22,139,165,118,209,252,140, 79, 84, 42,213, 53,163,209,120, 15,192, 45, 74,169,250,127,200, 12, 59,122,122,122, -238, 36,132,128, 16, 18, 76, 41, 85,254,227,158,196, 56,168,253, 56,230,105,200, 43, 51, 85, 55,180,156, 29,130,128, 82,214,181, -217,104,117,108,231,211,171,119,239, 46, 28, 0, 48,152, 78,247, 66, 37, 39,191,182,197,100,245,239,223,255,247,157, 59,119,186, -232,245,122,140, 31, 63,126,183, 84, 42, 93, 39,151,203,103,150,247, 61, 39,137,203,148,101, 43,207, 57, 20,206,127, 13, 79,171, -213,226,153,150,246, 34,248,241,163,223,187,199,196,220, 92,172,125,122,233,150,149,240, 39, 24,209,230,169, 45,229,168, 83,131, -244,236, 51,168, 95,196, 55,223,204,199,176, 33,195,170,198,196,232, 68,126, 78,241,118,249, 90,113, 77, 55, 15,207,222,223, 44, - 60, 72,110, 92, 63,218,123,231,182, 5,151, 62,252,208,189, 35, 51, 91, 54, 29, 91,178,144,199,107,238, 18, 26,218,118,200,209, -163,144,248,251,243,120, 66, 33, 7, 0,204,122,189,191, 42, 37,197,103, 95,239,222,205, 22, 16,114,101, 30,165,183,153,230,255, -191, 38,163,146, 70,139,195,225, 84, 73, 75, 75,243, 20,139,197,197, 97, 49, 88, 44, 22, 88, 44,150, 87,147, 23, 83, 74, 95,253, - 53,155,205, 8, 13, 13,181,233,137, 22, 64, 71, 0,163,219,183,111, 63,240,135, 31,126,224,135,133,133, 21, 79, 25,210,102,214, -172, 89, 63, 18, 66, 14, 1,216, 14,224,162,173, 79,188,132,144,110, 98,177,120,215,178,101,203,156,186,116,233,194,243,245,245, - 5, 33, 4,153,153,153,205, 47, 92,184,208,120,202,148, 41, 19, 9, 33, 35, 40,165,103, 43,113, 98,215,115,116,116, 60,216,175, - 95,191, 42,237,218,181,179,175, 83,167, 14, 44, 22, 11,238,223,191, 63,230,222,189,123, 67, 15, 29, 58, 52,143, 16, 50,208,214, -249,218, 8, 33, 68, 34,145,140,242,243,243, 91, 52,119,238, 92,215, 17, 35, 70,216, 61,122,244,168, 32, 40, 40,136,220,184,113, -195, 99,255,254,253, 19,151, 44, 89, 50,200,209,209,113,182, 74,165,250,133,218,144, 64,231,228,228,116,143,195,225, 84,177,197, - 8, 3,176,217, 12, 19, 66, 26, 86,171, 86,109,255,245,235,215,171, 37, 37, 37, 89,250,246,237,187, 3, 0, 46, 93,186, 20,102, - 50,153, 72,215,174, 93, 79, 19, 66, 6, 83, 74,239,219,184,237,245, 93, 93, 93,127, 29, 54,108,152,107,141, 26, 53, 28,170, 85, -171, 70,196, 98, 49,184, 92, 46,228,114,185,239,163, 71,143, 58,223,190,125, 91,123,225,194,133,124, 66, 72,111, 74,105,116, 37, -142, 83, 75, 79, 79,207,145,124, 62,191,158,217,108,246, 3, 0, 30,143,151,102, 50,153, 30,101,103,103,239,164,148,254,254,166, - 39,136,151,151,215,218, 69,139, 22,185,103,103,103,211, 37, 75,150,172, 5, 48,234,159,122, 49,216,189,231, 0,238,221,189, 13, - 0, 2, 66, 8,121,189,254, 17, 66, 72,237, 96, 8, 62,255,124, 42, 26, 55,105,134,225,195, 6, 85,168, 25,209,217,127, 25,223, - 78,224,166,211,233,126,151,107,244, 7,188,220,156, 7, 15, 27,218, 51, 14, 0, 78,159,185, 50,184, 89, 51,215,203, 82, 7,225, - 32,123,123,251,150, 38,131, 49,239,228,133,148, 47, 43, 99,170,252,252,252,206,186,184,184, 56,228,231,231,103,230,228,228,172, -239,223,191,255,194,237,219,183,187, 36, 36, 36, 32, 37, 37, 5,159,125,246,153, 36, 53, 53,245, 19,161, 80,120, 83,175,215,151, - 25,217, 82, 42,243, 87,207,154,209,103,174, 84,234,206, 21, 59, 56,193, 81,234,138,160, 26, 13,208,188,101, 47,188, 23,241, 33, -158,199, 69, 53,223,190,237,155,168,180,180, 11,223, 73, 92,171, 47,148,201,170,149,121, 93,170, 27, 66,218, 21,155,172,185,115, -231, 35,246,233, 83,101, 82, 34,231,211,147, 71,121, 14,239,117, 10, 21,154, 13,153, 73, 55,174, 31,173,214,186, 77, 95, 0,104, -188,115,219,130, 75,147, 71,184,118, 90,179, 43, 95,201,110, 73,101, 95, 59,191,225,243, 71,117, 91,185,210, 51,124,226, 68,129, - 42, 49,209, 24,191, 97,131, 38,235,218, 53, 11, 79, 40,164,254,221,187, 19,143, 14, 29,236, 39, 62,121, 34,248,109,201,146,182, -139,237,236,130,102, 25, 12,187,152,230,255,159, 38,171,163,175,146,225, 95,229,106, 21, 55, 31,242,202,249, 18,196, 98, 49,246, -237,219, 7, 62,159, 15, 30,143, 7, 62,159, 95,230,255, 1, 1, 1,182, 20,164,191,183,183,247,143,235,214,173,243,234,214,173, - 27,236,237,237, 95,125,198,229,114,209,165, 75, 23,116,238,220,153,159,158,158, 62,116,223,190,125, 67, 23, 47, 94,156, 69, 8, -153, 68, 41, 61, 92,129,110,135,144,144,144,195,231,206,157, 19,233,116, 58, 92,187,118, 13, 5, 5, 5,176,179,179, 67,149, 42, - 85,208,181,107, 87,222,211,167, 79, 93,187,116,233,114,152, 16,210,147, 82,122,217,134,178, 54,246,244,244,188,122,224,192, 1, -251, 6, 13, 26,144,231,207,159, 35, 60, 60, 28, 0, 32,151,203,209,183,111, 95,251, 17, 35, 70,212, 24, 58,116,232, 45, 66, 72, - 59, 74,233,189, 10,244, 26,121,123,123,255,210,175, 95, 63,223,197,139, 23, 59, 57, 58, 58, 34, 41, 41, 41,195,219,219, 59,184, -120,127, 15, 29, 58,212,174, 87,175, 94, 62, 75,151, 46, 93,125,240,224,193, 47, 9, 33,163, 40,165,145,229,233, 22, 27, 98, 7, - 7, 7,100,101,101, 97,247,238,221,248,228,147, 79,192,229,114,145,157,157,141,253,251,247,227,211, 79, 63, 45, 54, 52, 54,153, - 97,177, 88,220,185, 65,131, 6, 91, 46, 93,186, 84,197,217,217, 25,190,190,190,156,175,191,254,186, 94, 80, 80,144,168,106,213, -170,220,140,140, 12, 28, 62,124, 56,104,228,200,145,191,218,219,219,143,209,233,116, 21, 54,169,121,121,121,109, 61,121,242,100, - 64, 76, 76, 12, 54,108,216,128,252,252,124,216,217,217,193,217,217, 25,222,222,222, 8, 14, 14, 38, 51,102,204,112,232,213,171, -151,195,164, 73,147,182, 2,104,104,195, 49,106,224,233,233,185,113,232,208,161, 65, 11, 22, 44,112,246,246,246, 70,241,131,129, - 92, 46,175,146,148,148,212,124,238,220,185, 3,189,188,188, 18,178,179,179, 39, 80, 74, 31, 84,242,196,105,216,169, 83,167,158, -125,251,246,229,102,100,100, 96,231,206,157, 61, 9, 33, 13,109, 53,151,127, 55,238,221,189,141,241, 31,127,166,242,245,247, 23, -156, 59,187,165,191, 76, 86,231,174,179,168,112, 66,106,153, 22,198,142,237,184, 77,186,118,251, 80,208, 35,162,175,106,211, 79, -171, 37,182, 24, 45,190,157,192,109,247,174, 21,201,215,111,220,171,119,254,194,237,238,253,123,247,166, 2,129,115, 16, 0,124, - 57,229,115,254,225, 99,199,182,117,233,220, 44,189, 77,235,198,201,195, 71, 76, 13,168,196,177,169, 85,171, 86,173, 43, 81, 81, - 81, 94, 66,161, 16,249,249,249,110,155, 54,109, 90,209,186,117,107, 78,124,124, 60,158, 62,125,138,196,196, 68,200,229,114,116, -233,210, 69, 18, 25, 25,185, 30, 64,153, 70,203,200,233,184,200,183,170,105,141,155, 72, 92,205,104, 81,120, 82, 83, 70,157,243, - 39,207,215,223,187, 83, 27,238,229, 19, 26, 60,250,131,121,248,102,225, 33,254,158,221,223,207,189,120, 97, 47,192,169, 86,246, -140, 0, 20, 45,103,205,158, 9,133, 82,143, 17,195,198, 97,228,176,113,110, 20, 6, 31,106,209,137, 13,218, 2,103, 71,193,147, - 19,235, 54,175,232, 7,160, 74, 9,179,117,145,153,173,178,249,134,199,107,214,243,199, 31, 61,234,141, 29, 43,124,176, 96,129, - 58,247,218, 53,109,205, 30, 61, 10,194, 63,250, 72, 15, 0,202,196, 68, 65,236,188,121, 14, 30,109,219,138, 90, 76,155,230, 98, - 49, 24,188,191, 37,164,233,215,148,222,169,172,102,192,224,193,150,185,219,182, 53,185, 54,117,106,123, 98, 50,113,187,183,104, -113,127,201,206,157,105,111,163,249, 46,203,153,126,245,170, 62, 63, 40, 8,225,125,251,230, 5,120,122,234,223,229,182,191, 77, - 57, 25, 40, 14, 74,101, 0, 40, 30, 25,190,240,122, 69, 41,197,201,147, 39,219, 1,184, 2, 96, 65, 68, 68,196,124, 0,112,118, -118,206,146,201,100,158,135, 15, 31,174,208,100,241,249,124,248,248,248, 32, 56, 56, 56, 59, 43, 43,203,171,156,139, 99,138,213, -106,173, 66, 41,125, 21,125, 41, 11,189, 94,143,184,184, 56,212,175, 95, 63,149, 82,234, 95, 94,211,142,131,131, 67,252,211,167, - 79,221, 31, 63,126,140,123,247,238, 33, 40, 40, 8, 46, 46, 46,224,243,249, 48,153, 76, 80, 40, 20, 8, 9, 9,129, 80, 40, 68, -163, 70,141,114,213,106,117, 80,121, 77, 64,132, 16,161, 88, 44,142,187,122,245,170,127,120,120, 56,238,220,185, 3,127,127,127, -120,123,123, 3, 0, 18, 19, 19,113,227,198, 13,244,232,209, 3, 81, 81, 81, 24, 48, 96, 64,138, 90,173, 14,166,148,234,203,210, -116,115,115,203,184,116,233, 82,106, 88, 88,152, 78,173, 86,115,178,178,178,248,215,174, 93, 51, 43,149, 74,137, 92, 46,231,203, -100, 50,190, 66,161,224,169,213,106, 62,135,195, 17,104,181, 90,254,197,139, 23,185, 6,131,193,169,188,253, 84,124,156,142, 29, - 59,134,176,176, 48, 28, 62,124, 24, 95,124,241, 5,126,251,237, 55,248,251,251,227,192,129, 3,152, 54,109, 26,158, 61,123, 6, -119,119,119,212,169, 83,167,220, 99, 4, 0, 53,107,214,124,254,240,225,195, 26, 2,129,160,120, 94,199,226,249,242,144,147,147, -131, 23, 47, 94, 32, 45, 45, 13, 53,107,214,196,176, 97,195, 94,164,166,166,214,172,168,242, 85,169, 82, 37, 39, 38, 38,198,189, -126,253,250,200,202,202,130,179,179, 51,164, 82, 41,156,157,157, 95,253, 31, 20, 20,132,169, 83,167,194,219,219, 59, 91,171,213, -122, 85,100,130,194,194,194,206, 94,188,120,209,221,201,201, 9,153,153,153, 80, 40, 20,224,241,120,112,112,112,128,187,187,251, - 43, 35, 31, 23, 23,135,136,136,136,220,248,248,248,110,149,136,192,113,188,188,188,158, 70, 71, 71, 7, 83, 74,145,156,156,140, -103,207,158,225,227,143, 63,142,211,233,116,161,255,164, 57,251, 74,228, 93, 9, 70,125, 48, 94,208,175, 79, 75,195,147,152, 19, - 68,104,125,134,134,245,156,228, 0,112,255,145, 66,170,231,132,160,118,221,158,244,200,175,191,219,253,178,125, 19, 31, 86,120, -129,224,217,227, 88,250,109, 89,218,221, 58,250,142,253,252,243, 49,245,218,183,110,199, 81,170,213,158,235,215,175,108, 20, 31, -255,196, 19, 0,130,130,106,103, 79,156, 56, 37,210, 81, 44,206,190,114,227,170,117,213,170,173,143,206, 94, 74,223,108,195,177, - 9, 10, 14, 14,190,121,236,216, 49,119, 79, 79, 79, 72,165, 82,168,213,106, 24,141, 70, 60,126,252, 88,183,111,223, 62,147,147, -147,147, 99,102,102, 38,100, 50, 25, 8, 33, 56,118,236, 88, 50,165, 52,240,117,173,226, 28, 45, 0,248,248,189,218,252, 58, 29, -131, 93, 4, 66,179, 72,196,143,245, 1,177, 8, 9,149,120,157, 62,123,191,254,233,243,119,134,247,235,255,133, 71,155,118,253, - 48,119,206, 64, 83,122,122,114,184, 17,109,158,150,150,163, 85, 59,152,116,236, 59,160,223,160,111,190,153,143,249,115, 23,224, -196,177,163,114,137,152,163,119,114,230, 75,219, 54,111,165,155,250, 73,159, 20,149, 42,221,255,155,165,251,134, 69,244,153, 90, -165,117,155,190,184,113,253, 40,118,110, 91,112,143,136, 40,107, 70,124,141, 5,132,184, 56, 7, 5, 77,152, 28, 23, 39,120, 48, -127,190,202,156,158, 94,208,120,202,148,220,210,214, 77, 61,127, 94,108,231,235,235,228,210,187,183,235,234,192, 64,106,202,206, -222, 88, 90,142, 81,105,154, 23, 36, 18,231,189,167, 79,119,162,124,126,187,233, 95,125, 37,234,217,179, 39, 20, 10, 5, 14, 29, - 58,132,141, 27, 54,232,125,124,124, 30,250, 62,122, 20, 85, 79,161,152, 99,171,102,227, 41, 83,114, 45, 22, 11, 25, 52,109, 90, -151,152,196,196,142,153,217,217, 85, 1,192,199,213, 53,165,113, 80,208,189,173, 39, 78, 60, 91, 91,173,154,213,214,114,254,124, -230,140,215,193,164,164,177,174,174,174,162,172,236,108,158,208,206, 46,175,121,157, 58, 7,126,154, 61,251,138, 57, 58, 90, 96, - 95,165,138,147,180,103,207, 74,111,123,227, 41, 83,114,243,149, 74,222,228,133, 11, 91,189,204,202,170,170,210,235,107,202,148, - 74,111,139,201,196,113,114,112,200,171, 30, 18,146,173,189,118, 45,163,186, 70,243,217,207,148,102,255, 85,199,186, 52, 47,242, - 55,138,104,189,222,235,240, 79,115, 29, 94,137,136,136, 32,165, 56, 51,155,162, 89,124, 62,255, 15,205, 84,229, 32, 32,132, 32, - 50, 50, 18,110,110,110,240,246,246,134, 80,248,199,201, 7,115,114,114,240,219,111,191,225,201,147, 39,104,208,160, 1,128,194, - 39,234,178, 16, 10,133,159, 47, 93,186,212,217, 96, 48,224,222,189,123,104,220,184, 49,132, 66, 33, 4, 2,193, 31, 76, 96,118, -118, 54,234,214,173,139,233,211,167, 75, 23, 47, 94,252, 57,202,153,163,142,199,227, 77, 26, 55,110,156,103,113, 4, 43, 37, 37, - 5,141, 26, 53,122,245,185,135,135, 7,238,223,191,143,198,141, 27,163, 74,149, 42, 24, 56,112,160,231,206,157, 59, 39, 1,248, -161, 44, 77, 59, 59, 59, 78, 88, 88, 88,147,162,136, 17, 56, 28, 78,172,147,147,147,135,151,151,151,216,201,201,233, 79,219,184, -109,219, 54, 25,135,195, 49, 85,180, 67, 57, 28, 14, 50, 51, 51, 81,175, 94, 61,200,229,114, 0,128, 90,173, 70,205,154, 53,161, - 80, 40, 94,153, 86, 95, 95, 95,104,181,229,167,126, 53,104,208, 96,126,104,104,104,215,246,237,219, 11,249,124, 62, 30, 60,120, -128,240,240,112,236,219,183, 15, 1, 1, 1,112,112,112, 64, 92, 92, 28,194,194,194,112,245,234, 85,120,120,120,160,110,221,186, -194, 70,141, 26, 93,207,207,207,191,156,148,148, 52,191,156,114,114, 36, 18, 9,174, 94,189,138,173, 91,183, 34, 49, 49, 17,233, -233,233,112,116,116, 68,195,134, 13, 81,167, 78, 29,180,108,217, 18,113,113,113, 32, 21, 84, 38, 66,136,119,112,112,240,137, 59, -119,238,184, 83, 74,177,115,231, 78,168, 84, 42, 24, 12, 6,112, 56, 28,216,219,219,195,197,197, 5, 29, 59,118,132,135,135, 7, -130,131,131,177,127,255,126,247,247,222,123,239, 84, 81, 68, 42,179,162,253,234,226,226,242,217,188,121,243,252, 61, 61, 61,145, -148,148, 4,185, 92, 14, 47, 47, 47,180,111,223,222,239,194,133, 11,159, 1, 88,249, 79,185,145, 21, 39,190, 19, 66,200,185,179, - 91,250, 7, 87, 47, 8,107, 16,226,224,127,248,132,151,255,190, 19,217,117, 1,160, 94,109,175,152,254, 61, 29, 82, 30,196,156, - 72, 57,119,246,232,189, 39,177, 56,108, 75,211,182, 92,163, 63,112,254,194,237,238,225, 13, 26, 89,151,126, 63, 45,226,147,143, -199, 10, 61,189, 62, 68, 86,242, 81, 92,184, 20, 25, 48,237,139,113, 30, 63, 44,255,249,244,249, 11,183, 57,114,141,126,142, 45, -229,173, 85, 43, 96,237,246,159, 90,186, 43,115, 15,226,249, 83, 59,136, 28,235, 33, 40,168, 22, 20, 10, 5,236,237,237,237,135, - 13, 27,102,153, 57,115,166,198,201,201,201,129, 16,130,203,151, 47,103, 3,232, 86,145,174,206,211,133, 90,140, 38, 51,181,227, - 90, 41,113,212, 18, 75,190,221,163,199, 9,232,218,185, 67, 86,235,102,245, 22,207,252,102,249,172,224, 90,225, 30, 99,198, 46, -224, 47,156, 63,124, 3, 8,218,148,166,243, 36,142, 94,170, 83,131,136, 0, 68,124,243,237,124,196,199,199,185,140, 31, 45, 91, -192, 19,138,124, 67, 3, 91, 57,110,216,122,185,123,205,154,213,170, 78,157, 52,240,228,138, 31, 87, 68,148,140,108,109,223, 54, -239, 87, 66, 72, 39,250, 87,142,187,243,247,163,254,200, 19, 39,160, 74, 78, 54,229, 95,191,174,235,244,227,143,185,254,221,186, -173, 52, 24,141,238,197,151, 10, 14, 33, 32,197,169, 19, 86, 43,225, 77,159,206,161, 60, 30, 76, 46, 46,163,103, 0,181, 42,210, -252, 34, 35,163,255,240,177, 99, 35,126, 61,115, 6,213,170, 85,123,117, 63,115,118,118,198,180,105,211, 48,101,202, 20,225,253, -251,247,155, 30, 60,120,176,233, 15,203,150,121,205, 0,250,219, 82,206,115,183,110,185,124,244,205, 55,179, 27, 52,110, 28,176, - 99,247,110, 97,141, 26, 53, 0, 0, 47, 94,188, 8,254,126,201,146,192,122, 97, 97, 89,139, 63,255,124,123,204,204,153,117, 1, - 92, 47, 79, 51,243,218, 53,195,193,164,164,177,151, 46, 95,118,174, 87,175, 30, 0,224,217,179,103,158,171, 87,175, 30, 87,119, -224,192, 17,223, 76,156, 56,167,167, 78, 39,115,202,201, 17,246, 92,187,150,183,119,208,160, 10, 53,139,203, 9, 0,237,199,140, -249,188, 77,135, 14,117,250,143, 29,235, 26, 16, 16, 64, 36, 18, 9,140, 70, 35,210,211,211, 93, 98, 98, 98,106,156, 80, 42, 21, - 71,110,221,218,249,115,209,100,241,127, 17,165,122,145,191, 83, 36,171, 84, 79, 81,244,183,253,201,147, 39, 41,128,246, 17, 17, - 17, 87,139,111,224, 22,139,197, 38,147,197,227,241, 80,148, 44,108,107,129,144,155,155,139,220,220,220, 87, 77, 71,217,217,217, -184,116,233, 18,226,226,226,192,231,243, 33, 16, 8, 96, 52, 86, 60, 7,173, 88, 44,238,220,185,115,103,222,173, 91,183, 16, 20, - 20, 4,145, 72,244,170, 92,197,139, 64, 32,128,143,143, 15, 20, 10, 5, 58,117,234,196, 95,179,102, 77,231,242,140,150, 84, 42, -237, 49,120,240, 96,187,226,215, 42,149, 10, 92, 46,247,149,105, 81,169, 84,200,207,207,135, 76, 38,131, 78,167, 67,139, 22, 45, -236, 78,156, 56,209,163, 60,163, 85, 18,141, 70,163,202,206,206,118,110,211,166,141,203,246,237,219,159,181,104,209, 34,228, 15, - 53,237,202, 21,157, 78,167,227,115, 56, 28,155,230,209,219,181,107,215,171,125,159,150,150,134, 13, 27, 54,188,250, 44, 46, 46, - 14,107,214,172,121, 53, 21, 64,121,199, 40, 52, 52,244,189,157, 59,119, 54,222,177, 99, 71, 1,151,203,197,179,103,207,176,123, -247,110, 80, 74,225,225,225, 1,141, 70,131,172,172, 44, 92,190,124, 25,102,179, 25, 18,137, 4,126,126,126,246,147, 38, 77,106, -189, 96,193, 2, 62,128, 50,141,150,197, 98,177,112,185, 92, 4, 6, 6, 98,238,220,185,208,233,116, 16, 8, 10,253,165, 66,161, -128, 76, 38, 67, 84, 84, 20,146,146,146, 80,209, 77,198,222,222,126,224,142, 29, 59, 60,237,236,236,160,213,106,161, 84, 42,145, -146,146,130,151, 47, 95,234,178,179,179,205,142,142,142,156,192,192, 64,142, 80, 40, 20,246,237,219,151, 20, 27,206,158, 61,123, -186,237,220,185,115, 72, 69, 38,137, 16,226, 81,187,118,237, 89,227,198,141,179, 47, 89,103, 51, 51, 51,209,191,127,127,135,223, -127,255,125, 38, 33,100, 55,165, 52,231, 31, 22,242,166, 50, 89,157,187,247, 46, 60, 11, 59,124,194,203,255,101,170,165,213,180, - 47,151,243, 0, 96,211,198,239, 90, 29, 62,145,246, 91,104,181,172,148,131, 71,106,221,117,118,126, 76, 43,138, 8,118,108,231, -211,203,203,205,121,112,255,222,189,233,250,245, 43, 27,125,242,241, 88, 97, 96,173,105, 0, 0, 63,190, 39, 58,153,191, 37, 26, -237, 11,251,245,235, 87, 54,234,223,123, 64, 84, 98, 98,210,198, 78,237,125,247, 95,186,154,113,188,188,136,161,167,155,189,159, -131, 80, 13,191,160, 58, 8,169, 45,198,253, 7,207,112,232,192, 77,212,174,219, 28,122,189, 30,102,179, 89,220,171, 87, 47,205, -190,125,251,116,177,177,177, 74,173, 86,219,142, 82, 26, 91,209,246,167,166, 62,182,134,120, 55, 55, 10, 68, 66,179, 82, 46,208, -204,152,115,112, 80,163,102, 93, 27,187,248,248,241, 61,196,214,227,239,117,105,186,123,235,230,185, 83,230,204,219,141, 38, 77, -187,182,120,242,236,122, 29, 0, 15, 75, 53,175, 47,232,137,122,193,196, 28,255,252,121,196,203,164,164,212, 90, 94,222,134, 23, - 50,106,250,108,198,207, 93,218,180, 27, 88,191, 70,237,182,118, 79, 30, 95, 37,115,167, 15,217,243,205,210, 21,195,138,205,214, -197,243,123,218,141, 30,125,211, 14,128,158,249,171,162,167,115,161,176,138, 36, 48,144,151,184,125,187, 54,168, 87,175, 2, 0, - 48, 24,141,238,137, 73, 73, 82, 7, 7, 7, 80, 74, 97, 50,153,254,144, 67, 92,156, 55, 92, 47, 36,196,203, 22,205,196,175,191, -174, 63,125,250,116,100,102,102,194,108, 54,131,207,231,191,126,205,134, 90,173,198,232,209,163,177,118,217,178,230,182,104, 90, - 44, 22,242,209, 55,223,204,254,106,246,236, 26, 19, 38, 76,224,148,188,246,186,186,186,226,224,161, 67,118,235,214,173,171, 50, -107,237,218,209,195,133,194,248,138, 52,115,107,214,132,107, 86,150,168,216,100, 1, 64, 72, 72, 8, 54,108,216, 32,252,240,195, - 15,237,122,245,234,181,252,126,131, 6,171, 87,182,110,253,220,173, 86, 45, 39, 59,161,176,138,173,251, 19, 0,148, 58, 93,189, -149,171, 87,187,220,190,125, 27, 89, 89, 89,200,204,204, 44, 62,151,209,164, 73, 19, 50,114,228, 72,105,117,127,255,166,127,241, -225,254,147, 23,249, 27, 69,180,198,151,114, 77,253, 79,142, 86,209, 6,145,162, 13, 36, 37,110,142,127, 48, 44, 21, 25,173, 55, - 65, 38,147, 65, 38,147, 97,243,230,205, 16, 8, 4,175,110,190, 0, 96, 48, 24,108, 49, 45, 97,190,190,190,144,203,229,168, 85, -171,214, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0, 66,161, 16,122,189, 30, 1, 1, 1,208,104, 52, 97,229,105,106,181,218, -134,174,174,174,175,110,176,122,189,254,149,201, 42, 46,175,193, 96, 64, 65, 65, 1, 84, 42, 21,148, 74, 37,212,106,117,184, 45, -219,107,181, 90,241,232,209,163, 23, 33, 33, 33, 13,185, 92, 46, 36, 18,137, 88,173, 86,191,202, 45,202,207,207,199, 47,191,252, -162,126,255,253,247,221,143, 29, 59,166,177,225,224,226,211, 79, 63,133, 80, 40,132, 70,163,193,250,245,235, 49,121,242,100, 8, - 4, 2, 40,149, 74,108,216,176, 1, 83,167, 78, 5,143,199,131,193, 96,192,234,213,171,203,142,108, 60,126,156,120,235,214,173, -240, 70,141, 26,185, 28, 57,114, 36,167, 75,151, 46, 30,221,186,117,131, 72, 36,130, 86,171,133,201,100, 66,243,230,205, 17, 26, - 26,138,236,236,108,156, 62,125, 58, 55, 56, 56,216,253,246,237,219,214,204,204,204,151, 21,221,196, 75, 68, 12, 97,177, 88,144, -149,149, 5,153, 76,134,156,156, 28,164,167,167, 35, 53, 53, 21, 60, 30, 15, 21, 61,204,187,185,185, 13,168, 87,175, 30, 23, 0, - 68, 34, 17, 26, 54,108,136,217,179,103,155,181, 90,237, 96, 0,167,139, 86,123,239,231,159,127, 62,114,227,198, 13,158,175,175, - 47,158, 62,125, 10, 15, 15, 15,222,255,177,119,213,225, 81, 28,255,251,157,221,243,139,187, 39, 4, 73, 2, 73,112,105,113,183, - 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42,120,145,226,208, 22,119, 39, 56, 37,184,107, 18, 32, 16, 36, 33,238,122,190, -183,243,251, 35,242, 13,105,228, 18,168,241,219,247,121,238,185,219,189,221,119,199,118,230,157,207,204,124, 70, 46,151,151, 43, -180,156,157,157,127, 63,122,244,168,109,129,184, 46, 72,103,149, 42, 47, 59,122,247,238,109,187,117,235,214,223, 1,116,125,223, - 26, 53,107, 5, 36,245, 2, 45, 51,119, 31, 75, 10,152,252,205, 82, 81,205,192,188,206,235,200, 81, 16, 45, 89, 60, 41, 96,112, - 15,203, 96,107, 69,150,164, 60,158, 46,237, 61, 86,127,244, 81, 7,102,208,192,110, 79, 37, 18,235,106,235, 55,124,231,232,232, - 52,188,136,137,211, 18,118,246,150,168,230, 37, 37,251,130, 31, 57, 78,155,254,189,118,251,214,159,159,239,220,117,172,179, 84, -124,166, 35,128, 49,165,113, 71, 68,102, 28, 81,105,229,181,178, 82, 31, 16, 91,167,102,168, 87,215, 15,142, 14,233,216,248,251, -110,120, 87,109, 4,173, 86, 11, 75, 75, 75,165,209,104,212,179, 44,187,221, 20,145, 5, 0,231,206,101,240, 1, 1, 25, 58, 54, -155,231,190,248,106, 73,175, 14, 93, 62,242,111,219,182, 61,127,250,204,105,125,179,250,250,248, 46,157,234, 37,158, 60,179,250, -105,124,220, 11,159,128,218,205, 17, 30,118,190, 51, 64, 66,129,146, 11,108,232, 83,122,178,122,117,114,126,247,238,145,188,154, -191,171,248,225,199,135, 93,130,130,134, 4,182,108,209,146, 63,115,246, 15,157, 20, 41,143, 44,155, 55,141,253,226,243, 46, 7, -127,221,190,162,227,201, 19,191,215,200,204,138, 58,246,251,239, 84, 16, 89, 69, 59,105, 28,231, 36,146,201,152,228,243,231,185, -218,195,135,107, 11,222, 71,165, 82,137,195,135, 15, 67, 42,149, 22,126, 36, 18, 73,225,111, 39, 39,167,130,197, 87, 38,113, 2, - 64,124,124, 60, 18, 18, 18, 96,101,101, 5, 7, 7, 7, 36, 36, 36,224,234,213,171,136,136,136,128, 88, 44, 70,231,206,157,193, -148, 50,183,185, 56,103,191,201,147, 59,212,170, 93,219,179,184,200, 2, 0,189, 94,143,180,180, 52,244,232,209,131, 57,113,226, -132,243,201,232,232,143,102, 1,219,203,226,172, 31, 20,148,154,184,111, 95,137,207,110,208,160, 1,185,114,229,138,172,115,167, - 78, 19, 39,253,248,227,234, 95,182,110,125,109,228, 56,231,138,196,157, 97, 24,134, 16, 2, 15, 15, 15,164,165,165, 33, 39, 39, -111, 4,219,220,220, 28, 54, 54, 54, 48, 24, 12,224, 41, 21,255,149,121, 93,154, 22,249,143,116, 84, 55, 20, 8,174,226,158,225, - 69,249,227,162, 5, 21, 69,235,162, 13, 11,207,243, 38,137, 44,177, 88, 92,238,156, 43, 83,172, 92,197, 97,138,208, 42, 8,171, - 92, 46, 47,124,209,138, 10,172,130,112, 50, 12, 3,150,101, 97,138, 69,158,231,121, 54, 59, 59, 27,251,247,239, 71,171, 86,173, - 10,135,165, 50, 51, 51,145,145,145,129,204,204, 76,104, 52, 26,188,124,249, 18,231,206,157, 67,141, 26, 53, 0, 19,157,191, 62, -127,254,252,182,183,183,119,195,130, 70,188, 77,155, 54,238,155, 55,111,142,235,218,181,171, 43,165, 20, 51,103,206, 76,249,224, -131, 15,236,139, 54,242,229,129,101, 89, 92,189,122, 21, 53,106,212, 0,165, 20, 18,137, 4, 79,158, 60,129,163,163, 35,120,158, -135, 72, 36, 66,114,114, 50, 44, 44,202,246,145, 24, 26, 26, 58,236,179,207, 62,139,179,178,178,170,147,154,154, 26, 47,147,201, - 90, 92,188,120,209, 67,175,215,195,210,210, 18,150,150,150, 56,126,252, 56,172,173,173, 49, 97,194,132,104,181, 90,125,213,204, -204,204, 73,173, 86, 63, 72, 72, 72,152, 89,145,252,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,209,104, -202, 13, 99, 73,104,209,162, 5,142, 29, 59,198,206,159, 63,255,215,231,207,243, 58,134,213,170, 85,195,132, 9, 19, 88, 55, 55, - 55,188,124,249, 18,183,111,223,134, 94,175, 7,165,180,204,151, 87, 44, 22,183,153, 52,105, 82,115, 79, 79, 79,162,215,235,193, -243, 60,180, 90, 45, 10,126, 71, 71, 71,163, 86,173, 90,140,151,151,215,135,132,144, 54,166, 44,172, 16,144,135,196,232, 67,112, - 19, 59, 2,140, 37,168,250, 16, 82, 83, 42,183,109,100, 82, 82,210,143, 83,102, 93, 25,254,203, 34,189, 83, 76, 60,224, 23,216, - 19, 62,254,237, 48,236, 19, 14,243, 23,239,135,167,151, 31,162,162,162,208,166, 77, 27, 73, 92, 92,220,103, 0, 38,155,202,125, -230,204,117,227,233,227, 39,250,246, 27, 48,164, 97,251,246, 93,185, 83,167,142, 35,244,193,169,176,207, 6,244, 73,162,124, 14, -177,181, 86,220,125,242,248,150, 79,157,122,173,161,227,140, 45,128,185,139, 0,148, 90,169, 68, 70, 82,221,119,223,125,199, 4, - 31,250,253,147, 65,131,135,214,109,215,174,163,225,212,153,163,184,125,237,204,253,165,139, 70, 92,152,191, 98, 79,155, 14,157, -251, 4, 56, 56, 93, 61, 30,232,171,253,220,195,206, 42, 82, 40, 41, 37, 67, 36,151,243,200,175, 23, 25, 66, 64, 41,125, 67,100, - 21, 23, 90, 12,195,148,107, 0, 40,202, 89,180, 45, 42,232, 80,175, 95,191, 30, 50,153, 12, 82,169, 20, 98,177,184,220,233, 23, - 69, 57,195, 94,190,108,187,101,251,118, 89, 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3, 37,223,221,186,213, -160, 60, 78, 79, 23, 23,173,153, 66,145, 24, 30, 30,238,234,239,239,255, 70,120,179,178,178,160, 80, 40,176,125,199, 14, 73,183, -160,160,177,237,142, 31, 95, 10, 32,163,162,113, 39,132,192,209,209, 17, 54, 54, 54, 32,132,128,227, 56, 36, 36, 36, 32, 44, 44, - 12,183,110,221, 2, 75, 8,247, 87,230,113, 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23, 83,133, 22,203,178, -149,182,106,149, 6, 83,134, 14,149, 74,229,195,184,184,184,102,110,110,110,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,187, -119, 15, 74,165,242, 97,121,156,148,210, 15, 27, 55,110,140, 3, 7, 14,224,252,249,243,120,241,226, 5, 84, 42, 21,180, 90, 45, -212,106, 53,194,194,194,192,243, 60, 2, 3, 3, 97,102,102, 86, 46, 39, 0,228,230,230,198,139,197, 98, 63,133, 66, 81,120,206, -197,197, 5,169,169,169,188,193, 96,192,150, 45, 91,178,156,157,157,205, 20, 10,133,201,194,149, 16,130,164,164, 36,184,187,187, - 23,206,209,202,206,206,134,163,163, 99,129,176,128, 86,171,133,133,133, 69,185, 67,135,148, 82, 13,128, 73, 69,184, 27,245,235, -215,111,231,238,221,187,171,158, 61,123, 22, 55,110,220,128,131,131, 3,126,250,233,167, 23,175, 94,189, 26, 68, 41,189,245, 23, - 20,212,114,175, 73, 77, 77,221,255,240,225,195, 15, 27, 55,110, 92, 88, 75,180,105,211,134,180,105,211,198,190,168,169, 63, 57, - 57, 25, 55,111,222,196,217,179,103, 65, 8,193,211,167, 79,141,106,181,122,103, 25,207,150,120,121,121,109,158, 49, 99,134, 57, -199,113,133,101, 91,161, 80, 64, 46,151, 67, 34,145,128,101, 89,188,122,245, 10, 61,122,244,176, 90,181,106,213,239,132,144,234, -148, 82, 61,222, 19,100,168,161,191, 23,154,101, 21, 88,203, 41,108,195,250,249,205, 70,142, 66,193,208, 33, 23, 88,203, 49,236, - 94,104,162, 85, 67, 71,232,173,165,101,243,156, 56,251,250, 11,157,225, 68,247, 19, 39, 67,250,127, 51,113,130,184, 90,181, 90, - 73,103,255,184,227,217,142,251,158,216,217, 91, 34, 53, 37, 11,175,162, 19,241, 60, 74, 71,171, 85,171,149,116,251,230, 67,217, -226,101,203,125,114, 85,154, 61,127, 92,136, 63, 90, 78,167, 76, 67, 8,233,185,116,165,236,194,144,207, 26, 73, 21, 10, 87,164, -165, 60,132,167,167, 3,122,116,171,131,223,182, 94,133,149,149, 45,156,156,156,192, 48,140,153,169,113, 79, 73, 73, 33,251,119, - 93, 26,254,233,208, 17, 31,116,234, 24,196,157, 60, 21, 44, 58,127,250,200,213,223, 55,124,123,144,178,185, 74, 66,179, 21, 85, -188,157, 31, 68, 62,187, 55,168,109,251,129, 80, 72, 44,106, 0, 53, 75, 44,176,133, 11, 12, 40,162, 25, 6,242, 79,135,142,108, -218,169,211, 71,220,169, 83,135,112,234,248,214,235,115,230, 84, 57,254, 34,118,135,228,218,173, 24,121,207,190, 99,210,143,157, -120,164,235,211,221, 59,194,213,172,158, 26, 2,222,236, 72,138, 68,137,156, 86,235,225,222,169, 19,171,138,138, 18,155, 59, 57, -113, 0, 96, 48, 24,202, 21, 90, 0,120, 83, 56, 77, 13,139, 74,165, 2, 15,112,166,112, 38, 36, 37, 85,201,239,132, 23,194, 96, - 48, 20,138,172,212,212, 84,100,100,100,192,204,204, 12,201, 90,173,147, 41,156, 29,155, 52,217,242,221,220,185,147,247,237,223, - 47, 41, 42,178, 10, 62, 98,177, 24, 11, 23, 45,146,124,245,205, 55, 99,198,138, 68,227, 43,146,158, 5,157,118,150,101, 33, 18, -137, 16, 21, 21,133,232,232,104, 68, 69, 69, 33, 42, 42, 10, 10,133, 2,180,148,244,124,135, 22, 45,242, 95, 45,167, 5, 67,135, - 69,135, 16, 77,114,239, 80,145,201,240,166, 10, 3,163,209,248, 78,133, 86,110,110,238,217,115,231,206, 53,233,217,179,167,232, -250,245,235,112,118,118, 46, 20, 90, 5,223, 5,195, 81, 74,165, 18, 7, 15, 30,212,231,230,230,158, 45,231,101, 58,119,252,248, -241,134,179,103,207, 22, 15, 27, 54, 12,225,225,225, 24, 53,106, 20, 50, 50, 50,144,149,149,133,212,212, 84,168, 84, 42, 52,105, -210, 4,114,185, 28, 15, 30, 60, 48,168, 84,170,115,229, 52, 14, 52, 41, 41, 41,199,193,193,193,165,248,127,125,251,246,117, 90, -179,102,141,234,241,227,199,134,102,205,154, 89,154, 42, 56, 10,176,107,215,174, 66, 75, 93, 68, 68, 4,214,172, 89, 83, 56, 39, -235,206,157, 59, 88,178,100, 73,161,239,179, 10, 90, 25,111, 5, 4, 4,112, 6,131, 1, 53,106,212,128,155,155, 27, 52, 26, 13, -150, 47, 95,206,253, 21, 34,203, 84,104, 52,154,125, 67,134, 12,153,122,247,238, 93, 23,145, 72,148,103,210,206,143,159, 94,175, -199,179,103,207, 16, 22, 22,134,199,143, 31, 35, 45, 45,173,176, 35,112,239,222,189,116,131,193,176,167, 52, 94, 7, 7,135,153, -191,253,246,155,179, 82,169,124,163, 60, 23, 88, 67, 11,172,164,201,201,201,176,182,182, 70,187,118,237, 28,207,157, 59, 55, 19, -192,236,247,161, 65, 35,132,144,182,173,216, 70, 95,125,209, 19,189,187, 41, 95, 31, 56, 22,123,101,201,226, 73,249,147,225, 29, -195,122,119,115,123,125,255,137, 53,250,246, 58,212,232,143, 11, 36,166,172,185,116,249,115,172, 14, 55,105, 98,123,254,192,145, - 35,191, 79,159, 50,241,206,228, 73, 35, 28, 84,234, 72,121, 53, 47, 41, 1,128,231, 81, 58,250, 32,156,215, 44, 89, 58,241,206, -252, 69,171,152,196,212,140, 81, 55,110,148,238,222,160,168,120, 9,240,133,188, 90,205, 86,113, 62,190,205,189,175, 95,221, 14, -115,165, 26,126, 53, 27,161, 83,199, 15,113, 62,228, 30, 18,146, 53,136,143,143,135, 86,171, 45,211, 93,194,227, 7, 7, 63,161, -132,122, 18, 74,162, 9, 67,229,159, 12,249,188, 69, 80,208, 71,244,216,177, 35,220,161,131,219, 47,239,217,182,114, 31, 35, 17, -139,212, 58, 43, 29, 33,154, 76, 48,161,225, 57,185,121, 29, 26,177, 76, 82,186,249, 53,223,177,171,127, 64, 77,231, 79,134,140, -178,234,218,165, 7, 61,126,252, 16,191,103,247,150,243,123, 54,213,222,206, 51, 89,146,248,215, 42, 89,102,150, 33,147, 18,169, -117, 78, 22,175, 74,124, 94, 93,227, 26,212,247,189, 17,237,239,172,195,173,213,198,228,188,126,237, 98,219,170,149,236,217,220, -185, 74,167, 38, 77, 52, 36,127, 14,113, 89, 66,139,101, 89,128, 97,120, 83, 56, 77, 13,139, 90,173, 6, 15, 24, 42,195,201,113, -220, 27, 34,171, 64,104, 21,216, 53, 76,225,220, 48,103,206,117,207, 78,157,210, 66, 66, 66,156, 90,183,110, 77,178,179,179,145, -157,157,253,134,216,114,117,117, 37,254,129,129,202, 93,231,207, 87,155,109, 98,122,154, 18,119,134, 97,254,114,161,245, 95, 70, - 73,150,172, 55, 44, 90,165,161,192,162,101,138,208, 50,209,162,101, 48, 24, 12,112,116,116, 68, 74, 74, 74,169, 13, 63,195, 48, - 80, 40, 20, 5, 99,196,101,174,188,211,106,181,203, 39, 79,158, 60,174, 75,151, 46,246,126,126,126, 72, 78, 78,134,147,147, 19, -228,114,121,225,220,177, 2,190, 59,119,238,224,183,223,126,203,210,106,181,203,203,225, 92,182,104,209,162, 47,122,247,238,109, -235,236,236, 12, 27, 27, 27, 60,120,240, 0, 54, 54, 54,200,202,202,194,147, 39, 79, 96, 97, 97, 81, 56,111,231,200,145, 35,217, - 90,173,118, 89, 57,226,141, 94,188,120, 81,111, 97, 97,241, 32, 57, 57,153, 77, 75, 75, 19,165,167,167,139,178,178,178,196,153, -153,153,226,147, 39, 79,218, 91, 89, 89,169,254,248,227,143,100, 79, 79, 79,246,197,139, 23,172,193, 96, 96, 76,104, 28, 49,126, -252,120, 72, 36, 18,104,181, 90, 44, 95,190, 28,147, 39, 79, 46,156,147,181,104,209, 34,204,152, 49,163, 80, 56,111,220,184,177, -162,133, 7,122,189, 30, 6,131, 1, 6,131,193, 36,241,251, 54, 48, 69,176, 83, 74, 19, 8, 33,221, 26, 55,110,124,122,239,222, -189,118,249, 62,201,144,152,152,136,196,196, 68, 36, 39, 39, 35, 39, 39, 7, 28,199,193,205,205, 13,137,137,137, 56,116,232, 80, -102,118,118,118,167,178, 86, 28,178, 44, 59,164, 69,139, 22,162,226, 97, 40,232,229, 21,136,119,153, 76,134,184,184, 56,180,105, -211, 70, 26, 18, 18, 50,228,191, 46,180, 10, 4, 76, 45, 31, 72, 58,118, 26, 46,169, 21,208, 84,119, 63,236,216,235,154,222,137, -175, 7,247,176, 12, 6,128,123,161,137, 86,247,159, 88,163, 86, 64, 55,218,177,147, 77,195,196,132, 13,181,253,125,137,190,172, -237,122, 0,192, 74, 41,235,215,161,125,147, 56, 11, 51, 51,102,201,210,141, 39,214,174, 93,214, 96, 95,240,255,220, 59, 44, 89, -154,231,222,161, 67,251, 38,252,227, 71,143,251, 1,216,100,170,120,233,214,173,251,221,223, 54,255,134,199, 97,127,184, 78, 29, - 95, 71,154,150,104,128,194,220, 3, 13,235, 57, 97,195,230,135,184,127,255,126,130, 78,167,107, 83,102, 89, 34,212, 51, 44, 60, -212,183,118,128,191,243, 39, 67, 70, 90,118,235,214, 3,199,142, 29,198,182, 45,155, 46,246, 25,216,251,215,216,244, 44,214, 81, -172,148, 40, 41, 47,101, 37, 86, 34,137, 76,145,164,211,229,173,129, 16,139,229,150, 64, 63,190,140,145, 67,140, 30, 57,216,170, -109,251, 30, 8, 62,126, 24,219,182,108,184, 48, 43,160,239, 38,239,250,181, 72,147, 6,139,199,120, 87,245,246,202,205, 73,204, - 98,136, 84,175,209,240, 22,139,183,188,250,249,249,140, 33,207,239,134,246, 91, 42,172, 58,124, 3, 15,182,117,237,218,248,171, -200, 72,137, 67,243,230,138,184,243,231,149,249, 59,145,148, 41,180, 68, 34, 17,104,233, 67, 93,111,112,146,173, 91, 25, 0,101, - 46,194,146, 72, 36, 80,169, 84, 48, 0,122, 83, 56, 93, 78,157,122, 29, 25, 25,233, 99,107,107,251,134,200, 74, 75, 75, 43,252, -173,209,104,160, 82,169,160, 80, 40,194, 76,225, 76,188,120, 81,179, 96,252,248,217,131, 6, 14, 92,121,246,220, 57,185,157,157, - 29, 50, 51, 51,223, 16, 90, 58,157, 14,109,219,181,147, 44,186,123,247, 19, 0,115, 76, 73, 79,167, 54,109,202,157, 15,204,178, - 44,248,191,120,232,240, 61,232,172,142, 44, 73,120, 49,229, 13,225,152,186,234,176,164, 6,146, 16,210,190,216,169, 25, 13, 27, - 54,212, 68, 68, 68,192,211,211,179, 80,172, 20,125,166,165,165, 37,172,173,173,113,231,206, 29,252,248,227,143,106, 0, 51,202, -226,164,148,102,171, 84,170, 1, 29, 58,116, 80,139, 68, 34,212,172, 89,179,208,127, 22,207,243,144, 74,165, 48, 51, 51,195,221, -187,119,209,189,123,119,149, 74,165, 26, 80,220,135, 86, 9,156,153, 42,149,234,227,142, 29, 59,170,194,195,195,209,162, 69, 11, -220,191,127, 31, 57, 57, 57,200,201,201,193,203,151, 47,225,239,239, 15,149, 74,133, 53,107,214,168, 85, 42,213,199,148,210,204, -178, 56,179,179,179,187, 79,158, 60,153,221,185,115,167,183,155,155, 91, 64,163, 70,141,252,218,181,107, 87,189, 87,175, 94, 94, - 93,187,118,117,241,241,241,209,116,234,212,201,161, 75,151, 46, 14, 42,149, 74,124,229,202,149,120,131,193,208,165,156,244, 44, - 20, 39, 17, 17, 17,133, 67,133, 34,145, 8, 41, 41, 41,133,158,251, 11, 42,165,146,132,112,105,156, 69,197,118,129,192, 42, 16, - 92,229,181, 1,165,112,150,219,112, 72,165,210, 2,139, 39, 45,143,147, 82,122,239,209,163, 71, 29, 90,181,106,117,111,248,240, -225,217, 9, 9, 9,176,176,176, 64,181,106,213,224,235,235, 11,123,123,123,232,245,122, 28, 60,120, 48,247,208,161, 67, 15, 51, - 51, 51,219, 20,247,161, 85,156,147, 97,152,151, 37, 85,178, 5,214,172, 2,161, 37,151,203,225,230,230, 86,144,182, 47, 43,146, -158,149,124,121,255, 90,206,124, 1,211,174,109,167,170, 93,131,122, 90, 29, 60,124, 85,186,114,245,161,135, 13,219, 99,163, 93, -149,172, 35,118, 85,178,142, 52,108,143,141, 43, 87, 31,122,120,240,240, 85,105,215,160,158, 86,237,218,118,170, 26, 30,246,216, -239,141,125, 15, 75, 8,167, 92, 46,111,218,162,121,195,244,144,203, 23,248,249,139, 86, 49,109,219,244,185,187,233,215,131, 7, - 55,253,122,240, 96,219, 54,125,238,206, 95,180,138, 9,185,124,129,111,209,188, 97,186, 92, 46,111,106, 74,220, 71,143, 28,108, - 21,212,181, 7,142, 29, 59,200,237,219,181,102,209,238,253, 79, 91,125, 62,238, 98, 98, 68,196,125,154, 20,115, 10, 98, 38, 10, -143, 30, 61,202,212,233,116,109, 74,154, 8, 95, 18,231,168, 17,131,139,138,172, 75,118,206, 45, 54, 62,122, 4,227,153, 51, 71, - 13,231,206,221, 85, 95,186,151,148,121, 59, 60, 37, 45, 46, 57,237, 69, 86, 86,170,142,231,141, 48, 26,141,236,119,223,229, 77, -216, 45, 45,143,154, 53,107,141, 63,206,238,192,150,205,235, 51,121, 30,154,190,123,247, 26,251,245,155, 75,189,170, 84,241,218, -190,107, 7,233,246, 81, 79, 43, 10,240,221,123,247,176,222,185,123, 39,169, 90,163,106,149,106,213,242, 92,218,252, 39,203,210, - 95,192, 57,135,210,244,172,168,168, 11,119, 86,173,210, 58, 13, 24, 96, 43,117,114,178,132,209, 72, 10,234,247,210, 62, 34,145, -232, 13, 11, 76, 89,156,110,246,246,177, 71,142, 28,129,175,175, 47,220,220,220, 80,116,142,108,129, 67,110, 59, 59, 59,236,223, -191, 31, 20,184,109, 10,103,125,111,239, 59, 11, 23, 44,208,241, 60,143,244,244,244, 63, 89,179,210,211,211,193,243, 60,142, 7, - 7,235,178,114,114,182,152, 26,247, 54, 44,155, 51,168,101,203,249, 65, 65, 65,250,200,200, 72,240, 60,143,162,150,173,164,164, - 36,152,155,155, 67,163,213,122, 16, 66,148,166,112, 38,157, 60,105,134,114,234,245,226, 22,173,191, 34,223,255,235, 34,171,232, -134,210, 69, 69, 87,153, 22, 45,142,227,224,225,225,241,198,150, 46, 12,195,188,241,169,200,138, 67, 74,233, 86, 66,200,169, 78, -157, 58,205,254,224,131, 15, 70,207,158, 61,155,245,243,243, 67,102,102, 38,108,108,108,224,232,232,136, 39, 79,158,224,200,145, - 35,198,148,148,148,117, 0,230,153,178,132,158, 82,122,158, 16,210,173, 78,157, 58,187,167, 77,155,102,213,177, 99, 71,177,135, -135, 7, 40,165,184,123,247, 46, 14, 28, 56,160,223,180,105, 83, 86,190,200, 58,111, 98, 88, 79, 19, 66,250,116,233,210,101,251, -144, 33, 67, 44,140, 70,163,248,229,203,151,208,106,181, 48, 24, 12,136,142,142,214, 31, 59,118, 44, 71,165, 82, 13,166,148,158, - 54,129,239, 14, 33,196,255,204,153, 51, 67,174, 92,185,242,227,240,225,195,237,218,181,107, 39,225, 56, 14,151, 47, 95, 78,174, - 95,191,190, 99, 82, 82,146,126,255,254,253,169, 26,141,102,134,209,104, 52,105, 11, 30, 66, 8,178,178,178, 96,111,111, 15,173, - 86, 11,158,231,161,211,233, 96,110,110, 94,184,109, 18,165, 20, 21,153, 92, 95,172, 12,176,122,189, 30, 3, 7, 14, 4,207,243, - 88,190,124, 57, 56,142,171, 48,153,149,149,213,237,123,247,238,117,171, 87,175, 94,161,120, 41, 40, 67, 50,153, 12,246,246,246, -176,179,179,195,177, 99,199, 32, 22,139,111,155,152, 71,247, 1,212, 39,132, 52,125,248,240,225,167, 0,234,233,245,122, 55,163, -209, 72, 24,134,137,167,148, 62,200,202,202,250,213,212, 45,120,146,146,146,126, 28, 58,116,104,253, 29, 59,118,152,139, 68,255, -123, 53, 68, 34, 17,100, 50, 25, 10,156, 99, 82, 74,161,211,233, 48,115,230,204,172,220,220,220, 31,223,151,138,162, 97,163, 38, -216,176,102,133,249,185, 63, 78, 37, 63,122,138, 3, 69, 93, 56, 88, 75,129, 63, 46,144,152,196,132, 13,181,227, 94,191, 54,111, -216,168,137, 73,156, 6,157, 62,245,227,193, 95,123,230,111,193, 51,243,229,203, 87,235,183,111,253,249, 57, 0, 44, 94,182,220, - 39, 49, 53, 99,212,227, 71,143,251,173, 95,191,171,169, 65,167, 79, 53,133,243,127,226,101,123, 38, 40, 52,148,210, 27,132, 16, -239,238, 3, 78,206,168, 81,213,242,163,164, 84,117,108, 78,142,234, 75, 74,233,115, 83,227,222,188, 89, 43,252,113,122, 39,182, -109,217,158, 69,121, 86, 99,111,111, 79, 1,224,209, 35,123,250,232, 81, 6,253,223,188, 98,235, 92, 49,189, 63,239,235, 47,219, -125,157,153,149,182,108,217,234,178, 29,215,214,169,251, 1,234,212,253, 0,227,190,252,214,202, 63,160,166, 39, 0,236,221, 75, -141,129, 62,228,232,236, 89,115, 63,154, 55,111, 46,178,178,181,152, 55, 47,111,187,158, 39,161,225,193,145,145, 84, 39, 52, 91, -111, 98, 54,199,221,192,215, 95,251,168,210,210, 28,154, 79,157,106, 47,250,230, 27,166,172,201,240, 69,223, 95, 83, 56,111, 61, -120, 16, 60,234,243,207, 99,231,204,158,221,105,221,250,245,138,218,181,107, 35, 33, 33, 1, 53,107,214,132,155,155, 27,206,156, - 57,131,253,123,246,228,102,100,103,207, 0,176,214, 20,206,173,199,143, 63,241, 11, 8, 72, 89,191,126,189,107, 80, 80, 16,201, -205,205, 69,102,102, 38, 50, 51, 51,161,213,106,145,239, 16,154, 70, 60,125,250,200, 96, 48,172, 51, 53,238,198,228,100,249,188, - 38, 77, 98, 36, 60,191,176, 79,239,222,147,231,125,255,189,172,106,213,170, 68,171,213, 22, 90,181,244,122, 61,204,205,205,245, - 58,157,206, 14,128,202, 20, 78,217,166, 77, 92,114,114, 50, 28, 28, 28, 10,221, 53, 21,245, 75,152,157,157, 13, 74,169,224, 76, -183, 50, 34,172,180,182,220,214,214,246,182, 72, 36,114, 47,106,221, 42,105,239,188,162,231, 12, 6, 67, 76,114,114,114,195,162, -138,151, 82,122,182, 20,129, 80, 13,192, 79,109,219,182,237, 51,105,210, 36, 18, 18, 18,130, 67,135, 14,209,231,207,159,239, 3, - 48,163,180, 74,178, 28, 78, 11,153, 76, 54,193,204,204,172,125,129, 11, 7,165, 82,249, 48, 55, 55,247,172, 86,171, 93, 94,154, - 55,248,114, 56, 45,101, 50,217,120, 51, 51,179, 14,217,217,217,245, 0,192,194,194,226, 94,110,110,238, 25,173, 86,187,162,180, -141,170,203,225, 84, 88, 89, 89,253,104,111,111,255,241, 55,223,124, 99,119,241,226,197,248, 63,254,248, 67,146,145,145,177, 67, -167,211,149,186,169,116, 73,156,118,118,118,183, 89,150,117,255, 43,242, 8, 0,234,214,173,123,172,123,247,238, 65,131, 7, 15, -134,193, 96,192,218,181,107,113,230,204,153,224,167, 79,159,118, 43,171, 55, 90,156,147, 16, 98,239,238,238, 30, 50,122,244,104, -175,129, 3, 7, 42,109,108,108, 32, 18,137,144,155,155,139,103,207,158,225,238,221,187,244,240,225,195, 57,119,238,220,137, 81, -169, 84,173, 41,165, 41,166,166,231,219,244,154,139,115,138,197,226, 86, 30, 30, 30,187,230,204,153, 99,209,161, 67, 7,133,157, -157, 29, 88,150,133,193, 96, 64,124,124, 60, 66, 67, 67,113,234,212,169,220,125,251,246,229,166,166,166, 14,164,148, 94,248, 39, -194,249, 46, 57,253,125,201,172, 98, 27, 69,151,234,237,189,172,107, 77, 9,103,187,214,174, 61,250,245,233,210, 25, 0,246,238, - 63,113,242, 92, 72,220,225,202,134,179,188,176,154,194, 89,203,135,157, 19, 22, 30,250,134, 67,203, 0,255,192,136, 90,181,123, -255, 96, 10, 87,129,103,248,226,113, 47,226,109,191,168, 77,247,141, 97,214,130,141,167,191,157, 49, 29, 63,253, 56, 31,135,247, - 30, 12, 14,143,164,199,254,203,101,233,175,228, 44,216, 4, 89,233,226,210,114, 57,207, 79,191, 31, 26,106, 94,180,195, 86, 96, -121, 46,218,169,116,117,117, 77,138,139,139,115, 50,133,179,219, 47,191,232, 85,102,102,178,233, 11, 23,182,202,209,104, 90,205, -155, 55, 79,116,235,214, 45,172, 89,181,138,211,196,196,108, 79, 6,198,151, 52, 26, 82, 22,167,215,248,241,242, 41,107,214, 12, -171, 86,163,134,227,167,159,126, 42, 22,139,197,200,205,205,197,235,215,175,113,250,212, 41, 93,248,163, 71,225, 89, 89, 89, 31, - 81, 74,227, 76,229,236,246,203, 47,122,235,106,213,160,116,112,160,231,206,159,183, 26, 53, 97,194,232, 42,222,222, 86,157, 58, -119, 22, 91, 90, 90, 34, 61, 61, 29, 47, 95,190,196,193,131, 7,147,114,114,114, 92, 41,165, 70, 83, 56,183, 95,185, 82,231,248, -133, 11,125,127,248,225, 7,105, 96, 96, 32,172,172,172,144,157,157,141,208,208, 80, 92,184,112, 65,187,110,221,186,204,204,204, -204,209, 28,199, 29,249,171,242,253,125, 29, 58, 36,127,229, 84, 0, 83, 50,130, 16,210, 16,192,172,252,195,239, 77,216, 51,240, -189,169,124, 8, 33,158,182,182,182, 27, 52, 26, 13, 85,171,213,163, 40,165,209,255,182,112, 18, 66, 68, 13, 27, 54, 92,147,148, -148,212,148, 82, 10, 43, 43,171,171, 97, 97, 97, 99, 41,165, 92, 69, 57, 9, 33, 44,128,166,230,230,230, 77, 44, 44, 44, 90,105, -181,218, 90,249,195,111,143,114,115,115, 47,232,245,250, 27, 0,174, 82, 74,141,255,100,220,243,195,217,193,213,213,245,115,158, -231,107, 16, 66,172,141, 70, 35, 12, 6, 67, 6,207,243,207, 50, 51, 51, 55, 1, 56,243, 79,135,243, 93,113, 6,212, 32,189, 40, -131, 90,165, 9,130, 55,132, 77, 49, 1, 65,120, 60, 10,123, 70, 15, 86,160,204, 51, 93,218,123,172, 6,242, 86, 38,150,183,149, -209, 27, 66,203, 4,241, 82, 97,145, 89, 67, 52,148, 18,234,249,102,239,147, 68,215,172,211,107,219,219, 8, 45, 83, 17,224, 71, - 90,129,162, 41, 79,113,227,209, 83,250,199,251, 90,215,189, 75,206,249,132,216,174,178,177,185,202,136, 68,206, 0,152,124,235, - 11,207, 19, 98,164,132,112, 69,135,183,138,118, 44,203,227,212, 3,181,197, 50,153,135,145,227,156, 18, 0,243,227, 70, 99, 3, - 13,165, 57,238,192,172,187,148, 62,169, 76, 56,245, 64,109, 86, 38,243, 60, 78,105,143,100, 51,179, 58, 73,106,181, 3, 0,106, -110,102,246, 40, 43, 55,119,139, 70,163, 89, 93,194,230,237,229,114, 74,100, 50,119, 35,199, 57, 1, 0, 35, 18, 37,237,214,106, - 61, 98, 44, 45, 63,213,104,181, 94,230,230,230, 6,157, 78,151,165,209,104, 6, 27, 12,134,115, 21,137,251, 51,142,243,191,194, - 48, 45,244,102,102,118,122, 66,204,116, 28,167,215,233,245,175, 53, 26,205, 67, 0, 63, 83, 74, 35,255,202,124,127,111, 81,176, - 58,237,175,248, 0,104, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231, 95,207, 9, 64, 9,192, 19, 0,251, 95,140,251,251, -244, 1, 48,178,224,183, 72,144,154, 2, 4, 8, 16, 32, 64,192,123, 97, 56, 81,161,132, 57, 89, 2,254, 89, 16, 0,237, 75,201, - 48,147, 77,130,149, 89,125, 96,194, 16,131,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,239, 25,103,121,220,255,197, 33,201, -178,246, 58, 20,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20,134, 14,255,162, 15, 3, 1,165,169, 83, 39, 66,136, -211,187,190, 86,192,251, 93, 22, 74,184,215,141, 16,226, 86,193,235, 93,132, 84, 23, 32, 64,128,128,247, 3,127,187,208, 50,181, -209,122,203,198,237,173,132, 15, 33,100, 62, 33,136,203,251,144,249,239,234, 90, 19,158,235,234,224,224,240, 85, 64, 64,192,118, -103,103,231,113,132, 16,199, 10,222,239, 99,102,102,182,194,220,220, 60,196,220,220, 60,196,204,204,108, 5, 33,196,231, 29,229, - 27, 33,132,140,146,203,229,231, 93, 93, 93, 99,101, 50,217,121, 66,200,104, 82,201, 13, 46, 9, 33,126,132,144,121,132,144,239, - 9, 33,117, 42,114,175, 83, 96,207, 61,142,129, 61, 31, 56, 6,246, 12,181,175,253,145,143, 99, 96,207, 80,199,192,158, 15,156, - 2,123,238,249, 11,202,107,165,243, 55,255,222,232,188, 79,249,247, 18, 66,126, 38,192,107, 66, 16,243,182,101, 73,128, 0, 1, - 2, 4,252, 59, 80,161,201,240,110,110,110,125, 40,165,163, 0, 80, 66,200,134,216,216,216,253,149,104,120,166,228,255, 94, 68, - 41,157,254, 54,215,153,112,239, 50, 74,233,228,138,139, 52, 76,225,121,202, 0, 0,195,144,169, 78, 78, 78, 74,150,101,255, 52, -193,208,104, 52, 42, 9,193, 56,158,167, 36,255,218, 41,132,144, 21,148,210,196,202,136,195, 79, 62,249,100,217,138, 21, 43,228, - 74,165, 18, 81, 81, 81, 29, 71,143, 30,221,140, 16,242, 53,165, 52,190,188,251, 21, 10,197,160,198, 77,154,126,189,112,241, 82, -115, 39, 71, 71, 51,206,200,235, 95, 70,189, 82,206,156, 54,185,137, 66,161, 88, 81,214,102,202,197, 5, 21,128,145, 34,145,168, -191, 92, 46,175,174,209,104, 34, 57,142,219,199,178,108,167, 31,127,252, 49,176,107,215,174,242,172,172, 44, 41,199,113, 53,182, -109,219,246,245,111,191,253,214,133, 16,210,163,172,101,250, 5, 22, 29, 74,105,108,145,211,125,163,162,162, 26, 74, 36, 18, 82, -173, 90, 53, 6,192,131,114,174, 47, 4, 5,124,194, 46,239,173, 13, 0, 1,205,251, 69,132, 93,222,139,252,223,127, 65,167,224, -205,178, 32,151,203,215,105, 52,154,232,130,255,243,195,153,104,202,189,132,144,149,249,219, 7, 53, 4,240,105,254,165, 91, 41, -165,183, 9, 33,206,114,153,108,130, 90,163, 33, 0,200,219,148, 37, 1, 2, 4, 8, 16,240,183, 27,145,234, 83, 74,239,230,143, - 72, 4, 1, 8, 46,104,187, 43,186,234,240,139,167, 79,159,154, 3,128,175,175,239, 88, 0,251, 43, 16,136, 63, 53, 60,237,218, -181,171,175, 80, 40,222,240,130,172, 86,171,165,132,160, 93,101,196, 75,193, 51,116, 58, 45, 35, 22, 75,193, 48,228,235, 58,117, -234, 84, 73, 73, 73,185,200, 48,204,246,152,152,152,244, 74, 36, 30, 54,110,220,232,235,226,226,242, 39,111,205,241,241,241,210, - 30, 61, 62,170, 16,223, 48, 66,100, 90,153,172,137,132, 16, 23, 35,199, 89, 3,128, 72, 36, 74,247,179,178,106,248,211, 15, 63, - 40, 9, 33,124,106,106, 42,212,106, 53, 38, 78,156,168, 8, 15, 15,239, 9, 96,117, 57, 97,244,253,224,195,102, 19, 79,157, 58, - 89, 43, 43, 45, 93,179,113,217,250, 59,106,145, 68,229,237, 95, 83,178,102,195, 22,155,145,195, 6,127, 73, 8,185, 87,210,118, - 36,197,120, 24, 0, 7, 39, 76,152, 16,208,173, 91, 55,105,118,118,182, 92,173, 86, 87,217,190,125,251,204,134, 13, 27,154,215, -171, 87, 79,186,107,215, 46,146,153,153, 9, 74,169,178,102,205,154,180,127,255,254,154,221,187,119,143, 3,176,178, 60,225,203, -178,236,114, 63, 63,191, 57,249,113,150, 20,185, 70,236,239,239,111, 6, 0, 79,158, 60,249,142, 16, 76, 40, 75,100, 19,224,105, - 64,243,126, 0, 65,141,176,203,123,229, 1, 45,250,105, 64,241,140, 0, 79,243, 59, 4,243,128, 34,126,161,222,196,163,216,216, -216, 74,237, 77, 24, 20,212,141, 16, 66,246,185,186,186,238, 79, 74, 74,242, 38, 4, 35, 76,237, 12, 16, 66,136,157,157,221, 80, - 0,243, 1,124,254,232,209,163,250, 0, 80,171, 86, 45, 9,128,219,150,150,150,205,244, 58, 29, 17,170, 43, 1, 2, 4, 8,248, - 79,162, 62,128,187, 0,130,138,108,193,179,161, 50, 66, 75, 10, 0, 23, 47, 94, 4, 0, 89,101, 68, 95, 81, 1, 51,126,252,120, -184,184,184, 20, 23, 47, 8, 9, 57,255, 54,145,125,227, 25,223,127,255,189,121, 70, 70, 70,251, 95,127,253,181,165,155,155,219, -146,216,216,216,235,101,221, 76, 41, 77, 36,132, 44,202,183, 64, 64, 38,147, 71,140, 30, 61,250,110,254,223, 85,142, 30, 61,170, -236,222,189,187, 10,192, 43, 0,144,201,228,110, 44,203,248,230, 77,122,195,162,178, 4, 97, 63, 66,170, 73,165,210,182,163,126, -249,133,107,208,189,187,200,204,193,129, 0,192,171,199,143,237, 22, 45, 94,220, 44,253,249,115,169,218,206, 46, 53, 53, 55, 87, - 29, 17, 17, 1,153, 76, 70, 88,150,109, 80, 94,132,205,204,204,190,250,225,167,133,102, 89,105, 25,106, 77, 86,182,142,229, 12, - 90, 11,133,210,152,152,144,148,106,174, 48, 83, 77,157, 53, 87,250,197,136, 33, 95, 1, 24, 91, 14,213,184,175,191,254,186, 86, -227,198,141,221,246,236,217, 67, 50, 51, 51, 33, 18,137,204,235,213,171,135,134, 13, 27, 26,255,248,227, 15,226,237,237,141,192, -192, 64, 92,190,124, 25, 87,175, 94, 37,245,235,215, 87, 30, 56,112,224,147,146,132, 86,113,113,205,178,204,196,154, 53,107,214, - 51, 51, 51,211,249,250,250, 98,196,136, 17,160,148,162,125,251,246,129,230,230,230,251,115,115,115,165, 79,158, 60,110, 89,158, -200, 78, 12, 61,212, 31, 0, 28, 3,123, 62, 0, 80, 27, 20,207,146, 66, 15,213, 41,114, 73,173, 39, 79,158,124,144,158,158, 94, - 56, 25,177, 96, 3,243,150, 45, 91,154, 92,144, 10,202, 66,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199, -143, 63,238,213,171,103,224,211,167,207, 80, 90, 56,139,149, 35, 50,116,232,176, 68,115,115,243,222,174,174,174, 79, 0,136, 36, -146, 66,157,201, 58, 57, 57, 57,212,169, 83,103,140,173,173,109, 18,203, 48,142, 20,148,150, 87,150, 4, 8, 16, 32, 64,192,191, - 10,193,249,226, 42,184,248, 31, 34, 0, 8, 14, 14,166,255,235,181, 7,145,178, 26,158,251,247,239,123,168, 84, 42,152,210, 8, - 20, 93,162, 73, 41, 77,100, 89,118, 13,195,144,177,132, 16, 4, 6,214,126,177,124,249,242,146,246,244,210, 5, 6,214,126,193, -178, 76, 85, 74, 41, 8, 97,214,242,188, 49,177, 36,206,210, 26, 70,169, 84, 54, 5, 0,156,157, 93,158,159, 56,113, 66,215,183, -111, 95, 44, 94,188, 88, 50,109,218,180,201, 94, 94, 94,227,162,162,162, 18, 74, 11,103,254,241,116, 39, 39, 39,229,198,141, 27, -125, 71,143, 30,125, 55, 46, 46,110, 58, 0,184,186,186,206, 7,224, 15,224, 85,145,115, 88,183,110,119,236,136, 17, 35, 34, 18, - 19, 19,167,151,198,217,135,144,234, 94, 53,107,182,157,119,241, 34,101,180, 90,146,114,233, 82, 86,114, 98,162, 33, 50, 57, 89, -185,249,246,237,110, 51,231,207, 23,123,120,122, 34,228,200, 17,251, 20,149, 42, 57, 83,171,213, 36, 38, 38, 82,142,227,174,154, - 16,247, 0, 71, 7, 71,229,250,159,215,222,178, 16,179,188,163,187, 27, 17,219,218,138, 24,165,165,148, 21, 49,218,170, 85,124, -164, 0, 2,202,203, 35,137, 68,242, 73,199,142, 29,149,187,119,239, 38,129,129,129,176,182,182,198,165, 75,151,112,239,222, 61, -164,167,167, 51, 6,131, 1,141, 26, 53,194,194,133, 11,225,233,233,137,140,140, 12, 68, 71, 71,219, 75,165, 82,135, 50,210,243, -141,242, 52,101,202, 20,184,184,184,128,227, 56,164,165,165,129,227, 56,152,155,155, 3, 0, 98, 98, 98,112,228,200,225,114,203, -146,137, 34, 9, 31,126,248, 97, 54, 33,228, 81,113,139, 86, 69, 56,221,220,220,118, 37, 39,167,116,105,219,182, 45,210,211,211, - 13,115,231,206, 69,157, 58,117,224,235,235,107, 74,153,159, 46,147,201,126,245,242,242,250,121,252,248,241, 46,182,182,182,208, -106,181, 51, 19, 18, 18, 48,102,204, 24, 0, 64,215,174, 93,235,136,197,226, 19,195,135, 15,135,183,183,119,108, 90, 90, 90,244, -157, 59,119, 70,228,230,230,134, 86, 54,238, 38,166,143,192, 41,112, 10,156, 2,231,191,138,211, 84, 45,242,111, 68,254, 48,225, -134, 34,199, 27,222, 16, 90, 65, 65, 65, 36, 56, 56,152,154, 16,177, 84,119,119,119, 15,133, 66, 1, 0,169, 21, 13,136,209,104, - 28,103,111,111,159, 52,125,250,244,230,190,190,190,186,113,227,198,133,190,124,249,114, 70,209,107,188,189,189,127, 92,181,106, - 21, 34, 34, 34, 94,205,159, 63,255,114, 74, 74,202,247, 21,140,236, 52, 66,200,242,124,235, 88,202,145, 35, 71,234, 92,188,120, -113,236,178,101,203, 28,190,248,226, 11,201, 87, 95,125, 53, 24,192,226,242,120, 88,150, 85,149, 52, 92, 88, 18, 92, 92, 92,116, - 37,205,225, 42, 64,119, 66, 20,150, 82,105,155,121, 23, 47, 82,221,171, 87,170,223,150, 46,181, 88,127,243,230, 28, 3,165, 78, -142,142,142,104,209,172, 89,142,156,101, 83,146, 18, 18,120,199,234,213,217,151, 39, 78,216,171,165,210,184,221,187,119,103,166, -166,166, 30, 42,215,132, 71, 72, 22, 79,169,206,220,221,211,208,183,103,135,192, 91, 55,238, 61,182,112,180,103,234,215, 11,172, -243, 56,226,213, 29,240,188,158, 16,146, 85, 30,143,149,149,149,111,106,106, 42,178,178,178,224,224,224,128,229,203,151,195,217, -217, 25, 42,149, 10, 97, 97, 97,212,221,221,157, 92,188,120, 17,238,238,238, 72, 78, 78,134, 78,167, 67,118,118,118,146, 86,171, - 85,151, 38,124, 69, 34,209,239, 12, 67,134, 17, 66, 80,181,106,181,168,213,171, 87,235,120,158, 71,173, 90,181,208,171, 87, 47, - 28, 56,112, 0, 97, 97, 97, 5,150, 39,157,151, 87,149, 40,134, 33, 94,249, 90,169,210, 86,157,130,173,125, 98, 99, 99,123, 87, -202, 44, 74, 8,227,234,234, 58,216,199,199,103,236,160, 65,131, 12, 82,169, 20,185,185,185, 5,105, 97,232,210,165,107, 70,247, -238,221,172,130,131,131,203, 12,167, 86,171,125,238,228,228,244,249,215, 95,127,189,125,221,186,117, 54, 51,102,204, 0,207,243, -160,148,130,227,184,194, 77,191,121,158,199,193,131, 7, 17, 25, 25,249, 99, 81,145, 37, 64,128, 0, 1,255, 95, 80, 1, 45,242, -175, 67,145,185, 89, 40, 46,182,254,118,207,240, 44,203,174, 63,125,250,116,189,150, 45, 91,138,218,181,107, 23,232,238,238, 30, - 24, 19, 19, 19, 10, 0,238,238,238,129,157, 59,119, 14,116,116,116,196,138, 21, 43, 84, 44,203,174,175,164,178, 44,218,232,221, -117,113,113, 89,114,224,192,129, 69,163, 70,141,130,179,179,179,255,223, 29,103, 75,153,172,254,240,229,203, 57,177,193,192,252, -178,100,137,229,210,243,231, 23,237,217,187, 87,244,225,135, 31, 18, 74, 41, 30, 62,120,160, 88,184,114,165,114, 96,207,158,175, -158, 60,127,206, 29, 62,117,202,144, 24, 27,155, 22,155,156, 60,155, 82,154, 86, 30,191,193, 96,184,246,244,233, 83,215, 22,173, - 62,116,187,112, 51,244, 94,223,158, 93,219,138, 69, 12,121,246, 42,230,182,139,179,189, 85,200,249,179,106,131,193,112,173, 60, -158,220,220,220,151, 28,199,217, 82, 74, 29, 66, 66, 66,224,224,224,128,244,244,116, 24, 12, 6,232,116, 58,157, 74,165,146,167, -166,166, 66,163,209, 64,171,213,194,210,210, 18, 15, 31, 62, 76,228, 56,238,143,210, 56, 57,142, 27, 46,151,203,191, 23,139,197, - 82,137, 68, 18,119,251,246,109,100,101,101, 85,177,182,182, 94,204,113, 28,226,226,226,112,241,226,197,111, 44, 45, 45, 95, 1, -128, 92, 46,135, 84, 42,179,211,106,181, 92,105,147,225, 77,181,104, 85, 22, 46, 46, 46,158, 85,171, 86,157, 55,117,234,148, 90, -117,235,214, 67,114,114, 50,120,158,135,153,153, 25, 84, 42, 21, 44, 45, 45,209,180,105,211,151,243,230,205,139,167, 20, 35,203, - 19,131,137,137,137,201,110,110,110,227, 70,141, 26,245,189,175,175,111, 85, 74, 41,124,124,124,208,177, 99, 71,156, 56,113, 2, - 17, 17, 17,200,205,205, 53, 94,191,126,125,103, 92, 92,220, 81,161,186, 21, 32, 64,128,128,255,158, 78, 44,152,155, 85,212,154, -245,143, 8,173,196,196,196,100,119,119,247,147,119,238,220,233,214,191,127,127,132,132,132, 12, 5,240, 53, 0,200,100,178,161, -253,251,247,199,157, 59,119,240,248,241,227,147,137,137,137,201,239,226,153, 82,169, 84,163,211,229, 25,167,228,114,185,188,130, -183, 87,201, 31, 50, 4,128, 42,101,156, 43, 21,140, 72,228, 82,187,115,103, 81,250,189,123, 89, 27,111,220,248,126,251,246,237, -162,230,205,155, 19,131, 94, 15, 35,207,163, 90,181,106,164, 93,251,246,102,191,111,223,110,107,204,205,189,248,195,212,169,151, - 54, 12, 31,158, 19, 65,233, 43, 83, 2,168,213,106, 87,142, 29,243,121,251,243, 33,151,220,252,107, 86,183, 61,121,250,252, 93, - 59, 59, 43,165,111,141, 26,102,169,233,105,198, 25,211,190, 17,105,181,218, 95,202,227, 81,171,213, 7,207,158, 61,219,211,195, -195,195, 33, 52, 52, 20, 58,157, 14, 70,163, 17,237,218,181, 3,165, 84, 6,128, 23,137, 68,120,252,248, 49,244,122,125,210,211, -167, 79,227,158, 61,123, 38, 3,176,160, 44, 94,141, 70, 19, 85,244,216,195,195,163, 67, 80, 80, 16, 56,142, 67,231,206,157,113, -248,240,225, 14,225,225,225, 75,139,106,190,183,205,243,124, 11, 89, 45, 55, 55,183, 3,249,167, 76,154, 4,239,238,238, 30,232, -227,227,179,110,193,130, 5, 18,119,119,119, 80, 74, 97, 99, 99, 13,149, 74,133,148,148, 84,248,251,251,195,195,195, 3, 11, 22, - 44, 0,128,157,166, 90,220, 98, 99, 99,159, 1,232,239,239,239, 47,201,200,200,104,216,161, 67,135, 21,237,219,183,199,221,187, -119,113,233,210,165,129, 50,153, 44, 73,175,215,115, 46, 46, 46, 35, 9, 33,150,122,189,126, 71, 74, 74, 74,188, 80,119, 9, 16, - 32, 64,192,127, 2, 5,115,180, 10,189,196, 87,216,162,229,239,239,111,150,153,153,249,105,149, 42, 85,164, 0,160, 80, 40,252, -171, 87,175, 62, 57, 50, 50, 50,187,162,161, 81,169, 84,123,182,111,223,222,241,231,159,127,150,116,237,218,181,186,187,187,123, - 99, 0,232,221,187,119,117, 11, 11, 11,108,223,190, 93,175, 82,169,222,153, 79, 36,131,193,208,178, 81,163, 70, 72, 75, 75,195, -171, 87,175, 42, 52, 44,115,244,232, 81, 37,242,230,101,149,121,174, 44,112, 58,157,141,181,155, 27, 19,123,254,188, 62, 45, 43, -203,165,101,171, 86,196,160,215,131, 97, 24,164,166,166, 34, 58, 58, 26, 86,214,214,228,241,211,167,230,155,166, 76, 57, 90,165, -110, 93,169, 81,167,179,171,128,168,200, 37,132, 12,251,114,220, 23, 7,119,236,216,233,144,145,149, 21,169, 80, 40,181, 50,153, -196,121,252,151, 95, 26,211,210,210,134, 80, 74,115, 76,160, 90,176, 99,199,142,206,157, 59,119,126,224,233,233,233,152,156,156, -236,156,145,145, 97, 76, 75, 75, 99,145, 55,215,138, 0,192,249,243,231,145,149,149,197, 25,141,198,139, 0,230, 81, 74,117,166, -134,181, 74,149, 42, 86, 77,154, 52,105,237,224,224,128,204,204, 76,216,217,217,161, 94,189,122,173,171, 84,169,242,235,171, 87, -175, 50,223,101,169, 63,115,230,140, 5,165,244, 3, 74, 41, 58,119,238,108,210, 61, 70,163,241,179,160,160, 32, 9, 33, 4,106, -181, 10,114,185, 2,102,102,230,176,176,176,132,175,175, 31,226,226,226,208,169, 83, 39, 93,100,100,228,154,248,248,248, 10,151, -209,204,204,204, 30, 77,155, 54,157, 52,102,204, 24,112, 28,135, 30, 61,122,224,245,235,215, 75, 95,190,124,185,219,213,213,117, -240,103,159,125,230, 96,103,103,135, 73,147, 38, 41, 0,124, 39,212, 93, 2, 4, 8, 16,240,239, 71,241, 57, 90, 37, 90,180,202, - 26, 19,117,113,113,105, 97,107,107, 59, 83,173, 86, 75, 11,134,100, 8, 33, 82, 7, 7,135,195,174,174,174,243,227,226,226, 42, - 52, 41, 46, 61, 61, 61,203,197,197,229,240,181,107,215,250,245,238,221, 27,103,206,156, 25,146, 47,180,112,237,218, 53,188,120, -241,226,112,122,122,122,214,187,136,188,187,187,123,151,214,173, 91,247,110,212,168, 17,142, 29, 59, 6,163,209,120,181, 34,247, - 23, 93, 97,136, 18, 86, 29, 22,156, 51,137,140,101, 65, 8, 1,199,113, 0,128,148,228,100, 68, 60,121,130,180,244,116,104, 53, - 26,228,170, 84, 70, 95,111,111,117,166, 78, 39, 38, 0,173, 96, 38, 71,153,155,155, 71,171,114,115, 29,237,108,108,213, 74,165, - 12, 25, 89,153,146,219,183,174,231, 80, 74, 35, 77,228,208, 17, 66, 90,157, 56,113, 98, 54,203,178,253,205,205,205, 49,118,236, - 88,182,117,235,214,144, 72, 36,208,106,181,200,200,200,192,246,237,219,147, 57,142,171,154, 95, 14,204,205,204,204,182,176, 44, - 27,147,149,149, 53,179,188,103,232,116,186,174,221,186,117, 19,233,116, 58,252,240,195, 15,152, 51,103, 14, 58,119,238, 44,186, -117,235, 86, 87, 0, 59,222, 85,161,231,121, 30, 29, 58,116, 40, 58, 25,254,145, 41,247,137,197,226,192, 26, 53,106, 32, 57, 57, - 25,201,201,201,112,112,112,128,171,171, 43,156,157,157,177,116,233, 82,186, 98,197,138,147,122,189,126, 77,114,114,114, 98, 37, -202,226,200,161, 67,135,142,236,215,175, 31,114,114,114,112,237,218, 53, 52,107,214, 12,139, 22, 45,114,185,120,241,226,215,141, - 26, 53,130, 88, 44, 70, 72, 72, 8, 56,142,123, 45, 84, 93, 2, 4, 8,248,255,134,255,226,252,172,242, 80,166, 69,203,211,211, -211,218,104, 52,126,211,189,123,247, 14, 61,123,246, 68,167, 78,157,222,248,127,199,142, 29, 22,251,247,239,159,239,225,225,209, - 89,175,215, 47,168,200, 80, 31,207,243, 7,119,236,216,209,245,195, 15, 63, 84,182,105,211,166, 26, 0,200,100, 50,221,142, 29, - 59, 84, 60,207, 31,172,104, 68,138, 59,143,116,115,115,171, 35, 18,137,122,119,235,214,173,206,176, 97,195, 16, 22, 22,134,237, -219,183, 63,243,245,245,189, 92, 65,234, 87,229,172, 58,156, 95,158,117,139,149, 74, 83, 51, 18, 18,172,205, 61, 61,197, 54, 22, - 22,241,199,142, 29,243,104,223,190, 61,121,253,250, 53,210,211,211,161,209,104,112,235,214, 45, 94, 4, 68,137,108,108, 72,212, -181,107,132,149, 74, 43,188,216,192,195,197,198,103,214,180,209, 85, 52, 90, 77, 64,102,102, 38, 39, 18,139,197,238,206,214, 21, -106,176, 41,165, 90, 51, 51,179,134, 0, 68, 60,207,171,108,109,109,149,167, 79,159,134, 84, 42, 5, 33, 4,181,107,215,134, 92, - 46,151,152,153,153, 69, 3,128,179,179,179,116,253,250,245, 86,131, 7, 15,190, 84, 30,119,131, 6, 13,196,222,222,222, 31,249, -250,250,226,218,181,107, 8, 13, 13,141,186,118,237,154, 87,253,250,245,225,233,233,249, 81,131, 6, 13,246,222,185,115,199,240, -142,122, 23,149,154, 12,111, 52, 26,121, 66, 8, 24,134, 1,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252, -135,184,184,184, 35,149, 9,143,191,191,191,164, 94,189,122, 67,250,245,235,135,231,207,159, 99,254,252,249, 41,241,241,241,231, - 79,157, 58,213,103,204,152, 49,108,179,102,205,144,154,154,138,223,127,255,157,187,125,251,246,111, 9, 9, 9, 91,133, 42, 87, -128, 0, 1, 2,222, 99,161,229,233,233,217, 79, 34,145, 76, 26, 48, 96, 0,235,231,231,135,196,196, 68, 88, 90, 90, 26, 8, 33, - 98, 0,176,182,182, 54, 40, 20, 10,140, 30, 61, 26,117,235,214,109, 49,101,202,148,102,110,110,110,171, 99, 99, 99,183,152,242, -224,196,196, 68,149,139,139,203,190,177, 99,199, 46,184,119,239,110, 85, 0,184,121,243,230,139,184,184,184,105,137,137,137,170, - 10,138,172, 2,167,152, 68,161, 80,220,240,241,241,121,217,165, 75, 23,203,158, 61,123,194,193,193, 1,119,238,220,193,194,133, - 11,159,234,116,186,217, 33, 33, 33,220,223,157,200,156, 86,155,112,251,208, 33,139,214, 31,127,108, 57, 62, 40,104,201, 23, 99, -199,254, 60,107,214, 44,145,159,159, 31, 81,169, 84,184,113,227, 6,221,191,127,191,225,247,239,191, 95, 14, 51, 51,241,181,253, -251,165, 58,157, 46,170,130,214,146, 86, 93, 59,183,242, 91,242,243, 74,104,212, 57,184,113, 53, 24,233,233,201, 88,191,225,128, -159,187,187,123,171,152,152,152, 11, 21, 72, 79,223, 51,103,206, 56, 82, 74, 33,149, 74, 49,111,222, 60,184,186,186,194,210,210, - 18,217,217,217,248,250,235,175,173, 38, 76,152, 96, 5, 0, 97, 97, 97,133,238, 25,202, 67, 92, 92, 92,211,209,163, 71, 91,112, - 28,135,147, 39, 79,234, 8, 33, 51,207,158, 61,251,107,237,218,181,165, 45, 90,180,176,216,186,117,107, 51, 0, 33,239, 74,104, - 85,242,190,103,167, 79,159,110,212,191,127,127, 42, 22,139, 73, 70, 70, 6,172,173,173,177,122,245,234,220,248,248,248,224, 74, -151, 1,142,147, 42,149, 74, 41,165, 20,251,246,237, 67, 84, 84,212,103, 41, 41, 41, 9, 78, 78, 78, 7,190,249,230,155,201,126, -126,126,222, 79,158, 60,137,202,206,206, 94,148,152,152,248, 82,168,154, 4, 8, 16, 32,224,191,131,130, 73,240, 21,242, 12,111, - 52, 26, 71,159, 58,117,138,229,121, 30, 27, 54,108,192,237,219,183,169, 82,169,156,169, 84, 42, 87, 41, 20, 10,163, 90,173, 30, - 53, 98,196,136,193,115,230,204, 97, 90,180,104,129,107,215,174, 49, 85,171, 86, 29, 2, 96, 75,145, 7,183, 47,203,215, 70,102, -102,230,173,196,196,132,170, 69, 28, 84, 86,149,201,228,183,202,137,204, 27,156, 37, 56,197,108, 50,111,222,188, 92, 23, 23, 23, - 93,104,104, 40,214,173, 91,199,223,190,125,251,188, 84, 42, 93, 31, 23, 23,167, 53,133,243, 29, 37,122, 33,167,148,227,238,108, -155, 60,185, 86,131, 30, 61,248,207, 39, 77,202,145, 40, 20, 95, 45, 89,185,114, 74, 70,118,182, 43, 8,161,118, 86, 86, 81, 27, -230,205,155,223,249,163,143,114,194, 46, 92,144,223, 59,115, 70,236, 96, 48,220,175, 72, 56, 99, 98, 98, 46,248, 84,247,196,230, -141, 63, 67,175,215, 34, 62, 54, 79,167,165,164,102,162, 44,145, 85, 18, 39,199,113,153,125,250,244,145, 0, 80,124,242,201, 39, -210,164,164, 36, 84,175, 94, 29, 0,144,149,149,133,224,224, 96,212,172, 89, 19, 0,240,240,225,195,194,223,229,133,211,204,204, -236,163,102,205,154, 33, 42, 42, 10, 97, 97, 97,231,226,226,226, 82, 93, 93, 93,207,189,126,253,186,107,163, 70,141,112,240,224, -193,238,165, 9,173,138,230,145, 41, 66,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, -181, 3, 0,100,103,103,171, 40,165,198,202,112, 22, 13,147,193, 96, 0,207,243,176,181,181,205,205,239,112,188, 68, 57,142,100, -255,234,242, 41,112, 10,156, 2,167,192,249,111,224,124, 79, 96,186,103,120, 74, 41,199,243, 60, 66, 66, 66,112,224,192, 1,163, - 94,175, 31, 25, 23, 23,247,176,200, 37, 43, 93, 93, 93,207,244,233,211,103,203,147, 39, 79,216,240,240,112,152,210, 16, 21,133, - 70,163, 49, 20,223,146, 88,163,209,188,245,208,209,230,205,155,145,144,144,160,127,253,250,245, 89,142,227, 14,190,229,234,197, -183, 94,117,248, 59,165,218,143, 9, 57, 59,167,121,243, 14,179,207,156,145,125,254,237,183,218,161,195,134,125, 99,212,233, 12, -172, 68,194, 75,205,204, 24,163, 76, 38, 14,187,112, 65,190, 98,204, 24, 91,181, 86,123,114, 91, 5, 38,152, 23,177,104, 97,232, -231, 19,161, 46, 98,209,186,118, 43, 2, 21,181,104,105, 52,154,128,124,209, 17, 13,192,249,211, 79, 63, 5,207,243, 80,171,213, -200,206,206, 70, 92, 92, 92,230,176, 97,195,140,249,226, 73,212,187,119,111, 75, 83,120,171, 85,171,230, 42, 22,139,113,242,228, - 73,136,197,226, 96, 0, 16,139,197,193,103,206,156,233, 58,112,224, 64,184,185,185, 85, 35,132, 16, 90,142, 74,114, 10,236,185, -135, 2, 62, 32,168,145,247,198,163,134, 99, 96,207, 7, 4,120,154,239, 53,254, 81,253,250,245, 1, 19,231,101, 21, 69,254,226, -142,229,246,246,246,123,167, 76,153, 50,182, 73,147, 38, 29,231,204,153, 67, 0,176,239,196,186,201,113,111,229,122, 66,128, 0, - 1, 2, 4,252,123,173, 90, 37,157, 23,149,113,195,134, 86,173, 90,141, 4,192, 18, 66,214,197,198,198, 62, 44,126, 77, 92, 92, - 92,132,155,155,219, 98,111,111,239,194,141,166, 43, 18,168,124, 79,238, 11, 25,134, 76,201, 59,174,184,131,202, 34, 91,157, 76, - 1, 64, 24,134,221,114,247,238,221,111,163,163,163,147, 43, 42,252, 74,194,187, 88,117, 8, 0, 59, 40,125, 57,144,144, 83,147, - 2, 3,219,119, 30, 51, 6,117, 58,119,182,116,245,242, 50,170,245,122,254,225,229,203,228,234,190,125,146,123,103,206,136,213, - 90,237,201, 3,148, 70, 87, 52,156, 49, 49, 49, 23,170, 87,115, 63,221,183,119,215,142,213,188, 93, 1, 0,207, 95,198, 33, 37, - 45,243,116, 69, 68, 86, 49,193,213, 99,245,234,213, 71, 36, 18,137,168,232, 86, 54,122,189, 62,173, 64,140, 17, 66, 92, 55,108, -216,176,139, 97,152,168,242,248,194,195,195, 15,207,158, 61,187,247,171, 87,175, 78, 71, 71, 71,191, 2,128,168,168,168, 87,174, -174,174, 91,226,227,227,123, 71, 69, 69,237,167, 38,168,144, 98,155, 74, 35,236,242, 94, 57,128,218, 5,155, 74, 87,118, 47,195, -162,200,119,173, 48,211,197,197,101, 71,199,142, 29, 71, 0,136,125, 27, 62,157, 78,103, 80,171,213,156,209,104, 20,233,245,122, -170,211,233, 12, 66,181, 36, 64,128, 0, 1, 21, 66, 35, 0, 5, 59,145, 20, 24, 80, 28,138,253,214, 33,127,187,192,130,234, 55, -255, 56, 25,192,173, 34, 28, 69,207,151,119, 47, 0,164, 0,120,144,127,174, 36, 45,178,161,180,227, 82,133, 86,108,108,236,126, -152,176,105,180,169,215,149, 33,148,166, 19, 66, 86, 20,136,166,183,229,224, 56,238,157,236, 15,199, 48,204,203,238,221,187, 87, -232,250,242,174,217, 69,105,212, 87,132,108, 61,246,203, 47,245, 78,174, 91,231,102,228, 56, 59, 2, 80, 86, 42, 77,213,233,116, -175, 28, 12,134,251, 21,181,100,189, 97,141,121, 30,211, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171,213, 27,148,210,251, - 0, 60,202,185, 38, 14, 64, 11, 19,197,224, 78, 0, 59, 75, 16,236,187, 0,236, 50,185,215, 80,176,169, 52,192,240,132,239, 27, -208,188,223, 62, 0,124,193,166,210,239, 18,241,241,241, 79,144,239,231,237,109,240,234,213, 43,173,183,183,247,182,133, 11, 23, -126,114,239,222,189,221,177,177,177, 90,161,206, 20, 32, 64,128,128,138,137, 44, 66,200,177,252,182,167, 91,126,103,255, 88,241, -223, 5,215, 20, 92, 87,244,154, 2,142,226,231,203,186, 23, 0,166, 77,155,246,237,252,249,243,149, 0, 76,218,140,185,168,227, - 82,209,191, 33,245,222,197,230,185,239,122, 3,222,152,152,152,141,127, 69, 92, 87,230, 9,169,235,127,101,122, 62,125,250,148, -188,207,111, 91,193,166,210, 69, 16,248, 95, 8,247,203,151, 47, 87,183,110,221,122,125,108,108, 44, 7, 1, 2, 4, 8, 16, 80, - 17, 56,148, 36,140, 74,209, 3,221,202,250,191,152, 32,250,211,117, 37, 29, 19, 66,142,205,159, 63,191,155,169,129, 45,106,209, - 98,132,188, 19, 32,224,239,195, 63,177,234, 85,128, 0, 1, 2, 4,148, 42,136,222,176, 98, 21,136,175,226,199,211,166, 77,251, - 22,165, 12, 27,230, 95,227, 66, 8, 25,153,191,234,240,141,249, 90, 4, 64,251, 82, 30,110,242,106, 2, 66, 72,251, 74, 68,238, -172,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,191, 56,203,227, 46,229,254,160,210,134,250,202, 26, 70, 44,254,187,188, -123, 77,184, 54,184,148,184,140, 44,186,215,225, 27,123, 30, 22, 76,114,254, 43, 62, 0,218, 11,156, 2,167,192, 41,112, 10,156, - 2,167,192, 41,112,190,229,167, 17,165, 52, 8,121,187,166, 80, 74,105, 16,165,180,243,180,105,211,166, 23,156,155, 54,109,218, -116, 74,105,187,130,235,242,175, 41,188,167,224, 92,241,239,226,231,202,185,182,180,244, 24, 89,244,119,209,227,127,197, 28, 45, - 1, 2, 4, 8, 16, 32, 64,128,128, 50,112, 11, 64,163, 34,214,166,100, 0, 15,231,207,159,159, 94,100,238, 84, 50,128,251, 0, -234,230, 95,151,156,111, 80, 42, 58,183, 74,151,127,172, 43,225, 26,157, 41,215,150, 98,133,219, 80,210,111, 0,130,208, 42, 13, -245, 92,216,239, 61,221, 29, 27, 22, 90,253,120, 30, 0,192,231,123, 31, 40,116, 67,192,243,160,148, 34, 46, 41,227,206,131, 68, - 58,171,178,207,243,115, 35,182,142,114,249,114,158,210,230,249,167, 46,100,166,106, 39,134,102,210, 12, 83, 57,106, 57,147, 90, -114, 6,223,240, 20,117, 0,128, 33,120,160,225,177,248, 81, 2,125,244,182,233, 65, 8, 33, 1, 14, 24, 41, 85, 40, 7, 88, 89, -219,212, 72, 79, 79,121,170,215,104,247,134, 39, 99, 61,173,132, 99,168,234,182,228, 3,158,226, 91, 0,140,152,193,210,136, 84, -122, 94, 40,117, 2, 4, 8,248,155,240,182,126,241, 74,114, 29,244,182,139,144, 4, 7,123,166,137,173,226,184,105,226,117,255, - 24, 42, 36,180, 2, 28,201, 24, 16,204, 5, 64, 65,241, 93, 88, 18, 93, 91,161,251, 93, 73,123, 57,203,110, 2,192,106,244,198, - 73,148,199,197, 18, 27,117, 6, 45,229, 18,118, 41, 0, 94, 99, 52, 14, 15,139, 51,125,190, 88,160, 59,233, 44,226,153,109, 60, -165, 98, 35, 79,183,128,226,152,185, 4, 87,174,197, 80, 77, 69,194,234,233,238,216,240,208,205,248,142,231,215,142, 71,147, 58, -213, 65,141, 28,192, 27,160,108,241, 13,206, 45,251, 20, 77,106,121,130,242, 6,128,231, 96,222,101, 9,186, 4, 90, 85,250, 37, -241,115, 35,182, 94,246,142,161, 27, 55,110,114,118,173,230, 79,120, 78,143, 39, 55, 79, 15,158, 48,101,118,219, 64, 43, 18,104, -138,216,170,235, 74, 62,175, 94,213,239,155,137,115,127,102, 93, 92, 61,204,120,131,150, 75,120,249,168,254,202, 69,179,247,215, -117, 37, 75,239,199,209, 77,166, 10, 42,127, 7,140, 18,201,164,253, 20,114,179, 26, 42, 85,246, 51,163,222,176, 55,208, 85,212, -121,241,146,229,245, 90,119,232,106,110,204, 78, 96, 12, 60,252,247,236,222,229,245,203,234, 53, 93, 9, 33, 31, 81, 74,249,138, -196,153,167,152, 18,177,117,100, 87,177,136, 37,181, 62,219,200,194,196, 37,179,197,225,239, 68, 6, 17, 90,190,123, 9, 74,112, - 41, 60,145,238,172,204, 51,106, 57,145, 95, 9,133, 47, 8,246, 17,138, 93, 97, 73, 52, 73,168,239, 4, 8,120,191,192, 48,204, -121,158,231,219,188, 75, 78, 66,200, 7,148,210,235, 66,234,254,255, 70,197, 44, 90, 4, 63,132, 69,190,182,129, 81,143, 0,223, -106,223, 3,168,144,208,146,179,236,150, 91, 79, 19,157,193,233,177,241,199,177,187,117, 6,128, 51,232, 97,228, 12, 48,114, 6, -112,156, 30, 70,131, 1,212,160,197,236,223,206, 3,186,108, 52, 12,244,217, 2,192,197,212,103,136, 41,179,237,206,229,211,182, - 68,151,137,157,107,231,127,249, 58, 57,231,203,179, 15,226, 82, 2,156,200,244,240, 36,252, 94, 17, 65,112,126,221,120,108, 63, - 24, 28,179,226,215,220,199, 60,165,176,181, 84,248, 13,238, 22,230,177,245,240,249,215,203,183,104, 30, 3,128,149,153,212,111, -200,131,167,158,111,147, 9,142,114,249,242,245,107,126,113,118,177, 83, 16,238,234, 2,112, 70, 35, 60,188,130,216,233,227, 6, -187,252,176,108,211, 50, 0, 67,203,186,191,166, 19,241,247,173, 94,107,210,150,224,171,158,185, 89, 73,186,211, 59,190,141,132, - 22, 6,103,183, 90,226,239,231,255,204,206,152, 58,254,235,154, 78,228,198,227, 68, 26, 94, 78,165,192,212,114,196,225,249, 11, -150,212,105,219,165,155, 57,159,147,204,106,114,115,124, 55,254,182,105,110,205, 58,141,149, 45, 2,221, 37, 73,123, 71, 19,117, -118, 26,244,140, 92,214, 54,160,189,165,250,147,129,134,141,155,183,143, 3,176,178, 66,221,193, 34,195,214, 60, 95,249,222, 37, -161,104,113,239,250,249, 81,198,184, 91,160, 70, 3, 96,212, 23,126,195,104, 0,229,243,190,155,140,254, 13, 40,193,135,151, 73, - 21, 48, 69,199,179,151,111,185, 36, 38,196, 55, 90,182,228,167,233,254,142,228, 4,140,216,246, 40, 13, 23, 42, 42, 48, 5, 8, - 16,240,239, 5, 33,132,163,148,138,222, 49,103, 87, 74,233,241,183,228,248, 6,192,231,249,135,155, 40,165,139,223, 65,184,220, - 1, 56,231, 31, 38, 80, 74, 99,132, 18,240, 86,233, 57,178,232,144,225,219,248,209,146,131,242,192,190,158, 0,160,168,104, 64, - 40, 32, 7, 97, 1, 67, 46,122,116,233, 0,123, 71,103,192,160, 2,244, 42,192,160, 6, 12,185,128, 65,141,148,248, 40, 64,159, - 11, 60, 63, 1,142, 82, 89,133, 99,172,205, 4, 34,246,162, 93,125, 79, 56, 88,201, 49,190,135,191,253,134,147, 17,155, 54,157, -126,210, 30,192, 0,147,194, 74, 41,154,212,174,129, 21,155,114, 31, 31,185,147,212, 9, 0,130,234,217,159,108,226,239,229,177, -124,139,230,113,240,131,180,206, 0,208, 37,208,234, 68, 99, 63, 23, 79,254, 45,172,190, 60,165, 45, 92,171,212, 32,198,123,235, -193,103,197, 32, 43, 75,141,152,151, 91, 97,227,214,128, 49,242,104, 85,222,253, 10, 22,211,190,154,177, 80,172,202, 74,212,241, -250,100,163, 3,155,206,138,164, 60, 65,236, 5,109, 14,159, 97,156, 56,242, 83,110,210,172, 31,167, 1, 24, 92,166,117,200, 17, -227,150, 46, 93, 94,187, 89,195,154,142, 9,251,199,147,156,244, 68,112,172, 82,214,227,195,102,176,246,241,231, 19, 67,150, 18, -105,181,246,176,182,171,134,216,171, 59,240,234,250, 1,210,188,126,111,217,239, 59, 37,159,148, 38,180,124, 28, 72,243, 78, 45, - 27,239,174,230,233,234, 66, 41, 15,158,167,160,188, 17,159,245,237,136,233,123,158,195,104, 52,162, 79,167,230,237, 22,142,106, - 75,121,158, 7,165, 60, 94, 39,164,170,254,184,241,184, 93,100, 26,189, 97,138,165,170,238, 7,109,154, 63,184,115,189,166, 33, -226, 40, 26, 14,158,255,152, 0,151,139,148,185,230,119, 79,253, 94, 19,248,173,178, 47, 15,169,229, 8,227,171,147, 11,224,217, -114, 36,187,126,231, 73,135,204,228,216, 33,251,183,174,233,187,118,253,250,237, 0, 70, 11, 85,140, 0, 1,239, 7, 40,165,239, - 92,108, 69, 69, 69,197,189,141,216,114,119,119,111, 9, 96, 81,193, 12, 13, 66,200, 34,111,111,239,217,255,235,168,190,209,215, -203, 52, 26,141,131, 99, 98, 98, 46,150,197,217,173, 91, 55, 87, 0,222, 69, 56,189, 9, 33,222, 37, 93,107,109,109,109,108,218, -180,233,171, 99,199,142,197, 9, 37,164,226,130,171, 50, 66,235,113,244,222,241,245,181,241, 57, 0,240,216,132, 66,251,198,144, -159,198, 96, 92,176,121,238,167, 11, 2,170,216, 34, 59, 87,135,211,183, 95,193,104, 52,192,200,113,249,150, 45, 14, 70,206,128, - 78,117,237,209, 84, 51, 26, 43,143, 61, 1,103,228,231,151,197, 89, 28,122,202, 15,170,215,190,255, 30,158,167, 82,153,152,201, -244,245,176,115,156,212,167, 46, 51,190, 71, 0,212,122,174,191,191, 19,249, 35, 60,145,110, 52,137,147,255,179,203, 35, 90,210, - 57, 35, 87,110,220,203,176, 70, 53, 25,216,173,131, 37,213,102,194,144,242, 28,217, 42, 3,158,167, 26,144,160,201,128,140,196, -155,196,201, 83,212,113,119,115, 81, 94,217, 61,245,165, 29,155, 37,114,100, 57,137,148,225, 96,228, 41, 75, 51,194,181,182, 53, - 59,136, 11,230,109,149, 21, 78,133,210,226,211,150, 29,131,172,162,119,140, 36, 10,223, 78,112,172,239,129,151, 23, 55, 35,233, -246, 49,164,198,189, 34,150,154, 12, 56,217, 85, 71,151,193, 3,176,120, 64, 35,100,103,101,131,141,143,180,146,138,101,214,165, -113, 82, 35, 6, 47, 93,248,163,139,136,101,242,210,179,224, 99, 52, 64,173,213, 2, 70, 14,114, 17, 15, 66, 11,254, 51,192,104, -208, 43,235,244,158, 58, 22,192,141,242,226, 30,158, 72,119, 6, 56,146, 22,224, 13, 53,169, 65, 13, 2, 92, 14, 75,162,133,226, -199,223,137, 12,106,208,105, 88, 11, 74,112,169, 50,121, 20,104,135,110, 13,189,205,205,204,178, 30, 35,102,223,151,136,132,156, - 58, 53,251, 28,131, 62, 27,167,220,176, 97, 67,119, 66,200,152,162,115,212,254,138, 77, 86, 5, 78,129,243,191,202,105,101,101, - 85,181, 74,149, 42,179, 13, 6, 67, 75,137, 68,226,164,215,235,193,243,124,130, 84, 42,189,244,234,213,171,121,153,153,153, 47, -254,109,113,127,240,224,129,201, 98,203, 20, 78,177, 88,140, 39, 79,158, 60, 51, 85,108, 21,231, 20,139,197,219, 46, 95,190,140, - 61,123,246, 0, 0, 34, 34, 34,224,227,227, 99, 86,210,189, 47, 95,190, 52,107,221,186,245, 54, 20,219,209,163, 56,231,195,135, - 15,171, 30, 61,122, 20,251,246,237, 3, 0, 60,121,242, 4,190,190,190, 37,134,231,242,229,203,236,199, 31,127, 92, 21, 64,220, - 95,157, 71,239,131,200, 42,250,253,134,208, 10, 14, 14,166, 65, 65, 65,164,248,239, 18,240,220,211, 70, 90, 31, 26, 35, 0, 60, -175,104, 32,194, 19,232,194,186, 46,226,206,231,246,173,110, 41,151, 48,152,179,113,210,235,228,180,236, 15, 68, 4, 60, 0,112, - 20,140,141,185,244,218,252, 33,117, 61,211,115, 52, 56,114, 51,246, 98, 88, 98,197, 76,164, 97,113,244, 12, 0,235,255, 53,148, -196,119,200,226, 51,187,118, 77,235, 92,103, 98,143, 58, 56,124,245,213, 68, 0,229,122,125,167, 60, 15,202,115,133,147,223,243, -187, 14, 0,255,230,166,192, 60,104,222, 57,190, 98, 22,173,214,132,136,210, 29,209,197, 86, 41, 93, 53,106,212, 8, 75, 67,242, - 83,164,233, 36,120,157,174, 65,130, 90,140, 28,145, 35, 98, 31, 63, 52, 50, 4,103,202,207, 92,100, 81, 78, 99,109, 35, 53,103, - 2, 59,140,117,203, 58,249,109,186,148,112,172,101,175, 31,172, 83,206,253,252,138,203, 77,206, 37, 4,229,238,173,103,101,101, -237,163, 73,125,197,102,166,167,192,218, 57, 0,157,251,119,195,119, 65,254,200,206,202, 69,114,218, 53, 90,195,197,146, 68, 93, -218,142, 25, 93,106, 33, 53, 49, 30, 90, 3, 64,114,181,105, 26,157, 38,167,212,116,100,176,126,194,228, 41,131,188, 92, 28,204, - 10, 22, 21, 80,222,136,186,181,170,161, 67,203, 38, 56,115,249, 10,110, 61,140, 0,159,191,168,128,242, 60, 98,146,210, 19, 53, -122,227,230, 10, 37,168,145, 3, 53,104, 74, 20, 98,168,196,144, 97,109, 39,162, 52, 2,179, 62,168, 97, 49,124, 90, 55, 47, 11, - 51, 25,129,198, 96,132, 70,103, 64,246,149, 85,176,171, 82, 27, 74,185,156,212,135, 90, 4, 64,216,183, 80,128,128, 34,232,215, -175,159, 60, 49, 49, 49, 36, 40, 40,200,191, 67,135, 14,202, 22, 45, 90, 32, 55, 55, 23,167, 79,159, 70,110,110,174,151,135,135, -135,215,233,211,167,123,127,240,193, 7,225,238,238,238,173,247,238,221, 91,145, 57,180, 34,252,111, 50, 59, 15,128, 35,132, 32, -255, 28, 1,192,191,205, 62,183, 82,169, 20, 81, 81, 81,239,220,178, 21, 27, 27,251,172, 50,150,173,156,156, 28,137,155,155, 27, - 28, 28, 28, 96, 52, 26,145,155,155,139, 67,135, 14, 33, 51, 51, 19, 60,207, 67,161, 80,224,135,165, 27,241,248,110, 8,110,220, -184,129,204,204, 76, 73,121,156, 49, 49, 49,164,110,221,186,208,106,181,224, 56, 14, 26,141, 6,103,207,158, 45, 60, 22,137, 68, -152,242,253, 50, 68,220, 14,193,189,123,247, 16, 19, 19,243,183,236, 54, 82, 1, 45,242,111,180,134,110, 40,171,192,254,173, 48, - 26,185,233, 27,182,236,186, 54,125,244, 0,140, 27,216,222, 99,222,234, 3,237,195,147,233, 22, 0,240,119, 32, 67, 62,105, 83, -195,211, 90, 41,198,119, 59,110, 3,148, 78,127,219,231,133,166,210,136, 0,103, 50,241,224,141,168,144,111, 7,212, 71, 53, 23, - 75,159,234,213,137, 52, 50,210,132, 61, 5,121, 14, 54,230, 50,191,160,122,246, 39,193,243,176,182,144,213,132,145,131,181,185, -204,175, 75,160,213, 9, 0,176, 86, 74,106,150,100,249, 42, 13,141, 60, 37, 35,149, 50,209, 72,179, 6, 46,158, 67,187,119, 80, -116,237,222, 91, 97, 46,230,144,122,227, 52,178,196,238, 48,216,122, 65,107, 72, 67,204,139, 72,227,185,235,143, 98, 83,178,181, -147,202, 13, 38,197,197,216, 23, 79, 28,170,214,233, 96,147,114,108, 70, 82,213, 97, 59,188, 25,240, 76,246,246, 94,137,102,142, -141, 21, 55,159,191,200,225,233,159, 45, 58,197,145,149,153,249,202, 96,132,139,218, 40,178,136, 60,255, 59,166,117,169,141,244, -180, 36,104,244, 28, 50,213,156,222,217, 90, 46,211,190, 8,133, 86,207, 65,103,224, 33,182,118,195,233,107, 15, 83,120,131,225, - 68,105,156,145, 41,244, 30, 0,243,162,231,170, 59,144,186, 83, 45, 21,247, 96, 80, 35, 42, 38, 14, 91,130,175,213,207,191,174, -242,133,156,231,242,134,159,139, 88,178, 8, 69,139,202, 76,130,175,229, 68, 26, 43,228,146, 95, 22, 77,252,216,255, 67, 95, 91, - 25, 31,115, 13,132,215,195,204, 40,130, 90,106,132,149, 71, 53,240,186,108,170,210,104, 50,194, 0,193,211,187, 0, 1, 69, 80, -179,102, 77,103, 43, 43,171,176,201,147, 39,219,246,234,213, 11, 7, 15, 30, 68, 86, 86, 22, 54,111,222,140,229,203,151, 99,238, -220,185, 48, 24, 12,216,176, 97,131,114,255,254,253,141,215,172, 89, 19,227,229,229, 21, 16, 21, 21,149, 80, 94,159, 18,128, 12, -128, 56,191,237, 34, 0,248,227,199,143,163,107,215,174, 56,126,252, 56,159,127,206, 72, 8, 49, 80, 74, 43,181,159,168, 84, 42, -133, 84, 42, 69,102,102,230, 59, 17, 91, 98,177, 24,230,230,230,144, 74,165,200,206,206,174,176,216,226, 56,142,141,137,137, 65, -102,102, 38, 58,116,239,142,101,243,231,163, 77,155, 54,232,208,161, 3, 40,165, 56,123,246, 44,218, 55, 11,196,128,143, 90,227, -209,163, 71,224, 56,206,164,240, 38, 36, 36, 32, 49, 49, 17,157,187,119,199,198, 53,107,208,164, 73, 19,248,249,249,129,227, 56, -132,132,132,160,111,167,102,144,247,108,143,136,136, 8,161, 80,155,104,205,122, 87,115,180,222, 26,161, 73,244,186,191, 3, 57, - 54,176, 83,227,110,221,155,251, 99,227,238,115, 63,250,251,147, 93, 0, 96,103, 33,251,225,211, 54,213, 16, 30,157,142,115,247, -226,142,133, 39,191,155,213, 26,188, 17,246,118,150, 74,128,149, 66,173,231, 57,203,231, 40,119, 2, 51, 79, 41,148, 45,167,226, -147,238,225, 30, 77,252, 61, 60, 10, 86, 29,154,119,253, 25, 67, 30, 62,243,108,228,231,236, 9,163, 1, 48, 26, 96, 57, 96, 7, -240,189, 89,185,225,104, 94, 85,118,102,234,164,137, 77,187,244,236,175,144, 42,173, 96,204,122, 13, 67,194, 67,164, 62,189,136, - 92,165, 15, 18,162,158, 99,207,169, 27,153, 79, 99, 82,179, 24, 6,167, 19, 51,181,223, 68,166,209,156,242,120, 53, 6,204,159, - 61, 99, 82,208,158, 93,187, 45,100,213,154,147,200, 85, 93, 51,165, 34, 78,230,224,221,128, 81,201,237,233, 79,155,119, 91,230, -234,176,160, 60, 30, 85,110,214,129,179,167, 79, 14,168, 81,181,185,197,203, 91,193, 80,107,180,208, 26,128,128,198,173, 97, 52, - 82, 41, 97, 8,111,201,178, 36, 41, 53, 29,196, 96, 76,188,116,255,101,252,229,251,207, 89,173, 69,249,220,111,168,123,194,126, -213,189,117, 61,192,160,198, 71, 45,107, 99,217,246,115, 95, 2, 24,246,118,153,156,103,209,162, 64,243, 0, 71,178, 14, 64,243, -219,135,150,215,108,216,115, 2, 42, 98,209, 10,116, 32, 93, 2,171,187,254,190,236,135,169,182,118,238, 62, 44,225, 13,160,206, -117,128,172, 24, 74, 98,174,193,202,173, 9,140,174,205,176, 97,229,146, 28,158,167,187, 42,227,218, 66,128,128,247, 25, 26,141, -230,192,194,133, 11,109,187,117,235, 86, 96,145,193,181,107,215,176,105,211, 38,152,153,189, 89, 79,118,237,218, 21,148, 82,219, - 57,115,230, 28, 0,240, 97,105,156,205,154, 53,235,190,114,229,202,184,122,245,234, 61,207, 23, 91, 18, 0, 76,104,104, 40,243, -250,245,107, 98, 99, 99, 67, 93, 93, 93, 13,113,113,113, 60, 0,227,103,159,125,198,154,155,155,215,200,201,201,185, 80, 89,161, - 37,149, 74,223,201,156, 45,177, 88, 12, 66, 8,164, 82, 41, 36, 18, 9, 40,165, 21, 18, 91, 70,163, 81,116,252,248,113,220,190, -125, 27,115,235,213,195, 68, 55, 55,216,218,218, 34, 36, 36, 4,148, 82,152,153,153, 33, 45, 45, 13,187,118,237, 66,219,182,109, -193,113,156,196, 20,222,125,251,246,225,206,157, 59,248,190, 97, 67, 76,180,178,130,185,185, 57,206,158,205, 27, 13,148,201,100, -136,138,138,194,217,179,103,209,186,117,107,161, 80,191, 37, 76, 46, 60,173, 9, 17, 17, 39, 56,235,117,106, 80,142, 2, 4,174, -254,254, 68, 18, 30, 78,245, 21,125, 40,195, 96,198,202, 45,199,130,126,158,208,157,140,236, 81,223,117,222,239,231,199, 0,192, -240, 62,190,110, 74,153, 8, 43, 14,135, 83,134,193,140,119, 17, 65,127,127, 34, 97, 24,140,233,208,196, 15,113, 25, 58, 68,198, -101,252, 17, 78,169, 73, 67, 61,231,126,254, 4, 91,143,132,188, 94,190, 85,243,152, 82, 10,107,115,153,223,144, 7,145,158,191, - 31,191, 19,189,116,143,230, 49,229, 41,172,149,226,154,195, 30, 53, 43,119,213, 97, 35, 79,201,200,233, 83,191,105,214, 99,216, -100, 57,247,120, 47,116,145,167,192,235,213,200,210, 75,144,193, 58, 35, 38, 58, 26, 63,109, 56,246, 58, 43, 87, 55, 32, 52,169, - 98, 2, 51, 34,133,230,248, 59,144, 94, 63,125,247,237,153,249, 63,204, 49, 87, 63, 15,201, 97, 9,167,102,171,180, 18,253, 48, -247,103,146,173,213,245,143, 76,163,217,229,241,104, 45,176, 96,225,210,149, 65, 35, 6,247,126,236,235,211,202,206, 24,247,194, - 78,147,149,149,180,227,228, 29,231,252,158, 34, 1,128,200,152, 84, 36,103,230,114, 70,206,112,193, 66,140,121, 97,166, 88, 7, -243, 81,205,137, 56,244,106, 81,231, 99, 7, 11, 9,212, 57, 25,112,180, 16,163, 83,147,234, 31, 87,115, 34, 83,159, 39,210,228, -202, 11, 45, 3,168, 65,141,235, 11,218,214,164, 70, 67, 77, 24, 13,208, 63,216, 86,113,203, 24,193,196,113, 45,205, 45,109,116, - 47, 25,228,154, 1, 10,123, 16, 75, 47,192,202,155,136,107,245, 71,220,243, 48,238,203,143, 7,167,190,120, 21,243,171,189, 2, -139,133, 42, 68,128,128, 55, 17, 21, 21,245,233,244,233,211, 47, 55,105,210,196,201,222,222, 30,181,107,215,198,145, 35, 71, 48, -121,242,228,194,107,234,213,171, 7, 74, 41,210,210,210,176,112,225,194,132,184,184,184, 79,203,226, 12, 11, 11,123,188,117,235, -214,150,254,254,254,122,137, 68,146, 1, 64,150,145,145, 33, 79, 75, 75, 35, 26,141, 6, 60,207,243, 86, 86, 86,198,184,184, 56, -195,128, 1, 3,180, 87,175, 94,173,158,155,155, 27,245, 54, 22, 45, 15, 15,143,208,212,212,212, 76, 66,200, 91,187,126, 40, 16, - 89,246,246,246, 14, 57, 57, 57, 60,128,244,202,184,126,224, 56, 14, 13, 27, 54,196,169,139,119,113,252,220, 85,100,197, 61,193, -152, 17,159,162,118,237,218, 56,117,234, 84,165,243,172,110,221,186, 56,121,246, 50, 46,223,190,143,168,136, 7,248,114,204, 8, - 4, 4, 4,224,228,201,147, 66,129, 54, 29,193,197,230,102, 5, 23, 23, 90,173,131,131,131, 11,122,230,127,146,175,181, 28, 72, - 93,215, 26,210,109,115,186, 84,175, 37,238, 48, 7, 68,172,192, 94,159,147,205,102,252,180,234,113,109, 39, 50,248, 97, 98,249, -171,195,222,176,106, 37,210,176, 0, 71,178,243,254,163,154, 31,127,212,196, 3, 27,143, 40,103, 1, 64,255, 22, 85,113,243,105, - 50,110, 68, 36,237, 12, 75,162, 97,111, 27,235,218, 78, 68, 9,138,157, 11,191,234,209,218,203,221, 25,155, 14, 94, 6, 33, 56, - 96, 82,131, 75, 41,109,226,239,133,229, 91,139,175, 48,116,246, 92,186, 71,243,248, 84,104, 86, 23, 0,232, 88,203,236, 68,163, -234, 54,158,229, 89, 54, 20, 82,209,168, 46,189, 63,145,115, 17, 71,128, 87,103, 65, 56, 45,212,122, 30,241, 41,217, 80, 89,121, - 32,228,218,125,117,166, 70, 55, 33, 44,169,114, 86,188,240,100,250,188,158, 11,137,206,201, 85,187, 40, 29,170,107, 88,134,231, -115,180, 20, 55,195, 95,101,133,197,211, 39,166,112, 68, 70, 82,221,135,238,164,197,186, 45,123,102,139, 37,210,254, 44, 1,113, -180, 54,115, 88,247,243,247,176,176, 48, 7,175,203, 1,114,147,209,235,139,159,146, 31,198,234,171, 2,128,175, 61, 49,111, 89, - 77,178, 69,196,144,152, 63,158,233,102,150,107, 94, 53, 96,244,224, 78,245,196,188, 46, 23, 95, 45,220,141,245, 83,123,224,147, -118,181,196,193, 87, 34, 70, 3,152, 87,217,188,166, 70, 14,212,160,198,135,223, 94,124, 76,128,203, 20,104,126,123,207, 15, 53, -129,187, 38,115, 52, 32, 68, 44,114, 33,181,234,120,154, 73,248,152, 43,224, 99,174, 80,214,163, 25,136,103, 75, 66,156, 27,210, - 95, 22,205,205,221,184,113,211,105,158,193,119,229,185,202, 16, 32,224,255, 43, 40,165,207,173,173,173, 59,119,237,218,245,220, -169, 83,167,108, 3, 3, 3, 1, 0,183,111,223, 6, 0, 52,108,216, 16,190,190,190, 72, 76, 76,196,192,129, 3, 83,226,227,227, - 59, 83, 74,203,156,243,155,157,157,253, 98,223,190,125, 78,185,185,185,245,102,206,156,153,228,229,229,149,165,209,104, 72, 70, - 70, 6,207,113, 28,108,108,108,164,245,234,213, 67,211,166, 77,115,174, 93,187, 86,229,245,235,215,217, 0, 94, 85, 38,252, 61, -122,244,192,197,139,121,139,246,222,133, 95, 45,137, 68,130,192,192, 64,183,231,207,159,199,230,167,207,245, 74,164,105,225,239, -251,247,239,227,194,221, 24,136,116,106, 72,147,227,112,253,224, 62,116, 31, 53, 22, 28, 87,249, 89, 12,247,239,223,199,161,179, -215, 97, 38, 19,225,201,147, 48,236,219,183, 15, 99,198,140,121, 43,206, 74,162, 76, 45,242, 47, 47,247,241, 0, 54,148,106,209, - 10, 10, 10,186,128, 18,188,218, 86,175, 78,164,178, 28,204,233,212,208,109, 74,255,230,213, 89, 67, 86, 28,120, 35, 15, 86, 12, - 56,218, 91, 98,219,182,157, 85,119,238,222,125,173,174,155,120, 37,207,113, 51, 30, 38, 82, 85, 5,194, 53,231,231,221,151,251, -111,155,212, 90, 52,166, 75, 77, 91, 0,144,136, 24,172, 56, 18,198, 1,152,243, 54, 17,254,208,157,200,115, 12, 24,233,108,103, - 53,107,250,231, 65,182,173, 27,250,226,194,141, 80,172,220,119,237,162, 52, 9, 91, 77, 78, 56,222,128,226,250,169,164, 85,135, -224,203,159,119,105, 52, 82,103,137,153, 13,244,175,206, 3,122, 13, 52, 90, 61, 94,167, 26,241, 58, 77, 3,145, 82,130,219, 17, - 49,106,187, 4, 28,171,108,156, 9, 33,164,121, 53,185,235,236, 31,151,186,107,212, 57, 92, 86,122, 10, 39,145, 94, 23, 43, 21, -178,248,138,240, 92,139,161,154, 86, 85, 37, 13, 0,158,149,202,169,234,219,175,135,154,197,134,159, 66, 13, 38, 14,132, 82, 40, -106, 5,193, 66,193, 74, 90,120, 75,162, 1,192,219,217, 74,186,240,187,201, 86, 19,166,126, 87,238, 28, 48,127, 66, 36,181, 27, - 57, 79, 8,244,178,193,197, 59,143,113,241, 97, 84,216,197,219, 79, 2,218,212,118,133,175,187,245,120,127, 66, 22,132,211,138, - 91, 72,243, 50,134, 3, 12,154,194, 85,135,254, 78,100, 80,163,254, 51, 75, 92,109, 88, 26,188, 1, 62,194, 72, 65, 88, 22, 32, - 76,222, 10,200,215, 87, 32,178,174, 70,119,238, 57,164,218,180,105,235,247,225,201, 84,176, 98, 9, 16, 80, 14, 50, 50, 50, 30, - 40,149,202, 78,117,234,212,217,252,213, 87, 95, 89, 12, 30, 60,216,117,196,136, 17, 12, 0, 36, 38, 38,242,203,151, 47,143,251, -229,151, 95, 50, 83, 82, 82,134,233,245,250,135,166,116,124, 9, 33, 87,127,253,245,215,228, 75,151, 46, 5, 52,110,220, 88,214, -160, 65, 3,222,198,198, 70, 36,147,201,140, 58,157, 78, 19, 17, 17, 97,124,254,252,185, 75, 70, 70,198, 51, 0,145,149, 25,214, -207,183, 94,205, 99, 89,118, 54,165, 52,240, 93,204,209, 82, 42,149,174, 0,158, 17, 66,106, 84,116,216,240, 79, 13,182, 72,132, -244,244,116,168, 18,194, 32,143,121,138, 58,102, 12,252,109,204, 97,105,105,249, 86,162, 40, 51, 51, 19,200,141,197,229,203,247, - 1,142,131,149,149, 21,172,172,172,254,118,161, 85,154, 22,249, 47,160,248, 74,195,252,114, 91,246, 28,173, 0, 71, 50,198, 70, -138,229,163,130,170, 75,188, 61,221,161,141,185,141,251,175,115, 48,227,131,198,225,172,204, 66, 51,234,211, 30, 13,123,247,173, -130,214, 77, 27, 17,111, 23,171,241, 11,126, 94,251, 69,128, 19,153, 28,150, 72, 87,152, 18,168,176, 36,250,162,150, 35,217,116, -254, 65,204,104,119,165, 26, 60, 79,113,254, 97, 60, 30,190, 74,223,244, 40,137,190,168, 72, 4, 3, 92, 73,123, 17,152,221,148, - 82,185,149,153, 89,118,189,186, 53,237,219,127, 88,151,233,220,170, 33, 36, 44,112,249,230,125, 76,252,249,192,117,158,167, 65, -119, 76, 28, 54,204, 91, 97,248,166,128,202, 91, 97,104,120, 99,133, 33,165,148,230,173, 58, 44,123,218, 23,203,146, 4, 85,212, - 45,103,177,157, 15,212,145,231,241, 42,157, 71, 84, 82, 54,178, 68,206,208,198,198, 2,148,143, 14,161,180,210,165,218,222,222, -222,177,170,191,111,245, 85, 91,246, 65,175,202,196,139,144,205,200, 73,143,199, 15,235,142, 84,119,119,119,111, 21, 19, 19,115, -161, 2, 5,198,247,220,177,157,142,160, 0, 43,150, 33,120,205, 30,164,216, 41, 96,175,148,128, 87, 39, 99,212,132,193, 86, 93, - 58, 12,182, 2,128,168, 39,247,224,165, 84,155,196,171,183, 67,239,254,109,252,172, 97, 80, 99,203,201,123, 26, 6,232,188,245, -116, 88,100,155,154,214,242,254,205,189,108,230,197,101,244, 65, 37,157,138, 22, 88,180, 10, 45,124,149, 88,109,184,151, 82, 99, - 45, 7, 18,185,251,106,146, 89,223, 14, 13,148, 18, 17, 33, 52, 39, 22, 84, 97,143,181, 91,246,230, 72, 13,216, 32, 52,161, 2, - 4,152, 6,149, 74,117,135, 16, 82,251,155,111,190, 25,244,237,183,223,182, 52, 51, 51,171, 10, 0,185,185,185, 47, 12, 6,195, - 69, 0, 59, 43,178, 58, 48, 95, 56, 61, 35,132,188,136,140,140,116,218,190,125,187, 53, 0,121,254,223, 26, 0, 25, 0, 18,223, -102,197, 97,129,168, 34,132,204,126,135,150,142,227,249,156, 53, 42,115, 63,195, 48, 70, 66, 8, 8, 33,144,201,100,184,116,233, - 18,250, 5,117,192,163,224, 12, 4, 90,155,163,241,176, 81,216,125,230, 12, 88,150, 5, 33, 4, 44,203, 86,168, 29, 17,137, 68, -184,124,249, 50, 62, 25,216, 23, 50, 17, 96,101,101,133,111,190,249, 6,135, 15, 31,134, 72, 36,236,210, 87,129,124,222, 80, 32, -184, 76,247,163, 69, 48,239,204,230,159, 36, 48, 26,112,116,243, 18, 28, 11,205,209, 61, 73,198, 12,191,100, 44,223,135,108, 62, -249,231,173,163,207, 92, 14, 93,252,217,128,110,202,182,109, 58,160,109,235, 54,162,128, 70,173,102, 1, 88, 81,164,193,110, 95, -150,175, 13, 35,143,239, 55,156,124, 60,106,119, 72, 4,129, 62, 27, 3, 58, 54,162, 70, 30,223,151, 35, 2,254,196,105,165, 48, -223,125,249,218, 53, 27,232,115,240,234,222, 31,242, 42, 85,171, 3, 70, 61,158, 61,123,138, 95,182, 28,228, 67,110, 62,217,166, -227,240, 85,100, 26,205, 53,149, 51, 79, 89,113,176, 50,147,250,117, 9,180, 58,193,131,194, 90, 41,169, 73,121, 35,172,149,226, -154, 29,107,153,157,160,148, 82, 11,133,184, 38, 53, 26,202,229, 84,235,184,245, 91,126,219,180,116,248,240,225,102, 41, 49, 9, -136,203, 10, 69,142,212, 13, 6,165, 7, 34,239, 93, 84,171,180, 92,185,141,120, 89,233,153,146,146,146,116,231, 70, 26,118,175, -155, 15,131, 78,139,164,152, 60,173, 26,151,146, 5, 75,123,183,107, 21,225,212,115,124,102,239,193, 35, 37, 10, 11, 40, 62,233, -221, 77, 26,153,170, 69,125, 87,139,188,194,148,147,140, 71,103, 47,163,117,110,158,110,123,254,154,129, 87, 93, 87,147,194,105, - 33,151,124,213,165,129, 27, 94, 68,199,227, 82, 88,236,150,231,169, 52,174,154, 29,217, 18, 25,151, 49,186,199, 7,158, 88,118, - 56,252,203,210,196, 81,105,156,254, 78,100, 16,128,230,121,147,225,213,160, 64,115,127, 39, 50,200,148,149,134, 37,113,138, 36, -248,120,233,137,168,153,123,111,165,244,152,242,113, 11,203,166, 77,187, 74,193,233,144,173,214, 26,194,211,105,214,219,228,209, - 91,244,148, 4, 78,129,243, 63,201,153, 47,122,182,229,127,222, 37,103, 28,138,249,117,122,219,184, 23, 29, 38,164,148,138,242, -173, 89,101, 78,134, 47,143,179,232, 48, 33,165,244,120,190, 53,171, 76,171, 86,113, 78,158,231,227, 26, 54,108,104,219,189,123, -119, 24,141, 70, 60,125,250, 20, 81,175, 95,163,253,232, 47, 97,109,109,141,139, 15, 30,224,201,147, 39,152, 61,123, 54, 12, 6, - 3, 14, 29, 58, 20, 83, 30,167, 72, 36,210, 87,175, 94, 93,210,179,103, 79,112, 28,135,231,207,159, 35, 54, 54, 22, 19, 39, 78, -132,149,149, 21,238,220,185, 83,200,153,146,146, 2,145, 72,164,255, 59,202,210,127, 29, 37,137,172,178,133, 22, 96,132,209,128, -204, 51,115,176,226, 18,244,122, 3,106,134, 37,209,151, 69,254, 95, 91,199,142, 28,125, 16,250,248,197,157, 43,109,165, 72,122, -152,119, 79, 5, 16,145, 66,227, 27,121,136,178,161,207,182,196,243, 19,120,153,152,157, 19,145, 66,227, 43, 26, 57,202, 27, 9, -244, 42, 32,254, 54,174, 94,188,128,144,235,247,113,235,225, 99,227,213, 59, 17,187, 25, 30,223,135,167,208,167,149, 80,167, 48, - 15, 90,134,161, 15,159,121, 54,242,117,242,132,145, 3,229, 13,176, 26,176, 19,195,194,155,122, 54,170,102,237,153,103,201, 50, -192,230,243, 63,128,165,242, 50,249,110, 69,235, 55, 52,175, 42,235,147,157,145,250, 65,187, 86, 31,154, 89,213,234,130,148,103, - 17,120,122,255,178,250, 78,104,228,213, 91,209,250,183,178,150,184,185,185,181,108,215,202, 15, 3, 70, 77,135, 94,149,137,231, - 33,191, 33, 39, 45, 1,151,174,153,227,113, 86,214,135, 0, 76,182,104, 93,141, 50, 4, 0, 64,115,111, 73,180, 5,180,206,159, -118,235, 14, 25,209,128,215,102,129,168, 82, 16, 25,171,203,236,179,238,181, 17, 0,148, 50, 34, 50,163,153,150,166,240,250,123, -217,249, 40, 89, 3,182,158, 9, 3,207,231,109,223,196,243, 88,187,245,143,200,209,223,127, 82, 31,254,158, 54,117, 9, 33,164, - 34, 38,127, 66,209,226,214,238,239,106,106,206,205, 2,120, 61, 46,143,183,173,217, 98, 69, 90,139,202, 90,198, 30,198,210, 88, - 0,163,107,185,146,245,227, 87,156,156,213,240, 76,120,243, 73,159,247,176, 4, 21, 54, 96, 23, 32, 64,192,223,143,156,156,156, - 81,195,134, 13, 91, 47, 22,139, 29, 0, 16,158,231,193,243,188,104,241,226,197, 98,163,209,200, 48, 12, 99,100, 89,150, 59,126, -252,184,193,104, 52, 38,107, 52,154, 81,229,113,114, 28, 23, 57,118,236,216,234,229,173, 80,220,181,107, 23, 68, 34,145,158,227, -184, 72, 33, 39,202, 23, 89, 69,191,139, 90,185, 74,111, 60, 40,190,107,246,201,156, 57, 0, 8, 40,230, 22, 19, 89, 0,128, 7, -169, 52, 46,192,145, 76, 12,104,212,106, 78,193, 61, 21, 13,156,198,104,236,219,168,182,239, 46, 0,208, 82,227, 39,149,137, 96, -150, 86,221,191, 94,163, 15,119,243,148,138, 56, 74, 55, 49, 60,246,107, 56, 60, 50,101,165, 93,105,136, 75,202,184, 83,176, 81, - 52, 15,250,191,225,194,124, 55, 14,148, 82, 90, 56, 92,184, 68,142,148, 76,109,185,126,160, 46,191,208,118,104,228, 41, 25,121, -250,202,189, 81, 70, 35,117,102, 89,146,160,214,113,235,223, 86,100, 1, 64, 76, 76,204, 5,127, 71,114,250, 65, 93,167,142,246, -202,124, 43,151, 10, 72, 81,225,116, 76, 82,246,133,202,112,166,231, 26,122,124,187,252,240, 17,169,152, 21,129,210, 60,135,162, -148, 66,163, 55,166, 21,136,177, 58,118,196,245,155, 67,220, 46,150, 37, 81,229,241,221,120, 18,191,108,192,130,179,147,195, 94, -165,111,122,153, 78, 67, 1,224,101, 58, 13,173, 97, 71,102, 69, 38,100, 79, 14,141, 74, 95, 82,209,121, 21,148,224, 82,163, 1, -115,254,116,238,109,211,243, 81, 28,189, 15,160, 87,128, 35,233, 48, 96,210, 47,147, 8,129,176,253,132, 0, 1,255,143, 80, 96, -213, 98, 24,102,222, 59,228, 60, 78, 8,233, 10,224, 89, 5,238,185, 1,160,246, 59,142, 91, 42,128, 84, 33,151,223,105,154, 86, -220, 97,105, 88, 18, 93, 11, 19, 54,141, 54,245,186, 82,239,143,163,103, 1,216,189, 77, 4,243, 57,108,223,101,162, 61, 72,164, -179,254,138,204,200, 23, 85,127,201, 92,159,240, 36,218, 9, 0,124,124,124,232,179,103,207, 64, 41,125,171, 73,133,143,146,233, -125, 20,219,202,161, 36,177, 13,160,133, 41,124, 17, 41,244,123,224,207, 67,195,207, 82,233, 15, 0,126,168, 84,156, 43,233,249, -221,228,178,149, 68,207, 0,229,123,231, 23, 32, 64,192,251, 41,182,254, 2,206,227, 66,202,190,127, 40,203, 97, 41, 35, 36,207, -251,135,167, 79,159,146,183, 21, 89, 2, 4, 8, 16,240, 30,195,248,150,159, 18, 53,212, 91,126, 4,188, 39,130,171,248, 57, 65, -104, 9, 16, 32, 64,128, 0, 1, 2, 4,188, 35,145, 85, 92,108, 17, 0,237, 75,148,230, 21, 88, 77, 64, 8,105, 95,209, 0,149, -199, 47,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,251,199, 89, 30,247,123,183,154,145, 22,153,228,252,174, 63, 0,218, 11, -156, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,207, 31, 0, 35, 75, 59, 22,134, 14, 5, 8, 16, 32, 64,128, 0, 1, 2, -254, 34, 8,190,129, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 14,229,110, 42, 45, 64,128, 0, 1, 2, 4, 8, 16, 32,160, 18, 40, -119, 83,105, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,149, 67,165, 54,149, 22, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 62,202,242, - 12, 79, 42,184,227,137, 0, 1, 2, 4, 8, 16, 32, 64,128,128, 50,240, 39,207,240,193,193,193,180,232,183, 0, 1, 2, 4, 8, - 16, 32, 64,192,223,137,247, 85,139, 8, 67,135, 2, 4, 8, 16, 32, 64,128, 0, 1,111,129,146,230,104, 9, 66, 75,128, 0, 1, - 2, 4, 8, 16, 32,224, 29,160,172, 57, 90, 5, 14, 75, 91,231,155,234, 90, 11,201, 37, 64,128, 0, 1, 2, 4, 8,248, 7,240, - 94,106,145,194,201,240,193,193,193, 52, 40, 40,136, 8,249, 44, 64,128, 0, 1, 2, 4, 8,248, 39,240, 62,106, 17, 97,213,161, - 0, 1, 2, 4, 8, 16, 32, 64,192,219,136,169, 34,171, 12,139, 31, 11,123, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,188, 35,193, - 85,252, 28,243, 23, 63,176,189,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,231,255, 23,145, 85, 92,108, 9,171, 14, 5, - 8, 16, 32, 64,128, 0, 1, 2,222, 2,166,172, 58, 20, 32, 64,128, 0, 1, 2, 4, 8, 16, 80, 9, 16, 66, 70, 18, 66,186,229, -255,238, 86,212,170, 37, 88,180, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 2,148,210, 13,132, 16,151,124,129, 21, 76, 41,141, 23, -132,150, 0, 1, 2, 4, 8, 16, 32, 64,192, 59, 64,177,121, 89, 65,132,144,194,225, 68, 65,104, 9, 16, 32, 64,128, 0, 1, 2, - 4,188, 5,202,154,163, 69, 0,180, 47,229,166,179, 21, 80,114,237, 43, 17,168,179, 2,167,192, 41,112, 10,156, 2,167,192, 41, -112,254,255,226, 44,143,187, 34,250,227,223,130,146,220, 58, 20,138, 47, 74,233, 95,246, 1,208, 94,224, 20, 56, 5, 78,129, 83, -224, 20, 56, 5, 78,129,243,255,235,231,157,175, 58,108, 64,136, 66, 48, 34,190,127, 32,132, 56, 17, 66,156,132,148, 16, 32, 64, -128, 0, 1, 2, 76,183,112,189,211, 57, 90,254,132,124,254,121,160,195,186,218,132, 88, 62,164, 84, 85,214,181,142,142,142,235, -149, 74,229, 96,149, 74,149, 75, 8,225,139,152,218, 0,160,232,190, 64,207,147,146,146, 90,148,247,108,153, 76,182,220,201,201, -233,243,156,156, 28, 21, 33,132, 18, 66, 64, 8, 41,136,240, 27,223, 70,163, 49, 38, 37, 37,165,225,127, 58, 19, 1,214,222,201, -233,166,152,101,221, 42,122,175,145,231, 95, 38, 38, 36,124, 88,129, 2, 51,159, 16, 76,201,255,189,136, 82, 58,253, 61,124, 43, - 88, 83, 46, 11, 4, 44, 34,128, 1, 70,134,249, 82, 12,172,214,242,252,186,252,130,107,172,236,163,117, 55, 73,117, 66, 81,151, - 16, 88, 81,138, 76, 74,112, 95,218,152, 70,254, 67,149, 67,111,177, 88,220,195,210,210,210, 60, 53, 53,245, 2,128, 93, 0, 6, -218,217,217,181,202,202,202,202, 49, 24, 12,135, 41,165, 7, 42,195,221,178, 30,153, 42,149,136, 63,211,232, 13, 11, 47,223,163, -191,181,110, 64,236, 56, 30, 11,228, 18, 81, 11,173,142, 91,116,233, 62,221, 84,193,176,146,188, 87,161,160,234,168,248,126, 98, -251, 76,204,119, 0, 56,100, 99,227, 43,115,176, 60, 39,150,178, 47, 51, 18,115, 6,247, 77, 74,122,221,247, 45,242,253,223, 8, - 7, 7,135,161, 12,195,252, 72, 41,133,209,104,156,145,154,154,186,249, 29,149,171, 25, 0,172,243, 15, 51, 40,165, 63,190, 37, - 95, 20, 0,207,252,195,104, 74,169,151,208,180, 87, 58, 45,215, 30, 60,120,112,116,155, 54,109,176,108,217, 50,172, 93,187,246, - 85,114,114,242, 2, 0, 91, 40,165,186,191,155,231,125,196, 59, 19, 90, 1,132,116, 29,218,169,201,250,113,253,187,146, 9, 67, -103,170,202,121,153,127,237,220,185,243, 39, 91,182,108, 17, 71, 68, 68, 40,188,189,189,193, 48, 76,161, 16, 42, 90, 95, 86,169, - 82,133, 47,239,217, 44,203,174,232,213,171,215,176,125,251,246, 41,239,220,185,163,172, 85,171, 86, 33, 31,207,243, 40, 94,255, -122,123,123,151,201,103,101,101,117,155,101, 89,247,146, 68, 90,105,191,141, 70, 99, 76,106,106,106, 67, 19, 10, 99, 39, 0,211, - 76, 72,210, 5,148,210, 83,101, 93, 32,102, 89,183,184,184, 56,199,138,230,149,135,135,135,190, 2, 47,143, 19, 33,152,194,243, -148, 1, 0,134, 33, 83,229,114,249, 58,141, 70, 19, 93,240,127,126,158, 37, 86, 36, 12,110,110,110,125, 40,165,163, 0, 80, 66, -200,134,216,216,216,253, 21,185,223,210,210,242,182, 84, 42,117, 23,137, 68,164,164,124, 41,126,108, 52, 26,169, 94,175,143, 73, - 75, 75,171,176,192,190, 0,144,206, 64, 75,142,101, 39,216,217,219,183,184,115,250,180, 89, 96, 96, 32,195,178,236,116, 0,235, -222,230,189,209,221, 36,213,141, 6,244, 83, 27,100,221,100, 94,115,125,181, 81,115, 35, 20, 98,237, 49,221, 77,178,247,239, 22, - 91,132,144, 33, 67,134, 12,153,176,112,225, 66,123,169, 84,202,236,217,179,199,119,226,196,137,189,151, 45, 91,102,223,191,127, -127, 11,157, 78,199, 79,157, 58,213,159, 16,226, 72, 41, 93, 83, 17,238,166,245,200, 7,126,222, 46,179,199, 13,110,139,201,243, -119,141,107, 94,155,164, 40,204, 36,107,251,180,168,110, 29, 80,213, 6,223,173,191,250, 21,128, 77, 21, 8, 43, 17,137, 68, 31, -186,186,186,250,104, 52, 26, 46,191,243, 70,139,212, 9,121,233,171,211,233,210,210,210,246,190,109,218, 76,150,203,155, 52,177, - 54, 63, 51,103,208, 16, 69, 86,122,154,211,138,224, 35, 15,246,193,177, 78, 95,224,213,251,212, 32, 48, 12,243, 99,108,108,172, - 11,165, 20, 46, 46, 46, 63, 2,216,252,142,168,173, 11,234, 97, 66,136,245, 59,224,243, 44,194,231,249, 14,202,190, 92,196, 48, - 99,165, 98,113, 71,163,209, 88, 59,191, 12, 61,212, 25, 12,103, 56,158, 95, 77, 41,213,188,199, 58, 96,202,232,209,163, 59,124, -251,237,183,222, 83,166, 76,193,148, 41, 83,170,108,220,184,113,253, 79, 63,253, 52,149, 16, 82,135, 82,154,243, 55,243,252,231, - 45, 88,127,137,208,242, 39,164, 97,187,186, 53,246,143, 31, 58, 0,252,190,229, 4, 67,103,150, 41,178, 62,108,216,240,179, 45, - 91,182, 0, 0, 6,247,232,129,142,141, 27,195,194,220, 12, 82,105, 94,112, 8, 37,144,136, 37,232, 57,241,107, 83, 34,183,168, -119,239,222, 31,239,219,183,207, 28, 0,214,174, 93,139,222,189,123,195,214,214, 22, 74,165, 18, 18,137, 4, 98,177,248,141,111, - 19,132,155,123,108,108,172,163, 92, 46, 47, 20,126, 60,207,191,241, 41, 50, 78, 13,142,227,224,227,227, 99,106,114, 77,203,204, -204,108,153,155,155, 91,230,152,110,213,170, 85, 1,224,148, 41,132, 63,254,240, 61,120, 46, 23, 34, 17,192,113,128, 86,207,128, - 47,161,111,239,234,234,138,177, 99,199,226,109, 54, 18, 15, 10,234, 70, 8, 33,251, 92, 93, 93,247, 39, 37, 37,121, 19,130, 17, -149,180,116,125,241,244,233, 83,115, 0,240,245,245, 29, 11,160, 66, 66, 75, 36, 18,185, 63,120,240,192, 81, 38,147,149,106,185, - 44, 34,130,161,215,235, 81,191,126,125,174, 34,207,112, 2, 60,211, 24,102, 68,189, 6, 13, 70,206,233,217, 83,126,243,230, 77, - 57,195, 48,224, 56, 14,139, 23, 47,230, 40,165,214,254,128,101, 56,144, 85, 70,249,252, 22,192,208,124, 43,237, 38, 74,233,226, - 55,254,167,168,171, 54,200,186, 61,207,233,217,184, 73,149,169, 8, 15,123,216,184,154,249, 33, 88,136,180,145, 0,254, 86,161, -101,105,105,217, 99,217,178,101, 14,155, 54,109,202,122,242,228,137,126,221,186,117, 14,163, 70,141,178,208,235,245, 24, 61,122, -116,178,159,159,159,100,217,178,101, 14, 7, 14, 28,104, 11,160, 66, 66, 75, 68,240,253,192, 30, 29,161, 49, 48, 48, 24, 56, 7, - 23, 7,139,109,227,135,180, 22, 83,170,195,214,195,119, 96,224,248,223, 42,104,201,250,176,111,223,190,213,118,238,220, 41,122, -252,248,177,168,102,205,154,224,121, 30, 70,163, 17, 6,131, 1, 0,192,243, 60,106,212,168,241,214,233,242, 25,224,107,239,100, -123,230,195,174, 93, 20, 46,114, 25,108,211,147, 49, 92, 34,178,216,172,212,110, 7,208,244,125,106, 44, 40,165, 16,137, 68,120, -253,250, 53, 28, 29, 29, 21,182,182,182,241, 0,230,166,165,165,109,120,143, 27,200,198, 82,145,104,255,214,223, 86, 56, 55,105, -218,148,117,114,113, 68,196,211,104,136,136,177,253,131, 91,119, 90,127, 54,102,210,120, 66, 72, 31, 74,233,205,247, 45,238, 46, -205,190,232,229,210,252,203,181,132,242,248,110,213,145,236,249,139,150, 43, 71,143, 24,194, 78,156, 56, 17, 30, 30, 30,222,189, -122,245, 90, 4, 96, 76,185, 60, 31,124,209,203,185,233,184,181,160, 20,115,126, 57,146,253,211,162,229,202, 49,149,224,249,143, -191, 59, 27,254, 50,161,229, 79, 72,181, 0, 15,199,211,243,167,140, 17,211, 19,191, 51,170,212, 36,148, 38,101, 28, 29, 29,215, -119,233,210,101,240,230,205,255,235, 36,125, 24, 24,136, 94,109,155,195,209,206, 10, 74, 51,105, 94,115,196, 19,220,127,242,210, - 36, 65,224,225,225, 49,122,255,254,253,230, 69,197,132, 68, 34, 41,252, 20, 21, 89, 5,159,226,150,143,146, 32,151,203,113,246, -236, 89,136, 68, 34,176, 44, 11,145, 72, 84,248, 41,122,204,178, 44,156,156, 42, 52,117,105,129,149,149, 85,157,236,236,108,203, -140,140, 12,120,122,122,102, 1,120, 80,228,255, 58,201,201,201,150, 21, 33,228,185, 92, 76, 28, 94, 11, 98,221,117,232,196,141, -161, 22, 53,195,213, 91,143,112,236,212, 5,196,198, 37,160,249, 7,245,240,233,160,190, 56,115,230, 12,140, 70, 99, 69, 11, 79, - 34, 33,100, 81,247,238,221,166, 2,132,180,111,223, 62, 99,220,184,113,204,227,199,143, 63,238,213,171,103,224,211,167,207,242, -123,194,100, 10, 33,100, 69, 5, 44, 91, 82, 0,184,120,241, 34, 0,200, 42, 83,246,100, 50, 25,174, 93,187,134,130, 97, 98,134, - 97,192, 48, 12, 88,150,197,209,103,246,200,213, 49, 80, 37,134,226,203,110,158,168, 90,181, 42, 24,166,252, 41,137,173, 1,249, - 85,160, 23, 17,139, 39,186,184,186,122,183,170, 86, 77,121,246,236, 89, 22, 0,188,188,188,104,124,124,124,198,225,195,135,179, - 69,192, 90, 47, 74,183,148, 37,178, 60, 61, 61,155, 49, 12,243, 99, 65,154, 19, 66, 22,121,123,123,207, 46,204, 55,158,199,160, - 14,182,226,241,227, 39, 72,154,180,206,235,156, 52,233,190, 19, 89,207,231,215, 34,105,223, 90,253,221, 21, 69, 86, 86,214,238, - 26, 53,106,176,169,169,169, 87, 1, 68, 25, 12,134,105,219,182,109,115, 28, 62,124,120,210,246,237,219, 23, 0,112, 93,184,112, - 97,235,220,220,220, 61, 21,225,109, 81,151,116,109, 88, 47,240, 3, 79, 15, 15, 92,184,122, 19, 18,169,216,122,236,208,110, 48, - 55, 23, 97,201,166, 96, 62, 42, 38,109,220,165,251,116, 75, 5, 68, 86,227,190,125,251,122,239,220,185, 83, 10, 0, 15, 30, 60, - 64, 66, 66, 2, 28, 28, 28,160, 80, 40, 32, 22,139,193,178, 44,196, 98,241, 59, 17, 89, 86, 30,118, 55, 14, 29, 58,172,176,181, -181,198,170,175,199,227,211,164, 68, 88, 91,152,195,144,147,235,253,158, 9, 14,223, 62,125,250,200,141, 70, 35,114,115,115, 17, - 18, 18, 98,165, 80, 40,172,220,221,221,231, 0, 48, 89,104, 41, 20,138, 68,141, 70,227,152, 95,143, 38,169,213,106, 39, 0, 89, - 50,153,172,160,158,206,201,127,158, 73,195,137,165, 12, 19, 70, 23,177,100, 69,191, 69,156, 27, 53,110, 84,231,236,129,125, 59, -204, 51,179, 19, 96,109,147, 4, 6,153,216,176, 97, 53, 20, 10, 75,204,153,243,173,232,101,251,182,110,157,186,246, 57, 75, 8, -105,255,222,137, 45, 74, 54,180,239, 62,216, 86,161,180,200,111, 75, 12,216,188,113, 60, 24,134,193,236,217,179, 17, 16, 16, 48, -146, 16, 50,147, 82,154, 86, 54, 13, 54,212,110,217,223, 86, 42,207,203, 98,222,104,192,186, 93,147,243,120,166,143,194,192,238, - 85, 71,222,223, 78, 78, 6, 84, 67,118, 94,187, 2,181,152, 65, 52, 26,211,164, 2,142,224,224,224, 86, 65, 65, 65, 23, 74, 59, -254, 15,188, 63, 46, 0,130, 74, 18, 95,162,224,224, 96, 26, 20, 20, 68,138, 68,238,141,227,178, 80,143, 16,123, 39, 43,229,217, -181,115,199,155,139,174, 7,179,234,232,103,136,211, 24, 11,223,156,226, 75, 52,149, 74,229,224,205,155, 55,191,161,195, 60,157, - 28, 33,145,136, 33,150, 16, 88,183,232,150,247,198, 93, 58, 6, 66,104,105, 13,255, 27,156,185,185,185,154,123,247,238,153,111, -218,180, 9,142,142,142,240,246,246,134, 82,169,132, 92, 46,127, 67, 92, 21, 21, 92,197,133, 86,113,206,130,255, 69, 34, 17, 24, -134,193,153, 51,103,192,113, 28,250,246,237,251, 39,145, 37, 18,137, 74, 20,110,165, 45, 79,165,148,158, 34,132, 60,160,148,182, -204,111,128, 31, 80, 74, 91, 21,121,118, 39, 7, 7,135,105, 0, 22,152,202,201,178, 20,172,230, 42,120,247,229, 16,189, 30, 15, -157,184, 46,206, 95,190,131,205,235,151, 1, 0,188,107, 54, 66,191, 94,221, 10,173,113,166,112, 22,133,155,155,219,174,228,228, -148, 46,109,219,182, 69,122,122,186, 97,238,220,185,168, 83,167, 14,124,125,125, 77,202,163,210, 4,220,131, 7, 15, 60,212,106, -181, 73,195,142, 37,113, 18, 66,176,109,219, 54,104, 52,127,182,234,219,180,250, 9,147,123,123, 97,216,151, 91,176,232,201, 30, -172, 89,179,166,204,184, 43,129, 58, 26,171, 26, 43,164, 44, 87,103,193,183, 95,200, 62,253,244, 83,118,216,176, 97,136,142,142, -198,240,225,195, 53,103,206,156,209, 37,196,199, 31,150,242,252, 42,253,155,194,184, 84, 78,153, 76,182,245,212,169, 83,216,179, - 39, 79,151, 68, 68, 68,192,199,199,199,236, 13,145,156,182, 23,217, 81,171,112,227,232, 99, 52,233,190, 19, 55,142, 14,130, 49, - 35, 88,220,208, 7,153, 21, 73,207, 74,244,190,206,150,112,110, 15,128, 61, 69,210, 87,177,125,251,246,158, 0,142,228,255, 7, - 0, 63, 87,132, 51,143, 8,195,250,247,238, 9,145,196, 2,143,159,197,160,213,135,245,225,228,232,136, 7,143, 34, 17, 21,155, -150, 72, 8,134,118,110, 38, 91,160, 86,235,102, 94,188, 71,127, 45,135,147,184,187,187,251,238,221,187, 87, 82,196, 2, 93,248, -142,179, 44, 91,120, 92, 32,188, 43, 83, 62, 11, 68,150,133,187,249,141,239, 87, 55, 51,187,241,112, 59,124,188,186,194,166,107, - 55,252,122,250, 52,158,134,133,107,116, 42,174,221,223,157, 71,127, 21, 39, 33,196,183,119,239,222, 87,119,236,216, 97,253,250, -245,107, 92,188,120, 17,222,222,222, 80,169, 84,229,118,120,139,115,106, 52, 26,199, 34,195,122, 5, 83, 27,126,212,233,116, 5, -153, 81,240, 34,150, 58,156, 88,140,243, 79,195,132,149,153,147, 85, 66, 61, 47,149, 75, 36,123, 15, 29,216,101, 30,254,248, 34, -234,213,253, 0,230, 86,254,224,141, 9, 72, 77,203, 65,250,179, 56,252,240,195, 34,204,153, 59, 3, 71, 14,238, 51,247,171, 85, -119, 63, 33,164, 70,209, 97,196,255,122,190,131,208,145,103,143,110, 95, 75, 40, 15,117,226, 99,153, 56,247,133,114,240,160, 62, -236,128, 1, 3,112,228,200, 17,132,133,133,173, 45, 77,100, 21,229, 36, 20, 35, 67, 47,238, 89, 11, 74,161, 78,122, 44,147,168, - 95, 40,135,124,220,143,253,116, 96, 71, 92,255, 99, 5, 58,214,123, 17,234,234,136, 94,233,249,131,135, 34, 22,169, 50, 57,174, - 40,110,146,235, 69,196, 86, 8, 0, 82, 68, 96,133,224,127,115, 48,255, 11, 8,202,247, 14, 63,178,184,117, 75, 84, 25,129, 5, - 0,190,132,152, 43,165,146, 27,155,231,124,225,170,140, 14, 19,105, 67,175, 33, 78,203,211,117,175, 56,254, 6, 33,138, 59,148, -170,139,223,163, 82,169,114, 35, 35, 35, 21, 67,123,245, 66,211,192, 64,184,216,217,161,134,187, 59, 20, 50, 41,164, 18,113,145, -122,185, 66, 42,146,250,249,249,161,123,247,238, 16,139,197, 80, 42,149, 48, 55, 55,135, 84, 42, 45,209,154,101,106, 47,151, 82, - 10,150,101, 17, 26, 26,138,168,168, 40, 88, 91, 91,227,202,149, 43,104,215,174,221,159,172, 90, 69,197, 89, 69, 76,244,197, 27, -254, 2, 33, 6, 19,135, 12, 11, 96, 52, 18,228,208,186,144,191, 26, 7, 21,169, 15,173,150,131, 86,171,197,175,151,245,184, 25, -153, 11,189, 94, 7,173, 86, 91,234, 51,203, 72, 91,198,213,213,117,176,143,143,207,216, 65,131, 6, 25,164, 82, 41,114,115,115, -161, 82,169, 16, 22, 22,102,232,210,165,107, 70,247,238,221,172,130,131,131, 41,165, 88, 84,193,121, 90,169,110,110,110, 30,249, -195,179,169,149,236, 65, 20,138,152,226, 24,250,115, 56, 68,108, 94,158,172, 93,187, 22, 70,163, 17,148,210, 82, 51, 73, 67,200, -185,185, 63, 45,181, 90,184,252, 55, 88,217, 58,225,194,133, 11,198,147, 39, 79,102, 19, 32,226,105, 88,216,207, 31, 1,199,247, - 2,250,138,132, 47, 61, 61, 93,225,237,237, 13,119,119,119,240, 60, 15,131,193, 80,104,125, 73, 77, 77,133, 90,173,134,173, 89, - 6,170,219,185,131,203, 14, 65,124,232,119,112, 49,127,140, 45,167,116,134, 6,190,184,255, 47, 48,133,255, 14,224,247,183, 39, -130,155,163,179, 7, 24,106, 64, 92, 82, 42,122, 6,117, 4, 43, 49,199,203,215, 41,168,235, 95,205,229,227,143,154,185,176,132, -195,148, 5, 59,199, 2,248,181, 60,186,156,156, 28,227,227,199,143,241,224, 65,158,222,181,180,180,132,153,153,217, 27,239, 56, -195, 48,111,101,209, 42, 16, 89, 63,173,109,103,198,136,115,145,101, 60,139, 77,219,238,160,174, 95, 55,172,187,113, 75, 99, 76, - 76,107,191, 68,163,137,248, 79, 15, 27,185,184,140,226,121,126, 14,165, 52,163,119,239,222, 78, 59,119,238,180,137,141,141,197, -157, 59,119, 48,123,246,236,100,163,209,200, 81, 74, 9,165,244,187,119, 80,150,248, 34, 2,235, 93, 90, 17,196, 74, 57,190,180, -183, 36, 61, 68,140,165, 55,151,149,243, 50, 69, 71, 15,171, 56,254, 23, 74,169,161,172,123, 25,134,249,124,223,238,181,174,246, - 14, 60, 90, 59,180, 69,124,162, 30, 63,125, 61, 4,169,169,217,248,117,227,124, 0, 82,232, 57, 22, 45, 91,247,129,163,163, 27, - 70,142, 24,233,188,118,253,186, 47, 0, 44,121, 95, 12, 90,241, 87, 86, 31, 36,132,156,117,112,112, 8,251, 98,228, 72, 7,111, -239, 79, 32,151,203,177,107,215, 46,236, 92,181,202,184, 28,232,183,158,144,243,163, 40, 61, 88, 38,207,245,255,241,140, 31, 61, -218,161, 86,173,209,144,201,100,248,227,228,239,208, 36,108,203, 14,106, 10,189, 74,131,160, 42,221,169,237,171,163, 36, 77, 44, -198, 51, 0, 16,203, 17, 47, 6,146,138,209,253,215, 4, 86,161,140, 42,152,167, 85,240,253,214,158,225,169, 88,250,112,227,132, -129, 94, 78,208, 18,221,229,163,136,213,242,198,133, 79,245,236,221, 76, 58, 57,188, 4,145,149, 95,176,121, 79, 79, 79,180,109, -216, 16,189, 90,180,128, 72, 36,130, 92, 42,129,133, 92, 1,106,204,179,100, 21, 12, 29,150,209, 38,162, 36,235,147,157,157, 29, - 36, 18, 73,161,192, 50,213,154, 85, 26, 39,207,243, 16,137, 68,120,240,224, 1,154, 55,111, 14, 15, 15, 15,236,217,179, 7,157, - 58,117,250,211, 80, 98, 69, 69, 86,129,208, 42, 58,140, 87,100,146,124,185,147,224,255, 36, 18,116, 4, 41,186,186, 32, 36, 16, - 28, 7, 24, 41,160,213,104, 64, 41, 64, 41, 96,208,235,160,209,104, 10,159,105,202,144,172,139,139,139,103,213,170, 85,231, 77, -157, 58,165, 86,221,186,245,144,156,156, 12,158,231, 97,102,102, 6,149, 74, 5, 75, 75, 75, 52,109,218,244,229,188,121,243,226, - 41,197,200,138, 78,134,127, 7, 21, 44, 0,224,244,233,211,111, 12, 27, 22,124,114,227, 99, 48,236,171,237,144,138,242,134,150, - 10,230,240,148, 85,239,182,105,217, 12, 87,239, 70,112,159, 79, 89,161, 21,167,222, 89,224,204,243,155, 99,128,196,183,104, 92, -144,146,146,130,196,196, 68,244,232,217, 19, 59,119,236,192,171, 87,175,224,239,239,143, 54,109,218,192,209,209, 17,175, 94,189, -194,205, 75, 90,104,211,211,144,166,187, 3,165, 69, 19, 28,186, 16,169,157,181, 70, 23,249, 79,213, 22,132,144, 30, 0,134, 88, - 90, 90, 86, 85,169, 84,241, 28,199,237, 5,176, 23, 64, 63,145, 72,212, 79,169, 84,186,100,101,101,189, 64,222,106,162,195,229, - 14, 37,201,229,118, 50,185, 37,120, 78, 11,145, 72, 4, 15, 15,111, 80,163, 14,233, 89,106, 12, 29,208, 29,119, 31, 60,194,201, -243,215, 57,131,129, 95,105, 74,178,178, 44, 75,125,125,125,145,148,148, 4,177, 88, 12,133, 66, 1,115,115,115, 76,159, 62, 29, -171, 86,173, 42, 20, 89,149, 21, 90,159, 1,190,150,158,230,215,127, 92,157, 39,178, 18,226,226,145, 24, 35,134,131,157, 19, 86, -174, 90,158,155,254, 42,161,201,111,192,127, 90,100, 1, 0,207,243,223,197,198,198, 58,138, 68, 34,103,142,227,240,250,245,107, -220,190,125, 27,227,198,141, 75, 76, 77, 77,109, 77, 41,173, 84, 28,229,114,121, 82,129, 37, 75, 46,151, 39, 1,165, 14, 39,102, - 20,177,100,101,148, 65, 89,226, 48, 33, 33,164,154,183,187,197,153,141,203, 38,122, 54,106,210,148, 81,138, 44,211,115,158, 37, - 52,191,124,241, 66,211,113,203,126,253,130, 16,210,145, 82,250,188, 52, 82,153, 88,220,229,131,102,205, 68,160,137, 16, 73,155, - 99,209,194, 1, 72, 78,201, 66,122, 90, 54, 36, 18, 51,232, 12, 44,140, 60, 65,211,230, 45,240,251,150,221, 8, 24, 49,156,149, -138,197, 29,222, 39,161,149,143,249,191,252,242,139,167,159,159, 31, 54,111,222,140,243, 91,183,226,211,204, 76, 92, 96, 24,214, - 32, 22,219, 31, 55, 24, 54, 0, 56,104, 42, 79, 64, 64, 0,126,251,237, 55,108,219,182, 45,122,112,187,164,253, 19, 7,195, 81, -175, 71,231, 59, 79, 96, 91,165, 59,112,231, 9,108, 27,248,161, 6, 39,194, 51, 66,240,134, 59,168,224,224,224, 86, 69,191,255, - 75,200,223,219,176,196, 33,118, 17,128,214,193,193,193,180,232,119,121,132, 74, 71,223,209,219, 6,180,245, 10,172,238, 73, 12, -123, 86,224,117, 46,167,155,249, 68, 47,125,154, 67, 39,134, 83,186,188,140, 30, 4,101, 89, 22, 22, 10, 5, 28,172,173,243,204, -252, 12, 3,240, 0,111, 0,136, 49, 79, 0, 80,158,160, 34,139,166,121,158,135, 84, 42, 45,113,226,123, 69,231,102, 21,229,204, -206,206,198,203,151, 47, 49,114,228, 72, 40,149, 74, 0, 64, 66, 66, 2,188,188,188, 32, 18,137, 16, 27, 27,139, 63,254,248, 3, - 85,171, 86,133, 76, 38, 35, 21,204,148,130,134,191, 14, 33,228, 2,128, 58,241,241,241,150, 46, 46, 46,168,176, 69,139,167, 80, -105, 9,116, 58, 35,158, 62,125,138,184,184, 56,188,124,241, 12,141,114,179, 64,193,130, 82, 90, 33,139,150,187,187,123,160,143, -143,207,186, 5, 11, 22, 72,220,221,221, 65, 41,133,141,141, 53, 84, 42, 21, 82, 82, 82,225,239,239, 15, 15, 15, 15, 44, 90,180, - 8, 0,118,254,221, 34,171, 88,153, 42, 20, 90, 69, 5,215, 87, 31,121, 34, 45,205, 28, 44,251,191,213,167,229,204,209,146, 0, - 64,235,142,189, 69,103, 78, 30, 55,227,128,121, 9, 44, 59, 79, 84,126, 62, 26,140, 60,175, 44,237,255,215,175, 95, 67, 44, 22, - 99,223,222,189, 72, 75, 76, 68,221,186,117,209,184,113, 99, 60,123,246, 12,119,239,222,133,157,157, 29, 28,220, 63,196,133, 23, -122,132,199,169, 97,101,101,133,200, 24,230, 31,115, 25, 64, 8, 25,209,190,125,251,217, 63,255,252,179,163,179,179,179, 56, 57, - 57,217,111,245,234,213,117, 87,175, 94, 61,254,139, 47,190,112,250,226,139, 47,108, 28, 28, 28, 68, 9, 9, 9,190, 95,127,253, -117, 3, 66, 72, 85, 74,233,210,178, 56,205,204, 44,108, 89,137, 25, 8, 17,193,218,202, 6, 34,169, 25,120, 78, 4, 35, 15, 88, - 90, 57,224,234,221,125,184,242, 48,123, 84, 82, 42,246,154,240,222, 80, 59, 59, 59, 48, 12, 3, 59, 59,187, 63, 89,170,199,141, - 27,135,141, 27, 55, 22, 14, 35, 86, 86,100,253,180,186,157, 57,201, 23, 89, 9,175, 69, 32,218,170, 56,122,240, 90, 70,250,171, -132,230,239,131,200, 42,168,227, 40,165,120,241,226, 5, 84, 42, 21, 46, 93,186,132,239,190,251, 46,185,184,200,114,114,114, 26, - 97,105,105, 57, 55, 39, 39,103, 81,124,124,252,138,242,120,243, 69,212,155,157,193, 18,134, 19, 77,117,241, 80,210, 48, 33, 33, - 68,236,225, 34, 63,117,247,210,118, 47, 43,122,159, 32,106, 36,240, 52, 43,204,226,134, 99,203,174,141,130,152,250,107,190,175, -210,120,212,244, 83,132, 16,191,210, 44, 91,188,209, 88,223,204,220, 2, 64, 18,238,220, 14, 41, 20, 89,169,105,153,208,234, 89, -104,117, 4, 26, 61,131,182,237, 59, 99,213,186,109,136, 77, 74, 67,193,138,196,247, 5,132, 16,219,192,192,192,209,253,250,245, -195,188,121,243,112,246,231,159,117, 99, 8,201, 18, 1, 52,216,104, 4, 79, 41, 97, 76,152,196, 94,156,103,201,146, 37, 7, 1, - 12, 92, 48, 14, 31,166,231, 96,168,107,119,106, 91,165,123,222,181,125,167, 82, 0,176, 77, 62,251,102,147, 25, 20, 20, 68, 10, - 70,214, 42, 58,194,246,111,135, 40, 40, 40,232, 66,112,112, 48,138,126,151,117,131,165,115,205,174,211,191, 25,183,176, 81,167, - 22, 36,126, 82, 7,164,101,105,184,111,195,245,210, 24,117,217, 34,171, 40,190, 89,189, 26,119, 35,242,222, 99,119, 71, 71, 76, -249,248, 99, 80, 14,184, 18, 22,142,221,103,207, 98, 64,251,246, 48,203, 95,241,103,170,245,169, 36, 43, 86, 81,107, 86, 69,173, - 78, 25, 25, 25,216,187,119, 47, 26, 55,110, 12,165, 82, 9,145, 72,132, 58,117,234,224,209,163, 71,168, 86,173, 26, 8, 33, 56, -116,232, 16,122,245,234,133,231,207,159,227,195, 15, 63, 52,175,140,208, 10, 15, 15,183,164,148,182, 44,176,126, 84, 22, 90,173, - 22,143, 31, 63, 70,247,238,221, 97, 99, 99, 3, 55,183,157, 56,123,106, 59,148,129,159,130, 16, 84, 72,104, 25,141,198,207,130, -130,130, 36,132, 16,168,213, 42,200,229, 10,152,153,153,195,194,194, 18,190,190,126,136,139,139, 67,167, 78,157,116,145,145,145, -107,226,227,227,247, 84, 52,172,254,254,254,102,153,153,153,159, 86,169, 82, 69,154,223,219,245,175, 94,189,250,228,200,200,200, -236,138, 90,181, 10, 4, 22, 33, 4, 44,203, 22, 10, 45, 17,195,192,197,217,177,240, 56,127,126, 26, 41,131, 43, 43, 54, 85, 43, - 3, 0, 79, 79, 79,172, 90,127,132, 9, 10, 10,194,248,241,227, 97, 48, 24,176,102, 77,222, 34,187, 65,131, 6, 65,175,215, 99, -255,254,188, 69,146, 34,145,168, 76,179,201,237,219,183,113,231,206, 29, 24, 12, 6,100,102,102,226,196,137, 19,184,112,241, 34, -118, 29, 58,135, 87, 47,158,161,142,159, 23,134, 15,255, 12, 98,177, 24, 91,182,108, 65,243,230,205,255,209, 10, 65, 44, 22, 15, -222,184,113,163,203,230,205,155, 51, 14, 29, 58,148,251,193, 7, 31,200,150, 47, 95,238,184,106,213, 42, 7,157, 78,135, 9, 19, - 38, 36, 93,191,126, 93,219,179,103, 79,179, 13, 27, 54,184, 84,175, 94,189, 3,128,165, 37,164,167, 25,128, 1, 0, 62,105,221, -216, 74,148,145,173, 6,207,233,240,226,213, 75,100,230,232,192, 27,245,136,142,137, 67,142,198,136,212,180,108,212,169,223,241, -151,144,144,144, 25,132,144,111, 41,165,199,202, 11,103, 88, 88, 24,174, 95,191,142, 87,175, 94,225,197,139, 23,111,252, 55, 98, -196, 8,108,219,182,173,194, 22,173,146, 69, 22, 11,162,173,134, 99,135,110,100, 36, 61,139,127,111, 68, 86,126, 29, 52,199,197, -197,101,142,139,139,139,252,244,233,211, 86, 85,170, 84, 1,199,113,186,226,150,172,214,173, 91,207,220,184,113,163, 75,181,106, -213,198, 1, 88,241,111, 8, 59,195, 96,196,162,181,163,237, 45,164,209,113,120,186, 52,223,151, 32, 11,168,178,128,144, 29, 16, - 53,155,245,114, 92,207,169, 54,211, 54,207, 27,129, 50, 86,200, 70, 62,127,141,181,107, 87, 97,226,132,161,248,253,215, 69,224, -121, 17,180, 6, 22,158,222, 31, 64,171,231, 65, 24, 17,234,214,111,136,243, 33,151, 32,102,128,189,155,215,190, 87,166, 44, 74, -105, 26, 33,100,205,161, 67,135,190, 28, 63,126, 60,120,158,151,206, 93,187, 86,157,156,156, 60, 31, 21,240,127, 85, 2, 79,175, -181,107,215, 70, 76, 91,149,124,112,226, 96,176,175,142,146,180, 59, 79, 96,219,119, 42,197,190,133, 4, 13,252,144,166, 44,185, -137,191, 88,236,251,253, 16, 90, 5, 74,178,232,119, 73,104,224, 91,237,123, 43, 91,155,207, 26,215,241,181,159, 50,126,140,232, -121,130, 6,251,171,124,156,243,199,214,149,102, 9,156,236,151,103, 84,189,188, 34, 15,222,253,199, 31,133,191, 23,239,220, 89, -226,127,241,125,251,154,220, 51, 43,205,138, 85, 81, 75, 22, 0, 40,149, 74,235, 14, 29, 58,160, 93,187,118,232,211,167, 79,225, -156,172,122,245,234, 97,215,174, 93,232,221,187, 55,238,221,187, 7, 23, 23, 23,212,172, 89, 19, 53,107,214,196,241,227,199, 43, - 90,192, 97, 52, 26, 17, 24, 24, 88,176,234,176, 78, 76, 76,140,101,101, 51, 82,171,213, 34, 53, 53, 21,182,182,182,144, 74,165, -104,210,164, 49,190,252,170, 9,236, 93,126, 67, 96, 45, 63,228,230,230, 22, 46,127, 55,161,177, 13,172, 81,163, 6,146,147,147, -145,156,156, 12, 7, 7, 7,184,186,186,194,217,217, 25, 75,151, 46,165, 43, 86,172, 56,169,215,235,215, 36, 39, 39, 87,216,146, -229,226,226,210,194,214,214,118,166, 90,173,150, 22,233,225, 74, 29, 28, 28, 14,187,186,186,206,143,139,139,171,200, 30,155,208, -235,245, 32,132, 32,248,133, 43,114,117, 4, 89, 49,119, 48,254, 35,175, 55,132,151, 88, 44, 54,101, 66,111,238,192,129, 3, 29, - 61, 60,220,241, 58, 50, 12,251,246, 81,252,252,243,207, 5,171, 34, 17,145,223, 49, 40, 56,110,211,166, 13,188,189,189, 81, 17, - 39,153, 60,207,227,193,131, 7,216,121,248, 2, 92,188,106, 33,250,233, 99,220, 61,126, 20, 85, 28,108, 17, 80,191, 33, 12, 6, -195, 91,185,222,120, 23, 48, 24, 12,155,124,124,124,168, 78,167,187, 0, 96,213,195,135, 15,135,198,199,199, 79, 56,114,228,136, -107,191,126,253,226,142, 30, 61,186, 28,192,230,135, 15, 31,142,254,225,135, 31,218,113, 28, 87,226,106, 65,150,101,127,255,250, -235,175, 91,247,235,215,143, 72, 24,131,238,244,169, 45, 34,142, 51,144,111,190,221,100, 12,185,124,129,225, 56, 3,233, 51,240, -107,254,248, 31, 15,153, 81, 95, 45, 54,214,251, 32, 8,161,161,161,206,221,186,117,251, 1, 64,153, 66,171,192, 82, 85,154,133, -146,101, 89, 12, 29, 58, 20,187,118,237, 50, 57,222,195,129,106,150, 94,230,215,127, 90,221,222,156,136,114,138,136,172,234, 56, -118,232, 70, 70,226,211,184,247, 74,100, 1, 64, 74, 74,202,122, 0,235,109,109,109, 19,205,204,204,144,157,157,253,167,242, 71, - 8,145,251,249,249,201,165, 82, 41, 58,118,236,104,235,226,226, 18,193, 48,204,138,216,216,216, 82, 21, 71, 73,195,132, 37, 13, - 39,190,205,170, 67, 27, 7,116,107,210,162,190,197, 19,171,121, 22,114,145,230, 94,149, 8,185, 37, 1,144,169,117,122,113, 53, -106, 64, 22, 73,146,213,107,216,166, 1, 44, 69,102,221, 74, 19, 90, 12,203,222,205, 76,207,232,146,149,173,195,229, 43,161, 24, - 56,160, 6,180,122, 2,158,103,144,147,171, 5, 88, 49, 24, 0,131, 62, 30, 2, 74, 68, 72, 75,140, 3,203,178, 15,241,254, 97, -250,232,209,163,187,124,251,237,183, 85,243,253, 95,121,229,251,191,154, 66, 8,169, 77,203,113, 62, 94, 6, 79,149,163,187,102, - 77, 58,124,105, 93,102, 80, 83,245,211, 6,126, 0, 0,219, 6,126, 72, 19,139,241, 76,196, 34,149, 82,168,139, 89,181, 90, 21, -253,254,143, 89, 7,223,152, 4, 95,244,216,164, 57, 90, 62,213,220, 59,183,106,212,240,171, 25,223,206,176,120,116, 53, 4,211, -190, 95, 69,125, 26,118,200, 94,127,233,174, 46,199,204,187, 75,118,242,211, 43,166,234, 11, 0,232,220,182, 55,234,248, 55,254, -211,159,205,219,228,249,146,188,124,254, 54, 18,147, 99, 77,110,108,243,197, 65,137,115,178, 76, 89,210, 95,130,233, 59, 35, 52, - 52,212, 49, 38, 38,230,141,137,239,222,222,222, 32,132,224,198,141, 27,184,126,253, 58, 6, 14, 28, 8,145, 72, 4,177, 88,140, - 11, 23, 46, 84,200, 26, 83,196,186,244,128, 82,218,138, 16,210,201,221,221,189,196,213,134,166,112,169,213,106,100,102,102,226, -212,169, 83,168, 81,163, 6,126,250,233, 39,184,186, 56, 97,198,140, 73,224,121, 30, 89, 89, 89, 48, 26,141,166, 90,180,248, 2, -107, 17,207,243, 72, 78, 78, 70,213,170, 85,177,122,245,106, 44, 95,190,252,135,184,184,184, 35, 21, 13,163,167,167,167,181,209, -104,252,166,123,247,238, 29,122,246,236,137, 78,157, 58,189,241,255,142, 29, 59, 44,246,239,223, 63,223,195,195,163,179, 94,175, - 95,144,152,152,152,108, 10,239,111,191,229,185, 95, 82,126, 48, 7,211,250, 85,193, 39, 99,183, 96,233,210, 3,144,201,100,111, - 52,188,243,230,205, 43, 83,196,240,148,250, 72, 82,174,198, 77,154,186,196,113,254,252,179, 56,123, 54, 9, 12,195,192,197,197, - 5, 12,195,224,229,203,151, 96, 24, 6, 94, 94, 94, 96, 24, 6,177,177,177, 5,115, 2,211,161, 49,205,151, 33,195, 48,208,104, - 52,120, 29,253, 10, 49,145, 17, 48,207, 74,128,131,165, 18,233, 97, 15, 80,103,248,136, 66,255, 79,255,112, 15,119, 27,128,109, - 69, 78, 45, 33,132,232, 8, 33,125, 0, 28,164,148, 22, 88, 52,126,200,255,148,136, 15, 62,248,160,222,183,223,126, 43, 46,112, -183,225,234,249, 35,167,215,235,121, 0,240,171,211,242, 13,181,255,236,217, 51, 44, 93,186, 20,185,185,185,144,152,226,232, 46, - 95,180, 22,172, 48, 44, 73,132, 85, 68,100, 1,128,157,151,251, 47, 55,238, 92, 48,222,143, 92,167,126,248,228,132, 34, 62,154, - 1,163,123,127, 69, 86,113,203,150,187,187,251, 28,158,231, 41,165,116, 86,145,186, 85,230,233,233,121,233,244,233,211,118, 28, -199, 97,229,202,149,214, 9, 9, 9,214, 45, 91,182,156, 6,160, 84,161, 85,210, 48, 97, 73,195,137, 40,178,234, 80, 38,147,217, -150, 85,125, 20, 95,117,104, 52,194,215,210,194, 26,233,136,129,214,222, 80, 47,195,142, 75, 59, 19, 63,226,158,107, 84,125,127, - 51,163,161, 42,147,165,131,155,210, 26, 60,165,190,165,118, 78, 13,134, 19,247,238,220,237,232,233, 81,131, 61,114,236, 34,122, -244,234, 7,173,150,129,198, 64, 64, 88, 49, 8, 43, 65,237, 58,245, 81, 51,160, 14, 40,128,219, 55,175,114, 58,131,225,204,251, -148,247,174,205,191, 26,232,218,252,203, 21,160, 60, 45,193,143, 86,213, 94,189,122,205, 7,240, 85,121, 60, 78, 31,126, 53,208, -185,105, 30, 79, 81, 63, 90, 95,127, 57, 26, 97, 55,197, 86, 23,239, 44,148,116,250, 0,193,201,103, 9,148,242,255,173, 58, 20, - 51,149,119,205,241, 95, 17, 92, 38, 9, 45, 79, 79, 79,107, 71,115,229,111, 95, 12,255,204, 34,234,254, 53, 36,132,223,192,149, -139, 17,233,187,247, 31, 72,203, 77, 77, 26, 94, 1,145, 85, 56,204,103,231, 92, 5,222,181,254, 44,180,228,230, 14, 0, 0,239, - 90,141,193,154, 89, 85,116,200,227, 79,214,172,202,136,172,162, 21,118, 73, 62,180, 70,141, 26,133,141, 27, 55,162, 89,179,102, -240,241,241, 41,172,236, 43,106, 53, 43,110, 93,170,204,106,195,162,200,206,206,134,151,151, 23, 54,108,216,128,135, 15, 31,194, -194,194, 2, 3, 7, 14, 68,118,118,118,161,192, 50,117, 50, 60,165,244,217,233,211,167, 27,245,239,223,159,138,197, 98,146,145, -145, 1,107,107,107,172, 94,189, 58, 55, 62, 62, 62,184, 18, 34,171,159, 68, 34,153, 52, 96,192, 0,214,207,207, 15,137,137,137, -176,180,180, 52, 16, 66,196, 0, 96,109,109,109, 80, 40, 20, 24, 61,122, 52,234,214,173,219, 98,202,148, 41,205,220,220,220, 86, -199,198,198,110, 41,171, 44, 17, 66, 10, 27,212,225, 43, 30, 67,167,203, 19, 42,107,214,172, 65,254, 92,183,255, 13, 17, 68, 70, - 2, 38,172,100, 49, 55, 55,135,143,143, 79,137,121,223,162, 69, 11,220,190,125, 59,111,104, 82, 36,130,163,163, 35,174, 92,185, - 98,210, 74,170, 2, 71,144,161,161,161,168,229,109,143,135,103, 79,195, 94, 41, 70, 93, 87,103,184,183,104,133,136,136,136,127, -204,154,149,239,155,106, 12,128,246,249,101,112, 19,128, 81, 69,142, 87, 83, 74,127,169, 8, 39,199,113,148, 97, 24,242,250,245, -107,189, 82,169, 36,182,182,182, 34,153, 76, 6,173, 86, 91, 40,184,158, 61,123,134, 99,199,142, 33, 38, 38, 6,182,182,182,140, -149,149, 21,244,122,125,186, 41,252,190,190,190,112,118,118,126, 99,226,251,240,225,195, 43, 37,178,134, 2,129, 27,127, 92, 80, - 69,198,176, 86,181,236, 59,227,197,227,151, 26, 70, 7,249,255, 7,145, 5, 0,233,233,233,235, 1,172, 47, 56,118,112,112, 24, -198,178,236, 12, 43, 43, 43,171, 11, 23, 46, 88, 59, 56, 56,144, 45, 91,182, 24,102,205,154,149,193,178,108, 58, 33,100,217, 63, - 47, 14, 17,158,146, 25,233, 37,182,113,229,239,107,232,213, 9,175,167,213, 76, 23,215,112, 32, 1,129,232,149,244,232,242, 48, - 46,178,105, 98,124, 2, 67,193,135,151, 81, 7,111,154,246,237,188,111, 34, 30,223,245,148, 91,202, 49,106,244,183, 8, 62,121, - 30,132, 17,227,210,213, 27,208,233,141, 72, 73,203,196,128, 65,131,225,238, 98,143,240,235,167,146, 57,158, 95,253,126,137,108, -126, 85,199, 30,195,108,100, 10,101,126,154, 24,177,237,215, 73, 96,152, 21,152, 61,123, 54, 2, 3, 3,199, 18, 66,190, 43,207, -143, 22, 33,252,170,218,173, 6,217, 72,100,121, 60,148, 55, 98,195,222,105,249,126,180, 38, 98,245,250,253,181, 3,188, 95,204, - 45,203,143,214,251, 34,178,138,126,151, 43,180,170, 84,169, 34, 51, 19, 99,164,173, 66, 50,229,139,143,123, 58, 36, 69,134, 33, -230,209,221,188,225, 5,189, 90, 31, 31, 17,238, 99,194, 67,219, 23,243,223, 65,203, 26,186,210,104, 12,168, 40,103, 65,131, 91, -220,154, 85, 17,145, 85, 18,103, 81,177, 85,212,111,150,135,135, 7,230,207,159, 95,174, 31,173, 18,226, 94,112,190, 19,128, 58, - 5, 98, 11,121,147,225, 59,153,178,210,176, 52, 78, 7, 7, 7,164,166,230,121, 72,104,221,186, 53, 90,183,254,223,122, 6,189, - 94, 95,104,197,178,176,176,248,147, 69,171, 36, 78,133, 66, 49,237,192,129, 3,159, 93,189,122,181,255,228,201,147,197,237,218, -181, 43, 16,115, 42,106,194,222,110,197, 57,141, 70,227,232, 83,167, 78,177, 60,207, 99,195,134, 13,184,125,251, 54, 85, 42,149, - 51,149, 74,229, 42,133, 66, 97, 84,171,213,163, 70,140, 24, 49,120,238,220,185, 76,139, 22, 45,112,237,218, 53,166,106,213,170, - 67, 0,108, 41, 47,238, 55,110,220, 0,195, 48,224,210,162, 49,118,218,110,152, 41, 68,120,252,248, 49,210,210,210,254,228,196, -212,148,244, 44,106, 41, 41,248,180,104,209,162,112, 24,178, 73,147, 38, 96, 89, 22,247,238,221, 43,113, 24,182, 24, 39,181,179, -179, 43, 44, 31, 18,137, 4,231,207,159,199,247,223,127, 15, 79, 91,107,164, 63,122, 8,231,214,109,209,225,179, 17, 24, 56,112, - 32, 88,150,133,173,173,109,161,229,183,188,184,191,101,133, 80,148,243,179, 90,181,106, 13, 9, 15, 15,119,175, 93,187,182, 75, -104,104,104,155,192,192, 64,175,135, 15, 31, 22, 28,203, 96,194,220,156,162,156,183,110,221,218,183,106,213,170,209, 67,135, 14, -149,240, 60,111,140,138,138, 50, 0, 32,206,206,206,236,173, 91,183,248, 35, 71,142, 64,173, 86,195,221,221,157,113,115,115, 35, -103,206,156,225, 31, 61,122,116,131, 82,250,173, 41,113, 55, 26,141,111,184,113, 40,248,189, 99,199,142, 10,191,239, 85,106,250, -254,212,174,165,159, 71, 74,220, 61,196,199, 70,194,152,233,160, 63,118,232,168,182, 34, 34,235,111,200,163,191,147,115,222,211, -167, 79,221,180, 90, 45,164, 82, 41,214,172, 89,163,159, 63,127,126,120, 74, 74, 74,115, 90,194,138,242,226,156,149, 92,117,152, - 86, 6,231,159, 86, 29,102,166, 34,248,208,225, 91,141,204,123,109,194,216,184,228,194,137,141,148, 16,219, 3, 78,254,205,149, -141,107,199, 50,199,231, 48,217, 70, 85,112,105,225,164,148,234, 8, 33,253,122,245, 30,116,110,215,174,157,230,179,230,204,193, -149, 27, 15,145,154,145, 3,158,178,224, 9,193,140, 25,179,224,108,111,139,172,184,167, 42,173, 94,223,171,248, 86, 60,255,245, -124, 39,132, 25,119,230,200,150, 21, 12, 1,159,155,248, 68,198,102, 71, 42, 63, 25,216, 75,212,175, 95, 63, 28, 56,112, 0,161, -161,161,235, 74, 19, 89, 69, 57, 41,101,198, 61,188,176,123, 5, 1,120,117,242, 19,153, 40,231,133,114,200,199,189, 68, 3, 7, - 14,196,193, 99, 87,177,235,232,139,181, 59,143,208,163,239,115,135,165, 82,158,225, 45, 68, 8,109,238, 95,205,173, 69,253, 0, -185,200,168, 70,204,163, 72,164,229,106,112, 38, 44, 42,131,161, 76,165,125,235,228, 85,144, 18, 68, 71, 63,253,211,127, 25, 25, -242,252, 6,189, 98,219, 74, 49, 12,243,134, 53,235,109, 44, 89, 69,195,233,228,228,244,198,118, 46, 69, 27,238,130, 57, 64,149, -112,237, 48, 45, 58, 58,218, 50, 58, 58, 26,148, 82,220,184,113,195,178, 73,147, 38,211,222,198,154, 53,105,210,164, 66,171, 85, -241,239,146,206,149,135,252, 73,233,203,237,237,237,247, 78,153, 50,101,108,147, 38, 77, 58,206,153, 51,135, 0, 96, 43, 89, 0, - 57,158,231, 17, 18, 18,130, 3, 7, 14, 24,245,122,253,200,184,184,184,162,115, 29, 86,186,186,186,158,233,221,187,247,150, 39, - 79,158,176,225,225,225, 48, 69,208,169,213,106,248,248,248,128,227, 56, 44, 28,235,129,236,236,218,224, 56, 14, 70,163, 17,102, -102,102,111,236,115,105, 74, 62, 49, 12, 3,163,209,248, 39,161,117,227,198, 13,176, 44,139,230,205,155,227,238,221,187,133, 22, -173,242, 44, 80,122,189, 62,218,201,201,201,105,222,188,121,133,225, 74, 78, 78,198,233,211,167,241,193,135, 77,225, 63,114, 20, -226,226,226,176,108,217, 50,184,186,186,226,167,159,126, 66, 90, 90, 26, 56,142,251,187,205,233, 93,194,195,195,221, 63,254,248, -227,164,135, 15, 31,186, 31, 59,118,204,186, 91,183,110,102,131, 6, 13, 74,122,248,240,161, 59, 33,164, 41, 42, 56, 9,218,104, - 52, 78, 39,132,156,252,233,167,159,166,125,245,213, 87, 77,134, 14, 29, 42, 22,139,197,124,108,108, 44,183,115,231, 78,226,227, -227,195, 72, 36, 18,114,234,212, 41,254,230,205,155,215, 57,142, 91, 72, 41,189, 84, 17,139,115, 81,145,197,178,172, 73, 34,171, - 56, 38, 56,202,134, 88, 48,201,205, 87,173,153,207,248,121,187,235,183,238, 60,253,250,210,181,167,207, 89, 45, 55,225, 55,224, - 57,254, 31,130,101,217, 61,181,106,213, 26, 54,110,220, 56, 69,167, 78,157,100,115,231,206,205,204,206,206, 46, 81,100,149,242, - 94,254,229,171, 14, 1,252, 58,125,242,177, 9, 95,215, 30, 86,237,115,231, 42, 56,155,155,132,116, 17,203, 88, 90, 51,168,239, -197, 34, 59,229,153,195,209,115,155, 95,162, 28,191,108,148,210, 91,132,144,246, 1,181,235,237, 95,248,211, 66,199,153, 83,167, -136,247, 31, 59, 1,202,233,113,227,194, 5,152, 75,140,244,209,157,179,137, 90,189,174,231,251,184, 5, 79,220,229,149,187, 8, - 33,135,109,109,109,239,127, 54,116,168, 79,173, 90,131,160, 84, 42,177,111,223, 62,108, 91,185,210,184, 28,232,191,158,144,187, -163,242,124,234,149,138,196,107,133, 60,247, 70,124,246,153,111,253,250,159, 67,169, 84, 98,239,222,189,216,178,124,185,201, 60, -255,113,107, 86,129,103,248,224,252,111, 19,252,104, 49, 36,251,250,211,168,156, 27, 79,163,114,192, 83,202, 83,170,101, 24,188, -206,213,235,127,138,120, 30,115,170,146, 1, 1,207,243,248,225,199,113,239, 50,114,133,226,167,178, 75,186, 75,104, 36, 98,138, -238,145, 86,222,134,210, 0, 96, 48, 24, 98, 76,164, 95,224,233,249,167, 61, 80, 23, 84, 54,172, 5,195,129,166,138, 44, 83,253, -104, 1, 64, 74, 74, 74, 60,128,153, 46, 46, 46, 59, 58,118,236, 56, 2, 64,108, 37,243,104, 67,171, 86,173, 70, 2, 96, 9, 33, -235, 98, 99, 99,255, 52,161, 52, 46, 46, 46,194,205,205,109,177,183,183,119,225, 70,211,101,113,242, 60,255,162,118,237,218,250, -146,242,162,180, 99,158,231,203,205,163,140,140, 12, 52,110,220,248, 79,123, 90, 82, 74, 17, 21, 21, 85, 96,113, 42, 76,251,178, - 4, 92, 78, 78,206,168, 47,191,252,114,189, 88, 44,246, 4, 64, 10, 68,174,209,104,100,127,249,229, 23,185,209,104,100, 1, 16, -134, 97, 56,177, 88,172, 57,112,224, 0,199,113, 92,180, 86,171, 29,245, 55,215, 17,123, 73,222, 86, 12,185,225,225,225,126,249, -150,172,152,208,208,208,123,187,118,237,114, 0,176,187,146,101,243, 18,128, 75,132,144, 22,107,214,172,153, 62,106,212,168,198, - 3, 7, 14, 20,181,110,221, 26,193,193,193,198,144,144,144, 27,106,181,122, 65, 69, 4, 86,126, 94,102,122,120,120, 20, 10,174, -114,222,229, 50, 39,242,218,121,201, 86, 13, 30,227, 42,223,176,224,116, 78, 74,156,238,170, 33, 71,247,237,102, 32, 20,255,143, -145,144,144, 48,153, 16, 50,107,217,178,101,113,117,235,214,149, 73, 36, 18,157,169, 34,235,111,180, 30,112,132,144,174, 63,119, -232,123,184,213,140, 47,189, 59,180,105,174,244,168,226,232,246, 40, 50, 17,207,174, 5,231,222, 63,250,227, 43,170, 77,239, 65, - 41,229, 76,224,186, 73, 8,169, 49,105,202,164,130, 77,165,235,180, 59,115,136,254, 63,218, 84,250,135,197,139, 23,251,212,170, - 85, 11,251,246,237,195,153,237,219, 49, 32, 37, 5,231, 89,150,101, 36, 18,187,163,122,253, 18,152,230,184,248,135,165, 75,151, -250, 6, 6, 6, 98,207,158, 61, 56,181,101, 11,250, 87,142,167, 52, 52, 2,224, 80,208, 60, 1,120, 2,160, 1, 0, 5, 0, 45, -242,182,118,178, 47,114,125,106,254,127, 5,255, 95, 4,240, 87, 78,132, 45,223, 51,124,113, 60,124,250,178,193,187, 14,133, 90, -173, 78,243,241,241,169,208,154,107,131,193, 80,230, 24, 46,199,113, 49,213,170, 85, 51,217,106, 97,138, 40, 74, 77, 77,109,248, - 23, 86, 16,111, 53, 23,235,141, 70,132,231, 95,185,184,184,240, 5,141,126, 73, 34,172,164,115, 20,120, 89,145,231,196,199,199, - 63, 1,240,117,101,195, 25, 27, 27,187, 31, 38,108, 26,109,234,117, 0,144,150,150,246,206, 55,243, 37,148,198,206,157, 59,183, - 66, 2, 27,148,198,150,145,215, 15, 1, 52,249,183,215,178, 5, 91,239, 16, 66,152,208,208,208, 17,249,195,219,103, 1,172,203, -247,232,253,182,252,133,130,107,195,134, 13, 19, 40,165,200,202,202, 90, 94, 81,129, 85,216,123, 78, 76, 12,126, 87,113, 79, 75, -212,253,177,115, 93, 76, 91,117,134,126,194,198, 28,221, 22, 8, 40,200, 51,141,163,163,227,239,159,124,242,201, 7, 0, 54,191, - 45, 95, 73,195,137,239, 32,140, 47, 9, 33,117,207, 79,250,254,179,243,214, 22, 65, 48,138,252,160, 99,142, 66,151, 26, 12,224, - 55, 83,172,226, 69,227,139, 60, 55, 37, 75,255, 63,229,115,190,255,171, 9,195,134, 13,195,172, 89,179,112,106,201, 18,253, 24, - 66, 50,197, 0, 61,153,215,209,100, 8, 48,213, 84,158, 33, 67,134, 96,214,172, 89, 56,190,112, 97,165,120,202,129, 3, 33,228, - 24, 0, 76,155, 54,237,219,249,243,231,219, 76,159, 62,189,206,130, 5, 11,126,202, 63, 14, 43,248, 63, 63, 79,187, 77,159, 62, - 61,160,200,255,217, 0,110,253,197,233, 89,162,103,248, 55,122,236,239,250, 3,160,189,192, 41,112, 10,156, 2,167,192, 41,112, - 10,156, 2,231, 91,126,130,242, 36, 75,233,223,165,253, 46,114, 14,255,196, 71, 36,244,221, 4, 8, 16, 32, 64,128, 0, 1,255, - 81,171,220,177,183,249,255, 29,134,163, 96,142, 86, 81, 75,233, 6, 32,111,185,123,251, 82, 76,169, 21,113, 28,217,190, 18,102, -223,179, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,254,255,226, 44,143,187,148,251,131, 8, 33,199, 40,165,221, 74,251, 46, - 16, 86,197,127, 23, 57,247,206,166, 29,148, 16,151,145,165,205,209, 18,134, 14, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, -252, 79, 12, 29, 2,160,211,166, 77,155,254,111, 27, 58, 4,224, 2, 96,100,209,143, 9, 67,135,251,216,216, 88, 88, 74,165, 74, - 9, 0,232,116, 42,189,155, 27,178,128,190,255,216,134,183, 2,254,179,166, 93,167,124, 81,159,248, 46,175, 21, 32, 64,128, 0, - 1,255,111,144, 92, 96,169, 2,144, 12,128,228, 31,235,242,191,147,243,219,142,226,191,223,248,255,175, 2,165, 52, 30, 64,137, -171,229, 69,165,137,172,148, 20,165,189, 72,148,238,107, 52,106,106, 2,128, 72,196, 60, 78, 73,177,137,176,183,223,151, 82, 25, -177,229,224,228,116, 71,204,178,110,166, 92,107, 48, 26, 99, 83, 18, 19,223,112, 29, 79,129,255,188,192, 51, 85, 68,188,141,216, -248, 59,132,138,131,131,131,147,147,147,211, 71,150,150,150, 31,102,100,100,220, 76, 78, 78, 62, 88,218,190,135,132,144,249,132, - 96, 74,254,239, 69,148,210,233,101,132,221,228,107, 75,184,215, 71,169, 84,142, 37,132, 4,230,199, 63, 84,165, 82,173,161,148, - 62,253,127, 40,108, 21, 0,122,138, 68,162, 33,246,246,246,141, 19, 18, 18,230, 82, 74,151, 85,146, 75, 4, 96,146,181,181,245, - 64,107,107,235,170,105,105,105,207,179,178,178,246, 0, 88, 74, 41, 45,119,169,244,119,227, 93, 63,108,221,169,245,204,144, 83, - 33, 63,204, 89, 17,119,237, 79,255, 79,118,181,235,216,161,217,172,144,163, 87,231, 77, 95, 21,155, 86,193,176, 49, 0, 10,156, -230,241,249,189, 86,250,142,211, 82, 12,160, 59,128,214, 0, 66, 0, 28, 53, 37,222,165,112,125, 0,224,219,252, 48, 47,165,148, -158,255,151,151, 35, 51, 39, 39,167,133, 0,186,139, 68,162,240,216,216,216,145,148,210,152,127, 56, 76, 34,228, 45,243, 15, 68, -158, 27,142, 91,166,184,112, 48, 5,246,246,246,221, 68, 34,209,216,124,215, 46,107, 82, 82, 82,142,253, 91,243, 70, 38,147, 45, -119,118,118,254, 92,173, 86,171, 8, 33,180,168,191, 71,142,227, 98,146,147,147, 27,190,135, 85,219,173,127,249,251, 50,178, 4, -241, 85,186, 31,173,216, 88, 88,138, 68,233,190, 73, 9, 15, 7,196,197, 63,232, 15, 0,174, 46,117,246, 56, 58,215,222, 29, 27, - 43,213, 55,234,208,219, 92,172, 20,173, 97, 89,113, 61,141, 78,107, 47, 22,137, 83,244,156,225, 30,163,163, 99,227, 31, 31, 40, -209,217,162,152,101,221, 94, 69,156,119,228,244,105, 16,203, 93, 33, 86,120,150, 26, 96, 87, 87,215, 74, 69,212,214,182,186,133, - 94, 38,159, 32, 22,179, 29,120,202, 5, 82, 30, 96,136, 56,148, 51, 26,206, 73,180,218,159,211,210, 34,179, 43,155,136, 53,237, -137, 51, 5, 6,130,160, 3, 40,206, 16, 96,215,227, 20,154, 80,129, 76, 48, 73, 68,188,165,216, 40,122,239, 50, 74,233,228,119, - 93,152,220,221,221,109,250,244,233,179,252,251,239,191, 87,152,155,155,147,232,232,232, 78, 83,167, 78,109,233,238,238,254,117, - 76, 76, 76, 92,113,209, 71, 8,166,240, 60,101, 0,128, 97,200, 84, 39, 39, 39, 37,203,178,127,242,109,100, 52, 26,149,132, 96, - 28,207, 83,146,127,237, 20, 66,200, 10, 83, 4,163, 66,161, 24,212,184, 73,211,175, 23, 46, 94,106,238,228,232,104,198, 25,121, -253,203,168, 87,202,153,211, 38, 55, 81, 40, 20, 43,212,106,245,206, 74,188, 52,132,101,217, 1, 50,153,172, 27,128, 90,249,167, - 31,105,181,218, 99, 70,163,113,183,169, 13,186,179,179,243, 69,150,101,171, 84,228,217, 70,163, 49, 58, 33, 33,161,121, 37, 95, -246,126,158,158,158,191,181,106,213, 74,217,184,113, 99, 72,165, 82,204,154, 53,107, 18,128,101,166, 8, 42,165, 82, 57,192,204, -204,172, 90, 78, 78, 78,164, 90,173,222, 47,149, 74,219,175, 88,177,194,163, 89,179,102, 22,137,137,137,132,101, 89,167, 99,199, -142,125,186,114,229,202, 78,132,144,118,229, 53,114,153,145,116,166,172,123,173, 22,153,145,231,103, 2,232, 82,252,127, 78, 35, - 31, 66, 89,143,110,106,122,247, 53, 42,176,180,158, 16,194,136,197,226, 21,206,206,206,195, 52, 26,141, 6,121,190,215,168,147, -147, 83, 97,131, 3, 0, 58,157, 46, 61, 61, 61,221,175, 18,233,232, 7, 96,184,181,181,245,176,111,190,249,198,166, 75,151, 46, -216,190,125,251, 23, 27, 55,110, 76, 39,132,252, 14,224, 87, 74,233,147, 10,210, 78, 73, 72, 72,232, 42, 22,139,137,135,135, 7, - 11,224,124, 5,194,227, 11, 96, 70,126, 99,179,134, 82,106, 36,132,180, 1,242,222,119, 0,139, 10,132, 27,203,178,107,252,252, -252, 62,122,244,232,209, 90, 74,233, 15,149,125,215,157,157,157,215,175, 94,189,186,127,143, 30, 61,216,228,228,100,183,186,117, -235,238, 0,208,226, 29, 52, 72,159,201,100,178,137,117,234,212,241,127,242,228, 73, 68, 86, 86,214,210,252,244,164,101,220,227, - 14,160,189,181,181,117,187, 25, 51,102,152,119,235,214, 13, 27, 54,108,232,186,113,227,198, 28, 66,200, 57, 0,103,223, 86, 4, -138, 68,162,177, 49, 49, 49,246,148, 82,184,184,184,140, 69, 57,155,155,255, 83, 96, 89,118,197,128, 1, 3,134,237,216,177, 67, -249,234,213, 43,165,155,155, 91,161,243,108, 66, 72,165,219, 79, 1,111,109,209,218, 80, 32,184, 76,242,163, 37,149, 42, 37, 70, -163,166,102, 92,252,131,254, 45, 91,253, 98, 5, 0, 23, 47,124,217,223,209, 57, 32, 84, 42, 85, 70,200, 44,229, 7,122,119,111, - 95,175,111,183, 86,196,221,197, 17, 49,241, 73, 78,191,238, 58,213,249,216,169,243, 7,144,231, 64,172, 68,112,250, 52, 40,244, -103,241,228,242, 74,216,183,142,195,170,227, 49,184,118,255, 37, 84,153, 41,168,226,172,192,226, 9, 29,225,108,163,172, 84, 36, -205,157,124,219, 48,114,229,238,143, 7,125, 98,245, 81,207, 90, 98, 47,103,103, 80, 42, 67, 68,100, 78,211, 19,167,207, 55,218, -191,119,231, 88,115, 39,223, 1, 57,137, 17, 38, 87,110, 13, 92,137, 34, 87,143,158, 34,150,124,218,162, 73, 64,187, 65, 93, 91, - 48,254,181,106, 32, 60,236, 81,199,195,127,220, 88,236,239,196,156,227,140,116,171,153, 4,135,238,196,149,238,208,175, 36,193, -209,161, 67,135, 22, 50,153, 76, 95,244, 58,173, 86, 43, 33, 4, 31, 84, 70,108, 20, 60, 67,167,211, 50, 98,177, 20, 12, 67,190, -174, 83,167, 78,173,148,148,148,243,132,144,223, 98, 99, 43,102, 45,248,138, 16,105,186, 72,212,128,145,201, 92,140, 58,157, 29, - 0, 16,169, 52,221,221,198,166,246,140,111,191, 53,103, 89,150, 79, 77, 77,133, 74,165, 34, 35, 70,140,144, 71, 70, 70,246, 6, -176,178,156, 48, 98,227,198,141,190, 46, 46, 46,186,226,255,197,199,199, 75,123,244,248,168, 50,149,182,239, 7, 31, 54,155,120, -234,212,201, 90, 89,105,233,154,141,203,214,223, 49,200,149,218,170,181,252,196,107, 54,108,177, 26, 57,108,240,151,132,144,123, -148,210,136, 10,112,122, 42, 20,138, 3, 75,150, 44, 9,108,211,166,141,216,209,209, 17,137,137,137,120,244,232, 81,224, 31,127, -252,209,115,203,150, 45,147, 8, 33,189, 41,165,166,120,112,247, 57,183,245, 55, 71, 51, 91, 59, 24, 13, 6,184,214,169, 95,232, -223,236,217, 31,167,193,233,245,224, 13, 6,212,234,214, 51,207, 44,195,243,240,247,247,175,148,215, 93, 66,136,107, 64, 64,192, -182,159,126,250, 73,162,213,106,113,227,198, 13,156, 63,127,158,143,143,143, 95, 80,158,200, 34,132,156,158, 51,103,142,123,243, -230,205, 45, 82, 82, 82, 96, 52, 26,237, 15, 29, 58, 52,182,126,253,250,150, 30, 30, 30,210,173, 91,183, 34, 39, 39, 7, 28,199, -217, 86,171, 86,205,118,208,160, 65,186,173, 91,183, 78, 2,176,176, 52, 75, 86, 86, 36,157,153, 64,170,117,246,107, 48, 4, 9, -228,100,231,175,187,184,156,176,172, 78, 10, 45, 91, 93,170, 87,183,168, 86,211,108,170,185,101,109,219,172,216,179, 83,187, 84, -175,190,241, 68,100,249,157, 33, 66, 8,195, 48,204,138,222,189,123,127,188,107,215, 46,229,163, 71,143,148,181,106,213, 2,207, -243,133, 30,248, 11, 28,206,250,248,248, 84, 38, 29, 23,140, 30, 61,122,106,255,254,253, 81,167, 78,157, 66,167,168,179,103,207, -198,212,169, 83,109, 46, 94,188, 56,105,231,206,157,147, 8, 33, 11, 41,165,211, 42,210,150, 23,109, 47, 43, 24,172,239, 94,188, -120,209,239,192,129, 3,131,167, 76,153,226, 3, 96, 28,128, 89,169,169,169,173, 0,192,206,206, 78, 10,224, 60, 33,228,179,111, -190,249,102,204,180,105,211,208,181,107,215, 89,132,144, 31, 43, 99,229, 35,132,176,246,246,246, 93,123,244,232,193, 26, 12, 6, -152,153,153,193, 96, 48, 84,127, 75,129, 69, 0,172, 30, 53,106,212,152,209,163, 71,195,198,198, 6, 6,131,193,119,215,174, 93, - 27,103,205,154,245, 33, 33,100,120, 73, 97, 37,132, 12, 25, 51,102, 76,159, 79, 62,249, 4, 13, 27, 54,132, 72,148,151,140, 75, -150, 44,193,188,121,243,204, 79,159, 62,221,115,235,214,173, 61, 9, 33,251, 41,165,149,246,133,198,243, 60, 68, 34, 17, 94,191, -126, 13, 71, 71, 71,153,173,173,237, 41, 66,200,134,212,212,212,131,255, 34,171,201,162, 1, 3, 6,124,188, 99,199, 14,115, 0, - 88,188,120, 49, 38, 78,156, 8, 39, 39, 39,152,155,155, 11,106,231, 95, 98,209, 42,238, 71,171, 82,238, 29, 84, 42, 85,253,233, - 95,125, 10,134,201,235, 53,214,168,234,137,249,223,142, 36,135,143,157,170, 95,214,125, 98,185, 43,158, 92, 94, 9,153,199, 4, -104, 13, 28,174,223,127,129, 51,139, 59, 1, 0,124,187,204,128, 86,223,174, 64, 25,218, 74, 21,138, 69, 58,163,241, 10,156,157, -111, 32, 42, 42,185, 60,145,229,224,236,116,108,221,186,133,138,192,234,126,208,115, 6,196, 38,197,130, 16, 25,220,221, 44,240, -217,144, 46,226, 86,173, 92,237,191,251,110,125,176,153,131,111,175,220,228,136,114, 29,134,250, 57,144,205, 45,234,251,244, 31, - 20,212, 92, 86, 59, 48, 0, 18,153,226,127, 2,172, 97, 67, 52,104,216,144,153,150,147,221,225,230,173, 59, 29,246,157,190,174, -245,115, 32,123,158, 36,211,161,101,229, 67, 81,193, 49,126,252,120, 20,244,190, 11,144,152,152,136, 63,254, 56, 87,226, 61,166, -230,117,209,103,252,248,227,143, 22,233,233,233, 93, 54,109,218,212,214,197,197,229,199,248,248,248,203,166,144,124, 74, 72, 21, -200,100,237,134, 45, 93,202,215,251,232, 35,214,218,217,153,225,141, 70, 18,247,252,185,221,178,149, 43, 91,167, 61,123,166,200, -181,181, 77, 75, 87,171, 85, 17, 17, 17,144,203,229, 68, 36, 18, 53, 42, 65,225, 39, 18, 66, 22, 49, 12,153, 74, 8,129, 76, 38, -143, 24, 61,122,244,221,252,191,171, 28, 61,122, 84,217,189,123,119, 21,128, 87,121,230,112,185, 27,203, 50,190,121, 19, 8,177, -200, 20,129,105,102,102,246,213, 15, 63, 45, 52,203, 74,203, 80,235,115,115, 13, 14,150,230,132,152, 91,176, 89,153,217,217,177, -241,201,218, 25,115,231,177,163, 62,251,228, 43, 0, 99, 77, 21, 89,117,235,214,189,121,224,192, 1, 71, 59, 59, 59,100,100,100, - 32, 53, 53, 21, 55,111,222, 4,207,243,232,221,187,183,172,105,147,198,245,191,157, 49,243, 26, 33,228, 67, 83,196,150,153,173, - 61, 22, 55,175,151,215, 88,191, 74, 45,204,159, 13,253,186, 21, 94, 51, 47, 38, 19, 0, 32,151,203,223,102, 11,169, 15,219,181, -107, 39, 1,128,225,195,135,103,101,103,103,207, 7,176,131,150,225, 84, 53, 31,147,102,206,156,233, 86,181,106, 85,175, 29, 59, -118, 32, 39, 39, 7, 0, 28,171, 86,173, 10, 63, 63, 63, 99, 72, 72, 8,124,125,125, 97, 97, 97,129,139, 23, 47,226,250,245,235, -104,208,160,129,133, 68, 34,233, 95,154,208,106,221,169,245, 76, 89,247, 90, 45,252, 26, 12,129,185,165, 11, 54,238,220,141, 39, -119,182,180,208,234, 31,205,156, 63,206,237, 19, 53,149, 13,117,247,177,152, 86,165, 97, 43,187, 26, 1, 31,193,171,193, 93,123, -141,241,210,139, 89, 95, 84, 91, 32,146,107,182,204, 89, 18,151, 90,154,200, 2,176,184,119,239,222,253,118,237,218,101, 13, 0, - 15, 31, 62, 68, 98, 98, 34, 28, 28, 28, 32,151,203, 33, 22,139, 11,247, 39,173, 36,134,174, 89,179,166, 80,180,113, 28, 87,184, - 11,128, 82,169, 68,203,150, 45, 81,175, 94, 61, 28, 60,120,112, 40,128,105, 37,132,177,121,147, 38, 77,182,123,121,121,121, 20, - 61, 31, 20, 20,132,129, 3, 7, 2, 0, 90,181,106,213,174,111,223,190,180, 64, 16,198,199,199,231,220,186,117,171, 3,165,244, - 70, 73, 1, 98, 24, 70, 29, 27, 27,139,111,190,249, 6, 47, 95,190,252,130, 16, 18, 5, 64, 46,149, 74, 11,251,199,132, 16,223, -128,128,128, 21, 19, 39, 78, 68,100,100, 36,194,195,195,111, 86,118, 40,149, 82,106,244,246,246,126,102, 48, 24, 26,114, 28, 7, -181, 90,141, 94,189,122,201,109,109,109, 19, 89,150,125,156,146,146, 50, 56,127, 78,138,169,141,144, 28,192,210,209,163, 71,143, -153, 50,101, 10,206,157, 59,135,195,135, 15,227,147, 79, 62,193,132, 9, 19, 96,110,110, 62,108,194,132, 9,215,144,183,161,121, -113,180, 91,179,102, 13,140, 70,227,159,222, 13,185, 92,142,230,205,155,195,223,223, 31,135, 15, 31,110,135, 34,251,163, 86,176, -145,244,234,221,187,183,148,231,121,228,230,230, 34, 36, 36,196, 92,161, 80,152,187,187,187,143, 0,240,175, 17, 90, 94, 94, 94, -163,119,237,218,101, 94,116,244, 71, 38,147,161, 72, 57, 16,240, 15, 91,180,202,235, 97, 21, 66,167, 83,233, 69, 34,230,177,171, - 75,157, 61, 23, 47,124, 89, 56,116, 8, 48,143,117, 58,149, 30, 0,140, 60, 69,150,138,131, 66,198,224, 85, 66, 54,194,158,167, -148,244,224, 55,150,104,138, 21,158,144, 53,126, 5, 74, 41,116,122, 35,180,153, 9,152, 31,172,194,163, 24, 13,116,185,233,208, -233,243,166, 97,217,219,219,139, 78,157, 58, 49,241,236,217, 63,198,252,254,251,239,108,140,149, 85, 56, 50, 51,235,151,196,105, -107, 91,221, 66,100,166,216,179,118,221, 44, 5,101,159, 35, 34, 58, 23, 53,220, 27,195,222,218, 3, 9, 41,185,184, 18,126, 28, -143,159, 30, 67, 85, 23, 47, 76,248,170,179,252,135,159,118,236,182,177,169,234,153,158,254, 34,171,180,112,230, 99,200,250,147, - 17,224,210,158,195,152, 26, 9, 99,118,220,159, 5,158,131, 39, 26,180,113,131,131, 71,117,217,208, 9,243,134, 0, 24, 90, 18, - 39,165, 52,145,101,217,181, 12, 67,198, 16, 66, 80,167, 78,221,152,165, 75,151,234, 75,120,166,190, 78,157,186, 49, 44,203,184, -231, 85,236,204, 26,158, 55, 38,150, 19,206, 55, 68,141, 84, 42,155,146,103,246,119,121, 29, 28, 28,172,239,215,175, 31,150, 44, - 89, 34,157, 58,117,234, 12,119,119,247,225,197,135,247,138,115,246, 38,196,211,173,122,245,142, 63, 94,185, 66,197, 6, 3, 73, -187,121, 51, 43, 35, 62,158, 75,200,206,150,238,125,252,184,235,231,147, 39, 75, 61, 60, 60,112,249,216, 49,187,228,220, 92,154, -161,213,170, 51, 50, 50, 40,199,113, 55, 75,137,251,116, 39, 39, 39,229,198,141, 27,125, 71,143, 30,125, 55, 46, 46,110,122,126, - 5, 49, 31,128, 63,128, 87, 69,206, 97,221,186,221,177, 35, 70,140,136, 72, 76, 76,156, 94, 86, 56,139, 32,192,209,193, 81,185, -115,253,214, 7,182, 22, 10,198,193,221,149, 17, 91, 91,139, 56,169, 66,194, 3,234,170, 30,213,205, 0, 4,148,146,102,103,139, -247,184, 21, 10,197,129, 35, 71,142, 56,138,197, 98, 24,141, 70, 56, 56, 56,224,229,203,151,200,200,200, 64,118,118, 54, 94, 60, -126, 4,111, 15, 15,124, 55,109,170,203,184,169,211, 14, 16, 66, 26, 22,109,204, 74,220, 0,217,160,255,147,101,175,148,141,200, -223,248, 54, 37,223,139,225,101,116,116, 52,204,205,205, 17, 24, 24,104,126,229,202,149, 75,165,137,172, 98,155, 0,247,111,214, -172,153,197,206,157, 59,209,160, 65, 3, 88, 89, 89, 33, 36, 36, 4, 15, 31, 62,132, 94,175,103,114,114,114, 96, 97, 97,129, 5, - 11, 22,192,203,203, 11, 89, 89, 89,136,142,142,182, 19,139,197,246,165,113,134,156, 10,249, 33, 51,242,252,204, 4,114,178,243, -198,157,187, 49, 98,208, 0, 56,211,231,151,172,170,147, 31, 58,118,111, 54,155,178, 30,221,204, 44,234,216,248, 4,118,135, 68, -106,142,113, 83,230, 33, 34,244,168,141, 42,251,193, 23,196,248,218, 3,192,248,226,156,249, 22, 17,198,195,195,227,243,189,123, -247, 90, 20, 25, 74, 41,220,243,176,232, 38,240,165,109,248,110, 74,122, 18, 66,240,242,229, 75, 56, 58, 58,194,220,220,188,112, - 3,241, 71,143, 30,225,250,245,235, 40,216,141,162, 20,206,193,103,207,158,245, 48, 51, 51, 43,126, 13, 82, 82, 82,192,113, 28, -148, 74, 37,140, 70, 35,244,122, 61, 12, 6, 3, 52, 26,141,185,191,191,255, 88, 0, 55, 74,226,228,121,254,235,254,253,251, 55, -187,113,227, 70,181,149, 43, 87, 66,167,211, 45, 78, 72, 72, 64,159, 62,125,192,243, 60,218,181,107,247, 1,165,244,201,140, 25, - 51, 0, 0, 19, 39, 78, 52,228,230,230,142,174, 76,220,243,227,239,223,183,111,223,106,231,206,157, 67,139, 22, 45,160,213,106, -177,100,201, 18,203,117,235,214, 89,110,221,186,213, 97,202,148, 41,191, 1,232, 84, 22,103,126,126, 45,118,118,118, 30, 51,104, -208, 32, 69,254, 30,166,216,178,101, 11,190,251,238,187, 93, 0,102,156, 56,113, 98,206,225,195,135,135,124,254,249,231,248,238, -187,239, 38, 20, 8,173,146, 56, 95,188,120, 1, 7, 7, 7, 88, 90, 90,230, 85,150,122, 61,238,221,187,135, 51,103,206,160,102, -205,154,166, 52,132,103,203, 16, 89,191,237,220,185,211,226,245,235,215,184,120,241, 34,188,189,189,161, 82,169,202,221, 27,246, - 93,111,254, 92, 30,167, 90,173,214, 68, 71, 71,155, 47, 92,184, 16, 46, 46, 46,240,242,242,130, 92, 46, 7, 33, 4, 6,131,161, -212,237,213, 76, 9,103,235,214, 68,148, 18,107,211,195,202,218,230, 11, 74,169, 40, 51, 51,125,189, 30, 25,251, 34, 35,169,238, -239,138,251,127,220,162, 85,159, 82,122,183,232,158,135, 5,157, 17, 17, 0, 4, 7, 7,211,160,160, 32, 82,240,237,230,134,172, -148, 20,155, 8, 71,231,218,187, 29,157, 3,242,247,253, 98, 30,179,172, 77,132,147,147, 42, 11, 0,244, 28,197,213,199, 25,120, -240, 44, 1, 15,159, 37,192, 76,102,154,241, 69,171,231,242,214,103, 82, 10, 77,206,255, 58,173,122, 85, 58,180,250,188,233, 30, - 58,173, 10,153,201,225,164, 95,175, 14,242, 49, 99, 70,193,197,197,205,161, 52, 62,189, 76, 62, 97,220,196,174,214,182,214, 98, - 28,187,114, 18, 31,212,236, 5,185, 76,140,212, 76, 13, 64,128,167,207,207, 0,188, 5, 66, 35,162,209, 36, 64,137, 78, 29,255, -143,189,171, 14,143,234,120,187,103,214,119,147,141,187,144, 32, 33, 64,112,119, 66,144, 34, 1,138,123,209, 66,113, 47,193,138, -147,180,184, 22, 43,238,197,138, 59, 65,130, 67, 4, 2, 1, 66, 60, 33,238,235,247,222,249,254,136, 52,132,200, 6,232,247,179, - 61,207,179,207,238,221,123,247,221,185, 51,115,103,206,156,119,230, 29, 15,249,233, 63,223,204, 6,176, 72,159,244, 50,177,143, - 33,114,239, 6, 33,171,131, 46,229, 13,184,140, 40,192,216, 30, 74, 34, 71,106, 66, 20, 94,223, 61,153,183,224,180, 28,176, 44, - 59,201,198,198, 38, 99,193,130, 5,237,171, 87,175,174,157, 56,113, 98, 96,100,100,228, 39,219,218, 84,174, 92,121,221,182,109, -219,240,238,221,187,184,149, 43, 87,222, 78, 78, 78, 94, 88,193, 7,212,135, 16,178, 33,223, 21,151,114,230,204,153,198,254,254, -254,211, 55,108,216, 96, 55,101,202, 20,241,148, 41, 83, 70, 3, 88, 94,150,187,208, 88, 34,233,180,242,206, 29,202,196,198,170, - 15,110,222, 44,222, 26, 16,176, 64,203,113,142,214,182,182,164, 85,243,230,185, 70, 60, 94, 74,106, 98, 34, 99, 83,173, 26, 63, -226,218, 53, 43, 42,147,197, 95,186,116, 41, 43, 39, 39,167,212,173,115,248,124,190,162, 36,119, 97, 73,112,112,112,208,148, 52, -135,171,140,202,157,197, 81,170, 53,175, 90,149,126,215,177,101,245,119,111,194,195,165,230,230,124,247,234, 85,106,190,124, 29, -241,152,178,172,138, 16,146,165,143, 45, 62,159, 63,104,195,134, 13,245, 76, 77, 77,193,113, 28,204,204,204,144,156,156, 12,141, - 70,131,172,172, 44,104,178, 51,161,201,204, 68,112, 84, 4, 90,183,111,143, 1, 93,191,243, 56,112,230,175, 65, 0,142,150,101, -215,177,126,163, 66, 37,107, 89,101,171,191,125, 65, 49, 25,133,164,235,215, 70,238, 16,201,229,232, 60,211,231,107, 26,232,231, - 98,177,248, 98,223,190,125,187,207,158, 61,155,151,144,144,112,153, 16,210,154, 82,250,170, 76, 69, 88, 46,119, 75, 73, 73, 65, -118,118, 54,204,204,204,176, 97,195, 6,216,217,217, 65,161, 80,224,201,147, 39,212,217,217,153,220,186,117, 11,206,206,206, 72, - 73, 73,129, 86,171, 69,110,110,238, 71,141, 70, 83,170,187, 60,223, 61,216,109,102, 55,135, 75,111,158,237,111,235, 68, 62, 60, - 25, 56,203,243,221,155,224,215,209, 87,175,221, 95,206,168,164, 49, 25,177,215,231, 86,109,250,220,122,210,156,165,216,178,122, - 49,222, 60,186,147,102,231,146,181, 85, 70,212,251,154,119, 46, 61,189,185,185,185,170,215,175, 95,155, 4, 6, 6,130, 16, 2, - 51, 51, 51, 24, 25, 25,149, 72,182,190,160,177,228, 21,249, 31,228,230,230, 66, 36, 18,193,202,202, 10,187,119,239, 46,236,120, -171, 84,169, 82,150,153, 29,157, 59,119, 30,228,226,226, 98, 82,244,203,166, 77,155, 98,252,248,241,248,253,247,223, 17, 16, 16, -240,201,126,154, 31, 63,126, 76,208,233,116,251,202, 40,219, 12, 66, 72,215, 62,125,250, 60,187,123,247,174,233,238,221,187,193, - 48, 76,137,175, 93,187,118,225,225,195,135,139, 40,165,175,191,176,195,168,213,175, 95,191, 59,135, 14, 29, 50, 79, 78, 78, 70, - 74, 74, 10,114,114,114,144,155,155, 11,150,101, 81,179,102, 77,194, 48, 76,205,242,242,145,207,231,159,217,188,121,115,207, 31, -127,252, 17, 2,129, 0, 26,141, 6,155, 55,111,198,220,185,115, 19, 1,140,164,148,106, 9, 33, 11,246,237,219, 55,162, 87,175, - 94,104,208,160,129, 71, 89, 54,115,114,114,144,147,147, 3,161, 80, 8,123,123,123,172, 88,177, 2, 26, 77, 94,179, 82,163, 70, -141, 66,151, 39,128, 29, 53,106,212,232, 25, 22, 22,182,134, 82,250, 91, 41,237, 76, 31, 74,233, 56,150,101,179,251,246,237,107, -117,228,200, 17,147,184,184, 56, 60,123,246, 12,139, 22, 45, 74,231, 56,142,229, 56,142, 40,149,202, 15,118,118,118,207, 36, 18, -137, 76,161, 80,164,165,166,166,174,162,148, 94,254, 23,118,230, 68, 40, 20, 98,204,152, 49, 16, 8, 4,144,201,100, 80,169, 84, -208,233,116,133,100, 30, 21,116, 75,187,187,155, 88, 9, 32,250,177, 70,141,118,211, 7, 76,235, 97,227,224,232, 4,115, 83, 9, - 66, 67, 95,181,190,121,227,218,230,218, 53,109,182,115, 26,221,246,215, 17, 25,255,248,102,247,197,185,200,127, 24,215,106, 4, -224, 57,138,236,121,136,252, 85,136,165,180, 68,253, 89,107,235, 63, 83,226,226,196, 90,177,216, 40,172, 64,229,202, 35, 89,253, - 89,224, 8, 24,173, 46,191,161,160,249, 47, 61,137,150,142,197,187, 55, 33,184,123,245, 47, 88, 43,226,144,242,161, 33, 32,170, - 7,141, 50, 19, 42,141, 54,127,244,198, 34,240,217, 13,100,101,166,161,110,147, 30, 0,143,247,176, 52,123,102, 86,164, 71,171, -198,245,249,239,162, 67,208,180, 70,127, 84,115,110,139,168,132, 44,100,228,168,145,158,165, 66,195,186, 62, 72, 78, 87, 34, 75, -161,194,171,119, 7,224,228, 88,141, 71, 4,225, 29,245, 37, 90,234, 87,167,160,126,125, 22, 34,215,214, 16,215,236, 5,190,107, - 27, 68, 7,221, 66,224,165,245,136,125,121, 15,148, 99,225, 80,163,153,190, 15,201,230,203,151, 47, 55,107,221,186,181,160, 83, -167, 78, 13, 28, 29, 29, 27,196,199,199, 7,230,171, 57, 13,186,119,239,222,192,198,198, 6, 27, 55,110, 84, 18, 66, 54,127, 97, -103, 91,212,221,246,216,206,206,110,229,169, 83,167, 54,143, 31, 63, 30,182,182,182,245,202,250,109,178, 80,216, 96,228,170, 85, - 84,200,231,211,163, 91,182,136,150, 94,190,188,118,239,190,125,162, 14, 94, 94,132, 82,138, 23, 47, 94, 24,253,186,101,139,209, -208,239,191,143,140, 74, 74, 98,252, 3, 2,180, 9,177,177,217, 73,185,185, 75,227,227,227, 63,254, 43,106,182, 78,167,123,240, - 33,226,131, 83,147,230, 13,109,158,135,126,120,217,165, 67,171, 86, 60, 30,143,247, 38, 60, 42,192,198,198,212,232,218,213,107, - 90,157, 78,247, 64, 31, 91, 18,137,164, 71,135, 14, 29, 4,233,233,233,112,116,116, 68,114,114, 50,226,226,226,242, 20,135,204, -116,104, 51, 51,161,203,202, 0,155,155,131, 15, 79, 30,163, 97,181,170,146, 19,121,147,229,143,150, 83, 38, 37, 42, 85, 69,149, - 45,177,137, 9,196,114, 57, 72, 5,221,134,132,144,239,205,205,205,231,102,100,100, 92,164,148,174,208,106,181,147,231,206,157, -219,116,211,166, 77,214, 43, 87,174, 52, 29, 55,110,220, 9, 66, 72, 67, 74,169,186,140, 14,236, 61,195, 48,214, 0,108,111,220, -184, 1, 91, 91, 91,100,102,102, 22, 40, 45, 26,133, 66, 33, 77, 77, 77,133, 90,173,134, 70,163,129,169,169, 41,158, 62,125,154, -206, 48,204, 95,229,165,207,212,141,172, 80,107, 67, 23, 90,121, 24,199,107, 25, 11,207,164, 52, 46,125,241,154,248,101, 0,214, -118,115,115,219,165,229,238,124,120, 27,114,206, 34,226,201,237,180,248,183,185,213,118, 93, 8,207, 46, 35, 31, 41, 33,132, 35, -132,208, 26, 53,106, 32, 57, 57, 25,124, 62, 31, 70, 70, 70,144,203,229,152, 55,111, 30, 54,111,222, 92, 97,162, 69, 8,145, 26, - 27, 27,175,226,241,120,131,204,204,204,108, 88,150,133,143,143, 15,122,246,236, 9,177, 88, 12,173, 86, 91,168,104, 22,168, 84, -101, 41, 29,148,210, 23, 0, 76,139,253,135,151,181,181,245, 77,181, 90,141,240,240,112,156, 57,115,166, 61,165,212,191,130,207, -118, 56, 33,164,107,155, 54,109,246, 55,110,220,216,141, 82,138,122,245,234, 97,240,224,193, 56,112,224, 0, 2, 3, 3,145,153, -153,201, 93,187,118,109, 47,128, 53, 21,237,192,243,243,183,102,191,126,253,238, 29, 62,124,216, 34, 53, 53, 21, 74,165, 18,185, -185,185, 56,113,226, 4, 90,183,110, 13,107,107,107, 28, 58,116,136,161,148,158, 43,139,100,241,120,188,221,219,183,111,239, 57, -118,236, 88,108,221,186, 21, 71,143, 30, 69,175, 94,189, 48,104,208, 32, 36, 39, 39,219,173, 94,189,122, 4, 33,100, 55,128,197, -131, 7, 15, 70, 78, 78, 14,158, 60,121, 18,170,231, 51,143,140,140, 12,100,100,100, 64, 38,147, 21,125,198, 8,128, 3,235,215, -175, 31, 50,125,250,116, 84,171, 86,109,113,254,162,160,207, 86,137,114, 28,247, 83, 92, 92,156,133, 64, 32,176, 98, 24, 6, 49, - 49, 49,120,250,244, 41, 38, 77,154,148,150,150,150, 54,158, 82, 26, 69, 8, 89, 48,102,204,152, 21, 51,103,206, 44,172, 75, 51, -103,206, 60, 79, 8,233,250,255,173,230,212,172,105, 81, 71,204,151, 76, 19,137,132, 86,233,233,233,133,109,135, 70,163,129, 90, -173,254, 68,201, 18,137,132, 86,205, 26,185, 94, 80, 42,178,231,191, 12, 75, 47,117,131,244,218,213,205,235, 27, 25,155, 77,247, -238, 58, 96,216,119, 93,123,243, 25,157, 14, 87,174,156,195, 31,127,108,131, 87,155, 26,168, 86,189, 30,166, 76,157,102,166,214, - 48, 62,215,174, 93,158,219,170, 89,213,203,217, 89, 25,243,202,178,249, 63,142, 11,249,228,234, 66,137,174,195,146, 25,100,127, -214,201, 9,233,249, 15,142,181,133,133,197, 22,150,101,189,128, 31, 33,148,219,227,213,211, 71, 72, 75, 23, 66,173,100,193,209, - 60,178,165, 23,113, 81,107,112,231,202, 89,108, 88,191, 22,169,169,169,104,211,174, 61,114, 4,149,224, 82,201, 5, 42,165, 34, -255,161, 1,180, 26, 29,108,236, 92,241,252,121,160, 46, 43, 55,183,212, 6, 73, 36,213,122,184,216,213,128, 90,219, 18, 82,177, - 24,153,217, 26,164,231,147,172, 67,127, 14,132, 90,161, 4,163,209,130,209,232, 96,227,210, 15,181,236, 58,128, 99,207,213,169, - 80,246,113, 44,180, 17,119,160,141,184, 3, 89,203,169,248,203,119, 72,177, 6, 80,191,125,119,147,146,146,146, 28, 29, 29,207, -189,120,241,162,207,192,129, 3,113,235,214,173,113, 0, 38,228,187,111,198, 13, 28, 56, 16, 47, 94,188,192,203,151, 47,207, 37, - 37, 37,125,147,141, 87,197, 98,177, 82,173,206,235, 99,141,140,140,164,229, 92,235,212,180,111, 95, 94,230,243,231, 89,235,239, -223, 95,188,107,247,110, 81,167,142, 29,137,142, 97,192,177, 44,170,187,187,147,239,190,251,206,248,192,241,227, 86,124,157,238, -225,156,201,147,111,252, 62,124,120,246,163,156, 28,125, 39,154, 87,206,119, 25, 2, 64,229, 50,190,211, 27,106,181,122,211, 79, - 63,142,234,228,127,231, 94, 37,151, 74, 78,166, 87,174,249, 7, 74,100, 98, 94,181, 42,110,252,244,204, 52,193,178,197,243,101, -106,181, 90, 95,210,234, 97,109,109,141,143, 31, 63,226,221,187,119, 80,171,213,208,233,116,224, 20,185,208,164,103, 64,147,153, - 6,162, 82, 66,194,178, 80,165, 36,162,114,181,170,192,223, 43, 18,203,117, 69,149, 68,180, 10,222,165,166,166, 16, 25,203,193, - 19, 10,245,222, 28,157, 16,210,184, 89,179,102,199, 79,158, 60, 41, 26, 61,122,116,115, 66,200,150,252, 14,162,227,162, 69,139, - 30,111,217,178, 69, 50,126,252,248,154,107,214,172, 25, 1, 96, 71,105,118, 84, 42,213,241, 11, 23, 46, 12,117,117,117,181, 13, - 14, 14,134, 74,165, 2,199,113,232,214,173, 27, 0, 20,214,153, 55,111,222, 40, 85, 42, 85, 82, 72, 72, 72, 86, 84, 84,148, 6, -122,172, 18, 92,188, 49,254,193,204, 1,206,125,237,236,157, 30, 74,101,149,171,208,156,231,125,102, 14,112, 94,189,238, 68,172, -234,210,251,247,217,139, 38, 85,243,203,205, 14,154,100,238,156,179,245,210,185,112,125, 86, 5,211,130,229,236, 86, 86, 86, 16, - 8, 4, 16, 10,133, 16,137, 68, 32,132, 96,234,212,169,216,185,115,103,153,174,195,226, 36,203,196,196,228,229,210,165, 75,157, -199,143, 31, 47,146, 74,165, 72, 79, 79,199,161, 67,135, 48,102,204, 24,252,241,199, 31, 37,206,127, 41,207,165, 84,130, 90, 58, -125,248,240,225,208,104, 52, 24, 60,120, 48,118,237,218, 53, 29,128,127, 69,235, 59,165,244, 33, 33,196, 61, 48, 48,208, 20, 64, -175, 65,131, 6,237,235,215,175, 31,252,253,253,113,238,220,185,246, 0,194, 0, 40, 1,248,230,111,226,236, 91,214, 66,144,252, - 16, 14,219,108,108,108,122,213,169, 83, 39,176, 95,191,126,117, 15, 31, 62,108,158,148,148, 84,176,248, 1, 17, 17, 17,216,179, -103, 79,194,238,221,187,179, 88,150,181,226,241,120, 23, 50, 50, 50,230,149,225, 46,220,189,126,253,250, 81,249,238, 64,156, 60, -121,146,174, 93,187,150, 44, 90,180, 8,233,233,233,240,242,242,194,246,237,219,167,229,228,228, 52, 88,187,118,237,143, 3, 6, - 12,192,178,101,203,144,155,155,187,190,188,193, 74, 25,228,139, 0,104,181,126,253,122,215,233,211,167,227,228,201,147,104,220, -184,177,236,195,135, 15,191, 3, 24, 91, 82,249, 81, 74,241,225,195, 7, 40, 20, 10,220,187,119, 15,139, 23, 47, 78, 47, 66,178, -166, 77,152, 48, 97,197,180,105,211,176,106,213, 42, 26, 28, 28,156,212,175, 95, 63,187,157, 59,119,242,171, 87,175, 62, 13,121, -155,174,255,191,160,150,187,149, 95,179,166,158,115, 29,156,170,227,208,225, 35, 72, 75, 75, 43,204,147,130,124,161,148, 34, 59, - 59, 27, 31, 63,126,132,153,169, 9, 86,175, 89,209,125,226,184, 81,149,144, 23, 6,227,243,134,206,205,114, 77,255,193, 99,103, - 13, 30, 58, 10,193,129,207,112, 96,223, 14,132, 4,191, 40,180,199,232,180, 8, 11,125,138,176,208,167,176,179,119,197,119,157, -218,147, 33, 67,134,116, 27, 62,116,144, 13,128,127, 44,116,196,127,176,154,245, 89, 28,173,162,115,182, 4,229,201,117,249, 36, -235,229,177, 99,199,172,218,180,105,195,103, 24, 6,151,175, 92,193,164, 9, 63, 96,196,112, 31,104, 97, 1, 70, 35, 2, 39,146, -234,149, 24,165, 82, 1, 10,138,220,220, 92, 4, 4, 4,128,114, 12, 14,236, 92, 11, 74,185, 66,162, 5, 80,104,180, 90, 56,185, -212,196,182, 93, 43, 25, 8,133,143, 75,179,151,149,202,103,117, 12, 69, 92, 82, 52,162, 19, 66, 96,102,226, 2,129,208, 5,169, - 25, 10, 8,120,246,208,169,222,128,205,151, 85, 21,185,177, 80,106,191,174,252,216,204,207,213, 83, 90,129, 70, 87,169, 84, 30, - 60,120,240, 96,247,117,235,214,137,189,189,189,107, 56, 58, 58,182, 2,128,254,253,251,215, 48, 53, 53,197,193,131, 7, 53, 74, -165,242,224, 55, 84,124, 58, 52,107,214, 12,233,233,233,136,136,136, 8, 44,243,222, 52, 26, 43,185,173, 45, 63,233,214, 45, 93, -114,122,122,165, 14, 29, 58, 16, 29,195,128, 71, 8,210, 50, 51, 17, 21, 25, 9,115,115,115,242,242,205, 27,249,230, 41, 83, 78, -215,168, 91, 87, 80,176, 34, 81, 31,156, 59,119,206, 8,121,243,178,202,252,174,130,149, 59,151, 16, 50,106,242,228,201,167, 15, - 30, 60,100,150,152,148, 24, 38, 17,139, 25,185, 92,234, 56,124,216, 68, 65, 70, 70,198, 80, 74,105,142,190,246,210,211,211,241, -225,195, 7,200,100, 50,136,132, 66,112, 74, 5,216,220, 28,168,210,146,193,215,106, 32,102, 89, 88, 26, 73, 80,201,206, 14, 46, - 54,214,122,217,124,119,243,106,225,196,247,162,238,194,213,205, 60, 32, 54,150, 67,108, 34,199,196,243,183,243, 71,163, 34, 96, -209,114,125, 72,150,181,147,147,211, 95,135, 15, 31, 22, 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52, -244,122, 72, 72, 72,143,252, 85,119,229,173, 22, 91,123,234,212,169,206,109,218,180, 97,170, 84,169, 98,156,152,152,232,146,154, -154, 74, 18, 18, 62,157,235,124,241,226, 69,169, 82,169,204,229, 56,238, 52,242,226, 64,149, 27,191,104,230, 0,103,105,192,115, - 76,245,236, 82,185,158,169,117,125,164, 49,207,235, 61, 12, 76,152, 58,115,128,243,166,117, 39, 98, 85, 50,162,222, 71,216,152, - 74, 2,169,106,191,158,229, 77,173,173,173, 17, 26, 26,138,128,128, 0, 68, 69, 69,225,195,135, 15,159, 16,170,113,227,198,225, -192,129, 3,122, 41, 90,198,198,198,171,150, 44, 89,226, 60,125,250,116, 81, 17, 82,132,201,147, 39, 35, 51, 51, 19,187,118,237, -194,228,201,147, 43,220,241, 23, 43,171,170,157, 59,119,246,118,112,112, 64,106,106, 42,236,237,237,209,166, 77,155,158,132,144, - 42,148,210,136, 47,172,250, 19,187,116,233,178, 98,233,210,165,208,233,116, 24, 51,102, 12,222,190,125,123,252,237,219,183, 27, - 92, 92, 92,166,254,252,243,207,118,118,118,118, 24, 56,112,160, 49,128,190,165, 25,177,180,180,244,221,177, 99,199, 80,111,111, -111,158, 86,171,109,119,243,230, 77, 68, 70, 70, 66,163,209,128, 97, 24,188,127,255, 30,147, 39, 79, 78, 72, 77, 77,245,164,148, -190,215, 35, 93,163, 23, 44, 88, 48,106,234,212,169,248,245,215, 95,177,100,201,146,189,102,102,102,117, 27, 54,108,216,104,201, -146, 37,152, 51,103, 14, 92, 93, 93, 97,101,101, 85,107,209,162, 69, 30, 51,103,206,196,166, 77,155,176,120,241,226,189, 0,246, -124, 73, 70,112, 28, 71,252,252,252, 26,172, 95,191,222,161,128,100,241,120, 60, 28, 59,118, 12,207,159, 63,239, 89,202,111,182, -219,219,219,143,115,112,112, 16, 95,187,118, 77,238,234,234, 10,134, 97,116,249, 36,107,179,139,139,203,164,247,239,223,195,219, -219, 27,225,225,225, 7, 41,165, 35, 60, 61, 61,115,103,206,156,105, 36,147,201,204,254, 63, 59,112, 62,143,140, 92,181,108, 14, -158, 60,127,131, 83,167, 68,120,242,228, 9,236,236,236, 32,145, 72, 64, 41,133, 90,173, 70,114,114, 50,116, 90, 53,234,213,169, -138,253,187,253,144,148,148, 12,240, 72,169, 83,110, 8,143, 12, 27,245, 67, 31,220,189,119, 5,191,255,190, 3, 57, 57,185,165, - 12,190,165,168, 94,195, 3, 78,142,182,136,137,141, 1,225,193,250,159,188,215,255,112,215, 97,193,243,174, 95,120,135,162, 48, - 55, 55,223,112,244,232, 81, 43, 47, 47, 47,126,110,110, 46, 56,142, 67,219, 54,109, 48,117,250,116,156, 59,124, 24,238,205, 7, -131,104,228, 96,140,244, 91,245,160, 82, 42, 80,187, 81, 43, 12, 24, 56, 8,209, 81, 81,232,210,163, 31, 84, 42, 69,225, 8,163, - 64,209,210,104,180,176,182,173,132,171, 87,175,242, 49,102, 76,169,115, 76, 88,173, 56, 40,236,189,170,117,134,242, 57, 2,158, - 28,128, 86,173, 69,189,122,139,160,229,172, 96,235, 60, 14, 58,221, 25,100, 37,223,204,115, 99, 88,121, 33, 54, 58, 26, 60,190, -232,229,151,102, 34,151,155,252, 85,141,110, 70, 70, 70,166,163,163,227,159, 1, 1, 1,195,250,246,237,139,171, 87,175,254, 8, - 0,125,251,246, 69, 64, 64, 0, 62,124,248,240,103, 70, 70, 70,230,183, 40,112, 71, 71,199, 94, 94, 94, 94,131,155, 54,109,138, -243,231,207,131, 82,122, 87,175, 7, 91, 40,164, 60, 30, 15, 28,199,129, 0, 72,205,200,192,219,183,111,145,154,146, 2,157, 78, -135,220,156, 28,206,163, 70,141, 28,202,113, 38, 21, 73, 79,209, 21,134, 40, 97,213, 97,193,119, 95, 64,182,162,228,114,121,116, -118, 78,142,141,133,185, 69,182, 88, 44,102,211, 51, 50, 50, 95,189, 12,214,232,217, 57, 20, 32, 52, 36, 36,164,110,124,124, 60, -162,163,163,193,228,102,131,175,214,128,167, 86,160, 99,171,150,144,129, 66, 10, 14, 66, 78, 7, 33, 95,136,236,188,213,121,229, -186, 59, 10,136,126, 81,101,139, 16,146,231, 46, 52, 54,134, 88,110,242,137,194,165, 79,125,146, 72, 36,135, 79,156, 56,225,224, -228,228,132,101,203,150,193,217,217,185, 86,189,122,245, 20,109,219,182,149,217,217,217,161,118,237,218,104,213,170, 21, 46, 93, -186, 4, 0,239,203,201, 63,134, 16,242,221,221,187,119,103,221,191,127,127, 0, 33,132,248,248,248,160,107,215,174,144, 74,165, - 80, 40, 20, 72, 79, 79,199,206,157, 59, 9,165,180, 81,126, 90, 93,165, 82,233, 17, 66, 72,172, 82,169, 28, 88,220,230,129,245, -245, 29,147,210,184, 49,118,246, 78,125, 60,187, 84,174,215,161, 75, 39, 84,117,239,128, 14, 93,162, 1,192,207, 82, 16, 57,120, -245,194,186,167,173, 43, 89,238,185,122,249,218,226, 54,158, 29, 22,248,140,183, 88,225,183, 35, 61, 75,143,134, 12, 28,199,125, - 18, 59,168,248,249, 17, 35, 70,224,216,177, 99,229,230, 35,143,199, 27, 52,126,252,120, 81,209,239, 10, 92,198, 61,122,244, 64, -223,190,125, 63, 33, 90,214,214,214,176,183,183, 71,100,100, 36, 0,164,234, 89,175,166,142, 30, 61,154, 40,149, 74,140, 29, 59, - 22,187,118,237,194,224,193,131,137,191,191,255, 84, 0,211, 43, 90,223,121, 60,222,234,159,127,254,121,214,228,201,147,145,150, -150,134,139, 23, 47,162, 91,183,110, 56,118,236,152,205,197,139, 23, 87,121,121,121,129,207,231,227,252,249,243, 96, 24,166,204, - 88, 95, 34,145,168,151,183,183, 55, 47, 38, 38, 6, 34,145, 8, 77,154, 52, 65,108,108, 44, 20, 10, 5,226,226,226, 48,109,218, -180,143,169,169,169,237,245,125,142, 68, 34,209,244,169, 83,167,226,232,209,163,240,241,241,217, 7, 96,108,102,102,230,128,251, -247,239, 31,253,254,251,239, 17, 23, 23,135,211,167, 79, 99,241,226,197,100,196,136, 17,216,186,117, 43,166, 77,155,182, 23,192, -216, 50, 86, 72,102, 39, 37, 37,153,185,185,185, 33, 49, 49, 17, 57, 57, 57, 56,125,250,180,237,165, 75,151,170, 56, 57, 57,153, -126,248,240,129, 93,190,124,185,120,250,244,233,216,176, 97, 3, 94,188,120,129, 3, 7, 14,160, 67,135, 14, 76,120,120,120,137, - 42, 89,126,200,134,211,150,150,150,215,140,141,141,145,157,157, 93,176,178,116,182,143,143,207,100, 95,223, 60,145, 61, 62, 62, - 30, 35, 71,142, 28, 78, 8,225,150, 46, 93,106, 36, 18,137,160, 82,169,114,255, 63, 59,110,142,229, 0,112,168, 82, 73,142, 43, -231,118,227, 89, 96, 56,158, 5,134, 64, 44,201,155, 4,175, 84, 42,208,168, 94,117, 52,111,210, 12,241, 9,113, 56,120, 96, 55, - 44,173,157,202,108, 71, 40,165, 16, 9, 88,120,212,176,199,225, 3, 59,112,254,226, 13, 28, 56,120,164,112,206,155, 64, 32, 68, -195, 70,205,209,164, 73, 27,132,127,120,143,221,187,127,135,141,109, 37,131,115,240, 11, 81,232, 58, 44,250, 94,140,249,119,104, -211,166, 13, 63, 39, 39, 7, 42,149, 10, 31, 63,126, 68,100,100, 36,204, 45,204, 17, 30, 31,129,246, 70, 90,124,228,178, 16, 26, -248,146, 37,124,225,139,114,165, 65,207,134,128,103, 67, 76, 26, 61,184,244, 74, 0, 10, 99, 83,235, 60,215, 13,195,188,195,166, - 77,165,142,156, 25, 86,119,253,202,181,155,205, 70,143,232, 37,188,122,115, 23,116, 26, 14, 74,157, 25,114, 85, 26,228,106,133, -224,153,117, 3, 82,252,193, 23, 72,208,162, 65,117,156, 62,117, 73, 75, 25,221, 13,189, 51,200,174, 46,152,196,144, 34, 68,235, - 83,143,158,212,196, 82,111,215, 97, 97,199,203,178,199, 14, 29, 58,212,187,101,203,150, 70, 94, 94, 94,110,249, 29,167,246,208, -161, 67, 10,150,101,143, 85,180, 16,139, 71,131,119,112,112,104, 36, 18,137, 6,247,234,213,171,209,168, 81,163,240,234,213, 43, - 28, 60,120, 48,172,122,245,234,101,198, 16,227,139,197,169, 57, 73, 73,230,242, 42, 85, 4, 22, 38, 38,241,151, 46, 94,116,237, -212,185, 51,137,142,142, 70,106,106, 42, 84, 42, 21, 94, 4, 6, 82, 33,159, 31, 75, 76, 77,121,111,158, 63,231,241,197,226,212, - 10, 36, 53,178,156, 85,135,190, 95,170,110, 85,114,176,112, 91,236,243, 83, 85,149, 90, 85, 55, 43, 43,139, 17, 8,133, 66,103, -123,243,168, 10,186, 33,207, 95,191,126,189,119,167, 78,157, 36, 97, 65, 47,192,100,102, 66,147,153, 14, 17,199,194,178, 81, 3, -240,181,106, 64,163,131,147, 7,133, 42,195, 8,254,143,222,232,212,106,117,185, 65, 13, 11,136, 22,175, 24, 49, 16,203,229,144, -152,152, 66, 34,151, 23, 39, 12,164,156,242, 54,234,213,171, 87,199, 22, 45, 90,128, 82,138,157, 59,119, 66,171,213,138,181, 90, - 45, 52, 26, 13,180, 90, 45,178,178,178,112,224,192, 1,108,219,182,237, 62,128,189,122,144, 85, 70, 40, 20, 78,102, 24,198, 86, - 34,145,104,109,108,108, 68,199,143, 31, 47, 12, 55,209,176, 97, 67, 24, 27, 27,171, 9, 33, 90, 0,176,183,183,215,237,219,183, - 79,240,253,247,223,139, 74,178, 87,179, 94,173, 57, 85, 25, 11, 79,169,172,114, 21, 83,235,250,168,234,222, 1, 0,208,185,199, -104, 84,173,238,130,172,148,160, 42, 42,101,100, 31,145, 32,221,226,229,166,184, 87, 50,239,186,163,114,147,110,191, 69,201,203, -251, 75,236, 40,120, 60, 94,169,238, 88,125, 72, 22, 33,132,103,102,102,102, 83, 48,207, 39,191, 3, 70, 66, 66, 2, 66, 67, 67, - 81,179,102, 77,164,165,165,193,201,201, 9, 26,141, 6, 77,155, 54,133, 82,169,196,250,245,235,113,239,222,189,251,200, 95, 25, - 89,206,127,200,220,221,221, 71, 54,106,212, 8, 23, 47, 94,196,147, 39, 79,226,174, 92,185,226,212,166, 77, 27, 84,169, 82,101, - 20, 33,100, 62,165,165,199,224, 43,201,213,215,174, 93,187, 41,147, 39, 79, 70, 72, 72, 8,126,250,233,167,212,152,152,152,211, -199,143, 31, 31,187,120,241, 98, 94,151, 46, 93,144,144,144,128,213,171, 87,179,247,238,221, 91, 3, 96, 89, 57,249,248, 58, 38, - 38,198, 89,165, 82, 33, 45, 45, 13, 12,195, 64,161, 80,224,210,165, 75, 56,112,224, 64, 98, 62,201,122,167,111,250, 26, 52,104, - 80,155,199,227,225,232,209,163, 0,176,144, 82,202, 17, 66, 78,247,233,211, 39,110,249,242,229, 78,243,230,205,195,143, 63,254, - 8,173, 86,139, 95,127,253, 21,243,230,205,187,144, 79,178,202,106, 68,215,217,219,219,143,251,233,167,159,106,205,156, 57, 19, - 1, 1, 1,182, 79,159, 62,109,242,226,197, 11, 84,170, 84, 9,169,169,169, 2, 43, 43, 43,108,216,176, 1, 51,102,204, 56, 9, - 32,229,193,131, 7,131, 62,124,248,224, 75, 41, 93, 93, 78,126,110,119,114,114, 26, 71, 41,165, 10,133, 34,210,199,199,103,245, -202,149, 43, 49, 99,198, 12,188,124,249, 18,153,153,153, 48, 49, 49, 33, 63,255,252,243,200,133, 11, 23, 98,204,152, 49, 52, 55, - 55,119,219,255,191, 91,138,133, 34, 61, 4,172,218, 2, 13,235,213, 68,195,186,149,113,229,230, 51, 0, 64,199,126,109,160,200, -205,198,190,125, 59,241,238,221, 91, 8,132, 66,152, 91,218,235,163, 4, 66,147,245, 26, 25,218, 4,116,242,106,130,110, 93,218, - 99,239,254, 99, 96,116, 90,140, 29, 61, 20,233, 25, 25,216,191,127, 55,194, 63,188,135, 64, 40,132,149,245, 63, 31, 8,181, 44, - 46,242, 31, 79,180,244,112, 63,129,227, 56,196,197,197,225,233,211,167,136,136,136,128,145,145, 17,148, 12,203,253,126,253, 30, - 71,136, 40,150,163,244, 62,101, 10,163, 20,127,110,131,101,227,138, 68,172, 53,179,176,176, 16,171,213, 74, 48,140,174, 72,175, - 66, 0, 2,136, 4,128,131, 99, 85,196, 68,199, 80,149, 74,117,187,204, 17,148, 90,181,225,236,233, 19,147, 91,181,110, 99,221, -173,227, 82,156, 62,179, 8,233, 89, 89, 80,105,133,200, 85,105,161, 80, 1,230,150, 53,208,180, 94,125,196,199,167, 34,232,137, -127,142, 64,173,208,103,162,232,219,205, 11, 70,187,143,158, 52, 7, 50,215,214, 80,135,158, 6,151,147, 88,168,104, 73,229, 22, -176,116,241, 64, 70,174, 26, 39,110, 60, 3, 0,189,183,122, 73, 76, 76, 84, 56, 58, 58, 30,154, 60,121,242,175,207,158, 61,117, - 6,128,103,207,158,197, 38, 36, 36,204, 77, 76, 76, 84, 84,164, 0,139, 68,131, 39, 70, 70, 70,207,170, 87,175, 30,239,237,237, -109,214,167, 79, 31, 88, 91, 91,227,197,139, 23,240,245,245,125,173,213,106,231,220,190,125,187, 76, 87,143, 70,163,137,123,118, -230,140,105,251, 31,126, 48,159,211,179,231,234,201,147, 39,111, 88,182,108,153,208,221,221,157,232,180, 90, 4, 7, 7,211,195, -135, 14,233,182,205,155,183, 94,108,108, 44,120,124,246,172,144, 81,171,227,254,213,149,216,217,217,217,179,123, 87, 79,143, 53, -235, 54, 65,165,204,193,163,128, 11, 72, 79, 79,198,142,157,167, 60,156,157,157, 61, 99, 99, 99,253,245, 37,192,123,246,236,153, -213,188, 81,163, 70,213, 42, 85, 66,112, 84, 4,196, 28, 11, 17,195,128,175, 85,131,199,168, 80,169, 46, 5,225,153, 32,225, 99, - 22, 86, 30,253, 51, 68, 31, 98, 92,171,123, 47, 44,139,205, 4, 33, 4,107, 91,214,133,216, 68, 14,145,177, 28, 19,255,186, 89, - 72, 12,206, 47,155, 7,177, 92, 14,183,230,109,244,104,116,169,194,196,196,228,105,112,112,112,211,186,117,235, 98,214,172, 89, -136,140,140, 4,199,113, 72, 76, 76, 84, 37, 36, 36,196, 37, 39, 39, 71, 34, 47,254,207, 46,170,231, 72,128, 97, 24,219,103,207, -158, 1,128, 8, 0,110,220,184, 1, 71, 71, 71,152,153,153, 33, 43, 43, 11,115,230,204,145,252,242,203, 47, 0,128,167, 79,159, - 10,139, 18,148,226, 8,126, 22,186, 38, 35,155,166,211,156,231,125,210,152,231,245, 58,116,137, 65,231, 30,163,112,237,252, 94, -220,188,114, 29,150,130,200, 8, 24,103, 95, 74,137, 72,201,138,205,117,223,238,209,120, 44, 63, 33,247,202,246,169,223, 91,240, - 29, 28,184, 19, 62,219, 50, 51,202, 74,171,187,187, 59,236,236,236, 10,231,104, 9, 4, 2,140, 25, 51, 6,148, 82,189, 72, 86, -126, 62,114,166,166,166,201, 42,149,202, 78, 42,149,226,227,199,143,120,255,254, 61,194,195,195, 11, 67, 7,112, 28,167,155, 61, -123,182,112,202,148, 41,248,253,247,223,113,251,246,237,251, 0,150, 82, 74,245, 29,172, 13, 29, 56,112,160,137, 70,163,193,145, - 35, 71, 24, 0, 61, 78,156, 56,241,180,105,211,166,130,174, 93,187,154,108,221,186,117, 40,128, 93, 21,168,238,198,166,166,166, - 34,173, 86,139,173, 91,183, 34, 38, 38,198,147, 82, 26, 74, 8,217, 62,112,224,192,109,117,235,214,173, 30, 18, 18,242, 54, 39, - 39,103, 34,165, 52, 72,143,182,104,116,147, 38, 77, 78,112, 28,231,218,169, 83, 39,227,117,235,214,153,190,121,243, 6,206,206, -206,224, 56, 46,184,162, 91, 88,189,125,251, 54, 52, 33, 33,193,163,125,251,246,184,116,233,146, 31, 33,100, 21,128, 95, 39, 76, -152,224, 20, 21, 21,133, 70,141, 26,193,210,210, 18,111,222,188,201, 78, 72, 72,216, 6, 96,126,121,177,190, 40,165, 31, 0,204, - 37,132,212,223,190,125,251, 96, 75, 75,203, 22, 47, 94,188,192,221,187,119,177,102,205, 26,252,242,203, 47,104,219,182, 45,102, -205,154,149, 2, 96,112,190, 75, 91,175,184,121, 5,202, 22, 0, 52,105,210, 36,222,215,215, 23, 99,199,142,165,127,252,241,199, -198, 67,135, 14, 77, 31, 58,116,104, 97, 31, 56,114,228, 72,122,240,224,193,145,101, 45, 4,248,135,160,211,106, 53, 48,181,172, -138,156,140,104, 36,199, 4,192,200,196, 30, 93, 58, 52,128, 66,169,193,185,179, 39, 17, 20, 28, 8, 30,143, 7, 59,251, 74, 48, -183,176, 70, 88,216, 91, 0,120, 85,182, 77, 45, 76, 44, 42, 35, 39, 51, 6,154,164,103,144,201,109, 49,234,135, 62, 80, 40,181, - 56,117,250, 36, 66, 66,130,192,231,243, 97,239, 80, 9,102,230,121, 54, 9, 45,211,166, 1, 40, 57,158, 86,185, 68,139,207,231, -223,186,124,249,114,255,230,205,155, 11,222,189,123,135,119,239,242, 6, 55,233,233,233, 12, 1,251,103, 98,208,153, 33,101,144, -128, 78, 5,171, 51,138,238, 93, 40, 55, 49,137,123,243, 58,212, 46, 61, 45, 17,129,207,239,225, 93, 88, 48, 34,194, 67,161,213, -170,192,231,241,192,227,243, 80,185,106, 29,220,187, 31,160, 81, 49, 76, 64,105, 54, 1, 32, 45,237,125,182,220,174,198,160, 21, -203,230,159,159, 49,103,137,108, 64,255,223, 17,244,230, 21,114, 24,123, 80, 10,216, 91, 25,163, 97,181,159, 17, 23,159,140,163, -123,183, 42, 56,173,118, 88,209, 24, 90, 37,217, 4, 0,187, 20,212,222,182,115,239,152, 93, 7, 14, 47,153, 51,101,188,221,247, -125,135, 65,156,246, 10,186,248,103,168,218,180, 27,136,196, 28, 23,175,222,132,255,211, 87,137, 28, 75,151,216,165,226,143,242, -108, 22,115, 33, 62,248,248, 49,193,185, 72, 20,120,103,137, 68,250,160, 28, 82,213,169, 88, 92,161, 79, 34,206,243,249,188,198, - 43, 86,172,208,217,217,217,105, 67, 66, 66,240,251,239,191,115,207,158, 61,187,202,227,241, 54,199,199,199,171,202,179,105,163, -211, 5, 30,246,241,169,221,172,111, 95, 58,100,202, 20, 5, 36,146,169,171,215,174,245, 73, 78, 79,119,164, 28, 7, 27, 75,203, -216,213,243,230,249,246, 31, 56, 48,253,229,189,123,178,128, 51,103,100, 98,134,121, 86, 94, 58,191,145,223,187, 84,155,177,177, -177,254,238,110, 46,216,183,107, 29,180, 90, 53, 18,226,242,132,172,148,212, 76,148, 69,178,138,219,204, 95,117,213,119,225, 47, -191, 60, 92, 56, 99,186,125,187,142,157, 16, 29,248, 2,218,180,100, 16, 29, 3, 33, 17, 32, 55,201, 8, 73,137, 57,152,123,240, -120, 82,142, 66,209,183,120, 39, 81, 90, 58, 11, 20, 43,137,169, 9, 68,198,114,136,229, 38,159,168, 88, 82, 83, 83,136,141,229, - 16,136,197, 37,169, 52,159,217,204,201,201,233,215,191,127,255,160,199,143, 31, 91,140, 29, 59, 22,173, 90,181,122,174, 84, 42, -189, 40,165,217, 95,154,159, 2,129, 32,169,113,227,198,182, 66,161,144, 25, 51,102,140, 32, 37, 37,165, 48,178,122, 78, 78, 14, - 46, 93,186,132,154, 53,243, 86,245,191,124,249, 18,117,234,212, 41,213,230,216,159,131,227, 0, 44,155, 57,192,121,245,195,192, -132,169, 0,252,170, 86,175,132,155, 87,174,227,238,205, 0,159, 22,117,185, 77,221,135, 53, 93,110,228, 53,112,142, 71,227,177, -124,185,169, 3,246,159, 58,201, 15,125,182,123,165, 66, 17,236, 6, 96,118,105,233, 36,132,128, 82,250, 89, 40, 7, 62,159,143, - 67,135, 14, 85,244,222,143,239,218,181,107,194, 79, 63,253, 36, 74, 72, 72,192,235,215,175,145,155,155, 11,169, 84,138, 43, 87, -174, 48, 0,182, 30, 58,116,232,202,161, 67,135,186, 34, 47, 46,206,141,138,212, 79, 99, 99,227,201, 93,186,116,193,235,215,175, -241,228,201,147,147,148,210, 32, 66,200,201,119,239,222, 13,106,219,182, 45,246,238,221, 59,185, 52,162, 85,154, 77,142,227,138, -198, 76, 74,203,175,187,129, 0, 90, 84,180,220,243, 39,240,182, 6, 0, 43, 43,171, 24, 59, 59, 59,211,192,192, 64,184,184,184, - 64,171,213, 54,175,104, 93,202,204,204, 92,183,121,243,230, 63, 70,143, 30,141,229,203,151, 15, 59,126,252,248,176,238,221,187, -195,219,219, 27,123,246,236, 65, 80, 80,144,159, 62,219,138,149,116,239,249,196, 49,168,118,237,218,147, 42, 85,170,132, 53,107, -214, 32, 56, 56,216,119,217,178,101,243,130,130,130, 80,179,102, 77,201,171, 87,175,152, 47,105, 67, 0,192,212,212,212, 84,167, -211,225,204,153, 51,143, 40,165, 51, 8, 33,182, 27, 54,108, 24, 44,151,203,145,150,150,166, 12, 9, 9, 25, 74, 41, 61,251,255, -221,214, 81, 66, 22,140,253,113,234,246, 31,199, 14,149, 54,105,220, 16,138,172, 88, 40,115, 18,161,200,254,136,205,187,174,130, - 16, 30,108,108, 28, 96,107,239,140,168,168,104,220,191,112, 81,147,171, 80,110, 16,235, 56,191,178,109, 78,201,179,217, 40,207, -166, 34, 55, 9,202,156,164, 66,155,182,182,142,249, 54,163,112, 47,224,162, 74,153,155,187, 78, 67,201,111,255,228,189,255, 39, -163,194,123, 29, 22, 69,122,122,250,180,241,227,199,123,205,157, 59,215,138, 97, 24,190,165,165, 37,162,162,162,152, 63,255,252, - 51, 45, 39, 39,103,218,151, 36, 72, 32, 20, 6,185,215,168,233,245,253,247,223, 51,189,122,245, 20, 13, 31,221, 85, 96, 99,107, -139,204,140, 84,132,189,126,129, 55,175,158,193,189,102, 3, 44, 94,182, 30, 48, 55, 47,119, 35,201,156,196,176, 91,114,187, 26, - 61,150, 46,156,125,172,181,231,119,166, 53,235, 52, 16, 53,116, 51,131, 86,199, 32, 54, 54, 22,103,207, 4,106, 67,158,222,205, -226, 24,205,160,220,100,253,182,224,185,157, 55, 42,218, 81,207,142, 28, 90,181,122,243,172,173, 59,246,205,153, 59,117,172,113, -219, 54,157, 17,124,125, 47, 78,158, 63,150,171, 82,107, 86,139,248, 88, 27,156, 66, 21, 21,205, 3,149, 74,165, 45,190, 32, 74, -165, 82,105,191,182,176,247,236,217,131,196,196, 68, 77,100,100,228,101,134, 97,142,151,182,217,115, 73,216, 68,169,166, 47, 33, -215, 23,182,105,211,117,225,149, 43,210,145, 63,255,172, 25, 54,124,248,108,168,213, 90,136,197, 84, 96,108,204,131, 68, 34,124, -121,239,158,108,227,132, 9,150, 68,163,185,182,183,140,176, 1, 37,224,155,175, 58, 44,162,104, 97,228,216, 25, 80, 22, 81,180, - 30, 60, 9, 67, 69, 20,173,252, 7, 35,154, 16,210, 98,234,130,133,167, 6,117,233,232, 81,215,181,178,196,166, 74,101,200,237, -237,145,154,156,140,123, 79,222,232,150, 29, 59, 21,146, 79,178,244,138, 43,195,113, 92,222, 36,119, 0, 29,167,205, 5,225,243, -129,252, 48, 14, 5, 43,135,170, 52,109, 5, 34, 16,128,165, 28,212,106, 53,213, 35,157,177,132,144,126,195,134, 13,187,113,254, -252,121, 94,151, 46, 93, 26,158, 62,125,154,251,154,186,163,211,233,156,243, 9, 87,150,145,145,145, 96,212,168, 81,208,233,116, - 80, 40, 20,200,204,204, 68,104,104,168,122,192,128, 1,146,124, 2,161, 27, 52,104, 80,185,237,199,186, 19,177,170,153, 3,156, - 55, 89, 10, 34, 7,103,165, 4, 85,177, 20, 68, 70,180,168,203,109, 90,119, 34, 86,181,116,134,249,138,148, 72,255,176,132,220, - 43,219,247,159, 58,201, 31,209,167, 31,235, 44,127,235, 35,181,165,127,118,232, 89,110,163,246, 89,112, 82,125, 72, 86,113,100, -103,103,207, 91,180,104,145,119,122,122,186,115,215,174, 93, 69, 30, 30, 30,120,248,240, 33,206,159, 63,207, 60,120,240, 32, 38, - 55, 55,119, 62,165, 84, 5,224,234,151,228,105,141, 26, 53,170, 8, 4,130, 2, 87,218,150,252,175,183,156, 62,125,122,208,216, -177, 99, 81,185,114,229,218,132, 16, 9,173,192,115, 68, 41, 45,244, 50,124,227,142, 34,124,227,198,141, 78,246,246,246,228,210, -165, 75, 12,159,207,175,176,114, 67, 41,221, 67, 8,105,174,211,233,126, 28, 55,110, 28, 60, 61, 61,193, 48, 12, 14, 30, 60,136, -221,187,119,251, 85,100,239,214,210, 16, 22, 22,246, 44, 38, 38,166,221,236,217,179,177,102,205,154,121,179,103,207, 70, 76, 76, - 12,194,194,194, 94,124,141,221,172,172, 44,101,116,116,180, 81,203,150, 45,155,184,184,184,132,140, 28, 57,178,206,216,177, 99, -225,231,231, 71,111,223,190,221,159, 82,122,233, 95,209,129,191,126,155,122,160, 94, 53,187, 43,203, 86,172,251,197,173, 90,149, -159,198,140, 26,200,175,225, 94, 7,185,153,177,176,178,182,131,115,165,170, 72, 78, 74,193,229,203,151,216,148,148,140, 61, 44, -143, 44,125,251, 54, 53,254,107,108, 58, 57, 87, 69, 82, 82, 18, 46, 94,188,200,102,164,103,237,132,142,183,236, 85,100,122, 34, - 12, 40, 87,201, 42,105, 50, 60,209,103,226,109,254,202,195,141,121,225, 29,242, 84,174,244,244,244,105,148,210, 20,125,153, 57, - 41, 30, 68,109,192, 0, 17, 46, 92,168, 15,157,174,133,185,137, 73, 71,202,113, 77, 27, 52,104, 32, 31, 56,112, 32,215,166, 77, - 43,177,169,169, 41,169, 93,187,110, 86,102, 70,134, 37, 0, 80,128, 45,143, 69, 23,108, 42, 45,224, 11, 59,177,172,182, 94, 94, - 90,203,223, 84, 90, 31,102, 94,205,142,216, 8, 56, 44,230, 17, 50,138,163,116, 47,195,195,210,240, 68,154,252,165,163,167, 98, -110,191,130, 45,103,230, 85,116,148, 87,212,117,200,227,241, 15, 56, 56, 56,204,143,141,141, 77,162,148,178, 95,170,108, 20,108, -193,211, 99,250,116, 93,227,239,190, 99, 44, 43, 85,226, 40,165,108,196,179,103,228,193,217,179,194, 7,103,207, 74,117,106,245, -173, 19,148,134,235, 99,211,209,209,209,247,220,185,115,122,207,189,234,217,179,231,171,130,121, 91,250,230,167, 91, 53,231, 43, -213,170, 56,125, 87,173, 74,158,123, 58, 60, 34, 30,225, 17,113, 87,223,135,199,118,249,146, 50, 42,186,169, 52,201, 15,225, 64, -245,216, 84,186,184, 77,107,107,235,167, 2,129,192,185, 34, 15, 44,203,178,241,201,201,201,141,244, 76,231,144, 42, 85,170,248, - 69, 69, 69,157, 98, 89,118,198,183, 80, 8, 9, 33,173,248,124,254, 69,150,101,101,197, 21,175, 2, 50, 70, 8,113,149, 72, 36, -159, 76,134, 47,203,230,234,133,117,127,105,217,182,109,159, 7,119,239,158,158,179, 34,228,147,121, 67, 83,251, 88,142, 30, 50, -105,218,111, 71,182,110,252,121,211,233,180, 61,229,170,205,118,118,183, 1,184, 23, 16, 46, 61,242,178, 73, 57,202,176,212,196, -196,196, 23,192, 32,142,227,172, 9, 33, 41,148,210,163, 69, 72,214, 23,231, 39,159,207,247,171, 85,171,214,180, 55,111,222, 28, - 97, 24,102, 76,145,235,215,184,185,185, 77,138,140,140,220,162,211,233,230, 84,224,121, 55,109,219,182,109,250,198,141, 27,121, - 51,102,204,128,191,191,191, 37,165, 52,253, 27,149,187,189,133,133,197, 31, 44,203,122, 80, 74,207,101,103,103,207,163,148,230, - 86,212,102,126,136,135, 65, 78, 78, 78,115,220,221,221,221,223,190,125, 27, 20, 23, 23,183,186,184, 26,244, 21,233,244,238,221, -187,247,185, 13, 27, 54,144, 74,149, 42, 33, 38, 38, 6,211,167, 79,167,103,206,156,233, 73, 41,189,240,165,109, 50, 33,100,193, -132, 9, 19, 86, 12, 31, 62,188,144,208,250,250,250,210, 11, 23, 46,140,164,148, 30,248,210,118,254, 91,170,247,181,171,217, 84, -163,124,118,101,131,186, 30,253,127, 24,214,135, 60,120,242, 22, 15, 31, 4, 32, 54, 62,254, 52,199,227,205, 15, 11, 75,121,251, -181, 54, 3,158,132,225, 97, 64, 0, 77,136, 79, 56, 1,202, 95,248, 42, 60, 57,252,255,235,222,255, 27, 84,173,146, 92,135,228, - 11,183,194,170,112,133, 33,250, 68,171,117,116,116, 68,106,106,115,169, 64,208, 70, 34,145,120,241,248,252, 91,105,201,201,211, -245, 37, 90,255, 68,197,254,172, 67,119, 35,226,210,182, 36,248, 18,155,197, 39,178,127,137,205,138,216,208,215,102,105,155, 74, -115,106,117,188, 21,195, 60,221, 68, 75,207,131,226, 54,157,157,157,127,228, 56,174,138,190,105,226,241,120, 17,177,177,177,187, -190, 36, 63,221,221,221,233,187,119,239, 64, 41, 37,223,178,220,255,137,186,244,191,100,243,192,250,250,142, 53,235,213,154, 19, -252, 44,116, 77,190, 91,177, 16, 75,167, 90,154,180,233,208,126,209,189,155,183,151, 47,222,148,150,253,175, 76, 39, 33,132, 71, - 43,186,186,229, 11,109, 22, 4, 9,173,168, 77,145, 72,180,189, 89,179,102, 63, 62,124,248,240, 15,134, 97,198,253, 47,214, 79, - 66,136, 55,159,207,159, 93,163, 70,141,134, 97, 97, 97, 47, 88,150, 93, 83, 22,201,170,192,224,119,126,149, 42, 85, 38,138, 68, - 34, 73, 78, 78, 78,122,124,124,252, 34, 74,233,241,127,183,252,172,237,110,213,132,210,194,160,219, 43, 67,223,165, 62,254,102, - 54, 41,199,114,148,191,226, 77,120,202,243,255,239,114,255, 79, 39, 89,165,169, 92,130,255,175, 68, 20, 16,165, 50, 17, 31, 31, - 3, 32, 6,192,137,127,215,204,212,135,100, 85, 80,110, 76,252,119,176, 81, 28,249, 68, 42,224, 91,216, 42, 78,154,254, 73,188, -125,251,150, 24, 30,249,127, 63,252, 48, 35, 40, 30,192,244, 38, 94,159,159,203, 39, 87,115,188,122,253,235,211,249, 37, 36,235, - 75,109,126,233,134,207, 90,173,246, 39, 66,200,204,138,172, 86,252,111, 67, 62,169,186,240, 15,216, 93, 5, 96,213,191,251,253, -191,122,155,250, 20, 64,207,127,119,155,255, 99,117,178, 98,155, 74, 27, 96,128, 1, 6, 24,240,111,221,168, 43, 13,185, 96,128, - 1,255, 94, 40,170,106, 21, 37, 94, 4, 64,167, 82, 30,228,235, 21, 48,222,233, 11, 26,138,235, 6,155, 6,155, 6,155, 6,155, - 6,155, 6,155, 6,155,255, 91, 54,255, 91, 73,214, 39,228,170,232,113,193,170,167,127,226, 5,160,147,193,166,193,166,193,166, -193,166,193,166,193,166,193,166,193,230,127,243, 11,192,184,210,142, 13,174, 67, 3,254,113,108,238, 75,156, 0, 96,202, 41, 26, -247, 79, 92,111,128, 1, 6, 24, 96,128, 1,255, 74, 80, 74,119,150,230, 58,252,151, 19, 45, 66,136, 35,242, 2,237,185, 1,120, - 3,224,110, 69,150, 43,151, 96,207, 26,192, 64, 66,200,128,252,155, 61, 1,224,120,121,161, 40, 10, 32,147,201, 18, 85, 42,149, - 45, 0, 72,165,210, 36,149, 74, 85,116, 47, 3,130,207,183, 71,161,121,127, 83,250,196,214,170, 85,171, 38,170,213,106, 91, 61, -254, 62,147, 82, 26,196,227,241,130,229,114,249,205, 55,111,222,156,175,200,189,119,232,208, 97, 36,159,207, 95, 9, 0, 44,203, - 46,184,121,243,230,190,127,176,220,154, 87,114,180,223,171,213,105,153,196,228,180, 69,165, 45,221,222,214,147,248, 10, 8,230, -228,127, 94, 61,241, 92,217, 33, 44, 42,122,125, 25,233,107, 34, 20, 10, 39,219,217,217,117,139,141,141,125, 10,224,103, 74,105, -185, 81,141, 93, 92, 92,126, 16, 8, 4,195, 88,150,173,198,231,243,195, 25,134, 57, 20, 29, 29,125,192,208,140, 24, 96,128, 1, - 6, 24, 80, 30,217, 42,233,251, 10, 17,173, 90,214,196,158, 2,131, 65,208, 25, 20,215, 8,112,244,117, 10,253,168,239,239,189, -107, 17,157,142,201,251, 79, 17, 15,236,165,247,188,157,222,222,222,206, 83,166, 76, 65,171, 86,173,240,240,225,195,150,123,246, -236, 25,205,231,243,131, 56,142,187, 5,224, 33,165,122,133, 82, 48, 6,240, 61,128,161,221,186,117,235,180,114,229, 74,126,157, - 58,117,160, 84, 42,113,251,246,237, 54,171, 87,175,222, 64, 8,185, 14,224, 48,128,179,101,197,134, 81,169, 84,182, 5,156,137, - 16, 98,219,191,127,255,199, 69,201, 85,254,254,106,132, 82,250,128, 16, 18,192,178,236,195, 19, 39, 78,196,212, 34,164,249,248, - 42,162, 63,167,125,208,124, 22, 51, 73,173, 86,219,158,249,109, 21, 4, 18, 9,212,217, 89,104, 57,234,239, 85,160,215,126,153, - 3,194, 49,224,131,166,123,173,216, 16, 4, 32, 56, 62, 62, 62,200,211,211, 51,162,162,133,204,231,243, 87, 94,190,124,217,129, - 82,138, 46, 93,186,172, 4,240,143, 16, 45, 66,136,164, 69,147, 6,183,206,157, 60, 34,205, 73, 75, 68,215,239, 7, 29, 34,132, -140,164,148,158,252,132, 52,117, 39,118, 68,128, 57, 19, 86, 29,230, 3,192,182,249, 67,127,222,208,133,108,154,126,133,126, 36, -132,120, 1,133, 91, 54,253, 70, 41,189,181,173, 59,177, 3, 31,115, 39,172, 58, 76, 0,224,247,249, 67,231,108,235, 78, 54, 78, -188, 88,177, 85,149,132,144,137, 35, 71,142,220,180,114,229, 74,190,131,131, 3,226,226,226,186,214,174, 93,187, 6, 33,164,118, - 89,147,136,171, 84,169,114,172,125,231,222, 85,251, 14, 24,108,100, 99,109,129,248,132, 20,211, 99, 71,254, 24, 95,165, 74,149, -110, 17, 17, 17,131, 12,205,136, 1, 6, 24, 96,128, 1,165,244, 59, 95, 30,222,161,177, 35,145,229,106,209, 91,192, 39, 63,180, -109, 94,167,227,144,238,109,121,181, 61,170,227,213,203,208,239,206,222,124,180,186,182, 29,239, 6,195,210, 3,198, 34,156,121, - 22, 95,246, 74, 24, 29, 3,193,213, 51,135, 1, 0, 19, 71, 15,229, 63,126,252,184,122,227,198,141, 11, 3, 2,118,236,216, 17, - 29, 59,118, 36,219,182,109,107,112,245,234,213, 6,187,119,239,214, 18, 66,246,150, 19,132,110,178,155,155,219,234, 77,155, 54, - 73, 60, 61, 61, 33,145, 72, 10,207,201,229,114,244,236,217, 19, 61,123,246,228,199,199,199,119, 57,119,238, 92,151,223,126,251, - 77, 67, 8,153, 77, 41,221,162, 79,230, 45, 90,180,168, 73, 9, 95, 95, 38,132,188,103, 24,230, 69,253,250,245, 99,106, 18, 82, -253,167,238,173,174, 77,108,237,110, 92,154, 29,129, 88,140,253, 35,243,250,234,162, 68, 43,226,230, 37,200, 77, 77, 82,141, 76, - 76,130, 0, 4, 3, 8,162,148, 6,191,127,255, 62,212,131,144, 6, 45, 44,120,123,119,167,177,245, 43, 64,182, 16, 19, 19, 3, - 51, 51, 51, 89,251,246,237, 19, 8, 33, 75,110,221,186,181,243, 27,215,169,230, 75,230, 76, 20,165, 71, 6,225,227,235, 7,152, - 57,160,141,209,244,205,127, 45, 7,112,178,236,138,200,227,253, 22,192,249, 76,207,219,140,119, 81,106,106,170, 39, 0, 88, 89, - 89,137, 1,220, 90,255, 8,221,103,180, 38,228, 43, 42,186,136,207,231,111,221,191,127,255,216, 31,126,248, 33,111,235,136,123, -247, 32,151,203,177,108,217,178,202,179,102,205,242, 69, 41, 27, 1,187,184,184,252,208,190,115,239,170, 27,215, 44,175,157,157, -150,169,222,177,245,248, 19,199,186, 53,121, 19, 38,207, 50,217,168, 85,219,187,184,184,252, 96, 80,182, 12, 48,192, 0, 3, 12, -168,136,154, 85, 46,209,170,105, 67,246,181,109,228, 62,112,136,119, 27, 73,189,186,117, 32,146,252, 29, 40,186,113,147, 38,104, -220,164, 9,207, 39, 39,187,243,227, 39,207, 58,255,121,245,161,186,166, 13, 57,254, 38,153,142,212, 55, 97, 5,155,210,174,252, -222,174, 67,110, 70,146, 20, 0,140,205,109, 85,243,207,124,188,217,186,117,107, 56, 59, 59,139,110,220,184, 49, 6,101,199, 75, -153,255,230,205, 27, 9,159, 95,118, 60, 84, 71, 71, 71,244,239,223, 31, 53,107,214, 20,183,111,223,126, 62,254,222, 14,227, 19, - 72,165,210, 36, 66,136, 45, 0, 88, 90, 90,178, 75,150, 44,121, 65,105,161,103,144, 82, 74, 31,240,120,188,135, 28,199, 61, 58, -123,246,108,108, 29, 66,108,123, 52,174,121,119,226,240,254, 70,244,207, 13,165,146, 4, 85, 86, 86,137,223, 27,201,141,147,101, -198,198, 65, 18, 35,105, 48,128, 32, 0,193, 78, 78, 78,161,117, 8,113,110, 81,179,202,213,109, 51,134,154,232,147,151,141, 27, - 55,174,225,229,229, 37,101, 89, 22,185,185,185,248,253,247,223,205,100, 50,153, 89,183,110,221, 22, 3, 40,172, 0,181, 9,169, -215,207,145, 63,110, 73, 28, 51,233, 11,136,140,121,219,150, 77, 34, 55,251, 45, 54,109,210,162, 45,222,222, 58,136,180,180,108, -100,102,228,128,227,184,207,118, 24,158,120,145, 38,110,235, 73, 86,111,155, 55,116, 46,225,241, 72,131, 62, 63,163,151,125,230, - 84, 66,200, 75, 0, 66,177, 88, 92, 88, 15, 9, 33,142,117,235,214, 93, 93,253,187,182,248,125,193,112, 80,142,163, 0, 86,235, -171,102, 17, 66,108, 77, 76, 76,206, 94,189,122,181,121,211,166, 77,241,240,225, 67,124,248,240, 1, 19, 39, 78,212, 76,154, 52, - 73, 52, 98,196, 8, 50,115,230,204, 41,132,144, 63, 41,165,247, 63,123, 16, 4,130, 97,223,247, 29, 36,206,201,200, 82,105,212, - 90,141,165,181, 57,167,206, 85, 41, 82,210,179, 84,131,134,254,168,121,249,252,209, 48, 0,159, 17,173,175,201, 79, 3, 12, 48, -192, 0, 3,244, 70, 83, 0, 54, 0,146, 1, 60, 41,118,140,252,207, 40,225, 56, 5,121, 94, 41,171, 34,182, 82,144, 55,237,199, - 6,121, 49, 62, 31, 3, 72,255,154,196,149, 22, 21, 30,200,143, 12,159, 31,160,184, 32, 80, 49, 41, 66,180,232,155,100, 10, 38, - 45, 28,108,234,123,176,217,159,111,159, 68,164,230,200, 84,178,136, 9, 15,197,200,233,203,240, 38,185,244,136,220,222,181,136, -206, 76, 12,129,137, 8, 16, 25,153,171,135,248, 93, 9,104,210,164,137,106,190, 39,207,219,119, 91,158,210, 53,115,220, 80,180, -156,241,231,149,240,240,112,198,209,209, 17, 63,252,240, 3, 40,165, 61,202,184,185,196,236, 39, 1,182,175,123,180, 66,179,196, -146,167, 73,133,133,133,225,206,157, 59,136,142,142, 70,181,106,213, 48,102,204,152, 36, 74,169, 93,105, 54,187,118,237,122,251, -183,223,126,243, 92,187,118,109,224,254,253,251, 91,151,230,110,170, 77,136,113,131,202,246, 79,118,251,206,173, 70, 46,237, 21, - 42,162,223,193,220, 95, 73, 74, 32,121, 52, 62,254,239,188,251,181,134, 3,140,205, 76, 96,108, 42, 79, 28,113,245,105,161,146, -149,255,254,166, 49, 33,166,206, 14, 86, 79,143,174, 95,228,196,187,121, 76, 42,218,241,128,148, 71,178,218,183,111, 31,176,114, -229, 74,139,248,248,120, 92,191,126, 29,149, 43, 87,134, 66,161,192,186,117,235, 18,238,222,189,235,152,159, 94,187,102, 53, 93, -131,126,159, 53,202, 76, 52,230, 23, 73, 69, 43,146, 72, 32,216, 18,112,249,216, 36, 51, 9, 69, 70,252, 7,188, 15,125,137,199, -175, 34,116, 7,174, 5,177, 89, 74,181, 55,165,244,102, 73,191,155,220,134, 84,191, 21,111,115,238,242,237, 39,238, 14, 14, 14, - 24, 63,126, 60, 62,126,252, 8, 74, 41, 56,142, 43, 92,165, 49,127,254,124,212,168, 81, 3, 35, 7,247, 82, 72,210,158,181, 63, -247,138, 62,213,179,130,215,117,117,117,189,122,235,214, 45, 59, 39, 39, 39,220,189,123, 23, 31, 63,126,132,189,189, 61,110,220, -184, 1, 63, 63,191,253, 19, 38, 76, 24,176,114,229, 74,233,144, 33, 67,226,174, 92,185, 82,169,248,156,186,202,149, 43,135,158, -187,114, 87,126,243,244,213,247, 22, 38, 70, 48,182,181, 2, 95,110,170,162, 32, 10,123, 91, 11,209,160,222, 29,171, 71, 70, 70, -122, 20, 43,255,175,202, 79, 3, 12, 48,192, 0, 3,254,198,133, 11, 23,168,183,183, 55, 41,120, 47, 78, 33, 8, 33,231,243,249, -128, 6,128,184,200, 49, 8, 33,231,243,213,144, 79,142,125,124,124,230,251,250,250,190, 44, 56, 46,184,102,222,188,121,117,252, -252,252, 86,181,108,217,242,104, 64, 64,192, 18, 0,239,190,150,104,149,166,114,233, 53, 71,139,137,125, 12,145,123, 55, 8, 89, - 29,116, 41,111,192,101, 68, 1,198,246, 80, 18, 57, 82, 19,162,240,250,238,201, 60,110, 88, 94, 38,190,166, 66, 66,200,141,208, -208, 80,188,126,253, 26, 49, 49, 49, 48, 50, 50,250,236,186,123,247,238, 65, 38,147,193,193,193, 65, 63,201, 78,243,233,126,172, - 65,141, 93, 33,111,233,137,148, 33, 63,225,198,141, 27, 72, 74, 74,130, 72, 36,130, 88, 44, 6,195, 48,229,218,227,241,242,118, -252, 45, 80,177, 74,186,166, 61, 33, 2,103, 75,249,185,109,139,167, 85,225, 61, 56, 47, 84, 70,191, 67,188,138,133,185, 62, 74, -158,220, 24, 70,198, 70, 9, 50,153, 81,113,146,245,182, 49, 33, 66, 99,185,244,220,222, 21, 51,237,249,207,111, 72,149,239,130, - 32, 42,193, 70,231,206,157,199, 3, 88, 76, 41,205,104,223,190,189,221,202,149, 43, 45,226,226,226,240,234,213, 43, 28, 63,126, - 60,153,201,187, 81, 66, 41, 93, 10, 0, 45, 9,145,186,216,152, 95,217,242,203, 52, 19,220, 58, 38,198,152, 95, 42, 92,145,204, - 60,122, 94,232, 55, 98,194,164, 77,211,122, 34, 55, 91,137,195,215,158,227,242,179,247,189, 0,220, 43,107,222,219,150,123,244, - 29, 33,164, 99,223,190,125, 95,220,185,115,199,122,247,238,221, 96, 24,166,196,215,238,221,187,113,253,238,179,169,148,234, 77, -178, 28,171, 84,169,114,253,209,163, 71, 54, 70, 70, 70,184,118,237, 26, 50, 50, 50, 10,149,172,145, 35, 71,146,140,140,140,193, -191,255,254,123,191,200,200,200, 53,119,239,222, 77, 69,222,118, 80,159, 84, 4, 62,159,255,158, 97,180,181, 28, 60,170, 11, 6, -244,108,219, 54, 39, 53, 8,114,171,250,120, 16,248,254, 92, 70,122,170,146,207,231,191, 47,122,253,183,200, 79, 3, 12, 48,192, - 0, 3, 42, 76,104,206, 83, 74,123, 20, 37, 78,197, 9, 87,193,231,130,235,124,125,125,123, 20, 37, 97, 0,224,231,231,183,170, -200,177,226, 91,164,173,188,201,240,237, 9, 33, 20, 64,251,146, 46, 82,191, 58, 5,245,235,179, 16,185,182,134,184,102, 47,240, - 93,219, 32, 58,232, 22, 2, 47,173, 71,236,203,123,160, 28, 11,135, 26,205,244, 77,139,170, 86,173, 90, 80,169,242,166,102,169, -213,106,136,140, 45, 84, 51,199, 13,149, 2, 0, 39,144,170,139, 36, 90, 47,131, 38,173,189,208, 44,145,226,177, 93, 30, 1, 46, - 80,182, 86,140, 26, 5,145, 72, 4,145, 72, 84,184,249,172, 62, 68, 43,127, 83, 84,112,121,238, 43, 90,210,249, 38, 18,225,225, -163,139, 39, 55,147, 68, 6,139,213, 33, 15, 16,175,230,232,185, 68,246,130, 62, 59, 39, 27, 25, 27,197,201,140,140,130,101,114, -227,162, 68,235, 61, 0, 80,161,240,192,193,165,147,235, 27, 39,134, 27,171,158,220, 64,130,138,211,154,150,108,102,233,165, 75, -151,108, 5, 2,129, 61,203,178,136,142,142,198,203,151, 47,177,113,227,198,196,236,236,236,246,207,158, 61, 11, 43,146, 94, 94, - 83,153,248,248,129,101,211,170, 10,130,252,165,234,247, 33, 37,146,183,178, 96, 83,175, 79,151, 94,237, 27, 92, 24, 63,124, 1, -122,119,255, 14, 35,218,215,166, 17,241,105, 42, 0,215,244,217,192,154, 82, 26, 71, 8,233,220,174, 93,187, 67, 13, 27, 54,244, -160,148,162, 94,189,122, 24, 60,120, 48, 14, 28, 56,128,192,192, 64,100,101,101,105,175, 94,189,186,129, 82,186, 71,207, 7,206, -200,194,194,226,242,205,155, 55,109,140,140,140,112,245,234, 85, 40,149, 74, 56, 56, 56, 96,210,164, 73, 98, 63, 63,191,253, 89, - 89, 89, 3,124,125,125,165, 17, 17, 17, 91,174, 92,185, 82, 25, 0,143, 82,250, 89, 37,208,104, 52, 59, 15, 31,216,183,105,210, -228, 41, 78, 55, 31,190,186,161,206,201, 54,115,117,141,201,178,177,144,155,108,248,117,169,139, 70,163, 25, 95,114,126,222,254, -162,252, 52,192, 0, 3, 12, 48,224,115, 13,227,194,133, 11,165,114,145,162,228,169, 56,217,170, 8, 73, 3,160,244,241,241,153, - 79, 8, 57,159,175,120, 41, 1,196,255, 19, 36,171,144,104, 81, 74,253, 9, 33,160,148,250,151,106,133, 99,161,141,184, 3,109, -196, 29,200, 90, 78,197, 95,190, 67,138,253,201,151,111, 17,214,115,217,181,155,106,181, 90,176,111,223,190,194,121, 91, 0,192, -178,236, 55, 47,197,138, 16,173,124,162,247, 89, 34,170, 72,228,254, 59,103, 12,104, 97,197, 42,132,154,123,231, 16,167,230,152, - 53,239,180,138, 39, 25,244,183,249,165,216, 60, 51,125, 60, 98,238, 94,135,145, 92, 30, 51,246, 78,112, 81, 21, 43, 8,192, 7, - 0,168, 34, 53,189,113,124,230,144, 54,246, 34,136, 52, 23, 78, 32, 94,205,169,183, 71,234,246,108, 44,185, 80, 65, 41,197,135, - 15, 31,160, 80, 40, 16, 16, 16,128,147, 39, 79, 38, 23, 39, 89,249,233,189,253,199,207,195,154,155,102,127, 20,105,158, 92, 71, -188,154, 83,215,208,135, 92,213,239,211, 90,196, 35, 87, 9,143, 47,235,222,182, 54,166,255,216, 7,235,255,248,139,209,216,182, -237,177,233,236,197,129, 57,106,237,124,125, 72, 86,145, 52, 7, 1,168, 77, 8,145, 0,240, 26, 60,120,240,197,126,253,250,193, -223,223, 31,231,206,157,115, 7,144,144,159,255,203, 0,216, 33,111, 53, 98,105, 59,199,243, 68, 34,209,209,235,215,175,215,113, -116,116,196,245,235,215,161, 84, 42, 49, 97,194, 4,205,228,201,147, 69, 35, 71,142, 36,153,153,153,133, 74, 86, 64, 64, 64,106, -105, 36, 11, 0, 98, 99, 99, 47,185,186,186,182,106,215,174, 93,159,170,238, 53, 77,195,179,179,146,140,140,164,178,187,254,183, - 68, 79, 30,221,223, 18, 27, 27,251,184,228,252,188,161,119,126, 26, 96,128, 1, 6, 24, 80, 58,188,189,189,253, 47, 92,184, 0, -111,111,111,255,114,250,146, 30, 95, 72,134, 10,126, 39,244,245,245,125,233,235,235,251,137,226,245,149, 74, 91,113,215,225, 5, - 74,105, 66, 81, 69,171, 66, 96, 51,163, 63,191, 1,142,171,200,205,126,246,157,133,133, 5, 35,147,201, 62, 33, 90,156,158, 54, -211, 78, 31, 65,248,196,161,133, 74, 86,129,178,133,174, 35,191,138,104,113, 28, 23, 0,224,147, 68, 24,219,213, 28,114,116,120, -231,214,181,171, 58,241,116,199, 55, 34, 86,193,168, 22,191,209,170, 94,103,211, 94,175, 74,152,100, 93,104,147,209, 65,106, 44, -139,146,201,141,139,147,172, 72, 0,144,219,215,232,183,127,136, 87,251, 6, 53,221,120,204,177,117,136, 83,232,114,124, 66,181, -218,240, 92,122,170,148, 60, 92,252,221,119,223, 45,182,178,178,146,110,218,180,201,204,213,213, 21, 12,195,104,138,147, 44, 99, -187,154, 67,142,141,236,218,186,134,189, 5, 79,247,231,102,196, 40, 89,197,198,112,221,254,237,122,144, 44,107, 51,249,149,237, -171, 38,202,140, 36, 66,168, 84, 42,248,109,251, 19, 87,239,135,244, 72, 14, 62,125, 5,192,149,175,168,147, 99,123,244,232,177, -126,217,178,101,208,233,116, 24, 51,102, 12,222,191,127,127,245,205,155, 55, 27, 93, 92, 92,102,255,252,243,207,142,246,246,246, - 24, 56,112,160, 8,192,200, 82,108,252,122,248,240,225, 30, 13, 26, 52,128,191,191, 63, 50, 50, 50,224,224,224,128,201,147, 39, -139,125,125,125,247,103,101,101, 13, 88,181,106,149,244,195,135, 15,101, 42, 89,159,212,107,150, 93,177, 99,253,196,217, 77, 91, -180,225,189,123, 23,198, 68, 55,243,228,221,186,126,238,142,149,149,213,254, 79,242,115, 84,183, 10,231,167, 1, 6, 24, 96,128, - 1,223, 12, 23, 0,120, 23, 87,185,138,147,176, 2,197,170,232,113,241,235,243,207,171,191, 54, 65,197, 21,173,124,226,245,233, - 28,173,162,147,224,203, 3,151,155,172, 23,121,250,140,173,214, 34,186,241, 77, 33,152,239,201,131,200,216, 66,213,115,217,181, -155,165, 93,107,108,108,172,183,162,197,169, 85,229, 17,167, 10, 17,173,252, 57, 90,151, 41,165,159, 16, 45,115,251,154,158, 11, -231, 78,219,208,166, 95, 87, 94,226,143, 45,145,145,163, 86,255,252,138,225, 98, 21,101,147,172,188, 94, 92, 23, 97,100, 44, 15, -150, 26,127, 50, 47, 43, 26, 0,100,118,213,155,249,204,152,178,173,195,144,158, 36,121, 66, 27,164,103, 40,213,179, 95, 50, 36, - 78, 73, 7,188,162,244, 86, 73,230,110,220,184,177, 3,192,142,246,237,219, 39, 26, 27, 27, 35, 39, 39,231,179, 50, 40, 72,111, -235,126, 93,121,137, 99,155, 35, 45, 87,171,254,249, 37,131,120, 37,119,180, 60,146,101, 99,110,114,101,251,202,137, 70,241,177, -145, 16,137, 68,144,203,229,184,118, 47, 24,201, 33,103,190,134, 96,129,207,231, 47,153, 63,127,254,226, 73,147, 38, 33, 53, 53, - 21,231,206,157, 67,247,238,221,113,228,200, 17,215,139, 23, 47,174,247,242,242, 2,159,207,199,249,243,231,161,211,233,222,150, - 82,158,125,198,141, 27, 55,187, 95,191,126,120,252,248, 49, 18, 18, 18, 62, 81,178, 50, 50, 50, 6,111,219,182,173, 95, 68, 68, - 68,185, 74, 86, 49, 52,171,226,214, 72, 52,111,209, 90,168, 21, 73,130,228,184,135,254, 55,174,241, 30,164,165,165, 25, 1,200, -252,210,252, 52,192, 0, 3, 12, 48, 64,111, 85,171, 52, 46,146,156, 79,162,146, 75, 58, 46, 66,176, 74, 58, 38,197, 84, 48, 77, -177,243,129,255,228, 61,233,165,104, 9,236,234,130, 73, 12, 41, 66,180,146, 62, 57, 47, 53,177,212,203,117,168, 99, 32,216,190, -167, 48,142,150, 52, 53, 53, 85,106,109,109,173, 42, 74, 16,140,140,140,224,232,232,136,244,244,116,236,220,185, 19, 0,202,155, - 20,205,152,246, 27,142,102, 67,198,224,137,179, 24, 84,167, 45, 84,182,182,143, 26,245, 9,217, 18,137, 68, 5,115,195,202,235, -116, 31, 17, 66, 34, 1, 60,160,148,210,198, 53,170, 45,151, 26, 27,143,106, 82,223,205,122,250,196,177,194,136, 36, 53,110,182, -153,151,241,231,175,115,229, 49, 84, 62, 41,138,102,220, 47,199, 94,248,247,191, 31, 44,174,100,197, 54,170, 81,109,129,212, 72, -250, 99,139,186, 53,236,125,102, 78, 20, 70, 36,170,201,205,102, 63,103,157,252,237,103,163, 15, 48,153, 29, 67,211,111,233, 81, - 60,139,187,119,239,190,152, 82, 74, 57,142, 91, 4, 0, 69,211, 59,115,242,143,194,240,143, 42,220,104,179, 32,253,228,175,115, - 77, 98, 80,118,122,109,234,247,105,109,103, 97,122,101,251,170, 73, 70, 9,113, 81,144, 72, 36, 48, 49, 49, 65, 76, 98, 38,132, - 2,190,242,107, 42, 27, 33, 68,226,233,233, 57,119,226,196,137, 8, 14, 14,198,132, 9, 19, 18,162,163,163, 79, 29, 59,118,108, -194, 47,191,252, 34,232,210,165, 11, 18, 18, 18,176,122,245,106,221,189,123,247, 86, 1, 88, 93, 98,125, 20, 8,198, 46, 95,190, -156,198,199,199,147, 15, 31, 62,192,193,193, 1, 83,166, 76, 17,175, 90,181,170,112, 78, 86, 69,148,172, 2,196,198,198,250,187, -187,185,160,215,165, 13, 96,116,106,255,140,212,232, 59,175,195,211,253, 45,197,226, 89,109, 26,215,255,162,252, 52,192, 0, 3, - 12, 48,224,155,224, 73, 57,199,255, 82,148,228, 58,212,151,104,189,221,188, 96,180,251,232, 73,115, 32,115,109, 13,117,232,105, -112, 57,137,133,138,150, 84,110, 1, 75, 23, 15,100,228,170,113,226,198, 51, 0,120, 91,145,132,101,103,103,163,113,227,198,216, - 58,178, 70, 7, 85,118,170, 84, 6, 64, 45, 49, 85,157, 17,183,189,121,241,226, 69, 5,199,113, 71, 1, 92, 44,199,204,146, 58, -117,234,108, 89,187,118,173,216, 99,200,104,228, 60,188, 91, 92,157,130, 76, 38,131, 68, 34, 65, 80, 80, 16,110,222,188,169, 1, -176,164,156, 12,123,196, 48, 76,224,209,163, 71, 99,221,171, 57,119,109,223,180,217,212,249,243,124, 76, 94,221,189,138, 69,171, -182,112,213,155,116,201,244, 59,114, 38, 59, 83,238,210, 81, 17,255,250,133, 30,183, 26, 88,140,100,197,123, 84,117,233,208,178, - 81,195, 57,139, 22, 45, 48,125,121,247, 26,126,249,109, 59,117,111,208, 41,243,183,147,103,179, 82,140, 42,127,167, 76, 12,125, -172, 79, 30,222,190,125,123, 7,128, 29, 5,199,197,211,235,179,108, 35, 87,163,105,215,116,191, 35, 39,115,179, 76, 92, 58,149, -149, 94,219,218,125, 91, 85,114,176,188,178,121,197, 79, 70, 31,227,162, 33,145, 72, 32,151,203, 17,157,144,129,197, 27,142,231, -106, 57,174,235, 87,214, 69,137,137,137,137, 68,171,213, 98,235,214,173,136,142,142,110, 73, 41,141, 38,132,108, 31, 52,104,208, -166,122,245,234,213,122,249,242,229,219,156,156,156, 73,148,210,215,165, 25, 49, 55, 55,111,105, 99, 99, 67, 30, 60,120,128,159, -126,250, 73, 51,101,202, 20,209,136, 17, 35, 72,122,122,250,151, 42, 89, 0, 0,103,103,103,207,239,189, 91,161,117,231, 9,254, - 26, 85,198,157,136,215,251,253,121,244,190,180,113,195,250, 95,148,159, 6, 24, 96,128, 1, 6,252,111,160,172,201,240,101,238, - 70,237, 9, 8,106, 88, 97,124, 29, 39,209,199, 3,191, 78,161,217,225, 1, 84,249,120, 7,205, 58,253, 35,189,176,122, 4,189, -184,121, 58,157,224, 93,135,214,178, 37, 31,107, 88, 97,188, 39, 32, 40,107,119,239,238, 53,161,235,236, 6,218,217, 13,212,187, - 6,116, 0,230, 55,106,212,232,204,228,102,160,244,213, 97, 74, 95, 29,166,147,155,129, 2,248, 9,128, 92,223, 29,195, 1, 56, - 0,216,217,184,113, 99,230,214,173, 91,244,205,128, 78,244,121, 45,107, 58,105,210, 36,250,203, 47,191,208,161, 67,135, 82, 27, - 27, 27, 6,121,254, 82,135,242,108,246,234,213,203,153, 82,138, 74,149, 42,153, 55,241,168,254, 49,232,198, 57,122,231,192, 38, -250,199,228,190,180,121, 61,143, 20,251, 90,237, 2,101, 14, 53, 27,234,187,179,185,189,189,253, 60, 74,105, 87, 74,169, 3,165, - 20,238,238, 86,242, 70,181,170,199, 7, 94, 63, 71,239, 30,220, 66,255,152,220,151,182,168, 95, 59,213,217,195,235,181,212,182, - 86,179, 47,221, 45,189,196,244,214,173,149, 98, 87,189,213,139,210,210, 91,212,102,213,102, 3,207,198,198, 39,210, 71,143, 30, -209,139, 23, 47,210,187,119,239,210, 3,199,206, 82,151,166, 3,114,172,235,245,110,253,181,187,186, 3, 48,243,246,246,166,111, -223,190,165,221,186,117,163, 0,204,190,196, 38,128, 51, 17, 17, 17, 52, 36, 36,132,206,159, 63,159, 2,216, 55,113,226, 68,101, -102,102, 38,237,212,169, 83, 52, 0, 30,138,213, 69,125,211, 89,173,138,147, 95,159,158,109,151, 76,254,169,159,231,215,230,231, - 55,220, 21,222, 96,211, 96,211, 96,211, 96,243,191,222,230,127,242, 43,159,135,140, 43,242,222,168,224, 92,153,138,214,237, 60, - 53, 96, 71, 61, 59,114,104,213,234,205,179,182,238,216, 55,103,238,212,177,198,109,219,116, 70,240,245,189, 56,121,254, 88,174, - 74,173, 89, 45,226, 99,109,112, 10, 45, 55, 14,197,133,215, 84, 88,130,122,100,100,233,134,194, 24, 76,239,210, 1, 74,233,246, - 10, 50,201, 4, 0,227, 8, 33,107,189,188,188, 86,254,216,186, 89,223,201,173, 58, 64,167,211,225,192,129, 3,136,138,138, 58, - 5, 96, 1,165, 84, 47,197, 45, 56, 56, 56,165, 78,245,202,211, 44,101,162, 57,147,134,246,177, 73,126,255, 10,177,161,207, 1, - 0,106,181, 82,151, 16,230,223,160, 34,233,147,201,100,143,108,108,108,222,216,216,216,164,179,234,156,113, 82,129,233,162, 9, -131,191,183, 77,141,120,141,152,151,121,158, 81,181, 74,161,141, 9,187, 89,235, 75,152,116,229,202,149, 37,198, 66,140, 47, 49, -189, 26,149,238,227,219,208,134,250,216, 81,168, 53,171,150,174, 63,240,221,138, 57,163, 36,166,166,166,120, 22,242, 14,139,214, - 29,201, 85,106,116, 93,147,131, 78,223,255, 70,172, 31, 58,157, 78,239,133, 14,165, 96,110,131, 6, 13,106,174, 92,185,210,125, -228,200,145,248, 90, 37,171, 40,222,127,136,245,105,223,190,125,237,119,111,158,121, 89,202, 68,135,190, 38, 63, 13, 48,192, 0, - 3, 12,248,159,129, 55,165,116,103, 65,132,248,124, 87,226,115,125, 92,135,121,196, 35,145, 42, 0, 44,171,102, 71,182,207, 91, -185,126, 49,143,108, 24,197, 81,186,151,225, 97,105,120, 10, 77,254,202,142, 87,225, 93,139, 48,223,245, 30, 42, 0, 0,161, 0, -204, 87,216,122, 11,160, 31, 33,164,233,174,251,143, 23,230,127,189,130, 82, 90, 33, 95,174,137, 0, 33,109,106, 87,115,106,219, -168,142,148,207, 42, 17, 27,250, 30,105,185, 42, 92,123, 25,149,193,163,188,189, 21, 77, 87,120,120,248,109, 0,168, 91,189,114, -104,219,218,110, 46,237, 26,215, 49, 18, 18, 13, 98, 95, 61, 67,166, 82,131,171, 47,163, 50, 65,200, 23, 79,168,254, 86,233,253, - 24,116,230,137, 77,253, 62,157, 8, 33,215,231, 79, 30, 34, 89,188,238,232, 55, 37, 89, 0, 20,113,113,113,169, 10,133,194, 42, - 62, 62, 94,131, 47, 12, 18, 71, 41,125, 71, 8,169, 55,125,250,244,101,179,103,207,158,243,235,175,191,138,190,100, 78, 86,105, - 72,143,139, 58,221,174,206,183, 43,127, 3, 12, 48,192, 0, 3,254,251, 81, 48, 79,171,248,124,173, 10,133,119, 8, 79,164,201, - 0, 38,185,185,145,153,239,223, 83,205,183, 74, 92, 73, 74,215, 87,146,183, 39, 0,122,126,177, 1, 30,201,126,248, 54, 42,231, -209,219,168, 28,112,148,114,148,170,121, 60,196,228,106,181,171,194,194, 99,175,124, 69, 41,176, 79,222, 69, 43,159,190,143, 81, - 81,142,163, 28,165, 26, 66,240, 81,167,227, 86,133,132, 71,158,253,119, 72,111,114,208,233,251,246,181,251,182,189,255, 40,100, -102,110,174,118, 75,242,171,211, 1,223,176, 92,116,132,144, 97, 45, 91,182, 28,205,178,236,118, 74,169,238, 43,108,105, 0,204, - 37,132,156, 10, 14, 14, 62, 30, 16, 16,144,240, 45, 72,214, 63, 90,254, 6, 24, 96,128, 1, 6,252, 87,226,139, 55,149, 46, 13, -223,146,100,253, 59, 34,248,109, 68,227,127,194,110,200,219,136,186,255, 9,233,253,248,234,212, 83, 0,131,255,161,202,120, 21, -192,213,111, 73,170, 9, 33, 85, 0,240,191, 9,201,250, 7,203,223, 0, 3, 12, 48,192,128,255, 78,124,245, 94,135, 6, 24,240, -111, 62,146,160, 0, 24, 67, 78, 24, 96,128, 1, 6, 24,240, 47,234,135, 74, 85,180, 8,128, 78,165,252,232,122, 5,152, 92,167, - 47, 72,212,117,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255, 45,155,255,141, 32,132, 56, 32, 47, 90,125, 97,212, -250, 66,242,245, 15, 47,119, 52, 44,125, 53,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,111, 15,239, 48,174,232,123, -209, 23,207, 32,248, 25, 96,128, 1, 6, 24,240, 15,142,244, 37,249, 27,201,127,209,121, 3, 12,248, 15,170,235,133,171, 14,139, -206,217, 18,124,129,161,234,249, 74,216,187,127, 48,177,147, 29, 28, 28,198,213,175, 95,223, 67, 36, 18,241,178,179,179,151,222, -188,121,115, 73,241,235,218,213, 17, 62,229,243,224, 92,228,151, 0,225, 3, 60, 30, 88,138,216, 59,129,138, 38,134,162,255,183, -174,148,174, 50, 83,155,191, 8,143, 47,102, 25, 45, 88,157, 22,192,223,219, 49,113, 28, 19,197,104, 84, 93, 74,251,189, 67,195, -190, 46, 12, 75,253, 0,110, 27, 1,111, 2, 5,247, 59,161,188, 9,148,135,109,132,195, 79, 16,232, 86,131, 17,206, 22,136, 4, - 11,226,159,157,136,249,111,200,179, 63,255,252,147,255, 53,191,239,223,191,127,137, 27,136, 58, 57, 57,157, 55, 50, 50,114, 43, -237,119,185,185,185, 9,241,241,241, 94,255,229,245,177, 29,128,205, 0,234, 20, 59,245, 26,192, 52, 74,233,141,175,253,143,246, -132, 8,236,128,241, 34,224,103, 0,208, 2,191, 37, 2, 59,110,127,163,133, 28,223, 2,182,182,182,119, 4, 2,129,123,110,110, -110,110, 86, 86, 86, 53, 83, 83,211,112, 99, 99, 99, 99,134, 97,222, 38, 37, 37,181,171, 96,158, 78, 68,254, 86, 90,132,144, 57, -148,210,109, 21, 57,111,128, 1,255, 41,248,170, 85,135,132,144, 26, 0, 60,243, 95,237,154, 54,109,106,151,155,155, 11, 66, 72, - 34,128, 59, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124,254,154,141, 27, 55,206,154, 50,101, 74,225,102,208, 65, 65, 65, 37, - 95,203,131,243,173,115,215,109,159, 4,135,161,105,167,254,249, 68,139, 7,228, 38,192,171,115,179, 47,109,108, 77, 44, 44, 44, -150, 18, 66, 6,240,120,188,114, 59, 53,142,227, 88, 74,233,137,244,244,244,197,148,210,236,138,252,151,220, 88,170, 99, 88,182, -196,255, 16,240,249,108, 78,174,170,212,176, 23, 86, 86, 86, 1, 60, 30,175,106,209, 13,179,243,211, 95,226,231,162,199, 12,195, -196, 38, 39, 39, 55,209, 35, 47,164, 60,129,104, 26, 33,162,206,224,113, 53, 0, 2, 2, 94, 24,199,106,174,113,140,118, 35,165, - 84,245, 53, 36,203,161, 82,181,187, 51, 22,248, 57,135,132,190,198,252,201, 67,241,235,230,125,152, 55,109, 52, 54,238, 60,130, -105,227,134,160,118,237, 58,101,218, 96, 41, 89,186,104,218, 48,175,149, 27, 15, 55, 93, 48,109,168,241,202,141,135,155, 46,152, - 62, 84,190,114,211,225, 38, 11,166, 15,147,175,216,116,168,201,194,233,195, 76, 87,110, 58,172, 5, 48,230, 75,210, 57,180,134, - 83, 46, 97,152, 18, 71,219, 84, 32, 80, 31, 14,139, 51,254, 87, 60,212, 35, 71,142,172,175, 84, 42,159, 13,237,220,200,175, 97, - 13,167,184,146,174, 73,253, 24,231, 20,254,230,185,143, 80, 36,107,252,189,207,190,160,178,236, 73, 36,146,170,175, 95,191,118, -231, 56, 14, 44,203,130, 97,152,194,119,141, 70,131,118,237,218,125,147,133, 51,132,144,158, 0,150,230, 61,172,240,165,148, 30, -255, 10, 91,114,129, 64, 48, 67, 44, 22,123, 50, 12,227, 1, 0, 66,161, 48, 84,173, 86,251, 51, 12,179,158, 82,154, 83, 65,147, - 27,226,226,226,106,203,229,114,104,181,218,194, 13,232,249,124,126, 45, 23, 23,151,173, 0,220,191,246,254,237,128,241,173,218, -180,217, 56, 98,214, 44,190,242,206, 29,108,220,179,103, 3,178,178, 0, 96,107,121,191,149, 72, 36, 87,120, 60,158,107, 69,254, -143,227,184, 40,181, 90,221,165, 34,191, 17, 8, 4,238,241,241,241,182,142,142,142, 0, 0, 99, 99, 99,227,162,199, 21, 81,178, - 0,172,166,148,202, 0,128,199,227,109,108,213,170, 85, 75, 66, 8, 3,128,114, 28,199, 35,132, 12,225, 56, 78,144,127,253,106, - 66,200, 30, 74,169,218,208,109, 27,240,159,168,102,149, 70,182, 4,101,252,232, 34, 0,207,166, 77,155,202, 6, 15, 30, 12, 79, - 79, 79,184,187,187, 67, 42,149,230, 53,226,169,169,118, 47, 94,188, 24,120,231,206,157,129,231,206,157, 3, 33, 68, 9,224, 30, -165,180,196,135,186, 83,207,182, 83,164,114,201, 38, 0, 72,142, 77, 77,136,253,144,180, 41, 33, 33, 97, 53, 45,178, 27, 53, 33, -164,218,136, 17, 35,102, 78,157, 58, 21,231,207,159,199,145, 35, 71,160, 86,171,145,157,157,141,155, 55,111,150,156, 80, 69, 18, -210,111,250, 1,198, 17, 64,180, 63, 96,100, 11, 24,219,125,113,102, 89, 88, 88, 44,157, 54,109,218,244,218,181,107, 23, 70, 49, -215,233,116, 96, 24, 6, 58,157, 14,233,233,233,152, 57,115,102, 1,131, 5,199,113,184,116,233,210,148,113,227,198, 1,192,140, -146,108,182,108,226,242,148, 71,120,206, 5, 90, 13,101,217,216, 7,207, 99,154, 48, 44,203, 87,169,180, 37,238, 84, 46,149,138, -202, 36,121, 66,161,208,249,213, 95,127,217,242,196, 98, 80,150, 5, 56, 14,148,227, 0, 20,121,209,188,239, 40,203,129,234, 88, -112, 12, 7, 70,169, 70,179,137, 19,245,169, 52,173,132, 98,217,145, 97, 63,206,178,111,222,162,133,176,114, 37, 71, 48, 44,135, -247, 17,177,246,207,158, 62,108,125, 98,255,214, 9,132,144, 33,148,210, 47,138,179, 37, 54, 50,189,186,229,247, 93,206, 79, 94, -132,224,198,173, 59,184,126,211, 31, 0,112,229, 86,158, 57, 30,143, 87, 94,250, 44,172,220,189,234, 79, 25,221,219,120,197,218, -221,146, 41,163,123, 11,254,126,223, 37,153, 50,250,123,193,202,245,187, 36, 83, 70,127, 47, 92,254,219,150,134,132, 16, 11, 74, -105,122,105,246, 74, 43, 35,194, 48,146, 67,225,137,124, 0, 72,222,190, 29,186,164, 36, 56, 46, 94, 12, 0, 24, 86,205, 78,111, -119,135,141,141,205, 83,161, 80,232, 92,222,117, 58,157,174, 92, 18, 60,114,228,200, 6, 74,165,242, 41,195, 48, 84, 32, 16,248, - 12,237,243,221,153,174,109, 27,164, 22,189, 38, 40, 40,208,106,213,170,191,122, 31,127,150, 77, 7, 54, 54,121,118,126,205,200, - 38, 61,102,239, 11, 44,163, 67,230,169,213,106,188,125,251, 22, 69, 55,121, 47,202,107,191,176,241,225, 1,216,104,101,101,213, - 60, 53, 53,117, 24,128,249, 89, 89, 89,245,249,124, 62, 44, 45, 45,231, 19, 66,222,155,153,153,237,206,204,204, 12,200, 87,141, - 56, 61,237,182, 51, 53, 53, 61,112,250,244,105,139, 70,141, 26,241, 82, 82, 82, 80,165, 74, 21,164,165,165, 53,187,115,231, 78, -227, 49, 99,198,140, 33,132,252, 64, 41,189, 83,129,228,214, 52, 50, 50,162, 35, 70,140, 32, 44,251,247,237,254,241,199, 31,232, - 82,151,113,251,169,171,177, 66,165,161,153, 55,222,154,253, 36, 18,137,238, 69, 70, 70,102, 86, 52, 63, 68,192,207, 35,102,205, -226,203, 35, 35, 33, 15, 12,196,176,172, 44,193,175,121,234, 86,185, 68,139,199,227,185, 30, 56,178,215, 93, 44, 22,131, 97,152, - 66, 50, 88,208, 70,233,116, 58,104,181, 90,232,116, 58,176, 44, 11,157, 86, 7,223, 21,191,125,113, 91,104,100,100,100,228,232, -232,152,104,100,100,100,244, 45, 58, 34,137, 68, 34,216,191,127,255, 16,177, 88, 12, 0,208,104, 52,168, 91,183, 46, 49,116,209, - 6,252, 55,145,173,146, 84,174,178, 70,169,221,178,178,178,192,178, 44, 76, 76, 76,192,231,243,139, 43, 42,232,220,185, 51,218, -181,107,135,193,131, 7,227,213,171, 87,178,193,131, 7,119, 46, 85, 25,152,213, 3,149,220,237,242, 59, 19,206,225,254,133, 23, -126,127, 44,255,211, 6,192,172, 34,151,141, 25, 63,126, 60, 73, 77, 77,197,128, 1, 3,238,168,213,234, 94,148,210,172, 82, 21, - 13, 14,177, 94,131,135,129,163, 68,182,254,209, 46,162, 81, 41, 41,143,199, 83, 22,184, 14,191, 48,163, 6, 56, 58, 58,226,232, -209,163,208,104, 62, 15, 23,102,106,106,138,151, 47, 95, 22, 85,224,208,162, 69, 11, 62, 33,100, 64,105, 68,139, 16,158,243,253, - 39,145,182, 5,199, 61, 58,215, 17,181,108,226,154,104, 99,101, 66, 1,144, 5, 11, 22, 20, 18, 55, 0, 88,186,116,169, 62,233, - 4, 79, 40, 68,178,191,255,223, 13,177,128, 7,158,136,128, 8, 1,158, 32,207,139, 10, 10, 80, 22,224, 24,128,211, 1, 82,135, - 74,250,216,110,230,228,226,126,126,213,186,109,230,106, 29,197,209,179, 55, 16, 17,241, 1,124, 30, 15,213,220,220,241, 93,251, -182,194,198, 77, 91, 86,250,109,201,172,115,132,144,110,148,210,199, 21,206,104,142, 74,221, 92,172,177,251,143,103,176,177,144, - 99, 64,239,238,144, 73, 37,248,117,243, 94,172,152, 55, 25,238,213, 92,177, 99,195,202, 82,127,110,102,102,182,172, 81,189, 90, -213,246, 30,191, 12,207,118,173, 4,251,142, 95, 65,251,118,173, 5,123,143, 95, 70,123,207,182,130,125,199, 47,163,125,187, 54, -194,125,199, 47,163, 69,147,122,110, 1,169, 65,203, 0, 76, 46,253,158,139,149,209,119,121,101,228, 46, 16, 21,118, 4,145, 19, - 38, 0, 64, 33,209,170, 8,132, 66,161,115,124,124,188,109,121,215,149,167, 26,228, 43, 89, 79, 25,134, 65, 82, 82, 18,201,200, -200,160,230,230,230,189, 47,239,152,127,186, 75,155, 6,105, 0, 16, 24, 24,104,233,235,187,170,247,177,167, 89, 80, 62,220, 66, - 14,253,229,207, 13,235,229,249,244,172,223,200,198,253,251,247,127, 94,146, 93,181, 90, 29,209,176, 97, 67,154,255,217, 73, 34, -145,136,138,213, 9, 71,119,119,247,207, 84,107, 61, 92,138, 27, 31, 60,120, 48,185,118,237,218,168, 85,171, 86, 64,243,230,205, - 77,141,141,141,113,249,242,101,120,120,120,212, 49, 53, 53,125,116,226,196, 9,225,220,185,115, 27,236,217,179, 7, 0,166,232, - 81, 63, 59,121,121,121, 29, 61,127,254,188, 84, 36, 18, 65,169, 84,226,229,203,151, 48, 51, 51,131, 88, 44,198,247,223,127,207, -111,221,186,181, 85,251,246,237, 79,230, 15, 6,244, 94, 1,165, 82,169,232,252,249,243, 97,100,100, 4, 35, 35, 35, 24, 27, 27, -195,216,216, 24,114, 41,200,246,105, 46,178,169, 59, 51,100, 51, 22,111,247, 59,176,109,201, 45, 23, 23,151, 95,162,163,163, 51, - 42, 90, 23,148,119,238, 64, 30, 24, 8, 20,121,118,245,133,153,177, 37,124,124,124,202, 83,164, 32, 18,137,208,170, 85,171,114, -237, 89, 89, 89,157, 18, 8, 4,118,197, 58, 7,169,143,143, 15, 27, 22, 22,102,204,227,241,140, 57,142,131,143,143, 15,203, 48, -140,212,206,206, 46,128,227,184,196,228,228,228,190,229,217,166,148,170, 9, 33,115,120, 60,222, 70,137, 68, 34,168, 92,185,114, -212,162, 69,139, 30,228,171,153,160,148,242, 42, 87,174,220, 76, 38,147,185,170,213,106, 6,192, 28,131,154,101, 64, 25,104,156, - 39, 10, 23, 66, 3, 64, 92, 32,224,231,245,118,176, 46,246, 61, 0,164,228, 15, 20,237, 74, 57, 78, 5,240, 10, 64, 77, 0,182, -249,231,158, 0, 72,171,104, 2,203, 84,180, 8, 33,180,200,133,133, 29,139,137,137, 9,158, 60,121, 2, 66, 8, 76, 76, 76, 96, -106,106, 10, 51, 51, 51,100,101,101,225,213,171, 87,120,253,250, 53, 34, 35, 35, 65, 8, 65,181,106,213, 80,240, 0, 21,177, 85, -216,192, 29, 94,123, 30, 82,185, 4,132, 0,141, 58,212, 71,253,118,117,209,244,113,248, 52, 71, 71,199,157,241,241,241,111, 9, - 33,130,186,117,235,142,105,209,162, 5,214,173, 91, 7,181, 90,189,174, 36,146, 85,212,230,157,151,186, 38,249,157,211,236,131, -151,223, 27, 13,239,234,166,136,143,143, 95,243, 5,153,243, 73, 67,156,146,146,162,247, 94,124, 28,199, 33, 61, 61,189, 76,155, -197, 21,130,245, 27,183,152,103,103, 38, 98,249,175, 7,161,211,233, 48,107,214, 44,112, 28, 87,248,202,200,200,208, 43,157,148, - 45, 38, 50,240,242, 94,132, 7, 16, 1,224, 50, 40,143, 87, 68, 31,221, 2, 66, 1,194, 2, 40,118, 95,197,109, 18, 66,164,124, -145,236,216,146, 95, 55,153, 63,127, 29,139,179, 55,158, 67,155, 21,135,132,192,211, 0,128,106,173,134,224,184,154,143,230,245, -221, 48,125,193,111, 22, 11,167,255,112,140, 16, 82,171,168, 27, 81,159,142,141, 82, 22,203,151, 45,195,206, 77,235,240,219,186, - 77,200,202,204,128, 80,104, 13, 0, 96, 24, 22,108,177,123,251,236,222, 41,237,186,112,246,120,178,113,215, 73,212,173,110,143, -115,215, 2,208,164,142, 43, 46,221,124,140, 22,245,170,224,138,255, 51,180,168, 95, 21,254, 15, 95, 98,214,164, 17,228,254,165, -125, 93, 43, 82, 70, 27, 54,108, 49,207,206, 74,196,249,149,251,145,180,117, 43,162, 38, 79, 70,179,252,107, 30, 19, 2,145,179, - 51, 32, 42,191,140,138, 35, 52, 52, 20,106,181,186,164,209, 62, 60, 60, 60,202, 45,119,165, 82,249,140, 97, 24,154,152,152, 72, - 18, 19, 19, 97,108,108, 76, 94,190, 12, 97,235,212,169,219,135,190,254,115, 23, 0,248,250,174,234,115,252, 89, 22, 20, 1,155, -160,124,176, 25,162, 42, 65,188,157, 75,199,107,199, 45,222,241,172, 72, 39,247, 73, 58, 19, 18, 18,186, 21,124,174, 86,173,218, -235,176,176,176,154, 5,174,230,124, 23,162,136, 97, 24,247, 2,119, 34,195, 48, 80,171,213,232,212,169, 19,191,172,123,183,176, -176,104,225,225,225,129,231,207,159, 99,211,166, 77,150, 94, 94, 94,120,247,238, 29, 8, 33, 88,181,106, 21,169, 93,187,182, 48, - 37, 37, 5, 93,186,116,193,169, 83,167, 90,149,151,159,132, 16, 19, 99, 99,227, 61,231,206,157,147,242,120, 60,100,103,103,131, -227, 56,180,110,221, 26, 60, 30, 15, 33, 33, 33, 88,176, 96, 1, 78,157, 58,133, 51,103,206,200, 26, 55,110,188,135, 16,226, 81, -212,173, 95, 70, 25, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49,114, 84,192,184,245, 81,106,190, -212,154,171,211,176,141,219,168,169,171,120,107, 22,141,190, 9,224,172,190,117, 30,200,155,147,181,113,239,222, 77,195, 50, 51, -121, 0,176,155, 16, 78, 75,233,111,250, 60,239, 0,144,163,202,132,107, 53,103,156, 60,118, 6,253, 6,245, 46,145,100, 9,133, - 34,136,132, 66,152, 90, 26,151,107, 83, 36, 18,217,189,126,253,218, 74, 40, 20,130, 82, 10,150,101,161,213,106, 19, 23, 46, 92, -104,227,237,237,109,114,233,210, 37,158,183,183, 55,103, 97, 97,145,251,248,241,227, 36,134, 97,172,218,182,109,171,119,157,167, -148,110,107,216,176, 97,163,211,167, 79,143,246,241,241,121, 58,123,246,236,229, 69,207,175, 94,189,122,217,197,139, 23, 93,251, -244,233,115,224,197,139, 23,219, 42,210,134,124,109, 59,111,176,249,239,103,243,194,133, 11,133, 13,177,183,183,119,113,181,211, -142, 16,114,190,200,255,247, 40, 56,246,241,241,153,239,235,235,251,146, 16,114,190,232,247, 5,215,229,183, 29,231, 75, 58,206, -255,173,229,188,121,243,234,250,249,249,173,106,217,178,229,209,128,128,128, 15, 21, 37, 90,229,206,209, 42, 32, 87, 69, 9, 87, - 49, 3,200,202,202, 66, 86, 86, 22, 98, 98, 98,176,125,251,246,252, 7, 90, 8,129, 64, 0,129, 64, 80, 56,159,161, 52, 92, 63, -119,119, 51,128,205,141, 27, 55, 22, 6, 63, 56,113,233,231,157, 83, 59, 54,233,212,136,255,236, 70,112,127, 0, 43, 0,116, 27, - 49, 98,132, 53, 0,236,223,191, 63, 5,192,165,127, 5,101,166,148,158,120,251,246,237,116, 7, 7,135,194, 57, 42, 69,221,135, - 12,195, 64, 42,149,162, 96, 46,139, 74,165,194,246,237,219, 25, 74,233,137, 50,108, 34,236,229, 77,188,125,121, 43,239,119, 28, - 7,142,253,251,247, 75,150, 44, 41,186, 68, 20, 19,242,149,147,114, 73, 94, 73,121, 78,139,189, 23,251,254, 51,114,246,153,123, - 66, 52,181,255, 15,147, 29, 56, 34,192, 95, 55, 95, 64, 40, 20,130, 43,162,102, 10,249,121,163,229,151,239,226,225,104, 87, 7, -189,134,140,183, 63,125, 96,203, 84, 0,191, 86, 52,175,107,213,111,137,105,211,167, 99,215,206,157, 88,176,120, 89, 33, 75,103, - 88, 22, 76,185,233,228,241, 90, 55,169,141,156,212, 88,240,249,124,180,106,232, 6, 62,159,143,182, 77,106,128,207,231,163, 77, -211,154, 16, 8, 4,104,223,162, 54,170, 87,175, 14,129, 64,192, 43,167,220, 17,246,242, 6,222,190,188, 93,132,244, 82, 80, 0, -218,132,132,207,174,215, 37, 36,128,186, 88, 85,180,110, 97,204,152, 49, 25, 49, 49, 49,218,226,231, 42, 85,170, 36,186,115,231, -142,121, 41,110,187, 66,200,100,178,198, 2,129,224, 89, 90, 90, 26,103,100,100,196,227, 56,150,171, 83,167, 46,255,242,142,249, -167, 11,174,153, 55,111,254,233,129,141, 77,251, 28, 60,113,158,138, 42,183, 33, 68, 40, 97,126, 92,188, 67, 36, 20,201,244,138, -120, 95,224, 70,124,243,230, 13,202, 75, 79,209,129, 89, 73, 72, 79, 79, 31,225,225,225,113,103,243,230,205,150,132, 16,220,189, -123, 23,124, 62,191,240, 21, 30, 30, 14, 30,143,135,159,127,254, 89,155,149,149, 53,182,188,180, 9, 4,130,233, 39, 79,158, 52, - 19,139,197,200,206,206, 46,124,110,248,124, 62, 94,191,126,141, 53,107,214, 96,196,136, 17,136,142,142,134,163,163, 35,102,205, -154, 37,247,243,243,155, 14, 96,153, 30,183, 30,164,209,104,154, 24, 25, 25, 65, 42,149,162,128,112, 1,192,213,151,194, 16,133, - 66, 81,207,218,218,218,222,198,255,252, 95,173,188,122, 53,176,178,113,104, 89, 64,180,244,197,123, 96,103, 4,203, 46,236,118, -250,180,237,253,211,167,185,135,231,206,197, 74,178,179,119,232, 93,135,116, 60, 68,133,199,162,113,227,198,120,246,236, 25, 26, - 55,110, 92,148, 52, 65, 44, 22, 67, 36, 18, 65, 36, 18,193,218, 66,175, 41, 20,148,199,227,225,254,253,251, 96, 89, 22, 26,141, - 6, 26,141, 6,181,107,215, 78,187,117,235,150, 28, 0,194,195,195,233,240,225,195, 51, 30, 61,122,132,134, 13,203,222, 79,221, -222,222,254, 14,159,207,175, 92,236, 89,181,232,219,183, 47,210,211,211,187,247,237,219,183, 77,254,119,113,127,254,249,231,112, - 0, 16,139,197,224,241,120, 44, 12,248,159, 71, 1,185, 42, 74,184, 74,104,115,122, 20, 63, 38,132,156,247,245,245,237, 81,252, -187,162,164,170,164,207, 69,127,235,231,231,183,170,136,109,229, 23,120,195,202,159,163, 69, 8,161,229, 53,154,101,161, 60,162, - 85,128,103,207,158,233,156,156,156,118,189,125, 17,217,209,173,126, 53,200,140, 37,223, 17, 66, 54, 75, 36,146,153, 63,252,240, - 3, 30, 62,124,136,144,144,144, 63,190,118, 59,149,122,245,234, 93,145, 72, 36,174,165,184, 73,162,130,131,131,187,148,210, 49, - 44,206,159,115, 86,234,100,248,162,243,197,138, 78,134, 47,181, 98,112, 20, 58,173, 14,185, 10,229,223,157,120, 62,209,202,205, -205,197,160, 65,131, 62, 81,180,146,146,146,244, 41, 84,172, 57,123, 22,215, 78,156, 64,247, 6, 13,112,234,241, 99,248,253, 48, - 20,181, 92,157, 64, 89, 2, 74,128,232, 35, 91,144,154,149,131,195, 55,238, 35, 45, 91,129, 97,109,219,194,221,212,186,108,187, - 66, 81,231,102, 45, 90,138,174, 7,188,130, 80, 40, 0, 15, 28,168, 78, 1, 71,143,246,224,243,120, 48,179,171, 2,145, 80, 8, -161, 80,128,240,152, 20,120,212,109, 42, 62, 47,150,118,254, 18,162, 85,201,181, 10, 88,150,197,136, 17, 35,112,244,232, 81, 88, -217,187,194,172, 82, 93,172, 88,183, 19,221, 59,181, 45,247,254, 11, 70,240, 2,129, 0,124, 62,255,179,247,130,207,250,168,147, -148,163,208, 22, 47, 35,142, 2,148,194,121,229, 74, 56,175, 92,137,199,249,255, 89, 59, 55, 23, 74,165, 18,104, 94,167, 66, 36, - 75,163,209, 32, 38, 38, 70,155,144,144, 96, 87, 66, 7,149,168,209,104,202, 37, 54,251,246,237, 11, 26, 57,114,100, 19, 75, 75, -203,167, 65,129,129,186,250, 13, 26, 8, 47,109,159,127,166,192,109, 8, 0, 13, 26, 52, 72,155, 63,127,254,153,225, 3,122,244, -222,230, 51,152,157,184,236,128, 64, 34,147, 53,233, 49,187,236, 9,241, 69,158,143,136,250,245,235, 83,125,174, 85, 40, 20, 31, -203, 40,163,158, 0,150, 54,106,212,200,212,203,203, 11,119,238,220, 65,191,126,253,212, 90,173,246,109,126,163, 90,227,240,225, -195,226, 87,175, 94,193,198,198, 70, 24, 21, 21,181,135, 16, 82,230, 4,121,177, 88,220,190,105,211,166, 60,181, 90,253, 25,201, -242,243,243,195,144, 33, 67, 80,163, 70, 13,112, 28,135,156,156, 28,120,121,121, 9, 55,109,218,212, 94, 79,162, 53,173, 86,173, - 90,107,144,183,234,176,104, 91, 24, 10, 96, 78,190,218,253,177, 71,191, 17, 47,219,118,234,219,164,114,245,186, 14,229, 25,180, -179,179,155,199,227,241, 6,114, 28,199,207,202,202,138,209, 16, 82,189,182,171,171, 93,235,222,189,145, 41, 20,242, 55,222,184, -193, 75,204,206,150, 3,208,203, 5,169,210,229,194,181, 90,222, 84,191,126,131,122,227,217,179,103,232, 63,184, 15, 68, 34, 17, - 4, 2, 97,222,179, 41,202, 83,180,204,173, 77,245,170,155, 58,157,174,176, 13, 47,152,231,165,213,106, 81, 48, 53,203,200,200, -168,240,156, 90,173, 46,117, 64,158, 15,247,227,203, 22,217,202, 76,205,192,234,116,168,211,187,127, 97,157,126,180,123,155, 12, - 28, 39,203,136,138,192,148, 19,231,132, 48,192,128, 82, 84,173, 18,212,172,162,237,202,249,226,100,235, 75, 65, 8, 57,239,227, -227, 51, 31, 0,245,241,241,153, 95,112,236,235,235,171, 4, 16,247, 37,100,171, 36,149, 75,240, 45, 72, 86,129,123,161, 44,116, -232,208, 97,138,137,137,201, 38, 0,104,210,164, 9, 98, 30,198, 33,230, 97, 28, 60,106,214,105,221,168, 65,147,204, 33, 67,134, -192,202,202, 10,179,103,207,166, 0,254,168,232,255,135,135,189,148, 3,160,142,142,142,179, 1,192,209,209,177,193,227,199,143, -109,158, 60,121,130,166, 77,155,254, 45,221,107,181,104,211,166, 77, 89, 29, 98, 54,242,230, 90,205,248,118, 42, 25, 7,173, 86, - 11,133, 66, 9,141, 70, 11, 70,199,129, 97, 24, 52,174, 99,130, 3, 59,125,242,190, 99, 10,212,179, 60,213,204,217,222, 4,141, -235,217,235,120, 60,162,124, 18,152, 80, 98,139,169,209,104, 16, 20, 21,133,192,200, 72, 0, 64, 47,223,178, 39,190, 30,184,113, - 7,181,107,215, 46, 47,181,110,206,142,246,136,191, 22,148,215,120, 43, 99,240,228,222,113,152,152,200, 1, 0,117, 60,135, 65, - 36,202, 35, 90,185, 74, 45,172,107, 86, 2,161,180,212,176, 0,198,150, 14, 87, 4, 34,169, 43,101, 57, 80,202,129,114, 44, 40, -229, 32, 49,177, 50,154, 50, 97, 52, 56,142, 69,179,102,205, 64,248,124,176, 58, 53, 6,244,236,140,244,204,108, 88,153,235,215, - 73,136, 68, 34,120,122,122,202, 74, 59,255,238,221, 59,101, 81, 98, 86,118, 25,233,144,155,171,132, 90,173,134, 86,195, 64,171, - 99,192, 86, 21, 97,249,194,161, 96,180, 12, 20,131, 91, 66,171, 99,192, 77,239, 3,173, 70,135,104, 35, 30,175, 65,109, 27, 29, - 15, 68,249,252, 85,146,105,121, 68,171,128, 28,148,134,146,230, 4,150, 66,182, 2, 71,142, 28,217,184,126,131, 6,207, 6,118, -106,176, 54, 56,228,101,124,112,200,203,207,174,115,173,209, 32, 98,162,223,209, 89, 66,145,172,177,190, 36, 11,248,212,141,248, -149,152,159,157,157, 93, 95, 46,151, 35, 44, 44, 12,124, 62, 31,132,144,119,148,210,250, 0, 48,126,252,248,247, 2,129,160, 26, -159,207,199,214,173, 91,137, 64, 32,168,215,178,101,203,249, 0,142,151, 49,160,243, 48, 49, 49,249, 68,205, 18,137, 68,240,241, -241,193,240,225,195, 11, 73,150, 72, 36,194,190,125,251,208,164, 73, 19,104, 52, 26, 15, 61,201,240, 19, 0,109,245, 80,252, 72, - 62, 57, 47,151,140, 50, 12, 51, 50,117,224,192,234,240,247, 71,235,106,213,106, 55,110,220, 24, 90,237,223,130,102,181,106,213, - 42,101,103,103,127, 36,132, 28, 2,176,141, 82,250,162, 76, 82,164,226, 16, 21, 30, 91, 48,104, 69,179,102,205, 10, 21,172,162, -106,150, 72, 36,130, 76, 44,175, 16,209,226,184,188,118, 41, 59, 59,155,231,239,239,111, 93,171, 86, 45, 2, 0,181,106,213, 34, - 47, 94,188,176, 52, 50, 50, 74,113,115,115, 43,119, 0, 44, 51, 53,195,190,145,131, 0, 0,191,116,234, 90, 56, 48,186,188,116, - 62,132, 66, 33, 58,206,158,255, 89,189,231, 56,142, 15, 3, 12, 36,171, 28,146, 85,146,162,245,117,125,243,223,138,150,175,175, -239, 75, 95, 95,223,207,212,177, 10,218, 43, 95,209,210,199, 21, 80,222,195, 90, 26,214,173, 91,135,122,245,234,149,217, 17,109, -218,180, 9, 7, 15, 30, 92, 71, 41, 13,175,232,255,247,232,216,168, 14,214,159,126, 89,173, 70, 29, 2, 0,203,166,247,228,229, -230,230,226,254,253,251, 48, 51, 51,195,187,119,250,133,253, 34,132,152,152,153,153, 45,229,241,120, 3,248,197, 87, 0,148, 76, - 48, 89,142,227, 78,100,102,102,150, 26,222,129, 82, 64,171, 99,144,171, 80, 65,163,209, 96,250,207, 91,202, 77,135, 47, 64,180, -154,108,129,103,187,150,178,210, 20,157,102,245,218, 99,210, 15,242,207, 58,111, 62, 15,224,241,128,134,205,242, 20,151, 23,143, - 95,130,227, 0,150, 3,172,109, 45,240,199,145,181,101,102, 1,195,114,249,163, 99, 22, 57,106, 22, 30, 45,122, 32, 54,212,191, - 80, 65, 18,139,242, 92,198, 34,161, 16, 28, 37,121, 81, 31, 74, 35, 66, 98,153,107,122, 66,184,251,206,243,193, 24,215,163, 30, -254,188, 30,132,254,157,234,227,214,163, 87,240,106, 94, 27, 47,223, 70,162,142,123,101,108,221,115, 2,148, 34,251,247,245, 43, - 62,254,221,161, 49, 81,250, 40, 90, 15, 31, 62, 84, 22, 87,177,138,190,211,242,251, 67, 80,250,183,162,165, 84,169, 49,123,158, - 94,225,124,242,202,168,109, 11,153, 62, 23,151,165, 88,233, 67,196,138, 43, 91, 40, 39, 60, 75, 85, 0, 77,128,185,255,202,134, -147,101, 89, 92,184,112,161,176, 60, 74, 42,199,162,101,167, 7,201, 65, 84, 84, 20, 94,190,124,137, 22, 45, 90, 32, 51, 51, 19, - 66, 30, 15,179,130,131, 81,251,135, 31,160, 17,137,192,113, 28,196, 98, 49,198,143, 31,175,119,126, 86,176, 53,205,159,231,198, -210,114,218,146,181, 61,122,244,168, 30,150,155,139,151,175, 95,163,211,146, 37, 0,128,139, 23, 47,126, 82, 39,102,206,156, 41, -126,245,234,213,152,167, 79,159,142, 33,132,172,163,148,206, 42,181,157,165,234,194, 57, 90, 3,135,246, 67,245, 90, 85,113,112, -239,145,194,243, 51,231, 76,131, 80, 40,130, 80, 36,132,185,153,185, 94,119,163,211,233, 10, 73,171, 66,161,224, 93,188,120,209, -185,115,231,206,162,105,211,166, 17, 0, 56,120,240, 32,111,243,230,205,198,215,174, 93, 19, 57, 57, 57, 37,148, 75, 46,181,218, -207,202,152, 16, 2,161, 80, 8,145, 88, 4,112, 28, 8, 33,198,171, 87,175, 94,246,242,229,203,166,181,106,213,130, 90,173,254, -129, 16,242,220, 16, 71,203,128, 2,183, 97,105,132,171,164,185, 86,249,170, 84,105, 72, 46, 58,111,171, 52,162, 86,116,206, 22, - 0,117,197,155, 5, 61,231,104,149, 4, 62,159, 95,174, 90,197,227,241,202,117, 29,206,156, 57, 19, 38, 38, 38,165,117, 64, 52, - 56, 56,248, 85, 66, 66,194, 78, 74,233,150, 47, 41,156,243, 55,158,191, 92, 58,163, 79, 54,242,125,171,230,230,230, 41, 29, 58, -116,200, 1,160, 61,126,252,211, 1,178, 90,173, 46,181, 3, 55, 51, 51, 91,186,123,247,238,169,189,123,247,230, 21, 15, 49, 80, -212,189, 87,240,210,233,116, 56,126,252,248,212,185,115,231,162, 52, 21,172,160, 19, 87,228, 42,161,204,159, 8,253, 62,228, 79, -125, 75,175,212, 83,114,115, 7, 56, 87,173, 95,106,103,194, 19,229,205, 33,178,115,249,187, 3, 51, 49,145,130, 45,195, 38, 33, -188,240,200,232,120,167, 74,246,150,120, 31,147, 12,187,202,245,144, 30,247,119, 62, 8, 4,124, 8,243, 93,135,230,166,198, 72, - 78, 74, 2,143,199, 47,147, 24,175, 56,252, 28,143, 66, 34,113,242,250, 11,104, 85,185, 88,191,255, 50,180,234, 28,104, 85,185, -208,170,242,222, 87,205,253, 17,132,224,163, 86,149, 83,163, 34,229, 46, 16, 8,208,188,121,243, 82,137, 78, 92, 92,156,158,138, - 22, 45, 84,180,148,170, 10,150,145,126, 15, 97,153,138, 85,193,249, 47, 37, 6, 5, 33, 31,100, 50, 89,147,125,251, 74, 15,227, - 80, 18, 28, 28, 28, 46,201,229,242, 42,250, 94, 95,129,224,165,171,204,205,205,151,214,170, 85,203, 99,253,250,245, 66, 62,159, -143,142, 29, 59,214,248,241,199, 31,163, 0,160, 94,189,122,142, 5,109,204,196,137, 19,233,195,135, 15, 67,242,198, 24,165, 67, - 44, 22,191, 54, 51, 51,107,226,229,229,133,204,204, 76,196,196,196,192,216,216, 24,181,215,174, 69,240,196,137,104,176,125, 59, -120, 29, 58,128, 16, 2,177, 88,140,224,224, 96,200,100,178,215,101,144,161,230, 0,126, 3,208, 26,127,187, 11, 41,128,251, 0, -126,166,148, 62, 42,161,189,227, 1, 0,203,113,229, 21,214,208,217,179,103, 35, 67, 40, 4,188,189, 33, 10, 15,135, 86,171, 69, -139, 22, 45, 10, 85,246, 22, 45, 90, 64, 32, 16,160,126,253,250,112,116,116,196,214,173, 91,135,226,211,149,216,159, 64,149,163, - 69, 84,120, 44, 90,182,108, 89,168, 92,121,123,123, 23, 42, 90, 66,161,176, 80,217, 34,108,249,196,149, 16, 66,139, 14,146, 89, -150, 37, 2,129, 64, 48, 99,198, 12,210,175, 95, 63,170,209,104, 56,177, 88,204, 59,121,242, 36,185,117,235,150, 32, 55, 55,183, -220,129,120,221, 62, 3,240, 75,231, 60, 81,116, 69, 21, 27, 8, 69, 66,136, 69, 34,204,126, 29, 91, 88, 46,166,251,142,138,253, -252,252,250,215,170, 85, 43,207, 13, 15, 8, 12,113,180, 12, 40, 71,205, 74, 46, 70,146, 52, 69,142,147, 1,144,252,227,228, 34, -132, 42, 25,121, 43, 8,155, 22,187,182,224,188,166,216,123,193,249,192,138,166,189,200, 94,135,159,145,175,178, 70,196,111, 31, - 60,120,224,222,184,113, 99, 68, 71, 71,127,182, 18,174,160,227, 50, 54, 54,134, 76, 38, 67, 64, 64, 0, 0,188, 45,205,216,205, -155, 55, 55, 35, 47,234, 50, 0,192,209,209,177,165,215,192,246, 1,205,186, 54,197, 97,223, 35,153, 9, 9, 9,245, 11, 98,232, - 16, 66,136,163,163,227,112,161, 88, 48,168, 90, 93, 23, 79,112,220,111,215,255,186,183,164,172,155,172, 86,163, 78, 14, 0,101, -145, 85,135,107,190,164,160,121, 60,222,128,222,189,123,243, 94,189,122,133, 65,131, 6,225,224,193,131,165, 94, 59,124,248,112, - 28, 61,122, 20,189,123,247,230,205,155, 55,111, 64,121, 68, 43, 79, 45,209,124,179, 74, 25,246, 46, 16, 7,142,238, 46,117, 14, -146,173,109,222,124,172,164,164,148,194,239,154, 54, 46,219, 51,194, 49,154,107,207,159, 62,110,217,170, 93, 71, 81, 76, 98, 6, - 56, 70, 13, 85,246,223,191, 87,100, 36,130, 50, 42,136,140, 44, 97,111,109,134,103, 15,174,106,180, 26,213,181,178,108, 78,237, - 93, 7, 19,123,122, 0,148, 67,159, 89,127,224,252,150, 41,133, 35,232, 54,253,166,225,198,241,141,122,207,241, 43, 14,161, 80, -136,224,224, 96,101,105,106, 22,159,207, 47, 55, 38,215,223,170,163, 14, 10,133, 18, 10,165,234,155,149, 17, 33,196,198,206,206, -238,119, 75, 75, 75,105, 73, 68,138, 16, 98, 99, 99, 99,243,187,149,149,149, 84, 95,215, 97,105, 36, 43, 63,174,214,211,145, 35, - 71, 86,136,108, 73, 36,146, 42,111,223,190, 45, 12, 86, 90,214,187, 70,163,129,151,151,151, 94,193, 75, 41,165,231, 8, 33, 31, - 28, 28, 28,238,215,174, 93,219,236,253,251,247, 56,114,228,136, 72, 40, 20,186, 20,180, 31,217,217,217,224,243,249, 72, 74, 74, -210, 1, 24, 93,158,235, 76,173, 86,251,251,251,251, 55,236,217,179, 39,255,245,235,215,224,243,249,121,233,106,217, 18, 13,182, -111, 71,200,140, 25,240,140,140,132, 74,171,133, 84, 42,197,149, 43, 87,180, 10,133,194,191, 52,123, 50,153,108,103, 68, 68, 68, - 29,169, 84, 10,173, 86, 11,142,227,192,227,241,136, 64, 32,104, 99,110,110,190, 9, 64,211, 79,159, 41, 91,219,241, 51,127,173, -201, 50, 12,155, 16,253, 62,185,188, 60, 72, 77, 77,197,185,115,231,208,162, 69, 11,120,122,122, 34, 46, 46, 14,225,225,225,232, -222,189,123,225, 53,129,129,129,120,254,252, 57,220,220,220,202, 87,244,120, 58,184,213,172, 2,145, 72,148,167, 16, 9, 69,249, - 3, 31, 97,161,146, 37, 18,138, 32, 20, 8, 33,149, 73,245, 86,180, 8, 33,224,241,120, 32,132, 64, 38,147, 21, 12,178, 57,103, -103,231,132,180,180, 52, 7, 0,124,153, 76, 6,150,101,245, 26,180, 20,244, 17, 5, 36, 75, 36, 22, 21, 42, 91, 0,144,145,145, -161,234,221,187,247, 33,181, 90, 61, 10, 95,176, 67,137, 1,255,147,120,242, 47,250,173,222, 60,145, 82,186,179,164, 73,241,101, - 85,240,238,173, 90,181,218, 62,100,200,144,142, 27, 54,108,128, 92, 46, 71, 66, 66, 66, 97,135, 40, 22,139, 81,169, 82, 37,164, -165,165, 97,199,142, 29,136,141,141,189, 9, 96,188,190, 41, 74, 72, 72,120,248,238,197,219, 84,175,254,173,172,234,180,170,105, - 30,243, 54,182, 5,128,128,124,146,245,199,144,153,221, 71,121,245,109, 6,145, 88,136,152,119, 31,255,223, 74,146,207,231,243, - 9, 33, 24, 52,104,144, 94,215, 15, 30, 60, 24,254,254,254, 40,203,205,200, 21, 40, 90, 10, 21,114,149,223,110,176, 54,105,202, -112, 76,154, 50,188,144, 76,232,227,122,201, 35,185,199,202, 32, 90,218, 13,231,143,237, 24,215,168, 89, 75,215, 38,117,170,224, -209,211, 23, 56,188,253,111,145, 97,207,230,101,248,117,207, 77, 84,178,179,128, 86,157,139, 75,127,238,250,168, 85, 43, 54,124, -161, 40,151, 71,110, 9,129,158,113, 42, 63, 81, 81, 11,136, 86,221,186,117, 75, 85,180,210,210,210,148,229,117, 12,133,101,164, -209, 33, 39, 87, 9,165,226,219, 16, 45, 66, 72,131, 54,109,218, 92, 59,113,226,132,149,173,173, 45,226,227,227, 63, 33, 90,132, -144, 6,173, 91,183,190,118,226,196, 9, 43, 59, 59, 59,196,196,196,232, 29, 86,164, 4,146,133,228,228,100,146,158,158,206, 89, - 88, 88, 84,136,108,241,120, 60,168,213,106,132,134,134,234,251,183,122,175, 16, 51, 51, 51,219,119,244,232, 81,179,148,148, 20, -240,249,124,132,134,134,126,178,234,176,224,245,199, 31,127,136,250,244,233,179, 27, 64,153,203,218, 24,134, 89, 55,124,248,240, - 49,113,113,113, 22,182,182,182, 72, 72, 72,128, 88, 44, 6,165, 20,196,203, 11,109, 63,124,128,150,101, 33,147,201, 16, 22, 22, -134,157, 59,119,230,170,213,234,117,165,148,143,216,200,200,200, 93, 36, 18, 97,216,176, 97,159,156,219,191,127, 63,122, 53,225, - 55, 25,215, 89,146,195, 64,170, 78,148,117,187,196,231,243,201,248,217,191,213,104,222,206,187,238,155,144, 71,239,147, 19, 99, -239,151,115,251, 58,141, 70,131, 90,181,106,225,201,147, 39,184,126,253, 58, 58,116,232, 0, 79, 79, 79, 4, 5, 5,225,234,213, -171,120,254,252, 57, 8, 33,176,178,178, 42,152,126, 81,230, 28, 12,141,130, 65, 82,124,234,103,234, 85,241, 99,145, 72, 4,181, - 82,171, 87, 25,189,126,253, 26, 79,158, 60, 41, 12, 45,195,231,243,153, 31,126,248, 1,148, 82, 26, 17, 17, 1, 19, 19, 19, 58, -114,228, 72, 86, 32, 16, 48,113,113,113,250,214,253, 60,245, 42,159,100, 9, 68,194, 79, 8, 26,199,113,217,129,129,129,227, 8, - 33, 65,132,144,213,249, 95, 27,226,104, 25,240,159,140, 11, 69,247, 58,212, 75,209,162,148,126, 0,208,137, 16, 50,244,204,153, - 51,235, 54,109,218,100,211,163, 71, 15,164,167,167,195,213,213, 21, 14, 14, 14, 56,127,254, 60, 46, 94,188,152,194,178,236, 44, - 74,233,193, 18, 30,182, 78,165,197,218,160,148, 82, 71, 71,199, 19,234,156,156,137,141, 61, 61,112,243,248, 93, 95, 7, 7,135, -241, 78, 78, 78,211, 71,206,255,126, 84,251,222, 77, 17,246, 60, 2, 15,175, 6, 35, 49, 58, 5, 35,219,254, 92,166,205,226,147, -225,205,205,205,199, 24, 25, 25,137, 1,104, 75, 24, 21,127,178,234,176,168, 77,150,101, 89,141, 70,131, 99,199,142,233, 69,182, -142, 28, 57, 2,149, 74, 5,182,152,127,181,168, 77,202, 81, 34, 16, 74,224, 88,169, 22,180,218, 92,112,220,151,169, 55, 69,109, - 22,140, 64,223,139,197,176, 77, 73,193,163, 71,143,244,149,102,203, 44, 35, 74,169,138, 16, 50,108,227,202,217,231, 39,251,252, -102,222,161, 85, 67,252,178,118, 63,180,218, 61,224,241,121,144, 73, 68,104,220,172, 53,248, 80,227,119,191, 57, 25,138,172,244, - 97,197,183,226,249,204,102, 89, 30, 22, 10,176, 28,135,235,119, 30,235,125,239,133,189, 61,203, 66, 32, 16,224,221,187,119,202, -146, 86, 27,242,249,121,110,206,130,145,122, 89, 54, 41,199, 17,161, 72,138, 74,174,181,161, 81,231,124,147, 50,178,181,181,157, -115,250,244,105,171,130, 80, 9, 65, 65, 65, 32,132,132, 22, 81, 71,230,156, 62,125,218, 74,169, 84, 34, 36, 36,164, 96,171,169, -208,138, 60, 71, 5, 74, 86,114,114, 50, 73, 72, 72,128,145,145, 17, 47, 40, 40, 72, 93,191,126,253,167, 40,123,231,135, 66,155, - 42,149, 42,178,180,249,147, 42,149,202, 73, 42,149, 10,139,253,214,209,221,221, 61,172,184, 11,177,164,116,102,102,102, 62,154, - 59,119,110,227,174, 93,187, 98,206,156, 57,105, 22, 22, 22, 38,191,255,254,187,128,207,231,147,201,147, 39,179, 73, 73, 73, 57, -187,118,237, 50, 59,115,230, 12, 50, 50, 50, 2,202,187,119, 74,105, 54, 33,100, 92,171, 86,173,246, 95,190,124,217,200,221,221, - 29, 89, 89, 89,160,148, 98,223,190,125,152, 60,121, 50,164, 82, 41,194,194,194,208,171, 87, 47,133, 66,161, 24, 87,124,238,100, - 17,155,132, 16, 66, 57,142,195,162, 69,139, 10,131,147, 22, 4, 43, 53,145, 17,236,156, 89,213,120,218,174, 76,227,161,191,236, -250, 1, 0, 88,134, 97,223,132, 60,122,191,111,203, 47,183, 68, 34,209,157,114,202,104,193,180,105,211,126,247,246,246,150,201, -229,114,164,165,165,225,254,253,251,120,240,224, 1, 30, 62,124, 8,141, 70, 3, 43, 43, 43, 88, 88, 88, 32, 33, 33, 1,175, 95, -191, 86, 2, 88, 80,150, 77,177,145, 16,213,106, 20,172,252,205, 83,176,132, 69, 86, 27, 22, 85,183, 68, 66,161, 94,207, 81,187, -118,237,208,188,121,243, 2, 2,196, 70, 69, 69, 37,168,213,106, 82,132,244,199, 21, 16,114, 23, 23, 23,230,224,193,131,180, 44, -155, 15,119,110,197,229,229, 11, 32, 22,137, 48, 43, 52,166,144,116,237,239,208, 8, 66,177, 8, 30, 61,251, 21,237, 7,182, 17, - 66,246,228,127, 86,235, 83,231,191, 98,224, 99,176,249,111,110,243, 63, 25,148,210, 4, 0, 21,219,130,167,200,143, 15, 19, 66, - 46,253,248,227,143,126, 13, 26, 52,248,113,253,250,245, 68, 36, 18, 97,201,146, 37, 52, 62, 62,126,111,254, 40, 36,253, 11, 19, -182,247,246,169,128, 9, 35,124,122,147,153, 27, 70,182,121,122, 35,228,117,189, 86,238,168,215,202, 29, 79,111,190,194,150,249, - 71, 14,178, 58,118, 81, 66, 66, 66,116, 57,166,212,157, 90,215, 44, 62, 25,222,202,255,214, 13,171,138,174, 58,228, 56,238,196, -145, 35, 71,166,246,237,219,151,247,248,241,227,207,230,100, 21,108,187,195,113, 28,174, 93,187, 6,173, 86,139,189,123,247,114, - 28,199,149, 30, 71, 11,244,236,198, 13,126, 35,246, 30, 56, 43, 22,139, 8, 30,220, 57,137,204,244,178, 85, 58,145, 72,136, 63, -246,157,210,138, 68,194, 55, 37,157,215,106,181, 49, 55,110,220,176,235,194,178, 66, 30,143,247, 25,129, 42, 13, 39, 78,156,208, -113, 28, 23, 85, 78,185, 4, 16, 34,236,185, 98,206,232, 35,222, 3,127,180,107,213,170,141,208,218,214, 14,132, 16, 36, 37, 38, - 33, 44,228,177,238,210,201,221,137,185,138,108,189,182,224, 25,189,230,118,225,156, 44, 0,232, 49,121, 83,225,252, 44, 0,232, - 57,114, 46,188, 90,212, 1,209, 71,122,250,155,100,113, 12,195,192,216,216, 24, 12,195,148, 24,226,193,204,204, 76,166, 82,169, -148,249,129, 24,203,148,138, 40,240,205,203,136,101, 89,143,244,244,116,228,230,230,226,193,131, 7,116,229,202,149,201,201,201, -201,133,147, 54,117, 58,157, 71, 90, 90, 26,114,114,114, 16, 16, 16, 64,253,252,252,146, 83, 83, 83,231, 87,228, 25,146,201,100, - 77, 4, 2,193,211,244,244,116,206,200,200,136,167,211,233,116,245,235,215,151,200,100, 50,189, 55, 84,143,143,143,239, 90,218, - 57, 55, 55,183,183,111,223,190,173,206,178,108,209, 61, 16, 69, 42,149,202,189, 85,171, 86,250,184,124,166,237,217,179, 7,167, - 78,157,106,150,149,149, 53, 60, 42, 42,106, 63,128,102, 2,129, 0, 47, 94,188, 8, 85,169, 84, 67,250,246,237,187, 47, 61, 61, -253, 17,128,105,122,182, 27,151, 9, 33,195, 60, 60, 60,246, 44, 93,186, 84,238,233,233, 41,112,116,116, 68,211,166, 77, 17, 22, - 22,134, 11, 23, 46,232,182,109,219,150,171, 80, 40, 70, 83, 74,175,149, 93,236, 32, 12,195, 64, 44, 22, 23,190, 36, 18, 9, 68, - 34, 17,178,149, 20, 99,215,134, 43, 25,200,148,235,150,140,187, 64, 1,242, 49, 38, 60, 37,233, 99,204, 35, 66,200,157,248,248, -248,204, 82,242, 76,172, 82,169, 26, 58, 56, 56,240, 9, 33, 27,180, 90,237,200, 41, 83,166, 56,172, 90,181, 10, 53,107,214, 68, - 74, 74, 10,140,141,141,225,238,238,142,228,228,100, 60,126,252,152, 85, 40, 20,219, 1, 44,163,148,150,233,142,204, 72,201,130, -179,189,203, 39,202, 39,165, 20,148, 5,116,106, 22,172,150, 66, 67,116, 16, 10,117, 16,137, 68,250,116,150,148,227, 56,164, 59, - 56,128, 11, 9,193,195,135, 15, 65, 41, 45, 85, 85,171, 85,171,150, 30, 5,196, 65, 44, 17,127,226, 46, 36,132, 64, 36, 22, 67, - 40, 22,125,182,114,198,160, 98, 25,240,223, 14,125,231, 90,100, 0, 24, 79, 8,217,223,190,125,251,243,148, 82, 33,242,252,145, -119,191,230,207, 19, 18, 18,158, 57, 58, 58,206,179,115,182,240,235, 54,188, 13,106, 54,116, 5,203,176,184,127,241, 5,246,174, - 58,115, 52, 46, 38,110,164, 62,123,159,113, 28,119,171,117,147,154, 60, 20,137,213,237,232,232,200,125,201,170,195,204,204,204, -197,179,102,205,194,156, 57,115, 42,188,234,176,180,107,130, 66,147,198, 55,240,176,113,238,217,173,109, 23, 16, 30,213,104,212, -101, 52,124, 40,140, 92, 42, 18, 9,223, 60, 14,140,175, 95,210,117,201,201,201, 93, 70,141, 26,117, 77, 32, 16, 84,169, 72,158, -115, 28, 23,149,152,152,216,177,252, 50,215,221, 39,132,184,159, 59,186, 99,198,229, 83,123,186,112, 28,235, 70, 0,240, 5,162, -247, 58,173,246,138, 90,153,181, 94,223, 77,165, 87,143,111,137,105, 27,175, 98,235,156,158,152,226,119, 28,187, 23,141,197,188, -181, 71,240,219,156,105, 88,185,233, 16,126,153, 54, 12,253,135,142,226, 40,225,221,211,247, 62,248,124,254,229, 29, 59,118,140, - 24, 59,118,108,225,162, 5, 74,233, 39, 13,187, 78,167, 83,114, 28,135,237,219,183,115, 0, 46,151,101,239,211, 50, 34,180,172, -249, 82,250,150, 81, 86, 86,214,232,150, 45, 91,238, 3, 32,161,148,190, 75, 79, 79,255,137, 82, 90,184, 53, 84, 78, 78,206,232, - 86,173, 90,237,163,148, 74, 8, 33,159,157,215, 7,249,161, 30,154, 88, 88, 88, 60,205, 87,178, 36, 95, 50, 33,190,172,172, 46, -195,173,200,234,209,118,112, 40,178,173, 14, 33,100, 85,179,102,205,138,110, 42, 29, 10,160, 73, 69, 19, 69, 41,189, 70, 8,169, -179,104,209,162, 25, 82,169,212, 75,161, 80,212, 0, 0, 99, 99,227, 48,181, 90,125, 75,169, 84,174,207,111,183,202,178,161, 49, - 50, 50, 10, 99, 24,166,174,141,141, 77,222,138,218,124,178, 5, 0,127, 61,101,159, 82,202, 52,173,104,218, 46, 94,188, 88,217, -194,194,226, 59, 66, 72,127, 74,105,173,236,236,108,245,162, 69,139, 2, 78,156, 56,145, 89,165, 74,149,110,222,222,222,196,210, -210, 18, 79,158, 60,161,169,169,169, 39, 1,204,215,103,165, 53,199,113, 81,171, 87,175, 70, 69,159,247,178,206,107,181,218,143, - 23, 47, 94,180,238,154,148, 36,224, 56, 14, 61,123,246,252,132,192, 21,199,155, 55,111,160, 86,171,203, 12,230,168,206, 76, 71, -135, 25,115,129,252,213,159, 5,200, 83,178, 40,168,198,192,171, 12,248,223, 2,249, 71,150, 63, 87, 80, 90,116,116,116, 28, 36, - 53,150, 76,114,173,225, 80, 63, 62, 60,233, 85,118,166,226, 96, 66, 66,194, 14, 74, 41,251,165, 54, 43, 18,176,212, 32,255,254, -115, 54,255,142,163,197,130, 82, 22,148,163,160,148, 3,199,177,121, 27, 94, 83, 14,148,101, 9, 33,184,167, 86,100,142,213, 55, -157,132, 16, 11,107,107,235,101,148,210,174,124, 62,159, 87, 84, 12, 43,250, 57, 95,201,186,156,156,156,252, 75,113,229,245, 63, - 49, 63,255,252,243,207, 18,201,191,190,171, 14,251,247,239,207, 86,240,217,188,101,108,108, 92, 98, 96,206,220,220,220,232,248, -248,248,239,254, 29,242,179, 64, 13,165,122, 52,104,197, 92,240, 21, 94,117, 88,158,205,202,149, 43, 75,180, 90,109, 35, 0,238, -132, 16,115, 0,105, 90,173,246, 74,114,114,114, 34, 33,164, 9,128, 69,249, 63, 91, 78, 41,125,250,175,124,222, 9, 33, 50,107, -107,235, 61, 60, 30,207, 89,159,223, 51, 12,163, 73, 75, 75, 27, 81,116, 64, 80,212,166,181,181,245, 83,129, 64,224,172,135,157, -216,148,148,148, 38,134,246,211, 96,243,191,134, 76, 21,155, 4, 95,244,248,223, 98,181, 71,124,124,252, 49, 0,199,190,165,205, -210, 34,191, 27,240,255,139,220,180,132,127,164, 28,242, 73,211,228,255,181,252, 44, 32, 74, 37,124,255, 12, 0,249, 7,158, 77, -175,255,132,124,161, 95, 56, 98,204, 39, 82,109,191,101, 90, 34, 35, 35,213, 0, 2,242, 95,197,255,239, 41,128,158,255, 70,249, -166, 4, 48,232, 91,217, 43,139, 60, 25, 96,192,255, 42, 12,203,106, 13, 48,192, 0, 3, 12, 48,192, 0, 3,190, 14, 23,138,109, -193,115,161,224, 3, 1,208,169,148,145,142,222,146, 32, 33,164,211, 23,140,164,174, 27,108, 26,108, 26,108, 26,108, 26,108, 26, -108, 26,108,254,111,217,252,159, 67, 65,224,200,127,226, 5,160,147,193,166,193,166,193,166,193,166,193,166,193,166,193,166,193, -230,127,243, 11,192,184,210,142,121, 6,170,105,128, 1, 6, 24, 96,128, 1, 6, 24,240,207, 64,111,162, 37,183,247,240,176,169, -220, 96,159,101,165,250, 65,150,149,234, 7,217, 84,110,176, 79,110,239,225,241,191,152,105,132, 16, 25, 33,100,168, 80, 40,188, -230,224,224,144, 69, 8,153,241, 95,122,159,166,132,144,254,132,144,101,132,144, 62,132, 16,163,111,105,191, 61, 33,130,193,132, - 76, 26, 65, 72,244, 8, 66,162, 7, 19, 50,169, 61, 33,255,117,243, 6,151, 78,115,108,121,247,242,176, 75, 75,167, 57,182, 44, -241,252,108, 71,171, 71,215, 6,110,244,157,236,100,249,141,202,205,196,206,206,110,167,189,189,125,164,157,157, 93,148,157,157, -221, 30, 66,136,153,161,185, 51,192, 0, 3, 12,248,199,112,129, 16, 50,174,224,133, 34,115,180, 4, 0,112,225,194, 5, 79, 0, -183, 1,180,247,246,246,246, 47,254,107, 75,215,122, 99, 61,106,213,156,179, 98,201,124, 98,111,107,109,196,176,156, 54, 34, 50, -166,246,226, 21,126,127, 90,186,214, 91,151, 22, 21,188,251, 11, 58, 3,194,231,243, 7, 73, 36,146, 30, 0, 10, 8, 91,168, 90, -173, 62,207,178,236, 49,125, 87, 17,217,219,219,223,225,243,249,149, 43,242,223, 44,203, 70,127,252,248,177,205, 23,118, 98, 3, - 92, 92, 92,246,120,122,122, 26, 53,107,214, 12, 98,177, 24,139, 22, 45,154, 5, 96,189,190, 54, 44, 45,221, 76,180, 18,233,116, -129, 88,220,153,234, 52,117, 41, 40,192,147,132,112,140,250,134, 72,173, 94,151,150,246, 62, 91,207,180,204, 7, 48, 18,121,203, -209,119, 83, 74, 87,127, 77, 45, 25,217,136,232,116,108, 94,157, 16, 9,192,154,153,153,221, 94,176, 96,129,160, 71,143, 30,216, -189,123,119,155,157, 59,119,142, 35,132,220, 0,240, 23,165,244,253,215,214, 74, 59, 96,124,171, 54,109, 54,142,152, 53,139,175, -188,115, 7, 27,247,236,217,128,172, 44, 0,216, 90,209,186, 36, 18,161,191,181,181,176, 7,165,104, 68, 0, 66,128, 23,201,169, -220, 69,173,150, 61, 70, 43,186,191,207,167,182,135,226,211,229,248,135, 43,106, 35,243, 61, 93, 40,233,233,209, 54,243,253,173, -133, 0,186, 21, 63,207,168,164, 35, 40,191, 82, 15, 37,125, 30, 3, 96,237, 87,146, 44, 35, 27, 27,155,160,179,103,207, 58, 55, -107,214, 76, 0, 0, 79,159, 62,253,161, 71,143, 30, 29, 8, 33,117, 41,165, 89,255, 34,210, 46, 21,240,120,147,196, 66, 97,103, -150,101,235, 1, 0,159,207, 15,214,232,116,215, 24,142,219,170,111, 76, 54, 3, 12, 48,224,191,152,169,148,195, 69,254,157,161, - 79,100,248,219,222,222,222,228,194,133, 11, 20,197,150,136,203,237,106,213,174, 83,199, 99,214,229,211,251, 43,101,164,101,168, - 54,175,217,255, 44, 87, 32, 86,184,215,118, 23,109, 94,191,218, 98,210,180,153,211,229,118,181, 30,229, 36,190,126, 85,129, 70, -215, 69, 38,147,157, 90,179,102, 77, 93, 47, 47, 47,161,173,173, 45, 18, 19, 19, 17, 26, 26, 90,247,230,205,155,189,247,239,223, - 63,139, 16,210,151, 82, 26,173,135, 57,247, 27, 7,246,216, 26, 91, 90,129,213,233,224, 88,191, 81, 97,160,189,119, 55,175,130, -209,106,193,233,116,240,232,209, 27, 0,192,113, 28,106,215,174,205,255,146,140, 36,132, 56,214,169, 83,231,224,170, 85,171, 68, -106,181, 26,143, 30, 61,194,173, 91,183,184,132,132, 4, 63,125,109,200,237,106,120,241,100,198,199, 6, 13,251,209,236,251, 30, - 85,133, 46,118, 54, 0,140,240, 38,130,105,117,233,234,205,166,167,143,237,157, 40,183,171, 49, 40, 39, 49,236, 86,217,100,205, -178, 5, 33,100,101, 65,132,104, 66,200,111, 85,170, 84,249,165,232, 53,197,247,205,163,148, 66, 32, 16, 36,102,103,103, 15, 74, - 73, 73,121, 94,220,166,142,133,224,240,225, 60, 30,177,112,210, 80,254,189,123,247,140,107,215,174,173, 6,128,213,171, 87, 99, -217,178,101,226, 43, 87,174,116, 63,112,224, 64,119, 66,200, 6, 74,233, 95, 95, 83, 49, 69,192,207, 35,102,205,226,203, 35, 35, - 33, 15, 12,196,176,172, 44,193,175,192,207, 21, 33, 90,132,144,170,246,246,194, 63,103,205, 28,229, 81,205,173,133, 72, 36,178, -206,219,196, 91,147, 82, 35, 58,250,121,127,191, 95,119,250, 16, 66,250, 81, 74,223,233,105, 79, 0, 96, 41, 0, 41,128,133, 0, - 22, 37, 39, 39,187,179, 44, 11,123,123,251, 69,132,144, 51, 0, 86,216,216,216,208,228,228,228,185,148, 82,166, 44, 37, 43,235, - 61, 93,248,145, 84,235, 90,179,241, 8,124, 36,151,187,206,236,230,112,201,212,141,172, 88,188, 49,254, 1, 0,116,115,115, 51, -169, 86,203,120,174,220,180,158,101, 86,220,245,185,221,220,220,118, 93,122,175, 31,209, 46, 78, 54, 1,192,209,209,113,245,129, - 3, 7, 42, 53,111,222,188,176,142, 55,108,216,144,191,122,245,106,167, 25, 51,102,108, 0, 48, 74, 79,123, 53,108,108,108,174, -176, 44,171, 78, 77, 77,173, 81,240,189,109,131,190,173,172, 76,140, 59, 38,167,103,223, 73,121,121,198, 95, 79, 91,205,164, 34, -209,201,191, 14,110,116,104,216,188, 37, 79,110,109, 11, 85, 92, 60,114,116,218, 78,183,238, 63,108, 63,110,210,207,211,242,203, -232,177,161,171, 49,192,128,255,105,148,202, 69,254,147, 33, 40,194, 36, 75, 84,144, 36, 18,177,207,226, 5,115, 73, 70,106,134, - 82,149,149,173,209,169, 84, 42,158,136,170,130, 95,125, 72,226, 9,248, 25, 51,166, 77, 53,241,153,183,192, 7,192, 48,125, 73, - 86,131, 6, 13, 30,159, 58,117,202,214,210,210, 18,153,153,153, 72, 77, 77,197,227,199,143, 65, 41, 69,223,190,125, 37,205,155, - 54,109,180,112,209,162, 7,132,144,150,250,144, 45, 99, 75,107,172,110,147,183, 23,237, 47,145,169, 5,255,131,157, 3,122, 20, - 94,179, 44, 54, 19, 0, 32,149, 74, 11, 55, 36,254, 2,180,236,216,177,163, 8, 0,198,140, 25,147,149,157,157,237, 11,224, 48, -165, 84,175,157, 86,229,118, 53,188,172, 29, 28,207,255,190,125,181,172,158,155, 59,180, 58, 6, 81, 31,227, 33, 16,154,195,217, - 89,132, 81,195, 58, 11,219,181,178,180, 94,185,124,231, 5, 99,155, 26,125,114,147,195,174,148,102,203,220,220,124,255,177, 99, -199,112,252,248,113, 0, 64, 88, 88, 24,220,221,221,141,203, 75, 67, 72, 72, 72,181, 94,189,122, 29, 5, 80,189,188,107,139, 7, -198,151, 72, 36,104,211,166, 13,106,215,174,141,179,103,207,182, 7,240,215,215, 86, 64,229,157, 59,144, 7, 6, 2,254, 21, 31, -188, 16, 66,170, 54,110,236,250,240,226,133,131,214, 23, 46,134, 98,237,218, 61,120,255, 62, 79,104,171, 86,173, 26,134, 14, 25, - 32, 12, 14, 14,168,211,191,255,208, 0, 66, 72, 27, 74,105,152, 30,102,151,238,218,181,107,126,149, 42, 85,208,191,127,255, 1, -117,234,212,177, 55, 53, 53,197,142, 29, 59,224,224,224, 80, 77,163,209,188, 59,123,246,172,227,199,143, 31, 49,117,234, 84, 0, -152, 85,154,161,246, 93,218, 47,148,244,244,104, 91,179,241, 8,200, 77, 29,176,235,200, 49,188,121,182,191,173, 90, 27,186,208, -119,178,211,112, 37,149,140,116,118, 55,241,169,220,196,211,170,122,157, 94,112,109,252,220, 90,197,222,253,176,104, 82, 53, 63, -129, 84,181,127,241,154,248,212,207,238,121,192,159,252,186, 89,175, 45, 67,174, 33,149,210,197, 92, 62,193, 42,108,144, 88,138, - 94,237,218,181, 43, 44,184,200,200, 72,168,213,106,120,120,120,240, 52, 26,141,151,158,249, 90,227,187,239,190,187,119,241,226, - 69,171, 26, 53,106,124,178, 37,140,189,149,121, 23,255, 83, 27,166,174,220,120,168,150,109,237, 62, 25, 73,175, 78, 7,151, 71, -178, 90,183,104,124,253,210,169,131,114,146, 19, 3,177,121, 10,192,165, 34,252,232, 31, 32, 70,150, 24, 52, 97,166,192,171, 99, - 7,167,206,221,250, 93, 39,132,116,164,148, 62, 49,244, 53, 6, 24,240, 63,173,106,209,255,182,123, 42, 36, 90, 69, 88,228, 39, -224, 40, 87,223,206,214, 74,182, 97,205,190, 39,124,173, 70, 99,108,110,166, 17,154,153,114,196,196,140,175,213,232,114, 92,171, -185,138, 57,202,213, 47, 69, 74,187, 94,124,212, 45,147,201, 78,253,245,215, 95,182, 66,161, 16, 28,199,193,198,198, 6, 17, 17, - 17,200,200,200, 64,118,118, 54,222,135,134,162,138, 75, 37, 44,241,153,235, 48,117,174,207, 41, 66, 72,147,162,110,196,146,150, -141,178, 58,109,241,198,189,180, 77,132, 63,121, 47,203,102, 41,136,136,142,142,134, 92, 46, 71,221,186,117,229,247,239,223,191, - 91, 26,201, 42,110,211,210,210,205, 68, 32,151, 29,223,246,251, 34,153, 86, 23,130, 87,225,105,168, 89,165, 45,236,172, 92, 16, -159,166,193,195,199,127, 33, 36,232, 48,220,156, 92, 48,121, 66, 7,169,223,234, 63,143, 89, 88, 84,117, 73, 79,255,144, 85,146, -205,172,172, 44,121,213,170, 85,225,226,146,183,239, 25,203,178,120,245,234, 21, 88,150, 45, 60, 46,250,190,239,228, 77, 48, 89, - 81, 24,241,195, 15, 72, 77, 77,149,151,100, 83,200, 7, 51,115,220, 80,129, 76, 8,136,141, 45, 53, 57, 57, 57,133,234,160, 86, -171,197,139, 23, 47,208,178,101, 75,207, 19, 39, 78,248,151, 35,161,234,149,159, 90,224,183,141,123,247,110, 26,150,153,201, 3, -128,221,132,112, 90, 74,127,211,183, 46,217,218, 10, 79, 94,190,116,192,154,207,123, 13, 75,179, 95,241,248,113, 20,180,218,188, -244,166,166, 38, 97,202,164, 44,136,132, 38, 56,123,246,144,149,135, 71,155,147,249,174, 51,174,156,116, 74, 47, 93,186,132, 41, - 83,166,224,213,171, 87,142,124, 62, 31,143, 30, 61,130, 76, 38,195,154, 53,107,248, 30, 30, 30,142,198,198,198,184,124,249, 50, - 18, 19, 19, 73, 89,233,188,125,229,246,138,204,247,183, 22,126, 36,151,187,238, 58,114, 12, 63, 14, 25, 4,123, 26,126,215,204, -141,172,248,174,103,235, 95, 40,191, 82, 15, 99,147,250, 22,238,117,123, 66, 36,150, 99,242,207,203, 16, 22,114,206, 66,145, 29, - 52,137,176, 49,149,144,191,247,223, 39,155, 42,159,232,207,110, 58, 18,208,248,154,203, 19, 87,199,198,227, 31, 1, 8,250,155, -104, 85, 19, 16, 30,107, 86,160, 94,190,123,247, 14,239,223,191,135, 64, 32,128, 82,169, 4,195, 48, 37,166,211,201,201,105, 60, -195, 48,191,228,151,243, 62, 7, 7,135,209, 7, 15, 30,180, 42, 74,180, 11,148,172,180,140,172,244,128, 39, 47,223,204, 28,223, -191,253,157,135, 33, 49,230, 13,122, 71,103, 4,158,201, 44,165,140,164, 50,177,248,228,229,211,135,228,186, 15, 55, 97,236,209, - 30, 66,185, 59, 88, 93, 28, 20,233,185,200,126,159, 0,245,239, 91,208,112,210, 12,156, 59,243,167,188, 78,189, 38, 39, 8, 33, -238,148, 82,205, 23, 60,155, 21,145,248, 13, 54, 13, 54, 13, 54,255, 13,109,150,197, 69, 0, 52, 6, 96,151,255, 57, 21,121, 83, -102,172, 1,164, 32,111, 59, 48, 59, 0, 26, 0,226, 34,191, 41,126, 92,244,218,226,199, 69, 63,167,230,127,182,205,127,127, 2, - 32,173,156, 65,165, 3, 0,111,228,205,205,242,206,207, 35,253, 34,195, 19,194,203, 98, 89, 78, 34,178,177, 85,141, 25,216,177, -222,213,235, 79, 95, 24, 89,155, 10,186,180,111,228,249, 56,248,195, 3,194, 35, 58, 66,120,122,205,251,224,243,249,131, 54,108, -216, 80,207,212,212, 20, 28,199,193,204,204, 12,201,201,201,208,104, 52,200,204,204,132, 58, 59, 11,218,236, 44, 4,198, 68,162, -181,103,123,244,235,250,157,199,161, 51,127, 13, 2,112,180, 44,187,142,245, 27, 21, 42, 89,203, 42, 91,253, 45, 77,196,100, 20, -146,174, 95, 27,185, 67, 36,151,163,243, 76,159,175,169, 88,207,197, 98,241,165,190,125,251,118,155, 61,123, 54, 47, 33, 33,225, - 50, 33,164, 53,165,180, 92,183,169, 86, 34,157, 62,113,122, 15, 11, 11, 57,197,137,107,127,161, 93,163, 33, 48, 18,243,145,154, -165, 5, 33, 64,232,203, 83, 32,196, 18, 65, 97, 9,104,219,208, 20,223,117,241,144,159,249, 51,116, 54,254,158, 31,244, 89,209, -164,167,167, 35, 41, 41, 9, 58,157, 14, 58,157, 14,253, 7, 12,192,129,253,251,145,155,155, 11,165, 82, 9,141, 70, 3,150,101, -193,227,241,112,237,252, 9,196,124, 8, 69,171,150, 45, 81,154, 36,187,239, 57, 21, 18, 66, 30,190,121,243, 6,161,161,161,136, -141,141,133, 84, 42,133,189,189, 61,150, 45, 91, 6,181, 58,111,143,178, 1, 3, 6,120, 2, 8,254,218, 7,234, 61,176, 51,130, -101, 23,118, 59,125,218,246,254,233,211,220,195,115,231, 98, 37,217,217, 59,244,249,173, 72,132,254,171,127,155, 80,211,216,216, - 24,177,209, 27, 80,171,150, 8,179,102, 88,193,247,215, 20, 0,192,212, 41,206,104,218,196, 26, 89, 25,127,194,218,118, 62, 54, -109,154,230, 54,114,228,186, 31, 0,236, 43,199,244,194,191,254,250,171,159,187,187,187,211,243,231,207,137, 88, 44,134, 76, 38, -131, 76, 38,131, 84, 42, 69, 82, 82, 18, 34, 34, 34,232,234,213,171,227,144,231, 90, 44, 21,249,238,193,110, 51,187, 57, 92,122, -243,108,127, 91, 39,254,135,192,126,147,219, 68, 6, 61,124,158,125,245,218,253,229,140, 74, 26,147, 17,123,125,110,213,166,207, -173, 39,205, 89,138, 45,171, 23,227,205,163, 59,105,118, 46, 89, 91,101, 68,189,175,121,231, 18, 84,178,246, 75, 5,147, 22, 13, -100,198,143,236,103,126,206, 46, 96,252, 69, 1, 73,254,152,242,108, 13, 34,158, 43, 37,213, 27, 13,175, 81,141,167,185,121,243, -166,172, 93,187,118, 80,169, 84,133,202,228,193,131, 7, 57,134, 97, 74,116, 71,107,181,218, 95,226,226,226, 28,148, 74, 37,186, -118,237, 58,117,205,154, 53,198, 5,123,212,177, 44,251,137,146,181, 98,253,129, 43,211,127,217,122,235,202,209, 95, 29, 87,248, -140,110, 63,108,242,202, 91, 40,101, 31, 73, 1,143, 55,233,220,233, 61,246, 82, 11, 29,100,150,223, 65,149,168,196,155,157, 63, - 66,145,165, 66,211, 21, 75, 1,136,161,209,241,176,163,103,127, 8,173, 28,177,120,236,104,199, 5, 59,118, 77, 0,176,193, 48, -174, 55,192, 0, 3,138,193,142, 16,114, 30, 0,124,124,124,230,251,250,250,190, 36,132,156,167,148,246,200, 39, 58,231, 41,165, - 61, 10,174,201,239,179, 63, 59, 46,184,182,248,113,241,207,243,230,205,171,227,231,231,183,170,101,203,150, 71, 3, 2, 2, 62, -148, 71,180,144,183,255,243,206,226, 91,241, 0,249,171, 14,189,189,189, 73,209,247, 79, 20, 45,142,187,243,238, 67,164,226,187, - 78,205,157,207,251, 7, 63, 25, 53,202,187,227,160,158,237,186, 68, 68,167,134,186,185,218, 91,191,124, 25,108,202,113,220, 29, -125,114, 73, 34,145,244,232,208,161,131, 32, 61, 61, 29, 70, 70, 70, 72, 78, 78, 70, 92, 92, 28,180, 90, 45, 84,153, 25, 80,103, -102, 64,149,145, 14,109,102, 58,222, 63,125,140,250,110,213, 36,249,147,229,203, 35, 64, 37, 42, 85, 69,149, 45,177,137, 9, 36, - 38, 38, 32, 21,116, 27, 18, 66,190,183,176,176,120, 72, 8, 89,152,223, 41, 77,154, 59,119,110, 10,199,113, 88,185,114,165,169, - 92, 46, 63, 65, 8,145,148,103,199,196,134,223,163,101,195,186,188,215, 17, 65,104,211, 96, 4,106, 84,237,142,136, 68, 37, 82, -178,181, 72,202,208,162,105,187,205,168,220, 96, 41, 42, 53,244, 69,104, 84, 26, 28,157,220,121, 16, 72,202,220,252, 57, 38, 38, -230,147,227,163, 71,142, 64,161, 80,192,205,205, 13, 67,134, 12,193,220,185,115, 49,100,200, 16, 56, 58, 58, 98,216,192, 94, 88, -188,120, 49, 62,126,252, 88, 94, 82,213, 53,106,212, 80,187,186,186,170, 93, 93, 93,213, 90,173, 22, 57, 57, 57,200,200,200, 40, -158,223,211, 42,252,148,216,217,205,115,112,112, 8,178,179,179,123, 41,149, 74, 47,190, 32,228,181,202,213,213,174,117,239,222, -164,246,192,129,252, 40,153,140,248, 3,114,125,108, 89, 91, 10,189,189, 58,116, 19,103,164,239, 1,144, 39, 82,141, 30,101,131, -123,254,117,112,255,110, 19, 76,153,228, 6,194,147,130,240,196, 80,228,222, 68,243,102, 45, 69,230,230,164, 71, 57,101, 61, 20, -192,139,214,173, 91, 59, 78,158, 60,153, 72, 36, 18, 76,157, 58, 85, 59,118,236,216,183, 67,134, 12,121,123,227,198, 13,214,213, -213, 21,149, 42, 85, 34,149, 42, 85,114, 0,240, 34,255, 55,101,194,212,141,172, 80,107, 67,239,154,187, 27,127, 96, 97,221, 42, - 71, 39,233,191,120, 77,124,234,242,173,225,107, 35,222, 40,170,189,121,116, 39,245,109,200, 57, 46,226,201,237,148,248,183,217, -213,150,111, 13, 95, 59,111, 75, 92,137, 15,181,191, 63,184, 83,231,253,181,138, 92,133,160,119, 79, 47,197,248, 49,131,106, 88, -202,235, 28,132,211,119, 13, 42,187, 56, 15, 91,188,106,147,118,236,132,233,218,221,127,236,161,217,217,217,200,202,202,194,166, - 77,155,152,115,231,206,197,177, 44, 59,189,180, 49, 16, 0,232,116, 58,140, 31, 63,222,216,212,212, 20, 49, 49, 49,133,138, 40, - 0, 36, 36,167, 6,223,127, 18,242,122,230, 79, 3, 60,115,213,106,245,149,219, 79, 67,107,187,187, 58, 19, 66, 75, 93,136, 34, - 22, 10, 59, 55,105,222,156, 79,105, 6,136,192, 5,239,247,175, 70,214,199, 52,100, 37,165,129, 47, 52, 6, 3, 9,116,156, 24, -230,245,155, 33,236,201,115, 56,217,216, 9, 36, 66,161, 97,235, 44, 3, 12,248, 31, 69, 89, 92,164, 40, 89,242,243,243, 91, 85, -214,249, 34,239,154, 98,199,133, 68,170, 56, 9, 43,250, 25, 0,252,252,252, 86, 81, 74,123, 4, 4, 4, 28, 1,160,212,147, 47, -140, 43,120, 47, 26, 37,190, 92,214,193, 87,105,124,103,207, 93, 8, 11, 51,153, 89,179, 70,238,246,103, 47,251, 63,189, 19,240, - 52,180,114, 37,107, 27,170,211, 88,252,182,110,139, 51, 81, 40,245,157, 12,238, 97,109,109, 13,173, 86,139,119,239,222, 33, 54, - 54, 22, 90,173, 22, 76,110, 46,212, 25, 25, 80,165,167,131,205,205,134,136,101,161, 76, 78,130,149,145, 20,248,123, 69, 98,121, - 55, 88, 34,209, 42,120,151,154,154, 66, 98, 98, 10,158, 80, 88,162, 91,177, 20,155,141,155, 53,107,118, 60, 36, 36,164,121,167, - 78,157,150, 19, 66,204, 40,165, 81,113,113,113, 29, 23, 45, 90,164,182,179,179,195,248,241,227,107, 2, 24, 81, 46,201, 20,107, - 60, 92,237,107,162, 70,181, 17,168, 92,169, 3, 50,114,117, 72,206,210, 33, 41, 67,139, 29,155, 91,226,228,238,102,184,119,178, - 45, 66,174,116, 70,134,206, 30,114,199,239, 65, 89, 77,157,178,108, 94,187,118, 13,203,150, 45,195,242,229,203,177,114,229, 74, - 44, 95,190, 28,113,113,113,168, 91,183, 46,162,163,163,113,233,210, 37, 36, 36, 36,192,218,218, 26,143, 31, 63,198,250,245,235, -113,239,222, 61,125,148, 59,189,174, 33,132, 84,200,151,206, 48,204,200,132,222,189,235, 37, 90, 90,214,110,212,168, 81,183,169, - 83,167, 86,107,221,186,117,225,249,106,213,170,185,200,100,178,143,132,144,221,132,144,134,101,217,226,128, 70, 54, 54,117,161, - 81,191,206, 47, 43, 33, 8,145,162, 67,231, 80,180,110,251, 20, 90,157, 8, 60, 34, 1,143, 39, 5,195,164,194,194,194, 17,148, -146,186,229, 36,113, 81,114,114,178,251,245,235,215,121, 17, 17, 17,144, 74,165, 0, 16,185,100,201,146, 45,107,215,174,125,101, -101,101,197,158, 63,127, 30,103,206,156, 65,143, 30, 61,248, 99,199,142,117,175, 84,169,210,246,242,238,123,241,198,248, 7,135, -215, 93, 26, 44,212, 89, 52,148,202, 42, 87, 65,174,252,251, 73,237,109,140, 1,224,210,251,247,217,182, 46, 89,126,185,217, 65, -209,230,206, 57,191,150, 55, 17,158,210,197,220,179,183,175, 31, 30, 62,125, 57, 51, 41, 49, 93,216,168, 94, 29,165,239,178, 57, -162,202, 85,170,255,182,120,238, 79,246,113, 89,210,140,206, 83, 47,189, 62,117,249,113,206,240, 81, 63, 50, 99,198, 77, 86, 93, -186,124,237, 52,199,113,245, 74, 91,113,200,113, 28, 18, 18, 18,240,242,229, 75,132,135,135, 35, 57, 57, 25, 41, 41, 41,200,206, -206, 46,116, 55, 26,101,103, 93,216,178,247, 92,160,177, 76,102,212,188,158,187,203,163,231,175,146,140,101, 50, 35,247, 42, 46, - 53, 8, 89, 90, 98, 59,194,178,108, 61,169,145, 12, 0, 65, 70,200, 29,228,164,231, 32, 39, 35, 7,217,105, 57, 80,107,249, 80, -169,121, 80,106,120,112,245,252, 14, 57,185, 42,228,164,102,130, 99,217, 6,134,238,198, 0, 3, 12, 40,163, 95, 62,239,227,227, - 51, 95,207,203,245,118,111, 22, 39, 94, 62, 62, 62,243, 9, 33,231,231,205,155, 87, 7,122,204,105,166,148,238, 44,254, 42, 56, - 87,110,120,135,148,148,176, 28, 83,155,218,125,103,252,252,203,165, 35,127,108,182, 85,171, 21,209, 86, 22,114, 86,110, 36,182, - 30, 51,126, 37,178,115,210,251,228,164,233,191, 74, 42, 61, 61, 29, 31, 62,124,128, 76, 38,131, 72, 40, 4,171, 84,130, 85,230, - 66,153,158, 10,158, 86, 13, 17,203,194,210, 72, 6, 87, 71,123, 84,182,179,215,203,230,187,155, 87, 11, 39,190, 23,117, 23,174, -110,230, 1,177,177, 28, 98, 19, 57, 38,158,191, 13, 0, 16,137, 68,192,162,229,250, 20,166,181,147,147,211, 95,135, 15, 31, 22, - 37, 39, 39,227,197,139, 23,129,148,210, 76, 66,136, 9, 0, 46, 52, 52,244,122, 72, 72, 72, 15,119,119,119, 0,112, 43,207, 94, - 86, 10,143,213, 49, 20, 49, 31, 35, 17, 17,251, 28,150,102, 85, 33, 52,170,129,164, 12, 45, 36,178,170,208,169,255,246, 62,170, -178,162,160,212,234,183, 48, 82,163,209,128, 97, 24, 48, 12, 3,141, 70,131,113,227,198,225,126, 64, 0,142,158,185,129, 15,239, -195, 80,179,138, 61,126,248, 97, 56,154, 53,107,134,128,128,128, 50,109,141,108, 68,116, 11,218, 65,176,174, 27, 15, 98,185,149, -186,197,220, 43,143,244, 33, 91,148, 82,162, 71,126,174,237,209,163, 71,245,176,220, 92,188,124,253, 26,157,150, 44, 1, 0, 92, -188,120,241,147,123,153, 57,115,166,248,213,171, 87, 99,158, 62,125, 58,134, 16,178,142, 82, 90,242,100,115, 10, 92,184,240, 0, - 63,253,244, 10,201,201,121,243,181,143, 29,249,155,151, 70,124,208,162,171,119,158, 71,203,220,220, 28,235,214,213,213, 43, 63, - 89,150,197,206,157, 59, 11,221,133, 0, 32, 16, 8, 90,207,156, 57,179,111, 73,215, 87,175, 94, 93, 84,158,205,153, 3,156,165, - 47,162,100,147,204,170, 87,174, 99,106, 93, 31,169,186,231,117,159,199, 37, 76,153, 57,192,121,195,186, 19,177, 42, 25, 81,239, - 35,108, 76, 37,129, 84,181, 95,159, 52,190,191,180, 73, 99, 94,121,212,254,143,201, 89, 11, 38,255, 56,212,202,212,220, 54,119, -247, 22, 95, 11, 30,159, 71,255,122,170,205,168, 83,205,202,252,251, 22, 27,115,126,154,177,232,185,134,137,153,140,152,191,194, -202, 10,113,193,178, 44,226,227,227,145,156,156,140,232,232,104,164,164,164,228, 63,251, 41,159,173, 92,173, 96,131, 8,101,116, - 52,162, 78,239, 70,229,225,195,209,116,249, 50,176,156, 0, 74, 5,139,117,173, 58, 34, 61, 83, 9, 53, 71,224,216,184, 21,126, -188,120, 23, 60,202, 2, 59,182, 26,122, 18, 3, 12,248, 31,133, 62,225, 29, 10, 8,145,175,175,111,143,111,253,255, 69,201,150, -175,175,239, 75, 95, 95, 95,189,255,171,184,203,176,232,113,185,225, 29, 0, 32, 43,249, 85,184,149,107,253,248, 92,101,174,145, -157,173,141,218, 72, 42,225, 50,179,178,249,207,131, 3,181, 57, 9,239,222, 84,224, 62, 66, 67, 66, 66,234,198,199,199, 35, 58, - 42, 10,140, 50, 23, 60,181, 6, 84,165, 64,167, 54,173, 32, 5, 32,229, 17,136, 56, 45, 4,124, 49,178,115,178, 0, 32,180,220, -206, 81,167,251, 76,217, 34,132, 64,108, 98, 2,177,177, 49,196,114,147, 79, 20, 46,125, 20, 27,137, 68,114,248,196,137, 19, 14, - 78, 78, 78, 88,182,108, 25,156,157,157,107,213,171, 87, 79,209,182,109, 91,153,157,157, 29,106,215,174,141, 86,173, 90,225,210, -165, 75, 0, 80,110, 76, 41, 29, 35, 13,122, 19,137,214, 41,105, 1,184,123,251,119,104,148,106, 52,242,252, 29, 90, 65,101,216, -212, 89, 10,238,221, 65, 40, 62,158,205, 83, 15,236,123, 34, 54, 58, 18,132, 47,126,169,175,242, 84,240, 57, 48, 48, 16, 71,206, -250,195,193,213, 3,209,111, 95,227,245,173,235,184,111, 99, 5, 87,143,218,133,110,160, 82,211,200, 66,176, 98,107, 97,120, 7, - 73, 90, 90,154,196,210,210, 82, 93,144,119, 14, 14, 14, 95, 67,182,134,206,158, 61, 27, 25, 66, 33,224,237, 13, 81,120, 56,180, - 90, 45, 90,180,104,129,166, 77,155, 2, 0, 90,180,104, 1,129, 64,128,250,245,235,195,209,209, 17, 91,183,110, 29,138, 82, 86, -245,241, 8, 94, 48, 76,106,173,106,213,170, 21, 18,173,253, 7,146,241,252,105,103, 16,136,177,105,203,223,209, 28, 92, 92, 92, -240, 49, 33, 28,132,208,144,114,210,184,220,222,222,126,145,131,131, 67,181,181,107,215,242,165, 82, 41, 38, 76,152, 80, 53, 39, - 39,167,114,190,148,140,121,243,230,229,169, 84,139, 23, 99,201,146, 37, 80,171,213,138,210,140, 29, 88, 95,223, 49, 41,141, 27, - 99,103,239,212,199,203,186,114,189, 14, 93, 58,161,170,123, 7,116,232, 18, 13, 0,171, 44, 5,145, 3, 87, 47,172,123,218,186, -146,229,158,171,151,175, 45,110,227,217, 97,129,207,120,139, 21,126, 59,210,203,157,243,152, 25,181, 47,251,141,120,208,250,205, -219, 15,172,255,101,222, 52,105,116,178, 38, 61, 46,157,230,200, 37, 2,185,155, 29,145, 79,249,121,249,135,248,248,240, 89,136, -185, 92,238, 74, 75,142,227, 16, 30, 30, 94, 56,167, 79,165, 82, 33, 55, 55, 23, 49, 49, 49,133,117, 70,105,108,218,117,242,168, -158, 13,114,149, 74,197,163,224,183,209, 11,167, 14,107,153,171, 84, 42,222, 70, 68,135, 81,186,177, 68, 54,198,227,241,130, 21, -217,138, 78,138, 12, 21,146, 95,188,129,115, 71, 87,232, 24, 2, 13,195, 34, 57, 53, 27,106, 6, 96,121, 66,212, 25,248, 3, 88, - 34, 64, 74,124, 28,120,124,126,160,161,187, 49,192,128,255, 89,148, 27,222,129, 16,114,190,101,203,150, 71,139,170, 78, 5,159, - 1,168, 1,148, 53,149, 39,185, 40,153, 42,112, 39,150,246, 63,197,236,234, 59,192,252,108,142, 86,185,225, 29,242,127, 72, 26, -212,115,117, 92,189,120,152, 51,199, 48, 53,147, 82, 18, 25,129, 64, 34,172,100,166, 76,168, 72, 14,170,213,234,243,215,175, 95, -239,221,185,115,103,201,219,224, 64,104, 50, 51,161,201,204,128,144, 99, 96, 41,107, 2,158, 86, 13,162,209,192,169, 22, 7, 85, -182, 12,254,247, 67,116,106,181,250,188,190, 68,139,199,231,127, 58, 47, 75, 46,135,196,196, 20, 18,185,188,184,107,145,148,147, - 81, 70,189,122,245,234,216,162, 69, 11, 80, 74,177,115,231, 78,104,181, 90,177, 86,171,133, 70,163,129, 86,171, 69, 86, 86, 22, - 14, 28, 56,128,109,219,182,221, 7,176,183,220,206,140,209, 92,191,114,237,102,179,209,195,122, 8, 47,158, 95, 7, 70,195, 66, - 73,156,145,155,171, 67,142,198, 8,172,213,112, 32,241, 2,248, 2, 41, 90,214,175,138,179,127,158,210,130, 81,223,208,147,133, -127,162, 10,197, 68, 71, 34,246,125, 24,228, 89, 31, 97, 99,106, 4, 69,120, 24, 26,253, 48,226,139,212,137, 74,149, 42,129,227, - 56,120,121,121, 21, 78,174,254, 82,178,149,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209, -189,123,247,194,107, 2, 3, 3,241,252,249,115,184,185,149, 45, 18,166,164,233, 46,198,198,188, 24,240,253,247,223,139, 30, 62, -124, 8, 74, 41,220,221, 77, 97,106, 98, 12,194,147,192,195,195, 22, 64,222, 24,160,125,251,246,200,202, 10,103,210,211,233,197, -114,242,241, 48, 33,228,140, 70,163,121,215,174, 93, 59,199,247,239,223, 99,198,140, 25,130, 99,199,142, 21, 72,201,240,241,249, -116, 49,133, 82, 89,186,235,190,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209, -168, 90,221, 5, 89, 41, 65, 85, 84,202,200, 62, 34, 65,186, 69,208,166,184, 87, 50,239,186,163, 84, 73,183,223, 2,208, 39, 0, - 48, 85,190, 61,150, 24, 45, 28,126,252,204, 95,151,198,119,239,209, 75,168, 99, 25,166,174,171,208,252,196,233, 11, 73,113, 81, -209, 27, 17,125, 57,228,111,253,175, 76, 21,143,205,202,202,130,177,177, 49, 66, 66, 66,212,222,222,222, 18, 30,143,135,119,239, -222, 21, 18, 45, 91,107,203,218,173,155,214,173,181, 98,253,129, 43,198, 18,137,164, 75,251, 38, 30,175,222, 70,197, 82, 74, 34, - 75, 85, 91,117,186,107,193, 47, 2,189,108, 28,171,243,195,111, 63,132, 85,219,238, 80,171,121, 80,106, 56,168, 25,128,225,139, -224,208,176, 57,204,221, 60, 64, 1, 60,121,120, 95,167,214,233,174, 24,250, 26, 3, 12,248,159, 86,181,104, 89, 36, 41,255,115, - 26,128, 72, 95, 95,223,148, 34,106, 83, 50,128, 64, 0, 13,242,175, 75, 46,246,187,100,228,173, 30,108, 90,196, 78,114, 17,194, - 85,244,179,166,216, 53,122, 13, 0,139,206,209, 42,145,104,149,177,164, 18,214,214,214,182,141, 26, 53,113,219,245,199,113, 80, - 74,241,230,249, 26,164, 39,189,198,162, 85, 15,220,156,157,157, 61, 99, 99, 99,253,245, 73, 4,203,178,199,246,236,217, 51,171, -121,227, 70,141,170, 56, 59, 35, 48, 50, 2, 34,202, 66,196,178,224,105,213, 16,176, 26, 56,215,101,193, 35,114,196,199,103,194, -239,240,241, 16,150,101,143,149,103,183, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117, -179,144, 92,157, 95, 54, 15, 98,185, 28,110,205,203, 15, 8, 79, 41, 85,152,152,152, 60, 13, 14, 14,110, 90,183,110, 93,204,154, - 53, 11,145,145,145,224, 56, 14,137,137,137,170,132,132,132,184,228,228,228, 72, 0,167, 1,236,210, 39,242,184, 72,173,218,112, -254,228,254,201, 45,219,120, 90,127,223,103, 27,206,252, 57, 19, 25,153, 89, 80, 48, 50,228,170, 24,228,170,249,176,180,170,135, -230,245,235, 35, 62, 46, 9, 47, 31, 94,201, 17,168, 21,107, 42, 82, 65, 9, 33,120,254,252, 57,170, 57,154, 32,236,174, 63,172, -141,132,104,224,104, 15,199,214,109, 10,227, 75,149, 5, 33, 31,204,208,161, 67, 11, 35,195,127,247,221,119, 17,195,135, 15,119, -152, 57,115, 38,254,248,227, 15,220,191,127,255,179, 9,218,158,158,158,184,115,231,206, 82, 0,139,203, 19,245, 52, 26, 13,106, -213,170,133, 39, 79,158,224,250,245,235,232,208,161, 3, 60, 61, 61, 17, 20, 20,132,171, 87,175,226,249,243,231, 32,132,192,202, -202, 10,186, 60,242,172, 43,205,152, 86,139, 19,191,254,182,103,254,250,245,219,234, 12, 27, 54, 12, 39, 79, 30,197,232, 81, 53, - 65,120, 18, 16, 34, 65,175,158, 53,177,108,249, 19, 52,111,222, 30,214,214, 66,172, 95,119,246,131, 82,201, 30,208, 35, 27, 87, - 92,189,122,213, 81,165, 82, 33, 35, 35,131,202,229,114,146,154,154,183,162,181, 36, 69, 75,161, 80, 72, 75, 51, 20,252, 44,116, - 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145, 17, 48, -206,190,148, 18,145,146,149,144,235,190,221,163,241, 88,126,108,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101,102,148, - 81, 71, 41, 33,132,164,189, 58,248,215,105,138, 94,173, 90, 54,175, 94,215,197, 65,156,158,146, 68,255, 60,123, 41, 68, 27,113, -242, 92, 1,193, 42,111,151, 5, 74,233, 50, 31, 31,159, 95,242, 63,239, 91,184,112,225, 88, 63, 63, 63,155,143, 31, 63, 22,206, -209, 74, 74, 73,187,217,202,123, 10,155,154,145,169,217,179,254,231,254, 50,169, 68,188,208,111,207,109, 29, 31, 15, 75,179,203, -112,220,214,129, 51, 22, 77,123,251,230,185, 83,101,153, 24,103,127, 94,140,192,171,183,160,227,137,240,211,245, 71, 80,107, 89, -100,164,164,226,198,152, 73,144,219, 89, 96,219,237,147,137, 28,199,253,110,232,106, 12, 48,224,127, 23,101,112,145,146, 98,236, - 37,234,113,221, 19, 61,236,124, 53,138,171, 88, 69,161,215, 18,188,148,148,148,164, 59,119, 30,225,246,249, 21,240, 63,191, 2, - 47,159, 7, 34, 62, 78,131,184, 68, 21, 76, 77, 77, 31,148,209,241,119, 42,222, 57, 40, 20,138,190, 11, 23,253,242, 81, 42, 51, - 66,187,142, 29, 97,111, 99, 11, 35,145, 16,124,134, 3,159, 8,145,147,108,142,176, 32, 5,230,238, 57,152,148,163, 80,244, 45, -222, 73, 20,183, 89,148,100, 16, 66, 32, 49, 53,129, 88,110, 2,137,137,233, 39,110, 68,169,169, 41,164, 38,166, 16,136,197, 37, - 77,154,255,204,102, 78, 78, 78,191,254,253,251,167,103,102,102, 98,236,216,177,240,247,247,127,126,229,202, 21,211,192,192, 64, - 89, 82, 82, 82,117, 74,233,119,148,210, 29,165,145,172,226, 54,211,210,222,103, 83, 70, 61,200,247,151,233, 74, 21, 99,133, 1, - 35,142,193,152, 23, 3,134,229, 64, 1, 56, 90,138,209,186,211,114, 36,105, 90,225,216,246,149, 10, 78,171, 26, 86, 52,134, 86, -113,155,148, 82,106,103,103,247, 89, 30, 92,191,126, 29, 3,250,247, 67,151, 62,189, 97, 83,165, 26,108, 59,117, 71,151,177, 63, - 97,251,246,237,224,241,120,176,182,182,254, 68,225, 40,106,115,223,115, 42, 60, 28, 68,201,225, 32, 74,246, 62,163, 2, 0, 63, - 28, 60,120,240,215, 6, 13, 26,220,186,127,255,254, 26, 0,131,138,254, 87,145,180, 44, 41,170,102,149, 82, 70, 11,166, 77,155, -166,124,251,246, 45,140,141,141,193, 48, 12,238,223,191,143,109,219,182, 97,237,218,181,120,254,252, 57,172,172,172,224,230,230, - 6,181, 90,141, 39, 79,158, 40, 1, 44, 40,163, 46,113,201,201, 76,191, 77,155,252, 82,123,244,104,139, 61,123,182,192,222,190, - 21,132, 2,123, 8,132, 54, 48,150,215,194,238, 93,191,162, 91,183, 70,248,235,236,241,180,148, 84,166, 95,241, 40,238,165,164, - 83,245,232,209, 35,108,223,190, 29,253,251,247,143, 27, 48, 96, 0,155,153,153, 89,168,104, 21,236,198,190, 36,127,142,153, 90, -173,150,148,102,115,236,207,193,113,115, 86,132, 44, 75,252, 24,215,194,255,214,131,161, 55,175, 92,199,135,183, 55,113,243,202, -117,220,189, 25,224,147,248, 49,174, 69,163,102, 53, 68,125,199, 78,158,179,255,212, 73,190,220,212, 1,251, 79,157,228, 15,153, - 50,125,101,147, 46, 29, 22,148, 87,231,243,203,145,230, 36, 37,206, 91,181,102,115, 14,163, 85,241, 86,111,220, 26,175, 76, 78, - 88,128,130,165,152,165,168, 89, 69,109, 42, 20,138, 29, 74,165,210, 81,169, 84, 58,170, 84,170, 5,145,145,145,237,102,205,154, -149,204,178,108,161, 90,154,244,242,236,131,208,187,123, 87,217, 90, 91,200, 90, 53,173, 83,115,221,142, 63,111, 71,199, 36, 30, - 42,136,161, 85, 74, 25,169,114,148,170,126,189,251, 14,207,205, 72, 87,163,229,116, 31,112, 82, 57,212, 44,160,163,124, 48, 68, -128,224, 21,235, 32,179, 52,193,225,136,103,138, 76,157,182, 95,209, 24, 90,229,220,251, 23,195, 96,211, 96,211, 96,243,223,211, -230,127, 50, 8, 33, 14, 69,247, 58,204,143,171,245,183,162, 85,222,146, 74, 39, 39,167,118,223,247,234,132,246, 61, 22,130, 82, -138,215,207,126, 67,122,242, 27, 56,217, 75, 16, 30,157,213, 18,128,191,190,137,161,148, 70, 19, 66, 90, 76, 91,176,240,212,128, -239, 58,122,212,173, 82, 69, 82,185,178, 43,140,109,109,145,146,146,140,123, 15, 95,233, 86, 30, 57, 17,146, 79,178,244,217,130, - 7, 28,199,229, 77,114, 7,208,113,218, 92, 16, 62, 31,200, 15,227, 80,208, 49, 86,105,218, 10, 68, 32, 0, 75, 57,168,213,106, -170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52, 60,125,250, 52,247, 53, 5,145,147, 24,118, 75, -110, 87,163,199,202,121,227,143,181,232,208,219,212,189, 78, 19, 81,147,202,124,104,117, 4,241,113, 81, 56,127,234,177,246,213, -163, 43, 89,148, 81, 13,202, 77, 46,123, 11, 30,173, 86, 27, 93,189,122,117,187,237,219,183, 23, 78,134,103, 89, 22, 41, 41, 41, -120,240,224, 1,234, 53,109, 14,143, 81, 99,144,156,156,140, 77,155, 54,193,197,197, 5, 61,123,246, 68, 90, 90, 26, 24,134,137, -214,179,172, 88, 0, 87,242, 95,159, 16,218,124, 65,133,150,231, 54,116,115,115, 19,171, 84,170,134, 14, 14, 14,124, 66,200, 6, -141, 70, 51,114,222,188,121, 14,171, 86,173, 66,205,154, 53,145,146,146, 2, 99, 99, 99,184,187,187, 35, 57, 57, 25,143, 31, 63, -102, 21, 10,197,118, 0,203, 40,165,201,229,164,239, 29, 33,164,197,212,169, 19, 79,253,234, 55,222, 93,165,110, 47,182,180,108, - 3, 74, 25, 36, 39, 71, 34, 59,235,190,118,249,178,189,239, 19,147,116,125, 41,165,111,245, 44,166,197,147, 39, 79, 6,242,183, -224, 9, 15, 15,127,225,225,225,225, 94,154,162,165, 15,214,157,136, 85, 1, 56,178,122, 70,171, 25, 89, 41, 65,238,150,130,200, -136, 22,117,185, 77,235, 78,196,170,150,206, 48, 95,145, 18,233, 31,150,144,123,101,251,254, 83, 39,249, 35,250,244, 99,157,229, -111,125,164,182,244,207, 14, 61,203, 45, 31,218,176, 97,195, 74,132,164, 85, 77, 74,125,243,116,244,216,241, 3,205, 68,202,139, - 13,156, 83,221,120, 46,141,164,207,159, 63,143,208,119,207,208, 98,118,195, 8, 33,237,230,205,155,119,133, 82,250,201,220,132, -164,148,180,155, 45,123, 76,166, 25, 25,153, 47,146, 94,157, 13,214,195,214, 99, 66, 72,199,186,245, 26,157,252,117,149,159, 93, -251,105,179, 4, 97,183,110, 3,172, 14, 81,254,183,193, 74, 52,220,186,128,107,137,153, 90,109, 31, 67, 84,120, 3, 12, 48,168, - 89,101,113,145,127,247,228, 23,159, 12,143,252,189, 15, 5,250,252, 58, 54, 54,214,223,173,154,243,213,176,176,118,223,185, 56, -219, 0, 0,194, 35,226, 17,151,168,190,170,175,219,176, 4,178,213,228,224,185,139,131, 36, 18, 73, 15,146, 31,194,129,126,193, -166,210, 12,195,196, 86,169, 82,165,148,179, 37,135,122, 98, 89, 54, 81,207,116,222, 38,132, 12,119,115,115,243,139,138,138, 58, - 69, 41,205,253,218,146,200, 73, 12,187,101,105,233, 86, 45,224,250,201,233, 15,111,159,239, 68, 25, 77, 61, 0, 32, 2,113,133, - 54,149,206,201,201, 25, 63, 97,194,132, 29, 66,161,240,255,216,187,238,240,168,138,175,253,206,189,219,107, 54,189, 19, 32,144, - 66, 39,116,233, 69, 65,162, 52, 41, 34,189, 35, 22, 68, 65, 80, 80, 58,202, 15, 5, 17, 21,144,142,168, 84,165,119,233,210,145, - 26, 90, 32,144,222, 54,117,147,173,247,206,247, 7,217,117, 9, 41,187, 33, 40,248,237,121,158,155, 45,119,243,222,233,243,206, -153, 51,231, 84, 65,145,205,153,213, 6,139,227, 56,214,100, 50, 73, 57,142, 99, 1, 16,134, 97, 44, 66,161, 80,191,117,235, 86, -139,197, 98,121,104, 48, 24, 70, 63,133,122,212,169, 14,176,123,247,238,170,238,238,238,175, 16, 66,122, 83, 74, 35,243,242,242, - 12,211,166, 77, 59,181,105,211,166,220,106,213,170,117,137,142,142, 38, 30, 30, 30, 56,119,238, 28,205,204,204,220, 12,224, 83, - 74,105,172, 19,233,137, 37,132, 52, 24, 61,230,135, 55, 61, 60,150, 69, 83,138, 6,160, 32,132,193,149,156, 28,126,119, 65, 1, -247, 83, 17, 97,116, 20,207, 82, 76,147, 54,235,234,213,171,171, 1, 8, 75,178,209,114, 74,228,249,219,245,133,113,111, 16,101, -193,182,175,191, 73,208, 3,192,231, 11,179,115, 0,172,120,175,167, 7,127,227,194,138,249,129,234,219,147,190,217,166, 93,229, - 8, 92, 84, 84, 84, 40,195, 48,253, 0,212,245,145,100,215,244, 22,231,112,132,208,246,132, 48, 94, 0, 46,215,174, 93,123, 39, -128,132, 10,214,243, 45, 0, 33,197,191, 79,187,246,251,159, 0,254,116, 18,235, 44, 33,164,230, 7, 31, 77, 24, 39, 22, 10, 95, - 6,199,213,159,245,219, 38,234, 10, 42,237, 18,151,184,228, 63,166,213, 26, 85,210,247, 2, 71, 1,238,198, 38,116, 6,128,176, -176, 48,122,231,206, 29,167, 39,220,146, 86,227,120,228,241,253,151,167,193,201,200,200,104,252, 44, 11,142, 82,250, 51,128,159, - 43, 19,179,136, 72,205, 44,186, 42,154,174, 43, 0,154,253,155,141,202,170,213,194,163, 32,204, 37,202, 43,175,188,242,192,100, - 50, 29, 4, 16, 79, 8,209, 0,208,154, 76,166,125,102,179, 57,149, 16,210,248,235,175,191,182,122,190,159, 69, 41, 61, 95,193, -116,240, 0, 54, 20, 93,149,157,199, 13, 1, 1, 1, 19, 60, 61, 61,107,232,245,122,177, 94,175, 23,217,175, 1,100, 50, 89,186, -163, 88, 26, 21, 89, 35, 18,100,121,106, 84,228, 9, 34,229, 17,136, 45,133,186,171, 17, 30,129,216,226, 40,222,197,139, 23, 99, - 27, 54,108,184,158, 97,152,106,148, 82, 95,128,186, 81,138,116, 74,105,134, 64, 32, 72,188,126,253,122,226,243, 50, 0, 21, 17, -169, 5, 69,151, 75, 92,226, 18,151,252,167,164, 44, 27, 45,129,179, 96,183,111,223, 38,174, 34,117,137, 61,217, 42,235,126, 92, - 92,156, 1,192,169,162,171,248,255,158, 7,240,250,243,158,199,164,164,164,168,202,192, 25, 49,233, 74, 34,128,241,141, 75, 8, -237,252,249, 98,109, 30,128,137,237,187, 57,135,121,233,210,165,135, 0, 30,186, 90,162, 75, 92,226, 18,151,252,123, 82,146, 54, -203,225, 88,135, 46,113,137, 75, 92,226, 18,151,184,196, 37, 46, 41, 93,172,164,170, 36, 63, 90, 4, 64,167, 82,254,201, 97,215, -245, 21, 57,125, 80, 30,190, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,127, 85, 74, 34, 89, 0, 64, 42,112, - 40,201,153,135,118,170,236, 2,119, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209, 73, 86, 9,132,211,181, -117,232, 18,151,184,228,255,183,108,222,188,217,161,160,162,111, 78, 90,241,154, 82,233, 62, 45, 63, 55,231,139, 95, 22, 12,219, -102,253,190,119,239,222,156,171, 20, 93,226, 18,151, 84,200, 24, 62, 52, 52,184, 54,195,241, 45, 41,101, 88,202, 80, 51,201, 45, -252,245,174, 86,251,152,219,129, 42, 85,170,104,132, 12, 94, 39,148, 42, 8,225, 57,158,101, 78,198,198,198, 95,119,130, 1,138, -221,221,221,223, 17,137, 68,157,140, 70, 99, 16,195, 48, 9, 6,131,225, 96, 65, 65,193,146,226,142, 11,255, 77,137,136,136,232, -127,228,200, 17, 77,171, 86,173, 12, 50,153,204, 82, 88, 88, 40,216,187,119,175,228,213, 87, 95,205,190,115,231, 78,133, 78, 36, - 6, 6, 6,118, 88,177, 98, 69,245,206,157, 59,163,102,205,154,186,126,253,250,137, 90,180,104, 33, 26, 49, 98,196,189,196,196, -196,195, 78, 50,233,218,132,144,117,132, 16,150,231,249, 65, 69, 39, 18,159, 5, 99,103, 24,134, 25, 77, 8,233, 73, 41, 13, 37, -132,196, 82, 74,183,241, 60,191,204, 17,239,248, 37,224,189, 1,160, 43,195, 48, 81, 0,192,243,252, 69, 0,187, 41,165, 91,158, - 34,141,207, 12, 83, 46,151, 55, 4,128,130,130,130, 75,149,133, 73, 8,105, 88,212, 73, 43,132, 73, 8, 25, 42,147,201, 70, 2, - 64, 97, 97,225,143,148,210,213, 78, 39,102, 89, 45, 26, 53, 35, 6, 0,112,241,243, 72, 0,128, 83,159, 71,223, 32,206, 60,171, - 36, 60,167, 48,158, 44,131,174, 3, 6, 12,152,251,211, 79, 63,125, 78, 41,253,253, 89,180,125, 63,191,224, 37, 95,125,179, 60, - 96,252, 59,195,191,192,163,136, 16,101, 74, 29, 66, 94, 22,179,108, 55, 35,199, 29,191, 14,108, 2, 32,240,240,240,232, 47, 22, -139,219, 24,141, 70,127,129, 64,144,108, 52, 26,143,229,228,228,252, 76, 41, 53, 63,117, 2, 99,136,187,169, 0,126,132,255, 59, -206, 27,101, 96, 16,201,145,130, 72,154,245, 28,172,246, 25, 60,242,183, 99, 6,176,178, 34,238, 60, 88,150, 29, 31, 16, 16,208, - 51, 55, 55,183,128,101, 89,250, 8,150, 60,250, 3,128, 97, 24,194,243,124, 90,102,102,230,160,255, 71, 90,148,144,162,114,173, - 90,244,149, 16,128, 47,128,203, 0,198, 83, 74,243, 93, 20,232, 31,171,139,226, 26,173, 93,148,210,100, 27,209,178,115,119,223, - 46, 58, 58,250,104,104,104,112,237,222, 61,122,205, 29, 51,122, 44, 97, 89, 6, 87,175, 93, 19,188, 53,104,232, 43, 30, 30, 30, -129, 74,131,161, 22, 8,225, 11,164,210,171,102,179, 41,113,211,207, 63,169, 34, 35, 34, 56,142,227,177,116,217, 15,175,134,134, - 6,127,226, 8,217, 34,132,132,251,249,249,173,155, 60,121,178, 95,183,110,221, 88, 63, 63, 63,196,197,197,105,126,249,229,151, -136,111,191,253,182, 47, 33,100, 80,145, 47, 31,103, 51,219,218,207,131,121, 69, 37, 35, 29,145,199, 33,207,140, 67, 41,133,216, - 79, 41, 61, 94,209, 2, 44, 40, 40,120,183,160,160,160, 89,147, 38, 77,232,202,149, 43,201,144, 33, 67, 40, 33,132, 20, 22, 22, -174, 65, 5, 93, 63, 40, 20,138,239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133, - 66,113, 27, 64,184,147,112,171, 51, 51, 51, 27, 20, 22, 22, 34, 40, 40,104, 37,128, 70,207,160, 17, 17,150,101,183, 5, 6, 6, -210,249,243,231,255,222,160, 65, 3, 95,173, 86,107,153, 56,113, 98,167,211,167, 79,191, 74, 8,233,230, 40,217, 34,132,184, 19, - 66,150,249,249,249,121,125,241,197, 23,119, 26, 55,110,124, 89, 34,145,136,111,223,190, 45,159, 48, 97,194, 7, 12,195,244,165, -148,142,166,212,241, 9,194,138, 25, 24, 24,232, 53,119,238,220,184,168,168,168,171, 34,145, 72,116,251,246,109,197,199, 31,127, - 60,190,162,152, 12,195, 44,109,209,162,133,251,231,159,127,126, 35, 34, 34,226, 20,203,178,226,132,132, 4,102,250,244,233,239, -176, 44,219,135,231,249, 49, 21, 73,167,175,175,175,251,244,233,211,111,180,104,209,226,180, 72, 36, 18,221,188,121,147,153, 60, -121,242, 59,206,164,211,211,211,179,189,167,167,231,242,148,148, 20, 1, 0,248,251,251, 55,173, 81,163,198,183,246, 49, 45,173, -166, 1,102,179, 57, 79,175,215, 15,200,204,204, 44,209, 17,238,144, 41,139, 95, 7,128,111, 77,214,207,143, 94,203,251, 12, 44, -221,225, 72,190,163,252, 9, 5,128,254, 31, 46,232,241,232,245,209,247, 95,233, 0,129, 64,192,175,243, 39,244, 98,178,227, 46, - 99, 8, 33,221, 59,116,232, 48,253,240,225,195, 63,180,107,215,238,227,245,235,215,251,196,199,199,127, 73, 8, 9,126,243,205, - 55,135, 28, 58,116,104, 94,122,122,250,230,202,106,255, 98,145, 68, 66, 24, 2,153, 84,174,118,228,247, 66,134,121,237, 84,247, -238, 35,127,188,121, 51,234,219,152,152,234, 58,127,255,102,239,189,247,158,111,175, 94,189,152,224,224, 96,220,185,115,199,115, -253,250,245,181,126,252,241,199,158,132,144,247, 41,165, 15,158,134,100,233,178, 81,207, 96, 68, 20,165,208,252, 93, 70,200,150, -152,112, 81, 17, 67,174, 60, 7,100,235,179,213,171, 87,127,126,231,206, 29,204,155, 55, 15, 0,150, 56, 57,254, 76,232,217,179, -103,244,214,173, 91,101,155, 54,109,146, 53,105,210, 4,126,126,126, 40, 90, 76,217, 28, 83, 87,175, 94,253,255,213,228,238,233, -233,185,242,222,189,123,237, 21, 10,197, 99,223,199,198,198, 54, 12, 11, 11,203, 1,240,161,179,196,205,219,219,123, 3,207,243, -134,204,204,204,225, 0,160, 82,169,126, 82, 40, 20,238,201,201,201,159, 60,171,133,140,141,153, 20,227, 34, 47,178, 70,171, 68, -135,165,246, 17,179, 25,142,111, 57,102,244, 88,210,175,255,155, 41,119, 98,239,241, 2,161,184,255,222,125,251,228,181,107,215, -102, 12, 75,150,192,146,158, 14,243, 7, 31,188,116,240,224, 65,115,159,254, 3, 11,133, 44, 89, 29, 90,189,154,252,215,159,127, -241,219,186,101,115, 75, 0,215,203,211,100,249,249,249,173, 59,114,228, 72, 96,245,234,213,145,157,157,141,184,184, 56,232,116, - 58,244,237,219, 87,216,178,101,203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195, - 95,125,165,165, 34, 48,184, 6,104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108, - 1,102,100,100, 76,234,217,179,231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226, -130,162, 85, 24,103,255, 90, 60, 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122, -231,230,230, 22, 50, 12, 67, 9, 33, 84,161, 80,200,220,221,221,255,186, 17,115, 43,192, 96, 48,212, 92,176,232,199,111, 58,180, -110,160, 62,112,224, 0,122,245,234, 69,247,239,223, 63, 26,192, 15, 14, 62, 99, 89,207,158, 61, 11,166, 77,155,166,191, 19, 27, - 23,120,227, 86, 44, 81, 72,197,188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236, -205, 55,223, 52,125,244,209, 71,201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25, -134, 89, 58,105,210,164,220,209,163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195, -134, 13,204,200,145, 35,151, 2,232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18, -161,217,215,215,135, 61,119,238,156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26, -251,254,252,243, 79, 38, 52, 52, 84,110,255,155, 66,189, 1, 12, 1, 50, 50, 50,228, 45, 90,180, 88, 11, 32,232, 9, 18, 52, 35, - 6, 67,166, 0,239,190,251,110,178,179,237, 37,202,255, 61, 92, 44,199,253, 45,191,180, 22,237,255,225,130, 30, 2,129,128, 31, - 57,114,100, 74,241,251,122,189,158, 0,232, 22,229, 4,217,234,218,181,235,167,187,118,237,170,177,126,253,250,175, 55,108,216, - 96, 4, 0,169, 84,234,245,203, 47,191,204,235,219,183, 47,250,246,237, 59, 13, 64,165, 17, 45,142,114, 38, 0,144, 72, 37,146, -152,152, 24, 18, 25, 25, 89,166,113,171,137,231,207,255,120,243,102,227,183, 35, 35,155,104,121,190,166,232,213, 87,243, 39, 76, -152,144,145,155,155,139,184,184, 56,152, 76, 38, 12, 25, 50,132,109,215,174, 93, 64,223,190,125, 23, 19, 66,222,160,148,154, 28, -208,234, 44, 8, 12, 12, 28,149,147,147,147,111,213,234,212,170,166, 18,180,105,104,145,212,175,105, 22,139, 88,139,232,245, 15, -120,178,127, 9,209, 69, 86,199, 9, 0, 16, 21, 32, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91, -240,121,254, 3,186,164, 44,141,173, 66,161,232,161,211,233, 54, 23, 77,206,225,175,189,246, 26, 78,159, 62, 13, 0, 45, 1, 44, - 33,132,116, 96, 24,230, 45,158,231, 87, 80, 74,203, 10,229,246, 94,247,238,221, 95,222,186,117,171, 10, 0, 54,111,222, 12,179, -217,140,208,208, 80,136, 68, 34,136,197, 98, 8,133, 66, 91,116,144,255, 79,194, 48,140,228,242,229,203, 8, 8, 8, 40,222, 78, - 0,160, 77, 5, 32,167,197,198,198,182,184,112,225, 2,218,183,111, 63,173, 94,189,122, 93,142, 30, 61,234,151,153,153,137,246, -237,219, 47, 6,240,251,179,206,147, 61, 23,249,207,212, 83, 49, 38,217,238, 17, 51, 99, 88,150,101,112, 47, 54,206,220,190,125, -199,193, 15, 31, 62, 84, 54,107,214,140, 17, 10,133,208, 29, 62, 12,253,185,115, 80, 42,149,232,217,179,167,240,216,177, 99,106, -181, 82, 61,226,254,189,251,121, 44,203,128, 82,166, 92,155, 7,119,119,247,119, 62,249,228, 19,191,176,176, 48, 88, 44, 22,155, - 71,115,139,197,130,248,248,120, 40,149, 74, 12, 26, 52,200, 71, 46,151,191,227,224, 36, 91, 53, 60,212,231,226,145,221,203, 26, - 77, 24,211, 85, 17, 46, 63, 0, 69,252,251, 80,110,126, 27,181,146,246, 98,114,143,102,138,253,223, 77,139,170, 17,224,113,145, - 16, 82,213,217, 66,210,235,245, 39,174, 94,189, 58,226,232,209,163, 60, 0,252,241,199, 31,244,198,141, 27,163,159,102, 21,202, -243, 60,178,179,179,193,243, 60, 91,244,217,250,250,175,170,247,213,106,245,210, 46, 93,186,188,249,224,193, 3,217,158, 61,123, - 60, 31, 62,124,232,117,255,254,125,239,240,240,112,193,188,121,243,118,233, 13, 38,214,204, 81,163,133, 51,231, 37, 95,187, 22, -155,149,154,122,113,213,170, 85,133,132,144,158, 14, 62,227, 13,127,127,127,207, 41, 83,166,128, 8,229, 77, 35,106,213, 11, 99, -133, 50, 55, 70, 40,118, 43, 44,212,115,247,238,221,139,159, 50,101, 74,181, 6, 13, 26, 4, 20,109,175, 57,132, 25, 16, 16,224, -245,209, 71, 31, 65, 32, 81, 53,172,223, 32,170,134, 88,162, 80,177, 66,153,170, 89,179,102,237, 98, 99, 99,147, 38, 79,158,236, -223,164, 73, 19,167, 48,155, 52,105,226, 62,114,228, 72,139, 84,166,106, 81,189,122,104,173,250,117,106, 69,135,135,135,247, 16, - 8, 4,150,244,244,244, 7,131, 6, 13,242,127,253,245,215,125,157,193,244,241,241,113,159, 60,121,178, 37, 56, 36,180,115,231, -151, 95,105, 46,146,169,220, 4, 98,133,166,160, 64,207,221,188,121,243,193,212,169, 83,253, 27, 54,108,232,227, 8,102, 65, 65, -129,208,203,203, 11,117,235,214, 69,237,208, 80,228,228,228, 96,235,214,173, 88,189,122, 53, 86,172, 88,129,159,127,254, 25,141, - 91,189, 2,149, 74,133,164,164, 36,228,230,230, 10,255,233, 54,197, 47,173, 69,191, 53,142,234, 54,118,236,216,164,145, 35, 71, -166,200,100, 50,190,248,229,225,225,193, 13, 24, 48, 32,117,208,199,139,186, 89,183, 22,203,210,100,117,236,216,241,242,238,221, -187,239,174, 95,191, 30,181,107,215, 70,231,206,157,197, 0,240,206, 59,239,136,251,246,237,139,141, 27, 55, 98,243,230,205,215, -195,195,195, 79, 18, 66,186, 59,146,206, 65,131, 6,181,234,211,167,207,241, 62,125,250, 92,234,215,175,223,242,209,163, 71, 63, - 54,115, 37, 39, 37,156, 55, 26,141,104, 16,213, 68, 62,107,229,153, 1,229,225,221, 0,214, 47,143,137, 89,253,197,181,107, 15, -166,213,174,173, 9,185,127,223, 99,205,130, 5, 94,214, 32,221,102,179, 25,241,241,241,112,119,119,199,128, 1, 3,188, 36, 18, -201, 32, 7,218,207,194,238,221,187, 15,125,248,240,161,242,199, 31,127,244,191,116,233, 82, 64,114,114,178,255,161,131,251,188, - 39,126,248,142,202, 77, 41, 22, 39,165, 63, 34,170,247,147,160,136,185,135, 86,148, 66, 99,191,157, 88,161,113, 33,128,200,228, -193,228,219, 26,173, 52,183, 62,218,216,176,223,228,223, 26,186,123, 5, 75, 63, 41, 35,157,245,231,207,159,191,105,199,142, 29, -253, 91,181,106,181,133, 16, 34, 43,225, 55,210,198,141, 27,111,221,184,113,227,208,214,173, 91,159, 32,132,212, 45,117, 21, 25, - 20,212,243,183,223,126,243,180,126,246,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155, - 54,109, 54,117,237,218,213,112,225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194, -194,250, 31, 59,118,204,207,108, 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187, -158, 32, 90, 69,177,133,142, 0, 0, 37, 68,119,249,234, 85, 33, 43, 22, 15,252,105,195, 6,137, 72, 36,194,131, 7, 15,112,253, -250,117, 20, 28, 58,132,194, 83,167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165, -204,223,246, 6,165,157, 72,144, 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119, -176, 88,230, 72,128, 55,217,113,104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64, - 72,126, 12,217, 55,107,176, 95,160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161, - 3,137,140,140, 92, 78, 8, 9, 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246, -245,180,126, 95, 81, 76,171, 54,185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222, - 27, 54,108, 16, 1,192,145, 35, 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15, -107, 23,246,104,217, 32,160, 93,211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220, -125,224,198, 8,132, 2,145, 80, 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,160,160, 32,229,231,159,127,230, - 1,116,117, 20,115,214,172, 89,247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42, -202,205,205, 77, 93,189,122,181,201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91, - 46,145,136, 13, 6, 67,226, 55,223,124, 83,232, 12,230,140, 25, 51,174,223,188,251,208,131, 33,132, 37,132, 17,168, 85, 10, 79, - 79, 55,185,183,183, 82,230, 37, 23,176,226,220,220,220,196,117,235,214, 57,132,105, 50,153, 68,169,169,169,184,113,227, 6,130, -155, 52,193,129, 3, 7, 80,165, 74, 21,244,237,219, 23,111,190,249, 38,100, 50, 25, 58,180,168,135, 41, 83,166,224,238,221,187, - 48,153, 76,146,146, 48,109,118, 82,197, 36, 32, 32,224, 66,121,237,199,254,127,139,167, 51,202,159,208,111,141,163,186,217, 19, -172,210,240, 61, 60, 60,184,146,180, 93,197, 49,187,118,237,250,233,161, 67,135,106,172, 91,183,174,219,160, 65,131, 78,172, 91, -183, 14,205,155, 55,199,141, 27, 55, 80,173, 90, 53,172, 89,179, 6,111,190,249,230,137,197,139, 23,119,187,112,225, 66,131,234, -213,171,127, 82, 30,102,191,126,253,198, 53,108,216,240,112, 74, 74, 74, 11,173, 86, 91,119,235,214,173,195,122,246,236,121,175, -127,255,254, 29,109, 26, 45,179,121,195,174,237, 91, 16,221,173, 23, 34,234,212, 93, 58,228,147,245,245,202,194,164,148,210,107, -192,242,213,201,201,233, 27,244,250,130,190, 66,161, 92,126,230,140,199,230, 31,126,240,178, 63,233,157,152,152,136,215, 95,127, - 93, 40, 18,137, 90,151,149, 78, 66,200,252, 30, 61,122,244,221,186,117,171,187, 85,171,115,234,212, 41, 92,185,114, 5,113,113, -113,200,206,206, 70,199,209,249, 24, 59,239, 17,246,216,121, 20,175,188, 67, 21, 21, 28, 67,108, 34, 15, 33,126,158,106,193,201, - 97,223, 68,188, 51,106,105,109,129,210, 67,136,159, 62,190,141,212, 59,250,205,165,164,147,180,104,209, 98,125,159, 62,125,136, -209,104,132,209,104, 52, 82, 74, 11, 75,194, 14, 12, 12,148,214,175, 95, 31,163, 71,143,102,212,106,245,226,210,210,169,211,233, - 12,187,119,239,198,160, 65,131,240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120, -163, 86,109, 26,212,110,212,188,126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157, - 61,123, 86,210,166, 77, 27, 60,120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120, -240,224, 68,147,201,244,193,179,206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240, -176,130,157, 59,119,202,197, 98, 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213, -212,104, 52,130, 82,138,200,200, 72,244,238,221, 91,246, 70,223,254,105, 36,183,240, 87, 7,152,159,191,117,127,125,216,176, 97, - 79,220,159, 56,113, 34,212,106, 53, 8, 33,126, 14,228,175,207,123, 51,122, 4,185, 87,215,164,210,148,181, 90,176, 82, 64,160, - 2, 4,106, 64,234, 6, 72, 84,128, 88, 14,195,133,195, 90,134,118,142,235,213,122,120,160,147, 91, 61, 8, 8, 8,152,118,248, -240, 97,239, 11, 23, 46,208,220,220, 92, 36, 39, 39,211,185,115,231,122, 7, 4, 4, 76,171,104,165, 36, 37, 37,205,138,142,142, - 78, 29, 60,120,176,219,222,189,123,131, 7, 15, 30,236, 22, 29, 29,157,154,148,148, 52,235,105, 42, 91, 36, 18,177,215,174, 93, -243,152, 61,123,246,155, 0,206,215,173, 91, 55, 51, 40, 40,232,124,145,209,100,153,162, 82,169,108, 36,203,170, 93, 19, 8, 4, - 16, 10,133, 8, 8, 8, 48,106,181, 90,174,117,163, 80, 89,164, 27, 99, 14,144,136,100, 30, 50,105,144, 74,237,214, 44, 51, 51, -243, 50, 33,196,161,248,132,132,144,134, 77,155, 54, 21,114, 84,200,143, 29,216, 33,224,157,161,237,125,190,159, 61,178,202, 55, -179, 70, 5,206,159, 62, 34,114,214,164, 1,237, 25,158,215, 87,171, 86,205,207,106,208,238,128,250, 60,170,113,227,198, 2, 30, - 66,220,184, 21,151,250, 32, 33, 49,239,229,118, 45,108,154,203,218, 13,163, 58,123,123,123,183,137,140,140,108,236,168, 79, 24, -153, 76,214, 48, 34, 34, 66,192,176, 66,226,233,174, 10, 86, 41,101,190,214,123,106,141,230, 37, 15,111,239, 62, 12,165, 57,254, -254,254, 62, 50,153,172,161, 19,121, 23,240, 16,193,215,199,195,205,219, 75,163,236,220,190,101,205, 22, 47,181, 8,175,215,172, -121,139, 58,141, 26,191, 65, 44,150,220,208,208, 80, 31,171,145,124, 89, 98, 48, 24,164, 27, 54,108,192,236,217,179, 81, 63, 36, - 4,129,129,129,240,241,241,193,169, 83,167,112,246,236, 89,184,187,187, 35, 45, 45, 13, 11, 22, 44,192,182,109,219, 96, 50,153, - 84,206,182, 39, 71,200, 86, 89, 98,177, 88,152,226, 4,171, 52,124,153, 76,198, 91,141,228, 75,147,221,187,119,175,183,106,178, -198,143, 31,223,106,209,162, 69, 39, 98, 98, 98,160, 84, 42,113,246,236, 89, 12, 27, 54,236,196,226,197,139, 91,141, 25, 51, 6, -171, 87,175,198,189,123,247, 86,150,133,215,175, 95,191,233, 35, 70,140,248,230,232,209,163,140,175,175, 47,220,221,221,209,163, - 71, 15,172, 92,185, 82, 96,177, 88, 86,245,233,211,231, 82,159, 62,125, 46,113,241,251, 63,221,180, 98,238,169,171,151, 47, 97, -220,123, 31,137,141, 22,243,100, 7, 6, 94, 90,168, 84,230, 89,218,180,209,110, 52,155, 11,250,137, 68,114,183, 75,151, 60,118, -172, 90,101, 35, 91, 83,166, 76,129,155,155, 27,240,200,128, 25,101,104,117, 70,109,219,182,205, 54, 30,122,122,122, 66, 44, 22, - 67, 36, 18, 65, 40, 20,130,101, 89, 28, 92,170,192, 15, 83, 30,241,139, 31,166, 16,236, 95, 66,158, 42, 54,171, 34,136,212,117, -247, 21, 95,122,123, 77,157, 6,117, 59,122,226,212, 47, 41,152, 27,125, 33,225,236,198,244, 9,250,180, 82, 67, 41, 53,154, 56, -113, 98,237,180,180, 52,156, 59,119, 14,231,206,157,155, 93, 74,217,232,183,111,223,254,101,126,126, 62,170, 87,175,142,238,221, -187,183, 33,132, 52, 41,165,223,160,113,227,198,120,253,245,215,209,190,125,123,212,175, 95, 31, 70,147, 69,216,103,224,168,136, -107,247,210, 3,231, 46,152, 43, 63,252,199, 86,230,196,137,163,236,250, 45,251,221, 90,180,127,229, 27,145,202,255, 52,145,123, -249,255,215, 53, 90, 82,169,116,209,209,163, 71,253, 76, 38, 19,174, 94,189,138,247,223,127,255,105, 99,134,218, 20, 32,193,193, -193, 56,114,228, 8, 6, 12, 24,160, 79, 77, 77,253,243,159,202,147, 61, 23,249,175,136,192,142, 65,218,228,225,195,135,217, 30, - 30, 30,129, 17, 17, 17,140,209,104,124,180, 37,177,121, 51,183, 98,213,170, 93,122,189,254, 61, 0,162, 37,223,127,191, 52, 48, - 40,168,253,192, 65,131,136,217,108, 70,116,116,180,120,231,206,157,158,119, 83, 83,203, 13,136, 92,124,181, 49,100,200, 16, 44, - 90,180, 8, 0,240,238,187,239,218, 84,235,196, 1,131, 37,165, 27,186,118,126,173,177, 58, 94,241,173,218,244,146, 57,191,234, - 93,213,105, 69,190,172, 49, 24,177, 0, 82, 22,188,201,108,185,157,214,243,252,221,219,181,106,203,180,153,213, 58,213,105,139, - 21, 7,214,117, 5,176,209,225, 85,157, 92,222, 84,169, 84,226,252,249,243,218,198,141, 27,103, 83, 74,221,102,205,154,229, 37, -151,203,155, 62, 5,251,189, 79, 8,105,211,178,101,203,119, 24,134,233,196,243,252,193,212,212,212, 37,148,210,251, 14, 78,218, - 99, 1,124, 14, 59, 59, 20,163,209, 8,134, 97, 64, 41, 69,191,126,253, 48,101,202,148,218, 87,174, 92,193,225,195,135, 61, 58, -117,234,116,154, 16,146, 13, 96, 56,165,180, 68,173, 89,110,110,110,225,217,179,103,101,135, 15, 31, 6,207,243,240,240,240,128, - 90,173,134, 68, 34, 65,143, 30, 61,148,147, 39, 79,238,184,111,223,190,180,220,170, 85, 88,105,114,162, 78,162, 84,170,224, 23, -216,122, 76,255,183, 98, 40,165,219,156, 24, 28,196, 50,129, 69, 79, 56, 3, 51,255,179,197,140, 92, 36, 34, 82,145, 0, 18,190, - 0,159,126, 57,135,136, 40, 39,128,147,251,243, 34,145, 72,164,146,192,200,138, 89,179,156,160, 82,156,195,177, 44, 43,150,138, - 96, 40,237,190,144, 97, 24,134, 97, 68, 0, 44,142, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,232,116,214, - 19, 18,229, 79,168,157, 22,201, 96, 79,138, 91,183,110,141, 93,135,207, 99,243,142,131,200,120,112, 25, 83, 63, 30,143, 38, 77, -154, 96,231,206,157,101,166,201,106,163, 85,154,118, 57, 32, 32,224, 66, 82, 82, 82,163,210,254,183, 36, 27, 45,126,105, 45, 58, -232,227, 69,221, 74,210, 82,149,136,255,153,219, 35,172, 50,108,180, 8, 33,221, 91,183,110, 61,110,195,134, 13,198, 46, 93,186, -136,251,245,235,135,186,117,235,182, 26, 58,116, 40, 0,160, 83,167, 78, 88,180,104, 81,171,161, 67,135,226,215, 95,127,197,214, -173, 91, 13,237,218,181,251,152, 16,146, 72, 41,221, 93, 18, 38,207,243,175, 47, 91,182,172,184,166, 16, 22,139, 5,102,179,217, -223, 98,177,248, 23,141, 69,248,230,155,197, 25,251,247,237,196,199,159,204,128,143,183, 95, 67, 7,219, 16, 25,242,209, 71, 25, -107, 22, 44,192,130, 95,127,197, 71,213,170,201,215, 93,191,142,253,122, 61, 54, 30, 62,156, 81,244,156,114,109, 51,117, 58, 93, -225,238,221,187,213, 27, 55,110,132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0, -103, 1, 0,213, 2,160,139,172,142, 19,132, 32,155, 50,165,183,225, 82,251,104, 8,169,234, 27, 34, 61, 58,110,117, 93,141,218, - 71,132,189, 75, 30, 98,223,183,241,219,244, 25,248, 26, 22,220, 44,227,176, 70,227,234,213,171, 35, 45, 45, 13,187,119,239,214, - 1,248,170,180,103,240, 60,255,229,247,223,127, 63,241,147, 79, 62,145, 68, 70, 70, 2, 64, 67, 0,231, 74, 36,125, 10, 5, 2, - 3, 3,109,196,178,223,224, 49,161,163, 39,140,145,245,124,165, 61, 4, 2, 47,100,235,204,200,204, 51,195,221, 75,137,143, 39, -244,145, 30,108, 28,216,100,217,226,159,182, 19, 66,154,208,103,233, 44,242, 95, 22, 79, 79,207,134,153,153,153,184,127,255, 62, - 6, 15, 30,156,152,145,145,113, 64,167,211, 13, 75, 74, 74, 2, 0,109, 5, 32,109,100,190, 97,195,134,104,218,180, 41,250,246, -237, 43, 45, 40, 40,232, 19, 26, 26, 26, 8,224,165,103,153,159,226, 92,228, 63, 69,180, 74,156, 16,204,230, 8,195,210,165,208, - 29, 60, 8,241,254,253,216, 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49, - 49, 8,189,114, 5, 66,141,166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171, - 45, 67,185, 25, 16,161,149,159, 79, 53,164,224, 54,120, 1,163,140,139, 40,104,174,212,171,146, 2, 31,250,234,114,152, 64,196, - 60,104,166, 40,204, 52, 54, 39,172, 17,250,140, 2, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186, -245,122,120,120,248, 14, 0, 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205, -154, 69,237,137,150,245,189, 64, 32, 0,165, 20,110,110,110, 16, 10,133,190,167, 78,157,242,109,214,172,217,119, 69, 3, 90, 73, -249,164,117,235,214,197,189,123,247, 32, 16, 8,224,230,230, 6,222, 98,194,140, 9, 99,192,177, 18,193,164, 73,147, 26,246,234, -213,235,234,202,149, 43,205,234, 22, 45, 95,202,204,204,188, 54,110,192,192,171,191,255,254,187,145,231,249,101, 14,230,249,210, -237,219,183,217,160, 0, 95,150, 90, 10,120,133, 8,144, 94,254,134,138,149,126,144, 10, 88, 42, 34, 12, 36, 82,153,219,253,132, -132, 76,158,231,111, 56,130,201,243,252,197,123,247,238,201,124,125, 60, 5, 5,133,198,124,153,144,138,227, 46,158,143,173, 26, -213, 56, 20, 0,244, 23,207, 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,102, 97, 97,225,165,196,196, 68,214,215,215, - 87,240, 32, 62, 97,187, 70,169,240, 86,107, 52,205, 1,192,148,151,115,150, 49, 24,210, 89,161,192, 55, 61, 51, 83, 91, 88, 88, -120,207,209,188,223,189,123, 87,224,239,239,195,238,221,127,104,135,175, 92,226,163, 18, 11,212, 18, 66,136,156, 37,185, 34, 11, -159, 33,149,203,125,238, 39, 36,104, 41,165,165,106, 8,191,200, 30,216,243, 81,125,205,248,213, 14, 27,151, 47, 95,198,158, 19, - 55,160,160, 70, 16,125, 14,246,175,254, 17, 3, 38,125,242,212,118,127,229,145,173, 10,105,179,150,213,186, 80, 12, 31, 73,229, - 24,194, 15, 24, 48, 96,198,250,245,235,109, 6, 40, 55,110,220, 64,135, 14, 29,172,219, 28,232,220,185, 51,154, 53,107,134, 27, - 55,110, 32, 44, 44, 12,135, 15, 31,150,176, 44, 43, 25, 56,112,224, 92, 0,187,203, 75,239,242,229,203, 49,108,216,176,146, 12, -171,239, 2,208, 19,247,200,252, 41, 95,172,245,210,102,102, 32, 45, 61,229,146,163,229, 64, 8,193,144,143, 62,202, 88,102, 52, - 98,195,153, 51, 24,164, 80,200,215,220,185,131,232,102,205, 80,175, 67,135, 12, 71,198, 58,171, 86, 71,175,215, 67, 40, 20, 66, -173, 86,195,211,211, 19, 34,145, 8,172, 48, 0, 2,113, 3, 48, 34, 17,162, 90, 55,192,130, 15, 21, 5,131, 95,197, 98, 66,144, - 45, 17,227,162, 72, 94,178,173, 14, 33,132, 40,170,160, 7,165,200, 45,136,199, 31, 86, 66,162,169, 74,220,148,106,225,254, 17, -223, 69,106,212, 62, 34,236, 89,252, 0,251,191, 75,216,162, 79,193, 84, 0,119,203, 58, 93, 44,145, 72,234,105, 52, 26,196,199, -199,227,225,195,135,215,203, 50,240,167,148, 22,180,104,209, 34, 86, 34,145,212,246,246,246, 6,128,234,165,165,147,231,121,155, - 29,214,186, 13,155,188, 26,182, 9,149,190,220,170, 54,214,238,152,131,183,251, 44,134,144, 37,224, 56, 19,190, 94,244, 26, 56, - 67, 62,250,116, 27, 69,218,118, 10,107,112,112,135,113, 4,128, 31,255,171, 68, 43, 33, 33,225,189, 54,109,218,204,205,203,203, -203,210,233,116, 3, 0,160,122,245,234, 33, 12,195, 72, 0,204, 42,163, 61,133,160,100,183, 16,162, 43, 87,174, 64,165, 82, 33, - 49,241,239,152,244,241,241,241,224,121,222, 0,151,148,213, 71,163, 40,165, 23, 9, 33,254, 0,162, 97,231,222,129, 41, 82,213, -181,221,181,107, 23,221,181,107, 87, 91,219,228, 69, 41,111,209,106, 65, 13,143,202, 86, 40, 20, 82, 0,246, 39,154,228, 26,141, -134, 8,131,130, 64, 36,143, 76, 63,168,221,158,240,211,138,217,236,152,107, 25,158, 3, 11, 98, 2,181, 83, 98,232,164, 4,115, -188, 58,226, 61,241, 52,164,136, 53,246, 61, 27,176, 80,112,224, 89, 39,147, 67,117, 58, 29, 44, 22,139,123,141, 26, 53,118, 89, - 44, 22,119,235,214,192,191, 85,169, 28,199,197,178, 44,139,119,222,121, 7, 86,237,143,209,104, 68, 74, 74, 10, 12, 6, 3,140, - 70, 35,238,221,187,135,156,156, 28, 24,141, 70, 92,187,118, 13,213,171, 87, 7,203,178,254,101, 52, 20, 74, 41, 69,112,112, 48, -170, 86,173, 10,150, 80,172,152, 63, 29,159,190, 63, 6,111, 86,231,177,106,201,215,104,215,174, 93,173,106,213,170,181, 16, 8, - 4,156,159,159,159,104,235,214,173,219, 57,142,235,225,132, 31,173,221, 83,166, 76,169, 90,167, 78, 29, 31,141, 90,101,150,136, - 89,136,205, 58, 42, 49,100, 82, 65, 65, 6,130,131, 67, 44,144,201,195, 6, 13, 26,196, 57, 50, 57, 90, 49, 63,252,240, 67,255, -200,200, 72, 55,119,141, 74, 39, 22,178,105, 34,208,140,156,203,231, 78, 3,128,216,219, 71, 15,169,188,246,224,193,131, 45,206, - 96, 78,155, 54,173,186,183,183,183,134, 1,205,227, 76,166,191,247,219, 13,198, 76, 34, 20, 22, 66, 36,110,252,238,187,239, 18, -103, 48, 39, 78,156, 88,173,118,237,218, 26,141, 90,145, 47, 16,178,201, 34,158, 79,150,130, 79, 17, 26, 77, 89, 82,111,175, 2, -200,149, 81,131, 6, 13, 42, 21,211,170,205,154, 60,121,114,124, 49,226, 13,173, 86, 11,125,202, 85,136, 18, 99,208, 64, 41, 68, - 19,111,119, 72, 36, 18,219,209,247,210,154,107,105, 54, 90, 37,145, 45, 71,255,183,241,204, 50,182, 0,151,213,186, 80,220,111, - 86, 17,126,153,253,233,167,159,126,250,164,125,251,246,105,157, 59,119, 54,238,218,181, 11,132, 16, 28, 62,124, 24,137,137,137, -232,220,185, 51, 40,165,214, 83,109,184,116,233, 18, 58,117,234,100,108,211,166, 77,226, 79, 63,253,244,185, 35,149, 51,108,216, - 48,152,205,102,228,231,231, 67,171,213, 98,231,206,157,104,208,160, 1,149,203,229,189,216,224, 87,230,244, 25,241,201, 75,117, -235, 55,196,119,139, 23, 24,197, 2,225, 23, 78, 14,194, 24,252,225,135, 25, 57, 81, 81,218,117, 58, 93,193, 16,181, 90, 94, 35, - 62,222,227,252,190,125, 94, 38,147,201, 33, 12,171, 86, 39, 40, 40,200, 70,178, 68, 34, 17, 4, 98,111,176,138,122, 16,123,118, -134,220,175, 23,254,184, 40, 49,184, 41,176, 77,165,196, 94,133, 6,165,186,118,144, 7, 99,206, 75,253,252,183,182,124,211,255, -144,188, 10, 86, 18, 66, 24, 66, 8, 67, 5,100,235,208,175,195,107,120, 87,149,225,207, 77, 41,216,255, 93,194,111,250, 20, 76, - 7,112,167,188,126,110, 50,153,244, 28,199,129, 97, 24, 8, 4, 2,123, 27,209,147,191,253,246, 27,206,159, 63, 15, 0, 54,183, - 61,121,121,121, 28,203,178,144, 74,165, 0,160, 44, 99,188,131, 80, 40,132, 80, 40,196,145,211,199, 60,223,124,227, 53,114,234, -175, 3,104,217,160, 63, 50,243, 77, 72,205, 49, 33,187, 0,168,211,100, 42,234,118,218,134,203,247,242,208,176,126, 93,150, 21, - 43, 6,191,224,147,119,136,143,143,207, 41, 47, 47,175,195,132,144, 16, 66, 72,136, 90,173, 62, 25, 16, 16, 16, 67, 8,233, 78, - 41,253, 61, 41, 41, 41, 50, 63, 63,191, 37,165,244, 1,165,244, 65, 70, 70, 70,135,180,180,180,151,202, 58,172,229,233,233,185, - 50, 55, 55,119, 60,199,113,221,138,174, 87, 57,142,107,120,251,246,237,218, 13, 27, 54,188, 30, 26, 26,122, 41, 52, 52,116, 79, -104,104,232,246,208,208,208,237,237,219,183, 95,100,117,247,240, 44,165, 36, 46,242, 2,137,213,212, 37,186,200,213, 67,180,109, -206, 40,122, 61, 82,220, 0,205, 34,145, 92,179,140, 27, 7,205,246,237, 16,222,190,141,161,131, 7,171,229,114,249, 98, 66, 72, - 35, 66, 72, 75,165, 82,249,221,244,233,211, 85, 94,243,230, 33,224,216, 49,196,237,220, 9,179, 80,120,174, 34,169, 43, 44, 44, -132, 64, 32,176,105, 98, 20, 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115, -166,127,236, 84,159,157,185,213,195,238,232, 68, 97, 51,189,155,251, 44, 14,105,117, 70, 71, 4,249, 98,141, 20, 15, 31,198,131, - 3,239,212,126,179, 94,175,207,209,233,116,104,216,176,161,231,249,243,231,107, 52,104,208,192,163,232,251,179, 79,217,137, 90, - 4, 6, 6,110, 10, 10, 10,186, 31, 24, 24,184,137, 16,210,194,137,127, 95,121,252,248,113,176, 44,139,233,211,167, 35, 47, 47, - 15, 38,147, 9,153,153,153,120,248,240, 33,140, 70, 35, 18, 18, 18,112,243,230, 77, 24,141, 70,196,197,197,193, 96, 40,127, 65, -194,243, 60,212,106, 53,244,133,249,248, 97,206,167,152, 54,121, 2,114,238, 94, 64, 66, 82, 42, 52,110, 10,188,247,222,123,172, -187,187, 59,207,113, 92, 85,139,197,210,137,227,184,165,142, 18,206, 34,167,133, 39,130,131,131,235,206,159, 63,191,246,167,115, -150,138,212,130,124, 42, 81, 73,121,177, 74, 66,197,181,154, 99,216,212,197,162,111, 22,126,117,235,207, 63,255, 76,116,196,121, -167, 21, 51, 42, 42, 42, 60, 49, 49,177, 65,100,100,100,132, 87, 72, 53,137,196, 63, 48, 91,228, 95, 37,151, 26,244,103, 72, 96, -149,214, 75,151, 46,189,122,242,228,201, 36,103, 48, 21, 10, 69,173,181,107,215,214,245,245,245,173, 43,148,201,164, 5, 57, 57, - 27, 45, 5,186, 77,172,198, 93,202,168, 53,175,110,219,182,237,194,150, 45, 91, 82,156,193, 12, 11, 11,139,156, 51,103, 78,157, -122,245,234,213,241,171, 94, 67, 34, 11, 12,206,148, 6,133,100,202,234, 53,144, 32,168,106,151,239,190,251,238,210,159,127,254, -233, 16, 38,203,178, 22,134, 97, 32, 20, 10, 33,151,203,177,119,239, 94,140, 27,209, 31,193,129,158,136,136,140, 68,199,183,199, - 99,203,150, 45, 54, 27, 30,150,101, 75,157,209,215,204,123,111, 71,148, 63,185,128,101,181, 46, 96, 89,173, 11, 81,254,228, 66, -169,100,171,232,126, 73,191,113,104, 52, 42,197, 14,171, 60,178, 69, 41,221,125,228,200,145, 47,135, 12, 25, 34,238,218,181, 43, -206,156, 57,131, 97,195,134,157,216,186,117, 43, 0,224,204,153, 51,248,224,131, 15, 78, 28, 58,116, 8, 99,198,140, 65,135, 14, - 29,196,199,143, 31,255,206, 17,223, 63, 22,139, 5,171, 86,173,130,197, 98,129, 82,169,132,135,135, 7, 94,123,237, 53, 92,189, -122,117,204,234,213,171, 99, 88,161,240,173,232,110,111, 96,215,246,173,184,121,237,234,152, 53,115, 7, 58,237, 20,152, 97, 24, -116, 29, 60, 56, 35,163, 78, 29,237,154,220,220,130,225,238,238,242,200,148, 20,143, 63, 54,109,242,114,160,253, 16,142,227,108, -228,202, 74, 58,172,151, 64,236, 13,129,162, 46, 4,170, 38,184,124, 71,100, 22, 54,165, 23, 69,141,233,141,178,252,103, 9,197, -204,176, 94,159, 86, 71,175, 79,171,163,251,164,106, 67,229, 85,176, 66, 81, 5, 99,187,190, 95,181,125,104, 19, 55,228,166,153, -176,243,235,184, 7,250, 76,204, 3,112,211,145,126,206,243,252,245,196,196, 68,136,197, 98, 84,169, 82, 37,156, 16, 98,181, 11, - 92, 57,114,228,200,119,103,206,156, 57, 1,192,204,162, 60, 41,219,183,111, 95, 39, 63, 63, 31,183,111,223, 6,128,243,101,212, -189,237,148,161, 54, 55, 78, 82, 45,160, 30, 26,212, 26, 13,119,247,250, 72,212, 26,145,164, 53, 98,197, 15, 61,112,225,248,108, -156,223, 63, 8, 15, 82, 82, 32,243,235, 9,206, 98,168,251,130, 43, 74,166,197,198,198,182,216,180,105, 83,123, 0,211,234,213, -171,247,231,195,135, 15, 95, 58,118,236, 88, 68, 80, 80,208,226,138,130, 90,221, 66,196,197,197, 61,118, 21,185,133, 48, 82, 74, -163, 40,165, 93, 41,165,221,139,174, 15,158,202,215,155,227,114,228, 69, 53,134, 7,176,171,248,105,195,226, 68,203,222, 81, 24, -106,120,120,168,204,102, 83,194,129, 3, 7, 76, 12,195, 64, 46,151, 99,200,176, 97,204, 15,223,127,223,186,127,139, 22,135, 71, -189,252,242,158,195,135, 14, 69, 53,107,214, 12,148, 82, 48, 12,131, 95,127,253,181, 80,175, 47,204,172, 82,165,138,198,145, 65, -195,190, 3,229,230,230,218,136, 86, 78, 78, 14,124,125,125, 29,222, 58,212,229,226,224,161,189, 23,178, 40,247,246,195,174,119, - 22,154,190, 72,233,209, 44,155,231, 4, 57,156, 25, 57,133, 20,121,122, 8,206, 48, 30,205,134,132,245, 52,221,235,212,236,230, -209,152, 83,153,122, 78,239,212,105,137,180,180,180, 79,251,244,233,147,233,239,239, 79,212,106, 53, 2, 3, 3,153,238,221,187, -103,196,199,199,207,172,104,141,120,121,121,189,217,190,125,251, 29,137,137,137,189,143, 30, 61, 90,245,216,177, 99,189,219,183, -111,191,195,203,203,235, 77, 7, 33, 54,126,242,201, 39, 58,177, 88,140,230,205,155, 35, 47, 47, 15, 69,167,124,202,188,202,155, - 8, 0, 64, 36, 18, 97,217,252,207, 49,109,242, 4,104, 99,206,224,242,137, 3, 56,146, 66, 48,117,206, 87, 16,137, 68, 21,242, -245, 21,230,163,168, 87, 47, 64,117,227,131, 97,253,146,166, 76,158,172,186,116,233,146,240,221,247, 63,160,113,201, 90,136,187, - 46, 96,209,246, 83,230, 47,157, 55,162, 95,237,136,233,211, 62,170, 71, 41, 29, 93, 30,102,109, 31, 69,189,186, 1,170,235, 31, -141,234, 31,251,254,251,239,203,190,248,226, 11,125,139, 22, 45, 10, 83, 83, 83,101, 10,119,143, 72,129,155,166,110, 92,114,138, -178, 69,139, 22,247,222,126,251,237,108,103, 49,167, 78,157, 42,223,183,111,159,160, 79,159, 62,150,172,172, 44,165, 80, 38,107, - 72, 36,210,166,233, 89, 89,110,189,251,244,185,211,187,119,239, 2,158,231,199, 56,131,249,217,103,159,201,111,222,188, 41,104, -209,162,133, 57, 37, 37, 69,165,240,244,106,192,106, 60,154,220, 79, 78, 85, 55,109,214,236,238,187,239,190,171, 43, 43,157,246, - 36, 69,165, 82, 37,182,108,217, 18, 95,127,253, 53,190,249,230, 27,116,233,210, 5, 87,175, 93, 69,244,187, 19, 80,123,236, 7, -216,126,234, 52, 18, 19, 19, 49,107,214, 44, 52,104,208, 0, 34,145,232,102,137,160,163,111,144,139,201,148, 92, 76,166, 4,163, -111, 16,235,231, 82,201,208,204, 28, 60,246,251, 18,228,252,103, 37,107,186,162,252,201,133,178,236,176,202, 35, 91,189,123,247, - 30,103,117,225, 48,124,248,240, 19,139, 23, 47,110, 53,124,248,163,133,118,243,230,205, 49,123,246,236, 86, 83,167, 78, 61, 49, -103,206, 28,116,236,216, 17,161,161,161,229, 30,124,225, 56, 14, 22,139, 5,253,251,247,135,197, 98, 65,122,122, 58,110,221,186, -133,229,203,151,131, 82, 42, 5, 0,255,128,160,198, 98,177, 24,127, 93, 60, 87, 48,109,120,179,159,156, 88, 76, 17,251, 69, 76, -126,126, 62,122,143, 29,155,145, 80,179,166,118,105, 70, 70,193, 8,119,119,121,181, 7, 15, 60, 84, 70, 99, 96, 89, 54,169,132, - 16,240, 60,111, 35, 86, 86,194, 85,252, 42,154, 40, 29, 18, 83, 1,191,251,216,250, 36, 0, 64,155,129, 1,232, 62,169,218, 80, -255, 48,249,183,173, 7, 60, 82,122,111,153, 29, 75,243,146,184, 47, 96,198,117, 39, 52,214,103,206,156, 57, 3,141, 70,131, 62, -125,250, 72, 24,134,153, 87, 52,206,235, 41,165, 75, 40,165, 11,173, 88, 18,137,100,193,160, 65,131,152,236,236,108, 92,190,124, - 25, 0, 14,149, 54, 46, 81, 74,109,121,207,215, 18,112,188, 24, 39, 47,238,197,254, 99,155,113, 63, 49, 29, 15,210,244,128,192, - 13,122, 93, 2, 76,133,137, 48,102, 95, 68,174, 65,254, 95,216,145,122, 38,238, 22,158,129, 91,136,202,212,106,189,144, 54,117, -148,210,100,251,211,134,246, 14, 76, 75,114, 88, 10,170,150,245,219,252,221, 15,110,125,250, 15,212, 53,104,208,192, 61, 48, 48, - 16,132, 16,244,232,217,147,180, 63,122, 84, 37, 12, 8,128,103,163, 70,182,237,136,131, 7, 14, 96,239,222,189,186, 93,191,109, - 11, 28, 54, 98,196,235, 0,214,150, 49, 96, 8,106,212,168, 97,123,110,114,114, 50, 36, 18,137,205, 38, 34, 55, 55, 23,222,222, -222, 72, 78, 78,134,131,138,146,117, 83, 38,159,158,156,214,236,211,234,205, 84, 66,178, 71,151, 2,142, 82, 8, 9, 7, 20, 82, -152, 57,192, 96,166,104, 92,141,245,216, 95,104,113,223,121,102,235, 61, 0,235,156,212,104,253, 65, 8, 25,205,243,252,102, 0, -204,209,163, 71,249,235,215,175,143,115,212,112,189, 68,181,189, 92, 62,233,240,225,195, 30,147, 38, 77,202,218,185,115,103,206, -107,175,189,230,182,124,249,114,143, 14, 29, 58, 76, 2,240,139, 3,149, 90, 72, 8, 89, 27, 31, 31, 63,174, 73,147, 38,208,106, -181, 48,153, 76,184,112,225, 2,194,194,194,112,254,252,121,132,135,135,227,220,185,115,136,136,136, 0,199,113,208,235,245,224, -121,158, 43,111, 48,215,102,164, 3,153, 15,145,116,102, 15,110, 93,185,128,195, 73, 4, 75,126,217,129, 42, 85,171, 87,200, 79, - 77,132,175,162, 78,160,143,231,254, 47,102,124,230, 19,247,199,175,216,186,106, 9,127,100,207,158,218, 98, 21, 70,183,237, 63, -254, 13,163, 25, 33, 0,196, 47, 53,107,130,174,238, 55, 57,121, 85,164, 28,186, 86,182, 39,235, 8, 95, 69,157, 0,111,207,125, -255,155, 55, 83,117,119,239, 26,108, 92,246, 53,221,178,254,231, 6,122,160, 89,157, 58,117,186, 50, 12,163, 1,160, 47,178,243, -114, 40,180, 77, 73,152, 7,119,236,136,210, 3,205,126,255,253,247,174,114,185,220, 15,128,185,160,160, 32,246,105, 48, 15,237, -220, 25,101, 77, 39, 33,196, 7,128,137, 82,122, 23, 78,134,224,233,219,183,239,236, 15, 62,248, 96, 50,199,113,222,214,239,204, -102, 51,187, 96,193, 2, 1,207,243, 44,165,212,196, 48,140,105,223,190,125,156,197, 98, 73,210,235,245, 99,159,102, 32,121,227, -141, 55,112,250,244,233, 25,120,116, 8,195, 81,109,245, 99,118, 90,101,109, 83, 58,130,127,244,232,209, 89,111,189,245,214,148, - 95,126,249,229,214,226,197,139,187,141, 25, 51, 6,191,254,250, 43,106,214,172,137,191,254,250, 11,159,126,250, 41, 0,180,154, - 58,117,234,246,149, 43, 87,134,198,197,197, 45, 40, 47,141,102,179, 25, 22,139, 5, 63,255,252, 51,122,244,232, 1,111,111,111, - 4, 4, 4,128, 16,242,199,136, 17, 35,190, 7, 0,150,176, 34, 0, 48,232, 13,134,200,200, 38, 14,107,112, 67, 67, 67,109, 99, - 93, 74, 74,138,237,164,224, 43,111,189,149,177,226,139, 47,240, 83, 97, 33, 70,184,187,203, 19,130,130,252,183,223,189, 59,138, - 16,178,188, 52,205,145, 85,171, 83, 30,201,114, 84,195, 92,152,140, 79,126,155,123,223, 15, 64,151, 54, 3, 3,208,102, 96, 0, -154,116,247, 33, 12, 75,112,101,127, 38,174, 30,212,110, 49,231,226, 15,103,194,229, 80, 74,175,123,122,122,110,111,219,182,109, -183, 90,181,106, 97,228,200,145,111,139, 68, 34,145,217,108,126,223,234,230,129, 16,226,198, 48,204,204,213,171, 87,143,242,240, -240,192,241,227,199,113,236,216,177, 63, 40,165, 15, 75, 27,151, 0,216,124,102, 85, 9, 14,215,223,140,203,151,167, 37,158,196, -137,227,191,161,102,131,241,144,249,189, 14,143,200, 57, 48,197,124, 3, 99,230,126,120, 4,191,134,132,184,187, 96, 5,146,171, -248,143,136,213,221,194,213,171, 87, 75,116,183,224,172,212,171, 87,175,213,177, 99,199, 36,122,189, 30, 71,142, 28, 65,211,166, -182,179, 93,255,106,252, 78,123, 46,242, 34, 73, 89, 65,165, 75,156, 53, 9, 79,132, 17,225,225,156,136,193,234, 30,175,191, 94, -112,233,210, 37,219,170, 79,127,246, 44,116,123,247,130,227, 56, 80, 74,113,236,232, 81, 12, 26, 56, 48, 95,200,146, 21,213,170, - 85,165,132,254,237,187,165,164,163,244, 34,145,168, 79,159, 62,125,108,131, 79,124,124, 60, 20, 10, 5,196, 98, 49,120,158,135, -197, 98, 1,203,178,112,115,115,131,197, 98, 49,150,144,153, 78,197, 50, 98,230,180,186,222, 43,163, 7, 36, 7,228,155,232,104, - 77, 53,132,136,100,182,206,233,167, 38,232,214, 64, 8, 47, 65, 26, 61,180,224,229, 36,222,144,217,187,120,108,177,242,142,252, - 19, 66,194,235,215,175,255,253,160, 65,131, 24, 0,232,212,169, 19, 83,191,126,253,111, 9, 33,225,101,252, 79,153,152, 82,169, - 84, 2, 0, 59,118,236,208,222,186,117,171,203,142, 29, 59,180,246,223, 59,136,185,124,254,252,249,144,203,229,176, 88, 44, 48, - 26,141, 54,251, 44,251, 87,147,201, 4, 47, 47, 47,236,218,181, 11, 28,199,237, 42, 47,157,193, 33, 85, 65,188,107, 96,237,142, -195, 56,150, 33,114,154,100,217, 99,214,244, 87, 70,248,121,121, 30,248,223,220, 89,222, 89,119, 46, 32, 33, 33,129,238,219,187, -235,207, 66, 74, 19,179,115,233,180,172,124, 26, 81, 96,160,210,166,161,120,120, 96,217,199,116,106, 27,152, 81,194,169, 65,123, -204, 58,254,202,136, 64,111,207,125, 95,253,111,174, 42,251,206, 5, 36,167,164, 96,247,174, 29,151, 10, 41, 77,164,148,110,161, -148, 14,229, 56,174, 46,199,113,117, 41,165, 67, 75, 35, 47,206, 98,234,116,186,122, 58,157,174, 94,101, 98,242, 60, 95,143,231, -121,135, 49,237,137,202,194,133, 11, 99,146,147,147, 7,165,165,165,117,182, 94, 89, 89, 89,157,242,243,243,219, 21, 20, 20,180, - 46, 92, 88,213, 77,167,211,249,228,229,229,249, 23, 22, 22, 54,166,148, 94,112,180,125,218,139,189,215,233,164,164,164,233, 73, - 73, 73,164,188,116, 50, 99,110,144, 13, 95,125,244,219,178,101,203,252,159, 6,191,120, 58,211,211,211, 55,255,252,243,207, 13, -171, 87,175, 30, 58,116,232, 80, 44, 93,186, 20,139, 23, 47, 54, 0,192,202,149, 43, 13,118,154,172,224,251,247,239, 55, 41,105, -219,240,177,116, 50,204,186, 87, 94,121,133, 30, 59,118, 12, 61,122,244,176, 57, 18,253,241,199, 31, 97,177, 88,114, 59,118,236, -200, 3, 64,161,190, 32,151,242, 20, 70, 83,201,251,239, 37,149,167, 88, 44,126,213,222, 95,160,213, 25,179, 88, 44, 6,165, 20, - 17,173, 90,101,100, 55,104,160, 93,149,147, 83, 48,189, 94, 61,245,168,200,200,161,181,128,129, 37, 97, 18, 66, 30,211,234, 20, -191, 28,213,100,217, 99, 82, 74,211, 10,147, 48,242,183,185,247,247, 90, 53, 91, 82,165, 0,250, 60, 11,182,125,113, 63, 93,159, -142, 31, 1, 60,116, 6, 19, 0,180, 90,237,187, 95,124,241,133,193,221,221, 29,111,188,241, 6,230,204,153, 51,162, 85,171, 86, - 57,190,190,190,167,195,194,194,174,244,235,215, 47,249,194,133, 11,239,182,111,223, 30,183,111,223,198, 87, 95,125,149,157,149, -149, 53,160, 44, 76, 66,136, 77,147,215, 61,186,147,246,135,111,191,230, 59,182, 29, 7,185, 76, 13,179, 48, 24,218,124, 51,178, -116, 20, 70, 73, 51,136, 69, 18,116,110, 81, 7,167,247,173, 41,224,140,186,181, 21,105,243, 78, 76,174,207, 26,179, 82,220, 45, - 20, 79,103,101,184,133,120, 22,121,127,145,165, 4, 63, 90,143,107,180,172, 71, 42,173,175,132,240, 28,199,241,168, 86,189,154, - 42,238,254,195, 37,125,251,246, 25,222,181,107,180, 60, 58, 58, 90, 90, 39,230,209,214,197,142, 29, 59,176,117,235,214,130,253, -251,247,231, 74,132,236,202,224, 42,193,190, 28,199,131, 16,190, 76, 54,172, 82,169,222,255,228,147, 79,100, 57, 57, 57, 88,188, -120, 49,223,176, 97, 67, 70,161, 80,192,100, 50, 97,229,202,149,230, 58,117,234, 8, 25,134, 65, 78, 78, 14, 24,134,185,233, 96, - 6, 47, 19, 66, 58,127,223,190,215,214, 38,239, 12,243,172,221,254, 37,247,118,193,129, 48, 55,162, 72,138,191,143, 91,135,246, -103, 93,219,183, 40, 19,250,212, 94,148,210,235,206, 22, 96, 64, 64,192,231,251,247,239,247,121,247,221,119,169, 94,175, 39, 15, - 31, 62,164,115,231,206,245, 25, 57,114,228,231, 0,222,172,104,127,202,206,206, 6, 33,132, 47,106,180,214, 85, 63,113,162, 98, -175, 18, 66,126,239,217,179,103,247,142, 29, 59, 34, 38, 38,198,182, 69,104, 79,180,172,167, 15,231,205,155,151, 13, 96, 74,121, -184, 66,161, 16,139,215,110, 70,118, 86, 6,124,125, 3, 32,149,201, 42,236,113, 89,204, 48,211,191,156,245,153, 79,198,141,211, -228,234,159,135,249, 77,151, 83,211, 44, 28, 45,217,227,127, 94, 18, 45, 98,255,101,175,102, 24,118,250,151,115,103,186, 89,183, - 53,127,185,152,156, 75, 56,250,238, 83,245,146, 23, 5,243, 31,150,128,128, 0, 36, 37, 37,145,128,128, 0,106,221,214, 43,141, -104, 61,209,192, 31,109,151,145,178,182, 13, 43,138,127,239,222,189,185,141, 26, 53,250,232,246,237,219,155,106,215,174, 61, 6, - 64, 21,131,193,144, 61,117,234,212,255,173, 92,185,114,184, 35,154, 44, 0,248,245,215, 95, 23, 13, 27, 54,108,239,235,175,191, -254, 49,207,243,245,237, 38,145,123, 62, 62, 62,182, 45,220,244,212,148,201,163,135,247,159,156,159,159,229,176,159, 59,165, 82, - 57,106,234,212,169, 82,157, 78,135,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92, -198,194,148, 20,204, 62,126, 92, 55,185,110,221,134,171,110,221,106, 92,146,198,221,186,112, 44, 73,147,101, 53,187,168,224,228, -144, 68, 8, 25,249,219,220,251, 63, 2,232,242, 82, 95, 63,252, 62,255, 62,178,226,140,255,131, 5,119, 29, 9, 11, 84, 2,102, - 2, 33,164,115,106,106,234,239,159,125,246,153, 91,227,198,141, 81,183,110, 93,161, 82,169,108,102,117, 23,147,147,147,131,131, - 7, 15, 98,233,210,165,198,107,215,174,245,164,148,150,186, 93,197,113, 92, 90,120,120,184,181, 28, 40, 33, 36, 51,215, 64,220, - 54,214,106,166, 28, 58,122, 19, 57,113,238, 20,146, 76, 60, 12,102, 30,213,170, 71,161, 93,151,133,216,190,231, 10,151, 20,119, -253,186,185, 48,107,197, 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210, -101, 63,188,250,235,207,191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142, - 25,243,167,201, 80,168,221,249,251,239, 33,213,170, 85,109, 80, 20, 84,154,242, 44,115,178,172, 7,230,231,231,235,142, 31, 63, - 94, 48,101,202, 20, 18, 31, 31,191,193,215,215,183,223,158, 61,123,148,189,122,245, 42,140,137,137,217,226,231,231,215,189,125, -251,246,170,143, 62,250,200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194, - 32, 4,120,243, 73,152,242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168, -215,235, 69,115,230,204,241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221, -186,117,251,125,227,198,141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140, - 25, 51,144,147,147, 51,161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111, -238, 92,133,180,204, 12,126,227, 95,169,169, 5, 38,174,243,237, 52,221,181,226,191, 43,224,160,107, 63,244,189, 68, 0, 48,240, - 40, 51,226,188, 66,140,208, 91,187,126, 68,106, 90, 6,126,189,152,156,173, 51,241, 93,110,150,128,233, 84, 58, 95, 16,204,168, - 25, 49,232,253,158,227,191,189, 56,186,226,207,114,148, 80,149, 38, 23,147, 41,225,151,214,162, 88,182,170, 68, 31, 89, 79,131, - 95,164,169,250,189,168,221,198,247,239,223,127,242,253,251,247,103, 21,249,203, 90,230, 12,214,170, 85,171,110, 3, 24, 86,214, -111,126, 89, 48,108, 27,128,109,206,224,230,229,229,233, 47, 92,184,160,255,232,163,143, 72,124,124,252, 30, 63, 63,191, 87,246, -238,221, 43,239,213,171,151,225,234,213,171,135, 2, 2, 2,218,116,234,212, 73,185,251,204,153,196,130,187,119,119,238,188,127, - 63,200,204,243, 59,203,234,159,149, 73,178,138,147,173,109,179,239,127,249,251,151,247, 59,241, 6,108, 49,102,225, 79, 0, 9, - 79,129,121,140, 16, 82,123,224,192,129, 27, 95,123,237,181,151,106,215,174,141, 42, 85,170,224,214,173, 91, 72, 79, 79,199,229, -203,151,177, 99,199,142, 29,122,189,190,220,128,218,153,153,153, 79,132, 39, 34, 50,207,128, 53,223, 77,223,113,238, 68,211,240, -214,209, 67,100,117, 3,120, 24, 77, 20,241, 15,238, 98,198,180, 21, 5,201, 15,110, 95, 55, 89, 76, 61,255, 3, 62,180,142,197, -198,198, 70,177, 44, 91,169,238, 22, 42,234, 22,194, 37,149, 72,180, 98, 99,227,175,135,134, 6,127,178,117,203,230,150,148, 50, - 44, 37, 68,167,209,184,239,120,248,240, 97,182,253,239,106,120,120,168,134,141, 28,214,143,240, 68, 72, 8,207,241, 44,115, 50, - 54, 54,190, 76,141,145,209,104, 28,221,175, 95,191,197,114,185,124,170, 86,171,189,164,209,104,254,106,208,160,193, 44, 74,233, -180,194,194,194,223, 85, 42,213,153,151, 94,122,105, 78, 72, 72,200, 34, 74,233,121, 39, 59,183, 5,143,236,195,214, 86,178, 42, -119, 38,165,212, 77, 32, 16,228, 92,185,114,229,231,136,136,136,254,148, 82, 55, 66, 72, 78, 69, 49,245,122,253,187,217,217,217, - 94,163, 70,141, 50, 47, 95,190, 60, 98,200,144, 33,147,175, 93,187, 38,212,235,245,177, 78,230,217, 64, 8,233,222,183,111,223, - 21, 66,161,176, 35,195, 48,132,231,121,106,119, 31,148, 82,112, 28,183,189,188,114,225, 56, 46,177, 86,173, 90,143,173,160, 75, -178,207, 53,155,205,137, 14, 79, 54, 70,110,252, 15,135,175,205,211,155, 41,181,240,116,244,205, 84, 93,137, 71,206,206,222,164, -117, 28,198,212,243,227, 23,239,187, 62,207, 96,230,121, 11, 79,199,148,134,233,212,164,248,130, 96, 2,192,100,205,250,109, 88, -182,222,102, 24,111,221, 78, 44,254,185, 50,197,170,117,130,147, 30,155,153, 49,143,140,229,203, 35,124, 21,197, 47, 78,186,156, -149,222,189,123, 63, 51,123, 20,147,201,244,105,183,110,221,102,105, 52,154,255,165,167,167, 95,210,104, 52,215, 35, 35, 35,199, -243, 60,191,168,160,160, 96,135, 74,165,122,189, 73,147, 38, 19,170, 86,173,186, 38,142,210, 53,229,245, 77,171, 86, 7, 0,181, -246, 75, 43,145,176, 39, 20,102,179, 57,161, 2,101,152, 68, 8,249, 16, 64, 53, 60,114,192,123,135, 82,250, 84,101, 67, 41, 77, - 2,208,146, 16, 82, 29, 64, 71, 60,242,223,151, 13,224, 30,128,243,148,210,203, 21,198, 46,204, 76, 34,132, 52,186,113,241,248, -152, 91,215, 47,190,101, 61, 93,200,178,226,171,156,169, 96,173,185, 48,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1, -164,226,111, 71,198,113, 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,187,247, 44,219, 34, 33,164, - 83,101,199, 67,114, 97,186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151, -184,196, 37, 46,113,137, 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 31, 28,102,170, 21, 57,125, 80, 30,190, 11,211, -133,233,194,116, 97,186, 48, 93,152, 46,204,255, 30,230,255, 55,113,109, 29,186, 48, 93,152, 46, 76, 23,166, 11,211,133,233,194, -252,215, 49, 95,104, 50,229,218, 58,116,137, 75, 92,226, 18,151,184,196, 37, 46,121, 54, 98, 37, 85, 37, 25,197,187,136,150,243, -172,149, 1,240, 54,128,222, 0,106, 0,184, 11, 96, 51,128,239,157, 8, 83, 97,143,167, 6, 48, 25, 64, 75, 60,138, 94,127, 15, -192,113, 0, 95, 80, 74,243, 93, 37, 94,178,120,123,123,127, 34, 20, 10, 53,192,163,208, 38,214, 87,251,247, 28,199,101,231,228, -228,204,125, 70,237,128,117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159, -180, 90,237, 0, 74,233, 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253, -186,196,147,135, 54,162,181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,253, 51,128,191, 99,225, - 21, 63,250,111,125,229,121,254, 94,102,102,102,169, 14,212,228,114,249, 41,150,101,171, 19, 66,192, 48,140,237, 50,155,205, 42, -150,101,243, 74,193, 76,208,106,181,141,159,147, 66, 36, 0,118,186,187,187,235,103,205,154,245,125,187,118,237,130,147,146,146, - 44,147, 38, 77,106,243,215, 95,127, 69, 19, 66, 94,117,134,108, 17, 66, 90, 16, 66,214, 52,108,216,112,219,224,193,131, 55, 54, -107,214, 76,156,153,153,169,218,188,121,115,224,218,181,107, 47, 16, 66, 6, 56,235,226,226, 5,104,136,130,210,252,153,149,117, -175,184, 8,133, 66, 77, 66, 66,130,170,104, 37, 97, 37, 86, 48,155,205, 48,155,205,208,233,116,104,208,160, 65,165,167,223,223, -223, 63,138, 16,178, 36, 44, 44,172,113, 64, 64,192, 57, 0,227,146,146,146,254,114, 38,173, 22,139, 5,148, 82, 91, 58,107,215, -174,237, 26,153,157,107, 67, 35,196, 98,113,151,176,176,176,166, 6,131, 33,235,222,189,123,103, 57,142,251,172, 44,167,151, 78, -226,187, 1,248, 76, 34,145, 52,171, 81,163, 70,240,237,219,183,227, 77, 38,211, 25, 0, 51, 41,165, 57,149, 65,178,218,182,109, -123,226,187,239,190,243, 28, 59,118,236, 9, 66, 72, 43, 23,217,114,201,191, 37, 85,170, 84,209,232,116,186, 21, 0,162,132, 66, -161,159, 84, 42,133, 76, 38, 75,145, 72, 36,151,100, 50,217,240, 19, 39, 78,100, 59,139,201,113,220,103,113,113,113,126,205,155, - 55,159, 95,183,110,221, 25, 25, 25, 25,122,147,201,116, 40, 43, 43,107, 2,165, 52,183,172,255, 45,206, 69, 94, 36,146,101,255, - 90, 52,222,255,189,117, 88, 20, 87,168,221, 99, 12, 76, 32, 8,138,139,139,243, 81,169, 84,224, 56,206,166, 45,176, 78,106,246, -182, 93, 69,126,154, 16, 25, 25,105, 42,103,194, 9, 78, 72, 72,240, 81, 42,149,182,239, 76, 38, 19,252,252,252,248,196,196, 68, - 31,169, 84,250,216,239,141, 70, 35,130,130,130,158, 39, 95, 40,111,123,120,120,228, 60,124, 24,223, 64,111, 48,205, 28,249,238, -148, 79, 6,244,126,217,253,212,169, 83,252,171,175,190,106, 56,122,244,232,219, 0,150, 56, 88, 41,110,132,144,181,147, 38, 77, -154, 33,149,171, 61, 15,159,186,110, 88,187,121, 87, 98,195,240,106,100,194,132, 9,236,123,239,189,119, 44, 42, 42,234, 39, 66, - 72, 35,103, 52, 91, 42,149,106,175, 68, 34,169,202,178, 44, 76, 38,211, 67,173, 86,251,202,115,212, 16, 27, 2,184, 72, 8,137, -162,148, 94,114,244, 94, 89,146,153,153,137,194,194,194, 39,174,218,181,107,163,178,237, 15, 9, 33,130,224,224,224,223,231,205, -155, 23,152,146,156,140,175, 23, 46,108, 14,224,123, 0,205, 29,249,255,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147, -103,204,152, 49,239,173,183,222, 2,199,113, 40, 44, 44, 12,184,115,231, 78,157,169, 83,167,246, 36,132, 52,165,148,198, 62, 37, -190,119, 88, 88, 88,204,248,241,227, 61,154, 54,109,138,162, 40, 21, 1,199,143, 31,111,190,114,229,202, 65,132,144, 72, 74,105, -250,211, 60,195,195,195,227,167, 31,127,252,209, 83, 46,151, 99,251,246,237,158, 29, 59,118, 60, 78, 8,105, 93, 81,178, 69, 8, - 97, 60, 61, 61,223, 3,208,129,231,121, 49,128, 51, 89, 89, 89,179, 43,226,213,221, 37,255,191,196,203,203,107, 68, 94, 94,222, -119, 18,137, 68,228,238,238, 14,185, 92, 14,129, 64, 0,129, 64, 80, 69, 34,145, 84,145, 72, 36, 93, 59,116,232, 48,238,240,225, -195,101,122,216,127, 41,202,111, 40, 24, 50,147, 37, 12, 11, 0,181,195, 60,213,110,110,110,152, 57,115,166,162,123,247,238, 10, - 0, 56,113,226,196,224, 33, 67,134,116, 36,132,212, 45,141,108,149,196, 69, 94, 20, 41,237,196,225, 99, 26,173,232,232,232,163, -197, 58, 47,100, 50, 25, 54,110,220, 8,150,101, 31,139, 26, 95,210,251, 42, 85,170,148,155, 16,171, 70,108,199,142, 29, 80,171, -213,112,115,115,179, 77, 52, 18,137, 4,135, 14, 29,130, 80, 40,132, 64, 32,128, 80, 40, 68,227,198,141, 81, 70, 64,251,103, 34, -125,234, 16, 10, 0,155,222,121,148,174, 62, 75, 30, 57,129,220,244, 78, 36, 90,215,144,161,247,123,211,251, 21,232, 77, 77, 0, -232,178,179,178,178,206,109,221,154,212, 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91, - 88,153,155,215,224, 33, 67, 7, 15, 23, 48,166, 65,163, 63,154, 19,159,156,161, 27, 53,106,212,214,237,219,183, 15,254,242,203, - 47,111, 76,156, 56,113, 50,128, 79, 29, 77,191, 88, 44,174,122,231,206,157, 48,158,231, 81,175, 94,189,231, 38,140,129,149, 72, - 81, 74, 65, 8,121,140, 80,149,117,175, 60,177,106,176, 74,186, 42, 91, 2, 3, 3, 35, 7, 14, 28,232,165,205,200,192,215, 11, - 23, 90,191,110, 92,222, 54,162,117,139,208,104, 52,226,141, 55,222, 24,200,113,156,192, 74, 2, 13, 6,131, 49, 39, 39, 71,111, -119,178, 39,157, 82,250,178, 3,229, 89, 93,161, 80,252, 15, 64, 84, 97, 97, 97, 32, 0, 40, 20,138, 68,158,231,183,233,116,186, - 79,173, 1,124, 43, 80, 79,193, 0,234,160,244, 80, 80,116,222,188,121,183, 39, 79,158, 28,251, 79, 99, 18, 66,170,250,250,250, -206,237,211,167, 15,118,237,218,133,221,187,119,155,101, 50,153, 96,200,144, 33,100,220,184,113,238,227,199,143,239,138,167,112, -226, 88, 36, 93,103,204,152,225, 81,171, 86, 45,108,222,188, 25,151, 47, 95, 46, 12, 11, 11,147,181,107,215, 14, 2,129,192,227, -147, 79, 62,121, 21,192,154,167,121,128, 86,171,157,253,209, 71, 31,173,253,249,231,159, 85,247,238,221,195,146, 37, 75,188,250, -245,235,119,148, 16,210,214, 81,178, 69, 8,145, 0,120, 15, 64,123,150,101, 91, 15, 25, 50,196,242,238,187,239, 10, 25,134, 49, - 47, 92,184,208,123,229,202,149,253,188,188,188,162, 50, 50, 50, 92,230, 7,101, 8,203,178, 38,158,231,133, 0,164,148, 82, 67, -121,159,255, 75,121,247,244,244, 28,155,149,149,245,189,159,159, 31,124,125,125,159,152,107, 13, 6, 3,164, 82,169,200,207,207, -239,199, 30, 61,122, 8,127,251,237,183, 82,183, 0, 9, 75, 62,219,254,203,172, 64, 15,119, 21, 0, 96,209,210,125, 5, 0,240, -219,111,191, 33, 41, 41, 9,238,238,238,168, 91,183, 46, 59,107,214, 44,255, 9, 19, 38,124, 13, 96,120,105, 88,197,185,200,139, -164,209,178, 39, 91,246,159,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,123, 43, 57, 43,198,240, 14, 22, 75, 8, -201,207,207,183,145, 44,181, 90,141,162,201, 21,102,179,249, 9, 92,142,227, 64, 8,161,101, 97,150,146,225,177, 0, 14, 81, 74, -239, 58,200, 68,109,152,155,222,137,196, 90,201,164,254, 86, 23,234, 93, 63,122,244,186, 22,192,169,251,195,151,124,215,182,109, -224,123,211, 22, 79, 47,204, 76,202,248,100,224,235, 85,195,252, 60,101,138,236,180, 28,143,136,136,206,120,228, 81,217,209,116, -182, 25, 60,120,240,186,253,167,227,136, 84, 42, 18, 9, 88, 86,216,170, 94,184,103,176, 27,235,166, 2,220,226, 99,111,159, 26, - 58,116,104,189,137, 19, 39,182,118, 38,239, 12,195, 64,173, 86, 99,221,186,117, 96, 28,136,157,243, 44, 78,141,148, 80,239, 2, - 43,145,210,106,181,216,181,107, 23,162,163,163, 47, 18, 66,162,138,126,114,145, 82,138,220,220, 92, 36, 39, 39,195,223,223,255, - 34, 33, 68,104,191,141, 88, 28,211,170, 85,181,146,170, 33, 67,134, 12,180, 88, 44, 2,187, 65,162, 56,129,121,130,196, 56,154, -247,128,128,128,253, 0, 94,102, 89, 22, 70,189,222,248,191,175,190,178,191,125,222,158,100,149,134,105, 77, 43,199,113,130,139, - 23, 47, 10,173,125, 6,128, 16,128, 2,128, 23,165, 20, 12,195, 92,113,160, 60, 35,229,114,249,169, 29, 59,118,168, 27, 55,110, - 76,196, 98, 49, 44, 22, 11,174, 94,189, 26,252,229,151, 95,142, 62,120,240,224,171,132,144,218,197,131,167, 59, 88,239,117,142, - 31, 63,174, 11, 13, 13, 45,145, 56,230,230,230, 10,194,195,195,219, 2,136,253, 23, 48, 19, 82, 83, 83,123,188,252,242,203, 99, - 82, 82, 82, 98, 44, 22,203,199, 0,234,122,121,121, 93,236,213,171, 23,100, 50, 89,123, 71,136, 86, 89,245,238,227,227,211,253, -165,151, 94,194,146, 37, 75,240,229,151, 95,118,162,148, 30, 34,132,116,204,205,205, 61,216,173, 91, 55,104, 52,154, 30, 37, 17, - 45, 71,219, 18, 33, 36,188, 77,155, 54, 63,206,156, 57, 83,181,107,215, 46,132,133,133, 33, 47, 47, 15, 31,126,248,161,207,231, -159,127,126,132, 16,210,206, 74,182, 74,195, 36,132,212,150, 72, 36,107,126,254,249,103,101,104,104,104,168, 72, 36, 98, 66, 67, - 67,161,213,106,161,215,235, 37,115,230,204,169, 39,147,201,254,250,230,155,111,214, 0,232,245, 79,247,247, 98,105,205, 1,160, - 6,160,113,102,219,181,140,188,231, 0,144,216, 58,143, 80, 8,169, 84, 10,169, 84, 10,137, 68,130,155, 55,111, 78,147, 74,165, - 11,237,199,226,178, 48,201,223,147, 86, 3, 66,200, 89,150,101,203,252, 92,220, 52,228,159, 46,207,162, 52, 7, 17, 66, 22, 1, -104,255,104,200,103,142,122,121,121,189,159,146,146,242,192, 81,204,128,128, 0,207,252,252,252,111,252,253,253,225,235,235,107, -155, 59, 2, 3, 3, 97, 54,155,145,154,154, 10, 74, 41,178,179,179, 33,151,203, 17, 16, 16,240,205,232,209,163, 55, 47, 91,182, - 44,179, 68, 76, 30, 95,118,235, 55,245, 51,150,101, 25, 0, 96, 5, 74,229,248, 41, 64,213,170, 85,209,170, 85, 43,232,245,122, -228,228,228,160, 78,157, 58, 2, 66,200, 96,134, 97,212,148,210, 31, 40,165,135,255,131, 90,247, 82,141,225,103, 20,223, 23, 37, -132,128,231,121, 8, 4,130,199,136, 86,241,203, 74,138,138,218, 43, 41, 79,197,109, 52, 26,109, 36,203,205,205,205, 70,210, 44, - 22, 75,105, 68,171, 34, 76,189, 62,207,243,213, 9, 33,203, 28, 37, 91,197,101,240,224,193, 79,216,123, 76,152, 48, 33, 33, 45, - 45,141,190,209,185,129, 34,102, 79, 82,114, 13,119,165,204, 91,165,170, 38,117,247,208,100,102,102,254, 9, 64,227,196, 35,106, - 54,106,212, 72,182,118,235,241,132,145, 31,204,155,213, 56,212, 83, 93, 63,200,203,221,207, 77, 38, 86, 50, 68, 39,181,152, 19, - 60, 60, 60,194, 42,176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102, -205,154,217,200,150,149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147, -141,192,136, 68,162, 39, 8,140,245,183, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148, 82, - 29, 30, 5,190,206,167,180,148, 0,217,197,196, 98,177,216,180,108, 66,161, 16, 15, 31, 62,180,105,133,173,154,225,226, 91,231, -165,137, 68, 34,249,232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120, -225,194,133, 79, 80,129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70, - 70,189,194,194,194, 57,142,180, 35, 0,219,139, 46,235,152,242, 87, 76, 76, 76, 97,223,190,125,101,213,170, 85,107,246,180,109, - 53, 60, 60,188,133, 80, 40,196,153, 51,103, 12, 0,172, 43,235,163,151, 47, 95, 54,244,234,213, 75, 18, 28, 28,220,194,137, 1, - 55, 60, 50, 50,242,128,143,143,143,204,170,193,236,211,167,143,112,249,242,229,170,196,196, 68,152, 76, 38, 76,158, 60, 25,175, -189,246, 26,188,188,188, 48, 97,194, 4,223,249,243,231,255, 4,160, 81, 25,152, 82,177, 88,188,238,206,157, 59, 97,254,254,254, -178,211,167, 79,163,126,253,250,200,200,200, 64, 74, 74, 10,242,243,243,145,146,146,130,225,195,135,251,124,253,245,215, 1,207, -209,252,147, 45, 18,137, 32,151,203, 53,217,217,217, 57, 79,129, 35, 1, 32,182, 39, 89, 18,137, 4, 18,137, 4, 82,169,244,169, -226,178,190, 32,147,120, 32, 33,228,186, 72, 36,146,200,229,114, 17,195, 48,144, 72, 36,157, 61, 60, 60,174,189,242,202, 43,117, -247,239,223, 31,231, 8,142, 94,175, 95, 39,145, 72,132, 62, 62, 62, 0,128,176,176, 48,212,175, 95, 31, 58,157,142,207,201,201, -129, 70,163, 97, 30, 60,120,128,194,194, 66, 36, 39, 39, 35, 36, 36, 68,200, 48,204, 58, 0,175,150,132,119,242, 66,242, 82, 0, - 75,173,159,189,189,189, 83, 1,200,172,159,165, 82, 41, 2, 3, 3,145,152,152, 8,149, 74,197,126,254,249,231,189, 54,110,220, -216,147, 16, 50,152, 82,186,222, 14,106,198,139,106,163,101, 37, 89,246,175,143, 17,173,232,232,232,233,187,118,237,106, 91,210, - 68, 86,180, 95, 91,170, 38,203,122, 57, 66,136, 8, 33,224, 56, 14,190,190,190,144,203,229,144,203,229, 32,132,216,190, 47,142, - 95,180,194,119, 58,179, 10,133, 2,111,189,245, 22,253,225,135, 31,198, 20,145,173, 59,142,254,111,159, 37, 49, 54, 45, 86,113, -169, 93,187,246,169, 79, 62,249,164,251, 31,127,252,145,216, 56,180,154, 64,145,244, 32, 95,170,214,104, 16, 84, 37,122, 72,143, - 94,151,241,232,244,161,163,114, 39, 47, 47, 79, 86, 35, 72,110,100, 24, 61,169, 34, 17,168,252, 21, 34,137,159,187,123,160,200, -104, 72, 83,187,187,139, 13, 6, 67, 54,128,172,178, 64,212,106,245, 62,137, 68, 18,194,178, 44, 88,150,133,151,151,151, 27,165, - 20, 26,141, 6, 65, 65, 65,202,136,136,136, 91, 2,129, 0, 12,195, 32, 63, 63,255,193,253,251,247, 59,151,151, 48,119,119,247, -125, 18,137, 36,132, 97, 24, 16, 66,192,178,172,237,224,130,245, 61,203,178, 32,132,160,160,160,192, 33, 76, 74,233, 37, 66, 72, - 84,116,116,180,141,108,237,217,179, 7, 93,186,116, 65,118,118, 54,174, 93,187,102, 79,178, 28,218, 54,180, 55,126,167,148, 66, - 36, 18,225,230,205,155,143,109,105, 91, 47,149, 74, 85,225,206,227,225,225,113,162, 79,159, 62,248,241,199, 31, 41,165,148, 0, - 80, 16, 66,234,187,185,185,221,188,126,253,186, 67,118, 48,148, 82,152, 76,127,255,212,218,198,237,251,151, 19,100,186,115,163, - 70,141, 72, 78, 78,142,149, 64,218, 22, 68, 44,203,226,187,239,190,147, 53,109,218,116,170, 84, 42,157, 40, 18,137,114,205,102, -243, 47,122,189,126, 14,165, 52,251,121, 26,148, 90,183,110,253, 65,124,124,252,107, 33, 33, 33, 59,158,130,196,211, 38, 77,154, - 24, 1,200, 88,150, 21, 86,194, 64,201, 22,181, 45,189,149,236, 83, 74, 45,141, 26, 53,210, 23, 77,242,172,163, 88, 94, 94, 94, - 63,237,222,189, 59, 40, 36, 36, 4,102,179, 25, 22,139, 5,249,249,249, 56,122,244, 40, 12, 6, 3, 44, 22, 11,194,194,194,240, -217,103,159,233,223,127,255,125,233,178,101,203,210,242,243,243, 7,148, 3,251,254,230,205,155, 21,254,254,254,178,194,194, 66, -196,198,198,162, 81,163, 70,200,203,203,131, 78,167, 67, 65, 65, 1, 76, 38, 19,114,115,115, 53, 28,199, 25,159,151,186, 22, 8, - 4,144, 72, 36, 16,137, 68,217, 33, 33, 33, 32,132, 72,227,226,226, 42,178, 21,167, 6,144, 43, 20, 10,197,246, 4, 75, 34,145, -224,204,153, 51,159,136,197,226, 18,181, 89,101,181, 31,103, 62, 63, 7, 19,249, 34,145, 72, 36,241,240,240, 16,217,205,211, 34, -165, 82, 9, 31, 31,159, 37, 0,186, 58,152,239,134, 30, 30, 30,182,241,189, 65,131, 6,136,143,143,223,150,147,147, 51, 40, 45, - 45, 13, 12,195,172, 99, 24,166,167,149, 7,100,101,101, 33, 56, 56,184, 97,105,120, 45, 27,249,143, 1,161, 54,141, 86,237,154, - 30,202, 98,243, 20,212,106, 53,238,223,191, 15,157, 78, 71,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210, -123,101,113,145, 23, 65, 42,100,163,101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122, - 1, 32,165, 17,173, 34,205,129,211, 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119, -108,249,217,247,203,207, 38,127,230, 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188, -111,189,239, 55, 31, 78,218,179,123,247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58, -204, 75,172, 36, 30, 10,169, 65,151,174, 4, 45,148,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190, - 29,102, 79, 36, 76, 38, 19, 52, 26, 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228, -214,173, 91, 97, 42,149, 10, 5, 5, 5, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78, -246,217,147,173, 61,123,246,160, 78,157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104, - 40, 70, 38, 37,217, 8,204, 34, 55, 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249, -253,247,223, 77, 28,199,137, 18, 19, 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197, -208,235,245,182,173,125,251,171,122,245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31, - 64,255,127,115, 32,250,225,135, 31, 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127, -252,241,199, 87, 0,194,157,197,243,246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170, -149,216, 90,203,218,108, 54, 39,228,228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86, - 28,133, 66, 33,218,180,105,147, 57, 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29, - 58,228,197,178, 44, 30, 60,120,128,204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223, -255,254, 55, 53, 63, 63,223, 17, 87, 15,109,154, 53,107, 22,146,157,157, 13,141, 70, 3,157, 78,135,243,231,207,163,118,237,218, - 72, 74, 74, 2,195, 48,208,104, 52,248,254,251,239, 11, 8, 33,218,231, 97, 2, 98, 89,214,166,117,178, 35, 71,250, 22, 45, 90, -224,200,145, 35,147,156, 33, 71,148, 82,163, 80, 40,124,140, 96,217,189,183, 56,155, 54,142,227, 68, 69, 54,162,196,145,207,207, -129,180,149,201,100,162,226, 95, 22, 20, 20,136,252,253,253, 91, 59, 65,124, 61,101,178, 71, 10,167,144,144, 16,228,228,228,112, - 70,163,177,223,186,117,235,204, 0,208,168, 81,163,126, 28,199,233, 45, 22, 11, 43, 22,139,161,211,233,224,227,227,227, 89, 42, - 32,131,143,183,255, 50,219,175,184,141,150,191,191, 63,162,162,162, 96, 48, 24,144,156,156,140,163, 71,143,154, 57,142,219,240, -195, 15, 63,240,222,222,222,195,222,120,227, 13,246,194,133, 11,239, 0,248,160, 44, 46,242,162,104,179, 74, 35, 91,214, 83,135, -109, 1, 28, 1,208,206,154, 73,251,173,195,178, 52, 89,197, 52, 90,164,156, 14,151,157,144,144,160, 80, 40, 20,182,239,204,102, - 51, 2, 2, 2,120,158,231, 73,241,231, 88,211, 81, 81, 17, 10,133,170, 41, 83,166,100,127,255,253,247,131,224,160, 65,249,166, -119, 34,177,182, 24,201, 90,250,229,204, 37,223,126, 57,219,227,238,222,213, 88,177,120, 1,199,113,184, 80,175, 94,189,214,249, -249,249, 2, 55,133, 25, 25,217,216,131, 71,126,180,168,131, 21,194, 0, 88,117,246,236,217, 11, 93,187,118, 61,185,234,215,173, - 30, 73,177,177,127, 74,114, 51,146,213, 53,195, 4,162,192,144,158,121,122,189,168, 95,191,126,222, 0,222, 40, 11,139, 97, 24, -196,198,198, 34, 46, 46, 14, 74,165, 18, 42,149, 10, 74,165, 18,106,181, 26, 42,149, 10, 42,149,202,233, 50,100, 24, 6, 28,199, - 97,203,150, 45,144,203,229, 80, 40, 20,143, 93, 86,146,245, 52,117,211,165, 75, 23,104,181, 90, 40,149, 74,219,118,167, 51, 98, -181,209, 50, 26,141, 48, 26,141, 48,153, 76, 28, 0,161, 64, 32,192,240,132, 4,155,150,199, 25, 2, 83, 92,234,215,175, 79,255, -252,243, 79,156, 60,121, 18, 58,157, 14,223,126,251, 45,252,253,253, 59, 0,152,230, 44,150,157,145, 62,151,155,155, 43,204,205, -205,181,105, 7,133, 66,161, 77, 99,232,232,228, 32, 16, 8,108,171, 81,235,101,175,213, 98, 89, 22,190,190,190,240,243,243,195, -210,165, 75, 69,213,170, 85,123,237,223, 28,132,230,207,159, 95,115,209,162, 69, 43,215,174, 93,187,103,192,128, 1, 27,175, 94, -189, 58,212,205,205,237,202,225,195,135,103, 75, 36, 18,190,130,253, 59, 40, 41, 41,201,199,254, 43,158,231,229, 22,139,197, 70, -108, 11, 10, 10, 80,183,110, 93,135,241,174, 95,191, 46, 7,128,217,179,103, 11, 1,200,173,110, 67,172,152, 5, 5, 5,194,218, -181,107, 7, 57, 72, 10,110, 17, 66, 90,119,234,212,233,212,129, 3, 7,220, 67, 66, 66,144,152,152,136,196,196, 68,212,172, 89, - 19,115,231,206,213,229,230,230,182, 44, 34, 87,191, 59,152,237, 0,119,119,119,225,195,135, 15, 97,177, 88,208,176, 97, 67,124, -255,253,247,232,215,175, 31,234,214,173,139,220,220, 92, 92,191,126, 29,107,214,172,113, 23,137, 68,111,252,219,147, 79,209,214, - 86,169, 87, 69,196, 98,177,168,165, 82,105,174, 68, 34, 17, 91,237,179,142, 30, 61,234,180, 54,203,126, 1,232,204,231,231,129, -180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177,142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197, -139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228,114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10, -245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163, 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111, -240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69, 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88, - 9, 14,165,244, 9,114, 85, 26,241, 42,154, 36, 72,121,157,142,101, 89,236,221,187,215, 70, 8,172,167, 14, 41,165,168,108,162, -229,233,233,169,107,214,172,153, 58, 62, 62,254,231,138,106,178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50, -180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173, 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185, -235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30,156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87, - 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249, 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42, - 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123,224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58, -131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4, 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212, -235,245, 8, 9, 9,129, 94,175,135, 78,167, 43, 0, 32, 89, 87,173, 26, 0,224,157,204, 76,156,255,223,255,112,122,222,188, 10, -181,163, 6, 13, 26,208, 51,103,206,224,202,149, 43, 48, 24, 12, 24, 49, 98, 4,138,182, 13, 1,224, 21, 39,242, 28,234,231,231, -215,165,107,215,174, 1, 0,160,211,233,200,217,179,103, 33,149, 74, 65, 8, 65,114,114, 50,118,236,216,129,196,196, 68, 16, 66, -224,238,238, 30, 68, 8,169, 70, 41,189, 95,198,196, 64,238,223,191,143, 47,190,248, 2, 60,207, 99,210,164, 73, 8, 11, 11,179, - 17,172, 7, 15, 30, 96,246,236,217,224, 56, 14,159,127,254, 57,106,214,172, 9,179,217, 44,117,198, 79, 89,101,203,132, 9, 19, -238,110,219,182,109, 79,124,124,252,171, 95,126,249,101, 91, 66, 8, 63,113,226,196, 47,212,106, 53,247, 52,184, 89, 57,121,184, -121,231,129,141, 8, 21,191,188,189, 60,156,198,187, 29, 27,111,251,127,142,179,199,227,224,233,225,238,108, 18, 11,204,102,179, -174,103,207,158,154, 45, 91,182,144,154, 53,107,226,222,189,123,214,197,105, 65, 5, 92, 58, 36,106,181,218, 48,150,101, 69,119, -238,220, 65,213,170, 85,209,172, 89, 51,204,153, 51, 7, 25, 25, 25,176, 88, 44,240,241,241,225,205,102,243, 69,163,209,120,236, -223,158,120,236,181, 78,246,215,209,163, 71, 39,137,197, 98, 10,224, 12, 0,167,136, 54,165,212, 88,165, 74,149,226,216, 22, 60, - 39,242, 44, 79, 50,250,251,251, 31, 85,169, 84,175,101,101,101, 61,166,213,106,217,178,165,201,215,215,247,184,163, 56, 74,165, - 50,139,101, 89, 79, 0, 72, 76, 76,132, 66,161, 16,197,198,198,206, 35,132, 76, 6,128,106,213,170,205,211,106,181,162,106, 69, -227,169,159,159, 31,140, 70, 99,169,102, 44,167, 46,166,172, 6,176,218,110,238, 77,206,201,201,145, 45, 88,176, 32,127,222,188, -121,133, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90,181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145, 23, 73, -202,212,104, 21, 49, 73, 90,194, 63,149,168,201, 42,137,108, 57,162,149, 32,132,160,176,176,240, 49,237,136,245,212, 97, 73, 68, -171,104, 66,175,208,214, 97, 17,201,146,253,242,203, 47, 27, 22, 47, 94,124,210,209,255,179,183,209, 90,246,213,172, 47,173, 36, -235,242,201, 3,248, 61, 38, 39, 99,210,188,133,139, 42, 90, 9,181,189, 21,245,253,124,189,142,252,111,238, 76,245,221,189,107, -176,113,217,215,244,242,185,115, 77,207,157, 59, 55,104,220,184,113, 85,138, 26,150, 22,192, 95, 0,250, 58,114, 74, 39, 61, 61, -253, 49,251,168,176,176,176, 91, 26,141,198, 87, 42,149, 34, 54, 54, 54,255,218,181,107, 78,111,201, 20,199,172, 36,166,255, 24, -201,186,118,237, 26,218,183,111, 15, 0, 56,113,226, 4, 90,182,108,233, 20,217, 50,155,205,217,181,106,213,178,105,183,114,114, -114,120, 0, 24,149,156,140,229,254,254, 16, 8, 4, 56, 61,111, 30, 62, 53,155, 49, 71,232,156,233, 78,195,134, 13,233,185,115, -231, 16, 23, 23, 7,139,197,130,238,221,187,219,147, 44,103,242, 92, 55, 50, 50,242,224,225,195,135,189,149, 74, 37,116, 58, 29, -242,243,243, 49,100,200, 16,244,235,215, 15, 6,131, 1,155, 54,109,194,246,237,219,161, 82,169,160,211,233,160,211,233,220,163, -163,163, 79, 17, 66,218,148,102, 91, 72, 41,165,157, 59,119,198,241,227,199,193,178, 44,154, 54,109,138,204, 76,219, 97, 32,248, -250,250,150,116,143, 45,234,239,255,202,132, 36, 16, 8,232,209,163, 71,191,108,219,182, 45,226,227,227, 95,109,212,168,209,183, - 67,135, 14, 77,124, 90, 92,119, 55, 21, 26,212, 14,133,193, 96,128,193, 96, 64, 64, 64, 0,242,242,242,112,247,238, 93, 24, 12, - 6,248,250,104,156,198,139,170, 91,211,134,231,227,227, 3,157, 78,135,251,247,239,195,104, 52,194,203,203,221,153,250, 15,238, -220,185,243, 31, 27, 54,108,240, 92,179,102,141,177, 93,187,118,226,111,191,253,150,168,213,106,164,165,165, 85, 52,203, 71, 79, -156, 56, 17,210,169, 83,167,136, 27, 55,110,224,232,209,163, 48, 26,141,136,138,138,194,237,219,183,209,162, 69, 11,228,231,231, -159, 57,119,238,220,246,231, 97,226,177,110,235,217,105,158, 62,213,104, 52, 38, 0,139,158,166, 45, 62,124,248, 80, 82,191,126, -125,131, 84, 42, 21, 23,145,182,133,255, 86,219, 46,161,222,159,234, 36, 99, 89,226,231,231, 55,222,203,203,171, 83,245,234,213, -145,154,154, 42, 18,139,197,104,217,178,165,169, 73,147, 38, 38, 63, 63,191,119,156,168,151, 27, 34,145,168,205,163,197, 4,135, -135, 15, 31,130, 82, 58,169,110,221,186,239,231,229,229, 33, 51, 51, 83,172, 86,171,109,139,234,136,136, 8, 24, 12,134, 27, 78, -144,205,153, 85,171, 86,157, 42, 18,137,230,164,167,167,255, 80, 66, 25,137, 27, 52,104,160, 22,137, 68, 48,153, 76,143,145,205, -146,184,200,139, 76,178, 30, 35, 90,118, 44,178,184, 58,189,220,109, 67, 71,109,180, 8, 33, 48, 26,141, 80, 40, 20,182, 45, 41, -123, 79,240, 37, 17,173,138, 72,112,112, 48,154, 53,107, 38,219,184,113,227, 79, 11, 22, 44, 56, 85, 17,140,205, 27,214,251,187, -241, 5,193, 73,103,118,227,214,149, 11,216,118, 61, 59, 99,210,188,133,239,189,254, 70,255,212,226,196,108,211,232,242,241,194, -125, 20,117, 3,125, 61,143,124, 53,127,158, 90,123,227, 52,146, 83, 82,176,251,204,185, 11, 70, 74,175, 3,152, 84, 89,149,109, -127,122,173,162, 36,245, 25, 12, 60, 54,247, 14, 25, 25, 25,184,126,253,186,149,100, 69, 1, 64,171, 86,173, 46, 90,201,214,133, - 11, 23,208,168, 81,163, 39,220, 59, 60,161,121,200,202,154, 91,236, 25,157, 0,120, 89, 9,191, 64, 32, 64,203,169, 83,157, 38, - 89,132, 16,202,113, 28,180, 90,173,117,165, 88, 33,146, 85, 52, 40,126,116,248,240, 97,239, 85,171, 86,229,174, 93,187, 54,147, -231,121, 97,131, 6, 13,130, 26, 55,110, 76,214,173, 91, 7, 0,232,219,183, 47, 38, 77,154,132,107,215,174, 65,161, 80,160, 85, -171, 86,220,244,233,211,125,198,143, 31,255, 14, 30,249, 73,122, 66, 56,142, 19, 85,171, 86,237, 16,128, 14, 55,110,220, 0,128, - 83,148,210,150,214,251,101,221,115, 64,248,188,188, 60,161, 74,165, 42,209, 53,132,232,209,177, 78,103,183,250,108,152, 39, 79, -158,252,226,171,175,190,218,246,225,135, 31,222,121, 74,204, 18, 53, 90,175,189,246, 26, 10, 13, 38, 36,164,230,128,227, 44, 40, - 52,165, 57,141,103,175,209,122,237,181,215, 80,160, 55,226, 97,178, 22, 22, 11,135,188, 66,139,163,237, 72,254,242,203, 47,239, -251,229,151, 95,252,254,252,243, 79,112, 28,199,223,190,125,251,126,207,158, 61,213, 19, 39, 78,244,180,179, 65,117, 86, 22,247, -239,223,191,247,201,147, 39,181, 17, 17, 17, 30,103,206,156, 65, 90, 90, 26, 44, 22, 11, 58,116,232, 0,177, 88,252,112,222,188, -121, 34, 0,139,159, 23,162, 37,145, 72,112,246,236,217, 74, 33, 88,246, 34, 22,139, 43,188,253,248,162,202,153, 51,103, 18,199, -141, 27, 87, 91,173, 86, 47,106,221,186,117,123, 79, 79, 79,198,221,221,253,104, 96, 96,224,251,245,235,215,119,120,119, 65, 40, - 20, 14, 85, 40, 20,119, 45, 22, 11,155,159,159, 15,157, 78, 7, 0,176, 88, 44, 98,134, 97, 80,173, 90, 53,155,242,164,105,211, -166,240,243,243,227, 98, 98, 98,134, 58,138,159,150,150,246,216, 41,196, 18,100,116,203,150, 45, 5, 6,131, 1,113,113,113, 39, -236,111,148,198, 69,158,119,169, 80, 80,105,134, 97, 64, 41,133,180,113, 99, 36, 31, 56,128, 45, 91,182,148,249,144,101,203,150, -161,184,170,175,120,116,111,235,233,194,145, 35, 71,218,126,115,225,194, 5,155, 81,124,247,238,221, 31,195, 60,123,246,236, 19, -100,203,145,136,225,105,105,105, 55, 54,109,218,116,110,254,252,249,103, 28, 44, 32, 27,166,213, 70,171,247, 91, 3,147,151,124, -241,217,213,181, 59, 14,215, 77, 46,164,201,147,230, 45,252,176, 56,201,114, 20,179,150,159,178, 86,144,143,231,209, 5,243,231, -185, 89,181, 99,191, 92, 76,201,129,133,142,118,178, 34,203,205,187,189,102,145, 16,194, 87, 6,102, 5, 26,220, 99,152,246,238, - 29,146,147,147,109, 36,203,206, 97,105, 84,171, 86,173, 46, 22,145, 44,235, 61, 75, 69,210, 41, 16, 8,240, 97,126, 62, 4, 2, - 1,218,205,152,129, 14,179,102, 57,157,119,142,227, 32, 16, 8, 16, 22, 22,230, 52,201,178,199, 36,132,180, 44, 40, 40,192,154, - 53,107,242,238,220,185, 19, 90,189,122,245,241,171, 87,175, 94, 40,151,203, 31,251,159,130,130, 2,188,254,250,235,248,225,135, - 31,208,185,115,103,243,208,161, 67, 37, 12,195,116, 42, 43,157,113,113,113,163, 59,118,236,184, 76,175,215, 11, 50, 51, 51, 71, - 59,122,175,188,188,111,218,180,233, 78, 88, 88, 88, 91,148,238,194,129, 7,240,231,211, 96, 46, 90,180, 8, 0, 34,158, 6,179, - 52,141,214,175,191,254, 10,158,231, 17,236,167,129,193, 96, 64,241,178, 46, 15,179,184, 70,107,227,198,141,224,121, 30, 85,252, - 61, 96, 52, 26, 97, 53, 32, 46, 15,211,211,211,243,235,181,107,215, 6,197,196,196, 32, 33, 33, 1, 11, 23, 46,124,144,157,157, -221, 53, 59, 59, 91, 50,125,250,244, 35,111,189,245,150, 47,207,243, 6,103,251, 38,165,212, 64, 8, 25,250,210, 75, 47,173,155, - 61,123,246,189,200,200,200, 42, 45, 91,182,212,100,102,102,166, 95,186,116,233,254,178,101,203,148, 22,139,101,104,105, 91, 82, -255, 68,127,183,151,196,196,196, 25, 69,218, 84,167, 8,150, 35,233, 60,123,246,236,148, 34,236,115,142, 96,255, 83,121,127,218, -147,140,229,165,243,187,239,190, 75, 64, 49,255,104,206,166,243,236,217,179,113,157, 58,117,154,229,235,235, 59, 93, 42,149, 34, - 61,253, 81,176, 3,171,230,209, 58, 95, 55,110,220, 24,157, 59,119,198,173, 91,183,102, 77,157, 58, 53,238,105,202,179,104,193, - 29, 10, 96, 80,199,142, 29, 39,246,238,221, 27,223,125,247, 29, 40,165, 43,255, 11, 36,184,220,160,210,209,209,209,196,254, 21, - 0,204,102,115,252,221,187,119,253,107,102,101,177, 1,132,160,105,211,166,176,143, 81,104,181,219,177, 26,212, 29, 59,118,204, -194,243,124,153, 62,171, 56,142,139, 63,121,242,164,239,129, 3, 7,132,214, 10, 45, 50,234,228,147,146,146,152, 35, 71,142,216, -180, 99, 2,129, 0, 71,143, 30,181,152, 76,166,135,206,102,248,214,173, 91,149,178,154, 59,118, 45,238,253,125,187,127,243,106, -222,172,117,182,218,195,163,196,142,108,245, 32, 95,102, 3, 19, 48,115,190,156, 59, 83, 99, 37, 89,191, 94, 76,201,214, 27,184, -246, 55,210, 11, 46, 87,118,101,231,229,229,197, 89, 79, 23,230,231,231, 63,124,142, 26,225, 37, 66, 72,148,191,191,255, 69, 20, - 59, 93,104,189,215,168, 81,163, 39,238, 57,165, 54,225,121,184,185,185,217, 6, 9,103,237,178, 8, 33,212,186,149, 93,148, 46, -242,148,121, 62,121,245,234,213,170, 67,134, 12, 81,133,133,133,197, 18, 66,132,195,135, 15, 55,249,249,249,137, 78,156, 56, 97, - 6, 64,218,182,109, 43, 72, 73, 73,161,137,137,137,218,110,221,186,229,141, 28, 57,210,243,175,191,254, 18,243, 60,127,176, 28, -236,123, 0, 58, 58,123,175, 60,233,221,187,119, 44, 74,112, 28,250, 52,242, 44, 48,173,162,205,206, 69,108, 92, 98, 81,172, 75, - 30,220,131, 84,155, 93,149,217,108,129, 54, 55,211,105,141,214,221,251,137, 69, 33,199, 56,112, 92, 82, 17,222, 35,131,120,154, - 85,224,136,182,160,213,162, 69,139,186, 50, 12,195,156, 62,125,218, 48,127,254,252,248,244,244,244,238,148,210,135, 69,237,172, -221,154, 53,107,126,114,192,149, 67,105,117,127,157, 16,210,226,227,143, 63,126, 15, 64, 43, 0, 85, 0, 60, 4,112, 2,192,226, -231,204,131,249,194, 23, 20,187,194,242,162,156,100, 60,120,240,224,140, 30, 61,122, 8, 66, 66, 66, 62, 9, 9, 9, 97,178,178, -178,144,159,159, 15,134, 97,224,231,231,135, 58,117,234,192,207,207,143,191,113,227,198,220,143, 63,254,184, 92,159,124,181,107, -215, 14, 53,155,205, 53, 24,134, 9, 5, 16, 74, 41, 13, 37,132,132, 2,240, 40,210,140,169,171, 86,173, 42,104,222,188, 57,154, - 53,107,134, 35, 71,142, 96,243,230,205,171, 41,165,251,236,181, 89,197,185,200,243, 32,215, 27,147,182,132,199, 17,202,160, 93, -237,243,244,232,141, 40, 66,107, 93,124,114,126, 40, 55,168,244, 19, 3, 78, 86, 86,231,174, 93,187, 30, 96, 89,182, 90, 73, 19, - 87, 9,193,159,227, 82, 83, 83, 95, 45,115, 16,203,202,234,252,254,251,239, 31, 96, 89,182,154, 85, 83,101,177, 88, 12, 90,173, -246,237,118,237,218,125, 47, 20, 10, 37,246,184, 60,207, 63, 72, 77, 77,253, 71, 99,245, 21,247,163,213,185,107,143,140,167,197, - 84,138,152, 26,183,118,253,136,212,180, 12,252,122, 49, 37, 43,207,200,181,187,149,174,187,250, 44,210, 31, 23, 23,215,229, 57, -102,252,151, 74,219, 18, 44,235,158,131,146,238,128, 67,210,244,114,210, 71,138,200, 86,165,116,242,148,148,148, 5, 83,167, 78, -125,101,238,220,185,222,123,246,236, 81, 23, 61, 3,189,122,245, 74,187,122,245,106,107, 0, 18,189, 94,127,112,238,220,185,222, - 51,103,206,244, 4,224, 89, 52,200,164,166,166,166, 46,129, 75,202, 20,179,217,156, 80,167, 86,132,181,238, 30,115,233, 96,255, -222, 98,177, 36, 56,131, 87, 18,142,253,103,142,227, 18,202,209, 42,127,216,172, 89, 51,246,195, 15, 63, 76,221,179,103,143, 53, -144,110,129, 93, 59,187,133, 50,156,146, 58,216,151, 12, 0,230, 23, 93, 46,121, 14,199, 58,103, 62,255, 91,242,219,111,191, 77, -235,215,175,223, 26, 15, 15,143,245,161,161,161, 17,190,190,190,106,153, 76, 6,131,193,144,103, 52, 26,111,222,186,117,107,192, -212,169, 83,239, 57,130,181,102,205, 26, 22,128,136,231,121, 41,195, 48, 10, 0,106, 66,136,187,149,104, 17, 66, 96, 50,153, 16, - 23, 23,135, 79, 63,253,148, 59,116,232,208,255, 0,124,238, 68,114,155, 0,240,182, 27,199,189, 1, 24,241,200,129,109,122,145, -102,243,153, 8,225,113,164,214, 69, 74,110, 68,145, 82,141,244,203, 13, 42, 93, 74, 67,209, 1,104, 81,201,141,175, 44,204,144, -231,165,147, 12, 54,204,255, 25,203,230, 63, 22,231,208, 74,194, 74,252, 92,206, 6, 96, 78,161,101,220,226,125,215, 22, 24, 44, -148, 55, 89,248, 97,183,210,116,215,255, 31, 15, 64,150,138,220,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37,132,188, 52,110, -220,184,105,114,185,188, 41, 0, 20, 20, 20,156, 78, 74, 74,154,101, 61, 85, 88,222,125,151,148,193,154,211,211, 27, 63,143,120, - 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214,121,185, 79,159, - 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1,232, 0,228,226,145,195,109, 2, 0, 58,157, 46, 43, - 41, 41,233, 6,199,113, 55, 0,252, 84,129, 19,183,222,132,144,157,148,210,215,138,198,206,157,148,210,215,236,191,123,214, 98, - 71,182, 74, 26,239,203, 55,134,119,201, 35,217,116,237,239,137,182, 56,129, 42,239,115,105,114, 51, 37,255,232,211,174, 96, 93, -242,194, 18,203, 88, 0,131, 43,122,223, 37, 47,100,157, 63, 4,208,221, 85, 18, 46,121,225,230,191, 10, 16, 44,171, 92,191,126, -253,153,153, 8,252,219, 98,191, 77, 88,210,150,161, 85, 74,210,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 89, - 36,178,200, 70,203, 70,162,138,108,181,138,147, 44,123,114,101,255,153, 0,232, 84,202,170,204,153,211, 4,157, 42,176,234, 59, -232,194,116, 97,186, 48, 93,152, 46, 76, 23,166, 11,243,255, 23,102, 5, 37,186,156,173,195, 93,207,138,104, 89,141,223,175, 71, -145,233,181, 47,210,233, 37, 25,195,151, 69,180, 30, 51,246,172,236, 11, 64, 39, 23,166, 11,211,133,233,194,116, 97,186, 48, 93, -152, 46,204,167,188,218, 79,158, 60,121, 10, 30,197, 63,166,147, 39, 79,158, 66, 41,141,126, 68, 99,104,244,179,124,246,181, 70, -104,123,189, 33,168,245,186,214, 8,109, 75, 41,147, 81,214,203,254,123,215,214,161, 75, 92,226, 18,151,184,196, 37, 46,121,222, -229,212,188,121,243, 10,230,205,155,103, 53,124, 79, 7, 64,138,180, 89,233,207,242,193, 69,219,132,229, 30,148, 42, 55, 4,207, - 63, 45,132,144, 0, 70, 32, 26, 40, 20, 73,218,131,242,117, 0, 0, 12,123,141, 51,234,255,176, 88, 76,235, 41,165, 73, 21,197, -174, 69, 72,173,154, 26,217,118, 3,199,137,226,243,140,189,111, 80,122,182, 34, 56,125, 8,105, 41, 17,139,247, 75, 52,154, 18, -189, 20, 26,178,179, 11, 13, 70,227, 43,155, 40, 61,233,234, 3, 46,113,137, 75, 92,226,146, 23, 65, 8, 33, 10,119,119,247, 67, - 12,195,132,216,125,135,146,222, 3, 0,199,113,201, 90,173,246, 21, 74,105,198, 63,137, 89, 76,140, 0,206, 62, 15,229,231,236, -214,161, 0,120, 44,182, 80,185, 17,179, 35,253,149,173, 35, 66, 67, 54, 36,165,164, 94,204,213, 27,135,223, 76,204,211, 58,155, - 72,129, 72, 58, 82,227,229, 55,231,205,161,239,123,134,133, 71,144,224,224, 64,128, 2, 15,227, 19,124,239,222,185,221,113,227, -218,197, 19, 68, 82,233,167, 38,189,254, 71,167,153, 39, 33,138, 16,165,228,196,143,147,223,210, 8, 96, 65,255,217, 27,246,214, - 38, 36,248,250, 35,215, 18, 78,145, 44,141,167,231,190,121, 7, 15,202,220,139, 28,128,218,177,214, 71,241,245, 46, 95,150,125, -242,202, 43,251,250, 16,210,217, 69,182,254,147,131,145,159, 90,173, 30, 47, 20, 10,219,153, 76,166, 16,177, 88, 28,207,113,220, -209,172,172,172, 69,148,210, 68, 87, 9,185,196, 37,229,246,161, 82, 3,153,255,155, 65,206, 1, 64,165, 82,157,103, 24, 38,200, -158, 4, 88,253, 59, 22,247, 19,105,231, 47,242, 94,102,102,230, 75,101,228, 55,212,195,195,227,123, 0, 77,202,115,152, 92,180, -213,116, 78,171,213,190, 93,116,250,184, 36, 60,149,187,187,251, 12, 66, 72, 31,134, 97,202, 13, 40,204,243, 60, 71, 41,221,148, -149,149,245, 57,165, 52,175,180,223,185,187,187, 31,140,137,137,105,226,227,227, 83,174,150,198, 98,177,224,225,195,135,222, 77, -155, 54, 61, 6, 32,242, 89, 98, 58,195, 69,254, 77, 41,235,228, 97,137,156,199,250,198,209,136,217, 60,143,129,171,230,188, 29, -152,252,224, 78,224,232,185, 63,135, 71,122,201,219,197,100, 20,164, 56,250, 64,177, 76,181,189, 85,135,215,218,143,125,239, 67, -197,165,171, 55,177,255,200,159,200,213, 25,192, 50, 12, 52, 42, 57,194,195,107,144,133,203,183,120,173, 94,186,240, 43,153, 82, - 19, 93,152,159,221,205,153, 12, 41,228,130, 79, 39,245,108,170,240,244,224, 0,158,195, 71, 93, 27, 40, 62,217,121,241, 83, 0, - 83,156, 38, 89,135, 14,201,211, 82, 83, 49, 51, 32, 0, 2,139, 5, 82,134,129,148, 16, 72, 25, 6, 10,169, 20, 93, 86,174,196, -172, 61,123,228,211, 94,125,213, 69,182,254, 99,162, 82,169,134,134,135,135,207, 95,177, 98,133,103,245,234,213,161, 80, 40,160, -213,106,189,110,221,186,213,240,131, 15, 62, 24,236,230,230, 54, 53, 39, 39,103,153,171,164, 92,226,146, 82, 73, 71, 67, 0, 37, - 6,137, 47,235,222, 63, 37, 12,195, 4, 37, 38, 38,250,200,229,114,112, 28, 87, 20, 13,128,183, 45,164,237, 35,229, 20, 57,170, - 69,100,100,164,169,156,113,227,187,180,180,180, 78,246,161,208,202,138,184,147,152,152,216,169,118,237,218,223, 1,120,165, 20, -242, 50,227,189,247,222, 27, 95,183,110, 93,171, 22,168, 40, 10,194,163,215,140,140, 12,140, 27, 55,206,246, 12,158,231,113,224, -192,129,247,134, 14, 29, 10, 0, 31,148,145,247, 16, 31, 31, 31, 50,122,116,217, 62,138,166, 79,159,142,233,211,167, 99,241,226, -197, 68, 40, 20,106,202, 41,207, 74,193,116,148,139,252, 27, 26,172,226, 30,226,139,253,108, 87,177,120,135,187,158, 32, 90, 14, - 55, 78,202,239,158,189,104,197,240,153, 67, 90,145, 85, 31,116, 10, 27,179,248,224,159,181, 3,100,109,174, 39, 21,198, 59,160, -201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,111, 26,191, 50, 20, 41, 25,121, - 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190, 96,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35, 76,148,221,130, -159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133,214,102, 51,124, - 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157, 38, 91,114,185, -124,117, 97, 97,225,151, 21,112,220,246,111, 14,158,225, 42,149,234,211,220,220,220,129,207, 81,154,252, 1,164,151, 16, 31, 81, - 4, 64, 67, 41,117, 42,178,176, 84, 42, 29,217,191,127,255,133, 75,150, 44,145,167,166,166, 34, 41, 41, 9, 28,199, 65, 42,149, - 34, 44, 44,140, 28, 60,120,208,115,210,164, 73, 11,212,106,181, 36, 55, 55,247, 27, 39,210,201, 8,133,194, 33, 30, 30, 30, 61, -124,125,125,125,210,211,211,211,179,178,178,118, 24, 12,134, 85, 21, 93,217, 23, 97, 14,168, 90,181,106,143,128,128, 0,223,196, -196,196,140,132,132,132,237, 6,131, 97, 53,165,148,127,202, 50,173,143, 34,111,245, 0,146,171, 86,173,122,237,254,253,251,105, -149,136,153, 84,181,106,213,235,206, 98, 18, 66, 20, 0, 54, 2, 8, 40,231,167, 73, 0,250, 82, 39,181,217, 46,169, 60,146, 85, - 20,210,234, 49, 66, 85,214,189,127, 90,100, 50, 25,126,249,229, 23, 8,133, 66, 8,133, 66,100,101,101, 33, 40, 40,200,246, 89, - 36, 18,217,222, 87,169, 82,165, 92, 60,142,227,154,178, 44,139,252,252,124,112, 28,103,187,178,179,179, 65, 41,133, 68, 34, 1, -199, 61, 10,231,100,119,191,105, 25,229,216, 39, 32, 32, 0, 63,255,252, 51,140, 70,227, 19,247,213,106, 53,174, 94,253, 59,200, - 8,203,178,104,214,172, 25, 67, 8,233, 83, 22,209, 34,228,145,211,205, 81,163, 70,129,101, 89, 91, 72, 61,235,123,235,197,113, - 28,166, 79,159, 14,251,208,100,255, 36,230,115,215,174,203,240, 16, 79, 41, 77, 6, 80,162,141, 22, 83, 22,104,164,159,242,237, - 9,111,189, 92, 48,117,120, 52,253,100,240, 43,244,227,183,218,209, 87,219,212,251,141, 21, 8,200,153,235, 15, 17,228, 6,172, - 30,215, 36, 36,216, 75,113,181,174,167, 42,188, 4,213,168,125, 64,233, 0,185, 66,253,197,219,239,127,164,220,117,236, 10, 30, -198, 63,124,130,100, 1,192,249,253,171,145,156,148,136,139, 49, 9, 24, 48,236, 29,165, 90,173,249,130, 16, 18, 80, 18,102,113, -113, 83,137,254, 55,185,111, 43,105,190, 57, 9,121,238, 0, 27, 42,134, 80,174,195,164,215,234, 75,212, 42,209,252, 50, 84,184, - 54, 76,137, 88,188,127,222,193,131, 54,146,213,210, 96,128,132,227, 96,225, 56, 27,201, 50, 90, 44, 40, 52, 26,225,159,159,143, -187, 67,135,130,154,205,152,186,109,155, 92, 34, 22,239,119, 36,157,118, 43,128,174,106,181,250, 8, 33, 36,220,145, 74,126, 22, - 71,102,157,116,227, 17,174, 82,169,142, 16, 66, 94,125, 30,210, 73, 8, 97, 8, 33,179,135, 15, 31,126,161, 70,141, 26,135,139, -136,149,245,158,160, 70,141, 26, 7,135, 15, 31,126,137, 16, 50,157, 16,194, 56,136, 25, 24, 16, 16, 48,103,201,146, 37,242,219, -183,111, 35, 49, 49, 17,102,179, 25,253,251,247, 7,199,113, 40, 44, 44,132,209,104,196,151, 95,126,169,240,244,244,252,148, 16, - 18,226, 72,222, 9, 33,172,155,155,219,154,181,107,215,142,186,127,255,190,223, 31,127,252,193, 92,185,114,197,247,171,175,190, - 26,234,233,233,185,174, 40,224,170, 83,229, 73, 8, 97,252,253,253, 87,253,254,251,239,111, 95,189,122, 53,104,235,214,173,194, -211,167, 79,251, 47, 93,186,116,132,191,191,255, 58, 66, 8, 91,145, 58, 34,132, 52,148,203,229, 29, 39, 78,156,200,159, 58,117, - 42,241,212,169, 83,137, 11, 23, 46, 68,235,214,173, 91,206,154, 53, 43,170,130,152,141, 84, 42, 85,135,137, 19, 39,242,199,143, - 31, 79, 58,115,230, 76,194,130, 5, 11,152, 14, 29, 58,180,154, 59,119,110,125, 39, 49, 55,158, 58,117,170,109,124,124,124,245, -132,132,132,106, 9, 9, 9, 85, 19, 18, 18,170, 38, 38, 38,134, 36, 39, 39, 87, 73, 73, 73, 9, 78, 75, 75, 11, 62,122,244,104, - 43, 0, 27,158,183,126,244, 95,199, 44,106,203, 23, 41,165,208,106,181,216,181,107, 23,138,180, 87, 13,237, 73, 86,110,110, 46, -146,147,147,173,247, 4,255, 66, 58,193,113,156,141, 72, 29, 56,112, 0,195,135, 15,135, 86,171,181,125, 39, 16, 8,108,239,173, -255, 83, 30,166, 85,243,196,113, 28,206,156, 57,131,209,163, 71, 99,225,194,133,216,176, 97, 3,118,238,220, 9,173, 86,107, 35, - 91, 22,139,165, 92,204,140,140, 12,240, 60,239,104, 30,145,147,147,227,112,189,219, 19, 32,129, 64,240, 4, 41,178, 94,206,180, -165,167,193,124,158,165, 52,143,240,142,136,173,113, 23,169,234,218,217,223,140,168,234,247,233,252,241,125,100,224, 76,160,230, - 66,192, 84, 0,152,242,193, 27, 11, 64, 68, 50,192, 92, 8,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117,244,141, -244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44,131,179, -251, 30, 41,174, 24,150, 69,142,206,128,236,124, 19,122, 15, 25,239,241,227,194,207, 6, 0,248,178,172,140,212, 35, 36,172, 69, -128, 71,207,218,181,171, 48, 55, 36, 49,136,122,245, 4, 56, 30,160,199, 95, 71,195, 44, 31, 54,114,191,184,103, 61, 66,230, 92, -161,244,118, 89, 56, 18,141, 70,230, 94,191, 62,102, 6, 4,160,141,217, 12, 17,165,120, 57, 53, 21,151,199,143,135, 97,203, 22, - 48, 0, 68,111,188,129,246,139, 22,225, 88, 64, 0,252, 10, 11,145, 61, 97, 2,188,247,238,133, 72,173,150, 57, 83,248, 34,145, -200,180, 98,197,138,128, 17, 35, 70, 28, 33,132,180,123,158, 53, 91,132,144,112, 15, 15,143, 35, 95,124,241,133,239,180,105,211, -146, 43, 9,211, 87,161, 80,108,210,233,116,227,157, 93,209, 22, 17,167,217,203,150, 45, 27, 51,106,212, 40,205,136, 17, 35,232, -221,187,119, 53, 0,172,218, 17,239,214,173, 91,215, 88,177, 98,133, 95,147, 38, 77,222, 27, 61,122,180,136, 16, 50,181, 60, 45, -143, 82,169, 28,187, 98,197, 10,175,140,140, 12,228,231,231,219, 6,217,132,132, 4,200,100, 50, 91, 80,117,161, 80,136, 47,190, -248,194,115,236,216,177,227, 1,140, 47, 47,189, 18,137,100,200,247,223,127, 95,179,115,231,206,130,184,184, 56, 48, 12, 3,137, - 68,130,183,222,122, 75, 88, 80, 80, 16, 50,115,230,204, 81, 0,190,119,166, 12,132, 66,225,128,229,203,151,135,183,108,217, 82, - 16, 19, 19,131, 22, 45, 90,224,236,217,179,120,227,141, 55,132,121,121,121,213, 38, 77,154, 52,188,180, 21, 86, 89, 90, 39,185, - 92, 94,247,143, 63,254,136, 15, 14, 14,182, 13, 44,213,170, 85,227,162,163,163,181, 49, 49, 49, 17,127,254,249,103,102,139, 22, - 45, 30, 58,129, 25, 40,151,203, 35,119,239,222,157, 60,115,230,204,142,203,150, 45,235, 14, 0, 77,155, 54,221, 62,107,214,172, -195, 90,173,182,206,241,227,199,181,173, 91,183, 78,112, 16, 50,192,223,223,159, 27, 55,110,156,178,172, 31,173, 92,185, 50, 27, - 64, 21, 66, 72,245,162, 64,219, 46,249, 7,132, 82,106, 33,132, 68, 17, 66, 46,238,218,181, 11,205,154, 53,195,174, 93,187, 16, - 29, 29,125,209,158, 12, 92,189,122, 21,109,218,180, 1, 30, 5,146,255, 87,108,181, 56,142,131, 64, 32, 64, 66, 66, 2, 86,174, - 92,137,185,115,231, 34, 44, 44, 12,102,179,249, 9,178, 85, 68,136, 28, 82,193, 88, 44, 22,156, 59,119, 14,235,215,173,195,212, - 79, 63,133, 74,165, 2, 0,152, 76, 38,104,179,178, 32,149, 74,109,100,172,156,178,220,116,231,206,157,241, 65, 65, 65,143,109, - 25, 90, 95,139,198, 44,240, 60, 15,139,197, 2,189, 94,143,133, 11, 23, 90, 40,165,155,202,233,147, 54, 82, 52,126,252,120, 24, - 12,127,199, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,246,153, 97, 24,234, 40,230,143, 47,213, 69,161,221,175, 35,166, - 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101,223,184, -159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181,247,128, -253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135,201, 90, - 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16,174,240,111, 70,204,176, 16,176, 2,104,243, 10, 81,181,122, - 77, 70, 34,149,181, 47,143,104,169,221,132,223, 79,236,247,146, 52,211,146, 0, 89, 21, 41, 56,235,116, 26, 32, 6,227,153,135, - 15,187,132,201, 70,109,191,242, 61,128, 14,142, 20, 12,107,177,192,135,101, 97,162, 20,151,199,143, 71,212,242,229,184,104, 37, -134,203,151,227,226,168, 81,240, 16, 10, 33, 97, 24, 80,179,249,137, 61,125, 7, 39, 32,244,232,209, 3, 25, 25, 25,190,159,126, -250,105,133,201,150, 76, 38, 91, 79, 8,233, 42, 20, 10, 77,132, 16, 48, 12, 99, 11, 2,110,125,111, 50,153, 68, 44,203,238,206, -200,200,112,122,203,143, 16, 18,238,238,238,126,228,212,169, 83,190, 10,133, 2,211,167, 79,175, 20,146,165, 82,169, 78, 15, 31, - 62,188,202,250,245,235,247, 18, 66,186, 56, 74,182,138,147,172,229,203,151,103,175, 92,185,242, 71,251, 45, 66, 74,105, 50, 33, -100, 85,147, 38, 77,222, 30, 53,106,148, 6,192,152,209,163, 71,163, 60,178, 37,145, 72,218,133,134,134, 62,182,170,149, 72, 36, - 0, 0,133, 66, 1, 55, 55, 55,136, 68, 34, 24, 12, 6, 68, 69, 69, 17,177, 88,220,202,145, 52,171, 84,170,174, 61,123,246, 20, -156, 60,121, 18, 41, 41, 41,112,115,115,131, 66,161, 0,199,113, 24, 57,114,164,104,209,162, 69,175, 58, 75,180,130,131,131,187, -119,236,216, 81,112,237,218, 53,220,191,127, 31, 6,131, 1,183,110,221,130, 90,173,198,160, 65,131, 68,243,231,207,127,221, 89, -162, 5,160,238,168, 81,163, 82,237, 73,150, 85, 20, 10, 5, 9, 15, 15,215,122,122,122, 54, 2,240,208, 25,204,119,222,121, 39, -109,222,188,121,109, 14, 30, 60,248,177,245,203,131, 7, 15, 78, 2,128,111,190,249,230,184,183,183,119, 35, 0,142, 18, 45, 80, - 74,249, 55,223,124,243,129, 88, 44,134, 80, 40,132, 88, 44,126,236, 18,137, 68, 96, 24, 70,101,237,206,255, 85, 82, 67, 8,105, - 2,224,107, 60, 58,145,245, 41,165,244,204,115, 66,182, 46, 17, 66,162,162,163,163,109,100,107,207,158, 61,232,210,165, 11,178, -179,179,113,237,218, 53,123,146,245,111,217,104,129,231,121, 8,133, 66, 44, 88,176, 0, 38,147, 9, 63,253,244, 19, 54,111,222, -252,216, 24,170, 86,171,177,120,241, 98,167,182,185, 56,142,195,154, 53,107,240,241,164, 73, 54,146, 85,180,184,134,159,175, 47, - 60,189,188, 16, 27, 27, 91, 46,209,202,202,202,250,124,199,142, 29, 40,203, 24,126,199,142, 29,182,247,246,198,240, 14,205,115, - 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,123,175,213,106,193,178,172,181, 44,136,163,152,133, 20,232, 33,253, -251,187,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128, 93, 69, -219,137,101,219,104,221, 78,211, 45, 17,144,228, 6,243,198,189, 50,164,138,143, 27,104,126, 42, 68, 29, 62,199, 95,233, 50, 44, - 88,184, 27, 0,240,209, 91,141, 81,191,211,108, 24, 87,191,130,241, 45, 88,241,192, 4,195, 68, 0,211,158,236,120,124,100, 80, - 96, 0,254,186,123, 21, 2,150,133,216,205, 11,110, 30,190,224, 45, 70,228,164,221,199,145,173,223, 1, 0,150,173,217, 4,134, - 97, 32, 16,176, 48, 24, 57,132, 85, 9, 0,207,243,145,101,165,179, 54, 33, 47,245, 10,247,111, 22, 28,162, 33,215,220,239, 35, -220,199,243,241, 31, 52,148, 32, 44, 73, 73, 90, 40,101, 77,107, 19,242,210,117, 74, 79,149,171,129, 96, 24, 48,132, 64, 46, 18, -193,176,101, 11, 46, 22, 17, 44, 0,184, 56,106, 20,152,223,126,131, 74, 34, 1, 75, 8, 4, 69, 42,232,138,116,116, 0,136,136, -136,192,178,101,203,124,199,142, 29, 91, 33,178,165,215,235,231,168,213,234,142,171, 86,173,242,237,217,179,231, 19,247,239,222, -189,139, 54,109,218,164,166,164,164,204,121, 26,146,165,209,104, 16, 31, 31,255,212,251,234, 86,146,117,224,192,129,144,160,160, - 32, 68, 69, 69,121,127,244,209, 71,206,144,173,105,246, 36,107,244,232,209, 87, 0,248, 16, 66,138, 19, 21, 82,116,175,158, 29, -217,202, 1, 48,191,140,149,104,136, 66,161, 64, 90, 90, 26,134, 12, 25,130,219,183,255, 86,128, 6, 4, 4,216, 86,122,177,177, -177,240,246,246, 6, 33,196,199,145, 60,123,123,123,251, 26,141, 70, 12, 27, 54, 12,241,241,127,155, 51, 6, 6, 6, 90,203,212, -203,217,114,244,245,245,245, 45, 44, 44, 68,235,214,173,161,215,235, 1, 0,125,251,246,133, 80, 40, 68, 90, 90, 26,132, 66,161, - 87, 5,170,199, 43, 58, 58,186, 84,215, 42,106,181,218,228,238,238, 94,203, 73, 76,207,215, 95,127, 61,113,249,242,229, 79, 28, -108, 57,123,246,108, 55, 15, 15,143,131, 30, 30, 30,225, 78, 98,242,246,164, 74, 36, 18, 61, 70,180,132, 66, 33, 24,134,225,241, -223,151,255, 1,176,158,130,251, 1, 64,131,231, 72,179,101, 35, 91,123,246,236, 65,157, 58,117,144,149,149,133,152,152,152,127, -157,100,217, 17, 19, 8, 4, 2,219, 34, 89, 42,149, 34, 42, 42,202, 70,178, 8, 33, 40, 40, 40,128, 64, 32,176,142,215, 14, 13, -126,217,217,217,240,247,243,131, 74,165, 66,205,176, 48,220, 41, 26, 71,172,239, 37, 18, 9, 8, 33,176, 88, 44,229,149, 97, 30, - 30,217, 90,125, 80,217,213, 99, 37, 69,101,170,142, 3, 2,192,243,188,117,204,167,149,129,233,229,229,133,252,252,124, 71, 49, -159, 75, 41, 69,163, 21, 5,224, 34,128,104, 74,233,242, 34,195,248,199,220, 59,180, 5,112, 4,118, 71, 42, 9, 33, 76, 45, 95, -229,202,121, 99, 59, 14,121,165,142, 23, 10,211,239, 67,170,242, 2,209, 84,197,130,133,187,113,237, 94, 38, 0, 96,193,134,243, -248,121,102, 87, 64,230,129, 8,183, 12,248,169, 4, 61, 75, 34, 90, 4,148,240,148, 66,192, 50, 69,123,183, 44, 88,150,129, 54, - 61, 25,139, 62, 31, 83, 68,178, 54, 99,215,241, 24, 4,133,214,249,123, 31,151, 16,128,150,221,184,189,221, 68,203,199,246,106, - 46, 75, 37,201,208, 4,200, 33,149, 22,227,143,238, 34,144,170, 12,198,181, 11,146,159,219,161, 95, 14,160,220,137, 66,202, 48, -143,140,223, 9, 41,209,144,141, 41,186,199, 18,242,200,251, 43,239,252,152,110, 37, 44, 74,165, 18,190,190,190,152, 59,119,174, -239,228,201,147,127,130,147, 1,168, 41,165,183, 8, 33,237, 70,142, 28,121, 36, 51, 51,211, 55, 34, 34, 2, 74,165, 18, 74,165, - 18,169,169,169,232,221,187,119,106, 74, 74, 74, 69,181,101,235,134, 15, 31,238, 43, 18,137,112,247,238, 93,120,120,120,216, 8, - 98, 69, 73,150, 90,173, 62,125,240,224,193,144, 26, 53,106,224,230,205,155,168, 85,171, 22, 54,110,220,232,221,191,127,127,135, -200,150, 76, 38,235, 81, 68,156, 48,106,212, 40,205,168, 81,163,218, 2,104, 91,222,179, 71,141, 26,165,249,224,131, 15, 94, 47, -139,104, 9,133,194,120,173, 86,235, 39,147,201,176,117,235, 86, 40,149, 74,200,229,114, 4, 4, 4, 64,171,213, 66, 46,151,131, - 82, 10,179,217,108, 29, 44, 50, 29,201,119,122,122,122, 42,199,113,193,123,247,238, 69,122,250,223,190,245, 66, 66, 66,144,147, -147, 3,142,227, 50,156, 45,203,164,164,164, 84, 66, 72,240, 95,127,253,133,184,184, 56,116,233,210, 5,191,253,246, 27, 26, 55, -110, 12, 0, 48, 26,141, 21,113,226,199,177, 44, 75,203,168, 63, 2,192,189, 50, 49,139, 38, 47,167, 48,121,158,231,173, 36,203, -254,213,158,124,149,243,204,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177,106,180, -102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,188,111, 53,136, - 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195,117, 71, -234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46,143, 20, -169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5,124,221, -132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80,245, 58, - 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210, 30, 91, 79, 64,122,245, 10, 15,174,234,238, 41, 68,134,183, - 17,254,190,242,146,127,216, 72,133, 32,127, 49, 58,123, 74, 67,234, 9, 72,175,114,136,139,141,104,153, 44, 22,136,222,120,195, -182, 93,120,113,212, 40, 68, 45, 95, 14,174,123,119,232, 76,166,199, 84,197,206,138,181, 65, 90, 9,209,180,105,211, 82, 51, 51, - 51, 7, 84,112,245,120, 43, 43, 43,171,221,167,159,126,154,154,145,145, 1,185, 92,142,228,228,228,167, 34, 89, 0, 80, 88, 88, - 56,104,249,242,229,169, 71,142, 28,129, 82,169,132, 74,165,170, 48,209,178,106,178, 62,255,252,243, 42,193,193,193,136,141,141, -133,155,155, 27, 60, 61, 61, 81,191,126,125,156, 60,121,210, 59, 56, 56,120,111,145,193,108, 89,105,250,125,249,242,229,217, 0, -176,124,249,242,108, 66,200, 81, 66,200, 82, 66,200, 15,197,174,165,132,144,163,246,191, 45, 44, 44,220, 86, 22,182,209,104, 60, - 26, 19, 19, 67,229,114, 57, 88,150,133,201,100,130, 84, 42,181,213, 87,110,110, 46, 10, 11, 31,109,115, 95,184,112, 1,102,179, -249,132, 35,121,207,203,203,219,179,122,245,106,115,112,112, 48,234,213,171,135, 70,141, 26,161, 69,139, 22, 8, 9, 9,193,140, - 25, 51,140, 58,157,110, 79, 5,136,214,174,141, 27, 55,154,131,131,131,209,168, 81, 35, 72, 36, 18,212,175, 95, 31, 1, 1, 1, -152, 59,119,174, 49, 39, 39,103, 79, 5,170,233,225,213,171, 87,217, 50, 72,174, 26, 64,170,147,152,241,231,206,157, 99,155, 55, -111,190,189,248,141,166, 77,155,110, 87, 42,149,110, 0,156,181,251,163,246,228, 74, 34,145,216, 46,235,247, 2,129,224,255,131, - 70,107, 60,128, 43, 0, 98, 1,124,252, 60, 37,204,222,240, 61, 51, 51, 19, 49, 49, 49,184,112,225, 2,154, 55,111,142, 19, 39, - 78, 0, 69, 6,242,255, 98,250, 64, 41,133, 80, 40, 68, 68, 68, 4, 62,248,224, 3,236,222,189, 27,183,110,221,130,217,108,182, - 17, 33,171, 77,166, 51, 26, 45,145, 72, 4, 95, 95, 95,152,205,102,155, 54, 11, 0,238,220,190, 13,129, 64, 0,158,231, 97, 52, - 26,203,213,104,185,185,185,205, 88,177, 98,197,123, 25, 25, 25,254,233,233,233, 62,246, 87,106,106,170, 79,114,114,178, 79, 98, - 98,162, 79,124,124,188,207,131, 7, 15,124,238,223,191,239,255,229,151, 95,190,231,230,230, 54,195,209, 57,168,126,253,250,120, -231,157,119,108,215,146, 37, 75,108,215,145, 35, 71,156, 54, 94,103, 89, 22, 17,211, 23,160,107, 58,181, 93,187,189,137,237,186, -246,209,232,178, 48, 31,227, 34,207, 77, 91, 46, 58,109,104, 31, 88,186,132, 57, 56,153, 82,186,220,186, 93,104,239,188,180,184, - 49, 60, 0, 32,210, 79, 62,251,139,145,109,134,188, 92,203, 13,191, 31, 58,143,153,219,238,221, 12, 27,226, 29, 81,195, 61, 29, -124,122, 12, 62,122,171, 49, 22,108, 56, 15,224,209,214, 33,159,118, 13, 52, 43, 22, 84, 21,140,251,218,140, 18,183, 29, 44, 70, -253,225,123,119,111,183,143,168,219,132, 73,201,200,127,236,248,103, 84,187,222, 32,132, 32,176,122, 29,176, 2, 1, 88,150,129, -128,101,161, 81, 75, 17,243,215, 95,188,161,176,240,112, 73,152,237, 8, 17,248, 41,197, 75,222,234, 92, 95,154, 36, 78,131,183, -191, 2, 34,225, 35, 18, 64,239,245, 46, 54, 67, 8,128,186, 42, 12, 77,244,148, 29, 78,213, 47,105, 71,200,246, 35,165, 24, 96, -242, 60, 15,165, 68, 2,189,193,128, 66,139, 5,237, 22, 45,178,109, 23, 50,132,224, 18,128,122,139, 22,225,212,150, 45, 80,139, -197,128, 68,226,240,169,144,146, 52, 90,169,169,169,232,219,183,239, 83, 17, 34,123,205,214,216,177, 99,143,204,157, 59,215,119, -218,180,105,149,134,249,241,199, 31, 31,217,176, 97,131,111,181,106,213, 42,220, 88,149, 74,229, 36,158,231, 53,243,231,207, 79, -249,234,171,175, 80,220,158,172,136,232, 72, 52, 26,205, 2, 0,237,203,128,154, 57,122,244,104, 17,128, 49, 69,154,173,122,163, - 71,143, 62, 69, 41,157, 90,172,124,167, 47, 91,182,172,175,221, 22,227, 82, 0,139,202, 74, 99,110,110,238, 15, 31,124,240,193, -176, 99,199,142,121, 73,165, 82, 16, 66, 32, 18,137, 80,179,102, 77,219, 41, 26,161, 80, 8, 74, 41, 62,252,240,195,140,180,180, - 52,135,220, 59, 24, 12,134, 53, 51,103,206,108, 95, 88, 88, 24, 50,116,232, 80,145,187,187, 59, 82, 83, 83,241,245,215, 95, 27, -215,172, 89, 19,175,211,233,156,181,165,130,217,108, 94,243,217,103,159,181,203,207,207,175, 62, 98,196, 8, 81, 78, 78, 14, 10, - 11, 11, 49,113,226, 68,227,170, 85,171, 18, 10, 11, 11,157,118,248,219,162, 69,139,187, 15, 30, 60,104, 85, 80, 80,144, 37,151, -203,139,107,251,136, 66,161,104, 2, 96,157, 51,152, 81, 81, 81,177, 15, 31, 62,108, 62,123,246,236,163,102,179, 89,120,246,236, -217,238, 86,146,245,237,183,223, 30,145, 74,165, 29,225,188,209, 62, 47,145, 72, 30,211, 96, 21,127, 47, 16, 8,254,243, 26, 45, - 74,233, 17, 60,114,153,241, 92, 73,113,146,117,237,218, 53,180,111,255,168, 75,159, 56,113, 2, 45, 91,182,196,137, 19, 39,208, -170, 85,171,127,213,189,131,149,104, 9, 4, 2,244,239,223, 31,157, 58,117, 66,149, 42, 85, 30, 59,109,104,125,239, 12,217,176, - 88, 44,168, 91,183, 46, 12, 70, 35, 68, 34,145,109,107, 82, 32, 16,192,219,199, 7,119,239,222,117, 72,163,197, 48, 76,159, 30, - 61,122, 48,215,175, 95, 71,191,126,253,176,126,253,250, 82,127, 59,112,224, 64,252,242,203, 47,232,209,163, 7, 51,101,202,148, - 50,221, 59, 88,141,208, 29,201,147,117,158, 46, 79,163, 87, 89,152,246, 92,228,121, 19, 59,215, 14, 37,181,249, 81, 37,180,175, -229,143, 17, 45, 59, 39, 97,168,238, 45, 31,218,169,166, 0,191, 31, 62,143,153,191, 63, 92,195, 81,186,117,235,197,172,157, 31, -183, 4, 76,155,222, 66,253,222,235, 30,109, 23, 2,224,211,174,193,180,105, 32,136,220, 11,199, 19,133,200, 41, 52,237, 42,185, -225,153,214,255,246,211,119, 31, 52,255,190,149,183,191,143, 27,180, 57,133, 54,178,117,241,200,102, 0, 64,175,209,115, 32, 96, - 31,109, 41,170,149, 82,200, 68, 44,182,172,253, 38,195,100,210,151,216,186,242,132,204,152, 41, 47,213,116, 19, 43,204,200,245, -163,168,227,253,247,161, 63, 82,125,243,147,132,171,161, 59,188,174,101,225,173, 26, 74,245, 55,215,179,199, 0, 88,242,196,132, -152,157, 93,152,253,215, 95,178, 46, 43, 86,224,236,160, 65, 8,228, 56, 28, 13, 8,128,135, 80, 8, 55,137, 4, 12, 33, 40,220, -185, 19,167,182,110,133,175, 68, 2,168, 84,176,204,154, 5, 67, 76, 12,204,121,121,133,206, 18,173, 59,119,238, 60,181,214,169, - 36, 98, 52,121,242,228,159, 50, 51, 51, 7, 84, 38,230,160, 65,131,142, 28, 58,116,200,183,162, 56,121,121,121, 19, 0, 76,168, -132,244,240,132,144,169, 69,142,241,198,140, 26, 53, 74,115,238,220,185, 97,132,144,239,173,171, 9, 66,136,207,240,225,195, 71, - 22, 35, 89,229,158, 58,164,148, 62, 84, 42,149,179, 38, 76,152, 48,231,171,175,190, 82, 90, 13,223, 47, 95,190, 12,139,197, 2, -161, 80, 8,142,227, 48,124,248,240,252,204,204,204, 5,165,121,116, 46, 1,215, 66, 8, 25, 56,103,206,156,225,223,124,243,205, -107, 44,203,122,115, 28,151, 94, 88, 88,184,183,176,176,112,121, 69, 78, 93, 21,149,195,224,105,211,166, 13, 94,184,112, 97, 15, -134, 97,124, 44, 22, 75, 70, 94, 94,222,142,194,194,194, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40, - 40, 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198, - 25, 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188, -189,246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171, - 86, 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216, 62,219, 95, -118, 54, 90, 14, 9,199,113, 16,137, 68, 16, 8, 4,240, 15, 8,176, 61,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150, -101, 9, 33,232,215,175,159, 67,207,125,243,205, 55,113,244,232, 81,176, 14,178, 66,150,101, 81,181,106, 85,135,118, 94,224,160, - 61, 21,203,178, 8, 10, 10,170, 48,166, 61, 23,121,158, 8, 86, 73,239, 75, 34, 85, 37, 73,137,198,240,177,105,133,179, 7,126, -125,114,202,141, 20,253,214,152,212,130, 15, 0,208, 77,215,228,251,235,123,179,175,188, 18,158, 0,195,242, 86, 32,234, 71,206, -219,104,126, 50,136,194, 23, 9,124, 32,166,111,191,153, 98, 1,153, 95, 74, 34,146, 68, 82,249,212,181, 43,190,253,106,248,216, - 15,149,215, 98, 83,145,147,111, 0,203, 50,246,131, 39, 4, 2, 22,106,133, 20,193,126,110,216,240,227,215,121,121,185,217,211, - 74,139,123, 88, 69, 37, 26,221,177, 73, 13,137,200, 95,135,136,122,125,193, 74,255,118, 50, 75, 83, 74,217, 29,108,185, 31,175, - 62,212, 73,127,123,168, 27, 93, 34,209, 50, 26, 95,249,180,115,231,125, 51,119,239,150, 55, 93,179, 6,177,195,135, 35,160,176, - 16,146,162,173, 68,134, 16, 40, 69, 34, 40, 69,162, 71, 36,107,225, 66, 20, 90, 44, 88, 52,104, 80,129,193,104,236,236,164, 70, - 66,212,182,109,219, 74, 35, 89,246,196, 8, 78,218,121, 57, 74,182, 58,117,234,116,132, 82, 42,121, 14, 86,242, 86,178,101, 58, -119,238,220,200,227,199,143,199,226,241,192,162,217,199,143, 31,143, 29, 49, 98, 4, 89,185,114,229, 42, 0,159, 57,234,192, 51, - 63, 63,255, 91,141, 70,131, 54,109,218,124, 54,111,222, 60,207,198,141, 27,195,199,199, 7,121,121,121,184,112,225, 2,198,143, - 31,175,205,205,205,157,151,149,149,245,149,147,105,230,138, 52, 55,203, 43,179, 28, 0,172, 46,186, 42, 69,222,126,251,237,203, -177,177,177,153,222,222,222,205, 68, 34, 81, 61, 60,178, 3, 74, 1,176,202, 89, 66,100,149, 49, 99,198,252, 21, 27, 27,155, 17, - 24, 24,216,188, 8, 83, 3, 32, 17,192,138, 10, 96, 38,157, 63,127, 62,168, 73,147, 38,140, 80, 40,164, 44,203, 66, 40, 20, 82, -129, 64, 64,139,236,106, 40, 0,236,216,177, 67, 2, 64, 11,151,252,211,125,211,230,222, 33, 57, 57,217, 70,178,236, 28,150, 70, -181,106,213,234, 98, 17,201,178,222,179,252, 75,105,197,204,153, 51,177,108,217, 50,148,231,209,188,232,116, 31, 41, 15,207,170, -209,226, 56, 14, 38,147, 9,215,174, 93,179,249,236,178,110, 23, 90, 93, 59, 88, 44,150, 50, 79,171,115, 28,199, 25,141, 70,252, -250,235,175, 14,145,173,159,127,254, 25,122,189, 30, 92, 57, 12,206,222, 21, 67,131, 6, 13,160,213,106,109,135,125,162,162,254, -118,149,103, 50,153,156, 34,174, 86,204,136,136, 8,100,100,100,192,203,235,209,121,156,224, 65,127, 43,123, 44,186,255,166,255, -224,178, 52, 90,196, 81,151, 4, 13, 52, 26, 55,131,216,188,173, 91, 29, 73,187, 62, 81,110,168,238,167,130, 80, 36, 69, 82,174, - 5, 7,111,228, 98,197,145,148,248, 66, 51,247,218,173, 52,221,213,178,112,164, 10,183,189,141, 95,234,212,114,208,200,241,138, -124, 3,135,184,184, 7, 72, 79, 75, 6, 67, 24,248, 7, 6, 33, 36,164, 42,100, 98, 6,235,151,127,165,187,120,234,208,201,188, - 92,109,151,210,176, 94,211,136, 79, 45,124,163,101,243,208, 80, 21,129,197, 12,112,102,192, 98, 6,248,162, 87,235,119,252,227, -109,238,250,245,108, 58,229,146,246,244,206,108, 99,137, 49,171,250, 16,210, 82,227,225,177,111,250,142, 29,114,222,100, 66,230, -132, 9,144, 91, 44,144, 22,173, 74, 0, 0, 18, 9, 44,179,102, 61, 34, 89, 3, 7, 22,228,100,103, 59, 29,130,199,219,219,123, -117, 70, 70,198, 11,231, 25,222,211,211,243,211,138,184,137,120,134,105,242, 1,144, 77, 41, 53,149,176,178,246,182,106,185, 42, -128, 91,213,219,219,123, 10,195, 48, 45, 40,165,158, 12,195,100,241, 60,255,103, 90, 90,218,151,148,210,187,174, 41,245, 95,171, -111,171,103,248,242,246,177,211, 0,188, 15, 32,143, 82, 26,231, 42,185,127,188,158, 26,226,209, 41,172, 82, 67,240,224, 95, 60, -121,232,233,233,121,102,223,190,125,141,171, 87,175,206,216,155, 49, 88,125,229, 89,183,183, 4,130, 71,250,136, 99,199,142, 89, -250,245,235,247,103, 74, 74, 74,155,210, 48,213,106,245,254, 43, 87,174,188,156,147,147,243, 4,161,178,247, 20,111,253,172,211, -233, 48,118,236,216, 3,185,185,185, 37,134,224,209,104, 52, 11,191,250,234,171,247,122,245,234,197, 88,221, 81,216, 95,214,112, - 65,214,203,100, 50, 97,221,186,117,252, 55,223,124,179, 56, 59, 59,187,212,173,195,128,128,128,248,164,164,164, 32,171,171, 5, - 71,156,138, 86,173, 90, 53, 57, 46, 46, 46,224,159,196,124, 81, 9, 87,113,237, 22,113,198,247, 19, 33,132, 68,248, 40,250, 82, -160, 15, 3,190, 46, 67,136,216, 66,113, 11, 20,251,229,130,130,239, 47, 36, 81,135,182,206, 68,114,249, 56,149,210,253,243, 94, - 3,222,241,172, 26, 26, 70,124,253, 3, 65,192, 32, 53, 37, 17, 15,238,221,166,219,126,250, 46, 83,151,171,157, 81, 80,144,255, - 93, 89, 56,181, 9, 9,173,166, 22,109, 18,115, 8,135, 53, 31,197,226, 83, 61,193, 48, 1,152,132,204,205,184, 60,115,223,235, -101,108,251, 88,201,214,212,109,219,228,226,240,240, 39, 28,197,241, 60, 15, 67, 76, 12, 22, 13, 26, 84, 33,146,229, 18,151,184, -228,169, 7,180,234, 40,223, 71,150, 25, 64,194,191, 25,188,248,255,121, 29, 61,183, 65,165, 9, 33, 10, 15, 15,143, 67, 44,203, -134, 88, 53, 50,246, 54, 67, 37, 4,148,142, 75, 77, 77,237, 72, 41, 45, 40, 3, 51, 84,165, 82,125,199,113, 92, 83, 71,130, 74, -179, 44,123, 54, 47, 47,111, 92, 89, 65,165,159,197,169, 67, 47, 47,175,187, 15, 30, 60, 8,181,158,162,182,159, 43,139,151, 3, - 0,220,185,115, 7,109,219,182,125,144,156,156, 92,245,159,196,124, 94,165, 20, 63, 90, 79,175,209,122, 6,141, 60, 64, 36, 81, - 14, 22,203,164, 29,120,179, 37, 2, 4, 16, 8,133, 55,141,250,194,195,134,194,252,181,165,109, 23,254,147,210,135,144,150, 18, -177,120,191, 72,173,150,149, 84, 78,230,188,188, 66,131,209,248,138,139,100,185,196, 37, 46,113,137, 75, 94, 32, 2, 28,238,225, -225,177, 79, 40, 20, 74,236,201,100,241,247, 86,177, 88, 44,250,244,244,244, 46,101,237,190, 60, 11,204,255, 76,121, 59, 75,180, -118,237,218, 69, 29,245,222, 74, 8,233,228, 72,204, 42, 59,195,183,114,125,103,252,219,152,207, 48,239,229,122,197,117, 2,179, - 45, 30, 29,143,157, 17, 29, 29, 61,253, 5, 72,103,101,214, 81,165, 98, 90,235,220, 81, 92,103, 48, 29,109, 83, 78,166,211,161, -118,255, 60, 96, 58,210,151, 42,152,206, 50,219,104, 5,235,189,204,190,244, 28,165,179, 50,235,168, 82, 48,139,183, 31, 71,112, -157,197,116,164, 47, 85, 32,157,229,182,251,231, 5,243,105,199,144, 50,210, 89,106, 27,117,180, 45,149, 82,247,229,206, 77,207, -171, 38, 11, 0,172,254,180,138,107,180, 74, 51,136, 23, 56, 75,178,158, 69,226,237, 39, 29, 56,232,167,228,223,192,172, 8,225, -114, 38,173,149, 40, 71, 42, 27,179, 88,121, 86,150, 76, 47, 26,208,143,194, 1,135,163,206,228,189, 50,234,189, 88, 94, 43, 5, -215, 30,179,178,202,178,164, 65,177, 50,211,249, 44, 48, 43,171, 47, 21,199,172,140,118, 95, 82,189, 63,195, 58,170,172,116, 86, - 74, 95,122, 22,109,190,132,246,243,212,184,197, 49, 43,163, 47, 21,199,172,140,118,255, 79, 96, 86, 70, 95, 42, 9,179, 50,218, -125,105,117,255,162,106,166,172,219,133, 69,132,139,148, 64, 62, 31,219, 62,180, 18, 47,166, 34,133,246, 44,228, 89, 4,146,172, -108, 66,244,172,200,230,174, 93,187,104, 17,211,127,238, 49, 43,185,142,166, 23, 97, 86,230,202,166, 93,101,213,209,179,104,239, -246,152,149,133, 95, 28,167, 50,234,169, 36,204,167, 77,111, 41,233,172,244,188, 63,109,187,255,167, 48, 43,185,142, 42,165, 47, - 21,195,108, 87,201,139,129,118,118,159,167, 87, 38,102,101,245,165, 18,210,249,212,245, 84, 18,230,211,166,183,148,116, 86,122, -222, 43, 99, 14,121, 86,184,255,150, 70,235, 70, 20,161,148, 41,185, 77, 20, 57, 44,181, 93, 21,210,104, 61, 75,146,245,172, 38, -181,202,196,126, 22, 90,157,103,165,121,171, 44,173, 78, 9,184, 71, 43, 17,238, 72,101,167,179, 40,125,228,121,118,122,231,234, - 75,174,190,244,255,169, 47,149,212,110,162,163,163,167,239,218,181,235,243,231,169,157, 23,199,172, 44, 66, 84, 66,222,159,170, - 47, 21,255,223,202,232, 75,229, 96,146,103,145,255,202,238, 79,255,164, 70,171, 52,146, 85,218, 61,193,243,146, 1,107, 35,169, -228,149, 9, 42, 89, 3,243,204,242, 93,201,233,108,247, 44, 52,132,207, 64, 42, 61,157, 69, 43,229,207,159, 65,222, 95,148, 50, -117,245, 37, 87, 95,122,238,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,207,176,199,168,172, 54,250,172,243, - 94,153,125,233, 89,212,253,139, 38,255, 55, 0,242, 66,135, 78, 90, 48, 10,210, 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, 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, 6, 98, 75, 71, 68, 0,255, 0, +255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 32, 0, + 73, 68, 65, 84,120,218,236, 93,119,124, 20,197,226,255,206,222,238,245, 75, 39,141, 36,164, 0,129, 96,232, 69, 18,138,116, 20, + 80,144,166,248, 16,158,232,207,134,189,129,138,136, 8,196,138,192,123, 34, 79,159, 10,136, 34, 88, 64,240,209,148,222,155, 74, + 47,146, 0, 9,164,147,122,253,110,231,247, 7,183,231,229,184, 22,184, 40,194,124, 63,159,253,220,221,222,238,119,103,102,103, +102,191,243,157,217, 25, 66, 41, 5, 3, 3, 3, 3, 3, 3, 3, 3, 67,240,193,177, 36, 96, 96, 96, 96, 96, 96, 96, 96,184, 78, +132,214,234,213,171, 3,182,192, 8, 33,253, 2,229,116,108,183, 93,239,156, 13, 24,119, 26, 68,206,219, 28,156,175,255, 77,194, +121,219,245,202, 41,197, 55, 80,222,250,112, 6,154,167,234, 25, 78, 26,236,112, 54, 20,103,176,202,145,135,112,210, 6,184,239, +175,255, 77,194,121,219,245,198,233,158,127, 2,225,173, 47,103, 32,121,234, 42,194, 73,131, 29,206,134,226,188,214,114,228, 35, +156,244, 90,243,146,151,123,255, 58,110, 34,240, 13, 37,178,234,131,193,131, 7, 19, 23,126,114,189,114,186,166,131,196, 31,204, +176, 6, 17,155,130,205,233,150,158,193,194,235,131, 7, 15, 38,171, 87,175,222, 12,224,182, 96,198, 61, 24,247,221, 45,174, 65, +225,173,175,200,170, 47,103,176,242,125, 67,115, 6,171, 44,185,115, 6, 35,223,123,186,239, 13,120,143,130, 21,206,160,148,165, +134,200,243, 30,242,207, 53,243,186,115, 6,163, 44,185,115, 6, 35,223,255, 25,156,193, 40, 75,158, 56,131,145,239,189,221,123, +230,104,253,185,130,192,189,128,247,186,158, 5, 81, 67,137,205, 64, 29,152,235,129, 51,200,247,232,117, 7,103, 48, 91, 55,189, +130,117,143, 26, 34,191,187,114, 6,139,223,157, 39, 24,247,201, 19,231,181,134,215, 75, 56,131, 30,247,107,205,247,127, 22,103, +144,239, 81, 80,202,146, 27,103,175, 32, 55, 6,122,185,252,126, 61,152,156,193, 42, 75, 30,194,121,205,247,201, 19,231,181,134, +215, 75, 56,131, 30,247, 96, 60, 67, 26,138,247,134,117,180, 26, 82,100, 53,212, 67, 45,152,220, 13,225,234, 52,148,243, 22, 44, + 87,199, 3,239,230, 32,210,109, 10,118, 56, 29,225, 35, 13,229,190, 94,239, 96,101,137,149,165,235,173, 44,121,202, 55,131, 7, + 15,126,125,245,234,213, 83,175,183, 70,180, 43,103,176, 4,145,135,184, 95, 83, 89,114, 63, 55, 24,101,201, 15, 39,105,136,248, + 7,187, 60, 49,161, 85, 15,167, 40,200, 45, 19, 4,217,129,105,176,120, 7, 57,156,189, 26,194, 33,108, 0, 4, 61,156,142,150, +242,212, 6,136,251,223, 37, 77, 89, 89, 98,101,233,186, 43, 75,110,121,178, 87, 16,157,162,160, 58,207,238,156,193,184,134, 43, + 71,176,242,104, 67,199, 61,152,101,169, 33,238,253,223, 14,148,210, 6,219, 0,244, 99,156,140,147,113, 50, 78,198,201, 56, 25, + 39,227,188, 89, 55, 54,189, 3, 3, 3, 3, 3, 3, 3, 3, 67, 3,129,176, 9, 75, 25, 24, 24, 24, 24, 24, 24, 24, 26, 6, 94, +199,104, 37, 36, 36,172,210,104, 52,205,188,253, 95, 91, 91,123,241,194,133, 11,189, 89, 18, 50, 48, 48,248,109,209, 17,194,225, +143,183,156, 69, 0,148,178, 86, 30, 3, 3,195,205, 44,180,148, 74,101,218,177, 99,199,210, 69, 81,132,221,110,135,205,102,115, +126,154,205,102,244,236,217,179,222, 3,233,227,226,226,182,200,100,178,148,250,156, 99,183,219,207, 21, 22, 22,118,247, 81,129, +239, 0,144, 70, 8,113,221,231,243, 19,192, 5,139,197,210,193, 23, 39, 33, 36,205,157,207, 11,151,244,221, 39,103,120,120,248, + 62,158,231, 19, 61,113,121,251, 46,138,226,153,226,226,226,108,150, 77,255, 28,196,197,197,109,225,121,190,222,249,243,226,197, +139, 94,243,103,227,198,141, 15,114, 28,215,184, 30,148, 50, 81, 20, 79, 92,188,120,177,187, 55, 33, 34,229,121, 63,194,166,206, +119, 66, 72,190,205,102,235,228,175, 28,249,226,242,144, 71,125,114,186,138, 44,158,231,115, 98, 98, 98, 30,213,235,245, 70, 0, + 84, 38,147,209,168,168, 40, 41,108, 0, 0,155,205, 86,114,233,210,165,214, 44, 39, 50, 48, 48,220, 20, 66, 75, 20, 69,206,100, + 50,225,228,201,147,240, 82,223,219,175,226,122,233,251,127, 90, 31, 19, 18, 19, 11,155,197, 2,109,163,104, 39,119,209,209,195, +176, 89, 45,176,153,205,104,210,185,171,244, 16,195, 45,183,220, 34,243,195,153,248,214, 91,111,197,132,132,132,192,104, 52,194, +104, 52,194,100, 50,193,104, 52,194,108, 54,195,108, 54,195, 98,177,192, 98,177,192,102,179,193,100, 50, 97,195,134, 13,254,194, +158, 56, 99,198,140,152,208,208, 80, 39,159,180, 73,156, 18,175,213,106,133,209,104,196,207, 63,255,236,147,147,231,249,196, 11, + 23, 46,196,200,229,114, 80, 74, 33,138,162,167,193,133,117,208,180,105, 83, 11,203,162,127, 42,210,103,124,185, 58, 38, 76,173, +132, 77, 20, 49,164,109, 83,231, 31,103, 62, 89, 6,106,179, 67,180,217,208,124,226, 88,224,178, 37,131, 86,173, 90,249,204,159, +148,210,228, 25, 95,174, 14, 15,148,179,180,180,212,144,145,145,113, 1,151, 95,125,246,230,248, 36, 26, 12,134, 24, 41, 12,238, +130,136,227,184, 58,219,218,181,107, 49,100,200, 16,127,113, 79,124,230,153,103, 98,172, 86, 43,204,102, 51, 76, 38, 19,172, 86, + 43,108, 54,155,115,179,219,237,206,205,108, 54, 99,247,238,221,129, 58, 89,111,245,239,223,255,129,213,171, 87,107,191,255,254, +123,109, 74, 74, 10,228,114, 57,100, 50, 25,100, 50, 25, 56,142, 3,207,243,184,245,214, 91, 9,203,130, 12, 12, 12, 55,141,208, + 50,153, 76,185,237,219,183,167,142,239, 9, 74,165, 82,238, 86,129, 54, 78, 79, 79, 63,225,126,158,191, 46,197,144,152, 88, 76, + 78,138, 4, 0,188,118,182,204,249,128,120, 59,187,157,243,152, 55, 10, 42, 1, 0,106,181, 26,196,181, 25,237, 5, 90,173, 22, +253,251,247,135, 66,161, 64,167, 78,157, 32, 8,130,199, 77, 46,151, 67, 16,132, 64, 30, 14,208,233,116,152, 54,109,154, 36,146, +160, 85, 41,241, 68,118, 39,168, 64,241,159,195,167, 96, 22, 41,120,158,119,110,129,112,202,229,114, 28, 58,116, 8, 60,207, 67, + 38,147, 57, 63,165,239, 43, 87,174,196,200,145, 35,193,243, 60,212,106, 53,112, 19,205, 51,114,189, 32, 76,173,196,184,249,223, + 1, 0,206,207,158,232,188,119,187, 31,123,205,121, 76,242,255,141, 6, 33, 4,130, 32,128,227,184,160,113,150,151,151, 27,238, +189,247,222,109, 33, 33, 33,107,171,170,170,224, 71,192,225,252,249,243,224,121,222,107,126,231, 56, 14,239,191,255, 62, 78,159, + 62, 29, 80,220,141, 70, 35, 62,254,248, 99,216,237,246, 58,188,210,119,247,125, 1,138,172, 55, 7, 12, 24, 48,118,245,234,213, + 17,132, 16,252,235, 95,255,130, 92, 46,199,160, 65,131, 16, 21, 21,133,117,235,214, 65, 46,151,227,197, 23, 95,100,153,143,129, +129,193, 23, 4, 0,237, 0, 68, 59,140,158,106, 0,225, 46,255,151, 56, 62,163, 93,126,239,245,192,211,217,113,140,244,191,244, +219, 12, 64,225, 97,127, 25, 0,181, 99, 51, 1,216, 1, 32,211,229, 58,210,121,240,118, 93, 30,184,188,254, 16,128, 77, 0,122, + 73,147,232, 93,188,120,241, 14, 23,103,229,216,137, 19, 39, 90, 74,154,199,209,133, 40,183,217,108,233, 82,119,162,228, 22,245, +235,215,207,103, 11,223,102,177, 92, 33, 64, 60,105, 41, 79,221, 21,222, 4,140,197, 98,193,232,209,163, 47,223, 9, 47, 15, 29, +215, 45, 0,237, 6,179,217, 12,158,231,209, 34, 41, 26, 83, 6,182, 71, 23,106, 69,109, 13,129,173,178, 22, 67,117, 86, 28,107, +213, 1, 11,206,149,224,108, 85, 13,120,158, 15,136, 83, 20, 69,175, 34, 75, 38,147, 97,254,252,249,184,247,222,123, 33,147,201, + 2,226, 99, 8, 62,108,162,232, 49, 31,122,203,179,129,220,167, 64, 56,203,203,203, 13, 67,134, 12,217,165, 84, 42, 23,198,198, +198, 94,200,207,207,247, 43,180,220,197,143,123,163,226,189,247,222,195,220,185,115,209,187,119,239,128,194,105, 50,153, 64, 8, +193,130, 5, 11,174,248,111,250,244,233, 87, 92,207, 23,167,163,129,196, 53,110,220,248,177, 53,107,214,132, 74,199, 54,106,212, + 8,130, 32,160,117,235,214, 8, 9, 9,193,182,109,219, 96,183,219, 3, 46,151, 12, 12, 12, 55, 46, 60,105, 17, 23,244,156, 60, +121,114,167,156,156,156,153, 89, 89, 89, 95,237,216,177,227, 75, 66,200, 42,151, 58,113,136,163,238, 89,229,242,187,179,155,232, + 17, 0, 68, 19, 66, 86, 73,199,187,254,118,217,223, 15,128, 66,250, 61,121,242,228,204,156,156,156,153,147, 38, 77,122,121,214, +172, 89,242,201,147, 39,183,201,201,201,153, 41, 93,199, 83, 56, 60, 57, 90, 62,103, 21,150,186, 17,143, 31, 63, 14,127,227, 87, + 41,165, 62,107, 75,109,163,104,167,147,245, 70,114,148,115,255,180,252, 10,231, 3,108, 94,199,102,208,106,181, 24,248,198, 59, + 1, 57, 69,102,179, 25,197,197,197, 78,151,193,223, 22, 40,167, 70,173,194,134,103, 90,227,124,153, 2,175,239, 44,199,234, 95, + 78, 67, 16, 4,220,222,170, 53,238,144,135,224,213,100, 5,158, 57,149, 7,107,128, 99,122, 41,165, 30, 5,150,244, 93,234, 66, + 97, 66,235,175,195,144,182, 77,157,174,211,238,144,190,206,253, 35,107, 15, 57,239,201,115,243,223, 6, 0,244,238,112, 43, 2, + 25,207,237,143,179,172,172,204,208,189,111,175,205,118,131,249,243,177, 99,199,230,110,220,184, 81, 29, 80,243,206,131,208,146, + 92, 91, 73,100,241, 60, 15,179,217, 28, 80,220,205,102,179,215,242, 33,151,203,235,237,104, 1, 64,109,109,173,121,197,138, 21, +152, 55,111, 30,162,162,162, 48, 96,192, 0,196,199,199, 99,217,178,101,160,148, 98,226,196,137, 80,171,213,146,123,205, 50, 32, + 3,195,205, 13, 95, 90, 68,153,147,147, 51,211, 93,200,184,254,118, 21, 80,110, 98,202, 85,172,101,250,121,254,175,114, 23, 79, +210,117, 9, 33,171,102,205,154, 53,196, 79, 56, 74,188, 9, 45,159,211,247,155, 76,166,220,182,109,219, 6,164, 38,244,122,125, +161, 63,177,225,169, 85,239,234, 18,232,116, 58,104, 67,117,224, 2,172,119,173, 86,171, 83,168,172, 95,191, 30,106,181, 26,131, + 6, 13,186, 38, 71,203, 98,177, 64, 33, 23,192, 53,138,197,184,217, 27, 81, 86,109,112, 62, 96, 54,157,201,197,129,162, 98, 60, +147,213, 23, 90,117, 49,106,204,230,128,156, 55, 81, 20,175, 16, 89, 60,207, 99,244,232,209, 78, 55,193,117,220, 10, 88,215,225, + 95, 6, 79,249,211,125,191,232,230, 84, 93, 13,103, 89, 89,153, 97,200,144, 33,187,236, 6,243,231, 5, 5, 5,187, 0,168,186, +116,233, 82,111,161, 37, 9, 44, 65, 16,240,254,251,239, 99,238,220,185,206,255, 3, 21, 90, 54,155,173,142,128, 58,117,234, 84, +157,107,185, 11, 59, 95,221,166,148, 82, 74, 8, 17, 1,136,105,105,105,206,115,226,226,226, 16, 30, 30, 14, 81, 20, 33,138, 34, + 84, 42, 21,212,106, 53,228,114, 57,203,116, 12, 12, 12,190,180,136, 97,210,164, 73, 47, 19, 66, 86, 57,156,165,195, 62, 4,149, + 39,116,118, 19,107, 37, 94,234,174, 33,158,196,150,235,119, 9,147, 39, 79,206,244, 16,142,189, 94,133,150,219,180,251,117,224, +218,141, 24,172,135,152,175, 7,153, 46, 60, 20,106,173, 22, 50, 25, 7, 66, 8,245,199,101,177, 88,156, 21,255,163,143, 62,234, +115,220, 74,160,227,169, 44, 22, 11, 56, 94,134,139,113,169,176,115, 91,157,231, 74, 27,199, 11, 56, 27,215, 18,178,227, 7, 33, + 4,248,192,117,119,180, 38, 78,156,136,143, 63,254, 24, 28,199, 57,211,132,231,121, 52,111,222, 28,185,185,185,172,196, 93, 39, + 34,203,219,126,187, 93, 12,216,133,241,116, 92, 89, 89,153, 97,212,168, 81,155, 43, 43, 43, 63,191,229,150, 91, 78,225,242,244, + 7, 92,160,124, 60,207,215, 17, 88,146,200,154, 51,103, 78, 29, 81,100,181, 90, 3,106, 8, 88,173,214, 43, 4,207,187,239,190, + 91,231, 19, 0,178,179,179, 3,114,134, 1, 80,142,227,168, 92, 46, 71,255,254,253,209,166, 77, 27,124,255,253,247, 16, 69, 17, +143, 63,254, 56,212,106, 53, 62,248,224, 3,216,108, 54,188,245,214, 91,204,209, 98, 96, 96,240,165, 69, 76,179,102,205, 58, 60, +107,214, 44,167,179,228,238,104,121,163,116,136,170,104, 73,164,225,242, 88,171,189, 62,158,213, 67,188, 9, 48,215,125, 57, 57, + 57, 51, 61,132,195,189,187,242,207, 95,235,176,240,200, 33,188,211,173, 61,128,186,221,133,243,111,109, 9,173, 78, 11,109,136, + 14,163, 86,110, 5, 0, 71,165, 63, 41, 32, 71, 75, 18, 90,101,101,101, 62, 69, 86,125, 28, 45, 78,193, 99,121,226, 37, 80,133, + 0,222,108,173, 35,180,100,188,128,243, 81,169,224, 4, 57,120,187, 45, 32, 78, 74,233, 21, 93,133,227,199,143, 7, 33,196,249, +134, 88,219,182,109, 93,185,216,147,231,207,206,159,251, 62,193,177,111, 30, 3, 0,116,175,173,117,222,139, 25,109,255,120,191, + 99,246,161,205, 78,247,241, 13, 60,127, 85,156,101,101,101,134, 46, 25,153,187,228,145, 97,159,159, 59,119,110, 23, 0,238,158, +123,238, 9,111,219,182,109, 64,101, 82,122,185,194, 93,100,185, 58, 89,210,167,213,106, 13, 40,238,210, 88, 41,127,144,186, 17, +253,229,121, 74, 41,141,140,140, 4,199,113, 8, 13, 13,133, 78,167,115,190,113,171, 82,169,160,209,104,156,227, 59, 3, 20,110, + 12, 12, 12, 55, 47, 34, 36,161,227, 16, 75,117,156, 38, 74,233, 16, 87, 49,228,173, 11,209,225, 64,109,241,103,172, 57, 4,154, + 71, 72,206,154, 91,157,188,202,155, 72,227, 37, 5,233,250, 25, 31, 31,255, 63,157, 78,151, 26,104,236,235, 51,121,169,221,106, +185,194,217, 34,132, 64, 23,162,131, 90,167,133, 58, 68,231,213,245,242, 37,180, 36,167, 72,122,232, 44, 92,184, 16, 58,157, 14, +255,252,231, 63,235, 61, 70,203, 41,180,228, 28,214, 41,127,134, 76,193,215, 17, 89, 60,207, 67, 38, 8, 40,212,197,131, 19, 4, +240,182,192, 92,178,202,202, 74,240, 60,143, 41, 83,166, 56, 91,240,174, 34,171, 62,113,102,104, 24, 80,187,245, 10, 23,202,155, +251,122,181,156,146,147, 37,143, 12,251,188,101,203,150, 78, 39, 75,163,209, 72,111,155,250, 5,199,113, 30, 69,150,251, 27,130, + 60,207, 95,206,203,126,222,142,116,117,180,102,205,154,229,228,117,117,178, 36,212,167, 28, 73, 97,221,188,121, 51, 14, 28, 56, +128, 71, 31,125, 20,106,181, 26,115,231,206,133,205,102,195,244,233,211,161, 86,171,161, 80, 40, 88,230, 99, 96, 96,110, 86, 29, + 45,226,134, 18,183,113, 80,196, 77,212,148,120, 18, 88,174,221,132, 46,223,173, 30,120,205,110, 93,138,238,251,165,207,178, 89, +179,102,109,148,156, 44,151,253,117,194,225,215,209, 82, 42,149,169, 39, 79,158,116, 78, 86,234,235,211,108, 54,163,119,239,222, + 1, 59, 99,210, 91,135, 60, 47,171, 35, 44, 52, 33, 58,104, 66, 67,160,214,233,220, 5, 7,241, 87,137, 75, 45, 98, 87,161, 53, +117,234, 84,240, 60,143,143, 63,254, 24, 0,240,252,243,207, 7, 60, 70, 75,226,132,157, 32,159,254,142,246,179, 71,194,252,133, + 21, 69,219,127, 5,207,243,136,233,122, 7,196, 46, 35,161, 87,235,192,219,109, 1,191,117, 88, 94, 94,142,220,220, 92,200,100, + 50, 60,251,236,179,117,230, 58,114,127,147,109,253,250,245,204,209,250, 43,132,150,104, 11, 72, 84,213,199,117,116,229,148,198, +100, 85, 86, 86,126,126,238,220,185,221, 0,184,177, 99,199,134,107, 52, 26,252,247,191,255,213, 3, 80, 44, 91,182, 76,237, 79, + 20, 73,249,198,159,200, 18, 4,225,114, 94, 14, 36,238,180,238,148, 37,254, 6,198, 7,146,231,165,176, 18, 66, 96,183,219,161, + 86,171,235, 56, 89, 42,149, 10, 74,165,146,101, 60, 6, 6, 6,127,216, 91,143, 99, 59,187,136,166,189, 87,201,187, 55, 88, 1, +231,189, 9, 13,147,201,132,163, 71,143, 6,202, 19,240,228,165, 73,157,110,197, 27, 5,149, 32,132,224, 63,217,183, 64, 27,170, +131, 70,171,197,136,239, 55, 59, 43,238, 67, 51,159,135, 82,171, 67,227, 30, 3, 2,170,200,165,174, 67, 87,161, 85, 81, 81, 1, + 65, 16,240,230,155,111,130,227, 56,188,245,214, 91, 72, 72, 72,192,197,139, 23,177,108,217,178,128, 28, 45,153, 93,134,248,251, + 51,160, 25, 31,134,208,251,123, 34,162,255, 84, 20,152,121,236, 48,106,208,211,120, 4,138,117,115, 96, 22,237, 1,191,129,101, +179,217,176,121,243,102,247, 1,239,160,148, 58,103,221,183, 90,173,176, 88, 44,120,235,173,183,192, 86, 40,249,243, 17,223,117, + 34,162, 59, 61, 2, 0, 88, 57,107,130,115,255,148, 67,127,228,207,247,191,184,188, 0, 64,203,148, 1,245,226, 44, 43, 43, 51, +220,222, 59,123,139, 81, 20, 62,107,221,186,117, 29, 39, 75,165, 82, 17,199,239,128,196, 53,199,113,144,201,100, 87,116, 23,122, + 19, 91,129,140,209,178,217,108,206,137, 68,125,141,103,188, 26, 71,107,194,132, 9,136,143,143,119, 58, 89,111,188,241, 6,212, +106, 53, 38, 79,158, 12,171,213,138, 57,115,230,176,204,199,192,192,240, 87,136,178, 6,135,199,154,212,104, 52,230,181,105,211, + 6, 94,254, 75, 80,169, 84,130, 91, 37,221, 56, 61, 61,253,132,123, 23, 34, 33,164, 31,165,116,131,167, 74,157, 16,130,144,208, + 16,168,116, 90,104,220, 92, 44, 85, 72, 40,148, 58, 29, 56,185,224,233,129,112, 5,167, 52,182,196, 85,104, 73, 91,101,101, 37, + 4, 65,192,188,121,243, 16, 26, 26, 10,147,201,228,151, 83,122,232,200,100, 50,232,207, 87,227,216,204, 13, 80,168,118,160,217, +128,123, 17, 47,168, 33,223,246, 45, 12,118,171,207, 9, 75, 61,113,166,167,167,227,181,215, 94,187, 98, 90, 7,111, 72, 72, 72, +240, 27,247,107, 5,227,244,204,233,235,173, 88, 9, 34,181,123, 58,206, 35,167,228,100, 25, 69,225,179,220,220, 92,201,201, 10, +211,104, 52,248,232,163,143,244, 0,184,233,211,167,107,146,147,147,101,129,228, 37,153, 76,134,217,179,103,123, 28,147,229, 73, +116,213,167, 28,185,158,123,219,109,183,121,156,176,212,147,120,243,196, 41,133, 53, 42, 42,202,233,100,217,237,118,231,219,134, +210,236,243,222, 26, 21, 44,127, 50, 78,198,121,243,112,222,168,240,248,148,191,112,225,194,237,222, 78,104,214,172,217,201,147, + 39, 79, 54,151,150,226,112, 84,156,114,163,209,152,158,157,157,237,215,218, 17, 69, 17, 74,165, 18,148, 82,244,121, 45, 7,132, + 3, 56,212,125,136,197,116,235, 11,153,140,135,120,121,169, 15,191,111, 29, 26, 12,134, 58, 15, 7, 79, 91, 77, 77, 13, 76, 38, + 83,192,179,121, 27,141,198, 58, 83, 48, 16, 42,226,236, 79, 95, 95,241,246,161,180, 5, 58,110, 71,165, 82,213,233,250,241, 5, +127,115,146, 49, 4, 31,210, 11, 11, 0,208, 34,123, 16, 68,209, 14,106,183,215, 89, 38, 41, 35,245,118,136,212, 14,139, 85, 15, +147,201,228,207,118, 36,165,165,165,134, 81,163, 70,109, 6,240,233,208,161, 67, 79,224,242, 27, 47, 84,167,211, 41, 5, 65, 16, + 1,148, 3,160,151, 46, 93, 10, 43, 40, 40, 16,141, 70, 99, 19,127,225, 92,189,122, 53,142, 30, 61,138, 30, 61,122,212, 89, 14, + 74,114, 69, 93,103,119, 15, 36,127, 74,221,229,158,102,132,247, 38,228, 2,133, 76, 38, 67, 88, 88, 24,228,114, 57,222,124,243, + 77,200,229,114,104, 52, 26, 0,192,156, 57,115,156,147,175, 50, 48, 48, 48,220, 52, 66,203, 95,189,233,163, 91,209,103, 23,162, +205,102,203, 79, 78, 78,174,215,197,236,118,123,145, 31,225,150,191,108,217, 50,185,171, 11,225,239,147, 82, 90,228,231, 97,155, +191,114,229, 74,185, 39,119,195,219, 2,211,254, 56,237,118,123,126, 74, 74,138, 87,199,196, 19,172, 86,107, 1,203,162,127, 30, +236,118,187,143,252,249,202,213,230,207, 83, 45, 90,180, 40, 8, 15, 15,255, 49, 54, 54,182,108,251,246,237, 81,157, 59,119,142, +114, 61,166,115,231,206,241,110,167,153,225,125,157, 67, 16, 66,242,135, 14, 29,234, 49,207, 75,162,201, 67,254,204,247,151,231, +247,236,217, 35,119, 61,223, 27,191, 75, 57,202, 15, 64,184,158,109,223,190, 61,231,202,227, 45,239, 91,173,214, 18,150, 11, 25, + 24, 24,110,122,161,101, 48, 24,206,183,105,211,198,230,229,191,115,190,206, 45, 45, 45,237, 20,236, 8, 88, 44,150,236,191, 3, +103, 73, 73, 73, 39,150,221,174,111, 52,196, 61, 42, 42, 42,234, 18,108, 78,155,205, 22,244,252,105,181, 90,179, 27, 34, 77,203, +202,202,178, 88,206, 98, 96, 96, 96, 66,171, 30, 8,116, 26, 7, 6, 6, 6, 6, 6, 6, 6,134,155, 29, 28, 75, 2, 6, 6, 6, + 6, 6, 6, 6,134,134, 1,193,229, 85,170,175, 64,125,222, 38, 32,132,244,171,239,133,253,241, 51, 78,198,201, 56, 25, 39,227, +100,156,140,243,198,227,244,199,125,195,189,205, 40,189, 77,213, 16, 27,128,126,140,147,113, 50, 78,198,201, 56, 25, 39,227,100, +156, 55,235,198,186, 14, 25, 24, 24, 24, 24, 24, 24, 24, 26, 8, 60, 75,130,191, 6,132, 16, 25,165,212, 30, 68,202, 8, 0,222, + 22,140, 51, 3,184,116, 53,193, 4, 32,119,108,210, 68, 71, 86, 0, 22,199, 22,192,212,245,211,184, 11, 23, 34, 50,169, 93,232, + 76, 9, 17, 68, 17,191, 52,105,146,116, 16,184,221, 12, 0,186,184, 86,173,116, 90,117, 63,147,197,156,170, 20, 20, 71, 43,106, +107,214, 27,139, 78,228,177, 28,194,192,240,151,212, 75,119, 2,152,230, 40,251,179, 40,165, 95,179, 84, 97, 96,104, 32,161, 21, + 18, 18,178,143,227,184, 68,127,243,243,184, 20, 80,216,237,246,252,242,242,242, 78, 1, 22,104, 30,192, 40,157, 78,215, 91, 16, +132,110, 0, 96,181, 90,183,215,212,212,108, 4,176,140, 82,106,187,202,138, 34, 20,192,104, 0,247, 57,118, 45, 1,240, 53,165, +180,234, 42,249,218,132,133,133,125, 35, 8, 2, 45, 45, 45,237, 10, 0, 81, 81, 81,187,172, 86, 43,169,170,170, 26, 65, 41,253, +173,158,124,156, 32, 8,239,247,232,209,163, 39, 33,228, 83, 74,233,188, 32,221, 75, 37,199,113, 30, 5,138, 40,138, 41, 87,193, + 39, 7, 16, 54,111,222,188,168,197,139, 23,183,207,207,207,111, 13, 0,137,137,137,135,198,142, 29,123,240,137, 39,158, 40, 3, + 80,233, 16, 92, 94,113,225, 66, 68,102,113,225,153, 71,139,138,143,142, 6,128,184,248,214, 95,203,100,156, 60, 33,225,192, 78, + 77,163,251, 26,181,104,217,244,145,175,254, 59, 79,158,146,154,132,159,119, 28,104,247,196, 83, 47,103,170, 98, 91,188,199,196, +214,159,135,208,208,208,125, 28,199, 37,250, 42,227,158,202,188,221,110,207, 47, 43, 43,235,228,141,147,231,249, 68, 95,245,133, +167,125,162, 40,158, 41, 41, 41,241, 56,213, 68, 88, 88,216, 78,158,231, 83, 3,229,146, 62,109, 54, 91,190,183,169,101,194,194, +194,246,201,100,178, 68, 95,241,244,244,159, 40,138,103,138,139,139,189,133,243,138,184, 7, 35,156, 87,195,233, 43,156, 82,125, + 4, 96, 78, 84, 84,212,173,101,101,101,255, 0,240,114, 85, 85, 85, 91,153, 76,134,200,200,200,151, 9, 33,167,195,194,194, 62, +169,172,172,220, 1,224, 41, 74,169,200, 74, 12, 3, 67,144,132, 22,199,113,137, 5, 5, 5, 49, 90,173, 22,192, 31,235,241, 73, +139, 73,139,162, 8, 74,169,243,211,102,179, 33, 35, 35, 35, 80,177,209, 58, 52, 52,116,249,228,201,147,155,140, 26, 53, 74, 33, + 45, 53,115,225,194,133,244,111,190,249,230, 31,111,190,249,230, 84, 66,200, 72, 74,233,161, 64,197, 11,128,190, 0,198,183,111, +223,126,248, 27,111,188, 33,239,211,167, 15,236,118, 59,126,252,241,199, 30,211,167, 79,159, 71, 8,249, 22,192,231, 0,126, 10, +180,178, 32,132,116,143,139,139,251,114,219,182,109,241,185,185,185,246, 81,163, 70, 45, 5,128,125,251,246,165,217,237,118,210, +181,107,215,213,132,144, 49,148,210,109,245, 72,243,225, 79, 62,249,228, 61, 19, 39, 78,140,249,231, 63,255,249, 0,128,121,142, +107, 17, 71, 58,215,119,129, 67,167,147, 69, 41,149,251, 56, 46,174, 30,206,150, 54, 55, 55, 55, 34, 59, 59,251,177,226,226,226, +103, 92,121,139,138,138,176,127,255,126,203,204,153, 51,103,239,216,177,227,195,212,212,212, 75, 0,106,189, 17, 81,187,208,185, +168,248,232,232,158, 89,243,194, 0, 96,217,202,199,238,221,115,176, 36,100,213,154, 5,255, 80,168,228,166,197,255,153, 45,111, +222, 44, 5,155,246,157,194,238,163,229,164,117,247, 33,124,229,170, 69,253, 1, 44, 96,197,243,207,129, 76, 38, 75,200,207,207, +143,209,104, 52, 30, 23,142,119, 27,151, 33, 77,128,138,244,244,116,239, 21, 11,207, 39, 22, 20, 20,196,168, 84, 42,103,221,225, + 94,103, 72,245,138, 51,175, 80,138, 22, 45, 90, 88,124,212, 73,201,231,206,157,139,209,104, 52, 78, 30, 79,225,115, 23, 28, 45, + 90,180,240, 21,247, 58,225, 12,132,147, 82,138,230,205,155,219,253,197, 93, 90, 1,195, 95,188, 37,206,212,212, 84, 90, 31,206, + 64,194,217,180,105, 83,139,159,219, 63,231,196,137, 19, 19,147,146,146,208,188,121,243, 29,183,222,122,107,168, 86,171,197,154, + 53,107,208,170, 85,171,204,208,208,208,221,203,150, 45, 19, 94,124,241,197,118,159,125,246, 25, 0, 60,193, 74, 12, 3, 67,144, +132, 22, 33, 4, 90,173, 22, 75,151, 46,245,186, 28,135,235,247, 38, 77,154, 4,116, 65, 66, 72,167,212,212,212,205,219,182,109, + 83,199,199,255, 49, 33,182,217,108, 70, 68, 68, 4, 30,127,252,113,197,157,119,222,217,124,192,128, 1,187, 8, 33,183, 81, 74, +247,249,225, 27, 30, 29, 29,253,175, 41, 83,166,196,222,115,207, 61,136,138,170, 51,233, 54, 70,141, 26,133, 17, 35, 70,200, 79, +156, 56,113,239,194,133, 11,239,157, 63,127,126, 33, 33,228, 9, 74,233,183,190,120, 53, 26,205,208,102,205,154,125,180,109,219, +182,152,152,152, 24,164,165,165,113, 47,190,248, 98,243,244,244,116,117, 98, 98, 34,119,241,226, 69,124,255,253,247, 9, 99,198, +140, 89,174, 80, 40, 30, 49,155,205, 43, 2,136,187, 34, 42, 42,234,229, 71, 30,121,164, 81, 85, 85,149,109,255,254,253, 39,165, +253, 10,133, 98,122, 86, 86, 86,103, 66,200, 23,148,210, 79,174,198,201,114,184,118,238,107,153, 88,165,255, 3,116,182, 20,191, +252,242, 75,100, 86, 86,214,183, 38,147,169,195,163,143, 62,122,110,230,204,153,234,208,208,208, 80, 0,164,170,170,234,210,180, +105,211,204, 31,124,240,193, 75,173, 90,181,234,187,115,231,206,225,237,218,181,179, 58, 68,220,149, 66,139, 16,103,120,206, 23, +148, 96,243, 14, 81,241,218,228,231, 19,223,158,145,122,118,239,145,243, 34,175, 14,197, 15, 91, 14,163,168,172, 6,255,219,121, + 4,113, 81, 33, 68,174, 20, 50,195, 19, 51,111,171, 44, 56,178,133,178,149,181, 27, 28,132, 16,104, 52, 26,252,240,195, 15, 87, + 44, 93,229,105, 89, 43,158,231, 17, 30, 30,238,119,117, 3,149, 74,133,245,235,215,123, 92,123,209,211,146, 62, 97, 97, 97,128, +143, 69,181, 9, 33, 80,169, 84,216,190,125, 59, 56,142,243,184, 52,144,251, 62,173, 86, 11,206,199, 90, 87, 18,231,150, 45, 91, +252,114, 73,159, 58,157, 14, 0,100, 62, 11,165, 82,137,109,219,182,121,141,179,251,119,157, 99,189, 87,127,156,219,183,111,175, +179,244,151,251,146, 96,174,191,181, 90,173,179, 1,231,181,149, 22, 17,209, 53, 49, 49, 17,123,246,236,193,178,101,203, 34, 51, + 51, 51,113,234,212, 41, 16, 66, 48,115,230, 76,114,203, 45,183, 8,133,133,133,232,209,163, 7,190,251,238,187,108, 86, 90, 24, +254, 66, 8, 0,218, 1,136,198,229, 85,104,170, 1,132, 59,158, 61, 10, 0,101, 0,212,142,205, 4,160, 6, 64, 35,199,185,165, +142,186,197, 85, 32,148,160,238,226,211,157, 29,220,210, 10, 21,209, 46,255, 73,215,112,255,237,254,233,145,155, 7,128,213,171, + 87, 75, 15,179, 94,131, 7, 15,222, 92, 39,102, 1,136, 44,105,157, 50,247, 50,237, 97,129, 89,165, 86,171,253,102,215,174, 93, +234,232,232, 63,226, 96, 50,153, 80, 93, 93,141,154,154, 26, 84, 87, 87, 35, 36, 36, 4,203,150, 45, 83,247,237,219,247, 27, 66, + 72, 58,165,212,228,141, 19,192,236,139, 23, 47,198,218,108, 54, 40, 20, 10,111, 45, 97,100,100,100,224,229,151, 95,198,192,129, + 3,227,122,247,238, 61, 27,192,183, 62, 56,161,209,104, 62,218,191,127,127,140, 70,163,193,201,147, 39,145,159,159,143,231,158, +123, 46, 73, 20, 69,156, 63,127, 30,167, 78,157, 66, 65, 65, 1, 22, 46, 92, 24, 51,108,216,176,143, 0,172,240, 21,119, 7, 30, +125,230,153,103, 90, 70, 68, 68,112,239,188,243, 78, 69,109,109,237,191, 29,251, 95,155, 59,119,238,253, 61,123,246,140,121,240, +193, 7, 41, 33,100, 49,165,244, 10,225,226,198,233,201,201,178, 3, 56,230,118, 90,134,155,211, 21,231,200,132, 21, 30, 56, 9, +128,176, 1, 3, 6, 60,107, 50,153, 58,108,219,182,237,116,183,110,221,146, 1, 92,148, 50, 95, 88, 88,152,118,246,236,217,177, + 67,134, 12, 57,209,167, 79,159, 14, 3, 6, 12,120,182,164,164,100,166,227,127,234,206, 41,138,248, 37, 46,190,245,215, 91,118, + 62, 49,122,211,118,179,252,249,167,166,158,107,146,148, 82,249,203,201,114,251,145, 51, 37,168, 54,216,112,119,159,203, 11,152, +119,109,221, 4,255, 90,186, 13,143, 63,253,138,240,237,215,139, 70,156,166,208, 2, 88,237, 35, 61,175, 9,140,243, 15,177, 33, +138, 34, 4, 65,192, 29,119,220, 1, 66,200, 21,107,121, 10,130,128,157, 59,119,162, 79,159, 62, 16, 4, 1, 19, 38, 76, 8,136, +147,231,121, 12, 24, 48,192,185,142,162, 43,159,187,104,240,164, 9,220,227, 78, 41, 5,207,243,224, 56,206,235, 66,218,238,156, +254,234, 37, 41,156,190,184, 92,255,243, 23, 78,201, 77, 10, 84,100, 5,202, 41,133,147,231,121,100,103,103,227,224,193,131, 62, + 69,151, 39,125,233, 30,247, 75,151, 46,141, 75, 79, 79,223, 50,111,222,188, 72, 0, 40, 43, 43,115, 46,120, 47,147,201,112,252, +248,113,152,205,102,188,254,250,235,150,170,170,170, 7, 89, 57, 98,156, 13,201,233, 75,139, 0,232, 57,121,242,228, 78, 57, 57, + 57, 51,179,178,178,190,218,177, 99,199,151,132,144, 85,148,210, 33,210,231,228,201,147, 51,115,114,114,102, 78,154, 52,233,229, + 89,179,102, 29, 38,132,172, 2, 0,247,223,142,240, 15,113, 19,113,209, 18,143,163,204,213, 57,214,211,111,247, 79, 47,220,127, + 56, 90,131, 7, 15, 38,142, 72, 18,215, 74, 45, 80,161, 21,200,218,125, 60,207, 79,156, 57,115,102,172, 47,145, 85, 83, 83,131, + 11, 23, 46, 32, 57, 57, 25, 19, 38, 76,136,157, 55,111,222, 68, 0,239,250,160,149,203,100, 50,236,217,179, 7,197,197,197,104, +211,166, 13, 82, 83, 83,235, 28,240,251,239,191,227,199, 31,127, 68, 69, 69, 5, 58,118,236, 8, 92, 30,127,228, 17,237,218,181, +123, 61, 35, 35, 99,192,128, 1, 3,108,106,181, 26,191,252,242, 11, 58,116,232,128,165, 75,151,162, 73,147, 38,208,104, 52, 56, +113,226, 4,218,180,105,131,205,155, 55, 35, 58, 58, 26,237,219,183,183,117,236,216,113,107,121,121,249,198,188,188,188,215,189, +180,156,229, 9, 9, 9, 83, 31,126,248, 97,197,133, 11, 23,196,207, 63,255,124, 27,165,116, 27, 33,100,226, 43,175,188,242,192, +192,129, 3, 99, 14, 28, 56, 80,185,119,239,222,221,158, 68, 86,128, 78,150,205,253,161,100,183,219, 77, 6,131,193,108, 50,153, +172, 28,199,229, 17, 66,204,118,187,221, 91,159,143,106,252,248,241, 77, 75, 75, 75, 31,127,250,233,167,115, 29, 34,235, 56, 46, + 15,128, 7, 0,216,108, 54, 83, 77, 77, 77, 85, 86, 86, 86,242,152, 49, 99, 78,127,249,229,151,143,143, 31, 63,126,217,231,159, +127, 94, 3,192,224, 78,216,164, 73,210, 65,153,140,147,215, 86, 71,158, 89,190,236,147,103,126, 92, 57, 49,233,252,249,130,230, + 81,141,162,107,229,186,232, 11,203,150,124,182, 15,128,249, 66, 73, 21,126,251,189, 16,130, 32,195,209,243,149,232,121,251, 40, +225,244,201, 25,221, 37,161,197,208,160,160,210, 34,212,155, 54,109,242,233,104,237,220,185, 19,130, 32, 64,173, 86,227,131, 15, + 62,240, 73, 42, 9, 3,201, 45,242, 39,102, 56,142,243, 89,143, 72, 98, 67, 90,232,221,125,251,247,191,255,141,167,159,126,186, +206, 53, 28, 98,131,248,227,244, 22,190,228,148, 20, 20, 23, 21,213,217, 23,200,162,244,118,187, 29,130, 32,224,227,143, 63,198, +144, 33, 67,176,106,213, 42,159,159,119,220,113, 7, 56,142,163,129,164,103,118,118, 54, 44, 22,139, 51,204,199,143, 31,247,200, + 59,127,254,124,127, 78,230,157, 0,166,117,232,208, 33,180,119,239,222,216,178,101, 11, 70,140, 24, 97,178, 88, 44, 39, 29,207, +132, 22,243,230,205, 83,236,223,191, 31, 81, 81, 81,194,185,115,231, 62, 37,132,176, 1,242, 12, 13, 10, 79, 90, 68,122,230,229, +228,228,204,116, 23, 49,174,144,254, 39,132,172,154, 53,107,214, 16, 87, 81,228,250,219,197,117,114, 21,113,153,174,142,148,171, +136,242, 38,160,220,158,183,174,199,151,120, 20, 90,142,136,245,114,117,129,164,202,215,159,200,242,214,114,116, 71, 88, 88,216, +160,187,239,190,219, 41,114,140, 70,163, 83, 96, 73, 34, 75,250,125,226,196, 9,116,234,212, 73, 30, 22, 22, 54,200,143,208,146, + 68, 28, 26, 55,110,140,210,210, 82, 28, 58,116, 8,201,201,201,176, 90,173, 88,187,118, 45, 42, 43, 43, 33, 8, 2,228,114, 57, + 44, 22,223, 67, 22, 50, 50, 50,238, 88,188,120,113,167, 69,139, 22, 93,146, 90,116, 75,150, 44, 1,165, 20,209,209,209,208,235, +245, 40, 42, 42,194,198,141, 27, 97,179,217,160,211,233,144,150,150,166, 24, 58,116,104,247,105,211,166, 9, 0, 94,247, 66,157, + 61, 98,196,136,176,208,208, 80, 60,245,212, 83,212, 98,177,204, 34,132,100,143, 24, 49, 98,234, 19, 79, 60, 17,149,151,151,103, +126,232,161,135,246, 88, 44,150,119, 28,149,160, 64, 41,181,250,105, 81,120,117,178,172, 86,171,148,166,185, 53, 53, 53,104,212, +168, 81,178,159, 49, 92, 0, 32,223,190,125,123, 54, 0,217,244,233,211, 85, 0,138, 92, 69,150,217,108, 70, 77, 77, 13,106,107, +107,173,149,149,149,197, 47,188,240,130,237,203, 47,191,148, 57,206, 57,234, 73,104, 1,183,155,111,185, 69,171,160, 84,246,202, +130, 5, 11,116, 3, 7, 14,228,116, 58, 29,170,171,171, 67,255,183,102,141,174,111,239,238,105, 51,115,222, 94, 23,154,216,166, +104,251, 47,103, 80, 80, 88, 9,179,213,138,180,248,176,203,126, 24, 67,131,195,241, 34,139,211,209,114, 21, 21, 91,182,108,193, +237,183,223,238, 44,235,114,185,188,142,243,229,143,147,231,121,220,126,251,237, 87, 56, 60,155, 54,109,242,232, 62,249,131,171, + 40,114, 23, 71,158, 4, 24,199,113,240,215,251, 44,185,121,158,196,150,171,171,239, 38,222,252,181,246,193,243, 60,158,120,226, + 9, 8,130,128, 23, 95,124, 17, 60,207,163,125,251,246,224,121, 30, 89, 89, 89, 16, 4, 1,125,250,244,169,119,220,119,237,218, +133, 14, 29, 58, 56,195,212,190,125,123,116,238,220, 25, 60,207,163, 71,143, 30, 16, 4, 1, 3, 6, 12, 8,132,243,229,234,234, +234,182, 58,157, 14, 39, 78,156,128, 76, 38, 3, 33,228, 20,165,180, 45, 0, 60,252,240,195,167,245,122,125, 83,163,209,136,135, + 31,126,152,152,205,230, 54, 47,190,248,226, 43, 0,152,208, 98,104, 48,184,107, 17, 23, 24, 38, 77,154,244, 50, 33,100,149,228, + 80,185, 59, 79,158,126,123,168,155, 36, 49, 36,117,237,117,118, 19,113, 82,183,223, 96, 31,231,154,221,132,149,123,215,225,222, +128, 29, 45,169,242, 13, 84,104,249,131,209,104,108, 23, 19, 19,227, 85,100,185,126,154,205,102,164,166,166,194,104, 52,182,171, +239, 67, 35, 62, 62, 30, 22,139, 5,159,124,242, 9,228,114, 57,228,242, 63,244,133,217,236,219, 44, 58,114,228, 72,238,174, 93, +187, 58,116,236,216, 49,226,187,239,190, 43,185,237,182,219,162, 7, 14, 28, 8,181, 90, 13,131,193, 0,171,213,138,174, 93,187, + 34, 35, 35, 3,249,249,249,248,223,255,254, 87,154,158,158,222,104,247,238,221, 98, 97, 97,225, 89, 31,212,253,251,246,237, 11, + 66, 8,214,172, 89, 83, 74, 41,221,171, 82,169,126,156, 49, 99, 70,132,217,108, 22,199,142, 29,123,174,188,188,252,105, 0, 22, +165, 82, 57,119,192,128, 1, 89, 50,153,236, 11,187,221,254, 65,125, 51,170,123,218,214,214,214, 66,165, 82, 5, 50,149,132, 80, + 94, 94,222, 26, 0,180, 90,109, 36,128,211,206, 28,110, 48,212, 17,195,102,179,217, 24, 25, 25,169, 5, 0,199, 57,130,151,251, + 17,173,209,104,150,159, 61,123, 38,196,117,252, 92,120,120, 56,238, 27, 51,134,235,150,157,173,104,219,174,221,128, 87,223, 91, +180,180,113, 84,168, 57,173,113, 20,172,118, 43, 54,172, 91, 43, 82,209,186,142, 85, 59,127,142,208,146,196,134,187,163, 37, 8, + 2, 54,111,222, 92,139,213, 63, 0, 0, 32, 0, 73, 68, 65, 84,124,197, 62,185, 92,142,255,252,231, 63, 1, 9, 3, 73, 84,121, +235, 58,115,235,234, 34,254, 4,140, 32, 8,144,201,100,248,248,227,143, 33,138, 34,158,121,230,153, 58,221,137,174,252, 1,118, +129, 56,207,201,152, 42, 2, 48, 35,255,125,165,243,124,247,240, 58,206, 9,200, 37,155, 55,111, 94, 64,142,214,224,193,131,253, + 10, 87,215, 30, 6,215,112, 29, 60,120,208, 35,239,130, 5, 11,252,166,167,221,110,199,234,213,171,157, 34, 85,194,148, 41, 83, + 30, 78, 76, 76,140,221,186,117, 43, 10, 11, 11, 81, 91, 91,139,154,154, 26,116,237,218, 53,173, 95,191,126,191, 20, 22, 22,230, + 29, 57,114,228,110, 86,122, 24,254, 68, 71,203, 52,107,214,172,195,179,102,205,242,232, 88,185, 59, 75,190,156, 39, 23,129,181, + 23,142, 46,195, 73,147, 38,189,140,203,195,106,246, 6,112,174,194,189,235,208,167, 17,228,166, 34,167,121,170,124, 3,233, 62, + 12,208, 78,231, 9, 33, 48, 26,141, 30, 5,150,171, 56,176, 88, 44, 40, 47, 47,135,221,110,191,234,185,190, 60,181,100,253, 9, +173, 67,135, 14,253,243,129, 7, 30,184, 16, 22, 22,214,182,164,164,164, 88, 20,197, 62, 59,119,238,140,230,121, 30,161,161,161, + 8, 13, 13,197,143, 63,254, 8,141, 70,131, 39,158,120,162,216,110,183,111, 9, 9, 9,137, 50, 24, 12,191, 22, 22, 22,190,234, + 85,193, 8,194,128, 30, 61,122, 96,255,254,253,184,116,233,210,122, 66, 72,251, 7, 31,124,240,246,164,164, 36, 50, 99,198, 12, +227,239,191,255,254, 1,128, 98,173, 86,187,120,241,226,197,189, 59,118,236, 24, 50,118,236, 88, 16, 66, 22, 80, 74,141,129,198, +185,182,182,182,142,192,170,170,170, 66,117,117, 53,180, 90,173, 45,192, 52, 19,112,121,172,149, 52,222,202,121,111, 28,110,150, +116,127, 40,207,243,244,242, 33, 84,240,198,167,213,106,167, 47, 90,180, 72,237,254,146,130,221,110, 71, 81, 81, 17, 66, 67, 67, + 49,229,213, 87,229,111, 60,247, 96, 7,153, 46,118, 39,199, 17,152, 45,180,130,138,230,181,181, 69,247,108,101,213,206,159, 3, + 73, 24,220,117,215, 93, 87,116, 23,202,229,114,172, 95,191, 30,195,134, 13,115, 54, 92, 58,118,236,232,183,113, 37, 9,131, 59, +239,188,211,233, 12,173, 93,187,214, 99,183,159,228, 72, 5, 34, 8,165, 99,159,124,242, 73,240, 60,143,127,253,235, 95,120,246, +217,103,193,113, 28,222,127,255,125,112, 28,135,215, 94,123, 45, 96,145,233, 42, 96,242,222,190,252,153,248,108, 21,202,230,199, + 2, 0, 66, 66, 67,165, 8,213,171,238,225,121,222,233,100,181,107,215, 14,130, 32, 32, 43, 43, 11, 60,207, 59,157,172, 65,131, + 6,185,166, 35, 13,132,147,231,121,156, 60,121,210, 25,230,172,172,172, 58, 78, 22,207,243, 24, 60,120,112, 32,193,156, 25, 30, + 30, 62, 45, 35, 35,163,213,236,217,179, 5,153, 76,134,190,125,251,182,120,232,161,135,206, 70, 69, 69, 69, 77,159, 62, 93,227, +225, 28, 53,128,182,173, 90,181,210,178, 82,195,208,128,142,214, 52, 15,127, 69,184,142,185,170, 71, 67,114,149,235,241, 18,135, +187, 56,114, 56,100, 91,252,113,121, 58,215, 31,120, 73, 65,250,178,212, 3, 17, 90, 14,219,217,231,197, 52, 26,205,111,197,197, +197, 89,106,181,186,142,200,242, 36,184,100, 50, 25, 10, 11, 11,161,209,104,126, 11,230, 77,244,215,117,232, 16, 53,207,185, 36, +108,191, 65,131, 6,125,190,126,253,250,248, 13, 27, 54, 96,247,238,221,136,142,142,198,188,121,243, 46, 22, 21, 21,253,147, 82, +186, 62,144,235, 54,109,218,180,181, 78,167,195,246,237,219, 1, 96, 51,128, 7, 31,127,252,113, 98,181, 90, 49,127,254,252, 90, + 0,107,194,195,195, 87, 47, 91,182,172, 67,219,182,109, 21, 27, 54,108,168,218,189,123,247, 79, 1,138, 44,187, 40,138, 87, 8, + 44,215, 52, 13, 9, 9, 9,196,209,178,134,133,133, 29,170,170,170, 26,101, 48, 24,170,148, 74,101, 72, 85, 85,149,201, 85, 96, + 73,252, 60,207, 11, 39, 79,158,188, 0, 32, 45, 44, 44,236, 16, 92,186, 24,235,100, 48,158,239,219,183,111, 95,222,253, 30, 20, + 21, 21,161,176,176, 16, 22,139, 5, 29, 59,118, 36, 50, 98,149,149,159,251,245, 97, 86,205,252, 37,142, 22,149,202,186,244,150, +160,167, 55, 13,215,174, 93,235,252,205,113, 28, 28,175,251,251, 21, 69,235,215,175,247, 57, 96,221,173,235,208,175, 53, 46, 29, +255,225,135, 31, 94, 94,222,194,225,100,113, 28,135, 73,147, 38, 65,169, 84, 98,198,140, 25,152, 52,105, 18,120,158,247,219,117, +232, 42, 96, 82, 94,212,187, 54,142, 46, 23, 10,199,120, 40, 66,136,171,216, 34,129,138, 55, 95,110, 94, 32, 61, 1,174,156,210, +121, 42,149,202,235, 64,120, 55, 78,226, 35,222, 63, 16, 66,206,196,199,199,111,207,202,202, 10,219,183,111, 31,222,127,255,125, +185,201,100,106,178, 97,195, 6,231,117, 61,165, 87,109,109,173,154,149, 28,134,134,112,179,124,252, 93,226, 54,190,138,184,118, +227,249,248,116, 63, 30, 46,251, 92,121, 75,220,158, 99,174,251,221,197,149,251, 53, 92,143, 41,241,234,104,249,171, 44,252, 9, +174, 64, 28, 45,189, 94,255,211,154, 53,107, 58,143, 25, 51,134,247,213,109, 88, 91, 91,139,216,216, 88, 28, 62,124,216,166,215, +235,127, 10,192, 41, 11,154,208,242, 80,169,108,136,139,139,147, 89,173, 86, 52,111,222, 28, 9, 9, 9, 48, 26,141,168,168,168, +144, 5, 42,178, 8, 33,242, 78,157, 58,201, 0,160,162,162, 2,184,252,170,105,139,244,244,116,236,223,191, 31,229,229,229,223, + 2, 24, 56,109,218,180,142, 93,187,118,149, 47, 93,186, 84,255,232,163,143,126,107,181, 90, 95, 15,208,141, 48,219,108,182, 84, +142,227, 44, 21, 21, 21, 5,174,233, 25, 27, 27, 27,169,213,106, 73, 81, 81,145, 53, 16,161,213,182,109,219, 61,231,206,157,195, +244,233,211, 75,102,206,156,153, 94, 93, 93,125,169,178,178,210,230, 42,182,140, 70, 35,215,168, 81, 35,229,252,249,243,213, 0, +208,182,109,219, 61,222,132, 86,109,109,109,146, 70,243, 71,195,216,100, 50,161,176,176, 16,133,133,133, 40, 42, 42, 66,117,117, + 53,210,210,210,160,215,235,147, 89, 53,243,151, 9,173, 58,221,103,174,229,219,245, 65, 94,159,178,238, 42, 96,238,186,235, 46, +231,216, 46,201, 33,147,182,229,203,151,187, 15, 48, 15, 72,104,125,248,225,135,120,242,201, 39,161, 82,169, 48,123,246,236, 58, + 93,135,238,226, 64, 20, 69, 18, 72,220, 83, 95, 50,160,112,110, 36, 4, 65, 64,212,163, 69,117,186,232, 60, 8,142,128,194, 57, +115,230,204,160,116, 29,186,114, 38, 39, 95, 46, 42, 31,127,252, 49, 70,141, 26,133,173, 91,183, 94,117,215, 97,102,102,230,146, + 85,171, 86,133, 29, 57,114, 4, 85, 85, 85, 40, 41, 41,129,201,100, 66,126,126,190,215, 94, 1, 71, 93,174, 98, 37,135,225, 79, +198,222, 63,153, 55,104,215,227,253, 60,192, 3, 22, 90,129, 56, 90, 38,147,105,246, 83, 79, 61,245,120,191,126,253, 34, 67, 66, + 66,112,225,194,133, 43, 68, 86, 77, 77, 13,116, 58, 29, 12, 6, 3, 86,174, 92, 89,101, 50,153,102,251, 19, 7, 86,171, 21, 49, + 49, 49, 40, 45, 45,133,232,101,252, 52,199,113, 80,171,213,168,169,169,129, 55, 81,224,235,129, 97,177, 88, 96,181, 90, 97,181, + 90, 97,177, 88, 80,207,233,157, 52,210,196,175,181,181,181, 0, 80,219,184,113,227,230, 42,149, 10,185,185,185,192,229, 55,251, +250,221,126,251,237, 66, 89, 89, 25,125,232,161,135,182, 81, 74, 31,246, 51, 59,190,121,203,150, 45,169, 0,160, 86,171, 79, 0, + 64,126,126,190,181,162,162,162,142, 83,168,209,104,232,176, 97,195,226, 41,165,216,178,101, 75,170, 92, 46,167,240, 50,231, 21, + 0,227,138, 21, 43,142,132,133,133,125,153,147,147, 51,102,200,144, 33,135, 91,183,110,157, 90, 91, 91, 91,108, 48, 24, 12, 70, +163,145,202,100, 50,121, 68, 68,132,106,221,186,117,167,119,238,220,217, 47, 52, 52,244,203, 21, 43, 86, 28, 1,224,209,121,211, +106,181,249,122,189, 62, 69,186,167,174, 34,171,176,176, 16,148, 82,156, 57,115, 6, 26,141,230, 28,171, 71,254, 58, 72,141, 42, +119,231,197,125, 95,160, 34,203, 85, 24,172, 91,183,206,231, 28, 90,129,114,186,138,162,103,159,125, 22,115,231,206,189,194,209, +154, 49, 99, 6, 0,224,213, 87, 95, 13,120,140,150,228, 94, 21,206,141, 68,220,147,229,117,194, 14, 0, 68, 10, 95, 61,167,116, +227,121, 30,211,167, 79,191, 98,144,186,107,215, 94,128, 93,124,117,194, 89, 92, 92, 12,158,231, 17, 25, 25,137,251,238,187, 15, + 3, 6, 12,112,118, 65,214,151,247,216,177, 99,219, 95,122,233,165, 54,153,153,153,120,243,205, 55,203,195,195,195, 67,254,239, +255,254,143,175,168,168, 32,190, 28, 45, 38,180, 24, 24,130, 32,180,164, 2, 22,232, 91,135,158, 42, 75, 66, 72, 63,215,185, 54, + 40,165,149,132,144,251,250,247,239,255,221,215, 95,127,173,110,218,180, 41,142, 29, 59,134,242,242,114,152,205,102,200,229,114, +196,199,199,163,162,162, 2,159,125,246,153, 65,175,215,223, 71, 41,173,244,197, 9,224,149, 78,157, 58,125,244,238,187,239,170, +218,183,111,143,242,242,114,212,212,212,212,153,197, 58, 52, 52, 20,106,181, 26,123,246,236,193,218,181,107, 13, 0, 94,241,195, +233, 73,205,193, 98,177, 56, 5,151, 63,161,229,198,169,149, 92, 29,189, 94, 15, 0,214,164,164,164, 56, 0, 56,115,230, 12, 0, +228,165,165,165, 77,107,218,180, 41, 89,188,120, 49,165,148,174,245, 36,178,220, 56,203,123,244,232,113, 9, 64,156,217,108,150, + 3, 64,101,101,165,165, 81,163, 70, 49, 74,165, 82, 84,171,213,162, 74,165, 18, 47, 92,184, 96,179,217,108,114, 0,232,209,163, +135, 25, 64, 33, 92,198,130,184,113,138, 0,170, 22, 44, 88, 48,109,236,216,177, 89,217,217,217,153,143, 61,246,216,161,135, 30, +122,136, 75, 72, 72,136,168,174,174, 54,158, 58,117,234,210,123,239,189, 87,189,107,215,174,126,130, 32,156, 93,176, 96,193, 52, + 0, 85,142,115,175,224,180,217,108, 63,109,216,176,225,159, 67,134, 12,225, 11, 10, 10, 80, 84, 84,228, 20, 89, 69, 69, 69,200, +200,200,192,206,157, 59,237, 22,139,101, 67, 61,210, 51, 88, 78, 14,227,188,220, 8,161, 82, 89,247, 38,176,164,198, 84,160,156, +174,162,104,212,168, 81,117, 92, 44,185, 92,142,111,190,249,198, 99,189,225, 97,134,243,126,238,243, 73, 73, 97,122,233,165,151, +234,136,182, 41, 83,166,120, 13,154,191,244,148,120, 42, 63, 78,168,251,214,161,151,114,238, 43,156, 82,221, 41, 8, 2,166, 76, +153, 18,176,163, 5,183, 49, 90,158, 56,165,184,223,118,219,109,208,235,245, 78, 33,235,205,209,242,151,158,118,187,253,201,185, +115,231,210,208,208,208, 91,171,170,170,254,113,238,220,185,133,122,189,190, 75,101,101,165, 79, 71,203,100, 50, 41, 89, 57, 98, +156, 13, 49,151,214, 77, 37,180, 28, 15, 73, 36, 37, 37,213, 89, 59,139,227,184, 58, 91,125,198, 25, 56, 10,238, 58, 66,200,240, +110,221,186,125,241,228,147, 79,134,180,111,223, 94, 72, 73, 73, 65,109,109, 45,114,115,115,113,248,240, 97,219,138, 21, 43,170, +244,122,253, 63, 40,165,235, 2,224, 91, 68, 8, 89, 59,112,224,192,215,186,118,237,250,200,212,169, 83,101, 45, 90,180, 64,101, +101, 37, 34, 34, 34, 16, 19, 19,131,227,199,143, 99,229,202,149,246,210,210,210,143, 0,188, 65, 41, 45,169,111,131,223, 98,177, +224,222,123,239,133, 40,138,248,224,131, 15, 64, 8,169, 79,243,214, 98,177, 88, 40, 0, 82, 90, 90, 10, 0,122,199,236,210, 56, +117,234, 20, 0,156, 77, 77, 77, 13, 1,128, 13, 27, 54, 16, 0,129, 46,233, 67, 93,157,173,140,140,140, 92,247,202, 81,114,178, + 36, 23, 12,254, 23,130, 54,142, 30, 61,186, 88,175,215, 15,124,246,217,103, 95,251,240,195, 15,199,124,248,225,135, 87, 28, 20, + 26, 26,250,229,251,239,191,255,198,232,209,163,139,189,185, 89, 14, 7,239,213,113,227,198,141,254,237,183,223, 66, 84, 42, 21, +106,107,107, 81, 86, 86, 6,139,197,130,180,180, 52, 20, 23, 23, 99,209,162, 69,213, 6,131,225,117, 86, 28,255, 26,184, 10, 3, +111,174,150, 63,145,229,203,213,249,225,135, 31, 60,206, 81, 85, 95, 78,119,177, 17,232,220, 86,190, 26, 69,210,180, 52,158,166, +140,168, 79,189,230,137,151,231,121,188,243,206, 59,206, 73, 91, 61, 57, 89,245,113,180, 36,206,200,200,200,203, 54,185, 99,201, +164,193,131, 7, 95, 53,175, 99, 57,178, 39, 92,174, 49,243,133, 23, 94,152,150,145,145,209, 2,128,210, 53, 13,216, 34, 13, 12, + 12, 65, 22, 90,118,187, 61,191,101,203,150,117, 42, 56,127,139,153, 90,173,214,252, 0, 11,247, 90, 66, 72,218,251,239,191,255, +148, 86,171,237,167,215,235,219, 56, 42,142,223,106,107,107, 55,152, 76,166, 57,245, 89, 4,218, 33,156, 38, 18, 66, 62, 24, 56, +112,224,140, 62,125,250,140,124,238,185,231, 8,165, 20,243,231,207,167,191,255,254,251,114, 0,175, 80, 74,127,191,154, 68,138, +140,140, 60,242,217,103,159,197,126,247,221,119,176, 90,173,152, 51,103, 14, 66, 66, 66,142,212, 35,124,197, 60,207,127,158,157, +157,125,255,206,157, 59, 23, 81, 74,127, 85, 40, 20, 11,187,119,239, 62,110,231,206,157, 75, 40,165,135,121,158, 95,216,181,107, +215,113,123,247,238, 93, 70, 41, 61, 88,143,224, 57,157, 45,155,205,115, 79,163, 39, 39,203, 15,170, 30,120,224, 1,203, 3, 15, + 60,240,220,232,209,163, 63,217,187,119,111,151,138,138,138, 54, 0, 16, 30, 30,254, 91,231,206,157,247,124,253,245,215,199, 29, + 78,150,209,223,189, 33,132, 12,107,211,166,205,183,111,190,249,166, 54, 51, 51,147,111,222,188, 57,242,242,242,112,232,208, 33, +219,167,159,126, 90, 99, 48, 24,238,162,148, 94, 98,197,241,175, 19, 90,148, 82,132,135,135,215,105, 68, 73,175,252,215,183,187, +208,245,193, 44, 45,213,227,206,235,141,211,215,180, 9, 18,116, 58,157,115,114,211, 64,134, 44,136,162,239,249,216, 40,165, 78, + 78,105, 11, 64,100,249,125, 67,208,177, 4, 78,192,156,129, 76,239,160,213,106, 97,181, 90,157,188, 1,188,249, 73,234,121,207, +126, 0,240, 67,243,230,205, 79, 1,104,198,196, 21, 3, 67, 3, 10,173,242,242,242, 78, 13,121, 97,135,144,122,195,177, 5,139, +243,119, 0,163, 9, 33,239,254,252,243,207, 82, 63,194,116,127,235, 37,250,195,177, 99,199,134, 8,130,240,159, 47,191,252,178, + 43,165, 20, 97, 97, 97,187,242,242,242,254,175, 62, 28, 54,155,237, 1, 66,200,227,210, 91,132,102,179,249, 1, 66,200, 83,148, +210, 26,151,255,157,191,235, 27,117, 0, 38, 74,105, 99, 47,255,155,234, 33,178,156,206, 22, 0,243,215, 95,127, 93, 3,224, 23, +252, 49, 79,150,213,177, 25,225,210, 93,232,231,190,108, 36,132, 52,159, 50,101,202, 76,153, 76,214,183,182,182, 54, 65,171,213, +158,183,217,108, 63,233,245,250, 87, 40,165,101,172, 40,254,117, 48,155,205, 5, 45, 91,182,228, 61, 53,160,124, 61,200,125, 53, +172,236,118,123,126,122,122,186,223,198,153, 7,206, 2, 31,249,232,108, 90, 90, 26, 23, 40,151, 4,139,197, 82,236, 43,156,105, +105,105,168, 47,167,191,184,167,166,166,122,140,187, 31, 65, 88,224,163,254,184, 42, 78, 95,233,233, 11, 6,131,225, 82,116,116, +116,141,209,104, 20, 76, 38,147, 96,179,217,234,216,143,106,181,186,132,149, 28, 6,134,107, 20, 90,127,103, 56,132,213,157, 65, +228, 51, 1,184, 63, 8, 60, 70,183,223, 53,190,126,215, 19, 13,225, 8,137, 0,244, 65, 74,195, 82, 0, 15,177, 34,119,253,161, +180,180,244,214, 96,115,150,149,149, 5,189,161, 86, 82, 82,146,213, 0,113,239,116,179,114,250, 66, 65, 65,193,173,172,100, 48, + 48, 4, 7, 28, 75, 2, 6, 6, 6, 6, 6, 6, 6,134,134, 1, 1,208,207,211, 31,245,121,155,128, 16,210,175,190, 23,246,199, +207, 56, 25, 39,227,100,156,140,147,113, 50,206, 27,143,211, 31,247, 13,247, 54, 35,165,180,193, 54, 0,253, 24, 39,227,100,156, +140,147,113, 50, 78,198,201, 56,111,214,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 52, 16,152,208, 98, 96, 96, 96, 96, 96, 96, + 96, 96, 66,139,129,129,225,239, 8, 66, 72,139, 38, 77,154, 28,109,217,178,101, 1, 33,100,124, 3, 95,235,190,172,172,172, 50, +149, 74,181,142, 16,210,130,165, 62, 3, 3, 3, 19, 90, 12, 12, 12, 55,180,200,106,211,166,205,182, 99,199,142,101,108,216,176, +161,113, 66, 66,194,219, 13,121,189, 78,157, 58,189,181,117,235,214,200, 53,107,214,244,143,139,139,219,114, 53, 98,139, 16,210, + 34, 57, 57,249,104,203,150, 45,243, 9, 33,247, 5, 57, 61,198,103,103,103,151, 43,149,202,181, 76, 8, 50,220, 4,229,191, 53, + 33,164, 13, 19, 90, 12, 12, 12, 12, 13, 40,178,118,236,216, 17,101, 52, 26,113,236,216, 49,148,148,148, 28,108,200,107,158, 56, +113,226,210,142, 29, 59,144,152,152,136, 37, 75,150, 68,167,166,166,110,173,143,160,145,194,124,244,232,209,140, 13, 27, 54, 36, +196,196,196,188, 23,204,240,117,233,210,101,198,214,173, 91, 35,214,173, 91, 55, 32, 58, 58,122, 11, 19, 91, 12, 55, 96,185, 87, + 18, 66,238,231, 56,110, 79,235,214,173,127,203,204,204,252,149,227,184,157,132,144, 81,132, 16,254,166, 76, 19,105,137,133,213, +171, 87,111, 6,128,193,131, 7,223,198,178, 10, 3, 3,195, 53, 86,182,153,153,153,153,187,118,237,218,165, 49, 24, 12, 88,182, +108, 25,166, 78,157,106, 45, 47, 47,223, 10,160,214,195, 41,123, 1,252, 59,144,165,183, 8, 33,161, 0, 30, 7,208,217,195,223, +218,200,200,200, 30,211,166, 77, 19,110,191,253,118, 24,141, 70,140, 24, 49,194,120,226,196,137,246,148,210, 19,129, 10, 67,131, +193,128,125,251,246,225,174,187,238, 90,103,181, 90, 7, 6, 43, 93,194,194,194, 14,255,240,195, 15,183, 52,110,220, 24,103,206, +156,193,184,113,227, 74,138,138,138,122,250, 11, 27, 3,195,223,160,204,167, 0,120, 68,167,211, 61,216,171, 87,175,136,187,238, +186, 11, 81, 81, 81,176,217,108, 56,127,254, 60, 86,173, 90,133, 29, 59,118, 92, 48,155,205,115, 1,124, 76, 41,173,240,196,115, + 35,106, 17, 66, 41,197,234,213,171, 41,128, 94,142,200,109,102, 89,134,129,129,225, 26, 43,221, 29,122,189, 62, 75,175,215,163, +186,186, 26, 73, 73, 73, 16, 4,193,227,177,197,197,197,216,190,125, 59,158,120,226,137, 35,133,133,133, 61,125,173,123, 73, 8, +137,232,208,161,195,142,141, 27, 55,182, 8, 9, 9,113,238, 23, 69, 17, 22,139, 5, 86,171, 21, 22,139, 5, 38,147, 9, 38,147, + 9, 10,133, 2,106,181, 26,145,145,145,135, 40,165,109, 2, 21, 89, 7, 14, 28,192,216,177, 99, 75,202,202,202,130, 42,130, 8, + 33, 45, 98, 98, 98,182, 44, 90,180, 40, 58, 45, 45, 13,231,206,157,195,132, 9, 19, 74,207,158, 61,219,131,137, 45,134,191,113, +121,159, 52,124,248,240, 25,177,177,177, 92,235,214,173, 17, 31, 31, 15,147,201, 4,131,193, 0, 74, 41,120,158, 7,165, 20,149, +149,149,216,178,101, 11, 54,110,220,104,186,116,233,210,103, 0,230, 80, 74, 79,186,136,172, 27, 82,139, 56,133,214,224,193,131, + 9,203, 46, 12, 12, 12, 65,170,120,127,171,172,172,108,109, 50,153, 80, 91, 91, 27,208, 57,103,206,156,193,248,241,227,143, 20, + 22, 22,118,243,228,108, 17, 66, 66, 59,116,232,176,123,203,150, 45, 45,140, 70, 35,170,170,252,175, 59,175, 80, 40,160, 82,169, + 16, 21, 21,181,147, 82,154,237,173, 37,222,186,117,235,125, 59,119,238,140, 52, 24, 12, 56,120,240, 32,238,187,239, 62, 75,121, +121,249, 54,120,118,223, 0,160, 28,151,215, 81, 61,235,129, 47, 25,192, 83, 0, 82,188,156,171,141,142,142,238,190,120,241, 98, +121,211,166, 77,161,215,235, 49,106,212,168,242, 19, 39, 78,116,166,148,230,178,220,195,240, 55, 44,239, 39,142, 29, 59,150,110, +183,219, 81, 90, 90, 10,147,201, 4,189, 94,239, 20, 90, 50,153, 12,148, 82,216,108, 54,103,195,104,255,254,253,216,176, 97, 3, + 61,115,230,204, 84, 74,233,116, 73,104,221,136, 90,132,103, 89,132,129,129,161, 1, 48,186, 75,151, 46, 7,255,247,191,255,169, + 20, 10, 5, 86,174, 92,233,181,235, 48, 54, 54, 54,115,225,194,133,169,105,105,105,152, 55,111,222, 45, 35, 70,140,120, 28,192, + 76, 15,156,143,111,220,184,177,133,209,104,196,193,131, 7, 49,110,220,184,220,162,162,162,195,238, 34, 38, 53, 53,181,199,123, +239,189, 39,116,236,216, 17, 85, 85, 85,232,223,191,191, 30,192, 35, 62,194, 58,113,211,166, 77,145, 6,131, 1,213,213,213,232, +213,171, 23,202,202,202,228, 0,250,120, 59,193, 96, 48, 32, 37, 37,165, 5,128, 43,196, 91, 84, 84,212,127,207,157, 59,215, 91, +173, 86,251, 76, 32,139,197,130,252,252,124,132,135,135, 99,213,170, 85,145,205,154, 53,123, 21,192, 3, 44,235, 48,252, 29, 97, + 54,155,241,213, 87, 95,161, 67,135, 14,104,213,170, 21,106,106,106,156,162,203,108, 54, 59, 69, 22, 0,112, 28,135,206,157, 59, + 35, 61, 61,157, 60,243,204, 51,247, 1,152,126, 35,167,141, 36,180,166,177, 49, 90, 12, 12, 12,193, 2,165,244, 4, 33,164,125, +191,126,253,182, 46, 95,190,188,209,160, 65,131,208,172, 89, 51,225,238,187,239,142,174,173,173,237,235,214, 26,142, 24, 55,110, +220,190,243,231,207,167, 58,118,117,246, 66,219, 57, 36, 36, 68, 26,219,148, 91, 84, 84,212,201,189,155, 81,169, 84,174,253,229, +151, 95, 4,133, 66,129,189,123,247, 98,252,248,241,165,185,185,185,254,186,229,194,205,102, 51,100, 50, 25, 0, 32, 63, 63,223, +111,252,206,157, 59, 7, 81, 20, 77,158,254,227, 56, 78,185,127,255,126, 52,110,220,216, 39, 7,199,113,144,203,229,174,187, 42, + 88,206, 97,248,155,194,106, 54,155,209,169, 83, 39,228,230,230, 98,255,254,253, 78,193, 85, 90, 90,138, 11, 23, 46,212, 57,120, +207,158, 61, 56,112,224, 0,122,246,236,233,206,115, 67,106, 17,222, 17,161,215, 87,175, 94,205, 4, 22, 3, 3, 67,176,197, 86, +143, 59,239,188,115,203,162, 69,139,162,147,146,146, 16, 18, 18, 18,234,225,184, 75,132,144,195,130, 32,164, 6,202, 93, 84, 84, +116,216,211, 88,174,184,184,184,246,102,179, 25, 7, 14, 28,192,125,247,221, 87,226, 24,243,229,111,236,211,155,125,251,246,189, +115,221,186,117,145, 42,149, 10,135, 15, 31, 14,164,235, 48, 15,192, 28, 79,127,148,148,148,220,215,179,103,207, 41, 0, 34,189, +156,171, 77, 79, 79,239,190,111,223, 62, 57, 33, 4,121,121,121, 24, 53,106, 84, 57,128,127,177, 92,195,240, 55,197,107,195,135, + 15,255,244,241,199, 31, 15,235,218,181, 43,242,243,243,157,130,171,125,251,246,104,219,182, 45,126,255,253,119,172, 93,187, 22, + 7, 14, 28,128, 82,169, 68,179,102,205, 80,243,238,123,192,123,176, 74, 36, 55,170, 22,113,190,117,200,192,192,192,208, 32,149, + 12, 33, 45,228,114,249, 7,209,209,209,237, 10, 10, 10,158,165,148, 46,113,251, 63, 98,228,200,145,135,151, 46, 93, 26,159,151, +151,135,166, 77,155,174,164,148, 14,245,192,179,130, 82,122,215,153, 51,103,208,173, 91, 55,143,142, 22, 33,100,124, 92, 92,220, + 27,213,213,213,149,122,189,126, 84,160, 3,204, 9, 33, 45,154, 55,111,190,117,229,202,149,141, 52, 26, 13,142, 30, 61,218, 96, +131,225, 91,182,108,185,109,207,158, 61, 81,130, 32, 96,239,222,189, 24, 55,110, 28, 27, 12,207,112, 35,148,243, 16, 0, 47,164, +165,165, 61,255,232,163,143, 42,111,185,229, 22,228,231,231,163,164,164, 4,151, 46, 93,194,174, 93,187, 0, 0, 9, 9, 9, 72, + 72, 72,192,241,227,199,177,125,251,246,170,154,154,154, 7, 40,165,223,221,208,105,195,132, 22, 3, 3,195,159, 92, 33, 39,195, +101,176,248,200,145, 35, 59, 45, 94,188, 56,190,172,172, 12,187,119,239,198,136, 17, 35, 94,161,148,206,244,112,222,203,133,133, +133, 51, 0,224,208,161, 67,238, 99,180,188, 14, 78,175,143, 8, 74, 73, 73,217,186,108,217,178, 70, 81, 81, 81, 56,118,236, 24, + 70,141, 26,117,184,182,182,182,117,176,226,174,209,104,214, 21, 22, 22,246,151,203,229,216,185,115, 39,238,187,239, 62, 54,189, + 3,195,141, 86,190, 99, 0,188,122,203, 45,183, 60,242,224,131, 15,242,201,201,201, 40, 40, 40,192,207, 63,255,140,102,205,154, +225,252,249,243,216,184,113,163,185,164,164,228, 3, 0, 57,148,210,202, 27, 62, 81, 26,114,197,106,176,149,205, 25, 39,227,100, +156, 87, 30,183,246,200,145, 35, 84,130,221,110,167, 5, 5, 5,116,221,186,117, 52, 46, 46,238, 48,128, 80, 79,156, 0, 66, 91, +181,106,117,236,248,241,227,244,220,185,115,212, 98,177, 56, 57,142, 29, 59, 70, 1,108,190,214,112, 2,104,145,144,144, 80,188, +105,211, 38,122,252,248,113, 26, 23, 23,119, 62,152,113, 79, 73, 73, 41, 46, 41, 41,161, 63,255,252, 51,141,142,142, 46, 6,208, +130,229, 37,198,121, 35,114, 58, 26, 82,139, 59,118,236,104,159, 59,119, 46,125,228,145, 71,104,114,114,178, 29,192,127, 1, 36, + 52,164,246,184,222, 54,246,214, 33, 3, 3,195,159, 13,229,174, 93,187,160, 84, 42,157, 59,126,253,245, 87,215,121,180,170,188, + 52, 10,171, 8, 33,221, 6, 13, 26,180,117,238,220,185,173,172, 86,231,208, 14,108,218,180, 9, 0, 76, 65,104,120,158, 32,132, +244, 28, 56,112,224,156,168,168,168,118,133,133,133,175, 5, 51,226,121,121,121,207,182,105,211,102,102,117,117,117, 85,125,186, + 54, 25, 24,254,134, 38, 78, 30,128,177,132,144,183,247,239,223,255, 10, 0, 10,224, 77, 74,233,209,155, 45, 45,152,208, 98, 96, + 96,248,179, 49,254,161,135, 30,114, 31, 44, 30,208,204,240,142,129,243,217,131, 7, 15,118,159, 25,222,235,224,244,171, 17, 91, + 0, 6, 52,208,195,103, 9,128, 37, 44, 11, 48,220, 68,130,235, 48,128,123,110,230, 52, 96, 66,139,129,129,225,207,174,120,207, + 2,152,112, 13,231, 87,193,243, 60, 91, 12, 12, 12, 12,215, 29,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, + 48, 48, 48, 48, 48,252,189, 64, 0,244,243,244, 7,165,116, 67,192, 36,132,244,171,239,133,253,241, 51, 78,198,201, 56, 25, 39, +227,100,156,140,243,198,227,244,199, 93, 31,253,241,183, 64,128,175,113, 18,246,234, 43,227,100,156,140,147,113, 50,206, 64, 56, + 29,141,120,130,203,189, 38,156,244,251, 58,159,142,128, 92,175,113,191, 89, 56,111,202,233, 29, 8, 33,206,196, 34,132,136, 0, + 68, 26,132, 25, 78, 9, 33,210,141, 8, 10, 31, 67, 3, 88,157,151,239, 17,249, 67,143,179,251,196,192,192, 80,175,186, 67,230, +242,176,181, 3,176, 19, 66,112,189,213, 37,193,124,206, 53, 68,220,111,102,206, 27, 5,188,175, 4,147,201,100,235, 26, 53,106, +212,187,180,180, 84,116,236,135, 66,161, 0,199,113, 16, 4,193, 80, 93, 93, 29,122, 21, 55,227,191,177,177,177,227,203,202,202, + 68,142,227,160, 82,169, 64, 8,113,114, 86, 84, 84,132,254,213,137,146,146,146,114,201, 96, 48,232,220,247,171, 84, 42,227,217, +179,103, 67,110,134,138, 82, 46,151, 15,143,140,140, 12, 47, 41, 41,161,210,226,183, 50,153, 76, 90, 8,215, 86, 81, 81,241,121, +160,124,145,145,145,123, 34, 35, 35,195,165,243, 9, 33, 40, 43, 43,171, 40, 42, 42,234, 2, 0,106,181,122,187, 86,171,141,226, +121, 30, 50,153, 12, 50,153, 12,122,189,190,172,180,180,180, 27,123,108,253, 61,177,124,249,114,217,192,132, 9,205,120,106,104, +203,113, 52, 76, 20, 73,165,141,168,127, 93, 91,240,223,211,129,156, 63,114,228, 72, 59, 75,197, 63, 15, 74,165,242,131,216,216, +216, 7,107,106,106,244,132, 16, 74, 8,193,229,199, 0,174,248,180,219,237,249,165,165,165,157,252, 60,108, 5,133, 66,241,126, + 92, 92,220, 56,189, 94,175,119,240, 81, 66, 8,226,227,227,235,240, 1,128,213,106,205, 47, 41, 41,233, 20, 72, 88, 99, 98, 98, + 22,168,213,234,127,232,245,250, 90,135, 48,114,237,161,113,125,152,255, 94, 82, 82,210,195,159, 48, 80, 40, 20,115, 98, 99, 99, +255,233,136, 59, 8, 33, 52, 58, 58,250,154,227, 30, 27, 27, 59,174,182,182,182, 78,220, 99, 98, 98, 60,114,122,139,187, 39, 78, +215,112, 18, 66, 16, 29, 29,125,205,225,188, 30, 57,111,120,161, 5,128, 35,132,172,232,214,173, 91,175,205,155, 55,115,199,142, + 29,227, 50, 50, 50, 96,183,219, 33,138,151,243,117, 98, 98,162,230, 42, 30,224, 11,123,244,232,113,239,150, 45, 91,184, 21, 43, + 86,112,157, 59,119, 6, 33, 4,118,187, 29,118,187, 29,173, 91,183, 86, 95,163, 64,208,241, 60,255,140, 66,161,184,205,102,179, +181, 2, 0, 65, 16,142,154, 76,166,205, 54,155,109, 54,165,180, 38, 16, 30,139,197,162, 41, 46, 46,190, 34,109,210,210,210, 20, + 87, 27,182,208,208,208, 29, 28,199,165, 57, 19,216, 33, 56, 60, 21,102,233,147, 82,122,166,164,164, 36,219, 27,103, 68, 68,132, +147,211, 27,135,251, 62, 81, 20,207, 20, 23, 23,103,251, 17, 89, 35,122,244,232, 17,182, 97,195, 6,114,254,252,121,162, 86,171, + 33,138, 34,236,118, 59,172, 86, 43,110,185,229,150,122, 77, 11, 18, 30, 30, 30, 58,105,210,164,102,119,220,113, 7,190,249,230, + 27,220,127,255,253,232,222,189,251, 73,233,127,173, 86, 27,117,228,200,145,244,200,200, 72,232,245,122, 84, 86, 86,162,127,255, +254,127,251,194,213,181, 67,210,155,132, 35,206,185,162,168,205, 94,190,235,151,130, 87,175,149, 55, 60, 60,252,128, 66,161,136, +149,238, 43,199,113, 30,239,181,235, 62,163,209, 88, 84, 90, 90,218,193, 79,249, 73, 1,112,167, 76, 38,107,206,243,124, 75, 0, + 41, 54,155, 45, 22, 0,228,114,121,145, 76, 38,203,179, 90,173,199,205,102,243, 41, 0, 63, 56, 38, 36,244,136,129, 9, 19,154, + 17,155,126,100,181, 73, 28,164,105,154,211, 66,255,251,164, 19, 26,165,254,199,129, 9, 19,150, 7, 42,182,254,194,134, 70, 11, + 0, 95,227,242,130,210,143, 56,230, 1,186, 22,190, 4, 0,119, 1,104, 33,151,203, 83, 45, 22, 75, 41,128,253, 0, 54, 80, 74, + 79, 18, 66,146,163,163,163,151,136,162,104, 42, 43, 43,155,224,105, 25,161,172, 78, 77,246,113, 28,151, 8,135,140, 16,169, 61, +127,231,190,243, 65,121, 64,201,100,178, 57,119,223,125,247, 63,151, 47, 95,174,217,191,127,191,166, 85,171, 86,206,250, 73, 20, + 69,184, 27, 17,169,169, 62,215,254, 38, 0,120,142,227, 62, 24, 57,114,228,152,197,139, 23,107,206,158, 61,171,105,220,184,177, +147,211, 85,196, 73,104,220,184,113, 64, 97,141,138,138,250,239, 29,119,220, 49,118,209,162, 69,194,202,149, 43,213,141, 26, 53, + 66, 84, 84, 20,228,114,249, 21,199,118,235,214, 77,244, 67,199,113, 28, 55,103,232,208,161, 99,151, 46, 93,170,217,189,123,183, +166,117,235,214,144,201,100,215, 28,247, 97,195,134,141,249,234,171,175, 52,191,253,246,155,166,121,243,230,224, 56, 14, 28,199, + 93,193,199,113, 28,146,146,146, 2,226,188,235,174,187,198,124,253,245,215,154, 3, 7, 14,104, 90,182,108,233, 76, 79,151,110, +187,122,135,243, 58,231,188,113,133,150,195, 70, 93,220,173, 91,183,129,155, 55,111,150, 1,192,129, 3, 7, 80, 94, 94,142,132, +132, 4,232,116, 58, 40,149, 74, 24,141, 70, 90,207,202,230,191, 14,145, 37, 0,192,183,255, 24,134, 51, 2,240, 68,177, 25,114, +185, 28,191,255,254, 59,100, 50, 25,189,134,202,172,103,104,104,232,162,239,190,251, 46,162, 67,135, 14, 92,105,105, 41, 82, 83, + 83, 81, 94, 94,222,101,203,150, 45, 29, 39, 76,152, 48,129, 16,114, 63,165,116, 75,160,156, 63,254,248, 35,180, 90, 45, 52, 26, + 13,180, 90, 45,204,102, 51,185,234,132,230,249,196,188,188,188, 24,157, 78, 7, 81, 20,157,155, 91,255,182, 19,162, 40, 34, 61, + 61,221,226,167,130, 76, 60,123,246,108,140, 90,173, 6,165,180, 14,159,221,110,135, 82,169,116,109, 57,192,110,183, 35, 45, 45, +205,226,207,201,146, 68, 22, 0,124,249,229,151,136,139,139, 67, 76, 76, 12,180, 90, 45,212,106,117,157, 7,123,128, 21, 57, 6, + 14, 28,136,215, 95,127, 29, 57, 57, 57,120,225,133, 23,234, 84,180,130, 32, 32, 50, 50, 18,107,214,172, 65,104,104, 40,146,147, +147, 33, 8,194,223,223, 25,228, 72,228,206,125,231,156, 14,237,237,125, 50,248,174, 29,147, 63,116,220, 97,112, 28, 32,138,151, + 31,157,132,128,218,172,226,165,189,191, 22,188, 22, 64,122, 54, 62,123,246,108,140,235,204,234,190, 96,183,219,145,144,144, 32, +243, 83,126, 6,101,102,102,126,251,216, 99,143,201,155, 55,111, 78,228,114, 57,120,158, 7,207,243, 82,126, 76,166,148, 38,139, +162,216,171,168,168,136,206,155, 55,239,109, 66,200,221,148,210, 31, 61,230,119,106,104, 91,109, 18, 7,109, 61,136, 46, 35,251, +189,132, 53,203, 38,117,233,209, 94, 68,136,198,112, 26,192,117, 43,180, 8, 33, 45, 50, 51, 51, 15,238,222,189, 91,101,177, 88, +208,181,107,215, 93,132,144,142, 87, 51,131, 59, 33, 36, 2,192,123,147, 39, 79, 30,251,216, 99,143,201,194,195,195,161, 80, 40, + 80, 93, 93,141,211,167, 79,143,251,252,243,207, 41, 33,228,223, 0, 66,242,242,242,178,246,236,217,131,222,189,123, 63, 5,224, +153, 43, 21,129, 44,113,251,158,220, 24,233,247, 93, 3,219,200,179, 59, 39, 23, 93,110,144,185, 31, 77, 33,218,197,252,221, 7, +243, 59, 5, 16,198,183,135, 15, 31,126,223,242,229,203,117, 0, 48,127,254,124, 12, 31, 62, 28,145,145,145,208,104, 52,144,203, +229, 16, 4,161,206,167, 31,135, 72, 6,224,237,123,238,185,103,228,226,197,139, 67, 0, 96,241,226,197, 24, 54,108, 24,162,162, +162, 16, 18, 18, 2,133, 66, 1,153, 76, 86,239,123, 19, 21, 21,245,223,238, 93,186, 60,176,104,209, 34, 0,192, 43, 79, 63,141, + 59,110,189, 21, 58,141, 26, 26,181, 2, 82, 90, 40,100, 2,110,127,226, 73,127,241,230, 0,188, 59,124,248,240,209, 75,151, 46, + 13, 1,128,253,251,247,163,184,184, 24,177,177,177, 80,171,213, 80, 40, 20,206, 56, 19, 66,160, 86,171, 3,138,251,240,225,195, + 71,126,245,213, 87, 33, 0,176,112,225, 66, 12, 28, 56,208, 25,119,165, 82, 9,185, 92, 94,103,115, 23,157,158, 56,239,190,251, +238,145, 95,127,253,117, 8, 0,124,254,249,231,232,215,175, 31, 34, 34, 34,156,233, 41,113,213,231, 30, 93,207,156, 55,180,208, +146,198, 78,197,198,198,142,222,186,117, 43,231, 34, 18,160, 84, 42,161, 84, 42,161, 80, 40,156,221,135,245,168,112, 72,108,108, +236,248, 45, 91,182, 56, 79, 50,211, 43,172,235,122, 63,192, 93,248,251,245,238,221,251,171, 85,171, 86,169,228,114, 57, 12, 6, + 3, 14, 31, 62,140,176,176, 48, 40, 20, 10, 12, 29, 58, 84,214,173, 91,183,168, 94,189,122,125, 67, 8, 25, 19,200, 27, 13,148, + 82,232,116,186, 58, 66,235, 90,187,152,213,106, 53, 86,174, 92, 9,153, 76,230,177, 2,115,253, 30, 19, 19, 19, 72,188,161, 84, + 42,177, 99,199, 14,200,100, 50, 8,130, 0,158,231, 33, 8, 2, 86,175, 94,141,231,158,123, 14,165,165,165, 32,132, 64, 16, 4, +132,132,248,237,245, 36,145,145,145,225,146,200,146, 68,144, 90,173,134, 32, 8,132,231,121, 34,117,237, 17, 66, 72,160,125,238, + 28,199,225,139, 47,190,192, 91,111,189,133, 23, 95,124, 17, 11, 22, 44, 64,219,182,109, 93, 69, 40,170,170,170, 16, 17, 17,129, +136,136, 8,168, 84,170,171,206, 11,215, 19,220, 83,231,253,217,115, 53, 16, 41, 46, 15, 2, 17, 1, 17,160,160, 16,169,136,162, +130,211,152,250,250, 59, 1, 63,125,148, 74, 37,182,111,223,238, 20, 67, 60,207,131, 16, 2, 87,129, 36,109,113,113,113,126,249, +228,114,249,180,239,191,255, 94,241,197, 23, 95, 96,233,210,165,206,188,165,213,106, 17, 30, 30,142,168,168, 40,231,150,152,152, + 72, 62,253,244, 83,121,219,182,109,167, 1,248,209,243, 61,167, 97,154,166, 57, 45, 70,246,123, 9, 0, 48,242, 37,138, 75, 39, +103,180,227, 42, 94, 11,187,158, 69, 86,155, 54,109,182,237,216,177, 67,165,215,235, 33,138, 34,126,252,241, 71, 77,191,126,253, +182, 18, 66,122,212, 87,108,165,164,164,172,220,177, 99, 71,183,232,232,104, 84, 86, 86,162,170,170, 10, 86,171, 21, 50,153, 12, +201,201,201,120,251,237,183,201,208,161, 67, 39,142, 27, 55,206,168, 86,171, 37,103, 35,197, 91,125,228,138,121,255,250, 48,156, +210,203,249,135,138,180,206,103,121,113, 30,158,126,118,106, 64, 97, 76, 74, 74,122,228,155,111,190,209,185, 58, 75,174, 34,192, +181,142,146, 54,111,194,192,225,106,112, 77,154, 52,121, 96,201,146, 37, 78,206, 70,141, 26, 57,235, 37,158,231,193,113, 28,182, +110,221,138, 89,211, 38, 35, 34,186, 49,230,254,107,190,223,112,186,213,201,155, 0, 0, 32, 0, 73, 68, 65, 84,198,196,196, 44, + 24, 52,104,208, 63, 22, 46, 92,232,220,215,166,105, 83, 12,238,118, 43, 98, 26,133,162, 81,196,229,186,141,138, 4,191, 30,207, +245,251, 60, 2,192, 37, 37, 37, 77, 88,182,108,153,206,181, 65, 40,197, 21, 0,244,122,189,211,197, 55,155,205,232,212,169, 83, + 64,113,119,229,148,220, 54, 73,180,185,215,245, 82, 67,198, 23,103, 82, 82,210, 3,146, 16, 6,128,200,200,200, 58, 28,130, 32, + 96,217,154, 69, 87, 60, 27,174,149,179,190,247,221,157, 51, 47, 47, 15, 51,103,206,116,214, 73,146,171, 71, 8, 65, 66, 66, 2, +230,206,157,235,139,211, 19, 58, 3,136,118,249,109, 6,160,112,249, 44,193,229, 21, 38,220,143,147,246, 11, 0,218, 57,254,179, + 3,168, 6, 16,238,129,207, 27, 79, 41, 46, 47, 35, 20,237,118,188,251,117, 60, 11,173,213,171, 87, 83, 0, 88,185,114,101,239, +187,238,186,107,123,105,105,169,120,236,216, 49,110,255,254,253, 16, 4, 1, 49, 49, 49,232,220,185,179,212,173, 6, 65, 16,160, +213,106, 73,120,120,120,145,244,224,149, 18,209,181,175,221, 69,208,112,229,229,229,226,250,245,235,185,197,119, 15,128,153, 2, +237,167,204,194,192, 33, 67,176, 54, 65, 1, 25,128, 46,199, 74,161,209,104,120, 65, 16,172,210,205,144, 56, 93,199,110,185,139, + 36, 66, 72,136, 86,171,253,244,135, 31,126, 80,113, 28,135,234,234,106,136,162,136,110,221,186,129,227, 56, 28, 58,116, 8,175, +188,242, 10,190,253,246, 91,124,255,253,247,234, 14, 29, 58,124, 74, 8,105, 69, 41,173,118,169,196, 54,120,202,164, 33, 33, 33, +208,104, 52, 78,161, 37,197,217,213, 2,151,142,167,148, 22,148,150,150,118,244,197,105,183,219, 49,108,216, 48, 16, 66, 32,147, +201,234, 84, 62,174,159,114,185, 28,135, 14, 29,186, 34, 19,122, 18,136,162, 40,162,123,247,238, 0, 0,141, 70, 3,157, 78, 39, +173,251, 6, 0,104,223,190, 61,204,102, 51, 26, 53,106,132,163, 71,143,122,170,192,235,112,150,148,148,208, 11, 23, 46,144,197, +139, 23, 67, 16, 4, 68, 69, 69, 65,163,209,144, 69,139, 22, 77,150,203,229,137, 70,163, 81, 52,155,205, 80, 40, 20,115, 37,119, +139,231,249,218,202,202,202, 40,111,156, 50,153, 12,143, 61,246, 24,158,127,254,121, 44, 88,176, 0, 15, 63,252,240, 21,142,151, +209,104, 68,163, 70,141,156, 98, 43,144,184, 95,187, 16,106, 96, 78,145,226,240,129,181, 56,242,219, 6,136,118, 17,118,145,130, + 82, 59, 68, 27,176,127,253,174,244,139,103, 46, 36, 80, 80,192,209,193,161,172,172,177,245,106,164,108, 9, 96,197,166, 82,211, + 7,254,242, 39,207,243,176, 90,173,248,225,135, 31,112,250,244,105,172, 91,183, 14, 6,131,193,153,142, 89, 89, 89,120,224,129, + 7, 60, 10, 45,119, 78, 74,233,194,243,231,207,183,239,222,189, 59,169,168,168, 64, 69, 69, 5, 12, 6, 3,236,118, 59,108, 54, + 27,120,158,135, 74,165,130, 90,173, 70,108,108, 44,140, 70, 35, 53,153, 76, 11,189,113,138, 34,169,212,255, 62,233,196,154,101, +147,186,140,124,137, 98,249, 91, 4,205,154, 40,245, 63,237, 11,121, 96,197,182, 23,250, 3,160,162, 67, 59,112, 0,181,218,197, +210,231, 39,191, 55,241, 79,191, 71, 87,138,172, 40,131,193,128,234,234,203,213,131, 66,161,192,242,229,203, 27,221,121,231,157, + 91, 8, 33, 61,189,137, 45, 79,156, 33, 33, 33,201, 50,153, 12,135, 14, 29,194, 71, 31,125,132,159,126,250, 9, 69, 69, 69,151, + 26, 55,110, 28,214,171, 87, 47,238,233,167,159, 70,251,246,237,241,217,103,159,169,252,113, 82, 74,145,119,114, 43,242, 78,109, +131, 40, 82, 23, 87,220,243,119, 26, 96,220,107,107,107,141, 7, 15, 30,212,125,242,201, 39,136,137,137, 65,106,106, 42, 52, 26, + 13, 84, 42, 85,157,135,172,235,131,215, 95,217, 52, 24, 12,198,188,188, 60,221, 87, 95,125,133,168,168, 40,164,164,164, 64,163, +209, 64,161, 80, 56, 27, 4,139, 23, 47,198,151,175,223,135,188,227,191, 97,216,224,254,126,195,169,209,104,254,177,112,225,194, + 58, 22, 72,108, 68, 4,120,129,131, 76, 32,136,232,123, 55, 0,224,210,207,223,121,157, 29,210,141,147, 84, 87, 87, 27,119,239, +222,173,219,183,111, 31, 68, 81, 68, 74, 74, 10,244,122, 61, 66, 67, 67,157,241, 95,191,126, 61,134, 14, 29,138, 47,190,248, 2, + 89, 89, 89,126,227, 94, 83, 83, 99,252,237,183,223,116, 75,150, 44, 65,100,100, 36,146,146,146,156,113,151, 54, 65, 16, 32,147, +201,144,150,150,134,202,202, 74,232,116, 58,191,247,104,255,254,253,186, 37, 75,150, 32, 34, 34, 2,137,137,137, 78,199, 77, 18, + 71,111,125,248,122, 29, 14, 21,137,191,102,206,250,222,119,119,206, 97,195,134,161, 89,179,102, 8, 13, 13,133, 86,171,117,114, +251,226,148,180, 8,128, 94,131, 7, 15,222,236,118, 11,163, 9, 33,171, 92,174, 63,132, 16,178,202,245,211,219,113,142,175, 61, + 39, 79,158,220, 41, 39, 39,103,102, 86, 86,214, 87, 59,118,236,248,210, 27,159, 55,158,201,147, 39,103,230,228,228,204,116, 61, +222,195,117,188, 59, 90,131, 7, 15, 38,142, 72,242, 0,144,145,145,129,242,242,114, 40,149, 74,116,238,220, 25,165,165,165,208, +233,116,144,203,229,160,148, 98,226,196,137,178, 23, 94,120, 33,134,227, 56,216,108, 54,103,197,239,165,175, 93,228, 56, 14,217, +217,217, 56,236,232, 17, 26, 56,100, 8, 18, 19, 19, 33, 13,242, 80,169, 84,152, 56,113, 34,121,238,185,231,120,201,205,160,148, +194, 96, 48, 32, 62, 62, 94,237,163, 75,238,233,111,190,249, 38, 76,178,228,165,174, 51,153, 76,134, 99,199,142,225,221,119,223, +197,184,113,227,112,238,220, 57, 52,110,220, 24,207, 63,255,188, 46, 39, 39,231,105, 0,111,248,171,144,117, 58,157, 83,100,105, + 52, 26, 60,253,244,211,124,183,110,221, 98,116, 58, 29, 66, 66, 66, 32,117, 3,218,237,118, 52,109,218,212,175, 52, 23, 69, 17, +107,215,174, 5,207,243,126, 29, 45, 71, 6, 12,136,115,247,238,221, 78,145,230,218, 74, 34,132,224,240,225,195, 78, 81, 23, 0, + 39,229, 56, 14, 90,173, 22,113,113,113, 80,171,213,208,104, 52,228,171,175,190,122, 53, 53, 53, 53,254,185,231,158,227,170,170, +170,184,236,236,108, 12, 31, 62,156, 23, 69, 17, 22,139, 5,153,153,153,126,157,183,205,155, 55,227,163,143, 62,194,195, 15, 63, +236,209,209,146, 6, 75,134,134,254,229,239, 66, 4, 13, 34, 0,139,205, 10,125,141,193,217,181,107,183,219,241,219,166, 95,210, +207,252,114, 50,115,213, 87, 95, 8, 0, 96,220,244,157,235,105,241,195, 63,252,186, 69,175, 72,249,238, 77,229,150,221,254,156, +194, 39,159,124, 18,175,189,246, 26,238,185,231, 30,172, 95,191, 30,175,188,242, 10, 38, 76,152, 80,199,209, 10, 4, 86,171,245, + 63,247,223,127,255,195,203,151, 47,111,249,210, 75, 47,113,146,163,165,209,104,164, 49, 94, 48,153, 76, 48, 24, 12, 56,126,252, +184,248,208, 67, 15,157, 48,155,205,255,241,198,103, 35,234, 95, 53, 74,253,143, 77, 19,185,102,181,185,239,132,116,191, 53,197, + 64,212, 29, 43,239,110,209,143, 14, 26,159, 18, 1, 74, 65, 69, 64,164,128,201, 84,139,137, 19,159,146,253, 85,247,201, 85,100, + 25,141, 70, 28, 60,120, 16,189,123,247,198,249,243,231,113,244,232, 81,164,167,167, 99,209,162, 69,209, 99,198,140,241, 41,182, +220,241,219,111,191, 77,110,215,174,221,156,154,154,154,242,154,154,154, 57, 0,190,164,148, 86, 16, 66, 90,157, 62,125,122,222, +218,181,107,123, 76,157, 58, 85,230, 54, 70, 71,230,205, 30,181, 90,109, 48, 24, 76, 62, 5,150,244,155, 82, 49,208,184,211,150, + 45, 91,226,206, 59,239,132, 32, 8,206,198,154,107,183,153,187,224,242, 85,127, 0, 16, 9, 33,104,220,184, 49, 6, 13, 26, 4, +185, 92, 94,135, 83,122,176, 14, 26, 52, 8, 79,190, 49, 5,255,121,178, 15, 62,186, 63, 29,253,222, 44,242, 25, 78,189, 94, 95, +179,113,227, 70,245,243, 15, 63,140,118,205,155,163, 81,104, 40,154,196, 70, 67,173, 84, 64,238, 26, 38,226,223,100,167,148, 82, + 66,136, 40,147,201,208,186,117,107, 20, 21, 21, 33, 55, 55, 23,185,185,185,224, 56, 14,221,187,119,119,186, 48,167, 78,157,194, + 27,111,188, 1,147,201, 20,112,220,155, 55,111,142, 62,125,250, 64,161, 80, 64,163,209,212,233, 50,148,210,180,186,186, 26,205, +154, 53,195,138, 21, 43,208,162, 69, 11,191,156, 25, 25, 25,184,237,182,219,234,164,167, 90,173,118, 62, 55, 0,224,252,238, 26, +231, 53, 18, 18, 18,234,197,185,110,207, 57,124,178,126, 35, 76,102, 17, 85,122,107,157, 19,226, 27,133, 98,219,146,151, 2,138, +187,196,249,241,199, 31,163,162,162,194, 89, 7, 73,166,137,100, 82, 36, 37, 37, 97,254,124,207, 78,166,139, 22, 33, 94,238,223, +144, 0, 27, 84,210,113, 82,230, 82,230,228,228,204,116, 63,223, 31,159,235,255,110,231,155,221,196, 89, 81, 64, 93,135,210,243, + 65, 42, 12, 9, 9, 9,144,198,129, 72, 5,197, 89,145,218,108,248,246,219,111, 17, 19, 19,227,220,194,194,194,188,102,108,105, + 28,209,147, 37,151,135, 8,173,105, 44, 71, 30,128,193, 37,212, 57,142,196,110,183,227,155,111,190,129,171,144, 9, 9, 9,241, +217,141,164, 80, 40,122,117,238,220,153, 51,153, 76, 87,136,172,156,156, 28,140, 25, 51, 6, 45, 90,180,128, 40,138,168,169,169, + 65,239,222,189,133,185,115,231,246,170,143,208,210,104, 46,143,251, 55,155,205,216,180,105, 19, 34, 34, 34, 16, 21, 21,133,200, +200, 72,132,132,132, 72,111, 78, 82,127, 98,131, 82,138, 97,195,134, 57, 51,159,171,139,229, 46,186,118,236,216, 17, 80,151, 28, +165, 20,183,222,122, 43,180, 90, 45,116, 58, 29,116, 58, 29,214,174, 93,235, 60,166, 75,151, 46, 16, 69, 17, 49, 49, 49,216,185, +115,167,207,238, 79, 74, 41,149,203,229,206,227, 5, 65, 32,139, 22, 45,154,156,150,150, 22,255,236,179,207,114, 50,153, 12, 7, + 14, 28,192,145, 35, 71,144,146,146, 18,240,152,173,138,138,138,139,147, 39, 79,182, 79,158, 60, 25, 0,144,153,153,137,138,138, +138, 98,233,255,170,170,170,178, 1, 3, 6,212, 25,183, 81, 90, 90, 90,246,255,236, 93,119,120, 20, 85,251, 61,119,182,239, 38, +217,108,122, 33, 16,186, 8,136, 20, 65,248,232, 37,128,116,148, 46,136, 8, 40, 69, 84,252, 40, 34,242, 83, 64, 66, 47, 74, 85, +228,163, 40, 18,154, 32, 69, 32,210,155, 8, 8, 72,139, 68, 32, 36,164,215, 45,217, 58, 51,247,247, 71,118,227,102,179, 73, 54, + 33, 34,224,156,231,153,103,119,218,153,123,103,238,189,115,230,189,239,125,239, 83, 47,180,120, 30,172,149, 69,190,201, 4,189, + 46,191,208, 58,148,158,156,166,153,246,225, 7,146,197, 19,223, 4, 0,124,184,124, 37,116,235,254,106,200,118,127, 56, 36,184, +255,146,109,211, 1,244, 45,227,229, 3,179,217,140,200,200, 72, 92,184,112, 1, 58,157, 14, 93,186,116, 41, 98, 49,117,220,211, +178, 76,244,148, 82, 11, 33,164,117,175, 94,189,126, 93,182,108, 89,173,250,245,235, 19,131,193,128,252,252,124, 56,255, 94,187, +118,141,110,221,186,245,110,126,126,254,127, 40,165,150,146,248, 14, 61,252, 38,190, 91,149,183,118,252,124, 89,212, 43,184,118, +156,250, 97, 78, 45, 54,235,161,220,160, 53,222, 54,113,244, 6, 40, 7,112,224, 65, 89, 30,156,189,219,235,159,130, 82,169,252, +242,244,233,211, 1, 38,147, 9,151, 46, 93,194,240,225,195, 45,153,153,153, 50, 0,120,253,245,215, 45, 91,182,108,145,213,174, + 93, 27,155, 55,111, 14,122,245,213, 87,183, 3,120,193,195,134,254, 91, 0,223,186,110, 15, 8, 8,248,226,193,131, 7, 29,156, +125,126, 28, 31,171, 0,220,126, 84, 82, 30,176,217,108, 48, 26,205,200,203,211,193, 98,181,217,219, 76, 30, 28,199,218,127,121, +176,246,118, 84, 38, 21,251, 52,107, 20,166,167,148,130, 33, 36,247,226,181,148,170, 37,181, 75, 37,117,113,121, 98,205,114, 3, +206, 49,202, 44, 32, 32, 0, 18,137, 4,223,126,251, 45,174,158, 57, 4,153,136,130, 99,109, 96,109, 86,112, 54, 11, 36, 34, 17, +126,190,124, 15, 81,207,151, 61,144,155, 16, 66, 3, 3, 3,209,179, 85, 43,244,106,213,170, 96,120,155, 88, 12,111,185, 28, 42, +169,162,192,146, 5,128,114, 12,224, 89, 81,226, 29,233, 12, 9, 9,193,197,139, 23, 49,105,210, 36, 44, 88,176, 0, 74,165,178, +112,244,243,173, 91,183, 16, 19, 19,131,168,168,168,114,231,221, 97,193,155, 62,125, 58,146,147,147,177,124,249,114, 52,107,214, + 12, 18,137, 4,185,185,185,248,207,127,254,131,180,180, 52,143, 56,157,187,247,100, 50, 89, 17,235,147, 67, 0,150,247, 25, 57, +115,190,217, 47, 12,123,207,108, 5, 1,193,249,239, 62, 40,242, 46, 90,179,237, 84,185, 57,103,205,154, 85, 36,157,158, 88,179, +202,241, 97,180,207, 19,177,229,116,220, 37,135,177,117,250,244,233, 51, 8, 33,251,166, 79,159, 62, 35, 58, 58,250,186, 39,124, + 37,236,223,239,208,133, 78,219, 46,121, 44,180, 40,165, 84, 38,147,129,231,249, 34,226,202,213,241,214, 97, 10,116, 54, 53,150, + 37, 10,120,158, 47, 44, 20,174,159,109, 34,145, 8,231,206,157,195,185,115,231,138,108, 95,191,126,125,169, 47,114,150,101,235, +251,248,248, 20,177,102, 73,165, 82, 76,159, 62, 29,195,135, 15, 47, 20, 89, 82,169, 20, 27, 55,110,196, 75, 47,189, 4,139,197, + 82,191, 12,127,149,252,208,208, 80,198,209, 16,121,121,121,145, 73,147, 38,137, 88,150, 45,188, 39,142,197,225,187, 86, 86,161, +113,140, 98, 57,124,248,176, 71, 22, 45, 79,125,148, 40,165,184,114,229, 74, 17,241,230, 24, 53, 3, 0, 87,174, 92, 41,244,223, +242,132, 83, 36, 18,129,227, 56, 40,149, 74, 34,149, 74,137, 84, 42,141,112,136, 44,145, 72, 84,248,188,157,125,246,202,202,251, +195,135, 15, 59,150,182, 63, 61, 61,253,153, 13,227, 96,181,217, 96,204,183, 64,167, 55,226,179,232,255, 21,108,252, 12,191, 0, +248,165,245, 59,147, 48,190, 91, 84, 39, 23, 63, 0, 79, 26,154,194,151,227,206,157, 59, 33,145, 72,176,103,207, 30,168,213,106, +244,233,211, 7,106,181, 26,211,166, 77,195,224,193,131, 61,182,104,217,203, 82, 30, 33,164,245,251,239,191,255,235,162, 69,139, +170, 85,173, 90, 21, 22,139, 5, 86,171, 21, 22,139, 5,241,241,241,216,186,117,107, 98,126,126,126,107, 74,105, 94, 89,124,135, + 30,126, 19,191,235,228,135,201, 93, 6,191,106,188,149,246, 19, 82, 83,179,192,178, 15,193,115, 44,172,108,193, 8,102,142,101, +193,178, 28,164, 82,145,122,209,231, 31, 28,225, 65,193, 48,196, 50, 96,192,128, 87, 30,215, 51,210,104, 52, 13, 51, 50, 50,240, +199, 31,127,224,141, 55,222, 72,205,202,202,186, 9,160, 51, 0,100,101,101,157, 30, 62,124,120,253, 77,155, 54,133,214,168, 81, + 3,222,222,222,106, 15,158,143, 55,128,241, 0,186,218,253, 64, 28,200, 6, 48, 39, 40, 40, 72,126,233,210,165, 98,214,255,147, + 39, 79, 2,192, 47,238, 77, 6,118,139,150,201,132,140,172, 28,140,126,103,102,161, 41, 1,160, 69,196, 5, 5,197,184,119,161, + 0,128,204,180,120,188, 57,122,146,188,172, 15, 2,119, 47,194,114,248,232, 56, 91,138, 10,203,168,183,183,119, 65,247,219,158, +173,216,191,228, 29,128,179,130,218,140,128, 53, 31,176,234,193, 91,242, 65,164, 74,192,102,244, 72,104,121,123,123,195, 91,169, + 68,176, 70, 83, 16, 4, 82, 36,130, 68, 34, 6,111, 3, 8, 71, 10, 5, 41,207,121, 84,214,105, 96, 96, 32,120,158,135, 82,169, +196,253,251,247, 49,126,252,120, 88,173, 86,244,235,215, 15, 22,139, 5, 38,147, 9, 70,163, 17, 53,107,214, 68,126,126,190, 71, +121,119,180,243,142,222,159, 15, 62,248, 0, 47,189,244, 18,102,207,158,141,169, 83,167,162,102,205,154, 24, 55,110, 28,182,110, +221,138,134, 13, 27,150,202,235,124, 63, 29,156,142,231,226,218,197, 7,160,220,207,200,149,179, 96,124, 0,138, 61,247,247, 70, +116, 46, 55,231,252,249,243,145,145,145, 81,204,146,229,248, 95,165, 74, 21,172, 94,189,186,162, 93,255, 14,235, 81,136, 59,131, +152, 27, 75, 84,115, 20,248, 78,153,163,163,163,175, 71, 71, 71,247, 34,132,236,139,142,142,238, 85,138, 69,171,103, 25, 22,175, +158, 40,240,201,242, 8, 98,151,190,209, 14,206,150, 18,199,139,212,241, 66,119,110,228, 85, 42, 21,118,237,218, 5,199, 8, 16, +231, 99, 74, 19, 90, 7,130,236,166, 99,187, 37,203,121,189,119,239,222,168, 81,163, 70, 17,107,150, 82,169, 44,181,240,240, 60, +143,132,132, 4, 92,191,126, 29, 45, 91,182, 68, 94, 94, 30, 36, 12,131, 15,175, 93, 67,131, 17, 35, 96,177, 91,104,100, 50, 25, +222,126,251,109,143, 28,218,239,221,187,231,231,188, 30, 24, 24,152,212,182,109,219, 42, 23, 46, 92, 40,116,144,183,119,171, 21, + 10, 14, 79, 68, 12,165, 20,175,189,246, 90, 17, 43,150,179,200,114, 94,126,250,233, 39,143,186, 14, 41,165,104,219,182,109,161, + 53,203,199,199, 7, 63,252,240, 67,225,179,106,215,174, 93,129, 63, 67, 72,136, 71,156,142,124,216, 29,224, 97, 50,153,120,157, + 78,199, 92,186,116, 9, 50,153,172,208,130,167, 84, 42,161, 80, 40, 32,151,203, 43, 52,130,232,223, 0, 74,121, 88,108, 54, 24, +141, 70,232,245, 5,145, 69,226,127,223, 89, 84,136,153,181, 21,230,119, 88,173,116, 58, 29,126,254,249,103,236,222,189, 27,205, +154, 53, 43,230, 12,239,137, 69,203,169, 60,101, 16, 66,218, 76,153, 50,229,252,220,185,115,195,253,253,253, 97,181, 90,241,224, +193, 3,108,216,176, 33, 57, 63, 63,191, 13,165, 52,195,243,155, 0,216,108, 44, 76,249,102,228,105,117,248,244,243,141, 37, 22, + 61, 0,200, 78,191,141,222,125, 6,202, 30,231,115, 74, 78, 78,158,220,166, 77,155,207,117, 58, 93,110,126,126,254, 64, 0,139, +157, 13,135, 89, 89, 89,109,251,244,233,179,204,223,223,191, 89,122,122,250, 12, 15, 40,167,223,191,127,127, 70,100,100,100,145, +141,118,235,227,115,233,233,233,195,218,181,107,247, 9, 0,127,167,221, 62, 0, 14, 3, 88, 93, 82, 89,114,116, 29,234,245, 70, +168, 53, 97,120,120,239, 68,153, 9,145,138, 76,160, 60, 95,230, 7,160, 59, 43,150,115,251, 84,142,242, 67, 29, 62,129,142, 23, +246, 43,175,141,192, 43,227,231, 67, 37, 1,230,189,217, 26, 53, 53, 0,148,254,144,182,155, 6,162,177,223,163,241, 63,122,196, + 63,117,237, 90, 92,254,163, 32, 50, 76, 68, 80, 16,166, 12, 30, 12,106, 3,206,222,184,129,109,199,142, 97,112,199,142, 80, 41, + 20, 30,127,176, 56, 62,194,227,227,227,113,246,236, 89, 60,255,252,243,184,115,231, 78,145, 48, 20,148, 82,143,242, 79, 41,165, +142, 65, 76,114,185, 28, 18,137, 4,169,169,169,232,213,171, 87,225,135,254,137, 19, 39, 48,101,202, 20,140, 26, 53, 10, 29, 58, +116,112,235, 55,235,202, 25, 20, 20, 84,104, 64,112, 29,168,224,220,157, 91,158,103,228,142,211,129,138, 62,119,103,206,185,115, +231,186, 29, 80,225, 9,167,179, 22, 41, 5,151, 92,172, 73,112,248, 75, 57,132,145,235, 58, 0, 63,199,182,233,211,167,207,240, +244, 60,231,117,135, 69,172, 60, 93,152,133, 66,171,103,207,158,196,221,203,214, 97, 70,118, 7, 47, 47, 47, 76,152, 48, 1,179, +102,205, 66, 96, 96, 96,153,190, 53, 14, 37, 91, 26,126,252,177,120,101,219,179,103, 79, 89, 93,135,183,124,125,125, 95,234,216, +177, 35,242,242,242,144,152,152, 8, 47, 47, 47, 52, 88,178, 4,215,198,143, 71,227,181,107,193,116,234, 84, 24,108,245,218,181, +107, 80, 42,149,183,202,107, 65,240,241,241,129,159,159, 95, 97,159,187, 67,112, 57, 89,180,168, 7,133, 17, 7, 14, 28,112,251, +213, 88, 17, 31, 45, 71, 35,112,254,252,249, 34,254, 89,206,194,231,252,249,243,133, 22, 45,199,105,158,116,121, 41,149, 74,234, +224, 83,169, 84,240,247,247,135, 92, 46,135, 82,169, 44, 34,178, 60,177,230,149, 21,144, 84,169, 84, 94,240,242,242,210, 56,246, + 75, 36, 18,232,116,186,220,172,172,172, 22, 79,117,215, 33, 40, 88, 43, 11,163,209, 4,189,206, 88,233,252,142,129, 41,187,118, +237,194,203, 47,191, 92, 76,100, 57,238,117, 5,190, 24,147, 8, 33, 29, 86,172, 88,241,203,210,165, 75,253,244,122, 61,254,247, +191,255,229,233,245,250, 14,148,210,164,114,113,241, 20, 54,171, 21,249, 38, 51, 12,250,130,123,240,231,245,157, 79,152, 32,166, + 91, 1,108,117,181, 24, 58,237,255, 19, 64,175,114, 80,190, 28, 25, 25,137,212,212,212, 34, 27, 19, 18, 18,192,113,156,217, 30, + 39,235, 45,167,235,137, 40,165, 92, 89,109,135,213,222,117,168,215, 23, 88, 65, 76,134,204,202, 41,167,118,177, 81,146, 79, 86, + 69,186,120, 28, 35,157, 69, 34, 17, 38, 78,156,136,107, 87,175,162,115,184, 22, 53, 67,125, 64,181, 15, 33,237,244,127,184,146, +161,196,226,101, 7,202,205, 29,227, 52,216,103,113, 76,140,219,125,127,246,237, 91,174,188,199,197,197, 65,169, 84,130,227,184, + 98,239,155,242,230,223, 89,192, 44, 91,182, 12, 83,166, 76,193,198,141, 27,113,237,218, 53, 52,110,220, 24, 93,186,116, 65,122, +122, 58,174, 94,189, 10,179,217,236,113, 58,157,253,230,226,238,222, 64,236,217,131, 72, 72,186,135,228,212,196, 10, 63,119,103, + 78, 87,161,181, 43,246, 55,188, 22,213,180, 66,156,159,126,250, 41,210,211,211,139, 88,178,156, 7,144,149,100,209,114,213, 34, + 46,200,116,241,133,114,172, 91, 92, 68,143,235,186,235,241, 0,144, 14, 64, 84,198,121,174,235,153,209,209,209,199, 29,150, 48, + 59,175,168, 44,255, 44,183, 93,135, 14, 81,228,168, 40,174,150, 42,199,127, 47, 47, 47,248,248,248,192,199,199, 7,106,181,186, + 76, 75,145, 67,104,181,189,171, 43,226,235,229,176,108, 1,192,168, 81,163,138, 89,180,156, 3,123,186,131,217,108, 62,113,226, +196,137, 38,189,123,247, 22,221,186,117, 11, 34,145, 8, 60,207,195,210,170, 21, 26,175, 93,139,223, 63,248, 0,237,239,223,135, +201,106,133, 66,161,192,161, 67,135,172,249,249,249, 39,202,219,110, 56, 11, 45, 47, 47, 47,248,250,250, 22, 10, 13, 79, 84,186, +163,242,150,230,255,224, 88,156, 7, 3,120, 82,169, 29, 47, 84,103,191, 28, 66, 8,140, 70, 99,161, 83,167, 39, 86, 71,231,174, + 67,231, 10,200, 48, 12, 52, 26, 77, 97,227,225,176,104,121,106,205, 43, 43, 32,169, 74,165, 82,223,190,125,187,182, 35,252, 68, +102,102, 38, 58,117,234,244,199, 83,111,210,226, 1, 43,203, 65,111, 52, 65,111,204,175, 52, 90, 71, 89,251,246,219,111, 17, 31, + 31, 15,171,213,138,232,232,232, 98, 2,171, 60,206,240,110,202, 85,124,211,166, 77,249,238,221,187,227,252,249,243,144,203,229, + 54, 74,105,185,227, 95,241,148,135,149,101, 97, 50, 26,161, 55, 24,254, 45,198,204, 66, 85,125,243,230, 77, 88, 44, 22,204,158, + 61,155,251,245,215, 95,143, 3,120,199,254, 12, 25, 0,195,218,183,111, 63,167,103,207,158, 26, 66,200,123,148,210,141,165,213, +115, 27,107, 23,237,149,120, 31, 29,101,169,164, 54,169, 34, 97, 86,156, 95,172, 60,207, 99,236,152, 49,232, 18,174, 69,255,102, + 65, 48,164,252, 1,149,111, 16,136,166, 58, 22, 47, 59,128,235,119, 61,118,197,164, 0,208,189,125, 95,188,248,124,241,240, 96, +109, 58, 23,124,147,157,254,249, 2,210, 50,147,203,157,119,131,193, 80,162,229,202, 83,139,150,131,211, 17,102, 69, 34,145,160, + 73,147, 38,168, 91,183, 46,142, 31, 63,142,166, 77,155,226,206,157, 59,184,115,231, 14,238,223,191,143,107,215,174, 33, 39, 39, +167,220,207,232,135,195,219,144,163,203,134, 76, 42, 67,118,110, 38, 18, 30,222, 67, 72, 64,232, 35, 63,119, 7,234,245,252, 20, + 0, 16, 30,228, 91, 46,161,229,204,185,112,225,194, 98,226,189, 18, 66,246, 92, 40, 99,189,188,231, 63, 54,136, 75,176, 18, 25, +253,253,253,149,206,253,171, 12,195,192,215,215,151, 44, 88,176, 64,196, 48, 12,124,124,124,224,235,235, 11,135,185,176, 44,200, +100, 50, 99,245,234,213,149,142,130,232,168,136,106,181, 90,180, 96,193, 2,178,126,253,250, 18,173, 92,101,248,104, 45, 29, 62, +124,248, 91, 73, 73, 73,126,193,193,193, 72, 73, 73,129, 76, 38, 43,168, 28, 29, 59,162,237,221,187,176, 22,248, 28, 33, 46, 46, + 14, 95,125,245,149,193,108, 54, 47, 45,239,141,242,246,246, 70, 64, 64, 64, 97,151,161,195,162,227, 36, 26, 61,114,193, 44,205, + 68,239,248, 2,172, 72, 23,146,171,216,122,231,157,119,138,136, 46, 79, 33,149, 74, 89, 71,228,119,134, 97, 96,181, 90,209,180, +105, 83,164,167,167, 23, 86, 26,103, 75,158, 39, 66,171,172,128,164, 98,177, 24, 22,139, 5,237,218,181, 3, 33, 4, 43, 87,174, +124, 54,186, 35,121,158,120,123, 7, 32, 60,252, 57, 4, 5,155,192,243,149, 55,171, 12,203,178, 24, 55,110, 92, 17, 11,150, 99, +100,163,163,235,159, 82, 10,155,205, 86,225,224,175,142,122,253, 40,241,227, 40, 80,216,229,101, 48,152,158,186, 71, 24, 28, 28, +220,146, 16,178,199,101,115, 54,128, 57,238, 34,184,219, 81,248,160, 19, 19, 19,209,173, 91, 55, 28, 60,120, 80,180,123,247,238, +206,123,247,238,189, 81,187,118,237,196, 65,131, 6, 85,125,251,237,183,229,237,218,181, 67,102,102, 38,154, 53,107,246, 25,128, + 82,132,150,253, 62,154,204, 48, 24, 42,223, 58, 90,218, 7,223,163, 8,184, 89,179, 62, 65,151,176, 92,244,107,236,139, 77,251, +206, 96, 88, 19, 37, 96,145,151,155,207,145, 22,255,240, 26,168,222,176,101,177,253,114,117, 65,151, 93,245,134, 45,193, 36,222, + 41,119,222,157,211,236,218, 94, 86,196,162,231,124, 63, 71,143, 30,141,105,211,166,161,107,215,174,184,115,231, 14, 78,158, 60, +137, 59,119,238, 96,210,164, 73,104,216,176, 33, 26, 55,110, 92, 46,206,189,177, 59,160,213,231,129, 33, 12,178,243,178, 96, 50, + 27, 49,117,220,172, 71,126,238, 14,220,139,141, 6, 0,236, 60,114,185,194,156, 31,127,252, 49, 82, 83, 83,139, 88,178, 30,197, + 47,235,105,135, 91,161,149,149,149,229,182, 31, 48, 40, 40, 40, 45, 42, 42, 42, 56, 37, 37, 5,222,222,222,101,138, 44, 66, 72, + 23, 71,172,141,212,212, 84,183,156, 62, 62, 62,214,168,168, 40, 73, 88, 88, 88,145,209,134, 94, 94, 94,197, 42,153, 43,167,253, + 37,160, 35,132,140,109,221,186,245,166,159,126,250, 73, 85,183,110, 93,104,181, 90, 80, 74,177,113,227, 70, 76,156, 56, 17, 10, +133, 2,113,113,113,232,211,167, 79,126,126,126,254, 88,231, 24, 90,238, 56, 75,250, 66,115, 68,197,119, 35,178, 74,205,187,115, +101, 93,177, 98, 5,230,205,155,135, 25, 51, 74,119,245, 88,183,110, 29,224,210,205,231,142,147, 82,138,197,139, 23, 87, 26,103, + 86, 86,214, 70, 23,107,212,202,254,253,251,139, 19, 19, 19,139,136, 43,231,197, 77,195, 84,132,179,172,128,164, 34,145, 8, 33, + 33, 33,152, 59,119, 46, 2, 2, 2, 16, 26, 26, 90,204, 18, 83,214, 51,170,224,203,224,111,229,228, 40,127,105,209,252, 79,218, +252,111,203, 94,137, 92, 6,156, 59,185, 19,218,156,162,221, 73,102,235, 95, 67,169,101, 77, 59,195,114,249,103,143,210,105, 54, +155,177,112,225, 66,124,250,233,167,248,244,211, 79, 61,121,238,143,148,119, 79,196,150, 91, 78,158, 18,149,151, 31, 20, 94,225, +104,208,208, 15, 60,101,159,168,103, 84, 2,126,189,112,225, 66,159,128,128, 0, 36, 37, 37, 5, 73, 36,146, 62, 69,204, 85, 70, + 35,170, 87,175,254, 28,128,255,148,197, 57,105,210, 36,243,204,153, 51,229, 67,134, 12, 65,255,254,253, 49,100,200, 16,185, 84, + 42,173, 67, 41,133,213,106, 69, 82, 82, 18,126,254,249,103,100,100,100,220, 42, 45,157, 60,165, 68,169,210, 64,225, 21,134, 6, + 47,104,192,243,108,165,228,221,241, 18,116,181,102,149, 51, 32,181,219,182, 14, 0,126,253,121, 15,102,125,240, 2, 54,238,255, + 5, 95, 92, 0, 94,212,164,163, 65, 80, 6,248,140, 91,248,239,176,151,176,248,187,139, 0,128,147, 39,202,124, 70,165,198, 71, + 54, 25,173,143,148,119,103,203,149,243,117,202,242,209,114,199,233,248, 72,212,233,116,200,205,205,197,166, 77,155,240,230,155, +111, 34, 61, 61, 29,247,239,223,199, 31,127,252,129,239,191,255,190,112, 52,123,121,159,209,135, 99, 62,198,204,197,147, 65, 65, + 81,175,118, 3, 76, 31,255, 41,154,191,216,234,145,159,187, 43,202,178,102,149,198,185,124,249,242, 10,149,165,127,149,208, 42, +237,171,130, 97, 24, 4, 6, 6, 22, 22, 18,231, 2, 88,145, 47, 95,145, 72, 4,150,101, 11,125,127, 28, 11, 0,244,238,221, 27, + 63,254,248,163, 39, 35, 41,126, 34,132,188, 94,191,126,253, 13,159,125,246,153,119,251,246,237,197,225,225,225,104,222,188, 57, +226,226,226,176,127,255,126,219,234,213,171, 13,249,249,249,163, 40,165, 71, 42,210, 62, 57,166,180,113, 94,202,243,213, 99,181, + 90, 19,239,220,185, 19,182,120,241, 98, 17,195, 48, 88,190,124,121, 97,165,116, 4,124,117,198,201,147, 39, 89,158,231, 75,237, +170,177,217,108,137,119,238,220, 9, 91,178,100,137,136, 16, 82,200,201, 48, 12,156, 39,112, 46, 15,167, 59,145,233, 24, 24,225, +110,113,151,118,119,207,184,180,128,164, 98,177, 24,113,113,113,152, 53,107, 22, 8, 33,216,185,115,231, 51, 81,185,174,221,202, + 92,223,184, 65,176, 95,239, 87,218, 52, 2, 33,176, 90,138, 71, 67,240,206,209, 23,138,172,254, 75,182, 97,247,135,131, 61, 17, + 61,241,167, 79,159,246, 95,184,112,161, 88, 36, 18, 97,217,178,101, 69,130, 6,187, 62,247, 83,167, 78,177, 21,233,246,115,212, +103,171,213, 10,163,177, 98, 86, 20, 74,233,217,232,207,103, 70,109,254,246,128,132, 16, 11,206,157,216,137,188, 92,247,238, 12, + 50,137, 24,235, 55,237, 98,165, 18, 81,226, 63,252,232, 86,245,235,215,111,200,151, 95,126,217,192,221,206,196,196, 68,240, 60, + 95,154,115,205,125,147,201,132,135, 15, 31, 34, 63, 63,127,199, 71, 31,125,100, 61,112,224,192, 91,175,190,250, 42, 26, 55,110, +140,176,176, 48,164,164,164, 32, 62, 62, 30,155, 54,109,162,103,206,156,217, 1, 96, 66, 25,247,113,207,252,207,103,190,177,233, +187, 3, 50,134, 88,113,238,228, 78,228,185,136,246,226,214,105, 9,190,217,184,203, 42,149, 74,110,151,213,174, 59, 91,179, 42, +243,197,216,103,248,120,244, 95,241, 5,106, 53,239,134,249, 11,186,224,155,207, 7, 98,105,119, 41,172,219,135,225,197, 1,155, +177,117,118, 15, 0, 64,248, 55, 30, 90, 75,196, 82, 60,112, 99,177,202,205, 83,216,197, 77,249,172,166,142,188,151,214,134,151, +215,162,197, 48, 12,106,212,168,129, 90,181,106,161,117,235,214,104,218,180, 41, 58,118,236,136,171, 87,175,226,234,213,171,152, + 52,105, 82,137, 34,203,147,103,212,225, 63, 81,248,165,237,237, 71,126, 54,174,207,189, 50,224, 73, 89, 26, 63,126, 60, 0,252, +171,172, 91,226,138,220, 68, 71,193,124,212, 41,105, 28,156, 22,139,165,176, 75,206, 57, 46,147,195, 57,222,195, 17,125, 71, 8, + 33, 13, 63,249,228,147, 15, 20, 10, 69,199,252,252,252,231,236, 22,153, 56,179,217,124,204,104, 52, 46,163,148,230, 62, 74, 90, +157,195, 57,184, 75, 66,105,231,230,228,228,116,235,214,173,219, 17,177, 88, 92,195,117,194, 95,119, 21,153,231,249,251,105,105, +105,165, 14,113,207,202,202,234,214,181,107, 87,183,156,238, 26, 8, 79, 56,221, 61, 31,158,231, 75, 20, 89,158, 52, 68,101, 5, + 36, 21,139,197,240,242,242,194, 15, 63,252,128,192,192,192,103,170,130, 93,185,145,190,176,180,253, 29, 2,229, 39, 0, 4,245, + 95,178,237,193,241, 76, 75,100,135, 64, 89,194,238, 15, 7, 87, 43,237,156,204,204,204,174,111,190,249,230, 65,177, 88, 92,195, +245,254,187,123, 22, 44,203,222, 75, 77, 77, 45,119,184, 4, 74, 41,110,223,190,205,143, 30, 61, 58, 51, 35, 35, 99, 96, 69,242, + 63,125,214, 23, 75,231,125, 54, 49,160,123, 84,203,230, 96, 0, 75,201,206,191,148, 0, 84, 44, 17, 37, 78,153,177,124,204, 63, +249,204, 40,165, 90, 66, 72,235,215, 94,123,109, 2, 10,134,134, 23, 19, 82, 0, 86,148, 66,177,162,106,213,170, 47,136, 68, 34, + 57,128, 89,148,210, 4, 66,200,170, 51,103,206,116, 5,240,178, 72, 36, 10,227, 56,238, 33, 10,230,124,220, 70, 41,189, 82,118, + 57, 74,123,187,113,253,160,136,238, 93, 94,238, 6, 66,168,197, 98, 46,227, 3, 9, 20,148, 82,169, 84,114,251,194,149,228, 23, +203,178,214,219,103,224,168,244, 46,251, 9, 19, 38, 96,194,132, 9,133,229,105,229,202,182,216,241,251,105, 12,120, 49, 9,230, +175,218,128,168,171,121,252,193, 7, 0, 31,127, 50,186, 50, 45,155, 69, 6,105, 85,150,143,150, 72, 36, 66,102,102, 38,226,226, +226,144,150,150,134,252,252,124,220,188,121, 19, 86,171, 21, 57, 57, 57,120,225,133, 23, 42,156,206,202,122, 70,255, 36,231,191, +177,251,176, 92, 66,139,101,217,164,178,102, 89,183,217,108,229, 26,149, 36,145, 72, 76,117,235,214, 37,238, 70, 39, 56,254,123, +121,121, 25, 61,108, 32,115, 1,204, 2, 48,203, 62,159, 21,178,179,179, 31, 89, 13,114, 28,151, 28, 25, 25, 41, 42, 73,192,216, +239, 77, 90, 25,105, 51, 0,104, 85,201, 47,132, 74,231,116,243,124, 12,207, 63,255,124,161,175,151,107, 76, 20,251,100,171,165, +122,231,150, 21,144,212, 96, 48,164,116,235,214,141,115,222,239, 28,208,244,153, 6,161, 9, 61,134,188, 21,121, 60,211, 18, 9, + 0, 14,177,133,146,253,127, 64, 41, 53, 2,104,255,119, 39,237,238,221,187,150,151, 95,126,249, 91,157, 78, 55,158, 82, 90, 97, +111,254, 25,255,183,114,198,211,246, 88, 40,165, 90, 0,243, 42,120,110, 2,128, 78, 46,219,174, 0,184,242, 40,105,186,114, 51, +163,210, 99,139,177, 44,155, 84,171, 86,173,114, 89,110,202,106,227,109, 54, 91,169,239,137,235,240,197,140,243, 64,193, 52,113, + 89, 30,113,154, 76,166,236, 86,173, 90, 73,202,153,183,116, 79,243, 30, 22, 22,134,240,240,240,194, 95, 7, 92,183,151,149, 78, +150,101,147, 34, 34, 34, 16, 24, 24, 88, 98,196,119, 87,159, 44, 79, 56, 43,251, 25,149,198, 25, 30,190,185,210, 57, 43, 75, 47, +252, 43,132,150, 99, 14,195,202, 68, 90, 90,218,223, 50,231, 10,173, 12,115,219, 95,150,163,230,248,151, 34, 43, 43, 43,224, 81, + 57,202, 10, 72,154,150,150,214,241,223,122,127,143,103, 88, 70, 22,219,102, 23, 93,255, 52, 12, 6, 67,181,178,194, 14,148,132, + 1, 3, 6,112, 16,240,196, 35, 51, 51,179,210,219,244,191,227, 61,145,157,157,221,232,223,154,247,191, 35,157, 79, 11,231,179, + 2,193, 75, 77,128, 0, 1, 37,125,172, 8, 98, 73,128, 0, 1, 2, 30, 17, 4, 64,151, 18, 26, 89,143, 71,250, 16, 66,186, 84, +160, 17,143, 21, 56, 5, 78,129, 83,224, 20, 56, 5, 78,129,243,223,197, 89, 22,119,101,143, 52,126, 18,190, 90,255,182, 5, 64, + 23,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127,235, 34,116, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,252, 77, 16, +132,150, 0, 1, 2, 4, 8, 16, 32, 64,128, 32,180, 4, 8, 16, 32, 64,128, 0, 1, 2, 4,161, 37, 64,128, 0, 1, 2, 4, 8, + 16, 32, 64, 16, 90, 2, 4, 8, 16, 32, 64,128, 0, 1,127, 31, 72, 37,198,245, 20, 32, 64,128, 0, 1, 2, 4, 8, 16,224, 4, + 49, 0,236,223,191,191, 80,109,245,236,217,147, 8,183, 69,128, 0, 1, 2, 4, 8, 16,240, 56,241,172,106, 17,177, 32,176, 4, + 8, 16, 32, 64,128, 0, 1, 79, 2,158, 69, 45,194,184, 83,146, 2, 4, 8, 16, 32, 64,128, 0, 1,143, 27,207,162, 22, 97,158, +101, 21, 41, 64,128, 0, 1, 2, 4, 8,120,122,240,204, 91,180, 4,171,150, 0, 1, 2, 4, 8, 16, 32,224,159,194,211,170, 69, + 8, 33,148, 16, 66,157,215, 11,255, 11,163, 14, 5, 8, 16, 32, 64,128, 0, 1, 2, 42, 38,176, 40,165,164,164, 95, 64,136,163, + 37, 64,128, 0, 1, 2, 4, 8, 16, 80, 33, 56,196,148,243,186,179, 53,235,111, 23, 90,132,144, 46, 2,167,192, 41,112, 10,156, + 2,167,192, 41,112, 10,156,255, 22,193, 69, 41, 37,206,235, 98,225,246, 8, 16, 32, 64,128, 0, 1, 2, 4, 60,178,248,164,238, +132,151, 32,180, 4, 8, 16, 32, 64,128, 0, 1, 2, 30, 81,100, 57,139, 43,193, 71, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 49, + 64,176,104, 9, 16, 32, 64,128, 0, 1, 2, 4, 60, 2, 92,157,224,133,174, 67, 1, 2, 4, 8, 16, 32, 64,128,128, 74, 22, 91, +238,182, 19, 0, 93, 74, 56, 33,214, 83,242,138,140, 62, 40,139, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,103,143,179, + 44,238,242,232,143, 39, 5,132,144,246, 0,142, 3,232, 96,255,253, 75,120, 81, 74,255,182, 5, 64, 23,129, 83,197,199,105, 41, + 0, 0, 32, 0, 73, 68, 65, 84,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,103,121, 41,144, 83,127,253, 58, 47,130, 51,188, +128,178, 84,186,152, 16, 34,174,232,254,199,197, 41, 64,128, 0, 1, 2, 4,252,195,239, 75,234,248,117,246,215, 18,151,112,112, + 29, 0, 51, 0,248, 58,109,190, 64, 41,141,118, 57,238, 59, 0, 42,167, 77, 6, 0,179, 41,165,119, 60, 72,147,212,206, 47,183, + 47, 60, 0, 19, 0, 51, 0, 29, 0,155,240,216,254,241, 66,211, 10, 64, 47,251,255,125,148,210,115,229,217,255,184, 56, 31, 23, +194,195,195,149,126,126,126, 93, 47, 95,190, 44,187,121,243, 38, 78,157, 58, 69,215,175, 95,111,205,201,201, 57,156,156,156,108, + 20, 74,204, 51, 81,230,187, 1,152,110, 95,157, 79, 41, 61,244,136,124, 68,165, 82, 77,242,242,242,234, 33,151,203,195, 89,150, + 37,249,249,249,201, 6,131,225, 8,203,178, 75, 40,165,124, 5, 56,251,250,251,251,191, 85,175, 94,189, 58,247,239,223,127,152, +156,156,252, 29,128,237, 0, 6,134,135,135, 15,171, 94,189,122,149,219,183,111,223,201,206,206,254,134, 82,186,231,159, 74,167, + 0, 1,255, 38,148,228,159, 85,162,208, 2, 48,139, 82, 58,204,165, 34, 22, 59,168, 83,167, 78,125, 14, 31, 62,172,226,121, 30, +142, 69,169, 84,178, 0, 70,150,145,166,128,179,103,207, 70,142, 31, 63,190,127,114,114,242, 75, 58,157,174, 5, 0,168, 84,170, + 95,130,131,131,127, 93,177, 98,197,247, 93,187,118, 77,178, 11,174,114, 89, 74, 36, 18,201,155,126,126,126, 61, 88,150,109, 74, + 41,133, 68, 34,185,156,147,147,115,200,102,179,125, 67, 41,181, 85,160, 81,147,137,197,226, 9,114,185,188, 27,203,178,141, 0, + 64, 44, 22, 95, 51,155,205,135, 88,150, 93, 69, 41,181, 84,128, 83, 33,147,201, 38,168,213,234, 40,139,197,210, 8, 0,100, 50, +217, 53,173, 86,123,196, 98,177,172,162,148,154,158,128, 23,142, 24, 64, 47, 74,169, 4, 0, 68, 34, 81,223, 86,173, 90, 69, 18, + 66,120, 71,124, 16,134, 97,154,112, 28,199,216,143,239, 69, 8,249,149, 82,202,150,135,243,229,151, 95,174, 42, 22,139,169, 61, +146, 46,195, 48,204,139,229,225,172, 44, 4, 5, 5,205,227,121, 62,188,180, 99,124,125,125, 95,186,124,249,114,189,152,152, 24, +238,171,175,190,202, 29, 53,106,148,247,248,241,227,197, 43, 87,174, 92, 5,224, 61,215,227, 3, 3, 3,151, 50, 12, 19,232,201, +245,121,158,207,204,204,204,156, 44, 52, 87,255, 56,166,175,142,213,181,163, 20,152, 16,229,195, 0,120, 36,161, 85,165, 74,149, + 77,111,188,241,198,144, 70,141, 26,137, 41,165,176,217,108, 48,155,205,245,206,157, 59,215, 97,231,206,157, 47, 1, 24, 88,206, +122, 57,102,218,180,105,115,231,204,153, 19, 40,145, 72,136,205,102,171, 29, 19, 19,211,244,237,183,223,126,127,221,186,117, 85, + 7, 13, 26,228,227,216, 62,107,214,172,230,132,144,154,148,210, 37,143, 59,157, 2, 4,252, 11, 63,210,218,163,168,143,214,103, +148,210, 79, 75, 19, 90, 94,246, 19,211, 0, 92,112, 88,180, 92, 15, 58,122,244,232, 94,177, 88,236,176,104,181, 48, 24, 12, 33, + 46, 86, 48,119,168, 62,124,248,240, 86, 59,118,236,152, 55,104,208,160, 84,149, 74, 85,247,213, 87, 95,213, 17, 66, 68, 49, 49, + 49, 77,106,213,170,165,236,221,187,247,240, 78,157, 58,125,120,240,224,193, 83, 0, 50, 60,204,100, 3,127,127,255, 93, 11, 23, + 46,140,236,214,173,155, 52, 48, 48, 16,148, 82, 36, 39, 39, 87,217,191,127,127,247,207, 62,251,236, 67, 66, 72, 63, 74,233,141, +114,220,184,230, 74,165,114,199,103,159,125, 22,214,189,123,119,113,104,104, 40, 76, 38, 19,110,222,188,217,229,208,161, 67,237, +214,173, 91,247, 30, 33,100, 0,165,244,215,114,112,182,240,245,245,221,249,191,105,211, 66, 90,190,249,166,216,223,223, 31,148, + 82,100,100,100,116, 57,189,121,115,135,113, 11, 23,190, 71, 8,121,141, 82,122,225, 73, 42, 68, 50,153,140,217,178,101, 75, 99, +153, 76, 6, 0,176, 88, 44,104,216,176, 33,121, 20, 78,137, 68,194, 44, 89,178,164,169, 88, 44,134,213,106,229,117, 58, 29,125, +245,213, 87,153,127,168,146, 68, 36, 39, 39,251, 74,165, 82,183,251, 57,142, 67,187,118,237,106, 72,165, 82, 44, 89,178,196,150, +153,153,217,228,203, 47,191,188,188,117,235,214,192, 85,171, 86, 13,112, 39,180, 24,134, 9, 76, 74, 74,114,203,201,113, 28,172, + 86, 43, 88,150,133,197, 98, 65,253,250,245,133,150,234,201, 64, 36, 0, 28,184,106, 2, 0,255, 71, 37,243,242,242,122,126,232, +208,161,226,140,140, 12, 72, 36, 18, 88,173, 86,164,166,166,162, 97,195,134,162,111,191,253,246,185,242,242,213,174, 93,123,212, +252,249,243,131, 14, 28, 56, 96,221,178,101,139, 37, 42, 42, 74, 50,106,212, 40,117,187,118,237,234, 71, 68, 68, 48, 27, 54,108, + 48, 31, 57,114,196, 54,124,248,112, 89,116,116,116,208,254,253,251,123, 3, 88,242,184,211, 41, 64,192,191, 16,199, 93, 39,149, + 6, 80,170,208,114,224, 2,165,180, 47, 0, 72,165,210, 38, 85,171, 86,221,196,178,108,168,221,170,147, 42,145, 72,150, 88,173, +214,223,236, 47,170, 61, 60,207,247, 41,203,146, 53,124,248,240, 86, 7, 15, 30, 92,124,238,220,185,188,172,172,172,208,189,123, +247,154, 62,252,240,195,251, 0,112,247,238,221,154,189,123,247,174, 50,113,226,196,164,174, 93,187,174,232,216,177,227,187,199, +142, 29, 59,130,130, 46,201, 82, 69, 86,195,134, 13,207,158, 60,121,210, 71,163,209, 20, 85,117,213,171,227,221,119,223,149,246, +233,211,167, 86,231,206,157,207, 16, 66,218, 82, 74,127,247, 68, 16,213,169, 83, 39,246,232,209,163,222,126,126,126,200,205,205, + 69,106,106, 42,242,243,243,161, 86,171, 49,104,208, 32,105,251, 54,173,171, 78,156,244, 94, 44, 33,164,139, 39, 98,139, 16,210, +162,117,131, 6,177, 91,163,163,189,109, 15, 30, 64,169, 84, 66,175,215, 3, 0,124,124,124,240, 82,141, 26,226,139,155, 55, 87, + 25, 54,117,170,131,243,177,139, 45, 66,136,220,110, 6, 53, 19, 66,246,137, 68,162,190, 50,153,140,233,219,183, 47, 98, 99, 99, +137,201,100, 18, 3,128, 66,161, 96,251,246,237, 11,165, 82, 9,139,197,194, 3,216, 87,146,229,201, 29,167, 68, 34, 97, 58,118, +236,152,127,225,194,133,108, 7,167, 74,165,178,117,236,216, 49, 64, 38,147, 41, 89,150,165,165,113,254, 77, 98, 18,241,241,241, + 69,182,233,116, 58,100,100,100, 32, 43, 43, 11,102,179, 25,185,185,185,224,121,158, 40,149,202, 12,158,231,193, 48, 5,198,183, +146, 56,165, 82, 41,226,226,226,138,108, 99, 89, 22, 6,131, 1,102,179, 25, 86,171, 21, 58,157, 78,233,227,227, 83,167, 65,131, + 6, 73, 0,246,100,103,103, 47, 73, 77, 77, 77, 16,218,173,127, 4, 15,246,253,102,170, 6,192, 2,224, 94, 37,240,241, 0,112, +234,212, 41,164,165,165, 33, 51, 51, 19, 25, 25, 25,136,136,136, 64, 69,186,227,226,227,227, 87,191,240,194, 11,228,250,245,235, +135, 0,172,140,137,137, 25,153,157,157, 61,125,202,148, 41,254,139, 22, 45,202,158, 58,117,234,124, 0, 27, 99, 98, 98,222,121, +254,249,231,123,220,186,117,107,221, 63,145, 78, 1, 2,254, 6, 52, 7, 16,100,255,159,105,111,119, 3,156,214,175,218,235,173, +227, 56, 11, 0,153,155, 95, 7, 28,235, 25, 0,126,117, 58,207,177, 94,145,247, 39,117,254, 45,252,232, 6,128,253,251,247, 83, +199,226,238,228,144,144,144, 73,157, 58,117, 90,124,233,210,165,250, 41, 41, 41,126, 41, 41, 41,126,151, 46, 93,170,223,169, 83, +167,197, 33, 33, 33,147, 28,199,217, 61,238,225,180,238, 60, 68, 83,122,246,236,217,200, 93,187,118,205,143,141,141,205,107,210, +164,137,229,232,209,163,108,215,174, 93,211, 1,176, 0,216,174, 93,187,166, 31, 59,118,140,107,217,178,165,242,224,193,131,137, +103,206,156, 89,186, 99,199,142, 16, 0,162, 18, 56, 65, 8,145,104, 52,154, 31, 78,156, 56, 81, 76,100, 57,163,106,213,170,216, +183,111,159, 90,163,209,236, 33,132, 72, 75, 73, 39, 8, 33, 10,133, 66,177,243,216,177, 99,222, 62, 62, 62, 72, 79, 79,135, 68, + 34, 65,112,112, 48,242,242,242,144,154,146,130,132, 63,254, 0, 99,177, 96,217,231,115,124,148, 74,229, 14, 66,136,172, 44, 78, + 95, 95,223,157, 91,231,205,243,206,138,141,197,149,185,115, 97,181, 90, 11,187, 92,173, 86, 43,206,140, 31,143,140,159,127,198, +134, 89,179,188,125,125,125,119, 18, 66, 20,165,113, 86, 6,156, 57, 9, 33,227, 1,100, 3,200, 38,132,140,167,148,158,107,216, +176,225,165,155, 55,111,162,109,219,182,216,190,125,251,139, 83,166, 76, 25, 63,101,202,148,241,219,183,111,127,177,109,219,182, +184,121,243, 38, 26, 54,108,120,201,217,151,202, 19,206, 19, 39, 78,160, 83,167, 78, 57,219,183,111,175, 57,107,214,172,121,179, +102,205,154,183,109,219,182, 90,157, 58,117,202, 89,190,124,185,185, 52,206,191, 35,239,206,150, 38,231,133,231,255,122,199,132, +135,135,167,239,218,181, 11,131, 6, 13, 98,100, 50, 89,202,224,193,131,229,167, 79,159,166, 0,246,149, 39,157, 38,147, 9, 70, +163, 17, 6,131, 1,119,239,222, 85, 46, 92,184,176,205,167,159,126, 90, 59, 54, 54,182,202,140, 25, 51,198, 5, 5, 5, 93, 14, + 13, 13,141,124,220,121, 23, 56, 1, 0,169, 0,172,246,143,187,132, 71,225,236,220,185,243, 11,181,107,215, 14,137,185,238,135, + 28,105, 61,240, 82, 13,120,169, 6, 92, 64,115,196,203, 94, 65,181,106,213, 66,124,124,124, 90,149,135,147, 82,186,229,247,223, +127,127,153, 82,250, 41,165, 52,139, 82,186,120,234,212,169,159, 17, 66, 78, 77,157, 58,117, 14,165,116,177,125,251,220,155, 55, +111,182,164,148,110,253, 39,210, 41,148, 37,129,179, 34, 40, 67,139, 4, 17, 66,246, 17, 66,246,125,244,209, 71, 29, 1, 4,184, +172,255,199,249, 56, 0, 50,119,191,142,197,105,123, 16,128,158, 78,231, 5, 85,240,126, 16,215,165,136,208, 2,128,158, 61,123, +146,158, 61,123, 58,118, 92, 32,132,236, 5,112, 65, 42,149, 54,105,220,184,113,223,159,126,250,201, 39, 40,232,175,235, 7, 5, + 5, 97,199,142, 29, 62, 13, 26, 52,232, 43,149, 74,155, 0,184,160, 86,171,247,194, 77, 23,163, 29,154,241,227,199,247, 31, 49, + 98,132,182, 73,147, 38, 0,144,123,227,198, 13, 85,203,150, 45, 13, 44,203, 18,150,101, 73,203,150, 45, 13, 55,110,220, 80,217, +108, 54, 93,243,230,205,189, 58,119,238,124,127,242,228,201,195, 1, 40, 74,201,223,208, 5, 11, 22, 68,248,249,249,149,118, 3, +160,211,233, 16, 18, 18,130,241,227,199,135, 74, 36,146,183, 74,187, 97, 98,177,120,194,130, 5, 11,130, 53, 26, 13,114,114,114, + 16, 17, 17, 1,139,197,130,184,184, 56,152, 12,122,216,116, 90,216,180,185,200,248,243, 14, 52, 18, 49,134,247,233, 21, 34, 22, +139, 39,148, 97, 45,153,240,205,212,169, 33,150,251,247,113,119,251,118,112,108,113, 67, 13,107,181,226,218,215, 95,195,148,148, +132,249,163, 71,135,200,100,178, 9,143,217,146,181,136, 82,170,164,148, 42, 9, 33, 43,254,243,159,255,124,171, 84, 42,199, 71, + 71, 71,119, 59,124,248,112,247,147, 39, 79,118, 96, 89, 86,194,178,172,228,212,169, 83,109, 77, 38,147, 88, 46,151, 67, 44, 22, + 83, 79, 57, 91,181,106,181, 73,169, 84,142, 91,179,102, 77,183, 99,199,142, 13,191,120,241,226, 4,142,227,100, 28,199,201, 46, + 94,188,248,182,209,104,148, 80, 74,185,146, 56, 31, 55, 36, 18, 9,164, 82, 41,148, 74, 37,218,180,105,243,231,250,245,235,109, + 17, 17, 17,146,157, 59,119,250,133,135,135,123,173, 92,185, 50, 87,167,211, 45,240,148,207,106,181,194,108, 54,195,104, 52,194, +100, 50,225,232,209,163, 53, 38, 78,156, 40, 54,153, 76, 92,239,222,189,179,109, 54,155,121,234,212,169,106,127,127,255, 15,133, + 15,216,127, 4, 44, 0,189, 93,104,153,157,203, 50, 33,164,145,195, 58,235, 9,114,115,115,215,125,243,205, 55, 17,140, 92,131, +211,150, 30,248,158,255, 12,135,125, 87, 34, 61,242,191, 8,142,168,141, 33, 67,134, 4, 83, 74, 87, 86,194, 11,239, 75, 74,105, + 59, 74,233,138,138,156,255,119,167,147, 16, 18,233,237,237,189, 93,173, 86,159,246,246,246,222, 78, 8,137,124,212, 60,119,173, + 67,186,244,173, 47, 74,234, 90,155,208,190,245, 69, 73, 93,235,148, 63,214,147,128, 39, 19, 46, 90,196, 25, 25,148,210, 94,148, +210, 94,243,231,207,159,231, 84,254, 29,235, 74, 15,235, 75, 47, 74,105, 47,151, 50,186,175, 18,222,161,212,117, 41,212, 20,206, + 74,210,145, 57,231,209,133, 85,171, 86,221,180,105,211, 38, 31, 87,210,148,148, 20,104,181, 90,204,156, 57,211,103,196,136, 17, +239, 37, 38, 38,190, 81, 70, 58,100,169,169,169, 77,135, 13, 27,166,176, 90,173, 57, 60,207, 51, 90,173, 86,236,235,235,203, 57, + 14,240,245,245,229,242,242,242, 36, 6,131, 65,196,113,156,121,196,136, 17,178,209,163, 71,191,228,108,209, 42, 38,113,131,130, +162,122,244,232, 33, 43,105,191,205,102,131,193, 96,128,193, 96,128,213,106, 69,155, 54,109,228,235,215,175,239, 10, 96, 77, 73, +231,200,229,242,168,168,168, 40, 73,118,118, 54,124,125,125,145,144,144,128,123,247,238,193,172,215,195,170,215,194,170,215,129, +213,105, 65,181,121,200,186,115, 27, 45,159,175, 39,253, 78, 46,239, 6, 96,105, 73,156,106,181, 58,170,229,200,145, 98, 47, 47, + 47,116, 24, 86, 48,206,224,224,243,207,131,114, 28,120,142, 3,199,178,232, 22, 23, 7,155,205, 6,134, 97,208, 60, 59, 91,172, +222,188, 57, 10,192,226,127,162,176,203,229,114,241,150, 45, 91,134,202,100, 50, 80, 74,137,197, 98,193,225,195,135, 31,153,115, +243,230,205,195, 29,156, 86,171,149,190,240,194, 11,197, 42,148,217,108,166, 79, 74,165,151,201,100, 80, 40, 20,176, 90,173,168, + 94,189,186,113,216,176, 97,103, 63,255,252,243,106, 12,195,120, 73,165,210,159,178,178,178,230, 37, 39, 39,223,245,148,207,102, +179,193, 98,177,192, 98,177,192,104, 52,226,207, 63,255, 12,173, 81,163, 6, 25, 63,126, 60,151,159,159, 95,243,139, 47,190,136, + 63,124,248,176,106,193,130, 5,175, 2,120, 87,104,118, 31, 31,236, 86,105,223,106, 1, 98,131, 68, 4, 61, 0, 31,187, 40,120, +149, 16,210,178,126,253,250,126, 55,111,222,204, 33,132,156, 7,240, 61,165, 52,165, 52, 62,158,231, 9,207,243,120,187, 69, 46, +198,183, 18,193,102,203, 67, 94, 94, 30, 18, 18, 18,112,227,198, 13,252,242,203,141, 10,165, 83,161, 80,188,229,237,237,221, 85, +161, 80, 84,103, 89,150,209,235,245, 9,249,249,249,177, 60,207,175,163,174,221, 10, 30,224,239, 74,167, 3, 94, 94, 94, 11,103, +204,152,209,218,215,215, 23,191,253,246, 91,205,109,219,182, 45,196, 35, 58,215, 43, 36,204,134,165,203, 87, 86,169, 18,172,193, +213,147, 63, 86,153,183, 54,102, 3,128, 8,161, 20, 63,253,112,214, 34, 46,248, 21, 64, 79,251,104,244, 94,143, 80,207, 31,233, +252,210, 44, 90,174, 19, 75, 23, 19, 90, 37,100, 12, 44,203,134, 58, 91,178, 40,165, 72, 73, 73,193,195,135, 15,145,145,145, 1, + 63, 63, 63, 88,173,214, 80, 79,222,179, 58,157,174, 69, 64, 64, 64,190, 68, 34, 49, 27,141, 70,168, 84, 42, 94, 34,145, 80,251, +117,136,125,212, 34,103, 54,155,137, 88, 44,182,249,248,248,120,155,205,230,122, 40,197,151,140, 82,218, 34, 32, 32,192,237, 62, +179,217, 12,189, 94, 15,131,193, 0,189, 94, 15,179,217,140,144,144, 16,176, 44,219,180,212, 79, 90,150,109, 20, 20, 20,132,228, +228,100, 40,149, 74, 36, 37, 37,193,162,215,193,170,211,129, 53,104,193,229,229,129,215,106,193, 27,180,176, 89,242, 81,165,238, +243,112,140, 72, 44, 9, 22,139,165, 81, 64, 64, 0, 12,134,191,220,205,168, 93, 96,177, 44, 11,214,238, 28,237,232, 78, 12, 12, + 12,132, 99, 68,226,227,128,221,127,106, 10,195, 48, 43,228,114,185,120,220,184,113, 72, 73, 73, 41, 82, 38,198,141, 27, 87,232, +147,213,174, 93,187, 83, 10,133,130,205,200,200,128,217,108,150,120,194, 89,189,122,245,132,153, 51,103, 94,176, 88, 44, 17,225, +225,225, 26,179,217,108,124,238,185,231,194,149, 74,101,136,197, 98,225, 94,122,233,165,117, 74,165,210,166,215,235, 41,203,178, +228, 73,168,244,132, 16, 16, 66, 10,158, 17,203, 34, 48, 48,208,144,153,153,249, 75, 78, 78,206,208,138,240,217,108, 54,199,136, + 46, 24,141, 70, 80, 74,241,219,111,191, 65,161, 80, 72, 56,142,187,206,178,172, 74, 34,145,128,177, 59,127, 9,120,108,207,185, + 67, 61,141,108,105,116,203, 96, 77,227,222, 94, 6,149, 76,100,224, 19, 26, 87,255,223,162, 27,219, 70, 12,127,203,103,246,236, +217,145,129,129,129,138,248,248,120,211,156, 57,115,106,108,217,178,133,148,245, 17,244,224,193,131,221, 51,102,204,240,239,209, +163, 71, 77,185, 92, 78,242,242,242,144,145,145,129,180,180, 52,220,187,119,143, 94,189,122,245, 79,179,217,188,189, 60,233, 12, + 15, 15, 95, 63,113,226,196, 17,205,154, 53,147, 56, 44,164, 6,131,161,201,137, 19, 39,250, 28, 60,120,176, 45,128,114,151,203, +196,196,196,237, 31,127,252,177,215, 43,175,188, 82, 79, 46,151, 51,149,145, 78,103, 48, 12, 19,226,237,237,141,216,216, 88,104, + 52, 26, 48, 12, 19,242,168,207,203,100,229,171,132,135, 6,192,116,102, 41,234, 5, 69,194,100,229,171, 8,165,248,217,177,104, +149,176,171,185,195, 34, 85,134, 88, 50, 78,159, 62,125, 6, 33,100,223,244,233,211,103,184,179,104,217,255,114,206,199, 57, 29, +111,174,108,177, 85,174,160,144, 60,207,227,225,195,135, 72, 78, 78,198,195,135, 15,145,149,149, 5,134, 97, 74,141, 31,225,156, + 6, 66, 8,127,228,200, 17,191,179,103,207, 26,154, 55,111,158,235,240,127, 97, 89,150,216,108, 54, 98,247,139, 33, 9, 9, 9, +210,211,167, 79,107,110,221,186, 21,130, 2,135, 53,190,140,204, 21,219,230, 16, 88,206,139,201,100,130, 66,161,240, 40,175,142, + 23,225,111,151, 46, 21,136, 44,189,206,222,101,152, 7, 78,155, 7,106,208, 65,198,217, 32, 3, 5, 49,229,123,124,255,156,225, + 16, 89, 86,187,208,178, 88, 44,176,217,108,224,121, 30, 44,203, 62,246, 2, 78, 41, 93,221,164, 73,147,166,187,119,239, 30,245, +240,225,195, 98,251,251,245,235,135,119,223,125, 23, 19, 39, 78,188,213,179,103,207,171, 63,254,248, 35, 38, 76,152, 0,158,231, + 27, 19, 66,242, 40,165, 7, 75,227,156, 62,125,250,197,196,196,196,227,127,252,241,199,184,224,224, 96,121,163, 70,141,238, 52, +106,212, 72,180,123,247,238,144, 49, 99,198, 92,234,222,189,251,253,159,127,254,217, 63, 54, 54, 86,193,243,124, 51, 66,200,195, +127, 58,142,150,217,108, 46,180, 64,153, 76, 38, 88,173, 86,160, 20,231,247,178,202,166,227,217,178, 44,235,224, 38,187,119,239, +194,169, 83,167,152, 27, 55,174, 71,140, 27, 55,222,225,112, 47,180,184,143, 71, 96,189, 34, 99,200, 87, 83, 26, 7, 40, 62,124, + 49,192, 32, 19, 19,125,220, 87, 51,244,247,170,169, 13, 33, 85, 85,150,136, 26,154,240,121,243, 62, 15,187,117,235,182,121,230, +204,153, 55, 7, 15, 30, 28,252,225,135, 31,214,223,185,115,103, 91, 66,200, 55,148,210,220, 18,120, 21, 35, 71,142, 60, 31, 28, + 28, 92, 99,237,218,181,233,137,137,137,126, 54,155,205,203,106,181,242, 6,131,225,158,209,104,140,181, 90,173,177,148,210, 75, +229, 73,175,143,143,207,139, 35, 71,142,148,228,230,230,194, 62, 90, 23,233,233,233,104,221,186,181,104,239,222,189, 13, 42,114, + 15,178,179,179,151, 18, 66,142,111,221,186,181,171, 90,173,110, 38,151,203, 67, 1,112, 58,157, 46,205, 96, 48, 92,169, 72, 58, +139,180,115, 28,151,118,233,210,165, 90,106,181, 26, 15, 30, 60, 0,199,113,105,143,250,220, 20, 82, 38,241,218,201,189, 85,159, + 15,172,129,211,103,207, 67, 33,101, 18,133,210,252,204,195,225, 67, 5,103, 1,229, 70, 32,157,141,142,142, 86,206,159, 63, 31, +209,209,209,215,221, 89,180, 28,130, 43, 58, 58,250,186,227, 56,167,227, 79, 62, 66,123, 82,178, 69,171, 20, 5, 9,177, 88,156, +154,145,145,225,167,209,104, 10, 5, 86,114,114, 50,146,147,147, 33,147,201,144,144,144, 0,153, 76,150,226,201, 71,136, 82,169, +188,216,164, 73,147,231,238,222,189, 43,157, 51,103, 78,213, 75,151, 46,169, 91,183,110,253,130, 82,169,228, 40,165, 48,153, 76, +204,205,155, 55,189, 23, 47, 94, 92,165, 69,139, 22,150, 22, 45, 90, 92,142,137,137, 49,162,148,224,165,132,144, 11, 41, 41, 41, + 53,171, 87,175,238, 16,109, 69,196,149,179,224, 2, 10,186, 60,197, 98,241,229,210, 18, 42, 22,139,175,197,197,197,117, 81, 41, +228,176,232,180,176,234,181, 96,117, 58,112,186, 60,112,121,121,128, 65, 11, 25,203, 66,194,217,160, 84, 40,240, 48, 41, 9, 98, +177,248, 90,105,156, 50,153,236, 90, 90, 90, 90, 23,141, 70, 83,248, 18,181,177,108,193,194,113,176,176,108,161, 69, 75, 34,145, + 32, 49, 49, 17, 50,153,236,218,227, 46,201, 12,195,112,142, 16, 14, 37,228, 3, 33, 33, 33,124,203,150, 45, 49, 97,194, 4,112, + 28,103,127, 12,164, 3, 33,228, 52,165, 84, 95, 18, 39,207,243,204,205,155, 55,251,199,199,199,139, 36, 18, 9,243,242,203, 47, + 55,108,211,166,141, 69, 38,147, 65, 42,149,138,245,122,189, 79,108,108,172,194,102,179, 17, 59,231, 99,139,163,229, 40, 59,197, + 62,141,236, 78,235, 70,163, 17,122,189, 30, 57, 57, 57, 98,165, 82,249,220, 11, 47,188,112,222, 98,177,108,103, 89,118,195,221, +187,119,181, 37,113,218,133, 89,161,232,226,121, 30,148, 82,112, 28, 7,155,205, 6,169, 84,202,159, 56,113, 18,139,151, 45,196, +166, 13, 91,104,159, 62,125,200,222,189,123,193,243,124,146,208,174, 62, 22, 44,201,253,254,115, 5, 88,206, 96, 62,177, 85,255, +237, 31, 90,195,236,111,151, 95,180,200, 68,218,151,218,135, 52,170, 89,227, 57,145, 70,227,199,172, 89,183, 34,235,187, 45, 59, +226, 31, 60,120,160, 93,181,106, 85,171,231,158,123,206,247,202,149, 43, 85, 0,184, 21, 90, 42,149,170,206, 91,111,189, 53, 50, + 39, 39, 71,186,105,211,166,152,148,148,148,139, 0,110, 80, 74, 13, 78,109, 87, 79, 66,200, 70, 20,140,124, 10,177,183,115,167, + 41,165,115, 74,251, 94, 35,132,224,216,177, 99,197, 70, 7,242,143,166,206, 53,181,107,215, 30,116,247,238,221, 83,169,169,169, +175,185,169,247,179,235,214,173,219,237,250,245,235,159, 81, 74, 15,148,135, 56, 63, 63,127,234,142, 29, 59, 22,137, 68,162,112, +142,227,146,141, 70,227,212, 71,182,104,217,248,209,209,107,182,125,109,180,112,213,148, 50,209, 3,147,141, 31, 35, 20,229,103, +218,154, 5,216,125,180, 28,255, 1, 16,151,245, 43,246,255, 22,167, 99, 51,156,172, 88, 22, 23, 43,152,187,125, 25,168, 96,176, +116,119, 35, 14, 29,162,171,164,200,240, 31, 1,104, 1,224,130, 68, 34, 89, 49, 98,196,136,197,223,125,247,157,143, 86,171, 69, + 90, 90, 26,210,211,211, 33, 22,139,161, 86,171,177,122,245,106, 99, 90, 90,218, 10,231,115, 92, 35,200, 59,234, 70, 96, 96,224, +197, 45, 91,182,132,126,245,213, 87,226, 55,222,120, 35,161,103,207,158,245, 86,175, 94,125, 87, 42,149, 82,142,227,136,217,108, + 38,111,191,253,118,173,101,203,150,221, 23,137, 68,170, 65,131, 6, 17, 47, 47,175, 11, 40,112, 80,117,127,231, 51, 50,142,252, +240,195, 15,253, 39, 79,158, 44,183, 88, 44,110, 45, 89,142,109, 26,141, 6,103,206,156,177,228,228,228, 28, 46,195,138,113,228, +167, 3,251,219,189, 62,120,176,212,166,211,194,166,211,130,213,106,193,233,114, 65,244, 90, 72, 56, 22, 74, 41,143,208, 8, 5, + 88,163, 55,246,255,122,197,102, 54,155, 75, 13,108,168,213,106,143,156,222,180,169, 67,139,200, 72,241,153, 73,147, 96,181,217, +240, 74, 92, 92,161,184,178, 90,173,216,211,168, 17, 56, 66,208,120,236, 88,220, 97, 89, 86,171,213, 30,121, 18, 43,195,213,171, + 87,211,135, 13, 27,118,137,231,249,166,229,177,238, 56,224,237,237,173,211,235,245,200,204,204,228,178,178,178, 76, 0,144,158, +158,158,179,119,239,222,155, 60,207,183,168, 8,103,101,192,102,179, 21,179, 70,113, 28, 87, 96,117, 44,176, 28,200,246,239,223, +223,238,230,205,155,210,223,127,255, 29,167, 78,157,106,252,221,119,223,125, 20, 25, 25,217, 40, 33, 33, 33,181, 44,241,230, 46, +232, 47,236,254,135, 49, 91,183,227,157,119,222, 33,169,169,169,248,254,251,239, 81, 86,240, 84, 1,149, 6, 3, 88, 78,105, 57, +177, 85,223,243,192, 3,221,185, 20,227, 28, 0,135,168,145,165, 85,171, 86,189,218,172,153, 95, 32, 0,152, 77, 92,104,157, 58, +117,218,139,197, 98,153,189, 12, 55, 11, 8, 8, 88, 13,160,141,155,246, 83, 52,120,240,224,150,193,193,193, 77, 14, 30, 60,120, + 37, 37, 37,229, 58,165,244, 23,215,227,106,213,170, 53,243,214,173, 91,205, 37, 18, 9, 41,163,140, 0, 0, 58,116,232,240, 92, +100,100,100,192,129, 63,124,161,149,214, 6, 21,229, 1, 98, 5, 56,205,139, 72,144,214, 71, 68,196,249, 0,141, 70,211, 56, 55, + 55,247, 74, 57, 95, 16, 29,251,247,239,191, 97,211,166, 77, 17,237,219,183,167,132, 16,198, 53,164, 67,173, 90,181,186,158, 59, +119,174,233,152, 49, 99,214,218, 71, 15,123,236, 60, 76, 41, 77, 0, 48,160, 50, 31,218,225, 59, 52, 22,246,152,103, 2,254, 53, +248,245,111, 58,182, 82, 80,145,200,240, 45,120,158,239,195, 48, 12,172, 86,107,116, 72, 72,200,158, 65,131, 6,245,251,232,163, +143,188, 3, 2, 2, 10, 45, 89,171, 87,175, 54,222,187,119,111,167,213,106,253,141, 16, 50, 43, 57, 57,185, 79,120,120,137,239, + 7,221, 23, 95,124,177,173,119,239,222,111,140, 29, 59,214,216,168, 81, 35,117,189,122,245,242,207,158, 61,235, 29, 21, 21,165, + 21,137, 68,244,204,153, 51, 62,181,106,213, 50, 17, 66,228, 63,255,252,115,214,249,243,231,107, 69, 71, 71,127,131,130,225,214, + 37, 97,235,220,185,115,103,246,233,211,167, 86, 64, 64, 0,180, 90,109, 17,177,229,248,175, 80, 40,144,154,154,138, 93,187,118, +165,216,108,182,111,202,176,108,172, 90,185,122,205,123, 29, 91,190, 92, 69,173, 82, 34, 53, 41, 1, 92, 94, 14, 96,208, 67,198, +218,160,148, 81, 84,169,173,130, 88,228,133,248, 84, 61, 54,157,253, 53,149,101,217, 85,165,113, 90, 44,150, 85,239, 46, 91,246, +222,185, 53,107,170, 68, 14, 28,136, 27,155, 55, 23,118, 21, 58,132, 22, 71, 8,170,117,238, 12,198,215, 23,243,214,174, 77,179, + 88, 44,171, 30,119, 97,225,121, 94,100,177, 88, 74,203, 7,120,158, 79,186,113,227,198, 54, 66,136,142, 16,210,193,190,235,184, + 59,107,150, 51, 39,195, 48,124,253,250,245,119,135,132,132,244, 7, 96,168, 95,191,254,110,185, 92,222,201, 98,177,188,204,243, +124,210,111,191,253,182,139, 16,146, 74, 8,113,124,117, 60,214, 56, 90, 54,155, 13,179,102,205,194,252,249,243, 49,125,250,244, +194,252, 58,186, 15,115,115,115,107,156, 62,125, 90,122,226,196, 9,186,118,237,218,172, 55,222,120, 67, 51,118,236, 88,205, 87, + 95,125,245, 1,128,169, 37,113, 78,157, 58, 21,107,215,174,197, 59,239,188, 83, 92,101,137, 68,124, 82, 82, 34, 76, 38, 19,253, +226,139, 47,146, 37, 18,137,223, 55,223,124,163, 28, 51,102, 12, 17,218,213,199,130,143,149,195, 62,121,223,222,198,172,160,148, + 30,119,236, 80,171,213,202,221,187,127, 16, 3,192,206, 29,187, 36,148, 82, 95, 71,128,217,111,191,253, 86,209,186,117,235,224, + 18, 26, 92, 78,161, 80,152, 23, 44, 88, 16, 48,122,244,232,238, 71,143, 30,245, 35,132,180, 4,112, 17, 64,154, 93, 92, 7, 3, +184, 17, 24, 24,168,142,137,137,169,210,181,107, 87,175,178, 18,170,211,233,190,217,182,109, 91,245,101,167,125,113,192,208, 31, +137,252, 64, 80, 13,133,127,176, 14,245,189, 31, 96,232,208,161,225, 43, 86,172,248, 26, 64,179,114,136,172,161,253,250,245,155, +191,105,211,166,240,209,163, 71,167, 94,190,124, 57, 13,192, 38, 55,130, 47,115,196,136, 17, 41,155, 55,111, 14,163,148,174, 33, +132,200, 40,165, 59,133,226, 35, 64, 64, 97, 93,106,143,130,136,240,197,196, 23,113,231,223, 68, 8,217,195,178,108, 31,177, 88, +188,215, 57, 96,105, 72, 72,200,123, 22,139, 37,140, 16, 66,165, 82,105,106, 90, 90,218, 10,231,128,165, 73, 73, 73,125, 34, 34, + 34, 10,207,177, 7,221,116,142,181,161,126,229,149, 87,186,156, 59,119,238,203,125,251,246,165,235,116, 58,239, 29, 59,118, 40, +231,207,159,159,192,243, 60,157, 54,109, 90,100,183,110,221,242, 57,142, 75, 25, 59,118,108,173, 26, 53,106,140,189,117,235, 86, +172,179,208,114,195, 9, 66, 72,131,218,181,107,159,217,185,115,167, 90,163,209, 32, 61, 61, 29,217,217,217, 48, 24, 12,224, 56, + 14, 18,137, 4, 25, 25, 25,152, 51,103,142, 54, 57, 57,185, 88,192,210, 18, 56, 91, 84,175, 82,229,200,138,207,102,249,104,196, + 12,178,110,223, 4,155,147, 5, 9,107, 67,213, 6,190,144,202,148,184, 19,167,195, 7, 91,119,233, 30,100,231, 22, 11, 88, 90, + 18,231, 75,117,234,196,174,157, 50,197,219,148,152,136,176, 55,223, 68,126,126, 62,172, 86, 43, 24,134,193,159, 43, 86, 64, 26, + 20,132,153, 49, 49,134,235, 15, 30,116,118, 13, 88,234,142,179, 18, 10, 71, 33, 39, 33,100, 60, 33,164,208, 25,190, 95,191,126, + 69,142,253,225,135, 31,176,102,205, 26,152,205,102,150, 82,250, 30,165,116, 53, 33,196,219, 94,160,244,101,113, 86,175, 94,253, + 65,195,134, 13,127,229, 56, 78,108, 23, 25,244,198,141, 27,205,238,221,187, 87,213,133, 83,108,231,100, 31, 87,222, 3, 2, 2, + 86, 28, 60,120,176,122,112,112, 48,113,142,216,110, 23,138, 0,128, 9, 19, 38,116, 62,127,254,188,188, 73,147, 38,230,204,204, +204,230, 65, 65, 65, 71,183,108,217, 18, 56,104,208,160,228,235,215,175, 87,113,229, 12, 12, 12, 92,188,115,231,206,218,181,107, +215,102, 28, 86, 49,215,238,201, 81,163, 70,117,217,178,101,139,172,127,255,254,102,131,193, 16,226,227,227, 19,191,115,231,206, +192,190,125,251,166, 94,191,126, 61,236,113,228, 93,224,116,143,134, 13, 27,222,185,126,253,122,109,199,186,209,104, 68, 70, 70, + 6, 50, 51, 51,161,209,104, 16, 21, 21,245,231,189,123,247,106,187,227, 36,132, 52, 25, 48, 96,192,103, 95,127,253,117, 23, 47, + 47, 47,233,201,147, 39, 13,177,177,177,166,132,132, 4,214,102,179,209,176,176, 48,113,155, 54,109, 20, 61,122,244,240,146,203, +229,204, 39,159,124,146,249,249,231,159, 7, 18, 66,182, 58,166, 63,115,229,108,218,180,233, 47, 63,253,244, 83, 11, 66, 8, 68, + 34, 17, 44, 22, 43,114,115,115,241,240, 97, 18,110,220,184,129,115,231,206,225,240,225,195, 87,244,122,125, 19, 15,235,123, 0, +128,147,102,179,185,158, 76, 38,243, 88,216,115, 28, 7,177, 88,124, 27, 64, 87, 74,105,146, 80,150, 4, 78, 1,127,249,103,149, +203, 25,222, 46,192, 90, 16, 66, 28,147,146, 94,112, 13,225, 64, 8,249,136, 16, 50,203,201, 10, 86, 86, 90,180, 7, 15, 30, 60, +213,165, 75,151, 9,157, 59,119, 94,214,181,107,215,148,148,148,148,154, 75,151, 46,141, 96, 89,214,122,227,198, 13, 38, 62, 62, + 62,225,226,197,139,181,235,214,173, 59,246,214,173, 91, 39,202,176,102, 57,210,122,131, 16,210,186, 99,199,142,187,198,142, 29, + 91,173,101,203,150, 50,141, 70, 3,177, 88,140,187,119,239,226,202,149, 43,150,152,152,152,164,220,220, 92,143,167,224,161,148, + 94, 32,132, 68, 13,154,248,222,206,177,253,122, 7,190, 92,239, 57, 89, 88, 88, 24, 96, 52,226,246,131, 84,156,191,125,197,186, +254,212,249, 12,179,217,252,154,167, 83,240,216, 57,187,116,154, 50,101,231,236,215, 95, 15, 65, 74,138, 56, 44, 44, 12, 50,153, + 12,247,238,221, 67, 60,207,179, 11,214,173, 75,211,106,181,143,125, 10, 30, 71,204, 43,158,231,197, 0,160, 84, 42,241,238,187, +239,194,121,202,157, 53,107,214,192,104, 52, 2,128,152, 16,178,136, 16,178,161, 36, 43, 86, 9,156,213, 14, 28, 56, 80,205,153, +243,249,231,159,119,199,105,126,220,149, 36, 59, 59,123,230, 43,175,188, 18, 45, 22,139, 75,140,122,235,231,231, 7,157, 78, 7, +150,101,185,135, 15, 31,222,246,243,243,131, 68, 34, 1,165,212,109, 61,202,202,202,154,249,218,107,175,205,101, 24, 38,184, 36, + 78,181, 90,157,112,244,232,209, 58, 99,198,140, 97,254,247,191,255,221, 29, 61,122,180,252,232,209,163, 28,165,116,151,208,116, + 61, 89,112,254, 40,181,127,196,209, 82,142,253,141, 16,178,236,226,197,139, 65, 19, 38, 76,168,249,250,235,175,171, 59,118,236, +232,237,124,140,209,104,228,127,252,241, 71,195,154, 53,107,242, 78,157, 58,117,127,212,168, 81, 45, 81,224, 95,226, 22, 15, 30, + 60,216, 63,111,222, 60,223, 30, 61,122,212, 5, 80,232,159,149,145,145,129,132,132, 4,252,254,251,239, 9, 86,171,117,111, 57, +242,147, 69, 8,153, 61,100,200,144, 69,155, 55,111, 14, 31, 61,122,116,106, 76, 76,204,239, 40, 8, 48,236, 10, 77,191,126,253, + 26,109,222,188, 57,108,244,232,209,169, 0,230, 80, 74, 5, 63, 66, 1, 2,254, 66, 7, 87, 63,173, 82,125,180, 0,228,241, 60, + 15,147,201, 20,194,243,124, 31,158,231,225,237,237,237,238,184, 22,201,201,201,125,156, 39,149, 70, 25,211,229, 0,200,136,141, +141, 61,178,117,235,214,206,211,166, 77,123, 61, 55, 55,183,197,213,171, 87, 91, 2,128, 68, 34, 57,231,229,229,245, 75,116,116, +244,155, 83,167, 78,205,240, 68,100,185,136,173,250,139, 23, 47,174,180, 73,165,237,194,168,206,170,237,187, 38,124, 35,151, 71, +185, 76, 42,125,196, 62,169,180,169, 34,156, 83,190,254,122,130,122,251,246, 39,118, 82,105,179,217,204,246,239,223,255, 27,134, + 97,120,251, 87,172,216,108, 54,191,137,114,142, 84,117,229,236,215,175,223,255, 68, 34, 17,107,183, 20, 49,102,179,249,173, 71, +225,172,196,151,168, 30,192,196,210,142,121,225,133, 23,182,236,221,187,119, 88,159, 62,125, 56,171,213,154,222,187,119,111,241, + 47,191,252, 66, 25,134,137, 45,129,211, 12,224,191,165,113,134,134,134, 70,174, 92,185,242,242,164, 73,147,212, 91,183,110,245, + 63,125,250, 52,247,197, 23, 95,104,179,179,179,151, 8,237,214,147, 5,137, 68, 2,149, 74, 5,139,197,130,140,140, 12,148, 21, +178,138, 82,122,140, 16,210, 99,202,148, 41,175, 78,153, 50,165, 71,104,104,104,173,234,213,171,171, 24,134,193,195,135, 15,217, +228,228,228,116,155,205,118, 4,192, 46, 0,168, 85,171,214, 8, 0,235, 75,226,203,202,202,154, 75, 8, 57,182,121,243,230,158, + 94, 94, 94,245, 21, 10,133,191,205,102, 99,116, 58, 93,182,209,104,188,105, 50,153,246, 81, 74,207,150,179,220,199, 16, 66, 50, +223,120,227,141, 13,155, 54,109,138,184,123,247,174,238,226,197,139,175,184, 30, 87,191,126,253,211,155, 55,111, 14, 27, 51,102, + 76, 74, 76, 76, 76,185,124,180, 4, 8,248,151,124,136,157, 64, 9,254,197, 37,189,224,230,201,100, 50, 49,236,147, 75, 59, 44, + 90,110,142,187,224,226,147,149, 7, 96,158, 7,105, 50, 12, 29, 58,244,222,208,161, 67, 23,217,211, 32, 66, 65, 8, 7, 22, 5, + 30,255, 86,148, 17,210,161,132,140,178, 0,190,182, 47,149,117,243, 76, 40,136,151,179,248, 73,230,172,132, 52,153, 9, 33, 83, + 8, 33,139,236,155,166,252,246,219,111,171, 93, 44, 84, 87,157,247,151,101,121,114,199,121,229,202, 21, 87,206,223,203,195,249, + 79, 34, 55, 55,247,189,149, 43, 87, 94,152, 62,125,186,124,228,200,145,248,253,247,223, 49,127,254,124,115,110,110,238,214,138, +114,166,166,166, 38,132,134,134, 54, 93,190,124,249,135,203,150, 45,235, 75, 8, 17,230, 58,124, 66, 96, 52, 26,255,124,241,197, + 23, 65, 10, 28,150, 40,203,178,133,163, 69,237, 17,254,255,244,196,106, 4, 96,157,125, 1, 33,196, 31, 5,163, 12,179, 40,165, +174, 31,146, 83, 60,224, 59, 7,224, 92, 37,215,253, 99,132,144, 55,227,227,227,231,253,249,231,159,110,133,218,157, 59,119,142, +183,105,211,198,231,234,213,171, 31, 83, 74,247, 11,165, 67,128, 0,207, 33, 46,161,226,221, 1,240,186, 7, 21, 52,250, 17,174, +205,121, 96,253, 18,240,120,197,214,106, 66,200, 6, 39,107, 76,185,246, 63, 46,206,127, 10, 73, 73, 73, 57, 0, 10,167, 34,169, + 89,179,102, 49, 63,182,138,138, 45, 20, 68,129, 23, 34,193, 63, 65,184,123,247,238, 43,127, 67, 29,203,126, 66,235,254,113, 0, + 45, 75,218,111,179,217,102, 1,184,162, 10,252, 0, 0, 32, 0, 73, 68, 65, 84,152, 37,148, 10, 1, 2,202, 15, 33,250,180, 0, +215, 6,215, 92,154,224, 41,107,255,227,226, 20, 32, 64,128, 0, 1, 2,158, 20,184,153,235,176,125,225, 62, 0, 93, 74,120,249, +197,150,227, 2,229,158,208,179, 44,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,159, 61, 78, 39,238,101, 37,236,186,237, +194,247,213,211, 40,188, 10, 71, 31, 82, 74,255,182, 5, 64, 23,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206, 10, 94, +103,236,227,184, 78, 37,167,153, 2,104,239, 88, 23, 67,128, 0, 1, 2, 4, 8, 16, 32, 64, 64,165,192,163, 56, 90, 59,118,236, + 16, 57,254, 15, 25, 50,100, 20,199,113,133,195,222, 69, 34,209,202,239,191,255,126, 67,105, 23, 25, 48, 96, 0, 87, 26,167, 59, +148,117, 29,119,156, 13,159,243, 29, 23,224,171,122, 47, 55, 47,127,249,221,100,238,148,201,100,170,239,216,167, 80, 40,110,110, +216,176,225,143,202, 78,231,168, 81,163,234,186, 94,167,122,132,164,131,191,143,226,221,236, 92,253,210,223,255,208,125, 37, 20, +179,191, 23, 3, 7, 14, 44,215,241,247,238,105,112, 25, 97, 80,123, 73,161, 55,216,192, 93,122, 54,124,122,195,194,194,234,169, +213,234,225, 0, 26,228,231,231, 7,171, 84,170,116, 0, 55,180, 90,237,150,148,148,148,219,158,242,116,168, 65, 18, 0, 84,179, +175, 62, 56,126,143, 70,122,178,175, 44,116,171, 77, 76, 20,144, 19, 2,235,161, 59,180,112, 2,205,238,117,136,137,167,197,183, +119,171, 67, 44,148, 66, 74, 0,243,161,120,170,120, 86,202, 43, 33, 68, 13, 32, 10, 64, 67, 0, 87, 1, 28,166,148,230, 11, 53, + 89,128,128,103, 7,174,129, 74,157,215,197, 37,136,137,118, 82, 49,249,146,130,106, 0, 26, 96, 54,155, 37, 50,153, 12, 22,139, + 5, 42,149,114,213,219,163, 71,125, 6, 6,185, 54, 22,239,110,216,176,161,194, 51, 93,151,231, 58, 3, 6, 12, 56,230,122,190, +159, 90, 57,247,248,143,211,252,218,245, 92, 48,223,114, 47,115,170, 78,167, 99,228,114, 57,204,102, 51,124,125,125, 91,143, 27, + 59,182, 25, 35,161, 22,169,212,235,236,178,101,203, 82, 43,154,206, 15, 62,248, 32,212,106, 53,253,135,231,121,153,197, 98,145, +187, 94,199, 87,229,181,224,248,143,211, 84,237,123,205,255, 12,128, 32,180,158, 32, 20,136,172, 80,188, 63,244,101, 44,156,212, + 5,154, 14, 11,158,133, 10, 45,170, 89,179,230,132,200,200,200,193,235,214,173,147,214,172, 89, 19, 10,133, 2, 70,163, 49,236, +207, 63,255, 12, 27, 55,110, 92,251, 90,181,106,109,187,123,247,238, 42, 74, 41,231, 1,101,181,227, 27, 63, 1, 0,180, 30, 62, +167, 26, 33,228,191, 0,242, 1,160,125,245,191,246,117, 24, 57,167, 26, 33,100, 10,138,142, 22, 78,161,148,186, 13,146, 73, 1, +217,190,205,139,209,103,196,127,197,132,144,113,142,237, 61,234, 2, 63,125,187, 2,221,135,188, 87,100,123,183, 90, 16,255,184, +121, 49,122,141,248,111,137,179,154,119,175,203,216,120,158,150,104,137,103, 24,194, 30,186, 67,221, 77, 48,156, 70, 41, 61,228, +230, 94,118, 67,193,132,206,110,143,239,245,188, 56,205,106,227,220, 6,156,149, 74, 68,233,251,110,177,197,206, 29,217,148,216, +108, 92, 65,219, 42, 21,131,243,245,245, 61,254,241,199, 31,139,123,245,234,133,245,235,215,183,249,234,171,175,198, 18, 66,126, + 6,176,151, 82, 26, 47,212, 82, 1, 2,158, 93,193, 85,162,208, 18,139,176,118,239,206, 13,181,211,210, 51,241,198,152, 15,177, +117,235, 86,228,228,228,192,207,207, 15, 50,169, 84,178,124,209, 39,161,106,181, 87,232, 27, 99,167,174, 5, 80,175,162, 9, 42, +231,117,234, 20,203,144, 61,160,169, 88,196, 72,100, 50, 25,179,109,219, 54,228,230,230, 66,163,209, 64, 38,147, 48,203,230,127, +164, 84,171,189,149,111,141,159,222, 6,192,246,138,166,211, 98,209,183,217,189,117,131, 58, 35, 35, 3, 35,223,153, 10,215,235, + 72,165, 82,206,241, 98, 17,138,217, 63,135,204,204, 76, 0, 64, 96, 96,160,139,200,106,137,101,147,187,226,131,165,135,145,111, +178, 60,245,249,172, 89,179,230,132,129, 3, 7, 14,158, 59,119,174,148, 97, 10, 6, 14, 27, 12, 6, 24,141, 70, 84,169, 82, 5, +199,143, 31,151,206,156, 57,115,240, 15, 63,252, 0, 0, 95,148,151,255,250,245,235,213,171, 85,171,102, 2,128,222,141,124, 92, +247, 69, 58,246, 1,128,143,143, 79,153,124, 1, 26, 47,243,245,235,231, 27, 56,206,155,208,185, 10, 87,194,118, 19, 0, 85,105, + 92, 60, 79,197,135,191, 28, 87,226,254, 49,115,191, 99,175,110, 63, 85,175,102,205,154, 70,231,237, 37, 4, 92, 6,128, 16,189, + 94, 95,205,117,163,227,120,171,141, 11, 46,233,122, 93,223, 93,227, 86,128,217, 56,136,191,251,238, 59, 0,192,146,255, 14, 19, +125,253, 75,166, 88, 44, 46,104,106, 23, 45, 90,132,217,179,103,203, 14, 29, 58,212, 99,243,230,205, 61, 8, 33,203, 75, 18,170, + 2, 4, 8,120,250, 68,150,243,111,169, 66,139, 33,196, 71,237,227,141, 1, 67,223,198,193,131, 63,161, 93,187,118,133,251,106, +212,168,129,129,175,245,197,247, 27,151, 1,128,207,163, 36,234, 81,175,147,147,103,248,191,238,131,191,156,243, 32, 85,127,110, +223,190,125,104,219,182,109,145,243,135, 14, 26,128,111,191, 89, 4, 74,169,244,145,110, 30,101,164, 62,106, 47, 12,121,227, 29, +184,187,206,216,145,253,246,117, 27,184,162, 75, 90,150, 97,153, 80,212, 30, 47,110,221,186, 5,179,217, 12,181, 90, 13,137, 68, + 2,185,166, 26,146,197, 45,144, 65,106, 34, 61, 56, 31,147,187,132, 96,201,251, 29,241,193,210,195, 88,190,245, 60,154, 34,245, +169,206,111, 88, 88, 88,189,200,200,200, 34, 34, 75,167,211, 65,175,215, 67,171,213, 66,167,211,129, 97, 24, 76,157, 58, 85,122, +226,196,137,193, 97, 97, 97,177, 30,116, 35, 62,104, 61,124, 78,129,216, 16, 73,244,179,102,205, 50, 7, 7, 7,155, 85, 42, 21, + 21, 75,229,186, 14, 35,231,248, 0, 0, 35,150,234,150, 47, 95,110,169, 82,165,138, 73, 44, 22,203,222,123,239, 61,143,194,195, +152,205,102,234,204,105,177,152, 11,183, 47, 88,176,192, 18, 18, 18, 98, 86,169, 84,212,106,245, 92, 4, 95,187,151, 13,185, 84, + 4,185, 84, 4,133, 76, 2,159,234,205, 33,207,249, 29, 44,203, 98,225,194,133,214,208,208, 80,139, 74,165,162, 50,153, 76, 58, +105,210,164, 50,211, 57,106,212, 40,170,209,104,172, 42,149, 74, 58,123,246,236, 98,209,157,143, 94,125, 8,165, 76, 2,149, 92, +140, 58, 53, 34, 32,167, 70,143,211, 42, 18, 21,245, 70,144,203,229,104,211,166, 13, 26, 52,104,128, 61,123,246,116, 0, 32, 8, + 45, 1, 2,158,114,184, 90,177,138, 9,173,253,251,247,183,135,125,214,233,158, 61,123, 22,204, 54, 13,138, 41, 19, 94,195, 91, + 35,135,128,227,248,194,233, 38, 8, 67, 48,254,205, 30,224,121,206,147, 11,151, 57,196,179,188,215,113,230,164,132, 17, 1, 64, +237,200, 48, 58,246,173,215,193,241,124, 65, 24, 84, 0, 16, 1,111,143,236, 94,176,173, 18,210, 41, 2,135, 15,199,189, 10,119, +215,169, 87, 59,156, 97,173, 38, 16,167,201, 30,255,142,201, 54, 5,206,162, 56,123,246, 44, 84, 42, 21,134, 13, 27,134, 73,147, + 38,129, 19,107,176,227, 92, 22,166,173, 62,135,124,179, 21, 67, 59, 86,199,228,215, 27, 97,242,242,163,133, 34,171, 70,141,220, +167, 58,239,106,181,122,248,186,117,235,138,137,172,180,180, 52, 70,175,215,195,106,181,242, 58,157, 14, 28,199, 97,250,244,233, +146,153, 51,103, 14, 39,132,204,182,243,152,221,113, 30,191, 71, 35, 9, 33, 83,174, 95,191, 30,249,241,199, 31, 91, 59,117,234, +244,160, 70,141, 26, 6,145, 72,132,176,176,176, 21, 81, 81, 81,254,115,231,206,181,246,232,209,227,190, 72, 36, 66,157, 58,117, + 12,191,255,254,123, 36, 0,165,167,121,119,230,220,112,116,165,227,171, 15, 81, 81, 81, 9,117,234,212, 49,136, 68, 34,252,241, +227, 2,234,233,253,148,136, 25,212,173,226,235,248,140, 4,148,222, 64, 78,193,106, 84, 84, 84, 82,189,122,245,244, 12,195,224, +218,181,107, 17, 0, 20,101,113, 42,149, 74,219,208,161, 67, 31,220,190,125,187,216,241, 0, 32, 22, 49,104, 89,207,110,192,170, +210, 20, 72, 58, 93, 98, 58, 37, 34,176, 51, 39, 12, 19,107, 20,128,220, 39,208,172,213,106,161, 86,171, 11, 44,100, 86, 43,126, +251,237, 55,180,106,213,170,253,246,237,219, 79, 8,245, 93,224, 20, 56,255,130, 59, 45,242,180, 89,179, 28,130,203,157,143,214, +113,215, 76,113, 28,139, 26,213, 66,176,224,147, 81,224, 56, 30, 28,199,129,181,255,114, 28, 7,155,213, 90, 41,137,123,148,235, +248,169,149,115,127,218,246,174, 95,167,126,139, 58, 71,127, 60,242, 8,199, 1, 60,111,131,205, 6,112,188, 13, 60,199,193,102, +171,156,174, 34, 27,207, 35, 50, 34, 20,209, 31,143,132,235,117,182,124,191,189,247,209,189, 83, 85,237,122,205,255, 16,192, 66, + 65,219, 63, 30, 75,150, 74,165,194,150, 45, 91,208,188,121,115, 0,192,169, 56, 22,211, 86,159,195,161,232,214,104,221, 32, 0, +233,185,102,188,183,234, 10, 14,158, 75, 47, 38,178,158, 98, 52,168, 89,179,102, 17,145,181,120,241,226,192,213,171, 87, 87, 1, +128,215, 94,123,237, 97,231,206,157, 51,227,226,226, 16, 22, 22, 70, 50, 51, 51,123, 2,120,207, 94,241,167, 80, 74, 87,151,192, +107,168, 86,173,154, 41, 40, 40,200,236, 16, 68, 12,195, 64, 44, 22,163, 90,181,106,166,224,224, 96,115,157, 58,117, 12, 82,169, + 20, 12,195,192, 33,244, 60,108,128, 32, 18,137,224,224,116,181,246, 56, 56,203, 3,137,216,233,120, 90,220,130,196, 48,140,219, +235,149, 4,133, 66, 65, 1,148,120,188,136,113,106, 30,197,165,123, 8,108,188, 76, 37,132,144,227,148, 82, 92,190,124, 25,119, +239,222,133, 84, 42, 69,104,104, 40,102,207,158, 13,179,185, 64,239, 14, 28, 56,176, 61,128,107, 66,109, 22, 32,160, 16,199,159, + 54,129,229,106,213,114,231,163,197,184, 81,147,133, 2,168, 64,236,184, 17, 63, 54, 22, 54,155, 21, 40, 99, 82, 85, 79,133, 86, + 73,215,225, 56,190,212,235, 56,124,180,120,158,138,221,138, 44,158, 7,107,179, 85,202, 13,228, 57, 27,120,222, 6,119,215, 33, +132,225,236, 13,190, 84,168, 39,143, 7,102,179, 25, 67,134, 12, 41, 20, 89, 0,144,169,179, 33,223,108, 67,235, 6, 1,104,214, +113, 32,130, 53,114,196,156,124,136, 96,141,234, 89, 17, 89,200,207,207, 15, 86, 40, 20, 48, 24, 12,133,150,172,213,171, 87, 87, +177, 88, 44,140,197, 98, 97, 98, 98,182, 71,108, 61, 18, 87,117,203,161,184,170,235,118, 93,170,154,147,147,215,128, 82,170,164, +148, 42, 1, 44, 34,132,200, 75,227,151, 74,165,133, 2,197, 89, 0,201,229,242, 10, 9,152,194,134,198, 46,206,164, 82,169,219, +237,174,221,107,101, 65,234, 44,180, 64, 11,172, 90, 46, 98, 75, 36, 18,193,225, 27, 85, 22,100, 50, 89, 97,222,221, 65, 44,114, +186,158,168,252,174,152, 86,171, 21,122,189, 30,185,185, 69, 44,170,112,136, 96, 1, 2, 4,184,215, 34, 79,171,216, 42,210,126, +184,170, 73,216,103,159,102,109, 86,183,226,103,251,143,103,240, 32,213,128,208,192, 11,160, 37,204, 84, 93, 18, 6, 15, 30,188, + 49, 44, 44,172,112, 62, 45,185,210, 59, 96,236,187,159,130,101,173,240, 81, 50, 24, 51,188,123, 17,145, 85, 96,209,178,160, 36, + 57,151,147,103,248,191,238, 3,191,152,227,171, 14, 56,231, 42,126,162, 55, 93, 26,144,163, 53, 71, 48,204,175,200, 33, 97,220, +192,183, 63, 29,229,212,184, 95,221,182,102,214,100,143,111, 28, 97, 36, 3,198,173, 24, 75,197,222,245, 85,140,238,228,180,145, + 47,239,118, 22,115,254,254,254,251,186, 14, 88,222, 37, 45, 91,240,209,122, 92,144,201,100,152, 52,105, 82,145,109,129, 62, 18, +168,228, 18,156,185,145,137, 75,199,182,227,212,245, 76, 40,164, 34, 4,209,187,207, 76,190, 85, 42, 85,122,126,126,126,152,209, +104,132, 86,171,133, 86,171, 45, 42, 8, 36, 18, 50,246,157,137,129, 18,169, 12, 54,171, 5, 7,183,124, 94, 38,103,135, 26, 36, +161,125,117, 84,235,221,200, 7, 34,137, 76,119,163,102,205, 21, 98,177, 24, 12,195,224,199, 85,211,222,219,181,244, 93, 31, 0, +184,186,111,149,118,200,212,149, 95, 48, 12, 3,179,217, 44, 47, 79,186, 19, 19, 19, 35,204,102,179,201, 46,208, 28,166,117,220, +187,119,175,170,217,108, 54, 58,111,247, 4, 74,149, 15,160,169, 1,168,130,139, 89,207,238,223,191, 31,110,179,217,242,197, 98, + 49, 44, 22,139, 71,170,136, 97, 24,233,181,107,215, 34,120,158,119,123,124,131, 90,225, 64,104, 35, 64,230, 91,158, 6,215,163, + 99,220,125, 1, 11, 16,240,111,183,108,161,156,250,226, 73, 16, 88,238,254, 59, 11,173, 14,251,247,239,167,206, 95,136,172,205, +102, 23, 89,127,137, 30,142,227,145,156, 97, 66, 92,220, 31, 88,190,124, 57,206,156,255,175,239,220,185,115,229, 51,103,206, 52, + 15, 30, 60,120, 41,207,243, 47, 50, 12,115,117,192,128, 1,110,191,210,120,158,175,122,233,210,165,154,142,117,155,205, 6, 31, + 31, 31,248,248,248,160, 94,157,136, 98, 34,139,227, 56, 88, 75,233, 58,116,248,104, 17,202, 83,155,141, 3,199,243,133,226, 39, + 71,107,142,216, 27,123,185,182,211,225,207, 57,254,180,105, 94,191,100, 49, 56,110,118, 97, 62,182,173,153, 53,121,238,250,245, +242, 28, 46,104,210,144, 1,111, 53, 28, 56,100, 56,134,190,250, 74,123,179,197,178, 71,196, 80,222, 86,120, 61, 48,160, 40,226, +163, 37,224,239, 67,102,102, 38,140, 70, 35, 52, 26, 77,145, 23, 86,152,151, 1, 83, 7,213, 69,212,180,211, 48, 89, 57,200, 37, + 12,222,235, 27,137, 95,126,136, 65,166, 57,179,112, 52,226, 83,142, 27,241,241,241, 97, 85,171, 86,133, 86,171, 5,203,178,252, +107,175,189,246, 80, 44,150, 68,136, 37, 18,210,107,200, 68, 62, 53, 53,217,198, 48, 34, 80,202,225,149,129,227,136, 92,161,148, + 90, 45, 22, 22,192,148, 18,230,148,116, 14,225,224, 19, 21, 21,229,239, 24, 9,184,107,233,187, 62, 78,251,212,205,154, 53,243, +119, 30,117,232,161, 40, 38,131, 7, 15, 86, 86,171, 86,141, 0,192,175, 91, 62,118, 88,207, 72,239,222,189, 21,213,170, 21,248, +225,255,188,202,243, 57,181, 3, 85, 20,200,187, 7,228,221, 47,102,201,234,221,187,183,188,102,205,154,229,170,139,118, 7,248, + 18, 99,119,121,137, 89, 32,245,178, 71, 92, 35,155, 18,219,199,237, 32, 94,250, 10, 3,153,119,128,185,229,180, 67,191, 8, 98, + 75,128, 0,143,224,162, 69,158, 30,216,231, 54, 60, 14,160,131,253, 23, 69,124,180,122,246,236,121,162,136,122,164,128,141,181, + 22, 19, 89, 28,199, 65, 66,204, 88,190,124, 57,222,127,255,125, 0,144, 78,158, 60,121,247,220,185,115,251,243, 60,255, 34,165, +180, 45, 33,164,180,175,198,227, 97, 97, 97,105,148, 82, 9,195, 48,109, 87,173, 90,229,223,163, 71, 15,248,248,248,128,242,180, +152,200,226, 56, 30, 86,171, 5, 37,153,180,252,212,202,185, 63,109,159,228,215,169,239,162,206, 28,207, 31,113,136, 44,158,227, + 0,190,224,164,172,244,135, 56,124,112, 15,214,174, 89,155, 3, 66,111,129,130,103, 24,230,106, 73,105,228,121,254,197,211,191, +222,108,219,166,121,125,204, 93,191, 94,126,253, 82,202,238,137, 31,204,104, 56,112,200,112,108,255,126, 11, 24, 54,247,178,179, +200,226,108, 60,242,114, 50,123, 31, 19,124,180,254, 49,216,108, 54,228,228,228,192,166,207,193, 75, 97, 6,124, 58, 48, 24,105, + 57, 38, 72,248,124, 60,175, 78,199,177,236,251, 80,169, 84,207, 68, 94,181, 90,237,150,113,227,198,181, 63,121,242,164,148, 97, + 24,104,181, 90,116,236,216, 49, 51,131,175,162, 24,251,206,196,192,228,228,135,172, 90, 41, 54, 75,165, 18,164,167,167,243,237, +123, 12, 51, 14, 25,245,126,248,251, 31, 71,175, 75, 62,179,122,181, 39,215,112, 30, 9,232,186,239,235,175,191,182, 84,169, 82, +197, 36,151,203,101, 35, 71,142,244,168,255,208, 98,177,208, 5, 11, 22,152, 93, 71, 23, 90, 44, 22,186,124,249,114, 75, 68, 68, +132, 89,169, 84, 82,155,173,108,191, 79,134, 33,236,152,185,223,177, 44,203, 22,177, 98, 57, 68,150,141, 39,250, 47,191,252,210, + 26, 17, 17, 97, 81,169, 84, 84, 46,151, 75, 61, 73,231,196,137, 19,169,159,159,159,213,203,203, 75, 58,117,234,212, 71, 26,117, +104,227, 32,158,187,170, 48,188,131,220,199,199, 7, 58,157,174, 48,173, 97, 97, 97,130,216, 18, 32,192, 13,138,105,145,167,204, + 10, 87,146,143,150, 91, 7, 6, 30,208,167,165,103, 6, 7,134, 84, 7,203,178,246,197, 6,214,102,195,164,183,135, 96,233,154, + 47, 1,192, 33,182,162, 38, 79,158,188, 27, 46,254, 94,238,176,109,219,182, 57,147, 39, 79, 86,167,165,165, 29,218,184,113,163, +255,176, 97,195, 48,101,202, 20, 44, 90,180, 8, 18,153, 2,254, 65, 85, 11,175,227,184,110,102, 70, 54, 40,168,222,173,130,180, +251,104, 81, 10,113, 64, 80, 36,108,156, 13,188,205, 6,155,205, 6, 34, 42,200,218,225,131,123, 48,236,205,137,144,200,213,126, + 43,151, 47, 52, 54,124, 41,172,255,204,209,163,205,101,203, 83, 48,215, 47,165,236,158,248,254,212, 40,135,200,218,185,101,205, +173, 37,211,251,110,149,203,196,133,215,177,241, 60, 24, 70, 36,248,104, 61, 70, 4, 6, 6, 34, 35, 35, 3,185,185,185,240,242, +242, 66, 86, 86, 22,178,179,179,145,155,155, 11,179, 54, 7, 1, 92, 46, 8,155, 13,177, 88,140,244,196, 2, 31,192,103,196,154, +133,148,148,148,219,181,106,213,218, 54, 99,198,140, 33,211,167, 79,151,240, 60,143,184,184, 56,128, 16, 42,145,202,192, 48, 12, + 36, 18, 49,242,242,180,188,202, 91,147, 98,165, 34,149, 68,250,255,236, 93,101,120, 84,215, 22, 93,231,142, 79,220,136, 17,197, + 3,193, 93,130, 20, 45,218,226,193, 93, 10, 20,104,113,138, 4, 9, 77,113, 43, 82, 74,105,208,240,112, 41, 86,156, 96,129, 32, + 9, 22, 18, 66,146,137, 18,159, 76, 70,239,121, 63,152,201,155,132,200, 76, 8,165,237,155,245,125,243,205,204,185,231,174,123, +174,157,187,238, 62,123,239, 35, 0,195,225,151, 22, 38,252,182,253,200,247,233, 29, 24, 46, 63, 71, 23, 9,200,231,243,113, 59, +100,117,118,251,145,203,172, 0,128, 47, 20,103,116,233,210, 37,182,118,237,218,210,251,247,239,123,162, 72,212, 97, 49,247,167, +250,171,145,179, 57,102, 98,145,180,115,231,206,111,117,156,111, 46,108,206, 30, 54,121, 1, 33, 28,129,180,103,207,158,177,190, +190,190, 82, 14,135,131,200,227, 65,217, 95,141,156, 45, 34,255,139,233,253, 0,231, 94,209,113,143, 66,174,215, 90,177, 98,133, +170,123,247,238,113, 58,127,177, 55,111,222,184,246,232,209, 67,184,110,221, 58, 85,143, 30, 61,226,235,214,173,155,203, 48, 12, +194,194,194,220, 74,179, 84,233, 32, 22,139, 85, 99,198,140,121,251,228,201,147,114, 69, 29,150, 5,119,119,119,176, 44,139, 14, + 29, 58, 32, 63, 63,223,100,217, 50,193,132,127, 33,138,230,209, 42, 53, 51,188, 74,173,154, 50,225,219,165,155, 1, 98,161,215, + 11,252,207,176, 68, 65,190,255,254, 59,115, 0, 98,157,216,154, 49, 99, 70, 70, 89,141,208, 19, 89, 77,134, 12, 25,130,121,243, +230, 97,205,154, 53,154,159,126,250,137,243,252,101,140,114,228,228,197,153, 69,182, 3, 10,154,203,170,216, 41,197,241,101,100, + 73, 23,251,245, 88,181, 52, 33, 57,239,198,200, 73, 11, 11,122, 47, 13,128,108,226,162, 1,128,109, 63,255, 44,229, 9,173,204, + 7, 12, 30, 6, 0,157, 55,175, 15, 58,186, 28,191,148, 45,182, 40,241,153, 50, 99,182,173, 78,100,109, 89,183,226,137, 53, 73, +222, 52,245,187, 8,149,254,118, 0,192,206, 18, 71,253,122,172,234,154,146, 46,221, 96,186,212,254, 26, 40, 20, 10,108,220,184, + 17, 11, 23, 46, 68,122,122, 58,210,210,210,144,145,145, 81,240,201,205,205,133,179,179, 51,254,248,227,143, 15,252,152,254,233, +136,142,142,222,114,226,196, 9, 92,189,122,117,208,220,185,115,121,206,206,206,196,218, 58,153,168,148, 10, 0,148,166,166,166, +178,102, 22, 54,137, 14, 78,110,111, 37, 73, 41, 62, 42,165, 2,172, 70, 89,162,183,185, 54,189,195,247, 79,159, 62,245, 90,189, +122,181, 66, 63, 18,112,240,236,205, 27, 27, 55,110,108,183,105,211, 38, 69,207,158, 61, 99,117,206,235,134, 56,195,159,127,141, +111,159, 62,125, 92,167, 40,103,251,241,171,119,233, 56,245,163, 17,123,125,183,125, 87,245,234,213,237,124,125,125, 99, 75,227, +173, 82,165,138,204,197,197, 69, 81,171, 86,173, 92, 30,143,247,222,146,165, 82,229, 85,169, 82,133,117,114,114, 82,212,174, 93, + 59,215, 88,167,125,177, 88, 76,117, 86,177,226, 96, 76,212, 33,143, 3,245,144, 33, 67, 10, 50,195,127, 95,189,122,226,176, 97, +195, 92,102,206,156,137, 93,187,118,225,230,205,155,233, 69,215,105,215,174, 29,174, 93,187,182, 20,192, 98,211,221,109,130, 9, +255, 60,148,153, 71,171, 40,118,239, 14,190, 4, 61,159,166,226,176,124,249,114,161,214,146,213,121,250,244,233,144,201,100,182, +197,168,187, 78,186, 92, 27,197,137,172,160,160,160,253,148, 82, 55, 0,109, 52, 26,246,206,206, 95,118,119, 48, 64, 49, 22,112, + 82,194,112, 24,134,228, 10,120,244,225,207, 59,118,237,213,175,167,117,126,175, 9,130, 71,155,215, 7,201, 0,116, 46, 42,182, +250,247,239,159, 87,148, 83,135,137,147, 38, 22,136,172,205,235,131, 46,248, 54,241,248,122,225,216,101,197,138,179,101,139, 39, +152, 51, 12,105,165,239,163, 85, 28,103, 5,168,101, 19,167, 22, 66,161, 16, 7, 14, 28,128,159,159, 31,234,215,175,143,244,244, +116,228,230,230, 34, 55, 55,183,192,234, 21, 25, 25,137,216,216, 88, 8,133,194,127,213,190,107,167,213,217,232,226,226,114,113, +209,162, 69,195,210,210,210,122,100,100,100,218,159,218,189, 12,221, 6, 76, 34,237,186,251, 75, 21,148, 43,138, 79, 76,174,117, +229,204, 62,187,179, 7,183, 64,169, 80, 76, 32,228,231,103,186,244, 14,197,180, 51, 79,151,198,161, 86,173, 90, 82,125,161,226, +225,225,145,239,234,234, 42,247,245,245, 45, 40, 47, 46,154,175,184,125, 55,150, 83,235,255, 37, 45,235,120,234, 68, 91,209,180, + 17,102,102,102,208,137, 47, 99,218,169, 31,109, 89,108, 71, 89, 70,212,161, 62,231,111, 15, 40, 79,127,217,111,132,112,130,131, +131, 59, 5, 7, 7, 55, 1,240, 16,192,121, 0, 42,237,122, 5, 78,243,148,210, 37, 0,150,152,238,119, 19,231,255, 43,231, 63, +220,154,213, 14, 90,223, 44, 45,218, 83, 74,175,150, 40,180,202,130,206,241, 29, 0, 51, 99,198,140, 12,153, 76,102, 59,108,216, +176, 82,215, 73, 74, 74,218,181,103,207,158, 66, 34,171,111,223,190,163, 14, 31, 62,124, 49, 37, 37,165, 92, 59,102,107, 37, 94, +126,245,228, 28,219,118, 61, 87, 77, 7,240, 83,241, 50, 19,172,111, 19,151,175, 55,175, 15, 58, 90, 68,108,253, 14,160,111,113, +199, 11, 0,186,124,217, 7,251,118,111,214,249,118,137,159,220, 79, 56, 59,232, 65, 64,177,209,138, 54, 22,194, 0,109, 59,102, +194,228,163,245,151,192,199,199, 7,183,110,221,194,164, 73,147,208,177, 99, 71,244,233,211, 7,238,238,238, 16, 10,133,120,253, +250, 53,174, 95,191,142,232,232,104,228,229,229,161,126,253,250,255,202, 99,144,152,152,248, 92,155,140,244, 91,221,219,148, 80, + 36,230,251,143,158,238, 86, 16,117,120,112, 11,228,249, 50, 0,224, 18, 66,126, 34,132,252, 90,130, 67,252,123, 65,193,229,242, +195,195,195, 61,117, 86, 43,165, 82, 41,212,149,223,191,127,223, 83,151, 91, 43, 63, 63,223,224,168,195, 79,197,249,248,241, 99, + 55, 93,116,164, 46,186,144,203,229,242,195,194,194,220,116,156,114,185,220,160,168, 67,129, 64,192, 15, 15, 15,119,211,104, 52, + 21, 22,117, 88, 68, 24,159,211,126,116,157,178, 78,100,233,124, 58, 76,195,134, 38,152,240,207,198,149,162,147, 74,235,244, 68, +185,132,150,206,241,221, 8,165,199,245,242,242,234, 50,120,240,224, 66, 34,171,127,255,254,154, 35, 71,142, 92,113,113,113, 73, +102, 24,230,185,177,237, 40,240,209, 2,120, 69,151, 49, 12,243,168, 77,211,218, 96, 24,230,209,194,177, 99,229,203,241, 75, 33, +177,117,252,232,161,174, 37,245,139, 0, 96,239, 88, 25, 67, 70, 77,193,144, 81, 83,108, 1,180, 6, 74,142, 86, 44,173, 29, 38, +124, 58,180,106,213, 10,207,158, 61,195,133, 11, 23,112,237,218, 53,228,229,229,129, 16, 2,177, 88, 12,133, 66, 1,161, 80,248, +175, 21, 89, 37, 65,169, 84,170,231, 46, 93,189,135,195,229,171, 89, 86, 73,148, 74,229,104, 99,238,243,185,115,231, 50, 40,198, +247,106,234,212,169,197,150,127, 46,206,249,243,231, 23, 27, 37, 56,117,234,212, 82,163, 7, 75,194,119,223,125, 87, 97, 81,135, + 6,138, 47,147,160, 50,193,132,127,159, 85,171,216,208,189,114, 9, 45,134, 97, 30, 21, 19, 93, 72, 0,208,226, 34,250, 40,165, +106, 14,135,179,212,198,198,102,130, 84, 42,253,163,111,223,190, 51,250,247,239,175, 1,222, 59,200,151,119,167, 50,178,164,139, +219,247,250,113,102,102,174,124, 83,209,101, 69, 45, 79, 58,177,181,101, 67,208,214,163,135, 15,244, 79,146,196,111, 45,105,223, + 74, 18, 84, 37, 69, 43,102,101,203,150,182,239,245,227,244,140,108,153,201, 71,235, 51, 88,182,116, 40, 58,169,244,255, 3, 40, +165,114, 66,200, 44, 66,136,206,162, 59, 43,250,242,134,173,255,187,241, 55, 62,214, 95, 86,138, 53, 43,209,144, 9,162,139, 91, +175,180,101,159,128, 51,185,148, 9,162, 75, 67,178,145,124,201, 0,192,231,113, 82, 74,154, 60,154,207,227,164, 84,208, 57,212, + 37, 56, 92,106,186,163, 77, 48,225, 31,219, 23, 27,231,163,165, 19, 65, 37,161,164, 60, 89,165, 65,163,209,252, 8,224,199,138, +220,177, 39, 47,115,118, 0,216, 97,104,125,173, 79,214, 8,237,167,248,118,190,123,106,244,190,245,239,223,127, 27,128,109,166, + 75,237,175, 65, 72, 72,136,233, 32, 20,190,193,183, 18, 66,126,213, 9, 47, 67,151, 21,169,119,226, 19,180,235, 83,112,158,251, + 43,249, 78, 61, 83, 59,125,238, 78,218, 4, 19, 76,248,251,163, 56,107, 86,169, 81,135, 38,152, 96,194, 63, 78,108,201,203,179, +204, 4, 19, 76, 48,193,132,138,123, 89, 42,206,215,146, 0,232, 84,194, 74, 6, 71, 19, 16, 66, 58,149,163, 81, 23, 77,156, 38, + 78, 19,167,137,211,196,105,226, 52,113,254,127,113,150,197,173,191, 62, 33,100, 60,165,116, 7,254, 1, 40, 49,160,133, 82,250, +201, 62, 0, 58,153, 56, 77,156, 38, 78, 19,167,137,211,196,105,226, 52,113,150,115, 59,227,255,138,237, 84, 64, 59,105,209,143, +110,153,105,232,208,132, 79, 14, 55, 55, 55,176, 44, 11,134, 97, 16, 31, 31,111, 58, 32, 38,152, 96,130, 9, 38,252,171, 96,180, + 51,188, 9,197,152, 4, 61,191, 90, 8, 22,243,223,255, 65, 16,125,123,108,201,191,109, 31, 7, 12, 24,192, 49,166,126, 76,140, + 13,243, 0, 46,107,172,204,249,189,114,165,170, 53,154,176, 69,155,138,171,199,178, 44, 78,158, 60,137, 94,189,122,233,204,171, + 0, 0, 23, 23, 23,156, 60,121,178,160, 94,227,198,141, 11,146, 55,154, 96,130, 9,159,184, 79,179,173,227, 14, 66, 70, 3,244, +127, 97,151, 44,141,160,153,145,187, 11,213,179,169, 61, 10, 12,169,163, 87, 36, 3,197, 78,154, 17, 17, 87,194,240,137,238,129, + 99, 19, 21, 21,229, 89,173, 90,181, 88, 0,153, 69,170,125,176,140,150,114,243, 19, 66,136, 67,149, 70,195,205, 68,102,147, 21, + 10,133,183,133,165,101, 74,250,187,212,109,233,111, 31,111,209,171,102,117,231,206, 29,151,230,205,155, 75, 0,228,148,197,105, +130, 9, 21,122, 63,125,152,176,180,226,156,225, 73,141,126,222, 80, 51, 35, 64, 49, 20, 4,225, 52, 58,164, 95,185,120,170,245, +173, 12,150,219, 12, 64, 35,128, 54, 50, 23,139, 26,202, 20,202, 20,150,210,225, 52,234,224, 67,163,249,170, 12, 56, 13,160,123, + 9, 75,151,210,232, 67,198, 9, 37,150, 46,184,119,237,136,208,198,140,160, 90,227,190,179,161,151,193,249, 35, 78,140, 24,192, + 72, 66, 72, 71, 51, 51,179, 26,121,121,121,111, 40,165,143, 1,108,165,148, 74,202,201,201, 0, 24, 99, 97,110,222,205,211, 82, +208,232,109, 90, 86, 66,142, 74,115, 29,192, 79,148,210,140,138,186,168,222,139, 44,231, 29,211,253,155,143, 12,154,214, 9, 54, +237,127,156, 13, 96, 83,105,235, 48, 12, 51,206,213,213,213,187,114,229,202, 49,155,123, 55,216, 57,229, 68, 56,250,244,233, 3, + 0,227, 88,150,245,174, 92,185,114, 12, 33,100,167,161,125, 35, 33,196, 5, 0,151, 82, 26,167,253,111, 14,192, 23, 64, 21, 0, +209, 0,158, 82, 74,165, 31,121,142,254, 17,156,110,110,110,174, 44,203,142,117,114,114,234,145,156,156,124,154, 97,152, 95,226, +227,227, 37,159,185,239,217,174,243,175, 48,244, 27,192, 4, 99, 54, 32, 22,139,147,243,243,243, 29, 1, 64, 36, 18,165,200,100, +178, 79, 22, 37,248, 87,110,235,175,121, 50, 96,220,249, 27, 79,187,233, 23,117,105, 83,167,152, 27,151,212, 57,127, 35,162,109, +225,122,190,154,226,250, 64,109,246, 85, 44, 93,186,148, 4, 4, 4,140,170, 90,181,106,117,134, 97, 94, 44, 90,180,168, 80,234, +155,162,203, 22, 47, 94,252,191,204,173,197,112,186,213,108,117,124,208,224, 1,237,191, 25, 63,210,162,114, 37, 11, 36,166, 73, +237,127,222, 21,188, 58, 56,120, 95,207,177,131, 58,119, 3,128,101,203,150,125,229,238,238,238,197,225,112, 98,126,248,225,135, +223, 75,227, 52,193,132, 79, 0,227, 38,149, 46,243,254,172, 51,192, 28,249,180, 63, 64, 70,182,107,217,184,205,132,225,189, 8, +229,136,224, 63,110,142,218,104, 46,175, 81, 66,112,100,203,235,249,214,153, 49,160, 87, 39,166,137,175, 23, 92, 42, 89, 3, 12, + 15,219,207,188,177,223, 20,244,195, 86, 0,205,203,209,204,238,175, 67,247, 35, 49, 83, 3, 66, 0, 66, 0,134, 0,185,249, 44, +186,124, 53, 98,177,241, 66,137, 48, 54,102, 4, 51,246,231, 3, 0,231,163,251, 56, 66, 26, 85,170, 84,105,203,180,105,211,108, +235,213,171,231, 34, 18,137,204,100, 50, 89,245,168,168, 40,239,133, 11, 23,118, 38,132,172,162,148, 30, 49,146,211,163,154,155, +235,161, 77, 51,198, 52,171, 95,197, 19, 60, 69, 46, 88,185,212,253,101,212,171,150, 19,183,134,140, 35,132, 12, 46,207,148, 9, +105,105,105, 4, 0, 28, 28, 28,104, 97,145,213, 98,228,186,153, 93, 48, 99,237,121,228,229, 43,246,150,180,190, 68, 34,209, 89, +182,188, 79,158, 60, 89,167, 87,175, 94,104,230,237,134, 59,189, 82,209,244,120, 60, 0, 20,148, 27,177,175, 1, 0,230,107,251, +225,125, 28, 14,231, 66,167, 78,157,188,199,142, 29, 75, 26, 55,110,140,176,176,176, 42,251,247,239,239,196,229,114, 99, 52, 26, +205, 99, 0, 47, 40,165, 42, 3,185,121, 0,106,114, 56,156,122,127,103, 78, 87, 87, 87,177, 66,161, 24,225,230,230, 54,190,119, +239,222,245,122,245,234, 69,106,214,172,137,231,207,159, 55, 62,123,246,236,226, 6, 13, 26, 60,142,143,143,223, 33, 16, 8,246, + 72, 36, 18,217,103,120,195, 27, 15,192, 85,107,224, 88,106,192,183, 4,192, 82, 74,105,162,161,219,200,207,207,119,212, 61, 71, + 9, 33,142,159,114,127,140,217, 22, 33, 36,146, 16, 98,167,253,141,210,190, 25,134,129, 90,173,150,170,213,234,170,101,112,214, + 4,192, 24,209,100, 74, 41, 45, 45, 17,180, 24, 0,186,180,174,147, 14,130, 8,157, 69,171,152,151,204,136, 2, 1, 70, 81,231, +252,205, 8,187, 66, 86,176, 34, 88,186,116, 41, 89,188,120, 49,150, 44, 89,210, 11,128, 31,203,178,215,125,124,124, 54, 22,162, +100,217,130,101,139, 23, 47,222,176,116,233, 82, 2,160, 88, 65,100,231,213, 96,216,215, 95,247,105,191, 98,193, 84,139,132,119, + 74,132,199,200, 96,103,193,199,226, 89,147, 4,114,185,170,229,214,223,131,199,111, 94, 53,103,167, 70,163,249, 2, 64, 19,141, + 70,115, 31,192,239,165,113,154, 96,194, 39, 64,123,163, 38,149, 46,225, 38, 39,168,218,175, 45, 52, 24,233,233,238,212,127,218, +216,129, 98, 95,159,106,200,135, 5,222,164,105,112,230,212, 89, 0, 56,104,156,213,105, 80, 19, 46, 31,123,130,150,204,170,229, +215,204, 23, 79, 18, 84,184,159,160, 65, 94,140, 10, 28, 70, 5, 13, 75, 1,138,252,242,238,117,124,134, 26, 55, 94, 40,192, 16, +128,195, 0, 12, 67,192, 97,202, 73,198, 42, 94, 46,219,253,192, 55, 45,153, 5, 88,197,203,143,124, 0,125, 81,163, 70,141,245, + 1, 1, 1,206,201,201,201,118,247,239,223,135, 80, 40,132,173,173, 45,215,213,213,181,214,250,245,235,179,166, 78,157, 58,139, + 16,242,144, 82,250,198, 64, 78,159,238, 77,234,221,218, 17,180,204, 90,117,231, 44, 50, 15,252, 7, 28,134,130,111,110, 1,111, +177, 24,103,191,174,102,215,255, 84,204, 17, 66,136, 15,165, 52,161, 44,190,103,207,158,113,228,114,249, 96, 43, 43,171, 22, 60, + 30,207, 73,104,227,193, 74,184,205,222,165,146, 42,209, 41,142,121,109,103,118,114,234,182,102,122, 7,204, 88,123, 30,235,247, +223,254,173, 17,146, 22, 25,115, 12, 50,239, 93, 70,120,198,135,167,214,217,156,103,200,190,218, 2,152,163, 80, 40, 24, 62,159, + 79, 68, 34,209,176, 21, 43, 86, 40,253,253,253, 11, 28,192,252,252,252,224,231,231, 71,114,114,114,170, 92,190,124,185, 74,112, +112,176,154, 16, 18, 73, 41, 61, 94,178,197,194,236,109,126,190,204, 93, 36, 22,231,253,188,117,235,154,182,109,219,178,250,243, + 36,150,135, 19, 0,108,108,108,118,214,168, 81,131,204,155, 55, 79, 82, 81,156,222,222,222,231,253,252,252, 58,116,233,210,133, +219,186,117,107,184,186,186, 22, 44,115,112,112,128,159,159, 31,137,139,139,171,127,253,250,245,173,231,207,159,223,232,237,237, +125, 57, 38, 38,166,203, 95,217,235,104, 45, 85, 48, 66, 56,237, 40, 38, 17,242, 63,211, 88, 68,136,197,246,237,219, 29,117,115, + 50,170, 84, 42,104, 52,154,130,111,221,135,101, 89,104, 52, 26,172, 88,177, 66, 99,224, 49,149, 66,155, 28, 90,239,195, 22,247, + 45, 16, 8, 12,203,220, 75, 16,225, 34,204,172,109,110,110,238, 9,160,123,141, 26, 53,230,232, 47,174, 94,233,253,183, 84, 42, +141, 77,148,219, 68, 0,104, 91,218,229, 30, 16, 16, 48, 98,201,146, 37,125,240,191, 57, 43,235, 13, 24, 48,224,114,145,122,245, +180,223, 82, 66,200, 21,134, 97, 78, 2,216, 13,224, 3,171,187,153,153,197,132,105,147,199, 90,196,167, 41,177,252, 72, 26,118, + 95,203,198, 8, 63, 75,204,248,210, 26, 67,252, 7,153,135,252,231,240, 4, 0, 59,245, 86,121,238,227,227, 67,158, 61,123,102, + 18, 89,255, 46, 52, 5, 80, 73,239,191, 2,128,110,202,172, 52,237,125, 97, 95,164, 92,191,158,238, 59, 85, 91, 94, 73,187, 30, +213,227, 77, 5,112,175,156,253,221, 85,109, 27, 62, 0, 23, 0, 78,159, 62, 77,123,244,232, 65,116,223,197,247,236,253,207,140, +241,239,221,173, 71,199, 86, 96, 68,182,120,153, 2,132,190,165,224, 50, 42, 48,160,184,115,243, 50, 5,151,221, 83,100,195, 37, + 90, 79,136,119,255,239,234,213,245,253,241,151,160,111, 57,145, 41, 92,236,190,158, 7,101,126, 46, 82,147,222, 34, 69, 18,139, +196,248,104, 36,188,141,126, 12,144,197,134,114,126,184,227,128,134,213,190, 3,178,208, 30,207, 98, 35, 47,203,230, 84, 74,159, + 85,169,233,235,155, 33,208, 0, 74,233, 51, 3, 14,250,197, 18, 58,224,206,213,170, 85,251,105,193,130, 5,110, 79,159, 62,181, +146, 74,165,210,179,103,207, 94,141,141,141,117,114,118,118,142,155, 52,105, 82,171,202,149, 43, 59,126,245,213, 87,102,135, 14, + 29, 90, 0, 96,172, 1,156,190,189, 91, 52, 12,221,181,113,157,249,187,144, 77, 80, 68, 61,194,153, 68, 41,110, 38,231,209, 42, +214, 66, 50,165,126, 37, 88, 8,185, 88,214,218,213,162,251,209,168, 31, 1, 12, 41,141,243,214,173, 91, 46,102,102,102,107,135, + 12, 25,226, 58,109,218, 52,129,134,107,195, 61, 28,250,206,122,206,214, 80,215, 60,185,146,227,223,193, 11, 51,135,214,195,204, +245,127,234, 68,214,120,111,239, 76,182, 56, 78, 55, 55,183,113, 44,203,122,107,255,122,233,190, 59,222,200, 9,212,219,100, 65, + 57,177,116, 8,116,117,117, 5,195, 48, 49,241,241,241, 59, 13, 61, 71, 34, 81,241,179,167,216,218,218,162, 93,187,118,240,241, +241,225,182,109,219,182, 30,128,227, 37,113, 42,149, 10, 23,150,165,176,180,180, 20,219,219,219,219, 90, 90, 90,190, 83, 42,149, + 31,197, 9, 0,118,118,118,253,218,181,107,199,221,191,127,127, 90, 76, 76,204, 20,250,171, 21, 0, 0, 32, 0, 73, 68, 65, 84, + 29,127,127,255,104, 43, 43,171, 66,214, 95,115,115,115, 84,175, 94, 29, 63,252,240, 3,183, 91,183,110,101,114, 58, 57, 57,117, + 14, 14, 14, 6, 33,164,224,161, 93, 20,158,158,158,112,118,118, 70,247,238,221,185,253,250,245,235, 92,222,251,200,136,142,230, + 98, 49, 22,173,165,133,197,108,201,195,111,197,213, 55,224,188,167,232,172, 75, 34,145, 40,165, 60,237, 44,130, 18,135, 59,133, + 66, 97,129, 21,170,232,182,138,227,100, 24, 6, 11, 23, 46, 4, 33, 4, 60, 30, 15,124, 62,191,216,239,246,237,219, 27,219,206, + 56, 66, 8,195,231,243,231,112,185,220,177,114,185,220, 77, 36, 18, 73, 52, 26,205,111,114,185,124,133,214, 34,106, 83,220,181, + 91, 18,167,185,185,185,231,203,151, 47,107,148,116, 80,228,114, 57,234,213,171, 7,200, 17, 89, 26,103, 84, 84,148,103,213,170, + 85,107, 2,208, 77,209,118,141, 82,218, 86,239,191, 62,174, 81, 74,191,212,254,126,241,250,245,107, 79,157,208,210,231, 84, 41, +149,222,110,142, 86, 8,127, 35,195,238,107,217,184,180,192, 21, 29, 87, 72,208,183, 17, 23, 62, 30, 22, 80, 43, 85, 53, 7, 12, + 24,176, 7, 64, 77,237, 67,242,171, 1, 3, 6,212,226,112, 56,127, 2, 56, 6, 32,235,175,186,230, 77,156, 31,135, 50,180, 72, + 37, 66,200, 41,189,237,247,212,253,159, 59,119,238,252,192,192,192,167,132,144, 83,250,229,250,245,244,191,181,253,205, 41, 74, +105,207,121,243,230,249,174, 90,181,106,165,174,238,167, 80,136,198, 12, 29, 90,165,230,155,227,250, 91, 43,112, 57, 26,112, 25, + 2, 46, 7, 0, 37,136,125, 19,133,156,236,204, 27, 52,250, 63, 49,134, 89,178, 6,180,110,208,176, 94,208,190,245,179,153, 95, +175,231, 33, 83,154,143,103, 15,175,224,222,149, 99, 73, 26,181,230, 24, 8,189, 15, 48, 97,136,102,159, 83, 26,162, 41,255,133, +128,247, 86, 49,144, 34, 98,235,179,189,229,126, 89,171, 86,173,192,133, 11, 23,122, 62,124,248,208, 50, 59, 59, 59,117,239,222, +189,207,229,114,249, 67, 0, 27,222,190,125,219,110,195,134, 13,102,171, 87,175,238, 82,175, 94,189,154, 33, 33, 33,121, 6,112, +214,159, 53,114, 72,232,216,105,211, 69,145,135,182, 64, 16, 25,134,133,143,210, 52,151, 18,243, 22, 0, 88,143,184,220,214,169, +249,234, 11,235,218,185, 51, 94,150,124, 84,179, 17,180, 47,203,146,101,102,102,182, 54, 56, 56,216,179,105,211,166, 12, 0, 92, +127,161, 22,206,217, 26,234,122, 46,176, 53,105, 93,199, 30, 41,153,114,124,187, 37, 28,103, 67, 83,254, 40, 42,178, 62, 48, 4, +106,135, 11,245,203, 78,158, 60,105, 6,224, 3,103, 16,253,242,210,134, 17, 41,165, 25,132,144, 31, 5, 2,193, 66, 66, 8,109, +218,180,105,120,221,186,117,115,109,109,109, 33,147,201, 32,151,203,193,231,243, 33,147,201, 16, 27, 27,139, 59,119,238,192,214, +214,214,168,115,149,155,155, 11, 75, 75, 75,176, 44,251,209,156, 26,141,134,108,219,182,205,252,233,211,167,230,135, 15, 31,118, +154, 49, 99,198,187,218,181,107,223, 31, 52,104,208, 43, 71, 71, 71,249,163, 71,143,112,235,214, 45,100,100,100,160, 69,139, 22, + 6,113, 42, 20, 10,112,185, 92,200,100, 50, 8,133, 66,112,185, 92,168,213,106,176, 44, 91, 32,190,114,115,115,145,158,158, 14, + 62,159, 15,133, 66,241,151, 95,239, 58,139,150, 62, 74, 27,126, 43,174,126, 89,168,104, 63,169,210,134, 59, 51, 51, 51,197, 54, + 54, 54,115, 12,177,208, 17, 66,192,225,112,192,231,243, 65, 8, 65,219,182,109, 49,102,204, 24, 52,106,212, 8, 81, 81, 81, 56, +112,224, 0,238,221,187, 7, 30,143, 87, 80,223,224,241,137,246,237, 57, 34,145,232, 86,239,222,189,125, 23, 44, 88, 32,242,242, +242, 66,100,100,164,199,170, 85,171,230, 92,188,120,177, 15, 33,164, 9,165,148, 45,219, 74,175, 29, 18,124, 63, 92,216, 93, 46, +151, 35, 50, 50,210,152,117, 62, 64,181,106,213, 98, 25,134,121,197,178,236,117, 0,245, 40,165,109, 9, 33,103, 1,152, 23,169, + 42,165,148,126, 73, 8,201, 6,240,152, 97,152, 23, 44,203,198, 22,231, 78,101,105,105,153, 26,159,146,237,100,111, 33,194,240, + 54, 22,232,184, 66,130,254, 77,132, 16,242, 9,158,199, 36,161, 90, 85, 47, 18,126,227,120, 19,173,200,106,154,152,152, 8, 0, + 77, 0,196,196,197,197,185,232,132,150, 9,255, 14, 20, 21, 67, 58, 1, 21, 24, 24,216,179, 56,113, 85,204,189, 89,168,124,213, +170, 85, 43,245,254,103,124, 68,223,209, 14,133,157,225,219,107,173, 92,255, 19, 90,167, 79,159, 46, 93,129,176,232,123,234,200, +254,219, 29,149,196,211,183,113, 27, 61,235, 16, 69,216,157, 91, 0,232,111, 6, 53,198,181,151,152, 49, 51,255,109,219,202,169, +204,246, 43,121,136,147,164,224,214,153,223,144,154,248,102, 55, 64,103,208,232,144,236,143,238, 44,171, 12,240,117,116,176, 71, +190,146,130,165, 0, 62, 16, 91,159, 69,100,245,170, 89,179,102, 64,104,104,168,103,126,126,190,229,205,155, 55, 51,131,131,131, + 95, 41, 20,138, 95, 40,165,123,181,117, 78,164,165,165, 45,163,148,194,210,210,146,203,227,241,196,165, 57,115, 18, 66, 26,205, + 26, 59,226,198,143,219,118,137, 94, 61, 9,199,134,195,103,144,153,151,167,185,146, 34,251,138, 82,122, 74, 91,231,207, 7,105, +178, 4, 10,234,206, 99, 8, 92,204,121,206,132, 16, 17,165, 52,191,132, 55, 87,255, 33, 67,134,184,234, 68, 22, 0,164,229,168, +184,121,114, 21,167,117, 29,123, 52,238, 48, 0, 97,151, 67,112,232, 90, 2,170, 86, 50,187,230,109,158, 89,234, 17,101, 24, 38, + 70, 79, 52,121,157, 60,121,210,172, 87,175, 94,121, 0,244,135, 68, 63, 40,103, 24, 38,166,140,155,109, 17, 33,196,105,207,158, + 61,140, 74,165,202,141,138,138,130,179,179, 51,156,156,156, 96,109,109,141,103,207,158,225,210,165, 75,120,254,252, 57, 88,150, + 69,131, 6, 13,140, 58, 95,239,222,189,195,163, 71,143,208,189,123,143, 25,169,169, 41, 86,182,118,246,210, 27,215,175,173, 46, + 15, 39,203,178, 4, 0,124,125,125,225,235,235, 43, 74, 72, 72,112, 59,117,234,148,227,242,229,203,223,122,122,122,238,147,201, +100,133, 44, 7,134, 10, 45,173,112, 41, 16,129, 34,145, 8,124, 62, 31,217,217,217, 72, 78, 78, 70, 78, 78,206,251,177, 28, 27, +155,207, 34,180,138,179, 80, 85,100,253, 79, 41, 14,139, 19, 83,132,144,161, 0,230, 24,184, 47, 80,171,213,224,243,249,104,222, +188, 57, 54,109,218,132,123,247,238,225,216,177, 99,240,240,240,192,200,145, 35,193, 48, 12,158, 62,125,106,108, 19,217,208,208, +208, 57, 95,125,245,149,239,158, 61,123, 68,177,177,177,120,254,252, 57,108,108,108,176,105,211, 38,225,248,241,227,171, 93,190, +124,121, 17,128,159,202,220, 87,189,232, 66, 87, 87,215,129,245,234,213,251,160,142,179,179,179,245,185,115,231, 28,117, 2,172, +104, 68, 98, 49,200, 92,180,104,209, 58, 31, 31,159,245,218,225, 66, 63, 0,230,148,210,246,135, 15, 31, 38, 0,208,191,127,127, + 74, 8,209, 61,144, 30,135,132,132,116,120,246,236, 25, 93,178,100, 73,177,253, 92,106, 74,226,182,117,155,182,175,251,113,233, + 44,193,204,238,214,232,223,132, 7, 17,159,192,202,140,135, 21, 27,119,170, 30,220,185,246,200,197,197,229, 20,128,175, 18, 19, + 19,225,226,226,146, 11,224, 5,135,195,137,209,104, 52, 18,147, 47,252, 63, 11,197,105, 17,173, 85, 57,177, 56,161, 84, 30,161, +166,111,241,210, 97,222,188,121,190,129,129,129,119, 63, 70,100,233, 59,193, 19, 66, 40, 33,164, 61,165,244,106,193,195,180,196, + 33,195, 2,219, 23,227,226,236,228, 96, 55,119,100,107,176, 44,160,214, 0,106, 13,133, 52, 79,134,200, 39,247,242, 32, 34,135, + 13,106,145, 80, 16,180,124,193,244, 42,225,241, 12, 36, 25, 74, 92, 61,190,157,166, 38,190,233, 71,163, 15,141,174, 40,145,229, +236,232,112,101,255,246,101,184, 23,173,128,134,125,175,179, 88,150, 22,252,254, 12, 15,156,234, 14, 14, 14,171,111,223,190,237, + 37, 20, 10, 45, 95,190,124,169, 9, 9, 9,145, 40, 20,138,173, 58,145,165,197,208,198,141, 27,171,204,205,205,145,155,155, 43, + 87, 42,149,185,165,136, 44,183,246,141,234, 95,251,113,219, 46, 81,190, 66,129, 44,153, 28, 28,123,199, 66, 34, 75,139, 86, 29, +106, 84,174, 76, 68,150,160, 0,222,100, 43, 37, 37,137, 44, 0, 16, 8, 4,157,166, 77,155,166, 63,190, 13, 7, 75,158,218, 76, +200,211,220,140, 72, 99,195, 46,135,224,250,211, 52, 86,196,231,104, 42,209,232, 42,101,237,123,124,124,252, 78,137, 68, 50, 79, + 34,145,204,211, 19, 87,111, 0,204,171,109,205,255,160,188,142,141, 96,158, 68, 34,153,199,178,236, 78, 3, 14,173,100,200,144, + 33,241,117,234,212,201,242,241,241,201,122,247,238, 29, 34, 34, 34,144,145,145,129, 13, 27, 54, 32, 50, 50, 18, 44,251, 94, 7, + 22, 55,140, 98,128, 64, 66, 70, 70,186, 5,165, 20, 25,233,239,204, 23, 44, 88, 96, 93, 30, 78,141, 70, 83,232,222,170, 92,185, + 50, 38, 77,154,196,207,203,203,179,121,251,246,173,149,254, 50, 67, 57, 21, 10, 69, 65, 42, 12, 74, 41, 20, 10, 5,178,178,178, +160, 80, 40,240,234,213,171, 2,145,165,221,254,103,179,104,233,126,139,197,226,100,157,131,168, 72, 36, 2, 33,164,184,225,183, + 10,201,254,172,219, 22, 33,132,138,197,226,228,114,136,195, 50,247,199,192,243, 14, 62,159,143, 49, 99,198,224,238,221,187,136, +138,138, 2,135,195,129, 84, 42, 69, 94, 94, 30, 58,119,238, 12,129, 64, 96,172, 69,139,242,249,252,161,243,231,207, 23,197,196, +196, 32, 45, 45, 77,231, 76, 15,141, 70,131, 25, 51,102,136,133, 66,225, 80, 99, 77,247, 18,137,164,235,203,151, 47,107, 22,253, + 36, 37, 37,101,233,251, 20,150, 23,135, 15, 31, 38,253,251,247,167,253,251,247,167, 58,193,101, 40, 50,227, 35,182, 29, 59,113, +234,194,119, 63, 4,229,230, 73,115, 80,213, 85,140,220,156, 44,172, 8,252, 81, 21, 26,122,253,202,156, 25, 19, 91,134,132,132, +172, 2,240, 66,187,202,139,144,144,144, 17, 63,252,240,195,239,208,166,121, 48,225,159,131,226,180,136,254,189, 87, 17,195,123, +197,113,104,135, 15,197,229,164,212, 69, 28,182,211, 9, 47,173,232,186, 82,200,162, 85,106,231, 83,109, 80, 67, 39, 7,251,203, +123, 54, 47,181, 56,245, 4,136,143,123,131,212,196, 88, 52,105,217, 30,145, 79,194,193,170, 52, 71,232,203,144, 50,195,211,137, +247,128, 26, 62,181,235, 76,110,215,178, 46,130, 78,229,226,101,216, 57,100,166, 38,110,166, 49,135,142, 84,196, 9, 34, 85, 6, +248, 58, 85,114,184,242,251,150, 0,187,179, 17, 12,226,226,222,224,248,239,235,161, 82,126,160, 43,206, 24,221,121,179, 10, 65, +110,102, 50, 20, 57, 26,136,152, 60,145,145, 39,245, 85,165, 74,149,246,172, 91,183,110, 98,203,150, 45,205,252,253,253, 95,102, +100,100, 44,167,148, 30,210,235,224,191,168, 89,179,230,247,155, 55,111,174, 22, 23, 23,135, 75,151, 46,189, 4,112,191, 20,206, +120, 14,135,179,245,210,239, 59,103,137,171,212,194,134,249,223,169, 15,223,139,232, 77, 41, 61,171,199,233,211,169, 94,141, 83, +203,191,255,134, 97, 31,252,129, 71,177,201,136,206,146, 95, 42,137, 51, 45, 45,141,200,100, 50, 47, 27, 27, 27,253,237,192,197, + 92, 42,159, 61,176,134,164,243,156, 27,174,249, 74, 13,132, 60,134,126,219,199, 83,114,231,216, 33,251, 52,121, 26,209, 69, 35, + 26,139,151,185, 26,112,185, 92, 56, 58,254,111, 4, 41, 34,195,168,216, 7,139,187,119,239, 50, 28, 14,167,144, 64,215,183, 16, + 25,107, 41, 50, 6,134,114, 22, 21, 90, 58,168,213,106, 82, 94, 78,185, 92, 94,108,206,177,226,124,181, 88,150,253, 36,251,111, +140,133, 74,127,200, 80,231, 79,151,159,159,239, 40, 22,139,147,117,195,127, 21,101,209,250,152, 72,196,210,134, 47,141,105, 31, +195, 48, 96, 89, 22,124, 62, 31, 13, 26, 52,192,169, 83,167, 96,103,103, 7, 43, 43, 43, 88, 89, 89, 65, 44, 22,195,222,222,190, + 64,104, 49,140,193, 81, 58, 84, 46,151,123,120,120,120,224,213,171, 87, 16,137, 68, 5, 31,161, 80, 8, 95, 95, 95, 72,165,210, +202,159,207,118,255,105, 48,110, 80,167, 62, 91,130,143, 14, 63,117,234,244,100,165, 60,191,110,173, 90, 53,233,253,208,203,143, +230,204,152,216,205, 36, 77,254,191,160,179, 70,233,251, 90,205,157, 59,119,126,121,249,230,206,157, 59,191, 56, 11, 87,121, 5, + 23,222, 15,245,233,190, 81, 32,180,116, 10,178, 56, 37,169, 19, 89,187, 55, 45,177, 58,250, 16,136,143,143,193,133, 67, 27,115, + 84, 74, 69, 6,203,170, 60,163,159,135, 3, 12,126, 51,168, 9, 12,109,214,167,123, 7,114,225,169, 2,217,153,169,120,113,255, +220, 27,200, 4,243, 42, 82,100,237,217,178,212,238,228, 19,130,184,184, 55, 56,123, 96,125,150, 74,173,252,130, 70,135, 60,252, + 24,238, 97, 2, 65,159, 65,181,109,122,142,245,147, 64, 67, 52, 24, 26,249,236, 75, 87, 63,210, 71,114,189,244,200, 48,125,164, +166,166,174,176,176,176, 96,126,250,233,167,209,249,249,249, 75, 40,165,135,245, 46,156,206, 85,171, 86, 13,218,182,109,155,219, +219,183,111, 5, 55,110,220, 72,191,114,229, 10, 5, 16, 88,198, 3,124, 54, 33,132,211,200,171,242,212, 7,111, 18,122, 83, 74, +255,208,227,244,237,217,184,206,205, 93,129,139, 44, 85, 55, 15, 35, 55, 49, 14,243,110,198,103, 3, 48,248,120,171, 84, 42,100, +100,100, 64,149,155,161,110,226, 34,205, 90, 50,192, 81,158,156,145,207,229,177,121,106, 31,171, 20,249,229,244, 55, 28, 51, 51, +179,114, 31, 87,190, 64, 0,149, 74,133,202,149, 43, 23,148,101,231,228,130, 16, 2, 23, 23,151,178,110,182, 0, 0, 51, 90,181, +106, 69,154, 55,111,126,103,253,250,245,231, 75, 19, 43,229,177,104,149, 5, 67, 57, 89,150,101, 74, 56,190,164,188,156,250, 22, +173,178,132,214,231,180,104, 21, 39, 90,244, 69,162,190, 16, 42,143,143,214,167, 20,135,198,136,176, 98,120, 10, 44, 90,225,225, +225,112,119,119,135, 82,169,132,165,165, 37, 44, 45, 45, 97, 97, 97,129,156,156, 28,240,120, 60, 24,185,207,172, 72, 36,122, 27, + 17, 17, 81,179, 82,165, 74,208,104, 52,133,196,214,203,151, 47, 97,110,110,158, 96,172, 69,203,213,213,245,156, 54,234,176, 16, +156,157,157,173, 43,226,184,234, 91,178,250,247,239, 95,174, 23,179, 45,129,179,130, 1, 4, 15, 24, 48, 96,207,227,208,211, 77, + 92, 92, 92, 78,251,248,248, 16, 0, 48, 69, 24,254,187,172, 89, 37,140,176,165, 22,177, 68, 41,244,254,167, 2, 32,218,255,169, +122, 66, 76,255,183,162,152,178,119,129,129,129,151,245,252,187, 82, 63,114, 23,116, 41, 30, 10,249, 66,115,203,178,100, 57,218, +219, 93,254,101,195, 18,171, 67, 97, 64, 66, 92, 12,174, 30,217,148,165,214, 40,191, 0, 75, 19, 67, 47, 30, 57, 12,130, 60, 68, + 31,190, 10, 28, 50,160,139, 64,163, 70,181, 61,113,236,169, 10,169,241, 47, 65, 41,187,155, 38,255,158,247,209,157,163, 86,100, +237,222,180,196,238,104, 56, 65,124, 92, 12, 46, 28,218,152,165,214, 40,191, 40, 79,178, 83, 29,198, 18, 98,203, 49, 23,109, 29, +222,165,233, 64,207,170,110, 96,169, 10, 44,159,162,239,108, 7,238,139, 7,121,199, 60,186,112, 14,177,185,236,228,248, 80,195, + 18,129,230,230,230, 46, 35,132, 28,165,148, 70,234,117,200, 95, 86,171, 86,109,229,207, 63,255,236,149,144,144, 96,249,224,193, +131,236, 29, 59,118,196,176, 44, 27, 64, 41, 45, 51,138,138, 82,250, 29, 33,228, 23,253,124, 57,132,144,250,179, 70, 15, 9, 29, + 50,106,172, 40,230, 98, 48,108, 99, 34,241,253, 77,137,230, 69,134,194,159, 82,154, 84, 18,151,131,131, 3, 77, 77, 77,125,147, +153,153, 89,211,220,220, 28,239,222,189, 67,122,122, 58, 50, 51, 51, 33,207,206, 80,219,107, 50,165, 68,157, 14, 46,151,139,148, + 56, 53, 52, 26, 77, 82, 89,214,172,146,162, 14, 1, 4,202,100, 50,157,200, 42, 40,183,178,178, 10,180,178,178,210,249,104,237, + 44,225, 33,166, 75,239, 64,180,233, 29, 90,252,241,199, 31,207,186,117,235, 22, 95,156, 88, 17, 10,133,200,207, 55, 46, 75, 72, + 73, 81,140,229,225, 44,201,162, 85,180,220, 24, 78,221,240,165,206, 9,190,104,185, 14, 28, 14, 7, 44,203,126, 80,254, 87,139, + 22,253,232,192,242,136,156, 66,214,229, 50, 18,135,150, 39, 18,177,162, 45, 90,186,115,193,231,243,113,226,196, 9,140, 26, 53, + 10, 26,141, 6,102,102,102,176,176,176,128,185,185, 57,142, 28, 57, 2, 93,250, 7, 99,154,168, 82,169,246, 6, 6, 6,206,223, +182,109,155,152, 82, 10,129, 64, 80, 32,180,150, 44, 89, 34, 83, 42,149,123, 13, 17, 90, 5, 25,223, 89, 26, 81,189, 82,233, 81, +135,197,173, 83,130,191,150, 77, 64, 64,192, 8,150,101,251,160, 72, 10,135, 34,245, 10,165,126, 40, 45,189, 3, 0,219,128,128, +128,113, 44,203,234, 2,104, 10, 69, 23,234,213,211, 61, 75,106, 14, 24, 48, 96, 79,209,168, 67, 19,254,241,184,247, 55,110, 91, +123,189, 68,165, 68,219, 95, 20, 8, 46,110,201, 34,107,128,143,163,189,195,229,157,235,151, 88,237,187, 11, 72,226,162,113,235, +196,230, 44, 13,171,210, 23, 47,109,140,236,121, 27,185, 58,218, 32,253,182, 12,217,105,111, 1,138, 7, 31, 47,178, 6, 85,119, +116,176,191,178,107,227, 18,187,144,135, 12, 18,222,198,224,138, 86, 12,126,140,200, 26, 38, 16,244,241,173,225,182,107,240,151, +173,109,173,137, 26,234,216,103,248,101,228, 64,132,245, 82,162,245, 32,107, 52,235,110,137,106, 13, 69, 3,207,236, 76,239,232, +234, 71,198, 26,106,221, 42, 34,178,122,121,121,121, 45,189,115,231,142, 39,203,178,150, 87,175, 94,205,217,182,109, 91,116,126, +126,254, 70, 74,233,105, 35, 30, 14,250, 34,171,209,220,241, 35,111,172,252,249, 23, 81, 68,216, 61, 4,237, 61, 9,153, 74,161, + 57, 23,159, 59, 64,127, 88,177, 20, 75,201,197,141, 27, 55,122, 45, 92,184, 80,144,158,158,142,180,180, 52,100,100,100, 20,124, +114,115,115,225,236,236,140, 63,254,248, 67,153,157,157,125,219,128,135, 77,133, 71, 29, 22, 7, 75, 75, 75,240,249,124, 40,149, +202, 2,139,150, 80, 40,132,181,181, 53,222,189,123,135,131, 7, 15, 2, 64,122,169, 22, 54,190, 32,145, 97,136,187,216,204, 76, + 46, 18,137,216,226,172,106,198,114,106, 17,255,229,151, 95,186, 5, 4, 4,136, 26, 55,110,252,129, 69,171, 60,156,148,210,188, + 46, 93,186,152,109,220,184, 17,158,158,158, 80, 40, 20,133, 4, 21,195, 48,224,243,249,136,139,139,195,242,229,203, 65, 41,205, +251,171,123, 30,125,209,162, 47,134,180, 62, 84, 31, 8, 33, 67, 45, 70,101, 13, 13, 26, 27,137,168, 47,220,132, 66, 33, 50, 51, + 51,197,132,144,161, 37,100,176, 55,216,162,165, 19, 90,145,145,145,216,179,103, 15,186,119,239, 14, 91, 91, 91,100,100,100,224, +208,161, 67,120,246,236, 25, 4, 2, 1, 8, 33,198, 88,181,216,230,205,155,255,120,253,250,245, 94,254,254,254,117,190,255,254, +123,113,221,186,117,241,226,197, 11, 4, 4, 4,228,135,133,133, 69,201,100,178, 0, 24,146,216, 84,155,241, 93,151,140,212,160, +168,195, 34,235, 20, 69, 9,233, 29,190, 44,129, 77, 63,245, 67,161,244, 14,250,184,117,235,150,183,151,151,151, 15,222, 71, 18, +234, 30,184,250,209,133,133, 30,198,137,137,137, 77, 97,138, 58, 52,225,175,237,235,174, 18, 66, 10, 18,150,234,196,215, 7, 81, +135, 31,174, 73,102,248,143, 28,111,181,247, 46, 65, 92,108, 20,238,159,217, 90, 84,100, 25,210,217,116,210,207,181, 33, 18,155, +215,101,201,251,112,230,236,180, 56,128,114,140, 22, 90, 69, 57, 65,217,239,252, 71,140,183,219,127,159, 64, 18,247, 26, 55,143, +111, 49, 90,100,233,115, 14, 19, 8,126,224,113,200,194, 30,109, 27,241,219, 52,172, 1,243,148, 55, 72,138,151,224, 96,100,106, +122, 84,134,124,236, 77,162, 68,236,107,249, 47,221,199,217,217,217, 58,243,208,115,162,189,221,237,147,217,199, 42,127,193, 40, +169,146, 6, 74,110,208, 37,197,182,243,195,109, 86,183,178,178,250, 41, 44, 44,172,146, 72, 36,178,186,127,255,190,102,251,246, +237,113,249,249,249,171, 41,165, 7, 12,218,247, 15,151,187, 53,173, 81,245,234,202, 45, 59, 69,185,210, 60, 72, 21, 74, 8,157, + 92, 52, 71, 67,159,244, 43, 41, 1,102, 81, 78,161, 80,184,255,192,129, 3,221,253,252,252, 60,235,215,175,207,164,167,167, 35, + 55, 55, 23,185,185,185, 58,171, 23, 34, 35, 35,217,216,216,216, 4,161, 80, 88,102, 59, 43, 42,234, 80,159, 83, 47,189,195,124, + 0, 12, 33,228, 94,120,120,120,110,183,110,221, 32, 22,139, 33,149, 74,225,225,225, 1,181, 90,141, 51,103,206, 32, 44, 44, 76, +202,178,236, 85, 0,225,165,237,187, 76,150,231, 65, 8, 97,100,121,121, 13, 70,140, 24,209,110,230,204,153,133, 66,210, 29, 29, + 29, 97,103,103,103, 20, 39, 0,164,167,167,215,254,227,143, 63,166,135,135,135,127,215,189,123,119,235,249,243,231, 11,189,189, +189,161,209,104,152,242,114,102,100,100, 88, 63,120,240, 96,117,155, 54,109,190,233,214,173, 27,119,229,202,149,176,182,182,134, + 70,163,129, 88, 44, 70,118,118, 54, 2, 2, 2,112,227,198, 13, 53,165,116, 75, 86, 86,214,247,198, 92, 75,229,180, 96, 21,226, + 44,201, 2, 84,146, 16, 42,174,254, 95,209,206, 34,194, 13, 54, 54, 54,115, 0,204, 41, 33,131, 61, 12,189, 55,117, 66,139,195, +225,224,205,155, 55,216,190,125,251, 7,121,180,116,233, 31,138,227, 46, 97,223,233,149, 43, 87, 52,132,144,150,247,239,223,159, + 51,124,248,240,177, 82,169,212,205,220,220, 92,162, 82,169,126,147,201,100,186, 60, 90,124, 99,250, 16,169, 84, 26, 91, 92,212, + 97,209, 58,128, 77,169,156, 69,210, 59, 20, 74,225, 80,100,181, 66,169, 31,138,166,119,208,231,108,213,170, 85, 12,195, 48,207, +181, 67,240,207, 81, 36,186, 80,143,179,102, 98, 98, 98, 83, 23, 23,151,171, 0,204,138, 70, 29,254, 21,215,146,137,243,255, 91, +108,161,180,132,165,197,175, 5,209,197, 59,111, 32, 16,167,227,209,165,221, 70,139,172,226, 32,207,207,139, 90,180,255,109, 67, +133, 60, 31,210,172,228, 23, 52,230, 64,202,199,159,109,152, 95,188, 23, 11,145,121, 38, 30, 94,252, 53, 83,163,201,255,130, 70, +253, 39,188,252,116,152,247,243,217,195,124, 98,109,135, 71,211, 71, 65,146, 41,197,217,232,140, 67, 52, 79, 62, 57, 88, 59, 87, +160, 91, 75,114,125,215,130,164,173,126,125,173, 7, 58, 84,230, 97,237,172,223, 32,154,107,207,111,214,177,173,193,115, 32,234, + 28,228, 55,108,216, 48,201,207,207,207, 98,224,192,129, 47,211,211,211, 11, 57,200,151,227, 68,199, 19, 66,126, 62,189,109,205, + 44,251,122, 45,176,249,135,217,154,253,161, 79,138, 70, 33,150, 10, 31, 31, 31,205,173, 91,183,102, 78,154, 52,105,109,199,142, + 29, 43,247,233,211,135,239,238,238, 14,161, 80,136,215,175, 95,227,250,245,235,202,232,232,232,132,188,188,188,153,245,235,215, + 47, 51,199, 89,124,124,252, 78,129, 64,128,136,136, 8,180,107,215, 46, 80,107,177,122,115,235,214,173,121,217,217,217,200,206, +206,198,224,193,131, 11,202,167, 76,153, 50,175,106,213,170, 72, 79, 79, 47,107, 95, 23, 17, 66,182,225,253, 92,135, 73,193,193, +193, 45,143, 31, 63,222,114,198,140, 25,252,238,221,187,227,246,237,219,184,112,225,130, 82,169, 84,134, 2, 8, 53,116, 90, 27, +109,254,161, 7,132,144, 39, 65, 65, 65, 45, 57, 28, 78, 65,198,251,136,136, 8,236,222,189,187, 60,156,106, 0,171, 9, 33, 63, + 7, 7, 7, 47,186,120,241,226,232, 17, 35, 70, 88,169, 84, 42, 68, 70, 70,226,215, 95,127, 45, 47,231,244, 74,149, 42, 45, 60, +115,230,204,111,231,207,159,255,106,216,176, 97,204,180,105,211,176,105,211, 38,252,231, 63,255, 97, 53, 26,205,113, 30,143, 55, + 34, 53, 53, 85,250,153, 58,158, 29,218,105,117,118, 24, 49,231, 97,153,188, 31, 51, 52,104, 96,187, 19, 63,186, 91,210,238, 71, +251,246,237, 11,172,140,148,210, 66,126,117, 58,129,101,236,208, 33, 0, 27,237,117,186, 5,239,231, 23,213,207, 10,207,193,255, + 50,199, 27,202, 88, 39, 81,110, 19, 1, 57, 34, 75,159, 84,218, 6,160,168, 83, 6, 91,230,162, 69,139,214, 45, 94,188,120, 93, +209, 20, 14,250,149,138,166,126, 88,186,116, 41, 74, 74,239, 0, 32, 99,209,162, 69, 63,106,251, 39,162, 29, 46,108, 2,109,116, +161, 30,231, 30,109,185,217,146, 37, 75,134, 3, 40,141,211, 4, 19,254, 50,148,226,163, 69,231, 71, 92,223,175, 2, 96, 15,194, +204,163,175, 15, 70,124,116, 7,198,210,185,127,238, 91,178, 9, 20, 25, 84,163,158, 83, 33,123,192,114, 22, 68, 92,223,199, 2, +196, 6,132,153, 75, 95,255,231,163,219, 73,172,237,144, 19, 48, 9,255,121, 42,161, 73, 82,213,215,193, 10, 69, 33,107,144,214, + 39,107,144,171, 31, 57,104,235,202, 59, 58,253, 11,123,114, 58,125,184,209,219, 73, 77, 77, 93,105, 97, 97,193, 89,189,122,245, +104,153, 76, 86,200, 65,254, 35, 30, 18,179, 9, 33,156,102,213, 61,167,222,125, 21,219,199,144,225,194,162,104,213,170, 85,226, +179,103,207,134, 92,184,112,193,255,218,181,107,157,242,242,242,188, 8, 33, 16,139,197,111, 20, 10,197, 69,161, 80,184,223, 16, +145,165,255, 64,209,159, 34, 6, 0,178,179,179,145,147,147, 83, 40, 13, 1,240,222,191, 42, 53, 53, 21, 30, 30, 30,198, 62, 16, +175, 17, 66,194, 2, 2, 2,218, 6, 4, 4, 52,208, 90,133,174,149,119,200, 76, 43,120,174,137,197,102, 18, 66,136, 27, 95, 32, +148,222,186,117,235,226, 71,114,230,105, 45, 37,107,215,174, 93,187,194,220,220,188,105, 68, 68,196,165,143,225,212,138,168,126, +246,246,246,174,123,246,236, 9,217,181,107, 87, 11, 46,151,123,155, 16, 50, 32, 51, 51,243,115, 79, 42, 61, 1,134,205,113, 88, +166,197,200, 16,139, 88,121,241, 41,132,155, 70,163,201, 93,184,112, 97, 74, 81,225, 85,212,122,165,251,175, 84, 42,243, 13,188, +151,140,137,162, 44, 67,100,144, 92, 0,120, 63,119,225,251,105,117, 12,157, 84, 26, 64,137,115,103, 46, 94,188,152, 46, 93,186, +148, 48, 12,115, 28,192, 11,134, 97, 94, 21,117, 86,215, 95,182,116,233, 82, 44, 94,188,152, 46, 89, 82,242, 59,170,142,243,217, +179,103,148,195,225, 92, 2, 16,195,225,112,222,232,243,234,151,235,214, 41,141,211, 4, 19, 62,187,208,162,209, 33,113, 0, 70, + 85,232,155, 98, 76,200, 69,188,119,100,172, 56,206, 55, 7, 98, 1, 12,171, 40, 62, 22,248,105,108,179,246,179, 0, 16, 10,172, + 45, 42,178,244, 33,185, 78,143,187,180, 38,129,205, 58,182,157,161,181,134,173, 52,118,123,197, 57,200, 87,128,216,250,192, 65, +222, 88,248,248,248,104, 0, 4, 3, 8, 46, 58,169,116, 57, 30, 58, 16,139,197, 5,195,136, 12,195,196,100,102,102, 66,103,209, +210, 47,215, 30, 19, 88, 91, 91,151,103,191,243, 0,156, 37,132,156,167,148,106, 42,226, 88,202,100,121,238,218, 7, 28,167,162, + 56,181, 65, 14, 99, 43,146,243,221,187,119, 18, 0,173,170, 85,171, 38,136,138,138, 82,252, 93, 58,152,138,176, 14,125,106, 84, +180,112,211,190, 48,212,254, 4,199,242, 69, 5, 19,254,218,165, 77, 29, 14,244,115, 7,149, 53,169,180, 78,160, 81,252, 90, 66, + 27, 41,121,175, 36, 41,128, 61,175, 95,191,246,100, 89, 54,182, 24,203, 82,161,101, 75,150, 44, 65, 73, 57, 3,139,112, 2,192, +177,184,184, 56, 87,141, 70,147, 88,132,183, 80,121,105,156, 38,152,240, 55,177,104,253,127, 98,175, 66,177, 24,192, 98, 67,235, + 39,222,164, 11, 0, 44,248,200, 14, 52,178,162,247,163, 60, 34, 43, 36, 36, 68,243, 41,142,169, 74,245,126, 52, 76,127,238, 66, +125, 12, 31, 62,124,103, 5,239,187,230, 19, 28,207,127, 4,231,223, 73,100,153,240,247, 6,205,136,136, 3,240, 67,153,245,202, +206, 6,255,129, 48,210,254,204, 0,144, 81,130,214, 41,109, 89,105,156, 0,144, 13, 32,187,152,117, 75, 42, 55,193,132,207, 10, +198,116, 8, 76, 48,193, 4, 19, 76, 48,193, 4, 19, 62, 13, 8,128, 78, 37,188, 65, 24, 28, 77, 64, 8,233, 84,142,183,249,139, + 38, 78, 19,167,137,211,196,105,226, 52,113,154, 56,255,191, 56,203,226, 46, 26,189, 92, 81,211,115,253,165,226, 74,191,221,186, + 72,152, 79,241, 1,208,201,196,105,226, 52,113,154, 56, 77,156, 38, 78, 19,167,137,179,156,219, 25,255, 87,108,231, 83,126, 76, + 62, 90, 38,152, 96,130, 9, 38,152,240, 15, 66,231,154,196,133,171, 1,115, 54,138, 38, 84, 4,223,151,213, 72,101, 0,168, 40, +190,255, 71, 16, 66, 92, 0,244,208, 43, 58,173, 11, 6, 50, 9,173,127,238, 73,173, 14, 96, 62, 0,253,240,188,187,148,210,192, + 34,245,246, 1,208,159,144, 80, 10, 32,128, 82,250,202,152,237,113, 56,156,192,182,109,219, 78,190,113,227,198, 26,149, 74, 21, + 80,142,246,122,186,184,184,252, 72, 8,105, 12,128, 71, 8,121,157,156,156, 28,168, 82,169, 46,126,196, 49,168,226,236,236,188, + 10, 64, 67,134, 97,120,132,144,168,228,228,228,229, 42,149,234,202, 71,112, 90, 58, 57, 57,181,166,148, 58, 3,224,240,120,188, +119, 9, 9, 9,119,202, 27, 61, 55, 96,233, 51,126,182, 84,205, 3, 0, 43,115,174, 42,100,177,143,210,208, 50,211, 85,110,130, + 9,255,247, 29, 61,167,104, 81,215,170, 88, 65, 40,190,215, 0,164,107, 21,178,241, 92, 12,190, 47,113,253,226, 2,110,138,112, +118,173,138, 21,148,190,231,232, 90,141,172, 62,247,186,140,224, 46, 3, 56,117,216, 1, 48,227, 13,153,224,252, 19, 4, 6,125, + 6,244,208, 31,226,212, 38, 96,222, 81,166,208, 26, 92,147,184,104,184,224,134, 68,208, 56,221, 67, 8, 64, 3, 0,213, 1,188, + 2, 16, 78, 41,205,249, 72,193,240,143,224,252, 27, 98, 17,165,116, 72,145,253,254,160,210, 23, 95,124,209,251,252,249,243,102, +186,233, 89, 88,150,133, 88, 44, 86, 3, 24,105,196,241,116,244,247,247,159,251,203, 47,191, 96,224,192,129, 11, 9, 33,235, 40, +165,185,134,174,111,103,103,215,191, 74,149, 42,155,118,238,220, 89,169, 69,139,150, 68, 32, 16,224,245,235, 40,183, 9, 19, 38, +212,117,114,114, 58,158,156,156, 60,214,216,157,183,183,183, 31, 90,181,106,213,181,219,183,111,119,104,211,166, 13, 8, 33, 8, + 11, 11,115,155, 62,125,122, 3,103,103,231, 3, 73, 73, 73,223, 24,203,233,224,224, 80,163,106,213,170, 29, 54,111,222, 44,110, +221,186, 53, 68, 34, 17,194,195,195, 45, 38, 78,156,232,236,236,236, 28,153,148,148,116,213, 88,145,245, 56,236,228, 87,106,165, + 60, 8, 0,184,124,225,236,150,235,178, 79,166,135, 93,235, 85, 86,217,128,165, 56,102, 18, 91, 38,152, 96,130, 62,134,186,194, +153, 82,204, 58,255,235, 15, 12, 0,116, 25,189,108,218, 80, 87,172,217, 43, 65, 82, 5,241,125, 63,162, 50, 54,237, 73, 64,242, +199,180,115, 7,192, 76,231,114,167, 53,107,222,220, 97,202,205,155, 81, 74,224,183,255, 19, 3,200,248,226,202, 75, 20, 90,253, +235,144, 0,112, 49, 31, 0,249,178, 58, 57,112, 33,134,115,189,115,231,206,213,198,140, 25, 67, 26, 53,106,132,176,176,176, 26, + 7, 14, 28,232,193,229,114,163, 52, 26, 77, 24,128,167,134,102,181, 38,132,240, 0,248,114, 56,156,198,127,103,206,191, 57,204, +181,251,157, 12,224,174,206,162, 85,180,210,159,127,254,121,130,203,229,234, 44, 90,205,164, 82,169, 83, 17, 43,152, 33,240, 82, +169, 84,120,254,252, 57, 24,134,225, 1,240,198,135, 83,106,148,116, 94,220,220,220,220,182,134,222, 13,179, 39, 92, 49, 50,242, + 1,228, 43, 33,176,112,194, 47,187,131,237,102,126,251, 77, 63, 43, 43,171,235,217,217,217,191, 27,113, 49,123,123,120,120,172, +123,244,232,145,189,153,153, 25, 88,150, 69, 78, 78, 14,156,157,157,177,115,231, 78,155,153, 51,103, 14, 17,139,197, 87,100, 50, +217,127,140, 17,231, 85,171, 86,237,240,228,201, 19,177,110, 66,105,133, 66, 1, 55, 55, 55,236,219,183, 79, 56,109,218,180,218, + 66,161, 48, 94, 46,151, 71, 27,202,153, 45, 85,243,212, 74,121,208,158, 45, 75,220, 1, 96,196, 55, 75,130, 4, 57, 86,103, 12, + 41,203,150,170, 79, 3, 48, 9, 45, 19,254,234, 7, 69, 99, 7, 7,135,195,105,105,105, 87, 1,140,173,136, 20, 36,132, 16, 87, + 46,151,235, 77, 41,181,209,254,207, 84,171,213, 49,148,210,114, 39,212,117,168,214,161, 23,132,102,163, 64,217, 6, 12, 0,194, + 48,225, 26,101,222,238,180, 23,151, 79,126, 20,167, 64, 60, 26,160, 13, 24,128, 37, 12,243,136, 85,231,237, 76,125,118,249,236, +223,229,252,220,206, 66,205,170,206,134, 79,140, 89, 17,124,131,171,192,133, 97,193,236,123, 3,131,135, 21,167, 2,221,191,253, +246, 91,231,111, 38, 79, 38,163, 70,142,172,126,245,198, 13,210,206,152,217, 10,254,129, 40,205, 97,191, 88,161, 53,160, 14,177, + 5, 48,231,192,166,249, 12,151,195, 33,254,223, 6, 14,217,181,101, 53,211,185,215,128,130,225, 19, 63, 63, 63,248,249,249,145, +160,160,160,234,151, 46, 93,170,190,111,223, 62, 53, 33,228, 17,165,244, 96, 73, 27,235, 86,141,200, 88, 64,212,163, 22, 87,234, +255,195,239,219,155, 55,111, 14,161, 80,136,143,225, 4,128, 46,213, 57,209,221,155, 87,123,228, 63,117, 81,108,139, 22,173,104, + 69,112,254,131,112,151, 82,218, 71,219,129,217,122,120,120,180, 86,171,213, 34, 0,224,114,185,249, 0,166, 82,237,212, 65,132, +144,227, 44,203,246, 54,162,131,100, 0, 44,238,221,187,247,194, 41, 83,166,192,195,195, 3,211,166, 77,131, 74,165, 10, 35,132, + 44, 2,176,170,172,132,128,142,142,142,139,182,110,221,106,199, 21,152,163,209,156, 24, 36,102,170, 1, 0, 22, 66,224,196, 36, +138,105,211,166, 89,221,191,127,127, 57, 0,131,133,150,163,163, 99,192,206,157, 59,237,204,204,204, 64, 41, 69,110,110, 46,114, +114,114, 10,230,100,252,230,155,111,172, 34, 35, 35,127, 4, 96,176,208,114,114,114,106,189,121,243,102,177, 72, 36, 66,110,110, + 46, 95,169, 84,146,156,156, 28,228,229,229, 81,133, 66,161,156, 58,117,170,240,233,211,167,237, 1, 68,195,132,191,139, 40,224, + 0,248,154,199,227,245,173, 86,173, 90,147, 87,175, 94, 61, 84,171,213, 71, 0, 28,249,216,151, 41, 66, 72, 71, 87, 87,215, 21, + 18,137,100, 51,165, 52,248,255,229,152, 58, 57, 57, 29,185,117,235,150,251,214,173, 91, 71,174, 89,179,230,140, 49,247, 80, 9, + 47,191, 45,155, 53,107,230,208,183,111, 95,158,179,179, 51,242,242,242, 16, 21, 21,101,118,241,226,197, 74, 34,145,232,157, 92, + 46, 15, 53,230, 92, 57,212,108,109, 1,174,213,129,150, 29, 58,181, 25,216,239,107, 75, 39,123,107,200, 20, 26,188,138, 77,244, +248,227,204,137,118,174,117,123,220, 82, 42,179, 6,167,189,184,153,107, 44,103,135,110, 61,219,116,234,216,209,210,218,198, 26, + 89, 82, 37, 94,191, 73,240,188,124,225,164,159, 75,221, 30,215, 88,162, 26,150,252,248,124,222,231, 60, 55,211, 0,174, 84,100, + 95,191, 65,171, 70,247,187,140, 89,222,132, 82, 10,134, 98, 99, 81,107,214, 52,128,187, 17, 80, 27,203, 7, 74, 41, 33, 88,173, +111,205, 42, 24, 86,100, 64,186,122,163,244, 97, 74,221,243, 24, 16,218,216,217, 53,159, 56,126, 60,201,201,206, 70,120,120,120, + 94, 81,145,181,174, 50,248,215, 24,120, 29,143,195,203,127,147, 53,171,232,208,161,238,191,193,121,180,204,204,204,138, 45,183, +182,182, 70,135, 14, 29, 16, 24, 24,200, 5,208,184,136,194, 43, 60,201, 42, 32, 60,181,109, 30,172,205,133,140,135,135,135,165, +149,149,213, 71,115,190, 47,100,189, 91,121,208, 47,239,253, 62,127,228,197,125,107,125,165, 57,153,188,162, 85, 44, 44, 44, 80, +179,102, 77, 44, 92,184,208, 48,206,143, 87,183,127, 41,167,139,139, 75, 45, 63, 63,191,198,127, 94,189,106, 35,145, 72,132, 18, +137, 68,120,254,207, 63,109, 90,182,108,217,216,197,197,165,150, 30,135, 49,237, 92,182,101,203,150, 69,199,143, 31,103,252,252, +252, 96,107,107,139, 14, 29, 58,224,204,153, 51,220, 53,107,214,172, 4,176,176,172,118, 50, 12,211,198,207,207,143,128, 82, 36, +101,169,113, 39,176, 22,194, 87,251, 32, 39,159, 34, 61, 43, 27, 50, 89, 62,204,204,204, 68,218,225, 94, 67,247,189, 85,203,150, + 45, 9,128, 2,113,149,147,243,254,147,155, 43,133, 66,161,132, 80, 40,180, 36,132,136, 12,229,164,148, 58,183,110,221, 26, 0, +160, 84, 42, 11,222,240, 50, 51, 51, 73, 86, 86, 22, 20, 10, 5,120, 60, 30,159, 16,194, 53,148,211,202,156,171,226,242,133,179, +130,112, 2,223, 0, 0, 32, 0, 73, 68, 65, 84, 71,124,179, 36,110,196, 55, 75,226,184,124,225,108,133,101,182,198,144, 50, 43, +115,174,234,115, 94,159,132,144, 74, 28, 14,231,215,106,213,170, 69,114, 56,156, 61,132, 16,231,143,225, 36,132, 52, 37,132,172, + 52, 51, 51,187, 88,187,118,237, 56,115,115,243, 63, 9, 33,171, 8, 33, 45,203,195, 73, 8, 17,152,153,153,253,185,114,229,202, +144,135, 15, 31, 14,188,116,233,146,247,227,199,143,251, 5, 5, 5, 29,176,176,176,184, 78, 8, 49,251,152,123,211,219,219,123, +215,157, 59,119,154,182,106,213,234, 23, 66,136,176, 34,238,119, 66, 8,135, 16,210,144, 24, 56,215,208, 95,125,222, 9, 33,174, +141, 26, 53,114, 23,137, 68,232,212,169, 19, 0,180,255, 72,206,150, 19, 39, 78,116,158, 57,115, 38, 47, 60, 60, 28,191,252,242, + 11,142, 31, 63,142,148,148, 20,244,236,217,147,255,197, 23, 95, 56, 11,133,194,150, 70,113,114,173, 14,124, 59,125, 70,183, 89, +211,198, 89, 62,122,171,196,238,139,111,113, 44, 52, 17, 41,121, 2,244,234, 55,194,186,107,159, 65, 93, 5, 66,235, 3,198,114, +206,157, 51,167,219,248,209, 67, 44, 35, 18, 89,156,184,157,132,219,207,179,160,230,217,160,123,191,177,182, 13, 90,119,235,193, + 5,239,183,207,125,142,118, 2, 45,190,253,246,219, 74,179, 87,239,189,233,218,244,235,141,169, 25,240,211, 23, 62, 53, 0, 27, + 59,115,243,175,159,183,107, 55, 78,252,126,206,199, 82, 57, 11,241, 53,238,179, 41, 37, 3,109,245,253,179,218,218,161,186,118, + 88,145,115,254,215, 31, 24, 74, 48,109,168, 43,156,203,106,231, 21, 96,224,183, 51,102,240,172,109,109,177,101,203, 22,200,165, +210, 66, 62,179, 29,221,209,237,162, 25, 55,190,138,143, 91,100, 7, 79,114,253, 95,248, 2, 56,190, 68,139,214,233,211,167,105, +143, 30, 61, 8, 0,132, 68,208,140,254,117,200,143,131,166,172, 92, 72, 24, 66,189,124, 91, 69, 84,174, 90, 71,106,111,111,143, +188,188, 60,200,229,114,240,249,124,228,231,231,227,237,219,183,184,125,251, 54,108,109,109,141,106, 76,118,118, 54, 44, 44, 44, + 96, 97, 97, 81, 33,156,243, 70,118, 18,190,142, 75, 21,158,187,125,165,221,134,201,255,105, 81,181, 97,251,199, 29, 7, 77,123, + 98, 85,201, 53,255,241,227,199,184,117,235, 22, 50, 50, 50,208,188,121,243,127,203,249,188,171,237,175,239, 18, 66,108,253,252, +252,220,206, 93,188,102,155,155,207, 90,189, 73, 86,241, 88,150,133,153,153,139,250,224,225, 19, 89, 3,251,245, 34,132,144, 20, + 0,119,181,226,246,110, 25, 23,138, 8, 64,173,254,253,251,207,157, 60,121, 50,162,162,162, 48,110,220, 56,217,221,187,119,223, +181,106,213,202,126,231,206,157,226,153, 51,103,226,234,213,171,139, 9, 33, 71, 1,196, 80, 74,243, 75,232, 52,248,124, 62, 31, +106,173,108, 80,106,216, 2,125,159,157,157, 13, 42,203, 0,159,207,231, 0,168, 4,192, 32, 63, 58,150,101,249, 60, 30,175, 64, +100,189, 77,206,198,219,148, 60,100,231, 42, 32,147,169,161,144, 81,112,204,236,185,192, 27, 39, 0,111, 12, 60,158, 28,145, 72, + 4,181, 90, 93, 48,255,162,206, 82,166, 80, 40,144,149,149, 5, 14,135, 99, 1,192, 10, 64,186, 33,132,239,157,220,113, 76, 59, + 12,136,123,123,123, 59,188, 58, 61, 79,217,127, 73,100, 65,153,149, 57, 87,117,120,102,109,142,189, 91,131, 27, 13, 7,254,230, +163, 43,251,156,254, 89,132, 16, 97,165, 74,149, 46,135,132,132,212,174, 94,189, 58, 98, 98, 98,124, 6, 12, 24,208,156, 16,210, +208,216, 57, 25, 9, 33,102, 12,195,252, 56,106,212,168,201,254,254,254,164, 70,141, 26,224,114,185, 80,171,213,110, 81, 81, 81, + 29, 14, 29, 58, 52,135,203,229,238,212,104, 52,223, 25,234,247, 71, 8, 97, 4, 2,193,193,237,219,183,183,109,222,188, 57,246, +236,217,131,187,119,239,178, 77,155, 54,101,134, 15, 31, 14, 79, 79,207,230,195,135, 15, 63, 70, 8,233, 94, 30,203, 22, 33,196, +115,232,208,161,238, 28, 14, 7,173, 90,181,226,223,186,117,171, 17,128, 91, 31,121, 76, 45,220,220,220,174,182,111,223,190,225, +197,139, 23, 31, 16, 66,218, 27,227,231, 72, 8,233,227,234,234, 26,100,109,109,109,107, 68, 31,155,151,144,144,240,189, 17,115, +168,182,104,220,184, 49, 98, 99, 99, 81,171, 86, 45,240,249,252,150,132,144, 9, 0,186, 1, 88, 96,204, 12, 22,132, 16,215,150, + 45, 91, 58,180,111,223,158,172, 90,181, 10, 0,192,227,241,160,209,104,192, 48, 12,120, 60, 30,124,124,124, 72,116,116,180, 29, + 33,196,213,144, 97, 68,135,106, 29,122,181,234,216,173, 77,219,230,245,153, 53,135, 95, 65,195,106,192, 33,106,112, 9, 11, 86, + 37,132,144,207, 65, 13,223, 38,156,231, 79, 31, 53,119,168,217,185, 87,218,139, 11, 39, 13,225,236,214,171,183, 95,237, 90, 53, +152, 13,199, 94, 35, 51, 33, 82,147,240,236, 90, 26,195, 97, 80,187,241, 23, 14, 53,234, 52,228, 52,108,222,158, 39,137,121,218, +193,174,122,187, 78,233,175,174, 94,252, 28,247,228, 82,128,227, 86,217,225,235,158,157,219,243, 19, 37, 18,233,161,195, 39,159, +228,169,112, 27, 0,174, 2,164, 59, 80,191, 94,179,102,237,118,174, 90,101,239,226,226,194, 27,230,239,175,222,241,224,193,131, +241,128,166, 36, 62, 7,103,231, 78, 19, 39, 78,228, 36, 74, 36,244,208,145,211,143,117,124, 0, 96, 6,212,171,239,230,211, 19, +210,231, 70, 13, 83,246, 2, 4, 78,206,206,181, 39, 76,152,128, 36,137, 4,123,130,131,115,243,129, 80,157, 21,235, 4, 7,155, +235, 84,117, 30, 53,123,108,111,226,238,226,128,137,139,119,180,236,160, 76,169,122, 25,255,179,108,233,107,145,127,170,200, 42, + 42,182, 74,124, 59, 63, 28, 65, 23, 89, 9,136,247,161, 67,251,153,212, 28,165, 52, 42, 42, 10, 14, 14, 14,112,113,113,129,181, +181, 53, 34, 34, 34,240,231,159,127,226,197,139, 23, 96, 89, 22, 13, 26, 52, 48,170, 65,105,105,105,120,244,232, 17,108,109,109, + 43,140,179,170,123, 37, 76,113,175,196, 79,126,151,205,191,120,247, 69,243, 29,243,250,213, 97,124,250,237,202,207,255,159, 6, + 80, 40,254, 29, 51,148,232, 71, 23,122,120,120,180,222,189,123, 55, 95,174,134,101,141, 9,161, 63, 73,243, 53,230, 0, 96, 46, +226, 72,195,130,106,126,183,108,217, 50,233,232,209,163,125,222,190,125, 27, 88, 22,175, 64, 32, 88,241,229,151, 95,206,162,148, +242,190,253,246, 91, 0,192,136, 17, 35,178,111,223,190, 93,131, 82,154, 66, 8,113, 29, 51,102,204,203,203,151, 47,155,205,152, + 49,131,163, 86,171, 35,184, 92, 46, 37,132, 4, 80, 74,151, 20,229, 99, 24,230,254,131, 7, 15,188, 92, 61,107,194,211,158,129, +223,194,247,211,181,217,155,177,136,127,243, 26,207, 30,223,133,179,179,179,181,139,139, 75,100,173, 90,181,148, 9, 9, 9,115, +114,115,115,183,150,214, 70, 62,159, 31, 30, 22, 22,230,226,233,233,137,220,220, 92,196,167,230, 97,218, 17, 51,100,203,222, 27, + 49,120,144,161,161,123, 77, 75, 49,163,184,235,228,228,164, 84, 40, 20, 63,100,102,102,150, 58,141, 8,143,199,123,247,248,241, + 99, 11, 15, 15, 15,228,231,231,211,244,244,116, 34,149, 74,145,147,147, 67, 78,159, 62,253, 85, 98, 98, 98, 83,111,111,111,226, +230,230, 22, 80,189,122,117, 89, 66, 66,194, 56, 67,124,192, 66, 22,251, 40, 9, 33, 26, 46,151,187,102,252,248,241, 3,143, 30, + 61,122,255,240,146,218,125, 40,165, 74,237, 13,105,237,235,235,123,174,126,253, 58,174,193,171,235,109,164,148,254,244, 55,184, +188, 70,205,159, 63,191,182,157,157, 29, 38, 78,156,136,165, 75,151, 98,209,162, 69,213, 39, 78,156, 56, 30,192, 58, 35, 58, 29, +177,179,179,243,189, 13, 27, 54,248,180,110,221, 26,103,206,156,193,254,253,251, 17, 29, 29,173,246,246,246,230, 54,111,222, 28, +139, 23, 47, 70,215,174, 93,199, 77,157, 58,181, 29, 33,164,145,129,226, 99,244,226,197,139,251,180,105,211, 6, 35, 71,142,148, + 95,185,114,101, 32,128,243, 23, 46, 92,248,226,234,213,171,135,247,238,221, 43, 94,185,114,101,167,153, 51,103, 78, 4,176,169, + 28,251,255, 85,219,182,239,231, 80,110,211,166, 13,130,130,130,186,126,140,208, 34,132, 8,236,237,237, 79,239,217,179,167, 97, +205,154, 53, 49,108,216,176, 70, 3, 7, 14, 60, 77, 8,233, 76, 41, 53,168, 67,170, 92,185,242,143,199,143, 31,175, 86,210,200, + 66,113,144,203,229,118, 95,127,253,245, 42, 0, 70, 9,173,125,251,246,225,251,239,191, 71,131, 6, 13,234,183,104,209, 98,219, +132, 9, 19,208,191,127,255,142,132, 16, 39, 74,169,212, 16, 34, 46,151,235,221,179,103, 79,222,145, 35, 71,222, 91, 71,218,182, + 69,167, 78,157,240,228,201, 19,220,184,113, 3, 28, 14, 7,230,230,230,104,221,186,181, 64, 34,145,120, 3, 40, 83,104, 49, 66, +179, 81,125,122,118,183, 60,113, 59, 17, 26, 86,141, 38,213,172,208,220,199, 17,207,227,179, 17, 22, 25, 15,141,130, 15, 43, 59, +123,180,108,215,197, 46, 41, 33,122, 20,128,178,253,181,132,102,163,250,246,233, 97,113, 34, 84,130, 76,201, 51,250,234,238,209, + 63, 85,249,210,113, 0,112,255,210,129,109,206,246,226,206, 53, 26, 55,225,180,239,220,219,246,200,254,164, 81, 0, 62,139,208, +186,234,142,237,158,188,180, 17,179,135,248, 81,158,173,219, 93, 75,149,106,179,110, 89, 87,160,203,156,249,243, 91,140, 29, 63, + 94,196,178, 44,246,254,254,123,246,163, 7, 15,158,151, 22,237,183, 25,240, 28,216,167,143,208,210,202, 10,211,167, 77,131,165, + 74,117,185,224,144, 0, 29,167,207,154,213,250,155,111,190, 17,111, 11,152,124,191,235,152,229,141, 89, 74, 73,113,195,148, 69, +113, 17,104, 58,166, 79, 31, 88, 90, 89,225,219,111,191, 5, 81, 42,207,233,150,157,226,226,242,232,175,252,154, 15,233,213, 6, + 4, 4,251, 79,221,192,171,216,212,199,151, 19,241,250, 95,242, 76, 54,206, 71, 75,135, 28, 37,146, 59,246,232,135, 7, 15, 30, + 0, 0,222,189,123,135,119,239,222,161, 90,181,106,216,180,169,112,255, 85, 30, 1,195,178,108,133,115, 2,128,147,189, 21,134, +117,111,198,189,241,104,191, 72,154,154, 42,178,176,176,200,255,183, 9, 45,125,168,213,106,145,183,183, 55,178,101, 32, 89,121, + 42,139,180, 3,239, 45,254, 14,131,175, 88, 40, 20, 10,198,194,194, 2,114,185, 92,100,192, 3,129,215,167, 79,159, 89, 7, 15, + 30,228, 61,123,246, 12, 85,171, 86,133, 82,169,196,237,219,183,227,181, 19, 33,131, 82, 42,225,112, 56, 18,150,101,171, 55,104, +208, 0,129,129,129,240,241,241, 33,221,187,119,159,163, 21, 91,133,110,238,196,196,196, 31, 39, 76,152,240,197,161,195, 71,237, +182, 15,146, 33, 59, 43, 27,185,185,185, 8,127,120, 31,233,201,249,216,177, 99, 7, 68, 34, 49, 1,192, 79, 73, 73,230,207,152, + 49, 99,163,155,155, 91,183,248,248,248,158, 37,181, 83, 34,145,172,248,230,155,111, 90, 30, 56,112,192, 38, 39, 39, 7, 50, 89, + 62,210,165,102,136, 92,255,126, 30,223,218,211, 35,177,101,243, 86,166,158,151,185, 67, 94, 94, 30, 38, 79,158,188,214,213,213, +181,181, 68, 34, 25, 83, 18,103, 66, 66,194,157, 41, 83,166, 56,237,221,187, 87,164, 80, 40,148, 26,141, 6, 50,153,140, 57,112, +224,192, 28, 47, 47, 47,219,157, 59,119, 18,145, 72,172,173, 27,207,159, 52,105,210, 65,103,103,231,189, 73, 73, 73, 35,203, 26, + 46,226,112, 56,235,131,131,131,135, 15, 26, 52,200, 50, 49, 49,177,206,241,227,199,133, 0,100,218, 42, 46,157, 59,119,246, 90, +189,122,117, 37, 95, 95,223, 57,132, 16, 30,165,116,229,231,188,158, 28, 28, 28,166,246,233,211, 7,171, 86,173,194,201,147, 39, +103,218,217,217,173, 93,186,116, 41, 92, 93, 93,167, 16, 66,214, 27, 49, 81,239, 79,235,214,173,243,241,241,241,193,136, 17, 35, + 20, 23, 47, 94,156, 15,224, 24,128,216,235,215,175,123,252,246,219,111,189, 14, 30, 60,184,106,195,134, 13,162, 77,155, 54, 85, +235,215,175,223,122, 0, 99,202,188,191,157,156,102,248,251,251, 99,245,234,213,184,114,229, 74, 63, 74,233, 25,237,162,179,132, +144, 94, 43, 87,174,188,180,112,225, 66,172, 91,183,238, 91, 99,133, 22, 33,196,162,118,237,218, 63,116,235,214, 13,215,175, 95, +135,159,159, 31, 90,182,108, 57,147, 16,178,145, 82,154, 86, 14,145,197, 88, 88, 88, 28,220,189,123,183,159,151,151, 23,150, 47, + 95,142, 89,179,102, 97,215,174, 93,126,195,134, 13, 59, 72, 8,233, 91,244,158, 41, 14,214,214,214, 22,102,102,102,152, 51,103, + 14,141,142,142,206, 40,171,190,187,187,187,237,218,181,107,137,173,173,173,181,129,237, 20,139, 68,162, 86,117,235,214,197,226, +197,139,113,225,194, 5, 44, 92,184, 16,117,235,214, 69,108,108, 44, 6, 15, 30,108,182, 96,193,130,254, 0,118, 27,248,208,177, +182,183,183, 71, 74, 74, 10,120, 60, 30, 90,183,110,141, 99,199,142, 65, 46,151,195,209,209, 17,153,153,153,104,214,172,153, 78, +148, 25, 24,156, 67,235, 58,216, 89, 35,229,105, 2,184, 80,163,113, 13, 7, 92,126,242, 14, 74, 21, 11, 71,123, 27, 36,165, 36, +163, 69, 93, 55, 40, 20, 30,160,148,173,107, 8,163,128,195, 52, 22,138,196, 72,207, 73, 67, 66,228,149,119, 74,141,124, 66,102, +244,141, 56, 0,176,171,218,118,194,253, 27, 23,238, 15,232,209,214, 49, 87,234, 14, 66,217,102,159,227,126, 28,224, 1,119,115, + 17,119,196,169,237,243,136,154,101,241,229,152, 21, 77,187, 57, 33, 15,201, 64, 37,192,123,192,224,193,173,190,251,238, 59,193, +203,168, 40,118,198,180,105,153, 15,239,221,187,242, 7,112,191, 52,206, 92,160,122,231,206,157,193, 0,248,227,252,121,105, 26, + 16, 15, 0, 78,128,123,239,175,191,110, 59,127,238, 92,193,235, 55,111,216,219, 81,185, 39, 94,167,208,192, 86,118,120,116, 32, +246,125,157,210,160, 1,234,233,120,207,157, 59, 71,101,218,118,180,119,199,148,174,173,125,155, 15,239,211, 22,241, 73,239, 16, +244,203, 9, 60,126,153,120,206,158,197,208,127,203,115,184,180, 12,246,140, 1, 55,204, 7,101,121,121, 31,142, 30,124,172,128, +249, 20,156,197,225,223, 40,180,116,208, 77,222,172, 80,177, 80,168, 88,221, 91, 45,100, 50,153,161,138, 92,117,238,220,185, 61, +211,166, 77,195,218,181,107,241,242,229, 75,240,249,124,212,173, 91,215,133, 16, 98,161,179,192, 52,110,220,216,145, 97, 24, 60, +127,254, 28,107,214,172,193,232,209,163,233,173, 91,183,118, 21,247,192,160,148, 62, 76, 79, 79,223, 60, 97,220,232,204,140,228, +183, 80,201, 50,144,146,240, 26,114,105, 38,150, 7,254,136, 60, 21, 23, 73, 89, 74, 36,101, 41,193, 8,237,176,109,231,110, 78, +237,218,181,187,113,185,220,158,165,180,243,118,114,114,242,206, 73,147, 38,101, 38, 37, 37, 21,236,159, 66, 69,161, 80, 21,190, + 94,205,204,204,176,126,253,122,235, 26, 53,106,244,225,241,120, 29, 74,225, 76,140,139,139,123, 54,105,210, 36, 69,114,114, 50, +178,178,178,112,226,196,137, 94, 94, 94, 94,182,171,126, 90, 75,164, 74, 46,146, 50,149, 72,202, 84, 66, 96,225,136,131,135,143, +114,106,214,172, 57,132,199,227,181, 44, 75,100,237,221,187,119,248,160, 65,131, 44,127,250,233,167,244,227,199,143,111,161,148, +234,159,144,231,235,215,175, 63,116,240,224,193,156, 89,179,102,217, 5, 5, 5,205, 36,132,204,255,140,157, 69,135, 65,131, 6, +213, 98, 89, 22, 33, 33, 33,143, 41,165,235,142, 30, 61,122, 79, 46,151, 99,240,224,193,222,218, 97, 36, 67,120,154, 14, 25, 50, +100,178,159,159, 31,166, 79,159,174,188,120,241, 98, 99, 74,233, 90, 74,233, 27,250, 30,177,148,210,141, 87,175, 94,109, 48,117, +234, 84,121,179,102,205, 48,114,228,200,209,132, 16,191, 50,120, 91,249,251,251,251,176, 44,139, 3, 7, 14, 60,210, 19, 89,186, +243,248,231,225,195,135,111, 43, 20, 10, 12, 29, 58,180, 10, 33,228, 11, 35,246,157, 47, 20, 10, 67,150, 45, 91,102,147,144,144, +128,225,195,135,203,159, 63,127,142, 37, 75,150,136,173,173,173,207,232,238, 1, 99, 32, 20, 10,119,252,252,243,207,125,234,213, +171,135, 73,147, 38, 41,182,110,221, 58,109,242,228,201,138,198,141, 27, 99,203,150, 45,125, 4, 2,129, 81, 83,139, 72, 36,146, +204,136,136, 8,251,178, 62,241,241,241,201, 6,238,179,153,165,165,101,168,175,175,111,118,221,186,117,155,168,213,106, 68, 68, + 68,188,222,179,103, 15, 91,183,110, 93,108,222,188, 25, 65, 65, 65,232,217,179, 39, 56, 28, 78,127, 99,218, 42,149, 74, 33, 18, +137,192,231,243, 17, 22, 22, 6,185, 92, 14, 51, 51, 51,136, 68, 34,112, 56, 28,216,216,216,192,210,210, 18, 48, 48, 26,141, 16, +208,236, 60, 21,120, 60, 6, 92,134,197,179,216, 44, 40, 85, 44, 68,124, 14,120, 92, 2, 80, 22, 54,230, 60,136, 4, 28, 48,132, +176, 6,114, 34, 75,170,132,128,207,128,199, 23, 16, 70,173, 17, 23, 60, 28,185, 26,177, 88, 44, 32, 14, 86, 66,136,248,127,163, +105,129,201,251,227, 53, 10,224,153,123,120, 12, 92,189,102,141, 32, 59, 55, 23,253,250,245, 75,127,115,239, 94,176, 12,184,215, +174,140, 99,202,112,185, 53,218,183,107,135,176, 7, 15,144,147,145,241, 10,120,239, 28, 47,112,117, 29,180,126,253,122,129, 44, + 63, 31,253,250,246,205,124,121,227,198,222,184, 92,156, 50, 68,100, 1, 0,135,207,119,214,241,102,101,100,100, 0,239, 83, 72, + 56, 85,178, 88,245,205,144,174,200,201,203,199,236, 31,131,217, 7,207, 18,167, 92,143, 71,143,163, 18,100,253,155,158,193,132, +144,241,250, 31,131, 44, 90, 58,171,147, 33, 98, 69, 46,151, 87,184, 0,250, 88,206,226, 68,226,199,114,254, 29,193,229,114,243, + 95,188,120, 33,176,178,119,101,237, 45,121, 25, 94,163,111, 88, 3,128,157, 5, 55, 75,169, 81,177, 18,137, 4, 66,161, 48,223, + 16,174,252,252,252,113,132,144,229, 0,234,112,185,220, 83,187,119,239, 38,193,193,193,182,254,254,254, 81,132,144, 4, 95, 95, + 95,207,221,187,119, 91, 1,192,198,141, 27,233,193,131, 7,187,226,125,202,140, 18, 77,202, 73, 73, 73, 75,120, 60,222,173,111, +190,249,102,147, 64, 32,176, 53, 55, 55,183,191,126,253, 58,201, 87, 82, 52,157, 31, 91, 16,137,104, 37,102,112,109,158, 21,198, +143, 31,207,137,140,140, 12, 4,112,170, 20,206, 57, 66,161,240,250,203,151, 47,215, 90,187, 53,172,100,238, 57,223,186,249,188, +231, 0, 0, 79, 7, 30, 24,109,191,152,153,153,137,212,212, 84, 76,158, 60,217, 54, 42, 42,106, 14,128,203, 37,113,198,199,199, + 95, 21, 10,133,241, 79,159, 62,109,207,227,241, 4,230,230,230, 77, 67, 67, 67, 73,190,130, 69,253, 57,177, 72,207,125,223, 78, + 59, 11, 46,238, 47,115,194,148, 41, 83,184,175, 94,189,250, 17, 64,155, 98, 59, 51,134, 9,210, 23, 89,179,103,207, 14, 7, 80, +133, 16, 82,104,104, 84,163,209,144,161, 67,135, 62, 1, 80,119,214,172, 89,118,148,210,153,132,144,116, 74,233,246,191,250, 90, +178,178,178, 90, 53, 97,194, 4, 28, 60,120, 16, 25, 25, 25,235, 1, 32, 59, 59,123,221,190,125,251, 14,140, 27, 55, 14,191,255, +254,251, 42, 66,200, 31, 6, 88,181,190, 28, 60,120, 48,206,158, 61,139, 75,151, 46,253, 64, 41,141, 40,225, 30,125, 73, 8,153, +115,252,248,241, 13,254,254,254,248,245,215, 95,187, 1, 40,205, 65,182,115,215,174, 93,113,230,204, 25,188,123,247,110, 75,113, + 21, 50, 51, 51,183,158, 56,113,162, 69,215,174, 93, 17, 24, 24,216, 25,192,159, 6,116,144, 62,214,214,214,187, 55,108,216,208, +180, 94,189,122, 24, 50,100, 72,190, 82,169,236, 54,107,214,172,147,251,247,239,183,220,179,103, 79,147,241,227,199,223, 33,132, +140,165,148,222, 54,232,161,195,225,172,220,180,105,211,152,246,237,219, 99,230,204,153,234,115,231,206,245,166,148,158, 39,132, + 68,205,158, 61,251,244,154, 53,107, 56,171, 87,175, 30,195,225,112, 82, 53, 26,205,231, 18,215,203, 54,110,220,216,162, 75,151, + 46,120,253,250, 53,110,223,190, 13,165, 82,249,123,104,104,232,181,234,213,171, 47, 83, 40, 20, 39,205,205,205, 71, 88, 90, 90, +250, 54,108,216,240, 11, 66,136,153, 33,126,122,132,144,204,168,168, 40,115, 71, 71, 71,240,120, 60, 60,122,244, 8,142,142,142, + 0,128,148,148, 20,212,173, 91, 23, 28, 14, 7,153,153,153, 0, 12,123,216, 18,194, 60,142,122, 35,169, 98,103,105, 14,104, 68, +120,248, 60, 30,149, 28,108,161, 33, 12,146,146, 18,209,176,150, 27, 8, 33,200,124,151, 4, 66,200, 19, 67, 56, 53,148, 13,123, + 43, 73,169,108,111, 41, 68,189, 22, 93,236, 67,255, 72, 13,182,174,218,102, 60,151, 67, 56, 66,145,213,246, 49, 35, 71, 58,176, + 44, 69,230,187,100,112, 25,230,238,231, 56, 65, 33,111, 17,215,174,170,232, 97,151, 49,203, 27, 18, 10, 42, 83, 98,207,175,201, +200, 48, 3, 26,110, 92,176,192,198,222,193, 1, 67,134, 12, 97,223, 37, 36, 92,204, 3, 12, 74,172, 92,165,122,117, 39, 11, 75, + 75,220,188,121, 19, 28, 32, 6, 0,118, 1, 62, 65,179,103,219, 59, 58, 59, 99,244,152, 49,108,242,219,183,127,202, 12, 24,210, + 45,196, 91,181, 42, 79,199,203,104,121, 19, 57,152, 54,171,183,159,208, 92, 44,196,202,109, 71, 17,151, 38, 61, 16,154,136,109, +255, 70, 99, 71,153, 22,173,146,156,207,222, 59, 85,155,149, 42, 86, 68, 34, 81,129, 53,197,136, 55,189, 10,231, 44, 11,159,130, +243, 51, 42,231,121,132,144,227,132,144,121,113,113,113,207,198,140, 25,163, 84, 43,229, 57,183,150, 87,153,251, 32,208,107, 82, +232, 18,151, 73,199,166, 89,207,205,203, 74,207,217,184,113,163, 42, 46, 46,238,153,254, 58,101, 92, 44,111, 41,165,103,126,251, +237,183,173, 33, 33, 33,168, 91,183, 46, 34, 34, 34, 28,165, 82,105,163, 39, 79,158,216,249,248,248, 32, 56, 56, 24, 7, 15, 30, + 92, 75, 41,189, 80,154,200,210,179,182, 93, 76, 76, 76,172, 25, 27, 27, 91,205,198,198, 70,101, 99, 99,131,162,145,136,217, 50, + 22,239, 50,179, 96,103,103, 15, 43, 43, 43,239,178, 56,229,114,249,153,196,196,196, 26,172,109,173,182, 53,210,214,103,133,173, +116, 71,216, 74,119,156,153,227, 10, 23, 27, 1, 50, 50, 50,144,154,154,138,212,212, 84, 16, 66,160, 82,169,106, 27,192, 25, 45, +145, 72,126,121,251,246,237,113, 39, 39, 39, 88, 90, 90,130, 2, 72,202, 84, 33,124,181, 15,194, 87,251, 32, 41, 83,133,236,156, + 28,120,121,121,193,210,210,178,110, 73, 67, 70,149, 43, 87,238, 62,104,208, 32, 75, 0,208, 10,168,142,148,210, 73,197,124, 38, +170,213,234,214,186,186,223,127,255,189, 29,128,174,127,241,245,196, 33,132,124, 51,110,220,184, 38, 34,145, 8,155, 55,111,142, + 6,176, 87,215,215,111,221,186,245, 57, 0, 76,155, 54,205, 23,192, 76, 82, 66, 38,104, 29,248,124,126,227,218,181,107, 35, 52, + 52, 20, 0,142,150,177,249,195,183,110,221, 66,245,234,213, 33, 18,137,154,150, 81,215,219,221,221, 29,207,159, 63, 7,128,135, + 37,212,121,248,252,249,115,184,187,187,131, 16,226,109,192,190,247,233,210,165,203,227,203,151, 47, 55,109,213,170, 21,198,140, + 25,163,184,115,231, 78,119, 74,233,181,135, 15, 31,118, 24, 58,116,168,180, 70,141, 26,184,122,245,170,207,208,161, 67,111,113, + 56,156,229, 6,112,142, 14, 8, 8,152,247,213, 87, 95, 33, 32, 32,128, 30, 58,116,104, 8,165,244,188,246,254, 58,119,224,192, +129,225, 43, 86,172,160,125,251,246,197,210,165, 75,231, 17, 66, 38,149, 97, 29,202,210,104, 52,144, 74,165, 6,153,228, 13,173, +239,224,224,240,101,151, 46, 93,176,112,225, 66, 84,174, 92, 25, 39, 79,158,164, 0, 78, 81, 74,175,203,229,242,182,148,210, 53, + 82,169,244, 88,104,104, 40, 58,119,238,204, 71,225, 41, 70, 74,132, 90,173,126,115,249,242,101,165,189,189,253,127,217, 59,239, +248, 40,138, 62,140, 63,115,189,223,165, 93, 58, 9,161,165,210,149, 42, 77, 67, 13,130,162,162, 72, 17, 17, 68, 1, 17, 68,138, +162,188, 22, 4,105,162,136, 20, 69, 80,154,226,139, 82, 34, 34,200, 43,136,212,132, 22, 66, 8, 36,164,151,203,165,151, 75,114, +109,231,253, 35,185, 24, 98,202, 93,130, 10, 56,223,207,103, 63,119, 55,187,251,220,236,236,222,238,115, 83,126, 3, 95, 95, 95, +248,249,249,161,172,172, 12,133,133,133,232,216,177, 35,122,245,234,133,178,178, 50, 28, 60,120,208, 84, 88, 88,104,215,128, 21, +139,177,236,171, 35,145,123,139, 92, 85, 18,248,186,107,208,218,199, 5,165,133,185,208,103,103,162,123,136, 31, 6,116,111,141, +220, 34, 35, 14, 31,220, 91, 80, 82, 98,248,202,174, 86,128, 74,195,214,163, 63, 29, 40,114, 86,137, 16, 24, 20,134,241, 83, 94, +233,218,181, 91,207, 35, 61,122,244, 61,188,114,249, 7,157, 31,233, 29, 66,210,115, 43,112,232,224,247, 5, 69,197,197, 91,255, +137,123,253, 59, 0,191, 66,211,225,196,250,125,209, 95,132, 14,155,250, 69, 92, 58,214, 2,128,153,207, 15, 30, 49,124, 56,210, +211,211,177,119,207,158, 44, 3,112,217, 94, 61,153, 76,198, 3,128,162,162, 34, 72,170,102, 11,129, 5, 8,138,136,136,128, 62, + 55, 23, 59,119,236,208, 31, 2, 46, 56,146,207, 71, 1,177, 92, 86, 85, 33, 88, 84, 84, 4, 2, 20, 3, 0, 17, 96, 68,143,142, +237,161,207, 47,198,255,206,197,149,182, 46,199,203,141,233,220,171, 29,225, 27,235,163,213, 84,125,104,238,220,185,115, 33,145, + 72,224,229,229, 85, 99,142,108,102, 69, 44, 22,195,203,203, 11, 22,139, 5,187,119,239, 6,128, 70,251, 48,240,128,202, 81, 47, + 45,227, 42,205,212, 32, 20, 10,239,136,102,117,205, 65,229, 19,243,191,228,126, 58, 85,255,160,152,230,104,222, 3,244,168,142, +137,213,131, 82, 90,144,156,156,156, 62,246,137, 81, 69, 41, 9, 87,179,203, 10, 51,179,138,243,210,178,210,110,197,100,191,177, + 96,110, 81,122,122,122, 90,117, 44,173, 30,153,153,153,163, 0,216,219,215, 96,238,216,177, 99, 55, 76,157, 58,149, 94,186,116, + 9, 0, 16, 29, 29,141,231,158,123,142, 78,156, 56,113, 45,128,133,205,200,119, 89,121,121,249,109,181, 33, 38, 43, 87,211,228, + 87, 92, 92,140,204,204, 76, 24,141, 70,187, 29,241,141,195,171,226,243,147,163,204, 97,254, 10,132,249, 43, 16,220, 74, 14, 98, + 41,173, 49, 89,122,189, 30, 58,157, 14, 0, 42, 28,200,103,113,101,101,229,109,249,172,221, 52, 89, 92, 92,140,236,236,108, 88, +173, 86, 99, 3, 63, 58, 46, 35, 35,227,240, 55,223,124, 83, 2, 0, 43, 87,174,204, 39,132,252, 66, 8,217, 80,207,178, 81, 32, + 16,252,110,219,118,213,170, 85,249, 0,126,252, 27, 77,214, 99,157, 58,117, 42, 88,180,104,209,167,179,103,207,198,198,141, 27, +145,149,149,181,144, 82,106,177, 29, 75,110,110,238,252,245,235,215, 99,242,228,201,120,251,237,183, 87,117,235,214,173,152, 16, +210, 96,255, 10,173, 86,235, 43, 16, 8,112,225,194,133, 98, 74,105, 98, 19, 55,168,236, 11, 23, 46,232, 8, 33,240,242,242,106, +219,216,182, 46, 46, 46,237, 84, 42, 21, 50, 50, 50,128,234,127,204,245,144,156,153,153, 73,197, 98, 49,188,189,189,219, 55,117, +252,206,206,206,243,191,248,226, 11,193,213,171, 87,241,200, 35,143,164, 31, 63,126,124, 48,165,244,215,234,188, 93,136,142,142, +238, 55,104,208,160,248, 35, 71,142,224,195, 15, 63, 36, 93,186,116,121,169, 41, 77,127,127,255,233,207, 63,255, 60,214,173, 91, +135, 77,155, 54,189, 68, 41,221, 83,231,152,119,173, 95,191,254,149, 77,155, 54, 97,202,148, 41, 8, 8, 8,104,180,175, 74, 74, + 74,202,130,129, 3, 7, 70,223,184,113,195,174, 25, 15,236,217,158, 16, 50,168,103,207,158,237,202,203,203,177,117,235,214,196, +118,237,218,157,223,179,103,207, 92, 74,105,221, 7,246, 15,123,247,238,197,132, 9, 19,208,165, 75,151,173,132,144,113,118, 60, +116, 50, 83, 82, 82,114, 47, 95,190,204,241,249,124,248,250,250, 98,196,136, 17,120,230,153,103,208,165, 75, 23,228,228,228,224, +196,137, 19, 92, 66, 66, 66,174,189,129, 75,115,227,255,119, 32, 41, 41,254,247, 11,103, 79,152, 5,124, 30,252,188, 92,240,120, +120, 87,188,240,100, 95,116, 15,246, 65, 74, 78, 57,142, 29, 59, 98, 78, 74, 74, 60,109,207,136, 67,155,102, 92,236,229, 83, 87, + 47,156,180, 8, 5, 4,193, 65, 29,176,248,141,249,206, 75,151, 44,112,234,208,214, 15,151,111, 21,225,200,207,135,204,153,233, +105,255,251,167, 70, 28, 30, 7, 68, 74, 9, 81,240,121, 60, 88,121,146, 50,126,117, 32,227,142,161,161,129, 30,158,158,136,140, +140, 4, 15,184,230,144,158,178,170, 21,188,180,180, 20, 54,189,118, 65, 65, 65,126,254,254,248, 49, 50, 18,124,142,187, 54,192, +193, 0,163,215, 1,121,109, 93, 2, 84,188,220, 10,170,118,173,220,131,156, 53, 10,156,189,124, 19,149,102,122,110, 71, 1, 12, +184, 15,169,219,108,232, 72,211,225,202,141, 27, 55,246,248,226,139, 47, 6,207,157, 59, 87, 57,105,210, 36, 72,165, 82, 24, 12, + 6,248,250,250,194,106,181,226,167,159,126, 66, 84, 84, 84, 41,199,113, 71, 80, 39,108, 0, 33, 36,188,118,172,141,159, 18,168, +172, 42, 8,166,161,199,190,167,158,186, 35,154, 0,160,188,201,169,243, 90, 27,183,127,178,231,228,152,157,135, 47,144, 87,199, + 13,224,117, 15,106, 5, 0,240,240,240,128, 90,173,118, 88,243, 14, 20,250, 95,174, 89,187, 89, 55, 43, 43,235, 58, 33, 36,103, +234,212,169,193,182,142,239, 18,137,164, 34, 45, 45, 45,206, 22,176,180,238, 62, 77,229,179,122,100,220,203,132,144,253, 69, 69, + 69,135, 95,127,253,117, 44, 93,186, 20, 7, 14, 28,232, 71, 41,253,189, 57,199, 78, 41,181, 6, 4, 4, 20,158, 59,119,206,163, +125, 72, 55,180,113, 23,162,255, 91, 55, 64, 41,133,171,156,162,164, 48, 31, 23, 47, 94, 64, 73, 73,201, 89, 71,242,233,237,237, + 93,152,147,147,227,230,238,238,142,252,252,124,228,230,230,214,152,172,130,130, 2,228,231,231, 83, 66,110,143,217,210,132,102, + 89,187,118,237, 12,113,113,113, 98,143, 86,237,209,214, 93,132,158,111, 92, 7, 40,133,159, 11, 15, 37,197,133, 56,125,250, 52, +138,138,138,126,109, 72,147,227,184,215,198,143, 31,207, 7, 48,241,245,215, 95,119, 1,208,101,254,252,249, 71,234,142, 44, 20, + 10,133, 31,109,223,190,189,163,173,137,113,193,130, 5,107, 40,165, 95,252, 93,215,146,171,171,235,107,145,145,145, 42,147,201, +132, 79, 62,249, 4,107,214,172,217, 66, 41,253,111,157,242,136,228,243,249,235,121, 60,222,140,153, 51,103,226,197, 23, 95,148, + 63,240,192, 3,115,107,213,122,221,166,153,145,145,177,184,123,247,238,111,231,228,228,216,213,177,255,198,141, 27,211,186,119, +239,190, 56, 39, 39,103, 69, 99,231, 72,161, 80, 40,172, 86, 43,146,146,146, 10, 40,165, 69, 13,156,187,138, 14, 29, 58,100, 88, +173, 86, 95,185, 92,238,210,212,245, 89, 80, 80,240,193, 3, 15, 60,240, 31,157, 78,247, 51,128,247,235,134, 42,161,148, 94, 34, +132,132,205,158, 61,123,214,242,229,203,199,100,103,103,239,110, 74, 51, 37, 37,229,131, 65,131, 6,189, 21, 31, 31,191,173,161, + 38, 96, 74,233,167,132, 16,211,246,237,219, 95, 74, 74, 74, 90,214,152, 38,165,244, 32, 26,105, 74,175, 71,187,222,237,107,107, +242,249,252,249,203,151, 47,231,109,220,184, 17,148,210, 85, 22,139,165,161,124, 94,230,243,249, 95,245,237,219,119,210,158, 61, +123,164, 97, 97, 97, 47, 2,216,213,212,245, 89, 89, 89,121,230,212,169, 83,189,146,147,147,221, 6, 13, 26, 36,178,253, 65, 41, + 44, 44,196,193,131, 7, 77, 9, 9, 9,185,101,101,101,103, 28,185,135, 88,140,197,227, 78, 29,219,183, 43,249, 70, 76,239,129, +195, 70, 59, 27, 77,190,144,228,241, 81,152,151,141,159, 14,238, 45, 72, 74, 74, 60,109, 48, 20,142,115, 68,211, 84, 89,244,204, +233,255,237,223,157,158, 20,215,171,255,160, 17,206, 21, 70,127, 72, 68, 60,228,233, 50,240, 83,228,190,252,164,164, 91,191, 85, +152, 43,159,251,167,238,243,252, 0,188,207,207,142,154, 58,253,209,174,144, 57,251, 94, 20, 2,159,244, 5,100,110, 30, 30,162, +234,223, 14,148, 64,138,189,154, 58, 64,220,190,186,149,202, 96, 48, 64, 8, 24, 39, 3, 66,173, 86, 43, 3,128,248,248,120,200, +129, 84, 71,243, 89, 10, 40,228,181,116,121,128, 33, 79, 0,159,118,106, 5, 1,128,244,236, 60, 24,205,248, 29,247, 41,182, 26, +173,250, 58,197, 55, 21,124,145, 3,112,134, 16,114, 97,197,138, 21,253, 55,108,216, 48, 96,206,156, 57,226,225,195,135,227,252, +249,243, 56,122,244,168,177,178,178,242, 56,128, 19,182,225,234,118,100,230,142,107,238,169,218,110,108, 15, 31,226, 98,226,202, +191, 95,188,225,208, 67,173, 61,157,168,197,202,145,152,152, 24,156, 58,117,202, 97,205,123,228,196, 2, 64, 15, 66,200,190,234, +164,115,117, 67, 56, 84, 55, 23,246,168, 85, 11,214,156,175,186, 40, 16, 8,104, 80, 80, 16,169,158,158, 38,182, 37,249,206,206, +206,126,118,193,130, 5, 63,127,251,221,247,130,189, 51,101, 40, 42, 44,170,186, 1, 23, 21, 34, 79,151,137, 99,199,142,153,244, +122,253,139,142,104,234,245,250,151,199,141, 27,247,237,174, 93,187, 92, 10, 10, 10,106,140, 86, 65, 65, 1, 56,142,195,150, 45, + 91,244, 58,157,238, 77, 71, 52,179,178,178,166,188,254,250,235,223,237,220,253,157,224,200, 66,103,148,218,162,207,151, 21, 33, + 47, 39, 11, 7, 14, 28,168,204,205,205,157,221,200,249,177, 18, 66, 94, 29, 63,126, 60,108,102,235,244,233,211,175, 16, 66, 62, +181, 61,204, 9, 33,109, 94,123,237,181,113,181,250,113,173,249,187, 71, 29,230,229,229, 45,237,213,171,215, 26,189, 94,127,203, +100, 50,237,161,148,214, 27,165,223,106,181,206, 36,132,156,250,244,211, 79,159,113,115,115,243,200,206,206, 94,238,232,131,190, +165,219,167,166,166, 46,234,222,189,251, 27, 57, 57, 57,203, 27,219,238,230,205,155, 51,170,183, 91, 97,199,119, 71, 2,136,108, + 98, 27, 11,170, 66, 91,124,100,231,241,236, 3,176,207,206,155,243,230,127,226,254, 97,181, 90, 87,118,234,212, 73,106,177, 88, +142, 52,213, 31,144,227,184,105,115,230,204, 73,159, 55,111, 94, 87,171,213,106,111, 25,152, 1,252, 70, 8,241,206,205,205, 13, + 0,224, 4, 0, 2,129,160,176,176,176,176, 89, 83,240, 84, 71,124, 31,233, 22, 56,248,209, 61,219,214, 77,166,156,181, 11, 33, + 4,124, 30,255, 82, 73,169, 97,171,189, 53, 89,245,104, 70,184, 5, 14,126, 84,151,145,242, 60,229,172, 93, 0,194, 9, 4,188, +203, 37,165,134,207,245,113, 71,254,177, 41,120, 38,249,192,131, 79, 48,243,231, 47,223, 34, 0, 48,248,249,247,186,182,118,130, +210, 82,136, 66, 84,223,203,179,178,178,224, 12, 20,216,171, 41, 7, 44,166,234, 62,209, 5,249,249,144, 3,229, 89, 0,191,186, +223, 37,209,101,103, 67,233,128, 94,205, 31, 70,192, 84, 71,183, 8,128,196,214,157, 51,191,184, 12,176, 63,174,225, 61, 89,163, + 85,247,125,141,225,162,148,218,189,160,106,126,189,199, 1, 44,171,126, 85, 52,177,125,248, 63,161,217,203, 11,129,225,237, 72, +220,136, 32, 65, 62,128, 39,239,132,166,163,203, 95,173, 9, 96,155,209,104,164, 21, 21, 21,212, 96, 48,208,210,210, 82, 10, 96, + 95, 61,251,236,203,204,204,164,233,233,233, 52, 53, 53,149, 38, 39, 39, 83, 0, 59, 28,205,167, 90,173,254,226,169,167,158,178, + 10,133,194,117,119,226,216, 93, 92, 92,150,245,236,217,211,244,241,199, 31,211, 31,126,248,129,126,254,249,231,116,230,204,153, +180, 99,199,142,149, 78, 78, 78,227,154,163,233,233,233,185, 56, 40, 40, 40,111,203,150, 45,116,199,142, 29,116,237,218,181,244, +205, 55,223,180,250,250,250,102,171, 84,170,161,205,209,116,119,119,223,252,208, 67, 15,153, 54,111,222, 76,143, 28, 57, 66,119, +238,220, 73, 95,123,237, 53, 26, 28, 28, 92,169, 80, 40,158,176, 71, 19, 0, 95, 32, 16,172,158, 62,125,122,182,183,183,119,100, +157,117,242,208,208,208,243,227,199,143,207, 4,176,224,126,185, 62,153, 38,211,100,154, 45,215,156,232, 3,239,193,109, 96,161, + 39,222,162,244,196, 91, 52,188, 13,184,103,189,225, 67, 1,190, 92, 36,122,102, 64,191,126,171, 68,192, 51, 20,224,215,187,212, +151, 79,128, 47,229,243,159,236,219,179,231, 42, 17, 48,206,182,173,148,207,127,114, 64,191,126,171,132,124,254,132, 6,245, 26, +209,164, 0, 95, 36, 16, 44,232,219,187,247,106, 1,240,134, 45,237,225, 54,228,218,107,195, 90,209,126,254,228,230, 4,119,200, + 27,211,108,160, 60,166,221,233, 50,254,187,151,101,131, 74,187, 0, 0, 32, 0, 73, 68, 65, 84,230, 94, 8,130, 59,125, 17,222, + 43,154,119,145,209,106, 95,221,108,179,175,214,178,168,158,125, 22,213,217,102, 27,128,246,205, 44, 79,217,157, 60,118, 0,157, +220,220,220, 14,181,111,223, 94,223,186,117,235, 76,103,103,231, 93, 0,124, 91,168, 25,230,233,233,249,181,135,135,199, 13, 47, + 47,175,203,110,110,110, 31, 1,208,182, 68, 83, 40, 20,246,244,240,240,248, 53, 32, 32,160,208,223,223, 95,231,230,230,182, 27, +128,135,163,154, 0,188, 80,207, 77, 5,128, 8,128, 23,123,232, 48, 77,166,201, 52,235, 26,152, 33,109,177,124,112, 27, 88, 6, +183,129,117, 72, 0, 62,170,109, 80, 70, 2,178,230,154,162,231, 0, 73,221,237,155,212,107, 66,147, 2,252, 62,128,178,238, 62, + 35,124, 17,106,143,230,189,108,180,108,249,172,190,207, 79,171,157,111, 65,115,170,200,108,157,100,239,112, 51,216, 61,161,121, + 23, 53, 27,222, 4,154, 14,246, 86, 59,130,252, 29,248,206,242, 59,124, 12, 87, 0, 12,191,195,154, 87, 1, 76,188,147,154, 38, +147,233, 44,236,156,247,173,137,188,101, 53,210, 23, 46, 11, 12, 6,131,113,251,205,193,122, 24, 88, 56, 56,144,124, 34,176,130, +119, 40,145,102,212, 94,125,224,143,192,199, 14,105, 2,192,214,122,166,231,105,150, 94, 45, 77, 0,248, 29,248,211,236, 14,145, + 45,236,110,114,143, 61,155,179, 0,108,118, 40,142, 22,131,193, 96, 48, 24,140,127,142, 35,241,148,253, 17,187,251,137,172, 51, +199, 97, 77,191, 79, 2, 32,188, 1, 87,102,247, 72, 10, 66, 72,120, 51, 92,223, 81,166,201, 52,153, 38,211,100,154, 76,147,105, +254,187, 52,107,105, 55, 52,176,226,122, 29,189,127,100,192,200,157,130,216, 63,109, 89, 51,196,239,209,176, 9, 76,147,105, 50, + 77,166,201, 52,153, 38,211,252,123, 53,239,105, 51,117,123,109,214,109, 6,145, 53, 29, 50, 24, 12, 6,131,193, 96,180,128,198, +106,221,152,209, 98, 48, 24, 12, 6,131,193,104, 1,132, 16, 47, 84, 77, 81, 21, 89,253,202,106,180, 24, 12, 6,131,193, 96, 48, +238, 16, 17,148,210,205,245, 69,134,231,177,178, 97, 48, 24, 12, 6,131,193,104, 25,182,126, 90,142,206,117,200, 96, 48, 24, 12, + 6,131,193,104,132,198,250,104,221, 54,234, 48, 50, 50,146, 70, 68, 68, 16, 86,100, 12, 6,131,193, 96, 48,254, 9,238, 69, 47, + 82,171, 6, 43,178,110,112,106, 86,163,197, 96, 48, 24, 12, 6,131,209, 2,108, 53, 90,213,205,134,183,165, 49,163,197, 96, 48, + 24, 12, 6,131,209, 2, 26,171,209,226, 1, 85,213,116,172,152, 24, 12, 6,131,193, 96,252, 83,220,203, 94,132, 82,186,185,122, +249,211,116, 73,182, 81,135, 3,171, 15,112, 32, 59,213, 12, 6,131,193, 96, 48,254, 1,238, 89, 47, 66, 8,241,170,110, 54,244, +250,211,186,191,114, 10, 30, 6,131,193, 96, 48, 24,140,251, 29, 91,252,172,250,226,104, 49,163,197, 96, 48, 24, 12, 6,131,209, + 66,163, 85, 55,173,166,131, 60, 51, 90, 12, 6,131,193, 96, 48, 24,127, 13,127,105,100,120, 66, 72, 56,211,100,154, 76,147,105, + 50, 77,166,201, 52,153,230,253,142, 45, 34,124,221,218, 45, 22,222,129,193, 96, 48, 24, 12, 6,163,133, 38,171,118,223,172,218, +159,217, 92,135, 12, 6,131,193, 96, 48, 24,127, 17,172, 70,139,193, 96, 48, 24, 12, 6,163, 5,216, 70, 28,214,254,204,140, 22, +131,193, 96, 48, 24, 12,198, 29, 52, 91,245,165,179,166, 67, 6,131,193, 96, 48, 24,140, 22, 80,183, 3,124,237,207, 4, 64,120, + 3,206,236,168, 3, 95,224,240,232,131,166,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,255,105, 54,165,237,136,255,184, +155,140, 86, 67,157,225, 65, 41,253,203, 22, 0,225, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,247,243, 2,192, 11,192, +180, 90,139,151,109, 29,235,163,197, 96,220,235,124, 71,248, 40, 8, 10, 0,165,222,224,139,179,144,117, 37, 17, 75, 40,215, 98, + 77, 93,168, 63,100,102, 15, 88,164,122,232, 46,223,106,177, 38,131,193, 96,220,167, 84, 79, 38, 93,111, 31, 45,102,180, 24,140, +123, 29,125,112, 32, 4, 88, 6, 30,188, 64, 77, 9,208,134, 46, 3, 16,211, 98, 77, 17,247, 62,172, 60, 95, 80, 83, 60,220,131, +150, 3,136,101,133,205, 96, 48, 24,142,241,183,119,134, 23, 10,133, 58, 66, 8, 39,145, 72,246,214, 55,203, 53,131,113,167, 32, +132,120,201,100,178,189,132, 16, 78, 36, 18,233,238,203,131,220,222, 73, 14,158,117,184,209,204,249,252,116,165,208,221, 80,105, + 13, 4,207, 50, 2, 95, 6, 42, 91,164, 41, 32, 67, 42, 76,156,223,142,115, 6,143, 50,163, 37, 4, 20, 45,211,252,227,156, 56, +137,197,226,159, 8, 33,110,236, 10,189, 63, 9, 37,228,129, 7,133,194,121, 33,132, 60, 76, 8, 33,172, 68, 24,204,104,253,205, + 88, 44, 22,247,180,180, 52,242,249,231,159,143, 82,171,213, 9, 66,161,112, 17, 33, 68,244,111, 41,112,149, 74,117, 74,163,209, +232,156,156,156,116, 26,141,230, 66, 83,233,247,169, 1, 10,116,119,119, 79,113,117,117,141,175,157,238,222,101, 76,159, 14, 15, + 77, 90,226, 22,246,216,128, 22,234,139,132, 66,225, 34,141, 70,147,176,121,243,230, 81,113,113,113,196,108, 54,187,223,151,133, + 89,193,121,128,199, 31,116, 53,203, 32,207, 42, 54,123, 68, 39, 27, 84, 0,127, 32,140,104,254,159,152, 34,206, 3,160, 15, 95, + 74, 47, 87,156,202,215,122,252,150, 88,169, 6,143, 55, 8, 21,196,179,197, 55, 28, 30,239, 37,142,227, 6,139, 68,162, 87,217, +237,247,254, 68,204,227,245, 61, 53,106,212,251, 11, 58,119,158, 21, 12, 60, 90,159,217, 34, 85,188, 18, 18, 18,114,136, 16,242, +204, 29,188,183,124, 24, 28, 28,156, 65, 8,153,205,206, 4,227,111,126,174,117,179,253,193,175,158,134,199,203, 97,163,245, 84, + 27,210,247,217,182,228,248,211,109, 72,201, 51,109, 73,233,196,182,228,228,147,109,200,195,205,201,144,175,175, 47,250,244,233, +195, 79, 77, 77,149,205,158, 61,123,137, 68, 34, 73, 34,132, 12,109,142,150, 92, 46,143, 82, 40, 20,105, 66,161,240,182,188, 40, + 20,138, 40,165, 82,153, 38, 20, 10, 31,169,157,174, 86,171, 79,105, 52, 26,157, 90,173,190,208,128, 17,138,210,104, 52, 58,149, + 74, 21, 85, 59, 93, 40, 20, 62,162, 82,169,210,213,106,117,221,244,135,213,106,117, 90,221,244,134, 16, 10,133,190,105,105,105, +238,233,233,233,238, 98,177,216,163,118,122,106,106,170,123, 90, 90,218,109,233,142, 32, 20, 10, 31, 86, 42,149,105, 10,133, 34, +170,190,244,186,199,212, 16,181,202,238, 97,123,210, 29, 53, 89, 67,134, 12, 57,153,149,149,229,231,228,228,228, 84,123,157,139, +198,105,232,215, 91,214,207, 29, 61, 98,200, 75,238,161,143,119,106,166,254, 80,137, 68,146, 52,103,206,156, 37,233,233,233,178, +158, 61,123,242, 69,162,251,212,199,127, 23, 42, 2,225,250,115,148,106,175,101, 84,104, 35, 70, 61, 37,184,152, 86,174, 53, 91, +173, 46, 0,127, 32,182,181,150, 52, 75, 83, 96,238,199, 81,234,241, 75,178, 80, 59,104,236, 44,254,177,100,129,214,108,181,186, +130,135, 1,205,210,252,227,220, 8,249,124,254,220,213,171, 87,243, 0,204, 36,132,136,255, 77, 55,226,158, 62,196,231,145,246, +130,115,221,189, 73,223, 59,120,115, 15, 83, 40, 20, 81,132,144,192,187,229, 56,141, 28,119,125,247,173, 91,135, 39,180,107, 55, +114, 65,231,206,147,235,154,173,234,247, 11,150, 47, 95, 62,241,234,213,171,218, 54,109,218,188, 72, 8,225,221,129,178, 88,187, +124,249,242,249, 87,175, 94,245, 14, 8, 8,120,231, 78,104, 50,238, 46, 15, 15, 96, 16,128, 8, 0,143, 0,232, 81,253,254,193, +234, 37, 2, 85, 81, 20,106,191, 62, 88,189,175,109,125,207, 6, 52, 34,234,217,239,193, 90,233,181, 63,215,125,111,163, 91,245, +107, 68,245,104,195,136,154, 53,148, 82, 28, 60,120,144,214,126,173,187, 60, 29,128,255,204,234,227, 99,184,118, 96, 39, 45, 77, +187, 69, 11,226, 46,210,139,155, 63,160,179, 30,212, 26,158,109,131, 15, 29,236,153, 79, 41,165,116,199,142, 29,244,216,177, 99, +180,176,176,144,198,198,198,210, 30, 61,122,148,203,229,242, 95, 0, 4, 56,162,167, 82,169,116,191,252,242, 11, 29, 50,100, 72, +145, 82,169, 92, 5,128, 71, 41,133, 90,173,214,253,254,251,239,116,200,144, 33, 69, 42,149,106, 45, 0, 62,165, 20, 79, 60,241, + 68, 14,165,148,106,181,218,204,250,244, 70,143, 30, 93, 64, 41,165, 26,141, 70, 87,157, 95,190, 74,165, 90, 59, 99,198,140,210, +243,231,207, 83,103,103,103, 91, 58, 79,173, 86,175,154, 57,115,102,105,116,116,116, 77,122, 83,139,139,139, 75,154,213,106,165, + 7, 14, 28,160,238,238,238, 53,121,112,118,118, 78,179, 90,173,116,223,190,125, 13,230,173,145, 50,229, 41,149,202,149, 19, 38, + 76, 40, 73, 78, 78,166,174,174,174,186, 90,233,171, 38, 77,154, 84,146,154,154, 74,221,220,220,236,202,163,171,171,171,238,212, +169, 83,116,204,152, 49,197,181,203,212,213,213, 85,119,250,244,105, 91,250, 74, 91,122, 99,139,183,183,247,139,238,238,238,153, +238,238,238,153, 78, 78, 78, 75,189,188,188,178,245,122, 61,165,148,210,182,109,219,230, 80, 74,161,237,252,120,159,246,125, 39, + 46,113, 15, 27, 53,103,227,158,211,103, 79,196,228,233, 59, 15,126,105,165,166,243,104,141, 3,101, 16, 32,149, 74,127,233,223, +191,127,121,114,114, 50, 45, 45, 45,165, 81, 81, 81,244,183,223,126,163,215,174, 93,163,213,215,221,253, 53,210,101,125,168, 47, +221, 20,180, 59,246,109,191,184, 19,203,135,153,105,242, 49,186,115,178,214,124,124,142, 79, 2,221, 16,252, 95,186, 41,164, 85, +179, 52, 55,132,236,188,252,166,223,245,117,239,188, 98, 78, 73, 73,161,243, 38, 13,179,252, 60,203, 39,145,110, 12,222,211, 44, +205, 63,206,209,184,199, 31,127,188, 52, 53, 53,149,134,134,134,150,241,249,252, 41,255,150, 17, 73, 61,188,225, 19, 30, 40,206, +184,188, 99, 30,247,104,152, 60,175,155, 23,250,222,129, 81, 78, 97,238,238,238,185,219,182,109,163, 42,149, 42, 7, 64,224, 93, + 50,250,138, 4, 3,163,190,234,220,121, 31,247,228,147,214,175, 58,119,222, 23, 12,140, 66, 85, 56, 33, 2, 96,225,138, 21, 43, +162,205,102,115,244,214,173, 91,163, 71,141, 26, 21, 13, 96, 94, 11,191,243,227, 15, 63,252,144,154,205,102,186,117,235, 86, 58, +106,212, 40, 10,224, 19,123,247, 87, 42,149,237, 59,117,234,180, 61, 52, 52, 52,181, 75,151, 46,198,144,144,144,138,192,192,192, +228,176,176,176,109, 18,137, 36,128,141,170,251,123,150, 38,188, 72,143,133, 11, 23, 46, 2, 64, 23, 46, 92,184,136, 82, 26, 81, +125, 95,143,168,253,190,238, 43,165, 52,188,246,231,250, 52,108, 75,125,154,245,125, 71,157,247,117, 71, 29,122, 85,127,158, 86, +179,206,118, 80, 7, 15, 30, 28,112,240,224,193,227,117, 15,238,169, 54,232, 51,171,143, 79,121,185, 62,139,198,124,240, 42,253, +223, 32, 95,250,251, 64, 79, 26, 63,247,113,154,181, 99, 45,125,185,171,179,225,201, 54, 24,228,168,209,218,187,119, 47,221,183, +111, 31,253,241,199, 31,105, 76, 76, 12,205,203,203,163, 59,118,236,176,186,186,186,150, 75, 36,146,229, 0,100,246,232,169,213, +106, 29,165,148, 86, 86, 86,210,165, 75,151, 86,168, 84,170, 11, 0, 60,170,141, 18, 45, 44, 44,164,203,151, 47,175,208,104, 52, +151, 1,120,187,185,185,165,221,186,117,139,122,120,120,212,107,102,156,157,157,117,215,175, 95,167,206,206,206, 58, 0, 62,206, +206,206, 49,251,247,239, 55, 81, 74,105,122,122, 58,117,113,113,209, 1,240,112,117,117,189,120,240,224, 65, 19,165,148,102,102, +102, 82, 23, 23, 23,187,141, 86,121,121, 57,253,249,231,159,111,203,131, 45,253,208,161, 67,183, 25, 48, 59,202,211, 67,163,209, + 68,127,243,205, 55, 70,171,213, 74, 99, 98, 98,168, 70,163,209, 1,240,112,114,114,186,176,103,207, 30,163,213,106,165,113,113, +113,118,155,193,214,173, 91,231, 80, 74,169,197, 98,161, 27, 55,110,172,180,149,169, 45,221,104, 52,210,207, 62,251,172, 82,173, + 86, 71, 3,240,104, 76,203,205,205, 45,211,104, 52,210,194,194, 66,218,179,103,207,210,223,127,255,157, 22, 23, 23, 83, 74, 41, +173,214, 67,208,128, 41,239,157,189, 81, 90,252,252,252,245,223, 6,244,120,246,131,195,231, 50,210,191,248, 33, 42,218, 45,108, +244, 48, 59,142, 95, 38, 18,137,150,123,121,121, 85, 28, 59,118,204,106, 52, 26,233,205,155, 55,233,169, 83,167,232,153, 51,103, +104, 84, 84, 20,141,137,137,185,255,140,214, 30,240,233,166,160,209,116, 83, 80,244,182, 9,110,185, 37, 23,118, 81,122,100, 54, + 77,124,175, 13,125,123,152,170,132,219, 20, 20, 77, 55, 5, 63, 73,255, 51, 64,224,144,230,230,144, 71,233,166,160,232, 15,159, +242,207,187, 24,125,158, 30, 63,126,156,126,182,118, 5,157, 21,238, 83,198,109, 10,138,166, 27, 66,198, 56,164, 89,107,145, 72, + 36, 55, 78,158, 60, 73, 79,156, 56, 65,223,121,231, 29, 42,151,203, 83, 91, 94, 14, 33, 34,186, 33,208,159,126, 30, 56,128,110, +233,224, 69,127,109, 94,222,254,106,147, 53, 56, 80,156,158,123,241, 7, 74,243,111,210,236, 85,161,116, 88,144,176, 69,102,171, +218,100,233,147,147,147,105,118,118, 54, 93,179,102, 13, 85,171,213,119,181,217, 10, 2, 70, 3, 88,180,114,229,202, 26,147,181, +126,253,250,232, 43, 87,174, 68,251,249,249,253,216,130,239,250,100,229,202,149, 53, 38,107,253,250,245,244,202,149, 43,212,223, +223, 63,173,169,125, 39, 76,152, 32,239,211,167, 79,244,248,241,227, 13,219,182,109,163,201,201,201,244,242,229,203,116,229,202, +149,116,201,146, 37,244,203, 47,191,164, 99,198,140, 41,235,217,179,231,217, 39,159,124, 82,234, 96,222, 4,148, 82,113,245, 34, +164,148,218,140,166, 0,128,208,246,231,159, 45,183, 27,173,134,188, 72, 67,102,170, 33,131, 85,119, 93, 35, 70,172, 81,195,214, +212,247,213, 53, 85,245, 45,181,171, 86,127,141,136,136,248, 83,223, 24, 1,197,187,211, 94,123, 79,154,180,109, 13,116,223,124, + 10,126,161, 14,194,146, 60, 84,158,140,132,249,228,126, 76,236,221, 91, 38, 35,228,125, 71,235, 0,165, 82, 41,100, 50, 25, 36, + 18, 9, 10, 11, 11,145,152,152,136, 62,125,250,240,162,162,162,164,211,166, 77,155, 45,147,201, 82, 9, 33,143,217, 81, 93, 12, + 0, 56,117,234, 20,166, 78,157, 42,217,190,125,123, 23,173, 86,123,201,106,181,138, 1, 32, 46, 46, 14, 79, 63,253,180,100,215, +174, 93, 29,189,189,189, 47,152, 76, 38,185, 68, 34, 1,159,207,111, 80, 79, 44, 22,195,108, 54, 75, 58,116,232,112,249,210,165, + 75, 97, 35, 71,142, 20,166,164,164,224,214,173, 91, 48,155,205,226,192,192,192, 43, 23, 46, 92,232, 18, 17, 17, 33, 76, 75, 75, + 67, 74, 74, 10,236,237,243, 73, 8,129,209,104,132, 68, 34, 1,143,199,187, 45,189,178,178, 18, 98,177,216,110, 45,161, 80,248, +112,112,112,240,149, 75,151, 46,117, 27, 61,122,180,232,252,249,243, 72, 79, 79,135,213,106, 21,135,132,132, 92,185,116,233, 82, +215, 81,163, 70,137, 46, 95,190, 12,157, 78,119,219,247, 53,209,143, 6, 0,112,233,210, 37,140, 31, 63, 94,252,211, 79, 63,117, +245,242,242,186,108,177, 88,196, 0,112,229,202, 21, 60,253,244,211,226,195,135, 15,119,107,213,170,213,229, 38,154, 18,249, 0, + 96, 54,155,241,226,139, 47, 42,212,106, 53,210,210,210,192,113, 28,172, 86, 43, 0, 32,175, 32,239,202,165, 43, 49,113, 19,199, + 61, 53,160,220, 84, 89,121,250, 92,212,181,182,173,253,125, 9,161,173,155, 40,203,199,228,114,121,234,135, 31,126, 56, 39, 41, + 41, 73, 18, 20, 20,196,187,124,249, 50, 10, 11, 11, 33, 22,139, 33,149, 74, 33,145, 72, 32, 20, 10,239,191, 74,244,226, 80, 87, +112, 24,156,162, 55, 74, 36, 78,190, 42,165, 87, 32,144,122, 2,109,180, 18,240,121,124,233,249, 91, 6, 5, 64, 7,195, 47,215, +213, 49, 77,110,240,173, 28,163,196,236,210, 81,233,237,235,135,188,188, 60,180,106, 27,140, 10,177, 86,124,234,102,153, 18,196, + 65,205, 63,206, 85,191, 14, 29, 58,120,182,111,223, 30,185,185,185,232,214,173, 27,156,157,157,157, 9, 33,131,155, 93, 6,219, + 90, 75, 80,140,190, 0,111, 21,172,228, 29,152, 5,203,112, 83,223, 13,155,187,223, 53, 39,188,167, 15,241, 81, 43,197,103,118, +237,254,198,199,213, 47, 4,136,124, 30, 30, 78, 18,108,121,169,155,139, 86, 35,217,215,156,102, 68, 66, 72,152,135,135,199,177, +179,103,207,186, 73,165, 82, 92,184,112, 1,161,161,161, 88,179,102,141,214,217,217,249,196,221,208,140, 72, 41,165,113,192,129, + 15, 47, 95,222,186, 61, 33,225,224,132,118,237, 70,142, 15, 12, 92, 58,253,153,103,166,188,242,202, 43, 88,177, 98, 5,246,237, +219,135,190,125,251, 98,218,180,105,230,212,212,212,175,154,217, 92,248,233,170, 85,171,102,205,158, 61,187,174,166, 41, 37, 37, +229,195,198,246, 13, 11, 11,243,189,113,227, 70,198,220,185,115,187,109,223,190, 93, 38,151,203, 81, 88, 88,136,207, 63,255, 28, +139, 22, 45, 2, 33, 4,148, 82,124,249,229,151,242,201,147, 39,247, 72, 72, 72,200,104,221,186,181, 61,221, 58, 8, 0, 41, 0, +121,245,162, 0, 32,223,181,107,151,102,244,232,209,234,234, 52, 25, 0, 25, 33, 68, 2, 70, 93,234,245, 34,181,206,249,193, 58, +215,218,200,186,105,117,215, 81, 74, 71, 54,166,225,224,181, 93,223,247, 69,214,141, 12,127,219, 51,181,214,251,129,145,145,145, +199,255, 36, 10,116,246, 12, 8, 66,209,145, 61,144, 9, 8,100,252,234, 69, 64,192, 75,188,130, 86, 82, 33,204,148,134, 53,199, +104,217,204,150, 76, 38,131, 72, 36, 66,105,105, 41,204,102, 51,222,120,227, 13,201,145, 35, 71, 92,121, 60,222,127,155,210,169, +109,152,226,227,227, 17, 18, 18, 66, 14, 28, 56,224, 49,115,230, 76, 25, 0,136,197, 98, 20, 21, 21,161,125,251,246,228,208,161, + 67,238,111,190,249,166,178, 49, 51, 67, 8,129, 72, 36,194,236,217,179,101,231,206,157,115,241,246,246, 70, 98, 98, 34,242,243, +243,161, 84, 42, 49,123,246,108,217,217,179,103,181,222,222,222, 72, 78, 78, 70, 81, 81, 17,148, 74,165,195, 70, 75, 36, 18,221, +182, 15, 33, 4, 38,147, 9, 98,177,216,110, 67,164,209,104,118, 70, 71, 71,107, 53, 26, 13, 46, 95,190, 12,139,197, 2,141, 70, +131, 89,179,102,201,162,163,163,181, 78, 78, 78,136,139,139,179,213,252, 57,148, 71, 0,224, 56, 14,113,113,113,104,221,186, 53, + 78,156, 56,225, 62,125,250,116,169, 45,253,230,205,155,240,245,245,197,137, 19, 39,220, 21, 10,197,206,134,180, 56,142, 67, 86, + 86, 22,174, 94,189,138,196,196, 68,232,245,122,228,230,230,162,164,164, 4, 22,139,165,170,159, 93, 73,113,228,174,111, 15, 92, +146,201,100,242,208,192, 14,126, 87, 98, 98,115,100, 50,153,220,223,207, 47,144,144,119,120,141,228,243,191, 9, 9, 9,174,147, + 39, 79, 22,221,184,113, 3,153,153,153, 16, 10,133, 53,215,150,109,145, 72,238,179,123, 25, 33, 4,196,216, 1,132,116, 59,147, + 88,230,210,111,228, 56, 17,110,253, 4,112,102,128, 39,192,192,206,190,130,125, 87,202, 60, 64,209, 25,149, 8, 6,236, 56,241, +132, 16,192,212, 30, 32, 15,252,124,195,226,218,247,241,151, 68, 25, 25, 25, 16,137, 68,144, 72, 36,232,246,240, 19,130, 93,151, +204,158, 32,232, 2, 19,130,236,210,172,133, 76, 38,123,107,201,146, 37,138,218,154, 83,166, 76, 81,104, 52,154, 37,205, 54, 89, +101,242,222,176,208,217, 87, 51, 12,173,151, 70,102,135, 36,228,148, 7,129,210,185,128,185,107, 75,205, 22, 33,100,160, 84, 42, +189, 69, 8,121,168, 69, 38, 75, 37, 62,189,123,247, 55, 62, 46,173,170, 76, 22, 44, 21,128, 80, 6, 79,173, 19,182,204, 25,228, +162,117,146, 57,100,182,170, 77,214, 47,103,206,156,113,147, 74,165,136,142,142,134, 72, 36,130, 84, 42, 69,167, 78,157,176,105, +211, 38,173,139,139,203, 93,101,182,150, 95,190,188,109,217,213,171,241, 11,195,194,130, 31, 83, 40, 92,102,140, 31,175,121,243, +205, 55, 15,238,223,191,127,107, 68, 68, 68,238,185,115,231, 62,162,148,238,113,240,252, 16, 66,200,250,213,171, 87,207,176, 25, +183, 55,223,124,243,203,253,251,247, 47,139,136,136,200, 58,119,238,220, 92, 74,233,250,198, 52, 74, 75, 75,247, 47, 94,188, 88, +243,248,227,143,219, 62,227,228,201,147,248,234,171,175,160, 80, 40,110,219,118,212,168, 81,152, 58,117,170,179,209,104,108,244, +153,228,225,225,241,200,153, 51,103, 66, 1,136, 0, 72,108, 70, 43, 38, 38,198,169,184,184,216, 73,169, 84, 58,121,121,121,169, +108,102,235,241,199, 31,119, 18, 10,133, 15,129,129,166,188, 72,109,163, 99, 79, 90,115,183,183,215,108,213,249,156,213,208, 60, +135,183, 25,173,136,136,136,227, 0,250,215,183,145, 41, 95, 7, 9,172,144,241, 9,228,252, 90,102, 11, 28, 4, 69, 57,104,206, + 0,222,186, 15, 67,153, 76, 6,169, 84, 10,161, 80, 8,179,217,140,162,162, 34,135, 76,129, 90,173,134, 82,169, 68,121,121, 57, + 44, 22, 11,164, 82,169,205,140, 64,173, 86, 67, 40, 20,214, 60,132,235,214, 38,213,173,205, 17,137, 68, 80, 40, 20,200,202,202, + 66, 74, 74, 10, 56,142,131, 82,169,132, 66,161,128, 88, 44, 70,102,102, 38, 50, 51, 51, 65, 41,133, 66,161,128, 66,161,176,219, + 28, 1,128,213,106,133, 88,252,231,126,192,102,179,217,161, 26, 45,139,197,130,107,215,174, 33, 53, 53, 21, 82,169,180,230, 88, + 37, 18, 9,110,222,188,137,236,236,108,200,229,114,168,213,106,104, 52, 26,187,117,109,199,162, 82,169, 32,147,201, 80, 80, 80, + 0,131,193, 80, 83,166,106,181, 26, 10,133, 2, 69, 69, 69,200,201,201,105,244,216,173, 86, 43, 50, 51, 51,161,215,235,145,150, +150,134,220,220,220, 26,179,197,113, 45,143,127,121,226,196, 9, 36, 38, 38,218,154,166,106,206,111,237, 87, 91,190,239, 27, 62, + 11,211,192, 44, 28,146, 91,106,150,232, 77, 34,141, 71, 88, 56,112,235, 16,192, 19, 0, 82,103,244,234,216, 6, 41, 5, 86,197, +117,157, 81, 10,130,161, 88, 31,232,108,151,166, 85, 56, 88, 95, 98,150, 36,155,180,234,144,206,221,161,211,233, 32,145, 72, 32, +145, 72,240, 64,223,112,220,202,179,202, 99, 51,202,229,160, 24, 98,151,230, 31,191,209,182, 74,165,178,247, 67, 15, 61, 68,106, +107,142, 24, 49, 2,132,144, 78,132,144, 96,135,142,127, 93, 59, 49, 76,242, 94, 16,208,217,177, 89, 6,239,125, 49, 21,129,143, + 62,246,132,203,199, 71,115, 66,174,101, 87, 6,128,154, 95, 3, 53,117,111,174,217, 34,132, 12, 80,169, 84, 7,215,173, 91, 23, + 32,149, 74, 15, 17, 66,250, 53, 71, 71, 41,227,111,124,107,198, 56, 31,103,155,201, 50, 27, 0,129, 12, 16,202, 0,129, 12,158, +238,110,120,127,234, 96, 23,185, 84,184,215, 1,195,186,107,253,250,245,218,186, 38,203,182,116,235,214, 13,111,191,253,182,214, +197,197,101,231, 63,252, 95, 96,136,147,147,211,246,240,240,240, 51,153, 42,213,212,172,238,221,197,191,104, 52, 69,143, 20, 21, +105,252, 99, 98, 76, 65,192, 21, 0,159,165,165,165, 13,179,215,100, 17, 66,158,209,104, 52,209,225,225,225, 38,149, 74,149,186, +102,205,154,151,103,206,156,137, 21, 43, 86, 96,241,226,197,159, 3,120,129, 82,250, 70, 90, 90,154,119, 83, 38, 11, 0,178,179, +179,159, 93,176, 96, 65,110,110,110, 46, 0,160, 83,167, 78, 40, 44, 44,196,188,121,243,240,234,171, 85,131, 98,187,118,237, 10, + 74, 41,116, 58, 29, 86,173, 90,165,203,206,206,126,174,137,123,123,218,158, 61,123,122,152, 76, 38,223,234,230, 65, 73, 97, 97, +161, 58, 63, 63, 95,101, 50,153, 20, 28,199, 41,156,156,156,148, 0,228, 19, 39, 78, 20,196,198,198,134, 88, 44,150, 12,230,173, +254,160, 49, 47,210, 76, 34, 91, 82,115, 85, 95,141, 88, 3,215,103,227, 53, 90, 17, 17, 17,164,246,235,109, 53, 70, 4,151, 83, +163, 78,192, 37,172,251,109,181, 89,114, 62,129, 76,173,193,173,180, 20,136, 64,174, 58,122, 16, 54, 99, 85,215,108, 21, 21, 21, +225,165,151, 94, 42, 31, 59,118,108, 30,199,113, 79,216,107, 10, 52, 26, 13, 52, 26, 13, 98, 99, 99,233,152, 49, 99,116,107,214, +172, 41,175,109,180,226,227,227,233,144, 33, 67,114,150, 44, 89, 82,218,152,209,178,213,104, 45, 95,190,188,124,224,192,129,250, +171, 87,175, 82,155,153, 82, 42,149, 88,181,106, 85,249,160, 65,131,116,231,207,159,167,182, 52, 71,106,180,120, 60, 94,141,209, +170,189, 15,143,199, 3,199,113, 14, 25,173,178,178,178,103, 35, 34, 34,116,113,113,113,212,118,156, 26,141, 6,107,214,172, 41, + 31, 60,120,176,238,234,213,171,212,150,166, 86,171,237, 54,131,182,239, 87,169, 84, 80,171,213,136,141,141,165, 67,134, 12,209, +125,242,201, 39, 21,181,211,175, 93,187, 70, 71,141, 26,165, 43, 41, 41,121,182,177, 26,173,196,196,196,154, 26,172,138,138, 10, +228,230,230, 34, 45, 45,173,166,233,176, 92,161, 30, 54,110,236,163, 93,202,203,203, 13,177,241, 55, 82, 59,117, 12,117, 47, 47, + 47, 55,164,164,166,198, 83,186,132,107,228,135,240,196,243,207, 63,159,183,104,209,162,242,226,226,226,122, 77,150,237,245,190, +130,199,121,130,208,135,126,187, 81,234, 52,248,209,167,197, 36,251, 28, 96, 42, 5, 36,206,128,196, 25, 2,133, 43,134,247,235, +202,223,118,166,216, 19,148,235, 3,145,196,183, 73, 77, 33,245, 0,184,126, 71,226, 43,156, 31,122,114,150, 56, 63, 63, 31,124, + 62,191,198, 20,201, 21, 10, 60,242,216, 68,222,151,231, 42, 61, 1,218, 23,132,239,107,111,118,197, 98,241,252,183,222,122, 75, + 84, 80, 80, 0, 30,143,247,135,166, 92,142,233,211,167, 75,212,106,245, 98,187,143,253,187, 80, 17,132,146, 94, 0,125,245,122, +118,133,247,254, 43,229, 65,175, 45,223, 34, 11,235,218, 3, 47, 14,116,151, 45,143,204, 9,187,148, 86,222, 6,176,206,129,197, +248,128,163,102,139, 16,210, 79,165, 82, 69, 70, 69, 69,201, 71,140, 24,129, 85,171, 86, 41,100, 50,217, 33, 66,136,195, 55,254, +178, 82,235,204,119, 63,249, 90,119,249,163,161,128,169,172,202, 96,213, 90,114, 74, 57,188,189,229, 88,145,217, 76,199,217,171, + 89, 94, 94, 62,233,133, 23, 94,200,219,187,119,239,159, 76,150, 84, 42, 69, 82, 82, 18,150, 46, 93,154,159,159,159,255,220, 63, +105,178,102,206,156,185, 52, 61, 61, 61,232,200,145, 35, 2,189, 94,239,190,250,139, 47,138,190, 43, 42,202, 95, 22, 19,115,253, +141,142, 29, 59, 44,236,220,249,185,134, 66, 63, 52,100,178,102,204,152,177, 43, 61, 61,189,219,209,163, 71,133,122,189,222,119, +198,140, 25, 88,185,114, 37, 22, 47, 94,188, 9,192,139,180,186,179,140,189, 24,141,198,235, 5, 5, 5, 35,135, 14, 29, 90, 88, + 80, 80,128,206,157, 59,227,209, 71, 31,133,167,167, 39,188,189,189, 49,122,244,104, 4, 6, 6, 34, 47, 47, 15,227,198,141,203, +215,235,245, 67, 41,165,137,141,105,230,229,229, 37,236,220,185, 51,126,214,172, 89,221,210,211,211, 67, 0,184,150,148,148, 40, + 74, 74, 74, 36, 70,163, 81,230,236,236,236,220,181,107, 87,183,105,211,166, 41, 47, 94,188, 24,146,158,158, 94, 10, 32,133,217, +171, 26,147,213,160, 23, 1,160,175, 54, 60,198, 58,175,250, 38,214,217,187,111,189,239,237,216,238, 54,179, 85,123,249, 83,141, + 86, 67,152,128,183,191,218,179,173, 66,236,215, 30,154,160, 46,144, 75,165,144,137,197,144, 57,187,162,146,227,240, 69, 82,182, +161,140,210,197,142, 22,104,237,102, 67,169, 84, 10, 62,159,143,207, 62,251,204,210,187,119,239,138, 99,199,142,173, 51, 24, 12, +126,148,210, 31, 28, 49, 5,159,124,242,137, 97,246,236,217,151,114,114,114,186, 72,165, 82,163, 45,125,221,186,117,134,137, 19, + 39,198,164,167,167,119,147,203,229,134,134,250,103,213, 54, 90, 18,137,164, 50, 39, 39,167,199,148, 41, 83,226, 62,251,236,179, + 50,185, 92, 14,133, 66, 1,137, 68, 98,204,201,201,233,242,242,203, 47, 95, 90,185,114,165, 65, 38,147, 65,161, 80, 56,212, 44, + 71, 41,253,147,161,170,157,110, 47,102,179,249, 88, 78, 78, 78,151,217,179,103, 95,252,248,227,143,203,108, 6,168,118, 30, 87, +175, 94,109, 80, 42,149, 14,213,104,217,182, 83, 40, 20, 88,187,118,173, 97,214,172, 89,151,114,114,114,186, 72, 36, 18, 99,173, +244,178,153, 51,103, 94,204,201,201,233, 98, 54,155,143, 53,242, 15,207, 90, 92, 92, 12,129, 64,128,152,152,152, 74,145, 72, 4, + 30,143,135,155, 55,111,214, 24, 45, 23, 23,151,208, 46,157, 58, 6,127,189,107,207,113,153, 72, 34,233,221,227,129,144,196,228, +148,116, 74, 73,114, 19,255, 56,126,168,168,168,240, 59,121,242,228,186,161, 67,135, 86,124,254,249,231, 22,129, 64,240,167,135, +207,253,103,180, 32, 7,129,236, 70, 78,165, 74,202,179, 16,196,255, 80,101,178,164, 78,128,212, 25,144, 58,195,199,199, 23,231, +146, 12, 42,240, 32,134,213,142, 24, 98,148, 42, 64, 32,143,209, 65, 37, 20,203, 72,118,118,118,141, 33,178, 45, 1,237, 67,112, + 33,165, 84, 9, 66, 37,224,195,145, 16, 36, 35, 93, 93, 93, 5, 89, 89, 89,127,210, 12, 13, 13,229,155,205,102,251, 67,187,100, + 90,189, 0,110, 70,124,118,133,215,247,151,202,130,230, 44,251, 82, 38,179, 22, 2, 81,159, 32,172,173, 55,230, 60,217, 85,252, +230,126,125,216,249,100, 67, 91,240,233,139,224, 74,181, 14, 24,132,135, 84, 42,213,161,243,231,207,203, 85, 42, 21, 18, 19, 19, +209,163, 71, 15,108,222,188, 89, 46,151,203,127, 36,132, 12,116,228, 52,157,201,166, 41,165, 37,214,222,243,247,164,102, 95,206, +178,220,102,178,244,101, 20, 47,124,184,191,176,160,184,226,137,211,169, 13,255,126,234,185,230, 47, 22, 22, 22, 14, 89,188,120, +113,158, 94,175,191,237, 26, 79, 73, 73,177, 25,130,129,148,210,171,255,212,229,169,209,104,198, 47, 91,182, 12,231,207,159,199, +136, 17, 35,112,226,196, 9,228,231,231, 99,247,161, 67, 55,118,222,184,241,134,173,207, 86,125,161, 31, 26, 66,173, 86,191,182, +108,217, 50, 68, 69, 69,213,104,230,229,229, 97,217,178,101,233, 0, 94,114,212,100,217,208,233,116,231,174, 95,191, 62,180,115, +231,206,215,214,173, 91,151,238,229,229,197, 77,155, 54, 13, 47,188,240, 2,180, 90,173,117,237,218,181,169,253,250,245,139, 73, + 72, 72, 8, 47, 43, 43,187, 98,199,249,161,185,185,185,167, 54,111,222,124,230,225,135, 31,150, 79,154, 52, 73,187,111,223, 62, + 87,131,193,224, 45,145, 72,220,141, 70,163,248,218,181,107,252,239,190,251,206, 51, 54, 54, 54,169,188,188,252, 92,115,243,254, + 47,228,124,117,237,212,209, 58,175,231,155, 88,103,239,190, 13,189,111,106,187,218,231,127,115,237,165,246,138, 38,151,241,109, +241,159,233, 29, 85,134, 83, 19,122,209,236,105, 15, 81,221,211, 33,244,228, 0, 23, 58,165, 29, 41,155,212,204,240, 14, 25, 25, + 25, 84,167,211,209,188,188, 60,250,205, 55,223, 80, 79, 79,207, 50,149, 74,229,112,120, 7, 79, 79, 79, 93,113,113, 49,125,240, +193, 7,243,181, 90,109, 77, 40, 2, 47, 47, 47, 93, 89, 89, 25,237,213,171, 87,190,187,187,123, 77,120, 7, 95, 95,223, 52, 74, + 41,245,247,247,207,108, 72,207, 98,177, 80, 79, 79, 79, 91,136, 4,161,139,139,203,134,158, 61,123,230,235,116, 58,234,229,229, + 85, 19, 58, 65,171,213,174,234,209,163,199,109,233,118,228, 55, 45, 61, 61,157,166,167,167,211, 86,173, 90,101,214, 78, 79, 73, + 73,161, 41, 41, 41,212,215,215,215,225,240, 14, 90,173,118,101,221,188, 52, 55,143,126,126,126,186,242,242,114,218,167, 79,159, +219,202,212,207,207, 79, 87, 81, 81, 97, 75,183, 43,188,131, 76, 38,123, 81, 42,149,102, 74,165,210, 76,137, 68,178,180,117,235, +214, 57,223,126,251, 45, 93,187,118, 45, 85,169, 84, 85,225, 29, 66, 71,245,110,223,231,185, 55,180,161,163, 95,107, 73,120, 7, +149, 74,245,139,167,167,103,217,119,223,125, 71, 43, 43, 43,169,217,108,166, 54,112, 63,141, 58,220, 28,216,158,110, 8,222,159, +240,110, 64,236,236,254,242,138, 43,239,119,161,244,191,143, 83,250,227, 11,148, 30,155, 79,207,109,154, 70,251, 4, 72,172,191, +207,107, 21, 79, 55, 6,125,111, 87, 72,134,205,157,218,211, 13,193, 63,222,120, 39, 32,118, 82, 63,239,138, 47, 62, 91, 75,207, +158, 61, 75, 99, 98, 98,104, 98, 98, 34,253,241,135,111,105,159,182,242, 42,205, 13,193,251, 29, 9,243, 0,160,175, 68, 34, 41, + 93,179,102, 13, 61,115,230, 76,141,230,254,253,251,169, 92, 46, 55, 0,118,142, 90, 6, 8,221, 16,250,152,229,179,160,223,222, + 28,172, 44,201, 59, 56,159,210, 43,219, 40,221, 28, 70,233,214,158,148,126, 27, 65,233,129,231,232,153,181, 79,210,190, 1, 34, + 51,221, 24,116,130,110, 10, 29,108,111, 62,133, 66, 97,241,222,189,123,105,102,102, 38, 61,113,226, 4,141,138,138,162,113,113, +113, 52, 53, 53,149, 70, 70, 70, 82,161, 80, 88, 1,192,225, 81,141, 61, 61,224, 31,222, 65,148,117,105,121, 95, 74,247,141,163, +250,157,227,233,200,142,170,252, 94,173, 4, 15,183, 96,164, 93, 87, 87, 87,215,220,200,200, 72,154,148,148, 68,143, 31, 63, 78, +221,221,221,115, 1,132,253,211,215,103,120,120,248, 89, 74,105,244,136, 17, 35,162, 1,252, 20, 30, 30, 30,125,235,214,173,232, + 30, 61,122,156, 65, 35,161, 31, 26,211,124,228,145, 71, 76,148, 82, 58, 98,196, 8, 10, 32, 51, 60, 60,156,222,186,117,139,246, +232,209,195,120,135, 70, 73,242, 1, 60, 39, 20, 10,191,112,113,113,249,159,179,179,243, 49, 62,159,191, 25,192, 4,123,238,115, +141,104,122, 3, 8, 5,240, 64,245, 18, 82,157,198, 70, 28,254,155, 38,156,182,119,195, 39, 3,208,119,114, 91,114,252,217, 54, + 40, 25,215, 6,165,207,183, 35, 39,159, 8,192,195,142,206,238,109, 51, 90,249,249,249,244,226,197,139,116,192,128, 1,101, 10, +133, 34, 3,192,208,230,204, 24,238,230,230, 22,229,238,238,158, 38, 16,220,126,211,170,149,254, 72,237,116,119,119,247, 83, 94, + 94, 94, 58,173, 86,123,161, 62, 77, 55, 55,183, 40, 47, 47, 47,157,155,155, 91, 84,237,253,248,124,254, 8, 55, 55,183,140,186, +233, 2,129,224, 97,119,119,247,180,186,233,104, 96,102,115, 79, 79,207,180,204,204, 76,170,215,235,169,159,159, 95,102, 93, 3, +150,157,157,125,155, 1,115,100,182,244,134,242,210, 80,122, 67,154,118,148,169,195,231,189,214,186, 64, 31, 31,159,156,213,171, + 87, 83,165, 82,153, 83,123, 93, 80,255,231,223, 58,123,163,180,248,133, 5, 27,190,213,134, 60,214,169, 57, 51,197, 3, 24,170, + 80, 40, 50, 6, 13, 26, 84,118,243,230,205, 70,141, 22,238,145, 25,237,255,164,185, 39, 68, 68, 55,133,244,165, 27, 67, 34,227, +150,248, 95,123,174,167,162, 50,122,245, 8, 74,143,205,167,103, 54,188, 64,123, 7,136,171, 12,209,166,224, 67,244,203,192,254, +244,147,182, 98,187, 52,191,104,215,143,110, 10, 62, 20,251,182,255,181,199,187,107,141,187,182,109,162, 55,111,222,164,251,191, +219, 73,123,181,169, 54, 89, 27, 67,126,166, 27, 66, 6,217,165, 89,143,217,218,178,101, 11,189,121,243, 38,253,254,251,239,237, + 50, 89,183,105,214, 50, 90,139,194,149,133, 47,244,148, 86,142,235, 42, 54,142, 14, 19,153,134,180, 23, 89,250,248, 11,172, 93, +188,120, 92,136, 22,116, 72,144,172,146,110, 12, 58, 65, 55,134, 12,181, 55,159, 98,177, 56, 21,181, 98,234,212, 93, 36, 18,137, +190, 33,163,213,212,121,239,233, 1,255,240, 64, 73,214, 47,239, 62, 76, 31,237,172,202,179,199,100, 53,165, 9,160,171,155,155, + 91,238,214,173, 91,169,135,135,135,222, 30,147,245,119, 92,159, 26,141,102,123,105,105,105,244,225,195,135,163,195,195,195,163, +183,111,223, 30,125,242,228,201,104,185, 92,190,189,161,208, 15, 33,117,238,255,117, 53,213,106,117,116, 73, 73, 9, 61,124,248, + 48, 13, 15, 15,167,219,183,111,167, 39, 79,158,164,114,185, 60,250,174,250,109, 50,205,127,175,153,170,138,161,117,219,226,176, +209,186, 83, 39, 2, 0, 45, 44, 44,164,115,230,204, 49, 74,165, 82,131, 72, 36, 90, 4, 64,244,111,185, 8,221,220,220, 78,121, +120,120,232, 60, 60, 60,110, 51,123,181,211,221,220,220, 46,220,207, 63, 64, 0,129, 34,145, 40, 69, 40, 20,198,215, 78,215,134, +142,234,221,174,239,164,197, 30, 97,163,134,183, 36,159, 0, 68, 34,145,104,145, 84, 42, 53,204,155, 55,207, 88, 90, 90,122,127, + 25, 45, 74, 65, 63,105, 43,182,153,173, 43,139,253,227, 30,237, 40, 55,109,158, 59,132,246,110, 86,124,231, 23, 0, 0, 32, 0, + 73, 68, 65, 84, 93,199,100,109,245,151, 56,164, 89,109,182, 46,190,233, 23, 55, 40, 80,105, 89,182,120, 14,237,213, 70,118,187, +201,114, 68,179,142,217,146,203,229, 37, 75,150, 44,177,187, 38,235, 79,154, 95, 4,249,209, 77,193,219,171, 76, 84, 19,203,134, +160,207,233,167, 65,126,119,203,121,239,233, 1,255, 71, 2, 37, 87,237,173,201,178, 71, 19, 64, 87,103,103,231,107,246,214,100, +253, 29,199, 14, 96,200,244,233,211,163,111,221,186, 21,157,152,152, 24,125,242,228,201,232,199, 30,123, 44, 26,192,144,250,226, +108,153,198,140,169,236,202,227,205,105, 66,243,153,233,211,167,211, 91,183,110,209,196,196, 68,122,242,228, 73,250,216, 99,143, + 81, 0,207, 48, 3,195,140,214,221,190, 8,254,238, 70, 86,169, 84,154,227,228,228,164, 85, 42,149,145, 21, 21, 21,179, 40,165, + 89,255,166, 70,102,189, 94,223,199,145,244,251, 17, 74,105, 60, 0,255,186,233, 57, 87,247,157, 6,112,250, 14,232,155, 0, 44, + 35,132,124,181,105,211,166,117,171, 86,173,122, 76, 42,149,234,239,171, 66,156,149, 96,196,186,118, 81, 16,139,151,119,244,145, + 47,124,107, 4, 37,203, 14,159,242, 95, 49,198, 61,181, 79, 59, 69, 18,132,220,135, 32,149,231,240, 92,114,165,131,154,231, 32, + 51, 47,239,210, 74,190,240,131,209, 32, 31, 30,218,230,191,242, 49,215,212, 62,109,149,169,160,248, 16, 18,195,105,135, 52,111, + 63, 47,191, 19, 66,134,175, 94,189,250, 43,131,193, 48,149, 82,250, 63,135, 69, 84,188,108,148,153,151,192,204,239, 8, 10,113, + 35, 95,102, 0,143, 31,131, 28,220, 53,147,137,159,201,166, 41, 0,194,238,240,111,233, 98,117,115,212,221,244,251,254,153, 16, +130,157, 59,119,142, 15, 14, 14,110, 27, 27, 27,155,104, 48, 24,118, 80, 74,127,174,221,151,137, 16,114,224,195,203,151,203, 62, +141,141,253,221,200,113,191, 55,161,185,187, 90,243,181,224,224,224,176,216,216,216,171, 6,131, 97, 53,165,116, 55,235,186,196, +184,219,249,219,141, 86,121,121,185, 7, 43,118,198,223,116,195,207, 2, 48,230,190, 61,192, 90,102,171,187,159,108,214,222,233, + 50, 3, 40, 73,135,144, 91,235,176,201,170,199,108,245,240,151,189,250,253,139, 50, 3, 40,178, 65,241, 81, 75, 76, 86,109,179, + 5,160, 77,179, 5,158,140, 53, 1, 72, 2, 33,201,248, 15, 26,238, 68,253, 31,212,252,237,102,252, 51,102, 11,192,207, 77,108, + 67, 1, 28,171, 94,236,209,220, 13,128, 25, 43, 6, 51, 90, 12, 6,227,111, 54, 91,223,133,158, 71, 46,127, 30,120,104, 3, 88, + 82, 80,102,201,198,172,100, 99, 11, 53,207, 34,151,204, 6, 31,129, 16, 91, 18, 80,106,204,198,244, 22,104,254, 5, 79,114, 84, +245,157,170,159, 37,236,210, 96, 48, 24,127, 31,132,144,105,181, 71, 26,214,254,204,140, 22,131,113,175, 83, 85,203,147, 94,189, +220,189,154, 12, 6,131,241, 47, 51, 92, 64,213,156, 76,225, 13,252, 97, 60,234,128,112,120, 51,254,144, 30,101,154, 76,147,105, + 50, 77,166,201, 52,153,230,191, 75,179, 41,109, 71,252,199,221,100,176,234, 57,142,205,182, 55,127,235,168, 67,166,201, 52,153, + 38,211,100,154, 76,147,105, 50,205,127,203,194, 3,131,193, 96, 48, 24, 12, 6,163, 37, 53, 90,221,170, 95,189,170,167,224,241, +178,173,251, 71,251,104,201,221, 2,189, 32,224,117, 38, 28, 13, 6, 0,202, 35,113,176,112,151, 13,185,241, 45, 14,249,160,242, + 9,114,161, 16,239, 33, 48, 62, 85,146,113, 61,191,165,122,157,130, 52, 99, 60,220, 84,227,179,243,138,190,138,137, 43,217,231, +200,190, 78, 78,173, 53, 82, 23,231, 39, 43, 77,230,142, 98,145, 40,213, 84, 88,188, 57, 63, 63,161,132, 93,154, 12, 6,131,193, + 96,220, 23,116, 3,112, 1, 64, 4,165,116,115,117, 83, 98,227,157,225, 91,135,245, 59, 47,149,202, 2, 0,128,163, 20, 28, 5, +202,138, 11,163,179, 18,206, 15, 5, 0,109, 64,247,195, 66,169,186, 59, 71,171,214, 91, 57,192, 98,170, 72, 42, 74, 62,243,160, + 61, 57, 82,186, 7, 61, 30, 62, 36,124,204,200,145, 17, 65,157, 58,118,106, 7, 0, 87, 98,174, 36, 28, 60, 24,121, 93,233, 30, +180,183, 52,231,250,247, 45, 57, 98, 10,233,123, 15, 60,208,245,161,168,168, 11,239, 2,152,209,210, 18,116,117, 85,206,250,249, +191,243,250, 63, 50,102,149, 2,128, 67, 70, 75,234,226,252,228,232, 71,135,117,125,253,149,233,188, 23,230,125, 16,112,254,247, + 95, 87,168,188, 59, 22, 82,206,252,115,153,238,233,223, 26,155, 56,153,193, 96, 48, 24, 12,198, 93, 79,100,181,185,138,172,187, +162, 65,163, 37,149,202, 2,206,252,122,208,229,251,147,105, 0,128,240,110,158,120,227,253,117, 67, 8, 33,215, 1, 96,212, 11, +255, 9,124,119,209, 43, 56,117, 53, 7,148, 82,116,109,239,138,225,163,159,178, 43, 55, 50,207,208, 7,159, 30, 59,246,217,121, +243, 94, 27,117,243,230,205,228, 93,187,118,253, 6, 0,253,250,247,111,255,193, 7, 31,140, 93,229,236, 34,145,121,134,102,148, +103,199,158,111,206,209,202,124,218,249,132,118,232, 60,254,155, 47,215,241, 6, 14,125, 98,156,204,167,221,178,242,140,132, 12, +123,246,213,106,181,179,133, 66,161, 6, 0, 56,238, 15,255,211,182, 21,223, 19, 0, 44, 86, 78,229,226, 19, 92,194, 23, 73,173, + 18,137, 40,182,164,180,244,171,162,244,216, 47, 26,211,172, 52,155,195, 94,125,105, 50,239, 98, 98, 30, 2,194,250,241,215, 46, +123, 19,156,213,236, 60,103,209,251, 79, 70,157,253, 6,192,146,227,236, 26,101, 48, 24, 12, 6,227,222,164, 58,110,227,230, 90, +159, 55, 55,105,180, 0, 64, 41, 19,224,250,173,108, 0,128,147, 12,152,245,226, 36,228,229,234, 3,141, 22, 14,207, 79,154,128, + 11,113, 89,184,158,164, 7,165, 20,129,190,114,187, 51,196, 7,247,192,243, 83,158, 31,112,248,231,159,207,189,181,248,173,175, + 9,169,138, 6,190,105,243,231,189,223, 94,242,246,212, 9,147, 38, 12,254,238,187,239,174,162,206,204,216,246, 34, 32,170,117, + 43,151, 47, 21,167,231, 86, 84,204,158,183,144,123,109,238,236,181, 0,158,176,103, 95,161, 80,168, 73, 79, 79, 87,242,120,183, +119, 95,251,112,233,194, 19,131,199,172,186,145,156, 90,120,241,240,254,253, 15,134,134,134, 34, 61, 35,187,239,138,143, 55,118, +241,106,247,224,228,146,226,242, 49,101,250,216,122,163, 80, 75,132,194,171,239,172,216,208,149,115,106,207,123, 99,234, 8,132, +181,243, 70, 70, 78, 33,250, 15, 29, 37,136, 62,127,126, 8, 0,102,180, 24, 12, 6,131,193,184, 71,105,108,212, 33, 15, 0, 34, + 35, 35,235, 13,252,103,181, 82, 92, 79,202,194,245,164, 44,156,139,211,195, 68,133, 88,187,226, 29,172, 94,182, 4,249,229, 60, +124,127, 42, 13,241, 73,217,136, 79,202, 70,110, 65,105,125, 14,239,182, 33,154,171,151,203,187,173, 93,171, 89, 57,164,191, 98, +160,139,179,179,243,141,171, 95,151,189, 61, 87, 23,242,206,171,105, 34,161, 81,146,174, 80, 42,250,236,217,243,109,168,135,214, + 93,161, 84,170,230, 43,124,187,110,113,114,234,162,105, 76,179, 46,114,143,144, 81,163, 34,134, 61,236,233,233,193, 77, 95, 27, + 29,215, 49, 36,216,220,161,125,135,190,114,143,192, 81,141, 56,209, 26, 77,142,227,192,227,241,160,211,233,144,153,153,137, 91, +183,110, 33, 62, 62, 30,105,105,201, 58,142, 82,161, 21, 28,207,203,203, 23, 2,129, 24, 1,173,253,177, 97,237, 50,249,251,255, +121,163,135, 84, 33,222, 71, 8, 33,245,105, 86,228, 23,124,247,227, 79, 63,103, 28,218,181,193, 10, 0, 57, 5,165, 56,118,254, + 38, 46,196,166, 57,234,152,239,248,144, 87,166,201, 52,153, 38,211,100,154, 76,243,110,208,108,200,139,220, 11, 80, 74, 55,215, + 93,108,235, 26, 29,117,152,144,150,143,235,183,178,209, 61,216, 7,237, 90,123,225, 92,124, 1,118, 28, 75,195,150,195, 41, 56, +118, 73, 15, 78,160, 66,118, 49,112, 35, 89,135, 27, 41,185,141,197,105, 6, 0,240, 37,194,167, 95,125,181,104, 94,167,208,226, + 94,191, 30,154, 5, 31,237,141,208, 5, 11, 10,103,241, 37,194,167,157, 91,169,118, 45,156, 55,103,188, 74, 46, 23, 27, 43,141, +104,219,198, 95,250,202,204, 89,147,137,179,100,151,189, 7,170,246, 13,117,150,200,100, 95,188,255,159,249,146,143,190,191,145, + 90,102, 68,217,222,211,186,196,215, 22,190,157, 47, 16, 74, 55,168,125, 67,157,237,213, 50,155,205,168,172,172,132,209,104,132, +201,100, 66, 70,218,181, 81,191,124,255,250,208, 54,173, 92,134, 74,164, 82, 80, 0,197,229, 22,220,202, 50, 96,208, 35,131,249, +221,187,117, 11, 83,122,133, 76,169, 79,171,176, 48,185,136,163,124,213,193, 31,118,242,191, 61,114, 17, 95, 31, 60,143,125,255, +187,136,115,199, 15, 89, 40,103,174,153,166, 66,229,221, 33, 80,229,221, 57, 69,229,211, 69, 87,179,248,118,138, 98,255, 21, 24, + 12, 6,131,193,184,123,169, 30,105, 56,173,238,136, 67,160,145,166,195,138,138,242,164, 39,158,158, 0, 47,119, 79,229,232,129, +207,137,162, 19, 10,161,207, 74,193,205,248, 24, 24, 42,204, 16, 57,183, 1,164,158,104, 29,224,143,203,215,247,153, 62, 89, 25, + 89,202, 89, 42,147, 26,210, 27, 61,218,219,215, 75,171,224,173, 92,225,119, 38,254,122, 65,247,157,139,183,226,217,103,149,110, + 43, 87,248,157, 73, 78, 84,240,228, 82,218,103,242,164,113,132, 71, 40, 22, 44,152,135,209, 35,135,225,249,201, 19,201, 87, 95, +109,235,101,239,129,114, 16,126,186,232,205,119,196,186, 66,139,241, 92,124,105,165, 92, 33,147,253,126,163,180, 44, 44,192, 79, + 54, 98,204,115,153,145,123,190,248, 8,192, 36,123,180,108, 6,203,108, 54,195,100, 50, 1,128, 21, 0,120,188,170,215,188, 18, + 35,114, 10, 43,161, 43,172,132,197,202, 97,204,211,147,100,231,163, 46, 77, 2,208, 64,127, 45,142, 51, 91,204,216,123,228, 2, + 50,206,127,199, 17, 30,191,200,214, 25,222,102,178, 60, 61,253, 78,140, 28, 51, 81, 43,150, 86, 53,195,150,148, 85,226,171,141, + 43,216, 21,204, 96, 48, 24, 12,198, 93, 76,221,233,119, 8, 33,104,114, 10,158,228,171,191, 61, 8, 0, 65, 15, 14,205, 83, 74, + 5, 46, 2, 30,129, 46, 61, 1, 95,173,154, 13,142,163, 24, 49,117, 37, 84, 1,158,144,137,248,168, 44,205, 43,205,187,249,171, +107,227,110,207, 60,120,253,166,140,128,151, 95,106,171,222,185,179, 84, 8, 0, 59,119,150, 10, 95,154,222, 74,253,217,166,164, +128,158, 15,117, 7,181, 90, 49,114,244, 19,120,250,153,167,145,156,109,192,127, 79,164,162,172,220,104,215,252,106,114,109, 72, + 23,119,111,159, 97,175, 62, 55, 76, 33,224, 19,210,193, 95,195, 79,211,155, 45,124,190,208,122,224,124, 81,230,152, 49,207,184, + 29,251,241,219,135,229,218,144, 46, 6,253,181, 75, 77,233, 85, 86, 86,194,106,181,162,178,178, 18,102,179, 25, 46,110,109,126, + 28,252,196,170,244,172,236,146,200,236,130,138,158,101,102, 11,116,133,149,200, 41,172, 68, 97,153, 9,158, 42,103, 88,204,198, + 78,141,156,132,175, 31,123, 98,194, 68, 0, 60,194,179,108, 45,201,188, 22,111, 91,103, 51, 89,195, 70, 63,171, 61, 17,157,128, +155, 81,135, 10, 40,103, 49, 87, 21, 28,199,166, 64, 97, 48, 24, 12, 6,227, 46,167, 86, 63,173,200,234,206,241,184,205,104,217, +218, 70, 35, 34, 34, 72,221,157, 51,116,249,112, 85, 10,160,245, 14,192,248,217,171,241,245, 71,115, 97,181,154, 65, 41, 96,177, +218, 23,153,128, 82,225,145, 25, 47, 5, 4,183, 14,224,107,199, 63, 43, 47,223,177,211, 32, 27,255,172,188,188, 99, 39,215,162, + 25, 47, 5, 36,149, 84,248,245,181, 88,173,248,253,106, 14, 98,146,138, 16,147, 92, 12,165,204,254, 48, 95,124,177,232,165, 21, +203,151,137, 4,124, 66,174,166,148,150,166,231, 89, 74,249, 66,161, 73, 46, 19, 83, 35, 21, 84, 38,231,210,188, 71, 30,155, 92, +126, 96,251,199, 83, 0,204,108, 72,199, 54,210,208, 86,147,101,123,165,148, 82, 2,112, 28,177, 90,211,115, 43, 80,106, 50, 67, + 87,240,135,209, 34,150,134, 91, 78, 85,222, 29, 2, 53,106,151,159,248,124,190,132, 82,192,108,178,140, 85,121,119, 24, 90,146, +121, 35,190,182,201, 58,115, 53, 19, 9, 23,143,234,172, 38,195,132, 50, 93,220, 47,236,178,101, 48, 24, 12,198,191,137,198,188, +200,221,142,173, 6,171,222, 26,173,198, 14,136, 82,224, 70, 74, 46, 90,251,106,225,219,186, 29,226,175, 93,254, 99, 29, 0,139, +213,190,190,107,251,246,101,166,175, 89,163,225,230,206, 45,234,189, 98,133,223,233,151,166,183,210,116,236,228, 90, 52,127,126, +106,239, 53,107, 52,167,143,156, 17, 90,105,117,188, 46, 91,108,174,234, 48,255,118,194,235,209, 37,180, 13,255,157,157, 55, 82, +127,185, 82,146, 35, 18,137,204,158,206, 82,162, 82,138,249,124,158, 80, 92,105,230, 85, 6,134,117,227, 31,224, 85, 69,111,109, +202,104,213,109, 58,204,211, 39,140,250,249,191,243, 58, 14,124,108,165, 75,134,190, 28, 69, 70,126, 77,211, 33,159, 71,112,229, + 90, 10,192, 23,197,212,167,169, 86,185, 28,222,181,227,107,191, 53, 43,150,194,100,177, 98,198,220,183, 48,121,210,132,195, 42, +239, 14, 67,253, 2,130,162,127, 59,176, 85, 62,116,250, 6,164, 92,143,202,182, 84, 22,239,102, 38,139,193, 96, 48, 24,255, 54, +238, 69,115,101,163,206,168,195,250,107,180, 26,195,223,215, 3,103, 99,146,208, 41,184, 13, 52,106, 21,226, 18,210,193,231, 9, +193, 35,128,217, 98,191, 25,162, 38,243, 55,107,214,104,144,146,164,224,125,182, 33, 41, 96,198, 75, 1, 73,107,214,104, 78, 83, +147,249, 27, 0, 19, 40,173,154,123,209, 22, 32,213,234, 64, 24, 79,202,153, 91,121,184,200,249, 81,137,101,121, 60, 30,191,210, + 85, 35,229, 92, 53, 18,158,171, 74, 44, 20, 9,249,156,133,242, 76,190,238, 1, 21,148,227,186,216,163, 87,187,233,208,106,181, +130, 16,158,181,218,136, 41,210,242,202, 81, 84,193,135,174,176, 18, 5, 37, 38,116,240, 81,224,232,177,239, 12, 86,115,249,206, +250,180,248, 66,145,166, 93,128, 47,222,120,111, 13,202, 43,173,184,145, 81, 10,145, 68,226,233,225, 25,118,105,194,203, 11, 37, +175,108, 78,192,148,135, 93, 49,247,183,132, 12,131, 78,186,144,253,220, 24, 12, 6,131,193,184,119,168,221, 71,171, 46,118, 25, + 45,165, 92, 10,202,151,226,183,232, 4, 4,133,118,198,182,253,231,208,190, 83, 47,100,149, 88, 64,193,107,114,180,161,141,215, + 22, 26, 46, 0,184, 48,122,180,183,239,227,143,251, 12,166, 84,120,228,179,141, 69,233, 0,176, 97,247, 0, 80, 0, 28, 71, 65, + 41, 64,185, 42,195,101,191,157, 20,164, 36,101, 21,183, 14,240, 84, 32, 54,221, 84,169,144,136,120,206, 10, 49, 95,171, 17,139, + 68, 2, 1,172,148, 84,102,101, 37, 84, 18, 32,217, 30,185,186, 77,135,114,165,215,143,143, 60,182, 82,159,156, 90, 20,213, 33, +223,208,165,200, 36, 6,165, 64, 7, 31, 5, 98,206, 68, 90,117, 25, 55,111,148,235,174,111,172, 79,139,227,192, 55, 89, 56, 92, + 74, 44, 66, 97,153, 25,133,165, 38,244, 29,244,168,168,111,248, 40,252, 22,147, 11,206, 98,198,138,207, 35, 75,172,212,252, 52, +165,177,102,118,201, 50, 24, 12, 6,131,113,239, 80, 61,210, 48, 2, 85,145,225, 35,106,155, 47,187, 38,149,182,114, 20,110,174, + 46,144, 42,212, 72,210,153, 80, 66,220, 81, 96,160,176, 90,171,106,180,184,134,191, 56,188,190,244,125,251, 50,211,127,248, 65, +191,101,223,190,204, 90, 29,189,255,168,201,170,121,229,168,221,154,132, 90,143,238, 63,244,107,209,168,158, 90,103, 30,159, 95, + 46, 18,242, 42, 5, 34,190, 73, 36,224,153, 69, 2,158,209, 67, 45,228,255,122, 96,183,152, 18,252,218,148,102, 69, 69, 5,194, +195,195, 49, 98,196, 8,140, 30, 61, 26, 79, 61,245, 20, 2, 3, 67,220,121,124, 98,164,132,227,180,226, 18,180,211, 18, 8, 42, +210,240,203,238, 15, 13, 49,191,255,112,201, 90, 89,241, 40,173,213,214,121,155, 38,165, 92,126, 81, 37, 42, 76, 86, 20,148,154, + 80, 80,102,130, 69,219, 27, 63,156,202, 68,185,209,138,148,232,239,202,245,217,233,179, 43,116, 55,146,154, 56,145,225,127,193, +197,193, 52,153, 38,211,100,154, 76,147,105,254,227,154,247, 56, 17,213,198, 42,162,110, 28, 45, 59,106,180, 40,218,122, 41,208, +222, 71,129, 10,147, 59, 42,140, 86,148, 85, 88, 81,108, 48,161,216, 96, 70, 82,182, 1, 49,251, 91,158,195,170, 90, 44,128, 84, +191, 7,169, 50,120,246,214,105,137, 77,198,247, 86,175,248, 96,236,238,110, 93,141,175, 68,120,181,186,156,100,204, 36,132, 87, +206,227, 11,204, 46, 42,129, 48, 46,238,178,254,244,137, 31,251, 75, 45,214,137,141,233, 88, 44,150, 34, 31, 31, 31, 0,183, 79, +193, 19,210, 78, 54,250,247,200, 5,109, 6,140, 90,161,253,104,233, 60, 3,143, 47,226,136, 64, 20, 99, 53,151,239, 42,215, 93, +223, 64, 27,233, 80,198, 19, 73,175,157,189, 24,219,203,201,165, 21,110,102,148,161,172,194, 2,147,133,131,179, 82,132,244, 43, +135, 77, 73,113, 81,223,150,100, 92,218,198,174, 83, 6,131,193, 96, 48,238, 77,108,253,180,108,175, 77,134,119,168, 85,187,147, +244, 80,248,163,224, 56, 10, 43, 5, 56,107,117,205, 19,247, 71,237,147,213, 92,145,212,210, 12,114,156,245,220,167,155,183,140, +232,214, 99, 0, 63,212, 79,137,226,188,108,156,249,253,127, 22,112,244,180, 61,251,231,230,198,151,202, 61, 59, 60, 49,246,201, +199,247, 76,122,126,122, 97,255, 65,131, 20,238,238,158,149,233, 25,233,134, 47,183,239, 48, 31,254,113, 95,127, 14,150,103,114, +115,111,148, 54,166, 83, 88, 88,248,113,125,233,143, 60,212,170, 47,128, 54,124, 1, 49, 26,114,226, 21,142, 28, 91,110, 70,218, +152, 15,222,251, 79,242,179, 83,231,136,219,250,180, 67, 78, 17, 31, 73,233,217,136, 59,177,175, 50, 35,254,252,247,197,233, 23, +166,176, 75,148,193, 96, 48, 24,140,123,147, 22,245,209, 74,141,173,138,167,245, 87, 83,146,157, 51, 97,219,182,175,223,255,122, +251,238,190, 21, 70,163, 15,133, 40,205,106, 49, 30, 47,181,226,109,123, 53, 12,217, 55,162,220,220, 2, 59,126,249,249,167,111, +126,185,229,179, 1,224,172,193, 4, 72,166, 4,191, 74,205,214, 73, 77,153,172,198,141, 92,201,166,193, 79,172, 42,207,203, 43, +253,218,209,125, 13,185,113,217, 74,143,182,173, 54,173,125,111, 37,143,199, 31, 98,181,114, 66,206,106,190,105, 53, 85,124, 88, +174,191,190,159, 58, 54,188,146,193, 96, 48, 24, 12,198, 93, 4, 33,100, 90,221,160,165,118,215,104,253, 93,228,231, 39,148, 0, +120,165,165, 58,185,185,241,165, 0,238,248,200,189, 43,241, 69,255, 5,240,223,230,238, 95,170, 75,212,195,206,168,244, 12, 6, +131,193, 96, 48,238,125,195, 5,216,217, 25,158,193, 96, 48, 24, 12, 6,131,209,184,201,170,253, 90,147, 14,160,222,145, 3,142, +204,204,221,156,209, 7, 77,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,108, 74,219, 17,255,113, 79, 24,176,191, +178,123, 16, 33, 36,252, 78, 23, 24,211,100,154, 76,147,105, 50, 77,166,201, 52,239, 63,205,123,218, 76,213,169,197,170, 54,140, +119, 87, 31, 45, 6,131,193, 96, 48,254, 46,220,220, 2,149, 64, 77,191,222, 38, 81,104, 67, 61, 0,160, 76, 31,171, 99,165,199, +104,200, 84,213,215, 71,171, 89, 70,139, 16, 34,228, 9,196,175, 74,101,202,231, 8, 15,234,210,194, 92,159,127,177,139, 37,129, +173, 21, 51, 91,181,210, 14, 74,207,208,125, 21,151,104,216,247, 79,104, 42, 61,218,106,137,216,249,123,194, 85,126, 80,156, 30, +115,232, 14, 31,163, 36, 52, 52,180, 43, 0,196,198,198, 94,164,148, 86,182, 84, 83,225, 17, 52,206, 89,237,244,162,137, 51, 90, + 13,101,134, 13,165,217,241,223,221,201, 60,171,188, 59,184, 66,160,218, 8,171,101, 16, 40,248,224, 11, 46,145,202,138, 23,138, +245,177,137,141,237,231, 55,122, 89,240,148,177, 17,139,183,124, 27,249,126,234,190, 69,113,117,215,187, 12, 95,167,154, 53,113, +200,130,245,187,247, 45,207,221, 63,191,148,221, 94, 28,199,239,161,103,157, 44, 2, 79,126,230,175,171,242, 28,217,207, 55,168, +247, 85,161, 80,168, 53,153, 76, 57, 25,241,103, 58,218,179, 79,171,224, 62, 23,248,124,158,183,213,194,165,167, 93, 63,245, 0, + 43,253,166,145,185,183,237, 13,139,229, 13, 10, 16, 16,193,234,138,188,196,255,181, 68,207,219,219, 91,166,209,104,250,171,213, +234, 86,114,185, 92, 90, 80, 80, 80, 94, 80, 80,144,154,146,146,114,140, 82,106,249, 39,142, 81,225, 17,180,136, 8,201,146,234, +247,239,148,233,174, 47,107,252,254, 26,252, 62,225,209, 69,213,239,151,149,234,226, 22,223, 13,231, 74,234, 25,228,207,167,120, +133,207, 19,244,177,112,230,165, 6, 93,252, 1, 71,246,119,113,113, 25, 34, 16, 8,100,182,207, 22,139,165, 60, 63, 63,255,103, +246, 43,104,214,115,114, 90,221,247,205,174,209, 34,132,240,133, 18,249,201,103,159,159,209,113,249,127, 22, 74,215,110,249, 1, + 82,165,115,108, 69,105, 65,232,221,120,240,218,182, 61,163,248, 60,190,111,237, 52, 43,103, 77,215, 39,158,189, 35, 55,221,160, +214,178, 41,111,206,159, 48,119,220,216,112,255,240,145,179, 9,128,122, 77,145,202,239,193, 83,132,240,218,240, 8,192,227, 17, +240, 8, 0,208,204,220,196,179,221,154,171,105, 67,227,222,174,141, 88,169, 61,241,208,232, 25,158,209, 71,119,108, 83,104, 67, + 7,151,233, 99, 47,223,129, 11, 71,219,174, 93,187, 7, 3, 3, 3, 93,103,205,154, 37, 2,128,143, 62,250,168,125,251,246,237, +243, 18, 18, 18,206, 83, 74,245,205,186,201,185, 7, 79,248,120,213,187, 95, 15, 31, 62, 2,153,185,101, 88,177,102,253, 64,165, +103,224, 83,119,202,108, 57, 59,183, 81, 11,212,206, 87,102,207,127,215,125,216,192, 7,249,165, 21, 22,252,116,226, 98,191, 29, +235,223, 61,167,214,134,246,104,204,108,113,134,162,197, 30, 74, 58,140, 51, 20, 1,192,184,186,235,125,148,230,112,173,204, 58, +204, 75, 34,184, 8, 96,111,147,121, 9,120,232,176, 80, 34,241,231,241,120,176,157,123, 62,169, 58,255,102, 83,121, 74,250,181, + 19, 67,239,134,223,137,218,191,103, 54,248, 2, 87, 30,249, 35,127,164,250, 58, 37,148, 22,103,197,255,230,122, 7,174, 39, 77, +199,246, 78, 97, 17,125, 31,250,242,248,173,124,133,223,128, 57,145,132,242, 62, 75, 57,177,250,146, 93, 15, 21,169,212,249,192, +129, 3,218, 97,195,134,105, 60, 58, 62,118,220,158,125,148, 98,105,232,193,131,251, 69,195,134, 13,117,224,250, 12, 26, 12, 30, +111, 59, 1,132, 28, 71, 63,226,115,244,219,210,188,248, 4, 71,195,176,200, 61,130,167,240, 64,237,190,207,112, 32, 81, 6, 93, +220,150,230,150,175, 80,170,121, 68, 40, 18,189,218, 38,176, 83,183,140,228,155, 81,101,165, 37,107,204, 21,133,199, 29, 22, 50, + 91, 94, 63,250, 91,244,112,129, 80, 72,134, 61,210,147, 15,160, 69, 70,203,195,195,227,177,117,235,214,181,237,221,187,183,237, + 97,174,222,179,103,143,231,123,239,189,167,176,231, 55,212,192,181,228,163,213,106,253,196, 98,177, 15, 0, 24,141,198, 12,189, + 94,159, 74, 41,205,104,242,154,240,108,231, 70, 32,120,247,183, 19, 39, 4, 0,208,175, 95,255,247,253,251,205,114,230,139,148, +229,245, 22,135,177, 68, 1, 96,206,153,179,167, 9, 0,244,234,217,123,161, 66, 27,250,233, 63, 89,179, 37,243, 8,238,201, 3, +230,246,237, 63,120,204,211,207, 76,224,133,117,240,195,144,193, 15, 47, 0,224,144,209, 18, 8, 4,178,115,231,206,181,227,241, +120,124,139,197, 82,209,171, 87,175,212,150,228,203, 39,168,207, 41, 2, 94, 43,147,197,248,185, 62, 49,234,125, 74, 41, 87,215, + 63,104, 90,117,123, 19,124,193, 84,142,227,210,138, 83,206,247,185,223,106,180,234, 45,103, 71,197,120, 2,241,171,227, 38,191, +220,113,206,107,111, 72,103,175, 61,134,200,245, 11,115,239, 86,147, 5, 0,124, 30,223,247,240,207,135,221,229, 98, 62, 0,160, +180,194,130,225,195,134, 53,185,159, 83, 64,207, 95,121,132, 4,217,166, 18,183, 90, 76, 82,129, 80, 92, 65, 0,128, 84,141, 34, +112,243,110,125,204,203,203, 69, 62,110,108,184,255,246,221, 71,210, 83,211,243, 26,188,169,241,120,124,223,125,251, 15,184,251, +184, 74, 33,224, 19,148,150, 91, 48,108,196,163,214,250,182,245,242,114,137, 24, 55, 54,220,127,231, 55, 71, 83,179,178,242, 35, + 27,189,153,123, 5,118, 87,104, 60,126, 26,243,226,123,174, 21, 60, 23,188,189,244, 99,183, 19,135,118, 30, 31, 16, 49,129, 75, + 73, 73,171,160,132,196, 22,228,103,189, 90,154,117,243,186,189, 70, 90,169, 84,182, 85, 42,149, 93,134, 15, 31, 46,157, 55,111, +158,112,224,192,129, 53,235,167, 77,155, 38,250,245,215, 95,189, 86,173, 90, 53,194,219,219,187,162,180,180,244, 82,105,105,105, + 34,165,212,106,239, 57,241,244,212,206,124,226,241, 71,241,240,152, 25,176,114, 4,211, 94,158,131,195,135,246, 78, 7,112, 71, +140,150, 89,174,126,111,234,139,243,180,189, 30,236,202,127,119,231,117,200,196, 2, 12,125, 32,136, 76,158,181,216,105,203, 39, +239,126, 1, 96, 64,125, 53, 89,156,161,104,113, 71, 55,227, 51,163,122,183,193,254, 93,198,103,124,195, 23,128, 39,215,212,212, +108,181, 27,254,138,202, 89, 38, 91,231,237,196,119,151, 88,245,235,218, 13,127,229,104,194,161, 79, 74, 26,125,248, 73, 36,254, +187,118,238,236,224,172, 18, 65,192, 35,224,243, 9, 4,124, 30, 42,140, 86, 60, 53,246,153, 59,245, 79,138, 47,115,239, 48,130, + 7, 76,174,122, 96, 99,107,121,206,141, 31, 29, 57, 39,132, 47,114, 61,184,255,123,129,187, 70, 2, 62,159,128,207, 3,248, 60, +130,100, 93, 57,166, 76,153,172,105,169, 97, 31,222,215,253,193, 95, 63, 29, 48,180, 87, 71,151,206,223,156, 38,154, 94,195,159, +118,205,173,144, 63,183,123,223,255,158,241,235, 63,247, 44,165,220,202,180,223,214, 54,250, 79,186,178,178, 82, 55,116,216,112, + 53, 17, 40,228, 71,127,216,214, 95,192, 35, 48, 91, 41, 44, 86, 10,107,245,220,168, 85,191, 87, 2, 30,143,128,114, 20, 83,167, + 78,193,208, 97,195, 13,156,133, 75,183,255, 38,199,219,254,211,209,223,181,149,102, 14,171,214,109,121,183,172, 72,255,238,173, + 56,215,100,185, 71,224, 28,131, 46,222,238,121, 48,120,160, 15,164, 37,198,188,184,243,224, 25,116, 12, 13,129,149,171,202,103, +144,175, 2, 59, 35,207, 32, 56, 40,184, 42,223, 28, 69, 96, 43, 37, 30,124,224, 65, 0,104,150,209, 18, 74,213,111, 15,136,152, +248,206,200,167,158,135,187, 86, 11, 30, 53,143, 60, 26,185,115,164, 80,166,121,221, 92, 94,180,202,177, 39,134,181,230,185, 64, + 57,174,197,221, 75,188,189,189,181, 15, 62,248, 71, 56, 70,139,197,130,128,128, 0,100,100,100, 4, 53,227, 90,146,123,121,121, + 69,108,218,180,201,125,196,136, 17, 66, 79, 79, 79, 0, 64,118,118,182,207, 79, 63,253,212,205,219,219, 59, 39, 43, 43, 43,146, + 82,106,104, 72,195,106,230,137,120, 2,240,165, 82,121,213, 49,130,240,230,205,156,216,217,195,203,187,222,154,122,189, 62, 91, + 60,127,198,255,136, 64, 32,170,222, 30, 60, 74, 57,210, 72, 45, 81,184, 80, 40,148,213,183,206,196, 87,247,162, 66,205, 11, 60, + 62,175,234, 98,181,152,245,249, 41,209, 33, 14,212,196,133, 9,197,162, 13,207, 78,122,177,207,147, 99, 70,195, 75,171,193,209, +147,151, 49,125,230, 92,179,197,100, 94,211,172,103, 36,159, 47,200,201,201, 73,118,118,118,246,108,249,243,150,180, 57,114,248, +144,251,209, 95,142, 45, 92,189,246,147,151,188, 3,251,153, 57, 74,107,230, 49,246,235,248,176,112,240,200,177,106,247,118,189, +164,159, 44,121, 65,120,191,213,104, 53,100,182, 28,254, 17,137,101,170,177,111,205,159, 37,125,111,199, 25, 68,174,159,158, 91, + 86,164,215,214,252, 83,208, 56, 95, 40, 45, 42,232,214,156, 76,170,220,131,122, 19,190,224, 69,194,231, 43, 8,143,136, 57, 43, +151,102, 49, 26,223, 55,228,198,103,181,180, 0, 56,142,226,191,167,114, 28, 43, 52,138,246,219,191,249,222,221,195, 73,130, 10, +147, 21, 79,143,155,128,175,191,254, 90,165,213,136, 81, 97,180, 96,229,234,213, 37,165,201,145,238,201,105, 5, 25,225,143,206, +253, 57, 49, 41, 39, 38, 53,171,226,219,134, 79, 2, 15,238, 26, 9,150,238,142,135, 90, 38,132,179, 74, 4, 30,143,212, 62, 73, + 53,205,133,153, 89, 5, 69,181, 52,119, 52,248,163,243,234, 52, 84,227,236,189,235,241, 23,151, 58,221,200, 17,128,194,132, 4, +181, 20, 99,159,123, 69,221,214, 83, 6,133,148,239,116, 43, 37,195,107,222,235,175,159,212,184,183,235, 81,148,147,112,171,169, +227,110,221,186,245,152,145, 35, 71,202, 95,123,237, 53, 97,171, 86,173,176,117,231, 30,255,126, 67,159,122, 52, 51, 75,215,138, + 82, 10, 15,119,247,180,169,147,159, 58,240,227,143, 63,166,164,165,165, 9, 87,172, 88,209,243,251,239,191, 15,117,228,159,169, +149, 82, 84, 84, 90, 97,173,126, 64,234,139, 42, 29,189,160,137,143,143,143, 36, 35, 35,163,210, 86,203, 64, 8,169, 41, 76,229, +255,217, 59,239,176,168,142,246,253,223,179, 13,182,193,210,155, 10,138,136, 32,138,189,247, 18, 53, 18,187,198,150,104,236,166, + 24,147, 24, 75, 52, 81, 99,141,177,151,152, 24, 99,140, 26,187,177, 97, 47,168,137,198, 2, 54, 84, 80,169,210,151,182,236,178, +125,247,204,239, 15,192, 16, 66, 89, 80,127,239,251,205, 59,159,235, 58, 23,123,150,221,123,207, 57,115,202, 61,207, 60, 51, 83, +171,121,159,158, 93,219, 10,126, 56,149, 0,141,222, 10,153, 88,136,132, 76, 45, 90, 53, 15, 37, 63, 90, 45,205,202,211,156,240, +118,216,124, 79, 57,237, 59,160,189, 63, 60,156,165,216,190,105, 41,142, 93,143,239,155,169, 33,112, 27,176,114,138,183,189,224, + 13,119,169,104, 99,183, 86, 1, 94, 61, 90,250,225, 86,171, 0,175, 43,145, 49,177,161,111,175,249, 40, 85, 35, 60,159,123,234, + 35,117,249, 55, 30, 30, 92, 28, 68,248,233, 76, 18,164, 98, 1,100, 98, 1,100,246, 69,127, 75,151,127,141,106,181, 62, 33,117, +248,156,117,130,163, 79,200,132,145,111, 15,247, 25, 61,114, 56, 5,159,135, 3,135,142, 15,220,189,123, 87,186,220, 43,104,155, +149,199,255, 73,151,246,240,121,149,199,148, 7,120, 40,236,240,249,182, 7,112,148, 8,225, 32, 21,194, 81, 42, 68,143,166,238, +224,243,106,124,227,113,158, 58,176,126,191,123, 59,123,117, 15,242,149, 7,222,125,166,122, 56, 97,201,237,117, 17,249,221,103, +108, 90, 27,226,170,201, 55, 10,190,154, 57, 73,144,146,150,214,253,192,241,203, 61,124,218, 76,136,177,152, 10,191,200,186,187, +191,220, 8,238,243,199,215, 90,212,110, 63, 92,108,210,152,239,223,141, 73, 9,200, 51,216, 35, 58,177, 0, 50,177, 0,242,146, + 99, 43, 22, 64, 38, 22, 66, 46, 22, 32, 45, 37, 1,185,133,252,223, 83, 93,121,221,105,196,181,106, 53, 81,233, 77, 86,220,137, +215,160,110, 80,115,120,123,251,192,216,111, 76,221, 27, 23, 15, 29,149,121, 55, 90, 94,152,254,232, 11, 91,117,126, 61,241, 39, +230,124, 50, 37,146, 0, 81,197, 15,233, 22, 95,173,216,220,242,235, 57, 31,252,237,189,153,139, 54,180,172,121, 36,203,113,126, +143,193,239, 47,234,252,198, 96,168,115, 51,113,237,236,126,244,121,107, 40,198,140,255, 24, 78, 78,110,223, 10,197,138,187,102, +189,234,226, 63,238,185,222,141, 58,133, 54,105,180,187,150,143, 79, 29,142, 43,154,229,131, 82,160, 83,215, 30,152, 53, 99, 18, + 56, 74,209,172, 69,155, 30,253, 70,126, 68,105,241,108, 32,217, 57,217,133, 49,143, 31,246,210,101, 62,190, 97,243,177,212,235, +205, 74,165, 18,119,238,220, 65,108,108, 44,162,163,163,145,147,147, 3,133, 66,161,169,230,249,228,216,180,105,211,209, 23, 47, + 94, 20, 59, 59, 59,191,120,223,104, 52,194,193,193, 1,163, 71,143, 22,246,238,221,187, 86, 88, 88,216, 88, 66,200,175,148,210, +130,242,116,116, 57, 79,210, 28,189,130,191,239,218,173,235, 52, 0,144, 56,122,199,111,252,249,120,116,165,215,154,194,199,175, + 67,135,142, 1,160, 20, 4,116,125, 97,118, 76, 70, 37, 81, 34,217,159,127,254, 89,159,207,231, 11,254,122, 6,113,248,110,251, +190,224,115, 87,239, 15, 89,241,237, 42,177,163,204, 30, 74,149, 17, 19,199, 12,182,249, 25, 44,245, 10,238,215,177, 99,215,163, + 95, 47,250, 82, 32,151,201,112,246, 70, 28, 62,154,241,185, 62, 61,241,193, 42,202, 9, 55, 23,102,197,100,189,228,163,242,149, +244,140, 11,172, 45,135,195,128, 62,226,169,239, 14, 16, 27,205, 86,228, 23,154, 97, 48, 89, 97,229, 40, 84,133,102, 60, 76, 86, +195,205,209,174, 38,210,173, 1,184, 3, 80, 2,184, 85,102, 29,197,175, 81,206,122,118, 81,120, 4,174, 0,140, 0, 74,255,120, +201,122, 69,239,151,124,255, 33,128, 70,197,154, 86, 0, 55, 1,228,149,103,182,202,139,114, 9,194,195,195,105, 88, 88,216,139, + 59,126,217,245,178,216,139,132, 62, 50,133, 59, 40,125,132, 82,207, 54,120,122,215,206,217,242,253,143, 46, 10,103,215, 36, 85, + 94,142, 95,241,143,156,183,229, 97, 33, 32,252, 53, 93,187,117,233, 61,237,253,247, 17, 84,191,182,200,106,181,210, 7,177,241, +230, 29, 63,109, 31,167,168, 19,186,174, 32,229,193,252,146, 16,100,117,123, 57, 88, 57,107, 74,217, 8,150,149,179,166,148, 57, + 24,231,255,121,192, 0, 39,185, 29,190, 63,149, 0, 74, 1, 2, 10,133, 76,136,189, 17, 41,136,143, 60, 92,240, 86,179,130,194, +209, 43, 22,246,232,222,111,250,197,135,207,244,251,179,178,244,103, 40,165, 25, 21,105,242, 8, 32,224, 19, 56, 74,133, 80, 72, + 69,112,146,137, 64, 74, 61,192, 74, 55, 23,118,235, 55,253,220,197, 63,146,190, 0,160, 44,157, 15, 85, 90, 83,226, 21,216,218, +209,169,246,254, 33,211, 86, 58,220, 79,177, 64,192, 7,252,189, 36,112,113, 16,193,104, 33, 72, 84,154,138,175, 28, 39,124, 52, +115,145,203,156, 79,167,157, 36, 36,164, 9,165, 15, 77,149,237,187, 86,171,181,123,231,157,119,132,102,179,217, 52,122,226,199, +189, 51, 50,148, 3,191, 91,255,141,189,135,135, 39,180,122, 11, 34,163,159, 54,250,250,235, 69,254,199, 79, 71, 28, 89,248,249, +212,163,125,251,246, 85,236,219,183,143,171,234,120,254,173,134,152,153,189,105,251,238,131, 59,215,174, 90,134,152,164, 60,252, +244,195,102, 80,171,229,251, 42,194,178,231, 75,189,166, 95,124,241,133,228,200,145, 35,181,101, 50, 89,129, 86,171, 85,254, 45, + 30,193, 35,130,204, 92, 45,220, 28,236, 32, 18,240,224,233, 44,134,135,194, 30, 66, 62,192, 35,196, 90,158,230, 79,251,195,151, +112, 90, 21,142,237, 49,142,220,190,105, 41,198,127, 56, 15, 15,178,237, 78,243,164,138, 37, 31,140, 28, 50,199, 93, 98,237,235, +227,196,243,232,209,178, 46,100, 98, 17,230, 78,127, 7,109, 34, 19, 61, 82,243,185,121, 74, 29,191, 57,128,121,229,150, 59,175, + 40,130,229, 32, 21,226,244,238,111,179, 10, 85, 74, 85, 73,147,156,209,160, 79,178, 49, 36,125,190,156,154,237,156,150,205,155, + 46,157, 54,121, 2,175, 99,251, 54,148,199, 19, 34, 91,109, 36,148, 2, 51, 62,154,138, 15,166, 78,242,122,158,150,245,213,230, +205,223,207,151,123, 52, 90,172,201,122,180,176, 50, 77, 30, 41,138, 2,201,197, 2,200, 37, 69,198, 69, 46, 22, 64,111,180,130, + 16,240,157,253, 90,170, 72, 81, 36, 55, 45, 39,177,252, 26,120, 89, 77, 23,223,198, 23,206,197, 59, 4,231,237,207,187,158,144, + 22,189, 36,242, 94,230, 77, 74,105,174,111,215, 79,199,154, 44, 20, 26,189, 5, 9,153, 90, 88, 76,148,140,127,211, 15,245,134, +145,160,101,219,163,118, 18, 66, 28, 75, 12,116, 89,205,148,235, 7,244,110,161, 67, 70,172,221,240,195,173, 85, 75,231,241,179, + 85, 70,112,148, 66,108,199,135,196, 78, 80,188,240,161, 43, 84, 97,243,150, 31, 51, 44, 32, 67,104, 68,132,165, 58,231, 39, 56, + 58,102,112,191, 46,123, 9, 96, 71,120,162, 20, 31,191,186,126, 61,251,143, 19,247, 28,240, 14,172, 22,227, 28,153,103,240,165, +194,204,199, 23,108,209,108, 18,210, 8, 4,136,210,100,198, 76, 5, 0,185,103,208,247,193, 65,193, 45,203,190,215,160, 65, 80, + 75, 91,202,189, 4,145,196,241, 67,103, 23,247,121, 65,141,155,123,212, 15,237, 74, 28, 92,107, 35,225,201, 29,236,217,242,213, + 46, 78,111, 92,116, 33,124,255,210,117, 63,253,246,118,207,190,131,177,253,187,111,230, 2,184,248,143,235,136,227,198,236,216, +182,181,142,208, 98,228, 74,123, 0, 0, 32, 0, 73, 68, 65, 84,206, 30,102, 11, 7,179,149, 22,253,181, 88,145,155,155, 7,179, +133,131, 88,234, 0, 11, 71, 96,182,114, 48, 91, 56, 24,140, 22,217,212,119,194,222, 7,112,163,188,237,172,221,168,219, 25,145, +189,189, 31, 69,209,220,181,148, 82,240, 45, 70,158,183,183,247,175, 0, 96,111,111, 15,123,123,123,112, 28,135,200, 24,229,135, +238,193,189,166,161,216,224, 89, 77,198,164,188,132,223,251, 84,180,239, 94, 94, 94,253,203,154, 44,189, 94, 15,141, 70,131,171, +215,111, 41,182,237, 60,216, 55, 33, 41,165, 62, 71, 21, 6, 7,143,250,125, 0,244,175,232,120, 22,100, 60,126,191, 78,251,201, +188,207, 62, 24,219, 96,195,142, 19, 55,159,156, 94, 60,183,178, 83,194,191,215, 28,227,103, 83,134,182, 90,177,254,167, 39,185, +191,111,249,164,170, 50, 18, 8, 4, 66,165, 82,249,226,250,222,248,227,158, 86, 81, 49,169,131,214,173, 93, 39,142,140, 83,227, +126, 66, 26,198,246,242,197,223, 30, 2,149,104,202,189, 2,220, 2, 2,130,127,221,188,126,133,224, 73,154, 30,155, 14,223,196, +197,163,223, 95,205,200,186,209,151,102,164,233,106,114, 15,121, 89,163, 85,153,230,165,123,217,208,232, 45, 48, 24, 45, 48,115, + 20, 5, 90, 51,178,242,141, 40,208,154,160,209, 89, 48,246, 13,223,114,191, 87,133, 31,113, 39,132,156,160,148,190,133,162, 97, +169,236, 74,173,131, 16,114,162,120,187,254,182, 62,103,206,156, 47,150, 47, 95, 30, 93,242,217,146,247, 75, 62, 91,217,251,165, +190,239, 58,119,238,220, 38, 43, 86,172, 88,214,190,125,251,189,215,174, 93,139, 47,207,104, 85, 26,209, 42,217,153,240,240,112, + 90, 69,141,162,190,212,209,213,222, 81, 34,132,127, 61, 95,188,247,197,118, 55, 71, 23,207, 44,177,157,128,127,234,212,105,151, + 28,163, 28, 60, 30,191,208,246, 40, 86,195, 14, 18,137, 52,124,245,234,213, 24,217,191,179, 36, 57,219,172,185,151,172,203, 44, + 52,194,226,225,222,208,110,201,178, 21,242, 21, 43,191,253,224,196, 49, 46, 31,192,183,229, 55,241,181,190,205, 39,165,114,176, + 8, 1,229,172, 41,185, 9, 55, 91, 1,192,203,228, 98,105,244,102,240,139,115,107, 8, 1,180,122, 11,248,124,146,149, 31,179, +255,225,232,197, 75,122,236,218,123, 46,141,242,156,212,133,133, 9, 82, 74,105, 74,229, 17, 3,130, 2,173, 25, 10,169, 16, 78, +114, 33, 20, 50, 17,248,165, 46,178,146,230,194, 93,123,206,166, 38, 37,229,220, 42, 54, 89, 21,106, 10,248,188,120,106, 53,235, + 41,181, 58,188,213,218, 29, 30, 78,118,240,118,182,135,189,157, 0,102, 11,160, 51,114,208, 27,173, 72,204,210, 65,173,147, 32, +180,235,112,127, 87,239,219, 6, 87,191,214, 71,114,146,110, 13,169,212,156, 90,173,216,241,235,193, 6,105,105,153, 3, 79, 30, +217,109,175, 44, 48,227, 94, 98, 33,178,242, 13, 0,223, 29, 11,150,109,178,159,253,201,228, 65, 59,246, 28, 74,234,217,185,109, + 82,117,143,107, 97,214,227, 93,161, 29,194,190,127,235,173, 65,146,232, 27, 39,241,228,206,133,165,154, 76,219,243,179, 8, 33, +188, 3, 7, 14, 88, 38, 79,158,172, 94,182,108, 89,157, 99,199,142,213, 83, 42,149,119, 0,152,157,156,156,130, 27, 54,240,187, +123,246,244,169, 90, 97,131,134, 11, 83,178,117, 80, 72, 69,240,243,144,226,250,213, 51,102, 59, 59, 97,185,249, 38,197,205,131, +163,106,247,154,141, 99,215,227,251, 70,231,136, 35, 38, 77, 24,155,116,246, 74, 76,206,198,157,103,191,169, 37, 55,223, 17,115, +202,141,183, 91, 5,120,205,249,232, 29, 44,223,176, 11,151, 35, 99,178, 10,121,222, 75,211, 13,150,115, 11, 71,204,170, 32,148, + 94,100,176, 29, 36, 66, 20, 22, 40, 85, 79, 35, 79, 53,124, 69,145,234,177,103,143,236,226,229,170,205,120,158,173, 39,105,185, +106, 88, 57, 10, 39,169, 8, 22,142, 34, 63, 55,155,236,222,181, 19,183,110, 93,231,129,207,155, 8, 96, 97,165,205, 92,164,168, +169, 80, 46, 22, 22, 69,132, 36, 69,127,205, 86, 14, 65, 13, 2,176,117,227, 26, 71, 55, 15, 79,116,234,210,221,246, 40,181,171, + 95,179,189, 63,111, 68,196,181,168,110,151,215,109,106, 45,247,113,223,224, 88, 59,100,149,162,222, 27,122,131,201, 10, 85,126, + 30,236,140,207,209,166,150, 18, 46, 82, 43, 18, 11,188,241, 32,227,137,188,170, 92,168,236,251,135,239,184, 55, 25, 60,255,224, +241,139,203,251,188,209, 13, 15, 18, 11, 32,177, 19, 64,108,199,135,216,142, 15, 33,177, 98,205,150,239,205,121, 42,245, 91,217, + 15,142,100,215,224,252, 60, 95, 92,251, 45,122,200,121,214,119,223,181, 97,254, 47,147,102,173,236,211,119,240, 56,242,224,214, +165, 47, 0, 92,176,173,162, 71,109,122,143,227,108,127,198, 73, 28,221,215,127, 58,255,219,233,189,223, 26, 14, 62, 95, 0,179, +217,140, 67,251,118,225,231, 77, 11, 30, 27, 53, 57,227, 40,165, 28, 33, 46,147,247,239,218, 50,124,214, 87,107, 72,147,102,109, +218,150,235, 39,249,228,135,119, 39, 76, 25,225,233,233,233,240, 87, 68,139,162, 97, 80, 8,250, 13, 24,138, 51, 71,127,195,195, +232,123,224,104,145, 97,226, 56,138,252,188,156, 12,139,217,184,163,194, 22, 15,177,216,111,251,207, 59, 3,121, 60, 2,147,153, +131,209,194,225,147,247,223, 51, 78,157,241, 69,167,126,189,187, 70,219,241, 81,144,152,156,238,116, 61,234, 81, 40, 39,148,215, +153, 48,115,141, 72,111,176, 66,165, 53,227,228, 79, 21,123, 29,137,139, 95,251,102, 29, 6, 77,152,250,229, 86,123,123, 62,207, +212,184, 97,157,248,174,237, 26, 63,247,245,113, 83,127,189, 98, 83,155,223,111, 68,245,123,123,244, 4,241,216,224,150,196,199, + 85,226,240,222,232,193, 77,101,174,190,239, 22,230, 36, 87, 56,101,154, 80,234,156,239, 91,175,129,246,175,136, 81,208, 97, 66, +225,255,183, 7, 39, 65,188, 54, 35,102, 8, 0,120,251,248,234,133,246,142,234,106, 24, 17, 10, 0, 27,126,220,211,234,110,108, +218,164,181,107,215, 73, 35,227,212,184, 19,167,130,189,136, 7,147,153, 3,177, 49,168,205, 81,254,148,121,115,231, 56,230, 21, + 90, 17,113, 79,137,232,219,151,168, 81,163, 31, 45,181, 56, 14,145,121, 6,189, 11, 32, 0,192, 51, 66,232, 15,133,153, 94, 71, + 41,141,168,118, 39, 3,142, 43,170, 47, 43, 60, 2,252,173, 2,251,126, 66, 59, 89,123, 66,104, 99, 66,225, 12,208,212,156,226, +103,170,173, 78,173, 48, 51, 22, 43,151,125,133,245,219,126, 67, 90,142, 30, 10,235,115, 28,253,105, 9, 62, 91,254, 43,116,134, +138,179, 26,170,242, 35,229, 25,163,178,134,171,228,117,201,231,150, 47, 95,254, 86,153,178,121,171,130, 50,251,199,231, 74,190, +191, 98,197,138,101,165,254,175,181,213,100,189, 48, 90, 37, 59, 85,197,206, 53,116,247,246,187,118,244,200, 97,231, 60,141, 9, + 98, 17, 31,190,245, 26, 96,225,198,163,238,111,182,114, 67,182, 73,129, 61, 91, 87,229,234,181,234,125, 54,221, 44, 60,131,219, + 58, 56, 56,156, 60,124,232, 55,212,247,245, 16,237,190,154,155, 16, 21,175,123, 17,234, 45, 80, 38,217,213,115,212, 10,134, 12, + 30, 44,189,112,241,210,140,138,140, 22,159,240,107,255,184,243,144,135,131, 68, 8, 66, 0,181,206,130, 73,239, 14,125,249,199, + 24,229,248, 19,198,141, 5, 41, 54, 89, 5, 57, 25,248, 98,246,251,122,153,249,201,195,228,196,228,212, 94,253, 63,187, 80,160, + 33,250, 17,239,188,127,235, 97,236,242,188,170,207, 98,115, 74,191,176,126,162,162,200, 1,192, 39, 4, 28,229, 50,131,234,201, + 63,250, 71,115, 97,134,225,199,170,140,155, 58, 53, 38,215,193, 59,116,216,174,213, 31,254,232,227,233,225, 42,151, 73,168, 92, +106, 79, 26, 7, 7,138,218,181,235, 96, 87, 47,168,169,232,234, 35, 29,146,149, 58,196,167,169, 96,239,217, 92, 48,178,199,155, +216,181,110,102, 55, 66, 8,175,108,146, 98, 89,206, 69,252,217,127,219,150,181,246,153,249, 38, 60, 78,214, 32, 35, 79,143,244, + 60, 3, 50,114,245,144, 75,132,232, 50, 96,178,125,248,209, 31,250,247,236,220,118, 67, 77, 14,111,124,124, 66,120, 98,106,250, +240,166, 45,218, 96,215, 47, 63,119,118,118,246,119,204,203,139, 47,176,181,116,150, 44, 89, 98,183, 98,197, 10,193,198,141, 27, + 11,218,181,107,231, 53,119,238,220, 62, 89, 89, 89, 55,235,214,173, 27,116,230,240,142,139,205,187, 12,108, 13,206,228,222,185, +107,119,145, 61, 39,192,217, 19, 39, 76,251,247,237,206,209,233,212, 83, 43, 53, 28, 82,197,146, 76, 13,129,123,173, 90,209,114, + 59,235, 27, 2, 94,126,108,238,169,143,118, 2, 56, 28,240,230,244,243,151,110,199,196,182,138, 76,244,184, 24,249, 52, 43, 87, +107,106,248,236,212,167,149,222,120,249,132, 64,200,231,193, 65, 34, 0,175,248,174,234, 80,171,217, 83, 16,226, 94, 18, 57, 37, + 32,197,127, 1, 66,144,150,155, 20,101, 67,206, 6,161, 28, 5, 98, 82, 10,161,209, 23,133,230,107,187, 73,161,204, 76,193,119, + 27,118, 32,234,246, 45,244,126,115, 0, 54,255,184, 27,147,222, 29,174,175, 74,141,199, 43,142,104,149,138,102,201, 37, 2, 0, + 4,249,133,102, 28,250,253, 57, 2,252,121, 54, 63, 24, 0,192, 65, 46,133, 74,173, 3, 79,228,128,103,145, 39,165,167, 46,221, +152, 59,127,241,218,207,243,210,239, 37, 63,189,127, 21, 65,110, 42,248,215, 50, 33, 58,195, 17,183,115,234, 33,168, 65,125,240, + 68,183,108,210,206,142, 14, 93,121,148,119,232,173, 86,205, 67,218,251,121, 56, 65,103,180, 22, 71,181,248,248,121,251, 78, 36, + 38,164, 76,200,142, 62, 18,245, 42, 28,173, 38, 51, 78, 41,246, 12,252,224,254,141, 11,241,131, 71,127, 0,239, 90,190,205,170, +147,182, 96,203,123, 86, 27,141,150,157,204,121,238,204,175, 86, 79,239, 29, 54, 12,127, 94,189,128, 59,209,207,208,182,109,107, +188, 57,104, 36,212, 5,185,193, 7,118,174,123, 3,192, 25,129,189,101,122,155, 14, 61, 8,103,181,226,201,227, 7,207,202,211, +210,166, 61,190, 3,192,241,111,205, 83,238,141,154,201, 21, 46,119, 12, 38, 43, 82, 83, 83,240,199,181,136, 22,197,159,179, 25, +123, 17, 31,103,163,178, 96, 50,115, 48, 89, 56,116,233,250,134, 81,196, 51,116, 94,186,118,123,187,244,180,116,158,204,209,141, +115,169,213, 72,228,109,111, 50,220,141, 83,137, 76,102, 14,245,125,100,149,106,186,251, 52, 88, 54,115,230, 39,141,248, 34, 9, +212,133, 6, 99,122, 90,170,215,214, 61,151, 52,143, 30,223,175, 85,219, 67,225,248,205,186, 31, 68, 5,122,130, 44,149, 1,185, +234, 2, 50,122,202, 44,159,109,155,150,143, 1, 96,243,220,180,132,194, 63,252,236,213, 96,103, 7, 17,209,232, 45, 92, 78,129, +201, 58,122, 80,247,151, 58,119,138, 77,214,228,181,107,214, 73,163,226,212,184, 27,167,130, 88,196,135,157,136, 7,163,153,131, + 45,151, 19, 33,132,231,223,164,235,212, 14,173, 66,113,230, 78, 54,248,124, 30,116,234, 60,173, 0, 57,177,173,186,245,150,182, +108,211, 14,221,187,117,197,211,216, 24,223, 19,199, 14,245,188,254,199,229, 12,185, 71,208,135,154,172,152,223,170,117,158,107, +181,124,179,157,215,123,222,181,234,118, 28, 50,242, 61,133,159,111, 45,226,225,230, 10, 11, 21, 96,242,187, 67,109,190,242,139, +140, 57,176, 98,241, 92, 24, 12, 70,184, 59,217,129, 82, 96,251,134,133, 48, 26,141,240,113,181,135,170,208, 92,225,247,171,242, + 35, 21, 69,161,170,217, 12,125,162, 60,179, 85,246,125, 66,200,137, 57,115,230,124, 1,128,206,153, 51,231,139,146,245,229,203, +151,235, 0,164, 85,214,116, 88,218,120, 9, 74,239, 92,133, 27,101,103, 23,228,230,237,119,253,236,153,211,138, 35,119, 57,252, +249,219,109,132,181,245,134, 72,192,131, 84,225,131,187, 9, 42,132, 31,222,146,127,116,239, 15,169, 6,131,225,219,170,219,154, + 3, 91, 57,200, 28,207,252,178,107, 31,231,230,234,202,251,238,172, 50, 46, 71,109,121,209,164, 21,123,227, 24,119,251,204, 86, +111, 10,114, 90, 44, 22, 55, 48, 26,141,206, 85, 21,236,246,179, 73,197, 73,188,228, 85,220, 91, 65,248,124,235,174,221,187,224, +230,104, 7,131,153,195,156,207, 63,214,141,237, 45,207, 31,253,246,200, 30,221,251, 77,191, 40,148, 5, 94,232,208, 34,144, 54, +111,222, 60,159,207,231, 87,169,151, 19,127,243, 31,189, 43,130,235, 73, 39,206,155, 53,118, 94, 57,205,133, 54, 37,238,170,211, +239,255, 14,224,111, 17, 18, 18, 16, 96,247,235,129,163, 31, 15,123,123,196,252, 90,205, 6,201, 19,210, 85, 16, 17, 19, 90, 55, +242,198,165,211,191,209,148,196,216, 79,170, 50, 89, 0,144,165,204,173,227,238,238,137,168,120, 13, 82,115,116,200, 40, 54, 89, +233,121, 6,168,117,106, 52,245,243, 65,190, 74, 85,167,198,199, 23,248,237,204,153, 51,195,251, 13, 28,129,233,159, 47,234,244, +211,150, 85,247,228, 94, 13,199,107, 50, 98, 35,108,169, 41, 18, 66,114,103,207,158, 29,240,227,143, 63,242,198,140, 25,163, 11, + 13, 13, 21,191,243,206, 59,157,118,238,220, 41,150, 74,197,186,187, 87,143,205,159,248,209,156,129, 91,215, 47,105,150,151,151, + 71, 44,102,243, 41, 83, 94,222, 28,117, 21,102, 46,249,232,220,199, 36,100,209,184, 55, 58,187, 31,115,145,242, 26,219, 83,227, + 72, 18,178,104, 31,125,184,192,244,236,212, 6,117,232,219,107, 62, 74,203,231,230,233,121, 30, 75,171, 50, 89, 0,192,227, 19, + 24, 45, 86, 56, 72,132,224,241,120, 37, 38,222,251,231,125,167,164,238, 10, 59, 8,249, 60, 8,248, 69,209,206,236, 2, 19, 62, +120,111,160,205, 53, 1,139,149, 66,103,180, 64, 91, 92, 59, 84, 23,100, 99,238,231,159,226,205,254,131, 49,113,234,167,200,211, + 1,183,227,213, 48,153,205, 85, 94, 20, 60,194,131,214, 96,193,248,222,126,200,213,152, 80,168,179,192,104,225, 32,181, 19, 64, + 40,224, 65, 38, 22,192, 81, 42, 4, 40, 21,149,220, 76,132, 66,161,222,100, 50,237,170,164,156, 80,175,142, 39,116,102, 30,218, +140, 88,133, 94,237, 27, 34,250,247, 67,130,203,127,222,247,159,241,249, 60,124, 60,169, 63, 14, 62, 14,128,139,135, 31,228, 50, + 9,204,148, 7,192,182,161, 67, 40, 93,192,121, 7, 15, 25,245,253,143,219, 99,190,254,106,142, 56,191,144,192, 94,196,199,197, + 11,231,113,253,198,237,245,202,232, 35,187,240, 10, 17, 82,158,167,163,163, 35,196,118,124, 24, 77, 6,163,237,169, 11, 20, 20, +104, 33,247, 12,250,190,184,198,223,194,202,161,156,247,170, 54, 90, 66,137, 98,206,244,217, 75,150,245, 14, 27,134,179, 39, 14, +226,192,193,125,214,246,125, 39,240,119,255,188, 5,157,122, 13, 64,167,222, 35,112,234,183,157,159, 10, 37,138,144,201, 31,127, +185,184, 75,143,126, 56, 27,126, 16,153, 25, 41,171,109,221, 94,190,144, 76,239,241, 70,127,232,141, 86,116,238,249, 22, 78, 31, +255,237, 35, 20,119,178,176,253, 33, 86,230,254, 12,158,229,211, 79,166, 11,179,242,141, 66,101,129, 17, 41, 74, 45, 18, 50,181, + 56,186,247, 39,106,251,253,194,216,186, 75,211,218,194,201, 43, 47, 62,175, 83,219,219, 32, 52,232, 36,177,207,226,130, 39,190, + 55, 86,232,223, 32,152,151,165, 50, 64,169, 50, 32, 91,101,128, 70,111, 65,131,218,129, 60,179,133,180,175,110, 57,187, 41,236, +132,155,143,199,195, 81, 38, 68,135,224,154,119,180,229, 56,238, 47,147,181,182,200,100,221,139, 87,193, 94,196,135,189,136, 7, +123, 17, 31, 22, 43,181,169,226, 34,241,104,216,239,131, 15,223,247, 49, 90,128, 28,149, 17, 2, 62,129,135,155,179,172,117,179, + 81,216,190,234, 35, 0,192,164,217,223, 97,226,248,119,208,168,113, 40,242,243,242,188, 70, 13,235,183, 22,192,111,182,110,235, +201,179, 17,190,103,175, 68,205,254, 96,230, 2,249,219,253,187,243,239,196,169,144,158,107,192,179, 88,117,181, 34,111, 0, 96, +177,114,160,160,216,177,239, 4, 36,118, 2, 40, 85, 38, 80, 74,177,100,227,126, 56, 72,132, 72,207, 43,106,238,175,140,202,252, + 72,101, 17,169,106, 68, 27,223, 66, 81, 46,151,187,173, 17,173,229,203,151, 71, 47, 95,190,188,220, 8, 89,137,201,170,241,164, +210,118,118,242, 96, 55, 87,159, 63,207,158, 62,233,240,219, 93, 43, 46,221,205,193,176,206,181,161,201, 77,198,183,159,191,157, + 75, 64,141, 60, 62, 63,223,160,211, 30,214,233, 10,151, 82, 74, 77,149,154, 44,239,160, 22, 50,137,227,249,205, 91,127,177,184, +121,120, 96,215,213,220,148,188, 66,139,249,175,102, 43, 51,185,125,102,171,191,133, 51,247,213,101, 60,169,178,122,203, 81,136, +150,111, 57, 10,128,130,227, 56, 80,142,131, 80, 44,151,185, 7,180,207, 44,190,209,137, 5, 60,162, 47,125, 7,160,156, 37, 69, + 25, 87,121, 24,148, 0, 80, 72,133,216,119, 57, 21, 0, 50,249,234,200, 71,163,223, 46,106, 46,212, 27,197, 5,141, 3, 2,104, +235,214,173,243, 37, 18, 73,141, 11,187,186,205,133, 54,157, 64,207,158, 25, 1,172,244, 9,234, 60,184,143,188,105, 27, 59,158, + 8, 45,131,188,113,233,204, 17,250,231,233,237,147,180,153, 49,191,216,120, 34, 66,163, 55, 35, 45, 71,143,212, 28, 61, 50,242, +244,200,200, 53, 32, 35, 79, 15, 66, 8,244,198,151, 27,254,166, 48, 43,230,192,174, 95,182, 13, 48,152, 48,178, 75,239,193,248, +116,193,102,191, 93,223,175, 56, 47,241, 12,238,104, 75,162, 45,165,212, 74, 8, 73,124,239,189,247,154,237,217,179,135,223,164, + 73, 19,221,163, 71,143,164, 0, 56, 0, 38,185, 92, 42,249,105,211,242, 51,109,218,180,217,155, 26,251,248, 34,128, 60, 91,186, +231,215,237,246,158,125,176, 99,238,100, 95, 89,135, 62,245,189,164,240,149,169,251, 4,203,239,126,235,209,115,198,178,172, 11, +235,178,210, 13,150,115, 74, 29,191,121,170, 70,104, 83,174,160,217,160, 79, 26, 50,108, 36,248,132, 7,147, 94,155, 84,114,114, +121, 40,236,176,112,247, 99,200,197, 66, 56, 72, 4,144, 75,132,232, 20,226,130,106,220,207,168,217,202, 65,107,176, 66,103,176, + 64,111,180,192,173,142, 51,126,220,117, 0,201, 89, 58, 28,189,149,141,152, 36, 53, 2,107,203, 64,105,213,183, 73,206,106, 46, +236, 63,116,140, 3,159, 71,192,231, 17, 94, 72,112, 67,228,106, 76, 16, 9,120, 16,137, 37,144,217, 11,224, 40, 17, 66, 36, 18, + 34, 43, 43, 11, 6,131, 1,190,190,190,226,202,173, 32,133,131, 92,130, 64,127, 31,152,204, 22,156,188,242, 16, 75, 63, 25,130, + 55,186,180, 2, 17,202,241,216,208, 2, 14, 46, 14,224,120, 60,152, 44, 28,140, 38, 43, 0, 94,133,209, 55, 95, 95,223, 30, 50, +153, 76,166,213,106,213, 73, 73, 73, 17,233,143, 15, 39,123, 52, 30, 52,249,244,217,139,187,222,122,243, 13, 68,221,139,198,193, +223,142, 93,205,118, 85,205, 44,249, 78,147, 38, 77,218,185,185,185,201,115,114,114, 10,238,223,191,127,179,134,181, 95, 34,243, + 12,158,209,190, 83, 55,104,242,179,144,249, 60,193,230, 90,116, 35, 63, 7,124,185,124,115,203,160,134, 65, 45,173,180,200,120, +133,248, 58,224,179, 5, 27, 90, 6, 4, 54,108, 89,210, 33,164,145,175,188,114,147, 37,115,236,253,238,228,207,150, 15, 24, 54, + 14, 23,207, 30,195,154,165,159,239,146, 41,220, 27,185, 56, 43,154, 55,105,215, 27, 87,207, 31,131,216,193, 11,206,174, 94,157, +198,140,255,176,215,176, 49, 83,112,253,234,121,172, 95,241,197, 78,171, 65,253,171, 45,219, 42,247,172,239,222,188,117,151,209, + 14, 46,158,200, 87,169,225,224,236,129, 70, 77, 91,143,150,123,214,159,173,201,140, 83,214,244, 90,231, 40,133,193, 68,145,167, + 49,225,185, 82,135,196,140, 34,163,197,113,213,200, 9,178,114, 68, 46, 22, 8, 92,204, 79,125,239,159,191, 72,253,234,120,146, +149,139, 63,231,155, 32,134, 50,191,200,100, 41, 11,140, 80,170,140,208,232,205,112,145, 9,192, 89,185,106,215,186,243, 52, 38, + 56, 20,231,209, 90,185,154,231,134,111,249,121, 95,208,221,216,180, 65,107,214,172,147,222,137, 47,101,178,132, 69,209, 44,123, + 17, 31, 86,142, 43,126,210, 84, 97,176, 5,194,233, 3,251,245,194,243,108, 93, 81,175,101, 30, 65, 96,104, 27,184, 73, 56,244, + 28, 49, 7, 0,208,191, 95,209,240, 37,241,233,133, 56,254,167, 18,248,123, 98,119,229,247, 98,157,142,191,117,119,248,140, 3, +251,247, 42,244, 86, 1,126, 56,149, 8,173,193, 2,177,136, 15,123, 17, 31, 18, 17,255,111,249,216, 85, 27,173,162,156,187,228, +108, 51,180,122, 61, 10,116,102, 80, 0, 55,159,106,160, 51, 90,160, 42, 52,163, 93,176,243,203,214,125,194, 1,132,149, 53, 68, +101,205, 82,169,136, 84,121,220, 42,173, 81,242,249,138,140, 92,233,156, 45, 0,213,234,193, 37, 40,235, 28, 75,175,219,201, 93, + 26, 41, 92,221,255, 60,125,234,132,252,183,187, 28, 34,238, 21,153, 44,179, 46, 27,171,103,143, 74, 41,200,207,238, 78, 41,141, +179,245,199,100,238, 33, 77, 37, 82,233,197,111,214,253, 96,242,240,172,197, 29,254, 51, 63, 75,165,181,254, 45,134,104, 53, 24, +120,148,163, 34, 91, 76, 86,113,147,135,105,193, 71,131,193, 81,138,133,235, 14, 96,217,204, 17,144, 75,198, 72, 9, 33,210, 66, +189, 5,159, 44,218,134,213, 95, 78,112,144,218, 11, 64, 8,160, 55, 90,241,238,200,193,182,157,128,122, 11,158,221,216,163, 81, +199,159,120, 84,186,185,176,109,167, 55,111,183,109,219, 54,223,217,217, 25, 18,137,228,175, 72,133,141, 55,237,242,122, 23,102, +229, 35,197,193,193,161,171,163,163, 99,105,189,194,252,252,252, 35, 53, 57, 11,213,249,217, 23, 51, 18,239,183,233,216,189, 63, + 34,206, 28,161,127,158,250,105, 82,117,198,232,113,118,113,126, 30,121,255, 89, 35, 66, 92,138, 34, 90,197, 38,203,104,230,224, +231, 41,197,243,196,103,112, 82, 40,158,219,170, 39,245, 8, 30, 72,120,116, 42, 1,221,174,201,136, 61, 80,108,122, 70,201,188, +130,239, 69, 63,184,179,244,173,209,211, 5,189,135,189,207,255,126,249,135, 95,160, 76, 18,107, 37,152, 98, 98, 98, 30, 78,152, + 48,161,195,245,235,215,173, 0,180,132, 16, 51,159,207,151, 26,141, 70, 81,247,238,221, 85,143, 31, 63,190,140,114,146, 22,203, +210,121,252, 65, 55, 98,175,126, 51, 32,176,245, 40, 63, 7,245, 27,221, 59,183, 71,251,198,117,240,188,115,123, 0,152,158,164, +145, 7,117,154,246,211, 62,127,247,218, 39,191,255,249,248,178, 73, 35,122,125,226,211,127,209,154,180,227, 11, 42, 77, 68, 77, +126, 24,209,167, 60, 27, 47,224,243,224, 32, 17, 66, 46, 17,192, 65, 34,132,131, 88, 8,179,133, 86,167,230, 72,205, 22,174, 40, +162,101,180, 64,163,179,224,226,157, 76,100,168,140,200, 87,155,160, 51, 89, 65, 65,139,106,163, 54,220,205,179,158,252,238,244, +162,236,253, 90,170,182,110, 92,229,120,232,247,148, 23, 61,250, 20, 82, 59, 56, 72,139,122, 99, 95,185,114, 5,174,174, 85,215, +246, 57,142,195,193,211, 55,177,102,199, 69,156,222, 62, 11, 98, 17, 31, 77, 7, 46,194,184, 65,109,193, 81, 14,207, 98,162, 51, + 3, 67,154,121,242,120, 18,240, 8,129,193,204, 1,160, 21, 30, 79,163,209,232,154,156,156, 92,208,160, 65, 3,175, 90,181,106, + 13,227,243,249,212, 30, 48, 28,217,155,171,189,112,226, 87,105,161,206, 96,149, 90, 84,219, 27,164,235,194, 2, 3, 3, 65, 8, +161,110,110,110,162,139, 23, 47,106, 66, 67, 67,221,107,104,178,120, 18,143,134,235, 39, 78,155, 49, 44,160,126,125, 28,248,117, + 59, 40, 37,135,108,253,254,238,227,215,177,120,238,223,123, 24,126,182, 96, 67,203,213,139,166,255,237,189,105,115,215, 84,218, +235, 80, 98, 47,159, 57,100,212,100,220,190,121, 13,223, 46,250,108,175, 65,147, 59,206,108, 49, 15,207, 77,143,223,235, 31,210, + 22,212,164,198,217,253,171, 48,226,157, 73,246,189,223, 26,134,235, 87,207, 99,217, 23,211,118,107,243,179,222,179,117,252, 47, +142, 10,167,118,239, 51, 72,168, 51,152,176, 97,229, 87,152, 50,115, 41,218,245,232, 47,124,112,231,207,169, 0,190,182,117,159, + 13, 38, 43,186,135,186, 21,153,103, 51,135, 99,241,124, 65,121,103,160,128, 79,120,205,235, 59, 65,103,180,160, 64,107,174,252, + 65, 37, 18,102,228,171, 10,234,110, 90, 54,131, 95,168,183, 64,169, 50, 34, 75,101, 64,118,254, 95, 6, 43, 91,101,128, 82,101, +132, 80, 64, 16, 27,151, 4,158, 80, 80,237,252,188, 60,141, 25,109, 26, 58, 23, 93,163, 53,108, 29, 49, 11, 28,219,158,190,124, +119,200,154, 53,107,197,119, 19,212,184, 23, 95, 80, 28,201,226,195, 94,200,131, 93,241,107, 43, 7, 84,245, 19, 10,143, 0,255, +177, 19, 38,245,116,148, 75,144,246, 36, 11, 2,126,209, 16, 49, 10,143, 58, 80,216,235,241,225,180,201,112,115,117, 66,114,182, + 1,235,127,139,197,189,135, 79,193,233,170,183,219, 27,126,216,219,119,226, 7,159, 57,241,132,118,216,121, 38,161,104, 59,249, + 86, 60,254,243,184, 62,237,217,253, 66, 77, 65, 14, 5,181,218, 24, 0, 32,212, 98, 45, 58,221,150, 45,156,131,189, 59,190,195, +153,200,172, 23,201, 91,191, 31, 90,141, 25,115,151, 32,187,192, 88,124,234, 87, 30,201, 42,179,174, 44, 21,137,250,199,122, 41, +115, 84,222, 58, 41, 94, 55, 86,160, 97, 44, 99,174,140,101,222, 55,150,209,187, 91, 78,229,127,107,149, 77,135,255, 48, 69,206, + 30, 77, 20, 14,138,107,167, 78, 29,151, 29,185, 71, 95,152, 44,147, 54,155, 46,157,222, 63,165, 32, 95,217,187, 90, 38,203,163, + 97, 19,123,153,236,242,252, 37,235, 13,158,181,234, 90, 78,222, 41,200, 81,235,173,255, 8,139,136,164, 50,171, 76,225,174,119, +242,107,177, 70,168, 51,126,165, 84, 62, 44,172, 42,242,196, 81,138, 19, 55, 50, 64,105, 81, 21,105,255,149, 84, 20,215,204, 97, +229,138,154, 85,206,221,201,130,160, 56, 15,197,214,240,247,150, 31,190, 43, 8, 11, 85, 21,142, 94,182,240, 69,115, 97,187,102, + 69,145, 44, 71, 71, 71, 56, 57, 57, 65, 46,151,195,150,166,195, 18, 42,234, 93,232,224,224,208,245,206,157, 59, 98, 71, 71, 71, +240,249,124, 24, 12, 6, 52,110,220,184, 70, 23,186,220, 43,248,131, 54, 61, 6,127,209,169, 71,127, 92, 60,125,152,254,121,250, +231,201,213, 29, 8, 49,172, 87,135,227,139, 23, 47,244,159,191,116,147,189,131, 88,128, 71, 26, 35,120,132,192,207, 83, 10, 87, + 25, 15, 17, 71,118,234, 71,244,239, 96,243,224,120,117,234,212,218,181,122,227, 86,217,234, 21,139,186, 59,212, 10,186,168, 78, +141,201, 5,128,194,140,199, 43,165, 94,193, 15,107, 95, 59,123,178, 89,215,193,240,244,169,255, 70, 53,194,191,148, 16,162,141, +139,139,139,159, 63,127,126,208,138, 21, 43, 40,159,207,231, 0,216,175, 91,183, 78,251,228,201,147, 59, 40,234,154,139,170, 30, + 54, 61,223,104,252,137,220,206,218,206, 69,202,107, 92,223, 75,138,246,141,139, 90, 69, 71,132,117, 66, 29, 95, 95,196,101,104, +155,231,106, 57,161,198,200,175,191,249,135,123,183,234,185,241, 39, 89,116,198,135,168, 98, 48,217,138,206,217,146, 4,249,146, +104,150,131, 68, 8,174,232,193, 94, 45,163,101, 48, 89,161, 51, 88,161, 51, 90, 80,104,180, 66,107,180,130,163, 69,215, 4, 33, + 4, 38, 11, 7,155,170,205,101,206,125, 71, 23, 55,212,175, 87,212, 75,214, 65, 82, 52,212,131,163, 84, 88,212, 71,218,213, 21, + 30, 30, 30, 54, 69, 69,141,166,162, 75,220,104,230, 94, 52,235, 27, 77, 22, 80, 74, 17, 27, 27, 51, 43, 49, 62,126, 96,131,192, + 6, 93, 66,154, 54,115,145,218,243, 0,160, 66,163,165,213,106,173, 14, 14, 14, 30, 46, 46, 46,188,212,212,212, 23,230,185, 65, +243,238,150,223, 14, 31,194,144, 33,131, 53,143,110,222,125,209,197, 93,167,211,145,142, 29, 59, 58,214,169, 83,135,103, 48, 24, + 10,170,119, 12, 8,145,185, 55, 28, 84, 39,184,195,210,119,223,155,210,176,123,175,190,184,116,225, 44,142, 30,222,243, 75, 97, + 86,140,205, 35,103, 7, 5, 5,255,163,215, 97, 64, 96,195,127,244, 58,172,235, 31, 88,169,209, 10,105,218,186, 45, 37, 2,156, + 57,177,159,234,121,166,105, 69, 9,239,100,255,190, 45, 95,126, 61,106,234,220,128,126, 3, 70,225,221,119,198, 65, 32,224, 35, +226,220,113,172, 94,244,105,184, 70,149, 53,214,150, 52, 1, 0, 32, 33, 33,162, 6,190,117, 63,246, 13,104,130,200, 63,175,226, + 89,236,131,232,187,183,174, 55,110, 16,218, 14,238, 62,126, 31,147,144,144, 21,244,225, 67, 83, 85, 58, 70,189, 62,105,220,216, +119, 80,186,215, 97,251, 22, 65,174,164,236, 5, 0, 64,171,206, 50,253,180,234,147, 39, 37,189, 14, 57,147, 49,169, 34, 93, 85, +158,242, 96,196, 31, 55,102, 14, 12,235,203,203, 46, 48, 22, 69,176, 84,198,226,197,128,236,146,215, 5, 6, 4,250,200, 17, 19, + 29,201,233, 85,217,135,170,121, 93,234,199, 13,239,243,176,228,220,229, 56, 10, 2,232,171,123,125, 83,161,227,228,149,223,174, + 17,223,141,215,224, 94, 66, 65, 81, 83,161,144, 95,100,176,132,188, 23,166,171,168, 55,123, 21,209, 33,194, 95, 54,126,236, 72, +100, 23,152,192,113,128,128,207, 43, 94, 68, 72, 86, 19, 60, 87,107,145,157,167, 68,124, 98, 18,242, 51,158,129,199,227,193,205, +167, 33,108, 13, 63, 90,169,157,183,214, 72, 67,135,133,117, 17, 28,190,150, 14,169,189, 0, 6,117, 38, 78,237, 91,165, 52,104, + 10,150,234,180,154,195,186,156, 39,105,182,238, 59,143, 16,101,129, 70,239,105, 47,228,227,192,142, 77, 24, 62,110, 90,241, 65, + 41,250, 51,107,222, 98,128, 71,144,155,167, 6, 33,164,186, 81,210, 91, 85,172,215,132, 87,161,129,242,204,213,223, 42, 10, 21, +215, 70,233,169,179,167,143,203,126, 79,180,199,205,152,244, 98,147,165,228,150,124, 20,150,162, 86,229,246,161,148,198, 86,107, + 11,120,188, 62, 35,198,207,140,174,223, 48,196,112,233,129, 38, 33,191,208, 92, 97,158, 67,251, 97,243,163,111,135,111,236,167, + 50,199,189, 47,247,105,108,229, 44,150,149,218,172,152, 69, 21, 52, 29,218, 45, 90,127,224, 69,179,225,236, 21, 59,139, 94, 91, +173,176, 82, 14,148, 3, 62,252,114, 11, 44,156, 21,156,213, 10,206, 74, 97,182, 82,105, 85,155,235,225, 83,247,112,222,227,253, +193,163,191,254,103,115,161,147,147, 19, 92, 93, 93,225,234,234,138, 18, 99,244,178,205,133,142,142,142,144,203,229,184,122,245, + 42, 36, 18, 9,100, 50, 89,181,116, 75,153,172,247, 91,119, 27,184,169,199,128, 9, 56,119,248, 7,122,235,202,241, 41,218,204, +152,109, 54, 71,232,173, 86, 98, 54,155, 17,214,187, 91, 82, 84,244,211,211,243,102, 78,237,219,225,173, 41,246,237,131,106, 65, +111,180, 34, 37,241, 25, 34,142,252,172,111,232,239,125,166,103,231,182, 73,102,179, 25, 86,171,181,202, 7,185,222,104,202,230, + 11, 37,178,145, 35, 71, 11,111,221,188,121, 72,238,209,240,128,149,240,238, 18,202, 53, 37,132, 12,105,218,180, 17, 76,102, 14, + 90,109, 65, 94,117,247, 89,173, 86,199,111,223,190,221,127,236,216,177,210,144,144, 16,225,179,103,207,176,122,245,234, 28,181, + 90, 29,111,171,198,217, 43, 49,235, 4, 36,239,137, 29,103, 26,229,231,160,126, 35,185, 83,123,140,124,171, 19,246,134,255,142, +136,171,215,145,164,145,223,209, 88, 4, 71,158, 39,165, 25, 26,187, 20, 28, 26,208,190, 46,255,192,142,188, 67, 30,221,231,190, + 77,169,253, 89,101,196,130, 66,219, 31,226,128, 90,103,134,163,180,104,188,167,146,200, 22,159, 16,155, 29, 17, 1,226,175, 94, +143,108,210, 42, 48, 4, 81,241, 42,100,229, 27,160, 51, 88,192,113, 20, 28, 40, 92, 29,236, 32, 22,241,144,156, 24, 15,142,154, + 18,170,121,187, 80,118,237,210, 85, 0, 16, 16, 66, 5, 66,129, 0, 20, 69,227, 43, 74, 36, 18,141,135,135,135, 77, 17, 45,147, +197,130, 33,125,219,162, 93,235,166, 24, 56,165,104,204,204, 11,191,204,129,179, 92,136,189,187,182, 33,249,242,218, 93,245, 59, + 76, 59,251,224,126,244,208,232,168,107,163,223,108, 41,105,238, 37, 72, 19, 85,164,167,209,104, 14, 17, 66,236, 68, 34, 81,223, + 46, 93,186,184, 28, 58,116, 40,223,205,205,141,179, 19,137,148, 3,250,191,197, 9, 69,162,220,146,207,254,241,199, 31,194, 41, + 83,166, 56,228,229,229, 37,103,102,102, 94,167,148,154, 43,175, 8, 6,247, 2, 15,123, 64,136, 88, 46,145, 38,181,239, 53,210, +167,117,187,182,138, 65, 67,134,195,222,206, 30,231,206,158,198,134,181, 43,246,107,210, 31,141,175,206,145,124, 85,189, 14, 83, +146, 19,226,181, 58, 67,104,147, 86,221,200,213,179, 71,166, 19,226,190,150,111,239,184,170,215,144,105, 1,241,105, 26,108, 88, + 62, 11,206, 10, 25, 18,158, 61,214, 61,121,116,127,139, 89, 95, 48,203, 86,147, 5, 0,210, 28,235,208,246,239,244,117, 54,152, +172,184,114, 49, 92,207, 89,184,190,215, 47,159,124, 86,187, 97,107,113,147,214, 61,157,179,143,110, 27, 2, 96,111, 85, 58, 41, +143,254, 25,193,245, 13,106,147,112,225,226,121,133,167, 95, 99, 62, 1,129,201,160,135, 50,238,150, 69,155,249,184, 64,149,114, +223,166, 94,184, 57,207,241,229,220, 5,223,188,223,186, 85, 43, 25,133,248,111, 17,172, 18,131,149, 93, 96,132,155,131, 29,116, + 5, 74, 60,185,117, 90,175, 85,242, 43, 29,239,204, 98, 44,148,102,103,101,190,104, 98,211,100,198,180,171,236,243,217, 89,153, +118, 22, 99,161,180,234, 71, 29, 31,142, 50, 59,220, 79, 72,125,145,248,110, 47, 44,202,205,178, 19,242, 95,228,105,149,220, 11, +170,160,155, 72,236,132,212, 28, 61, 8, 40, 56,171, 5, 22,179, 17,234,130, 2,164,166,101, 32, 51, 35, 19,106,117, 62,164,114, +103, 52,105,222, 6, 14, 50, 49,238, 70,236, 7,165,212,166,113, 13,205, 68, 24,212,186, 93,103,251, 7,137, 69,185, 88, 98, 33, +197,241, 61, 43,114, 52, 5, 89,157,213,105,177, 79,170,123, 47,182, 88,173,231,239, 61,124,210,184,182,119, 61,114,231,153, 10, +187,126,220, 8, 99,113,100,211,108,182,226, 65,114, 33,210,115,181, 72,142,123, 68, 57,171,245,127,102, 66,106, 65,197, 1, 64, + 8,154, 54,105,132,222, 99, 6,225,187,239,182, 32, 46, 62,145, 91, 58,189, 95,178, 70,157,255,166,173, 38,171,244,236,222,133, + 25,143, 87,142,255, 46, 33,229, 88, 84, 46, 79,103,172,124,126, 43,177,187, 31, 58,143, 95,125, 70,167,206,181,179, 26,180,130, +227,187,198,239, 41, 79,179,200, 65,195,184,244,179, 17,144, 75, 4, 32,132,160,164,185,112,243,226,201,144,218, 23,181, 45,235, + 12, 22,140,249,100, 13,118,173,249, 20, 20,192,168,225,191,107, 43,218,206, 82, 77,123,181,147, 18,179, 82,123,245,255,236,130, +222,100,111,120,107,240,216,219,173, 90,181,202,151, 72, 36,144, 72, 36,112,116,116,132,179,179, 51,156,156,156,170,220,247, 10, + 7, 35, 45,213,187,144,199,227,129,199,227, 65, 38,147, 65, 46,151, 67, 38,147, 85,170, 89,161,201,234, 58, 96,115,207,129, 19, +113,238,240, 86,122,235,202,241,169,218,204,152, 31,109, 45,163,226,230,158,187, 67,134, 12, 9,157, 50,101,138,104,193,204, 41, +103,194,207, 70,196, 30, 56,177,181,127, 94, 94,126, 29, 74, 41,156, 20,138,231, 35,250,119, 56,222,189, 99,235,164, 11, 23, 46, +112,123,246,236, 49, 16, 66,238, 87,181,157,217, 89, 89,191, 92, 56,127,113, 97,231,174,221,176,109,199,158,174,209, 15, 31,117, +125,246,236, 9,234,248,213, 71, 61,255, 64,104,137, 51, 46, 94,190, 10, 77,126,214, 47,182,108,103,153,168, 22,201,203,203,187, + 54, 98,196,136,222,191,255,254, 59,111,196,136, 17,218,236,236,236, 63, 74,234, 81, 21, 69,179, 74,107, 94,219, 50, 72, 9,224, +151,186,221,222,219,159,106,202,255, 24,192, 10, 95, 63, 95, 68, 92,189,142,235,191,223,216,146, 45,245, 93, 52,126,204,123,147, +235, 14,224, 79, 28,208,190, 46,223,195, 89,138, 95,183,174,230, 31,187,158,184, 38, 49,199,186, 13,192, 98, 91,202,232,197,131, + 67,109, 66,199, 70, 46, 48, 91, 41, 56, 90,116,195,117, 16, 11,203,189,241,150,167, 41, 48,218,143,159, 58,101,202,179, 38, 77, +155,207, 24,243,222, 84, 81,243,250,117,112,243,105, 62, 64, 8, 92,188,100, 72, 79, 79,199,149,131, 91, 45,121,169,143,183,240, +249,220,215,213, 57,151,114, 19,163, 26,148,250,220,228,236,236,108, 68, 68, 68,160,196, 96,185,187,187,151,107,180,202,106,230, +100,166,253,177,248,219, 31, 58, 78,122,119, 48,222,234,214, 24,151,111, 61,131,177,120,188,166,146,174,228,241,215,191,183,251, +120, 68,125,227,251, 67, 26, 22,232,204,118,137, 95, 38,168,174,148,238, 21, 91, 86,147, 82,106, 36,132, 28,139,137,137,233,212, +172, 89,179,186, 39, 79,158,204,141,190,113,102,122,233,237,248,208,158,168,121, 0, 0, 32, 0, 73, 68, 65, 84,236,179,207,228, +223,125,247,157,148, 82,250,135,193, 96,136,179,105,223,121,248, 53,242,246,109, 87,147,153,195,213, 27,119, 27,245,236,216, 28, + 28, 5,110,221,186,133,109, 63,109,211,223,191,119,103, 85, 97,166,215,215, 21,153,151,138,142,167,245, 37,122, 29,150,214, 76, + 79, 77, 92,117, 46,252,224,174,214, 93,251, 99,244,135, 95,127, 29, 17,190,103, 97,203,206,111,241, 26,181,238,141,200,235, 23, +113,254,228,233,111, 76,154,220,133, 85,205, 67, 90,209,118,218, 75,164, 31,133,180,236,138,228,164, 68, 36, 60,121,240,139, 46, +231, 73,154,220, 43,248,151,180,148,164,169,254,141, 59,226,247, 51,123,167, 87,100,180,170, 58,231,235,184, 75,182,158, 60,113, +108,100, 74,202,247, 94,133, 58,189, 61,165, 84,111,111, 39,200,144,243, 42,238,161,254,207,114,127,104,146,185,212, 27, 50,124, +204,212,240, 13, 27,214, 10, 61,157,164,200,200,211,163, 64,103,130, 90,107, 2,143, 16, 52,240,145, 65,171,206,197,229,131,223, +154,141,154,188, 17,148, 62, 53, 85,164, 41,247, 12, 94, 2,208, 15, 63,155,118, 9,118,138, 58, 62,254, 61,191,168, 52, 90,167, + 78,187,215,255,179,105,199,131, 40,165, 61,229,158,193,234,146,185, 14,203,219,119, 66,138,174,239,209,221,235,192,100, 41, 26, +127,204,194, 1, 86,142, 43,142,242, 1,244, 69,123, 62,169, 98,223, 9,183, 47,252, 15,164,101,230, 67,103, 52,195, 96,180,192, +100,182,130,199,231,195,201,217, 9,129,245, 90, 64,225,228,136,204,140, 52, 92,191,112, 12,177,247, 46,255, 65, 40, 22,105,179, + 98, 47,216, 82, 70, 34,137, 83,144,183,143, 23, 47,189,192, 8,137, 29, 31,119, 46,159, 52,153,141,134, 85,182,152,172,242, 52, +243,115,114,215,204,152,249,249,168,159,183,239,240, 10,245,119, 68, 74,182, 14, 41, 74, 61,212,122,115,177, 17,227, 96,208,100, +227,222,197, 29, 25, 86,189,122,205,255,188,209,178,152,244,234, 67,167,111,186,206, 89,248, 45,255,233,179, 56,243,146,143,195, + 82,116,154,130,126,213,142,100,149, 98,251,251,245,246, 86,239, 27,197, 67,154,124,157, 88,121,253,187,108,115, 33,229,192, 81, +138,227, 55, 50, 94, 52, 23,114,197,153,151, 81,207,242,171,213,180,119, 47, 70,189, 91,167,203, 84, 60,126,186, 42, 15, 0,248, +124,254,139,165, 36,151, 74,175,215, 27,107,210, 92, 88, 54,241,157,227, 56, 56, 58, 58, 66, 34,145, 84,187, 73, 82,230, 25, 52, +178,117,183,129,155,122, 14,154,132,243,191,253, 72,111, 93, 62, 54, 77,155, 21,179,181,218, 57, 10,121,121,209,132,144, 39,171, + 86,173,106,190,109,219, 54,255,153, 51,103,198,237,220,180,112, 3, 0,228,228, 20,205, 1, 28, 21, 21, 69,167, 77,155,102,208, +235,245,241,121,121,121,145, 85,117,128, 0, 0,157, 82,186,108,219,230, 21, 77,158,167,166, 15,174,223,164, 13,220,253,219,192, +171, 65, 91,228,169, 77,184,249, 52, 13,113,143, 46,224,209,213,131, 39,181,114,203,194,234,110,115,179,102,205,234,240,120,188, +122, 26,141,198, 43, 36, 36,164,153, 76, 38,139,106,214,172, 89, 11,129, 64,144,114,251,246,237,196,234,104, 37, 70,252,108,168, +219,237,189,245, 73,106,135,238,113, 25,218, 22, 73,106,135, 40,173,189,226,211,172, 11,235, 12,158,189, 87,173,161,166,236,232, + 3, 59, 10, 14,253,186,117, 53,127,204,228,207,172, 15, 84,206, 31, 11, 36,118,231,150,143, 11,173, 70,179, 20, 47,253,253,177, + 3,255, 26,222,161, 56,146, 85,252,218,166, 48,125,126,254, 93, 21,128,217, 18,159,198,155, 30,124, 60,101,113,211,214, 29,223, +233,242,230, 8,158, 69, 36,199,153,223,190,167,241,247, 46, 30, 16, 80,235, 60,173, 13,179, 1, 84,217, 28,100, 52, 86,105,178, +202,109,238,121, 46,235,118, 96,207, 79,227, 14,253,118,120,249,160, 1, 3, 93, 55,127,249, 54,190,253,225, 8,100, 18,123, 80, +142,195,136, 30,190,195, 30,237,233,211,191,142,167,184,214,161, 75, 41, 87, 62, 92,251, 96,182, 86,107,138,173, 42, 18, 83,108, +156,175, 58, 56, 56, 40, 59,117,234,212,206,222,222,158,100,103,103, 11, 60, 60, 60, 44, 10,133,194,152,146,146,162, 53, 24, 12, +135, 40,165,133,213,217, 79,147,153, 67, 66,166, 30, 71, 15, 31,194,221, 27, 23,240,232, 81,140,250,209,195, 71, 27,137,128,174, +213,100,196,230,214,228,216,113,229,246, 58,164,213,238,117,104, 53,168,127,221,185,101, 73, 15,173,222, 48,174, 89,135, 48,212, +109,212,145,103, 50, 91,113,255,214, 37, 92, 58,184,246, 91,163, 58,103,206,203,148,177, 79,109,255, 64,202,183,195,181,136,112, + 80,142,219, 2, 0,148,227,182, 68,253,126,114,106,219,126, 19,225,226, 81,183, 25, 33,132, 84,119,190, 71, 0, 16, 9,120,133, +167, 14,253,252, 91, 66, 66, 2, 30, 63,126,140,167, 79,159, 34, 55, 55, 23,191,254,154, 80,173,242, 41,204, 77, 56, 39,119,173, +223,103,232,219,163,143, 15, 27,249,174,216, 63, 48,148, 23, 84,219, 25,174,114, 1, 98,158, 38, 34,246,246, 61, 46,230,230, 73, +189,169, 32,107,144, 54, 55,161, 66,227, 39,115, 15,241, 36, 60, 58,167,100,238,194,246,237, 59, 6,125,190,116,121, 59, 87,119, +143,114,239,227, 57,202, 44,187, 89, 31, 30, 11,186,254,231, 53,155,230, 58,228,172,214,156,201,227, 70,112,252,162,137, 66,241, + 34, 78, 77,138, 10,187,168, 50, 85,244, 62,229, 44, 85, 70,240,223, 27,220, 25, 22,142, 67,161,206,132,130, 66, 3, 84,106, 61, +210,179,114,112,247,222, 61, 92, 62,126, 12,207, 98,238,198,155,141,198,179, 60, 30, 57,168,205,136,185, 92,189,150, 38,129,191, +171,139, 11,226,115, 53, 16,219, 9,144, 24,123,219, 80, 88,160,218, 93,211,243, 72,155, 29,155, 46,243, 12,234, 61, 98,196,200, +211, 61,250, 12, 80,180,238,208, 75,234,230,232, 4,145,128,226, 73, 66, 26, 34,255, 56, 93, 24,119,247, 74,129,217,168,233,251, + 42,102,125,249,111,198,166, 94,135, 38, 67, 97,255, 81, 3,187, 30,230,243, 5,118, 28,103, 49,152,140,134,161, 47, 99,178, 94, + 23,148, 90, 83,198,141, 26,252,183,186,129,133,163,146, 81,195,207,232, 74,215, 21,204, 86, 42, 29, 53,252, 15,109,209, 13,164, +226,196,190, 23, 77,123,123,207,165, 36, 37,229,220,202,205, 53, 92,122,217,158,128,165,231, 46,172,164,119, 97, 97,112,112,240, + 11,115,197,231,243, 97,181, 90,109,190, 17,137,236, 37,147,122, 12,152, 64,206, 31,249,145,222,140, 56,242,190, 54, 43,246,135, +151,104,103, 54, 1,184, 65, 8,121, 48,111,222,188,214,158,158,158,158, 95,125,245,149,184,160,160, 64,184,121,243,102,125,118, +118,118, 70, 65, 65,193,117, 74,169,206,118,205, 72, 51,128, 33,114,207,134,221,233,161, 31,223,112,114,171,213, 91,225, 94, 59, + 32, 95,153, 26,175, 82,166,157, 5,112,190,120,160,200,106,209,162, 69,139,250, 60, 30,111, 4,128, 38, 50,153,172,129, 92, 46, +183,167,148, 6, 19, 66,162, 57,142,187, 23, 18, 18,114, 2, 64,181,202, 47, 49,226,103, 67,151,247,127,218,147,171,229, 68, 70, +158,104, 79, 98,196,207, 6, 0,200, 60, 59, 83, 11,224,168,103,247, 57, 67,142, 93, 79,220, 16,157,167,152,158,117,105,217,177, +234,110,115,254,243, 59, 13, 94,213,249,175, 75,139, 78, 1, 48, 78,230, 25,180,250,126,212,245, 5,132, 66,104,133,101,137, 54, +243,201,237, 87,161, 47, 20, 10,245,181,106,213, 42,183,119,161,189,189,189,190,242, 50,143,176, 0,216, 70, 72,183, 29,135,247, +239, 24,119,228,216,209,229, 93,122, 14,114, 21,215,174,141,122, 30, 4, 59,230,180,156,126, 33, 74,121,115,192,231, 87,190,139, + 75,211,223,163,148, 86, 43, 31, 70,173, 86,199, 18, 66,242, 52, 26,205, 64, 74,233,115, 66, 72,157,188,188,188, 59,102,179,249, +126,181, 13, 1,135,209,237,219,183,249,149, 16, 34,160, 22,110,229,117, 33,127,143, 62,253, 81, 74, 77,140, 69,105, 66,235, 57, +226,147,175,214,183, 12,104,208,176,101,201, 92,135,141,235, 58, 96,202,236,213, 45,235,250, 7,182,252,107,254, 67,121, 85,215, + 36, 37,132,140, 63,252,211,202, 43, 81,127, 94,250,194,205,187,110,221,140,148,184, 71,207,159,222, 89,108,209,169, 14,191,108, + 57, 39, 60,141, 94,187,109,213,236,153,233,169,241,219, 10,179, 98, 31, 0, 64, 97, 86,236, 3,169,103,195, 47,179, 51, 82,102, +230,100,197,173,170,233,177, 40, 44, 44, 76,219,189,123,183, 83,199,142, 29,121,158,158,158, 80, 42,149,184,116,233, 18,199,113, + 92,106,117,181, 52, 57,113,151, 8, 9,112,249,229,135, 77, 43, 69, 50,135,126, 22,139,197,135, 82, 64, 32, 16,164, 27,181, 5, +167,213, 60,217,231, 52, 55,161,138,243,146, 35, 0,120, 37,115, 23,114, 28, 71, 86,110,216,145, 40, 20, 59,148, 59, 63,162, 89, +175,150,114, 28,103,243, 92,135,121, 73,183, 3, 94,217,195,154,210, 69,205, 90,181,251,194,108, 54,233, 81,148, 47,166, 7,160, +167, 20, 57, 60, 30,185,204,231,204,103, 84, 47, 81,153, 34, 4,142,148, 8,224, 32, 17,128,128, 64,163,202,165,213,201,201, 42, +183,188, 51, 99,162, 9,233,230,119,202,184,127,236,197,115, 39,135, 91,173,214,122,197,103, 78,130, 65, 87,120, 64,147,238,252, + 11,165,183, 44,248,247, 19, 94, 98,182, 4,149, 92,216,177, 40,154,219,231,191,154,156,248,155,173, 94,165, 94,122,102,238,142, + 62,131,102,210,132,196,172,155,201, 25,134, 95, 74, 79,171,243,178,154,207,159, 43, 47, 21, 55, 23, 26,254, 25,161,168, 89,239, +194, 23,198, 88,175,251,102,221,188,145,208,235, 10,119,106,179, 98,119,188, 26, 19, 75,117, 0, 46, 19, 66, 20,239,191,255,126, + 11,185, 92, 46,204,206,206,190, 65, 41, 85,213, 84, 83,147, 25,123, 9,192, 37, 0,115, 94,197, 54, 70, 69, 69,197, 53,111,222, +124, 23,143,199,171, 71, 41,245,164,148, 42,138,141,108,182, 64, 32, 72,125,248,240, 97,106,141,246,221,224,112, 74, 99,228, 7, + 90,168,243,233,127,152, 15, 87,143,115, 73,185,214, 31,249, 50,241,127, 77,142, 65, 97,102, 76, 52,128,161,175, 90,183,178,113, +178,108, 63,143,254, 50, 92, 17,225, 63,143,227,217, 41,150,244, 12,210,107,123,207, 72, 93,124,245,190,242, 6,165, 84,253, 18, +231,168,210,206,206, 78, 71, 8,169, 35, 18,137,116, 70,163,241, 94,141,142, 95,145,201,119,127,149,199,142, 3,185,221,178,101, +171,106,125,222,134, 72,222,142,226,229,149,162,201,120,188, 24,197,205,223,127,139, 80,100,198, 46, 1,176,228,101,180,111,221, +186,117,124,213,170, 85,170, 13, 27, 54,248, 90,173, 86,169,209,104,212,234,116,186,132,148,148,148,107, 53, 43,243,103, 70, 0, + 31, 23, 47, 53,136,186, 60,206,144,123, 54, 92,223,161,125,135,143,139, 42,232,116,125,194,229,245,159, 84,246, 29,185,103, 67, + 93,233,207, 87, 54,215,225, 43, 45,151,172,216, 45, 0,182,188,190, 72, 5,167, 28, 61,108, 32, 80, 60, 48, 55,103,177, 40, 95, +137,108,209, 53,255, 19,106, 56, 73,250,191, 1, 74,105, 58,128,173,197,134,153,190,182, 31,178, 53, 95,133,105, 50, 77,166,249, +191,165,105,203,236, 4,236,120, 50,205,215,169, 41,241, 9,169, 3, 0,182, 76,186, 94,209,231,217,241,164,255, 51, 9,237, 54, + 28,143,201,229,152, 45,219, 6, 44,101, 48, 24,140,215, 80,219,227,216, 81, 96,252, 39,177,213, 96,213,244,243,140,255,185,123, + 90,133, 57,209, 4, 69,179, 96,151,247, 37,155,157, 42, 33,164, 87, 13, 54,234, 60,211,100,154, 76,147,105, 50, 77,166,201, 52, +255,183, 52,171,210,254,191, 24, 41, 43, 39,162, 21, 94,220,124, 88, 52, 48,219,235, 90, 0,244, 98,154, 76,147,105, 50, 77,166, +201, 52,153, 38,211,252, 95, 90, 0, 76, 46,121,205, 3,131,193, 96, 48, 24, 12, 6,227,181,192,114,180, 24, 12, 6,131,193, 96, + 48, 94,130,242,154, 14,153,209, 98, 48, 24, 12, 6,131,193,120, 5, 84,150, 12,207,154, 14, 25, 12, 6,131,193, 96, 48, 94,130, +146,136, 22, 33,196,155, 16, 50,185,116,132,139, 25, 45, 6,131,193, 96, 48, 24,140, 87, 0,165, 52,189,108,116,139, 80, 74, 17, + 30, 30, 78,195,194,194, 8,128,191,189,102, 48, 24, 12, 6,131,193,248,255,193,255,101, 47, 66, 8,241, 6, 16, 86,122,119, 74, +134,119,224,149,222, 65, 86,204, 12, 6,131,193, 96, 48,254,147,102,235,255,226,118,151, 68,178, 74, 45, 47, 38,205,126, 97,180, +194,194,194, 8, 51, 91, 12, 6,131,193, 96, 48,254, 83,252, 27,189, 8,175,236, 14,178, 98,102, 48, 24, 12, 6,131,241,159, 52, + 91,255,166,253, 97,195, 59, 48, 24, 12, 6,131,193, 96,188, 4,149,229,104,145,226,161,226, 25, 12, 6,131,193, 96, 48, 24, 53, + 51, 90,147, 75,247, 54, 44,189,206, 34, 90, 12, 6,131,193, 96, 48, 24,175,192,108,149,251, 62,139,104, 49, 24, 12, 6,131,193, + 96,188, 30, 94,235,128,165,132,144, 94, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,102, 74, 70,132, 47,126, 61,185, + 56,103,235,245, 27, 45, 6,131,193, 96, 48, 24,140,255, 1,194, 40,165, 91, 75,229,102,133, 49,163,197, 96, 48, 24, 12, 6,131, +241, 10, 41,111,114,105,102,180, 24, 12, 6,131,193, 96, 48, 94,161,193, 42,189,206,140, 22,131,193, 96, 48, 24, 12,198,107,130, + 25, 45, 6,131,193, 96, 48, 24,140,215, 4, 1, 80,110,207, 1, 74,233,121,155, 69,106,208,251,160, 42,125,166,201, 52,153, 38, +211,100,154, 76,147,105,254,251, 52,171,210,174,142,255,248,175, 49, 83,127,141, 12, 31, 94,252,247,175,230, 67, 74,233,107, 91, + 0,244, 98,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252, 55, 47, 0, 38,151,254, 91,122, 97, 77,135, 12, 6,131,193, 96, + 48, 24, 47, 31,213, 42, 61,142,214,139, 81,226,217, 20, 60, 12, 6,131,193, 96, 48, 24, 47, 65,121,195, 58,148,192, 34, 90, 12, + 6,131,193, 96, 48, 24, 47, 65,217,121, 14, 75,175, 51,163,197, 96, 48, 24, 12, 6,131,241, 26, 12, 23, 51, 90, 12, 6,131,193, + 96, 48, 24,175,208,100,253, 35,186, 85,156, 37,143,240,240,112, 26, 22, 22, 70,216,161, 98, 48, 24, 12, 6,131,241,159,224,223, +232, 69,120,165,119, 44, 60, 60,156,178, 98,102, 48, 24, 12, 6,131,241,159, 50, 89,255, 23,189, 8, 33,196,187,164,183, 97,241, +226, 93,242, 63,214,235,144,193, 96, 48, 24, 12, 6,227,229, 8, 43,221,243,176,184,249,112, 43, 51, 90, 12, 6,131,193, 96, 48, + 24,175,128,242, 18,225, 1,150,163,197, 96, 48, 24, 12, 6,227,191,132,127,163, 23,121, 97,180, 24, 12, 6,131,193, 96, 48, 24, + 53, 48, 83,229, 68,179, 74,154, 18,153,209, 98, 48, 24, 12, 6,131,193,120, 69,134,171,236, 40,241,108, 28, 45, 6,131,193, 96, + 48, 24,140,215, 96,178, 94,187,209, 34,132,244, 98,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,183,155,172,146,191,108, + 82,105, 6,131,193, 96, 48, 24,140, 87, 8,155, 84,154,193, 96, 48, 24, 12, 6,227, 53,193, 38,149,102, 48, 24, 12, 6,131,193, +248,255,108,184,152,209, 98, 48, 24, 12, 6,131,193,120,133, 38,171,172,217, 98, 57, 90, 12, 6,131,193, 96, 48, 24, 47, 65,101, + 57, 90, 4, 64,175, 10,190,116,190, 26, 46,174, 87, 13, 54,234, 60,211,100,154, 76,147,105, 50, 77,166,201, 52,255,183, 52,171, +210,174,142,255,248,111,229,111, 67, 61, 80, 74, 95,219, 2,160, 23,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,255,210, + 2, 96,114,201,107,214,116,200, 96, 48, 24, 12, 6,131,241,146, 17,172,138,254,199,140, 22,131,193, 96, 48, 24, 12,198, 75,192, +198,209, 98, 48, 24, 12, 6,131,193,120, 77, 16, 66,188,139, 71,132, 47,249,219,130, 25, 45, 6,131,193, 96, 48, 24,140, 87, 67, + 88,113, 84,171,228, 47, 51, 90, 12, 6,131,193, 96, 48, 24,175,138,138,198,209, 34,148, 82,132,135,135,211,226,245,110, 97, 97, + 97,151,217,225, 98, 48, 24, 12, 6,131,241,255,147,127,171, 23,121, 17,209, 10, 11, 11, 35, 0, 34, 88, 81, 51, 24, 12, 6,131, +193,248, 79,240,111,244, 34,188, 50, 78,178, 27, 43,102, 6,131,193, 96, 48, 24,255, 9,254,141, 94, 68, 80,198, 69, 50, 24, 12, + 6,131,193, 96,252, 71,248,191,234, 69, 8, 33,222, 0,194, 0,132, 23,255,125, 49,228, 3, 27, 71,139,193, 96, 48, 24, 12, 6, +227, 37, 61, 34,165,116,235,223,166,222, 41, 49, 97,197, 67,197, 51, 24, 12, 6,131,193, 96, 48,106, 64,121, 35,195,151, 24, 46, +102,180, 24, 12, 6,131,193, 96, 48, 94, 19,172,233,144,193, 96, 48, 24, 12, 6,227, 37, 41, 29,213, 42,221,124,200,123,205, 63, +218,139,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,110,178, 40,165, 91, 75,150,210,166,139,141, 12,207, 96, 48, 24, + 12, 6,131,241,154, 96, 77,135, 12, 6,131,193, 96, 48, 24, 47, 65,217, 40, 86,233,166, 67,102,180, 24, 12, 6,131,193, 96, 48, + 94,129,217, 42,239,125,214,116,200, 96, 48, 24, 12, 6,131,241, 18,148, 55,188, 3, 51, 90, 12, 6,131,193, 96, 48, 24,175,217, +112, 17, 0,229,246, 28,160,148,158,175,134,112,181,123, 31, 84,165,207, 52,153, 38,211,100,154, 76,147,105, 50,205,127,159,102, + 85,218,213,241, 31,255,205, 6,235, 69, 83, 34,165,244,181, 45, 0,122, 49, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254, +175, 46,172,233,144,193, 96, 48, 24, 12, 6,227, 53, 97,179,209, 34,132,184, 11,133,194, 47,164, 82,233,119, 82,169,244, 7,161, + 80,184,138, 16,226, 92,221, 31,148,203,229,211,189,189,189, 31,123,123,123,167,248,249,249,157,116,116,148,205, 8, 16,147, 46, +132, 16,225, 43, 8,221,241, 8, 33, 65,132,144, 25, 82,169,244,145, 68, 34, 73, 36,132,236, 34,132,204, 32,132,184,189,140,246, +146, 90,100,104,244,140, 65, 71,150,212, 34, 67,203,252,102,152,151,151,215, 85, 66, 72,239, 87, 85, 40,163,100,164,215,112, 57, + 73, 30, 46, 39,201,163,100, 53, 31, 20,206,209,209,241, 29, 31, 31,159,235,110,110,110,169, 62, 62, 62,127, 72, 36,146, 97,213, + 60,158, 30, 94, 94, 94,223,250,250,250,198,214,170, 85,107, 93,241,236,228,255,181,116, 17,147,206,237,197, 68,217,193,158,168, + 59,217,147,239, 58,216,147, 55,122, 19, 34,173,225,185,212,137, 16,114, 80,161, 80,220, 17, 10,133, 39, 8, 33, 67,138,207,175, + 33, 66,161,240,132, 66,161,184, 67, 8, 57, 72, 8,233, 84,195,243,244, 91, 66, 72, 42, 33,100, 89,241,250, 71,190,190,190,234, +102,205,154, 37, 54,107,214,236,231,192,192,192,119,109,213,147,201,100,111,248,250,250, 30,242,243,243, 75,236,208,161, 67,110, +237,218,181, 99,234,212,169,179, 67, 44, 22,119, 99,183, 56, 6,131,193,248, 15, 99, 67,120,176, 63,128,229, 0, 54,222,187,119, + 47,146, 82, 26, 73, 41,141,188,119,239, 94, 36,128,239, 0,172, 64, 5, 33,196,178,239,187,186,186, 46, 90,178,100,137, 62, 61, + 61,157, 42,149, 74, 26, 27, 27, 75,215,206,159,205,245,113, 17,208,250,238,206, 90,111,111,239,103,126,181,107,239,109, 44,231, +205, 6, 16, 80,157,112, 37, 0,103,137, 68,114, 99,254,252,249,154,171, 87,175,106,140, 70,163,134,227, 56, 77, 90, 90,154,230, +252,249,243,154,142, 29, 59,106, 0,124, 2,128, 95,147, 16,232,215, 62,184, 76,127,250,146,126,237,131,203,165,223, 15, 14, 14, +126,200,113, 28, 29, 58,116,168, 1, 64,173,151, 9,171,214, 2,196,141, 29,225, 52, 76,142, 76,203,142,197,148,110,158, 73,135, +201,144, 92, 19, 77, 15, 15,143,163,211,167, 79, 47, 72, 77, 77,165, 6,131,129, 38, 39, 39,211, 41, 83,166,168, 60, 60, 60,118, +219,120, 60, 93, 67, 67, 67, 51,175, 95,191,206,229,231,231,211,136,136, 8,174, 73,147, 38,153, 0,188,171, 27, 82,246,240,240, +216,234,227,227,115,178, 58,139,135,135,199,182,234,150, 81, 91,123, 36,155, 34, 47, 81,122,235, 44, 61, 54,180, 61, 93,219,170, + 54, 29,226, 98,151,223,201, 14, 31,117, 5, 4,213, 56,151,134,119,237,218,181,240,254,253,251,214,156,156, 28,250,240,225, 67, +110,210,164, 73,122, 0,209,147, 38, 77,210, 63,124,248,144,203,201,201,161,247,239,223,183,118,237,218,181, 16,192, 68, 91,183, +179,184,114,179,125,225,194,133,148, 82, 74,151, 44, 89, 66,155, 54,109, 74,123,244,232, 65, 53, 26, 13,165,148, 38, 82, 74,127, +182, 88, 44,227,108,209, 84, 40, 20,239, 76,159, 62, 93,163,213,106,105, 9, 28,199,209,252,252,124,186,113,227,198, 66, 47, 47, +175,147, 0,220, 88,243, 4,211,100,154, 76,147, 53, 29,190,214, 84, 41,111, 0,147, 75, 45, 47,158,149, 85,125,113,212,236,217, +179, 75, 76,213,169, 78,157, 58,221, 28, 55,110, 92,228,184,113,227, 34, 59,117,234, 20, 1,224,204,237,219,183, 35,103,205,154, + 21, 9, 96, 84,101, 5, 1,192,185, 67,135, 14,249, 25, 25, 25, 52, 48, 48,144,214,173, 91,151,102,100,100, 80, 74, 41,189, 53, +188, 37,189,208, 8,244,249,149, 83,244,236,111, 7,233, 36,111, 1,237,236,173, 48,123,123,121,229,184,185,185, 45, 69,241,228, +215, 21, 21, 46,128,193,141, 26, 53, 82, 71, 71, 71,107,158, 60,121,162, 89,180,104,145,166, 71,143, 30,154,208,208, 80,205,144, + 33, 67, 52, 27, 54,108,208,152, 76, 38,205,182,109,219, 52,142,142,142,209,101,205,214,203, 24, 45,129, 64,176,254,222,189,123, +244,217,179,103, 20,192,183, 21,105, 2, 80, 56, 57, 57,245,117,118,118,254,196,201,201,169, 47, 0, 5,165, 20,129,128,188,153, + 2,190, 31, 53,171, 31,124, 98, 84,175,128,141,189, 90,183, 28,230,192,203, 55,111,154, 73,233, 80,223, 26, 25, 45,133, 66,241, +206,140, 25, 51,212, 6,131,129,106,181, 90,170,209,104,168, 86,171,165,106,181,154,142, 26, 53,170, 64, 44, 22, 15,174, 74,211, +205,205,109,241,149, 43, 87, 44, 25, 25, 25,244,202,149, 43,244,228,201,147,116,243,230,205,156,135,135,199,154,234, 94,128, 94, + 94, 94,231,206,158, 61, 27, 25, 21, 21, 21,121,227,198,141, 72,179,217, 28,105, 50,153, 34, 77, 38, 83,228,137, 19, 39, 34, 15, + 31, 62, 28,185,111,223,190, 72,163,209, 24,105, 52, 26, 35, 13, 6, 67,164,191,191,255,233,234,150, 81, 27,123, 60, 55, 94, 61, + 70,233,154, 15,168,234,155,105, 52,255,211,126, 52,107, 74, 23,250, 93,235,218,180,139, 4,199, 75,159, 71,149,105, 10,133,194, +203,137,137,137,220,220,185,115,141, 33, 33, 33,170,241,227,199,235, 13, 6, 3,165,148, 82,131,193, 64,199,143, 31,175, 15, 9, + 9, 81,205,157, 59,215,152,144,144,192, 9, 4,130,243,213, 48, 90, 43, 74, 76,214,229,203,151,105,105, 52, 26, 13,237,209,163, + 71, 98,211,166, 77,127,174, 87,175,222,232,170, 52,229,114,249,192, 57,115,230,104,104, 57,152,205,102,170, 86,171,105, 66, 66, + 2, 87,183,110,221, 52, 0,174,236,102,206, 52,153, 38,211,100, 70,235,181, 25,173,201, 21,173, 87,122, 16,103,205,154, 21, 73, + 41,141,156, 55,111, 94,100,113,100, 75, 4, 64, 94,188, 8, 0,140,156, 51,103, 78, 36,165, 52,114,246,236,217,145, 0,250, 87, + 98,180,250, 31, 56,112,192,180,110,221, 58,234,233,233, 73,189,188,188,232,250,245,235, 41,199,113, 52,227,196,110,122,161, 17, +232,163, 47,198, 82, 74, 41,141, 93,250, 33,189,208, 8, 52,110,203,215,116,204,152, 49, 90,169, 84, 58,170, 18, 3,227,210,178, +101, 75,181, 78,167,211,236,216,177, 67, 35,149, 74,111, 1, 8, 1, 32, 68, 81,175, 74, 57,128,119, 67, 66, 66, 10, 30, 60,120, +160,217,179,103,143, 6,192, 34, 27, 35, 27, 1, 0,186,203,100,178, 33,115,106, 9,159,208,159,190,164,115, 60,113, 31, 64, 19, + 0,238,197,159,241,153, 61,123, 54,165,148,210, 58,117,234, 92,169, 96,223, 21,161,161,161,179,159, 60,121,178,192,108, 54, 47, +136,138,138, 90,208,176, 97,195,185, 3,252,189,219, 31, 25,245, 70, 11,213,215,211, 90,208,213,159,134,174,122,179, 77,175,189, + 35,186,141,122,175,158,219,213,241, 30, 98,237,219, 10,190,122,164,244,111, 58, 54,157,216,181,106,213,186,145,156,156,252,194, + 92,169,213,106,154,154,154, 74,227,227,227,233,213,171, 87,169,183,183,247,133,170, 52,189,188,188, 30, 38, 39, 39,211, 45,107, +215,210,161, 77,130,105, 23, 39, 7,218,213,217,129,182,146,139, 11, 27, 1,173,170,107,180,238,220,185, 19, 9, 32, 18, 64,100, + 78, 78, 78,100, 78, 78, 78,100, 94, 94,222,139,247, 0, 68,170, 84,170, 72,149, 74, 21,105, 52, 26, 35,235,215,175, 95,109,163, +213, 81,140,142,109,197,200,109,111, 15, 93,255, 90,110,105,211,252,221,172,127,142,106, 79,243, 62,232, 65,215,181,168, 69, 59, +217,225, 35, 27,203,189,191,157,157, 93, 4,128,153, 0,248, 0,198,246,237,219, 87, 75, 41,165,125,251,246,213, 2, 24, 91,252, +254, 12,129, 64,112, 30, 64, 95, 91,182, 19, 0,175, 65,131, 6,133, 37,145, 44, 0,215, 26, 52,104, 80,216,180,105, 83,218,180, +105, 83, 90,167, 78, 29, 53,128,177,182,222,208, 2, 2, 2, 98,117, 58,221, 11, 3,152,159,159, 79,211,210,210,104, 92, 92, 28, +141,142,142,166,183,110,221,162,137,137,137,116,255,254,253, 86, 39, 39,167,112,118, 51,103,154, 76,147,105, 50,163,245,250,140, + 86,217,229, 31, 70,235,196,137, 19,180,204,151,190,185,125,251,118,228,156, 57,115, 34,203, 58,181,178,226,243,230,205, 43,137, +122, 45,175,228,225,191, 45, 54, 54,150,142, 29, 59,150, 6, 5, 5,209,160,160, 32, 58,110,220, 56,170, 82,169,168,230,233, 3, +122,161, 17,232,173,183, 91, 81, 74, 41, 85, 63,138,162, 23, 26,129, 70,142,233, 64,239,222,189, 75,107,215,174,125,182,146,223, + 63,254,199, 31,127, 40,119,239,222,157, 1, 96, 87,177,193,106, 7, 96,189, 68, 34,217, 94,220, 92, 88, 23,128,115, 96, 96, 96, +174, 86,171,213, 12, 29, 58, 84, 3,192,183, 18,205,174, 65, 65, 65,207,182,109,219, 70,179,178,178,104,110,110, 46, 93,217,177, + 33,165, 63,125, 73,151,180,170,203,109,217,178,197, 48,115,230,204, 66, 23, 23,151, 19, 0,124,134, 14, 29,106,161,148,210, 46, + 93,186,100,150,167,231,228,228,212,247,201,147, 39, 11,244,122,253,130,252,252,252, 5,185,185,185, 11,142, 29, 57,178,160, 79, +147,134, 99, 85, 95, 79,107,113,100,212, 27, 45,222,172,229, 60,100, 77,239,214, 83, 83,231, 78, 28, 58,175, 67,200, 35,253,138, +143, 47, 13,247,247,252,182, 38, 5,238,238,238,158,110, 48, 24, 40,128,127, 44,207,158, 61,163,174,174,174,201, 85,105,184,184, +184,204,155, 49,114,132,117,112,221, 90,244,217,186,249,212,124,110, 15, 53,159,220, 65,159,126,243, 41, 29,224,229, 86,208, 78, +196,155, 99,235,246,120,121,121,157,187,113,227,198,223,140, 86, 94, 94, 94,185, 70,171,160,160, 32,210,104, 52, 70, 54,104,208, +224,244,203,158,248,237,236, 80,191,171,132,127, 43,106,108,103,170,156,214,131,246, 85, 8, 19, 95,226, 34, 26, 9, 32, 2,192, +152,106,126,143, 7, 96, 69,137,161,250,230,155,111, 40,165,148, 54,104,208,160, 16, 0,239, 37,182, 71, 17, 28, 28, 28, 63,113, +226, 68, 75,163, 70,141,178, 58,118,236,152,127,243,230, 77,122,249,242,101,122,242,228, 73,122,240,224, 65,250,224,193, 3,154, +154,154, 74, 99, 99, 99,105, 88, 88, 88, 62,128,174,236,134,200, 22,182,176,229,191,121, 41,235, 69,254, 53,189, 14,195,195,195, +105, 88, 88, 24, 9, 15, 15,167,197,201,186, 10, 0,226, 86,173, 90, 41, 87,172, 88,177,186,120, 14, 31,210, 84, 64,134,247,148, + 10,239,246,148, 10,239, 54, 21,144,225,132, 16, 66, 41,221,186,116,233,210,197, 77,155, 54, 77, 7, 32, 33,132,120, 85,144, 11, +214,217,213,213, 21,201,201,201, 80, 40, 20, 80, 40, 20, 72, 78, 78, 6,165, 20, 22, 10,152, 41, 96, 48,153,160,211,233,160,231, + 40,116, 28, 80,160,209,192,203,203, 11, 38,147,169,126, 5, 73,197,205,222,126,251,237,250,161,161,161,202, 89,179,102,165, 1, +152, 8, 96,251,132, 9, 19,206, 93,187,118, 45, 84,163,209,228, 70, 71, 71,235,155, 52,105,210, 23,128,215,147, 39, 79,222,217, +184,113, 35,198,142, 29, 11, 0, 93, 43,208,108, 18, 22, 22,118,242,193,131, 7,245,199,140, 25,131,136,136, 8,172, 92,185, 18, +217,217,217, 20, 0, 12, 6, 3,181, 90,173,166, 14, 29, 58,152,214,173, 91,215,166, 75,151, 46, 55,252,253,253,249, 0, 16, 31, + 31,255,180, 2,205,134,126,126,126, 48, 24, 12, 80, 42,149,120,240,224, 1, 28, 20, 10,220, 75,203,246,236,182,102, 75,206, 23, + 71,206, 9, 71,182, 9,117,249,228,141,142,134,101,103, 35, 2, 67,124, 60, 61,141, 38,179, 87,108,122,102, 90, 77,242,238, 68, + 34, 81,114,118,118, 54,140, 70, 35,116, 58, 29, 10, 10, 10,144,147,147,131,236,236,108,164,165,165, 65, 36, 18, 61,171, 50,145, + 62, 55,247, 74,252, 31,151,201,254,239,191, 65,125, 75, 46, 4,135,214, 67,112,244, 59, 4, 24,149,248, 97,254, 20, 7,163,171, +251, 66,133,163, 99,158,179,179,243, 86, 66, 72,131,170,244, 90,180,104,129,156,156, 28,228,228,228,192,213,213, 21,206,206,206, +112,118,118, 70,126,126, 62, 84, 42, 21, 10, 10, 10, 16, 24, 24,136,102,205,154, 97,231,206,157,175, 36,255,240,186,129,198, 89, + 96,157,118, 46, 38, 13, 34,153, 12,254,206,114,191, 54, 14,196,165,146, 36,245, 30, 34,145,232,128,171,171,235, 89, 66,200, 7, +132, 16, 25, 33,228, 3, 87, 87,215,179, 66,161,112, 16,128, 37,148,210,221,213,220,140,101, 11, 23, 46,156,253,228,201, 19,233, +221,187,119, 49,107,214, 44, 44, 90,180, 8, 79,159, 62,221, 68, 41,229,138,127,247,125, 55, 55,183, 19,124, 62,255, 71, 66, 72, + 63, 66, 72, 95, 31, 31,159,158, 85,232, 14,154, 57,115,166,190,101,203,150,177,143, 30, 61, 26,244,199, 31,127,180,250,244,211, + 79, 85, 73, 73, 73,136,141,141,133,183,183, 55,234,212,169, 3,141, 70,131,188,188, 60, 12, 26, 52, 72,225,232,232, 56,138,101, +165, 50, 24,140,255, 86,202,122,145,255, 75,148, 29, 71,171,244,122,185,189, 14,165, 82,233,194,200,200,200,246, 77,155, 54, 21, + 0,216, 15, 0,161,124, 12, 27,212,161,249,246, 35, 91,191,105,122,120,221,252,166,125,154, 6,110, 15,229,163,164, 23,219,137, + 86,173, 90, 57, 71, 70, 70,118,176,183,183,255,168,162,188,123, 0,112,118,118,134, 66,161,128,147,147, 19,156,157,157,193,113, + 28, 52, 90, 61, 10,173,128, 90,111,132, 74,165,130,186,120, 93, 99, 48,161,176,176,240,197,119,203,161,219,196,137, 19,149, 27, + 55,110,204, 74, 79, 79,255, 6, 64,147,177, 99,199, 14,220,176, 97, 3, 46, 94,188,168,239, 23, 20,224,186,180,115,243,197, 33, +233, 79, 23, 4, 9, 49, 9,192,149, 43, 87,174,160, 67,135, 14, 32,132,140, 40, 79, 80, 34,145,124,183,119,239, 94, 73,116,116, + 52, 2, 2, 2,162, 71,140, 24, 49,252,155,111,190,169, 47,211,228,254, 14, 0,150,156,140,232, 15, 63,252,240,203,165, 75,151, + 42,149, 74,165, 73,171,213,122, 12, 24, 48, 0,201,201,201, 72, 77, 77,189, 86,129,201,140,141,138,138,162, 42,149, 10,113,113, +113,136,138,138,146,124,249,229,151,109,172, 60,222,192, 20, 56,188, 55,182, 99,171, 54, 99,218, 53,199,238,235,119, 69, 87, 99, +226,157, 90,213,173,229,124,231,121,122, 61, 51,193,179,154, 20,184, 90,173, 94,191,120,241, 98,141, 70,163, 65, 74, 74, 10,238, +223,191,143, 71,143, 30, 33, 49, 49, 17, 43, 87,174,212,228,230,230,110,168, 74,195, 71, 44,248,236,219, 79, 39, 16,193,195,107, +192,221,203,128, 86, 13,232, 52, 48, 60,142,196,207,143, 51,176,249,208,111,118, 73,201,201, 78,251,246,237,155,232,235,235, 27, + 73, 8, 9,172,170,211, 5, 0,240,120,188,178, 39, 39,120, 60,158, 26, 64,134, 76, 38,123,238,224,224,240,156,199,227,101, 80, + 74, 11, 95,197,201,207,179,192, 4, 62, 31,176,147,128, 39, 20, 84,118,145, 12, 31, 49, 98,196,222,231,207,159,247,137,139,139, +107,191, 97,195,134,197, 98,177,248,222,134, 13, 27, 22,199,197,197,181,127,254,252,121,159, 17, 35, 70,236, 37,132,188, 91,157, +223,111,208,160,193,135, 11, 22, 44,192,202,149, 43,209,172, 89, 51, 4, 6, 6,106, 23, 46, 92,184, 30,192,124, 66,200, 71,129, +129,129,191,127,248,225,135,227,179,178,178,188, 82, 82, 82,154,109,218,180,105,202,250,245,235, 91,167,165,165,137,171,144,238, +212,187,119,111,156, 58,117, 10, 0,210, 41,165,113, 57, 57, 57,150,180,180, 52, 4, 7, 7,163, 77,155, 54,208,104, 52,208,104, + 52,200,207,207,135,159,159, 31, 56,142,107,207,110,229, 12, 6,131,241,255,207,112, 85,104,180,196, 98,177,115,139, 22, 45,224, +239,239,239, 92,156,139, 5, 87, 59,193,220, 79, 38,142,148,202, 35, 79,131, 68, 93,192,136,206,141,165,174,118,130,185,197, 95, + 17,248,249,249,217,183,104,209, 2, 50,153,172, 86, 5,191, 31,145,145,145,129, 22, 45, 90,192,201,201, 9, 10,133, 2, 45, 90, +180,128,201,100,130, 74,173, 70,161, 21,208,154, 57,168, 84, 42,228, 42, 51,161,181, 2, 22, 7, 87, 36, 38, 38,130,207,231,199, + 87,160,233, 29, 16, 16,160,188,119,239,158, 18,192, 21, 0, 83, 23, 45, 90,132, 57,115,230,224,171,175,190,218, 43, 77, 79,232, +189,247,212, 81,215, 95, 23,190,239, 30,104, 71, 70, 2, 48, 61,127,254, 28, 78, 78, 78,144,201,100,229, 26,131, 46, 93,186,180, +148,201,100,216,177, 99, 7, 77, 73, 73,233, 72, 41, 61, 72, 41,141, 39,164,200,236, 73,120, 80, 81, 74,215, 71, 70, 70,182,253, +242,203, 47, 99,122,245,234, 37,108,215,174, 29,150, 44, 89, 2, 0, 39,202,211,204,207,207,255,243,221,119,223, 53, 94,186,116, + 9,143, 31, 63,150, 29, 57,114,100,216,146, 37, 75, 26, 39, 37, 37,217, 31, 63,121,250,205, 93,207, 11,134,125,115,246,170,120, +233,153,136, 63,221, 28,101, 33,245,220, 92,254, 31,123,223, 29, 22,197,213,190,125,159,221,217, 2,236,210, 97,233,160,162,136, + 5, 84,236, 93, 99,143, 29,177,151,216, 99,121, 53, 26, 53,182,128, 24, 53, 70, 99,108, 49,209,196, 22,209,136, 5,141, 98, 39, +246,196,142,162, 32, 10, 34, 8, 72, 89,218,238,178,203, 22,182,156,239, 15,129,151, 24,202, 98,146,223,247, 38,153,251,186,230, +162,204,204, 61,231,156, 57,103,230,158,231, 60,231,121, 16,251,234, 53,223,200,197,221,218,110,106, 7, 62, 51,173,167, 37, 47, +182,155, 5, 55,187,167, 37,239, 65, 59, 62, 51, 85,161, 80, 68,158, 58,117,234,194,194,133, 11,149, 82,169, 20,214,214,214, 40, + 40, 40,192,186,117,235,148,177,177,177,199,181, 90,237,233,218,120,141, 38,218,218,171,158, 55,240, 34,174,226,127,165, 38,138, +187, 58, 62, 6,125, 56, 31,254, 77,154, 64,167,211, 33, 32, 32,128,132,135,135,139,108,109,109, 23,215, 42,122, 56,191,235,110, + 6, 66, 72, 14,165,244,181, 82,169,204,180,180,180,124,197,231,243, 95, 21, 22, 22,102, 82, 74,115,255,132, 14,207,161, 28,124, +220, 41,160, 17, 32,180,196,171, 2,101,214,221, 98, 90, 88,213,177,214,214,214, 83,119,236,216, 97,177,103,207, 30,253,220,185, +115,181, 51,103,206,228,169,213,106,201,204,153, 51,121,115,231,206,213,238,217,179, 71,191, 99,199, 14, 11,177, 88, 28,252, 46, +101,209,235,245,136,139,139,251, 34, 41, 41, 73, 68, 41,253, 8,192,252, 85,171, 86, 77, 74, 74, 74,178,216,190,125, 59,142, 29, + 59,134, 99,199,142, 97,232,208,161,152, 55,111, 30,194,194,194,106,170,151, 85,139, 22, 45,130, 28, 29, 29,113,237,218,181, 44, + 74,233, 43, 66, 72,107,177, 88,108, 61,116,232, 80,244,235,215, 15, 26,141, 6,165,165,165, 21, 66,139,203,229,194,206,206,206, +145,125, 12,178, 96,193,130,197, 95, 43,178,222, 22, 91, 12, 0,148,155,234, 6, 14, 28, 72,106,122, 49, 26,139,164,144,169, 74, +144, 38, 47, 65,122,145,233, 55,251, 76, 38, 83,141, 5,200,202,202, 58,125,235,214,173,169, 65, 65, 65, 76, 86,214,155, 25,177, +160,160, 32,148,148,148, 32,235,209, 29,168, 76,128,168, 97, 32, 84, 42, 21,138,158, 62,132,184, 69, 71, 56, 14, 28,143,175,182, +111,215, 22, 20, 20,236,172,138, 83, 32, 16,240, 60, 61, 61,243, 94,190,124,105, 0, 80,104,107,107,219,215,219,219, 27, 87,175, + 94, 5,128,131, 20,216,136,216, 43,192,181, 40,208, 55, 38, 21,177,143,143, 15,164, 82, 41,148, 74,229,213,170, 56,111,221,186, +149,164,215,235, 3,134, 12, 25, 66,126,248,225,135, 35,132,144, 80, 0,143,151,187,130,251, 40, 35, 23, 42, 35, 44, 8, 33,125, +236,237,237, 63, 10, 11, 11,235, 53,119,238, 92,156, 58,117, 10, 23, 47, 94, 44,197, 27, 95,176, 91, 85, 88,115,228,132,144, 93, +139, 22, 45,234,192,225,112, 62,188,116,233,146,193,207,207, 79, 81, 90, 90,106,108,236,239,207, 9, 13, 95,205,140, 99,206, 5, + 0, 0, 32, 0, 73, 68, 65, 84,159,243,225, 12,187,130, 18, 36,244,107,236,214,137, 16, 32,225,181,244, 85, 82, 49, 45,168,169, + 77,187, 11,153,232,209, 93, 91,116,155, 58,122,176, 88,212,176, 25, 84, 79,238,184,238, 58,122,246,171, 30,150,204,160, 92,181, + 97,168,173,173,109,200,213,171, 87,231,232,116,186, 6, 66,161,240,133, 76, 38,219, 82, 92, 92, 92,171,200, 98, 24,102, 96,160, +151,167,189,172,176, 16, 22,101,150, 40,133,222,132,124,173, 1,137,118,126, 24,235,233, 85, 49, 13,154,147,147, 3, 87, 87, 87, + 98, 52, 26, 7,215,196,121,241,226, 69, 12, 26, 52,168, 92,120,130, 16, 2, 66, 72,190,191,191,127,174, 80, 40, 44,224,243,249, +138,141, 27, 55,106, 52, 26, 13, 24,134,177, 48, 26,141,220, 63,210,225,219,139,136,164,155, 37,249,102,230,144,158,189, 91, 54, +107, 66,175,223,123, 68,138, 74, 52,251,106,176, 2,126,221,168, 81, 35,166,176,176,240, 52,128, 68,189, 94,127,232,200,145, 35, + 22, 19, 38, 76,208, 28, 61,122,116, 28, 0,223, 77,155, 54,133, 40,149,202,239,234, 82,142,228,228,228,175,215,174, 93,251,201, +138, 21, 43,112,224,192,129,185, 0,150,150, 89,186,134,134,133,133, 97,227,198,141, 56,112,224,128, 41, 49, 49,241,172,201,100, + 74, 94,184,112, 97, 11, 23, 23,151,252,236,236,236,228,240,240,240,234,104,219,244,239,223, 95,123,243,230, 77, 65,113,113,241, + 13, 66,200, 71,179,102,205,154,214,190,125,123,197,232,209,163,197,133,133,133, 50, 43, 43, 43,193,238,221,187,237, 25,134,129, + 74,165, 2, 33, 4,197,197,197, 58,246, 81,200,130, 5,139,255, 85, 84,167, 69,254, 14,168, 72,183, 83,213, 59,181,170, 10,150, +148,148,228,166,167,167, 55,121,253,250,181, 1,128, 1, 0, 10,116,134,207,215,238,142,218, 19,220,161,145, 40, 91,175,199,201, +123,241, 37, 5, 58,195,231,229,150,137,215,175, 95, 23,191,122,245,202, 90,173, 86, 43,171,185,214,175,223,124,243,141,250,202, +149, 43,214, 41, 41, 41, 48, 26,141,104,221,186, 53,158, 63,127,142,162,196, 56,136,154,180,134,168,251, 32,196, 63,184,135,216, +139, 49, 72, 85,234, 12,207, 86,174,149, 43, 85,170, 48,157, 78,119,178, 42, 66, 30,143, 87,248,166,126,212, 8, 0, 10,133,226, +177, 82,169,236,234,226,226,130,132,132, 4,145,202,136,121, 33,203,190,218, 70, 41, 53,242,223,172, 20, 91, 48,122,244,104,220, +191,127, 31, 0,238, 87,197,169, 80, 40,230, 78,159, 62,253,202,254,253,251,153,148,148,148,126,123,246,236,233,247,236,217, 51, + 74, 10,211,141, 55, 75,120,240,157, 52,175,237,183, 62,254, 23, 7, 13, 26, 4, 55, 55, 55,236,222,189, 27, 91,182,108,209,207, +158, 61, 59,105,203,150, 45,109, 1, 28,170,230, 38,200, 1,156,119,114,114,154,211,188,121,243, 98,149, 74,133,130,130, 2,100, +101,101,193,193,209,145, 99, 0,167,147,179,157,221,161,211, 57,197, 34,230,252,109,220,201,204,174,209,154,213,145,207, 76, 28, +211,163, 85,183,255,172, 88, 38,198,205,147, 32,211,195, 64,247,124,134,249, 31,132, 88,107,180,135,186,183, 97,152, 9,114,131, + 33, 2,192,177, 58, 42,242,254, 93,187,118, 61,188,118,237, 90,203,229, 27,214, 98, 83, 19, 15, 24, 10, 10,144,167, 53, 34, 95, +107,128,162, 40, 17, 9, 9,241,112,116,116, 66,106,106, 42, 52, 26, 13,158, 62,125, 74,185, 92,238,233,218, 44, 58,149,174, 81, + 62, 93, 40, 19, 10,133, 5, 60, 30, 47,151, 97,152,194,148,148, 20,149, 70,163, 1,135,195, 17, 25,141, 70, 75, 51,202,234,233, +228,228,180, 16, 64, 48,128, 83,197,249,249, 91,131,120,176, 3,131, 30, 13, 36,142, 3, 86,206,156,224,228,237, 46,145,165, 36, +189,208,239,188,240, 75,190, 70,139,207,107, 24, 36,209,149, 45,146,132,144,249, 71,143, 30,157, 6, 96,111, 89,222,173, 24, 0, +223,190,195,248, 91,121,252,248,241, 79, 86,172, 88, 1, 75, 75,203,138,224,169,150,150,150, 22, 0,240,227,143, 63, 34, 33, 33, +161,125,185,191, 22,128,195,102,112,250, 6, 6, 6,166, 68, 69, 69, 9, 0,184,207,154, 53,171,227,182,109,219,240,193, 7, 31, +228,197,199,199,119,120, 99,129, 37,190, 31,126,248,225,221, 3, 7, 14,216,155, 76, 38, 20, 21, 21, 65,167,211,189,100, 31,229, + 44, 88,176, 96,197,214, 95, 98,205, 10,162,148,198,150, 5,246, 30, 8,224, 12,165, 52,251, 55, 66,171,188,130, 0,160,209,104, +190,246,241,241,177, 5,224, 5, 96, 16,128, 83,143,141, 56,134,103,105,136, 75,205, 92, 86, 46,188, 30, 27, 43, 94,226,163,238, +222,189,171,171, 87,175,222, 35, 0,159, 85,243, 34, 83, 56, 57, 57,173, 89,184,112,225,186, 53,107,214, 48, 12,195,224,202,149, + 43,184,117,225,140,233,233,141, 59, 36, 77,109, 84, 43,238, 45,122,205, 80,227,109, 23,117,225,147,135, 37, 56, 78, 41,205,172, +169, 98, 42,149, 42, 61, 57, 57, 89,208,188,121,115,227,195,135, 15,157, 40,165, 39,206,158, 61,219,117,201,146, 37,184,122,245, +234,161, 75, 26,227, 88, 74, 77, 71, 8, 33, 12,128,177,131, 7, 15,254, 40, 36, 36, 4, 45, 91,182, 44, 5,112,160,154,114,222, + 36,132,140,205,200,200,216,181,120,241, 98,187,197,139, 23,131,195,225,144,202,109,149,159,159,143, 71,143, 30, 97,244,232,209, +242, 95,126,249,101, 94,175, 94,189,166,116,233,210, 5,231,206,157,115, 55,227,102,252,250,244,233,211,225,182,182,182, 36, 57, + 57, 25, 10,133, 2, 55,111,222,228,249,248,248,116, 58,114,228,136,176, 65,131, 6,136,127,242, 4,103,199,142, 29, 72, 8,241, +161,148,190,170,138,199,146, 71,230, 76, 26, 57, 88,172,189,121, 26,136,189, 14, 0, 80, 42,138,161, 78,141, 67, 72,187, 70, 54, + 87,159,166,205,194,155, 85,152,117,130,131,131,195,252, 77,155, 54,137,252,252,252,240,241,218, 13, 88,184, 98, 9, 62,148,248, + 64,241, 58, 29,249, 70, 64, 96,101,133, 53, 43, 87, 96,240,200,209,144, 72, 36,120,242,228, 9,221,189,123,183, 74, 46,151,111, + 52, 71,104,113,185, 92, 16, 66, 0, 64, 37,151,203,149, 2,129, 64,206, 48, 76,129,209,104,204,141,222,190,181, 53,167, 32,119, + 50, 33,132,107,105,226, 68,151, 45,182,168,210, 63,207,142, 16,159,134,190,190, 79,190,223,189, 91,212,190,125,123,114,239,222, +189, 57,179,102, 76,159, 22, 28, 88,255,236,176,222,221,224,234,230,170, 53,149,234,100,103, 79, 69,235,191, 61,122,246,154,142, +152, 22, 63,160, 84, 93,135,175,147,195,149, 69, 15, 33,100, 12,128,145, 0,162, 40,165, 7, 9, 33,147, 0, 12, 3,112,188, 58, + 7,121, 66, 8, 7,192,119, 35, 70,188, 73, 38,160, 86,171, 75,202,255,223,162, 69,139,202,215, 50,213,229, 30, 89, 89, 89, 89, + 91, 88, 88,188, 56,119,238,156,229,232,209,163,237,215,173, 91,247,250,131, 15, 62,240, 56,116,232,208,215, 0, 82, 9, 33,254, + 0, 26,170, 84, 42, 35,135,195,129,191,191, 63,118,236,216,161, 52, 26,141,123,217,199, 56, 11, 22, 44,254, 14, 98,235,111, 88, +236, 32, 0,177, 0, 6,150, 45, 32,156, 1,160,230,164,210, 0,214,198,197,197,149,199,208,154, 85, 83,120,135,165, 75,151, 62, +184,127,255,254, 3, 0,235,107, 91,230,200, 48,204,137,217,179,103, 83, 23, 23, 23,165, 68, 34, 57,193,227,114,167,121, 89, 34, + 8,239,176,212, 29, 64,215,136,136,136,161, 95,127,253,245, 64, 0,237, 1,240, 60, 60, 60,178,114,114,114,148,191,252,242,139, +178,115,231,206, 74, 39, 39, 39,105, 96, 96,160,114,211,166, 77, 74,189, 94,175, 92,184,112,161, 18,111,197,251,170,134,219, 2, +192, 28,129, 64,112,162,105,211,166,113, 43,135,188,167,223, 48,111, 26,157,212,200, 89, 9,224,107, 0,179, 1,216, 1,224,133, +132,132,252,252,244,233,211, 11,129,129,129,187,204,224,117,111,222,188,249,229,195,135, 15,223,143,138,138,122,176,120,241,226, +251,142,142,142,153, 73, 73, 73, 38,141, 70, 67,139,138,138,168, 76, 38,163,103,206,156, 49, 58, 56, 56,108,175,142,167,171,144, +155, 77, 47, 30,172, 50,132, 67,198,138,241,180,179,128,243,250, 93,150,161,138, 68,162,194,130,130, 2,154,147,147, 67, 83, 82, + 82,232,241,227,199,105,255, 78,237,104,228,135,193,244,224,212,161,116, 99,255,118,180,189,181,133,202,213, 90,124,223,218,218, + 90,106,103,103,247, 29,128, 70,181,133,119,208,106,181, 21,225, 27, 60, 61, 61, 31,248,251,251, 71, 5, 6, 6,126,117,234,212, +169,249,155, 55,111, 30,218,179,190,207, 39,235,250,117, 82,151,196, 28,165,197, 71,190,166, 75, 91,251,105, 2,185, 24, 89,109, +184, 16, 71,135,136,107, 87,175,154,202, 3,116, 26, 12, 6,122,242,196, 9, 58,106, 64,159, 56,249,249, 31,191,191, 17, 54,247, +240,194,214,126, 39, 59, 91, 96, 12,222, 10, 84, 90,213, 22, 36,134, 99, 55, 27,206,142,247,189, 29,178,187,218,114,190,238, 96, + 13,251, 74,247,108,148,159,159, 95, 10,165, 52,187, 73,147, 38, 41, 0, 14, 54,105,210,164,242,223,147,107, 11, 78,186,106,213, + 42,138, 55, 89, 20, 56, 0, 66,215,174, 93,251,128, 82,250,160, 81,163, 70, 55, 41,165,104, 41,130, 83,119, 91,206,247, 67,124, + 93, 10,186,219,114,190,111, 41,250,125, 52,119, 74, 41,124,248,104,220,213,217,234,198,208, 70,110,197, 61, 60,108,175, 31,220, +183,103,195,251,239,191,191, 27,192,118, 0,159, 57, 58, 58,222, 24, 51,102, 76,194,129, 3, 7, 18, 54,109,218, 84,154,148,148, + 68,167, 76,153,162, 18, 10,133,159,177, 75,199,217,141,221,216,141,221,254,242,200,240,110,117, 9, 88, 58,248,147, 79, 62,121, + 64, 41, 45,143,165, 53,161,138, 99,134,172, 88,177,226, 1,165,180, 60, 58,124,239,218, 2,154, 1, 88,181, 99,199, 14, 42, 20, + 10,191,255,163, 65,210, 0,184, 14, 27, 54,172,131, 66,161,104,235,226,226,210,182,204,234,228,229,228,228,148,114,232,208, 33, +165, 90,173, 86, 82, 74,149, 6,131, 65,121,255,254,125,101,143, 30, 61,148,120, 19, 2,194,172, 8,225,149,183,229,174,184,121, +111,229, 84,186,220, 21, 55,223, 58,119,252,222,189,123,207,189,124,249,242,180,141,141,205, 18, 51, 3, 87,122, 57, 59, 59,135, + 58, 56, 56, 92,112,114,114, 90,238,224,224,144, 93, 90, 90, 74,139,138,138,232,243,231,207,233,213,171, 87,233,173, 91,183,168, +131,131, 67,102,117,229,236,101,201,220, 46,218, 48,135,154,246,174,165,186,109,203, 40, 0, 42,219,188,148,230,127, 19, 78,239, + 77,239, 71,123, 88,112,127,125,151,160,115,118,118,118,223,157, 56,113,194,148,156,156, 76,163,163,163,233,153, 51,103,232,188, +121,243,104, 99,119, 55,109, 7, 1, 39,183,171,144,185,240, 46, 1, 75,181, 90,237, 3,133, 66,241, 64,169, 84, 62,104,218,180, +233,131,118,237,218, 69,117,232,208,225,171,163, 71,143,206, 95,183,110,221,208, 94,214,194,231, 37, 49, 71, 41, 93, 60,128,210, + 57, 93,232,139,105, 61,232,123,150,204,163,106, 57, 93, 92, 50,203,163,181,171, 84, 42,122,253,250,117,122,249,242,101,234,234, +228,164,232,102,201,157,209, 89,136,238,157,109, 96,103,110, 57,123,218,114,246,221,254,230,115,163,250,220, 1,250,227,164, 1, +134, 30,118,156, 29,149,142,139,164,148,102,143, 24, 49, 34,149, 82,154,125,252,248,241, 12, 74,105,118,112,112,112,106,153,105, +248,112, 85,156,111, 5, 39,221, 91, 38,178,230,172, 90,181,234, 1,165,244,193,170, 85,171, 30, 0,111,130,168,118,183,229,236, +191,179,107,163, 73,123,102, 63, 61, 58,101,160,177,187, 45,103,127,149,229,180, 99, 78,199,238,221, 76,117, 23, 14,210, 19,243, +198, 25,187,184,218, 92,243,243,243,219, 56,127,254,252,168, 91,183,110, 61, 54, 26,141, 9, 41, 41, 41, 9,219,183,111, 79,232, +216,177,227, 77, 71, 71,199, 56,129, 64, 48,155, 13,138,200,114,178,156, 44, 39, 27,176,244,255,207,198,212, 48,117,114,154, 16, + 34,162,148, 46, 12, 9, 9,193,250,245,235, 71, 5, 4, 4,140,241,240,240,112, 6,128,172,172,172, 18, 0,138,144,144, 16,132, +134,134, 98,195,134, 13, 95,149,249,178,252, 95, 58,159,229, 16, 66, 60,231,206,157, 43, 93,183,110,157,105,202,148, 41, 77, 40, +165, 79, 8, 33,141,199,141, 27, 55,135, 97,152, 16, 31, 31,159,192,236,236,236, 60,181, 90,125, 16,192,174,242, 57,211,186, 66, +200,129,177, 77, 61, 55, 92,224,192, 88,105,106,104, 64,104,104,232,232,224,224,224,210,205,155, 55, 27, 20, 10,197, 41, 51,203, +157, 1, 96,117,249,223,142,142,142,174,143, 30, 61,154, 45,145, 72, 56, 41, 41, 41,208,106,181, 72, 78, 78, 54, 1,248,169, 58, + 14,165,129,110,253,246,248, 37,255,133,227, 7,217,148, 36, 62, 4,159,203,133,158, 39, 64,206,237, 11,216,123, 61, 81,161, 42, +197,182,119,169,167, 76, 38,251,114,222,188,121,227,150, 44, 89, 98,225,227,227, 67,126,253,245, 87, 28, 57,114, 68, 43,149, 74, +251, 83, 74,175,189,235,189, 50,153, 76, 16, 8, 4, 0,128,165, 75,151,130,195,225,240,164, 82,169,128, 16, 34, 36,132, 88, 17, + 66,184,250,151, 9, 48, 41,138,144, 91, 36, 67, 70,174,172, 70, 62,163,201,116,228,206,157, 59, 11, 90,181,106,197,185,119,239, + 30,242,242,242,144,156,156, 76,141,148, 30,190, 86, 98,248,174,174,229,179,114,112, 28,214,210, 94,200, 17,236, 11, 69, 55, 29, +135,187,211,132, 17, 0,230,148,237,222, 75, 8,225, 3, 40,104,218,180,105,207,167, 79,159, 90, 54,109,218, 84,157,152,152,120, +142, 16,226, 1, 96,127,149,211,187,150,150,249, 0,242,143, 31, 63, 14, 0,211, 41,165, 38, 66, 72,235,176,176,176,236,235,215, +175, 99,213,170, 85,185, 0,118, 0,128,216,222,113, 72,160, 45,159, 8,126, 88,133,142, 90,112,182,153,104,149,139, 11,196, 18, +151,247,154,139, 56,224,237,249, 20,109, 93,253, 57, 2, 67,105, 64,120,120,248,117,165, 82,169,141,140,140,212, 77,158, 60,153, +155,148,148,116, 23,192,141,178,105, 77, 3, 59, 17,193,130, 5, 11, 22,127,185,143,214,219, 97, 29,170,246,209,170, 66, 16,252, + 72, 8,201,223,176, 97,195,123, 0,108,142, 30, 61,218,166,113,227,198, 0,128,231,207,159, 91,249,251,251, 63,107,209,162,197, + 83, 0,183, 41,165,167,205, 44, 79,249,131,223,244, 39,213, 47,126,201,146, 37,228,192,129, 3, 6,224,141, 8, 42,123,185,108, + 5,176,181, 38, 63,159, 63, 10, 63, 63,191, 62,159,126,250,169,110,207,158, 61,198,207, 62,251,236, 20,165, 52,233, 93,120, 10, + 11, 11, 55, 77,152, 48, 97, 92, 88, 88,152,173,181,181, 53,137,139,139, 51,237,221,187, 87, 81, 88, 88,184,169,186,115,238,232, + 12,145,221,133, 76,176, 76,117,180,207,168,160,122,214, 79,231, 14,196,243, 59, 55,112,240, 90, 66,113, 82,161,250,226, 61,131, +225,200, 59,138,215,100, 66, 72,203,208,208,208,165,165,165,165,193, 60, 30,239,174, 66,161, 8,167,148,254,250,174,237,164,215, +235,115, 27, 52,104,240,246,117,244, 38,147,137, 82, 74,121, 6,131, 65,228, 80,106, 58, 19,182,101,207,135,147,253,109,133,249, +249, 50,252,144,164,208, 86, 90,108,241, 59,228,229,229,125, 53,109,218,180, 15,194,194,194,236,109,108,108, 72,124,124, 60,141, +140,140, 84,230, 21, 20,172,127,151, 50,150, 20, 21, 94,140, 62,118, 52,164,139,206, 64, 34, 82,139, 41,195, 37,231, 42,149,245, + 18,128, 75,101,131,105, 60, 33,100, 4,128,147,148,210, 31,106,228, 44, 41,185, 8, 64, 48, 98,196, 8,196,197,197,141, 2,240, + 35,128,195,171, 87,175,238, 16, 26, 26,138,240,240,112,132,133,133,245, 1,112,161,184,168,224, 76,212,225,131, 99,123,232,245, +156,136,180, 98, 19,151, 67,206, 86,201,153,159,123,233,220,165,152, 33,109,109,220,201,119, 23,110,152, 74, 76,244,225,164, 73, +147,138,116, 58,221, 5, 0,219, 0,196, 81, 74,217,213,133, 44, 88,176, 96,241,127,107,248,249,174, 10,225,245, 93,173, 66,171, +236,228, 24, 0, 49,132, 16,215,206,157, 59,175,181,181,181, 21, 25,141, 70, 20, 22, 22,190, 6,176,165,204, 58, 83, 23, 68,202, +229,242,197, 66,161,112,231,159, 84, 57, 13, 33, 68,210,180,105, 83, 30, 0,109, 21,251,255, 28,145, 69,113, 60, 57, 41,217, 6, + 20,199,203,255,149,148,148,116, 56, 48, 48,112,104, 98, 98,226, 47,148,210,179,127,160, 14,175, 8, 33,173,230,205,155,247, 49, +128,161, 0,126, 42, 44, 44,220, 84,157, 35,124, 57,174,105, 13, 33,109, 25,102,220,195,180,156,217, 58, 19,173, 47,224,112, 94, +170, 74,233, 55,119, 13,134, 31,255, 96,155, 38, 3,152, 82,182,253, 97,228,231,231,215, 26,228,147, 16, 66,174,189,200,186,157, +144, 33,173,106,177, 69, 85,101,204, 38,132,180, 92,184,112,225, 66,147,201, 52,146,195,225,156,200,207,207,175,181,205,170,181, +228,233,140, 11,118, 94,185,199,223, 98, 52,245, 22,114, 56, 23,148,122,227,178,106,174,123, 16,128, 89,209,225, 95,188,120,241, +125,120,120,120,243,176,176, 48,124,251,237,183,229,203, 46, 99,194,194,194,164, 70,163,209, 43, 60, 60, 28,187,118,237, 50, 0, +128, 86,111, 90,180,231,250, 67,206, 78,147,105, 0,143,195, 57,167,213,155, 22, 85, 41,202, 53,134, 57,219,162,206,151,150,154, + 76,125,184, 32,231,178,117,166,149, 90, 45, 77, 99, 31,115, 44, 88,176, 96,241,191, 9,198,220, 3, 41,165, 57,127,198,139,151, + 82,154, 2,192,102,249,242,229,127,166,146,148,254,213, 13,245,105, 22,253, 26,192,215,159,126, 17, 89,249,186,119,129,218,131, +138,154, 43,182, 0,252,167,108, 51, 27,247, 12,134, 67,168, 38,164,196,223,236,107,128, 2, 56, 90,182,153,123, 78, 38,222,228, +178, 92,240, 71,175,255,176,132,102,227,205, 42,194, 63,179, 78,177,120,179, 10, 5,175, 95,191,174, 92,207,199,101, 27,202, 99, +202,221, 81, 81, 41,128,113,102,150,115, 20,251,232, 98,193,130, 5,139,255, 29, 84, 53,117, 88,103,161,197,130, 5, 11, 22, 44, + 88,176, 96,193,162,202, 15,235,106,125,131, 9,128,222,213,156,100,182, 99, 59, 33,164,247, 59, 20, 42,134,229,100, 57, 89, 78, +150,147,229,100, 57, 89,206,127, 23,103,109,220,255,215, 11,235,254, 47, 84,216, 95, 25, 87,130, 93,250,202,114,178,156, 44, 39, +203,201,114,178,156, 44,231,191,118,227,176, 6, 63, 22, 44, 88,176, 96,193,130, 5,139,119, 7, 33, 36,168,236,167, 27, 33,100, + 70, 89, 42, 30, 0,213,248,104,241,218,175,205, 53, 24, 12, 18, 0, 96, 24, 70,170,191,187,210,173,166, 11,240,128, 94, 6,224, +251, 50,194,233,250, 55,203,225,223,230,188,100, 48, 24,236,203, 56,139,244,119, 87,246,171,145,179,221,154, 11,191, 57,254,206, +138, 62, 85,212,140,203,107,183, 38,235,173,178,186,155,221, 50,101, 57, 18,255,234,114,254, 93, 56,255,205,224,119, 88,155,171, +215,191,233, 71, 60, 30, 35, 45,189, 83,115, 63,226,183, 95,147,245,155,227,111,175,112,169,137,211,202, 82, 88,208,208,195,249, +171,154, 56, 83,178,242, 23,170, 74, 52,142, 53,113,214,117,108,122,185,185,245, 50,150,141, 77, 46, 48, 61, 35, 43,235,210,255, + 82, 95, 34,132,180, 1,176, 18,128, 77,165,127,199, 81, 74, 63, 98,123, 37, 11, 22, 44,254, 70,168, 54, 5, 79,149, 66,203, 96, + 48, 72, 30,156, 8,131, 74, 11,244,154,184, 70,226, 59,108,215,239, 86,181, 25, 52, 69, 2, 89,124,100, 32, 87,175,176,119,102, + 74,109,178,178,178, 72,217,131,243,123, 0,222, 85,112,218, 63, 56, 17,134, 18, 29,208,109, 76,184,189, 55, 96,147,199,231,127, +108, 41, 18,245, 84,171,213,205, 1,192,210,210, 50, 94,173, 82, 93,113, 46, 45,221,244,246,241,213,213,172,114, 89,223,155,176, + 70,210,100,216,174,121, 70,147, 73,240,250,222,206,110,154,252, 36,134,103,208,238, 88, 14,156, 11, 3,140,230,180,212,111,174, + 59,114,153, 35, 15,120, 79, 96, 97,209,210,206,222,190,171,137,210,166, 38,147,137, 24, 13,134, 4,133, 92,126,195,100, 48, 60, + 50,232, 84,142, 15, 78,125,110,170,169,156,111,215,101, 36,192,156, 0, 66, 68, 98,113, 79, 46,143,215, 9, 0,140,122,253,175, + 42,165,242,202,112,224,152, 57,117, 55,183,125,222,245,248,127, 27,244,122,131,228,229,133, 48,104,245, 64,208,136,207, 37, 45, +198,253,112, 8, 0,116,210, 71, 46,202,164, 83,237, 1, 64,212,112,208, 29,161,107, 80, 46, 0, 48,175,178, 37,207,163, 87, 64, +171, 7,154, 14, 10,151,212,198, 57, 57,244,136,227,146, 25,193, 66, 0,184,120,252,235,198,151,163,190, 29, 0, 0,239, 5,207, + 58,215,119,196,220,231, 0,176,225,187, 40,199,195,159,143,170,145,211,188,177, 41,231,203,147,162, 27,233, 20,217,118, 94, 34, +198, 53, 41, 41,137, 3, 0,238,238,238,102,141, 77, 79,192, 54, 27,152,195,225,114,187, 54,108,212, 40, 8, 0, 77,121,241, 34, +214,104, 48,220,116, 3,118,252,201,125,105, 30,165,191, 13,206, 90,150, 11,147, 5, 11, 22, 44,254, 78, 56, 83, 38,174,206,188, +189,163,218, 85,135, 42, 45,112, 45, 25,232,222,161, 5,102,140,123, 95, 92,121,223,177, 93,225,222, 73,247,126,106,178,231,135, + 77,156, 22, 45, 90,224,229,203,151,102,149,162, 68, 7, 92, 77, 2, 32,123,106, 93, 36, 18,189,216,188,113,163, 77,159, 62,125, + 24,119,119,119, 16, 66,144,147,147,211, 33, 38, 38,166,205,130, 5, 11, 62,132,236,105, 81,137, 14,197, 87,205, 8, 1, 90, 94, +214,230,141,235, 97,229,220, 81,182, 0,176,124,226,142, 54,247,158,229, 58,188,120,241,162,215, 39,159,124, 82,192,189,114,229, + 91, 39, 96, 95, 46,144, 97, 78, 57, 15,156,190, 99, 97,155,253,163,239,248,185,115,143, 55,106,212, 72,236,227,227, 67,172,173, +173,193,229,114, 81, 84, 84,228,253,228,201,147, 1,119,239,222, 85,197, 92,251, 94,112,255,238,144, 20,169, 69,123,141, 89,117, + 87,103, 89, 92,180,182,142,159, 48,124,184,231,168, 81,163, 44, 26, 54,108, 8, 0,120,241,226,133,223,177, 99,199,198, 28, 63, +126, 60, 20,234, 44, 67,137, 14,154,218,234, 94,193, 9,192, 2,232,100, 39,145,140,231,242,120,205, 13, 6,131, 71,153,181,225, +181, 81,175,143,151, 73,165, 7,223, 62,158,197,239,161,213, 3, 79,179,129,222, 93,131, 48, 33,184,183, 8, 0, 62, 25,189,182, +195,171,212,100,190, 78,167, 67, 99,255,166,157, 63,251,252,171, 11,224,112, 16, 17, 21, 83,113,188, 57,156,113, 79, 95, 34,236, +179,205,200,122,124,172,131, 81,158,220,179, 88, 33,231, 2,128,141,173,109,240,177,200, 31,175,184, 7,134,220, 78,206, 47, 53, +139,179,166,177,121, 62,114,187, 91,230,147, 43,205,190,185,184,151,231,237,237,141,199,143, 31,215,109,108,202,159, 89,155,220, +220, 18, 54, 45, 94,236,218,173, 91, 55,136,197, 98, 48, 12, 3,131,193,208,251,230,205,155,189,195,194,194,102, 65,254, 76,101, +238,216, 52, 3,155, 8, 33, 61, 39,207,152,231,246,254,208, 16, 4,247,239,204,118, 68, 22, 44, 88,252,173, 64, 8,153, 81,182, +234,176, 98,229, 97,229, 85,136, 85, 10, 45,134, 97,164,125, 38,173,147,116,109, 31,128,123,143,158,203,211,210,179,149,229,251, + 10,227,143, 53, 30,218,217,163,217,245,235,215,160,213,106,241,235,175,191,226,209,163, 71, 72, 77, 77,197,204,153, 51,181, 12, + 48,189, 26,206,162,110, 99,194,237, 33, 79, 18,251, 9,158,213,143, 73, 76,228,106, 52, 26, 92,191,126, 29, 69, 69, 69, 16, 8, + 4,240,244,244, 68,223,190,125,153,196,196, 68,135, 94,125,250,219,118,235, 63,246, 37,108,253,148, 12,195, 20, 85, 87, 65,134, + 97,164,189, 38,174,145, 52,243,171,135, 23,105, 89,242,149,159,239, 81,154, 76,148, 73, 73,125, 85,122,237,218, 53, 4, 5, 5, +225,210,165, 75,142,133,133,133,159,238,216,177, 99, 37,239,139,111,182,234,117, 5,139,106,224, 43,234, 54, 38,220,222, 81,122, +212,231,242,249,147,252,248,248,120,254,206,157, 59, 81, 80, 80, 0,129, 64, 0, 59, 59, 59,184,186,186,162,113,227,198,100,249, +242,229,226, 65,131,226,241,159,233, 33, 62,165,190,211,158, 85, 87,206,138,186, 43, 95, 89, 57, 41, 46, 54,140, 58,115,134,211, +165, 75,151,223,124,182, 55,104,208, 0,253,250,245,179, 24, 63,126,124,195, 81, 99,198,153,186, 13,156,252, 2, 98,159,146, 90, + 57, 85, 25,150,142, 37,183,220,123,143, 25,115, 42, 60, 60,220,206,213,213, 21, 34,145, 8, 0, 32,151,203, 61,211,210,210, 58, +132,134,134,142,184, 19, 23,201,116, 27,148,145, 5,145,151,186,166,246,252,183,130,199, 99,164,229, 86, 36,107,145,101, 81, 70, +102,174, 10, 0,116, 58, 29,116, 58, 29,180, 90, 45,102,207,154,201,157, 62,162, 93, 35,159,174,243, 30,166,190,206, 45,108, 26, +115,219,161,252,220,218, 56,153,146, 84,153, 44,253,231,233, 97,139, 23,187,186,184,252,119, 70, 48,226,192, 1,110, 97, 97, 97, +239,176,176,176,102,212,170,135,172,233,160,112,187,154, 56,107, 26,155,178,231,103,234,127, 54,183, 95,203, 93,159, 71,195,104, + 52,226,214,173, 91,184,126,253, 58,190,250,234, 43,122,238,220, 57,185,141, 72, 84,203,216,124,102,221,197, 45,199,247,139, 47, +142, 19,161, 80,136,159,126,250, 9,137,137,137,224,112, 56,104,209,162, 5, 38, 76,152,128,222,189,123,187,206,152, 49,147,118, +235, 63, 58, 5,182,254,197,127,164, 47, 17, 66, 56, 0,230, 45, 11,251,194,109,226,180, 57,216,240,217,114, 86,104,177, 96,193, +226,111,107,205,170, 54,196, 3,165, 20,209,209,209,180,108,235, 78, 41, 5, 5, 56, 13,134,237, 58,124,244,190,233, 76,131, 97, +187, 14, 83,128, 67, 1,142, 13, 80,175, 85,171, 86,122,153, 76, 70,239,222,189, 75,103,207,158,173,218,186,117,235,149, 51,103, +206, 28, 51,148,150,238,118,119,115,251,146, 2,156, 42, 61,239, 1,142, 15, 96,107,101,101,149,151,158,158, 78,207,158, 61, 75, + 87,173, 90, 69, 15, 30, 60, 72,207,157, 59, 71, 99, 98, 98,232,185,115,231,232,225,195,135,105, 92, 92, 28,125,254,252, 57, 21, +137, 68,121, 62,128,109, 13,156, 92, 10,112, 27, 15,219,185,232,248, 61,125,184,255,176, 93, 11, 40,192,181, 7,154,180,106,213, +202,120,236,216, 49, 26, 17, 17, 65,127,248,225, 7, 26, 23, 23, 71,243,243,243, 41, 35, 20,229,149,159, 87, 93, 57, 41,192,241, +240,240,200,147,201,100,212,203,203,139, 10, 4, 2,234,226,226, 66, 27, 55,110, 76, 59,116,232, 64, 7, 12, 24, 64,199,141, 27, + 71, 63,253,244, 83, 42,147,201,168,133,133, 69,110,249,121,213,113, 6, 1,150, 34,145, 40,253,193,131, 7,180, 58,168,213,106, +154,159,159, 79, 47, 92,184, 64, 69, 34, 81,122, 16, 96, 89, 19,167, 37,208, 58, 48, 48, 48, 47, 63, 63,159,150,150,150,210,244, +244,116,250,228,201, 19,154,152,152, 72,211,211,211,169, 90,173,174,224,126,254,252, 57,245,245,245,205,179, 4, 90, 87,203,249, +111,222,202,251,196, 91,155,183,139,203, 0, 87, 87, 87,245,241,227,199,233,235,215,175,233,254,253,251, 41, 7, 88,251,187, 99, +107,224, 20, 0,125,187,116,233, 98,188,117,235, 22,125,248,240, 33, 93,186,116, 41,237,215,175, 31,237,223,191, 63, 13, 11, 11, +163,153,153,153, 52, 51, 51,147, 14, 24, 48,192, 40, 0,250,214,214, 63,171, 26,155,182,128,247,160, 65,131,212,165,165,165, 52, + 37, 37,133, 54,111,222, 60,147, 11,140, 23, 1,205,186, 3,194,218,250,167, 7, 96,239,230,230,150,125,235,214, 45, 26, 21, 21, + 69,125,124,124,242,184,192,100, 27,160,129, 13,208,128, 11, 76,110,208,160, 65,222,173, 91,183,104, 65, 65, 1,245,246,246,206, +246, 0,236,223,181, 47,225, 77,130,237,189,203,194,190,160,207, 50, 85,116, 89,216, 23, 20, 64,122, 89, 64,215, 75,108,159,100, + 55,118,251,247,109,191,211, 34,255,180, 85,135, 3, 7, 14, 36, 0,174,214, 36,217,212, 92,238,186, 13, 27, 54, 48, 26,141, 6, +123,246,236, 41, 30, 57, 98,196,209,238, 93,187,166,212,247,241,145, 17, 14,167,214,220,133,121, 66,225,252, 13, 27, 54,216,233, +116, 58,220,191,127, 31,109,218,180,129,171,171, 43,196, 98, 49,196, 98, 49, 36, 18, 9,252,253,253, 33,149, 74, 97,109,109,141, + 37, 75,150,216,230, 9,133,243,107,227, 53,153, 40, 3, 0, 70,147, 73,192, 7,102,248,182,109,123, 63, 52, 52,148,227,232,232, + 8, 7, 7, 7,136,197, 98, 36, 38, 38, 66,167,211,193,202,210,202,172, 32,173, 28, 14,135, 35, 22,139,113,249,242,101,204,155, + 55, 15,157, 58,117,130,157,157, 29,172,173,173,209,188,121,115,244,237,219, 23,211,167, 79, 71, 74, 74, 10,136, 25, 78, 37, 9, + 12, 51,103,250,244,233,146,160,160,160, 42,247,107, 52, 26,200,100, 50,228,229,229,193,211,211, 19, 33, 33, 33,146, 4,134,153, + 83, 29,159, 35,224,234,233,231,119,234,238,221,187, 78, 34,145, 8, 17, 17, 17, 56,121,242, 36,206,159, 63,143,179,103,207, 34, + 58, 58, 26, 63,253,244, 19,242,242,242, 0, 0,126,126,126, 56,114,228,136,147, 88, 34,137,118, 4, 92,217, 15, 16,243,240, 42, + 55,247, 98,243,156, 28,167,241,227,198,221, 80, 42,149, 24, 63,126, 60,214,173, 95,191,156,103,102, 52,122,127,192,214,193,205, +109,223, 23, 95,124,193,201,201,201,193,240,225,195,243, 55,173, 95, 63, 53,246,194,133,134, 15,206,159,111,184, 46, 60,124,106, +247,238,221,243, 51, 51, 51,113,224,192, 1,142,139,183,247, 62,127,192,182,174,229, 44, 6,230,109,217,178,197, 66,163,209,160, + 79,159, 62, 41,166,248,120,127, 3,240,163, 18, 72,188, 10,148,214,118,126, 54, 48,103,201,146, 37,174, 66,161, 16, 31,127,252, +113,126,201,171, 87, 1, 6,224, 7, 57,144, 38, 7,210, 12,192, 15,197, 47, 95, 6, 76,156, 56, 49, 95, 40, 20, 98,243,230,205, +174,217,255, 77,186,109,174, 5,171, 13, 33,228, 20, 33,228, 26,128,172,201, 51,230, 77, 14,106,215, 17, 7,118,239,192,231,225, +159,236, 3, 48,146, 16,114, 16,192, 34,182,231,177, 96,241,239,132, 57, 90,228,127,117,250,176,218,153,178, 10,187,215,153, 51, + 20, 64,143,154,136,236, 29, 29,219, 4, 4, 4,224,250,245,235, 8, 12, 12,188,107,103,103,103,224, 11,133,224,241,120,160,166, +218,115, 68, 91,138, 68,189,122,247,238,205,220,190,125, 27,190,190,190,176,180,180, 4,143,199,251,205,198,231,243,225,230,230, + 6,133, 66,129, 94,189,122,241,182,109,219,214, 11, 90,237,103,181,190, 16,147,158,136,243,110,127, 49,238,251,253,251, 26,116, +235,214, 13,114,185, 2, 38,147, 9, 86, 86, 86,208,233,116, 96, 24,230,205, 20,144,158, 42,204,105, 52,163,209,104,228,114,185, +240,245,245,197,186,117,235,160,209,104,192,231,243, 1, 0, 10,133, 2, 50,153, 12, 79,158, 60, 65, 90, 90,154, 89,249, 20,173, +109,109,223, 31, 53,106,148,160,170,125, 90,173, 22,114,185, 28,114,185, 28, 50,153, 12, 26,141, 6, 29, 59,118, 20,156,137,142, +126, 31, 5, 5, 85, 38,150,214, 90, 88,140, 56,112,224,128, 68, 32, 16, 64,173, 86,163,184,184, 24, 25, 25, 25,120,245,234,149, + 70, 42,149, 26,172,173,173, 57, 62, 62, 62, 28,161, 80, 40, 28, 54,108, 24, 81, 40, 20, 32,132, 96,208,160, 65,142,135, 34, 34, + 70, 1,248,138, 29,210,230,225, 34,160,109,173,211, 13,110,223,174,221,229,187,247,238, 5,205,159, 63, 31,113,113,113, 95, 88, + 69, 70, 94, 43, 1, 30,213,116,110, 10, 48,231,203, 74, 2,134,190,122, 21, 88, 10,228, 85, 58, 36,205,231,229,203,243, 19, 39, + 78,124, 28, 23, 23,231,180,121,243,102,215,145,195,135,207, 1,176,182, 46,101,180,182,181,109,235,230,230,134,115,231,206, 33, + 61, 53,245, 19, 3,160,174,203,249, 28, 46,183, 75,183,110,221,240,211, 79, 63, 33,243,213,171, 79, 12,191, 45,227,155, 15, 37, + 32,143, 73, 73,249,100,223,190,125,123,167, 76,153, 2, 46,195,116,129,193, 80,151,203,252,206,241,125,202,204,249,216,247,221, +182,125, 0,166, 81, 74, 77,248,147, 82, 90,177, 96,193,226,111, 58, 7,103,134, 22,249,187,136,173,242,169,196, 58, 89,180, 36, + 18,137,135, 88, 44, 70, 86, 86, 22,154, 54,105, 34, 21, 10,133, 16,240,120,176, 16, 8,204, 42, 68, 73, 73, 73,160,187,187, 59, +228,114, 57,156,156,156,192,231,243, 43, 54,129, 64, 80,241,187,181,181, 53, 56, 28, 14,188,189,189, 81, 82, 82, 18, 88, 43,111, +238, 19, 73,228,182, 89,179,111, 93, 59,215, 96,248,240, 96,216,219, 59,192,203,203, 19, 18,137, 4,150,150,150,240,242,242, 66, +195,134, 13,233,166, 77,155, 96, 37,105, 97,214,131,188,178,120, 98, 24, 6, 70,163, 17,185,185,185,120,246,236, 25,226,226,226, +112,235,214, 45, 60,124,248, 16,197,197,197, 48, 39,111,117,137, 90,221,146, 97,152, 42, 69,150, 76, 38,131, 76, 38,171, 16, 90, +121,121,121, 72, 75, 75,131, 82,165,106, 85,131,232, 13, 14, 8, 8,224, 2,128,165,165, 37, 90,181,106,133, 93,187,118, 25, 78, +159, 60, 57,186,217,173, 91, 14, 94, 23, 46,216,125,191,115,231,232,144,144, 16,227,237,219,183,161, 80, 40,240,244,233, 83, 56, + 59, 59, 51, 2, 11, 11, 54, 87, 94, 29,241, 0, 80, 57, 21, 23,247,239,212,169,211, 75,185, 92,142,141, 27, 55,114,120,214,214, +223,133, 3,220, 26, 79,228,114, 59,119,235,214, 13,167, 78,157, 66,214,171, 87, 75, 95, 85, 33, 96, 94, 1,121,233, 41, 41, 75, +247,237,219,135,190,125,251,130, 48, 76,157, 29,149, 58,116,232, 16, 96, 50,153,240,248,241, 99,216, 1,119,234,122,126,195, 70, +141,130,202, 45,191, 34,224, 70,117,199,137,128, 27,177,177,177,176,180,180, 68,211,102,205, 90,215,241, 50,155, 8, 33,217, 83, +102,206, 71,212,249, 95, 0, 0,251,190,219,150, 91, 73,100,177, 96,193,130,181,104,253, 45, 45, 90,229,194,170,242, 86,241, 33, + 91, 71, 18, 0, 0,143,199,131, 64, 40,132, 64, 32,120, 35,144,132,194,186, 40, 62, 88, 88, 88, 84, 8,171,202, 2,171,242,239, + 86, 86, 86,102, 9, 24, 0, 40, 74, 62,223,117,218,212, 41, 2,161, 80, 8,157, 78, 11, 74, 41,132, 66, 11,216,217,217,193,215, +215, 23, 10,133, 2,157, 58,119,215,102,200,248,209,142, 77,135,197,189, 75, 3, 26, 12, 6,168, 84, 42, 20, 21, 21,161,176,176, + 16, 10,133, 2,106,181,218,236,165,232, 38,147,137,155,145,145,129, 31,127,252, 17, 5, 5, 5, 0,222, 56, 90,151,139,171,242, +159, 47, 95,190, 68, 68, 68, 4, 82, 83, 83,235,116,127,186,118,237,138,232,232,104,110,143, 94,189,118, 95,242,241,201,186,228, +227,147,213,163, 87,175,221,167, 78,157,226,122,120,120, 32, 45, 45, 13,247,239,223, 71, 81, 81, 17, 40,165,236,250,249,119,192, + 11,160,168,164,176,112,202,242,229,203,169, 88, 44,198,198, 47,191,108,185, 22, 24,107,174,128,177,173, 65,192,216,254, 49, 1, + 3, 74, 41, 76, 38, 19,140, 70,227, 59,213,141, 16, 66,120, 60, 94, 93, 67, 43,144, 58,240, 87, 56,190, 47,249,116, 29,206,254, +116,172,124, 87, 18, 43,178, 88,176, 96,241,119, 71, 77,185, 14,153, 74, 10,178,226,103,117,200,205,205,125,173, 82,169, 26,248, +248,248, 32, 51, 51, 83,226,237,237,253, 74,192,227,129, 47, 16,128,112,106,215, 4, 86, 86, 86,143,179,178,178, 58,123,120,120, +192, 96, 48, 84,136,170,183,167, 14,203,173, 52, 15, 31, 62,132,149,149,213, 99,104,106,140,156, 0,163,174,168, 94,235,214,173, + 43, 44, 67,118,118,118,176,179,179,133, 80,104,129, 21, 43, 86,152, 54,111,218,180,195,251,189,112,249, 7, 11,150,211,229,107, +119,255,169,141,107,238,139,201,202,202,234,177,151,151, 87, 71, 91, 91, 91, 68, 69, 69, 33, 45, 45, 13, 69, 69, 69, 40, 41, 41, +129, 86,171, 69, 73, 73, 9,116, 58, 29, 44, 44, 44,208,172, 89, 51,216,216,216, 32, 38, 38,230, 49,180,218,170,197,101, 65, 65, +212,227,199,143, 59,182,107,215,174,194,162,210,179,103, 79,210,179,103, 79,167, 10, 43, 90, 73, 9,242,243,243,113,247,238, 93, +196,196,196,128, 16,130,164,164, 36,163, 86,173, 62,204, 14,139,119,131, 6,248,149,187,111,223,222, 15, 63,252,112,106,231,206, +157, 97, 4, 6, 0,136,248,255, 37, 96,202,113,235,214,173, 39, 70,163,177,115,227,198,141, 33, 3,218, 3,248,169, 78, 34, 50, + 57, 57,214, 96, 48,244,106,217,178, 37,162,142, 30,237, 10, 32,173,170,227, 84, 64,215,160,160, 32,168,213,106, 60, 77, 72,120, + 80, 7,145,181,123, 89,216, 23,147, 39, 78,155,131, 3,187,119, 96,223,119,219, 50,246,238,218,234, 5, 51,252,199, 88,176, 96, +241,175,178,102,213,170, 69,254, 23, 81,149,143, 86,185,248, 98,234, 66, 36, 47, 42,122, 16, 27, 27,219,160,117,235,214,216,189, +123,119,187, 78, 29, 59,190,230, 11, 4, 6, 1,159, 15,142, 25, 47, 18,181, 74,245,243,207, 63,255,220,126,216,176, 97,204,237, +219,183,225,234,234, 90, 33,180, 13,123,141, 42, 0, 0, 32, 0, 73, 68, 65, 84,202,127, 50, 12, 3, 74, 41,172,172,172,112,226, +196,137, 82,181, 74,245,115,173,214, 34,163,201,200, 41, 19,122,148, 82,200,100, 50,240,249,124,124,245,213,102,108,223,180,105, +156, 17, 56,230, 39,114, 94, 12,192,226,255,219, 11,186,164,228,242,217,179,103,219,132,134,134,242, 60, 61, 61, 33,147,201, 80, + 84, 84,132,130,130, 2, 40, 20, 10, 40, 20, 10, 20, 21, 21, 65, 38,147,193,194,194, 2,113,113,113,122, 77, 73,201,229,234,248, +132, 26,205,241, 73,147, 38, 45,137,141,141,117, 99, 24, 6,122,189, 30, 38,147, 9, 38,147, 9,165,165,165, 72, 78, 78, 70,124, +124, 60, 18, 19, 19, 81, 88, 88, 8, 30,143, 7, 46,151,139,135, 15, 31, 22,137,244,250,163,236,144,126,119,240,128,168,155, 55, +111, 78,157, 48, 97, 2,220, 61, 61,187, 35, 51,211, 44, 1,115,178, 6, 1, 35,127, 7, 1,243, 27, 1, 84, 92,124,239,229,203, +151,157,123,244,232, 1, 55, 79,207, 47,154,101,102, 94, 74,168,131,159,150,209, 96,184,113,243,230,205, 94, 19, 39, 78,196,238, +221,187,191,112,126,249,242,124,222, 91,211,156,206,128,115,253,134, 13,191,152, 60,121, 50, 46, 94,188, 8,163,193,112,163,134, +135, 78,229,136,239,245, 38,207,152,231,245,150,227,251, 46, 66,200, 92, 0, 27,217, 30,197,130, 5,139,127,178, 69,171, 78, 83, +135,150, 70,227,178, 69,139, 22,233, 57, 28, 14,130,131,131,173,127, 58,117, 42,228,225,163, 71,190, 82,169,212,206,104, 52,214, +202,229,172,213,110, 93,180,104,145, 76,167,211,193,223,223, 31,133,133,133, 48, 26,141, 96, 24, 6, 12,195,128, 16, 2, 14,135, + 3,177, 88,140,216,216, 88,236,221,187, 87,225,172,213,110,173,245, 37, 97, 52, 62,142,136,136, 0,151,203,165, 22, 22, 22, 32, +132,128, 97, 24,108,222,188, 89,186, 29,136, 2, 0, 46,135,163, 3, 0, 14,135,152,235,189, 91,235,188,165, 64, 32,128,233,205, + 34,128, 90,143,181,215,106,183,108,216,176,161,248,233,211,167, 80,169, 84, 21,214, 55,165, 82, 89,225, 92, 47,147,201, 64, 8, +129, 74,165,194,169, 83,167,138,237,181,218, 45,213,241, 21, 0, 57,153, 73, 73, 67,218,181,107, 87,240,242,229, 75,200,229,114, + 60,126,252, 24, 49, 49, 49, 56,114,228, 8, 46, 94,188,136,228,228,100, 24, 12, 6,120,120,120,128, 82,138,147, 39, 79,202, 13, +197,197, 3, 10,128, 28,118, 88, 84,143,122,174,174,189, 92, 36,146,116,103, 39,167,204,122,174,174,189,222,222,111, 11, 60,127, +254,252, 57, 12, 6, 3,124,125,125, 29,106,242,211,162, 6,195,205,155, 55,111, 98,226,196,137,240,106,208, 96,189, 15,224,252, +246, 49, 62,128,179, 79,195,134,235,203, 5, 12, 53, 24,110,214,181,204,214,192,182,197,139, 23,171,249,124, 62, 34, 35, 35,125, +245,141, 26, 37, 50,192, 88, 49,208,164, 7,192,175,237,124, 55, 96,199,167,159,126,154, 67, 8,193,193,131, 7,157,108, 27, 54, +124,194, 0,147,108,129,122,182, 64, 61, 6,152,100,219,176,225,147,200,200, 72, 39,131,193,128, 5, 11, 22,228,184, 1, 59,106, +160,156, 71, 41, 29, 76, 41,237, 70, 41,245,218,187,107, 43,206,254,116,172, 92,100, 77,163,148,222,165,148, 78,160,148, 62, 97, +123, 28, 11, 22, 44,254,201, 32, 85,249, 65,241,218,175,205, 5,168,164,123,135, 22,184,247,232,153,220,201,222,230, 66,249,190, +194,248, 99,141,223, 11,180,105,241,205, 55,223,128,199,227, 33, 35, 35, 3, 9, 9, 9,176,177,177,193,184,113,227,180,234,226, +226, 33,229,185, 14, 9, 33,189, 41,165, 49,101,156,111,242,169,201,147,196, 13,153,184, 6,231,207, 70,115,109,109,109,161, 84, + 42,193,225,112, 96, 97, 97, 1, 43, 43, 43, 88, 90, 90,226,254,253,251, 24, 56,120,168, 49,207,170, 91, 69,192,210,242,124,106, +149, 57, 65, 8, 23, 0,218, 3, 86,177,192,199, 18,119,247, 69, 43, 87,174,180,236,215,175, 31,248,124, 62, 60,235,249,229,248, +246,223,184,141,195, 33,134,204, 2,197,138,134,245,220,109, 19,146,210, 0,144, 55, 57, 17,203,114, 29, 86, 85, 78,111,221, 53, +223, 19, 63,108,178,105,213,234,141, 63,186, 76, 38, 67,110,110, 46,164, 82, 41,100, 50, 25, 84, 42, 21, 0, 32, 58, 58, 26,103, +175, 39, 42,212,158, 33, 41,213,149,243,191,117,127,102,237, 94,122,167,254,161,136, 31,184,206,206,206,200,205,205, 69, 94, 94, + 30,100, 50, 25,212,106, 53,140, 70, 35, 10, 11, 11,177,103,223, 15,198, 2,113,183,212,242,128,144, 53,114,170, 50, 44, 29,148, +191,120, 4, 53,243,161, 83,167, 78,181,182,177,177,129,201,100, 66, 81, 81, 17,210,211,211,241,242,229, 75, 92,191,126, 93, 37, +149,233,160,114,234,147, 89, 30,176,180,202,246,252,243, 76,168,127, 63,206,178,190, 4, 0,238,110,110, 89,175, 94,189,146, 24, +141, 70,120,120,120, 24,100,133,133,235, 5,192, 69,107, 32, 27, 0,205, 7, 86,110,217,182,109,202,208,161, 67,209,182,109,219, +140,156,220,220,250, 85,245, 37, 16,194,245, 7,108, 75, 60, 61,227,239,222,189,235,154,158,158,142,137, 19, 39,230,191,122,241, + 98,105,185,191,150, 28,232,234,211,176,225,250,200,200, 72,167, 6, 13, 26, 32, 48, 48, 48,199, 34, 61,189,249, 51, 64, 94, 77, +255,172,118,108,202,158,159,169, 63,107,120, 64,219,217,179,103,195, 96, 48,224,250,245,235,184,115,231, 14, 94,189,122,133, 95, +126,249, 69,102, 35, 18,141, 46,207,117, 88, 93,255, 28,224,167,242, 61,120, 48,130,240,249,124,236,219,183, 15,177,177,177, 0, +128,160,160, 32, 76,158, 60, 25, 6,131, 1,227,199, 79,160,103,158, 89,166,212,212, 63, 9, 33, 1, 0,190,196, 27,145,215,150, + 82,106, 65, 8,201, 2,224, 85, 23,159, 44,182,127,178,156, 44,231,191,135,243,159,138, 90,115, 29,174,249, 22,182,191, 77,243, + 49, 61,235,216,174,112,166, 75,215,110, 77,194, 87,133,113,218,181,107, 7, 47, 47, 47, 4, 5, 5, 33, 61, 61, 93,104,103,103, + 87, 91, 62, 53,101,183,254, 99, 95,182,104,209,194,110,233,210,165,182,125,251,246,229,121,121,121,129, 82,138,216,216, 88, 68, + 69, 69,149,238,222,189, 91, 81,226, 50, 88,246,224,202,143, 74,115,242,169,221, 1, 74, 0,172,246,204,202,250,110,206,172, 89, + 97,173, 90,183,158,186,106,213, 42,142,216,202,146,183,110,197, 52, 11, 0, 88,243,245, 17,219,161, 33,227,176,165, 17,208,125, +108,213,121,228, 42,151, 51, 61,115,250,171,247,135,247,106,244,241,220, 41,198, 81,163, 70,137,108,108,108,224,229,229, 5,123, +123,123,164,164,164, 32, 51, 51,147,158, 62,125, 90,121,235,225,115,222,201,139,247, 94, 89,216,186,153,147,151,176,184, 91,191, +145,169,239,191,255,190,253,164, 73,147,172,219,180,105,195, 19, 10,133, 16, 10,133,200,205,205, 69,114,114,114,233,233,211,167, +149, 37,146, 1, 69, 15,174, 68, 22,155,153,235, 80,221,109, 76,120,242,141, 75,171, 22,196, 63,126, 60,193, 4,180, 44, 45, 45, +245, 48, 26,141,132,195,225,100,155, 76,166,199,165,197,197,123,181, 65,171, 54,179,185, 14,205,131,209,104,228, 27,141, 70,200, +100, 50, 92,186,116,137,121,241,226,197,202, 71,143, 30,173,204,202,202,130, 94,175,199,136, 17, 35, 16, 20, 20,132, 43, 87,174, + 32, 47, 55,247,116, 77, 92,207, 0,185, 48, 51,115,242,244,233,211,207, 69, 68, 68,112, 30, 61,122,228,180,111,223,190, 61, 85, + 9,152, 9, 19, 38,152,114,211,211, 39,107, 1,121, 13,253,179,166,177,153,127, 62,114,251,163, 97,193, 33,205, 86,133,174,228, +117,234,212, 9, 78, 78, 78,232,218,181, 43, 74, 75, 75,237,154, 54,109, 90,219,216, 44,238,214,127,116, 74,203,150, 45, 69,155, + 55,111,118,157, 50,101, 10,230,206,157, 11, 0, 80,171,213,184,120,241, 34, 22, 44, 88,144,147,206,180, 87,213,214, 63,203, 44, + 85,229, 2,236, 26,128,110, 0, 82, 88,199,119, 22, 44, 88,252, 35,173, 86,132, 4, 81, 74, 99, 9, 33,110, 0, 6, 2, 56, 67, + 41,205,174, 86,104, 1,255,205,167,118,227,206, 19, 84, 78,243,241, 6,110, 9, 6,239, 73, 47,102, 46, 90, 31,200,213, 43,236, +121, 68, 99,147,244,252, 57,169, 45,231, 97, 69, 62, 53, 91, 63,165,227,203,195,237,214,173, 89, 51,127,203,150, 45,189,202, 67, + 56, 88, 89, 89, 61, 86,171, 84, 63, 59,107,181, 91, 75,108,253,126,174,107,110,190, 76, 32, 23,192, 44,251, 7, 15,182, 13, 26, + 58, 98,131,133,131, 47,111,249,218,221, 26, 46,135,163, 75,206,202,195,150, 70,128,200,140, 5,146, 37, 58, 32, 94,230,102,200, +117, 12,121,246,233,226,197, 31,175, 89,189,186,157, 88, 44,238, 94,106, 48,248,153, 76, 38,192,100, 74, 42, 81,169,174,209,210, +210,187,218,160,208, 77, 22,182,110,212,236,188,132,118, 77,139, 29, 82,143,181,219,191,119,239,188,163, 71,143,254,174,238,142, + 90,237,182, 18,187,166, 49,230,212,189,242, 49, 26,224, 87, 72,165,191, 86,219, 9,192,230, 58, 52,251,235,195,100,154, 97,111, +111,127,160, 87,175, 94, 22,189,123,247,198,192,129, 3,209,169, 83, 39,152, 76, 38, 80, 74, 81, 92, 92,140, 35, 71,142, 96,195, +134, 13, 73,245,129,213,181,241,105,129,159,133,103,207, 14,104,217,178,229,190,154, 4, 76,153,200,170,213, 39,177,230,177, 41, + 76, 50,216, 14, 73, 27, 51,103, 93, 35,157, 34,219,206,209,202,224, 26,255,228, 49,199,252,177,233, 95,108,140, 61,210,126,196, +240,225,115,184, 12,211,181,108, 5, 36,125,154,144,240,160, 60,169, 52,130, 38, 95,170, 99, 95, 42,143, 93,199, 58,190,179, 96, +193,226,159,138, 32, 0,177, 0, 6, 82, 74,191, 43,115,142,175,222, 25,158, 97, 24,105,185,213,135, 97, 24,105,202,201,153,227, +106, 98,231, 1,189,202, 44, 89,168, 53,215, 97,217,239,105, 64, 49,180,218,207,126, 19,140,180,210,234, 66,222, 91,199,215,165, +182, 69,192, 51, 24,180,131, 32, 77, 0, 78,205,122,195,215,110,205, 39,149,235, 84,237, 75,246, 55,215,229, 23,106,128, 27, 80, + 42,111, 64,169,172,210,105,151,199,240, 11,107, 43,231,219,117, 79, 7, 20,127,180,238, 76, 29,219,135,249, 3,237,249,111,195, +235,252,252,147, 0,196,158,209,209, 46,231,163,163, 71,125,188,112,225, 8, 55,119,247,134, 78, 78, 78,246,214,214,214,156,219, +183,111,191, 52,104, 52,219, 90, 1,251,203,172,169,181, 66, 11,252,236,159,158,222,124,228,240,225,115, 8,195,116,169, 44, 96, +168,193,240,139, 47,176,163, 38, 75,214,187,142, 77, 47,161, 91,175, 50, 75, 22,184,102,142,205,204, 55,229, 88, 11,131, 97, 45, +226,226,170,232,243,117,238, 75,107, 8, 33,197, 96, 29,223, 89,176, 96,241,207,197,153, 50,113,117,230,119,123,254,202,252, 62, + 0,122,179,156, 44,231, 63,133,243,141, 86,129, 13,219,158, 44, 39,203,201,114,178,156,127, 62,231, 63,117, 99, 88, 17,202,130, +133,121,160,111,156,211, 21,108, 75,176, 96,193,130, 5,139,202,168,228,155, 85,249,157,241, 29,240,198,117,167,119, 53, 47,149, +152, 58, 92,160,247, 59,188,180, 98, 88, 78,150,147,229,100, 57, 89, 78,150,147,229,252,119,113,214,198,253,119, 92,205, 72, 8, +153, 81,238,155,245,118, 76, 45, 98,110,154,155,119,188, 48,187,244,149,229,100, 57, 89, 78,150,147,229,100, 57, 89,206,127, 52, +106,178,104,113,216,230, 97,193,130, 5, 11, 32, 60,156,112, 0, 66,128,112, 14,112,140, 11,140,228,190,249,251,221, 49,114, 36, +169, 50,152,237,188,241, 14,214,108,139,179, 96,241,207, 1,165, 52,187,186,164,210,172,143,214,255, 95, 5,236,237,234,234,186, + 11, 0,201,201,201,153, 65, 41, 77,103, 91,229,127, 15,142,142,142,189, 12, 6, 3,228,114,249,207,255,196,250, 53,111, 68,134, + 83, 14,154,254,247,137,129,244,132, 36,122,160,170, 99,155,249,145,137, 32,255,141,197, 69, 76,120, 26,159, 76, 79,212,161,207, +115, 6,244,246,218, 1, 0,231, 98, 50,230,252, 21,113,181, 8, 33,141,157,157,157, 47, 48, 12,195, 24,141,198, 89,185,185,185, +209,213, 11,161,145, 92, 0,224,209, 43,203,156, 28,154, 44,253,232, 67,194, 43,209,238,149,105,213, 42, 57,151,199, 77, 21,242, + 92,111,130,235,113,174, 72,217, 49,161,170,243,143, 30, 61, 90,109, 22,239, 0, 63, 50,160, 73,179,102,131, 91, 7, 90,166,124, +185,181,221,150,238,190, 78,188,151, 25, 15,197, 95,236,148,239,178,113,168, 55,120,210,104,199,104,198,138, 76,216,179, 39, 95, +201,142, 50,243,241, 57, 33, 14,165, 64, 32, 79, 40,244, 50, 26, 12, 46, 4,160, 92,134,201,213,107,181, 25,124, 32,110, 41,165, +178,127, 58, 39, 95, 40,244, 52, 26, 12, 46, 0,240,191, 88, 78, 22,191, 69,181, 66,203,218,218,250, 62,135,195,241,172,156, 12, +183, 60,159, 96,249,255, 42,239, 35,132,192,104, 52,102, 22, 22, 22,182,169,195, 3,209, 6,192, 40, 0,229, 75,212, 15, 1, 56, + 66, 41, 85,188,227, 3,214,134,207,231, 47, 18,137, 68,239,169,213,234,230, 0, 96,105,105, 25,175, 82,169, 46,151,150,150,126, +249, 46,188,132, 16, 6,192, 72,177, 88,220,147,195,225,244,164,148, 18, 74,233, 21,165, 82,121, 25,192, 81, 74,169,225, 29, 56, + 45, 37, 18,201,218, 38, 77,154,140, 93,182,108, 89,129,163,163,163,255,130, 5, 11,238, 57, 59, 59,255,152,159,159,191,130, 82, +170,254, 95,232, 28,132,144,134,174,174,174,135,120, 60, 30, 55, 35, 35,163, 39, 0,120,121,121, 93,209,233,116, 70,169, 84, 58, +142, 82,250,162,142,124, 34, 0, 29,196, 98,113, 27,177, 88,220,205,104, 52, 54, 45,203,207,248, 84,169, 84, 94, 47, 45, 45,189, + 15,224, 54,165, 84,245, 63, 36,134,173, 37, 18, 73, 4, 33, 4,132, 16, 63, 74,105,241, 63,238, 75,140,131,166, 9,241,137,254, + 21, 98,170,121,147, 26, 26, 4,222, 85, 28,107,182,208,122,175,187,219,224, 33, 67,250,112, 0, 64,167, 63, 55, 24,117, 76,126, +109,142,200, 10, 14, 14,254, 53, 34, 34,194, 94,171,213, 98,198,140, 25,135,108,109,109,119,200,229,242,101, 53,157,103, 35,182, + 95,176,113,243, 69,171, 55,249,175, 33, 49,153,140,146,215,175, 95,248, 37, 60,249,181,127,124,252,173,117,234,196,203,183, 77, +132, 55,179, 20, 93, 19,205, 41, 71,179,134,100,208,208,145,195, 7,174, 94,189, 10, 99, 71,143,173, 23, 31,175,177,244,176, 73, + 17, 20,170, 69,141, 28,157, 37, 67, 86,175, 57, 70,110,222, 56, 57, 36, 98, 95,248,229,169, 83,157,222, 99,197,150, 89,247,150, +172, 97,152, 14,246, 77,154,116, 27,125,242, 36,196, 94, 94, 12, 35, 20,114, 0,192,160,213,122, 41, 51, 50,220, 34,135, 12,105, + 31, 78,200,213, 48, 74,239,176,156,255,247,156, 44,234, 40,180, 56, 28,142,231,235,215,175, 37, 34,145,168,220, 44, 6,163,209, + 8,163,209, 88,145,188,152, 82, 90,241,211, 96, 48,160, 73,147, 38,102,125,209, 2,120, 15,192, 7, 61,122,244, 8,249,242,203, + 47,121,129,129,129,229, 41, 67,186, 46, 95,190,252,107, 66,200,113, 0,251, 1,252,108,238, 23, 47, 33,164,159, 72, 36, 58,184, +113,227, 70,155, 62,125,250, 48,238,238,238, 32,132, 32, 39, 39,167, 67, 76, 76, 76,155, 5, 11, 22,204, 34,132,140,167,148, 94, +168,195,192, 14,176,182,182, 62, 54,124,248,112,207,238,221,187, 91, 52,107,214, 12, 70,163, 17, 15, 31, 62,156,114,255,254,253, + 49,199,143, 31, 15, 35,132,132,152,155,175,141, 16, 66,196, 98,241, 36, 15, 15,143,181,161,161,161, 14,227,199,143, 23, 60,121, +242,164,200,215,215,151,220,188,121,211,249,200,145, 35,179,214,175, 95, 63,210,218,218,122,133, 82,169,252,129,154,225, 64,103, + 99, 99,115,159,195,225,120,154, 35,132, 1,152, 45,134, 9, 33,173,234,215,175,127,228,198,141, 27,245,211,210,210,140,195,134, + 13, 59, 0, 0,151, 47, 95, 14,212,235,245,164,111,223,190,231, 8, 33,163, 40,165, 15,205,172,123, 11, 7, 7,135,159,198,142, + 29,235,208,176, 97, 67,171,250,245,235, 19,145, 72, 4, 46,151, 11,185, 92,238,254,228,201,147,222,119,238,220, 81,199,196,196, + 20, 18, 66,134, 80, 74,227,234,112,159, 58, 73, 36,146, 9, 60, 30, 47,192, 96, 48,120, 0, 0,195, 48,175,245,122,253, 19,169, + 84, 26, 65, 41,253,245, 93, 7,136,139,139,203,246,181,107,215, 58, 73,165, 82,186,126,253,250,237, 0, 38,253, 83, 31, 6,135, +126, 60,138,251,247,238, 0, 0,159, 16, 66,222,238,127,132, 16,210,212, 15,252,143, 62, 90,136, 54,109,219, 99,220,216,145,181, +114, 14,236,237,181,145, 39,224, 59,106, 52,154, 95,229, 37,218,163, 46,142,118,163,198,142, 25,148, 4, 0,231,206, 95, 29,213, +190,189,195, 21, 91, 43,225, 72, 11, 11,139, 78,122, 93,105,193,153,152,140,197,117, 17, 85, 30, 30, 30, 23,236,237,237,173, 10, + 11, 11,115,242,242,242,190, 13, 14, 14, 94,179,127,255,126,251,151, 47, 95, 34, 35, 35, 3,243,231,207, 23,103,102,102,206, 17, + 10,133,183,180, 90,109,181,150,173,226,226,194,173,203,151, 14, 13,181,181,117,226,138,172,108, 96,109,235, 0,223,134, 45,209, +161,211, 96, 12, 24, 56, 21,201, 73,177, 29,246,239, 91, 29,251,250,117,204,231, 98,135, 6,107,100,178,250,213, 62,151,154,251, +147,238,229, 34, 43, 52,116, 21,158, 39, 38, 22,167,165,114,254,115,230, 36, 99, 53,160, 87, 19,161, 65,151,147,118,243,198,201, +250, 93,186, 14, 3,128, 54, 17,251,194, 47,207, 27,239,208,107,219,193,194, 98,246,149, 84,253,179,115, 53,143, 55,169,223,230, +205,146,160, 89,179,248,202,212,212,210,148,157, 59, 75,114,175, 95, 55, 50, 66, 33,245,234,223,159, 56,247,236,105, 49,235,233, + 83,254, 47,235,215,119, 91, 39, 16,248, 46,215,233, 14,178,156,255,119,156,108, 31,173,112,134,175,240,213, 42,159, 62,100,106, + 56, 9, 34,145, 8,145,145,145,224,241,120, 96, 24, 6, 60, 30,175,218,223,189,189,189,205, 41, 72,176,171,171,235,215, 59,118, +236,112,233,215,175, 31, 44, 44, 44, 42,246,113,185, 92,244,233,211, 7,189,123,247,230,101,101,101,141,137,140,140, 28,179,110, +221,186, 92, 66,200, 92, 74,105, 84, 45,188, 61,253,253,253,163, 46, 94,188,104,169,209,104,112,253,250,117, 20, 21, 21, 65, 32, + 16,192,211,211, 19,125,251,246,101, 18, 19, 19, 29,250,244,233, 19, 69, 8, 25, 68, 41,189, 98, 70, 89,219, 72, 36,146,107, 71, +143, 30,181,104,217,178, 37, 73, 78, 78, 70, 80, 80, 16, 0, 64, 46,151, 99,216,176, 97, 22,227,199,143,111, 56,102,204,152,219, +132,144,238,148,210,251,181,240,181,118,117,117,253, 97,248,240,225,238,235,214,173,179,177,182,182, 70, 90, 90, 90,182,171,171, +171, 95,121,123,143, 25, 51, 70, 48,120,240, 96,183, 13, 27, 54,108, 61,118,236,216, 98, 66,200, 36, 74,233,131,154,120,203, 5, +177,149,149, 21,114,115,115,113,232,208, 33,204,153, 51, 7, 92, 46, 23, 82,169, 20, 71,142, 28,193,127,254,243,159,114, 65, 99, +150, 24, 22,137, 68,189, 91,182,108,185,231,242,229,203,158,118,118,118,112,119,119,231,124,250,233,167, 1,190,190,190,150,245, +234,213,227,102,103,103, 35, 42, 42,202,119,194,132, 9, 63, 89, 88, 88, 76,209,104, 52,181, 78,169,185,184,184,236, 61,115,230, +140,119,124,124, 60,118,238,220,137,194,194, 66, 8, 4, 2,216,217,217,193,213,213, 21,126,126,126,100,233,210,165, 86,131, 7, + 15,182,154, 59,119,238, 94, 0,173,204,184, 71, 45, 37, 18,201,174, 49, 99,198,248,134,135,135,219,185,186,186,162,252,195, 64, + 46,151,123,166,165,165,117, 8, 13, 13, 13,113,113,113,121, 41,149, 74,103, 82, 74, 31,213,113,224,180,234,213,171,215,160, 97, +195,134,113,179,179,179, 17, 17, 17, 49,136, 16,210,202, 92,113,249,119,195,253,123,119, 48, 99,246,124,165,187,151, 23,255,226, +133, 61,193, 50, 89,179,123,118,150,111, 18, 82,203,212, 40,125,175, 59,183,109,223,126, 83,249,239, 15, 28,166,252,238,155,173, + 98,115,132, 22, 79,192,119, 60,116,240,171,244, 27, 55,239, 7, 92,138,185,211, 63,120,200, 16,202,231,219,249, 2,192,226, 5, + 31,241,162, 78,157,218,215,167,119,251,172,174, 93,218,164,143, 27,191,208,187, 14,247,166,113,227,198,141,175,198,198,198,186, + 8,133, 66, 20, 22, 22, 58,126,247,221,119, 95,117,233,210,133,147,146,146,130,196,196, 68,164,166,166, 66, 46,151,163, 79,159, + 62,226, 7, 15, 30,124, 11,160, 90,161, 85,202,121,111,173,123, 61,253, 54, 71, 75, 81,253, 82,163, 66, 66,245,217,205, 46,157, +185,212,226,112,132, 58,200,197,173,137,223, 7,147,195,176,122,205,113,222,143,135,190, 8,253, 57,230, 48,192,169, 95,125, 70, + 0,138, 78,203, 87, 44,131,162, 88,139,241, 99,167, 99,194,216,233,142, 20, 58, 55,106,212,136,116,234, 34, 59,107,254,211,232, + 29,187,191, 26, 14,192,179,146,216,250,153, 21, 91,213, 99, 53,195,180, 31,244,245,215,206, 1,211,166, 9, 31,133,135,171,242, +175, 95, 87, 55,122,255,253,162,160, 15, 63,212, 2, 64,113,106, 42,255,121, 88,152,149,115,183,110,150, 29, 23, 45,178, 55,234, +116,174,159, 17,210,238, 83, 74,239,214,149,211,123,212, 40, 99,232,190,125,109,175, 47, 92,216,131,232,245,220,254, 29, 59, 62, + 92, 31, 17,241,250,143,112,254,153,229,204,186,118, 77, 91,232,235,139,160, 97,195, 10,188, 37, 18,237,159, 89,247, 63, 82, 78, + 22, 40, 55, 74,101, 3, 40,143, 12,255,230,121, 69, 41,197,153, 51,103,186, 3,184, 10, 32,124,224,192,129,171, 0,192,206,206, + 46, 87, 38,147, 73,162,162,162,106, 21, 89, 60, 30, 15,110,110,110,240,243,243,147,230,230,230,186,212,240,112,204, 48,153, 76, +158,148,210, 10,235, 75,117,208,106,181, 72, 74, 74, 66,139, 22, 45, 50, 41,165, 94, 53, 77,237, 88, 89, 89,165, 36, 38, 38, 58, + 37, 36, 36,224,254,253,251,240,245,245,133,189,189, 61,120, 60, 30,244,122, 61, 20, 10, 5,252,253,253, 33, 20, 10,209,186,117, +235,124,149, 74,229, 91,211, 20, 16, 33, 68, 40, 18,137,146,174, 93,187,230, 21, 20, 20,132,187,119,239,194,203,203, 11,174,174, +174, 0,128,212,212, 84,220,188,121, 19,239,191,255, 62, 98, 99, 99, 49, 98,196,136, 12,149, 74,229, 71, 41,213, 86,199,233,232, +232,152,125,249,242,229,204,192,192, 64,141, 74,165,226,228,230,230,242,174, 95,191,110, 40, 46, 46, 22,203,229,114,158, 76, 38, +227, 41, 20, 10, 70,165, 82,241, 56, 28, 14, 95,173, 86,243,126,254,249,103,174, 78,167,179,169,169,157,202,239,211,169, 83,167, + 16, 24, 24,136,168,168, 40,124,252,241,199,248,229,151, 95,224,229,229,133,163, 71,143, 98,209,162, 69,120,246,236, 25,156,156, +156,208,172, 89,179, 26,239, 17, 0, 52,106,212, 40,249,241,227,199, 13,249,124,126,121, 94,199,242,124,121,200,203,203,195,139, + 23, 47,240,250,245,107, 52,106,212, 8, 99,199,142,125,145,153,153,217,168,182,206,231,233,233,153, 23, 31, 31,239,212,162, 69, + 11,228,230,230,194,206,206, 14,182,182,182,176,179,179,171,248,221,215,215, 23, 11, 23, 46,132,171,171,171, 84,173, 86,187,212, + 38,130, 2, 3, 3, 47,252,252,243,207, 78, 54, 54, 54,200,201,201,129, 66,161, 0,195, 48,176,178,178,130,147,147, 83,133,144, + 79, 74, 74,194,192,129, 3,243, 83, 82, 82,250,213,193, 2,199,113,113,113, 73,140,139,139,243,163,148, 34, 61, 61, 29,207,158, + 61,195,236,217,179,147, 52, 26, 77,147,127, 82,206,190, 74,126, 87,252, 73,147,103,240,135, 15,237,164,123, 26, 31, 77,132,166, +103,104, 21, 96, 35, 7,128,135, 79, 20,182, 90,142, 63,154, 54, 31, 68, 79,252,244,171,224,135,253,223,241, 96,130, 11, 8,158, + 37, 60,167,159, 85,199,221,239, 61,247,105, 31,125, 52, 37,160, 71,151,238,156, 98,149, 74,242,237,183,155, 91,167,164, 60,149, + 0,128,175,111, 83,233,172, 89, 11, 30, 88,139, 68,210,171, 55,175,153,182,108,217,251,228,194,229,172,221,102,220, 27, 95, 63, + 63,191, 91,167, 78,157,114,146, 72, 36,176,181,181,133, 74,165, 66,105,105, 41, 18, 18, 18, 52,145,145,145,122, 27, 27, 27,235, +156,156, 28,200,100, 50, 16, 66,112,234,212,169,116, 74,169,207,219, 92,229, 62, 90, 0, 48,123, 64, 83, 94,179,247,252,236,249, + 66,131,165, 37,239,185, 27,136, 81, 72,168,216,229,220,133,135, 45,206, 93,186, 59,110,120,240,199,206, 93,187, 15, 71,232,202, + 16,125, 86, 86,122, 80, 41,186, 38, 86,229,163,213,212,143,188, 55,108,196,240,145,171, 87,175,194,170,208,112, 68,159, 58, 41, + 23,139, 56, 90, 27, 59,158,109,183, 14,157, 53, 11,231, 12,205, 80, 42,179,188, 86,111,136, 28, 59,112,232, 66,207, 46, 93,135, +225,230,141,147,136,216, 23,126,159, 88, 82,118, 26,241, 45,132, 19, 98,111,231,235, 59,115, 94, 82, 18,255,209,170, 85, 74, 67, + 86, 86, 81,155, 5, 11,242,171, 58, 54,243,210, 37,145,192,221,221,198,126,200, 16,135,173, 62, 62, 84, 47,149,238,170,202,199, +168, 42,206, 24,177,216,238,240,185,115,189, 40,143,215,125,201, 39,159, 88, 14, 26, 52, 8, 10,133, 2,199,143, 31,199,174,157, + 59,181,110,110,110,143,221,159, 60,137, 13, 80, 40, 86,154,203,217,102,193,130,124,163,209, 72, 70, 46, 90,212, 39, 62, 53,245, +189, 28,169,180, 30, 0,184, 57, 56,100,180,241,245,189,191, 55, 58,250,217,246,250,245, 77,230,150,243,251,243,231, 93,142,165, +165, 77,115,112,112,176,204,149, 74, 25,161, 64, 80,208,161, 89,179,163,223,172, 88,113,213, 16, 23,199,183,240,244,180,177, 29, + 52,168,206,117,111,179, 96, 65,126, 97,113, 49, 51,111,205,154,206,175,114,115,235, 41,181,218, 70,178,226, 98, 87,163, 94,207, +177,177,178, 42,104,224,239, 47, 85, 95,191,158,221,160,164,100,254,247,148, 74,255,170,123, 93,149, 22,249, 27, 89,180,222, 94, +117,248,187, 92,135, 87, 7, 14, 28, 72,170, 80,102,102, 89,179,120, 60,222,111,166,169,106, 0,159, 16,130, 7, 15, 30,192,209, +209, 17,174,174,174, 16, 10,127,155,124, 48, 47, 47, 15,191,252,242, 11,158, 62,125,138,150, 45, 91, 2,120,243, 69, 93, 29,132, + 66,225, 71, 27, 54,108,176,211,233,116,184,127,255, 62,218,180,105, 3,161, 80, 8, 62,159,255, 27, 17, 40,149, 74,209,188,121, +115, 44, 89,178,196,118,221,186,117, 31,161,134, 28,117, 12,195,204,157, 62,125,186,164,220,130,149,145,145,129,214,173, 91, 87, +236,119,118,118,198,195,135, 15,209,166, 77, 27,120,122,122, 34, 36, 36, 68, 18, 17, 17, 49, 23,192,151,213,113, 10, 4, 2, 78, + 96, 96, 96,219, 50,139, 17, 56, 28,206,115, 27, 27, 27,103, 23, 23, 23,145,141,141,205,239,234,184,111,223, 62, 25,135,195,209, +215,214,160, 28, 14, 7, 57, 57, 57, 8, 8, 8,128, 92,254, 38,131,139, 74,165, 66,163, 70,141,160, 80, 40, 42, 68,171,187,187, + 59,212,234,154, 93,191, 90,182,108,185,170, 73,147, 38,125,123,244,232, 33,228,241,120,120,244,232, 17,130,130,130, 16, 25, 25, + 9,111,111,111, 88, 89, 89, 33, 41, 41, 9,129,129,129,184,118,237, 26,156,157,157,209,188,121,115, 97,235,214,173,111, 20, 22, + 22, 94, 73, 75, 75, 91, 85, 67, 57, 57, 98,177, 24,215,174, 93,195,222,189,123,145,154,154,138,172,172, 44, 88, 91, 91,163, 85, +171, 86,104,214,172, 25, 58,117,234,132,164,164, 36,144, 90, 58, 19, 33,196,213,207,207, 47,250,238,221,187, 78,148, 82, 68, 68, + 68, 64,169, 84, 66,167,211,129,195,225,192,194,194, 2,246,246,246,120,239,189,247,224,236,236, 12, 63, 63, 63, 28, 57,114,196, +105,192,128, 1,103,203, 44, 82, 57,181,181,171,189,189,253,252,176,176, 48, 47,137, 68,130,180,180, 52,200,229,114,184,184,184, +160, 71,143, 30, 30, 49, 49, 49,243, 1,108,254,167,188,200,202, 29,223, 9, 33,228,226,133, 61,193,126, 13,138, 2, 91,250, 91, +121, 69, 69,187,120, 69, 70, 75,155, 3, 64, 64, 83,151,248,224, 65, 86, 25,143,226,163, 51, 46, 94, 56,121,255,233,115, 68,153, + 51,181, 45, 47,209, 30,189, 20,115,167,127, 80,203,214,166, 13, 95, 44, 26, 56,103,246, 52,161,196,101, 42,114,211, 79, 34,230, +242, 3,239, 69, 31, 79,119,254,114,211,247,231, 46,197,220,225,200, 75,180, 43,205, 41,111,227,198,222,219,247,127,211,201,169, + 56,255, 24,146, 19, 5,176,180, 14,128,175,111, 99, 40, 20, 10, 88, 88, 88, 88,140, 29, 59,214,184,108,217,178, 18, 27, 27, 27, + 43, 66, 8,174, 92,185, 34, 5,208,175, 54, 94,141,196,158, 26, 75,245, 6, 42,224,154, 40,177, 86, 19, 99,161,224, 73,194, 75, +244,237,221, 51,183, 75,251,128,117,203, 86,111, 90,238,215, 56,200,121,202,180,112,222,154, 85,227,118,130,160,107, 85, 60, 79, +147,232,229,102, 13,137, 37,128,129,171, 63, 91,133,148,148, 36,251, 25, 31,200,194, 25,161,165,123, 19,159,206,214, 59,247, 94, +233,223,168, 81,253,122, 11,231,134,156,249,234,235,175, 6, 86,182,108,237,223, 23,246, 19, 33,164, 23,253, 43,227,238,252,253, +208, 98, 66,116, 52,148,233,233,250,194, 27, 55, 52,189,190,254, 58,223,171, 95,191,205,186,210, 82,167,242, 71, 5,135, 16,144, +114,215, 9,147,137, 48, 75,150,112, 40,195, 64,111,111,255,193, 82,160,113,109,156, 31,103,103, 7,143,155, 54,109,224, 79,231, +207,163,126,253,250, 21,239, 51, 59, 59, 59, 44, 90,180, 8, 11, 22, 44, 16, 62,124,248,176,221,177, 99,199,218,125,185,113,163, +203, 82, 32,216,156,114, 94,188,125,219,254,195,213,171, 87,180,108,211,198,251,192,161, 67,194,134, 13, 27, 2, 0, 94,188,120, +225,247,197,250,245, 62, 1,129,129,185,235, 62,250,104,127,252,178,101,205, 1,220,168,137, 51,231,250,117,221,177,180,180,105, +151,175, 92,177, 11, 8, 8, 0, 0, 60,123,246, 76,178,117,235,214,233,205, 67, 66,198,175,158, 53,107,229, 32,141, 70,102,147, +151, 39, 28,180,125, 59,115,120,228,200, 90, 57,203,203, 9, 0, 61,166, 76,249,168,107,207,158,205,130,167, 77,115,240,246,246, + 38, 98,177, 24,165,165,165,200,202,202,178,143,143,143,111, 24, 93, 92,172, 56,113,251,118,196,247,101,201,226,255, 34, 84,169, + 69,254, 78,150,172, 42, 53, 69,217,207, 30,103,206,156,161, 0,122, 12, 28, 56,240, 90,249, 11,220,104, 52,154, 37,178, 24,134, + 65,153,179,176,185, 5, 66,126,126, 62,242,243,243, 43,166,142,164, 82, 41, 46, 95,190,140,164,164, 36,240,120, 60,240,249,124, +148,150,214,158,131, 86, 36, 18,245,238,221,187, 55,115,251,246,109,248,250,250,194,210,210,178,162, 92,229, 27,159,207,135,155, +155, 27, 20, 10, 5,122,245,234,197,219,182,109, 91,239,154,132,150,173,173,237,251,163, 70,141, 18,148,255,173, 84, 42,193,229, +114, 43, 68,139, 82,169, 68, 97, 97, 33,100, 50, 25, 52, 26, 13, 58,118,236, 40,136,142,142,126,191, 38,161, 85, 25, 37, 37, 37, + 74,169, 84,106,215,181,107, 87,251,253,251,247, 63,235,216,177,163,255,111,122,218,213,171, 26,141, 70,195,227,112, 56,102,229, +209, 59,120,240, 96, 69,219,191,126,253, 26, 59,119,238,172,216,151,148,148,132,109,219,182, 85,164, 2,168,233, 30, 53,105,210, +100, 64, 68, 68, 68,155, 3, 7, 14, 20,113,185, 92, 60,123,246, 12,135, 14, 29, 2,165, 20,206,206,206, 40, 41, 41, 65,110,110, + 46,174, 92,185, 2,131,193, 0,177, 88, 12, 15, 15, 15,139,185,115,231,118, 9, 15, 15,231, 1,168, 86,104, 25,141, 70, 35,151, +203,133,143,143, 15, 66, 67, 67,161,209,104,192,231,191,209,151, 10,133, 2, 50,153, 12,177,177,177, 72, 75, 75, 67,109, 47, 25, + 11, 11,139,144, 3, 7, 14, 72, 4, 2, 1,212,106, 53,138,139,139,145,145,145,129, 87,175, 94,105,164, 82,169,193,218,218,154, +227,227,227,195, 17, 10,133,194, 97,195,134,145,114,193, 57,104,208, 32,199,136,136,136,209,181,137, 36, 66,136,115,211,166, 77, +151, 79,159, 62,221,162,114,159,205,201,201, 65,112,112,176,213,175,191,254,186,140, 16,114,136, 82,154,247, 15, 51,121, 83,153, +172,217,189,251, 49,207, 2,163,162, 93,188, 94,101, 26, 59, 47, 90,188,137, 1,128,239,118,125,222, 57, 42,250,245, 47, 77,234, +231,102, 28, 59,209,248,158,157, 93, 2,173,205, 34,248, 94,119,183,193, 46,142,118,163,130,135, 12,161,223,126,187,185,245,156, +217,211,132, 62,141, 23, 1, 0, 60,120, 18,244, 50,124, 70, 74,212, 47, 44,190,253,118,115,235,224, 33, 35, 98, 83, 83,211,118, +245,234,225,126,228,242,181,236,211, 53, 89, 12, 37,142, 22, 30, 86, 66, 21, 60,124,155,193,191,169, 8, 15, 31, 61,195,241,163, +183,208,180,121, 7,104,181, 90, 24, 12, 6,209,224,193,131, 75, 34, 35, 35, 53,207,159, 63, 47, 86,171,213,221, 41,165,207,107, +171,127,102,102,130,201,223,181, 67, 41,223, 82,104, 40,150,243, 75,150,174, 60, 54,178,117,251,190,109,236,221, 60,120,206, 34, +211,233, 1,125,218, 29,218,187, 59,116,193,202,176, 67,104,219,174,111,199,167,207,110, 52, 3,240,184, 74,241,250,130, 70, 7, +248, 17, 67, 74,114,242,192, 87,105,105,153,141, 93, 92,117, 47,100, 84, 63,127,233,247,125,186,118, 15,105,209,176,105, 55,193, +211,132,107, 36,116,201,232, 31, 87,111,248,106,108,185,216,250,249,210,143,221, 63,248,224,150, 0,128,150,213, 87,101, 95,231, + 66,161,167,216,199,135, 73,221,191, 95,237, 59,120,112, 17, 0,232, 74, 75,157, 82,211,210,108,173,172,172, 64, 41,133, 94,175, +255,141, 15,113,185,223,112,128,191,191,139, 57,156,169,159,126,218, 98,201,146, 37,200,201,201,129,193, 96, 0,143,199,123,251, +153, 13,149, 74,133, 15, 62,248, 0,219, 55,110,236, 96, 14,167,209,104, 36, 31,174, 94,189,226,147, 21, 43, 26,206,156, 57,147, + 83,249,217,235,224,224,128, 99,199,143, 11,118,236,216,225,185,124,251,246, 15,198, 9,133, 41,181,113,230, 55,106, 4,135,220, + 92,203,114,145, 5, 0,254,254,254,216,185,115,167,112,234,212,169,130,193,131, 7,111,122,216,178,229,214,205, 93,186, 36, 59, + 54,110,108, 35, 16, 10, 61,205,109, 79, 0, 40,214,104, 2, 54,111,221,106,127,231,206, 29,228,230,230, 34, 39, 39,167,124, 44, +163,109,219,182,100,194,132, 9,182, 13,188,188,218,253,197,183,251,119, 90,228,111,100,209,154, 81,197, 51,245,191, 62, 90,101, + 21, 34,101, 21, 36,149, 94,142,191, 17, 44,181, 9,173,119,129, 76, 38,131, 76, 38,195,238,221,187,193,231,243, 43, 94,190, 0, +160,211,233,204, 17, 45,129,238,238,238,144,203,229,104,220,184,241,111, 44, 89,124, 62, 31, 12,195,128,207,231, 67, 40, 20, 66, +171,213,194,219,219, 27, 37, 37, 37,129, 53,113,170,213,234, 86, 14, 14, 14, 21, 47, 88,173, 86, 91, 33,178,202,203,171,211,233, + 80, 84, 84, 4,165, 82,137,226,226, 98,168, 84,170, 32,115,234,107, 50,153,240,228,201,147, 23,254,254,254,173,184, 92, 46,196, + 98,177, 72,165, 82, 85,248, 22, 21, 22, 22,226,135, 31,126, 80, 77,156, 56,209,233,212,169, 83, 37,102,220, 92,252,231, 63,255, +129, 80, 40, 68, 73, 73, 9,190,253,246, 91,204,155, 55, 15,124, 62, 31,197,197,197,216,185,115, 39, 22, 46, 92, 8,134, 97,160, +211,233,176,117,235,214,234, 45, 27, 9, 9,169,183,111,223, 14,106,221,186,181,253,137, 19, 39,242,250,244,233,227,220,175, 95, + 63, 88, 90, 90, 66,173, 86, 67,175,215,163, 67,135, 14,104,210,164, 9,164, 82, 41,206,157, 59,151,239,231,231,231,116,231,206, + 29, 83, 78, 78,206,171,218, 94,226,149, 44,134, 48, 26,141,200,205,205,133, 76, 38, 67, 94, 94, 30,178,178,178,144,153,153, 9, +134, 97, 80,219,199,188,163,163,227,136,128,128, 0, 46, 0, 88, 90, 90,162, 85,171, 86, 88,177, 98,133, 65,173, 86,143, 2,112, +174,236,176, 1,223,127,255,253,137,155, 55,111, 50,238,238,238, 72, 76, 76,132,179,179, 51, 99, 97, 97, 81,171,208,114,117,117, +221,119,250,244,105,135,114,113, 93,222,206, 37, 37,111,110, 71,112,112,176,195,129, 3, 7,246, 1,120,255,159,246, 82,179,179, + 4,191, 85,128,141, 60, 50, 90,218,124,209,226, 77, 76,147,128, 55, 31,175, 51,102,130,249,114,227,199,205,199, 15,181, 57, 99, +103,169,224,215,198, 51,160,183,215,142, 33, 67,250,112,198,142, 25,148,196,231,219,249,238,250, 46, 92, 34,113,153, 90,201,196, +105, 3, 71, 39, 27,248,250, 8,200,177, 51, 79, 37, 75,151,125,166,253,127,236, 93,119, 88, 20,215,250,126,207,246, 70,239, 93, + 17, 5,165,168, 24,148,196,222, 11,104, 52, 38,150, 68, 99, 76,177, 36, 38,154,104,140,198, 68, 19, 83,136, 38, 38,106,162,215, +150,162,177,119, 99,175,104,140, 37,118, 1, 1, 69, 1,129,133,101,105,187,176,125,103,231,252,254, 16,184,200,165, 44,168,247, + 38,249,205,251, 60,251, 48, 59,156,121,231,156,153,179, 51,239,249,206,119,190,107, 23,146, 4, 0, 0, 32, 0, 73, 68, 65, 84, +111,227,134,111,239,110,222,178,127,176, 88,120,108, 32,128,169,245,113,167,103,148,237,211,155,164,225,218,226, 27,196,205,187, + 27,162, 59,182,133,151,103, 41,214,254,188, 21,193,173, 58,195,100, 50,193,201,201, 73,110,179,217, 44,124, 62,127,163, 61, 34, + 11, 0, 78,156, 40, 99, 35, 35,203,204,252,114,150,121,235,157,111,158, 27, 48,228,217,136,190,125,251,179, 71,143, 29,181,116, +235,100,201, 31, 50, 40, 90,117,248,216,138,219,249,202,123,161,145,237,187, 35, 37,249,212, 96,128, 36, 1,117,119,216,164,219, +244,112,235,214,228,212,214,173,147, 88, 3,123, 85,246,249, 23, 55,135,196,199, 79,136,234,217,163, 39,123,236,248, 73,179, 24, + 69,183,156,186,119,205,123,235,245, 33,187,127,220,184,108,224,225, 67, 63,183,209,104,179,247,255,252, 51,229, 68, 86,205, 65, + 26,195,120, 11, 36, 18,158,250,212, 41,166,253,107,175,153,170,126,143,114,185, 28,123,247,238,133, 88, 44,174,254,136, 68,162, +234,109,111,111,239,170,197, 87,118,113, 2, 64,126,126, 62, 10, 10, 10,224,236,236, 12, 79, 79, 79, 20, 20, 20,224,220,185,115, + 72, 79, 79,135, 80, 40,196,224,193,131,193,171,199,183,185, 54,231,168, 89,179, 6,132,183,111, 31, 84, 91,100, 1,128,197, 98, + 65, 73, 73, 9,134, 15, 31,206, 59,116,232,144,207,225,251,247,159,253, 24,216,216, 16,103,167,248,248, 98,213,142, 29,117,158, +251,169,167,158, 34,127,252,241,135,100,240,160, 65,239,206,252,226,139, 21,223,111,216,144, 99, 99, 24,159,166,180,157,199,227, +241, 8, 33, 8, 12, 12, 68, 73, 73, 9, 42, 42, 30,204, 96, 59, 56, 56,192,213,213, 21, 86,171, 21, 44,165,194, 39,121,175,235, +211, 34,127,147,129,234,154, 42,193, 85, 59, 50,188,160,114, 94,180,234, 65,209,187,230,139,133,101, 89,187, 68,150, 80, 40,108, +212,231,202, 30, 43, 87,109,216, 35,180,170,234, 42,149, 74,171,127,104, 53, 5, 86, 85, 61,121, 60, 30,248,124, 62,236,177,200, +179, 44,203, 47, 47, 47,199,206,157, 59,209,171, 87,175,234,105, 41,141, 70,131,178,178, 50,104, 52, 26, 24,141, 70,100,102,102, +226,196,137, 19,104,211,166, 13, 96,103,240,215,187,119,239, 94, 14, 14, 14,142,169,122,137,247,233,211, 39,224,151, 95,126, 81, +198,197,197,249, 81, 74,241,209, 71, 31, 21, 61,253,244,211, 30, 53, 95,242,141,129,207,231,227,220,185,115,104,211,166, 13, 40, +165, 16,137, 68, 72, 75, 75,131,151,151, 23, 88,150,133, 64, 32,128, 90,173,134,163, 99,195, 49, 18,147,146,146, 38,190,250,234, +171, 74,103,103,231, 14,197,197,197,249, 18,137,164,199,153, 51,103, 2, 45, 22, 11,156,156,156,224,228,228,132,131, 7, 15,194, +197,197, 5, 51,102,204,184,111, 48, 24,206, 41, 20, 10,111,131,193,112,163,160,160,224,163,166,220,111,134, 97,160,211,233, 80, + 90, 90,138,146,146, 18,104,181, 90, 24,141,198, 70,235, 88, 23,122,244,232,129,253,251,247,243, 19, 18, 18,126,188,123,247,193, +192, 48, 36, 36, 4, 51,102,204,224,251,251,251, 35, 51, 51, 19,151, 47, 95,134,197, 98, 1,165,180,193, 31,175, 80, 40,236, 51, +115,230,204,238, 65, 65, 65,196, 98,177,128,101, 89,152, 76, 38, 84,109,223,191,127, 31,225,225,225,188, 22, 45, 90, 60, 67, 8, +233, 99,207,194, 10, 14, 15,160,186,191, 7,254, 66, 47,128,231, 4,106,216,131,226,162,230,165,141, 44, 44, 44,252, 98,246,199, +127,188,246,253, 98,139,119,110, 62,208, 54,106, 4, 66, 35,250, 97,226,120, 6, 9, 95,239, 68, 80,139,182,200,206,206, 70,159, + 62,125, 68, 74,165,242, 85, 0,179,236,229, 62,118,236,130,237,232,193, 67, 47,140, 26, 51, 33,166,127,255, 56,230,200,145,131, + 72,186,113, 36,249,213, 49,207, 23, 82,182,130,184,185,200,174,166,165, 94, 10,237, 16,221, 27,102,198,214, 3,248,100, 49,128, +122, 31, 42, 25, 25,212,252,233,167,159,242, 14,236,249,121,252,139,227, 94,233,216,175,223, 64,235,145, 99,191,225,242,249, 99, +215,151, 44,126,227,116,194,178,109,125, 6, 12,126, 62,210,211,251,220,193,168, 48,211,235,129,238,206, 25, 92, 79,169, 27, 2, +169,148, 69,229,115,145, 71, 8, 40,165, 15,137,172,218, 66,139,199,227, 53,106, 0,168,201, 89,243, 93, 84, 53,160, 94,189,122, + 53, 36, 18, 9,196, 98, 49,132, 66, 97,163,238, 23, 53, 57,147, 51, 51,251,174,223,184, 81, 82,151,200, 42, 46, 46, 70,113,113, + 49, 42, 42, 42, 48,118,236, 88,209,167,151, 46, 61,213, 24,103,144,175,175, 73, 33,147,169, 82, 82, 82,252, 34, 34, 34, 30,170, +175, 86,171,133, 76, 38,195,198, 77,155, 68, 67,227,227,223,236,119,240,224, 18, 0,101, 77,109, 59, 33, 4, 94, 94, 94,112,117, +117, 5, 33, 4, 12,195,160,160,160, 0,201,201,201,184,116,233, 18,248,132, 48, 79,242, 30,215,165, 69,254,110, 86,173,218, 34, +171,166, 69,139,212,103,125,177, 87,104,241,249,252,102, 91,181,234,131, 61, 83,135,114,185,252,166, 82,169,236,230,239,239, 15, +134, 97,170,133, 86,237,169,195, 42,235,199,181,107,215, 32,151,203,111, 54,198, 73, 41,125,166, 75,151, 46,216,181,107, 23, 78, +157, 58,133,123,247,238, 65,175,215,195,100, 50,193, 96, 48, 32, 57, 57, 25, 44,203, 34, 42, 42, 10, 10,133,162, 81, 78, 0,208, +233,116,249, 66,161,176,173, 76, 38,171,222,231,235,235,139,226,226, 98,214,106,181, 98,253,250,245, 90, 31, 31, 31,133, 76, 38, +179, 91,184, 18, 66, 80, 88, 88,136,128,128,128,106, 31,173,242,242,114,120,121,121, 85, 9, 11,152, 76, 38, 56, 58, 58, 54, 58, +117, 72, 41, 53, 2,152, 89,131,187,243,168, 81,163, 54,111,221,186,181,213,241,227,199,113,241,226, 69,120,122,122,226,203, 47, +191,188,151,149,149,245, 34,165,244,210, 19,232,168,141,150, 41, 46, 46,222,121,243,230,205,103,186,116,233, 82,253,148,232,211, +167, 15,233,211,167,143, 71, 77, 83,191, 90,173,198,159,127,254,137,227,199,143,131, 16,130,219,183,111,219, 12, 6,195,230, 6, +206, 45,106,209,162,197, 47,243,230,205,115, 96, 24,166,186,111,203,100, 50, 72,165, 82,136, 68, 34,240,249,124,100,101,101, 97, +248,240,225,206, 63,252,240,195,207,132,144,214,148, 82, 11,254, 33, 40, 51,192,114, 45, 73,235, 28, 21,238,157,188,102,117, 66, +183, 73,147, 81, 53,117,200, 68,133,123, 37, 95, 75, 82, 57,199,120,193,226, 34,110,152,231,208,241,156,183,204,214, 67,195, 14, + 29, 78, 28,253,254,187, 51,132, 33, 33,225,133,199, 79, 94, 9,234,199,124, 70,220, 61,156, 80, 92,164, 69,214,125, 21,238,102, +155,105, 72, 72,120,225,229, 63,111, 74,190,254,110,105,168, 78,111,220,118,242,116,254,111,141, 12,202,140,132,144, 17, 75,150, + 75, 78, 79,120,181,179, 88, 38,243, 67, 73,209, 77, 4, 5,121, 98,248,208, 14,248,105,195, 57, 56, 59,187,193,219,219, 27, 60, + 30, 79, 97,111,219,139,138,138,200,206, 45,191,191,246,242, 43,111, 60, 61,104, 96, 60,115,248,200, 1,193,169,163,251,206,253, +188,230,195,221,148,175,147, 19, 90, 46,107, 25,236,115, 35,227,206,181, 23,251,246, 31, 11,153,200,177, 13,208,174,206, 14, 91, +189,192,128,226, 62,143, 7,233,203,175, 76,234, 58,104,208,179,204,145, 35,123,112,228,224,134, 11, 11, 22,180, 60,120, 47,111, +147,232,252,165, 92,233,136, 23,166,150,238, 63,116,203,252,252,176,224,116, 63, 69,180, 1, 28, 30, 30, 72, 10, 4, 42,198,100, + 10, 12, 24, 52,136,175,207,206, 22, 58,120,123, 51, 0, 96,181, 90, 27, 21, 90, 0, 88,123, 56,237,173,139, 94,175, 7, 11, 48, +246,112, 22, 20, 22,182,172, 28,132, 87,195,106,181, 86,139,172,226,226, 98,148,149,149, 65,161, 80, 64,109, 50,121,219,195, 57, + 48, 54,118,253,167,159,124, 50,107,199,206,157,162,154, 34,171,234, 35, 20, 10,177,104,241, 98,209, 59,239,191, 63,245, 77,129, + 96,122, 83,174,103,213,160,157,207,231, 67, 32, 16, 32, 59, 59, 27,247,239,223, 71,118,118, 54,178,179,179, 33,147,201, 64,235, +185,158,143,209,162, 69,254,174,253,180,106,234,176,230, 20,162, 93,225, 29,154,226, 12,111,175, 48,176,217,108,143, 85,104,233, +116,186,227, 39, 78,156,136, 29, 49, 98,132,224,194,133, 11,240,241,241,169, 22, 90, 85,127,171,166,163,228,114, 57,118,239,222, +109,209,233,116,199, 27,249, 49,157, 56,120,240, 96,204,252,249,243,133, 19, 39, 78, 68, 74, 74, 10, 38, 79,158,140,178,178, 50, +104,181, 90, 20, 23, 23, 67,175,215, 35, 54, 54, 22, 82,169, 20, 55,110,220,176,234,245,250, 19,141,188, 28,104, 97, 97, 97,133, +167,167,167,111,237,255,189,240,194, 11,222, 43, 87,174,212,167,166,166, 90,187,117,235,230,100,175,224,168,194,150, 45, 91,170, + 45,117,233,233,233, 88,185,114,101,181, 79,214,149, 43, 87,240,205, 55,223, 84,199, 62,107,162,149,241, 82,100,100, 36, 99,181, + 90,209,166, 77, 27,248,251,251,195,104, 52, 98,233,210,165,204,147, 16, 89,246,194,104, 52,238,152, 48, 97,194, 7, 87,175, 94, +245, 21, 8, 4, 15, 76,218,149,237,179, 88, 44,184,115,231, 14,146,147,147,145,154,154,138,146,146,146,234,129,192,181,107,215, + 74,173, 86,235,182,250,120, 61, 61, 61, 63,250,233,167,159,124,228,114,249, 67,253,185,202, 26, 90,101, 37, 85,171,213,112,113, +113, 65,191,126,253,188, 78,156, 56,241, 17,128,249,255,132, 23, 26, 33,132,244,237,197,239,252,206, 91, 35, 48,114,168, 60,103, +215,254,188, 63,190,249,122,102,165, 51,188, 87,242,200,161,254, 57,215,211, 92,240,194,115,123, 58,159, 60, 77,114, 27,242,165, +171,244,177,218, 27, 27,235,118,106,215,190,125, 63,207,157,253,238,149, 89, 51,223,240,212, 27, 50,164, 33, 45,196, 4, 0,238, +102,155,233,141, 20,214,248,205,146,119,175, 36, 44,254,129,167, 42, 46,155,124,241, 98,253,225, 13,106,138,151,200, 48, 72, 67, +218,245, 82,134,134,117, 15,190,112,110, 35, 28,228, 6,180,109,215, 25,131, 6, 62,131, 83,137,215, 80,160, 54, 34, 63, 63, 31, + 38,147,169,193,112, 9,169, 55,118,143,167,132, 6, 17, 74,238, 19, 30,149,142,159,240,122,143,248,248,103,233,254,253,251,152, + 61,187, 55,158,221,246,235,242, 29, 60,145, 80, 96, 48, 59,155, 9, 49,106,192, 75, 74,169,208, 61, 24,208, 8, 37,162,250,205, +175,149,129, 93, 35, 34,219,249,140,159, 48,217, 57,110,200,112,122,240,224, 30,118,219,214,245,167,182,173,107,191,145,229,105, + 69,249, 57,122,137, 70,107,213, 80, 34,118,169,208,178,122,213,221,214, 70,191,248, 23,254, 49,162,253,177, 13,184, 77,166,220, +138,156, 28, 95,183, 94,189, 36,119, 62,249, 68,238, 29, 27,107, 36,149, 62,196, 13, 9, 45, 62,159, 15,240,120,172, 61,156,246, +214,197, 96, 48,128, 5,172,205,225,100, 24,230, 33,145, 85, 37,180,170,236, 26,246,112,174, 89,176,224, 66,208,160, 65, 37,137, +137,137,222,189,123,247, 38,229,229,229, 40, 47, 47,127, 72,108,249,249,249,145,136,168, 40,249,150, 83,167, 66,230,219,121, 61, +237,105, 59,143,199,123,226, 66,235,239,140,186, 44, 89, 15, 89,180,234, 67,149, 69,203, 30,161,101,167, 69,203,106,181, 90,225, +229,229,133,162,162,162,122, 95,252, 60, 30, 15, 50,153,172,106,142,184,193,149,119, 38,147,105,233,172, 89,179,166, 13, 25, 50, +196,163,109,219,182, 80,171,213,240,246,246,134, 84, 42,173,246, 29,171,226,187,114,229, 10,126,250,233, 39,173,201,100, 90,218, + 8,231,119,139, 23, 47,126,107,228,200,145,110, 62, 62, 62,112,117,117,197,141, 27, 55,224,234,234, 10,173, 86,139,180,180, 52, + 56, 58, 58, 86,251,237,236,219,183,175,220,100, 50,125,215,136,120,163,103,206,156,177, 56, 58, 58,222, 80,171,213,252,146,146, + 18, 65,105,105,169, 64,171,213, 10, 53, 26,141,240,240,225,195, 30,206,206,206,250,147, 39, 79,170,131,130,130,248,247,238,221, +227, 91,173, 86,158, 29, 47, 71, 76,159, 62, 29, 34,145, 8, 38,147, 9, 75,151, 46,197,172, 89,179,170,125,178, 22, 47, 94,140, +121,243,230, 85, 11,231,181,107,215, 54,181,243,192, 98,177,192,106,181,194,106,181,218, 37,126, 31, 5,246, 8,118, 74,105, 1, + 33,100,104,151, 46, 93,142,110,223,190,221,189, 50, 38, 25, 84, 42, 21, 84, 42, 21,212,106, 53, 42, 42, 42,192, 48, 12,252,253, +253,161, 82,169,176,103,207, 30, 77,121,121,249,160,134, 86, 28,242,249,252, 9, 61,122,244, 16,212,174, 67,213, 40,175, 74,188, + 75, 36, 18, 40,149, 74,244,233,211, 71,156,152,152, 56,225,239, 46,180,170, 4, 76,120, 40, 68, 3, 7,189, 38, 10,143,236,106, +190,158,188, 63,167, 93,176, 42,103,220,112,167, 3, 0,112, 45, 73,229,124, 61,205, 5,225,145, 67,233,192, 65,174, 49,170,130, + 53,237, 35,194,136,165,161,116, 61, 0,224, 44,151,140, 26,208, 63, 86,233,168, 80,240,190, 89,178,246,208,191,254,245,221, 83, + 59, 14,252, 59,188,195, 55, 75, 30,132,119, 24,208, 63,150, 77,189,149, 58, 10,192, 58,123,197,203,208,161,195,174,254,244,203, + 79, 72, 77, 62,233,247,193,244, 14,226, 18,149, 21, 50,135, 64,196, 68,123, 99,205, 47, 55,113,253,250,245, 2,179,217,220,167, +193,190, 68,104, 80,114, 74, 82, 88,251,200, 8,159,241, 19, 38, 57, 13, 29, 58, 28,251,247,239,197,175,235,215,157,121,126,236, +200, 31,243, 74,181,124, 47,161, 92, 36,167,172,152, 47,114, 22,136, 36,178, 66,179,249,193, 26, 8,161, 80,234, 4,140, 98, 27, +152, 57,196,148, 73,227,156,251,246, 31,142, 3, 7,247,226,215,245,107, 78,127, 28,249,194,186,224, 78,225, 36,246,169,175,167, + 6,183, 10,110,161,171, 80,105,121, 68,108, 49, 26, 89,199,175,215,103,125,123,119,222,132,187, 87,147, 70, 45,225, 86, 29, 62, +132, 27,191,198,197,117,121, 39, 35, 67,228,217,189,187, 76,121,234,148,188, 50, 19, 73,131, 66, 75, 32, 16,128,214, 63,213,245, + 16, 39,217,176,129, 7,160,193, 69, 88, 34,145, 8,122,189, 30, 86,192, 98, 15,167,239,145, 35, 57, 25, 25, 25,161,110,110,110, + 15,137,172,146,146,146,234,109,163,209, 8,189, 94, 15,153, 76,150,108, 15,167,234,204, 25,227, 87,211,167,207,127,113,236,216, +229,199, 79,156,144,186,187,187, 67,163,209, 60, 36,180,204,102, 51,250,246,235, 39, 90,124,245,234,120, 0, 11,236,185,158,222, +125,250, 52,234, 15,204,231,243,193, 62,225,169,195,127,192, 96,117, 82, 93,194,139,215,216, 20,142,189,171, 14,235,122, 65, 18, + 66,250,215,218, 53, 47, 38, 38,198,152,158,158,142,160,160,160,106,177, 82,243,156, 78, 78, 78,112,113,113,193,149, 43, 87,240, +197, 23, 95, 24, 0,204,107,136,147, 82, 90,174,215,235,199, 12, 24, 48,192, 32, 16, 8,208,174, 93,187,234,248, 89, 44,203, 66, + 44, 22, 67,161, 80,224,234,213,171, 24, 54,108,152, 94,175,215,143,169, 29, 67,171, 14, 78,141, 94,175,127,105,224,192,129,250, +148,148, 20,244,232,209, 3,215,175, 95, 71, 69, 69, 5, 42, 42, 42,144,153,153,137,136,136, 8,232,245,122,172, 92,185,210,160, +215,235, 95,162,148,106, 26,226, 44, 47, 47, 31, 54,107,214, 44,254,230,205,155,131,253,253,253, 35, 59,119,238,220,182, 95,191, +126,173,159,123,238,185, 22,113,113,113,190,161,161,161,198, 65,131, 6,121, 14, 25, 50,196, 83,175,215, 11,255,248,227,143,124, +171,213, 58,164,145,235, 89, 45, 78,210,211,211,171,167, 10, 5, 2, 1,138,138,138,170, 35,247, 87, 61,148,234, 18,194,245,113, +214, 20,219, 85, 2,171, 74,112, 53,246, 14,168,135,179,209, 23,135, 88, 44,174,178,120,210,198, 56, 41,165,215,110,221,186, 53, +160, 87,175, 94,215, 94,123,237,181,242,130,130, 2, 56, 58, 58, 34, 36, 36, 4, 97, 97, 97,240,240,240,128,197, 98,193,238,221, +187,117,123,246,236,185,169,209,104,250,212,142,161, 85,155,147,199,227,101,214,245,144,173,178,102, 85, 9, 45,169, 84, 10,127, +127,255,170,107,155,217,148,235,217,204, 31,239,147,229,172, 20, 48,253,250, 14,106, 21, 23, 63,194,121,247,222,115,226,229, 43, +246,220,140,233,143,181,238, 45,181,251,220, 91,106,247,197,244,199,218,229, 43,246,220,220,189,247,156, 56, 46,126,132,115,191, +190,131, 90,165, 36,167,182,125, 40,239, 97, 29,245,148, 74,165, 93,123,116,143, 41, 77, 60,123,154, 77, 88,252, 3,175,111,159, +231,175,174,251,113,247,238,117, 63,238,222,221,183,207,243, 87, 19, 22,255,192, 75, 60,123,154,237,209, 61,166, 84, 42,149,118, +181,167,237, 83, 38,141,115,142,143, 27,142,253,251,119, 51, 59,182,172, 92,188,117,231,237, 94,175, 79, 59,163, 74, 79,191, 78, + 11,115,143, 64,200,203,198,173, 91,183, 52,102,179,185, 79, 93,142,240,117,113, 78,126, 99, 92, 77,145,245,187,187, 79,143,181, +183,110,193,118,236,216,111,214, 19, 39,174, 26,126,191, 86,168,185,156, 82, 84,162, 84,151,220,211,106,139,205, 44,107,131,205, +102,227,127,250,233, 3,135,221,250,238, 81,183,110,189,113,242,248, 38,172,255,101,181,134,101, 97,124, 97,251,118,219,168, 81, +159,208, 22, 45, 91,182,216,184,101, 19, 25,250,236, 8,103, 10,176,195, 70, 14,119,217,188,117, 51,105,213,166, 85,203,144,144, + 7, 33,109,254,150,125,233, 9,112, 46,160,180, 84,155,157,125,250,202, 15, 63,152,188,199,140,113, 19,123,123, 59,193,102, 35, + 85,207,247,250, 62, 2,129,224, 33, 11, 76, 67,156,254, 30, 30,121,251,246,237, 67, 88, 88, 24,252,253,253, 81,211, 71,182, 42, + 32,183,187,187, 59,118,238,220, 9, 10, 92,182,135,179, 83,112,240,149, 69, 95,125,101,102, 89, 22,165,165,165,255, 97,205, 42, + 45, 45, 5,203,178, 56,120,224,128, 89, 91, 81,177,222,222,182,247,225,243, 43, 94,236,217, 51, 33, 62, 62,222,146,145,145, 1, +150,101, 81,211,178, 85, 88, 88, 8, 7, 7, 7, 24, 77,166, 64, 66,136,220, 30,206,194,195,135, 21,104,228,185, 94,219,162,245, + 36,238,251,223, 93,100,213, 76, 40, 93, 83,116, 53,104,209, 98, 24, 6,129,129,129, 15,165,116,225,241,120, 15,125,154,178,226, +144, 82,186,129, 16,114,100,208,160, 65,243,159,126,250,233, 41,243,231,207,231,183,109,219, 22, 26,141, 6,174,174,174,240,242, +242, 66, 90, 90, 26,246,237,219,103, 43, 42, 42, 90, 5, 96,161, 61, 75,232, 41,165,167, 8, 33, 67, 59,116,232,176,117,206,156, + 57,206, 3, 7, 14, 20, 6, 6, 6,130, 82,138,171, 87,175, 98,215,174, 93,150,117,235,214,105, 43, 69,214, 41, 59,235,122,148, + 16,242,252,144, 33, 67, 54, 78,152, 48,193,209,102,179, 9, 51, 51, 51, 97, 50,153, 96,181, 90,113,255,254,125,203,254,253,251, + 43,244,122,253, 56, 74,233, 81, 59,248,174, 16, 66, 34,142, 29, 59, 54,225,143, 63,254,248,226,181,215, 94,115,239,215,175,159, +136, 97, 24,156, 61,123, 86,221,169, 83, 39,175,194,194, 66,203,206,157, 59,139,141, 70,227, 60,155,205,102, 87, 10, 30, 66, 8, +180, 90, 45, 60, 60, 60, 96, 50,153,192,178, 44,204,102, 51, 28, 28, 28,170,211, 38, 81, 74,209, 20,231,250, 90,125,128,111,177, + 88, 48,118,236, 88,176, 44,139,165, 75,151,130, 97,152, 38,147, 57, 59, 59, 95,190,118,237,218,208,232,232,232,106,241, 82,213, +135, 36, 18, 9, 60, 60, 60,224,238,238,142,253,251,247, 67, 40, 20, 94,182,243, 30, 93, 7,208,137, 16,210,245,230,205,155, 47, + 3,136,182, 88, 44,254, 54,155,141,240,120,188,124, 74,233, 13,173, 86,251,163,189, 41,120, 10, 11, 11,191,120,229,149, 87, 58, +109,218,180,201, 65, 32,248,247, 79, 67, 32, 16, 64, 34,145,160, 42, 56, 38,165, 20,102,179, 25, 31,125,244,145, 86,167,211,125, +241, 79,121, 80,196,116,142,197,154,149,203, 28, 78,156, 60,162,190,117, 27,187,106,134,112,112, 17, 3, 39, 79,147, 92, 85,193, +154,246,202,156, 28,135,152,206,177,118,113, 90,205,150,226,151,198,189, 23, 84,153,130,231,163,204,204,172,213, 27, 55,124,123, + 23, 0,190,254,110,105,168,170,184,108,114,234,173,212, 81,171, 87,111,233,106, 53, 91,138,237,225,252,183,120,217,168, 1,133, +145, 82,122,145, 16, 18, 60,108,204,225,121,109, 90, 57, 61, 91, 88,108,200,171,168,208,191, 77, 41,189,107,111,219,187,119,235, +133,147, 71, 55,227,215,245, 27,181,148,229, 27, 61, 60, 60, 40, 0,220,186,229, 65,111,221, 42,163,255,246, 43,118,209, 9,233, +245,133,239,189,221,239, 61,141,182,228,187,239, 86, 52, 28,184,182, 67,199,167,209,161,227,211,152,246,246,135,206, 17,145,237, +130, 0, 96,251,118,106,139, 10, 37,191,205,255,248,147,103, 23, 46,252, 4,218,114, 19,170,210,245,164, 37,165, 28,200,200,160, +102,238,181,245, 48,230, 51,204, 69,188,247, 94,168,190,164,196,179,251, 7, 31,120, 8,222,127,159,215,144, 51,124,205,223,175, + 61,156,151,110,220, 56, 48,249,245,215,243, 22,204,159, 63,104,213,234,213,178,246,237,219,163,160,160, 0,237,218,181,131,191, +191, 63,142, 29, 59,134,157,219,182,233,202,202,203,231, 1,248,151, 61,156, 27, 14, 30, 76,107, 27, 25, 89,180,122,245,106,191, +248,248,120,162,211,233,160,209,104,160,209,104, 96, 50,153, 80, 25, 16,154,166,223,190,125,203,106,181,174,178,183,237, 54,181, + 90,186, 48, 54, 54, 87,196,178,139,158, 31, 57,114,214,194,207, 62,147,180,106,213,138,152, 76,166,106,171,150,197, 98,129,131, +131,131,197,108, 54,187, 3,208,219,195, 41, 89,183,142, 81,171,213,240,244,244,172, 14,215, 84, 51, 46, 97,121,121, 57, 40,165, + 92, 48,221,230,136,176,250,222,229,110,110,110,151, 5, 2, 65, 64, 77,235, 86, 93,185,243,106,238,179, 90,173,185,106,181, 58, +166,166,226,165,148, 30,175, 71, 32,132, 0,248,178,111,223,190,207,207,156, 57,147, 36, 38, 38, 98,207,158, 61,244,238,221,187, + 59, 0,204,171,239, 33,217, 8,167,163, 68, 34,153,161, 80, 40,250, 87,133,112,144,203,229, 55,117, 58,221,113,147,201,180,180, +190,104,240,141,112, 58, 73, 36,146,233, 10,133, 98, 64,121,121,121, 52, 0, 56, 58, 58, 94,211,233,116,199, 76, 38,211,178,250, + 18, 85, 55,194, 41,115,118,118,254,194,195,195,227,165,247,223,127,223,253,204,153, 51,249, 39, 79,158, 20,149,149,149,109, 50, +155,205,245, 38,149,174,139,211,221,221,253, 50,159,207, 15,120, 18,247, 8, 0, 58,118,236,184,127,216,176, 97,241,227,198,141, +131,213,106,197,191,254,245, 47, 28, 59,118,236,192,237,219,183,135, 54, 52, 26,173,205, 73, 8,241, 8, 8, 8, 72,156, 50,101, + 74,139,177, 99,199,202, 93, 93, 93, 33, 16, 8,160,211,233,112,231,206, 29, 92,189,122,149,238,221,187,183,226,202,149, 43,185, +122,189,190, 55,165,180,200,222,235,249, 40,163,230,218,156, 66,161,176, 87, 96, 96,224,150, 5, 11, 22, 56, 14, 24, 48, 64,230, +238,238, 14, 62,159, 15,171,213,138,252,252,124, 36, 37, 37,225,200,145, 35,186, 29, 59,118,232,138,139,139,199, 82, 74, 79,255, + 47,234,249, 56, 57, 35,194,200,199,181, 18, 69,215, 27,237,189,161,178,246,212,179, 95,111,191,225,163,158, 31, 50, 24, 0,182, +239, 60,116,248, 68,162,114,111,115,235,217, 88, 93,237,225, 12, 15,229, 47, 72, 78, 73,122, 40,160,101,100, 68, 84,122,120,251, +145,159,219,195, 85, 21, 25,190,118,219,107, 68,219,175,105,211,125,104,154,181, 42,241,244,135,243,230,226,203, 47, 18,176,119, +251,238, 3, 41, 25,116,255,223,185, 47, 61, 73,206,170, 36,200,114, 95,223,158, 75, 89,118,238,245,164, 36,135,154, 3,182, 42, +203,115,205, 65,165,159,159, 95,161, 82,169,244,182,135,115,232,247,223, 91,244, 10,133,100,238,162, 69,189, 42,140,198, 94, 11, + 23, 46, 20, 92,186,116, 9, 43,127,248,129, 49,230,230,110, 84, 3,211,235,154, 13,105,136,179,197,244,233,210,217, 43, 87, 78, + 12,105,211,198,235,229,151, 95, 22, 10,133, 66,232,116, 58,228,228,228,224,232,145, 35,230,148, 91,183, 82,180, 90,237,179,148, + 82,165,189,156, 67,191,255,222,226, 18, 18, 2,185,167, 39, 61,113,234,148,243,228, 25, 51,166,180, 12, 14,118, 30, 52,120,176, +208,201,201, 9,165,165,165,200,204,204,196,238,221,187, 11, 43, 42, 42,252, 40,165, 54,123, 56, 55,254,241, 71,135,131,167, 79, +191,240,249,231,159,139,163,162,162,224,236,236,140,242,242,114, 36, 37, 37,225,244,233,211,166, 85,171, 86,105, 52, 26,205, 20, +134, 97,246, 61,169,251,254, 79,157, 58, 36, 79,210, 21,192,158, 27, 65, 8,137, 1,240,113,229,215,207,236,200, 25,248,143,121, +248, 16, 66,130,220,220,220,214, 24,141, 70,106, 48, 24, 38, 83, 74,239,255,213,234, 73, 8, 17,196,196,196,172, 44, 44, 44,236, + 74, 41,133,179,179,243,185,228,228,228, 55, 41,165, 76, 83, 57, 9, 33,124, 0, 93, 29, 28, 28, 98, 29, 29, 29,123,153, 76,166, +240,202,233,183, 91, 58,157,238,180,197, 98,185, 8,224, 28,165,212,246,191,108,123,101, 61, 7,248,249,249,189,206,178,108, 27, + 66,136,139,205,102,131,213,106, 45, 99, 89,246,142, 70,163, 89, 7,224,216,255,186,158,143,139, 51,178, 13,121,142,242, 16, 94, +159, 32,120, 72,216,212, 18, 16,132,197,173,228, 59,116,119, 19,250, 60,111, 72,255,192, 21,192,131,149,137,141,165, 50,122, 72, +104,217, 33, 94,154, 44, 50,219, 8, 94,161,132, 6, 61, 60,250, 36,247,219,117,120,238,215, 71, 17, 90,246, 34,178, 45,233, 5, +138,174, 44,197,197, 91,183,233,201,127,234,179,238,113,114, 38, 16,226,246,131,171,235, 57,158, 64,224, 3,128, 87,105,125, 97, + 89, 66,108,148, 16,166,230,244, 86,205,129,101, 99,156, 22,160,189, 80, 34, 9,180, 49,140,119, 1,224,112,208,102,123,202, 72, +105, 69, 0,240,241, 85, 74,211,154, 83, 79, 11,208,158, 47,145, 4, 29,164,116,184, 90,161,232, 80,104, 48,120, 2,160, 14, 10, +197, 45,173, 78,183,222,104, 52,174,168, 35,121,123,163,156, 34,137, 36,192,198, 48,222, 0,192, 19, 8, 10,183,154, 76,129,185, + 78, 78, 47, 27, 77,166, 22, 14, 14, 14, 86,179,217,172, 53, 26,141,227,172, 86,235,137,166,180,253, 14,195, 68,252,193,227,245, +176, 40, 20,238, 22, 66, 20,102,134,177,152, 45,150, 28,163,209,120, 19,192,183,148,210,140, 39,121,223,255,177,168, 90,157,246, + 36, 62, 0,250,115,156, 28, 39,199,201,113,114,156, 28, 39,199,249,228, 57, 1,200, 1, 4, 1,224,255, 29,219,254, 79,250, 0, +152, 84,181, 45,224,164, 38, 7, 14, 28, 56,112,224,240,143, 48,156,232, 81,135, 79, 22,135,255, 45, 8,128,254,245,220, 48,187, + 77,130,205, 89,125, 96,199, 20, 3,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 48,206,198,184,255,142, 83,146, 13,229, + 58,228,166, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228,166, 14,159,208,135, 7, 14,245,169, 83,111, 66,136,247,227, + 46,203,225,159,221, 23,234, 56,214,159, 16,226,223,196,242,190,220, 85,231,192,129, 3,135,127, 6,254,235, 66,203,222,151,214, + 35,190,220, 30, 73,248, 16, 66, 18, 8,129,242,193,135, 36, 60,174,178,118,156,215,207,211,211,243,157,200,200,200,141, 62, 62, + 62,211, 8, 33, 94, 77, 60, 62, 84,161, 80, 44,115,112,112, 72,116,112,112, 72, 84, 40, 20,203, 8, 33,161,143,233,190, 17, 66, +200,100,169, 84,122,202,207,207, 47, 79, 34,145,156, 34,132, 76, 33,205, 76,112, 73, 8,105, 75, 8, 89, 72, 8,249,140, 16,210, +161, 41,199,122, 71,141,216,230, 21, 53,226,134, 87,212,136, 36,143,246,207,134,122, 69,141, 72,242,138, 26,113,195, 59,106,196, +182, 39,208, 95,155,125,127, 43,143,189,255,224,211,248,177,132,144,111, 9,144, 67, 8,114, 31,181, 47,113,224,192,129, 3,135, +191, 6,154,228, 12,239,239,239,255, 60,165,116, 50, 0, 74, 8, 89,147,151,151,183,179, 25, 47,158,217,149,219,139, 41,165,115, + 31,165,156, 29,199,126, 71, 41,157,213,116,145,134,217, 44, 75,121, 0,192,227,145, 15,188,189,189,229,124, 62,255, 63, 28, 12, +109, 54,155,156, 16, 76, 99, 89, 74, 42,203,206, 38,132, 44,163,148,170,154, 35, 14,199,143, 31,255,221,178,101,203,164,114,185, + 28,217,217,217, 3,167, 76,153,210,141, 16,242, 30,165, 52,191,177,227,101, 50,217,139, 93, 98,187,190,183,232,235, 37, 14,222, + 94, 94, 10,198,198, 90, 50,179,179,228, 31,205,153, 21, 43,147,201,150, 53,148, 76,185,182,160, 2, 48, 73, 32, 16,140,150, 74, +165,173,141, 70, 99, 6,195, 48, 59,248,124,254,160, 47,190,248, 34, 42, 46, 46, 78,170,213,106,197, 12,195,180,249,245,215, 95, +223,251,233,167,159,134, 16, 66,134, 55,180, 76,191,202,162, 67, 41,205,171,177,251,133,236,236,236, 24,145, 72, 68, 66, 66, 66, +120, 0,110, 52, 82,190, 26, 20, 8, 77, 62,187,189, 61, 0, 68,118, 31,149,158,124,118, 59, 42,183,159,192,160,224,225,190, 32, +149, 74, 87, 25,141,198,251, 85,255,175,172,167,202,158, 99, 9, 33,203, 43,211, 7,197, 0,120,185,178,232, 6, 74,233,101, 66, +136,143, 84, 34,153, 97, 48, 26, 9, 0,242, 40,125,137, 3, 7, 14, 28, 56,252,215,141, 72,157, 40,165, 87, 43,103, 36,226, 1, + 28,168,122,119, 55,117,213,225, 91,183,111,223,118, 0,128,176,176,176, 55, 1,236,108, 66, 37,254,227,197,211,175, 95,191, 78, + 50,153,236,161, 40,200, 6,131, 65, 76, 8,250, 53, 71,188, 84,157,195,108, 54,241,132, 66, 49,120, 60,242, 94,135, 14, 29, 90, + 22, 21, 21,157,225,241,120, 27,115,115,115, 75,155,113,241,176,118,237,218, 48, 95, 95,223,255,136,214,156,159,159, 47, 30, 62, +252,217, 38,241, 77, 36, 68, 98,146, 72, 98, 69,132,248,218, 24,198, 5, 0, 4, 2, 65,105, 91,103,231,152, 47, 63,255, 92, 78, + 8, 97,139,139,139, 97, 48, 24,240,238,187,239,202, 82, 82, 82, 70, 0, 88,209, 72, 29,195,158,126,166,219,187, 71,142, 28, 14, +215,150,148, 26,215,126,183,250,138, 65, 32,210, 7, 71,180, 19,173, 92,179,222,117,210,196,113,111, 19, 66,174,213,149,142,164, + 22, 15, 15,192,238, 25, 51,102, 68, 14, 29, 58, 84, 92, 94, 94, 46, 53, 24, 12, 45, 55,110,220,248, 81, 76, 76,140, 67,116,116, +180,120,203,150, 45, 68,163,209,128, 82, 42,111,215,174, 29, 29, 61,122,180,113,235,214,173,211, 0, 44,111, 76,248,242,249,252, +165,109,219,182, 93, 80,217,102, 81,141, 50,194,136,136, 8, 5, 0,164,165,165,125, 74, 8,102, 52, 36,178, 9,112, 59,178,251, + 40,128,160, 77,242,217,237,210,200, 30,163,140,160,184, 67,128,219,149, 3,130,133, 64,141,184, 80, 15,227, 86, 94, 94, 94,179, +114, 19,198,199, 15, 37,132,144, 29,126,126,126, 59, 11, 11, 11,131, 9,193, 27,246, 14, 6, 8, 33,196,221,221,253, 21, 0, 9, + 0, 94,191,117,235, 86, 39, 0, 8, 15, 15, 23, 1,184,236,228,228,212,205, 98, 54, 19,238,113,197,129, 3, 7, 14,127, 75,116, + 2,112, 21, 64,124,141, 20, 60,107,154, 35,180,196, 0,112,230,204, 25, 0,144, 52, 71,244,213, 20, 48,211,167, 79,135,175,175, +111,109,241,130,196,196, 83,143,210,216,135,206,241,217,103,159, 57,148,149,149,245,255,241,199, 31,123,250,251,251,127,147,151, +151,119,161,161,131, 41,165, 42, 66,200,226, 74, 11, 4, 36, 18,105,250,148, 41, 83,174, 86,254,187,229,111,191,253, 38, 31, 54, +108,152, 30, 64, 22, 0, 72, 36, 82,127, 62,159, 23,246,192,233, 13,139, 27, 18,132,163, 8, 9, 17,139,197,125, 39,127,255, 61, +243,212,176, 97, 2,133,167, 39, 1,128,172,212, 84,247,197, 95,127,221,173,244,238, 93,177,193,221,189,184, 88,167, 51,164,167, +167, 67, 34,145, 16, 62,159,255, 84, 99, 13, 86, 40, 20,239,124,254,229, 34,133,182,164,204, 96,212,150,155,249,140,213,228, 40, +147,219, 84, 5,133,197, 14, 50,133,254,131,143, 63, 17,191,245,198,132,119, 0,188,217, 8,213,180,247,222,123, 47,188, 75,151, + 46,254,219,182,109, 35, 26,141, 6, 2,129,192, 33, 58, 58, 26, 49, 49, 49,182,147, 39, 79,146,224,224, 96, 68, 69, 69,225,236, +217,179, 56,119,238, 28,233,212,169,147,124,215,174, 93,227,235, 18, 90,181,197, 53,159,207,123,183, 93,187,118,209, 10,133,194, + 28, 22, 22,134, 55,222,120, 3,148, 82,244,239,223, 63,202,193,193, 97,167, 78,167, 19,167,165,165,246,108, 76,100,171,146,246, +140, 6, 0,175,168, 17, 55, 0,180, 7,197,157,194,164, 61, 53,167, 31,195,211,210,210,158, 46, 45, 45,173,118, 70,172, 74, 96, +222,179,103, 79,187, 59, 82, 85, 95, 24, 54,108,232, 7, 0, 33,253,251,247, 47,155, 54,109, 26, 47, 53, 53,245,165,231,158, 27, + 17,117,251,246, 29,212, 87,207, 90,253,136,188,242,202, 68,149,131,131,195, 72, 63, 63,191, 52, 0, 2,145,168, 90,103,242,189, +189,189, 61, 59,116,232, 48,213,205,205,173,144,207,227,121, 81, 80,218, 88, 95,226,192,129, 3, 7, 14,127, 41, 28,168, 20, 87, + 7,106,255, 67, 0, 0, 7, 14, 28,160,255, 30,181,199,147,134, 94, 60,215,175, 95, 15,212,235,245,176,231, 37, 80,115,137, 38, +165, 84,197,231,243, 87,242,120,228, 77, 66, 8,162,162,218,223, 91,186,116,105, 93, 57,189,204, 81, 81,237,239,241,249,188, 86, +148, 82, 16,194,251, 23,203,218, 84,117,113,214,247, 98, 20,139, 37,179, 1,192,199,199,247,238,161, 67,135,204, 47,188,240, 2, +190,254,250,107,209,156, 57,115,102,181,104,209, 98, 90,118,118,118, 65,125,245,172,252, 62,215,219,219, 91,190,118,237,218,176, + 41, 83,166, 92, 85, 42,149,115, 1,192,207,207, 47, 1, 64, 4,128,172, 26,251,176,106,213,214,188, 55,222,120, 35, 93,165, 82, +205,173,143,243,121, 66, 90,183,104,215,174,239,194, 51,103, 40,207,100, 34, 69,191,255,174, 85,171, 84,214, 12,181, 90,254,203, +229,203, 67, 63, 74, 72, 16, 6, 6, 5, 33,113,223, 62,143, 34,189, 94,173, 49,153,140, 42,149,138, 50, 12,115,206,142,182, 71, +122,121,122,201, 87,127,251,175, 75,142, 66, 62,235, 21,224, 79,132,110,110, 2,158,220, 73,204, 23,240, 76,173, 90,134,138, 1, + 68, 54,118,143, 68, 34,209,248,129, 3, 7,202,183,110,221, 74,162,162,162,224,226,226,130,223,127,255, 29,215,174, 93, 67,105, +105, 41,207,106,181,162,115,231,206, 88,180,104, 17,130,130,130, 80, 86, 86,134,251,247,239,123,136,197, 98,207, 6,174,231, 67, +253,105,246,236,217,240,245,245, 5,195, 48, 40, 41, 41, 1,195, 48,112,112,112, 0, 0,228,230,230, 98,223,190,189,141,246, 37, + 59, 69, 18,158,121,230,153,114, 66,200,173,218, 22,173,166,112,250,251,251,111, 81,171,139,134,244,237,219, 23,165,165,165,214, + 79, 62,249, 4, 29, 58,116, 64, 88, 88,152, 61,125,126,174, 68, 34,249,177, 69,139, 22,223, 78,159, 62,221,215,205,205, 13, 38, +147,233,163,130,130, 2, 76,157, 58, 21, 0, 16, 23, 23,215, 65, 40, 20, 30,122,237,181,215, 16, 28, 28,156, 87, 82, 82,114,255, +202,149, 43,111,232,116,186,164,230,182,221,206,235,195,113,114,156, 28, 39,199,249,151,226,180, 87,139,252, 21, 81, 57, 77,184, +166,198,247, 53, 15, 9,173,248,248,120,114,224,192, 1,106, 71,195,138, 3, 2, 2, 2,101, 50, 25, 0, 20, 55,181, 34, 54,155, +109,154,135,135, 71,225,220,185,115,187,135,133,133,153,167, 77,155,150,148,153,153, 57,175,102,153,224,224,224, 47,126,248,225, + 7,164,167,167,103, 37, 36, 36,156, 45, 42, 42,250,172,137,141,157, 67, 8, 89, 90,105, 29, 43,218,183,111, 95,135, 51,103,206, +188,249,221,119,223,121,190,245,214, 91,162,119,222,121,103, 28,128,175, 27,227,225,243,249,250,186,166, 11,235,130,175,175,175, +185, 46, 31,174, 42, 12, 35, 68,230, 36, 22,247, 89,120,230, 12, 53,103,101,233,127, 90,178,196,113,245,159,127, 46,176, 82,234, +237,229,229,133, 30,221,186, 85, 72,249,252,162,194,130, 2,214,171,117,107,126,230,161, 67, 30, 6,177, 88,185,117,235, 86, 77, +113,113,241,158, 70, 77,120,132,104, 89, 74,205, 14, 1, 65,214, 23, 70, 12,136,186,116,241, 90,170,163,151, 7,175, 83,116, 84, +135,212,244,172, 43, 96, 89, 11, 33, 68,219, 24,143,179,179,115, 88,113,113, 49,180, 90, 45, 60, 61, 61,177,116,233, 82,248,248, +248, 64,175,215, 35, 57, 57,153, 6, 4, 4,144, 51,103,206, 32, 32, 32, 0,106,181, 26,102,179, 25,229,229,229,133, 38,147,201, + 80,159,240, 21, 8, 4, 63,243,120,100, 34, 33, 4,173, 90,133,100,175, 88,177,194,204,178, 44,194,195,195,241,220,115,207, 97, +215,174, 93, 72, 78, 78,174,178, 60,153, 91,180,104,153,205,227,145, 22,149, 90,169,217, 86,157,170,212, 62,121,121,121, 35,155, +101, 22, 37,132,231,231,231, 55, 46, 52, 52,244,205, 23, 95,124,209, 42, 22,139,161,211,233,170,174,133,117,200,144,184,178, 97, +168,130,175, 28, 0, 0, 32, 0, 73, 68, 65, 84,195,134, 58, 31, 56,112,160,193,122,154, 76,166,187,222,222,222,175,191,247,222, +123, 27, 87,173, 90,229, 58,111,222, 60,176, 44, 11, 74, 41, 24,134,169, 78,250,205,178, 44,118,239,222,141,140,140,140, 47,106, +138, 44, 14, 28, 56,112,248,255,130, 38,104,145,191, 28,106,248,102,161,182,216,250,175, 71,134,231,243,249,171,143, 30, 61, 26, +221,179,103, 79, 65,191,126,253,162, 2, 2, 2,162,114,115,115,147, 0, 32, 32, 32, 32,106,240,224,193, 81, 94, 94, 94, 88,182, +108,153,158,207,231,175,110,166,178,172,249,210,187,234,235,235,251,205,174, 93,187, 22, 79,158, 60, 25, 62, 62, 62, 17,255,237, + 54, 59, 73, 36,157, 94, 91,186,148, 17, 90,173,188,239,191,249,198,105,201,169, 83,139,183,109,223, 46,120,230,153,103, 8,165, + 20, 55,111,220,144, 45, 90,190, 92, 62,118,196,136,172,180,187,119,153,189, 71,142, 88, 85,121,121, 37,121,106,245,124, 74,105, + 73, 99,252, 86,171,245,252,237,219,183,253,122,244,122,198,255,244,159, 73,215, 94, 24, 17,215, 87, 40,224,145, 59, 89,185,151, +125,125, 60,156, 19, 79, 29, 55, 88,173,214,243,141,241,232,116,186, 76,134, 97,220, 40,165,158,137,137,137,240,244,244, 68,105, +105, 41,172, 86, 43,204,102,179, 89,175,215, 75,139,139,139, 97, 52, 26, 97, 50,153,224,228,228,132,155, 55,111,170, 24,134, 57, + 89, 31, 39,195, 48,175, 73,165,210,207,132, 66,161, 88, 36, 18, 41, 47, 95,190, 12,173, 86,219,210,197,197,229,107,134, 97,160, + 84, 42,113,230,204,153,247,157,156,156,178, 0, 64, 42,149, 66, 44,150,184,155, 76, 38,166, 62,103,120,123, 45, 90,205,133,175, +175,111, 80,171, 86,173, 22,126,240,193,236,240,142, 29,163,161, 86,171,193,178, 44, 20, 10, 5,244,122, 61,156,156,156,208,181, +107,215,204,133, 11, 23,230, 83,138, 73,141,137, 65,149, 74,165,246,247,247,159, 54,121,242,228,207,194,194,194, 90, 81, 74, 17, + 26, 26,138,129, 3, 7,226,208,161, 67, 72, 79, 79,135, 78,167,179, 93,184,112, 97,179, 82,169,252,141,123,220,114,224,192,129, +195,223, 79, 39, 86,249,102,213,180,102,253, 79,132,150, 74,165, 82, 7, 4, 4, 28,190,114,229,202,208,209,163, 71, 35, 49, 49, +241, 21, 0,239, 1,128, 68, 34,121,101,244,232,209,184,114,229, 10, 82, 83, 83, 15,171, 84, 42,245,227, 56,167, 88, 44, 54,154, +205, 15,140, 83, 82,169, 84,218,196,195, 91, 86, 78, 25, 2, 64,203, 6,246,213, 11,158, 64,224,219,126,240, 96, 65,233,181,107, +218,181, 23, 47,126,182,113,227, 70, 65,247,238,221,137,213, 98,129,141,101, 17, 18, 18, 66,250,245,239,175,248,121,227, 70, 55, +155, 78,119,230,243, 15, 62,248,125,205,107,175, 85,164, 83,154,101, 79, 5, 77, 38,211,242, 55,167,190,222,255, 84,226,239,254, + 17,237, 90,187, 29, 62,122,234,170,187,187,179, 60,172, 77, 27, 69,113,105,137,109,222,156,247, 5, 38,147,233,251,198,120, 12, + 6,195,238,227,199,143,143, 8, 12, 12,244, 76, 74, 74,130,217,108,134,205,102, 67,191,126,253, 64, 41,149, 0, 96, 5, 2, 1, + 82, 83, 83, 97,177, 88, 10,111,223,190,173,188,115,231,142, 4,192, 87, 13,241, 26,141,198,236,154,223, 3, 3, 3, 7,196,199, +199,131, 97, 24, 12, 30, 60, 24,123,247,238, 29,144,146,146,178,164,166,230,123,212,123, 94,105, 33, 11,247,247,247,223, 85,185, +203, 46, 39,248,128,128,128,168,208,208,208, 85, 95,125,245,149, 40, 32, 32, 0,148, 82,184,186,186, 64,175,215,163,168,168, 24, + 17, 17, 17, 8, 12, 12,196, 87, 95,125, 5, 0,155,237,181,184,229,229,229,221, 1, 48, 58, 34, 34, 66, 84, 86, 86, 22, 51, 96, +192,128,101,253,251,247,199,213,171, 87,241,251,239,191,143,149, 72, 36,133, 22,139,133,241,245,245,157, 68, 8,113,178, 88, 44, +155,138,138,138,242,185,103, 23, 7, 14, 28, 56,252, 45, 80,229,163, 85, 29, 37,190,201, 22,173,136,136, 8,133, 70,163,121,185, +101,203,150, 98, 0,144,201,100, 17,173, 91,183,158,149,145,145, 81,222,212,218,232,245,250,109, 27, 55,110, 28,248,237,183,223, +138,226,226,226, 90, 7, 4, 4,116, 1,128,145, 35, 71,182,118,116,116,196,198,141, 27, 45,122,189,254,177,197, 68,178, 90,173, + 61, 59,119,238,140,146,146, 18,100,101,101, 53,105, 90,230,183,223,126,147,227,129, 95, 86,131,251, 26, 2, 99, 54,187,186,248, +251,243,242, 78,157,178,148,104,181,190, 61,123,245, 34, 86,139, 5, 60, 30, 15,197,197,197,184,127,255, 62,156, 93, 92, 72,234, +237,219, 14,235,102,207,254,173,101,199,142, 98,155,217,236,222, 4, 81,161, 35,132, 76,124,123,218, 91,187, 55,109,218,236, 89, +166,213,102,200,100,114,147, 68, 34,242,153,254,246,219,182,146,146,146, 9,148,210, 10, 59,168,190,218,180,105,211,224,193,131, + 7,223, 8, 10, 10,242, 82,171,213, 62,101,101,101,182,146,146, 18, 62, 30,248, 90, 17, 0, 56,117,234, 20,180, 90, 45, 99,179, +217,206, 0, 88, 72, 41, 53,219, 91,215,150, 45, 91, 58,199,198,198,246,246,244,244,132, 70,163,129,187,187, 59,162,163,163,123, +183,108,217,242,199,172,172, 44,205,227,236,245,199,142, 29,115,164,148, 62, 77, 41,197,224,193,131,237, 58,198,102,179,189, 26, + 31, 31, 47, 34,132,192, 96,208, 67, 42,149, 65,161,112,128,163,163, 19,194,194,218, 66,169, 84, 98,208,160, 65,230,140,140,140, +149,249,249,249, 77,238,163, 26,141,102,120,215,174, 93,103, 78,157, 58, 21, 12,195, 96,248,240,225,200,201,201, 89,146,153,153, +185,213,207,207,111,220,171,175,190,234,233,238,238,142,153, 51,103,202, 0,124,202, 61,187, 56,112,224,192,225,175,143,218, 62, + 90,117, 90,180, 26,154, 19,245,245,245,237,225,230,230,246,145,193, 96, 16, 87, 77,201, 16, 66,196,158,158,158,123,253,252,252, + 18,148, 74,101,147,156,226, 74, 75, 75,181,190,190,190,123,207,159, 63, 63,106,228,200,145, 56,118,236,216,132, 74,161,133,243, +231,207,227,222,189,123,123, 75, 75, 75,181,143,163,241, 1, 1, 1, 67,122,247,238, 61,178,115,231,206,216,191,127, 63,108, 54, +219,185,166, 28, 95,115,133, 33,234, 88,117, 88,181,207, 46, 50, 62, 31,132, 16, 48, 12, 3, 0, 40, 82,171,145,158,150,134,146, +210, 82,152,140, 70,232,244,122, 91, 88,112,176, 65, 99, 54, 11, 9, 64,155,120,147,179, 29, 28, 28,238,235,117, 58, 47,119, 87, + 55,131, 92, 46, 65,153, 86, 35,186,124,233, 66, 5,165, 52,195, 78, 14, 51, 33,164,215,161, 67,135,230,243,249,252,209, 14, 14, + 14,120,243,205, 55,249,189,123,247,134, 72, 36,130,201,100, 66, 89, 89, 25, 54,110,220,168,102, 24,166, 85,101, 63,112, 80, 40, + 20,235,249,124,126,174, 86,171,253,168,177,115,152,205,230,184,161, 67,135, 10,204,102, 51, 62,255,252,115, 44, 88,176, 0,131, + 7, 15, 22, 92,186,116, 41, 14,192,166,199,213,233, 89,150,197,128, 1, 3,106, 58,195,223,178,231, 56,161, 80, 24,213,166, 77, + 27,168,213,106,168,213,106,120,122,122,194,207,207, 15, 62, 62, 62, 88,178,100, 9, 93,182,108,217, 97,139,197,178, 82,173, 86, +171,154,209, 23, 39,189,242,202, 43,147, 70,141, 26,133,138,138, 10,156, 63,127, 30,221,186,117,195,226,197,139,125,207,156, 57, +243, 94,231,206,157, 33, 20, 10,145,152,152, 8,134, 97,114,184, 71, 23, 7, 14, 28,254,191,225,239,232,159,213, 24, 26,180,104, + 5, 5, 5,185,216,108,182,247,135, 13, 27, 54, 96,196,136, 17, 24, 52,104,208, 67,255,223,180,105,147,227,206,157, 59, 19, 2, + 3, 3, 7, 91, 44,150,175,154, 50,213,199,178,236,238, 77,155, 54,197, 61,243,204, 51,242, 62,125,250,132, 0,128, 68, 34, 49, +111,218,180, 73,207,178,236,238,166, 54,164,118,240, 72,127,127,255, 14, 2,129, 96,228,208,161, 67, 59, 76,156, 56, 17,201,201, +201,216,184,113,227,157,176,176,176,179, 77,164,206,106,100,213, 97, 66, 99,214, 45,190, 88, 92, 92, 86, 80,224,226, 16, 20, 36, +116,117,116,204,223,191,127,127, 96,255,254,253, 73, 78, 78, 14, 74, 75, 75, 97, 52, 26,113,233,210, 37, 86, 0,100, 11, 92, 93, + 73,246,249,243,132, 47, 22, 55,121,177, 65,160,175,107,232,199,115,166,180, 52,154,140,145, 26,141,134, 17, 8,133,194, 0, 31, +151, 38,189,176, 41,165, 38,133, 66, 17, 3, 64,192,178,172,222,205,205, 77,126,244,232, 81,136,197, 98, 16, 66,208,190,125,123, + 72,165, 82,145, 66,161,184, 15, 0, 62, 62, 62,226,213,171, 87, 59,143, 27, 55,238,247,198,184,159,122,234, 41, 97,112,112,240, +179, 97, 97, 97, 56,127,254, 60,146,146,146,178,207,159, 63,223,162, 83,167, 78, 8, 10, 10,122,246,169,167,158,218,126,229,202, + 21,235, 99, 26, 93, 52,203, 25,222,102,179,177,132, 16,240,120, 60,176, 44, 11,181, 90,141, 86,173, 90, 97,197,138, 21, 88,186, +116,233,231, 74,165,114, 95,115,234, 19, 17, 17, 33,138,142,142,158, 48,106,212, 40,220,189,123, 23, 9, 9, 9, 69,249,249,249, +167,142, 28, 57,242,252,212,169, 83,249,221,186,117, 67,113,113, 49,126,254,249,103,230,242,229,203, 63, 21, 20, 20,108,224, 30, +185, 28, 56,112,224,240, 15, 22, 90, 65, 65, 65,163, 68, 34,209,204, 49, 99,198,240,219,182,109, 11,149, 74, 5, 39, 39, 39, 43, + 33, 68, 8, 0, 46, 46, 46, 86,153, 76,134, 41, 83,166,160, 99,199,142, 61,102,207,158,221,205,223,223,127, 69, 94, 94,222,122, +123, 78,172, 82,169,244,190,190,190, 59,222,124,243,205,175,174, 93,187,218, 10, 0,254,252,243,207,123, 74,165,114,142, 74,165, +210, 55, 81,100, 85, 5,197, 36, 50,153,236, 98,104,104,104,230,144, 33, 67,156, 70,140, 24, 1, 79, 79, 79, 92,185,114, 5,139, + 22, 45,186,109, 54,155,231, 39, 38, 38, 50,255,237,139,204,152, 76, 5,151,247,236,113,236,253,210, 75, 78,211,227,227,191,121, +235,205, 55,191,253,248,227,143, 5,109,219,182, 37,122,189, 30, 23, 47, 94,164, 59,119,238,180,254,252,217,103, 75,161, 80, 8, +207,239,220, 41, 54,155,205,217, 77,180,150,244,138, 27,220,171,237, 55,223, 46,135,209, 80,129,139,231, 14,160,180, 84,141,213, +107,118,181, 13, 8, 8,232,149,155,155,123,186, 9,215, 51,236,216,177, 99, 94,148, 82,136,197, 98, 44, 92,184, 16,126,126,126, +112,114,114, 66,121,121, 57,222,123,239, 61,231, 25, 51,102, 56, 3, 64,114,114,114,117,120,134,198,160, 84, 42,187, 78,153, 50, +197,145, 97, 24, 28, 62,124,216, 76, 8,249,232,248,241,227, 63,182,111,223, 94,220,163, 71, 15,199, 13, 27, 54,116, 3,144,248, +184,132, 86, 51,143,187,115,244,232,209,206,163, 71,143,166, 66,161,144,148,149,149,193,197,197, 5, 43, 86,172,208,229,231,231, + 31,104,118, 31, 96, 24,177, 92, 46, 23, 83, 74,177, 99,199, 14,100,103,103,191, 90, 84, 84, 84,224,237,237,189,235,253,247,223, +159,213,182,109,219,224,180,180,180,236,242,242,242,197, 42,149, 42,147,123, 52,113,224,192,129,195,223, 7, 85, 78,240, 77,138, + 12,111,179,217,166, 28, 57,114,132,207,178, 44,214,172, 89,131,203,151, 47, 83,185, 92,254,145, 92, 46,255, 65, 38,147,217, 12, + 6,195,228, 55,222,120, 99,220,130, 5, 11,120, 61,122,244,192,249,243,231,121,173, 90,181,154, 0, 96,125,141, 19,247,111, 40, +214,134, 70,163,185,164, 82, 21,180,170, 17,160,178,149, 68, 34,189,212, 72, 99, 30,226,172, 35, 40,102,236,194,133, 11,117,190, +190,190,230,164,164, 36,172, 90,181,138,189,124,249,242, 41,177, 88,188, 90,169, 84,154,236,225,124, 76, 23,189,154, 83,204, 48, + 87,126,157, 53, 43,252,169,225,195,217,215,103,206,172, 16,201,100,239,124,179,124,249,236,178,242,114, 63, 16, 66,221,157,157, +179,215, 44, 92,152, 48,248,217,103, 43,146, 79,159,150, 94, 59,118, 76,232,105,181, 94,111, 74, 61,115,115,115, 79,135,182, 14, +194, 47,107,191,133,197, 98, 66,126,222, 3,157, 86, 84,172, 65, 67, 34,171, 46, 78,134, 97, 52,207, 63,255,188, 8,128,108,252, +248,241,226,194,194, 66,180,110,221, 26, 0,160,213,106,113,224,192, 1,180,107,215, 14, 0,112,243,230,205,234,237,198,234,169, + 80, 40,158,237,214,173, 27,178,179,179,145,156,156,124, 66,169, 84, 22,251,249,249,157,200,201,201,137,235,220,185, 51,118,239, +222, 61,172, 62,161,213,212,123,100,143,208,170,139, 83, 38,147,205,217,181,107,215,171,231,206,157, 27, 61,107,214, 44, 97,191, +126,253, 0, 0,229,229,229,122, 74,169,173, 57,156, 53,235,100,181, 90,193,178, 44,220,220,220,116,149, 3,142, 76, 52, 18, 72, +246, 73,247, 79,142,147,227,228, 56, 57,206,191, 2,231, 63, 4,246, 71,134,167,148, 50, 44,203, 34, 49, 49, 17,187,118,237,178, + 89, 44,150, 73, 74,165,242,102,141, 34,203,253,252,252,142, 61,255,252,243,235,211,210,210,248, 41, 41, 41,176,231, 69, 84, 19, + 70,163,209, 90, 59, 37,177,209,104,124,228,169,163, 95,126,249, 5, 5, 5, 5,150,156,156,156,227, 12,195,236,126,196,213,139, +143,188,234,240,103, 74, 77, 47, 17,114,124, 65,247,238, 3,230, 31, 59, 38,121,253,195, 15, 77,175, 76,156,248,190,205,108,182, +242, 69, 34, 86,172, 80,240,108, 18,137, 48,249,244,105,233,178,169, 83,221, 12, 38,211,225, 95,155,224, 96, 94,195,162,133, 87, + 94,127, 23,134, 26, 22,173,243,151,210,209, 84,139,150,209,104,140,172, 20, 29,247, 1,248,188,252,242,203, 96, 89, 22, 6,131, + 1,229,229,229, 80, 42,149,154,137, 19, 39,218, 42,197,147, 96,228,200,145, 78,246,240,134,132,132,248, 9,133, 66, 28, 62,124, + 24, 66,161,240, 0, 0, 8,133,194, 3,199,142, 29,139, 27, 59,118, 44,252,253,253, 67, 8, 33,132, 54,162,146,188,163, 70,108, +163, 64, 40, 8,218, 60,248,197,163,141, 87,212,136, 27, 4,184, 93, 25, 53,254, 86,167, 78,157, 0, 59,253,178,106,162,114,113, +199, 82, 15, 15,143,237,179,103,207,126, 51, 54, 54,118,224,130, 5, 11, 8, 0,254, 99,177,110, 50,204, 35,133,158,224,192,129, + 3, 7, 14,127, 93,171, 86, 93,251, 5, 13, 28,176,166, 87,175, 94,147, 0,240, 9, 33,171,242,242,242,110,214, 46,163, 84, 42, +211,253,253,253,191, 14, 14, 14,174, 78, 52,221,148, 74, 85, 70,114, 95,196,227,145,217, 15,190, 55, 61, 64,101,141, 84, 39,179, + 1, 16, 30,143,191,254,234,213,171, 31,222,191,127, 95,221, 84,225, 87, 23, 30,199,170, 67, 0,216, 68,105,230, 88, 66,142,204, +140,138,234, 63,120,234, 84,116, 24, 60,216,201,175, 69, 11,155,193, 98, 97,111,158, 61, 75,206,237,216, 33,186,118,236,152,208, + 96, 50, 29,222, 69,233,253,166,214, 51, 55, 55,247,116,235,144,128,163, 47,140,140, 27, 24, 18,236, 7, 0,184,155,169, 68, 81, +137,230,104, 83, 68, 86, 45,193, 53,124,197,138, 21,251, 68, 34,145,160,102, 42, 27,139,197, 82, 82, 37,198, 8, 33,126,107,214, +172,217,194,227,241,178, 27,227, 75, 73, 73,217, 59,127,254,252,145, 89, 89, 89, 71,239,223,191,159, 5, 0,217,217,217, 89,126, +126,126,235,243,243,243, 71,102,103,103,239,164,118,168,144, 90, 73,165,145,124,118,187, 20, 64,251,170,164,210,205,205,101, 88, + 19,149,161, 21, 62,242,245,245,221, 52,112,224,192, 55, 0,228, 61, 10,159,217,108,182, 26, 12, 6,198,102,179, 9, 44, 22, 11, + 53,155,205, 86,238,177,196,129, 3, 7, 14, 77, 66,103, 0, 85,153, 72,170, 12, 40,158,181,182,205,168, 76, 23, 88,245,248,173, +252,174, 6,112,169, 6, 71,205,253,141, 29, 11, 0, 69, 0,110, 84,238,171, 75,139,172,169,239,123,189, 66, 43, 47, 47,111, 39, +236, 72, 26,109,111,185, 6,132,210, 92, 66,200,178, 42,209,244,168, 28, 12,195, 60,150,252,112, 60, 30, 47,115,216,176, 97, 77, + 42,223, 88,153, 45,148,102,191, 67,200,134,253,223,127, 31,125,120,213, 42,127, 27,195,184, 19,128,242,197,226, 98,179,217,156, +229,105,181, 94,111,170, 37,235, 33,107,204,221,220, 65, 0, 16, 26, 26, 74,239,220,185, 3, 74,233, 35,173,222,160,148, 94, 7, + 16,216, 72, 25, 37,128, 30,118,138,193,205, 0, 54,215, 33,216,183, 0,216, 98,247,168,161, 42,169, 52,192, 99, 9,251, 66,100, +247, 81, 59, 0,176, 85, 73,165, 31, 39,242,243,243,211, 80, 25,231,237, 81,144,149,149,101, 10, 14, 14,254,117,209,162, 69,227, +175, 93,187,182, 53, 47, 47,207,196, 61, 51, 57,112,224,192,161,105, 34,139, 16,178,191,242,221, 51,180,114,176,191,191,246,118, + 85,153,170,114, 53,203, 84,113,212,222,223,208,177, 0, 48,103,206,156, 15, 19, 18, 18,228, 0,236, 74,198, 92, 51,112,169,224, +175,112,245, 30, 71,242,220,199,157,128, 55, 55, 55,119,237,147,104,235,242, 7, 66,234,194,147,188,158,183,111,223, 38,255,228, + 95, 91, 85, 82,233, 26,136,250, 59,212, 59, 51, 51,115, 69,239,222,189, 87,231,229,229, 49,224,192,129, 3, 7, 14, 77,129,103, + 93,194,168, 30, 61, 48,180,161,255,215, 18, 68,255, 81,174,174,239,132,144,253, 9, 9, 9, 67,237,173,108, 77,139, 22,143,187, +119, 28, 56,252,247,240,191, 88,245,202,129, 3, 7, 14, 28,234, 21, 68, 15, 89,177,170,196, 87,237,239,115,230,204,249, 16,245, + 76, 27, 86,150,241, 37,132, 76,170, 92,117,248,144,191, 22, 1,208,191,158,147,219,189,154,128, 16,210,191, 25,141, 59,206,113, +114,156, 28, 39,199,201,113,114,156, 28,231,255, 47,206,198,184,235, 57, 62,190,190,169,190,134,166, 17,107,111, 55,118,172, 29, +101, 15,212,211,150, 73, 53,115, 29, 62,148,243,176,202,201,249, 73,124, 0,244,231, 56, 57, 78,142,147,227,228, 56, 57, 78,142, +147,227,124,196, 79,103, 74,105, 60, 30,100, 77,161,148,210,120, 74,233,224, 57,115,230,204,173,218, 55,103,206,156,185,148,210, +126, 85,229, 42,203, 84, 31, 83,181,175,246,223,218,251, 26, 41, 91,223,245,152, 84,115,187,230,247,191,132,143, 22, 7, 14, 28, + 56,112,224,192,129, 67, 3,184, 4,160,115, 13,107,147, 26,192,205,132,132,132,210, 26,190, 83,106, 0,215, 1,116,172, 44,167, +174, 52, 40,213,244,173, 50, 87,126, 55,215, 81,198,108, 79,217,122,172,112,107,234,218, 6,192, 9,173,250, 16,237,203,255, 44, + 40,192, 43,166,218,234,199,178, 0, 0,182, 50,250, 64,117, 24, 2,150, 5,165, 20,202,194,178, 43, 55, 84,244,227,230,158,175, +173, 63,113,243,146, 74,151,178,148,118,175,220,117, 90, 83,108,122, 55, 73, 67,203,236,229, 8,247, 33,225, 82, 30,222,103, 41, + 58, 0, 0,143,224,134,145,197,215,183, 10,232,173, 71,189, 30,132, 16, 18,233,137, 73, 98,153,124,140,179,139,107,155,210,210, +162,219, 22,163,105,123,138, 26,171,105, 51, 2, 67,181,118, 35, 79,179, 20, 31, 2,224, 9,121, 88,146, 94, 76, 79,113,189,142, + 3, 7, 14,255, 37, 60,106, 92,188,186, 66, 7, 61,234, 34, 36, 46,192,158,125, 98,171, 54,254,180,179,220,255, 12, 77, 18, 90, +145, 94,100, 42, 8, 62, 1, 64, 65,241,105,114, 33,253, 87,147,142,247, 35,253,165,124,254, 58, 0,124,163,197, 54,147,178, 56, + 83,231, 75,157,135,158, 82, 17,127, 9, 0,214,104,179,189,150,172,180,223, 95, 44, 42,128, 12, 22,176,188, 95, 89, 74,133, 54, +150,174, 7,197,126, 7, 17,254, 56,159, 75,141, 77,169,107, 80,128, 87,204,158, 63,243, 7,158,250,215,116,196,118,104, 13,106, + 99, 0,214, 10,121,143,247,113,226,187,151, 17, 27, 30, 4,202, 90, 1,150,129,195,144,111, 48, 36,202,185,217, 63,146,182,254, +196,173,133,135, 87,210,218,181,235,124,252, 66, 34, 8,203, 88,144,246,231,209,113, 51,102,207,239, 27,229, 76,162,236, 17, 91, + 29,253,200,235,173, 91,181,125,255,221, 79,190,229,251,250, 5, 42, 88,171,137, 41,200,188,213,105,249,226,249, 59, 59,250,145, + 37,215,149,116,157,189,130, 42,194, 19,147, 5, 18,241, 40,153, 84,209, 70,175, 47,191, 99,179, 88,183, 71,249, 9, 6,127,253, +205,210,232,222, 3,226, 28,108,229, 5, 60, 43,139,136,109, 91,183,180,248,126,197,202, 56, 66,200,179,148, 82,182, 41,109,102, + 41,102,167,111,152, 20, 39, 20,240, 73,248,171,107,249,176,115,201,108,109, 68,120,147, 23, 9,109, 60,188, 4, 37,248, 61, 69, + 69, 55, 55,231, 28,225,222,228, 71, 66, 17, 6,130, 29,132, 98, 75,114, 33, 45,228,158,119, 28, 56,252,179,192,227,241, 78,177, + 44,219,231,113,114, 18, 66,158,166,148, 94,224,174,238,255,111, 52,205,162, 69,240,121,114, 70,142, 43,108, 22, 68,134,133,124, + 6,160, 73, 66, 75,202,231,175,191,116, 91,229, 3,198,130,181, 95,188,185,213,108, 5, 24,171, 5, 54,198, 10, 27, 99, 5,195, + 88, 96,179, 90, 65,173, 38,204,255,233, 20, 96, 46, 71, 76, 84,232,122, 0,190,246,158, 67, 72,121,191, 94, 57,123,212,141,152, + 53,216,252,175,132,183,115,212, 21,111, 31,191,161, 44,138,244, 38,115, 83, 10,241,115, 83, 4,193,169, 85,211,177,113,247,129, +220,101, 63,234, 82, 89, 74,225,230, 36,107, 59,110,104,114,224,134,189,167,114,150,174, 55,166, 2,128,179, 66,220,118,194,141, +219, 65,143,114, 19,188,164,210,165,171, 87,126,239,227,235, 46, 35,204,185,175,192,216,108, 8,108, 17,207,159, 59,109,156,239, +231,223,173,251, 14,192, 43, 13, 29,223,206,155, 68,132,181, 14,159,185,254,192,185, 32,157,182,208,124,116,211,135, 25, 48,193, +234,227, 31, 46,252, 44,225, 91,254,188, 15,166,191,215,206,155, 92, 76, 85,209,148, 70, 30, 10,188,112, 47,236, 77,248,234,155, + 14,125,135, 12,117, 96, 43,212,124,163,174, 34,108,237, 79,235, 62,105,215,161,139,188, 71, 84,128,168,112,251, 20, 98, 40, 47, +129,133, 39,149,244,141,236,239,100, 24, 63,214,186,246,151,141,211, 0, 44,111,210,112,176,198,180, 53,203, 54,127,116, 73, 40, +122, 92,187,112,106,178, 77,121, 9,212,102, 5,108,150,234,191,176, 89, 65,217, 7,127, 99,167,252, 4,212, 17,195,203,174, 7, + 48,197,192,227,103, 47,249,170, 10,242, 59,127,247,205,151,115, 35,188,200, 33,216,240,235,173, 18,156,110,170,192,228,192,129, +195, 95, 23,132, 16,134, 82, 42,120,204,156,113,148,210,131,143,200,241, 62,128,215, 43,191,174,163,148,126,253, 24,234, 21, 0, +192,167,242,107, 1,165, 52,151,235, 1,143,116, 61, 39,213,156, 50,124,148, 56, 90, 82, 80, 22,216, 49, 2, 0,100, 77,173, 8, + 5,164, 32,124,192,170,195,240, 33, 3,224,225,229, 3, 88,245,128, 69, 15, 88, 13,128, 85, 7, 88, 13, 40,202,207, 6, 44, 58, +224,238, 33, 48,148, 74,154,220, 98,147, 6, 72,223,142,126,157,130,224,233, 44,197,244,225, 17, 30,107, 14,167,175, 91,119, 52, +173, 63,128, 49,118,213,149, 82,196,182,111,131,101,235,116,169,251,174, 20, 14, 2,128,248,104,143,195,177, 17, 45, 2,151,174, + 55,166, 30,184, 81, 50, 24, 0,134, 68, 57, 31,234,210,214, 55,136,125, 4,171, 47, 75,105, 15,191,150,109,136,237,218,106,176, +218, 92,104,181, 6,228,102,110,128,171,255, 83, 60, 27,139, 94,141, 29, 47,227, 99,206, 59,243, 22, 9,245, 90,149,153,181,168, +109,158,252, 82,190, 64,204, 18,228,157, 54, 85,176,101,182,119, 39,189,204,204,252,248,139, 57, 0,198, 53,104, 29,242,194,180, + 37, 75,150,182,239, 22,211,206,171, 96,231,116, 82, 81,170, 2,195,151, 75,134, 63,211, 13, 46,161, 17,172, 42,113, 9, 17,135, +244,135,139,123, 8,242,206,109, 66,214,133, 93,164,123,167,145,146,159, 55,139,198,215, 39,180, 66, 61, 73,247, 65, 61,187,108, + 13, 9,242,243,165,148, 5,203, 82, 80,214,134, 87, 95, 24,136,185,219,238,194,102,179,225,249, 65,221,251, 45,154,220,151,178, + 44, 11, 74, 89,228, 20, 20,235, 79, 94, 76,237,151, 81, 66, 47,218, 99,169,234,248,116,159,238, 55,174, 92,104,103, 77,255, 13, + 49,227, 18, 82, 9,112,182, 70,159,235,126,245,200,207,237,128,159,154,251,227, 33,225, 94,176,101, 29,254, 10, 65, 61, 39,241, + 87,111, 62,236,169, 81,231, 77,216,185, 97,229, 11,255, 90,189,122, 35,128, 41,220, 35,134, 3,135,127, 6, 40,165,143, 93,108, +101,103,103, 43, 31, 69,108, 5, 4, 4,244, 4,176,184,202, 67,131, 16,178, 56, 56, 56,120,254,191, 7,170, 15,141,245, 52, 54, +155,109, 92,110,110,238,153,134, 56,135, 14, 29,234, 7, 32,184, 6,103, 48, 33, 36,184,174,178, 46, 46, 46,182,174, 93,187,102, +237,223,191, 95,201,245,144,166, 11,174,230, 8,173,212,251,219,167,119, 50,229, 87, 0, 64,170, 29,157,246,161, 41, 63,163,213, +246,213, 47,159,188,252, 85,100, 75, 55,148,235,204, 56,122, 57, 11, 54,155, 21, 54,134,169,180,108, 49,176, 49, 86, 12,234,232, +129,174,198, 41, 88,190, 63, 13,140,141, 77,104,136,179, 54, 44,148,125, 49,186,255,232,109, 44, 75,197, 18, 33, 79, 19, 22,232, +238, 53,243,249,142,188,233,195, 35, 97,176, 48,163, 35,188,201,201, 20, 21, 93,107, 23, 39,251,159, 33,143,104, 93,251,108, 76, +163,109,111,192, 26, 21, 59,118,232, 0, 39,106,210,192, 90,116, 23,229,122, 43,238, 22, 91, 81, 96, 44,131,132,228,219,197,201, + 82,116, 8,240,247,149,255,177,245,131, 76,119,190, 86,224,197,103, 68, 98, 30, 3, 27, 75,249,180, 44,197,228,214,110,128,176, +202,111,171,161,122,202,228,142, 47,247, 28, 24,239,124,127,211, 36, 34, 11, 27, 4,175, 78,129,200, 60,243, 11, 10, 47,239, 71, +177, 50,139, 56, 25,203,224,237,222, 26, 67,198,141,193,215, 99, 58,163, 92, 91, 14,126,126,134,179, 88, 40,113,169,143,147,218, + 48,110,201,162, 47,124, 5,124,222,131,235, 89,245,177, 89, 97, 48,153, 0, 27, 3,169,128, 5,161, 85,255,179,194,102,181,200, + 59,140,252,224, 77, 0, 23, 27,107,123,138,138,110,142,244, 34, 61,192, 90,219, 81,171, 1, 4, 56,155, 92, 72,171,197, 79,132, + 55,121,241,169, 65, 19,123, 80,130,223,155,115,143,162,220, 49, 52, 38,216, 65,161,208,166, 34,119,199,219,200,128,148,122,119, +123, 29, 47,190, 58, 77,190,102,205,154, 97,132,144,169, 53,125,212,158, 68,146, 85,142,147,227,252,187,114, 58, 59, 59,183,106, +217,178,229,124,171,213,218, 83, 36, 18,121, 91, 44, 22,176, 44, 91, 32, 22,139,127,207,202,202, 90,168,209,104,238,253,213,218, +126,227,198, 13,187,197,150, 61,156, 66,161, 16,105,105,105,119,236, 21, 91,181, 57,133, 66,225,175,103,207,158,197,182,109,219, + 0, 0,233,233,233, 8, 13, 13, 85,212,117,108,102,102,166,162,119,239,222,191,162, 86, 70,143,218,156, 55,111,222,108,245,219, +111,191, 97,199,142, 29, 0,128,180,180, 52,132,133,133,213, 89,159,179,103,207,242, 95,122,233,165, 86, 0,148, 79,250, 30,253, + 19, 68, 86,205,191, 15, 9,173, 3, 7, 14,208,248,248,120, 82,123,187, 14,220, 13,114, 21,119,130,209, 6, 0,119,155, 90,137, +148, 2,186,168,163,175,112,240,137, 29, 43,122, 74, 69, 60, 44, 88, 59, 51, 71, 93, 82,254,180,128,128, 5, 0,134,130,231,234, + 32, 62,159, 48,161, 99, 80,105,133, 17,251,254,204, 59,147,172,106,154,137, 52, 89, 73,143, 1,112,249,247,139,146,132, 77,248, +250,216,150, 45,115, 6,119,120,119,120, 7,236, 61,151,245, 46,128, 70,163,190, 83,150, 5,101,153,106,231,247,202,161, 3,192, + 62,156, 20,152, 5,125,176,143,109,154, 69,171, 55, 33,130, 82, 47, 12,113,147,139,127,152, 60,249, 13, 39,171,250, 54, 74,204, + 34,228,148, 26, 81, 96, 16,162, 66,224,133,188,212,155, 54, 30,193,177,198,111, 46,180,148, 49,186,184,138, 29,120, 81, 3,222, +244,215, 30,254,176, 84, 76, 24,190,211,115,159,187, 20,157,248, 54,139,209,169,117,132,160,209,220,122,206,206, 46,161,198,226, + 44,190,166,180, 8, 46, 62,145, 24, 60,122, 40, 62,141,143, 64,185, 86, 7,117,201,121,218,198,215,137,100,255,190, 17,243,134, +132,163, 88,149, 15,147, 21, 32, 58, 83,137,209,108,172,168,247, 58,242,176,122,198,172,217, 47,182,240,245, 84, 84, 45, 42,160, +172, 13, 29,195, 67, 48,160,103, 44,142,157,253, 3,151,110,166,131,173, 92, 84, 64, 89, 22,185,133,165, 42,163,197,246, 75,147, + 46,168,141, 1,181, 26,235, 20, 98,104,198,148, 97,123,111, 34,183, 1, 31, 63,221,198,241,181, 57, 67, 91, 56, 42, 36, 4, 70, +171, 13, 70,179, 21,229,127,252, 0,247,150,237, 33,151, 74, 73, 39, 24, 4, 0,184,188,133, 28, 56,212,192,168, 81,163,164, 42, +149, 42, 49, 62, 62, 62, 98,192,128, 1,242, 30, 61,122, 64,167,211,225,232,209,163,208,233,116, 45, 2, 3, 3, 91, 28, 61,122, +116,228,211, 79, 63,157, 18, 16, 16,208,123,251,246,237, 77,241,161, 21,224,223,206,236, 44, 0,134, 16,130,202,125, 4, 0,251, + 40,121,110,197, 98, 49,178,179,179, 31,187,101, 43, 47, 47,239, 78,115, 44, 91, 21, 21, 21, 34,127,127,127,120,122,122,194,102, +179, 65,167,211, 97,207,158, 61,208,104, 52, 96, 89, 22, 50,153, 12,159, 47, 89,139,212,171,137,184,120,241, 34, 52, 26,141,168, + 49,206,220,220, 92,210,177, 99, 71,152, 76, 38, 48, 12, 3,163,209,136,227,199,143, 87,127, 23, 8, 4,152,253,217,119, 72,191, +156,136,107,215,174, 33, 55, 55,247,191,146,109,164, 9, 90,228,175,104, 13, 93,211, 80,135,253,175,194,102, 99,230,174, 89,191, +229,252,220, 41, 99, 48,109,108,255,192,133, 43,118,245, 79, 81,211,245, 0, 16,225, 73, 38,140,239,211, 38,200, 69, 46,196,167, +155, 46, 3,148,206,125,212,243, 37, 21,211,244, 72, 31,242,238,238,139,217,137, 31,142,233,132, 16, 95,167,208,214,173,137, 56, + 35,195,142,156,130, 44, 3, 87, 7, 73,219,248,104,143,195, 96, 89,184, 56, 74,218,193,198,192,197, 65,210,118, 72,148,243, 33, + 0,112,145,139,218,213,101,249,170, 15,157,131, 68,147,228, 18,193, 36,197, 83,190, 65,175, 12, 27, 32,139, 27, 54, 82,230, 32, +100, 80,124,241, 40,180,194, 0, 88,221, 90,192,100, 45, 65,238,189, 12,219,137, 11,183,242,138,202, 77, 51, 27,173, 38,197,153, +188,123,105,158,173, 58, 12,112, 45,218, 63,175,176,213,196, 77,193, 60,176,188,242,141,207,169, 20, 94, 93,100,127,222,189, 87, +193,210,255,180,232,212,134, 86,163,201,178,218,224,107,176, 9, 28, 51, 78,253,140, 57, 67,218,163,180,164, 16, 70, 11, 3,141, +129,177,248,184, 72, 37,166,123, 73, 48, 89, 24,152,173, 44,132, 46,254, 56,122,254,102, 17,107,181, 30,170,143, 51,163,136, 94, + 3,224, 80,115, 95,107, 79,210,241, 3, 39,217, 53, 88, 13,200,206, 85, 98,253,129,243,157, 42,203, 53,191,147,179,204,131,233, +231, 26,150, 44, 66,209,163, 57, 78,240,225,222,164,139, 76, 42,250,126,241,187, 47, 69, 60, 19,230, 38, 97,115,207,131,176, 22, + 40,108, 2, 24,196, 54, 56, 7,134,128, 53,151, 83,189,209, 88,150, 12,112,145,222, 57,112,168,129,118,237,218,249, 56, 59, 59, + 39,207,154, 53,203,237,185,231,158,195,238,221,187,161,213,106,241,203, 47,191, 96,233,210,165,248,228,147, 79, 96,181, 90,177, +102,205, 26,249,206,157, 59,187,172, 92,185, 50,183, 69,139, 22,145,217,217,217, 5,141,141, 41, 1, 72, 0, 8, 43,223, 93, 4, + 0,123,240,224, 65,196,197,197,225,224,193,131,108,229, 62, 27, 33,196, 74, 41,109, 86, 62, 81,177, 88, 12,177, 88, 12,141, 70, +243, 88,196,150, 80, 40,132,131,131, 3,196, 98, 49,202,203,203,155, 44,182, 24,134,225,231,230,230, 66,163,209, 96,192,176, 97, +248, 46, 33, 1,125,250,244,193,128, 1, 3, 64, 41,197,241,227,199,209,191, 91, 20,198, 60,219, 27,183,110,221, 2,195, 48,118, +213,183,160,160, 0, 42,149, 10,131,135, 13,195,218,149, 43, 17, 27, 27,139,182,109,219,130, 97, 24, 36, 38, 38,226,133, 65,221, + 32, 29,209, 31,233,233,233, 92,167,182,211,154,245,184,124,180, 30, 25, 73,133,244, 66,132, 39,217, 63,118, 80,151,161,195,186, + 71, 96,237,214, 19, 95, 68, 68,144, 45, 0,224,238, 40,249,252,229, 62, 33, 72,185, 95,138, 19,215,148,251, 83,212,143,103,181, + 6,107,131,135,187,147, 28,224,139, 97,176,176,140,211, 93, 52,234,192,204, 82, 10,121,207, 15, 48,126, 88, 74, 96,108, 68, 96, + 96,213,170, 67,135,184,111, 49,225,230,157,160,206,109,125,130, 96,179, 2, 54, 43,156,198,108, 2, 62, 83, 52, 90,143,238,173, + 36,199, 62,152,249,110,215, 33, 35, 70,203,196,114,103,216,180, 57,176, 22,220, 68,241,237, 51,208,201, 67, 81,144,125, 23,219, +142, 92,212,220,206, 45,214,242,120, 56,170,210,152,222,207, 40,161, 21,141,241, 26,173, 72,152, 63,111,102,252,182, 45, 91, 29, + 37, 33,221, 73,198, 15,113, 26,177,128,145,120, 6, 63,197,211, 75, 61,232,151,191,108,117,210,153,241, 85, 99, 60,122,157,118, +215,241,163,135,199,180,105,213,221, 49,243,210, 1, 24,140, 38,152,172, 64,100,151,222,176,217,168,152,240, 8,235,196,231,147, +194,226, 82, 16,171, 77,245,251,245,204,252,179,215,239,242, 77,142,141,115, 63,164,238, 9,255,157, 97,189,163, 1,171, 1,207, +246,108,143,239, 54,158,120, 27,192,196, 71,187,201, 15, 44, 90, 20,232, 30,233, 69, 86, 1,232,126,121,207,210,118, 49, 35,102, +160, 41, 22,173, 40, 79, 50, 36,170,181,223,207,223,125,254,129,155,123, 64, 40,159,176, 86, 80,159, 14,128, 54,151,146,220,243, +112,246,143,133,205,175, 27,214, 44,255,166,130,101,233,150,230,132,182,224,192,225,159, 12,163,209,184,107,209,162, 69,110, 67, +135, 14,173,178,200,224,252,249,243, 88,183,110, 29, 20,138,135,159,147,113,113,113,160,148,186, 45, 88,176, 96, 23,128,103,234, +227,236,214,173,219,176,229,203,151, 43,163,163,163,239, 86,138, 45, 17, 0, 94, 82, 82, 18, 47, 39, 39,135,184,186,186, 82, 63, + 63, 63,171, 82,169,100, 1,216, 94,125,245, 85,190,131,131, 67,155,138,138,138,211,205, 21, 90, 98,177,248,177,248,108, 9,133, + 66, 16, 66, 32, 22,139, 33, 18,137, 64, 41,109,146,216,178,217,108,130,131, 7, 15,226,242,229,203,248, 36, 58, 26,239,250,251, +195,205,205, 13,137,137,137,160,148, 66,161, 80,160,164,164, 4, 91,182,108, 65,223,190,125,193, 48,140,200, 30,222, 29, 59,118, +224,202,149, 43,248, 44, 38, 6,239, 58, 59,195,193,193, 1,199,143, 63,152, 13,148, 72, 36,200,206,206,198,241,227,199,209,187, +119,111,174, 83, 63, 34,236,238, 60,189, 9, 17, 16,111,248, 88,204, 6, 80,134, 2, 4,126, 17, 17, 68,148,146, 66, 45, 77, 61, + 41,143,135,121,203,215,239,143,255,118,198, 48, 50,105,120, 39,191,133, 63,159,154, 10, 0,175, 61, 31,230, 47,151, 8,176,108, +111, 10,229,241, 48,239,113, 52, 48, 34,130,136,120, 60, 76, 29, 16,219, 22,202, 50, 51, 50,148,101, 39, 83, 40,181,107,170,231, +196,183,227,177, 97, 95, 98,206,210, 13,198, 84, 74, 41, 92, 28, 36,109, 39,220,200, 8,250,249,224,149,251, 75,182, 25, 83, 41, + 75,225, 34, 23,182,155,120,171, 91,163,171, 14, 59, 7,137, 38,205,253,224,253,110,195, 39,206,146, 50,169,219, 97,206, 56, 2, +214, 98,128,214, 34, 66, 25,223, 7,185,247,239,227,203, 53,251,115,180, 58,243,152,164,194,166, 9,204,244, 34, 90, 17,225, 73, +158,251,242,211, 15,143, 37,124,190,192,193,112, 55,177,130, 79, 24, 3,191,101, 47,193,231,159,124, 75,202, 77,230,209, 25, 37, +180,188, 49, 30,147, 35,190, 90,180,100,121,252, 27,227, 70,166,134,133,246,114,183, 41,239,185, 27,181,218,194, 77,135,175,248, + 84,142, 20, 9, 0,100,228, 22, 67,173,209, 49, 54,198,122,218, 81,136,133,201,246, 88, 7, 43, 17,226, 77, 60,159,235,209,225, + 37, 79, 71, 17, 12, 21,101,240,114, 20, 98, 80,108,235,151, 66,188,201, 7,119, 85, 84,221,124,161,101, 5,181, 26,112,225,171, +190,237,168,205,218, 14, 54, 43, 44, 55,126,109,186,101,140,224,221,105, 61, 29,156, 92,205,153, 60,232, 20,128,204, 3,196,169, + 5,224, 28, 76,132,225,163,161,188,155,204,188,253,210,184,226,123, 89,185, 63,122,200,240, 53,247, 8,225,192,225, 97,100,103, +103,191, 60,119,238,220,179,177,177,177,222, 30, 30, 30,104,223,190, 61,246,237,219,135, 89,179,102, 85,151,137,142,142, 6,165, + 20, 37, 37, 37, 88,180,104, 81,129, 82,169,124,185, 33,206,228,228,228,212, 13, 27, 54,244,140,136,136,176,136, 68,162, 50, 0, +146,178,178, 50,105, 73, 73, 9, 49, 26,141, 96, 89,150,117,118,118,182, 41,149, 74,235,152, 49, 99, 76,231,206,157,107,173,211, +233,178, 31,197,162, 21, 24, 24,152, 84, 92, 92,172, 33,132, 60,114,232,135, 42,145,229,225,225,225, 89, 81, 81,193, 2, 40,109, + 78,232, 7,134, 97, 16, 19, 19,131, 35,103,174,226,224,137,115,208, 42,211, 48,245,141,151,209,190,125,123, 28, 57,114,164,217, +247,172, 99,199,142, 56,124,252, 44,206, 94,190, 23, 9, 63, 8, 0, 0, 32, 0, 73, 68, 65, 84,142,236,244, 27,120,123,234, 27, +136,140,140,196,225,195,135,185, 14,109, 63, 14,212,242,205, 58, 80, 91,104,245, 62,112,224, 64,213,200,252, 63,228,107,184, 39, +233,232,215, 70,252,235,130, 33,173,195,133, 3, 22,128, 8,101,216, 30,122,184,219,188, 47,127, 72,109,239, 77,198,221, 84, 53, +190, 58,236, 33,171,150,138, 38, 71,122,145,205,215,111,181,123,233,217,216, 64,172,221, 39,255, 24, 0, 70,247,104,133, 63,111, +171,113, 49,189,112,115,114, 33, 77,126,212, 86,183,247, 38,114, 80,108, 94,244,206,240,222, 45, 2,124,176,110,247, 89, 16,130, + 93,118,189,112, 41,165,177, 17, 45,176,116, 67,237, 21,134, 62, 65, 75,182, 25, 83,143, 36,105,135, 0,192,192,112,197,161,206, +173, 93,131, 26,179,108,200,196,130,201, 67, 70,142,151, 50,233,251,128,172,227, 32,140, 9, 6, 11,139,252,162,114,232,157, 3, +145,120,254,186, 65, 99, 52,207, 72, 46,108,158, 21, 47, 69, 77,239, 70,251,146,251, 21, 58,131,175,220,179,181,145,207, 99,217, + 10, 19,197,159, 41, 89,218,228,124,154,102, 15, 71, 70, 6, 53, 63, 19, 64,122,172, 90,191,109,190, 80, 36, 30,205, 39, 32, 94, + 46, 10,207, 85,223,126, 6, 71, 71, 7,176,230, 10, 64,167,198,115,111,125,169,190,153,103,105, 5, 0, 97, 30,196,161,103,136, +104,189,128, 71,114, 79,222, 49,127,212,168,121,213,138, 41,227, 6, 69, 11, 89,179, 14,239, 44,218,138,213, 31, 12,199,248,126, +225,194, 3,127,164, 79, 1,176,176,185,247,154,218, 24, 80,171, 1,207,124,120, 38,149, 0,103, 41,208,253,242,182,207,219, 1, + 87,237,230,120,138, 16,161,192,151,132,119, 8, 82,136,216,220, 63,192,230,254, 65,249,129,221, 64,130,122, 18,226, 19, 67,191, + 95,252,137,110,237,218,117, 71, 89, 30, 62,109, 44, 84, 6, 7, 14,255, 95, 65, 41,189,235,226,226, 50, 56, 46, 46,238,196,145, + 35, 71,220,162,162,162, 0, 0,151, 47, 95, 6, 0,196,196,196, 32, 44, 44, 12, 42,149, 10, 99,199,142, 45,202,207,207, 31, 76, + 41,109,208,231,183,188,188,252,222,142, 29, 59,188,117, 58, 93,244, 71, 31,125, 84,216,162, 69, 11,173,209,104, 36,101,101,101, + 44,195, 48,112,117,117, 21, 71, 71, 71,163,107,215,174, 21,231,207,159,111,153,147,147, 83, 14, 32,171, 57,245, 31, 62,124, 56, +206,156,121,176,104,239,113,196,213, 18,137, 68,136,138,138,242,191,123,247,110, 94,229,245,185,208,140,107, 90,189,125,253,250, +117,156,190,154, 11,129,217, 0,177, 90,137, 11,187,119, 96,216,228, 55,193, 48,205,247, 98,184,126,253, 58,246, 28,191, 0,133, + 68,128,180,180,100,236,216,177, 3, 83,167, 78,125, 36,206,102,162, 65, 45,242, 23,239,247,249, 0,214,212,107,209,138,143,143, + 63,141, 58,162,218,182,110, 77,196,146, 10, 44, 24, 20,227, 63,123,116,247,214,124,171, 86, 9,214,198,130, 47, 4,188, 60,156, +240,235,175,155, 91,109,222,186,245,124, 71,127,225,114,150, 97,230,221, 84, 81,125, 19,234,181,224,219,173,103, 71,255, 58,179, +183, 96,234,144,118,110, 0, 32, 18,240,176,108, 95, 50, 3, 96,193,163, 52,248,153, 0, 34,173,176, 98,146,143,187,243,199,115, + 95,143,119,235, 29, 19,134,211, 23,147,176,124,199,249, 51,226, 66,108,176,251,194,177, 86,212,214, 79,117,173, 58, 4,219,184, +223,165,205, 70,125, 68, 10, 87, 88,178, 78, 1, 22, 35,140, 38, 11,114,138,109,200, 41, 49, 66, 32, 23,225,114,250,255,177,119, +221,241, 81, 20,239,251,153,221,189,150, 75,239, 61, 33,148, 36, 36,132,208, 59, 2,210,196,192, 23, 8, 93, 20, 16,129, 8, 40, + 32, 74, 71,138, 74, 71, 64,233,160, 82,164,131,180,168, 20,165, 35, 69, 64, 18, 2,132,132, 22,210,123,191, 92,219,157,223, 31, + 41,191, 35,164,220, 37,216,112,159,207,103, 63,123,123,123,251,220,204,206,238,204, 51,239, 59,243, 78,188,202, 62, 25,199,107, +154,103, 66, 8,233, 80, 79,225,246,233, 23, 43, 61,138, 84,249,250,220,172,116,189, 84,118, 69,162, 52,147, 39,153,194,243, 91, + 60, 45,234, 84, 87,218, 28, 16, 88,153,130, 22,206,250,104,164,121, 66,212, 9, 52, 96, 18, 65, 40,133, 89, 64, 8, 44,205, 88, +105, 71, 31,105, 28, 0,248,184, 88,203,150, 46,248,216,122,242,244, 5,213,142, 1, 11, 36, 68,218,184,165,203,228, 32,111, 91, +156,191,113, 15,231, 35,158,222, 57,255,251,253, 70, 93, 26,187,193,207,195,102, 82, 32, 33, 75,162,168,233, 22,210,226,130,209, + 3,186,162,178, 89,135,129,206,100, 88,203,193,115, 42,156,109, 88, 25,124, 0, 33,154,167, 32, 44, 11, 16,166,120, 6,228,179, + 75,224,108,234,209,221,251, 14, 23,110,221,186,227,179,168, 52, 42, 90,177, 68,136,168, 6,217,217,217,183,149, 74,101,207,224, +224,224,109, 31,126,248,161,229,240,225,195,221,198,140, 25,195, 0, 64, 74, 74,138,176,122,245,234,196,175,191,254, 58, 39, 61, + 61,125,148, 86,171,141, 48,166,227, 75, 8,185,252,205, 55,223,164, 93,184,112,161, 81,171, 86,173,228,205,155, 55, 23,108,109, +109, 57,185, 92,206,107, 52,154,162,232,232,104,254,225,195,135,174,217,217,217, 49, 0, 98,107,226,214, 47,177, 94, 45,100, 89, +246, 83, 74,105,208,203, 24,163,165, 84, 42,221, 0,196, 16, 66, 26,152,234, 54,124,161,193,230, 56,100,101,101,161, 48,249, 14, + 20,241, 15, 16,108,206, 32,208,214, 2, 86, 86, 86,181, 18, 69, 57, 57, 57, 64, 65, 2, 46, 94,252, 3,208,235, 97,109,109, 13, +107,107,235,191, 92,104, 85,166, 69,254, 13, 40, 63,211,176,228,185,173,122,140, 86, 35, 39,242,190,173, 12,171,199,133,212,151, +250,120,121, 64, 29,255, 59,254,120,150,143,217,109, 90, 69,177,114,203,162,113,239,244,109, 17, 58,176, 14, 58,183,107, 73,124, + 92,173, 39, 45,249,114,195,132, 70,206,228,227, 59, 41,116,141, 49,137,186,147, 74, 31, 5, 56,145,173,103,110,199,135,121, 40, + 85, 16, 4,138, 51, 17, 73,136,120,146,181,245,110, 42,125,100, 74, 6, 27,185,145,110, 28,152,189,148, 82,133,181,185,121, 94, +211, 38, 13, 29,186,181,109,194,188,209,169, 5,164, 44,112,241,218, 31,152,242,229,161, 43,130, 64, 67,110, 24,233, 54, 44,158, + 97,248,188,128, 42,158, 97,168,123,110,134, 33,165,148, 22,207, 58,172,122,216, 23,203,146,228,194,167,215, 93, 36,246,190, 80, +197,158,193,147, 44, 1, 79, 83,243,144,203,185, 64,157,144, 0, 80, 33,238, 44,165, 53,126,170, 29, 28, 28,156,234, 6,250,213, + 95,187,253, 0,180,133, 57,120,116,118, 27,242,179,146,240,249,198,163,245, 61, 60, 60, 58,197,199,199,159, 51,225,129,241,251, +229,248,110, 39, 80,128,149,200, 17,190,126, 31,210,237,205,224,160,148, 66, 80,165, 97,220,228,225,214,189,186, 15,183, 6,128, +167,247,111,193, 91,169, 50,138, 87,107,143,208,193, 93,252,109,160, 83, 97,251,207,183,138, 24,224,141, 29, 39,239,196,118,105, +104,163, 24,220,193,219,118, 97, 98,246, 0,212, 48,168,104,169, 69,171,204,194, 87,131,217,134,251, 41,229, 3, 28, 73,236,222, +203,169,230, 3,187, 55, 87, 74, 57, 66,104,126, 2,168,153, 3, 54,108,223,159, 47,211, 97,179,216,132,138, 16, 97, 28, 10, 11, + 11,111, 16, 66, 26,127,242,201, 39,195,102,205,154,245,154,185,185,121, 93, 0, 40, 40, 40,120,164,211,233,206, 3,216,109,202, +236,192, 18,225, 20, 67, 8,121, 20, 27, 27,235,252,253,247,223,219, 0, 80,148,156, 46, 2,144, 13, 32,165, 54, 51, 14, 75, 69, + 21, 33,228,211,151,104,233,248,177,132,179, 65, 77,174,103, 24,134, 39,132,128, 16, 2,185, 92,142, 11, 23, 46, 96, 80, 72,119, +220, 13,207, 70,144,141, 5, 90,141, 26,135,189,167, 78,129,101, 89, 16, 66,192,178,172, 73,237, 8,199,113,184,120,241, 34,222, + 30, 58, 16,114, 14,176,182,182,198, 39,159,124,130, 35, 71,142,128,227,196, 85,250, 76, 40,231,205,165,130,203,248, 56, 90, 4, + 11, 79,109, 91, 36, 5,175,195,177,109, 43,112, 60, 50, 95,115, 63, 13,179,253,211,176,250, 0,242,132,180, 47,119,132,157,186, + 24,185,252,221, 33,189,149,175,119,233,142,215, 59,119,225, 26,181,236, 52, 23,192, 26,131, 6,187, 91, 85,177, 54,120, 1,159, +109,254,249,222,184,189,103,163, 9,180,121, 24,210,163, 37,229, 5,124, 86,141, 8,120,129,211,218,204, 98,239,197,223,126,179, +133, 54, 31, 79,110,253,170,168, 83,183, 62,192,107, 17, 19,243, 0, 95,111,255, 65, 56,123,237,254, 78,141, 30, 31,198,102,210, + 2, 99, 57,139,149,149, 30,214,230, 50,255, 94, 65,214, 63, 9,160,176, 81, 74, 27, 82,129,135,141, 82,210,176, 71,128,249, 79, +148, 82,106,105, 38,105, 72,121, 93,181,156, 42,141,126,211,246,111,183,174, 28, 61,122,180,121,122,124, 50, 18,115, 35,145, 47, +115,135, 78,233,137,216, 91,231, 85,133,106,125,181,141,120, 85,247, 51, 61, 61, 61,245,198,213, 76,236,221,184, 24, 58,141, 26, +169,241,197, 90, 53, 49, 61, 23, 86, 14,238,191,153,194,169,213, 11, 57,161,195,199, 74,205, 44, 97,246,118,104,111, 89,108,134, + 26,205,220, 44,139, 31,166,252, 52,220, 61,125, 17,157, 11,138,117,219,195,103, 12,188,155,184, 25,149, 78, 75,133,244,195, 94, +205,221,241, 40, 46, 9, 23,238, 36,108,127,152, 65, 19,235,217,147,237,177,137,217, 97,125,219,120, 97,213,145,168, 15, 42, 19, + 71,149,113, 6, 58,147, 97, 0, 58, 20, 15,134, 87,129, 2, 29, 2,157,201, 48, 99,102, 26, 86,196,201, 73,241,214,202,159,158, +206,217,127, 61,189,239,180,183, 58, 90,181,107,247,166, 12,122, 13,242, 84,106, 93, 84, 22,205,173, 77, 25,213,162,167, 36,114, +138,156,255, 74,206, 18,209,179,179,100,123,153,156,137, 40, 23,215,169,182,121, 55,116, 19, 82, 74,185, 18,107, 86,149,131,225, +171,227, 52,116, 19, 82, 74,127, 44,177,102, 85,105,213, 42,207, 41, 8, 66, 98,139, 22, 45,236,250,244,233, 3,158,231,241,224, +193, 3, 60,125,246, 12,221,194, 62,128,141,141, 13,206,223,190,141,251,247,239,227,211, 79, 63,133, 78,167,195,225,195,135,227, +171,227,228, 56, 78, 91,191,126,125,105,191,126,253,160,215,235,241,240,225, 67, 36, 36, 36, 96,202,148, 41,176,182,182,198,141, + 27, 55,202, 56,211,211,211,193,113,156,246,175,120,150,254,237,168, 72,100, 85, 45,180, 0, 30,188, 14, 57,167,230, 97,205, 5, +104,181, 58, 52,188,147, 74, 31, 27,156,223, 16,108, 79,142,221,142,188,247,232,198,165,215,101, 72,141, 40,190,198, 4, 68,167, +211,164,150,158, 92, 30,180,121, 86,120,248, 19, 30,167,228,229, 71,167,211, 36, 83, 51, 71, 5,158, 64, 91, 8, 36,253,142,203, +231,207,225,236,149, 63,112, 61,226, 30,127,249, 70,244, 94, 70,192,103, 81,233,244, 65, 13,212, 41, 44, 66, 86, 97,100, 68,140, + 87, 75, 63,103, 47,240,122, 80, 65, 7,235, 33,187, 49, 42,170,157, 87,203,122, 54, 94,197,150, 44, 29,108,223,251, 21, 88,169, +168,146,239,122,156,118,115,135,186,242, 1,121,217, 25,109,186,118,106,107,110, 29,208, 11,233, 49,209,120,240,199, 69,213,141, +200,216,203,215,227,180,181,178,150,184,187,187,191,214,181,147, 63,134,140,155, 9,109, 97, 14, 30,158,253, 22,249,153,201,184, +240,155, 5,238,229,230,182, 5, 96,180, 69,235,242, 83, 93, 35, 0,232,224, 35,141,179,132,218,229,157,222,125, 32, 39, 69, 16, +212,185, 32,133,233,136, 77,208,228, 12,216,248,140, 7, 0,165,156,112,230, 52,199,202, 24,222, 64,111,123, 95, 37,171,195,142, + 83,119, 32, 8,197,203, 55, 9, 2, 54,236,248, 53, 54,236,179,183,155, 33,208,203,182, 9, 33,132,152, 98,242, 39, 20, 29,175, +239, 93,208,176,232,151,185,128,160,197,197, 73,118, 13, 59,174,201,236, 88, 83,203, 88, 68, 2, 77, 0, 16, 22,224, 70, 54, 77, + 90,243,243,220, 22,167,162, 58, 76,125,175,175, 21,168,184, 0,187, 8, 17, 34,254,122,228,231,231,143, 27, 53,106,212, 38,137, + 68,226, 8,128, 8,130, 0, 65, 16,184,229,203,151, 75,120,158,103, 24,134,225, 89,150,213,255,248,227,143, 58,158,231,211,138, +138,138,198, 85,199,169,215,235, 99,199,143, 31, 95,191,186, 25,138,123,246,236, 1,199,113, 90,189, 94, 31, 43,150, 68,245, 34, +203,112,111,104,229,170,188,241,160, 88,208,254,237,121,243, 0, 16, 80,204, 47, 39,178, 0, 0,183, 51,104, 98, 35, 39, 50,165, + 81,203, 78,243, 74,175, 49, 53,113, 69, 60, 63,176,101, 99,191, 61, 0,160,166,252,219, 53,201, 96,174, 90, 53,184,105,203,182, +123, 5, 74, 57, 61,165, 91, 25, 1, 7,139,244,184,107,204, 76,187,202,144,152,154,125,163,116,161,104, 1,244,255,221,133, 37, + 97, 28, 40,165,180,204, 93,184, 66,129,244, 28,117,181,113,160, 46, 62, 82,119,111,233, 37, 29,123,242,210,173,113, 60, 79, 93, + 88,150, 36,171, 52,250, 77,181, 21, 89, 0, 16, 31, 31,127, 46,208,137,156,188,221,196,185,135,131,178,196,202, 85, 8,164, 23, +226,100,124,106,222,185,154,112,102, 21,232,250,206, 90,125,228,168, 76,194,114,160,180, 56,160, 40,165, 40,210,242,153,165, 98, + 44,216,158,184,125,114, 88,191,135,101,201,211,234,248,174,222, 79, 90, 53,100,201,233,143,239, 60,201,218,250, 56,139, 70, 2, +192,227, 44, 26,217,192,158,204,141, 77,206,251, 56,242,105,214, 10, 83,199, 85, 80,130, 11, 45,135,204,123,225,187,218,222,207, +187,137,244, 15, 0,253, 27, 57,145,238, 67,166,126, 61,149, 16,136,203, 79,136, 16,241, 31, 66,169, 85,139, 97,152,133, 47,145, +243, 71, 66,200,155, 0, 98, 76,184,230, 42,128,198, 47, 57,111, 25, 0, 50,196, 82,126,169,247,212,244,128,165,119, 82,233, 6, + 24,177,104,180,177,191,171,244,250, 68,122, 26,128,125,109, 50, 88,194, 97,247, 50,111,218,237, 20, 58,247,207, 40,140, 18, 81, +245,167,140,245,137, 74,165, 61, 1,192,215,215,151,198,196,196,128, 82, 90,171, 65,133,119,211,232, 31, 40,183,148, 67, 69, 98, + 27, 64, 71, 99,248,162,211,233,103,192,139,174,225,152, 12,250, 57,128,207,107,148,231, 26, 70,126, 55,250,217, 74,165,167,128, +234,163,243,139, 16, 33,226,213, 20, 91,127, 2,231,143,226,157,125,245, 80, 85,192, 82, 70,188, 61,175, 30, 30, 60,120, 64,106, + 43,178, 68,136, 16, 33,226, 21, 6, 95,203,173, 66, 13, 85,203, 77,196, 43, 34,184,202,127, 39, 10, 45, 17, 34, 68,136, 16, 33, + 66,132,136,151, 36,178,202,139, 45, 2,160, 91,133,210,220,132,217, 4,132,144,110,166, 38,168, 58,126,145, 83,228, 20, 57, 69, + 78,145, 83,228, 20, 57, 95, 61,206,234,184, 95,185,217,140,212, 96,144,243,203,222, 0,116, 19, 57, 69, 78,145, 83,228, 20, 57, + 69, 78,145, 83,228,124,149, 55, 0, 99, 43, 59, 22, 93,135, 34, 68,136, 16, 33, 66,132, 8, 17,127, 18,196,216, 64, 34, 68,136, + 16, 33, 66,132, 8, 17,181, 67,181,139, 74,139, 16, 33, 66,132, 8, 17, 34, 68,136,168, 1,170, 93, 84, 90,132, 8, 17, 34, 68, +136, 16, 33, 66, 68,205, 80,163, 69,165, 69,136, 16, 33, 66,132, 8, 17, 34, 68, 84,143,170, 34,195, 19, 19, 87, 60, 17, 33, 66, +132, 8, 17, 34, 68,136, 16, 81, 5, 94,136, 12, 31, 30, 30, 78, 13,247, 34, 68,136, 16, 33, 66,132, 8, 17,127, 37, 94, 85, 45, + 34,186, 14, 69,136, 16, 33, 66,132, 8, 17, 34,106,129,138,198,104,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 37,160,170, + 49, 90,165, 1, 75, 59,151,152,234, 58,139,183, 75,132, 8, 17, 34, 68,136, 16,241, 55,224,149,212, 34,101,131,225,195,195,195, +105, 72, 72, 8, 17,203, 89,132, 8, 17, 34, 68,136, 16,241,119,224, 85,212, 34,226,172, 67, 17, 34, 68,136, 16, 33, 66,132,136, +218,136, 41,131, 89,134,229,143,197,181, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94,146,224, 42,255, 29,243, 39,255, 97, 55,145, + 83,228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,255,138,200, 42, 47,182,196, 89,135, 34, 68,136, 16, 33, 66,132, 8, 17,181, +128, 49,179, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 68,212, 0,132,144,177,132,144,222, 37,159,123, 27, 90,181, 68,139,150, 8, + 17, 34, 68,136, 16, 33, 66, 68, 45, 64, 41,221, 76, 8,113, 45, 17, 88,225,148,210, 36, 81,104,137, 16, 33, 66,132, 8, 17, 34, + 68,188, 4,148, 27,151, 21, 66, 8, 41,115, 39,138, 66, 75,132, 8, 17, 34, 68,136, 16, 33,162, 22,168,106,140, 22, 1,208,173, +146,139, 78,155,160,228,186,213, 32, 81,167, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,252,111,113, 86,199,109,138,254,248, +167,160,162,176, 14,101,226,139, 82,250,167,109, 0,186,137,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254, 87,183,151, + 62,235,176, 57, 33,102,162, 17,241,213, 3, 33,196,153, 16,226, 44,222, 9, 17, 34, 68,136, 16, 33,194,120, 11,215, 75, 29,163, + 21, 72,200,123,239, 5, 57,110,108, 76,136, 85, 4,165,133, 85,253,214,201,201,105,147, 82,169, 28, 94, 88, 88, 88, 64, 8, 17, + 12, 76,109, 0, 96,184, 46,208,195,212,212,212,142,213,253,183, 92, 46, 95,237,236,236,252, 94,126,126,126, 33, 33,132, 18, 66, + 64, 8, 41,205,240,115,123,158,231,227,211,211,211, 91,252,171, 11, 17, 96, 29,156,157,175, 73, 88,214,221,212,107,121, 65,120, +156,146,156,220,214,132, 7,102, 49, 33,152, 86,242,121, 25,165,116,230, 43,248, 86,176,198,252, 44, 8,176,140, 6,134,240, 12, +243,129, 4, 88,167, 22,132,141, 37, 15, 46, 95,211,191,214, 92, 35,245, 9, 69, 19, 66, 96, 77, 41,114, 40,193, 31,178, 86, 52, +246,111,170, 28, 66, 37, 18, 73, 95, 43, 43, 43,139,140,140,140,115, 0,246, 0, 24,106,111,111,223, 41, 55, 55, 55, 95,167,211, + 29,161,148, 30,170, 9,247,107, 77,201,116,153, 84,242,110,145, 86,183,244,226, 45,250,109,231,230,196, 94, 47, 96,137, 66,202, +117, 84,107,244,203, 46,252, 65,183,154,152, 86, 82,252, 42,148, 86, 29,166,175, 39,118,192,200,114, 7,128,195,182,182,126,114, + 71,171, 95, 36, 50,246,113,118, 74,254,240,129,169,169,207, 6,214,162,220,255,137,112,116,116, 28,201, 48,204, 23,148, 82,240, + 60, 63, 59, 35, 35, 99,219, 75,122,174,102, 3,176, 41, 57,204,166,148,126, 81, 75,190,167, 0,188, 74, 14,227, 40,165,222, 98, +211, 94,227,123,185,225,135, 31,126, 8,235,210,165, 11, 86,173, 90,133, 13, 27, 54, 60, 73, 75, 75, 91, 2, 96, 59,165, 84,243, + 87,243,188,138,120,105, 66,171, 17, 33,111,142,236,217,122,211,196,193,111,146,201, 35,231, 20, 86,243, 50,127,243,198, 27,111, +188,189,125,251,118, 73,116,116,180,153,143,143, 15, 24,134, 41, 19, 66,134,245,101,157, 58,117,132,234,254,155,101,217, 53,253, +251,247, 31,117,224,192, 1,229,141, 27, 55,148, 1, 1, 1,101,124,130, 32,160,124,253,235,227,227, 83, 37,159,181,181,245,239, + 44,203,122, 84, 36,210, 42,251,204,243,124,124, 70, 70, 70, 11, 35, 30,198,158, 0,102, 24,113, 75,151, 80, 74, 79, 84,245, 3, + 9,203,186, 39, 38, 38, 58,153, 90, 86,158,158,158, 90, 19, 94, 30,103, 66, 48, 77, 16, 40, 3, 0, 12, 67,166, 43, 20,138,141, + 69, 69, 69,113,165,231, 75,202, 44,197,148, 52,184,187,187, 15,160,148,142, 3, 64, 9, 33,155, 19, 18, 18, 14,154,114,189,149, +149,213,239, 50,153,204,131,227, 56, 82, 81,185,148, 63,230,121,158,106,181,218,248,204,204, 76,147, 5,246, 57,128,188, 1,188, +166,103,217,201,246, 14, 14, 29,111,156, 60,105, 30, 20, 20,196,176, 44, 59, 19,192,198,218,188, 55,154,107,164, 62,175,195, 32, +149, 78,222, 91,238, 61,223, 79,253,116,126,180,153, 68,125, 92,115,141,236,255,171,197, 22, 33,100,196,136, 17, 35, 38, 47, 93, +186,212, 65, 38,147, 49,251,246,237,243,155, 50,101, 74,232,170, 85,171, 28, 6, 15, 30,108,169,209,104,132,233,211,167, 7, 18, + 66,156, 40,165,235, 77,225,110,215,148,180,241,247,113,253,116,226,240,215,241,241,226, 61, 19, 59, 52, 38,233,102,230,210, 13, + 3, 58,214,183,105, 84,215, 22, 11, 54, 93,254, 16,192, 86, 19,210, 74, 56,142,107,235,230,230,230, 91, 84, 84,164, 47,233,188, + 81,131, 58,161,248,254,106, 52,154,204,204,204,253,181,189, 55, 31, 43, 20,173, 91,219, 88,156,154, 55,108,132, 89,110, 86,166, +243,154,240,163,183, 15,192, 41,120, 32,240,228, 85,106, 16, 24,134,249, 34, 33, 33,193,149, 82, 10, 87, 87,215, 47, 0,108,123, + 73,212, 54,165,245, 48, 33,196,230, 37,240,121, 25,240,121,189,132,103, 95,193, 49,204,120,153, 68,210,131,231,249,198, 37,207, + 80,132, 70,167, 59,165, 23,132,117,148,210,162, 87, 88, 7, 76, 11, 11, 11,235, 62,107,214, 44,159,105,211,166, 97,218,180,105, +117,182,108,217,178,105,209,162, 69,211, 9, 33,193,148,210,252,191,152,231, 95,111,193,250, 83,132, 86, 32, 33, 45,186, 54,105, +112,112,210,200, 33, 16, 14,172, 38, 24, 57,167, 74,145,213,182, 69,139,119,183,111,223, 14, 0, 24,222,183, 47,122,180,106, 5, + 75, 11,115,200,100,197,201, 33,148, 64, 42,145,162,223,148,143,140,201,220,178,208,208,208,183, 14, 28, 56, 96, 1, 0, 27, 54, +108, 64,104,104, 40,236,236,236,160, 84, 42, 33,149, 74, 33,145, 72,158,219, 27, 33,220, 60, 18, 18, 18,156, 20, 10, 69,153,240, + 19, 4,225,185,205,192, 79, 13,189, 94, 15, 95, 95, 95, 99,111,215,140,156,156,156,215, 10, 10, 10,170,244,233,214,173, 91, 23, + 0, 78, 24, 67,248,197,231,159, 65,208, 23,128,227, 0,189, 30, 80,107, 25, 8, 21,244,237,221,220,220, 48,126,252,120,212,102, + 33,241,144,144,222,132, 16,114,192,205,205,237, 96,106,106,170, 15, 33, 24, 83, 67, 75,215,132, 7, 15, 30, 88, 0,128,159,159, +223,120, 0, 38, 9, 45,142,227, 60,110,223,190,237, 36,151,203, 43,181, 92, 26,136, 96,104,181, 90, 52,107,214, 76,111,202,127, + 56, 3, 94,153, 12, 51,166,105,243,230, 99,231,245,235,167,184,118,237,154,130, 97, 24,232,245,122, 44, 95,190, 92, 79, 41,181, + 9, 4,172,162,128,220, 42,158,207, 89, 0, 70,150, 88,105,183, 82, 74,151, 63,119,158,162,137, 74, 39,239,253, 48,191, 95,171, +214,117,166, 35,234, 78, 68,171,122, 22,135, 97,201,169, 99, 1,252,165, 66,203,202,202,170,239,170, 85,171, 28,183,110,221,154, +123,255,254,125,237,198,141, 27, 29,199,141, 27,103,169,213,106, 17, 22, 22,150,230,239,239, 47, 93,181,106,149,227,161, 67,135, + 94, 7, 96,146,208,226, 8, 62, 27,218,183, 7,138,116, 12,116, 58,189,163,171,163,229,206, 73, 35, 58, 75, 40,213, 96,199,145, + 27,208,233,133,111, 77,180,100,181, 29, 56,112, 96,189,221,187,119,115,247,238,221,227, 26, 54,108, 8, 65, 16,192,243, 60,116, + 58, 29, 0, 64, 16, 4, 52,104,208,160,214,247,229, 93,192,207,193,217,238, 84,219, 55,123,153,185, 42,228,176,203, 74,195,104, + 41,103,185, 77,169,254, 30, 64,187, 87,169,177,160,148,130,227, 56, 60,123,246, 12, 78, 78, 78,102,118,118,118, 73, 0,230,103, +102,102,110,126,133, 27,200, 86, 50,142, 59,184,227,219, 53, 46,173,219,181, 99,157, 93,157, 16,253, 32, 14, 28,225,187,221,190, +126,163,243,187,239, 79,157, 68, 8, 25, 64, 41,189,246,170,229,221,181,253,132,254,174, 29, 62,216, 64,168,128, 5,107,143,230, + 45, 94,182, 90, 25, 54,102, 4, 59,101,202, 20,120,122,122,250,244,239,223,127, 25,128,247,171,229,105, 51,161,191, 75,187,137, + 27, 64, 41,230,125,125, 52,111,209,178,213,202,247,107,192,243, 47,127,119, 54,255,105, 66, 43,144,144,122,141, 60,157, 78, 46, +158,246,190,132,254,244, 29, 83,152,145,138,202,164,140,147,147,211,166, 94,189,122, 13,223,182,237,255, 59, 73,109,131,130,208, +255,245, 14,112,178,183,134,210, 92, 86,220, 28, 9, 4,127,220,127,108,148, 32,240,244,244, 12, 59,120,240,160,133,161,152,144, + 74,165,101,155,161,200, 42,221,202, 91, 62, 42,130, 66,161,192,233,211,167,193,113, 28, 88,150, 5,199,113,101,155,225, 49,203, +178,112,118, 54,105,232,210, 18,107,107,235,224,188,188, 60,171,236,236,108,120,121,121,229, 2,184,109,112, 62, 56, 45, 45,205, +202, 20, 66, 65, 95,128, 41,163, 3, 32,209, 92,129, 70,210, 10, 42,174, 61, 46, 95,191,139,227, 39,206, 33, 33, 49, 25, 29,218, + 52,197, 59,195, 6,226,212,169, 83,224,121,222,212,135, 39,133, 16,178,172, 79,159,222,211, 1, 66,186,117,235,150, 61,113,226, + 68,230,222,189,123,111,245,239,223, 47,232,193,131,152,146,158, 48,153, 70, 8, 89, 99,130,101, 75, 6, 0,231,207,159, 7, 0, +121, 77,158, 61,185, 92,142,223,126,251, 13,165,110, 98,134, 97,192, 48, 12, 88,150,197,177, 24, 7, 20,104, 24, 20,166, 68,226, +131,222, 94,168, 91,183, 46, 24,166,250, 33,137,157, 1,197,101,160, 63,145, 72,166,184,186,185,249,116,170, 87, 79,121,250,244, +105, 22, 0,188,189,189,105, 82, 82, 82,246,145, 35, 71,242, 56, 96,131, 55,165,219,171, 18, 89, 94, 94, 94,237, 25,134,249,162, +244,158, 19, 66,150,249,248,248,124, 90, 86,110,130,128, 97,221,237, 36,147, 38, 77,150,182,238, 92,220, 57,105,221,103, 55,114, + 31, 46, 14, 32,153,179,172,255,234,138, 34, 55, 55,119,111,131, 6, 13,216,140,140,140,203, 0,158,234,116,186, 25, 59,119,238, +116, 26, 61,122,116,234,247,223,127,191, 4,128,219,210,165, 75, 59, 23, 20, 20,236, 51,133,183, 99, 19,242,102,139,166, 65,109, +188, 60, 61,113,238,242, 53, 72,101, 18,155,241, 35,123,195,194,130,195,138,173,225,194,211,248,204,137, 23,254,160,219, 77, 16, + 89,173, 6, 14, 28,232,179,123,247,110, 25, 0,220,190,125, 27,201,201,201,112,116,116,132,153,153, 25, 36, 18, 9, 88,150,133, + 68, 34,121, 41, 34,203,218,211,254,234,225,195, 71,204,236,236,108,176,246,163, 73,120, 39, 53, 5, 54,150, 22,208,229, 23,248, +188, 98,130,195,111,192,128, 1, 10,158,231, 81, 80, 80,128,179,103,207, 90,155,153,153, 89,123,120,120,204, 3, 96,180,208, 50, + 51, 51, 75, 41, 42, 42,114, 42,169, 71, 83, 85, 42,149, 51,128, 92,185, 92, 94, 90, 79,231,151,252,159, 81,238,196, 74,220,132, +113, 6,150,172,184, 90,228,185,101,171,150,193,167, 15, 29,216,101,145,147,151, 12, 27,219, 84, 48,200,193,230,205,235, 96,102, +102,133,121,243,102,113,143,187,189,238,222,243,205, 1,167, 9, 33,221, 94, 57,177, 69,201,230,110,125,134,219,153, 41, 45, 75, +218, 18, 29,182,109,153, 4,134, 97,240,233,167,159,162, 81,163, 70, 99, 9, 33,115, 40,165,153, 85,211, 96,115,227,215, 6,219, +201, 20,197, 69, 44,240, 58,108,220,243,113, 49,207,204,113, 24,218,167,238,216, 63,190, 39, 63, 55,170,135,188,226,118, 5, 42, + 9,131, 56,180,162,169,165, 28,225,225,225,157, 66, 66, 66,206, 85,118,252, 47,120,127, 92, 1,132, 84, 36,190,184,240,240,112, + 26, 18, 18, 66, 12, 50,247,220,113, 85,104, 74,136,131,179,181,242,244,134,249,147, 44,184, 43,225,172, 42, 46, 6,137, 69,124, +217,155, 83,126,138,166, 82,169, 28,190,109,219,182,231,116,152,151,179, 19,164, 82, 9, 36, 82, 2,155,142,189,139,223,184, 11, +199, 65, 8,173,172,225,127,142,179,160,160,160,232,214,173, 91, 22, 91,183,110,133,147,147, 19,124,124,124,160, 84, 42,161, 80, + 40,158, 19, 87,134,130,171,188,208, 42,207, 89,122,158,227, 56, 48, 12,131, 83,167, 78, 65,175,215, 99,224,192,129, 47,136, 44, +142,227, 42, 20,110,149, 77, 79,165,148,158, 32,132,220,166,148,190, 86,210, 0,223,166,148,118, 50,248,239,158,142,142,142, 51, + 0, 44, 49,150,147,101, 41,216,162,203, 16, 60, 86,131,123, 54, 9, 26, 73, 19,156,185,120, 3,219, 54,173, 2, 0,248, 52,108, +137, 65,253,123,151, 89,227,140,225, 52,132,187,187,251,158,180,180,244, 94,175,191,254, 58,178,178,178,116,243,231,207, 71,112, +112, 48,252,252,252,140, 42,163,202, 4,220,237,219,183, 61, 85, 42,149, 81,110,199,138, 56, 9, 33,216,185,115, 39,138,138, 94, +180,234,219,118, 90,132,143, 67,189, 49,234,131,237, 88,118,127, 31,214,175, 95, 95,101,222,149, 64,112,145,117,131, 53, 50, 86, + 31,188,100,214, 4,249, 59,239,188,195,142, 26, 53, 10,113,113,113, 24, 61,122,116,209,169, 83,167, 52,201, 73, 73, 71,100,130, +176, 86,251,188, 48,174,148, 83, 46,151,239, 56,113,226, 4,246,237, 43,214, 37,209,209,209,240,245,245, 53,127, 78, 36,103,238, + 71,222,211,181,184,122,236, 30, 90,247,217,141,171,199,134,129,207, 14,151,180,240, 69,142, 41,247,179, 6,189,175,211, 21,124, +183, 15,192, 62,131,251,107,246,253,247,223,247, 3,112,180,228, 28, 0,124,105, 10,103, 49, 17, 70, 13, 14,237, 7, 78,106,137, +123, 49,241,232,212,182, 25,156,157,156,112,251,110, 44,158, 38,100,166, 16,130,145,111,180,151, 47, 81,169, 52,115,206,223,162, +223, 84,195, 73, 60, 60, 60,252,246,239,223, 47, 53,176, 64,151,189,227, 44,203,150, 29,151, 10,239,154, 60,159,165, 34,203,210, +195,226,234,103,235,218,155, 95,141,248, 30,190,222,111,194,246,205,222,248,230,228, 73, 60,184, 19, 85,164, 41,212,119,253,171, +203,232,207,226, 36,132,248,133,134,134, 94,222,181,107,151,205,179,103,207,112,254,252,121,248,248,248,160,176,176,176,218, 14, +111,121,206,162,162, 34, 39, 3,183, 94,233,208,134, 47, 52, 26, 77,105, 97,148,190,136,149,186, 19,203,113,190,224, 38,172,201, +152,172, 10,234,121,153, 66, 42,221,127,248,208, 30,139,168,123,231,209,180, 73, 27, 88, 88, 7, 66,224,147,145,145,153,143,172, +152, 68,124,254,249, 50,204,155, 63, 27, 71,127, 56, 96,225, 31,208,228, 32, 33,164,129,161, 27,241,223, 94,238, 32,116,236,233, + 99,223,111, 32, 84,128, 42,229,158, 92, 82,240, 72, 57,124,216, 0,118,200,144, 33, 56,122,244, 40,238,220,185,179,161, 50,145, +101,200, 73, 40,198, 70,158,223,183, 1,148, 66,149,122, 79, 46, 85, 61, 82,142,120,107, 16,251,206,208, 30,184,242,235, 26,244, +104,250, 40,210,205, 9,253,179, 74,156,135, 28,139, 12,185, 2,151,204,174,145, 43, 6, 98,235, 44, 0, 98, 32,176,206,226,255, +199, 96,254, 27, 16, 82, 18, 29,126,108,121,235, 22, 87, 19,129, 5, 0,126,132, 88, 40,101,210,171,219,230, 77,112, 83,198,221, +225,212,145,191, 33, 81, 45,208,141, 79,244,194, 85, 66,204,110, 80,170, 42,127, 77, 97, 97, 97, 65,108,108,172,217,200,254,253, +209, 46, 40, 8,174,246,246,104,224,225, 1, 51,185, 12, 50,169,196,160, 94, 54, 73, 69, 82,127,127,127,244,233,211, 7, 18,137, + 4, 74,165, 18, 22, 22, 22,144,201,100, 21, 90,179,140,237,229, 82, 74,193,178, 44, 34, 35, 35,241,244,233, 83,216,216,216,224, +210,165, 75,232,218,181,235, 11, 86, 45, 67,113,102,138,137,190,124,195, 95, 42,196, 96,164,203,176, 20, 60, 79,144, 79,155, 64, +241,100, 34, 10, 73, 51,168,213,122,168,213,106,124,115, 81,139,107,177, 5,208,106, 53, 80,171,213,149,254,103, 21,247,150,113, +115,115, 27,238,235,235, 59,126,216,176, 97, 58,153, 76,134,130,130, 2, 20, 22, 22,226,206,157, 59,186, 94,189,222,204,238,211, +167,183,117,120,120, 56,165, 20,203, 76, 28,167,149,225,238,238,238, 89,226,158,205,168, 97, 15,162, 76,196,148,199,200, 47,163, +192,177,197,101,178, 97,195, 6,240, 60, 15, 74,105,165,133, 84, 68,200, 47,243, 23,173,180, 94,186,250, 91, 88,219, 57,227,220, +185,115,252,207, 63,255,156, 71,128,232, 7,119,238,124,249, 63,224,199,253,128,214,148,244,101,101,101,153,249,248,248,192,195, +195, 3,130, 32, 64,167,211,149, 89, 95, 50, 50, 50,160, 82,169, 96,103,158,141,250,246, 30,208,231,157, 69, 82,228, 2,184, 90, +220,195,246, 19, 26, 93,115, 63,252,241, 15, 48,133,127, 7,224,187,218, 19,193,221,201,197, 19, 12,213, 33, 49, 53, 3,253, 66, +122,128,149, 90,224,241,179,116, 52, 9,172,231,250,214,255,218,187,178, 68,143,105, 75,118,143, 7,240, 77,117,116,249,249,249, +252,189,123,247,112,251,118,177,222,181,178,178,130,185,185,249,115,239, 56,195, 48,181,178,104,149,138,172, 69, 27,186,154, 51, +146, 2,228,242,167,177,117,231, 13, 52,241,239,141,141, 87,175, 23,241, 41,153,221, 86, 20, 21, 69,255,171,221, 70,174,174,227, + 4, 65,152, 71, 41,205, 14, 13, 13,117,222,189,123,183,109, 66, 66, 2,110,220,184,129, 79, 63,253, 52,141,231,121, 61,165,148, + 80, 74, 23,188,132,103, 73, 48, 16, 88, 47,211,138, 32, 81, 42,240,129,131, 21,233,203, 49, 86, 62,250,220,252,199,233, 26,122, +164, 80, 47,124, 77, 41,213, 85,117, 45,195, 48,239, 29,216,187,193,205,193, 81, 64,103,199,215,145,148,162,197,162,143, 70, 32, + 35, 35, 15,223,108, 89, 12, 64, 6,173,158,197,107,157, 7,192,201,201, 29, 99,199,140,117,217,176,105,227, 4, 0, 43, 94, 21, +131, 86,210,165,117, 63, 16, 66, 78, 59, 58, 58,222,153, 48,118,172,163,143,207,219, 80, 40, 20,216,179,103, 15,118,175, 93,203, +175, 6, 6,109, 34,228,204, 56, 74,127,168,146,231,202,255,243, 76, 10, 11,115, 12, 8, 8,131, 92, 46,199,175, 63,127,135,162, +228,157,121, 33,237,160, 45, 44, 66, 72,157, 62,212,238,201, 49,146, 41,145, 32, 6, 0, 36, 10, 36, 73,128,212,114,116,255, 54, +129, 85, 38,163, 74,199,105,149,238,107, 29, 25,158, 74,100, 17, 91, 38, 15,245,118,134,154,104, 46, 30, 67,130, 90,224,151, 62, +208,178, 55,115,232,199, 81, 21,136,172,146, 7, 91,240,242,242,194,235, 45, 90,160,127,199,142,224, 56, 14, 10,153, 20,150, 10, + 51, 80,190,216,146, 85,234, 58,172,162, 77, 68, 69,214, 39,123,123,123, 72,165,210, 50,129,101,172, 53,171, 50, 78, 65, 16,192, +113, 28,110,223,190,141, 14, 29, 58,192,211,211, 19,251,246,237, 67,207,158, 61, 95,112, 37,154, 42,178, 74,133,150,161, 27,207, + 96,144,124,181,131,224, 95, 16, 9, 26,130,116, 77, 19, 16, 18, 4,189, 30,224, 41,160, 46, 42, 2,165, 0,165,128, 78,171, 65, + 81, 81, 81,217,127, 26,227,146,117,117,117,245,170, 91,183,238,194,233,211,167, 5, 52,105,210, 20,105,105,105, 16, 4, 1,230, +230,230, 40, 44, 44,132,149,149, 21,218,181,107,247,120,225,194,133, 73,148, 98,172,169,131,225, 95, 66, 5, 11, 0, 56,121,242, +228,115,110,195,210,173, 32, 41, 30,163, 62,252, 30, 50,174,216,181, 84, 58,134,167,170,122,183,203,107,237,113,249,102,180,254, +189,105,107,212,146,140, 27, 75, 92, 4, 97, 91, 60,144, 82,139,198, 5,233,233,233, 72, 73, 73, 65,223,126,253,176,123,215, 46, + 60,121,242, 4,129,129,129,232,210,165, 11,156,156,156,240,228,201, 19, 92,187,160,134, 58, 43, 19,153,154, 27, 80, 90,182,198, +225,115,177,234,185,235, 53,177,127, 87,109, 65, 8,233, 11, 96,132,149,149, 85,221,194,194,194, 36,189, 94,191, 31,192,126, 0, +131, 56,142, 27,164, 84, 42, 93,115,115,115, 31,161,120, 54,209,145,106, 93, 73, 10,133,189, 92, 97, 5, 65,175, 6,199,113,240, +244,244, 1,229, 53,200,202, 85, 97,228,144, 62,184,121,251, 46,126, 62,115, 69,175,211, 9, 95, 25,115, 91, 89,150,165,126,126, +126, 72, 77, 77,133, 68, 34,129,153,153, 25, 44, 44, 44, 48,115,230, 76,172, 93,187,182, 76,100,213, 84,104,189, 11,248, 89,121, + 89, 92,249, 98, 93,177,200, 74, 78, 76, 66, 74,188, 4,142,246,206,248,106,237,234,130,172, 39,201,173,191, 5,254,213, 34, 11, + 0, 4, 65, 88,144,144,144,224,196,113,156,139, 94,175,199,179,103,207,240,251,239,191, 99,226,196,137, 41, 25, 25, 25,157, 41, +165, 53,202,163, 66,161, 72, 45,181,100, 41, 20,138, 84,160, 82,119, 98,182,129, 37, 43,187, 10,202, 10,221,132,132,144,122, 62, + 30,150,167,182,172,154,226,213,178,117, 59, 70,201, 89,101,229,199, 36,119,184,120,254, 92,187,137,171,190,153, 64, 8,233, 65, + 41,125, 88, 25,169, 92, 34,233,213,166,125,123, 14, 52, 5,156,172, 3,150, 45, 29,130,180,244, 92,100,101,230, 65, 42, 53,135, + 70,199,130, 23, 8,218,117,232,136,239,182,239, 69,163, 49,163, 89,153, 68,210,253, 85, 18, 90, 37, 88,252,245,215, 95,123,249, +251,251, 99,219,182,109, 56,179, 99, 7,222,201,201,193, 57,134, 97,117, 18,137,195,143, 58,221,102, 0, 63, 24,203,211,168, 81, + 35,124,251,237,183,216,185,115,103,220,240,174,169, 7,167, 12,135,147, 86,139, 55,110,220,135, 93,157, 62,192,141,251,176,107, +238,143, 6,122, 14, 49,132,224,185,112, 80,225,225,225,157, 12,247,255, 38,148,172,109, 88,161,139,157, 3,208, 57, 60, 60,156, + 26,238,171, 35, 84, 58,249,133,237, 28,242,186,119, 80,125, 47,162,219,183, 6,207, 10,244,154, 60, 32,158, 67, 0, 0, 32, 0, + 73, 68, 65, 84, 57,247,181,178, 7,249,116, 74, 20,165,171,171,232, 65, 80,150,101, 97,105,102, 6, 71, 27,155, 98, 51, 63,195, + 0, 2, 32,232, 0,194, 23, 11, 0, 42, 16,152, 50,105, 90, 16, 4,200,100,178, 10, 7,190,155, 58, 54,203,144, 51, 47, 47, 15, +143, 31, 63,198,216,177, 99,161, 84, 42, 1, 0,201,201,201,240,246,246, 6,199,113, 72, 72, 72,192,175,191,254,138,186,117,235, + 66, 46,151, 19, 19, 11,165,180,225, 15, 38,132,156, 3, 16,156,148,148,100,229,234,234, 10,147, 45, 90, 2, 69,161,154, 64,163, +225,241,224,193, 3, 36, 38, 38,226,241,163, 24,180, 44,200, 5, 5, 11, 74,169, 73, 22, 45, 15, 15,143, 32, 95, 95,223,141, 75, +150, 44,145,122,120,120,128, 82, 10, 91, 91, 27, 20, 22, 22, 34, 61, 61, 3,129,129,129,240,244,244,196,178,101,203, 0, 96,247, + 95, 45,178,202, 61, 83,101, 66,203, 80,112,125,248, 63, 47,100,102, 90,128,101,255,127,246,105, 53, 99,180,164, 0,208,185, 71, + 40,119,234,231, 31,205,245,192,194,100,150, 93,200, 85, 95,142, 58, 94, 16,148,149,157,127,246,236, 25, 36, 18, 9, 14,236,223, +143,204,148, 20, 52,105,210, 4,173, 90,181, 66, 76, 76, 12,110,222,188, 9,123,123,123, 56,122,180,197,185, 71, 90, 68, 37,170, + 96,109,109,141,216,120,230,111, 11, 25, 64, 8, 25,211,173, 91,183, 79,191,252,242, 75, 39, 23, 23, 23, 73, 90, 90,154,255,186, +117,235,154,172, 91,183,110,210,132, 9, 19,156, 39, 76,152, 96,235,232,232,200, 37, 39, 39,251,125,244,209, 71,205, 9, 33,117, + 41,165, 43,171,226, 52, 55,183,180, 99,165,230, 32,132,131,141,181, 45, 56,153, 57, 4, 61, 7, 94, 0,172,172, 29,113,249,230, + 1, 92,138,200, 27,151,154,129,253, 70,188, 55,212,222,222, 30, 12,195,192,222,222,254, 5, 75,245,196,137, 19,177,101,203,150, + 50, 55, 98, 77, 69,214,162,117, 93, 45, 72,137,200, 74,126,198,129,168,235,226,216, 15,191,101,103, 61, 73,238,240, 42,136,172, +210, 58,142, 82,138, 71,143, 30,161,176,176, 16, 23, 46, 92,192,130, 5, 11,210,202,139, 44,103,103,231, 49, 86, 86, 86,243,243, +243,243,151, 37, 37, 37,173,169,142,183, 68, 68, 61,223, 25,172,192,157,104,108,136,135,138,220,132,132, 16,137,167,171,226,196, +205, 11,223,123, 91,211, 63, 8,158,142, 5, 30,228,222,177,188,234,244,218,155, 45, 67,152,102,235, 63,171,211,106,220,204, 19, +132, 16,255,202, 44, 91, 2,207, 55, 51,183,176, 4,144,138, 27,191,159, 45, 19, 89, 25,153, 57, 80,107, 89,168, 53, 4, 69, 90, + 6,175,119,123, 3,107, 55,238, 68, 66,106, 38, 74,103, 36,190, 42, 32,132,216, 5, 5, 5,133, 13, 26, 52, 8, 11, 23, 46,196, +233, 47,191,212,188, 79, 72, 46, 7,208,112,158,135, 64, 41, 97,140, 24,196, 94,158,103,197,138, 21, 63, 0, 24,186,100, 34,218, +102,229, 99,164, 91, 31,106, 87,167, 79,241,111, 7, 78,167, 0, 96,151,118,250,249, 38, 51, 36, 36,132,148,122,214, 76,245,176, +253,211,193,133,132,132,156, 11, 15, 15,135,225,190,170, 11,172, 92, 26,190, 57,243,147,137, 75, 91,246,236, 72,146,166,118, 71, +102,110,145,126, 86,148, 86, 22,175,170, 90,100, 25,226,147,117,235,112, 51,186,248, 61,246,112,114,194,180,183,222, 2,213, 3, +151,238, 68, 97,239,233,211, 24,210,173, 27,204, 75,102,252, 25,107,125,170,200,138,101,104,205, 50,213,234,148,157,157,141,253, +251,247,163, 85,171, 86, 80, 42,149,224, 56, 14,193,193,193,184,123,247, 46,234,213,171, 7, 66, 8, 14, 31, 62,140,254,253,251, +227,225,195,135,104,219,182,173, 69, 77,132, 86, 84, 84,148, 21,165,244,181, 82,235, 71, 77,161, 86,171,113,239,222, 61,244,233, +211, 7,182,182,182,112,119,223,141,211, 39,190,135, 50,232, 29, 16, 2,147,132, 22,207,243,239,134,132,132, 72, 9, 33, 80,169, + 10,161, 80,152,193,220,220, 2,150,150, 86,240,243,243, 71, 98, 98, 34,122,246,236,169,137,141,141, 93,159,148,148,180,207,212, +180, 6, 6, 6,154,231,228,228,188, 83,167, 78, 29, 89, 73,111, 55,176,126,253,250, 31,199,198,198,230,153,106,213, 42, 21, 88, +132, 16,176, 44, 91, 38,180, 56,134,129,171,139, 83,217,113,201,248, 52, 82, 5, 87,110, 66,134, 90, 14, 0, 94, 94, 94, 88,187, +233, 40, 19, 18, 18,130, 73,147, 38, 65,167,211, 97,253,250,226, 73,118,195,134, 13,131, 86,171,197,193,131,197,147, 36, 57,142, +171,210,108,242,251,239,191,227,198,141, 27,208,233,116,200,201,201,193, 79, 63,253,132,115,231,207, 99,207,225, 95,240,228, 81, + 12,130,253,189, 49,122,244,187,144, 72, 36,216,190,125, 59, 58,116,232,240,183, 86, 8, 18,137,100,248,150, 45, 91, 92,183,109, +219,150,125,248,240,225,130, 54,109,218,200, 87,175, 94,237,180,118,237, 90, 71,141, 70,131,201,147, 39,167, 94,185,114, 69,221, +175, 95, 63,243,205,155, 55,187,214,175, 95,191, 59,128,149, 21,220, 79,115, 0, 67, 0,188,221,185,149, 53,151,157,167,130,160, +215,224,209,147,199,200,201,215, 64,224,181,136,139, 79, 68,126, 17,143,140,204, 60, 4, 55,235,241,245,217,179,103,103, 19, 66, +102, 81, 74,143, 87,151,206, 59,119,238,224,202,149, 43,120,242,228, 9, 30, 61,122,244,220,185, 49, 99,198, 96,231,206,157, 38, + 91,180, 42, 22, 89, 44,136,186, 30,142, 31,190,154,157, 26,147,244,202,136,172,146, 58,104,158,171,171,235, 60, 87, 87, 87,197, +201,147, 39,173,235,212,169, 3,189, 94,175, 41,111,201,234,220,185,243,156, 45, 91,182,184,214,171, 87,111, 34,128, 53,255,132, +180, 51, 12,198, 44,219, 16,230, 96, 41,139, 75,196,131,149, 37,177, 4, 89,160, 48, 23, 56,187, 11, 92,251,185,143, 39,246,155, +110, 59, 99,219,194, 49,168, 98,134,108,236,195,103,216,176, 97, 45,166, 76, 30,137,239,190, 89, 6, 65,224,160,214,177,240,242, +105, 3,181, 86, 0, 97, 56, 52,105,214, 2,103,206, 94,128,132, 1,246,111,219,240, 74,153,178, 40,165,153,132,144,245,135, 15, + 31,254, 96,210,164, 73, 16, 4, 65, 54,127,195, 6, 85, 90, 90,218, 98,152, 16,255,170, 2,158,254, 27, 54,108,136,158,177, 54, +237,135, 41,195,193, 62, 57, 70, 50,111,220,135,221,192,233, 20, 7,150, 18, 52,247, 71,166,178,226, 38,254,124,185,253,171, 33, +180, 74,149,164,225,190, 34, 52,247,171,247,153,181,157,237,187,173,130,253, 28,166, 77,122,159,123,152, 92,132,131,117,222,202, +255,117,199, 87,230,201,122,249,215, 49, 84,181,218,148, 63,222,251,235,175,101,159,151,239,222, 93,225,185,164,129, 3,141,238, +153, 85,102,197, 50,213,146, 5, 0, 74,165,210,166,123,247,238,232,218,181, 43, 6, 12, 24, 80, 54, 38,171,105,211,166,216,179, +103, 15, 66, 67, 67,113,235,214, 45,184,186,186,162, 97,195,134,104,216,176, 33,126,252,241, 71, 83, 31,112,240, 60,143,160,160, +160,210, 89,135,193,241,241,241, 86, 53, 45, 72,181, 90,141,140,140, 12,216,217,217, 65, 38,147,161,117,235, 86,248,224,195,214, +112,112,253, 22, 65, 1,254, 40, 40, 40, 40,155,254,110, 68, 99, 27,212,160, 65, 3,164,165,165, 33, 45, 45, 13,142,142,142,112, +115,115,131,139,139, 11, 86,174, 92, 73,215,172, 89,243,179, 86,171, 93,159,150,150,102,178, 37,203,213,213,181,163,157,157,221, + 28,149, 74, 37, 51,232,225,202, 28, 29, 29,143,184,185,185, 45, 78, 76, 76, 52,101,141, 77,104,181, 90, 16, 66, 16,254,200, 13, + 5, 26,130,220,248, 27,152,244, 63,239,231,132,151, 68, 34, 49,102, 64,111,193,208,161, 67,157, 60, 61, 61,240, 44,246, 14, 14, + 28,160,248,242,203, 47, 75,103, 69, 34,186,164, 99, 80,122,220,165, 75, 23,248,248,248,192,148, 32,153,130, 32,224,246,237,219, +216,125,228, 28, 92,189, 3, 16,247,224, 30,110,254,120, 12,117, 28,237,208,168, 89, 11,232,116,186, 90,133,222,120, 25,208,233, +116, 91,125,125,125,169, 70,163, 57, 7, 96,109, 68, 68,196,200,164,164,164,201, 71,143, 30,117, 27, 52,104, 80,226,177, 99,199, + 86, 3,216, 22, 17, 17, 17,246,249,231,159,119,213,235,245, 21,206, 22,100, 89,246,187,143, 62,250,168,243,160, 65,131,136,148, +209,105, 78,158,216,206,233,245, 58,242,201,172,173,252,217,139,231, 24,189, 94, 71, 6, 12,253, 72,248,241,215, 8,102,220,135, +203,249,166,109, 66, 16, 25, 25,233,210,187,119,239,207, 1, 84, 41,180, 74, 45, 85,149, 89, 40, 89,150,197,200,145, 35,177,103, +207, 30,163,243, 61, 26,168,103,229,109,113,101,209,186,110, 22,132,203, 55, 16, 89,245,113,252,240,213,236,148, 7,137,175,148, +200, 2,128,244,244,244, 77, 0, 54,217,217,217,165,152,155,155, 35, 47, 47,239,133,231,143, 16,162,240,247,247, 87,200,100, 50, +244,232,209,195,206,213,213, 53,154, 97,152, 53, 9, 9, 9,149, 42,142,138,220,132, 21,185, 19,107, 51,235,208,214, 17,189, 91, +119,108,102,121,223,122,161,165,130, 43,186, 85, 39, 90, 97, 69, 0,228,168,157, 31, 93,126, 58, 36,151,164,202,155,182,232,210, + 28, 86,156,121,239,202,132, 22,195,178, 55,115,178,178,123,229,230,105,112,241, 82, 36,134, 14,105, 0,181,150, 64, 16, 24,228, + 23,168, 1, 86, 2, 6,192,176,183, 70,128, 18, 14,153, 41,137, 96, 89, 54, 2,175, 30,102,134,133,133,245,154, 53,107, 86,221, +146,248, 87,222, 37,241,175,166, 17, 66, 26,211,106,130,143, 87,193, 83,231,216,158,185, 83,143, 92,216,152, 19,210, 78,245,160, +185, 63, 0,192,174,185, 63, 50, 37, 18,196,112, 44, 50, 40,133,170,156, 85,171,147,225,254, 95,102, 29,124,110, 16,188,225,177, + 81, 99,180,124,235,121,188,209,169,101,139, 15,103,207,154,109,121,247,242, 89,204,248,108, 45,245,109,209, 61,111,211,133,155, +154,124,115,159, 94,121,105, 15, 46, 25,171, 47, 0,224,141,215, 67, 17, 28,216,234,133,147, 29,186, 20,199,146,188,120,230,119, +164,164, 37, 24,221,216,150,136,131, 10,199,100, 25, 51,165,191, 2,211,119,118,100,100,164, 83,124,124,252,115, 3,223,125,124, +124, 64, 8,193,213,171, 87,113,229,202, 21, 12, 29, 58, 20, 28,199, 65, 34,145,224,220,185,115, 38, 89, 99, 12,172, 75,183, 41, +165,157, 8, 33, 61, 61, 60, 60, 42,156,109,104, 12,151, 74,165, 66, 78, 78, 14, 78,156, 56,129, 6, 13, 26, 96,209,162, 69,112, +115,117,198,236,217, 83, 33, 8, 2,114,115,115,193,243,188,177, 22, 45,161,212, 90, 36, 8, 2,210,210,210, 80,183,110, 93,172, + 91,183, 14,171, 87,175,254, 60, 49, 49,241,168,169,105,244,242,242,178,225,121,254,147, 62,125,250,116,239,215,175, 31,122,246, +236,249,220,249, 93,187,118, 89, 30, 60,120,112,177,167,167,231, 27, 90,173,118, 73, 74, 74, 74,154, 49,188,223,126, 91, 28,126, + 73,217,102, 30,102, 12,170,131,183,199,111,199,202,149,135, 32,151,203,159,107,120, 23, 46, 92, 88,165,136, 17, 40,245,149,166, + 95, 78,156, 58,125,133,211,226,197,167,113,250,116, 42, 24,134,129,171,171, 43, 24,134,193,227,199,143,193, 48, 12,188,189,189, +193, 48, 12, 18, 18, 18, 74,199, 4,102,161,200,184, 88,134, 12,195,160,168,168, 8,207,226,158, 32, 62, 54, 26, 22,185,201,112, +180, 82, 34,235,206,109, 4,143, 30, 83, 22,255,233,111,238,225,238, 4,176,211,224,171, 21,132, 16, 13, 33,100, 0,128, 31, 40, +165,165, 22,141,207, 75,182, 10,209,166, 77,155,166,179,102,205,146,148,134,219,112,243,250, 66,175,213,106, 5, 0,240, 15,126, +237, 57,181, 31, 19, 19,131,149, 43, 87,162,160,160, 0, 82, 99, 2,221,149,136,214,210, 25,134, 21,137, 48, 83, 68, 22, 0,216, +123,123,124,125,245,198, 57,254,143,216,141,170,136,251, 63,153, 37,197, 49, 96, 52,175,174,200, 42,111,217,242,240,240,152, 39, + 8, 2,165,148,206, 53,168, 91,229, 94, 94, 94, 23, 78,158, 60,105,175,215,235,241,213, 87, 95,217, 36, 39, 39,219,188,246,218, +107, 51, 0, 84, 42,180, 42,114, 19, 86,228, 78,132,193,172, 67,185, 92,110, 87, 85,245, 81,126,214, 33,207,195,207,202,210, 6, + 89,136,135,218, 65,215, 52,219, 94,159,121, 42,105,204, 45,183,167,205, 2,205,121, 93, 93, 38, 87, 3,119,165, 13, 4, 74,253, + 42,237,156,234,116, 63,221,186,113,179,135,151,103, 3,246,232,241,243,232,219,127, 16,212,106, 6, 69, 58, 2,194, 74, 64, 88, + 41, 26, 7, 55, 67,195, 70,193,160, 0,126,191,118, 89,175,209,233, 78,189, 74,101,239,214,225,195,161,110, 29, 62, 88, 3, 42, +208, 10,226,104,213,237,223,191,255, 98, 0, 31, 86,199,227,220,246,195,161, 46,237,138,121, 12,227,104,125,244, 65, 24,238, 92, +147, 88,159,191,177, 84,218,179, 13,194,211, 78, 19, 40, 21,255, 63,235, 80,194,212, 60, 52,199,191, 69,112, 25, 37,180,188,188, +188,108,156, 44,148,223, 78, 24,253,174,229,211, 63,126, 67,114,212, 85, 92, 58, 31,157,181,247,224,161,204,130,140,212,209, 38, +136,172, 50, 55,159,189, 75, 29,248, 4,188, 40,180, 20, 22,142, 0, 0,159,128, 86, 96,205, 77, 11, 35, 84,145, 53,171, 38, 34, +203,176,194,174, 40,134,214,184,113,227,176,101,203, 22,180,111,223, 30,190,190,190,101,149,189,169, 86,179,242,214,165,154,204, + 54, 52, 68, 94, 94, 30,188,189,189,177,121,243,102, 68, 68, 68,192,210,210, 18, 67,135, 14, 69, 94, 94, 94,153,192, 50,118, 48, + 60,165, 52,230,228,201,147, 45, 7, 15, 30, 76, 37, 18, 9,201,206,206,134,141,141, 13,214,173, 91, 87,144,148,148, 20, 94, 3, +145, 53, 72, 42,149, 78, 29, 50,100, 8,235,239,239,143,148,148, 20, 88, 89, 89,233, 8, 33, 18, 0,176,177,177,209,153,153,153, + 33, 44, 44, 12, 77,154, 52,233, 56,109,218,180,246,238,238,238,235, 18, 18, 18,182, 87,245, 44, 17, 66,202, 26,212,209,107,238, + 65,163, 41, 22, 42,235,215,175, 71,201, 88,183,255,119, 17,196,198, 2, 70,204,100,177,176,176,128,175,175,111,133,101,223,177, + 99, 71,252,254,251,239,197,174, 73,142,131,147,147, 19, 46, 93,186,100,212, 76,170,210, 64,144,145,145,145, 8,240,113, 64,196, +233,147,112, 80, 74,208,196,205, 5, 30, 29, 59, 33, 58, 58,250,111,179,102,149,196,166,122, 31, 64,183,146,103,112, 43,128,113, + 6,199,235, 40,165, 95,155,194,169,215,235, 41,195, 48,228,217,179,103, 90,165, 82, 73,236,236,236, 56,185, 92, 14,181, 90, 93, + 38,184, 98, 98, 98,112,252,248,113,196,199,199,195,206,206,142,177,182,182,134, 86,171,205, 50,134,223,207,207, 15, 46, 46, 46, +207, 13,124, 31, 61,122,116,141, 68,214, 72, 32,104,203, 23, 75,234,200, 25,214, 58,192,225, 13, 60,186,247,184,136,209, 64,241, + 95, 16, 89, 0,144,149,149,181, 9,192,166,210, 99, 71, 71,199, 81, 44,203,206,182,182,182,182, 62,119,238,156,141,163,163, 35, +217,190,125,187,110,238,220,185,217, 44,203,102, 17, 66, 86,253,253,226, 16, 81,233, 57,177,222, 18, 91, 55,225,143, 34,122,121, +242,179, 25, 13,179, 36, 13, 28, 73,163, 32,244, 79,189,123,113,148, 62,182, 93, 74, 82, 50, 67, 33, 68, 85, 81, 7,111,157, 49, +107,225, 39,209,247,110,122, 41,172, 20, 24, 23, 54, 11,225, 63,159, 1, 97, 36,184,112,249, 42, 52, 90, 30,233,153, 57, 24, 50, +108, 56, 60, 92, 29, 16,117,229, 68,154, 94, 16,214,189, 90, 34, 91, 88,219,163,239, 40, 91,185,153,178,228,158,240,216,249,205, + 84, 48,204, 26,124,250,233,167, 8, 10, 10, 26, 79, 8, 89, 80, 93, 28, 45, 66,132,181,141, 59, 13,179,149,202,139,121,168,192, + 99,243,254, 25, 37,113,180,166, 96,221,166,131,141, 27,249, 60,154, 95, 85, 28,173, 87, 69,100, 25,238,171, 21, 90,117,234,212, +145,155, 75, 48,214,206, 76, 58,109,194, 91,253, 28, 83, 99,239, 32,254,238,205, 98,247,130, 86,165, 77,138,142,242, 53,226, 79, +187,149,139,223, 65,171,114, 93, 21, 21,233, 96, 42,103,105,131, 91,222,154,101,138,200,170,136,211, 80,108, 25,198,205,242,244, +244,196,226,197,139,171,141,163, 85, 65,222, 75,191,239, 9, 32,184, 84,108,161,120, 48,124, 79, 99,102, 26, 86,198,233,232,232, +136,140,140,226, 8, 9,157, 59,119, 70,231,206,255, 63,159, 65,171,213,150, 89,177, 44, 45, 45, 95,176,104, 85,196,105,102,102, + 54,227,208,161, 67,239, 94,190,124,121,240,199, 31,127, 44,233,218,181,107,169,152, 43,164, 70,172,237, 86,158,147,231,249,176, + 19, 39, 78,176,130, 32, 96,243,230,205,248,253,247,223,169, 82,169,156,163, 84, 42,215,154,153,153,241, 42,149,106,220,152, 49, + 99,134,207,159, 63,159,233,216,177, 35,126,251,237, 55,166,110,221,186, 35, 0,108,175, 46,239, 87,175, 94, 5,195, 48,208,103, +198, 97,252,140,189, 48, 55,227,112,239,222, 61,100,102,102,190, 16,196,212,152,251,105,104, 41, 41,221, 58,118,236, 88,230,134, +108,221,186, 53, 88,150,197,173, 91,183, 42,116,195,150,227,164,246,246,246,101,207,135, 84, 42,197,153, 51,103,240,217,103,159, +193,203,206, 6, 89,119, 35,224,210,249,117,116,127,119, 12,134, 14, 29, 10,150,101, 97,103,103, 87,102,249,173, 46,239,181,172, + 16, 12, 57,223, 13, 8, 8, 24, 17, 21, 21,229,209,184,113, 99,215,200,200,200, 46, 65, 65, 65,222, 17, 17, 17,165,199,114, 24, + 49, 54,199,144,243,250,245,235, 7,214,174, 93, 27, 54,114,228, 72,169, 32, 8,252,211,167, 79,117, 0,136,139,139, 11,123,253, +250,117,225,232,209,163, 80,169, 84,240,240,240, 96,220,221,221,201,169, 83,167,132,187,119,239, 94,165,148,206, 50, 38,239, 60, +207, 63, 23,198,161,244,243,174, 93,187, 76,126,223,235, 52,244, 91,212,245, 53,127,207,244,196, 91, 72, 74,136, 5,159,227,168, + 61,126,248,152,218, 20,145,245, 23,148,209, 95,201,185,240,193,131, 7,238,106,181, 26, 50,153, 12,235,215,175,215, 46, 94,188, + 56, 42, 61, 61,189, 3,173, 96, 70,121,121,206, 26,206, 58,204,172,130,243,133, 89,135, 57, 25, 8, 63,124,228,122, 75,139,254, + 91, 49, 62, 49,173,108, 96, 35, 37,196,238,144,115, 96, 7,101,171,198, 9,204,143,243,152, 60,190, 48,188,178,116, 82, 74, 53, +132,144, 65,253, 67,135,253,178,103,207,110,139,185,243,230,225,210,213, 8,100,100,231, 67,160, 44, 4, 66, 48,123,246, 92,184, + 56,216, 33, 55,241, 65,161, 90,171,237, 95,126, 41,158,127,123,185, 19,194, 76, 60,117,116,251, 26,134, 64, 40, 72,185, 47,103, +243, 98,149,111, 15,237,207, 13, 26, 52, 8,135, 14, 29, 66,100,100,228,198,202, 68,150, 33, 39,165,204,196,136,115,123,215, 16, + 64, 80,165,221,151,115,249,143,148, 35,222,234,207, 13, 29, 58, 20, 63, 28,191,140, 61,199, 30,109,216,125,148, 30,123,149, 59, + 44, 53,138, 12,111,201, 33,178, 67, 96, 61,247,142,205, 26, 41, 56, 94,133,248,187,177,200, 44, 40,194,169, 59, 79,179, 25,202, +212, 56,182, 78,113, 5, 41, 69, 92,220,131, 23,206,101,103, 43, 74, 26,116,211,150,149, 98, 24,230, 57,107, 86,109, 44, 89,134, +233,116,118,118,126,110, 57, 23,195,134,187,116, 12, 80, 13, 66, 59,204,136,139,139,179,138,139,139, 3,165, 20, 87,175, 94,181, +106,221,186,245,140,218, 88,179,166, 78,157, 90,102,181, 42,191,175,232,187,234, 80, 50, 40,125,181,131,131,195,254,105,211,166, +141,111,221,186,117,143,121,243,230, 17, 0,108, 13, 31, 64,189, 32, 8, 56,123,246, 44, 14, 29, 58,196,107,181,218,177,137,137, +137,134, 99, 29,190,114,115,115, 59, 21, 26, 26,186,253,254,253,251,108, 84, 84, 20,140, 17,116, 42,149, 10,190,190,190,208,235, +245, 88, 58,222, 19,121,121,141,161,215,235,193,243, 60,204,205,205,159, 91,231,210,152,114, 98, 24, 6, 60,207,191, 32,180,174, + 94,189, 10,150,101,209,161, 67, 7,220,188,121,179,204,162, 85,157, 5, 74,171,213,198, 57, 59, 59, 59, 47, 92,184,176, 44, 93, +105,105,105, 56,121,242, 36,218,180,109,135,192,177,227,144,152,152,136, 85,171, 86,193,205,205, 13,139, 22, 45, 66,102,102, 38, +244,122,253, 95,109, 78,239, 21, 21, 21,229,241,214, 91,111,165, 70, 68, 68,120, 28, 63,126,220,166,119,239,222,230,195,134, 13, + 75,141,136,136,240, 32,132,180,131,137,131,160,121,158,159, 73, 8,249,121,209,162, 69, 51, 62,252,240,195,214, 35, 71,142,148, + 72, 36, 18, 33, 33, 33, 65,191,123,247,110,226,235,235,203, 72,165, 82,114,226,196, 9,225,218,181,107, 87,244,122,253, 82, 74, +233, 5, 83, 44,206,134, 34,139,101, 89,163, 68, 86,121, 76,118,146,143,176,100,210, 58,172, 93,191,152,241,247,241,208,238,216, +125,242,217,133,223, 30, 60,100,213,250,201,223, 2, 15,241, 31, 4,203,178,251, 2, 2, 2, 70, 77,156, 56,209,172,103,207,158, +242,249,243,231,231,228,229,229, 85, 40,178, 42,121, 47,255,244, 89,135, 0,190,153,249,241,241,201, 31, 53, 30, 85,239, 61,151, + 58, 56, 93,144,138, 44,142,101,172,108, 24, 52,243,102,145,151, 30,227,120,236,151,109,143, 81, 77, 92, 54, 74,233,117, 66, 72, +183, 70,141,155, 30, 92,186,104,169,211,156,233,211, 36, 7,143,255, 4,170,215,226,234,185,115,176,144,242,244,238,141,211, 41, +106,173,166,223,171,184, 4, 79,226,197,175,246, 16, 66,142,216,217,217,253,241,238,200,145,190, 1, 1,195,160, 84, 42,113,224, +192, 1,236,252,234, 43,126, 53, 48,120, 19, 33, 55,199, 21,199,212,171, 20, 41,191,149,241,220, 26,243,238,187,126,205,154,189, + 7,165, 82,137,253,251,247, 99,251,234,213, 70,243,252,203,173, 89,165,145,225,195, 75,246, 70,196,209, 98, 72,222,149, 7, 79, +243,175, 62,120,154, 15,129, 82,129, 82, 53,195,224, 89,129, 86,187, 40,250, 97,252,137, 26, 38, 4,130, 32,224,243, 47, 38,190, +204,204,149,137,159,154, 78,233,174,160,145,136, 55, 92, 35,173,186, 5,165, 1, 64,167,211,197, 27, 73,191,196,203,235,133, 53, + 80,151,212, 52,173,165,238, 64, 99, 69,150,177,113,180, 0, 32, 61, 61, 61, 9,192, 28, 87, 87,215, 93, 61,122,244, 24, 3, 32, +161,134,101,180,185, 83,167, 78, 99, 1,176,132,144,141, 9, 9, 9, 47, 12, 40, 77, 76, 76,140,118,119,119, 95,238,227,227, 83, +182,208,116, 85,156,130, 32, 60,106,220,184,177,182,162,178,168,236, 88, 16,132,106,203, 40, 59, 59, 27,173, 90,181,122, 97, 77, + 75, 74, 41,158, 62,125, 90,106,113, 42,187,247, 85, 9,184,252,252,252,113, 31,124,240,193, 38,137, 68,226, 5,128,148,138, 92, +158,231,217,175,191,254, 90,193,243, 60, 11,128, 48, 12,163,151, 72, 36, 69,135, 14, 29,210,235,245,250, 56,181, 90, 61,238, 47, +174, 35,246,147,226,165, 24, 10,162,162,162,252, 75, 44, 89,241,145,145,145,183,246,236,217,227, 8, 96,111, 13,159,205, 11, 0, + 46, 16, 66, 58,174, 95,191,126,230,184,113,227, 90, 13, 29, 58,148,235,220,185, 51,194,195,195,249,179,103,207, 94, 85,169, 84, + 75, 76, 17, 88, 37,101,153,227,233,233, 89, 38,184,170,121,151,171, 28,200,107,239, 45, 95, 59,252,125, 55,197,230, 37, 39,243, +211, 19, 53,151,117,249,154, 89,219,128, 72,252,135,145,156,156,252, 49, 33,100,238,170, 85,171, 18,155, 52,105, 34,151, 74,165, + 26, 99, 69,214, 95,104, 61,208, 19, 66,222,252,178,251,192, 35,157,102,127,224,211,189, 75, 7,165,103, 29, 39,247,187,177, 41, +136,249, 45,188,224,143, 99, 95, 60,161,234,172,190,148, 82,189, 17, 92,215, 8, 33, 13,166, 78,155, 90,186,168,116,112,215, 83, +135,233,127,104, 81,233,207,151, 47, 95,238, 27, 16, 16,128, 3, 7, 14,224,212,247,223, 99, 72,122, 58,206,176, 44,203, 72,165, +246,199,180,218, 21, 48, 46,112,241,231, 43, 87,174,244, 11, 10, 10,194,190,125,251,112, 98,251,118, 12,174, 25, 79,101,104, 9, +192,177,180,121, 2,112, 31, 64,115, 0,102, 0,212, 40, 94,218,201,193,224,247, 25, 37,231, 74,207,159, 7,240,103, 14,132,173, + 62, 50,124,121, 68, 60,120,220,252,101,167, 66,165, 82,101,250,250,250,154, 52,231, 90,167,211, 85,233,195,213,235,245,241,245, +234,213, 51,218,106, 97,140, 40,202,200,200,104,241, 39, 86, 16,181, 26,139,245, 92, 35, 34, 8, 79, 92, 93, 93,133,210, 70,191, + 34, 17, 86,209,119, 20,120,108,202,255, 36, 37, 37,221, 7,240, 81, 77,211,153,144,144,112, 16, 70, 44, 26,109,236,239, 0, 32, + 51, 51,243,165, 47,230, 75, 40, 77,152, 63,127,190, 73, 2, 27,148, 38, 84, 81,214, 17, 0, 90,255,211,107,217,210,165,119, 8, + 33, 76,100,100,228,152, 18,247,246,105, 0, 27, 75, 34,122,215,150,191, 76,112,109,222,188,121, 50,165, 20,185,185,185,171, 77, + 21, 88,101,189,231,148,148,240,151,149,247,204, 20,205,175,187, 55,198,191,174,202,214, 78,222,146,175,217, 14, 17,165,101, 86, +228,228,228,244,221,219,111,191,221, 6,192,182,218,242, 85,228, 78,124, 9,105,124, 76, 8,105,114,102,234,103,239,158,177,177, + 12, 1,207,249, 67,195, 28,131, 38, 35, 28,192,183,198, 88,197, 13,243,139,226, 48, 37, 43,255, 75,229, 92, 18,255,106,242,168, + 81,163, 48,119,238, 92,156, 88,177, 66,251, 62, 33, 57, 18,128,254, 92,220,209,100, 8, 48,221, 88,158, 17, 35, 70, 96,238,220, +185,248,113,233,210, 26,241, 84, 3, 71, 66,200,113, 0,152, 49, 99,198,172,197,139, 23,219,206,156, 57, 51,120,201,146, 37,139, + 74,142,239,148,158, 47, 41,211,222, 51,103,206,108,100,112, 62, 15,192,245, 63,249,126, 86, 24, 25,254,185, 30,251,203,222, 0, +116, 19, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,172,229, 22, 82, 44, 89, 42,223, 87,246,217,224, 59,252, 29, 27, 39, +246,221, 68,136, 16, 33, 66,132, 8, 17,255, 82,171,220,241,218,156,127,137,233, 40, 29,163,101,104, 41,221, 12, 20, 79,119,239, + 86,137, 41,213,148,192,145,221,106, 96,246, 61, 45,114,138,156, 34,167,200, 41,114,138,156, 34,231,127,139,179, 58,238, 74,174, + 15, 33,132, 28,167,148,246,174,108, 95, 42,172,202,127, 54,248,238,165, 13, 59,168, 32, 47, 99, 43, 27,163, 37,186, 14, 69, 78, +145, 83,228, 20, 57, 69, 78,145, 83,228,252, 87,184, 14, 1,208, 25, 51,102,204,252,167,185, 14, 1,184, 2, 24,107,184, 25,225, + 58, 60,192, 38, 36,192, 74, 38, 83, 74, 1, 64,163, 41,212,186,187, 35, 23, 24,248,183, 45,120, 43,226, 95,107,218,117, 46, 17, +245, 41, 47,243,183, 34, 68,136, 16, 33,226, 63,131,180, 82, 75, 21,128, 52, 0,164,228, 88, 83,178, 79, 43,105, 59,202,127,126, +238,252,159, 5, 74,105, 18,128, 10,103,203,115,149,137,172,244,116,165, 3,199,101,249,241,124, 81, 67, 0,224, 56,230, 94,122, +186,109,180,131,195,129,244,154,136, 45, 71,103,231, 27, 18,150,117, 55,230,183, 58,158, 79, 72, 79, 73,121, 46,116, 60, 5,254, +245, 2,207, 88, 17, 81, 27,177,241, 87, 8, 21, 71, 71, 71,103,103,103,231,255, 89, 89, 89,181,205,206,206,190,150,150,150,246, + 67,101,235, 30, 18, 66, 22, 19,130,105, 37,159,151, 81, 74,103, 86,145,118,163,127, 91,193,181,190, 74,165,114, 60, 33, 36,168, + 36,255,145,133,133,133,235, 41,165, 15,254,131,194,214, 12, 64, 63,142,227, 70, 56, 56, 56,180, 74, 78, 78,158, 79, 41, 93, 85, + 67, 46, 14,192, 84, 27, 27,155,161, 54, 54, 54,117, 51, 51, 51, 31,230,230,230,238, 3,176,146, 82, 90,237, 84,233, 5,147,220, +218,118,238,217,121,206,217, 19,103, 63,159,183, 38,241,183, 23,206,127,236,102,223,163,123,251,185,103,143, 93, 94, 56,115,109, + 66,166,137,105, 99, 0,148, 6,205, 19, 74,122,173,244, 37,223, 75, 9,128, 62, 0, 58, 3, 56, 11,224,152, 49,249,174,132,171, + 13,128, 89, 37,105, 94, 73, 41, 61,243, 15,127,142,204,157,157,157,151, 2,232,195,113, 92, 84, 66, 66,194, 88, 74,105,252,223, +156, 38, 14,197,211,252,131, 80, 28,134,227,186, 49, 33, 28,140,129,131,131, 67,111,142,227,198,151,132,118, 89,159,158,158,126, +252,159, 90, 54,114,185,124,181,139,139,203,123, 42,149,170,144, 16, 66, 13,227, 61,234,245,250,248,180,180,180, 22,175, 96,213, +118,253, 31,254,190,140,173, 64,124, 85, 30, 71, 43, 33, 1, 86, 28,151,229,151,154, 28, 49, 36, 49,233,246, 96, 0,112,115, 13, +222,231,228,210,120,111, 66,130, 76,219,178,123,168,133, 68,201,173,103, 89, 73,211, 34,141,218, 65,194, 73,210,181,122,221, 45, + 70, 67,199, 39,221, 59, 84, 97,176, 69, 9,203,186, 63,137, 62,227,164,215,102, 66,162,112,131,196,204,171,210, 4,187,185,185, +213, 40,163,118,118,245, 45,181,114,197,100,137,132,237, 46, 80,125, 16, 21, 0,134, 72, 34,245,188,238, 23,169, 90,253,101,102, +102,108, 94, 77,111, 98, 67, 7,226, 66,129,161, 32,232, 14,138, 83, 4,216,115, 47,157, 38,155, 80, 8, 70,137,136, 90,138, 13, +195,107, 87, 81, 74, 63,126,217, 15,147,135,135,135,237,128, 1, 3, 86,127,246,217,103,102, 22, 22, 22, 36, 46, 46,174,231,244, +233,211, 95,243,240,240,248, 40, 62, 62, 62,177,188,232, 35, 4,211, 4,129, 50, 0,192, 48,100,186,179,179,179,146,101,217, 23, + 98, 27,241, 60,175, 36, 4, 19, 5,129,146,146,223, 78, 35,132,172, 49, 70, 48,154,153,153, 13,107,213,186,221, 71, 75,151,175, +180,112,118,114, 50,215,243,130,246,241,211, 39,202, 57, 51, 62,110,109,102,102,182, 70,165, 82,237,174,193, 75, 67, 88,150, 29, + 34,151,203,123, 3, 8, 40,249,250,174, 90,173, 62,206,243,252, 94, 99, 27,116, 23, 23,151,243, 44,203,214, 49,229,191,121,158, +143, 75, 78, 78,238, 80,195,151,125,144,151,151,215,183,157, 58,117, 82,182,106,213, 10, 50,153, 12,115,231,206,157, 10, 96,149, + 49,130, 74,169, 84, 14, 49, 55, 55,175,151,159,159, 31,171, 82,169, 14,202,100,178,110,107,214,172,241,108,223,190,189,101, 74, + 74, 10, 97, 89,214,249,248,241,227,239,124,245,213, 87, 61, 9, 33, 93,171,107,228,114, 98,233, 28,121,159,128,142, 57,177,103, +230, 0,232, 85,254,188,190, 72, 49,130,178,158,189, 85,244,230, 51,152, 48,181,158, 16,194, 72, 36,146, 53, 46, 46, 46,163,138, +138,138,138, 80, 28,123,141, 58, 59, 59,151, 53, 56, 0,160,209,104,178,178,178,178,252,107,112, 31,253, 1,140,182,177,177, 25, +245,201, 39,159,216,246,234,213, 11,223,127,255,253,132, 45, 91,182,100, 17, 66,190, 3,240, 13,165,244,190,137,180,211,146,147, +147,223,148, 72, 36,196,211,211,147, 5,112,198,132,244,248, 1,152, 93,210,216,172,167,148,242,132,144, 46, 64,241,251, 14, 96, + 89,169,112, 99, 89,118,189,191,191,255,255,238,222,189,187,129, 82,250,121, 77,223,117, 23, 23,151, 77,235,214,173, 27,220,183, +111, 95, 54, 45, 45,205,189, 73,147, 38,187, 0,116,124, 9, 13,210,187,114,185,124, 74,112,112,112,224,253,251,247,163,115,115, +115, 87,150,220, 79, 90,197, 53, 30, 0,186,217,216,216,116,157, 61,123,182, 69,239,222,189,177,121,243,230, 55,183,108,217,146, + 79, 8,249, 5,192,233,218,138, 64,142,227,198,199,199,199, 59, 80, 74,225,234,234, 58, 30,213, 44,110,254,119,129,101,217, 53, + 67,134, 12, 25,181,107,215, 46,229,147, 39, 79,148,238,238,238,101,193,179, 9, 33, 53,110, 63, 69,212,218,162,181,185, 84,112, + 25, 21, 71, 75, 38, 83, 74,121,190,168, 97, 98,210,237,193,175,117,250,218, 26, 0,206,159,251, 96,176,147, 75,163, 72,153, 76, + 25, 45,183, 82, 28, 10,237,211,173,233,192,222,157,136,135,171, 19,226,147, 82,157,191,217,115,226,141,227, 39,206, 28, 66,113, + 0,177, 10,161,215,102,194, 76,123, 26,247, 47,126, 5,135,206,137, 88,251, 99, 60,126,251,227, 49, 10,115,210, 81,199,197, 12, +203, 39,247,128,139,173,178, 70,153,180,112,246,235,194, 40,148,123,223, 26,246,182,245,255,250, 5, 72,188, 93, 92, 64,169, 28, +209,177,249,237,126, 58,121,166,229,193,253,187,199, 91, 56,251, 13,201, 79,137, 54,186,114,107,238, 70,204, 10,180,232,199,177, +228,157,142,173, 27,117, 29,246,102, 71, 38, 48,160, 1,162,238,220,237,113,228,215,171,203, 3,157,153, 95,244, 60,221, 97, 46, +197,225, 27,137,149, 7,244,171, 72,112,116,239,222,189,163, 92, 46,215, 26,254, 78,173, 86, 75, 9, 65,155,154,136,141,210,255, +208,104,212,140, 68, 34, 3,195,144,143,130,131,131, 3,210,211,211,207, 16, 66,190, 77, 72, 48,205, 90,240, 33, 33,178, 44,142, +107,206,200,229,174,188, 70, 99, 15, 0, 68, 38,203,242,176,181,109, 60,123,214, 44, 11,150,101,133,140,140, 12, 20, 22, 22,146, + 49, 99,198, 40, 98, 99, 99, 67, 1,124, 85, 77, 26,177,101,203, 22, 63, 87, 87, 87, 77,249,115, 73, 73, 73,178,190,125,255, 87, +147, 74,219,175, 77,219,246, 83, 78,156,248, 57, 32, 55, 51,171,104,203,170, 77, 55,116, 10,165,186,110,128,191,100,253,230,237, +214, 99, 71, 13,255,128, 16,114,139, 82, 26,109, 2,167,151,153,153,217,161, 21, 43, 86, 4,117,233,210, 69,226,228,228,132,148, +148, 20,220,189,123, 55,232,215, 95,127,237,183,125,251,246,169,132,144, 80, 74,169, 49, 17,220,125,127,217,241,173,147,185,157, + 61,120,157, 14,110,193,205,202,226,155,197,252,122, 18,122,173, 22,130, 78,135,128,222,253,138,205, 50,130,128,192,192,192, 26, + 69,221, 37,132,184, 53,106,212,104,231,162, 69,139,164,106,181, 26, 87,175, 94,197,153, 51,103,132,164,164,164, 37,213,137, 44, + 66,200,201,121,243,230,121,116,232,208,193, 50, 61, 61, 29, 60,207, 59, 28, 62,124,120,124,179,102,205,172, 60, 61, 61,101, 59, +118,236, 64,126,126, 62,244,122,189, 93,189,122,245,236,134, 13, 27,166,217,177, 99,199, 84, 0, 75, 43,179,100,229,198,210, 57, +201,164,222, 27,254,205, 71, 32,153,252,252,198, 71,189, 92,127,178,170, 79,202, 44, 91,189,234,215,183,172,215,208,124,186,133, + 85, 99,187,220,132,211,211,123,213,175,191,229,167,216,234, 59, 67,132, 16,134, 97,152, 53,161,161,161,111,237,217,179, 71,121, +247,238, 93,101, 64, 64, 0, 4, 65, 40,139,192, 95, 26,112,214,215,215,183, 38,247,113, 73, 88, 88,216,244,193,131, 7, 35, 56, + 56,184, 44, 40,234,167,159,126,138,233,211,167,219,158, 63,127,126,234,238,221,187,167, 18, 66,150, 82, 74,103,152,210,150, 27, +182,151, 38, 38,107,193,163, 71,143, 6, 29, 58,116,104,248,180,105,211,124, 1, 76, 4, 48, 55, 35, 35,163, 19, 0,216,219,219, +203, 0,156, 33,132,188,251,201, 39,159,188, 63, 99,198, 12,188,249,230,155,115, 9, 33, 95,212,196,202, 71, 8, 97, 29, 28, 28, +222,236,219,183, 47,171,211,233, 96,110,110, 14,157, 78, 87,191,150, 2,139, 0, 88, 55,110,220,184,247,195,194,194, 96,107,107, + 11,157, 78,231,183,103,207,158, 45,115,231,206,109, 75, 8, 25, 93, 81, 90, 9, 33, 35,222,127,255,253, 1,111,191,253, 54, 90, +180,104, 1,142, 43,190,141, 43, 86,172,192,194,133, 11, 45, 78,158, 60,217,111,199,142, 29,253, 8, 33, 7, 41,165, 53,142,133, + 38, 8, 2, 56,142,195,179,103,207,224,228,228, 36,183,179,179, 59, 65, 8,217,156,145,145,241,195, 63,200,106,178,108,200,144, + 33,111,237,218,181,203, 2, 0,150, 47, 95,142, 41, 83,166,192,217,217, 25, 22, 22, 22,162,218,249,135, 88,180,202,199,209,170, + 81,120,135,194,194,194,102, 51, 63,124, 7, 12, 83,220,107,108, 80,215, 11,139,103,141, 37, 71,142,159,104, 86,213,117, 18,133, + 27,238, 95,252, 10,114,207,201, 80,235,244,184,242,199, 35,156, 90,222, 19, 0,224,215,107, 54,212,218,174,165,202,208, 78,102, +102,182, 76,195,243,151,224,226,114, 21, 79,159,166, 85, 39,178, 28, 93,156,143,111,220,184,212, 44,168,190, 63,180,122, 29, 18, + 82, 19, 64,136, 28, 30,238,150,120,119, 68, 47, 73,167, 78,110, 14, 11, 22,108, 10, 55,119,244,235, 95,144, 22, 93,109,192, 80, +127, 71,178,173, 99, 51,223,193,195, 66, 58,200, 27, 7, 53,130, 84,110,246,255, 2,172, 69, 11, 52,111,209,130,153,145,159,215, +253,218,245, 27,221, 15,156,188,162,246,119, 36,251,238,167,209,145, 85,149,131,161,224,152, 52,105, 18, 74,123,223,165, 72, 73, + 73,193,175,191,254, 82,225, 53,198,150,181,225,127,124,241,197, 23,150, 89, 89, 89,189,182,110,221,250,186,171,171,235, 23, 73, + 73, 73, 23,141, 33,121,135,144, 58,144,203,187,142, 90,185, 82,104,250,191,255,177, 54, 46, 46,140,192,243, 36,241,225, 67,251, + 85, 95,125,213, 57, 51, 38,198,172,192,206, 46, 51, 75,165, 42,140,142,142,134, 66,161, 32, 28,199,181,172, 64,225,167, 16, 66, +150, 49, 12,153, 78, 8,129, 92,174,136, 14, 11, 11,187, 89,114,186,206,177, 99,199,148,125,250,244, 41, 4,240,164,216, 28,174, +112,103, 89,198,175,120, 0, 33,150, 25, 35, 48,205,205,205, 63,252,124,209, 82,243,220,204,108,149,182,160, 64,231,104,101, 65, +136,133, 37,155, 75, 45, 88,132, 0, 0, 32, 0, 73, 68, 65, 84,155,147,151,151,144,148,166,158, 61,127, 33, 59,238,221,183, 63, + 4, 48,222, 88,145,213,164, 73,147,107,135, 14, 29,114,178,183,183, 71,118,118, 54, 50, 50, 50,112,237,218, 53, 8,130,128,208, +208, 80,121,187,214,173,154,205,154, 61,231, 55, 66, 72, 91, 99,196,150,185,157, 3,150,119,104, 90,220, 88, 63,201, 40, 43,159, +205,131,122,151,253,102, 97,124, 14, 0, 64,161, 80,212,102, 9,169,182, 93,187,118,149, 2,192,232,209,163,115,243,242,242, 22, + 3,216, 69,171, 8,170, 90,130,169,115,230,204,113,175, 91,183,174,247,174, 93,187,144,159,159, 15, 0, 78,117,235,214,133,191, +191, 63,127,246,236, 89,248,249,249,193,210,210, 18,231,207,159,199,149, 43, 87,208,188,121,115, 75,169, 84, 58,184, 50,161,213, +185,103,231, 57,242, 62, 1, 29,253,155,143,128,133,149, 43,182,236,222,139,251, 55,182,119, 84,107,239,206, 89, 60,209,253,109, + 21,149,143,244,240,181,156, 81,167, 69, 39,251, 6,141,254, 7,239,230, 55, 29,138,248, 11,143,230, 78,168,183,132, 83, 20,109, +159,183, 34, 49,163, 50,145, 5, 96,121,104,104,232,160, 61,123,246,216, 0, 64, 68, 68, 4, 82, 82, 82,224,232,232, 8,133, 66, + 1,137, 68, 82,182, 62,105, 13, 49,114,253,250,245,101,162, 77,175,215,151,173, 2,160, 84, 42,241,218,107,175,161,105,211,166, +248,225,135, 31, 70, 2,152, 81, 65, 26, 59,180,110,221,250,123,111,111,111, 79,195,239, 67, 66, 66, 48,116,232, 80, 0, 64,167, + 78,157,186, 14, 28, 56,144,150, 10,194,164,164,164,252,235,215,175,119,167,148, 94,173, 40, 65, 12,195,168, 18, 18, 18,240,201, + 39,159,224,241,227,199, 19, 8, 33, 79, 1, 40,100, 50, 89, 89,255,152, 16,226,215,168, 81,163, 53, 83,166, 76, 65,108,108, 44, +162,162,162,174,213,212,149, 74, 41,229,125,124,124, 98,116, 58, 93, 11,189, 94, 15,149, 74,133,254,253,251, 43,236,236,236, 82, + 88,150,189,151,158,158, 62,188,100, 76,138,177,141,144, 2,192,202,176,176,176,247,167, 77,155,134, 95,126,249, 5, 71,142, 28, +193,219,111,191,141,201,147, 39,195,194,194, 98,212,228,201,147,127, 67,241,130,230,229,209,117,253,250,245,224,121,254,133,119, + 67,161, 80,160, 67,135, 14, 8, 12, 12,196,145, 35, 71,186,194, 96,125, 84, 19, 27, 73,239,208,208, 80,153, 32, 8, 40, 40, 40, +192,217,179,103, 45,204,204,204, 44, 60, 60, 60,198, 0,248,199, 8, 45,111,111,239,176, 61,123,246, 88, 24,122,127,228,114, 57, + 12,158, 3, 17,127,179, 69,171,186, 30, 86, 25, 52,154, 66, 45,199, 49,247,220, 92,131,247,157, 63,247, 65,153,235, 16, 96,238, +105, 52,133, 90, 0,224, 5,138,220, 66, 61,204,228, 12,158, 36,231,225,206,195,244,138,254,248,185, 41,154, 18, 51, 47,200, 91, + 61, 1,165, 20, 26, 45, 15,117, 78, 50, 22,135, 23,226,110,124, 17, 52, 5, 89,208,104,139,135, 97, 57, 56, 56,112, 39, 78,252, + 52,229,244,233, 95,223,255,238,187,239,216,120,107,235, 40,228,228, 52,171,136,211,206,174,190, 37,103,110,182,111,195,198,185, +102,148,125,136,232,184, 2, 52,240,104, 5, 7, 27, 79, 36,167, 23,224, 82,212,143,184,247,224, 56,234,186,122, 99,242,135,111, + 40, 62, 95,180,107,175,173,109, 93,175,172,172, 71,185,149,165,179, 4, 35, 54,253, 28, 13,125,230, 67,240, 25,177,224,243, 18, + 95, 20,120,142, 94,104,222,197, 29,142,158,245,229, 35, 39, 47, 28, 1, 96,100, 69,156,148,210, 20,150,101, 55, 48, 12,121,159, + 16,130,224,224, 38,241, 43, 87,174,212, 86,240,159,218,224,224, 38,241, 44,203,120, 20, 87,236,204,122, 65,224, 83,170, 73,231, +115,162, 70, 38,147, 79, 43, 54,251,187, 62, 11, 15, 15,215, 14, 26, 52, 8, 43, 86,172,144, 77,159, 62,125,182,135,135,199,232, +242,238,189,242,156,161,132,120,185,215,175,223,227,139, 75,151,168, 68,167, 35,153,215,174,229,102, 39, 37,233,147,243,242,100, +251,239,221,123,243,189,143, 63,150,121,122,122,226,226,241,227,246,105, 5, 5, 52, 91,173, 86,101,103,103, 83,189, 94,127,173, +146,188,207,116,118,118, 86,110,217,178,197, 47, 44, 44,236,102, 98, 98,226,204,146, 10, 98, 49,128, 64, 0, 79, 12,190,195,198, +141,123, 19,198,140, 25, 19,157,146,146, 50,179,170,116, 26,160,145,147,163,147,114,247,166, 29,183,237, 44,205, 24, 71, 15, 55, + 70, 98, 99,195,233,101,102, 82, 1, 80,213,245,172,111, 14,160, 81, 37,247,236,116,249, 30,183,153,153,217,161,163, 71,143, 58, + 73, 36, 18,240, 60, 15, 71, 71, 71, 60,126,252, 24,217,217,217,200,203,203,195,163,123,119,225,227,233,137, 5, 51,166,187, 78, +156, 62,227, 16, 33,164,133, 97, 99, 86,225, 2,200, 58,237, 11,150,189, 74, 22, 34,127,110,111, 76,185,151,195,227,184,184, 56, + 88, 88, 88, 32, 40, 40,200,226,210,165, 75, 23, 42, 19, 89,229, 22, 1, 30,220,190,125,123,203,221,187,119,163,121,243,230,176, +182,182,198,217,179,103, 17, 17, 17, 1,173, 86,203,228,231,231,195,210,210, 18, 75,150, 44,129,183,183, 55,114,115,115, 17, 23, + 23,103, 47,145, 72, 28, 42,227, 60,123,226,236,231, 57,177,103,230, 36,147,159,223,216,178,123, 47,198, 12, 27, 2, 23,250,240, +130,117,125,242,121,143, 62,237, 63,165,172,103,111,115,203, 96, 91,223,160, 62,144,202, 44, 48,113,218, 66, 68, 71, 30,179, 45, +204,187, 61,129,240,207, 60, 1, 76, 42,207, 89, 98, 17, 97, 60, 61, 61,223,219,191,127,191,165,129, 43,165,108,205, 67,195, 69, +224, 43, 91,240,221,152,251, 73, 8,193,227,199,143,225,228,228, 4, 11, 11,139,178, 5,196,239,222,189,139, 43, 87,174,160,116, + 53,138, 74, 56,135,159, 62,125,218,211,220,220,188,252,111,144,158,158, 14,189, 94, 15,165, 82, 9,158,231,161,213,106,161,211, +233, 80, 84, 84,100, 17, 24, 24, 56, 30,192,213,138, 56, 5, 65,248,104,240,224,193,237,175, 94,189, 90,239,171,175,190,130, 70, +163, 89,158,156,156,140, 1, 3, 6, 64, 16, 4,116,237,218,181, 13,165,244,254,236,217,179, 1, 0, 83,166, 76,209, 21, 20, 20, +132,213, 36,239, 37,249, 15, 28, 56,112, 96,189, 95,126,249, 5, 29, 59,118,132, 90,173,198,138, 21, 43,172, 54,110,220,104,181, + 99,199, 14,199,105,211,166,125, 11,160,103, 85,156, 37,229,181,220,197,197,229,253, 97,195,134,153,149,172, 97,138,237,219,183, + 99,193,130, 5,123, 0,204,254,233,167,159,230, 29, 57,114,100,196,123,239,189,135, 5, 11, 22, 76, 46, 21, 90, 21,113, 62,122, +244, 8,142,142,142,176,178,178, 42,174, 44,181, 90,220,186,117, 11,167, 78,157, 66,195,134, 13,141,105, 8, 79, 87, 33,178,190, +221,189,123,183,229,179,103,207,112,254,252,121,248,248,248,160,176,176,176,218,181, 97, 95,246,226,207,213,113,170, 84,170,162, +184,184, 56,139,165, 75,151,194,213,213, 21,222,222,222, 80, 40, 20, 32,132, 64,167,211, 85,186,188,154, 49,233,236,220,153,112, +233, 9,182,125,173,109,108, 39, 80, 74,185,156,156,172, 77, 90,100, 31,136,141,165,154,191, 42,239,255,114,139, 86, 51, 74,233, + 77,195, 53, 15, 75, 59, 35, 28, 0,132,135,135,211,144,144, 16, 82,186,119,119, 71,110,122,186,109,180,147, 75,227,189, 78, 46, +141, 74,214,253, 98,238,177,172,109,180,179,115, 97, 46, 0,104,245, 20,151,239,101,227,118, 76, 50, 34, 98,146, 97, 46, 55,206, +248,162,214,234,139,231,103, 82,138,162,252,255,239,180,106, 11,179,160,214, 22, 15,247,208,168, 11,145,147, 22, 69, 6,245,239, +174,120,255,253,113,112,117,117,119,172,140, 79, 43, 87, 76,158, 56,229, 77, 27, 59, 27, 9,142, 95,250, 25,109, 26,246,135, 66, + 46, 65, 70, 78, 17, 64,128, 7, 15, 79, 1,130, 37, 34,163,227,208,186,145, 18, 61,123, 4, 88,252,112,224,254,199, 0,230, 26, +147, 94,125,252, 53, 72,125,123, 65,194,235,160, 75,191, 15, 33,251, 41, 96,238, 2, 21,177, 64, 70,210, 83,220,187,112,176,120, +194,105, 53,224,121,126,130,163,163, 99,246,236,217,179, 59, 55,104,208, 64, 59,126,252,248, 63,158, 60,121,242,220,178, 54,117, +234,212,249,114,253,250,245,136,137,137, 73,248,226,139, 47,206,166,165,165,205, 49,241, 5,157, 65, 8, 89, 93,226,138, 75, 63, +124,248,112,243,115,231,206, 77, 94,189,122,245,255,177,119,221, 97, 81, 29,237,247,204,118, 88, 22,144, 94, 69,177,128,189,151, +168, 40, 98, 52, 22, 44,177,183,196,222,177,119,141,177,196,150,168,177,119, 99,193,110,108,193, 94, 80, 44,104, 84,148,162,136, + 40, 69,170,212,165,109,223,187,119,126,127, 80, 62, 68,202,130,250,149,252,246, 60,207, 62,112,119,239,158,157, 59, 51,119,230, +220,247,157,121, 95,187,233,211,167, 11,167, 79,159, 62, 22,192, 47,229,185, 11, 77, 68,162,174,107,238,221,163, 76, 66,130,234, +232,246,237,194,157,129,129, 75, 53, 44,235,104,109,107, 75,218,183,109, 43, 19,115, 56,233, 25, 41, 41,140, 77,237,218,220,152, +155, 55,173,168,177,113,210,213,171, 87,115,242,242,242,202, 76,157,195,229,114,229,165,185, 11, 75,131,131,131,131,186,180, 53, + 92,229,116,238, 28,150, 82, 77,181, 90,181,232,119,223,182,171,251, 54, 34, 42,202,168, 90, 53,174, 91, 93,215,122, 47, 95,199, + 60,161, 58,157,146, 16,146,163, 15, 23,151,203, 29,186,101,203,150, 38,102,102,102, 96, 89, 22,230,230,230, 72, 75, 75,131, 90, +173, 70, 78, 78, 14,212,185,217, 80,103,103, 35,244,125, 12, 58,116,238,140,193, 61,190,107,224,123,225,175,161, 0, 78,150,199, +235,216,180, 69,145, 37,107, 85, 77,171,127,249,130,226,179,138, 68,215,175, 45,220, 32,144, 72,208,109,206,162,207, 25,160,159, + 11,133,194, 43, 3, 6, 12,232, 53,111,222, 60, 78,114,114,242, 53, 66, 72, 7, 74,233,171,114, 45,194, 18, 73,157,244,244,116, +228,230,230,194,220,220, 28, 91,182,108,129,157,157, 29,228,114, 57,158, 62,125, 74,157,157,157,201,157, 59,119,224,236,236,140, +244,244,116,104, 52, 26,200,100,178, 15,106,181,186, 76,119,121,129,123,176,231,156,158, 14, 87, 35,130,142,116,116, 34,209, 79, +135,204,245,124, 27, 17,250, 58,238,198,205,135,191, 48, 74,163,248,172,132, 91, 11,107,181,126,110, 61,109,254, 74,236,216,176, + 28, 17,127,223,203,180,115,201,217,105, 76, 84,135,219,118, 43,187,188, 50,153, 76,249,250,245,107,211,224,224, 96, 16, 66, 96, +110,110, 14,177, 88, 92,170,216,170,194, 96,201, 41,246, 59,144,201,100, 16, 8, 4,176,178,178,194,129, 3, 7,138, 38, 94, 87, + 87,215,242,104,246,118,235,214,109,168,139,139,139,105,241, 55, 91,183,110,141, 73,147, 38, 97,247,238,221, 8, 12, 12,252, 40, +159,230,135, 15, 31,146,181, 90,237,225,114,218, 54,139, 16,210,163,127,255,254, 65,247,239,223, 55, 59,112,224, 0, 24,134, 41, +245,181,127,255,126, 60,126,252,120, 25,165,244,117, 21, 39,140,250, 3, 7, 14,188,119,236,216,177,106,105,105,105, 72, 79, 79, + 71, 94, 94, 30,100, 50, 25,116, 58, 29,234,213,171, 71, 24,134,169, 87, 81, 61,114,185,220, 11,219,183,111,239, 51, 97,194, 4, +240,120, 60,168,213,106,108,223,190, 29, 11, 23, 46, 76, 1, 48,154, 82,170, 33,132, 44, 61,124,248,240,168,190,125,251,162, 89, +179,102, 13,202,227,204,203,203, 67, 94, 94, 30,248,124, 62,236,237,237,177,122,245,106,168,213,249,195,138,187,187,123,145,203, + 19,192, 94,119,119,247, 62,111,222,188,217, 72, 41,253,173,140,113,166, 63,165,116,162, 78,167,203, 29, 48, 96,128,213,137, 19, + 39, 76, 19, 19, 19, 17, 20, 20,132,101,203,150, 73, 89,150,213,177, 44, 75, 20, 10, 69,180,157,157, 93,144, 72, 36, 50,150,203, +229,153, 25, 25, 25,107, 41,165,215,254,131,147, 57,225,243,249, 24, 55,110, 28,120, 60, 30,140,141,141,161, 84, 42,161,213,106, +139,196, 60, 42,233,150,118,115, 51,181,226, 65, 48,193,221,189,211,172,193, 51,123,219, 56, 56, 58,161,154,153, 8,225,225,175, + 58,248,223,190,185,189, 97, 61,155, 61,172, 90,187,231,117, 76,214, 87, 79,118, 95, 82,139,252,143,105,173, 22, 0,158,163, 88, +206, 67, 20,236, 66, 44, 99, 36, 26,164,179,182,254, 51, 61, 49, 81,168, 17, 10,197,111, 10,173, 92,249, 34,107,144, 14, 56, 1, + 70,163, 45, 24, 40,104,193, 75, 79,161,165,213,225,109, 68, 24,238,223,248, 11,214,242, 68,164, 71, 55, 7, 4, 77,160, 86,100, + 67,169,214, 20, 60,189,233, 16, 28,116, 27, 57,217,153,104,220,170, 55,192,225, 60, 46,139,207,220,138,244,110,223,178, 41,247, +109, 92, 24, 90,187, 15, 66,109,231,142,120,159,156,131,172, 60, 21,164, 57, 74, 52,111,188, 8,105, 82, 5,114,228, 74,188,122, +235, 11, 39,199,218, 28,194,139,250, 86, 95,161,165,122,117, 14,170,215, 23, 33,168,209, 1,194,122,125,193,173,225,129,184,144, + 59, 8,190,186, 25, 9, 47, 31,128,178, 58, 56,184,183,209,247, 38,217,126,237,218,181, 54, 29, 58,116,224,117,237,218,181,153, +163,163, 99,179,164,164,164,224, 2,107, 78,179, 94,189,122, 53,179,177,177,193,214,173, 91, 21,132,144,237, 85,156,108,139,187, +219,158,216,217,217,173, 57,119,238,220,246, 73,147, 38,193,214,214,182, 73,121,223, 77,227,243,155,141, 94,187,150,242,185, 92, +122,114,199, 14,193,202,107,215, 54, 29, 58,124, 88,208,197,203,139, 80, 74,241,226,197, 11,241,175, 59,118,136, 71,244,235, 23, +251, 62, 53,149, 9, 8, 12,212, 36, 39, 36,228,166,202,100, 43,147,146,146, 62,252, 39,122,182, 86,171,125, 20, 29, 19,237,212, +170,109,115,155,231,225,209, 47,187,119,105,223,158,195,225,112, 34,162,222, 7,218,216,152,137,111,222,184,169,209,106,181,143, +244,225, 18,137, 68,189,187,116,233,194,147, 74,165,112,116,116, 68, 90, 90, 26, 18, 19, 19,243, 45, 14,217, 82,104,178,179,161, +205,201,130, 78,150,135,232,167, 79,208,188,118, 45,209,153,252,197,242, 39, 43,104,147, 82, 45, 85,197, 45, 91, 66, 83, 83, 8, + 37, 18,144, 74,186, 13, 9, 33,253,170, 85,171,182, 48, 43, 43,235, 10,165,116,181, 70,163,241, 89,184,112, 97,235,109,219,182, + 89,175, 89,179,198,108,226,196,137,103, 8, 33,205, 41,165,170,114, 38,176,119, 12,195, 88, 3,176,189,125,251, 54,108,109,109, +145,157,157, 93,104,105, 81,203,229,114,163,140,140, 12,168, 84, 42,168,213,106,152,153,153,225,217,179,103, 82,134, 97,254,170, +168,124,102,117,200,106,149, 38,252, 39,171, 6, 38, 73, 26,198,194, 51, 53,147,149, 46,223,152,180, 10,192,166,158,117,234,236, +215,176,247,162, 35,195,252, 44, 98,158,222,205, 76,138,148,213,222,127, 57, 42,183,156,122,164,132, 16,150, 16, 66,221,221,221, +145,150,150, 6, 46,151, 11,177, 88, 12,137, 68,130,197,139, 23, 99,251,246,237,149, 22, 90,132, 16, 35, 19, 19,147,181, 28, 14, +103,168,185,185,185,141, 78,167,195,162, 69,139,208,167, 79, 31, 8,133, 66,104, 52,154, 34,139,102,161,149,170, 60, 75, 7,165, +244, 5, 0,179, 18,191,225,101,109,109,237,175, 82,169, 16, 21, 21,133, 11, 23, 46,116,166,148, 6, 84,242,222,142, 34,132,244, +240,240,240, 56,210,178,101,203, 58,148, 82, 52,105,210, 4,195,134, 13,131,175,175, 47,130,131,131,145,157,157,205,222,188,121, +243, 16,128,141,149,157,192, 11,234,183,222,192,129, 3, 31, 28, 63,126,220, 34, 35, 35, 3, 10,133, 2, 50,153, 12,103,206,156, + 65,135, 14, 29, 96,109,109,141, 99,199,142, 49,148, 82,191,242, 68, 22,135,195, 57,176,103,207,158, 62,227,199,143,199,206,157, + 59,113,242,228, 73,244,237,219, 23, 67,135, 14, 69, 90, 90,154,221,134, 13, 27, 70, 17, 66, 14, 0, 88, 62,108,216, 48,228,229, +229,225,233,211,167,225,122,222,243,200,202,202, 66, 86, 86, 22,140,141,141,139,223, 99, 4,128,239,230,205,155,135,207,154, 53, + 11,181,107,215, 94, 94,176, 41,232,147, 93,162, 44,203, 78, 78, 76, 76,180,224,241,120, 86, 12,195, 32, 62, 62, 30,207,158, 61, +195,180,105,211, 50, 51, 51, 51, 39, 81, 74,223, 19, 66,150,142, 27, 55,110,245,156, 57,115,138,250,210,156, 57,115, 46, 17, 66, +122,252,187,173, 57,245,234, 89, 52, 18,114, 69, 51, 5, 2,190,149, 84, 42, 45, 26, 59,212,106, 53, 84, 42,213, 71,150, 44,129, +128,111,213,166, 69,141,203, 10,121,238,146,151,111,164,101, 38, 72,111, 88,183, 90, 83,177,137,249, 44,239, 30,131, 71,126,215, +227,123, 46,163,213,226,250,117, 63,252,241,199, 46,120,121,184,163,118,221, 38,152, 62, 99,166,185, 74,205, 44,186,121,243,218, +194,246,109,106, 93,203,205,201, 90, 92, 30,231,255,115, 92, 46, 16, 87,151, 75,117, 29,150,174, 32, 7,233,156,156, 32, 45,184, +113,172, 45, 44, 44,118,232,116, 58, 47, 96, 2,248, 18,123,188,122,246, 55, 50,165,124,168, 20, 58,176, 52, 95,108,233, 37, 92, + 84,106,220,187,126, 17, 91, 54,111, 66, 70, 70, 6, 60, 58,117, 70, 30,175, 58, 92,170,187, 64,169,144, 23,220, 52,128, 70,173, +133,141, 93, 13, 60,127, 30,172,205,145,201,202, 28,144, 4, 70,154, 6, 46,118,238, 80,105,218,193, 72, 40, 68,118,174, 26,210, + 2,145,117,236,207, 33, 80,201, 21, 96,212, 26, 48,106, 45,108, 92, 6,162,190, 93, 23,176, 58,191, 70,149,170, 62, 86, 7, 77, +204, 61,104, 98,238,193,184,221, 12,252,181,110,120,137, 1, 80,191,188,187,169,169,169,169,142,142,142,126, 47, 94,188,232, 63, +100,200, 16,220,185,115,103, 34,128, 41, 5,238,155,137, 67,134, 12,193,139, 23, 47,240,242,229, 75,191,212,212,212, 47,146,120, + 85, 40, 20, 42, 84,170,252, 57, 86, 44, 22, 27, 85,112,174, 83,235, 1, 3, 56,217,207,159,231,108,126,248,112,249,254, 3, 7, + 4, 93,191,253,150,104, 25, 6,172, 78,135,186,110,110,228,187,239,190, 51,241, 61,125,218,138,171,213, 62,158,239,227,115,123, +247, 15, 63,228,254,157,151,167,239, 66,243,154, 5, 46, 67, 0,168, 89,206,123,122, 67,165, 82,109,155, 60, 97, 76,215,128,123, + 15,170,187, 84,119, 50,187,126, 51, 32, 88,100, 44,228,212,118,173,195,149,102,103,242, 86, 45, 95, 98,172, 82,169,244, 21,173, + 13,172,173,173,241,225,195, 7,188,125,251, 22, 42,149, 10, 90,173, 22,172, 92, 6,181, 52, 11,234,236, 76, 16,165, 2, 34,157, + 14,202,244, 20,212,172, 93, 11,248,215,142,196, 10, 93, 81,165, 9,173,194,191, 70,102,102, 16,152, 72,192,225,243,245, 78,142, + 78, 8,105,217,166, 77,155,211,103,207,158, 21,140, 29, 59,182, 45, 33,100, 71,193, 4,241,237,178,101,203,158,236,216,177, 67, + 52,105,210,164,122, 27, 55,110, 28, 5, 96,111, 89, 60, 74,165,242,244,229,203,151, 71,212,168, 81,195, 54, 52, 52, 20, 74,165, + 18, 44,203,162,103,207,158, 0, 80,212,103, 34, 34, 34, 20, 74,165, 50, 53, 44, 44, 44,231,253,251,247,106,232,177, 75,112,249, +214,164, 71,115, 6, 59, 15,176,179,119,122,108,100, 92,211,149,230, 61,239, 63,103,176,243,134,223,207, 36, 40,175,190,123,151, +187,108, 90,237,245,178,220,144,105,213,156,243,118, 94,245,139,210,103, 87, 48, 45,220,206,110,101,101, 5, 30,143, 7, 62,159, + 15,129, 64, 0, 66, 8,102,204,152,129,125,251,246,149,235, 58, 44, 41,178, 76, 77, 77, 95,174, 92,185,210,121,210,164, 73, 2, + 35, 35, 35, 72,165, 82, 28, 59,118, 12,227,198,141,195, 31,127,252, 81,234,250,151,138, 92, 74,165, 88, 75,103,253,240,195, 15, + 80,171,213, 24, 54,108, 24,246,239,223, 63, 11, 64, 64,101,251, 59,165,244, 49, 33,196, 45, 56, 56,216, 12, 64,223,161, 67,135, + 30, 30, 56,112, 32, 2, 2, 2,224,231,231,215, 25,192, 27, 0, 10, 0,235, 10,146, 56,175, 43,111, 35, 72, 65, 8,135, 93, 54, + 54, 54,125, 27, 53,106, 20, 60,112,224,192,198,199,143, 31,175,150,154,154, 90,184,249, 1, 49, 49, 49, 56,120,240, 96,242,129, + 3, 7,114,116, 58,157, 21,135,195,185,156,149,149,181,184, 28,119,225,129,205,155, 55,143, 41,112, 7,226,236,217,179,116,211, +166, 77,100,217,178,101,144, 74,165,240,242,242,194,158, 61,123,102,230,229,229, 53,219,180,105,211,132,193,131, 7, 99,213,170, + 85,144,201,100,155, 43,122, 88, 41, 71,124, 17, 0,237, 55,111,222, 92, 99,214,172, 89, 56,123,246, 44, 90,182,108,105, 28, 29, + 29,189, 27,192,248,210,218,143, 82,138,232,232,104,200,229,114, 60,120,240, 0,203,151, 47,151, 22, 19, 89, 51,167, 76,153,178, +122,230,204,153, 88,187,118, 45, 13, 13, 13, 77, 29, 56,112,160,221,190,125,251,184,117,235,214,157,137,252,164,235,255, 22,212, +119,179, 90,223,166,181,231, 66, 7,167,186, 56,118,252, 4, 50, 51, 51,139,234,164,176, 94, 40,165,200,205,205,197,135, 15, 31, + 96,110,102,138, 13, 27, 87,247,154, 58,113, 76,117,228,135,193,248,116,160,171, 99,185,113,208,176,241,115,135,141, 24,131,208, +224, 32,248, 30,222,139,176,208, 23, 69,124,140, 86,131, 55,225,207,240, 38,252, 25,236,236,107,224,187,174,157,201,240,225,195, +123,254, 48, 98,168, 13,128,175, 22, 58,226,127,216,154,245, 73, 28,173,226,107,182,120, 21,153,235, 10, 68,214,203, 83,167, 78, + 89,121,120,120,112, 25,134,193,181,235,215, 49,109,202,143, 24,245,195, 34,104, 96, 1, 70, 45, 0, 43, 48,210,171, 48, 10,133, + 28, 20, 20, 50,153, 12,129,129,129,160, 44, 3,223,125,155, 64, 41, 91, 36,180, 0, 10,181, 70, 3, 39,151,122,216,181,127, 13, + 3, 62,255, 73, 89,124, 57, 25, 92,157,150,161, 72, 76,141, 67, 92,114, 24,204, 77, 93,192,227,187, 32, 35, 75, 14, 30,199, 30, + 90,101, 4,116, 5,102, 85,185, 44, 1, 10,205,231,181,159, 46,251, 83,235, 41,173,196,160,171, 80, 40,142, 30, 61,122,180,215, +239,191,255, 46,244,246,246,118,119,116,116,108, 15, 0,131, 6, 13,114, 55, 51, 51,195,209,163, 71,213, 10,133,226,232, 23,180, +248,116,105,211,166, 13,164, 82, 41, 98, 98, 98,130,203,189, 54,181,218, 74, 98,107,203, 77,189,115, 71,155, 38,149, 86,239,210, +165, 11,209, 50, 12, 56,132, 32, 51, 59, 27,239, 99, 99, 81,173, 90, 53,242, 50, 34, 66,178,125,250,244,243,238,141, 27,243, 10, +119, 36,234, 3, 63, 63, 63, 49,242,215,101,149,251, 94, 37, 59,183,140, 16, 50,198,199,199,231,252,209,163,199,204, 83, 82, 83, +222,136,132, 66, 70, 34, 49,114,252, 97,228, 84, 94, 86, 86,214, 8, 74,105,158,190,124, 82,169, 20,209,209,209, 48, 54, 54,134, +128,207, 7,171,144, 67, 39,203,131, 50, 51, 13, 92,141, 26, 66,157, 14,150, 98, 17,170,219,217,193,197,198, 90, 47,206,183,254, + 55,138, 22,190, 23,119, 23,110,104,211, 0, 66, 19, 9,132,166, 18, 76,189,116,183,224,105, 84, 0, 44,251, 69, 31,145,101,237, +228,228,244,215,241,227,199, 5,105,105,105,120,241,226, 69, 48,165, 52,155, 16, 98, 10,128, 13, 15, 15,191, 21, 22, 22,214,187, + 96,215, 93, 69,187,197, 54,157, 59,119,174,155,135,135, 7,227,234,234,106,146,146,146,226,146,145,145, 65,146,147, 63, 94,235, +124,229,202, 21, 35,133, 66, 33, 99, 89,246, 60,242,227, 64, 85, 24,191,104,206, 96,103,163,192,231,152,225,217,189,102, 19, 51, +235,166,200,100,158, 55,121, 28,156, 60, 99,206, 96,231,109,191,159, 73, 80, 26, 19,213, 97,162,139,175,206, 51, 82, 30,209,179, +189,169,181,181, 53,194,195,195, 17, 24, 24,136,247,239,223, 35, 58, 58,250, 35, 65, 53,113,226, 68,248,250,250,234,101,209, 50, + 49, 49, 89,187, 98,197, 10,231, 89,179,102, 9,138,137, 34,248,248,248, 32, 59, 59, 27,251,247,239,135,143,143, 79,165, 39,254, + 18,109, 85,171, 91,183,110,222, 14, 14, 14,200,200,200,128,189,189, 61, 60, 60, 60,250, 16, 66, 92, 41,165, 49, 85,236,250, 83, +187,119,239,190,122,229,202,149,208,106,181, 24, 55,110, 28, 34, 35, 35, 79, 71, 70, 70,110,113,113,113,153,177, 96,193, 2, 59, + 59, 59, 59, 12, 25, 50,196, 4,192,128,178, 72, 44, 45, 45,215,237,221,187,119,132,183,183, 55, 71,163,209,116,242,247,247, 71, +108,108, 44,212,106, 53, 24,134,193,187,119,239,224,227,227,147,156,145,145,225, 73, 41,125,167, 71,185,198, 46, 93,186,116,204, +140, 25, 51,240,235,175,191, 98,197,138, 21,135,204,205,205, 27, 55,111,222,188,197,138, 21, 43, 48,127,254,124,212,168, 81, 3, + 86, 86, 86,245,151, 45, 91,214, 96,206,156, 57,216,182,109, 27,150, 47, 95,126, 8,192,193,170, 84, 4,203,178,100,253,250,245, +205, 54,111,222,236, 80, 40,178, 56, 28, 14, 78,157, 58,133,231,207,159,247, 41,227, 59,123,236,237,237, 39, 58, 56, 56, 8,111, +222,188, 41,169, 81,163, 6, 24,134,209, 22,136,172,237, 46, 46, 46,211,222,189,123, 7,111,111,111, 68, 69, 69, 29,165,148,142, +242,244,244,148,205,153, 51, 71,108,108,108,108,254,239,156,192,185, 28, 50,122,237,170,249,120,250, 60, 2,231,206, 9,240,244, +233, 83,216,217,217, 65, 36, 18,129, 82, 10,149, 74,133,180,180, 52,104, 53, 42, 52,105, 84, 11, 71, 14,172, 71,106,106, 26,192, + 33,101, 46,185, 33, 28, 50,114,204,143,253,113,255,193,117,236,222,189, 23,121,121,178, 50, 30,190,141, 80,215,189, 1,156, 28, +109, 17,159, 16, 15,194,129,245,215,188,214,255,113,215, 97,225,253,174, 95,120,135,226,168, 86,173,218,150,147, 39, 79, 90,121, +121,121,113,101, 50, 25, 88,150, 69, 71, 15, 15,204,152, 53, 11,126,199,143,195,173,237, 48, 16,181, 4,140, 88,191, 93, 15, 74, +133, 28, 13, 91,180,199,224, 33, 67, 17,247,254, 61,186,247, 30, 8,165, 82, 94,244,132, 81,104,209, 82,171, 53,176,182,173,142, + 27, 55,110,112, 49,110, 92,153,107, 76,116, 26, 97,200,155,119,202, 14, 89,138,231, 8,124,234, 11,141, 74,131, 38, 77,150, 65, +195, 90,193,214,121, 34,180,218, 11,200, 73,243,207,119, 99, 88,121, 33, 33, 46, 14, 28,174,224,101, 85, 43,145,149,165,125,214, +160,155,149,149,149,237,232,232,248,103, 96, 96,224,200, 1, 3, 6,224,198,141, 27, 19, 0, 96,192,128, 1, 8, 12, 12, 68,116, +116,244,159, 89, 89, 89,217, 95,162,193, 29, 29, 29,251,122,121,121, 13,107,221,186, 53, 46, 93,186, 4, 74,233,125,189,110,108, + 62,159,114, 56, 28,176, 44, 11, 2, 32, 35, 43, 11,145,145,145,200, 72, 79,135, 86,171,133, 44, 47,143,109,224,238,158, 71, 89, +214,180, 50,229, 41,190,195, 16,165,236, 58, 44,124,175, 10, 98,235,189, 68, 34,137,203,205,203,179,177,168,102,145, 43, 20, 10, +117,210,172,172,236, 87, 47, 67,213,122, 78, 14,133, 8, 15, 11, 11,107,156,148,148,132,184,184, 56, 48,178, 92,112, 85,106,112, + 84,114,124,219,190, 29,140, 65, 97, 4, 22,124, 86, 11, 62,151,143,220,252,221,121, 21,186, 59, 10,133,126,113,203, 22, 33, 36, +223, 93,104, 98, 2,161,196,244, 35, 11,151, 62,253, 73, 36, 18, 29, 63,115,230,140,131,147,147, 19, 86,173, 90, 5,103,103,231, +250, 77,154, 52,145,119,236,216,209,216,206,206, 14, 13, 27, 54, 68,251,246,237,113,245,234, 85, 0,120, 87, 65,253, 49,132,144, +239,238,223,191, 63,247,225,195,135,131, 9, 33,100,209,162, 69,232,209,163, 7,140,140,140, 32,151,203, 33,149, 74,177,111,223, + 62, 66, 41,109, 81, 80,214, 26, 70, 70, 70, 39, 8, 33, 9, 10,133, 98, 72, 73, 78,223,205, 77, 29, 83, 51,217,113,118,246, 78, +253, 61,187,215,108,210,165,123, 87,212,114,235,130, 46,221,227, 0, 96,189, 37, 47,118,216,134,159, 26,159,183,174,110,121,240, +198,181,155,203, 61, 60,187, 44, 93, 52,201, 98,245,250,189,210, 28, 61, 6, 50,176, 44,251, 81,236,160,146,159,143, 26, 53, 10, +167, 78,157,170,176, 30, 57, 28,206,208, 73,147, 38, 9,138,191, 87,232, 50,238,221,187, 55, 6, 12, 24,240,145,208,178,182,182, +134,189,189, 61, 98, 99, 99, 1, 32, 67,207,126, 53, 99,236,216,177, 68,161, 80, 96,252,248,241,216,191,127, 63,134, 13, 27, 70, + 2, 2, 2,102, 0,152, 85,217,254,206,225,112, 54, 44, 88,176, 96,174,143,143, 15, 50, 51, 51,113,229,202, 21,244,236,217, 19, +167, 78,157,178,185,114,229,202, 90, 47, 47, 47,112,185, 92, 92,186,116, 9, 12,195,148, 27,235, 75, 32, 16,244,245,246,246,230, +196,199,199, 67, 32, 16,160, 85,171, 86, 72, 72, 72,128, 92, 46, 71, 98, 98, 34,102,206,156,249, 33, 35, 35,163,179,190,247,145, + 64, 32,152, 53, 99,198, 12,156, 60,121, 18,139, 22, 45, 58, 12, 96,124,118,118,246,224,135, 15, 31,158,236,215,175, 31, 18, 19, + 19,113,254,252,121, 44, 95,190,156,140, 26, 53, 10, 59,119,238,196,204,153, 51, 15, 1, 24, 95,206, 14,201,220,212,212, 84,243, + 58,117,234, 32, 37, 37, 5,121,121,121, 56,127,254,188,237,213,171, 87, 93,157,156,156,204,162,163,163,117,191,252,242,139,112, +214,172, 89,216,178,101, 11, 94,188,120, 1, 95, 95, 95,116,233,210,133,137,138,138, 42,213, 74, 86, 16,178,225,188,165,165,229, + 77, 19, 19, 19,228,230,230, 22,238, 44,157,183,104,209, 34,159,117,235,242,141,236, 73, 73, 73, 24, 61,122,244, 15,132, 16,118, +229,202,149, 98,129, 64, 0,165, 82, 41,251,119, 78,220,172,142, 5,192,194,181,186, 4,215,253, 14, 32, 40, 56, 10, 65,193, 97, + 16,138,242, 23,193, 43, 20,114,180,104, 82, 23,109, 91,181, 65, 82,114, 34,142,250, 30,128,165,181, 83,185,227, 8,165, 20, 2, +158, 14, 13,220,237,113,220,119, 47, 46, 93,185, 13,223,163, 39,138,214,188,241,120,124, 52,111,209, 22,173, 90,121, 32, 42,250, + 29, 14, 28,216, 13, 27,219,234, 6,231, 96, 21, 81,228, 58, 44,254,183,132,242,239,226,225,225,193,205,203,203,131, 82,169,196, +135, 15, 31, 16, 27, 27,139,106, 22,213, 16,149, 20,131,206, 98, 13, 62,176, 57, 8, 15,126,169, 35, 92,254,139, 10, 77,131,158, +205, 1,207,230,152, 54,118, 88,217,157, 0, 20, 38,102,214,249,174, 27,134,121,139,109,219,202,124,114,102,116,218, 91,215,111, +250,183, 25, 59,170, 47,255,134,255,126,104,213, 44, 20, 90,115,200,148,106,200, 52,124,112,204,123, 2,233, 1,224,242, 68,248, +166, 89, 93,156, 63,119, 85, 67, 25,237,109,189, 43,200,174, 49,152,148,176, 98, 66,235, 99,143,158,145,169,165,222,174,195,162, +137, 87,167, 59,117,236,216,177,239,219,181,107, 39,246,242,242,170, 83, 48,113,106,142, 29, 59, 38,215,233,116,167, 42,219,136, + 37,163,193, 59, 56, 56,180, 16, 8, 4,195,250,246,237,219, 98,204,152, 49,120,245,234, 21,142, 30, 61,250,166,110,221,186,229, +198, 16,227, 10,133, 25,121,169,169,213, 36,174,174, 60, 11, 83,211,164,171, 87,174,212,232,218,173, 27,137,139,139, 67, 70, 70, + 6,148, 74, 37, 94, 4, 7, 83, 62,151,155, 64,204,204, 56, 17,207,159,115,184, 66, 97, 70, 37,138, 26, 91,193,174,195,117, 85, +181,110, 85,119,176,168,179,124,209,228, 90, 74,149,178,113, 78, 78, 14,195,227,243,249,206,246,213,222, 87,210, 13,121,233,214, +173, 91,223,119,237,218, 85,244, 38,228, 5,152,236,108,168,179,165, 16,176, 58, 88,182,104, 6,174, 70, 5,168,181,112,106, 64, +161,204, 18, 35,224,239, 8,173, 74,165,170, 48,168, 97,161,208,226,148, 16, 6, 66,137, 4, 34, 83, 51,136, 36,146,146,130,129, + 84,208,222,226,190,125,251,126,251,205, 55,223,128, 82,138,125,251,246, 65,163,209, 8, 53, 26, 13,212,106, 53, 52, 26, 13,114, +114,114,224,235,235,139, 93,187,118, 61, 4,112, 72, 15,177,202,240,249,124, 31,134, 97,108, 69, 34,145,198,198,198, 70,112,250, +244,233,162,112, 19,205,155, 55,135,137,137,137,138, 16,162, 1, 0,123,123,123,237,225,195,135,121,253,250,245, 19,148,198, 87, +175, 73,253,249,181, 24, 11, 79, 35,227,154,174,102,214, 77, 81,203,173, 11, 0,160, 91,239,177,168, 85,215, 5, 57,233, 33,174, + 74, 69,108,127, 1, 79,106,241,114, 91,226, 43, 99,239,198, 99,100,169,119, 35, 81,250,246,254, 82, 39, 10, 14,135, 83,166, 59, + 86, 31,145, 69, 8,225,152,155,155,219, 20,174,243, 41,152,128,145,156,156,140,240,240,112,212,171, 87, 15,153,153,153,112,114, +114,130, 90,173, 70,235,214,173,161, 80, 40,176,121,243,102, 60,120,240,224, 33, 10,118, 70, 86,240, 27,198,110,110,110,163, 91, +180,104,129, 43, 87,174,224,233,211,167,137,215,175, 95,119,242,240,240,128,171,171,235, 24, 66,200, 18, 74,203,142,193, 87,154, +171,175, 83,167, 78,211,125,124,124, 16, 22, 22,134,201,147, 39,103,196,199,199,159, 63,125,250,244,248,229,203,151,115,186,119, +239,142,228,228,100,108,216,176, 65,247,224,193,131,141, 0, 86, 85, 80,143,175,227,227,227,157,149, 74, 37, 50, 51, 51,193, 48, + 12,228,114, 57,174, 94,189, 10, 95, 95,223,148, 2,145,245, 86,223,242, 53,107,214,172, 33,135,195,193,201,147, 39, 1,224, 39, + 74, 41, 75, 8, 57,223,191,127,255,196, 95,126,249,197,105,241,226,197,152, 48, 97, 2, 52, 26, 13,126,253,245, 87, 44, 94,188, +248,114,129,200, 42,111, 16,253,221,222,222,126,226,228,201,147,235,207,153, 51, 7,129,129,129,182,207,158, 61,107,245,226,197, + 11, 84,175, 94, 29, 25, 25, 25, 60, 43, 43, 43,108,217,178, 5,179,103,207, 62, 11, 32,253,209,163, 71, 67,163,163,163,215, 81, + 74, 55, 84, 80,159,123,156,156,156, 38, 82, 74,169, 92, 46,143, 93,180,104,209,134, 53,107,214, 96,246,236,217,120,249,242, 37, +178,179,179, 97,106,106, 74, 22, 44, 88, 48,250,167,159,126,194,184,113,227,168, 76, 38,219,245,239,119, 75,233, 32,151,134, 65, +167,178, 64,243, 38,245,208,188,113, 77, 92,247, 15, 2, 0,124, 59,208, 3,114, 89, 46, 14, 31,222,135,183,111, 35,193,227,243, + 81,205,210, 94, 31, 75, 32,212, 57,175,145,165, 73, 70, 87,175, 86,232,217,189, 51, 14, 29, 57, 5, 70,171,193,248,177, 35, 32, +205,202,194,145, 35, 7, 16, 21,253, 14, 60, 62, 31, 86,214, 95, 63, 16,106,121, 90,228,127, 94,104,233,225,126, 2,203,178, 72, + 76, 76,196,179,103,207, 16, 19, 19, 3,177, 88, 12, 5,163, 99,119,223,122,192, 18, 34, 72, 96, 41,125, 72,153,162, 40,197,159, +114,232,116,137,197, 34,214,154, 91, 88, 88, 8, 85, 42, 5, 24, 70, 91,108, 86, 33, 0, 1, 4, 60,192,193,177, 22,226,227,226, +169, 82,169,188, 91,238, 19,148, 74,185,229,226,249, 51, 62,237, 59,120, 88,247,252,118, 37,206, 95, 88, 6,105, 78, 14,148, 26, + 62,100, 74, 13,228, 74,160,154,165, 59, 90, 55,105,138,164,164, 12,132, 60, 13,200,227,169,228,250, 44, 20,141,220,190,116,172, +219,216,105,243, 97, 92,163, 3, 84,225,231,193,230,165, 20, 89,180,140, 36, 22,176,116,105,128, 44,153, 10,103,110, 7, 1,128, +222,169, 94, 82, 82, 82,228,142,142,142,199,124,124,124,126, 13, 10,122,230, 12, 0, 65, 65, 65, 9,201,201,201, 11, 83, 82, 82, +228,149,105,192, 98,209,224,137, 88, 44, 14,170, 91,183,110,146,183,183,183,121,255,254,253, 97,109,109,141, 23, 47, 94, 96,221, +186,117,175, 53, 26,205,252,187,119,239,150,235,234, 81,171,213,137, 65, 23, 46,152,117,254,241,199,106,243,251,244,217,224,227, +227,179,101,213,170, 85,124, 55, 55, 55,162,213,104, 16, 26, 26, 74,143, 31, 59,166,221,181,120,241,102,161,137, 9,239,201,197, +139,124, 70,165, 74,252, 79,119, 98,103,103,103,207, 94, 61, 60, 27,108,252,125, 27,148,138, 60,252, 29,120, 25, 82,105, 26,246, +238, 59,215,192,217,217,217, 51, 33, 33, 33, 64, 95, 1,124,240,224,193,185,109, 91,180,104, 81,187,122,117,132,190,143,129,144, +213, 65,192, 48,224,106, 84,224, 48, 74, 84,111, 76, 65, 56,166, 72,254,144,131, 53, 39,255, 12,211, 71, 24,215,239,213, 23,171, + 18,178, 65, 8,193,166,118,141, 33, 52,149, 64, 96, 34,193,212,191,252,139,132,193,165, 85,139, 33,148, 72, 80,167,173,135, 30, +131, 46,149,155,154,154, 62, 11, 13, 13,109,221,184,113, 99,204,157, 59, 23,177,177,177, 96, 89, 22, 41, 41, 41,202,228,228,228, +196,180,180,180, 88,228,199,255,217, 79,245,124, 18, 96, 24,198, 54, 40, 40, 8, 0, 4, 0,112,251,246,109, 56, 58, 58,194,220, +220, 28, 57, 57, 57,152, 63,127,190,232,231,159,127, 6, 0, 60,123,246,140, 95, 92,160,148, 68,104, 80,248,198,172, 92, 42,165, +121,207,251,103, 50,207,155,116,233, 30,143,110,189,199,224,230,165, 67,240,191,126, 11,150,188,216, 24,152,228, 94, 77,143, 73, +207, 73,144,185,237,105,208,114, 60, 55, 89,118,125,207,140,126, 22, 92, 7, 7,246,204,162, 93,217, 89,229,149,213,205,205, 13, +118,118,118, 69,107,180,120, 60, 30,198,141, 27, 7, 74,169, 94, 34,171,160, 30, 89, 51, 51,179, 52,165, 82,105,103,100,100,132, + 15, 31, 62,224,221,187,119,136,138,138, 42, 10, 29,192,178,172, 2, 70, 94,132, 0, 0, 32, 0, 73, 68, 65, 84,118,222,188,121, +252,233,211,167, 99,247,238,221,184,123,247,238, 67, 0, 43, 41,165,250, 62,172,141, 24, 50,100,136,169, 90,173,198,137, 19, 39, + 24, 0,189,207,156, 57,243,172,117,235,214,188, 30, 61,122,152,238,220,185,115, 4,128,253,149,232,238, 38,102,102,102, 2,141, + 70,131,157, 59,119, 34, 62, 62,222,147, 82, 26, 78, 8,217, 51,100,200,144, 93,141, 27, 55,174, 27, 22, 22, 22,153,151,151, 55, +149, 82, 26,162,199, 88, 52,182, 85,171, 86,103, 88,150,173,209,181,107, 87,147,223,127,255,221, 44, 34, 34, 2,206,206,206, 96, + 89, 54,180,178, 41,172, 34, 35, 35,195,147,147,147, 27,116,238,220, 25, 87,175, 94, 93, 79, 8, 89, 11,224,215, 41, 83,166, 56, +189,127,255, 30, 45, 90,180,128,165,165, 37, 34, 34, 34,114,147,147,147,119, 1, 88, 82, 81,172, 47, 74,105, 52,128,133,132,144, +166,123,246,236, 25,102,105,105,249,205,139, 23, 47,112,255,254,125,108,220,184, 17, 63,255,252, 51, 58,118,236,136,185,115,231, +166, 3, 24, 86,224,210,214, 43,110, 94,161,101, 11, 0, 90,181,106,149,180,110,221, 58,140, 31, 63,158,254,241,199, 31, 91,143, + 29, 59, 54,107,196,136, 17, 69,115,224,232,209,163,233,209,163, 71, 71,151,183, 17,224, 43, 65,171,209,168, 97,102, 89, 11,121, + 89,113, 72,139, 15,132,216,212, 30,221,187, 52,131, 92,161,134,223,197,179, 8, 9, 13, 6,135,195,129,157,125,117, 84,179,176, +198,155, 55,145, 0,240,170,124, 78, 13, 76, 45,106, 34, 47, 59, 30,234,212, 32, 24, 75,108, 49,230,199,254,144, 43, 52, 56,119, +254, 44,194,194, 66,192,229,114, 97,239, 80, 29,230,213,242, 57, 9, 45,151,211, 0,148, 30, 79,171, 66,161,197,229,114,239, 92, +187,118,109, 80,219,182,109,121,111,223,190,197,219,183,249, 15, 55, 82,169,148, 33,208,253,153, 18,114, 97,120, 57, 34,160,107, +225,238,140,226,185, 11, 37,166,166,137, 17,175,195,237,164,153, 41, 8,126,254, 0,111,223,132, 34, 38, 42, 28, 26,141, 18, 92, + 14, 7, 28, 46, 7, 53,107, 53,194,131,135,129,106, 37,195, 4,150,197, 9, 0,153,153,239,114, 37,118,238, 67, 87,175, 90,114, +105,246,252, 21,198,131, 7,237, 70, 72,196, 43,228, 49,246,160, 20,176,183, 50, 65,243,218, 11,144,152,148,134,147,135,118,202, + 89,141,102,100,241, 24, 90,165,113, 2,128, 93, 58, 26,238,218,119,104,220,126,223,227, 43,230, 79,159,100,215,111,192, 72, 8, + 51, 95, 65,155, 20,132, 90,173,123,130,136,170,225,202, 13,127, 4, 60,123,149,194,234,232, 10,187, 12,252, 81, 17,103, 9, 23, +226,163, 15, 31,146,157,139, 69,129,119, 22,137,140, 30, 85, 32,170,186,150,136, 43,244, 81,196,121, 46,151,211,114,245,234,213, + 90, 59, 59, 59, 77, 88, 88, 24,118,239,222,205, 6, 5, 5,221,224,112, 56,219,147,146,146,148, 21,113,218,104,181,193,199, 23, + 45,106,216,102,192, 0, 58,124,250,116, 57, 68,162, 25, 27, 54,109, 90,148, 38,149, 58, 82,150,133,141,165,101,194,134,197,139, +215, 13, 26, 50, 68,250,242,193, 3,227,192, 11, 23,140,133, 12, 19, 84, 81, 57,191,144,223,187, 76,206,132,132,132, 0,183, 58, + 46, 56,188,255,119,104, 52, 42, 36, 39,230, 27,178,210, 51,178, 81,158,200, 42,201, 89,176,235,106,192, 79, 63,255,252,248,167, +217,179,236, 59,125,219, 21,113,193, 47,160,201, 76, 3,209, 50,224, 19, 30,100,169, 98,164,166,228, 97,225,209,211,169,121,114, +249,128,146,147, 68, 89,229, 44,180, 88,137,204, 76, 33, 48,145, 64, 40, 49,253,200,138,101,100,102, 6,161,137, 4, 60,161,176, + 52, 43,205, 39,156,121,121,121, 3, 7, 13, 26, 20,242,228,201, 19,139,241,227,199,163,125,251,246,207, 21, 10,133, 23,165, 52, +183,170,245,201,227,241, 82, 91,182,108,105,203,231,243,153,113,227,198,241,210,211,211,139, 34,171,231,229,229,225,234,213,171, +168, 87, 47,127, 87,255,203,151, 47,209,168, 81,163, 50, 57,199, 47, 8, 77, 4,176,106,206, 96,231, 13,143,131,147,103, 0, 88, + 95,171,110,117,248, 95,191,133,251,254,129,139,190,105,204,110,235, 53,178,245, 47, 98,175, 33,243, 27,180, 28,207,149,152, 57, +224,200,185,179,220,240,160, 3,107,228,242,208, 58, 0,230,149, 85, 78, 66, 8, 40,165,159,132,114,224,114,185, 56,118,236, 88, +101,175,253,244,254,253,251,167, 76,158, 60, 89,144,156,156,140,215,175, 95, 67, 38,147,193,200,200, 8,215,175, 95,103, 0,236, + 60,118,236,216,245, 99,199,142,245, 64,126, 92,156,219,149,233,159, 38, 38, 38, 62,221,187,119,199,235,215,175,241,244,233,211, +179,148,210, 16, 66,200,217,183,111,223, 14,237,216,177, 35, 14, 29, 58,228, 83,150,208, 42,139,147,101,217,226, 49,147, 50, 11, +250,110, 48,128,111, 42,219,238, 5, 11,120, 59, 0,128,149,149, 85,188,157,157,157, 89,112,112, 48, 92, 92, 92,160,209,104,218, + 86,182, 47,101,103,103,255,190,125,251,246, 63,198,142, 29,139, 95,126,249,101,228,233,211,167, 71,246,234,213, 11,222,222,222, + 56,120,240, 32, 66, 66, 66,214,235,147, 86,172,180,107, 47, 16,142, 33, 13, 27, 54,156, 86,189,122,117,108,220,184, 17,161,161, +161,235, 86,173, 90,181, 56, 36, 36, 4,245,234,213, 19,189,122,245,138,169,202, 24, 2, 0,102,102,102,102, 90,173, 22, 23, 46, + 92,248,155, 82, 58,155, 16, 98,187,101,203,150, 97, 18,137, 4,153,153,153,138,176,176,176, 17,148,210,139,255,238,177,142, 18, +178,116,252,132, 25,123, 38,140, 31, 97,212,170,101,115,200,115, 18,160,200, 75,129, 60,247, 3,182,239,191, 1, 66, 56,176,177, +113,128,173,189, 51,222,191,143,195,195,203, 87,212, 50,185, 98,139, 80,203,174, 47,159,115,122, 62,103,139,124, 78,185, 44, 21, +138,188,212, 34, 78, 91, 91,199, 2,206,247,120, 16,120, 69,169,144,201,126, 87, 83,242,219,215,188,246,255,101, 84, 58,215, 97, +113, 72,165,210,153,147, 38, 77,242, 90,184,112,161, 21,195, 48, 92, 75, 75, 75,188,127,255,158,249,243,207, 63, 51,243,242,242, +102, 86,165, 64, 60, 62, 63,196,205,189,158, 87,191,126,253,152,190,125,251, 8,126, 24,219,131,103, 99,107,139,236,172, 12,188, +121,253, 2, 17,175,130,224, 86,175, 25,150,175,218, 12, 84,171, 86, 97, 34,201,188,148, 55,119, 36,118,238,189, 87,254, 52,239, + 84, 7,207,239,204,234, 53,106, 38,104, 94,199, 28, 26, 45,131,132,132, 4, 92,188, 16,172, 9,123,118, 63,135,101,212, 67,101, +105,250,165,224,185,155,255, 84,180,183,137, 29, 57,182,118,195,246,185, 59,247, 30,158,191,112,198,120,147,142, 30,221, 16,122, +235, 16,206, 94, 58, 37, 83,170,212, 27, 4, 92,108, 10, 77,167,242,202,214,129, 82,169,212,148,220, 16,165, 84, 42, 53,159,219, +216, 7, 15, 30, 68, 74, 74,138, 58, 54, 54,246, 26,195, 48,167,203, 74,246, 92, 26,182, 81,170, 30, 64,200,173,159, 60, 60,122, +252,116,253,186,209,232, 5, 11,212, 35,127,248, 97, 30, 84, 42, 13,132, 66,202, 51, 49,225, 64, 36,226,191,124,240,192,120,235, +148, 41,150, 68,173,190,121,168,156,176, 1,165,224,139,239, 58, 44,102,209,194,232,241,179,161, 40,102,209,122,244,244, 13, 42, + 99,209, 42,184, 49,226, 8, 33,223,204, 88,250,211,185,161,221,191,109,208,184, 70, 77,145,141,107, 77, 72,236,237,145,145,150, +134, 7, 79, 35,180,171, 78,157, 11, 43, 16, 89,122,197,149, 97, 89, 54,127,145, 59,128,111,103, 46, 4,225,114,129,130, 48, 14, +133, 59,135, 92, 91,183, 7,225,241,160,163, 44, 84, 42, 21,213,163,156, 9,132,144,129, 35, 71,142,188,125,233,210, 37, 78,247, +238,221,155,159, 63,127,158,253,156,190,163,213,106,157, 11, 4, 87,142, 88, 44,230,141, 25, 51, 6, 90,173, 22,114,185, 28,217, +217,217, 8, 15, 15, 87, 13, 30, 60, 88, 84, 32, 32,180, 67,135, 14,173,112,252,248,253, 76,130,114,206, 96,231,109,150,188,216, + 97, 57,233, 33,174,150,188,216,152,111, 26,179,219,126, 63,147,160, 92, 57,187,218,234,244,216,128, 55,201,178,235,123,142,156, + 59,203, 29,213,127,160,206, 89, 18,185,200,200,150,254,217,165, 79,133,131,218, 39,193, 73,245, 17, 89, 37,145,155,155,187,120, +217,178,101,222, 82,169,212,185, 71,143, 30,130, 6, 13, 26,224,241,227,199,184,116,233, 18,243,232,209,163,120,153, 76,182,132, + 82,170, 4,112,163, 42,117,234,238,238,238,202,227,241, 10, 93,105, 59, 10,222,222,113,254,252,249,161,227,199,143, 71,205,154, + 53, 27, 18, 66, 68,180, 18,247, 17,165,180,200,203,240,133, 39,138,168,173, 91,183, 58,217,219,219,147,171, 87,175, 50, 92, 46, +183,210,150, 27, 74,233, 65, 66, 72, 91,173, 86, 59, 97,226,196,137,240,244,244, 4,195, 48, 56,122,244, 40, 14, 28, 56,176,190, + 50,185, 91,203,194,155, 55,111,130,226,227,227, 59,205,155, 55, 15, 27, 55,110, 92, 60,111,222, 60,196,199,199,227,205,155, 55, + 47, 62,135, 55, 39, 39, 71, 17, 23, 23, 39,110,215,174, 93, 43, 23, 23,151,176,209,163, 71, 55, 26, 63,126, 60,214,175, 95, 79, +239,222,189, 59,136, 82,122,245, 63, 49,129,191,142,204,240,109, 82,219,238,250,170,213,191,255, 92,167,182,235,228,113, 99,134, +112,221,221, 26, 65,150,157, 0, 43,107, 59, 56, 87,175,133,180,212,116, 92,187,118, 85,151,158,158,117, 80,199, 33, 43, 35, 35, + 51,146, 62,135,211,201,185, 22, 82, 83, 83,113,229,202, 21, 93,150, 52,103, 31,180,156, 85,175, 98,165, 41, 48,160, 66, 75, 86, +105,139,225,137, 62, 11,111, 11,118, 30,110,205, 15,239,144,111,229,146, 74,165, 51, 41,165,233,250, 42,115, 82, 50,136,218,224, +193, 2, 92,190,220, 20, 90,237, 55,213, 76, 77,191,165, 44,219,186, 89,179,102,146, 33, 67,134,176, 30, 30,237,133,102,102,102, +164, 97,195,198, 57,217, 89, 89,150, 0, 64, 1, 93, 69, 42,186, 48,169, 52,143,203,239,170,211,105,154,228,151,181,226,164,210, +250, 40,243,218,118,196,134,199, 98, 57,135,144, 49, 44,165,135, 24, 14, 86, 70,165,208,180,170, 62, 61,149,112,251, 21,166,156, + 89, 92,217,167,188,226,174, 67, 14,135,235,235,224,224,176, 36, 33, 33, 33,149, 82,170,171,170,101,163, 48, 5, 79,239, 89,179, +180, 45,191,251,142,177,172, 94,157,165,148,234, 98,130,130,200,163,139, 23,249,143, 46, 94, 52,210,170, 84,119,206, 80, 26,165, + 15,167,163,163,227, 58, 63, 63, 63,189,215, 94,245,233,211,231, 85,225,186, 45,125,235,179, 78,109,231,235,181, 93,157,190,171, +237,154,239,158,142,138, 73, 66, 84, 76,226,141,119, 81, 9,221,171,210, 70,197,147, 74,147,130, 16, 14, 84,143,164,210, 37, 57, +173,173,173,159,241,120, 60,231,202,220,176, 58,157, 46, 41, 45, 45,173,133,158,229, 28,238,234,234,186,254,253,251,247,231,116, + 58,221,236, 47, 97, 33, 36,132,180,231,114,185, 87,116, 58,157,113, 73,139, 87,161, 24, 35,132,212, 16,137, 68, 31, 45,134, 47, +143,115,195, 79,141,127,110,215,177, 99,255, 71,247,239,159,159,191, 58,236,163,117, 67, 51,250, 91,142, 29, 62,109,230,111, 39, +118,110, 93,176,237,124,230,193, 10,173,205,118,118,119, 1,184, 21, 10, 46, 61,234,178, 85, 5,150, 97, 35, 83, 83,211,117, 0, +134,178, 44,107, 77, 8, 73,167,148,158, 44, 38,178,170, 92,159, 92, 46,119,125,253,250,245,103, 70, 68, 68,156, 96, 24,102, 92, +177,243, 55,214,169, 83,103, 90,108,108,236, 14,173, 86, 59,191, 18,247,187, 89,199,142, 29,165, 91,183,110,229,204,158, 61, 27, + 1, 1, 1,150,148, 82,233, 23,106,119,123, 11, 11,139, 63,116, 58, 93, 3, 74,169, 95,110,110,238, 98, 74,169,172,178,156, 5, + 33, 30,134, 58, 57, 57,205,119,115,115,115,139,140,140, 12, 73, 76, 76,220, 80,210, 26,244, 25,229,244,254,254,251,239,253,182, +108,217, 66,170, 87,175,142,248,248,120,204,154, 53,139, 94,184,112,161, 15,165,244,114, 85,199,100, 66,200,210, 41, 83,166,172, +254,225,135, 31,138, 4,237,186,117,235,232,229,203,151, 71, 83, 74,125,171, 58,206,127, 73,235,125,195,218, 54,181, 41, 87,183, +166, 89,227, 6,131,126, 28,217,159, 60,122, 26,137,199,143, 2,145,144,148,116,158,229,112,150,188,121,147, 30,249,185,156,129, + 79,223,224,113, 96, 32, 77, 78, 74, 62, 3,202,253,233, 85, 84, 90,212,191,235,218,255, 9, 86,173,210, 92,135,164,138,169,176, + 42,221, 97,136, 62,209,106, 29, 29, 29,145,145,209,214,136,199,243, 16,137, 68, 94, 28, 46,247, 78,102, 90,218, 44,125,133,214, +215,232,216,159, 76,232,117,136,176,172,148, 4, 85,225, 44,185,144,189, 42,156,149,225,208,151,179,172,164,210,172, 74,149,100, +197, 48,207,182,209,178,235,160, 36,167,179,179,243, 4,150,101, 93,245, 45, 19,135,195,137, 73, 72, 72,216, 95,149,250,116,115, +115,163,111,223,190, 5,165,148,124,201,118,255, 26,125,233,255, 19,167,239,230,166,142,245,154,212,159, 31, 26, 20,190,177,192, +173, 88,132,149, 51, 44, 77, 61,186,116, 94,246,192,255,238, 47,203,183,101,230,254, 39,203, 73, 8,225,208,202,238,110,169, 34, +103, 97,144,208,202,114, 10, 4,130, 61,109,218,180,153,240,248,241,227, 63, 24,134,153,248,255,177,127, 18, 66,188,185, 92,238, + 60,119,119,247,230,111,222,188,121,161,211,233, 54,150, 39,178, 42,241,240,187,196,213,213,117,170, 64, 32, 16,229,229,229, 73, +147,146,146,150, 81, 74, 79,255,183,213,103, 67, 55,171, 86,148, 22, 5,221, 94, 19,254, 54,227,201, 23,227,164,172,142,165,220, +213, 17, 81,233,207,255,221,237,254,191, 46,178,202,178,114,241,254, 93,133, 40, 20, 74,229, 34, 41, 41, 30, 64, 60,128, 51,255, +173,149,169,143,200,170,164,185, 49,229,191,129,163, 36, 10,132, 84,224,151,224, 42, 41,154,190, 38, 34, 35, 35,137,225,150,255, +239,195,143,179, 67,146, 0,204,106,229,245,233,103, 5,226,106,190, 87,223,255,124, 57,171, 34,178,170,202, 89,213,132,207, 26, +141,102, 50, 33,100, 78,101,118, 43,254,211, 80, 32,170, 46,127, 5,222,181, 0,214,254,183, 95,255,171,200,140,103, 0,250,252, +183,115,254, 63,235,147,149, 75, 42,109,128, 1, 6, 24, 96,192,127,245,160,174, 48,212,130, 1, 6,252,119,161,184, 85,171,184, +240, 34, 0,186,150,113, 35,223,170, 4,121,215, 42, 12, 20,183, 12,156, 6, 78, 3,167,129,211,192,105,224, 52,112,254,255,226, +252,167,138,172,143,196, 85,241,227,194, 93, 79, 95,227, 5,160,171,129,211,192,105,224, 52,112, 26, 56, 13,156, 6, 78, 3,231, + 63,249, 5, 96, 98, 89,199, 6,215,161, 1, 95, 29,219, 7, 16, 39, 0,152,126,142, 38,126,141,243, 13, 48,192, 0, 3, 12, 48, +224, 63, 9, 74,233,190,178, 92,135,255,113,161, 69, 8,113, 68,126,160,189, 58, 0, 34, 0,220,175,204,118,229, 82,248,172, 1, + 12, 33,132, 12, 46,184,216, 51, 0, 78, 87, 20,138,162, 16,198,198,198, 41, 74,165,210, 22, 0,140,140,140, 82,149, 74,101,241, + 92, 6, 4,159,166, 71,161,249, 63, 83,246,194,214, 90,181,106,165,168, 84, 42, 91, 61,126, 62,155, 82, 26,194,225,112, 66, 37, + 18,137,127, 68, 68,196,165,202, 92,123,151, 46, 93, 70,115,185,220, 53, 0,160,211,233,150,250,251,251, 31,254,138,237,214,182, +186,163,253, 33,141, 86,195,164,164,101, 46, 43,107,235,246,174, 62,100, 29,143, 96,126,193,255, 27,166,250,149, 31,194,162,178, +231,151, 83,190, 86,124, 62,223,199,206,206,174,103, 66, 66,194, 51, 0, 11, 40,165, 21, 70, 53,118,113,113,249,145,199,227,141, +212,233,116,181,185, 92,110, 20,195, 48,199,226,226,226,124, 13,195,136, 1, 6, 24, 96,128, 1, 21,137,173,210,222,175,148,208, +170,111, 77,236, 41, 48, 12, 4,221, 64,113,147, 0, 39, 95,167,211, 15,250,126,223,187, 62,209,106,153,252,223, 20,112,160,187, +250,142,179,207,219,219,219,121,250,244,233,104,223,190, 61, 30, 63,126,220,238,224,193,131, 99,185, 92,110, 8,203,178,119, 0, + 60,166, 84,175, 80, 10, 38, 0,250, 1, 24,209,179,103,207,174,107,214,172,225, 54,106,212, 8, 10,133, 2,119,239,222,245,216, +176, 97,195, 22, 66,200, 45, 0,199, 1, 92, 44, 47, 54,140, 82,169,180, 45,212, 76,132, 16,219, 65,131, 6, 61, 41, 46,174, 10, +242,171, 17, 74,233, 35, 66, 72,160, 78,167,123,124,230,204,153,248,250,132,180,157,228, 42,248,115,102,180,250,147,152, 73, 42, +149,202,246,194,111,107,193, 19,137,160,202,205, 65,187, 49,255,218, 5,122,243,231,249, 32, 44, 3, 46,168,212,107,245,150, 16, + 0,161, 73, 73, 73, 33,158,158,158, 49,149,109,100, 46,151,187,230,218,181,107, 14,148, 82,116,239,222,125, 13,128,175, 34,180, + 8, 33,162,111, 90, 53,187,227,119,246,132, 81, 94,102, 10,122,244, 27,122,140, 16, 50,154, 82,122,246, 35,209,212,139,216, 17, + 30,230, 79, 89,123,156, 11, 0,187,150,140, 88,176,165, 59,217, 54,235, 58,253, 64, 8,241, 2,138, 82, 54,253, 70, 41,189,179, +171, 23,177, 3, 23, 11,167,172, 61, 78, 0, 96,247,146, 17,243,119,245, 34, 91,167, 94,169,220,174, 74, 66,200,212,209,163, 71, +111, 91,179,102, 13,215,193,193, 1,137,137,137, 61, 26, 54,108,232, 78, 8,105, 88,222, 34, 98, 87, 87,215, 83,157,187,125, 95, +107,192,224, 97, 98, 27,107, 11, 36, 37,167,155,157, 58,241,199, 36, 87, 87,215,158, 49, 49, 49, 67, 13,195,136, 1, 6, 24, 96, +128, 1,101,204, 59, 85, 15,239,208,210,145, 24,203, 52,248,158,199, 37, 63,118,108,219,232,219,225,189, 58,114, 26, 54,168,139, + 87, 47,195,191,187,232,255,247,134,134,118,156,219,140,142,250,154, 8,112, 33, 40,169,252,157, 48, 90, 6,188, 27, 23,142, 3, + 0,166,142, 29,193,125,242,228, 73,221,150, 45, 91, 22, 5, 4,252,246,219,111,241,237,183,223,146, 93,187,118, 53,187,113,227, + 70,179, 3, 7, 14,104, 8, 33,135, 42, 8, 66,231, 83,167, 78,157, 13,219,182,109, 19,121,122,122, 66, 36, 18, 21,125, 38,145, + 72,208,167, 79, 31,244,233,211,135,155,148,148,212,221,207,207,175,251,111,191,253,166, 38,132,204,163,148,238,208,167,242,150, + 45, 91,214,170,148,183,175, 17, 66,222, 49, 12,243,162,105,211,166,241,245, 8,169, 59,185, 87,251,155, 83, 59,184,153,148,197, +195, 19, 10,113,100,116,254, 92, 93, 92,104,197,248, 95,133,196,204, 52, 67,108,106, 26, 2, 32, 20, 64, 8,165, 52,244,221,187, +119,225, 13, 8,105,246,141, 5,231,208,129, 76, 93,211, 74,136, 45,196,199,199,195,220,220,220,184,115,231,206,201,132,144, 21, +119,238,220,217,247,133,251, 84,219, 21,243,167, 10,164,177, 33,248,240,250, 17,230, 12,246, 16,207,218,254,215, 47, 0,206,150, +223, 17, 57,156,223, 2,217, 69,179,242,147,241, 46,203,200,200,240, 4, 0, 43, 43, 43, 33,128, 59,155,255, 70,175,217, 29, 8, +249,140,142, 46,224,114,185, 59,143, 28, 57, 50,254,199, 31,127,204, 79, 29,241,224, 1, 36, 18, 9, 86,173, 90, 85,115,238,220, +185,235, 80, 70, 34, 96, 23, 23,151, 31, 59,119,251,190,214,214,141,191, 52,204,205,204, 86,237,221,121,250,169, 99,227,122,156, + 41, 62,115, 77,183,106, 84,246, 46, 46, 46, 63, 26, 44, 91, 6, 24, 96,128, 1, 6, 84,198,154, 85,161,208,170,103, 67, 14,119, +108,225, 54,100,184,183,135,168, 73,227, 70, 16,136,254, 21, 40,186,101,171, 86,104,217,170, 21,103, 81, 94,110,183, 39, 79,131, +186,253,121,227,177,170,158, 13, 57, 29,145, 70, 71,235, 91,176,194,164,180,107,250,217,117,145,101,165, 26, 1,128, 73, 53, 91, +229,146, 11, 31,252, 59,116,232, 0,103,103,103,193,237,219,183,199,161,252,120, 41, 75, 34, 34, 34, 68, 92,110,249,241, 80, 29, + 29, 29, 49,104,208, 32,212,171, 87, 79,216,185,115,231, 37,248, 87, 58,140,143, 96,100,100,148, 74, 8,177, 5, 0, 75, 75, 75, +221,138, 21, 43, 94, 80, 90,228, 25,164,148,210, 71, 28, 14,231, 49,203,178,127, 95,188,120, 49,161, 17, 33,182,189, 91,214,187, + 63,245,135, 65, 98,250,231,150, 50, 69,130, 50, 39,167,212,247,197, 18,147, 52, 99, 19,147, 16,145,216, 40, 20, 64, 8,128, 80, + 39, 39,167,240, 70,132, 56,127, 83,207,245,198,174,217, 35, 76,245,169,203,150, 45, 91,186,123,121,121, 25,233,116, 58,200,100, + 50,236,222,189,219,220,216,216,216,188,103,207,158,203, 1, 20,117,128,134,132, 52, 25,232,200,157,184, 34,145,153, 86, 5, 33, + 83,173, 99,187, 86,177,219,215, 47, 55,107,245, 77, 71, 68,222, 57,138,204,204, 92,100,103,229,129,101,217, 79, 50, 12, 79,189, + 66, 83,118,245, 33, 27,118, 45, 30,177,144,112, 56,164, 89,255, 5,232,107,159, 61,131, 16,242, 18, 0, 95, 40, 20, 22,245, 67, + 66,136, 99,227,198,141, 55,212,253,174, 35,118, 47,253, 1,148,101, 41,128, 13,250, 90,179, 8, 33,182,166,166,166, 23,111,220, +184,209,182,117,235,214,120,252,248, 49,162,163,163, 49,117,234, 84,245,180,105,211, 4,163, 70,141, 34,115,230,204,153, 78, 8, +249,147, 82,250,240,147, 27,129,199, 27,217,111,192, 80, 97, 94, 86,142, 82,173,210,168, 45,173,171,177, 42,153, 82,158, 46,205, + 81, 14, 29, 49, 65,253,242,249,223, 35, 1,124, 34,180, 62,167, 62, 13, 48,192, 0, 3, 12,208, 27,173, 1,216, 0, 72, 3,240, +180,196, 49, 10,254, 71, 41,199,233,200,247, 74, 89, 21,227, 74, 71,254,178, 31, 27,228,199,248,124, 2, 64,250, 57,133, 43, 43, + 42, 60, 80, 16, 25,190, 32, 64,113, 97,160, 98, 82, 76,104,209,136, 52, 10, 38, 51, 10,186,140,119,208,229,126,154, 62,137, 24, + 85, 67,182, 66,135,248,168,112,140,158,181, 10, 17,105,101, 71,228,246,174, 79,180,230, 66,240, 76, 5,128, 64, 92, 77, 53,124, +253,245,192, 86,173, 90, 41,151,120,114,188,215,237,202,183,116,205,153, 56, 2,237,102,255,121, 61, 42, 42,138,113,116,116,196, +143, 63,254, 8, 74,105,239,114, 46, 46, 37,247,105,160,237,235,222,237,209, 38,165,244,101, 82,111,222,188,193,189,123,247, 16, + 23, 23,135,218,181,107, 99,220,184,113,169,148, 82,187,178, 56,123,244,232,113,247,183,223,126,243,220,180,105, 83,240,145, 35, + 71, 58,148,229,110,106, 72,136, 73,179,154,246, 79, 15,172, 91, 88,155, 92, 61,196,151,199,189, 69,181, 0, 5, 41, 69,228,209, +164,164,127,213,221,175,238, 14, 48, 49, 55,133,137,153, 36,101,212,141,103, 69,150,172,130,191, 17, 45, 9, 49,115,118,176,122, +118,114,243, 50, 39,142,255, 41, 35,193,222, 71,164, 34,145,213,185,115,231,192, 53,107,214, 88, 36, 37, 37,225,214,173, 91,168, + 89,179, 38,228,114, 57,126,255,253,247,228,251,247,239, 59, 22,148,215,174, 77,189, 26, 33,187,231,142, 49, 23,140,251, 89, 84, +217,142, 36,224,241,118, 4, 94, 59, 53,205, 92, 68,145,149, 20,141,119,225, 47,241,228, 85,140,214,247,102,136, 46, 71,161,242, +166,148,250,151,246, 61, 31, 15, 82,247, 78,146,141,223,181,187, 79,221, 28, 28, 28, 48,105,210, 36,124,248,240, 1,148, 82,176, + 44, 91,180, 75, 99,201,146, 37,112,119,119,199,232, 97,125,229,162,204,160,206,126,175,232, 51, 61, 59,120,227, 26, 53,106,220, +184,115,231,142,157,147,147, 19,238,223,191,143, 15, 31, 62,192,222,222, 30,183,111,223,198,250,245,235,143, 76,153, 50,101,240, +154, 53,107,140,134, 15, 31,158,120,253,250,245,234, 37,215,212,213,172, 89, 51,220,239,250,125,137,255,249, 27,239, 44, 76,197, + 48,177,181, 2, 87, 98,166,164, 32,114,123, 91, 11,193,208,239,191,173, 27, 27, 27,219,160, 68,251,127, 86,125, 26, 96,128, 1, + 6, 24,240, 47, 92,190,124,153,122,123,123,147,194,191, 37, 37, 4, 33,228, 82,129, 30, 80, 3, 16, 22, 59, 6, 33,228, 82,129, + 53,228,163,227, 69,139, 22, 45, 89,183,110,221,203,194,227,194,115, 22, 47, 94,220,104,253,250,245,107,219,181,107,119, 50, 48, + 48,112, 5,128,183,159, 43,180,202,178,114,233,181, 70,139, 73,120, 2,129, 91, 79,240,117, 90,104,211, 35,192,102,189, 7, 76, +236,161, 32, 18,100, 36,191,199,235,251,103,243,181, 97, 69,149,248,154,242, 9, 33,183,195,195,195,241,250,245,107,196,199,199, + 67, 44, 22,127,114,222,131, 7, 15, 96,108,108, 12, 7, 7, 7,253, 76,118,234,143,243,177,134,180,172, 1, 73, 59, 79,164, 15, +159,140,219,183,111, 35, 53, 53, 21, 2,129, 0, 66,161, 16, 12,195, 84,200,199,225,228,103,252, 45,180, 98,149,118, 78,103, 66, +120,206,150, 18,191, 93,203,103,186,114, 30, 93,226, 43,226,222, 34, 73,169, 67, 53,125, 44,121, 18, 19,136, 77,196,201,198,198, +226,146, 34, 43,178, 37, 33,124, 19,137,145,223,161,213,115,236,185,207,111, 27, 41,222,134, 64, 80, 10, 71,183,110,221, 38, 1, + 88, 78, 41,205,234,220,185,179,221,154, 53,107, 44, 18, 19, 19,241,234,213, 43,156, 62,125, 58,141,201,191, 80, 66, 41, 93, 9, + 0,237, 8, 49,114,177,169,118,125,199,207, 51, 77,113,231,148, 16,227,126,174,116, 71, 50,111,208,231,242,192, 81, 83,166,109, +155,217, 7,178, 92, 5,142,223,124,142,107, 65,239,250, 2,120, 80,222,186,183, 29, 15,232, 91, 66,200,183, 3, 6, 12,120,113, +239,222, 61,235, 3, 7, 14,128, 97,152, 82, 95, 7, 14, 28,192,173,251, 65, 51, 40,213, 91,100, 57,186,186,186,222,250,251,239, +191,109,196, 98, 49,110,222,188,137,172,172,172, 34, 75,214,232,209,163, 73, 86, 86,214,176,221,187,119, 15,140,141,141,221,120, +255,254,253, 12,228,167,131,250,168, 35,112,185,220,119, 12,163,169,239,208,160, 46,111,112,159,142, 29,243, 50, 66, 32,177,106, +138, 71,193,239,252,178,164, 25, 10, 46,151,251,174,248,249, 95,162, 62, 13, 48,192, 0, 3, 12,168,180,160,185, 68, 41,237, 93, + 92, 56,149, 20, 92,133,255, 23,158,183,110,221,186,222,197, 69, 24, 0,172, 95,191,126,109,177, 99,249,151, 40, 91, 69,139,225, + 59, 19, 66, 40,128,206,165,157,164,122,117, 14,170,215, 23, 33,168,209, 1,194,122,125,193,173,225,129,184,144, 59, 8,190,186, + 25, 9, 47, 31,128,178, 58, 56,184,183,209,183, 44,202,250,245,235, 67,169,204, 95,154,165, 82,169, 32, 48,177, 80,206,153, 56, +194, 8, 0, 88,158,145,170, 88,161,245, 34, 52,237,224,133, 54, 41, 20, 79,236,242, 5,112,161,101,107,245,152, 49, 16, 8, 4, + 16, 8, 4, 69,201,103,245, 17, 90, 5, 73, 81,193,230,187,175,104,105,159,183, 18,241,143,159, 92,238,211, 70, 20, 27, 42, 84, +133, 61, 66,146,138,165,126, 41,186,203,250,100, 78, 22,155,136, 19,141,197,226, 80, 99,137, 73,113,161,245, 14, 0, 40,159,239, +123,116,165, 79, 83,147,148, 40, 19,229,211,219, 72, 86,178, 26,179,210,105, 86, 94,189,122,213,150,199,227,217,235,116, 58,196, +197,197,225,229,203,151,216,186,117,107, 74,110,110,110,231,160,160,160, 55,197,202,203,105,109, 44, 60,237,187,106,102, 45, 94, + 72,128,145,234, 93, 88,169,226,173, 60,216, 52,233,223,189,111,231,102,151, 39,253,176, 20,223,247,250, 14,163, 58, 55,164, 49, + 73,153, 74, 0, 55,245, 73, 96, 77, 41, 77, 36,132,116,235,212,169,211,177,230,205,155, 55,160,148,162, 73,147, 38, 24, 54,108, + 24,124,125,125, 17, 28, 28,140,156,156, 28,205,141, 27, 55,182, 80, 74, 15,234,121,195,137, 45, 44, 44,174,249,251,251,219,136, +197, 98,220,184,113, 3, 10,133, 2, 14, 14, 14,152, 54,109,154,112,253,250,245, 71,114,114,114, 6,175, 91,183,206, 40, 38, 38, +102,199,245,235,215,107, 2,224, 80, 74, 63,233, 4,106,181,122,223,113,223,195,219,166,249, 76,119,242,127,252,234,182, 42, 47, +215,188, 70,141,248, 28, 27, 11,137,233,150, 95, 87,186,168,213,234, 73,165,215,231,221, 42,213,167, 1, 6, 24, 96,128, 1,159, +218, 48, 46, 95,190, 92,166, 22, 41, 46,158, 74,138,173,202,136, 52, 0,138, 69,139, 22, 45, 33,132, 92, 42,176,120, 41, 0, 36, +125, 13,145, 85, 36,180, 40,165, 1,132, 16, 80, 74, 3,202,100, 97,117,208,196,220,131, 38,230, 30,140,219,205,192, 95,235,134, +151,248,145,170,167, 8,235,179,234,166,191, 74,165,226, 29, 62,124,184,104,221, 22, 0,232,116,186, 47,222,138,149, 17, 90, 5, + 66,239,147, 66,184,138, 36, 1,251,102, 15,254,198, 74, 39,231,171, 31,248, 33, 81,197, 50, 27,223,106,228, 79,179,232,111, 75, +202,224,188, 48,107, 18,226,239,223,130, 88, 34,137, 31,127, 47,180,184, 21, 43, 4, 64, 52, 0,184, 26,153,221, 62, 61,103,184, +135,189, 0, 2,245,229, 51, 72, 82,177,170, 61,177,218,131, 91, 75,111, 84, 80, 74, 17, 29, 29, 13,185, 92,142,192,192, 64,156, + 61,123, 54,173,164,200, 42, 40,239,221, 63, 22,140,108,107,150,251, 65,160,126,122, 11, 73, 42, 86,229,174,143,184,106,218,191, +131,128, 67,110, 16, 14,215,184, 87,199,134,152, 53,161, 63, 54,255,241, 23,163,182,237,216,123,219,197, 43, 67,242, 84,154, 37, +250,136,172, 98,101, 14, 1,208,144, 16, 34, 2,224, 53,108,216,176, 43, 3, 7, 14, 68, 64, 64, 0,252,252,252,220, 0, 36, 23, +212,255, 42, 0,118,200,223,141, 88, 86,230,120,142, 64, 32, 56,121,235,214,173, 70,142,142,142,184,117,235, 22, 20, 10, 5,166, + 76,153,162,246,241,241, 17,140, 30, 61,154,100,103,103, 23, 89,178, 2, 3, 3, 51,202, 18, 89, 0,144,144,144,112,181, 70,141, + 26,237, 59,117,234,212,191,150, 91, 61,179,168,220,156, 84,177,216,200,248,126,192, 29,193,211,191, 31,238, 72, 72, 72,120, 82, +122,125,222,214,187, 62, 13, 48,192, 0, 3, 12, 40, 27,222,222,222, 1,151, 47, 95,134,183,183,119, 64, 5,115, 73,239, 42,138, +161,194,239,241,215,173, 91,247,114,221,186,117, 31, 89,188, 62,211,210, 86,210,117,120,153, 82,154, 92,220,162, 85, 41,232,178, +227, 62,189, 0,150,173,204,197,126,242,158,133,133, 5, 99,108,108,252,145,208, 98,245,228,204, 60,127, 2, 81, 83, 71, 20, 89, +178, 10, 45, 91,232, 49,250,179,132, 22,203,178,129, 0, 62, 42,132,137, 93,189,225, 39,127,232,214,161, 97, 45, 39,142,246,244, + 86, 36,200, 25,229,242, 8,141,242,117, 46,237,251,170,148, 69,214, 69,156,140, 22, 70, 38,198,239,141, 37, 38, 37, 69, 86, 44, + 0, 72,236,221, 7, 30, 25,238,213,185, 89,189, 58, 28,230,212,239, 72,148,107,243, 22,133,107, 52, 81, 50,122,174,140, 58, 92, +254,221,119,223, 45,183,178,178, 50,218,182,109,155,121,141, 26, 53,192, 48,140,186,164,200, 50,177,171, 55,252,212,232, 30, 29, +220,237, 45, 56,218, 63,183, 35, 94,161,147,111,141,210, 30,217,163,135,200,178, 54,151, 92,223,179,118,170,177, 88,196,135, 82, +169,196,250, 93,127,226,198,195,176,222,105,161,231,175, 3,184,254, 25,125,114,124,239,222,189, 55,175, 90,181, 10, 90,173, 22, +227,198,141,195,187,119,239,110, 68, 68, 68,108,117,113,113,153,183, 96,193, 2, 71,123,123,123, 12, 25, 50, 68, 0, 96,116, 25, + 28,191, 30, 63,126,188,119,179,102,205, 16, 16, 16,128,172,172, 44, 56, 56, 56,192,199,199, 71,184,110,221,186, 35, 57, 57, 57, +131,215,174, 93,107, 20, 29, 29, 93,174, 37,235,163,126,173,211,173,222,187,121,234,188,214,223,120,112,222,190,125,195,196,181, +241,228,220,185,229,119,207,202,202,234,200, 71,245, 57,166,103,165,235,211, 0, 3, 12, 48,192,128, 47,134,203, 0,188, 75, 90, +185, 74,138,176, 66,139, 85,241,227,146,231, 23,124,174,250,220, 2,149,180,104, 21, 8,175,143,215,104, 21, 95, 4, 95, 17, 88, + 89,154, 94,226,233, 19,181, 90,159,104, 39,181, 6,111,137, 39, 7, 2, 19, 11,101,159, 85, 55,253,203, 58,215,196,196, 68,111, +139, 22,171, 82, 86, 36,156, 42, 37,180, 10,214,104, 93,163,148,126, 36,180,170,217,215,243,252,105,225,204, 45, 30, 3,123,112, + 82, 38,180, 67, 86,158, 74,181,224, 21,195, 38,200,203, 23, 89,249,179,184, 54, 70,108, 34, 9, 53, 50,249,104, 93, 86, 28, 0, + 24,219,213,109,179,104,246,244, 93, 93,134,247, 33,105, 83, 60, 32,205, 82,168,230,189,100, 72,162,130, 14,126, 69,233,157,210, +232,110,223,190,189, 23,192,222,206,157, 59,167,152,152,152, 32, 47, 47,239,147, 54, 40, 44,111,135,129, 61, 56, 41,227,219, 34, + 83,166, 81, 45,120,201, 32, 73,193,158,172, 72,100,217, 84, 51,189,190,103,205, 84,113, 82, 66, 44, 4, 2, 1, 36, 18, 9,110, + 62, 8, 69, 90,216,133,207, 17, 88,224,114,185, 43,150, 44, 89,178,124,218,180,105,200,200,200,128,159,159, 31,122,245,234,133, + 19, 39, 78,212,184,114,229,202,102, 47, 47, 47,112,185, 92, 92,186,116, 9, 90,173, 54,178,140,246,236, 63,113,226,196,121, 3, + 7, 14,196,147, 39, 79,144,156,156,252,145, 37, 43, 43, 43,107,216,174, 93,187, 6,198,196,196, 84,104,201, 42,129, 54,174,117, + 90, 8, 22, 47,219, 4,149, 60,149,151,150,248, 56,224,246, 77,206,163,204,204, 76, 49,128,236,170,214,167, 1, 6, 24, 96,128, + 1,122, 91,181,202,210, 34,105, 5, 34, 42,173,180,227, 98, 2,171,180, 99, 82,194, 10,166, 46,241,121,240,215,188, 38,189, 44, + 90, 60,187,198, 96, 82,194,138, 9,173,212,143, 62, 55, 50,181,212,203,117,168,101,192,219,115,176, 40,142,150, 81, 70, 70,134, +145,181,181,181,178,184, 64, 16,139,197,112,116,116,132, 84, 42,197,190,125,251, 0,160,162, 69,209,140,217,192, 31,208,102,248, + 56, 60,117, 22,130,106, 53, 69,150,173, 61, 99,198,124, 36,182, 4, 2, 65,225,218,176,138, 38,221,191, 9, 33,177, 0, 30, 81, + 74,105, 75,247,218,191, 24,153,152,140,105,213,180,142,245,172,169,227,249, 49,169, 42,248,123, 44,206,250,243,215,133,146,120, + 42,153,246,158,102, 61,172,128, 47,170,223,238,163, 37, 45, 89, 9, 45,220,107, 47, 53, 18, 27, 77,248,166,177,187,253,162, 57, + 83,249, 49, 41, 42,226,223,102, 65,206,217,223, 22,136,163, 97, 58, 47,158, 74,239,232,209, 60,203,123,245,234,181,156, 82, 74, + 89,150, 93, 6, 0,197,203, 59,199,103, 2, 63,234,131, 18,183, 61,150, 74,207,254,186,208, 52, 30,229,151,215,166,105,255, 14, +118, 22,102,215,247,172,157, 38, 78, 78,124, 15,145, 72, 4, 83, 83, 83,196,167,100,131,207,227, 42, 62,167,179, 17, 66, 68,158, +158,158, 11,167, 78,157,138,208,208, 80, 76,153, 50, 37, 57, 46, 46,238,220,169, 83,167,166,252,252,243,207,188,238,221,187, 35, + 57, 57, 25, 27, 54,108,208, 62,120,240, 96, 45,128, 13,165,246, 71, 30,111,252, 47,191,252, 66,147,146,146, 72,116,116, 52, 28, + 28, 28, 48,125,250,116,225,218,181,107,139,214,100, 85,198,146, 85,136,132,132,132, 0,183, 58, 46,232,123,117, 11, 24,173, 42, + 32, 43, 35,238,222,235, 40,105,128,165, 80, 56,215,163,101,211, 42,213,167, 1, 6, 24, 96,128, 1, 95, 4, 79, 43, 56,254,143, +162, 52,215,161,190, 66, 43,114,251,210,177,110, 99,167,205,135,113,141, 14, 80,133,159, 7,155,151, 82,100,209, 50,146, 88,192, +210,165, 1,178,100, 42,156,185, 29, 4, 0,145,149, 41, 88,110,110, 46, 90,182,108,137,157,163,221,187, 40,115, 51,140,140, 1, +168, 68,102,202, 11,194,142,254, 87,174, 92,145,179, 44,123, 18,192,149, 10,104, 86, 52,106,212,104,199,166, 77,155,132, 13,134, +143, 69,222,227,251, 37,173, 83, 48, 54, 54,134, 72, 36, 66, 72, 72, 8,252,253,253,213, 0, 86, 84, 80, 97,127, 51, 12, 19,124, +242,228,201, 4,183,218,206, 61, 58,183,110, 51, 99,201,226, 69,166,175,238,223,192,178,181, 59,216,186,173,186,103,175, 63,113, + 33, 55, 91,226,242,173, 60,233,245, 11, 61, 46, 53,184,132,200, 74,106, 80,203,165, 75,187, 22,205,231, 47, 91,182,212,236,229, +253,155,248,249,183, 61,212,173, 89,215,236,223,206, 94,204, 73, 23,215,252, 78,145, 18,254, 68,159, 58,188,123,247,238, 94, 0, +123, 11,143, 75,150,119,209,170,173,172,123,235, 30,210,245, 39,206,202,114, 76, 93,186,150, 87, 94,219,134, 3,218, 87,119,176, +188,190,125,245,100,241,135,196, 56,136, 68, 34, 72, 36, 18,196, 37,103, 97,249,150,211, 50, 13,203,246,248,204,190, 40, 50, 53, + 53, 21,105, 52, 26,236,220,185, 19,113,113,113,237, 40,165,113,132,144, 61, 67,135, 14,221,214,164, 73,147,250, 47, 95,190,140, +204,203,203,155, 70, 41,125, 93, 22, 73,181,106,213,218,217,216,216,144, 71,143, 30, 97,242,228,201,234,233,211,167, 11, 70,141, + 26, 69,164, 82,105, 85, 45, 89, 0, 0,103,103,103,207,126,222,237,209,161,219,148, 0,181, 50,235, 94,204,235, 35, 1, 28,250, +208,168,101,243,166, 85,170, 79, 3, 12, 48,192, 0, 3,254,127,160,188,197,240,229,102,163,246, 4,120,238, 86,152,212,200, 73, +240,193,247,215,233, 52, 55, 42,144, 42,158,236,165, 57,231, 39,208,203, 27, 70,209, 43,219,103,209, 41,222,141,230, 86,141,230, + 0, 0, 32, 0, 73, 68, 65, 84,104,125, 91,242,193,221, 10,147, 60, 1, 94,121,217,189,123,213,131,182, 91, 29,208,110,117, 64, +189,221,161, 5,176,164, 69,139, 22, 23,124,218,128,210, 87,199, 41,125,117,156,250,180, 1, 5, 48, 25,128, 68,223,140,225, 0, + 28, 0,236,107,217,178, 37,115,231,206, 29, 26, 49,184, 43,125, 94,223,154, 78,155, 54,141,254,252,243,207,116,196,136, 17,212, +198,198,134, 65,190,191,212,161, 34,206,190,125,251, 58, 83, 74, 81,189,122,245,106,173, 26,212,253, 16,114,219,143,222,243,221, + 70,255,240, 25, 64,219, 54,105,144,110, 95,191, 83,176,177, 67,189,230,250,102, 54,183,183,183, 95, 76, 41,237, 65, 41,117,160, +148,194,205,205, 74,210,162,126,221,164,224, 91,126,244,254,209, 29,244, 15,159, 1,244,155,166, 13, 51,156, 27,120,189, 54,178, +173,223,166,170,217,210, 75, 45,111,227,250,233,118,117,219,191, 40,171,188,197, 57,107,181, 25,114, 49, 33, 41,133,254,253,247, +223,244,202,149, 43,244,254,253,251,212,247,212, 69,234,210,122,112,158,117,147,239, 59,124,110, 86,119, 0,230,222,222,222, 52, + 50, 50,146,246,236,217,147, 2, 48,175, 10, 39,128, 11, 49, 49, 49, 52, 44, 44,140, 46, 89,178,132, 2, 56, 60,117,234, 84, 69, +118,118, 54,237,218,181,107, 28, 0, 14, 74,244, 69,125,203, 89,219,213,105,125,255, 62, 29, 87,248, 76, 30,232,249,185,245,249, + 5,179,194, 27, 56, 13,156, 6, 78, 3,231, 63,158,243,127,249, 85,160, 67, 38, 22,251,219,162,240,179,114, 45, 90,119,243,173, + 1,123,155,216,145, 99,107, 55,108,159,187,115,239,225,249, 11,103,140, 55,233,232,209, 13,161,183, 14,225,236,165, 83, 50,165, + 74,189, 65,192,197,166,208,116, 90, 97, 28,138,203,175, 41,191, 20,235,145,216,178, 14,138, 98, 48,189,149, 2,148,210, 61,149, + 84,146,201, 0, 38, 18, 66, 54,121,121,121,173,153,208,161,205, 0,159,246, 93,160,213,106,225,235,235,139,247,239,223,159, 3, +176,148, 82,170,151,197, 45, 52, 52, 52,189, 81,221,154, 51, 45,141, 5,243,167,141,232,111,147,246,238, 21, 18,194,159, 3, 0, + 84, 42,133, 54,249, 77, 64,179,202,148,207,216,216,248,111, 27, 27,155, 8, 27, 27, 27,169, 78,149, 55,209,136,103,182,108,202, +176,126,182, 25, 49,175, 17,255, 50,223, 51,170, 82,202, 53,241,111,252,235, 87, 69, 73,215,172, 89, 83,100,194,199,164, 82,203, +171, 86,106, 63, 68,134, 55,215,135, 71,174, 82,175, 93,185,217,247,187,213,243,199,136,204,204,204, 16, 20,246, 22,203,126, 63, + 33, 83,168,181, 61,210, 66,206, 63,252, 66,170, 31, 90,173, 86,239,141, 14,101, 96, 97,179,102,205,234,173, 89,179,198,109,244, +232,209,248, 92, 75, 86,113,188,139, 78, 88,212,185,115,231,134,111, 35,130,188, 44,141, 5,199, 62,167, 62, 13, 48,192, 0, 3, + 12,248,127, 3,111, 74,233,190,194, 8,241, 5,174,196,231,250,184, 14,243,133, 71, 10,149, 3, 88, 85,219,142,236, 89,188,102, +243,114, 14,217, 50,134,165,244, 16,195,193,202,168,116,154,246,153, 19,175,220,187, 62, 97,190,251,126, 4, 15, 0,248, 60, 48, +159,193, 21, 9, 96, 32, 33,164,245,254,135, 79,126, 42,120,123, 53,165,180, 82,190, 92, 83, 30,194, 60, 26,214,118,234,216,162, +145, 17, 87,167, 64, 66,248, 59,100,202,148,184,249,242,125, 22,135,114, 14, 85,182, 92, 81, 81, 81,119, 1,160,113,221,154,225, + 29, 27,214,113,233,212,178,145,152, 79,212, 72,120, 21,132,108,133, 26, 55, 94,190,207, 6, 33, 85, 94, 80,253,165,202,251, 33, +228,194, 83,155,166,253,187, 18, 66,110, 45,241, 25, 46, 90,254,251,201, 47, 42,178, 0,200, 19, 19, 19, 51,228,114,185, 85, 82, + 82,146, 26, 85, 12, 18, 71, 41,125, 75, 8,105, 50,107,214,172, 85,243,230,205,155,255,235,175,191, 10,170,178, 38,171, 44, 72, + 19,223,159,239,212,232,203,181,191, 1, 6, 24, 96,128, 1,255,124, 20,174,211, 42,185, 94,171, 82,225, 29,162, 82,104, 26,128, +105,117,234,144, 57,239,222, 81,245,151, 42, 92,105,150,174,207, 20,111, 79, 1,244,169, 50, 1,135,228, 62,142,124,159,247,119, +228,251, 60,176,148,178,148,170, 56, 28,196,203, 52,154,181,111,162, 18,174,127, 70, 43,232,158,190,141, 83, 60,123, 23,175,164, + 44, 75, 89, 74,213,132,224,131, 86,203,174, 13,139,138,189,248,223, 80,222,180,144,243, 15,237, 27, 14,232,248,240,239,176, 57, + 50,153,102, 71,218,171,243,129, 95,176, 93,180,132,144,145,237,218,181, 27,171,211,233,246, 80, 74,181,159,193,165, 6,176,144, + 16,114, 46, 52, 52,244,116, 96, 96, 96,242,151, 16, 89, 95,181,253, 13, 48,192, 0, 3, 12,248, 71,162,202, 73,165,203,194,151, + 20, 89,255,141, 8,141,140,105,249, 53,120,195, 34, 99, 26,255, 47,148,247,195,171,115,207, 0, 12,251, 74,157,241, 6,128, 27, + 95, 82, 84, 19, 66, 92, 1,112,191,136,200,250,138,237,111,128, 1, 6, 24, 96,192, 63, 19,159,157,235,208, 0, 3,254,203,159, + 36, 40, 0,198, 80, 19, 6, 24, 96,128, 1, 6,252,135,230,161, 50, 45, 90, 4, 64,215, 50,190,116,171, 18, 74,174,107, 21, 10, +117,203,192,105,224, 52,112, 26, 56, 13,156, 6, 78, 3,231,255, 47,206,127, 34, 8, 33, 14,200,143, 86, 95, 20,181,190, 72,124, +125,229,237,142,134,173,175, 6, 78, 3,167,129,211,192,105,224, 52,112, 26, 56,255,233,225, 29, 38, 22,255, 91,252,197, 49, 24, +252, 12, 48,192, 0, 3, 12,248,138, 79,250,162,130, 68,242, 85,250,220, 0, 3,254,135,250,122,209,174,195,226,107,182,120, 85, + 32,170, 91, 96, 9,123,251, 21, 11,235,227,224,224, 48,177,105,211,166, 13, 4, 2, 1, 39, 55, 55,119,165,191,191,255,138,146, +231,117,106,196,127,198,229,192,185,216, 55, 1,194, 5, 56, 28,232, 40, 18,238, 5,203, 91, 25,154,254,191,186, 83,214, 48, 54, +179,249,139,112,184, 66, 29,163,129, 78,171, 1,240,175,116, 76, 44,203,188,103,212,202,238,101,125,223,161,249, 0, 23, 70, 71, +215, 3,236, 46, 2,206, 20, 10,118, 55,161,156, 41,148,131, 93,132,197,100,240,180, 27,192,240,231,241, 4,188,165, 73, 65,103, +226,255, 9,117,246,231,159,127,114, 63,231,251,131, 6, 13, 42, 53,129,168,147,147,211, 37,177, 88, 92,167,172,239,201,100,178, +228,164,164, 36,175,127,120,127,236, 4, 96, 59,128, 70, 37, 62,122, 13, 96, 38,165,244,246,231,254, 70,103, 66,120,118,192, 36, + 1,176, 0, 0, 52,192,111, 41,192,222,187, 95,104, 35,199,151,128,173,173,237, 61, 30,143,231, 38,147,201,100, 57, 57, 57,181, +205,204,204,162, 76, 76, 76, 76, 24,134,137, 76, 77, 77,237, 84,201, 58,157,138,130, 84, 90,132,144,249,148,210, 93,149,249,220, + 0, 3,254, 87,240, 89,187, 14, 9, 33,238, 0, 60, 11, 94,157, 90,183,110,109, 39,147,201, 64, 8, 73, 1,112, 15, 64, 0,128, + 0, 74,233,155, 47, 81, 88, 46,151,187,113,235,214,173,115,167, 79,159, 94,148, 12, 58, 36, 36,164,244,115, 57,112,190,227,119, +203,246,105,232, 27,180,238, 58,168, 64,104,113, 0, 89, 50,188,186,181,169,234, 96,107,106, 97, 97,177,146, 16, 50,152,195,225, + 84, 56,169,177, 44,171,163,148,158,145, 74,165,203, 41,165,185,149,249, 45,137,137,145,150,209,233, 74,253, 13, 30,151,171,203, +147, 41,203, 12,123, 97,101,101, 21,200,225,112,106, 21, 79,152, 93, 80,254, 82,255, 47,126,204, 48, 76, 66, 90, 90, 90, 43, 61, +234,194,136,195, 19,204, 36, 68,208, 13, 28,214, 29, 32, 32,224,188, 97,117,234,155, 44,163,217, 74, 41, 85,126,142,200,114,168, + 94,251,254,236,165,235,157,195,194, 95, 99,137,207, 8,252,186,253, 48, 22,207, 28,139,173,251, 78, 96,230,196,225,104,216,176, + 81,185, 28, 58, 74, 86, 46,155, 57,210,107,205,214,227,173,151,206, 28, 97,178,102,235,241,214, 75,103,141,144,172,217,118,188, +213,210, 89, 35, 37,171,183, 29,107,245,211,172,145,102,107,182, 29,215, 0, 24, 87,149,114,142,112,119,146, 17,134, 41,245,105, +155,242,120,170,227,111, 18, 77,254, 19, 55,245,232,209,163,155, 42, 20,138,160, 17,221, 90,172,111,238,238,148, 88,218, 57, 25, + 31, 18,157,162, 34,158, 47,226, 11,140, 91,246, 91,116, 56,164, 60, 62,145, 72, 84,235,245,235,215,110, 44,203, 66,167,211,129, + 97,152,162,191,106,181, 26,157, 58,117,250, 34, 27,103, 8, 33,125, 0,172,204,191, 89,177,142, 82,122,250, 51,184, 36, 60, 30, +111,182, 80, 40,244,100, 24,166, 1, 0,240,249,252,112,149, 74, 21,192, 48,204,102, 74,105, 94, 37, 41,183, 36, 38, 38, 54,148, + 72, 36,208,104, 52, 69, 9,232,185, 92,110,125, 23, 23,151,157, 0,220, 62,247,250,237,128, 73,237, 61, 60,182,142,154, 59,151, +171,184,119, 15, 91, 15, 30,220,130,156, 28, 0,216, 89,209,119, 69, 34,209,117, 14,135, 83,163, 50,191,199,178,236,123,149, 74, +213,189, 50,223,225,241,120,110, 73, 73, 73,182,142,142,142, 0, 0, 19, 19, 19,147,226,199,149,177,100, 1,216, 64, 41, 53, 6, + 0, 14,135,179,181,125,251,246,237, 8, 33, 12, 0,202,178, 44,135, 16, 50,156,101, 89, 94,193,249, 27, 8, 33, 7, 41,165, 42, +195,180,109,192,255,162, 53,171, 44,177,197, 43,231, 75, 87, 0,120,182,110,221,218,120,216,176, 97,240,244,244,132,155,155, 27, +140,140,140,242, 7,241,140, 12,187, 23, 47, 94, 12,185,119,239,222, 16, 63, 63, 63, 16, 66, 20, 0, 30, 80, 74, 75,189,169,187, +246,233, 56,221, 72, 34,218, 6, 0,105, 9, 25,201, 9,209,169,219,146,147,147, 55,208, 98,217,168, 9, 33,181, 71,141, 26, 53, +103,198,140, 25,184,116,233, 18, 78,156, 56, 1,149, 74,133,220,220, 92,248,251,251,151, 94, 80,121, 42,164,254,235, 1,147, 24, + 32, 46, 0, 16,219, 2, 38,118, 85,174, 44, 11, 11,139,149, 51,103,206,156,213,176, 97,195,162, 40,230, 90,173, 22, 12,195, 64, +171,213, 66, 42,149, 98,206,156, 57,133, 10, 22, 44,203,226,234,213,171,211, 39, 78,156, 8, 0,179, 75,227,108,215,202,229, 25, +135,112,156, 11,109, 53, 84,167, 75,120,244, 60,190, 21,163,211,113,149, 74, 77,169,153,202,141,140, 4,229,138, 60, 62,159,239, +252,234,175,191,108, 57, 66, 33,168, 78, 7,176, 44, 40,203, 2, 40,246,162,249,239, 81, 29, 11,170,213,129,101, 88, 48, 10, 21, +218, 76,157,170, 79,167,105,207, 23, 26,159, 24, 57, 97,174,125,219,111,190,225,215,172,238, 8, 70,199,226, 93, 76,130,125,208, +179,199, 29,206, 28,217, 57,133, 16, 50,156, 82, 90,165, 56, 91, 66,177,217,141, 29,187,247, 59, 63,125, 17,134,219,119,238,225, +150,127, 0, 0,224,250,157,124, 58, 14,135, 83, 81,249, 44,172,220,188,154, 78, 31,251,189,201,234, 77, 7, 68,211,199,126,207, +251,215,223,253,162,233, 99,251,241,214,108,222, 47,154, 62,182, 31,255,151,223,118, 52, 39,132, 88, 80, 74,165,101,241,149,213, + 70,132, 97, 68,199,162, 82,184, 0,144,182,103, 15,180,169,169,112, 92,190, 28, 0, 48,178,182,157,222,238, 14, 27, 27,155,103, +124, 62,223,185,162,243,180, 90,109,133, 34,120,244,232,209,205, 20, 10,197, 51,134, 97, 40,143,199, 91, 52,162,255,119, 23,122, +116,108,150, 81,252,156,144,144, 96,171,181,107,255,250,254,116, 80, 46, 29,210,210, 52,232,210,198,209,173,122,207, 59, 28, 92, +206,132,204, 81,169, 84,136,140,140, 68,241, 36,239,197,117,109, 21, 7, 31, 14,128,173, 86, 86, 86,109, 51, 50, 50, 70, 2, 88, +146,147,147,211,148,203,229,194,210,210,114, 9, 33,228,157,185,185,249,129,236,236,236,192, 2,171, 17,171, 39,111, 39, 51, 51, + 51,223,243,231,207, 91,180,104,209,130,147,158,158, 14, 87, 87, 87,100,102,102,182,185,119,239, 94,203,113,227,198,141, 35,132, +252, 72, 41,189, 87,137,226,214, 19,139,197,116,212,168, 81, 68,167,251,215,229,254,241,199, 31,232,222,152,169, 51,185,135,137, + 92,169,166,217,183, 35,205, 39, 11, 4,130, 7,177,177,177,217,149,173, 15, 1,176, 96,212,220,185, 92, 73,108, 44, 36,193,193, + 24,153,147,195,251, 53,223,186, 85,161,208,226,112, 56, 53,124, 79, 28,114, 19, 10,133, 96, 24,166, 72, 12, 22,142, 81, 90,173, + 22, 26,141, 6, 90,173, 22, 58,157, 14, 90,141, 22,235, 86,255, 86,229,177, 80, 44, 22,139, 29, 29, 29, 83,196, 98,177,248, 75, + 76, 68, 34,145,136,119,228,200,145,225, 66,161, 16, 0,160, 86,171,209,184,113, 99, 98,152,162, 13,248, 39,137,173,210,172, 92, +229, 61,165,254, 31,123,223, 29, 22,213,209,182,127,207,246, 93,150,222, 65, 4, 21, 68,105,130, 29,176, 96,141, 49,160,177,198, + 24, 91, 18, 19,223, 68,163,177, 36, 98,139, 93, 72,172, 49, 49, 81,147, 24,203,107,195, 46,182,216,130,137, 93, 17, 5, 84, 84, +164, 9, 8, 75, 93, 96,251,158, 51,191, 63, 40,174, 8,236, 98,242,254,190,247,251,178,207,117,237,181,231,236,153,243,236,156, +153, 57, 51,247,220,207, 51,207, 12,150,203,229, 96, 24, 6, 86, 86, 86,224,114,185,245, 25, 21, 12, 28, 56, 16,189,123,247,198, +187,239,190,139,212,212, 84,201,187,239,190, 59,176, 81,102, 96,118, 20, 90,250,186,212, 12, 38,172,219,229, 19,119, 98,127, 89, +126,192, 9,192,108,131,100, 31, 78,153, 50,133, 20, 23, 23, 99,244,232,209,151,212,106,245, 80, 74,169,188, 81, 70,131,197,179, +190,239,142, 3, 75,137,100,253,245,159,136, 70,165,164, 28, 14, 71, 89,107, 58,124,205,130, 26,237,238,238,142,189,123,247, 66, +163,121, 53, 92,152,181,181, 53, 82, 82, 82, 12, 25, 56,132,134,134,114, 9, 33,163, 27, 3, 90,132,112, 60, 46,223,204,116,174, + 61,143, 26, 24, 40, 8,235,226, 85,224,228, 96, 69, 1,144, 5, 11, 22,212, 1, 55, 0, 88,186,116,169, 41,249, 4,135,207,135, + 44, 33,225, 69, 71,204,227,128, 35, 32, 32,124,128,195,171,182,162,130, 2,148, 1, 88, 61,192,234, 0,177, 91, 75, 83,116,119, +107,225,233, 27,191,106,221, 15,182,106, 29,197,222,163,231,145,145,241, 20, 92, 14, 7,222, 62,190,120,163, 79, 47,126,231,174, + 97, 45,191, 89, 50,251, 56, 33,100, 48,165,244, 70,179, 11,154,165, 98, 31, 79, 71,252,252,203,109, 56,217, 89, 98,244,176,183, + 32, 17,139,240,245,119,191, 98,197,188,105,240,245,246,194,150, 13, 43, 27,189,221,198,198,102, 89,167, 14,126,222,191,238, 63, +141,136,222,225,188,237,251,207,160, 79,239, 30,188, 95,247,159, 70,159,136, 94,188,237,251, 79,163, 79,239,158,252,237,251, 79, + 35,180, 75, 7,159, 43,197,119,151, 1,152,214,248, 51,215,171,163, 55,170,235,200,151, 39,168, 27, 8, 50, 63,249, 4, 0,234, +128, 86,115,132,207,231,123,228,229,229, 57, 27, 75,103,140, 53,168, 97,178,110,233,245,122, 20, 22, 22,146,178,178, 50,106,107, +107, 59,236,244,150,249,135, 7,245, 12, 41, 1,128,164,164, 36,251,152,152, 85,195,246,221,146, 67,121,237,123,242,239, 99, 9, +236,184,161, 17,183,142,198, 78,234, 60,106,212,168,196,134,244,170,213,234,140,142, 29, 59,210,154,227, 22, 34,145, 72, 80,175, + 77,184,251,250,250,190,194, 90,155, 96, 82,252,246,234,213,171,211, 2, 2, 2,224,231,231,119,165,123,247,238,214, 82,169, 20, +167, 79,159,134,191,191,127,160,181,181,245,245,184,184, 56,254,220,185,115, 67,182,109,219, 6, 0,159,153,208, 62, 7,244,237, +219,119,111,124,124,188, 88, 32, 16, 64,169, 84, 34, 37, 37, 5, 54, 54, 54, 16, 10,133,120,251,237,183,185, 61,122,244,112,232, +211,167,207,193,154,201,128,201, 43,160, 84, 42, 21,157, 63,127, 62, 44, 44, 44, 96, 97, 97, 1,169, 84, 10,169, 84, 10, 75, 49, +200,230, 25,158,146,233, 91,203, 36, 51, 23,111,142,221,249,195,146,139,158,158,158, 95,101,103,103,151, 53,183, 45, 40, 47, 93, +130,101, 82, 18, 96,240,238,154, 42, 54, 82,123, 68, 71, 71, 27, 99,164, 32, 16, 8, 16, 30, 30,110, 84,159,131,131,195, 33, 30, +143,231, 82,111,112, 16, 71, 71, 71, 51,105,105,105, 82, 14,135, 35,101, 89, 22,209,209,209,140, 94,175, 23,187,184,184, 92, 97, + 89,182, 64, 38,147,141, 48,166,155, 82,170, 38,132,124,193,225,112,190, 21,137, 68,188, 86,173, 90,101, 45, 90,180,232,106, 13, +155, 9, 74, 41,167, 85,171, 86,221, 36, 18,137,151, 90,173,214, 3,248,194,204,102,153,165, 9,233, 92, 77, 10,215,137, 6,128, +176,150,192,175, 30,237,224, 88,239,119, 0, 40,170,153, 40,186, 52,114, 94, 12, 32, 21, 64,123, 0,206, 53,215,110, 2, 40,105, +110, 6,155,100,180, 8, 33,212, 32, 97,221,192, 98,101,101,133,155, 55,111,130, 16, 2, 43, 43, 43, 88, 91, 91,195,198,198, 6, +114,185, 28,169,169,169,120,240,224, 1, 50, 51, 51, 65, 8,129,183,183, 55,106, 95, 32, 3, 93,117, 29,220,238,181,241, 16, 91, +138, 64, 8,208,169, 95, 48,130,123, 7,161,235,141,244, 25,238,238,238, 91,243,242,242, 30, 17, 66,120, 65, 65, 65, 31,134,134, +134, 98,221,186,117, 80,171,213,235, 26, 2, 89,134, 58, 47,165,232,186,212, 12, 78,115,118,157,126, 98, 49,254, 77, 31, 69, 94, + 94,222,154,215, 40,156,151, 58,226,162,162, 34,147,247,226, 99, 89, 22,165,165,165, 77,234,172,207, 16,172,255,246,123,219,138, +242, 2, 44,255,122, 23,116, 58, 29,102,207,158, 13,150,101,235, 62,101,101,101, 38,229,147, 50,245, 72, 6, 78,245,135,112, 0, +194, 3, 60,199, 84,227,138,236,189,223,131, 80,128, 48, 0,234, 61, 87,125,157,132, 16, 49, 87, 32,217,183,228,235,141,182,137, + 15,158,225,232,249, 68,104,229,185,200, 79, 58, 12, 0,240, 14, 31,139,253,106, 46,186, 7,251,224,243, 5,223,216, 45,252,124, +194, 62, 66,136,159,161, 25,209,148,129,141, 82, 6,203,151, 45,195,214,141,235,240,205,186,141,144,151,151,129,207,119, 4, 0, +232,245, 12,152,122,207,246,202,179, 83,250,230,194, 57, 83,200,183, 63, 29, 68, 80, 91, 87, 28, 63,123, 5, 93, 2,189,112,234, +194, 13,132,118,104,141, 51, 9,183, 17, 26,220, 6, 9,215, 82, 48,123,234, 68,114,249,212,246, 55,155, 83, 71, 27, 54,124,111, + 91, 33, 47, 64,252,202, 29, 40,220,180, 9, 89,211,166,161, 91, 77,154, 27,132, 64,224,225, 1, 8,140,215, 81,125,185,127,255, + 62,212,106,117, 67,179,125,248,251,251, 27,173,119,165, 82,121, 91,175,215,211,130,130, 2, 82, 80, 80, 0,169, 84, 74, 82, 82, +146,153,192,192,160,225,244,193,129,159, 0, 32, 38,102,213,240,253,183,229, 80, 92,217, 8,229,213,239, 32,104,125,151,179,117, +233, 20,237,199,139,183,220, 54, 24,228, 94,202,103,126,126,254,224,218, 99,111,111,239, 7,105,105,105,237,107, 77,205, 53, 38, + 68,129, 94,175,247,173, 53, 39,234,245,122,168,213,106, 12, 24, 48,128,219,212,179,219,217,217,133,250,251,251, 35, 49, 49, 17, + 27, 55,110,180,239,219,183, 47, 30, 63,126, 12, 66, 8, 86,173, 90, 69, 2, 2, 2,248, 69, 69, 69, 24, 52,104, 16, 14, 29, 58, + 20,110,172, 60, 9, 33, 86, 82,169,116,219,241,227,199,197, 28, 14, 7, 21, 21, 21, 96, 89, 22, 61,122,244, 0,135,195, 65,114, +114, 50, 22, 44, 88,128, 67,135, 14,225,200,145, 35,146,206,157, 59,111, 35,132,248, 27,154,245,155,168, 35,170, 82,169,168, 72, + 36,130, 72, 36,130, 88, 44,134, 88, 44,134, 80, 40, 68,165, 10,248,120,125,150,154, 43,118,100, 3, 59,246,244,121,127,250, 42, +206,154, 69, 31, 92, 0,112,212,212, 54, 15, 84,251,100,125,251,235,175, 27,199,149,151,115, 0,224,103, 66, 88, 45,165,223,152, +242,190, 3, 64,165,170, 28, 94,222, 30, 56,184,239, 8, 70,142, 25,214, 32,200,226,243, 5, 16,240,249,176,182,151, 26,213, 41, + 16, 8, 92, 30, 60,120,224,192,231,243, 65, 41, 5,195, 48,208,106,181, 5, 11, 23, 46,116,138,140,140,180, 58,117,234, 20, 39, + 50, 50,146,181,179,179,171,186,113,227, 70,161, 94,175,119,232,213,171,151,201,109,158, 82,250, 67,199,142, 29, 59, 29, 62,124, +248,131,232,232,232, 91,115,230,204, 89,110,120,125,245,234,213,203, 78,158, 60,233, 53,124,248,240,157,119,238,220,249,161, 57, +125,200, 95,237,231,205, 58,255,251,116,158, 56,113,162,174, 35,142,140,140,172,207,118,186, 16, 66,226, 13,254, 63,170,246, 60, + 58, 58,122,126, 76, 76, 76, 10, 33, 36,222,240,247,218,116, 53,125, 71,124, 67,231, 53,247,218,207,155, 55, 47, 40, 54, 54,118, + 85, 88, 88,216,222, 43, 87,174, 60,109, 46,208, 50,234,163, 85, 11,174, 12, 1, 87, 61, 5,144,203,229,144,203,229,200,201,201, +193,230,205,155,107, 94,104, 62,120, 60, 30,120, 60, 94,157, 63, 67, 99,114,238,248, 31,223, 1,248,174,115,231,206,252,123, 87, +227, 78,125,185,117,122,255, 46, 3, 58,113,111,159,191, 55, 10,192, 10, 0,131, 39, 78,156,232, 8, 0, 59,118,236, 40, 2,112, +234,127, 2, 50, 83, 74,227, 30, 61,122,244,185,155,155, 91,157,143,138,161,249, 80,175,215, 67, 44, 22,163,214,151, 69,165, 82, + 97,243,230,205,122, 74,105, 92, 19, 58,145,150,114, 1,143, 82, 46, 86,223,199,178, 96,153, 23,247, 47, 89,178,196,112,137, 40, + 62,169, 97, 78,140,130,188,134,202,156,214,251,174,247,251, 43,224,236, 21,243,132, 96,250,168, 9,211,220, 88,194,195,177, 11, +119,192,231,243,193, 26,176,153,124,110,245,108, 57,229,113, 30,220, 93, 2, 49,116,236, 20,215,195, 59,191,159, 14,224,235,230, +150,181, 95,112, 24,102,124,254, 57,126,218,186, 21, 11, 22, 47,171, 67,233,122,134,129,222,104, 62, 57,156, 30, 93, 2, 80, 89, +252, 12, 92, 46, 23,225, 29,125,192,229,114,209,171, 75, 59,112,185, 92,244,236,218, 30, 60, 30, 15,125, 66, 3,208,182,109, 91, +240,120, 60,142,145,122, 71, 90,202,121, 60, 74,249,221, 0,244, 82, 80, 0,218,252,252, 87,210,235,242,243, 65, 61, 29,154,219, +182,240,225,135, 31,150,229,228,228,104,235, 95,107,217,178,165,224,210,165, 75,182,141,152,237,234, 68, 34,145,116,230,241,120, +183, 75, 74, 74, 88, 11, 11, 11, 14,203, 50,108, 96, 96, 16,247,244,150,249,135,107,211,204,155, 55,255,240, 59,157,173,135,239, +138,139,167,130, 86, 61, 9,225,139,244, 31, 45,222, 34,224, 11, 36, 38, 69,188,175, 53, 35, 62,124,248, 16,198,242, 99, 56, 49, +107, 72, 74, 75, 75, 39,250,251,251, 95,250,238,187,239,236, 9, 33,248,227,143, 63,192,229,114,235, 62,233,233,233,224,112, 56, +248,242,203, 47,181,114,185,124,178,177,188,241,120,188,207, 15, 30, 60,104, 35, 20, 10, 81, 81, 81, 81,247,222,112,185, 92, 60, +120,240, 0,107,214,172,193,196,137, 19,145,157,157, 13,119,119,119,204,158, 61,219, 50, 54, 54,246,115, 0,203, 76,120,244,187, + 26,141,166,139,133,133, 5,196, 98, 49,106, 1, 23, 0,252,150,194, 79, 86, 40, 20, 29, 28, 29, 29, 93,157, 18,226,143,133,247, + 29, 26,226,224,228, 22, 86, 11,180, 76,149, 39,192,214, 12,134, 89, 56,248,240, 97,231,203,135, 15,179,215,142, 31,127, 38,170, +168,216, 98,114, 27,210,113,144,149,254, 12,157, 59,119,198,237,219,183,209,185,115,103, 67,208, 4,161, 80, 8,129, 64, 0,129, + 64, 0, 71, 59,147, 92, 40, 40,135,195,193,229,203,151,193, 48, 12, 52, 26, 13, 52, 26, 13, 2, 2, 2, 74, 46, 94,188,104, 9, + 0,233,233,233,116,252,248,241,101,215,175, 95, 71,199,142, 77,239,167,238,234,234,122,137,203,229,182,170,247,174,218,141, 24, + 49, 2,165,165,165,111,141, 24, 49,162,103,205,111,185, 7, 14, 28, 24, 15, 0, 66,161, 16, 28, 14,135,129, 89,254,241, 82, 11, +174, 12, 1, 87, 3,125, 78, 84,253,115, 66, 72,124, 76, 76, 76, 84,253,223, 12, 65, 85, 67,199,134,247,198,198,198,174, 50,208, +173,124, 13,107,152,113, 31, 45, 66, 8, 53,214,105, 54, 37,198,128, 86,173,220,190,125, 91,215,162, 69,139,159, 30,221,201,236, +239, 19,236, 13,137, 84,244, 6, 33,228, 59,145, 72, 52,107,194,132, 9,184,118,237, 26,146,147,147,127,249,171,219,169,116,232, +208,225,140, 72, 36,242,106,196, 76,146,117,239,222,189, 65,141, 12, 12,139,107,124,206, 26,117,134, 55,244, 23, 51,116,134,111, +180, 97,176, 20, 58,173, 14, 85, 10,229,139, 65,188, 6,104, 85, 85, 85, 97,204,152, 49, 47, 49, 90,133,133,133,166, 84, 42,214, + 28, 61,138,179,113,113,120, 43, 36, 4,135,110,220, 64,236,132,247,224,231,213, 2,148, 33,160, 4,200,222,243, 61,138,229,149, +216,125,254, 50, 74, 42, 20, 24,215,171, 23,124,173, 29,155,214,203, 23, 12,236, 22, 26, 38, 56,119, 37, 21,124, 62, 15, 28,176, +160, 58, 5,220,253,251,128,203,225,192,198,165, 53, 4,124, 62,248,124, 30,210,115,138,224, 31,212, 85, 24, 47, 20, 15,124, 29, +160,213,210,171, 53, 24,134,193,196,137, 19,177,119,239, 94, 56,184,122,193,166,101, 16, 86,172,219,138,183, 6,244, 50,250,252, +181, 51,120, 30,143, 7, 46,151,251,202,119,237,177, 41,236, 36,101, 41,180,245,235,136,165, 0,165,240, 88,185, 18, 30, 43, 87, +226, 70,205,127, 6, 84, 85, 65,169, 84, 2,221, 3,155, 5,178, 52, 26, 13,114,114,114,180,249,249,249, 46, 13, 12, 80, 5, 26, +141,198, 40,176,217,190,125,251,221, 73,147, 38,117,177,183,183,191,117, 55, 41, 73, 23, 28, 18,194, 63,181,121,254,145, 90,179, + 33, 0,132,132,132,148,204,159, 63,255,200,248,209, 81,195,126,136,126,151,249,116,217, 78,158, 72, 34,233, 18, 53,167,105,135, +120,131,247, 35, 35, 56, 56,152,154,146, 86,161, 80, 60,111,162,142,134, 0, 88,218,169, 83, 39,235,190,125,251,226,210,165, 75, + 24, 57,114,164, 90,171,213, 62,170,233, 84,219,237,222,189, 91,152,154,154, 10, 39, 39, 39,126, 86, 86,214, 54, 66, 72,147, 14, +242, 66,161,176, 79,215,174, 93, 57,106,181,250, 21,144, 21, 27, 27,139,177, 99,199,162, 93,187,118, 96, 89, 22,149,149,149,232, +219,183, 47,127,227,198,141,125, 76, 4, 90, 51,252,252,252,214,160,122,213,161, 97, 95,120, 31,192, 23, 53,108,247,243,168,145, + 19, 83,122, 13, 24,209,165, 85,219, 32, 55, 99, 10, 93, 92, 92,230,113, 56,156,119, 88,150,229,202,229,242, 28, 13, 33,109, 3, +188,188, 92,122, 12, 27,134,114, 62,159,251,237,249,243,156,130,138, 10, 75, 0, 38,153, 32, 85,186, 42,120,121, 87,187,250,141, + 28, 51, 12,183,111,223,198,168,119,135, 67, 32, 16,128,199,227, 87,191,155,130,106, 70,203,214,209,218,164,182,169,211,233,234, +250,240, 90, 63, 47,173, 86,139, 90,215, 44, 11, 11,139,186,107,106,181,186,209, 9,121,141,248,238, 95,182,200, 89, 98,109, 3, + 70,167, 67,224,176, 81,117,109,250,250,207, 63, 72,192,178,146,178,172, 12,124, 22,119,156, 15,179,152,165, 17, 86,171, 1, 54, +203,176, 95,137,175, 15,182, 94, 87, 8, 33,241,209,209,209,243, 1,208,232,232,232,249,181,231, 49, 49, 49, 74, 0,185,175, 3, +182, 26, 98,185,120,127, 7,200,170, 53, 47, 52, 37,253,250,245,251,204,202,202,106, 35, 0,116,233,210, 5, 57,215,114,145,115, + 45, 23,254,237, 3,123,116, 10,233, 82, 62,118,236, 88, 56, 56, 56, 96,206,156, 57, 20,192, 47,205,253,255,244,180, 20, 75, 0, +212,221,221,125, 14, 0,184,187,187,135,220,184,113,195,233,230,205,155,232,218,181,235, 11,234, 94,171, 69,207,158, 61,155, 26, + 16, 43, 80,237,107, 53,243,239, 99,201, 88,104,181, 90, 40, 20, 74,104, 52, 90,232,117, 44,244,122, 61, 58, 7, 90, 97,231,214, +232,234,223,244,181,236, 89, 53,107,230,225,106,133,206, 29, 92,117, 28, 14, 81,222, 76,202,111,176,199,212,104, 52,184,155,149, +133,164,204, 76, 0,192,208,152,166, 29, 95,119,158,191,132,128,128, 0, 99,185,245,241,112,119, 69,222,217,187,213,157,183, 50, + 7, 55,255,220, 15, 43, 43, 75, 0, 64, 96,196, 56, 8, 4,213, 64,171, 74,169,133, 99,251,150, 32,148, 54, 26, 22, 64,106,239, +118,134, 39, 16,123, 81,134, 5,165, 44, 40,203,128, 82, 22, 34, 43, 7,139,207, 62,249, 0, 44,203,160, 91,183,110, 32, 92, 46, + 24,157, 26,163,135, 12, 68,105,121, 5, 28,108, 77, 27, 36, 4, 2, 1, 34, 34, 34, 36,141, 93,127,252,248,177,210, 16,152, 53, + 93, 71, 58, 84, 85, 41,161, 86,171,161,213,232,161,213,233,193,180, 17, 96,249,194,247,160,215,234,161,120, 55, 12, 90,157, 30, +236,231,195,161,213,232,144,109,193,225,132, 4, 56,233, 56, 32,202,196,212, 66,107, 99, 64,171, 22, 28, 52, 38, 13,249, 4, 54, + 2,182,146, 38, 77,154,212, 57, 56, 36,228,246, 59, 3, 66,214,222, 75, 78,201,187,151,156,242, 74, 58,175,118, 33, 25,159,198, +238,157,205, 23, 72, 58,155, 10,178,128,151,205,136,127, 81,230, 87, 84, 84, 4, 91, 90, 90, 34, 45, 45, 13, 92, 46, 23,132,144, +199,148,210, 96, 0,152, 50,101,202, 19, 30,143,231,205,229,114,177,105,211, 38,194,227,241, 58,132,133,133,205, 7,176,191,137, + 9,157,191,149,149,213, 75,108,150, 64, 32, 64,116,116, 52,198,143, 31, 95, 7,178, 4, 2, 1,182,111,223,142, 46, 93,186, 64, +163,209,248,155, 8,134,111, 2,232,101, 2,227, 71,106,192,185, 81, 48,170,215,235, 39, 21,191,243, 78, 91, 36, 36,160,135,183, +119, 64,231,206,157,161,213,190, 32, 52,189,189,189, 91, 86, 84, 84, 60, 39,132,252, 27,192, 15,148,210, 59, 77,130, 34, 21,139, +172,244,103,181,147, 86,116,235,214,173,142,193, 50,100,179, 4, 2, 1, 36, 66,203,102, 1, 45,150,173,238,151, 42, 42, 42, 56, + 9, 9, 9,142,126,126,126, 4, 0,252,252,252,200,157, 59,119,236, 45, 44, 44,138,124,124,124,140, 78,128, 37,214, 54,216, 62, +105, 12, 0,224,171, 1,111,214, 77,140, 78, 47,157, 15, 62,159,143,254,115,230,191,210,238, 89,150,229,194, 44,102,144,101, 4, +100, 53,196,104,253,181,177,249, 5,163, 21, 19, 19,147, 18, 19, 19,243, 10, 59,214, 76,125,198, 25, 45, 83, 76, 1,198, 94,214, +198,100,221,186,117,232,208,161, 67,147, 3,209,198,141, 27,177,107,215,174,117,148,210,244,230,254,127, 84,255, 78,129, 88,127, + 56,197,187, 93, 32, 1,128,101,159, 15,225, 84, 85, 85,225,242,229,203,176,177,177,193,227,199,166,133,253, 34,132, 88,217,216, +216, 44,229,112, 56,163,185,245, 87, 0, 52, 12, 48, 25,150,101,227,202,203,203, 27, 13,239, 64, 41,160,213,233, 81,165, 80, 65, +163,209,224,243, 47,191, 55,154,143, 24,128,104, 53, 21,188,136,222, 97,146,198, 24,157,110, 29,250, 96,234, 4,203, 87, 6,111, + 46, 7,224,112,128,142,221,170, 25,151, 59, 55, 82,192,178, 0,195, 2,142,206,118,248,101,207,218, 38,139, 64,207,176, 53,179, + 99, 6,149,106, 6,254,161, 81,120,118, 63,161,142, 65, 18, 10,170, 77,198, 2, 62, 31, 44, 37,213, 81, 31, 26, 3, 66, 66,137, + 87,105,126,186,239,214,248,123,248, 56,170, 3, 14,156,187,139, 81, 3,130,113,241,122, 42,250,118, 15, 64,202,163, 76, 4,250, +182,194,166,109,113,160, 20, 21, 63,174, 95,241,252,197,128,166,207, 50,133,209,186,118,237,154,178, 62,139,101,248, 77,141,143, +135,160,244, 5,163,165, 84,169, 49,103,158, 73,225,124,170,235,168, 87,168,196,148,196, 77, 49, 86,166, 0,177,250,204, 22,140, +132,103,105, 3,160, 11, 48,247,127,178,227,100, 24, 6, 39, 78,156,168,171,143,134,234,209,176,238, 76, 0, 57,200,202,202, 66, + 74, 74, 10, 66, 67, 67, 81, 94, 94, 14, 62,135,131,217,247,238, 33, 96,194, 4,104, 4, 2,176, 44, 11,161, 80,136, 41, 83,166, +152, 92,158,205,236, 77,107,252,220, 24,106,164, 47, 89, 27, 21, 21,213, 54,173,170, 10, 41, 15, 30, 96,192,146, 37, 0,128,147, + 39, 79,190,212, 38,102,205,154, 37, 76, 77, 77,253,240,214,173, 91, 31, 18, 66,214, 81, 74,103, 55,218,207, 82,117,157,143,214, + 59,239,141, 68, 91,191, 54,216,245,235,158,186,235,179,190,152, 1, 62, 95, 0,190,128, 15, 91, 27, 91,147,158, 70,167,211,213, +129, 86,133, 66,193, 57,121,242,164,199,192,129, 3, 5, 51,102,204, 32, 0,176,107,215, 46,206,119,223,125, 39, 61,123,246,172, +160, 69,139, 22,249, 70,193,165, 86,251, 74, 29, 19, 66,192,231,243, 33, 16, 10, 0,150, 5, 33, 68,186,122,245,234,101, 41, 41, + 41, 93,253,252,252,160, 86,171, 39, 16, 66, 18,205,113,180,204, 82,107, 54,108, 12,112, 53,228,107, 85,195, 74, 53, 38, 50, 67, +191,173,198,128,154,161,207, 22, 0,117,243,187, 5, 19,125,180, 26, 18, 46,151,107,148,173,226,112, 56, 70, 77,135,179,102,205, +130,149,149, 85, 99, 3, 16,189,119,239, 94,106,126,126,254, 86, 74,233,247,175, 83, 57,241,231, 19, 83,150,206, 28, 94,129, 26, +219,170,173,173,109, 81,191,126,253, 42, 1,104,247,239,127,121,130,172, 86,171, 27, 29,192,109,108,108,150,254,252,243,207,211, +135, 13, 27,198,169, 31, 98,192,208,188, 87,251,209,233,116,216,191,127,255,244,185,115,231,162, 49, 22,172,118, 16, 87, 84, 41, +161,172,113,132,126,146,124,192,212,218,107,244,146,165,173, 27, 60,218, 4, 55, 58,152,112, 4,213, 62, 68, 46,158, 47, 6, 48, + 43, 43, 49,152, 38,116, 18,194, 73,207,204,206,107,209,210,213, 30, 79,114,100,112,105,213, 1,165,185, 47,202,129,199,227,130, + 95, 99, 58,180,181,150, 66, 86, 88, 8, 14,135,219, 36, 48, 94,177, 59, 17,215,147, 51,113,240,220, 29,104, 85, 85, 88,191,227, + 52,180,234, 74,104, 85, 85,208,170,170,191, 87,205,253, 8,132,224,185, 86, 85,217,174, 57,245,206,227,241,208,189,123,247, 70, +129, 78,110,110,174,137,140, 22,173, 99,180,148,170,102,214,145,105, 47, 97,147,140, 85,237,245,215, 5, 6,181, 33, 31, 36, 18, + 73,151,237,219, 27, 15,227,208,144,184,185,185,157,178,180,180,108,109,106,250,102, 4, 47, 93,101,107,107,187,212,207,207,207, +127,253,250,245,124, 46,151,139,254,253,251,183,251,232,163,143,178, 0,160, 67,135, 14,238,181,125,204,167,159,126, 74,175, 93, +187,150, 92, 61,199,104, 92,132, 66,225, 3, 27, 27,155, 46,125,251,246, 69,121,121, 57,114,114,114, 32,149, 74, 17,176,118, 45, +238,125,250, 41, 66, 54,111, 6,167, 95, 63, 16, 66, 32, 20, 10,113,239,222, 61, 72, 36,146, 7, 77,128,161,238, 0,190, 1,208, + 3, 47,204,133, 20,192,101, 0, 95, 82, 74,175, 55,208,223,113, 0,128, 97, 89, 99,149,245,222,156, 57,115, 80,198,231, 3,145, +145, 16,164,167, 67,171,213, 34, 52, 52,180,142,101, 15, 13, 13, 5,143,199, 67,112,112, 48,220,221,221,177,105,211,166,247,240, +242, 74,236,151, 68, 85,169, 69, 86,250, 51,132,133,133,213, 49, 87,145,145,145,117,140, 22,159,207,175, 99,182, 8, 99, 28,184, + 18, 66,168,225, 36,153, 97, 24,194,227,241,120, 51,103,206, 36, 35, 71,142,164, 26,141,134, 21, 10,133,156,131, 7, 15,146,139, + 23, 47,242,170,170,170,140, 78,196,131,134,143,198, 87, 3,171, 73,209, 21,173,157,192, 23,240, 33, 20, 8, 48,231,193,179,186, +122,177,222,190, 87, 24, 27, 27, 59,202,207,207,175,218, 12, 15,240,204,113,180,204, 98,132,205,146,213, 3, 73, 26,131,115, 25, + 0, 82,115, 46, 51, 0, 84, 50, 84,175, 32,236, 90, 47,109,237,117, 77,189,239,218,235, 73,205,205,187,193, 94,135,175,128,175, +166,102,196,143,174, 94,189,234,219,185,115,103,100,103,103,191,178, 18,174,118,224,146, 74,165,144, 72, 36,184,114,229, 10, 0, + 60,106, 76,217,133, 11, 23,190, 67,117,212,101, 0,128,187,187,123, 88,223,119,250, 92,233,246,102, 87,236,142,217, 83,158,159, +159, 31, 92, 27, 67,135, 16, 66,220,221,221,199,243,133,188, 49,222, 65,158, 17, 96,217,111,206, 29,251,115, 73, 83, 15,233,221, + 46,176, 18,128,210, 96,213,225,154,215,169,104, 14,135, 51,122,216,176, 97,156,212,212, 84,140, 25, 51, 6,187,118,237,106, 52, +237,248,241,227,177,119,239, 94, 12, 27, 54,140, 51,111,222,188,209,198,128, 86, 53, 91,162,249,219, 26,101,218,227, 36,236,220, +251,115,163, 62, 72,206,206,213,254, 88,133,133, 69,117,191,117,237,220,180,101,132,213,107,206, 38,222,186, 17, 22,222,187,191, + 32,167,160, 12,172, 94, 13, 85,197,139,251, 21,101, 5,160,122, 21, 4, 22,246,112,117,180,193,237,171,191,105,180, 26,213,217, +166,116, 78, 31, 22,136, 79,135,248, 3,148,197,240,217,191, 32,254,251,207,234,102,208, 61, 71,206,192,249,253,223,154,236,227, + 87, 95,248,124, 62,238,221,187,167,108,140,205,226,114,185, 70, 99,114,189, 96, 29,117, 80, 40,148, 80, 40, 85,127, 91, 29, 17, + 66,156, 92, 92, 92,126,180,183,183, 23, 55, 4,164, 8, 33, 78, 78, 78, 78, 63, 58, 56, 56,136, 77, 53, 29, 54, 6,178,106,226, +106,221,154, 52,105, 82,179,192,150, 72, 36,106,253,232,209,163,186, 96,165, 77,125,107, 52, 26,244,237,219,215,164,224,165,148, +210,227,132,144,167,110,110,110,227,242, 19, 73, 0, 0, 32, 0, 73, 68, 65, 84,151, 3, 2, 2,108,158, 60,121,130, 61,123,246, + 8,248,124,190,103,109,255, 81, 81, 81, 1, 46,151,139,194,194, 66, 29,128, 15,140,153,206,212,106,117, 66, 66, 66, 66,199, 33, + 67,134,112, 31, 60,120, 0, 46,151, 91,157,175,176, 48,132,108,222,140,228,153, 51, 17,145,153, 9,149, 86, 11,177, 88,140, 51, +103,206,104, 21, 10, 69, 66, 99,250, 36, 18,201,214,140,140,140, 64,177, 88, 12,173, 86, 11,150,101,193,225,112, 8,143,199,235, +105,107,107,187, 17, 64,215,151,223, 41,103,231, 41,179,190,110,207,232,245, 76,126,246, 19,153,177, 50, 40, 46, 46,198,241,227, +199, 17, 26, 26,138,136,136, 8,228,230,230, 34, 61, 61, 29,111,189,245, 86, 93,154,164,164, 36, 36, 38, 38,194,199,199,199, 56, +163,199,209,193,167,125,107, 8, 4,130,106,134,136, 47,168,153,248,240,235,152, 44, 1, 95, 0, 62,143, 15,177, 68,108, 50,163, + 69, 8, 1,135,195, 1, 33, 4, 18,137,164,118,146,205,122,120,120,228,151,148,148,184, 1,224, 74, 36, 18, 48, 12, 99,210,164, +165,118,140,168, 5, 89, 2,161,160,142,217, 2,128,178,178, 50,213,176, 97,195,254,173, 86,171,223,199,107,236, 80, 98,150,127, +164,220,252, 31,186,215,100,156, 72, 41,221,218,144, 83,124, 83, 13,252,173,240,240,240,205, 99,199,142,237,191, 97,195, 6, 88, + 90, 90, 34, 63, 63,191,110, 64, 20, 10,133,104,217,178, 37, 74, 74, 74,176,101,203, 22, 60,123,246,236, 2,128, 41,166,230, 40, + 63, 63,255,218,227, 59,143,138,251,142, 10,119, 8, 12,111,111,155,243,232, 89, 40,128, 43, 53, 32,235,151,177,179,222,122,191, +239,136,110, 16, 8,249,200,121,252,252,255, 91, 77,114,185, 92, 46, 33, 4, 99,198,140, 49, 41,253,187,239,190,139,132,132, 4, + 52,101,102,100,107, 25, 45,133, 10, 85,202,191,111,178, 54,245,179,241,152,250,217,248, 58, 48, 97,138,233,165, 26,228,238,107, + 2,104,105, 55,196,239,219,242,113,167,110, 97, 94, 93, 2, 91,227,250,173, 59,216,189,249, 5,201,176,237,187,101,248,122,219, + 5,180,116,177,131, 86, 93,133, 83, 7,126,122,174, 85, 43, 54,188, 38, 41, 87, 13,110, 9,129,137,113, 42, 95, 98, 81,107,129, + 86, 80, 80, 80,163,140, 86, 73, 73,137,210,216,192, 80, 87, 71, 26, 29, 42,171,148, 80, 42,254, 30,160, 69, 8, 9,233,217,179, +231,217,184,184, 56, 7,103,103,103,228,229,229,189, 4,180, 8, 33, 33, 61,122,244, 56, 27, 23, 23,231,224,226,226,130,156,156, + 28,147,195,138, 52, 0,178, 32,147,201, 72,105,105, 41,107,103,103,215, 44,176,197,225,112,160, 86,171,113,255,254,125, 83,255, +214,228, 21, 98, 54, 54, 54,219,247,238,221,107, 83, 84, 84, 4, 46,151,139,251,247,239,191,180,234,176,246,243,203, 47,191, 8, +134, 15, 31,254, 51,128, 38,151,181,233,245,250,117,227,199,143,255, 48, 55, 55,215,206,217,217, 25,249,249,249, 16, 10,133,160, +148,130,244,237,139, 94, 79,159, 66,203, 48,144, 72, 36, 72, 75, 75,195,214,173, 91,171,212,106,245,186, 70,234, 71,104, 97, 97, +225, 43, 16, 8, 48,110,220,184,151,174,237,216,177, 3, 67,187,112,187,124, 60, 80, 84,169,135, 88, 93, 32, 25,124,138,203,229, +146, 41,115,190,105,215,189,119,100,208,195,228,235, 79,100, 5,207, 46, 27,121,124,157, 70,163,129,159,159, 31,110,222,188,137, +115,231,206,161, 95,191,126,136,136,136,192,221,187,119,241,219,111,191, 33, 49, 49, 17,132, 16, 56, 56, 56,212,186, 95, 52,233, +131,161, 81,232, 81,152, 87,252, 10,123, 85,255, 92, 32, 16, 64,173,212,154, 84, 71, 15, 30, 60,192,205,155, 55,235, 66,203,112, +185, 92,253,132, 9, 19, 64, 41,165, 25, 25, 25,176,178,178,162,147, 38, 77, 98,120, 60,158, 62, 55, 55,215,212,182, 95,205, 94, +213,128, 44,158,128,255, 18, 64, 99, 89,182, 34, 41, 41,233, 99, 66,200, 93, 66,200,234,154,159,205,113,180,204,242,191, 89, 78, + 24,238,117,104, 18,163, 69, 41,125, 10, 96, 0, 33,228,189, 35, 71,142,172,219,184,113,163, 83, 84, 84, 20, 74, 75, 75,225,229, +229, 5, 55, 55, 55,196,199,199,227,228,201,147, 69, 12,195,204,166,148,238,106,224,101, 27,208, 88,172, 13, 74, 41,117,119,119, +143, 83, 87, 86,126,218, 57,194, 31, 23,246,255, 17,227,230,230, 54,165, 69,139, 22,159, 79,154,255,246,251,125,134,117, 69, 90, + 98, 6,174,253,118, 15, 5,217, 69,152,212,235,203, 38,117,214,119,134,183,181,181,253,208,194,194, 66, 8, 64,219,192,172,248, +165, 85,135,134, 58, 25,134, 97, 52, 26, 13,246,237,219,103, 18,216,218,179,103, 15, 84, 42, 21,152,122,246, 85, 67,157,148,165, +132,199, 23,193,189,165, 31,180,218, 42,176,236,235,177, 55,134, 58,107,103,160, 79,132, 66, 56, 23, 21,225,250,245,235,166, 82, +179, 77,214, 17,165, 84, 69, 8, 25,247,237,202, 57,241,211,162,191,177,237, 23,222, 17, 95,173,221, 1,173,118, 27, 56, 92, 14, + 36, 34, 1, 58,119,235, 1, 46,212,248, 49,246,139, 50,133,188,116, 92,253,173,120, 94,209,217,148,133,133, 2, 12,203,226,220, +165, 27, 38, 63,123,221,104,207, 48,224,241,120,120,252,248,177,178,161,213,134, 92,110,181,153,179,118,166,222,148, 78,202,178, +132, 47, 16,163,165, 87, 0, 52,234,202,191,165,142,156,157,157,191, 56,124,248,176, 67,109,168,132,187,119,239,130, 16,114,223, +128, 29,249,226,240,225,195, 14, 74,165, 18,201,201,201,181, 91, 77,221,111,206,123, 84,203,100,201,100, 50,146,159,159, 15, 11, + 11, 11,206,221,187,119,213,193,193,193,183,208,244,206, 15,117, 58, 85, 42, 85,102, 99,254,147, 42,149,170,133, 88, 44,230,215, +187,215,221,215,215, 55,173,190, 9,177,161,124,150,151,151, 95,159, 59,119,110,231, 55,223,124, 19, 95,124,241, 69,137,157,157, +157,213,143, 63,254,200,227,114,185,100,218,180,105, 76, 97, 97, 97,229, 79, 63,253,100,115,228,200, 17,148,149,149, 93, 49,246, +236,148,210, 10, 66,200,199,225,225,225, 59, 78,159, 62,109,225,235,235, 11,185, 92, 14, 74, 41,182,111,223,142,105,211,166, 65, + 44, 22, 35, 45, 45, 13, 67,135, 14, 85, 40, 20,138,143,235,251, 78, 26,232, 36,132, 16,202,178, 44, 22, 45, 90, 84, 23,156,180, + 54, 88,169,149,132, 96,235,172, 54,210, 25, 63,149, 75,223,251,234,167, 9, 0,192,232,245,204,195,228,235, 79,182,127,255,213, + 69,129, 64,112,201, 72, 29, 45,152, 49, 99,198,143,145,145,145, 18, 75, 75, 75,148,148,148,224,242,229,203,184,122,245, 42,174, + 93,187, 6,141, 70, 3, 7, 7, 7,216,217,217, 33, 63, 63, 31, 15, 30, 60, 80, 2, 88,208,148, 78,161, 5, 31,222,237,106, 87, +254, 86, 51, 88,124,131,213,134,134,236,150,128,207, 55,233, 61,234,221,187, 55,186,119,239, 94, 11,128,152,172,172,172,124,181, + 90, 77, 12, 64,127,110, 45, 32,247,244,244,212,239,218,181,139, 54,165,243,218,214, 77, 56,189,124, 1,132, 2, 1,102,223,207, +169, 3, 93, 59,250,117, 2, 95, 40,128,255,144,145,134,227,192, 15,132,144,109, 53,199,106, 83,218,252, 95,152,248,152,117,254, +151,235,252,223, 44,148,210,124, 0,205,219,130,199,224,230,221,132,144, 83, 31,125,244, 81,108, 72, 72,200, 71,235,215,175, 39, + 2,129, 0, 75,150, 44,161,121,121,121,191,214,204, 66, 74, 95, 51, 99,191,254,126,232,202, 39, 19,163,135,145, 89, 27, 38,245, +188,117, 62,249, 65,135,112, 95,116, 8,247,197,173, 11,169,248,126,254,158, 93,140,142, 89,148,159,159,159,109, 68,149,122, 64, +143,246,245,157,225, 29, 18, 46,158,119,104,238,170, 67,150,101,227,246,236,217, 51,125,196,136, 17,156, 27, 55,110,188,226,147, + 85,187,237, 14,203,178, 56,123,246, 44,180, 90, 45,126,253,245, 87,150,101,217,198,227,104,129, 30,253,118, 67,236,196, 95,119, + 30, 21, 10, 5, 4, 87, 47, 29, 68,121,105,211, 44,157, 64,192,199, 47,219, 15,105, 5, 2,254,195,134,174,107,181,218,156,243, +231,207,187, 12, 98, 24, 62,135,195,121, 5, 64, 53, 38,113,113,113, 58,150,101,179,140,212,203, 21, 66,248, 67, 86,124,241,193, +158,200,119, 62,114, 9, 15,239,201,119,116,118, 1, 33, 4,133, 5,133, 72, 75,190,161, 59,117,240,231,130, 42, 69,133, 73, 91, +240,124,176,230,247, 58,159, 44, 0,136,154,182,177,206, 63, 11, 0,134, 76,154,139,190,161,129, 32,166, 80, 79, 47, 64, 22,171, +215,235, 33,149, 74,161,215,235, 27, 12,241, 96, 99, 99, 35, 81,169, 84,202,154, 64,140, 77, 82, 69, 20,248,219,235,136, 97, 24, +255,210,210, 82, 84, 85, 85,225,234,213,171,116,229,202,149, 50,153, 76, 86,231,180,169,211,233,252, 75, 74, 74, 80, 89, 89,137, + 43, 87,174,208,216,216, 88, 89,113,113,241,252,230,188, 67, 18,137,164, 11,143,199,187, 85, 90, 90,202, 90, 88, 88,112,116, 58, +157, 46, 56, 56, 88, 36,145, 72, 76,222, 80, 61, 47, 47,239,205,198,174,249,248,248, 60,122,244,232, 81, 91,134, 97, 12,247, 64, + 20,168, 84, 42,223,240,240,112, 83, 76, 62, 51,182,109,219,134, 67,135, 14,117,147,203,229,227,179,178,178,118, 0,232,198,227, +241,112,231,206,157,251, 42,149,106,236,136, 17, 35,182,151,150,150, 94, 7, 48,195,196,126,227, 52, 33,100,156,191,191,255,182, +165, 75,151, 90, 70, 68, 68,240,220,221,221,209,181,107, 87,164,165,165,225,196,137, 19,186, 31,126,248,161, 74,161, 80,124, 64, + 41, 61,219,116,181,131,232,245,122, 8,133,194,186,143, 72, 36,130, 64, 32, 64,133,146, 98,242,218,116,165, 30, 18,229,186, 37, + 31,159,160, 0,121,158,147, 94, 84,248, 60,231, 58, 33,228, 82, 94, 94, 94,121, 35,101, 38, 84,169, 84, 29,221,220,220,184,132, +144, 13, 90,173,118,210,103,159,125,230,182,106,213, 42,180,111,223, 30, 69, 69, 69,144, 74,165,240,245,245,133, 76, 38,195,141, + 27, 55, 24,133, 66,177, 25,192, 50, 74,105,147,230,200,178, 34, 57, 60, 92, 61, 95, 98, 62, 41,165,160, 12,160, 83, 51, 96,180, + 20, 26,162, 3,159,175,131, 64, 32, 48,101,176,164, 44,203,162,212,205, 13,108,114, 50,174, 93,187, 6, 74,105,163,172,154,159, +159,159, 9, 21,196, 66, 40, 18,190,100, 46, 36,132, 64, 32, 20,130, 47, 20,188,178,114,198,204, 98,153,229,255,186,152,234,107, + 81, 6, 96, 10, 33,100, 71,159, 62,125,226, 41,165,124, 84,219, 35,255,248, 43,127,158,159,159,127,219,221,221,125,158,139,135, + 93,236,224,241, 61,209,190,163, 23, 24, 61,131,203, 39,239,224,215, 85, 71,246,230,230,228, 78, 50,101,239, 51,150,101, 47,246, +232,210,158, 3,131, 88,221,238,238,238,236,235,172, 58, 44, 47, 47, 95, 60,123,246,108,124,241,197, 23,205, 94,117,216, 88,154, +187,247, 11,167,132,248, 59,121, 12, 25,220,107, 16, 8,135,106, 52,234, 38, 58, 62,212, 69, 46, 21, 8,248, 15,111, 36,229, 5, + 55,148, 78, 38,147, 13,122,255,253,247,207,242,120,188,214,205, 41,115,150,101,179, 10, 10, 10,250, 27,175,115,221,101, 66,136, +239,241,189, 91,102,158, 62,180,109, 16,203, 50, 62, 4, 0,151, 39,120,162,211,106,207,168,149,242,245,166,110, 42,189,122, 74, + 24,102,124,251, 27, 54,125, 49, 4,159,197,238,199,207,139, 38, 99,222,218, 61,248,230,139, 25, 88,185,241,223,248,106,198, 56, +140,122,239,125,150, 18,206,159,166, 62, 7,151,203, 61,189,101,203,150,137,147, 39, 79,174, 91,180, 64, 41,125,169, 99,215,233, +116, 74,150,101,177,121,243,102, 22,192,233,166,244,189, 92, 71,132, 54,229, 47,101,106, 29,201,229,242, 15,194,194,194,182, 3, + 16, 81, 74, 31,151,150,150,254,139, 82, 90,183, 53, 84,101,101,229, 7,225,225,225,219, 41,165, 34, 66,200, 43,215, 77,145,154, + 80, 15, 93,236,236,236,110,213, 48, 89,162,215,113,136,111,170,168,155, 48, 43, 50, 38,244, 29, 44, 12,182,213, 33,132,172,234, +214,173,155,225,166,210,247, 1,116,105,110,166, 40,165,103, 9, 33,129,139, 22, 45,154, 41, 22,139,251, 42, 20,138,118, 0, 32, +149, 74,211,212,106,245, 69,165, 82,185,190,166,223,106, 74,135,198,194,194, 34, 77,175,215, 7, 57, 57, 57, 85,175,168,173, 1, + 91, 0,112,236, 22,115,139, 82,125,215,230,230,237,228,201,147,173,236,236,236,222, 32,132,140,162,148,250, 85, 84, 84,168, 23, + 45, 90,116, 37, 46, 46,174,188,117,235,214,131, 35, 35, 35,137,189,189, 61,110,222,188, 73,139,139,139, 15, 2,152,111,202, 74, +107,150,101,179, 86,175, 94,141,230,190,239, 77, 93,215,106,181,207, 79,158, 60,233,248,102, 97, 33,143,101, 89, 12, 25, 50,228, + 37, 0, 87, 95, 30, 62,124, 8,181, 90,221,100, 48, 71,117,121, 41,250,205,156, 11,212,172,254,172,149,106, 38,139,130,106,204, +184,202, 44,255, 44, 33,255,145,229,207,205,164, 22,221,221,221,199,136,165,162,169, 94,237,220,130,243,210, 11, 83, 43,202, 21, +187,242,243,243,183, 80, 74,153,215,213,217,156,128,165,102,250,247, 63,167,243, 69, 28, 45, 6,148, 50,160, 44, 5,165, 44, 88, +150,169,222,240,154,178,160, 12, 67, 8,193,159,106, 69,249,100, 83,243, 73, 8,177,115,116,116, 92, 70, 41,125,147,203,229,114, + 12,201, 48,195,227, 26, 38,235,180, 76, 38,251,170, 62,243,250,191,177, 60, 15, 28, 56,208, 32,248, 55,117,213,225,168, 81,163, +152,102,190,155, 23,165, 82,105,131,129, 57,171,170,170,178,243,242,242,222,248,111, 40,207, 90, 54,148,154,208,161,213, 51,193, + 55,123,213,161, 49,157,173, 90,181, 18,105,181,218, 78, 0,124, 9, 33,182, 0, 74,180, 90,237, 25,153, 76, 86, 64, 8,233, 2, + 96, 81,205,109,203, 41,165,183,254, 39,223,119, 66,136,196,209,209,113, 27,135,195,241, 48,229,126,189, 94,175, 41, 41, 41,153, +104, 56, 33, 48,212,233,232,232,120,139,199,227,121,152,160,231, 89, 81, 81, 81, 23,115,255,105,214,249,127, 6, 76,213,115,130, + 55, 60,255,175, 88,237,145,151,151,183, 15,192,190,191, 83,103, 99,145,223,205,242,255, 87,170, 74,242,255, 35,245, 80, 3,154, +166,253,211,202,179, 22, 40, 53,240,251,109, 0,228, 63,240,110,246,253,223, 80, 46,244, 53,103,140, 53, 64,170,215,223,153,151, +204,204, 76, 53,128, 43, 53,159,250,255,119, 11,192,144,255,162,114, 83, 2, 24,243,119,233,107, 10, 60,153,197, 44,255, 84, 49, + 47,171, 53,139, 89,204, 98, 22,179,152,197, 44,102,249,107,114,162,222, 22, 60, 39,106, 15, 8,128, 1,141,204,116, 76,166, 4, + 9, 33, 3, 94, 99, 38,117,206,172,211,172,211,172,211,172,211,172,211,172,211,172,243,159,165,243, 31, 39,181,129, 35,255, 19, + 31, 0, 3,204, 58,205, 58,205, 58,205, 58,205, 58,205, 58,205, 58,205, 58,255, 47,127, 0,124,220,216, 57,199, 12, 53,205, 98, + 22,179,152,197, 44,102, 49,139, 89,254, 51, 98, 50,208,178,116,245,247,119,106, 21,178,221,190,101,240, 93,251,150,193,119,157, + 90,133,108,183,116,245,247,255, 39, 22, 26, 33, 68, 66, 8,121,143,207,231,159,117,115,115,147, 19, 66,102,254, 31,125, 78,107, + 66,200, 40, 66,200, 50, 66,200,112, 66,136,197,223,169,191, 15, 33,188,119, 9,153, 58,145,144,236,137,132,100,191, 75,200,212, + 62,132,252,159,243, 27, 92, 58,195, 61,236,143,211,227, 78, 45,157,225, 30,214,224,245, 57,238, 14,215,207,190,243,109,204,180, + 22,246,127, 83,189, 89,185,184,184,108,117,117,117,205,116,113,113,201,114,113,113,217, 70, 8,177, 49,119,119,102, 49,139, 89, +204,242, 31,147, 19,132,144,143,107, 63, 48,240,209,226, 1,192,137, 19, 39, 34, 0,252, 14,160, 79,100,100,100, 66,253,187,237, +189, 58, 76,246,247,107,255,197,138, 37,243,137,171,179,163,133,158, 97,181, 25,153, 57, 1,139, 87,196, 30,176,247,234,176,174, + 36,235,222,207,175, 49, 24, 16, 46,151, 59, 70, 36, 18, 69, 1,168, 5,108,247,213,106,117, 60,195, 48,251, 76, 93, 69,228,234, +234,122,137,203,229,182,106,206,127, 51, 12,147,253,252,249,243,158,175, 57,136,141,246,244,244,220, 22, 17, 17, 97,209,173, 91, + 55, 8,133, 66, 44, 90,180,104, 54,128,245,166,234,176,183,247,177,210,138,196,159,243,132,194,129, 84,167, 9,162,160, 0, 71, +148,204,234,213,231, 5,106,245,186,146,146, 39, 21, 38,230,101, 62,128, 73,168, 94,142,254, 51,165,116,245, 95,105, 37,147, 58, + 17,157,142,169,110, 19, 2, 30, 24, 27, 27,155,223, 23, 44, 88,192,139,138,138,194,207, 63,255,220,115,235,214,173, 31, 19, 66, +206, 3, 56, 70, 41,125,242, 87, 91,165, 11, 48, 37,188,103,207,111, 39,206,158,205, 85, 94,186,132,111,183,109,219, 0,185, 28, + 0, 54, 53,183, 45, 9, 4, 24,229,232,200,143,162, 20,157, 8, 64, 8,112, 71, 86,204,158,212,106,153,125,180,185,251,251,188, +172,251, 61,188,188, 28,127,119,115,117,148, 63,161, 11, 69, 67,252,123,149, 63,185,184, 16,192,224,250,215,245, 42,241, 68,202, +109, 25,165,164,137, 57, 0,214,254, 69,144,101,225,228,228,116,247,232,209,163, 30,221,186,117,227, 1,192,173, 91,183, 38, 68, + 69, 69,245, 35,132, 4, 81, 74,229,255, 67,160, 93,204,227,112,166, 10,249,252,129, 12,195,116, 0, 0, 46,151,123, 79,163,211, +157,213,179,236, 38, 83, 99,178,153,197, 44,102,249, 63,140, 84,140, 96,145,255,102, 49, 37, 50,252,239,145,145,145,228,196,137, + 19, 20,245,150,136, 91,186,248, 5, 4, 6,250,207, 62,125,120, 71,203,178,146, 50,213,119,107,118,220,174,226, 9, 21,190, 1, +190,130,239,214,175,182,155, 58, 99,214,231,150, 46,126,215, 43, 11, 30,164, 54,163,211,245,148, 72, 36,135,214,172, 89, 19,212, +183,111, 95,190,179,179, 51, 10, 10, 10,112,255,254,253,160, 11, 23, 46, 12,219,177, 99,199,108, 66,200, 8, 74,105,182, 9,234, +124,207,239,220,230, 44,181,119, 0,163,211,193, 61,184, 83, 93,160,189,199, 23,126,131, 94,171, 5,171,211,193, 63,106, 24, 0, +128,101, 89, 4, 4, 4,112, 95,167, 32, 9, 33,238,129,129,129,187, 86,173, 90, 37, 80,171,213,184,126,253, 58, 46, 94,188,200, +230,231,231,199,154,170,195,210,165, 93, 95,142, 68,186,111,204,184,143,108,222,142,106,195,247,116,113, 2, 96,129,135, 25,250, +240, 83,191, 93,232,122,120,223,175,159, 90,186,180, 27, 83, 89,144,118,177,105,176,102, 31, 74, 8, 89, 89, 27, 33,154, 16,242, + 77,235,214,173,191, 50, 76, 83,127,223, 60, 74, 41,120, 60, 94, 65, 69, 69,197,152,162,162,162,196,250, 58,117, 12,120,187,119, + 87,227,136,133, 83,223,227,254,249,231,159,210,128,128, 0, 53, 0,172, 94,189, 26,203,150, 45, 19,158, 57,115,230,173,157, 59, +119,190, 69, 8,217, 64, 41, 61,246, 87, 26,166, 0,248,114,226,236,217, 92,203,204, 76, 88, 38, 37, 97,156, 92,206,251, 26,248, +178, 57, 64,139, 16,210,198,213,149,127, 96,246,172,247,253,189,125, 66, 5, 2,129, 99,245, 38,222,154,162,118,217,217,137,163, + 98,191,222, 26, 77, 8, 25, 73, 41,125,108,162, 62, 30,128,165, 0,196, 0, 22, 2, 88, 36,147,201,124, 25,134,129,171,171,235, + 34, 66,200, 17, 0, 43,156,156,156,168, 76, 38,155, 75, 41,213, 55,197,100,201,159,208,133,207,137,247,155,237, 59, 79,196,115, +114,250,205, 89,131,221, 78, 89,251,144, 21,139,191,205,187, 10, 0,131,125,124,172,188,253,164,115, 45,173, 59,216,203,115,207, +205, 29,236,227,243,211,169, 39,166, 1,237,250, 96, 19, 0,220,221,221, 87,239,220,185,179,101,247,238,221,235,218,120,199,142, + 29,185,171, 87,175,110, 49,115,230,204, 13, 0,222, 55, 81, 95, 59, 39, 39,167, 51, 12,195,168,139,139,139,219,213,254,238, 28, + 50, 34,220,193, 74,218, 95, 86, 90,113,169, 40,229, 72,130,137,186,186,137, 5,130,131,199,118,125,235,214,177,123, 24,199,210, +209, 25,170,220, 60, 84,234,180, 3, 46, 94,190,214,231,227,169, 95,206,168,169,163, 27,230,161,198, 44,102,249, 71, 75,163, 88, +228,127,179,240, 12,144,100,131, 12,146, 72, 36,140, 94,188, 96, 46, 41, 43, 46, 83,170,228, 21, 26,157, 74,165,226, 8,168,234, + 94,234,211, 66, 14,143, 91, 54,115,198,116,171,232,121, 11,162, 1,140, 51, 21,100,133,132,132,220, 56,116,232,144,179,189,189, + 61,202,203,203, 81, 92, 92,140, 27, 55,110,128, 82,138, 17, 35, 70,136,186,119,237,218,105,225,162, 69, 87, 9, 33, 97,166,128, + 45,169,189, 35, 86,247,172,222,139,246,171,204,226,218,255,193,214,209, 81,117,105,150, 61,171,222, 45, 67, 44, 22,215,109, 72, +252, 26, 18,214,191,127,127, 1, 0,124,248,225,135,242,138,138,138, 24, 0,187, 41,165, 38,237,180,106,233,210,174,175,163,155, +123,252,143,155, 87, 75, 58,248,248, 66,171,211, 35,235,121, 30,120,124, 91,120,120, 8,240,254,184,129,252,222,225,246,142, 43, +151,111, 61, 33,117,106, 55,188, 74,150,118,166, 49, 93,182,182,182, 59,246,237,219,135,253,251,247, 3, 0,210,210,210,224,235, +235, 43, 53,150,135,228,228,100,239,161, 67,135,238, 5,208,214, 88,218,250,129,241, 69, 34, 17,122,246,236,137,128,128, 0, 28, + 61,122,180, 15,128, 99,127,181, 1, 42, 47, 93,130,101, 82, 18,144,208,252,201, 11, 33,164, 77,231,206, 94,215, 78,158,216,229, +120,226,228,125,172, 93,187, 13, 79,158, 84, 19,109,222,222,222,120,111,236,104,254,189,123, 87, 2, 71,141,122,239, 10, 33,164, + 39,165, 52,205, 4,181, 75,127,250,233,167,249,173, 91,183,198,168, 81,163, 70, 7, 6, 6,186, 90, 91, 91, 99,203,150, 45,112, +115,115,243,214,104, 52,143,143, 30, 61,234,254,252,249,115, 76,159, 62, 29, 0,102, 55,166,168,207,160, 62, 11, 69, 67,252,123, +181,239, 60, 17,150,214,110,248,105,207, 62, 60,188,189,163,151, 90,123,127, 97,204,180, 22,227,149, 84, 52,201,195,215, 42,186, + 85,151, 8,135,182,129, 67,225,213, 57,209, 81,197,252,241,116,209, 84,239, 88,158, 88,181, 99,241,154,188,226, 87,158,121,244, + 1,110,144,252,129,125,242, 89, 20, 83,186,152,173, 1, 88,117, 29, 18, 67, 49,180,119,239,222,117, 21,151,153,153, 9,181, 90, + 13,127,127,127,142, 70,163,233,107, 98,185,182,123,227,141, 55,254, 60,121,242,164, 67,187,118,237, 94,218, 18,198,213,193,118, + 80,194,161, 13,211, 87,126,251,111, 63,231,128,225,101,133,169,135,239, 25, 3, 89, 61, 66, 59,159, 59,117,104,151, 37,169,204, +129,208,182, 8, 96,139,145,190,247, 23, 16, 11,123,140,249,100, 22,175,111,255,126, 45, 6, 14, 30,121,142, 16,210,159, 82,122, +211, 60,214,152,197, 44,255,104, 86,139,254, 95,123,166, 58,160,101,128, 34, 95, 18,150,178,193, 46,206, 14,146, 13,107,182,223, +228,106, 53, 26,169,173,141,134,111, 99,205, 18, 43, 27,174, 86,163,171,244,242,246, 18,178,148, 13,110,132, 74, 59, 87,127,214, + 45,145, 72, 14, 29, 59,118,204,153,207,231,131,101, 89, 56, 57, 57, 33, 35, 35, 3,101,101,101,168,168,168,192,147,251,247,209, +218,179, 37,150, 68,207,117,155, 62, 55,250, 16, 33,164,139,161, 25,177,161,101,163,140, 78, 91,191,115,111,108, 19,225,151,190, +155,210,217,136,100,100,103,103,195,210,210, 18, 65, 65, 65,150,151, 47, 95,254,163, 49,144, 85, 95,167,189,189,143, 21,207, 82, +178,255,135, 31, 23, 73,180,186,100,164,166,151,160,125,235, 94,112,113,240, 68, 94,137, 6,215,110, 28, 67,242,221,221,240,105, +225,137,105,159,244, 19,199,174, 62,176,207,206,174,141,103,105,233, 83,121, 67, 58,229,114,185,101,155, 54,109,224,233, 89,189, +239, 25,195, 48, 72, 77, 77, 5,195, 48,117,231,134,223,219, 15, 94,128, 94,158,133,137, 19, 38,160,184,184,216,178, 33,157,124, + 46,244,179, 62,126,143, 39,225, 3, 66,169,189,166,178,178,178,142, 29,212,106,181,184,115,231, 14,194,194,194, 34,226,226,226, + 18,140, 80,168, 38,149,167, 22,248,230,219, 95,127,221, 56,174,188,156, 3, 0, 63, 19,194,106, 41,253,198,212,182,228,236,204, + 63,120,250,212, 78, 71, 46,231, 1,236,109,190,198,141, 27, 89,208,106,171,243, 91, 92, 92,136,207,166,202, 33,224, 91,225,232, +209,127, 59,248,251,247, 60, 88, 99, 58, 99,141,228, 83,124,234,212, 41,124,246,217,103, 72, 77, 77,117,231,114,185,184,126,253, + 58, 36, 18, 9,214,172, 89,195,245,247,247,119,151, 74,165, 56,125,250, 52, 10, 10, 10, 72, 83,249,252,253,204,239, 43,202,159, + 92, 92,248,156,156,126,243,167, 61,251,240,209,216, 49,112,165,233,127,216,248,144, 21,111, 12,233,241, 21,229,182,140,146, 90, + 5,219,249, 6, 13,129, 64,104,137,105, 95, 46, 67, 90,242,113, 59, 69,197,221,169,132,201,105,137,154,189,255, 94,218, 84, 57, +110, 20,179,113,207,149,206,103, 61,111,122,185,119,158,114, 29,192,221, 23, 64,203,155, 71, 56,140, 77, 45,123,249,248,241, 99, + 60,121,242, 4, 60, 30, 15, 74,165, 18,122,189,190,193,124,182,104,209, 98,138, 94,175,255,170,166,158,183,187,185,185,125,176, +107,215, 46, 7, 67,160, 93,203,100,149,148,201, 75,175,220, 76,121, 56,107,202,168, 62,151,174, 37,231,216,134, 12,203, 46, 75, + 58, 82,222, 72, 29,137, 37, 66,225,193,211,135,255,109,169,123,122, 1, 82,255, 62,224, 91,250,130,209,229, 66, 81, 90,133,138, + 39,249, 80,255,248, 61, 58, 78,157,137,227, 71, 14, 88, 6,118,232, 18, 71, 8,241,165,148,106, 94,227,221,108, 14,197,111,214, +105,214,105,214,249, 95,168,179, 41, 44, 2,160, 51, 0,151,154,227, 98, 84,187,204, 56, 2, 40, 66,245,118, 96, 46, 0, 52, 0, +132, 6,247,212, 63, 55, 76, 91,255,220,240,184,184,230,216,185,230,251, 38,128, 18, 35,147, 74, 55, 0,145,168,246,205,138,172, + 41, 35,211, 34,195, 19,194,145, 51, 12, 43, 18, 56, 57,171, 62,124,167,127,135,223,206,221,186, 99,225,104,205, 27,212,167, 83, +196,141,123, 79,175, 18, 14,209, 17,194, 49,201,239,131,203,229,142,217,176, 97, 67, 7,107,107,107,176, 44, 11, 27, 27, 27,200, +100, 50,104, 52, 26,148,151,151, 67, 93, 33,135,182, 66,142,164,156, 76,244,136,232,131,145,111,190,225,255,239, 35,199,198, 0, +216,219,148, 94,247,224, 78,117, 76,214,178, 86, 14, 47,168,137,156,178, 58,208,245,117, 39, 95, 8, 44, 45, 49,112, 86,244, 95, +105, 88,137, 66,161,240,212,136, 17, 35, 6,207,153, 51,135,147,159,159,127,154, 16,210,131, 82,106,212,108,170, 21,137, 63,255, +244,243, 40, 59, 59, 75,138,184,179,199,208,187,211, 88, 88, 8,185, 40,150,107, 65, 8,112, 63,229, 16, 8,177,199,221,180,124, +244,234,104,141, 55, 6,249, 91, 30, 57,112,127, 14, 94,248, 7,189, 82, 53,165,165,165, 40, 44, 44,132, 78,167,131, 78,167,195, +168,209,163,177,115,199, 14, 84, 85, 85, 65,169, 84, 66,163,209,128, 97, 24,112, 56, 28,156,141,143, 67,206,211,251, 8, 15, 11, + 67, 99,148,236,246, 68,202, 39,132, 92,123,248,240, 33,238,223,191,143,103,207,158, 65, 44, 22,195,213,213, 21,203,150, 45,131, + 90, 93,189, 71,217,232,209,163, 35, 0,220,251,171, 47,212, 19, 96,107, 6,195, 44, 28,124,248,176,243,229,195,135,217,107,199, +143, 63, 19, 85, 84,108, 49,229, 94,129, 0,163, 86,127,243, 73,123,169, 84,138,103,217, 27,224,231, 39,192,236,153, 14,136,249, +186, 8, 0, 48,253, 51, 15,116,237,226, 8,121,217, 1, 56, 58,207,199,198,141, 51,124, 38, 77, 90, 55, 1,192,118, 35,170, 23, + 30, 59,118,108,164,175,175,111,139,196,196, 68, 34, 20, 10, 33,145, 72, 32,145, 72, 32, 22,139, 81, 88, 88,136,140,140, 12,186, +122,245,234, 92, 84,155, 22, 27,149, 26,243,224,224, 89,131,221, 78, 61,188,189,163, 87, 11,238,211,164,145,211,122,102,222,189, +150, 88,241,219,217,203,203,245, 42,113, 78,217,179,115,115,219,116, 77,116,156,250,197, 82,124,191,122, 49, 30, 94,191, 84,226, +226, 41,223, 36, 33,234,237,221, 7, 54,192,146,245, 89,202,155,186,232, 29,253,148, 73, 35,109,143,187, 92,153,114,146, 71,100, +207,139,110,175, 65, 70,162, 82,212,182,211,248,118,222, 28,205,133, 11, 23, 36,189,123,247,134, 74,165,170, 99, 38,119,237,218, +197,234,245,250, 6,205,209, 90,173,246,171,220,220, 92, 55,165, 82,137, 55,223,124,115,250,154, 53,107,164,181,123,212, 49, 12, +243, 18,147,181, 98,253,206, 51,159,127,181,233,226,153,189, 95,187,175,136,254,160,207,184,105, 43, 47,162,145,125, 36,121, 28, +206,212,227,135,183,185,138,237,116,144,216,191, 1, 85,129, 18, 15,183,126, 4,133, 92,133,174, 43,150, 2, 16, 66,163,227, 96, +203,144, 81,224, 59,184, 99,241,228, 15,220, 23,108,249,233, 19, 0, 27,204,243,122,179,152,197, 44,245,196,133, 16, 18, 15, 0, +209,209,209,243, 99, 98, 98, 82, 8, 33,241,148,210,168, 26,160, 19, 79, 41,141,170, 77, 83, 51,102,191,114, 94,155,182,254,121, +253,227,121,243,230, 5,198,198,198,174, 10, 11, 11,219,123,229,202,149,167,198,128, 22,170,247,127,222, 90,127, 43, 30,160,102, +213, 97,100,100, 36, 49,252,126,137,209, 98,217, 75,143,159,102, 42,222, 24,208,221, 35, 62,225,222,205,247,223,143,236, 63,102, + 72,239, 65, 25,217,197,247,125,188, 92, 29, 83, 82,238, 89,179, 44,123,201,148, 82, 18,137, 68, 81,253,250,245,227,149,150,150, +194,194,194, 2, 50,153, 12,185,185,185,208,106,181, 80,149,151, 65, 93, 94, 6, 85, 89, 41,180,229,165,120,114,235, 6,130,125, +188, 69, 53,206,242,198, 0, 80,131, 76,149, 33,179, 37,180,178,130,200,202, 10,164,153,102, 67, 66,200,219,118,118,118,215, 8, + 33, 11,107, 6,165,169,115,231,206, 45, 98, 89, 22, 43, 87,174,180,182,180,180,140, 35,132,136,140,233,177,114,226, 70,133,117, + 12,226, 60,200,184,139,158, 33, 19,209,174,205, 91,200, 40, 80,162,168, 66,139,194, 50, 45,186,246,254, 14,173, 66,150,162,101, +199, 24,220,207, 42,129,123, 11, 95, 14,120,162, 38, 55,127,206,201,201,121,233,124,239,158, 61, 80, 40, 20,240,241,241,193,216, +177, 99, 49,119,238, 92,140, 29, 59, 22,238,238,238, 24,247,206, 80, 44, 94,188, 24,207,159, 63, 55,150, 85,117,187,118,237,212, + 94, 94, 94,106, 47, 47, 47,181, 86,171, 69,101,101, 37,202,202,202,234,151,247,140,102,191, 37, 46, 46,243,220,220,220,238,186, +184,184,164,136,197,226,147,119, 8,121,160,242,242,114,233, 49,108, 24, 9,120,231, 29,110,150, 68, 66, 18, 0, 75, 83,116, 57, +218,243, 35,251,246, 27, 44, 44, 43,221, 6,160,154,164,250,224,125, 39,252,153, 16,136,203,127,116,193,103, 83,125, 64, 56, 98, + 16,142, 16,138,170, 11,232,222, 45, 76, 96,107, 75,162,140,212,245,123, 0,238,244,232,209,195,125,218,180,105, 68, 36, 18, 97, +250,244,233,218,201,147, 39, 63, 26, 59,118,236,163,243,231,207, 51, 94, 94, 94,104,217,178, 37,105,217,178,165, 27,128, 59, 53, +247, 52, 41,214, 62,100,133, 90,123,255, 15, 91, 95,233, 83, 6,142,225,149, 58,209,168,197,107,242,138,151,111, 74, 95,155,241, + 80,225,253,240,250,165,226, 71,201,199,217,140,155,191, 23,229, 61,170,240, 94,190, 41,125,237,188,239,115, 27,124,169, 19, 18, +192, 30,138, 79,208, 42,170, 20,188, 97, 67,250, 42,166,124, 56,166,157,189,101,224, 46,180,120, 35,164,149,167,199,184,197,171, + 54,106, 39,127,242,185,246,231, 95,182,209,138,138, 10,200,229,114,108,220,184, 81,127,252,248,241, 92,134, 97, 62,111,108, 14, + 4, 0, 58,157, 14, 83,166, 76,145, 90, 91, 91, 35, 39, 39,167,142, 17, 5,128,124, 89,241,189,203, 55,147, 31,204,250,215,232, +136, 42,181, 90,125,230,247, 91,247, 3,124,189, 60, 8,161,141, 46, 68, 17,242,249, 3,187,116,239,206,165,180, 12,132,231,137, + 39, 59, 86, 67,254,188, 4,242,194, 18,112,249, 82,232, 33,130,142, 21,194, 54,184, 27,210,110, 38,162,133,147, 11, 79,196,231, +155,183,206, 50,139, 89,254,161,210, 20, 22, 49, 4, 75,177,177,177,171,154,186,110,240,173,169,119, 94, 7,164,234,131, 48,195, + 99, 0,136,141,141, 93, 69, 41,141,186,114,229,202, 30, 0, 74, 19,241,194,199,181,223,134, 81,226,141,162, 14,174, 74, 19, 51, +103,238, 66,216,217, 72,108,186,117,242,117, 61,122, 58,225,214,165, 43,183,238,183,106,233,232, 68,117, 26,187,111,214,125,239, + 65, 20, 74, 83,157,193,253, 29, 29, 29,161,213,106,241,248,241, 99, 60,123,246, 12, 90,173, 22,250,170, 42,168,203,202,160, 42, + 45, 5, 83, 85, 1, 1,195, 64, 41, 43,132,131,133, 24,120,177, 34,209,216, 3, 54, 8,180,106,191,197,214,214, 16, 89, 89,131, +195,231, 55,104, 86,108, 68,103,231,110,221,186,237, 79, 78, 78,238, 62, 96,192,128,229,132, 16, 27, 74,105, 86,110,110,110,255, + 69,139, 22,169, 93, 92, 92, 48,101,202,148,246, 0, 38, 26, 5,153, 66,141,191,151,107,123,180,243,158,136, 86, 45,251,161,172, + 74, 7,153, 92,135,194, 50, 45,182,124, 23,134,131, 63,119,195,159, 7,123, 33,249,204, 64,148,233, 92, 97,233,254, 54, 40,163, + 9,108, 74,231,217,179,103,177,108,217, 50, 44, 95,190, 28, 43, 87,174,196,242,229,203,145,155,155,139,160,160, 32,100,103,103, +227,212,169, 83,200,207,207,135,163,163, 35,110,220,184,129,245,235,215,227,207, 63,255, 52,133,185, 51, 41, 13, 33,164, 89,182, +116,189, 94, 63, 41,127,216,176, 14, 5,246,246, 1,157, 58,117, 26, 60,125,250,116,239, 30, 61,122,212, 93,247,246,246,246,148, + 72, 36,207, 9, 33, 63, 19, 66, 58, 54,165,139, 5, 58, 57, 57, 5, 65,163,126, 80, 83, 87,124, 16, 34, 70,191,129,247,209,163, +215, 45,104,117, 2,112,136, 8, 28,142, 24,122,125, 49,236,236,220, 65, 41, 9, 50,146,197, 69, 50,153,204,247,220,185,115,156, +140,140, 12,136,197, 98, 0,200, 92,178,100,201,247,107,215,174, 77,117,112,112, 96,226,227,227,113,228,200, 17, 68, 69, 69,113, + 39, 79,158,236,219,178,101,203,205,198,158,123,241,183,121, 87,119,175, 59,245, 46, 95,103,215, 81, 44,105,213, 26, 85,150,111, + 79,237,227, 36, 5,128, 83, 79,158, 84, 56,123,202, 99,171, 42,238,102,219,122, 84,126,109,204, 17,158,210,197,236,237, 71, 15, +174,237, 62,124,186,188,176,160,148,223,169, 67,160, 50,102,217, 23,130, 86,173,219,126,179,120,238,191, 92,115,229,226,178,129, +211, 79, 61, 56,116,250, 70,229,248,247, 63,210,127,248,241, 52,213,169,211,103, 15,179, 44,219,161,177, 21,135, 44,203, 34, 63, + 63, 31, 41, 41, 41, 72, 79, 79,135, 76, 38, 67, 81, 81, 17, 42, 42, 42,234,204,141, 22, 21,242, 19,223,255,122, 60, 73, 42,145, + 88,116,239,224,235,121, 61, 49,181, 80, 42,145, 88,248,182,246,108, 71,200,210, 6,251, 17,134, 97, 58,136, 45, 36, 0, 8,202, +146, 47,161,178,180, 18,149,101,149,168, 40,169,132, 90,203,133, 74,205,129, 82,195,129, 87,196, 27,168,172, 82,161,178,184, 28, + 44,195,132,152,135, 27,179,152,197, 44, 77,140,203,241,209,209,209,243, 77, 76,110,178,121,179, 62,240,138,142,142,158, 79, 8, +137,159, 55,111, 94, 32, 76,240,105,166,148,110,173,255,169,189,102, 52,188, 67, 81, 81, 90,165,181, 83,192,136,153, 95,126,117, +106,207, 47,223, 57,171,213,138,108, 7, 59, 75,198,210, 66,232,248,225,148,149,168,168, 44, 29, 94, 89, 98,250, 42,169,210,210, + 82, 60,125,250, 20, 18,137, 4, 2, 62, 31,140, 82, 9, 70, 89, 5,101,105, 49, 56, 90, 53, 4, 12, 3,123, 11, 9,188,220, 93, +209,202,197,213, 36,157,143, 47,252, 86,231,248,110,104, 46, 92,221,205, 31, 66,169, 37,132, 86,150,248, 52,254,119, 0,128, 64, + 32, 0, 22, 45, 55,165, 50, 29, 91,180,104,113,108,247,238,221, 2,153, 76,134, 59,119,238, 36, 81, 74,203, 9, 33, 86, 0,216, +251,247,239,159, 75, 78, 78,142,242,245,245, 5, 0, 31, 99,250,228, 69, 28, 70,167,167,200,121,158,137,140,103,137,176,183,105, + 3,190, 69, 59, 20,150,105, 33,146,180,129, 78,253,194,250,168,146,103, 65,169, 53,109, 97,164, 70,163,129, 94,175,135, 94,175, +135, 70,163,193,199, 31,127,140,203, 87,174, 96,239,145,243,120,250, 36, 13,237, 91,187, 98,194,132,241,232,214,173, 27,174, 92, +185,210,164,174, 73,157,136,110, 65,111,240,214, 13,230, 64,104,233,160, 14,157,123,230,186, 41, 96,139, 82, 74, 76, 40,207,181, + 81, 81, 81,109,211,170,170,144,242,224, 1, 6, 44, 89, 2, 0, 56,121,242,228, 75,207, 50,107,214, 44, 97,106,106,234,135,183, +110,221,250,144, 16,178,142, 82,218,176,179, 57, 5, 78,156,184,138,127,253, 43, 21, 50, 89,181,191,246,190, 61, 47,112,105,198, + 83, 45,222,140,172,182,104,217,218,218, 98,221,186, 32,147,202,147, 97, 24,108,221,186,181,206, 92, 8, 0, 60, 30,175,199,172, + 89,179, 70, 52,148,190,109,219,182, 2, 99, 58,103,141,246, 16,223,201,146, 76,130,163,223,136, 0, 0, 32, 0, 73, 68, 65, 84, +181,105,219, 42,208,218, 49, 24,197,186,196,160,196,220,252,207,102,141,246,216,176, 46,238,153, 74, 66,212,219, 9,147,211,146, + 39, 86,237, 48, 37,143, 79, 78,109,212,216,182,122,127,199,115,153,124,193,180,143,222,115,176,182,117,174,250,249,251, 24, 59, + 14,151, 67,143,221,210,150, 5,122, 59,216,190, 29,250,109,229,191,102, 46, 74,212,232,115,166, 33,231, 88, 90, 83, 33, 46, 24, +134, 65, 94, 94, 30,100, 50, 25,178,179,179, 81, 84, 84, 84,243,238, 23,189,178,114,181,153, 29, 34,148,217,217,200, 58,252, 51, + 90,141, 31,143,174,203,151,129, 97,121, 80, 42, 24,172, 11,239,143,210,114, 37,212, 44,129,123,231,112,124,116,242, 15,112, 40, + 3,108,217,100, 30, 73,204, 98,150,127,168,152, 18,222,161, 22, 16,197,196,196, 68,253,221,255,111, 8,182, 98, 98, 98, 82, 98, + 98, 98, 76,254,175,250, 38, 67,195,115,163,225, 29, 0, 64, 46, 75, 77,119,240, 10,206,171, 82, 86, 89,184, 56, 59,169, 45,196, + 34,182, 92, 94,193, 77,188,151,164,173,204,127,252,176, 25,207,113, 63, 57, 57, 57, 40, 47, 47, 15,217, 89, 89,208, 43,171,192, + 81,107, 64, 85, 10, 12,232, 25, 14, 49, 0, 49,135, 64,192,106,193,227, 10, 81, 81, 41, 7,128,251, 70, 7, 71,157,238, 21,102, +139, 16, 2,161,149, 21,132, 82, 41,132,150, 86, 47, 49, 92,166, 48, 54, 34,145,104,119, 92, 92,156, 91,139, 22, 45,176,108,217, + 50,120,120,120,248,117,232,208, 65,209,171, 87, 47,137,139,139, 11, 2, 2, 2, 16, 30, 30,142, 83,167, 78, 1,128,209,152, 82, + 58,189,248,238,195, 76,244, 40, 42,185,130, 63,126,255, 17, 26,165, 26,157, 34,126,132,150,215, 10, 78,129, 75,193, 62,222, 5, +197,243,163,213,236,129,235, 16, 60,203,206, 4,225, 10, 83, 76,101,158,106,143,147,146,146,176,231,104, 2,220,188,252,145,253, +232, 1, 30, 92, 60,135,203, 78, 14,240,242, 15,168, 51, 3, 53,154, 71, 6,188, 21,155,234,194, 59,136, 74, 74, 74, 68,246,246, +246,234,218,178,115,115,115,251, 43, 96,235,189, 57,115,230,160,140,207, 7, 34, 35, 33, 72, 79,135, 86,171, 69,104,104, 40,186, +118,237, 10, 0, 8, 13, 13, 5,143,199, 67,112,112, 48,220,221,221,177,105,211,166,247,208,200,170, 62, 14,193, 29,189,190,216, +207,219,219,187, 14,104,237,216, 41, 67,226,173,129, 32, 16, 98,227,247, 47,162, 57,120,122,122,226,121,126, 58, 8,161,201, 70, +242,184,220,213,213,117,145,155,155,155,247,218,181,107,185, 98,177, 24,159,124,242, 73,155,202,202,202, 86, 53, 84, 50,230,205, +155, 87,205, 82, 45, 94,140, 37, 75,150, 64,173, 86, 43, 26, 83,182,115,125,176,123, 97, 9,251,161,139,107,139,225,125, 29, 91, +117,232, 55,104, 0,218,248,246, 67,191, 65,217, 0,176,202,158,151,249,206,234,133, 65,135, 29, 91,218,111,251,237,244,217,197, + 61, 35,250, 45,136,158, 98,183, 34,118, 75,169, 81,159,199,242,172,237, 21, 15,133, 99,214,127,183,121,231,250,175,230,205, 16, +103,203, 52,165,185,165,180,210, 82,196,179,244,113, 33,150,159,125,185,252,105, 94, 94,250,108,228,156, 54,186,210,146,101, 89, +164,167,167,215,249,244,169, 84, 42, 84, 85, 85, 33, 39, 39,167,174,205, 40,165,214,111, 78,123,127, 72, 72,149, 82,169,184,126, +239, 81,246,194,233,227,194,170,148, 74,197,163,140,236, 52, 74,191,109, 16,141,113, 56,156,123,138, 10,197, 0, 69,153, 10,178, + 59, 15,225,209,223, 11, 58, 61,129, 70,207, 64, 86, 92, 1,181, 30, 96, 56,124, 4,190, 51, 1, 12,225,161, 40, 47, 23, 28, 46, + 55,201, 60,220,152,197, 44,255, 88, 49, 26,222,129, 16, 18, 31, 22, 22,182,215,144,117,170, 61, 6,160, 6,208,148, 43,143,204, + 16, 76,213,154, 19, 27,251,159,122,122, 77,157, 96,190,226,163,101, 52,188, 67,205,141, 36,164,131,151,251,234,197,227, 60, 88, +189,190,125, 97, 81,129,158,199, 19,241, 91,218, 40,243,155, 83,130,106,181, 58,254,220,185,115,195, 6, 14, 28, 40,122,116, 47, + 9,154,242,114,104,202,203,192,103,245,176,151,116, 1, 71,171, 6,209,104,208,194,143,133,170, 66,130,132,203,201, 58,181, 90, + 29,111, 42,208,226,112,185, 47,251,101, 89, 90, 66,100,101, 13,145,165,101,125,211, 34, 49, 82, 80, 22, 67,135, 14,237, 31, 26, + 26, 10, 74, 41,182,110,221, 10,173, 86, 43,212,106,181,208,104, 52,208,106,181,144,203,229,216,185,115, 39,126,248,225,135,203, + 0,126, 53, 58,152,233, 53,231,206,156,189,208,237,131,113, 81,252,147,241,235,160,215, 48, 80, 18, 15, 84, 85,233, 80,169,177, + 0,227, 48, 30, 40, 56, 1, 46, 79,140,176,224, 54, 56,122,224,144, 22,122,245,121, 19, 81,248, 75,172, 80, 78,118, 38,158, 61, + 73,131,165,252, 57,156,172, 45,160, 72, 79, 67,167, 9, 19, 95,139,157,104,217,178, 37, 88,150, 69,223,190,125,235,156,171, 95, + 23,108, 21, 23, 23,227,248,241,227, 8, 13, 13, 69, 68, 68, 4,114,115,115,145,158,158,142,183,222,122,171, 46, 77, 82, 82, 18, + 18, 19, 19,225,227,211, 52, 73, 88, 84,162, 59,249, 44,231,206,232,183,223,126, 91,112,237,218, 53, 80, 74,225,235,107, 13,107, + 43, 41, 8, 71, 4,127,127,103, 0,213,115,128, 62,125,250, 64, 46, 79,215,151,150,210,147, 70,202,113, 55, 33,228,136, 70,163, +121,220,187,119,111,247, 39, 79,158, 96,230,204,153,188,125,251,246,213, 82,201,136,142,126,121, 49,133, 82,217,184,233,190,125, + 7,191, 47,218,232,237, 34,196,146, 86,173,173, 29,131,209,198,183, 31, 0, 96, 96,212, 7,104,211,214, 19,242,162,187,173, 85, +202,204,225, 2, 94,169,221,221,141,185,169,146,200,160,247, 85,133,191, 63, 2, 96, 74, 0, 96,170,124,180,175, 32,155, 63,126, +255,145, 99,167,166,188, 21, 53,148,175, 99,244,250, 32, 47,190,109,220,225, 19,133,185, 89,217,223, 34,251,116,242, 11,254,175, + 73, 22,143,145,203,229,144, 74,165, 72, 78, 78, 86, 71, 70, 70,138, 56, 28, 14, 30, 63,126, 92, 7,180,156, 29,237, 3,122,116, + 13,242, 91,177,126,231, 25,169, 72, 36, 26,212,167,139,127,234,163,172,103,148,146,204, 70,217, 86,157,238,236,189, 59, 73,125, +157,220,219,114,211,127,191, 6,135, 94,111, 65,173,230, 64,169, 97,161,214, 3,122,174, 0,110, 29,187,195,214,199, 31, 20,192, +205,107,151,117,106,157,238,140,121,172, 49,139, 89,254,209,172, 22,109, 10, 36,213, 28,151, 0,200,140,137,137, 41, 50, 96,155, +100, 0,146, 0,132,212,164,147,213,187, 79,134,234,213,131, 93, 13,244,200, 12, 0,151,225,177,166, 94, 26,147, 38,128,134, 62, + 90, 13, 2,173, 38,150, 84,194,209,209,209,185, 83,167, 46, 62, 63,253,178, 31,148, 82, 60, 76, 92,131,210,194, 7, 88,180,234, +170,143,135,135, 71,196,179,103,207, 18, 76,201, 4,195, 48,251,182,109,219, 54,187,123,231, 78,157, 90,123,120, 32, 41, 51, 3, + 2,202, 64,192, 48,224,104,213,224, 49, 26,120, 4, 49,224, 16, 75,228,229,149, 35,118,247,254,100,134, 97,246, 25,211,235,247, +214, 80, 44,123, 86, 14, 66, 8,214,134, 5, 65,104,101, 9,129,212, 18,159, 30,187, 80, 7,174,226,151,205,131,208,210, 18, 62, +221,141, 7,132,167,148, 42,172,172,172,110,221,187,119,175,107, 80, 80, 16,102,207,158,141,204,204, 76,176, 44,139,130,130, 2, + 85,126,126,126,174, 76, 38,203, 4,112, 24,192, 79,166, 68, 30, 23,168, 85, 27,226, 15,238,152, 22,214, 51,194,241,237,225, 63, +224,200,129, 89, 40, 43,151, 67,161,151,160, 74,165, 71,149,154, 11,123,135, 14,232, 30, 28,140,188,220, 66,164, 92, 59, 83,201, + 83, 43,214, 52,167,129, 18, 66,144,152,152, 8,111,119, 43,164,253,145, 0, 71, 11, 62, 66,220, 93,225,222,163,103, 93,124,169, +166,132,207,133,254,189,247,222,171,139, 12,255,198, 27,111,100,140, 31, 63,222,109,214,172, 89,248,229,151, 95,112,249,242,229, + 87, 28,180, 35, 34, 34,112,233,210,165,165, 0, 22, 27, 35,245, 52, 26, 13,252,252,252,112,243,230, 77,156, 59,119, 14,253,250, +245, 67, 68, 68, 4,238,222,189,139,223,126,251, 13,137,137,137, 32,132,192,193,193, 1,186,106,240,172,107, 76,153, 86,139,184, +175,191,217, 54,127,253,250, 31, 2,199,141, 27,135,131, 7,247,226,131,247,219,131,112, 68, 32, 68,132,161, 67,218, 99,217,242, +155,232,222,189, 15, 28, 29,249, 88,191,238,232, 83,165,146,217,105, 66, 49,174,248,237,183,223,220, 85, 42, 21,202,202,202,168, +165,165, 37, 41, 46,174, 94,209,218, 16,163,165, 80, 40,196,141, 41,186,119,251,254,154,178, 10, 90, 74, 43, 19,135,151,232, 19, + 59,244, 27,148,131,129, 81,239,227,108,252,175,184,112,230, 28,236,121,153, 25,144, 86,156, 42,202, 40,146,231, 87,249,110,246, +239, 60,153,251,172,234,204,230,233,111,219,113,221,220,216,184,232, 31,202,203,154,104,163,148, 16, 66, 74, 82,119, 29, 59, 76, + 49, 52, 60,172,123,219, 32, 79, 55, 97,105, 81, 33, 61,112,244, 84,178, 54,227,224,241, 90,128,101,108,151, 5, 74,233,178,232, +232,232,175,106,142,183, 47, 92,184,112,114,108,108,172,211,243,231,207,235,124,180, 10,139, 74, 46,132, 71,126,198, 20,151,149, +107,182,173,255,114,148, 68, 44, 18, 46,140,221,246,187,142,139,107,141,233,213,179,236,166,119,102, 46,154,241,232, 97, 98,139, + 86, 18, 33,142,126,185, 24, 73,191, 93,132,142, 35,192,191,206, 93,135, 90,203,160,172,168, 24,231, 63,156, 10, 75, 23, 59,252, +240,251,193, 2,150,101,127, 52, 15, 53,102, 49,203, 63, 87,154,192, 34, 13,197,216, 43, 48, 33,221, 77, 19,244,252,101,169,207, + 98, 25,138, 73, 75,240,138,138,138, 10, 47, 93,186,142,223,227, 87, 32, 33,126, 5, 82, 18,147,144,151,171, 65,110,129, 10,214, +214,214, 87,155, 24,248, 7,212, 31, 28, 20, 10,197,136,133,139,190,122, 46,150, 88,160,119,255,254,112,117,114,134,133,128, 15, +174,158, 5,151,240, 81, 41,179, 69,218, 93, 5,230,110,219, 85, 88,169, 80,140,168, 63, 72,212,215,105, 8, 50, 8, 33, 16, 89, + 91, 65,104,105, 5,145,149,245, 75,102, 68,177,181, 53,196, 86,214,224, 9,133, 13, 57,205,191,162,179,178,178,114,228,168, 81, +163, 74,203,203,203, 49,121,242,100, 36, 36, 36, 36,158, 57,115,198, 58, 41, 41, 73, 82, 88, 88,216,150, 82,250, 6,165,116, 75, + 99, 32,171,190,206,146,146, 39, 21, 84,175, 30, 19,243,213,231, 74,149,222, 1,163, 39,238,131,148,147, 3, 61,195,130, 2,112, +183, 23,162,199,128,229, 40,212,132, 99,223,230,149, 10, 86,171, 26,103, 24, 67,171,190, 78, 74, 41,117,113,113,121,165, 12,206, +157, 59,135,209,163, 70, 98,208,240, 97,112,106,237, 13,231, 1,111, 97,208,228,127, 97,243,230,205,224,112, 56,112,116,116,124, +137,225, 48,212,185, 61,145,242,119,223,165,100,247, 93, 74,126,189, 77,121, 0, 38,236,218,181,235,235,144,144,144,139,151, 47, + 95, 94, 3, 96,140,225,127, 25,228,101,137, 33,155,213, 72, 29, 45,152, 49, 99,134,242,209,163, 71,144, 74,165,208,235,245,184, +124,249, 50,126,248,225, 7,172, 93,187, 22,137,137,137,112,112,112,128,143,143, 15,212,106, 53,110,222,188,169, 4,176,160,137, +182,196,202,100,250,145, 27, 55,198, 22, 71, 69,245,194,182,109,223,195,213, 53, 28,124,158, 43,120,124, 39, 72, 45,253,240,243, + 79, 95, 99,240,224, 78, 56,118,116,127, 73, 81,177,126,100,253, 40,238,141,228, 83,117,253,250,117,108,222,188, 25,163, 70,141, +202, 29, 61,122, 52, 83, 94, 94, 94,199,104,213,238,198,190,164,198,199, 76,173, 86,139, 26,211, 57,249,203,123,185, 95,172, 72, + 94, 86,240, 60, 55, 52,225,226,213,247, 46,156, 57,135,167,143, 46,224,194,153,115,248,227,194,149,232,130,231,185,161,157,186, +181, 19,140,152, 60,237,139, 29,135, 14,114, 45,173,221,176,227,208, 65,238,216,207, 62, 95,217,101, 80,191, 5,198,218,124, 77, + 61,210,202,194,130,121,171,214,124, 87,169,215,170, 56,171,191,221,148,167,148,229, 47, 64,237, 82,204, 70,216, 44, 67,157, 10, +133, 98,139, 82,169,116, 87, 42,149,238, 42,149,106, 65,102,102,102,239,217,179,103,203, 24,134,169, 99, 75, 11, 83,142, 94,189, +255,199,175,171,156, 29,237, 36,225, 93, 3,219,175,219,114,224,247,236,156,130,127,215,198,208,106,164,142, 84,149, 74,213,200, + 97, 35,198, 87,149,149,170, 17,246,121, 52, 88,177, 37,212, 12,160,163, 92,232, 9, 15,247, 86,172,131,196,222, 10,187, 51,110, + 43,202,117,218,145,134, 49,180,140, 60,251,107,139, 89,167, 89,167, 89,231,127,167,206,255,205, 66, 8,113, 51,220,235,176, 38, +174,214, 11, 70,203,216,146,202, 22, 45, 90,244,126,123,232, 0,244,137, 90, 8, 74, 41, 30,220,254, 6,165,178,135,104,225, 42, + 66,122,182, 60, 12, 64,130,169,153,161,148,102, 19, 66, 66,103, 44, 88,120,104,244, 27,253,253,131, 90,183, 22,181,106,229, 5, +169,179, 51,138,138,100,248,243, 90,170,110,229,158,184,228, 26,144,101,202, 22, 60, 96, 89,182,218,201, 29, 64,255, 25,115, 65, +184, 92,160, 38,140, 67,237,192,216,186,107, 56, 8,143, 7,134,178, 80,171,213,212,132,124, 62, 35,132,140, 28, 55,110,220,249, +248,248,120,206,160, 65,131, 58, 30, 62,124,152,253, 43, 21, 81, 89,144,118,209,210,165, 93,212,202,121, 83,246,133,246, 27,102, +237, 27,216, 69,208,165, 21, 23, 90, 29, 65, 94,110, 22,226, 15,221,208,166, 94, 63, 35,167,122,213,152, 42, 89,211, 91,240,104, +181,218,236,182,109,219,186,108,222,188,185,206, 25,158, 97, 24, 20, 21, 21,225,234,213,171,232,208,181, 59,252,223,255, 16, 50, +153, 12, 27, 55,110,132,167,167, 39,134, 12, 25,130,146,146, 18,232,245,250,108, 19,235,138, 1,112,166,230,243, 18,160,173, 33, + 84,168, 49,179,161,143,143,143, 80,165, 82,117,116,115,115,227, 18, 66, 54,104, 52,154, 73,243,230,205,115, 91,181,106, 21,218, +183,111,143,162,162, 34, 72,165, 82,248,250,250, 66, 38,147,225,198,141, 27,140, 66,161,216, 12, 96, 25,165, 84,102, 36,127,143, + 9, 33,161,211,167,127,122,232,235,216, 41,190, 42,117, 31,161,189,125, 79, 80,170,135, 76,150,137, 10,249,101,237,242,101,191, + 62, 41, 40,212,141,160,148, 62, 50,177,154, 22, 79,155, 54, 13,168,217,130, 39, 61, 61,253,142,191,191,191,111, 99,140,150, 41, +178, 46,238,153, 10,192,158,213, 51,195,103,202,139,238,250,218,243, 50, 51, 66,131,216,141,235,226,158,169,150,206,180, 93, 81, +148,153,144,150, 95,117,102,243,142, 67, 7,185, 19,135,143,100, 60, 44, 31, 69,139,157,233,129,126, 67,140,214, 15,237,216,177, + 99, 75, 66, 74,218, 20, 22, 63,188,245,193,228, 41,239,216, 8,148, 39, 67, 60,138,125, 56,158,157,196,137,137,137, 25,166,238, + 25, 90, 79,111, 26, 33,164,247,188,121,243,206, 80, 74, 95,242, 77, 40, 44, 42,185, 16, 22, 53,141,150,149,149,223, 41, 76, 61, +122,207, 4, 93, 55, 8, 33,253,131, 58,116, 58,248,245,170, 88,151, 62, 51,102,243,210, 46,254, 14, 48, 58,100, 37,252, 14, 70, +164, 97,215, 93, 57, 91, 80,174,213, 14, 55, 71,133, 55,139, 89,204,108, 86, 83, 88,228,191, 61,251,245,157,225, 81,179,247, 33, +207,148,187,159, 61,123,150,224,227,237,241, 91, 90, 90,239, 55, 60, 61,156, 0, 0,233, 25,121,200, 45, 80,255,102,170,217,176, + 1,176,213,101,215,241,147, 99, 68, 34, 81, 20,169, 9,225, 64, 95, 99, 83,105,189, 94,255,172,117,235,214,141, 92,109, 56,212, + 19,195, 48, 5, 38,230,243,119, 66,200,120, 31, 31,159,216,172,172,172, 67,148,210,170,191, 90, 19,149, 5,105, 23,237,237,125, +188,175,156, 59,248,249,181,223,227, 7, 80,189,166, 3, 0, 16,158,176, 89,155, 74, 87, 86, 86, 78,249,228,147, 79,182,240,249, +124, 79,212,248,156,213,250, 96, 49, 12,195,213,106,181, 98,134, 97,184, 0, 8,135,195,209,243,249,124,213,161, 67,135,244,122, +189, 62, 91,173, 86, 79,249, 11,244,104,179, 94,128,147, 39, 79,182,178,179,179,123,131, 16, 50,138, 82,234, 87, 81, 81,161, 94, +180,104,209,149,184,184, 56,121,235,214,173,223,140,140,140, 36,246,246,246,184,121,243, 38, 45, 46, 46, 62, 0, 96, 1,165, 52, +189, 25,249, 73, 39,132,132, 76,249,215,143,239,218,219,111,137,164, 20,255,143,189,235,142,139,234,104,187,103,238,221,190,203, +194,238,210, 23,176,128,130,136, 5, 16, 37,198, 18, 81, 19, 19,177, 71, 44,177, 71,163, 38,209, 24,163, 6,141, 53,182,196,215, +196, 18,141, 93, 99,141, 61,138,216,162,198, 22,163,198, 18, 43,138,130, 40,189,215,133,237,119,190, 63,100, 9, 33,128, 11,234, +251,198,124,123,126,191,203,101,119,239,158,157,153, 59,119,230,204, 51,207, 60, 19, 8, 10, 66, 24,220,204,207,231, 14, 23, 23, +155,183,149, 10, 70,107,249, 76, 21, 44,105,115,111,221,186,181, 9, 0,191, 50, 31,173, 26, 65, 90,116, 80, 91,146,240, 46,177, + 43,222,255,237,178, 36, 45, 0,204, 90,146,151, 15, 96,253,248,222, 42,238,238,213,245,139, 60,236, 99,167, 44,219,159,179,209, + 26,186,224,224, 96, 31,134, 97,250, 3,104,234, 34,202,107,232, 44,204, 55, 19, 66,195, 8, 97,156, 0,220, 8, 8, 8, 56, 4, + 32,169,150,247,249, 62,128,186, 21,223,207,184,125,224, 55, 0,191,213,144,235, 50, 33,164,225,167,147, 38,126, 36,228,243,223, +132,217,220,124,238, 79,187,169,109, 83,105, 27,108,176,225, 95,102,213,250,160,178,247,121,214, 18, 60,140, 75,234, 2, 0,190, +190,190,244,193,131, 7, 53,238,112, 43, 27,141,227,105,196,247, 31,159,135, 39, 43, 43, 43,228,101, 22, 28,165,116, 7,128, 29, + 47,146,179, 84, 72,125, 89,122,212, 54, 93, 55, 1,132,254, 47, 43,149,197,170,133,167,155, 48, 87,138,183,222,122,235,177,193, + 96, 56, 1, 32,145, 16,162, 0,144, 99, 48, 24,142, 25,141,198,116, 66, 72,200,183,223,126,107,137,124, 63,151, 82,122,165,150, +233,224, 0,108, 47, 61, 94,116, 30,183,171,213,234,137,142,142,142, 13,180, 90,173, 80,171,213, 10,202,143, 1, 36, 18, 73,166, +181, 92, 10, 57,249, 65,192,203,117, 84,200,201,223,132,148,202, 3,123, 75, 52,183, 26,169, 60,176,215, 90,190,107,215,174,197, + 5, 5, 5,109,101, 24,166, 62,165,212, 21,160, 14,148, 34,147, 82,154,197,227,241,146,239,220,185,147,252, 79,105,128, 74,133, +212,226,210,195, 6, 27,108,176,225, 95,133,234,124,180,120, 53, 37,139,141,141, 37,182, 34,181,161,188,216,170,238,243,132,132, + 4, 29,128, 11,165, 71,197,239, 94, 1,208,253,159,158,199,148,148,148,224, 23,193, 51,114,202,205,100, 0, 19, 66, 42,217,218, +121,214,242,156, 66, 0,147,195,122,212,140,243,250,245,235, 79, 0, 60,177,213, 68, 27,108,176,193,134,255, 29, 42,179,102, 89, +189,215,161, 13, 54,216, 96,131, 13, 54,216, 96,131, 13, 85,195, 34,170, 42,139,163, 69, 0,116,174,226, 75, 86,135,174,175,205, +234,131,103,241,219, 56,109,156, 54, 78, 27,167,141,211,198,105,227,252,247,113,254, 91, 81,153,200, 2, 0, 82,139, 69, 73, 53, +249,209,206, 47,186,192,109,156, 54, 78, 27,167,141,211,198,105,227,180,113,254,251, 56, 95,117,145, 85,137,224,180, 77, 29,218, + 96,131, 13,255,191,177,103,207, 30,171, 54, 21, 29, 48,101,125, 55, 59, 59,229,140,162,130,252,175,126, 92, 60, 98,191,229,253, +190,125,251,154,109,165,104,131, 13, 54,212,202, 25,222,199,199, 43,128, 49,115,109, 40,101, 88,202, 80, 35, 41, 40,217,249, 48, + 39,231, 47, 97, 7,234,212,169,163,224, 51,232, 78, 40,149, 17,194,153, 57,150,249, 53, 46, 46,241, 78, 13, 20,160, 80,169, 84, +126, 44, 16, 8, 58,235,245,122, 79,134, 97,146,116, 58,221,137,226,226,226, 21, 21, 3, 23,254, 47,209,168, 81,163,129,167, 79, +159, 86,180,109,219, 86, 39,145, 72, 76, 37, 37, 37,188,163, 71,143,138,222,121,231,157,188, 7, 15, 30,212,106, 69,162,135,135, + 71,199,245,235,215,123,119,233,210, 5, 13, 27, 54,212,244,239,223, 95,208,186,117,107,193,200,145, 35,227,147,147,147, 79,213, + 80, 73, 7, 16, 66,182, 16, 66, 88,142,227,134,148,174, 72,124, 25,138,157, 97, 24,102, 52, 33,164, 55,165,212,135, 16, 18, 71, + 41,221,207,113,220, 26,107,162,227, 87,194,247, 46,128,174, 12,195, 4, 3, 0,199,113,215, 0, 28,166,148,238,125,142, 52,190, + 52, 78,169, 84, 26, 4, 0,197,197,197,215, 95, 20, 39, 33, 36,168,244, 33,173, 21, 39, 33,100,184, 68, 34, 25, 5, 0, 37, 37, + 37,235, 40,165,155,106,156,152, 53,141,105,240,156, 24, 0,192,181, 89,254, 0,128, 26,189, 30,125,151,212,228,183, 42,227,171, + 17,199,223,203,160,235,160, 65,131, 22,108,219,182,109, 22,165,244,192,203,168,251,110,110, 94, 43,190, 89,182, 86, 61,225,227, +247,191,194,211, 29, 33,170, 69, 19, 66,222, 20,178,108, 15,189,217,124,238, 14,176, 27, 0, 79,165, 82, 13, 20, 10,133,237,245, +122,189, 59,143,199, 75,213,235,245,103,243,243,243,119, 80, 74,141,207,157,192, 24,162, 52, 20,195,141,112,127,238,243, 70, 25, +232, 4, 82,164,193,159,230,254, 3, 70,251, 12,158,198,219, 49, 2,216, 80,155,112, 30, 44,203, 78, 80,171,213,189, 11, 10, 10, +138, 89,150,165, 79,105,201,211, 63, 0, 24,134, 33, 28,199,101,100,103,103, 15,249,127,100, 69,169, 91, 90,174,245, 74,223,226, + 3,112, 5,112, 3,192, 4, 74,105,145, 77, 2,253,215,238, 69, 69,139, 86, 52,165, 52,181, 76,104,149, 11,119,223, 33, 60, 60, +252,140,143,143, 87, 64,223, 94,125, 22,140, 25, 61,150,176, 44,131, 91,183,111,243,222, 27, 50,252, 45,149, 74,229, 97,167,211, + 53, 6, 33, 92,177, 88,124,203,104, 52, 36,239,222,177, 77,238,223,168,145,217,108,230,176,122,205,170,119,124,124,188,166, 89, + 35,182, 8, 33,126,110,110,110, 91, 34, 35, 35,221,122,244,232,193,186,185,185, 33, 33, 33, 65,241,227,143, 63, 54,250,238,187, +239,250, 17, 66,134,148,198,242,169,105,102,219,185,169,152,183,228, 18,210, 9,133,102, 20, 26,113, 50,173, 4,199, 41,165,231, +106, 91,128,197,197,197,227,138,139,139, 67, 91,182,108, 73, 55,108,216, 64,134, 13, 27, 70, 9, 33,164,164,164,228, 7,212, 50, +244,131, 76, 38, 91,217,165, 75, 23, 95, 95, 95,223,184,135, 15, 31,118,221,181,107,215,225,161, 67,135,250,200,100,178, 88, 0, +126, 53,164,219,148,157,157, 29, 88, 82, 82, 2, 79, 79,207, 13, 0, 90,188,132, 74, 68, 88,150,221,239,225,225, 65, 23, 45, 90, +116, 32, 48, 48,208, 53, 39, 39,199, 52,121,242,228,206, 23, 47, 94,124,135, 16,210,195, 90,177, 69, 8, 81, 18, 66,214,184,185, +185, 57,125,245,213, 87, 15, 66, 66, 66,110,136, 68, 34, 97,108,108,172,116,226,196,137,159, 50, 12,211,143, 82, 58,154, 82,235, + 59, 8, 11,167,135,135,135,211,130, 5, 11, 18,130,131,131,111, 9, 4, 2, 65,108,108,172,236,243,207, 63,159, 80, 91, 78,134, + 97, 86,183,110,221, 90, 57,107,214,172,187,141, 26, 53,186,192,178,172, 48, 41, 41,137,153, 61,123,246,199, 44,203, 70,112, 28, + 55,166, 54,233,116,117,117, 85,206,158, 61,251,110,235,214,173, 47, 10, 4, 2,193,189,123,247,152,200,200,200,143,107,146, 78, + 71, 71,199, 48, 71, 71,199,181,105,105,105, 60, 0,112,119,119,111,213,160, 65,131,239,202,239,105,105,113, 13, 48, 26,141,133, + 90,173,118, 80,118,118,118,165,129,112,135, 77, 93,222, 29, 0,190, 51, 88, 94, 63, 61, 63,235, 53,176, 58,202,154,124, 7,187, + 19, 10, 0, 3, 63, 91,220,235,233,249,233,251,223,104, 0, 30,143,199,109,113, 39,244, 90,170,245, 33, 99, 8, 33, 61, 59,118, +236, 56,251,212,169, 83,171, 58,116,232,240,249,214,173, 91, 93, 18, 19, 19,191, 38,132,120, 13, 24, 48, 96,216,201,147, 39, 23, +102,102,102,238,121, 81,245, 95, 40, 16,137, 8, 67, 32, 17, 75,237,173,185,158,207, 48,221, 46,244,236, 57,106,221,189,123,193, +223,197,196,120,107,220,221, 67,199,143, 31,239,218,167, 79, 31,198,203,203, 11, 15, 30, 60,112,220,186,117,107,227,117,235,214, +245, 38,132,124, 66, 41,125,252, 60, 34, 75,147,135,102, 58, 61,130, 41,133,226,207, 50, 66,158,200,128,107,178, 24,114,243, 31, + 32,182,102,110,218,180,105,214,131, 7, 15,176,112,225, 66, 0, 88, 81,195,246,103, 98,239,222,189,195,247,237,219, 39,217,189, +123,183,164,101,203,150,112,115,115, 67,233, 96,170, 44, 48,181,183,183,247,255,171,206,221,209,209,113, 67,124,124,124,152, 76, + 38,251,203,251,113,113,113, 65,190,190,190,249, 0, 62,171,169,112,115,118,118,222,206,113,156, 46, 59, 59,251,125, 0,144,203, +229,219,100, 50,153, 50, 53, 53,117,218,203, 26,200,148, 41,147, 10, 90,228, 85,182,104, 85, 26,176,180,252,142,217,140,153,107, + 51,102,244, 88,210,127,224,128,180, 7,113,241, 28,143, 47, 28,120,244,216, 49,105, 64, 64, 0,163, 91,177, 2,166,204, 76, 24, + 63,253,244,245, 19, 39, 78, 24, 35, 6, 14, 46,225,179,100,147,143,119,125,233,206, 29, 63,186,237,219,187,167, 13,128, 59,207, +178,100,185,185,185,109, 57,125,250,180,135,183,183, 55,242,242,242,144,144,144, 0,141, 70,131,126,253,250,241,219,180,105,227, +209,183,111,223, 45,132,144,182,214, 90,182, 8, 33,174, 13, 61,121,135,190,153,217,207,239,157,183,218,200, 60,188, 26,128,166, +105,145,248, 48,166,229,161,211, 23,199,251, 42,152,251, 15,242,105, 55, 74,105,122, 77, 11, 48, 43, 43,107, 74,239,222,189,247, +134,133,133, 57,139, 68, 34,168,213,106,210,163, 71,143,140,148,148,148, 57,207, 33, 92, 80, 58, 10, 51,151, 63, 87,220, 30,200, + 74,120, 42,149, 74, 40,149, 74, 0,240,120,222,145,167, 66,161, 88, 33,151,203,251, 22, 20, 20,148, 48, 12, 67, 9, 33, 84, 38, +147, 73,148, 74,229, 31,119, 99,238,171,117, 58, 93,195,197, 75,215, 45,235,216, 46,208,254,231,159,127, 70,159, 62,125,232,241, +227,199, 71, 3, 88,101,229,111,172,233,221,187,119,241,140, 25, 51,180, 15,226, 18, 60,238,222,143, 35, 50,177,144,115,114,114, +226, 95,190,124,153,183,100,201, 18,241,236,217,179,215, 0,232, 91,131,116,175, 25, 48, 96,128, 97,210,164, 73,169,247, 30,196, +187,220,188,251,128,218,137,249, 38, 39, 39, 71,246,226,197,139, 92,109, 56, 25,134, 89, 61,101,202,148,130,209,163, 71,231,102, +231,228,187,229, 22, 20, 81, 17,159, 53,186,185,185,241, 14, 28, 56,160,219,190,125, 59, 51,106,212,168,213, 0, 34,106, 80,196, +171,123,244,232, 81, 24, 25, 25,153, 23, 27,247,200,237,230,157,251,144,138,248, 70, 87, 87, 23,246,247,223,127, 55, 44, 94,188, +152,153, 55,111,158, 85,233,148,201,100,155,119,237,218,197, 59,112,224,105,219,247,219,111,191, 49, 62, 62, 62,210,242,215,148, +104,117, 96, 8,144,149,149, 37,109,221,186,245,102, 0,158,127, 19, 65,115, 98, 48,108, 42, 48,110,220,184,212,154,214,151, 96, +247,241,184,246,140,240,183,220,234,198,116,224,103,139,123,241,120, 60,110,212,168, 81,105, 21, 63,215,106,181, 4, 64,143,224, + 26,136,173,174, 93,187,126, 17, 29, 29,221, 96,235,214,173,223,110,223,190, 93, 15, 0, 98,177,216,233,199, 31,127, 92,216,175, + 95, 63,244,235,215,111, 6,128, 23, 38,180,204,212,108, 0, 0,145, 88, 36,138,137,137, 33,254,254,254,213, 58,183, 26, 56,238, +202,186,123,247, 66, 62,244,247,111,153,195,113, 13, 5,239,188, 83, 52,113,226,196,172,130,130, 2, 36, 36, 36,192, 96, 48, 96, +216,176, 97,108,135, 14, 29,212,253,250,245, 91, 78, 8,121,151, 82,106,176,194,170,179,216,195,195,227,131,252,252,252, 34,139, + 85,167,113,125, 57,175,125,144, 73,212,188,161, 81, 40, 96, 77,130,238,159,114,228,248, 10,162,241,247,198,121, 0, 16, 20, 35, + 83, 0, 60,183,208,114,240, 34,222,102, 62,230, 57,215,147,190,153, 25, 87, 60,171,232, 49, 93, 81,157,197, 86, 38,147,245,210, +104, 52,123, 74, 59,103,191,110,221,186,225,226,197,139, 0,208, 6,192, 10, 66, 72, 71,134, 97,222,227, 56,110, 61,165,180,186, +173,220,198,247,236,217,243,205,125,251,246,201, 1, 96,207,158, 61, 48, 26,141,240,241,241,129, 64, 32,128, 80, 40, 4,159,207, + 47,219, 29,228,255, 19, 24,134, 17,221,184,113, 3,106,181,186, 98, 61, 1,128,246,181,160,156, 17, 23, 23,215,250,234,213,171, + 8, 11, 11,155,209,172, 89,179,183,207,156, 57,227,150,157,157,141,176,176,176,229, 0, 14,188,236, 60,149,215, 34,255,154,251, + 84, 65, 73,118,120,170,204, 24,150,101, 25,196,199, 37, 24,195,194, 58, 13,125,242,228,137, 93,104,104, 40,195,231,243,161, 57, +117, 10,218,223,127,135,157,157, 29,122,247,238,205, 63,123,246,172,189,189,157,253,200, 71,241,143, 10, 89,150, 1,165,204, 51, +125, 30,148, 74,229,199,211,166, 77,115,243,245,245,133,201,100, 42,139,104,110, 50,153,144,152,152, 8, 59, 59, 59, 12, 25, 50, +196, 69, 42,149,126,108,101, 39, 91,207,207,199,229,218,233,195,107, 90, 76, 28,211, 85,230, 39,253, 25,178,196, 79, 96,183,231, + 67, 52, 78, 57,138,200, 94,161,178,227, 43,103, 4, 55, 80,171,174, 17, 66,234,213,180,144,180, 90,237,249, 91,183,110,141, 60, +115,230, 12, 7, 0,191,252,242, 11,189,123,247,238,232,231, 25,133,114, 28,135,188,188, 60,112, 28,199,150,190,182,156,255,167, +230,125,123,123,251,213,111,191,253,246,128,199,143, 31, 75,142, 28, 57,226,248,228,201, 19,167, 71,143, 30, 57,251,249,249,241, + 22, 46, 92, 24,173,213, 25, 88,163,153,234, 77,102, 99, 97,234,237,219,113,185,233,233,215, 54,110,220, 88, 66, 8,233,109,229, +111,188,235,238,238,238, 56,117,234, 84, 16,190,180, 85,163,198,205,124, 89,190,196,129,225, 11, 29, 74, 74,180,230,248,248,248, +196,169, 83,167,214, 15, 12, 12, 84,151, 78,175, 89,197,169, 86,171,157, 38, 77,154, 4,158, 72, 30,212, 60, 48,184,129, 80, 36, +147,179,124,137, 60, 52, 52,180, 67, 92, 92, 92, 74,100,100,164,123,203,150, 45,107,196,217,178,101, 75,229,168, 81,163, 76, 98, +137,188,181,183,183, 79,227,230, 77, 26,135,251,249,249,245,226,241,120,166,204,204,204,199, 67,134, 12,113,239,222,189,187,107, + 77, 56, 93, 92, 92,148,145,145,145, 38,175,186, 62, 93,186,188,249,214,107, 2,137,220,129, 39,148, 41,138,139,181,230,123,247, +238, 61,158, 62,125,186,123, 80, 80,144,139, 53,156,197,197,197,124, 39, 39, 39, 52,109,218, 20, 1, 62, 62,200,207,207,199,190, +125,251,176,105,211, 38,172, 95,191, 30, 59,118,236, 64, 72,219,183, 32,151,203,145,146,146,130,130,130, 2,254,127,187, 78,113, +171, 27,211,239,244, 31,244, 24, 59,118,108,202,168, 81,163,210, 36, 18, 9, 87,241, 80,169, 84,230, 65,131, 6,165, 15,249,124, +105, 15,203,212, 98,117,150,172, 78,157, 58,221, 56,124,248,240,195,173, 91,183, 34, 32, 32, 0, 93,186,116, 17, 2,192,199, 31, +127, 44,236,215,175, 31,118,237,218,133, 61,123,246,220,241,243,243,251,149, 16,210,211,154,116, 14, 25, 50,164,109, 68, 68,196, +185,136,136,136,235,253,251,247, 95, 59,122,244,232,191,244, 92,169, 41, 73, 87,244,122, 61, 2,131, 91, 74,231,110,184, 52,232, + 89,124,119,129,173,107, 99, 98, 54,125,117,251,246,227, 25, 1, 1,138,186,143, 30,169,126, 88,188,216,201,178, 73,183,209,104, + 68, 98, 98, 34,148, 74, 37, 6, 13, 26,228, 36, 18,137,134, 88, 81,127,150,244,236,217,115,248,147, 39, 79,236,214,173, 91,231, +126,253,250,117,117,106,106,170,251,201, 19,199,156, 39,127,246,177,220,193, 78, 40, 76,201,124, 42, 84, 31,165, 64, 22, 19,143, +182,148, 66, 81,126, 58,177, 86,237,130,154, 72,164, 94,228,187, 6,109, 21,247, 39,237, 10,234, 31,249, 83,144,210,201, 75, 60, +173,154,116, 54, 95,180,104,209,238,168,168,168,129,109,219,182,221, 75, 8,145, 84,114,141, 56, 36, 36,100,223,174, 93,187,134, +183,107,215,238, 60, 33,164,105,149,163, 72, 79,207,222, 63,253,244,147,163,229,181,147,147, 19,196, 98,241,223, 68,150, 64, 32, + 0,195, 48,248,255,132,204,204,204,247,218,183,111,191,187,107,215,174,186,171, 87,175, 34, 51, 51, 19, 30, 30,101, 99,237,180, + 90, 80,170,164, 82, 41,188,188,188,224,235,235, 59,240,236,217,179,110, 70,163, 17,143, 30, 61, 66, 70, 70,198,181,255, 70,158, +202,107,145, 87, 9, 21,246, 57,252, 0, 64,244,223,132, 86,233,222, 66,167, 1,128, 18,162,185,113,235, 22,159, 21, 10, 7,111, +219,190, 93, 36, 16, 8,240,248,241, 99,220,185,115, 7,197, 39, 79,162,228,194, 5,164,167,167,163,168,168, 8,174,174,174, 88, +179, 97,131, 76,111,166, 35,238,221,191,207, 82,230, 79,127,131,170, 86, 36,136, 68,162,206,125,250,244,169, 82,144,165,164,164, +160,107,215,174,124,150,101, 59, 87, 98,158, 59, 81, 33,115, 68,237, 76,162, 78,238,157,235,238, 46,188, 3, 60,152, 8, 20, 94, + 3,168, 14, 48,233,129,228,155, 64,244, 28,212, 45,138, 33,199,230, 14,117,243,144,242,162, 72, 5,179,145, 21,203, 91,125,252, +253,253,215, 15, 30, 60,152, 1,128,142, 29, 59, 18,127,127,255,181,132, 16,159,106,204,136, 39,158,209, 73, 94,204,205,205, 69, +191,126,253, 28, 27, 52,104,112,162, 95,191,126,142,150,247,107,203,105,177, 38, 55,105,210, 36, 91, 34,145,236, 32,132, 60,179, +129, 45,207,169, 80, 40, 86,116,237,218,181,239,246,237,219, 5, 0,112,250,244,105, 68, 69, 69,225,246,237,219,136,141,141,229, +130,131,131,157,151,174,223,189,122,197,170,205, 75,122,181, 9, 84,119,104, 21,220,216,174, 40,183,200,213,213,181, 13,165,212, +199,202,116,118,157, 51,103,206,157,187, 15, 31, 59, 48, 60, 62, 79,192,231,137,236,237,101,174, 74,185,204, 83, 37, 21,123,136, + 24, 98, 87, 92, 92,156,182, 99,199, 14, 14, 64, 87,107, 57,231,206,157, 27,127,247,193, 99, 5, 97,120, 60, 62,143, 47,176,179, +147, 42,222,233, 18,214, 18, 0, 4,160,130,130,130,130,244, 77,155, 54, 25,106,194, 57,107,214,172, 91, 57,121, 69, 74, 30,159, +207,231,241,216,178,178,148, 73, 36,206, 82,145, 72,168,211,233,146,151, 45, 91, 86, 82, 19,206, 57,115,230,220,185,247,240,137, +138, 33,132, 37,132,225,217,203,101,142,142, 14, 82,103,103, 59,137,147,148,199, 10, 11, 10, 10,146,183,108,217, 98, 21,167,193, + 96, 16,164,167,167,227,238,221,187,240,106,217, 18, 63,255,252, 51,234,212,169,131,126,253,250, 97,192,128, 1,144, 72, 36,232, +216,186, 25,166, 78,157,138,135, 15, 31,194, 96, 48,136, 42,227, 44,243,147,170, 0,181, 90,125,245, 89,245,167,252,119, 43,166, + 51,216,157,208,239,244, 31,244, 40, 47,176,170,226, 87,169, 84,230,202,172, 93, 21, 57,187,118,237,250,197,201,147, 39, 27,108, +217,178,165,199,144, 33, 67,206,111,217,178, 5,175,189,246, 26,238,222,189,139,250,245,235,227,135, 31,126,192,128, 1, 3,206, + 47, 95,190,188,199,213,171, 87, 3,189,189,189,167, 61,139,179,127,255,254, 31, 5, 5, 5,157, 74, 75, 75,107,157,147,147,211, +116,223,190,125, 35,122,247,238, 29, 63,112,224,192, 78,101, 22, 45,163,113,123,244,193,189, 8,239,209, 7,141,154, 52, 93, 61, +108,218,214,102,213,113, 82, 74,233,109, 96,237,166,212,212,204,237, 90,109,113, 63, 62, 95, 42,189,116, 73,181,103,213, 42,167, +242, 43,189,147,147,147,209,189,123,119,190, 64, 32,104, 87, 93, 58, 9, 33,139,122,245,234,213,111,223,190,125, 74,139, 85,231, +194,133, 11,184,121,243, 38, 18, 18, 18,144,151,151,135, 78,163,139, 48,118,225, 83,238,177, 11, 41,222,250,152,202,106,217,134, +148, 65, 90,151,184, 57,218,243,126, 29,177,172,209,199, 31,172, 14,224,217,169,248,216,246,121, 44,210, 31,104,247, 84,145, 78, +210,186,117,235,173, 17, 17, 17, 68,175,215, 67,175,215,235, 41,165, 37,149,113,123,120,120,136,155, 55,111,142,209,163, 71, 51, +246,246,246,203,171, 74,167, 70,163,209, 29, 62,124, 24, 67,134, 12,193, 39,159,124,130,134, 13, 27, 66,169, 84,130,207,231, 99, +243,214,157, 78, 3, 70,140,241,107,209,182,125, 96, 64,139,215,154, 23,234,216,150, 2,169,106, 20,169,100,106,224,101,172,144, +251, 39,112, 54,107,214,172,237,229,203,151, 69,237,219,183,199,227,199,143,193,231,151,141,167,204,207,147,206, 57,115,230,136, +180, 90, 45,254,248,227, 15, 12, 29, 58, 52,217, 96, 48,124,250,178,243, 94, 81,139,188, 74,160,148,174,173,112,164, 86,101,209, +154, 3, 0, 70, 14, 81,131,135,142, 40, 62,116,232,144, 84, 40, 20,226,241,227,199, 72, 77, 77,197,230, 77,155,204, 29, 93, 92, +191,128,178, 5, 0, 0, 32, 0, 73, 68, 65, 84, 10,187,120,120, 20,108,222,180,137,234,245,122, 80, 74,225,239,239,143,190,125, +251, 74,222,237, 55, 48,131, 20,148,236,180, 66,249,185, 91,230,215, 71,140, 24,241,183,207, 39, 79,158, 12,123,123,123, 16, 66, +220,172,200, 95,196,248, 57,189, 60,149,222,138,116,154,182, 57, 7,172, 24,224,201, 1,158, 61, 32,118, 0, 68,114, 64, 40,133, +238,234,169, 28,134,118, 73,232,211,238,125,143, 26, 78,245, 64,173, 86,207, 56,117,234,148,243,213,171, 87,105, 65, 65, 1, 82, + 83, 83,233,130, 5, 11,156,213,106,245,140,218,222,148,148,148,148,185,225,225,225,233, 67,135, 14,117, 56,122,244,168,215,208, +161, 67, 29,194,195,195,211, 83, 82, 82,230, 62,207,205, 22, 8, 4,236,237,219,183, 85,243,230,205, 27, 0,224, 74,211,166, 77, +179, 61, 61, 61,175,148, 58, 77, 86, 11,185, 92, 94, 38,178, 44,214, 53, 30,143, 7, 62,159, 15,181, 90,173,207,201,201, 49,183, +107,225, 35,241,119, 96,140,106,145, 64,162,146,136, 61,229,246, 14,161,217,217,217, 55, 8, 33, 86,237, 79, 72, 8, 9,106,213, +170, 21,223, 76,249,220,216,193, 29,213, 31, 15, 15,115,249,126,222,168, 58,203,230,126,224,177,104,246, 72,255,185, 83, 6,133, + 49, 28,167,173, 95,191,190,155,197,161,221, 10,243,121,112, 72, 72, 8,143, 3, 31,119,239, 39,164, 63, 78, 74, 46,124,179, 67, +235, 50,203,101, 64, 80,112, 23,103,103,231,246,254,254,254, 33,214,198,132,145, 72, 36, 65,141, 26, 53,226, 49, 44,159, 56, 42, +229, 94,114, 59,137,171,229, 51,123,133,226,117,149,179,115, 4, 67,105,190,187,187,187,139, 68, 34, 9,170, 65,222,121, 28, 4, +112,117, 81, 57, 56, 59, 41,236,186,132,181,105,216,250,245,214,126,205, 66, 95,107,221,164, 69,200,187,196,100, 42,240,241,241, +113,177, 56,201, 87, 7,157, 78, 39,222,190,125, 59,230,205,155,135,230,117,235,194,195,195, 3, 46, 46, 46,184,112,225, 2, 46, + 95,190, 12,165, 82,137,140,140, 12, 44, 94,188, 24,251,247,239,135,193, 96,144,215,180, 62, 89, 35,182,170,131,201,100, 98, 42, + 10,172,170,248, 37, 18, 9,103,113,146,175, 10,135, 15, 31,222,106,177,100, 77,152, 48,161,237,210,165, 75,207,199,196,196,192, +206,206, 14,151, 47, 95,198,136, 17, 35,206, 47, 95,190,188,237,152, 49, 99,176,105,211, 38,196,199,199,111,168,142,175,127,255, +254,179, 71,142, 28,185,236,204,153, 51,140,171,171, 43,148, 74, 37,122,245,234,133, 13, 27, 54,240, 76, 38,211,198,136,136,136, +235, 17, 17, 17,215,205,137,199,191,216,189,126,193,133, 91, 55,174,227,163,241,147,132,122,147, 49,210,138,134,151,150,216,217, + 21,154,218,183,207,217,101, 52, 22,247, 23, 8,164, 14,215,175,171,162, 54,110, 44, 19, 91, 83,167, 78,133,131,131, 3,240,212, +129, 25,213, 88,117, 62,216,191,127,127, 89,123,232,232,232, 8,161, 80, 8,129, 64, 0, 62,159, 15,150,101,113, 98,181, 12,171, +166, 62,213, 23,171,166, 18, 28, 95, 65,158,107,111, 86,153, 39,105,170,116, 21, 94,255,240,135, 38,129, 77, 59, 57,226,194,143, +105, 88, 16,126, 53,233,242,174,204,137,218,140, 42,183, 82,106, 49,121,242,228,128,140,140, 12,252,254,251,239,248,253,247,223, +231, 85, 81, 54,218,131, 7, 15,126, 93, 84, 84, 4,111,111,111,244,236,217,179, 61, 33,164,101, 21,207, 13, 66, 66, 66,208,189, +123,119,132,133,133,161,121,243,230,208, 27, 76,252,136,193, 31, 52,186, 29,159,233,177, 96,241, 2,233,169, 95,246, 49,231,207, +159, 97,183,238, 61,238,208, 58,236,173,101, 2,185,251, 69, 34,117,114,255,183, 91,180,196, 98,241,210, 51,103,206,184, 25, 12, + 6,220,186,117, 11,159,124,242,201,243,238, 25, 90,102, 0,241,242,242,194,233,211,167, 49,104,208, 32,109,122,122,250,111,255, +173, 60,149,215, 34,255, 22,240,202, 41,200, 50, 60,121,242, 36, 79,165, 82,121, 52,106,212,136,209,235,245, 79,167, 36,246,236, + 49,175,223,184, 49, 90,171,213,142, 7, 32, 88,241,253,247,171, 61, 60, 61,195, 6, 15, 25, 66,140, 70, 35,194,195,195,133,135, + 14, 29,114,124,152,158,254,204, 13,145, 43,142, 54,134, 13, 27,134,165, 75,151, 2, 0,198,141, 27, 87,102, 90, 39, 86, 56, 44, +217, 57,160,107,151,110, 33,246,137,178,239,236, 13,175, 27,139,234, 61,148, 95,148, 21, 73, 66,192, 8,121, 16,179,224, 12, 70, + 83,108, 70,239, 43, 15, 99, 27, 7, 72,114,178,235,119,110,242, 6,214,255,188,165, 43,128, 93, 86,143,234,164,210, 86,118,118, +118,184,114,229, 74, 78, 72, 72, 72, 30,165,212, 97,238,220,185, 78, 82,169,180,213,115,168,223, 71,132,144,246,109,218,180,249, +152, 97,152,206, 28,199,157, 72, 79, 79, 95, 65, 41,125,100,101,167, 61, 22,192, 44,148,243, 67,209,235,245, 96, 24, 6,148, 82, +244,239,223, 31, 83,167, 78, 13,184,121,243, 38, 78,157, 58,165,234,220,185,243, 69, 66, 72, 30,128,247, 41,165,149, 90,205, 10, + 10, 10, 74, 46, 95,190, 44, 57,117,234, 20, 56,142,131, 74,165,130,189,189, 61, 68, 34, 17,122,245,234,101, 23, 25, 25,217,233, +216,177, 99, 25, 5,245,234,176,226,212,100,141,200,206, 78, 14, 55,143,118, 99, 6,190, 23, 67, 41,221, 95,131,198, 65, 40,225, +153,180,196,172, 99, 22,205, 92,206, 72, 5, 2, 34, 22,240, 32,226,138,241,197,215,243,137,128,154,121,168,225,252,188, 64, 32, + 16,200, 69,208,179, 66,214, 40, 37,120, 33,193,225, 88,150, 21,138, 5,208, 85,245, 57,159, 97, 24,134, 97, 4, 0, 76,214,114, +138, 68, 34,129, 92, 68,171,228,148,176,132, 37,132, 8,241,116,117,214,223, 16,236, 78,104, 57, 43,146,174,188, 40,110,215,174, + 29,162, 79, 93,193,158,168, 19,200,122,124, 3,211, 63,159,128,150, 45, 91,226,208,161, 67,213,166,201,226,163, 85,149,117, 89, +173, 86, 95, 77, 73, 73,105, 81,213,119, 43,243,209,226, 86, 55,166, 67, 62, 95,218,163, 50, 43, 85,165,252, 51, 29,158,114, 85, +227,163, 69, 8,233,217,174, 93,187,143,182,111,223,174,127,251,237,183,133,253,251,247, 71,211,166, 77,219, 14, 31, 62, 28, 0, +208,185,115,103, 44, 93,186,180,237,240,225,195,177,115,231, 78,236,219,183, 79,215,161, 67,135,207, 9, 33,201,148,210,195,149, +113,114, 28,215,125,205,154, 53, 21, 45,133, 48,153, 76, 48, 26,141,238, 38,147,201,189,180, 45,194,178,101,203,179,142, 31, 59, +132,207,167,205,129,139,179, 91,144,149,117,136, 12,155, 52, 41,235,135,197,139,177,120,231, 78, 76,170, 95, 95,186,229,206, 29, + 28,215,106,177,235,212,169,172,210,223,121,166,111,166, 70,163, 41, 57,124,248,176,253,174, 93,187,160, 80, 40,208,176, 97, 67, +168, 84, 42,240,249,124, 48,172, 4,172, 64,137, 70, 77, 90, 1,184, 12, 0,168,175,134,198,223, 27,231, 9, 65, 30,101,170,174, +195, 85, 62,163,117, 73, 61,215,186,226, 51, 31,109,106,170,176,119, 17,224,232,138, 39, 56,246, 93,226,126,109, 22,190,133, 9, +247,170, 89,172, 17,226,237,237,141,140,140, 12, 28, 62,124, 88, 3,224,155,170,126,131,227,184,175,191,255,254,251,201,211,166, + 77, 19,249,251,251, 3, 64, 16,128,223, 43, 21,125, 50, 25, 60, 60, 60,202,132,101,255,161, 99,124, 70, 79, 28, 35,233,253, 86, + 24,120, 60, 39,228,105,140,200, 46, 52, 66,233,100,135,207, 39, 70,136, 79,132,120,180, 92,179,124,219, 65, 66, 72, 75,250, 50, +131, 69,254,143,225,232,232, 24,148,157,157,141, 71,143, 30, 97,232,208,161,201, 89, 89, 89, 63,107, 52,154, 17, 41, 41, 41, 0, +144, 83, 11,202, 50, 49, 31, 20, 20,132, 86,173, 90,161, 95,191,126,226,226,226,226, 8, 31, 31, 31, 15, 0,175,191,204,252, 84, +212, 34,255, 42,161, 85,105,135, 96, 52, 54,210,173, 94, 13,205,137, 19, 16, 30, 63,142, 93,106,117,145, 86,171,253,140, 82,154, + 88,218,232, 77,216,244,195, 15,191,246,248,237, 55,123,125, 76, 12,124,110,222, 4, 95,161, 8,170,105, 2, 54,110,220,136,130, +130, 2,228,231,231, 3, 0,190,251,238, 59, 20, 20, 20,192,226,203,240,204, 12, 8,208,214,205,165, 62,210, 16, 11,142,199,216, + 37, 52, 42,126,205, 78, 43, 79,241,120,226,170,201,103, 60, 16,243, 56, 84, 86,146,173,127,141,176,122,104,179,138,225,209,166, + 33,120,224,181,173, 73, 26, 45,243,254, 60, 30, 47,231,254,253,251,221,253,252,252,162, 0, 56, 61,175, 63, 0,165,244, 1,128, +241,181, 20, 1,179,226,227,227, 93, 54,108,216,240,241,220,185,115,105,121,161,101,249,159,199,227,129, 82, 10, 7, 7, 7,240, +249,124,215, 11, 23, 46,184,134,134,134,174, 44,109,208, 42,203, 39,109,218,180, 41,226,227,227,193,227,241,224,224,224, 0,206, +100,192,156,137, 99, 96,102, 69,188, 41, 83,166, 4,245,233,211,231,214,134, 13, 27,140,246,173,219,188,158,157,157,125,251,163, + 65,131,111, 29, 56,112, 64,207,113,220, 26, 43,243,124, 61, 54, 54,150,245, 84,187,178,212, 84,204,201, 4,128,248,198, 50, 42, +180,115,131,152,199, 82, 1, 97, 32, 18, 75, 28, 30, 37, 37,101,115, 28,119,215, 26, 78,142,227,174,197,199,199, 75, 92, 93, 28, +121,197, 37,250, 34, 9,159, 10, 19,174, 93,137,171, 23, 28,226, 3, 0,218,107,151, 79,139, 26, 53,150, 36,164,103,202,234,215, +175,111, 21,103, 73, 73,201,245,228,228,100,214,213,213,149,247, 56, 49,233,160,194, 78,230,108,175, 80,188, 6, 0,134,194,252, +203,140, 78,151,201,242,121,174,153,217,217, 57, 37, 37, 37,241,214,230,253,225,195,135, 60,119,119, 23,246,232,241,147, 81,174, + 82,145,139, 92,200,179, 23, 17, 66,164, 44, 41, 16,152,184, 44,177, 84,234,242, 40, 41, 41,135, 82, 90,165,133,240,171,188,193, +189,159,222,175, 57, 59,203,113,227,198,141, 27, 56,114,254, 46,100, 84, 15,162,205,199,241, 77,235, 48,104,202,180,231,246,251, +123,150,216,170,149, 53,107, 77,227,171, 21,248,145,242, 12, 71,248, 65,131, 6,205,217,186,117,107,153, 3,202,221,187,119,209, +177, 99, 71,203, 52, 7,186,116,233,130,208,208, 80,220,189,123, 23,190,190,190, 56,117,234,148,136,101, 89,209,224,193,131, 23, + 0, 56,252,172,244,174, 93,187, 22, 35, 70,140,168,204,177,250, 33, 0, 45, 81,250, 23, 77,253,106,179, 83, 78,118, 22, 50, 50, +211,174, 91, 91, 14,132, 16, 12,155, 52, 41,107,141, 94,143,237,151, 46, 97,136, 76, 38,253,225,193, 3,132,135,134,162, 89,199, +142, 89,214,180,117, 22,171,142, 86,171, 5,159,207,135,189,189, 61, 28, 29, 29, 33, 16, 8,192,242,213,224, 9, 3,193, 8, 4, + 8,110, 23,136,197,159,201,138,135,190,131,229,132, 32, 79, 36,196, 53,129,180,114, 95, 29, 66, 8,145,213, 65, 47, 74, 81, 80, +156,136, 95, 44,130, 68, 81,143, 56,216,217,243,143,143, 92,233,175,176,119, 17,224,200,242,199, 56,190, 50,105,175, 54, 13,211, + 1, 60,172,110,117,177, 72, 36,106,166, 80, 40,144,152,152,136, 39, 79,158,220,169,206,193,159, 82, 90,220,186,117,235, 56,145, + 72, 20,224,236,236, 12, 0,222, 85,165,147,227,184, 50, 63,172, 45,219,119, 59, 5,181,247, 17,191,217, 54, 0,155,163,230,227, +195,136,229,224,179, 4,102,179, 1,223, 46,237, 6,179,174, 8, 17, 61, 62, 32,111,116,246, 13, 60, 17,165, 31, 9, 96,221,191, + 85,104, 37, 37, 37,141,111,223,190,253,130,194,194,194, 92,141, 70, 51, 8, 0,188,189,189,235, 50, 12, 35, 2, 48,183,154,250, + 84, 23,149,135,133, 16,220,188,121, 19,114,185, 28,201,201,127,238, 73,159,152,152, 8,142,227,116,176,161,186,103, 52,152, 82, +122,141, 16,226, 14, 32, 28,229,194, 59, 48,165,166,186, 55,162,163,163,105,116,116,244, 27,101,157, 23,165,156, 41, 39, 7, 84, +247,180,108,249,124, 62, 5, 80,126, 69,147, 84,161, 80, 16,190,167, 39,136,232,169,235, 7, 45, 55, 39,252,188, 48, 26,173, 11, + 45,195,153,193,130, 24, 64,203, 25, 49, 52, 98,130,249, 78,157, 48, 94, 56, 3,105, 66, 69,249, 39, 27, 48, 81,152,193,177, 53, + 76, 14,213,104, 52, 48,153, 76,202, 6, 13, 26, 68,155, 76, 38,165,101,106,224,127,117, 83,205,102,115, 28,203,178,248,248,227, +143, 97,177,254,232,245,122,164,165,165, 65,167,211, 65,175,215, 35, 62, 62, 30,249,249,249,208,235,245,184,125,251, 54,188,189, +189,193,178,172,123, 53, 21,133, 82, 74,225,229,229,133,122,245,234,129, 37, 20,235, 23,205,198, 23,159,140,193, 0,111, 14, 27, + 87,124,139, 14, 29, 58, 52,174, 95,191,126,107, 30,143,103,118,115,115, 19,236,219,183,239,160,217,108,238, 85,131, 56, 90,135, +167, 78,157, 90,175, 73,147, 38, 46, 10,123,185, 81, 36,100, 33, 52,106,168, 72,151, 77,121,197, 89,240,242,170,107,130, 68,234, + 59,100,200, 16,179, 53,157,163,133,243,179,207, 62,115,247,247,247,119, 80, 42,228, 26, 33,159,205, 16,128,102,229,223,248,253, + 34, 0, 8,157, 93,180, 16, 75, 3,134, 14, 29,106,170, 9,231,140, 25, 51,188,157,157,157, 21, 12,104,161,217, 96,248,115,190, + 93,167,207, 38,124,126, 9, 4,194,144,113,227,198,145,154,112, 78,158, 60,185,126, 64, 64,128, 66, 97, 47, 43,226,241,217, 84, + 1,199,165,138,193,165,241,245,134, 92,177,179, 83, 49,164,118,193, 67,134, 12,169,146,211, 98,205,138,140,140, 76,172, 32,188, +145,147,147, 3,109,218, 45, 8,146, 99, 16,104,199, 71, 75,103, 37, 68, 34, 81,217,210,247,170,170,107, 85, 62, 90,149,137, 45, +107,191, 27,242,101, 53, 83,128,107, 26, 95,173, 24, 55,171,148,191,218,231,105,219,182,109,211,194,194,194, 50,186,116,233,162, +143,142,142, 6, 33, 4,167, 78,157, 66,114,114, 50,186,116,233, 2, 74,169,101, 85, 27,174, 95,191,142,206,157, 59,235,219,183, +111,159,188,109,219,182, 89,214,220,156, 17, 35, 70,192,104, 52,162,168,168, 8, 57, 57, 57, 56,116,232, 16, 2, 3, 3,169, 84, + 42,237,195,122,189, 53, 63, 98,228,180,215,155, 54, 15,194,202,229,139,245, 66, 30,255,171, 26, 54,194, 24,250,217,103, 89,249, +193,193, 57, 91, 52,154,226, 97,246,246,210, 6,137,137,170, 43,199,142, 57, 25, 12, 6,171, 56, 44, 86, 29, 79, 79,207, 50,145, + 37, 16, 8,192, 19, 58,131,149, 53,131,208,177, 11,164,110,125,240,203, 53,145,206, 65,134,253,114, 59, 28,149, 41, 80,101,104, + 7,169, 23,230,191,222,223,125, 95,155, 1,238, 39,165,117,176,129, 16,194, 16, 66, 24,202, 35,251,134,127,235,215,192,185,158, + 4,191,237, 78,195,241,149, 73, 63,105,211, 48, 27,192,131,103, 61,231, 6,131, 65,107, 54,155,193, 48, 12,120, 60, 94,121, 31, +209, 95,127,250,233, 39, 92,185,114, 5, 0,202,194,246, 20, 22, 22,154, 89,150,133, 88, 44, 6, 0,187,106,218, 59,240,249,124, +240,249,124,156,190,120,214,113,192,187,221,200,133, 63,126, 70,155,192,129,200, 46, 50, 32, 61,223,128,188, 98,160, 73,203,233, +104,218,121, 63,110,196, 23, 34,168,121, 83,150, 21,202,134,190,226,157,119, 93, 23, 23,151, 11, 78, 78, 78,167, 8, 33,117, 9, + 33,117,237,237,237,127, 85,171,213, 49,132,144,158,148,210, 3, 41, 41, 41,254, 69, 69, 69,109, 40,165,143, 41,165,143,179,178, +178, 58,102,100,100,188, 94,221, 98, 45, 71, 71,199, 13, 5, 5, 5, 19,204,102,115,143,210,227, 29,179,217, 28, 20, 27, 27, 27, + 16, 20, 20,116,199,199,199,231,186,143,143,207, 17, 31, 31,159,131, 62, 62, 62, 7,195,194,194,150, 90,194, 61,188, 76, 84,166, + 69, 94, 33, 88, 92, 93,194, 75, 67, 61,132,151,245, 25,165,231,211, 21, 29,208, 76, 34,209,109,211, 71, 31, 65,113,240, 32,248, +177,177, 24, 62,116,168,189, 84, 42, 93, 78, 8,105, 65, 8,105, 99,103,103,183,114,246,236,217,114,167,133, 11,161, 62,123, 22, + 9,135, 14,193,200,231,255, 94,155,212,149,148,148,128,199,227,149, 89, 98,100, 50, 25,204,102,115,169,118,123,134,224, 48,225, +183,228,244, 24, 8, 81, 15, 28,104,209,209,130,246,151, 6,198, 77,119, 57, 84,224,237,251, 64, 35,240,253,210,249, 53,151,229, +117,219, 94,210, 16, 94,145, 80, 33,198,147, 39,137, 48,131,171,209,124,179, 86,171,205,215,104, 52, 8, 10, 10,114,188,114,229, + 74,131,192,192, 64, 85,233,251,151,159,243, 33,106,237,225,225,177,219,211,211,243,145,135,135,199,110, 66, 72,235, 26,124,125, +195,185,115,231,192,178, 44,102,207,158,141,194,194, 66, 24, 12, 6,100,103,103,227,201,147, 39,208,235,245, 72, 74, 74,194,189, +123,247,160,215,235,145,144,144, 0,157,238,217, 3, 18,142,227, 96,111,111, 15,109, 73, 17, 86,205,255, 2, 51, 34, 39, 34,255, +225, 85, 36,165,164, 67,225, 32,195,248,241,227, 89,165, 82,201,153,205,230,122, 38,147,169,179,217,108, 94,109,173,224, 44, 13, + 90,120,222,203,203,171,233,162, 69,139, 2,190,152,191, 90, 96,207, 43,162, 34,185,152, 19,202, 69, 84,216,248, 53,140,152,190, + 92,176,108,201, 55,247,127,251,237,183,100,107,130,119, 90, 56,131,131,131,253,146,147,147, 3,253,253,253, 27, 57,213,173, 47, + 18,185,123,228, 9,220,235, 20, 80,157,246, 18,241,168,211,110,245,234,213,183,126,253,245,215,148,154,112,202,100,178,198,155, + 55,111,110,234,234,234,218,148, 47,145,136,139,243,243,119,153,138, 53,187, 89,133, 82,204,216, 43,222,217,191,127,255,213,189, +123,247,166,213,132,211,215,215,215,127,254,252,249, 77,154, 53,107,214,196,205,187,129, 72,226,225,149, 45,246,172,155, 45,105, + 22, 40,130,103,189,183, 87,174, 92,121,253,183,223,126,179,138,147,101, 89, 19,195, 48,224,243,249,144, 74,165, 56,122,244, 40, + 62, 26, 57, 16, 94, 30,142,104,228,239,143, 78, 31, 78,192,222,189,123,203,124,120, 88,150,173,178, 71,255, 97,225,248,168, 96, +119,114, 21,107, 26, 95,197,154,198, 87,131,221,201,213, 42,197, 86,233,231,149, 93, 99, 85,107, 84,133, 31,214,179,196, 22,165, +244,240,233,211,167,191, 30, 54,108,152,176,107,215,174,184,116,233, 18, 70,140, 24,113,126,223,190,125, 0,128, 75,151, 46,225, +211, 79, 63, 61,127,242,228, 73,140, 25, 51, 6, 29, 59,118, 20,158, 59,119,110,165, 53,177,127, 76, 38, 19, 54,110,220, 8,147, +201, 4, 59, 59, 59,168, 84, 42,116,235,214, 13,183,110,221, 26,179,105,211,166, 24,150,207,127, 47,188,199,187,136, 62,184, 15, +247,110,223, 26,243,195,130,193, 53, 14, 10,204, 48, 12,186, 14, 29,154,149,213,164, 73,206, 15, 5, 5,197,239, 43,149, 82,255, +180, 52,213, 47,187,119, 59, 89, 81,127,136,217,108, 46, 19, 87, 22,209, 97, 57,120, 66,103,240,100, 77,193,147,183,196,141, 7, + 2, 35,191, 21,189, 38, 8,161,119,171,139,159,197, 23, 50, 35,250,124,225,141, 62, 95,120,163,231,148,250,195,165,117,176, 94, + 86, 7, 99,187,126, 82, 47,204,167,165, 3, 10, 50, 12, 56,244,109,194, 99,109, 54, 22, 2,184,103,205,115,206,113,220,157,228, +228,100, 8,133, 66,212,169, 83,199,143, 16, 98,241, 11,220, 48,106,212,168,113, 95,126,249,229, 68, 0, 95,150,230,201, 46, 44, + 44,172, 73, 81, 81, 17, 98, 99, 99, 1,224, 74, 53,247,190,108,149, 97, 78, 65,130,168,190,186, 25, 2, 27,143,134, 82,217, 28, +201, 57,122,164,228,232,177,126, 85, 47, 92, 61, 55, 15, 87,142, 15,193,227,180, 52, 72,220,122,195,108,210, 53,125,197, 13, 37, + 51,226,226,226, 90,239,222,189, 59, 12,192,140,102,205,154,253,246,228,201,147,215,207,158, 61,219,200,211,211,115,121,109, 73, + 45, 97, 33, 18, 18, 18,254,114,148,134,133,208, 83, 74,131, 41,165, 93, 41,165, 61, 75,143, 79,159, 43,214,155,245, 56,253,170, + 58,195, 3,136,174,184,218,176,162,208, 42, 31, 40, 12, 13, 84, 42,185,209,104, 72,250,249,231,159, 13, 12,195, 64, 42,149, 98, +216,136, 17,204,170,239,191,111, 55,176,117,235, 83, 31,188,249,230,145, 83, 39, 79, 6,135,134,134,130, 82, 10,134, 97,176,115, +231,206, 18,173,182, 36,187, 78,157, 58, 10,107, 26,141,242, 15, 80, 65, 65, 65,153,208,202,207,207,135,171,171,171,213, 83,135, +154, 2,156, 56,121,244,106, 46, 53,127,248,164,235,131, 37,134,175,210,122,133,230,113,102, 94,190,217,136,252, 18,138, 66, 45, +120,151, 24, 85,232, 48,223,222,134,248,206,161,247,206,196, 92,200,214,154,181, 53, 90, 45,145,145,145,241, 69, 68, 68, 68,182, +187,187, 59,177,183,183,135,135,135, 7,211,179,103,207,172,196,196,196, 47,107,123, 71,156,156,156, 6,132,133,133, 69, 37, 39, + 39,247, 61,115,230, 76,189,179,103,207,246, 13, 11, 11,139,114,114,114, 26, 96, 37,197,174,105,211,166,105,132, 66, 33, 94,123, +237, 53, 20, 22, 22,162,116,149, 79,181,199,179, 58, 2, 0, 16, 8, 4, 88,179,104, 22,102, 68, 78, 68, 78,204, 37,220, 56,255, + 51, 78,167, 17, 76,159,255, 13, 4, 2, 65,173, 98,125,249,186,200,154, 53, 83,203,239,126, 58,162,127,202,212,200, 72,249,245, +235,215,249,227, 62,249,148, 38,164,230, 64,216,117, 49,139, 55,190, 96,254,208, 56, 35,252,157, 78,152, 61, 99, 82, 51, 74,233, +232,103,113, 6,184,200,154, 53, 85,203,239, 76,250, 96, 96,220, 39,159,124, 34,249,234,171,175,180,173, 91,183, 46, 73, 79, 79, +151,200,148, 42,127,158,131,162,105, 66,106,154, 93,235,214,173,227, 63,252,240,195,188,154,114, 78,159, 62, 93,122,236,216, 49, + 94, 68, 68,132, 41, 55, 55,215,142, 47,145, 4, 17,145,184, 85,102,110,174, 67,223,136,136, 7,125,251,246, 45,230, 56,110, 76, + 77, 56,103,206,156, 41,189,119,239, 30,175,117,235,214,198,180,180, 52,185,204,209, 41,144, 85,168, 90, 62, 74, 77,183,111, 21, + 26,250,112,220,184,113,154,234,210, 89, 94,164,200,229,242,228, 54,109,218,224,219,111,191,197,178,101,203,240,246,219,111,227, +214,237, 91, 8, 31, 55, 17, 1, 99, 63,197,193, 11, 23,145,156,156,140,185,115,231, 34, 48, 48, 16, 2,129,224, 94,165,164,163, +239,146,107,169,148, 92, 75,165, 4,163,239, 18,203,235, 42,197,208,151,249,248,203,245,149,224,202,204,202, 45, 93,193,238,228, +106,117,126, 88,207, 18, 91,125,251,246,253,200, 18,194,225,253,247,223, 63,191,124,249,242,182,239,191,255,116,160,253,218,107, +175, 97,222,188,121,109,167, 79,159,126,126,254,252,249,232,212,169, 19,124,124,124,158,185,240,197,108, 54,195,100, 50, 97,224, +192,129, 48,153, 76,200,204,204,196,253,251,247,177,118,237, 90, 80, 74,197, 0,224,174,246, 12, 17, 10,133,248,227,218,239,197, + 51,222, 15,221, 86,131,193, 20, 41, 63,136, 41, 42, 42, 66,223,177, 99,179,146, 26, 54,204, 89,157,149, 85, 60, 82,169,148,214, +127,252, 88, 37,215,235, 61,170,243, 73, 37,132,128,227,184, 50, 97,101, 17, 92, 21,143,210,142,210, 42, 24,138,185,195,103,183, +166, 0, 0,218, 15, 86,163,231,148,250,195,221,125,165,223,181, 27,244,212,232,189,119, 94, 28, 45, 76, 49,127, 5, 35,238,212, +192, 98,125,233,210,165, 75, 80, 40, 20,136,136,136, 16, 49, 12,179,176,180,157,215, 82, 74, 87, 80, 74,151, 88,184, 68, 34,209, +226, 33, 67,134, 48,121,121,121,184,113,227, 6, 0,156,172,170, 93,162,148,150,229,189, 40,135,192,204, 9,241,235,181,163, 56, +126,118, 15, 30, 37,103,226,113,134, 22,224, 57, 64,171, 73,130,161, 36, 25,250,188,107, 40,208, 73,255, 13, 51, 82, 47, 37,220, +194, 75, 8, 11,241, 34,173, 90,175,164, 79, 29,165, 52,181,252,106,195,242, 1, 76, 43, 11, 88, 10,106, 47,233,191,103,229, 42, +135,136,129,131, 53,129,129,129, 74, 15, 15, 15, 16, 66,208,171,119,111, 18,118,230,140,156,175, 86,195,177, 69,139,178,233,136, + 19, 63,255,140,163, 71,143,106,162,127,218,239, 49, 98,228,200,238, 0, 54, 87,211, 96,240, 26, 52,104, 80,246,187,169,169,169, + 16,137, 68,101, 62, 17, 5, 5, 5,112,118,118, 70,106,106, 42,172, 52,148,108,153, 26,121, 49, 50, 35,244, 11,239, 80, 57,159, + 28,209,164,193, 76, 41,248,196, 12,148, 80, 24,205,128,206, 72, 17, 82,159, 85, 29, 47, 49, 41, 15, 93,218, 23, 15, 96, 75, 13, + 45, 90,191, 16, 66, 70,115, 28,183, 7, 0,115,230,204, 25,238,206,157, 59, 31, 89,235,184, 94,169,217, 94, 42,157,114,234,212, + 41,213,148, 41, 83,114, 15, 29, 58,148,223,173, 91, 55,135,181,107,215,170, 58,118,236, 56, 5,192,143, 86,220,212, 18, 66,200, +230,196,196,196,143, 90,182,108,137,156,156, 28, 24, 12, 6, 92,189,122, 21,190,190,190,184,114,229, 10,252,252,252,240,251,239, +191,163, 81,163, 70, 48,155,205,208,106,181,224, 56,206,252,172,198, 60, 39, 43, 19,200,126,130,148, 75, 71,112,255,230, 85,156, + 74, 33, 88,241, 99, 20,234,212,243,174, 85,156,154, 70,174,178, 38, 30, 46,142,199,191,154, 51,211, 37,225,151,157,216,183,113, + 5,119,250,200,145, 0,161, 28,163,223, 24, 56,225, 93,189, 17,117, 1, 8, 95, 15,109,137,174,202,123,102,105, 61,164,157,188, + 93,125, 36,235, 70,174,178, 38,106,103,199, 99,255, 89,248,165,252,225,209, 31,176,107,205,183,116,239,214, 29,129, 90, 32,180, + 73,147, 38, 93, 25,134, 81, 0,208,150,250,121, 89,181,181, 77,101,156, 39,162,162,130,181, 64,232,129, 3, 7,186, 74,165, 82, + 55, 0,198,226,226,226,184,231,225, 60,121,232, 80,176, 37,157,132, 16, 23, 0, 6, 74,233, 67,212,112, 11,158,126,253,250,205, +251,244,211, 79, 35,205,102,179,179,229, 61,163,209,200, 46, 94,188,152,199,113, 28, 75, 41, 53, 48, 12, 99, 56,118,236,152,217, +100, 50,165,104,181,218,177,207,211,144,188,251,238,187,184,120,241,226, 28, 60, 93,132, 97,173,181,250, 47,126, 90,213, 77, 83, + 90,195,127,230,204,153,185,239,189,247,222,212, 31,127,252,241,254,242,229,203,123,140, 25, 51, 6, 59,119,238, 68,195,134, 13, +241,199, 31,127,224,139, 47,190, 0,128,182,211,167, 79, 63,184, 97,195, 6,159,132,132,132,197,207, 74,163,209,104,132,201,100, +194,142, 29, 59,208,171, 87, 47, 56, 59, 59, 67,173, 86,131, 16,242,203,200,145, 35,191, 7, 0,150,176, 2, 0,208,105,117, 58, +127,255,150, 86, 91,112,125,124,124,202,218,186,180,180,180,178,149,130,111,189,247, 94,214,250,175,190,194,182,146, 18,140, 84, + 42,165, 73,158,158,238, 7, 31, 62,252,128, 16,178,182, 42,203,145,197,170,243, 44,145,101,173,133,185, 36, 21,211,126, 90,240, +200, 13,192,219,237, 7,171,209,126,176, 26, 45,123,186, 16,134, 37,184,121, 60, 27,183, 78,228,236, 53, 22,224,151,154,108,151, + 67, 41,189,227,232,232,120,240,141, 55,222,232,209,184,113, 99,140, 26, 53,234, 67,129, 64, 32, 48, 26,141,159, 88,194, 60, 16, + 66, 28, 24,134,249,114,211,166, 77, 31,168, 84, 42,156, 59,119, 14,103,207,158,253,133, 82,250,164,170,118, 9, 64, 89,204,172, + 58, 94,126,218,123, 9, 69,210,140,228, 95,113,254,220, 79,104, 24, 56, 1, 18,183,238, 80,249,207,135, 33,102, 25,244,217,199, +161,242,234,134,164,132,135, 96,121,162, 91,248,151,192, 18,110,225,214,173, 91,149,134, 91,168, 41,154, 53,107,214,246,236,217, +179, 34,173, 86,139,211,167, 79,163, 85,171,178,181, 93,255,211,253, 59,203,107,145, 87, 9,213,109, 42, 93,105,175, 73, 56,194, +111,228,231,103, 22, 48,216,212,171,123,247,226,235,215,175,151,141,250,180,151, 47, 67,115,244, 40,204,102, 51, 40,165, 56,123, +230, 12,134, 12, 30, 92,196,103,201,250,250,245,235, 81, 66,255,140,221, 82,217, 82,122,129, 64, 16, 17, 17, 17, 81,214,248, 36, + 38, 38, 66, 38,147, 65, 40, 20,130,227, 56,152, 76, 38,176, 44, 11, 7, 7, 7,152, 76, 38,125, 37,153,233, 92, 33, 35, 70,115, +142,166,239,134,240, 65,169,234, 34, 3, 29,173,168,143,186, 2, 73,217,195,233,102, 79,208, 35,144, 15, 39, 94, 6, 61,185,248, +205, 20, 78,151,221,183,226,222, 98,207, 90,242, 79, 8,241,107,222,188,249,247, 67,134, 12, 97, 0,160,115,231,206, 76,243,230, +205,191, 35,132,248, 85,243,157,106, 57,197, 98,177, 8, 0,162,162,162,114,238,223,191,255,118, 84, 84, 84, 78,249,247,173,228, + 92,187,104,209, 34, 72,165, 82,152, 76, 38,232,245,250, 50,255,172,242,103,131,193, 0, 39, 39, 39, 68, 71, 71,195,108, 54, 71, + 63, 43,157, 94,117,235,129, 56, 55,192,230,168, 83, 56,155, 37,168,177,200, 42,207,217,208,221,174,145,155,147,227,207,255, 89, + 48,215, 57,247,193, 85, 36, 37, 37,209, 99, 71,163,127, 43,161, 52, 57,175,128,206,200, 45,162,141,138,117, 84,220,202, 7, 79, +126, 94,243, 57,157,222, 30, 70, 84,178,106,176, 60,103, 19,119,187, 70, 30,206,142,199,190,249,207, 2,121,222,131,171, 72, 77, + 75,195,225,232,168,235, 37,148, 38, 83, 74,247, 82, 74,135,155,205,230,166,102,179,185, 41,165,116,120, 85,226,165,166,156, 26, +141,166,153, 70,163,105,246, 34, 57, 57,142,107,198,113,156,213,156,229,133,202,146, 37, 75, 98, 82, 83, 83,135,100,100,100,116, +177, 28,185,185,185,157,139,138,138, 58, 20, 23, 23,183, 43, 89, 82,207, 65,163,209,184, 20, 22, 22,186,151,148,148,132, 80, 74, +175, 90, 91, 63,203,163,124,212,233,148,148,148,217, 41, 41, 41,228, 89,233,100,198,220, 37,219,191,153,244,211,154, 53,107,220, +159,135,191, 98, 58, 51, 51, 51,247,236,216,177, 35,200,219,219,219,103,248,240,225, 88,189,122, 53,150, 47, 95,174, 3,128, 13, + 27, 54,232,202, 89,178,188, 30, 61,122,212,178,178,105,195,191,164,147, 97,182,188,245,214, 91,244,236,217,179,232,213,171, 87, + 89, 32,209,117,235,214,193,100, 50, 21,116,234,212,137, 3,128, 18,109,113, 1,229, 40,244,134,202,231,223, 43, 43, 79,161, 80, +248, 78,249,120,129,150, 96,204, 66,161, 16,148, 82, 52,106,219, 54, 43, 47, 48, 48,103, 99,126,126,241,236,102,205,236, 63,240, +247, 31,222, 24, 24, 92, 25, 39, 33,228, 47, 86,157,138,135,181,150,172,242,156,148,210,140,146, 20,140,250,105,193,163,163, 22, +203,150,216,142, 7,109,161, 9,251,191,122,148,169,205,196, 58, 0, 79,106,194, 9, 0, 57, 57, 57,227,190,250,234, 43,157, 82, +169,196,187,239,190,139,249,243,231,143,108,219,182,109,190,171,171,235, 69, 95, 95,223,155,253,251,247, 79,189,122,245,234,184, +176,176, 48,196,198,198,226,155,111,190,201,203,205,205, 29, 84, 29, 39, 33,164,204,146,215, 51,188,115,206,170,239,190,229, 58, +189,241, 17,164, 18,123, 24,249, 94,200, 41, 50, 34, 87, 67,161, 23,133, 66, 40, 16,161, 75,235, 38,184,120,236,135, 98,179, 94, +179,185, 54,117,190, 6,157,235,203,230,124, 33,225, 22, 42,166,243, 69,132,133,120, 25,121,127,149, 81, 73, 28,173,191, 90,180, + 44, 75, 42, 45,103, 66, 56,179,217,204,161,190,119,125,121,194,163, 39, 43,250,245,139,120,191,107,215,112,105,120,120,184,184, + 73,204,211,169,139,168,168, 40,236,219,183,175,248,248,241,227, 5, 34, 62,187,193,171,142,151,171,217,204,129, 16,174, 90, 53, + 44,151,203, 63,153, 54,109,154, 36, 63, 63, 31,203,151, 47,231,130,130,130, 24,153, 76, 6,131,193,128, 13, 27, 54, 24,155, 52, +105,194,103, 24, 6,249,249,249, 96, 24,230,158,149, 25,188, 65, 8,233,242,125, 88,159,125, 45, 63, 30,225, 24, 16,246,186,178, +131,151, 7,140, 45, 40, 82, 18, 31,225,254,201,227,185,183,143, 45,205,134, 54,189, 15,165,244, 78, 77, 11, 80,173, 86,207, 58, +126,252,184,203,184,113,227,168, 86,171, 37, 79,158, 60,161, 11, 22, 44,112, 25, 53,106,212, 44, 0, 3,106,251, 60,229,229,229, +129, 16,194,149, 86, 90,203,168,159,212,224,198,222, 34,132, 28,232,221,187,119,207, 78,157, 58, 33, 38, 38,166,108,138,176,188, +208,178,172, 62, 92,184,112, 97, 30,128,169,207,226,229,243,249, 88,190,121, 15,242,114,179,224,234,170,134, 88, 34,169,117,196, +101, 33,195,204,254,122,238, 76,151,172,187, 23,201,173,223, 78,113,187,111,164,103,152,204,180,242,136,255,133, 41,180, 84,253, + 87, 63,154, 97,216,217, 95, 47,248,210,193, 50,173,249,227,181,212, 2, 98,166,227,158,235, 41,121, 85, 56,255,203, 80,171,213, + 72, 73, 73, 33,106,181,154, 90,166,245,170, 18, 90,127,171,224, 79,167,203, 72,117,211,134,181,229,143,143,143, 95,208,162, 69, +139, 73,177,177,177,187, 3, 2, 2,198, 0,168,163,211,233,242,166, 79,159,254,159, 13, 27, 54,188,111,141, 37, 11, 0,118,238, +220,185,116,196,136, 17, 71,187,119,239,254, 57,199,113,205,203,117, 34,241, 46, 46, 46,101, 83,184,153,233,105,145,163,223, 31, + 24, 89, 84,148,107,117,156, 59, 59, 59,187, 15,166, 79,159, 46,214,104, 52, 88,185,114, 37,215,164, 73, 19,198, 50, 40,218,186, +117,171,201,207,207,143, 23,241,209, 71, 89, 75,210,210, 48,239,220, 57, 77,100,211,166, 65, 27,239,223, 15,169,204,226,110, 25, + 56, 86,102,201,178,184, 93,212,178,115, 72, 33,132,140,250,105,193,163,117, 0,222,126,189,159, 27, 14, 44,122,132,220, 4,253, +127, 96,194, 67,107,182, 5,170,132, 51,137, 16,210, 37, 61, 61,253,192,204,153, 51, 29, 66, 66, 66,208,180,105, 83,190,157,157, + 93,168, 37, 92, 76,126,126, 62, 78,156, 56,129,213,171, 87,235,111,223,190,221,155, 82, 90,229,116,149,217,108,206,240,243,243, +179,148, 3, 37,132,100, 23,232,136,195,174,198,161,118,195, 71,239, 38,231,127,191,128, 20, 3, 7,157,145, 67,125,239, 96,116, +120,123, 9, 14, 30,185,105, 78, 73,184,115,199, 88,146,187,254, 21,239,191, 95, 74,184,133,151, 16, 22,226,133, 89,179,202,159, +255, 45,168,244, 9,229, 88,230,215,213,107, 86,189,179,115,199,143,110, 44,203,184, 61,140,139,251,189, 71,159,190,201, 63,255, +252,179, 74,224,224,208, 10, 0,167, 31, 51,230, 55,131,174, 36,231,208,129, 3,117,235,215,175, 23, 88,186,169, 52,229, 88,230, +215,234,126,176,168,168, 72,115,238,220,185,226,169, 83,167,146,196,196,196,237,174,174,174,253,143, 28, 57, 98,215,167, 79,159, +146,152,152,152,189,110,110,110, 61,195,194,194,228,147, 38, 77,210, 21, 21, 21,173,168,193,195,125,135, 16,210,248,242,204,197, +239, 93, 94,180,234, 77,240,216, 54,208,241, 1,206,248, 43, 12,133, 63, 3,216, 78, 41, 53,213,166,144,100, 50, 89,160, 84, 42, +197,245,235,215,115, 67, 67, 67,245, 90,173, 86, 48,127,254,124, 71,153, 76, 22,248, 28, 13, 28,205,205,205, 5,199,113, 60, 0, +164,244, 12,174,230,107,241, 7,244,232,209,227,192,174, 93,187,222, 10, 15, 15,135,143,143, 15,140, 70, 35,252,252,252,160,215, +235,225,235,235, 11,157, 78,135, 57,115,230, 32, 63, 63,127, 98,117,155, 21, 19, 66, 96, 50,153,202,156,109, 61, 60,235, 62,141, +211,243, 28, 97, 44,100,124,198,231,222,161,141,200,200,206,226,118,253,145,158, 94,108, 48,119,137,205,208,220,174,120, 93,177, + 25,154,176,225,227,147, 1, 64,199,161,218, 29,231,101, 66,248,220,143, 94,135,244,140, 44,236,188,150,154,167, 49,112,111,223, +171,132,179, 70,233,124, 69, 56,131,231,196,160,239,120,235,175,189, 54,186,246,191,101,173,160,170, 10,215, 82, 41,225, 86, 55, +166, 88,179,177,210, 24, 89,207,195, 95,106,169, 58, 80, 90,111, 19, 7, 14, 28, 24,249,232,209,163,185,165,241,178,214,212,132, +107,227,198,141,177, 0, 70, 84,119,205,143,139, 71,236, 7,176,191, 38,188,133,133,133,218,171, 87,175,106, 39, 77,154, 68, 18, + 19, 19,143,184,185,185,189,117,244,232, 81,105,159, 62,125,116,183,110,221, 58,169, 86,171,219,119,238,220,217,238,240,165, 75, +201,197, 15, 31, 30, 58,244,232,145,167,145,227, 14, 85,247,124,190, 72,145, 85, 81,108,237,159,247,232,235, 3, 95, 63,234,204, +233,176, 87,159,139,223, 0, 36, 61, 7,231, 89, 66, 72,192,224,193,131,119,117,235,214,237,245,128,128, 0,212,169, 83, 7,247, +239,223, 71,102,102, 38,110,220,184,129,168,168,168, 40,173, 86,251,204, 13,181,179,179,179,255,182, 61, 17,145, 56,170,127, 88, + 57, 59,234,247,243,173,252,218,133, 15,147, 52, 85,115,208, 27, 40, 18, 31, 63,196,156, 25,235,139, 83, 31,199,222, 49,152, 12, +189,255, 5, 49,180,206,198,197,197, 5,179, 44,251, 66,195, 45,212, 54, 44,132, 13, 47, 80,104,197,197, 37,222,241,241,241,154, +182,111,239,158, 54,148, 50, 44, 37, 68,163, 80, 40,163,158, 60,121,146, 87,254,186, 6, 42,149,124,196,168, 17,253, 9, 71,248, +132,112,102,142,101,126,141,139, 75,172,214, 98,164,215,235, 71,247,239,223,127,185, 84, 42,157,158,147,147,115, 93,161, 80,252, + 17, 24, 24, 56,151, 82, 58,163,164,164,228,128, 92, 46,191,244,250,235,175,207,175, 91,183,238, 82, 74,233,149, 26, 62,220, 38, + 60,245, 15,219,252,130, 77,185, 95, 82, 74, 29, 14,146, 20,204, 0, 0, 32, 0, 73, 68, 65, 84,120, 60, 94,254,205,155, 55,119, + 52,106,212,104, 32,165,212,129, 16,146, 95, 91, 78,173, 86, 59, 46, 47, 47,207,233,131, 15, 62, 48,174, 93,187,182,209,176, 97, +195, 34,111,223,190,205,215,106,181,113, 53,204,179,142, 16,210,179, 95,191,126,235,249,124,126, 39,134, 97, 8,199,113,180,220, +231,160,148,194,108, 54, 31,124, 86,185,152,205,230,228,198,141, 27,255,101, 4, 93,153,127,174,209,104, 76,182,186,179,209,155, + 39,172, 58,117,123,161,214, 72,169,137,163,163,239,165,107, 42, 93,114,118,249, 30,109, 98, 53,167,150,155,176,252,216,157,133, + 58, 35,199,153, 56, 58,166, 42,206, 26,117,138,175, 8, 39, 0, 68, 42,182,238,199,154,173,101,142,241,150,233,196,138,175, 95, + 36, 44, 86, 39,212, 48, 98, 51, 51,230,169,179,252,179, 4, 95,109,249, 43,138,174,154,162,111,223,190, 47,205, 31,197, 96, 48, +124,209,163, 71,143,185, 10,133,226, 63,153,153,153,215, 21, 10,197, 29,127,127,255, 9, 28,199, 45, 45, 46, 46,142,146,203,229, +221, 91,182,108, 57,177, 94,189,122, 63, 36, 80,250,195,179,158, 77,139, 85, 7, 0,181, 60,151, 22, 33, 81, 94, 80, 24,141,198, +164, 90,148, 97, 10, 33,228, 51, 0,245,241, 52, 0,239, 3, 74,233,115,149, 13,165, 52, 5, 64, 27, 66,136, 55,128, 78,120, 26, +191, 47, 15, 64, 60,128, 43,148,210, 27,181,230, 46,201, 78, 33,132,180,184,123,237,220,152,251,119,174,189,103, 89, 93,200,178, +194, 91,102, 67,241,102, 99, 73,238,250,127, 73,160,210,217,190,190,190, 14, 0,154, 3, 72,199,159,129,140, 19, 0, 44,123, 17, + 3,149,114,232,104,147, 68,207,165, 19, 62, 40, 63, 93,248,151,207, 94,102, 93, 36,132,116,126,209,251, 33,217, 56,109,156, 54, + 78, 27,167,141,211,198,105,227,252,247,113,190,234, 66,171, 18, 65,187,182, 74,139,150, 13, 54,216, 96,131, 13, 54,216, 96,131, + 13,214,163, 74,139, 22,128,206, 85,124,193,106,165, 90,155,213, 7,207,226,183,113,218, 56,109,156, 54, 78, 27,167,141,211,198, +249,239,227,252,255, 6,219,212,161,141,211,198,105,227,180,113,218, 56,109,156, 54,206,255, 57,231, 43, 45,166,108, 83,135, 54, +216, 96,131, 13, 54,216, 96,131, 13, 47, 7, 22, 81, 85,153, 83,188, 77,104,213, 92,181, 50, 0, 62, 4,208, 23, 64, 3, 0, 15, + 1,236, 1,240,125, 13,182,169, 40,207,103, 15, 32, 18, 64, 27, 60,221,189, 62, 30,192, 57, 0, 95, 81, 74,139,108, 37, 94, 57, +156,157,157,167,241,249,124, 5,240,116,107, 19,203,185,252,255,102,179, 57, 47, 63, 63,127,193, 75,170, 7,172,181,171,178, 44, +105, 45,159,182,242,103,163,209,248,210,210,105,195, 63,182, 29,241, 83,169, 84,219,114,114,114, 6, 81, 74,239,219, 74,196,134, +127, 19, 92, 92, 92,198, 24, 12,134,233, 2,129, 96,126, 70, 70,198,170,255, 71,207,117,165, 43, 15,203,132, 86,116,116,244, 25, + 0, 8, 15, 15,127, 3, 0,228,114,249, 5,134, 97,188, 75,191, 12,224,207,189,240, 42, 46,253,183,156, 57,142,139,207,206,206, +174, 50,128,154, 84, 42,189,192,178,172, 55, 33, 4, 12,195,148, 29, 70,163, 81,206,178,108, 97, 21,156, 73, 57, 57, 57, 33,255, +144, 66, 36, 0, 14, 41,149, 74,237,220,185,115,191,239,208,161,131, 87, 74, 74,138,105,202,148, 41,237,255,248,227,143,112, 66, +200, 59, 53, 17, 91,132,144,214,132,144, 31,130,130,130,246, 15, 29, 58,116, 87,104,104,168, 48, 59, 59, 91,190,103,207, 30,143, +205,155, 55, 95, 37,132, 12,170,105,136,139, 87,160, 34,242,170,138,103, 86,221,103, 21,193,231,243, 21, 73, 73, 73,242,210,145, +132, 69, 88,193,104, 52,194,104, 52, 66,163,209, 32, 48, 48,240,133,167,223,221,221, 61,152, 16,178,194,215,215, 55, 68,173, 86, +255, 14,224,163,148,148,148, 63,106,146, 86,147,201, 4, 74,105, 89, 58, 3, 2, 2,108, 45,115,205,234,208, 72,161, 80,248,182, +175,175,111, 43,157, 78,151, 27, 31, 31,127,217,108, 54,207,172, 46,232,101, 13,249, 29, 0,204, 20,137, 68,161, 13, 26, 52,240, +138,141,141, 77, 52, 24, 12,151, 0,124, 73, 41,205,127, 1,252,126,111,188,241,198,249,149, 43, 87, 58,142, 29, 59,246, 60, 33, +164,173, 77,108,217,240,191, 66,157, 58,117, 20, 26,141,102, 61,128, 96, 62,159,239, 38, 22,139, 33,145, 72,210, 68, 34,209,117, +137, 68,242,254,249,243,231,243,106,202,105, 54,155,103, 38, 36, 36,184,189,246,218,107,139,154, 54,109, 58, 39, 43, 43, 75,107, + 48, 24, 78,230,230,230, 78,164,148, 22, 84,247,221,138, 90,228, 85, 18, 89,229,207,165,237,253,159, 83,135,165,251, 10,117,248, +139, 2,227,241, 60, 19, 18, 18, 92,228,114, 57,204,102,115,153,181,192,210,169,149,247,237, 42,141,211, 4,127,127,127,195, 51, + 58, 28,175,164,164, 36, 23, 59, 59,187,178,247, 12, 6, 3,220,220,220,184,228,228,100, 23,177, 88,252,151,235,245,122, 61, 60, + 61, 61,255, 73,177, 80, 62, 84,169, 84,249, 79,158, 36, 6,106,117,134, 47, 71,141,155, 58,109, 80,223, 55,149, 23, 46, 92,224, +222,121,231, 29,221,153, 51,103, 62, 4,176,194,202,155,226, 64, 8,217, 60,101,202,148, 57, 98,169,189,227,169, 11,119,116,155, +247, 68, 39, 7,249,213, 39, 19, 39, 78,100,199,143, 31,127, 54, 56, 56,120, 27, 33,164, 69, 77, 44, 91,114,185,252,168, 72, 36, +170,199,178, 44, 12, 6,195,147,156,156,156,183,254, 65, 21, 49, 8,192, 53, 66, 72, 48,165,244,186,181,159, 85,135,236,236,108, +148,148,148,252,237, 8, 8, 8,192,139,246, 63, 36,132,240,188,188,188, 14, 44, 92,184,208, 35, 45, 53, 21,223, 46, 89,242, 26, +128,239, 1,188,102,205,247, 51, 50, 50,254,150, 78,127,127,127,216, 80,163,123, 16, 57,103,206,156,133,239,189,247, 30,204,102, + 51, 74, 74, 74,212, 15, 30, 60,104, 50,125,250,244,222,132,144, 86,148,210,184,231,228,119,246,245,245,141,153, 48, 97,130,170, + 85,171, 86, 40,221,165, 66,125,238,220,185,215, 54,108,216, 48,132, 16,226, 79, 41,205,124,158,223, 80,169, 84,219,214,173, 91, +231, 40,149, 74,113,240,224, 65,199, 78,157, 58,157, 35,132,180,171,173,216, 34,132, 48,142,142,142,227, 1,116,228, 56, 78, 8, +224, 82,110,110,238,188,218, 68,117,183,225,255, 23,156,156,156, 70, 22, 22, 22,174, 20,137, 68, 2,165, 82, 9,169, 84, 10, 30, +143, 7, 30,143, 87, 71, 36, 18,213, 17,137, 68, 93, 59,118,236,248,209,169, 83,167,170,141,176,255,122,176,219,112, 48,228, 75, +150, 48, 44, 0, 4,248, 58,218, 59, 56, 56,224,203, 47,191,148,245,236,217, 83, 6, 0,231,207,159, 31, 58,108,216,176, 78,132, +144,166, 85,137,173,202,180,200,171,130,170, 86, 28,254,197,162, 21, 30, 30,126,166,194,195, 11,137, 68,130, 93,187,118,129,101, +217,191,236, 26, 95,217,255,117,234,212,121,102, 66, 44, 22,177,168,168, 40,216,219,219,195,193,193,161,172,163, 17,137, 68, 56, +121,242, 36,248,124, 62,120, 60, 30,248,124, 62, 66, 66, 66, 80,205,134,246, 47, 5, 17, 77, 8, 5,128,221, 31, 63, 77, 87,196, +138,167, 65, 32,119,127,236,143,118, 13, 36,232, 59,126,118,255, 98,173,161, 37, 0, 77, 94,110,110,238,239,251,246,165, 4,249, +249, 9,182,109,219,214,202,195,195,163,175,181, 66, 11, 64,100,139, 22, 45,246,178, 18, 7,167,161,195,134, 15,125,159,199, 24, +134,140,158, 52, 63, 49, 53, 75,243,193, 7, 31,236, 59,120,240,224,208,175,191,254,250,238,228,201,147, 35, 1,124, 97,109,250, +133, 66, 97,189, 7, 15, 30,248,114, 28,135,102,205,154,253, 99,182, 49,176, 8, 41, 74, 41, 8, 33,127, 17, 84,213,125,246, 44, + 88, 44, 88,149, 29, 47, 26, 30, 30, 30,254,131, 7, 15,118,202,201,202,194,183, 75,150, 88,222, 14,121,214, 52,162,101,138, 80, +175,215,227,221,119,223, 29,108, 54,155,121, 22, 17,168,211,233,244,249,249,249,218,114, 43,123, 50, 41,165,111, 90, 81,158,222, + 50,153,236, 63, 0,130, 75, 74, 74, 60, 0, 64, 38,147, 37,115, 28,183, 95,163,209,124, 97,217,192,183, 22,247,201, 11, 64, 19, + 84,189, 21, 20, 93,184,112, 97,108,100,100,100,220,127,155,147, 16, 82,207,213,213,117, 65, 68, 68, 4,162,163,163,113,248,240, + 97,163, 68, 34,225, 13, 27, 54,140,124,244,209, 71,202, 9, 19, 38,116,197,115, 4,113, 44, 69,215, 57,115,230,168, 26, 55,110, +140, 61,123,246,224,198,141, 27, 37,190,190,190,146, 14, 29, 58,128,199,227,169,166, 77,155,246, 14,128, 31,158,231, 7,114,114, +114,230, 77,154, 52,105,243,142, 29, 59,228,241,241,241, 88,177, 98,133, 83,255,254,253,207, 16, 66,222,176, 86,108, 17, 66, 68, + 0,198, 3, 8, 99, 89,182,221,176, 97,195, 76,227,198,141,227, 51, 12, 99, 92,178,100,137,243,134, 13, 27,250, 59, 57, 57, 5, +103,101,101,217,220, 15,170, 1,203,178, 6,142,227,248, 0,196,148, 82,221,179, 94,255,155,242,238,232,232, 56, 54, 55, 55,247, +123, 55, 55, 55,184,186,186,254,173,175,213,233,116, 16,139,197, 2, 55, 55,183,117,189,122,245,226,255,244,211, 79, 85, 78, 1, + 18,150,204, 60,248,227, 92, 15,149, 82, 14, 0, 88,186,250, 88, 49, 0,252,244,211, 79, 72, 73, 73,129, 82,169, 68,211,166, 77, +217,185,115,231,186, 79,156, 56,241, 91, 0,239, 87,197, 85, 81,139,188, 74, 22,173,242, 98,171,252,235,106,125,180, 56,142, 43, +219,176,212, 34,168, 44, 34,168,226,255, 22,113, 86, 65,225,157,168,144, 16, 82, 84, 84, 84, 38,178,236,237,237, 81,218,185,194, +104, 52,254,141,215,108, 54,131, 16, 66,171,227,172, 34,195, 99, 1,156,164,148, 62,180, 82,137,150,113,238,254,216, 31,155, 69, + 83, 6, 90, 66,168,119,157,244,244,188, 25,192,133, 71,239,175, 88,249,198, 27, 30,227,103, 44,159, 93,146,157,146, 53,109,112, +247,122,190,110,142, 18, 89, 94, 70,190,170, 81,163, 46,120, 26, 81,217,218,116,182, 31, 58,116,232,150,227, 23, 19,136, 88, 44, + 16,240, 88,150,223,182,153,159,163,151, 3,235, 32, 7, 28, 18,227, 98, 47, 12, 31, 62,188,217,228,201,147,219,213, 36,239, 12, +195,192,222,222, 30, 91,182,108, 1, 99,197,222, 57, 47, 99,213, 72, 37,247,157,103, 17, 82, 57, 57, 57,136,142,142, 70,120,120, +248, 53, 66, 72,112,233, 37,215, 40,165, 40, 40, 40, 64,106,106, 42,220,221,221,175, 17, 66,248,229,167, 17, 43,114, 90,172,170, + 22, 81, 53,108,216,176,193, 38,147,137, 87,174,145,168, 40, 96,254, 38, 98,172,205,187, 90,173, 62, 14,224, 77,150,101,161,215, +106,245,255,249,230,155,242, 31, 95, 41, 47,178,170,226,180,164,213,108, 54,243,174, 93,187,198,183, 60, 51, 0,248, 0,100, 0, +156, 40,165, 96, 24,230,166, 21,229,233, 47,149, 74, 47, 68, 69, 69,217,135,132,132, 16,161, 80, 8,147,201,132, 91,183,110,121, +125,253,245,215,163, 79,156, 56,241, 14, 33, 36,160,226,230,233, 86,222,247, 38,231,206,157,211,248,248,248, 84, 42, 28, 11, 10, + 10,120,126,126,126,111, 0,136,251, 31,112, 38,165,167,167,247,122,243,205, 55,199,164,165,165,197,152, 76,166,207, 1, 52,117, +114,114,186,214,167, 79, 31, 72, 36,146, 48,107,132, 86,117,247,221,197,197,165,231,235,175,191,142, 21, 43, 86,224,235,175,191, +238, 76, 41, 61, 73, 8,233, 84, 80, 80,112,162, 71,143, 30, 80, 40, 20,189, 42, 19, 90,214,214, 37, 66,136, 95,251,246,237,215, +125,249,229,151,242,232,232,104,248,250,250,162,176,176, 16,159,125,246,153,203,172, 89,179, 78, 19, 66, 58, 88,196, 86, 85,156, +132,144, 0,145, 72,244,195,142, 29, 59,236,124,124,124,124, 4, 2, 1,227,227,227,131,156,156, 28,104,181, 90,209,252,249,243, +155, 73, 36,146, 63,150, 45, 91,246, 3,128, 62,255,237,231,189, 66, 90,243, 1,216, 3, 80,212,100,218,181,154,188,231, 3, 16, +149, 61, 60,124, 62,196, 98, 49,196, 98, 49, 68, 34, 17,238,221,187, 55, 67, 44, 22, 47, 41,223, 22, 87,199, 73,254,236,180, 2, + 9, 33,151, 89,150,173,246,117, 69,215,144,255,118,121,150,166,217,147, 16,178, 20, 64,216,211, 38,159, 57,227,228,228,244, 73, + 90, 90,218, 99,107, 57,213,106,181, 99, 81, 81,209, 50,119,119,119,184,186,186,150,245, 29, 30, 30, 30, 48, 26,141, 72, 79, 79, + 7,165, 20,121,121,121,144, 74,165, 80,171,213,203, 70,143, 30,189,103,205,154, 53,217,149,114,114,248,186, 71,255,233, 51, 89, +150,101, 0,128,229,217,217, 77,152, 10,212,171, 87, 15,109,219,182,133, 86,171, 69,126,126, 62,154, 52,105,194, 35,132, 12,101, + 24,198,158, 82,186,138, 82,122,234, 95,104,117,175,210, 25,126, 78,197,121, 81, 66, 8, 56,142, 3,143,199,251,139,208,170,120, + 88, 68, 81,105,125, 37,207, 50,113,235,245,250, 50,145,229,224,224, 80, 38,210, 76, 38, 83, 85, 66,171, 54, 74,189, 57,199,113, +222,132,144, 53,214,138,173,138, 24, 58,116,232,223,252, 61, 38, 78,156,152,148,145,145, 65,223,237, 18, 40,139, 57,146,146,218, + 64,105, 39,113,150,203,235,139,149, 42, 69,118,118,246,111, 0, 20, 53,248,137,134, 45, 90,180,144,108,222,119, 46,105,212,167, + 11,231,134,248, 56,218, 55,247,116, 82,186, 57, 72,132,118, 12,209,136, 77,198, 36,149, 74,229, 91,139, 17, 26, 0, 64,161, 80, +128,199,227,253, 35, 44, 90,148, 82, 19, 33, 36,152, 16,114, 45, 58, 58, 26,161,161,161,101, 98,203, 34, 66,242,243,243,113,235, +214, 45,180,111,223, 30, 0,130,173,241,213,226, 56, 14, 6,131, 1, 6,131,161, 76,192, 8, 4,130,191, 9, 24,203,181, 44,203, +222,172,101, 22,230, 42,149,202,246, 97, 97, 97,194, 31,119,237, 18, 82, 74, 53,120,186,241,117, 17,165, 85,108,144, 93, 1, 38, +147,169,204,202,198,231,243,241,228,201,147, 50,171,176,197, 50, 92,113,234,188, 42,136, 68,162, 73, 59,119,238,180,111,213,170, + 21,201,206,206, 6,199,113,101,141,228,247,223,127, 47,238,219,183,175,199,213,171, 87,167,161, 22,219,217, 0, 32, 85, 9, 34, + 0,176,183,183, 55, 1, 96, 94, 4,167,201,100, 34,109,218,180,153,156,149,149,213,172,164,164,100,190, 53,245, 8,192,193,210, +195,210,166,252, 17, 19, 19, 83,210,175, 95, 63, 73,253,250,245, 67,159,183,174,250,249,249,181,230,243,249,184,116,233,146, 14, +128,101,100,125,230,198,141, 27,186, 62,125,250,136,188,188,188, 90,215,160,193,245,243,247,247,255,217,197,197, 69, 98,177, 96, + 70, 68, 68,240,215,174, 93, 43, 79, 78, 78,134,193, 96, 64,100,100, 36,186,117,235, 6, 39, 39, 39, 76,156, 56,209,117,209,162, + 69,219, 0,180,168,134, 83, 44, 20, 10,183, 60,120,240,192,215,221,221, 93,114,241,226, 69, 52,111,222, 28, 89, 89, 89, 72, 75, + 75, 67, 81, 81, 17,210,210,210,240,254,251,239,187,124,251,237,183,234,127, 80,255,147, 39, 16, 8, 32,149, 74, 21,121,121,121, +207,227,231, 38, 2, 32, 44, 47,178, 68, 34, 17, 68, 34, 17,196, 98,241,115,237,203,250,138,116,226, 30,132,144, 59, 2,129, 64, + 36,149, 74, 5, 12,195, 64, 36, 18,117, 81,169, 84,183,223,122,235,173,166,199,143, 31, 79,176,134, 71,171,213,110, 17,137, 68, +124, 23, 23, 23, 0,128,175,175, 47,154, 55,111, 14,141, 70,195,229,231,231, 67,161, 80, 48,143, 31, 63, 70, 73, 73, 9, 82, 83, + 83, 81,183,110, 93, 62,195, 48, 91, 0,188, 83, 25,223,175, 87, 83, 87, 3, 88,109,121,237,236,236,156, 14, 64, 98,121, 45, 22, +139,225,225,225,129,228,228,100,200,229,114,118,214,172, 89,125,118,237,218,213,155, 16, 50,148, 82,186,181, 28,213,156, 87,213, + 71,203, 34,178,202,159,255, 34,180,194,195,195,103, 71, 71, 71,191, 81, 89, 71, 86, 58, 95, 91,165, 37,203,114, 88, 35,136, 8, + 33, 48,155,205,112,117,117,133, 84, 42,133, 84, 42, 5, 33,164,236,253,138,252,165, 35,252, 26,103, 86, 38,147,225,189,247,222, +163,171, 86,173, 26, 83, 42,182, 30, 88,251,221,136, 21, 49,101, 86,172,138, 8, 8, 8,184, 48,109,218,180,158,191,252,242, 75, +114,136, 79,125,158, 44,229,113,145,216, 94,161,128,103,157,240, 97,189,250,220,192,211,213,135,214,226, 65, 97, 97,161,164,129, +167, 84,207, 48, 90, 82, 71,196,147,187,203, 4, 34, 55,165,210, 67,160,215,101,216, 43,149, 66,157, 78,151, 7, 32,183, 58, 18, +123,123,251, 99, 34,145,168, 46,203,178, 96, 89, 22, 78, 78, 78, 14,148, 82, 40, 20, 10,120,122,122,218, 53,106,212,232, 62,143, +199, 3,195, 48, 40, 42, 42,122,252,232,209,163, 46,207, 74,152, 82,169, 60, 38, 18,137,234, 50, 12, 3, 66, 8, 88,150, 45, 91, +184, 96,249,159,101, 89, 16, 66, 80, 92, 92,108, 21, 39,165,244, 58, 33, 36, 56, 60, 60,188, 76,108, 29, 57,114, 4,111,191,253, + 54,242,242,242,112,251,246,237,242, 34,203,170,105,195,242,206,239,148, 82, 8, 4, 2,220,187,119,239, 47, 83,218,150, 67, 46, +151,215,250,225, 81,169, 84,231, 35, 34, 34,176,110,221, 58, 74, 41, 37, 0,100,132,144,230, 14, 14, 14,247,238,220,185, 99,149, + 31, 12,165, 20, 6,195,159,151, 90,234,120,249,231,171, 6, 98,186, 75,139, 22, 45, 72,126,126,190, 69, 64,150, 13,136, 88,150, +197,202,149, 43, 37,173, 90,181,154, 46, 22,139, 39, 11, 4,130, 2,163,209,248,163, 86,171,157, 79, 41,205,251, 39, 53, 74,237, +218,181,251, 52, 49, 49,177, 91,221,186,117,163,158, 67,196,211,150, 45, 91,234, 1, 72, 88,150,229,191,128,134,146, 45,173, 91, + 90,139,216,167,148,154, 90,180,104,161, 45,237,228, 89,107,185,156,156,156,182, 29, 62,124,216,179,110,221,186, 48, 26,141, 48, +153, 76, 40, 42, 42,194,153, 51,103,160,211,233, 96, 50,153,224,235,235,139,153, 51,103,106, 63,249,228, 19,241,154, 53,107, 50, +138,138,138, 6, 61,131,246,147, 61,123,246,200,220,221,221, 37, 37, 37, 37,136,139,139, 67,139, 22, 45, 80, 88, 88, 8,141, 70, +131,226,226, 98, 24, 12, 6, 20, 20, 20, 40,204,102,179,254,159,114,175,121, 60, 30, 68, 34, 17, 4, 2, 65, 94,221,186,117, 65, + 8, 17, 39, 36, 36,212,102, 42,206, 30, 64, 1,159,207, 23,150, 23, 88, 34,145, 8,151, 46, 93,154, 38, 20, 10, 43,181,102, 85, + 87,127,106,242,250, 31,208,145, 47, 21, 8, 4, 34,149, 74, 37, 40,215, 79, 11,236,236,236,224,226,226,178, 2, 64, 87, 43,243, + 29,164, 82,169,202,218,247,192,192, 64, 36, 38, 38,238,207,207,207, 31,146,145,145, 1,134, 97,182, 48, 12,211,219,162, 3,114, +115,115,225,229,229, 21, 84, 21, 95,155, 22,238, 99, 64,104,153, 69, 43,160,161,202,174, 66, 63, 5,123,123,123, 60,122,244, 8, + 26,141,134,198,198,198,146,177, 99,199, 18,189, 94,191,137, 16,242, 27,165, 52,190, 58, 45,242, 42,160, 86, 62, 90,150, 2,174, + 74, 88, 85, 20, 94,214, 8, 34,189, 94,111,215,162, 69, 11,206,210,129, 91, 14, 0,164, 42,161, 85,106, 57,168, 49,248,124,190, +124,236,216,177,133,171, 86,173, 26, 77, 8, 89, 75, 41,141,173,109, 1, 70,237,221,225,250,245,204,200,153, 42,117,253, 6,147, + 39,207,224,117,239,222,253,226,230,205,155,205,170,198, 93, 59,157, 58,182,213,117,217,103, 83,142, 28, 62,124, 24,120,234, 24, +109, 45,206, 31, 58,116,200,109,226,248,143, 48,115,210, 39, 71,237,125,157,132,118, 68, 37, 19,235, 52,153,118,160, 37,162,134, +254,221,246, 69, 69,165, 2,184, 90, 29,137, 68, 34,169, 27, 27, 27,235, 91, 94, 72, 24, 12, 6, 40, 20, 10,108,222,188,217, 89, + 46,151, 59,219,217,217,129,199,227,161,121,243,230,214, 90, 76,234,222,191,127,223, 87, 46,151,163,184,184, 24, 58,157, 14, 70, +163, 17, 28,199,129, 16, 2, 62,159, 15,161, 80, 8,153, 76, 86,163,149,125,229,197,214,145, 35, 71,208,164, 73, 19,228,230,230, + 34, 38, 38,166,198, 34,171,188,149,168,188, 63, 22,143,199,195, 54, 31, 31,140, 74, 73, 41, 19, 48, 75, 29, 28, 48,147,227,106, +117,239,155, 53,107, 70,127,253,245, 87, 28, 61,122, 20, 61,122,244, 32, 7, 14, 28, 48,152,205,102, 65,114,114,178,213,214, 49, +142,227,202,210,106,105,183,203, 11,172,154, 10, 45,147,201, 36, 23, 10,133,208,106,181,101, 83,251,229, 15,111,111,111,228,228, +228,240, 10, 10, 10,120, 41, 41, 41,210,121,243,230,141, 59,125,250,180, 59,128,129,255,203,134,104,213,170, 85,117, 71,141, 26, +245,132,199,227,209,183,223,126,123,240,227,199,143,123,185,187,187,159,252,229,151, 95,190, 1,224, 87, 83, 62,103,103,231, 43, + 60, 30,207,211,206,206, 78,176,123,247,110, 99, 97, 97,161,192,197,197, 37,221, 34,108, 45,101,109, 52, 26,147,242,243,243, 67, +172,225,115,118,118, 22,124,247,221,119,198,236,236,108,129,155,155, 91,186,133, 71, 38,251,191,246,190, 60, 46,170,178,125,255, +122,206,153,149,217, 24,214, 1, 4,193, 13,113, 55,220, 3, 21,211,212,164,222,212, 76, 95, 77,211, 80,204,236, 87,154,169,245, + 85,223,220, 73,211, 52, 51, 83, 94,247, 50,211,108, 51, 51,115, 9,114, 41, 53,169, 20,196, 5, 18,217,215, 97,103,152,237,204, +249,253,193,204, 52,224,192,204,224,160,216, 59,247,231,115, 62,156,153, 51, 92,231,217,159,235,185,159,251,185,111, 49,239,240, +225,195,186,138,138, 10,158, 92, 46,255,173,172,172,204, 38, 94,113,113,241, 11, 47,190,248,226,217,211,167, 79,123,211, 52,141, +187,119,239,162,164,164, 4,114,185, 28,251,247,239, 71,112,112, 48,190,248,226, 11,165, 82,169,156,249,222,123,239, 45,173,170, +170,178,199,213,195,144, 1, 3, 6, 4,151,149,149, 65, 46,151,163,186,186, 26,191,253,246, 27,186,117,235,134,220,220, 92, 80, + 20, 5,185, 92,142,109,219,182,213, 16, 66,148,173, 97, 2,162,105,218,172,117,178, 32, 71,181,131, 6, 13, 66, 66, 66,194, 34, + 71,200, 17,203,178, 26, 46,151, 91,143, 96, 89,220,235, 29, 77, 27,195, 48, 60,163,141, 40,177,231,115, 43,144,161,110,110,110, +188,134, 95,214,212,212,240,252,253,253, 7, 59, 64,124,189,220,220,234, 20, 78,193,193,193, 40, 47, 47,103, 52, 26,205,164,253, +251,247,235, 0,160, 79,159, 62,147, 24,134,169,213,235,245, 52,159,207, 71,117,117, 53,124,125,125,189, 26, 5,164,176,248,219, +131,171,253, 26,218,104,249,251,251, 35, 60, 60, 28,106,181, 26,121,121,121, 72, 76, 76,212, 49, 12,115,224,227,143, 63, 54,248, +248,248,188,244,220,115,207,209, 87,174, 92,121, 21,192,252,166,184,200,163,162,205,106,140,108,153, 78, 29, 14, 5,144, 0, 32, +202,148, 73,203,173,195,166, 52, 89, 13, 52, 90,196, 70,135, 43,203,206,206, 22,139,197, 98,243,119, 58,157, 14, 1, 1, 1, 6, +131,193, 64, 26,190,199,148,142,230, 10,151,203,149,190,253,246,219,101,219,182,109,155, 6, 59, 13,202, 15,191,218, 5,251, 26, +144,172,237,235, 86,110,253,112,221,106,207,180, 31,246, 96,231,150, 13, 12,195,224, 74,207,158, 61, 7, 87, 85, 85,113,220,197, + 58, 20,151,225, 56,234,252,104,177,118, 86, 8, 5, 96,247,165, 75,151,174,140, 25, 51,230,252,238,207,191,244,204, 77, 79,255, + 69, 80, 81,156, 39,235, 20,202,225,181, 9, 30, 87, 89, 91,203,155, 52,105,146, 15,128,231,154,194,162, 40, 10,233,233,233,200, +200,200,128, 68, 34,129, 84, 42,133, 68, 34,129, 76, 38,131, 84, 42,133, 84, 42,117,184, 12, 41,138, 2,195, 48, 56,114,228, 8, + 68, 34, 17,196, 98,113,189,203, 68,178,238,167,110, 70,143, 30, 13,165, 82, 9,137, 68, 98,222,238,116, 68, 76, 54, 90, 26,141, + 6, 26,141, 6, 90,173,150, 1,192,229,112, 56,136,201,206, 54,107,121, 28, 33, 48, 13,165, 87,175, 94,236, 47,191,252,130,243, +231,207,163,186,186, 26, 31,126,248, 33,252,253,253,159, 0,176,204, 81, 44, 11, 35,125,166,162,162,130, 91, 81, 81, 97,214, 14, +114,185, 92,179,198,208,222,201,129,195,225,152, 87,163,166,203, 82,171, 69,211, 52, 20, 10, 5,252,252,252,176,125,251,118, 94, +187,118,237,158,126,152,131,208,250,245,235, 59,109,222,188,121,215,190,125,251,142,191,240,194, 11,135,174, 93,187, 54,195,221, +221,253,234,153, 51,103, 86, 11, 4, 2, 67, 51,251,119, 96,110,110,174,175,229, 87, 6,131, 65,164,215,235,205,196,182,166,166, + 6, 61,122,244,176, 27, 47, 37, 37, 69, 4, 0,171, 87,175,230, 2, 16,153,220,134,152, 48,107,106,106,184,221,186,117, 11,180, +147, 20,220, 36,132, 12, 30, 49, 98,196,133,147, 39, 79,122, 4, 7, 7, 35, 39, 39, 7, 57, 57, 57,232,212,169, 19,214,174, 93, + 91, 93, 81, 81, 17, 97, 36, 87,223,216,153,237, 0, 15, 15, 15,110,102,102, 38,244,122, 61, 30,123,236, 49,108,219,182, 13,147, + 38, 77, 66,143, 30, 61, 80, 81, 81,129,148,148, 20,236,221,187,215,131,199,227, 61,247,176, 39, 31,227,214, 86,163, 87,115, 68, +175,215,203,132, 66, 97,133, 64, 32,224,155,236,179, 18, 19, 19, 29,214,102, 89, 46, 0, 29,249,220, 26, 72,107, 67,225,243,249, +240,243,243,179, 27, 71, 32, 16, 16,211,216,168,215,235, 81, 94, 94,206,248,251,251,155,183,247,147,146,146,152,144,144, 16,134, +166,105,154,207,231,131, 16, 2,145, 72,212,232,128,207, 50,236,202,103, 38, 45, 51,159, 58,164,184, 98,217,188,183,235, 22,253, + 73, 73, 73,208,106,181, 72, 76, 76,212,189,247,222,123,185,101,101,101,243, 0,112, 78,156, 56,241,226,162, 69,139,104, 95, 95, + 95,179, 29,173, 53, 46,242,168,145, 45,107, 90, 46,211, 44,148, 16, 29, 29, 77,140, 71, 43,137,137,224,176, 44,123, 15,185,106, +140,120, 25, 39, 9, 98,171,211,209, 52,141, 31,126,248,193, 76, 8, 76,167, 14, 89,150,133,179,137,150,151,151, 87,245,128, 1, + 3,100, 89, 89, 89,159, 53, 87,147,181,125,221,202,173,113,171,222,241, 84, 94,255, 21,217,185,121, 80, 22,234,174,156,187,122, +231, 43, 0, 95, 1, 0,118,116, 77,192,236,235, 31,217,139,217,213, 71,212,187,103,128,244,171, 39,199, 60, 29, 52, 49,118, 62, +245,202, 43,175, 68,190,248,226,139,229, 47,188,240,194,107, 18,137,164,179, 86,171, 45,253,242,216,177,140,137, 19, 39,182, 99, + 24,230, 69, 91, 62, 71,116, 58,221,221,241,227,199,155,203,214,207,207, 79,118,240,224, 65,133, 84, 42,197,212,169, 83,139, 50, + 50, 50,204,219, 69,149,149,149,119,237, 73,163, 86,171,189,219,187,119,239, 70,183, 11, 77, 26, 73, 71, 48,141,117,105, 62, 93, + 88, 82, 82,130, 27, 55,110,128,195,225, 96,224,192,129, 56,119,238, 28, 34, 35, 35, 29, 58,113, 88, 91, 91,139,224,224, 96,212, +214,214,162,186,186,186, 6,128, 96,127,187,118, 0,128, 87, 75, 74,240,219,123,239,225,215,184,184,102,181,163,222,189,123,179, + 23, 47, 94,196,213,171, 87,161, 86,171, 49,115,230, 76, 24,183, 13, 1, 96,164, 3,121,238,224,231,231, 55,122,204,152, 49, 1, + 0, 80, 93, 93, 77, 46, 93,186, 4,161, 80, 8, 66, 8,242,242,242,112,244,232, 81,228,228,228,128, 16, 2, 15, 15,143, 64, 66, + 72, 59,150,101,239, 52, 49, 49,144, 59,119,238,224,221,119,223,133,193, 96,192,162, 69,139, 16, 26, 26,106, 38, 88,119,239,222, +197,234,213,171,193, 48, 12,222,121,231, 29,116,234,212, 9, 58,157, 78,232,136,159, 50,103,203, 27,111,188,145,246,213, 87, 95, + 29,207,202,202,122,106,221,186,117, 67, 9, 33,134,133, 11, 23,190, 43,147,201,152,251,193, 45, 45,175,196,141,219,119,205, 68, +168,225,229,227,237,233, 48,222,173,244, 44,243,255, 51,140, 37, 30, 3, 47, 79, 15, 71,147, 88,163,211,233,170,199,141, 27, 39, + 63,114,228, 8,233,212,169, 19,254,250,235, 47,211,226,180,166, 25, 46, 29,114,148, 74,101, 40, 77,211,188,219,183,111, 35, 36, + 36, 4, 3, 6, 12,192,154, 53,107, 80, 92, 92, 12,189, 94, 15, 95, 95, 95,131, 78,167, 75,210,104, 52, 63, 63,236,137,199, 82, +235,100,121, 37, 38, 38, 46,226,243,249, 44,128,139, 0, 28, 34,218, 44,203,106,218,182,109,219, 16, 91,143, 86, 34, 45,121,146, +209,223,223, 63, 81, 42,149, 62, 93, 90, 90, 90, 79,171, 21, 17, 17,161, 85, 40, 20,103,237,197,145, 72, 36,165, 52, 77,123, 1, + 64, 78, 78, 14,196, 98, 49, 47, 61, 61, 61,142, 16,242, 22, 0,180,107,215, 46, 78,169, 84,242,218, 25,199, 83, 63, 63, 63,104, + 52,154, 70,205, 88, 46, 36,229,239, 1,176,199, 98,238,205, 43, 47, 47,119,219,176, 97, 67, 85, 92, 92,156,138, 97, 24, 53,128, + 51,101,101,101,102, 63, 90, 33, 33, 33,229, 92, 46,215, 83, 46,151,183,177,128,186,135,139, 60, 74,210,164, 70,203,200, 36, 89, + 43,255,100, 85,147,101,141,108,217,163,149, 32,132, 64,165, 82,213,211,142,152, 78, 29, 90, 35, 90,198, 9,189, 89, 91,135, 70, +146,229,118,240,224,193, 3, 91,182,108, 57,111,239,255, 89,218,104,237,216,184,106,157,137,100,253,121,254, 36,190, 73, 45, 47, + 94, 20,183,105,115,115, 43,161,155,143,184,151,159,194, 59,225,189,181, 43,101,105, 63,236,197,161, 29,239,179,127, 94,190,220, +255,242,229,203,211,230,206,157,219,214,216,176,148, 0,254, 0, 48,209,158, 83, 58, 69, 69, 69,245,236,163, 66, 67, 67,111,202, +229,114,133, 80, 40, 68,122,122,122, 85,114,114,178,195, 91, 50, 13, 49,157,196,244,235,145,172,228,228,100, 12, 27, 54, 12, 0, +112,238,220, 57, 68, 68, 68, 56, 68,182,116, 58, 93, 89,215,174, 93,205,218,173,242,242,114, 3, 0,196,230,229, 33,222,223, 31, + 28, 14, 7,191,198,197, 97,137, 78,135, 53, 92,199, 76,119, 30,123,236, 49,246,242,229,203,200,200,200,128, 94,175,199,179,207, + 62,107, 73,178, 28,201,115,143, 46, 93,186,156, 58,115,230,140,143, 68, 34, 65,117,117, 53,170,170,170, 48,125,250,116, 76,154, + 52, 9,106,181, 26,135, 15, 31,198,183,223,126, 11,169, 84,138,234,234,106, 84, 87, 87,123, 68, 71, 71, 95, 32,132, 12,105,204, +182,144,101, 89,118,212,168, 81, 56,123,246, 44,104,154, 70,255,254,253, 81, 82, 98, 62, 12, 4,133, 66, 97,237, 25,109,236,239, + 15,101, 66,226,112, 56,108, 98, 98,226,186,161, 67,135, 34, 43, 43,235,169, 62,125,250,124, 56, 99,198,140,156,251,197,245,112, +151,162,119,183, 14, 80,171,213, 80,171,213, 8, 8, 8, 64,101,101, 37,210,210,210,160, 86,171,161,240,149, 59,140, 23,222,163, +147, 25,207,215,215, 23,213,213,213,184,115,231, 14, 52, 26, 13,188,189, 61, 28,169,255,160, 81,163, 70,253,116,224,192, 1,175, +189,123,247,106,162,162,162,248, 31,126,248, 33,145,201,100, 40, 44, 44,108,110,150, 19,207,157, 59, 23, 60, 98,196,136,176,235, +215,175, 35, 49, 49, 17, 26,141, 6,225,225,225,184,117,235, 22, 6, 13, 26,132,170,170,170,139,151, 47, 95,254,182, 53, 76, 60, +166,109, 61, 11,205,211, 18,185, 92,174, 5,176,249,126,218, 98,102,102,166,160, 87,175, 94,106,161, 80,200, 55,146,182, 77, 15, +171,109, 91,169,247,251, 58,201,216,148,248,249,249,205,243,246,246, 30,209,190,125,123, 20, 20, 20,240,248,124, 62, 34, 34, 34, +180,253,250,245,211,250,249,249,189,234, 64,189, 92,231,241,120, 67,234, 22, 19, 12, 50, 51, 51,193,178,236,162, 30, 61,122,188, + 94, 89, 89,137,146,146, 18,190, 76, 38, 51, 47,170,195,194,194,160, 86,171,175, 59, 64, 54, 87,134,132,132, 44,229,241,120,107, +138,138,138, 62,182, 82, 70,252,222,189,123,203,120, 60, 30,180, 90,109, 61,178,105,141,139, 60,202, 36,171, 30,209,178, 96,145, + 13,213,233, 54,183, 13,237,181,209, 34,132, 64,163,209, 64, 44, 22,155,183,164, 44, 61,193, 91, 35, 90,205,145,160,160, 32, 12, + 24, 48,192,237,208,161, 67,159,110,216,176,225, 66,115, 48,190, 56,240,137,191,187,161, 38, 40,247,226,247,184,121,245, 10,190, + 74, 41, 43, 94, 20,183,233,181,103,158,155, 92,208,144,152, 29,158,109, 27,175,179,175,184, 71, 27,133, 87,194,198,245,113, 50, +229,245, 95,145,151,159,143,239, 47, 94,190,162, 97,217, 20, 0,139,156, 85,217,150,167,215,154, 75, 82, 91, 96,224, 49,187,119, + 40, 46, 46, 70, 74, 74,138,137,100,133, 3, 64,100,100,100,146,137,108, 93,185,114, 5,125,250,244,185,199,189,195, 61,154,135, +210,210,181, 13,222, 49, 2,128,183,137,240,115, 56, 28, 68, 44, 93,234, 48,201, 34,132,176, 12,195, 64,169, 84,154, 86,138,205, + 34, 89,198, 65,241,205, 51,103,206,248,236,222,189,187, 98,223,190,125, 37, 6,131,129,219,187,119,239,192,190,125,251,146,253, +251,247, 3, 0, 38, 78,156,136, 69,139, 22, 33, 57, 57, 25, 98,177, 24,145,145,145,204,242,229,203,125,231,205,155,247, 42,234, +252, 36,221, 35, 12,195,240,218,181,107,119, 26,192, 19,215,175, 95, 7,128, 11, 44,203, 70,152,158, 55,245,204, 14, 49, 84, 86, + 86,114,165, 82,169, 85,215, 16,188,186, 99,157,142,110,245,153, 49,207,159, 63,255,238,198,141, 27,191, 90,176, 96,193,237,251, +196,180,170,209,122,250,233,167,161, 82,107,145, 93, 80, 14,134,209, 67,165, 45,116, 24,207, 82,163,245,244,211, 79,163,166, 86, +131,204, 60, 37,244,122, 6,149, 42,189,189,237, 72,244,228,147, 79,158, 56,120,240,160,223, 47,191,252, 2,134, 97, 12,183,110, +221,186, 51,110,220, 56,217,194,133, 11,189, 44,108, 80, 29,149, 45,147, 39, 79,158,112,254,252,121,101, 88, 88,152,231,197,139, + 23, 81, 88, 88, 8,189, 94,143, 39,158,120, 2,124, 62, 63, 51, 46, 46,142, 7, 96, 75,107, 33, 90, 2,129, 0,151, 46, 93,114, + 10,193,178, 20, 62,159,223,236,237,199, 71, 85, 46, 94,188,152, 51,119,238,220,110, 50,153,108,243,224,193,131,135,121,121,121, + 81, 30, 30, 30,137,109,218,180,121,189, 87,175, 94,118,239, 46,112,185,220, 25, 98,177, 56, 77,175,215,211, 85, 85, 85,168,174, +174, 6, 0,232,245,122, 62, 69, 81,104,215,174,157, 89,121,210,191,127,127,248,249,249, 49,169,169,169, 51,236,197, 47, 44, 44, +172,119, 10,209,138,204,142,136,136,224,168,213,106,100,100,100,156,179,124,208, 24, 23,105,237,210,172,160,210, 20, 69,129,101, + 89, 8,251,246, 69,222,201,147, 56,114,228, 72,147, 47,217,177, 99, 7, 26,170,250, 26, 70,247, 54,157, 46,156, 53,107,150,249, + 55, 87,174, 92, 49, 27,197, 63,251,236,179,245, 48, 47, 93,186,116, 15,217,178, 39, 98,120, 97, 97,225,245,195,135, 15, 95, 94, +191,126,253, 69, 59, 11,200,140,105,178,209,154, 48,101,106,222,214,119,255,115,109,223,209, 51, 61,242, 84,108,222,162,184, 77, + 11, 26,146, 44,123, 49,187,250, 73,186, 6,250,122, 37,110, 88, 31,231,110,210,142, 29, 76,202, 47,135,158,157,237, 96, 69,218, +204,187,165,102,145, 16, 98,112, 6,102, 51, 26, 92, 61, 76, 75,247, 14,121,121,121,102,146,101,225,176, 52, 60, 50, 50, 50,201, + 72,178, 76,207,244,205, 73, 39,135,195,193,130,170, 42,112, 56, 28, 68,173, 88,129, 39, 86,173,114, 56,239, 12,195,128,195,225, + 32, 52, 52,212, 97,146,101,137, 73, 8,137,168,169,169,193,222,189,123, 43,111,223,190,221,161,125,251,246,243,246,236,217,179, + 73, 36, 18,213,251,159,154,154, 26, 60,243,204, 51,248,248,227,143, 49,106,212, 40,221,140, 25, 51, 4, 20, 69,141,104, 42,157, + 25, 25, 25,179,135, 15, 31,190,163,182,182,150, 83, 82, 82, 50,219,222,103,182,242,126,248,240,225,219,161,161,161, 67,209,184, + 11, 7, 3,128, 95,238, 7,115,243,230,205, 0, 16,118, 63,152,141,105,180, 62,255,252,115, 24, 12, 6, 4,249,201,161, 86,171, +209,176,172,109, 97, 54,212,104, 29, 58,116, 8, 6,131, 1,109,253, 61,161,209,104, 96, 50, 32,182,133,233,229,229,245,254,190, +125,251, 2, 83, 83, 83,145,157,157,141, 77,155, 54,221, 45, 43, 43, 27, 83, 86, 86, 38, 88,190,124,121,194,148, 41, 83, 20, 6, +131, 65,237,104,223,100, 89, 86, 77, 8,153,241,248,227,143,239, 95,189,122,245, 95, 93,186,116,105, 27, 17, 17, 33, 47, 41, 41, + 41,250,253,247,223,239,236,216,177, 67,162,215,235,103, 52,182, 37,245, 32,250,187,165,228,228,228,172, 48,106, 83, 29, 34, 88, +246,164,243,210,165, 75,111, 27,177, 47,219,131,253,160,242,126,191, 39, 25,109,165,243,163,143, 62,202, 70, 3,255,104,142,166, +243,210,165, 75, 25, 35, 70,140, 88,165, 80, 40,150, 11,133, 66, 20, 21,213, 5, 59, 48,105, 30, 77,243,117,223,190,125, 49,106, +212, 40,220,188,121,115,213,210,165, 75, 51,238,167, 60,141, 11,238, 14, 0,166, 13, 31, 62,124,225,132, 9, 19,240,209, 71, 31, +129,101,217, 93,255, 4, 18,108, 51,168,116,116,116, 52,177,252, 11, 0, 58,157, 46, 43, 45, 45,205,191, 83,105, 41, 29, 64, 8, +250,247,239, 15,203, 24,133, 38,187, 29,147, 65,221,207, 63,255,172, 55, 24, 12, 77,250,172, 98, 24, 38,235,252,249,243,138,147, + 39, 79,114, 77, 21,106, 52,234, 52,228,230,230, 82, 9, 9, 9,102,237, 24,135,195, 65, 98, 98, 81,136,152,192, 0, 0, 32, 0, + 73, 68, 65, 84,162, 94,171,213,102, 58,154,225,155, 55,111, 58,101, 53,247,115,114,198,235, 39,190,255,218,123,224,128,193,101, + 50, 79, 79,171, 29,217,228, 65,190,201, 6,198,161,214,172, 91,187, 82,110, 34, 89,159, 39,229,151,213,170,153, 97,215,139,106, +254,116,118,101, 87, 86, 86,102,152, 78, 23, 86, 85, 85,101,182,162, 70,248, 59, 33, 36,220,223,223, 63, 9, 13, 78, 23,154,158, +245,233,211,231,158,103, 14,169, 77, 12, 6,184,187,187,155, 7, 9, 71,237,178, 8, 33,172,105, 43,219,152, 46,114,159,121, 62, +127,237,218,181,144,233,211,167, 75, 67, 67, 67,211, 9, 33,220,152,152, 24,173,159,159, 31,239,220,185,115, 58, 0,100,232,208, +161,156,252,252,124, 54, 39, 39, 71,249,175,127,253,171,114,214,172, 89, 94,127,252,241, 7,223, 96, 48,156,178,129,253, 23,128, +225,142, 62,179, 37, 19, 38, 76, 72,135, 21,199,161,247, 35, 45,129,105, 18,101, 89, 5,210, 51,114,140,177, 46, 13, 96,238, 22, +152,237,170,116, 58, 61,148, 21, 37, 14,107,180,210,238,228, 24, 67,142, 49, 96,152, 92, 35, 94,157, 65, 60, 91, 90, 99,143,182, + 32,114,243,230,205, 99, 40,138,162,126,253,245, 87,245,250,245,235,179,138,138,138,158,101, 89, 54,211,216,206,162,246,238,221, +251,169, 29,174, 28, 26,171,251, 20, 66,200,160,197,139, 23,191, 6, 32, 18, 64, 91, 0,153, 0,206, 1,216,210,202, 60,152,111, +122, 68,177,155, 45,143,202, 73,198, 83,167, 78,173, 24, 59,118, 44, 39, 56, 56,248,255,130,131,131,169,210,210, 82, 84, 85, 85, +129,162, 40,248,249,249,161,123,247,238,240,243,243, 51, 92,191,126,125,237,226,197,139,109,250,228,235,214,173, 91, 7,157, 78, +215,145,162,168, 14, 0, 58,176, 44,219,129, 16,210, 1,128,167, 81, 51, 38, 11, 9, 9,225, 12, 28, 56, 16, 3, 6, 12, 64, 66, + 66, 2,190,248,226,139, 61, 44,203,158,176,212,102, 53,228, 34,173, 65, 82,250,146,161,196,128, 4,150, 66, 84,183,223,216,196, +235,225,132,237,154,116,239,252, 96, 51,168,244, 61, 3, 78,105,233,168, 49, 99,198,156,164,105,186,157,181,137,203, 74,240,231, +140,130,130,130,167,154, 28,196, 74, 75, 71,189,254,250,235, 39,105,154,110,103,210, 84,233,245,122,181, 82,169,124, 37, 42, 42, +106, 27,151,203, 21, 88,226, 26, 12,134,187, 5, 5, 5, 15, 52, 86, 95, 67, 63, 90,163,198,140, 45,190, 95, 76, 9,143,234,120, +243,216,127, 81, 80, 88,140,207,147,242, 75, 43, 53, 76,212,205,162,234,107, 45,145,254,140,140,140,209,173,152,241,255,222,216, +150, 96, 83,207,236,148, 34, 59, 28,146, 22,217, 72, 31, 49,146, 45,167,116,242,252,252,252, 13, 75,151, 46, 29,185,118,237, 90, +159,227,199,143,203,140,239,192,248,241,227, 11,175, 93,187, 54, 24,128,160,182,182,246,212,218,181,107,125, 86,174, 92,233, 5, +192,203, 56,200, 20, 20, 20, 20,108,133, 75,154, 20,157, 78,151,221,189,107,152,169,238,234,185,116,176,188,215,235,245,217,142, +224, 89,195,177,252,204, 48, 76,182, 13,173,242,130, 1, 3, 6,208, 11, 22, 44, 40, 56,126,252,184, 41,144,110,141, 69, 59,187, +137, 38,156,146,218,217,151,212, 0,214, 27, 47,151,180,194,177,206,145,207, 15, 75,190,254,250,235,101,147, 38, 77,218,235,233, +233,249, 73,135, 14, 29,194, 20, 10,133,204,205,205, 13,106,181,186, 82,163,209,220,184,121,243,230, 11, 75,151, 46,253,203, 30, +172,189,123,247,210, 0,120, 6,131, 65, 72, 81,148, 24,128,140, 16,226, 97, 34, 90,132, 16,104,181, 90,100,100,100, 96,201,146, + 37,204,233,211,167,223, 3,240,142, 3,201,237, 7,192,199, 98, 28,247, 1,160, 65,157, 3,219, 34,163,102,179, 69,132, 24,144, +208, 53,137, 37,215,195, 73,163, 70,250, 54,131, 74, 55,210, 80,170, 1, 12,114,114,227,107, 10, 51,184,181,116,146, 23,213,235, + 63,195,142,245,245,226, 28,154, 72,152,213,207, 54, 54, 0,203, 85,250,185, 91, 78, 36,111, 80,235, 89,131, 86,111,120,233,102, + 97,117,202,255,240, 0,164,111,206, 51, 59,112,159,116, 82,250,136, 19,243,122,141, 16,242,248,220,185,115,151,137, 68,162,254, + 0, 80, 83, 83,243,107,110,110,238, 42,211,169, 66, 91,207, 93,210, 4,107, 46, 42,234,219, 26,241, 52, 26,205,235,143, 63,254, +248, 7, 12,195,108,212,233,116,231, 92, 53,229,146,214, 44,159,127,254,249, 95,166,121,249,249,231,159,167, 1,224,240,225,195, + 14,159, 6,158, 62,125, 58, 99, 12,100, 94, 11,160, 26, 64, 5,234, 28,110, 19, 0,168,174,174, 46,205,205,205,189,206, 48,204, +117, 0,159, 54,227,196,173, 15, 33,228, 59,150,101,159, 54,142,157,223,177, 44,251,180,229,119, 45, 45, 22,100,203,218,120,111, +219, 24,222, 37,117,114, 56,249,239,137,182, 33,129,178,245,185, 49,185,145, 95,149,120,191, 43, 88,151, 60,178,196, 50, 29,192, +139,205,125,238,146, 71,178,206, 51, 1, 60,235, 42, 9,151, 60,114,243, 95, 51, 8,150, 73, 82, 82, 82, 90,204, 68,224, 97,139, +229, 54,161,181, 45, 67,147, 88,211,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 83, 36,210,104,163,101, 38, 81, + 70, 91,173,134, 36,203,146, 92, 89,126, 38, 0, 70, 52,178, 42,115,228, 52,193,136,102,172,250, 78,185, 48, 93,152, 46, 76, 23, +166, 11,211,133,233,194,252,223,194,108,166, 68,219,216, 58, 60,214, 82, 68,203,100,252,158, 18, 78,150,119, 75, 98,151, 91, 51, +134,111,138,104,213, 51,246,116,246, 5, 96,132, 11,211,133,233,194,116, 97,186, 48, 93,152, 46, 76, 23,230,125, 94,195,222,122, +235,173,183, 81, 23,255,152,125,235,173,183,222,102, 89, 54,186,142,198,176,209, 45,249,238,228, 62, 24,154,242, 24, 88,211,149, +220, 7, 67, 27, 41,147, 88,211,101,249,189,107,235,208, 37, 46,113,137, 75, 92,226, 18,151,180,118,185, 16, 23, 23, 87, 19, 23, + 23,103, 50,124, 47, 2, 64,140,218,172,162,150,124,177,113,155,208,230, 65, 41,155, 33,120, 30,180, 16, 66, 2, 40, 14,111, 42, +151, 39, 24, 6,214,208, 29, 0, 64,209,201,140,166,246, 39,189, 94,251, 9,203,178,185,205,197,238, 74, 72,215, 78,114,183,111, +213, 12,195,203,170,212, 76,184,206,178,151,154,131,243, 60, 33, 17, 2, 62,255, 71,129, 92,110,213, 75,161,186,172, 76,165,214, +104, 70, 30,102,217,243,174, 62,224, 18,151,184,196, 37, 46,121, 20,132, 16, 34,246,240,240, 56, 77, 81, 84,176,197,119,176,118, + 15, 0, 12,195,228, 41,149,202,145, 44,203, 22, 63, 72,204, 6,162, 1,112,169, 53,148,159,163, 91,135, 28,160, 94,108, 33,155, + 17,179,187,248, 75, 6,135,117, 8, 62,144,155, 95,144, 84, 81,171,137,185,145, 83,169,116, 52,145, 28,158,112,150,220,219,111, +205,191,103,188,238, 21,218, 57,140, 4, 5,181, 1, 88, 32, 51, 43, 91,145,118,251,214,240, 67,251,182,188,193, 19, 10,151,104, +107,107,255,235, 48,243, 36, 68, 28, 44, 17,156,251,239, 91, 83,228, 28,232, 49,121,245,129, 31,186, 17, 18,148, 82,231, 90,194, + 33,146, 37,247,242, 58, 17,119,234,148,155,135,209, 1,168, 5,107,173,139,175,247,231,159,110,255, 55,114,228,137,231, 9, 25, +229, 34, 91,255,200,193,200, 79, 38,147,205,227,114,185, 81, 90,173, 54,152,207,231,103, 49, 12,147, 88, 90, 90,186,153,101,217, + 28, 87, 9,185,196, 37, 54,251, 80,163,129,204, 31,102,144,115, 0,144, 74,165,191, 81, 20, 21,104, 73, 2, 76,254, 29, 27,250, +137,180,240, 23,249, 87, 73, 73,201,227, 77,228,183,131,167,167,231, 54, 0,253,108, 57, 76, 54,110, 53, 93, 86, 42,149,175, 24, + 79, 31, 91,195,147,122,120,120,172, 32,132, 60, 79, 81,148,205,128,194, 6,131,129, 97, 89,246,112,105,105,233, 59, 44,203, 86, + 54,246, 59, 15, 15,143, 83,169,169,169,253,124,125,125,109,106,105,244,122, 61, 50, 51, 51,125,250,247,239,255, 51,128, 46, 45, +137,233, 8, 23,121,152,210,212,201, 67,171,156,199,116, 99,111,196,108,131, 1, 83,119,175,121,165, 77,222,221,219,109,102,175, +253,172,115, 23,111, 81, 84,106,113, 77,190,189, 47,228,187, 73,191,141,124,226,233, 97,115, 94, 91, 32,254,253,218, 13,252,152, +240, 11, 42,170,213,160, 41, 10,114,169, 8,157, 59,119, 36,155,226,143,120,239,217,190,105,163,155, 68, 30,173,170, 42,251,151, + 35, 25, 18,139, 56, 75, 22,141,235, 47,246,242,100, 0, 3,131, 55,199,244, 22,255,223,119, 73, 75, 0,188,237, 48,201, 58,125, + 90, 84, 88, 80,128,149, 1, 1,224,232,245, 16, 82, 20,132,132, 64, 72, 81, 16, 11,133, 24,189,107, 23, 86, 29, 63, 46, 90,246, +212, 83, 46,178,245, 15, 19,169, 84, 58,163,115,231,206,235,119,238,220,233,213,190,125,123,136,197, 98, 40,149, 74,239,155, 55, +111, 62, 54,127,254,252, 23,221,221,221,151,150,151,151,239,112,149,148, 75, 92,210, 40,233,120, 12,128,213, 32,241, 77, 61,123, + 80, 66, 81, 84, 96, 78, 78,142,175, 72, 36, 2,195, 48,198,104, 0, 6,243, 66,218, 50, 82,142,209, 81, 45,186,116,233,162,181, + 49,110,124, 84, 88, 88, 56,194, 50, 20, 90, 83, 17,119,114,114,114, 70,116,235,214,237, 35, 0, 35, 27, 33, 47, 43, 94,123,237, +181,121, 61,122,244, 48,105,129,140, 81, 16,234,254, 22, 23, 23, 99,238,220,185,230,119, 24, 12, 6,156, 60,121,242,181, 25, 51, +102, 0,192,252, 38,242, 30,236,235,235, 75,102,207,110,218, 71,209,242,229,203,177,124,249,114,108,217,178,133,112,185, 92,185, +141,242,116, 10,166,189, 92,228, 97,104,176, 26,122,136,111,240,179, 99, 13,226, 29, 30,187,135,104,217,221, 56, 89,195,247,171, + 55,239,140, 89, 57, 61,146,236,158, 63, 34,244,229, 45,167,126,233, 22,224, 54, 36, 37, 87,149,101,135, 38,235,165,129, 67,158, +138,154, 59,111,145,248,179,175,207,224,230,245, 63,145,122,238, 96,189,223,244, 29, 57, 3,249,197,149,152, 49,231, 77, 9,161, + 57, 81, 60,161,232, 37,109,109,205,110, 59,181, 89,138,110,158,162,255, 55,176,127,119,110,142,219, 77,248,121,184, 33,178, 79, + 39,110,208,137,171,255,175, 27, 33, 31,164,176,172,205, 88,133, 13, 73,214,206, 41, 83, 48, 88,167,131, 47, 77,131, 38, 4, 52, + 0,138, 16,212,170,213,184, 60,117, 42,250,239,223,143,119,142, 30, 21,173,120,230, 25,135,201,150, 72, 36,218,163, 82,169,214, + 53,195,113,219,195, 28, 60, 59, 75,165,210, 37, 21, 21, 21, 83, 91, 81,154,252, 1, 20, 89,137,143,200, 3, 32,103, 89,214,161, +200,194, 66,161,112,214,228,201,147, 55,109,221,186, 85, 84, 80, 80,128,220,220, 92, 48, 12, 3,161, 80,136,208,208, 80,114,234, +212, 41,175, 69,139, 22,109,144,201,100,130,138,138,138, 15, 28, 72, 39,197,229,114,167,123,122,122,142, 85, 40, 20,190, 69, 69, + 69, 69,165,165,165, 71,213,106,245,238,230,174,236,141,152, 47,132,132,132,140, 13, 8, 8, 80,228,228,228, 20,103,103,103,127, +171, 86,171,247,176, 44,107,184,207, 50,237, 5,163,183,122, 0,121, 33, 33, 33,201,119,238,220, 41,116, 34,102,110, 72, 72, 72, +138,163,152,132, 16, 49,128, 67, 0, 2,108,252, 52, 23,192, 68,214, 65,109,182, 75,156, 71,178,140, 33,173,234, 17,170,166,158, + 61,104,113,115,115,195,193,131, 7,193,229,114,193,229,114, 81, 90, 90,138,192,192, 64,243,103, 30,143,103,190,111,219,182,173, + 77, 60,134, 97,250,211, 52,141,170,170, 42, 48, 12, 99,190,202,202,202,192,178, 44, 4, 2, 1, 24,166, 46,156,147,197,243,254, + 77,148,227,243, 1, 1, 1,248,236,179,207,160,209,104,238,121, 46,147,201,112,237,218,223, 65, 70,104,154,198,128, 1, 3, 40, + 66,200,243, 77, 17, 45, 66,234,156,110,198,198,198,130,166,105,115, 72, 61,211,189,233, 98, 24, 6,203,151, 47,135,101,104,178, + 7,137,217,234,218,117, 19, 30,226, 89,150,205, 3, 96,213, 70,139,106, 10,180,139,159,228,149, 55,166, 60, 89,179, 52, 38,154, +253,191, 23, 71,178,139,167, 68,177, 79, 13,233,249, 53,205,225,144,139, 41,153, 8,116, 7,246,204,237, 23, 28,228, 45,190,214, +195, 75,218,217,138,106,212, 50,160,116,128, 72, 44,123,247,149,215,223,148, 28,251,249, 42, 50,179, 50,239, 33, 89, 0,240,219, +143,123,144,151,155,131,164,212,108,188,240,210,171, 18,153, 76,254, 46, 33, 36,192, 26,102, 67,113,151,242,222,123,107, 98,164, +176, 74,151,139, 74, 15,128,238,192, 7, 87, 84,141, 69, 79,247, 18,200,164,188,245, 77,168,112,205,152, 2, 62,255,199,184, 83, +167,204, 36, 43, 66,173,134,128, 97,160,103, 24, 51,201,210,232,245, 80,105, 52,240,175,170, 66,218,140, 25, 96,117, 58, 44,253, +234, 43,145,128,207,255,209,158,116, 90,172, 0,198,200,100,178, 4, 66, 72,103,123, 42,185, 37,142,204, 58,232,198,163,179, 84, + 42, 77, 32,132, 60,213, 26,210, 73, 8,161, 8, 33,171, 99, 98, 98,174,116,236,216,241,140,145, 88,153,158,113, 58,118,236,120, + 42, 38, 38,230,119, 66,200,114, 66, 8,101, 39,102,155,128,128,128, 53, 91,183,110, 21,221,186,117, 11, 57, 57, 57,208,233,116, +152, 60,121, 50, 24,134,129, 74,165,130, 70,163,193,186,117,235,196, 94, 94, 94, 75, 8, 33,193,246,228,157, 16, 66,187,187,187, +239,221,183,111, 95,236,157, 59,119,252,126,250,233, 39,234,234,213,171,138,141, 27, 55,206,240,242,242,218,111, 12,184,234, 80, +121, 18, 66, 40,127,127,255,221,223,124,243,205, 43,215,174, 93, 11,252,242,203, 47,185,191,254,250,171,255,246,237,219,103,250, +251,251,239, 39,132,208,205,169, 35, 66,200, 99, 34,145,104,248,194,133, 11, 13, 23, 46, 92,200,185,112,225, 66,206,166, 77,155, + 48,120,240,224,136, 85,171, 86,133, 55, 19,179,143, 84, 42,125, 98,225,194,133,134,179,103,207,230, 94,188,120, 49,123,195,134, + 13,212, 19, 79, 60, 17,185,118,237,218, 94, 14, 98, 30,186,112,225,194,208,172,172,172,246,217,217,217,237,178,179,179, 67,178, +179,179, 67,114,114,114,130,243,242,242,218,230,231,231, 7, 21, 22, 22, 6, 37, 38, 38, 70, 2, 56,208,218,250,209, 63, 29,211, +216,150,147, 88,150,133, 82,169,196,177, 99,199, 96,212, 94, 61,102, 73,178, 42, 42, 42,144,151,151,103,122,198,121, 8,233, 4, +195, 48,102, 34,117,242,228, 73,196,196,196, 64,169, 84,154,191,227,112, 56,230,123,211,255,216,194, 52,105,158, 24,134,193,197, +139, 23, 49,123,246,108,108,218,180, 9, 7, 14, 28,192,119,223,125, 7,165, 82,105, 38, 91,122,189,222, 38,102,113,113, 49, 12, + 6,131,189,121, 68,121,121,185,221,245,110, 73,128, 56, 28,206, 61,164,200,116, 57,210,150,238, 7,179, 53, 75, 99, 30,225,237, + 17,115,227, 54,170,234,162, 44, 31,134,133,248, 45, 89, 63,239,121, 55, 48, 90,176, 58, 21,160,173, 1,180, 85, 48,104,106, 64, +120,110,128, 78, 5, 31,129, 18,135,230,132,201, 22,127,150,126,189,171,143, 44,250,122, 81,197, 15, 86, 73, 5,135,247,194,243, +211, 95,243,202, 46,172, 64, 78, 65, 57,104,234,239,121, 47,124,196,116,112,104, 10,151, 78,212, 41,174, 40,154, 70,121,181, 26, +101, 85, 90, 76,152, 62,207,243,191,155,254,243, 2,128,117, 77,101,164, 39, 33,161,131, 2, 60,199,117,235,214,150,186, 46, 72, + 69,248, 83,231,192, 24, 0,246,236, 51,120,172,212,151,238,242, 35,127, 92, 79, 66,214, 92,101,217, 91, 77,225, 8,228,114, 55, +143, 94,189,176, 50, 32, 0, 67,116, 58,240, 88, 22, 79, 22, 20,224,207,121,243,160, 62,114, 4, 20, 0,222,115,207, 97,216,230, +205,248, 57, 32, 0,126, 42, 21,202,222,120, 3, 62, 63,252, 0,158, 76,230,230, 72,225,243,120, 60,237,206,157, 59, 3,102,206, +156,153, 64, 8,137,106,205,154, 45, 66, 72,103, 79, 79,207,132,119,223,125, 87,177,108,217,178, 60, 39, 97, 42,196, 98,241,225, +234,234,234,121,142,174,104,141,196,105,245,142, 29, 59, 94,142,141,141,149,207,156, 57,147, 77, 75, 75,147, 3, 48,105, 71,124, + 6, 15, 30,220,113,231,206,157,126,253,250,245,123,109,246,236,217, 60, 66,200, 82, 91, 90, 30,137, 68, 50,103,231,206,157,222, +197,197,197,168,170,170, 50, 15,178,217,217,217,112,115,115, 51, 7, 85,231,114,185,120,247,221,119,189,230,204,153, 51, 15,192, + 60, 91,233, 21, 8, 4,211,183,109,219,214,105,212,168, 81,156,140,140, 12, 80, 20, 5,129, 64,128, 41, 83,166,112,107,106,106, +130, 87,174, 92, 25, 11, 96,155, 35,101,192,229,114, 95,136,143,143,239, 28, 17, 17,193, 73, 77, 77,197,160, 65,131,112,233,210, + 37, 60,247,220,115,220,202,202,202,118,139, 22, 45,138,105,108,133,213,148,214, 73, 36, 18,245,248,233,167,159,178,130,130,130, +204, 3, 75,187,118,237,152,232,232,104,101,106,106,106,216, 47,191,252, 82, 50,104,208,160, 76, 7, 48,219,136, 68,162, 46,223, +127,255,125,222,202,149, 43,135,239,216,177,227, 89, 0,232,223,191,255,183,171, 86,173, 58,163, 84, 42,187,159, 61,123, 86, 57, +120,240,224,108, 59, 33, 3,252,253,253,153,185,115,231, 74,154,250,209,174, 93,187,202, 0,180, 37,132,180, 55, 6,218,118,201, + 3, 16,150,101,245,132,144,112, 66, 72,210,177, 99,199, 48, 96,192, 0, 28, 59,118, 12,209,209,209, 73,150,100,224,218,181,107, + 24, 50,100, 8, 80, 23, 72,254,161,216,106, 49, 12, 3, 14,135,131,236,236,108,236,218,181, 11,107,215,174, 69,104,104, 40,116, + 58,221, 61,100,203, 72,136,236, 82,193,232,245,122, 92,190,124, 25,159,236,223,143,165, 75,150, 64, 42,149, 2, 0,180, 90, 45, +148,165,165, 16, 10,133,102, 50,102,163, 44, 15,223,190,125,123, 94, 96, 96, 96,189, 45, 67,211, 95,227,152, 5,131,193, 0,189, + 94,143,218,218, 90,108,218,180, 73,207,178,236, 97, 27,125,210, 76,138,230,205,155, 7,181,250,239, 56,228,189,140, 54,201, 33, + 33, 33,232,221,187,183,249, 51, 69, 81,172,189,152,255,125,188, 7, 84, 22,191, 14, 91,190, 1, 0, 16, 24, 24,136,176,176, 48, +248,251,251, 55,138,105,141,139, 60,108,105,104,147,213, 44, 27,173,198, 34,101, 95,191,147,191,110,230,162, 13, 27,196, 66,154, +251,250,216,158,104, 43,231, 1,110,158,224, 13, 89, 12, 34,175, 91,200,179,202,191,128, 31, 23, 99,227, 56, 37, 21,251,105,237, +215, 29, 61, 61,125,210,148,202,123,140,240,184, 60,225,176, 14,157, 58,147,204, 60, 37, 56, 28, 14,196,238,222,120,124,236,124, +208, 52, 5,137,220, 27,132, 81,253,205,136, 41, 26, 28,154, 3,101,165, 10, 33,237, 59, 81, 2,161,219, 48, 91, 68, 75,230,206, +221,182,112,210,227,194, 18,125, 54,220,218, 10,193,152,166,211, 0, 62, 40,175, 74, 44, 24, 29,234, 22,251,237,213,109, 0,158, +176,167, 96,104,189, 30,190, 52, 13, 45,203,226,207,121,243, 16, 30, 31,143, 36, 19, 49,140,143, 71, 82,108, 44, 60,185, 92, 8, + 40, 10,172, 78,119,207,158,190,157, 19, 16,198,142, 29,139,226,226, 98,197,146, 37, 75,154, 77,182,220,220,220, 62, 33,132,140, +225,114,185, 90, 66, 8, 40,138, 50, 7, 1, 55,221,107,181, 90, 30, 77,211,223, 23, 23, 23, 59,188,229, 71, 8,233,236,225,225, +145,112,225,194, 5,133, 88, 44,198,242,229,203,157, 66,178,164, 82,233,175, 49, 49, 49,109, 63,249,228,147, 31, 8, 33,163,237, + 37, 91, 13, 73, 86,124,124,124,217,174, 93,187,254,107,185, 69,200,178,108, 30, 33,100,119,191,126,253, 94,137,141,141,149, 3, +120,121,246,236,217,176, 69,182, 4, 2, 65, 84,135, 14, 29,234,173,106, 5, 2, 1, 0, 64, 44, 22,195,221,221, 29, 60, 30, 15, +106,181, 26,225,225,225,132,207,231, 71,218,147,102,169, 84, 58,102,220,184,113,156,243,231,207, 35, 63, 63, 31,238,238,238, 16, +139,197, 96, 24, 6,179,102,205,226,109,222,188,249, 41, 71,137, 86, 80, 80,208,179,195,135, 15,231, 36, 39, 39,227,206,157, 59, + 80,171,213,184,121,243, 38,100, 50, 25,166, 77,155,198, 91,191,126,253, 51,142, 18, 45, 0, 61, 98, 99, 99, 11, 44, 73,150, 73, +196, 98, 49,233,220,185,179,210,203,203,171, 15,128, 76, 71, 48, 95,125,245,213,194,184,184,184, 33,167, 78,157, 90,108,250,242, +212,169, 83,139, 0,224,131, 15, 62, 56,235,227,227,211, 7,128,189, 68, 11, 44,203, 26,254,253,239,127,223,229,243,249,224,114, +185,224,243,249,245, 46, 30,143, 7,138,162,164,166,238,252, 79, 37, 53,132,144,126, 0,222, 71,221,137,172, 37, 44,203, 94,108, + 37,100,235,119, 66, 72,120,116,116,180,153,108, 29, 63,126, 28,163, 71,143, 70, 89, 89, 25,146,147,147, 45, 73,214,195,178,209, +130,193, 96, 0,151,203,197,134, 13, 27,160,213,106,241,233,167,159,226,139, 47,190,168, 55,134,202,100, 50,108,217,178,197,161, +109, 46,134, 97,176,119,239, 94, 44, 94,180,200, 76,178,140,139,107,248, 41, 20,240,242,246, 70,122,122,186, 77,162, 85, 90, 90, +250,206,209,163, 71,209,148, 49,252,209,163, 71,205,247,150,198,240,118,205,115, 52, 13,181, 90,141, 39,159,252, 59, 84,236,171, +175,190,106,190, 87, 42,149,160,105,218, 84, 22,196, 94, 76, 21, 11,140, 21,254,253,221,152, 5, 11,234,105,232, 26,195,108,140, +139,180, 70,237,150,149, 83,135,225, 44,203, 38, 25, 77, 36,162, 1, 28, 51,110, 39, 54,109,163,117,171,176,122, 43,135,228,245, +142,155, 59,114,122, 91, 95,119,176, 85, 5,224, 61,241, 14,254, 40,114,195,134, 77,223, 3, 0,222,156,210, 23,189, 70,172,134, +102,207, 72,204, 27, 68,243,167,102,171, 23, 2, 88,118,111,199, 51,116, 9,108, 19,128, 63,210,174,129, 67,211,224,187,123,195, +221, 83, 1,131, 94,131,242,194, 59, 72,248,242, 35, 0,192,142,189,135, 65, 81, 20, 56, 28, 26,106, 13,131,208,182, 1, 48, 24, + 12, 93,154, 74,103, 55, 66, 30, 31,223,217,127, 64, 80,176,156, 36,123,220, 65,103, 95,175,250, 63,120, 76,128,208, 92, 9, 25, + 36,113,235,223,141,144,199, 83, 88,246,130, 77, 13, 4, 69,129, 34, 4, 34, 30, 15,234, 35, 71,144,100, 36, 88, 0,144, 20, 27, + 11,234,235,175, 33, 21, 8, 64, 19, 2,142, 81, 5,221,156,142, 14, 0, 97, 97, 97,216,177, 99,135, 98,206,156, 57,205, 34, 91, +181,181,181,107,100, 50,217,240,221,187,119, 43,198,141, 27,119,207,243,180,180, 52, 12, 25, 50,164, 32, 63, 63,127,205,253,144, + 44,185, 92,142,172,172,172,251,222, 87, 55,145,172,147, 39, 79, 6, 7, 6, 6, 34, 60, 60,220,231,205, 55,223,116,132,108, 45, +179, 36, 89,179,103,207,190, 10,192,151, 16,210,144,168, 16,227,179,158, 22,100,171, 28,192,250, 38, 86,162,193, 98,177, 24,133, +133,133,152, 62,125, 58,110,221,250, 91, 1, 26, 16, 16, 96, 94,233,165,167,167,195,199,199, 7,132, 16, 95,123,242,236,227,227, +163,208,104, 52,120,233,165,151,144,149,245,183, 57, 99,155, 54,109, 76,101,234,237,104, 57, 42, 20, 10,133, 74,165,194,224,193, +131, 81, 91, 91, 11, 0,152, 56,113, 34,184, 92, 46, 10, 11, 11,193,229,114,189,155, 81, 61,222,209,209,209,141,186, 86,145,201, +100, 90, 15, 15,143,174, 14, 98,122, 61,243,204, 51, 57,241,241,241,247, 28,108,185,116,233,210,191, 60, 61, 61, 79,121,122,122, +118,118, 16,211, 96, 73,170,120, 60, 94, 61,162,197,229,114, 65, 81,148, 1,255,124,121, 15,128,233, 20,220,199, 0,122,183, 34, +205,150,153,108, 29, 63,126, 28,221,187,119, 71,105,105, 41, 82, 83, 83, 31, 58,201,178, 32, 38,224,112, 56,230, 69,178, 80, 40, + 68,120,120,184,153,100, 17, 66, 80, 83, 83, 3, 14,135, 99, 26,175,237, 26,252,202,202,202,224,239,231, 7,169, 84,138, 78,161, +161,184,109, 28, 71, 76,247, 2,129, 0,132, 16,232,245,122, 91,101, 88,137, 58, 91,171,249,206,174, 30, 19, 41,106, 82,117, 28, + 16, 0,131,193, 96, 26,243, 89,103, 96,122,123,123,163,170,170,202, 94,204, 86, 41,141,104,180,194, 1, 36, 1,136,102, 89, 54, +222,104, 24, 95,207,189,195, 80, 0, 9,176, 56, 82, 73, 8,161,186, 42, 36,187,226,230, 12,159, 62,178,187, 55, 84, 69,119, 32, +148,122,131,200, 67,176, 97,211,247, 72,254,171, 4, 0,176,225,192,111,248,108,229, 24,192,205, 19, 97,238,197,240,147,114,198, + 89, 35, 90, 4, 44, 49,176, 44, 56, 52,101,220,187,165, 65,211, 20,148, 69,121,216,252,206,203, 70,146,245, 5,142,157, 77, 69, + 96,135,238,127,239,227, 18, 2,176, 77, 55,110, 31,119, 94,252,156,241, 3,221, 10, 72, 30,228, 1, 34, 8,133, 13,248,163, 7, + 15, 36,132,194,220,168, 64,209,229,163,181,241, 0,108, 78, 20, 66,138,170, 51,126, 39,196,170, 33, 27,101,124, 70, 19, 82,231, +253,213,224,248,152,110, 34, 44, 18,137, 4, 10,133, 2,107,215,174, 85,188,245,214, 91,159,194,193, 0,212, 44,203,222, 36,132, + 68,205,154, 53, 43,161,164,164, 68, 17, 22, 22, 6,137, 68, 2,137, 68,130,130,130, 2, 76,152, 48,161, 32, 63, 63,191,185,218, +178,253, 49, 49, 49, 10, 30,143,135,180,180, 52,120,122,122,154, 9, 98,115, 73,150, 76, 38,251,245,212,169, 83,193, 29, 59,118, +196,141, 27, 55,208,181,107, 87, 28, 58,116,200,103,242,228,201,118,145, 45, 55, 55,183,177, 70,226,132,216,216, 88,121,108,108, +236, 80, 0, 67,109,189, 59, 54, 54, 86, 62,127,254,252,103,154, 34, 90, 92, 46, 55, 75,169, 84,250,185,185,185,225,203, 47,191, +132, 68, 34,129, 72, 36, 66, 64, 64, 0,148, 74, 37, 68, 34, 17, 88,150,133, 78,167, 51, 13, 22, 37,246,228,187,168,168,168,128, + 97,152,160, 31,126,248, 1, 69, 69,127,251,214, 11, 14, 14, 70,121,121, 57, 24,134, 41,118,180, 44,115,115,115, 11, 8, 33, 65, +127,252,241, 7, 50, 50, 50, 48,122,244,104,124,253,245,215,232,219,183, 47, 0, 64,163,209, 52,199,137, 31, 67,211, 52,219, 68, +253, 17, 0, 30,206,196, 52, 78, 94, 14, 97, 26, 12, 6,131,137,100, 89,254,181, 36, 95, 54,222,249, 79, 17,119,203,117, 66,107, + 77,228,232,209,163,161, 84, 42, 33,145, 72, 90,149,125,142, 73,163,181, 98,197, 10,188,252,242,203, 80, 40, 20, 88,188,120, 49, + 56, 28,142,249,178,220, 25,112, 68,124, 21,138, 38,159,155, 12,226,109,140,151, 82,119,119,247, 21, 20, 69, 61, 79,219, 81,112, + 12,195, 48, 6,131,225,112,121,121,121,147,238, 29, 76,134,235,246,212,133,101, 25,216, 72,235,125, 99, 90,227, 34,173, 65, 26, +158, 54,180,166,209,194,223,167, 14,239, 9, 5,100,202,101,130, 81,101,151, 96, 73,178,222,125,121,216,244,145,221, 61,240,237, +233,139,224,105,203, 0, 77,101, 19, 53,172, 3,225,137,161,112,231, 6, 90,173, 4,138,190,145,157,147, 11, 47, 15,137,145,100, + 25, 47,138, 66,175,238,117,139,217, 99,103, 83, 17,216,190, 59, 56, 52, 13, 14, 77, 67,226, 38, 64, 65,126, 30, 56, 28,234, 70, + 99,175,237,201, 33,227,199,119, 14, 10,241,240,226,162,216, 71, 3,127,133,200,250, 15,251, 72, 17,232,207,199, 40, 47, 97,112, + 79, 14, 25,111,131,184,152,137,150, 86,175, 7,239,185,231,204,219,133, 73,177,177, 8,143,143, 7,243,236,179,168,214,106,235, +169,138, 29, 21, 83,131, 52, 17,162,101,203,150, 21,148,148,148,188,208,204,213,227,205,210,210,210,168, 37, 75,150, 20, 20, 23, + 23, 67, 36, 18, 33, 47, 47,239,190, 72, 22, 0,168, 84,170,105,241,241,241, 5, 9, 9, 9,144, 72, 36,144, 74,165,205, 38, 90, + 38, 77,214, 59,239,188,211, 54, 40, 40, 8,233,233,233,112,119,119,135,151,151, 23,122,245,234,133,243,231,207,251, 4, 5, 5, +253, 96, 52,152,109, 42, 77,223,196,199,199,151, 1, 64,124,124,124, 25, 33, 36,145, 16,178,157, 16,242,113,131,107, 59, 33, 36, +209,242,183, 42,149,234,171,166,176, 53, 26, 77, 98,106,106, 42, 43, 18,137, 64,211, 52,180, 90, 45,132, 66,161,185,190, 42, 42, + 42,160, 82,213,109,115, 95,185,114, 5, 58,157,238,156, 61,121,175,172,172, 60,190,103,207, 30, 93, 80, 80, 16,122,246,236,137, + 62,125,250, 96,208,160, 65, 8, 14, 14,198,138, 21, 43, 52,213,213,213,199,155, 65,180,142, 29, 58,116, 72, 23, 20, 20,132, 62, +125,250, 64, 32, 16,160, 87,175, 94, 8, 8, 8,192,218,181,107, 53,229,229,229,199,155, 81, 77,153,215,174, 93,163,155, 32,185, + 50, 0, 5, 14, 98,102, 93,190,124,153, 30, 56,112,224,183, 13, 31,244,239,223,255, 91,137, 68,226, 14,192, 81,187, 63,214,146, + 92, 9, 4, 2,243,101,250,158,195,225,252, 47,104,180,230, 1,184, 10, 32, 29,192,226,214,148, 48, 75,195,247,146,146, 18,164, +166,166,226,202,149, 43, 24, 56,112, 32,206,157, 59, 7, 24, 13,228, 31, 98,250,192,178, 44,184, 92, 46,194,194,194, 48,127,254, +124,124,255,253,247,184,121,243, 38,116, 58,157,153, 8,153,108, 50, 29,209,104,241,120, 60, 40, 20, 10,232,116, 58,179, 54, 11, + 0,110,223,186, 5, 14,135, 3,131,193, 0,141, 70, 99, 83,163,229,238,238,190, 98,231,206,157,175, 21, 23, 23,251, 23, 21, 21, +249, 90, 94, 5, 5, 5,190,121,121,121,190, 57, 57, 57,190, 89, 89, 89,190,119,239,222,245,189,115,231,142,255,186,117,235, 94, +115,119,119, 95, 97,239, 28,212,171, 87, 47,188,250,234,171,230,107,235,214,173,230, 43, 33, 33,193, 97,227,117,154,166, 17,182, +124, 3,198, 20,177,230,235,123, 31, 98,190,146,223,156,221, 20,102, 61, 46,210,106,218,178,241,180,161,101, 96,105, 43,115,112, + 30,203,178,241,166,237, 66, 75,231,165, 13,141,225, 1, 0, 93,252, 68,171,223,157, 53,100,250,147, 93,221,241,205,233,223,176, +242,171,191,110,132, 78,247, 9,235,232, 81, 4, 67, 81, 42,222,156,210, 23, 27, 14,252, 6,160,110,235,208, 80,152, 12,182, 52, + 29,172, 52, 8,119,148,197, 86,183, 29,244,154,218, 51,127,165,221, 26, 22,214,163, 31,149, 95, 92, 85,239,248,103,120,212, 4, + 16, 66,208,166,125,119,208, 28, 14,104,154, 2,135,166, 33,151, 9,145,250,199, 31, 6,181, 74,117,198, 26,102, 20, 33, 28, 63, + 9,127,235,148, 81,189,132,185,252, 66,248,248,139,193,227,214,145, 0,246,175, 9, 13,102, 8, 14,208, 67,138, 25, 57, 94,110, +103, 10,106,183, 70, 17,242,109, 66, 35, 6,152, 6,131, 1, 18,129, 0,181,106, 53, 84,122, 61,162, 54,111, 54,111, 23, 82,132, +224,119, 0, 61, 55,111,198,133, 35, 71, 32,227,243, 1,129,192,238, 83, 33,214, 52, 90, 5, 5, 5,152, 56,113,226,125, 17, 34, + 75,205,214,156, 57,115, 18,214,174, 93,171, 88,182,108,153,211, 48, 23, 47, 94,156,112,224,192, 1, 69,187,118,237,154,221, 88, + 37, 18,201, 34,131,193, 32, 95,191,126,125,254,198,141, 27,209,208,158,204, 72,116, 4,114,185,124, 3,128, 97, 77, 64,173,156, + 61,123, 54, 15,192,203, 70,205, 86,207,217,179,103, 95, 96, 89,118,105,131,242, 93,190, 99,199,142,137, 22, 91,140,219, 1,108, +110, 42,141, 21, 21, 21, 31,207,159, 63,255,165,159,127,254,217, 91, 40, 20,130, 16, 2, 30,143,135, 78,157, 58,153, 79,209,112, +185, 92,176, 44,139, 5, 11, 22, 20, 23, 22, 22,218,229,222, 65,173, 86,239, 93,185,114,229, 48,149, 74, 21, 60, 99,198, 12,158, +135,135, 7, 10, 10, 10,240,254,251,239,107,246,238,221,155, 85, 93, 93,237,168, 45, 21,116, 58,221,222,255,252,231, 63, 81, 85, + 85, 85,237,103,206,156,201, 43, 47, 47,135, 74,165,194,194,133, 11, 53,187,119,239,206, 86,169, 84, 14, 59,252, 29, 52,104, 80, +218,221,187,119, 35,107,106,106, 74, 69, 34, 81, 67,109, 31, 17,139,197,253, 0,236,119, 4, 51, 60, 60, 60, 61, 51, 51,115,224, +234,213,171, 19,117, 58, 29,247,210,165, 75,102, 99,248, 15, 63,252, 48, 65, 40, 20, 14,135,227, 70,251, 6,129, 64, 80, 79,131, +213,240,158,195,225,252,227, 53, 90, 44,203, 38,160,206,101, 70,171,146,134, 36, 43, 57, 57, 25,195,134,213,117,233,115,231,206, + 33, 34, 34, 2,231,206,157, 67,100,100,228, 67,117,239, 96, 34, 90, 28, 14, 7,147, 39, 79,198,136, 17, 35,208,182,109,219,122, +167, 13, 77,247,142,144, 13,189, 94,143, 30, 61,122, 64,173,209,128,199,227,153,183, 38, 57, 28, 14,124,124,125,145,150,150,102, +151, 70,139,162,168,231,199,142, 29, 75,165,164,164, 96,210,164, 73,248,228,147, 79, 26,253,237,212,169, 83,113,240,224, 65,140, + 29, 59,150,122,251,237,183,155,116,239, 96, 50, 66,183, 39, 79,166,121,218,150, 70,207, 89,152,150, 92,164,181,137,133,107, 7, +107,109, 62,214, 74,251,138,175, 71,180, 44,156,132,161,189,143,104,198,136, 78, 28,124,115,230, 55,172,252, 38,115, 47,195,178, + 95,126,153, 84,250,221,226, 8, 64,123,120, 10,122, 77,216, 95,183, 93, 8,192, 80,152, 12,237,225,169, 32, 34,111,156,205,225, +162, 92,165, 61,102,189,225,105, 63,249,250,211,143,230, 15,220, 22,233,227,239,235, 14,101,185,202, 76,182,146, 18,190, 0, 0, +140,159,189, 6, 28,186,110, 75, 81, 38, 17,194,141, 71,227,200,190, 15,138,181,218, 90,171,173,171,146, 75,189,252,246,227,157, +220,249, 98, 29, 42,252, 88,116,247,249,251,208, 31,105,255,197,189,132,235, 49, 15,120, 39,151, 98, 74, 71,137,236,131,148,178, +151, 1,108,189,103, 66, 44, 43, 83,149,253,241,135,219,232,157, 59,113,105,218, 52,180, 97, 24, 36, 6, 4,192,147,203,133,187, + 64, 0,138, 16,168,190,251, 14, 23,190,252, 18, 10,129, 0,144, 74,161, 95,181, 10,234,212, 84,232, 42, 43, 85,142, 18,173,219, +183,111,223,183,214,201, 26, 49,122,235,173,183, 62, 45, 41, 41,121,193,153,152,211,166, 77, 75, 56,125,250,180,162,185, 56,149, +149,149,111, 0,120,195, 9,233, 49, 16, 66,150, 26, 29,227,189, 28, 27, 27, 43,191,124,249,242, 75,132,144,109,166,213, 4, 33, +196, 55, 38, 38,102, 86, 3,146,101,243,212, 33,203,178,153, 18,137,100,213, 27,111,188,177,102,227,198,141, 18,147,225,251,159, +127,254, 9,189, 94, 15, 46,151, 11,134, 97, 16, 19, 19, 83, 85, 82, 82,178,161, 49,143,206, 86,112,245,132,144,169,107,214,172, +137,249,224,131, 15,158,166,105,218,135, 97,152, 34,149, 74,245,131, 74,165,138,111,206,169, 43, 99, 57,188,184,108,217,178, 23, + 55,109,218, 52,150,162, 40, 95,189, 94, 95, 92, 89, 89,121, 84,165, 82, 53,203, 55,215,133, 11, 23,138,182,109,219,246, 87, 81, + 81, 81,151,192,192,192,114,137, 68,162,209,104, 52,180,155,155,155, 76, 44, 22,135, 3,248, 5,192,117, 71, 48,175, 92,185,146, +191,125,251,246, 12,181, 90, 29,182,125,251,246,179, 50,153,236, 52, 33,132,240,120, 60, 15, 55, 55,183, 97, 0, 18, 1,220,118, + 4,147,162, 40,131,165,246,170,161,125, 22,159,207,255, 95,177,209,106,117, 98,233,222,161,184,184, 24, 41, 41, 41, 38,146, 21, + 14, 0,145,145,145, 73, 38,178,117,229,202, 21,244,233,211, 39,137, 16,194,125,208, 39, 15, 45, 53, 90, 38, 66,213,182,109, 91, +243,103,203,203,194, 70,203, 46, 97, 24, 6, 60, 30, 15, 28, 14, 7,254, 1, 1,230,119,177, 44,139,180,180, 52, 40,149, 74,187, +136, 22, 77,211, 52, 33, 4,147, 38, 77,178,235,189,255,254,247,191,145,152,152, 8,218, 78, 86, 72,211, 52, 66, 66, 66,236,218, +121,129,157,246, 84, 52, 77, 35, 48, 48,176,217,152,150, 92,164, 53, 17, 44,107,247,214, 72,149, 53,177,106, 12,159, 94,168, 90, + 61,245,253,243,111, 95,207,175,253, 50,181,160,102, 62, 0,246,112,178,232,199, 94, 62,244,200,145,157,179,161,142,143, 4,145, +213, 57,111, 99,171,242, 64,196, 10,100, 27,218, 96,249,183, 55,242,245, 32,235, 27, 73, 68, 46, 79, 40, 90,186,111,231,135, 27, + 99,230, 44,144, 36,167, 23,160,188, 74, 13,154,166, 44, 7, 79,112, 56, 52,100, 98, 33,130,252,220,113,224,191,239, 87, 86, 86, +148, 45,107, 44,238, 97, 91, 41,111,246,240,126, 29, 5, 60,255,106,132,245,156, 8, 90,248,183,147, 89, 54,191,145,221,193,136, + 31,241, 84,102,181,240,235,204,234,217, 86,137,150, 70, 51,114,201,168, 81, 39, 86,126,255,189,168,255,222,189, 72,143,137, 65, +128, 74, 5,129,113, 43,145, 34, 4, 18, 30, 15, 18, 30,175,142,100,109,218, 4,149, 94,143,205,211,166,213,168, 53,154, 81, 14, +106, 36,120, 67,135, 14,117, 26,201,178, 36, 70,112,208,206,203, 94,178, 53, 98,196,136, 4,150,101, 5,173, 96, 37,111, 34, 91, +218,203,151, 47,207, 58,123,246,108, 58,234, 7, 22, 45, 59,123,246,108,250,204,153, 51,201,174, 93,187,118, 3,248,143,189, 14, + 60,171,170,170, 62,148,203,229, 24, 50,100,200,127,226,226,226,188,250,246,237, 11, 95, 95, 95, 84, 86, 86,226,202,149, 43,152, + 55,111,158,178,162,162, 34,174,180,180,116,163,131,105,102,140,154,155,120,103,150, 3,128, 61,198,203, 41,242,202, 43,175,252, +153,158,158, 94,226,227,227, 51,128,199,227,245, 68,157, 29, 80, 62,128,221,142, 18, 34,147,188,252,242,203,127,164,167,167, 23, +183,105,211,102,247,187,103,196, 0, 0, 6, 32, 73, 68, 65, 84,160, 17, 83, 14, 32, 7,192,206,102, 96,230,254,246,219,111,129, +253,250,245,163,184, 92, 46, 75,211, 52,184, 92, 46,203,225,112, 88,163, 93, 13, 11, 0, 71,143, 30, 21, 0, 80,194, 37, 15,186, +111,154,221, 59,228,229,229,153, 73,150,133,195,210,240,200,200,200, 36, 35,201, 50, 61,211, 63,164,180, 98,229,202,149,216,177, + 99, 7,108,121, 52, 55,158,238, 35,182,240, 76, 26, 45,134, 97,160,213,106,145,156,156,108,246,217,101,218, 46, 52,185,118,208, +235,245, 77,158, 86,103, 24,134,209,104, 52,248,252,243,207,237, 34, 91,159,125,246, 25,106,107,107,193,216, 96,112,150,174, 24, +122,247,238, 13,165, 82,105, 62,236, 19, 30,254,183,171, 60,173, 86,235, 16,113, 53, 97,134,133,133,161,184,184, 24,222,222,117, +231,113,130,166,253,173,236,209, 87,255, 51,253, 7, 55,165,209, 34,246,186, 36,232, 45,151,187,171,249,186,175,254,213, 93, 16, +245,124,184, 59,218,251, 73,193,229, 9,145, 91,161,199,169,235, 21,216,153,144,159,165,210, 49, 79,223, 44,172,190,214, 20,142, + 80,236,254, 67,223,199, 71, 68, 76,155, 53, 79, 92,165,102,144,145,113, 23, 69,133,121,160, 8, 5,255, 54,129, 8, 14, 14,129, + 27,159,194, 39,241, 27,171,147, 46,156, 62, 95, 89,161, 28,221, 24,214,211,114,254,133, 77,207, 69, 12,236,208, 65, 74,160,215, + 1,140, 14,208,235, 0,131,241,175,233, 59, 67,253, 54,151,146, 82,198,190,253,187,242,215,239,202, 52, 86, 99, 86, 61, 79, 72, +132,220,211,243,196,242,163, 71, 69, 6,173, 22, 37,111,188, 1,145, 94, 15,161,113, 85, 2, 0, 16, 8,160, 95,181,170,142,100, + 77,157, 90, 83, 94, 86,230,112, 8, 30, 31, 31,159, 61,197,197,197,143,156,103,120, 47, 47,175, 37,205,113, 19,209,130,105,242, + 5, 80,198,178,172,214,202,202,218,199,164,229,106, 6,110,136,143,143,207,219, 20, 69, 13, 98, 89,214,139,162,168, 82,131,193, +240, 75, 97, 97,225, 58,150,101,211, 92, 83,234, 67,171,111,147,103,120, 91,251,216,133, 0, 94, 7, 80,201,178,108,134,171,228, + 30,120, 61, 61,134,186, 83, 88,141,134,224,193, 67, 60,121,232,229,229,117,241,196,137, 19,125,219,183,111, 79, 89,154, 49,152, +124,229,153,182,183, 56,156, 58,125,196,207, 63,255,172,159, 52,105,210, 47,249,249,249, 67, 26,195,148,201,100, 63, 94,189,122, +245,201,242,242,242,123, 8,149,165,167,120,211,231,234,234,106,204,153, 51,231,100, 69, 69,133,213, 16, 60,114,185,124,211,198, +141, 27, 95, 27, 63,126, 60,101,114, 71, 97,121,153,194, 5,153, 46,173, 86,139,253,251,247, 27, 62,248,224,131, 45,101,101,101, +141,110, 29, 6, 4, 4,100,229,230,230, 6,154, 92, 45,216,227, 84, 52, 36, 36, 36, 47, 35, 35, 35,224, 65, 98, 62,170,132,171, +161,118,139, 56,226,251,137, 16, 66,194,124,197, 19, 89,224,121, 10,134, 30, 20, 33,124, 61,139,155, 96,241,163,136, 83,179,237, + 74, 46,107,215,214, 25, 79, 36,154, 43,149,120,188, 51,254,133, 87,189, 66, 58,132, 18,133,127, 27, 16, 80, 40,200,207,193,221, +191,110,177, 95,125,250, 81, 73,117,133,114, 69, 77, 77,213, 71, 77,225,116, 35,164, 67, 59, 25,239, 48,159, 65,103,152,242,209, + 32, 62,213, 61, 12, 19,128,150, 75,221,200,168,212, 77, 76,105, 98,219,199, 68,182,150,126,245,149,136,223,185,243, 61,142,226, + 12, 6, 3,212,169,169,216, 60,109, 90,179, 72,150, 75, 92,226,146,251, 30,208,218,195,182,143, 44, 29,128,236,135, 25,188,248, +127,188,142, 90,109, 80,105, 66,136,216,211,211,243, 52, 77,211,193, 38,141,140,165,205,144,149,128,210, 25, 5, 5, 5,195, 89, +150,173,105, 2,179,131, 84, 42,253,136, 97,152,254,246, 4,149,166,105,250, 82,101,101,229,220,166,130, 74,183,196,169, 67,111, +111,239,180,187,119,239,118, 48,157,162,182,156, 43, 27,150, 3, 0,220,190,125, 27, 67,135, 14,189,155,151,151, 23,242, 32, 49, + 91,171, 52,226, 71,235,254, 53, 90, 45,208,200, 3,120, 2,201,139,124, 55,225, 19, 6,157, 62, 12, 4,224,112,185, 55, 52,181, +170, 51,106, 85,213,190,198,182, 11, 31,164, 60, 79, 72,132,128,207,255,145, 39,147,185, 89, 43, 39, 93,101,165, 74,173,209,140, +116,145, 44,151,184,196, 37, 46,113,201, 35, 68,128, 59,123,122,122,158,224,114,185, 2, 75, 50,217,240,222, 36,122,189,190,182, +168,168,104,116, 83,187, 47, 45,129,249,143, 41,111, 71,137,214,177, 99,199, 88,123,189,183, 18, 66, 70,216, 19,179,202,194,240, +205,166,239,140,135,141,217,130,121,183,233, 21,215, 1,204,161,168, 59, 30,187, 34, 58, 58,122,249, 35,144, 78,103,214,145, 83, + 49, 77,117,110, 47,174, 35,152,246,182, 41, 7,211,105, 87,187,111, 13,152,246,244,165,102,166,179,201, 54,218,204,122,111,178, + 47,181,162,116, 58,179,142,156,130,217,176,253,216,131,235, 40,166, 61,125,169, 25,233,180,217,238, 91, 11,230,253,142, 33, 77, +164,179,209, 54,106,111, 91,106,164,238,109,206, 77,173, 85,147, 5, 0, 38,127, 90, 13, 53, 90,141, 25,196,115, 28, 37, 89, 45, +145,120,203, 73, 7,118,250, 41,121, 24,152,205, 33, 92,142,164,213,137,146,224,108,204, 6,229,233, 44, 89,110, 28,208, 19, 97, +135,195, 81, 71,242,238,140,122,111,144, 87,167,224, 90, 98, 58,171, 44,173, 13,138,206, 76,103, 75, 96, 58,171, 47, 53,196,116, + 70,187,183, 86,239, 45, 88, 71,206, 74,167, 83,250, 82, 75,180,121, 43,237,231,190,113, 27, 98, 58,163, 47, 53,196,116, 70,187, +127, 16,152,206,232, 75,214, 48,157,209,238, 27,171,251, 71, 85, 51,101,218, 46, 52, 18, 46, 98,133,124,214,219, 62, 52, 17, 47, +170, 57,133,214, 18,210, 18,129, 36,157, 77,136, 90,138,108, 30, 59,118,140, 53, 50,253, 86,143,233,228, 58, 90,110,196,116,230, +202, 38,202, 89,117,212, 18,237,221, 18,211, 89,248, 13,113,156, 81, 79,214, 48,239, 55,189,141,164,211,233,121,191,223,118,255, +160, 48,157, 92, 71, 78,233, 75, 13, 48,163,156,188, 24,136,178,248,188,220,153,152,206,234, 75, 86,210,121,223,245,100, 13,243, +126,211,219, 72, 58,157,158,119,103,204, 33, 45,133,251,176, 52, 90,215,195, 9,203, 82,214,219,132,209, 97,169,249,106,150, 70, +171, 37, 73, 86, 75, 77,106,206,196,110, 9,173, 78, 75,105,222,156,165,213,177,130,155,232, 68,184, 4,103,167,211,152, 62,210, +154,157,222,185,250,146,171, 47,253, 47,245, 37,107,237, 38, 58, 58,122,249,177, 99,199,222,105, 77,237,188, 33,166,179, 8,145, +149,188,223, 87, 95,106,248,191,206,232, 75, 54, 48, 73, 75,228,223,217,253,233, 65,106,180, 26, 35, 89,141, 61,227,180,150, 12, +152, 26,137,147, 87, 38,112,178, 6,166,197,242,237,228,116, 70,181,132,134,176, 5,196,233,233, 52,174,148,223,105,129,188, 63, + 42,101,234,234, 75,174,190,212,234,250, 82,131, 54, 25,229, 68, 77,145, 83, 53,207, 13, 49,157,241, 14, 75, 12,103,181,209,150, +206,187, 51,251, 82, 75,212,253,163, 38,255, 31, 0, 52, 22,173,101,127,139,184, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; -- cgit v1.2.3 From c758f6589e5d91e9fa2086a7db744282f2ea1e55 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 04:12:16 +0000 Subject: Reset operator properties for keymap items when operator idname is changed. This means added operators in the keymap editor will now show options correctly (maybe not for old .B25.blend) --- source/blender/makesrna/intern/rna_wm.c | 4 ++++ source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_keymap.c | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index de872b41335..10e27814236 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -255,6 +255,8 @@ EnumPropertyItem keymap_modifiers_items[] = { #include "BKE_idprop.h" +#include "MEM_guardedalloc.h" + static wmOperator *rna_OperatorProperties_find_operator(PointerRNA *ptr) { wmWindowManager *wm= ptr->id.data; @@ -558,6 +560,8 @@ static void rna_wmKeyMapItem_idname_set(PointerRNA *ptr, const char *value) WM_operator_bl_idname(idname, value); BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname)); + + WM_keymap_properties_reset(kmi); } #else diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 22820d578a5..a270b75eea1 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -112,6 +112,7 @@ wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap); int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap); wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap); void WM_keymap_restore_to_default(struct wmKeyMap *keymap); +void WM_keymap_properties_reset(struct wmKeyMapItem *kmi); wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items); wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname); diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index b3269a23277..b22f01b7d7a 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -55,6 +55,17 @@ /* ********************* key config ***********************/ +void WM_keymap_properties_reset(wmKeyMapItem *kmi) +{ + WM_operator_properties_free(kmi->ptr); + MEM_freeN(kmi->ptr); + + kmi->ptr = NULL; + kmi->properties = NULL; + + WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname); +} + static void keymap_properties_set(wmKeyMapItem *kmi) { WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname); -- cgit v1.2.3 From b89138564eee9b576263518df0ed5dc045668f75 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 2 Dec 2009 07:56:34 +0000 Subject: Changes to Color Management After testing and feedback, I've decided to slightly modify the way color management works internally. While the previous method worked well for rendering, was a smaller transition and had some advantages over this new method, it was a bit more ambiguous, and was making things difficult for other areas such as compositing. This implementation now considers all color data (with only a couple of exceptions such as brush colors) to be stored in linear RGB color space, rather than sRGB as previously. This brings it in line with Nuke, which also operates this way, quite successfully. Color swatches, pickers, color ramp display are now gamma corrected to display gamma so you can see what you're doing, but the numbers themselves are considered linear. This makes understanding blending modes more clear (a 0.5 value on overlay will not change the result now) as well as making color swatches act more predictably in the compositor, however bringing over color values from applications like photoshop or gimp, that operate in a gamma space, will give identical results. This commit will convert over existing files saved by earlier 2.5 versions to work generally the same, though there may be some slight differences with things like textures. Now that we're set on changing other areas of shading, this won't be too disruptive overall. I've made a diagram explaining the pipeline here: http://mke3.net/blender/devel/2.5/25_linear_workflow_pipeline.png and some docs here: http://www.blender.org/development/release-logs/blender-250/color-management/ --- release/scripts/ui/properties_material.py | 2 +- source/blender/blenkernel/BKE_blender.h | 2 +- source/blender/blenkernel/BKE_colortools.h | 6 --- source/blender/blenkernel/intern/colortools.c | 46 ---------------- source/blender/blenkernel/intern/object.c | 2 +- source/blender/blenlib/BLI_math_color.h | 22 ++++++-- source/blender/blenlib/intern/math_color.c | 61 ++++++++++++++++++++-- source/blender/blenloader/intern/readfile.c | 42 ++++++++++++++- source/blender/editors/interface/interface.c | 4 ++ source/blender/editors/interface/interface_draw.c | 2 + .../blender/editors/interface/interface_handlers.c | 14 ++++- .../blender/editors/interface/interface_intern.h | 2 + .../blender/editors/interface/interface_layout.c | 6 +-- .../blender/editors/interface/interface_regions.c | 20 +++++-- source/blender/editors/interface/interface_utils.c | 2 +- .../blender/editors/interface/interface_widgets.c | 27 +++++++++- source/blender/editors/space_view3d/drawmesh.c | 26 ++++++--- source/blender/gpu/intern/gpu_draw.c | 9 ++++ source/blender/makesrna/RNA_types.h | 2 +- source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_access.c | 4 +- source/blender/makesrna/intern/rna_brush.c | 2 +- source/blender/makesrna/intern/rna_color.c | 4 +- source/blender/makesrna/intern/rna_material.c | 2 +- source/blender/makesrna/intern/rna_rna.c | 2 +- .../blender/render/intern/source/convertblender.c | 6 +-- source/blender/render/intern/source/pixelshading.c | 17 ++---- source/blender/render/intern/source/shadeinput.c | 38 +++----------- source/blender/render/intern/source/sss.c | 11 ++-- source/blender/render/intern/source/texture.c | 47 +++++++++++------ 30 files changed, 273 insertions(+), 159 deletions(-) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index eb2a73d1790..50fc0a7ded9 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -495,7 +495,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): col.prop(sss, "ior") col.prop(sss, "scale") col.prop(sss, "color", text="") - col.prop(sss, "radius", text="RGB Radius") + col.prop(sss, "radius", text="RGB Radius", expand=True) if wide_ui: col = split.column() diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index ebeec31c984..7bbcb63a7f5 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,7 +43,7 @@ struct bContext; struct ReportList; #define BLENDER_VERSION 250 -#define BLENDER_SUBVERSION 7 +#define BLENDER_SUBVERSION 8 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h index c83a260690b..c571688737a 100644 --- a/source/blender/blenkernel/BKE_colortools.h +++ b/source/blender/blenkernel/BKE_colortools.h @@ -34,12 +34,6 @@ struct CurveMap; struct ImBuf; struct rctf; -void gamma_correct_rec709(float *c, float gamma); -void gamma_correct(float *c, float gamma); -float srgb_to_linearrgb(float c); -float linearrgb_to_srgb(float c); -void color_manage_linearize(float *col_to, float *col_from); - void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w); void floatbuf_to_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w); diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index f3448a60b5a..48e42bc539f 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -58,52 +58,6 @@ #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" -/* ********************************* color transforms ********************************* */ - -/*Transform linear RGB values to nonlinear RGB values. Rec. - 709 is ITU-R Recommendation BT. 709 (1990) ``Basic - Parameter Values for the HDTV Standard for the Studio and - for International Programme Exchange'', formerly CCIR Rec. - 709.*/ -void gamma_correct_rec709(float *c, float gamma) -{ - /* Rec. 709 gamma correction. */ - const float cc = 0.018f; - - if (*c < cc) - *c *= ((1.099f * (float)powf(cc, gamma)) - 0.099f) * (1.0f/cc); - else - *c = (1.099f * (float)powf(*c, gamma)) - 0.099f; -} - -void gamma_correct(float *c, float gamma) -{ - *c = powf((*c), gamma); -} - -float srgb_to_linearrgb(float c) -{ - if (c < 0.04045f) - return (c < 0.0f)? 0.0f: c*(1.0f/12.92f); - else - return powf((c + 0.055f)*(1.0f/1.055f), 2.4f); -} - -float linearrgb_to_srgb(float c) -{ - if (c < 0.0031308f) - return (c < 0.0f)? 0.0f: c * 12.92f; - else - return 1.055f * powf(c, 1.0f/2.4f) - 0.055f; -} - -/* utility function convert an RGB triplet from sRGB to linear RGB color space */ -void color_manage_linearize(float *col_to, float *col_from) -{ - col_to[0] = srgb_to_linearrgb(col_from[0]); - col_to[1] = srgb_to_linearrgb(col_from[1]); - col_to[2] = srgb_to_linearrgb(col_from[2]); -} void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w) { diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 1e047380641..41255415b67 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -795,7 +795,7 @@ void *add_lamp(char *name) la->sun_intensity = 1.0f; la->skyblendtype= MA_RAMP_ADD; la->skyblendfac= 1.0f; - la->sky_colorspace= BLI_CS_CIE; + la->sky_colorspace= BLI_XYZ_CIE; la->sky_exposure= 1.0f; curvemapping_initialize(la->curfalloff); diff --git a/source/blender/blenlib/BLI_math_color.h b/source/blender/blenlib/BLI_math_color.h index b2d14f3ecbd..7444e01c3a6 100644 --- a/source/blender/blenlib/BLI_math_color.h +++ b/source/blender/blenlib/BLI_math_color.h @@ -32,10 +32,16 @@ extern "C" { #endif -#define BLI_CS_SMPTE 0 -#define BLI_CS_REC709 1 -#define BLI_CS_CIE 2 +/* primaries */ +#define BLI_XYZ_SMPTE 0 +#define BLI_XYZ_REC709_SRGB 1 +#define BLI_XYZ_CIE 2 +/* built-in profiles */ +#define BLI_PR_NONE 0 +#define BLI_PR_SRGB 1 +#define BLI_PR_REC709 2 + /******************* Conversion to RGB ********************/ void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b); @@ -53,6 +59,16 @@ void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv); unsigned int rgb_to_cpack(float r, float g, float b); unsigned int hsv_to_cpack(float h, float s, float v); +/***************** Profile Transformations ********************/ + +void gamma_correct(float *c, float gamma); +float rec709_to_linearrgb(float c); +float linearrgb_to_rec709(float c); +float srgb_to_linearrgb(float c); +float linearrgb_to_srgb(float c); +void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from); +void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from); + /************************** Other *************************/ int constrain_rgb(float *r, float *g, float *b); diff --git a/source/blender/blenlib/intern/math_color.c b/source/blender/blenlib/intern/math_color.c index 7ae380a1dde..6dbd9c1381f 100644 --- a/source/blender/blenlib/intern/math_color.c +++ b/source/blender/blenlib/intern/math_color.c @@ -208,17 +208,17 @@ void rgb_to_hsv(float r, float g, float b, float *lh, float *ls, float *lv) void xyz_to_rgb(float xc, float yc, float zc, float *r, float *g, float *b, int colorspace) { switch (colorspace) { - case BLI_CS_SMPTE: + case BLI_XYZ_SMPTE: *r = (3.50570f * xc) + (-1.73964f * yc) + (-0.544011f * zc); *g = (-1.06906f * xc) + (1.97781f * yc) + (0.0351720f * zc); *b = (0.0563117f * xc) + (-0.196994f * yc) + (1.05005f * zc); break; - case BLI_CS_REC709: + case BLI_XYZ_REC709_SRGB: *r = (3.240476f * xc) + (-1.537150f * yc) + (-0.498535f * zc); *g = (-0.969256f * xc) + (1.875992f * yc) + (0.041556f * zc); *b = (0.055648f * xc) + (-0.204043f * yc) + (1.057311f * zc); break; - case BLI_CS_CIE: + case BLI_XYZ_CIE: *r = (2.28783848734076f * xc) + (-0.833367677835217f * yc) + (-0.454470795871421f * zc); *g = (-0.511651380743862f * xc) + (1.42275837632178f * yc) + (0.0888930017552939f * zc); *b = (0.00572040983140966f * xc) + (-0.0159068485104036f * yc) + (1.0101864083734f * zc); @@ -274,6 +274,61 @@ void cpack_to_rgb(unsigned int col, float *r, float *g, float *b) *b /= 255.0f; } +/* ********************************* color transforms ********************************* */ + + +void gamma_correct(float *c, float gamma) +{ + *c = powf((*c), gamma); +} + +float rec709_to_linearrgb(float c) +{ + if (c < 0.081f) + return (c < 0.0f)? 0.0f: c * (1.0f/4.5f); + else + return powf((c + 0.099f)*(1.0f/1.099f), (1.0f/0.45f)); +} + +float linearrgb_to_rec709(float c) +{ + if (c < 0.018f) + return (c < 0.0f)? 0.0f: c * 4.5f; + else + return 1.099f * powf(c, 0.45f) - 0.099f; +} + +float srgb_to_linearrgb(float c) +{ + if (c < 0.04045f) + return (c < 0.0f)? 0.0f: c * (1.0f/12.92f); + else + return powf((c + 0.055f)*(1.0f/1.055f), 2.4f); +} + +float linearrgb_to_srgb(float c) +{ + if (c < 0.0031308f) + return (c < 0.0f)? 0.0f: c * 12.92f; + else + return 1.055f * powf(c, 1.0f/2.4f) - 0.055f; +} + +void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from) +{ + col_to[0] = srgb_to_linearrgb(col_from[0]); + col_to[1] = srgb_to_linearrgb(col_from[1]); + col_to[2] = srgb_to_linearrgb(col_from[2]); +} + +void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from) +{ + col_to[0] = linearrgb_to_srgb(col_from[0]); + col_to[1] = linearrgb_to_srgb(col_from[1]); + col_to[2] = linearrgb_to_srgb(col_from[2]); +} + + void minmax_rgb(short c[]) { if(c[0]>255) c[0]=255; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index ce760643b3d..6103c582da0 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10064,7 +10064,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - /* put 2.50 compatibility code here until next subversion bump */ + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 8)) { { Scene *sce= main->scene.first; @@ -10108,7 +10108,47 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ob=ob->id.next; } } + + /* only convert old 2.50 files with color management */ + if (main->versionfile == 250) { + Scene *sce=main->scene.first; + Material *ma=main->mat.first; + World *wo=main->world.first; + int convert=0; + + /* convert to new color management system: + while previously colors were stored as srgb, + now they are stored as linear internally, + with screen gamma correction in certain places in the UI. */ + + /* don't know what scene is active, so we'll convert if any scene has it enabled... */ + while (sce) { + if(sce->r.color_mgt_flag & R_COLOR_MANAGEMENT) + convert=1; + sce=sce->id.next; + } + + if (convert) { + while(ma) { + srgb_to_linearrgb_v3_v3(&ma->r, &ma->r); + srgb_to_linearrgb_v3_v3(&ma->specr, &ma->specr); + srgb_to_linearrgb_v3_v3(&ma->mirr, &ma->mirr); + srgb_to_linearrgb_v3_v3(ma->sss_col, ma->sss_col); + ma=ma->id.next; + } + + while(wo) { + srgb_to_linearrgb_v3_v3(&wo->ambr, &wo->ambr); + srgb_to_linearrgb_v3_v3(&wo->horr, &wo->horr); + srgb_to_linearrgb_v3_v3(&wo->zenr, &wo->zenr); + wo=wo->id.next; + } + } + } } + + /* put 2.50 compatibility code here until next subversion bump */ + /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 70bef5534a1..f0d09c505ac 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1790,14 +1790,17 @@ uiBlock *uiBeginBlock(const bContext *C, ARegion *region, const char *name, shor { uiBlock *block; wmWindow *window; + Scene *scn; int getsizex, getsizey; window= CTX_wm_window(C); + scn = CTX_data_scene(C); block= MEM_callocN(sizeof(uiBlock), "uiBlock"); block->active= 1; block->dt= dt; block->evil_C= (void*)C; // XXX + if (scn) block->color_profile= (scn->r.color_mgt_flag & R_COLOR_MANAGEMENT); BLI_strncpy(block->name, name, sizeof(block->name)); if(region) @@ -2295,6 +2298,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short if(ELEM(but->type, HSVCUBE, HSVCIRCLE)) { /* hsv buttons temp storage */ float rgb[3]; ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], but->hsv, but->hsv+1, but->hsv+2); } diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 762ec541bff..e6e5cb198aa 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -736,6 +736,8 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) for( a = 1; a < sizex; a++ ) { pos = ((float)a) / (sizex-1); do_colorband( coba, pos, colf ); + if (but->block->color_profile != BLI_PR_NONE) + linearrgb_to_srgb_v3_v3(colf, colf); v1[0]=v2[0]= x1 + a; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 6d65a2a57a1..a51824f10e9 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -2697,7 +2697,13 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, { float x, y; int changed= 1; - + int color_profile = but->block->color_profile; + + if (but->rnaprop) { + if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) + color_profile = BLI_PR_NONE; + } + /* relative position within box */ x= ((float)mx-but->x1)/(but->x2-but->x1); y= ((float)my-but->y1)/(but->y2-but->y1); @@ -2719,8 +2725,12 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, else if(but->a1==3) { but->hsv[0]= x; } - else + else { + /* vertical 'value' strip */ but->hsv[2]= y; + if (color_profile) + but->hsv[2] = srgb_to_linearrgb(but->hsv[2]); + } ui_set_but_hsv(but); // converts to rgb diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 21425bbb261..97ef1f1ea17 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -303,6 +303,8 @@ struct uiBlock { int active; // to keep blocks while drawing and free them afterwards int puphash; // popup menu hash for memory + + int color_profile; // color profile for correcting linear colors for display void *evil_C; // XXX hack for dynamic operator enums }; diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index d46cb4df1c0..175f1ff1e2a 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -409,10 +409,10 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon } } else { - if(ELEM(subtype, PROP_COLOR, PROP_RGB)) + if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA)) uiDefAutoButR(block, ptr, prop, -1, "", 0, 0, 0, w, UI_UNIT_Y); - if(!ELEM(subtype, PROP_COLOR, PROP_RGB) || expand) { + if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) { /* layout for known array subtypes */ char str[3]; @@ -439,7 +439,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon but->type= TOG; } } - else if(ELEM(subtype, PROP_COLOR, PROP_RGB) && len == 4) { + 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; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index c3eac3f3893..55b908a44ce 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1902,9 +1902,16 @@ static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old, static short colormode= 0; /* temp? 0=rgb, 1=hsv, 2=hex */ uiBut *bt; int width; + static char tip[50]; VECCOPY(old, col); // old color stored there, for palette_cb to work + /* existence of profile means storage is in linear colour space, with display correction */ + if (block->color_profile == BLI_PR_NONE) + sprintf(tip, "Value in Display Color Space"); + else + sprintf(tip, "Value in Linear RGB Color Space"); + /* HS circle */ bt= uiDefButF(block, HSVCIRCLE, retval, "", 0, 0,SPICK1,SPICK1, col, 0.0, 0.0, 0, 0, ""); uiButSetFunc(bt, do_picker_small_cb, bt, hsv); @@ -1930,11 +1937,11 @@ static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old, sprintf(hexcol, "%02X%02X%02X", (unsigned int)(col[0]*255.0), (unsigned int)(col[1]*255.0), (unsigned int)(col[2]*255.0)); uiBlockBeginAlign(block); - bt= uiDefButF(block, NUMSLI, 0, "R ", 0, -60, width, 19, col, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "R ", 0, -60, width, 19, col, 0.0, 1.0, 10, 3, tip); uiButSetFunc(bt, do_palette1_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, 0, "G ", 0, -80, width, 19, col+1, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "G ", 0, -80, width, 19, col+1, 0.0, 1.0, 10, 3, tip); uiButSetFunc(bt, do_palette1_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, 0, "B ", 0, -100, width, 19, col+2, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "B ", 0, -100, width, 19, col+2, 0.0, 1.0, 10, 3, tip); uiButSetFunc(bt, do_palette1_cb, bt, hsv); uiBlockEndAlign(block); @@ -2000,6 +2007,13 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu block= uiBeginBlock(C, handle->region, "colorpicker", UI_EMBOSS); + /* XXX ideally the colour picker buttons would reference the rna property itself */ + if (but->rnaprop) { + if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) { + block->color_profile = BLI_PR_NONE; + } + } + uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); VECCOPY(handle->retvec, but->editvec); diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index ecd8c9720c8..7aaa6cbb42b 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -80,7 +80,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind case PROP_INT: case PROP_FLOAT: if(arraylen && index == -1) { - if(RNA_property_subtype(prop) == PROP_COLOR) + if(ELEM(RNA_property_subtype(prop), PROP_COLOR, PROP_COLOR_GAMMA)) but= uiDefButR(block, COL, 0, name, x1, y1, x2, y2, ptr, propname, 0, 0, 0, -1, -1, NULL); } else if(RNA_property_subtype(prop) == PROP_PERCENTAGE || RNA_property_subtype(prop) == PROP_FACTOR) diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index e148fd9217f..4c9698974b4 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -44,6 +44,8 @@ #include "BKE_global.h" #include "BKE_utildefines.h" +#include "RNA_access.h" + #include "BIF_gl.h" #include "BIF_glutil.h" @@ -1693,6 +1695,17 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect) uiWidgetBase wtb; float rad= 0.5f*(rect->xmax - rect->xmin); float x, y; + float v = but->hsv[2]; + int color_profile = but->block->color_profile; + + if (but->rnaprop) { + if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) { + color_profile = BLI_PR_NONE; + } + } + + if (color_profile) + v = linearrgb_to_srgb(v); widget_init(&wtb); @@ -1709,8 +1722,8 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect) widgetbase_draw(&wtb, &wcol_tmp); /* cursor */ - x= rect->xmin + 0.5f*(rect->xmax-rect->xmin); - y= rect->ymin + but->hsv[2]*(rect->ymax-rect->ymin); + x= rect->xmin + 0.5f * (rect->xmax-rect->xmin); + y= rect->ymin + v * (rect->ymax-rect->ymin); CLAMP(y, rect->ymin+3.0, rect->ymax-3.0); ui_hsv_cursor(x, y); @@ -2005,6 +2018,12 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat { uiWidgetBase wtb; float col[4]; + int color_profile = but->block->color_profile; + + if (but->rnaprop) { + if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) + color_profile = BLI_PR_NONE; + } widget_init(&wtb); @@ -2012,6 +2031,10 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat round_box_edges(&wtb, roundboxalign, rect, 5.0f); ui_get_but_vectorf(but, col); + + if (color_profile) + linearrgb_to_srgb_v3_v3(col, col); + wcol->inner[0]= FTOCHAR(col[0]); wcol->inner[1]= FTOCHAR(col[1]); wcol->inner[2]= FTOCHAR(col[2]); diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index bf73e70367c..51c7ba1a4bd 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -341,8 +341,9 @@ static int set_draw_settings_cached(int clearcache, int textured, MTFace *texfac struct TextureDrawState { Object *ob; int islit, istex; + int color_profile; unsigned char obcol[4]; -} Gtexdraw = {NULL, 0, 0, {0, 0, 0, 0}}; +} Gtexdraw = {NULL, 0, 0, 0, {0, 0, 0, 0}}; static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) { @@ -371,6 +372,7 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, O Gtexdraw.ob = ob; Gtexdraw.istex = istex; + Gtexdraw.color_profile = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT; memcpy(Gtexdraw.obcol, obcol, sizeof(obcol)); set_draw_settings_cached(1, 0, 0, Gtexdraw.islit, 0, 0, 0); glShadeModel(GL_SMOOTH); @@ -413,7 +415,13 @@ static int draw_tface__set_draw_legacy(MTFace *tface, MCol *mcol, int matnr) if (tface) glColor3f(1.0, 1.0, 1.0); else { Material *ma= give_current_material(Gtexdraw.ob, matnr+1); - if(ma) glColor3f(ma->r, ma->g, ma->b); + if(ma) { + float col[3]; + if(Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r); + else copy_v3_v3(col, &ma->r); + + glColor3fv(col); + } else glColor3f(1.0, 1.0, 1.0); } return 2; /* Don't set color */ @@ -478,13 +486,19 @@ static void add_tface_color_layer(DerivedMesh *dm) } } else { + float col[3]; Material *ma= give_current_material(Gtexdraw.ob, mface[i].mat_nr+1); - if(ma) + + if(ma) { + if(Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r); + else copy_v3_v3(col, &ma->r); + for(j=0;j<4;j++) { - finalCol[i*4+j].b = ma->b; - finalCol[i*4+j].g = ma->g; - finalCol[i*4+j].r = ma->r; + finalCol[i*4+j].b = col[2]; + finalCol[i*4+j].g = col[1]; + finalCol[i*4+j].r = col[0]; } + } else for(j=0;j<4;j++) { finalCol[i*4+j].b = 255; diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 75e8073aafd..c2cf4dfa9fd 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -34,6 +34,8 @@ #include "GL/glew.h" +#include "BLI_math.h" + #include "DNA_image_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" @@ -856,6 +858,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O GPUMaterial *gpumat; GPUBlendMode blendmode; int a; + int gamma = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT; /* initialize state */ memset(&GMS, 0, sizeof(GMS)); @@ -930,6 +933,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O GMS.matbuf[a][0][0]= ma->r; GMS.matbuf[a][0][1]= ma->g; GMS.matbuf[a][0][2]= ma->b; + if(gamma) linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][0][0], &GMS.matbuf[a][0][0]); } else { GMS.matbuf[a][0][0]= (ma->ref+ma->emit)*ma->r; GMS.matbuf[a][0][1]= (ma->ref+ma->emit)*ma->g; @@ -939,6 +943,11 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O GMS.matbuf[a][1][1]= ma->spec*ma->specg; GMS.matbuf[a][1][2]= ma->spec*ma->specb; GMS.matbuf[a][1][3]= 1.0; + + if(gamma) { + linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][0][0], &GMS.matbuf[a][0][0]); + linearrgb_to_srgb_v3_v3(&GMS.matbuf[a][1][0], &GMS.matbuf[a][1][0]); + } } blendmode = (ma->alpha == 1.0f)? GPU_BLEND_SOLID: GPU_BLEND_ALPHA; diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index ff01f76fe71..27dd1069c1c 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -115,7 +115,7 @@ typedef enum PropertySubType { PROP_QUATERNION = 27, PROP_AXISANGLE = 28, PROP_XYZ = 29, - PROP_RGB = 30, + PROP_COLOR_GAMMA = 30, /* booleans */ PROP_LAYER = 40, diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 3d4e128c3ac..543e1f3ecc0 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1430,7 +1430,7 @@ static const char *rna_property_subtypename(PropertyType type) case PROP_VELOCITY: return "PROP_VELOCITY"; case PROP_ACCELERATION: return "PROP_ACCELERATION"; case PROP_XYZ: return "PROP_XYZ"; - case PROP_RGB: return "PROP_RGB"; + case PROP_COLOR_GAMMA: return "PROP_COLOR_GAMMA"; case PROP_LAYER: return "PROP_LAYER"; case PROP_LAYER_MEMBER: return "PROP_LAYER_MEMBER"; default: { diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 6c0a3c57f65..5ee811d4c46 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -693,7 +693,7 @@ char RNA_property_array_item_char(PropertyRNA *prop, int index) return quatitem[index]; else if((index < 4) && ELEM6(subtype, PROP_TRANSLATION, PROP_DIRECTION, PROP_XYZ, PROP_EULER, PROP_VELOCITY, PROP_ACCELERATION)) return vectoritem[index]; - else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_RGB)) + else if ((index < 4) && ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA)) return coloritem[index]; return '\0'; @@ -731,7 +731,7 @@ int RNA_property_array_item_index(PropertyRNA *prop, char name) return 3; } } - else if (ELEM(subtype, PROP_COLOR, PROP_RGB)) { + else if (ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA)) { switch (name) { case 'R': return 0; diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index e9744c7f5ed..28f546c07f1 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -203,7 +203,7 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Rate", "Number of paints per second for Airbrush."); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); + prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "rgb"); RNA_def_property_ui_text(prop, "Color", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c index 2a97eb78382..c4edd00045b 100644 --- a/source/blender/makesrna/intern/rna_color.c +++ b/source/blender/makesrna/intern/rna_color.c @@ -216,13 +216,13 @@ static void rna_def_curvemapping(BlenderRNA *brna) RNA_def_property_struct_type(prop, "CurveMap"); RNA_def_property_ui_text(prop, "Curves", ""); - prop= RNA_def_property(srna, "black_level", PROP_FLOAT, PROP_RGB); + prop= RNA_def_property(srna, "black_level", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "black"); RNA_def_property_range(prop, -1000.0f, 1000.0f); RNA_def_property_ui_text(prop, "Black Level", "For RGB curves, the color that black is mapped to"); RNA_def_property_float_funcs(prop, NULL, "rna_CurveMapping_black_level_set", NULL); - prop= RNA_def_property(srna, "white_level", PROP_FLOAT, PROP_RGB); + prop= RNA_def_property(srna, "white_level", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "white"); RNA_def_property_range(prop, -1000.0f, 1000.0f); RNA_def_property_ui_text(prop, "White Level", "For RGB curves, the color that white is mapped to"); diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index 5ff8bffe715..85007482dc4 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -1239,7 +1239,7 @@ static void rna_def_material_sss(BlenderRNA *brna) RNA_def_struct_nested(brna, srna, "Material"); RNA_def_struct_ui_text(srna, "Material Subsurface Scattering", "Diffuse subsurface scattering settings for a Material datablock."); - prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_RGB|PROP_UNIT_LENGTH); + prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_COLOR|PROP_UNIT_LENGTH); RNA_def_property_float_sdna(prop, NULL, "sss_radius"); RNA_def_property_range(prop, 0.001, FLT_MAX); RNA_def_property_ui_range(prop, 0.001, 10000, 1, 3); diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index f8adb1a79d8..5997867030d 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -869,7 +869,7 @@ static void rna_def_property(BlenderRNA *brna) {PROP_EULER, "EULER", 0, "Euler", ""}, {PROP_QUATERNION, "QUATERNION", 0, "Quaternion", ""}, {PROP_XYZ, "XYZ", 0, "XYZ", ""}, - {PROP_RGB, "RGB", 0, "RGB", ""}, + {PROP_COLOR_GAMMA, "COLOR_GAMMA", 0, "Gamma Corrected Color", ""}, {PROP_LAYER, "LAYER", 0, "Layer", ""}, {PROP_LAYER_MEMBER, "LAYER_MEMBERSHIP", 0, "Layer Membership", ""}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 32c2e18197f..8f8e083523b 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4848,8 +4848,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) /* still bad... doing all */ init_render_textures(re); - if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(amb, &re->wrld.ambr); - else VECCOPY(amb, &re->wrld.ambr); + VECCOPY(amb, &re->wrld.ambr); init_render_materials(re->r.mode, amb); set_node_shader_lamp_loop(shade_material_loop); @@ -5538,8 +5537,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob) /* still bad... doing all */ init_render_textures(re); - if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(amb, &re->wrld.ambr); - else VECCOPY(amb, &re->wrld.ambr); + VECCOPY(amb, &re->wrld.ambr); init_render_materials(re->r.mode, amb); set_node_shader_lamp_loop(shade_material_loop); diff --git a/source/blender/render/intern/source/pixelshading.c b/source/blender/render/intern/source/pixelshading.c index d4b7c403f50..6fef8279c7e 100644 --- a/source/blender/render/intern/source/pixelshading.c +++ b/source/blender/render/intern/source/pixelshading.c @@ -537,15 +537,9 @@ void shadeSkyView(float *colf, float *rco, float *view, float *dxyview, short th /* the fraction of how far we are above the bottom of the screen */ blend= fabs(0.5+ view[1]); } - - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(hor, &R.wrld.horr); - color_manage_linearize(zen, &R.wrld.zenr); - } - else { - VECCOPY(hor, &R.wrld.horr); - VECCOPY(zen, &R.wrld.zenr); - } + + VECCOPY(hor, &R.wrld.horr); + VECCOPY(zen, &R.wrld.zenr); /* Careful: SKYTEX and SKYBLEND are NOT mutually exclusive! If */ /* SKYBLEND is active, the texture and color blend are added. */ @@ -633,10 +627,7 @@ void shadeSkyPixel(float *collector, float fx, float fy, short thread) } else if((R.wrld.skytype & (WO_SKYBLEND+WO_SKYTEX))==0) { /* 2. solid color */ - if(R.r.color_mgt_flag & R_COLOR_MANAGEMENT) - color_manage_linearize(collector, &R.wrld.horr); - else - VECCOPY(collector, &R.wrld.horr); + VECCOPY(collector, &R.wrld.horr); collector[3] = 0.0f; } diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 396c713cfb7..fd1e27ab28a 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -91,42 +91,16 @@ extern struct Render R; * doing inverse gamma correction where applicable */ void shade_input_init_material(ShadeInput *shi) { - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(&shi->r, &shi->mat->r); - color_manage_linearize(&shi->specr, &shi->mat->specr); - color_manage_linearize(&shi->mirr, &shi->mat->mirr); - - /* material ambr / ambg / ambb is overwritten from world - color_manage_linearize(shi->ambr, shi->mat->ambr); - */ - - /* note, keep this synced with render_types.h */ - memcpy(&shi->amb, &shi->mat->amb, 11*sizeof(float)); - shi->har= shi->mat->har; - } else { - /* note, keep this synced with render_types.h */ - memcpy(&shi->r, &shi->mat->r, 23*sizeof(float)); - shi->har= shi->mat->har; - } - -} - -static void shadeinput_colors_linearize(ShadeInput *shi) -{ - color_manage_linearize(&shi->r, &shi->r); - color_manage_linearize(&shi->specr, &shi->specr); - color_manage_linearize(&shi->mirr, &shi->mirr); + /* note, keep this synced with render_types.h */ + memcpy(&shi->r, &shi->mat->r, 23*sizeof(float)); + shi->har= shi->mat->har; } /* also used as callback for nodes */ /* delivers a fully filled in ShadeResult, for all passes */ void shade_material_loop(ShadeInput *shi, ShadeResult *shr) { - /* because node materials don't have access to rendering context, - * inverse gamma correction must happen here. evil. */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT && shi->nodes == 1) - shadeinput_colors_linearize(shi); - + shade_lamp_loop(shi, shr); /* clears shr */ if(shi->translucency!=0.0f) { @@ -626,7 +600,7 @@ void shade_input_set_strand_texco(ShadeInput *shi, StrandRen *strand, StrandVert if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { if(mode & (MA_VERTEXCOL|MA_VERTEXCOLP|MA_FACETEXTURE)) { - color_manage_linearize(shi->vcol, shi->vcol); + srgb_to_linearrgb_v3_v3(shi->vcol, shi->vcol); } } @@ -1291,7 +1265,7 @@ void shade_input_set_shade_texco(ShadeInput *shi) */ if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { if(mode & (MA_VERTEXCOL|MA_VERTEXCOLP|MA_FACETEXTURE)) { - color_manage_linearize(shi->vcol, shi->vcol); + srgb_to_linearrgb_v3_v3(shi->vcol, shi->vcol); } } diff --git a/source/blender/render/intern/source/sss.c b/source/blender/render/intern/source/sss.c index 25cfc0f1253..e551cf0f3d2 100644 --- a/source/blender/render/intern/source/sss.c +++ b/source/blender/render/intern/source/sss.c @@ -926,20 +926,17 @@ static void sss_create_tree_mat(Render *re, Material *mat) if(!re->test_break(re->tbh)) { SSSData *sss= MEM_callocN(sizeof(*sss), "SSSData"); float ior= mat->sss_ior, cfac= mat->sss_colfac; - float col[3], *radius= mat->sss_radius; + float *radius= mat->sss_radius; float fw= mat->sss_front, bw= mat->sss_back; float error = mat->sss_error; error= get_render_aosss_error(&re->r, error); if((re->r.scemode & R_PREVIEWBUTS) && error < 0.5f) error= 0.5f; - - if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) color_manage_linearize(col, mat->sss_col); - else VECCOPY(col, mat->sss_col); - sss->ss[0]= scatter_settings_new(col[0], radius[0], ior, cfac, fw, bw); - sss->ss[1]= scatter_settings_new(col[1], radius[1], ior, cfac, fw, bw); - sss->ss[2]= scatter_settings_new(col[2], radius[2], ior, cfac, fw, bw); + sss->ss[0]= scatter_settings_new(mat->sss_col[0], radius[0], ior, cfac, fw, bw); + sss->ss[1]= scatter_settings_new(mat->sss_col[1], radius[1], ior, cfac, fw, bw); + sss->ss[2]= scatter_settings_new(mat->sss_col[2], radius[2], ior, cfac, fw, bw); sss->tree= scatter_tree_new(sss->ss, mat->sss_scale, error, co, color, area, totpoint); diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index a9f6e7a53fd..16372d7a15d 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -2051,8 +2051,13 @@ void do_material_tex(ShadeInput *shi) else texres.tin= texres.ta; /* inverse gamma correction */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(tcol, tcol); + if (tex->type==TEX_IMAGE) { + Image *ima = tex->ima; + ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser); + + /* don't linearize float buffers, assumed to be linear */ + if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT) + srgb_to_linearrgb_v3_v3(tcol, tcol); } if(mtex->mapto & MAP_COL) { @@ -2404,11 +2409,6 @@ void do_volume_tex(ShadeInput *shi, float *xyz, int mapto_flag, float *col, floa texres.tin= texres.ta; } - /* inverse gamma correction */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(tcol, tcol); - } - /* used for emit */ if((mapto_flag & MAP_EMISSION_COL) && (mtex->mapto & MAP_EMISSION_COL)) { float colemitfac= mtex->colemitfac*stencilTin; @@ -2556,8 +2556,13 @@ void do_halo_tex(HaloRen *har, float xn, float yn, float *colf) else texres.tin= texres.ta; /* inverse gamma correction */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(&texres.tr, &texres.tr); + if (mtex->tex->type==TEX_IMAGE) { + Image *ima = mtex->tex->ima; + ImBuf *ibuf = BKE_image_get_ibuf(ima, &mtex->tex->iuser); + + /* don't linearize float buffers, assumed to be linear */ + if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT) + srgb_to_linearrgb_v3_v3(&texres.tr, &texres.tr); } fact= texres.tin*mtex->colfac; @@ -2605,6 +2610,7 @@ void do_halo_tex(HaloRen *har, float xn, float yn, float *colf) void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, float *blend, int skyflag, short thread) { MTex *mtex; + Tex *tex; TexResult texres= {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, NULL}; float *co, fact, stencilTin=1.0; float tempvec[3], texvec[3], dxt[3], dyt[3]; @@ -2618,7 +2624,8 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f if(R.wrld.mtex[tex_nr]) { mtex= R.wrld.mtex[tex_nr]; - if(mtex->tex==0) continue; + tex= mtex->tex; + if(tex==0) continue; /* if(mtex->mapto==0) continue; */ /* which coords */ @@ -2700,7 +2707,7 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f else texvec[2]= mtex->size[2]*(mtex->ofs[2]); /* texture */ - if(mtex->tex->type==TEX_IMAGE) do_2d_mapping(mtex, texvec, NULL, NULL, dxt, dyt); + if(tex->type==TEX_IMAGE) do_2d_mapping(mtex, texvec, NULL, NULL, dxt, dyt); rgb= multitex(mtex->tex, texvec, dxt, dyt, R.osa, &texres, thread, mtex->which_output); @@ -2748,8 +2755,13 @@ void do_sky_tex(float *rco, float *lo, float *dxyview, float *hor, float *zen, f tcol[0]= texres.tr; tcol[1]= texres.tg; tcol[2]= texres.tb; /* inverse gamma correction */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(tcol, tcol); + if (tex->type==TEX_IMAGE) { + Image *ima = tex->ima; + ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser); + + /* don't linearize float buffers, assumed to be linear */ + if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT) + srgb_to_linearrgb_v3_v3(tcol, tcol); } if(mtex->mapto & WOMAP_HORIZ) { @@ -2947,8 +2959,13 @@ void do_lamp_tex(LampRen *la, float *lavec, ShadeInput *shi, float *colf, int ef else texres.tin= texres.ta; /* inverse gamma correction */ - if (R.r.color_mgt_flag & R_COLOR_MANAGEMENT) { - color_manage_linearize(&texres.tr, &texres.tr); + if (tex->type==TEX_IMAGE) { + Image *ima = tex->ima; + ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser); + + /* don't linearize float buffers, assumed to be linear */ + if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT) + srgb_to_linearrgb_v3_v3(&texres.tr, &texres.tr); } /* lamp colors were premultiplied with this */ -- cgit v1.2.3 From 0efaf10b7a6834159de370b1b0af1542e2f438e9 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 10:10:20 +0000 Subject: Cocoa: fix delaying issue for events that were fired outside the processEvents function An example of a visible issue was a delayed wm resize when switching to/from fullscreen mode --- intern/ghost/intern/GHOST_SystemCocoa.mm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 573b815a4ae..0aa9f8d4ac2 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -746,8 +746,6 @@ bool GHOST_SystemCocoa::processEvents(bool waitForEvent) bool anyProcessed = false; NSEvent *event; - m_outsideLoopEventProcessed = false; - // SetMouseCoalescingEnabled(false, NULL); //TODO : implement timer ?? @@ -844,9 +842,12 @@ bool GHOST_SystemCocoa::processEvents(bool waitForEvent) } while (event!= nil); //} while (waitForEvent && !anyProcessed); Needed only for timer implementation + if (m_outsideLoopEventProcessed) { + m_outsideLoopEventProcessed = false; + return true; + } - - return anyProcessed || m_outsideLoopEventProcessed; + return anyProcessed; } //Note: called from NSApplication delegate -- cgit v1.2.3 From 39f42df424beb032d3306cd30b4d633a3108210d Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 10:21:10 +0000 Subject: CMake: remove new GHOST_DropTargetWin32.cpp file from non-win32 platforms builds --- intern/ghost/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 33af61baa07..92d0abce2b8 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -41,6 +41,7 @@ IF(APPLE) LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowWin32.cpp") + LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DropTargetWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerX11.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp") @@ -59,6 +60,7 @@ ELSE(APPLE) ELSE(WIN32) SET(INC ${INC} ${X11_X11_INCLUDE_PATH}) LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerWin32.cpp") + LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DropTargetWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowWin32.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCarbon.cpp") -- cgit v1.2.3 From 8c5d021d1931446d08a3686347221baf5616df16 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 10:32:39 +0000 Subject: rename armature RNA props armature_matrix --> matrix_local armature_head --> head_local armature_tail --> tail_local --- release/scripts/io/export_fbx.py | 8 ++++---- release/scripts/modules/graphviz_export.py | 14 +++++++++++++- source/blender/makesrna/intern/rna_armature.c | 8 ++++---- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index e5bf01b0d9d..c821e1d4fad 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -486,7 +486,7 @@ def write(filename, batch_objects = None, \ self.blenBone = blenBone self.blenMeshes = {} # fbxMeshObName : mesh self.fbxArm = fbxArm - self.restMatrix = blenBone.armature_matrix + self.restMatrix = blenBone.matrix_local # self.restMatrix = blenBone.matrix['ARMATURESPACE'] # not used yet @@ -664,13 +664,13 @@ def write(filename, batch_objects = None, \ # we know we have a matrix # matrix = mtx4_z90 * (ob.matrix['ARMATURESPACE'] * matrix_mod) - matrix = mtx4_z90 * ob.armature_matrix # dont apply armature matrix anymore + matrix = mtx4_z90 * ob.matrix_local # dont apply armature matrix anymore # matrix = mtx4_z90 * ob.matrix['ARMATURESPACE'] # dont apply armature matrix anymore parent = ob.parent if parent: #par_matrix = mtx4_z90 * (parent.matrix['ARMATURESPACE'] * matrix_mod) - par_matrix = mtx4_z90 * parent.armature_matrix # dont apply armature matrix anymore + par_matrix = mtx4_z90 * parent.matrix_local # dont apply armature matrix anymore # par_matrix = mtx4_z90 * parent.matrix['ARMATURESPACE'] # dont apply armature matrix anymore matrix = matrix * par_matrix.copy().invert() @@ -841,7 +841,7 @@ def write(filename, batch_objects = None, \ """ file.write('\n\t\t\tProperty: "LimbLength", "double", "",%.6f' % - (my_bone.blenBone.armature_head - my_bone.blenBone.armature_tail).length) + (my_bone.blenBone.head_local - my_bone.blenBone.tail_local).length) # (my_bone.blenBone.head['ARMATURESPACE'] - my_bone.blenBone.tail['ARMATURESPACE']).length) #file.write('\n\t\t\tProperty: "LimbLength", "double", "",1') diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index c5b8b185893..84614c9dc70 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +import bpy + header = ''' digraph ancestors { graph [fontsize=30 labelloc="t" label="" splines=false overlap=true, rankdir=BT]; @@ -84,6 +86,8 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) + fw('\n\n# Hierarchy:\n') + # Root node. if FAKE_PARENT: fw('"Object::%s" [];\n' % obj.name) @@ -110,7 +114,10 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): # constraints if CONSTRAINTS: - for pbone in obj.pose.bones: + fw('\n\n# Constraints:\n') + for bone in bones: + pbone = obj.pose.bones[bone] + # must be ordered for constraint in pbone.constraints: subtarget = constraint.subtarget if subtarget: @@ -122,6 +129,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): # Drivers if DRIVERS: + fw('\n\n# Drivers:\n') def rna_path_as_pbone(rna_path): if not rna_path.startswith("pose.bones["): return None @@ -156,9 +164,13 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): fw(footer) file.close() + ''' print(".", end='') import sys sys.stdout.flush() + ''' + print("\nSaved:", path) + return True if __name__ == "__main__": import bpy diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 4bea061758d..0a5445d2642 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -528,7 +528,7 @@ static void rna_def_bone(BlenderRNA *brna) RNA_def_property_array(prop, 9); RNA_def_property_ui_text(prop, "Bone Matrix", "3x3 bone matrix."); - prop= RNA_def_property(srna, "armature_matrix", PROP_FLOAT, PROP_MATRIX); + prop= RNA_def_property(srna, "matrix_local", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "arm_mat"); RNA_def_property_array(prop, 16); RNA_def_property_ui_text(prop, "Bone Armature-Relative Matrix", "4x4 bone matrix relative to armature."); @@ -538,7 +538,7 @@ static void rna_def_bone(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Tail", "Location of tail end of the bone."); - prop= RNA_def_property(srna, "armature_tail", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "tail_local", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "arm_tail"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Armature-Relative Tail", "Location of tail end of the bone relative to armature."); @@ -546,9 +546,9 @@ static void rna_def_bone(BlenderRNA *brna) prop= RNA_def_property(srna, "head", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "head"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Head", "Location of head end of the bone."); + RNA_def_property_ui_text(prop, "Head", "Location of head end of the bone relative to its parent."); - prop= RNA_def_property(srna, "armature_head", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "head_local", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "arm_head"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Armature-Relative Head", "Location of head end of the bone relative to armature."); -- cgit v1.2.3 From 03a9740c16861511fec9908fa0afe4d42620773d Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 11:23:11 +0000 Subject: Quicktime : make dna codecType data store the quicktime codecType value instead of a proxy value Quicktime codecType data is a 32 bit value (4 chars coded). Implemented RNA set/get functions for codecType enum to cope with RNA enum values 24bit precision limitation Implemented dynamic codecType enum list creation Carbon quicktime now stores codec settings in "clear" in the QuicktimeCodecSettings dna struct (in addition to the closed atom container in QuicktimeCodecData) to be compatible with the QTKit version +fixed some warnings --- source/blender/makesrna/intern/rna_scene.c | 60 ++++++-- source/blender/quicktime/apple/qtkit_export.m | 95 +++++++----- source/blender/quicktime/apple/qtkit_import.m | 5 +- source/blender/quicktime/apple/quicktime_export.c | 167 +++++++++++++++++----- source/blender/quicktime/quicktime_export.h | 109 ++++++++++++-- 5 files changed, 341 insertions(+), 95 deletions(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 433e0974d35..8e7813e6946 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -410,6 +410,48 @@ static void rna_SceneRenderData_jpeg2k_depth_set(PointerRNA *ptr, int value) } #endif +#ifdef WITH_QUICKTIME +static int rna_SceneRenderData_qtcodecsettings_codecType_get(PointerRNA *ptr) +{ + RenderData *rd= (RenderData*)ptr->data; + + return quicktime_rnatmpvalue_from_codectype(rd->qtcodecsettings.codecType); +} + +static void rna_SceneRenderData_qtcodecsettings_codecType_set(PointerRNA *ptr, int value) +{ + RenderData *rd= (RenderData*)ptr->data; + + rd->qtcodecsettings.codecType = quicktime_codecType_from_rnatmpvalue(value); +} + +static EnumPropertyItem *rna_SceneRenderData_qtcodecsettings_codecType_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + EnumPropertyItem *item= NULL; + EnumPropertyItem tmp = {0, "", 0, "", ""}; + QuicktimeCodecTypeDesc *codecTypeDesc; + int i=1, totitem= 0; + char id[5]; + + for(i=0;irnatmpvalue; + *((int*)id) = codecTypeDesc->codecType; + id[4] = 0; + tmp.identifier= id; + tmp.name= codecTypeDesc->codecName; + RNA_enum_item_add(&item, &totitem, &tmp); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} +#endif + static int rna_SceneRenderData_active_layer_index_get(PointerRNA *ptr) { RenderData *rd= (RenderData*)ptr->data; @@ -1457,7 +1499,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) # ifdef USE_QTKIT {R_QUICKTIME, "QUICKTIME_QTKIT", ICON_FILE_MOVIE, "QuickTime", ""}, # else - {R_QUICKTIME, "QUICKTIME", ICON_FILE_MOVIE, "QuickTime", ""}, + {R_QUICKTIME, "QUICKTIME_CARBON", ICON_FILE_MOVIE, "QuickTime", ""}, # endif #endif #ifdef __sgi @@ -1508,18 +1550,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) #ifdef WITH_QUICKTIME static EnumPropertyItem quicktime_codec_type_items[] = { - {QT_CODECTYPE_RAW, "RAW", 0, "Uncompressed", ""}, - {QT_CODECTYPE_JPEG, "JPEG", 0, "JPEG", ""}, - {QT_CODECTYPE_MJPEGA, "MJPEG_A", 0, "M-JPEG A", ""}, - {QT_CODECTYPE_MJPEGB, "MJPEG_B", 0, "M-JPEG B", ""}, - {QT_CODECTYPE_DVCPAL, "DVCPAL", 0, "DV PAL", ""}, - {QT_CODECTYPE_DVCNTSC, "DVCNTSC", 0, "DV/DVCPRO NTSC", ""}, - {QT_CODECTYPE_DVCPROHD720p, "DVCPROHD720P", 0, "DVCPRO HD 720p"}, - {QT_CODECTYPE_DVCPROHD1080i50, "DVCPROHD1080I50", 0, "DVCPRO HD 1080i50"}, - {QT_CODECTYPE_DVCPROHD1080i60, "DVCPROHD1080I60", 0, "DVCPRO HD 1080i60"}, - {QT_CODECTYPE_MPEG4, "MPEG4", 0, "MPEG4", ""}, - {QT_CODECTYPE_H263, "H263", 0, "H.263", ""}, - {QT_CODECTYPE_H264, "H264", 0, "H.264", ""}, + {0, "codec", 0, "codec", ""}, {0, NULL, 0, NULL, NULL}}; #endif @@ -1718,6 +1749,9 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "quicktime_codec_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "qtcodecsettings.codecType"); RNA_def_property_enum_items(prop, quicktime_codec_type_items); + RNA_def_property_enum_funcs(prop, "rna_SceneRenderData_qtcodecsettings_codecType_get", + "rna_SceneRenderData_qtcodecsettings_codecType_set", + "rna_SceneRenderData_qtcodecsettings_codecType_itemf"); RNA_def_property_ui_text(prop, "Codec", "QuickTime codec type"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 6788c22d9a1..59cd669d738 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -49,10 +49,6 @@ #include "MEM_guardedalloc.h" -#include "quicktime_import.h" -#include "quicktime_export.h" - - #ifdef __APPLE__ /* evil */ #ifndef __AIFF__ @@ -65,6 +61,9 @@ #error OSX 10.5 minimum is needed for QTKit #endif +#include "quicktime_import.h" +#include "quicktime_export.h" + #endif /* __APPLE__ */ typedef struct QuicktimeExport { @@ -78,36 +77,65 @@ typedef struct QuicktimeExport { static struct QuicktimeExport *qtexport; +#pragma mark rna helper functions -static NSString *stringWithCodecType(int codecType) { - switch (codecType) { - case QT_CODECTYPE_RAW: - return @"raw "; - case QT_CODECTYPE_MJPEGA: - return @"mjpa"; - case QT_CODECTYPE_MJPEGB: - return @"mjpb"; - case QT_CODECTYPE_DVCPAL: - return @"dvcp"; - case QT_CODECTYPE_DVCNTSC: - return @"dvc "; - case QT_CODECTYPE_MPEG4: - return @"mp4v"; - case QT_CODECTYPE_H263: - return @"h263"; - case QT_CODECTYPE_H264: - return @"avc1"; - case QT_CODECTYPE_DVCPROHD720p: - return @"dvhp"; - case QT_CODECTYPE_DVCPROHD1080i50: - return @"dvh5"; - case QT_CODECTYPE_DVCPROHD1080i60: - return @"dvh6"; - - case QT_CODECTYPE_JPEG: - default: - return @"jpeg"; + +static QuicktimeCodecTypeDesc qtCodecList[] = { + {kRawCodecType, 1, "Uncompressed"}, + {kJPEGCodecType, 2, "JPEG"}, + {kMotionJPEGACodecType, 3, "M-JPEG A"}, + {kMotionJPEGBCodecType, 4, "M-JPEG B"}, + {kDVCPALCodecType, 5, "DV PAL"}, + {kDVCNTSCCodecType, 6, "DV/DVCPRO NTSC"}, + {kDVCPROHD720pCodecType, 7, "DVCPRO HD 720p"}, + {kDVCPROHD1080i50CodecType, 8, "DVCPRO HD 1080i50"}, + {kDVCPROHD1080i60CodecType, 9, "DVCPRO HD 1080i60"}, + {kMPEG4VisualCodecType, 10, "MPEG4"}, + {kH263CodecType, 11, "H.263"}, + {kH264CodecType, 12, "H.264"}, + {0,0,NULL}}; + +static int qtCodecCount = 12; + +int quicktime_get_num_codecs() { + return qtCodecCount; +} + +QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue) { + if ((indexValue>=0) && (indexValue < qtCodecCount)) + return &qtCodecList[indexValue]; + else + return NULL; +} + +int quicktime_rnatmpvalue_from_codectype(int codecType) { + int i; + for (i=0;iqtcodecsettings.codecSpatialQuality <0) || (rd->qtcodecsettings.codecSpatialQuality > 100)) { - rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG; + rd->qtcodecsettings.codecType = kJPEGCodecType; rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality; } } diff --git a/source/blender/quicktime/apple/qtkit_import.m b/source/blender/quicktime/apple/qtkit_import.m index 500ee13330d..31a6ca71259 100644 --- a/source/blender/quicktime/apple/qtkit_import.m +++ b/source/blender/quicktime/apple/qtkit_import.m @@ -137,7 +137,7 @@ static ImBuf * nsImageToiBuf(NSImage *sourceImage, int width, int height) uchar *toIBuf = NULL; int x, y, to_i, from_i; NSSize bitmapSize; - NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA,*bitmapImage; + NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA,*bitmapImage=nil; NSEnumerator *enumerator; NSImageRep *representation; @@ -150,12 +150,13 @@ static ImBuf * nsImageToiBuf(NSImage *sourceImage, int width, int height) /*Get the bitmap of the image*/ enumerator = [[sourceImage representations] objectEnumerator]; - while (representation = [enumerator nextObject]) { + while ((representation = [enumerator nextObject])) { if ([representation isKindOfClass:[NSBitmapImageRep class]]) { bitmapImage = (NSBitmapImageRep *)representation; break; } } + if (bitmapImage == nil) return NULL; if (([bitmapImage bitsPerPixel] == 32) && (([bitmapImage bitmapFormat] & 0x5) == 0) && ![bitmapImage isPlanar]) { diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index 851b3c5b245..c6c412ae24b 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -77,6 +77,7 @@ static void QT_EndAddVideoSamplesToMedia (void); static void QT_CreateMyVideoTrack (int rectx, int recty); static void QT_EndCreateMyVideoTrack (void); static void check_renderbutton_framerate(struct RenderData *rd); +static int get_qtcodec_settings(struct RenderData *rd); typedef struct QuicktimeExport { @@ -113,6 +114,57 @@ static struct QuicktimeComponentData *qtdata; static int sframe; +/* RNA functions */ + +static QuicktimeCodecTypeDesc qtCodecList[] = { + {kRawCodecType, 1, "Uncompressed"}, + {kJPEGCodecType, 2, "JPEG"}, + {kMotionJPEGACodecType, 3, "M-JPEG A"}, + {kMotionJPEGBCodecType, 4, "M-JPEG B"}, + {kDVCPALCodecType, 5, "DV PAL"}, + {kDVCNTSCCodecType, 6, "DV/DVCPRO NTSC"}, + {kDVCPROHD720pCodecType, 7, "DVCPRO HD 720p"}, + {kDVCPROHD1080i50CodecType, 8, "DVCPRO HD 1080i50"}, + {kDVCPROHD1080i60CodecType, 9, "DVCPRO HD 1080i60"}, + {kMPEG4VisualCodecType, 10, "MPEG4"}, + {kH263CodecType, 11, "H.263"}, + {kH264CodecType, 12, "H.264"}, + {0,0,NULL}}; + +static int qtCodecCount = 12; + +int quicktime_get_num_codecs() { + return qtCodecCount; +} + +QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue) { + if ((indexValue>=0) && (indexValue < qtCodecCount)) + return &qtCodecList[indexValue]; + else + return NULL; +} + +int quicktime_rnatmpvalue_from_codectype(int codecType) { + int i; + for (i=0;iqtcodecdata; - + // check if current scene already has qtcodec settings, and clear them if (qcd) { free_qtcodecdata(qcd); @@ -183,8 +234,6 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) { Handle myHandle = NULL; ComponentResult myErr = noErr; -// CodecInfo ci; -// char str[255]; QuicktimeCodecData *qcd = rd->qtcodecdata; @@ -207,9 +256,22 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); -// GetCodecInfo (&ci, qtdata->gSpatialSettings.codecType, 0); -// CopyPascalStringToC(ci.typeName, str); -// printf("restored Codec: %s\n", str); + + //Fill the render QuicktimeCodecSettigns struct + rd->qtcodecsettings.codecTemporalQuality = (qtdata->gTemporalSettings.temporalQuality * 100) / codecLosslessQuality; + //Do not override scene frame rate (qtdata->gTemporalSettings.framerate) + rd->qtcodecsettings.keyFrameRate = qtdata->gTemporalSettings.keyFrameRate; + + rd->qtcodecsettings.codecType = qtdata->gSpatialSettings.codecType; + rd->qtcodecsettings.codec = (int)qtdata->gSpatialSettings.codec; + rd->qtcodecsettings.colorDepth = qtdata->gSpatialSettings.depth; + rd->qtcodecsettings.codecSpatialQuality = (qtdata->gSpatialSettings.spatialQuality * 100) / codecLosslessQuality; + + rd->qtcodecsettings.bitRate = qtdata->aDataRateSetting.dataRate; + rd->qtcodecsettings.minSpatialQuality = (qtdata->aDataRateSetting.minSpatialQuality * 100) / codecLosslessQuality; + rd->qtcodecsettings.minTemporalQuality = (qtdata->aDataRateSetting.minTemporalQuality * 100) / codecLosslessQuality; + //Frame duration is already known (qtdata->aDataRateSetting.frameDuration) + } else { printf("Quicktime: QT_GetCodecSettingsFromScene failed\n"); } @@ -473,6 +535,7 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) makeqtstring(rd, name); #ifdef __APPLE__ + EnterMoviesOnThread(0); sprintf(theFullPath, "%s", name); /* hack: create an empty file to make FSPathMakeRef() happy */ @@ -508,6 +571,9 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) if(err != noErr) { G.afbreek = 1; // XXX error("Unable to create Quicktime movie: %s", name); +#ifdef __APPLE__ + ExitMoviesOnThread(); +#endif } else { printf("Created QuickTime movie: %s\n", name); @@ -545,6 +611,8 @@ void end_qt(void) { printf("Finished QuickTime movie.\n"); } + ExitMoviesOnThread(); + if(qtexport) { MEM_freeN(qtexport); qtexport = NULL; @@ -576,7 +644,7 @@ static void check_renderbutton_framerate(RenderData *rd) else { if (rd->frs_sec_base > 0) qtdata->gTemporalSettings.frameRate = - (rd->frs_sec << 16) / rd->frs_sec_base ; + ((float)(rd->frs_sec << 16) / rd->frs_sec_base) ; } err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); @@ -600,21 +668,24 @@ static void check_renderbutton_framerate(RenderData *rd) void quicktime_verify_image_type(RenderData *rd) { if (rd->imtype == R_QUICKTIME) { - if ((rd->qtcodecsettings.codecType<= 0) || + if ((rd->qtcodecsettings.codecType== 0) || (rd->qtcodecsettings.codecSpatialQuality <0) || (rd->qtcodecsettings.codecSpatialQuality > 100)) { - rd->qtcodecsettings.codecType = QT_CODECTYPE_JPEG; + rd->qtcodecsettings.codecType = kJPEGCodecType; + rd->qtcodecsettings.codec = (int)anyCodec; rd->qtcodecsettings.codecSpatialQuality = (codecHighQuality*100)/codecLosslessQuality; + rd->qtcodecsettings.codecTemporalQuality = (codecHighQuality*100)/codecLosslessQuality; + rd->qtcodecsettings.keyFrameRate = 25; + rd->qtcodecsettings.bitRate = 5000000; //5 Mbps } } } int get_qtcodec_settings(RenderData *rd) { - OSErr err = noErr; - - // erase any existing codecsetting + OSErr err = noErr; + // erase any existing codecsetting if(qtdata) { if(qtdata->theComponent) CloseComponent(qtdata->theComponent); free_qtcomponentdata(); @@ -624,20 +695,28 @@ int get_qtcodec_settings(RenderData *rd) qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeComponentData"); qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType); - // get previous selected codecsetting, if any + // get previous selected codecsetting, from qtatom or detailed settings if(rd->qtcodecdata && rd->qtcodecdata->cdParms) { QT_GetCodecSettingsFromScene(rd); - check_renderbutton_framerate(rd); } else { - // configure the standard image compression dialog box - // set some default settings: codec=jpeg, quality = max - qtdata->gSpatialSettings.codecType = kJPEGCodecType; - qtdata->gSpatialSettings.codec = anyCodec; - qtdata->gSpatialSettings.spatialQuality = codecHighQuality; - qtdata->gTemporalSettings.temporalQuality = codecHighQuality; - qtdata->gTemporalSettings.keyFrameRate = 25; - qtdata->aDataRateSetting.dataRate = 5 * 1024 * 1024; + SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); + SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); + SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); + qtdata->gSpatialSettings.codecType = rd->qtcodecsettings.codecType; + qtdata->gSpatialSettings.codec = (CodecComponent)rd->qtcodecsettings.codec; + qtdata->gSpatialSettings.spatialQuality = (rd->qtcodecsettings.codecSpatialQuality * codecLosslessQuality) /100; + qtdata->gTemporalSettings.temporalQuality = (rd->qtcodecsettings.codecTemporalQuality * codecLosslessQuality) /100; + qtdata->gTemporalSettings.keyFrameRate = rd->qtcodecsettings.keyFrameRate; + qtdata->aDataRateSetting.dataRate = rd->qtcodecsettings.bitRate; + qtdata->gSpatialSettings.depth = rd->qtcodecsettings.colorDepth; + qtdata->aDataRateSetting.minSpatialQuality = (rd->qtcodecsettings.minSpatialQuality * codecLosslessQuality) / 100; + qtdata->aDataRateSetting.minTemporalQuality = (rd->qtcodecsettings.minTemporalQuality * codecLosslessQuality) / 100; + + qtdata->aDataRateSetting.frameDuration = rd->frs_sec; + SetMovieTimeScale(qtexport->theMovie, rd->frs_sec_base*1000); + + err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); CheckError(err, "SCSetInfo1 error"); err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); @@ -647,22 +726,42 @@ int get_qtcodec_settings(RenderData *rd) } check_renderbutton_framerate(rd); + + return err; +} - /* Remove this dialog box pop up as this function is called from the render thread - Anyway, all config should be done inside blender ui before starting render. - // put up the dialog box - it needs to be called from the main thread +int request_qtcodec_settings(RenderData *rd) +{ + OSErr err = noErr; + + // put up the dialog box - it needs to be called from the main thread err = SCRequestSequenceSettings(qtdata->theComponent); if (err == scUserCancelled) { - G.afbreek = 1; return 0; } - // get user selected data - SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); + // update runtime codecsettings for use with the codec dialog + SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); - SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);*/ - + SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); + + + //Fill the render QuicktimeCodecSettings struct + rd->qtcodecsettings.codecTemporalQuality = (qtdata->gTemporalSettings.temporalQuality * 100) / codecLosslessQuality; + //Do not override scene frame rate (qtdata->gTemporalSettings.framerate) + rd->qtcodecsettings.keyFrameRate = qtdata->gTemporalSettings.keyFrameRate; + + rd->qtcodecsettings.codecType = qtdata->gSpatialSettings.codecType; + rd->qtcodecsettings.codec = (int)qtdata->gSpatialSettings.codec; + rd->qtcodecsettings.colorDepth = qtdata->gSpatialSettings.depth; + rd->qtcodecsettings.codecSpatialQuality = (qtdata->gSpatialSettings.spatialQuality * 100) / codecLosslessQuality; + + rd->qtcodecsettings.bitRate = qtdata->aDataRateSetting.dataRate; + rd->qtcodecsettings.minSpatialQuality = (qtdata->aDataRateSetting.minSpatialQuality * 100) / codecLosslessQuality; + rd->qtcodecsettings.minTemporalQuality = (qtdata->aDataRateSetting.minTemporalQuality * 100) / codecLosslessQuality; + //Frame duration is already known (qtdata->aDataRateSetting.frameDuration) + QT_SaveCodecSettingsToScene(rd); // framerate jugglin' @@ -692,11 +791,11 @@ int get_qtcodec_settings(RenderData *rd) if ((qtdata->gTemporalSettings.frameRate & 0xffff) == 0) { rd->frs_sec = fps / 65536; - rd->frs_sec_base = 1; + rd->frs_sec_base = 1.0; } else { /* we do our very best... */ - rd->frs_sec = (fps * 10000 / 65536); - rd->frs_sec_base = 10000; + rd->frs_sec = fps / 65536; + rd->frs_sec_base = 1.0; } } diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 7972c826190..61153ff91d2 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -33,19 +33,13 @@ #define __AIFF__ -/* Quicktime codec types defines */ -#define QT_CODECTYPE_JPEG 1 -#define QT_CODECTYPE_MJPEGA 2 -#define QT_CODECTYPE_MJPEGB 3 -#define QT_CODECTYPE_DVCPAL 4 -#define QT_CODECTYPE_DVCNTSC 5 -#define QT_CODECTYPE_MPEG4 6 -#define QT_CODECTYPE_H263 7 -#define QT_CODECTYPE_H264 8 -#define QT_CODECTYPE_RAW 9 -#define QT_CODECTYPE_DVCPROHD720p 10 -#define QT_CODECTYPE_DVCPROHD1080i50 11 -#define QT_CODECTYPE_DVCPROHD1080i60 12 + +/*Codec list*/ +typedef struct QuicktimeCodecTypeDesc { + int codecType; + int rnatmpvalue; + char * codecName; +} QuicktimeCodecTypeDesc ; // quicktime movie output functions struct RenderData; @@ -55,11 +49,100 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty); void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); void end_qt(void); +/*RNA helper functions */ void quicktime_verify_image_type(struct RenderData *rd); //used by RNA for defaults values init, if needed +int quicktime_get_num_codecs(); +QuicktimeCodecTypeDesc* quicktime_get_codecType_desc(int indexValue); +int quicktime_rnatmpvalue_from_codectype(int codecType); +int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue); + +#ifndef USE_QTKIT +int request_qtcodec_settings(struct RenderData *rd); //Raise quicktime standard dialog to request codec settings +#endif + void free_qtcomponentdata(void); void makeqtstring(struct RenderData *rd, char *string); //for playanim.c + + +#if (defined(USE_QTKIT) && defined(MAC_OS_X_VERSION_10_6) && __LP64__) +//Include the quicktime codec types constants that are missing in QTKitDefines.h in 10.6 / 64bit +enum { + kRawCodecType = 'raw ', + kCinepakCodecType = 'cvid', + kGraphicsCodecType = 'smc ', + kAnimationCodecType = 'rle ', + kVideoCodecType = 'rpza', + kComponentVideoCodecType = 'yuv2', + kJPEGCodecType = 'jpeg', + kMotionJPEGACodecType = 'mjpa', + kMotionJPEGBCodecType = 'mjpb', + kSGICodecType = '.SGI', + kPlanarRGBCodecType = '8BPS', + kMacPaintCodecType = 'PNTG', + kGIFCodecType = 'gif ', + kPhotoCDCodecType = 'kpcd', + kQuickDrawGXCodecType = 'qdgx', + kAVRJPEGCodecType = 'avr ', + kOpenDMLJPEGCodecType = 'dmb1', + kBMPCodecType = 'WRLE', + kWindowsRawCodecType = 'WRAW', + kVectorCodecType = 'path', + kQuickDrawCodecType = 'qdrw', + kWaterRippleCodecType = 'ripl', + kFireCodecType = 'fire', + kCloudCodecType = 'clou', + kH261CodecType = 'h261', + kH263CodecType = 'h263', + kDVCNTSCCodecType = 'dvc ', /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/ + /* NOTE: kDVCProNTSCCodecType is deprecated. */ + /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */ + /* the two data formats are identical.*/ + kDVCPALCodecType = 'dvcp', + kDVCProPALCodecType = 'dvpp', /* available in QuickTime 6.0 or later*/ + kDVCPro50NTSCCodecType = 'dv5n', + kDVCPro50PALCodecType = 'dv5p', + kDVCPro100NTSCCodecType = 'dv1n', + kDVCPro100PALCodecType = 'dv1p', + kDVCPROHD720pCodecType = 'dvhp', + kDVCPROHD1080i60CodecType = 'dvh6', + kDVCPROHD1080i50CodecType = 'dvh5', + kBaseCodecType = 'base', + kFLCCodecType = 'flic', + kTargaCodecType = 'tga ', + kPNGCodecType = 'png ', + kTIFFCodecType = 'tiff', /* NOTE: despite what might seem obvious from the two constants*/ + /* below and their names, they really are correct. 'yuvu' really */ + /* does mean signed, and 'yuvs' really does mean unsigned. Really. */ + kComponentVideoSigned = 'yuvu', + kComponentVideoUnsigned = 'yuvs', + kCMYKCodecType = 'cmyk', + kMicrosoftVideo1CodecType = 'msvc', + kSorensonCodecType = 'SVQ1', + kSorenson3CodecType = 'SVQ3', /* available in QuickTime 5 and later*/ + kIndeo4CodecType = 'IV41', + kMPEG4VisualCodecType = 'mp4v', + k64ARGBCodecType = 'b64a', + k48RGBCodecType = 'b48r', + k32AlphaGrayCodecType = 'b32a', + k16GrayCodecType = 'b16g', + kMpegYUV420CodecType = 'myuv', + kYUV420CodecType = 'y420', + kSorensonYUV9CodecType = 'syv9', + k422YpCbCr8CodecType = '2vuy', /* Component Y'CbCr 8-bit 4:2:2 */ + k444YpCbCr8CodecType = 'v308', /* Component Y'CbCr 8-bit 4:4:4 */ + k4444YpCbCrA8CodecType = 'v408', /* Component Y'CbCrA 8-bit 4:4:4:4 */ + k422YpCbCr16CodecType = 'v216', /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/ + k422YpCbCr10CodecType = 'v210', /* Component Y'CbCr 10-bit 4:2:2 */ + k444YpCbCr10CodecType = 'v410', /* Component Y'CbCr 10-bit 4:4:4 */ + k4444YpCbCrA8RCodecType = 'r408', /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/ + kJPEG2000CodecType = 'mjp2', + kPixletCodecType = 'pxlt', + kH264CodecType = 'avc1' +}; +#endif + #endif //(_WIN32) || (__APPLE__) #endif // __QUICKTIME_IMP_H__ -- cgit v1.2.3 From 927b976a88a836c94651b07210f0d635d33500ef Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 2 Dec 2009 11:54:48 +0000 Subject: AAO Indirect Diffuse Don't use passes anymore for indirect lighting, people were using this probably thinking it would do bounces, but that's not the intention of this feature, it is to reduce problems with light bleeding. I want to remove this option for AO as well, but will leave it in for now until there is a better alternative. Added bounces option for indirect, could be implemented much better, but perhaps useful for testing now. Existing files need to set this to 1 to get the same results again. --- release/scripts/ui/properties_world.py | 1 + source/blender/makesdna/DNA_world_types.h | 3 +- source/blender/makesrna/intern/rna_world.c | 5 ++ source/blender/render/intern/source/occlusion.c | 77 +++++++++++++++++-------- 4 files changed, 61 insertions(+), 25 deletions(-) diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index ec0e1c42add..9adc8d0bad4 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -224,6 +224,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel): if wide_ui: col = split.column() col.prop(ao, "color") + col.prop(ao, "indirect_bounces") bpy.types.register(WORLD_PT_context_world) bpy.types.register(WORLD_PT_preview) diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 11ecbf97d97..9b3f78caee0 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -107,7 +107,8 @@ typedef struct World { short aomode, aosamp, aomix, aocolor; float ao_adapt_thresh, ao_adapt_speed_fac; float ao_approx_error, ao_approx_correction; - float ao_indirect_energy, aopad; + float ao_indirect_energy; + short ao_indirect_bounces, ao_pad; short ao_samp_method, ao_gather_method, ao_approx_passes; /* assorted settings (in the middle of ambient occlusion settings for padding reasons) */ diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index 88992387148..231faffef0f 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -318,6 +318,11 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna) RNA_def_property_ui_range(prop, 0, 10, 0.1, 3); RNA_def_property_ui_text(prop, "Indirect", "Use approximate ambient occlusion for indirect diffuse lighting."); RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "indirect_bounces", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "ao_indirect_bounces"); + RNA_def_property_ui_text(prop, "Bounces", "Number of indirect diffuse light bounces to use for approximate ambient occlusion."); + RNA_def_property_update(prop, 0, "rna_World_update"); } static void rna_def_world_mist(BlenderRNA *brna) diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index 90929db2f74..3a5680eaf70 100644 --- a/source/blender/render/intern/source/occlusion.c +++ b/source/blender/render/intern/source/occlusion.c @@ -111,6 +111,7 @@ typedef struct OcclusionTree { int dothreadedbuild; int totbuildthread; + int doindirect; OcclusionCache *cache; } OcclusionTree; @@ -652,6 +653,7 @@ static OcclusionTree *occ_tree_build(Render *re) /* parameters */ tree->error= get_render_aosss_error(&re->r, re->wrld.ao_approx_error); tree->distfac= (re->wrld.aomode & WO_AODIST)? re->wrld.aodistfac: 0.0f; + tree->doindirect= (re->wrld.ao_indirect_energy > 0.0f && re->wrld.ao_indirect_bounces > 0); /* allocation */ tree->arena= BLI_memarena_new(0x8000 * sizeof(OccNode)); @@ -664,7 +666,7 @@ static OcclusionTree *occ_tree_build(Render *re) tree->co= MEM_callocN(sizeof(float)*3*totface, "OcclusionCo"); tree->occlusion= MEM_callocN(sizeof(float)*totface, "OcclusionOcclusion"); - if(re->wrld.ao_indirect_energy != 0.0f) + if(tree->doindirect) tree->rad= MEM_callocN(sizeof(float)*3*totface, "OcclusionRad"); /* make array of face pointers */ @@ -693,7 +695,7 @@ static OcclusionTree *occ_tree_build(Render *re) tree->maxdepth= 1; occ_build_recursive(tree, tree->root, 0, totface, 1); - if(re->wrld.ao_indirect_energy != 0.0f) { + if(tree->doindirect) { occ_build_shade(re, tree); occ_sum_occlusion(tree, tree->root); } @@ -1299,14 +1301,53 @@ static void occ_lookup(OcclusionTree *tree, int thread, OccFace *exclude, float if(bentn) normalize_v3(bentn); } +static void occ_compute_bounces(Render *re, OcclusionTree *tree, int totbounce) +{ + float (*rad)[3], (*sum)[3], (*tmp)[3], co[3], n[3], occ; + int bounce, i; + + rad= MEM_callocN(sizeof(float)*3*tree->totface, "OcclusionBounceRad"); + sum= MEM_dupallocN(tree->rad); + + for(bounce=1; bouncetotface; i++) { + occ_face(&tree->face[i], co, n, NULL); + madd_v3_v3fl(co, n, 1e-8f); + + occ_lookup(tree, 0, &tree->face[i], co, n, &occ, rad[i], NULL); + rad[i][0]= MAX2(rad[i][0], 0.0f); + rad[i][1]= MAX2(rad[i][1], 0.0f); + rad[i][2]= MAX2(rad[i][2], 0.0f); + add_v3_v3(sum[i], rad[i]); + + if(re->test_break(re->tbh)) + break; + } + + if(re->test_break(re->tbh)) + break; + + tmp= tree->rad; + tree->rad= rad; + rad= tmp; + + occ_sum_occlusion(tree, tree->root); + } + + MEM_freeN(rad); + MEM_freeN(tree->rad); + tree->rad= sum; + + if(!re->test_break(re->tbh)) + occ_sum_occlusion(tree, tree->root); +} + static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) { - float *occ, (*rad)[3]= NULL, co[3], n[3]; + float *occ, co[3], n[3]; int pass, i; occ= MEM_callocN(sizeof(float)*tree->totface, "OcclusionPassOcc"); - if(tree->rad) - rad= MEM_callocN(sizeof(float)*3*tree->totface, "OcclusionPassRad"); for(pass=0; passtotface; i++) { @@ -1314,7 +1355,7 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) negate_v3(n); VECADDFAC(co, co, n, 1e-8f); - occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL, (rad)? rad[i]: NULL); + occ_lookup(tree, 0, &tree->face[i], co, n, &occ[i], NULL, NULL); if(re->test_break(re->tbh)) break; } @@ -1326,41 +1367,27 @@ static void occ_compute_passes(Render *re, OcclusionTree *tree, int totpass) tree->occlusion[i] -= occ[i]; //MAX2(1.0f-occ[i], 0.0f); if(tree->occlusion[i] < 0.0f) tree->occlusion[i]= 0.0f; - - if(rad) { - sub_v3_v3(tree->rad[i], rad[i]); - - if(tree->rad[i][0] < 0.0f) - tree->rad[i][0]= 0.0f; - if(tree->rad[i][1] < 0.0f) - tree->rad[i][1]= 0.0f; - if(tree->rad[i][2] < 0.0f) - tree->rad[i][2]= 0.0f; - } } occ_sum_occlusion(tree, tree->root); } MEM_freeN(occ); - if(rad) - MEM_freeN(rad); } static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *ao, float *indirect) { float nn[3], bn[3], fac, occ, occlusion, correction, rad[3]; - int aocolor, aorad; + int aocolor; aocolor= re->wrld.aocolor; if(onlyshadow) aocolor= WO_AOPLAIN; - aorad= (re->wrld.ao_indirect_energy != 0.0f); VECCOPY(nn, n); negate_v3(nn); - occ_lookup(tree, thread, exclude, co, nn, &occ, (aorad)? rad: NULL, (aocolor)? bn: NULL); + occ_lookup(tree, thread, exclude, co, nn, &occ, (tree->doindirect)? rad: NULL, (aocolor)? bn: NULL); correction= re->wrld.ao_approx_correction; @@ -1398,7 +1425,7 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f ao[2]= occlusion; } - if(aorad) copy_v3_v3(indirect, rad); + if(tree->doindirect) copy_v3_v3(indirect, rad); else zero_v3(indirect); } @@ -1600,8 +1627,10 @@ void make_occ_tree(Render *re) re->occlusiontree= occ_tree_build(re); if(re->occlusiontree) { - if(re->wrld.ao_approx_passes) + if(re->wrld.ao_approx_passes > 0) occ_compute_passes(re, re->occlusiontree, re->wrld.ao_approx_passes); + if(re->wrld.ao_indirect_bounces > 1) + occ_compute_bounces(re, re->occlusiontree, re->wrld.ao_indirect_bounces); for(mesh=re->strandsurface.first; mesh; mesh=mesh->next) { if(!mesh->face || !mesh->co || !mesh->ao) -- cgit v1.2.3 From 2bf618368a2181319e5d47b97c60417223f84893 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 11:55:47 +0000 Subject: - include example input rigs for each autorig type, running metarig_template() in each submodule generates the armature and pose bone ID properties. - rigify.write_meta_rig() exports rigs as python scripts --- release/scripts/modules/rigify/__init__.py | 60 ++++++++++++++++++++++++++++ release/scripts/modules/rigify/arm.py | 33 +++++++++++++++ release/scripts/modules/rigify/finger.py | 28 +++++++++++++ release/scripts/modules/rigify/neck.py | 51 ++++++++++++++++++++++++ release/scripts/modules/rigify/palm.py | 52 ++++++++++++++++++++++++ release/scripts/modules/rigify/spine.py | 64 ++++++++++++++++++++++++++++++ 6 files changed, 288 insertions(+) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index a0b5c721b2a..8c0643769c3 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -231,5 +231,65 @@ def generate_rig(context, ob): context.user_preferences.edit.global_undo = global_undo + +def write_meta_rig(obj, func_name="metarig_template"): + ''' Must be in editmode + ''' + code = [] + + code.append("def %s():" % func_name) + + bpy.ops.object.mode_set(mode='EDIT') + code.append(" bpy.ops.object.mode_set(mode='EDIT')") + + code.append(" obj = bpy.context.object") + code.append(" arm = obj.data") + + arm = obj.data + # write parents first + bones = [(len(bone.parent_recursive), bone.name) for bone in arm.edit_bones] + bones.sort(key=lambda item: item[0]) + bones = [item[1] for item in bones] + + + + for bone_name in bones: + bone = arm.edit_bones[bone_name] + code.append(" bone = arm.edit_bones.new('%s')" % bone.name) + code.append(" bone.head[:] = %.4f, %.4f, %.4f" % bone.head.toTuple(4)) + code.append(" bone.tail[:] = %.4f, %.4f, %.4f" % bone.tail.toTuple(4)) + code.append(" bone.roll = %.4f" % bone.roll) + code.append(" bone.connected = %s" % str(bone.connected)) + if bone.parent: + code.append(" bone.parent = arm.edit_bones['%s']" % bone.parent.name) + + bpy.ops.object.mode_set(mode='OBJECT') + code.append("") + code.append(" bpy.ops.object.mode_set(mode='OBJECT')") + + for bone_name in bones: + pbone = obj.pose.bones[bone_name] + pbone_written = False + + # Only 1 level of props, simple types supported + for key, value in pbone.items(): + if key.startswith("_"): + continue + + if type(value) not in (float, str, int): + print("Unsupported ID Prop:", str((key, value))) + continue + + if type(value) == str: + value = "'" + value + "'" + + if not pbone_written: # only write bones we need + code.append(" pbone = obj.pose.bones['%s']" % bone_name) + + code.append(" pbone['%s'] = %s" % (key, value)) + + return "\n".join(code) + + if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index d2c9208d4ff..36217ed5247 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -21,6 +21,39 @@ from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('shoulder') + bone.head[:] = 0.0000, -0.4515, 0.0000 + bone.tail[:] = 1.0000, -0.0794, 0.3540 + bone.roll = -0.2227 + bone.connected = False + bone = arm.edit_bones.new('upper_arm') + bone.head[:] = 1.1319, -0.0808, -0.0101 + bone.tail[:] = 3.0319, 0.2191, -0.1101 + bone.roll = 1.6152 + bone.connected = False + bone.parent = arm.edit_bones['shoulder'] + bone = arm.edit_bones.new('forearm') + bone.head[:] = 3.0319, 0.2191, -0.1101 + bone.tail[:] = 4.8319, -0.0809, -0.0242 + bone.roll = 1.5153 + bone.connected = True + bone.parent = arm.edit_bones['upper_arm'] + bone = arm.edit_bones.new('hand') + bone.head[:] = 4.8319, -0.0809, -0.0242 + bone.tail[:] = 5.7590, -0.1553, -0.1392 + bone.roll = -3.0083 + bone.connected = True + bone.parent = arm.edit_bones['forearm'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['upper_arm'] + pbone['type'] = 'arm' + + def main(obj, orig_bone_name): """ the bone with the 'arm' property is the upper arm, this assumes a chain as follows. diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index c71473dca8e..a9040830e4e 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -21,6 +21,34 @@ from rigify import get_bone_data, empty_layer from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get from functools import reduce + +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('finger.01') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.8788, -0.4584, -0.1327 + bone.roll = -2.8722 + bone.connected = False + bone = arm.edit_bones.new('finger.02') + bone.head[:] = 0.8788, -0.4584, -0.1327 + bone.tail[:] = 1.7483, -0.9059, -0.3643 + bone.roll = -2.7099 + bone.connected = True + bone.parent = arm.edit_bones['finger.01'] + bone = arm.edit_bones.new('finger.03') + bone.head[:] = 1.7483, -0.9059, -0.3643 + bone.tail[:] = 2.2478, -1.1483, -0.7408 + bone.roll = -2.1709 + bone.connected = True + bone.parent = arm.edit_bones['finger.02'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['finger.01'] + pbone['type'] = 'finger' + + def main(obj, orig_bone_name): # *** EDITMODE diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index c9c732b5df6..524de6e2f3d 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -21,6 +21,57 @@ from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('body') + bone.head[:] = -0.0000, -0.2771, -1.3345 + bone.tail[:] = -0.0000, -0.1708, -0.3984 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('head') + bone.head[:] = -0.0000, -0.1708, -0.1984 + bone.tail[:] = 0.0000, -0.1708, 1.6016 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['body'] + bone = arm.edit_bones.new('neck.01') + bone.head[:] = 0.0000, -0.1708, -0.1984 + bone.tail[:] = -0.0000, -0.0994, 0.1470 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['head'] + bone = arm.edit_bones.new('neck.02') + bone.head[:] = -0.0000, -0.0994, 0.1470 + bone.tail[:] = 0.0000, -0.2428, 0.5162 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.01'] + bone = arm.edit_bones.new('neck.03') + bone.head[:] = 0.0000, -0.2428, 0.5162 + bone.tail[:] = 0.0000, -0.4190, 0.8722 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.02'] + bone = arm.edit_bones.new('neck.04') + bone.head[:] = 0.0000, -0.4190, 0.8722 + bone.tail[:] = 0.0000, -0.5111, 1.1956 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.03'] + bone = arm.edit_bones.new('neck.05') + bone.head[:] = 0.0000, -0.5111, 1.1956 + bone.tail[:] = 0.0000, -0.5391, 1.6081 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.04'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['head'] + pbone['type'] = 'neck' + + def main(obj, orig_bone_name): from Mathutils import Vector diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index f6f55541c64..b9df113167c 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -20,6 +20,58 @@ import bpy from rigify import get_bone_data, copy_bone_simple from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('hand') + bone.head[:] = 0.0082, -1.2492, 0.0000 + bone.tail[:] = 0.0423, -0.4150, 0.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('palm.03') + bone.head[:] = 0.0000, 0.0000, -0.0000 + bone.tail[:] = 0.0506, 1.2781, -0.1299 + bone.roll = -3.1396 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.04') + bone.head[:] = 0.5000, -0.0000, 0.0000 + bone.tail[:] = 0.6433, 1.2444, -0.1299 + bone.roll = -3.1357 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.05') + bone.head[:] = 1.0000, 0.0000, 0.0000 + bone.tail[:] = 1.3961, 1.0084, -0.1299 + bone.roll = -3.1190 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.02') + bone.head[:] = -0.5000, 0.0000, -0.0000 + bone.tail[:] = -0.5674, 1.2022, -0.1299 + bone.roll = 3.1386 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.01') + bone.head[:] = -1.0000, 0.0000, -0.0000 + bone.tail[:] = -1.3286, 1.0590, -0.1299 + bone.roll = 3.1239 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.06') + bone.head[:] = 1.3536, -0.2941, 0.0000 + bone.tail[:] = 2.1109, 0.4807, -0.1299 + bone.roll = -3.0929 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['hand'] + pbone['type'] = 'palm' + + def main(obj, orig_bone_name): arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) children = [ebone.name for ebone in palm_ebone.children] diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index d507d6fe1bc..f75575daacb 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -20,6 +20,70 @@ import bpy from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get + +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('pelvis') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.2559, -0.1327 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('rib_cage') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.2559, 1.8673 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['pelvis'] + bone = arm.edit_bones.new('spine.01') + bone.head[:] = -0.0000, -0.0000, 0.0000 + bone.tail[:] = -0.0000, -0.2559, 0.8673 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['rib_cage'] + bone = arm.edit_bones.new('spine.02') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.3321, 1.7080 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.01'] + bone = arm.edit_bones.new('spine.03') + bone.head[:] = -0.0000, -0.3321, 1.7080 + bone.tail[:] = -0.0000, -0.0787, 2.4160 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.02'] + bone = arm.edit_bones.new('spine.04') + bone.head[:] = -0.0000, -0.0787, 2.4160 + bone.tail[:] = -0.0000, 0.2797, 3.0016 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.03'] + bone = arm.edit_bones.new('spine.05') + bone.head[:] = -0.0000, 0.2797, 3.0016 + bone.tail[:] = -0.0000, 0.4633, 3.6135 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.04'] + bone = arm.edit_bones.new('spine.06') + bone.head[:] = -0.0000, 0.4633, 3.6135 + bone.tail[:] = -0.0000, 0.3671, 4.3477 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.05'] + bone = arm.edit_bones.new('spine.07') + bone.head[:] = -0.0000, 0.3671, 4.3477 + bone.tail[:] = -0.0000, 0.0175, 5.0033 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.06'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['rib_cage'] + pbone['type'] = 'spine' + + def validate(obj, orig_bone_name): ''' The bone given is the second in a chain. -- cgit v1.2.3 From dd90ffd47b47d89dbd8c9c76556b1a0c182342e4 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 13:05:31 +0000 Subject: Cocoa: remove errors for all supported SDK/CPU configs --- intern/ghost/intern/GHOST_SystemCocoa.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 0aa9f8d4ac2..f7036f21642 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -863,7 +863,11 @@ GHOST_TSuccess GHOST_SystemCocoa::handleApplicationBecomeActiveEvent() #else //If build against an older SDK, check if running on 10.6 to use the correct function if ([NSEvent respondsToSelector:@selector(modifierFlags)]) { +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 modifiers = (unsigned int)[NSEvent modifierFlags]; +#else + modifiers = (NSUInteger)[NSEvent modifierFlags]; +#endif } else { //TODO: need to find a better workaround for the missing cocoa "getModifierFlag" function in 10.4/10.5 -- cgit v1.2.3 From d56324b254ce689bf1d983696c2d4e4af1ea6604 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 2 Dec 2009 13:21:22 +0000 Subject: UI: remove unnecessary colon on toggle array buttons. --- source/blender/editors/interface/interface_layout.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 175f1ff1e2a..ceb5ac10486 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -896,7 +896,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER)) name= ui_item_name_add_colon(name, namestr); - else if(type == PROP_BOOLEAN && len) + else if(type == PROP_BOOLEAN && len && index == RNA_NO_INDEX) name= ui_item_name_add_colon(name, namestr); else if(type == PROP_ENUM && index != RNA_ENUM_VALUE) name= ui_item_name_add_colon(name, namestr); -- cgit v1.2.3 From a219c93cb0415962ce09930a6475286bc4a18453 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 14:39:49 +0000 Subject: Quicktime(Carbon/win32) : add operator to raise the "compression settings" quicktime standard dialog --- release/scripts/ui/properties_render.py | 4 ++ source/blender/editors/render/SConscript | 10 +++- source/blender/editors/render/render_ops.c | 8 +++ source/blender/quicktime/CMakeLists.txt | 2 + source/blender/quicktime/SConscript | 2 + source/blender/quicktime/apple/quicktime_export.c | 68 ++++++++++++++++++++++- source/blender/quicktime/quicktime_export.h | 3 +- 7 files changed, 94 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 35f52552e6b..aa04e277f69 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -344,6 +344,10 @@ class RENDER_PT_output(RenderButtonsPanel): split = layout.split() split.prop(rd, "tiff_bit") + elif rd.file_format == 'QUICKTIME_CARBON': + split = layout.split() + split.operator("scene.render_data_set_quicktime_codec") + elif rd.file_format == 'QUICKTIME_QTKIT': split = layout.split() col = split.column() diff --git a/source/blender/editors/render/SConscript b/source/blender/editors/render/SConscript index b1b1165a1fe..575f988544c 100644 --- a/source/blender/editors/render/SConscript +++ b/source/blender/editors/render/SConscript @@ -16,4 +16,12 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] -env.BlenderLib ( 'bf_editors_render', sources, Split(incs), [], libtype=['core'], priority=[45] ) + +if env['WITH_BF_QUICKTIME']: + incs += ' ../../quicktime' + env.Append(CFLAGS=['-DWITH_QUICKTIME']) + +if env['USE_QTKIT']: + env.Append(CFLAGS=['-DUSE_QTKIT']) + +env.BlenderLib ( 'bf_editors_render', sources, Split(incs), [], libtype=['core'], priority=[45]) diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c index 8c0c1b18fca..3e1643fab7b 100644 --- a/source/blender/editors/render/render_ops.c +++ b/source/blender/editors/render/render_ops.c @@ -34,6 +34,10 @@ #include "render_intern.h" // own include +#if (defined(WITH_QUICKTIME) && !defined(USE_QTKIT)) +#include "quicktime_export.h" +#endif + /***************************** render ***********************************/ void ED_operatortypes_render(void) @@ -52,6 +56,10 @@ void ED_operatortypes_render(void) WM_operatortype_append(SCENE_OT_render_layer_add); WM_operatortype_append(SCENE_OT_render_layer_remove); +#if (defined(WITH_QUICKTIME) && !defined(USE_QTKIT)) + WM_operatortype_append(SCENE_OT_render_data_set_quicktime_codec); +#endif + WM_operatortype_append(TEXTURE_OT_slot_move); } diff --git a/source/blender/quicktime/CMakeLists.txt b/source/blender/quicktime/CMakeLists.txt index 14589ca4c5b..7df589b21df 100644 --- a/source/blender/quicktime/CMakeLists.txt +++ b/source/blender/quicktime/CMakeLists.txt @@ -34,6 +34,7 @@ SET(INC . ../quicktime ../makesdna + ../makesrna ../../../intern/guardedalloc ../blenlib ../blenkernel @@ -43,6 +44,7 @@ SET(INC ../blenloader ../render/extern/include ../include + ../windowmanager ) SET(INC ${INC} ${QUICKTIME_INC}) diff --git a/source/blender/quicktime/SConscript b/source/blender/quicktime/SConscript index 1f9847d7854..549b3cffe5a 100644 --- a/source/blender/quicktime/SConscript +++ b/source/blender/quicktime/SConscript @@ -13,6 +13,8 @@ else: incs = ['.', '../quicktime', '../makesdna', + '../makesrna', + '../windowmanager', '#/intern/guardedalloc', '../blenlib', '../blenkernel', diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index c6c412ae24b..dea170ddeb4 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -32,9 +32,14 @@ #if defined(_WIN32) || defined(__APPLE__) #include "DNA_scene_types.h" +#include "DNA_windowmanager_types.h" + +#include "WM_api.h" +#include "WM_types.h" #include "BKE_global.h" #include "BKE_scene.h" +#include "BKE_context.h" #include "BLI_blenlib.h" @@ -730,10 +735,50 @@ int get_qtcodec_settings(RenderData *rd) return err; } -int request_qtcodec_settings(RenderData *rd) +static int request_qtcodec_settings(bContext *C, wmOperator *op) { OSErr err = noErr; + Scene *scene = CTX_data_scene(C); + RenderData *rd = &scene->r; + // erase any existing codecsetting + if(qtdata) { + if(qtdata->theComponent) CloseComponent(qtdata->theComponent); + free_qtcomponentdata(); + } + + // allocate new + qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeComponentData"); + qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType); + + // get previous selected codecsetting, from qtatom or detailed settings + if(rd->qtcodecdata && rd->qtcodecdata->cdParms) { + QT_GetCodecSettingsFromScene(rd); + } else { + SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); + SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); + SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); + + qtdata->gSpatialSettings.codecType = rd->qtcodecsettings.codecType; + qtdata->gSpatialSettings.codec = (CodecComponent)rd->qtcodecsettings.codec; + qtdata->gSpatialSettings.spatialQuality = (rd->qtcodecsettings.codecSpatialQuality * codecLosslessQuality) /100; + qtdata->gTemporalSettings.temporalQuality = (rd->qtcodecsettings.codecTemporalQuality * codecLosslessQuality) /100; + qtdata->gTemporalSettings.keyFrameRate = rd->qtcodecsettings.keyFrameRate; + qtdata->gTemporalSettings.frameRate = ((float)(rd->frs_sec << 16) / rd->frs_sec_base); + qtdata->aDataRateSetting.dataRate = rd->qtcodecsettings.bitRate; + qtdata->gSpatialSettings.depth = rd->qtcodecsettings.colorDepth; + qtdata->aDataRateSetting.minSpatialQuality = (rd->qtcodecsettings.minSpatialQuality * codecLosslessQuality) / 100; + qtdata->aDataRateSetting.minTemporalQuality = (rd->qtcodecsettings.minTemporalQuality * codecLosslessQuality) / 100; + + qtdata->aDataRateSetting.frameDuration = rd->frs_sec; + + err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); + CheckError(err, "SCSetInfo1 error"); + err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); + CheckError(err, "SCSetInfo2 error"); + err = SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); + CheckError(err, "SCSetInfo3 error"); + } // put up the dialog box - it needs to be called from the main thread err = SCRequestSequenceSettings(qtdata->theComponent); @@ -802,6 +847,27 @@ int request_qtcodec_settings(RenderData *rd) return 1; } +static int ED_operator_setqtcodec(bContext *C) +{ + return G.have_quicktime != FALSE; +} + + +void SCENE_OT_render_data_set_quicktime_codec(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Change codec"; + ot->description= "Change Quicktime codec Settings"; + ot->idname= "SCENE_OT_render_data_set_quicktime_codec"; + + /* api callbacks */ + ot->exec= request_qtcodec_settings; + ot->poll= ED_operator_setqtcodec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + #endif /* _WIN32 || __APPLE__ */ #endif /* WITH_QUICKTIME */ diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 61153ff91d2..69f679693f6 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -44,6 +44,7 @@ typedef struct QuicktimeCodecTypeDesc { // quicktime movie output functions struct RenderData; struct Scene; +struct wmOperatorType; void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty); //for movie handle (BKE writeavi.c now) void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); @@ -57,7 +58,7 @@ int quicktime_rnatmpvalue_from_codectype(int codecType); int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue); #ifndef USE_QTKIT -int request_qtcodec_settings(struct RenderData *rd); //Raise quicktime standard dialog to request codec settings +void SCENE_OT_render_data_set_quicktime_codec(struct wmOperatorType *ot); //Operator to raise quicktime standard dialog to request codec settings #endif -- cgit v1.2.3 From 863668a145477299be704de33ce282ad94bcba37 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 15:02:29 +0000 Subject: Cocoa: suppress unwanted beep when pressing Cmd + key on 10.4 --- intern/ghost/intern/GHOST_WindowCocoa.mm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index b1b23963b3d..4058d721bdb 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -230,6 +230,28 @@ extern "C" { - (void)keyDown:(NSEvent *)theEvent {} +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 +//Cmd+key are handled differently before 10.5 +- (BOOL)performKeyEquivalent:(NSEvent *)theEvent +{ + NSString *chars = [theEvent charactersIgnoringModifiers]; + + if ([chars length] <1) + return NO; + + //Let cocoa handle menu shortcuts + switch ([chars characterAtIndex:0]) { + case 'q': + case 'w': + case 'h': + case 'm': + return NO; + default: + return YES; + } +} +#endif + - (BOOL)isOpaque { return YES; -- cgit v1.2.3 From ce36cdac0490593efb6740ea00884f610846d01a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 15:37:07 +0000 Subject: - bpy.data.add_armature() - rigify testnig function, creates all example metarigs, processes and generates graphs for before and after. --- release/scripts/modules/rigify/__init__.py | 67 ++++++++++++++++++++++++++- source/blender/makesrna/intern/rna_main_api.c | 39 ++++++++++++++-- 2 files changed, 101 insertions(+), 5 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 8c0643769c3..7ef5f7f5dc6 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -226,10 +226,13 @@ def generate_rig(context, ob): # context.scene.update() # Only for demo'ing - ob.restrict_view = True + + # ob.restrict_view = True ob_new.data.draw_axes = False context.user_preferences.edit.global_undo = global_undo + + return ob_new def write_meta_rig(obj, func_name="metarig_template"): @@ -291,5 +294,67 @@ def write_meta_rig(obj, func_name="metarig_template"): return "\n".join(code) +def generate_test(context): + import os + new_objects = [] + + scene = context.scene + def create_empty_armature(name): + ob_new = bpy.data.add_object('ARMATURE', name) + armature = bpy.data.add_armature(name) + ob_new.data = armature + scene.objects.link(ob_new) + scene.objects.active = ob_new + + print(os.path.basename(__file__)) + files = os.listdir(os.path.dirname(__file__)) + for f in files: + if f.startswith("_"): + continue + + if not f.endswith(".py"): + continue + + module_name = f[:-3] + submodule = __import__(name="%s.%s" % (__package__, module_name), fromlist=[module_name]) + + metarig_template = getattr(submodule, "metarig_template", None) + + if metarig_template: + create_empty_armature("meta_" + module_name) # sets active + metarig_template() + ob = context.object + ob_new = generate_rig(context, ob) + + new_objects.append((ob, ob_new)) + else: + print("note: rig type '%s' has no metarig_template(), can't test this", module_name) + + return new_objects + +def generate_test_all(context): + import rigify + import graphviz_export + import os + reload(rigify) + reload(graphviz_export) + + new_objects = rigify.generate_test(context) + + base_name = os.path.splitext(bpy.data.filename)[0] + for obj, obj_new in new_objects: + + for ob in (obj, obj_new): + fn = base_name + "-" + bpy.utils.clean_name(ob.name) + + path_dot = fn + ".dot" + path_png = fn + ".png" + saved = graphviz_export.graph_armature(ob, path_dot, CONSTRAINTS=True, DRIVERS=True) + + if saved: + os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) + + if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) + diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 379cf75d450..70dab957fb9 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -33,21 +33,22 @@ #include "RNA_types.h" #include "RNA_enum_types.h" -#include "DNA_object_types.h" -#include "DNA_material_types.h" -#include "DNA_mesh_types.h" - #ifdef RNA_RUNTIME #include "BKE_main.h" #include "BKE_mesh.h" +#include "BKE_armature.h" #include "BKE_library.h" #include "BKE_object.h" #include "BKE_material.h" #include "BKE_image.h" #include "BKE_texture.h" +#include "DNA_armature_types.h" #include "DNA_lamp_types.h" +#include "DNA_material_types.h" +#include "DNA_mesh_types.h" +#include "DNA_object_types.h" static Mesh *rna_Main_add_mesh(Main *main, char *name) { @@ -66,6 +67,23 @@ static void rna_Main_remove_mesh(Main *main, ReportList *reports, Mesh *me) /* XXX python now has invalid pointer? */ } +static void rna_Main_remove_armature(Main *main, ReportList *reports, bArmature *arm) +{ + if(arm->id.us == 0) + free_libblock(&main->armature, arm); + else + BKE_report(reports, RPT_ERROR, "Armature must have zero users to be removed."); + + /* XXX python now has invalid pointer? */ +} + +static bArmature *rna_Main_add_armature(Main *main, char *name) +{ + bArmature *arm= add_armature(name); + arm->id.us--; + return arm; +} + static Lamp *rna_Main_add_lamp(Main *main, char *name) { Lamp *la= add_lamp(name); @@ -164,6 +182,19 @@ void RNA_api_main(StructRNA *srna) parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh to remove."); RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "add_armature", "rna_Main_add_armature"); + RNA_def_function_ui_description(func, "Add a new armature."); + parm= RNA_def_string(func, "name", "Armature", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "armature", "Armature", "", "New armature."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove_armature", "rna_Main_remove_armature"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove an armature if it has zero users."); + parm= RNA_def_pointer(func, "armature", "Armature", "", "Armature to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "add_lamp", "rna_Main_add_lamp"); RNA_def_function_ui_description(func, "Add a new lamp."); parm= RNA_def_string(func, "name", "Lamp", 0, "", "New name for the datablock."); -- cgit v1.2.3 From e2450e4dd9c56743a3342e023e7c45f41257f77d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 16:11:10 +0000 Subject: multiple script paths broke text template menu --- release/scripts/modules/bpy/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index 3af163e1069..c2830bf10cd 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -77,7 +77,9 @@ def script_paths(*args): subdir = os.path.join(*args) script_paths = [] for path in scripts: - script_paths.append(os.path.join(path, subdir)) + path_subdir = os.path.join(path, subdir) + if os.path.isdir(path_subdir): + script_paths.append(path_subdir) return script_paths -- cgit v1.2.3 From 59ae9d855d6d350bfbd0dbe2d3bfba39b0889888 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 2 Dec 2009 18:06:39 +0000 Subject: Mac: Following 10.4 ppc libs availability, update cmake & scons default settings --- CMakeLists.txt | 2 +- config/darwin-config.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 602fec4b759..a926b486746 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -437,7 +437,7 @@ IF(APPLE) IF(CMAKE_OSX_ARCHITECTURES MATCHES i386) SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386) ELSE(CMAKE_OSX_ARCHITECTURES MATCHES i386) - SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-6.1-powerpc) + SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc) ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386) ENDIF(WITH_LIBS10.5) diff --git a/config/darwin-config.py b/config/darwin-config.py index beb8f0d3e59..55cb5d6a253 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -153,7 +153,7 @@ BF_JACK_INC = '${BF_JACK}/include/jack' BF_JACK_LIB = 'jack' BF_JACK_LIBPATH = '${BF_JACK}/lib' -WITH_BF_SNDFILE = False +WITH_BF_SNDFILE = True BF_SNDFILE = LIBDIR + '/sndfile' BF_SNDFILE_INC = '${BF_SNDFILE}/include' BF_SNDFILE_LIB = 'sndfile' @@ -211,7 +211,7 @@ BF_BULLET = '#extern/bullet2/src' BF_BULLET_INC = '${BF_BULLET}' BF_BULLET_LIB = 'extern_bullet' -WITH_BF_FFTW3 = False +WITH_BF_FFTW3 = True BF_FFTW3 = LIBDIR + '/fftw3' BF_FFTW3_INC = '${BF_FFTW3}/include' BF_FFTW3_LIB = 'libfftw3' -- cgit v1.2.3 From 2a6d535d23e80b649ba1f3bc048f1e368d7a63c7 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 2 Dec 2009 18:35:44 +0000 Subject: Fixed a part of [#20197] dof node bugs. * False greying out. --- source/blender/editors/space_node/drawnode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 924b4b2563e..354d7a4edd3 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -628,7 +628,7 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA uiItemR(layout, NULL, 0, ptr, "gamma_correction", 0); col = uiLayoutColumn(layout, 0); - uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==1); uiItemR(col, NULL, 0, ptr, "f_stop", 0); uiItemR(layout, NULL, 0, ptr, "max_blur", 0); @@ -643,7 +643,7 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA col = uiLayoutColumn(layout, 0); uiItemR(col, NULL, 0, ptr, "use_zbuffer", 0); sub = uiLayoutColumn(col, 0); - uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer")); + uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer")==0); uiItemR(sub, NULL, 0, ptr, "z_scale", 0); } -- cgit v1.2.3 From 7706261e79d6103b21b7569dab71bc702be56ac0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 2 Dec 2009 19:13:54 +0000 Subject: change bone storage class so __slots__ can be used for looping over attributes without getting functions --- release/scripts/modules/rigify/__init__.py | 71 +++++++++++++++--------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 7ef5f7f5dc6..78ace98ff89 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -24,11 +24,36 @@ from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get empty_layer = [False] * 32 -def auto_class(slots, name="ContainerClass"): - return type(name, (object,), {"__slots__":tuple(slots)}) +def auto_class(slots, name="ContainerClass", class_dict=None): -def auto_class_instance(slots, name="ContainerClass"): - return auto_class(slots, name)() + if class_dict: + class_dict = class_dict.copy() + else: + class_dict = {} + + class_dict["__slots__"] = tuple(slots) + + return type(name, (object,), class_dict) + +def auto_class_instance(slots, name="ContainerClass", class_dict=None): + return auto_class(slots, name, class_dict)() + + +def _bone_class_instance_update(self): + ''' Re-Assigns bones from the blender data + ''' + arm = self.obj.data + bbones = arm.bones + pbones = self.obj.pose.bones + ebones = arm.edit_bones + + for member in self.__slots__: + if not member[-2] == "_": + name = getattr(self, member, None) + if name is not None: + setattr(self, member + "_b", bbones.get(name, None)) + setattr(self, member + "_p", pbones.get(name, None)) + setattr(self, member + "_e", ebones.get(name, None)) def bone_class_instance(obj, slots, name="BoneContainer"): slots = slots[:] # dont modify the original @@ -37,35 +62,9 @@ def bone_class_instance(obj, slots, name="BoneContainer"): slots.append(member + "_b") # bone bone slots.append(member + "_p") # pose bone slots.append(member + "_e") # edit bone - - slots.extend(["obj", "update"]) - - instance = auto_class_instance(slots, name) - - def update(): - ''' - Re-Assigns bones from the blender data - ''' - arm = obj.data - - bbones = arm.bones - pbones = obj.pose.bones - ebones = arm.edit_bones - - for member in slots: - - if member in ("update", "obj"): - continue - - if not member[-2] == "_": - name = getattr(instance, member, None) - if name is not None: - setattr(instance, member + "_b", bbones.get(name, None)) - setattr(instance, member + "_p", pbones.get(name, None)) - setattr(instance, member + "_e", ebones.get(name, None)) - - instance.update = update - + + class_dict = {"obj":obj, "update":_bone_class_instance_update} + instance = auto_class_instance(slots, name, class_dict) return instance def gen_none(obj, orig_bone_name): @@ -241,7 +240,7 @@ def write_meta_rig(obj, func_name="metarig_template"): code = [] code.append("def %s():" % func_name) - + code.append(" # generated by rigify.write_meta_rig") bpy.ops.object.mode_set(mode='EDIT') code.append(" bpy.ops.object.mode_set(mode='EDIT')") @@ -351,8 +350,8 @@ def generate_test_all(context): path_png = fn + ".png" saved = graphviz_export.graph_armature(ob, path_dot, CONSTRAINTS=True, DRIVERS=True) - if saved: - os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) + #if saved: + # os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) if __name__ == "__main__": -- cgit v1.2.3 From bce687ef36de6898a59fa547af0b3c851e35a9d3 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 19:32:21 +0000 Subject: Menu handlers need to return OUT when clicking outside, not OK Caused crashes with window type selector and a slew of other unwanted behaviors. --- source/blender/editors/interface/interface_handlers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index a51824f10e9..e81c1a2f0a5 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4713,7 +4713,7 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS) if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y)) - menu->menuretval= UI_RETURN_OK; + menu->menuretval= UI_RETURN_OUT; } if(menu->menuretval); -- cgit v1.2.3 From 63fc267929e64cd8ab09d35cae12a172d3e218f3 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 2 Dec 2009 19:59:57 +0000 Subject: [#20213] Align to Transform Orientation crashes Blender Align needs to be call with region context. Also added checks to prevent this from crashing if not called properly. --- release/scripts/ui/space_view3d.py | 2 +- source/blender/editors/transform/transform.c | 2 +- source/blender/editors/transform/transform_generics.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 5ad63a578d2..ea44e43c851 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -139,7 +139,7 @@ class VIEW3D_MT_transform(bpy.types.Menu): if context.edit_object and context.edit_object.type == 'ARMATURE': layout.operator("armature.align") else: - layout.operator_context = 'EXEC_AREA' + layout.operator_context = 'EXEC_REGION_WIN' layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working layout.separator() diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index cbcb3953f49..ffc6ea86835 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -126,7 +126,7 @@ void setTransformViewMatrices(TransInfo *t) { - if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) { + if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW) { RegionView3D *rv3d = t->ar->regiondata; copy_m4_m4(t->viewmat, rv3d->viewmat); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 71a5affb573..c9b5b17091e 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1357,7 +1357,7 @@ void calculateCenter(TransInfo *t) /* for panning from cameraview */ if(t->flag & T_OBJECT) { - if(t->spacetype==SPACE_VIEW3D && t->ar->regiontype == RGN_TYPE_WINDOW) + if(t->spacetype==SPACE_VIEW3D && t->ar && t->ar->regiontype == RGN_TYPE_WINDOW) { View3D *v3d = t->view; Scene *scene = t->scene; -- cgit v1.2.3 From 47b457f19e881c4402d10058b833afc5aaf17957 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Wed, 2 Dec 2009 20:53:28 +0000 Subject: Bug fix: Verlet integration didn't work properly with moving particle emitters. Thanks for mcreamsurfer for reporting and Farsthary for the patch! --- source/blender/blenkernel/intern/particle_system.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 809b5f2090c..dbe6fbd6dde 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -2267,12 +2267,13 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra EffectedPoint epoint; ParticleKey states[5], tkey; float timestep = psys_get_timestep(sim); - float force[3],impulse[3],dx[4][3],dv[4][3]; + float force[3],impulse[3],dx[4][3],dv[4][3],oldpos[3]; float dtime=dfra*timestep, time, pa_mass=part->mass, fac, fra=sim->psys->cfra; int i, steps=1; /* maintain angular velocity */ VECCOPY(pa->state.ave,pa->prev_state.ave); + VECCOPY(oldpos,pa->state.co); if(part->flag & PART_SIZEMASS) pa_mass*=pa->size; @@ -2399,7 +2400,7 @@ static void apply_particle_forces(ParticleSimulationData *sim, int p, float dfra VECADDFAC(pa->state.vel,pa->state.vel,force,dtime); VECADDFAC(pa->state.co,pa->state.co,pa->state.vel,dtime); - VECSUB(pa->state.vel,pa->state.co,pa->prev_state.co); + VECSUB(pa->state.vel,pa->state.co,oldpos); mul_v3_fl(pa->state.vel,1.0f/dtime); break; } -- cgit v1.2.3 From ae916753128c21763596d19ac8589d32c06f7fdb Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 2 Dec 2009 23:14:58 +0000 Subject: Fix for [#20154] Shaded draw mode needs to be removed when loading files --- source/blender/blenloader/intern/readfile.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 6103c582da0..2ad3b17a896 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10109,6 +10109,23 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + { + bScreen *screen; + ScrArea *sa; + SpaceLink *sl; + + for(screen= main->screen.first; screen; screen= screen->id.next) { + for(sa= screen->areabase.first; sa; sa= sa->next) { + for(sl= sa->spacedata.first; sl; sl= sl->next) { + if(sl->spacetype==SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + if (v3d->drawtype == OB_SHADED) v3d->drawtype = OB_SOLID; + } + } + } + } + } + /* only convert old 2.50 files with color management */ if (main->versionfile == 250) { Scene *sce=main->scene.first; -- cgit v1.2.3 From 5e5d05b8dd569cd58259ddc7cc33eb062833503c Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 3 Dec 2009 00:17:34 +0000 Subject: Fix for [#20180] Wrong multiplicator in Random Selection Also: Added extend select option to select random (off by default) Tweaked 'Select Axis' to use an enum for axes --- source/blender/editors/mesh/editmesh_mods.c | 14 +++++++------- source/blender/editors/mesh/editmesh_tools.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index c79ef342150..e7986d227cf 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3582,14 +3582,11 @@ void MESH_OT_select_less(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static void selectrandom_mesh(EditMesh *em, float perc) /* randomly selects a user-set % of vertices/edges/faces */ +static void selectrandom_mesh(EditMesh *em, float randfac) /* randomly selects a user-set % of vertices/edges/faces */ { EditVert *eve; EditEdge *eed; EditFace *efa; - float randfac= perc; - /* Get the percentage of vertices to randomly select as 'randfac' */ -// XXX if(button(&randfac,0, 100,"Percentage:")==0) return; BLI_srand( BLI_rand() ); /* random seed */ @@ -3629,7 +3626,10 @@ static int mesh_select_random_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); - selectrandom_mesh(em, RNA_float_get(op->ptr,"percent")); + if(!RNA_boolean_get(op->ptr, "extend")) + EM_deselect_all(em); + + selectrandom_mesh(em, RNA_float_get(op->ptr, "percentage")/100.0f); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); @@ -3646,14 +3646,14 @@ void MESH_OT_select_random(wmOperatorType *ot) /* api callbacks */ ot->exec= mesh_select_random_exec; - ot->invoke= WM_operator_props_popup; ot->poll= ED_operator_editmesh; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_float_percentage(ot->srna, "percent", 50.0f, 0.0f, 100.0f, "Percent", "Percentage of vertices to select randomly.", 0.0001f, 1.0f); + RNA_def_float_percentage(ot->srna, "percentage", 50.f, 0.0f, 100.0f, "Percentage", "Percentage of elements to select randomly.", 0.f, 100.0f); + RNA_def_boolean(ot->srna, "extend", 0, "Extend Select", ""); } void EM_select_by_material(EditMesh *em, int index) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index e439968d380..089a35f8402 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -7192,7 +7192,7 @@ static int select_axis_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - int axis= RNA_int_get(op->ptr, "axis"); + int axis= RNA_enum_get(op->ptr, "axis"); int mode= RNA_enum_get(op->ptr, "mode"); /* -1==aligned, 0==neg, 1==pos*/ EditSelection *ese = em->selected.last; @@ -7243,6 +7243,12 @@ void MESH_OT_select_axis(wmOperatorType *ot) {1, "NEGATIVE", 0, "Negative Axis", ""}, {-1, "ALIGNED", 0, "Aligned Axis", ""}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem axis_items[] = { + {0, "X_AXIS", 0, "X Axis", ""}, + {1, "Y_AXIS", 0, "Y Axis", ""}, + {2, "Z_AXIS", 0, "Z Axis", ""}, + {0, NULL, 0, NULL, NULL}}; /* identifiers */ ot->name= "Select Axis"; @@ -7258,6 +7264,6 @@ void MESH_OT_select_axis(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "mode", axis_mode_items, 0, "Axis Mode", "Axis side to use when selecting"); - RNA_def_int(ot->srna, "axis", 0, 0, 2, "Axis", "Select the axis to compare each vertex on", 0, 2); + RNA_def_enum(ot->srna, "axis", axis_items, 0, "Axis", "Select the axis to compare each vertex on"); } -- cgit v1.2.3 From 22290fbbbb0d111b6c01017cb5482d1336ca1616 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 3 Dec 2009 00:42:02 +0000 Subject: Fix for [#20168] Particle velocity display toggle issue Thanks Alan Taylor for the initial patch --- source/blender/editors/space_view3d/drawobject.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 2c4f010ce3e..8592a5455c2 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3795,6 +3795,10 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv pdd->vedata = MEM_callocN(2 * (totpart + totchild) * 3 * sizeof(float), "particle_vedata"); need_v = 1; + } else if (pdd->vedata) { + /* velocity data not needed, so free it */ + MEM_freeN(pdd->vedata); + pdd->vedata= NULL; } pdd->vd= pdd->vdata; @@ -3954,7 +3958,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv if(drawn) { /* additional things to draw for each particle */ /* (velocity, size and number) */ - if(pdd->vedata){ + if((part->draw & PART_DRAW_VEL) && pdd->vedata){ VECCOPY(pdd->ved,state.co); pdd->ved+=3; VECCOPY(vel,state.vel); @@ -4193,14 +4197,8 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glDisable(GL_DEPTH_TEST); /* get selection theme colors */ - UI_GetThemeColor3ubv(TH_VERTEX_SELECT, sel); - UI_GetThemeColor3ubv(TH_VERTEX, nosel); - sel_col[0]=(float)sel[0]/255.0f; - sel_col[1]=(float)sel[1]/255.0f; - sel_col[2]=(float)sel[2]/255.0f; - nosel_col[0]=(float)nosel[0]/255.0f; - nosel_col[1]=(float)nosel[1]/255.0f; - nosel_col[2]=(float)nosel[2]/255.0f; + UI_GetThemeColor3fv(TH_VERTEX_SELECT, sel_col); + UI_GetThemeColor3fv(TH_VERTEX, nosel_col); /* draw paths */ if(timed) { -- cgit v1.2.3 From bd8e92904472b2cfaf49a71518be0502d517e682 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 3 Dec 2009 09:49:21 +0000 Subject: Fix for [#20226] 3DView header: hiding menu texts and layer button's issue. Also: big purge of old 3d view header menus and old unused code --- release/scripts/ui/space_view3d.py | 17 +- source/blender/editors/include/ED_view3d.h | 1 + .../blender/editors/space_view3d/view3d_header.c | 1498 +------------------- source/blender/editors/space_view3d/view3d_view.c | 68 + source/blender/makesrna/intern/rna_scene.c | 24 +- source/blender/makesrna/intern/rna_space.c | 17 +- 6 files changed, 105 insertions(+), 1520 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index ea44e43c851..2c6b2b5ad18 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -33,13 +33,14 @@ class VIEW3D_HT_header(bpy.types.Header): obj = context.active_object toolsettings = context.scene.tool_settings - row = layout.row(align=True) + row = layout.row() row.template_header() - + + sub = row.row(align=True) + # Menus if context.area.show_menus: - sub = row.row(align=True) - + sub.menu("VIEW3D_MT_view") # Select Menu @@ -49,20 +50,20 @@ class VIEW3D_HT_header(bpy.types.Header): if edit_object: sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower()) elif obj: - if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']: + if mode_string not in ('PAINT_WEIGHT'): sub.menu("VIEW3D_MT_%s" % mode_string.lower()) else: sub.menu("VIEW3D_MT_object") - layout.template_header_3D() + row.template_header_3D() # Particle edit if obj and obj.mode == 'PARTICLE_EDIT': - layout.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True) + row.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True, toggle=True) # Occlude geometry if obj and view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')): - layout.prop(view, "occlude_geometry", text="") + row.prop(view, "occlude_geometry", text="") # Proportional editing if obj and obj.mode in ('OBJECT', 'EDIT'): diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 38a1d5ef9eb..0e7f55bef8d 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -144,6 +144,7 @@ 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_context_activate(struct bContext *C); void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index dd5df957a95..9b6cfc6cbd0 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -110,7 +110,6 @@ if( (v3d->lay & obedit->lay)==0 ) return; /* XXX port over */ -static void countall(void) {} extern void borderselect(); /* view3d handler codes */ @@ -132,89 +131,17 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event); #define B_HOME 103 #define B_VIEWBUT 104 #define B_PERSP 105 -#define B_VIEWRENDER 106 #define B_MODESELECT 108 -#define B_AROUND 109 #define B_SEL_VERT 110 #define B_SEL_EDGE 111 #define B_SEL_FACE 112 -#define B_SEL_PATH 113 -#define B_SEL_POINT 114 -#define B_SEL_END 115 #define B_MAN_TRANS 116 #define B_MAN_ROT 117 #define B_MAN_SCALE 118 #define B_NDOF 119 #define B_MAN_MODE 120 -#define B_VIEW_BUTSEDIT 121 #define B_REDR 122 #define B_NOP 123 -#define B_ACTCOPY 124 -#define B_ACTPASTE 125 -#define B_ACTPASTEFLIP 126 - -#define B_LAY 201 - - -static RegionView3D *wm_region_view3d(const bContext *C) -{ - ScrArea *sa= CTX_wm_area(C); - ARegion *ar; - /* XXX handle foursplit? */ - for(ar= sa->regionbase.first; ar; ar= ar->next) - if(ar->regiontype==RGN_TYPE_WINDOW) - return ar->regiondata; - return NULL; -} - -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<layact= 1<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); - } -} // XXX quickly ported across static void handle_view3d_lock(bContext *C) @@ -330,1269 +257,6 @@ void VIEW3D_OT_layers(wmOperatorType *ot) RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Add this layer to the current view layers"); } -#if 0 -void do_view3d_select_object_typemenu(bContext *C, void *arg, int event) -{ - - extern void selectall_type(short obtype); - - switch(event) { - case 1: /* Mesh */ - selectall_type(OB_MESH); - break; - case 2: /* Curve */ - selectall_type(OB_CURVE); - break; - case 3: /* Surface */ - selectall_type(OB_SURF); - break; - case 4: /* Meta */ - selectall_type(OB_MBALL); - break; - case 5: /* Armature */ - selectall_type(OB_ARMATURE); - break; - case 6: /* Lattice */ - selectall_type(OB_LATTICE); - break; - case 7: /* Text */ - selectall_type(OB_FONT); - break; - case 8: /* Empty */ - selectall_type(OB_EMPTY); - break; - case 9: /* Camera */ - selectall_type(OB_CAMERA); - break; - case 10: /* Lamp */ - selectall_type(OB_LAMP); - break; - case 20: - do_layer_buttons(C, -2); - break; - } -} - -static uiBlock *view3d_select_object_typemenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_select_object_typemenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_select_object_typemenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Meta", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Empty", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - - -void do_view3d_select_object_layermenu(bContext *C, void *arg, int event) -{ -// XXX extern void selectall_layer(unsigned int layernum); - - switch(event) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: -// XXX selectall_layer(event); - break; - } -} - -static uiBlock *view3d_select_object_layermenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short xco= 0, yco = 20, menuwidth = 22; - - block= uiBeginBlock(C, ar, "view3d_select_object_layermenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_select_object_layermenu, NULL); - - uiDefBut(block, BUTM, 1, "1", xco, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefBut(block, BUTM, 1, "2", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefBut(block, BUTM, 1, "3", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefBut(block, BUTM, 1, "4", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefBut(block, BUTM, 1, "5", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - xco += 6; - uiDefBut(block, BUTM, 1, "6", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - uiDefBut(block, BUTM, 1, "7", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefBut(block, BUTM, 1, "8", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); - uiDefBut(block, BUTM, 1, "9", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); - uiDefBut(block, BUTM, 1, "10", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - xco = 0; - uiDefBut(block, BUTM, 1, "11", xco, yco-=24, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); - uiDefBut(block, BUTM, 1, "12", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, ""); - uiDefBut(block, BUTM, 1, "13", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, ""); - uiDefBut(block, BUTM, 1, "14", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, ""); - uiDefBut(block, BUTM, 1, "15", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, ""); - xco += 6; - uiDefBut(block, BUTM, 1, "16", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, ""); - uiDefBut(block, BUTM, 1, "17", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - uiDefBut(block, BUTM, 1, "18", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefBut(block, BUTM, 1, "19", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefBut(block, BUTM, 1, "20", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, ""); - - uiBlockSetDirection(block, UI_RIGHT); - /*uiTextBoundsBlock(block, 100);*/ - return block; -} - -void do_view3d_select_object_linkedmenu(bContext *C, void *arg, int event) -{ - switch(event) { - case 1: /* Object Ipo */ - case 2: /* ObData */ - case 3: /* Current Material */ - case 4: /* Current Texture */ - selectlinks(event); - break; - } - countall(); -} - -static uiBlock *view3d_select_object_linkedmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_select_object_linkedmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_select_object_linkedmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Ipo|Shift L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "ObData|Shift L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Material|Shift L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Texture|Shift L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -void do_view3d_select_object_groupedmenu(bContext *C, void *arg, int event) -{ - - switch(event) { - case 1: /* Children */ - case 2: /* Immediate Children */ - case 3: /* Parent */ - case 4: /* Siblings */ - case 5: /* Type */ - case 6: /* Objects on Shared Layers */ - case 7: /* Objects in Same Group */ - case 8: /* Object Hooks*/ - case 9: /* Object PassIndex*/ - case 10: /* Object Color*/ - case 11: /* Game Properties*/ - select_object_grouped((short)event); - break; - } -} - -static uiBlock *view3d_select_object_groupedmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_select_object_groupedmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_select_object_groupedmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Children|Shift G, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Immediate Children|Shift G, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Parent|Shift G, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Siblings (Shared Parent)|Shift G, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects of Same Type|Shift G, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects on Shared Layers|Shift G, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Objects in Same Group|Shift G, 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Hooks|Shift G, 8", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object PassIndex|Shift G, 9", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Color|Shift G, 0", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Game Properties|Shift G, Alt+1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -#endif - -// TODO - port to python -#if 0 -void do_view3d_select_faceselmenu(bContext *C, void *arg, int event) -{ - /* events >= 6 are registered bpython scripts */ -#ifndef DISABLE_PYTHON - if (event >= 6) BPY_menu_do_python(PYMENU_FACESELECT, event - 6); -#endif - - switch(event) { - case 0: /* border select */ - borderselect(); - break; - case 2: /* Select/Deselect all */ - deselectall_tface(); - break; - case 3: /* Select Inverse */ - selectswap_tface(); - break; - case 4: /* Select Linked */ - select_linked_tfaces(2); - break; - } -} - -static uiBlock *view3d_select_faceselmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco= 0, menuwidth=120; -#ifndef DISABLE_PYTHON -// XXX BPyMenu *pym; -// int i = 0; -#endif - - block= uiBeginBlock(C, ar, "view3d_select_faceselmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_select_faceselmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked Faces|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - -#ifndef DISABLE_PYTHON -// uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - /* note that we account for the 6 previous entries with i+6: */ -// for (pym = BPyMenuTable[PYMENU_FACESELECT]; pym; pym = pym->next, i++) { -// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, -// menuwidth, 19, NULL, 0.0, 0.0, 1, i+6, -// pym->tooltip?pym->tooltip:pym->filename); -// } -#endif - - if(ar->alignment==RGN_ALIGN_TOP) { - uiBlockSetDirection(block, UI_DOWN); - } - else { - uiBlockSetDirection(block, UI_TOP); - uiBlockFlipOrder(block); - } - - uiTextBoundsBlock(block, 50); - return block; -} -#endif - -#if 0 -void do_view3d_transform_moveaxismenu(bContext *C, void *arg, int event) -{ -#if 0 - float mat[3][3]; - - unit_m3(mat); - - switch(event) - { - case 0: /* X Global */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[0], " X"); - Transform(); - break; - case 1: /* Y Global */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[1], " Y"); - Transform(); - break; - case 2: /* Z Global */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[2], " Z"); - Transform(); - break; - case 3: /* X Local */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setLocalAxisConstraint('X', " X"); - Transform(); - break; - case 4: /* Y Local */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setLocalAxisConstraint('Y', " Y"); - Transform(); - break; - case 5: /* Z Local */ - initTransform(TFM_TRANSLATION, CTX_NONE); - BIF_setLocalAxisConstraint('Z', " Z"); - Transform(); - break; - } -#endif -} - -static uiBlock *view3d_transform_moveaxismenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_transform_moveaxismenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_transform_moveaxismenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|G, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|G, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|G, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|G, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|G, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|G, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -void do_view3d_transform_rotateaxismenu(bContext *C, void *arg, int event) -{ -#if 0 - float mat[3][3]; - - unit_m3(mat); - - switch(event) - { - case 0: /* X Global */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[0], " X"); - Transform(); - break; - case 1: /* Y Global */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[1], " Y"); - Transform(); - break; - case 2: /* Z Global */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setSingleAxisConstraint(mat[2], " Z"); - Transform(); - break; - case 3: /* X Local */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setLocalAxisConstraint('X', " X"); - Transform(); - break; - case 4: /* Y Local */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setLocalAxisConstraint('Y', " Y"); - Transform(); - break; - case 5: /* Z Local */ - initTransform(TFM_ROTATION, CTX_NONE); - BIF_setLocalAxisConstraint('Z', " Z"); - Transform(); - break; - } -#endif -} - -static uiBlock *view3d_transform_rotateaxismenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_transform_rotateaxismenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_transform_rotateaxismenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|R, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|R, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|R, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|R, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|R, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|R, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -void do_view3d_transform_scaleaxismenu(bContext *C, void *arg, int event) -{ -#if 0 - float mat[3][3]; - - unit_m3(mat); - - switch(event) - { - case 0: /* X Global */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setSingleAxisConstraint(mat[0], " X"); - Transform(); - break; - case 1: /* Y Global */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setSingleAxisConstraint(mat[1], " Y"); - Transform(); - break; - case 2: /* Z Global */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setSingleAxisConstraint(mat[2], " Z"); - Transform(); - break; - case 3: /* X Local */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setLocalAxisConstraint('X', " X"); - Transform(); - break; - case 4: /* Y Local */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setLocalAxisConstraint('X', " X"); - Transform(); - break; - case 5: /* Z Local */ - initTransform(TFM_RESIZE, CTX_NONE); - BIF_setLocalAxisConstraint('X', " X"); - Transform(); - break; - } -#endif -} - -static uiBlock *view3d_transform_scaleaxismenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_transform_scaleaxismenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_transform_scaleaxismenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Global|S, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Global|S, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Global|S, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|S, X, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|S, Y, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|S, Z, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} -#endif - -#if 0 -static void do_view3d_transformmenu(bContext *C, void *arg, int event) -{ -#if 0 - Scene *scene= CTX_data_scene(C); - ToolSettings *ts= CTX_data_tool_settings(C); - - switch(event) { - case 1: - initTransform(TFM_TRANSLATION, CTX_NONE); - Transform(); - break; - case 2: - initTransform(TFM_ROTATION, CTX_NONE); - Transform(); - break; - case 3: - initTransform(TFM_RESIZE, CTX_NONE); - Transform(); - break; - case 4: - image_aspect(); - break; - case 5: - initTransform(TFM_TOSPHERE, CTX_NONE); - Transform(); - break; - case 6: - initTransform(TFM_SHEAR, CTX_NONE); - Transform(); - break; - case 7: - initTransform(TFM_WARP, CTX_NONE); - Transform(); - break; - case 8: - initTransform(TFM_PUSHPULL, CTX_NONE); - Transform(); - break; - case 9: - if (obedit) { - if (obedit->type == OB_MESH) - initTransform(TFM_SHRINKFATTEN, CTX_NONE); - Transform(); - } else error("Only meshes can be shrinked/fattened"); - break; - case 10: - docenter(0); - break; - case 11: - docenter_new(); - break; - case 12: - docenter_cursor(); - break; - case 13: - initTransform(TFM_TILT, CTX_NONE); - Transform(); - break; - case 14: - initTransform(TFM_CURVE_SHRINKFATTEN, CTX_NONE); - Transform(); - break; - case 15: - ts->snap_flag &= ~SCE_SNAP; - break; - case 16: - ts->snap_flag |= SCE_SNAP; - break; - case 17: - ts->snap_target = SCE_SNAP_TARGET_CLOSEST; - break; - case 18: - ts->snap_target = SCE_SNAP_TARGET_CENTER; - break; - case 19: - ts->snap_target = SCE_SNAP_TARGET_MEDIAN; - break; - case 20: - ts->snap_target = SCE_SNAP_TARGET_ACTIVE; - break; - case 21: - alignmenu(); - break; - } -#endif -} - -static uiBlock *view3d_transformmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - ToolSettings *ts= CTX_data_tool_settings(C); - Object *obedit = CTX_data_edit_object(C); - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_transformmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_transformmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBlockBut(block, view3d_transform_moveaxismenu, NULL, ICON_RIGHTARROW_THIN, "Grab/Move on Axis", 0, yco-=20, 120, 19, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBlockBut(block, view3d_transform_rotateaxismenu, NULL, ICON_RIGHTARROW_THIN, "Rotate on Axis", 0, yco-=20, 120, 19, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Scale|S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBlockBut(block, view3d_transform_scaleaxismenu, NULL, ICON_RIGHTARROW_THIN, "Scale on Axis", 0, yco-=20, 120, 19, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - if (obedit) { - if (obedit->type == OB_MESH) - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shrink/Fatten Along Normals|Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); - else if (obedit->type == OB_CURVE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Tilt|T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shrink/Fatten Radius|Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, ""); - } - } - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "To Sphere|Ctrl Shift S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - if (obedit) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shear|Ctrl S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - else uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Shear|Ctrl Shift Alt S", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Warp|Shift W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Push/Pull|Shift P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); - - if (!obedit) { - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Scale to Image Aspect Ratio|Alt V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - } - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "ObData to Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - if (!obedit) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center New", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center Cursor", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align to Transform Orientation|Ctrl Alt A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, ""); - } - - if (BIF_snappingSupported(obedit)) - { - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - if (ts->snap_flag & SCE_SNAP) - { - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, ""); - } - else - { - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, ""); - } - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - switch(ts->snap_target) - { - case SCE_SNAP_TARGET_CLOSEST: - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, ""); - break; - case SCE_SNAP_TARGET_CENTER: - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, ""); - break; - case SCE_SNAP_TARGET_MEDIAN: - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, ""); - break; - case SCE_SNAP_TARGET_ACTIVE: - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Active", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, ""); - break; - } - } - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -#if 0 -void do_view3d_object_mirrormenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 0: - initTransform(TFM_MIRROR, CTX_NO_PET); - Transform(); - break; - case 1: - initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM); - BIF_setLocalAxisConstraint('X', " on X axis"); - Transform(); - break; - case 2: - initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM); - BIF_setLocalAxisConstraint('Y', " on Y axis"); - Transform(); - break; - case 3: - initTransform(TFM_MIRROR, CTX_NO_PET|CTX_AUTOCONFIRM); - BIF_setLocalAxisConstraint('Z', " on Z axis"); - Transform(); - break; - } -#endif -} - -static uiBlock *view3d_object_mirrormenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_object_mirrormenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_object_mirrormenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Interactive Mirror|Ctrl M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "X Local|Ctrl M, X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Y Local|Ctrl M, Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Z Local|Ctrl M, Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} -#endif -#endif - -#if 0 -static void view3d_edit_object_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ -#if 0 // XXX not used anymore - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Scale/Rotation to ObData|Ctrl A, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - apply_objects_locrot(); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Visual Transform|Ctrl A, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - apply_objects_visual_tx(); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Deformation|Ctrl Shift A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - if(OBACT) object_apply_deform(OBACT); -#endif - uiItemO(layout, NULL, 0, "OBJECT_OT_duplicates_make_real"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "OBJECT_OT_location_clear"); - uiItemO(layout, NULL, 0, "OBJECT_OT_rotation_clear"); - uiItemO(layout, NULL, 0, "OBJECT_OT_scale_clear"); - uiItemO(layout, NULL, 0, "OBJECT_OT_origin_clear"); -} -#endif - -#if 0 -static void do_view3d_edit_object_makelocalmenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 1: - case 2: - case 3: - make_local(event); - break; - } -#endif -} - -static uiBlock *view3d_edit_object_makelocalmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_edit_object_makelocalmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_edit_object_makelocalmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selected Objects|L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selected Objects and Data|L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "All|L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -static void do_view3d_edit_object_makelinksmenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 1: - case 2: - case 3: - case 4: - make_links((short)event); - break; - } -#endif -} - -static uiBlock *view3d_edit_object_makelinksmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - Scene *scene= CTX_data_scene(C); - Object *ob=NULL; - - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_edit_object_makelinksmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_edit_object_makelinksmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "To Scene...|Ctrl L, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Ipo|Ctrl L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - - if ((ob=OBACT)) { - - if(ob->type==OB_MESH) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - } else if(ob->type==OB_CURVE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - } else if(ob->type==OB_FONT) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - } else if(ob->type==OB_SURF) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - } else if(ob->type==OB_MBALL) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - } else if(ob->type==OB_CAMERA) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - } else if(ob->type==OB_LAMP) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - } else if(ob->type==OB_LATTICE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - } else if(ob->type==OB_ARMATURE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - } - } - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -static void do_view3d_edit_object_singleusermenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 1: /* Object */ - single_object_users(1); - break; - case 2: /* Object & ObData */ - single_object_users(1); - single_obdata_users(1); - break; - case 3: /* Object & ObData & Materials+Tex */ - single_object_users(1); - single_obdata_users(1); - single_mat_users(1); /* also tex */ - break; - case 4: /* Materials+Tex */ - single_mat_users(1); - break; - case 5: /* Ipo */ - single_ipo_users(1); - break; - } - - clear_id_newpoins(); - countall(); - -#endif -} - -static uiBlock *view3d_edit_object_singleusermenu(bContext *C, ARegion *ar, void *arg_unused) -{ - - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_edit_object_singleusermenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_edit_object_singleusermenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object|U, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object & ObData|U, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object & ObData & Materials+Tex|U, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials+Tex|U, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Ipos|U, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -static void do_view3d_edit_object_copyattrmenu(bContext *C, void *arg, int event) -{ - switch(event) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 29: - case 30: -// XXX copy_attr((short)event); - break; - } -} - -static uiBlock *view3d_edit_object_copyattrmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - Scene *scene= CTX_data_scene(C); - Object *ob=NULL; - - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_edit_object_copyattrmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_edit_object_copyattrmenu, NULL); - - ob= OBACT; - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Location|Ctrl C, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotation|Ctrl C, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Size|Ctrl C, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Drawtype|Ctrl C, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Time Offset|Ctrl C, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Dupli|Ctrl C, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mass|Ctrl C, 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Damping|Ctrl C, 8", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "All Physical Attributes|Ctrl C, 11", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Properties|Ctrl C, 9", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Logic Bricks|Ctrl C, 10", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Protected Transform |Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 29, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Constraints|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "NLA Strips|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 26, ""); - - if (ob) { - - if ((ob->type == OB_MESH) || (ob->type == OB_CURVE) || (ob->type == OB_SURF) || - (ob->type == OB_FONT) || (ob->type == OB_MBALL)) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Texture Space|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, ""); - } - - if(ob->type == OB_FONT) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Font Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bevel Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Resolution|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, ""); - } - if(ob->type == OB_CURVE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bevel Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Resolution|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, ""); - } - - if(ob->type==OB_MESH) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subsurf Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Modifiers ...|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 24, ""); - } - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Pass Index|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 30, ""); - } - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} -#endif - -#if 0 -#ifndef DISABLE_PYTHON -static void do_view3d_edit_object_scriptsmenu(bContext *C, void *arg, int event) -{ -#if 0 - BPY_menu_do_python(PYMENU_OBJECT, event); - -#endif -} - -static uiBlock *view3d_edit_object_scriptsmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; -// short yco = 20, menuwidth = 120; -// XXX BPyMenu *pym; -// int i = 0; - - block= uiBeginBlock(C, ar, "v3d_eobject_pymenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_edit_object_scriptsmenu, NULL); - -// for (pym = BPyMenuTable[PYMENU_OBJECT]; pym; pym = pym->next, i++) { -// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i, pym->tooltip?pym->tooltip:pym->filename); -// } - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - - return block; -} -#endif /* DISABLE_PYTHON */ -#endif - - -#if 0 -static void do_view3d_edit_objectmenu(bContext *C, void *arg, int event) -{ - Scene *scene= CTX_data_scene(C); - ScrArea *sa= CTX_wm_area(C); - View3D *v3d= sa->spacedata.first; - - switch(event) { - - case 0: /* transform properties*/ -// XXX mainqenter(NKEY, 1); - break; - case 5: /* make single user */ - single_user(); - break; - case 7: /* boolean operation */ - special_editmenu(); - break; - case 8: /* join objects */ - join_menu(); - break; - case 9: /* convert object type */ - convertmenu(); - break; - case 10: /* move to layer */ - movetolayer(); - break; - case 11: /* insert keyframe */ - common_insertkey(); - break; - case 16: /* make proxy object*/ - make_proxy(); - break; - case 18: /* delete keyframe */ - common_deletekey(); - break; - } -} -#endif - - -/* texture paint menu (placeholder, no items yet??) */ -static void do_view3d_tpaintmenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 0: /* undo image painting */ - undo_imagepaint_step(1); - break; - } - -#endif -} - -static uiBlock *view3d_tpaintmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco= 0, menuwidth=120; - - block= uiBeginBlock(C, ar, "view3d_paintmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_tpaintmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Texture Painting|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - if(ar->alignment==RGN_ALIGN_TOP) { - uiBlockSetDirection(block, UI_DOWN); - } - else { - uiBlockSetDirection(block, UI_TOP); - uiBlockFlipOrder(block); - } - - uiTextBoundsBlock(block, 50); - return block; -} - - -static void do_view3d_wpaintmenu(bContext *C, void *arg, int event) -{ -#if 0 - Object *ob= OBACT; - - /* events >= 3 are registered bpython scripts */ -#ifndef DISABLE_PYTHON - if (event >= 4) BPY_menu_do_python(PYMENU_WEIGHTPAINT, event - 4); -#endif - switch(event) { - case 0: /* undo weight painting */ - BIF_undo(); - break; - case 1: /* set vertex colors/weight */ - clear_wpaint_selectedfaces(); - break; - case 2: /* vgroups from envelopes */ - pose_adds_vgroups(ob, 0); - break; - case 3: /* vgroups from bone heat */ - pose_adds_vgroups(ob, 1); - break; - } -#endif -} - -static uiBlock *view3d_wpaintmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco= 0, menuwidth=120, menunr=1; -#ifndef DISABLE_PYTHON -// XXX BPyMenu *pym; -// int i=0; -#endif - - block= uiBeginBlock(C, ar, "view3d_paintmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_wpaintmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Weight Painting|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Bone Heat Weights to Vertex Groups|W, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Apply Bone Envelopes to Vertex Groups|W, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - if (paint_facesel_test(CTX_data_active_object(C))) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Weight|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - menunr++; - } - -#ifndef DISABLE_PYTHON - /* note that we account for the 4 previous entries with i+4: - even if the last item isnt displayed, it dosent matter */ -// for (pym = BPyMenuTable[PYMENU_WEIGHTPAINT]; pym; pym = pym->next, i++) { -// uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, -// menuwidth, 19, NULL, 0.0, 0.0, 1, i+4, -// pym->tooltip?pym->tooltip:pym->filename); -// } -#endif - - if(ar->alignment==RGN_ALIGN_TOP) { - uiBlockSetDirection(block, UI_DOWN); - } - else { - uiBlockSetDirection(block, UI_TOP); - uiBlockFlipOrder(block); - } - - uiTextBoundsBlock(block, 50); - return block; -} - -static void do_view3d_facesel_showhidemenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 4: /* show hidden faces */ - reveal_tface(); - break; - case 5: /* hide selected faces */ - hide_tface(); - break; - case 6: /* XXX hide deselected faces */ -// G.qual |= LR_SHIFTKEY; - hide_tface(); -// G.qual &= ~LR_SHIFTKEY; - break; - } -#endif -} - -static uiBlock *view3d_facesel_showhidemenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco = 20, menuwidth = 120; - - block= uiBeginBlock(C, ar, "view3d_facesel_showhidemenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_facesel_showhidemenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden Faces|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected Faces|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Unselected Faces|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); - - uiBlockSetDirection(block, UI_RIGHT); - uiTextBoundsBlock(block, 60); - return block; -} - -static void do_view3d_faceselmenu(bContext *C, void *arg, int event) -{ -#if 0 - switch(event) { - case 0: /* set vertex colors */ - clear_vpaint_selectedfaces(); - break; - case 1: /* mark border seam */ - seam_mark_clear_tface(1); - break; - case 2: /* clear seam */ - seam_mark_clear_tface(2); - break; - } -#endif -} - -static uiBlock *view3d_faceselmenu(bContext *C, ARegion *ar, void *arg_unused) -{ - uiBlock *block; - short yco= 0, menuwidth=120; - - block= uiBeginBlock(C, ar, "view3d_faceselmenu", UI_EMBOSSP); - uiBlockSetButmFunc(block, do_view3d_faceselmenu, NULL); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mark Border Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - - uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - - uiDefIconTextBlockBut(block, view3d_facesel_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Faces", 0, yco-=20, 120, 19, ""); - - if(ar->alignment==RGN_ALIGN_TOP) { - uiBlockSetDirection(block, UI_DOWN); - } - else { - uiBlockSetDirection(block, UI_TOP); - uiBlockFlipOrder(block); - } - - uiTextBoundsBlock(block, 50); - return block; -} - static char *view3d_modeselect_pup(Scene *scene) { Object *ob= OBACT; @@ -1641,29 +305,16 @@ static char *view3d_modeselect_pup(Scene *scene) return (string); } -static char *ndof_pup(void) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "ndof mode: %t"); - str += sprintf(str, "%s", "|turntable %x0"); - str += sprintf(str, "%s", "|fly %x1"); - str += sprintf(str, "%s", "|transform %x2"); - return string; -} static void do_view3d_header_buttons(bContext *C, void *arg, int event) { wmWindow *win= CTX_wm_window(C); - Scene *scene= CTX_data_scene(C); ToolSettings *ts= CTX_data_tool_settings(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; Object *obedit = CTX_data_edit_object(C); - Object *ob = CTX_data_active_object(C); EditMesh *em= NULL; - int bit, ctrl= win->eventstate->ctrl, shift= win->eventstate->shift; + int ctrl= win->eventstate->ctrl, shift= win->eventstate->shift; PointerRNA props_ptr; if(obedit && obedit->type==OB_MESH) { @@ -1672,44 +323,16 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) /* watch it: if sa->win does not exist, check that when calling direct drawing routines */ switch(event) { - case B_HOME: - WM_operator_name_call(C, "VIEW3D_OT_view_all", WM_OP_EXEC_REGION_WIN, NULL); - break; case B_REDR: ED_area_tag_redraw(sa); break; - case B_SCENELOCK: - if(v3d->scenelock) { - v3d->lay= scene->lay; - /* seek for layact */ - bit= 0; - while(bit<32) { - if(v3d->lay & (1<layact= 1<camera= scene->camera; - ED_area_tag_redraw(sa); - } - break; - case B_VIEWRENDER: - if (sa->spacetype==SPACE_VIEW3D) { -// XXX BIF_do_ogl_render(v3d, shift); - } - break; case B_MODESELECT: WM_operator_properties_create(&props_ptr, "OBJECT_OT_mode_set"); RNA_enum_set(&props_ptr, "mode", v3d->modeselect); WM_operator_name_call(C, "OBJECT_OT_mode_set", WM_OP_EXEC_REGION_WIN, &props_ptr); WM_operator_properties_free(&props_ptr); break; - case B_AROUND: - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, 0); -// XXX handle_view3d_around(); /* copies to other 3d windows */ - break; case B_SEL_VERT: if(em) { @@ -1750,22 +373,6 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) } break; - case B_SEL_PATH: - ts->particle.selectmode= SCE_SELECT_PATH; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - ED_undo_push(C, "Selectmode Set: Path"); - break; - case B_SEL_POINT: - ts->particle.selectmode = SCE_SELECT_POINT; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - ED_undo_push(C, "Selectmode Set: Point"); - break; - case B_SEL_END: - ts->particle.selectmode = SCE_SELECT_END; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - ED_undo_push(C, "Selectmode Set: End point"); - break; - case B_MAN_TRANS: if( shift==0 || v3d->twtype==0) { v3d->twtype= V3D_MANIP_TRANSLATE; @@ -1789,48 +396,8 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) break; case B_MAN_MODE: ED_area_tag_redraw(sa); - break; - case B_VIEW_BUTSEDIT: - ED_area_tag_redraw(sa); break; - default: - - if(event>=B_LAY && eventlay!=0 && shift) { - - /* but do find active layer */ - - bit= event-B_LAY; - if( v3d->lay & (1<layact= 1<lay & v3d->layact) == 0) { - bit= 0; - while(bit<32) { - if(v3d->lay & (1<layact= 1<lay= 1<layact= v3d->lay; - } - - if(v3d->scenelock) handle_view3d_lock(C); - - ED_area_tag_redraw(sa); - countall(); - - /* new layers might need unflushed events events */ - DAG_scene_update_flags(scene, v3d->lay); /* tags all that moves and flushes */ - - } break; } @@ -1838,55 +405,6 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) BKE_mesh_end_editmesh(obedit->data, em); } -static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *ob) -{ - Object *obedit = CTX_data_edit_object(C); - RegionView3D *rv3d= wm_region_view3d(C); - short xmax, xco= 0, yco = 0; - - /* compensate for local mode when setting up the viewing menu/iconrow values */ - if(rv3d->view==7) rv3d->viewbut= 1; - else if(rv3d->view==1) rv3d->viewbut= 2; - else if(rv3d->view==3) rv3d->viewbut= 3; - else rv3d->viewbut= 0; - - /* the 'xmax - 3' rather than xmax is to prevent some weird flickering where the highlighted - * menu is drawn wider than it should be. The ypos of -2 is to make it properly fill the - * height of the header */ - - xmax= GetButStringLength("Select"); - - xco+= xmax; - - if (obedit) { - } - else if (ob && ob->mode & OB_MODE_WEIGHT_PAINT) { - xmax= GetButStringLength("Paint"); - uiDefPulldownBut(block, view3d_wpaintmenu, NULL, "Paint", xco,yco, xmax-3, 20, ""); - xco+= xmax; - } - else if (ob && ob->mode & OB_MODE_TEXTURE_PAINT) { - xmax= GetButStringLength("Paint"); - uiDefPulldownBut(block, view3d_tpaintmenu, NULL, "Paint", xco,yco, xmax-3, 20, ""); - xco+= xmax; - } - else if (paint_facesel_test(ob)) { - if (ob && ob->type == OB_MESH) { - xmax= GetButStringLength("Face"); - uiDefPulldownBut(block, view3d_faceselmenu, NULL, "Face", xco,yco, xmax-3, 20, ""); - xco+= xmax; - } - } - else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { - /* ported to python */ - } - else { - if (ob && (ob->mode & OB_MODE_POSE)) { - /* ported to python */ - } - } -} - /* Returns the icon associated with an object mode */ static int object_mode_icon(int mode) { @@ -1920,9 +438,6 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) block= uiLayoutGetBlock(layout); uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL); - - if((sa->flag & HEADER_NO_PULLDOWN)==0) - view3d_header_pulldowns(C, block, ob); /* other buttons: */ uiBlockSetEmboss(block, UI_EMBOSS); @@ -1966,13 +481,15 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY); /* NDOF */ - if (G.ndofdevice ==0 ) { + /* Not implemented yet + if (G.ndofdevice ==0 ) { 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"); } + */ /* Transform widget / manipulators */ row= uiLayoutRow(layout, 1); @@ -1996,9 +513,12 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if(obedit==NULL && v3d->localvd==NULL) { int ob_lay = ob ? ob->lay : 0; - + /* Layers */ - uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay); + if (v3d->scenelock) + uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay); + else + uiTemplateLayers(layout, &v3dptr, "visible_layers", &v3dptr, "used_layers", ob_lay); /* Scene lock */ uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 62374ca3134..2b42b64c0a3 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1263,6 +1263,74 @@ 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<layact= 1<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 i, tot= 0; + + /* ensure we always have some layer selected */ + for(i=0; i<20; i++) + if(values[i]) + tot++; + + if(tot==0) + return lay; + + for(i=0; i<20; i++) { + if(values[i]) lay |= (1<set= set; } -static int layer_set(int lay, const int *values) -{ - int i, tot= 0; - - /* ensure we always have some layer selected */ - for(i=0; i<20; i++) - if(values[i]) - tot++; - - if(tot==0) - return lay; - - for(i=0; i<20; i++) { - if(values[i]) lay |= (1<data; - scene->lay= layer_set(scene->lay, values); + scene->lay= ED_view3d_scene_layer_set(scene->lay, values); } static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr) @@ -555,7 +535,7 @@ static int rna_SceneRenderData_use_game_engine_get(PointerRNA *ptr) static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values) { SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data; - rl->lay= layer_set(rl->lay, values); + rl->lay= ED_view3d_scene_layer_set(rl->lay, values); } static void rna_SceneRenderLayer_pass_update(bContext *C, PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index e7f9a8edcae..c10f3f74fd8 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -98,6 +98,7 @@ static EnumPropertyItem transform_orientation_items[] = { #include "ED_image.h" #include "ED_screen.h" +#include "ED_view3d.h" #include "IMB_imbuf_types.h" @@ -227,6 +228,12 @@ static void rna_Space3DView_lock_camera_and_layers_set(PointerRNA *ptr, int valu } } +static void rna_Space3DView_layer_set(PointerRNA *ptr, const int *values) +{ + View3D *v3d= (View3D*)(ptr->data); + + v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values); +} /* Space Image Editor */ @@ -863,9 +870,17 @@ static void rna_def_space_3dview(BlenderRNA *brna) prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1); RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_lock_camera_and_layers_set"); - RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Lock the active camera and layers to scene."); + RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Use the scene's active camera and layers in this view, rather than local layers."); RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); + RNA_def_property_boolean_sdna(prop, NULL, "lay", 1); + RNA_def_property_array(prop, 20); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Space3DView_layer_set"); + RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible in this 3D View."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1); RNA_def_property_array(prop, 20); -- cgit v1.2.3 From 8c313fa931844057671c635b6e9cb270db1659fa Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 3 Dec 2009 09:51:02 +0000 Subject: Fix for color management not working with AVI output, patch by Damien Plisson, thanks! --- source/blender/render/intern/source/pipeline.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index b357a17e244..08440798826 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1065,12 +1065,25 @@ void RE_ResultGet32(Render *re, unsigned int *rect) int tot= rres.rectx*rres.recty; char *cp= (char *)rect; - for(;tot>0; tot--, cp+=4, fp+=4) { - cp[0] = FTOCHAR(fp[0]); - cp[1] = FTOCHAR(fp[1]); - cp[2] = FTOCHAR(fp[2]); - cp[3] = FTOCHAR(fp[3]); + if (re->r.color_mgt_flag & R_COLOR_MANAGEMENT) { + /* Finally convert back to sRGB rendered image */ + for(;tot>0; tot--, cp+=4, fp+=4) { + cp[0] = FTOCHAR(linearrgb_to_srgb(fp[0])); + cp[1] = FTOCHAR(linearrgb_to_srgb(fp[1])); + cp[2] = FTOCHAR(linearrgb_to_srgb(fp[2])); + cp[3] = FTOCHAR(fp[3]); + } } + else { + /* Color management is off : no conversion necessary */ + for(;tot>0; tot--, cp+=4, fp+=4) { + cp[0] = FTOCHAR(fp[0]); + cp[1] = FTOCHAR(fp[1]); + cp[2] = FTOCHAR(fp[2]); + cp[3] = FTOCHAR(fp[3]); + } + } + } else /* else fill with black */ -- cgit v1.2.3 From f146d96c3b9529455052521a84f4e64a525d92d1 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 3 Dec 2009 09:56:31 +0000 Subject: Bugfix #20219: Timeline navigation Added missing "View All" (HomeKey) operator for TimeLine --- release/scripts/ui/space_time.py | 1 + source/blender/editors/space_time/time_ops.c | 50 ++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 938a365ed3a..4c1111cee47 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -91,6 +91,7 @@ class TIME_MT_view(bpy.types.Menu): st = context.space_data layout.operator("anim.time_toggle") + layout.operator("time.view_all") layout.separator() diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index 7d91c6d0fc7..83b310dba80 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -90,7 +90,8 @@ void TIME_OT_start_frame_set (wmOperatorType *ot) ot->exec= time_set_sfra_exec; ot->poll= ED_operator_timeline_active; - // XXX properties??? + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -129,7 +130,50 @@ void TIME_OT_end_frame_set (wmOperatorType *ot) ot->exec= time_set_efra_exec; ot->poll= ED_operator_timeline_active; - // XXX properties??? + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* ************************ View All Operator *******************************/ + +static int time_view_all_exec (bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + ARegion *ar= CTX_wm_region(C); + View2D *v2d= (ar) ? &ar->v2d : NULL; + float extra; + + if ELEM(NULL, scene, ar) + return OPERATOR_CANCELLED; + + /* set extents of view to start/end frames (Preview Range too) */ + v2d->cur.xmin= (float)PSFRA; + v2d->cur.xmax= (float)PEFRA; + + /* we need an extra "buffer" factor on either side so that the endpoints are visible */ + extra= 0.01f * (v2d->cur.xmax - v2d->cur.xmin); + v2d->cur.xmin -= extra; + v2d->cur.xmax += extra; + + /* this only affects this TimeLine instance, so just force redraw of this region */ + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void TIME_OT_view_all (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "View All"; + ot->idname= "TIME_OT_view_all"; + ot->description= "Show the entire playable frame range"; + + /* api callbacks */ + ot->exec= time_view_all_exec; + ot->poll= ED_operator_timeline_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } /* ************************** registration **********************************/ @@ -138,6 +182,7 @@ void time_operatortypes(void) { WM_operatortype_append(TIME_OT_start_frame_set); WM_operatortype_append(TIME_OT_end_frame_set); + WM_operatortype_append(TIME_OT_view_all); } void time_keymap(wmKeyConfig *keyconf) @@ -146,5 +191,6 @@ void time_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TIME_OT_start_frame_set", SKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TIME_OT_end_frame_set", EKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "TIME_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); } -- cgit v1.2.3 From cbab6e57dc8176dc2a4b380e81993612b0df7825 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Thu, 3 Dec 2009 09:59:52 +0000 Subject: QTkit : update build checks to allow only 10.5+/64bit builds Other SDK versions do not handle correctly QTKit movie creation in a background thread. Carbon quicktime should be used for the 32bit builds (USE_QTKIT = 0) --- source/blender/quicktime/apple/qtkit_export.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 59cd669d738..c7759055d7e 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -57,8 +57,8 @@ #import #import -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -#error OSX 10.5 minimum is needed for QTKit +#if (MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4) || !__LP64__ +#error 64 bit build & OSX 10.5 minimum are needed for QTKit #endif #include "quicktime_import.h" -- cgit v1.2.3 From 42970d81fce4b0bba7aab74277cf281bd0cda2eb Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 3 Dec 2009 10:18:47 +0000 Subject: Bugfix #20190: Scaling Bone Joints in envelope drawmode Made scaling selected joints using SKEY work in the same way as in 2.4x However, it'd probably be nice to be able to have separate hotkeys for this at a later stage. --- source/blender/editors/transform/transform_conversions.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 33e37ec8536..4627db7e89c 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1056,7 +1056,15 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t) ListBase *edbo = arm->edbo; TransData *td; float mtx[3][3], smtx[3][3], delta[3], bonemat[3][3]; - + + /* special hack for envelope drawmode and scaling: + * to allow scaling the size of the envelope around single points, + * mode should become TFM_BONE_ENVELOPE in this case + */ + // TODO: maybe we need a separate hotkey for it, but this is consistent with 2.4x for now + if ((t->mode == TFM_RESIZE) && (arm->drawtype==ARM_ENVELOPE)) + t->mode= TFM_BONE_ENVELOPE; + t->total = 0; for (ebo = edbo->first; ebo; ebo = ebo->next) { -- cgit v1.2.3 From b440fe1611f9799e40c736d8b3e8bbc4ef5f0a01 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 3 Dec 2009 10:23:38 +0000 Subject: Fix for one of the issues in #20230: Comp Nodes animations not saving to .blend AnimData was not getting written to files for Node Trees. --- source/blender/blenloader/intern/writefile.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index b2147221f9f..2bfc726b7c7 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -475,6 +475,8 @@ static void write_nodetree(WriteData *wd, bNodeTree *ntree) /* for link_list() speed, we write per list */ + if(ntree->adt) write_animdata(wd, ntree->adt); + for(node= ntree->nodes.first; node; node= node->next) writestruct(wd, DATA, "bNode", 1, node); -- cgit v1.2.3 From 1fd581ad77e2958e4ea7a6faf0afd823d26f042c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 3 Dec 2009 10:27:22 +0000 Subject: Bugfix: Toggle animation channel visibility (shift-v) was not flushing the new values correctly - Modifying groups did not flush status to channels below - Objects were always toggled. Still need to figure out why this didn't work right... --- source/blender/editors/animation/anim_channels_edit.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index e4ce26b6156..5842f476bc6 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -1104,11 +1104,16 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) /* Now set the flags */ for (ale= anim_data.first; ale; ale= ale->next) { + /* hack: skip object channels for now, since flushing those will always flush everything, but they are always included */ + // TODO: find out why this is the case, and fix that + if (ale->type == ANIMTYPE_OBJECT) + continue; + /* change the setting */ ANIM_channel_setting_set(&ac, ale, ACHANNEL_SETTING_VISIBLE, vis); /* now, also flush selection status up/down as appropriate */ - //ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, (vis == ACHANNEL_SETFLAG_ADD)); + ANIM_visibility_flush_anim_channels(&ac, &all_data, ale, (vis == ACHANNEL_SETFLAG_ADD)); } /* cleanup */ -- cgit v1.2.3 From 3b1c6d6065ea784e6986bff58a842afd0915dc7a Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Thu, 3 Dec 2009 12:16:00 +0000 Subject: Quicktime Carbon: Fix memory leak when build with cocoa --- intern/ghost/CMakeLists.txt | 4 ++++ intern/ghost/SConscript | 6 +++++- intern/ghost/intern/GHOST_SystemCocoa.mm | 22 ++++++++++++++++++++++ source/blender/quicktime/SConscript | 7 ++++++- source/blender/quicktime/apple/quicktime_export.c | 19 +++++++++++++++++-- 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 92d0abce2b8..77afcc929aa 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -45,6 +45,10 @@ IF(APPLE) LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerX11.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp") LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp") + + IF(WITH_QUICKTIME) + ADD_DEFINITIONS(-DWITH_QUICKTIME) + ENDIF(WITH_QUICKTIME) ELSE(APPLE) IF(WIN32) SET(INC ${INC} ${WINTAB_INC}) diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 90a86ae01a9..2a06a9d3c9e 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -12,6 +12,7 @@ if window_system == 'darwin': pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window', 'GHOST_DropTarget'] +defs=['_USE_MATH_DEFINES'] if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd6', 'irix6'): for f in pf: @@ -29,6 +30,10 @@ elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64 pass elif window_system == 'darwin': if env['WITH_GHOST_COCOA']: + if env['WITH_BF_QUICKTIME']: + defs.append('WITH_QUICKTIME') + if env['USE_QTKIT']: + defs.append('USE_QTKIT') for f in pf: try: sources.remove('intern' + os.sep + f + 'Win32.cpp') @@ -49,7 +54,6 @@ else: print "Unknown window system specified." Exit() -defs=['_USE_MATH_DEFINES'] if env['BF_GHOST_DEBUG']: defs.append('BF_GHOST_DEBUG') diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index f7036f21642..37befdf7f85 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -389,6 +389,28 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG]) { } } +#if defined(WITH_QUICKTIME) && !defined(USE_QTKIT) +//Need to place this quicktime function in an ObjC file +//It is used to avoid memory leak when raising the quicktime "compression settings" standard dialog +extern "C" { + struct bContext; + struct wmOperator; + extern int fromcocoa_request_qtcodec_settings(bContext *C, wmOperator *op); + + +int cocoa_request_qtcodec_settings(bContext *C, wmOperator *op) +{ + int result; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + result = fromcocoa_request_qtcodec_settings(C, op); + + [pool drain]; + return result; +} +}; +#endif + #pragma mark Cocoa objects diff --git a/source/blender/quicktime/SConscript b/source/blender/quicktime/SConscript index 549b3cffe5a..c8cd795decb 100644 --- a/source/blender/quicktime/SConscript +++ b/source/blender/quicktime/SConscript @@ -30,4 +30,9 @@ incs.append(env['BF_QUICKTIME_INC']) types = ['core','player'] priorities = [200,235] -env.BlenderLib ('bf_quicktime', sources=source_files, includes=incs, defines=['WITH_QUICKTIME'], libtype=types, priority=priorities) +defs=['WITH_QUICKTIME'] + +if env['WITH_GHOST_COCOA']: + defs.append('GHOST_COCOA') + +env.BlenderLib ('bf_quicktime', sources=source_files, includes=incs, defines=defs, libtype=types, priority=priorities) diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index dea170ddeb4..68fd60d89d2 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -783,7 +783,7 @@ static int request_qtcodec_settings(bContext *C, wmOperator *op) err = SCRequestSequenceSettings(qtdata->theComponent); if (err == scUserCancelled) { - return 0; + return OPERATOR_FINISHED; } // update runtime codecsettings for use with the codec dialog @@ -844,7 +844,7 @@ static int request_qtcodec_settings(bContext *C, wmOperator *op) } } - return 1; + return OPERATOR_FINISHED; } static int ED_operator_setqtcodec(bContext *C) @@ -852,6 +852,17 @@ static int ED_operator_setqtcodec(bContext *C) return G.have_quicktime != FALSE; } +#if defined(__APPLE__) && defined(GHOST_COCOA) +//Need to set up a Cocoa NSAutoReleasePool to avoid memory leak +//And it must be done in an objC file, so use a GHOST_SystemCocoa.mm function for that +extern int cocoa_request_qtcodec_settings(bContext *C, wmOperator *op); + +int fromcocoa_request_qtcodec_settings(bContext *C, wmOperator *op) +{ + return request_qtcodec_settings(C, op); +} +#endif + void SCENE_OT_render_data_set_quicktime_codec(wmOperatorType *ot) { @@ -861,7 +872,11 @@ void SCENE_OT_render_data_set_quicktime_codec(wmOperatorType *ot) ot->idname= "SCENE_OT_render_data_set_quicktime_codec"; /* api callbacks */ +#if defined(__APPLE__) && defined(GHOST_COCOA) + ot->exec = cocoa_request_qtcodec_settings; +#else ot->exec= request_qtcodec_settings; +#endif ot->poll= ED_operator_setqtcodec; /* flags */ -- cgit v1.2.3 From 685d418f3a185a3e52fb84ba121c621e1017b623 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 3 Dec 2009 14:20:35 +0000 Subject: - curve geometry curve panel wasnt displaying with no active spline - graph export didnt work for constraints with no subtarget - utility functions for duplicating a set of bones and blending between 2 sets --- release/scripts/modules/graphviz_export.py | 2 +- release/scripts/modules/rigify/__init__.py | 156 ++++++++++++++++++++++++++-- release/scripts/ui/properties_data_curve.py | 3 +- 3 files changed, 150 insertions(+), 11 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 84614c9dc70..5d0ff4fe824 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -119,7 +119,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): pbone = obj.pose.bones[bone] # must be ordered for constraint in pbone.constraints: - subtarget = constraint.subtarget + subtarget = getattr(constraint, "subtarget", "") if subtarget: # TODO, not internal links opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=4'] diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 78ace98ff89..c61886fde1f 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -47,15 +47,123 @@ def _bone_class_instance_update(self): pbones = self.obj.pose.bones ebones = arm.edit_bones - for member in self.__slots__: - if not member[-2] == "_": - name = getattr(self, member, None) - if name is not None: - setattr(self, member + "_b", bbones.get(name, None)) - setattr(self, member + "_p", pbones.get(name, None)) - setattr(self, member + "_e", ebones.get(name, None)) + for member in self.attr_names: + name = getattr(self, member, None) + if name is not None: + setattr(self, member + "_b", bbones.get(name, None)) + setattr(self, member + "_p", pbones.get(name, None)) + setattr(self, member + "_e", ebones.get(name, None)) + + +def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): + orig_name_ls = [] + new_name_ls = [] + new_slot_ls = [] + + for attr in self.attr_names: + bone_name_orig = getattr(self, attr) + ebone = getattr(self, attr + "_e") + # orig_names[attr] = bone_name_orig + + # insert prefix + bone_name = "ORG-" + bone_name_orig + ebone.name = bone_name + bone_name = ebone.name # cant be sure we get what we ask for + setattr(self, attr, bone_name) + + new_slot_ls.append(attr) + orig_name_ls.append(bone_name) + new_name_ls.append(bone_name_orig) + + new_bones = copy_bone_simple_list(self.obj.data, orig_name_ls, new_name_ls, True) + new_bc = bone_class_instance(self.obj, new_slot_ls) + + for i, attr in enumerate(new_slot_ls): + ebone = new_bones[i] + setattr(new_bc, attr + "_e", ebone) + setattr(new_bc, attr, ebone.name) + + return new_bc + + +def _bone_class_instance_blend(self, from_bc, to_bc, blend_target=None, use_loc=True, use_rot=True): + ''' + Use for blending bone chains. + + blend_target = (bone_name, bone_property) + default to the last bone, blend prop + + XXX - toggles editmode, need to re-validate all editbones :( + ''' + if self.attr_names != to_bc.attr_names: + raise Exception("can only blend between matching chains") + + obj = self.obj + + if obj.mode == 'EDIT': + raise Exception("blending cant be called in editmode") + + # setup the blend property + if blend_target: + prop_bone_name, prop_name = blend_target + else: + prop_bone_name, prop_name = self.attr_names[-1], "blend" + + prop_pbone = obj.pose.bones[prop_bone_name] + if prop_pbone.get(prop_bone_name, None) is None: + prop = rna_idprop_ui_prop_get(prop_pbone, prop_name, create=True) + prop_pbone[prop_name] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + driver_path = prop_pbone.path_to_id() + ('["%s"]' % prop_name) + + def blend_target(driver): + tar = driver.targets.new() + tar.name = prop_bone_name + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = driver_path + + for attr in self.attr_names: + new_pbone = getattr(self, attr + "_p") + from_bone_name = getattr(from_bc, attr) + to_bone_name = getattr(to_bc, attr) + if use_loc: + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + + if use_rot: + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + def bone_class_instance(obj, slots, name="BoneContainer"): + attr_names = tuple(slots) # dont modify the original slots = slots[:] # dont modify the original for i in range(len(slots)): member = slots[i] @@ -63,7 +171,14 @@ def bone_class_instance(obj, slots, name="BoneContainer"): slots.append(member + "_p") # pose bone slots.append(member + "_e") # edit bone - class_dict = {"obj":obj, "update":_bone_class_instance_update} + class_dict = { \ + "obj":obj, \ + "attr_names":attr_names, \ + "update":_bone_class_instance_update, \ + "copy":_bone_class_instance_copy, \ + "blend":_bone_class_instance_blend, \ + } + instance = auto_class_instance(slots, name, class_dict) return instance @@ -94,6 +209,31 @@ def copy_bone_simple(arm, from_bone, name, parent=False): return ebone_new +def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): + dup_bones = {} + + if len(from_bones) != len(to_bones): + raise Exception("bone list sizes must match") + + copy_bones = [copy_bone_simple(arm, bone_name, to_bones[i], True) for i, bone_name in enumerate(from_bones)] + + # now we need to re-parent + for ebone in copy_bones: + parent = ebone.parent + if parent: + try: + i = from_bones.index(parent.name) + except: + i = -1 + + if i == -1: + ebone.parent = None + else: + ebone.parent = copy_bones[i] + + return copy_bones + + def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index b6e82e05994..3ee16ad9585 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -133,8 +133,7 @@ class DATA_PT_geometry_curve(DataButtonsPanel): if obj and obj.type == 'SURFACE': return False - curve = context.curve - return (curve and curve.active_spline) + return context.curve def draw(self, context): layout = self.layout -- cgit v1.2.3 From 18fb6d5e4366224440a0eca182b280b8b9ffb483 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Thu, 3 Dec 2009 16:28:50 +0000 Subject: Added Toggle Full Screen and Duplicate Area to the menus of all the main spaces in Blender --- release/scripts/ui/space_console.py | 6 +++++- release/scripts/ui/space_image.py | 4 ++++ release/scripts/ui/space_node.py | 4 ++++ release/scripts/ui/space_outliner.py | 5 +++++ release/scripts/ui/space_sequencer.py | 23 ++++------------------- release/scripts/ui/space_text.py | 6 ++++++ release/scripts/ui/space_view3d.py | 15 ++++++++++----- 7 files changed, 38 insertions(+), 25 deletions(-) diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index 63e8055b148..a59c39d52ec 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -69,7 +69,11 @@ class CONSOLE_MT_console(bpy.types.Menu): layout.operator("console.copy") layout.operator("console.paste") layout.menu("CONSOLE_MT_language") - + + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class CONSOLE_MT_report(bpy.types.Menu): bl_label = "Report" diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index ea8ed19d31b..9c5c92dbaef 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -61,6 +61,10 @@ class IMAGE_MT_view(bpy.types.Menu): layout.operator("image.view_selected") layout.operator("image.view_all") + + layout.separator() + + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index cc5b3fe7977..ed212053ecc 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -82,6 +82,10 @@ class NODE_MT_view(bpy.types.Menu): layout.separator() layout.operator("node.view_all") + + layout.separator() + + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index a398bc66f45..f6ad0b68f80 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -76,6 +76,11 @@ class OUTLINER_MT_view(bpy.types.Menu): col.operator("outliner.show_one_level") col.operator("outliner.show_hierarchy") + + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class OUTLINER_MT_edit_datablocks(bpy.types.Menu): diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 8476a98992c..00361ca86aa 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -100,19 +100,6 @@ class SEQUENCER_MT_view(bpy.types.Menu): layout.separator() layout.operator("sequencer.view_all") layout.operator("sequencer.view_selected") - layout.separator() - layout.operator("screen.screen_full_area", text="Toggle Full Screen") - """ - - - /* Lock Time */ - uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, - "Lock Time to Other Windows|", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - /* Draw time or frames.*/ - uiDefMenuSep(block); - """ layout.prop(st, "draw_frames") layout.prop(st, "show_cframe_indicator") @@ -121,12 +108,10 @@ class SEQUENCER_MT_view(bpy.types.Menu): if st.display_mode == 'WAVEFORM': layout.prop(st, "separate_color_preview") - """ - if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, ""); - else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); - - """ - + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class SEQUENCER_MT_select(bpy.types.Menu): bl_label = "Select" diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 6ea499704fc..fad8ab3b610 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -123,6 +123,7 @@ class TEXT_PT_find(bpy.types.Panel): row.prop(st, "find_all", text="All") + class TEXT_MT_text(bpy.types.Menu): bl_label = "Text" @@ -159,6 +160,11 @@ class TEXT_MT_text(bpy.types.Menu): layout.operator("text.properties", icon='ICON_MENU_PANEL') layout.menu("TEXT_MT_templates") + + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class TEXT_MT_templates(bpy.types.Menu): diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 2c6b2b5ad18..3db6e3ccd99 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -269,13 +269,18 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.operator("view3d.view_all") layout.separator() - - layout.operator("screen.region_foursplit", text="Toggle Quad View") - layout.operator("screen.screen_full_area", text="Toggle Full Screen") - + + layout.operator("screen.animation_play", text="Playback Animation") + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.region_foursplit") + layout.operator("screen.screen_full_area") + + - layout.operator("screen.animation_play", text="Playback Animation", icon='ICON_PLAY') + class VIEW3D_MT_view_navigation(bpy.types.Menu): -- cgit v1.2.3 From e10ae8a1a29459157f2135aad682b01efaaee88f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 3 Dec 2009 18:28:04 +0000 Subject: Sculpt Branch: * Fix some svn merge errors. --- release/scripts/ui/space_sequencer.py | 2 -- release/scripts/ui/space_view3d.py | 3 --- release/scripts/ui/space_view3d_toolbar.py | 1 - 3 files changed, 6 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 86c6b9766d4..8ac77a50d55 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -238,7 +238,6 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.separator() layout.operator("sequencer.image_change") layout.operator("sequencer.rendersize") - layout.itemO("sequencer.rendersize") elif stype == 'SCENE': layout.separator() layout.operator("sequencer.scene_change", text="Change Scene") @@ -246,7 +245,6 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.separator() layout.operator("sequencer.movie_change") layout.operator("sequencer.rendersize") - layout.itemO("sequencer.rendersize") layout.separator() diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index f9401c021dd..5f3a86e81b3 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -376,7 +376,6 @@ class VIEW3D_MT_select_particle(bpy.types.Menu): layout.operator("particle.select_all_toggle", text="Select/Deselect All") layout.operator("particle.select_linked") layout.operator("particle.select_inverse") - layout.itemO("particle.select_inverse") layout.separator() @@ -410,8 +409,6 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces") layout.operator("mesh.faces_select_interior", text="Interior Faces") layout.operator("mesh.select_axis", text="Side of Active") - layout.itemO("mesh.faces_select_interior", text="Interior Faces") - layout.itemO("mesh.select_axis", text="Side of Active") layout.separator() diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 4e2e2f18b2e..8d0c644cb11 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -105,7 +105,6 @@ class VIEW3D_PT_tools_meshedit(View3DPanel): col.operator("mesh.duplicate_move") col.operator("mesh.spin") col.operator("mesh.screw") - col.itemO("mesh.flip_normals") col = layout.column(align=True) col.label(text="Remove:") -- cgit v1.2.3 From 010c99deb271c629742e32f5e7922d357cafc9f3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 3 Dec 2009 18:35:37 +0000 Subject: Sculpt Branch: * Multithread parts of multires and subsurf. Only loops working on face grid data and do no memory allocation have been multithreaded, others would be more complicated. * Force some CCGSubsurf functions to be inlined, gives a small overall speedup in subsurf code. * Fix sculpting not working correct with transformed objects. * Fix a few cases of "spikes" on lower level multires levels. There's still cases where it happens, usually on boundary cornders. The problem is that in such cases the limit surfaces can be very different from the low res surface, so the tangent space is very different too.. * Fix crash deleting multires higher levels with level set to 0. * Fix crashes that happened sometimes when adding faces in editmode. --- source/blender/blenkernel/BKE_DerivedMesh.h | 1 + source/blender/blenkernel/BKE_subsurf.h | 1 + source/blender/blenkernel/intern/CCGSubSurf.c | 217 ++++++++++++++----------- source/blender/blenkernel/intern/multires.c | 172 +++++++------------- source/blender/blenkernel/intern/subsurf_ccg.c | 12 +- source/blender/editors/sculpt_paint/sculpt.c | 5 + source/blender/gpu/intern/gpu_buffers.c | 6 +- 7 files changed, 198 insertions(+), 216 deletions(-) diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index bcafc4c48b2..1f6a8f955ba 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -151,6 +151,7 @@ struct DerivedMesh { int (*getGridSize)(DerivedMesh *dm); DMGridData **(*getGridData)(DerivedMesh *dm); DMGridAdjacency *(*getGridAdjacency)(DerivedMesh *dm); + int *(*getGridOffset)(DerivedMesh *dm); /* Iterate over each mapped vertex in the derived mesh, calling the * given function with the original vert and the mapped vert's new diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h index 7b8adb7cb8e..0a18850e3b7 100644 --- a/source/blender/blenkernel/BKE_subsurf.h +++ b/source/blender/blenkernel/BKE_subsurf.h @@ -73,6 +73,7 @@ typedef struct CCGDerivedMesh { struct DMGridData **gridData; struct DMGridAdjacency *gridAdjacency; + int *gridOffset; struct _CCGFace **gridFaces; struct { diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 7c2c6d4d99e..cc2bd531fe6 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -8,6 +8,12 @@ #include "BLO_sys_types.h" // for intptr_t support +#ifdef _MSC_VER +#define CCG_INLINE __inline +#else +#define CCG_INLINE inline +#endif + /* used for normalize_v3 in BLI_math_vector * float.h's FLT_EPSILON causes trouble with subsurf normals - campbell */ #define EPSILON (1.0e-35f) @@ -523,19 +529,19 @@ static CCGFace *_face_new(CCGFaceHDL fHDL, CCGVert **verts, CCGEdge **edges, int return f; } -static void *_face_getIECo(CCGFace *f, int lvl, int S, int x, int levels, int dataSize) { +static CCG_INLINE void *_face_getIECo(CCGFace *f, int lvl, int S, int x, int levels, int dataSize) { int maxGridSize = 1 + (1<<(levels-1)); int spacing = 1<<(levels-lvl); byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize)); return &gridBase[dataSize*x*spacing]; } -static void *_face_getIFCo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize) { +static CCG_INLINE void *_face_getIFCo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize) { int maxGridSize = 1 + (1<<(levels-1)); int spacing = 1<<(levels-lvl); byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize)); return &gridBase[dataSize*(maxGridSize + (y*maxGridSize + x)*spacing)]; } -static float *_face_getIFNo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset) { +static CCG_INLINE float *_face_getIFNo(CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset) { int maxGridSize = 1 + (1<<(levels-1)); int spacing = 1<<(levels-lvl); byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize)); @@ -548,7 +554,7 @@ static int _face_getVertIndex(CCGFace *f, CCGVert *v) { return i; return -1; } -static void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize) { +static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize) { int maxGridSize = 1 + (1<<(levels-1)); int spacing = 1<<(levels-lvl); int S, x, y, cx, cy; @@ -1146,9 +1152,11 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, int normalDataOffset = ss->normalDataOffset; int vertDataSize = ss->meshIFC.vertDataSize; + #pragma omp parallel for private(ptrIdx) schedule(static) for (ptrIdx=0; ptrIdxnumVerts; S++) { for (y=0; yflags&Vert_eEffected) NormZero(FACE_getIFNo(f, lvl, S, gridSize-1, gridSize-1)); } - } - - for (ptrIdx=0; ptrIdxnumVerts; S++) { int yLimit = !(FACE_getEdges(f)[(S-1+f->numVerts)%f->numVerts]->flags&Edge_eEffected); @@ -1275,18 +1277,16 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, } } } + + #pragma omp parallel for private(ptrIdx) schedule(static) for (ptrIdx=0; ptrIdxnumVerts; S++) { NormCopy(FACE_getIFNo(f, lvl, (S+1)%f->numVerts, 0, gridSize-1), FACE_getIFNo(f, lvl, S, gridSize-1, 0)); } - } - for (ptrIdx=0; ptrIdxnumVerts; S++) { for (y=0; yq, *r = ss->r; + int ptrIdx, cornerIdx, i; int vertDataSize = ss->meshIFC.vertDataSize; + void *q = ss->q, *r = ss->r; + #pragma omp parallel for private(ptrIdx) schedule(static) for (ptrIdx=0; ptrIdx1.0) { for (x=0; xnumFaces; i++) { - CCGFace *f = e->faces[i]; + for (j=0; jnumFaces; j++) { + CCGFace *f = e->faces[j]; VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize)); numFaces++; } @@ -1460,10 +1463,10 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, void *nCo = VERT_getCo(v, nextLvl); int sharpCount = 0, allSharp = 1; float avgSharpness = 0.0; - int seam = VERT_seam(v), seamEdges = 0; + int j, seam = VERT_seam(v), seamEdges = 0; - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; + for (j=0; jnumEdges; j++) { + CCGEdge *e = v->edges[j]; float sharpness = EDGE_getSharpness(e, curLvl); if (seam && _edge_isBoundary(e)) @@ -1493,8 +1496,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, int numBoundary = 0; VertDataZero(r); - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; + for (j=0; jnumEdges; j++) { + CCGEdge *e = v->edges[j]; if (_edge_isBoundary(e)) { VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); numBoundary++; @@ -1510,15 +1513,15 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, int numEdges = 0, numFaces = 0; VertDataZero(q); - for (i=0; inumFaces; i++) { - CCGFace *f = v->faces[i]; + for (j=0; jnumFaces; j++) { + CCGFace *f = v->faces[j]; VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx)); numFaces++; } VertDataMulN(q, 1.0f/numFaces); VertDataZero(r); - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; + for (j=0; jnumEdges; j++) { + CCGEdge *e = v->edges[j]; VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize)); numEdges++; } @@ -1540,8 +1543,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, allSharp = 1; } - for (i=0; inumEdges; i++) { - CCGEdge *e = v->edges[i]; + for (j=0; jnumEdges; j++) { + CCGEdge *e = v->edges[j]; float sharpness = EDGE_getSharpness(e, curLvl); if (seam) { @@ -1585,6 +1588,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, float sharpness = EDGE_getSharpness(e, curLvl); int sharpCount = 0; float avgSharpness = 0.0; + int x, j; if (sharpness!=0.0f) { sharpCount = 2; @@ -1622,8 +1626,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataZero(r); VertDataAdd(r, EDGE_getCo(e, curLvl, x-1)); VertDataAdd(r, EDGE_getCo(e, curLvl, x+1)); - for (i=0; inumFaces; i++) { - CCGFace *f = e->faces[i]; + for (j=0; jnumFaces; j++) { + CCGFace *f = e->faces[j]; VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx-1, 1, subdivLevels, vertDataSize)); VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx+1, 1, subdivLevels, vertDataSize)); @@ -1654,52 +1658,91 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - for (ptrIdx=0; ptrIdxnumVerts; S++) { - VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1)); - } - VertDataMulN(q, 1.0f/f->numVerts); - VertDataZero(r); - for (S=0; SnumVerts; S++) { - VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1)); + #pragma omp critical + { + q = CCGSUBSURF_alloc(ss, ss->meshIFC.vertDataSize); + r = CCGSUBSURF_alloc(ss, ss->meshIFC.vertDataSize); } - VertDataMulN(r, 1.0f/f->numVerts); - VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f); - VertDataAdd(FACE_getCenterData(f), q); - VertDataAdd(FACE_getCenterData(f), r); - VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); + #pragma omp for schedule(static) + for (ptrIdx=0; ptrIdxnumVerts; S++) { - /* interior face shift - * o old interior face point (shifting) - * o new interior edge midpoints + /* interior center point shift + * o old face center point (shifting) + * o old interior edge points * o new interior face midpoints */ - for (x=1; xnumVerts; S++) { + VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1)); + } + VertDataMulN(q, 1.0f/f->numVerts); + VertDataZero(r); + for (S=0; SnumVerts; S++) { + VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1)); + } + VertDataMulN(r, 1.0f/f->numVerts); + + VertDataMulN(FACE_getCenterData(f), f->numVerts-2.0f); + VertDataAdd(FACE_getCenterData(f), q); + VertDataAdd(FACE_getCenterData(f), r); + VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); + + for (S=0; SnumVerts; S++) { + /* interior face shift + * o old interior face point (shifting) + * o new interior edge midpoints + * o new interior face midpoints + */ + for (x=1; xnumVerts, 1, fx-1), + FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1), + FACE_getIFCo(f, nextLvl, S, fx+1, +1), + FACE_getIFCo(f, nextLvl, S, fx-1, +1)); - VertDataAvg4(r, FACE_getIFCo(f, nextLvl, S, fx-1, fy+0), - FACE_getIFCo(f, nextLvl, S, fx+1, fy+0), - FACE_getIFCo(f, nextLvl, S, fx+0, fy-1), - FACE_getIFCo(f, nextLvl, S, fx+0, fy+1)); + VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1), + FACE_getIECo(f, nextLvl, S, fx+1), + FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx), + FACE_getIFCo(f, nextLvl, S, fx, 1)); VertDataCopy(nCo, co); VertDataSub(nCo, q); @@ -1707,32 +1750,12 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataAdd(nCo, r); } } + } - /* interior edge interior shift - * o old interior edge point (shifting) - * o new interior edge midpoints - * o new interior face midpoints - */ - for (x=1; xnumVerts, 1, fx-1), - FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx+1), - FACE_getIFCo(f, nextLvl, S, fx+1, +1), - FACE_getIFCo(f, nextLvl, S, fx-1, +1)); - - VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx-1), - FACE_getIECo(f, nextLvl, S, fx+1), - FACE_getIFCo(f, nextLvl, (S+1)%f->numVerts, 1, fx), - FACE_getIFCo(f, nextLvl, S, fx, 1)); - - VertDataCopy(nCo, co); - VertDataSub(nCo, q); - VertDataMulN(nCo, 0.25f); - VertDataAdd(nCo, r); - } + #pragma omp critical + { + CCGSUBSURF_free(ss, q); + CCGSUBSURF_free(ss, r); } } @@ -1740,13 +1763,19 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, edgeSize = 1 + (1<<(nextLvl)); gridSize = 1 + (1<<((nextLvl)-1)); cornerIdx = gridSize-1; + + #pragma omp parallel for private(i) schedule(static) for (i=0; iv0, nextLvl)); VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl)); } + + #pragma omp parallel for private(i) schedule(static) for (i=0; inumVerts; S++) { CCGEdge *e = FACE_getEdges(f)[S]; CCGEdge *prevE = FACE_getEdges(f)[(S+f->numVerts-1)%f->numVerts]; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index a709b45f60c..69659db3ba7 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -248,39 +248,45 @@ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object int lvl = multires_get_level(ob, mmd, 0); int levels = mmd->totlvl - lvl; MDisps *mdisps; - + CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS); multires_force_update(ob); if(mdisps && levels > 0 && direction == 1) { - int nsize = multires_side_tot[lvl]; - int hsize = multires_side_tot[mmd->totlvl]; - int i; + if(lvl > 0) { + int nsize = multires_side_tot[lvl]; + int hsize = multires_side_tot[mmd->totlvl]; + int i; - for(i = 0; i < me->totface; ++i) { - MDisps *mdisp= &mdisps[i]; - float (*disps)[3], (*ndisps)[3], (*hdisps)[3]; - int nvert = (me->mface[i].v4)? 4: 3; - int totdisp = multires_grid_tot[lvl]*nvert; - int S; + for(i = 0; i < me->totface; ++i) { + MDisps *mdisp= &mdisps[i]; + float (*disps)[3], (*ndisps)[3], (*hdisps)[3]; + int nvert = (me->mface[i].v4)? 4: 3; + int totdisp = multires_grid_tot[lvl]*nvert; + int S; - disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); + disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); - ndisps = disps; - hdisps = mdisp->disps; + ndisps = disps; + hdisps = mdisp->disps; - for(S = 0; S < nvert; S++) { - multires_copy_grid(ndisps, hdisps, nsize, hsize); + for(S = 0; S < nvert; S++) { + multires_copy_grid(ndisps, hdisps, nsize, hsize); - ndisps += nsize*nsize; - hdisps += hsize*hsize; - } + ndisps += nsize*nsize; + hdisps += hsize*hsize; + } - MEM_freeN(mdisp->disps); - mdisp->disps = disps; - mdisp->totdisp = totdisp; + MEM_freeN(mdisp->disps); + mdisp->disps = disps; + mdisp->totdisp = totdisp; + } + } + else { + CustomData_external_remove(&me->fdata, CD_MDISPS, me->totface); + CustomData_free_layer_active(&me->fdata, CD_MDISPS, me->totface); } } @@ -409,105 +415,27 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updat multires_set_tot_level(ob, mmd, totlvl); } -static void grid_adjacent_rotate(int rotation, int gridSize, int *x, int *y) -{ - /* we rotate (rotation * 90°) counterclockwise around center */ - int nx, ny; - - switch(rotation) { - case 0: nx = *x; ny = *y; break; - case 1: nx = *y; ny = *x; break; - case 2: nx = *x; ny = *y; break; //gridSize - 1 - *x; ny = gridSize - 1 - *y; break; - case 3: nx = *y; ny = *x; break; - } - - *x = nx; - *y = ny; -} - -static void grid_adjacent_jump(DMGridAdjacency *adj, int gridSize, int *index, int *x, int *y) -{ - if(*x < 0) { - if(adj->index[3] == -1) { - /* no adjacent grid, clamp */ - *x = 0; - } - else { - /* jump to adjacent grid */ - *index = adj->index[3]; - *x += gridSize; - grid_adjacent_rotate(adj->rotation[3], gridSize, x, y); - } - } - else if(*x >= gridSize) { - if(adj->index[1] == -1) { - /* no adjacent grid, take a step back */ - *x = gridSize - 1; - } - else { - /* jump to adjacent grid */ - *index = adj->index[1]; - *x -= gridSize; - grid_adjacent_rotate(adj->rotation[1], gridSize, x, y); - } - } - else if(*y < 0) { - if(adj->index[0] == -1) { - /* no adjacent grid, clamp */ - *y = 0; - } - else { - /* jump to adjacent grid */ - *index = adj->index[0]; - *y += gridSize; - grid_adjacent_rotate(adj->rotation[0], gridSize, x, y); - } - } - else if(*y >= gridSize) { - if(adj->index[2] == -1) { - /* no adjacent grid, take a step back */ - *y = gridSize - 1; - } - else { - /* jump to adjacent grid */ - *index = adj->index[2]; - *y -= gridSize; - grid_adjacent_rotate(adj->rotation[2], gridSize, x, y); - } - } -} - -static void grid_tangent(DMGridAdjacency *adj, int gridSize, int index, int x, int y, int axis, DMGridData **gridData, float t[3]) +static void grid_tangent(int gridSize, int index, int x, int y, int axis, DMGridData **gridData, float t[3]) { - int jindex = index, jx = x, jy = y; - if(axis == 0) { - if(adj->index[1] == -1 && x == gridSize - 1) { - if(adj->index[2] == -1 && y == gridSize - 1) + if(x == gridSize - 1) { + if(y == gridSize - 1) sub_v3_v3v3(t, gridData[index][x + gridSize*(y - 1)].co, gridData[index][x - 1 + gridSize*(y - 1)].co); else sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x - 1 + gridSize*y].co); } - else { - jx += 1; - grid_adjacent_jump(adj, gridSize, &jindex, &jx, &jy); - sub_v3_v3v3(t, gridData[jindex][jx + gridSize*jy].co, gridData[index][x + gridSize*y].co); - } + else + sub_v3_v3v3(t, gridData[index][x + 1 + gridSize*y].co, gridData[index][x + gridSize*y].co); } else if(axis == 1) { - if(adj->index[2] == -1 && y == gridSize - 1) { - if(adj->index[1] == -1 && x == gridSize - 1) { + if(y == gridSize - 1) { + if(x == gridSize - 1) sub_v3_v3v3(t, gridData[index][x - 1 + gridSize*y].co, gridData[index][x - 1 + gridSize*(y - 1)].co); - } - else { + else sub_v3_v3v3(t, gridData[index][x + gridSize*y].co, gridData[index][x + gridSize*(y - 1)].co); - } - } - else { - jy += 1; - grid_adjacent_jump(adj, gridSize, &jindex, &jx, &jy); - sub_v3_v3v3(t, gridData[jindex][jx + gridSize*jy].co, gridData[index][x + gridSize*y].co); } + else + sub_v3_v3v3(t, gridData[index][x + gridSize*(y + 1)].co, gridData[index][x + gridSize*y].co); } } @@ -515,28 +443,36 @@ static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; DMGridData **gridData, **subGridData; - DMGridAdjacency *gridAdjacency; MFace *mface = me->mface; MDisps *mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); - int i, S, x, y, numGrids, gIndex, gridSize, dGridSize, dSkip; + int *gridOffset; + int i, numGrids, gridSize, dGridSize, dSkip; numGrids = dm->getNumGrids(dm); gridSize = dm->getGridSize(dm); gridData = dm->getGridData(dm); - gridAdjacency = dm->getGridAdjacency(dm); + gridOffset = dm->getGridOffset(dm); subGridData = (oldGridData)? oldGridData: gridData; dGridSize = multires_side_tot[totlvl]; dSkip = (dGridSize-1)/(gridSize-1); - for(gIndex = 0, i = 0; i < me->totface; ++i) { + #pragma omp parallel for private(i) schedule(static) + for(i = 0; i < me->totface; ++i) { const int numVerts = mface[i].v4 ? 4 : 3; MDisps *mdisp = &mdisps[i]; + int S, x, y, gIndex = gridOffset[i]; + + /* when adding new faces in edit mode, need to allocate disps */ + if(!mdisp->disps) + #pragma omp critical + { + multires_reallocate_mdisps(me, mdisps, totlvl); + } for(S = 0; S < numVerts; ++S, ++gIndex) { DMGridData *grid = gridData[gIndex]; DMGridData *subgrid = subGridData[gIndex]; - DMGridAdjacency *adj = &gridAdjacency[gIndex]; float (*dispgrid)[3] = &mdisp->disps[S*dGridSize*dGridSize]; for(y = 0; y < gridSize; y++) { @@ -548,12 +484,16 @@ static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int float mat[3][3], tx[3], ty[3], disp[3], d[3]; /* construct tangent space matrix */ - grid_tangent(adj, gridSize, gIndex, x, y, 0, subGridData, tx); + grid_tangent(gridSize, gIndex, x, y, 0, subGridData, tx); normalize_v3(tx); - grid_tangent(adj, gridSize, gIndex, x, y, 1, subGridData, ty); + grid_tangent(gridSize, gIndex, x, y, 1, subGridData, ty); normalize_v3(ty); + //mul_v3_fl(tx, 1.0f/(gridSize-1)); + //mul_v3_fl(ty, 1.0f/(gridSize-1)); + //cross_v3_v3v3(no, tx, ty); + column_vectors_to_mat3(mat, tx, ty, no); if(!invert) { diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 716229e6ead..c9d84670044 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1894,6 +1894,7 @@ static void ccgDM_release(DerivedMesh *dm) { if(ccgdm->gridFaces) MEM_freeN(ccgdm->gridFaces); if(ccgdm->gridData) MEM_freeN(ccgdm->gridData); if(ccgdm->gridAdjacency) MEM_freeN(ccgdm->gridAdjacency); + if(ccgdm->gridOffset) MEM_freeN(ccgdm->gridOffset); if(ccgdm->freeSS) ccgSubSurf_free(ccgdm->ss); MEM_freeN(ccgdm->edgeFlags); MEM_freeN(ccgdm->faceFlags); @@ -2112,7 +2113,7 @@ static void ccgdm_create_grids(DerivedMesh *dm) ccgdm->gridData = gridData; ccgdm->gridFaces = gridFaces; ccgdm->gridAdjacency = gridAdjacency; - MEM_freeN(gridOffset); + ccgdm->gridOffset = gridOffset; } static DMGridData **ccgDM_getGridData(DerivedMesh *dm) @@ -2131,6 +2132,14 @@ static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm) return ccgdm->gridAdjacency; } +static int *ccgDM_getGridOffset(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + + ccgdm_create_grids(dm); + return ccgdm->gridOffset; +} + static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) { CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; @@ -2209,6 +2218,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, ccgdm->dm.getGridSize = ccgDM_getGridSize; ccgdm->dm.getGridData = ccgDM_getGridData; ccgdm->dm.getGridAdjacency = ccgDM_getGridAdjacency; + ccgdm->dm.getGridOffset = ccgDM_getGridOffset; ccgdm->dm.getPBVH = ccgDM_getPBVH; ccgdm->dm.getVertCos = ccgdm_getVertCos; diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 7644751d61e..b39a2912c02 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1726,12 +1726,17 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou SculptSession *ss= vc->obact->sculpt; StrokeCache *cache= ss->cache; float ray_start[3], ray_normal[3]; + float obimat[4][4]; float mval[2] = {mouse[0] - vc->ar->winrct.xmin, mouse[1] - vc->ar->winrct.ymin}; SculptRaycastData srd; viewray(vc->ar, vc->v3d, mval, ray_start, ray_normal); + invert_m4_m4(obimat, ss->ob->obmat); + mul_m4_v3(obimat, ray_start); + mul_mat3_m4_v3(obimat, ray_normal); + srd.ss = vc->obact->sculpt; srd.ray_start = ray_start; srd.ray_normal = ray_normal; diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 9db7f9b1ce9..4c55f759e47 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -379,14 +379,10 @@ void GPU_drawobject_free( DerivedMesh *dm ) dm->drawObject = 0; } -/* Convenience struct for building the VBO. - TODO: check that (lack-of) padding is OK, - also check performance of short vs float for normals */ +/* Convenience struct for building the VBO. */ typedef struct { float co[3]; short no[3]; - - char pad[14]; } VertexBufferFormat; typedef struct { -- cgit v1.2.3 From e4a97d67b62d169ef97f9b17ed739154cff62e70 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 3 Dec 2009 19:18:00 +0000 Subject: Make toggle and hold snap method cohabit nicely. Shift-Tab toggles the global toolsetting snap settings (both in and out of transform). Holding down Ctrl inverts the snap setting in transform (turns it on when global snap is off and vice versa). Ctrl-Shift-Tab to select snap mode (only outside of transform for now). For old (pre 2.5) behavior, just keep global snap off and use Ctrl. NOTE: transform modal events for snap have change a bit, saved keymap might not work anymore. --- source/blender/editors/transform/transform.c | 21 +-- source/blender/editors/transform/transform.h | 15 +- .../editors/transform/transform_constraints.c | 2 +- source/blender/editors/transform/transform_ops.c | 6 +- source/blender/editors/transform/transform_snap.c | 155 +++++++++++---------- 5 files changed, 105 insertions(+), 94 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index ffc6ea86835..1b450e48e31 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -507,8 +507,8 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_TRANSLATE 3 #define TFM_MODAL_ROTATE 4 #define TFM_MODAL_RESIZE 5 -#define TFM_MODAL_SNAP_ON 6 -#define TFM_MODAL_SNAP_OFF 7 +#define TFM_MODAL_SNAP_INV_ON 6 +#define TFM_MODAL_SNAP_INV_OFF 7 #define TFM_MODAL_SNAP_TOGGLE 8 #define TFM_MODAL_AXIS_X 9 #define TFM_MODAL_AXIS_Y 10 @@ -529,8 +529,8 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_TRANSLATE, "TRANSLATE", 0, "Translate", ""}, {TFM_MODAL_ROTATE, "ROTATE", 0, "Rotate", ""}, {TFM_MODAL_RESIZE, "RESIZE", 0, "Resize", ""}, - {TFM_MODAL_SNAP_ON, "SNAP_ON", 0, "Snap On", ""}, - {TFM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap Off", ""}, + {TFM_MODAL_SNAP_INV_ON, "SNAP_INV_ON", 0, "Invert Snap On", ""}, + {TFM_MODAL_SNAP_INV_OFF, "SNAP_INV_OFF", 0, "Invert Snap Off", ""}, {TFM_MODAL_SNAP_TOGGLE, "SNAP_TOGGLE", 0, "Snap Toggle", ""}, {TFM_MODAL_AXIS_X, "AXIS_X", 0, "Orientation X axis", ""}, {TFM_MODAL_AXIS_Y, "AXIS_Y", 0, "Orientation Y axis", ""}, @@ -560,7 +560,10 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE); WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE); + WM_modalkeymap_add_item(keymap, TABKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_SNAP_TOGGLE); + + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_INV_ON); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, TFM_MODAL_SNAP_INV_OFF); WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); @@ -651,12 +654,12 @@ int transformEvent(TransInfo *t, wmEvent *event) } break; - case TFM_MODAL_SNAP_ON: - t->modifiers |= MOD_SNAP; + case TFM_MODAL_SNAP_INV_ON: + t->modifiers |= MOD_SNAP_INVERT; t->redraw = 1; break; - case TFM_MODAL_SNAP_OFF: - t->modifiers &= ~MOD_SNAP; + case TFM_MODAL_SNAP_INV_OFF: + t->modifiers &= ~MOD_SNAP_INVERT; t->redraw = 1; break; case TFM_MODAL_SNAP_TOGGLE: diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 1577c05cc88..d51cf9c864b 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -91,8 +91,8 @@ typedef struct TransSnapPoint { typedef struct TransSnap { short mode; + short target; short modePoint; - short modeTarget; short modeSelect; short align; short project; @@ -382,7 +382,8 @@ typedef struct TransInfo { #define MOD_CONSTRAINT_SELECT 0x01 #define MOD_PRECISION 0x02 #define MOD_SNAP 0x04 -#define MOD_CONSTRAINT_PLANE 0x08 +#define MOD_SNAP_INVERT 0x08 +#define MOD_CONSTRAINT_PLANE 0x10 /* ******************************************************************************** */ @@ -427,13 +428,6 @@ typedef struct TransInfo { #define POINT_INIT 4 #define MULTI_POINTS 8 -/* transsnap->modeTarget */ -#define SNAP_CLOSEST 0 -#define SNAP_CENTER 1 -#define SNAP_MEDIAN 2 -#define SNAP_ACTIVE 3 - - void TFM_OT_transform(struct wmOperatorType *ot); int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode); @@ -597,6 +591,9 @@ typedef enum { void snapGrid(TransInfo *t, float *val); void snapGridAction(TransInfo *t, float *val, GearsType action); +int activeSnap(TransInfo *t); +int validSnap(TransInfo *t); + void initSnapping(struct TransInfo *t, struct wmOperator *op); void applyProject(TransInfo *t); void applySnapping(TransInfo *t, float *vec); diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index 1a810d4adc3..1f42d9411f1 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -290,7 +290,7 @@ static void applyAxisConstraintVec(TransInfo *t, TransData *td, float in[3], flo mul_m3_v3(t->con.pmtx, out); // With snap, a projection is alright, no need to correct for view alignment - if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && t->modifiers & MOD_SNAP)) { + if (!(t->tsnap.mode != SCE_SNAP_MODE_INCREMENT && activeSnap(t))) { if (getConstraintSpaceDimension(t) == 2) { if (out[0] != 0.0f || out[1] != 0.0f || out[2] != 0.0f) { planeProjection(t, in, out); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 6ab2982b51e..ad4462a74cf 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -784,10 +784,10 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); - km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", LEFTCTRLKEY, KM_CLICK, KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0); break; case SPACE_ACTION: @@ -861,7 +861,7 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LEFTCTRLKEY, KM_CLICK, 0, 0); + km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(km->ptr, "path", "scene.tool_settings.snap"); break; default: diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index ae28986017f..b8ea49110fc 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -90,7 +90,7 @@ /********************* PROTOTYPES ***********************/ -void setSnappingCallback(TransInfo *t, short snap_target); +void setSnappingCallback(TransInfo *t); void ApplySnapTranslation(TransInfo *t, float vec[3]); void ApplySnapRotation(TransInfo *t, float *vec); @@ -123,15 +123,20 @@ int BIF_snappingSupported(Object *obedit) return status; } -int validSnap(TransInfo *t) { +int validSnap(TransInfo *t) +{ return (t->tsnap.status & (POINT_INIT|TARGET_INIT)) == (POINT_INIT|TARGET_INIT) || (t->tsnap.status & (MULTI_POINTS|TARGET_INIT)) == (MULTI_POINTS|TARGET_INIT); } +int activeSnap(TransInfo *t) +{ + return (t->modifiers & (MOD_SNAP|MOD_SNAP_INVERT)) == MOD_SNAP || (t->modifiers & (MOD_SNAP|MOD_SNAP_INVERT)) == MOD_SNAP_INVERT; +} + void drawSnapping(const struct bContext *C, TransInfo *t) { - if (validSnap(t) && - (t->modifiers & MOD_SNAP)) + if (validSnap(t) && activeSnap(t)) { char col[4] = {1, 0, 1}; @@ -232,7 +237,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) void applyProject(TransInfo *t) { /* XXX FLICKER IN OBJECT MODE */ - if ((t->tsnap.project) && (t->modifiers & MOD_SNAP) && (t->modifiers & MOD_SNAP)) + if ((t->tsnap.project) && activeSnap(t)) { TransData *td = t->data; float tvec[3]; @@ -268,7 +273,7 @@ void applyProject(TransInfo *t) project_float(t->ar, iloc, mval); - if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeTarget)) + if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.target)) { // if(t->flag & (T_EDIT|T_POSE)) { // mul_m4_v3(imat, loc); @@ -298,8 +303,7 @@ void applySnapping(TransInfo *t, float *vec) t->tsnap.applySnap(t, vec); } - else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) && - (t->modifiers & MOD_SNAP)) + else if ((t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) && activeSnap(t)) { double current = PIL_check_seconds_timer(); @@ -325,7 +329,7 @@ void resetSnapping(TransInfo *t) t->tsnap.align = 0; t->tsnap.mode = 0; t->tsnap.modeSelect = 0; - t->tsnap.modeTarget = 0; + t->tsnap.target = 0; t->tsnap.last = 0; t->tsnap.applySnap = NULL; @@ -352,11 +356,67 @@ int validSnappingNormal(TransInfo *t) return 0; } -void initSnapping(TransInfo *t, wmOperator *op) +void initSnappingMode(TransInfo *t) { ToolSettings *ts = t->settings; Object *obedit = t->obedit; Scene *scene = t->scene; + + resetSnapping(t); + + /* force project off when not supported */ + if (ts->snap_mode != SCE_SNAP_MODE_FACE) + { + t->tsnap.project = 0; + } + + t->tsnap.mode = ts->snap_mode; + + if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV + (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view + setSnappingCallback(t); + + /* Edit mode */ + if (t->tsnap.applySnap != NULL && // A snapping function actually exist + (obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves + { + if (t->flag & T_PROP_EDIT) + { + t->tsnap.modeSelect = SNAP_NOT_OBEDIT; + } + else + { + t->tsnap.modeSelect = SNAP_ALL; + } + } + /* Particles edit mode*/ + else if (t->tsnap.applySnap != NULL && // A snapping function actually exist + (obedit == NULL && BASACT && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) + { + t->tsnap.modeSelect = SNAP_ALL; + } + /* Object mode */ + else if (t->tsnap.applySnap != NULL && // A snapping function actually exist + (obedit == NULL) ) // Object Mode + { + t->tsnap.modeSelect = SNAP_NOT_SELECTED; + } + else + { + /* Grid if snap is not possible */ + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; + } + } + else + { + /* Always grid outside of 3D view */ + t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; + } +} + +void initSnapping(TransInfo *t, wmOperator *op) +{ + ToolSettings *ts = t->settings; short snap_target = t->settings->snap_target; resetSnapping(t); @@ -405,76 +465,27 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); } - /* force project off when not supported */ - if (ts->snap_mode != SCE_SNAP_MODE_FACE) - { - t->tsnap.project = 0; - } - - t->tsnap.mode = ts->snap_mode; + t->tsnap.target = snap_target; - if ((t->spacetype == SPACE_VIEW3D || t->spacetype == SPACE_IMAGE) && // Only 3D view or UV - (t->flag & T_CAMERA) == 0) { // Not with camera selected in camera view - setSnappingCallback(t, snap_target); - - /* Edit mode */ - if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (obedit != NULL && ELEM3(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVE)) ) // Temporary limited to edit mode meshes, armature, curves - { - if (t->flag & T_PROP_EDIT) - { - t->tsnap.modeSelect = SNAP_NOT_OBEDIT; - } - else - { - t->tsnap.modeSelect = SNAP_ALL; - } - } - /* Particles edit mode*/ - else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (obedit == NULL && BASACT && BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT )) - { - t->tsnap.modeSelect = SNAP_ALL; - } - /* Object mode */ - else if (t->tsnap.applySnap != NULL && // A snapping function actually exist - (obedit == NULL) ) // Object Mode - { - t->tsnap.modeSelect = SNAP_NOT_SELECTED; - } - else - { - /* Grid if snap is not possible */ - t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; - } - } - else - { - /* Always grid outside of 3D view */ - t->tsnap.mode = SCE_SNAP_MODE_INCREMENT; - } + initSnappingMode(t); } -void setSnappingCallback(TransInfo *t, short snap_target) +void setSnappingCallback(TransInfo *t) { t->tsnap.calcSnap = CalcSnapGeometry; - switch(snap_target) + switch(t->tsnap.target) { case SCE_SNAP_TARGET_CLOSEST: - t->tsnap.modeTarget = SNAP_CLOSEST; t->tsnap.targetSnap = TargetSnapClosest; break; case SCE_SNAP_TARGET_CENTER: - t->tsnap.modeTarget = SNAP_CENTER; t->tsnap.targetSnap = TargetSnapCenter; break; case SCE_SNAP_TARGET_MEDIAN: - t->tsnap.modeTarget = SNAP_MEDIAN; t->tsnap.targetSnap = TargetSnapMedian; break; case SCE_SNAP_TARGET_ACTIVE: - t->tsnap.modeTarget = SNAP_ACTIVE; t->tsnap.targetSnap = TargetSnapActive; break; @@ -491,8 +502,8 @@ void setSnappingCallback(TransInfo *t, short snap_target) t->tsnap.distance = RotationBetween; // Can't do TARGET_CENTER with rotation, use TARGET_MEDIAN instead - if (snap_target == SCE_SNAP_TARGET_CENTER) { - t->tsnap.modeTarget = SNAP_MEDIAN; + if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) { + t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; t->tsnap.targetSnap = TargetSnapMedian; } break; @@ -501,8 +512,8 @@ void setSnappingCallback(TransInfo *t, short snap_target) t->tsnap.distance = ResizeBetween; // Can't do TARGET_CENTER with resize, use TARGET_MEDIAN instead - if (snap_target == SCE_SNAP_TARGET_CENTER) { - t->tsnap.modeTarget = SNAP_MEDIAN; + if (t->tsnap.target == SCE_SNAP_TARGET_CENTER) { + t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; t->tsnap.targetSnap = TargetSnapMedian; } break; @@ -569,7 +580,7 @@ void ApplySnapTranslation(TransInfo *t, float vec[3]) void ApplySnapRotation(TransInfo *t, float *vec) { - if (t->tsnap.modeTarget == SNAP_CLOSEST) { + if (t->tsnap.target == SCE_SNAP_TARGET_CLOSEST) { *vec = t->tsnap.dist; } else { @@ -581,7 +592,7 @@ void ApplySnapRotation(TransInfo *t, float *vec) void ApplySnapResize(TransInfo *t, float vec[3]) { - if (t->tsnap.modeTarget == SNAP_CLOSEST) { + if (t->tsnap.target == SCE_SNAP_TARGET_CLOSEST) { vec[0] = vec[1] = vec[2] = t->tsnap.dist; } else { @@ -887,7 +898,7 @@ void TargetSnapActive(TransInfo *t) /* No active, default to median */ else { - t->tsnap.modeTarget = SNAP_MEDIAN; + t->tsnap.target = SCE_SNAP_TARGET_MEDIAN; t->tsnap.targetSnap = TargetSnapMedian; TargetSnapMedian(t); } @@ -1907,10 +1918,10 @@ void snapGrid(TransInfo *t, float *val) { invert = U.flag & USER_AUTOGRABGRID; if(invert) { - action = (t->modifiers & MOD_SNAP) ? NO_GEARS: BIG_GEARS; + action = activeSnap(t) ? NO_GEARS: BIG_GEARS; } else { - action = (t->modifiers & MOD_SNAP) ? BIG_GEARS : NO_GEARS; + action = activeSnap(t) ? BIG_GEARS : NO_GEARS; } if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { -- cgit v1.2.3 From a4d8c4a7452669d56a7b7a21b50f96f00d783e0e Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 3 Dec 2009 21:49:29 +0000 Subject: Fix for [#20240] Image inputs to the compositor are white when using color management was missing include --- source/blender/imbuf/intern/divers.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/imbuf/intern/divers.c b/source/blender/imbuf/intern/divers.c index e84a9302bbf..35be1f716e6 100644 --- a/source/blender/imbuf/intern/divers.c +++ b/source/blender/imbuf/intern/divers.c @@ -31,6 +31,7 @@ #include "BLI_blenlib.h" #include "BLI_rand.h" +#include "BLI_math.h" #include "imbuf.h" #include "imbuf_patch.h" -- cgit v1.2.3 From 3b0e182f716b2541fc77fe3b4bac18a529143c29 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 3 Dec 2009 21:53:01 +0000 Subject: - property decorators for setting attributes didnt work, hack to prevent every instance of an BPyStructRNA to have its own dictionary, set the tp_dictoffset to 0. attempted to use __slots__ but this doesnt work for some reason. - made bone.length writable --- release/scripts/modules/bpy_types.py | 5 +++++ source/blender/makesdna/DNA_action_types.h | 2 +- source/blender/python/intern/bpy_rna.c | 11 ++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 4351ee7579b..565f0e4da1b 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -88,6 +88,11 @@ class _GenericBone: @property def length(self): return (self.head - self.tail).length + + @length.setter + def length(self, value): + """The distance from head to tail""" + self.tail = self.head + ((self.tail - self.head).normalize() * value) @property def children(self): diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 5f6d8ef375a..0dc24f31a7b 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -244,7 +244,7 @@ typedef enum eRotationModes { * though there is a define for it (hack for the outliner). */ typedef struct bPose { - ListBase chanbase; /* list of pose channels */ + ListBase chanbase; /* list of pose channels, PoseBones in RNA */ short flag, proxy_layer; /* proxy layer: copy from armature, gets synced */ diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index fd5e1ddf75c..e657cfc79e2 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1738,19 +1738,22 @@ static int pyrna_struct_setattro( BPy_StructRNA *self, PyObject *pyname, PyObjec PropertyRNA *prop = RNA_struct_find_property(&self->ptr, name); if (prop==NULL) { + return PyObject_GenericSetAttr((PyObject *)self, pyname, value); +#if 0 // XXX - This currently allows anything to be assigned to an rna prop, need to see how this should be used // but for now it makes porting scripts confusing since it fails silently. // edit: allowing this for setting classes internal attributes. // edit: allow this for any attribute that alredy exists as a python attr if ( (name[0]=='_' /* || pyrna_struct_pydict_contains(self, pyname) */ ) && !BPy_StructRNA_CheckExact(self) && - PyObject_GenericSetAttr((PyObject *)self, pyname, value) >= 0) { + return 0; } else { PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name); return -1; } +#endif } if (!RNA_property_editable(&self->ptr, prop)) { @@ -2984,6 +2987,9 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna) PyObject *base_compare= pyrna_srna_PyBase(srna); PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); + // XXX - highly dodgy!, this stops blender from creating __dict__ in instances + ((PyTypeObject *)newclass)->tp_dictoffset = 0; + if(PyTuple_GET_SIZE(bases)) { PyObject *base= PyTuple_GET_ITEM(bases, 0); @@ -3039,6 +3045,9 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna) if (newclass) { + // XXX - highly dodgy!, this stops blender from creating __dict__ in instances + ((PyTypeObject *)newclass)->tp_dictoffset = 0; + /* srna owns one, and the other is owned by the caller */ pyrna_subtype_set_rna(newclass, srna); -- cgit v1.2.3 From 18b465b7498544dfbb98d39a7e6afa72e0bed8a8 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 3 Dec 2009 21:56:04 +0000 Subject: Finish renaming job in Set Center operator to use Origin instead of Center. Also replace ObData by Geometry and Object Geometry after talk with Matt. --- release/scripts/ui/space_view3d.py | 6 +++--- source/blender/editors/object/object_intern.h | 2 +- source/blender/editors/object/object_ops.c | 4 ++-- source/blender/editors/object/object_transform.c | 18 +++++++++--------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 3db6e3ccd99..cec836d664c 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -147,9 +147,9 @@ class VIEW3D_MT_transform(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' - layout.operator("object.center_set", text="Object Data to Origin").type = 'CENTER' - layout.operator("object.center_set", text="Origin to Object Data").type = 'CENTER_NEW' - layout.operator("object.center_set", text="Origin to 3D Cursor").type = 'CENTER_CURSOR' + layout.operator("object.origin_set", text="Geometry to Origin").type = 'GEOMETRY_ORIGIN' + layout.operator("object.origin_set", text="Origin to Geometry").type = 'ORIGIN_GEOMETRY' + layout.operator("object.origin_set", text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR' class VIEW3D_MT_mirror(bpy.types.Menu): diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index ebd8261f207..c87210d6070 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -53,7 +53,7 @@ void OBJECT_OT_visual_transform_apply(struct wmOperatorType *ot); void OBJECT_OT_location_apply(struct wmOperatorType *ot); void OBJECT_OT_scale_apply(struct wmOperatorType *ot); void OBJECT_OT_rotation_apply(struct wmOperatorType *ot); -void OBJECT_OT_center_set(struct wmOperatorType *ot); +void OBJECT_OT_origin_set(struct wmOperatorType *ot); /* object_relations.c */ void OBJECT_OT_parent_set(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 8d407b0e571..49c947f52c8 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -71,7 +71,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_location_apply); WM_operatortype_append(OBJECT_OT_scale_apply); WM_operatortype_append(OBJECT_OT_rotation_apply); - WM_operatortype_append(OBJECT_OT_center_set); + WM_operatortype_append(OBJECT_OT_origin_set); WM_operatortype_append(OBJECT_OT_mode_set); WM_operatortype_append(OBJECT_OT_editmode_toggle); @@ -251,7 +251,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT); RNA_boolean_set(kmi->ptr, "toggle", 1); - WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0); /* Object Mode ---------------------------------------------------------------- */ /* Note: this keymap gets disabled in non-objectmode, */ diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 19157c6aa6a..d990df72c0d 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -695,14 +695,14 @@ void texspace_edit(Scene *scene, View3D *v3d) /********************* Set Object Center ************************/ static EnumPropertyItem prop_set_center_types[] = { - {0, "CENTER", 0, "ObData to Centroi", "Move object data to Object centroid"}, - {1, "CENTER_NEW", 0, "Centroid to ObData", "Move Object centroid to center of object data"}, - {2, "CENTER_CURSOR", 0, "Centroid to 3D Cursor", "Move Object centroid to position of the 3d cursor"}, + {0, "GEOMETRY_ORIGIN", 0, "Geometry to Origin", "Move object geometry to object origin"}, + {1, "ORIGIN_GEOMETRY", 0, "Origin to Geometry", "Move object origin to center of object geometry"}, + {2, "ORIGIN_CURSOR", 0, "Origin to 3D Cursor", "Move object origin to position of the 3d cursor"}, {0, NULL, 0, NULL, NULL} }; /* 0 == do center, 1 == center new, 2 == center cursor */ -static int object_center_set_exec(bContext *C, wmOperator *op) +static int object_origin_set_exec(bContext *C, wmOperator *op) { Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); @@ -1026,16 +1026,16 @@ static int object_center_set_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_center_set(wmOperatorType *ot) +void OBJECT_OT_origin_set(wmOperatorType *ot) { /* identifiers */ - ot->name= "Set Center"; - ot->description = "Set the object's center, by either moving the data, or set to center of data, or use 3d cursor"; - ot->idname= "OBJECT_OT_center_set"; + ot->name= "Set Origin"; + ot->description = "Set the object's origin, by either moving the data, or set to center of data, or use 3d cursor"; + ot->idname= "OBJECT_OT_origin_set"; /* api callbacks */ ot->invoke= WM_menu_invoke; - ot->exec= object_center_set_exec; + ot->exec= object_origin_set_exec; ot->poll= ED_operator_view3d_active; -- cgit v1.2.3 From ab1290d62ed6cbdf05b5b999f2b657f70804b07f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 3 Dec 2009 22:44:11 +0000 Subject: leg rig type & metarig example, still need to add IK's fixed some small bugs too. --- release/scripts/modules/rigify/__init__.py | 30 ++-- release/scripts/modules/rigify/leg.py | 216 +++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+), 14 deletions(-) create mode 100644 release/scripts/modules/rigify/leg.py diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index c61886fde1f..107823f3720 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -66,8 +66,8 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): # orig_names[attr] = bone_name_orig # insert prefix - bone_name = "ORG-" + bone_name_orig - ebone.name = bone_name + bone_name = from_prefix + bone_name_orig + ebone.name = to_prefix + bone_name bone_name = ebone.name # cant be sure we get what we ask for setattr(self, attr, bone_name) @@ -86,7 +86,7 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): return new_bc -def _bone_class_instance_blend(self, from_bc, to_bc, blend_target=None, use_loc=True, use_rot=True): +def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend", use_loc=True, use_rot=True): ''' Use for blending bone chains. @@ -104,23 +104,21 @@ def _bone_class_instance_blend(self, from_bc, to_bc, blend_target=None, use_loc= raise Exception("blending cant be called in editmode") # setup the blend property - if blend_target: - prop_bone_name, prop_name = blend_target - else: - prop_bone_name, prop_name = self.attr_names[-1], "blend" + if target_bone is None: + target_bone = self.attr_names[-1] - prop_pbone = obj.pose.bones[prop_bone_name] - if prop_pbone.get(prop_bone_name, None) is None: - prop = rna_idprop_ui_prop_get(prop_pbone, prop_name, create=True) - prop_pbone[prop_name] = 0.5 + prop_pbone = obj.pose.bones[target_bone] + if prop_pbone.get(target_bone, None) is None: + prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) + prop_pbone[target_prop] = 0.5 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - driver_path = prop_pbone.path_to_id() + ('["%s"]' % prop_name) + driver_path = prop_pbone.path_to_id() + ('["%s"]' % target_prop) def blend_target(driver): tar = driver.targets.new() - tar.name = prop_bone_name + tar.name = target_bone tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = driver_path @@ -342,8 +340,12 @@ def generate_rig(context, ob): # enter armature editmode + # Only reference bones that have a type, means we can rename any others without lookup errors + pose_names = [pbone.name for pbone in ob_new.pose.bones if "type" in pbone] + + #for pbone_name in ob_new.pose.bones.keys(): + for pbone_name in pose_names: - for pbone_name in ob_new.pose.bones.keys(): bone_type = ob_new.pose.bones[pbone_name].get("type", "") if bone_type == "": diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py new file mode 100644 index 00000000000..535ed1061f7 --- /dev/null +++ b/release/scripts/modules/rigify/leg.py @@ -0,0 +1,216 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to +from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.object + arm = obj.data + bone = arm.edit_bones.new('hips') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.0000, 0.0000, 1.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('thigh') + bone.head[:] = 0.5000, 0.0000, 0.0000 + bone.tail[:] = 0.3000, -0.1000, -1.7000 + bone.roll = 0.1171 + bone.connected = False + bone.parent = arm.edit_bones['hips'] + bone = arm.edit_bones.new('shin') + bone.head[:] = 0.3000, -0.1000, -1.7000 + bone.tail[:] = 0.3000, 0.0000, -3.5000 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['thigh'] + bone = arm.edit_bones.new('foot') + bone.head[:] = 0.3000, 0.0000, -3.5000 + bone.tail[:] = 0.4042, -0.5909, -3.9000 + bone.roll = -0.4662 + bone.connected = True + bone.parent = arm.edit_bones['shin'] + bone = arm.edit_bones.new('toe') + bone.head[:] = 0.4042, -0.5909, -3.9000 + bone.tail[:] = 0.4391, -0.9894, -3.9000 + bone.roll = -3.1416 + bone.connected = True + bone.parent = arm.edit_bones['foot'] + bone = arm.edit_bones.new('heel') + bone.head[:] = 0.2600, 0.2000, -4.0000 + bone.tail[:] = 0.3700, -0.4000, -4.0000 + bone.roll = 0.0000 + bone.connected = False + bone.parent = arm.edit_bones['foot'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['thigh'] + pbone['type'] = 'leg' + + +def validate(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects a chain of at least 3 children. + eg. + thigh -> shin -> foot -> [toe, heel] + ''' + orig_bone = obj.data.bones[orig_bone_name] + + bone = orig_bone + chain = 0 + while chain < 3: # first 2 bones only have 1 child + children = bone.children + if len(children) != 1: + return "expected the thigh bone to have 3 children without a fork" + bone = children[0] + chain += 1 + + children = bone.children + # Now there must be 2 children, only one connected + if len(children) != 2: + return "expected the foot to have 2 children" + + if children[0].connected == children[1].connected: + return "expected one bone to be connected" + + return '' + + +def main(obj, orig_bone_name): + from Mathutils import Vector + arm = obj.data + + # setup the existing bones + mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) + mt = bone_class_instance(obj, ["hips", "heel"]) + #ex = bone_class_instance(obj, [""]) + ex = bone_class_instance(obj, ["thigh_socket", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) + # children of ik_foot + ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) + + mt_chain.thigh_e = arm.edit_bones[orig_bone_name] + mt_chain.thigh = orig_bone_name + + mt.hips_e = mt_chain.thigh_e.parent + mt.hips_e.name = "ORG-" + mt.hips_e.name + mt.hips = mt.hips_e.name + + mt_chain.shin_e = mt_chain.thigh_e.children[0] + mt_chain.shin = mt_chain.shin_e.name + + mt_chain.foot_e = mt_chain.shin_e.children[0] + mt_chain.foot = mt_chain.foot_e.name + + mt_chain.toe_e, mt.heel_e = mt_chain.foot_e.children + + # We dont know which is which, but know the heel is disconnected + if not mt_chain.toe_e.connected: + mt_chain.toe_e, mt.heel_e = mt.heel_e, mt_chain.toe_e + mt.heel_e.name = "ORG-" + mt.heel_e.name + mt_chain.toe, mt.heel = mt_chain.toe_e.name, mt.heel_e.name + + ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % mt_chain.thigh, parent=True) + ex.thigh_socket = ex.thigh_socket_e.name + ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) + + # Make a new chain, ORG are the original bones renamed. + fk_chain = mt_chain.copy(from_prefix="ORG-") # fk has no prefix! + ik_chain = fk_chain.copy(to_prefix="MCH-") + + # fk_chain.thigh_socket_e.parent = MCH-leg_hinge + + # simple rename + fk_chain.thigh_e.name = fk_chain.thigh_e.name + "_ik" + fk_chain.thigh = ik_chain.thigh_e.name + + fk_chain.shin_e.name = fk_chain.shin_e.name + "_ik" + fk_chain.shin = ik_chain.shin_e.name + + + # ik foot, no parents + base_foot_name = ik_chain.foot # whatever the foot is called, use that! + ik.foot_e = copy_bone_simple(arm, fk_chain.foot, "%s_ik" % base_foot_name) + ik.foot = ik.foot_e.name + ik.foot_e.tail.z = ik.foot_e.head.z + ik.foot_e.roll = 0.0 + + # heel pointing backwards, half length + ik.foot_roll_e = copy_bone_simple(arm, mt.heel, "%s_roll" % base_foot_name) + ik.foot_roll = ik.foot_roll_e.name + ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 + ik.foot_roll_e.parent = ik.foot_e # heel is disconnected + + # heel pointing forwards to the toe base, parent of the following 2 bones + ik.foot_roll_01_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.01" % base_foot_name) + ik.foot_roll_01 = ik.foot_roll_01_e.name + ik.foot_roll_01_e.tail = mt_chain.foot_e.tail + ik.foot_roll_01_e.parent = ik.foot_e # heel is disconnected + + # same as above but reverse direction + ik.foot_roll_02_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.02" % base_foot_name) + ik.foot_roll_02 = ik.foot_roll_02_e.name + ik.foot_roll_02_e.parent = ik.foot_roll_01_e # heel is disconnected + ik.foot_roll_02_e.head = mt_chain.foot_e.tail + ik.foot_roll_02_e.tail = mt.heel_e.head + + del base_foot_name + + # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 + fk_chain.toe_e.name = ik_chain.toe + "_ik" + fk_chain.toe = fk_chain.toe_e.name + fk_chain.toe_e.connected = True + fk_chain.toe_e.parent = ik.foot_roll_01_e + + # re-parent ik_chain.foot to the + fk_chain.foot_e.connected = False + fk_chain.foot_e.parent = ik.foot_roll_02_e + + + # add remaining ik helper bones. + + # knee target is the heel moved up and forward on its local axis + + ik.knee_target_e = copy_bone_simple(arm, mt.heel, "knee_target") + ik.knee_target = ik.knee_target_e.name + offset = ik.knee_target_e.tail - ik.knee_target_e.head + offset.z = 0 + offset.length = mt_chain.shin_e.head.z - mt.heel_e.head.z + offset.z += offset.length + ik.knee_target_e.translate(offset) + ik.knee_target_e.length *= 0.5 + ik.knee_target_e.parent = ik.foot_e + + bpy.ops.object.mode_set(mode='OBJECT') + + ik.update() + ex.update() + mt_chain.update() + ik_chain.update() + fk_chain.update() + + con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.thigh_socket + + + # adds constraints to the original bones. + mt_chain.blend(fk_chain, ik_chain, target_bone=ik.foot, target_prop="ik", use_loc=False) -- cgit v1.2.3 From 1757b06e8861272e394e3def7cdd90d3c5d87a7d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 3 Dec 2009 22:48:00 +0000 Subject: Only set baking progress function to cursor when a window is present. This enables baking in background mode (instead of just crashing). --- .../blender/editors/physics/physics_pointcache.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 78728ae9eb0..784bc1ca30c 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -83,6 +83,7 @@ static int ptcache_poll(bContext *C) static int ptcache_bake_all_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); + wmWindow *win = CTX_wm_window(C); PTCacheBaker baker; @@ -94,8 +95,14 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) baker.quick_step = 1; baker.break_test = cache_break_test; baker.break_data = NULL; - baker.progressbar = (void (*)(void *, int))WM_timecursor; - baker.progresscontext = CTX_wm_window(C); + + if (win) { + baker.progressbar = (void (*)(void *, int))WM_timecursor; + baker.progresscontext = win; + } else { + baker.progressbar = NULL; + baker.progresscontext = NULL; + } BKE_ptcache_make_cache(&baker); @@ -156,6 +163,7 @@ 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); Object *ob= ptr.id.data; PointCache *cache= ptr.data; @@ -178,8 +186,14 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) baker.quick_step = 1; baker.break_test = cache_break_test; baker.break_data = NULL; - baker.progressbar = (void (*)(void *, int))WM_timecursor; - baker.progresscontext = CTX_wm_window(C); + + if (win) { + baker.progressbar = (void (*)(void *, int))WM_timecursor; + baker.progresscontext = win; + } else { + baker.progressbar = NULL; + baker.progresscontext = NULL; + } BKE_ptcache_make_cache(&baker); -- cgit v1.2.3 From 688c4aa1de3d707d43a4b7b1ca5c5ae2fbcd3ced Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 00:49:02 +0000 Subject: Fix for [#19478] Shortkeys for switch to Quad view mode is not working changed default quad view shortcut to Ctrl Alt Q --- release/scripts/ui/space_view3d.py | 2 +- source/blender/editors/screen/screen_ops.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index cec836d664c..97ae62e2d3e 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -275,7 +275,7 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.separator() layout.operator("screen.area_dupli") - layout.operator("screen.region_foursplit") + layout.operator("screen.region_quadview") layout.operator("screen.screen_full_area") diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 4a002088c3d..7780f3e5068 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1997,7 +1997,7 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot) /* ************** region four-split operator ***************************** */ /* insert a region in the area region list */ -static int region_foursplit_exec(bContext *C, wmOperator *op) +static int region_quadview_exec(bContext *C, wmOperator *op) { ARegion *ar= CTX_wm_region(C); @@ -2069,16 +2069,16 @@ static int region_foursplit_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static void SCREEN_OT_region_foursplit(wmOperatorType *ot) +static void SCREEN_OT_region_quadview(wmOperatorType *ot) { /* identifiers */ ot->name= "Toggle Quad View"; ot->description= "Split selected area into camera, front, right & top views."; - ot->idname= "SCREEN_OT_region_foursplit"; + ot->idname= "SCREEN_OT_region_quadview"; /* api callbacks */ // ot->invoke= WM_operator_confirm; - ot->exec= region_foursplit_exec; + ot->exec= region_quadview_exec; ot->poll= ED_operator_areaactive; ot->flag= 0; } @@ -3653,7 +3653,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_area_join); WM_operatortype_append(SCREEN_OT_area_dupli); WM_operatortype_append(SCREEN_OT_area_swap); - WM_operatortype_append(SCREEN_OT_region_foursplit); + WM_operatortype_append(SCREEN_OT_region_quadview); WM_operatortype_append(SCREEN_OT_region_scale); WM_operatortype_append(SCREEN_OT_region_flip); WM_operatortype_append(SCREEN_OT_header_flip); @@ -3758,7 +3758,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0); /* tests */ - WM_keymap_add_item(keymap, "SCREEN_OT_region_foursplit", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0); 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); -- cgit v1.2.3 From a657920fba20ed557eba40575cf54d065f8bc9bd Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 00:54:40 +0000 Subject: Fix for [#20229] Booleans crash on edge case. --- intern/boolop/intern/BOP_Face2Face.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/intern/boolop/intern/BOP_Face2Face.cpp b/intern/boolop/intern/BOP_Face2Face.cpp index 38841e34567..78ccc0ba987 100644 --- a/intern/boolop/intern/BOP_Face2Face.cpp +++ b/intern/boolop/intern/BOP_Face2Face.cpp @@ -310,7 +310,7 @@ void BOP_intersectCoplanarFaces(BOP_Mesh* mesh, } MT_Vector3 p3p1 = p1-p3; - MT_Plane3 plane3((p3p1.cross(normal).normalized()),p3); + MT_Plane3 plane3((p3p1.cross(normal).safe_normalized()),p3); sA.m_cfg1 = BOP_Segment::createVertexCfg(3); sA.m_v1 = faceA->getVertex(2); @@ -528,7 +528,7 @@ void BOP_mergeSort(MT_Point3 *points, unsigned int *face, unsigned int &size, bo invertB = false; if (face[1] == 1) { - // invertA¿? + // invertAø? for(i=0;i Date: Fri, 4 Dec 2009 01:21:55 +0000 Subject: Partial fix for [#19874] can use RMB to cancel joining areas, same as splitting --- source/blender/editors/screen/screen_ops.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 7780f3e5068..afee27cd0f3 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1851,7 +1851,8 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } break; - + + case RIGHTMOUSE: case ESCKEY: return area_join_cancel(C, op); } -- cgit v1.2.3 From b1a1a0f135f1f32551aea766c9faeb6f07875970 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 01:25:43 +0000 Subject: Cleaning: update a couple of functions to use scene from context instead of from screen. --- source/blender/blenkernel/BKE_screen.h | 3 ++- source/blender/blenkernel/intern/depsgraph.c | 2 +- source/blender/blenkernel/intern/screen.c | 17 ++++++++--------- source/blender/editors/screen/screen_edit.c | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h index 39a90fe3074..bf01ef0ec60 100644 --- a/source/blender/blenkernel/BKE_screen.h +++ b/source/blender/blenkernel/BKE_screen.h @@ -41,6 +41,7 @@ struct Header; struct Menu; struct ScrArea; struct SpaceType; +struct Scene; struct wmNotifier; struct wmWindow; struct wmWindowManager; @@ -233,7 +234,7 @@ void BKE_screen_area_free(struct ScrArea *sa); /* screen */ void free_screen(struct bScreen *sc); -unsigned int BKE_screen_visible_layers(struct bScreen *screen); +unsigned int BKE_screen_visible_layers(struct bScreen *screen, struct Scene *scene); #endif diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 302b81f2a04..8535bfc6d0c 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2155,7 +2155,7 @@ static void dag_current_scene_layers(Main *bmain, Scene **sce, unsigned int *lay for(win=wm->windows.first; win; win=win->next) { if(win->screen) { if(!*sce) *sce= win->screen->scene; - *lay |= BKE_screen_visible_layers(win->screen); + *lay |= BKE_screen_visible_layers(win->screen, win->screen->scene); } } } diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index 459db96dbfb..0dc6bf359f6 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -318,21 +318,20 @@ void free_screen(bScreen *sc) } /* for depsgraph */ -unsigned int BKE_screen_visible_layers(bScreen *screen) +unsigned int BKE_screen_visible_layers(bScreen *screen, Scene *scene) { ScrArea *sa; unsigned int layer= 0; - if(!screen) - return layer; - - /* get all used view3d layers */ - for(sa= screen->areabase.first; sa; sa= sa->next) - if(sa->spacetype==SPACE_VIEW3D) - layer |= ((View3D *)sa->spacedata.first)->lay; + if(screen) { + /* get all used view3d layers */ + for(sa= screen->areabase.first; sa; sa= sa->next) + if(sa->spacetype==SPACE_VIEW3D) + layer |= ((View3D *)sa->spacedata.first)->lay; + } if(!layer) - return screen->scene->lay; + return scene->lay; return layer; } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index c158901c15d..b0d1557a66f 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1614,13 +1614,13 @@ void ED_screen_animation_timer_update(bContext *C, int redraws) void ED_update_for_newframe(const bContext *C, int mute) { bScreen *screen= CTX_wm_screen(C); - Scene *scene= screen->scene; + Scene *scene= CTX_data_scene(C); //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ /* this function applies the changes too */ /* XXX future: do all windows */ - scene_update_for_newframe(scene, BKE_screen_visible_layers(screen)); /* BKE_scene.h */ + scene_update_for_newframe(scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */ //if ( (CFRA>1) && (!mute) && (scene->r.audio.flag & AUDIO_SCRUB)) // audiostream_scrub( CFRA ); -- cgit v1.2.3 From 77aacc6ce437dbe526fe08e12a6f68a16d7e2c30 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 01:26:42 +0000 Subject: Print baking progress to console when window is not available. --- source/blender/editors/physics/physics_pointcache.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 784bc1ca30c..9973c38bb41 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -80,6 +80,17 @@ static int ptcache_poll(bContext *C) return (ptr.data && ptr.id.data); } +void bake_console_progress(void *arg, int nr) +{ + printf("\rbake: %3i%%", nr); + fflush(stdout); + + /* endline for last report */ + if (nr == 100) { + printf("\n"); + } +} + static int ptcache_bake_all_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); @@ -100,7 +111,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) baker.progressbar = (void (*)(void *, int))WM_timecursor; baker.progresscontext = win; } else { - baker.progressbar = NULL; + baker.progressbar = bake_console_progress; baker.progresscontext = NULL; } @@ -191,7 +202,8 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) baker.progressbar = (void (*)(void *, int))WM_timecursor; baker.progresscontext = win; } else { - baker.progressbar = NULL; + printf("\n"); /* empty first line before console reports */ + baker.progressbar = bake_console_progress; baker.progresscontext = NULL; } -- cgit v1.2.3 From d3d11ede4453fbcce0f010b6418c1faeb6ec05e1 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 01:28:00 +0000 Subject: Fix for cache path. Operator for background baking (no support in netrender itself yet). --- release/scripts/io/netrender/client.py | 2 +- release/scripts/io/netrender/operators.py | 49 +++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index 8fdedde3f52..f39beadfe57 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -127,7 +127,7 @@ def clientSendJob(conn, scene, anim = False): # FLUID + POINT CACHE ########################### root, ext = os.path.splitext(name) - default_path = path + "blendcache_" + root + os.sep # need an API call for that + default_path = path + os.sep + "blendcache_" + root + os.sep # need an API call for that for object in bpy.data.objects: for modifier in object.modifiers: diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index b5b16b1fb9c..84a00970018 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -26,6 +26,55 @@ from netrender.utils import * import netrender.client as client import netrender.model +@rnaOperator +class RENDER_OT_netslave_bake(bpy.types.Operator): + '''NEED DESCRIPTION''' + bl_idname = "render.netslavebake" + bl_label = "Bake all in file" + + def poll(self, context): + return True + + def execute(self, context): + scene = context.scene + netsettings = scene.network_render + + filename = bpy.data.filename + path, name = os.path.split(filename) + root, ext = os.path.splitext(name) + default_path = path + os.sep + "blendcache_" + root + os.sep # need an API call for that + + # Force all point cache next to the blend file + for object in bpy.data.objects: + for modifier in object.modifiers: + if modifier.type == 'FLUID_SIMULATION' and modifier.settings.type == "DOMAIN": + modifier.settings.path = default_path + bpy.ops.fluid.bake({"active_object": object, "scene": scene}) + elif modifier.type == "CLOTH": + modifier.point_cache.disk_cache = True + modifier.point_cache.external = False + elif modifier.type == "SOFT_BODY": + modifier.point_cache.disk_cache = True + modifier.point_cache.external = False + elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN": + modifier.domain_settings.point_cache_low.disk_cache = True + modifier.domain_settings.point_cache_low.external = False + modifier.domain_settings.point_cache_high.disk_cache = True + modifier.domain_settings.point_cache_high.external = False + + # particles modifier are stupid and don't contain data + # we have to go through the object property + for psys in object.particle_systems: + psys.point_cache.disk_cache = True + psys.point_cache.external = False + + bpy.ops.ptcache.bake_all() + + return ('FINISHED',) + + def invoke(self, context, event): + return self.execute(context) + @rnaOperator class RENDER_OT_netclientanim(bpy.types.Operator): '''Start rendering an animation on network''' -- cgit v1.2.3 From 30d752502b0c6c19a7045e771da5431436a0b259 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 01:38:36 +0000 Subject: Fix for [#19884] Curve resolution slider not affecting anything --- source/blender/makesrna/intern/rna_curve.c | 36 ++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 2925fe55a56..faef93247d9 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -229,6 +229,38 @@ static void rna_Curve_update_deps(bContext *C, PointerRNA *ptr) rna_Curve_update_data(C, ptr); } +static void rna_Curve_resolution_u_update_data(bContext *C, PointerRNA *ptr) +{ + Curve *cu= (Curve*)ptr->id.data; + Nurb *nu=NULL; + + if (cu->editnurb) nu= cu->editnurb->first; + else nu=cu->nurb.first; + + while(nu) { + nu->resolu= cu->resolu; + nu= nu->next; + } + + rna_Curve_update_data(C, ptr); +} + +static void rna_Curve_resolution_v_update_data(bContext *C, PointerRNA *ptr) +{ + Curve *cu= (Curve*)ptr->id.data; + Nurb *nu=NULL; + + if (cu->editnurb) nu= cu->editnurb->first; + else nu=cu->nurb.first; + + while(nu) { + nu->resolv= cu->resolv; + nu= nu->next; + } + + rna_Curve_update_data(C, ptr); +} + /* name functions that ignore the first two ID characters */ void rna_Curve_body_get(PointerRNA *ptr, char *value) { @@ -792,13 +824,13 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "resolu"); RNA_def_property_ui_range(prop, 1, 1024, 1, 0); RNA_def_property_ui_text(prop, "Resolution U", "Surface resolution in U direction."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_resolution_u_update_data"); prop= RNA_def_property(srna, "resolution_v", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolv"); RNA_def_property_ui_range(prop, 1, 1024, 1, 0); RNA_def_property_ui_text(prop, "Resolution V", "Surface resolution in V direction."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_resolution_v_update_data"); prop= RNA_def_property(srna, "render_resolution_u", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolu_ren"); -- cgit v1.2.3 From a9b9993414e0b2b6154fae78c7bbce4f5fdb20f8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 4 Dec 2009 02:32:34 +0000 Subject: rna function editbone.align(vector), to align the bones z axis to a localspace direction. finished leg rig pose mode data --- release/scripts/modules/rigify/__init__.py | 53 ++++++++-- release/scripts/modules/rigify/leg.py | 114 ++++++++++++++++++---- source/blender/editors/armature/editarmature.c | 24 +++-- source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_armature.c | 2 + source/blender/makesrna/intern/rna_armature_api.c | 66 +++++++++++++ source/blender/makesrna/intern/rna_internal.h | 1 + 7 files changed, 225 insertions(+), 37 deletions(-) create mode 100644 source/blender/makesrna/intern/rna_armature_api.c diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 107823f3720..e960d06a1b2 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -55,8 +55,22 @@ def _bone_class_instance_update(self): setattr(self, member + "_e", ebones.get(name, None)) +def _bone_class_instance_rename(self, attr, new_name): + ''' Rename bones, editmode only + ''' + + if self.obj.mode != 'EDIT': + raise Exception("Only rename in editmode supported") + + ebone = getattr(self, attr + "_e") + ebone.name = new_name + + # we may not get what is asked for so get the name from the editbone + setattr(self, attr, ebone.name) + + def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): - orig_name_ls = [] + from_name_ls = [] new_name_ls = [] new_slot_ls = [] @@ -66,16 +80,23 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): # orig_names[attr] = bone_name_orig # insert prefix - bone_name = from_prefix + bone_name_orig - ebone.name = to_prefix + bone_name - bone_name = ebone.name # cant be sure we get what we ask for + if from_prefix: + bone_name = from_prefix + bone_name_orig + ebone.name = bone_name + bone_name = ebone.name # cant be sure we get what we ask for + else: + bone_name = bone_name_orig + setattr(self, attr, bone_name) new_slot_ls.append(attr) - orig_name_ls.append(bone_name) - new_name_ls.append(bone_name_orig) - - new_bones = copy_bone_simple_list(self.obj.data, orig_name_ls, new_name_ls, True) + from_name_ls.append(bone_name) + new_name_ls.append(to_prefix + bone_name_orig) + print("RUN!") + print("from_name_ls", from_name_ls) + print("new_name_ls", new_name_ls) + + new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) new_bc = bone_class_instance(self.obj, new_slot_ls) for i, attr in enumerate(new_slot_ls): @@ -95,7 +116,7 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr XXX - toggles editmode, need to re-validate all editbones :( ''' - if self.attr_names != to_bc.attr_names: + if self.attr_names != from_bc.attr_names or self.attr_names != to_bc.attr_names: raise Exception("can only blend between matching chains") obj = self.obj @@ -127,6 +148,18 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr new_pbone = getattr(self, attr + "_p") from_bone_name = getattr(from_bc, attr) to_bone_name = getattr(to_bc, attr) + + a = getattr(from_bc, attr+"_p") + b = getattr(to_bc, attr+"_p") + + if a.name != from_bone_name: + raise Exception("a") + if b.name != to_bone_name: + raise Exception("b") + if from_bone_name == to_bone_name: + print(from_bc, to_bc) + raise Exception("Matching from/to bone names:" + from_bone_name) + if use_loc: con = new_pbone.constraints.new('COPY_LOCATION') con.target = obj @@ -144,6 +177,7 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr blend_target(driver) if use_rot: + print(from_bone_name, to_bone_name) con = new_pbone.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = from_bone_name @@ -173,6 +207,7 @@ def bone_class_instance(obj, slots, name="BoneContainer"): "obj":obj, \ "attr_names":attr_names, \ "update":_bone_class_instance_update, \ + "rename":_bone_class_instance_rename, \ "copy":_bone_class_instance_copy, \ "blend":_bone_class_instance_blend, \ } diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 535ed1061f7..54dc76dafcf 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -103,7 +103,7 @@ def main(obj, orig_bone_name): mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) #ex = bone_class_instance(obj, [""]) - ex = bone_class_instance(obj, ["thigh_socket", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) + ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) # children of ik_foot ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) @@ -132,22 +132,29 @@ def main(obj, orig_bone_name): ex.thigh_socket = ex.thigh_socket_e.name ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) + ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % mt_chain.thigh, parent=True) + ex.thigh_hinge = ex.thigh_hinge_e.name + ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) + ex.thigh_hinge_e.translate(Vector(-(mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) + ex.thigh_hinge_e.length = mt.hips_e.length + + + # Make a new chain, ORG are the original bones renamed. fk_chain = mt_chain.copy(from_prefix="ORG-") # fk has no prefix! ik_chain = fk_chain.copy(to_prefix="MCH-") + + fk_chain.thigh_e.connected = False + fk_chain.thigh_e.parent = ex.thigh_hinge_e # fk_chain.thigh_socket_e.parent = MCH-leg_hinge - + # simple rename - fk_chain.thigh_e.name = fk_chain.thigh_e.name + "_ik" - fk_chain.thigh = ik_chain.thigh_e.name - - fk_chain.shin_e.name = fk_chain.shin_e.name + "_ik" - fk_chain.shin = ik_chain.shin_e.name - - + ik_chain.rename("thigh", ik_chain.thigh + "_ik") + ik_chain.rename("shin", ik_chain.shin + "_ik") + # ik foot, no parents - base_foot_name = ik_chain.foot # whatever the foot is called, use that! + base_foot_name = fk_chain.foot # whatever the foot is called, use that! ik.foot_e = copy_bone_simple(arm, fk_chain.foot, "%s_ik" % base_foot_name) ik.foot = ik.foot_e.name ik.foot_e.tail.z = ik.foot_e.head.z @@ -175,20 +182,17 @@ def main(obj, orig_bone_name): del base_foot_name # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 - fk_chain.toe_e.name = ik_chain.toe + "_ik" - fk_chain.toe = fk_chain.toe_e.name - fk_chain.toe_e.connected = True - fk_chain.toe_e.parent = ik.foot_roll_01_e + # ------------------ FK or IK? + ik_chain.rename("toe", fk_chain.toe + "_ik") # only fk for the basename + ik_chain.toe_e.connected = False + ik_chain.toe_e.parent = ik.foot_roll_01_e # re-parent ik_chain.foot to the - fk_chain.foot_e.connected = False - fk_chain.foot_e.parent = ik.foot_roll_02_e - + ik_chain.foot_e.connected = False + ik_chain.foot_e.parent = ik.foot_roll_02_e - # add remaining ik helper bones. # knee target is the heel moved up and forward on its local axis - ik.knee_target_e = copy_bone_simple(arm, mt.heel, "knee_target") ik.knee_target = ik.knee_target_e.name offset = ik.knee_target_e.tail - ik.knee_target_e.head @@ -199,6 +203,10 @@ def main(obj, orig_bone_name): ik.knee_target_e.length *= 0.5 ik.knee_target_e.parent = ik.foot_e + # roll the bone to point up... could also point in the same direction as ik.foot_roll + # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode + ik.foot_roll_01_e.align((0.0, 0.0, -1.0)) + bpy.ops.object.mode_set(mode='OBJECT') ik.update() @@ -210,7 +218,75 @@ def main(obj, orig_bone_name): con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.thigh_socket + + # hinge + prop = rna_idprop_ui_prop_get(fk_chain.thigh_p, "hinge", create=True) + fk_chain.thigh_p["hinge"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.hips + + # add driver + hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 # adds constraints to the original bones. mt_chain.blend(fk_chain, ik_chain, target_bone=ik.foot, target_prop="ik", use_loc=False) + + + # IK + con = ik_chain.shin_p.constraints.new('IK') + con.chain_length = 2 + con.iterations = 500 + con.pole_angle = -90.0 # XXX - in deg! + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.weight = 1.0 + + con.target = obj + con.subtarget = ik.foot + + con.pole_target = obj + con.pole_subtarget = ik.knee_target + + # foot roll + cons = [ \ + (ik.foot_roll_01_p.constraints.new('COPY_ROTATION'), ik.foot_roll_01_p.constraints.new('LIMIT_ROTATION')), \ + (ik.foot_roll_02_p.constraints.new('COPY_ROTATION'), ik.foot_roll_02_p.constraints.new('LIMIT_ROTATION')) + ] + + for con, con_l in cons: + con.target = obj + con.subtarget = ik.foot_roll + con.use_x, con.use_y, con.use_z = True, False, False + con.target_space = con.owner_space = 'LOCAL' + + con = con_l + con.use_limit_x, con.use_limit_y, con.use_limit_z = True, False, False + con.owner_space = 'LOCAL' + + if con_l is cons[-1][-1]: + con.minimum_x = 0.0 + con.maximum_x = 180.0 # XXX -deg + else: + con.minimum_x = -180.0 # XXX -deg + con.maximum_x = 0.0 diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index a9efe4be9cb..4564ec49477 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -2026,7 +2026,7 @@ float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]) /* Set roll value for given bone -> Z-Axis Point up (original method) */ -void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone) +static void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone) { float delta[3], curmat[3][3]; float xaxis[3]={1.0f, 0.0f, 0.0f}, yaxis[3], zaxis[3]={0.0f, 0.0f, 1.0f}; @@ -2054,16 +2054,13 @@ void auto_align_ebone_zaxisup(Scene *scene, View3D *v3d, EditBone *ebone) mat3_to_vec_roll(diffmat, delta, &ebone->roll); } -/* Set roll value for given bone -> Z-Axis point towards cursor */ -void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone) +void auto_align_ebone_topoint(EditBone *ebone, float *cursor) { - Object *obedit= scene->obedit; // XXX get from context - float *cursor= give_cursor(scene, v3d); float delta[3], curmat[3][3]; float mat[4][4], tmat[4][4], imat[4][4]; float rmat[4][4], rot[3]; float vec[3]; - + /* find the current bone matrix as a 4x4 matrix (in Armature Space) */ sub_v3_v3v3(delta, ebone->tail, ebone->head); vec_roll_to_mat3(delta, ebone->roll, curmat); @@ -2071,8 +2068,7 @@ void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone) VECCOPY(mat[3], ebone->head); /* multiply bone-matrix by object matrix (so that bone-matrix is in WorldSpace) */ - mul_m4_m4m4(tmat, mat, obedit->obmat); - invert_m4_m4(imat, tmat); + invert_m4_m4(imat, mat); /* find position of cursor relative to bone */ mul_v3_m4v3(vec, imat, cursor); @@ -2093,6 +2089,18 @@ void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone) } } +static void auto_align_ebone_tocursor(Scene *scene, View3D *v3d, EditBone *ebone) +{ + float cursor_local[3]; + float *cursor= give_cursor(scene, v3d); + float imat[3][3]; + + copy_m3_m4(imat, scene->obedit->obmat); + invert_m3(imat); + copy_v3_v3(cursor_local, cursor); + mul_m3_v3(imat, cursor_local); + auto_align_ebone_topoint(ebone, cursor_local); +} static EnumPropertyItem prop_calc_roll_types[] = { {0, "GLOBALUP", 0, "Z-Axis Up", ""}, diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 543e1f3ecc0..037b866edba 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1984,7 +1984,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_action.c", "rna_action_api.c", RNA_def_action}, {"rna_animation.c", "rna_animation_api.c", RNA_def_animation}, {"rna_actuator.c", NULL, RNA_def_actuator}, - {"rna_armature.c", NULL, RNA_def_armature}, + {"rna_armature.c", "rna_armature_api.c", RNA_def_armature}, {"rna_boid.c", NULL, RNA_def_boid}, {"rna_brush.c", NULL, RNA_def_brush}, {"rna_camera.c", NULL, RNA_def_camera}, diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 0a5445d2642..371f14be753 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -618,6 +618,8 @@ static void rna_def_edit_bone(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Tail Selected", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + RNA_api_armature_edit_bone(srna); + RNA_define_verify_sdna(1); } diff --git a/source/blender/makesrna/intern/rna_armature_api.c b/source/blender/makesrna/intern/rna_armature_api.c new file mode 100644 index 00000000000..31bd7275487 --- /dev/null +++ b/source/blender/makesrna/intern/rna_armature_api.c @@ -0,0 +1,66 @@ +/** + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2009 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): Campbell Barton + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include +#include + +#include "RNA_define.h" +#include "RNA_types.h" + +#ifdef RNA_RUNTIME + +#include + +#include "BLI_blenlib.h" + +#include "ED_armature.h" + +void rna_EditBone_align(EditBone *ebo, float *no) +{ + if(!is_zero_v3(no)) { + float normal[3]; + copy_v3_v3(normal, no); + normalize_v3(normal); + ebo->roll= ED_rollBoneToVector(ebo, normal); + } +} + +#else + +void RNA_api_armature_edit_bone(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "align", "rna_EditBone_align"); + RNA_def_function_ui_description(func, "Align the bone to a localspace vector."); + parm= RNA_def_float_vector(func, "vector", 3, NULL, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + +#endif diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 64af7e07fd5..52945b67275 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -204,6 +204,7 @@ char *rna_TextureSlot_path(struct PointerRNA *ptr); /* API functions */ void RNA_api_action(StructRNA *srna); +void RNA_api_armature_edit_bone(StructRNA *srna); void RNA_api_drivers(StructRNA *srna); void RNA_api_image(struct StructRNA *srna); void RNA_api_keyconfig(struct StructRNA *srna); -- cgit v1.2.3 From 45955fef18c57a5d5633b88e823a9bb9d86b38e4 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 4 Dec 2009 03:51:52 +0000 Subject: Bugfixes: Deleting Keyframes + F-Curves This commit fixes #19908 and #20239. Deleting keyframes will now delete the F-Curves they came from too, if the F-Curves don't have any more keyframes and/or F-Modifiers providing any further motion info. --- .../blender/editors/animation/anim_channels_edit.c | 59 +++++++++++++--------- .../blender/editors/animation/keyframes_general.c | 8 --- source/blender/editors/animation/keyframing.c | 10 ++-- source/blender/editors/include/ED_anim_api.h | 4 ++ source/blender/editors/space_action/action_edit.c | 15 ++++-- source/blender/editors/space_graph/graph_edit.c | 10 +++- 6 files changed, 64 insertions(+), 42 deletions(-) diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 5842f476bc6..4be9cb2cd9d 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -86,9 +86,9 @@ #include "WM_types.h" /* ************************************************************************** */ -/* CHANNELS API */ +/* CHANNELS API - Exposed API */ -/* -------------------------- Exposed API ----------------------------------- */ +/* -------------------------- Selection ------------------------------------- */ /* Set the given animation-channel as the active one for the active context */ // TODO: extend for animdata types... @@ -352,6 +352,8 @@ void ANIM_deselect_anim_channels (void *data, short datatype, short test, short BLI_freelistN(&anim_data); } +/* ---------------------------- Graph Editor ------------------------------------- */ + /* Flush visibility (for Graph Editor) changes up/down hierarchy for changes in the given setting * - anim_data: list of the all the anim channels that can be chosen * -> filtered using ANIMFILTER_CHANNELS only, since if we took VISIBLE too, @@ -452,6 +454,35 @@ void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, } } +/* -------------------------- F-Curves ------------------------------------- */ + +/* Delete the given F-Curve from its AnimData block */ +void ANIM_fcurve_delete_from_animdata (bAnimContext *ac, AnimData *adt, FCurve *fcu) +{ + /* - if no AnimData, we've got nowhere to remove the F-Curve from + * (this doesn't guarantee that the F-Curve is in there, but at least we tried + * - if no F-Curve, there is nothing to remove + */ + if (ELEM(NULL, adt, fcu)) + return; + + /* remove from whatever list it came from + * - Action Group + * - Action + * - Drivers + * - TODO... some others? + */ + if (fcu->grp) + action_groups_remove_channel(adt->action, fcu); + else if ((ac) && (ac->datatype == ANIMCONT_DRIVERS)) + BLI_remlink(&adt->drivers, fcu); + else if (adt->action) + BLI_remlink(&adt->action->curves, fcu); + + /* free the F-Curve itself */ + free_fcurve(fcu); +} + /* ************************************************************************** */ /* OPERATORS */ @@ -945,28 +976,8 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op) AnimData *adt= ale->adt; FCurve *fcu= (FCurve *)ale->data; - /* if no AnimData, we've got nowhere to remove the F-Curve from */ - if (adt == NULL) - continue; - - /* remove from whatever list it came from - * - Action Group - * - Action - * - Drivers - * - TODO... some others? - * - * note: this isn't well tested, we could also try remove - * from all lists just to be safe - campbell - */ - if (fcu->grp) - action_groups_remove_channel(adt->action, fcu); - else if (ac.datatype == ANIMCONT_DRIVERS) - BLI_remlink(&adt->drivers, fcu); - else if (adt->action) - BLI_remlink(&adt->action->curves, fcu); - - /* free the F-Curve itself */ - free_fcurve(fcu); + /* try to free F-Curve */ + ANIM_fcurve_delete_from_animdata(&ac, adt, fcu); } } diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index 9d3fc7a0fc4..3b717bafc70 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -110,14 +110,6 @@ void delete_fcurve_keys(FCurve *fcu) MEM_freeN(fcu->bezt); fcu->bezt= NULL; } - -#if 0 // XXX for now, we don't get rid of empty curves... - /* Only delete if there isn't an ipo-driver still hanging around on an empty curve */ - if ((icu->totvert==0) && (icu->driver==NULL)) { - BLI_remlink(&ipo->curve, icu); - free_ipo_curve(icu); - } -#endif } /* ---------------- */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 8628e2c506a..3bfb8bdc867 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -863,6 +863,7 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ */ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag) { + AnimData *adt= BKE_animdata_from_id(id); FCurve *fcu = NULL; /* get F-Curve @@ -871,7 +872,6 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_ */ if (act == NULL) { /* if no action is provided, use the default one attached to this ID-block */ - AnimData *adt= BKE_animdata_from_id(id); act= adt->action; /* apply NLA-mapping to frame to use (if applicable) */ @@ -913,11 +913,9 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_ /* delete the key at the index (will sanity check + do recalc afterwards) */ delete_fcurve_key(fcu, i, 1); - /* Only delete curve too if there are no points (we don't need to check for drivers, as they're kept separate) */ - if (fcu->totvert == 0) { - BLI_remlink(&act->curves, fcu); - free_fcurve(fcu); - } + /* Only delete curve too if it won't be doing anything anymore */ + if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) + ANIM_fcurve_delete_from_animdata(NULL, adt, fcu); /* return success */ return 1; diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 8a73e12f39b..c9c4c7af18c 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -394,6 +394,10 @@ void ANIM_deselect_anim_channels(void *data, short datatype, short test, short s /* Set the 'active' channel of type channel_type, in the given action */ void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int filter, void *channel_data, short channel_type); + +/* Delete the F-Curve from the given AnimData block (if possible), as appropriate according to animation context */ +void ANIM_fcurve_delete_from_animdata(bAnimContext *ac, struct AnimData *adt, struct FCurve *fcu); + /* ************************************************ */ /* DRAWING API */ /* anim_draw.c */ diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 1ba837afba3..22f5f1757c9 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -613,10 +613,19 @@ static void delete_action_keys (bAnimContext *ac) /* loop through filtered data and delete selected keys */ for (ale= anim_data.first; ale; ale= ale->next) { - //if (ale->type == ANIMTYPE_GPLAYER) - // delete_gplayer_frames((bGPDlayer *)ale->data); + if (ale->type != ANIMTYPE_GPLAYER) { + FCurve *fcu= (FCurve *)ale->key_data; + AnimData *adt= ale->adt; + + /* delete selected keyframes only */ + delete_fcurve_keys(fcu); + + /* Only delete curve too if it won't be doing anything anymore */ + if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) + ANIM_fcurve_delete_from_animdata(ac, ale->adt, fcu); + } //else - delete_fcurve_keys((FCurve *)ale->key_data); // XXX... this doesn't delete empty curves anymore + // delete_gplayer_frames((bGPDlayer *)ale->data); } /* free filtered list */ diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 381d5becb1e..f20ebcc67b9 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -792,7 +792,15 @@ static void delete_graph_keys (bAnimContext *ac) /* loop through filtered data and delete selected keys */ for (ale= anim_data.first; ale; ale= ale->next) { - delete_fcurve_keys((FCurve *)ale->key_data); // XXX... this doesn't delete empty curves anymore + FCurve *fcu= (FCurve *)ale->key_data; + AnimData *adt= ale->adt; + + /* delete selected keyframes only */ + delete_fcurve_keys(fcu); + + /* Only delete curve too if it won't be doing anything anymore */ + if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) + ANIM_fcurve_delete_from_animdata(ac, ale->adt, fcu); } /* free filtered list */ -- cgit v1.2.3 From a358b6386d8022f71160ccdb714e596ec63670a6 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 04:28:50 +0000 Subject: * Fix for incorrect disabling after baking cloth sim * Fix for time cursor getting 'stuck' after baking point caches --- release/scripts/ui/properties_physics_cloth.py | 4 ++-- source/blender/blenkernel/BKE_pointcache.h | 1 + source/blender/blenkernel/intern/pointcache.c | 4 +++- source/blender/editors/physics/physics_pointcache.c | 4 ++++ source/blender/editors/space_view3d/drawobject.c | 1 - source/blender/windowmanager/intern/wm_cursors.c | 2 +- 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index 0829b533c81..7123e52fb8d 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -83,9 +83,9 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel): if md: cloth = md.settings - layout.active = cloth_panel_enabled(md) - split = layout.split() + + split.active = cloth_panel_enabled(md) col = split.column() diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h index 5ae10d736fd..4b26eaa6d76 100644 --- a/source/blender/blenkernel/BKE_pointcache.h +++ b/source/blender/blenkernel/BKE_pointcache.h @@ -151,6 +151,7 @@ typedef struct PTCacheBaker { int (*break_test)(void *data); void *break_data; void (*progressbar)(void *data, int num); + void (*progressend)(void *data); void *progresscontext; } PTCacheBaker; diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index c2798b4a746..cc7b942a6bb 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -2232,6 +2232,7 @@ void BKE_ptcache_quick_cache_all(Scene *scene) baker.break_test=NULL; baker.pid=NULL; baker.progressbar=NULL; + baker.progressend=NULL; baker.progresscontext=NULL; baker.render=0; baker.anim_init = 0; @@ -2360,6 +2361,7 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker) if(baker->break_test && baker->break_test(baker->break_data)) break; } + baker->progressend(baker->progresscontext); /* clear baking flag */ if(pid) { @@ -2400,7 +2402,7 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker) scene->r.framelen = frameleno; CFRA = cfrao; - + if(bake) /* already on cfra unless baking */ scene_update_for_newframe(scene, scene->lay); diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 9973c38bb41..a931e27bc83 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -109,9 +109,11 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) if (win) { baker.progressbar = (void (*)(void *, int))WM_timecursor; + baker.progressend = (void (*)(void *))WM_cursor_restore; baker.progresscontext = win; } else { baker.progressbar = bake_console_progress; + baker.progressend = NULL; baker.progresscontext = NULL; } @@ -200,10 +202,12 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) if (win) { baker.progressbar = (void (*)(void *, int))WM_timecursor; + baker.progressend = (void (*)(void *))WM_cursor_restore; baker.progresscontext = win; } else { printf("\n"); /* empty first line before console reports */ baker.progressbar = bake_console_progress; + baker.progressend = NULL; baker.progresscontext = NULL; } diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 8592a5455c2..f60f4ad9230 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4174,7 +4174,6 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj ParticleEditSettings *pset = PE_settings(scene); int i, k, totpoint = edit->totpoint, timed = pset->flag & PE_FADE_TIME ? pset->fade_frames : 0; int steps=1; - char nosel[4], sel[4]; float sel_col[3]; float nosel_col[3]; float *pathcol = NULL, *pcol; diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index 7decf7b2ed2..95a1de96115 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -212,7 +212,7 @@ void WM_timecursor(wmWindow *win, int nr) unsigned char bitmap[16][2]; int i, idx; - if(win->lastcursor != 0) + if(win->lastcursor == 0) win->lastcursor= win->cursor; memset(&bitmap, 0x00, sizeof(bitmap)); -- cgit v1.2.3 From cbfb8fbd7f530661ab51cdc59cbb116ecb2bd236 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 04:41:32 +0000 Subject: Fix for [#19921] pressing NumpadDot on isolated mode centers the 3D cursor --- source/blender/editors/space_view3d/view3d_edit.c | 4 ---- source/blender/editors/space_view3d/view3d_ops.c | 13 ------------- 2 files changed, 17 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 9737e0cb167..844ee2973ce 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1208,10 +1208,6 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with new_dist*= size; } - v3d->cursor[0]= -new_ofs[0]; - v3d->cursor[1]= -new_ofs[1]; - v3d->cursor[2]= -new_ofs[2]; - if (rv3d->persp==RV3D_CAMOB) { rv3d->persp= RV3D_PERSP; smooth_view(C, v3d->camera, NULL, new_ofs, NULL, &new_dist, NULL); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 62672dc19bc..3b60d4d555f 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -180,19 +180,6 @@ void view3d_keymap(wmKeyConfig *keyconf) 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); - - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM); WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0); -- cgit v1.2.3 From e31f3e63cdafd92010179e528b0db31a0a32a27b Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 04:56:42 +0000 Subject: Fix for [#19958] Changes in UV/Image editor doesn't refresh mapping on mesh in 3dview immediately Enabled 'update automatically' (lock) in image editors by default Also enabled transform manipulators by default, unfortunately missed for alpha 0 release. --- source/blender/editors/datafiles/B.blend.c | 16536 +++++++++++---------- source/blender/editors/space_image/space_image.c | 3 +- 2 files changed, 8324 insertions(+), 8215 deletions(-) diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c index d6cdfa31539..9ee3b8d72fa 100644 --- a/source/blender/editors/datafiles/B.blend.c +++ b/source/blender/editors/datafiles/B.blend.c @@ -1,5469 +1,4963 @@ /* DataToC output of file */ -int datatoc_B_blend_size= 316960; +int datatoc_B_blend_size= 320428; char datatoc_B_blend[]= { - - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,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,224,236,191, 95,255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55, - 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, 96, 4,155, 26, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 16, 0, 0, -128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95, -255,127, 0, 0, 84,192, 21, 4, 1, 0, 0, 0,112,237,191, 95,255,127, 0, 0,178,153,120, 0, 1, 0, 0, 0, 80,237,191, 95, -255,127, 0, 0,208, 70, 23, 4, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0,144,213,158, 26, 1, 0, 0, 0,144,237,191, 95, -255,127, 0, 0, 48,192, 21, 4, 1, 0, 0, 0,192,237,191, 95,255,127, 0, 0, 41,156,120, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,144,213,158, 26, 1, 0, 0, 0, 82, 69, 78, 68, - 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,232,237,191, 95,255,127, 0, 0, 16,238,191, 95, -255,127, 0, 0, 38,163,120, 0, 1, 0, 0, 0, 16,173,153, 26, 1, 0, 0, 0,144,213,158, 26, 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, 87, 77, 0, 0, 8, 1, 0, 0, 48,176,153, 26, - 1, 0, 0, 0, 97, 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,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26, - 1, 0, 0, 0,128,177,153, 26, 1, 0, 0, 0,128,177,153, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 94, 3, - 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0,230, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 23,158, 26, - 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 32, 23,158, 26, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,128,177,153, 26, - 1, 0, 0, 0, 98, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,110, 86, 23, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 4,155, 26, 1, 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, 0, 0, 0, 0, -128, 7, 66, 4, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,240,100, 90, 3, 1, 0, 0, 0, 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,161,150, 26, 1, 0, 0, 0,176,213,149, 26, - 1, 0, 0, 0,176,213,149, 26, 1, 0, 0, 0,192, 23,158, 26, 1, 0, 0, 0,128, 24,158, 26, 1, 0, 0, 0, 64, 25,158, 26, - 1, 0, 0, 0, 64, 25,158, 26, 1, 0, 0, 0,192,218, 93, 3, 1, 0, 0, 0, 32, 25,159, 26, 1, 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,160,178,153, 26, 1, 0, 0, 0,190, 0, 0, 0, - 1, 0, 0, 0,192,105,154, 26, 1, 0, 0, 0, 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,224,174,150, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,240, 70, 95, 3, - 1, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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, 32, 0, 0, 0,224,174,150, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 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,192, 96, 94, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 12, 94, 3, - 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,144,170,150, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 35, 95, 3, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 73,224, 25, - 1, 0, 0, 0,112, 20,224, 25, 1, 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,176, 73,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 28,224, 25, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 6,200, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,200, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,192,149, 26, - 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,112, 90, 3, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,156, 2,120, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 39, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 46, 95, 3, - 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 1, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176,166,224, 25, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,124, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,202,224, 25, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 6, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,216,224, 25, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,179,153, 26, - 1, 0, 0, 0,240, 70, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,180,153, 26, - 1, 0, 0, 0,192,216,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,144,170,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,180,153, 26, - 1, 0, 0, 0,176,179,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,180,153, 26, - 1, 0, 0, 0, 16,180,153, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,181,153, 26, - 1, 0, 0, 0,112,180,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,181,153, 26, - 1, 0, 0, 0,208,180,153, 26, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,181,153, 26, - 1, 0, 0, 0, 48,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,182,153, 26, - 1, 0, 0, 0,144,181,153, 26, 1, 0, 0, 0, 16, 12, 94, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,182,153, 26, - 1, 0, 0, 0,240,181,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,183,153, 26, - 1, 0, 0, 0, 80,182,153, 26, 1, 0, 0, 0,224,174,150, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,183,153, 26, - 1, 0, 0, 0,176,182,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,183,153, 26, - 1, 0, 0, 0, 16,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,184,153, 26, - 1, 0, 0, 0,112,183,153, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,184,153, 26, - 1, 0, 0, 0,208,183,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,184,153, 26, - 1, 0, 0, 0, 48,184,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,185,153, 26, - 1, 0, 0, 0,144,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,185,153, 26, - 1, 0, 0, 0,240,184,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,186,153, 26, - 1, 0, 0, 0, 80,185,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,186,153, 26, - 1, 0, 0, 0,176,185,153, 26, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,186,153, 26, - 1, 0, 0, 0, 16,186,153, 26, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,187,153, 26, - 1, 0, 0, 0,112,186,153, 26, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,187,153, 26, - 1, 0, 0, 0,208,186,153, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,187,153, 26, - 1, 0, 0, 0, 48,187,153, 26, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,188,153, 26, - 1, 0, 0, 0,144,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,188,153, 26, - 1, 0, 0, 0,240,187,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,189,153, 26, - 1, 0, 0, 0, 80,188,153, 26, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,189,153, 26, - 1, 0, 0, 0,176,188,153, 26, 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,176,166,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,189,153, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,189,153, 26, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,189,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,193,153, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0,192, 96, 94, 3, 1, 0, 0, 0,144,170,150, 26, - 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, - 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0, 64,105,154, 26, - 1, 0, 0, 0, 64,105,154, 26, 1, 0, 0, 0,176,190,153, 26, 1, 0, 0, 0, 16,192,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,125, 88, 23, 1, 0, 0, 0, 0, 98,159, 25, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,176,190,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,153, 26, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,192,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,190,153, 26, - 1, 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, 2, 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, 2, 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, 3, 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, - 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112,193,153, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0,208,189,153, 26, - 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 96, 28,224, 25, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 16, 12, 94, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,199, 1, 0, 0, 4, 4, 80, 1, -200, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,240,218,153, 26, 1, 0, 0, 0, 32,226,153, 26, - 1, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0,176,195,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,157,193, 25, 1, 0, 0, 0,192,212,193, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,194,153, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,195,153, 26, 1, 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,168, 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, - 79, 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, 80, 1, 31, 0, 80, 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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,169, 1, 0, 0, -199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,176,195,153, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,194,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0,128,159, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 1,128,159, 67, 2,128,203,195, 0, 0, 0, 0, 63, 1, 0, 0, - 80, 1, 0, 0, 18, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 62, 1, 0, 0, 18, 0, 0, 0,168, 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, 80, 1,169, 1, 63, 1,151, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 70, 94, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, -168, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,169, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,197,153, 26, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,197,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,198,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3, - 1, 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, 63, 1, 36, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,198,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,200,153, 26, - 1, 0, 0, 0, 16,197,153, 26, 1, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,200,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,201,153, 26, 1, 0, 0, 0,160,198,153, 26, 1, 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, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0,192,201,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,203,153, 26, - 1, 0, 0, 0, 48,200,153, 26, 1, 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, 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, 12, 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, + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, + 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,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, +240,236,191, 95,255,127, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 56, 8, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, +208, 30,165, 29, 1, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, + 62, 0, 0, 0, 0, 0, 0, 0, 34,239, 28, 1, 1, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 32,238,191, 95,255,127, 0, 0, + 80,237,191, 95,255,127, 0, 0,208,198,223, 28, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 48,147,201, 20, 1, 0, 0, 0, + 45, 0, 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0,192,237,191, 95,255,127, 0, 0,245, 3, 94, 0, 1, 0, 0, 0, +160,237,191, 95,255,127, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, 48,147,201, 20, 1, 0, 0, 0, + 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16,238,191, 95,255,127, 0, 0, + 16,238,191, 95,255,127, 0, 0,187, 10, 94, 0, 1, 0, 0, 0, 48,102, 4, 28, 1, 0, 0, 0, 48,147,201, 20, 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, +208, 30,165, 29, 1, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,144, 6,163, 29, 1, 0, 0, 0, 98, 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,208, 7,163, 29, 1, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0, +208, 7,163, 29, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 16,158,162, 21, 1, 0, 0, 0, 64, 69,200, 20, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,160, 21, 1, 0, 0, 0, 32, 73,200, 20, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,220,195, 20, 1, 0, 0, 0, 48,220,195, 20, 1, 0, 0, 0, + 48,220,195, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,125,140, 27, 1, 0, 0, 0, 80,125,140, 27, 1, 0, 0, 0, + 80,125,140, 27, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0, 99, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,235,195, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +208, 30,165, 29, 1, 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, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 1, 0,238, 3, + 0, 0, 1, 0,255,255, 0, 0, 96,160,160, 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,192,165,164, 21, 1, 0, 0, 0,240,165,201, 20, 1, 0, 0, 0,240,165,201, 20, 1, 0, 0, 0, +240,125,140, 27, 1, 0, 0, 0,176,126,140, 27, 1, 0, 0, 0,112,127,140, 27, 1, 0, 0, 0,112,127,140, 27, 1, 0, 0, 0, + 96,103,164, 21, 1, 0, 0, 0, 80,237,200, 20, 1, 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,112,122,163, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,190,163, 29, 1, 0, 0, 0, + 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, +224,182,162, 29, 1, 0, 0, 0, 16,176, 20, 27, 1, 0, 0, 0, 80,148, 21, 27, 1, 0, 0, 0, 32,132,163, 29, 1, 0, 0, 0, +128,132,163, 29, 1, 0, 0, 0,144, 0,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,240, 77,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, +224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +112, 2,160, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +144,246,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, +208,140,162, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 64,141,160, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 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, 32, 31,142, 27, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 62,142, 27, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,228, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, +160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,228, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +240,185,140, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 96, 4,162, 29, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,128, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 32,142,160, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +156, 2,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,176, 20, 27, 1, 0, 0, 0, 80,164, 21, 27, 1, 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, 16,176, 20, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80,148, 21, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,194, 20, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 2,160, 29, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48,194, 20, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,154, 21, 27, 1, 0, 0, 0, 80,148, 21, 27, 1, 0, 0, 0, +208,140,162, 21, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224,154, 21, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 3,162, 29, 1, 0, 0, 0, 48,194, 20, 27, 1, 0, 0, 0, +144,246,142, 27, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0, 3,162, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 16,162, 29, 1, 0, 0, 0,224,154, 21, 27, 1, 0, 0, 0, +208,140,162, 21, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0, 16,162, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,123,163, 29, 1, 0, 0, 0, 0, 3,162, 29, 1, 0, 0, 0, + 64,141,160, 21, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +128,123,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,123,163, 29, 1, 0, 0, 0, 0, 16,162, 29, 1, 0, 0, 0, + 64,141,160, 21, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224,123,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,124,163, 29, 1, 0, 0, 0,128,123,163, 29, 1, 0, 0, 0, + 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64,124,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,124,163, 29, 1, 0, 0, 0,224,123,163, 29, 1, 0, 0, 0, + 64,141,160, 21, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160,124,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,125,163, 29, 1, 0, 0, 0, 64,124,163, 29, 1, 0, 0, 0, + 0, 62,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,125,163, 29, 1, 0, 0, 0,160,124,163, 29, 1, 0, 0, 0, + 0, 62,142, 27, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,125,163, 29, 1, 0, 0, 0, 0,125,163, 29, 1, 0, 0, 0, +240,185,140, 27, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,126,163, 29, 1, 0, 0, 0, 96,125,163, 29, 1, 0, 0, 0, + 32, 31,142, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,126,163, 29, 1, 0, 0, 0,192,125,163, 29, 1, 0, 0, 0, + 64,141,160, 21, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +128,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,126,163, 29, 1, 0, 0, 0, 32,126,163, 29, 1, 0, 0, 0, +240,185,140, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,127,163, 29, 1, 0, 0, 0,128,126,163, 29, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64,127,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,127,163, 29, 1, 0, 0, 0,224,126,163, 29, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160,127,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,128,163, 29, 1, 0, 0, 0, 64,127,163, 29, 1, 0, 0, 0, +208,140,162, 21, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,128,163, 29, 1, 0, 0, 0,160,127,163, 29, 1, 0, 0, 0, + 32, 31,142, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,128,163, 29, 1, 0, 0, 0, 0,128,163, 29, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,129,163, 29, 1, 0, 0, 0, 96,128,163, 29, 1, 0, 0, 0, + 32,142,160, 21, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,129,163, 29, 1, 0, 0, 0,192,128,163, 29, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +128,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,129,163, 29, 1, 0, 0, 0, 32,129,163, 29, 1, 0, 0, 0, + 32,142,160, 21, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,130,163, 29, 1, 0, 0, 0,128,129,163, 29, 1, 0, 0, 0, +160,237,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64,130,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,130,163, 29, 1, 0, 0, 0,224,129,163, 29, 1, 0, 0, 0, + 32, 31,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160,130,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,131,163, 29, 1, 0, 0, 0, 64,130,163, 29, 1, 0, 0, 0, + 16,176, 20, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,131,163, 29, 1, 0, 0, 0,160,130,163, 29, 1, 0, 0, 0, + 16,176, 20, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,131,163, 29, 1, 0, 0, 0, 0,131,163, 29, 1, 0, 0, 0, + 16,176, 20, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,132,163, 29, 1, 0, 0, 0, 96,131,163, 29, 1, 0, 0, 0, + 32,142,160, 21, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32,132,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,131,163, 29, 1, 0, 0, 0, + 80,164, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +128,132,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,140,162, 21, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,112,241,162, 29, 1, 0, 0, 0,112,241,162, 29, 1, 0, 0, 0, + 96,133,163, 29, 1, 0, 0, 0,192,134,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 45,202, 20, 1, 0, 0, 0, 0, 25,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,133,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,192,134,163, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,203,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,192,201,153, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,134,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,133,163, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 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, 68, 65, 84, 65,160, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,128,132,163, 29, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, +160,237,142, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 4, 4, 80, 1,228, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,141,217, 2, 1, 0, 0, 0,176,162,163, 29, 1, 0, 0, 0,176,166,163, 29, 1, 0, 0, 0, 0,137,163, 29, 1, 0, 0, 0, + 96,138,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,134,201, 20, 1, 0, 0, 0, + 0,224,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,137,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 96,138,163, 29, 1, 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,168, 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, 79, 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, 80, 1, 31, 0, 80, 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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,197, 1, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,143,217, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,138,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,137,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0, 64, 68,196, 0, 0, 0, 0, + 0, 0, 0, 0, 1,128,159, 67, 1,128,217,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,196, 1, 0, 0, + 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,196, 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, 80, 1,197, 1, 63, 1,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,129,160, 21, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,196, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,197, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,139,163, 29, 1, 0, 0, 0, + 32,161,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,139,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 80,141,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, - 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, - 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, + 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, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,204,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,206,153, 26, - 1, 0, 0, 0, 80,203,153, 26, 1, 0, 0, 0,176,121,159, 25, 1, 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, 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, - 63, 1, 61, 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,220,255, 63, 1, 36, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,206,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,224,204,153, 26, 1, 0, 0, 0,176,131,159, 25, - 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 80,141,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,142,163, 29, 1, 0, 0, 0,192,139,163, 29, 1, 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, 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, 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, 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, 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,111,255, 63, 1, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,208,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,209,153, 26, - 1, 0, 0, 0,112,206,153, 26, 1, 0, 0, 0,144,133,159, 25, 1, 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, 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,165,254, - 63, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,142,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +112,144,163, 29, 1, 0, 0, 0, 80,141,163, 29, 1, 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, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,209,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 0,208,153, 26, 1, 0, 0, 0,112,138,159, 25, - 1, 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, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 63, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 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, 50,255, 63, 1, 61, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,211,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,212,153, 26, - 1, 0, 0, 0,144,209,153, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 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, 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,213,253, - 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0, +112,144,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,146,163, 29, 1, 0, 0, 0,224,142,163, 29, 1, 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, 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, 12, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,212,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0, 32,211,153, 26, 1, 0, 0, 0, 48,145,159, 25, - 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,146,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +144,147,163, 29, 1, 0, 0, 0,112,144,163, 29, 1, 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, - 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, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 63, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 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, + 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64,214,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,215,153, 26, - 1, 0, 0, 0,176,212,153, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 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, 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, 60,253, - 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,147,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,149,163, 29, 1, 0, 0, 0, 0,146,163, 29, 1, 0, 0, 0, + 32,198, 17, 27, 1, 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, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,215,153, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,217,153, 26, 1, 0, 0, 0, 64,214,153, 26, 1, 0, 0, 0,224,152,159, 25, - 1, 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, 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, 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, 36,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 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, 63, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,217,153, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,215,153, 26, 1, 0, 0, 0,192,154,159, 25, 1, 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, 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, 12,253, - 63, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,149,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +176,150,163, 29, 1, 0, 0, 0,144,147,163, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, - 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,240,218,153, 26, - 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,226,153, 26, 1, 0, 0, 0, 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, + 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, 63, 1, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +176,150,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,152,163, 29, 1, 0, 0, 0, 32,149,163, 29, 1, 0, 0, 0, + 96,202, 17, 27, 1, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,112,190, 95, 3, 1, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,220,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144,221,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,140,254, 63, 1,203, 0, 0, 0, 0, 0, 0, 0, 10, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,221,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,220,153, 26, 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, 88, 1, 0, 0, 64,152,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +208,153,163, 29, 1, 0, 0, 0,176,150,163, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, + 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, 63, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +208,153,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,155,163, 29, 1, 0, 0, 0, 64,152,163, 29, 1, 0, 0, 0, + 32,207, 17, 27, 1, 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, 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,240,222,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,222,153, 26, 1, 0, 0, 0,156, 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,188,253, 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 96,155,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +240,156,163, 29, 1, 0, 0, 0,208,153,163, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 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, 32,226,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,218,153, 26, - 1, 0, 0, 0, 48,220,153, 26, 1, 0, 0, 0,144,221,153, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59,253, 63, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,227,153, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,239,153, 26, 1, 0, 0, 0,112,193,153, 26, 1, 0, 0, 0,224,174,150, 26, - 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0, 64,192,149, 26, 1, 0, 0, 0, 64,225,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 15, 15, 48, 6,120, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 96,228,153, 26, - 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 38,231, 28, - 1, 0, 0, 0,240, 91, 87, 23, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,228,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192,229,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,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, 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, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,229,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,228,153, 26, 1, 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, - 93, 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, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 32,231,153, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 16,238,153, 26, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,232,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,128,233,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,233,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,234,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,234,153, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, - 32, 1, 0, 0, 16,238,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,231,153, 26, - 1, 0, 0, 0, 32,232,153, 26, 1, 0, 0, 0,128,233,153, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,239,153, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,128,227,153, 26, 1, 0, 0, 0, 96, 28,224, 25, - 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0, 0, 45, 91, 3, 1, 0, 0, 0,112,149,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 67, 3, 0, 0, 3, 3, 80, 1,123, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 16,243,153, 26, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 80,240,153, 26, - 1, 0, 0, 0,176,241,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,244,137, 26, - 1, 0, 0, 0,176, 35,137, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,240,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,176,241,153, 26, 1, 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,168, 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, 79, 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, 80, 1, 26, 0, 80, 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, 49, 6, 0, 0,128, 7, 0, 0, 42, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,241,153, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,240,153, 26, 1, 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,159, 67, 0,128,167,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0, - 96, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0, - 96, 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, 80, 1, 97, 1, 63, 1, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,201, 1, 0, 0, 41, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 97, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,243,153, 26, 1, 0, 0, 0,166, 0, 0, 0, - 1, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +240,156,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,158,163, 29, 1, 0, 0, 0, 96,155,163, 29, 1, 0, 0, 0, + 16,142, 17, 27, 1, 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, 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, 35,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 59,152, 26, 1, 0, 0, 0, 96, 59,152, 26, - 1, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,158,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 32,161,163, 29, 1, 0, 0, 0,240,156,163, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,112, 43,152, 26, 1, 0, 0, 0,218, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,112,244,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,244,153, 26, - 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0, - 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0, - 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,128,245,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,246,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 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,224,246,153, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,245,153, 26, - 1, 0, 0, 0, 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, 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, + 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, 11,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 68, 65, 84, 65, - 0, 1, 0, 0, 64,248,153, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,112,255,153, 26, 1, 0, 0, 0, 16,243,153, 26, - 1, 0, 0, 0,128,245,153, 26, 1, 0, 0, 0,224,246,153, 26, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32,161,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,158,163, 29, 1, 0, 0, 0, +144,217, 17, 27, 1, 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, 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,243,252, 63, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,128,249,153, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,250,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0,176,162,163, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +176,166,163, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,250,153, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,166,162, 21, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,240,163,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,165,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 80,165,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,163,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,252,153, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,252,153, 26, - 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 32, 1, 0, 0,112,255,153, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,248,153, 26, 1, 0, 0, 0,128,249,153, 26, 1, 0, 0, 0,224,250,153, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,112,239,153, 26, - 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0, 64,192,149, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0, 38, 4, 0, 0, 1, 1,147, 3, -174, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0, 64, 25,154, 26, - 1, 0, 0, 0,176, 1,154, 26, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,200,197, 25, 1, 0, 0, 0, 80,186,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 1,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 3,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,192,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,100, 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, -146, 3, 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,147, 3, 26, 0,147, 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,157, 2, 0, 0, 47, 6, 0, 0,121, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 16, 3,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 4,154, 26, 1, 0, 0, 0,176, 1,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,147, 0, 0, 0, - 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,148, 3, 0, 0, 5, 0, 3, 0, 1, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,112, 4,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 16, 3,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0, -147, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208, 5,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 16,154, 26, 1, 0, 0, 0,112, 4,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,147, 0, 0, 0, - 38, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0,208,163,129, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 7,154, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, - 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 8,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 10,154, 26, - 1, 0, 0, 0, 48, 7,154, 26, 1, 0, 0, 0, 64,242, 81, 3, 1, 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, 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, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 10,154, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,192, 8,154, 26, 1, 0, 0, 0,176,203,199, 25, - 1, 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, 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, 48, 14, 4, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48, 14, 4, 28, 1, 0, 0, 0,157, 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,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 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,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, 68, 65, 84, 65, 88, 1, 0, 0,224, 11,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 13,154, 26, - 1, 0, 0, 0, 80, 10,154, 26, 1, 0, 0, 0, 16,206,199, 25, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 13,154, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,224, 11,154, 26, 1, 0, 0, 0,144,215,199, 25, - 1, 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, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,163,129, 26, - 1, 0, 0, 0,112, 13,154, 26, 1, 0, 0, 0,240,217,199, 25, 1, 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, 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, 7, 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, 68, 65, 84, 65, 32, 1, 0, 0,176,166,163, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,162,163, 29, 1, 0, 0, 0,240,163,163, 29, 1, 0, 0, 0, + 80,165,163, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,163,129, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,154, 26, 1, 0, 0, 0,112,208,199, 25, - 1, 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, 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, + 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, 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, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +208,171,163, 29, 1, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, + 64,242,142, 27, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0,127, 0, 0, 0, 15, 15, 48, 6,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,109,217, 2, 1, 0, 0, 0, +208,170,163, 29, 1, 0, 0, 0,240,248,162, 29, 1, 0, 0, 0, 16,168,163, 29, 1, 0, 0, 0,112,169,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255,199, 20, 1, 0, 0, 0,224, 25,200, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 16,168,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,169,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 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, 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, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112,169,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,168,163, 29, 1, 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,101, 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, +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, 47, 6, 0, 0, 26, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 16,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208, 5,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,200, 0, 0, 0,208,170,163, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,248,162, 29, 1, 0, 0, 0, + 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,157, 2, 0, 0, 47, 6, 0, 0,147, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,147, 3,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 17,154, 26, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240, 17,154, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 43, 39,140, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,240,221,229, 62, -208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188, -206,156,122, 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, 40,187,191, 62, -177, 56, 85, 63,144,122, 70,188, 0, 0,132, 51,191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194, -185,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 61,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,240,221,229, 62, -208,249,224,190, 48,180, 81,191,184,158, 81,191,229,161,127, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 18,247,109,188, -206,156,122, 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,144,160, 15, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,160, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,160, 15, 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,163,211, 2, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48,246,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,247,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,247,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,246,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 32, 21,154, 26, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 9, 1, 28, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 22,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,224, 23,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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,224, 23,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 22,154, 26, 1, 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,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, 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, 48, 18, 4, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48, 18, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65,200, 0, 0, 0, 64, 25,154, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 21,154, 26, 1, 0, 0, 0,128, 22,154, 26, 1, 0, 0, 0,224, 23,154, 26, - 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 96, 54,154, 26, 1, 0, 0, 0,208, 0,154, 26, 1, 0, 0, 0,176,181,150, 26, 1, 0, 0, 0,176,166,224, 25, - 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 32,112, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 2, 0, 0,121, 0, 0, 0,123, 1, 0, 0, 2, 2,156, 2, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,247, 81, 3, - 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 32, 27,154, 26, 1, 0, 0, 0, 64, 31,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,130,138, 26, 1, 0, 0, 0,208, 79,229, 28, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 27,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 28,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 39, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 0, 0,121, 0, 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,249, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 28,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 29,154, 26, - 1, 0, 0, 0, 32, 27,154, 26, 1, 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, 87,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,232, 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,232, 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, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,217, 0,233, 0,200, 0,215, 0, 0, 0, 0, 0, 0, 0, 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,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,217, 0,233, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 29,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 31,154, 26, - 1, 0, 0, 0,128, 28,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,248,162, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,170,163, 29, 1, 0, 0, 0, 48,246,162, 29, 1, 0, 0, 0, +144,247,162, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,171,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,187,162, 29, 1, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, + 16,176, 20, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, +229, 1, 0, 0,115, 3, 0, 0, 3, 3, 80, 1,143, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,217, 2, 1, 0, 0, 0, + 16,253,162, 29, 1, 0, 0, 0, 80,186,162, 29, 1, 0, 0, 0, 80,250,162, 29, 1, 0, 0, 0,176,251,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 46,200, 20, 1, 0, 0, 0, 32, 66,201, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,250,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,251,162, 29, 1, 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,168, 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, 79, 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, 80, 1, + 26, 0, 80, 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, + 49, 6, 0, 0,128, 7, 0, 0, 90, 3, 0, 0,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,108,217, 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,155, 2, 0, 0,155, 2, 0, 0,147, 0, 0, 0,123, 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, 1, 0, 0, 0, 0, 0, 0, 0, 48,251, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 31,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224, 29,154, 26, 1, 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,232, 0, 0, 0, 18, 0, 0, 0, -194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,232, 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,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 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,155, 2, 0, 0,147, 0, 0, 0,123, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,195, 1,233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,248, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,251,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,250,162, 29, 1, 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,159, 67, + 0,128,177,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,116, 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, 80, 1, +117, 1, 63, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,107,217, 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, 68, 65, 84, 65,248, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, 80, 38,154, 26, - 1, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,253,162, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, + 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,208, 33,154, 26, 1, 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, 32, 0, 0, 0,208, 33,154, 26, - 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, 48, 34,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144, 35,154, 26, 1, 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,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, 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,176, 46,202, 20, 1, 0, 0, 0,176, 46,202, 20, 1, 0, 0, 0,160,254,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 35,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240, 36,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0, 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, 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, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,160,254,161, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, +112,254,162, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,254,162, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,255,162, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,224, 0,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 36,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 35,154, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 0,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,162, 29, 1, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0, 80,186,162, 29, 1, 0, 0, 0, 16,253,162, 29, 1, 0, 0, 0,128,255,162, 29, 1, 0, 0, 0, +224, 0,163, 29, 1, 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, 68, 65, 84, 65,168, 0, 0, 0, 80, 38,154, 26, 1, 0, 0, 0,167, 0, 0, 0, - 1, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 32,154, 26, 1, 0, 0, 0, 48, 34,154, 26, 1, 0, 0, 0,240, 36,154, 26, - 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 39,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144, 40,154, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 40,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240, 41,154, 26, 1, 0, 0, 0, 48, 39,154, 26, 1, 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, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,183,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,184,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 41,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0,144, 40,154, 26, 1, 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, 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, 40, 1, 0, 0,240,184,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,183,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 43,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,176, 44,154, 26, 1, 0, 0, 0,240, 41,154, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 44,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 43,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 6, 5, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 80,186,162, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, +144,183,162, 29, 1, 0, 0, 0,240,184,162, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,187,162, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0,208,171,163, 29, 1, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0, + 96, 4,162, 29, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0, 99, 4, 0, 0, 1, 1,147, 3,227, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,111,217, 2, 1, 0, 0, 0, 96,206,162, 29, 1, 0, 0, 0,128,210,162, 29, 1, 0, 0, 0,144,188,162, 29, 1, 0, 0, 0, + 0,205,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,176,160, 21, 1, 0, 0, 0, +160,112,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,188,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,189,162, 29, 1, 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,100, 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,146, 3, 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,147, 3, 26, 0,147, 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,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,189,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 80,191,162, 29, 1, 0, 0, 0,144,188,162, 29, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,201, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 48,116,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,191,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +176,192,162, 29, 1, 0, 0, 0,240,189,162, 29, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0,155, 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, 1, 0, 0, 0, 0, 0, 0, 0, + 0,118,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,192,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0,205,162, 29, 1, 0, 0, 0, 80,191,162, 29, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0, +112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,194,162, 29, 1, 0, 0, 0, +112,203,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,194,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +160,195,162, 29, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +160,195,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,197,162, 29, 1, 0, 0, 0, 16,194,162, 29, 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,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,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, 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, - 0, 0, 0, 0, 16, 46,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16, 46,154, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,197,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +192,198,162, 29, 1, 0, 0, 0,160,195,162, 29, 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, 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, 68, 65, 84, 65, - 32, 1, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96, 53,154, 26, 1, 0, 0, 0, 80, 38,154, 26, - 1, 0, 0, 0, 48, 39,154, 26, 1, 0, 0, 0,176, 44,154, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,160, 50,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 52,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192,198,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,200,162, 29, 1, 0, 0, 0, 48,197,162, 29, 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, 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, -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, 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,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, - 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, 0, 52,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 50,154, 26, 1, 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,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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,200,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +224,201,162, 29, 1, 0, 0, 0,192,198,162, 29, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96, 53,154, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 49,154, 26, 1, 0, 0, 0,160, 50,154, 26, - 1, 0, 0, 0, 0, 52,154, 26, 1, 0, 0, 0, 15, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +224,201,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,203,162, 29, 1, 0, 0, 0, 80,200,162, 29, 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,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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 54,154, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0, 64, 26,154, 26, 1, 0, 0, 0,176,166,224, 25, - 1, 0, 0, 0,112, 35, 95, 3, 1, 0, 0, 0, 80,134, 90, 3, 1, 0, 0, 0, 0, 46, 95, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,125, 1, 0, 0, 38, 4, 0, 0, 12, 12,156, 2,170, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 29, 82, 3, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0, 64, 55,154, 26, - 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 64,230, 28, - 1, 0, 0, 0,240, 36, 38, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 55,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,160, 56,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 0, 0,125, 1, 0, 0,150, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 56,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 58,154, 26, 1, 0, 0, 0, 64, 55,154, 26, 1, 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,128, 31,196, 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, -143, 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,200, 0,144, 2,200, 0,126, 2, 0, 0, 0, 0, 0, 0, 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,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,144, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 31, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,203,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,201,162, 29, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 58,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 56,154, 26, 1, 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,128, 31,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0, -143, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0, -143, 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,212, 1,144, 2, 0, 0, 0, 0, 0, 0, 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,155, 2, 0, 0,151, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 30, 82, 3, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 96, 59,154, 26, 1, 0, 0, 0, 21, 1, 0, 0, - 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 0,205,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,192,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 66, 25, 4, - 1, 0, 0, 0, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 60,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 62,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0, +155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3,201, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 63,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192, 64,154, 26, 1, 0, 0, 0, 0, 62,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 10, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, + 48, 10, 5, 28, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 38, 67,148, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,200, 42,243, 62,208,249,224,190, 48,180, 81,191,184,158, 81,191, + 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,206,156,122, 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, 88, 62,181, 62, 47,143, 73, 63,144,162, 59,188, 0, 0, 96,179, +191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194,185,204,216, 65,104,156, 5,194,212,247,159,192, +235, 62,114, 66, 61,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,200, 42,243, 62,208,249,224,190, 48,180, 81,191,184,158, 81,191, + 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,206,156,122, 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,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,197, 7, 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,149, 87,247, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 64,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 63,154, 26, 1, 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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66,154, 26, 1, 0, 0, 0,161, 0, 0, 0, - 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0, 96, 59,154, 26, 1, 0, 0, 0,160, 60,154, 26, 1, 0, 0, 0,192, 64,154, 26, - 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,206,162, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, +128,210,162, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 40, 1, 0, 0,192,207,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,209,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 67,154, 26, 1, 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, - 32, 0, 0, 0, 80, 67,154, 26, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 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,176, 67,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 69,154, 26, 1, 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,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 32,209,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,207,162, 29, 1, 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,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, + 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, 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, 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, + 68, 65, 84, 65,200, 0, 0, 0,128,210,162, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,206,162, 29, 1, 0, 0, 0,192,207,162, 29, 1, 0, 0, 0, 32,209,162, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 69,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 70,154, 26, 1, 0, 0, 0,176, 67,154, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,112, 70,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69,154, 26, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0, +176,187,162, 29, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, +240,143, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,129, 0, 0, 0,147, 1, 0, 0, + 2, 2,156, 2, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,120,217, 2, 1, 0, 0, 0,224,217,162, 29, 1, 0, 0, 0, +112,235,162, 29, 1, 0, 0, 0, 96,212,162, 29, 1, 0, 0, 0,128,216,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 41,201, 20, 1, 0, 0, 0, 96, 61,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 96,212,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,213,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 0, 0, +129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,122,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +192,213,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,215,162, 29, 1, 0, 0, 0, 96,212,162, 29, 1, 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,103,195, 0, 0, 0, 0, +200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,248, 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,248, 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, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,249, 0,200, 0,231, 0, 0, 0, + 0, 0, 0, 0, 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, +155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,249, 0, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,123,217, 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, 68, 65, 84, 65,168, 0, 0, 0,208, 71,154, 26, - 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 82,154, 26, 1, 0, 0, 0, 32, 66,154, 26, 1, 0, 0, 0,176, 67,154, 26, - 1, 0, 0, 0,112, 70,154, 26, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 72,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 74,154, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 16, 74,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 75,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,112, 75,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 16, 74,154, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208, 76,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 78,154, 26, 1, 0, 0, 0,112, 75,154, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48, 78,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 79,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 79,154, 26, - 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32,215,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,216,162, 29, 1, 0, 0, 0,192,213,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,155, 2, 0, 0, +155, 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, + 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,124,217, 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 82,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 86,154, 26, - 1, 0, 0, 0,208, 71,154, 26, 1, 0, 0, 0,176, 72,154, 26, 1, 0, 0, 0, 48, 78,154, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +128,216,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,215,162, 29, 1, 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,248, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,248, 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,195, 1,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,217, 0, 0, 0,155, 2, 0, 0, +155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 1,249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,121,217, 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, 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, - 40, 1, 0, 0, 32, 84,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 85,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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,217,162, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, - 40, 1, 0, 0,128, 85,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 84,154, 26, - 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -200, 0, 0, 0,224, 86,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 82,154, 26, - 1, 0, 0, 0, 32, 84,154, 26, 1, 0, 0, 0,128, 85,154, 26, 1, 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, + 16,219,162, 29, 1, 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, 32, 0, 0, 0, 16,219,162, 29, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,112,219,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,220,162, 29, 1, 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,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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,220,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,222,162, 29, 1, 0, 0, 0, +112,219,162, 29, 1, 0, 0, 0, 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, 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, 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, -160, 0, 0, 0,224, 87,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 54,154, 26, - 1, 0, 0, 0, 80,202,224, 25, 1, 0, 0, 0,176, 73,224, 25, 1, 0, 0, 0,112, 20,224, 25, 1, 0, 0, 0, 0, 45, 91, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 1, 1, 80, 1, -226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0,176, 94,154, 26, 1, 0, 0, 0, 0,104,154, 26, - 1, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 32, 90,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,187,199, 25, 1, 0, 0, 0, 80, 42,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 88,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 90,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, - 69, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48,222,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,220,162, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 90,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 88,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,168, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 80,231,162, 29, 1, 0, 0, 0, +224,217,162, 29, 1, 0, 0, 0,112,219,162, 29, 1, 0, 0, 0, 48,222,162, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, - 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,226, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112,224,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,225,162, 29, 1, 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, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,225,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,227,162, 29, 1, 0, 0, 0, +112,224,162, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,227,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,228,162, 29, 1, 0, 0, 0, +208,225,162, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,228,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,229,162, 29, 1, 0, 0, 0, + 48,227,162, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,229,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,228,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 14, 5, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48, 14, 5, 28, 1, 0, 0, 0,157, 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,128, 91,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 91,154, 26, - 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 83, 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,128, - 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,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, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, - 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191, - 37, 12,159,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180,117, 11,197,189, -112, 0,194, 61, 52,249,138, 62, 0, 0,174, 51,211,120, 21,194,145, 5, 2, 66, 6,136,213,193,193,214,159,192,219, 38, 19, 66, -197,173,255,193,154,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, 3,201,194, 63,247,255,133,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, - 43,238,131, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 6, 4, 61, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191, - 37, 12,159,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, 3, 35,171,190, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176, 94,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208, 98,154, 26, - 1, 0, 0, 0, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, - 40, 1, 0, 0, 16, 96,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 97,154, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 97,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 96,154, 26, - 1, 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,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, 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, 68, 65, 84, 65, 32, 1, 0, 0, 80,231,162, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0,112,235,162, 29, 1, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0,112,224,162, 29, 1, 0, 0, 0, +240,229,162, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,208, 98,154, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0,104,154, 26, 1, 0, 0, 0,176, 94,154, 26, - 1, 0, 0, 0, 16, 96,154, 26, 1, 0, 0, 0,112, 97,154, 26, 1, 0, 0, 0, 3, 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,176,232,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 16,234,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,234,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,232,162, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,112,235,162, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,231,162, 29, 1, 0, 0, 0,176,232,162, 29, 1, 0, 0, 0, 16,234,162, 29, 1, 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,192, 6, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,192, 6, 94, 3, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,100,154, 26, - 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,100,154, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, - 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,101,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,160,102,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,102,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0, 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, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144, 0,164, 29, 1, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0, + 96, 4,162, 29, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, +149, 1, 0, 0, 99, 4, 0, 0, 12, 12,156, 2,207, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,159,217, 2, 1, 0, 0, 0, + 80,230,163, 29, 1, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, 80,237,162, 29, 1, 0, 0, 0, 16,240,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,220,200, 20, 1, 0, 0, 0, 32,129,160, 21, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,237,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,238,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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,155, 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,156, 2, + 26, 0,156, 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, + 0, 0, 0, 0,155, 2, 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, +156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,160,217, 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, 68, 65, 84, 65, 0, 1, 0, 0, 0,104,154, 26, 1, 0, 0, 0,162, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 98,154, 26, 1, 0, 0, 0, 64,101,154, 26, 1, 0, 0, 0,160,102,154, 26, - 1, 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, + 68, 65, 84, 65, 40, 1, 0, 0,176,238,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,240,162, 29, 1, 0, 0, 0, + 80,237,162, 29, 1, 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,192, 40,196, 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,180, 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,200, 0, +181, 2,200, 0,163, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 0,181, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,161,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,240,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,238,162, 29, 1, 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,192, 40,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,180, 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,212, 1, +181, 2, 0, 0, 0, 0, 0, 0, 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,155, 2, 0, 0,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 1,181, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,159,217, 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, + 68, 65, 84, 65, 8, 1, 0, 0, 80,230,163, 29, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0,128,245,163, 29, 1, 0, 0, 0, + 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, 2, 0, 0, 0, 0, 0, 0, 0, 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,192,105,154, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 96, 4,155, 26, - 1, 0, 0, 0,160,178,153, 26, 1, 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,208,106,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,240,119,154, 26, - 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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, 32, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 48,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,107,154, 26, - 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 48,107,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,107,154, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,109,154, 26, - 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,176,108,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,109,154, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 39, 4, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,110,154, 26, - 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 48,110,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,110,154, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 16,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,112,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0, 16,112,154, 26, - 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,208,112,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,112,112,154, 26, - 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 48,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,208,112,154, 26, - 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,144,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0, 48,113,154, 26, - 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,240,113,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,144,113,154, 26, - 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 80,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,240,113,154, 26, - 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,176,114,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0, 80,114,154, 26, - 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 16,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,176,114,154, 26, - 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,112,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0, 16,115,154, 26, - 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,208,115,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,112,115,154, 26, - 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 48,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,208,115,154, 26, - 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,144,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0, 48,116,154, 26, - 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,240,116,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,144,116,154, 26, - 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 80,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,240,116,154, 26, - 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,176,117,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0, 80,117,154, 26, - 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 16,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,176,117,154, 26, - 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,112,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0, 16,118,154, 26, - 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,208,118,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,112,118,154, 26, - 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 48,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,208,118,154, 26, - 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,144,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0, 48,119,154, 26, - 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,240,119,154, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,119,154, 26, - 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0, 48,107,154, 26, 1, 0, 0, 0,144,107,154, 26, 1, 0, 0, 0,176,108,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, 1, 0, 0, 0,224, 3,155, 26, 1, 0, 0, 0,224, 3,155, 26, - 1, 0, 0, 0, 48,121,154, 26, 1, 0, 0, 0,144,122,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 67,229, 28, 1, 0, 0, 0, 32,178,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,121,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,122,154, 26, 1, 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, 32,240, 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, -128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, - 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,144,122,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,121,154, 26, 1, 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, 2, 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, 2, 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, 3, 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, 0, 0, 0, 0, 66, 4, 0, 0, - 66, 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, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,240,123,154, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,120,154, 26, 1, 0, 0, 0,176,111,154, 26, - 1, 0, 0, 0, 16,109,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0,240,107,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 15, 15,100, 1, 92, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 16,236, 81, 3, 1, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0,208,124,154, 26, - 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217,199, 25, - 1, 0, 0, 0,208, 96,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,124,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 48,126,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 94, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 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, 99, 1, 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,100, 1, 26, 0,100, 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, 29, 6, 0, 0,128, 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,100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,126,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,154, 26, 1, 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, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 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,100, 1, 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, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 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,100, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,127,154, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0,128,134,154, 26, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,128,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240,129,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,129,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,131,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,131,154, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, - 32, 1, 0, 0,128,134,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,127,154, 26, - 1, 0, 0, 0,144,128,154, 26, 1, 0, 0, 0,240,129,154, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,135,154, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0,240,123,154, 26, 1, 0, 0, 0, 16,109,154, 26, - 1, 0, 0, 0,208,109,154, 26, 1, 0, 0, 0,176,108,154, 26, 1, 0, 0, 0,112,109,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 38, 4, 0, 0, 4, 4,100, 1,202, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0,160,167,154, 26, 1, 0, 0, 0,192,136,154, 26, - 1, 0, 0, 0, 32,138,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,104,155, 25, - 1, 0, 0, 0, 32,153,228, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,136,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,138,154, 26, 1, 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,178, 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, 99, 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,100, 1, 31, 0,100, 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, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 8, 4, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,138,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,136,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 0,102,196, - 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,254, 63,102,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0, -170, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0, -170, 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, 4, 6, 0,100, 1,171, 3, 83, 1,153, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180,157, 25, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,139,154, 26, - 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,139,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13, 82, 3, 1, 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, 82, 1, 36, 0, 0, 0, 0, 0, 0, 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, 48,180, 4, 28, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,144,231,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,241,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 16,141,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,142,154, 26, 1, 0, 0, 0,128,139,154, 26, - 1, 0, 0, 0,176,121,159, 25, 1, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 96,241,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,242,163, 29, 1, 0, 0, 0, +144,231,163, 29, 1, 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,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, + 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, 0, 0, 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, 82, 1, 61, 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, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192,242,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,244,163, 29, 1, 0, 0, 0, + 96,241,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,142,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0, 16,141,154, 26, 1, 0, 0, 0,176,131,159, 25, 1, 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, 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, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 48,144,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,145,154, 26, 1, 0, 0, 0,160,142,154, 26, - 1, 0, 0, 0,144,133,159, 25, 1, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 32,244,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,242,163, 29, 1, 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,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, 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, 0, 0, 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,254, 82, 1,178, 0, 0, 0, 0, 0, - 0, 0, 2, 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, + 68, 65, 84, 65,248, 0, 0, 0,128,245,163, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0, + 80,230,163, 29, 1, 0, 0, 0,144,231,163, 29, 1, 0, 0, 0, 32,244,163, 29, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,145,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,144,154, 26, 1, 0, 0, 0,112,138,159, 25, 1, 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, 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, 83,254, 82, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 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,240,232,163, 29, 1, 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, 32, 0, 0, 0,240,232,163, 29, 1, 0, 0, 0, + 21, 1, 0, 0, 1, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,112,223,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +144,218,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 80,147,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,148,154, 26, 1, 0, 0, 0,192,145,154, 26, - 1, 0, 0, 0, 80,140,159, 25, 1, 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, 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,213,253, 82, 1,102, 0, 0, 0, 0, 0, - 0, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,218,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,219,163, 29, 1, 0, 0, 0,112,223,163, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,148,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0, 80,147,154, 26, 1, 0, 0, 0, 48,145,159, 25, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,219,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,218,163, 29, 1, 0, 0, 0, 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, 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,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, 0, 0, 84,253, 82, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65,168, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, +112,174,163, 29, 1, 0, 0, 0,128,245,163, 29, 1, 0, 0, 0,112,223,163, 29, 1, 0, 0, 0,240,219,163, 29, 1, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,112,150,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,152,154, 26, 1, 0, 0, 0,224,148,154, 26, - 1, 0, 0, 0, 0,151,159, 25, 1, 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, 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,128, 63, 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, 80,234,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +176,235,163, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 82, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,235,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +208,253,163, 29, 1, 0, 0, 0, 80,234,163, 29, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,152,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,144,153,154, 26, 1, 0, 0, 0,112,150,154, 26, 1, 0, 0, 0,224,152,159, 25, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,253,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 48,255,163, 29, 1, 0, 0, 0,176,235,163, 29, 1, 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, + 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, 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, 36,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,255,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 16,173,163, 29, 1, 0, 0, 0,208,253,163, 29, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,144,153,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,154, 26, - 1, 0, 0, 0,192,154,159, 25, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,173,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,255,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 82, 1, 0, 0, 20, 0, 0, 0, - 4, 0, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 32,155,154, 26, 1, 0, 0, 0,162, 0, 0, 0, - 1, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 18, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 18, 5, 28, 1, 0, 0, 0,157, 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, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,176, 12,158, 25, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,156,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, + 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, 68, 65, 84, 65, 40, 1, 0, 0,192,157,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,159,154, 26, - 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,159,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192,157,154, 26, 1, 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,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, - 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, 68, 65, 84, 65, 32, 1, 0, 0, +112,174,163, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0, + 80,234,163, 29, 1, 0, 0, 0, 16,173,163, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,208,175,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48,177,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65,240, 0, 0, 0,128,160,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,160,167,154, 26, - 1, 0, 0, 0, 32,155,154, 26, 1, 0, 0, 0, 96,156,154, 26, 1, 0, 0, 0, 32,159,154, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,177,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,175,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,174,163, 29, 1, 0, 0, 0,208,175,163, 29, 1, 0, 0, 0, + 48,177,163, 29, 1, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,161,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 16,163,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,163,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,161,154, 26, 1, 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,160, 0, 0, 0,144, 0,164, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, + 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 16,176, 20, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 1, 1, 80, 1,239, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,111,217, 2, 1, 0, 0, 0, 80,181,163, 29, 1, 0, 0, 0,144,189,163, 29, 1, 0, 0, 0,144,178,163, 29, 1, 0, 0, 0, +240,179,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 62,201, 20, 1, 0, 0, 0, +240, 0,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,178,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,179,163, 29, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,117, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0, +208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,179,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,178,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,112,217, 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,112,164,154, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112,164,154, 26, 1, 0, 0, 0,156, 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, + 48, 22, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 22, 5, 28, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,160, 71, 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,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128, +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, + 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63, +179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,118,101,150,191,216, 49, 49, 65,152, 9, 52, 65, +231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180, 27, 97,208,189, 70, 41,205, 61,173,247,146, 62, 0, 0,166, 51, +211,120, 21,194,145, 5, 2, 66, 9,136,213,193,193,214,159,192,219, 38, 19, 66,197,173,255,193,157,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, + 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63, +179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,118,101,150,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,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, +241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,210, 47, 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, 68, 65, 84, 65, - 32, 1, 0, 0,160,167,154, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,160,154, 26, - 1, 0, 0, 0,176,161,154, 26, 1, 0, 0, 0, 16,163,154, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,169,154, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,224,135,154, 26, 1, 0, 0, 0, 80,111,154, 26, - 1, 0, 0, 0,240,110,154, 26, 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0,176,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,155, 1, 0, 0, 1, 1, 27, 3,156, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,224,169,154, 26, - 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,101,199, 25, - 1, 0, 0, 0, 96,109,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,169,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 64,171,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 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, 26, 3, 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, 27, 3, 26, 0, 27, 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, 1, 3, 0, 0, 27, 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, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,171,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,160,172,154, 26, 1, 0, 0, 0,224,169,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 3, 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, 1, 0,130, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,172,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0,174,154, 26, 1, 0, 0, 0, 64,171,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 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, 1, 0, 0, 0, - 0, 0, 0, 0, 0,245, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,174,154, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192,184,154, 26, 1, 0, 0, 0,160,172,154, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 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, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,175,154, 26, - 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,175,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,240,176,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,178,154, 26, 1, 0, 0, 0, 96,175,154, 26, - 1, 0, 0, 0, 64,242, 81, 3, 1, 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, 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, 6, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,178,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,240,176,154, 26, 1, 0, 0, 0,176,203,199, 25, 1, 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, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 80,181,163, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,112,185,163, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,182,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 16,184,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,184,163, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,182,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,185,163, 29, 1, 0, 0, 0, +167, 0, 0, 0, 1, 0, 0, 0,144,189,163, 29, 1, 0, 0, 0, 80,181,163, 29, 1, 0, 0, 0,176,182,163, 29, 1, 0, 0, 0, + 16,184,163, 29, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 48,209,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,209,161, 29, 1, 0, 0, 0, +219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,222,163, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 48,222,163, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,208,186,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,188,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,188,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,186,163, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,189,163, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,185,163, 29, 1, 0, 0, 0,208,186,163, 29, 1, 0, 0, 0, 48,188,163, 29, 1, 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, 2, 0, 0, 0, 0, 0, 0, 0, + 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, +208,190,163, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208, 30,165, 29, 1, 0, 0, 0,112,122,163, 29, 1, 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,208,224,163, 29, 1, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, + 0, 3,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0,208,224,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,225,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 48,225,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0,208,224,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +160,192,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, + 64,192,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 0,193,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 32,194,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, +192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +128,194,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +160,195,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,180, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, + 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, + 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, + 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, + 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, + 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, +192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, +192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, + 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, + 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, + 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, +192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, +128,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, +224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, +224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, + 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, + 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, +208,224,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0, +160,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, + 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, +208,224,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, + 48,225,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, +208,144,217, 2, 1, 0, 0, 0, 80, 30,165, 29, 1, 0, 0, 0, 80, 30,165, 29, 1, 0, 0, 0, 32,207,163, 29, 1, 0, 0, 0, +240, 9,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 69,201, 20, 1, 0, 0, 0, +208,112,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,207,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240, 9,164, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 9,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,207,163, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16, 15,164, 29, 1, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, +192,193,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,100, 1,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16,109,217, 2, 1, 0, 0, 0, + 16, 14,164, 29, 1, 0, 0, 0, 0,173,164, 29, 1, 0, 0, 0, 80, 11,164, 29, 1, 0, 0, 0,176, 12,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,180,160, 21, 1, 0, 0, 0,240, 11,143, 27, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80, 11,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 12,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 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, 99, 1, 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,100, 1, + 26, 0,100, 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, + 29, 6, 0, 0,128, 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, +100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0,176, 12,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 11,164, 29, 1, 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, 99, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 18, 0, 0, 0, 73, 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,100, 1, + 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, + 68, 65, 84, 65,200, 0, 0, 0, 16, 14,164, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,173,164, 29, 1, 0, 0, 0, + 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 64,170,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,171,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,171,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,170,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208, 2, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,208, 2, 28, 1, 0, 0, 0,157, 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,153,252,163, 0, 59, 1, 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,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, 68, 65, 84, 65, - 88, 1, 0, 0, 16,180,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,181,154, 26, 1, 0, 0, 0,128,178,154, 26, - 1, 0, 0, 0, 16,206,199, 25, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,181,154, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0, 16,180,154, 26, 1, 0, 0, 0,144,215,199, 25, 1, 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, 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, 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, 68, 65, 84, 65, 32, 1, 0, 0, 0,173,164, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14,164, 29, 1, 0, 0, 0, 64,170,164, 29, 1, 0, 0, 0, +160,171,164, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 48,183,154, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,191,158, 26, 1, 0, 0, 0,160,181,154, 26, - 1, 0, 0, 0,240,217,199, 25, 1, 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, 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, 7, 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, 68, 65, 84, 65,160, 0, 0, 0, 16, 15,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +112,203,164, 29, 1, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, + 0,193,163, 29, 1, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, +101, 0, 0, 0, 99, 4, 0, 0, 4, 4,100, 1,255, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, +192,192,164, 29, 1, 0, 0, 0, 16,202,164, 29, 1, 0, 0, 0, 96,174,164, 29, 1, 0, 0, 0,192,175,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 13,201, 20, 1, 0, 0, 0, 16,117,160, 21, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 96,174,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,175,164, 29, 1, 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,178, 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, 99, 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,100, 1, + 31, 0,100, 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, 0, 0, 0, 0, + 29, 6, 0, 0,128, 7, 0, 0, 69, 4, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 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, 68, 65, 84, 65, 88, 1, 0, 0,144,191,158, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,183,154, 26, 1, 0, 0, 0,112,208,199, 25, 1, 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, + 68, 65, 84, 65, 40, 1, 0, 0,192,175,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,174,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 64,115,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67, +254,127,115,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,223, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0,223, 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, 4, 6, 0,100, 1, +224, 3, 83, 1,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 78,201, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 1,224, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,177,164, 29, 1, 0, 0, 0, 48,191,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 32,177,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,178,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 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,220,255, 82, 1, 36, 0, + 0, 0, 0, 0, 0, 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,196,255,163, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,178,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 64,180,164, 29, 1, 0, 0, 0, 32,177,164, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 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,192,184,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 82, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, - 27, 6, 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, 27, 3,130, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,186,154, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0, 32,186,154, 26, 1, 0, 0, 0,156, 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, 90, 66,109, 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,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,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, 18,153,150,191,244,250, 39,191, - 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190, - 50,247,227,190,222,212, 27,191,129,191,178,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 64,237,196,187, - 0, 0, 96,179, 19, 84,175,189,227,158,172, 61, 24, 80,119, 62, 0, 0,144, 50,254,120, 21,194,182, 5, 2, 66, 69,136,213,193, -239,214,159,192, 5, 39, 19, 66, 15,174,255,193,216,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, 18,153,150,191,244,250, 39,191, - 8,165, 39,191,170,164,167, 63,166, 69,148, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,171,109, 84, 64, 8,108,228,190, - 50,247,227,190,222,212, 27,191,129,191,178,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, - 3, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 64,180,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,181,164, 29, 1, 0, 0, 0, +176,178,164, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 82, 1, 0, 0, + 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,181,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 96,183,164, 29, 1, 0, 0, 0, 64,180,164, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 68, 65, 84, 65, 32, 1, 0, 0, 80,189,154, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0,112,193,154, 26, 1, 0, 0, 0, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 80, 5,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,190,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,192,154, 26, - 1, 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,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, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,192,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 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, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,193,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,198,154, 26, - 1, 0, 0, 0, 80,189,154, 26, 1, 0, 0, 0,176,190,154, 26, 1, 0, 0, 0, 16,192,154, 26, 1, 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, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, - 40, 1, 0, 0,208,194,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,196,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,196,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,197,154, 26, 1, 0, 0, 0,208,194,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 82, 1,203, 0, 0, 0, 0, 0, 0, 0, 10, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,144,197,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,196,154, 26, - 1, 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,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, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 96,183,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,184,164, 29, 1, 0, 0, 0, +208,181,164, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 82, 1, 58, 0, + 20, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, -240, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,112,193,154, 26, - 1, 0, 0, 0,208,194,154, 26, 1, 0, 0, 0,144,197,154, 26, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,240,184,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,128,186,164, 29, 1, 0, 0, 0, 96,183,164, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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,188,253, 82, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,200,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,201,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 88, 1, 0, 0,128,186,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,188,164, 29, 1, 0, 0, 0, +240,184,164, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,201,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32,200,154, 26, 1, 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, -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, 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, 59,253, 82, 1,105, 0, + 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65,200, 0, 0, 0,224,202,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,198,154, 26, 1, 0, 0, 0, 32,200,154, 26, 1, 0, 0, 0,128,201,154, 26, 1, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,188,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,160,189,164, 29, 1, 0, 0, 0,128,186,164, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 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, 35,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,229,154, 26, - 1, 0, 0, 0, 0,169,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0, 80,108,154, 26, 1, 0, 0, 0,208,109,154, 26, - 1, 0, 0, 0,144,110,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,157, 1, 0, 0, - 38, 4, 0, 0, 16, 16, 28, 6,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 82, 3, 1, 0, 0, 0,128,207,154, 26, - 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,192,204,154, 26, 1, 0, 0, 0, 32,206,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,228, 28, 1, 0, 0, 0,128,207,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,192,204,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,206,154, 26, 1, 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,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, 27, 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, 28, 6, 26, 0, 28, 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, 0, 0, 0, 0, - 27, 6, 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, 28, 6, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,206,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,204,154, 26, - 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68, 0,108,197,190, -174, 24, 0, 68, 11, 6, 0, 0, 28, 6, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 18, 0, 0, 0,111, 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, 28, 6,112, 2, 11, 6, - 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 6, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,112, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,128,207,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,160,189,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,191,164, 29, 1, 0, 0, 0, + 16,188,164, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 11,253, 82, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,191,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,164, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252, 82, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,208,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,210,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 68, 65, 84, 65, 0, 1, 0, 0,192,192,164, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 32,198,164, 29, 1, 0, 0, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,210,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,211,154, 26, 1, 0, 0, 0,224,208,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 1, 0, 0, 0, 0, 0, +160, 26,200, 20, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 0,194,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,195,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,160,211,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,210,154, 26, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96,195,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,196,164, 29, 1, 0, 0, 0, 0,194,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0,213,154, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,128,207,154, 26, 1, 0, 0, 0,224,208,154, 26, - 1, 0, 0, 0,160,211,154, 26, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +192,196,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,195,164, 29, 1, 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,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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 48,214,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,215,154, 26, 1, 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,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, 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,240, 0, 0, 0, + 32,198,164, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16,202,164, 29, 1, 0, 0, 0,192,192,164, 29, 1, 0, 0, 0, + 0,194,164, 29, 1, 0, 0, 0,192,196,164, 29, 1, 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, 68, 65, 84, 65, - 40, 1, 0, 0,144,215,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,216,154, 26, 1, 0, 0, 0, 48,214,154, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,240,216,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,218,154, 26, 1, 0, 0, 0,144,215,154, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,218,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,219,154, 26, 1, 0, 0, 0,240,216,154, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,176,219,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,218,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,199,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,200,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,176,200,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,199,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,221,154, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0, 16,221,154, 26, 1, 0, 0, 0,156, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,212, 2, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,212, 2, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 32, 1, 0, 0, 64,224,154, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0, 0,213,154, 26, 1, 0, 0, 0, 48,214,154, 26, 1, 0, 0, 0,176,219,154, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 40, 1, 0, 0,160,225,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,227,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,227,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160,225,154, 26, 1, 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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,228,154, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,224,154, 26, 1, 0, 0, 0,160,225,154, 26, 1, 0, 0, 0, 0,227,154, 26, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16,202,164, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,198,164, 29, 1, 0, 0, 0, 80,199,164, 29, 1, 0, 0, 0, +176,200,164, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,203,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,236,164, 29, 1, 0, 0, 0, 16, 15,164, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0, +224,194,163, 29, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, + 0, 0, 0, 0,179, 1, 0, 0, 1, 1, 27, 3,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0, + 32,222,164, 29, 1, 0, 0, 0,176,235,164, 29, 1, 0, 0, 0, 80,204,164, 29, 1, 0, 0, 0,192,220,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,140, 27, 1, 0, 0, 0,240, 90,201, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,204,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,205,164, 29, 1, 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, 70, 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, 26, 3, 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, 27, 3, + 26, 0, 27, 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, + 1, 3, 0, 0, 27, 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, + 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 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, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,229,154, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224,203,154, 26, 1, 0, 0, 0,208,106,154, 26, 1, 0, 0, 0, 48,110,154, 26, 1, 0, 0, 0,240,110,154, 26, - 1, 0, 0, 0, 80,111,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, -155, 1, 0, 0, 6, 6, 0, 3,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255, 81, 3, 1, 0, 0, 0, 96,234,154, 26, - 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0, 64,230,154, 26, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,190,228, 28, 1, 0, 0, 0, 32,210,229, 28, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 64,230,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,231,154, 26, 1, 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, 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, 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, 64, 5, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,160,231,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,233,154, 26, 1, 0, 0, 0, 64,230,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,205,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,207,164, 29, 1, 0, 0, 0, + 80,204,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,154, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,207,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,208,164, 29, 1, 0, 0, 0, +176,205,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 3, 0, 0, 27, 6, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 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, 26, 0, 0, 0,155, 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, 1, 0, 0, 0, 0, 0, 0, 0,144, 1, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,233,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,231,154, 26, - 1, 0, 0, 0, 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,130,190, - 0,128,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, 3, 0, 0, 0, 0, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,112,208,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,220,164, 29, 1, 0, 0, 0, + 16,207,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,209,164, 29, 1, 0, 0, 0, 48,219,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,208,209,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,211,164, 29, 1, 0, 0, 0, + 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, 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, -255, 2, 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, 0, 3,130, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -168, 0, 0, 0, 96,234,154, 26, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 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, 48, 66, 25, 4, 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, 88, 1, 0, 0, 96,211,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,240,212,164, 29, 1, 0, 0, 0,208,209,164, 29, 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,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,128, 63, 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, 64,235,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,236,154, 26, 1, 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, 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, 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, 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, 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,160,236,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,235,154, 26, - 1, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, - 32, 1, 0, 0, 0,238,154, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0, 96,234,154, 26, - 1, 0, 0, 0, 64,235,154, 26, 1, 0, 0, 0,160,236,154, 26, 1, 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, + 68, 65, 84, 65, 88, 1, 0, 0,240,212,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,214,164, 29, 1, 0, 0, 0, + 96,211,164, 29, 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, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,214,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 16,216,164, 29, 1, 0, 0, 0,240,212,164, 29, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,239,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,240,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, -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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,240,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,242,154, 26, 1, 0, 0, 0, 96,239,154, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 16,216,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,217,164, 29, 1, 0, 0, 0, +128,214,164, 29, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,217,164, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 48,219,164, 29, 1, 0, 0, 0, 16,216,164, 29, 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,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, 68, 65, 84, 65, 40, 1, 0, 0, 32,242,154, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,154, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,128,243,154, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 0,238,154, 26, 1, 0, 0, 0, 96,239,154, 26, - 1, 0, 0, 0, 32,242,154, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48,219,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,217,164, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,220,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,208,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,176,244,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,246,154, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,246,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,154, 26, 1, 0, 0, 0,176,244,154, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112,247,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,248,154, 26, 1, 0, 0, 0, 16,246,154, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,208,248,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,250,154, 26, 1, 0, 0, 0,112,247,154, 26, - 1, 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, 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, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 68, 65, 84, 65, - 40, 1, 0, 0, 48,250,154, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,248,154, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,216, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,216, 2, 28, 1, 0, 0, 0, +157, 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,240, 94, 95, 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,128, 0, 0, 0,128, + 72, 1, 77,190, 0, 0, 0,128,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, 79,200,141,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,189,151,139, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,231, 72,168,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,204, 58,186,189,131, 90,183, 61, + 76, 88,131, 62, 0, 0,152, 50,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, 79,200,141,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,189,151,139, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,231, 72,168,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, 3, 35,171,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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,251,154, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0,144,251,154, 26, 1, 0, 0, 0,156, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 32,222,164, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 64,226,164, 29, 1, 0, 0, 0, + 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, +128,223,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,224,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +224,224,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,223,164, 29, 1, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 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,192,254,154, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,128,243,154, 26, 1, 0, 0, 0,176,244,154, 26, 1, 0, 0, 0, 48,250,154, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0, + 64,226,164, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, 32,222,164, 29, 1, 0, 0, 0, +128,223,164, 29, 1, 0, 0, 0,224,224,164, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 0,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 1,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 1,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0,155, 26, 1, 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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,224, 2,155, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192,254,154, 26, 1, 0, 0, 0, 32, 0,155, 26, 1, 0, 0, 0,128, 1,155, 26, 1, 0, 0, 0, 15, 0, 0, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,160,227,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0,229,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,229,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 96,230,164, 29, 1, 0, 0, 0,160,227,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,208, 0, 0, 0, 96, 4,155, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,192,112,155, 26, - 1, 0, 0, 0,192,105,154, 26, 1, 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,112, 5,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0, 80, 16,155, 26, - 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 60, 48, 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, 32, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,208, 5,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 6,155, 26, - 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 6,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 7,155, 26, - 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 8,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 6, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 68, 3, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 8,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 9,155, 26, - 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 9,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 6, 96, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0, 48, 6,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 9,155, 26, 1, 0, 0, 0,208, 5,155, 26, 1, 0, 0, 0,240, 6,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0, 80, 10,155, 26, 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,176, 10,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0, 16, 11,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0,176, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,112, 11,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,176, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,208, 11,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 48, 12,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 16, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,144, 12,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,240, 12,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,112, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0, 80, 13,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,176, 13,155, 26, 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0, 16, 14,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,112, 14,155, 26, 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,208, 14,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 48, 9,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 15,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0,144, 9,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,144, 15,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,144, 9,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 16,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 15,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 80, 20,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0,208, 5,155, 26, - 1, 0, 0, 0, 48, 6,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, - 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0, 64,112,155, 26, 1, 0, 0, 0,144, 17,155, 26, 1, 0, 0, 0,240, 18,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89,158, 26, 1, 0, 0, 0,240, 94,158, 26, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 17,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 18,155, 26, - 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, - 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 16,248,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 79,158, 26, 1, 0, 0, 0,240, 9,152, 26, 1, 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,240, 18,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144, 17,155, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 20,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 48,155, 26, - 1, 0, 0, 0,176, 16,155, 26, 1, 0, 0, 0,176, 7,155, 26, 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0,144, 6,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 67, 3, 0, 0, 4, 4, 92, 1, 68, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,144, 39,155, 26, - 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,144, 22,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,158, 26, 1, 0, 0, 0, 48,221, 93, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 48, 21,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 22,155, 26, 1, 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,174, 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, 91, 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, 92, 1, 31, 0, 92, 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, 0, 0, 0, 0, 37, 6, 0, 0, -128, 7, 0, 0, 37, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 31, 0, - 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0,112,205, 0, 28, - 1, 0, 0, 0,112,205, 0, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,158, 26, - 1, 0, 0, 0,208, 84,158, 26, 1, 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,144, 22,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 67, 0,128, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,252,191, 68,196, - 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 18, 0, 0, 0, 36, 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, 4, 6, 0, 92, 1, 37, 3, 75, 1, - 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 70,224, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0, -128, 7, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 37, 3, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0,240,156,158, 26, - 1, 0, 0, 0, 32, 1, 1, 28, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,240, 86,158, 26, - 1, 0, 0, 0,128,215,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,240, 23,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 25,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 13, 82, 3, 1, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 25,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,240, 23,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 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, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 28,155, 26, 1, 0, 0, 0,128, 25,155, 26, - 1, 0, 0, 0,176,131,159, 25, 1, 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, 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, 74, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 28,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 16, 27,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 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, 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,165,254, 74, 1,178, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 48, 30,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 31,155, 26, 1, 0, 0, 0,160, 28,155, 26, - 1, 0, 0, 0,112,138,159, 25, 1, 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, 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, 83,254, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 31,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 48, 30,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,230,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,164, 29, 1, 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,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, 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,213,253, 74, 1,102, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65,240, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, +164, 0, 0, 0, 1, 0, 0, 0,176,235,164, 29, 1, 0, 0, 0, 64,226,164, 29, 1, 0, 0, 0,160,227,164, 29, 1, 0, 0, 0, + 96,230,164, 29, 1, 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, 68, 65, 84, 65, - 88, 1, 0, 0, 80, 33,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 34,155, 26, 1, 0, 0, 0,192, 31,155, 26, - 1, 0, 0, 0, 48,145,159, 25, 1, 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, 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, 84,253, 74, 1,105, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 34,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0, 80, 33,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 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, 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, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +240,232,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,234,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 60,253, 74, 1, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 80,234,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,232,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,112, 36,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,224, 34,155, 26, - 1, 0, 0, 0,224,152,159, 25, 1, 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, 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, 36,253, 74, 1, 0, 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, 68, 65, 84, 65,200, 0, 0, 0, +176,235,164, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, +240,232,164, 29, 1, 0, 0, 0, 80,234,164, 29, 1, 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, 88, 1, 0, 0, 0, 38,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 36,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +176,236,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 3,165, 29, 1, 0, 0, 0,112,203,164, 29, 1, 0, 0, 0, +128,194,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 16, 16, 28, 6,175, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,135,217, 2, 1, 0, 0, 0, 80,240,164, 29, 1, 0, 0, 0, 0, 2,165, 29, 1, 0, 0, 0, +144,237,164, 29, 1, 0, 0, 0,240,238,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 68,201, 20, 1, 0, 0, 0, 80,114,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,237,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,240,238,164, 29, 1, 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,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, 27, 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, 28, 6, 26, 0, 28, 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, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0,206, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,136,217, 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, 12,253, 74, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,238,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,237,164, 29, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68,240, 80,128,193,136, 2, 4, 68, 11, 6, 0, 0, 28, 6, 0, 0, + 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, + 18, 0, 0, 0,148, 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, 28, 6,149, 2, 11, 6,131, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,136,217, 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, 68, 65, 84, 65, 32, 1, 0, 0, 80,240,164, 29, 1, 0, 0, 0, +174, 0, 0, 0, 1, 0, 0, 0,208,245,164, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, - 0, 1, 0, 0,144, 39,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,192, 46,155, 26, 1, 0, 0, 0, 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, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 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, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,241,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 16,243,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 88,158, 26, - 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 40,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 42,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,243,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +112,244,164, 29, 1, 0, 0, 0,176,241,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48, 42,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,244,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,243,164, 29, 1, 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,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, 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, 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, 68, 65, 84, 65,240, 0, 0, 0,208,245,164, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, +224,253,164, 29, 1, 0, 0, 0, 80,240,164, 29, 1, 0, 0, 0,176,241,164, 29, 1, 0, 0, 0,112,244,164, 29, 1, 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,144, 43,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 43,155, 26, - 1, 0, 0, 0,156, 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, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,247,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 96,248,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,248,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,192,249,164, 29, 1, 0, 0, 0, 0,247,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,249,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 32,251,164, 29, 1, 0, 0, 0, 96,248,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,251,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,128,252,164, 29, 1, 0, 0, 0,192,249,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,252,164, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,251,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,220, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,220, 2, 28, 1, 0, 0, 0, +157, 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 46,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144, 39,155, 26, 1, 0, 0, 0,208, 40,155, 26, 1, 0, 0, 0, 48, 42,155, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0, 32, 48,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 80, 20,155, 26, - 1, 0, 0, 0,112, 5,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0,176, 7,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 15, 15, 36, 6, - 96, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,236, 81, 3, 1, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,176, 58,155, 26, - 1, 0, 0, 0, 0, 49,155, 26, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 93,158, 26, 1, 0, 0, 0, 0,210, 0, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 49,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 50,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,128,196, 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, - 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 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, 36, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,237, 81, 3, 1, 0, 0, 0, 0,163,158, 26, 1, 0, 0, 0, 0,163,158, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,217,158, 26, 1, 0, 0, 0,144, 37,159, 26, - 1, 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, 96, 50,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,155, 26, 1, 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, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 35, 6, 0, 0, 18, 0, 0, 0, 69, 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, 36, 6, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 6, 0, 0, 26, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 70, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,236, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 39,159, 26, 1, 0, 0, 0,240, 94, 1, 28, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192, 51,155, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,176, 58,155, 26, 1, 0, 0, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,224,253,164, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 2,165, 29, 1, 0, 0, 0, +208,245,164, 29, 1, 0, 0, 0, 0,247,164, 29, 1, 0, 0, 0,128,252,164, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, + 64,255,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 0,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 40, 1, 0, 0,192, 52,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 54,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +160, 0,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,255,164, 29, 1, 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,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, 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, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, + 0, 2,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,253,164, 29, 1, 0, 0, 0, + 64,255,164, 29, 1, 0, 0, 0,160, 0,165, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 54,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 0, 0, 0, + 0, 3,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,236,164, 29, 1, 0, 0, 0, +208,224,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 6, 6, 0, 3,180, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,128,217, 2, 1, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0, 80, 29,165, 29, 1, 0, 0, 0, +224, 3,165, 29, 1, 0, 0, 0,160, 6,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 36,201, 20, 1, 0, 0, 0,128, 85,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 3,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 64, 5,165, 29, 1, 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, 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, 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, 64,134,217, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 5,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,160, 6,165, 29, 1, 0, 0, 0,224, 3,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 55,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128, 55,155, 26, - 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 32, 1, 0, 0,176, 58,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 51,155, 26, 1, 0, 0, 0,192, 52,155, 26, 1, 0, 0, 0, 32, 54,155, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0, 32, 48,155, 26, - 1, 0, 0, 0,112, 8,155, 26, 1, 0, 0, 0, 16, 8,155, 26, 1, 0, 0, 0, 80, 7,155, 26, 1, 0, 0, 0,208, 8,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 38, 4, 0, 0, 3, 3, 92, 1, -226, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 16, 76,155, 26, - 1, 0, 0, 0,240, 60,155, 26, 1, 0, 0, 0, 80, 62,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176, 95, 1, 28, 1, 0, 0, 0,144, 96, 1, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 60,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 62,155, 26, 1, 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,174, 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, - 91, 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, 92, 1, 26, 0, 92, 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, 37, 6, 0, 0,128, 7, 0, 0, 13, 4, 0, 0, - 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 96,168,130, 26, 1, 0, 0, 0, 96,168,130, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 98, 1, 28, 1, 0, 0, 0, 32, 99, 1, 28, - 1, 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, 80, 62,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 60,155, 26, 1, 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,165, 67, 0, 0, 54,195, 0, 0, 0, 0, 75, 1, 0, 0, - 92, 1, 0, 0, 18, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 74, 1, 0, 0, 18, 0, 0, 0,199, 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, 92, 1,200, 0, 75, 1,182, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, - 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,200, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0,160, 4,131, 26, 1, 0, 0, 0,160, 4,131, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,101, 1, 28, 1, 0, 0, 0,192,233,158, 26, - 1, 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,176, 63,155, 26, - 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 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, 26, 0, 0, 0,179, 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, + 1, 0, 0, 0, 0, 0, 0, 0,144,130,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 6,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5,165, 29, 1, 0, 0, 0, 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,154,190, 0,128,166, 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,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 51, 39, 26, - 1, 0, 0, 0,192, 51, 39, 26, 1, 0, 0, 0, 80, 80, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,179, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,129,217, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 80, 80, 94, 3, - 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0, 16, 65,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 67,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, 68, 65, 84, 65,168, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0, +168, 0, 0, 0, 1, 0, 0, 0,160, 11,165, 29, 1, 0, 0, 0, 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, 48,180, 4, 28, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 8,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 64, 10,165, 29, 1, 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, 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, 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, 0, 0, 0, 0, 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,128, 67,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 10,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 8,165, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 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,224, 68,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 16, 76,155, 26, - 1, 0, 0, 0,176, 63,155, 26, 1, 0, 0, 0, 32, 66,155, 26, 1, 0, 0, 0,128, 67,155, 26, 1, 0, 0, 0, 4, 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,160, 11,165, 29, 1, 0, 0, 0, +174, 0, 0, 0, 1, 0, 0, 0, 32, 17,165, 29, 1, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0,224, 8,165, 29, 1, 0, 0, 0, + 64, 10,165, 29, 1, 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, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 0, 13,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 96, 14,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, - 40, 1, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 71,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 71,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 70,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 14,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +192, 15,165, 29, 1, 0, 0, 0, 0, 13,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 72,155, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0,224, 72,155, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 15,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 14,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 17,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, + 48, 25,165, 29, 1, 0, 0, 0,160, 11,165, 29, 1, 0, 0, 0, 0, 13,165, 29, 1, 0, 0, 0,192, 15,165, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16, 76,155, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 68,155, 26, 1, 0, 0, 0, 32, 70,155, 26, 1, 0, 0, 0,128, 71,155, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112, 77,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 60,155, 26, 1, 0, 0, 0, 48, 9,155, 26, 1, 0, 0, 0,240, 6,155, 26, 1, 0, 0, 0, 16, 8,155, 26, - 1, 0, 0, 0,144, 9,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 97, 0, 0, 0, - 38, 4, 0, 0, 1, 1, 36, 6,198, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, 1, 0, 0, 0, 32,107,155, 26, - 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,137, 77, 3, 1, 0, 0, 0, 32,137, 77, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 80, 78,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 79,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, - 35, 6, 0, 0, 97, 0, 0, 0,122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 26, 0, - 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, 1, 0, 0, 0,128,177, 88, 23, - 1, 0, 0, 0,128,177, 88, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,164,156, 25, - 1, 0, 0, 0, 64, 11,159, 26, 1, 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,176, 79,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 80, 78,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 72,196, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 51, 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, 51, 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, 4, 6, 0,160, 0, 52, 3,143, 0, - 34, 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, -159, 0, 0, 0,243, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 52, 3, - 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, 1, 0, 0, 0,128,250, 88, 23, - 1, 0, 0, 0, 32,117, 82, 23, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0, 96, 76, 78, 3, - 1, 0, 0, 0,160, 15,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 82,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,244, 81, 3, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 82,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 48, 84,155, 26, 1, 0, 0, 0, 16, 81,155, 26, 1, 0, 0, 0,176,118,200, 25, 1, 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, 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, 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, 68, 65, 84, 65, - 88, 1, 0, 0, 48, 84,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 85,155, 26, 1, 0, 0, 0,160, 82,155, 26, - 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,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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 18,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,176, 19,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 19,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 16, 21,165, 29, 1, 0, 0, 0, 80, 18,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 21,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,112, 22,165, 29, 1, 0, 0, 0,176, 19,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 22,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208, 23,165, 29, 1, 0, 0, 0, 16, 21,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 23,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 22,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,224, 2, 28, 1, 0, 0, 0, +157, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 85,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 84,155, 26, 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,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 87,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 90,155, 26, 1, 0, 0, 0,176, 79,155, 26, - 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0,123, 0, 0, 0,242, 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, 0,245, 81, 3, 1, 0, 0, 0, 16,212,130, 26, - 1, 0, 0, 0, 16,212,130, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,176, 88,155, 26, 1, 0, 0, 0,160,217,205, 25, - 1, 0, 0, 0, 0, 20,159, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,176, 88,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224,245, 81, 3, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 90,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144,102,155, 26, 1, 0, 0, 0, 80, 87,155, 26, 1, 0, 0, 0, 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, 0, 0, 0, 0, 35, 6, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 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, 1, 0, 0, 0, - 0, 0, 0, 0,112,240, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 91,155, 26, - 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 91,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 94,155, 26, 1, 0, 0, 0,160, 91,155, 26, - 1, 0, 0, 0, 64,242, 81, 3, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 94,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0, 48, 93,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 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, 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, + 68, 65, 84, 65, 32, 1, 0, 0, 48, 25,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 80, 29,165, 29, 1, 0, 0, 0, + 32, 17,165, 29, 1, 0, 0, 0, 80, 18,165, 29, 1, 0, 0, 0,208, 23,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, +144, 26,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 27,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 6, 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 27,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 26,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, + 80, 29,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 25,165, 29, 1, 0, 0, 0, +144, 26,165, 29, 1, 0, 0, 0,240, 27,165, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +208, 30,165, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,127,165, 29, 1, 0, 0, 0,208,190,163, 29, 1, 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,240, 15,164, 29, 1, 0, 0, 0, + 64, 35,165, 29, 1, 0, 0, 0,160, 35,165, 29, 1, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0, +144, 93,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 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, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 48, 21, 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, 32, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, +160,204,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +160, 32,165, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, + 64, 32,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 0, 33,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 32, 34,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,101, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, +192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +128, 34,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,100, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160, 35,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 36,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 36,165, 29, 1, 0, 0, 0, +160, 35,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 36,165, 29, 1, 0, 0, 0, + 0, 36,165, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 37,165, 29, 1, 0, 0, 0, + 96, 36,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 37,165, 29, 1, 0, 0, 0, +192, 36,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,128, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 37,165, 29, 1, 0, 0, 0, + 32, 37,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,224, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 38,165, 29, 1, 0, 0, 0, +128, 37,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 64, 38,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 38,165, 29, 1, 0, 0, 0, +224, 37,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160, 38,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 39,165, 29, 1, 0, 0, 0, + 64, 38,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 39,165, 29, 1, 0, 0, 0, +160, 38,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 39,165, 29, 1, 0, 0, 0, + 0, 39,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 40,165, 29, 1, 0, 0, 0, + 96, 39,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 40,165, 29, 1, 0, 0, 0, +192, 39,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,128, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 40,165, 29, 1, 0, 0, 0, + 32, 40,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,224, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 41,165, 29, 1, 0, 0, 0, +128, 40,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 64, 41,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 41,165, 29, 1, 0, 0, 0, +224, 40,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160, 41,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0, + 64, 41,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 41,165, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 46,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, + 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,102, 4, 0, 0,128, 4, 0, 0, + 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,192,126,165, 29, 1, 0, 0, 0, +192,126,165, 29, 1, 0, 0, 0, 64, 43,165, 29, 1, 0, 0, 0,160, 44,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,128,140, 27, 1, 0, 0, 0,240, 63,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 64, 43,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 44,165, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, +102, 4, 0, 0,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 2, 1, 0, 0, 0, 48,210, 6, 3, 1, 0, 0, 0, + 48,210, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197,200, 20, 1, 0, 0, 0, +192, 22,143, 27, 1, 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, +160, 44,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 43,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, +128, 4, 0, 0,128, 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, 1, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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,112,224,200, 20, 1, 0, 0, 0, + 80, 93,201, 20, 1, 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, + 0, 46,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0, + 96, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,115, 3, 0, 0, 4, 4, 92, 1,116, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, 64, 65,165, 29, 1, 0, 0, 0, 64, 69,165, 29, 1, 0, 0, 0, +224, 46,165, 29, 1, 0, 0, 0, 64, 48,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 4,201, 20, 1, 0, 0, 0, 32, 31,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 46,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 64, 48,165, 29, 1, 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,174, 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, 91, 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, 92, 1, 31, 0, 92, 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, 0, 0, 0, 0, 37, 6, 0, 0,128, 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, 92, 1, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 2, 1, 0, 0, 0, 48,164, 6, 28, 1, 0, 0, 0, 48,164, 6, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 40,201, 20, 1, 0, 0, 0,208,248,199, 20, 1, 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, 64, 48,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 67, + 0,128, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,251,191, 80,196, 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, + 18, 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, 74, 1, 0, 0, + 18, 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, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 85, 3, 75, 1, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128,168,164, 21, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 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, 92, 1, 85, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, 48,138, 23, 3, 1, 0, 0, 0, 48, 18, 7, 3, 1, 0, 0, 0, +160, 49,165, 29, 1, 0, 0, 0,176, 63,165, 29, 1, 0, 0, 0,144, 10,200, 20, 1, 0, 0, 0, 96, 3,160, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 49,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 48, 51,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48, 51,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 52,165, 29, 1, 0, 0, 0, +160, 49,165, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 52,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 80, 54,165, 29, 1, 0, 0, 0, 48, 51,165, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 74, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 80, 54,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 55,165, 29, 1, 0, 0, 0, +192, 52,165, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 74, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 97,155, 26, 1, 0, 0, 0,192, 94,155, 26, - 1, 0, 0, 0, 16,206,199, 25, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 55,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,112, 57,165, 29, 1, 0, 0, 0, 80, 54,165, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 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, 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, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 97,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,112, 99,155, 26, 1, 0, 0, 0, 80, 96,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 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, 58,254, 74, 1, 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, 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, 6, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,112, 57,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 59,165, 29, 1, 0, 0, 0, +224, 55,165, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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,188,253, 74, 1,102, 0, + 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, - 88, 1, 0, 0,112, 99,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,101,155, 26, 1, 0, 0, 0,224, 97,155, 26, - 1, 0, 0, 0,240,217,199, 25, 1, 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, 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, 7, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 59,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,144, 60,165, 29, 1, 0, 0, 0,112, 57,165, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,101,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,144, 56,136, 26, 1, 0, 0, 0,112, 99,155, 26, 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, 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, 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, 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, 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, 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, 59,253, 74, 1,105, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,144, 56,136, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101,155, 26, - 1, 0, 0, 0,112,208,199, 25, 1, 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, 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, + 68, 65, 84, 65, 88, 1, 0, 0,144, 60,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 62,165, 29, 1, 0, 0, 0, + 0, 59,165, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 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,123,252, 74, 1,168, 0, + 0, 0, 0, 0, 4, 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,196,255,163, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 62,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,176, 63,165, 29, 1, 0, 0, 0,144, 60,165, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,102,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 90,155, 26, 1, 0, 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, 74, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,176, 63,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 62,165, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 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,160, 0, 0, 0, 35, 6, 0, 0,123, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 5,172, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 26,159, 26, 1, 0, 0, 0, 0,239,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,103,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,103,155, 26, 1, 0, 0, 0,156, 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, 66, 76,210, 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,128, 0, 0, 0,128, 74,215, 76,190, - 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,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62, - 35, 44,185, 62,147,180,109,188,219, 57,188, 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, 48,185, 70,188, 0, 0, 80,180,129,100,122,190, 36, 98,241, 61,159,118, 11, 63, - 0, 0,140, 51, 67,108,117,194,185,204,216, 65,105,156, 5,194,212,247,159,192,235, 62,114, 66, 61,254,213,193,158,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,180,157,229, 62,161,248, 40,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63, 59,228,162, 62, 26, 63,185, 62, - 35, 44,185, 62,147,180,109,188,219, 57,188, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 74, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 7, 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, 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,188,189,169, 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, 68, 65, 84, 65, 0, 1, 0, 0, 64, 65,165, 29, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0, 64, 69,165, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, - 32, 1, 0, 0, 32,107,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64,111,155, 26, 1, 0, 0, 0, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 17, 39, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,108,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,109,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,240,171,140, 27, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 66,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +224, 67,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,224,109,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,108,155, 26, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 67,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 66,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,111,155, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,107,155, 26, 1, 0, 0, 0,128,108,155, 26, - 1, 0, 0, 0,224,109,155, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 0, 0, 0,192,112,155, 26, - 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0, 96, 4,155, 26, 1, 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,208,113,155, 26, 1, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,128, 7,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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,109, 60, 48, 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, - 32, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 48,114,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,115,155, 26, - 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,114,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,115,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,116,155, 26, - 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,112,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,117,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,156, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,118,155, 26, - 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0,240,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,156, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 1, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0,144,114,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 16,119,155, 26, 1, 0, 0, 0, 48,114,155, 26, 1, 0, 0, 0, 80,115,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,112,119,155, 26, 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,208,119,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,115,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0, 48,120,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 16,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,144,120,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,240,120,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0,208,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0, 80,121,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0,208,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,121,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0, 16,122,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0,208,116,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,122,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,208,122,155, 26, 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 48,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0, 48,123,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,144,123,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0,240,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,240,123,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0,240,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0, 80,124,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0,144,117,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,176,124,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0, 16,125,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 80,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,112,125,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,208,125,155, 26, 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,126,155, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0, 48,114,155, 26, - 1, 0, 0, 0,144,114,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16, 15, 82, 3, - 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0, 48, 38,156, 26, 1, 0, 0, 0,208,127,155, 26, 1, 0, 0, 0, 48,129,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,255,197, 25, 1, 0, 0, 0, 64,229,228, 28, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,127,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,129,155, 26, - 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 16, 82, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 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,228, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,228, 2, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,129,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,127,155, 26, 1, 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, 2, 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, 2, 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, 3, 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, 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 1, 0, 0, 0, 0, 0, 0, 0,240, 15, 82, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,130,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,163,155, 26, - 1, 0, 0, 0,240,126,155, 26, 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0,112,116,155, 26, 1, 0, 0, 0, 48,117,155, 26, - 1, 0, 0, 0,240,114,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, -155, 1, 0, 0, 4, 4, 96, 1,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 11, 82, 3, 1, 0, 0, 0,208,149,155, 26, - 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,112,131,155, 26, 1, 0, 0, 0,208,132,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,228, 28, 1, 0, 0, 0, 48, 64,192, 25, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,112,131,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,132,155, 26, 1, 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,176, 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, 95, 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, 96, 1, 31, 0, 96, 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, 0, 0, 0, 0, 33, 6, 0, 0, -128, 7, 0, 0,125, 1, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,208,132,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,131,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,181,195, - 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 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, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1,125, 1, 79, 1, -107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,156, 25, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0, -128, 7, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,125, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 48,134,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,135,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 13, 82, 3, 1, 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, 78, 1, 36, 0, 0, 0, 0, 0, - 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,135,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0, 48,134,155, 26, 1, 0, 0, 0,176,121,159, 25, 1, 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, 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, 78, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 80,137,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,138,155, 26, 1, 0, 0, 0,192,135,155, 26, - 1, 0, 0, 0,176,131,159, 25, 1, 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, 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, 78, 1, 0, 0, 0, 0, 0, 0, - 4, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,138,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,137,155, 26, 1, 0, 0, 0,144,133,159, 25, 1, 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, 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,165,254, 78, 1,178, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, - 88, 1, 0, 0,112,140,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,142,155, 26, 1, 0, 0, 0,224,138,155, 26, - 1, 0, 0, 0,112,138,159, 25, 1, 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, 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, 83,254, 78, 1, 58, 0, 20, 0, 0, 0, - 0, 0, 2, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 0,142,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0,112,140,155, 26, 1, 0, 0, 0, 80,140,159, 25, 1, 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, 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,213,253, 78, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, - 88, 1, 0, 0,144,143,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,145,155, 26, 1, 0, 0, 0, 0,142,155, 26, - 1, 0, 0, 0, 48,145,159, 25, 1, 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, 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, 84,253, 78, 1,105, 0, 0, 0, 0, 0, - 0, 0, 2, 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, 68, 65, 84, 65, 32, 1, 0, 0, + 64, 69,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,165, 29, 1, 0, 0, 0, +128, 66,165, 29, 1, 0, 0, 0,224, 67,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, 0, 46,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, +224, 34,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15, 36, 6,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,109,217, 2, 1, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0, 0, 78,165, 29, 1, 0, 0, 0,128, 71,165, 29, 1, 0, 0, 0, +224, 72,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,149,140, 27, 1, 0, 0, 0, + 32,110,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 71,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +224, 72,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 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, 36, 6, 26, 0, 6, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,110,217, 2, 1, 0, 0, 0, 48,250, 6, 3, 1, 0, 0, 0, 48,250, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 6,143, 27, 1, 0, 0, 0,240, 87,160, 21, 1, 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,224, 72,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 71,165, 29, 1, 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, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 18, 0, 0, 0, 73, 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, 36, 6, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 74, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,109,217, 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,208,154,162, 21, 1, 0, 0, 0,176,145,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 78,165, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,145,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,144,143,155, 26, 1, 0, 0, 0, 0,151,159, 25, 1, 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, 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, 60,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 75,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +160, 76,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,176,146,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,148,155, 26, 1, 0, 0, 0, 32,145,155, 26, - 1, 0, 0, 0,224,152,159, 25, 1, 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, 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, 36,253, 78, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 2, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 76,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 75,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,148,155, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,146,155, 26, 1, 0, 0, 0,192,154,159, 25, 1, 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, 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, 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, - 0, 0, 0, 0, 0, 0, 12,253, 78, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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, + 48,232, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,232, 2, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 0, 78,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0, + 64, 75,165, 29, 1, 0, 0, 0,160, 76,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144, 93,165, 29, 1, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, +192, 33,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,100, 4, 0, 0, 3, 3, 92, 1,240, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,106,217, 2, 1, 0, 0, 0, 0, 83,165, 29, 1, 0, 0, 0, 48, 92,165, 29, 1, 0, 0, 0, 64, 80,165, 29, 1, 0, 0, 0, +160, 81,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 13,143, 27, 1, 0, 0, 0, + 16,150,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 80,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +160, 81,165, 29, 1, 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,174, 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, 91, 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, 92, 1, 26, 0, 92, 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, 37, 6, 0, 0,128, 7, 0, 0, 75, 4, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,108,217, 2, 1, 0, 0, 0, 48, 74, 10, 28, 1, 0, 0, 0, 48, 74, 10, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 42,201, 20, 1, 0, 0, 0, 80,142,162, 21, 1, 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,160, 81,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 80,165, 29, 1, 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,165, 67, 0, 0, 68,195, 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 18, 0, 0, 0,213, 0, 0, 0, + 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 18, 0, 0, 0,213, 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, 92, 1,214, 0, 75, 1,196, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,214, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,107,217, 2, 1, 0, 0, 0, 48,144, 11, 28, 1, 0, 0, 0, 48,144, 11, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,201, 20, 1, 0, 0, 0,208, 62,202, 20, 1, 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, 0, 83,165, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, + 48, 88,165, 29, 1, 0, 0, 0, 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,192,102,164, 21, 1, 0, 0, 0,192,102,164, 21, 1, 0, 0, 0, +144, 39,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 39,163, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 96, 84,165, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 96, 84,165, 29, 1, 0, 0, 0, +218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +112, 85,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 86,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,208,149,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +208, 86,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 85,165, 29, 1, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 48, 88,165, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 92,165, 29, 1, 0, 0, 0, 0, 83,165, 29, 1, 0, 0, 0, +112, 85,165, 29, 1, 0, 0, 0,208, 86,165, 29, 1, 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, 2, 0, 1, 0, 0, 0, 0, 0, 0, 8,155, 25, - 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,151,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,152,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,112,152,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,153,155, 26, 1, 0, 0, 0, 16,151,155, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 89,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208, 90,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 90,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 89,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208,153,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,152,155, 26, 1, 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,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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48,155,155, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 80,162,155, 26, 1, 0, 0, 0,208,149,155, 26, 1, 0, 0, 0, 16,151,155, 26, - 1, 0, 0, 0,208,153,155, 26, 1, 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, 48,236, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,236, 2, 28, 1, 0, 0, 0, +157, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 96,156,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,157,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,192,157,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0, 48, 92,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 88,165, 29, 1, 0, 0, 0,112, 89,165, 29, 1, 0, 0, 0,208, 90,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +144, 93,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, +224, 34,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0,101, 0, 0, 0,100, 4, 0, 0, 1, 1, 36, 6, 0, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0,160,121,165, 29, 1, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0, +112, 94,165, 29, 1, 0, 0, 0, 64,120,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,242,201, 20, 1, 0, 0, 0,176, 4,216, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 94,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208, 95,165, 29, 1, 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,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 6, 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, 36, 6, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 2, 1, 0, 0, 0, 48, 10, 4, 28, 1, 0, 0, 0, 48, 10, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,107,164, 21, 1, 0, 0, 0, 96,173,140, 27, 1, 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,208, 95,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,112,103,165, 29, 1, 0, 0, 0,112, 94,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 87,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 87,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,109, 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,109, 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, 4, 6, 0,160, 0,110, 3,143, 0, 92, 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,159, 0, 0, 0,247, 0, 0, 0,100, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,110, 3, 11, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 2, 1, 0, 0, 0, 48,180, 11, 28, 1, 0, 0, 0, 48,254, 6, 3, 1, 0, 0, 0, + 48, 97,165, 29, 1, 0, 0, 0,224,101,165, 29, 1, 0, 0, 0,128, 28,202, 20, 1, 0, 0, 0, 96, 96,160, 21, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 97,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,192, 98,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,117,217, 2, 1, 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, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192, 98,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,100,165, 29, 1, 0, 0, 0, + 48, 97,165, 29, 1, 0, 0, 0,144, 38, 21, 27, 1, 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, 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, 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, 32,159,155, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0, 32,159,155, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,100,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,224,101,165, 29, 1, 0, 0, 0,192, 98,165, 29, 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,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, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,162,155, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,155,155, 26, 1, 0, 0, 0, 96,156,155, 26, 1, 0, 0, 0,192,157,155, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,163,155, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,200,155, 26, - 1, 0, 0, 0,144,130,155, 26, 1, 0, 0, 0,208,113,155, 26, 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0,112,116,155, 26, - 1, 0, 0, 0,208,116,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, -155, 1, 0, 0, 17, 17, 32, 6,156, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 52, 82, 3, 1, 0, 0, 0, 64,170,155, 26, - 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0,144,164,155, 26, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,192,199, 25, 1, 0, 0, 0,160, 88,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,144,164,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,165,155, 26, 1, 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, 0,196, 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, 6, 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, 32, 6, 26, 0, 32, 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, 0, 0, 0, 0, - 31, 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, 32, 6, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 55, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,240,165,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,168,155, 26, 1, 0, 0, 0,144,164,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,184,195, - 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,129, 1, 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, 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, 4, 6, 0,220, 0,130, 1,203, 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, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 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,220, 0,130, 1, - 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 80,167,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 80,167,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49,194, 25, 1, 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, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,168,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,165,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, - 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,107, 28,209,194, 26, 71,172, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0, -129, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 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, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,130, 1, 51, 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,220, 0, 0, 0, 31, 6, 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, 68, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 53, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,170,155, 26, 1, 0, 0, 0,174, 0, 0, 0, - 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0, 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, 40, 1, 0, 0,192,170,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,172,155, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,172,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,128,173,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,173,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,172,155, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,167, 0, 0, 0, - 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0, 64,170,155, 26, 1, 0, 0, 0,192,170,155, 26, 1, 0, 0, 0,128,173,155, 26, - 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,175,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,177,155, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,177,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,178,155, 26, 1, 0, 0, 0,173, 0, 0, 0, - 1, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,224,174,155, 26, 1, 0, 0, 0,192,175,155, 26, 1, 0, 0, 0, 32,177,155, 26, - 1, 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, + 68, 65, 84, 65, 88, 1, 0, 0,224,101,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,100,165, 29, 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,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 40, 1, 0, 0,224,179,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,181,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,103,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 96,106,165, 29, 1, 0, 0, 0,208, 95,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,127, 0, 0, 0,246, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 12, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 2, 1, 0, 0, 0, 48,186, 10, 28, 1, 0, 0, 0, 48,186, 10, 28, 1, 0, 0, 0, +208,104,165, 29, 1, 0, 0, 0,208,104,165, 29, 1, 0, 0, 0,192,114,160, 21, 1, 0, 0, 0,192, 3,201, 20, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,104,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,118,217, 2, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,181,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,182,155, 26, - 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,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, 40, 1, 0, 0, 96,106,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,120,165, 29, 1, 0, 0, 0, +112,103,165, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, + 35, 6, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,107,165, 29, 1, 0, 0, 0,176,118,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,182,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,181,155, 26, 1, 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,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, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192,107,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,109,165, 29, 1, 0, 0, 0, + 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, 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, 68, 65, 84, 65,240, 0, 0, 0, 0,184,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,195,155, 26, - 1, 0, 0, 0,128,178,155, 26, 1, 0, 0, 0,224,179,155, 26, 1, 0, 0, 0,160,182,155, 26, 1, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,109,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,224,110,165, 29, 1, 0, 0, 0,192,107,165, 29, 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,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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,185,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144,186,155, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,186,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240,187,155, 26, 1, 0, 0, 0, 48,185,155, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,187,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0,144,186,155, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,189,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,176,190,155, 26, 1, 0, 0, 0,240,187,155, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,190,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,189,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,192,155, 26, 1, 0, 0, 0,156, 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, + 68, 65, 84, 65, 88, 1, 0, 0,224,110,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,112,165, 29, 1, 0, 0, 0, + 80,109,165, 29, 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, 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, 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, 64,195,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,199,155, 26, 1, 0, 0, 0, 0,184,155, 26, - 1, 0, 0, 0, 48,185,155, 26, 1, 0, 0, 0,176,190,155, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,160,196,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,198,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0,198,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,196,155, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,199,155, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,195,155, 26, 1, 0, 0, 0,160,196,155, 26, - 1, 0, 0, 0, 0,198,155, 26, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,200,155, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,228,155, 26, 1, 0, 0, 0,176,163,155, 26, 1, 0, 0, 0,144,117,155, 26, - 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,176,115,155, 26, 1, 0, 0, 0, 48,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 9, 9, 72, 2,138, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,112, 45, 82, 3, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0, 64,201,155, 26, - 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,124,199, 25, - 1, 0, 0, 0,128,140,199, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,201,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,160,202,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 18, 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, 71, 2, 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, 72, 2, 26, 0, 72, 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, 57, 5, 0, 0,128, 7, 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, 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 48, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,202,155, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,201,155, 26, 1, 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,116,223, 10, 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, 71, 2, 0, 0, 0, 0, 0, 0, -111, 2, 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, 72, 2,112, 2, 72, 2,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 46, 82, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,204,155, 26, 1, 0, 0, 0,169, 0, 0, 0, - 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,112,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0,114,165, 29, 1, 0, 0, 0,224,110,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 0,114,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,115,165, 29, 1, 0, 0, 0, +112,112,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,115,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 32,117,165, 29, 1, 0, 0, 0, 0,114,165, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 32,117,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,118,165, 29, 1, 0, 0, 0, +144,115,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,118,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,117,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,206,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,208,155, 26, 1, 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,182, 67, 0, 0, 0, 0, 0, 0,208, 65, 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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48,208,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,206,155, 26, 1, 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,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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,120,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,106,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,144,209,155, 26, - 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,192,214,155, 26, 1, 0, 0, 0, 0,204,155, 26, 1, 0, 0, 0,208,206,155, 26, - 1, 0, 0, 0, 48,208,155, 26, 1, 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, +160, 0, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 5,230, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, +224, 34,201, 20, 1, 0, 0, 0, 80,120,201, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,240, 2, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,240, 2, 28, 1, 0, 0, 0,157, 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,127, 19,198, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,184, 38, 31,191, + 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, 35, 44,185, 62,147,180,109,188,122, 73,177, 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, + 48,185, 70,188, 0, 0, 78,180,246,235,132,190,156, 35, 0, 62,130, 17, 20, 63, 0, 0,192,178, 67,108,117,194,185,204,216, 65, +105,156, 5,194,213,247,159,192,235, 62,114, 66, 61,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,180,157,229, 62,184, 38, 31,191, + 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, 35, 44,185, 62,147,180,109,188,122, 73,177, 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, 97, 89,186, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 89,186, 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,188,189,169, 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,192,158,224, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,158,224, 25, - 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0,240,210,155, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,212,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,213,155, 26, - 1, 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,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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,213,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,214,155, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 32,220,155, 26, - 1, 0, 0, 0,144,209,155, 26, 1, 0, 0, 0, 0,212,155, 26, 1, 0, 0, 0, 96,213,155, 26, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,160,121,165, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 0,123,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 96,124,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,124,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,123,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,121,165, 29, 1, 0, 0, 0, 0,123,165, 29, 1, 0, 0, 0, 96,124,165, 29, 1, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 64,127,165, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 36,166, 29, 1, 0, 0, 0,208, 30,165, 29, 1, 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, 80,128,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,144,133,165, 29, 1, 0, 0, 0, + 16,141,165, 29, 1, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 48, 21, 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, 32, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,176,128,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,129,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, +176,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +112,129,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +144,130,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, + 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +240,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,132,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,180, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, +176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +112,132,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 1,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,100, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,133,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,133,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,133,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,134,165, 29, 1, 0, 0, 0, +144,133,165, 29, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,134,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,134,165, 29, 1, 0, 0, 0, +240,133,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,134,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,135,165, 29, 1, 0, 0, 0, + 80,134,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,135,165, 29, 1, 0, 0, 0, +176,134,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,135,165, 29, 1, 0, 0, 0, + 16,135,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,136,165, 29, 1, 0, 0, 0, +112,135,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,136,165, 29, 1, 0, 0, 0, +208,135,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,136,165, 29, 1, 0, 0, 0, + 48,136,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,137,165, 29, 1, 0, 0, 0, +144,136,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,137,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,137,165, 29, 1, 0, 0, 0, +240,136,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,137,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,138,165, 29, 1, 0, 0, 0, + 80,137,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,138,165, 29, 1, 0, 0, 0, +176,137,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,138,165, 29, 1, 0, 0, 0, + 16,138,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,139,165, 29, 1, 0, 0, 0, +112,138,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,139,165, 29, 1, 0, 0, 0, +208,138,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,139,165, 29, 1, 0, 0, 0, + 48,139,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,140,165, 29, 1, 0, 0, 0, +144,139,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,140,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,140,165, 29, 1, 0, 0, 0, +240,139,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,140,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,141,165, 29, 1, 0, 0, 0, + 80,140,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,141,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,140,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,145,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, + 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, + 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,128, 35,166, 29, 1, 0, 0, 0, +128, 35,166, 29, 1, 0, 0, 0, 80,142,165, 29, 1, 0, 0, 0,176,143,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 14,201, 20, 1, 0, 0, 0,240,153,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80,142,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,143,165, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, +101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,143,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,142,165, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, +127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, + 16,145,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,175,165, 29, 1, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0, + 80,131,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 4, 4, 96, 1,180, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, 80,164,165, 29, 1, 0, 0, 0,160,173,165, 29, 1, 0, 0, 0, +240,145,165, 29, 1, 0, 0, 0, 80,147,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 49,161, 29, 1, 0, 0, 0,112,188,142, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,145,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 80,147,165, 29, 1, 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,176, 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, 95, 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, 96, 1, 31, 0, 96, 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, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0,149, 1, 0, 0,179, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,147,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,145,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, + 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,193,195, 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, + 18, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, + 18, 0, 0, 0,148, 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, 96, 1,149, 1, 79, 1,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,203,200, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,149, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,148,165, 29, 1, 0, 0, 0,192,162,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,148,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 64,150,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 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, - 40, 1, 0, 0, 0,216,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,217,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 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, 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, 96,217,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,218,155, 26, 1, 0, 0, 0, 0,216,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 64,150,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,151,165, 29, 1, 0, 0, 0, +176,148,165, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 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, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,192,218,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,217,155, 26, - 1, 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,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, 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,135,255, 78, 1, 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, 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, 32,220,155, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,227,155, 26, 1, 0, 0, 0,192,214,155, 26, - 1, 0, 0, 0, 0,216,155, 26, 1, 0, 0, 0,192,218,155, 26, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,151,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 96,153,165, 29, 1, 0, 0, 0, 64,150,165, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 78, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,221,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,222,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, 88, 1, 0, 0, 96,153,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,154,165, 29, 1, 0, 0, 0, +208,151,165, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 78, 1,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, 68, 65, 84, 65, 40, 1, 0, 0,176,222,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,221,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,154,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,128,156,165, 29, 1, 0, 0, 0, 96,153,165, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 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, 58,254, 78, 1, 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, 16,224,155, 26, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,224,155, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 32, 1, 0, 0, 64,227,155, 26, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,155, 26, 1, 0, 0, 0, 80,221,155, 26, - 1, 0, 0, 0,176,222,155, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,228,155, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0, 96,200,155, 26, 1, 0, 0, 0, 80,118,155, 26, 1, 0, 0, 0,176,118,155, 26, - 1, 0, 0, 0,240,117,155, 26, 1, 0, 0, 0,144,117,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, - 55, 5, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 1, 1,251, 3,138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,238, 81, 3, - 1, 0, 0, 0,240,248,155, 26, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,128,229,155, 26, 1, 0, 0, 0, 96,244,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,140,228, 28, 1, 0, 0, 0,192,207,198, 25, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,229,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,230,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,192,126, 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,250, 3, 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, 3, 26, 0,251, 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, 61, 1, 0, 0, 55, 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,251, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,246, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,230,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,232,155, 26, - 1, 0, 0, 0,128,229,155, 26, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0,183, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,112, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,243, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,128,156,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,158,165, 29, 1, 0, 0, 0, +240,154,165, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,232,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,233,155, 26, - 1, 0, 0, 0,224,230,155, 26, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0,183, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,245, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,253, 78, 1,102, 0, + 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,233,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,244,155, 26, - 1, 0, 0, 0, 64,232,155, 26, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0,183, 1, 0, 0, 38, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,240, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 0,190,158, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,235,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,236,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,241, 81, 3, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,158,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,160,159,165, 29, 1, 0, 0, 0,128,156,165, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,236,155, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 0,235,155, 26, 1, 0, 0, 0, 64,242, 81, 3, - 1, 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, 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, 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, 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, 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, 59,253, 78, 1,105, 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,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 6, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,238,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,239,155, 26, - 1, 0, 0, 0,144,236,155, 26, 1, 0, 0, 0,176,203,199, 25, 1, 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, 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, + 68, 65, 84, 65, 88, 1, 0, 0,160,159,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,161,165, 29, 1, 0, 0, 0, + 16,158,165, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 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, 35,253, 78, 1, 0, 0, + 0, 0, 0, 0, 4, 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,153,252, -163, 0, 59, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,161,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,192,162,165, 29, 1, 0, 0, 0,160,159,165, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,239,155, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0, 32,238,155, 26, 1, 0, 0, 0, 16,206,199, 25, - 1, 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, 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, 11,253, 78, 1, 0, 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,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,241,155, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,242,155, 26, - 1, 0, 0, 0,176,239,155, 26, 1, 0, 0, 0,144,215,199, 25, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,242,155, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,190,158, 26, 1, 0, 0, 0, 64,241,155, 26, 1, 0, 0, 0,240,217,199, 25, - 1, 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, 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, 7, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192,162,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,161,165, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 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,243,252, 78, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,190,158, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,242,155, 26, 1, 0, 0, 0,112,208,199, 25, 1, 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, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0, 80,164,165, 29, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0,176,169,165, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,244,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,233,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 33,201, 20, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,165,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,166,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,183, 1, 0, 0, - 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,239, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,245,155, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,245,155, 26, - 1, 0, 0, 0,156, 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, - 60, 31,129, 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,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 60, 31,129, 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, -134,198,125, 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, - 60, 31,129, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,166,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 80,168,165, 29, 1, 0, 0, 0,144,165,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,221, 57, 80, 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,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, 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, 68, 65, 84, 65, 32, 1, 0, 0,240,248,155, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 16,253,155, 26, - 1, 0, 0, 0, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 81,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 80,250,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,251,155, 26, 1, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,168,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,166,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 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,176,251,155, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,250,155, 26, - 1, 0, 0, 0, 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, 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, 68, 65, 84, 65,240, 0, 0, 0,176,169,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, +160,173,165, 29, 1, 0, 0, 0, 80,164,165, 29, 1, 0, 0, 0,144,165,165, 29, 1, 0, 0, 0, 80,168,165, 29, 1, 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, - 32, 1, 0, 0, 16,253,155, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,144, 2,156, 26, 1, 0, 0, 0,240,248,155, 26, - 1, 0, 0, 0, 80,250,155, 26, 1, 0, 0, 0,176,251,155, 26, 1, 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, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,170,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 64,172,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,172,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,170,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,112,254,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,255,155, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208,255,155, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 1,156, 26, 1, 0, 0, 0,112,254,155, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,244, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,244, 2, 28, 1, 0, 0, 0, +157, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48, 1,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,255,155, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,144, 2,156, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0, 16,253,155, 26, 1, 0, 0, 0,112,254,155, 26, - 1, 0, 0, 0, 48, 1,156, 26, 1, 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, + 68, 65, 84, 65, 32, 1, 0, 0,160,173,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,169,165, 29, 1, 0, 0, 0,224,170,165, 29, 1, 0, 0, 0, 64,172,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 0,175,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,208,165, 29, 1, 0, 0, 0, 16,145,165, 29, 1, 0, 0, 0, + 80,128,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 17, 17, 32, 6,180, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,182,217, 2, 1, 0, 0, 0,144,181,165, 29, 1, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0, +224,175,165, 29, 1, 0, 0, 0, 48,180,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 67,200, 20, 1, 0, 0, 0,224, 61,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,175,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 64,177,165, 29, 1, 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, 0,196, 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, 6, 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, 32, 6, 26, 0, 32, 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, 0, 0, 0, 0, 31, 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, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,184,217, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,192, 3,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 5,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,177,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48,180,165, 29, 1, 0, 0, 0,224,175,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0, 0,196,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 18, 0, 0, 0,153, 1, 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, + 18, 0, 0, 0,153, 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,220, 0,154, 1,203, 0,136, 1, 0, 0, 0, 0, 0, 0, 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,179, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,154, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,183,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,178,165, 29, 1, 0, 0, 0,160,178,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,178,165, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 19, 27, 1, 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, 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, 32, 5,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 3,156, 26, - 1, 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,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, 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, -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, 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, 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, 68, 65, 84, 65, -200, 0, 0, 0,128, 6,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 2,156, 26, - 1, 0, 0, 0,192, 3,156, 26, 1, 0, 0, 0, 32, 5,156, 26, 1, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48,180,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,177,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67,228, 46, 44,195,220,133,181, 68, +162,102,238,194,168,153,179, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,153, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,153, 1, 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, 68, 5, +154, 1, 51, 5,136, 1, 0, 0, 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, 31, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 5,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,183,217, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0,128, 7,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,228,155, 26, - 1, 0, 0, 0, 16,116,155, 26, 1, 0, 0, 0, 80,115,155, 26, 1, 0, 0, 0,176,118,155, 26, 1, 0, 0, 0, 80,118,155, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,157, 1, 0, 0, 38, 4, 0, 0, 3, 3, 60, 1, -138, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,233, 81, 3, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0, 48, 37,156, 26, - 1, 0, 0, 0, 96, 8,156, 26, 1, 0, 0, 0,192, 9,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,173,199, 25, 1, 0, 0, 0,144,144,197, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 8,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 9,156, 26, 1, 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,158, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 68, 65, 84, 65, 72, 0, 0, 0,144,181,165, 29, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 48,186,165, 29, 1, 0, 0, 0, + 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, 40, 1, 0, 0, 16,182,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,183,165, 29, 1, 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, 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, + 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, 0, 0, 0, 0, - 59, 1, 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, 60, 1, 26, 0, 60, 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, 0, 0, 0, 0, 59, 1, 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, 60, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,235, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,192, 9,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 8,156, 26, 1, 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,149, 67, 0,128, 23,196, 0, 0, 0, 0, 43, 1, 0, 0, - 60, 1, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 42, 1, 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,128, 63, - 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,112, 2, 43, 1, 94, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,183, 1, 0, 0, - 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,112, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,234, 81, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,112,183,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,184,165, 29, 1, 0, 0, 0, + 16,182,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 32, 11,156, 26, - 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 41,159, 26, - 1, 0, 0, 0, 64, 41,159, 26, 1, 0, 0, 0,160,221, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,221, 89, 3, - 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0,128, 12,156, 26, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, - 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 13,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 14,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0,208,184,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,183,165, 29, 1, 0, 0, 0, 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, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 14,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 16,156, 26, - 1, 0, 0, 0,144, 13,156, 26, 1, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 16,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 17,156, 26, - 1, 0, 0, 0,240, 14,156, 26, 1, 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, 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, + 68, 65, 84, 65,168, 0, 0, 0, 48,186,165, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,208,189,165, 29, 1, 0, 0, 0, +144,181,165, 29, 1, 0, 0, 0, 16,182,165, 29, 1, 0, 0, 0,208,184,165, 29, 1, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,187,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,188,165, 29, 1, 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, 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, + 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 17,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 19,156, 26, - 1, 0, 0, 0, 80, 16,156, 26, 1, 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, 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, 40, 1, 0, 0,112,188,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,187,165, 29, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 19,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176, 17,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,189,165, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 80,195,165, 29, 1, 0, 0, 0, + 48,186,165, 29, 1, 0, 0, 0, 16,187,165, 29, 1, 0, 0, 0,112,188,165, 29, 1, 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,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, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 20,156, 26, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 20,156, 26, 1, 0, 0, 0,156, 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, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, + 48,191,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,192,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +144,192,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,193,165, 29, 1, 0, 0, 0, 48,191,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,160, 23,156, 26, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 11,156, 26, 1, 0, 0, 0,144, 13,156, 26, - 1, 0, 0, 0, 16, 19,156, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 0, 25,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96, 26,156, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 26,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +240,193,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,192,165, 29, 1, 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,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, 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, 68, 65, 84, 65, 32, 1, 0, 0,192, 27,156, 26, 1, 0, 0, 0,173, 0, 0, 0, - 1, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,160, 23,156, 26, 1, 0, 0, 0, 0, 25,156, 26, 1, 0, 0, 0, 96, 26,156, 26, - 1, 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, 68, 65, 84, 65,240, 0, 0, 0, + 80,195,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,203,165, 29, 1, 0, 0, 0,208,189,165, 29, 1, 0, 0, 0, + 48,191,165, 29, 1, 0, 0, 0,240,193,165, 29, 1, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 40, 1, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 30,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 30,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 31,156, 26, - 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,128,196,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,197,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,197,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,199,165, 29, 1, 0, 0, 0, +128,196,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,199,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,200,165, 29, 1, 0, 0, 0, +224,197,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 31,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 30,156, 26, 1, 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,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, 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, + 68, 65, 84, 65, 40, 1, 0, 0,160,200,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,202,165, 29, 1, 0, 0, 0, + 64,199,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 33,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 37,156, 26, - 1, 0, 0, 0,192, 27,156, 26, 1, 0, 0, 0, 32, 29,156, 26, 1, 0, 0, 0,224, 31,156, 26, 1, 0, 0, 0, 8, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 0,202,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,200,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,248, 2, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,248, 2, 28, 1, 0, 0, 0,157, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 34,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,208, 35,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 35,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 34,156, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48, 37,156, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33,156, 26, 1, 0, 0, 0,112, 34,156, 26, 1, 0, 0, 0,208, 35,156, 26, - 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,176, 38,156, 26, 1, 0, 0, 0,190, 0, 0, 0, - 1, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,192,112,155, 26, 1, 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,192, 39,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 45,156, 26, - 1, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,192, 39,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 32, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 40,156, 26, - 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,128, 40,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 41,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 42,156, 26, - 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 42,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 42,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,168, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 43,156, 26, - 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,128, 43,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,168, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 44,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5, 16, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 16, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 45,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 45,156, 26, - 1, 0, 0, 0, 0, 45,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 46,156, 26, - 1, 0, 0, 0, 96, 45,156, 26, 1, 0, 0, 0,128, 40,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 46,156, 26, - 1, 0, 0, 0,192, 45,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 46,156, 26, - 1, 0, 0, 0, 32, 46,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 47,156, 26, - 1, 0, 0, 0,128, 46,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 47,156, 26, - 1, 0, 0, 0,224, 46,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 48,156, 26, - 1, 0, 0, 0, 64, 47,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 48,156, 26, - 1, 0, 0, 0,160, 47,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 48,156, 26, - 1, 0, 0, 0, 0, 48,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 49,156, 26, - 1, 0, 0, 0, 96, 48,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 49,156, 26, - 1, 0, 0, 0,192, 48,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 49,156, 26, - 1, 0, 0, 0, 32, 49,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 50,156, 26, - 1, 0, 0, 0,128, 49,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 50,156, 26, - 1, 0, 0, 0,224, 49,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 51,156, 26, - 1, 0, 0, 0, 64, 50,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 51,156, 26, - 1, 0, 0, 0,160, 50,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 51,156, 26, - 1, 0, 0, 0, 0, 51,156, 26, 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 52,156, 26, - 1, 0, 0, 0, 96, 51,156, 26, 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 52,156, 26, - 1, 0, 0, 0,192, 51,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 52,156, 26, - 1, 0, 0, 0, 32, 52,156, 26, 1, 0, 0, 0,224, 40,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 52,156, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 52,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 53,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 56,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 32, 40,156, 26, 1, 0, 0, 0,128, 40,156, 26, - 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, - 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,214,156, 26, - 1, 0, 0, 0,224,214,156, 26, 1, 0, 0, 0, 32, 54,156, 26, 1, 0, 0, 0,128, 55,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 54,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 55,156, 26, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, - 40, 1, 0, 0,128, 55,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 54,156, 26, - 1, 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, 6, 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, 6, 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, 7, 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, - 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,203,165, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0, 80,195,165, 29, 1, 0, 0, 0,128,196,165, 29, 1, 0, 0, 0, + 0,202,165, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 56,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0, 64, 53,156, 26, - 1, 0, 0, 0, 96, 42,156, 26, 1, 0, 0, 0, 64, 44,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0,224, 40,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 4, 4,144, 1, - 16, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0,160, 88,156, 26, - 1, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 32, 59,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,192, 57,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 59,156, 26, 1, 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,200, 67, 0, 0, 0, 0, 0, 0,248, 65, 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, -143, 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,144, 1, 31, 0,144, 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, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0,241, 2, 0, 0, - 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,204,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 32,206,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 32, 59,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 57,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0,191, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,191, 67,255,191, 55,196, 0, 0, 0, 0,127, 1, 0, 0, -144, 1, 0, 0, 18, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -126, 1, 0, 0, 18, 0, 0, 0,240, 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, 4, 6, 0,144, 1,241, 2,127, 1,223, 2, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, -240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,241, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,206,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,204,165, 29, 1, 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,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, 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,128, 60,156, 26, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 60,156, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 62,156, 26, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65,200, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,203,165, 29, 1, 0, 0, 0,192,204,165, 29, 1, 0, 0, 0, 32,206,165, 29, 1, 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, 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,126, 1, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,208,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +192,230,165, 29, 1, 0, 0, 0, 0,175,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, + 48,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0, +181, 1, 0, 0, 99, 4, 0, 0, 9, 9, 72, 2,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,175,217, 2, 1, 0, 0, 0, + 48,252, 2, 28, 1, 0, 0, 0, 96,229,165, 29, 1, 0, 0, 0, 96,209,165, 29, 1, 0, 0, 0,192,210,165, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,145,162, 21, 1, 0, 0, 0, 48, 10,201, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 96,209,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,210,165, 29, 1, 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, 18, 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, 71, 2, 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, 72, 2, + 26, 0, 72, 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, + 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,177,217, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 62,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 63,156, 26, - 1, 0, 0, 0,128, 60,156, 26, 1, 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, 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, -126, 1, 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, + 68, 65, 84, 65, 40, 1, 0, 0,192,210,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,209,165, 29, 1, 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,120, 27, 19, 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, 71, 2, 0, 0, 0, 0, 0, 0,148, 2, 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, 72, 2, +149, 2, 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 5, 0, 0,128, 7, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,176,217, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 63,156, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 65,156, 26, 1, 0, 0, 0, 16, 62,156, 26, 1, 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, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 68, 65, 84, 65,144, 2, 0, 0, 48,252, 2, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,224,214,165, 29, 1, 0, 0, 0, + 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, 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, 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,111,255,126, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 65,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 66,156, 26, - 1, 0, 0, 0,160, 63,156, 26, 1, 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, 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,165,254, -126, 1,178, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 66,156, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 68,156, 26, 1, 0, 0, 0, 48, 65,156, 26, 1, 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, 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, 83,254,126, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 68,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 69,156, 26, - 1, 0, 0, 0,192, 66,156, 26, 1, 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, 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,213,253, -126, 1,102, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 69,156, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 71,156, 26, 1, 0, 0, 0, 80, 68,156, 26, 1, 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, 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, 84,253,126, 1,105, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 71,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 73,156, 26, - 1, 0, 0, 0,224, 69,156, 26, 1, 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, 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, 60,253, -126, 1, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 73,156, 26, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 74,156, 26, 1, 0, 0, 0,112, 71,156, 26, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,212,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +128,213,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253,126, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,213,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,212,165, 29, 1, 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,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, 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, 88, 1, 0, 0,144, 74,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 73,156, 26, 1, 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, 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, 12,253, -126, 1, 0, 0, 20, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,214,165, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, + 16,220,165, 29, 1, 0, 0, 0, 48,252, 2, 28, 1, 0, 0, 0, 32,212,165, 29, 1, 0, 0, 0,128,213,165, 29, 1, 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, 68, 65, 84, 65, 0, 1, 0, 0, 32, 76,156, 26, - 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0, 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, +224, 54,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 96, 77,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192, 78,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,224, 54,160, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 64,216,165, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 64,216,165, 29, 1, 0, 0, 0, +218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80,217,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,218,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 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,192, 78,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32, 80,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +176,218,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,217,165, 29, 1, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 16,220,165, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,112,225,165, 29, 1, 0, 0, 0,224,214,165, 29, 1, 0, 0, 0, + 80,217,165, 29, 1, 0, 0, 0,176,218,165, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 80,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 78,156, 26, 1, 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, -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, 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, 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, 40, 1, 0, 0, 80,221,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,176,222,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,240, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,163, 0, 0, 0, - 1, 0, 0, 0,160, 88,156, 26, 1, 0, 0, 0, 32, 76,156, 26, 1, 0, 0, 0, 96, 77,156, 26, 1, 0, 0, 0, 32, 80,156, 26, - 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,222,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 16,224,165, 29, 1, 0, 0, 0, 80,221,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 82,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 84,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 16, 84,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 82,156, 26, 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, 40, 1, 0, 0, 16,224,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,222,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,225,165, 29, 1, 0, 0, 0, +164, 0, 0, 0, 1, 0, 0, 0, 96,229,165, 29, 1, 0, 0, 0, 16,220,165, 29, 1, 0, 0, 0, 80,221,165, 29, 1, 0, 0, 0, + 16,224,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 85,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 85,156, 26, - 1, 0, 0, 0,156, 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, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +160,226,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,228,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 0,228,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,226,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 88,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 81,156, 26, 1, 0, 0, 0,176, 82,156, 26, 1, 0, 0, 0, 16, 84,156, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,224, 56,156, 26, - 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 96, 42,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,255, 2, -168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0,144,124,156, 26, - 1, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 64, 92,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,224, 90,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 92,156, 26, 1, 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,192, 63, 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, 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, -254, 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,255, 2, 26, 0,255, 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,241, 2, 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,255, 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, 48, 0, 3, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, + 48, 0, 3, 28, 1, 0, 0, 0,157, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 92,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 90,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,199, 67,238, 2, 0, 0, -255, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -237, 2, 0, 0, 0, 0, 0, 0,141, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,142, 1,238, 2,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,241, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0, -167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,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,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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96,229,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,225,165, 29, 1, 0, 0, 0,160,226,165, 29, 1, 0, 0, 0, 0,228,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,192,230,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, +128,208,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, + 16,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, + 1, 1,251, 3,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0,112,249,165, 29, 1, 0, 0, 0, + 0, 7,166, 29, 1, 0, 0, 0,160,231,165, 29, 1, 0, 0, 0, 16,248,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 44,200, 20, 1, 0, 0, 0, 48, 7,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +160,231,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,233,165, 29, 1, 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,126, 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,250, 3, 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, 3, 26, 0,251, 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, 61, 1, 0, 0, 55, 5, 0, 0, +181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0,233,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,234,165, 29, 1, 0, 0, 0,160,231,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0, +207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,149, 2, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96,234,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,235,165, 29, 1, 0, 0, 0, 0,233,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0, +207, 1, 0, 0,207, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +192,235,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,248,165, 29, 1, 0, 0, 0, 96,234,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0, +207, 1, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,237,165, 29, 1, 0, 0, 0,128,246,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 32,237,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,238,165, 29, 1, 0, 0, 0, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,160, 93,156, 26, - 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0, 32, 98,156, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,238,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 64,240,165, 29, 1, 0, 0, 0, 32,237,165, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 64,240,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,241,165, 29, 1, 0, 0, 0,176,238,165, 29, 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, 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, - 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, 96, 95,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,241,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 96,243,165, 29, 1, 0, 0, 0, 64,240,165, 29, 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, 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, -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, 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, + 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, 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,192, 96,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,156, 26, 1, 0, 0, 0, 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,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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 96,243,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,244,165, 29, 1, 0, 0, 0,208,241,165, 29, 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, 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, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 32, 98,156, 26, - 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0,160, 93,156, 26, 1, 0, 0, 0, 96, 95,156, 26, - 1, 0, 0, 0,192, 96,156, 26, 1, 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,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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,244,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +128,246,165, 29, 1, 0, 0, 0, 96,243,165, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +128,246,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,244,165, 29, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,248,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,235,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,251, 3,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,112,217, 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, 68, 65, 84, 65, - 40, 1, 0, 0,240,100,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,102,156, 26, 1, 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, 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, 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, + 48, 4, 3, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 4, 3, 28, 1, 0, 0, 0,157, 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,226,201,115, 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, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,201,115, 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, 90,105,134, 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,226,201,115, 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, 68, 65, 84, 65, - 40, 1, 0, 0, 80,102,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,100,156, 26, - 1, 0, 0, 0, 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, 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,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, +221, 57, 80, 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, 68, 65, 84, 65, - 32, 1, 0, 0,176,103,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 32, 98,156, 26, - 1, 0, 0, 0,240,100,156, 26, 1, 0, 0, 0, 80,102,156, 26, 1, 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, - 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 16,105,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,106,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +112,249,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,144,253,165, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,208,250,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48,252,165, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,106,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,107,156, 26, 1, 0, 0, 0, 16,105,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,252,165, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,250,165, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,253,165, 29, 1, 0, 0, 0, +174, 0, 0, 0, 1, 0, 0, 0, 16, 3,166, 29, 1, 0, 0, 0,112,249,165, 29, 1, 0, 0, 0,208,250,165, 29, 1, 0, 0, 0, + 48,252,165, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208,107,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,156, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,240,254,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 80, 0,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 48,109,156, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,176,103,156, 26, 1, 0, 0, 0, 16,105,156, 26, - 1, 0, 0, 0,208,107,156, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 0,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +176, 1,166, 29, 1, 0, 0, 0,240,254,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 96,110,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,111,156, 26, 1, 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,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, 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,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, 0, 0, 0, 0, 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,192,111,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,113,156, 26, 1, 0, 0, 0, 96,110,156, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,113,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,114,156, 26, 1, 0, 0, 0,192,111,156, 26, - 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 1,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 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,128,114,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,115,156, 26, 1, 0, 0, 0, 32,113,156, 26, - 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,224,115,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,114,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 3,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, + 0, 7,166, 29, 1, 0, 0, 0,144,253,165, 29, 1, 0, 0, 0,240,254,165, 29, 1, 0, 0, 0,176, 1,166, 29, 1, 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,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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 4,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,160, 5,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 5,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 0, 7,166, 29, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,166, 29, 1, 0, 0, 0, 64, 4,166, 29, 1, 0, 0, 0, +160, 5,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,230,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, +208,129,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 3, 3, 60, 1,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,106,217, 2, 1, 0, 0, 0,160, 11,166, 29, 1, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0,224, 8,166, 29, 1, 0, 0, 0, + 64, 10,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,200, 20, 1, 0, 0, 0, + 96,111,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 8,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 64, 10,166, 29, 1, 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,158, 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, 59, 1, 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, 60, 1, 26, 0, 60, 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, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,108,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 10,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 8,166, 29, 1, 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,149, 67, 0,192, 32,196, 0, 0, 0, 0, 43, 1, 0, 0, 60, 1, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, + 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 18, 0, 0, 0,148, 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, 18, 0, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 60, 1,149, 2, 43, 1,131, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,107,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 11,166, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, +240, 20,166, 29, 1, 0, 0, 0, 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,192, 57,201, 20, 1, 0, 0, 0,192, 57,201, 20, 1, 0, 0, 0, +224, 70,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 70,161, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 0, 13,166, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 0, 13,166, 29, 1, 0, 0, 0, +218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 16, 14,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 15,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,117,156, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0, 64,117,156, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0, +112, 15,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 16,166, 29, 1, 0, 0, 0, 16, 14,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +208, 16,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 18,166, 29, 1, 0, 0, 0,112, 15,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 48, 18,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 19,166, 29, 1, 0, 0, 0,208, 16,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +144, 19,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 18,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,120,156, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0, 48,109,156, 26, 1, 0, 0, 0, 96,110,156, 26, 1, 0, 0, 0,224,115,156, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 40, 1, 0, 0,208,121,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,123,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,123,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208,121,156, 26, 1, 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, -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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,120, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, + 48,120, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65,200, 0, 0, 0,144,124,156, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,112,120,156, 26, 1, 0, 0, 0,208,121,156, 26, 1, 0, 0, 0, 48,123,156, 26, 1, 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,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, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,156,156, 26, - 1, 0, 0, 0, 0, 90,156, 26, 1, 0, 0, 0,192, 42,156, 26, 1, 0, 0, 0, 64, 41,156, 26, 1, 0, 0, 0, 0, 42,156, 26, - 1, 0, 0, 0, 32, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,169, 1, 0, 0, - 38, 4, 0, 0, 9, 9,240, 5,126, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,129,156, 26, - 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,112,126,156, 26, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112,126,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,127,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, -239, 5, 0, 0,169, 1, 0, 0,194, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,208,127,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,126,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,170, 86,234, 67, 86, 74,131, 68,206,103, 56, 67, - 25, 76,209, 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, 99, 2, 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,100, 2,240, 5, -100, 2, 0, 0, 0, 0, 0, 0, 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,195, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,129,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,192,134,156, 26, 1, 0, 0, 0, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,240, 20,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, + 16, 25,166, 29, 1, 0, 0, 0,160, 11,166, 29, 1, 0, 0, 0, 16, 14,166, 29, 1, 0, 0, 0,144, 19,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 80, 22,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 23,166, 29, 1, 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, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 23,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 22,166, 29, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 25,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144, 30,166, 29, 1, 0, 0, 0, +240, 20,166, 29, 1, 0, 0, 0, 80, 22,166, 29, 1, 0, 0, 0,176, 23,166, 29, 1, 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, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, +112, 26,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 27,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +208, 27,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 29,166, 29, 1, 0, 0, 0,112, 26,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,132,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,133,156, 26, - 1, 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, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 48, 29,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 27,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +144, 30,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0, 16, 25,166, 29, 1, 0, 0, 0, +112, 26,166, 29, 1, 0, 0, 0, 48, 29,166, 29, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192, 31,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 33,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 33,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 31,166, 29, 1, 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,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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,200, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 30,166, 29, 1, 0, 0, 0,192, 31,166, 29, 1, 0, 0, 0, 32, 33,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0, 0, 36,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,188,166, 29, 1, 0, 0, 0, + 64,127,165, 29, 1, 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, + 16, 37,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 80, 42,166, 29, 1, 0, 0, 0, 48, 50,166, 29, 1, 0, 0, 0, +144, 50,166, 29, 1, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 16, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +112, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,112, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, + 16, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +208, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0,112, 37,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +240, 38,166, 29, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, +144, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 80, 39,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +112, 40,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, + 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +208, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 2,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +240, 41,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 64, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 64, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 42,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 42,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 37,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 42,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 43,166, 29, 1, 0, 0, 0, 80, 42,166, 29, 1, 0, 0, 0, +112, 37,166, 29, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 43,166, 29, 1, 0, 0, 0,176, 42,166, 29, 1, 0, 0, 0, +208, 37,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 43,166, 29, 1, 0, 0, 0, 16, 43,166, 29, 1, 0, 0, 0, +144, 38,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 44,166, 29, 1, 0, 0, 0,112, 43,166, 29, 1, 0, 0, 0, +240, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 44,166, 29, 1, 0, 0, 0,208, 43,166, 29, 1, 0, 0, 0, +144, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 44,166, 29, 1, 0, 0, 0, 48, 44,166, 29, 1, 0, 0, 0, + 48, 38,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 45,166, 29, 1, 0, 0, 0,144, 44,166, 29, 1, 0, 0, 0, + 16, 37,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 45,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 45,166, 29, 1, 0, 0, 0,240, 44,166, 29, 1, 0, 0, 0, +144, 38,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 45,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 46,166, 29, 1, 0, 0, 0, 80, 45,166, 29, 1, 0, 0, 0, + 80, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 46,166, 29, 1, 0, 0, 0,176, 45,166, 29, 1, 0, 0, 0, +176, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 46,166, 29, 1, 0, 0, 0, 16, 46,166, 29, 1, 0, 0, 0, + 16, 40,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 47,166, 29, 1, 0, 0, 0,112, 46,166, 29, 1, 0, 0, 0, + 16, 37,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 47,166, 29, 1, 0, 0, 0,208, 46,166, 29, 1, 0, 0, 0, +176, 39,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 47,166, 29, 1, 0, 0, 0, 48, 47,166, 29, 1, 0, 0, 0, + 16, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 48,166, 29, 1, 0, 0, 0,144, 47,166, 29, 1, 0, 0, 0, +112, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 48,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 48,166, 29, 1, 0, 0, 0,240, 47,166, 29, 1, 0, 0, 0, +208, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 48,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 49,166, 29, 1, 0, 0, 0, 80, 48,166, 29, 1, 0, 0, 0, +176, 39,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 49,166, 29, 1, 0, 0, 0,176, 48,166, 29, 1, 0, 0, 0, + 80, 39,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 49,166, 29, 1, 0, 0, 0, 16, 49,166, 29, 1, 0, 0, 0, +240, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 50,166, 29, 1, 0, 0, 0,112, 49,166, 29, 1, 0, 0, 0, + 48, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 50,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 49,166, 29, 1, 0, 0, 0, +144, 41,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +144, 50,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 38,166, 29, 1, 0, 0, 0,112, 37,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,208,187,166, 29, 1, 0, 0, 0,208,187,166, 29, 1, 0, 0, 0, +112, 51,166, 29, 1, 0, 0, 0,208, 52,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,144,140, 27, 1, 0, 0, 0,208,252,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 51,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208, 52,166, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 52,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 51,166, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0,144, 50,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, +144, 41,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 63, 3, 0, 0, 4, 4,144, 1, 64, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,141,217, 2, 1, 0, 0, 0,112, 73,166, 29, 1, 0, 0, 0,192, 82,166, 29, 1, 0, 0, 0, 16, 55,166, 29, 1, 0, 0, 0, +112, 56,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,108,141, 27, 1, 0, 0, 0, +192,123,164, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 55,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +112, 56,166, 29, 1, 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,200, 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,143, 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,144, 1, 31, 0,144, 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, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 33, 3, 0, 0, 63, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,143,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 56,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 55,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64, 68,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,127,191, 67,255,191, 67,196, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, 32, 3, 0, 0, + 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, 32, 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, 4, 6, 0,144, 1, 33, 3,127, 1, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,152,162, 21, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 57,166, 29, 1, 0, 0, 0, +224, 71,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208, 57,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 96, 59,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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,126, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 96, 59,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 60,166, 29, 1, 0, 0, 0,208, 57,166, 29, 1, 0, 0, 0, + 32,198, 17, 27, 1, 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, 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,126, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,133,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 60,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +128, 62,166, 29, 1, 0, 0, 0, 96, 59,166, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192,134,156, 26, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 64,140,156, 26, - 1, 0, 0, 0, 48,129,156, 26, 1, 0, 0, 0, 0,132,156, 26, 1, 0, 0, 0, 96,133,156, 26, 1, 0, 0, 0, 16, 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,126, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +128, 62,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 64,166, 29, 1, 0, 0, 0,240, 60,166, 29, 1, 0, 0, 0, + 96,202, 17, 27, 1, 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, 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, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, - 40, 1, 0, 0, 32,136,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,137,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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,140,254,126, 1,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, 68, 65, 84, 65, - 40, 1, 0, 0,128,137,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,138,156, 26, 1, 0, 0, 0, 32,136,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 64,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +160, 65,166, 29, 1, 0, 0, 0,128, 62,166, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, + 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, - 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 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,224,138,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137,156, 26, - 1, 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,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, 58,254,126, 1, 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, -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, 88, 1, 0, 0, +160, 65,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 67,166, 29, 1, 0, 0, 0, 16, 64,166, 29, 1, 0, 0, 0, + 32,207, 17, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -240, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,192,134,156, 26, - 1, 0, 0, 0, 32,136,156, 26, 1, 0, 0, 0,224,138,156, 26, 1, 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,188,253,126, 1,102, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 67,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +192, 68,166, 29, 1, 0, 0, 0,160, 65,166, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, + 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,141,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,142,156, 26, - 1, 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,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, - 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, 59,253,126, 1,105, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,142,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,144,156, 26, - 1, 0, 0, 0,112,141,156, 26, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192, 68,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 70,166, 29, 1, 0, 0, 0, 48, 67,166, 29, 1, 0, 0, 0, + 16,142, 17, 27, 1, 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, 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, 35,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,144,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,145,156, 26, - 1, 0, 0, 0,208,142,156, 26, 1, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 70,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +224, 71,166, 29, 1, 0, 0, 0,192, 68,166, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,145,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,146,156, 26, - 1, 0, 0, 0, 48,144,156, 26, 1, 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, 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, + 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,146,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,145,156, 26, 1, 0, 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,126, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +224, 71,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 70,166, 29, 1, 0, 0, 0, +144,217, 17, 27, 1, 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, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,148,156, 26, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,148,156, 26, 1, 0, 0, 0,156, 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,243,252,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0,112, 73,166, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +208, 78,166, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,128,151,156, 26, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0, 64,140,156, 26, 1, 0, 0, 0,112,141,156, 26, - 1, 0, 0, 0,240,146,156, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,224,152,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 64,154,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 2, 0, 1, 0, 0, 0, 0, 0,160,108,160, 21, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,176, 74,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16, 76,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,154,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,152,156, 26, 1, 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,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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16, 76,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 77,166, 29, 1, 0, 0, 0, +176, 74,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,160,155,156, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,151,156, 26, 1, 0, 0, 0,224,152,156, 26, 1, 0, 0, 0, 64,154,156, 26, - 1, 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, +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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 48,192,156, 26, 1, 0, 0, 0,144,125,156, 26, 1, 0, 0, 0,192, 39,156, 26, 1, 0, 0, 0,192, 42,156, 26, - 1, 0, 0, 0,224, 43,156, 26, 1, 0, 0, 0,128, 43,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 2, 0, 0, 0, 0, 0, 0,167, 1, 0, 0, 18, 18,240, 2,168, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0,224,158,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,157,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,158,156, 26, - 1, 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, 60, 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, 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,240, 2, 26, 0,240, 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, 0, 0, 0, 0,239, 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,240, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,158,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128,157,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, - 1,192, 55, 68, 0, 0, 0, 0, 0, 0,199, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,141, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, - 10, 0,240, 2,142, 1,223, 2,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, 0, 0, 0, 0,239, 2, 0, 0, 26, 0, 0, 0,167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 2,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0, 64,160,156, 26, 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,192,164,156, 26, - 1, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112, 77,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 76,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 78,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,192, 82,166, 29, 1, 0, 0, 0, +112, 73,166, 29, 1, 0, 0, 0,176, 74,166, 29, 1, 0, 0, 0,112, 77,166, 29, 1, 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,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, 68, 65, 84, 65, 40, 1, 0, 0, 0,162,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,163,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 80,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 96, 81,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,163,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 81,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,164,156, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 80,170,156, 26, - 1, 0, 0, 0, 64,160,156, 26, 1, 0, 0, 0, 0,162,156, 26, 1, 0, 0, 0, 96,163,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,124, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,124, 4, 28, 1, 0, 0, 0,157, 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, @@ -5472,1966 +4966,2569 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +192, 82,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 78,166, 29, 1, 0, 0, 0, + 0, 80,166, 29, 1, 0, 0, 0, 96, 81,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,113,166, 29, 1, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, + 48, 41,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,255, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,185,217, 2, 1, 0, 0, 0,192, 87,166, 29, 1, 0, 0, 0,176,112,166, 29, 1, 0, 0, 0, 0, 85,166, 29, 1, 0, 0, 0, + 96, 86,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,148,140, 27, 1, 0, 0, 0, + 16, 25,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 85,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 96, 86,166, 29, 1, 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,192, 63, 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, 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,255, 2, 26, 0,255, 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,241, 2, 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,255, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,187,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 86,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 51, 67, + 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,211, 67,238, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,237, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, + 2, 0, 0, 4, 10, 0,255, 2,166, 1,238, 2,166, 1, 0, 0, 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, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,186,217, 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, 68, 65, 84, 65,136, 1, 0, 0,192, 87,166, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, + 48,128, 4, 28, 1, 0, 0, 0, 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,144, 42,200, 20, 1, 0, 0, 0, +144, 42,200, 20, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,167,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240,168,156, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,168,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,170,156, 26, 1, 0, 0, 0,173, 0, 0, 0, - 1, 0, 0, 0,208,175,156, 26, 1, 0, 0, 0,192,164,156, 26, 1, 0, 0, 0,144,167,156, 26, 1, 0, 0, 0,240,168,156, 26, - 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 89,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +224, 90,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 40, 1, 0, 0,176,171,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,173,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 90,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 89,166, 29, 1, 0, 0, 0, 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, 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, 40, 1, 0, 0, 16,173,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,174,156, 26, - 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,128, 4, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, + 0, 95,166, 29, 1, 0, 0, 0,192, 87,166, 29, 1, 0, 0, 0,128, 89,166, 29, 1, 0, 0, 0,224, 90,166, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,174,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,173,156, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,175,156, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 16,187,156, 26, - 1, 0, 0, 0, 80,170,156, 26, 1, 0, 0, 0,176,171,156, 26, 1, 0, 0, 0,112,174,156, 26, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,177,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96,178,156, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,178,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192,179,156, 26, 1, 0, 0, 0, 0,177,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,179,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 96,178,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,181,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,128,182,156, 26, 1, 0, 0, 0,192,179,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,182,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,181,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,183,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,183,156, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, - 32, 1, 0, 0, 16,187,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,191,156, 26, 1, 0, 0, 0,208,175,156, 26, - 1, 0, 0, 0, 0,177,156, 26, 1, 0, 0, 0,128,182,156, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,112,188,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,189,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 92,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,160, 93,166, 29, 1, 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, 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, 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, -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, 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, 40, 1, 0, 0,160, 93,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 92,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,189,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,188,156, 26, 1, 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,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, 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, 32, 1, 0, 0, 0, 95,166, 29, 1, 0, 0, 0, +174, 0, 0, 0, 1, 0, 0, 0,128,100,166, 29, 1, 0, 0, 0, 48,128, 4, 28, 1, 0, 0, 0, 64, 92,166, 29, 1, 0, 0, 0, +160, 93,166, 29, 1, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,191,156, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,187,156, 26, 1, 0, 0, 0,112,188,156, 26, - 1, 0, 0, 0,208,189,156, 26, 1, 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, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 96, 96,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +192, 97,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,192,156, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,156,156, 26, 1, 0, 0, 0, 64, 44,156, 26, - 1, 0, 0, 0, 0, 42,156, 26, 1, 0, 0, 0,160, 41,156, 26, 1, 0, 0, 0,160, 44,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 38, 4, 0, 0, 3, 3,144, 1, 22, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,195,156, 26, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 16,193,156, 26, - 1, 0, 0, 0,112,194,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,193,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,112,194,156, 26, 1, 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,200, 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,143, 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,144, 1, 26, 0,144, 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,241, 5, 0, 0,128, 7, 0, 0, 17, 3, 0, 0, 42, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 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, 40, 1, 0, 0,192, 97,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 32, 99,166, 29, 1, 0, 0, 0, 96, 96,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,194,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,193,156, 26, 1, 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,191, 67, 0, 0,106,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, -251, 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,144, 1,252, 0,127, 1,234, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 43, 3, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,195,156, 26, 1, 0, 0, 0,166, 0, 0, 0, - 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 99,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 97,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,183,149, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,100,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, +144,108,166, 29, 1, 0, 0, 0, 0, 95,166, 29, 1, 0, 0, 0, 96, 96,166, 29, 1, 0, 0, 0, 32, 99,166, 29, 1, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 80,183,149, 26, 1, 0, 0, 0,218, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,197,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,197,156, 26, - 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 19, 0, 0, 0, - 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 21, 0, 1, 0, - 1, 0, 1, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48, 86, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,240,140,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48,160, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,133,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,132,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 64,198,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,199,156, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,160,199,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,198,156, 26, - 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,201,156, 26, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,208,195,156, 26, - 1, 0, 0, 0, 64,198,156, 26, 1, 0, 0, 0,160,199,156, 26, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,101,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 16,103,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,103,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,112,104,166, 29, 1, 0, 0, 0,176,101,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,104,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208,105,166, 29, 1, 0, 0, 0, 16,103,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,105,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48,107,166, 29, 1, 0, 0, 0,112,104,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,107,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,105,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,132, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,132, 4, 28, 1, 0, 0, 0, +157, 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, 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, 40, 1, 0, 0, 64,202,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,203,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,160,203,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,205,156, 26, 1, 0, 0, 0, 64,202,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,144,108,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,176,112,166, 29, 1, 0, 0, 0, +128,100,166, 29, 1, 0, 0, 0,176,101,166, 29, 1, 0, 0, 0, 48,107,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, +240,109,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,111,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 80,111,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, +176,112,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,108,166, 29, 1, 0, 0, 0, +240,109,166, 29, 1, 0, 0, 0, 80,111,166, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0,205,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,203,156, 26, 1, 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,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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +176,113,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0, + 16, 40,166, 29, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0, 99, 4, 0, 0, 9, 9,240, 5,163, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,175,217, 2, 1, 0, 0, 0, 48,136, 4, 28, 1, 0, 0, 0,192,137,166, 29, 1, 0, 0, 0, +144,114,166, 29, 1, 0, 0, 0,240,115,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,157,140, 27, 1, 0, 0, 0, 32,164,140, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,114,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,240,115,166, 29, 1, 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,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, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0,218, 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,208,177,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,115,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,114,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, + 0, 0, 0, 0, 0,192, 22, 68,168, 86,234, 67, 86, 74,131, 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,239, 5, 0, 0, + 0, 0, 0, 0,136, 2, 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,137, 2,240, 5,137, 2, 0, 0, 0, 0, 0, 0, 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,219, 1, 0, 0, 99, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,137, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,176,217, 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, 68, 65, 84, 65,144, 2, 0, 0, 48,136, 4, 28, 1, 0, 0, 0, +170, 0, 0, 0, 1, 0, 0, 0, 16,120,166, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65,240, 0, 0, 0, 96,206,156, 26, - 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,213,156, 26, 1, 0, 0, 0, 0,201,156, 26, 1, 0, 0, 0, 64,202,156, 26, - 1, 0, 0, 0, 0,205,156, 26, 1, 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, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,144,207,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,208,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,240,208,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,207,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,210,156, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0, 80,210,156, 26, 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 80,117,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,118,166, 29, 1, 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, 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, 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, 0, 0, 0, 0, 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,128,213,156, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,206,156, 26, 1, 0, 0, 0,144,207,156, 26, 1, 0, 0, 0,240,208,156, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96,215,156, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,112, 24,157, 26, - 1, 0, 0, 0,176, 38,156, 26, 1, 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,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0, 48,223,156, 26, - 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,208,249,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,208,216,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,217,156, 26, - 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0,208,216,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,217,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,218,156, 26, - 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 80,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,219,156, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0, 48,217,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,112,219,156, 26, 1, 0, 0, 0,208,216,156, 26, 1, 0, 0, 0,240,217,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,208,219,156, 26, 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0, 48,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,144,220,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,240,220,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0, 16,219,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,221,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,176,221,156, 26, 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 16,219,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0, 16,222,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,176,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,112,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 16,219,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,223,156, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,222,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,208,216,156, 26, - 1, 0, 0, 0, 48,217,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,240, 23,157, 26, 1, 0, 0, 0,112,224,156, 26, 1, 0, 0, 0,208,225,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,224,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,225,156, 26, - 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,225,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,112,224,156, 26, 1, 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, 6, 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, 6, 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, 7, 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, 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,227,156, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,249,156, 26, - 1, 0, 0, 0,144,223,156, 26, 1, 0, 0, 0,112,216,156, 26, 1, 0, 0, 0,240,217,156, 26, 1, 0, 0, 0,176,218,156, 26, - 1, 0, 0, 0, 16,219,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, - 38, 4, 0, 0, 6, 6,196, 3, 39, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,233,156, 26, - 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0, 16,228,156, 26, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,228,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,229,156, 26, 1, 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,113, 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,195, 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,196, 3, 26, 0,196, 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, 0, 0, 0, 0, -195, 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,196, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112,229,156, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,232,156, 26, 1, 0, 0, 0, 16,228,156, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4, 67,254,191,126,196, - 0, 0, 0, 0,133, 0, 0, 0,150, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,132, 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, 4, 6, 0,150, 0, 13, 4,133, 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, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 0, 13, 4, - 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,208,230,156, 26, 1, 0, 0, 0,208,230,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,208,230,156, 26, 1, 0, 0, 0,193, 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, 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,132, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,118,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,117,166, 29, 1, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 16,120,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144,125,166, 29, 1, 0, 0, 0, 48,136, 4, 28, 1, 0, 0, 0, + 80,117,166, 29, 1, 0, 0, 0,176,118,166, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,232,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,229,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 67,154,153, 69,191,205,204,226, 63,102,102,143,191, 51,179, 7, 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, 46, 3, 0, 0, 0, 0, 0, 0, - 13, 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,150, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 3, 13, 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, 68, 65, 84, 65,168, 0, 0, 0,192,233,156, 26, 1, 0, 0, 0,167, 0, 0, 0, - 1, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,234,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0,236,156, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,236,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96,237,156, 26, 1, 0, 0, 0,160,234,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,237,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0,236,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,238,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,240,156, 26, 1, 0, 0, 0, 96,237,156, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,240,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,238,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,241,156, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,128,241,156, 26, 1, 0, 0, 0,156, 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, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,112,121,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,208,122,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,176,244,156, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,208,248,156, 26, 1, 0, 0, 0,192,233,156, 26, - 1, 0, 0, 0,160,234,156, 26, 1, 0, 0, 0, 32,240,156, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,122,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48,124,166, 29, 1, 0, 0, 0,112,121,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 16,246,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,247,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,112,247,156, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,246,156, 26, 1, 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,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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,208,248,156, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,244,156, 26, 1, 0, 0, 0, 16,246,156, 26, - 1, 0, 0, 0,112,247,156, 26, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,124,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,122,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,125,166, 29, 1, 0, 0, 0, +164, 0, 0, 0, 1, 0, 0, 0,160,133,166, 29, 1, 0, 0, 0, 16,120,166, 29, 1, 0, 0, 0,112,121,166, 29, 1, 0, 0, 0, + 48,124,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,249,156, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,227,156, 26, 1, 0, 0, 0, 16,219,156, 26, - 1, 0, 0, 0,176,218,156, 26, 1, 0, 0, 0, 80,218,156, 26, 1, 0, 0, 0,144,217,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 38, 4, 0, 0, 1, 1,188, 3, 39, 4, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,176,250,156, 26, - 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,250,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 16,252,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 89, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,111, 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,187, 3, 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,188, 3, 26, 0,188, 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,197, 3, 0, 0,128, 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,188, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,252,156, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,144, 0,157, 26, 1, 0, 0, 0,176,250,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 96,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, -148, 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, -148, 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, 4, 6, 0,160, 0,149, 3,143, 0,131, 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,197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,149, 3, 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,112,253,156, 26, - 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,253,156, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0,255,156, 26, 1, 0, 0, 0, 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, 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, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +192,126,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,128,166, 29, 1, 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,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, 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,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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32,128,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,129,166, 29, 1, 0, 0, 0,192,126,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +128,129,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,130,166, 29, 1, 0, 0, 0, 32,128,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 0,255,156, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,253,156, 26, - 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,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, 68, 65, 84, 65, 40, 1, 0, 0, +224,130,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,132,166, 29, 1, 0, 0, 0,128,129,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 64,132,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,130,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 0,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,128, 3,157, 26, 1, 0, 0, 0, 16,252,156, 26, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,100, 4, 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,240, 1,157, 26, - 1, 0, 0, 0,240, 1,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 1,157, 26, 1, 0, 0, 0,193, 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, 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, 48,140, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, + 48,140, 4, 28, 1, 0, 0, 0,157, 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, 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, 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, 77,111,118,101, 32,116,111, 32, 76, 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,166,255,144, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 3,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,144, 0,157, 26, - 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -128, 7, 0, 0, 26, 0, 0, 0, 38, 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,224, 4,157, 26, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0,224, 4,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 6,157, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 6,157, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,224, 4,157, 26, 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,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, 68, 65, 84, 65, 32, 1, 0, 0,160,133,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, +192,137,166, 29, 1, 0, 0, 0,144,125,166, 29, 1, 0, 0, 0,192,126,166, 29, 1, 0, 0, 0, 64,132,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0,135,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,136,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 96,136,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,135,166, 29, 1, 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,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, + 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 88, 1, 0, 0, 0, 8,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 9,157, 26, 1, 0, 0, 0,112, 6,157, 26, - 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, 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, + 68, 65, 84, 65,200, 0, 0, 0,192,137,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,133,166, 29, 1, 0, 0, 0, 0,135,166, 29, 1, 0, 0, 0, 96,136,166, 29, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 9,157, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 32, 11,157, 26, 1, 0, 0, 0, 0, 8,157, 26, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0, +176,113,166, 29, 1, 0, 0, 0, 16, 37,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, +208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 18, 18,240, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,185,217, 2, 1, 0, 0, 0, 96,142,166, 29, 1, 0, 0, 0, + 80,167,166, 29, 1, 0, 0, 0,160,139,166, 29, 1, 0, 0, 0, 0,141,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,151,162, 21, 1, 0, 0, 0, 80, 11,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +160,139,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,141,166, 29, 1, 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, 60, 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, 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,239, 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,240, 2, 26, 0,240, 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, 0, 0, 0, 0,239, 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,240, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,187,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0,141,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,139,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, 0,192, 55, 68, 0, 0, 0, 0, 0, 0,211, 67, +223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,240, 2,166, 1,223, 2,166, 1, 0, 0, + 0, 0, 0, 0, 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, 2, 0, 0, + 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,166, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,186,217, 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, 68, 65, 84, 65, - 88, 1, 0, 0, 32, 11,157, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 12,157, 26, 1, 0, 0, 0,144, 9,157, 26, - 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, 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, 68, 65, 84, 65,136, 1, 0, 0, + 96,142,166, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48,144, 4, 28, 1, 0, 0, 0, 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,224,107,160, 21, 1, 0, 0, 0, +240, 71,200, 20, 1, 0, 0, 0,176,104,160, 21, 1, 0, 0, 0,176,104,160, 21, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,176, 12,157, 26, 1, 0, 0, 0,193, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 11,157, 26, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 64, 14,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 3,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32,144,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,145,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 0, 0, -128, 7, 0, 0, 26, 0, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 13, 4, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +128,145,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,144,166, 29, 1, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 15,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0,160, 15,157, 26, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 14, 99,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 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,128, 0, 0, 0,128, 74,215, 76,190, 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, 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, 85,145, 21, 63,206,249,224,190, 48,180, 81,191, -184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 80, 85,147, 62,241,216, 35, 63, 96,133, 24,188, - 0, 0,224, 51,195, 15,188,190,130, 75, 53, 62,218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 15,173,201, 64,182,148,248,192, -203,247,159,192,233, 74, 87, 65,245, 46,190,192, 89,106,234, 64, 45, 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, 85,145, 21, 63,206,249,224,190, 48,180, 81,191, -184,158, 81,191, 34, 85,166, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 67,214,154,188,204,156,122, 63,138, 84,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 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, 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, 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,126, 31,231, 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, 68, 65, 84, 65,144, 2, 0, 0, + 48,144, 4, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,160,149,166, 29, 1, 0, 0, 0, 96,142,166, 29, 1, 0, 0, 0, + 32,144,166, 29, 1, 0, 0, 0,128,145,166, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,208, 18,157, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 40, 1, 0, 0, 48, 20,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 21,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 21,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 20,157, 26, 1, 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, -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240, 22,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,208, 18,157, 26, 1, 0, 0, 0, 48, 20,157, 26, 1, 0, 0, 0,144, 21,157, 26, 1, 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, 1, 0, 0, 0, - 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,112, 24,157, 26, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96,215,156, 26, 1, 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,128, 25,157, 26, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0, 96, 36,157, 26, - 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 66, 25, 4, 1, 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, 68, 65, 84, 65, 32, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,224, 25,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 26,157, 26, - 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,224, 25,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 66, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 26,157, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 4, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 27,157, 26, - 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 39, 4, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 28,157, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 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,128, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 39, 4, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 29,157, 26, - 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0,224, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,248, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 29,157, 26, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 64, 26,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 30,157, 26, 1, 0, 0, 0,224, 25,157, 26, 1, 0, 0, 0, 0, 27,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 30,157, 26, 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 30,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0, 96, 27,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 32, 31,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,128, 31,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 31,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0, 64, 32,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,160, 32,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0, 0, 33,157, 26, 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 96, 33,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,160, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 33,157, 26, 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0,160, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 32, 34,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,128, 34,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0,160, 26,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,224, 34,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,128, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0, 64, 35,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 64, 29,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,160, 35,157, 26, 1, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 36,157, 26, 1, 0, 0, 0,192, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0,224, 28,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,157, 26, 1, 0, 0, 0,224, 25,157, 26, - 1, 0, 0, 0, 64, 26,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 40, 4, 0, 0, 66, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,144,128,157, 26, 1, 0, 0, 0,160, 37,157, 26, 1, 0, 0, 0, 0, 39,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 37,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 39,157, 26, - 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 40, 4, 0, 0, 65, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 39,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 37,157, 26, 1, 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, 6, 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, 6, 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, 7, 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, 0, 0, 0, 0, 66, 4, 0, 0, 66, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 40,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 52,157, 26, - 1, 0, 0, 0,192, 36,157, 26, 1, 0, 0, 0,128, 25,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,160, 29,157, 26, - 1, 0, 0, 0,160, 26,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 91, 0, 0, 0, 15, 15,129, 7, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26, - 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 64, 41,157, 26, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 41,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 42,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 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,129, 7, 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, 68, 65, 84, 65, - 40, 1, 0, 0,160, 42,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41,157, 26, - 1, 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,128, 7, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 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,129, 7, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 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,129, 7, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -200, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,240, 50,157, 26, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 0, 45,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 46,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 46,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,224,146,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,148,166, 29, 1, 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, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 47,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, -248, 2, 0, 0,192, 47,157, 26, 1, 0, 0, 0,156, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,148,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,146,166, 29, 1, 0, 0, 0, 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, + 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, 0, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,160,149,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 32,155,166, 29, 1, 0, 0, 0, + 48,144, 4, 28, 1, 0, 0, 0,224,146,166, 29, 1, 0, 0, 0, 64,148,166, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,240, 50,157, 26, 1, 0, 0, 0,157, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,157, 26, 1, 0, 0, 0, 0, 45,157, 26, 1, 0, 0, 0, 96, 46,157, 26, - 1, 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, 48, 80, 25, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80, 52,157, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 73,157, 26, - 1, 0, 0, 0, 96, 40,157, 26, 1, 0, 0, 0, 32, 28,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0,192, 27,157, 26, - 1, 0, 0, 0,160, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 93, 0, 0, 0, -247, 1, 0, 0, 8, 8,129, 7,155, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 57,157, 26, - 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 48, 53,157, 26, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 53,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 54,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 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,129, 7, 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, 68, 65, 84, 65, - 40, 1, 0, 0,144, 54,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 55,157, 26, 1, 0, 0, 0, 48, 53,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,183,195, - 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,128, 1, 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, 18, 0, 0, 0,128, 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,220, 0,129, 1,203, 0, -111, 1, 0, 0, 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, 6, 0, 0, -128, 7, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,129, 1, - 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, 68, 65, 84, 65, - 40, 1, 0, 0,240, 55,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 54,157, 26, - 1, 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,128, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,128, 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,165, 6,129, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,119, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,129, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 57,157, 26, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 58,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 59,157, 26, - 1, 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,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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 59,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 61,157, 26, - 1, 0, 0, 0,128, 58,157, 26, 1, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 61,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 62,157, 26, - 1, 0, 0, 0,224, 59,157, 26, 1, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 62,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 64,157, 26, - 1, 0, 0, 0, 64, 61,157, 26, 1, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 64,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 62,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, - 0, 0, 0, 0, 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, 65,157, 26, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 65,157, 26, 1, 0, 0, 0,156, 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, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, + 0,151,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,152,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 96,152,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,153,166, 29, 1, 0, 0, 0, 0,151,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,144, 68,157, 26, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0, 80, 57,157, 26, 1, 0, 0, 0,128, 58,157, 26, - 1, 0, 0, 0, 0, 64,157, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,240, 69,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 80, 71,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 71,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 69,157, 26, 1, 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,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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +192,153,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,152,166, 29, 1, 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,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, 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, 68, 65, 84, 65,200, 0, 0, 0,176, 72,157, 26, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 68,157, 26, 1, 0, 0, 0,240, 69,157, 26, 1, 0, 0, 0, 80, 71,157, 26, - 1, 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, 68, 65, 84, 65,240, 0, 0, 0, + 32,155,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 48,163,166, 29, 1, 0, 0, 0,160,149,166, 29, 1, 0, 0, 0, + 0,151,166, 29, 1, 0, 0, 0,192,153,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0,194, 0, 0, 0, - 1, 0, 0, 0, 48,107,157, 26, 1, 0, 0, 0, 80, 52,157, 26, 1, 0, 0, 0,224, 28,157, 26, 1, 0, 0, 0, 0, 27,157, 26, - 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 64, 29,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 3, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 2, 2, 80, 3, 46, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0,144, 74,157, 26, 1, 0, 0, 0,176, 78,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 74,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 75,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 84, 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, 79, 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, 80, 3, 26, 0, 80, 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, 0, 0, 0, 0, 79, 3, 0, 0,249, 1, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 75,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 77,157, 26, - 1, 0, 0, 0,144, 74,157, 26, 1, 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,128, 0,196, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 19, 2, 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, 19, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,217, 0, 20, 2,200, 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,216, 0, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,217, 0, 20, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,156,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,157,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 77,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 78,157, 26, - 1, 0, 0, 0,240, 75,157, 26, 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, 40, 1, 0, 0,176,157,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,159,166, 29, 1, 0, 0, 0, + 80,156,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,159,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,160,166, 29, 1, 0, 0, 0, +176,157,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 79, 3, 0, 0, 19, 2, 0, 0, 38, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112,160,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,161,166, 29, 1, 0, 0, 0, + 16,159,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 78,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 77,157, 26, 1, 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, 19, 2, 0, 0, 18, 0, 0, 0, -118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 19, 2, 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,119, 2, 20, 2, 0, 0, 0, 0, 0, 0, 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, 79, 3, 0, 0, 19, 2, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,119, 2, 20, 2, 0, 0, 0, 0, 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,208,161,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,160,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,157, 26, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0,192, 85,157, 26, - 1, 0, 0, 0, 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, +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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,148, 4, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,148, 4, 28, 1, 0, 0, 0,157, 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, 64, 81,157, 26, 1, 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, 32, 0, 0, 0, 64, 81,157, 26, - 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 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,160, 81,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 83,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 83,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96, 84,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 84,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,157, 26, 1, 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,128, 4,196, 0, 0, 64,193,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 21, 1, 0, 0, - 1, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0, 16, 80,157, 26, 1, 0, 0, 0,160, 81,157, 26, 1, 0, 0, 0, 96, 84,157, 26, - 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48,163,166, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 80,167,166, 29, 1, 0, 0, 0, 32,155,166, 29, 1, 0, 0, 0, 80,156,166, 29, 1, 0, 0, 0, +208,161,166, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,144,164,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +240,165,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 66, 25, 4, - 1, 0, 0, 0, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96, 88,157, 26, 1, 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,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, 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, 40, 1, 0, 0,240,165,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,164,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 88,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192, 89,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0, 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, 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,200, 0, 0, 0, 80,167,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,163,166, 29, 1, 0, 0, 0,144,164,166, 29, 1, 0, 0, 0,240,165,166, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 89,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 88,157, 26, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 32, 91,157, 26, 1, 0, 0, 0,167, 0, 0, 0, - 1, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,192, 85,157, 26, 1, 0, 0, 0, 0, 87,157, 26, 1, 0, 0, 0,192, 89,157, 26, - 1, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, +240, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, + 65, 3, 0, 0, 99, 4, 0, 0, 3, 3,144, 1, 35, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,217, 2, 1, 0, 0, 0, +240,171,166, 29, 1, 0, 0, 0,112,186,166, 29, 1, 0, 0, 0, 48,169,166, 29, 1, 0, 0, 0,144,170,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,151,162, 21, 1, 0, 0, 0,176,251,201, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48,169,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,170,166, 29, 1, 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,200, 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,143, 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,144, 1, + 26, 0,144, 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, +241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,108,217, 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,128, 63, 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, 0, 92,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 96, 93,157, 26, 1, 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, 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, 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, + 68, 65, 84, 65, 40, 1, 0, 0,144,170,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,169,166, 29, 1, 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,191, 67, + 0, 0,119,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, 8, 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,144, 1, + 9, 1,127, 1,247, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 91, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,107,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 93,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,192, 94,157, 26, 1, 0, 0, 0, 0, 92,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 94,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 96, 93,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 96,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,128, 97,157, 26, 1, 0, 0, 0,192, 94,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 97,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,240,171,166, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 32,177,166, 29, 1, 0, 0, 0, + 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 98,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224, 98,157, 26, 1, 0, 0, 0,156, 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,112,195,200, 20, 1, 0, 0, 0,112,195,200, 20, 1, 0, 0, 0,112, 61,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,102,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,106,157, 26, 1, 0, 0, 0, 32, 91,157, 26, - 1, 0, 0, 0, 0, 92,157, 26, 1, 0, 0, 0,128, 97,157, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,112, 61,160, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 80,173,166, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 80,173,166, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,174,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,192,175,166, 29, 1, 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,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, 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, 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, 40, 1, 0, 0,112,103,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,104,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,175,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,174,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208,104,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,103,157, 26, 1, 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,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, 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, 68, 65, 84, 65, 0, 1, 0, 0, 32,177,166, 29, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0,128,182,166, 29, 1, 0, 0, 0,240,171,166, 29, 1, 0, 0, 0, 96,174,166, 29, 1, 0, 0, 0, +192,175,166, 29, 1, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,106,157, 26, - 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,102,157, 26, 1, 0, 0, 0,112,103,157, 26, - 1, 0, 0, 0,208,104,157, 26, 1, 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, 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, 40, 1, 0, 0, 96,178,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +192,179,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,107,157, 26, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 73,157, 26, 1, 0, 0, 0, 64, 29,157, 26, - 1, 0, 0, 0,128, 28,157, 26, 1, 0, 0, 0, 96, 27,157, 26, 1, 0, 0, 0,192, 27,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 8, 8, 48, 4, 46, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0, 16,108,157, 26, - 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,108,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,112,109,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, 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, 55, 4, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, 0,224,156, 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, 56, 4, 24, 0, 56, 4, 24, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0,249, 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, 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, 40, 1, 0, 0,192,179,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 32,181,166, 29, 1, 0, 0, 0, 96,178,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,109,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,208,110,157, 26, 1, 0, 0, 0, 16,108,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 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, 40, 1, 0, 0, 32,181,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,179,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,110,157, 26, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,109,157, 26, 1, 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, - 45, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0, - 45, 2, 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, 48, 4, 46, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0,249, 1, 0, 0, 38, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 46, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,182,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, +112,186,166, 29, 1, 0, 0, 0, 32,177,166, 29, 1, 0, 0, 0, 96,178,166, 29, 1, 0, 0, 0, 32,181,166, 29, 1, 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, 68, 65, 84, 65,240, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0,163, 0, 0, 0, - 1, 0, 0, 0,112,123,157, 26, 1, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,183,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 16,185,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,113,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,114,157, 26, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,192,114,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,116,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 32,116,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0,192,114,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,128,117,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,118,157, 26, 1, 0, 0, 0, 32,116,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,224,118,157, 26, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,120,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64,120,157, 26, - 1, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,185,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,183,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,112,123,157, 26, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,144,127,157, 26, - 1, 0, 0, 0, 48,112,157, 26, 1, 0, 0, 0, 96,113,157, 26, 1, 0, 0, 0,224,118,157, 26, 1, 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, 48, 80, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 40, 1, 0, 0,208,124,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,126,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 48,152, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,152, 4, 28, 1, 0, 0, 0, +157, 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, 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, 48,126,157, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,124,157, 26, - 1, 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,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,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, -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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -200, 0, 0, 0,144,127,157, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,123,157, 26, - 1, 0, 0, 0,208,124,157, 26, 1, 0, 0, 0, 48,126,157, 26, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, - 0, 6, 0, 0, 48, 66, 25, 4, 1, 0, 0, 0,154, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,144,137,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,186,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128,182,166, 29, 1, 0, 0, 0,176,183,166, 29, 1, 0, 0, 0, 16,185,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, + 80,188,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0,247,166, 29, 1, 0, 0, 0, 0, 36,166, 29, 1, 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, 96,189,166, 29, 1, 0, 0, 0, + 0,192,166, 29, 1, 0, 0, 0, 96,192,166, 29, 1, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0, +144,219,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, +192,189,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +224,190,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, +128,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 64,191,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +196, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96,192,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,192,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192,192,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,193,166, 29, 1, 0, 0, 0, + 96,192,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,193,166, 29, 1, 0, 0, 0, +192,192,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,128,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,193,166, 29, 1, 0, 0, 0, + 32,193,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,224,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,194,166, 29, 1, 0, 0, 0, +128,193,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 64,194,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,194,166, 29, 1, 0, 0, 0, +224,193,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160,194,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,195,166, 29, 1, 0, 0, 0, + 64,194,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,195,166, 29, 1, 0, 0, 0, +160,194,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,195,166, 29, 1, 0, 0, 0, + 0,195,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0, + 96,195,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,195,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,200,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, + 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, + 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,128,246,166, 29, 1, 0, 0, 0, +128,246,166, 29, 1, 0, 0, 0, 96,197,166, 29, 1, 0, 0, 0,192,198,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,145,214, 2, 1, 0, 0, 0,192, 34,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 96,197,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,198,166, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, +101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +192,198,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,197,166, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, +127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, + 32,200,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,219,166, 29, 1, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0, + 96,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, 99, 4, 0, 0, 6, 6,196, 3,100, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,128,217, 2, 1, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0, + 0,201,166, 29, 1, 0, 0, 0, 80,205,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 9,163, 29, 1, 0, 0, 0, 32,102,164, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,201,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 96,202,166, 29, 1, 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,113, 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,195, 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,196, 3, 26, 0,196, 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, 0, 0, 0, 0,195, 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,196, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,134,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,202,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 80,205,166, 29, 1, 0, 0, 0, 0,201,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 67, + 0,224,134,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,255,255,134,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 18, 0, 0, 0, 73, 4, 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, + 18, 0, 0, 0, 73, 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, 4, 6, 0,220, 0, 74, 4,203, 0, 56, 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,219, 0, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 74, 4, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,130,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,203,166, 29, 1, 0, 0, 0,192,203,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,203,166, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,133,217, 2, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,205,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,202,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,154,153, 41,191,205,204,212, 63, +154,153,155,191,205,204, 13, 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,232, 2, 0, 0, 0, 0, 0, 0, 74, 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, +220, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 2, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,129,217, 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, + 68, 65, 84, 65,168, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,112,214,166, 29, 1, 0, 0, 0, + 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, 48,180, 4, 28, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,144,207,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,208,166, 29, 1, 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, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,208,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,210,166, 29, 1, 0, 0, 0, +144,207,166, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,210,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,211,166, 29, 1, 0, 0, 0, +240,208,166, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,211,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,213,166, 29, 1, 0, 0, 0, + 80,210,166, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,213,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,211,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,156, 4, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,156, 4, 28, 1, 0, 0, 0,157, 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, 48,130,157, 26, 1, 0, 0, 0, 80,104,158, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, 0, 0, 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,131,157, 26, 1, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,112,214,166, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,144,207,166, 29, 1, 0, 0, 0, + 16,213,166, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 1, 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,208,215,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 48,217,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,217,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,215,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,214,166, 29, 1, 0, 0, 0,208,215,166, 29, 1, 0, 0, 0, 48,217,166, 29, 1, 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,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, 6, 0, 0, 0, - 16, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 94, 3, - 1, 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, 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, 68, 65, 84, 65, 40, 0, 0, 0, 16,129,157, 26, - 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,194, 2,214, 1, 48, 86, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,129,157, 26, - 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,208,129,157, 26, 1, 0, 0, 0, 16,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 18, 3, 48,160, 26, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,129,157, 26, - 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,129,157, 26, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 54, 2, 48, 80, 25, 4, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, 48,130,157, 26, - 1, 0, 0, 0,150, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, - 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, - 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 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, 0, 0, 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, 88, 0, 0, 0,224,131,157, 26, 1, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 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,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,152, 0, 0, 0,112,132,157, 26, - 1, 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,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, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 64,133,157, 26, 1, 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, 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, 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,112,135,157, 26, 1, 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, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,219,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,200,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, + 64,191,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 99, 4, 0, 0, 1, 1,188, 3,100, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0, + 96,241,166, 29, 1, 0, 0, 0,128,245,166, 29, 1, 0, 0, 0,112,220,166, 29, 1, 0, 0, 0, 0,240,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,249,201, 20, 1, 0, 0, 0,112, 1,162, 29, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,112,220,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,221,166, 29, 1, 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, 0,111, 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,187, 3, 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,188, 3, + 26, 0,188, 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, +197, 3, 0, 0,128, 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, +188, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0,208,221,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,226,166, 29, 1, 0, 0, 0, +112,220,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0,112,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,209, 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,209, 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, 4, 6, 0,160, 0, +210, 3,143, 0,192, 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, +197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0,210, 3, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,223,166, 29, 1, 0, 0, 0,192,224,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,137,157, 26, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,135,157, 26, - 1, 0, 0, 0, 74, 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,224,136,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48,223,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,224,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,117,217, 2, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,224,166, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,223,166, 29, 1, 0, 0, 0,144, 38, 21, 27, 1, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,136,157, 26, 1, 0, 0, 0, 72, 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, 48,137,157, 26, - 1, 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,216, 1, 0, 0,144,137,157, 26, - 1, 0, 0, 0,130, 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, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 0, 0, 0, 0,205,204,204, 61,205,204,204, 61,205,204,204, 61, - 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 80,226,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,229,166, 29, 1, 0, 0, 0, +208,221,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, +197, 3, 0, 0,100, 4, 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,118,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,227,166, 29, 1, 0, 0, 0,176,227,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,176,227,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,118,217, 2, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,229,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0,240,166, 29, 1, 0, 0, 0, 80,226,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 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, + 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,230,166, 29, 1, 0, 0, 0,112,238,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,230,166, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 48,232,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48,232,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,233,166, 29, 1, 0, 0, 0, +160,230,166, 29, 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,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, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,233,166, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 80,235,166, 29, 1, 0, 0, 0, 48,232,166, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,160,139,157, 26, 1, 0, 0, 0, 27, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26, - 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0,144,140,157, 26, 1, 0, 0, 0, 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, 74, 25, 4, 1, 0, 0, 0,255,255,255,255, 0, 4, 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,144,140,157, 26, 1, 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, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 64,214,152, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48, 80, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, - 48, 86, 25, 4, 1, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 80,235,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,236,166, 29, 1, 0, 0, 0, +192,233,166, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,236,166, 29, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,112,238,166, 29, 1, 0, 0, 0, 80,235,166, 29, 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, 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, -112,132,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 68, 65, 84, 65, 88, 1, 0, 0,112,238,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,236,166, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,240,166, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,229,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,101, 4, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 48,160, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,160, 4, 28, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0,151, 29,193, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 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,128, 0, 0, 0,128, + 74,215, 76,190, 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, + 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,184,158, 81,191,232, 29,176, 63,139,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +100, 98, 82, 64, 0, 25, 95, 64,227, 37,139, 62,171,190, 26, 63,112, 12, 16,188, 0, 0, 64, 51,195, 15,188,190,131, 75, 53, 62, +218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 16,173,201, 64,182,148,248,192,203,247,159,192,233, 74, 87, 65,246, 46,190,192, + 89,106,234, 64, 45, 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,184,158, 81,191,232, 29,176, 63,139,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +100, 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,104, 72,218, 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, 79, 66, 0, 0,152, 4, 0, 0, - 48, 86, 25, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,160, 26, 4, 1, 0, 0, 0, 48, 80, 25, 4, 1, 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,112, 12, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,150, 90, 3, 1, 0, 0, 0, -208,161, 89, 3, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,241,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,128,245,166, 29, 1, 0, 0, 0, + 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, +192,242,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,244,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 32,244,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,242,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, +128,245,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,241,166, 29, 1, 0, 0, 0, +192,242,166, 29, 1, 0, 0, 0, 32,244,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, + 0,247,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,188,166, 29, 1, 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, 16,248,166, 29, 1, 0, 0, 0, + 48,252,166, 29, 1, 0, 0, 0,144,252,166, 29, 1, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0, + 48, 64,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, +112,248,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +144,249,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, + 48,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +240,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,251,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, +176,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +112,251,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 3, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,252,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,252,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,252,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,253,166, 29, 1, 0, 0, 0, +144,252,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,253,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,253,166, 29, 1, 0, 0, 0, +240,252,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,253,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,254,166, 29, 1, 0, 0, 0, + 80,253,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,254,166, 29, 1, 0, 0, 0, +176,253,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,254,166, 29, 1, 0, 0, 0, + 16,254,166, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,255,166, 29, 1, 0, 0, 0, +112,254,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,255,166, 29, 1, 0, 0, 0, +208,254,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,255,166, 29, 1, 0, 0, 0, + 48,255,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 0,167, 29, 1, 0, 0, 0, +144,255,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80, 0,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 0,167, 29, 1, 0, 0, 0, +240,255,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176, 0,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 1,167, 29, 1, 0, 0, 0, + 80, 0,167, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 1,167, 29, 1, 0, 0, 0, +176, 0,167, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 1,167, 29, 1, 0, 0, 0, + 16, 1,167, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 2,167, 29, 1, 0, 0, 0, +112, 1,167, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 2,167, 29, 1, 0, 0, 0, +208, 1,167, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0, + 48, 2,167, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 2,167, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 6,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, +240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, + 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0, 96, 82,167, 29, 1, 0, 0, 0, + 96, 82,167, 29, 1, 0, 0, 0, 48, 4,167, 29, 1, 0, 0, 0,144, 5,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128,146,140, 27, 1, 0, 0, 0,176,248,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 48, 4,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 5,167, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, +101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +144, 5,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4,167, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, +127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, +240, 6,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 15,167, 29, 1, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0, + 16,248,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,129, 7,100, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,109,217, 2, 1, 0, 0, 0,144, 10,167, 29, 1, 0, 0, 0, 80, 14,167, 29, 1, 0, 0, 0, +208, 7,167, 29, 1, 0, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,141,162, 21, 1, 0, 0, 0,176, 73,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 7,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 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,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 7,167, 29, 1, 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,128, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 18, 0, 0, 0, 73, 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,129, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 26, 0, 0, 0, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, 68, 65, 84, 65,200, 0, 0, 0,144, 10,167, 29, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 80, 14,167, 29, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 11,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,240, 12,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 12,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 11,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,164, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,164, 4, 28, 1, 0, 0, 0, +157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 80, 14,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 10,167, 29, 1, 0, 0, 0,144, 11,167, 29, 1, 0, 0, 0,240, 12,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +176, 15,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,240, 6,167, 29, 1, 0, 0, 0, +176,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 23, 2, 0, 0, 8, 8,129, 7,179, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,178,217, 2, 1, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0,224, 32,167, 29, 1, 0, 0, 0, +144, 16,167, 29, 1, 0, 0, 0, 80, 19,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 67,201, 20, 1, 0, 0, 0,240,172,140, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 16,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,240, 17,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 38, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 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,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,181,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 17,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 80, 19,167, 29, 1, 0, 0, 0,144, 16,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0,128,195,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 18, 0, 0, 0,152, 1, 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, + 18, 0, 0, 0,152, 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,220, 0,153, 1,203, 0,135, 1, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,153, 1, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,180,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 19,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 17,167, 29, 1, 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,152, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, + 18, 0, 0, 0,152, 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,165, 6,153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,179,217, 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, 68, 65, 84, 65,240, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0, +164, 0, 0, 0, 1, 0, 0, 0,192, 28,167, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +224, 21,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 23,167, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 64, 23,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 24,167, 29, 1, 0, 0, 0,224, 21,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +160, 24,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 26,167, 29, 1, 0, 0, 0, 64, 23,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 0, 26,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 27,167, 29, 1, 0, 0, 0,160, 24,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, + 96, 27,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 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,168, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, + 48,168, 4, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 28,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, +224, 32,167, 29, 1, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0,224, 21,167, 29, 1, 0, 0, 0, 96, 27,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 40, 1, 0, 0, 32, 30,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 31,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 31,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 30,167, 29, 1, 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,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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,200, 0, 0, 0,224, 32,167, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 28,167, 29, 1, 0, 0, 0, 32, 30,167, 29, 1, 0, 0, 0,128, 31,167, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 64,167, 29, 1, 0, 0, 0, +176, 15,167, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, +208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, + 2, 2, 80, 3, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,120,217, 2, 1, 0, 0, 0, 64, 40,167, 29, 1, 0, 0, 0, + 48, 63,167, 29, 1, 0, 0, 0,192, 34,167, 29, 1, 0, 0, 0,224, 38,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 99,160, 21, 1, 0, 0, 0,208, 47,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +192, 34,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 36,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 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, 79, 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, 80, 3, 26, 0, 80, 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, 0, 0, 0, 0, 79, 3, 0, 0, + 25, 2, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,122,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32, 36,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 37,167, 29, 1, 0, 0, 0,192, 34,167, 29, 1, 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,192, 7,196, 0, 0, 0, 0, +200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 48, 2, 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, 48, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 49, 2,200, 0, 31, 2, 0, 0, + 0, 0, 0, 0, 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, + 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 49, 2, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,123,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +128, 37,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 38,167, 29, 1, 0, 0, 0, 32, 36,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 3, 0, 0, 79, 3, 0, 0, + 51, 2, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0, 48,124,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, +224, 38,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37,167, 29, 1, 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, 48, 2, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 48, 2, 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,119, 2, 49, 2, 0, 0, 0, 0, 0, 0, + 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, 79, 3, 0, 0, + 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 2, 49, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,121,217, 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, 68, 65, 84, 65,248, 0, 0, 0, + 64, 40,167, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,240, 45,167, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, +112, 41,167, 29, 1, 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, 32, 0, 0, 0,112, 41,167, 29, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, + 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,208, 41,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 43,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 43,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 44,167, 29, 1, 0, 0, 0, +208, 41,167, 29, 1, 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, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 44,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 43,167, 29, 1, 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,128, 4,196, 0, 0, 64,193,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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,240, 45,167, 29, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0, + 64, 40,167, 29, 1, 0, 0, 0,208, 41,167, 29, 1, 0, 0, 0,144, 44,167, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48, 47,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 48,167, 29, 1, 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,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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 48,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 49,167, 29, 1, 0, 0, 0, + 48, 47,167, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 49,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 48,167, 29, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,168, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 16, 59,167, 29, 1, 0, 0, 0, +240, 45,167, 29, 1, 0, 0, 0, 48, 47,167, 29, 1, 0, 0, 0,240, 49,167, 29, 1, 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, 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, 4, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48, 52,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 53,167, 29, 1, 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, 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, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 53,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 54,167, 29, 1, 0, 0, 0, + 48, 52,167, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 54,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 56,167, 29, 1, 0, 0, 0, +144, 53,167, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 56,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 57,167, 29, 1, 0, 0, 0, +240, 54,167, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 57,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 56,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 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,172, 4, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 3, 0, 0, 48,172, 4, 28, 1, 0, 0, 0,157, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16, 59,167, 29, 1, 0, 0, 0, +158, 0, 0, 0, 1, 0, 0, 0, 48, 63,167, 29, 1, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0, 48, 52,167, 29, 1, 0, 0, 0, +176, 57,167, 29, 1, 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, + 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,112, 60,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +208, 61,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 61,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 60,167, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48, 63,167, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 59,167, 29, 1, 0, 0, 0,112, 60,167, 29, 1, 0, 0, 0,208, 61,167, 29, 1, 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48, 64,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, +240,249,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0, + 25, 2, 0, 0, 99, 4, 0, 0, 8, 8, 48, 4, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,178,217, 2, 1, 0, 0, 0, + 48, 69,167, 29, 1, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, 16, 65,167, 29, 1, 0, 0, 0,208, 67,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,110,160, 21, 1, 0, 0, 0, 48, 43,201, 20, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 16, 65,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 66,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, + 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, 55, 4, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, + 0,224,156, 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, 56, 4, + 24, 0, 56, 4, 24, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 25, 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, 1, 0, 0, 0, 0, 0, 0, 0, 80,181,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112, 66,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 67,167, 29, 1, 0, 0, 0, + 16, 65,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 2, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,180,217, 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, + 68, 65, 84, 65, 40, 1, 0, 0,208, 67,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 66,167, 29, 1, 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, 74, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0, 74, 2, 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, 48, 4, + 75, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 4, 75, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,179,217, 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, + 68, 65, 84, 65,240, 0, 0, 0, 48, 69,167, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 77,167, 29, 1, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 70,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +192, 71,167, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 71,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 32, 73,167, 29, 1, 0, 0, 0, 96, 70,167, 29, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 73,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +128, 74,167, 29, 1, 0, 0, 0,192, 71,167, 29, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 74,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +224, 75,167, 29, 1, 0, 0, 0, 32, 73,167, 29, 1, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 75,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 74,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,176, 4, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 64, 77,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, 48, 69,167, 29, 1, 0, 0, 0, + 96, 70,167, 29, 1, 0, 0, 0,224, 75,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,160, 78,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 80,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 80,167, 29, 1, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 78,167, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 77,167, 29, 1, 0, 0, 0,160, 78,167, 29, 1, 0, 0, 0, + 0, 80,167, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, 40, 6, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, +155, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,202, 4, 28, 1, 0, 0, 0, + 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, +160, 83,167, 29, 1, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 84,167, 29, 1, 0, 0, 0, 48,116, 22, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 85,167, 29, 1, 0, 0, 0,176, 85,167, 29, 1, 0, 0, 0, 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,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, 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, - 64, 33, 0, 28, 1, 0, 0, 0, 80, 40, 0, 28, 1, 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, 80,150, 90, 3, 1, 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,208,161, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,160, 26, 4, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 86, 25, 4, 1, 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, 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,133,157, 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,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, 6, 0, 0, 0, 16, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,109,203, 20, 1, 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, 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, 68, 65, 84, 65, 40, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, +131, 0, 0, 0, 1, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0,194, 2,243, 1, 48,208, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, +131, 0, 0, 0, 1, 0, 0, 0,160, 83,167, 29, 1, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 4, 0, 0,144, 3, 47, 3, 48,214, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 83,167, 29, 1, 0, 0, 0, +131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 0, 4, 0, 0,156, 0, 83, 2, 48,202, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, 0, 84,167, 29, 1, 0, 0, 0, +151, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, + 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, + 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 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, 0, 0, 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, 88, 0, 0, 0,176, 85,167, 29, 1, 0, 0, 0,137, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 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,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,152, 0, 0, 0, 64, 86,167, 29, 1, 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, +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, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 0, 0,248, 1, 0, 0, 48,188, 4, 28, 1, 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, 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, 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, 16, 87,167, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 4, 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,128, 88,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 16, 87,167, 29, 1, 0, 0, 0, + 75, 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,144,118,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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,144,118,161, 29, 1, 0, 0, 0, 73, 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,128, 88,167, 29, 1, 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,224, 1, 0, 0, 48,192, 4, 28, 1, 0, 0, 0, +130, 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, - 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,240,140,157, 26, - 1, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, +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, 0, 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, 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, 84, 88, 0, 0,176, 0, 0, 0,224, 88,167, 29, 1, 0, 0, 0, 27, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0, +208, 89,167, 29, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0, 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,196, 4, 28, 1, 0, 0, 0,255,255,255,255, 0, 4, 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,208, 89,167, 29, 1, 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, 96,209,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 96,209,163, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,202, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, + 1, 0, 0, 0, 48,208, 4, 28, 1, 0, 0, 0, 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, 64, 86,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, +152, 4, 0, 0, 48,208, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,214, 4, 28, 1, 0, 0, 0, 48,202, 4, 28, + 1, 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,240, 9,200, 20, 1, 0, 0, 0, 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, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 6,163, 29, + 1, 0, 0, 0, 64,213,163, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,108, 5, 28, 1, 0, 0, 0, 48,112, 5, 28, 1, 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, 64, 6,163, 29, 1, 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, 64,213,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,214, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,208, 4, 28, 1, 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, + 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 80,144,157, 26, 1, 0, 0, 0, 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, + 48,220, 4, 28, 1, 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,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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 48, 90,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,145,157, 26, - 1, 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,205,204, 76, 63,205,204, 76, 63,205,204, 76, 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, 80,144,157, 26, 1, 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,146,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 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, 91,167, 29, 1, 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, 48, 90,167, 29, 1, 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,224, 91,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 0, 0, 0,160,145,157, 26, - 1, 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, 48,166, 26, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,166, 26, 4, - 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, 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,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, +128, 91,167, 29, 1, 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, 48, 28, 9, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, + 48, 28, 9, 28, 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, + 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, 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, 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, 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, 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, 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, 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, - 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, 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, - 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,104, 1, 0, 0, 0,146,157, 26, 1, 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, 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,160,147,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 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,160,147,157, 26, 1, 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, 48,184, 26, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,184, 26, 4, 1, 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, + 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,104, 1, 0, 0,224, 91,167, 29, 1, 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, 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,128, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,128, 93,167, 29, 1, 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, + 48, 46, 9, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48, 46, 9, 28, 1, 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, @@ -7559,25 +7656,24 @@ char datatoc_B_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 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,144, 1, 0, 0, 0,148,157, 26, 1, 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,255, 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0,224, 93,167, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,163, 89, 3, 1, 0, 0, 0,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,151,157, 26, 1, 0, 0, 0, 16,154,157, 26, 1, 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,208,149,157, 26, 1, 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,112,152,157, 26, 1, 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,224,154,157, 26, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 64,163, 89, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,240,140,157, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,208,149,157, 26, 1, 0, 0, 0, 77, 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,112,142,161, 29, 1, 0, 0, 0, 96,102,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,167, 29, 1, 0, 0, 0,240, 99,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,151,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 95,167, 29, 1, 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, 80, 98,167, 29, 1, 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,192,100,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,112,142,161, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 48,220, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,176, 95,167, 29, 1, 0, 0, 0, + 78, 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, 80, 97,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7585,18 +7681,18 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,151,157, 26, 1, 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,112,152,157, 26, 1, 0, 0, 0, 77, 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, 16,154,157, 26, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 97,167, 29, 1, 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, 80, 98,167, 29, 1, 0, 0, 0, 78, 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, +240, 99,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7604,16 +7700,16 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,154,157, 26, 1, 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,224,154,157, 26, 1, 0, 0, 0, 77, 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,128,156,157, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 99,167, 29, 1, 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,192,100,167, 29, 1, 0, 0, 0, + 78, 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, 96,102,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7621,28 +7717,29 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,156,157, 26, 1, 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, 85, 83, 69, 82, -160, 11, 0, 0,160,150,242, 1, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 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, 68, 65, 84, 65,120, 0, 0, 0, 96,102,167, 29, 1, 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, + 85, 83, 69, 82,160, 11, 0, 0, 96, 76,251, 1, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 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, - 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, 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, - 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, 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, - 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, 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, @@ -7662,7 +7759,7 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, @@ -7672,21 +7769,20 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 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, 48,214, 26, 4, - 1, 0, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,192, 20, 78, 3, 1, 0, 0, 0,128, 43,138, 26, - 1, 0, 0, 0,128, 43,138, 26, 1, 0, 0, 0, 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, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 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, + 48, 76, 9, 28, 1, 0, 0, 0, 48,100, 9, 28, 1, 0, 0, 0, 16, 91,160, 21, 1, 0, 0, 0, 16, 91,160, 21, 1, 0, 0, 0, + 96, 92,160, 21, 1, 0, 0, 0, 96, 92,160, 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, 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, - 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7695,2218 +7791,2230 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,248, 21, 0, 0, 48,214, 26, 4, - 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 48,238, 26, 4, 1, 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, 25, 25, 25,255, -140,140,140,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, 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,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, 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,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, - 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,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, 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,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, - 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,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, 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,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, - 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,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, 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,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, - 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,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, 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,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, - 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,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,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, 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,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, - 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,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, 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,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, - 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,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, 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,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, - 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,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, 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,248, 21, 0, 0, 48,238, 26, 4, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,214, 26, 4, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,216, 21, 0, 0, + 48, 76, 9, 28, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 48,100, 9, 28, 1, 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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,216, 21, 0, 0, 48,100, 9, 28, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 76, 9, 28, 1, 0, 0, 0, 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,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,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, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,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, 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,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, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 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,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,228,156,198,255, -255,255,170,255, 96,192, 64,255, 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, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 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, 80,200,255,255, 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,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, 96,192, 64,255, 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,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255, +124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, +228,156,198,255,255,255,170,255, 96,192, 64,255, 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, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 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, 80,200,255,255, + 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, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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,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, 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, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 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,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, - 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,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, 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,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, 60,229, 0, 0, 48,174, 15, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 44, 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,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,116,101,112,115, 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, 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114, -116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,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,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, 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, 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, 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,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, 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,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,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,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, 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,116,111,111,108, 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,103, 97,109,109, 97, 0,109, -117,108, 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, 99, 97,109,101,114, 97, 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,115,111,117,110,100, 95,104, 97,110,100,108,101,115, 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,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,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, -118,105,101,119, 0, 99,108,105,112, 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,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, 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,103,114,105,100,118, -105,101,119, 0,112, 97,100,102, 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,116,119,100,114, 97,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, 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,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,116,111,111,108, 98, 97, -114, 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, 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,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,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, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, - 95,116,104,101,109,101, 95,103,114,111,117,112, 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,121,102,101,120,112,111, -114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 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, -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,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,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,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,102, 97, 99,102, 48, 0,102, 97, 99,102, 49, 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, -111,117,110,100, 95,104, 97,110,100,108,101, 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, 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,109,111,100,117,108,101, 91, 54, 52, 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, 49, 91, 50, 93, 0,112, -105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, - 97,100, 50, 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, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118, -105,115,105,102, 97, 99, 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,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, 42,115, -111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 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, 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, 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, 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,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116, -110,114, 0, 97, 99,116,119,105,100,116,104, 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,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, 42,115,101,108,105,110, - 0, 42,115,101,108,111,117,116, 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, 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,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,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110, -101, 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, 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,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, 97,108,105,118,101, 0,108,111,111,112, 0,104, - 97,105,114, 95,105,110,100,101,120, 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,102,108, 97,103, 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, 91, - 51, 93, 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,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,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,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, - 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 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, 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, 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,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112, -109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, - 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109, -100, 97,116, 97,102,114,101,101, 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, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0, -101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 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, 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, -196, 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,105, 0, -118,101, 99, 50,102, 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, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35, -100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, - 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, - 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, - 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, - 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, - 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35, -100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, - 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, - 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, - 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, - 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, - 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, - 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, - 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, - 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, - 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, - 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, - 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, - 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, - 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97,114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, - 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, - 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101, -118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116, -111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, - 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101, -115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101, -102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110, -115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97, -112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, - 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, - 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, - 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, - 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, - 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108, -105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, - 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105, -110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, - 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, - 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, - 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, - 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105, -110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101, -115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, - 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, - 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97, -108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102, -108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35, -100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, - 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, - 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, - 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, - 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110, -101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, - 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, - 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32, -104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98, -101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, - 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, - 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, - 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, - 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, - 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, - 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, - 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, - 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, - 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62, -116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102, -108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, - 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, - 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, - 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111, -116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99, -101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, - 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, - 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, - 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, - 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100, -105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105, -110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100,105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101, -100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111,105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, - 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108, -105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101,109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, - 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32,115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111, -114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32,117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, - 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97,116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, - 69,216, 24, 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, 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, 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, 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,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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 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, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 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, 77,105,110, 77, 97,120, 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, 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, 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, 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, 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, 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,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, - 0, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0, -248, 1, 56, 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,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, - 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, - 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, - 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, - 0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, - 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0,152, 0, 32, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0,216, 1, 40, 0,184, 0,152, 0, 64, 0, 24, 0, 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, - 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 72, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, - 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0, -136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2, 16, 1, 16, 0,248, 21, 56, 0,160, 11, 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, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, - 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 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,224, 0, 40, 0, 32, 1,192, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0, -120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, - 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 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, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, - 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, - 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0, -168, 0, 72, 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,112, 0, 32, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 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,138, 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, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 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, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1, - 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 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, 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,242, 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, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0, - 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0, - 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0, - 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 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, 69, 1, 2, 0,175, 0, - 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 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,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 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, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1, - 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1, - 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0, - 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, 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, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1, - 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1, - 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 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, 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, - 65, 0,176, 1, 7, 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, - 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1, - 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1, - 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 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, 0, 0,214, 1, - 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1, - 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1, - 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1, - 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1, - 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1, - 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, 7, 0,248, 1, 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, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1, - 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0, - 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2, - 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, 23, 0, 7, 0, 22, 2, - 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2, - 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1, - 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2, - 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2, - 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 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, 44, 2, 2, 0, 42, 2, - 2, 0, 19, 0, 2, 0, 45, 2, 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, 7, 0, 53, 2, 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2, - 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 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, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2, - 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2, - 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2, - 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2, - 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2, - 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 81, 2, 7, 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, 0, 0, 92, 2, - 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2, - 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2, - 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2, - 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2, - 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2, - 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2, - 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2, - 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, - 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2, - 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0, - 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0, - 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 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,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, - 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, 7, 0,154, 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,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0, - 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0, - 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0, - 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, -105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2, -107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2, -107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2, - 84, 0,168, 2, 0, 0,170, 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, 19, 0, 91, 0,121, 2, 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2, - 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0, -109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2, - 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2, - 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2, -113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2, - 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2, - 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2, - 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2, -117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2, - 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0, -109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2, - 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2, - 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2, - 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2, - 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2, - 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0, - 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2, - 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, - 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2, - 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0, - 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2, - 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0, -109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0, -109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3, - 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3, - 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0, - 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3, -146, 0, 20, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 70, 2, 7, 0, 22, 3, - 7, 0, 23, 3, 4, 0, 54, 0, 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3, - 4, 0, 20, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3, -141, 0, 16, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2, - 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0, -109, 0,184, 2, 4, 0, 40, 3, 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3, - 4, 0, 44, 3, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3, -137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3, - 2, 0, 55, 3, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3, - 7, 0, 59, 3, 7, 0, 60, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2, -157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3, - 2, 0, 65, 3, 2, 0, 70, 0, 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3, - 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2, - 86, 0,115, 2, 7, 0, 76, 3, 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0, - 71, 0, 3, 0, 7, 0, 79, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3, - 2, 0, 17, 0, 2, 0, 81, 3, 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3, - 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3, -161, 0, 92, 3, 9, 0, 2, 0,162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3, - 4, 0, 69, 1, 4, 0, 97, 3, 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3, - 7, 0,101, 3, 7, 0,172, 0, 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3, - 7, 0,106, 3, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3, - 2, 0, 19, 0, 2, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 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, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3, - 7, 0,127, 3, 7, 0,101, 2, 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0, - 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3, - 0, 0,141, 3, 7, 0,142, 3, 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3, - 2, 0,156, 2, 2, 0,149, 3, 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0, - 7, 0,154, 3, 12, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3, - 2, 0,161, 3, 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3, -141, 0,168, 3,141, 0,169, 3, 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3, - 12, 0,175, 3,166, 0, 14, 0,166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2, - 7, 0,244, 2, 0, 0, 20, 0, 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2, -167, 0, 12, 0,167, 0, 0, 0,167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0, - 4, 0,180, 3, 7, 0, 66, 1, 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3, - 2, 0,184, 3, 2, 0,244, 2, 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3, - 7, 0,191, 3, 7, 0,192, 3, 7, 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, 37, 0, - 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, 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1, - 7, 0,218, 3, 7, 0,219, 3, 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3, - 4, 0,222, 3, 4, 0,223, 3, 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0, -137, 0, 1, 0, 4, 0, 19, 0, 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3, - 4, 0,222, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3, -171, 0,238, 3, 9, 0,239, 3,172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3, - 7, 0,242, 3, 4, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, - 7, 0,250, 3, 7, 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, 4, 0, 9, 4, - 4, 0, 10, 4, 7, 0, 11, 4, 7, 0,133, 3,165, 0, 50, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4, - 0, 0, 37, 0, 0, 0, 15, 4, 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4, - 7, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4, - 2, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4, - 2, 0, 37, 4,172, 0, 38, 4, 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, - 2, 0, 44, 4, 2, 0, 45, 4, 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4, -175, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4,153, 0, 49, 0,152, 0, 57, 4, - 2, 0, 17, 0, 2, 0, 58, 4, 2, 0, 59, 4, 2, 0, 60, 4, 7, 0, 61, 4, 2, 0, 62, 4, 2, 0, 63, 4, 7, 0, 64, 4, - 2, 0, 65, 4, 2, 0, 66, 4, 7, 0, 67, 4, 7, 0, 68, 4, 7, 0, 69, 4, 7, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4, - 4, 0, 73, 4, 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 80, 0, 77, 4, 80, 0, 78, 4, 80, 0, 79, 4, 0, 0, 80, 4, - 7, 0, 81, 4, 7, 0, 82, 4, 36, 0, 80, 0, 2, 0, 83, 4, 0, 0, 84, 4, 0, 0, 85, 4, 7, 0, 86, 4, 4, 0, 87, 4, - 7, 0, 88, 4, 7, 0, 89, 4, 4, 0, 90, 4, 4, 0, 19, 0, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 84, 0, 94, 4, - 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 4, 0,102, 4, -176, 0, 73, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 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, 7, 0,111, 4, 7, 0,162, 1, - 7, 0,164, 1, 7, 0,163, 1, 7, 0,112, 4, 4, 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, 2, 0,121, 4, 2, 0, 69, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4, - 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, - 7, 0,133, 4, 7, 0,134, 4, 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, 2, 0,140, 4, - 2, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 2, 0,148, 4, - 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 7, 0,152, 4, 7, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, 2, 0,156, 4, - 2, 0,157, 4, 2, 0,158, 4, 2, 0, 19, 0, 7, 0,159, 4, 7, 0,160, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, - 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,161, 4, 4, 0, 19, 0, - 2, 0,162, 4, 2, 0,163, 4, 32, 0,164, 0,178, 0, 13, 0, 9, 0,164, 4, 9, 0,165, 4, 4, 0,166, 4, 4, 0,167, 4, - 4, 0,168, 4, 4, 0,169, 4, 4, 0,170, 4, 4, 0,171, 4, 4, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0, 37, 0, - 0, 0,175, 4,179, 0, 5, 0, 9, 0,176, 4, 9, 0,177, 4, 4, 0,178, 4, 4, 0, 70, 0, 0, 0,179, 4,180, 0, 15, 0, - 4, 0, 17, 0, 4, 0,180, 4, 4, 0,181, 4, 4, 0,182, 4, 4, 0,183, 4, 4, 0,184, 4, 7, 0,185, 4, 4, 0,186, 4, - 4, 0, 90, 0, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 26, 0, 30, 0,181, 0, 7, 0, - 4, 0,192, 4, 7, 0,193, 4, 7, 0,194, 4, 7, 0,195, 4, 4, 0,196, 4, 2, 0, 19, 0, 2, 0, 37, 0,182, 0, 11, 0, -182, 0, 0, 0,182, 0, 1, 0, 0, 0, 20, 0, 66, 0,197, 4, 67, 0,198, 4, 4, 0,111, 3, 4, 0,199, 4, 4, 0,200, 4, - 4, 0, 37, 0, 4, 0,201, 4, 4, 0,202, 4,183, 0,134, 0,178, 0,203, 4,179, 0,204, 4,180, 0,205, 4, 4, 0, 17, 3, - 4, 0,126, 0, 4, 0, 34, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 2, 0, 19, 0, 2, 0,210, 4, - 7, 0,101, 2, 7, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 7, 0,214, 4, 7, 0,215, 4, 2, 0,216, 4, 2, 0,217, 4, - 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0,221, 4, 2, 0,222, 4, 2, 0,223, 4, 2, 0,224, 4, - 2, 0, 91, 1, 2, 0,106, 0, 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,229, 4, 2, 0,230, 4, - 2, 0,231, 4, 2, 0,232, 4, 2, 0,233, 4, 2, 0, 92, 1, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4, - 4, 0,238, 4, 4, 0, 69, 1, 4, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,121, 1, 2, 0,243, 4, - 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, 24, 0,247, 4, 24, 0,248, 4, 23, 0,249, 4, 12, 0,250, 4, 2, 0,251, 4, - 2, 0, 37, 0, 7, 0,252, 4, 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 4, 0, 0, 5, 7, 0, 1, 5, 7, 0, 2, 5, - 7, 0, 3, 5, 7, 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, - 7, 0, 11, 5, 7, 0, 12, 5, 7, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 2, 0, 18, 5, - 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 4, 0, 24, 5, 4, 0, 25, 5, 4, 0, 26, 5, - 4, 0, 27, 5, 4, 0, 28, 5, 7, 0, 29, 5, 4, 0, 30, 5, 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, 7, 0, 34, 5, - 7, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 7, 0, 42, 5, - 0, 0, 43, 5, 0, 0, 44, 5, 4, 0, 45, 5, 2, 0, 46, 5, 2, 0,238, 1, 0, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, - 4, 0, 50, 5, 4, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 2, 0, 54, 5, 2, 0, 55, 5, 7, 0, 56, 5, 2, 0, 57, 5, - 2, 0, 58, 5, 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 2, 0, 62, 5, 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 70, 0, - 42, 0, 65, 5, 0, 0, 66, 5,184, 0, 9, 0,184, 0, 0, 0,184, 0, 1, 0, 0, 0, 20, 0, 2, 0, 67, 5, 2, 0, 68, 5, - 2, 0, 69, 5, 2, 0, 43, 0, 7, 0, 70, 5, 7, 0, 70, 0,185, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, - 2, 0, 71, 5, 7, 0, 72, 5, 7, 0, 70, 0, 42, 0, 73, 5,186, 0, 5, 0, 7, 0, 74, 5, 0, 0, 17, 0, 0, 0, 43, 0, - 0, 0, 70, 0, 0, 0,238, 1,187, 0, 26, 0, 7, 0,119, 4, 7, 0,120, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 75, 5, - 2, 0,136, 1, 2, 0,122, 4, 2, 0,123, 4, 2, 0,124, 4, 2, 0,125, 4, 2, 0,126, 4, 2, 0,127, 4,186, 0, 76, 5, - 2, 0,216, 4, 2, 0,217, 4, 2, 0,218, 4, 2, 0,219, 4, 2, 0,246, 0, 2, 0,220, 4, 2, 0, 77, 5, 2, 0,221, 4, -185, 0, 78, 5, 2, 0, 79, 5, 2, 0,223, 4, 2, 0,226, 4, 2, 0,227, 4,188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0, - 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,189, 0, 6, 0,190, 0, 80, 5, 4, 0, 81, 5, 4, 0, 82, 5, 9, 0, 83, 5, - 0, 0, 84, 5, 4, 0, 37, 0,191, 0, 6, 0,189, 0, 85, 5, 2, 0, 19, 0, 2, 0, 86, 5, 2, 0, 87, 5, 2, 0, 88, 5, - 9, 0, 89, 5,192, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0, 90, 5,193, 0, 14, 0, 2, 0, 19, 0, - 2, 0, 91, 5, 2, 0, 92, 5, 2, 0, 93, 5,192, 0, 94, 5, 9, 0, 89, 5, 7, 0, 95, 5, 7, 0, 57, 0, 4, 0, 96, 5, - 4, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, 46, 0,134, 0, 32, 0,164, 0,194, 0, 4, 0,194, 0, 0, 0,194, 0, 1, 0, - 0, 0,100, 5, 7, 0,101, 5,195, 0, 6, 0,189, 0, 85, 5, 7, 0,102, 5, 4, 0, 90, 0, 0, 0,103, 5, 0, 0,104, 5, - 0, 0,190, 2,196, 0, 9, 0,189, 0, 85, 5, 7, 0,105, 5, 7, 0,106, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, - 4, 0,107, 5, 86, 0,108, 5, 9, 0, 89, 5,197, 0, 74, 0,196, 0,109, 5,196, 0,110, 5,195, 0, 80, 3, 7, 0,111, 5, - 2, 0,112, 5, 2, 0,113, 5, 7, 0,114, 5, 7, 0,115, 5, 2, 0,227, 3, 2, 0,116, 5, 7, 0,117, 5, 7, 0,118, 5, - 7, 0,119, 5, 2, 0,120, 5, 2, 0, 96, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0,123, 5, 2, 0,124, 5, 7, 0,125, 5, - 7, 0,126, 5, 7, 0,127, 5, 2, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5, - 2, 0,134, 5,191, 0,135, 5,193, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, - 0, 0,142, 5, 0, 0,143, 5, 0, 0,144, 5, 0, 0,145, 5, 0, 0,146, 5, 0, 0,147, 5, 2, 0,148, 5, 7, 0,149, 5, - 7, 0,150, 5, 7, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, - 7, 0,158, 5, 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 32, 0,164, 5, 0, 0,165, 5, - 0, 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, - 2, 0,174, 5, 2, 0,175, 5, 2, 0,176, 5, 2, 0,177, 5, 4, 0,178, 5, 4, 0,179, 5,198, 0, 8, 0, 4, 0,180, 5, - 4, 0,181, 5, 4, 0,182, 5, 4, 0,183, 5, 4, 0,184, 5, 4, 0,185, 5, 4, 0, 54, 0, 4, 0,125, 2,199, 0, 3, 0, - 7, 0,186, 5, 2, 0,187, 5, 2, 0, 19, 0,200, 0, 2, 0, 7, 0,188, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 32, 0,189, 5,176, 0,190, 5, 46, 0,191, 5, 47, 0,238, 0, 12, 0,192, 5,177, 0,193, 5, 32, 0,194, 5, - 7, 0,195, 5, 7, 0,196, 5, 7, 0,197, 5, 7, 0,198, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1, -201, 0,199, 5,197, 0,200, 5,202, 0,201, 5,183, 0,182, 0,181, 0,202, 5, 12, 0,100, 0, 12, 0,203, 5, 12, 0,204, 5, -203, 0,205, 5, 2, 0,206, 5, 2, 0,207, 5, 2, 0,247, 0, 2, 0,208, 5, 4, 0,209, 5, 4, 0,210, 5, 12, 0,211, 5, -186, 0, 76, 5,187, 0,212, 5,199, 0,213, 5,162, 0, 93, 3,200, 0,214, 5,204, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, - 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, 7, 0,215, 5,205, 0, 35, 0, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, - 7, 0,219, 5, 7, 0,220, 5, 7, 0,221, 5, 7, 0,222, 5, 7, 0,223, 5, 7, 0,224, 5, 7, 0, 76, 1, 7, 0,225, 5, - 7, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, 7, 0,171, 0, 2, 0,229, 5, 2, 0,230, 5, 2, 0, 70, 2, 2, 0,231, 5, - 2, 0,232, 5, 2, 0,233, 5, 2, 0,234, 5, 7, 0,235, 5, 71, 0,236, 5,162, 0, 93, 3,205, 0,237, 5,206, 0,238, 5, -207, 0,239, 5,208, 0,240, 5,209, 0,241, 5,210, 0,242, 5, 7, 0,243, 5, 2, 0,244, 5, 2, 0,245, 5, 4, 0,238, 1, -211, 0, 54, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 7, 0,224, 5, - 7, 0, 76, 1, 7, 0, 43, 0, 4, 0,250, 5, 2, 0,233, 5, 2, 0,234, 5, 32, 0,189, 5, 32, 0,251, 5,204, 0,252, 5, -211, 0,237, 5, 0, 0,253, 5, 4, 0,111, 3, 4, 0,254, 5, 2, 0,255, 5, 2, 0, 70, 0, 2, 0, 0, 6, 2, 0, 1, 6, - 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 2, 6, 7, 0,112, 0, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6, - 7, 0, 6, 6, 7, 0, 7, 6, 7, 0,171, 0, 7, 0,195, 5, 2, 0, 8, 6, 2, 0,121, 1, 2, 0, 9, 6, 2, 0, 10, 6, - 2, 0, 11, 6, 2, 0, 12, 6, 2, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 2, 0, 16, 6, 4, 0, 17, 6, 12, 0, 18, 6, - 2, 0, 19, 6, 2, 0,139, 2, 2, 0, 20, 6, 0, 0, 21, 6, 0, 0, 22, 6, 9, 0, 23, 6,162, 0, 93, 3,213, 0, 25, 0, - 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 24, 6, 23, 0, 25, 6, 23, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6, - 7, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 19, 0, 2, 0, 36, 6, - 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 1, 6, 7, 0, 41, 6, 7, 0, 42, 6, 4, 0, 43, 6, - 4, 0, 44, 6,212, 0, 6, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, -214, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,215, 0, 45, 6, - 46, 0,134, 0,216, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, -213, 0, 46, 6,217, 0, 47, 6, 12, 0, 48, 6, 2, 0, 69, 1, 2, 0, 49, 6, 4, 0, 19, 0, 7, 0, 50, 6, 4, 0, 1, 6, -218, 0, 20, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,206, 0,238, 5, -213, 0, 46, 6, 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 36, 6, 2, 0, 55, 6, 0, 0, 19, 0, - 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 56, 6, 4, 0, 57, 6, 27, 0, 58, 6,219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 51, 6, - 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 4, 0, 19, 0, 7, 0, 62, 6,162, 0, 93, 3,220, 0, 16, 0, 0, 0, 63, 6, - 0, 0, 64, 6, 0, 0, 65, 6, 0, 0, 66, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0,181, 1, - 2, 0, 69, 6, 4, 0, 70, 6, 4, 0, 71, 6, 2, 0, 72, 6, 2, 0, 73, 6, 0, 0, 74, 6, 0, 0, 75, 6,221, 0, 16, 0, -212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 4, 0, 37, 0,220, 0, 76, 6,222, 0, 77, 6, 12, 0, 78, 6, - 12, 0, 79, 6,223, 0, 80, 6,210, 0, 81, 6,224, 0, 82, 6, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 70, 0, -225, 0, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, - 12, 0, 86, 6,226, 0, 87, 6, 0, 0, 88, 6,227, 0, 89, 6, 4, 0, 90, 6, 4, 0, 91, 6, 2, 0, 19, 0, 2, 0, 92, 6, - 2, 0, 93, 6, 2, 0, 37, 0,228, 0, 29, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, - 2, 0,249, 5, 47, 0,229, 2, 45, 0, 57, 1, 63, 0, 94, 6, 2, 0,133, 0, 2, 0, 95, 6, 2, 0, 70, 0, 2, 0, 96, 6, - 4, 0, 19, 0, 2, 0, 97, 6, 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,238, 1, 0, 0,100, 6, 0, 0,101, 6, 0, 0,102, 6, - 0, 0, 1, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 62, 6, 7, 0,121, 1, 7, 0,103, 6, 7, 0,104, 6,162, 0, 93, 3, -229, 0, 11, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 49, 6, - 2, 0, 19, 0, 4, 0, 37, 0,217, 0, 47, 6,213, 0, 46, 6,230, 0, 27, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, - 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 42, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 90, 0, 2, 0,133, 0, - 2, 0,108, 6, 0, 0,109, 6, 0, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 4, 0,114, 6, 2, 0,115, 6, - 2, 0,116, 6, 7, 0,117, 6, 23, 0,118, 6, 23, 0,119, 6, 4, 0,120, 6, 4, 0,121, 6, 0, 0,122, 6, 0, 0,123, 6, -231, 0, 10, 0, 27, 0, 31, 0, 9, 0,124, 6, 9, 0,125, 6, 9, 0,126, 6, 9, 0,127, 6, 9, 0,128, 6, 4, 0, 90, 0, - 4, 0,129, 6, 0, 0,130, 6, 0, 0,131, 6,232, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, - 7, 0,248, 5,231, 0,132, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,133, 6,233, 0, 8, 0,212, 0, 0, 0, -212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,213, 0, 46, 6, 4, 0, 19, 0, 4, 0,134, 6,234, 0, 23, 0, -212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 27, 0,135, 6, - 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,136, 6, 9, 0,137, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,138, 6, - 7, 0,139, 6, 60, 0, 58, 1, 60, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0, 37, 0,162, 0, 93, 3,235, 0, 10, 0, -212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 19, 0, 2, 0,120, 3, - 4, 0, 37, 0,162, 0, 93, 3,236, 0, 42, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, - 2, 0,249, 5,213, 0, 46, 6,222, 0, 77, 6, 0, 0, 63, 6, 0, 0, 64, 6, 0, 0, 65, 6, 2, 0, 17, 0, 2, 0, 73, 6, - 2, 0, 19, 0, 2, 0, 67, 6, 9, 0,137, 6, 4, 0, 70, 6, 4, 0,143, 6, 4, 0,144, 6, 4, 0, 71, 6, 23, 0,145, 6, - 23, 0,146, 6, 7, 0,147, 6, 7, 0,148, 6, 7, 0,149, 6, 7, 0,136, 6, 2, 0,150, 6, 2, 0,237, 0, 2, 0,181, 1, - 2, 0, 69, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,151, 6, 2, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, - 9, 0,156, 6, 9, 0,157, 6, 2, 0,158, 6, 0, 0, 75, 6, 57, 0,159, 6,237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0, - 4, 0,160, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,161, 6, 4, 0, 17, 0,238, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 4, 0, 17, 0, 4, 0,162, 6, 4, 0, 19, 0, 4, 0,108, 6, - 12, 0,163, 6, 12, 0,164, 6, 0, 0,165, 6, 0, 0,166, 6,239, 0, 5, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, - 4, 0,247, 5, 4, 0, 37, 0,240, 0, 7, 0,240, 0, 0, 0,240, 0, 1, 0, 0, 0,167, 6, 2, 0,168, 6, 2, 0,169, 6, - 2, 0,170, 6, 2, 0, 37, 0,241, 0, 12, 0, 2, 0,169, 6, 2, 0,171, 6, 2, 0,172, 6, 0, 0,190, 2, 2, 0,173, 6, - 2, 0,174, 6, 2, 0,175, 6, 2, 0,176, 6, 2, 0,177, 6, 2, 0, 36, 6, 7, 0,178, 6, 7, 0,179, 6,242, 0, 18, 0, -242, 0, 0, 0,242, 0, 1, 0, 0, 0,233, 3,241, 0,180, 6,241, 0,181, 6,241, 0,182, 6,241, 0,183, 6, 7, 0,184, 6, - 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, - 2, 0,193, 6, 2, 0,194, 6,243, 0, 10, 0, 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 0, 0,199, 6, - 0, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 37, 0,244, 0, 8, 0, 0, 0,204, 6, 0, 0,205, 6, - 0, 0,206, 6, 0, 0,207, 6, 0, 0,208, 6, 0, 0,209, 6, 7, 0,215, 5, 7, 0, 37, 0,245, 0, 18, 0,243, 0,210, 6, -243, 0,211, 6,243, 0,212, 6,243, 0,213, 6,243, 0,214, 6,243, 0,215, 6,243, 0,216, 6,243, 0,217, 6,243, 0,218, 6, -243, 0,219, 6,243, 0,220, 6,243, 0,221, 6,243, 0,222, 6,243, 0,223, 6,243, 0,224, 6,243, 0,225, 6,244, 0,226, 6, - 0, 0,227, 6,246, 0, 71, 0, 0, 0,228, 6, 0, 0,229, 6, 0, 0,199, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, - 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, - 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, + 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, 96,192, 64,255, 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,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, 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,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, 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,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,216,230, 0, 0, + 48, 80,221, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 63, 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,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,116,101,112,115, 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, 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, + 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,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,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, 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, 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,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,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,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, 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,116,111,111,108, 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, 99, 97,109,101,114, 97, 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,115,111,117,110,100, 95,104, 97,110,100,108,101, +115, 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,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,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114, +115,112, 0,118,105,101,119, 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, +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, 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,103,114,105,100,118,105,101,119, 0,112, 97,100,102, 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,116,119,100,114, 97,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, 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,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, 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,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,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, 97,114,109, 91, 50, 48, 93, + 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 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,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 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,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,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,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,111,117,110,100, 95,104, 97,110, +100,108,101, 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, 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,109,111,100,117,108,101, 91, 54, 52, 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, 49, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117, +110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50, 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, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 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,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, 42,115,111,117,114, 99,101, 0,102,114, + 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 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, 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, 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, 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,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105, +100,116,104, 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,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, 42,115,101,108,105,110, 0, 42,115,101,108,111,117,116, + 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,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,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 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, 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,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, 97,108,105,118,101, 0,108,111,111,112, 0,104, 97,105, +114, 95,105,110,100,101,120, 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,102,108, 97,103, 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, 91, 51, 93, + 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,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,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,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,100, +101,102, 97,117,108,116, 97, 99,116,109, 97,112, 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, 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,108, 97,115, +116, 95,116,121,112,101, 0,108, 97,115,116, 95,118, 97,108, 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, 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, +114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, + 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, + 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114,101,101, 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, 97,114, +114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, + 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 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, 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,198, 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,105, 0,118,101, 99, 50,102, 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, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, + 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, + 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100, +101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, + 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, + 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, + 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, + 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, + 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, + 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, + 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, + 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, + 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, + 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, + 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, + 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, + 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, + 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, + 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, + 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, + 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97, +114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101, +118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105, +101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, + 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115, +104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114, +101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116, +105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, + 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, + 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101, +119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100, +103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, + 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, + 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, +116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10, +125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62, +102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, + 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, + 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, + 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, + 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, + 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, + 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, + 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, + 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, + 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117, +110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32, +114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114, +101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, + 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, + 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, + 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102, +105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, + 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, + 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, + 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, + 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117, +115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112, +101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109, +116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, + 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, + 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, + 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, + 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, + 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, + 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, + 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, + 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, + 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, + 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, + 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, + 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, + 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, + 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, + 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, + 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, + 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, + 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, + 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116, +104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112, +104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, + 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116, +104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, + 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, + 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, + 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, + 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, + 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, + 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105,110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100, +105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111, +105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, + 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101, +109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32, +115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32, +117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97, +116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69,216, 24, 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, 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, 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,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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 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, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116, +105,110,103,115, 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, 77,105,110, 77, 97,120, 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, 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, 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, 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, 70, 77,111,100, + 95, 83,111,117,110,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 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, 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,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0, +168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, 40, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, + 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0,248, 1, 56, 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,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, + 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, + 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0, +128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, + 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, 0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, + 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, 48, 0, 0, 0,144, 0, 88, 0,104, 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,224, 1, 40, 0,184, 0,152, 0, 40, 0, 64, 0, + 24, 0, 88, 0, 64, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 64, 0, +120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0, +152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0, +224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, + 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 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, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 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,224, 0, + 40, 0, 40, 1,200, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0, +120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 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, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, + 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,168, 0, 72, 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, 24, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, + 40, 0,200, 0,104, 0,112, 0,104, 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,140, 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, + 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 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, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1, 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, + 27, 0, 31, 0, 39, 0, 75, 0, 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, 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,242, 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, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, + 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0, 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, + 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, + 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 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, 69, 1, 2, 0,175, 0, 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, + 7, 0,184, 0, 7, 0,185, 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,249, 0, 2, 0, 70, 0, + 7, 0,110, 0, 7, 0,111, 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, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1, 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, + 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1, 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, + 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, + 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, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, + 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1, 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, + 7, 0,184, 0, 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, 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, 65, 0,176, 1, 7, 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, 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, + 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1, 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, + 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1, 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, + 2, 0,202, 1, 2, 0,203, 1, 7, 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, 0, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, + 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1, 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, + 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, + 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1, 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, + 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, + 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1, 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, + 7, 0,248, 1, 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, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1, 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, + 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, + 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, + 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2, 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, 23, 0, 7, 0, 22, 2, 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2, 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, + 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, + 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, + 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, + 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 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, 44, 2, 2, 0, 42, 2, 2, 0, 19, 0, 2, 0, 45, 2, 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, 7, 0, 53, 2, 7, 0, 54, 2, + 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2, 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 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, 59, 2, + 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2, 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, + 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2, 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, + 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2, 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, + 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, + 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2, 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, + 2, 0, 67, 0, 2, 0, 81, 2, 7, 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, 0, 0, 92, 2, 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, + 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2, 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, + 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2, 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, + 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2, 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, + 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2, 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, + 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2, 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, + 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2, 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, + 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2, 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, + 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, + 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2, 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, + 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, + 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, + 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 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,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, + 7, 0,154, 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,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, + 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0, 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2, +100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0, 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2, +104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, + 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2,107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2, +108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2,107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, + 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2, 84, 0,168, 2, 0, 0,170, 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, 19, 0, 91, 0,121, 2, 91, 0,123, 2, + 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2, 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, + 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0,109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, + 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2, 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, + 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0, +109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2,113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, + 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2, 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, + 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2, 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, + 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2, 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0, +109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2,117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, + 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, + 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0,109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0, +120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2, 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0, +109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2, 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, + 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2, 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, + 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, + 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2, 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2, +128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0, 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, + 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2, 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, + 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, + 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2, 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0, +109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0, 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0, +109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2, 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, + 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0,109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3, +135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, + 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3, 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, + 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, + 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0, 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, + 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3,146, 0, 21, 0,109, 0,184, 2, 32, 0,164, 0, + 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0, 7, 0, 22, 3, 7, 0, 23, 3, 4, 0, 54, 0, + 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3, 4, 0, 20, 3, 7, 0, 30, 3, + 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3,141, 0, 16, 3, 4, 0, 35, 3, + 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2, 32, 0, 45, 0, 2, 0,255, 0, + 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0,109, 0,184, 2, 4, 0, 40, 3, + 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3, 4, 0, 44, 3, 0, 0, 45, 3, + 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3,137, 0, 3, 3,154, 0, 10, 0, +109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3, 2, 0, 55, 3, 0, 0, 56, 3, + 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3, 7, 0, 59, 3, 7, 0, 60, 3, + 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,157, 0, 27, 0, 27, 0, 31, 0, + 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 70, 0, + 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3, + 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 76, 3, + 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 79, 3, + 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3, 2, 0, 17, 0, 2, 0, 81, 3, + 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3, 32, 0, 87, 3, 32, 0, 88, 3, + 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3,161, 0, 92, 3, 9, 0, 2, 0, +162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3, 4, 0, 69, 1, 4, 0, 97, 3, + 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3, 7, 0,101, 3, 7, 0,172, 0, + 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3, 7, 0,106, 3, 7, 0,107, 3, + 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3, 2, 0, 19, 0, 2, 0,112, 3, + 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 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, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3, 7, 0,127, 3, 7, 0,101, 2, + 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0, 7, 0,133, 3, 7, 0,134, 3, + 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, 7, 0,142, 3, + 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3, 2, 0,156, 2, 2, 0,149, 3, + 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0, 7, 0,154, 3, 12, 0,155, 3, + 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3, 2, 0,161, 3, 2, 0,162, 3, + 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3,141, 0,168, 3,141, 0,169, 3, + 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3, 12, 0,175, 3,166, 0, 14, 0, +166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2, 7, 0,244, 2, 0, 0, 20, 0, + 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2,167, 0, 12, 0,167, 0, 0, 0, +167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0, 4, 0,180, 3, 7, 0, 66, 1, + 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3, 2, 0,184, 3, 2, 0,244, 2, + 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3, 7, 0,191, 3, 7, 0,192, 3, + 7, 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, 37, 0, 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, + 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1, 7, 0,218, 3, 7, 0,219, 3, + 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3, 4, 0,222, 3, 4, 0,223, 3, + 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0, + 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3, 4, 0,222, 3, 4, 0,156, 2, + 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3,171, 0,238, 3, 9, 0,239, 3, +172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3, 7, 0,242, 3, 4, 0,243, 3, + 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 7, 0,250, 3, 7, 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, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4, + 7, 0,133, 3,165, 0, 54, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4, 0, 0, 37, 0, 0, 0, 15, 4, + 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, 7, 0, 23, 4, + 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4, 2, 0, 30, 4, 7, 0, 31, 4, + 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4, 2, 0, 37, 4,172, 0, 38, 4, + 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 2, 0, 44, 4, 2, 0, 45, 4, + 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4,175, 0, 52, 4, 7, 0, 53, 4, + 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4, 7, 0, 57, 4, 7, 0, 58, 4, 7, 0, 59, 4, 0, 0, 60, 4, +153, 0, 49, 0,152, 0, 61, 4, 2, 0, 17, 0, 2, 0, 62, 4, 2, 0, 63, 4, 2, 0, 64, 4, 7, 0, 65, 4, 2, 0, 66, 4, + 2, 0, 67, 4, 7, 0, 68, 4, 2, 0, 69, 4, 2, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4, 7, 0, 73, 4, 7, 0, 74, 4, + 7, 0, 75, 4, 7, 0, 76, 4, 4, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 80, 0, 81, 4, 80, 0, 82, 4, + 80, 0, 83, 4, 0, 0, 84, 4, 7, 0, 85, 4, 7, 0, 86, 4, 36, 0, 80, 0, 2, 0, 87, 4, 0, 0, 88, 4, 0, 0, 89, 4, + 7, 0, 90, 4, 4, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 4, 0, 94, 4, 4, 0, 19, 0, 7, 0, 95, 4, 7, 0, 96, 4, + 7, 0, 97, 4, 84, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, + 7, 0,105, 4, 4, 0,106, 4,176, 0, 76, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, + 2, 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, 7, 0,114, 4, + 7, 0,115, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1, 7, 0,116, 4, 4, 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,124, 4, 2, 0,125, 4, 2, 0, 69, 1, 2, 0,126, 4, + 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 7, 0,134, 4, + 7, 0,135, 4, 7, 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, 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, 2, 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, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 2, 0,165, 4, 2, 0, 19, 0, + 7, 0,166, 4, 7, 0,167, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0, +177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,168, 4, 4, 0, 19, 0, 2, 0,169, 4, 2, 0,170, 4, 32, 0,164, 0, +178, 0, 13, 0, 9, 0,171, 4, 9, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0,175, 4, 4, 0,176, 4, 4, 0,177, 4, + 4, 0,178, 4, 4, 0,179, 4, 4, 0,180, 4, 4, 0,181, 4, 4, 0, 37, 0, 0, 0,182, 4,179, 0, 5, 0, 9, 0,183, 4, + 9, 0,184, 4, 4, 0,185, 4, 4, 0, 70, 0, 0, 0,186, 4,180, 0, 10, 0, 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,193, 4, 4, 0,194, 4, 4, 0,195, 4, 4, 0,196, 4,181, 0, 15, 0, + 4, 0, 17, 0, 4, 0,189, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 7, 0,201, 4, 4, 0,202, 4, + 4, 0, 90, 0, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 26, 0, 30, 0,182, 0, 7, 0, + 4, 0,208, 4, 7, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4, 4, 0,212, 4, 2, 0, 19, 0, 2, 0, 37, 0,183, 0, 11, 0, +183, 0, 0, 0,183, 0, 1, 0, 0, 0, 20, 0, 66, 0,213, 4, 67, 0,214, 4, 4, 0,111, 3, 4, 0,215, 4, 4, 0,216, 4, + 4, 0, 37, 0, 4, 0,217, 4, 4, 0,218, 4,184, 0,135, 0,178, 0,219, 4,179, 0,220, 4,180, 0,221, 4,181, 0,222, 4, + 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 34, 4, 4, 0,223, 4, 4, 0,224, 4, 4, 0,225, 4, 4, 0,226, 4, 2, 0, 19, 0, + 2, 0,227, 4, 7, 0,101, 2, 7, 0,228, 4, 7, 0,229, 4, 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 2, 0,233, 4, + 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0,238, 4, 2, 0,239, 4, 2, 0,240, 4, + 2, 0,241, 4, 2, 0, 91, 1, 2, 0,106, 0, 2, 0,242, 4, 2, 0,243, 4, 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, + 2, 0,247, 4, 2, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0, 92, 1, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, + 2, 0,254, 4, 4, 0,255, 4, 4, 0, 69, 1, 4, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0,121, 1, + 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 24, 0, 8, 5, 24, 0, 9, 5, 23, 0, 10, 5, 12, 0, 11, 5, + 2, 0, 12, 5, 2, 0, 37, 0, 7, 0, 13, 5, 7, 0, 14, 5, 7, 0, 15, 5, 7, 0, 16, 5, 4, 0, 17, 5, 7, 0, 18, 5, + 7, 0, 19, 5, 7, 0, 20, 5, 7, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, + 2, 0, 27, 5, 7, 0, 28, 5, 7, 0, 29, 5, 7, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 2, 0, 33, 5, 2, 0, 34, 5, + 2, 0, 35, 5, 2, 0, 36, 5, 2, 0, 37, 5, 2, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, 4, 0, 41, 5, 4, 0, 42, 5, + 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 7, 0, 46, 5, 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, + 7, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, 7, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 7, 0, 58, 5, + 7, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0,238, 1, 0, 0, 64, 5, 7, 0, 65, 5, + 7, 0, 66, 5, 4, 0, 67, 5, 4, 0, 68, 5, 7, 0, 69, 5, 7, 0, 70, 5, 2, 0, 71, 5, 2, 0, 72, 5, 7, 0, 73, 5, + 2, 0, 74, 5, 2, 0, 75, 5, 4, 0, 76, 5, 2, 0, 77, 5, 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 80, 5, 7, 0, 81, 5, + 7, 0, 70, 0, 42, 0, 82, 5, 0, 0, 83, 5,185, 0, 9, 0,185, 0, 0, 0,185, 0, 1, 0, 0, 0, 20, 0, 2, 0, 84, 5, + 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 43, 0, 7, 0, 87, 5, 7, 0, 70, 0,186, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, + 2, 0,109, 0, 2, 0, 88, 5, 7, 0, 89, 5, 7, 0, 70, 0, 42, 0, 90, 5,187, 0, 5, 0, 7, 0, 91, 5, 0, 0, 17, 0, + 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,188, 0, 26, 0, 7, 0,123, 4, 7, 0,124, 4, 2, 0, 69, 1, 2, 0, 19, 0, + 2, 0, 92, 5, 2, 0,136, 1, 2, 0,126, 4, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4, +187, 0, 93, 5, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0, 94, 5, + 2, 0,238, 4,186, 0, 95, 5, 2, 0, 96, 5, 2, 0,240, 4, 2, 0,243, 4, 2, 0,244, 4,189, 0, 5, 0,189, 0, 0, 0, +189, 0, 1, 0, 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,190, 0, 6, 0,191, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, + 9, 0,100, 5, 0, 0,101, 5, 4, 0, 37, 0,192, 0, 6, 0,190, 0,102, 5, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, + 2, 0,105, 5, 9, 0,106, 5,193, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0,107, 5,194, 0, 14, 0, + 2, 0, 19, 0, 2, 0,108, 5, 2, 0,109, 5, 2, 0,110, 5,193, 0,111, 5, 9, 0,106, 5, 7, 0,112, 5, 7, 0, 57, 0, + 4, 0,113, 5, 4, 0,114, 5, 4, 0,115, 5, 4, 0,116, 5, 46, 0,134, 0, 32, 0,164, 0,195, 0, 4, 0,195, 0, 0, 0, +195, 0, 1, 0, 0, 0,117, 5, 7, 0,118, 5,196, 0, 6, 0,190, 0,102, 5, 7, 0,119, 5, 4, 0, 90, 0, 0, 0,120, 5, + 0, 0,121, 5, 0, 0,190, 2,197, 0, 7, 0,190, 0,102, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,122, 5, + 86, 0,123, 5, 9, 0,106, 5,198, 0, 74, 0,197, 0,124, 5,197, 0,125, 5,196, 0, 80, 3, 7, 0,126, 5, 2, 0,127, 5, + 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 2, 0,227, 3, 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, + 2, 0,135, 5, 2, 0,113, 5, 2, 0,136, 5, 2, 0,137, 5, 2, 0,138, 5, 2, 0,139, 5, 7, 0,140, 5, 7, 0,141, 5, + 7, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, +192, 0,150, 5,194, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 0, 0,157, 5, + 0, 0,158, 5, 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 2, 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, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, + 2, 0,174, 5, 0, 0,175, 5, 0, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 32, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, + 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, + 2, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 4, 0,193, 5, 4, 0,194, 5,199, 0, 8, 0, 4, 0,195, 5, 4, 0,196, 5, + 4, 0,197, 5, 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, 4, 0, 54, 0, 4, 0,125, 2,200, 0, 3, 0, 7, 0,201, 5, + 2, 0,202, 5, 2, 0, 19, 0,201, 0, 2, 0, 7, 0,203, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 32, 0,204, 5,176, 0,205, 5, 46, 0,206, 5, 47, 0,238, 0, 12, 0,207, 5,177, 0,208, 5, 32, 0,209, 5, 7, 0,210, 5, + 7, 0,211, 5, 7, 0,212, 5, 7, 0,213, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,202, 0,214, 5, +198, 0,215, 5,203, 0,216, 5,184, 0,182, 0,182, 0,217, 5, 12, 0,100, 0, 12, 0,218, 5, 12, 0,219, 5,204, 0,220, 5, + 2, 0,221, 5, 2, 0,222, 5, 2, 0,247, 0, 2, 0,223, 5, 4, 0,224, 5, 4, 0,225, 5, 12, 0,226, 5,187, 0, 93, 5, +188, 0,227, 5,200, 0,228, 5,162, 0, 93, 3,201, 0,229, 5,205, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, + 7, 0, 90, 2, 7, 0,106, 0, 7, 0,230, 5,206, 0, 36, 0, 7, 0,231, 5, 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, 76, 1, 7, 0,240, 5, 7, 0,241, 5, + 7, 0,242, 5, 7, 0,243, 5, 7, 0,171, 0, 2, 0,244, 5, 2, 0,245, 5, 2, 0, 70, 2, 2, 0,246, 5, 2, 0,247, 5, + 2, 0,248, 5, 2, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 71, 0,252, 5,162, 0, 93, 3,206, 0,253, 5,207, 0,254, 5, +208, 0,255, 5,209, 0, 0, 6,210, 0, 1, 6,211, 0, 2, 6, 7, 0, 3, 6, 2, 0, 4, 6, 2, 0, 5, 6, 4, 0,238, 1, +212, 0, 54, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 7, 0,239, 5, + 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 10, 6, 2, 0,248, 5, 2, 0,249, 5, 32, 0,204, 5, 32, 0, 11, 6,205, 0, 12, 6, +212, 0,253, 5, 0, 0, 13, 6, 4, 0,111, 3, 4, 0, 14, 6, 2, 0, 15, 6, 2, 0, 70, 0, 2, 0, 16, 6, 2, 0, 17, 6, + 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 18, 6, 7, 0,112, 0, 7, 0, 19, 6, 7, 0, 20, 6, 7, 0, 21, 6, + 7, 0, 22, 6, 7, 0, 23, 6, 7, 0,171, 0, 7, 0,210, 5, 2, 0, 24, 6, 2, 0,121, 1, 2, 0, 25, 6, 2, 0, 26, 6, + 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, 4, 0, 33, 6, 12, 0, 34, 6, + 2, 0, 35, 6, 2, 0,139, 2, 2, 0, 36, 6, 0, 0, 37, 6, 0, 0, 38, 6, 9, 0, 39, 6,162, 0, 93, 3,214, 0, 25, 0, + 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 40, 6, 23, 0, 41, 6, 23, 0, 42, 6, 7, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, + 7, 0, 46, 6, 2, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, 2, 0, 19, 0, 2, 0, 52, 6, + 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 17, 6, 7, 0, 57, 6, 7, 0, 58, 6, 4, 0, 59, 6, + 4, 0, 60, 6,213, 0, 6, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, +215, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,216, 0, 61, 6, + 46, 0,134, 0,217, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, +214, 0, 62, 6,218, 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, 17, 6, +219, 0, 20, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,207, 0,254, 5, +214, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, 2, 0, 52, 6, 2, 0, 71, 6, 0, 0, 19, 0, + 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 72, 6, 4, 0, 73, 6, 27, 0, 74, 6,220, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, + 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 7, 0, 89, 2, 7, 0, 90, 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,162, 0, 93, 3,221, 0, 16, 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,181, 1, + 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, 2, 0, 88, 6, 2, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6,222, 0, 16, 0, +213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 4, 0, 37, 0,221, 0, 92, 6,223, 0, 93, 6, 12, 0, 94, 6, + 12, 0, 95, 6,224, 0, 96, 6,211, 0, 97, 6,225, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0,101, 6, 2, 0, 70, 0, +226, 0, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, + 12, 0,102, 6,227, 0,103, 6, 0, 0,104, 6,228, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 19, 0, 2, 0,108, 6, + 2, 0,109, 6, 2, 0, 37, 0,229, 0, 29, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, + 2, 0, 9, 6, 47, 0,229, 2, 45, 0, 57, 1, 63, 0,110, 6, 2, 0,133, 0, 2, 0,111, 6, 2, 0, 70, 0, 2, 0,112, 6, + 4, 0, 19, 0, 2, 0,113, 6, 2, 0,114, 6, 2, 0,115, 6, 2, 0,238, 1, 0, 0,116, 6, 0, 0,117, 6, 0, 0,118, 6, + 0, 0, 17, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 78, 6, 7, 0,121, 1, 7, 0,119, 6, 7, 0,120, 6,162, 0, 93, 3, +230, 0, 11, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 65, 6, + 2, 0, 19, 0, 4, 0, 37, 0,218, 0, 63, 6,214, 0, 62, 6,231, 0, 27, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 42, 0,121, 6, 4, 0,122, 6, 4, 0,123, 6, 2, 0, 90, 0, 2, 0,133, 0, + 2, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 4, 0,127, 6, 4, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 2, 0,131, 6, + 2, 0,132, 6, 7, 0,133, 6, 23, 0,134, 6, 23, 0,135, 6, 4, 0,136, 6, 4, 0,137, 6, 0, 0,138, 6, 0, 0,139, 6, +232, 0, 10, 0, 27, 0, 31, 0, 9, 0,140, 6, 9, 0,141, 6, 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 4, 0, 90, 0, + 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,233, 0, 10, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, + 7, 0, 8, 6,232, 0,148, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,149, 6,234, 0, 8, 0,213, 0, 0, 0, +213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6,214, 0, 62, 6, 4, 0, 19, 0, 4, 0,150, 6,235, 0, 23, 0, +213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 27, 0,151, 6, + 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,152, 6, 9, 0,153, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,154, 6, + 7, 0,155, 6, 60, 0, 58, 1, 60, 0,156, 6, 4, 0,157, 6, 2, 0,158, 6, 2, 0, 37, 0,162, 0, 93, 3,236, 0, 10, 0, +213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 19, 0, 2, 0,120, 3, + 4, 0, 37, 0,162, 0, 93, 3,237, 0, 42, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, + 2, 0, 9, 6,214, 0, 62, 6,223, 0, 93, 6, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0, 89, 6, + 2, 0, 19, 0, 2, 0, 83, 6, 9, 0,153, 6, 4, 0, 86, 6, 4, 0,159, 6, 4, 0,160, 6, 4, 0, 87, 6, 23, 0,161, 6, + 23, 0,162, 6, 7, 0,163, 6, 7, 0,164, 6, 7, 0,165, 6, 7, 0,152, 6, 2, 0,166, 6, 2, 0,237, 0, 2, 0,181, 1, + 2, 0, 85, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,167, 6, 2, 0,168, 6, 9, 0,169, 6, 9, 0,170, 6, 9, 0,171, 6, + 9, 0,172, 6, 9, 0,173, 6, 2, 0,174, 6, 0, 0, 91, 6, 57, 0,175, 6,238, 0, 7, 0,238, 0, 0, 0,238, 0, 1, 0, + 4, 0,176, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,177, 6, 4, 0, 17, 0,239, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, + 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 4, 0, 17, 0, 4, 0,178, 6, 4, 0, 19, 0, 4, 0,124, 6, + 12, 0,179, 6, 12, 0,180, 6, 0, 0,181, 6, 0, 0,182, 6,240, 0, 5, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 4, 0, 37, 0,241, 0, 7, 0,241, 0, 0, 0,241, 0, 1, 0, 0, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, + 2, 0,186, 6, 2, 0, 37, 0,242, 0, 12, 0, 2, 0,185, 6, 2, 0,187, 6, 2, 0,188, 6, 0, 0,190, 2, 2, 0,189, 6, + 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6, 2, 0, 52, 6, 7, 0,194, 6, 7, 0,195, 6,243, 0, 18, 0, +243, 0, 0, 0,243, 0, 1, 0, 0, 0,233, 3,242, 0,196, 6,242, 0,197, 6,242, 0,198, 6,242, 0,199, 6, 7, 0,200, 6, + 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, + 2, 0,209, 6, 2, 0,210, 6,244, 0, 10, 0, 0, 0,211, 6, 0, 0,212, 6, 0, 0,213, 6, 0, 0,214, 6, 0, 0,215, 6, + 0, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6, 2, 0, 37, 0,245, 0, 8, 0, 0, 0,220, 6, 0, 0,221, 6, + 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, 0, 0,225, 6, 7, 0,230, 5, 7, 0, 37, 0,246, 0, 17, 0,244, 0,226, 6, +244, 0,227, 6,244, 0,228, 6,244, 0,229, 6,244, 0,230, 6,244, 0,231, 6,244, 0,232, 6,244, 0,233, 6,244, 0,234, 6, +244, 0,235, 6,244, 0,236, 6,244, 0,237, 6,244, 0,238, 6,244, 0,239, 6,244, 0,240, 6,245, 0,241, 6, 0, 0,242, 6, +247, 0, 71, 0, 0, 0,243, 6, 0, 0,244, 6, 0, 0,215, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7, 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, 92, 0,247, 0, 5, 0, 0, 0, 41, 7, 0, 0,252, 6, 0, 0,254, 6, 2, 0, 19, 0, 2, 0, 37, 0,248, 0, 24, 0, -248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 42, 7,246, 0, 43, 7,246, 0, 44, 7,246, 0, 45, 7,246, 0, 46, 7, -246, 0, 47, 7,246, 0, 48, 7,246, 0, 49, 7,246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7, -246, 0, 55, 7,246, 0, 56, 7,246, 0, 57, 7,246, 0, 58, 7,246, 0, 59, 7,247, 0, 60, 7, 4, 0, 61, 7, 4, 0, 37, 0, -249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 62, 7, 7, 0, 43, 2,250, 0, 73, 0, 4, 0, 19, 0, - 4, 0, 63, 7, 4, 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, 2, 0, 74, 7, 2, 0, 37, 0, 4, 0, 75, 7, 4, 0, 76, 7, 4, 0, 77, 7, - 4, 0, 78, 7, 2, 0, 79, 7, 2, 0, 80, 7, 4, 0, 81, 7, 4, 0, 82, 7, 4, 0, 83, 7, 4, 0, 84, 7, 4, 0, 85, 7, - 4, 0,163, 6, 4, 0, 86, 7, 2, 0, 87, 7, 2, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7, 12, 0, 91, 7, 12, 0, 92, 7, - 12, 0, 93, 7, 12, 0, 94, 7, 0, 0, 95, 7, 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7, - 2, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7,249, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7, - 2, 0,109, 7, 2, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 4, 0,113, 7, 4, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, - 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, - 2, 0,125, 7, 2, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 7, 0,129, 7, 2, 0,140, 5, 2, 0,141, 5, 55, 0,130, 7, -215, 0, 21, 0, 27, 0, 31, 0, 12, 0,131, 7, 12, 0,132, 7, 12, 0,133, 7, 12, 0,246, 5, 46, 0,134, 0, 46, 0,134, 7, - 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 2, 0,141, 7, 2, 0, 37, 0, - 2, 0,142, 7, 2, 0,143, 7, 4, 0, 70, 0,210, 0,144, 7, 9, 0,145, 7, 2, 0,146, 7,251, 0, 5, 0,251, 0, 0, 0, -251, 0, 1, 0,251, 0,147, 7, 13, 0,148, 7, 4, 0, 19, 0,252, 0, 7, 0,252, 0, 0, 0,252, 0, 1, 0,251, 0,149, 7, -251, 0,150, 7, 2, 0,248, 4, 2, 0, 19, 0, 4, 0, 37, 0,253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0,254, 0,151, 7, -255, 0, 82, 6, 0, 0,152, 7, 0, 0,153, 7, 0, 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, 37, 0, 2, 0, 19, 0, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 4, 0,163, 7,253, 0,164, 7, - 9, 0,165, 7, 4, 0,166, 7, 4, 0,167, 7, 4, 0,168, 7, 4, 0,169, 7, 0, 0,170, 7, 0, 1, 22, 0, 0, 1, 0, 0, - 0, 1, 1, 0,251, 0,149, 7,251, 0,150, 7,251, 0,171, 7,251, 0,172, 7,215, 0,173, 7, 23, 0, 52, 0, 0, 0,247, 5, - 0, 0,174, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,175, 7, 2, 0, 37, 0, 2, 0,138, 7, 2, 0,161, 6, 2, 0, 19, 0, - 1, 1,151, 7, 12, 0,176, 7, 12, 0,246, 5, 12, 0,177, 7, 12, 0,178, 7, 2, 1, 21, 0, 2, 1, 0, 0, 2, 1, 1, 0, -213, 0, 46, 6, 23, 0,179, 7, 23, 0,180, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, - 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,137, 7, 2, 0,141, 7, 4, 0, 43, 0, 3, 1,151, 7, 12, 0,184, 7, 12, 0,185, 7, - 12, 0,177, 7, 0, 0,186, 7, 9, 0,187, 7, 4, 1, 12, 0, 0, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, - 2, 0,192, 7, 2, 0,235, 4, 2, 0,230, 4,215, 0,193, 7, 46, 0,194, 7, 4, 0,195, 7, 4, 0,196, 7, 0, 0, 35, 0, - 5, 1, 1, 0, 0, 0,197, 7, 6, 1, 8, 0, 57, 0,198, 7, 57, 0,199, 7, 6, 1,200, 7, 6, 1,201, 7, 6, 1,202, 7, - 2, 0,129, 0, 2, 0, 19, 0, 4, 0,203, 7, 7, 1, 4, 0, 4, 0,106, 6, 4, 0,204, 7, 4, 0,111, 6, 4, 0,205, 7, - 8, 1, 2, 0, 4, 0,206, 7, 4, 0,207, 7, 9, 1, 7, 0, 7, 0,208, 7, 7, 0,209, 7, 7, 0,210, 7, 4, 0, 19, 0, - 4, 0, 37, 0, 7, 0,114, 4, 7, 0,211, 7, 10, 1, 6, 0, 0, 0,212, 7, 0, 0, 65, 6, 49, 0,137, 0, 2, 0,106, 0, - 2, 0,234, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0, 11, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, - 4, 0,213, 7, 4, 0,214, 7, 4, 0,215, 7, 5, 1,216, 7, 0, 0,212, 7, 4, 0,217, 7, 4, 0,218, 7, 10, 1, 87, 3, - 7, 1,219, 7, 8, 1,220, 7, 9, 1,221, 7, 6, 1,222, 7, 6, 1,223, 7, 6, 1,224, 7, 57, 0,225, 7, 57, 0,226, 7, - 12, 1, 12, 0, 0, 0, 5, 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,227, 7, 9, 0,228, 7, 9, 0,232, 0, 9, 0,234, 0, 13, 1, 43, 0, 13, 1, 0, 0, 13, 1, 1, 0, - 9, 0,229, 7, 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,230, 7, - 4, 0,231, 7, 4, 0,214, 7, 4, 0,215, 7, 4, 0,232, 7, 4, 0,246, 0, 4, 0,233, 7, 4, 0,234, 7, 7, 0,106, 5, - 7, 0,235, 7, 4, 0,126, 0, 4, 0,236, 7, 11, 1,237, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,238, 7, - 7, 0,239, 7, 12, 1, 59, 1, 13, 1,240, 7, 13, 1,241, 7, 13, 1,242, 7, 12, 0,243, 7, 14, 1,244, 7, 15, 1,245, 7, - 7, 0,246, 7, 7, 0,247, 7, 4, 0,248, 7, 7, 0,249, 7, 9, 0,250, 7, 4, 0,251, 7, 4, 0,252, 7, 4, 0,253, 7, - 7, 0,254, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0, 12, 0,255, 7, 13, 1, 0, 8,201, 0, 6, 0, 12, 0, 1, 8, - 12, 0,243, 7, 12, 0, 2, 8, 13, 1, 3, 8, 0, 0, 4, 8, 0, 0, 5, 8, 17, 1, 4, 0, 7, 0, 6, 8, 7, 0,109, 0, - 2, 0, 7, 8, 2, 0, 8, 8, 18, 1, 6, 0, 7, 0, 9, 8, 7, 0, 10, 8, 7, 0, 11, 8, 7, 0, 12, 8, 4, 0, 13, 8, - 4, 0, 14, 8, 19, 1, 12, 0, 7, 0, 15, 8, 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8, - 7, 0, 21, 8, 7, 0, 22, 8, 7, 0, 23, 8, 7, 0, 24, 8, 4, 0,233, 2, 4, 0, 25, 8, 20, 1, 2, 0, 7, 0, 74, 5, - 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 26, 8, 7, 0, 27, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 28, 8, 22, 1, 6, 0, - 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 23, 1, 8, 0, 23, 1, 0, 0, - 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 24, 1, 45, 0, - 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 30, 8, - 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 32, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 33, 8, 7, 0, 34, 8, - 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 39, 8, 7, 0, 40, 8, - 7, 0, 37, 0, 7, 0, 41, 8, 7, 0, 42, 8, 7, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8, - 2, 0, 48, 8, 2, 0, 49, 8, 2, 0, 50, 8, 2, 0, 51, 8, 2, 0, 28, 2, 2, 0, 52, 8, 2, 0, 25, 2, 2, 0, 53, 8, - 0, 0, 54, 8, 0, 0, 55, 8, 7, 0,240, 0, 25, 1, 56, 8, 67, 0,241, 1, 26, 1, 16, 0, 26, 1, 0, 0, 26, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 29, 8, 2, 0,242, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, - 7, 0,241, 2, 7, 0,242, 2, 7, 0, 57, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,227, 0, 5, 0, 2, 0, 17, 0, - 2, 0,203, 7, 2, 0, 19, 0, 2, 0, 58, 8, 27, 0,135, 6,226, 0, 3, 0, 4, 0, 69, 0, 4, 0, 59, 8,227, 0, 2, 0, - 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 60, 8, - 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 61, 8, 4, 0, 62, 8, 4, 0, 37, 0, 29, 1, 4, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0, 0, 0, 20, 0, 66, 0, 63, 8, 7, 0, 76, 1, 7, 0, 37, 0, - 31, 1, 6, 0, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 17, 0, 2, 0, 66, 8, 0, 0, 67, 8, 0, 0, 68, 8, 32, 1, 5, 0, - 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 69, 8, 0, 0, 70, 8, 33, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, - 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 71, 8, 2, 0, 72, 8, 2, 0, 19, 0, 2, 0, 37, 0, 35, 1, 6, 0, 0, 0, 20, 0, - 0, 0, 73, 8, 2, 0, 74, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 36, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, - 7, 0,116, 4, 2, 0, 19, 0, 2, 0,205, 2, 37, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 71, 8, 38, 1, 7, 0, - 0, 0, 20, 0, 7, 0,116, 4, 0, 0, 75, 8, 0, 0, 76, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 77, 8, 39, 1, 4, 0, - 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0,209, 2, 40, 1, 3, 0, 32, 0, 80, 8, 0, 0, 81, 8, 0, 0, 82, 8, - 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0, 19, 0, 2, 0, 84, 8, 2, 0, 85, 8, - 2, 0, 86, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 42, 1, 87, 8, 32, 0, 45, 0, 2, 0, 90, 5, - 2, 0,246, 7, 2, 0, 88, 8, 2, 0, 37, 0, 43, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 89, 8, 2, 0, 19, 0, - 2, 0,205, 2, 2, 0, 90, 8, 4, 0, 91, 8, 4, 0, 92, 8, 4, 0, 93, 8, 4, 0, 94, 8, 4, 0, 95, 8, 44, 1, 1, 0, - 0, 0, 96, 8, 45, 1, 4, 0, 42, 0,105, 6, 0, 0, 97, 8, 4, 0, 69, 1, 4, 0, 19, 0, 42, 1, 18, 0, 42, 1, 0, 0, - 42, 1, 1, 0, 42, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 99, 8, 2, 0, 86, 8, 2, 0, 83, 8, 2, 0,100, 8, - 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1, 87, 8, 41, 1,101, 8, 2, 0, 15, 0, 2, 0,102, 8, - 4, 0,103, 8, 47, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 48, 1, 12, 0,160, 0,104, 8, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0,106, 8, 2, 0,107, 8, 2, 0,108, 8, - 2, 0,109, 8, 7, 0,110, 8, 49, 1, 13, 0, 2, 0, 19, 0, 2, 0,111, 8, 4, 0, 31, 8, 4, 0, 89, 0, 2, 0,112, 8, - 7, 0,242, 3, 7, 0,113, 8, 14, 1,244, 7, 50, 1,114, 8, 2, 0, 17, 0, 2, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8, - 51, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,118, 8, 0, 0, 20, 0, 7, 0,119, 8, - 7, 0,120, 8, 7, 0,128, 3, 2, 0,121, 8, 2, 0,122, 8, 52, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, - 46, 0,134, 0, 32, 0,189, 5, 53, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 69, 8, 32, 0, 45, 0, - 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 83, 8, 2, 0,129, 3, 7, 0,123, 8, 7, 0,124, 8, 7, 0, 64, 1, - 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,125, 8, 7, 0,126, 8, 32, 0,127, 8, 55, 1, 10, 0, 2, 0, 19, 0, - 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,105, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,128, 8, - 2, 0,129, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,130, 8, 7, 0,131, 8, 7, 0,235, 2, 2, 0, 19, 0, - 2, 0,205, 2, 7, 0,132, 8, 57, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, - 2, 0,133, 8, 4, 0, 37, 0, 7, 0,134, 8, 7, 0,135, 8, 7, 0,136, 8, 7, 0,137, 8, 0, 0,138, 8, 58, 1, 9, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,128, 8, - 2, 0,129, 8, 59, 1, 7, 0, 4, 0,193, 2, 4, 0,139, 8, 4, 0,140, 8, 4, 0,141, 8, 7, 0,142, 8, 7, 0,143, 8, - 0, 0, 75, 8, 60, 1, 7, 0, 0, 0,144, 8, 32, 0,145, 8, 0, 0, 81, 8, 2, 0,146, 8, 2, 0, 43, 0, 4, 0, 70, 0, - 0, 0, 82, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 31, 8, 4, 0, 89, 0, 0, 0,147, 8, 0, 0,148, 8, - 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,149, 8, 7, 0,150, 8, - 42, 0,105, 6, 64, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 65, 1, 2, 0, 4, 0, 17, 0, - 4, 0, 26, 6, 66, 1, 6, 0, 0, 0, 78, 8, 0, 0, 79, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,151, 8, - 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 98, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 8, 2, 0,152, 8, - 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0, 7, 0,128, 3, 7, 0,153, 8, 7, 0,154, 8, 7, 0,155, 8, - 7, 0,156, 8, 4, 0, 19, 0, 7, 0,133, 8, 7, 0,157, 8, 7, 0,158, 8, 7, 0, 37, 0, 15, 1, 12, 0, 15, 1, 0, 0, - 15, 1, 1, 0, 14, 1,159, 8, 9, 0,223, 0, 4, 0,171, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,160, 8, 4, 0,161, 8, - 4, 0,162, 8, 7, 0,242, 3, 7, 0, 37, 0, 50, 1, 8, 0, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8, - 7, 0,167, 8, 7, 0,168, 8, 7, 0,169, 8, 7, 0,170, 8, 14, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, - 9, 0,223, 0, 43, 0,171, 8, 36, 0, 80, 0, 7, 0,242, 3, 7, 0,172, 8, 7, 0,113, 8, 7, 0,163, 8, 7, 0,164, 8, - 7, 0,173, 8, 4, 0, 90, 0, 4, 0,162, 8, 9, 0,174, 8, 68, 1, 15, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, - 4, 0,247, 5, 7, 0,248, 5, 0, 1,175, 8,213, 0, 46, 6, 14, 1,244, 7, 2, 0, 69, 1, 2, 0,111, 8, 2, 0, 89, 2, - 2, 0, 90, 2, 2, 0, 19, 0, 2, 0, 98, 6, 4, 0, 70, 0, 69, 1, 6, 0, 69, 1, 0, 0, 69, 1, 1, 0, 32, 0, 45, 0, - 9, 0,176, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,177, 8, 4, 0,131, 0, 7, 0,178, 8, - 70, 1, 26, 0, 70, 1, 0, 0, 70, 1, 1, 0, 26, 0,179, 8, 70, 1, 38, 0, 12, 0,180, 8, 0, 0, 20, 0, 7, 0,181, 8, - 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 4, 0, 19, 0, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0, 76, 1, - 7, 0, 36, 2, 7, 0,188, 8, 7, 0,191, 2, 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 7, 0,193, 8, - 7, 0,172, 0, 2, 0,131, 0, 2, 0,121, 5, 71, 1, 24, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,194, 8, 12, 0,195, 8, - 12, 0,196, 8, 70, 1,197, 8, 9, 0,198, 8, 9, 0,199, 8, 4, 0, 19, 0, 4, 0,255, 5, 2, 0,247, 2, 2, 0, 56, 6, - 2, 0,131, 0, 2, 0,200, 8, 2, 0,201, 8, 2, 0,202, 8, 2, 0,203, 8, 2, 0,204, 8, 4, 0,205, 8, 4, 0,206, 8, - 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 72, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, 73, 1, 5, 0, - 72, 1,211, 8, 4, 0,191, 2, 4, 0,212, 8, 4, 0,213, 8, 4, 0, 19, 0, 74, 1, 6, 0, 4, 0, 37, 0, 4, 0, 56, 6, - 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 4, 0,210, 8, 75, 1, 42, 0, 75, 1, 0, 0, 75, 1, 1, 0, 26, 0,179, 8, - 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,214, 8, 2, 0,215, 8, 2, 0,216, 8, 2, 0,114, 3, 2, 0,217, 8, - 4, 0, 72, 2, 4, 0,207, 8, 4, 0,208, 8, 70, 1,218, 8, 75, 1, 38, 0, 75, 1,219, 8, 12, 0,220, 8, 9, 0,221, 8, - 9, 0,222, 8, 9, 0,223, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,224, 8, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,107, 3, - 2, 0,137, 3, 2, 0, 37, 0, 7, 0,225, 8, 7, 0,226, 8, 7, 0,110, 3, 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, 7, 0, 65, 2, 32, 0,235, 8,161, 0, 11, 0, - 12, 0,236, 8, 2, 0, 19, 0, 2, 0,237, 8, 7, 0,101, 2, 7, 0,238, 8, 7, 0,239, 8, 12, 0,240, 8, 4, 0,241, 8, - 4, 0,242, 8, 9, 0,243, 8, 9, 0,244, 8, 76, 1, 1, 0, 4, 0,242, 8, 77, 1, 12, 0, 4, 0,242, 8, 7, 0, 95, 8, - 2, 0,245, 8, 2, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 2, 0,249, 8, 2, 0, 19, 0, 7, 0,250, 8, 7, 0,251, 8, - 7, 0,252, 8, 7, 0,253, 8, 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,254, 8, 4, 0, 19, 0, 4, 0,255, 8, - 0, 0,233, 3,247, 0, 0, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 1, 9, 12, 0,236, 8, 12, 0, 2, 9, 12, 0,100, 0, - 4, 0, 19, 0, 4, 0, 3, 9,217, 0, 4, 0, 27, 0,159, 8, 12, 0,236, 8, 4, 0, 4, 9, 4, 0, 19, 0, 79, 1, 17, 0, -212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,160, 0, 90, 3, -217, 0, 5, 9, 0, 0, 69, 1, 0, 0, 49, 6, 2, 0, 19, 0, 2, 0, 6, 9, 2, 0, 99, 6, 2, 0, 98, 6, 2, 0, 7, 9, - 7, 0, 8, 9, 80, 1, 8, 0, 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 9, 9, 36, 0, 80, 0, 12, 0, 94, 3, 4, 0, 19, 0, - 0, 0, 20, 0, 4, 0, 10, 9, 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 11, 9, - 82, 1, 14, 0, 82, 1, 0, 0, 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 12, 9, 0, 0, 13, 9, - 0, 0, 11, 9, 7, 0, 14, 9, 7, 0, 15, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 16, 9, 7, 0, 17, 9, 83, 1, 9, 0, - 83, 1, 0, 0, 83, 1, 1, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 19, 9, 2, 0, 20, 9, 2, 0, 19, 0, 2, 0, 17, 0, - 2, 0, 21, 9, 84, 1, 7, 0, 42, 0,105, 6, 26, 0,179, 8, 4, 0, 19, 0, 4, 0, 22, 9, 12, 0, 23, 9, 32, 0, 18, 9, - 0, 0,250, 2, 85, 1, 15, 0, 32, 0, 18, 9, 2, 0, 24, 9, 2, 0, 19, 0, 2, 0, 25, 9, 2, 0, 26, 9, 0, 0,250, 2, - 32, 0, 27, 9, 0, 0, 28, 9, 7, 0, 29, 9, 7, 0, 36, 2, 7, 0, 30, 9, 7, 0, 31, 9, 2, 0, 17, 0, 2, 0, 69, 1, - 7, 0, 76, 1, 86, 1, 6, 0, 32, 0, 18, 9, 7, 0,211, 8, 2, 0, 32, 9, 2, 0, 33, 9, 2, 0, 19, 0, 2, 0, 34, 9, - 87, 1, 6, 0, 32, 0, 18, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, 88, 1, 4, 0, - 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9, - 0, 0,250, 2, 90, 1, 10, 0, 32, 0, 18, 9, 4, 0, 37, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,101, 6, 2, 0, 38, 9, - 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 39, 9, 0, 0,250, 2, 91, 1, 4, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 35, 9, - 0, 0,250, 2, 92, 1, 10, 0, 32, 0, 18, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,130, 8, - 7, 0,131, 8, 4, 0, 37, 0,160, 0,104, 8, 0, 0,250, 2, 93, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 40, 9, - 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 18, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 95, 1, 5, 0, 32, 0, 18, 9, - 7, 0,125, 0, 4, 0, 41, 9, 4, 0,115, 3, 4, 0,116, 3, 96, 1, 6, 0, 32, 0, 18, 9, 4, 0, 42, 9, 4, 0, 43, 9, - 7, 0, 44, 9, 7, 0, 45, 9, 0, 0,250, 2, 97, 1, 16, 0, 32, 0, 18, 9, 32, 0,219, 8, 4, 0, 17, 0, 7, 0, 46, 9, - 7, 0, 47, 9, 7, 0, 48, 9, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, 7, 0, 54, 9, - 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 98, 1, 3, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 28, 2, - 99, 1, 5, 0, 32, 0, 18, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 55, 9, 0, 0,250, 2,100, 1, 10, 0, 32, 0, 18, 9, - 0, 0,250, 2, 2, 0, 56, 9, 2, 0, 57, 9, 0, 0, 58, 9, 0, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 7, 0, 62, 9, - 7, 0, 63, 9,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9, 7, 0, 65, 9, - 2, 0, 19, 0, 2, 0, 28, 2,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 64, 9, - 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0, 64, 9, 7, 0, 65, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 7, 0, 32, 0, 18, 9, 0, 0,250, 2, 7, 0, 76, 1, - 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,105, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, 2, 0, 54, 3, - 0, 0, 56, 3, 0, 0, 66, 9,106, 1, 10, 0,106, 1, 0, 0,106, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 67, 9, - 7, 0, 20, 1, 7, 0, 21, 1, 2, 0,254, 8, 2, 0, 68, 9, 32, 0, 45, 0,107, 1, 22, 0,107, 1, 0, 0,107, 1, 1, 0, - 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 69, 9, 2, 0, 70, 9, 36, 0, 80, 0,160, 0,104, 8, 32, 0,164, 0, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, 7, 0, 74, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8, - 7, 0, 76, 9, 0, 0, 77, 9, 0, 0, 78, 9, 12, 0, 96, 3,108, 1, 8, 0, 7, 0, 43, 2, 7, 0,130, 8, 7, 0,131, 8, - 9, 0, 2, 0, 2, 0, 79, 9, 2, 0, 80, 9, 2, 0, 81, 9, 2, 0, 82, 9,109, 1, 18, 0,109, 1, 0, 0,109, 1, 1, 0, -109, 1, 83, 9, 0, 0, 20, 0,108, 1, 84, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 85, 9, 2, 0, 86, 9, 2, 0, 87, 9, - 2, 0, 88, 9, 4, 0, 43, 0, 7, 0, 89, 9, 7, 0, 90, 9, 4, 0, 91, 9, 4, 0, 92, 9,109, 1, 93, 9,110, 1, 94, 9, -111, 1, 33, 0,111, 1, 0, 0,111, 1, 1, 0,111, 1, 95, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,213, 7, - 2, 0,246, 7, 2, 0, 96, 9, 2, 0,133, 0, 2, 0, 86, 9, 2, 0,203, 7, 12, 0, 99, 8, 12, 0, 97, 9, 27, 0,135, 6, - 9, 0, 98, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0, 74, 2, 7, 0, 99, 9, 2, 0,100, 9, 2, 0,101, 9, 7, 0,102, 9, - 7, 0,103, 9, 2, 0,104, 9, 2, 0,105, 9, 9, 0,106, 9, 24, 0,107, 9, 24, 0,108, 9, 24, 0,109, 9,112, 1,150, 0, -113, 1,110, 9,114, 1,111, 9,110, 1, 8, 0,110, 1, 0, 0,110, 1, 1, 0,111, 1,112, 9,111, 1,113, 9,109, 1,114, 9, -109, 1, 93, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, 12, 0,115, 9, - 12, 0,116, 9,108, 1,117, 9, 12, 0,118, 9, 4, 0, 17, 0, 4, 0,119, 9, 4, 0,120, 9, 4, 0,121, 9, 4, 0, 19, 0, - 4, 0, 37, 0, 12, 0,122, 9,114, 1,123, 9,109, 1,124, 9,109, 1,125, 9, 9, 0,126, 9, 9, 0,127, 9, 4, 0,128, 9, - 9, 0,129, 9, 9, 0,130, 9, 9, 0,131, 9,115, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,203, 7, 0, 0,132, 9, - 0, 0,133, 9, 2, 0, 37, 0,116, 1, 16, 0, 2, 0,157, 7, 2, 0,158, 7, 2, 0,134, 9, 2, 0,154, 8, 2, 0,135, 9, - 2, 0, 68, 0, 7, 0,235, 2, 7, 0,136, 9, 7, 0,137, 9, 2, 0, 91, 1, 0, 0,138, 9, 0, 0,105, 5, 2, 0,139, 9, - 2, 0, 37, 0, 4, 0,140, 9, 4, 0,141, 9,117, 1, 9, 0, 7, 0,142, 9, 7, 0,143, 9, 7, 0,173, 8, 7, 0,109, 0, - 7, 0,144, 9, 7, 0, 62, 6, 2, 0,145, 9, 0, 0,146, 9, 0, 0, 37, 0,118, 1, 4, 0, 7, 0,147, 9, 7, 0,148, 9, - 2, 0,145, 9, 2, 0, 37, 0,119, 1, 3, 0, 7, 0,149, 9, 7, 0,150, 9, 7, 0, 15, 0,120, 1, 7, 0, 0, 0, 5, 2, - 2, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,180, 4, 4, 0,126, 0, 4, 0, 34, 4,121, 1, 7, 0, 7, 0,151, 9, - 7, 0,152, 9, 7, 0,153, 9, 7, 0, 85, 2, 7, 0,154, 9, 7, 0,155, 9, 7, 0,156, 9,122, 1, 4, 0, 2, 0,157, 9, - 2, 0,158, 9, 2, 0,159, 9, 2, 0,160, 9,123, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,124, 1, 2, 0, 0, 0,166, 0, - 0, 0,161, 9,125, 1, 1, 0, 0, 0, 20, 0,126, 1, 10, 0, 0, 0,162, 9, 0, 0,163, 9, 0, 0, 55, 6, 0, 0,164, 9, - 2, 0,134, 9, 2, 0,165, 9, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, 7, 0, 75, 9,127, 1, 2, 0, 9, 0,169, 9, - 9, 0,170, 9,128, 1, 11, 0, 0, 0,234, 4, 0, 0, 17, 0, 0, 0,145, 9, 0, 0,109, 0, 0, 0,171, 9, 0, 0,106, 0, - 0, 0, 70, 2, 7, 0,172, 9, 7, 0,173, 9, 7, 0,174, 9, 7, 0,175, 9,129, 1, 8, 0, 7, 0, 64, 8, 7, 0,125, 0, - 7, 0,105, 5, 7, 0,157, 2, 7, 0,176, 9, 7, 0,236, 0, 7, 0,177, 9, 4, 0, 17, 0,130, 1, 4, 0, 2, 0,178, 9, - 2, 0,179, 9, 2, 0,180, 9, 2, 0, 37, 0,131, 1, 1, 0, 0, 0, 20, 0,132, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 2, 0, 19, 0, 2, 0,181, 9,133, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,116, 4, 7, 0,182, 9, 7, 0,183, 9, - 7, 0,184, 9, 7, 0,185, 9,132, 1,186, 9,132, 1,187, 9,132, 1,188, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, - 24, 0,189, 9, 24, 0,190, 9,133, 1,191, 9, 7, 0,192, 9, 7, 0,193, 9, 7, 0,194, 9, 7, 0,195, 9,134, 1, 4, 0, - 47, 0,229, 2, 7, 0,196, 9, 7, 0,170, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,134, 1,197, 9, 63, 0,186, 9, - 51, 0,134, 1, 2, 0, 19, 0, 2, 0,215, 5, 4, 0,106, 0, 7, 0,198, 9, 7, 0, 82, 2, 4, 0,199, 9, 7, 0,200, 9, - 7, 0,201, 9, 7, 0,202, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,203, 9, 0, 0,194, 6,135, 1, 10, 0, 4, 0, 17, 0, - 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,204, 9, 4, 0,205, 9, 4, 0,206, 9, 0, 0, 92, 0, 0, 0, 20, 0, - 9, 0, 2, 0, 91, 0, 6, 0,135, 1,207, 9, 4, 0,208, 9, 4, 0,209, 9, 4, 0,210, 9, 4, 0, 37, 0, 9, 0,211, 9, -136, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,137, 1, 5, 0, 7, 0,152, 2, - 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9, 7, 0,219, 2,138, 1, 5, 0, 32, 0,215, 9,139, 1, 22, 0, 7, 0,188, 5, - 7, 0,216, 9, 7, 0, 57, 0,140, 1, 7, 0, 4, 0,217, 9, 4, 0,218, 9, 4, 0,219, 9, 7, 0,220, 9, 7, 0,221, 9, - 7, 0,222, 9, 7, 0, 57, 0,141, 1, 8, 0,141, 1, 0, 0,141, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0, - 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 72, 8,142, 1, 6, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2, - 2, 0, 19, 0, 2, 0,223, 9,143, 1, 18, 0,137, 1,171, 3,137, 1,224, 9,136, 1,225, 9,137, 1, 56, 8,138, 1,226, 9, - 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,227, 9, 4, 0,217, 9, 4, 0,228, 9, 7, 0,221, 9, 7, 0,222, 9, - 7, 0,106, 0, 2, 0, 19, 0, 2, 0,229, 9, 2, 0,230, 9, 2, 0,231, 9,144, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0, -145, 1,232, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 56, 9, 2, 0,233, 9, 2, 0,234, 9, 2, 0,137, 3, - 2, 0,235, 9, 2, 0,236, 9, 2, 0,237, 9, 2, 0,238, 9, 2, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9, 2, 0,221, 4, - 2, 0, 98, 5, 2, 0,242, 9, 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9, 2, 0,246, 9, 2, 0, 25, 2, 2, 0, 49, 8, - 2, 0, 25, 8, 2, 0,247, 9, 2, 0,248, 9, 2, 0,187, 3, 2, 0,188, 3, 2, 0,249, 9, 2, 0,250, 9, 2, 0,251, 9, - 2, 0,252, 9, 7, 0,253, 9, 7, 0,254, 9, 7, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10, - 7, 0, 4, 10, 7, 0, 31, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 37, 8, 7, 0, 5, 10, 7, 0, 6, 10, 7, 0, 7, 10, - 4, 0, 32, 8, 4, 0, 30, 8, 4, 0, 8, 10, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 9, 10, 7, 0, 10, 10, - 7, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 57, 0, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, - 7, 0,128, 3, 7, 0,106, 0, 7, 0, 18, 10, 7, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10, - 7, 0, 24, 10, 4, 0, 25, 10, 4, 0, 26, 10, 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, - 7, 0,210, 0, 7, 0, 32, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, - 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10, - 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 4, 0, 47, 10, 67, 0,160, 3, 12, 0, 48, 10, 67, 0, 49, 10, 32, 0, 50, 10, - 32, 0, 51, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 52, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,144, 1, 53, 10, -143, 1, 54, 10,140, 1,219, 8,171, 0,238, 3, 9, 0,239, 3,146, 1, 55, 10,146, 1, 56, 10, 12, 0, 57, 10, 12, 0, 58, 10, -133, 0, 59, 10,141, 0, 60, 10,141, 0, 61, 10, 32, 0, 62, 10, 32, 0, 63, 10, 32, 0, 38, 0, 12, 0, 23, 9, 0, 0, 20, 0, - 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 64, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 32, 8, 4, 0, 65, 10, - 4, 0, 66, 10, 4, 0, 67, 10, 2, 0,247, 0, 2, 0, 68, 10, 2, 0, 69, 10, 2, 0, 70, 10, 0, 0, 71, 10, 2, 0, 72, 10, - 2, 0, 73, 10, 2, 0, 74, 10, 9, 0, 75, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 76, 10,147, 1, 77, 10,148, 1, 78, 10, - 7, 0, 79, 10,135, 0, 35, 0,149, 1,174, 8, 7, 0, 25, 4, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0,119, 4, 7, 0, 82, 10, - 7, 0,138, 3, 7, 0,128, 3, 7, 0, 83, 10, 7, 0, 84, 2, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 87, 10, - 7, 0, 88, 10, 7, 0, 89, 10, 7, 0, 26, 4, 7, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 27, 4, 7, 0, 23, 4, - 7, 0, 24, 4, 7, 0, 93, 10, 4, 0, 94, 10, 4, 0, 90, 0, 4, 0, 95, 10, 4, 0, 96, 10, 2, 0, 97, 10, 2, 0, 98, 10, - 2, 0, 99, 10, 2, 0,100, 10, 2, 0,101, 10, 2, 0,102, 10,169, 0, 56, 4,136, 0, 8, 0,149, 1,103, 10, 7, 0,104, 10, - 7, 0,105, 10, 7, 0,242, 1, 7, 0,106, 10, 4, 0, 90, 0, 2, 0,107, 10, 2, 0,108, 10,150, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,109, 10,151, 1, 6, 0,151, 1, 0, 0,151, 1, 1, 0,150, 1,211, 8, 4, 0,253, 0, - 2, 0,110, 10, 2, 0, 19, 0,152, 1, 5, 0,152, 1, 0, 0,152, 1, 1, 0, 12, 0,111, 10, 4, 0,112, 10, 4, 0, 19, 0, -153, 1, 9, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,124, 0,152, 1,113, 10, 4, 0, 19, 0, 2, 0,110, 10, 2, 0,114, 10, - 7, 0, 91, 0, 0, 0,115, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,250, 4, 4, 0, 19, 0, 2, 0,116, 10, 2, 0,117, 10, - 9, 0,118, 10,154, 1, 7, 0,154, 1, 0, 0,154, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,119, 10, - 0, 0,120, 10,155, 1, 5, 0, 12, 0,121, 10, 4, 0,122, 10, 4, 0,123, 10, 4, 0, 19, 0, 4, 0, 37, 0,156, 1, 18, 0, - 27, 0, 31, 0,157, 1,124, 10,157, 1,125, 10, 12, 0,126, 10, 4, 0,127, 10, 2, 0,128, 10, 2, 0, 37, 0, 12, 0,129, 10, - 12, 0,130, 10,155, 1,131, 10, 12, 0,132, 10, 12, 0,133, 10, 12, 0,134, 10,158, 1,135, 10, 4, 0,136, 10, 4, 0, 70, 0, - 12, 0,137, 10,210, 0,138, 10,157, 1, 30, 0,157, 1, 0, 0,157, 1, 1, 0, 9, 0,139, 10, 4, 0,136, 7, 4, 0, 37, 0, -215, 0, 45, 6,215, 0,140, 10, 0, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 2, 0,157, 7, 2, 0,158, 7, 2, 0,144, 10, - 2, 0,145, 10, 2, 0,177, 3, 2, 0,161, 6, 2, 0,146, 10, 2, 0,147, 10, 4, 0,238, 1,159, 1,148, 10,160, 1,149, 10, -161, 1,150, 10, 4, 0,151, 10, 4, 0,152, 10, 9, 0,153, 10, 12, 0,130, 10, 12, 0,177, 7, 12, 0,154, 10, 12, 0,155, 10, - 12, 0,156, 10,162, 1, 16, 0,162, 1, 0, 0,162, 1, 1, 0, 0, 0,157, 10, 26, 0, 30, 0, 2, 0,158, 10, 2, 0, 17, 0, - 2, 0, 15, 0, 2, 0,159, 10, 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 19, 0, 2, 0,164, 10, - 2, 0, 70, 2,163, 1,165, 10,164, 1, 10, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0,166, 10, 0, 0,157, 10, 2, 0,167, 10, - 2, 0,168, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,169, 10, 9, 0,170, 10,158, 1, 7, 0,158, 1, 0, 0,158, 1, 1, 0, - 0, 0,157, 10, 0, 0,171, 10, 12, 0, 94, 7, 4, 0,172, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0, - 0, 0,157, 10, 26, 0, 30, 0,165, 1,151, 7, 9, 0,173, 10,163, 1,165, 10,155, 1,174, 10, 12, 0,175, 10,223, 0,176, 10, - 2, 0, 19, 0, 2, 0,136, 1,159, 1, 23, 0,159, 1, 0, 0,159, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 5, 0, - 2, 0, 6, 0, 2, 0,177, 10, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 0, 0,181, 10, 0, 0, 37, 0, 2, 0,159, 10, - 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0, 43, 0, 0, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10, - 4, 0, 70, 0, 9, 0,173, 10,166, 1, 8, 0,166, 1, 0, 0,166, 1, 1, 0, 9, 0, 2, 0, 9, 0,185, 10, 0, 0,233, 3, - 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,186, 10,167, 1, 5, 0, 7, 0,187, 10, 4, 0,188, 10, 4, 0,189, 10, 4, 0, 69, 1, - 4, 0, 19, 0,168, 1, 6, 0, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 4, 0, 17, 0, 4, 0, 19, 0, -169, 1, 5, 0, 7, 0,130, 8, 7, 0,131, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,170, 1, 5, 0,169, 1, 2, 0, - 4, 0, 54, 0, 7, 0,194, 10, 7, 0,130, 8, 7, 0,131, 8,171, 1, 4, 0, 2, 0,195, 10, 2, 0,196, 10, 2, 0,197, 10, - 2, 0,198, 10,172, 1, 2, 0, 42, 0,132, 6, 26, 0,179, 8,173, 1, 3, 0, 24, 0,199, 10, 4, 0, 19, 0, 4, 0, 37, 0, -174, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,200, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,201, 10,175, 1, 9, 0, -175, 1, 0, 0,175, 1, 1, 0, 27, 0,135, 6, 0, 0,202, 10, 4, 0,203, 10, 4, 0,204, 10, 4, 0, 90, 0, 4, 0, 37, 0, - 0, 0,233, 3,176, 1, 6, 0, 12, 0, 23, 9, 0, 0,205, 10, 7, 0, 61, 0, 7, 0,186, 10, 4, 0, 17, 0, 4, 0, 19, 0, -177, 1, 3, 0, 7, 0,206, 10, 4, 0, 19, 0, 4, 0, 37, 0,178, 1, 15, 0,178, 1, 0, 0,178, 1, 1, 0, 78, 1, 9, 9, -176, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,177, 1,207, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, - 4, 0,203, 10, 0, 0,202, 10, 4, 0,208, 10, 7, 0,209, 10,179, 1, 2, 0, 0, 0,210, 10, 0, 0,211, 10,180, 1, 4, 0, -180, 1, 0, 0,180, 1, 1, 0,160, 0, 50, 3, 12, 0,212, 10,181, 1, 24, 0,181, 1, 0, 0,181, 1, 1, 0, 12, 0,213, 10, -160, 0,104, 8,180, 1,214, 10, 12, 0,215, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,186, 10, 7, 0,216, 10, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0,236, 2, 7, 0, 75, 9, 7, 0,106, 8, 7, 0, 76, 9, 2, 0,217, 10, - 2, 0,218, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,182, 1, 6, 0,182, 1, 0, 0,182, 1, 1, 0, - 12, 0,213, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,183, 1, 10, 0,183, 1, 0, 0,183, 1, 1, 0, 27, 0,135, 6, - 0, 0,219, 10, 4, 0,204, 10, 4, 0,220, 10, 0, 0,202, 10, 4, 0,203, 10, 2, 0, 19, 0, 2, 0,221, 10,184, 1, 7, 0, -184, 1, 0, 0,184, 1, 1, 0, 12, 0,222, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,223, 10, 4, 0,224, 10,185, 1, 5, 0, -185, 1, 0, 0,185, 1, 1, 0, 0, 0,202, 10, 4, 0,203, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,225, 10, -180, 1,214, 10, 12, 0,226, 10,181, 1,227, 10, 12, 0,228, 10, 12, 0,229, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,230, 10, - 2, 0,231, 10, 7, 0,232, 10,186, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,187, 1, 5, 0,187, 1, 0, 0,187, 1, 1, 0, - 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,188, 1, 6, 0,187, 1,233, 10, 32, 0, 45, 0, 4, 0,234, 10, 7, 0,235, 10, - 4, 0,236, 10, 4, 0,254, 8,189, 1, 3, 0,187, 1,233, 10, 4, 0,234, 10, 7, 0,237, 10,190, 1, 8, 0,187, 1,233, 10, - 32, 0, 45, 0, 7, 0, 64, 1, 7, 0,238, 10, 7, 0, 17, 3, 7, 0,173, 8, 4, 0,234, 10, 4, 0,239, 10,191, 1, 5, 0, -187, 1,233, 10, 7, 0,240, 10, 7, 0,246, 7, 7, 0,242, 2, 7, 0, 57, 0,192, 1, 3, 0,187, 1,233, 10, 7, 0,173, 8, - 7, 0,241, 10,139, 1, 4, 0, 7, 0,242, 10, 7, 0, 20, 10, 2, 0,243, 10, 2, 0, 69, 1,193, 1, 14, 0,193, 1, 0, 0, -193, 1, 1, 0, 12, 0,244, 10, 12, 0,245, 10, 12, 0,246, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,247, 10, - 7, 0,248, 10, 4, 0,236, 10, 4, 0,254, 8, 7, 0,242, 3, 7, 0,244, 2,145, 1, 23, 0, 4, 0,234, 10, 4, 0,249, 10, - 7, 0,250, 10, 7, 0, 57, 0, 7, 0,251, 10, 7, 0,240, 2, 7, 0,242, 10, 7, 0,252, 10, 7, 0,221, 2, 7, 0,253, 10, - 7, 0,116, 4, 7, 0,254, 10, 7, 0,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 7, 0, 4, 11, - 7, 0, 5, 11, 7, 0, 6, 11, 7, 0, 7, 11, 7, 0, 8, 11, 12, 0, 9, 11,121, 0, 34, 0,120, 0, 10, 11,194, 1, 11, 11, - 67, 0, 12, 11, 67, 0, 49, 10, 67, 0, 13, 11,195, 1, 14, 11, 48, 0,165, 0, 48, 0, 15, 11, 48, 0, 16, 11, 7, 0, 17, 11, - 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 10, 9, 7, 0, 22, 11, 7, 0,170, 1, 7, 0, 23, 11, - 4, 0, 24, 11, 4, 0, 25, 11, 4, 0, 26, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 27, 11, 2, 0, 28, 11, 2, 0, 29, 11, - 4, 0, 30, 11, 7, 0,221, 2, 4, 0, 31, 11, 7, 0, 32, 11, 4, 0, 33, 11,137, 0, 34, 11, 12, 0, 35, 11,169, 0, 56, 4, -122, 0, 11, 0,120, 0, 10, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 10, 9, 7, 0, 36, 11, 7, 0, 37, 11, 2, 0, 38, 11, - 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 10, 11,139, 0, 14, 3,141, 0, 16, 3, - 7, 0,211, 8, 7, 0, 41, 11, 7, 0, 42, 11, 7, 0, 66, 1, 7, 0, 43, 11, 4, 0, 32, 9, 4, 0, 12, 3, 2, 0, 17, 0, + 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, 92, 0, +248, 0, 5, 0, 0, 0, 56, 7, 0, 0, 11, 7, 0, 0, 13, 7, 2, 0, 19, 0, 2, 0, 37, 0,249, 0, 24, 0,249, 0, 0, 0, +249, 0, 1, 0, 0, 0, 20, 0,246, 0, 57, 7,247, 0, 58, 7,247, 0, 59, 7,247, 0, 60, 7,247, 0, 61, 7,247, 0, 62, 7, +247, 0, 63, 7,247, 0, 64, 7,247, 0, 65, 7,247, 0, 66, 7,247, 0, 67, 7,247, 0, 68, 7,247, 0, 69, 7,247, 0, 70, 7, +247, 0, 71, 7,247, 0, 72, 7,247, 0, 73, 7,247, 0, 74, 7,248, 0, 75, 7, 4, 0, 76, 7, 4, 0, 37, 0,250, 0, 5, 0, + 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 77, 7, 7, 0, 43, 2,251, 0, 73, 0, 4, 0, 19, 0, 4, 0, 78, 7, + 4, 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, 2, 0, 89, 7, 2, 0, 37, 0, 4, 0, 90, 7, 4, 0, 91, 7, 4, 0, 92, 7, 4, 0, 93, 7, + 2, 0, 94, 7, 2, 0, 95, 7, 4, 0, 96, 7, 4, 0, 97, 7, 4, 0, 98, 7, 4, 0, 99, 7, 4, 0,100, 7, 4, 0,179, 6, + 4, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7, 12, 0,106, 7, 12, 0,107, 7, 12, 0,108, 7, + 12, 0,109, 7, 0, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 2, 0,113, 7, 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, + 2, 0,117, 7, 2, 0,118, 7,250, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, + 2, 0,125, 7, 2, 0,126, 7, 2, 0,127, 7, 4, 0,128, 7, 4, 0,129, 7, 2, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, + 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, + 2, 0,141, 7, 0, 0,142, 7, 0, 0,143, 7, 7, 0,144, 7, 2, 0,155, 5, 2, 0,156, 5, 55, 0,145, 7,216, 0, 21, 0, + 27, 0, 31, 0, 12, 0,146, 7, 12, 0,147, 7, 12, 0,148, 7, 12, 0, 6, 6, 46, 0,134, 0, 46, 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, 37, 0, 2, 0,157, 7, + 2, 0,158, 7, 4, 0, 70, 0,211, 0,159, 7, 9, 0,160, 7, 2, 0,161, 7,252, 0, 5, 0,252, 0, 0, 0,252, 0, 1, 0, +252, 0,162, 7, 13, 0,163, 7, 4, 0, 19, 0,253, 0, 7, 0,253, 0, 0, 0,253, 0, 1, 0,252, 0,164, 7,252, 0,165, 7, + 2, 0, 9, 5, 2, 0, 19, 0, 4, 0, 37, 0,254, 0, 25, 0,254, 0, 0, 0,254, 0, 1, 0,255, 0,166, 7, 0, 1, 98, 6, + 0, 0,167, 7, 0, 0,168, 7, 0, 0,169, 7, 2, 0,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, + 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 4, 0,178, 7,254, 0,179, 7, 9, 0,180, 7, + 4, 0,181, 7, 4, 0,182, 7, 4, 0,183, 7, 4, 0,184, 7, 0, 0,185, 7, 1, 1, 22, 0, 1, 1, 0, 0, 1, 1, 1, 0, +252, 0,164, 7,252, 0,165, 7,252, 0,186, 7,252, 0,187, 7,216, 0,188, 7, 23, 0, 52, 0, 0, 0, 7, 6, 0, 0,189, 7, + 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,190, 7, 2, 0, 37, 0, 2, 0,153, 7, 2, 0,177, 6, 2, 0, 19, 0, 2, 1,166, 7, + 12, 0,191, 7, 12, 0, 6, 6, 12, 0,192, 7, 12, 0,193, 7, 3, 1, 21, 0, 3, 1, 0, 0, 3, 1, 1, 0,214, 0, 62, 6, + 23, 0,194, 7, 23, 0,195, 7, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,196, 7, 2, 0,197, 7, 2, 0,198, 7, 2, 0, 19, 0, + 7, 0, 85, 2, 2, 0,152, 7, 2, 0,156, 7, 4, 0, 43, 0, 4, 1,166, 7, 12, 0,199, 7, 12, 0,200, 7, 12, 0,192, 7, + 0, 0,201, 7, 9, 0,202, 7, 5, 1, 12, 0, 0, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, 2, 0,206, 7, 2, 0,207, 7, + 2, 0,252, 4, 2, 0,247, 4,216, 0,208, 7, 46, 0,209, 7, 4, 0,210, 7, 4, 0,211, 7, 0, 0, 35, 0, 6, 1, 1, 0, + 0, 0,212, 7, 7, 1, 8, 0, 57, 0,213, 7, 57, 0,214, 7, 7, 1,215, 7, 7, 1,216, 7, 7, 1,217, 7, 2, 0,129, 0, + 2, 0, 19, 0, 4, 0,218, 7, 8, 1, 4, 0, 4, 0,122, 6, 4, 0,219, 7, 4, 0,127, 6, 4, 0,220, 7, 9, 1, 2, 0, + 4, 0,221, 7, 4, 0,222, 7, 10, 1, 7, 0, 7, 0,223, 7, 7, 0,224, 7, 7, 0,225, 7, 4, 0, 19, 0, 4, 0, 37, 0, + 7, 0,118, 4, 7, 0,226, 7, 11, 1, 6, 0, 0, 0,227, 7, 0, 0, 81, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,251, 4, + 4, 0, 37, 0, 12, 1, 21, 0, 12, 1, 0, 0, 12, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,228, 7, + 4, 0,229, 7, 4, 0,230, 7, 6, 1,231, 7, 0, 0,227, 7, 4, 0,232, 7, 4, 0,233, 7, 11, 1, 87, 3, 8, 1,234, 7, + 9, 1,235, 7, 10, 1,236, 7, 7, 1,237, 7, 7, 1,238, 7, 7, 1,239, 7, 57, 0,240, 7, 57, 0,241, 7, 13, 1, 12, 0, + 0, 0, 5, 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,242, 7, 9, 0,243, 7, 9, 0,232, 0, 9, 0,234, 0, 14, 1, 43, 0, 14, 1, 0, 0, 14, 1, 1, 0, 9, 0,244, 7, + 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,245, 7, 4, 0,246, 7, + 4, 0,229, 7, 4, 0,230, 7, 4, 0,247, 7, 4, 0,246, 0, 4, 0,248, 7, 4, 0,249, 7, 7, 0,250, 7, 7, 0,251, 7, + 4, 0,126, 0, 4, 0,252, 7, 12, 1,253, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,254, 7, 7, 0,255, 7, + 13, 1, 59, 1, 14, 1, 0, 8, 14, 1, 1, 8, 14, 1, 2, 8, 12, 0, 3, 8, 15, 1, 4, 8, 16, 1, 5, 8, 7, 0, 6, 8, + 7, 0, 7, 8, 4, 0, 8, 8, 7, 0, 9, 8, 9, 0, 10, 8, 4, 0, 11, 8, 4, 0, 12, 8, 4, 0, 13, 8, 7, 0, 14, 8, + 17, 1, 4, 0, 17, 1, 0, 0, 17, 1, 1, 0, 12, 0, 15, 8, 14, 1, 16, 8,202, 0, 6, 0, 12, 0, 17, 8, 12, 0, 3, 8, + 12, 0, 18, 8, 14, 1, 19, 8, 0, 0, 20, 8, 0, 0, 21, 8, 18, 1, 4, 0, 7, 0, 22, 8, 7, 0,109, 0, 2, 0, 23, 8, + 2, 0, 24, 8, 19, 1, 6, 0, 7, 0, 25, 8, 7, 0, 26, 8, 7, 0, 27, 8, 7, 0, 28, 8, 4, 0, 29, 8, 4, 0, 30, 8, + 20, 1, 12, 0, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, + 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8, 4, 0,233, 2, 4, 0, 41, 8, 21, 1, 2, 0, 7, 0, 91, 5, 7, 0, 37, 0, + 22, 1, 5, 0, 7, 0, 42, 8, 7, 0, 43, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 44, 8, 23, 1, 6, 0, 23, 1, 0, 0, + 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0, 57, 0, 24, 1, 8, 0, 24, 1, 0, 0, 24, 1, 1, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 25, 1, 45, 0, 25, 1, 0, 0, + 25, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 46, 8, 7, 0, 47, 8, + 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 48, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 49, 8, 7, 0, 50, 8, 7, 0, 51, 8, + 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 54, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 55, 8, 7, 0, 56, 8, 7, 0, 37, 0, + 7, 0, 57, 8, 7, 0, 58, 8, 7, 0, 59, 8, 2, 0, 60, 8, 2, 0, 61, 8, 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, + 2, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 28, 2, 2, 0, 68, 8, 2, 0, 25, 2, 2, 0, 69, 8, 0, 0, 70, 8, + 0, 0, 71, 8, 7, 0,240, 0, 26, 1, 72, 8, 67, 0,241, 1, 27, 1, 16, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 45, 8, 2, 0,242, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, + 7, 0,242, 2, 7, 0, 73, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,228, 0, 5, 0, 2, 0, 17, 0, 2, 0,218, 7, + 2, 0, 19, 0, 2, 0, 74, 8, 27, 0,151, 6,227, 0, 3, 0, 4, 0, 69, 0, 4, 0, 75, 8,228, 0, 2, 0, 28, 1, 7, 0, + 28, 1, 0, 0, 28, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 76, 8, 29, 1, 5, 0, + 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 77, 8, 4, 0, 78, 8, 4, 0, 37, 0, 30, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0, 43, 0, 2, 0, 70, 0, 31, 1, 4, 0, 0, 0, 20, 0, 66, 0, 79, 8, 7, 0, 76, 1, 7, 0, 37, 0, 32, 1, 6, 0, + 2, 0, 80, 8, 2, 0, 81, 8, 2, 0, 17, 0, 2, 0, 82, 8, 0, 0, 83, 8, 0, 0, 84, 8, 33, 1, 5, 0, 4, 0, 17, 0, + 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 85, 8, 0, 0, 86, 8, 34, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, + 35, 1, 4, 0, 2, 0, 87, 8, 2, 0, 88, 8, 2, 0, 19, 0, 2, 0, 37, 0, 36, 1, 6, 0, 0, 0, 20, 0, 0, 0, 89, 8, + 2, 0, 90, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 37, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,120, 4, + 2, 0, 19, 0, 2, 0,205, 2, 38, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 87, 8, 39, 1, 7, 0, 0, 0, 20, 0, + 7, 0,120, 4, 0, 0, 91, 8, 0, 0, 92, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 93, 8, 40, 1, 4, 0, 0, 0, 94, 8, + 0, 0, 95, 8, 4, 0, 17, 0, 7, 0,209, 2, 41, 1, 3, 0, 32, 0, 96, 8, 0, 0, 97, 8, 0, 0, 98, 8, 42, 1, 18, 0, + 42, 1, 0, 0, 42, 1, 1, 0, 2, 0, 17, 0, 2, 0, 99, 8, 2, 0, 19, 0, 2, 0,100, 8, 2, 0,101, 8, 2, 0,102, 8, + 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 43, 1,103, 8, 32, 0, 45, 0, 2, 0,107, 5, 2, 0, 6, 8, + 2, 0,104, 8, 2, 0, 37, 0, 44, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,105, 8, 2, 0, 19, 0, 2, 0,205, 2, + 2, 0,106, 8, 4, 0,107, 8, 4, 0,108, 8, 4, 0,109, 8, 4, 0,110, 8, 4, 0,111, 8, 45, 1, 1, 0, 0, 0,112, 8, + 46, 1, 4, 0, 42, 0,121, 6, 0, 0,113, 8, 4, 0, 69, 1, 4, 0, 19, 0, 43, 1, 18, 0, 43, 1, 0, 0, 43, 1, 1, 0, + 43, 1,114, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,102, 8, 2, 0, 99, 8, 2, 0,116, 8, 2, 0, 70, 0, + 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 47, 1,103, 8, 42, 1,117, 8, 2, 0, 15, 0, 2, 0,118, 8, 4, 0,119, 8, + 48, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 49, 1, 12, 0,160, 0,120, 8, 2, 0, 17, 0, 2, 0, 19, 0, + 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, + 7, 0,126, 8, 50, 1, 13, 0, 2, 0, 19, 0, 2, 0,127, 8, 4, 0, 47, 8, 4, 0, 89, 0, 2, 0,128, 8, 7, 0,242, 3, + 7, 0,129, 8, 15, 1, 4, 8, 51, 1,130, 8, 2, 0, 17, 0, 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 52, 1, 11, 0, + 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,134, 8, 0, 0, 20, 0, 7, 0,135, 8, 7, 0,136, 8, + 7, 0,128, 3, 2, 0,137, 8, 2, 0,138, 8, 53, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, + 32, 0,204, 5, 54, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 85, 8, 32, 0, 45, 0, 55, 1, 13, 0, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 99, 8, 2, 0,129, 3, 7, 0,139, 8, 7, 0,140, 8, 7, 0, 64, 1, 7, 0, 65, 1, + 7, 0,100, 3, 7, 0,103, 3, 7, 0,141, 8, 7, 0,142, 8, 32, 0,143, 8, 56, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, + 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,121, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,144, 8, 2, 0,145, 8, + 57, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,146, 8, 7, 0,147, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, + 7, 0,148, 8, 58, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, 2, 0,149, 8, + 4, 0, 37, 0, 7, 0,150, 8, 7, 0,151, 8, 7, 0,152, 8, 7, 0,153, 8, 0, 0,154, 8, 59, 1, 9, 0, 2, 0, 19, 0, + 2, 0, 17, 0, 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,144, 8, 2, 0,145, 8, + 60, 1, 7, 0, 4, 0,193, 2, 4, 0,155, 8, 4, 0,156, 8, 4, 0,157, 8, 7, 0,158, 8, 7, 0,159, 8, 0, 0, 91, 8, + 61, 1, 7, 0, 0, 0,160, 8, 32, 0,161, 8, 0, 0, 97, 8, 2, 0,162, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0, 98, 8, + 62, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 47, 8, 4, 0, 89, 0, 0, 0,163, 8, 0, 0,164, 8, 63, 1, 1, 0, + 4, 0, 19, 0, 64, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,165, 8, 7, 0,166, 8, 42, 0,121, 6, + 65, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 66, 1, 2, 0, 4, 0, 17, 0, 4, 0, 42, 6, + 67, 1, 6, 0, 0, 0, 94, 8, 0, 0, 95, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,167, 8, 47, 1, 10, 0, + 47, 1, 0, 0, 47, 1, 1, 0, 47, 1,114, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 99, 8, 2, 0,168, 8, 0, 0, 20, 0, + 9, 0, 2, 0, 32, 0, 45, 0, 68, 1, 10, 0, 7, 0,128, 3, 7, 0,169, 8, 7, 0,170, 8, 7, 0,171, 8, 7, 0,172, 8, + 4, 0, 19, 0, 7, 0,149, 8, 7, 0,173, 8, 7, 0,174, 8, 7, 0, 37, 0, 16, 1, 12, 0, 16, 1, 0, 0, 16, 1, 1, 0, + 15, 1,175, 8, 9, 0,223, 0, 4, 0,171, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, + 7, 0,242, 3, 7, 0, 37, 0, 51, 1, 8, 0, 7, 0,179, 8, 7, 0,180, 8, 7, 0,181, 8, 7, 0,182, 8, 7, 0,183, 8, + 7, 0,184, 8, 7, 0,185, 8, 7, 0,186, 8, 15, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, + 43, 0,187, 8, 36, 0, 80, 0, 7, 0,242, 3, 7, 0,188, 8, 7, 0,129, 8, 7, 0,179, 8, 7, 0,180, 8, 7, 0,189, 8, + 4, 0, 90, 0, 4, 0,178, 8, 9, 0,190, 8, 69, 1, 15, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, + 7, 0, 8, 6, 1, 1,191, 8,214, 0, 62, 6, 15, 1, 4, 8, 2, 0, 69, 1, 2, 0,127, 8, 2, 0, 89, 2, 2, 0, 90, 2, + 2, 0, 19, 0, 2, 0,114, 6, 4, 0, 70, 0, 70, 1, 6, 0, 70, 1, 0, 0, 70, 1, 1, 0, 32, 0, 45, 0, 9, 0,192, 8, + 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,193, 8, 4, 0,131, 0, 7, 0,194, 8, 71, 1, 27, 0, + 71, 1, 0, 0, 71, 1, 1, 0, 26, 0,195, 8, 71, 1, 38, 0, 12, 0,196, 8, 0, 0, 20, 0, 7, 0,197, 8, 7, 0,198, 8, + 7, 0,199, 8, 7, 0,200, 8, 4, 0, 19, 0, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 7, 0, 76, 1, 7, 0, 36, 2, + 7, 0,204, 8, 7, 0,191, 2, 7, 0,205, 8, 7, 0,206, 8, 7, 0,207, 8, 7, 0,208, 8, 7, 0,209, 8, 7, 0,172, 0, + 4, 0,131, 0, 2, 0,136, 5, 2, 0,136, 1, 72, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,210, 8, 12, 0,211, 8, + 12, 0,212, 8, 71, 1,213, 8, 9, 0,214, 8, 9, 0,215, 8, 4, 0, 19, 0, 4, 0, 15, 6, 2, 0,247, 2, 2, 0, 72, 6, + 4, 0, 37, 0, 4, 0,131, 0, 4, 0,216, 8, 2, 0,217, 8, 2, 0,218, 8, 2, 0,219, 8, 2, 0,220, 8, 4, 0,221, 8, + 4, 0,222, 8, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8, 73, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, + 74, 1, 5, 0, 73, 1,227, 8, 4, 0,191, 2, 4, 0,228, 8, 4, 0,229, 8, 4, 0, 19, 0, 75, 1, 6, 0, 4, 0, 37, 0, + 4, 0, 72, 6, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8, 76, 1, 42, 0, 76, 1, 0, 0, 76, 1, 1, 0, + 26, 0,195, 8, 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,230, 8, 2, 0,231, 8, 2, 0,232, 8, 2, 0,114, 3, + 2, 0,233, 8, 4, 0, 72, 2, 4, 0,223, 8, 4, 0,224, 8, 71, 1,234, 8, 76, 1, 38, 0, 76, 1,235, 8, 12, 0,236, 8, + 9, 0,237, 8, 9, 0,238, 8, 9, 0,239, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,240, 8, 7, 0, 15, 2, 7, 0,105, 3, + 7, 0,107, 3, 2, 0,137, 3, 2, 0, 37, 0, 7, 0,241, 8, 7, 0,242, 8, 7, 0,110, 3, 7, 0,243, 8, 7, 0,244, 8, + 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 7, 0,250, 8, 7, 0, 65, 2, 32, 0,251, 8, +161, 0, 11, 0, 12, 0,252, 8, 2, 0, 19, 0, 2, 0,253, 8, 7, 0,101, 2, 7, 0,254, 8, 7, 0,255, 8, 12, 0, 0, 9, + 4, 0, 1, 9, 4, 0, 2, 9, 9, 0, 3, 9, 9, 0, 4, 9, 77, 1, 1, 0, 4, 0, 2, 9, 78, 1, 12, 0, 4, 0, 2, 9, + 7, 0,111, 8, 2, 0, 5, 9, 2, 0, 6, 9, 7, 0, 7, 9, 7, 0, 8, 9, 2, 0, 9, 9, 2, 0, 19, 0, 7, 0, 10, 9, + 7, 0, 11, 9, 7, 0, 12, 9, 7, 0, 13, 9, 79, 1, 7, 0, 79, 1, 0, 0, 79, 1, 1, 0, 12, 0, 14, 9, 4, 0, 19, 0, + 4, 0, 15, 9, 0, 0,233, 3,248, 0, 16, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 17, 9, 12, 0,252, 8, 12, 0, 18, 9, + 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 19, 9,218, 0, 4, 0, 27, 0,175, 8, 12, 0,252, 8, 4, 0, 20, 9, 4, 0, 19, 0, + 80, 1, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, +160, 0, 90, 3,218, 0, 21, 9, 0, 0, 69, 1, 0, 0, 65, 6, 2, 0, 19, 0, 2, 0, 22, 9, 2, 0,115, 6, 2, 0,114, 6, + 2, 0, 23, 9, 7, 0, 24, 9, 81, 1, 8, 0, 81, 1, 0, 0, 81, 1, 1, 0, 79, 1, 25, 9, 36, 0, 80, 0, 12, 0, 94, 3, + 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 26, 9, 82, 1, 5, 0, 82, 1, 0, 0, 82, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, + 0, 0, 27, 9, 83, 1, 14, 0, 83, 1, 0, 0, 83, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 28, 9, + 0, 0, 29, 9, 0, 0, 27, 9, 7, 0, 30, 9, 7, 0, 31, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 32, 9, 7, 0, 33, 9, + 84, 1, 9, 0, 84, 1, 0, 0, 84, 1, 1, 0, 32, 0, 34, 9, 0, 0,250, 2, 7, 0, 35, 9, 2, 0, 36, 9, 2, 0, 19, 0, + 2, 0, 17, 0, 2, 0, 37, 9, 85, 1, 7, 0, 42, 0,121, 6, 26, 0,195, 8, 4, 0, 19, 0, 4, 0, 38, 9, 12, 0, 39, 9, + 32, 0, 34, 9, 0, 0,250, 2, 86, 1, 15, 0, 32, 0, 34, 9, 2, 0, 40, 9, 2, 0, 19, 0, 2, 0, 41, 9, 2, 0, 42, 9, + 0, 0,250, 2, 32, 0, 43, 9, 0, 0, 44, 9, 7, 0, 45, 9, 7, 0, 36, 2, 7, 0, 46, 9, 7, 0, 47, 9, 2, 0, 17, 0, + 2, 0, 69, 1, 7, 0, 76, 1, 87, 1, 6, 0, 32, 0, 34, 9, 7, 0,227, 8, 2, 0, 48, 9, 2, 0, 49, 9, 2, 0, 19, 0, + 2, 0, 50, 9, 88, 1, 6, 0, 32, 0, 34, 9, 4, 0, 51, 9, 4, 0, 52, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, + 89, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, 4, 0, 51, 9, 0, 0,250, 2, 90, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, + 4, 0, 51, 9, 0, 0,250, 2, 91, 1, 10, 0, 32, 0, 34, 9, 4, 0, 53, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,117, 6, + 2, 0, 54, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 55, 9, 0, 0,250, 2, 92, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, + 4, 0, 51, 9, 0, 0,250, 2, 93, 1, 10, 0, 32, 0, 34, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, + 7, 0,146, 8, 7, 0,147, 8, 4, 0, 37, 0,160, 0,120, 8, 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 34, 9, 4, 0,115, 3, + 4, 0, 56, 9, 0, 0,250, 2, 95, 1, 4, 0, 32, 0, 34, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 96, 1, 5, 0, + 32, 0, 34, 9, 7, 0,125, 0, 4, 0, 57, 9, 4, 0,115, 3, 4, 0,116, 3, 97, 1, 6, 0, 32, 0, 34, 9, 4, 0, 58, 9, + 4, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 0, 0,250, 2, 98, 1, 16, 0, 32, 0, 34, 9, 32, 0,235, 8, 4, 0, 17, 0, + 7, 0, 62, 9, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, + 7, 0, 70, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 99, 1, 3, 0, 32, 0, 34, 9, 4, 0, 19, 0, + 4, 0, 28, 2,100, 1, 5, 0, 32, 0, 34, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 71, 9, 0, 0,250, 2,101, 1, 10, 0, + 32, 0, 34, 9, 0, 0,250, 2, 2, 0, 72, 9, 2, 0, 73, 9, 0, 0, 74, 9, 0, 0, 75, 9, 7, 0, 76, 9, 7, 0, 77, 9, + 7, 0, 78, 9, 7, 0, 79, 9,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 80, 9, + 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 7, 0, 80, 9, 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 7, 0, 80, 9, 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,105, 1, 7, 0, 32, 0, 34, 9, 0, 0,250, 2, + 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,106, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, + 2, 0, 54, 3, 0, 0, 56, 3, 0, 0, 82, 9,107, 1, 10, 0,107, 1, 0, 0,107, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0, 83, 9, 7, 0, 20, 1, 7, 0, 21, 1, 2, 0, 14, 9, 2, 0, 84, 9, 32, 0, 45, 0,108, 1, 22, 0,108, 1, 0, 0, +108, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 85, 9, 2, 0, 86, 9, 36, 0, 80, 0,160, 0,120, 8, 32, 0,164, 0, + 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 87, 9, 7, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0,236, 2, 7, 0, 91, 9, + 7, 0,122, 8, 7, 0, 92, 9, 0, 0, 93, 9, 0, 0, 94, 9, 12, 0, 96, 3,109, 1, 8, 0, 7, 0, 43, 2, 7, 0,146, 8, + 7, 0,147, 8, 9, 0, 2, 0, 2, 0, 95, 9, 2, 0, 96, 9, 2, 0, 97, 9, 2, 0, 98, 9,110, 1, 18, 0,110, 1, 0, 0, +110, 1, 1, 0,110, 1, 99, 9, 0, 0, 20, 0,109, 1,100, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 9, 2, 0,102, 9, + 2, 0,103, 9, 2, 0,104, 9, 4, 0, 43, 0, 7, 0,105, 9, 7, 0,106, 9, 4, 0,107, 9, 4, 0,108, 9,110, 1,109, 9, +111, 1,110, 9,112, 1, 33, 0,112, 1, 0, 0,112, 1, 1, 0,112, 1,111, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,228, 7, 2, 0, 6, 8, 2, 0,112, 9, 2, 0,133, 0, 2, 0,102, 9, 2, 0,218, 7, 12, 0,115, 8, 12, 0,113, 9, + 27, 0,151, 6, 9, 0,114, 9, 7, 0,105, 9, 7, 0,106, 9, 7, 0, 74, 2, 7, 0,115, 9, 2, 0,116, 9, 2, 0,117, 9, + 7, 0,118, 9, 7, 0,119, 9, 2, 0,120, 9, 2, 0,121, 9, 9, 0,122, 9, 24, 0,123, 9, 24, 0,124, 9, 24, 0,125, 9, +113, 1,150, 0,114, 1,126, 9,115, 1,127, 9,111, 1, 8, 0,111, 1, 0, 0,111, 1, 1, 0,112, 1,128, 9,112, 1,129, 9, +110, 1,130, 9,110, 1,109, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, + 12, 0,131, 9, 12, 0,132, 9,109, 1,133, 9, 12, 0,134, 9, 4, 0, 17, 0, 4, 0,135, 9, 4, 0,136, 9, 4, 0,137, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,138, 9,115, 1,139, 9,110, 1,140, 9,110, 1,141, 9, 9, 0,142, 9, 9, 0,143, 9, + 4, 0,144, 9, 9, 0,145, 9, 9, 0,146, 9, 9, 0,147, 9,116, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,218, 7, + 0, 0,148, 9, 0, 0,149, 9, 2, 0, 37, 0,117, 1, 16, 0, 2, 0,172, 7, 2, 0,173, 7, 2, 0,150, 9, 2, 0,170, 8, + 2, 0,151, 9, 2, 0, 68, 0, 7, 0,235, 2, 7, 0,152, 9, 7, 0,153, 9, 2, 0, 91, 1, 0, 0,154, 9, 0, 0,155, 9, + 2, 0,156, 9, 2, 0, 37, 0, 4, 0,157, 9, 4, 0,158, 9,118, 1, 9, 0, 7, 0,159, 9, 7, 0,160, 9, 7, 0,189, 8, + 7, 0,109, 0, 7, 0,161, 9, 7, 0, 78, 6, 2, 0,162, 9, 0, 0,163, 9, 0, 0, 37, 0,119, 1, 4, 0, 7, 0,164, 9, + 7, 0,165, 9, 2, 0,162, 9, 2, 0, 37, 0,120, 1, 3, 0, 7, 0,166, 9, 7, 0,167, 9, 7, 0, 15, 0,121, 1, 7, 0, + 0, 0, 5, 2, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,189, 4, 4, 0,126, 0, 4, 0, 34, 4,122, 1, 7, 0, + 7, 0,168, 9, 7, 0,169, 9, 7, 0,170, 9, 7, 0, 85, 2, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9,123, 1, 4, 0, + 2, 0,174, 9, 2, 0,175, 9, 2, 0,176, 9, 2, 0,177, 9,124, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,125, 1, 2, 0, + 0, 0,166, 0, 0, 0,178, 9,126, 1, 1, 0, 0, 0, 20, 0,127, 1, 10, 0, 0, 0,179, 9, 0, 0,180, 9, 0, 0, 71, 6, + 0, 0,181, 9, 2, 0,150, 9, 2, 0,182, 9, 7, 0,183, 9, 7, 0,184, 9, 7, 0,185, 9, 7, 0, 91, 9,128, 1, 2, 0, + 9, 0,186, 9, 9, 0,187, 9,129, 1, 11, 0, 0, 0,251, 4, 0, 0, 17, 0, 0, 0,162, 9, 0, 0,109, 0, 0, 0,188, 9, + 0, 0,106, 0, 0, 0, 70, 2, 7, 0,189, 9, 7, 0,190, 9, 7, 0,191, 9, 7, 0,192, 9,130, 1, 8, 0, 7, 0, 80, 8, + 7, 0,125, 0, 7, 0,155, 9, 7, 0,157, 2, 7, 0,193, 9, 7, 0,236, 0, 7, 0,194, 9, 4, 0, 17, 0,131, 1, 4, 0, + 2, 0,195, 9, 2, 0,196, 9, 2, 0,197, 9, 2, 0, 37, 0,132, 1, 1, 0, 0, 0, 20, 0,133, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,198, 9,134, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,120, 4, 7, 0,199, 9, + 7, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9,133, 1,203, 9,133, 1,204, 9,133, 1,205, 9, 63, 0, 9, 0, 4, 0, 19, 0, + 4, 0, 64, 0, 24, 0,206, 9, 24, 0,207, 9,134, 1,208, 9, 7, 0,209, 9, 7, 0,210, 9, 7, 0,211, 9, 7, 0,212, 9, +135, 1, 4, 0, 47, 0,229, 2, 7, 0,213, 9, 7, 0,170, 1, 7, 0, 37, 0,191, 0, 17, 0, 27, 0, 31, 0,135, 1,214, 9, + 63, 0,203, 9, 51, 0,134, 1, 2, 0, 19, 0, 2, 0,230, 5, 4, 0,106, 0, 7, 0,215, 9, 7, 0, 82, 2, 4, 0,216, 9, + 7, 0,217, 9, 7, 0,218, 9, 7, 0,219, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,220, 9, 0, 0,210, 6,136, 1, 10, 0, + 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,221, 9, 4, 0,222, 9, 4, 0,223, 9, 0, 0, 92, 0, + 0, 0, 20, 0, 9, 0, 2, 0, 91, 0, 6, 0,136, 1,224, 9, 4, 0,225, 9, 4, 0,226, 9, 4, 0,227, 9, 4, 0, 37, 0, + 9, 0,228, 9,137, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,138, 1, 5, 0, + 7, 0,152, 2, 7, 0,229, 9, 7, 0,230, 9, 7, 0,231, 9, 7, 0,219, 2,139, 1, 5, 0, 32, 0,232, 9,140, 1, 22, 0, + 7, 0,203, 5, 7, 0,233, 9, 7, 0, 57, 0,141, 1, 7, 0, 4, 0,234, 9, 4, 0,235, 9, 4, 0,236, 9, 7, 0,237, 9, + 7, 0,238, 9, 7, 0,239, 9, 7, 0, 57, 0,142, 1, 8, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, + 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 88, 8,143, 1, 6, 0,143, 1, 0, 0,143, 1, 1, 0, 32, 0, 45, 0, + 2, 0,204, 2, 2, 0, 19, 0, 2, 0,240, 9,144, 1, 18, 0,138, 1,171, 3,138, 1,241, 9,137, 1,242, 9,138, 1, 72, 8, +139, 1,243, 9, 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,244, 9, 4, 0,234, 9, 4, 0,245, 9, 7, 0,238, 9, + 7, 0,239, 9, 7, 0,106, 0, 2, 0, 19, 0, 2, 0,246, 9, 2, 0,247, 9, 2, 0,248, 9,145, 1,110, 0, 27, 0, 31, 0, + 39, 0, 75, 0,146, 1,249, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 72, 9, 2, 0,250, 9, 2, 0,251, 9, + 2, 0,137, 3, 2, 0,252, 9, 2, 0,253, 9, 2, 0,254, 9, 2, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, + 2, 0,238, 4, 2, 0,115, 5, 2, 0, 3, 10, 2, 0, 4, 10, 2, 0, 5, 10, 2, 0, 6, 10, 2, 0, 7, 10, 2, 0, 25, 2, + 2, 0, 65, 8, 2, 0, 41, 8, 2, 0, 8, 10, 2, 0, 9, 10, 2, 0,187, 3, 2, 0,188, 3, 2, 0, 10, 10, 2, 0, 11, 10, + 2, 0, 12, 10, 2, 0, 13, 10, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 2, 0, 17, 10, 2, 0, 18, 10, 7, 0, 19, 10, + 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 47, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 53, 8, 7, 0, 22, 10, 7, 0, 23, 10, + 7, 0, 24, 10, 4, 0, 48, 8, 4, 0, 46, 8, 4, 0, 25, 10, 7, 0, 49, 8, 7, 0, 50, 8, 7, 0, 51, 8, 7, 0, 26, 10, + 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 57, 0, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, + 7, 0, 34, 10, 7, 0,128, 3, 7, 0,106, 0, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, + 7, 0, 40, 10, 7, 0, 41, 10, 4, 0, 42, 10, 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, + 7, 0, 48, 10, 7, 0,210, 0, 7, 0, 49, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 50, 10, 7, 0, 51, 10, + 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 55, 10, 7, 0, 56, 10, 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, + 7, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 4, 0, 63, 10, 4, 0, 64, 10, 67, 0,160, 3, 12, 0, 65, 10, 67, 0, 66, 10, + 32, 0, 67, 10, 32, 0, 68, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 69, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0, +145, 1, 70, 10,144, 1, 71, 10,141, 1,235, 8,171, 0,238, 3, 9, 0,239, 3,147, 1, 72, 10,147, 1, 73, 10, 12, 0, 74, 10, + 12, 0, 75, 10,133, 0, 76, 10,141, 0, 77, 10,141, 0, 78, 10, 32, 0, 79, 10, 32, 0, 80, 10, 32, 0, 38, 0, 12, 0, 39, 9, + 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 81, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 48, 8, + 4, 0, 82, 10, 4, 0, 83, 10, 4, 0, 84, 10, 2, 0,247, 0, 2, 0, 85, 10, 2, 0, 86, 10, 2, 0, 87, 10, 0, 0, 88, 10, + 2, 0, 89, 10, 2, 0, 90, 10, 2, 0, 91, 10, 9, 0, 92, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 93, 10,148, 1, 94, 10, +149, 1, 95, 10, 7, 0, 96, 10,135, 0, 35, 0,150, 1,190, 8, 7, 0, 25, 4, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0,123, 4, + 7, 0, 99, 10, 7, 0,138, 3, 7, 0,128, 3, 7, 0,100, 10, 7, 0, 84, 2, 7, 0,101, 10, 7, 0,102, 10, 7, 0,103, 10, + 7, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0, 26, 4, 7, 0,107, 10, 7, 0,108, 10, 7, 0,109, 10, 7, 0, 27, 4, + 7, 0, 23, 4, 7, 0, 24, 4, 7, 0,110, 10, 4, 0,111, 10, 4, 0, 90, 0, 4, 0,112, 10, 4, 0,113, 10, 2, 0,114, 10, + 2, 0,115, 10, 2, 0,116, 10, 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10,169, 0, 56, 4,136, 0, 8, 0,150, 1,120, 10, + 7, 0,121, 10, 7, 0,122, 10, 7, 0,242, 1, 7, 0,123, 10, 4, 0, 90, 0, 2, 0,124, 10, 2, 0,125, 10,151, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,126, 10,152, 1, 6, 0,152, 1, 0, 0,152, 1, 1, 0,151, 1,227, 8, + 4, 0,253, 0, 2, 0,127, 10, 2, 0, 19, 0,153, 1, 5, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,128, 10, 4, 0,129, 10, + 4, 0, 19, 0,154, 1, 9, 0,154, 1, 0, 0,154, 1, 1, 0, 12, 0,124, 0,153, 1,130, 10, 4, 0, 19, 0, 2, 0,127, 10, + 2, 0,131, 10, 7, 0, 91, 0, 0, 0,132, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0, 11, 5, 4, 0, 19, 0, 2, 0,133, 10, + 2, 0,134, 10, 9, 0,135, 10,155, 1, 7, 0,155, 1, 0, 0,155, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, + 0, 0,136, 10, 0, 0,137, 10,156, 1, 5, 0, 12, 0,138, 10, 4, 0,139, 10, 4, 0,140, 10, 4, 0, 19, 0, 4, 0, 37, 0, +157, 1, 18, 0, 27, 0, 31, 0,158, 1,141, 10,158, 1,142, 10, 12, 0,143, 10, 4, 0,144, 10, 2, 0,145, 10, 2, 0, 37, 0, + 12, 0,146, 10, 12, 0,147, 10,156, 1,148, 10, 12, 0,149, 10, 12, 0,150, 10, 12, 0,151, 10,159, 1,152, 10, 4, 0,153, 10, + 4, 0, 70, 0, 12, 0,154, 10,211, 0,155, 10,158, 1, 31, 0,158, 1, 0, 0,158, 1, 1, 0, 9, 0,156, 10, 4, 0,151, 7, + 4, 0, 37, 0,216, 0, 61, 6,216, 0,157, 10, 0, 0,158, 10, 2, 0,159, 10, 2, 0,160, 10, 2, 0,172, 7, 2, 0,173, 7, + 2, 0,161, 10, 2, 0,162, 10, 2, 0,177, 3, 2, 0,177, 6, 2, 0,163, 10, 2, 0,164, 10, 2, 0,165, 10, 2, 0,166, 10, +160, 1,167, 10,161, 1,168, 10,162, 1,169, 10, 4, 0,170, 10, 4, 0,171, 10, 9, 0,172, 10, 12, 0,147, 10, 12, 0,192, 7, + 12, 0,173, 10, 12, 0,174, 10, 12, 0,175, 10,163, 1, 16, 0,163, 1, 0, 0,163, 1, 1, 0, 0, 0,176, 10, 26, 0, 30, 0, + 2, 0,177, 10, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 2, 0,181, 10, 2, 0,182, 10, + 2, 0, 19, 0, 2, 0,183, 10, 2, 0, 70, 2,164, 1,184, 10,165, 1, 10, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,185, 10, + 0, 0,176, 10, 2, 0,186, 10, 2, 0,187, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,188, 10, 9, 0,189, 10,159, 1, 7, 0, +159, 1, 0, 0,159, 1, 1, 0, 0, 0,176, 10, 0, 0,190, 10, 12, 0,109, 7, 4, 0,191, 10, 4, 0, 19, 0,224, 0, 12, 0, +224, 0, 0, 0,224, 0, 1, 0, 0, 0,176, 10, 26, 0, 30, 0,166, 1,166, 7, 9, 0,192, 10,164, 1,184, 10,156, 1,193, 10, + 12, 0,194, 10,224, 0,195, 10, 2, 0, 19, 0, 2, 0,136, 1,160, 1, 23, 0,160, 1, 0, 0,160, 1, 1, 0, 2, 0, 17, 0, + 2, 0, 15, 0, 2, 0, 5, 0, 2, 0, 6, 0, 2, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 2, 0,199, 10, 0, 0,200, 10, + 0, 0, 37, 0, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 2, 0,181, 10, 2, 0,182, 10, 2, 0, 43, 0, 0, 0,201, 10, + 2, 0,202, 10, 2, 0,203, 10, 4, 0, 70, 0, 9, 0,192, 10,167, 1, 8, 0,167, 1, 0, 0,167, 1, 1, 0, 9, 0, 2, 0, + 9, 0,204, 10, 0, 0,233, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,205, 10,168, 1, 5, 0, 7, 0,206, 10, 4, 0,207, 10, + 4, 0,208, 10, 4, 0, 69, 1, 4, 0, 19, 0,169, 1, 6, 0, 7, 0,209, 10, 7, 0,210, 10, 7, 0,211, 10, 7, 0,212, 10, + 4, 0, 17, 0, 4, 0, 19, 0,170, 1, 5, 0, 7, 0,146, 8, 7, 0,147, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2, +171, 1, 5, 0,170, 1, 2, 0, 4, 0, 54, 0, 7, 0,213, 10, 7, 0,146, 8, 7, 0,147, 8,172, 1, 4, 0, 2, 0,214, 10, + 2, 0,215, 10, 2, 0,216, 10, 2, 0,217, 10,173, 1, 2, 0, 42, 0,148, 6, 26, 0,195, 8,174, 1, 3, 0, 24, 0,218, 10, + 4, 0, 19, 0, 4, 0, 37, 0,175, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,219, 10, 7, 0, 37, 0, 2, 0,246, 0, + 2, 0,220, 10,176, 1, 5, 0, 7, 0,221, 2, 7, 0, 87, 8, 2, 0,220, 10, 2, 0,136, 1, 15, 1, 4, 8,177, 1, 9, 0, +177, 1, 0, 0,177, 1, 1, 0, 27, 0,151, 6, 0, 0,221, 10, 4, 0,222, 10, 4, 0,223, 10, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,233, 3,178, 1, 6, 0, 12, 0, 39, 9, 0, 0,224, 10, 7, 0, 61, 0, 7, 0,205, 10, 4, 0, 17, 0, 4, 0, 19, 0, +179, 1, 3, 0, 7, 0,225, 10, 4, 0, 19, 0, 4, 0, 37, 0,180, 1, 15, 0,180, 1, 0, 0,180, 1, 1, 0, 79, 1, 25, 9, +178, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,179, 1,226, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, + 4, 0,222, 10, 0, 0,221, 10, 4, 0,227, 10, 7, 0,228, 10,181, 1, 2, 0, 0, 0,229, 10, 0, 0,230, 10,182, 1, 4, 0, +182, 1, 0, 0,182, 1, 1, 0,160, 0, 50, 3, 12, 0,231, 10,183, 1, 24, 0,183, 1, 0, 0,183, 1, 1, 0, 12, 0,232, 10, +160, 0,120, 8,182, 1,233, 10, 12, 0,234, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,205, 10, 7, 0,235, 10, 7, 0, 88, 0, + 7, 0, 89, 0, 7, 0, 87, 9, 7, 0, 88, 9, 7, 0,236, 2, 7, 0, 91, 9, 7, 0,122, 8, 7, 0, 92, 9, 2, 0,236, 10, + 2, 0,237, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,184, 1, 6, 0,184, 1, 0, 0,184, 1, 1, 0, + 12, 0,232, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,185, 1, 10, 0,185, 1, 0, 0,185, 1, 1, 0, 27, 0,151, 6, + 0, 0,238, 10, 4, 0,223, 10, 4, 0,239, 10, 0, 0,221, 10, 4, 0,222, 10, 2, 0, 19, 0, 2, 0,240, 10,186, 1, 7, 0, +186, 1, 0, 0,186, 1, 1, 0, 12, 0,241, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,242, 10, 4, 0,243, 10,187, 1, 5, 0, +187, 1, 0, 0,187, 1, 1, 0, 0, 0,221, 10, 4, 0,222, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,244, 10, +182, 1,233, 10, 12, 0,245, 10,183, 1,246, 10, 12, 0,247, 10, 12, 0,248, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,249, 10, + 2, 0,250, 10, 7, 0,251, 10,188, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,189, 1, 5, 0,189, 1, 0, 0,189, 1, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,190, 1, 6, 0,189, 1,252, 10, 32, 0, 45, 0, 4, 0,253, 10, 7, 0,254, 10, + 4, 0,255, 10, 4, 0, 14, 9,191, 1, 3, 0,189, 1,252, 10, 4, 0,253, 10, 7, 0, 0, 11,192, 1, 8, 0,189, 1,252, 10, + 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 1, 11, 7, 0, 17, 3, 7, 0,189, 8, 4, 0,253, 10, 4, 0, 2, 11,193, 1, 5, 0, +189, 1,252, 10, 7, 0, 3, 11, 7, 0, 6, 8, 7, 0,242, 2, 7, 0, 57, 0,194, 1, 3, 0,189, 1,252, 10, 7, 0,189, 8, + 7, 0, 4, 11,140, 1, 4, 0, 7, 0, 5, 11, 7, 0, 37, 10, 2, 0, 6, 11, 2, 0, 69, 1,195, 1, 14, 0,195, 1, 0, 0, +195, 1, 1, 0, 12, 0, 7, 11, 12, 0, 8, 11, 12, 0, 9, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 10, 11, + 7, 0, 11, 11, 4, 0,255, 10, 4, 0, 14, 9, 7, 0,242, 3, 7, 0,244, 2,146, 1, 23, 0, 4, 0,253, 10, 4, 0, 12, 11, + 7, 0, 13, 11, 7, 0, 57, 0, 7, 0, 14, 11, 7, 0,240, 2, 7, 0, 5, 11, 7, 0, 15, 11, 7, 0,221, 2, 7, 0, 16, 11, + 7, 0,120, 4, 7, 0, 17, 11, 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 22, 11, 7, 0, 23, 11, + 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 26, 11, 7, 0, 27, 11, 12, 0, 28, 11,121, 0, 34, 0,120, 0, 29, 11,196, 1, 30, 11, + 67, 0, 31, 11, 67, 0, 66, 10, 67, 0, 32, 11,197, 1, 33, 11, 48, 0,165, 0, 48, 0, 34, 11, 48, 0, 35, 11, 7, 0, 36, 11, + 7, 0, 37, 11, 7, 0, 38, 11, 7, 0, 39, 11, 7, 0, 40, 11, 7, 0, 26, 9, 7, 0, 41, 11, 7, 0,170, 1, 7, 0, 42, 11, + 4, 0, 43, 11, 4, 0, 44, 11, 4, 0, 45, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, + 4, 0, 49, 11, 7, 0,221, 2, 4, 0, 50, 11, 7, 0, 51, 11, 4, 0, 52, 11,137, 0, 53, 11, 12, 0, 54, 11,169, 0, 56, 4, +122, 0, 11, 0,120, 0, 29, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 26, 9, 7, 0, 55, 11, 7, 0, 56, 11, 2, 0, 57, 11, + 2, 0, 58, 11, 2, 0, 59, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 29, 11,139, 0, 14, 3,141, 0, 16, 3, + 7, 0,227, 8, 7, 0, 60, 11, 7, 0, 61, 11, 7, 0, 66, 1, 7, 0, 62, 11, 4, 0, 48, 9, 4, 0, 12, 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/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 3bb697ba1f4..2751edfcb43 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -114,11 +114,12 @@ static SpaceLink *image_new(const bContext *C) simage= MEM_callocN(sizeof(SpaceImage), "initimage"); simage->spacetype= SPACE_IMAGE; simage->zoom= 1; + simage->lock= 1; simage->iuser.ok= 1; simage->iuser.fie_ima= 2; simage->iuser.frames= 100; - + /* header */ ar= MEM_callocN(sizeof(ARegion), "header for image"); -- cgit v1.2.3 From d828062f1b4e14f1457978da57fda5be7d86e60a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 05:05:50 +0000 Subject: Fix for [#20157] 2.5 Can`t remove a linked objects from the 3D view by pressing X --- source/blender/editors/object/object_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 1cda61fe90f..0ce58461268 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -742,7 +742,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) if(CTX_data_edit_object(C)) return OPERATOR_CANCELLED; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; -- cgit v1.2.3 From e299798bbf71959b372fd12c0567bad3ed8c116a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 4 Dec 2009 06:33:01 +0000 Subject: Fix for [#20203] Linked objects - A few bugs Did a lot of cleaning Object operator poll functions to check if the object's linked or not. For this, added the function ED_operator_object_active_editable() as opposed to ED_operator_object_active() --- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/object/object_add.c | 6 +++--- source/blender/editors/object/object_constraint.c | 6 +++--- source/blender/editors/object/object_edit.c | 10 +++++++--- source/blender/editors/object/object_modifier.c | 10 ++-------- source/blender/editors/object/object_relations.c | 6 +++--- source/blender/editors/object/object_transform.c | 16 ++++++++-------- source/blender/editors/physics/particle_object.c | 5 ++++- source/blender/editors/physics/physics_fluid.c | 2 +- source/blender/editors/screen/screen_ops.c | 6 ++++++ 10 files changed, 38 insertions(+), 30 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index fb708e4d1c7..2f658e48557 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -132,6 +132,7 @@ int ED_operator_nla_active(struct bContext *C); int ED_operator_logic_active(struct bContext *C); int ED_operator_object_active(struct bContext *C); +int ED_operator_object_active_editable(struct bContext *C); int ED_operator_editmesh(struct bContext *C); int ED_operator_editarmature(struct bContext *C); int ED_operator_editcurve(struct bContext *C); diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 0ce58461268..5ad6e2d557c 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -999,7 +999,7 @@ static int convert_poll(bContext *C) Object *obact= CTX_data_active_object(C); Scene *scene= CTX_data_scene(C); - return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT)); + return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT) && !(obact->id.lib)); } static int convert_exec(bContext *C, wmOperator *op) @@ -1510,7 +1510,7 @@ static int join_poll(bContext *C) { Object *ob= CTX_data_active_object(C); - if (!ob) return 0; + if (!ob || ob->id.lib) return 0; if (ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_ARMATURE)) return ED_operator_screenactive(C); @@ -1563,7 +1563,7 @@ static int join_shapes_poll(bContext *C) { Object *ob= CTX_data_active_object(C); - if (!ob) return 0; + if (!ob || ob->id.lib) return 0; /* only meshes supported at the moment */ if (ob->type == OB_MESH) diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index eababfe8080..19ba5f7b32b 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -885,7 +885,7 @@ void OBJECT_OT_constraints_clear(wmOperatorType *ot) /* callbacks */ ot->exec= object_constraints_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; } /************************ add constraint operators *********************/ @@ -1212,7 +1212,7 @@ void OBJECT_OT_constraint_add(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_menu_invoke; ot->exec= object_constraint_add_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1231,7 +1231,7 @@ void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_menu_invoke; ot->exec= object_constraint_add_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 4678ee35fcd..4fed6108f86 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -553,7 +553,7 @@ void OBJECT_OT_posemode_toggle(wmOperatorType *ot) /* api callbacks */ ot->exec= posemode_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flag */ ot->flag= OPTYPE_REGISTER; @@ -1651,6 +1651,7 @@ void OBJECT_OT_shade_flat(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_flat"; /* api callbacks */ + ot->poll= ED_operator_object_active_editable; ot->exec= shade_smooth_exec; /* flags */ @@ -1664,8 +1665,9 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_smooth"; /* api callbacks */ + ot->poll= ED_operator_object_active_editable; ot->exec= shade_smooth_exec; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -1958,7 +1960,7 @@ void OBJECT_OT_mode_set(wmOperatorType *ot) /* api callbacks */ ot->exec= object_mode_set_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2013,6 +2015,7 @@ void OBJECT_OT_game_property_new(wmOperatorType *ot) /* api callbacks */ ot->exec= game_property_new; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2049,6 +2052,7 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot) /* api callbacks */ ot->exec= game_property_remove; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 88763f63f7b..0c1e6b86a99 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -542,7 +542,7 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_menu_invoke; ot->exec= modifier_add_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -574,7 +574,6 @@ 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->poll= ED_operator_object_active; ot->exec= modifier_remove_exec; ot->poll= modifier_poll; @@ -605,7 +604,6 @@ 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->poll= ED_operator_object_active; ot->exec= modifier_move_up_exec; ot->poll= modifier_poll; @@ -636,7 +634,6 @@ 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->poll= ED_operator_object_active; ot->exec= modifier_move_down_exec; ot->poll= modifier_poll; @@ -674,7 +671,6 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) ot->name= "Apply Modifier"; ot->description= "Apply modifier and remove from the stack."; ot->idname= "OBJECT_OT_modifier_apply"; - ot->poll= ED_operator_object_active; //ot->invoke= WM_menu_invoke; ot->exec= modifier_apply_exec; @@ -709,7 +705,6 @@ 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->poll= ED_operator_object_active; ot->exec= modifier_convert_exec; ot->poll= modifier_poll; @@ -740,7 +735,6 @@ 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->poll= ED_operator_object_active; ot->exec= modifier_copy_exec; ot->poll= modifier_poll; @@ -769,7 +763,7 @@ void OBJECT_OT_multires_higher_levels_delete(wmOperatorType *ot) { ot->name= "Delete Higher Levels"; ot->idname= "OBJECT_OT_multires_higher_levels_delete"; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; ot->exec= multires_higher_levels_delete_exec; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 749b1e34651..b8839360296 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -475,7 +475,7 @@ void OBJECT_OT_parent_clear(wmOperatorType *ot) ot->invoke= WM_menu_invoke; ot->exec= parent_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -733,7 +733,7 @@ void OBJECT_OT_parent_set(wmOperatorType *ot) ot->invoke= parent_set_invoke; ot->exec= parent_set_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -788,7 +788,7 @@ void OBJECT_OT_parent_no_inverse_set(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_confirm; ot->exec= parent_noinv_set_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index d990df72c0d..69a2315fd5d 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -119,7 +119,7 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= object_location_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -255,7 +255,7 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= object_rotation_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -313,7 +313,7 @@ void OBJECT_OT_scale_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= object_scale_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -357,7 +357,7 @@ void OBJECT_OT_origin_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= object_origin_clear_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -579,7 +579,7 @@ void OBJECT_OT_visual_transform_apply(wmOperatorType *ot) /* api callbacks */ ot->exec= visual_transform_apply_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -599,7 +599,7 @@ void OBJECT_OT_location_apply(wmOperatorType *ot) /* api callbacks */ ot->exec= location_apply_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -619,7 +619,7 @@ void OBJECT_OT_scale_apply(wmOperatorType *ot) /* api callbacks */ ot->exec= scale_apply_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -639,7 +639,7 @@ void OBJECT_OT_rotation_apply(wmOperatorType *ot) /* api callbacks */ ot->exec= rotation_apply_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index ce740a53db8..f94835593c5 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -56,6 +56,7 @@ #include "WM_types.h" #include "ED_particle.h" +#include "ED_screen.h" #include "physics_intern.h" @@ -83,8 +84,9 @@ void OBJECT_OT_particle_system_add(wmOperatorType *ot) ot->description="Add a particle system."; /* api callbacks */ + ot->poll= ED_operator_object_active_editable; ot->exec= particle_system_add_exec; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -120,6 +122,7 @@ void OBJECT_OT_particle_system_remove(wmOperatorType *ot) ot->description="Remove the selected particle system."; /* api callbacks */ + ot->poll= ED_operator_object_active_editable; ot->exec= particle_system_remove_exec; /* flags */ diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index e5d553dacc7..7893b314e3e 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -1200,6 +1200,6 @@ void FLUID_OT_bake(wmOperatorType *ot) /* api callbacks */ ot->exec= fluid_bake_exec; - ot->poll= ED_operator_object_active; + ot->poll= ED_operator_object_active_editable; } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index afee27cd0f3..633d5181bbf 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -218,6 +218,12 @@ int ED_operator_object_active(bContext *C) return NULL != CTX_data_active_object(C); } +int ED_operator_object_active_editable(bContext *C) +{ + Object *ob=CTX_data_active_object(C); + return ((ob != NULL) && !(ob->id.lib)); +} + int ED_operator_editmesh(bContext *C) { Object *obedit= CTX_data_edit_object(C); -- cgit v1.2.3 From d1563601f4aca2178f9354e02a45e55728e9f706 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 4 Dec 2009 09:58:00 +0000 Subject: This commit deletes temporary "temp" screen layouts when the windows using them get closed. --- source/blender/editors/screen/screen_edit.c | 6 ++++++ source/blender/windowmanager/intern/wm_window.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index b0d1557a66f..1f6ce4fed73 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1124,6 +1124,12 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) /* mark it available for use for other windows */ screen->winid= 0; + /* if temp screen, delete it */ + if(screen->full == SCREENTEMP) { + Main *bmain= CTX_data_main(C); + free_libblock(&bmain->screen, screen); + } + CTX_wm_window_set(C, prevwin); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 75325a1d9f9..d9b6117cbb3 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -233,7 +233,7 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win) CTX_wm_window_set(C, win); /* needed by handlers */ WM_event_remove_handlers(C, &win->handlers); WM_event_remove_handlers(C, &win->modalhandlers); - ED_screen_exit(C, win, win->screen); + ED_screen_exit(C, win, win->screen); /* will free the current screen if it is a temp layout */ wm_window_free(C, wm, win); /* check remaining windows */ -- cgit v1.2.3 From 6bfb3cf6ef50e08ac0a986e3a779498d1926427c Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Fri, 4 Dec 2009 10:37:24 +0000 Subject: Update MSVC9 project files --- intern/ghost/make/msvc_9_0/ghost.vcproj | 8 ++++++++ projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/intern/ghost/make/msvc_9_0/ghost.vcproj b/intern/ghost/make/msvc_9_0/ghost.vcproj index 9569fba5a0e..4e4d9bb6598 100644 --- a/intern/ghost/make/msvc_9_0/ghost.vcproj +++ b/intern/ghost/make/msvc_9_0/ghost.vcproj @@ -352,6 +352,10 @@ RelativePath="..\..\intern\GHOST_DisplayManagerWin32.h" > + + @@ -489,6 +493,10 @@ RelativePath="..\..\intern\GHOST_DisplayManagerWin32.cpp" > + + diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj index ae0ce4327b6..2a8e25d02be 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj @@ -617,6 +617,10 @@ RelativePath="..\..\..\source\blender\makesrna\intern\rna_armature.c" > + + -- cgit v1.2.3 From 1dcca75e047a54630c9c005c994fa3b21d6863cd Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Fri, 4 Dec 2009 10:45:23 +0000 Subject: Update MSVC9 project files --- projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj index 272a56f58a4..26bbab73154 100644 --- a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj +++ b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj @@ -43,7 +43,7 @@ Date: Fri, 4 Dec 2009 11:27:40 +0000 Subject: BGE: Add option to return UV coordinates aofthe hit point to KX_GameObject::rayCast(). Details in PyDoc. --- .../src/BulletSoftBody/btSoftBodyHelpers.cpp | 3 +- source/gameengine/Ketsji/KX_GameObject.cpp | 24 ++- source/gameengine/Ketsji/KX_RayCast.cpp | 6 +- source/gameengine/Ketsji/KX_RayCast.h | 9 +- .../Physics/Bullet/CcdPhysicsController.cpp | 55 ++++++- .../Physics/Bullet/CcdPhysicsController.h | 11 +- .../Physics/Bullet/CcdPhysicsEnvironment.cpp | 171 +++++++++++++++------ .../gameengine/Physics/common/PHY_DynamicTypes.h | 14 ++ .../Physics/common/PHY_IPhysicsEnvironment.h | 8 +- source/gameengine/PyDoc/GameTypes.py | 14 +- 10 files changed, 249 insertions(+), 66 deletions(-) diff --git a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp index 6ab93c16402..4f81b0953a2 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp +++ b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp @@ -828,7 +828,8 @@ btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBodyWorldInfo& worldInfo #undef IDX psb->appendFace(idx[0],idx[1],idx[2]); } - psb->randomizeConstraints(); + // don't randomize now, let's give a chance to the application to set face data + //psb->randomizeConstraints(); return(psb); } diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index d18e11d3ca5..e64e0914b87 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -2606,8 +2606,8 @@ static PyObject *none_tuple_4() } KX_PYMETHODDEF_DOC(KX_GameObject, rayCast, - "rayCast(to,from,dist,prop,face,xray,poly): cast a ray and return 3-tuple (object,hit,normal) or 4-tuple (object,hit,normal,polygon) of contact point with object within dist that matches prop.\n" - " If no hit, return (None,None,None) or (None,None,None,None).\n" + "rayCast(to,from,dist,prop,face,xray,poly): cast a ray and return 3-tuple (object,hit,normal) or 4-tuple (object,hit,normal,polygon) or 4-tuple (object,hit,normal,polygon,hituv) of contact point with object within dist that matches prop.\n" + " If no hit, return (None,None,None) or (None,None,None,None) or (None,None,None,None,None).\n" " to = 3-tuple or object reference for destination of ray (if object, use center of object)\n" " from = 3-tuple or object reference for origin of ray (if object, use center of object)\n" " Can be None or omitted => start from self object center\n" @@ -2617,6 +2617,8 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast, " xray = X-ray option: 1=>skip objects that don't match prop; 0 or omitted => stop on first object\n" " poly = polygon option: 1=>return value is a 4-tuple and the 4th element is a KX_PolyProxy object\n" " which can be None if hit object has no mesh or if there is no hit\n" +" 2=>return value is a 5-tuple, the 4th element is the KX_PolyProxy object\n" +" and the 5th element is the vector of UV coordinates at the hit point of the None if there is no UV mapping\n" " If 0 or omitted, return value is a 3-tuple\n" "Note: The object on which you call this method matters: the ray will ignore it.\n" " prop and xray option interact as follow:\n" @@ -2697,12 +2699,12 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast, m_testPropName.SetLength(0); m_xray = xray; // to get the hit results - KX_RayCast::Callback callback(this,spc,NULL,face); + KX_RayCast::Callback callback(this,spc,NULL,face,(poly==2)); KX_RayCast::RayTest(pe, fromPoint, toPoint, callback); if (m_pHitObject) { - PyObject* returnValue = (poly) ? PyTuple_New(4) : PyTuple_New(3); + PyObject* returnValue = (poly==2) ? PyTuple_New(5) : (poly) ? PyTuple_New(4) : PyTuple_New(3); if (returnValue) { // unlikely this would ever fail, if it does python sets an error PyTuple_SET_ITEM(returnValue, 0, m_pHitObject->GetProxy()); PyTuple_SET_ITEM(returnValue, 1, PyObjectFrom(callback.m_hitPoint)); @@ -2715,11 +2717,25 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast, RAS_Polygon* polygon = callback.m_hitMesh->GetPolygon(callback.m_hitPolygon); KX_PolyProxy* polyproxy = new KX_PolyProxy(callback.m_hitMesh, polygon); PyTuple_SET_ITEM(returnValue, 3, polyproxy->NewProxy(true)); + if (poly == 2) + { + if (callback.m_hitUVOK) + PyTuple_SET_ITEM(returnValue, 4, PyObjectFrom(callback.m_hitUV)); + else { + Py_INCREF(Py_None); + PyTuple_SET_ITEM(returnValue, 4, Py_None); + } + } } else { Py_INCREF(Py_None); PyTuple_SET_ITEM(returnValue, 3, Py_None); + if (poly==2) + { + Py_INCREF(Py_None); + PyTuple_SET_ITEM(returnValue, 4, Py_None); + } } } } diff --git a/source/gameengine/Ketsji/KX_RayCast.cpp b/source/gameengine/Ketsji/KX_RayCast.cpp index 8c7612bf663..7f8b7da7289 100644 --- a/source/gameengine/Ketsji/KX_RayCast.cpp +++ b/source/gameengine/Ketsji/KX_RayCast.cpp @@ -40,8 +40,8 @@ #include "PHY_IPhysicsEnvironment.h" #include "PHY_IPhysicsController.h" -KX_RayCast::KX_RayCast(KX_IPhysicsController* ignoreController, bool faceNormal) - :PHY_IRayCastFilterCallback(dynamic_cast(ignoreController), faceNormal) +KX_RayCast::KX_RayCast(KX_IPhysicsController* ignoreController, bool faceNormal, bool faceUV) + :PHY_IRayCastFilterCallback(dynamic_cast(ignoreController), faceNormal, faceUV) { } @@ -50,6 +50,8 @@ void KX_RayCast::reportHit(PHY_RayCastResult* result) m_hitFound = true; m_hitPoint.setValue((const float*)result->m_hitPoint); m_hitNormal.setValue((const float*)result->m_hitNormal); + m_hitUVOK = result->m_hitUVOK; + m_hitUV.setValue((const float*)result->m_hitUV); m_hitMesh = result->m_meshObject; m_hitPolygon = result->m_polygon; } diff --git a/source/gameengine/Ketsji/KX_RayCast.h b/source/gameengine/Ketsji/KX_RayCast.h index cdafc894f6c..696a8ca78c0 100644 --- a/source/gameengine/Ketsji/KX_RayCast.h +++ b/source/gameengine/Ketsji/KX_RayCast.h @@ -32,6 +32,7 @@ #include "PHY_IPhysicsEnvironment.h" #include "PHY_IPhysicsController.h" +#include "MT_Vector2.h" #include "MT_Point3.h" #include "MT_Vector3.h" @@ -59,8 +60,10 @@ public: MT_Vector3 m_hitNormal; const RAS_MeshObject* m_hitMesh; int m_hitPolygon; + int m_hitUVOK; // !=0 if UV coordinate in m_hitUV is valid + MT_Vector2 m_hitUV; - KX_RayCast(KX_IPhysicsController* ignoreController, bool faceNormal); + KX_RayCast(KX_IPhysicsController* ignoreController, bool faceNormal, bool faceUV); virtual ~KX_RayCast() {} /** @@ -102,8 +105,8 @@ template class KX_RayCast::Callback : public KX_RayCast T *self; void *data; public: - Callback(T *_self, KX_IPhysicsController* controller=NULL, void *_data = NULL, bool faceNormal=false) - : KX_RayCast(controller, faceNormal), + Callback(T *_self, KX_IPhysicsController* controller=NULL, void *_data = NULL, bool faceNormal=false, bool faceUV=false) + : KX_RayCast(controller, faceNormal, faceUV), self(_self), data(_data) { diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 98e67afdd44..767854e5725 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -214,6 +214,7 @@ bool CcdPhysicsController::CreateSoftbody() } } else { + int numtris = 0; if (m_cci.m_collisionShape->getShapeType() ==SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE) { btScaledBvhTriangleMeshShape* scaledtrimeshshape = (btScaledBvhTriangleMeshShape*) m_cci.m_collisionShape; @@ -228,7 +229,6 @@ bool CcdPhysicsController::CreateSoftbody() int vertexstride; unsigned char* indexbase; int indexstride; - int numtris; PHY_ScalarType indexType; trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); @@ -246,14 +246,21 @@ bool CcdPhysicsController::CreateSoftbody() int vertexstride; unsigned char* indexbase; int indexstride; - int numtris; PHY_ScalarType indexType; trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); } } - + // store face tag so that we can find our original face when doing ray casting + btSoftBody::Face* ft; + int i; + for (i=0, ft=&psb->m_faces[0]; im_tag = (void*)((uintptr_t)(i+1)); + } } if (m_cci.m_margin > 0.f) { @@ -1402,6 +1409,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, m_vertexArray.clear(); m_polygonIndexArray.clear(); m_triFaceArray.clear(); + m_triFaceUVcoArray.clear(); return false; } @@ -1415,6 +1423,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, numpolys = dm->getNumFaces(dm); numverts = dm->getNumVerts(dm); int* index = (int*)dm->getFaceDataArray(dm, CD_ORIGINDEX); + MTFace *tface = (MTFace *)dm->getFaceDataArray(dm, CD_MTFACE); m_shapeType = (polytope) ? PHY_SHAPE_POLYTOPE : PHY_SHAPE_MESH; @@ -1515,14 +1524,23 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, m_vertexArray.resize(tot_bt_verts*3); m_polygonIndexArray.resize(tot_bt_tris); m_triFaceArray.resize(tot_bt_tris*3); - btScalar *bt= &m_vertexArray[0]; int *poly_index_pt= &m_polygonIndexArray[0]; int *tri_pt= &m_triFaceArray[0]; + UVco *uv_pt = NULL; + if (tface) + { + m_triFaceUVcoArray.resize(tot_bt_tris*3); + uv_pt = &m_triFaceUVcoArray[0]; + } + else + m_triFaceUVcoArray.clear(); + for (int p2=0; p2GetPolygon(index[p2]); // only add polygons that have the collisionflag set @@ -1537,6 +1555,16 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, tri_pt[1]= vert_remap_array[mf->v2]; tri_pt[2]= vert_remap_array[mf->v3]; tri_pt= tri_pt+3; + if (tf) + { + uv_pt[0].uv[0] = tf->uv[0][0]; + uv_pt[0].uv[1] = tf->uv[0][1]; + uv_pt[1].uv[0] = tf->uv[1][0]; + uv_pt[1].uv[1] = tf->uv[1][1]; + uv_pt[2].uv[0] = tf->uv[2][0]; + uv_pt[2].uv[1] = tf->uv[2][1]; + uv_pt += 3; + } // m_polygonIndexArray *poly_index_pt= index[p2]; @@ -1570,6 +1598,16 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, tri_pt[1]= vert_remap_array[mf->v3]; tri_pt[2]= vert_remap_array[mf->v4]; tri_pt= tri_pt+3; + if (tf) + { + uv_pt[0].uv[0] = tf->uv[0][0]; + uv_pt[0].uv[1] = tf->uv[0][1]; + uv_pt[1].uv[0] = tf->uv[2][0]; + uv_pt[1].uv[1] = tf->uv[2][1]; + uv_pt[2].uv[0] = tf->uv[3][0]; + uv_pt[2].uv[1] = tf->uv[3][1]; + uv_pt += 3; + } // m_polygonIndexArray *poly_index_pt= index[p2]; @@ -1728,10 +1766,12 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA m_triFaceArray.resize(tot_bt_tris*3); int *tri_pt= &m_triFaceArray[0]; + m_triFaceUVcoArray.resize(tot_bt_tris*3); + UVco *uv_pt= &m_triFaceUVcoArray[0]; + m_polygonIndexArray.resize(tot_bt_tris); int *poly_index_pt= &m_polygonIndexArray[0]; - for(mf= mface, tf= tface, i=0; i < numpolys; mf++, tf++, i++) { if(tf->mode & TF_DYNAMIC) @@ -1760,6 +1800,9 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA vert_tag_array[v_orig]= false; } *tri_pt++ = vert_remap_array[v_orig]; + uv_pt->uv[0] = tf->uv[*fv_pt][0]; + uv_pt->uv[1] = tf->uv[*fv_pt][1]; + uv_pt++; } } } @@ -1782,6 +1825,8 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA m_polygonIndexArray.resize(tot_bt_tris); int *poly_index_pt= &m_polygonIndexArray[0]; + m_triFaceUVcoArray.clear(); + for(mv= mvert, i=0; i < numverts; mv++, i++) { *bt++ = mv->co[0]; *bt++ = mv->co[1]; *bt++ = mv->co[2]; } diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h index dcb0af62cf9..637007e2857 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h @@ -52,12 +52,16 @@ class btCollisionShape; #define CCD_BSB_COL_VF_SS 16 /* Vertex/Face based soft vs soft */ - // Shape contructor // It contains all the information needed to create a simple bullet shape at runtime class CcdShapeConstructionInfo { public: + struct UVco + { + float uv[2]; + }; + static CcdShapeConstructionInfo* FindMesh(class RAS_MeshObject* mesh, struct DerivedMesh* dm, bool polytope, bool gimpact); CcdShapeConstructionInfo() : @@ -103,7 +107,7 @@ public: btTriangleMeshShape* GetMeshShape(void) { - return m_unscaledShape; + return (m_unscaledShape); } CcdShapeConstructionInfo* GetChildShape(int i) { @@ -174,6 +178,9 @@ public: std::vector m_triFaceArray; // Contains an array of triplets of face indicies // quads turn into 2 tris + std::vector m_triFaceUVcoArray; // Contains an array of pair of UV coordinate for each vertex of faces + // quads turn into 2 tris + void setVertexWeldingThreshold1(float threshold) { m_weldingThreshold1 = threshold*threshold; diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 3d1fa6fc180..477a2c35d4f 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -974,6 +974,7 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul const btCollisionShape* m_hitTriangleShape; int m_hitTriangleIndex; + FilterClosestRayResultCallback (PHY_IRayCastFilterCallback& phyRayFilter,const btVector3& rayFrom,const btVector3& rayTo) : btCollisionWorld::ClosestRayResultCallback(rayFrom,rayTo), m_phyRayFilter(phyRayFilter), @@ -1017,6 +1018,56 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul }; +static bool GetHitTriangle(btCollisionShape* shape, CcdShapeConstructionInfo* shapeInfo, int hitTriangleIndex, btVector3 triangle[]) +{ + // this code is copied from Bullet + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + btStridingMeshInterface* meshInterface = NULL; + btTriangleMeshShape* triangleShape = shapeInfo->GetMeshShape(); + + if (triangleShape) + meshInterface = triangleShape->getMeshInterface(); + else + { + // other possibility is gImpact + if (shape->getShapeType() == GIMPACT_SHAPE_PROXYTYPE) + meshInterface = (static_cast(shape))->getMeshInterface(); + } + if (!meshInterface) + return false; + + meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + 0); + + unsigned int* gfxbase = (unsigned int*)(indexbase+hitTriangleIndex*indexstride); + const btVector3& meshScaling = shape->getLocalScaling(); + for (int j=2;j>=0;j--) + { + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + + btScalar* graphicsbase = (btScalar*)(vertexbase+graphicsindex*stride); + + triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); + } + meshInterface->unLockReadOnlyVertexBase(0); + return true; +} + PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ) { btVector3 rayFrom(fromX,fromY,fromZ); @@ -1069,64 +1120,98 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac if (shape == rayCallback.m_hitTriangleShape && rayCallback.m_hitTriangleIndex < shapeInfo->m_polygonIndexArray.size()) { + // save original collision shape triangle for soft body + int hitTriangleIndex = rayCallback.m_hitTriangleIndex; + result.m_meshObject = shapeInfo->GetMesh(); - // note for softbody: this assumes that the softbody shape uses the same triangle numbering - // than the triangle mesh shape that was used to build it + if (shape->isSoftBody()) + { + // soft body using different face numbering because of randomization + // hopefully we have stored the original face number in m_tag + btSoftBody* softBody = static_cast(rayCallback.m_collisionObject); + if (softBody->m_faces[hitTriangleIndex].m_tag != 0) + { + rayCallback.m_hitTriangleIndex = (int)((uintptr_t)(softBody->m_faces[hitTriangleIndex].m_tag)-1); + } + } + // retrieve the original mesh polygon (in case of quad->tri conversion) result.m_polygon = shapeInfo->m_polygonIndexArray.at(rayCallback.m_hitTriangleIndex); - + // hit triangle in world coordinate, for face normal and UV coordinate + btVector3 triangle[3]; + bool triangleOK = false; + if (filterCallback.m_faceUV && (3*rayCallback.m_hitTriangleIndex) < shapeInfo->m_triFaceUVcoArray.size()) + { + // interpolate the UV coordinate of the hit point + CcdShapeConstructionInfo::UVco* uvCo = &shapeInfo->m_triFaceUVcoArray[3*rayCallback.m_hitTriangleIndex]; + // 1. get the 3 coordinate of the triangle in world space + btVector3 v1, v2, v3; + if (shape->isSoftBody()) + { + // soft body give points directly in world coordinate + btSoftBody* softBody = static_cast(rayCallback.m_collisionObject); + v1 = softBody->m_faces[hitTriangleIndex].m_n[0]->m_x; + v2 = softBody->m_faces[hitTriangleIndex].m_n[1]->m_x; + v3 = softBody->m_faces[hitTriangleIndex].m_n[2]->m_x; + } else + { + // for rigid body we must apply the world transform + triangleOK = GetHitTriangle(shape, shapeInfo, hitTriangleIndex, triangle); + if (!triangleOK) + // if we cannot get the triangle, no use to continue + goto SKIP_UV_NORMAL; + v1 = rayCallback.m_collisionObject->getWorldTransform()(triangle[0]); + v2 = rayCallback.m_collisionObject->getWorldTransform()(triangle[1]); + v3 = rayCallback.m_collisionObject->getWorldTransform()(triangle[2]); + } + // 2. compute barycentric coordinate of the hit point + btVector3 v = v2-v1; + btVector3 w = v3-v1; + btVector3 u = v.cross(w); + btScalar A = u.length(); + + v = v2-rayCallback.m_hitPointWorld; + w = v3-rayCallback.m_hitPointWorld; + u = v.cross(w); + btScalar A1 = u.length(); + + v = rayCallback.m_hitPointWorld-v1; + w = v3-v1; + u = v.cross(w); + btScalar A2 = u.length(); + + btVector3 baryCo; + baryCo.setX(A1/A); + baryCo.setY(A2/A); + baryCo.setZ(1.0f-baryCo.getX()-baryCo.getY()); + // 3. compute UV coordinate + result.m_hitUV[0] = baryCo.getX()*uvCo[0].uv[0] + baryCo.getY()*uvCo[1].uv[0] + baryCo.getZ()*uvCo[2].uv[0]; + result.m_hitUV[1] = baryCo.getX()*uvCo[0].uv[1] + baryCo.getY()*uvCo[1].uv[1] + baryCo.getZ()*uvCo[2].uv[1]; + result.m_hitUVOK = 1; + } + // Bullet returns the normal from "outside". // If the user requests the real normal, compute it now if (filterCallback.m_faceNormal) { - // mesh shapes are shared and stored in the shapeInfo - btTriangleMeshShape* triangleShape = shapeInfo->GetMeshShape(); - if (shape->isSoftBody()) { // we can get the real normal directly from the body btSoftBody* softBody = static_cast(rayCallback.m_collisionObject); - rayCallback.m_hitNormalWorld = softBody->m_faces[rayCallback.m_hitTriangleIndex].m_normal; - } else if (triangleShape) + rayCallback.m_hitNormalWorld = softBody->m_faces[hitTriangleIndex].m_normal; + } else { - // this code is copied from Bullet - btVector3 triangle[3]; - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - btStridingMeshInterface* meshInterface = triangleShape->getMeshInterface(); - - meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - 0); - - unsigned int* gfxbase = (unsigned int*)(indexbase+rayCallback.m_hitTriangleIndex*indexstride); - const btVector3& meshScaling = shape->getLocalScaling(); - for (int j=2;j>=0;j--) + if (!triangleOK) + triangleOK = GetHitTriangle(shape, shapeInfo, hitTriangleIndex, triangle); + if (triangleOK) { - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - - btScalar* graphicsbase = (btScalar*)(vertexbase+graphicsindex*stride); - - triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); + btVector3 triangleNormal; + triangleNormal = (triangle[1]-triangle[0]).cross(triangle[2]-triangle[0]); + rayCallback.m_hitNormalWorld = rayCallback.m_collisionObject->getWorldTransform().getBasis()*triangleNormal; } - meshInterface->unLockReadOnlyVertexBase(0); - btVector3 triangleNormal; - triangleNormal = (triangle[1]-triangle[0]).cross(triangle[2]-triangle[0]); - rayCallback.m_hitNormalWorld = rayCallback.m_collisionObject->getWorldTransform().getBasis()*triangleNormal; } } + SKIP_UV_NORMAL: + ; } } } diff --git a/source/gameengine/Physics/common/PHY_DynamicTypes.h b/source/gameengine/Physics/common/PHY_DynamicTypes.h index 7ce40001af7..08d94a2850a 100644 --- a/source/gameengine/Physics/common/PHY_DynamicTypes.h +++ b/source/gameengine/Physics/common/PHY_DynamicTypes.h @@ -22,6 +22,20 @@ subject to the following restrictions: struct KX_ClientObjectInfo; class PHY_Shape; +struct PHY__Vector2 +{ + float m_vec[2]; + + operator const float* () const + { + return &m_vec[0]; + } + operator float* () + { + return &m_vec[0]; + } +}; + struct PHY__Vector3 { float m_vec[4]; diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h index 291dac298dc..86e72c70bb7 100644 --- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h +++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h @@ -52,6 +52,8 @@ struct PHY_RayCastResult const RAS_MeshObject* m_meshObject; // !=NULL for mesh object (only for Bullet controllers) int m_polygon; // index of the polygon hit by the ray, // only if m_meshObject != NULL + int m_hitUVOK; // !=0 if UV coordinate in m_hitUV is valid + PHY__Vector2 m_hitUV; // UV coordinates of hit point }; /** @@ -64,6 +66,7 @@ class PHY_IRayCastFilterCallback public: PHY_IPhysicsController* m_ignoreController; bool m_faceNormal; + bool m_faceUV; virtual ~PHY_IRayCastFilterCallback() { @@ -76,9 +79,10 @@ public: virtual void reportHit(PHY_RayCastResult* result) = 0; - PHY_IRayCastFilterCallback(PHY_IPhysicsController* ignoreController, bool faceNormal=false) + PHY_IRayCastFilterCallback(PHY_IPhysicsController* ignoreController, bool faceNormal=false, bool faceUV=false) :m_ignoreController(ignoreController), - m_faceNormal(faceNormal) + m_faceNormal(faceNormal), + m_faceUV(faceUV) { } diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py index 3c0292e9e8c..27b4685ca14 100644 --- a/source/gameengine/PyDoc/GameTypes.py +++ b/source/gameengine/PyDoc/GameTypes.py @@ -1958,6 +1958,7 @@ class KX_GameObject(SCA_IObject): Look from a point/object to another point/object and find first object hit within dist that matches prop. if poly is 0, returns a 3-tuple with object reference, hit point and hit normal or (None,None,None) if no hit. if poly is 1, returns a 4-tuple with in addition a L{KX_PolyProxy} as 4th element. + if poly is 2, returns a 5-tuple with in addition a 2D vector with the UV mapping of the hit point as 5th element. Ex:: # shoot along the axis gun-gunAim (gunAim should be collision-free) @@ -1996,13 +1997,18 @@ class KX_GameObject(SCA_IObject): @type face: int @param xray: X-ray option: 1=>skip objects that don't match prop; 0 or omitted => stop on first object @type xray: int - @param poly: polygon option: 1=>return value is a 4-tuple and the 4th element is a L{KX_PolyProxy} + @param poly: polygon option: 0,1 or 2 to return a 3-, 4- or 5-tuple with information on the face hit + 0 or omitted=> return value is a 3-tuple (object, hitpoint, hitnormal) or (None,None,None) if no hit + 1=>return value is a 4-tuple and the 4th element is a L{KX_PolyProxy} or None if no hit or the object doesn't use a mesh collision shape. + 2=>return value is a 5-tuple and the 5th element is a 2-tuple (u,v) with the UV mapping of the hit point or None if no hit, or the object doesn't use a mesh collision shape, or doesn't have a UV mapping. @type poly: int @rtype: 3-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz)) or 4-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz), L{KX_PolyProxy}) - @return: (object,hitpoint,hitnormal) or (object,hitpoint,hitnormal,polygon) - If no hit, returns (None,None,None) or (None,None,None,None) - If the object hit is not a static mesh, polygon is None + or 5-tuple (L{KX_GameObject}, 3-tuple (x,y,z), 3-tuple (nx,ny,nz), L{KX_PolyProxy}, 2-tuple (u,v)) + @return: (object,hitpoint,hitnormal) or (object,hitpoint,hitnormal,polygon) or (object,hitpoint,hitnormal,polygon,hituv) + object, hitpoint and hitnormal are None if no hit. + polygon is valid only if the object is valid and is a static object, a dynamic object using mesh collision shape or a soft body object, otherwise it is None + hituv is valid only if polygon is valid and the object has a UV mapping, otherwise it is None """ def setCollisionMargin(margin): """ -- cgit v1.2.3 From f3201f08533ec8984339b0653f3587b1ca7ad05e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 4 Dec 2009 15:32:26 +0000 Subject: UI: curve widget tweaks * Make snap ctrl instead of shift * Only enable snapping after moving a few pixels, otherwise too easy to do enable this by accident. * Deselecting points with shift did not work. --- source/blender/editors/interface/interface_handlers.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index e81c1a2f0a5..d2545e530e4 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -2990,6 +2990,16 @@ static int ui_numedit_but_CURVE(uiBut *but, uiHandleButtonData *data, int snap, offsx= cumap->curr.xmin; offsy= cumap->curr.ymin; + if(snap) { + float d[2]; + + d[0]= mx - data->dragstartx; + d[1]= my - data->dragstarty; + + if(len_v2(d) < 3.0f) + snap= 0; + } + if(data->dragsel != -1) { int moved_point= 0; /* for ctrl grid, can't use orig coords because of sorting */ @@ -3126,10 +3136,13 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt if(sel!= -1) { /* ok, we move a point */ /* deselect all if this one is deselect. except if we hold shift */ - if(event->shift==0 && (cmp[sel].flag & SELECT)==0) + if(event->shift==0) { for(a=0; atotpoint; a++) cmp[a].flag &= ~SELECT; - cmp[sel].flag |= SELECT; + cmp[sel].flag |= SELECT; + } + else + cmp[sel].flag ^= SELECT; } else { /* move the view */ @@ -3150,7 +3163,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt else if(data->state == BUTTON_STATE_NUM_EDITING) { if(event->type == MOUSEMOVE) { if(mx!=data->draglastx || my!=data->draglasty) { - if(ui_numedit_but_CURVE(but, data, event->shift, mx, my)) + if(ui_numedit_but_CURVE(but, data, event->ctrl, mx, my)) ui_numedit_apply(C, block, but, data); } } -- cgit v1.2.3 From 19c0a169b8ef7965e50e0da144560755df188839 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 4 Dec 2009 16:35:31 +0000 Subject: touches for demo'ing --- release/scripts/modules/rigify/__init__.py | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index e960d06a1b2..7ae2481619f 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -92,10 +92,7 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): new_slot_ls.append(attr) from_name_ls.append(bone_name) new_name_ls.append(to_prefix + bone_name_orig) - print("RUN!") - print("from_name_ls", from_name_ls) - print("new_name_ls", new_name_ls) - + new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) new_bc = bone_class_instance(self.obj, new_slot_ls) @@ -148,16 +145,8 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr new_pbone = getattr(self, attr + "_p") from_bone_name = getattr(from_bc, attr) to_bone_name = getattr(to_bc, attr) - - a = getattr(from_bc, attr+"_p") - b = getattr(to_bc, attr+"_p") - if a.name != from_bone_name: - raise Exception("a") - if b.name != to_bone_name: - raise Exception("b") if from_bone_name == to_bone_name: - print(from_bc, to_bc) raise Exception("Matching from/to bone names:" + from_bone_name) if use_loc: @@ -177,7 +166,6 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr blend_target(driver) if use_rot: - print(from_bone_name, to_bone_name) con = new_pbone.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = from_bone_name @@ -358,8 +346,6 @@ def generate_rig(context, ob): global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False - - # add_stretch_to(ob, "a", "b", "c") bpy.ops.object.mode_set(mode='OBJECT') @@ -482,7 +468,6 @@ def generate_test(context): scene.objects.link(ob_new) scene.objects.active = ob_new - print(os.path.basename(__file__)) files = os.listdir(os.path.dirname(__file__)) for f in files: if f.startswith("_"): @@ -508,6 +493,7 @@ def generate_test(context): return new_objects + def generate_test_all(context): import rigify import graphviz_export @@ -519,7 +505,6 @@ def generate_test_all(context): base_name = os.path.splitext(bpy.data.filename)[0] for obj, obj_new in new_objects: - for ob in (obj, obj_new): fn = base_name + "-" + bpy.utils.clean_name(ob.name) @@ -529,6 +514,15 @@ def generate_test_all(context): #if saved: # os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) + + i = 0 + for obj, obj_new in new_objects: + obj.data.drawtype = 'STICK' + obj.location[1] += i + obj_new.location[1] += i + obj_new.selected = False + obj.selected = True + i += 4 if __name__ == "__main__": -- cgit v1.2.3 From 648122b1a22752f9f27d4ea74942f480973ee3e7 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Fri, 4 Dec 2009 17:54:48 +0000 Subject: String fix and a bunch of PEP8 issues I had collected in the meanwhile. --- release/scripts/modules/retopo.py | 111 +++++++++++++------------ release/scripts/modules/rna_prop_ui.py | 18 ++-- release/scripts/op/console_python.py | 3 + release/scripts/op/console_shell.py | 13 +-- release/scripts/ui/properties_physics_cloth.py | 2 +- release/scripts/ui/space_console.py | 5 +- release/scripts/ui/space_image.py | 4 +- release/scripts/ui/space_info.py | 8 +- release/scripts/ui/space_node.py | 4 +- release/scripts/ui/space_outliner.py | 4 +- release/scripts/ui/space_sequencer.py | 7 +- release/scripts/ui/space_text.py | 5 +- release/scripts/ui/space_userpref.py | 4 +- release/scripts/ui/space_view3d.py | 22 ++--- 14 files changed, 108 insertions(+), 102 deletions(-) diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index 081ac1b0168..0bf822c9ed4 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -22,19 +22,20 @@ import bpy EPS_SPLINE_DIV = 15.0 # remove doubles is ~15th the length of the spline + def get_hub(co, _hubs, EPS_SPLINE): - + if 1: for hub in _hubs.values(): if (hub.co - co).length < EPS_SPLINE: return hub - + key = co.toTuple(3) hub = _hubs[key] = Hub(co, key, len(_hubs)) return hub else: pass - + ''' key = co.toTuple(3) try: @@ -43,10 +44,11 @@ def get_hub(co, _hubs, EPS_SPLINE): hub = _hubs[key] = Hub(co, key, len(_hubs)) return hub ''' - + class Hub(object): __slots__ = "co", "key", "index", "links" + def __init__(self, co, key, index): self.co = co.copy() self.key = key @@ -55,10 +57,10 @@ class Hub(object): def get_weight(self): f = 0.0 - + for hub_other in self.links: f += (self.co - hub_other.co).length - + def replace(self, other): for hub in self.links: try: @@ -67,8 +69,7 @@ class Hub(object): pass if other not in hub.links: hub.links.append(other) - - + def dist(self, other): return (self.co - other.co).length @@ -80,9 +81,8 @@ class Hub(object): if l_b is not self and l_b in self.links: # will give duplicates faces.append((self.index, l_a.index, l_b.index)) - - # now quads, check which links share 2 different verts - # directly + + # now quads, check which links share 2 different verts directly def validate_quad(face): if len(set(face)) != len(face): return False @@ -90,41 +90,41 @@ class Hub(object): return False if hub_ls[face[2]] in hub_ls[face[0]].links: return False - + if hub_ls[face[1]] in hub_ls[face[3]].links: return False if hub_ls[face[3]] in hub_ls[face[1]].links: return False - + return True for i, l_a in enumerate(self.links): links_a = set([l.index for l in l_a.links]) for j in range(i): l_b = self.links[j] - + links_b = set([l.index for l in l_b.links]) - + isect = links_a.intersection(links_b) if len(isect) == 2: isect = list(isect) - + # check there are no diagonal lines face = (isect[0], l_a.index, isect[1], l_b.index) if validate_quad(face): - + faces.append(face) - + return faces - class Spline: __slots__ = "points", "hubs", "length" + def __init__(self, points): self.points = points self.hubs = [] - + # calc length f = 0.0 co_prev = self.points[0] @@ -136,46 +136,49 @@ class Spline: def link(self): if len(self.hubs) < 2: return - + edges = list(set([i for i, hub in self.hubs])) edges.sort() edges_order = {} for i in edges: edges_order[i] = [] - - + + # self.hubs.sort() for i, hub in self.hubs: edges_order[i].append(hub) - + hubs_order = [] for i in edges: ls = edges_order[i] edge_start = self.points[i] ls.sort(key=lambda hub: (hub.co - edge_start).length) hubs_order.extend(ls) - + # Now we have the order, connect the hubs hub_prev = hubs_order[0] - + for hub in hubs_order[1:]: hub.links.append(hub_prev) hub_prev.links.append(hub) hub_prev = hub + def get_points(stroke): return [point.co.copy() for point in stroke.points] + def get_splines(gp): for l in gp.layers: if l.active: # XXX - should be layers.active break - + frame = l.active_frame - + return [Spline(get_points(stroke)) for stroke in frame.strokes] + def xsect_spline(sp_a, sp_b, _hubs): from Mathutils import LineIntersect from Mathutils import MidpointVecs @@ -191,7 +194,7 @@ def xsect_spline(sp_a, sp_b, _hubs): # print(pt_a, pt_a_prev, pt_b, pt_b_prev) xsect = LineIntersect(pt_a, pt_a_prev, pt_b, pt_b_prev) if xsect is not None: - if (xsect[0]-xsect[1]).length <= EPS_SPLINE: + if (xsect[0] - xsect[1]).length <= EPS_SPLINE: f = ClosestPointOnLine(xsect[1], pt_a, pt_a_prev)[1] # if f >= 0.0-EPS_SPLINE and f <= 1.0+EPS_SPLINE: # for some reason doesnt work so well, same below if f >= 0.0 and f <= 1.0: @@ -206,90 +209,90 @@ def xsect_spline(sp_a, sp_b, _hubs): sp_b.hubs.append((b, hub)) pt_b_prev = pt_b - + pt_a_prev = pt_a def calculate(gp): splines = get_splines(gp) _hubs = {} - + for i, sp in enumerate(splines): for j, sp_other in enumerate(splines): - if j<=i: + if j <= i: continue xsect_spline(sp, sp_other, _hubs) - + for sp in splines: sp.link() - + # remove these hubs_ls = [hub for hub in _hubs.values() if hub.index != -1] - + _hubs.clear() _hubs = None - + for i, hub in enumerate(hubs_ls): hub.index = i - + # Now we have connected hubs, write all edges! def order(i1, i2): if i1 > i2: return i2, i1 return i1, i2 - + edges = {} - + for hub in hubs_ls: i1 = hub.index - for hub_other in hub.links: + for hub_other in hub.links: i2 = hub_other.index edges[order(i1, i2)] = None - + verts = [] edges = edges.keys() faces = [] - + for hub in hubs_ls: verts.append(hub.co) faces.extend(hub.calc_faces(hubs_ls)) - + # remove double faces faces = dict([(tuple(sorted(f)), f) for f in faces]).values() - + mesh = bpy.data.add_mesh("Retopo") mesh.from_pydata(verts, [], faces) - + scene = bpy.context.scene mesh.update() obj_new = bpy.data.add_object('MESH', "Torus") obj_new.data = mesh scene.objects.link(obj_new) - + return obj_new - - + + def main(): scene = bpy.context.scene obj = bpy.context.object - + gp = None - + if obj: gp = obj.grease_pencil - + if not gp: gp = scene.grease_pencil if not gp: raise Exception("no active grease pencil") - + obj_new = calculate(gp) - + scene.objects.active = obj_new obj_new.selected = True - + # nasty, recalc normals bpy.ops.object.mode_set(mode='EDIT', toggle=False) bpy.ops.mesh.normals_make_consistent(inside=False) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index d19449f9404..1e1747220e1 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -20,6 +20,7 @@ import bpy + def rna_idprop_ui_get(item, create=True): try: return item['_RNA_UI'] @@ -57,7 +58,7 @@ def rna_idprop_ui_prop_clear(item, prop): pass -def draw(layout, context, context_member, use_edit = True): +def draw(layout, context, context_member, use_edit=True): def assign_props(prop, val, key): prop.path = context_member @@ -69,7 +70,7 @@ def draw(layout, context, context_member, use_edit = True): pass rna_item = eval("context." + context_member) - + # poll should really get this... if not rna_item: return @@ -138,6 +139,7 @@ rna_property = StringProperty(name="Property Name", rna_min = FloatProperty(name="Min", default=0.0, precision=3) rna_max = FloatProperty(name="Max", default=1.0, precision=3) + class WM_OT_properties_edit(bpy.types.Operator): '''Internal use (edit a property path)''' bl_idname = "wm.properties_edit" @@ -206,15 +208,15 @@ class WM_OT_properties_edit(bpy.types.Operator): prop_ui = rna_idprop_ui_prop_get(item, self.properties.property, False) # dont create if prop_ui: self.properties.min = prop_ui.get("min", -1000000000) - self.properties.max = prop_ui.get("max", 1000000000) - self.properties.description = prop_ui.get("description", "") + self.properties.max = prop_ui.get("max", 1000000000) + self.properties.description = prop_ui.get("description", "") if 0: - _message= "PyConsole, press Ctrl+D to unlock the BGE" + _message = "PyConsole, press Ctrl+D to unlock the BGE" import sys # evaluate commands in current namespace - frame= sys._getframe() + frame = sys._getframe() namespace = frame.f_globals.copy() namespace.update(frame.f_locals) @@ -252,7 +254,7 @@ class WM_OT_properties_add(bpy.types.Operator): i = 1 while prop_new in names: prop_new = prop + str(i) - i+=1 + i += 1 return prop_new @@ -261,6 +263,7 @@ class WM_OT_properties_add(bpy.types.Operator): item[property] = 1.0 return ('FINISHED',) + class WM_OT_properties_remove(bpy.types.Operator): '''Internal use (edit a property path)''' bl_idname = "wm.properties_remove" @@ -273,4 +276,3 @@ class WM_OT_properties_remove(bpy.types.Operator): item = eval("context.%s" % self.properties.path) del item[self.properties.property] return ('FINISHED',) - diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 532602655fa..7f1d35ede20 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -22,11 +22,13 @@ import bpy language_id = 'python' + def add_scrollback(text, text_type): for l in text.split('\n'): bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), type=text_type) + def get_console(console_id): ''' helper function for console operators @@ -70,6 +72,7 @@ def get_console(console_id): PROMPT = '>>> ' PROMPT_MULTI = '... ' + def execute(context): sc = context.space_data diff --git a/release/scripts/op/console_shell.py b/release/scripts/op/console_shell.py index 7262a434a51..7dec9477f51 100644 --- a/release/scripts/op/console_shell.py +++ b/release/scripts/op/console_shell.py @@ -25,19 +25,21 @@ import bpy language_id = 'shell' + def add_scrollback(text, text_type): for l in text.split('\n'): bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), type=text_type) + def shell_run(text): import subprocess - val, output= subprocess.getstatusoutput(text) + val, output = subprocess.getstatusoutput(text) if not val: - style= 'OUTPUT' + style = 'OUTPUT' else: - style= 'ERROR' + style = 'ERROR' add_scrollback(output, style) @@ -60,7 +62,7 @@ def execute(context): bpy.ops.console.history_append(text="", current_character=0, remove_duplicates=True) - sc.prompt = os.getcwd()+PROMPT + sc.prompt = os.getcwd() + PROMPT return ('FINISHED',) @@ -74,7 +76,6 @@ def banner(context): sc = context.space_data shell_run("bash --version") - sc.prompt = os.getcwd()+PROMPT + sc.prompt = os.getcwd() + PROMPT return ('FINISHED',) - diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index 7123e52fb8d..305244bf918 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -84,7 +84,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel): cloth = md.settings split = layout.split() - + split.active = cloth_panel_enabled(md) col = split.column() diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index a59c39d52ec..5e086435ddd 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -69,12 +69,13 @@ class CONSOLE_MT_console(bpy.types.Menu): layout.operator("console.copy") layout.operator("console.paste") layout.menu("CONSOLE_MT_language") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") + class CONSOLE_MT_report(bpy.types.Menu): bl_label = "Report" diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 9c5c92dbaef..5714a3d2548 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -61,9 +61,9 @@ class IMAGE_MT_view(bpy.types.Menu): layout.operator("image.view_selected") layout.operator("image.view_all") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index a9365ad2ecb..ad94bdd0beb 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -83,18 +83,18 @@ class INFO_MT_file(bpy.types.Menu): layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_as_mainfile", text="Save As...") - + layout.separator() - + layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') layout.operator("wm.read_homefile", text="Load Factory Settings").factory = True layout.separator() - + layout.operator_context = 'INVOKE_AREA' layout.operator("wm.link_append", text="Link") layout.operator("wm.link_append", text="Append").link = False - + layout.separator() layout.menu("INFO_MT_file_import") diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index ed212053ecc..c05ab767f85 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -82,9 +82,9 @@ class NODE_MT_view(bpy.types.Menu): layout.separator() layout.operator("node.view_all") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index f6ad0b68f80..cc2c6a633ae 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -76,9 +76,9 @@ class OUTLINER_MT_view(bpy.types.Menu): col.operator("outliner.show_one_level") col.operator("outliner.show_hierarchy") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 00361ca86aa..b2bd017262f 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -109,10 +109,11 @@ class SEQUENCER_MT_view(bpy.types.Menu): layout.prop(st, "separate_color_preview") layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") + class SEQUENCER_MT_select(bpy.types.Menu): bl_label = "Select" @@ -336,8 +337,8 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): if not strip: return False - return strip.type in ('ADD','SUBTRACT','ALPHA_OVER','ALPHA_UNDER', - 'GAMMA_CROSS','MULTIPLY','OVER_DROP', + return strip.type in ('ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', + 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'PLUGIN', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED') diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index fad8ab3b610..95175e9ce41 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -123,7 +123,6 @@ class TEXT_PT_find(bpy.types.Panel): row.prop(st, "find_all", text="All") - class TEXT_MT_text(bpy.types.Menu): bl_label = "Text" @@ -160,9 +159,9 @@ class TEXT_MT_text(bpy.types.Menu): layout.operator("text.properties", icon='ICON_MENU_PANEL') layout.menu("TEXT_MT_templates") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 69f75b54482..5a8dbf9ee80 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1415,9 +1415,9 @@ class WM_OT_keymap_edit(bpy.types.Operator): class WM_OT_keymap_restore(bpy.types.Operator): - "Restore key map" + "Restore key map(s)." bl_idname = "wm.keymap_restore" - bl_label = "Restore Key Map" + bl_label = "Restore Key Map(s)" all = BoolProperty(attr="all", name="All Keymaps", description="Restore all keymaps to default.") diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 97ae62e2d3e..af722c7f4d7 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -32,15 +32,15 @@ class VIEW3D_HT_header(bpy.types.Header): edit_object = context.edit_object obj = context.active_object toolsettings = context.scene.tool_settings - + row = layout.row() row.template_header() - + sub = row.row(align=True) - + # Menus if context.area.show_menus: - + sub.menu("VIEW3D_MT_view") # Select Menu @@ -269,19 +269,15 @@ class VIEW3D_MT_view(bpy.types.Menu): layout.operator("view3d.view_all") layout.separator() - + layout.operator("screen.animation_play", text="Playback Animation") - + layout.separator() - + layout.operator("screen.area_dupli") layout.operator("screen.region_quadview") layout.operator("screen.screen_full_area") - - - - class VIEW3D_MT_view_navigation(bpy.types.Menu): bl_label = "Navigation" @@ -413,7 +409,7 @@ class VIEW3D_MT_select_pose(bpy.types.Menu): props = layout.operator("pose.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' - + layout.operator("object.select_pattern", text="Select Pattern...") @@ -605,7 +601,7 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu): props = layout.operator("armature.select_hierarchy", text="Extend Child") props.extend = True props.direction = 'CHILD' - + layout.operator("object.select_pattern", text="Select Pattern...") -- cgit v1.2.3 From f21ec890815fb1527b433e6e11e9cba5bf962f17 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Fri, 4 Dec 2009 19:06:17 +0000 Subject: Fix for [#20144] Game physics panel - softbody allows other collision bounds. --- source/blender/makesrna/intern/rna_object.c | 46 +++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index c90dc6749c9..4dacf46f0c6 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -65,6 +65,16 @@ static EnumPropertyItem parent_type_items[] = { {PARVERT3, "VERTEX_3", 0, "3 Vertices", ""}, {PARBONE, "BONE", 0, "Bone", ""}, {0, NULL, 0, NULL, NULL}}; + +static EnumPropertyItem collision_bounds_items[] = { + {OB_BOUND_BOX, "BOX", 0, "Box", ""}, + {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""}, + {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""}, + {OB_BOUND_CONE, "CONE", 0, "Cone", ""}, + {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""}, + {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""}, + //{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""}, + {0, NULL, 0, NULL, NULL}}; EnumPropertyItem object_type_items[] = { {OB_MESH, "MESH", 0, "Mesh", ""}, @@ -79,8 +89,7 @@ EnumPropertyItem object_type_items[] = { {0, "", 0, NULL, NULL}, {OB_CAMERA, "CAMERA", 0, "Camera", ""}, {OB_LAMP, "LAMP", 0, "Lamp", ""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -296,6 +305,28 @@ static EnumPropertyItem *rna_Object_parent_type_itemf(bContext *C, PointerRNA *p return item; } +static EnumPropertyItem *rna_Object_collision_bounds_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + Object *ob= (Object*)ptr->data; + EnumPropertyItem *item= NULL; + int totitem= 0; + + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYH); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYT); + + if(ob->body_type!=OB_BODY_TYPE_SOFT) { + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONE); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CYLINDER); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_SPHERE); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_BOX); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + static void rna_Object_parent_bone_set(PointerRNA *ptr, const char *value) { Object *ob= (Object*)ptr->data; @@ -1042,16 +1073,6 @@ static void rna_def_object_game_settings(BlenderRNA *brna) {OB_BODY_TYPE_SENSOR, "SENSOR", 0, "Sensor", "Collision Sensor, detects static and dynamic objects but not the other collision sensor objects"}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem collision_bounds_items[] = { - {OB_BOUND_BOX, "BOX", 0, "Box", ""}, - {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""}, - {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""}, - {OB_BOUND_CONE, "CONE", 0, "Cone", ""}, - {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""}, - {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""}, - //{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""}, - {0, NULL, 0, NULL, NULL}}; - srna= RNA_def_struct(brna, "GameObjectSettings", NULL); RNA_def_struct_sdna(srna, "Object"); RNA_def_struct_nested(brna, srna, "Object"); @@ -1201,6 +1222,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "collision_bounds", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "boundtype"); RNA_def_property_enum_items(prop, collision_bounds_items); + RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Object_collision_bounds_itemf"); RNA_def_property_ui_text(prop, "Collision Bounds", "Selects the collision type."); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); -- cgit v1.2.3 From e9b7482b6a0b340a7045e55809cfe88500c04d1b Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 19:07:25 +0000 Subject: Save_Mainfile operator only needs window for invoke. Removed poll function and replace by a check in invoke that cancels if no window is present. Makes it possible to be called in background mode. --- source/blender/windowmanager/intern/wm_operators.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 793250f390e..9cee2140fc7 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1555,6 +1555,10 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) { char name[FILE_MAX]; + /* cancel if no active window */ + if (CTX_wm_window(C) == NULL) + return OPERATOR_CANCELLED; + save_set_compress(op); BLI_strncpy(name, G.sce, FILE_MAX); @@ -1577,7 +1581,7 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) ot->invoke= wm_save_mainfile_invoke; ot->exec= wm_save_as_mainfile_exec; - ot->poll= WM_operator_winactive; + ot->poll= NULL; WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file."); -- cgit v1.2.3 From 56b0880d2f66ae77e34c7ac518758ea13792056f Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 19:08:07 +0000 Subject: Null check for baking progressend function Simplify end of line for console progress. --- source/blender/blenkernel/intern/pointcache.c | 4 +++- source/blender/editors/physics/physics_pointcache.c | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index cc7b942a6bb..7b2cf72e311 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -2361,7 +2361,9 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker) if(baker->break_test && baker->break_test(baker->break_data)) break; } - baker->progressend(baker->progresscontext); + + if (baker->progressend) + baker->progressend(baker->progresscontext); /* clear baking flag */ if(pid) { diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index a931e27bc83..858ff3637b1 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -84,11 +84,11 @@ void bake_console_progress(void *arg, int nr) { printf("\rbake: %3i%%", nr); fflush(stdout); +} - /* endline for last report */ - if (nr == 100) { - printf("\n"); - } +void bake_console_progress_end(void *arg, int nr) +{ + printf("\n"); } static int ptcache_bake_all_exec(bContext *C, wmOperator *op) @@ -113,7 +113,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) baker.progresscontext = win; } else { baker.progressbar = bake_console_progress; - baker.progressend = NULL; + baker.progressend = bake_console_progress_end; baker.progresscontext = NULL; } @@ -207,7 +207,7 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) } else { printf("\n"); /* empty first line before console reports */ baker.progressbar = bake_console_progress; - baker.progressend = NULL; + baker.progressend = bake_console_progress_end; baker.progresscontext = NULL; } -- cgit v1.2.3 From c7c1fda642b3cea1ec022123921e1ee06c9b2acb Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 4 Dec 2009 19:13:22 +0000 Subject: Changes to netrender baking operator. Force step of 1 for full baking. --- release/scripts/io/netrender/operators.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index 84a00970018..4d5b752e42a 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -43,33 +43,42 @@ class RENDER_OT_netslave_bake(bpy.types.Operator): path, name = os.path.split(filename) root, ext = os.path.splitext(name) default_path = path + os.sep + "blendcache_" + root + os.sep # need an API call for that + relative_path = os.sep + os.sep + "blendcache_" + root + os.sep # Force all point cache next to the blend file for object in bpy.data.objects: for modifier in object.modifiers: if modifier.type == 'FLUID_SIMULATION' and modifier.settings.type == "DOMAIN": - modifier.settings.path = default_path + modifier.settings.path = relative_path bpy.ops.fluid.bake({"active_object": object, "scene": scene}) elif modifier.type == "CLOTH": + modifier.point_cache.step = 1 modifier.point_cache.disk_cache = True modifier.point_cache.external = False elif modifier.type == "SOFT_BODY": + modifier.point_cache.step = 1 modifier.point_cache.disk_cache = True modifier.point_cache.external = False elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN": + modifier.domain_settings.point_cache_low.step = 1 modifier.domain_settings.point_cache_low.disk_cache = True modifier.domain_settings.point_cache_low.external = False + modifier.domain_settings.point_cache_high.step = 1 modifier.domain_settings.point_cache_high.disk_cache = True modifier.domain_settings.point_cache_high.external = False # particles modifier are stupid and don't contain data # we have to go through the object property for psys in object.particle_systems: + psys.point_cache.step = 1 psys.point_cache.disk_cache = True psys.point_cache.external = False + psys.point_cache.filepath = relative_path bpy.ops.ptcache.bake_all() + #bpy.ops.wm.save_mainfile(path = path + os.sep + root + "_baked.blend") + return ('FINISHED',) def invoke(self, context, event): -- cgit v1.2.3 From c2b71607d23fc2768ea6f8eabcaeec01daefcf30 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 5 Dec 2009 00:26:20 +0000 Subject: * provide SCons support to enabling jaguarandi SIMD raytracer optimizations for real :) Until now only SSE switches were defined, but to really enjoy the SIMD structures, the __SSE__ define needs to be given. This can now be done with setting in your user-config.py WITH_BF_RAYOPTIMIZATION=True (or WITH_BF_RAYOPTIMIZATION=1 on command-line) --- source/blender/render/SConscript | 34 +- source/blender/render/intern/raytrace/reorganize.h | 5 +- tools/btools.py | 1134 ++++++++++---------- 3 files changed, 594 insertions(+), 579 deletions(-) diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 63ef83a0cfe..dfce2267898 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -2,17 +2,20 @@ Import ('env') if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): - # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings - cflags = [] - cxxflags = [] + # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + ['/arch:SSE'] + else: + cflags = env['CCFLAGS'] + cxxflags = [] if env['OURPLATFORM'] == 'darwin': - if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64'): - cflags = env['CFLAGS'] + ['-mfpmath=sse'] - cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] - else: - cflags = env['CFLAGS'] - cxxflags = env['CXXFLAGS'] + if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CFLAGS'] + ['-mfpmath=sse'] + cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] + else: + cflags = env['CFLAGS'] + cxxflags = env['CXXFLAGS'] sources = env.Glob('intern/source/*.c') raysources = env.Glob('intern/raytrace/*.cpp') @@ -31,15 +34,22 @@ if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') if env['OURPLATFORM'] == 'linux2': -# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no +# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no # cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] # cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cflags = env['CCFLAGS'] - cxxflags = env['CXXFLAGS'] + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] + cxxflags = env['CXXFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] + else: + cflags = env['CCFLAGS'] + cxxflags = env['CXXFLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] +if env['WITH_BF_RAYOPTIMIZATION']: + defs.append('__SSE__') + env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags ) env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags, cxx_compileflags=cxxflags ) diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h index bcf7f6f2078..2d4a4d15fe2 100644 --- a/source/blender/render/intern/raytrace/reorganize.h +++ b/source/blender/render/intern/raytrace/reorganize.h @@ -26,13 +26,16 @@ * * ***** END GPL LICENSE BLOCK ***** */ - #include #include #include #include #include +#ifdef _WIN32 +#define INFINITY FLT_MAX // in mingw math.h: (1.0F/0.0F). This generates compile error, though. +#endif + extern int tot_pushup; extern int tot_pushdown; diff --git a/tools/btools.py b/tools/btools.py index f010a82fd6a..d5cc8a543b4 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -5,9 +5,9 @@ import SCons.Options import SCons.Variables try: - import subprocess + import subprocess except ImportError: - pass + pass import string import glob import shutil @@ -17,279 +17,280 @@ Variables = SCons.Variables BoolVariable = SCons.Variables.BoolVariable def print_arguments(args, bc): - if len(args): - for k,v in args.iteritems(): - if type(v)==list: - v = ' '.join(v) - print '\t'+bc.OKBLUE+k+bc.ENDC+' = '+bc.OKGREEN + v + bc.ENDC - else: - print '\t'+bc.WARNING+'No command-line arguments given'+bc.ENDC + if len(args): + for k,v in args.iteritems(): + if type(v)==list: + v = ' '.join(v) + print '\t'+bc.OKBLUE+k+bc.ENDC+' = '+bc.OKGREEN + v + bc.ENDC + else: + print '\t'+bc.WARNING+'No command-line arguments given'+bc.ENDC def validate_arguments(args, bc): - opts_list = [ - 'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', - 'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC', - 'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', - 'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH', - 'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', - 'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', - 'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH', - 'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC', - 'WITH_BF_DDS', - 'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC', - 'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB', - 'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH', - 'WITH_BF_OPENJPEG', 'BF_OPENJPEG', 'BF_OPENJPEG_INC', 'BF_OPENJPEG_LIB', 'BF_OPENJPEG_LIBPATH', - 'WITH_BF_REDCODE', 'BF_REDCODE', 'BF_REDCODE_INC', 'BF_REDCODE_LIB', 'BF_REDCODE_LIBPATH', - 'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH', - 'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH', - 'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH', - 'WITH_BF_INTERNATIONAL', - 'BF_GETTEXT', 'BF_GETTEXT_INC', 'BF_GETTEXT_LIB', 'BF_GETTEXT_LIBPATH', - 'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH', - 'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB', - 'BF_WINTAB', 'BF_WINTAB_INC', - 'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', - 'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH', - 'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', - 'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC', - 'WITH_BF_COLLADA', 'BF_COLLADA', 'BF_COLLADA_INC', 'BF_COLLADA_LIB', 'BF_OPENCOLLADA', 'BF_OPENCOLLADA_INC', 'BF_OPENCOLLADA_LIB', 'BF_OPENCOLLADA_LIBPATH', 'BF_PCRE', 'BF_PCRE_LIB', 'BF_PCRE_LIBPATH', 'BF_EXPAT', 'BF_EXPAT_LIB', 'BF_EXPAT_LIBPATH', - 'WITH_BF_PLAYER', - 'WITH_BF_NOBLENDER', - 'WITH_BF_BINRELOC', - 'WITH_BF_LZO', 'WITH_BF_LZMA', - 'LCGDIR', - 'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC', - 'BF_TWEAK_MODE', 'BF_SPLIT_SRC', - 'WITHOUT_BF_INSTALL', - 'WITHOUT_BF_PYTHON_INSTALL', - 'WITH_BF_OPENMP', - 'WITH_GHOST_COCOA', - 'USE_QTKIT', - 'BF_FANCY', 'BF_QUIET', - 'BF_X264_CONFIG', - 'BF_XVIDCORE_CONFIG', - 'WITH_BF_LCMS', 'BF_LCMS_LIB', - 'WITH_BF_DOCS', - 'BF_NUMJOBS', - 'BF_MSVS', - 'WITH_BF_FHS', - 'BF_VERSION', - 'BF_GHOST_DEBUG' - ] - - # Have options here that scons expects to be lists - opts_list_split = [ - 'BF_PYTHON_LINKFLAGS', - 'BF_OPENGL_LINKFLAGS', - 'CFLAGS', 'CCFLAGS', 'CXXFLAGS', 'CPPFLAGS', - 'REL_CFLAGS', 'REL_CCFLAGS', 'REL_CXXFLAGS', - 'BGE_CXXFLAGS', - 'BF_PROFILE_CFLAGS', 'BF_PROFILE_CCFLAGS', 'BF_PROFILE_CXXFLAGS', 'BF_PROFILE_LINKFLAGS', - 'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS', - 'C_WARN', 'CC_WARN', 'CXX_WARN', - 'LLIBS', 'PLATFORM_LINKFLAGS','MACOSX_ARCHITECTURE', - ] - - - arg_list = ['BF_DEBUG', 'BF_QUIET', 'BF_CROSS', 'BF_UPDATE', - 'BF_INSTALLDIR', 'BF_TOOLSET', 'BF_BINNAME', - 'BF_BUILDDIR', 'BF_FANCY', 'BF_QUICK', 'BF_PROFILE', - 'BF_BSC', 'BF_CONFIG', - 'BF_PRIORITYLIST', 'BF_BUILDINFO','CC', 'CXX', 'BF_QUICKDEBUG', - 'BF_LISTDEBUG', 'LCGDIR', 'BF_X264_CONFIG', 'BF_XVIDCORE_CONFIG', - 'BF_UNIT_TEST'] - - okdict = {} - - for k,v in args.iteritems(): - if (k in opts_list) or (k in arg_list): - okdict[k] = v - elif k in opts_list_split: - okdict[k] = v.split() # "" have already been stripped - else: - print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v - - return okdict + opts_list = [ + 'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', + 'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC', + 'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', + 'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH', + 'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', + 'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', + 'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH', + 'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC', + 'WITH_BF_DDS', + 'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC', + 'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB', + 'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH', + 'WITH_BF_OPENJPEG', 'BF_OPENJPEG', 'BF_OPENJPEG_INC', 'BF_OPENJPEG_LIB', 'BF_OPENJPEG_LIBPATH', + 'WITH_BF_REDCODE', 'BF_REDCODE', 'BF_REDCODE_INC', 'BF_REDCODE_LIB', 'BF_REDCODE_LIBPATH', + 'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH', + 'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH', + 'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH', + 'WITH_BF_INTERNATIONAL', + 'BF_GETTEXT', 'BF_GETTEXT_INC', 'BF_GETTEXT_LIB', 'BF_GETTEXT_LIBPATH', + 'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH', + 'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB', + 'BF_WINTAB', 'BF_WINTAB_INC', + 'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', + 'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH', + 'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', + 'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC', + 'WITH_BF_COLLADA', 'BF_COLLADA', 'BF_COLLADA_INC', 'BF_COLLADA_LIB', 'BF_OPENCOLLADA', 'BF_OPENCOLLADA_INC', 'BF_OPENCOLLADA_LIB', 'BF_OPENCOLLADA_LIBPATH', 'BF_PCRE', 'BF_PCRE_LIB', 'BF_PCRE_LIBPATH', 'BF_EXPAT', 'BF_EXPAT_LIB', 'BF_EXPAT_LIBPATH', + 'WITH_BF_PLAYER', + 'WITH_BF_NOBLENDER', + 'WITH_BF_BINRELOC', + 'WITH_BF_LZO', 'WITH_BF_LZMA', + 'LCGDIR', + 'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC', + 'BF_TWEAK_MODE', 'BF_SPLIT_SRC', + 'WITHOUT_BF_INSTALL', + 'WITHOUT_BF_PYTHON_INSTALL', + 'WITH_BF_OPENMP', + 'WITH_GHOST_COCOA', + 'USE_QTKIT', + 'BF_FANCY', 'BF_QUIET', + 'BF_X264_CONFIG', + 'BF_XVIDCORE_CONFIG', + 'WITH_BF_LCMS', 'BF_LCMS_LIB', + 'WITH_BF_DOCS', + 'BF_NUMJOBS', + 'BF_MSVS', + 'WITH_BF_FHS', + 'BF_VERSION', + 'BF_GHOST_DEBUG', + 'WITH_BF_RAYOPTIMIZATION' + ] + + # Have options here that scons expects to be lists + opts_list_split = [ + 'BF_PYTHON_LINKFLAGS', + 'BF_OPENGL_LINKFLAGS', + 'CFLAGS', 'CCFLAGS', 'CXXFLAGS', 'CPPFLAGS', + 'REL_CFLAGS', 'REL_CCFLAGS', 'REL_CXXFLAGS', + 'BGE_CXXFLAGS', + 'BF_PROFILE_CFLAGS', 'BF_PROFILE_CCFLAGS', 'BF_PROFILE_CXXFLAGS', 'BF_PROFILE_LINKFLAGS', + 'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS', + 'C_WARN', 'CC_WARN', 'CXX_WARN', + 'LLIBS', 'PLATFORM_LINKFLAGS','MACOSX_ARCHITECTURE', + ] + + + arg_list = ['BF_DEBUG', 'BF_QUIET', 'BF_CROSS', 'BF_UPDATE', + 'BF_INSTALLDIR', 'BF_TOOLSET', 'BF_BINNAME', + 'BF_BUILDDIR', 'BF_FANCY', 'BF_QUICK', 'BF_PROFILE', + 'BF_BSC', 'BF_CONFIG', + 'BF_PRIORITYLIST', 'BF_BUILDINFO','CC', 'CXX', 'BF_QUICKDEBUG', + 'BF_LISTDEBUG', 'LCGDIR', 'BF_X264_CONFIG', 'BF_XVIDCORE_CONFIG', + 'BF_UNIT_TEST'] + + okdict = {} + + for k,v in args.iteritems(): + if (k in opts_list) or (k in arg_list): + okdict[k] = v + elif k in opts_list_split: + okdict[k] = v.split() # "" have already been stripped + else: + print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v + + return okdict def print_targets(targs, bc): - if len(targs)>0: - for t in targs: - print '\t'+bc.OKBLUE+t+bc.ENDC - else: - print '\t'+bc.WARNING+'No targets given, using '+bc.ENDC+bc.OKGREEN+'default'+bc.ENDC + if len(targs)>0: + for t in targs: + print '\t'+bc.OKBLUE+t+bc.ENDC + else: + print '\t'+bc.WARNING+'No targets given, using '+bc.ENDC+bc.OKGREEN+'default'+bc.ENDC def validate_targets(targs, bc): - valid_list = ['.', 'blender', 'blenderstatic', 'blenderplayer', 'webplugin', - 'blendernogame', 'blenderstaticnogame', 'blenderlite', 'release', - 'everything', 'clean', 'install-bin', 'install', 'nsis'] - oklist = [] - for t in targs: - if t in valid_list: - oklist.append(t) - else: - print '\t'+bc.WARNING+'Invalid target: '+bc.ENDC+t - return oklist + valid_list = ['.', 'blender', 'blenderstatic', 'blenderplayer', 'webplugin', + 'blendernogame', 'blenderstaticnogame', 'blenderlite', 'release', + 'everything', 'clean', 'install-bin', 'install', 'nsis'] + oklist = [] + for t in targs: + if t in valid_list: + oklist.append(t) + else: + print '\t'+bc.WARNING+'Invalid target: '+bc.ENDC+t + return oklist class ourSpawn: - def ourspawn(self, sh, escape, cmd, args, env): - newargs = string.join(args[1:], ' ') - cmdline = cmd + " " + newargs - startupinfo = subprocess.STARTUPINFO() - startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW - proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False) - data, err = proc.communicate() - rv = proc.wait() - if rv: - print "=====" - print err - print "=====" - return rv + def ourspawn(self, sh, escape, cmd, args, env): + newargs = string.join(args[1:], ' ') + cmdline = cmd + " " + newargs + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False) + data, err = proc.communicate() + rv = proc.wait() + if rv: + print "=====" + print err + print "=====" + return rv def SetupSpawn( env ): - buf = ourSpawn() - buf.ourenv = env - env['SPAWN'] = buf.ourspawn + buf = ourSpawn() + buf.ourenv = env + env['SPAWN'] = buf.ourspawn def read_opts(cfg, args): - localopts = Variables.Variables(cfg, args) - localopts.AddVariables( - ('LCGDIR', 'location of cvs lib dir'), - (BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)), - ('BF_PYTHON', 'base path for python', ''), - ('BF_PYTHON_VERSION', 'Python version to use', ''), - ('BF_PYTHON_INC', 'include path for Python headers', ''), - ('BF_PYTHON_BINARY', 'Path to the Python interpreter', ''), - ('BF_PYTHON_LIB', 'Python library', ''), - ('BF_PYTHON_DLL', 'Python dll - used on Windows only', ''), - ('BF_PYTHON_LIB_STATIC', 'Python static libraries', ''), - ('BF_PYTHON_LIBPATH', 'Library path', ''), - ('BF_PYTHON_LINKFLAGS', 'Python link flags', ''), - (BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)), - - (BoolVariable('BF_NO_ELBEEM', 'Disable Fluid Sim', False)), - ('BF_PROFILE_FLAGS', 'Profiling compiler flags', ''), - (BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)), - ('BF_OPENAL', 'base path for OpenAL', ''), - ('BF_OPENAL_INC', 'include path for python headers', ''), - ('BF_OPENAL_LIB', 'Path to OpenAL library', ''), - ('BF_OPENAL_LIB_STATIC', 'Path to OpenAL static library', ''), - ('BF_OPENAL_LIBPATH', 'Path to OpenAL library', ''), - (BoolVariable('WITH_BF_STATICOPENAL', 'Staticly link to openal', False)), - - (BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)), - ('BF_SDL', 'SDL base path', ''), - ('BF_SDL_INC', 'SDL include path', ''), - ('BF_SDL_LIB', 'SDL library', ''), - ('BF_SDL_LIBPATH', 'SDL library path', ''), - - ('BF_LIBSAMPLERATE', 'libsamplerate aka SRC base path', ''), - ('BF_LIBSAMPLERATE_INC', 'libsamplerate aka SRC include path', ''), - ('BF_LIBSAMPLERATE_LIB', 'libsamplerate aka SRC library', ''), - ('BF_LIBSAMPLERATE_LIBPATH', 'libsamplerate aka SRC library path', ''), - - (BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)), - ('BF_JACK', 'jack base path', ''), - ('BF_JACK_INC', 'jack include path', ''), - ('BF_JACK_LIB', 'jack library', ''), - ('BF_JACK_LIBPATH', 'jack library path', ''), - - (BoolVariable('WITH_BF_SNDFILE', 'Enable sndfile support if true', True)), - ('BF_SNDFILE', 'sndfile base path', ''), - ('BF_SNDFILE_INC', 'sndfile include path', ''), - ('BF_SNDFILE_LIB', 'sndfile library', ''), - ('BF_SNDFILE_LIBPATH', 'sndfile library path', ''), - - ('BF_PTHREADS', 'Pthreads base path', ''), - ('BF_PTHREADS_INC', 'Pthreads include path', ''), - ('BF_PTHREADS_LIB', 'Pthreads library', ''), - ('BF_PTHREADS_LIBPATH', 'Pthreads library path', ''), - - (BoolVariable('WITH_BF_OPENEXR', 'Use OPENEXR if true', True)), - (BoolVariable('WITH_BF_STATICOPENEXR', 'Staticly link to OpenEXR', False)), - ('BF_OPENEXR', 'OPENEXR base path', ''), - ('BF_OPENEXR_INC', 'OPENEXR include path', ''), - ('BF_OPENEXR_LIB', 'OPENEXR library', ''), - ('BF_OPENEXR_LIBPATH', 'OPENEXR library path', ''), - ('BF_OPENEXR_LIB_STATIC', 'OPENEXR static library', ''), - - (BoolVariable('WITH_BF_DDS', 'Use DDS if true', True)), - - (BoolVariable('WITH_BF_FFMPEG', 'Use FFMPEG if true', False)), - ('BF_FFMPEG', 'FFMPEG base path', ''), - ('BF_FFMPEG_LIB', 'FFMPEG library', ''), - ('BF_FFMPEG_EXTRA', 'FFMPEG flags that must be preserved', ''), - - ('BF_FFMPEG_INC', 'FFMPEG includes', ''), - ('BF_FFMPEG_LIBPATH', 'FFMPEG library path', ''), - - (BoolVariable('WITH_BF_OGG', 'Use OGG, THEORA, VORBIS in FFMPEG if true', - False)), - ('BF_OGG', 'OGG base path', ''), - ('BF_OGG_LIB', 'OGG library', ''), - - (BoolVariable('WITH_BF_JPEG', 'Use JPEG if true', True)), - ('BF_JPEG', 'JPEG base path', ''), - ('BF_JPEG_INC', 'JPEG include path', ''), - ('BF_JPEG_LIB', 'JPEG library', ''), - ('BF_JPEG_LIBPATH', 'JPEG library path', ''), - - (BoolVariable('WITH_BF_OPENJPEG', 'Use OPENJPEG if true', False)), - ('BF_OPENJPEG', 'OPENJPEG base path', ''), - ('BF_OPENJPEG_INC', 'OPENJPEG include path', ''), - ('BF_OPENJPEG_LIB', 'OPENJPEG library', ''), - ('BF_OPENJPEG_LIBPATH', 'OPENJPEG library path', ''), - - (BoolVariable('WITH_BF_REDCODE', 'Use REDCODE if true', False)), - ('BF_REDCODE', 'REDCODE base path', ''), - ('BF_REDCODE_INC', 'REDCODE include path', ''), - ('BF_REDCODE_LIB', 'REDCODE library', ''), - ('BF_REDCODE_LIBPATH', 'REDCODE library path', ''), - - (BoolVariable('WITH_BF_PNG', 'Use PNG if true', True)), - ('BF_PNG', 'PNG base path', ''), - ('BF_PNG_INC', 'PNG include path', ''), - ('BF_PNG_LIB', 'PNG library', ''), - ('BF_PNG_LIBPATH', 'PNG library path', ''), - - ('BF_TIFF', 'TIFF base path', ''), - ('BF_TIFF_INC', 'TIFF include path', ''), - ('BF_TIFF_LIB', 'TIFF library', ''), - ('BF_TIFF_LIBPATH', 'TIFF library path', ''), - - (BoolVariable('WITH_BF_ZLIB', 'Use ZLib if true', True)), - ('BF_ZLIB', 'ZLib base path', ''), - ('BF_ZLIB_INC', 'ZLib include path', ''), - ('BF_ZLIB_LIB', 'ZLib library', ''), - ('BF_ZLIB_LIBPATH', 'ZLib library path', ''), - - (BoolVariable('WITH_BF_INTERNATIONAL', 'Use Gettext if true', True)), - - ('BF_GETTEXT', 'gettext base path', ''), - ('BF_GETTEXT_INC', 'gettext include path', ''), - ('BF_GETTEXT_LIB', 'gettext library', ''), - ('BF_GETTEXT_LIBPATH', 'gettext library path', ''), - - (BoolVariable('WITH_BF_ICONV', 'Use iconv if true', True)), - ('BF_ICONV', 'iconv base path', ''), - ('BF_ICONV_INC', 'iconv include path', ''), - ('BF_ICONV_LIB', 'iconv library', ''), - ('BF_ICONV_LIBPATH', 'iconv library path', ''), - - (BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , False)), - - (BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)), - ('BF_BULLET', 'Bullet base dir', ''), - ('BF_BULLET_INC', 'Bullet include path', ''), - ('BF_BULLET_LIB', 'Bullet library', ''), - - ('BF_WINTAB', 'WinTab base dir', ''), - ('BF_WINTAB_INC', 'WinTab include dir', ''), - ('BF_CXX', 'c++ base path for libstdc++, only used when static linking', ''), - (BoolVariable('WITH_BF_STATICCXX', 'static link to stdc++', False)), - ('BF_CXX_LIB_STATIC', 'static library path for stdc++', ''), + localopts = Variables.Variables(cfg, args) + localopts.AddVariables( + ('LCGDIR', 'location of cvs lib dir'), + (BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)), + ('BF_PYTHON', 'base path for python', ''), + ('BF_PYTHON_VERSION', 'Python version to use', ''), + ('BF_PYTHON_INC', 'include path for Python headers', ''), + ('BF_PYTHON_BINARY', 'Path to the Python interpreter', ''), + ('BF_PYTHON_LIB', 'Python library', ''), + ('BF_PYTHON_DLL', 'Python dll - used on Windows only', ''), + ('BF_PYTHON_LIB_STATIC', 'Python static libraries', ''), + ('BF_PYTHON_LIBPATH', 'Library path', ''), + ('BF_PYTHON_LINKFLAGS', 'Python link flags', ''), + (BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)), + + (BoolVariable('BF_NO_ELBEEM', 'Disable Fluid Sim', False)), + ('BF_PROFILE_FLAGS', 'Profiling compiler flags', ''), + (BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)), + ('BF_OPENAL', 'base path for OpenAL', ''), + ('BF_OPENAL_INC', 'include path for python headers', ''), + ('BF_OPENAL_LIB', 'Path to OpenAL library', ''), + ('BF_OPENAL_LIB_STATIC', 'Path to OpenAL static library', ''), + ('BF_OPENAL_LIBPATH', 'Path to OpenAL library', ''), + (BoolVariable('WITH_BF_STATICOPENAL', 'Staticly link to openal', False)), + + (BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)), + ('BF_SDL', 'SDL base path', ''), + ('BF_SDL_INC', 'SDL include path', ''), + ('BF_SDL_LIB', 'SDL library', ''), + ('BF_SDL_LIBPATH', 'SDL library path', ''), + + ('BF_LIBSAMPLERATE', 'libsamplerate aka SRC base path', ''), + ('BF_LIBSAMPLERATE_INC', 'libsamplerate aka SRC include path', ''), + ('BF_LIBSAMPLERATE_LIB', 'libsamplerate aka SRC library', ''), + ('BF_LIBSAMPLERATE_LIBPATH', 'libsamplerate aka SRC library path', ''), + + (BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)), + ('BF_JACK', 'jack base path', ''), + ('BF_JACK_INC', 'jack include path', ''), + ('BF_JACK_LIB', 'jack library', ''), + ('BF_JACK_LIBPATH', 'jack library path', ''), + + (BoolVariable('WITH_BF_SNDFILE', 'Enable sndfile support if true', True)), + ('BF_SNDFILE', 'sndfile base path', ''), + ('BF_SNDFILE_INC', 'sndfile include path', ''), + ('BF_SNDFILE_LIB', 'sndfile library', ''), + ('BF_SNDFILE_LIBPATH', 'sndfile library path', ''), + + ('BF_PTHREADS', 'Pthreads base path', ''), + ('BF_PTHREADS_INC', 'Pthreads include path', ''), + ('BF_PTHREADS_LIB', 'Pthreads library', ''), + ('BF_PTHREADS_LIBPATH', 'Pthreads library path', ''), + + (BoolVariable('WITH_BF_OPENEXR', 'Use OPENEXR if true', True)), + (BoolVariable('WITH_BF_STATICOPENEXR', 'Staticly link to OpenEXR', False)), + ('BF_OPENEXR', 'OPENEXR base path', ''), + ('BF_OPENEXR_INC', 'OPENEXR include path', ''), + ('BF_OPENEXR_LIB', 'OPENEXR library', ''), + ('BF_OPENEXR_LIBPATH', 'OPENEXR library path', ''), + ('BF_OPENEXR_LIB_STATIC', 'OPENEXR static library', ''), + + (BoolVariable('WITH_BF_DDS', 'Use DDS if true', True)), + + (BoolVariable('WITH_BF_FFMPEG', 'Use FFMPEG if true', False)), + ('BF_FFMPEG', 'FFMPEG base path', ''), + ('BF_FFMPEG_LIB', 'FFMPEG library', ''), + ('BF_FFMPEG_EXTRA', 'FFMPEG flags that must be preserved', ''), + + ('BF_FFMPEG_INC', 'FFMPEG includes', ''), + ('BF_FFMPEG_LIBPATH', 'FFMPEG library path', ''), + + (BoolVariable('WITH_BF_OGG', 'Use OGG, THEORA, VORBIS in FFMPEG if true', + False)), + ('BF_OGG', 'OGG base path', ''), + ('BF_OGG_LIB', 'OGG library', ''), + + (BoolVariable('WITH_BF_JPEG', 'Use JPEG if true', True)), + ('BF_JPEG', 'JPEG base path', ''), + ('BF_JPEG_INC', 'JPEG include path', ''), + ('BF_JPEG_LIB', 'JPEG library', ''), + ('BF_JPEG_LIBPATH', 'JPEG library path', ''), + + (BoolVariable('WITH_BF_OPENJPEG', 'Use OPENJPEG if true', False)), + ('BF_OPENJPEG', 'OPENJPEG base path', ''), + ('BF_OPENJPEG_INC', 'OPENJPEG include path', ''), + ('BF_OPENJPEG_LIB', 'OPENJPEG library', ''), + ('BF_OPENJPEG_LIBPATH', 'OPENJPEG library path', ''), + + (BoolVariable('WITH_BF_REDCODE', 'Use REDCODE if true', False)), + ('BF_REDCODE', 'REDCODE base path', ''), + ('BF_REDCODE_INC', 'REDCODE include path', ''), + ('BF_REDCODE_LIB', 'REDCODE library', ''), + ('BF_REDCODE_LIBPATH', 'REDCODE library path', ''), + + (BoolVariable('WITH_BF_PNG', 'Use PNG if true', True)), + ('BF_PNG', 'PNG base path', ''), + ('BF_PNG_INC', 'PNG include path', ''), + ('BF_PNG_LIB', 'PNG library', ''), + ('BF_PNG_LIBPATH', 'PNG library path', ''), + + ('BF_TIFF', 'TIFF base path', ''), + ('BF_TIFF_INC', 'TIFF include path', ''), + ('BF_TIFF_LIB', 'TIFF library', ''), + ('BF_TIFF_LIBPATH', 'TIFF library path', ''), + + (BoolVariable('WITH_BF_ZLIB', 'Use ZLib if true', True)), + ('BF_ZLIB', 'ZLib base path', ''), + ('BF_ZLIB_INC', 'ZLib include path', ''), + ('BF_ZLIB_LIB', 'ZLib library', ''), + ('BF_ZLIB_LIBPATH', 'ZLib library path', ''), + + (BoolVariable('WITH_BF_INTERNATIONAL', 'Use Gettext if true', True)), + + ('BF_GETTEXT', 'gettext base path', ''), + ('BF_GETTEXT_INC', 'gettext include path', ''), + ('BF_GETTEXT_LIB', 'gettext library', ''), + ('BF_GETTEXT_LIBPATH', 'gettext library path', ''), + + (BoolVariable('WITH_BF_ICONV', 'Use iconv if true', True)), + ('BF_ICONV', 'iconv base path', ''), + ('BF_ICONV_INC', 'iconv include path', ''), + ('BF_ICONV_LIB', 'iconv library', ''), + ('BF_ICONV_LIBPATH', 'iconv library path', ''), + + (BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , False)), + + (BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)), + ('BF_BULLET', 'Bullet base dir', ''), + ('BF_BULLET_INC', 'Bullet include path', ''), + ('BF_BULLET_LIB', 'Bullet library', ''), + + ('BF_WINTAB', 'WinTab base dir', ''), + ('BF_WINTAB_INC', 'WinTab include dir', ''), + ('BF_CXX', 'c++ base path for libstdc++, only used when static linking', ''), + (BoolVariable('WITH_BF_STATICCXX', 'static link to stdc++', False)), + ('BF_CXX_LIB_STATIC', 'static library path for stdc++', ''), ## ##WITH_BF_NSPR = True ##BF_NSPR = $(LCGDIR)/nspr @@ -308,313 +309,314 @@ def read_opts(cfg, args): ##BF_PARANOID = True ## ### enable freetype2 support for text objects - (BoolVariable('WITH_BF_FREETYPE', 'Use FreeType2 if true', True)), - ('BF_FREETYPE', 'Freetype base path', ''), - ('BF_FREETYPE_INC', 'Freetype include path', ''), - ('BF_FREETYPE_LIB', 'Freetype library', ''), - ('BF_FREETYPE_LIBPATH', 'Freetype library path', ''), - - (BoolVariable('WITH_BF_OPENMP', 'Use OpenMP if true', False)), - (BoolVariable('WITH_GHOST_COCOA', 'Use Cocoa-framework if true', False)), - (BoolVariable('USE_QTKIT', 'Use QTKIT if true', False)), - - (BoolVariable('WITH_BF_QUICKTIME', 'Use QuickTime if true', False)), - ('BF_QUICKTIME', 'QuickTime base path', ''), - ('BF_QUICKTIME_INC', 'QuickTime include path', ''), - ('BF_QUICKTIME_LIB', 'QuickTime library', ''), - ('BF_QUICKTIME_LIBPATH', 'QuickTime library path', ''), - - (BoolVariable('WITH_BF_FFTW3', 'Use FFTW3 if true', False)), - ('BF_FFTW3', 'FFTW3 base path', ''), - ('BF_FFTW3_INC', 'FFTW3 include path', ''), - ('BF_FFTW3_LIB', 'FFTW3 library', ''), - ('BF_FFTW3_LIBPATH', 'FFTW3 library path', ''), - - (BoolVariable('WITH_BF_STATICOPENGL', 'Use MESA if true', True)), - ('BF_OPENGL', 'OpenGL base path', ''), - ('BF_OPENGL_INC', 'OpenGL include path', ''), - ('BF_OPENGL_LIB', 'OpenGL libraries', ''), - ('BF_OPENGL_LIBPATH', 'OpenGL library path', ''), - ('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''), - ('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''), - - (BoolVariable('WITH_BF_COLLADA', 'Build COLLADA import/export module if true', False)), - ('BF_COLLADA', 'COLLADA base path', ''), - ('BF_COLLADA_INC', 'COLLADA include path', ''), - ('BF_COLLADA_LIB', 'COLLADA library', ''), - ('BF_OPENCOLLADA', 'OpenCollada base path', ''), - ('BF_OPENCOLLADA_INC', 'OpenCollada base include path', ''), - ('BF_OPENCOLLADA_LIB', 'OpenCollada library', ''), - ('BF_OPENCOLLADA_LIBPATH', 'OpenCollada library path', ''), - ('BF_PCRE', 'PCRE base path', ''), - ('BF_PCRE_LIB', 'PCRE library', ''), - ('BF_PCRE_LIBPATH', 'PCRE library path', ''), - ('BF_EXPAT', 'Expat base path', ''), - ('BF_EXPAT_LIB', 'Expat library', ''), - ('BF_EXPAT_LIBPATH', 'Expat library path', ''), - - (BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)), - (BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender if true', False)), - - ('CFLAGS', 'C only flags', ''), - ('CCFLAGS', 'Generic C and C++ flags', ''), - ('CXXFLAGS', 'C++ only flags', ''), - ('BGE_CXXFLAGS', 'C++ only flags for BGE', ''), - ('CPPFLAGS', 'Defines', ''), - ('REL_CFLAGS', 'C only release flags', ''), - ('REL_CCFLAGS', 'Generic C and C++ release flags', ''), - ('REL_CXXFLAGS', 'C++ only release flags', ''), - - ('C_WARN', 'C warning flags', ''), - ('CC_WARN', 'Generic C and C++ warning flags', ''), - ('CXX_WARN', 'C++ only warning flags', ''), - - ('LLIBS', 'Platform libs', ''), - ('PLATFORM_LINKFLAGS', 'Platform linkflags', ''), - ('MACOSX_ARCHITECTURE', 'python_arch.zip select', ''), - - (BoolVariable('BF_PROFILE', 'Add profiling information if true', False)), - ('BF_PROFILE_CFLAGS', 'C only profiling flags', ''), - ('BF_PROFILE_CCFLAGS', 'C and C++ profiling flags', ''), - ('BF_PROFILE_CXXFLAGS', 'C++ only profiling flags', ''), - ('BF_PROFILE_LINKFLAGS', 'Profile linkflags', ''), - - (BoolVariable('BF_DEBUG', 'Add debug flags if true', False)), - ('BF_DEBUG_CFLAGS', 'C only debug flags', ''), - ('BF_DEBUG_CCFLAGS', 'C and C++ debug flags', ''), - ('BF_DEBUG_CXXFLAGS', 'C++ only debug flags', ''), - - (BoolVariable('BF_BSC', 'Create .bsc files (msvc only)', True)), - - ('BF_BUILDDIR', 'Build dir', ''), - ('BF_INSTALLDIR', 'Installation dir', ''), - - ('CC', 'C compiler to use', ''), - ('CXX', 'C++ compiler to use', ''), - - (BoolVariable('BF_BUILDINFO', 'Buildtime in splash if true', True)), - - (BoolVariable('BF_TWEAK_MODE', 'Enable tweak mode if true', False)), - (BoolVariable('BF_SPLIT_SRC', 'Split src lib into several chunks if true', False)), - (BoolVariable('WITHOUT_BF_INSTALL', 'dont install if true', False)), - (BoolVariable('WITHOUT_BF_PYTHON_INSTALL', 'dont install Python modules if true', False)), - (BoolVariable('BF_FANCY', 'Enable fancy output if true', True)), - (BoolVariable('BF_QUIET', 'Enable silent output if true', True)), - (BoolVariable('WITH_BF_BINRELOC', 'Enable relocatable binary (linux only)', False)), - - (BoolVariable('WITH_BF_LZO', 'Enable fast LZO pointcache compression', True)), - (BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)), - - (BoolVariable('WITH_BF_LCMS', 'Enable color correction with lcms', False)), - ('BF_LCMS_LIB', 'LCMSlibrary', 'lcms'), - - ('BF_X264_CONFIG', 'configuration flags for x264', ''), - ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''), - (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)), - - ('BF_CONFIG', 'SCons python config file used to set default options', 'user_config.py'), - ('BF_NUMJOBS', 'Number of build processes to spawn', '1'), - ('BF_MSVS', 'Generate MSVS project files and solution', False), - - (BoolVariable('WITH_BF_FHS', 'Use the Unix "Filesystem Hierarchy Standard" rather then a redistributable directory layout', False)), - ('BF_VERSION', 'The root path for Unix (non-apple)', '2.5'), - - (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)), - - (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)) - ) # end of opts.AddOptions() - - return localopts + (BoolVariable('WITH_BF_FREETYPE', 'Use FreeType2 if true', True)), + ('BF_FREETYPE', 'Freetype base path', ''), + ('BF_FREETYPE_INC', 'Freetype include path', ''), + ('BF_FREETYPE_LIB', 'Freetype library', ''), + ('BF_FREETYPE_LIBPATH', 'Freetype library path', ''), + + (BoolVariable('WITH_BF_OPENMP', 'Use OpenMP if true', False)), + (BoolVariable('WITH_GHOST_COCOA', 'Use Cocoa-framework if true', False)), + (BoolVariable('USE_QTKIT', 'Use QTKIT if true', False)), + + (BoolVariable('WITH_BF_QUICKTIME', 'Use QuickTime if true', False)), + ('BF_QUICKTIME', 'QuickTime base path', ''), + ('BF_QUICKTIME_INC', 'QuickTime include path', ''), + ('BF_QUICKTIME_LIB', 'QuickTime library', ''), + ('BF_QUICKTIME_LIBPATH', 'QuickTime library path', ''), + + (BoolVariable('WITH_BF_FFTW3', 'Use FFTW3 if true', False)), + ('BF_FFTW3', 'FFTW3 base path', ''), + ('BF_FFTW3_INC', 'FFTW3 include path', ''), + ('BF_FFTW3_LIB', 'FFTW3 library', ''), + ('BF_FFTW3_LIBPATH', 'FFTW3 library path', ''), + + (BoolVariable('WITH_BF_STATICOPENGL', 'Use MESA if true', True)), + ('BF_OPENGL', 'OpenGL base path', ''), + ('BF_OPENGL_INC', 'OpenGL include path', ''), + ('BF_OPENGL_LIB', 'OpenGL libraries', ''), + ('BF_OPENGL_LIBPATH', 'OpenGL library path', ''), + ('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''), + ('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''), + + (BoolVariable('WITH_BF_COLLADA', 'Build COLLADA import/export module if true', False)), + ('BF_COLLADA', 'COLLADA base path', ''), + ('BF_COLLADA_INC', 'COLLADA include path', ''), + ('BF_COLLADA_LIB', 'COLLADA library', ''), + ('BF_OPENCOLLADA', 'OpenCollada base path', ''), + ('BF_OPENCOLLADA_INC', 'OpenCollada base include path', ''), + ('BF_OPENCOLLADA_LIB', 'OpenCollada library', ''), + ('BF_OPENCOLLADA_LIBPATH', 'OpenCollada library path', ''), + ('BF_PCRE', 'PCRE base path', ''), + ('BF_PCRE_LIB', 'PCRE library', ''), + ('BF_PCRE_LIBPATH', 'PCRE library path', ''), + ('BF_EXPAT', 'Expat base path', ''), + ('BF_EXPAT_LIB', 'Expat library', ''), + ('BF_EXPAT_LIBPATH', 'Expat library path', ''), + + (BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)), + (BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender if true', False)), + + ('CFLAGS', 'C only flags', ''), + ('CCFLAGS', 'Generic C and C++ flags', ''), + ('CXXFLAGS', 'C++ only flags', ''), + ('BGE_CXXFLAGS', 'C++ only flags for BGE', ''), + ('CPPFLAGS', 'Defines', ''), + ('REL_CFLAGS', 'C only release flags', ''), + ('REL_CCFLAGS', 'Generic C and C++ release flags', ''), + ('REL_CXXFLAGS', 'C++ only release flags', ''), + + ('C_WARN', 'C warning flags', ''), + ('CC_WARN', 'Generic C and C++ warning flags', ''), + ('CXX_WARN', 'C++ only warning flags', ''), + + ('LLIBS', 'Platform libs', ''), + ('PLATFORM_LINKFLAGS', 'Platform linkflags', ''), + ('MACOSX_ARCHITECTURE', 'python_arch.zip select', ''), + + (BoolVariable('BF_PROFILE', 'Add profiling information if true', False)), + ('BF_PROFILE_CFLAGS', 'C only profiling flags', ''), + ('BF_PROFILE_CCFLAGS', 'C and C++ profiling flags', ''), + ('BF_PROFILE_CXXFLAGS', 'C++ only profiling flags', ''), + ('BF_PROFILE_LINKFLAGS', 'Profile linkflags', ''), + + (BoolVariable('BF_DEBUG', 'Add debug flags if true', False)), + ('BF_DEBUG_CFLAGS', 'C only debug flags', ''), + ('BF_DEBUG_CCFLAGS', 'C and C++ debug flags', ''), + ('BF_DEBUG_CXXFLAGS', 'C++ only debug flags', ''), + + (BoolVariable('BF_BSC', 'Create .bsc files (msvc only)', True)), + + ('BF_BUILDDIR', 'Build dir', ''), + ('BF_INSTALLDIR', 'Installation dir', ''), + + ('CC', 'C compiler to use', ''), + ('CXX', 'C++ compiler to use', ''), + + (BoolVariable('BF_BUILDINFO', 'Buildtime in splash if true', True)), + + (BoolVariable('BF_TWEAK_MODE', 'Enable tweak mode if true', False)), + (BoolVariable('BF_SPLIT_SRC', 'Split src lib into several chunks if true', False)), + (BoolVariable('WITHOUT_BF_INSTALL', 'dont install if true', False)), + (BoolVariable('WITHOUT_BF_PYTHON_INSTALL', 'dont install Python modules if true', False)), + (BoolVariable('BF_FANCY', 'Enable fancy output if true', True)), + (BoolVariable('BF_QUIET', 'Enable silent output if true', True)), + (BoolVariable('WITH_BF_BINRELOC', 'Enable relocatable binary (linux only)', False)), + + (BoolVariable('WITH_BF_LZO', 'Enable fast LZO pointcache compression', True)), + (BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)), + + (BoolVariable('WITH_BF_LCMS', 'Enable color correction with lcms', False)), + ('BF_LCMS_LIB', 'LCMSlibrary', 'lcms'), + + ('BF_X264_CONFIG', 'configuration flags for x264', ''), + ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''), + (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)), + + ('BF_CONFIG', 'SCons python config file used to set default options', 'user_config.py'), + ('BF_NUMJOBS', 'Number of build processes to spawn', '1'), + ('BF_MSVS', 'Generate MSVS project files and solution', False), + + (BoolVariable('WITH_BF_FHS', 'Use the Unix "Filesystem Hierarchy Standard" rather then a redistributable directory layout', False)), + ('BF_VERSION', 'The root path for Unix (non-apple)', '2.5'), + + (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)), + + (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)), + (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)) + ) # end of opts.AddOptions() + + return localopts def NSIS_print(target, source, env): - return "Creating NSIS installer for Blender 3D" + return "Creating NSIS installer for Blender 3D" def NSIS_Installer(target=None, source=None, env=None): - if env['OURPLATFORM'] != 'win32-vc' and env['OURPLATFORM'] != 'win32-mingw': - print "NSIS installer is only available on Windows." - Exit() - - start_dir = os.getcwd() - rel_dir = start_dir + "\\release\\windows\\installer\\" - install_base_dir = start_dir + "\\" - - if not os.path.exists(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include'): - os.mkdir(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') - - for f in glob.glob('source/blender/blenpluginapi/*.h'): - shutil.copy(f,install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') - - shutil.copy('source/blender/blenpluginapi/plugin.def',install_base_dir+env['BF_INSTALLDIR']+'/plugins/include/') - - os.chdir("release") - v = open("VERSION") - version = v.read()[:-1] - shortver = version.split('.')[0] + version.split('.')[1] - v.close() - - #### change to suit install dir #### - inst_dir = install_base_dir + env['BF_INSTALLDIR'] - - os.chdir("windows/installer") - - ns = open("00.sconsblender.nsi","r") - - - ns_cnt = str(ns.read()) - ns.close() - - # set Python version we compile against - ns_cnt = string.replace(ns_cnt, "[PYTHON_VERSION]", env['BF_PYTHON_VERSION']) - - # do root - rootlist = [] - rootdir = os.listdir(inst_dir+"\\") - for rootitem in rootdir: - if os.path.isdir(inst_dir+"\\"+ rootitem) == 0: - rootlist.append("File \"" + os.path.normpath(inst_dir) + "\\" + rootitem+"\"") - rootstring = string.join(rootlist, "\n ") - rootstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring) - - # do delete items - delrootlist = [] - for rootitem in rootdir: - if os.path.isdir(inst_dir + rootitem) == 0: - delrootlist.append("Delete $INSTDIR\\" + rootitem) - delrootstring = string.join(delrootlist, "\n ") - delrootstring += "\n" - ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring) - - # do scripts - scriptlist = [] - scriptpath = "%s%s" % (inst_dir, "\\.blender\\scripts") - scriptdir = os.listdir(scriptpath) - for scriptitem in scriptdir: - scriptfile = "%s\\%s" % (scriptpath, scriptitem) - if os.path.isdir(scriptfile) == 0: - scriptfile = os.path.normpath(scriptfile) - scriptlist.append("File \"%s\"" % scriptfile) - scriptstring = string.join(scriptlist, "\n ") - scriptstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTCONTS]", scriptstring) - - # do scripts\bpymodules - bpymodlist = [] - bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules") - bpymoddir = os.listdir(bpymodpath) - - for bpymoditem in bpymoddir: - bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) - if os.path.isdir(bpymodfile) == 0: - bpymodfile = os.path.normpath(bpymodfile) - bpymodlist.append("File \"%s\"" % bpymodfile) - bpymodstring = string.join(bpymodlist, "\n ") - bpymodstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCONTS]", bpymodstring) - - # do scripts\bpymodules\colladaimex - colladalist = [] - bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules\\ColladaImEx") - bpymoddir = os.listdir(bpymodpath) - - for bpymoditem in bpymoddir: - bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) - if os.path.isdir(bpymodfile) == 0: - bpymodfile=os.path.normpath(bpymodfile) - colladalist.append("File \"%s\"" % bpymodfile) - bpymodstring = string.join(colladalist, "\n ") - bpymodstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCOLLADACONT]", bpymodstring) - - # do scripts\bpydata - bpydatalist = [] - bpydatapath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata") - bpydatadir = os.listdir(bpydatapath) - for bpydataitem in bpydatadir: - bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem) - if os.path.isdir(bpydatafile) == 0: - bpydatalist.append("File \"%s\"" % bpydatafile) - bpydatastring = string.join(bpydatalist, "\n ") - bpydatastring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACONTS]", bpydatastring) - - # do plugins\include - plugincludelist = [] - plugincludepath = "%s%s" % (inst_dir, "\\plugins\\include") - plugincludedir = os.listdir(plugincludepath) - for plugincludeitem in plugincludedir: - plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem) - if os.path.isdir(plugincludefile) == 0: - if plugincludefile.find('.h') or plugincludefile.find('.DEF'): - plugincludefile = os.path.normpath(plugincludefile) - plugincludelist.append("File \"%s\"" % plugincludefile) - plugincludestring = string.join(plugincludelist, "\n ") - plugincludestring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[PLUGINCONTS]", plugincludestring) - - # do scripts\bpydata\config - cfglist = [] - cfgpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata\\config") - cfgdir = os.listdir(cfgpath) - for cfgitem in cfgdir: - cfgfile = "%s\\%s" % (cfgpath, cfgitem) - if os.path.isdir(cfgfile) == 0: - cfglist.append("File \"%s\"" % cfgfile) - cfgstring = string.join(cfglist, "\n ") - cfgstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACFGCONTS]", cfgstring) - - # do dotblender - dotblendlist = [] - dotblenddir = os.listdir(inst_dir+"\\.blender") - for dotblenditem in dotblenddir: - if os.path.isdir(inst_dir + "\\.blender\\" + dotblenditem) == 0: - dotblendlist.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\" + - dotblenditem+"\"") - dotblendstring = string.join(dotblendlist, "\n ") - dotblendstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[DOTBLENDERCONTS]", dotblendstring) - - # do language files - langlist = [] - langfiles = [] - langdir = os.listdir(inst_dir + "\\.blender\\locale") - for langitem in langdir: - if os.path.isdir(inst_dir + "\\.blender\\locale\\" + langitem) == 1: - langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES") - langfiles.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\locale\\" - + langitem + "\\LC_MESSAGES\\blender.mo\"") - langstring = string.join(langfiles, "\n ") - langstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[LANGUAGECONTS]", langstring) - - # var replacements - ns_cnt = string.replace(ns_cnt, "DISTDIR", os.path.normpath(inst_dir+"\\")) - ns_cnt = string.replace(ns_cnt, "SHORTVER", shortver) - ns_cnt = string.replace(ns_cnt, "VERSION", version) - ns_cnt = string.replace(ns_cnt, "RELDIR", os.path.normpath(rel_dir)) - - tmpnsi = os.path.normpath(install_base_dir+os.sep+env['BF_BUILDDIR']+os.sep+"00.blender_tmp.nsi") - new_nsis = open(tmpnsi, 'w') - new_nsis.write(ns_cnt) - new_nsis.close() - print "Preparing nsis file looks ok\n" - - os.chdir(start_dir) - print "try to launch 'makensis' ...make sure it is on the path \n" - - cmdline = "makensis " + "\""+tmpnsi+"\"" - - startupinfo = subprocess.STARTUPINFO() - startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW - proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, startupinfo=startupinfo, shell = True) - data, err = proc.communicate() - rv = proc.wait() - - if rv != 0: - print - print data.strip().split("\n")[-1] - return rv + if env['OURPLATFORM'] != 'win32-vc' and env['OURPLATFORM'] != 'win32-mingw': + print "NSIS installer is only available on Windows." + Exit() + + start_dir = os.getcwd() + rel_dir = start_dir + "\\release\\windows\\installer\\" + install_base_dir = start_dir + "\\" + + if not os.path.exists(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include'): + os.mkdir(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') + + for f in glob.glob('source/blender/blenpluginapi/*.h'): + shutil.copy(f,install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') + + shutil.copy('source/blender/blenpluginapi/plugin.def',install_base_dir+env['BF_INSTALLDIR']+'/plugins/include/') + + os.chdir("release") + v = open("VERSION") + version = v.read()[:-1] + shortver = version.split('.')[0] + version.split('.')[1] + v.close() + + #### change to suit install dir #### + inst_dir = install_base_dir + env['BF_INSTALLDIR'] + + os.chdir("windows/installer") + + ns = open("00.sconsblender.nsi","r") + + + ns_cnt = str(ns.read()) + ns.close() + + # set Python version we compile against + ns_cnt = string.replace(ns_cnt, "[PYTHON_VERSION]", env['BF_PYTHON_VERSION']) + + # do root + rootlist = [] + rootdir = os.listdir(inst_dir+"\\") + for rootitem in rootdir: + if os.path.isdir(inst_dir+"\\"+ rootitem) == 0: + rootlist.append("File \"" + os.path.normpath(inst_dir) + "\\" + rootitem+"\"") + rootstring = string.join(rootlist, "\n ") + rootstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring) + + # do delete items + delrootlist = [] + for rootitem in rootdir: + if os.path.isdir(inst_dir + rootitem) == 0: + delrootlist.append("Delete $INSTDIR\\" + rootitem) + delrootstring = string.join(delrootlist, "\n ") + delrootstring += "\n" + ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring) + + # do scripts + scriptlist = [] + scriptpath = "%s%s" % (inst_dir, "\\.blender\\scripts") + scriptdir = os.listdir(scriptpath) + for scriptitem in scriptdir: + scriptfile = "%s\\%s" % (scriptpath, scriptitem) + if os.path.isdir(scriptfile) == 0: + scriptfile = os.path.normpath(scriptfile) + scriptlist.append("File \"%s\"" % scriptfile) + scriptstring = string.join(scriptlist, "\n ") + scriptstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[SCRIPTCONTS]", scriptstring) + + # do scripts\bpymodules + bpymodlist = [] + bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules") + bpymoddir = os.listdir(bpymodpath) + + for bpymoditem in bpymoddir: + bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) + if os.path.isdir(bpymodfile) == 0: + bpymodfile = os.path.normpath(bpymodfile) + bpymodlist.append("File \"%s\"" % bpymodfile) + bpymodstring = string.join(bpymodlist, "\n ") + bpymodstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCONTS]", bpymodstring) + + # do scripts\bpymodules\colladaimex + colladalist = [] + bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules\\ColladaImEx") + bpymoddir = os.listdir(bpymodpath) + + for bpymoditem in bpymoddir: + bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) + if os.path.isdir(bpymodfile) == 0: + bpymodfile=os.path.normpath(bpymodfile) + colladalist.append("File \"%s\"" % bpymodfile) + bpymodstring = string.join(colladalist, "\n ") + bpymodstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCOLLADACONT]", bpymodstring) + + # do scripts\bpydata + bpydatalist = [] + bpydatapath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata") + bpydatadir = os.listdir(bpydatapath) + for bpydataitem in bpydatadir: + bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem) + if os.path.isdir(bpydatafile) == 0: + bpydatalist.append("File \"%s\"" % bpydatafile) + bpydatastring = string.join(bpydatalist, "\n ") + bpydatastring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACONTS]", bpydatastring) + + # do plugins\include + plugincludelist = [] + plugincludepath = "%s%s" % (inst_dir, "\\plugins\\include") + plugincludedir = os.listdir(plugincludepath) + for plugincludeitem in plugincludedir: + plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem) + if os.path.isdir(plugincludefile) == 0: + if plugincludefile.find('.h') or plugincludefile.find('.DEF'): + plugincludefile = os.path.normpath(plugincludefile) + plugincludelist.append("File \"%s\"" % plugincludefile) + plugincludestring = string.join(plugincludelist, "\n ") + plugincludestring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[PLUGINCONTS]", plugincludestring) + + # do scripts\bpydata\config + cfglist = [] + cfgpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata\\config") + cfgdir = os.listdir(cfgpath) + for cfgitem in cfgdir: + cfgfile = "%s\\%s" % (cfgpath, cfgitem) + if os.path.isdir(cfgfile) == 0: + cfglist.append("File \"%s\"" % cfgfile) + cfgstring = string.join(cfglist, "\n ") + cfgstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACFGCONTS]", cfgstring) + + # do dotblender + dotblendlist = [] + dotblenddir = os.listdir(inst_dir+"\\.blender") + for dotblenditem in dotblenddir: + if os.path.isdir(inst_dir + "\\.blender\\" + dotblenditem) == 0: + dotblendlist.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\" + + dotblenditem+"\"") + dotblendstring = string.join(dotblendlist, "\n ") + dotblendstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[DOTBLENDERCONTS]", dotblendstring) + + # do language files + langlist = [] + langfiles = [] + langdir = os.listdir(inst_dir + "\\.blender\\locale") + for langitem in langdir: + if os.path.isdir(inst_dir + "\\.blender\\locale\\" + langitem) == 1: + langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES") + langfiles.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\locale\\" + + langitem + "\\LC_MESSAGES\\blender.mo\"") + langstring = string.join(langfiles, "\n ") + langstring += "\n\n" + ns_cnt = string.replace(ns_cnt, "[LANGUAGECONTS]", langstring) + + # var replacements + ns_cnt = string.replace(ns_cnt, "DISTDIR", os.path.normpath(inst_dir+"\\")) + ns_cnt = string.replace(ns_cnt, "SHORTVER", shortver) + ns_cnt = string.replace(ns_cnt, "VERSION", version) + ns_cnt = string.replace(ns_cnt, "RELDIR", os.path.normpath(rel_dir)) + + tmpnsi = os.path.normpath(install_base_dir+os.sep+env['BF_BUILDDIR']+os.sep+"00.blender_tmp.nsi") + new_nsis = open(tmpnsi, 'w') + new_nsis.write(ns_cnt) + new_nsis.close() + print "Preparing nsis file looks ok\n" + + os.chdir(start_dir) + print "try to launch 'makensis' ...make sure it is on the path \n" + + cmdline = "makensis " + "\""+tmpnsi+"\"" + + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, startupinfo=startupinfo, shell = True) + data, err = proc.communicate() + rv = proc.wait() + + if rv != 0: + print + print data.strip().split("\n")[-1] + return rv -- cgit v1.2.3 From f539604094105f7e00210b3ab64623343a69c837 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 5 Dec 2009 01:07:42 +0000 Subject: * proper SSE setting for mingw. * some cleanup of render module SConscript --- source/blender/render/SConscript | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index dfce2267898..2642d31bd35 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -1,21 +1,21 @@ #!/usr/bin/python Import ('env') -if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): - # FIXME: need to set the appropriate flags for msvc, otherwise we get warnings +cflags = env['CCFLAGS'] +cxxflags = env['CXXFLAGS'] + +if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): if env['WITH_BF_RAYOPTIMIZATION']: cflags = env['CCFLAGS'] + ['/arch:SSE'] - else: - cflags = env['CCFLAGS'] - cxxflags = [] + +if env['OURPLATFORM'] == 'win32-mingw': + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + ['-mfpmath=sse'] if env['OURPLATFORM'] == 'darwin': if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: cflags = env['CFLAGS'] + ['-mfpmath=sse'] cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] - else: - cflags = env['CFLAGS'] - cxxflags = env['CXXFLAGS'] sources = env.Glob('intern/source/*.c') raysources = env.Glob('intern/raytrace/*.cpp') @@ -40,9 +40,6 @@ if env['OURPLATFORM'] == 'linux2': if env['WITH_BF_RAYOPTIMIZATION']: cflags = env['CCFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] cxxflags = env['CXXFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] - else: - cflags = env['CCFLAGS'] - cxxflags = env['CXXFLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): -- cgit v1.2.3 From 543844048344f7adda8e37a5deb7eafcc944f985 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 5 Dec 2009 01:24:45 +0000 Subject: * enabled COLLADA for mingw. (Compiles at least with MingW GCC 3.4.2). --- config/win32-mingw-config.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 0f07ca4c2ee..7973ae930b4 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -127,8 +127,15 @@ BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a' '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a', '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ] -# Disable Collada by default -WITH_BF_COLLADA = False +WITH_BF_COLLADA = True +BF_COLLADA = '#source/blender/collada' +BF_COLLADA_INC = '${BF_COLLADA}' +BF_COLLADA_LIB = 'bf_collada' + +BF_OPENCOLLADA = LIBDIR + '/opencollada' +BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' +BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' ## CC = 'gcc' -- cgit v1.2.3 From b7e0d5ac3405ff5e58c4130d1814da56ad4491dd Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 5 Dec 2009 02:30:20 +0000 Subject: BGE fix for GameLogic["post_draw"] not working with 2DFilters (reported by Mike Pan(mpan3), it's not in the tracker) --- source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 7f8a8e04e2e..e74038e8c2e 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -1310,9 +1310,6 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) scene->RunDrawingCallbacks(scene->GetPreDrawCB()); scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools); - - // Run any post-drawing python callbacks - scene->RunDrawingCallbacks(scene->GetPostDrawCB()); if (scene->GetPhysicsEnvironment()) scene->GetPhysicsEnvironment()->debugDrawWorld(); @@ -1321,6 +1318,9 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) //it's running once for every scene (i.e. overlay scenes have it running twice). That's not the ideal. PostRenderFrame(); + + // Run any post-drawing python callbacks + scene->RunDrawingCallbacks(scene->GetPostDrawCB()); } void KX_KetsjiEngine::PostRenderFrame() -- cgit v1.2.3 From d98cbf7727ccad91545882be4ac4ee4c044fc726 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 5 Dec 2009 14:12:06 +0000 Subject: simple fix [#20218] Object.is_visible() don't reflect visibility --- source/blender/makesrna/intern/rna_object_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 827e0cc60d9..63b4549f7c9 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -311,7 +311,7 @@ static Object *rna_Object_find_armature(Object *ob) int rna_Object_is_visible(Object *ob, bContext *C) { - return ob->lay & CTX_data_scene(C)->lay; + return !(ob->restrictflag & OB_RESTRICT_VIEW) && ob->lay & CTX_data_scene(C)->lay; } /* -- cgit v1.2.3 From f287762678d8c55fc2495e7a0ffe71c3ee3006b1 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 5 Dec 2009 19:05:21 +0000 Subject: Macros in macro didn't work correctly. --- source/blender/windowmanager/intern/wm_event_system.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 93c8b669611..c19d1000573 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -382,10 +382,13 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P if(ot->macro.first) { static wmOperator *motherop= NULL; wmOperatorTypeMacro *otmacro; + int root = 0; /* ensure all ops are in execution order in 1 list */ - if(motherop==NULL) - motherop= op; + if(motherop==NULL) { + motherop = op; + root = 1; + } for(otmacro= ot->macro.first; otmacro; otmacro= otmacro->next) { wmOperatorType *otm= WM_operatortype_find(otmacro->idname, 0); @@ -395,7 +398,8 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P opm->opm= motherop; /* pointer to mom, for modal() */ } - motherop= NULL; + if (root) + motherop= NULL; } return op; -- cgit v1.2.3 From 65edb7341f999f576e98ca70b15a46985a6ed9df Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 5 Dec 2009 19:26:28 +0000 Subject: split up metarig hierarchy evaluation and modifying the metarig into 2 steps, original bone names cant be changed anymore but this means the bones can be re-parented without confusing scripts that run after the rig is modified. support for defining a bone to have multiple types and automatically blending between 2 generated rigs --- release/scripts/modules/rigify/__init__.py | 292 +++++++++++++++++++---------- release/scripts/modules/rigify/arm.py | 78 ++++---- release/scripts/modules/rigify/delta.py | 39 +++- release/scripts/modules/rigify/finger.py | 70 ++++--- release/scripts/modules/rigify/leg.py | 209 ++++++++++++--------- release/scripts/modules/rigify/neck.py | 56 ++++-- release/scripts/modules/rigify/palm.py | 35 +++- release/scripts/modules/rigify/spine.py | 109 ++++++----- 8 files changed, 554 insertions(+), 334 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 7ae2481619f..f6397fa94dc 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -91,6 +91,7 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): new_slot_ls.append(attr) from_name_ls.append(bone_name) + bone_name_orig = bone_name_orig.replace("ORG-", "") # XXX - we need a better way to do this new_name_ls.append(to_prefix + bone_name_orig) new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) @@ -103,8 +104,10 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): return new_bc +def _bone_class_instance_names(self): + return [getattr(self, attr) for attr in self.attr_names] -def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend", use_loc=True, use_rot=True): +def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend"): ''' Use for blending bone chains. @@ -113,78 +116,19 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr XXX - toggles editmode, need to re-validate all editbones :( ''' + if self.attr_names != from_bc.attr_names or self.attr_names != to_bc.attr_names: raise Exception("can only blend between matching chains") - - obj = self.obj - if obj.mode == 'EDIT': - raise Exception("blending cant be called in editmode") + apply_bones = [getattr(self, attr) for attr in self.attr_names] + from_bones = [getattr(from_bc, attr) for attr in from_bc.attr_names] + to_bones = [getattr(to_bc, attr) for attr in to_bc.attr_names] - # setup the blend property - if target_bone is None: - target_bone = self.attr_names[-1] - - prop_pbone = obj.pose.bones[target_bone] - if prop_pbone.get(target_bone, None) is None: - prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) - prop_pbone[target_prop] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - driver_path = prop_pbone.path_to_id() + ('["%s"]' % target_prop) - - def blend_target(driver): - tar = driver.targets.new() - tar.name = target_bone - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = driver_path - - for attr in self.attr_names: - new_pbone = getattr(self, attr + "_p") - from_bone_name = getattr(from_bc, attr) - to_bone_name = getattr(to_bc, attr) - - if from_bone_name == to_bone_name: - raise Exception("Matching from/to bone names:" + from_bone_name) - - if use_loc: - con = new_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = from_bone_name - - con = new_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = to_bone_name - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'AVERAGE' - fcurve.modifiers.remove(0) # grr dont need a modifier - - blend_target(driver) - - if use_rot: - con = new_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = from_bone_name - - con = new_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = to_bone_name - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'AVERAGE' - fcurve.modifiers.remove(0) # grr dont need a modifier - - blend_target(driver) - + blend_bone_list(self.obj, apply_bones, from_bones, to_bones, target_bone, target_prop) def bone_class_instance(obj, slots, name="BoneContainer"): attr_names = tuple(slots) # dont modify the original - slots = slots[:] # dont modify the original + slots = list(slots) # dont modify the original for i in range(len(slots)): member = slots[i] slots.append(member + "_b") # bone bone @@ -196,6 +140,7 @@ def bone_class_instance(obj, slots, name="BoneContainer"): "attr_names":attr_names, \ "update":_bone_class_instance_update, \ "rename":_bone_class_instance_rename, \ + "names":_bone_class_instance_names, \ "copy":_bone_class_instance_copy, \ "blend":_bone_class_instance_blend, \ } @@ -254,6 +199,78 @@ def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): return copy_bones +def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend"): + + if obj.mode == 'EDIT': + raise Exception("blending cant be called in editmode") + + # setup the blend property + if target_bone is None: + target_bone = apply_bones[-1] # default to the last bone + + prop_pbone = obj.pose.bones[target_bone] + if prop_pbone.get(target_bone, None) is None: + prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) + prop_pbone[target_prop] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + driver_path = prop_pbone.path_to_id() + ('["%s"]' % target_prop) + + def blend_target(driver): + tar = driver.targets.new() + tar.name = target_bone + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = driver_path + + def blend_location(new_pbone, from_bone_name, to_bone_name): + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + + def blend_rotation(new_pbone, from_bone_name, to_bone_name): + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + + for i, new_bone_name in enumerate(apply_bones): + from_bone_name = from_bones[i] + to_bone_name = to_bones[i] + + # allow skipping some bones by having None in the list + if None in (new_bone_name, from_bone_name, to_bone_name): + continue + + new_pbone = obj.pose.bones[new_bone_name] + + if not new_pbone.bone.connected: + blend_location(new_pbone, from_bone_name, to_bone_name) + + blend_rotation(new_pbone, from_bone_name, to_bone_name) + def add_stretch_to(obj, from_name, to_name, name): ''' @@ -342,8 +359,9 @@ def add_pole_target_bone(obj, base_name, name, mode='CROSS'): return poll_name -def generate_rig(context, ob): - +def generate_rig(context, obj_orig, prefix="ORG-"): + from collections import OrderedDict + global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False @@ -351,50 +369,118 @@ def generate_rig(context, ob): # copy object and data - ob.selected = False - ob_new = ob.copy() - ob_new.data = ob.data.copy() + obj_orig.selected = False + obj = obj_orig.copy() + obj.data = obj_orig.data.copy() scene = context.scene - scene.objects.link(ob_new) - scene.objects.active = ob_new - ob_new.selected = True + scene.objects.link(obj) + scene.objects.active = obj + obj.selected = True - # enter armature editmode + arm = obj.data - # Only reference bones that have a type, means we can rename any others without lookup errors - pose_names = [pbone.name for pbone in ob_new.pose.bones if "type" in pbone] + # original name mapping + base_names = {} - #for pbone_name in ob_new.pose.bones.keys(): - for pbone_name in pose_names: + bpy.ops.object.mode_set(mode='EDIT') + for bone in arm.edit_bones: + bone_name = bone.name + bone.name = prefix + bone_name + base_names[bone.name] = bone_name # new -> old mapping + bpy.ops.object.mode_set(mode='OBJECT') - bone_type = ob_new.pose.bones[pbone_name].get("type", "") + # key: bone name + # value: {type:definition, ...} + # where type is the submodule name - leg, arm etc + # and definition is a list of bone names + bone_definitions = {} + + # key: bone name + # value: [functions, ...] + # each function is from the module. eg leg.ik, arm.main + bone_typeinfos = {} + + # inspect all bones and assign their definitions before modifying + for pbone in obj.pose.bones: + bone_name = pbone.name + bone_type = obj.pose.bones[bone_name].get("type", "") + bone_type_list = [bt for bt in bone_type.replace(",", " ").split()] + + for bone_type in bone_type_list: + type_pair = bone_type.split(".") + + # 'leg.ik' will look for an ik function in the leg module + # 'leg' will look up leg.main + if len(type_pair) == 1: + type_pair = type_pair[0], "main" + + submod_name, func_name = type_pair + + # from rigify import leg + submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + reload(submod) + + bone_def_dict = bone_definitions.setdefault(bone_name, {}) - if bone_type == "": - continue + # Only calculate bone definitions once + if submod_name not in bone_def_dict: + metarig_definition_func = getattr(submod, "metarig_definition") + bone_def_dict[submod_name] = metarig_definition_func(obj, bone_name) + + + bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) + type_func = getattr(submod, func_name) + bone_typeinfo.append((submod_name, type_func)) - # submodule = getattr(self, bone_type) - # exec("from rigify import %s as submodule") - submodule = __import__(name="%s.%s" % (__package__, bone_type), fromlist=[bone_type]) + + # now we have all the info about bones we can start operating on them + + for pbone in obj.pose.bones: + bone_name = pbone.name + + if bone_name not in bone_typeinfos: + continue + + bone_def_dict = bone_definitions[bone_name] + + # Only blend results from the same submodule, eg. + # leg.ik and arm.fk could not be blended. + results = OrderedDict() + + for submod_name, type_func in bone_typeinfos[bone_name]: + # this bones definition of the current typeinfo + definition = bone_def_dict[submod_name] + + bpy.ops.object.mode_set(mode='EDIT') + ret = type_func(obj, definition, base_names) + bpy.ops.object.mode_set(mode='OBJECT') - reload(submodule) # XXX, dev only + if ret: + result_submod = results.setdefault(submod_name, []) + + if result_submod and len(result_submod[-1]) != len(ret): + raise Exception("bone lists not compatible: %s, %s" % (result_submod[-1], ret)) + result_submod.append(ret) - # Toggle editmode so the pose data is always up to date - bpy.ops.object.mode_set(mode='EDIT') - submodule.main(ob_new, pbone_name) - bpy.ops.object.mode_set(mode='OBJECT') + for result_submod in results.values(): + # blend 2 chains + definition = bone_def_dict[submod_name] + + if len(result_submod) == 2: + blend_bone_list(obj, definition, result_submod[0], result_submod[1]) # needed to update driver deps # context.scene.update() # Only for demo'ing - # ob.restrict_view = True - ob_new.data.draw_axes = False + # obj.restrict_view = True + obj.data.draw_axes = False context.user_preferences.edit.global_undo = global_undo - return ob_new + return obj def write_meta_rig(obj, func_name="metarig_template"): @@ -462,11 +548,11 @@ def generate_test(context): scene = context.scene def create_empty_armature(name): - ob_new = bpy.data.add_object('ARMATURE', name) + obj_new = bpy.data.add_object('ARMATURE', name) armature = bpy.data.add_armature(name) - ob_new.data = armature - scene.objects.link(ob_new) - scene.objects.active = ob_new + obj_new.data = armature + scene.objects.link(obj_new) + scene.objects.active = obj_new files = os.listdir(os.path.dirname(__file__)) for f in files: @@ -484,10 +570,10 @@ def generate_test(context): if metarig_template: create_empty_armature("meta_" + module_name) # sets active metarig_template() - ob = context.object - ob_new = generate_rig(context, ob) + obj = context.object + obj_new = generate_rig(context, obj) - new_objects.append((ob, ob_new)) + new_objects.append((obj, obj_new)) else: print("note: rig type '%s' has no metarig_template(), can't test this", module_name) @@ -505,12 +591,12 @@ def generate_test_all(context): base_name = os.path.splitext(bpy.data.filename)[0] for obj, obj_new in new_objects: - for ob in (obj, obj_new): - fn = base_name + "-" + bpy.utils.clean_name(ob.name) + for obj in (obj, obj_new): + fn = base_name + "-" + bpy.utils.clean_name(obj.name) path_dot = fn + ".dot" path_png = fn + ".png" - saved = graphviz_export.graph_armature(ob, path_dot, CONSTRAINTS=True, DRIVERS=True) + saved = graphviz_export.graph_armature(obj, path_dot, CONSTRAINTS=True, DRIVERS=True) #if saved: # os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 36217ed5247..af2d08307dd 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -20,6 +20,7 @@ import bpy from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +METARIG_NAMES = "shoulder", "arm", "forearm", "hand" def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') @@ -54,7 +55,38 @@ def metarig_template(): pbone['type'] = 'arm' -def main(obj, orig_bone_name): +def metarig_definition(obj, orig_bone_name): + mt = bone_class_instance(obj, METARIG_NAMES) # meta + mt.arm = orig_bone_name + mt.update() + + mt.shoulder_p = mt.arm_p.parent + mt.shoulder = mt.shoulder_p.name + + if not mt.shoulder_p: + raise Exception("could not find 'arm' parent, skipping:", orig_bone_name) + + # We could have some bones attached, find the bone that has this as its 2nd parent + hands = [] + for pbone in obj.pose.bones: + index = pbone.parent_index(mt.arm_p) + if index == 2: + hands.append(pbone) + + if len(hands) > 1: + raise Exception("more then 1 hand found on:", orig_bone_name) + + # first add the 2 new bones + mt.hand_p = hands[0] + mt.hand = mt.hand_p.name + + mt.forearm_p = mt.hand_p.parent + mt.forearm = mt.forearm_p.name + + return mt.names() + + +def main(obj, definitions, base_names): """ the bone with the 'arm' property is the upper arm, this assumes a chain as follows. [shoulder, upper_arm, forearm, hand] @@ -64,49 +96,19 @@ def main(obj, orig_bone_name): - Original - IK, MCH-%s_ik - IKSwitch, MCH-%s () + + """ # Since there are 3 chains, this gets confusing so divide into 3 chains # Initialize container classes for convenience - mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta + mt = bone_class_instance(obj, METARIG_NAMES) # meta + mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras - - def chain_init(): - ''' - Sanity check and return the arm as a list of bone names. - ''' - # do a sanity check - mt.arm = orig_bone_name - mt.update() - - mt.shoulder_p = mt.arm_p.parent - mt.shoulder = mt.shoulder_p.name - - if not mt.shoulder_p: - print("could not find 'arm' parent, skipping:", orig_bone_name) - return - - # We could have some bones attached, find the bone that has this as its 2nd parent - hands = [] - for pbone in obj.pose.bones: - index = pbone.parent_index(mt.arm_p) - if index == 2: - hands.append(pbone) - - if len(hands) > 1: - print("more then 1 hand found on:", orig_bone_name) - return - - # first add the 2 new bones - mt.hand_p = hands[0] - mt.hand = mt.hand_p.name - - mt.forearm_p = mt.hand_p.parent - mt.forearm = mt.forearm_p.name - arm = obj.data @@ -345,4 +347,6 @@ def main(obj, orig_bone_name): chain_shoulder() # Shoulder with its delta and hinge. - + + # TODO - return a list for fk and IK + return None diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index a8458537c12..74cfb6150d2 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -19,23 +19,39 @@ import bpy from rigify import get_bone_data -def main(obj, delta_name): +# not used, defined for completeness +METARIG_NAMES = tuple() + +def metarig_definition(obj, orig_bone_name): ''' - Use this bone to define a delta thats applied to its child in pose mode. + The bone given is the head, its parent is the body, + # its only child the first of a chain with matching basenames. + eg. + body -> head -> neck_01 -> neck_02 -> neck_03.... etc ''' - arm = obj.data + delta = arm.bones[orig_bone_name] + children = delta.children + + if len(children) != 1: + print("only 1 child supported for delta") + + bone_definition = [delta.name, children[0].name] + + return bone_definition + +def main(obj, bone_definition, base_names): + ''' + Use this bone to define a delta thats applied to its child in pose mode. + ''' mode_orig = obj.mode bpy.ops.object.mode_set(mode='OBJECT') - delta_pbone = obj.pose.bones[delta_name] - children = delta_pbone.children + delta_name, child_name = bone_definition - if len(children) != 1: - print("only 1 child supported for delta") - - child_name = children[0].name + delta_pbone = obj.pose.bones[delta_name] + arm, child_pbone, child_bone = get_bone_data(obj, child_name) delta_phead = delta_pbone.head.copy() @@ -62,7 +78,7 @@ def main(obj, delta_name): child_tail = child_ebone.tail.copy() arm.edit_bones.remove(delta_ebone) - del delta_ebone # cant use thz + del delta_ebone # cant use this bpy.ops.object.mode_set(mode='OBJECT') @@ -107,3 +123,6 @@ def main(obj, delta_name): bpy.ops.object.mode_set(mode=mode_orig) + # no blendeing + return None + \ No newline at end of file diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index a9040830e4e..c839f20e71f 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -17,10 +17,11 @@ # ##### END GPL LICENSE BLOCK ##### import bpy -from rigify import get_bone_data, empty_layer +from rigify import get_bone_data, empty_layer, copy_bone_simple from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get from functools import reduce +METARIG_NAMES = "finger_01", "finger_02", "finger_03" def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') @@ -48,13 +49,43 @@ def metarig_template(): pbone = obj.pose.bones['finger.01'] pbone['type'] = 'finger' +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects a chain of at least 2 children. + eg. + finger -> finger_01 -> finger_02 + ''' + + bone_definition = [] + + orig_bone = obj.data.bones[orig_bone_name] + + bone_definition.append(orig_bone.name) + + bone = orig_bone + chain = 0 + while chain < 2: # first 2 bones only have 1 child + children = bone.children + + if len(children) != 1: + raise Exception("expected the chain to have 2 children without a fork") + bone = children[0] + bone_definition.append(bone.name) # finger_02, finger_03 + chain += 1 + + if len(bone_definition) != len(METARIG_NAMES): + raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + + return bone_definition + -def main(obj, orig_bone_name): +def main(obj, bone_definition, base_names): # *** EDITMODE # get assosiated data - arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name) + arm, orig_pbone, orig_ebone = get_bone_data(obj, bone_definition[0]) obj.animation_data_create() # needed if its a new armature with no keys @@ -63,22 +94,16 @@ def main(obj, orig_bone_name): children = orig_pbone.children_recursive tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - base_name = orig_pbone.basename + base_name = base_names[bone_definition[0]].rsplit(".", 1)[0] # first make a new bone at the location of the finger - control_ebone = arm.edit_bones.new(base_name) + #control_ebone = arm.edit_bones.new(base_name) + control_ebone = copy_bone_simple(arm, base_name, base_name) control_bone_name = control_ebone.name # we dont know if we get the name requested control_ebone.connected = orig_ebone.connected control_ebone.parent = orig_ebone.parent - - # Place the finger bone - head = orig_ebone.head.copy() - tail = orig_ebone.tail.copy() - - control_ebone.head = head - control_ebone.tail = head + ((tail - head).normalize() * tot_len) - control_ebone.roll = orig_ebone.roll + control_ebone.length = tot_len # now add bones inbetween this and its children recursively @@ -99,19 +124,10 @@ def main(obj, orig_bone_name): driver_bone_name = child_bone_name.split('.') driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) - driver_ebone = arm.edit_bones.new(driver_bone_name) - driver_bone_name = driver_ebone.name # cant be too sure! + driver_ebone = copy_bone_simple(arm, child_ebone.name, driver_bone_name) + driver_ebone.length *= 0.5 driver_ebone.layer = other_layer - new_len = pbone_child.bone.length / 2.0 - - head = child_ebone.head.copy() - tail = child_ebone.tail.copy() - - driver_ebone.head = head - driver_ebone.tail = head + ((tail - head).normalize() * new_len) - driver_ebone.roll = child_ebone.roll - # Insert driver_ebone in the chain without connected parents driver_ebone.connected = False driver_ebone.parent = child_ebone.parent @@ -129,7 +145,7 @@ def main(obj, orig_bone_name): bpy.ops.object.mode_set(mode='OBJECT') - arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name) + arm, orig_pbone, orig_bone = get_bone_data(obj, bone_definition[0]) arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) @@ -198,4 +214,6 @@ def main(obj, orig_bone_name): driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) i += 1 - + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 54dc76dafcf..589e295101c 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -17,9 +17,11 @@ # ##### END GPL LICENSE BLOCK ##### import bpy -from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to +from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" + def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') @@ -65,37 +67,60 @@ def metarig_template(): pbone = obj.pose.bones['thigh'] pbone['type'] = 'leg' - -def validate(obj, orig_bone_name): +def metarig_definition(obj, orig_bone_name): ''' The bone given is the first in a chain Expects a chain of at least 3 children. eg. thigh -> shin -> foot -> [toe, heel] ''' + + bone_definition = [] + orig_bone = obj.data.bones[orig_bone_name] + orig_bone_parent = orig_bone.parent + + if orig_bone_parent is None: + raise Exception("expected the thigh bone to have a parent hip bone") + + bone_definition.append(orig_bone_parent.name) + bone_definition.append(orig_bone.name) + bone = orig_bone chain = 0 - while chain < 3: # first 2 bones only have 1 child + while chain < 2: # first 2 bones only have 1 child children = bone.children + if len(children) != 1: - return "expected the thigh bone to have 3 children without a fork" + raise Exception("expected the thigh bone to have 3 children without a fork") bone = children[0] + bone_definition.append(bone.name) # shin, foot chain += 1 children = bone.children # Now there must be 2 children, only one connected if len(children) != 2: - return "expected the foot to have 2 children" + raise Exception("expected the foot to have 2 children") if children[0].connected == children[1].connected: - return "expected one bone to be connected" + raise Exception("expected one bone to be connected") - return '' + toe, heel = children + if heel.connected: + toe, heel = heel, toe + + + bone_definition.append(toe.name) + bone_definition.append(heel.name) + + if len(bone_definition) != len(METARIG_NAMES): + raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + + return bone_definition -def main(obj, orig_bone_name): +def ik(obj, bone_definition, base_names): from Mathutils import Vector arm = obj.data @@ -107,55 +132,26 @@ def main(obj, orig_bone_name): # children of ik_foot ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) - mt_chain.thigh_e = arm.edit_bones[orig_bone_name] - mt_chain.thigh = orig_bone_name - - mt.hips_e = mt_chain.thigh_e.parent - mt.hips_e.name = "ORG-" + mt.hips_e.name - mt.hips = mt.hips_e.name - - mt_chain.shin_e = mt_chain.thigh_e.children[0] - mt_chain.shin = mt_chain.shin_e.name - - mt_chain.foot_e = mt_chain.shin_e.children[0] - mt_chain.foot = mt_chain.foot_e.name - - mt_chain.toe_e, mt.heel_e = mt_chain.foot_e.children - - # We dont know which is which, but know the heel is disconnected - if not mt_chain.toe_e.connected: - mt_chain.toe_e, mt.heel_e = mt.heel_e, mt_chain.toe_e - mt.heel_e.name = "ORG-" + mt.heel_e.name - mt_chain.toe, mt.heel = mt_chain.toe_e.name, mt.heel_e.name - - ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % mt_chain.thigh, parent=True) - ex.thigh_socket = ex.thigh_socket_e.name - ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) - - ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % mt_chain.thigh, parent=True) - ex.thigh_hinge = ex.thigh_hinge_e.name - ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) - ex.thigh_hinge_e.translate(Vector(-(mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) - ex.thigh_hinge_e.length = mt.hips_e.length - + # XXX - duplicate below + for bone_class in (mt, mt_chain): + for attr in bone_class.attr_names: + i = METARIG_NAMES.index(attr) + ebone = arm.edit_bones[bone_definition[i]] + setattr(bone_class, attr, ebone.name) + bone_class.update() + # XXX - end dupe # Make a new chain, ORG are the original bones renamed. - fk_chain = mt_chain.copy(from_prefix="ORG-") # fk has no prefix! - ik_chain = fk_chain.copy(to_prefix="MCH-") - - fk_chain.thigh_e.connected = False - fk_chain.thigh_e.parent = ex.thigh_hinge_e - - # fk_chain.thigh_socket_e.parent = MCH-leg_hinge + ik_chain = mt_chain.copy(to_prefix="MCH-") # simple rename ik_chain.rename("thigh", ik_chain.thigh + "_ik") ik_chain.rename("shin", ik_chain.shin + "_ik") # ik foot, no parents - base_foot_name = fk_chain.foot # whatever the foot is called, use that! - ik.foot_e = copy_bone_simple(arm, fk_chain.foot, "%s_ik" % base_foot_name) + base_foot_name = base_names[mt_chain.foot] # whatever the foot is called, use that!, XXX - ORG! + ik.foot_e = copy_bone_simple(arm, mt_chain.foot, "%s_ik" % base_foot_name) ik.foot = ik.foot_e.name ik.foot_e.tail.z = ik.foot_e.head.z ik.foot_e.roll = 0.0 @@ -183,7 +179,7 @@ def main(obj, orig_bone_name): # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 # ------------------ FK or IK? - ik_chain.rename("toe", fk_chain.toe + "_ik") # only fk for the basename + ik_chain.rename("toe", base_names[mt_chain.toe] + "_ik") ik_chain.toe_e.connected = False ik_chain.toe_e.parent = ik.foot_roll_01_e @@ -213,43 +209,6 @@ def main(obj, orig_bone_name): ex.update() mt_chain.update() ik_chain.update() - fk_chain.update() - - con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.thigh_socket - - # hinge - prop = rna_idprop_ui_prop_get(fk_chain.thigh_p, "hinge", create=True) - fk_chain.thigh_p["hinge"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = mt.hips - - # add driver - hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "var" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = hinge_driver_path - - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.0 - mod.coefficients[1] = -1.0 - - - # adds constraints to the original bones. - mt_chain.blend(fk_chain, ik_chain, target_bone=ik.foot, target_prop="ik", use_loc=False) - # IK con = ik_chain.shin_p.constraints.new('IK') @@ -290,3 +249,79 @@ def main(obj, orig_bone_name): else: con.minimum_x = -180.0 # XXX -deg con.maximum_x = 0.0 + + return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None + + +def fk(obj, bone_definition, base_names): + from Mathutils import Vector + arm = obj.data + + # these account for all bones in METARIG_NAMES + mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) + mt = bone_class_instance(obj, ["hips", "heel"]) + + # new bones + ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge"]) + + for bone_class in (mt, mt_chain): + for attr in bone_class.attr_names: + i = METARIG_NAMES.index(attr) + ebone = arm.edit_bones[bone_definition[i]] + setattr(bone_class, attr, ebone.name) + bone_class.update() + + ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % base_names[mt_chain.thigh], parent=True) + ex.thigh_socket = ex.thigh_socket_e.name + ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) + + ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=True) + ex.thigh_hinge = ex.thigh_hinge_e.name + ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) + ex.thigh_hinge_e.translate(Vector(-(mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) + ex.thigh_hinge_e.length = mt.hips_e.length + + fk_chain = mt_chain.copy() # fk has no prefix! + + fk_chain.thigh_e.connected = False + fk_chain.thigh_e.parent = ex.thigh_hinge_e + + bpy.ops.object.mode_set(mode='OBJECT') + + ex.update() + mt_chain.update() + fk_chain.update() + + con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.thigh_socket + + # hinge + prop = rna_idprop_ui_prop_get(fk_chain.thigh_p, "hinge", create=True) + fk_chain.thigh_p["hinge"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.hips + + # add driver + hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + # dont blend the hips or heel + return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 524de6e2f3d..a075b797c1a 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -20,6 +20,8 @@ import bpy from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get +# not used, defined for completeness +METARIG_NAMES = ("body", "head") def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') @@ -72,30 +74,43 @@ def metarig_template(): pbone['type'] = 'neck' -def main(obj, orig_bone_name): +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the head, its parent is the body, + # its only child the first of a chain with matching basenames. + eg. + body -> head -> neck_01 -> neck_02 -> neck_03.... etc + ''' + arm = obj.data + head = arm.bones[orig_bone_name] + body = head.parent + + children = head.children + if len(children) != 1: + print("expected the head to have only 1 child.") + + child = children[0] + bone_definition = [body.name, head.name, child.name] + bone_definition.extend([child.name for child in child.children_recursive_basename]) + return bone_definition + + +def main(obj, bone_definition, base_names): from Mathutils import Vector arm = obj.data # Initialize container classes for convenience mt = bone_class_instance(obj, ["body", "head"]) # meta - mt.head = orig_bone_name - mt.update() - mt.body = mt.head_e.parent.name + mt.body = bone_definition[0] + mt.head = bone_definition[1] mt.update() - # child chain of the 'head' - children = mt.head_e.children - if len(children) != 1: - print("expected the head to have only 1 child.") + neck_chain = bone_definition[2:] - child = children[0] - neck_chain = [child] + child.children_recursive_basename - neck_chain = [child.name for child in neck_chain] - mt_chain = bone_class_instance(obj, [("neck_%.2d" % (i + 1)) for i in range(len(neck_chain))]) # 99 bones enough eh? - for i, child_name in enumerate(neck_chain): - setattr(mt_chain, ("neck_%.2d" % (i + 1)), child_name) + for i, attr in enumerate(mt_chain.attr_names): + setattr(mt_chain, attr, neck_chain[i]) mt_chain.update() neck_chain_basename = mt_chain.neck_01_e.basename @@ -135,8 +150,8 @@ def main(obj, orig_bone_name): mt.head_e.head.y += head_length / 4.0 mt.head_e.tail.y += head_length / 4.0 - for i in range(len(neck_chain)): - neck_e = getattr(mt_chain, "neck_%.2d_e" % (i + 1)) + for i, attr in enumerate(mt_chain.attr_names): + neck_e = getattr(mt_chain, attr + "_e") # dont store parent names, re-reference as each chain bones parent. neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) @@ -205,9 +220,9 @@ def main(obj, orig_bone_name): target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] expression_suffix = "/max(0.001,%s)" % "+".join(target_names) - - for i in range(len(neck_chain)): - neck_p = getattr(mt_chain, "neck_%.2d_p" % (i + 1)) + + for i, attr in enumerate(mt_chain.attr_names): + neck_p = getattr(mt_chain, attr + "_p") neck_p.lock_location = True, True, True neck_p.lock_location = True, True, True neck_p.lock_rotations_4d = True @@ -243,3 +258,6 @@ def main(obj, orig_bone_name): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (j + 1)) + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index b9df113167c..ea90133e8af 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -20,6 +20,8 @@ import bpy from rigify import get_bone_data, copy_bone_simple from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +# not used, defined for completeness +METARIG_NAMES = tuple() def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') @@ -72,20 +74,39 @@ def metarig_template(): pbone['type'] = 'palm' -def main(obj, orig_bone_name): - arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name) +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects an array of children sorted with the little finger lowest. + eg. + parent -> [pinky, ring... etc] + ''' + arm = obj.data + bone_definition = [orig_bone_name] + palm_ebone = arm.bones[orig_bone_name] + children = [ebone.name for ebone in palm_ebone.children] children.sort() # simply assume the pinky has the lowest name + bone_definition.extend(children) + + return bone_definition + + +def main(obj, bone_definition, base_names): + arm, palm_pbone, palm_ebone = get_bone_data(obj, bone_definition[0]) + children = bone_definition[1:] # Make a copy of the pinky + # simply assume the pinky has the lowest name pinky_ebone = arm.edit_bones[children[0]] + ring_ebone = arm.edit_bones[children[1]] + control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) control_name = control_ebone.name - offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head) + offset = (pinky_ebone.head - ring_ebone.head) - control_ebone.head += offset - control_ebone.tail += offset + control_ebone.translate(offset) bpy.ops.object.mode_set(mode='OBJECT') @@ -179,4 +200,6 @@ def main(obj, orig_bone_name): child_pbone = obj.pose.bones[children[-1]] child_pbone.rotation_mode = 'QUATERNION' - + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index f75575daacb..4fa8d363934 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -20,6 +20,8 @@ import bpy from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get +# not used, defined for completeness +METARIG_NAMES = ("pelvis", "ribcage") def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') @@ -84,48 +86,59 @@ def metarig_template(): pbone['type'] = 'spine' -def validate(obj, orig_bone_name): +def metarig_definition(obj, orig_bone_name): ''' The bone given is the second in a chain. Expects at least 1 parent and a chain of children withe the same basename eg. pelvis -> rib_cage -> spine.01 -> spine.02 -> spine.03 + + note: same as neck. ''' - orig_bone = obj.data.bones[orig_bone_name] - if not orig_bone.parent: - return "expected spine bone '%s' to have a parent" % orig_bone_name + arm = obj.data + ribcage = arm.bones[orig_bone_name] + pelvis = ribcage.parent - children = orig_bone.children - + children = ribcage.children if len(children) != 1: - return "expected spine bone '%s' to have only 1 child for the sine chain" % orig_bone_name - - children_spine = children[0].children_recursive_basename + print("expected the ribcage to have only 1 child.") - if len(children_spine) == 0: - return "expected '%s' to define a chain of children with its basename (2 or more)" % children[0] + child = children[0] + bone_definition = [pelvis.name, ribcage.name, child.name] + bone_definition.extend([child.name for child in child.children_recursive_basename]) + return bone_definition - return '' +def fk(*args): + main(*args) -def main(obj, orig_bone_name): +def main(obj, bone_definition, base_names): from Mathutils import Vector, Matrix, RotationMatrix from math import radians, pi - + arm = obj.data # Initialize container classes for convenience mt = bone_class_instance(obj, ["pelvis", "ribcage"]) # meta - mt.ribcage = orig_bone_name - mt.update() - mt.pelvis = mt.ribcage_e.parent.name + mt.pelvis = bone_definition[0] + mt.ribcage = bone_definition[1] mt.update() + spine_chain_orig = bone_definition[2:] + spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig] + spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1) # probably 'ORG-spine.01' -> 'spine' + spine_chain_len = len(spine_chain_orig) + + ''' children = mt.ribcage_e.children child = children[0] # validate checks for 1 only. spine_chain_basename = child.basename # probably 'spine' spine_chain_segment_length = child.length spine_chain = [child] + child.children_recursive_basename spine_chain_orig = [child.name for child in spine_chain] + ''' + + child = spine_chain[0] + spine_chain_segment_length = child.length child.parent = mt.pelvis_e # was mt.ribcage # The first bone in the chain happens to be the basis of others, create them now @@ -177,16 +190,17 @@ def main(obj, orig_bone_name): # - original (ORG_*) # - copy (*use original name*) # - reverse (MCH-rev_*) - spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(len(spine_chain_orig))] + spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(spine_chain_len)] mt_chain = bone_class_instance(obj, spine_chain_attrs) # ORG_* rv_chain = bone_class_instance(obj, spine_chain_attrs) # * ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* + del spine_chain_attrs for i, child_name in enumerate(spine_chain): child_name_orig = spine_chain_orig[i] - attr = spine_chain_attrs[i] # eg. spine_04 + attr = mt_chain.attr_names[i] # eg. spine_04 setattr(mt_chain, attr, spine_chain[i]) # use the new name @@ -203,12 +217,12 @@ def main(obj, orig_bone_name): # Now we need to re-parent these chains for i, child_name in enumerate(spine_chain_orig): - attr = spine_chain_attrs[i] + "_e" + attr = ex_chain.attr_names[i] + "_e" if i == 0: getattr(ex_chain, attr).parent = mt.pelvis_e else: - attr_parent = spine_chain_attrs[i-1] + "_e" + attr_parent = ex_chain.attr_names[i-1] + "_e" getattr(ex_chain, attr).parent = getattr(ex_chain, attr_parent) # intentional! get the parent from the other paralelle chain member @@ -217,9 +231,9 @@ def main(obj, orig_bone_name): # ex_chain needs to interlace bones! # Note, skip the first bone - for i in range(1, len(spine_chain_attrs)): # similar to neck + for i in range(1, spine_chain_len): # similar to neck child_name_orig = spine_chain_orig[i] - spine_e = getattr(mt_chain, spine_chain_attrs[i] + "_e") + spine_e = getattr(mt_chain, mt_chain.attr_names[i] + "_e") # dont store parent names, re-reference as each chain bones parent. spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) @@ -227,7 +241,7 @@ def main(obj, orig_bone_name): spine_e_parent.tail = spine_e.head + Vector(0.0, 0.0, spine_chain_segment_length / 2.0) spine_e_parent.roll = 0.0 - spine_e = getattr(ex_chain, spine_chain_attrs[i] + "_e") + spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e") orig_parent = spine_e.parent spine_e.connected = False spine_e.parent = spine_e_parent @@ -239,8 +253,8 @@ def main(obj, orig_bone_name): # Rotate the rev chain 180 about the by the first bones center point pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 matrix = RotationMatrix(radians(180), 3, 'X') - for i in range(len(spine_chain_attrs)): # similar to neck - spine_e = getattr(rv_chain, spine_chain_attrs[i] + "_e") + for i, attr in enumerate(rv_chain.attr_names): # similar to neck + spine_e = getattr(rv_chain, attr + "_e") # use the first bone as the pivot spine_e.head = ((spine_e.head - pivot) * matrix) + pivot @@ -326,12 +340,12 @@ def main(obj, orig_bone_name): # ex.ribcage_p / MCH-wgt_rib_cage con = ex.ribcage_p.constraints.new('COPY_LOCATION') con.target = obj - con.subtarget = getattr(mt_chain, spine_chain_attrs[-1]) + con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) con.head_tail = 0.0 con = ex.ribcage_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = getattr(mt_chain, spine_chain_attrs[-1]) + con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) # mt.pelvis_p / rib_cage con = mt.ribcage_p.constraints.new('COPY_LOCATION') @@ -347,10 +361,10 @@ def main(obj, orig_bone_name): prop = rna_idprop_ui_prop_get(mt.ribcage_p, "pivot_slide", create=True) mt.ribcage_p["pivot_slide"] = 0.5 - prop["soft_min"] = 1.0 / len(spine_chain_attrs) + prop["soft_min"] = 1.0 / spine_chain_len prop["soft_max"] = 1.0 - for i in range(len(spine_chain_attrs) - 1): + for i in range(spine_chain_len - 1): prop_name = "bend_%.2d" % (i + 1) prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) mt.ribcage_p[prop_name] = 1.0 @@ -361,9 +375,9 @@ def main(obj, orig_bone_name): # positioned at the tip. # reverse bones / MCH-rev_spine.## - for i in range(1, len(spine_chain_attrs)): - spine_p = getattr(rv_chain, spine_chain_attrs[i] + "_p") - spine_fake_parent_name = getattr(rv_chain, spine_chain_attrs[i - 1]) + for i in range(1, spine_chain_len): + spine_p = getattr(rv_chain, rv_chain.attr_names[i] + "_p") + spine_fake_parent_name = getattr(rv_chain, rv_chain.attr_names[i - 1]) con = spine_p.constraints.new('COPY_LOCATION') con.target = obj @@ -375,14 +389,14 @@ def main(obj, orig_bone_name): # Constrain 'inbetween' bones # b01/max(0.001,b01+b02+b03+b04+b05) - target_names = [("b%.2d" % (i + 1)) for i in range(len(spine_chain_attrs) - 1)] + target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] expression_suffix = "/max(0.001,%s)" % "+".join(target_names) rib_driver_path = mt.ribcage_p.path_to_id() - for i in range(1, len(spine_chain_attrs)): + for i in range(1, spine_chain_len): - spine_p = getattr(ex_chain, spine_chain_attrs[i] + "_p") + spine_p = getattr(ex_chain, ex_chain.attr_names[i] + "_p") spine_p_parent = spine_p.parent # interlaced bone con = spine_p_parent.constraints.new('COPY_ROTATION') @@ -400,7 +414,7 @@ def main(obj, orig_bone_name): driver.expression = target_names[i - 1] + expression_suffix fcurve.modifiers.remove(0) # grr dont need a modifier - for j in range(len(spine_chain_attrs) - 1): + for j in range(spine_chain_len - 1): tar = driver.targets.new() tar.name = target_names[j] tar.id_type = 'OBJECT' @@ -410,12 +424,12 @@ def main(obj, orig_bone_name): # original bone drivers # note: the first bone has a lot more constraints, but also this simple one is first. - for i in range(len(spine_chain_attrs)): - spine_p = getattr(mt_chain, spine_chain_attrs[i] + "_p") + for i in attr, enumerate(mt_chain.attr_names): + spine_p = getattr(mt_chain, attr + "_p") con = spine_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = getattr(ex_chain, spine_chain_attrs[i]) # lock to the copy's rotation + con.subtarget = getattr(ex_chain, attr) # lock to the copy's rotation del spine_p # pivot slide: - lots of copy location constraints. @@ -425,19 +439,19 @@ def main(obj, orig_bone_name): con.target = obj con.subtarget = rv_chain.spine_01 # lock to the reverse location - for i in range(1, len(spine_chain_attrs) + 1): + for i in range(1, spine_chain_len + 1): con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') con.name = "slide_%d" % i con.target = obj - if i == len(spine_chain_attrs): - attr = spine_chain_attrs[i - 1] + if i == spine_chain_len: + attr = mt_chain.attr_names[i - 1] else: - attr = spine_chain_attrs[i] + attr = mt_chain.attr_names[i] con.subtarget = getattr(rv_chain, attr) # lock to the reverse location - if i == len(spine_chain_attrs): + if i == spine_chain_len: con.head_tail = 1.0 fcurve = con.driver_add("influence", 0) @@ -452,5 +466,8 @@ def main(obj, orig_bone_name): mod = fcurve.modifiers[0] mod.poly_order = 1 mod.coefficients[0] = - (i - 1) - mod.coefficients[1] = len(spine_chain_attrs) + mod.coefficients[1] = spine_chain_len + + # no support for blending chains + return None -- cgit v1.2.3 From bcd1ab54cd1ebeda433f1c1999f5a9807c808e8e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 5 Dec 2009 19:27:26 +0000 Subject: Support for the C Macro system in Python. Basic definition works like a python operator but you derive from "bpy.types.Macro" instead. Operators are added to the macro after it has been added with "bpy.ops.add_macro" through the class method "define" which takes an operator id and returns an OperatorMacroType (new RNA type) for which properties can then be defined to be passed to the operator when run. Example: http://blenderartists.org/~theeth/bf/macro.py Using this system, it should be easy to add an operator to the console that converts selected lines into a macro or even a more generic record macro system. --- release/scripts/modules/bpy/ops.py | 4 + release/scripts/modules/bpy_types.py | 7 + source/blender/makesrna/RNA_access.h | 1 + source/blender/makesrna/intern/rna_wm.c | 52 ++++++ source/blender/python/intern/bpy_operator.c | 6 +- source/blender/python/intern/bpy_operator_wrap.c | 184 +++++++++++++++++++++ source/blender/python/intern/bpy_operator_wrap.h | 2 + source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_operators.c | 21 +++ source/blenderplayer/bad_level_call_stubs/stubs.c | 1 + 10 files changed, 278 insertions(+), 1 deletion(-) diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index 5b3009db2bf..c8218d6703c 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -23,6 +23,7 @@ from _bpy import ops as ops_module op_add = ops_module.add op_remove = ops_module.remove +op_add_macro = ops_module.add_macro op_dir = ops_module.dir op_call = ops_module.call op_as_string = ops_module.as_string @@ -58,6 +59,9 @@ class bpy_ops(object): def add(self, pyop): op_add(pyop) + + def add_macro(self, pyop): + op_add_macro(pyop) def remove(self, pyop): op_remove(pyop) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 565f0e4da1b..5a8d6ceedf6 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -252,6 +252,13 @@ class OrderedMeta(type): class Operator(StructRNA, metaclass=OrderedMeta): pass +class Macro(StructRNA, metaclass=OrderedMeta): + # bpy_types is imported before ops is defined + # so we have to do a local import on each run + @classmethod + def define(self, opname): + from _bpy import ops + return ops.macro_define(self, opname) class Menu(StructRNA): diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 36653f8c06e..959109f7bbb 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -323,6 +323,7 @@ extern StructRNA RNA_OperatorFileListElement; extern StructRNA RNA_OperatorMousePath; extern StructRNA RNA_OperatorProperties; extern StructRNA RNA_OperatorStrokeElement; +extern StructRNA RNA_OperatorTypeMacro; extern StructRNA RNA_OrController; extern StructRNA RNA_OutflowFluidSettings; extern StructRNA RNA_PackedFile; diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 10e27814236..35f2a31b7ef 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -309,6 +309,12 @@ static PointerRNA rna_Operator_properties_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, op->type->srna, op->properties); } +static PointerRNA rna_OperatorTypeMacro_properties_get(PointerRNA *ptr) +{ + wmOperatorTypeMacro *otmacro= (wmOperatorTypeMacro*)ptr->data; + wmOperatorType *ot = WM_operatortype_exists(otmacro->idname); + return rna_pointer_inherit_refine(ptr, ot->srna, otmacro->properties); +} static void rna_Event_ascii_get(PointerRNA *ptr, char *value) { @@ -593,6 +599,50 @@ static void rna_def_operator(BlenderRNA *brna) RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties"); } +static void rna_def_macro_operator(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "Macro", NULL); + RNA_def_struct_ui_text(srna, "Macro Operator", "Storage of a macro operator being executed, or registered after execution."); + RNA_def_struct_sdna(srna, "wmOperator"); + + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_string_funcs(prop, "rna_Operator_name_get", "rna_Operator_name_length", NULL); + RNA_def_property_ui_text(prop, "Name", ""); + RNA_def_struct_name_property(srna, prop); + + prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_struct_type(prop, "OperatorProperties"); + RNA_def_property_ui_text(prop, "Properties", ""); + RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL); +} + +static void rna_def_operator_type_macro(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "OperatorTypeMacro", NULL); + RNA_def_struct_ui_text(srna, "OperatorTypeMacro", "Storage of a sub operator in a macro after it has been added."); + RNA_def_struct_sdna(srna, "wmOperatorTypeMacro"); + +// prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); +// RNA_def_property_clear_flag(prop, PROP_EDITABLE); +// RNA_def_property_string_sdna(prop, NULL, "idname"); +// RNA_def_property_ui_text(prop, "Name", "Name of the sub operator."); +// RNA_def_struct_name_property(srna, prop); + + prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_struct_type(prop, "OperatorProperties"); + RNA_def_property_ui_text(prop, "Properties", ""); + RNA_def_property_pointer_funcs(prop, "rna_OperatorTypeMacro_properties_get", NULL, NULL); +} + static void rna_def_operator_utils(BlenderRNA *brna) { StructRNA *srna; @@ -911,6 +961,8 @@ void RNA_def_wm(BlenderRNA *brna) rna_def_operator(brna); rna_def_operator_utils(brna); rna_def_operator_filelist_element(brna); + rna_def_macro_operator(brna); + rna_def_operator_type_macro(brna); rna_def_event(brna); rna_def_window(brna); rna_def_windowmanager(brna); diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index 6ae63f2ab65..b4a2fb36a97 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -60,7 +60,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) if (!PyArg_ParseTuple(args, "sO|O!i:_bpy.ops.call", &opname, &context_dict, &PyDict_Type, &kw, &context)) return NULL; - ot= WM_operatortype_find(opname, TRUE); + ot= WM_operatortype_exists(opname); if (ot == NULL) { PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\"could not be found", opname); @@ -245,6 +245,8 @@ PyObject *BPY_operator_module( void ) static PyMethodDef pyop_dir_meth = {"dir", (PyCFunction) pyop_dir, METH_NOARGS, NULL}; static PyMethodDef pyop_getrna_meth = {"get_rna", (PyCFunction) pyop_getrna, METH_O, NULL}; static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL}; + static PyMethodDef pyop_add_macro_meth ={"add_macro", (PyCFunction) PYOP_wrap_add_macro, METH_O, NULL}; + static PyMethodDef pyop_macro_def_meth ={"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL}; static PyMethodDef pyop_remove_meth = {"remove", (PyCFunction) PYOP_wrap_remove, METH_O, NULL}; PyObject *submodule = PyModule_New("_bpy.ops"); @@ -255,6 +257,8 @@ PyObject *BPY_operator_module( void ) PyModule_AddObject( submodule, "dir", PyCFunction_New(&pyop_dir_meth, NULL) ); PyModule_AddObject( submodule, "get_rna", PyCFunction_New(&pyop_getrna_meth, NULL) ); PyModule_AddObject( submodule, "add", PyCFunction_New(&pyop_add_meth, NULL) ); + PyModule_AddObject( submodule, "add_macro", PyCFunction_New(&pyop_add_macro_meth, NULL) ); + PyModule_AddObject( submodule, "macro_define",PyCFunction_New(&pyop_macro_def_meth, NULL) ); PyModule_AddObject( submodule, "remove", PyCFunction_New(&pyop_remove_meth, NULL) ); return submodule; diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index ff49d381dd1..cd5b0756531 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -342,6 +342,80 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) } } +void PYTHON_OT_MACRO_wrapper(wmOperatorType *ot, void *userdata) +{ + PyObject *py_class = (PyObject *)userdata; + PyObject *item; + + /* identifiers */ + item= PyObject_GetAttrString(py_class, PYOP_ATTR_IDNAME_BL); + ot->idname= _PyUnicode_AsString(item); + Py_DECREF(item); + + item= PyObject_GetAttrString(py_class, PYOP_ATTR_UINAME); + if (item) { + ot->name= _PyUnicode_AsString(item); + Py_DECREF(item); + } + else { + ot->name= ot->idname; + PyErr_Clear(); + } + + item= PyObject_GetAttrString(py_class, PYOP_ATTR_DESCRIPTION); + ot->description= (item && PyUnicode_Check(item)) ? _PyUnicode_AsString(item):"undocumented python operator"; + Py_XDECREF(item); + + if (PyObject_HasAttrString(py_class, "poll")) + ot->pyop_poll= PYTHON_OT_poll; + if (PyObject_HasAttrString(py_class, "draw")) + ot->ui= PYTHON_OT_draw; + + ot->pyop_data= userdata; + + /* flags */ + ot->flag= OPTYPE_MACRO; /* macro at least */ + + item= PyObject_GetAttrString(py_class, PYOP_ATTR_REGISTER); + if (item) { + ot->flag |= PyObject_IsTrue(item)!=0 ? OPTYPE_REGISTER:0; + Py_DECREF(item); + } + else { + PyErr_Clear(); + } + item= PyObject_GetAttrString(py_class, PYOP_ATTR_UNDO); + if (item) { + ot->flag |= PyObject_IsTrue(item)!=0 ? OPTYPE_UNDO:0; + Py_DECREF(item); + } + else { + PyErr_Clear(); + } + + /* Can't use this because it returns a dict proxy + * + * item= PyObject_GetAttrString(py_class, "__dict__"); + */ + item= ((PyTypeObject*)py_class)->tp_dict; + if(item) { + /* only call this so pyrna_deferred_register_props gives a useful error + * WM_operatortype_append_macro_ptr will call RNA_def_struct_identifier + * later */ + RNA_def_struct_identifier(ot->srna, ot->idname); + + if(pyrna_deferred_register_props(ot->srna, item)!=0) { + /* failed to register operator props */ + PyErr_Print(); + PyErr_Clear(); + + } + } + else { + PyErr_Clear(); + } +} + /* pyOperators - Operators defined IN Python */ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) @@ -407,6 +481,116 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) Py_RETURN_NONE; } +/* pyOperators - Macro Operators defined IN Python */ +PyObject *PYOP_wrap_add_macro(PyObject *self, PyObject *py_class) +{ + PyObject *base_class, *item; + wmOperatorType *ot; + + + char *idname= NULL; + char idname_bl[OP_MAX_TYPENAME]; /* converted to blender syntax */ + + static struct BPY_class_attr_check pyop_class_attr_values[]= { + {PYOP_ATTR_IDNAME, 's', -1, OP_MAX_TYPENAME-3, 0}, /* -3 because a.b -> A_OT_b */ + {PYOP_ATTR_UINAME, 's', -1,-1, BPY_CLASS_ATTR_OPTIONAL}, + {PYOP_ATTR_DESCRIPTION, 's', -1,-1, BPY_CLASS_ATTR_NONE_OK}, + {"poll", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, + {"draw", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, + {NULL, 0, 0, 0} + }; + + //PyObject bpy_mod= PyDict_GetItemString(PyEval_GetGlobals(), "bpy"); + PyObject *bpy_mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0); + base_class = PyObject_GetAttrStringArgs(bpy_mod, 2, "types", "Macro"); + Py_DECREF(bpy_mod); + + if(BPY_class_validate("Macro", py_class, base_class, pyop_class_attr_values, NULL) < 0) { + return NULL; /* BPY_class_validate sets the error */ + } + Py_DECREF(base_class); + + /* class name is used for operator ID - this can be changed later if we want */ + item= PyObject_GetAttrString(py_class, PYOP_ATTR_IDNAME); + idname = _PyUnicode_AsString(item); + + + /* annoying conversion! */ + WM_operator_bl_idname(idname_bl, idname); + Py_DECREF(item); + + item= PyUnicode_FromString(idname_bl); + PyObject_SetAttrString(py_class, PYOP_ATTR_IDNAME_BL, item); + idname = _PyUnicode_AsString(item); + Py_DECREF(item); + /* end annoying conversion! */ + + + /* remove if it already exists */ + if ((ot=WM_operatortype_exists(idname))) { + if(ot->pyop_data) { + Py_XDECREF((PyObject*)ot->pyop_data); + } + WM_operatortype_remove(idname); + } + + Py_INCREF(py_class); + WM_operatortype_append_macro_ptr(PYTHON_OT_MACRO_wrapper, py_class); + + Py_RETURN_NONE; +} + +PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args) +{ + wmOperatorType *ot; + wmOperatorTypeMacro *otmacro; + PyObject *macro; + PyObject *item; + PointerRNA ptr_otmacro; + + char *opname; + char *macroname; + + if (!PyArg_ParseTuple(args, "Os:_bpy.ops.macro_define", ¯o, &opname)) + return NULL; + + if (WM_operatortype_exists(opname) == NULL) { + PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid operator id", opname); + return NULL; + } + + /* identifiers */ + item= PyObject_GetAttrString(macro, PYOP_ATTR_IDNAME_BL); + + if (!item) { + item= PyObject_GetAttrString(macro, PYOP_ATTR_IDNAME); + + if (!item) { + PyErr_Format(PyExc_ValueError, "Macro Define: not a valid Macro class"); + } else { + macroname= _PyUnicode_AsString(item); + PyErr_Format(PyExc_ValueError, "Macro Define: '%s' hasn't been registered yet", macroname); + } + return NULL; + } + + macroname= _PyUnicode_AsString(item); + + ot = WM_operatortype_exists(macroname); + + if (!ot) { + PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid macro or hasn't been registered yet", macroname); + return NULL; + } + + otmacro = WM_operatortype_macro_define(ot, opname); + + RNA_pointer_create(NULL, &RNA_OperatorTypeMacro, otmacro, &ptr_otmacro); + + return pyrna_struct_CreatePyObject(&ptr_otmacro); +} + + PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value) { PyObject *py_class; diff --git a/source/blender/python/intern/bpy_operator_wrap.h b/source/blender/python/intern/bpy_operator_wrap.h index 2929d57ab82..939fedd1f2b 100644 --- a/source/blender/python/intern/bpy_operator_wrap.h +++ b/source/blender/python/intern/bpy_operator_wrap.h @@ -29,6 +29,8 @@ /* these are used for operator methods, used by bpy_operator.c */ PyObject *PYOP_wrap_add(PyObject *self, PyObject *args); +PyObject *PYOP_wrap_add_macro(PyObject *self, PyObject *args); +PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args); PyObject *PYOP_wrap_remove(PyObject *self, PyObject *args); #endif diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index a270b75eea1..549ef11c14e 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -180,6 +180,7 @@ wmOperatorType *WM_operatortype_exists(const char *idname); wmOperatorType *WM_operatortype_first(void); void WM_operatortype_append (void (*opfunc)(wmOperatorType*)); void WM_operatortype_append_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata); +void WM_operatortype_append_macro_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata); int WM_operatortype_remove(const char *idname); wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 9cee2140fc7..582410c4368 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -353,6 +353,27 @@ wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag) return ot; } +void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), void *userdata) +{ + wmOperatorType *ot; + + ot= MEM_callocN(sizeof(wmOperatorType), "operatortype"); + ot->srna= RNA_def_struct(&BLENDER_RNA, "", "OperatorProperties"); + + ot->exec= wm_macro_exec; + ot->invoke= wm_macro_invoke; + ot->modal= wm_macro_modal; + ot->cancel= wm_macro_cancel; + ot->poll= NULL; + + opfunc(ot, userdata); + + RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); + RNA_def_struct_identifier(ot->srna, ot->idname); + + BLI_addtail(&global_ops, ot); +} + wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname) { wmOperatorTypeMacro *otmacro= MEM_callocN(sizeof(wmOperatorTypeMacro), "wmOperatorTypeMacro"); diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 7f9928262c3..9abd518ff6e 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -232,6 +232,7 @@ void WM_operator_properties_free(struct PointerRNA *ptr){} void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring){} void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot){} void WM_operatortype_append_ptr(void (*opfunc)(struct wmOperatorType*, void*), void *userdata){} +void WM_operatortype_append_macro_ptr(void (*opfunc)(struct wmOperatorType*, void*), void *userdata){} void WM_operator_bl_idname(char *to, const char *from){} void WM_operator_py_idname(char *to, const char *from){} short insert_keyframe (struct ID *id, struct bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag){return 0;} -- cgit v1.2.3 From bca53f09060e8686fe824f0353881ef0671997f8 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 5 Dec 2009 20:06:19 +0000 Subject: [#20266] Blender starting without X11 segfaults Abort when ghost x11 cannot initialize a display. It would just crash later anyway, better to abort with a reasonable error message. --- intern/ghost/intern/GHOST_SystemX11.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 3f5f52aa2ed..ad8647d2246 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -66,8 +66,10 @@ #include #include +#include #include #include // for fprintf only +#include // for exit typedef struct NDOFPlatformInfo { Display *display; @@ -96,7 +98,10 @@ GHOST_SystemX11( { m_display = XOpenDisplay(NULL); - if (!m_display) return; + if (!m_display) { + std::cerr << "Unable to open a display" << std::endl; + abort(); //was return before, but this would just mean it will crash later + } #ifdef __sgi m_delete_window_atom -- cgit v1.2.3 From 651336d5dfdea5faaebb26e5e153efd65676631a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 5 Dec 2009 20:45:51 +0000 Subject: fixes for automatic tests and some errors in last commit --- release/scripts/modules/bpy/__init__.py | 21 ++++++++++++++++++--- release/scripts/modules/graphviz_export.py | 15 +++++++++------ release/scripts/modules/rigify/__init__.py | 3 ++- release/scripts/modules/rigify/arm.py | 5 +---- release/scripts/modules/rigify/finger.py | 2 +- release/scripts/modules/rigify/leg.py | 15 +++++++++++++-- release/scripts/modules/rigify/spine.py | 24 +++++++++++++----------- 7 files changed, 57 insertions(+), 28 deletions(-) diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 0df11659336..72ef4ae3bd8 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -31,17 +31,28 @@ from bpy import ops as _ops_module # fake operator module ops = _ops_module.ops_fake_module +import sys +DEBUG = ("-d" in sys.argv) + def load_scripts(reload_scripts=False): import os - import sys import traceback + import time + + + t_main = time.time() def test_import(module_name): try: - return __import__(module_name) + t = time.time() + ret= __import__(module_name) + if DEBUG: + print("time %s %.4f" % (module_name, time.time() - t)) + return ret except: traceback.print_exc() return None + for base_path in utils.script_paths(): for path_subdir in ("ui", "op", "io"): @@ -62,6 +73,9 @@ def load_scripts(reload_scripts=False): print("Reloading:", mod) reload(mod) + if DEBUG: + print("Time %.4f" % (time.time() - t_main)) + def _main(): # a bit nasty but this prevents help() and input() from locking blender @@ -70,7 +84,8 @@ def _main(): import sys sys.stdin = None - if "-d" in sys.argv and False: # Enable this to measure startup speed + # if "-d" in sys.argv: # Enable this to measure startup speed + if 0: import cProfile cProfile.run('import bpy; bpy.load_scripts()', 'blender.prof') diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 5d0ff4fe824..5227237c51b 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -47,7 +47,8 @@ def compat_str(text, line_length=0): text = text.replace('"', '\\"') return "* " + text -def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): +def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=False): + CONSTRAINTS = DRIVERS = True file = open(path, "w") fw = file.write @@ -76,7 +77,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): label.append("%s = %s" % (key, value)) - opts = ["shape=box", "regular=1", "style=filled", 'width="2.33"', 'height="0.35"', "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] + opts = ["shape=box", "regular=1", "style=filled", "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] if bone.name.startswith('ORG'): opts.append("fillcolor=yellow") @@ -123,8 +124,9 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): if subtarget: # TODO, not internal links opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="red"', 'labelfontsize=4'] - label = "%s\n%s" % (constraint.type, constraint.name) - opts.append('label="%s"' % compat_str(label)) + if XTRA_INFO: + label = "%s\n%s" % (constraint.type, constraint.name) + opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) # Drivers @@ -157,8 +159,9 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True): opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # , display_source = rna_path.replace("pose.bones", "") display_target = rna_path_target.replace("pose.bones", "") - label = "%s\\n%s" % (display_source, display_target) - opts.append('label="%s"' % compat_str(label)) + if XTRA_INFO: + label = "%s\\n%s" % (display_source, display_target) + opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) fw(footer) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index f6397fa94dc..94f509a40e9 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -164,7 +164,7 @@ def get_bone_data(obj, bone_name): def copy_bone_simple(arm, from_bone, name, parent=False): ebone = arm.edit_bones[from_bone] ebone_new = arm.edit_bones.new(name) - + if parent: ebone_new.connected = ebone.connected ebone_new.parent = ebone.parent @@ -429,6 +429,7 @@ def generate_rig(context, obj_orig, prefix="ORG-"): bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) + type_func = getattr(submod, func_name) bone_typeinfo.append((submod_name, type_func)) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index af2d08307dd..56b607fbd41 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -338,10 +338,7 @@ def main(obj, definitions, base_names): bpy.ops.object.mode_set(mode='EDIT') # remove the shoulder and re-parent - - - - chain_init() + chain_ik() chain_switch() chain_shoulder() diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index c839f20e71f..44262e22bf6 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -98,7 +98,7 @@ def main(obj, bone_definition, base_names): # first make a new bone at the location of the finger #control_ebone = arm.edit_bones.new(base_name) - control_ebone = copy_bone_simple(arm, base_name, base_name) + control_ebone = copy_bone_simple(arm, bone_definition[0], base_name) control_bone_name = control_ebone.name # we dont know if we get the name requested control_ebone.connected = orig_ebone.connected diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 589e295101c..1228e2ed78a 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -17,7 +17,7 @@ # ##### END GPL LICENSE BLOCK ##### import bpy -from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to +from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to, blend_bone_list from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" @@ -249,7 +249,9 @@ def ik(obj, bone_definition, base_names): else: con.minimum_x = -180.0 # XXX -deg con.maximum_x = 0.0 - + + bpy.ops.object.mode_set(mode='EDIT') + return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None @@ -323,5 +325,14 @@ def fk(obj, bone_definition, base_names): mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 + bpy.ops.object.mode_set(mode='EDIT') + # dont blend the hips or heel return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None + +def main(obj, bone_definition, base_names): + bones_ik = ik(obj, bone_definition, base_names) + bones_fk = fk(obj, bone_definition, base_names) + + bpy.ops.object.mode_set(mode='OBJECT') + blend_bone_list(obj, bone_definition, bones_ik, bones_fk) diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 4fa8d363934..20ba48bfef9 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -123,10 +123,12 @@ def main(obj, bone_definition, base_names): mt.ribcage = bone_definition[1] mt.update() - spine_chain_orig = bone_definition[2:] + spine_chain_orig = tuple(bone_definition[2:]) spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig] - spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1) # probably 'ORG-spine.01' -> 'spine' + spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1)[0] # probably 'ORG-spine.01' -> 'spine' spine_chain_len = len(spine_chain_orig) + print(spine_chain_orig) + print(spine_chain_len) ''' children = mt.ribcage_e.children @@ -180,10 +182,6 @@ def main(obj, bone_definition, base_names): ex.ribcage_e.translate(Vector(0.0, -ex.ribcage_e.length / 2.0, 0.0)) ex.ribcage_e.parent = mt.ribcage_e - # rename! - for child in spine_chain: - child.name = "ORG-" + child.name - spine_chain = [child.name for child in spine_chain] # We have 3 spine chains @@ -198,11 +196,11 @@ def main(obj, bone_definition, base_names): del spine_chain_attrs for i, child_name in enumerate(spine_chain): - child_name_orig = spine_chain_orig[i] + child_name_orig = base_names[spine_chain_orig[i]] attr = mt_chain.attr_names[i] # eg. spine_04 - setattr(mt_chain, attr, spine_chain[i]) # use the new name + setattr(mt_chain, attr, spine_chain_orig[i]) # the original bone ebone = copy_bone_simple(arm, child_name, child_name_orig) # use the original name setattr(ex_chain, attr, ebone.name) @@ -210,7 +208,7 @@ def main(obj, bone_definition, base_names): ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig) setattr(rv_chain, attr, ebone.name) ebone.connected = False - + mt_chain.update() ex_chain.update() rv_chain.update() @@ -284,7 +282,7 @@ def main(obj, bone_definition, base_names): con.target = obj con.subtarget = ex.pelvis con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' + con.target_space = 'LOCAL' # df.ribcage_p / DEF-wgt_rib_cage con = df.ribcage_p.constraints.new('COPY_ROTATION') @@ -332,10 +330,14 @@ def main(obj, bone_definition, base_names): con = ex.pelvis_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = mt_chain.spine_01 + con.owner_space = 'WORLD' + con.target_space = 'WORLD' con = ex.pelvis_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt_chain.spine_01 + con.owner_space = 'WORLD' + con.target_space = 'WORLD' # ex.ribcage_p / MCH-wgt_rib_cage con = ex.ribcage_p.constraints.new('COPY_LOCATION') @@ -424,7 +426,7 @@ def main(obj, bone_definition, base_names): # original bone drivers # note: the first bone has a lot more constraints, but also this simple one is first. - for i in attr, enumerate(mt_chain.attr_names): + for i, attr in enumerate(mt_chain.attr_names): spine_p = getattr(mt_chain, attr + "_p") con = spine_p.constraints.new('COPY_ROTATION') -- cgit v1.2.3 From 9d2293c4641703a7e8d5221608b46ce939396e3e Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 5 Dec 2009 21:14:31 +0000 Subject: 2.5 Nodes: * Wrapped Texture Nodes: "Blend", "Marble", "Wood", "Clouds", and "Distorted Noise", to use Texture RNA properties. * Texture RNA properties used in these Nodes, now send an ND_NODE notifier, in addition to the general NC_TEXTURE. --- source/blender/editors/space_node/drawnode.c | 99 ++++++++++------------------ source/blender/makesrna/intern/rna_texture.c | 33 +++++----- 2 files changed, 50 insertions(+), 82 deletions(-) diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 354d7a4edd3..caff0968e54 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -1088,89 +1088,56 @@ static void node_texture_buts_bricks(uiLayout *layout, bContext *C, PointerRNA * uiItemR(col, "Frequency", 0, ptr, "squash_frequency", 0); } -/* Copied from buttons_shading.c -- needs unifying */ -static char* noisebasis_menu() -{ - static char nbmenu[256]; - sprintf(nbmenu, "Noise Basis %%t|Blender Original %%x%d|Original Perlin %%x%d|Improved Perlin %%x%d|Voronoi F1 %%x%d|Voronoi F2 %%x%d|Voronoi F3 %%x%d|Voronoi F4 %%x%d|Voronoi F2-F1 %%x%d|Voronoi Crackle %%x%d|CellNoise %%x%d", TEX_BLENDER, TEX_STDPERLIN, TEX_NEWPERLIN, TEX_VORONOI_F1, TEX_VORONOI_F2, TEX_VORONOI_F3, TEX_VORONOI_F4, TEX_VORONOI_F2F1, TEX_VORONOI_CRACKLE, TEX_CELLNOISE); - return nbmenu; -} - static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); + PointerRNA tex_ptr; bNode *node= ptr->data; - rctf *butr= &node->butr; + ID *id= ptr->id.data; Tex *tex = (Tex *)node->storage; - short x,y,w,h; - - x = butr->xmin; - y = butr->ymin; - w = butr->xmax - x; - h = butr->ymax - y; + uiLayout *col, *row; + RNA_pointer_create(id, &RNA_Texture, tex, &tex_ptr); + + col= uiLayoutColumn(layout, 0); + switch( tex->type ) { case TEX_BLEND: - uiBlockBeginAlign( block ); - uiDefButS( block, MENU, B_NODE_EXEC, - "Linear %x0|Quad %x1|Ease %x2|Diag %x3|Sphere %x4|Halo %x5|Radial %x6", - x, y+20, w, 20, &tex->stype, 0, 1, 0, 0, "Blend Type" ); - uiDefButBitS(block, TOG, TEX_FLIPBLEND, B_NODE_EXEC, "Flip XY", x, y, w, 20, - &tex->flag, 0, 0, 0, 0, "Flips the direction of the progression 90 degrees"); - uiBlockEndAlign( block ); + uiItemR(col, "", 0, &tex_ptr, "progression", 0); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "flip_axis", UI_ITEM_R_EXPAND); break; - + case TEX_MARBLE: - uiBlockBeginAlign(block); - - uiDefButS(block, ROW, B_NODE_EXEC, "Soft", 0*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SOFT, 0, 0, "Uses soft marble"); - uiDefButS(block, ROW, B_NODE_EXEC, "Sharp", 1*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SHARP, 0, 0, "Uses more clearly defined marble"); - uiDefButS(block, ROW, B_NODE_EXEC, "Sharper", 2*w/3+x, 40+y, w/3, 18, &tex->stype, 2.0, (float)TEX_SHARPER, 0, 0, "Uses very clearly defined marble"); - - uiDefButS(block, ROW, B_NODE_EXEC, "Soft noise", 0*w/2+x, 20+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise"); - uiDefButS(block, ROW, B_NODE_EXEC, "Hard noise", 1*w/2+x, 20+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise"); - - uiDefButS(block, ROW, B_NODE_EXEC, "Sin", 0*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 0.0, 0, 0, "Uses a sine wave to produce bands."); - uiDefButS(block, ROW, B_NODE_EXEC, "Saw", 1*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 1.0, 0, 0, "Uses a saw wave to produce bands"); - uiDefButS(block, ROW, B_NODE_EXEC, "Tri", 2*w/3+x, 0+y, w/3, 18, &tex->noisebasis2, 8.0, 2.0, 0, 0, "Uses a triangle wave to produce bands"); - - uiBlockEndAlign(block); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND); break; - + case TEX_WOOD: - uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+64, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis used for turbulence"); - - uiBlockBeginAlign(block); - uiDefButS(block, ROW, B_TEXPRV, "Bands", x, 40+y, w/2, 18, &tex->stype, 2.0, (float)TEX_BANDNOISE, 0, 0, "Uses standard noise"); - uiDefButS(block, ROW, B_TEXPRV, "Rings", w/2+x, 40+y, w/2, 18, &tex->stype, 2.0, (float)TEX_RINGNOISE, 0, 0, "Lets Noise return RGB value"); - - uiDefButS(block, ROW, B_NODE_EXEC, "Sin", 0*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_SIN, 0, 0, "Uses a sine wave to produce bands."); - uiDefButS(block, ROW, B_NODE_EXEC, "Saw", 1*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_SAW, 0, 0, "Uses a saw wave to produce bands"); - uiDefButS(block, ROW, B_NODE_EXEC, "Tri", 2*w/3+x, 20+y, w/3, 18, &tex->noisebasis2, 8.0, (float)TEX_TRI, 0, 0, "Uses a triangle wave to produce bands"); - - uiDefButS(block, ROW, B_NODE_EXEC, "Soft noise", 0*w/2+x, 0+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise"); - uiDefButS(block, ROW, B_NODE_EXEC, "Hard noise", 1*w/2+x, 0+y, w/2, 19, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise"); - uiBlockEndAlign(block); + uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); + uiItemR(col, "", 0, &tex_ptr, "stype", 0); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND); + 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); break; case TEX_CLOUDS: - uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+60, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis used for turbulence"); - - uiBlockBeginAlign(block); - uiDefButS(block, ROW, B_TEXPRV, "B/W", x, y+38, w/2, 18, &tex->stype, 2.0, (float)TEX_DEFAULT, 0, 0, "Uses standard noise"); - uiDefButS(block, ROW, B_TEXPRV, "Color", w/2+x, y+38, w/2, 18, &tex->stype, 2.0, (float)TEX_COLOR, 0, 0, "Lets Noise return RGB value"); - uiDefButS(block, ROW, B_TEXPRV, "Soft", x, y+20, w/2, 18, &tex->noisetype, 12.0, (float)TEX_NOISESOFT, 0, 0, "Generates soft noise"); - uiDefButS(block, ROW, B_TEXPRV, "Hard", w/2+x, y+20, w/2, 18, &tex->noisetype, 12.0, (float)TEX_NOISEPERL, 0, 0, "Generates hard noise"); - uiBlockEndAlign(block); - - uiDefButS(block, NUM, B_TEXPRV, "Depth:", x, y, w, 18, &tex->noisedepth, 0.0, 6.0, 0, 0, "Sets the depth of the cloud calculation"); + uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND); + 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); break; case TEX_DISTNOISE: - uiBlockBeginAlign(block); - uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y+18, w, 18, &tex->noisebasis2, 0,0,0,0, "Sets the noise basis to distort"); - uiDefButS(block, MENU, B_TEXPRV, noisebasis_menu(), x, y, w, 18, &tex->noisebasis, 0,0,0,0, "Sets the noise basis which does the distortion"); - uiBlockEndAlign(block); + uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); + uiItemR(col, "", 0, &tex_ptr, "noise_distortion", 0); break; } } diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index ceb78d8cddf..be38139ce4e 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -114,6 +114,7 @@ static void rna_Texture_update(bContext *C, PointerRNA *ptr) WM_event_add_notifier(C, NC_TEXTURE, tex); } +/* Used for Texture Properties, used (also) for/in Nodes */ static void rna_Texture_nodes_update(bContext *C, PointerRNA *ptr) { Tex *tex= ptr->id.data; @@ -784,25 +785,25 @@ static void rna_def_texture_clouds(BlenderRNA *brna) RNA_def_property_range(prop, 0, INT_MAX); RNA_def_property_ui_range(prop, 0, 6, 0, 2); RNA_def_property_ui_text(prop, "Noise Depth", "Sets the depth of the cloud calculation"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisebasis"); RNA_def_property_enum_items(prop, prop_noise_basis_items); RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisetype"); RNA_def_property_enum_items(prop, prop_noise_type); RNA_def_property_ui_text(prop, "Noise Type", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "stype"); RNA_def_property_enum_items(prop, prop_clouds_stype); RNA_def_property_ui_text(prop, "Color", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.001, 0.1); @@ -851,25 +852,25 @@ static void rna_def_texture_wood(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "noisebasis"); RNA_def_property_enum_items(prop, prop_noise_basis_items); RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisetype"); RNA_def_property_enum_items(prop, prop_noise_type); RNA_def_property_ui_text(prop, "Noise Type", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "stype"); RNA_def_property_enum_items(prop, prop_wood_stype); RNA_def_property_ui_text(prop, "Pattern", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisebasis2"); RNA_def_property_enum_items(prop, prop_wood_noisebasis2); RNA_def_property_ui_text(prop, "Noise Basis 2", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.001, 0.1); @@ -925,25 +926,25 @@ static void rna_def_texture_marble(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "noisetype"); RNA_def_property_enum_items(prop, prop_noise_type); RNA_def_property_ui_text(prop, "Noise Type", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "stype", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "stype"); RNA_def_property_enum_items(prop, prop_marble_stype); RNA_def_property_ui_text(prop, "Pattern", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisebasis"); RNA_def_property_enum_items(prop, prop_noise_basis_items); RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisebasis2"); RNA_def_property_enum_items(prop, prop_marble_noisebasis2); RNA_def_property_ui_text(prop, "Noise Basis 2", ""); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.001, 0.1); @@ -1005,13 +1006,13 @@ static void rna_def_texture_blend(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "stype"); RNA_def_property_enum_items(prop, prop_blend_progression); RNA_def_property_ui_text(prop, "Progression", "Sets the style of the color blending"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "flip_axis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, prop_flip_axis_items); RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); } @@ -1500,13 +1501,13 @@ static void rna_def_texture_distorted_noise(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "noisebasis2"); RNA_def_property_enum_items(prop, prop_noise_basis_items); RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "noise_distortion", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "noisebasis"); RNA_def_property_enum_items(prop, prop_noise_basis_items); RNA_def_property_ui_text(prop, "Noise Distortion", "Sets the noise basis for the distortion"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.001, 0.1); -- cgit v1.2.3 From 8821f7d7eab7bc8e928805523dd26c275e095241 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 5 Dec 2009 21:54:46 +0000 Subject: 2.5 Nodes: * Node listener missed "ND_SHADING_DRAW". --- source/blender/editors/space_node/space_node.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index f5c6efa2fb8..b0ce1a6bd3e 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -182,6 +182,8 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) case NC_MATERIAL: if(wmn->data==ND_SHADING) ED_area_tag_refresh(sa); + else if(wmn->data==ND_SHADING_DRAW) + ED_area_tag_refresh(sa); break; case NC_TEXTURE: if(wmn->data==ND_NODES) -- cgit v1.2.3 From 5ebe54f470c364ff4ea86d15198225295092963e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 5 Dec 2009 22:03:07 +0000 Subject: pep8 edits and fix some warnings --- release/scripts/modules/bpy/__init__.py | 8 +- release/scripts/modules/bpy/ops.py | 2 +- release/scripts/modules/bpy/utils.py | 16 +- release/scripts/modules/bpy_types.py | 66 ++++--- release/scripts/modules/dynamic_menu.py | 7 + release/scripts/modules/graphviz_export.py | 76 +++++---- release/scripts/modules/retopo.py | 12 +- release/scripts/modules/rigify/__init__.py | 217 ++++++++++++------------ release/scripts/modules/rigify/arm.py | 140 +++++++-------- release/scripts/modules/rigify/delta.py | 63 +++---- release/scripts/modules/rigify/finger.py | 106 ++++++------ release/scripts/modules/rigify/leg.py | 93 +++++----- release/scripts/modules/rigify/neck.py | 65 +++---- release/scripts/modules/rigify/palm.py | 65 +++---- release/scripts/modules/rigify/spine.py | 129 +++++++------- release/scripts/modules/rna_prop_ui.py | 22 --- release/scripts/op/object.py | 6 +- source/blender/editors/space_graph/graph_edit.c | 1 - 18 files changed, 562 insertions(+), 532 deletions(-) diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 72ef4ae3bd8..7dfa403a54f 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + # internal blender C module import _bpy from _bpy import types, props @@ -38,8 +40,8 @@ def load_scripts(reload_scripts=False): import os import traceback import time - - + + t_main = time.time() def test_import(module_name): @@ -52,7 +54,7 @@ def load_scripts(reload_scripts=False): except: traceback.print_exc() return None - + for base_path in utils.script_paths(): for path_subdir in ("ui", "op", "io"): diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index c8218d6703c..c8ca9bc77fc 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -59,7 +59,7 @@ class bpy_ops(object): def add(self, pyop): op_add(pyop) - + def add_macro(self, pyop): op_add_macro(pyop) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index c2830bf10cd..76e8b011628 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy import os @@ -58,7 +60,7 @@ _scripts = (os.path.normpath(_scripts), ) def script_paths(*args): scripts = list(_scripts) - + # add user scripts dir user_script_path = bpy.context.user_preferences.filepaths.python_scripts_directory @@ -84,11 +86,11 @@ def script_paths(*args): return script_paths -_presets = os.path.join(_scripts[0], "presets") # FIXME - multiple paths +_presets = os.path.join(_scripts[0], "presets") # FIXME - multiple paths def preset_paths(subdir): - ''' - Returns a list of paths for a spesific preset. - ''' - - return (os.path.join(_presets, subdir), ) + ''' + Returns a list of paths for a spesific preset. + ''' + + return (os.path.join(_presets, subdir), ) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 5a8d6ceedf6..1a3f2da2c97 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -15,6 +15,9 @@ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # ##### END GPL LICENSE BLOCK ##### + +# + from _bpy import types as bpy_types StructRNA = bpy_types.Struct.__bases__[0] @@ -57,7 +60,7 @@ class _GenericBone: ''' # use the name so different types can be tested. name = parent_test.name - + parent = self.parent i = 1 while parent: @@ -65,7 +68,7 @@ class _GenericBone: return i parent = parent.parent i += 1 - + return 0 @property @@ -76,19 +79,19 @@ class _GenericBone: def parent_recursive(self): parent_list = [] parent = self.parent - + while parent: if parent: parent_list.append(parent) - + parent = parent.parent - + return parent_list @property def length(self): return (self.head - self.tail).length - + @length.setter def length(self, value): """The distance from head to tail""" @@ -105,7 +108,7 @@ class _GenericBone: index = bone.parent_index(self) if index: bones_children.append((index, bone)) - + # sort by distance to parent bones_children.sort(key=lambda bone_pair: bone_pair[0]) return [bone for index, bone in bones_children] @@ -136,21 +139,21 @@ class _GenericBone: print("multiple basenames found, this is probably not what you want!", bone.name, children_basename) break - + return chain @property def _other_bones(self): id_data = self.id_data id_data_type = type(id_data) - + if id_data_type == bpy_types.Object: bones = id_data.pose.bones elif id_data_type == bpy_types.Armature: bones = id_data.edit_bones if not bones: # not in editmode bones = id_data.bones - + return bones @@ -166,34 +169,36 @@ class EditBone(StructRNA, _GenericBone): pass -def ord_ind(i1,i2): - if i1 + import bpy + def collect_baseclasses(_class, bases): if _class is type or _class is object: @@ -29,6 +32,7 @@ def collect_baseclasses(_class, bases): return bases + def collect_subclasses(_class, subs): if _class is type or _class is object: @@ -40,6 +44,7 @@ def collect_subclasses(_class, subs): return subs + class DynMenu(bpy.types.Menu): def draw(self, context): @@ -61,6 +66,7 @@ class DynMenu(bpy.types.Menu): subclass.internal_draw(self, context) # print("subclass.internal_draw", subclass.internal_draw) + def setup(menu_class): ''' Setup subclasses (not needed when self.add() is used) @@ -88,6 +94,7 @@ def setup(menu_class): root_class.draw = DynMenu.draw + def add(menu_class, func): ''' Add a single function directly without having to make a class diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 5227237c51b..8f9f2c01ad5 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy header = ''' @@ -28,6 +30,7 @@ footer = ''' } ''' + def compat_str(text, line_length=0): if line_length: @@ -35,28 +38,29 @@ def compat_str(text, line_length=0): while len(text) > line_length: text_ls.append(text[:line_length]) text = text[line_length:] - + if text: text_ls.append(text) text = '\n '.join(text_ls) - - + + #text = text.replace('.', '.\n') #text = text.replace(']', ']\n') text = text.replace("\n", "\\n") text = text.replace('"', '\\"') return "* " + text + def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=False): CONSTRAINTS = DRIVERS = True - - file = open(path, "w") - fw = file.write + + fileobject = open(path, "w") + fw = fileobject.write fw(header) fw('label = "%s::%s" ;' % (bpy.data.filename.split("/")[-1].split("\\")[-1], obj.name)) - + arm = obj.data - + bones = [bone.name for bone in arm.bones] bones.sort() print("") @@ -65,37 +69,37 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, print(">>", bone, ["*>", "->"][b.connected], getattr(getattr(b, "parent", ""), "name", "")) label = [bone] bone = arm.bones[bone] - + for key, value in obj.pose.bones[bone.name].items(): if key.startswith("_"): continue - + if type(value) == float: value = "%.3f" % value elif type(value) == str: value = compat_str(value) - + label.append("%s = %s" % (key, value)) - + opts = ["shape=box", "regular=1", "style=filled", "fixedsize=false", 'label="%s"' % compat_str('\n'.join(label))] - + if bone.name.startswith('ORG'): opts.append("fillcolor=yellow") else: opts.append("fillcolor=white") - - + + fw('"%s" [%s];\n' % (bone.name, ','.join(opts))) - + fw('\n\n# Hierarchy:\n') - + # Root node. if FAKE_PARENT: fw('"Object::%s" [];\n' % obj.name) - + for bone in bones: bone = arm.bones[bone] - + parent = bone.parent if parent: parent_name = parent.name @@ -105,14 +109,14 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, connected = False else: continue - + opts = ["dir=forward", "weight=2", "arrowhead=normal"] if not connected: opts.append("style=dotted") - + fw('"%s" -> "%s" [%s] ;\n' % (bone.name, parent_name, ','.join(opts))) - del bone - + del bone + # constraints if CONSTRAINTS: fw('\n\n# Constraints:\n') @@ -128,10 +132,11 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, label = "%s\n%s" % (constraint.type, constraint.name) opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) - + # Drivers if DRIVERS: fw('\n\n# Drivers:\n') + def rna_path_as_pbone(rna_path): if not rna_path.startswith("pose.bones["): return None @@ -140,33 +145,33 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, #return obj.path_resolve(rna_path_bone) bone_name = rna_path.split("[")[1].split("]")[0] return obj.pose.bones[bone_name[1:-1]] - + animation_data = obj.animation_data if animation_data: - + fcurve_drivers = [fcurve_driver for fcurve_driver in animation_data.drivers] fcurve_drivers.sort(key=lambda fcurve_driver: fcurve_driver.rna_path) - + for fcurve_driver in fcurve_drivers: rna_path = fcurve_driver.rna_path pbone = rna_path_as_pbone(rna_path) - + if pbone: for target in fcurve_driver.driver.targets: pbone_target = rna_path_as_pbone(target.rna_path) rna_path_target = target.rna_path if pbone_target: - opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # , + opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # , display_source = rna_path.replace("pose.bones", "") display_target = rna_path_target.replace("pose.bones", "") if XTRA_INFO: label = "%s\\n%s" % (display_source, display_target) opts.append('label="%s"' % compat_str(label)) fw('"%s" -> "%s" [%s] ;\n' % (pbone_target.name, pbone.name, ','.join(opts))) - + fw(footer) - file.close() - + fileobject.close() + ''' print(".", end='') import sys @@ -176,8 +181,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, return True if __name__ == "__main__": - import bpy import os - path ="/tmp/test.dot" - graph_armature(bpy.context.object, path, CONSTRAINTS=True, DRIVERS=True) - os.system("dot -Tpng %s > %s; eog %s &" % (path, path + '.png', path + '.png')) + tmppath = "/tmp/test.dot" + graph_armature(bpy.context.object, tmppath, CONSTRAINTS=True, DRIVERS=True) + os.system("dot -Tpng %s > %s; eog %s &" % (tmppath, tmppath + '.png', tmppath + '.png')) diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index 0bf822c9ed4..e554881c87b 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -118,7 +118,7 @@ class Hub(object): return faces -class Spline: +class Spline(object): __slots__ = "points", "hubs", "length" def __init__(self, points): @@ -170,13 +170,15 @@ def get_points(stroke): def get_splines(gp): + l = None for l in gp.layers: if l.active: # XXX - should be layers.active break - - frame = l.active_frame - - return [Spline(get_points(stroke)) for stroke in frame.strokes] + if l: + frame = l.active_frame + return [Spline(get_points(stroke)) for stroke in frame.strokes] + else: + return [] def xsect_spline(sp_a, sp_b, _hubs): diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 94f509a40e9..c67af38df8a 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -16,25 +16,29 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from Mathutils import Vector # TODO, have these in a more general module -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from rna_prop_ui import rna_idprop_ui_prop_get empty_layer = [False] * 32 + def auto_class(slots, name="ContainerClass", class_dict=None): - + if class_dict: class_dict = class_dict.copy() else: class_dict = {} class_dict["__slots__"] = tuple(slots) - + return type(name, (object,), class_dict) - + + def auto_class_instance(slots, name="ContainerClass", class_dict=None): return auto_class(slots, name, class_dict)() @@ -46,7 +50,7 @@ def _bone_class_instance_update(self): bbones = arm.bones pbones = self.obj.pose.bones ebones = arm.edit_bones - + for member in self.attr_names: name = getattr(self, member, None) if name is not None: @@ -58,16 +62,16 @@ def _bone_class_instance_update(self): def _bone_class_instance_rename(self, attr, new_name): ''' Rename bones, editmode only ''' - + if self.obj.mode != 'EDIT': raise Exception("Only rename in editmode supported") - + ebone = getattr(self, attr + "_e") ebone.name = new_name - + # we may not get what is asked for so get the name from the editbone setattr(self, attr, ebone.name) - + def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): from_name_ls = [] @@ -78,7 +82,7 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): bone_name_orig = getattr(self, attr) ebone = getattr(self, attr + "_e") # orig_names[attr] = bone_name_orig - + # insert prefix if from_prefix: bone_name = from_prefix + bone_name_orig @@ -86,14 +90,14 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): bone_name = ebone.name # cant be sure we get what we ask for else: bone_name = bone_name_orig - + setattr(self, attr, bone_name) new_slot_ls.append(attr) from_name_ls.append(bone_name) bone_name_orig = bone_name_orig.replace("ORG-", "") # XXX - we need a better way to do this new_name_ls.append(to_prefix + bone_name_orig) - + new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) new_bc = bone_class_instance(self.obj, new_slot_ls) @@ -104,28 +108,31 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): return new_bc + def _bone_class_instance_names(self): return [getattr(self, attr) for attr in self.attr_names] + def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend"): ''' Use for blending bone chains. - + blend_target = (bone_name, bone_property) default to the last bone, blend prop - + XXX - toggles editmode, need to re-validate all editbones :( ''' if self.attr_names != from_bc.attr_names or self.attr_names != to_bc.attr_names: raise Exception("can only blend between matching chains") - + apply_bones = [getattr(self, attr) for attr in self.attr_names] from_bones = [getattr(from_bc, attr) for attr in from_bc.attr_names] to_bones = [getattr(to_bc, attr) for attr in to_bc.attr_names] - + blend_bone_list(self.obj, apply_bones, from_bones, to_bones, target_bone, target_prop) + def bone_class_instance(obj, slots, name="BoneContainer"): attr_names = tuple(slots) # dont modify the original slots = list(slots) # dont modify the original @@ -136,20 +143,18 @@ def bone_class_instance(obj, slots, name="BoneContainer"): slots.append(member + "_e") # edit bone class_dict = { \ - "obj":obj, \ - "attr_names":attr_names, \ - "update":_bone_class_instance_update, \ - "rename":_bone_class_instance_rename, \ - "names":_bone_class_instance_names, \ - "copy":_bone_class_instance_copy, \ - "blend":_bone_class_instance_blend, \ + "obj": obj, \ + "attr_names": attr_names, \ + "update": _bone_class_instance_update, \ + "rename": _bone_class_instance_rename, \ + "names": _bone_class_instance_names, \ + "copy": _bone_class_instance_copy, \ + "blend": _bone_class_instance_blend, \ } instance = auto_class_instance(slots, name, class_dict) return instance -def gen_none(obj, orig_bone_name): - pass def get_bone_data(obj, bone_name): arm = obj.data @@ -158,9 +163,10 @@ def get_bone_data(obj, bone_name): bone = arm.edit_bones[bone_name] else: bone = arm.bones[bone_name] - + return arm, pbone, bone + def copy_bone_simple(arm, from_bone, name, parent=False): ebone = arm.edit_bones[from_bone] ebone_new = arm.edit_bones.new(name) @@ -168,7 +174,7 @@ def copy_bone_simple(arm, from_bone, name, parent=False): if parent: ebone_new.connected = ebone.connected ebone_new.parent = ebone.parent - + ebone_new.head = ebone.head ebone_new.tail = ebone.tail ebone_new.roll = ebone.roll @@ -176,11 +182,10 @@ def copy_bone_simple(arm, from_bone, name, parent=False): def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): - dup_bones = {} - + if len(from_bones) != len(to_bones): raise Exception("bone list sizes must match") - + copy_bones = [copy_bone_simple(arm, bone_name, to_bones[i], True) for i, bone_name in enumerate(from_bones)] # now we need to re-parent @@ -196,14 +201,15 @@ def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): ebone.parent = None else: ebone.parent = copy_bones[i] - + return copy_bones + def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend"): - + if obj.mode == 'EDIT': raise Exception("blending cant be called in editmode") - + # setup the blend property if target_bone is None: target_bone = apply_bones[-1] # default to the last bone @@ -223,7 +229,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = driver_path - + def blend_location(new_pbone, from_bone_name, to_bone_name): con = new_pbone.constraints.new('COPY_LOCATION') con.target = obj @@ -232,7 +238,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta con = new_pbone.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = to_bone_name - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver driver.type = 'AVERAGE' @@ -248,7 +254,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta con = new_pbone.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = to_bone_name - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver driver.type = 'AVERAGE' @@ -259,7 +265,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta for i, new_bone_name in enumerate(apply_bones): from_bone_name = from_bones[i] to_bone_name = to_bones[i] - + # allow skipping some bones by having None in the list if None in (new_bone_name, from_bone_name, to_bone_name): continue @@ -268,7 +274,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta if not new_pbone.bone.connected: blend_location(new_pbone, from_bone_name, to_bone_name) - + blend_rotation(new_pbone, from_bone_name, to_bone_name) @@ -276,7 +282,7 @@ def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another ''' - + mode_orig = obj.mode bpy.ops.object.mode_set(mode='EDIT') @@ -284,10 +290,10 @@ def add_stretch_to(obj, from_name, to_name, name): stretch_ebone = arm.edit_bones.new(name) stretch_name = stretch_ebone.name del name - + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() - + # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter #if (head - tail).length < 0.1: if 1: @@ -296,18 +302,16 @@ def add_stretch_to(obj, from_name, to_name, name): # Now for the constraint bpy.ops.object.mode_set(mode='OBJECT') - from_pbone = obj.pose.bones[from_name] - to_pbone = obj.pose.bones[to_name] - + stretch_pbone = obj.pose.bones[stretch_name] - + con = stretch_pbone.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = from_name - + con = stretch_pbone.constraints.new('STRETCH_TO') con.target = obj - con.subtarget = to_name + con.subtarget = to_name con.original_length = (head - tail).length con.keep_axis = 'PLANE_X' con.volume = 'NO_VOLUME' @@ -321,41 +325,41 @@ def add_pole_target_bone(obj, base_name, name, mode='CROSS'): ''' mode_orig = obj.mode bpy.ops.object.mode_set(mode='EDIT') - + arm = obj.data - + poll_ebone = arm.edit_bones.new(base_name + "_poll") base_ebone = arm.edit_bones[base_name] poll_name = poll_ebone.name parent_ebone = base_ebone.parent - + base_head = base_ebone.head.copy() base_tail = base_ebone.tail.copy() base_dir = base_head - base_tail - + parent_head = parent_ebone.head.copy() parent_tail = parent_ebone.tail.copy() parent_dir = parent_head - parent_tail - + distance = (base_dir.length + parent_dir.length) - + if mode == 'CROSS': offset = base_dir.copy().normalize() - parent_dir.copy().normalize() offset.length = distance else: - offset = Vector(0,0,0) - if mode[0]=="+": + offset = Vector(0, 0, 0) + if mode[0] == "+": val = distance else: - val = -distance - + val = - distance + setattr(offset, mode[1].lower(), val) - + poll_ebone.head = base_head + offset poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) - + bpy.ops.object.mode_set(mode=mode_orig) - + return poll_name @@ -366,8 +370,8 @@ def generate_rig(context, obj_orig, prefix="ORG-"): context.user_preferences.edit.global_undo = False bpy.ops.object.mode_set(mode='OBJECT') - - + + # copy object and data obj_orig.selected = False obj = obj_orig.copy() @@ -376,30 +380,30 @@ def generate_rig(context, obj_orig, prefix="ORG-"): scene.objects.link(obj) scene.objects.active = obj obj.selected = True - + arm = obj.data - + # original name mapping base_names = {} - + bpy.ops.object.mode_set(mode='EDIT') for bone in arm.edit_bones: bone_name = bone.name bone.name = prefix + bone_name base_names[bone.name] = bone_name # new -> old mapping bpy.ops.object.mode_set(mode='OBJECT') - + # key: bone name # value: {type:definition, ...} # where type is the submodule name - leg, arm etc - # and definition is a list of bone names + # and definition is a list of bone names bone_definitions = {} - + # key: bone name # value: [functions, ...] # each function is from the module. eg leg.ik, arm.main bone_typeinfos = {} - + # inspect all bones and assign their definitions before modifying for pbone in obj.pose.bones: bone_name = pbone.name @@ -408,79 +412,79 @@ def generate_rig(context, obj_orig, prefix="ORG-"): for bone_type in bone_type_list: type_pair = bone_type.split(".") - + # 'leg.ik' will look for an ik function in the leg module # 'leg' will look up leg.main if len(type_pair) == 1: type_pair = type_pair[0], "main" - + submod_name, func_name = type_pair - + # from rigify import leg submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) reload(submod) - + bone_def_dict = bone_definitions.setdefault(bone_name, {}) # Only calculate bone definitions once if submod_name not in bone_def_dict: metarig_definition_func = getattr(submod, "metarig_definition") bone_def_dict[submod_name] = metarig_definition_func(obj, bone_name) - - + + bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) type_func = getattr(submod, func_name) bone_typeinfo.append((submod_name, type_func)) - + # now we have all the info about bones we can start operating on them - + for pbone in obj.pose.bones: bone_name = pbone.name - + if bone_name not in bone_typeinfos: continue - + bone_def_dict = bone_definitions[bone_name] - + # Only blend results from the same submodule, eg. # leg.ik and arm.fk could not be blended. results = OrderedDict() - + for submod_name, type_func in bone_typeinfos[bone_name]: # this bones definition of the current typeinfo definition = bone_def_dict[submod_name] - + bpy.ops.object.mode_set(mode='EDIT') ret = type_func(obj, definition, base_names) bpy.ops.object.mode_set(mode='OBJECT') - if ret: + if ret: result_submod = results.setdefault(submod_name, []) - + if result_submod and len(result_submod[-1]) != len(ret): raise Exception("bone lists not compatible: %s, %s" % (result_submod[-1], ret)) result_submod.append(ret) - + for result_submod in results.values(): # blend 2 chains definition = bone_def_dict[submod_name] - + if len(result_submod) == 2: blend_bone_list(obj, definition, result_submod[0], result_submod[1]) - + # needed to update driver deps # context.scene.update() - + # Only for demo'ing - + # obj.restrict_view = True obj.data.draw_axes = False - + context.user_preferences.edit.global_undo = global_undo - + return obj @@ -503,8 +507,7 @@ def write_meta_rig(obj, func_name="metarig_template"): bones.sort(key=lambda item: item[0]) bones = [item[1] for item in bones] - - + for bone_name in bones: bone = arm.edit_bones[bone_name] code.append(" bone = arm.edit_bones.new('%s')" % bone.name) @@ -514,15 +517,15 @@ def write_meta_rig(obj, func_name="metarig_template"): code.append(" bone.connected = %s" % str(bone.connected)) if bone.parent: code.append(" bone.parent = arm.edit_bones['%s']" % bone.parent.name) - + bpy.ops.object.mode_set(mode='OBJECT') code.append("") code.append(" bpy.ops.object.mode_set(mode='OBJECT')") - + for bone_name in bones: pbone = obj.pose.bones[bone_name] pbone_written = False - + # Only 1 level of props, simple types supported for key, value in pbone.items(): if key.startswith("_"): @@ -534,20 +537,21 @@ def write_meta_rig(obj, func_name="metarig_template"): if type(value) == str: value = "'" + value + "'" - + if not pbone_written: # only write bones we need code.append(" pbone = obj.pose.bones['%s']" % bone_name) - + code.append(" pbone['%s'] = %s" % (key, value)) - + return "\n".join(code) def generate_test(context): import os new_objects = [] - + scene = context.scene + def create_empty_armature(name): obj_new = bpy.data.add_object('ARMATURE', name) armature = bpy.data.add_armature(name) @@ -573,11 +577,11 @@ def generate_test(context): metarig_template() obj = context.object obj_new = generate_rig(context, obj) - + new_objects.append((obj, obj_new)) else: print("note: rig type '%s' has no metarig_template(), can't test this", module_name) - + return new_objects @@ -587,14 +591,14 @@ def generate_test_all(context): import os reload(rigify) reload(graphviz_export) - + new_objects = rigify.generate_test(context) - + base_name = os.path.splitext(bpy.data.filename)[0] for obj, obj_new in new_objects: for obj in (obj, obj_new): fn = base_name + "-" + bpy.utils.clean_name(obj.name) - + path_dot = fn + ".dot" path_png = fn + ".png" saved = graphviz_export.graph_armature(obj, path_dot, CONSTRAINTS=True, DRIVERS=True) @@ -610,8 +614,7 @@ def generate_test_all(context): obj_new.selected = False obj.selected = True i += 4 - + if __name__ == "__main__": generate_rig(bpy.context, bpy.context.object) - diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 56b607fbd41..4e0d8642831 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -16,12 +16,15 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = "shoulder", "arm", "forearm", "hand" + def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object @@ -59,10 +62,10 @@ def metarig_definition(obj, orig_bone_name): mt = bone_class_instance(obj, METARIG_NAMES) # meta mt.arm = orig_bone_name mt.update() - + mt.shoulder_p = mt.arm_p.parent mt.shoulder = mt.shoulder_p.name - + if not mt.shoulder_p: raise Exception("could not find 'arm' parent, skipping:", orig_bone_name) @@ -82,7 +85,7 @@ def metarig_definition(obj, orig_bone_name): mt.forearm_p = mt.hand_p.parent mt.forearm = mt.forearm_p.name - + return mt.names() @@ -91,35 +94,34 @@ def main(obj, definitions, base_names): the bone with the 'arm' property is the upper arm, this assumes a chain as follows. [shoulder, upper_arm, forearm, hand] ...where this bone is 'upper_arm' - + there are 3 chains - Original - IK, MCH-%s_ik - IKSwitch, MCH-%s () - - + + """ - + # Since there are 3 chains, this gets confusing so divide into 3 chains # Initialize container classes for convenience mt = bone_class_instance(obj, METARIG_NAMES) # meta mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions - + ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras - + arm = obj.data - - + def chain_ik(prefix="MCH-%s_ik"): - + mt.update() - + # Add the edit bones ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) ik.hand = ik.hand_e.name - + ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) ik.arm = ik.arm_e.name @@ -128,50 +130,50 @@ def main(obj, definitions, base_names): ik.arm_e.parent = mt.arm_e.parent ik.forearm_e.connected = mt.arm_e.connected - + ik.forearm_e.parent = ik.arm_e ik.forearm_e.connected = True - - + + # Add the bone used for the arms poll target ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') - + bpy.ops.object.mode_set(mode='OBJECT') - + ik.update() - + con = ik.forearm_p.constraints.new('IK') con.target = obj con.subtarget = ik.hand con.pole_target = obj con.pole_subtarget = ik.pole - + con.use_tail = True con.use_stretch = True con.use_target = True - con.use_rotation = False + con.use_rotation = False con.chain_length = 2 con.pole_angle = -90.0 # XXX, RAD2DEG - + # ID Propery on the hand for IK/FK switch - + prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) ik.hand_p["ik"] = 0.5 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + bpy.ops.object.mode_set(mode='EDIT') - + ik.arm = ik.arm ik.forearm = ik.forearm ik.hand = ik.hand ik.pole = ik.pole - + def chain_switch(prefix="MCH-%s"): - + sw.update() mt.update() - + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) sw.shoulder = sw.shoulder_e.name sw.shoulder_e.parent = mt.shoulder_e.parent @@ -181,7 +183,7 @@ def main(obj, definitions, base_names): sw.arm = sw.arm_e.name sw.arm_e.parent = sw.shoulder_e sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected - + sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) sw.forearm = sw.forearm_e.name sw.forearm_e.parent = sw.arm_e @@ -191,25 +193,24 @@ def main(obj, definitions, base_names): sw.hand = sw.hand_e.name sw.hand_e.parent = sw.forearm_e sw.hand_e.connected = arm.edit_bones[mt.hand].connected - + # The sw.hand_e needs to own all the children on the metarig's hand for child in mt.hand_e.children: child.parent = sw.hand_e - - + + # These are made the children of sw.shoulder_e - - + + bpy.ops.object.mode_set(mode='OBJECT') - + # Add constraints sw.update() - + #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple - + ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' - - + def ik_fk_driver(con): ''' 3 bones use this for ik/fk switching @@ -235,7 +236,7 @@ def main(obj, definitions, base_names): con.subtarget = ik.arm con.influence = 0.5 ik_fk_driver(con) - + # *********** con = sw.forearm_p.constraints.new('COPY_ROTATION') con.name = "FK" @@ -248,7 +249,7 @@ def main(obj, definitions, base_names): con.subtarget = ik.forearm con.influence = 0.5 ik_fk_driver(con) - + # *********** con = sw.hand_p.constraints.new('COPY_ROTATION') con.name = "FK" @@ -261,52 +262,51 @@ def main(obj, definitions, base_names): con.subtarget = ik.hand con.influence = 0.5 ik_fk_driver(con) - - + + add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") - - bpy.ops.object.mode_set(mode='EDIT') + bpy.ops.object.mode_set(mode='EDIT') def chain_shoulder(prefix="MCH-%s"): sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") sw.socket = sw.socket_e.name sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail - - + + # Set the shoulder as parent ik.update() sw.update() mt.update() - + sw.socket_e.parent = sw.shoulder_e ik.arm_e.parent = sw.shoulder_e - - + + # ***** add the shoulder hinge # yes this is correct, the shoulder copy gets the arm's name ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") ex.arm_hinge = ex.arm_hinge_e.name offset = ex.arm_hinge_e.length / 2.0 - + ex.arm_hinge_e.head.y += offset ex.arm_hinge_e.tail.y += offset - + # Note: meta arm becomes child of hinge mt.arm_e.parent = ex.arm_hinge_e - - + + bpy.ops.object.mode_set(mode='OBJECT') - + ex.update() - + con = mt.arm_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = sw.socket - - + + # Hinge constraint & driver con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') con.name = "hinge" @@ -315,35 +315,35 @@ def main(obj, definitions, base_names): driver_fcurve = con.driver_add("influence", 0) driver = driver_fcurve.driver - + controller_path = mt.arm_p.path_to_id() # add custom prop mt.arm_p["hinge"] = 0.0 prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - - + + # ***** driver = driver_fcurve.driver driver.type = 'AVERAGE' - + tar = driver.targets.new() tar.name = "hinge" tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = controller_path + '["hinge"]' - - + + bpy.ops.object.mode_set(mode='EDIT') - - # remove the shoulder and re-parent + + # remove the shoulder and re-parent chain_ik() chain_switch() chain_shoulder() - + # Shoulder with its delta and hinge. - + # TODO - return a list for fk and IK return None diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 74cfb6150d2..b26a8ebac1e 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -16,12 +16,15 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import get_bone_data # not used, defined for completeness METARIG_NAMES = tuple() + def metarig_definition(obj, orig_bone_name): ''' The bone given is the head, its parent is the body, @@ -32,68 +35,69 @@ def metarig_definition(obj, orig_bone_name): arm = obj.data delta = arm.bones[orig_bone_name] children = delta.children - + if len(children) != 1: print("only 1 child supported for delta") - + bone_definition = [delta.name, children[0].name] - + return bone_definition + def main(obj, bone_definition, base_names): ''' Use this bone to define a delta thats applied to its child in pose mode. ''' - + mode_orig = obj.mode bpy.ops.object.mode_set(mode='OBJECT') - + delta_name, child_name = bone_definition - + delta_pbone = obj.pose.bones[delta_name] arm, child_pbone, child_bone = get_bone_data(obj, child_name) - + delta_phead = delta_pbone.head.copy() delta_ptail = delta_pbone.tail.copy() delta_pmatrix = delta_pbone.matrix.copy() - + child_phead = child_pbone.head.copy() child_ptail = child_pbone.tail.copy() child_pmatrix = child_pbone.matrix.copy() - - + + children = delta_pbone.children bpy.ops.object.mode_set(mode='EDIT') - + delta_ebone = arm.edit_bones[delta_name] child_ebone = arm.edit_bones[child_name] - + delta_head = delta_ebone.head.copy() - delta_tail = delta_ebone.tail.copy() - + delta_tail = delta_ebone.tail.copy() + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) child_head = child_ebone.head.copy() child_tail = child_ebone.tail.copy() - + arm.edit_bones.remove(delta_ebone) del delta_ebone # cant use this - + bpy.ops.object.mode_set(mode='OBJECT') - - + + # Move the child bone to the deltas location obj.animation_data_create() child_pbone = obj.pose.bones[child_name] - + # ------------------- drivers - + child_pbone.rotation_mode = 'XYZ' - - rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() + + rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() rot = rot.invert().toEuler() - + fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) for i, fcurve_driver in enumerate(fcurve_drivers): driver = fcurve_driver.driver @@ -103,10 +107,10 @@ def main(obj, bone_definition, base_names): mod.poly_order = 1 mod.coefficients[0] = rot[i] mod.coefficients[1] = 0.0 - + # tricky, find the transform to drive the bone to this location. - delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) - + delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) + fcurve_drivers = child_pbone.driver_add("location", -1) for i, fcurve_driver in enumerate(fcurve_drivers): driver = fcurve_driver.driver @@ -116,13 +120,12 @@ def main(obj, bone_definition, base_names): mod.poly_order = 1 mod.coefficients[0] = delta_head_offset[i] mod.coefficients[1] = 0.0 - - + + # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) bpy.ops.object.mode_set(mode='EDIT') - + bpy.ops.object.mode_set(mode=mode_orig) # no blendeing return None - \ No newline at end of file diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index 44262e22bf6..baa9ed49041 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -16,13 +16,16 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import get_bone_data, empty_layer, copy_bone_simple -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce METARIG_NAMES = "finger_01", "finger_02", "finger_03" + def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object @@ -49,6 +52,7 @@ def metarig_template(): pbone = obj.pose.bones['finger.01'] pbone['type'] = 'finger' + def metarig_definition(obj, orig_bone_name): ''' The bone given is the first in a chain @@ -56,13 +60,13 @@ def metarig_definition(obj, orig_bone_name): eg. finger -> finger_01 -> finger_02 ''' - + bone_definition = [] orig_bone = obj.data.bones[orig_bone_name] bone_definition.append(orig_bone.name) - + bone = orig_bone chain = 0 while chain < 2: # first 2 bones only have 1 child @@ -73,102 +77,102 @@ def metarig_definition(obj, orig_bone_name): bone = children[0] bone_definition.append(bone.name) # finger_02, finger_03 chain += 1 - + if len(bone_definition) != len(METARIG_NAMES): raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) - + return bone_definition - + def main(obj, bone_definition, base_names): - + # *** EDITMODE - - # get assosiated data + + # get assosiated data arm, orig_pbone, orig_ebone = get_bone_data(obj, bone_definition[0]) - + obj.animation_data_create() # needed if its a new armature with no keys - + arm.layer[0] = arm.layer[8] = True - + children = orig_pbone.children_recursive tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - + base_name = base_names[bone_definition[0]].rsplit(".", 1)[0] - + # first make a new bone at the location of the finger #control_ebone = arm.edit_bones.new(base_name) control_ebone = copy_bone_simple(arm, bone_definition[0], base_name) control_bone_name = control_ebone.name # we dont know if we get the name requested - + control_ebone.connected = orig_ebone.connected control_ebone.parent = orig_ebone.parent control_ebone.length = tot_len - + # now add bones inbetween this and its children recursively - + # switching modes so store names only! children = [pbone.name for pbone in children] # set an alternate layer for driver bones other_layer = empty_layer[:] other_layer[8] = True - + driver_bone_pairs = [] for child_bone_name in children: - arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name) - + child_ebone = arm.edit_bones[child_bone_name] + # finger.02 --> finger_driver.02 driver_bone_name = child_bone_name.split('.') driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) - + driver_ebone = copy_bone_simple(arm, child_ebone.name, driver_bone_name) driver_ebone.length *= 0.5 driver_ebone.layer = other_layer - + # Insert driver_ebone in the chain without connected parents driver_ebone.connected = False driver_ebone.parent = child_ebone.parent - + child_ebone.connected = False child_ebone.parent = driver_ebone - + # Add the drivers to these when in posemode. driver_bone_pairs.append((child_bone_name, driver_bone_name)) - + del control_ebone - + # *** POSEMODE bpy.ops.object.mode_set(mode='OBJECT') - - - arm, orig_pbone, orig_bone = get_bone_data(obj, bone_definition[0]) - arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name) - - + + + orig_pbone = obj.pose.bones[bone_definition[0]] + control_pbone = obj.pose.bones[control_bone_name] + + # only allow Y scale control_pbone.lock_scale = (True, False, True) - + control_pbone["bend_ratio"] = 0.4 prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + con = orig_pbone.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = control_bone_name - + con = orig_pbone.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = control_bone_name - - - + + + # setup child drivers on each new smaller bone added. assume 2 for now. - + # drives the bones controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name @@ -176,18 +180,18 @@ def main(obj, bone_definition, base_names): for child_bone_name, driver_bone_name in driver_bone_pairs: # XXX - todo, any number - if i==2: + if i == 2: break - - arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name) - + + driver_pbone = obj.pose.bones[driver_bone_name] + driver_pbone.rotation_mode = 'YZX' fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) - + #obj.driver_add('pose.bones["%s"].scale', 1) #obj.animation_data.drivers[-1] # XXX, WATCH THIS driver = fcurve_driver.driver - + # scale target tar = driver.targets.new() tar.name = "scale" @@ -203,17 +207,17 @@ def main(obj, bone_definition, base_names): tar.rna_path = controller_path + '["bend_ratio"]' # XXX - todo, any number - if i==0: + if i == 0: driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' - elif i==1: + elif i == 1: driver.expression = '(-scale+1.0)*pi*2.0*br' - - arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name) + + child_pbone = obj.pose.bones[child_bone_name] # only allow X rotation driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) - + i += 1 - + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 1228e2ed78a..92bce0f3c2c 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -16,12 +16,15 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy -from rigify import bone_class_instance, copy_bone_simple, copy_bone_simple_list, add_pole_target_bone, add_stretch_to, blend_bone_list -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from rigify import bone_class_instance, copy_bone_simple, blend_bone_list +from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" + def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') @@ -67,6 +70,7 @@ def metarig_template(): pbone = obj.pose.bones['thigh'] pbone['type'] = 'leg' + def metarig_definition(obj, orig_bone_name): ''' The bone given is the first in a chain @@ -74,7 +78,7 @@ def metarig_definition(obj, orig_bone_name): eg. thigh -> shin -> foot -> [toe, heel] ''' - + bone_definition = [] orig_bone = obj.data.bones[orig_bone_name] @@ -85,8 +89,8 @@ def metarig_definition(obj, orig_bone_name): bone_definition.append(orig_bone_parent.name) bone_definition.append(orig_bone.name) - - + + bone = orig_bone chain = 0 while chain < 2: # first 2 bones only have 1 child @@ -97,7 +101,7 @@ def metarig_definition(obj, orig_bone_name): bone = children[0] bone_definition.append(bone.name) # shin, foot chain += 1 - + children = bone.children # Now there must be 2 children, only one connected if len(children) != 2: @@ -105,25 +109,24 @@ def metarig_definition(obj, orig_bone_name): if children[0].connected == children[1].connected: raise Exception("expected one bone to be connected") - + toe, heel = children if heel.connected: toe, heel = heel, toe - - + + bone_definition.append(toe.name) bone_definition.append(heel.name) - + if len(bone_definition) != len(METARIG_NAMES): raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) - + return bone_definition def ik(obj, bone_definition, base_names): - from Mathutils import Vector arm = obj.data - + # setup the existing bones mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) @@ -131,7 +134,7 @@ def ik(obj, bone_definition, base_names): ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) # children of ik_foot ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) - + # XXX - duplicate below for bone_class in (mt, mt_chain): for attr in bone_class.attr_names: @@ -155,13 +158,13 @@ def ik(obj, bone_definition, base_names): ik.foot = ik.foot_e.name ik.foot_e.tail.z = ik.foot_e.head.z ik.foot_e.roll = 0.0 - + # heel pointing backwards, half length ik.foot_roll_e = copy_bone_simple(arm, mt.heel, "%s_roll" % base_foot_name) ik.foot_roll = ik.foot_roll_e.name ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 ik.foot_roll_e.parent = ik.foot_e # heel is disconnected - + # heel pointing forwards to the toe base, parent of the following 2 bones ik.foot_roll_01_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.01" % base_foot_name) ik.foot_roll_01 = ik.foot_roll_01_e.name @@ -174,20 +177,20 @@ def ik(obj, bone_definition, base_names): ik.foot_roll_02_e.parent = ik.foot_roll_01_e # heel is disconnected ik.foot_roll_02_e.head = mt_chain.foot_e.tail ik.foot_roll_02_e.tail = mt.heel_e.head - + del base_foot_name - + # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 # ------------------ FK or IK? ik_chain.rename("toe", base_names[mt_chain.toe] + "_ik") ik_chain.toe_e.connected = False ik_chain.toe_e.parent = ik.foot_roll_01_e - - # re-parent ik_chain.foot to the + + # re-parent ik_chain.foot to the ik_chain.foot_e.connected = False ik_chain.foot_e.parent = ik.foot_roll_02_e - - + + # knee target is the heel moved up and forward on its local axis ik.knee_target_e = copy_bone_simple(arm, mt.heel, "knee_target") ik.knee_target = ik.knee_target_e.name @@ -209,7 +212,7 @@ def ik(obj, bone_definition, base_names): ex.update() mt_chain.update() ik_chain.update() - + # IK con = ik_chain.shin_p.constraints.new('IK') con.chain_length = 2 @@ -220,52 +223,51 @@ def ik(obj, bone_definition, base_names): con.use_target = True con.use_rotation = False con.weight = 1.0 - + con.target = obj con.subtarget = ik.foot - + con.pole_target = obj con.pole_subtarget = ik.knee_target - + # foot roll cons = [ \ (ik.foot_roll_01_p.constraints.new('COPY_ROTATION'), ik.foot_roll_01_p.constraints.new('LIMIT_ROTATION')), \ - (ik.foot_roll_02_p.constraints.new('COPY_ROTATION'), ik.foot_roll_02_p.constraints.new('LIMIT_ROTATION')) - ] - + (ik.foot_roll_02_p.constraints.new('COPY_ROTATION'), ik.foot_roll_02_p.constraints.new('LIMIT_ROTATION'))] + for con, con_l in cons: con.target = obj con.subtarget = ik.foot_roll con.use_x, con.use_y, con.use_z = True, False, False con.target_space = con.owner_space = 'LOCAL' - + con = con_l con.use_limit_x, con.use_limit_y, con.use_limit_z = True, False, False con.owner_space = 'LOCAL' - + if con_l is cons[-1][-1]: con.minimum_x = 0.0 con.maximum_x = 180.0 # XXX -deg else: con.minimum_x = -180.0 # XXX -deg con.maximum_x = 0.0 - + bpy.ops.object.mode_set(mode='EDIT') - + return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None def fk(obj, bone_definition, base_names): from Mathutils import Vector arm = obj.data - + # these account for all bones in METARIG_NAMES mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) - + # new bones ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge"]) - + for bone_class in (mt, mt_chain): for attr in bone_class.attr_names: i = METARIG_NAMES.index(attr) @@ -280,11 +282,11 @@ def fk(obj, bone_definition, base_names): ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=True) ex.thigh_hinge = ex.thigh_hinge_e.name ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) - ex.thigh_hinge_e.translate(Vector(-(mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) + ex.thigh_hinge_e.translate(Vector( - (mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) ex.thigh_hinge_e.length = mt.hips_e.length - + fk_chain = mt_chain.copy() # fk has no prefix! - + fk_chain.thigh_e.connected = False fk_chain.thigh_e.parent = ex.thigh_hinge_e @@ -303,14 +305,14 @@ def fk(obj, bone_definition, base_names): fk_chain.thigh_p["hinge"] = 0.5 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.hips - + # add driver hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver tar = driver.targets.new() @@ -324,15 +326,16 @@ def fk(obj, bone_definition, base_names): mod.poly_order = 1 mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 - + bpy.ops.object.mode_set(mode='EDIT') - + # dont blend the hips or heel return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None + def main(obj, bone_definition, base_names): bones_ik = ik(obj, bone_definition, base_names) bones_fk = fk(obj, bone_definition, base_names) - + bpy.ops.object.mode_set(mode='OBJECT') blend_bone_list(obj, bone_definition, bones_ik, bones_fk) diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index a075b797c1a..9a07f524a21 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -23,6 +25,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness METARIG_NAMES = ("body", "head") + def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object @@ -84,7 +87,7 @@ def metarig_definition(obj, orig_bone_name): arm = obj.data head = arm.bones[orig_bone_name] body = head.parent - + children = head.children if len(children) != 1: print("expected the head to have only 1 child.") @@ -97,7 +100,7 @@ def metarig_definition(obj, orig_bone_name): def main(obj, bone_definition, base_names): from Mathutils import Vector - + arm = obj.data # Initialize container classes for convenience @@ -115,12 +118,12 @@ def main(obj, bone_definition, base_names): neck_chain_basename = mt_chain.neck_01_e.basename neck_chain_segment_length = mt_chain.neck_01_e.length - - ex = bone_class_instance(obj, ["body", "head", "head_hinge","neck_socket"]) # hinge & extras - + + ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras + # Add the head hinge at the bodys location, becomes the parent of the original head - - + + # Copy the head bone and offset ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % mt.head, parent=True) ex.head = ex.head_e.name @@ -128,7 +131,7 @@ def main(obj, bone_definition, base_names): head_length = ex.head_e.length ex.head_e.head.y += head_length / 2.0 ex.head_e.tail.y += head_length / 2.0 - + # Yes, use the body bone but call it a head hinge ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % mt.head, parent=True) ex.head_hinge = ex.head_hinge_e.name @@ -137,7 +140,7 @@ def main(obj, bone_definition, base_names): # reparent the head, assume its not connected mt.head_e.parent = ex.head_hinge_e - + # Insert the neck socket, the head copys this loation ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) ex.neck_socket = ex.neck_socket_e.name @@ -145,60 +148,60 @@ def main(obj, bone_definition, base_names): ex.neck_socket_e.head = mt.head_e.head ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) ex.neck_socket_e.roll = 0.0 - + # offset the head, not really needed since it has a copyloc constraint mt.head_e.head.y += head_length / 4.0 mt.head_e.tail.y += head_length / 4.0 for i, attr in enumerate(mt_chain.attr_names): neck_e = getattr(mt_chain, attr + "_e") - + # dont store parent names, re-reference as each chain bones parent. neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) neck_e_parent.head = neck_e.head neck_e_parent.tail = neck_e.head + Vector(0.0, 0.0, neck_chain_segment_length / 2.0) neck_e_parent.roll = 0.0 - + orig_parent = neck_e.parent neck_e.connected = False neck_e.parent = neck_e_parent neck_e_parent.connected = False - + if i == 0: neck_e_parent.parent = mt.body_e else: neck_e_parent.parent = orig_parent - - + + bpy.ops.object.mode_set(mode='OBJECT') - + mt.update() mt_chain.update() ex.update() - + # Simple one off constraints, no drivers con = mt.head_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.neck_socket - + con = ex.head_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.head - + # driven hinge prop = rna_idprop_ui_prop_get(mt.head_p, "hinge", create=True) mt.head_p["hinge"] = 0.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + con = ex.head_hinge_p.constraints.new('COPY_ROTATION') con.name = "hinge" con.target = obj con.subtarget = mt.body - + # add driver hinge_driver_path = mt.head_p.path_to_id() + '["hinge"]' - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver tar = driver.targets.new() @@ -207,36 +210,36 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = hinge_driver_path - + #mod = fcurve_driver.modifiers.new('GENERATOR') mod = fcurve.modifiers[0] mod.poly_order = 1 mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 - + head_driver_path = mt.head_p.path_to_id() - + # b01/max(0.001,b01+b02+b03+b04+b05) target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] expression_suffix = "/max(0.001,%s)" % "+".join(target_names) - + for i, attr in enumerate(mt_chain.attr_names): neck_p = getattr(mt_chain, attr + "_p") neck_p.lock_location = True, True, True neck_p.lock_location = True, True, True neck_p.lock_rotations_4d = True - + # Add bend prop prop_name = "bend_%.2d" % (i + 1) prop = rna_idprop_ui_prop_get(mt.head_p, prop_name, create=True) mt.head_p[prop_name] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + # add parent constraint neck_p_parent = neck_p.parent - + # add constraint con = neck_p_parent.constraints.new('COPY_ROTATION') con.name = "Copy Rotation" @@ -244,7 +247,7 @@ def main(obj, bone_definition, base_names): con.subtarget = ex.head con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver driver.type = 'SCRIPTED' @@ -258,6 +261,6 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (j + 1)) - + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index ea90133e8af..861655dae5d 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -16,13 +16,16 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import get_bone_data, copy_bone_simple -from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get +from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness METARIG_NAMES = tuple() + def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object @@ -84,73 +87,73 @@ def metarig_definition(obj, orig_bone_name): arm = obj.data bone_definition = [orig_bone_name] palm_ebone = arm.bones[orig_bone_name] - + children = [ebone.name for ebone in palm_ebone.children] children.sort() # simply assume the pinky has the lowest name bone_definition.extend(children) - + return bone_definition def main(obj, bone_definition, base_names): arm, palm_pbone, palm_ebone = get_bone_data(obj, bone_definition[0]) children = bone_definition[1:] - + # Make a copy of the pinky # simply assume the pinky has the lowest name pinky_ebone = arm.edit_bones[children[0]] ring_ebone = arm.edit_bones[children[1]] - + control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) - control_name = control_ebone.name - + control_name = control_ebone.name + offset = (pinky_ebone.head - ring_ebone.head) - + control_ebone.translate(offset) - + bpy.ops.object.mode_set(mode='OBJECT') - - + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) - + control_pbone.rotation_mode = 'YZX' control_pbone.lock_rotation = False, True, True - + driver_fcurves = pinky_pbone.driver_add("rotation_euler") - - + + controller_path = control_pbone.path_to_id() - + # add custom prop control_pbone["spread"] = 0.0 prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) prop["soft_min"] = -1.0 prop["soft_max"] = 1.0 - - + + # ***** driver = driver_fcurves[0].driver driver.type = 'AVERAGE' - + tar = driver.targets.new() tar.name = "x" tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = controller_path + ".rotation_euler[0]" - - + + # ***** driver = driver_fcurves[1].driver driver.expression = "-x/4.0" - + tar = driver.targets.new() tar.name = "x" tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = controller_path + ".rotation_euler[0]" - - + + # ***** driver = driver_fcurves[2].driver driver.expression = "(1.0-cos(x))-s" @@ -159,7 +162,7 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = controller_path + ".rotation_euler[0]" - + tar = driver.targets.new() tar.name = "s" tar.id_type = 'OBJECT' @@ -170,17 +173,17 @@ def main(obj, bone_definition, base_names): for i, child_name in enumerate(children): child_pbone = obj.pose.bones[child_name] child_pbone.rotation_mode = 'YZX' - + if child_name != children[-1] and child_name != children[0]: - + # this is somewhat arbitrary but seems to look good - inf = i / (len(children)+1) + inf = i / (len(children) + 1) inf = 1.0 - inf inf = ((inf * inf) + inf) / 2.0 - + # used for X/Y constraint inf_minor = inf * inf - + con = child_pbone.constraints.new('COPY_ROTATION') con.name = "Copy Z Rot" con.target = obj @@ -200,6 +203,6 @@ def main(obj, bone_definition, base_names): child_pbone = obj.pose.bones[children[-1]] child_pbone.rotation_mode = 'QUATERNION' - + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 20ba48bfef9..16cd4067eca 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from rigify import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -23,6 +25,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness METARIG_NAMES = ("pelvis", "ribcage") + def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object @@ -98,7 +101,7 @@ def metarig_definition(obj, orig_bone_name): arm = obj.data ribcage = arm.bones[orig_bone_name] pelvis = ribcage.parent - + children = ribcage.children if len(children) != 1: print("expected the ribcage to have only 1 child.") @@ -108,11 +111,13 @@ def metarig_definition(obj, orig_bone_name): bone_definition.extend([child.name for child in child.children_recursive_basename]) return bone_definition + def fk(*args): main(*args) + def main(obj, bone_definition, base_names): - from Mathutils import Vector, Matrix, RotationMatrix + from Mathutils import Vector, RotationMatrix from math import radians, pi arm = obj.data @@ -138,11 +143,11 @@ def main(obj, bone_definition, base_names): spine_chain = [child] + child.children_recursive_basename spine_chain_orig = [child.name for child in spine_chain] ''' - + child = spine_chain[0] spine_chain_segment_length = child.length child.parent = mt.pelvis_e # was mt.ribcage - + # The first bone in the chain happens to be the basis of others, create them now ex = bone_class_instance(obj, ["pelvis", "ribcage", "ribcage_hinge", "spine_rotate"]) df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage @@ -153,33 +158,33 @@ def main(obj, bone_definition, base_names): ex.ribcage_hinge = ex.ribcage_hinge_e.name ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) mt.ribcage_e.parent = ex.ribcage_hinge_e - + ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) ex.spine_rotate = ex.spine_rotate_e.name ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) # swap head/tail ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() ex.spine_rotate_e.parent = mt.pelvis_e - + df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.pelvis) df.pelvis = df.pelvis_e.name - df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, -spine_chain_segment_length, 0.0)) + df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, - spine_chain_segment_length, 0.0)) ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.pelvis) ex.pelvis = ex.pelvis_e.name - ex.pelvis_e.translate(Vector(0.0, -spine_chain_segment_length, 0.0)) + ex.pelvis_e.translate(Vector(0.0, - spine_chain_segment_length, 0.0)) ex.pelvis_e.parent = mt.pelvis_e # Copy the last bone now child = spine_chain[-1] - + df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.ribcage) df.ribcage = df.ribcage_e.name - df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, -df.ribcage_e.length / 2.0, 0.0)) - + df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) + ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.ribcage) ex.ribcage = ex.ribcage_e.name - ex.ribcage_e.translate(Vector(0.0, -ex.ribcage_e.length / 2.0, 0.0)) + ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0)) ex.ribcage_e.parent = mt.ribcage_e spine_chain = [child.name for child in spine_chain] @@ -194,7 +199,7 @@ def main(obj, bone_definition, base_names): rv_chain = bone_class_instance(obj, spine_chain_attrs) # * ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* del spine_chain_attrs - + for i, child_name in enumerate(spine_chain): child_name_orig = base_names[spine_chain_orig[i]] @@ -208,37 +213,37 @@ def main(obj, bone_definition, base_names): ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig) setattr(rv_chain, attr, ebone.name) ebone.connected = False - + mt_chain.update() ex_chain.update() rv_chain.update() # Now we need to re-parent these chains - for i, child_name in enumerate(spine_chain_orig): + for i, child_name in enumerate(spine_chain_orig): attr = ex_chain.attr_names[i] + "_e" - + if i == 0: getattr(ex_chain, attr).parent = mt.pelvis_e else: attr_parent = ex_chain.attr_names[i-1] + "_e" getattr(ex_chain, attr).parent = getattr(ex_chain, attr_parent) - + # intentional! get the parent from the other paralelle chain member getattr(rv_chain, attr).parent = getattr(ex_chain, attr) - - + + # ex_chain needs to interlace bones! # Note, skip the first bone for i in range(1, spine_chain_len): # similar to neck child_name_orig = spine_chain_orig[i] spine_e = getattr(mt_chain, mt_chain.attr_names[i] + "_e") - + # dont store parent names, re-reference as each chain bones parent. spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) spine_e_parent.head = spine_e.head spine_e_parent.tail = spine_e.head + Vector(0.0, 0.0, spine_chain_segment_length / 2.0) spine_e_parent.roll = 0.0 - + spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e") orig_parent = spine_e.parent spine_e.connected = False @@ -246,7 +251,7 @@ def main(obj, bone_definition, base_names): spine_e_parent.connected = False spine_e_parent.parent = orig_parent - + # Rotate the rev chain 180 about the by the first bones center point pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 @@ -259,10 +264,10 @@ def main(obj, bone_definition, base_names): spine_e.tail = ((spine_e.tail - pivot) * matrix) + pivot spine_e.roll += pi # 180d roll del spine_e - - + + bpy.ops.object.mode_set(mode='OBJECT') - + # refresh pose bones mt.update() ex.update() @@ -270,41 +275,41 @@ def main(obj, bone_definition, base_names): mt_chain.update() ex_chain.update() rv_chain.update() - + # df.pelvis_p / DEF-wgt_pelvis con = df.pelvis_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.pelvis con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - + con = df.pelvis_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = ex.pelvis con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - + # df.ribcage_p / DEF-wgt_rib_cage con = df.ribcage_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = ex.ribcage con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - + con = df.ribcage_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.ribcage con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - + con = ex.ribcage_hinge_p.constraints.new('COPY_ROTATION') con.name = "hinge" con.target = obj con.subtarget = mt.pelvis - + # add driver hinge_driver_path = mt.ribcage_p.path_to_id() + '["hinge"]' - + fcurve = con.driver_add("influence", 0) driver = fcurve.driver tar = driver.targets.new() @@ -313,14 +318,13 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = hinge_driver_path - + mod = fcurve.modifiers[0] mod.poly_order = 1 mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 - - - + + con = ex.spine_rotate_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.ribcage @@ -338,7 +342,7 @@ def main(obj, bone_definition, base_names): con.subtarget = mt_chain.spine_01 con.owner_space = 'WORLD' con.target_space = 'WORLD' - + # ex.ribcage_p / MCH-wgt_rib_cage con = ex.ribcage_p.constraints.new('COPY_LOCATION') con.target = obj @@ -347,57 +351,57 @@ def main(obj, bone_definition, base_names): con = ex.ribcage_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) - + con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) + # mt.pelvis_p / rib_cage con = mt.ribcage_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = mt.pelvis con.head_tail = 0.0 - + # This stores all important ID props prop = rna_idprop_ui_prop_get(mt.ribcage_p, "hinge", create=True) mt.ribcage_p["hinge"] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + prop = rna_idprop_ui_prop_get(mt.ribcage_p, "pivot_slide", create=True) mt.ribcage_p["pivot_slide"] = 0.5 prop["soft_min"] = 1.0 / spine_chain_len prop["soft_max"] = 1.0 - + for i in range(spine_chain_len - 1): prop_name = "bend_%.2d" % (i + 1) prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) mt.ribcage_p[prop_name] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - + # Create a fake connected parent/child relationship with bone location constraints # positioned at the tip. - + # reverse bones / MCH-rev_spine.## for i in range(1, spine_chain_len): spine_p = getattr(rv_chain, rv_chain.attr_names[i] + "_p") spine_fake_parent_name = getattr(rv_chain, rv_chain.attr_names[i - 1]) - + con = spine_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = spine_fake_parent_name con.head_tail = 1.0 del spine_p, spine_fake_parent_name, con - - + + # Constrain 'inbetween' bones - + # b01/max(0.001,b01+b02+b03+b04+b05) target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] expression_suffix = "/max(0.001,%s)" % "+".join(target_names) - + rib_driver_path = mt.ribcage_p.path_to_id() - + for i in range(1, spine_chain_len): - + spine_p = getattr(ex_chain, ex_chain.attr_names[i] + "_p") spine_p_parent = spine_p.parent # interlaced bone @@ -407,7 +411,7 @@ def main(obj, bone_definition, base_names): con.owner_space = 'LOCAL' con.target_space = 'LOCAL' del spine_p - + # add driver fcurve = con.driver_add("influence", 0) driver = fcurve.driver @@ -422,37 +426,37 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (j + 1)) - - + + # original bone drivers # note: the first bone has a lot more constraints, but also this simple one is first. for i, attr in enumerate(mt_chain.attr_names): spine_p = getattr(mt_chain, attr + "_p") - + con = spine_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = getattr(ex_chain, attr) # lock to the copy's rotation del spine_p - + # pivot slide: - lots of copy location constraints. - + con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') con.name = "base" con.target = obj con.subtarget = rv_chain.spine_01 # lock to the reverse location - + for i in range(1, spine_chain_len + 1): con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') con.name = "slide_%d" % i con.target = obj - + if i == spine_chain_len: attr = mt_chain.attr_names[i - 1] else: attr = mt_chain.attr_names[i] con.subtarget = getattr(rv_chain, attr) # lock to the reverse location - + if i == spine_chain_len: con.head_tail = 1.0 @@ -464,12 +468,11 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = rib_driver_path + '["pivot_slide"]' - + mod = fcurve.modifiers[0] mod.poly_order = 1 mod.coefficients[0] = - (i - 1) mod.coefficients[1] = spine_chain_len - + # no support for blending chains return None - diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 1e1747220e1..51281c480b9 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -211,28 +211,6 @@ class WM_OT_properties_edit(bpy.types.Operator): self.properties.max = prop_ui.get("max", 1000000000) self.properties.description = prop_ui.get("description", "") - if 0: - _message = "PyConsole, press Ctrl+D to unlock the BGE" - import sys - - # evaluate commands in current namespace - frame = sys._getframe() - namespace = frame.f_globals.copy() - namespace.update(frame.f_locals) - - import code - - # Autocomp in python, not as comprehensive as IPython - import rlcompleter - - try: # ick, some pythons dont have this - import readline - readline.parse_and_bind("tab: complete") - except: - pass - - code.interact(banner=_message, local=namespace) - wm = context.manager wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index af864edee4f..db50412464b 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from bpy.props import * @@ -61,11 +63,11 @@ class SelectPattern(bpy.types.Operator): wm = context.manager wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) - + def draw(self, context): layout = self.layout props = self.properties - + layout.prop(props, "pattern") row = layout.row() row.prop(props, "case_sensitive") diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index f20ebcc67b9..9cf1f57c65f 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -793,7 +793,6 @@ static void delete_graph_keys (bAnimContext *ac) /* loop through filtered data and delete selected keys */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; - AnimData *adt= ale->adt; /* delete selected keyframes only */ delete_fcurve_keys(fcu); -- cgit v1.2.3 From 062cf438ce065b477b52f72871b95bc5ee12c619 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 5 Dec 2009 23:41:45 +0000 Subject: remove nasty hack which made StructRNA class instaces have no __dict__, use __slots__, it seems all the parent classes need to have slots as well for this to work. all python defined srna classes are checked for this too --- release/scripts/io/engine_render_pov.py | 1 + release/scripts/modules/bpy_types.py | 16 ++++++++++++---- source/blender/python/intern/bpy_rna.c | 20 +++++++++----------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index ddca6eb43dc..9157136475b 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -757,6 +757,7 @@ class PovrayRender(bpy.types.RenderEngine): pov_binary = winreg.QueryValueEx(regKey, 'Home')[0] + '\\bin\\pvengine' if 1: + # TODO, when povray isnt found this gives a cryptic error, would be nice to be able to detect if it exists self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE else: # This works too but means we have to wait until its done diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 1a3f2da2c97..9e4f3c9f836 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -25,6 +25,7 @@ StructRNA = bpy_types.Struct.__bases__[0] class Context(StructRNA): + __slots__ = () def copy(self): new_context = {} @@ -37,6 +38,7 @@ class Context(StructRNA): class Object(bpy_types.ID): + __slots__ = () @property def children(self): @@ -49,6 +51,7 @@ class _GenericBone: functions for bones, common between Armature/Pose/Edit bones. internal subclassing use only. ''' + __slots__ = () def translate(self, vec): self.head += vec @@ -158,15 +161,15 @@ class _GenericBone: class PoseBone(StructRNA, _GenericBone): - pass + __slots__ = () class Bone(StructRNA, _GenericBone): - pass + __slots__ = () class EditBone(StructRNA, _GenericBone): - pass + __slots__ = () def ord_ind(i1, i2): @@ -176,6 +179,7 @@ def ord_ind(i1, i2): class Mesh(bpy_types.ID): + __slots__ = () def from_pydata(self, verts, edges, faces): ''' @@ -227,6 +231,7 @@ class Mesh(bpy_types.ID): class MeshEdge(StructRNA): + __slots__ = () @property def key(self): @@ -234,6 +239,7 @@ class MeshEdge(StructRNA): class MeshFace(StructRNA): + __slots__ = () @property def edge_keys(self): @@ -259,12 +265,13 @@ class OrderedMeta(type): # Only defined so operators members can be used by accessing self.order class Operator(StructRNA, metaclass=OrderedMeta): - pass + __slots__ = () class Macro(StructRNA, metaclass=OrderedMeta): # bpy_types is imported before ops is defined # so we have to do a local import on each run + __slots__ = () @classmethod def define(self, opname): @@ -273,6 +280,7 @@ class Macro(StructRNA, metaclass=OrderedMeta): class Menu(StructRNA): + __slots__ = () def path_menu(self, searchpaths, operator): layout = self.layout diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index e657cfc79e2..9370ec91d37 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -2986,16 +2986,18 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna) if(newclass) { PyObject *base_compare= pyrna_srna_PyBase(srna); PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); + //PyObject *slots= PyObject_GetAttrString(newclass, "__slots__"); // cant do this because it gets superclasses values! + PyObject *slots = PyDict_GetItemString(((PyTypeObject *)newclass)->tp_dict, "__slots__"); - // XXX - highly dodgy!, this stops blender from creating __dict__ in instances - ((PyTypeObject *)newclass)->tp_dictoffset = 0; - - if(PyTuple_GET_SIZE(bases)) { + if(slots==NULL) { + fprintf(stderr, "pyrna_srna_ExternalType: expected class '%s' to have __slots__ defined\n\nSee bpy_types.py\n", idname); + newclass= NULL; + } + else if(PyTuple_GET_SIZE(bases)) { PyObject *base= PyTuple_GET_ITEM(bases, 0); if(base_compare != base) { - PyLineSpit(); - fprintf(stderr, "pyrna_srna_ExternalType: incorrect subclassing of SRNA '%s'\n", idname); + fprintf(stderr, "pyrna_srna_ExternalType: incorrect subclassing of SRNA '%s'\nSee bpy_types.py\n", idname); PyObSpit("Expected! ", base_compare); newclass= NULL; } @@ -3038,16 +3040,12 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna) if(!descr) descr= "(no docs)"; /* always use O not N when calling, N causes refcount errors */ - newclass = PyObject_CallFunction( (PyObject*)&PyType_Type, "s(O){ssss}", idname, py_base, "__module__","bpy.types", "__doc__",descr); + newclass = PyObject_CallFunction( (PyObject*)&PyType_Type, "s(O){sssss()}", idname, py_base, "__module__","bpy.types", "__doc__",descr, "__slots__"); /* newclass will now have 2 ref's, ???, probably 1 is internal since decrefing here segfaults */ /* PyObSpit("new class ref", newclass); */ if (newclass) { - - // XXX - highly dodgy!, this stops blender from creating __dict__ in instances - ((PyTypeObject *)newclass)->tp_dictoffset = 0; - /* srna owns one, and the other is owned by the caller */ pyrna_subtype_set_rna(newclass, srna); -- cgit v1.2.3 From f08e8af0b9568798bd2f59daf1b83dd0f7204ced Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 6 Dec 2009 04:35:00 +0000 Subject: wm.invoke_popup(op, width, height) similar to wm.invoke_props_popup(op, event) except it doesnt use undo/redo (UI's need to execute operators themselves) --- source/blender/makesrna/intern/rna_wm_api.c | 9 +++++ source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_operators.c | 41 ++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 62c4fe642a1..50b0e37b7cd 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -147,6 +147,15 @@ void RNA_api_wm(StructRNA *srna) parm= RNA_def_pointer(func, "event", "Event", "", "Event."); RNA_def_property_flag(parm, PROP_REQUIRED); RNA_def_function_return(func, RNA_def_int(func, "mode", 0, 0, INT_MAX, "Mode", "", 0, INT_MAX)); // XXX, should be an enum/flag thingo + + /* invoke functions, for use with python */ + func= RNA_def_function(srna, "invoke_popup", "WM_operator_ui_popup"); + RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_USE_CONTEXT); + RNA_def_function_ui_description(func, "Operator popup invoke."); + parm= RNA_def_pointer(func, "operator", "Operator", "", "Operator to call."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_int(func, "width", 300, 0, INT_MAX, "", "Width of the popup.", 0, INT_MAX); + parm= RNA_def_int(func, "height", 20, 0, INT_MAX, "", "Height of the popup.", 0, INT_MAX); } void RNA_api_keyconfig(StructRNA *srna) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 549ef11c14e..1fab234dbf7 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -168,6 +168,7 @@ int WM_operator_winactive (struct bContext *C); /* invoke callback, exec + redo popup */ int WM_operator_props_popup (struct bContext *C, struct wmOperator *op, struct wmEvent *event); int WM_operator_redo_popup (struct bContext *C, struct wmOperator *op); +void WM_operator_ui_popup (struct bContext *C, struct wmOperator *op, int width, int height); int WM_operator_confirm_message(struct bContext *C, struct wmOperator *op, char *message); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 582410c4368..f2ba9bb8eb6 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -774,6 +774,38 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) return block; } + +static uiBlock *wm_operator_create_ui(bContext *C, ARegion *ar, void *userData) +{ + struct { wmOperator *op; int width; int height; } * data = userData; + wmWindowManager *wm= CTX_wm_manager(C); + wmOperator *op= data->op; + PointerRNA ptr; + uiBlock *block; + uiLayout *layout; + uiStyle *style= U.uistyles.first; + + block= uiBeginBlock(C, ar, "opui_popup", UI_EMBOSS); + uiBlockClearFlag(block, UI_BLOCK_LOOP); + uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); + + if(!op->properties) { + IDPropertyTemplate val = {0}; + op->properties= IDP_New(IDP_GROUP, val, "wmOperatorProperties"); + } + + RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, data->width, data->height, style); + + if(op->type->ui) + op->type->ui((bContext*)C, op, layout); + + uiPopupBoundsBlock(block, 4.0f, 0, 0); + uiEndBlock(C, block); + + return block; +} + int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event) { int retval= OPERATOR_CANCELLED; @@ -787,6 +819,15 @@ int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event) return retval; } +void WM_operator_ui_popup(bContext *C, wmOperator *op, int width, int height) +{ + struct { wmOperator *op; int width; int height; } data; + data.op = op; + data.width = width; + data.height = height; + uiPupBlock(C, wm_operator_create_ui, &data); +} + int WM_operator_redo_popup(bContext *C, wmOperator *op) { uiPupBlock(C, wm_block_create_redo, op); -- cgit v1.2.3 From ba0981031ae20f1cda43a2491f6347295b6a17d2 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 6 Dec 2009 09:37:31 +0000 Subject: Assorted warning and comment fixes --- source/blender/editors/animation/keyframes_draw.c | 1 + source/blender/editors/space_action/action_edit.c | 2 +- source/blender/editors/space_graph/graph_edit.c | 3 ++- source/blender/editors/transform/transform_conversions.c | 8 ++++---- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index 512dc92de1d..15ca0fab35f 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -229,6 +229,7 @@ static void nupdate_abk_bezt (void *node, void *data) /* just add the BezTriple to the buffer if there's space, or allocate a new one */ if (abk->numBezts >= sizeof(abk->bezts)/sizeof(BezTriple)) { // TODO: need to allocate new array to cater... + // FIXME: urgent... is a problem when working with duplicate keyframes //bezts_extra= MEM_callocN(...); printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n"); } diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 22f5f1757c9..133d48a5ecc 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -622,7 +622,7 @@ static void delete_action_keys (bAnimContext *ac) /* Only delete curve too if it won't be doing anything anymore */ if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) - ANIM_fcurve_delete_from_animdata(ac, ale->adt, fcu); + ANIM_fcurve_delete_from_animdata(ac, adt, fcu); } //else // delete_gplayer_frames((bGPDlayer *)ale->data); diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 9cf1f57c65f..db50ad983da 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -793,13 +793,14 @@ static void delete_graph_keys (bAnimContext *ac) /* loop through filtered data and delete selected keys */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; + AnimData *adt= ale->adt; /* delete selected keyframes only */ delete_fcurve_keys(fcu); /* Only delete curve too if it won't be doing anything anymore */ if ((fcu->totvert == 0) && (list_has_suitable_fmodifier(&fcu->modifiers, 0, FMI_TYPE_GENERATE_CURVE) == 0)) - ANIM_fcurve_delete_from_animdata(ac, ale->adt, fcu); + ANIM_fcurve_delete_from_animdata(ac, adt, fcu); } /* free filtered list */ diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 4627db7e89c..9e154bc4db6 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2926,11 +2926,11 @@ static void posttrans_gpd_clean (bGPdata *gpd) */ static void posttrans_fcurve_clean (FCurve *fcu) { - float *selcache; /* cache for frame numbers of selected frames (icu->totvert*sizeof(float)) */ + float *selcache; /* cache for frame numbers of selected frames (fcu->totvert*sizeof(float)) */ int len, index, i; /* number of frames in cache, item index */ /* allocate memory for the cache */ - // TODO: investigate using GHash for this instead? + // TODO: investigate using BezTriple columns instead? if (fcu->totvert == 0) return; selcache= MEM_callocN(sizeof(float)*fcu->totvert, "FCurveSelFrameNums"); @@ -2996,7 +2996,7 @@ static void posttrans_action_clean (bAnimContext *ac, bAction *act) filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); ANIM_animdata_filter(ac, &anim_data, filter, act, ANIMCONT_ACTION); - /* loop through relevant data, removing keyframes from the ipo-blocks that were attached + /* loop through relevant data, removing keyframes as appropriate * - all keyframes are converted in/out of global time */ for (ale= anim_data.first; ale; ale= ale->next) { @@ -4773,7 +4773,7 @@ void special_aftertrans_update(TransInfo *t) /* get channels to work on */ ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); - /* these should all be ipo-blocks */ + /* these should all be F-Curves */ for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(&ac, ale); FCurve *fcu= (FCurve *)ale->key_data; -- cgit v1.2.3 From 4b2163c1cc53f165545e94f3aef291462aba10ce Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 6 Dec 2009 17:36:27 +0000 Subject: Text change: Loopcut -> Loop Cut --- source/blender/editors/mesh/mesh_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 866638d2f20..9a44f5960df 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -171,7 +171,7 @@ void ED_operatormacros_mesh(void) wmOperatorTypeMacro *otmacro; int constraint_axis[3] = {0, 0, 1}; - ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loopcut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER); + ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loop Cut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "MESH_OT_loopcut"); WM_operatortype_macro_define(ot, "TFM_OT_edge_slide"); -- cgit v1.2.3 From 450d33cc9a795c3ce0b179ae5e7130887ca06e17 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 6 Dec 2009 17:38:39 +0000 Subject: Loop cut and edge ring select only have an invoke and require view3d, so change poll function to reflect that (and not, you know, crash...). --- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/mesh/loopcut.c | 4 ++-- source/blender/editors/screen/screen_ops.c | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 2f658e48557..2cb8745ac05 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -134,6 +134,7 @@ int ED_operator_logic_active(struct bContext *C); int ED_operator_object_active(struct bContext *C); int ED_operator_object_active_editable(struct bContext *C); int ED_operator_editmesh(struct bContext *C); +int ED_operator_editmesh_view3d(struct bContext *C); int ED_operator_editarmature(struct bContext *C); int ED_operator_editcurve(struct bContext *C); int ED_operator_editsurf(struct bContext *C); diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c index e12f3c99fcd..72bd4ee3541 100644 --- a/source/blender/editors/mesh/loopcut.c +++ b/source/blender/editors/mesh/loopcut.c @@ -455,7 +455,7 @@ void MESH_OT_edgering_select (wmOperatorType *ot) ot->invoke= ringsel_invoke; ot->modal= ringsel_modal; ot->cancel= ringsel_cancel; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; @@ -474,7 +474,7 @@ void MESH_OT_loopcut (wmOperatorType *ot) ot->invoke= ringcut_invoke; ot->modal= ringsel_modal; ot->cancel= ringsel_cancel; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 633d5181bbf..55e2ec6b540 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -232,6 +232,11 @@ int ED_operator_editmesh(bContext *C) return 0; } +int ED_operator_editmesh_view3d(bContext *C) +{ + return ED_operator_editmesh(C) && ED_operator_view3d_active(C); +} + int ED_operator_editarmature(bContext *C) { Object *obedit= CTX_data_edit_object(C); -- cgit v1.2.3 From c5a614f2db6f09aeabecd88ba6de22a340c3bc69 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Sun, 6 Dec 2009 22:28:59 +0000 Subject: Finished wrapping SpaceGraph in RNA and also wrapped bDopeSheet in the process. Some descriptions might be slightly off, feel free to check. --- source/blender/makesrna/intern/rna_action.c | 116 +++++++++++++++++++++++++++- source/blender/makesrna/intern/rna_space.c | 24 +++++- 2 files changed, 133 insertions(+), 7 deletions(-) diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index eaa11b4ad38..09649d6365b 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -34,10 +34,117 @@ #include "MEM_guardedalloc.h" +#include "WM_types.h" + + #ifdef RNA_RUNTIME #else +static void rna_def_dopesheet(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "DopeSheet", NULL); + RNA_def_struct_sdna(srna, "bDopeSheet"); + RNA_def_struct_ui_text(srna, "DopeSheet", "Storage for Dopesheet/Grease-Pencil Editor data."); + + prop= RNA_def_property(srna, "source", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "ID"); + RNA_def_property_ui_text(prop, "Source", "ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil)."); + + prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL); + RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected Objects."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "only_drivers", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYDRIVERS); + RNA_def_property_ui_text(prop, "Only Drivers", "Only include Driver data from Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "only_nla", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYNLA); + RNA_def_property_ui_text(prop, "Only NLA", "Only include NLA data from Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SELEDIT); + RNA_def_property_ui_text(prop, "Use Filter", "Indicates if filtering options must be taken into account."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY); + RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS); + RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of Shapekey related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM); + RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT); + RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM); + RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR); + RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR); + RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE); + RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART); + RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA); + RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM); + RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE); + RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); + RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA Data."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + + prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED); + RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ +} + static void rna_def_action_group(BlenderRNA *brna) { StructRNA *srna; @@ -80,22 +187,22 @@ static void rna_def_action(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - + srna= RNA_def_struct(brna, "Action", "ID"); RNA_def_struct_sdna(srna, "bAction"); RNA_def_struct_ui_text(srna, "Action", "A collection of F-Curves for animation."); RNA_def_struct_ui_icon(srna, ICON_ACTION); - + prop= RNA_def_property(srna, "fcurves", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "curves", NULL); RNA_def_property_struct_type(prop, "FCurve"); RNA_def_property_ui_text(prop, "F-Curves", "The individual F-Curves that make up the Action."); - + prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "groups", NULL); RNA_def_property_struct_type(prop, "ActionGroup"); RNA_def_property_ui_text(prop, "Groups", "Convenient groupings of F-Curves."); - + prop= RNA_def_property(srna, "pose_markers", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "markers", NULL); RNA_def_property_struct_type(prop, "TimelineMarker"); @@ -110,6 +217,7 @@ void RNA_def_action(BlenderRNA *brna) { rna_def_action(brna); rna_def_action_group(brna); + rna_def_dopesheet(brna); } diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index c10f3f74fd8..edc088a7171 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1284,7 +1284,14 @@ static void rna_def_space_graph(BlenderRNA *brna) //{V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""}, //{V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; - + + static EnumPropertyItem autosnap_items[] = { + {SACTSNAP_OFF, "NONE", 0, "None", ""}, + {SACTSNAP_STEP, "STEP", 0, "Step", "Snap to 1.0 frame/second intervals."}, + {SACTSNAP_FRAME, "FRAME", 0, "Frame", "Snap to actual frames/seconds (nla-action time)."}, + {SACTSNAP_MARKER, "MARKER", 0, "Marker", "Snap to nearest marker."}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "SpaceGraphEditor", "Space"); RNA_def_struct_sdna(srna, "SpaceIpo"); @@ -1351,8 +1358,19 @@ static void rna_def_space_graph(BlenderRNA *brna) RNA_def_property_enum_items(prop, gpivot_items); RNA_def_property_ui_text(prop, "Pivot Point", "Pivot center for rotation/scaling."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); - - // TODO... autosnap, dopesheet? + + /* dopesheet */ + prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "DopeSheet"); + RNA_def_property_pointer_sdna(prop, NULL, "ads"); + RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data."); + + /* autosnap */ + prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "autosnap"); + RNA_def_property_enum_items(prop, autosnap_items); + RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); } static void rna_def_space_nla(BlenderRNA *brna) -- cgit v1.2.3 From 85773c72303962f03c2a2d62bb26e042da8dd4b7 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 00:11:17 +0000 Subject: Fixed operator name typo. --- source/blender/editors/space_graph/graph_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index db50ad983da..532c2fe5faa 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -386,7 +386,7 @@ static int graphkeys_clear_ghostcurves_exec(bContext *C, wmOperator *op) void GRAPH_OT_ghost_curves_clear (wmOperatorType *ot) { /* identifiers */ - ot->name= "Create Ghost Curves"; + ot->name= "Clear Ghost Curves"; ot->idname= "GRAPH_OT_ghost_curves_clear"; ot->description= "Clear F-Curve snapshots (Ghosts) for active Graph Editor."; -- cgit v1.2.3 From 750764f411d18b5f57cac3857cf201d4e9425521 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 00:16:57 +0000 Subject: rna flag PROP_ENUM_FLAG which makes rna props a tuple of enums when converted into a PyObject only used by wm.invoke_props_popup() currently --- release/scripts/modules/rna_prop_ui.py | 4 + release/scripts/op/object.py | 3 +- release/scripts/op/presets.py | 3 + release/scripts/op/wm.py | 3 +- release/scripts/templates/operator.py | 3 +- source/blender/makesrna/RNA_access.h | 2 + source/blender/makesrna/RNA_enum_types.h | 1 + source/blender/makesrna/RNA_types.h | 5 ++ source/blender/makesrna/intern/rna_access.c | 28 +++++++ source/blender/makesrna/intern/rna_wm.c | 7 ++ source/blender/makesrna/intern/rna_wm_api.c | 6 +- source/blender/python/intern/bpy_rna.c | 112 +++++++++++++++------------- 12 files changed, 119 insertions(+), 58 deletions(-) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 51281c480b9..ca452da7f73 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -212,8 +212,12 @@ class WM_OT_properties_edit(bpy.types.Operator): self.properties.description = prop_ui.get("description", "") wm = context.manager + # This crashes, TODO - fix + #return wm.invoke_props_popup(self, event) + wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) + class WM_OT_properties_add(bpy.types.Operator): diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index db50412464b..8a02d10838b 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -61,8 +61,7 @@ class SelectPattern(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) + return wm.invoke_props_popup(self, event) def draw(self, context): layout = self.layout diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 84a60765fa4..0ce19f712ab 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -54,6 +54,9 @@ class AddPresetBase(bpy.types.Operator): def invoke(self, context, event): wm = context.manager + #crashes, TODO - fix + #return wm.invoke_props_popup(self, event) + wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index c5fc18964bf..7000eaffebf 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -359,8 +359,7 @@ class WM_OT_doc_edit(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) + return wm.invoke_props_popup(self, event) class WM_OT_reload_scripts(bpy.types.Operator): diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index 5e8a2f33cb7..72a6ae53f5f 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -41,8 +41,7 @@ class ExportSomeData(bpy.types.Operator): return ('RUNNING_MODAL',) elif 0: # Redo popup - wm.invoke_props_popup(self, event) # - return ('RUNNING_MODAL',) + return wm.invoke_props_popup(self, event) # elif 0: return self.execute(context) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 959109f7bbb..263183cadd8 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -633,11 +633,13 @@ void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision); int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier); +int RNA_enum_bitflag_identifierss(EnumPropertyItem *item, const int value, const char **identifier); int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name); void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free); int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value); int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); +int RNA_property_enum_bitflag_identifiers(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier); StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop); diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index b33dbe6f20d..479397a2180 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -60,6 +60,7 @@ extern EnumPropertyItem nla_mode_blend_items[]; extern EnumPropertyItem event_value_items[]; extern EnumPropertyItem event_type_items[]; +extern EnumPropertyItem operator_return_items[]; extern EnumPropertyItem brush_sculpt_tool_items[]; diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 27dd1069c1c..8743bb39d57 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -87,6 +87,8 @@ typedef enum PropertyUnit { #define RNA_SUBTYPE_UNIT(subtype) (subtype & 0x00FF0000) #define RNA_SUBTYPE_UNIT_VALUE(subtype) (subtype>>16) +#define RNA_ENUM_BITFLAG_SIZE 32 + /* also update rna_property_subtypename when you change this */ typedef enum PropertySubType { PROP_NONE = 0, @@ -161,6 +163,9 @@ typedef enum PropertyFlag { PROP_ID_SELF_CHECK = 1<<20, PROP_NEVER_NULL = 1<<18, + /* flag contains multiple enums */ + PROP_ENUM_FLAG = 1<<21, + /* internal flags */ PROP_BUILTIN = 1<<7, PROP_EXPORT = 1<<8, diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 5ee811d4c46..360f43428d1 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -972,6 +972,18 @@ int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **id return 0; } +int RNA_enum_bitflag_identifiers(EnumPropertyItem *item, const int value, const char **identifier) +{ + int index= 0; + for (; item->identifier; item++) { + if(item->identifier[0] && item->value & value) { + identifier[index++] = item->identifier; + } + } + identifier[index]= NULL; + return index; +} + int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name) { for (; item->identifier; item++) { @@ -999,6 +1011,22 @@ int RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop return 0; } +int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier) +{ + EnumPropertyItem *item= NULL; + int result, free; + + RNA_property_enum_items(C, ptr, prop, &item, NULL, &free); + if(item) { + result= RNA_enum_bitflag_identifiers(item, value, identifier); + if(free) + MEM_freeN(item); + + return result; + } + return 0; +} + const char *RNA_property_ui_name(PropertyRNA *prop) { return rna_ensure_property_name(prop); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 35f2a31b7ef..2e4c0690031 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -243,6 +243,13 @@ EnumPropertyItem keymap_modifiers_items[] = { {2, "SECOND", 0, "Second", ""}, {0, NULL, 0, NULL, NULL}}; +EnumPropertyItem operator_return_items[] = { + {OPERATOR_RUNNING_MODAL, "RUNNING_MODAL", 0, "Running Modal", ""}, + {OPERATOR_CANCELLED, "CANCELLED", 0, "Cancelled", ""}, + {OPERATOR_FINISHED, "FINISHED", 0, "Finished", ""}, + {OPERATOR_PASS_THROUGH, "PASS_THROUGH", 0, "Pass Through", ""}, // used as a flag + {0, NULL, 0, NULL, NULL}}; + #define KMI_TYPE_KEYBOARD 0 #define KMI_TYPE_MOUSE 1 #define KMI_TYPE_TWEAK 2 diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 50b0e37b7cd..ce26072e91b 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -146,7 +146,11 @@ void RNA_api_wm(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "event", "Event", "", "Event."); RNA_def_property_flag(parm, PROP_REQUIRED); - RNA_def_function_return(func, RNA_def_int(func, "mode", 0, 0, INT_MAX, "Mode", "", 0, INT_MAX)); // XXX, should be an enum/flag thingo + + parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name? + RNA_def_property_flag(parm, PROP_ENUM_FLAG); + RNA_def_function_return(func, parm); + /* invoke functions, for use with python */ func= RNA_def_function(srna, "invoke_popup", "WM_operator_ui_popup"); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 9370ec91d37..9136a166365 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -379,41 +379,31 @@ static int pyrna_string_to_enum(PyObject *item, PointerRNA *ptr, PropertyRNA *pr return 1; } -PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) +static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val) { - PyObject *ret; - int type = RNA_property_type(prop); + PyObject *ret= NULL; - if (RNA_property_array_check(ptr, prop)) { - return pyrna_py_from_array(ptr, prop); - } - - /* see if we can coorce into a python type - PropertyType */ - switch (type) { - case PROP_BOOLEAN: - ret = PyBool_FromLong( RNA_property_boolean_get(ptr, prop) ); - break; - case PROP_INT: - ret = PyLong_FromSsize_t( (Py_ssize_t)RNA_property_int_get(ptr, prop) ); - break; - case PROP_FLOAT: - ret = PyFloat_FromDouble( RNA_property_float_get(ptr, prop) ); - break; - case PROP_STRING: - { - char *buf; - buf = RNA_property_string_get_alloc(ptr, prop, NULL, -1); - ret = PyUnicode_FromString( buf ); - MEM_freeN(buf); - break; + if(RNA_property_flag(prop) & PROP_ENUM_FLAG) { + const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1]; + int index; + + if ((index=RNA_property_enum_bitflag_identifiers(BPy_GetContext(), ptr, prop, val, identifier))) { + ret= PyTuple_New(index); + index= 0; + + while(identifier[index]) { + PyTuple_SET_ITEM(ret, index, PyUnicode_FromString(identifier[index])); + index++; + } + } + else { + ret= PyTuple_New(0); + } } - case PROP_ENUM: - { + else { const char *identifier; - int val = RNA_property_enum_get(ptr, prop); - if (RNA_property_enum_identifier(BPy_GetContext(), ptr, prop, val, &identifier)) { - ret = PyUnicode_FromString( identifier ); + ret = PyUnicode_FromString(identifier); } else { EnumPropertyItem *item; int free= FALSE; @@ -422,11 +412,11 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) * right values, python code should not generate error for that */ RNA_property_enum_items(BPy_GetContext(), ptr, prop, &item, NULL, &free); if(item && item->identifier) { - ret = PyUnicode_FromString( item->identifier ); + ret= PyUnicode_FromString(item->identifier); } else { - char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE); - + char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE); + /* prefer not fail silently incase of api errors, maybe disable it later */ printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop)); @@ -436,8 +426,8 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) PyErr_Warn(PyExc_RuntimeWarning, error_str); #endif - if(ptr_name) - MEM_freeN(ptr_name); + if(ptr_name) + MEM_freeN(ptr_name); ret = PyUnicode_FromString( "" ); } @@ -448,7 +438,42 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) /*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val); ret = NULL;*/ } + } + + return ret; +} + +PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) +{ + PyObject *ret; + int type = RNA_property_type(prop); + if (RNA_property_array_check(ptr, prop)) { + return pyrna_py_from_array(ptr, prop); + } + + /* see if we can coorce into a python type - PropertyType */ + switch (type) { + case PROP_BOOLEAN: + ret = PyBool_FromLong( RNA_property_boolean_get(ptr, prop) ); + break; + case PROP_INT: + ret = PyLong_FromSsize_t( (Py_ssize_t)RNA_property_int_get(ptr, prop) ); + break; + case PROP_FLOAT: + ret = PyFloat_FromDouble( RNA_property_float_get(ptr, prop) ); + break; + case PROP_STRING: + { + char *buf; + buf = RNA_property_string_get_alloc(ptr, prop, NULL, -1); + ret = PyUnicode_FromString( buf ); + MEM_freeN(buf); + break; + } + case PROP_ENUM: + { + ret= pyrna_enum_to_py(ptr, prop, RNA_property_enum_get(ptr, prop)); break; } case PROP_POINTER: @@ -2422,22 +2447,7 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data) } case PROP_ENUM: { - const char *identifier; - int val = *(int*)data; - - if (RNA_property_enum_identifier(BPy_GetContext(), ptr, prop, val, &identifier)) { - ret = PyUnicode_FromString( identifier ); - } else { - /* prefer not fail silently incase of api errors, maybe disable it later */ - char error_str[128]; - sprintf(error_str, "RNA Warning: Current value \"%d\" matches no enum", val); - PyErr_Warn(PyExc_RuntimeWarning, error_str); - - ret = PyUnicode_FromString( "" ); - /*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val); - ret = NULL;*/ - } - + ret= pyrna_enum_to_py(ptr, prop, *(int*)data); break; } case PROP_POINTER: -- cgit v1.2.3 From 17d7b7220f3240a4be07182673b29b5d9c3eee3e Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 00:50:40 +0000 Subject: Tweaks to the fading behaviour of 3d view grid subdivs, somewhat fix for [#20246] grid subdivisionns doesn't works --- source/blender/editors/space_view3d/view3d_draw.c | 10 +++++----- source/blender/editors/space_view3d/view3d_view.c | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index acb82283604..e2310a140a6 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -343,7 +343,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u } } else { // start blending out - UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10)); + UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6)); drawgrid_draw(ar, wx, wy, x, y, dx); UI_ThemeColor(TH_GRID); @@ -351,7 +351,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u } } else { // start blending out (GRID_MIN_PX < dx < (GRID_MIN_PX*10)) - UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10)); + UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6)); drawgrid_draw(ar, wx, wy, x, y, dx); UI_ThemeColor(TH_GRID); @@ -370,21 +370,21 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u drawgrid_draw(ar, wx, wy, x, y, dx); } else { - UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10)); + UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6)); drawgrid_draw(ar, wx, wy, x, y, dx); UI_ThemeColor(TH_GRID); drawgrid_draw(ar, wx, wy, x, y, dx*sublines); } } else { - UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10)); + UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6)); drawgrid_draw(ar, wx, wy, x, y, dx); UI_ThemeColor(TH_GRID); drawgrid_draw(ar, wx, wy, x, y, dx*sublines); } } else { - UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*10)); + UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/(GRID_MIN_PX*6)); drawgrid_draw(ar, wx, wy, x, y, dx); UI_ThemeColor(TH_GRID); drawgrid_draw(ar, wx, wy, x, y, dx*sublines); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 2b42b64c0a3..9cd9d12b975 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1942,7 +1942,6 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) mul_v3_fl(fly->rv3d->ofs, -1.0f); /*flip the vector*/ fly->rv3d->dist=0.0; - fly->rv3d->viewbut=0; /* used for recording */ //XXX2.5 if(v3d->camera->ipoflag & OB_ACTION_OB) @@ -1982,7 +1981,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) if (fly->state == FLY_CANCEL) { /* Revert to original view? */ if (fly->persp_backup==RV3D_CAMOB) { /* a camera view */ - rv3d->viewbut=1; + VECCOPY(v3d->camera->loc, fly->ofs_backup); VECCOPY(v3d->camera->rot, fly->rot_backup); DAG_id_flush_update(&v3d->camera->id, OB_RECALC_OB); -- cgit v1.2.3 From 7f590d3a4636a2c2891dcaf2e0b833582db8f191 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 01:26:34 +0000 Subject: Added icons to a few RNA properties. --- source/blender/makesrna/intern/rna_action.c | 14 ++++++++++++++ source/blender/makesrna/intern/rna_space.c | 6 +++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 09649d6365b..2df26f3611c 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -57,6 +57,7 @@ static void rna_def_dopesheet(BlenderRNA *brna) prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL); RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected Objects."); + RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "only_drivers", PROP_BOOLEAN, PROP_NONE); @@ -77,66 +78,79 @@ static void rna_def_dopesheet(BlenderRNA *brna) prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY); RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line."); + RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS); RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of Shapekey related Animation data."); + RNA_def_property_ui_icon(prop, ICON_SHAPEKEY_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM); RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data."); + RNA_def_property_ui_icon(prop, ICON_CAMERA_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT); RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data."); + RNA_def_property_ui_icon(prop, ICON_MATERIAL_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM); RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data."); + RNA_def_property_ui_icon(prop, ICON_LAMP_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR); RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data."); + RNA_def_property_ui_icon(prop, ICON_CURVE_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR); RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data."); + RNA_def_property_ui_icon(prop, ICON_WORLD_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE); RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data."); + RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART); RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data."); + RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA); RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data."); + RNA_def_property_ui_icon(prop, ICON_META_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM); RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data."); + RNA_def_property_ui_icon(prop, ICON_ARMATURE_DATA, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE); RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data."); + RNA_def_property_ui_icon(prop, ICON_NODETREE, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA Data."); + RNA_def_property_ui_icon(prop, ICON_ACTION, 0); RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index edc088a7171..ef5f8ccb87b 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1278,9 +1278,9 @@ static void rna_def_space_graph(BlenderRNA *brna) /* this is basically the same as the one for the 3D-View, but with some entries ommitted */ static EnumPropertyItem gpivot_items[] = { - {V3D_CENTER, "BOUNDING_BOX_CENTER", 0, "Bounding Box Center", ""}, - {V3D_CURSOR, "CURSOR", 0, "2D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", 0, "Individual Centers", ""}, + {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, + {V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""}, + {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, //{V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""}, //{V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; -- cgit v1.2.3 From 764c4c94fa85d135cf7c54e49ccb7647a246fb18 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 02:20:55 +0000 Subject: use sets rather then tuples for enum/flags so you can use bitfield operators --- release/scripts/op/object.py | 4 ++- source/blender/python/intern/bpy_rna.c | 56 +++++++++++++++++++-------------- source/blender/python/intern/bpy_util.c | 6 ++-- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 8a02d10838b..86678176fc9 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -61,7 +61,9 @@ class SelectPattern(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - return wm.invoke_props_popup(self, event) + # return wm.invoke_props_popup(self, event) + wm.invoke_props_popup(self, event) + return ('RUNNING_MODAL',) def draw(self, context): layout = self.layout diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 9136a166365..f8e87912f1e 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -381,23 +381,22 @@ static int pyrna_string_to_enum(PyObject *item, PointerRNA *ptr, PropertyRNA *pr static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val) { - PyObject *ret= NULL; + PyObject *item, *ret= NULL; if(RNA_property_flag(prop) & PROP_ENUM_FLAG) { const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1]; - int index; - if ((index=RNA_property_enum_bitflag_identifiers(BPy_GetContext(), ptr, prop, val, identifier))) { - ret= PyTuple_New(index); - index= 0; + ret= PySet_New(NULL); + + if (RNA_property_enum_bitflag_identifiers(BPy_GetContext(), ptr, prop, val, identifier)) { + int index; - while(identifier[index]) { - PyTuple_SET_ITEM(ret, index, PyUnicode_FromString(identifier[index])); - index++; + for(index=0; identifier[index]; index++) { + item= PyUnicode_FromString(identifier[index]); + PySet_Add(ret, item); + Py_DECREF(item); } - } - else { - ret= PyTuple_New(0); + } } else { @@ -559,7 +558,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw); -PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func) +static PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func) { static PyMethodDef func_meth = {"", (PyCFunction)pyrna_func_call, METH_VARARGS|METH_KEYWORDS, "python rna function"}; PyObject *self; @@ -584,6 +583,7 @@ PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func) } + int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *value, const char *error_prefix) { /* XXX hard limits should be checked here */ @@ -678,28 +678,36 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v } case PROP_ENUM: { - int val, i; + int val= 0, tmpval; if (PyUnicode_Check(value)) { if (!pyrna_string_to_enum(value, ptr, prop, &val, error_prefix)) return -1; } - else if (PyTuple_Check(value)) { - /* tuple of enum items, concatenate all values with OR */ - val= 0; - for (i= 0; i < PyTuple_Size(value); i++) { - int tmpval; - - /* PyTuple_GET_ITEM returns a borrowed reference */ - if (!pyrna_string_to_enum(PyTuple_GET_ITEM(value, i), ptr, prop, &tmpval, error_prefix)) - return -1; + else if (PyAnySet_Check(value)) { + if(RNA_property_flag(prop) & PROP_ENUM_FLAG) { + /* set of enum items, concatenate all values with OR */ + + /* set looping */ + Py_ssize_t pos = 0; + PyObject *key; + long hash; - val |= tmpval; + while (_PySet_NextEntry(value, &pos, &key, &hash)) { + if (!pyrna_string_to_enum(key, ptr, prop, &tmpval, error_prefix)) + return -1; + + val |= tmpval; + } + } + else { + PyErr_Format(PyExc_TypeError, "%.200s, %.200s.%.200s is not a bitflag enum type", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop)); + return -1; } } else { char *enum_str= pyrna_enum_as_string(ptr, prop); - PyErr_Format(PyExc_TypeError, "%.200s expected a string enum or a tuple of strings in (%.200s)", error_prefix, enum_str); + PyErr_Format(PyExc_TypeError, "%.200s expected a string enum or a set of strings in (%.200s)", error_prefix, enum_str); MEM_freeN(enum_str); return -1; } diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c index cd53ba9c069..db3798146d3 100644 --- a/source/blender/python/intern/bpy_util.c +++ b/source/blender/python/intern/bpy_util.c @@ -92,11 +92,13 @@ int BPY_flag_from_seq(BPY_flag_def *flagdef, PyObject *seq, int *flag) if(cstring) { fd= flagdef; while(fd->name) { - if (strcmp(cstring, fd->name) == 0) + if (strcmp(cstring, fd->name) == 0) { (*flag) |= fd->flag; + break; + } fd++; } - if (fd==NULL) { /* could not find a match */ + if (fd->name==NULL) { /* could not find a match */ error_val= 1; } } else { -- cgit v1.2.3 From 91102d96fcaf8799c4143c3234f213bd0d692b32 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 03:37:43 +0000 Subject: Fix for [#20057] Shift F for setting brush strenght can never get to 1 --- source/blender/windowmanager/intern/wm_operators.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index f2ba9bb8eb6..8c819c1e3a0 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2378,7 +2378,7 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) if(event->ctrl) { if(mode == WM_RADIALCONTROL_STRENGTH) - new_value = ((int)(new_value * 100) / 10*10) / 100.0f; + new_value = ((int)ceil(new_value * 10.f) * 10.0f) / 100.f; else new_value = ((int)new_value + 5) / 10*10; } -- cgit v1.2.3 From b672e9f9c0cb0784946111fda6312375db3ed802 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 10:22:58 +0000 Subject: Fix for [#19541] Buttons etc that are too close to the window edge don't react to input --- source/blender/editors/screen/area.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index f663e5f0a21..ea56e9fd31b 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1343,6 +1343,8 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex /* only allow scrolling in vertical direction */ v2d->keepofs |= V2D_LOCKOFS_X|V2D_KEEPOFS_Y; v2d->keepofs &= ~(V2D_LOCKOFS_Y|V2D_KEEPOFS_X); + v2d->scroll |= V2D_SCROLL_HORIZONTAL_HIDE; + v2d->scroll &= ~V2D_SCROLL_VERTICAL_HIDE; // don't jump back when panels close or hide if(!newcontext) @@ -1357,6 +1359,8 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_LOCKOFS_Y|V2D_KEEPOFS_X|V2D_KEEPOFS_Y); //v2d->keepofs |= V2D_LOCKOFS_Y|V2D_KEEPOFS_X; //v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_KEEPOFS_Y); + v2d->scroll |= V2D_SCROLL_VERTICAL_HIDE; + v2d->scroll &= ~V2D_SCROLL_HORIZONTAL_HIDE; // don't jump back when panels close or hide if(!newcontext) -- cgit v1.2.3 From a94a2c8c722f50415dcb2c0dad536f787eb42e2b Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 10:28:36 +0000 Subject: Fix for [#20286] New objects have no Display Type Removed a few more references to shaded mode --- source/blender/blenkernel/intern/exotic.c | 2 +- source/blender/blenkernel/intern/object.c | 2 +- source/blender/editors/object/object_modifier.c | 2 +- source/blender/makesrna/intern/rna_modifier.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 48a05c2f6a7..2a0759e6c36 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -4050,7 +4050,7 @@ static void dxf_read(Scene *scene, char *filename) ob->type= OB_MESH; - ob->dt= OB_SHADED; + ob->dt= OB_TEXTURE; ob->trackflag= OB_POSY; ob->upflag= OB_POSZ; diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 41255415b67..5806b269e7d 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -982,7 +982,7 @@ Object *add_only_object(int type, char *name) unit_m4(ob->constinv); unit_m4(ob->parentinv); unit_m4(ob->obmat); - ob->dt= OB_SHADED; + ob->dt= OB_TEXTURE; ob->empty_drawtype= OB_ARROWS; ob->empty_drawsize= 1.0; diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 0c1e6b86a99..14c342d4ecd 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -185,7 +185,7 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod DAG_scene_sort(scene); } else if(md->type == eModifierType_Smoke) { - ob->dt = OB_SHADED; + ob->dt = OB_TEXTURE; } BLI_remlink(&ob->modifiers, md); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index a86d889d6cf..d5cdad08923 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -224,7 +224,7 @@ static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr) case MOD_SMOKE_TYPE_COLL: case 0: default: - ob->dt = OB_SHADED; + ob->dt = OB_TEXTURE; break; } -- cgit v1.2.3 From f888903eaf45b02a41b100b8ef758a9913102688 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 10:40:55 +0000 Subject: Fix for [#20159] Orthographic camera + viewport Patch provided by Aurel W. Thanks! --- source/blender/editors/space_view3d/view3d_edit.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 844ee2973ce..0ea185589e1 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1628,36 +1628,43 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) RegionView3D *rv3d= CTX_wm_region_view3d(C); Scene *scene= CTX_data_scene(C); static int perspo=RV3D_PERSP; - int viewnum, align_active; + int viewnum, align_active, nextperspo; viewnum = RNA_enum_get(op->ptr, "type"); align_active = RNA_boolean_get(op->ptr, "align_active"); + /* Use this to test if we started out with a camera */ + if (rv3d->persp == RV3D_CAMOB) { + nextperspo= rv3d->lpersp; + } else { + nextperspo= perspo; + } + switch (viewnum) { case RV3D_VIEW_BOTTOM : - axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_BACK: - axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, perspo, align_active); + axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, nextperspo, align_active); break; case RV3D_VIEW_LEFT: - axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, perspo, align_active); + axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, nextperspo, align_active); break; case RV3D_VIEW_TOP: - axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_FRONT: - axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_RIGHT: - axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, perspo, align_active); + axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, nextperspo, align_active); break; case RV3D_VIEW_CAMERA: -- cgit v1.2.3 From 63fbd76548f0decb7fe2fc171bf083a21fa3e643 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 10:41:16 +0000 Subject: [#20021] Non-ASCII characters on blender 2.5 alpha 0 could not redo the bug on my system, fix suggested by Yomgui on blendercoders. --- source/blender/python/intern/bpy_interface.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 9a14717b060..d4d0cbf602f 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -313,11 +313,25 @@ void BPY_start_python( int argc, char **argv ) /* sigh, why do python guys not have a char** version anymore? :( */ { int i; +#if 0 PyObject *py_argv= PyList_New(argc); - for (i=0; i Date: Mon, 7 Dec 2009 11:02:59 +0000 Subject: Talked with Aligorith and made changes as follows to DopeSheet struct: * Removed only_drivers, this is an internal flag * Corrected notifiers --- source/blender/makesrna/intern/rna_action.c | 39 +++++++++++++---------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 2df26f3611c..3708d810cca 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -58,105 +58,100 @@ static void rna_def_dopesheet(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL); RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected Objects."); RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ - - prop= RNA_def_property(srna, "only_drivers", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYDRIVERS); - RNA_def_property_ui_text(prop, "Only Drivers", "Only include Driver data from Animation data."); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "only_nla", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYNLA); RNA_def_property_ui_text(prop, "Only NLA", "Only include NLA data from Animation data."); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SELEDIT); RNA_def_property_ui_text(prop, "Use Filter", "Indicates if filtering options must be taken into account."); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY); RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line."); RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS); RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of Shapekey related Animation data."); RNA_def_property_ui_icon(prop, ICON_SHAPEKEY_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM); RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data."); RNA_def_property_ui_icon(prop, ICON_CAMERA_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT); RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data."); RNA_def_property_ui_icon(prop, ICON_MATERIAL_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM); RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data."); RNA_def_property_ui_icon(prop, ICON_LAMP_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR); RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data."); RNA_def_property_ui_icon(prop, ICON_CURVE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR); RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data."); RNA_def_property_ui_icon(prop, ICON_WORLD_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE); RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data."); RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART); RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data."); RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA); RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data."); RNA_def_property_ui_icon(prop, ICON_META_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM); RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data."); RNA_def_property_ui_icon(prop, ICON_ARMATURE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE); RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data."); RNA_def_property_ui_icon(prop, ICON_NODETREE, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA Data."); RNA_def_property_ui_icon(prop, ICON_ACTION, 0); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED); RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden."); - RNA_def_property_update(prop, NC_ANIMATION, NULL); /* XXX fix notifier */ + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); } static void rna_def_action_group(BlenderRNA *brna) -- cgit v1.2.3 From c1c5acae14517fa2e365816caf9041dbeb956ac0 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 11:50:05 +0000 Subject: Porting of Graph Editor's UI to python, just header done for now. Brecht, I added a Layout template function, template_dopesheet_filter -> uiTemplateDopeSheetFilter, this creates the group of buttons for filtering ID type (and some other options) for animation editors (Graph, NLA and Dopesheet). I hope this is all right, if not, we can move this maybe to a .py file as a function for reuse. --- release/scripts/ui/space_graph.py | 189 ++++++++++++++++ source/blender/editors/include/UI_interface.h | 1 + .../editors/interface/interface_templates.c | 48 ++++- source/blender/editors/space_graph/graph_header.c | 238 --------------------- source/blender/editors/space_graph/space_graph.c | 21 +- source/blender/makesrna/intern/rna_ui_api.c | 5 + 6 files changed, 244 insertions(+), 258 deletions(-) create mode 100644 release/scripts/ui/space_graph.py diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py new file mode 100644 index 00000000000..bc1e2c5334b --- /dev/null +++ b/release/scripts/ui/space_graph.py @@ -0,0 +1,189 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# +import bpy + + +class GRAPH_HT_header(bpy.types.Header): + bl_space_type = 'GRAPH_EDITOR' + + def draw(self, context): + layout = self.layout + + st = context.space_data + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + + sub.menu("GRAPH_MT_view") + sub.menu("GRAPH_MT_select") + sub.menu("GRAPH_MT_channel") + sub.menu("GRAPH_MT_key") + + layout.prop(st, "mode", text="") + + layout.template_dopesheet_filter(st.dopesheet) + + layout.prop(st, "autosnap", text="") + layout.prop(st, "pivot_point", text="", icon_only=True) + + row = layout.row(align=True) + row.operator("graph.copy", text="", icon='ICON_COPYDOWN') + row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') + + row = layout.row(align=True) + # these likely need new icons + row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') + row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') + + +class GRAPH_MT_view(bpy.types.Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + + layout.separator() + layout.operator("graph.properties") + + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_cursor") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") + + layout.separator() + layout.operator("graph.handles_view_toggle") + layout.prop(st, "only_selected_curves_handles") + layout.prop(st, "only_selected_keyframe_handles") + layout.operator("anim.time_toggle") + + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("graph.previewrange_set") + + layout.separator() + layout.operator("graph.frame_jump") + layout.operator("graph.view_all") + + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") + +class GRAPH_MT_select(bpy.types.Menu): + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("graph.select_all_toggle") + layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True + + layout.separator() + layout.operator("graph.select_border") + layout.operator("graph.select_border", text="Border Axis Range").axis_range = True + + layout.separator() + layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' + + layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + +class GRAPH_MT_channel(bpy.types.Menu): + bl_label = "Channel" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") + + layout.separator() + layout.operator("anim.channels_editable_toggle") + + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") + +class GRAPH_MT_key(bpy.types.Menu): + bl_label = "Key" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.menu("GRAPH_MT_key_transform", text="Transform") + + layout.operator_menu_enum("graph.snap", property="type", text="Snap") + layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") + + layout.separator() + layout.operator("graph.keyframe_insert") + layout.operator("graph.fmodifier_add") + + layout.separator() + layout.operator("graph.duplicate") + layout.operator("graph.delete") + + layout.separator() + layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") + + layout.separator() + layout.operator("graph.clean") + layout.operator("graph.sample") + layout.operator("graph.bake") + + layout.separator() + layout.operator("graph.copy") + layout.operator("graph.paste") + +class GRAPH_MT_key_transform(bpy.types.Menu): + bl_label = "Transform" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.rotate", text="Rotate") + layout.operator("tfm.resize", text="Scale") + + +bpy.types.register(GRAPH_HT_header) # header/menu classes +bpy.types.register(GRAPH_MT_view) +bpy.types.register(GRAPH_MT_select) +bpy.types.register(GRAPH_MT_channel) +bpy.types.register(GRAPH_MT_key) +bpy.types.register(GRAPH_MT_key_transform) + diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 608954eeed8..aed1e5d5f0d 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -636,6 +636,7 @@ uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout); /* templates */ 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); void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 9402da2f2c6..bb893294910 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -60,12 +60,58 @@ void ui_template_fix_linking() void uiTemplateHeader(uiLayout *layout, bContext *C, int menus) { uiBlock *block; - + block= uiLayoutAbsoluteBlock(layout); if(menus) ED_area_header_standardbuttons(C, block, 0); else ED_area_header_switchbutton(C, block, 0); } +/********************** DopeSheet Filter Template *************************/ + +void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr) +{ + Main *mainptr= CTX_data_main(C); + ScrArea *sa= CTX_wm_area(C); + uiLayout *row= layout; + short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA)); + + /* more 'generic' filtering options */ + if (nlaActive) + row= uiLayoutRow(layout, 1); + + uiItemR(row, "", 0, ptr, "only_selected", 0); + + if (nlaActive) + uiItemR(row, "", 0, ptr, "include_missing_nla", 0); + + if (nlaActive) + row= layout; + + /* 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); + + if (mainptr && mainptr->key.first) + uiItemR(row, "", 0, ptr, "display_shapekeys", 0); + if (mainptr && mainptr->mat.first) + uiItemR(row, "", 0, ptr, "display_material", 0); + if (mainptr && mainptr->lamp.first) + uiItemR(row, "", 0, ptr, "display_lamp", 0); + if (mainptr && mainptr->camera.first) + uiItemR(row, "", 0, ptr, "display_camera", 0); + if (mainptr && mainptr->curve.first) + uiItemR(row, "", 0, ptr, "display_curve", 0); + if (mainptr && mainptr->mball.first) + uiItemR(row, "", 0, ptr, "display_metaball", 0); + if (mainptr && mainptr->armature.first) + uiItemR(row, "", 0, ptr, "display_armature", 0); + if (mainptr && mainptr->particle.first) + uiItemR(row, "", 0, ptr, "display_particle", 0); +} + /********************** Search Callbacks *************************/ typedef struct TemplateID { diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index bf8777164c5..8aeb76cae0f 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -63,144 +63,6 @@ #include "graph_intern.h" /* ********************************************************* */ -/* Menu Defines... */ - -static void graph_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa= CTX_wm_area(C); - SpaceIpo *sipo= CTX_wm_space_graph(C); - PointerRNA spaceptr; - - /* retrieve state */ - RNA_pointer_create(&sc->id, &RNA_SpaceGraphEditor, sipo, &spaceptr); - - /* create menu */ - uiItemO(layout, NULL, ICON_MENU_PANEL, "GRAPH_OT_properties"); - - uiItemS(layout); - - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); - uiItemR(layout, NULL, 0, &spaceptr, "show_cursor", 0); - uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0); - uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0); - - if (sipo->flag & SIPO_NOHANDLES) - uiItemO(layout, "Show Handles", ICON_CHECKBOX_DEHLT, "GRAPH_OT_handles_view_toggle"); - else - uiItemO(layout, "Show Handles", ICON_CHECKBOX_HLT, "GRAPH_OT_handles_view_toggle"); - - uiItemR(layout, NULL, 0, &spaceptr, "only_selected_curves_handles", 0); - uiItemR(layout, NULL, 0, &spaceptr, "only_selected_keyframe_handles", 0); - - - if (sipo->flag & SIPO_DRAWTIME) - uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); - else - uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set"); - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear"); - - uiItemO(layout, NULL, 0, "GRAPH_OT_previewrange_set"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_frame_jump"); - - uiItemO(layout, NULL, 0, "GRAPH_OT_view_all"); - - if (sa->full) - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow - else - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctrl DownArrow -} - -static void graph_selectmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "GRAPH_OT_select_all_toggle"); - uiItemBooleanO(layout, "Invert All", 0, "GRAPH_OT_select_all_toggle", "invert", 1); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_select_border"); - uiItemBooleanO(layout, "Border Axis Range", 0, "GRAPH_OT_select_border", "axis_range", 1); - - uiItemS(layout); - - uiItemEnumO(layout, "Columns on Selected Keys", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_KEYS); - uiItemEnumO(layout, "Column on Current Frame", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_CFRA); - - uiItemEnumO(layout, "Columns on Selected Markers", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_MARKERS_COLUMN); - uiItemEnumO(layout, "Between Selected Markers", 0, "GRAPH_OT_select_column", "mode", GRAPHKEYS_COLUMNSEL_MARKERS_BETWEEN); -} - -static void graph_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_toggle"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_enable"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_disable"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_channels_editable_toggle"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_channels_expand"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_collapse"); -} - -static void graph_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, "Grab/Move", 0, "TFM_OT_translate"); - uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND); - uiItemO(layout, "Rotate", 0, "TFM_OT_rotate"); - uiItemO(layout, "Scale", 0, "TFM_OT_resize"); -} - -static void graph_editmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemMenuF(layout, "Transform", 0, graph_edit_transformmenu, NULL); - uiItemMenuEnumO(layout, "Snap", 0, "GRAPH_OT_snap", "type"); - uiItemMenuEnumO(layout, "Mirror", 0, "GRAPH_OT_mirror", "type"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_keyframe_insert"); - uiItemO(layout, NULL, 0, "GRAPH_OT_fmodifier_add"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_duplicate"); - uiItemO(layout, NULL, 0, "GRAPH_OT_delete"); - - uiItemS(layout); - - uiItemMenuEnumO(layout, "Handle Type", 0, "GRAPH_OT_handle_type", "type"); - uiItemMenuEnumO(layout, "Interpolation Mode", 0, "GRAPH_OT_interpolation_type", "type"); - uiItemMenuEnumO(layout, "Extrapolation Mode", 0, "GRAPH_OT_extrapolation_type", "type"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_clean"); - uiItemO(layout, NULL, 0, "GRAPH_OT_sample"); - uiItemO(layout, NULL, 0, "GRAPH_OT_bake"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "GRAPH_OT_copy"); - uiItemO(layout, NULL, 0, "GRAPH_OT_paste"); -} - -/* ********************************************************* */ - -enum { - B_REDR = 0, - B_MODECHANGE, -} eGraphEdit_Events; static void do_graph_buttons(bContext *C, void *arg, int event) { @@ -208,104 +70,4 @@ static void do_graph_buttons(bContext *C, void *arg, int event) ED_area_tag_redraw(CTX_wm_area(C)); } -static char *garound_pup(const bContext *C) -{ - static char string[512]; - char *str = string; - - str += sprintf(str, "%s", "Pivot: %t"); - str += sprintf(str, "%s", "|Bounding Box Center %x0"); - //str += sprintf(str, "%s", "|Median Point %x3"); - str += sprintf(str, "%s", "|2D Cursor %x1"); - str += sprintf(str, "%s", "|Individual Centers %x2"); - return string; -} - -void graph_header_buttons(const bContext *C, ARegion *ar) -{ - SpaceIpo *sipo= CTX_wm_space_graph(C); - ScrArea *sa= CTX_wm_area(C); - uiBlock *block; - int xco, yco= 3; - - block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS); - uiBlockSetHandleFunc(block, do_graph_buttons, NULL); - - /* standard buttosn in header - viewtype selector and menus */ - xco= ED_area_header_standardbuttons(C, block, yco); - - if ((sa->flag & HEADER_NO_PULLDOWN)==0) { - int xmax; - - xmax= GetButStringLength("View"); - uiDefMenuBut(block, graph_viewmenu, NULL, "View", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Select"); - uiDefMenuBut(block, graph_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Channel"); - uiDefMenuBut(block, graph_channelmenu, NULL, "Channel", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Key"); - uiDefMenuBut(block, graph_editmenu, NULL, "Key", xco, yco, xmax-3, 20, ""); - xco+= xmax; - } - - uiBlockSetEmboss(block, UI_EMBOSS); - - /* mode selector */ - uiDefButS(block, MENU, B_MODECHANGE, - "Editor Mode %t|F-Curve Editor %x0|Drivers %x1", - xco,yco,110,YIC, &sipo->mode, 0, 1, 0, 0, - "Editing modes for this editor"); - xco+= 120; - - /* filtering buttons */ - xco= ANIM_headerUI_standard_buttons(C, sipo->ads, block, xco, yco); - - /* auto-snap selector */ - if (sipo->flag & SIPO_DRAWTIME) { - uiDefButS(block, MENU, B_REDR, - "Auto-Snap Keyframes %t|No Time-Snap %x0|Nearest Second %x2|Nearest Marker %x3", - xco,yco,90,YIC, &sipo->autosnap, 0, 1, 0, 0, - "Auto-snapping mode for keyframe times when transforming"); - } - else { - uiDefButS(block, MENU, B_REDR, - "Auto-Snap Keyframes %t|No Time-Snap %x0|Nearest Frame %x2|Nearest Marker %x3", - xco,yco,90,YIC, &sipo->autosnap, 0, 1, 0, 0, - "Auto-snapping mode for keyframe times when transforming"); - } - xco += 98; - - /* pivot mode setting */ - uiDefIconTextButI(block, ICONTEXTROW,B_REDR, ICON_ROTATE, garound_pup(C), xco,yco,XIC+10,YIC, &(sipo->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot"); - xco+= XIC+10; - - /* copy + paste */ - uiBlockBeginAlign(block); - uiDefIconButO(block, BUT, "GRAPH_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco+=XIC,yco,XIC,YIC, "Copies the selected keyframes from the selected channel(s) to the buffer"); - uiDefIconButO(block, BUT, "GRAPH_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco+=XIC,yco,XIC,YIC, "Pastes the keyframes from the buffer"); - uiBlockEndAlign(block); - xco += (XIC + 8); - - /* ghost curves */ - // XXX these icons need to be changed - if (sipo->ghostCurves.first) - uiDefIconButO(block, BUT, "GRAPH_OT_ghost_curves_clear", WM_OP_INVOKE_REGION_WIN, ICON_GHOST_DISABLED, xco,yco,XIC,YIC, "Clear F-Curve snapshots (Ghosts) for this Graph Editor instance"); - else - uiDefIconButO(block, BUT, "GRAPH_OT_ghost_curves_create", WM_OP_INVOKE_REGION_WIN, ICON_GHOST_ENABLED, xco,yco,XIC,YIC, "Create snapshot (Ghosts) of selected F-Curves as background aid for this Graph Editor instance"); - xco+= XIC; - - - /* always as last */ - UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, (int)(ar->v2d.tot.ymax - ar->v2d.tot.ymin)); - - uiEndBlock(C, block); - uiDrawBlock(C, block); -} - diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 24f87906391..f6d25bd7285 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -350,29 +350,12 @@ static void graph_channel_area_draw(const bContext *C, ARegion *ar) /* add handlers, stuff you only do once or on area/region changes */ static void graph_header_area_init(wmWindowManager *wm, ARegion *ar) { - UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy); + ED_region_header_init(ar); } static void graph_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); - glClear(GL_COLOR_BUFFER_BIT); - - /* set view2d view matrix for scrolling (without scrollers) */ - UI_view2d_view_ortho(C, &ar->v2d); - - graph_header_buttons(C, ar); - - /* restore view matrix? */ - UI_view2d_view_restore(C); + ED_region_header(C, ar); } /* add handlers, stuff you only do once or on area/region changes */ diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index e15cc130899..6086cdfdec2 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -254,6 +254,11 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_boolean(func, "menus", 1, "", "The header has menus, and should show menu expander."); + func= RNA_def_function(srna, "template_dopesheet_filter", "uiTemplateDopeSheetFilter"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT); + parm= RNA_def_pointer(func, "dopesheet", "DopeSheet", "", "DopeSheet settings holding filter options."); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL); + func= RNA_def_function(srna, "template_ID", "uiTemplateID"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); api_ui_item_rna_common(func); -- cgit v1.2.3 From 73fbc0f02d37b1477dc7f275b734d49834b7af61 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 12:11:28 +0000 Subject: pep8 compliance cleanups. --- release/scripts/ui/space_graph.py | 51 +++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index bc1e2c5334b..38f6b526e9a 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -33,23 +33,23 @@ class GRAPH_HT_header(bpy.types.Header): if context.area.show_menus: sub = row.row(align=True) - + sub.menu("GRAPH_MT_view") sub.menu("GRAPH_MT_select") sub.menu("GRAPH_MT_channel") sub.menu("GRAPH_MT_key") - + layout.prop(st, "mode", text="") - + layout.template_dopesheet_filter(st.dopesheet) - + layout.prop(st, "autosnap", text="") layout.prop(st, "pivot_point", text="", icon_only=True) - + row = layout.row(align=True) row.operator("graph.copy", text="", icon='ICON_COPYDOWN') row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') - + row = layout.row(align=True) # these likely need new icons row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') @@ -73,13 +73,13 @@ class GRAPH_MT_view(bpy.types.Menu): layout.prop(st, "show_cursor") layout.prop(st, "show_sliders") layout.prop(st, "automerge_keyframes") - + layout.separator() layout.operator("graph.handles_view_toggle") layout.prop(st, "only_selected_curves_handles") layout.prop(st, "only_selected_keyframe_handles") layout.operator("anim.time_toggle") - + layout.separator() layout.operator("anim.previewrange_set") layout.operator("anim.previewrange_clear") @@ -88,11 +88,12 @@ class GRAPH_MT_view(bpy.types.Menu): layout.separator() layout.operator("graph.frame_jump") layout.operator("graph.view_all") - + layout.separator() layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") + class GRAPH_MT_select(bpy.types.Menu): bl_label = "Select" @@ -103,18 +104,19 @@ class GRAPH_MT_select(bpy.types.Menu): # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None layout.operator("graph.select_all_toggle") layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True - + layout.separator() layout.operator("graph.select_border") layout.operator("graph.select_border", text="Border Axis Range").axis_range = True - + layout.separator() layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' - + layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + class GRAPH_MT_channel(bpy.types.Menu): bl_label = "Channel" @@ -125,14 +127,15 @@ class GRAPH_MT_channel(bpy.types.Menu): layout.operator("anim.channels_setting_toggle") layout.operator("anim.channels_setting_enable") layout.operator("anim.channels_setting_disable") - + layout.separator() layout.operator("anim.channels_editable_toggle") - + layout.separator() layout.operator("anim.channels_expand") layout.operator("anim.channels_collapse") - + + class GRAPH_MT_key(bpy.types.Menu): bl_label = "Key" @@ -141,32 +144,33 @@ class GRAPH_MT_key(bpy.types.Menu): layout.column() layout.menu("GRAPH_MT_key_transform", text="Transform") - + layout.operator_menu_enum("graph.snap", property="type", text="Snap") layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") - + layout.separator() layout.operator("graph.keyframe_insert") layout.operator("graph.fmodifier_add") - + layout.separator() layout.operator("graph.duplicate") layout.operator("graph.delete") - + layout.separator() layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") - + layout.separator() layout.operator("graph.clean") layout.operator("graph.sample") layout.operator("graph.bake") - + layout.separator() layout.operator("graph.copy") layout.operator("graph.paste") - + + class GRAPH_MT_key_transform(bpy.types.Menu): bl_label = "Transform" @@ -178,7 +182,7 @@ class GRAPH_MT_key_transform(bpy.types.Menu): layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' layout.operator("tfm.rotate", text="Rotate") layout.operator("tfm.resize", text="Scale") - + bpy.types.register(GRAPH_HT_header) # header/menu classes bpy.types.register(GRAPH_MT_view) @@ -186,4 +190,3 @@ bpy.types.register(GRAPH_MT_select) bpy.types.register(GRAPH_MT_channel) bpy.types.register(GRAPH_MT_key) bpy.types.register(GRAPH_MT_key_transform) - -- cgit v1.2.3 From 926201acf8f451bd9a240013ba972a8488c43abe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 14:09:53 +0000 Subject: - string copy without .py wasnt terminating the string - console import autocomplete wasnt including modules defined in C like BGL, Mathutils --- release/scripts/modules/console/complete_import.py | 5 ++++- source/blender/python/generic/bpy_internal_import.c | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/release/scripts/modules/console/complete_import.py b/release/scripts/modules/console/complete_import.py index 9166dee2bb2..65a507b349d 100644 --- a/release/scripts/modules/console/complete_import.py +++ b/release/scripts/modules/console/complete_import.py @@ -69,10 +69,13 @@ def get_root_modules(): modules += sys.builtin_module_names + # needed for modules defined in C + modules += sys.modules.keys() + modules = list(set(modules)) if '__init__' in modules: modules.remove('__init__') - modules = sorted(set(modules)) + modules = sorted(modules) if store: ROOT_MODULES = modules return modules diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c index d3b8b19693f..002467687c4 100644 --- a/source/blender/python/generic/bpy_internal_import.c +++ b/source/blender/python/generic/bpy_internal_import.c @@ -74,8 +74,9 @@ PyObject *bpy_text_import( Text *text ) } } - len= strlen(text->id.name+2) - 3; + len= strlen(text->id.name+2); strncpy(modulename, text->id.name+2, len); + modulename[len - 3]= '\0'; /* remove .py */ return PyImport_ExecCodeModule(modulename, text->compiled); } -- cgit v1.2.3 From 74b80f8c3d30b8fc64fdf6eb023641ec94c6d57e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 15:54:27 +0000 Subject: crashfix, duplicating armatures with ID-Props assigned to the bones didnt copy the bone. --- source/blender/blenkernel/intern/armature.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 418c9f00596..e53e4a1155b 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -184,6 +184,9 @@ static void copy_bonechildren (Bone* newBone, Bone* oldBone, Bone* actBone, Bone if(oldBone == actBone) *newActBone= newBone; + if(oldBone->prop) + newBone->prop= IDP_CopyProperty(oldBone->prop); + /* Copy this bone's list*/ BLI_duplicatelist(&newBone->childbase, &oldBone->childbase); -- cgit v1.2.3 From 161871316eee9eddaef3d653f436f36fc0726001 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Dec 2009 16:59:10 +0000 Subject: Bugfix: WM could access freed memory when testing for click event after opening a new file (and freeing the window and its event queue). --- source/blender/windowmanager/intern/wm_event_system.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index c19d1000573..3a74dbe0b16 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1163,11 +1163,11 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) /* fileread case */ if(CTX_wm_window(C)==NULL) - break; + return action; } /* test for CLICK event */ - if (event->val == KM_RELEASE && (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL))) { + if ((action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) && event->val == KM_RELEASE) { wmWindow *win = CTX_wm_window(C); if (win && win->last_type == event->type && win->last_val == KM_PRESS) { -- cgit v1.2.3 From f8f7f5755768fa745b5dc759974ff38c45261a9c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 17:21:30 +0000 Subject: - bone.basename now only gets the name before the first '.', since names like finger.01.L are common - updated delta not to remove a bone - spine and neck rigs interpolation bones are now axis aligned to the control bone - palm tag is expected on the pointer finger rather then the wrist - operate on bone children first working up the chain (not essential but more pradictable) --- release/scripts/modules/bpy_types.py | 3 ++- release/scripts/modules/rigify/__init__.py | 11 ++++++++--- release/scripts/modules/rigify/arm.py | 30 +++++++++++++----------------- release/scripts/modules/rigify/delta.py | 19 +++++++++++-------- release/scripts/modules/rigify/leg.py | 2 +- release/scripts/modules/rigify/neck.py | 5 +++-- release/scripts/modules/rigify/palm.py | 26 +++++++++++++------------- release/scripts/modules/rigify/spine.py | 22 ++++++++-------------- 8 files changed, 59 insertions(+), 59 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 9e4f3c9f836..28ea2d71be8 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -76,7 +76,8 @@ class _GenericBone: @property def basename(self): - return self.name.rsplit(".", 1)[0] + #return self.name.rsplit(".", 1)[0] + return self.name.split(".")[0] @property def parent_recursive(self): diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index c67af38df8a..c2568d3eb5d 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -438,14 +438,19 @@ def generate_rig(context, obj_orig, prefix="ORG-"): bone_typeinfo.append((submod_name, type_func)) - # now we have all the info about bones we can start operating on them + # sort bones, not needed but gives more pradictable execution which may be useful in rare cases + bones_sorted = obj.pose.bones.values() + bones_sorted.sort(key=lambda pbone: pbone.name) # first sort by names + bones_sorted.sort(key=lambda pbone: - len(pbone.parent_recursive)) # children before parents - for pbone in obj.pose.bones: + # now we have all the info about bones we can start operating on them + # for pbone in obj.pose.bones: + for pbone in bones_sorted: bone_name = pbone.name if bone_name not in bone_typeinfos: continue - + bone_def_dict = bone_definitions[bone_name] # Only blend results from the same submodule, eg. diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 4e0d8642831..fff52aa3ab4 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -64,10 +64,11 @@ def metarig_definition(obj, orig_bone_name): mt.update() mt.shoulder_p = mt.arm_p.parent - mt.shoulder = mt.shoulder_p.name - + if not mt.shoulder_p: raise Exception("could not find 'arm' parent, skipping:", orig_bone_name) + print(mt.shoulder_p) + mt.shoulder = mt.shoulder_p.name # We could have some bones attached, find the bone that has this as its 2nd parent hands = [] @@ -119,13 +120,13 @@ def main(obj, definitions, base_names): mt.update() # Add the edit bones - ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % base_names[mt.hand]) ik.hand = ik.hand_e.name - ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % base_names[mt.arm]) ik.arm = ik.arm_e.name - ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % base_names[mt.forearm]) ik.forearm = ik.forearm_e.name ik.arm_e.parent = mt.arm_e.parent @@ -164,32 +165,27 @@ def main(obj, definitions, base_names): bpy.ops.object.mode_set(mode='EDIT') - ik.arm = ik.arm - ik.forearm = ik.forearm - ik.hand = ik.hand - ik.pole = ik.pole - def chain_switch(prefix="MCH-%s"): - + print(mt.obj.mode) sw.update() mt.update() - sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder) + sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % base_names[mt.shoulder]) sw.shoulder = sw.shoulder_e.name sw.shoulder_e.parent = mt.shoulder_e.parent sw.shoulder_e.connected = mt.shoulder_e.connected - sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm) + sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % base_names[mt.arm]) sw.arm = sw.arm_e.name sw.arm_e.parent = sw.shoulder_e sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected - sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm) + sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % base_names[mt.forearm]) sw.forearm = sw.forearm_e.name sw.forearm_e.parent = sw.arm_e sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected - sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand) + sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % base_names[mt.hand]) sw.hand = sw.hand_e.name sw.hand_e.parent = sw.forearm_e sw.hand_e.connected = arm.edit_bones[mt.hand].connected @@ -271,7 +267,7 @@ def main(obj, definitions, base_names): def chain_shoulder(prefix="MCH-%s"): - sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket") + sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % base_names[mt.arm]) + "_socket") sw.socket = sw.socket_e.name sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail @@ -287,7 +283,7 @@ def main(obj, definitions, base_names): # ***** add the shoulder hinge # yes this is correct, the shoulder copy gets the arm's name - ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge") + ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % base_names[mt.arm]) + "_hinge") ex.arm_hinge = ex.arm_hinge_e.name offset = ex.arm_hinge_e.length / 2.0 diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index b26a8ebac1e..fedb417ee67 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -81,24 +81,27 @@ def main(obj, bone_definition, base_names): child_head = child_ebone.head.copy() child_tail = child_ebone.tail.copy() - arm.edit_bones.remove(delta_ebone) - del delta_ebone # cant use this + #arm.edit_bones.remove(delta_ebone) + #del delta_ebone # cant use this + del child_pbone bpy.ops.object.mode_set(mode='OBJECT') - + + # Move the child bone to the deltas location obj.animation_data_create() - child_pbone = obj.pose.bones[child_name] - + delta_pbone = obj.pose.bones[delta_name] + # child_pbone = obj.pose.bones[child_name] + # ------------------- drivers - child_pbone.rotation_mode = 'XYZ' + delta_pbone.rotation_mode = 'XYZ' rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart() rot = rot.invert().toEuler() - fcurve_drivers = child_pbone.driver_add("rotation_euler", -1) + fcurve_drivers = delta_pbone.driver_add("rotation_euler", -1) for i, fcurve_driver in enumerate(fcurve_drivers): driver = fcurve_driver.driver driver.type = 'AVERAGE' @@ -111,7 +114,7 @@ def main(obj, bone_definition, base_names): # tricky, find the transform to drive the bone to this location. delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead) - fcurve_drivers = child_pbone.driver_add("location", -1) + fcurve_drivers = delta_pbone.driver_add("location", -1) for i, fcurve_driver in enumerate(fcurve_drivers): driver = fcurve_driver.driver driver.type = 'AVERAGE' diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 92bce0f3c2c..bdeef5db29a 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -105,7 +105,7 @@ def metarig_definition(obj, orig_bone_name): children = bone.children # Now there must be 2 children, only one connected if len(children) != 2: - raise Exception("expected the foot to have 2 children") + raise Exception("expected the foot bone:'%s' to have 2 children" % bone.name ) if children[0].connected == children[1].connected: raise Exception("expected one bone to be connected") diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 9a07f524a21..06e2e1077b2 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -159,8 +159,9 @@ def main(obj, bone_definition, base_names): # dont store parent names, re-reference as each chain bones parent. neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) neck_e_parent.head = neck_e.head - neck_e_parent.tail = neck_e.head + Vector(0.0, 0.0, neck_chain_segment_length / 2.0) - neck_e_parent.roll = 0.0 + neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) + neck_e_parent.roll = neck_e.roll + orig_parent = neck_e.parent neck_e.connected = False diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index 861655dae5d..0d85d60fad5 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -25,8 +25,8 @@ from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness METARIG_NAMES = tuple() - def metarig_template(): + # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object arm = obj.data @@ -73,26 +73,26 @@ def metarig_template(): bone.parent = arm.edit_bones['hand'] bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['hand'] + pbone = obj.pose.bones['palm.05'] pbone['type'] = 'palm' def metarig_definition(obj, orig_bone_name): ''' - The bone given is the first in a chain - Expects an array of children sorted with the little finger lowest. + The bone given is the first in an array of siblings with a matching basename + sorted with the little finger lowest. eg. - parent -> [pinky, ring... etc] + [pinky, ring... etc] ''' arm = obj.data - bone_definition = [orig_bone_name] - palm_ebone = arm.bones[orig_bone_name] - - children = [ebone.name for ebone in palm_ebone.children] - children.sort() # simply assume the pinky has the lowest name - bone_definition.extend(children) - - return bone_definition + + palm_bone = arm.bones[orig_bone_name] + palm_parent = palm_bone.parent + palm_base = palm_bone.basename + bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] + bone_definition.sort() + + return [palm_parent.name] + bone_definition def main(obj, bone_definition, base_names): diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 16cd4067eca..39ba4baee61 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -102,11 +102,15 @@ def metarig_definition(obj, orig_bone_name): ribcage = arm.bones[orig_bone_name] pelvis = ribcage.parent + if pelvis is None: + raise Exception("expected the ribcage bone:'%s' to have a parent (ribcage)." % ribcage.name) + children = ribcage.children if len(children) != 1: - print("expected the ribcage to have only 1 child.") + raise Exception("expected the ribcage to have only 1 child.") child = children[0] + bone_definition = [pelvis.name, ribcage.name, child.name] bone_definition.extend([child.name for child in child.children_recursive_basename]) return bone_definition @@ -132,17 +136,6 @@ def main(obj, bone_definition, base_names): spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig] spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1)[0] # probably 'ORG-spine.01' -> 'spine' spine_chain_len = len(spine_chain_orig) - print(spine_chain_orig) - print(spine_chain_len) - - ''' - children = mt.ribcage_e.children - child = children[0] # validate checks for 1 only. - spine_chain_basename = child.basename # probably 'spine' - spine_chain_segment_length = child.length - spine_chain = [child] + child.children_recursive_basename - spine_chain_orig = [child.name for child in spine_chain] - ''' child = spine_chain[0] spine_chain_segment_length = child.length @@ -241,8 +234,9 @@ def main(obj, bone_definition, base_names): # dont store parent names, re-reference as each chain bones parent. spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) spine_e_parent.head = spine_e.head - spine_e_parent.tail = spine_e.head + Vector(0.0, 0.0, spine_chain_segment_length / 2.0) - spine_e_parent.roll = 0.0 + spine_e_parent.tail = spine_e.head + ((mt.ribcage_e.tail - mt.ribcage_e.head).normalize() * spine_chain_segment_length / 2.0) + spine_e_parent.roll = mt.ribcage_e.roll + spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e") orig_parent = spine_e.parent -- cgit v1.2.3 From 4a23c3f9e1aaaefcb7b5586b908c51d2922d71fb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Dec 2009 17:55:58 +0000 Subject: Particles: child editing bugfixes * Make partial update work again for faster editing. * Draw parents over children again, nicer for editing. * Fix crash with remove tools & showing child particles. * Fix children not disappearing always when setting to None. * Fix wrong normal for last point in child path. * Fix a python error in the hair dynamics panel. --- release/scripts/ui/properties_particle.py | 8 ++- source/blender/blenkernel/intern/particle.c | 4 ++ source/blender/blenkernel/intern/particle_system.c | 2 + source/blender/blenloader/intern/readfile.c | 8 ++- source/blender/editors/physics/particle_edit.c | 12 +++-- source/blender/editors/space_view3d/drawobject.c | 59 +++++++++++++--------- 6 files changed, 62 insertions(+), 31 deletions(-) diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index d95455f7c10..3577ba961b3 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -208,6 +208,10 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): layout = self.layout psys = context.particle_system + + if not psys.cloth: + return + #part = psys.settings cloth = psys.cloth.settings @@ -298,8 +302,8 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel): sub.prop(part, "random_factor") #if part.type=='REACTOR': - # sub.prop(part, "reactor_factor") - # sub.prop(part, "reaction_shape", slider=True) + # sub.prop(part, "reactor_factor") + # sub.prop(part, "reaction_shape", slider=True) class PARTICLE_PT_rotation(ParticleButtonsPanel): diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index bb2f4128891..ab73b24ba39 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -2332,6 +2332,7 @@ static int psys_threads_init_path(ParticleThread *threads, Scene *scene, float c ctx->totparent= totparent; ctx->parent_pass= 0; ctx->cfra= cfra; + ctx->editupdate= editupdate; psys->lattice = psys_get_lattice(&ctx->sim); @@ -2615,6 +2616,9 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle get_strand_normal(ctx->ma, ornor, cur_length, (state-1)->vel); } + if(k == ctx->steps) + VECSUB(state->vel,state->co,(state-1)->co); + /* check if path needs to be cut before actual end of data points */ if(k){ VECSUB(dvec,state->co,(state-1)->co); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index dbe6fbd6dde..3c660be64ce 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -2925,6 +2925,8 @@ static void psys_update_path_cache(ParticleSimulationData *sim, float cfra) psys_find_parents(sim); } } + else + psys_free_children(psys); } if((part->type==PART_HAIR || psys->flag&PSYS_KEYED || psys->pointcache->flag & PTCACHE_BAKED)==0) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 2ad3b17a896..54c86af80b6 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10165,7 +10165,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } /* put 2.50 compatibility code here until next subversion bump */ - + { + Scene *sce= main->scene.first; + + for(sce=main->scene.first; sce; sce=sce->id.next) + if(!sce->toolsettings->particle.selectmode) + sce->toolsettings->particle.selectmode= SCE_SELECT_PATH; + } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 68e673c31b1..349db7746a1 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -1174,8 +1174,11 @@ static void update_velocities(Object *ob, PTCacheEdit *edit) } } } + void PE_update_object(Scene *scene, Object *ob, int useflag) { + /* use this to do partial particle updates, not usable when adding or + removing, then a full redo is necessary and calling this may crash */ ParticleEditSettings *pset= PE_settings(scene); PTCacheEdit *edit = PE_get_current(scene, ob); POINT_P; @@ -2064,6 +2067,12 @@ static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psy edit->mirror_cache= NULL; } + if(psys->child) { + MEM_freeN(psys->child); + psys->child= NULL; + psys->totchild=0; + } + edit->totpoint= psys->totpart= new_totpart; } @@ -2330,7 +2339,6 @@ static int remove_doubles_exec(bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Remove %d double particles.", totremoved); - PE_update_object(scene, ob, 0); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); @@ -2507,7 +2515,6 @@ static int delete_exec(bContext *C, wmOperator *op) recalc_lengths(data.edit); } - PE_update_object(data.scene, data.ob, 0); DAG_id_flush_update(&data.ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); @@ -3733,7 +3740,6 @@ void PE_undo_step(Scene *scene, int step) } } - PE_update_object(scene, OBACT, 0); DAG_id_flush_update(&OBACT->id, OB_RECALC_DATA); } diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index f60f4ad9230..7bc86f6bae7 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4166,6 +4166,16 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv wmLoadMatrix(rv3d->viewmat); } +static void draw_update_ptcache_edit(Scene *scene, Object *ob, PTCacheEdit *edit) +{ + if(edit->psys && edit->psys->flag & PSYS_HAIR_UPDATED) + PE_update_object(scene, ob, 0); + + /* create path and child path cache if it doesn't exist already */ + if(edit->pathcache==0) + psys_cache_edit_paths(scene, ob, edit, CFRA); +} + static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, PTCacheEdit *edit, int dt) { ParticleCacheKey **cache, *path, *pkey; @@ -4178,14 +4188,6 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj float nosel_col[3]; float *pathcol = NULL, *pcol; - - if(edit->psys && edit->psys->flag & PSYS_HAIR_UPDATED) - PE_update_object(scene, ob, 0); - - /* create path and child path cache if it doesn't exist already */ - if(edit->pathcache==0) - psys_cache_edit_paths(scene, ob, edit, CFRA); - if(edit->pathcache==0) return; @@ -5900,22 +5902,6 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob); - /* particle mode has to be drawn first so that possible child particles get cached in edit mode */ - if( (warning_recursive==0) && - (flag & DRAW_PICKING)==0 && - (!scene->obedit) - ) { - - if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) { - PTCacheEdit *edit = PE_get_current(scene, ob); - if(edit) { - wmLoadMatrix(rv3d->viewmat); - draw_ptcache_edit(scene, v3d, rv3d, ob, edit, dt); - wmMultMatrix(ob->obmat); - } - } - } - /* code for new particle system */ if( (warning_recursive==0) && (ob->particlesystem.first) && @@ -5923,6 +5909,8 @@ 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); @@ -5930,8 +5918,13 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) view3d_cached_text_draw_begin(); - for(psys=ob->particlesystem.first; psys; psys=psys->next) + for(psys=ob->particlesystem.first; psys; psys=psys->next) { + /* run this so that possible child particles get cached */ + if(edit && edit->psys == psys) + draw_update_ptcache_edit(scene, ob, edit); + draw_new_particle_system(scene, v3d, rv3d, base, psys, dt); + } view3d_cached_text_draw_end(v3d, ar, 0, NULL); @@ -5941,6 +5934,22 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(col) cpack(col); } + /* draw edit particles last so that they can draw over child particles */ + if( (warning_recursive==0) && + (flag & DRAW_PICKING)==0 && + (!scene->obedit) + ) { + + if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) { + PTCacheEdit *edit = PE_get_current(scene, ob); + if(edit) { + wmLoadMatrix(rv3d->viewmat); + draw_ptcache_edit(scene, v3d, rv3d, ob, edit, dt); + wmMultMatrix(ob->obmat); + } + } + } + /* draw code for smoke */ if((md = modifiers_findByType(ob, eModifierType_Smoke))) { -- cgit v1.2.3 From 149b3bc7f2791e61d94dd91390b66fce7ff45aac Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 18:05:51 +0000 Subject: Flag down a window when cursor is grabbed. --- source/blender/makesdna/DNA_windowmanager_types.h | 5 ++++- source/blender/windowmanager/intern/wm_cursors.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 1af1dd7a158..24374720232 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -139,7 +139,10 @@ typedef struct wmWindow { void *ghostwin; /* dont want to include ghost.h stuff */ - int winid, pad; /* winid also in screens, is for retrieving this window after read */ + int winid; /* winid also in screens, is for retrieving this window after read */ + + short grabcursor; /* 1 if cursor is grabbed */ + short pad; struct bScreen *screen; /* active screen */ struct bScreen *newscreen; /* temporary when switching */ diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index 95a1de96115..cec5886014a 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -180,6 +180,8 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) GHOST_SetCursorGrab(win->ghostwin, mode, bounds); else if (tabletdata->Active == GHOST_kTabletModeNone) GHOST_SetCursorGrab(win->ghostwin, mode, bounds); + + win->grabcursor = 1; } } } @@ -187,8 +189,10 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) void WM_cursor_ungrab(wmWindow *win) { if ((G.f & G_DEBUG) == 0) { - if(win && win->ghostwin) + if(win && win->ghostwin) { GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL); + win->grabcursor = 0; + } } } -- cgit v1.2.3 From 78f87c8bdf3bdb2115f9ab3e2a333fb76a5d2cfc Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 18:06:37 +0000 Subject: Function to access the real cursor position from Ghost (useful when cursor is grabbed and warped) --- source/blender/windowmanager/intern/wm_window.c | 7 +++++++ source/blender/windowmanager/wm_window.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index d9b6117cbb3..542520ce1b0 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -972,6 +972,13 @@ void wm_window_swap_buffers(wmWindow *win) #endif } +void wm_get_cursor_position(wmWindow *win, int *x, int *y) +{ + GHOST_GetCursorPosition(g_system, x, y); + GHOST_ScreenToClient(win->ghostwin, *x, *y, x, y); + *y = (win->sizey-1) - *y; +} + /* ******************* exported api ***************** */ diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h index 4328f915101..84e246937e4 100644 --- a/source/blender/windowmanager/wm_window.h +++ b/source/blender/windowmanager/wm_window.h @@ -55,6 +55,8 @@ void wm_window_get_position (wmWindow *win, int *posx_r, int *posy_r); void wm_window_set_title (wmWindow *win, char *title); void wm_window_swap_buffers (wmWindow *win); +void wm_get_cursor_position (wmWindow *win, int *x, int *y); + wmWindow *wm_window_copy (bContext *C, wmWindow *winorig); void wm_window_testbreak (void); -- cgit v1.2.3 From 19aab8edb09eaf3600e4ca90329e244554f3a0fb Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 18:08:19 +0000 Subject: Custom cursor draw function uses the real cursor position when cursor is grabbed (and not the coordinates from the event). Drawing a custom cursor anywhere but on the real cursor is no good. Also permit NULL poll function (equal to a function that always returns 1) --- source/blender/windowmanager/intern/wm_draw.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index e7c04141ad3..96aea760e20 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -72,9 +72,15 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) if(screen->subwinactive == ar->swinid) { for(pc= wm->paintcursors.first; pc; pc= pc->next) { - if(pc->poll(C)) { + if(pc->poll == NULL || pc->poll(C)) { ARegion *ar= CTX_wm_region(C); - pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin, pc->customdata); + if (win->grabcursor) { + int x = 0, y = 0; + wm_get_cursor_position(win, &x, &y); + pc->draw(C, x - ar->winrct.xmin, y - ar->winrct.ymin, pc->customdata); + } else { + pc->draw(C, win->eventstate->x - ar->winrct.xmin, win->eventstate->y - ar->winrct.ymin, pc->customdata); + } } } } -- cgit v1.2.3 From 1962afa2a6273511268246601659b74c418b6e8e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 18:10:11 +0000 Subject: Use custom cursor draw in transform to draw the new arrow cursors (to indicate direction of motion for a particular transformations). This insures that it's drawn under the cursor and not far away when cursor is warped (rubber band still points to event location, this helps visualize too). --- source/blender/editors/transform/transform.c | 32 ++++++++++++---------- source/blender/editors/transform/transform.h | 3 +- .../blender/editors/transform/transform_generics.c | 6 ++-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 1b450e48e31..728c4eae676 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1148,7 +1148,7 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */ special_aftertrans_update(t); - postTrans(t); + postTrans(C, t); MEM_freeN(t); @@ -1239,11 +1239,14 @@ static void drawArc(float size, float angle_start, float angle_end, int segments glEnd(); } -void drawHelpline(const struct bContext *C, TransInfo *t) +static void drawHelpline(bContext *C, int x, int y, void *customdata) { + TransInfo *t = (TransInfo*)customdata; + if (t->helpline != HLP_NONE && !(t->flag & T_USES_MANIPULATOR)) { float vecrot[3], cent[2]; + int mval[2] = {x, y}; VECCOPY(vecrot, t->center); if(t->flag & T_EDIT) { @@ -1270,7 +1273,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t) glVertex2fv(cent); glEnd(); - glTranslatef(t->mval[0], t->mval[1], 0); + glTranslatef(mval[0], mval[1], 0); glRotatef(-180 / M_PI * atan2f(cent[0] - t->mval[0], cent[1] - t->mval[1]), 0, 0, 1); setlinestyle(0); @@ -1282,7 +1285,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t) case HLP_HARROW: UI_ThemeColor(TH_WIRE); - glTranslatef(t->mval[0], t->mval[1], 0); + glTranslatef(mval[0], mval[1], 0); glLineWidth(3.0); drawArrow(RIGHT, 5, 10, 5); @@ -1292,7 +1295,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t) case HLP_VARROW: UI_ThemeColor(TH_WIRE); - glTranslatef(t->mval[0], t->mval[1], 0); + glTranslatef(mval[0], mval[1], 0); glLineWidth(3.0); glBegin(GL_LINES); @@ -1315,7 +1318,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t) glVertex2fv(cent); glEnd(); - glTranslatef(cent[0], cent[1], 0); + glTranslatef(cent[0] - t->mval[0] + mval[0], cent[1] - t->mval[1] + mval[1], 0); setlinestyle(0); glLineWidth(3.0); @@ -1344,7 +1347,7 @@ void drawHelpline(const struct bContext *C, TransInfo *t) char col[3], col2[3]; UI_GetThemeColor3ubv(TH_GRID, col); - glTranslatef(t->mval[0], t->mval[1], 0); + glTranslatef(mval[0], mval[1], 0); glLineWidth(3.0); @@ -1379,9 +1382,9 @@ void drawTransformView(const struct bContext *C, struct ARegion *ar, void *arg) void drawTransformPixel(const struct bContext *C, struct ARegion *ar, void *arg) { - TransInfo *t = arg; - - drawHelpline(C, t); +// TransInfo *t = arg; +// +// drawHelpline(C, t->mval[0], t->mval[1], t); } void saveTransform(bContext *C, TransInfo *t, wmOperator *op) @@ -1505,12 +1508,13 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int initTransformOrientation(C, t); t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW); - t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL); + //t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL); + t->draw_handle_cursor = WM_paint_cursor_activate(CTX_wm_manager(C), NULL, drawHelpline, t); } else if(t->spacetype == SPACE_IMAGE) { unit_m3(t->spacemtx); t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW); - t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL); + //t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL); } else unit_m3(t->spacemtx); @@ -1518,7 +1522,7 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int createTransData(C, t); // make TransData structs from selection if (t->total == 0) { - postTrans(t); + postTrans(C, t); return 0; } @@ -1714,7 +1718,7 @@ int transformEnd(bContext *C, TransInfo *t) special_aftertrans_update(t); /* free data */ - postTrans(t); + postTrans(C, t); /* send events out for redraws */ viewRedrawPost(t); diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index d51cf9c864b..9f40b6f7288 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -321,6 +321,7 @@ typedef struct TransInfo { struct Object *obedit; void *draw_handle_view; void *draw_handle_pixel; + void *draw_handle_cursor; } TransInfo; @@ -633,7 +634,7 @@ void setCustomPoints(TransInfo *t, MouseInput *mi, short start[2], short end[2]) /*********************** Generics ********************************/ int initTransInfo(struct bContext *C, TransInfo *t, struct wmOperator *op, struct wmEvent *event); -void postTrans (TransInfo *t); +void postTrans (struct bContext *C, TransInfo *t); void resetTransRestrictions(TransInfo *t); void drawLine(TransInfo *t, float *center, float *dir, char axis, short options); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index c9b5b17091e..0340475a1d1 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -108,6 +108,7 @@ #include "RNA_access.h" #include "WM_types.h" +#include "WM_api.h" #include "UI_resources.h" @@ -1065,7 +1066,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } /* Here I would suggest only TransInfo related issues, like free data & reset vars. Not redraws */ -void postTrans (TransInfo *t) +void postTrans (bContext *C, TransInfo *t) { TransData *td; @@ -1073,7 +1074,8 @@ void postTrans (TransInfo *t) ED_region_draw_cb_exit(t->ar->type, t->draw_handle_view); if (t->draw_handle_pixel) ED_region_draw_cb_exit(t->ar->type, t->draw_handle_pixel); - + if (t->draw_handle_cursor) + WM_paint_cursor_end(CTX_wm_manager(C), t->draw_handle_cursor); if (t->customFree) { /* Can take over freeing t->data and data2d etc... */ -- cgit v1.2.3 From fc69c54c4ce810e6236eaa45017130f27ba3f1e2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Dec 2009 18:17:39 +0000 Subject: Particles: bugfixes * Don't show Apply as Shape for particle modifiers. * Fix particles disappearing after exiting particle mode. * Fix free edit not redrawing the 3d view. * Fix use of uninitialized variable in layers template. --- source/blender/editors/interface/interface_templates.c | 12 ++++++------ source/blender/editors/physics/particle_edit.c | 1 + source/blender/editors/space_view3d/drawobject.c | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index bb893294910..f59e10ede75 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -715,12 +715,12 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache) uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert"); } - else + else { uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA); - - if (modifier_sameTopology(md)) - uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE); - + + if (modifier_sameTopology(md)) + uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE); + } uiBlockClearButLock(block); uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE); @@ -1951,7 +1951,7 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, PointerRNA *used_ptr, char *used_propname, int active_layer) { uiLayout *uRow, *uCol; - PropertyRNA *prop, *used_prop; + PropertyRNA *prop, *used_prop= NULL; int groups, cols, layers; int group, col, layer, row; int cols_per_group = 5; diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 349db7746a1..7c6b3a5ee26 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -4024,6 +4024,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); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } } diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7bc86f6bae7..fa8eee630aa 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5920,8 +5920,9 @@ 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(edit && edit->psys == psys) - draw_update_ptcache_edit(scene, ob, edit); + if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) + if(edit && edit->psys == psys) + draw_update_ptcache_edit(scene, ob, edit); draw_new_particle_system(scene, v3d, rv3d, base, psys, dt); } -- cgit v1.2.3 From 4ca2581b77112c488938f0a2dc226042e0390b71 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Dec 2009 19:11:37 +0000 Subject: Sculpt Branch: * Don't allow adding/removing multires levels in editmode. * Customdata code for swapping mdisps restored. * Fix inflate brush crashing with multires. * Smooth and layer brush don't work yet with multires, but at least avoids crashing now. * Fix threading issue with flatten brush. --- release/scripts/ui/properties_data_modifier.py | 1 + source/blender/blenkernel/intern/customdata.c | 23 +++++++++--------- source/blender/blenlib/intern/pbvh.c | 16 ++++++------- source/blender/editors/sculpt_paint/sculpt.c | 32 ++++++++++++++++---------- 4 files changed, 41 insertions(+), 31 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 74f16ede0a7..8e0f2f539e2 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -440,6 +440,7 @@ class DATA_PT_modifiers(DataButtonsPanel): if wide_ui: col = split.column() + col.enabled = ob.mode != 'EDIT' col.operator("object.multires_subdivide", text="Subdivide") col.operator("object.multires_higher_levels_delete", text="Delete Higher") row = col.row() diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 8f167310741..f9997708a50 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -440,29 +440,30 @@ static void mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, fl } #endif +static int mdisp_corners(MDisps *s) +{ + /* silly trick because we don't get it from callback */ + return (s->totdisp % (3*3) == 0)? 3: 4; +} + static void layerSwap_mdisps(void *data, int *ci) { - // XXX -#if 0 MDisps *s = data; float (*d)[3] = NULL; - int x, y, st; + int corners, cornersize, S; - if(!(ci[0] == 2 && ci[1] == 3 && ci[2] == 0 && ci[3] == 1)) return; + /* this function is untested .. */ + corners = mdisp_corners(s); + cornersize = s->totdisp/corners; d = MEM_callocN(sizeof(float) * 3 * s->totdisp, "mdisps swap"); - st = sqrt(s->totdisp); - for(y = 0; y < st; ++y) { - for(x = 0; x < st; ++x) { - copy_v3_v3(d[(st - y - 1) * st + (st - x - 1)], s->disps[y * st + x]); - } - } + for(S = 0; S < corners; S++) + memcpy(d + cornersize*S, s->disps + cornersize*ci[S], cornersize*3*sizeof(float)); if(s->disps) MEM_freeN(s->disps); s->disps = d; -#endif } static void layerInterp_mdisps(void **sources, float *weights, float *sub_weights, diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 023db54eb1c..3aa0f43553f 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1012,12 +1012,12 @@ void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert, i void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert) { if(bvh->grids) { - *totvert= node->totprim*bvh->gridsize*bvh->gridsize; - *uniquevert= *totvert; + if(totvert) *totvert= node->totprim*bvh->gridsize*bvh->gridsize; + if(uniquevert) *uniquevert= *totvert; } else { - *uniquevert= node->uniq_verts; - *totvert= node->uniq_verts + node->face_verts; + if(totvert) *totvert= node->uniq_verts + node->face_verts; + if(uniquevert) *uniquevert= node->uniq_verts; } } @@ -1030,10 +1030,10 @@ void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int if(gridsize) *gridsize= bvh->gridsize; } else { - *grid_indices= NULL; - *totgrid= 0; - *maxgrid= 0; - *gridsize= 0; + if(grid_indices) *grid_indices= NULL; + if(totgrid) *totgrid= 0; + if(maxgrid) *maxgrid= 0; + if(gridsize) *gridsize= 0; } } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index b39a2912c02..9a25cf21542 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -905,6 +905,10 @@ static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int float bstrength= ss->cache->bstrength; int iteration, n; + /* XXX not working for multires yet */ + if(!ss->fmap) + return; + for(iteration = 0; iteration < 2; ++iteration) { #pragma omp parallel for private(n) schedule(static) for(n=0; ncache->radius / 4; int n; + /* XXX not working yet for multires */ + if(!ss->mvert) + return; + if(ss->cache->flip) lim = -lim; @@ -1081,10 +1088,10 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in if(sculpt_brush_test(&test, vd.co)) { float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; float add[3]; + + if(vd.fno) copy_v3_v3(add, vd.fno); + else normal_short_to_float_v3(add, vd.no); - add[0]= vd.no[0]/32767.0f; - add[1]= vd.no[1]/32767.0f; - add[2]= vd.no[2]/32767.0f; mul_v3_fl(add, fade * ss->cache->radius); add[0]*= ss->cache->scale[0]; add[1]*= ss->cache->scale[1]; @@ -1116,16 +1123,17 @@ static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, for(n=0; ntree, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { - if(test.dist > outer_dist[i]) { - copy_v3_v3(outer_co[i], vd.co); - outer_dist[i] = test.dist; + 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; } } @@ -1424,9 +1432,9 @@ void sculpt_update_mesh_elements(bContext *C, int need_fmap) if((ss->multires = sculpt_multires_active(ob))) { ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumFaces(dm); - ss->mvert = dm->getVertDataArray(dm, CD_MVERT); - ss->mface = dm->getFaceDataArray(dm, CD_MFACE); - ss->face_normals = dm->getFaceDataArray(dm, CD_NORMAL); + ss->mvert= NULL; + ss->mface= NULL; + ss->face_normals= NULL; } else { Mesh *me = get_mesh(ob); @@ -1439,7 +1447,7 @@ void sculpt_update_mesh_elements(bContext *C, int need_fmap) ss->ob = ob; ss->tree = dm->getPBVH(ob, dm); - ss->fmap = (need_fmap)? dm->getFaceMap(dm): NULL; + ss->fmap = (need_fmap && dm->getFaceMap)? dm->getFaceMap(dm): NULL; if((ob->shapeflag & OB_SHAPE_LOCK) && !sculpt_multires_active(ob)) { ss->kb= ob_get_keyblock(ob); -- cgit v1.2.3 From 987e9bc1724602fe6dab35662afa54df26d07cf4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 19:49:14 +0000 Subject: missing null check from recent changes --- source/blender/blenkernel/intern/group.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index 3ab02a576d0..f35a0a96bb4 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -217,8 +217,8 @@ static int rem_from_group_internal(Group *group, Object *ob) int rem_from_group(Group *group, Object *object, Scene *scene, Base *base) { if(rem_from_group_internal(group, object)) { - - if(find_group(object, NULL) == NULL) { + /* object can be NULL */ + if(object && find_group(object, NULL) == NULL) { if(scene && base==NULL) base= object_in_scene(object, scene); -- cgit v1.2.3 From a321e2b139289a5ea9f330125a70d4fa388fde62 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 7 Dec 2009 19:56:59 +0000 Subject: Sculpt Branch: Subdivision set with Ctrl+1-5 now works for multires as well. --- release/scripts/op/object.py | 17 +++++++++++------ source/blender/editors/object/object_ops.c | 15 +++++---------- source/blender/editors/sculpt_paint/paint_ops.c | 4 ++++ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 86678176fc9..e29259cacfb 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -75,16 +75,16 @@ class SelectPattern(bpy.types.Operator): row.prop(props, "extend") -class SubsurfSet(bpy.types.Operator): +class SubdivisionSet(bpy.types.Operator): '''Sets a Subdivision Surface Level (1-5)''' - bl_idname = "object.subsurf_set" - bl_label = "Subsurf Set" + bl_idname = "object.subdivision_set" + bl_label = "Subdivision Set" bl_register = True bl_undo = True level = IntProperty(name="Level", - default=1, min=0, max=6) + default=1, min=0, max=100, soft_min=0, soft_max=6) def poll(self, context): ob = context.active_object @@ -94,7 +94,11 @@ class SubsurfSet(bpy.types.Operator): level = self.properties.level ob = context.active_object for mod in ob.modifiers: - if mod.type == 'SUBSURF': + if mod.type == 'MULTIRES' and ob.mode == 'SCULPT': + if mod.sculpt_levels != level: + mod.sculpt_levels = level + return ('FINISHED',) + elif mod.type == 'SUBSURF' or mod.type == 'MULTIRES': if mod.levels != level: mod.levels = level return ('FINISHED',) @@ -120,5 +124,6 @@ class Retopo(bpy.types.Operator): bpy.ops.add(SelectPattern) -bpy.ops.add(SubsurfSet) +bpy.ops.add(SubdivisionSet) bpy.ops.add(Retopo) + diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 49c947f52c8..13b1155d616 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -227,6 +227,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) { wmKeyMap *keymap; wmKeyMapItem *kmi; + int i; /* Objects, Regardless of Mode -------------------------------------------------- */ keymap= WM_keymap_find(keyconf, "Object Non-modal", 0, 0); @@ -314,16 +315,10 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", ONEKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", 1); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", TWOKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", 2); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", THREEKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", 3); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FOURKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", 4); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subsurf_set", FIVEKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", 5); + for(i=1; i<=5; i++) { + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", i); + } /* Lattice -------------------------------------------------------------------- */ keymap= WM_keymap_find(keyconf, "Lattice", 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 92812c2ab08..ae694ed863b 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -179,6 +179,7 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) void ED_keymap_paint(wmKeyConfig *keyconf) { wmKeyMap *keymap; + int i; /* Sculpt mode */ keymap= WM_keymap_find(keyconf, "Sculpt", 0, 0); @@ -193,6 +194,9 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index"); + for(i=1; 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); + /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); keymap->poll= vertex_paint_poll; -- cgit v1.2.3 From 47416c725c9790c17abddfbcd96c080e28e76abb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 19:59:04 +0000 Subject: driver type 'Sum' --- source/blender/blenkernel/intern/fcurve.c | 14 +++++++++----- source/blender/makesdna/DNA_anim_types.h | 2 ++ source/blender/makesrna/intern/rna_fcurve.c | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 0623a5cbe5e..b3a6b773cf3 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -910,6 +910,7 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) // TODO: the flags for individual targets need to be used too for more fine-grained support... switch (driver->type) { case DRIVER_TYPE_AVERAGE: /* average values of driver targets */ + case DRIVER_TYPE_SUM: /* sum values of driver targets */ { /* check how many targets there are first (i.e. just one?) */ if (driver->targets.first == driver->targets.last) { @@ -921,19 +922,22 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) /* more than one target, so average the values of the targets */ int tot = 0; float value = 0.0f; - + /* loop through targets, adding (hopefully we don't get any overflow!) */ for (dtar= driver->targets.first; dtar; dtar=dtar->next) { - value += driver_get_target_value(driver, dtar); + value += driver_get_target_value(driver, dtar); tot++; } - + /* return the average of these */ - return (value / (float)tot); + if(driver->type == DRIVER_TYPE_AVERAGE) + return (value / (float)tot); + else + return value; + } } break; - case DRIVER_TYPE_PYTHON: /* expression */ { #ifndef DISABLE_PYTHON diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index c6330861fd2..09f77d98f4b 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -309,6 +309,8 @@ typedef enum eDriver_Types { DRIVER_TYPE_PYTHON, /* rotational difference (must use rotation channels only) */ DRIVER_TYPE_ROTDIFF, + /* sum of all values */ + DRIVER_TYPE_SUM, } eDriver_Types; /* driver flags */ diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index fbf4a8b41c5..bf8b74d08ee 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -789,6 +789,7 @@ static void rna_def_channeldriver(BlenderRNA *brna) static EnumPropertyItem prop_type_items[] = { {DRIVER_TYPE_AVERAGE, "AVERAGE", 0, "Averaged Value", ""}, + {DRIVER_TYPE_SUM, "SUM", 0, "Sum Values", ""}, {DRIVER_TYPE_PYTHON, "SCRIPTED", 0, "Scripted Expression", ""}, {DRIVER_TYPE_ROTDIFF, "ROTDIFF", 0, "Rotational Difference", ""}, {0, NULL, 0, NULL, NULL}}; -- cgit v1.2.3 From 21f41e1bce458efe5863bc19d174453f3ea2a492 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 20:03:49 +0000 Subject: Text and Console operators don't need to register themselves. (this cleans the reports quite a bit) --- source/blender/editors/space_console/console_ops.c | 30 ----------- source/blender/editors/space_text/text_ops.c | 60 ---------------------- 2 files changed, 90 deletions(-) diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c index a2e11dc6bd5..89c058ad7f3 100644 --- a/source/blender/editors/space_console/console_ops.c +++ b/source/blender/editors/space_console/console_ops.c @@ -369,9 +369,6 @@ void CONSOLE_OT_move(wmOperatorType *ot) ot->exec= move_exec; ot->poll= console_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to."); } @@ -415,9 +412,6 @@ void CONSOLE_OT_insert(wmOperatorType *ot) ot->invoke= insert_invoke; ot->poll= console_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); } @@ -482,9 +476,6 @@ void CONSOLE_OT_delete(wmOperatorType *ot) ot->exec= delete_exec; ot->poll= console_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", delete_type_items, DEL_NEXT_CHAR, "Type", "Which part of the text to delete."); } @@ -525,9 +516,6 @@ void CONSOLE_OT_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= clear_exec; ot->poll= console_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; /* properties */ RNA_def_boolean(ot->srna, "scrollback", 1, "Scrollback", "Clear the scrollback history"); @@ -587,9 +575,6 @@ void CONSOLE_OT_history_cycle(wmOperatorType *ot) /* api callbacks */ ot->exec= history_cycle_exec; ot->poll= console_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; /* properties */ RNA_def_boolean(ot->srna, "reverse", 0, "Reverse", "reverse cycle history"); @@ -635,9 +620,6 @@ void CONSOLE_OT_history_append(wmOperatorType *ot) /* api callbacks */ ot->exec= history_append_exec; ot->poll= console_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; /* properties */ RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); @@ -683,9 +665,6 @@ void CONSOLE_OT_scrollback_append(wmOperatorType *ot) /* api callbacks */ ot->exec= scrollback_append_exec; ot->poll= console_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; /* properties */ RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); @@ -727,9 +706,6 @@ void CONSOLE_OT_copy(wmOperatorType *ot) ot->poll= console_edit_poll; ot->exec= copy_exec; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ } @@ -762,9 +738,6 @@ void CONSOLE_OT_paste(wmOperatorType *ot) ot->poll= console_edit_poll; ot->exec= paste_exec; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ } @@ -795,9 +768,6 @@ void CONSOLE_OT_zoom(wmOperatorType *ot) /* api callbacks */ ot->exec= zoom_exec; ot->poll= console_poll; - - /* flags */ - /* ot->flag= OPTYPE_REGISTER; */ /* super annoying */ /* properties */ RNA_def_int(ot->srna, "delta", 0, 0, INT_MAX, "Delta", "Scale the view font.", 0, 1000); diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 16a7f97afd6..1a23b9ecc42 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -735,9 +735,6 @@ void TEXT_OT_paste(wmOperatorType *ot) ot->exec= paste_exec; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_boolean(ot->srna, "selection", 0, "Selection", "Paste text selected elsewhere rather than copied, X11 only."); } @@ -806,9 +803,6 @@ void TEXT_OT_cut(wmOperatorType *ot) /* api callbacks */ ot->exec= cut_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* indent operator *********************/ @@ -842,9 +836,6 @@ void TEXT_OT_indent(wmOperatorType *ot) /* api callbacks */ ot->exec= indent_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* unindent operator *********************/ @@ -878,9 +869,6 @@ void TEXT_OT_unindent(wmOperatorType *ot) /* api callbacks */ ot->exec= unindent_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* line break operator *********************/ @@ -919,9 +907,6 @@ void TEXT_OT_line_break(wmOperatorType *ot) /* api callbacks */ ot->exec= line_break_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* comment operator *********************/ @@ -952,9 +937,6 @@ void TEXT_OT_comment(wmOperatorType *ot) /* api callbacks */ ot->exec= comment_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* uncomment operator *********************/ @@ -986,9 +968,6 @@ void TEXT_OT_uncomment(wmOperatorType *ot) /* api callbacks */ ot->exec= uncomment_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* convert whitespace operator *********************/ @@ -1129,9 +1108,6 @@ void TEXT_OT_convert_whitespace(wmOperatorType *ot) ot->exec= convert_whitespace_exec; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", whitespace_type_items, TO_SPACES, "type", "Type of whitespace to convert to."); } @@ -1159,9 +1135,6 @@ void TEXT_OT_select_all(wmOperatorType *ot) /* api callbacks */ ot->exec= select_all_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* select line operator *********************/ @@ -1187,9 +1160,6 @@ void TEXT_OT_select_line(wmOperatorType *ot) /* api clinebacks */ ot->exec= select_line_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* previous marker operator *********************/ @@ -1225,9 +1195,6 @@ void TEXT_OT_previous_marker(wmOperatorType *ot) /* api callbacks */ ot->exec= previous_marker_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* next marker operator *********************/ @@ -1263,9 +1230,6 @@ void TEXT_OT_next_marker(wmOperatorType *ot) /* api callbacks */ ot->exec= next_marker_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* clear all markers operator *********************/ @@ -1291,9 +1255,6 @@ void TEXT_OT_markers_clear(wmOperatorType *ot) /* api callbacks */ ot->exec= clear_all_markers_exec; ot->poll= text_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /************************ move operator ************************/ @@ -1576,9 +1537,6 @@ void TEXT_OT_move(wmOperatorType *ot) ot->exec= move_exec; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to."); } @@ -1603,9 +1561,6 @@ void TEXT_OT_move_select(wmOperatorType *ot) ot->exec= move_select_exec; ot->poll= text_space_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to, to make a selection."); } @@ -1640,9 +1595,6 @@ void TEXT_OT_jump(wmOperatorType *ot) ot->exec= jump_exec; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_int(ot->srna, "line", 1, 1, INT_MAX, "Line", "Line number to jump to.", 1, 10000); } @@ -1693,9 +1645,6 @@ void TEXT_OT_delete(wmOperatorType *ot) ot->exec= delete_exec; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_enum(ot->srna, "type", delete_type_items, DEL_NEXT_CHAR, "Type", "Which part of the text to delete."); } @@ -1721,9 +1670,6 @@ void TEXT_OT_overwrite_toggle(wmOperatorType *ot) /* api callbacks */ ot->exec= toggle_overwrite_exec; ot->poll= text_space_edit_poll; - - /* flags */ - ot->flag= OPTYPE_REGISTER; } /******************* scroll operator **********************/ @@ -2208,9 +2154,6 @@ void TEXT_OT_cursor_set(wmOperatorType *ot) ot->cancel= set_cursor_cancel; ot->poll= text_region_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING; - /* properties */ RNA_def_boolean(ot->srna, "select", 0, "Select", "Set selection end rather than cursor."); } @@ -2332,9 +2275,6 @@ void TEXT_OT_insert(wmOperatorType *ot) ot->invoke= insert_invoke; ot->poll= text_edit_poll; - /* flags */ - ot->flag= OPTYPE_REGISTER; - /* properties */ RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); } -- cgit v1.2.3 From 16ec4cc18606f21e6215a5ddcd0223e38340ff62 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 20:38:09 +0000 Subject: Sound system should only default to OpenAL if it is built (SDL if built otherwise). --- source/blender/editors/interface/resources.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 26a50cc3c24..1df76f312b3 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1252,8 +1252,14 @@ void init_userdef_do_versions(void) /* new audio system */ if(U.audiochannels == 0) U.audiochannels = 2; - if(U.audiodevice == 0) + if(U.audiodevice == 0) { +#ifdef WITH_OPENAL U.audiodevice = 2; +#endif +#ifdef WITH_SDL + U.audiodevice = 1; +#endif + } if(U.audioformat == 0) U.audioformat = 0x24; if(U.audiorate == 0) -- cgit v1.2.3 From f350cde18c2103d6a78e4d5d14f9b57cbaab1a1e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 7 Dec 2009 20:39:57 +0000 Subject: -noaudio option to force the sound system to None. Useful when openAL is not setup properly (*cough* pulseaudio *cough) and prevents startup. This doesn't actually affect the userpref option, so you can set it to whatever you want, save userprefs and restart. --- source/blender/blenkernel/BKE_sound.h | 2 ++ source/blender/blenkernel/intern/sound.c | 10 ++++++++++ source/creator/creator.c | 6 +++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index cbce4663d6f..64ce1983e7d 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -41,6 +41,8 @@ void sound_init(); void sound_exit(); +void sound_disable(); + struct bSound* sound_new_file(struct Main *main, char* filename); // XXX unused currently diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index d8950c7dace..74c6afdc018 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -31,6 +31,13 @@ #include #endif +static int sound_disabled = 0; + +void sound_disable() +{ + sound_disabled = 1; +} + void sound_init() { AUD_Specs specs; @@ -42,6 +49,9 @@ void sound_init() specs.format = U.audioformat; specs.rate = U.audiorate; + if (sound_disabled) + device = 0; + if(buffersize < 128) buffersize = AUD_DEFAULT_BUFFER_SIZE; diff --git a/source/creator/creator.c b/source/creator/creator.c index 3a9ee9859e8..b6c08582144 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -62,6 +62,7 @@ #include "BKE_scene.h" #include "BKE_node.h" #include "BKE_report.h" +#include "BKE_sound.h" #include "IMB_imbuf.h" // for quicktime_init @@ -219,6 +220,7 @@ static void print_help(void) printf (" -d\t\tTurn debugging on\n"); printf (" -nojoystick\tDisable joystick support\n"); printf (" -noglsl\tDisable GLSL shading\n"); + printf (" -noaudio\tForce sound system to None\n"); printf (" -h\t\tPrint this help text\n"); printf (" -y\t\tDisable automatic python script execution (pydrivers, pyconstraints, pynodes)\n"); printf (" -P \tRun the given Python script (filename or Blender Text)\n"); @@ -482,8 +484,10 @@ int main(int argc, char **argv) SYS_WriteCommandLineInt(syshandle,"nojoystick",1); if (G.f & G_DEBUG) printf("disabling nojoystick\n"); } - if (BLI_strcasecmp(argv[a], "-noglsl") == 0) + else if (BLI_strcasecmp(argv[a], "-noglsl") == 0) GPU_extensions_disable(); + else if (BLI_strcasecmp(argv[a], "-noaudio") == 0) + sound_disable(); break; } } -- cgit v1.2.3 From ce49719a0c9baf75576929f956e1224fcd46afc7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Dec 2009 20:49:12 +0000 Subject: use the SUM driver type to avoid adding all values on each bone. also avoids hitting the 255 string limit if you want to add 100's of values. eg. >>> b05/max(0.001, [globals().update({"LOCALS":locals(), "ADD":float.__add__, "reduce":__import__("functools").reduce}), 0.0][1], max((, [LOCALS["b%.2d" % (i+1)] for i in range(5)]))) Since this more simple expression reaches the limit fairly quick... >>> b05/max(0.001,b01+b02+b03+b04+b05) --- release/scripts/modules/rigify/neck.py | 38 +++++++++++++++++------ release/scripts/modules/rigify/spine.py | 55 ++++++++++++++++++++++----------- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 06e2e1077b2..6963bfbfb8d 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -220,10 +220,21 @@ def main(obj, bone_definition, base_names): head_driver_path = mt.head_p.path_to_id() - # b01/max(0.001,b01+b02+b03+b04+b05) target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - expression_suffix = "/max(0.001,%s)" % "+".join(target_names) + + mt.head_p["bend_tot"] = 0.0 + fcurve = mt.head_p.driver_add('["bend_tot"]', 0) + driver = fcurve.driver + driver.type = 'SUM' + fcurve.modifiers.remove(0) # grr dont need a modifier + for i in range(len(neck_chain)): + tar = driver.targets.new() + tar.name = target_names[i] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) + for i, attr in enumerate(mt_chain.attr_names): neck_p = getattr(mt_chain, attr + "_p") @@ -252,16 +263,23 @@ def main(obj, bone_definition, base_names): fcurve = con.driver_add("influence", 0) driver = fcurve.driver driver.type = 'SCRIPTED' - # b01/max(0.001,b01+b02+b03+b04+b05) - driver.expression = target_names[i] + expression_suffix + driver.expression = "bend/bend_tot" + fcurve.modifiers.remove(0) # grr dont need a modifier + - for j in range(len(neck_chain)): - tar = driver.targets.new() - tar.name = target_names[j] - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (j + 1)) + # add target + tar = driver.targets.new() + tar.name = "bend_tot" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["bend_tot"]') + + tar = driver.targets.new() + tar.name = "bend" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["%s"]' % prop_name) # no blending the result of this return None diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 39ba4baee61..23af154520a 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -364,12 +364,6 @@ def main(obj, bone_definition, base_names): prop["soft_min"] = 1.0 / spine_chain_len prop["soft_max"] = 1.0 - for i in range(spine_chain_len - 1): - prop_name = "bend_%.2d" % (i + 1) - prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) - mt.ribcage_p[prop_name] = 1.0 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 # Create a fake connected parent/child relationship with bone location constraints # positioned at the tip. @@ -387,15 +381,32 @@ def main(obj, bone_definition, base_names): # Constrain 'inbetween' bones - - # b01/max(0.001,b01+b02+b03+b04+b05) target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] - expression_suffix = "/max(0.001,%s)" % "+".join(target_names) - rib_driver_path = mt.ribcage_p.path_to_id() + mt.ribcage_p["bend_tot"] = 0.0 + fcurve = mt.ribcage_p.driver_add('["bend_tot"]', 0) + driver = fcurve.driver + driver.type = 'SUM' + fcurve.modifiers.remove(0) # grr dont need a modifier + + for i in range(spine_chain_len - 1): + tar = driver.targets.new() + tar.name = target_names[i] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) + print(rib_driver_path) + for i in range(1, spine_chain_len): + # Add bend prop + prop_name = "bend_%.2d" % i + prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) + mt.ribcage_p[prop_name] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + spine_p = getattr(ex_chain, ex_chain.attr_names[i] + "_p") spine_p_parent = spine_p.parent # interlaced bone @@ -410,16 +421,24 @@ def main(obj, bone_definition, base_names): fcurve = con.driver_add("influence", 0) driver = fcurve.driver driver.type = 'SCRIPTED' - # b01/max(0.001,b01+b02+b03+b04+b05) - driver.expression = target_names[i - 1] + expression_suffix + driver.expression = "bend/bend_tot" + fcurve.modifiers.remove(0) # grr dont need a modifier + - for j in range(spine_chain_len - 1): - tar = driver.targets.new() - tar.name = target_names[j] - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (j + 1)) + # add target + tar = driver.targets.new() + tar.name = "bend_tot" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["bend_tot"]') + + tar = driver.targets.new() + tar.name = "bend" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["%s"]' % prop_name) + # original bone drivers -- cgit v1.2.3 From b71749305a3b6db54f6676e87803703aa7acdebb Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 21:51:44 +0000 Subject: Pythonazed DopeSheet and NLA editors headers UI. --- release/scripts/ui/space_dopesheet.py | 192 +++++++++++++++++++++ release/scripts/ui/space_graph.py | 2 +- release/scripts/ui/space_nla.py | 170 ++++++++++++++++++ source/blender/editors/space_action/space_action.c | 21 +-- source/blender/editors/space_nla/space_nla.c | 21 +-- source/blender/makesrna/intern/rna_space.c | 45 +++-- 6 files changed, 400 insertions(+), 51 deletions(-) create mode 100644 release/scripts/ui/space_dopesheet.py create mode 100644 release/scripts/ui/space_nla.py diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py new file mode 100644 index 00000000000..520d8283ae9 --- /dev/null +++ b/release/scripts/ui/space_dopesheet.py @@ -0,0 +1,192 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# +import bpy + + +class DOPESHEET_HT_header(bpy.types.Header): + bl_space_type = 'DOPESHEET_EDITOR' + + def draw(self, context): + layout = self.layout + + st = context.space_data + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + + sub.menu("DOPESHEET_MT_view") + sub.menu("DOPESHEET_MT_select") + + if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): + sub.menu("DOPESHEET_MT_channel") + elif st.mode == 'GPENCIL': + # gpencil Channel menu + pass + + if st.mode != 'GPENCIL': + sub.menu("DOPESHEET_MT_key") + + layout.prop(st, "mode", text="") + layout.prop(st.dopesheet, "display_summary", text="Summary") + + if st.mode == 'DOPESHEET': + layout.template_dopesheet_filter(st.dopesheet) + elif st.mode == 'ACTION': + layout.template_ID(st, "action", "action.new") + + if st.mode != 'GPENCIL': + layout.prop(st, "autosnap", text="") + + row = layout.row(align=True) + row.operator("action.copy", text="", icon='ICON_COPYDOWN') + row.operator("action.paste", text="", icon='ICON_PASTEDOWN') + + +class DOPESHEET_MT_view(bpy.types.Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") + + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") + + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("action.previewrange_set") + + layout.separator() + layout.operator("action.frame_jump") + layout.operator("action.view_all") + + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") + + +class DOPESHEET_MT_select(bpy.types.Menu): + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("action.select_all_toggle") + layout.operator("action.select_all_toggle", text="Invert Selection").invert = True + + layout.separator() + layout.operator("action.select_border") + layout.operator("action.select_border", text="Border Axis Range").axis_range = True + + layout.separator() + layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA' + + layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + + +class DOPESHEET_MT_channel(bpy.types.Menu): + bl_label = "Channel" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") + + layout.separator() + layout.operator("anim.channels_editable_toggle") + + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") + + +class DOPESHEET_MT_key(bpy.types.Menu): + bl_label = "Key" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.menu("DOPESHEET_MT_key_transform", text="Transform") + + layout.operator_menu_enum("action.snap", property="type", text="Snap") + layout.operator_menu_enum("action.mirror", property="type", text="Mirror") + + layout.separator() + # Inconsistent naming? act/action + layout.operator("act.keyframe_insert") + + layout.separator() + layout.operator("action.duplicate") + layout.operator("action.delete") + + layout.separator() + layout.operator_menu_enum("action.keyframe_type", property="type", text="Keyframe Type") + layout.operator_menu_enum("action.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("action.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("action.extrapolation_type", property="type", text="Extrapolation Mode") + + layout.separator() + layout.operator("action.clean") + layout.operator("action.sample") + + layout.separator() + layout.operator("action.copy") + layout.operator("action.paste") + + +class DOPESHEET_MT_key_transform(bpy.types.Menu): + bl_label = "Transform" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") + + +bpy.types.register(DOPESHEET_HT_header) # header/menu classes +bpy.types.register(DOPESHEET_MT_view) +bpy.types.register(DOPESHEET_MT_select) +bpy.types.register(DOPESHEET_MT_channel) +bpy.types.register(DOPESHEET_MT_key) +bpy.types.register(DOPESHEET_MT_key_transform) diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index 38f6b526e9a..0a7ae02df29 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -67,7 +67,7 @@ class GRAPH_MT_view(bpy.types.Menu): layout.column() layout.separator() - layout.operator("graph.properties") + layout.operator("graph.properties", icon="ICON_MENU_PANEL") layout.prop(st, "show_cframe_indicator") layout.prop(st, "show_cursor") diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py new file mode 100644 index 00000000000..afd5e424b2d --- /dev/null +++ b/release/scripts/ui/space_nla.py @@ -0,0 +1,170 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# +import bpy + + +class NLA_HT_header(bpy.types.Header): + bl_space_type = 'NLA_EDITOR' + + def draw(self, context): + layout = self.layout + + st = context.space_data + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + + sub.menu("NLA_MT_view") + sub.menu("NLA_MT_select") + sub.menu("NLA_MT_edit") + sub.menu("NLA_MT_add") + + layout.template_dopesheet_filter(st.dopesheet) + + layout.prop(st, "autosnap", text="") + + +class NLA_MT_view(bpy.types.Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + + layout.operator("nla.properties", icon="ICON_MENU_PANEL") + + layout.separator() + layout.prop(st, "show_cframe_indicator") + + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") + + layout.prop(st, "show_strip_curves") + + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") + + +class NLA_MT_select(bpy.types.Menu): + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("nla.select_all_toggle") + layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True + + layout.separator() + layout.operator("nla.select_border") + layout.operator("nla.select_border", text="Border Axis Range").axis_range = True + + +class NLA_MT_edit(bpy.types.Menu): + bl_label = "Edit" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.menu("NLA_MT_edit_transform", text="Transform") + + layout.operator_menu_enum("nla.snap", property="type", text="Snap") + + layout.separator() + layout.operator("nla.duplicate") + layout.operator("nla.split") + layout.operator("nla.delete") + + layout.separator() + layout.operator("nla.mute_toggle") + + layout.separator() + layout.operator("nla.apply_scale") + layout.operator("nla.clear_scale") + + layout.separator() + layout.operator("nla.move_up") + layout.operator("nla.move_down") + + """ + XXX not sure if we need this check and so scene.flag wrapped? + // TODO: names of these tools for 'tweakmode' need changing? + if (scene->flag & SCE_NLA_EDIT_ON) + uiItemO(layout, "Stop Tweaking Strip Actions", 0, "NLA_OT_tweakmode_exit"); + else + uiItemO(layout, "Start Tweaking Strip Actions", 0, "NLA_OT_tweakmode_enter"); + """ + layout.separator() + layout.operator("nla.tweakmode_exit") + layout.operator("nla.tweakmode_enter") + + +class NLA_MT_add(bpy.types.Menu): + bl_label = "Add" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("nla.actionclip_add") + layout.operator("nla.transition_add") + + layout.separator() + layout.operator("nla.meta_add") + layout.operator("nla.meta_remove") + + layout.separator() + layout.operator("nla.tracks_add") + layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True + + +class NLA_MT_edit_transform(bpy.types.Menu): + bl_label = "Transform" + + def draw(self, context): + layout = self.layout + + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") + + +bpy.types.register(NLA_HT_header) # header/menu classes +bpy.types.register(NLA_MT_view) +bpy.types.register(NLA_MT_select) +bpy.types.register(NLA_MT_edit) +bpy.types.register(NLA_MT_add) +bpy.types.register(NLA_MT_edit_transform) diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index d4f8fcfb449..0bf3e3f70cb 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -259,29 +259,12 @@ static void action_channel_area_draw(const bContext *C, ARegion *ar) /* add handlers, stuff you only do once or on area/region changes */ static void action_header_area_init(wmWindowManager *wm, ARegion *ar) { - UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy); + ED_region_header_init(ar); } static void action_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); - glClear(GL_COLOR_BUFFER_BIT); - - /* set view2d view matrix for scrolling (without scrollers) */ - UI_view2d_view_ortho(C, &ar->v2d); - - action_header_buttons(C, ar); - - /* restore view matrix? */ - UI_view2d_view_restore(C); + ED_region_header(C, ar); } static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index a019e684239..572ad44f680 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -331,29 +331,12 @@ static void nla_main_area_draw(const bContext *C, ARegion *ar) /* add handlers, stuff you only do once or on area/region changes */ static void nla_header_area_init(wmWindowManager *wm, ARegion *ar) { - UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy); + ED_region_header_init(ar); } static void nla_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); - glClear(GL_COLOR_BUFFER_BIT); - - /* set view2d view matrix for scrolling (without scrollers) */ - UI_view2d_view_ortho(C, &ar->v2d); - - nla_header_buttons(C, ar); - - /* restore view matrix? */ - UI_view2d_view_restore(C); + ED_region_header(C, ar); } /* add handlers, stuff you only do once or on area/region changes */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index ef5f8ccb87b..4a55d259be9 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -83,6 +83,13 @@ static EnumPropertyItem transform_orientation_items[] = { {V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"}, {0, NULL, 0, NULL, NULL}}; +static EnumPropertyItem autosnap_items[] = { + {SACTSNAP_OFF, "NONE", 0, "None", ""}, + {SACTSNAP_STEP, "STEP", 0, "Step", "Snap to 1.0 frame/second intervals."}, + {SACTSNAP_FRAME, "FRAME", 0, "Frame", "Snap to actual frames/seconds (nla-action time)."}, + {SACTSNAP_MARKER, "MARKER", 0, "Marker", "Snap to nearest marker."}, + {0, NULL, 0, NULL, NULL}}; + #ifdef RNA_RUNTIME #include "DNA_anim_types.h" @@ -1262,8 +1269,19 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOTRANSKEYCULL); RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Show handles of Bezier control points."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL); - - // TODO... autosnap, dopesheet? + + /* dopesheet */ + prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "DopeSheet"); + RNA_def_property_pointer_sdna(prop, NULL, "ads"); + RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data."); + + /* autosnap */ + prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "autosnap"); + RNA_def_property_enum_items(prop, autosnap_items); + RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL); } static void rna_def_space_graph(BlenderRNA *brna) @@ -1285,13 +1303,6 @@ static void rna_def_space_graph(BlenderRNA *brna) //{V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem autosnap_items[] = { - {SACTSNAP_OFF, "NONE", 0, "None", ""}, - {SACTSNAP_STEP, "STEP", 0, "Step", "Snap to 1.0 frame/second intervals."}, - {SACTSNAP_FRAME, "FRAME", 0, "Frame", "Snap to actual frames/seconds (nla-action time)."}, - {SACTSNAP_MARKER, "MARKER", 0, "Marker", "Snap to nearest marker."}, - {0, NULL, 0, NULL, NULL}}; - srna= RNA_def_struct(brna, "SpaceGraphEditor", "Space"); RNA_def_struct_sdna(srna, "SpaceIpo"); @@ -1398,9 +1409,19 @@ static void rna_def_space_nla(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NOSTRIPCURVES); RNA_def_property_ui_text(prop, "Show Control Curves", "Show influence curves on strips."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL); - - /* editing */ - // TODO... autosnap, dopesheet? + + /* dopesheet */ + prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "DopeSheet"); + RNA_def_property_pointer_sdna(prop, NULL, "ads"); + RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data."); + + /* autosnap */ + prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "autosnap"); + RNA_def_property_enum_items(prop, autosnap_items); + RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL); } static void rna_def_space_time(BlenderRNA *brna) -- cgit v1.2.3 From 495cbc1a6f3b42f07d284bb81460fafa22ce38d3 Mon Sep 17 00:00:00 2001 From: Elia Sarti Date: Mon, 7 Dec 2009 21:56:25 +0000 Subject: Forgot to remove these. --- .../blender/editors/space_action/action_header.c | 348 --------------------- source/blender/editors/space_graph/graph_header.c | 73 ----- source/blender/editors/space_nla/nla_header.c | 262 ---------------- 3 files changed, 683 deletions(-) delete mode 100644 source/blender/editors/space_action/action_header.c delete mode 100644 source/blender/editors/space_graph/graph_header.c delete mode 100644 source/blender/editors/space_nla/nla_header.c diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c deleted file mode 100644 index d2dbb5fe3b0..00000000000 --- a/source/blender/editors/space_action/action_header.c +++ /dev/null @@ -1,348 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2008 Blender Foundation. - * All rights reserved. - * - * - * Contributor(s): Blender Foundation - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include - -#include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_key_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 "BKE_animsys.h" -#include "BKE_action.h" -#include "BKE_context.h" -#include "BKE_screen.h" - -#include "ED_anim_api.h" -#include "ED_screen.h" -#include "ED_transform.h" -#include "ED_types.h" -#include "ED_util.h" - -#include "RNA_access.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 "action_intern.h" - -enum { - B_REDR= 1, - B_MODECHANGE, -} eActHeader_Events; - -/* ********************************************************* */ -/* Menu Defines... */ - -static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa= CTX_wm_area(C); - SpaceAction *sact= CTX_wm_space_action(C); - PointerRNA spaceptr; - - /* retrieve state */ - RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, sact, &spaceptr); - - /* create menu */ - //uiItemO(layout, NULL, ICON_MENU_PANEL, "ACTION_OT_properties"); - - //uiItemS(layout); - - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); - uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0); - uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0); - - if (sact->flag & SACTION_DRAWTIME) - uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); - else - uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set"); - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear"); - - uiItemO(layout, NULL, 0, "ACTION_OT_previewrange_set"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACTION_OT_frame_jump"); - - uiItemO(layout, NULL, 0, "ACTION_OT_view_all"); - - if (sa->full) - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow - else - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctrl DownArrow -} - -static void act_selectmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "ACTION_OT_select_all_toggle"); - uiItemBooleanO(layout, "Invert All", 0, "ACTION_OT_select_all_toggle", "invert", 1); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACTION_OT_select_border"); - uiItemBooleanO(layout, "Border Axis Range", 0, "ACTION_OT_select_border", "axis_range", 1); - - uiItemS(layout); - - uiItemEnumO(layout, "Columns on Selected Keys", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_KEYS); - uiItemEnumO(layout, "Column on Current Frame", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_CFRA); - - uiItemEnumO(layout, "Columns on Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - uiItemEnumO(layout, "Between Selected Markers", 0, "ACTION_OT_select_column", "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); -} - -static void act_channelmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_toggle"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_enable"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_setting_disable"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_channels_editable_toggle"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_channels_expand"); - uiItemO(layout, NULL, 0, "ANIM_OT_channels_collapse"); -} - -static void act_gplayermenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - //uiItemMenuF(layout, "Transform", 0, nla_edit_transformmenu, NULL, NULL); - //uiItemS(layout); - //uiItemO(layout, NULL, 0, "NLAEDIT_OT_duplicate"); -} - -static void act_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TIME_TRANSLATE); - uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND); - uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE); -} - -static void act_editmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemMenuF(layout, "Transform", 0, act_edit_transformmenu, NULL); - uiItemMenuEnumO(layout, "Snap", 0, "ACTION_OT_snap", "type"); - uiItemMenuEnumO(layout, "Mirror", 0, "ACTION_OT_mirror", "type"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACT_OT_keyframe_insert"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACTION_OT_duplicate"); - uiItemO(layout, NULL, 0, "ACTION_OT_delete"); - - uiItemS(layout); - - uiItemMenuEnumO(layout, "Keyframe Type", 0, "ACTION_OT_keyframe_type", "type"); - uiItemMenuEnumO(layout, "Handle Type", 0, "ACTION_OT_handle_type", "type"); - uiItemMenuEnumO(layout, "Interpolation Type", 0, "ACTION_OT_interpolation_type", "type"); - uiItemMenuEnumO(layout, "Extrapolation Type", 0, "ACTION_OT_extrapolation_type", "type"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACTION_OT_clean"); - uiItemO(layout, NULL, 0, "ACTION_OT_sample"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ACTION_OT_copy"); - uiItemO(layout, NULL, 0, "ACTION_OT_paste"); -} - -/* ************************ header area region *********************** */ - -static void do_action_buttons(bContext *C, void *arg, int event) -{ - /* special exception for mode changing - enable custom settings? */ - if (event == B_MODECHANGE) { - SpaceAction *saction= CTX_wm_space_action(C); - - /* if the new mode is ShapeKeys editor, enable sliders */ - if (saction->mode == SACTCONT_SHAPEKEY) - saction->flag |= SACTION_SLIDERS; - } - - ED_area_tag_refresh(CTX_wm_area(C)); - ED_area_tag_redraw(CTX_wm_area(C)); -} - -void action_header_buttons(const bContext *C, ARegion *ar) -{ - ScrArea *sa= CTX_wm_area(C); - SpaceAction *saction= CTX_wm_space_action(C); - bAnimContext ac; - uiBlock *block; - int xco, yco= 3, xmax; - - block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS); - uiBlockSetHandleFunc(block, do_action_buttons, NULL); - - xco= ED_area_header_standardbuttons(C, block, yco); - - uiBlockSetEmboss(block, UI_EMBOSS); - - /* get context... (also syncs data) */ - ANIM_animdata_get_context(C, &ac); - - if ((sa->flag & HEADER_NO_PULLDOWN)==0) { - - xmax= GetButStringLength("View"); - uiDefMenuBut(block, act_viewmenu, NULL, "View", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Select"); - uiDefMenuBut(block, act_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - if ( (saction->mode == SACTCONT_DOPESHEET) || - ((saction->action) && (saction->mode==SACTCONT_ACTION)) ) - { - xmax= GetButStringLength("Channel"); - uiDefMenuBut(block, act_channelmenu, NULL, "Channel", xco, yco, xmax-3, 20, ""); - xco+= xmax; - } - else if (saction->mode==SACTCONT_GPENCIL) { - xmax= GetButStringLength("Channel"); - uiDefMenuBut(block, act_gplayermenu, NULL, "Channel", xco, yco, xmax-3, 20, ""); - xco+= xmax; - } - - //xmax= GetButStringLength("Marker"); - //uiDefMenuBut(block, act_markermenu, NULL, "Marker", xco, yco, xmax-3, 20, ""); - //xco+= xmax; - - if (saction->mode == SACTCONT_GPENCIL) { - //xmax= GetButStringLength("Frame"); - //uiDefMenuBut(block, act_selectmenu, NULL, "Frame", xco, yco, xmax-3, 20, ""); - //xco+= xmax; - } - else { - xmax= GetButStringLength("Key"); - uiDefMenuBut(block, act_editmenu, NULL, "Key", xco, yco, xmax-3, 20, ""); - xco+= xmax; - } - } - - uiBlockSetEmboss(block, UI_EMBOSS); - - /* MODE SELECTOR */ - uiDefButC(block, MENU, B_MODECHANGE, - "Editor Mode %t|DopeSheet %x3|Action Editor %x0|ShapeKey Editor %x1|Grease Pencil %x2", - xco,yco,90,YIC, &saction->mode, 0, 1, 0, 0, - "Editing modes for this editor"); - - - xco += (90 + 8); - - /* SUMMARY CHANNEL */ - uiDefIconTextButBitI(block, TOG, ADS_FILTER_SUMMARY, B_REDR, ICON_BORDERMOVE, "Summary", xco,yco,XIC*4,YIC, &(saction->ads.filterflag), 0, 0, 0, 0, "Include DopeSheet summary row"); // TODO: needs a better icon - xco += (XIC*4.5); - - /*if (ac.data)*/ - { - /* MODE-DEPENDENT DRAWING */ - if (saction->mode == SACTCONT_DOPESHEET) { - /* FILTERING OPTIONS */ - xco -= XIC; // XXX first button incurs this offset... - xco= ANIM_headerUI_standard_buttons(C, &saction->ads, block, xco, yco); - } - else if (saction->mode == SACTCONT_ACTION) { - uiLayout *layout; - bScreen *sc= CTX_wm_screen(C); - PointerRNA ptr; - - RNA_pointer_create(&sc->id, &RNA_SpaceDopeSheetEditor, saction, &ptr); - - layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, 20+3, 20, 1, U.uistyles.first); - uiTemplateID(layout, (bContext*)C, &ptr, "action", "ACTION_OT_new", NULL, NULL); - uiBlockLayoutResolve(block, &xco, NULL); - - xco += 8; - } - - /* draw AUTOSNAP */ - if (saction->mode != SACTCONT_GPENCIL) { - if (saction->flag & SACTION_DRAWTIME) { - uiDefButC(block, MENU, B_REDR, - "Auto-Snap Keyframes %t|No Snap %x0|Second Step %x1|Nearest Second %x2|Nearest Marker %x3", - xco,yco,90,YIC, &(saction->autosnap), 0, 1, 0, 0, - "Auto-snapping mode for keyframes when transforming"); - } - else { - uiDefButC(block, MENU, B_REDR, - "Auto-Snap Keyframes %t|No Snap %x0|Frame Step %x1|Nearest Frame %x2|Nearest Marker %x3", - xco,yco,90,YIC, &(saction->autosnap), 0, 1, 0, 0, - "Auto-snapping mode for keyframes when transforming"); - } - - xco += (90 + 8); - } - - /* COPY PASTE */ - uiBlockBeginAlign(block); - uiDefIconButO(block, BUT, "ACTION_OT_copy", WM_OP_INVOKE_REGION_WIN, ICON_COPYDOWN, xco,yco,XIC,YIC, "Copies the selected keyframes to the buffer."); - xco += XIC; - uiDefIconButO(block, BUT, "ACTION_OT_paste", WM_OP_INVOKE_REGION_WIN, ICON_PASTEDOWN, xco,yco,XIC,YIC, "Pastes the keyframes from the buffer into the selected channels."); - uiBlockEndAlign(block); - xco += (XIC + 8); - } - - /* always as last */ - UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, (int)(ar->v2d.tot.ymax-ar->v2d.tot.ymin)); - - uiEndBlock(C, block); - uiDrawBlock(C, block); -} - - diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c deleted file mode 100644 index 8aeb76cae0f..00000000000 --- a/source/blender/editors/space_graph/graph_header.c +++ /dev/null @@ -1,73 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2008 Blender Foundation. - * All rights reserved. - * - * - * Contributor(s): Blender Foundation - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include - -#include "DNA_anim_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 "BKE_context.h" -#include "BKE_screen.h" - -#include "ED_anim_api.h" -#include "ED_transform.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" - -#include "RNA_access.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 "graph_intern.h" - -/* ********************************************************* */ - -static void do_graph_buttons(bContext *C, void *arg, int event) -{ - ED_area_tag_refresh(CTX_wm_area(C)); - ED_area_tag_redraw(CTX_wm_area(C)); -} - - diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c deleted file mode 100644 index 2624e7a9255..00000000000 --- a/source/blender/editors/space_nla/nla_header.c +++ /dev/null @@ -1,262 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2008 Blender Foundation. - * All rights reserved. - * - * - * Contributor(s): Blender Foundation, Joshua Leung - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include - -#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" - -#include "BLI_blenlib.h" -#include "BLI_math.h" -#include "BLI_rand.h" - -#include "BKE_animsys.h" -#include "BKE_nla.h" -#include "BKE_context.h" -#include "BKE_report.h" -#include "BKE_screen.h" -#include "ED_types.h" -#include "ED_util.h" - -#include "ED_anim_api.h" -#include "ED_markers.h" -#include "ED_space_api.h" -#include "ED_screen.h" -#include "ED_transform.h" - -#include "BIF_gl.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 "nla_intern.h" - -/* button events */ -enum { - B_REDR = 1, -} eNLAHeader_ButEvents; - -/* ************************ header area region *********************** */ - - -static void nla_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa= CTX_wm_area(C); - SpaceNla *snla= CTX_wm_space_nla(C); - PointerRNA spaceptr; - - /* retrieve state */ - RNA_pointer_create(&sc->id, &RNA_SpaceNLA, snla, &spaceptr); - - /* create menu */ - uiItemO(layout, NULL, ICON_MENU_PANEL, "NLA_OT_properties"); - - uiItemS(layout); - - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); - - if (snla->flag & SNLA_DRAWTIME) - uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); - else - uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle"); - - uiItemR(layout, NULL, 0, &spaceptr, "show_strip_curves", 0); - - uiItemS(layout); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_set"); - uiItemO(layout, NULL, 0, "ANIM_OT_previewrange_clear"); - - uiItemS(layout); - - //uiItemO(layout, NULL, 0, "NLA_OT_view_all"); - - if (sa->full) - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow - else - uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctr DownArrow -} - -static void nla_selectmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "NLA_OT_select_all_toggle"); - uiItemBooleanO(layout, "Invert All", 0, "NLA_OT_select_all_toggle", "invert", 1); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_select_border"); - uiItemBooleanO(layout, "Border Axis Range", 0, "NLA_OT_select_border", "axis_range", 1); -} - -static void nla_edit_transformmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - // XXX these operators may change for NLA... - uiItemEnumO(layout, "Grab/Move", 0, "TFM_OT_transform", "mode", TFM_TRANSLATION); - uiItemEnumO(layout, "Extend", 0, "TFM_OT_transform", "mode", TFM_TIME_EXTEND); - uiItemEnumO(layout, "Scale", 0, "TFM_OT_transform", "mode", TFM_TIME_SCALE); -} - -static void nla_editmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - Scene *scene= CTX_data_scene(C); - - uiItemMenuF(layout, "Transform", 0, nla_edit_transformmenu, NULL); - uiItemMenuEnumO(layout, "Snap", 0, "NLA_OT_snap", "type"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_duplicate"); - uiItemO(layout, NULL, 0, "NLA_OT_split"); - uiItemO(layout, NULL, 0, "NLA_OT_delete"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_mute_toggle"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_apply_scale"); - uiItemO(layout, NULL, 0, "NLA_OT_clear_scale"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_move_up"); - uiItemO(layout, NULL, 0, "NLA_OT_move_down"); - - uiItemS(layout); - - // TODO: names of these tools for 'tweakmode' need changing? - if (scene->flag & SCE_NLA_EDIT_ON) - uiItemO(layout, "Stop Tweaking Strip Actions", 0, "NLA_OT_tweakmode_exit"); - else - uiItemO(layout, "Start Tweaking Strip Actions", 0, "NLA_OT_tweakmode_enter"); -} - -static void nla_addmenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - uiItemO(layout, NULL, 0, "NLA_OT_actionclip_add"); - uiItemO(layout, NULL, 0, "NLA_OT_transition_add"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_meta_add"); - uiItemO(layout, NULL, 0, "NLA_OT_meta_remove"); - - uiItemS(layout); - - uiItemO(layout, NULL, 0, "NLA_OT_tracks_add"); - uiItemBooleanO(layout, "Add Tracks Above Selected", 0, "NLA_OT_tracks_add", "above_selected", 1); -} - -/* ------------------ */ - -static void do_nla_buttons(bContext *C, void *arg, int event) -{ - ED_area_tag_refresh(CTX_wm_area(C)); - ED_area_tag_redraw(CTX_wm_area(C)); -} - - -void nla_header_buttons(const bContext *C, ARegion *ar) -{ - SpaceNla *snla= CTX_wm_space_nla(C); - ScrArea *sa= CTX_wm_area(C); - uiBlock *block; - int xco, yco= 3; - - block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS); - uiBlockSetHandleFunc(block, do_nla_buttons, NULL); - - xco= ED_area_header_standardbuttons(C, block, yco); - - if ((sa->flag & HEADER_NO_PULLDOWN)==0) { - int xmax; - - xmax= GetButStringLength("View"); - uiDefMenuBut(block, nla_viewmenu, NULL, "View", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Select"); - uiDefMenuBut(block, nla_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Edit"); - uiDefMenuBut(block, nla_editmenu, NULL, "Edit", xco, yco, xmax-3, 20, ""); - xco+= xmax; - - xmax= GetButStringLength("Add"); - uiDefMenuBut(block, nla_addmenu, NULL, "Add", xco, yco, xmax-3, 20, ""); - xco+= xmax; - } - - uiBlockSetEmboss(block, UI_EMBOSS); - - /* filtering buttons */ - xco= ANIM_headerUI_standard_buttons(C, snla->ads, block, xco, yco); - - /* auto-snap selector */ - if (snla->flag & SNLA_DRAWTIME) { - uiDefButS(block, MENU, B_REDR, - "Auto-Snap %t|No Time-Snap %x0|Nearest Second %x2|Nearest Marker %x3", - xco,yco,90,YIC, &snla->autosnap, 0, 1, 0, 0, - "Auto-snapping mode for times when transforming"); - } - else { - uiDefButS(block, MENU, B_REDR, - "Auto-Snap %t|No Time-Snap %x0|Nearest Frame %x2|Nearest Marker %x3", - xco,yco,90,YIC, &snla->autosnap, 0, 1, 0, 0, - "Auto-snapping mode for times when transforming"); - } - xco += 98; - - /* always as last */ - UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin); - - uiEndBlock(C, block); - uiDrawBlock(C, block); -} - - -- cgit v1.2.3 From 3a954970f7262aa053ad233d03915d1c18d8e0a2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Dec 2009 22:29:35 +0000 Subject: Remove 'temp' screens hanging around in files from older 2.5 versions --- source/blender/blenloader/intern/readfile.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 54c86af80b6..83627ac50c3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10162,6 +10162,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } } + /* clear hanging 'temp' screens from older 2.5 files*/ + if (main->versionfile == 250) { + bScreen *screen; + for(screen= main->screen.first; screen; screen= screen->id.next) { + if (screen->full == SCREENTEMP) + free_libblock(&main->screen, screen); + } + } } /* put 2.50 compatibility code here until next subversion bump */ -- cgit v1.2.3 From 742a09858b03a8d37f9d88129edca749976f263b Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Mon, 7 Dec 2009 23:47:37 +0000 Subject: FIX for #20256 New folder doesn't rename Note: did some refactoring and renaming of files to make code a bit clearer there too. Also applies solution provided by Aurel W in patch #20264, thanks for submitting the patch. --- source/blender/editors/space_file/file_ops.c | 66 +++++++++++++++++++--------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 2d4185e871a..8fe1ddd636d 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -29,6 +29,7 @@ #include "BKE_context.h" #include "BKE_screen.h" #include "BKE_global.h" +#include "BKE_report.h" #include "BLI_blenlib.h" #include "BLI_storage_types.h" @@ -745,32 +746,55 @@ int file_next_exec(bContext *C, wmOperator *unused) return OPERATOR_FINISHED; } -int file_directory_new_exec(bContext *C, wmOperator *unused) +/* 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. +*/ +static int new_folder_path(const char* parent, char *folder, char *name) { - char tmpstr[FILE_MAX]; - char tmpdir[FILE_MAXFILE]; int i = 1; + int len = 0; + + BLI_strncpy(name, "New Folder", FILE_MAXFILE); + BLI_join_dirfile(folder, parent, name); + /* check whether folder with the name already exists, in this case + add number to the name. Check length of generated name to avoid + crazy case of huge number of folders each named 'New Folder (x)' */ + while (BLI_exists(folder) && (lenparams) { - - BLI_strncpy(tmpstr, sfile->params->dir, FILE_MAX); - BLI_join_dirfile(tmpstr, tmpstr, "New Folder"); - while (BLI_exists(tmpstr)) { - BLI_snprintf(tmpdir, FILE_MAXFILE, "New Folder(%d)", i++); - BLI_strncpy(tmpstr, sfile->params->dir, FILE_MAX); - BLI_join_dirfile(tmpstr, tmpstr, tmpdir); - } - BLI_recurdir_fileops(tmpstr); - if (BLI_exists(tmpstr)) { - BLI_strncpy(sfile->params->renamefile, tmpdir, FILE_MAXFILE); - } else { - filelist_free(sfile->files); - filelist_parent(sfile->files); - BLI_strncpy(sfile->params->dir, filelist_dir(sfile->files), FILE_MAX); - } - } + if(!sfile->params) { + BKE_report(op->reports,RPT_WARNING, "No parent directory given."); + return OPERATOR_CANCELLED; + } + + /* create a new, non-existing folder name */ + if (!new_folder_path(sfile->params->dir, path, name)) { + BKE_report(op->reports,RPT_ERROR, "Couldn't create new folder name."); + return OPERATOR_CANCELLED; + } + + /* rename the file */ + BLI_recurdir_fileops(path); + + if (!BLI_exists(path)) { + BKE_report(op->reports,RPT_ERROR, "Couldn't create new folder."); + return OPERATOR_CANCELLED; + } + + /* now remember file to jump into editing */ + BLI_strncpy(sfile->params->renamefile, name, FILE_MAXFILE); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); return OPERATOR_FINISHED; -- cgit v1.2.3 From d653b0c9619cc90ada5d213e194bf0f3c5babc1c Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Tue, 8 Dec 2009 00:57:14 +0000 Subject: Few small things: 1. MSVC 9 projectfiles update (graph_header.c, action_header.c and nla_header.c removed) 2. Fix for opening the filebrowser when saving file for the first time (untitled.blend) from file menu 3. Add CROSS effect sequence type back to menu. (Durian fix) Note: Removed SEQ_EFFECT from rna, since this no actual sequence type, but rather used to check for the effect bit. --- projectfiles_vc9/blender/editors/ED_editors.vcproj | 12 ------------ release/scripts/ui/space_info.py | 2 +- release/scripts/ui/space_sequencer.py | 3 ++- source/blender/makesrna/intern/rna_sequence.c | 1 - 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj index fec46871e83..bd8e00461d7 100644 --- a/projectfiles_vc9/blender/editors/ED_editors.vcproj +++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj @@ -631,10 +631,6 @@ RelativePath="..\..\..\source\blender\editors\space_graph\graph_edit.c" > - - @@ -835,10 +831,6 @@ RelativePath="..\..\..\source\blender\editors\space_action\action_edit.c" > - - @@ -875,10 +867,6 @@ RelativePath="..\..\..\source\blender\editors\space_nla\nla_edit.c" > - - diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index ad94bdd0beb..c3b8a5151c7 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -79,7 +79,7 @@ class INFO_MT_file(bpy.types.Menu): layout.separator() - layout.operator_context = 'EXEC_AREA' + layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_as_mainfile", text="Save As...") diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index b2bd017262f..bb6bd1dc04c 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -178,6 +178,7 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu): layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT' layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER' layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER' + layout.operator("sequencer.effect_strip_add", text="Cross").type = 'CROSS' layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS' layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY' layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP' @@ -338,7 +339,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): return False return strip.type in ('ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', - 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', + 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'PLUGIN', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED') diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 2e31facfd19..cb9863d7ea5 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -396,7 +396,6 @@ static void rna_def_sequence(BlenderRNA *brna) {SEQ_SCENE, "SCENE", 0, "Scene", ""}, {SEQ_MOVIE, "MOVIE", 0, "Movie", ""}, {SEQ_SOUND, "SOUND", 0, "Sound", ""}, - {SEQ_EFFECT, "REPLACE", 0, "Replace", ""}, {SEQ_CROSS, "CROSS", 0, "Cross", ""}, {SEQ_ADD, "ADD", 0, "Add", ""}, {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, -- cgit v1.2.3 From 4ea3e14ebf10b13f6dbd548dbb36784975aeb220 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 8 Dec 2009 01:56:01 +0000 Subject: Wrong argument type for zoom operator. --- release/scripts/ui/space_view3d.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index af722c7f4d7..83888ac9c0f 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -293,8 +293,8 @@ class VIEW3D_MT_view_navigation(bpy.types.Menu): layout.separator() - layout.operator("view3d.zoom", text="Zoom In").delta = 1.0 - layout.operator("view3d.zoom", text="Zoom Out").delta = -1.0 + layout.operator("view3d.zoom", text="Zoom In").delta = 1 + layout.operator("view3d.zoom", text="Zoom Out").delta = -1 layout.separator() -- cgit v1.2.3 From 53f94f92a1a84c44376722a4a642766f53b3ab24 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 8 Dec 2009 06:32:30 +0000 Subject: Animation Editors: Fixes for RNA/Python Bastardisation Still not happy about the tight/regular-spacing imposed by the layout engine automation, but will tweak later. --- release/scripts/ui/space_dopesheet.py | 217 ++++++++++++++------------- release/scripts/ui/space_graph.py | 221 ++++++++++++++-------------- release/scripts/ui/space_nla.py | 180 +++++++++++----------- source/blender/makesrna/intern/rna_action.c | 4 +- source/blender/makesrna/intern/rna_scene.c | 8 + source/blender/makesrna/intern/rna_space.c | 23 ++- 6 files changed, 336 insertions(+), 317 deletions(-) diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index 520d8283ae9..db01134604e 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -16,172 +16,171 @@ # # ##### END GPL LICENSE BLOCK ##### -# import bpy class DOPESHEET_HT_header(bpy.types.Header): - bl_space_type = 'DOPESHEET_EDITOR' + bl_space_type = 'DOPESHEET_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("DOPESHEET_MT_view") - sub.menu("DOPESHEET_MT_select") + sub.menu("DOPESHEET_MT_view") + sub.menu("DOPESHEET_MT_select") - if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): - sub.menu("DOPESHEET_MT_channel") - elif st.mode == 'GPENCIL': - # gpencil Channel menu - pass + if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): + sub.menu("DOPESHEET_MT_channel") + elif st.mode == 'GPENCIL': + # gpencil Channel menu + pass - if st.mode != 'GPENCIL': - sub.menu("DOPESHEET_MT_key") + if st.mode != 'GPENCIL': + sub.menu("DOPESHEET_MT_key") - layout.prop(st, "mode", text="") - layout.prop(st.dopesheet, "display_summary", text="Summary") + layout.prop(st, "mode", text="") + layout.prop(st.dopesheet, "display_summary", text="Summary") - if st.mode == 'DOPESHEET': - layout.template_dopesheet_filter(st.dopesheet) - elif st.mode == 'ACTION': - layout.template_ID(st, "action", "action.new") + if st.mode == 'DOPESHEET': + layout.template_dopesheet_filter(st.dopesheet) + elif st.mode == 'ACTION': + layout.template_ID(st, "action", new="action.new") - if st.mode != 'GPENCIL': - layout.prop(st, "autosnap", text="") + if st.mode != 'GPENCIL': + layout.prop(st, "autosnap", text="") - row = layout.row(align=True) - row.operator("action.copy", text="", icon='ICON_COPYDOWN') - row.operator("action.paste", text="", icon='ICON_PASTEDOWN') + row = layout.row(align=True) + row.operator("action.copy", text="", icon='ICON_COPYDOWN') + row.operator("action.paste", text="", icon='ICON_PASTEDOWN') class DOPESHEET_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.prop(st, "show_cframe_indicator") - layout.prop(st, "show_sliders") - layout.prop(st, "automerge_keyframes") + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") - if st.show_seconds: - layout.operator("anim.time_toggle", text="Show Frames") - else: - layout.operator("anim.time_toggle", text="Show Seconds") + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") - layout.operator("action.previewrange_set") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("action.previewrange_set") - layout.separator() - layout.operator("action.frame_jump") - layout.operator("action.view_all") + layout.separator() + layout.operator("action.frame_jump") + layout.operator("action.view_all") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class DOPESHEET_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("action.select_all_toggle") - layout.operator("action.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("action.select_all_toggle") + layout.operator("action.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("action.select_border") - layout.operator("action.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("action.select_border") + layout.operator("action.select_border", text="Border Axis Range").axis_range = True - layout.separator() - layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS' - layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA' + layout.separator() + layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA' - layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' - layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' class DOPESHEET_MT_channel(bpy.types.Menu): - bl_label = "Channel" + bl_label = "Channel" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("anim.channels_setting_toggle") - layout.operator("anim.channels_setting_enable") - layout.operator("anim.channels_setting_disable") + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") - layout.separator() - layout.operator("anim.channels_editable_toggle") + layout.separator() + layout.operator("anim.channels_editable_toggle") - layout.separator() - layout.operator("anim.channels_expand") - layout.operator("anim.channels_collapse") + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") class DOPESHEET_MT_key(bpy.types.Menu): - bl_label = "Key" + bl_label = "Key" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.menu("DOPESHEET_MT_key_transform", text="Transform") + layout.column() + layout.menu("DOPESHEET_MT_key_transform", text="Transform") - layout.operator_menu_enum("action.snap", property="type", text="Snap") - layout.operator_menu_enum("action.mirror", property="type", text="Mirror") + layout.operator_menu_enum("action.snap", property="type", text="Snap") + layout.operator_menu_enum("action.mirror", property="type", text="Mirror") - layout.separator() - # Inconsistent naming? act/action - layout.operator("act.keyframe_insert") + layout.separator() + # Inconsistent naming? act/action + layout.operator("act.keyframe_insert") - layout.separator() - layout.operator("action.duplicate") - layout.operator("action.delete") + layout.separator() + layout.operator("action.duplicate") + layout.operator("action.delete") - layout.separator() - layout.operator_menu_enum("action.keyframe_type", property="type", text="Keyframe Type") - layout.operator_menu_enum("action.handle_type", property="type", text="Handle Type") - layout.operator_menu_enum("action.interpolation_type", property="type", text="Interpolation Mode") - layout.operator_menu_enum("action.extrapolation_type", property="type", text="Extrapolation Mode") + layout.separator() + layout.operator_menu_enum("action.keyframe_type", property="type", text="Keyframe Type") + layout.operator_menu_enum("action.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("action.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("action.extrapolation_type", property="type", text="Extrapolation Mode") - layout.separator() - layout.operator("action.clean") - layout.operator("action.sample") + layout.separator() + layout.operator("action.clean") + layout.operator("action.sample") - layout.separator() - layout.operator("action.copy") - layout.operator("action.paste") + layout.separator() + layout.operator("action.copy") + layout.operator("action.paste") class DOPESHEET_MT_key_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") bpy.types.register(DOPESHEET_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index 0a7ae02df29..b9f5364da3a 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -16,172 +16,175 @@ # # ##### END GPL LICENSE BLOCK ##### -# import bpy class GRAPH_HT_header(bpy.types.Header): - bl_space_type = 'GRAPH_EDITOR' + bl_space_type = 'GRAPH_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("GRAPH_MT_view") - sub.menu("GRAPH_MT_select") - sub.menu("GRAPH_MT_channel") - sub.menu("GRAPH_MT_key") + sub.menu("GRAPH_MT_view") + sub.menu("GRAPH_MT_select") + sub.menu("GRAPH_MT_channel") + sub.menu("GRAPH_MT_key") - layout.prop(st, "mode", text="") + layout.prop(st, "mode", text="") - layout.template_dopesheet_filter(st.dopesheet) + layout.template_dopesheet_filter(st.dopesheet) - layout.prop(st, "autosnap", text="") - layout.prop(st, "pivot_point", text="", icon_only=True) + layout.prop(st, "autosnap", text="") + layout.prop(st, "pivot_point", text="", icon_only=True) - row = layout.row(align=True) - row.operator("graph.copy", text="", icon='ICON_COPYDOWN') - row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') + row = layout.row(align=True) + row.operator("graph.copy", text="", icon='ICON_COPYDOWN') + row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') - row = layout.row(align=True) - # these likely need new icons - row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') - row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') + row = layout.row(align=True) + if st.has_ghost_curves: + row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') + else: + row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') class GRAPH_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.separator() - layout.operator("graph.properties", icon="ICON_MENU_PANEL") + layout.separator() + layout.operator("graph.properties", icon="ICON_MENU_PANEL") - layout.prop(st, "show_cframe_indicator") - layout.prop(st, "show_cursor") - layout.prop(st, "show_sliders") - layout.prop(st, "automerge_keyframes") + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_cursor") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") - layout.separator() - layout.operator("graph.handles_view_toggle") - layout.prop(st, "only_selected_curves_handles") - layout.prop(st, "only_selected_keyframe_handles") - layout.operator("anim.time_toggle") + layout.separator() + if st.show_handles: + layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_HLT", text="Show All Handles") + else: + layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_DEHLT", text="Show All Handles") + layout.prop(st, "only_selected_curves_handles") + layout.prop(st, "only_selected_keyframe_handles") + layout.operator("anim.time_toggle") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") - layout.operator("graph.previewrange_set") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("graph.previewrange_set") - layout.separator() - layout.operator("graph.frame_jump") - layout.operator("graph.view_all") + layout.separator() + layout.operator("graph.frame_jump") + layout.operator("graph.view_all") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class GRAPH_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("graph.select_all_toggle") - layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("graph.select_all_toggle") + layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("graph.select_border") - layout.operator("graph.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("graph.select_border") + layout.operator("graph.select_border", text="Border Axis Range").axis_range = True - layout.separator() - layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' - layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' + layout.separator() + layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' - layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' - layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' class GRAPH_MT_channel(bpy.types.Menu): - bl_label = "Channel" + bl_label = "Channel" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("anim.channels_setting_toggle") - layout.operator("anim.channels_setting_enable") - layout.operator("anim.channels_setting_disable") + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") - layout.separator() - layout.operator("anim.channels_editable_toggle") + layout.separator() + layout.operator("anim.channels_editable_toggle") - layout.separator() - layout.operator("anim.channels_expand") - layout.operator("anim.channels_collapse") + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") class GRAPH_MT_key(bpy.types.Menu): - bl_label = "Key" + bl_label = "Key" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.menu("GRAPH_MT_key_transform", text="Transform") + layout.column() + layout.menu("GRAPH_MT_key_transform", text="Transform") - layout.operator_menu_enum("graph.snap", property="type", text="Snap") - layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") + layout.operator_menu_enum("graph.snap", property="type", text="Snap") + layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") - layout.separator() - layout.operator("graph.keyframe_insert") - layout.operator("graph.fmodifier_add") + layout.separator() + layout.operator("graph.keyframe_insert") + layout.operator("graph.fmodifier_add") - layout.separator() - layout.operator("graph.duplicate") - layout.operator("graph.delete") + layout.separator() + layout.operator("graph.duplicate") + layout.operator("graph.delete") - layout.separator() - layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") - layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") - layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") + layout.separator() + layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") - layout.separator() - layout.operator("graph.clean") - layout.operator("graph.sample") - layout.operator("graph.bake") + layout.separator() + layout.operator("graph.clean") + layout.operator("graph.sample") + layout.operator("graph.bake") - layout.separator() - layout.operator("graph.copy") - layout.operator("graph.paste") + layout.separator() + layout.operator("graph.copy") + layout.operator("graph.paste") class GRAPH_MT_key_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.rotate", text="Rotate") - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.rotate", text="Rotate") + layout.operator("tfm.resize", text="Scale") bpy.types.register(GRAPH_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py index afd5e424b2d..bdcb6883ab3 100644 --- a/release/scripts/ui/space_nla.py +++ b/release/scripts/ui/space_nla.py @@ -16,150 +16,146 @@ # # ##### END GPL LICENSE BLOCK ##### -# import bpy class NLA_HT_header(bpy.types.Header): - bl_space_type = 'NLA_EDITOR' + bl_space_type = 'NLA_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("NLA_MT_view") - sub.menu("NLA_MT_select") - sub.menu("NLA_MT_edit") - sub.menu("NLA_MT_add") + sub.menu("NLA_MT_view") + sub.menu("NLA_MT_select") + sub.menu("NLA_MT_edit") + sub.menu("NLA_MT_add") - layout.template_dopesheet_filter(st.dopesheet) + layout.template_dopesheet_filter(st.dopesheet) - layout.prop(st, "autosnap", text="") + layout.prop(st, "autosnap", text="") class NLA_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.operator("nla.properties", icon="ICON_MENU_PANEL") + layout.operator("nla.properties", icon="ICON_MENU_PANEL") - layout.separator() - layout.prop(st, "show_cframe_indicator") + layout.separator() + layout.prop(st, "show_cframe_indicator") - if st.show_seconds: - layout.operator("anim.time_toggle", text="Show Frames") - else: - layout.operator("anim.time_toggle", text="Show Seconds") + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") - layout.prop(st, "show_strip_curves") + layout.prop(st, "show_strip_curves") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class NLA_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("nla.select_all_toggle") - layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("nla.select_all_toggle") + layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("nla.select_border") - layout.operator("nla.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("nla.select_border") + layout.operator("nla.select_border", text="Border Axis Range").axis_range = True class NLA_MT_edit(bpy.types.Menu): - bl_label = "Edit" + bl_label = "Edit" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout + + scene = context.scene - layout.column() - layout.menu("NLA_MT_edit_transform", text="Transform") + layout.column() + layout.menu("NLA_MT_edit_transform", text="Transform") - layout.operator_menu_enum("nla.snap", property="type", text="Snap") + layout.operator_menu_enum("nla.snap", property="type", text="Snap") - layout.separator() - layout.operator("nla.duplicate") - layout.operator("nla.split") - layout.operator("nla.delete") + layout.separator() + layout.operator("nla.duplicate") + layout.operator("nla.split") + layout.operator("nla.delete") - layout.separator() - layout.operator("nla.mute_toggle") + layout.separator() + layout.operator("nla.mute_toggle") - layout.separator() - layout.operator("nla.apply_scale") - layout.operator("nla.clear_scale") + layout.separator() + layout.operator("nla.apply_scale") + layout.operator("nla.clear_scale") - layout.separator() - layout.operator("nla.move_up") - layout.operator("nla.move_down") + layout.separator() + layout.operator("nla.move_up") + layout.operator("nla.move_down") - """ - XXX not sure if we need this check and so scene.flag wrapped? - // TODO: names of these tools for 'tweakmode' need changing? - if (scene->flag & SCE_NLA_EDIT_ON) - uiItemO(layout, "Stop Tweaking Strip Actions", 0, "NLA_OT_tweakmode_exit"); - else - uiItemO(layout, "Start Tweaking Strip Actions", 0, "NLA_OT_tweakmode_enter"); - """ - layout.separator() - layout.operator("nla.tweakmode_exit") - layout.operator("nla.tweakmode_enter") + layout.separator() + # TODO: names of these tools for 'tweakmode' need changing? + if scene.nla_tweakmode_on: + layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions") + else: + layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions") class NLA_MT_add(bpy.types.Menu): - bl_label = "Add" + bl_label = "Add" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("nla.actionclip_add") - layout.operator("nla.transition_add") + layout.column() + layout.operator("nla.actionclip_add") + layout.operator("nla.transition_add") - layout.separator() - layout.operator("nla.meta_add") - layout.operator("nla.meta_remove") + layout.separator() + layout.operator("nla.meta_add") + layout.operator("nla.meta_remove") - layout.separator() - layout.operator("nla.tracks_add") - layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True + layout.separator() + layout.operator("nla.tracks_add") + layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True class NLA_MT_edit_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") bpy.types.register(NLA_HT_header) # header/menu classes diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 3708d810cca..0568652488d 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -144,13 +144,13 @@ static void rna_def_dopesheet(BlenderRNA *brna) prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); - RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA Data."); + RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data. (NLA Editor only)"); RNA_def_property_ui_icon(prop, ICON_ACTION, 0); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED); - RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden."); + RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden. (DopeSheet Window Editors Only)"); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 458fdbf2ea9..5000dd90b1d 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2453,6 +2453,14 @@ void RNA_def_scene(BlenderRNA *brna) /* Animation Data (for Scene) */ rna_def_animdata_common(srna); + /* Readonly Properties */ + prop= RNA_def_property(srna, "nla_tweakmode_on", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SCE_NLA_EDIT_ON); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* DO NOT MAKE THIS EDITABLE, OR NLA EDITOR BREAKS */ + RNA_def_property_ui_text(prop, "NLA TweakMode", "Indicates whether there is any action referenced by NLA being edited. Strictly read-only."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + + /* Nodes (Compositing) */ prop= RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Node Tree", "Compositing node tree."); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 4a55d259be9..cc44a1b6c14 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -84,10 +84,10 @@ static EnumPropertyItem transform_orientation_items[] = { {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem autosnap_items[] = { - {SACTSNAP_OFF, "NONE", 0, "None", ""}, - {SACTSNAP_STEP, "STEP", 0, "Step", "Snap to 1.0 frame/second intervals."}, - {SACTSNAP_FRAME, "FRAME", 0, "Frame", "Snap to actual frames/seconds (nla-action time)."}, - {SACTSNAP_MARKER, "MARKER", 0, "Marker", "Snap to nearest marker."}, + {SACTSNAP_OFF, "NONE", 0, "No Auto-Snap", ""}, + {SACTSNAP_STEP, "STEP", 0, "Time Step", "Snap to 1.0 frame/second intervals."}, + {SACTSNAP_FRAME, "FRAME", 0, "Nearest Frame", "Snap to actual frames/seconds (nla-action time)."}, + {SACTSNAP_MARKER, "MARKER", 0, "Nearest Marker", "Snap to nearest marker."}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -464,6 +464,12 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) } } +static int rna_SpaceGraphEditor_has_ghost_curves_get(PointerRNA *ptr) +{ + SpaceIpo *sipo= (SpaceIpo*)(ptr->data); + return (sipo->ghostCurves.first != NULL); +} + #else static void rna_def_space(BlenderRNA *brna) @@ -1290,7 +1296,7 @@ static void rna_def_space_graph(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem mode_items[] = { - {SIPO_MODE_ANIMATION, "FCURVES", 0, "F-Curves", ""}, + {SIPO_MODE_ANIMATION, "FCURVES", 0, "F-Curve Editor", ""}, {SIPO_MODE_DRIVERS, "DRIVERS", 0, "Drivers", ""}, {0, NULL, 0, NULL, NULL}}; @@ -1382,6 +1388,13 @@ static void rna_def_space_graph(BlenderRNA *brna) RNA_def_property_enum_items(prop, autosnap_items); RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + + /* readonly state info */ + prop= RNA_def_property(srna, "has_ghost_curves", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", 0); /* XXX: hack to make this compile, since this property doesn't actually exist*/ + RNA_def_property_boolean_funcs(prop, "rna_SpaceGraphEditor_has_ghost_curves_get", NULL); + RNA_def_property_ui_text(prop, "Has Ghost Curves", "Graph Editor instance has some ghost curves stored."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); } static void rna_def_space_nla(BlenderRNA *brna) -- cgit v1.2.3 From f4fa39a55122d1f9031c355f52860fbe2ca8ca6b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 07:11:43 +0000 Subject: white space commit (spaces -> tabs and clearing whitespace) --- release/scripts/modules/rigify/__init__.py | 2 +- release/scripts/modules/rigify/arm.py | 2 +- release/scripts/modules/rigify/delta.py | 6 +- release/scripts/modules/rigify/neck.py | 12 +- release/scripts/modules/rigify/palm.py | 2 +- release/scripts/modules/rigify/spine.py | 12 +- release/scripts/modules/rna_prop_ui.py | 2 +- release/scripts/ui/space_dopesheet.py | 216 ++++++++++++++-------------- release/scripts/ui/space_graph.py | 224 ++++++++++++++--------------- release/scripts/ui/space_nla.py | 176 +++++++++++------------ 10 files changed, 327 insertions(+), 327 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index c2568d3eb5d..cf6e17a895f 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -450,7 +450,7 @@ def generate_rig(context, obj_orig, prefix="ORG-"): if bone_name not in bone_typeinfos: continue - + bone_def_dict = bone_definitions[bone_name] # Only blend results from the same submodule, eg. diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index fff52aa3ab4..2145109cd55 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -64,7 +64,7 @@ def metarig_definition(obj, orig_bone_name): mt.update() mt.shoulder_p = mt.arm_p.parent - + if not mt.shoulder_p: raise Exception("could not find 'arm' parent, skipping:", orig_bone_name) print(mt.shoulder_p) diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index fedb417ee67..00d79ed33df 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -86,14 +86,14 @@ def main(obj, bone_definition, base_names): del child_pbone bpy.ops.object.mode_set(mode='OBJECT') - - + + # Move the child bone to the deltas location obj.animation_data_create() delta_pbone = obj.pose.bones[delta_name] # child_pbone = obj.pose.bones[child_name] - + # ------------------- drivers delta_pbone.rotation_mode = 'XYZ' diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 6963bfbfb8d..d20c231c0f8 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -161,7 +161,7 @@ def main(obj, bone_definition, base_names): neck_e_parent.head = neck_e.head neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) neck_e_parent.roll = neck_e.roll - + orig_parent = neck_e.parent neck_e.connected = False @@ -221,7 +221,7 @@ def main(obj, bone_definition, base_names): head_driver_path = mt.head_p.path_to_id() target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - + mt.head_p["bend_tot"] = 0.0 fcurve = mt.head_p.driver_add('["bend_tot"]', 0) driver = fcurve.driver @@ -234,7 +234,7 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) - + for i, attr in enumerate(mt_chain.attr_names): neck_p = getattr(mt_chain, attr + "_p") @@ -264,9 +264,9 @@ def main(obj, bone_definition, base_names): driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" - + fcurve.modifiers.remove(0) # grr dont need a modifier - + # add target tar = driver.targets.new() @@ -274,7 +274,7 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_tot"]') - + tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index 0d85d60fad5..a0b86007974 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -85,7 +85,7 @@ def metarig_definition(obj, orig_bone_name): [pinky, ring... etc] ''' arm = obj.data - + palm_bone = arm.bones[orig_bone_name] palm_parent = palm_bone.parent palm_base = palm_bone.basename diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 23af154520a..d714214adfb 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -110,7 +110,7 @@ def metarig_definition(obj, orig_bone_name): raise Exception("expected the ribcage to have only 1 child.") child = children[0] - + bone_definition = [pelvis.name, ribcage.name, child.name] bone_definition.extend([child.name for child in child.children_recursive_basename]) return bone_definition @@ -389,7 +389,7 @@ def main(obj, bone_definition, base_names): driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier - + for i in range(spine_chain_len - 1): tar = driver.targets.new() tar.name = target_names[i] @@ -422,9 +422,9 @@ def main(obj, bone_definition, base_names): driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" - + fcurve.modifiers.remove(0) # grr dont need a modifier - + # add target tar = driver.targets.new() @@ -432,13 +432,13 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = rib_driver_path + ('["bend_tot"]') - + tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = rib_driver_path + ('["%s"]' % prop_name) - + # original bone drivers diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index ca452da7f73..dd71da74d35 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -217,7 +217,7 @@ class WM_OT_properties_edit(bpy.types.Operator): wm.invoke_props_popup(self, event) return ('RUNNING_MODAL',) - + class WM_OT_properties_add(bpy.types.Operator): diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index db01134604e..a669140d38e 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -20,167 +20,167 @@ import bpy class DOPESHEET_HT_header(bpy.types.Header): - bl_space_type = 'DOPESHEET_EDITOR' + bl_space_type = 'DOPESHEET_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("DOPESHEET_MT_view") - sub.menu("DOPESHEET_MT_select") + sub.menu("DOPESHEET_MT_view") + sub.menu("DOPESHEET_MT_select") - if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): - sub.menu("DOPESHEET_MT_channel") - elif st.mode == 'GPENCIL': - # gpencil Channel menu - pass + if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None): + sub.menu("DOPESHEET_MT_channel") + elif st.mode == 'GPENCIL': + # gpencil Channel menu + pass - if st.mode != 'GPENCIL': - sub.menu("DOPESHEET_MT_key") + if st.mode != 'GPENCIL': + sub.menu("DOPESHEET_MT_key") - layout.prop(st, "mode", text="") - layout.prop(st.dopesheet, "display_summary", text="Summary") + layout.prop(st, "mode", text="") + layout.prop(st.dopesheet, "display_summary", text="Summary") - if st.mode == 'DOPESHEET': - layout.template_dopesheet_filter(st.dopesheet) - elif st.mode == 'ACTION': - layout.template_ID(st, "action", new="action.new") + if st.mode == 'DOPESHEET': + layout.template_dopesheet_filter(st.dopesheet) + elif st.mode == 'ACTION': + layout.template_ID(st, "action", new="action.new") - if st.mode != 'GPENCIL': - layout.prop(st, "autosnap", text="") + if st.mode != 'GPENCIL': + layout.prop(st, "autosnap", text="") - row = layout.row(align=True) - row.operator("action.copy", text="", icon='ICON_COPYDOWN') - row.operator("action.paste", text="", icon='ICON_PASTEDOWN') + row = layout.row(align=True) + row.operator("action.copy", text="", icon='ICON_COPYDOWN') + row.operator("action.paste", text="", icon='ICON_PASTEDOWN') class DOPESHEET_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.prop(st, "show_cframe_indicator") - layout.prop(st, "show_sliders") - layout.prop(st, "automerge_keyframes") + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") - if st.show_seconds: - layout.operator("anim.time_toggle", text="Show Frames") - else: - layout.operator("anim.time_toggle", text="Show Seconds") + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") - layout.operator("action.previewrange_set") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("action.previewrange_set") - layout.separator() - layout.operator("action.frame_jump") - layout.operator("action.view_all") + layout.separator() + layout.operator("action.frame_jump") + layout.operator("action.view_all") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class DOPESHEET_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("action.select_all_toggle") - layout.operator("action.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("action.select_all_toggle") + layout.operator("action.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("action.select_border") - layout.operator("action.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("action.select_border") + layout.operator("action.select_border", text="Border Axis Range").axis_range = True - layout.separator() - layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS' - layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA' + layout.separator() + layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA' - layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' - layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' class DOPESHEET_MT_channel(bpy.types.Menu): - bl_label = "Channel" + bl_label = "Channel" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("anim.channels_setting_toggle") - layout.operator("anim.channels_setting_enable") - layout.operator("anim.channels_setting_disable") + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") - layout.separator() - layout.operator("anim.channels_editable_toggle") + layout.separator() + layout.operator("anim.channels_editable_toggle") - layout.separator() - layout.operator("anim.channels_expand") - layout.operator("anim.channels_collapse") + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") class DOPESHEET_MT_key(bpy.types.Menu): - bl_label = "Key" + bl_label = "Key" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.menu("DOPESHEET_MT_key_transform", text="Transform") + layout.column() + layout.menu("DOPESHEET_MT_key_transform", text="Transform") - layout.operator_menu_enum("action.snap", property="type", text="Snap") - layout.operator_menu_enum("action.mirror", property="type", text="Mirror") + layout.operator_menu_enum("action.snap", property="type", text="Snap") + layout.operator_menu_enum("action.mirror", property="type", text="Mirror") - layout.separator() - # Inconsistent naming? act/action - layout.operator("act.keyframe_insert") + layout.separator() + # Inconsistent naming? act/action + layout.operator("act.keyframe_insert") - layout.separator() - layout.operator("action.duplicate") - layout.operator("action.delete") + layout.separator() + layout.operator("action.duplicate") + layout.operator("action.delete") - layout.separator() - layout.operator_menu_enum("action.keyframe_type", property="type", text="Keyframe Type") - layout.operator_menu_enum("action.handle_type", property="type", text="Handle Type") - layout.operator_menu_enum("action.interpolation_type", property="type", text="Interpolation Mode") - layout.operator_menu_enum("action.extrapolation_type", property="type", text="Extrapolation Mode") + layout.separator() + layout.operator_menu_enum("action.keyframe_type", property="type", text="Keyframe Type") + layout.operator_menu_enum("action.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("action.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("action.extrapolation_type", property="type", text="Extrapolation Mode") - layout.separator() - layout.operator("action.clean") - layout.operator("action.sample") + layout.separator() + layout.operator("action.clean") + layout.operator("action.sample") - layout.separator() - layout.operator("action.copy") - layout.operator("action.paste") + layout.separator() + layout.operator("action.copy") + layout.operator("action.paste") class DOPESHEET_MT_key_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") bpy.types.register(DOPESHEET_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index b9f5364da3a..c24bf460147 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -20,171 +20,171 @@ import bpy class GRAPH_HT_header(bpy.types.Header): - bl_space_type = 'GRAPH_EDITOR' + bl_space_type = 'GRAPH_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("GRAPH_MT_view") - sub.menu("GRAPH_MT_select") - sub.menu("GRAPH_MT_channel") - sub.menu("GRAPH_MT_key") + sub.menu("GRAPH_MT_view") + sub.menu("GRAPH_MT_select") + sub.menu("GRAPH_MT_channel") + sub.menu("GRAPH_MT_key") - layout.prop(st, "mode", text="") + layout.prop(st, "mode", text="") - layout.template_dopesheet_filter(st.dopesheet) + layout.template_dopesheet_filter(st.dopesheet) - layout.prop(st, "autosnap", text="") - layout.prop(st, "pivot_point", text="", icon_only=True) + layout.prop(st, "autosnap", text="") + layout.prop(st, "pivot_point", text="", icon_only=True) - row = layout.row(align=True) - row.operator("graph.copy", text="", icon='ICON_COPYDOWN') - row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') + row = layout.row(align=True) + row.operator("graph.copy", text="", icon='ICON_COPYDOWN') + row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') - row = layout.row(align=True) - if st.has_ghost_curves: - row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') - else: - row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') + row = layout.row(align=True) + if st.has_ghost_curves: + row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') + else: + row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') class GRAPH_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.separator() - layout.operator("graph.properties", icon="ICON_MENU_PANEL") + layout.separator() + layout.operator("graph.properties", icon="ICON_MENU_PANEL") - layout.prop(st, "show_cframe_indicator") - layout.prop(st, "show_cursor") - layout.prop(st, "show_sliders") - layout.prop(st, "automerge_keyframes") + layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_cursor") + layout.prop(st, "show_sliders") + layout.prop(st, "automerge_keyframes") - layout.separator() - if st.show_handles: - layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_HLT", text="Show All Handles") - else: - layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_DEHLT", text="Show All Handles") - layout.prop(st, "only_selected_curves_handles") - layout.prop(st, "only_selected_keyframe_handles") - layout.operator("anim.time_toggle") + layout.separator() + if st.show_handles: + layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_HLT", text="Show All Handles") + else: + layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_DEHLT", text="Show All Handles") + layout.prop(st, "only_selected_curves_handles") + layout.prop(st, "only_selected_keyframe_handles") + layout.operator("anim.time_toggle") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") - layout.operator("graph.previewrange_set") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") + layout.operator("graph.previewrange_set") - layout.separator() - layout.operator("graph.frame_jump") - layout.operator("graph.view_all") + layout.separator() + layout.operator("graph.frame_jump") + layout.operator("graph.view_all") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class GRAPH_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("graph.select_all_toggle") - layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("graph.select_all_toggle") + layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("graph.select_border") - layout.operator("graph.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("graph.select_border") + layout.operator("graph.select_border", text="Border Axis Range").axis_range = True - layout.separator() - layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' - layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' + layout.separator() + layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS' + layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA' - layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' - layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' + layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN' + layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN' class GRAPH_MT_channel(bpy.types.Menu): - bl_label = "Channel" + bl_label = "Channel" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("anim.channels_setting_toggle") - layout.operator("anim.channels_setting_enable") - layout.operator("anim.channels_setting_disable") + layout.column() + layout.operator("anim.channels_setting_toggle") + layout.operator("anim.channels_setting_enable") + layout.operator("anim.channels_setting_disable") - layout.separator() - layout.operator("anim.channels_editable_toggle") + layout.separator() + layout.operator("anim.channels_editable_toggle") - layout.separator() - layout.operator("anim.channels_expand") - layout.operator("anim.channels_collapse") + layout.separator() + layout.operator("anim.channels_expand") + layout.operator("anim.channels_collapse") class GRAPH_MT_key(bpy.types.Menu): - bl_label = "Key" + bl_label = "Key" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.menu("GRAPH_MT_key_transform", text="Transform") + layout.column() + layout.menu("GRAPH_MT_key_transform", text="Transform") - layout.operator_menu_enum("graph.snap", property="type", text="Snap") - layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") + layout.operator_menu_enum("graph.snap", property="type", text="Snap") + layout.operator_menu_enum("graph.mirror", property="type", text="Mirror") - layout.separator() - layout.operator("graph.keyframe_insert") - layout.operator("graph.fmodifier_add") + layout.separator() + layout.operator("graph.keyframe_insert") + layout.operator("graph.fmodifier_add") - layout.separator() - layout.operator("graph.duplicate") - layout.operator("graph.delete") + layout.separator() + layout.operator("graph.duplicate") + layout.operator("graph.delete") - layout.separator() - layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") - layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") - layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") + layout.separator() + layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type") + layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode") + layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode") - layout.separator() - layout.operator("graph.clean") - layout.operator("graph.sample") - layout.operator("graph.bake") + layout.separator() + layout.operator("graph.clean") + layout.operator("graph.sample") + layout.operator("graph.bake") - layout.separator() - layout.operator("graph.copy") - layout.operator("graph.paste") + layout.separator() + layout.operator("graph.copy") + layout.operator("graph.paste") class GRAPH_MT_key_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.rotate", text="Rotate") - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.rotate", text="Rotate") + layout.operator("tfm.resize", text="Scale") bpy.types.register(GRAPH_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py index bdcb6883ab3..d17e5e0b8cb 100644 --- a/release/scripts/ui/space_nla.py +++ b/release/scripts/ui/space_nla.py @@ -20,142 +20,142 @@ import bpy class NLA_HT_header(bpy.types.Header): - bl_space_type = 'NLA_EDITOR' + bl_space_type = 'NLA_EDITOR' - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - row = layout.row(align=True) - row.template_header() + row = layout.row(align=True) + row.template_header() - if context.area.show_menus: - sub = row.row(align=True) + if context.area.show_menus: + sub = row.row(align=True) - sub.menu("NLA_MT_view") - sub.menu("NLA_MT_select") - sub.menu("NLA_MT_edit") - sub.menu("NLA_MT_add") + sub.menu("NLA_MT_view") + sub.menu("NLA_MT_select") + sub.menu("NLA_MT_edit") + sub.menu("NLA_MT_add") - layout.template_dopesheet_filter(st.dopesheet) + layout.template_dopesheet_filter(st.dopesheet) - layout.prop(st, "autosnap", text="") + layout.prop(st, "autosnap", text="") class NLA_MT_view(bpy.types.Menu): - bl_label = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - st = context.space_data + st = context.space_data - layout.column() + layout.column() - layout.operator("nla.properties", icon="ICON_MENU_PANEL") + layout.operator("nla.properties", icon="ICON_MENU_PANEL") - layout.separator() - layout.prop(st, "show_cframe_indicator") + layout.separator() + layout.prop(st, "show_cframe_indicator") - if st.show_seconds: - layout.operator("anim.time_toggle", text="Show Frames") - else: - layout.operator("anim.time_toggle", text="Show Seconds") + if st.show_seconds: + layout.operator("anim.time_toggle", text="Show Frames") + else: + layout.operator("anim.time_toggle", text="Show Seconds") - layout.prop(st, "show_strip_curves") + layout.prop(st, "show_strip_curves") - layout.separator() - layout.operator("anim.previewrange_set") - layout.operator("anim.previewrange_clear") + layout.separator() + layout.operator("anim.previewrange_set") + layout.operator("anim.previewrange_clear") - layout.separator() - layout.operator("screen.area_dupli") - layout.operator("screen.screen_full_area") + layout.separator() + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") class NLA_MT_select(bpy.types.Menu): - bl_label = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None - layout.operator("nla.select_all_toggle") - layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True + layout.column() + # This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None + layout.operator("nla.select_all_toggle") + layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True - layout.separator() - layout.operator("nla.select_border") - layout.operator("nla.select_border", text="Border Axis Range").axis_range = True + layout.separator() + layout.operator("nla.select_border") + layout.operator("nla.select_border", text="Border Axis Range").axis_range = True class NLA_MT_edit(bpy.types.Menu): - bl_label = "Edit" + bl_label = "Edit" - def draw(self, context): - layout = self.layout - - scene = context.scene + def draw(self, context): + layout = self.layout - layout.column() - layout.menu("NLA_MT_edit_transform", text="Transform") + scene = context.scene - layout.operator_menu_enum("nla.snap", property="type", text="Snap") + layout.column() + layout.menu("NLA_MT_edit_transform", text="Transform") - layout.separator() - layout.operator("nla.duplicate") - layout.operator("nla.split") - layout.operator("nla.delete") + layout.operator_menu_enum("nla.snap", property="type", text="Snap") - layout.separator() - layout.operator("nla.mute_toggle") + layout.separator() + layout.operator("nla.duplicate") + layout.operator("nla.split") + layout.operator("nla.delete") - layout.separator() - layout.operator("nla.apply_scale") - layout.operator("nla.clear_scale") + layout.separator() + layout.operator("nla.mute_toggle") - layout.separator() - layout.operator("nla.move_up") - layout.operator("nla.move_down") + layout.separator() + layout.operator("nla.apply_scale") + layout.operator("nla.clear_scale") - layout.separator() - # TODO: names of these tools for 'tweakmode' need changing? - if scene.nla_tweakmode_on: - layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions") - else: - layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions") + layout.separator() + layout.operator("nla.move_up") + layout.operator("nla.move_down") + + layout.separator() + # TODO: names of these tools for 'tweakmode' need changing? + if scene.nla_tweakmode_on: + layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions") + else: + layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions") class NLA_MT_add(bpy.types.Menu): - bl_label = "Add" + bl_label = "Add" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("nla.actionclip_add") - layout.operator("nla.transition_add") + layout.column() + layout.operator("nla.actionclip_add") + layout.operator("nla.transition_add") - layout.separator() - layout.operator("nla.meta_add") - layout.operator("nla.meta_remove") + layout.separator() + layout.operator("nla.meta_add") + layout.operator("nla.meta_remove") - layout.separator() - layout.operator("nla.tracks_add") - layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True + layout.separator() + layout.operator("nla.tracks_add") + layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True class NLA_MT_edit_transform(bpy.types.Menu): - bl_label = "Transform" + bl_label = "Transform" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.column() + layout.operator("tfm.translate", text="Grab/Move") + layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("tfm.resize", text="Scale") bpy.types.register(NLA_HT_header) # header/menu classes -- cgit v1.2.3 From 81a69bb00fede01ec02750f2d4b093ac9d1f7d55 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 8 Dec 2009 07:12:06 +0000 Subject: Various changes to screen-related code, aiming to fix a few problems and usability issues with 'temp' screen layouts. Now, temp screens are hidden from being accessed directly, with a new 'Back to Previous' button appearing in place of the screen menu when (for example) fullscreen render image areas are present. Window type menus also get disabled here too, to prevent things from getting too mixed up. --- release/datafiles/blenderbuttons | Bin 209415 -> 209368 bytes release/scripts/ui/space_info.py | 8 +- source/blender/editors/datafiles/blenderbuttons.c | 13090 +++++++++---------- source/blender/editors/include/ED_screen.h | 5 +- source/blender/editors/include/UI_icons.h | 2 +- source/blender/editors/screen/area.c | 26 +- source/blender/editors/screen/screen_edit.c | 41 +- source/blender/editors/screen/screen_ops.c | 47 +- source/blender/makesrna/intern/rna_screen.c | 11 + .../blender/windowmanager/intern/wm_event_system.c | 4 +- 10 files changed, 6649 insertions(+), 6585 deletions(-) diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons index b538ff3ce6d..af046f25563 100644 Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index c3b8a5151c7..ece06e1751a 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -29,6 +29,7 @@ class INFO_HT_header(bpy.types.Header): def draw(self, context): layout = self.layout + window = context.window scene = context.scene rd = scene.render_data @@ -45,7 +46,12 @@ class INFO_HT_header(bpy.types.Header): sub.menu("INFO_MT_render") sub.menu("INFO_MT_help") - layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") + if window.screen.fullscreen: + layout.operator("screen.back_to_previous", icon="ICON_SCREEN_BACK", text="Back to Previous") + layout.separator() + else: + layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") + layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete") layout.separator() diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 702641f4f99..b1b7bbbd2ec 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6551 +1,6549 @@ /* DataToC output of file */ -int datatoc_blenderbuttons_size= 209415; +int datatoc_blenderbuttons_size= 209368; 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, 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, 6, 98, 75, 71, 68, 0,255, 0, -255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 32, 0, - 73, 68, 65, 84,120,218,236, 93,119,124, 20,197,226,255,206,222,238,245, 75, 39,141, 36,164, 0,129, 96,232, 69, 18,138,116, 20, - 80,144,166,248, 16,158,232,207,134,189,129,138,136, 8,196,138,192,123, 34, 79,159, 10,136, 34, 88, 64,240,209,148,222,155, 74, - 47,146, 0, 9,164,147,122,253,110,231,247, 7,183,231,229,184, 22,184, 40,194,124, 63,159,253,220,221,222,238,119,103,102,103, -102,191,243,157,217, 25, 66, 41, 5, 3, 3, 3, 3, 3, 3, 3, 3, 67,240,193,177, 36, 96, 96, 96, 96, 96, 96, 96, 96,184, 78, -132,214,234,213,171, 3,182,192, 8, 33,253, 2,229,116,108,183, 93,239,156, 13, 24,119, 26, 68,206,219, 28,156,175,255, 77,194, -121,219,245,202, 41,197, 55, 80,222,250,112, 6,154,167,234, 25, 78, 26,236,112, 54, 20,103,176,202,145,135,112,210, 6,184,239, -175,255, 77,194,121,219,245,198,233,158,127, 2,225,173, 47,103, 32,121,234, 42,194, 73,131, 29,206,134,226,188,214,114,228, 35, -156,244, 90,243,146,151,123,255, 58,110, 34,240, 13, 37,178,234,131,193,131, 7, 19, 23,126,114,189,114,186,166,131,196, 31,204, -176, 6, 17,155,130,205,233,150,158,193,194,235,131, 7, 15, 38,171, 87,175,222, 12,224,182, 96,198, 61, 24,247,221, 45,174, 65, -225,173,175,200,170, 47,103,176,242,125, 67,115, 6,171, 44,185,115, 6, 35,223,123,186,239, 13,120,143,130, 21,206,160,148,165, -134,200,243, 30,242,207, 53,243,186,115, 6,163, 44,185,115, 6, 35,223,255, 25,156,193, 40, 75,158, 56,131,145,239,189,221,123, -230,104,253,185,130,192,189,128,247,186,158, 5, 81, 67,137,205, 64, 29,152,235,129, 51,200,247,232,117, 7,103, 48, 91, 55,189, -130,117,143, 26, 34,191,187,114, 6,139,223,157, 39, 24,247,201, 19,231,181,134,215, 75, 56,131, 30,247,107,205,247,127, 22,103, -144,239, 81, 80,202,146, 27,103,175, 32, 55, 6,122,185,252,126, 61,152,156,193, 42, 75, 30,194,121,205,247,201, 19,231,181,134, -215, 75, 56,131, 30,247, 96, 60, 67, 26,138,247,134,117,180, 26, 82,100, 53,212, 67, 45,152,220, 13,225,234, 52,148,243, 22, 44, - 87,199, 3,239,230, 32,210,109, 10,118, 56, 29,225, 35, 13,229,190, 94,239, 96,101,137,149,165,235,173, 44,121,202, 55,131, 7, - 15,126,125,245,234,213, 83,175,183, 70,180, 43,103,176, 4,145,135,184, 95, 83, 89,114, 63, 55, 24,101,201, 15, 39,105,136,248, - 7,187, 60, 49,161, 85, 15,167, 40,200, 45, 19, 4,217,129,105,176,120, 7, 57,156,189, 26,194, 33,108, 0, 4, 61,156,142,150, -242,212, 6,136,251,223, 37, 77, 89, 89, 98,101,233,186, 43, 75,110,121,178, 87, 16,157,162,160, 58,207,238,156,193,184,134, 43, - 71,176,242,104, 67,199, 61,152,101,169, 33,238,253,223, 14,148,210, 6,219, 0,244, 99,156,140,147,113, 50, 78,198,201, 56, 25, - 39,227,188, 89, 55, 54,189, 3, 3, 3, 3, 3, 3, 3, 3, 67, 3,129,176, 9, 75, 25, 24, 24, 24, 24, 24, 24, 24, 26, 6, 94, -199,104, 37, 36, 36,172,210,104, 52,205,188,253, 95, 91, 91,123,241,194,133, 11,189, 89, 18, 50, 48, 48,248,109,209, 17,194,225, -143,183,156, 69, 0,148,178, 86, 30, 3, 3,195,205, 44,180,148, 74,101,218,177, 99,199,210, 69, 81,132,221,110,135,205,102,115, -126,154,205,102,244,236,217,179,222, 3,233,227,226,226,182,200,100,178,148,250,156, 99,183,219,207, 21, 22, 22,118,247, 81,129, -239, 0,144, 70, 8,113,221,231,243, 19,192, 5,139,197,210,193, 23, 39, 33, 36,205,157,207, 11,151,244,221, 39,103,120,120,248, - 62,158,231, 19, 61,113,121,251, 46,138,226,153,226,226,226,108,150, 77,255, 28,196,197,197,109,225,121,190,222,249,243,226,197, -139, 94,243,103,227,198,141, 15,114, 28,215,184, 30,148, 50, 81, 20, 79, 92,188,120,177,187, 55, 33, 34,229,121, 63,194,166,206, -119, 66, 72,190,205,102,235,228,175, 28,249,226,242,144, 71,125,114,186,138, 44,158,231,115, 98, 98, 98, 30,213,235,245, 70, 0, - 84, 38,147,209,168,168, 40, 41,108, 0, 0,155,205, 86,114,233,210,165,214, 44, 39, 50, 48, 48,220, 20, 66, 75, 20, 69,206,100, - 50,225,228,201,147,240, 82,223,219,175,226,122,233,251,127, 90, 31, 19, 18, 19, 11,155,197, 2,109,163,104, 39,119,209,209,195, -176, 89, 45,176,153,205,104,210,185,171,244, 16,195, 45,183,220, 34,243,195,153,248,214, 91,111,197,132,132,132,192,104, 52,194, -104, 52,194,100, 50,193,104, 52,194,108, 54,195,108, 54,195, 98,177,192, 98,177,192,102,179,193,100, 50, 97,195,134, 13,254,194, -158, 56, 99,198,140,152,208,208, 80, 39,159,180, 73,156, 18,175,213,106,133,209,104,196,207, 63,255,236,147,147,231,249,196, 11, - 23, 46,196,200,229,114, 80, 74, 33,138,162,167,193,133,117,208,180,105, 83, 11,203,162,127, 42,210,103,124,185, 58, 38, 76,173, -132, 77, 20, 49,164,109, 83,231, 31,103, 62, 89, 6,106,179, 67,180,217,208,124,226, 88,224,178, 37,131, 86,173, 90,249,204,159, -148,210,228, 25, 95,174, 14, 15,148,179,180,180,212,144,145,145,113, 1,151, 95,125,246,230,248, 36, 26, 12,134, 24, 41, 12,238, -130,136,227,184, 58,219,218,181,107, 49,100,200, 16,127,113, 79,124,230,153,103, 98,172, 86, 43,204,102, 51, 76, 38, 19,172, 86, - 43,108, 54,155,115,179,219,237,206,205,108, 54, 99,247,238,221,129, 58, 89,111,245,239,223,255,129,213,171, 87,107,191,255,254, -123,109, 74, 74, 10,228,114, 57,100, 50, 25,100, 50, 25, 56,142, 3,207,243,184,245,214, 91, 9,203,130, 12, 12, 12, 55,141,208, - 50,153, 76,185,237,219,183,167,142,239, 9, 74,165, 82,238, 86,129, 54, 78, 79, 79, 63,225,126,158,191, 46,197,144,152, 88, 76, - 78,138, 4, 0,188,118,182,204,249,128,120, 59,187,157,243,152, 55, 10, 42, 1, 0,106,181, 26,196,181, 25,237, 5, 90,173, 22, -253,251,247,135, 66,161, 64,167, 78,157, 32, 8,130,199, 77, 46,151, 67, 16,132, 64, 30, 14,208,233,116,152, 54,109,154, 36,146, -160, 85, 41,241, 68,118, 39,168, 64,241,159,195,167, 96, 22, 41,120,158,119,110,129,112,202,229,114, 28, 58,116, 8, 60,207, 67, - 38,147, 57, 63,165,239, 43, 87,174,196,200,145, 35,193,243, 60,212,106, 53,112, 19,205, 51,114,189, 32, 76,173,196,184,249,223, - 1, 0,206,207,158,232,188,119,187, 31,123,205,121, 76,242,255,141, 6, 33, 4,130, 32,128,227,184,160,113,150,151,151, 27,238, -189,247,222,109, 33, 33, 33,107,171,170,170,224, 71,192,225,252,249,243,224,121,222,107,126,231, 56, 14,239,191,255, 62, 78,159, - 62, 29, 80,220,141, 70, 35, 62,254,248, 99,216,237,246, 58,188,210,119,247,125, 1,138,172, 55, 7, 12, 24, 48,118,245,234,213, - 17,132, 16,252,235, 95,255,130, 92, 46,199,160, 65,131, 16, 21, 21,133,117,235,214, 65, 46,151,227,197, 23, 95,100,153,143,129, -129,193, 23, 4, 0,237, 0, 68, 59,140,158,106, 0,225, 46,255,151, 56, 62,163, 93,126,239,245,192,211,217,113,140,244,191,244, -219, 12, 64,225, 97,127, 25, 0,181, 99, 51, 1,216, 1, 32,211,229, 58,210,121,240,118, 93, 30,184,188,254, 16,128, 77, 0,122, - 73,147,232, 93,188,120,241, 14, 23,103,229,216,137, 19, 39, 90, 74,154,199,209,133, 40,183,217,108,233, 82,119,162,228, 22,245, -235,215,207,103, 11,223,102,177, 92, 33, 64, 60,105, 41, 79,221, 21,222, 4,140,197, 98,193,232,209,163, 47,223, 9, 47, 15, 29, -215, 45, 0,237, 6,179,217, 12,158,231,209, 34, 41, 26, 83, 6,182, 71, 23,106, 69,109, 13,129,173,178, 22, 67,117, 86, 28,107, -213, 1, 11,206,149,224,108, 85, 13,120,158, 15,136, 83, 20, 69,175, 34, 75, 38,147, 97,254,252,249,184,247,222,123, 33,147,201, - 2,226, 99, 8, 62,108,162,232, 49, 31,122,203,179,129,220,167, 64, 56,203,203,203, 13, 67,134, 12,217,165, 84, 42, 23,198,198, -198, 94,200,207,207,247, 43,180,220,197,143,123,163,226,189,247,222,195,220,185,115,209,187,119,239,128,194,105, 50,153, 64, 8, -193,130, 5, 11,174,248,111,250,244,233, 87, 92,207, 23,167,163,129,196, 53,110,220,248,177, 53,107,214,132, 74,199, 54,106,212, - 8,130, 32,160,117,235,214, 8, 9, 9,193,182,109,219, 96,183,219, 3, 46,151, 12, 12, 12, 55, 46, 60,105, 17, 23,244,156, 60, -121,114,167,156,156,156,153, 89, 89, 89, 95,237,216,177,227, 75, 66,200, 42,151, 58,113,136,163,238, 89,229,242,187,179,155,232, - 17, 0, 68, 19, 66, 86, 73,199,187,254,118,217,223, 15,128, 66,250, 61,121,242,228,204,156,156,156,153,147, 38, 77,122,121,214, -172, 89,242,201,147, 39,183,201,201,201,153, 41, 93,199, 83, 56, 60, 57, 90, 62,103, 21,150,186, 17,143, 31, 63, 14,127,227, 87, - 41,165, 62,107, 75,109,163,104,167,147,245, 70,114,148,115,255,180,252, 10,231, 3,108, 94,199,102,208,106,181, 24,248,198, 59, - 1, 57, 69,102,179, 25,197,197,197, 78,151,193,223, 22, 40,167, 70,173,194,134,103, 90,227,124,153, 2,175,239, 44,199,234, 95, - 78, 67, 16, 4,220,222,170, 53,238,144,135,224,213,100, 5,158, 57,149, 7,107,128, 99,122, 41,165, 30, 5,150,244, 93,234, 66, - 97, 66,235,175,195,144,182, 77,157,174,211,238,144,190,206,253, 35,107, 15, 57,239,201,115,243,223, 6, 0,244,238,112, 43, 2, - 25,207,237,143,179,172,172,204,208,189,111,175,205,118,131,249,243,177, 99,199,230,110,220,184, 81, 29, 80,243,206,131,208,146, - 92, 91, 73,100,241, 60, 15,179,217, 28, 80,220,205,102,179,215,242, 33,151,203,235,237,104, 1, 64,109,109,173,121,197,138, 21, -152, 55,111, 30,162,162,162, 48, 96,192, 0,196,199,199, 99,217,178,101,160,148, 98,226,196,137, 80,171,213,146,123,205, 50, 32, - 3,195,205, 13, 95, 90, 68,153,147,147, 51,211, 93,200,184,254,118, 21, 80,110, 98,202, 85,172,101,250,121,254,175,114, 23, 79, -210,117, 9, 33,171,102,205,154, 53,196, 79, 56, 74,188, 9, 45,159,211,247,155, 76,166,220,182,109,219, 6,164, 38,244,122,125, -161, 63,177,225,169, 85,239,234, 18,232,116, 58,104, 67,117,224, 2,172,119,173, 86,171, 83,168,172, 95,191, 30,106,181, 26,131, - 6, 13,186, 38, 71,203, 98,177, 64, 33, 23,192, 53,138,197,184,217, 27, 81, 86,109,112, 62, 96, 54,157,201,197,129,162, 98, 60, -147,213, 23, 90,117, 49,106,204,230,128,156, 55, 81, 20,175, 16, 89, 60,207, 99,244,232,209, 78, 55,193,117,220, 10, 88,215,225, - 95, 6, 79,249,211,125,191,232,230, 84, 93, 13,103, 89, 89,153, 97,200,144, 33,187,236, 6,243,231, 5, 5, 5,187, 0,168,186, -116,233, 82,111,161, 37, 9, 44, 65, 16,240,254,251,239, 99,238,220,185,206,255, 3, 21, 90, 54,155,173,142,128, 58,117,234, 84, -157,107,185, 11, 59, 95,221,166,148, 82, 74, 8, 17, 1,136,105,105,105,206,115,226,226,226, 16, 30, 30, 14, 81, 20, 33,138, 34, - 84, 42, 21,212,106, 53,228,114, 57,203,116, 12, 12, 12,190,180,136, 97,210,164, 73, 47, 19, 66, 86, 57,156,165,195, 62, 4,149, - 39,116,118, 19,107, 37, 94,234,174, 33,158,196,150,235,119, 9,147, 39, 79,206,244, 16,142,189, 94,133,150,219,180,251,117,224, -218,141, 24,172,135,152,175, 7,153, 46, 60, 20,106,173, 22, 50, 25, 7, 66, 8,245,199,101,177, 88,156, 21,255,163,143, 62,234, -115,220, 74,160,227,169, 44, 22, 11, 56, 94,134,139,113,169,176,115, 91,157,231, 74, 27,199, 11, 56, 27,215, 18,178,227, 7, 33, - 4,248,192,117,119,180, 38, 78,156,136,143, 63,254, 24, 28,199, 57,211,132,231,121, 52,111,222, 28,185,185,185,172,196, 93, 39, - 34,203,219,126,187, 93, 12,216,133,241,116, 92, 89, 89,153, 97,212,168, 81,155, 43, 43, 43, 63,191,229,150, 91, 78,225,242,244, - 7, 92,160,124, 60,207,215, 17, 88,146,200,154, 51,103, 78, 29, 81,100,181, 90, 3,106, 8, 88,173,214, 43, 4,207,187,239,190, - 91,231, 19, 0,178,179,179, 3,114,134, 1, 80,142,227,168, 92, 46, 71,255,254,253,209,166, 77, 27,124,255,253,247, 16, 69, 17, -143, 63,254, 56,212,106, 53, 62,248,224, 3,216,108, 54,188,245,214, 91,204,209, 98, 96, 96,240,165, 69, 76,179,102,205, 58, 60, -107,214, 44,167,179,228,238,104,121,163,116,136,170,104, 73,164,225,242, 88,171,189, 62,158,213, 67,188, 9, 48,215,125, 57, 57, - 57, 51, 61,132,195,189,187,242,207, 95,235,176,240,200, 33,188,211,173, 61,128,186,221,133,243,111,109, 9,173, 78, 11,109,136, - 14,163, 86,110, 5, 0, 71,165, 63, 41, 32, 71, 75, 18, 90,101,101,101, 62, 69, 86,125, 28, 45, 78,193, 99,121,226, 37, 80,133, - 0,222,108,173, 35,180,100,188,128,243, 81,169,224, 4, 57,120,187, 45, 32, 78, 74,233, 21, 93,133,227,199,143, 7, 33,196,249, -134, 88,219,182,109, 93,185,216,147,231,207,206,159,251, 62,193,177,111, 30, 3, 0,116,175,173,117,222,139, 25,109,255,120,191, - 99,246,161,205, 78,247,241, 13, 60,127, 85,156,101,101,101,134, 46, 25,153,187,228,145, 97,159,159, 59,119,110, 23, 0,238,158, -123,238, 9,111,219,182,109, 64,101, 82,122,185,194, 93,100,185, 58, 89,210,167,213,106, 13, 40,238,210, 88, 41,127,144,186, 17, -253,229,121, 74, 41,141,140,140, 4,199,113, 8, 13, 13,133, 78,167,115,190,113,171, 82,169,160,209,104,156,227, 59, 3, 20,110, - 12, 12, 12, 55, 47, 34, 36,161,227, 16, 75,117,156, 38, 74,233, 16, 87, 49,228,173, 11,209,225, 64,109,241,103,172, 57, 4,154, - 71, 72,206,154, 91,157,188,202,155, 72,227, 37, 5,233,250, 25, 31, 31,255, 63,157, 78,151, 26,104,236,235, 51,121,169,221,106, -185,194,217, 34,132, 64, 23,162,131, 90,167,133, 58, 68,231,213,245,242, 37,180, 36,167, 72,122,232, 44, 92,184, 16, 58,157, 14, -255,252,231, 63,235, 61, 70,203, 41,180,228, 28,214, 41,127,134, 76,193,215, 17, 89, 60,207, 67, 38, 8, 40,212,197,131, 19, 4, -240,182,192, 92,178,202,202, 74,240, 60,143, 41, 83,166, 56, 91,240,174, 34,171, 62,113,102,104, 24, 80,187,245, 10, 23,202,155, -251,122,181,156,146,147, 37,143, 12,251,188,101,203,150, 78, 39, 75,163,209, 72,111,155,250, 5,199,113, 30, 69,150,251, 27,130, - 60,207, 95,206,203,126,222,142,116,117,180,102,205,154,229,228,117,117,178, 36,212,167, 28, 73, 97,221,188,121, 51, 14, 28, 56, -128, 71, 31,125, 20,106,181, 26,115,231,206,133,205,102,195,244,233,211,161, 86,171,161, 80, 40, 88,230, 99, 96, 96,110, 86, 29, - 45,226,134, 18,183,113, 80,196, 77,212,148,120, 18, 88,174,221,132, 46,223,173, 30,120,205,110, 93,138,238,251,165,207,178, 89, -179,102,109,148,156, 44,151,253,117,194,225,215,209, 82, 42,149,169, 39, 79,158,116, 78, 86,234,235,211,108, 54,163,119,239,222, - 1, 59, 99,210, 91,135, 60, 47,171, 35, 44, 52, 33, 58,104, 66, 67,160,214,233,220, 5, 7,241, 87,137, 75, 45, 98, 87,161, 53, -117,234, 84,240, 60,143,143, 63,254, 24, 0,240,252,243,207, 7, 60, 70, 75,226,132,157, 32,159,254,142,246,179, 71,194,252,133, - 21, 69,219,127, 5,207,243,136,233,122, 7,196, 46, 35,161, 87,235,192,219,109, 1,191,117, 88, 94, 94,142,220,220, 92,200,100, - 50, 60,251,236,179,117,230, 58,114,127,147,109,253,250,245,204,209,250, 43,132,150,104, 11, 72, 84,213,199,117,116,229,148,198, -100, 85, 86, 86,126,126,238,220,185,221, 0,184,177, 99,199,134,107, 52, 26,252,247,191,255,213, 3, 80, 44, 91,182, 76,237, 79, - 20, 73,249,198,159,200, 18, 4,225,114, 94, 14, 36,238,180,238,148, 37,254, 6,198, 7,146,231,165,176, 18, 66, 96,183,219,161, - 86,171,235, 56, 89, 42,149, 10, 74,165,146,101, 60, 6, 6, 6,127,216, 91,143, 99, 59,187,136,166,189, 87,201,187, 55, 88, 1, -231,189, 9, 13,147,201,132,163, 71,143, 6,202, 19,240,228,165, 73,157,110,197, 27, 5,149, 32,132,224, 63,217,183, 64, 27,170, -131, 70,171,197,136,239, 55, 59, 43,238, 67, 51,159,135, 82,171, 67,227, 30, 3, 2,170,200,165,174, 67, 87,161, 85, 81, 81, 1, - 65, 16,240,230,155,111,130,227, 56,188,245,214, 91, 72, 72, 72,192,197,139, 23,177,108,217,178,128, 28, 45,153, 93,134,248,251, - 51,160, 25, 31,134,208,251,123, 34,162,255, 84, 20,152,121,236, 48,106,208,211,120, 4,138,117,115, 96, 22,237, 1,191,129,101, -179,217,176,121,243,102,247, 1,239,160,148, 58,103,221,183, 90,173,176, 88, 44,120,235,173,183,192, 86, 40,249,243, 17,223,117, - 34,162, 59, 61, 2, 0, 88, 57,107,130,115,255,148, 67,127,228,207,247,191,184,188, 0, 64,203,148, 1,245,226, 44, 43, 43, 51, -220,222, 59,123,139, 81, 20, 62,107,221,186,117, 29, 39, 75,165, 82, 17,199,239,128,196, 53,199,113,144,201,100, 87,116, 23,122, - 19, 91,129,140,209,178,217,108,206,137, 68,125,141,103,188, 26, 71,107,194,132, 9,136,143,143,119, 58, 89,111,188,241, 6,212, -106, 53, 38, 79,158, 12,171,213,138, 57,115,230,176,204,199,192,192,240, 87,136,178, 6,135,199,154,212,104, 52,230,181,105,211, - 6, 94,254, 75, 80,169, 84,130, 91, 37,221, 56, 61, 61,253,132,123, 23, 34, 33,164, 31,165,116,131,167, 74,157, 16,130,144,208, - 16,168,116, 90,104,220, 92, 44, 85, 72, 40,148, 58, 29, 56,185,224,233,129,112, 5,167, 52,182,196, 85,104, 73, 91,101,101, 37, - 4, 65,192,188,121,243, 16, 26, 26, 10,147,201,228,151, 83,122,232,200,100, 50,232,207, 87,227,216,204, 13, 80,168,118,160,217, -128,123, 17, 47,168, 33,223,246, 45, 12,118,171,207, 9, 75, 61,113,166,167,167,227,181,215, 94,187, 98, 90, 7,111, 72, 72, 72, -240, 27,247,107, 5,227,244,204,233,235,173, 88, 9, 34,181,123, 58,206, 35,167,228,100, 25, 69,225,179,220,220, 92,201,201, 10, -211,104, 52,248,232,163,143,244, 0,184,233,211,167,107,146,147,147,101,129,228, 37,153, 76,134,217,179,103,123, 28,147,229, 73, -116,213,167, 28,185,158,123,219,109,183,121,156,176,212,147,120,243,196, 41,133, 53, 42, 42,202,233,100,217,237,118,231,219,134, -210,236,243,222, 26, 21, 44,127, 50, 78,198,121,243,112,222,168,240,248,148,191,112,225,194,237,222, 78,104,214,172,217,201,147, - 39, 79, 54,151,150,226,112, 84,156,114,163,209,152,158,157,157,237,215,218, 17, 69, 17, 74,165, 18,148, 82,244,121, 45, 7,132, - 3, 56,212,125,136,197,116,235, 11,153,140,135,120,121,169, 15,191,111, 29, 26, 12,134, 58, 15, 7, 79, 91, 77, 77, 13, 76, 38, - 83,192,179,121, 27,141,198, 58, 83, 48, 16, 42,226,236, 79, 95, 95,241,246,161,180, 5, 58,110, 71,165, 82,213,233,250,241, 5, -127,115,146, 49, 4, 31,210, 11, 11, 0,208, 34,123, 16, 68,209, 14,106,183,215, 89, 38, 41, 35,245,118,136,212, 14,139, 85, 15, -147,201,228,207,118, 36,165,165,165,134, 81,163, 70,109, 6,240,233,208,161, 67, 79,224,242, 27, 47, 84,167,211, 41, 5, 65, 16, - 1,148, 3,160,151, 46, 93, 10, 43, 40, 40, 16,141, 70, 99, 19,127,225, 92,189,122, 53,142, 30, 61,138, 30, 61,122,212, 89, 14, - 74,114, 69, 93,103,119, 15, 36,127, 74,221,229,158,102,132,247, 38,228, 2,133, 76, 38, 67, 88, 88, 24,228,114, 57,222,124,243, - 77,200,229,114,104, 52, 26, 0,192,156, 57,115,156,147,175, 50, 48, 48, 48,220, 52, 66,203, 95,189,233,163, 91,209,103, 23,162, -205,102,203, 79, 78, 78,174,215,197,236,118,123,145, 31,225,150,191,108,217, 50,185,171, 11,225,239,147, 82, 90,228,231, 97,155, -191,114,229, 74,185, 39,119,195,219, 2,211,254, 56,237,118,123,126, 74, 74,138, 87,199,196, 19,172, 86,107, 1,203,162,127, 30, -236,118,187,143,252,249,202,213,230,207, 83, 45, 90,180, 40, 8, 15, 15,255, 49, 54, 54,182,108,251,246,237, 81,157, 59,119,142, -114, 61,166,115,231,206,241,110,167,153,225,125,157, 67, 16, 66,242,135, 14, 29,234, 49,207, 75,162,201, 67,254,204,247,151,231, -247,236,217, 35,119, 61,223, 27,191, 75, 57,202, 15, 64,184,158,109,223,190, 61,231,202,227, 45,239, 91,173,214, 18,150, 11, 25, - 24, 24,110,122,161,101, 48, 24,206,183,105,211,198,230,229,191,115,190,206, 45, 45, 45,237, 20,236, 8, 88, 44,150,236,191, 3, -103, 73, 73, 73, 39,150,221,174,111, 52,196, 61, 42, 42, 42,234, 18,108, 78,155,205, 22,244,252,105,181, 90,179, 27, 34, 77,203, -202,202,178, 88,206, 98, 96, 96, 96, 66,171, 30, 8,116, 26, 7, 6, 6, 6, 6, 6, 6, 6,134,155, 29, 28, 75, 2, 6, 6, 6, - 6, 6, 6, 6,134,134, 1,193,229, 85,170,175, 64,125,222, 38, 32,132,244,171,239,133,253,241, 51, 78,198,201, 56, 25, 39,227, -100,156,140,243,198,227,244,199,125,195,189,205, 40,189, 77,213, 16, 27,128,126,140,147,113, 50, 78,198,201, 56, 25, 39,227,100, -156, 55,235,198,186, 14, 25, 24, 24, 24, 24, 24, 24, 24, 26, 8, 60, 75,130,191, 6,132, 16, 25,165,212, 30, 68,202, 8, 0,222, - 22,140, 51, 3,184,116, 53,193, 4, 32,119,108,210, 68, 71, 86, 0, 22,199, 22,192,212,245,211,184, 11, 23, 34, 50,169, 93,232, - 76, 9, 17, 68, 17,191, 52,105,146,116, 16,184,221, 12, 0,186,184, 86,173,116, 90,117, 63,147,197,156,170, 20, 20, 71, 43,106, -107,214, 27,139, 78,228,177, 28,194,192,240,151,212, 75,119, 2,152,230, 40,251,179, 40,165, 95,179, 84, 97, 96,104, 32,161, 21, - 18, 18,178,143,227,184, 68,127,243,243,184, 20, 80,216,237,246,252,242,242,242, 78, 1, 22,104, 30,192, 40,157, 78,215, 91, 16, -132,110, 0, 96,181, 90,183,215,212,212,108, 4,176,140, 82,106,187,202,138, 34, 20,192,104, 0,247, 57,118, 45, 1,240, 53,165, -180,234, 42,249,218,132,133,133,125, 35, 8, 2, 45, 45, 45,237, 10, 0, 81, 81, 81,187,172, 86, 43,169,170,170, 26, 65, 41,253, -173,158,124,156, 32, 8,239,247,232,209,163, 39, 33,228, 83, 74,233,188, 32,221, 75, 37,199,113, 30, 5,138, 40,138, 41, 87,193, - 39, 7, 16, 54,111,222,188,168,197,139, 23,183,207,207,207,111, 13, 0,137,137,137,135,198,142, 29,123,240,137, 39,158, 40, 3, - 80,233, 16, 92, 94,113,225, 66, 68,102,113,225,153, 71,139,138,143,142, 6,128,184,248,214, 95,203,100,156, 60, 33,225,192, 78, - 77,163,251, 26,181,104,217,244,145,175,254, 59, 79,158,146,154,132,159,119, 28,104,247,196, 83, 47,103,170, 98, 91,188,199,196, -214,159,135,208,208,208,125, 28,199, 37,250, 42,227,158,202,188,221,110,207, 47, 43, 43,235,228,141,147,231,249, 68, 95,245,133, -167,125,162, 40,158, 41, 41, 41,241, 56,213, 68, 88, 88,216, 78,158,231, 83, 3,229,146, 62,109, 54, 91,190,183,169,101,194,194, -194,246,201,100,178, 68, 95,241,244,244,159, 40,138,103,138,139,139,189,133,243,138,184, 7, 35,156, 87,195,233, 43,156, 82,125, - 4, 96, 78, 84, 84,212,173,101,101,101,255, 0,240,114, 85, 85, 85, 91,153, 76,134,200,200,200,151, 9, 33,167,195,194,194, 62, -169,172,172,220, 1,224, 41, 74,169,200, 74, 12, 3, 67,144,132, 22,199,113,137, 5, 5, 5, 49, 90,173, 22,192, 31,235,241, 73, -139, 73,139,162, 8, 74,169,243,211,102,179, 33, 35, 35, 35, 80,177,209, 58, 52, 52,116,249,228,201,147,155,140, 26, 53, 74, 33, - 45, 53,115,225,194,133,244,111,190,249,230, 31,111,190,249,230, 84, 66,200, 72, 74,233,161, 64,197, 11,128,190, 0,198,183,111, -223,126,248, 27,111,188, 33,239,211,167, 15,236,118, 59,126,252,241,199, 30,211,167, 79,159, 71, 8,249, 22,192,231, 0,126, 10, -180,178, 32,132,116,143,139,139,251,114,219,182,109,241,185,185,185,246, 81,163, 70, 45, 5,128,125,251,246,165,217,237,118,210, -181,107,215,213,132,144, 49,148,210,109,245, 72,243,225, 79, 62,249,228, 61, 19, 39, 78,140,249,231, 63,255,249, 0,128,121,142, -107, 17, 71, 58,215,119,129, 67,167,147, 69, 41,149,251, 56, 46,174, 30,206,150, 54, 55, 55, 55, 34, 59, 59,251,177,226,226,226, -103, 92,121,139,138,138,176,127,255,126,203,204,153, 51,103,239,216,177,227,195,212,212,212, 75, 0,106,189, 17, 81,187,208,185, -168,248,232,232,158, 89,243,194, 0, 96,217,202,199,238,221,115,176, 36,100,213,154, 5,255, 80,168,228,166,197,255,153, 45,111, -222, 44, 5,155,246,157,194,238,163,229,164,117,247, 33,124,229,170, 69,253, 1, 44, 96,197,243,207,129, 76, 38, 75,200,207,207, -143,209,104, 52, 30, 23,142,119, 27,151, 33, 77,128,138,244,244,116,239, 21, 11,207, 39, 22, 20, 20,196,168, 84, 42,103,221,225, - 94,103, 72,245,138, 51,175, 80,138, 22, 45, 90, 88,124,212, 73,201,231,206,157,139,209,104, 52, 78, 30, 79,225,115, 23, 28, 45, - 90,180,240, 21,247, 58,225, 12,132,147, 82,138,230,205,155,219,253,197, 93, 90, 1,195, 95,188, 37,206,212,212, 84, 90, 31,206, - 64,194,217,180,105, 83,139,159,219, 63,231,196,137, 19, 19,147,146,146,208,188,121,243, 29,183,222,122,107,168, 86,171,197,154, - 53,107,208,170, 85,171,204,208,208,208,221,203,150, 45, 19, 94,124,241,197,118,159,125,246, 25, 0, 60,193, 74, 12, 3, 67,144, -132, 22, 33, 4, 90,173, 22, 75,151, 46,245,186, 28,135,235,247, 38, 77,154, 4,116, 65, 66, 72,167,212,212,212,205,219,182,109, - 83,199,199,255, 49, 33,182,217,108, 70, 68, 68, 4, 30,127,252,113,197,157,119,222,217,124,192,128, 1,187, 8, 33,183, 81, 74, -247,249,225, 27, 30, 29, 29,253,175, 41, 83,166,196,222,115,207, 61,136,138,170, 51,233, 54, 70,141, 26,133, 17, 35, 70,200, 79, -156, 56,113,239,194,133, 11,239,157, 63,127,126, 33, 33,228, 9, 74,233,183,190,120, 53, 26,205,208,102,205,154,125,180,109,219, -182,152,152,152, 24,164,165,165,113, 47,190,248, 98,243,244,244,116,117, 98, 98, 34,119,241,226, 69,124,255,253,247, 9, 99,198, -140, 89,174, 80, 40, 30, 49,155,205, 43, 2,136,187, 34, 42, 42,234,229, 71, 30,121,164, 81, 85, 85,149,109,255,254,253, 39,165, -253, 10,133, 98,122, 86, 86, 86,103, 66,200, 23,148,210, 79,174,198,201,114,184,118,238,107,153, 88,165,255, 3,116,182, 20,191, -252,242, 75,100, 86, 86,214,183, 38,147,169,195,163,143, 62,122,110,230,204,153,234,208,208,208, 80, 0,164,170,170,234,210,180, -105,211,204, 31,124,240,193, 75,173, 90,181,234,187,115,231,206,225,237,218,181,179, 58, 68,220,149, 66,139, 16,103,120,206, 23, -148, 96,243, 14, 81,241,218,228,231, 19,223,158,145,122,118,239,145,243, 34,175, 14,197, 15, 91, 14,163,168,172, 6,255,219,121, - 4,113, 81, 33, 68,174, 20, 50,195, 19, 51,111,171, 44, 56,178,133,178,149,181, 27, 28,132, 16,104, 52, 26,252,240,195, 15, 87, - 44, 93,229,105, 89, 43,158,231, 17, 30, 30,238,119,117, 3,149, 74,133,245,235,215,123, 92,123,209,211,146, 62, 97, 97, 97,128, -143, 69,181, 9, 33, 80,169, 84,216,190,125, 59, 56,142,243,184, 52,144,251, 62,173, 86, 11,206,199, 90, 87, 18,231,150, 45, 91, -252,114, 73,159, 58,157, 14, 0,100, 62, 11,165, 82,137,109,219,182,121,141,179,251,119,157, 99,189, 87,127,156,219,183,111,175, -179,244,151,251,146, 96,174,191,181, 90,173,179, 1,231,181,149, 22, 17,209, 53, 49, 49, 17,123,246,236,193,178,101,203, 34, 51, - 51, 51,113,234,212, 41, 16, 66, 48,115,230, 76,114,203, 45,183, 8,133,133,133,232,209,163, 7,190,251,238,187,108, 86, 90, 24, -254, 66, 8, 0,218, 1,136,198,229, 85,104,170, 1,132, 59,158, 61, 10, 0,101, 0,212,142,205, 4,160, 6, 64, 35,199,185,165, -142,186,197, 85, 32,148,160,238,226,211,157, 29,220,210, 10, 21,209, 46,255, 73,215,112,255,237,254,233,145,155, 7,128,213,171, - 87, 75, 15,179, 94,131, 7, 15,222, 92, 39,102, 1,136, 44,105,157, 50,247, 50,237, 97,129, 89,165, 86,171,253,102,215,174, 93, -234,232,232, 63,226, 96, 50,153, 80, 93, 93,141,154,154, 26, 84, 87, 87, 35, 36, 36, 4,203,150, 45, 83,247,237,219,247, 27, 66, - 72, 58,165,212,228,141, 19,192,236,139, 23, 47,198,218,108, 54, 40, 20, 10,111, 45, 97,100,100,100,224,229,151, 95,198,192,129, - 3,227,122,247,238, 61, 27,192,183, 62, 56,161,209,104, 62,218,191,127,127,140, 70,163,193,201,147, 39,145,159,159,143,231,158, -123, 46, 73, 20, 69,156, 63,127, 30,167, 78,157, 66, 65, 65, 1, 22, 46, 92, 24, 51,108,216,176,143, 0,172,240, 21,119, 7, 30, -125,230,153,103, 90, 70, 68, 68,112,239,188,243, 78, 69,109,109,237,191, 29,251, 95,155, 59,119,238,253, 61,123,246,140,121,240, -193, 7, 41, 33,100, 49,165,244, 10,225,226,198,233,201,201,178, 3, 56,230,118, 90,134,155,211, 21,231,200,132, 21, 30, 56, 9, -128,176, 1, 3, 6, 60,107, 50,153, 58,108,219,182,237,116,183,110,221,146, 1, 92,148, 50, 95, 88, 88,152,118,246,236,217,177, - 67,134, 12, 57,209,167, 79,159, 14, 3, 6, 12,120,182,164,164,100,166,227,127,234,206, 41,138,248, 37, 46,190,245,215, 91,118, - 62, 49,122,211,118,179,252,249,167,166,158,107,146,148, 82,249,203,201,114,251,145, 51, 37,168, 54,216,112,119,159,203, 11,152, -119,109,221, 4,255, 90,186, 13,143, 63,253,138,240,237,215,139, 70,156,166,208, 2, 88,237, 35, 61,175, 9,140,243, 15,177, 33, -138, 34, 4, 65,192, 29,119,220, 1, 66,200, 21,107,121, 10,130,128,157, 59,119,162, 79,159, 62, 16, 4, 1, 19, 38, 76, 8,136, -147,231,121, 12, 24, 48,192,185,142,162, 43,159,187,104,240,164, 9,220,227, 78, 41, 5,207,243,224, 56,206,235, 66,218,238,156, -254,234, 37, 41,156,190,184, 92,255,243, 23, 78,201, 77, 10, 84,100, 5,202, 41,133,147,231,121,100,103,103,227,224,193,131, 62, - 69,151, 39,125,233, 30,247, 75,151, 46,141, 75, 79, 79,223, 50,111,222,188, 72, 0, 40, 43, 43,115, 46,120, 47,147,201,112,252, -248,113,152,205,102,188,254,250,235,150,170,170,170, 7, 89, 57, 98,156, 13,201,233, 75,139, 0,232, 57,121,242,228, 78, 57, 57, - 57, 51,179,178,178,190,218,177, 99,199,151,132,144, 85,148,210, 33,210,231,228,201,147, 51,115,114,114,102, 78,154, 52,233,229, - 89,179,102, 29, 38,132,172, 2, 0,247,223,142,240, 15,113, 19,113,209, 18,143,163,204,213, 57,214,211,111,247, 79, 47,220,127, - 56, 90,131, 7, 15, 38,142, 72, 18,215, 74, 45, 80,161, 21,200,218,125, 60,207, 79,156, 57,115,102,172, 47,145, 85, 83, 83,131, - 11, 23, 46, 32, 57, 57, 25, 19, 38, 76,136,157, 55,111,222, 68, 0,239,250,160,149,203,100, 50,236,217,179, 7,197,197,197,104, -211,166, 13, 82, 83, 83,235, 28,240,251,239,191,227,199, 31,127, 68, 69, 69, 5, 58,118,236, 8, 92, 30,127,228, 17,237,218,181, -123, 61, 35, 35, 99,192,128, 1, 3,108,106,181, 26,191,252,242, 11, 58,116,232,128,165, 75,151,162, 73,147, 38,208,104, 52, 56, -113,226, 4,218,180,105,131,205,155, 55, 35, 58, 58, 26,237,219,183,183,117,236,216,113,107,121,121,249,198,188,188,188,215,189, -180,156,229, 9, 9, 9, 83, 31,126,248, 97,197,133, 11, 23,196,207, 63,255,124, 27,165,116, 27, 33,100,226, 43,175,188,242,192, -192,129, 3, 99, 14, 28, 56, 80,185,119,239,222,221,158, 68, 86,128, 78,150,205,253,161,100,183,219, 77, 6,131,193,108, 50,153, -172, 28,199,229, 17, 66,204,118,187,221, 91,159,143,106,252,248,241, 77, 75, 75, 75, 31,127,250,233,167,115, 29, 34,235, 56, 46, - 15,128, 7, 0,216,108, 54, 83, 77, 77, 77, 85, 86, 86, 86,242,152, 49, 99, 78,127,249,229,151,143,143, 31, 63,126,217,231,159, -127, 94, 3,192,224, 78,216,164, 73,210, 65,153,140,147,215, 86, 71,158, 89,190,236,147,103,126, 92, 57, 49,233,252,249,130,230, - 81,141,162,107,229,186,232, 11,203,150,124,182, 15,128,249, 66, 73, 21,126,251,189, 16,130, 32,195,209,243,149,232,121,251, 40, -225,244,201, 25,221, 37,161,197,208,160,160,210, 34,212,155, 54,109,242,233,104,237,220,185, 19,130, 32, 64,173, 86,227,131, 15, - 62,240, 73, 42, 9, 3,201, 45,242, 39,102, 56,142,243, 89,143, 72, 98, 67, 90,232,221,125,251,247,191,255,141,167,159,126,186, -206, 53, 28, 98,131,248,227,244, 22,190,228,148, 20, 20, 23, 21,213,217, 23,200,162,244,118,187, 29,130, 32,224,227,143, 63,198, -144, 33, 67,176,106,213, 42,159,159,119,220,113, 7, 56,142,163,129,164,103,118,118, 54, 44, 22,139, 51,204,199,143, 31,247,200, - 59,127,254,124,127, 78,230,157, 0,166,117,232,208, 33,180,119,239,222,216,178,101, 11, 70,140, 24, 97,178, 88, 44, 39, 29,207, -132, 22,243,230,205, 83,236,223,191, 31, 81, 81, 81,194,185,115,231, 62, 37,132,176, 1,242, 12, 13, 10, 79, 90, 68,122,230,229, -228,228,204,116, 23, 49,174,144,254, 39,132,172,154, 53,107,214, 16, 87, 81,228,250,219,197,117,114, 21,113,153,174,142,148,171, -136,242, 38,160,220,158,183,174,199,151,120, 20, 90,142,136,245,114,117,129,164,202,215,159,200,242,214,114,116, 71, 88, 88,216, -160,187,239,190,219, 41,114,140, 70,163, 83, 96, 73, 34, 75,250,125,226,196, 9,116,234,212, 73, 30, 22, 22, 54,200,143,208,146, - 68, 28, 26, 55,110,140,210,210, 82, 28, 58,116, 8,201,201,201,176, 90,173, 88,187,118, 45, 42, 43, 43, 33, 8, 2,228,114, 57, - 44, 22,223, 67, 22, 50, 50, 50,238, 88,188,120,113,167, 69,139, 22, 93,146, 90,116, 75,150, 44, 1,165, 20,209,209,209,208,235, -245, 40, 42, 42,194,198,141, 27, 97,179,217,160,211,233,144,150,150,166, 24, 58,116,104,247,105,211,166, 9, 0, 94,247, 66,157, - 61, 98,196,136,176,208,208, 80, 60,245,212, 83,212, 98,177,204, 34,132,100,143, 24, 49, 98,234, 19, 79, 60, 17,149,151,151,103, -126,232,161,135,246, 88, 44,150,119, 28,149,160, 64, 41,181,250,105, 81,120,117,178,172, 86,171,148,166,185, 53, 53, 53,104,212, -168, 81,178,159, 49, 92, 0, 32,223,190,125,123, 54, 0,217,244,233,211, 85, 0,138, 92, 69,150,217,108, 70, 77, 77, 13,106,107, -107,173,149,149,149,197, 47,188,240,130,237,203, 47,191,148, 57,206, 57,234, 73,104, 1,183,155,111,185, 69,171,160, 84,246,202, -130, 5, 11,116, 3, 7, 14,228,116, 58, 29,170,171,171, 67,255,183,102,141,174,111,239,238,105, 51,115,222, 94, 23,154,216,166, -104,251, 47,103, 80, 80, 88, 9,179,213,138,180,248,176,203,126, 24, 67,131,195,241, 34,139,211,209,114, 21, 21, 91,182,108,193, -237,183,223,238, 44,235,114,185,188,142,243,229,143,147,231,121,220,126,251,237, 87, 56, 60,155, 54,109,242,232, 62,249,131,171, - 40,114, 23, 71,158, 4, 24,199,113,240,215,251, 44,185,121,158,196,150,171,171,239, 38,222,252,181,246,193,243, 60,158,120,226, - 9, 8,130,128, 23, 95,124, 17, 60,207,163,125,251,246,224,121, 30, 89, 89, 89, 16, 4, 1,125,250,244,169,119,220,119,237,218, -133, 14, 29, 58, 56,195,212,190,125,123,116,238,220, 25, 60,207,163, 71,143, 30, 16, 4, 1, 3, 6, 12, 8,132,243,229,234,234, -234,182, 58,157, 14, 39, 78,156,128, 76, 38, 3, 33,228, 20,165,180, 45, 0, 60,252,240,195,167,245,122,125, 83,163,209,136,135, - 31,126,152,152,205,230, 54, 47,190,248,226, 43, 0,152,208, 98,104, 48,184,107, 17, 23, 24, 38, 77,154,244, 50, 33,100,149,228, - 80,185, 59, 79,158,126,123,168,155, 36, 49, 36,117,237,117,118, 19,113, 82,183,223, 96, 31,231,154,221,132,149,123,215,225,222, -128, 29, 45,169,242, 13, 84,104,249,131,209,104,108, 23, 19, 19,227, 85,100,185,126,154,205,102,164,166,166,194,104, 52,182,171, -239, 67, 35, 62, 62, 30, 22,139, 5,159,124,242, 9,228,114, 57,228,242, 63,244,133,217,236,219, 44, 58,114,228, 72,238,174, 93, -187, 58,116,236,216, 49,226,187,239,190, 43,185,237,182,219,162, 7, 14, 28, 8,181, 90, 13,131,193, 0,171,213,138,174, 93,187, - 34, 35, 35, 3,249,249,249,248,223,255,254, 87,154,158,158,222,104,247,238,221, 98, 97, 97,225, 89, 31,212,253,251,246,237, 11, - 66, 8,214,172, 89, 83, 74, 41,221,171, 82,169,126,156, 49, 99, 70,132,217,108, 22,199,142, 29,123,174,188,188,252,105, 0, 22, -165, 82, 57,119,192,128, 1, 89, 50,153,236, 11,187,221,254, 65,125, 51,170,123,218,214,214,214, 66,165, 82, 5, 50,149,132, 80, - 94, 94,222, 26, 0,180, 90,109, 36,128,211,206, 28,110, 48,212, 17,195,102,179,217, 24, 25, 25,169, 5, 0,199, 57,130,151,251, - 17,173,209,104,150,159, 61,123, 38,196,117,252, 92,120,120, 56,238, 27, 51,134,235,150,157,173,104,219,174,221,128, 87,223, 91, -180,180,113, 84,168, 57,173,113, 20,172,118, 43, 54,172, 91, 43, 82,209,186,142, 85, 59,127,142,208,146,196,134,187,163, 37, 8, - 2, 54,111,222, 92,139,213, 63, 0, 0, 32, 0, 73, 68, 65, 84,124,197, 62,185, 92,142,255,252,231, 63, 1, 9, 3, 73, 84,121, -235, 58,115,235,234, 34,254, 4,140, 32, 8,144,201,100,248,248,227,143, 33,138, 34,158,121,230,153, 58,221,137,174,252, 1,118, -129, 56,207,201,152, 42, 2, 48, 35,255,125,165,243,124,247,240, 58,206, 9,200, 37,155, 55,111, 94, 64,142,214,224,193,131,253, - 10, 87,215, 30, 6,215,112, 29, 60,120,208, 35,239,130, 5, 11,252,166,167,221,110,199,234,213,171,157, 34, 85,194,148, 41, 83, - 30, 78, 76, 76,140,221,186,117, 43, 10, 11, 11, 81, 91, 91,139,154,154, 26,116,237,218, 53,173, 95,191,126,191, 20, 22, 22,230, - 29, 57,114,228,110, 86,122, 24,254, 68, 71,203, 52,107,214,172,195,179,102,205,242,232, 88,185, 59, 75,190,156, 39, 23,129,181, - 23,142, 46,195, 73,147, 38,189,140,203,195,106,246, 6,112,174,194,189,235,208,167, 17,228,166, 34,167,121,170,124, 3,233, 62, - 12,208, 78,231, 9, 33, 48, 26,141, 30, 5,150,171, 56,176, 88, 44, 40, 47, 47,135,221,110,191,234,185,190, 60,181,100,253, 9, -173, 67,135, 14,253,243,129, 7, 30,184, 16, 22, 22,214,182,164,164,164, 88, 20,197, 62, 59,119,238,140,230,121, 30,161,161,161, - 8, 13, 13,197,143, 63,254, 8,141, 70,131, 39,158,120,162,216,110,183,111, 9, 9, 9,137, 50, 24, 12,191, 22, 22, 22,190,234, - 85,193, 8,194,128, 30, 61,122, 96,255,254,253,184,116,233,210,122, 66, 72,251, 7, 31,124,240,246,164,164, 36, 50, 99,198, 12, -227,239,191,255,254, 1,128, 98,173, 86,187,120,241,226,197,189, 59,118,236, 24, 50,118,236, 88, 16, 66, 22, 80, 74,141,129,198, -185,182,182,182,142,192,170,170,170, 66,117,117, 53,180, 90,173, 45,192, 52, 19,112,121,172,149, 52,222,202,121,111, 28,110,150, -116,127, 40,207,243,244,242, 33, 84,240,198,167,213,106,167, 47, 90,180, 72,237,254,146,130,221,110, 71, 81, 81, 17, 66, 67, 67, - 49,229,213, 87,229,111, 60,247, 96, 7,153, 46,118, 39,199, 17,152, 45,180,130,138,230,181,181, 69,247,108,101,213,206,159, 3, - 73, 24,220,117,215, 93, 87,116, 23,202,229,114,172, 95,191, 30,195,134, 13,115, 54, 92, 58,118,236,232,183,113, 37, 9,131, 59, -239,188,211,233, 12,173, 93,187,214, 99,183,159,228, 72, 5, 34, 8,165, 99,159,124,242, 73,240, 60,143,127,253,235, 95,120,246, -217,103,193,113, 28,222,127,255,125,112, 28,135,215, 94,123, 45, 96,145,233, 42, 96,242,222,190,252,153,248,108, 21,202,230,199, - 2, 0, 66, 66, 67,165, 8,213,171,238,225,121,222,233,100,181,107,215, 14,130, 32, 32, 43, 43, 11, 60,207, 59,157,172, 65,131, - 6,185,166, 35, 13,132,147,231,121,156, 60,121,210, 25,230,172,172,172, 58, 78, 22,207,243, 24, 60,120,112, 32,193,156, 25, 30, - 30, 62, 45, 35, 35,163,213,236,217,179, 5,153, 76,134,190,125,251,182,120,232,161,135,206, 70, 69, 69, 69, 77,159, 62, 93,227, -225, 28, 53,128,182,173, 90,181,210,178, 82,195,208,128,142,214, 52, 15,127, 69,184,142,185,170, 71, 67,114,149,235,241, 18,135, -187, 56,114, 56,100, 91,252,113,121, 58,215, 31,120, 73, 65,250,178,212, 3, 17, 90, 14,219,217,231,197, 52, 26,205,111,197,197, -197, 89,106,181,186,142,200,242, 36,184,100, 50, 25, 10, 11, 11,161,209,104,126, 11,230, 77,244,215,117,232, 16, 53,207,185, 36, -108,191, 65,131, 6,125,190,126,253,250,248, 13, 27, 54, 96,247,238,221,136,142,142,198,188,121,243, 46, 22, 21, 21,253,147, 82, -186, 62,144,235, 54,109,218,180,181, 78,167,195,246,237,219, 1, 96, 51,128, 7, 31,127,252,113, 98,181, 90, 49,127,254,252, 90, - 0,107,194,195,195, 87, 47, 91,182,172, 67,219,182,109, 21, 27, 54,108,168,218,189,123,247, 79, 1,138, 44,187, 40,138, 87, 8, - 44,215, 52, 13, 9, 9, 9,196,209,178,134,133,133, 29,170,170,170, 26,101, 48, 24,170,148, 74,101, 72, 85, 85,149,201, 85, 96, - 73,252, 60,207, 11, 39, 79,158,188, 0, 32, 45, 44, 44,236, 16, 92,186, 24,235,100, 48,158,239,219,183,111, 95,222,253, 30, 20, - 21, 21,161,176,176, 16, 22,139, 5, 29, 59,118, 36, 50, 98,149,149,159,251,245, 97, 86,205,252, 37,142, 22,149,202,186,244,150, -160,167, 55, 13,215,174, 93,235,252,205,113, 28, 28,175,251,251, 21, 69,235,215,175,247, 57, 96,221,173,235,208,175, 53, 46, 29, -255,225,135, 31, 94, 94,222,194,225,100,113, 28,135, 73,147, 38, 65,169, 84, 98,198,140, 25,152, 52,105, 18,120,158,247,219,117, -232, 42, 96, 82, 94,212,187, 54,142, 46, 23, 10,199,120, 40, 66,136,171,216, 34,129,138, 55, 95,110, 94, 32, 61, 1,174,156,210, -121, 42,149,202,235, 64,120, 55, 78,226, 35,222, 63, 16, 66,206,196,199,199,111,207,202,202, 10,219,183,111, 31,222,127,255,125, -185,201,100,106,178, 97,195, 6,231,117, 61,165, 87,109,109,173,154,149, 28,134,134,112,179,124,252, 93,226, 54,190,138,184,118, -227,249,248,116, 63, 30, 46,251, 92,121, 75,220,158, 99,174,251,221,197,149,251, 53, 92,143, 41,241,234,104,249,171, 44,252, 9, -174, 64, 28, 45,189, 94,255,211,154, 53,107, 58,143, 25, 51,134,247,213,109, 88, 91, 91,139,216,216, 88, 28, 62,124,216,166,215, -235,127, 10,192, 41, 11,154,208,242, 80,169,108,136,139,139,147, 89,173, 86, 52,111,222, 28, 9, 9, 9, 48, 26,141,168,168,168, -144, 5, 42,178, 8, 33,242, 78,157, 58,201, 0,160,162,162, 2,184,252,170,105,139,244,244,116,236,223,191, 31,229,229,229,223, - 2, 24, 56,109,218,180,142, 93,187,118,149, 47, 93,186, 84,255,232,163,143,126,107,181, 90, 95, 15,208,141, 48,219,108,182, 84, -142,227, 44, 21, 21, 21, 5,174,233, 25, 27, 27, 27,169,213,106, 73, 81, 81,145, 53, 16,161,213,182,109,219, 61,231,206,157,195, -244,233,211, 75,102,206,156,153, 94, 93, 93,125,169,178,178,210,230, 42,182,140, 70, 35,215,168, 81, 35,229,252,249,243,213, 0, -208,182,109,219, 61,222,132, 86,109,109,109,146, 70,243, 71,195,216,100, 50,161,176,176, 16,133,133,133, 40, 42, 42, 66,117,117, - 53,210,210,210,160,215,235,147, 89, 53,243,151, 9,173, 58,221,103,174,229,219,245, 65, 94,159,178,238, 42, 96,238,186,235, 46, -231,216, 46,201, 33,147,182,229,203,151,187, 15, 48, 15, 72,104,125,248,225,135,120,242,201, 39,161, 82,169, 48,123,246,236, 58, - 93,135,238,226, 64, 20, 69, 18, 72,220, 83, 95, 50,160,112,110, 36, 4, 65, 64,212,163, 69,117,186,232, 60, 8,142,128,194, 57, -115,230,204,160,116, 29,186,114, 38, 39, 95, 46, 42, 31,127,252, 49, 70,141, 26,133,173, 91,183, 94,117,215, 97,102,102,230,146, - 85,171, 86,133, 29, 57,114, 4, 85, 85, 85, 40, 41, 41,129,201,100, 66,126,126,190,215, 94, 1, 71, 93,174, 98, 37,135,225, 79, -198,222, 63,153, 55,104,215,227,253, 60,192, 3, 22, 90,129, 56, 90, 38,147,105,246, 83, 79, 61,245,120,191,126,253, 34, 67, 66, - 66,112,225,194,133, 43, 68, 86, 77, 77, 13,116, 58, 29, 12, 6, 3, 86,174, 92, 89,101, 50,153,102,251, 19, 7, 86,171, 21, 49, - 49, 49, 40, 45, 45,133,232,101,252, 52,199,113, 80,171,213,168,169,169,129, 55, 81,224,235,129, 97,177, 88, 96,181, 90, 97,181, - 90, 97,177, 88, 80,207,233,157, 52,210,196,175,181,181,181, 0, 80,219,184,113,227,230, 42,149, 10,185,185,185,192,229, 55,251, -250,221,126,251,237, 66, 89, 89, 25,125,232,161,135,182, 81, 74, 31,246, 51, 59,190,121,203,150, 45,169, 0,160, 86,171, 79, 0, - 64,126,126,190,181,162,162,162,142, 83,168,209,104,232,176, 97,195,226, 41,165,216,178,101, 75,170, 92, 46,167,240, 50,231, 21, - 0,227,138, 21, 43,142,132,133,133,125,153,147,147, 51,102,200,144, 33,135, 91,183,110,157, 90, 91, 91, 91,108, 48, 24, 12, 70, -163,145,202,100, 50,121, 68, 68,132,106,221,186,117,167,119,238,220,217, 47, 52, 52,244,203, 21, 43, 86, 28, 1,224,209,121,211, -106,181,249,122,189, 62, 69,186,167,174, 34,171,176,176, 16,148, 82,156, 57,115, 6, 26,141,230, 28,171, 71,254, 58, 72,141, 42, -119,231,197,125, 95,160, 34,203, 85, 24,172, 91,183,206,231, 28, 90,129,114,186,138,162,103,159,125, 22,115,231,206,189,194,209, -154, 49, 99, 6, 0,224,213, 87, 95, 13,120,140,150,228, 94, 21,206,141, 68,220,147,229,117,194, 14, 0, 68, 10, 95, 61,167,116, -227,121, 30,211,167, 79,191, 98,144,186,107,215, 94,128, 93,124,117,194, 89, 92, 92, 12,158,231, 17, 25, 25,137,251,238,187, 15, - 3, 6, 12,112,118, 65,214,151,247,216,177, 99,219, 95,122,233,165, 54,153,153,153,120,243,205, 55,203,195,195,195, 67,254,239, -255,254,143,175,168,168, 32,190, 28, 45, 38,180, 24, 24,130, 32,180,164, 2, 22,232, 91,135,158, 42, 75, 66, 72, 63,215,185, 54, - 40,165,149,132,144,251,250,247,239,255,221,215, 95,127,173,110,218,180, 41,142, 29, 59,134,242,242,114,152,205,102,200,229,114, -196,199,199,163,162,162, 2,159,125,246,153, 65,175,215,223, 71, 41,173,244,197, 9,224,149, 78,157, 58,125,244,238,187,239,170, -218,183,111,143,242,242,114,212,212,212,212,153,197, 58, 52, 52, 20,106,181, 26,123,246,236,193,218,181,107, 13, 0, 94,241,195, -233, 73,205,193, 98,177, 56, 5,151, 63,161,229,198,169,149, 92, 29,189, 94, 15, 0,214,164,164,164, 56, 0, 56,115,230, 12, 0, -228,165,165,165, 77,107,218,180, 41, 89,188,120, 49,165,148,174,245, 36,178,220, 56,203,123,244,232,113, 9, 64,156,217,108,150, - 3, 64,101,101,165,165, 81,163, 70, 49, 74,165, 82, 84,171,213,162, 74,165, 18, 47, 92,184, 96,179,217,108,114, 0,232,209,163, -135, 25, 64, 33, 92,198,130,184,113,138, 0,170, 22, 44, 88, 48,109,236,216,177, 89,217,217,217,153,143, 61,246,216,161,135, 30, -122,136, 75, 72, 72,136,168,174,174, 54,158, 58,117,234,210,123,239,189, 87,189,107,215,174,126,130, 32,156, 93,176, 96,193, 52, - 0, 85,142,115,175,224,180,217,108, 63,109,216,176,225,159, 67,134, 12,225, 11, 10, 10, 80, 84, 84,228, 20, 89, 69, 69, 69,200, -200,200,192,206,157, 59,237, 22,139,101, 67, 61,210, 51, 88, 78, 14,227,188,220, 8,161, 82, 89,247, 38,176,164,198, 84,160,156, -174,162,104,212,168, 81,117, 92, 44,185, 92,142,111,190,249,198, 99,189,225, 97,134,243,126,238,243, 73, 73, 97,122,233,165,151, -234,136,182, 41, 83,166,120, 13,154,191,244,148,120, 42, 63, 78,168,251,214,161,151,114,238, 43,156, 82,221, 41, 8, 2,166, 76, -153, 18,176,163, 5,183, 49, 90,158, 56,165,184,223,118,219,109,208,235,245, 78, 33,235,205,209,242,151,158,118,187,253,201,185, -115,231,210,208,208,208, 91,171,170,170,254,113,238,220,185,133,122,189,190, 75,101,101,165, 79, 71,203,100, 50, 41, 89, 57, 98, -156, 13, 49,151,214, 77, 37,180, 28, 15, 73, 36, 37, 37,213, 89, 59,139,227,184, 58, 91,125,198, 25, 56, 10,238, 58, 66,200,240, -110,221,186,125,241,228,147, 79,134,180,111,223, 94, 72, 73, 73, 65,109,109, 45,114,115,115,113,248,240, 97,219,138, 21, 43,170, -244,122,253, 63, 40,165,235, 2,224, 91, 68, 8, 89, 59,112,224,192,215,186,118,237,250,200,212,169, 83,101, 45, 90,180, 64,101, -101, 37, 34, 34, 34, 16, 19, 19,131,227,199,143, 99,229,202,149,246,210,210,210,143, 0,188, 65, 41, 45,169,111,131,223, 98,177, -224,222,123,239,133, 40,138,248,224,131, 15, 64, 8,169, 79,243,214, 98,177, 88, 40, 0, 82, 90, 90, 10, 0,122,199,236,210, 56, -117,234, 20, 0,156, 77, 77, 77, 13, 1,128, 13, 27, 54, 16, 0,129, 46,233, 67, 93,157,173,140,140,140, 92,247,202, 81,114,178, - 36, 23, 12,254, 23,130, 54,142, 30, 61,186, 88,175,215, 15,124,246,217,103, 95,251,240,195, 15,199,124,248,225,135, 87, 28, 20, - 26, 26,250,229,251,239,191,255,198,232,209,163,139,189,185, 89, 14, 7,239,213,113,227,198,141,254,237,183,223, 66, 84, 42, 21, -106,107,107, 81, 86, 86, 6,139,197,130,180,180, 52, 20, 23, 23, 99,209,162, 69,213, 6,131,225,117, 86, 28,255, 26,184, 10, 3, -111,174,150, 63,145,229,203,213,249,225,135, 31, 60,206, 81, 85, 95, 78,119,177, 17,232,220, 86,190, 26, 69,210,180, 52,158,166, -140,168, 79,189,230,137,151,231,121,188,243,206, 59,206, 73, 91, 61, 57, 89,245,113,180, 36,206,200,200,200,203, 54,185, 99,201, -164,193,131, 7, 95, 53,175, 99, 57,178, 39, 92,174, 49,243,133, 23, 94,152,150,145,145,209, 2,128,210, 53, 13,216, 34, 13, 12, - 12, 65, 22, 90,118,187, 61,191,101,203,150,117, 42, 56,127,139,153, 90,173,214,252, 0, 11,247, 90, 66, 72,218,251,239,191,255, -148, 86,171,237,167,215,235,219, 56, 42,142,223,106,107,107, 55,152, 76,166, 57,245, 89, 4,218, 33,156, 38, 18, 66, 62, 24, 56, -112,224,140, 62,125,250,140,124,238,185,231, 8,165, 20,243,231,207,167,191,255,254,251,114, 0,175, 80, 74,127,191,154, 68,138, -140,140, 60,242,217,103,159,197,126,247,221,119,176, 90,173,152, 51,103, 14, 66, 66, 66,142,212, 35,124,197, 60,207,127,158,157, -157,125,255,206,157, 59, 23, 81, 74,127, 85, 40, 20, 11,187,119,239, 62,110,231,206,157, 75, 40,165,135,121,158, 95,216,181,107, -215,113,123,247,238, 93, 70, 41, 61, 88,143,224, 57,157, 45,155,205,115, 79,163, 39, 39,203, 15,170, 30,120,224, 1,203, 3, 15, - 60,240,220,232,209,163, 63,217,187,119,111,151,138,138,138, 54, 0, 16, 30, 30,254, 91,231,206,157,247,124,253,245,215,199, 29, - 78,150,209,223,189, 33,132, 12,107,211,166,205,183,111,190,249,166, 54, 51, 51,147,111,222,188, 57,242,242,242,112,232,208, 33, -219,167,159,126, 90, 99, 48, 24,238,162,148, 94, 98,197,241,175, 19, 90,148, 82,132,135,135,215,105, 68, 73,175,252,215,183,187, -208,245,193, 44, 45,213,227,206,235,141,211,215,180, 9, 18,116, 58,157,115,114,211, 64,134, 44,136,162,239,249,216, 40,165, 78, - 78,105, 11, 64,100,249,125, 67,208,177, 4, 78,192,156,129, 76,239,160,213,106, 97,181, 90,157,188, 1,188,249, 73,234,121,207, -126, 0,240, 67,243,230,205, 79, 1,104,198,196, 21, 3, 67, 3, 10,173,242,242,242, 78, 13,121, 97,135,144,122,195,177, 5,139, -243,119, 0,163, 9, 33,239,254,252,243,207, 82, 63,194,116,127,235, 37,250,195,177, 99,199,134, 8,130,240,159, 47,191,252,178, - 43,165, 20, 97, 97, 97,187,242,242,242,254,175, 62, 28, 54,155,237, 1, 66,200,227,210, 91,132,102,179,249, 1, 66,200, 83,148, -210, 26,151,255,157,191,235, 27,117, 0, 38, 74,105, 99, 47,255,155,234, 33,178,156,206, 22, 0,243,215, 95,127, 93, 3,224, 23, -252, 49, 79,150,213,177, 25,225,210, 93,232,231,190,108, 36,132, 52,159, 50,101,202, 76,153, 76,214,183,182,182, 54, 65,171,213, -158,183,217,108, 63,233,245,250, 87, 40,165,101,172, 40,254,117, 48,155,205, 5, 45, 91,182,228, 61, 53,160,124, 61,200,125, 53, -172,236,118,123,126,122,122,186,223,198,153, 7,206, 2, 31,249,232,108, 90, 90, 26, 23, 40,151, 4,139,197, 82,236, 43,156,105, -105,105,168, 47,167,191,184,167,166,166,122,140,187, 31, 65, 88,224,163,254,184, 42, 78, 95,233,233, 11, 6,131,225, 82,116,116, -116,141,209,104, 20, 76, 38,147, 96,179,217,234,216,143,106,181,186,132,149, 28, 6,134,107, 20, 90,127,103, 56,132,213,157, 65, -228, 51, 1,184, 63, 8, 60, 70,183,223, 53,190,126,215, 19, 13,225, 8,137, 0,244, 65, 74,195, 82, 0, 15,177, 34,119,253,161, -180,180,244,214, 96,115,150,149,149, 5,189,161, 86, 82, 82,146,213, 0,113,239,116,179,114,250, 66, 65, 65,193,173,172,100, 48, - 48, 4, 7, 28, 75, 2, 6, 6, 6, 6, 6, 6, 6,134,134, 1, 1,208,207,211, 31,245,121,155,128, 16,210,175,190, 23,246,199, -207, 56, 25, 39,227,100,156,140,147,113, 50,206, 27,143,211, 31,247, 13,247, 54, 35,165,180,193, 54, 0,253, 24, 39,227,100,156, -140,147,113, 50, 78,198,201, 56,111,214,141,117, 29, 50, 48, 48, 48, 48, 48, 48, 48, 52, 16,152,208, 98, 96, 96, 96, 96, 96, 96, - 96, 96, 66,139,129,129,225,239, 8, 66, 72,139, 38, 77,154, 28,109,217,178,101, 1, 33,100,124, 3, 95,235,190,172,172,172, 50, -149, 74,181,142, 16,210,130,165, 62, 3, 3, 3, 19, 90, 12, 12, 12, 55,180,200,106,211,166,205,182, 99,199,142,101,108,216,176, -161,113, 66, 66,194,219, 13,121,189, 78,157, 58,189,181,117,235,214,200, 53,107,214,244,143,139,139,219,114, 53, 98,139, 16,210, - 34, 57, 57,249,104,203,150, 45,243, 9, 33,247, 5, 57, 61,198,103,103,103,151, 43,149,202,181, 76, 8, 50,220, 4,229,191, 53, - 33,164, 13, 19, 90, 12, 12, 12, 12, 13, 40,178,118,236,216, 17,101, 52, 26,113,236,216, 49,148,148,148, 28,108,200,107,158, 56, -113,226,210,142, 29, 59,144,152,152,136, 37, 75,150, 68,167,166,166,110,173,143,160,145,194,124,244,232,209,140, 13, 27, 54, 36, -196,196,196,188, 23,204,240,117,233,210,101,198,214,173, 91, 35,214,173, 91, 55, 32, 58, 58,122, 11, 19, 91, 12, 55, 96,185, 87, - 18, 66,238,231, 56,110, 79,235,214,173,127,203,204,204,252,149,227,184,157,132,144, 81,132, 16,254,166, 76, 19,105,137,133,213, -171, 87,111, 6,128,193,131, 7,223,198,178, 10, 3, 3,195, 53, 86,182,153,153,153,153,187,118,237,218,165, 49, 24, 12, 88,182, -108, 25,166, 78,157,106, 45, 47, 47,223, 10,160,214,195, 41,123, 1,252, 59,144,165,183, 8, 33,161, 0, 30, 7,208,217,195,223, -218,200,200,200, 30,211,166, 77, 19,110,191,253,118, 24,141, 70,140, 24, 49,194,120,226,196,137,246,148,210, 19,129, 10, 67,131, -193,128,125,251,246,225,174,187,238, 90,103,181, 90, 7, 6, 43, 93,194,194,194, 14,255,240,195, 15,183, 52,110,220, 24,103,206, -156,193,184,113,227, 74,138,138,138,122,250, 11, 27, 3,195,223,160,204,167, 0,120, 68,167,211, 61,216,171, 87,175,136,187,238, -186, 11, 81, 81, 81,176,217,108, 56,127,254, 60, 86,173, 90,133, 29, 59,118, 92, 48,155,205,115, 1,124, 76, 41,173,240,196,115, - 35,106, 17, 66, 41,197,234,213,171, 41,128, 94,142,200,109,102, 89,134,129,129,225, 26, 43,221, 29,122,189, 62, 75,175,215,163, -186,186, 26, 73, 73, 73, 16, 4,193,227,177,197,197,197,216,190,125, 59,158,120,226,137, 35,133,133,133, 61,125,173,123, 73, 8, -137,232,208,161,195,142,141, 27, 55,182, 8, 9, 9,113,238, 23, 69, 17, 22,139, 5, 86,171, 21, 22,139, 5, 38,147, 9, 38,147, - 9, 10,133, 2,106,181, 26,145,145,145,135, 40,165,109, 2, 21, 89, 7, 14, 28,192,216,177, 99, 75,202,202,202,130, 42,130, 8, - 33, 45, 98, 98, 98,182, 44, 90,180, 40, 58, 45, 45, 13,231,206,157,195,132, 9, 19, 74,207,158, 61,219,131,137, 45,134,191,113, -121,159, 52,124,248,240, 25,177,177,177, 92,235,214,173, 17, 31, 31, 15,147,201, 4,131,193, 0, 74, 41,120,158, 7,165, 20,149, -149,149,216,178,101, 11, 54,110,220,104,186,116,233,210,103, 0,230, 80, 74, 79,186,136,172, 27, 82,139, 56,133,214,224,193,131, - 9,203, 46, 12, 12, 12, 65,170,120,127,171,172,172,108,109, 50,153, 80, 91, 91, 27,208, 57,103,206,156,193,248,241,227,143, 20, - 22, 22,118,243,228,108, 17, 66, 66, 59,116,232,176,123,203,150, 45, 45,140, 70, 35,170,170,252,175, 59,175, 80, 40,160, 82,169, - 16, 21, 21,181,147, 82,154,237,173, 37,222,186,117,235,125, 59,119,238,140, 52, 24, 12, 56,120,240, 32,238,187,239, 62, 75,121, -121,249, 54,120,118,223, 0,160, 28,151,215, 81, 61,235,129, 47, 25,192, 83, 0, 82,188,156,171,141,142,142,238,190,120,241, 98, -121,211,166, 77,161,215,235, 49,106,212,168,242, 19, 39, 78,116,166,148,230,178,220,195,240, 55, 44,239, 39,142, 29, 59,150,110, -183,219, 81, 90, 90, 10,147,201, 4,189, 94,239, 20, 90, 50,153, 12,148, 82,216,108, 54,103,195,104,255,254,253,216,176, 97, 3, - 61,115,230,204, 84, 74,233,116, 73,104,221,136, 90,132,103, 89,132,129,129,161, 1, 48,186, 75,151, 46, 7,255,247,191,255,169, - 20, 10, 5, 86,174, 92,233,181,235, 48, 54, 54, 54,115,225,194,133,169,105,105,105,152, 55,111,222, 45, 35, 70,140,120, 28,192, - 76, 15,156,143,111,220,184,177,133,209,104,196,193,131, 7, 49,110,220,184,220,162,162,162,195,238, 34, 38, 53, 53,181,199,123, -239,189, 39,116,236,216, 17, 85, 85, 85,232,223,191,191, 30,192, 35, 62,194, 58,113,211,166, 77,145, 6,131, 1,213,213,213,232, -213,171, 23,202,202,202,228, 0,250,120, 59,193, 96, 48, 32, 37, 37,165, 5,128, 43,196, 91, 84, 84,212,127,207,157, 59,215, 91, -173, 86,251, 76, 32,139,197,130,252,252,124,132,135,135, 99,213,170, 85,145,205,154, 53,123, 21,192, 3, 44,235, 48,252, 29, 97, - 54,155,241,213, 87, 95,161, 67,135, 14,104,213,170, 21,106,106,106,156,162,203,108, 54, 59, 69, 22, 0,112, 28,135,206,157, 59, - 35, 61, 61,157, 60,243,204, 51,247, 1,152,126, 35,167,141, 36,180,166,177, 49, 90, 12, 12, 12,193, 2,165,244, 4, 33,164,125, -191,126,253,182, 46, 95,190,188,209,160, 65,131,208,172, 89, 51,225,238,187,239,142,174,173,173,237,235,214, 26,142, 24, 55,110, -220,190,243,231,207,167, 58,118,117,246, 66,219, 57, 36, 36, 68, 26,219,148, 91, 84, 84,212,201,189,155, 81,169, 84,174,253,229, -151, 95, 4,133, 66,129,189,123,247, 98,252,248,241,165,185,185,185,254,186,229,194,205,102, 51,100, 50, 25, 0, 32, 63, 63,223, -111,252,206,157, 59, 7, 81, 20, 77,158,254,227, 56, 78,185,127,255,126, 52,110,220,216, 39, 7,199,113,144,203,229,174,187, 42, - 88,206, 97,248,155,194,106, 54,155,209,169, 83, 39,228,230,230, 98,255,254,253, 78,193, 85, 90, 90,138, 11, 23, 46,212, 57,120, -207,158, 61, 56,112,224, 0,122,246,236,233,206,115, 67,106, 17,222, 17,161,215, 87,175, 94,205, 4, 22, 3, 3, 67,176,197, 86, -143, 59,239,188,115,203,162, 69,139,162,147,146,146, 16, 18, 18, 18,234,225,184, 75,132,144,195,130, 32,164, 6,202, 93, 84, 84, -116,216,211, 88,174,184,184,184,246,102,179, 25, 7, 14, 28,192,125,247,221, 87,226, 24,243,229,111,236,211,155,125,251,246,189, -115,221,186,117,145, 42,149, 10,135, 15, 31, 14,164,235, 48, 15,192, 28, 79,127,148,148,148,220,215,179,103,207, 41, 0, 34,189, -156,171, 77, 79, 79,239,190,111,223, 62, 57, 33, 4,121,121,121, 24, 53,106, 84, 57,128,127,177, 92,195,240, 55,197,107,195,135, - 15,255,244,241,199, 31, 15,235,218,181, 43,242,243,243,157,130,171,125,251,246,104,219,182, 45,126,255,253,119,172, 93,187, 22, - 7, 14, 28,128, 82,169, 68,179,102,205, 80,243,238,123,192,123,176, 74, 36, 55,170, 22,113,190,117,200,192,192,192,208, 32,149, - 12, 33, 45,228,114,249, 7,209,209,209,237, 10, 10, 10,158,165,148, 46,113,251, 63, 98,228,200,145,135,151, 46, 93, 26,159,151, -151,135,166, 77,155,174,164,148, 14,245,192,179,130, 82,122,215,153, 51,103,208,173, 91, 55,143,142, 22, 33,100,124, 92, 92,220, - 27,213,213,213,149,122,189,126, 84,160, 3,204, 9, 33, 45,154, 55,111,190,117,229,202,149,141, 52, 26, 13,142, 30, 61,218, 96, -131,225, 91,182,108,185,109,207,158, 61, 81,130, 32, 96,239,222,189, 24, 55,110, 28, 27, 12,207,112, 35,148,243, 16, 0, 47,164, -165,165, 61,255,232,163,143, 42,111,185,229, 22,228,231,231,163,164,164, 4,151, 46, 93,194,174, 93,187, 0, 0, 9, 9, 9, 72, - 72, 72,192,241,227,199,177,125,251,246,170,154,154,154, 7, 40,165,223,221,208,105,195,132, 22, 3, 3,195,159, 92, 33, 39,195, -101,176,248,200,145, 35, 59, 45, 94,188, 56,190,172,172, 12,187,119,239,198,136, 17, 35, 94,161,148,206,244,112,222,203,133,133, -133, 51, 0,224,208,161, 67,238, 99,180,188, 14, 78,175,143, 8, 74, 73, 73,217,186,108,217,178, 70, 81, 81, 81, 56,118,236, 24, - 70,141, 26,117,184,182,182,182,117,176,226,174,209,104,214, 21, 22, 22,246,151,203,229,216,185,115, 39,238,187,239, 62, 54,189, - 3,195,141, 86,190, 99, 0,188,122,203, 45,183, 60,242,224,131, 15,242,201,201,201, 40, 40, 40,192,207, 63,255,140,102,205,154, -225,252,249,243,216,184,113,163,185,164,164,228, 3, 0, 57,148,210,202, 27, 62, 81, 26,114,197,106,176,149,205, 25, 39,227,100, -156, 87, 30,183,246,200,145, 35, 84,130,221,110,167, 5, 5, 5,116,221,186,117, 52, 46, 46,238, 48,128, 80, 79,156, 0, 66, 91, -181,106,117,236,248,241,227,244,220,185,115,212, 98,177, 56, 57,142, 29, 59, 70, 1,108,190,214,112, 2,104,145,144,144, 80,188, -105,211, 38,122,252,248,113, 26, 23, 23,119, 62,152,113, 79, 73, 73, 41, 46, 41, 41,161, 63,255,252, 51,141,142,142, 46, 6,208, -130,229, 37,198,121, 35,114, 58, 26, 82,139, 59,118,236,104,159, 59,119, 46,125,228,145, 71,104,114,114,178, 29,192,127, 1, 36, - 52,164,246,184,222, 54,246,214, 33, 3, 3,195,159, 13,229,174, 93,187,160, 84, 42,157, 59,126,253,245, 87,215,121,180,170,188, - 52, 10,171, 8, 33,221, 6, 13, 26,180,117,238,220,185,173,172, 86,231,208, 14,108,218,180, 9, 0, 76, 65,104,120,158, 32,132, -244, 28, 56,112,224,156,168,168,168,118,133,133,133,175, 5, 51,226,121,121,121,207,182,105,211,102,102,117,117,117, 85,125,186, - 54, 25, 24,254,134, 38, 78, 30,128,177,132,144,183,247,239,223,255, 10, 0, 10,224, 77, 74,233,209,155, 45, 45,152,208, 98, 96, - 96,248,179, 49,254,161,135, 30,114, 31, 44, 30,208,204,240,142,129,243,217,131, 7, 15,118,159, 25,222,235,224,244,171, 17, 91, - 0, 6, 52,208,195,103, 9,128, 37, 44, 11, 48,220, 68,130,235, 48,128,123,110,230, 52, 96, 66,139,129,129,225,207,174,120,207, - 2,152,112, 13,231, 87,193,243, 60, 91, 12, 12, 12, 12,215, 29,216,162,210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, - 48, 48, 48, 48, 48,252,189, 64, 0,244,243,244, 7,165,116, 67,192, 36,132,244,171,239,133,253,241, 51, 78,198,201, 56, 25, 39, -227,100,156,140,243,198,227,244,199, 93, 31,253,241,183, 64,128,175,113, 18,246,234, 43,227,100,156,140,147,113, 50,206, 64, 56, - 29,141,120,130,203,189, 38,156,244,251, 58,159,142,128, 92,175,113,191, 89, 56,111,202,233, 29, 8, 33,206,196, 34,132,136, 0, - 68, 26,132, 25, 78, 9, 33,210,141, 8, 10, 31, 67, 3, 88,157,151,239, 17,249, 67,143,179,251,196,192,192, 80,175,186, 67,230, -242,176,181, 3,176, 19, 66,112,189,213, 37,193,124,206, 53, 68,220,111,102,206, 27, 5,188,175, 4,147,201,100,235, 26, 53,106, -212,187,180,180, 84,116,236,135, 66,161, 0,199,113, 16, 4,193, 80, 93, 93, 29,122, 21, 55,227,191,177,177,177,227,203,202,202, - 68,142,227,160, 82,169, 64, 8,113,114, 86, 84, 84,132,254,213,137,146,146,146,114,201, 96, 48,232,220,247,171, 84, 42,227,217, -179,103, 67,110,134,138, 82, 46,151, 15,143,140,140, 12, 47, 41, 41,161,210,226,183, 50,153, 76, 90, 8,215, 86, 81, 81,241,121, -160,124,145,145,145,123, 34, 35, 35,195,165,243, 9, 33, 40, 43, 43,171, 40, 42, 42,234, 2, 0,106,181,122,187, 86,171,141,226, -121, 30, 50,153, 12, 50,153, 12,122,189,190,172,180,180,180, 27,123,108,253, 61,177,124,249,114,217,192,132, 9,205,120,106,104, -203,113, 52, 76, 20, 73,165,141,168,127, 93, 91,240,223,211,129,156, 63,114,228, 72, 59, 75,197, 63, 15, 74,165,242,131,216,216, -216, 7,107,106,106,244,132, 16, 74, 8,193,229,199, 0,174,248,180,219,237,249,165,165,165,157,252, 60,108, 5,133, 66,241,126, - 92, 92,220, 56,189, 94,175,119,240, 81, 66, 8,226,227,227,235,240, 1,128,213,106,205, 47, 41, 41,233, 20, 72, 88, 99, 98, 98, - 22,168,213,234,127,232,245,250, 90,135, 48,114,237,161,113,125,152,255, 94, 82, 82,210,195,159, 48, 80, 40, 20,115, 98, 99, 99, -255,233,136, 59, 8, 33, 52, 58, 58,250,154,227, 30, 27, 27, 59,174,182,182,182, 78,220, 99, 98, 98, 60,114,122,139,187, 39, 78, -215,112, 18, 66, 16, 29, 29,125,205,225,188, 30, 57,111,120,161, 5,128, 35,132,172,232,214,173, 91,175,205,155, 55,115,199,142, - 29,227, 50, 50, 50, 96,183,219, 33,138,151,243,117, 98, 98,162,230, 42, 30,224, 11,123,244,232,113,239,150, 45, 91,184, 21, 43, - 86,112,157, 59,119, 6, 33, 4,118,187, 29,118,187, 29,173, 91,183, 86, 95,163, 64,208,241, 60,255,140, 66,161,184,205,102,179, -181, 2, 0, 65, 16,142,154, 76,166,205, 54,155,109, 54,165,180, 38, 16, 30,139,197,162, 41, 46, 46,190, 34,109,210,210,210, 20, - 87, 27,182,208,208,208, 29, 28,199,165, 57, 19,216, 33, 56, 60, 21,102,233,147, 82,122,166,164,164, 36,219, 27,103, 68, 68,132, -147,211, 27,135,251, 62, 81, 20,207, 20, 23, 23,103,251, 17, 89, 35,122,244,232, 17,182, 97,195, 6,114,254,252,121,162, 86,171, - 33,138, 34,236,118, 59,172, 86, 43,110,185,229,150,122, 77, 11, 18, 30, 30, 30, 58,105,210,164,102,119,220,113, 7,190,249,230, - 27,220,127,255,253,232,222,189,251, 73,233,127,173, 86, 27,117,228,200,145,244,200,200, 72,232,245,122, 84, 86, 86,162,127,255, -254,127,251,194,213,181, 67,210,155,132, 35,206,185,162,168,205, 94,190,235,151,130, 87,175,149, 55, 60, 60,252,128, 66,161,136, -149,238, 43,199,113, 30,239,181,235, 62,163,209, 88, 84, 90, 90,218,193, 79,249, 73, 1,112,167, 76, 38,107,206,243,124, 75, 0, - 41, 54,155, 45, 22, 0,228,114,121,145, 76, 38,203,179, 90,173,199,205,102,243, 41, 0, 63, 56, 38, 36,244,136,129, 9, 19,154, - 17,155,126,100,181, 73, 28,164,105,154,211, 66,255,251,164, 19, 26,165,254,199,129, 9, 19,150, 7, 42,182,254,194,134, 70, 11, - 0, 95,227,242,130,210,143, 56,230, 1,186, 22,190, 4, 0,119, 1,104, 33,151,203, 83, 45, 22, 75, 41,128,253, 0, 54, 80, 74, - 79, 18, 66,146,163,163,163,151,136,162,104, 42, 43, 43,155,224,105, 25,161,172, 78, 77,246,113, 28,151, 8,135,140, 16,169, 61, -127,231,190,243, 65,121, 64,201,100,178, 57,119,223,125,247, 63,151, 47, 95,174,217,191,127,191,166, 85,171, 86,206,250, 73, 20, - 69,184, 27, 17,169,169, 62,215,254, 38, 0,120,142,227, 62, 24, 57,114,228,152,197,139, 23,107,206,158, 61,171,105,220,184,177, -147,211, 85,196, 73,104,220,184,113, 64, 97,141,138,138,250,239, 29,119,220, 49,118,209,162, 69,194,202,149, 43,213,141, 26, 53, - 66, 84, 84, 20,228,114,249, 21,199,118,235,214, 77,244, 67,199,113, 28, 55,103,232,208,161, 99,151, 46, 93,170,217,189,123,183, -166,117,235,214,144,201,100,215, 28,247, 97,195,134,141,249,234,171,175, 52,191,253,246,155,166,121,243,230,224, 56, 14, 28,199, - 93,193,199,113, 28,146,146,146, 2,226,188,235,174,187,198,124,253,245,215,154, 3, 7, 14,104, 90,182,108,233, 76, 79,151,110, -187,122,135,243, 58,231,188,113,133,150,195, 70, 93,220,173, 91,183,129,155, 55,111,150, 1,192,129, 3, 7, 80, 94, 94,142,132, -132, 4,232,116, 58, 40,149, 74, 24,141, 70, 90,207,202,230,191, 14,145, 37, 0,192,183,255, 24,134, 51, 2,240, 68,177, 25,114, -185, 28,191,255,254, 59,100, 50, 25,189,134,202,172,103,104,104,232,162,239,190,251, 46,162, 67,135, 14, 92,105,105, 41, 82, 83, - 83, 81, 94, 94,222,101,203,150, 45, 29, 39, 76,152, 48,129, 16,114, 63,165,116, 75,160,156, 63,254,248, 35,180, 90, 45, 52, 26, - 13,180, 90, 45,204,102, 51,185,234,132,230,249,196,188,188,188, 24,157, 78, 7, 81, 20,157,155, 91,255,182, 19,162, 40, 34, 61, - 61,221,226,167,130, 76, 60,123,246,108,140, 90,173, 6,165,180, 14,159,221,110,135, 82,169,116,109, 57,192,110,183, 35, 45, 45, -205,226,207,201,146, 68, 22, 0,124,249,229,151,136,139,139, 67, 76, 76, 12,180, 90, 45,212,106,117,157, 7,123,128, 21, 57, 6, - 14, 28,136,215, 95,127, 29, 57, 57, 57,120,225,133, 23,234, 84,180,130, 32, 32, 50, 50, 18,107,214,172, 65,104,104, 40,146,147, -147, 33, 8,194,223,223, 25,228, 72,228,206,125,231,156, 14,237,237,125, 50,248,174, 29,147, 63,116,220, 97,112, 28, 32,138,151, - 31,157,132,128,218,172,226,165,189,191, 22,188, 22, 64,122, 54, 62,123,246,108,140,235,204,234,190, 96,183,219,145,144,144, 32, -243, 83,126, 6,101,102,102,126,251,216, 99,143,201,155, 55,111, 78,228,114, 57,120,158, 7,207,243, 82,126, 76,166,148, 38,139, -162,216,171,168,168,136,206,155, 55,239,109, 66,200,221,148,210, 31, 61,230,119,106,104, 91,109, 18, 7,109, 61,136, 46, 35,251, -189,132, 53,203, 38,117,233,209, 94, 68,136,198,112, 26,192,117, 43,180, 8, 33, 45, 50, 51, 51, 15,238,222,189, 91,101,177, 88, -208,181,107,215, 93,132,144,142, 87, 51,131, 59, 33, 36, 2,192,123,147, 39, 79, 30,251,216, 99,143,201,194,195,195,161, 80, 40, - 80, 93, 93,141,211,167, 79,143,251,252,243,207, 41, 33,228,223, 0, 66,242,242,242,178,246,236,217,131,222,189,123, 63, 5,224, -153, 43, 21,129, 44,113,251,158,220, 24,233,247, 93, 3,219,200,179, 59, 39, 23, 93,110,144,185, 31, 77, 33,218,197,252,221, 7, -243, 59, 5, 16,198,183,135, 15, 31,126,223,242,229,203,117, 0, 48,127,254,124, 12, 31, 62, 28,145,145,145,208,104, 52,144,203, -229, 16, 4,161,206,167, 31,135, 72, 6,224,237,123,238,185,103,228,226,197,139, 67, 0, 96,241,226,197, 24, 54,108, 24,162,162, -162, 16, 18, 18, 2,133, 66, 1,153, 76, 86,239,123, 19, 21, 21,245,223,238, 93,186, 60,176,104,209, 34, 0,192, 43, 79, 63,141, - 59,110,189, 21, 58,141, 26, 26,181, 2, 82, 90, 40,100, 2,110,127,226, 73,127,241,230, 0,188, 59,124,248,240,209, 75,151, 46, - 13, 1,128,253,251,247,163,184,184, 24,177,177,177, 80,171,213, 80, 40, 20,206, 56, 19, 66,160, 86,171, 3,138,251,240,225,195, - 71,126,245,213, 87, 33, 0,176,112,225, 66, 12, 28, 56,208, 25,119,165, 82, 9,185, 92, 94,103,115, 23,157,158, 56,239,190,251, -238,145, 95,127,253,117, 8, 0,124,254,249,231,232,215,175, 31, 34, 34, 34,156,233, 41,113,213,231, 30, 93,207,156, 55,180,208, -146,198, 78,197,198,198,142,222,186,117, 43,231, 34, 18,160, 84, 42,161, 84, 42,161, 80, 40,156,221,135,245,168,112, 72,108,108, -236,248, 45, 91,182, 56, 79, 50,211, 43,172,235,122, 63,192, 93,248,251,245,238,221,251,171, 85,171, 86,169,228,114, 57, 12, 6, - 3, 14, 31, 62,140,176,176, 48, 40, 20, 10, 12, 29, 58, 84,214,173, 91,183,168, 94,189,122,125, 67, 8, 25, 19,200, 27, 13,148, - 82,232,116,186, 58, 66,235, 90,187,152,213,106, 53, 86,174, 92, 9,153, 76,230,177, 2,115,253, 30, 19, 19, 19, 72,188,161, 84, - 42,177, 99,199, 14,200,100, 50, 8,130, 0,158,231, 33, 8, 2, 86,175, 94,141,231,158,123, 14,165,165,165, 32,132, 64, 16, 4, -132,132,248,237,245, 36,145,145,145,225,146,200,146, 68,144, 90,173,134, 32, 8,132,231,121, 34,117,237, 17, 66, 72,160,125,238, - 28,199,225,139, 47,190,192, 91,111,189,133, 23, 95,124, 17, 11, 22, 44, 64,219,182,109, 93, 69, 40,170,170,170, 16, 17, 17,129, -136,136, 8,168, 84,170,171,206, 11,215, 19,220, 83,231,253,217,115, 53, 16, 41, 46, 15, 2, 17, 1, 17,160,160, 16,169,136,162, -130,211,152,250,250, 59, 1, 63,125,148, 74, 37,182,111,223,238, 20, 67, 60,207,131, 16, 2, 87,129, 36,109,113,113,113,126,249, -228,114,249,180,239,191,255, 94,241,197, 23, 95, 96,233,210,165,206,188,165,213,106, 17, 30, 30,142,168,168, 40,231,150,152,152, - 72, 62,253,244, 83,121,219,182,109,167, 1,248,209,243, 61,167, 97,154,166, 57, 45, 70,246,123, 9, 0, 48,242, 37,138, 75, 39, -103,180,227, 42, 94, 11,187,158, 69, 86,155, 54,109,182,237,216,177, 67,165,215,235, 33,138, 34,126,252,241, 71, 77,191,126,253, -182, 18, 66,122,212, 87,108,165,164,164,172,220,177, 99, 71,183,232,232,104, 84, 86, 86,162,170,170, 10, 86,171, 21, 50,153, 12, -201,201,201,120,251,237,183,201,208,161, 67, 39,142, 27, 55,206,168, 86,171, 37,103, 35,197, 91,125,228,138,121,255,250, 48,156, -210,203,249,135,138,180,206,103,121,113, 30,158,126,118,106, 64, 97, 76, 74, 74,122,228,155,111,190,209,185, 58, 75,174, 34,192, -181,142,146, 54,111,194,192,225,106,112, 77,154, 52,121, 96,201,146, 37, 78,206, 70,141, 26, 57,235, 37,158,231,193,113, 28,182, -110,221,138, 89,211, 38, 35, 34,186, 49,230,254,107,190,223,112,186,213,201,155, 0, 0, 32, 0, 73, 68, 65, 84,198,196,196, 44, - 24, 52,104,208, 63, 22, 46, 92,232,220,215,166,105, 83, 12,238,118, 43, 98, 26,133,162, 81,196,229,186,141,138, 4,191, 30,207, -245,251, 60, 2,192, 37, 37, 37, 77, 88,182,108,153,206,181, 65, 40,197, 21, 0,244,122,189,211,197, 55,155,205,232,212,169, 83, - 64,113,119,229,148,220, 54, 73,180,185,215,245, 82, 67,198, 23,103, 82, 82,210, 3,146, 16, 6,128,200,200,200, 58, 28,130, 32, - 96,217,154, 69, 87, 60, 27,174,149,179,190,247,221,157, 51, 47, 47, 15, 51,103,206,116,214, 73,146,171, 71, 8, 65, 66, 66, 2, -230,206,157,235,139,211, 19, 58, 3,136,118,249,109, 6,160,112,249, 44,193,229, 21, 38,220,143,147,246, 11, 0,218, 57,254,179, - 3,168, 6, 16,238,129,207, 27, 79, 41, 46, 47, 35, 20,237,118,188,251,117, 60, 11,173,213,171, 87, 83, 0, 88,185,114,101,239, -187,238,186,107,123,105,105,169,120,236,216, 49,110,255,254,253, 16, 4, 1, 49, 49, 49,232,220,185,179,212,173, 6, 65, 16,160, -213,106, 73,120,120,120,145,244,224,149, 18,209,181,175,221, 69,208,112,229,229,229,226,250,245,235,185,197,119, 15,128,153, 2, -237,167,204,194,192, 33, 67,176, 54, 65, 1, 25,128, 46,199, 74,161,209,104,120, 65, 16,172,210,205,144, 56, 93,199,110,185,139, - 36, 66, 72,136, 86,171,253,244,135, 31,126, 80,113, 28,135,234,234,106,136,162,136,110,221,186,129,227, 56, 28, 58,116, 8,175, -188,242, 10,190,253,246, 91,124,255,253,247,234, 14, 29, 58,124, 74, 8,105, 69, 41,173,118,169,196, 54,120,202,164, 33, 33, 33, -208,104, 52, 78,161, 37,197,217,213, 2,151,142,167,148, 22,148,150,150,118,244,197,105,183,219, 49,108,216, 48, 16, 66, 32,147, -201,234, 84, 62,174,159,114,185, 28,135, 14, 29,186, 34, 19,122, 18,136,162, 40,162,123,247,238, 0, 0,141, 70, 3,157, 78, 39, -173,251, 6, 0,104,223,190, 61,204,102, 51, 26, 53,106,132,163, 71,143,122,170,192,235,112,150,148,148,208, 11, 23, 46,144,197, -139, 23, 67, 16, 4, 68, 69, 69, 65,163,209,144, 69,139, 22, 77,150,203,229,137, 70,163, 81, 52,155,205, 80, 40, 20,115, 37,119, -139,231,249,218,202,202,202, 40,111,156, 50,153, 12,143, 61,246, 24,158,127,254,121, 44, 88,176, 0, 15, 63,252,240, 21,142,151, -209,104, 68,163, 70,141,156, 98, 43,144,184, 95,187, 16,106, 96, 78,145,226,240,129,181, 56,242,219, 6,136,118, 17,118,145,130, - 82, 59, 68, 27,176,127,253,174,244,139,103, 46, 36, 80, 80,192,209,193,161,172,172,177,245,106,164,108, 9, 96,197,166, 82,211, - 7,254,242, 39,207,243,176, 90,173,248,225,135, 31,112,250,244,105,172, 91,183, 14, 6,131,193,153,142, 89, 89, 89,120,224,129, - 7, 60, 10, 45,119, 78, 74,233,194,243,231,207,183,239,222,189, 59,169,168,168, 64, 69, 69, 5, 12, 6, 3,236,118, 59,108, 54, - 27,120,158,135, 74,165,130, 90,173, 70,108,108, 44,140, 70, 35, 53,153, 76, 11,189,113,138, 34,169,212,255, 62,233,196,154,101, -147,186,140,124,137, 98,249, 91, 4,205,154, 40,245, 63,237, 11,121, 96,197,182, 23,250, 3,160,162, 67, 59,112, 0,181,218,197, -210,231, 39,191, 55,241, 79,191, 71, 87,138,172, 40,131,193,128,234,234,203,213,131, 66,161,192,242,229,203, 27,221,121,231,157, - 91, 8, 33, 61,189,137, 45, 79,156, 33, 33, 33,201, 50,153, 12,135, 14, 29,194, 71, 31,125,132,159,126,250, 9, 69, 69, 69,151, - 26, 55,110, 28,214,171, 87, 47,238,233,167,159, 70,251,246,237,241,217,103,159,169,252,113, 82, 74,145,119,114, 43,242, 78,109, -131, 40, 82, 23, 87,220,243,119, 26, 96,220,107,107,107,141, 7, 15, 30,212,125,242,201, 39,136,137,137, 65,106,106, 42, 52, 26, - 13, 84, 42, 85,157,135,172,235,131,215, 95,217, 52, 24, 12,198,188,188, 60,221, 87, 95,125,133,168,168, 40,164,164,164, 64,163, -209, 64,161, 80, 56, 27, 4,139, 23, 47,198,151,175,223,135,188,227,191, 97,216,224,254,126,195,169,209,104,254,177,112,225,194, - 58, 22, 72,108, 68, 4,120,129,131, 76, 32,136,232,123, 55, 0,224,210,207,223,121,157, 29,210,141,147, 84, 87, 87, 27,119,239, -222,173,219,183,111, 31, 68, 81, 68, 74, 74, 10,244,122, 61, 66, 67, 67,157,241, 95,191,126, 61,134, 14, 29,138, 47,190,248, 2, - 89, 89, 89,126,227, 94, 83, 83, 99,252,237,183,223,116, 75,150, 44, 65,100,100, 36,146,146,146,156,113,151, 54, 65, 16, 32,147, -201,144,150,150,134,202,202, 74,232,116, 58,191,247,104,255,254,253,186, 37, 75,150, 32, 34, 34, 2,137,137,137, 78,199, 77, 18, - 71,111,125,248,122, 29, 14, 21,137,191,102,206,250,222,119,119,206, 97,195,134,161, 89,179,102, 8, 13, 13,133, 86,171,117,114, -251,226,148,180, 8,128, 94,131, 7, 15,222,236,118, 11,163, 9, 33,171, 92,174, 63,132, 16,178,202,245,211,219,113,142,175, 61, - 39, 79,158,220, 41, 39, 39,103,102, 86, 86,214, 87, 59,118,236,248,210, 27,159, 55,158,201,147, 39,103,230,228,228,204,116, 61, -222,195,117,188, 59, 90,131, 7, 15, 38,142, 72,242, 0,144,145,145,129,242,242,114, 40,149, 74,116,238,220, 25,165,165,165,208, -233,116,144,203,229,160,148, 98,226,196,137,178, 23, 94,120, 33,134,227, 56,216,108, 54,103,197,239,165,175, 93,228, 56, 14,217, -217,217, 56,236,232, 17, 26, 56,100, 8, 18, 19, 19, 33, 13,242, 80,169, 84,152, 56,113, 34,121,238,185,231,120,201,205,160,148, -194, 96, 48, 32, 62, 62, 94,237,163, 75,238,233,111,190,249, 38, 76,178,228,165,174, 51,153, 76,134, 99,199,142,225,221,119,223, -197,184,113,227,112,238,220, 57, 52,110,220, 24,207, 63,255,188, 46, 39, 39,231,105, 0,111,248,171,144,117, 58,157, 83,100,105, - 52, 26, 60,253,244,211,124,183,110,221, 98,116, 58, 29, 66, 66, 66, 32,117, 3,218,237,118, 52,109,218,212,175, 52, 23, 69, 17, -107,215,174, 5,207,243,126, 29, 45, 71, 6, 12,136,115,247,238,221, 78,145,230,218, 74, 34,132,224,240,225,195, 78, 81, 23, 0, - 39,229, 56, 14, 90,173, 22,113,113,113, 80,171,213,208,104, 52,228,171,175,190,122, 53, 53, 53, 53,254,185,231,158,227,170,170, -170,184,236,236,108, 12, 31, 62,156, 23, 69, 17, 22,139, 5,153,153,153,126,157,183,205,155, 55,227,163,143, 62,194,195, 15, 63, -236,209,209,146, 6, 75,134,134,254,229,239, 66, 4, 13, 34, 0,139,205, 10,125,141,193,217,181,107,183,219,241,219,166, 95,210, -207,252,114, 50,115,213, 87, 95, 8, 0, 96,220,244,157,235,105,241,195, 63,252,186, 69,175, 72,249,238, 77,229,150,221,254,156, -194, 39,159,124, 18,175,189,246, 26,238,185,231, 30,172, 95,191, 30,175,188,242, 10, 38, 76,152, 80,199,209, 10, 4, 86,171,245, - 63,247,223,127,255,195,203,151, 47,111,249,210, 75, 47,113,146,163,165,209,104,164, 49, 94, 48,153, 76, 48, 24, 12, 56,126,252, -184,248,208, 67, 15,157, 48,155,205,255,241,198,103, 35,234, 95, 53, 74,253,143, 77, 19,185,102,181,185,239,132,116,191, 53,197, - 64,212, 29, 43,239,110,209,143, 14, 26,159, 18, 1, 74, 65, 69, 64,164,128,201, 84,139,137, 19,159,146,253, 85,247,201, 85,100, - 25,141, 70, 28, 60,120, 16,189,123,247,198,249,243,231,113,244,232, 81,164,167,167, 99,209,162, 69,209, 99,198,140,241, 41,182, -220,241,219,111,191, 77,110,215,174,221,156,154,154,154,242,154,154,154, 57, 0,190,164,148, 86, 16, 66, 90,157, 62,125,122,222, -218,181,107,123, 76,157, 58, 85,230, 54, 70, 71,230,205, 30,181, 90,109, 48, 24, 76, 62, 5,150,244,155, 82, 49,208,184,211,150, - 45, 91,226,206, 59,239,132, 32, 8,206,198,154,107,183,153,187,224,242, 85,127, 0, 16, 9, 33,104,220,184, 49, 6, 13, 26, 4, -185, 92, 94,135, 83,122,176, 14, 26, 52, 8, 79,190, 49, 5,255,121,178, 15, 62,186, 63, 29,253,222, 44,242, 25, 78,189, 94, 95, -179,113,227, 70,245,243, 15, 63,140,118,205,155,163, 81,104, 40,154,196, 70, 67,173, 84, 64,238, 26, 38,226,223,100,167,148, 82, - 66,136, 40,147,201,208,186,117,107, 20, 21, 21, 33, 55, 55, 23,185,185,185,224, 56, 14,221,187,119,119,186, 48,167, 78,157,194, - 27,111,188, 1,147,201, 20,112,220,155, 55,111,142, 62,125,250, 64,161, 80, 64,163,209,212,233, 50,148,210,180,186,186, 26,205, -154, 53,195,138, 21, 43,208,162, 69, 11,191,156, 25, 25, 25,184,237,182,219,234,164,167, 90,173,118, 62, 55, 0,224,252,238, 26, -231, 53, 18, 18, 18,234,197,185,110,207, 57,124,178,126, 35, 76,102, 17, 85,122,107,157, 19,226, 27,133, 98,219,146,151, 2,138, -187,196,249,241,199, 31,163,162,162,194, 89, 7, 73,166,137,100, 82, 36, 37, 37, 97,254,124,207, 78,166,139, 22, 33, 94,238,223, -144, 0, 27, 84,210,113, 82,230, 82,230,228,228,204,116, 63,223, 31,159,235,255,110,231,155,221,196, 89, 81, 64, 93,135,210,243, - 65, 42, 12, 9, 9, 9,144,198,129, 72, 5,197, 89,145,218,108,248,246,219,111, 17, 19, 19,227,220,194,194,194,188,102,108,105, - 28,209,147, 37,151,135, 8,173,105, 44, 71, 30,128,193, 37,212, 57,142,196,110,183,227,155,111,190,129,171,144, 9, 9, 9,241, -217,141,164, 80, 40,122,117,238,220,153, 51,153, 76, 87,136,172,156,156, 28,140, 25, 51, 6, 45, 90,180,128, 40,138,168,169,169, - 65,239,222,189,133,185,115,231,246,170,143,208,210,104, 46,143,251, 55,155,205,216,180,105, 19, 34, 34, 34, 16, 21, 21,133,200, -200, 72,132,132,132, 72,111, 78, 82,127, 98,131, 82,138, 97,195,134, 57, 51,159,171,139,229, 46,186,118,236,216, 17, 80,151, 28, -165, 20,183,222,122, 43,180, 90, 45,116, 58, 29,116, 58, 29,214,174, 93,235, 60,166, 75,151, 46, 16, 69, 17, 49, 49, 49,216,185, -115,167,207,238, 79, 74, 41,149,203,229,206,227, 5, 65, 32,139, 22, 45,154,156,150,150, 22,255,236,179,207,114, 50,153, 12, 7, - 14, 28,192,145, 35, 71,144,146,146, 18,240,152,173,138,138,138,139,147, 39, 79,182, 79,158, 60, 25, 0,144,153,153,137,138,138, -138, 98,233,255,170,170,170,178, 1, 3, 6,212, 25,183, 81, 90, 90, 90,246,255,236, 93,119,120, 20, 85,251, 61,119,182,239, 38, -217,108,122, 33, 16,186, 8,136, 20, 65,248,232, 37,128,116,148, 46,136, 8, 40, 69, 84,252, 40, 34,242, 83, 64, 66, 47, 74, 85, -228,163, 40, 18,154, 32, 69, 32,210,155, 8, 8, 72,139, 68, 32, 36,164,215, 45,217, 58, 51,247,247, 71,118,227,102,179, 73, 54, - 33, 34,224,156,231,153,103,119,218,153,123,103,238,189,115,230,189,239,125,239, 83, 47,180,120, 30,172,149, 69,190,201, 4,189, - 46,191,208, 58,148,158,156,166,153,246,225, 7,146,197, 19,223, 4, 0,124,184,124, 37,116,235,254,106,200,118,127, 56, 36,184, -255,146,109,211, 1,244, 45,227,229, 3,179,217,140,200,200, 72, 92,184,112, 1, 58,157, 14, 93,186,116, 41, 98, 49,117,220,211, -178, 76,244,148, 82, 11, 33,164,117,175, 94,189,126, 93,182,108, 89,173,250,245,235, 19,131,193,128,252,252,124, 56,255, 94,187, -118,141,110,221,186,245,110,126,126,254,127, 40,165,150,146,248, 14, 61,252, 38,190, 91,149,183,118,252,124, 89,212, 43,184,118, -156,250, 97, 78, 45, 54,235,161,220,160, 53,222, 54,113,244, 6, 40, 7,112,224, 65, 89, 30,156,189,219,235,159,130, 82,169,252, -242,244,233,211, 1, 38,147, 9,151, 46, 93,194,240,225,195, 45,153,153,153, 50, 0,120,253,245,215, 45, 91,182,108,145,213,174, - 93, 27,155, 55,111, 14,122,245,213, 87,183, 3,120,193,195,134,254, 91, 0,223,186,110, 15, 8, 8,248,226,193,131, 7, 29,156, -125,126, 28, 31,171, 0,220,126, 84, 82, 30,176,217,108, 48, 26,205,200,203,211,193, 98,181,217,219, 76, 30, 28,199,218,127,121, -176,246,118, 84, 38, 21,251, 52,107, 20,166,167,148,130, 33, 36,247,226,181,148,170, 37,181, 75, 37,117,113,121, 98,205,114, 3, -206, 49,202, 44, 32, 32, 0, 18,137, 4,223,126,251, 45,174,158, 57, 4,153,136,130, 99,109, 96,109, 86,112, 54, 11, 36, 34, 17, -126,190,124, 15, 81,207,151, 61,144,155, 16, 66, 3, 3, 3,209,179, 85, 43,244,106,213,170, 96,120,155, 88, 12,111,185, 28, 42, -169,162,192,146, 5,128,114, 12,224, 89, 81,226, 29,233, 12, 9, 9,193,197,139, 23, 49,105,210, 36, 44, 88,176, 0, 74,165,178, -112,244,243,173, 91,183, 16, 19, 19,131,168,168,168,114,231,221, 97,193,155, 62,125, 58,146,147,147,177,124,249,114, 52,107,214, - 12, 18,137, 4,185,185,185,248,207,127,254,131,180,180, 52,143, 56,157,187,247,100, 50, 89, 17,235,147, 67, 0,150,247, 25, 57, -115,190,217, 47, 12,123,207,108, 5, 1,193,249,239, 62, 40,242, 46, 90,179,237, 84,185, 57,103,205,154, 85, 36,157,158, 88,179, -202,241, 97,180,207, 19,177,229,116,220, 37,135,177,117,250,244,233, 51, 8, 33,251,166, 79,159, 62, 35, 58, 58,250,186, 39,124, - 37,236,223,239,208,133, 78,219, 46,121, 44,180, 40,165, 84, 38,147,129,231,249, 34,226,202,213,241,214, 97, 10,116, 54, 53,150, - 37, 10,120,158, 47, 44, 20,174,159,109, 34,145, 8,231,206,157,195,185,115,231,138,108, 95,191,126,125,169, 47,114,150,101,235, -251,248,248, 20,177,102, 73,165, 82, 76,159, 62, 29,195,135, 15, 47, 20, 89, 82,169, 20, 27, 55,110,196, 75, 47,189, 4,139,197, - 82,191, 12,127,149,252,208,208, 80,198,209, 16,121,121,121,145, 73,147, 38,137, 88,150, 45,188, 39,142,197,225,187, 86, 86,161, -113,140, 98, 57,124,248,176, 71, 22, 45, 79,125,148, 40,165,184,114,229, 74, 17,241,230, 24, 53, 3, 0, 87,174, 92, 41,244,223, -242,132, 83, 36, 18,129,227, 56, 40,149, 74, 34,149, 74,137, 84, 42,141,112,136, 44,145, 72, 84,248,188,157,125,246,202,202,251, -195,135, 15, 59,150,182, 63, 61, 61,253,153, 13,227, 96,181,217, 96,204,183, 64,167, 55,226,179,232,255, 21,108,252, 12,191, 0, -248,165,245, 59,147, 48,190, 91, 84, 39, 23, 63, 0, 79, 26,154,194,151,227,206,157, 59, 33,145, 72,176,103,207, 30,168,213,106, -244,233,211, 7,106,181, 26,211,166, 77,195,224,193,131, 61,182,104,217,203, 82, 30, 33,164,245,251,239,191,255,235,162, 69,139, -170, 85,173, 90, 21, 22,139, 5, 86,171, 21, 22,139, 5,241,241,241,216,186,117,107, 98,126,126,126,107, 74,105, 94, 89,124,135, - 30,126, 19,191,235,228,135,201, 93, 6,191,106,188,149,246, 19, 82, 83,179,192,178, 15,193,115, 44,172,108,193, 8,102,142,101, -193,178, 28,164, 82,145,122,209,231, 31, 28,225, 65,193, 48,196, 50, 96,192,128, 87, 30,215, 51,210,104, 52, 13, 51, 50, 50,240, -199, 31,127,224,141, 55,222, 72,205,202,202,186, 9,160, 51, 0,100,101,101,157, 30, 62,124,120,253, 77,155, 54,133,214,168, 81, - 3,222,222,222,106, 15,158,143, 55,128,241, 0,186,218,253, 64, 28,200, 6, 48, 39, 40, 40, 72,126,233,210,165, 98,214,255,147, - 39, 79, 2,192, 47,238, 77, 6,118,139,150,201,132,140,172, 28,140,126,103,102,161, 41, 1,160, 69,196, 5, 5,197,184,119,161, - 0,128,204,180,120,188, 57,122,146,188,172, 15, 2,119, 47,194,114,248,232, 56, 91,138, 10,203,168,183,183,119, 65,247,219,158, -173,216,191,228, 29,128,179,130,218,140,128, 53, 31,176,234,193, 91,242, 65,164, 74,192,102,244, 72,104,121,123,123,195, 91,169, - 68,176, 70, 83, 16, 4, 82, 36,130, 68, 34, 6,111, 3, 8, 71, 10, 5, 41,207,121, 84,214,105, 96, 96, 32,120,158,135, 82,169, -196,253,251,247, 49,126,252,120, 88,173, 86,244,235,215, 15, 22,139, 5, 38,147, 9, 70,163, 17, 53,107,214, 68,126,126,190, 71, -121,119,180,243,142,222,159, 15, 62,248, 0, 47,189,244, 18,102,207,158,141,169, 83,167,162,102,205,154, 24, 55,110, 28,182,110, -221,138,134, 13, 27,150,202,235,124, 63, 29,156,142,231,226,218,197, 7,160,220,207,200,149,179, 96,124, 0,138, 61,247,247, 70, -116, 46, 55,231,252,249,243,145,145,145, 81,204,146,229,248, 95,165, 74, 21,172, 94,189,186,162, 93,255, 14,235, 81,136, 59,131, -152, 27, 75, 84,115, 20,248, 78,153,163,163,163,175, 71, 71, 71,247, 34,132,236,139,142,142,238, 85,138, 69,171,103, 25, 22,175, -158, 40,240,201,242, 8, 98,151,190,209, 14,206,150, 18,199,139,212,241, 66,119,110,228, 85, 42, 21,118,237,218, 5,199, 8, 16, -231, 99, 74, 19, 90, 7,130,236,166, 99,187, 37,203,121,189,119,239,222,168, 81,163, 70, 17,107,150, 82,169, 44,181,240,240, 60, -143,132,132, 4, 92,191,126, 29, 45, 91,182, 68, 94, 94, 30, 36, 12,131, 15,175, 93, 67,131, 17, 35, 96,177, 91,104,100, 50, 25, -222,126,251,109,143, 28,218,239,221,187,231,231,188, 30, 24, 24,152,212,182,109,219, 42, 23, 46, 92, 40,116,144,183,119,171, 21, - 10, 14, 79, 68, 12,165, 20,175,189,246, 90, 17, 43,150,179,200,114, 94,126,250,233, 39,143,186, 14, 41,165,104,219,182,109,161, - 53,203,199,199, 7, 63,252,240, 67,225,179,106,215,174, 93,129, 63, 67, 72,136, 71,156,142,124,216, 29,224, 97, 50,153,120,157, - 78,199, 92,186,116, 9, 50,153,172,208,130,167, 84, 42,161, 80, 40, 32,151,203, 43, 52,130,232,223, 0, 74,121, 88,108, 54, 24, -141, 70,232,245, 5,145, 69,226,127,223, 89, 84,136,153,181, 21,230,119, 88,173,116, 58, 29,126,254,249,103,236,222,189, 27,205, -154, 53, 43,230, 12,239,137, 69,203,169, 60,101, 16, 66,218, 76,153, 50,229,252,220,185,115,195,253,253,253, 97,181, 90,241,224, -193, 3,108,216,176, 33, 57, 63, 63,191, 13,165, 52,195,243,155, 0,216,108, 44, 76,249,102,228,105,117,248,244,243,141, 37, 22, - 61, 0,200, 78,191,141,222,125, 6,202, 30,231,115, 74, 78, 78,158,220,166, 77,155,207,117, 58, 93,110,126,126,254, 64, 0,139, -157, 13,135, 89, 89, 89,109,251,244,233,179,204,223,223,191, 89,122,122,250, 12, 15, 40,167,223,191,127,127, 70,100,100,100,145, -141,118,235,227,115,233,233,233,195,218,181,107,247, 9, 0,127,167,221, 62, 0, 14, 3, 88, 93, 82, 89,114,116, 29,234,245, 70, -168, 53, 97,120,120,239, 68,153, 9,145,138, 76,160, 60, 95,230, 7,160, 59, 43,150,115,251, 84,142,242, 67, 29, 62,129,142, 23, -246, 43,175,141,192, 43,227,231, 67, 37, 1,230,189,217, 26, 53, 53, 0,148,254,144,182,155, 6,162,177,223,163,241, 63,122,196, - 63,117,237, 90, 92,254,163, 32, 50, 76, 68, 80, 16,166, 12, 30, 12,106, 3,206,222,184,129,109,199,142, 97,112,199,142, 80, 41, - 20, 30,127,176, 56, 62,194,227,227,227,113,246,236, 89, 60,255,252,243,184,115,231, 78,145, 48, 20,148, 82,143,242, 79, 41,165, -142, 65, 76,114,185, 28, 18,137, 4,169,169,169,232,213,171, 87,225,135,254,137, 19, 39, 48,101,202, 20,140, 26, 53, 10, 29, 58, -116,112,235, 55,235,202, 25, 20, 20, 84,104, 64,112, 29,168,224,220,157, 91,158,103,228,142,211,129,138, 62,119,103,206,185,115, -231,186, 29, 80,225, 9,167,179, 22, 41, 5,151, 92,172, 73,112,248, 75, 57,132,145,235, 58, 0, 63,199,182,233,211,167,207,240, -244, 60,231,117,135, 69,172, 60, 93,152,133, 66,171,103,207,158,196,221,203,214, 97, 70,118, 7, 47, 47, 47, 76,152, 48, 1,179, -102,205, 66, 96, 96, 96,153,190, 53, 14, 37, 91, 26,126,252,177,120,101,219,179,103, 79, 89, 93,135,183,124,125,125, 95,234,216, -177, 35,242,242,242,144,152,152, 8, 47, 47, 47, 52, 88,178, 4,215,198,143, 71,227,181,107,193,116,234, 84, 24,108,245,218,181, -107, 80, 42,149,183,202,107, 65,240,241,241,129,159,159, 95, 97,159,187, 67,112, 57, 89,180,168, 7,133, 17, 7, 14, 28,112,251, -213, 88, 17, 31, 45, 71, 35,112,254,252,249, 34,254, 89,206,194,231,252,249,243,133, 22, 45,199,105,158,116,121, 41,149, 74,234, -224, 83,169, 84,240,247,247,135, 92, 46,135, 82,169, 44, 34,178, 60,177,230,149, 21,144, 84,169, 84, 94,240,242,242,210, 56,246, - 75, 36, 18,232,116,186,220,172,172,172, 22, 79,117,215, 33, 40, 88, 43, 11,163,209, 4,189,206, 88,233,252,142,129, 41,187,118, -237,194,203, 47,191, 92, 76,100, 57,238,117, 5,190, 24,147, 8, 33, 29, 86,172, 88,241,203,210,165, 75,253,244,122, 61,254,247, -191,255,229,233,245,250, 14,148,210,164,114,113,241, 20, 54,171, 21,249, 38, 51, 12,250,130,123,240,231,245,157, 79,152, 32,166, - 91, 1,108,117,181, 24, 58,237,255, 19, 64,175,114, 80,190, 28, 25, 25,137,212,212,212, 34, 27, 19, 18, 18,192,113,156,217, 30, - 39,235, 45,167,235,137, 40,165, 92, 89,109,135,213,222,117,168,215, 23, 88, 65, 76,134,204,202, 41,167,118,177, 81,146, 79, 86, - 69,186,120, 28, 35,157, 69, 34, 17, 38, 78,156,136,107, 87,175,162,115,184, 22, 53, 67,125, 64,181, 15, 33,237,244,127,184,146, -161,196,226,101, 7,202,205, 29,227, 52,216,103,113, 76,140,219,125,127,246,237, 91,174,188,199,197,197, 65,169, 84,130,227,184, - 98,239,155,242,230,223, 89,192, 44, 91,182, 12, 83,166, 76,193,198,141, 27,113,237,218, 53, 52,110,220, 24, 93,186,116, 65,122, -122, 58,174, 94,189, 10,179,217,236,113, 58,157,253,230,226,238,222, 64,236,217,131, 72, 72,186,135,228,212,196, 10, 63,119,103, - 78, 87,161,181, 43,246, 55,188, 22,213,180, 66,156,159,126,250, 41,210,211,211,139, 88,178,156, 7,144,149,100,209,114,213, 34, - 46,200,116,241,133,114,172, 91, 92, 68,143,235,186,235,241, 0,144, 14, 64, 84,198,121,174,235,153,209,209,209,199, 29,150, 48, - 59,175,168, 44,255, 44,183, 93,135, 14, 81,228,168, 40,174,150, 42,199,127, 47, 47, 47,248,248,248,192,199,199, 7,106,181,186, - 76, 75,145, 67,104,181,189,171, 43,226,235,229,176,108, 1,192,168, 81,163,138, 89,180,156, 3,123,186,131,217,108, 62,113,226, -196,137, 38,189,123,247, 22,221,186,117, 11, 34,145, 8, 60,207,195,210,170, 21, 26,175, 93,139,223, 63,248, 0,237,239,223,135, -201,106,133, 66,161,192,161, 67,135,172,249,249,249, 39,202,219,110, 56, 11, 45, 47, 47, 47,248,250,250, 22, 10, 13, 79, 84,186, -163,242,150,230,255,224, 88,156, 7, 3,120, 82,169, 29, 47, 84,103,191, 28, 66, 8,140, 70, 99,161, 83,167, 39, 86, 71,231,174, - 67,231, 10,200, 48, 12, 52, 26, 77, 97,227,225,176,104,121,106,205, 43, 43, 32,169, 74,165, 82,223,190,125,187,182, 35,252, 68, -102,102, 38, 58,117,234,244,199, 83,111,210,226, 1, 43,203, 65,111, 52, 65,111,204,175, 52, 90, 71, 89,251,246,219,111, 17, 31, - 31, 15,171,213,138,232,232,232, 98, 2,171, 60,206,240,110,202, 85,124,211,166, 77,249,238,221,187,227,252,249,243,144,203,229, - 54, 74,105,185,227, 95,241,148,135,149,101, 97, 50, 26,161, 55, 24,254, 45,198,204, 66, 85,125,243,230, 77, 88, 44, 22,204,158, - 61,155,251,245,215, 95,143, 3,120,199,254, 12, 25, 0,195,218,183,111, 63,167,103,207,158, 26, 66,200,123,148,210,141,165,213, -115, 27,107, 23,237,149,120, 31, 29,101,169,164, 54,169, 34, 97, 86,156, 95,172, 60,207, 99,236,152, 49,232, 18,174, 69,255,102, - 65, 48,164,252, 1,149,111, 16,136,166, 58, 22, 47, 59,128,235,119, 61,118,197,164, 0,208,189,125, 95,188,248,124,241,240, 96, -109, 58, 23,124,147,157,254,249, 2,210, 50,147,203,157,119,131,193, 80,162,229,202, 83,139,150,131,211, 17,102, 69, 34,145,160, - 73,147, 38,168, 91,183, 46,142, 31, 63,142,166, 77,155,226,206,157, 59,184,115,231, 14,238,223,191,143,107,215,174, 33, 39, 39, -167,220,207,232,135,195,219,144,163,203,134, 76, 42, 67,118,110, 38, 18, 30,222, 67, 72, 64,232, 35, 63,119, 7,234,245,252, 20, - 0, 16, 30,228, 91, 46,161,229,204,185,112,225,194, 98,226,189, 18, 66,246, 92, 40, 99,189,188,231, 63, 54,136, 75,176, 18, 25, -253,253,253,149,206,253,171, 12,195,192,215,215,151, 44, 88,176, 64,196, 48, 12,124,124,124,224,235,235, 11,135,185,176, 44,200, -100, 50, 99,245,234,213,149,142,130,232,168,136,106,181, 90,180, 96,193, 2,178,126,253,250, 18,173, 92,101,248,104, 45, 29, 62, -124,248, 91, 73, 73, 73,126,193,193,193, 72, 73, 73,129, 76, 38, 43,168, 28, 29, 59,162,237,221,187,176, 22,248, 28, 33, 46, 46, - 14, 95,125,245,149,193,108, 54, 47, 45,239,141,242,246,246, 70, 64, 64, 64, 97,151,161,195,162,227, 36, 26, 61,114,193, 44,205, - 68,239,248, 2,172, 72, 23,146,171,216,122,231,157,119,138,136, 46, 79, 33,149, 74, 89, 71,228,119,134, 97, 96,181, 90,209,180, -105, 83,164,167,167, 23, 86, 26,103, 75,158, 39, 66,171,172,128,164, 98,177, 24, 22,139, 5,237,218,181, 3, 33, 4, 43, 87,174, -124, 54,186, 35,121,158,120,123, 7, 32, 60,252, 57, 4, 5,155,192,243,149, 55,171, 12,203,178, 24, 55,110, 92, 17, 11,150, 99, -100,163,163,235,159, 82, 10,155,205, 86,225,224,175,142,122,253, 40,241,227, 40, 80,216,229,101, 48,152,158,186, 71, 24, 28, 28, -220,146, 16,178,199,101,115, 54,128, 57,238, 34,184,219, 81,248,160, 19, 19, 19,209,173, 91, 55, 28, 60,120, 80,180,123,247,238, -206,123,247,238,189, 81,187,118,237,196, 65,131, 6, 85,125,251,237,183,229,237,218,181, 67,102,102, 38,154, 53,107,246, 25,128, - 82,132,150,253, 62,154,204, 48, 24, 42,223, 58, 90,218, 7,223,163, 8,184, 89,179, 62, 65,151,176, 92,244,107,236,139, 77,251, -206, 96, 88, 19, 37, 96,145,151,155,207,145, 22,255,240, 26,168,222,176,101,177,253,114,117, 65,151, 93,245,134, 45,193, 36,222, - 41,119,222,157,211,236,218, 94, 86,196,162,231,124, 63, 71,143, 30,141,105,211,166,161,107,215,174,184,115,231, 14, 78,158, 60, -137, 59,119,238, 96,210,164, 73,104,216,176, 33, 26, 55,110, 92, 46,206,189,177, 59,160,213,231,129, 33, 12,178,243,178, 96, 50, - 27, 49,117,220,172, 71,126,238, 14,220,139,141, 6, 0,236, 60,114,185,194,156, 31,127,252, 49, 82, 83, 83,139, 88,178, 30,197, - 47,235,105,135, 91,161,149,149,149,229,182, 31, 48, 40, 40, 40, 45, 42, 42, 42, 56, 37, 37, 5,222,222,222,101,138, 44, 66, 72, - 23, 71,172,141,212,212, 84,183,156, 62, 62, 62,214,168,168, 40, 73, 88, 88, 88,145,209,134, 94, 94, 94,197, 42,153, 43,167,253, - 37,160, 35,132,140,109,221,186,245,166,159,126,250, 73, 85,183,110, 93,104,181, 90, 80, 74,177,113,227, 70, 76,156, 56, 17, 10, -133, 2,113,113,113,232,211,167, 79,126,126,126,254, 88,231, 24, 90,238, 56, 75,250, 66,115, 68,197,119, 35,178, 74,205,187,115, -101, 93,177, 98, 5,230,205,155,135, 25, 51, 74,119,245, 88,183,110, 29,224,210,205,231,142,147, 82,138,197,139, 23, 87, 26,103, - 86, 86,214, 70, 23,107,212,202,254,253,251,139, 19, 19, 19,139,136, 43,231,197, 77,195, 84,132,179,172,128,164, 34,145, 8, 33, - 33, 33,152, 59,119, 46, 2, 2, 2, 16, 26, 26, 90,204, 18, 83,214, 51,170,224,203,224,111,229,228, 40,127,105,209,252, 79,218, -252,111,203, 94,137, 92, 6,156, 59,185, 19,218,156,162,221, 73,102,235, 95, 67,169,101, 77, 59,195,114,249,103,143,210,105, 54, -155,177,112,225, 66,124,250,233,167,248,244,211, 79, 61,121,238,143,148,119, 79,196,150, 91, 78,158, 18,149,151, 31, 20, 94,225, -104,208,208, 15, 60,101,159,168,103, 84, 2,126,189,112,225, 66,159,128,128, 0, 36, 37, 37, 5, 73, 36,146, 62, 69,204, 85, 70, - 35,170, 87,175,254, 28,128,255,148,197, 57,105,210, 36,243,204,153, 51,229, 67,134, 12, 65,255,254,253, 49,100,200, 16,185, 84, - 42,173, 67, 41,133,213,106, 69, 82, 82, 18,126,254,249,103,100,100,100,220, 42, 45,157, 60,165, 68,169,210, 64,225, 21,134, 6, - 47,104,192,243,108,165,228,221,241, 18,116,181,102,149, 51, 32,181,219,182, 14, 0,126,253,121, 15,102,125,240, 2, 54,238,255, - 5, 95, 92, 0, 94,212,164,163, 65, 80, 6,248,140, 91,248,239,176,151,176,248,187,139, 0,128,147, 39,202,124, 70,165,198, 71, - 54, 25,173,143,148,119,103,203,149,243,117,202,242,209,114,199,233,248, 72,212,233,116,200,205,205,197,166, 77,155,240,230,155, -111, 34, 61, 61, 29,247,239,223,199, 31,127,252,129,239,191,255,190,112, 52,123,121,159,209,135, 99, 62,198,204,197,147, 65, 65, - 81,175,118, 3, 76, 31,255, 41,154,191,216,234,145,159,187, 43,202,178,102,149,198,185,124,249,242, 10,149,165,127,149,208, 42, -237,171,130, 97, 24, 4, 6, 6, 22, 22, 18,231, 2, 88,145, 47, 95,145, 72, 4,150,101, 11,125,127, 28, 11, 0,244,238,221, 27, - 63,254,248,163, 39, 35, 41,126, 34,132,188, 94,191,126,253, 13,159,125,246,153,119,251,246,237,197,225,225,225,104,222,188, 57, -226,226,226,176,127,255,126,219,234,213,171, 13,249,249,249,163, 40,165, 71, 42,210, 62, 57,166,180,113, 94,202,243,213, 99,181, - 90, 19,239,220,185, 19,182,120,241, 98, 17,195, 48, 88,190,124,121, 97,165,116, 4,124,117,198,201,147, 39, 89,158,231, 75,237, -170,177,217,108,137,119,238,220, 9, 91,178,100,137,136, 16, 82,200,201, 48, 12,156, 39,112, 46, 15,167, 59,145,233, 24, 24,225, -110,113,151,118,119,207,184,180,128,164, 98,177, 24,113,113,113,152, 53,107, 22, 8, 33,216,185,115,231, 51, 81,185,174,221,202, - 92,223,184, 65,176, 95,239, 87,218, 52, 2, 33,176, 90,138, 71, 67,240,206,209, 23,138,172,254, 75,182, 97,247,135,131, 61, 17, - 61,241,167, 79,159,246, 95,184,112,161, 88, 36, 18, 97,217,178,101, 69,130, 6,187, 62,247, 83,167, 78,177, 21,233,246,115,212, -103,171,213, 10,163,177, 98, 86, 20, 74,233,217,232,207,103, 70,109,254,246,128,132, 16, 11,206,157,216,137,188, 92,247,238, 12, - 50,137, 24,235, 55,237, 98,165, 18, 81,226, 63,252,232, 86,245,235,215,111,200,151, 95,126,217,192,221,206,196,196, 68,240, 60, - 95,154,115,205,125,147,201,132,135, 15, 31, 34, 63, 63,127,199, 71, 31,125,100, 61,112,224,192, 91,175,190,250, 42, 26, 55,110, -140,176,176, 48,164,164,164, 32, 62, 62, 30,155, 54,109,162,103,206,156,217, 1, 96, 66, 25,247,113,207,252,207,103,190,177,233, -187, 3, 50,134, 88,113,238,228, 78,228,185,136,246,226,214,105, 9,190,217,184,203, 42,149, 74,110,151,213,174, 59, 91,179, 42, -243,197,216,103,248,120,244, 95,241, 5,106, 53,239,134,249, 11,186,224,155,207, 7, 98,105,119, 41,172,219,135,225,197, 1,155, -177,117,118, 15, 0, 64,248, 55, 30, 90, 75,196, 82, 60,112, 99,177,202,205, 83,216,197, 77,249,172,166,142,188,151,214,134,151, -215,162,197, 48, 12,106,212,168,129, 90,181,106,161,117,235,214,104,218,180, 41, 58,118,236,136,171, 87,175,226,234,213,171,152, - 52,105, 82,137, 34,203,147,103,212,225, 63, 81,248,165,237,237, 71,126, 54,174,207,189, 50,224, 73, 89, 26, 63,126, 60, 0,252, -171,172, 91,226,138,220, 68, 71,193,124,212, 41,105, 28,156, 22,139,165,176, 75,206, 57, 46,147,195, 57,222,195, 17,125, 71, 8, - 33, 13, 63,249,228,147, 15, 20, 10, 69,199,252,252,252,231,236, 22,153, 56,179,217,124,204,104, 52, 46,163,148,230, 62, 74, 90, -157,195, 57,184, 75, 66,105,231,230,228,228,116,235,214,173,219, 17,177, 88, 92,195,117,194, 95,119, 21,153,231,249,251,105,105, -105,165, 14,113,207,202,202,234,214,181,107, 87,183,156,238, 26, 8, 79, 56,221, 61, 31,158,231, 75, 20, 89,158, 52, 68,101, 5, - 36, 21,139,197,240,242,242,194, 15, 63,252,128,192,192,192,103,170,130, 93,185,145,190,176,180,253, 29, 2,229, 39, 0, 4,245, - 95,178,237,193,241, 76, 75,100,135, 64, 89,194,238, 15, 7, 87, 43,237,156,204,204,204,174,111,190,249,230, 65,177, 88, 92,195, -245,254,187,123, 22, 44,203,222, 75, 77, 77, 45,119,184, 4, 74, 41,110,223,190,205,143, 30, 61, 58, 51, 35, 35, 99, 96, 69,242, - 63,125,214, 23, 75,231,125, 54, 49,160,123, 84,203,230, 96, 0, 75,201,206,191,148, 0, 84, 44, 17, 37, 78,153,177,124,204, 63, -249,204, 40,165, 90, 66, 72,235,215, 94,123,109, 2, 10,134,134, 23, 19, 82, 0, 86,148, 66,177,162,106,213,170, 47,136, 68, 34, - 57,128, 89,148,210, 4, 66,200,170, 51,103,206,116, 5,240,178, 72, 36, 10,227, 56,238, 33, 10,230,124,220, 70, 41,189, 82,118, - 57, 74,123,187,113,253,160,136,238, 93, 94,238, 6, 66,168,197, 98, 46,227, 3, 9, 20,148, 82,169, 84,114,251,194,149,228, 23, -203,178,214,219,103,224,168,244, 46,251, 9, 19, 38, 96,194,132, 9,133,229,105,229,202,182,216,241,251,105, 12,120, 49, 9,230, -175,218,128,168,171,121,252,193, 7, 0, 31,127, 50,186, 50, 45,155, 69, 6,105, 85,150,143,150, 72, 36, 66,102,102, 38,226,226, -226,144,150,150,134,252,252,124,220,188,121, 19, 86,171, 21, 57, 57, 57,120,225,133, 23, 42,156,206,202,122, 70,255, 36,231,191, -177,251,176, 92, 66,139,101,217,164,178,102, 89,183,217,108,229, 26,149, 36,145, 72, 76,117,235,214, 37,238, 70, 39, 56,254,123, -121,121, 25, 61,108, 32,115, 1,204, 2, 48,203, 62,159, 21,178,179,179, 31, 89, 13,114, 28,151, 28, 25, 25, 41, 42, 73,192,216, -239, 77, 90, 25,105, 51, 0,104, 85,201, 47,132, 74,231,116,243,124, 12,207, 63,255,124,161,175,151,107, 76, 20,251,100,171,165, -122,231,150, 21,144,212, 96, 48,164,116,235,214,141,115,222,239, 28,208,244,153, 6,161, 9, 61,134,188, 21,121, 60,211, 18, 9, - 0, 14,177,133,146,253,127, 64, 41, 53, 2,104,255,119, 39,237,238,221,187,150,151, 95,126,249, 91,157, 78, 55,158, 82, 90, 97, -111,254, 25,255,183,114,198,211,246, 88, 40,165, 90, 0,243, 42,120,110, 2,128, 78, 46,219,174, 0,184,242, 40,105,186,114, 51, -163,210, 99,139,177, 44,155, 84,171, 86,173,114, 89,110,202,106,227,109, 54, 91,169,239,137,235,240,197,140,243, 64,193, 52,113, - 89, 30,113,154, 76,166,236, 86,173, 90, 73,202,153,183,116, 79,243, 30, 22, 22,134,240,240,240,194, 95, 7, 92,183,151,149, 78, -150,101,147, 34, 34, 34, 16, 24, 24, 88, 98,196,119, 87,159, 44, 79, 56, 43,251, 25,149,198, 25, 30,190,185,210, 57, 43, 75, 47, -252, 43,132,150, 99, 14,195,202, 68, 90, 90,218,223, 50,231, 10,173, 12,115,219, 95,150,163,230,248,151, 34, 43, 43, 43,224, 81, - 57,202, 10, 72,154,150,150,214,241,223,122,127,143,103, 88, 70, 22,219,102, 23, 93,255, 52, 12, 6, 67,181,178,194, 14,148,132, - 1, 3, 6,112, 16,240,196, 35, 51, 51,179,210,219,244,191,227, 61,145,157,157,221,232,223,154,247,191, 35,157, 79, 11,231,179, - 2,193, 75, 77,128, 0, 1, 37,125,172, 8, 98, 73,128, 0, 1, 2, 30, 17, 4, 64,151, 18, 26, 89,143, 71,250, 16, 66,186, 84, -160, 17,143, 21, 56, 5, 78,129, 83,224, 20, 56, 5, 78,129,243,223,197, 89, 22,119,101,143, 52,126, 18,190, 90,255,182, 5, 64, - 23,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127,235, 34,116, 29, 10, 16, 32, 64,128, 0, 1, 2, 4,252, 77, 16, -132,150, 0, 1, 2, 4, 8, 16, 32, 64,128, 32,180, 4, 8, 16, 32, 64,128, 0, 1, 2, 4,161, 37, 64,128, 0, 1, 2, 4, 8, - 16, 32, 64, 16, 90, 2, 4, 8, 16, 32, 64,128, 0, 1,127, 31, 72, 37,198,245, 20, 32, 64,128, 0, 1, 2, 4, 8, 16,224, 4, - 49, 0,236,223,191,191, 80,109,245,236,217,147, 8,183, 69,128, 0, 1, 2, 4, 8, 16,240, 56,241,172,106, 17,177, 32,176, 4, - 8, 16, 32, 64,128, 0, 1, 79, 2,158, 69, 45,194,184, 83,146, 2, 4, 8, 16, 32, 64,128, 0, 1,143, 27,207,162, 22, 97,158, -101, 21, 41, 64,128, 0, 1, 2, 4, 8,120,122,240,204, 91,180, 4,171,150, 0, 1, 2, 4, 8, 16, 32,224,159,194,211,170, 69, - 8, 33,148, 16, 66,157,215, 11,255, 11,163, 14, 5, 8, 16, 32, 64,128, 0, 1, 2, 42, 38,176, 40,165,164,164, 95, 64,136,163, - 37, 64,128, 0, 1, 2, 4, 8, 16, 80, 33, 56,196,148,243,186,179, 53,235,111, 23, 90,132,144, 46, 2,167,192, 41,112, 10,156, - 2,167,192, 41,112, 10,156,255, 22,193, 69, 41, 37,206,235, 98,225,246, 8, 16, 32, 64,128, 0, 1, 2, 4, 60,178,248,164,238, -132,151, 32,180, 4, 8, 16, 32, 64,128, 0, 1, 2, 30, 81,100, 57,139, 43,193, 71, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 49, - 64,176,104, 9, 16, 32, 64,128, 0, 1, 2, 4, 60, 2, 92,157,224,133,174, 67, 1, 2, 4, 8, 16, 32, 64,128,128, 74, 22, 91, -238,182, 19, 0, 93, 74, 56, 33,214, 83,242,138,140, 62, 40,139, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,103,143,179, - 44,238,242,232,143, 39, 5,132,144,246, 0,142, 3,232, 96,255,253, 75,120, 81, 74,255,182, 5, 64, 23,129, 83,197,199,105, 41, - 0, 0, 32, 0, 73, 68, 65, 84,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,103,121, 41,144, 83,127,253, 58, 47,130, 51,188, -128,178, 84,186,152, 16, 34,174,232,254,199,197, 41, 64,128, 0, 1, 2, 4,252,195,239, 75,234,248,117,246,215, 18,151,112,112, - 29, 0, 51, 0,248, 58,109,190, 64, 41,141,118, 57,238, 59, 0, 42,167, 77, 6, 0,179, 41,165,119, 60, 72,147,212,206, 47,183, - 47, 60, 0, 19, 0, 51, 0, 29, 0,155,240,216,254,241, 66,211, 10, 64, 47,251,255,125,148,210,115,229,217,255,184, 56, 31, 23, -194,195,195,149,126,126,126, 93, 47, 95,190, 44,187,121,243, 38, 78,157, 58, 69,215,175, 95,111,205,201,201, 57,156,156,156,108, - 20, 74,204, 51, 81,230,187, 1,152,110, 95,157, 79, 41, 61,244,136,124, 68,165, 82, 77,242,242,242,234, 33,151,203,195, 89,150, - 37,249,249,249,201, 6,131,225, 8,203,178, 75, 40,165,124, 5, 56,251,250,251,251,191, 85,175, 94,189, 58,247,239,223,127,152, -156,156,252, 29,128,237, 0, 6,134,135,135, 15,171, 94,189,122,149,219,183,111,223,201,206,206,254,134, 82,186,231,159, 74,167, - 0, 1,255, 38,148,228,159, 85,162,208, 2, 48,139, 82, 58,204,165, 34, 22, 59,168, 83,167, 78,125, 14, 31, 62,172,226,121, 30, -142, 69,169, 84,178, 0, 70,150,145,166,128,179,103,207, 70,142, 31, 63,190,127,114,114,242, 75, 58,157,174, 5, 0,168, 84,170, - 95,130,131,131,127, 93,177, 98,197,247, 93,187,118, 77,178, 11,174,114, 89, 74, 36, 18,201,155,126,126,126, 61, 88,150,109, 74, - 41,133, 68, 34,185,156,147,147,115,200,102,179,125, 67, 41,181, 85,160, 81,147,137,197,226, 9,114,185,188, 27,203,178,141, 0, - 64, 44, 22, 95, 51,155,205,135, 88,150, 93, 69, 41,181, 84,128, 83, 33,147,201, 38,168,213,234, 40,139,197,210, 8, 0,100, 50, -217, 53,173, 86,123,196, 98,177,172,162,148,154,158,128, 23,142, 24, 64, 47, 74,169, 4, 0, 68, 34, 81,223, 86,173, 90, 69, 18, - 66,120, 71,124, 16,134, 97,154,112, 28,199,216,143,239, 69, 8,249,149, 82,202,150,135,243,229,151, 95,174, 42, 22,139,169, 61, -146, 46,195, 48,204,139,229,225,172, 44, 4, 5, 5,205,227,121, 62,188,180, 99,124,125,125, 95,186,124,249,114,189,152,152, 24, -238,171,175,190,202, 29, 53,106,148,247,248,241,227,197, 43, 87,174, 92, 5,224, 61,215,227, 3, 3, 3,151, 50, 12, 19,232,201, -245,121,158,207,204,204,204,156, 44, 52, 87,255, 56,166,175,142,213,181,163, 20,152, 16,229,195, 0,120, 36,161, 85,165, 74,149, - 77,111,188,241,198,144, 70,141, 26,137, 41,165,176,217,108, 48,155,205,245,206,157, 59,215, 97,231,206,157, 47, 1, 24, 88,206, -122, 57,102,218,180,105,115,231,204,153, 19, 40,145, 72,136,205,102,171, 29, 19, 19,211,244,237,183,223,126,127,221,186,117, 85, - 7, 13, 26,228,227,216, 62,107,214,172,230,132,144,154,148,210, 37,143, 59,157, 2, 4,252, 11, 63,210,218,163,168,143,214,103, -148,210, 79, 75, 19, 90, 94,246, 19,211, 0, 92,112, 88,180, 92, 15, 58,122,244,232, 94,177, 88,236,176,104,181, 48, 24, 12, 33, - 46, 86, 48,119,168, 62,124,248,240, 86, 59,118,236,152, 55,104,208,160, 84,149, 74, 85,247,213, 87, 95,213, 17, 66, 68, 49, 49, - 49, 77,106,213,170,165,236,221,187,247,240, 78,157, 58,125,120,240,224,193, 83, 0, 50, 60,204,100, 3,127,127,255, 93, 11, 23, - 46,140,236,214,173,155, 52, 48, 48, 16,148, 82, 36, 39, 39, 87,217,191,127,127,247,207, 62,251,236, 67, 66, 72, 63, 74,233,141, -114,220,184,230, 74,165,114,199,103,159,125, 22,214,189,123,119,113,104,104, 40, 76, 38, 19,110,222,188,217,229,208,161, 67,237, -214,173, 91,247, 30, 33,100, 0,165,244,215,114,112,182,240,245,245,221,249,191,105,211, 66, 90,190,249,166,216,223,223, 31,148, - 82,100,100,100,116, 57,189,121,115,135,113, 11, 23,190, 71, 8,121,141, 82,122,225, 73, 42, 68, 50,153,140,217,178,101, 75, 99, -153, 76, 6, 0,176, 88, 44,104,216,176, 33,121, 20, 78,137, 68,194, 44, 89,178,164,169, 88, 44,134,213,106,229,117, 58, 29,125, -245,213, 87,153,127,168,146, 68, 36, 39, 39,251, 74,165, 82,183,251, 57,142, 67,187,118,237,106, 72,165, 82, 44, 89,178,196,150, -153,153,217,228,203, 47,191,188,188,117,235,214,192, 85,171, 86, 13,112, 39,180, 24,134, 9, 76, 74, 74,114,203,201,113, 28,172, - 86, 43, 88,150,133,197, 98, 65,253,250,245,133,150,234,201, 64, 36, 0, 28,184,106, 2, 0,255, 71, 37,243,242,242,122,126,232, -208,161,226,140,140, 12, 72, 36, 18, 88,173, 86,164,166,166,162, 97,195,134,162,111,191,253,246,185,242,242,213,174, 93,123,212, -252,249,243,131, 14, 28, 56, 96,221,178,101,139, 37, 42, 42, 74, 50,106,212, 40,117,187,118,237,234, 71, 68, 68, 48, 27, 54,108, - 48, 31, 57,114,196, 54,124,248,112, 89,116,116,116,208,254,253,251,123, 3, 88,242,184,211, 41, 64,192,191, 16,199, 93, 39,149, - 6, 80,170,208,114,224, 2,165,180, 47, 0, 72,165,210, 38, 85,171, 86,221,196,178,108,168,221,170,147, 42,145, 72,150, 88,173, -214,223,236, 47,170, 61, 60,207,247, 41,203,146, 53,124,248,240, 86, 7, 15, 30, 92,124,238,220,185,188,172,172,172,208,189,123, -247,154, 62,252,240,195,251, 0,112,247,238,221,154,189,123,247,174, 50,113,226,196,164,174, 93,187,174,232,216,177,227,187,199, -142, 29, 59,130,130, 46,201, 82, 69, 86,195,134, 13,207,158, 60,121,210, 71,163,209, 20, 85,117,213,171,227,221,119,223,149,246, -233,211,167, 86,231,206,157,207, 16, 66,218, 82, 74,127,247, 68, 16,213,169, 83, 39,246,232,209,163,222,126,126,126,200,205,205, - 69,106,106, 42,242,243,243,161, 86,171, 49,104,208, 32,105,251, 54,173,171, 78,156,244, 94, 44, 33,164,139, 39, 98,139, 16,210, -162,117,131, 6,177, 91,163,163,189,109, 15, 30, 64,169, 84, 66,175,215, 3, 0,124,124,124,240, 82,141, 26,226,139,155, 55, 87, - 25, 54,117,170,131,243,177,139, 45, 66,136,220,110, 6, 53, 19, 66,246,137, 68,162,190, 50,153,140,233,219,183, 47, 98, 99, 99, -137,201,100, 18, 3,128, 66,161, 96,251,246,237, 11,165, 82, 9,139,197,194, 3,216, 87,146,229,201, 29,167, 68, 34, 97, 58,118, -236,152,127,225,194,133,108, 7,167, 74,165,178,117,236,216, 49, 64, 38,147, 41, 89,150,165,165,113,254, 77, 98, 18,241,241,241, - 69,182,233,116, 58,100,100,100, 32, 43, 43, 11,102,179, 25,185,185,185,224,121,158, 40,149,202, 12,158,231,193, 48, 5,198,183, -146, 56,165, 82, 41,226,226,226,138,108, 99, 89, 22, 6,131, 1,102,179, 25, 86,171, 21, 58,157, 78,233,227,227, 83,167, 65,131, - 6, 73, 0,246,100,103,103, 47, 73, 77, 77, 77, 16,218,173,127, 4, 15,246,253,102,170, 6,192, 2,224, 94, 37,240,241, 0,112, -234,212, 41,164,165,165, 33, 51, 51, 19, 25, 25, 25,136,136,136, 64, 69,186,227,226,227,227, 87,191,240,194, 11,228,250,245,235, -135, 0,172,140,137,137, 25,153,157,157, 61,125,202,148, 41,254,139, 22, 45,202,158, 58,117,234,124, 0, 27, 99, 98, 98,222,121, -254,249,231,123,220,186,117,107,221, 63,145, 78, 1, 2,254, 6, 52, 7, 16,100,255,159,105,111,119, 3,156,214,175,218,235,173, -227, 56, 11, 0,153,155, 95, 7, 28,235, 25, 0,126,117, 58,207,177, 94,145,247, 39,117,254, 45,252,232, 6,128,253,251,247, 83, -199,226,238,228,144,144,144, 73,157, 58,117, 90,124,233,210,165,250, 41, 41, 41,126, 41, 41, 41,126,151, 46, 93,170,223,169, 83, -167,197, 33, 33, 33,147, 28,199,217, 61,238,225,180,238, 60, 68, 83,122,246,236,217,200, 93,187,118,205,143,141,141,205,107,210, -164,137,229,232,209,163,108,215,174, 93,211, 1,176, 0,216,174, 93,187,166, 31, 59,118,140,107,217,178,165,242,224,193,131,137, -103,206,156, 89,186, 99,199,142, 16, 0,162, 18, 56, 65, 8,145,104, 52,154, 31, 78,156, 56, 81, 76,100, 57,163,106,213,170,216, -183,111,159, 90,163,209,236, 33,132, 72, 75, 73, 39, 8, 33, 10,133, 66,177,243,216,177, 99,222, 62, 62, 62, 72, 79, 79,135, 68, - 34, 65,112,112, 48,242,242,242,144,154,146,130,132, 63,254, 0, 99,177, 96,217,231,115,124,148, 74,229, 14, 66,136,172, 44, 78, - 95, 95,223,157, 91,231,205,243,206,138,141,197,149,185,115, 97,181, 90, 11,187, 92,173, 86, 43,206,140, 31,143,140,159,127,198, -134, 89,179,188,125,125,125,119, 18, 66, 20,165,113, 86, 6,156, 57, 9, 33,227, 1,100, 3,200, 38,132,140,167,148,158,107,216, -176,225,165,155, 55,111,162,109,219,182,216,190,125,251,139, 83,166, 76, 25, 63,101,202,148,241,219,183,111,127,177,109,219,182, -184,121,243, 38, 26, 54,108,120,201,217,151,202, 19,206, 19, 39, 78,160, 83,167, 78, 57,219,183,111,175, 57,107,214,172,121,179, -102,205,154,183,109,219,182, 90,157, 58,117,202, 89,190,124,185,185, 52,206,191, 35,239,206,150, 38,231,133,231,255,122,199,132, -135,135,167,239,218,181, 11,131, 6, 13, 98,100, 50, 89,202,224,193,131,229,167, 79,159,166, 0,246,149, 39,157, 38,147, 9, 70, -163, 17, 6,131, 1,119,239,222, 85, 46, 92,184,176,205,167,159,126, 90, 59, 54, 54,182,202,140, 25, 51,198, 5, 5, 5, 93, 14, - 13, 13,141,124,220,121, 23, 56, 1, 0,169, 0,172,246,143,187,132, 71,225,236,220,185,243, 11,181,107,215, 14,137,185,238,135, - 28,105, 61,240, 82, 13,120,169, 6, 92, 64,115,196,203, 94, 65,181,106,213, 66,124,124,124, 90,149,135,147, 82,186,229,247,223, -127,127,153, 82,250, 41,165, 52,139, 82,186,120,234,212,169,159, 17, 66, 78, 77,157, 58,117, 14,165,116,177,125,251,220,155, 55, -111,182,164,148,110,253, 39,210, 41,148, 37,129,179, 34, 40, 67,139, 4, 17, 66,246, 17, 66,246,125,244,209, 71, 29, 1, 4,184, -172,255,199,249, 56, 0, 50,119,191,142,197,105,123, 16,128,158, 78,231, 5, 85,240,126, 16,215,165,136,208, 2,128,158, 61,123, -146,158, 61,123, 58,118, 92, 32,132,236, 5,112, 65, 42,149, 54,105,220,184,113,223,159,126,250,201, 39, 40,232,175,235, 7, 5, - 5, 97,199,142, 29, 62, 13, 26, 52,232, 43,149, 74,155, 0,184,160, 86,171,247,194, 77, 23,163, 29,154,241,227,199,247, 31, 49, - 98,132,182, 73,147, 38, 0,144,123,227,198, 13, 85,203,150, 45, 13, 44,203, 18,150,101, 73,203,150, 45, 13, 55,110,220, 80,217, -108, 54, 93,243,230,205,189, 58,119,238,124,127,242,228,201,195, 1, 40, 74,201,223,208, 5, 11, 22, 68,248,249,249,149,118, 3, -160,211,233, 16, 18, 18,130,241,227,199,135, 74, 36,146,183, 74,187, 97, 98,177,120,194,130, 5, 11,130, 53, 26, 13,114,114,114, - 16, 17, 17, 1,139,197,130,184,184, 56,152, 12,122,216,116, 90,216,180,185,200,248,243, 14, 52, 18, 49,134,247,233, 21, 34, 22, -139, 39,148, 97, 45,153,240,205,212,169, 33,150,251,247,113,119,251,118,112,108,113, 67, 13,107,181,226,218,215, 95,195,148,148, -132,249,163, 71,135,200,100,178, 9,143,217,146,181,136, 82,170,164,148, 42, 9, 33, 43,254,243,159,255,124,171, 84, 42,199, 71, - 71, 71,119, 59,124,248,112,247,147, 39, 79,118, 96, 89, 86,194,178,172,228,212,169, 83,109, 77, 38,147, 88, 46,151, 67, 44, 22, - 83, 79, 57, 91,181,106,181, 73,169, 84,142, 91,179,102, 77,183, 99,199,142, 13,191,120,241,226, 4,142,227,100, 28,199,201, 46, - 94,188,248,182,209,104,148, 80, 74,185,146, 56, 31, 55, 36, 18, 9,164, 82, 41,148, 74, 37,218,180,105,243,231,250,245,235,109, - 17, 17, 17,146,157, 59,119,250,133,135,135,123,173, 92,185, 50, 87,167,211, 45,240,148,207,106,181,194,108, 54,195,104, 52,194, -100, 50,225,232,209,163, 53, 38, 78,156, 40, 54,153, 76, 92,239,222,189,179,109, 54,155,121,234,212,169,106,127,127,255, 15,133, - 15,216,127, 4, 44, 0,189, 93,104,153,157,203, 50, 33,164,145,195, 58,235, 9,114,115,115,215,125,243,205, 55, 17,140, 92,131, -211,150, 30,248,158,255, 12,135,125, 87, 34, 61,242,191, 8,142,168,141, 33, 67,134, 4, 83, 74, 87, 86,194, 11,239, 75, 74,105, - 59, 74,233,138,138,156,255,119,167,147, 16, 18,233,237,237,189, 93,173, 86,159,246,246,246,222, 78, 8,137,124,212, 60,119,173, - 67,186,244,173, 47, 74,234, 90,155,208,190,245, 69, 73, 93,235,148, 63,214,147,128, 39, 19, 46, 90,196, 25, 25,148,210, 94,148, -210, 94,243,231,207,159,231, 84,254, 29,235, 74, 15,235, 75, 47, 74,105, 47,151, 50,186,175, 18,222,161,212,117, 41,212, 20,206, - 74,210,145, 57,231,209,133, 85,171, 86,221,180,105,211, 38, 31, 87,210,148,148, 20,104,181, 90,204,156, 57,211,103,196,136, 17, -239, 37, 38, 38,190, 81, 70, 58,100,169,169,169, 77,135, 13, 27,166,176, 90,173, 57, 60,207, 51, 90,173, 86,236,235,235,203, 57, - 14,240,245,245,229,242,242,242, 36, 6,131, 65,196,113,156,121,196,136, 17,178,209,163, 71,191,228,108,209, 42, 38,113,131,130, -162,122,244,232, 33, 43,105,191,205,102,131,193, 96,128,193, 96,128,213,106, 69,155, 54,109,228,235,215,175,239, 10, 96, 77, 73, -231,200,229,242,168,168,168, 40, 73,118,118, 54,124,125,125,145,144,144,128,123,247,238,193,172,215,195,170,215,194,170,215,129, -213,105, 65,181,121,200,186,115, 27, 45,159,175, 39,253, 78, 46,239, 6, 96,105, 73,156,106,181, 58,170,229,200,145, 98, 47, 47, - 47,116, 24, 86, 48,206,224,224,243,207,131,114, 28,120,142, 3,199,178,232, 22, 23, 7,155,205, 6,134, 97,208, 60, 59, 91,172, -222,188, 57, 10,192,226,127,162,176,203,229,114,241,150, 45, 91,134,202,100, 50, 80, 74,137,197, 98,193,225,195,135, 31,153,115, -243,230,205,195, 29,156, 86,171,149,190,240,194, 11,197, 42,148,217,108,166, 79, 74,165,151,201,100, 80, 40, 20,176, 90,173,168, - 94,189,186,113,216,176, 97,103, 63,255,252,243,106, 12,195,120, 73,165,210,159,178,178,178,230, 37, 39, 39,223,245,148,207,102, -179,193, 98,177,192, 98,177,192,104, 52,226,207, 63,255, 12,173, 81,163, 6, 25, 63,126, 60,151,159,159, 95,243,139, 47,190,136, - 63,124,248,176,106,193,130, 5,175, 2,120, 87,104,118, 31, 31,236, 86,105,223,106, 1, 98,131, 68, 4, 61, 0, 31,187, 40,120, -149, 16,210,178,126,253,250,126, 55,111,222,204, 33,132,156, 7,240, 61,165, 52,165, 52, 62,158,231, 9,207,243,120,187, 69, 46, -198,183, 18,193,102,203, 67, 94, 94, 30, 18, 18, 18,112,227,198, 13,252,242,203,141, 10,165, 83,161, 80,188,229,237,237,221, 85, -161, 80, 84,103, 89,150,209,235,245, 9,249,249,249,177, 60,207,175,163,174,221, 10, 30,224,239, 74,167, 3, 94, 94, 94, 11,103, -204,152,209,218,215,215, 23,191,253,246, 91,205,109,219,182, 45,196, 35, 58,215, 43, 36,204,134,165,203, 87, 86,169, 18,172,193, -213,147, 63, 86,153,183, 54,102, 3,128, 8,161, 20, 63,253,112,214, 34, 46,248, 21, 64, 79,251,104,244, 94,143, 80,207, 31,233, -252,210, 44, 90,174, 19, 75, 23, 19, 90, 37,100, 12, 44,203,134, 58, 91,178, 40,165, 72, 73, 73,193,195,135, 15,145,145,145, 1, - 63, 63, 63, 88,173,214, 80, 79,222,179, 58,157,174, 69, 64, 64, 64,190, 68, 34, 49, 27,141, 70,168, 84, 42, 94, 34,145, 80,251, -117,136,125,212, 34,103, 54,155,137, 88, 44,182,249,248,248,120,155,205,230,122, 40,197,151,140, 82,218, 34, 32, 32,192,237, 62, -179,217, 12,189, 94, 15,131,193, 0,189, 94, 15,179,217,140,144,144, 16,176, 44,219,180,212, 79, 90,150,109, 20, 20, 20,132,228, -228,100, 40,149, 74, 36, 37, 37,193,162,215,193,170,211,129, 53,104,193,229,229,129,215,106,193, 27,180,176, 89,242, 81,165,238, -243,112,140, 72, 44, 9, 22,139,165, 81, 64, 64, 0, 12,134,191,220,205,168, 93, 96,177, 44, 11,214,238, 28,237,232, 78, 12, 12, - 12,132, 99, 68,226,227,128,221,127,106, 10,195, 48, 43,228,114,185,120,220,184,113, 72, 73, 73, 41, 82, 38,198,141, 27, 87,232, -147,213,174, 93,187, 83, 10,133,130,205,200,200,128,217,108,150,120,194, 89,189,122,245,132,153, 51,103, 94,176, 88, 44, 17,225, -225,225, 26,179,217,108,124,238,185,231,194,149, 74,101,136,197, 98,225, 94,122,233,165,117, 74,165,210,166,215,235, 41,203,178, -228, 73,168,244,132, 16, 16, 66, 10,158, 17,203, 34, 48, 48,208,144,153,153,249, 75, 78, 78,206,208,138,240,217,108, 54,199,136, - 46, 24,141, 70, 80, 74,241,219,111,191, 65,161, 80, 72, 56,142,187,206,178,172, 74, 34,145,128,177, 59,127, 9,120,108,207,185, - 67, 61,141,108,105,116,203, 96, 77,227,222, 94, 6,149, 76,100,224, 19, 26, 87,255,223,162, 27,219, 70, 12,127,203,103,246,236, -217,145,129,129,129,138,248,248,120,211,156, 57,115,106,108,217,178,133,148,245, 17,244,224,193,131,221, 51,102,204,240,239,209, -163, 71, 77,185, 92, 78,242,242,242,144,145,145,129,180,180, 52,220,187,119,143, 94,189,122,245, 79,179,217,188,189, 60,233, 12, - 15, 15, 95, 63,113,226,196, 17,205,154, 53,147, 56, 44,164, 6,131,161,201,137, 19, 39,250, 28, 60,120,176, 45,128,114,151,203, -196,196,196,237, 31,127,252,177,215, 43,175,188, 82, 79, 46,151, 51,149,145, 78,103, 48, 12, 19,226,237,237,141,216,216, 88,104, - 52, 26, 48, 12, 19,242,168,207,203,100,229,171,132,135, 6,192,116,102, 41,234, 5, 69,194,100,229,171, 8,165,248,217,177,104, -149,176,171,185,195, 34, 85,134, 88, 50, 78,159, 62,125, 6, 33,100,223,244,233,211,103,184,179,104,217,255,114,206,199, 57, 29, -111,174,108,177, 85,174,160,144, 60,207,227,225,195,135, 72, 78, 78,198,195,135, 15,145,149,149, 5,134, 97, 74,141, 31,225,156, - 6, 66, 8,127,228,200, 17,191,179,103,207, 26,154, 55,111,158,235,240,127, 97, 89,150,216,108, 54, 98,247,139, 33, 9, 9, 9, -210,211,167, 79,107,110,221,186, 21,130, 2,135, 53,190,140,204, 21,219,230, 16, 88,206,139,201,100,130, 66,161,240, 40,175,142, - 23,225,111,151, 46, 21,136, 44,189,206,222,101,152, 7, 78,155, 7,106,208, 65,198,217, 32, 3, 5, 49,229,123,124,255,156,225, - 16, 89, 86,187,208,178, 88, 44,176,217,108,224,121, 30, 44,203, 62,246, 2, 78, 41, 93,221,164, 73,147,166,187,119,239, 30,245, -240,225,195, 98,251,251,245,235,135,119,223,125, 23, 19, 39, 78,188,213,179,103,207,171, 63,254,248, 35, 38, 76,152, 0,158,231, - 27, 19, 66,242, 40,165, 7, 75,227,156, 62,125,250,197,196,196,196,227,127,252,241,199,184,224,224, 96,121,163, 70,141,238, 52, -106,212, 72,180,123,247,238,144, 49, 99,198, 92,234,222,189,251,253,159,127,254,217, 63, 54, 54, 86,193,243,124, 51, 66,200,195, -127, 58,142,150,217,108, 46,180, 64,153, 76, 38, 88,173, 86,160, 20,231,247,178,202,166,227,217,178, 44,235,224, 38,187,119,239, -194,169, 83,167,152, 27, 55,174, 71,140, 27, 55,222,225,112, 47,180,184,143, 71, 96,189, 34, 99,200, 87, 83, 26, 7, 40, 62,124, - 49,192, 32, 19, 19,125,220, 87, 51,244,247,170,169, 13, 33, 85, 85,150,136, 26,154,240,121,243, 62, 15,187,117,235,182,121,230, -204,153, 55, 7, 15, 30, 28,252,225,135, 31,214,223,185,115,103, 91, 66,200, 55,148,210,220, 18,120, 21, 35, 71,142, 60, 31, 28, - 28, 92, 99,237,218,181,233,137,137,137,126, 54,155,205,203,106,181,242, 6,131,225,158,209,104,140,181, 90,173,177,148,210, 75, -229, 73,175,143,143,207,139, 35, 71,142,148,228,230,230,194, 62, 90, 23,233,233,233,104,221,186,181,104,239,222,189, 13, 42,114, - 15,178,179,179,151, 18, 66,142,111,221,186,181,171, 90,173,110, 38,151,203, 67, 1,112, 58,157, 46,205, 96, 48, 92,169, 72, 58, -139,180,115, 28,151,118,233,210,165, 90,106,181, 26, 15, 30, 60, 0,199,113,105,143,250,220, 20, 82, 38,241,218,201,189, 85,159, - 15,172,129,211,103,207, 67, 33,101, 18,133,210,252,204,195,225, 67, 5,103, 1,229, 70, 32,157,141,142,142, 86,206,159, 63, 31, -209,209,209,215,221, 89,180, 28,130, 43, 58, 58,250,186,227, 56,167,227, 79, 62, 66,123, 82,178, 69,171, 20, 5, 9,177, 88,156, -154,145,145,225,167,209,104, 10, 5, 86,114,114, 50,146,147,147, 33,147,201,144,144,144, 0,153, 76,150,226,201, 71,136, 82,169, -188,216,164, 73,147,231,238,222,189, 43,157, 51,103, 78,213, 75,151, 46,169, 91,183,110,253,130, 82,169,228, 40,165, 48,153, 76, -204,205,155, 55,189, 23, 47, 94, 92,165, 69,139, 22,150, 22, 45, 90, 92,142,137,137, 49,162,148,224,165,132,144, 11, 41, 41, 41, - 53,171, 87,175,238, 16,109, 69,196,149,179,224, 2, 10,186, 60,197, 98,241,229,210, 18, 42, 22,139,175,197,197,197,117, 81, 41, -228,176,232,180,176,234,181, 96,117, 58,112,186, 60,112,121,121,128, 65, 11, 25,203, 66,194,217,160, 84, 40,240, 48, 41, 9, 98, -177,248, 90,105,156, 50,153,236, 90, 90, 90, 90, 23,141, 70, 83,248, 18,181,177,108,193,194,113,176,176,108,161, 69, 75, 34,145, - 32, 49, 49, 17, 50,153,236,218,227, 46,201, 12,195,112,142, 16, 14, 37,228, 3, 33, 33, 33,124,203,150, 45, 49, 97,194, 4,112, - 28,103,127, 12,164, 3, 33,228, 52,165, 84, 95, 18, 39,207,243,204,205,155, 55,251,199,199,199,139, 36, 18, 9,243,242,203, 47, - 55,108,211,166,141, 69, 38,147, 65, 42,149,138,245,122,189, 79,108,108,172,194,102,179, 17, 59,231, 99,139,163,229, 40, 59,197, - 62,141,236, 78,235, 70,163, 17,122,189, 30, 57, 57, 57, 98,165, 82,249,220, 11, 47,188,112,222, 98,177,108,103, 89,118,195,221, -187,119,181, 37,113,218,133, 89,161,232,226,121, 30,148, 82,112, 28, 7,155,205, 6,169, 84,202,159, 56,113, 18,139,151, 45,196, -166, 13, 91,104,159, 62,125,200,222,189,123,193,243,124,146,208,174, 62, 22, 44,201,253,254,115, 5, 88,206, 96, 62,177, 85,255, -237, 31, 90,195,236,111,151, 95,180,200, 68,218,151,218,135, 52,170, 89,227, 57,145, 70,227,199,172, 89,183, 34,235,187, 45, 59, -226, 31, 60,120,160, 93,181,106, 85,171,231,158,123,206,247,202,149, 43, 85, 0,184, 21, 90, 42,149,170,206, 91,111,189, 53, 50, - 39, 39, 71,186,105,211,166,152,148,148,148,139, 0,110, 80, 74, 13, 78,109, 87, 79, 66,200, 70, 20,140,124, 10,177,183,115,167, - 41,165,115, 74,251, 94, 35,132,224,216,177, 99,197, 70, 7,242,143,166,206, 53,181,107,215, 30,116,247,238,221, 83,169,169,169, -175,185,169,247,179,235,214,173,219,237,250,245,235,159, 81, 74, 15,148,135, 56, 63, 63,127,234,142, 29, 59, 22,137, 68,162,112, -142,227,146,141, 70,227,212, 71,182,104,217,248,209,209,107,182,125,109,180,112,213,148, 50,209, 3,147,141, 31, 35, 20,229,103, -218,154, 5,216,125,180, 28,255, 1, 16,151,245, 43,246,255, 22,167, 99, 51,156,172, 88, 22, 23, 43,152,187,125, 25,168, 96,176, -116,119, 35, 14, 29,162,171,164,200,240, 31, 1,104, 1,224,130, 68, 34, 89, 49, 98,196,136,197,223,125,247,157,143, 86,171, 69, - 90, 90, 26,210,211,211, 33, 22,139,161, 86,171,177,122,245,106, 99, 90, 90,218, 10,231,115, 92, 35,200, 59,234, 70, 96, 96,224, -197, 45, 91,182,132,126,245,213, 87,226, 55,222,120, 35,161,103,207,158,245, 86,175, 94,125, 87, 42,149, 82,142,227,136,217,108, - 38,111,191,253,118,173,101,203,150,221, 23,137, 68,170, 65,131, 6, 17, 47, 47,175, 11, 40,112, 80,117,127,231, 51, 50,142,252, -240,195, 15,253, 39, 79,158, 44,183, 88, 44,110, 45, 89,142,109, 26,141, 6,103,206,156,177,228,228,228, 28, 46,195,138,113,228, -167, 3,251,219,189, 62,120,176,212,166,211,194,166,211,130,213,106,193,233,114, 65,244, 90, 72, 56, 22, 74, 41,143,208, 8, 5, - 88,163, 55,246,255,122,197,102, 54,155, 75, 13,108,168,213,106,143,156,222,180,169, 67,139,200, 72,241,153, 73,147, 96,181,217, -240, 74, 92, 92,161,184,178, 90,173,216,211,168, 17, 56, 66,208,120,236, 88,220, 97, 89, 86,171,213, 30,121, 18, 43,195,213,171, - 87,211,135, 13, 27,118,137,231,249,166,229,177,238, 56,224,237,237,173,211,235,245,200,204,204,228,178,178,178, 76, 0,144,158, -158,158,179,119,239,222,155, 60,207,183,168, 8,103,101,192,102,179, 21,179, 70,113, 28, 87, 96,117, 44,176, 28,200,246,239,223, -223,238,230,205,155,210,223,127,255, 29,167, 78,157,106,252,221,119,223,125, 20, 25, 25,217, 40, 33, 33, 33,181, 44,241,230, 46, -232, 47,236,254,135, 49, 91,183,227,157,119,222, 33,169,169,169,248,254,251,239, 81, 86,240, 84, 1,149, 6, 3, 88, 78,105, 57, -177, 85,223,243,192, 3,221,185, 20,227, 28, 0,135,168,145,165, 85,171, 86,189,218,172,153, 95, 32, 0,152, 77, 92,104,157, 58, -117,218,139,197, 98,153,189, 12, 55, 11, 8, 8, 88, 13,160,141,155,246, 83, 52,120,240,224,150,193,193,193, 77, 14, 30, 60,120, - 37, 37, 37,229, 58,165,244, 23,215,227,106,213,170, 53,243,214,173, 91,205, 37, 18, 9, 41,163,140, 0, 0, 58,116,232,240, 92, -100,100,100,192,129, 63,124,161,149,214, 6, 21,229, 1, 98, 5, 56,205,139, 72,144,214, 71, 68,196,249, 0,141, 70,211, 56, 55, - 55,247, 74, 57, 95, 16, 29,251,247,239,191, 97,211,166, 77, 17,237,219,183,167,132, 16,198, 53,164, 67,173, 90,181,186,158, 59, -119,174,233,152, 49, 99,214,218, 71, 15,123,236, 60, 76, 41, 77, 0, 48,160, 50, 31,218,225, 59, 52, 22,246,152,103, 2,254, 53, -248,245,111, 58,182, 82, 80,145,200,240, 45,120,158,239,195, 48, 12,172, 86,107,116, 72, 72,200,158, 65,131, 6,245,251,232,163, -143,188, 3, 2, 2, 10, 45, 89,171, 87,175, 54,222,187,119,111,167,213,106,253,141, 16, 50, 43, 57, 57,185, 79,120,120,137,239, - 7,221, 23, 95,124,177,173,119,239,222,111,140, 29, 59,214,216,168, 81, 35,117,189,122,245,242,207,158, 61,235, 29, 21, 21,165, - 21,137, 68,244,204,153, 51, 62,181,106,213, 50, 17, 66,228, 63,255,252,115,214,249,243,231,107, 69, 71, 71,127,131,130,225,214, - 37, 97,235,220,185,115,103,246,233,211,167, 86, 64, 64, 0,180, 90,109, 17,177,229,248,175, 80, 40,144,154,154,138, 93,187,118, -165,216,108,182,111,202,176,108,172, 90,185,122,205,123, 29, 91,190, 92, 69,173, 82, 34, 53, 41, 1, 92, 94, 14, 96,208, 67,198, -218,160,148, 81, 84,169,173,130, 88,228,133,248, 84, 61, 54,157,253, 53,149,101,217, 85,165,113, 90, 44,150, 85,239, 46, 91,246, -222,185, 53,107,170, 68, 14, 28,136, 27,155, 55, 23,118, 21, 58,132, 22, 71, 8,170,117,238, 12,198,215, 23,243,214,174, 77,179, - 88, 44,171, 30,119, 97,225,121, 94,100,177, 88, 74,203, 7,120,158, 79,186,113,227,198, 54, 66,136,142, 16,210,193,190,235,184, - 59,107,150, 51, 39,195, 48,124,253,250,245,119,135,132,132,244, 7, 96,168, 95,191,254,110,185, 92,222,201, 98,177,188,204,243, -124,210,111,191,253,182,139, 16,146, 74, 8,113,124,117, 60,214, 56, 90, 54,155, 13,179,102,205,194,252,249,243, 49,125,250,244, -194,252, 58,186, 15,115,115,115,107,156, 62,125, 90,122,226,196, 9,186,118,237,218,172, 55,222,120, 67, 51,118,236, 88,205, 87, - 95,125,245, 1,128,169, 37,113, 78,157, 58, 21,107,215,174,197, 59,239,188, 83, 92,101,137, 68,124, 82, 82, 34, 76, 38, 19,253, -226,139, 47,146, 37, 18,137,223, 55,223,124,163, 28, 51,102, 12, 17,218,213,199,130,143,149,195, 62,121,223,222,198,172,160,148, - 30,119,236, 80,171,213,202,221,187,127, 16, 3,192,206, 29,187, 36,148, 82, 95, 71,128,217,111,191,253, 86,209,186,117,235,224, - 18, 26, 92, 78,161, 80,152, 23, 44, 88, 16, 48,122,244,232,238, 71,143, 30,245, 35,132,180, 4,112, 17, 64,154, 93, 92, 7, 3, -184, 17, 24, 24,168,142,137,137,169,210,181,107, 87,175,178, 18,170,211,233,190,217,182,109, 91,245,101,167,125,113,192,208, 31, -137,252, 64, 80, 13,133,127,176, 14,245,189, 31, 96,232,208,161,225, 43, 86,172,248, 26, 64,179,114,136,172,161,253,250,245,155, -191,105,211,166,240,209,163, 71,167, 94,190,124, 57, 13,192, 38, 55,130, 47,115,196,136, 17, 41,155, 55,111, 14,163,148,174, 33, -132,200, 40,165, 59,133,226, 35, 64, 64, 97, 93,106,143,130,136,240,197,196, 23,113,231,223, 68, 8,217,195,178,108, 31,177, 88, -188,215, 57, 96,105, 72, 72,200,123, 22,139, 37,140, 16, 66,165, 82,105,106, 90, 90,218, 10,231,128,165, 73, 73, 73,125, 34, 34, - 34, 10,207,177, 7,221,116,142,181,161,126,229,149, 87,186,156, 59,119,238,203,125,251,246,165,235,116, 58,239, 29, 59,118, 40, -231,207,159,159,192,243, 60,157, 54,109, 90,100,183,110,221,242, 57,142, 75, 25, 59,118,108,173, 26, 53,106,140,189,117,235, 86, -172,179,208,114,195, 9, 66, 72,131,218,181,107,159,217,185,115,167, 90,163,209, 32, 61, 61, 29,217,217,217, 48, 24, 12,224, 56, - 14, 18,137, 4, 25, 25, 25,152, 51,103,142, 54, 57, 57,185, 88,192,210, 18, 56, 91, 84,175, 82,229,200,138,207,102,249,104,196, - 12,178,110,223, 4,155,147, 5, 9,107, 67,213, 6,190,144,202,148,184, 19,167,195, 7, 91,119,233, 30,100,231, 22, 11, 88, 90, - 18,231, 75,117,234,196,174,157, 50,197,219,148,152,136,176, 55,223, 68,126,126, 62,172, 86, 43, 24,134,193,159, 43, 86, 64, 26, - 20,132,153, 49, 49,134,235, 15, 30,116,118, 13, 88,234,142,179, 18, 10, 71, 33, 39, 33,100, 60, 33,164,208, 25,190, 95,191,126, - 69,142,253,225,135, 31,176,102,205, 26,152,205,102,150, 82,250, 30,165,116, 53, 33,196,219, 94,160,244,101,113, 86,175, 94,253, - 65,195,134, 13,127,229, 56, 78,108, 23, 25,244,198,141, 27,205,238,221,187, 87,213,133, 83,108,231,100, 31, 87,222, 3, 2, 2, - 86, 28, 60,120,176,122,112,112, 48,113,142,216,110, 23,138, 0,128, 9, 19, 38,116, 62,127,254,188,188, 73,147, 38,230,204,204, -204,230, 65, 65, 65, 71,183,108,217, 18, 56,104,208,160,228,235,215,175, 87,113,229, 12, 12, 12, 92,188,115,231,206,218,181,107, -215,102, 28, 86, 49,215,238,201, 81,163, 70,117,217,178,101,139,172,127,255,254,102,131,193, 16,226,227,227, 19,191,115,231,206, -192,190,125,251,166, 94,191,126, 61,236,113,228, 93,224,116,143,134, 13, 27,222,185,126,253,122,109,199,186,209,104, 68, 70, 70, - 6, 50, 51, 51,161,209,104, 16, 21, 21,245,231,189,123,247,106,187,227, 36,132, 52, 25, 48, 96,192,103, 95,127,253,117, 23, 47, - 47, 47,233,201,147, 39, 13,177,177,177,166,132,132, 4,214,102,179,209,176,176, 48,113,155, 54,109, 20, 61,122,244,240,146,203, -229,204, 39,159,124,146,249,249,231,159, 7, 18, 66,182, 58,166, 63,115,229,108,218,180,233, 47, 63,253,244, 83, 11, 66, 8, 68, - 34, 17, 44, 22, 43,114,115,115,241,240, 97, 18,110,220,184,129,115,231,206,225,240,225,195, 87,244,122,125, 19, 15,235,123, 0, -128,147,102,179,185,158, 76, 38,243, 88,216,115, 28, 7,177, 88,124, 27, 64, 87, 74,105,146, 80,150, 4, 78, 1,127,249,103,149, -203, 25,222, 46,192, 90, 16, 66, 28,147,146, 94,112, 13,225, 64, 8,249,136, 16, 50,203,201, 10, 86, 86, 90,180, 7, 15, 30, 60, -213,165, 75,151, 9,157, 59,119, 94,214,181,107,215,148,148,148,148,154, 75,151, 46,141, 96, 89,214,122,227,198, 13, 38, 62, 62, - 62,225,226,197,139,181,235,214,173, 59,246,214,173, 91, 39,202,176,102, 57,210,122,131, 16,210,186, 99,199,142,187,198,142, 29, - 91,173,101,203,150, 50,141, 70, 3,177, 88,140,187,119,239,226,202,149, 43,150,152,152,152,164,220,220, 92,143,167,224,161,148, - 94, 32,132, 68, 13,154,248,222,206,177,253,122, 7,190, 92,239, 57, 89, 88, 88, 24, 96, 52,226,246,131, 84,156,191,125,197,186, -254,212,249, 12,179,217,252,154,167, 83,240,216, 57,187,116,154, 50,101,231,236,215, 95, 15, 65, 74,138, 56, 44, 44, 12, 50,153, - 12,247,238,221, 67, 60,207,179, 11,214,173, 75,211,106,181,143,125, 10, 30, 71,204, 43,158,231,197, 0,160, 84, 42,241,238,187, -239,194,121,202,157, 53,107,214,192,104, 52, 2,128,152, 16,178,136, 16,178,161, 36, 43, 86, 9,156,213, 14, 28, 56, 80,205,153, -243,249,231,159,119,199,105,126,220,149, 36, 59, 59,123,230, 43,175,188, 18, 45, 22,139, 75,140,122,235,231,231, 7,157, 78, 7, -150,101,185,135, 15, 31,222,246,243,243,131, 68, 34, 1,165,212,109, 61,202,202,202,154,249,218,107,175,205,101, 24, 38,184, 36, - 78,181, 90,157,112,244,232,209, 58, 99,198,140, 97,254,247,191,255,221, 29, 61,122,180,252,232,209,163, 28,165,116,151,208,116, - 61, 89,112,254, 40,181,127,196,209, 82,142,253,141, 16,178,236,226,197,139, 65, 19, 38, 76,168,249,250,235,175,171, 59,118,236, -232,237,124,140,209,104,228,127,252,241, 71,195,154, 53,107,242, 78,157, 58,117,127,212,168, 81, 45, 81,224, 95,226, 22, 15, 30, - 60,216, 63,111,222, 60,223, 30, 61,122,212, 5, 80,232,159,149,145,145,129,132,132, 4,252,254,251,239, 9, 86,171,117,111, 57, -242,147, 69, 8,153, 61,100,200,144, 69,155, 55,111, 14, 31, 61,122,116,106, 76, 76,204,239, 40, 8, 48,236, 10, 77,191,126,253, - 26,109,222,188, 57,108,244,232,209,169, 0,230, 80, 74, 5, 63, 66, 1, 2,254, 66, 7, 87, 63,173, 82,125,180, 0,228,241, 60, - 15,147,201, 20,194,243,124, 31,158,231,225,237,237,237,238,184, 22,201,201,201,125,156, 39,149, 70, 25,211,229, 0,200,136,141, -141, 61,178,117,235,214,206,211,166, 77,123, 61, 55, 55,183,197,213,171, 87, 91, 2,128, 68, 34, 57,231,229,229,245, 75,116,116, -244,155, 83,167, 78,205,240, 68,100,185,136,173,250,139, 23, 47,174,180, 73,165,237,194,168,206,170,237,187, 38,124, 35,151, 71, -185, 76, 42,125,196, 62,169,180,169, 34,156, 83,190,254,122,130,122,251,246, 39,118, 82,105,179,217,204,246,239,223,255, 27,134, - 97,120,251, 87,172,216,108, 54,191,137,114,142, 84,117,229,236,215,175,223,255, 68, 34, 17,107,183, 20, 49,102,179,249,173, 71, -225,172,196,151,168, 30,192,196,210,142,121,225,133, 23,182,236,221,187,119, 88,159, 62,125, 56,171,213,154,222,187,119,111,241, - 47,191,252, 66, 25,134,137, 45,129,211, 12,224,191,165,113,134,134,134, 70,174, 92,185,242,242,164, 73,147,212, 91,183,110,245, - 63,125,250, 52,247,197, 23, 95,104,179,179,179,151, 8,237,214,147, 5,137, 68, 2,149, 74, 5,139,197,130,140,140, 12,148, 21, -178,138, 82,122,140, 16,210, 99,202,148, 41,175, 78,153, 50,165, 71,104,104,104,173,234,213,171,171, 24,134,193,195,135, 15,217, -228,228,228,116,155,205,118, 4,192, 46, 0,168, 85,171,214, 8, 0,235, 75,226,203,202,202,154, 75, 8, 57,182,121,243,230,158, - 94, 94, 94,245, 21, 10,133,191,205,102, 99,116, 58, 93,182,209,104,188,105, 50,153,246, 81, 74,207,150,179,220,199, 16, 66, 50, -223,120,227,141, 13,155, 54,109,138,184,123,247,174,238,226,197,139,175,184, 30, 87,191,126,253,211,155, 55,111, 14, 27, 51,102, - 76, 74, 76, 76, 76,185,124,180, 4, 8,248,151,124,136,157, 64, 9,254,197, 37,189,224,230,201,100, 50, 49,236,147, 75, 59, 44, - 90,110,142,187,224,226,147,149, 7, 96,158, 7,105, 50, 12, 29, 58,244,222,208,161, 67, 23,217,211, 32, 66, 65, 8, 7, 22, 5, - 30,255, 86,148, 17,210,161,132,140,178, 0,190,182, 47,149,117,243, 76, 40,136,151,179,248, 73,230,172,132, 52,153, 9, 33, 83, - 8, 33,139,236,155,166,252,246,219,111,171, 93, 44, 84, 87,157,247,151,101,121,114,199,121,229,202, 21, 87,206,223,203,195,249, - 79, 34, 55, 55,247,189,149, 43, 87, 94,152, 62,125,186,124,228,200,145,248,253,247,223, 49,127,254,124,115,110,110,238,214,138, -114,166,166,166, 38,132,134,134, 54, 93,190,124,249,135,203,150, 45,235, 75, 8, 17,230, 58,124, 66, 96, 52, 26,255,124,241,197, - 23, 65, 10, 28,150, 40,203,178,133,163, 69,237, 17,254,255,244,196,106, 4, 96,157,125, 1, 33,196, 31, 5,163, 12,179, 40,165, -174, 31,146, 83, 60,224, 59, 7,224, 92, 37,215,253, 99,132,144, 55,227,227,227,231,253,249,231,159,110,133,218,157, 59,119,142, -183,105,211,198,231,234,213,171, 31, 83, 74,247, 11,165, 67,128, 0,207, 33, 46,161,226,221, 1,240,186, 7, 21, 52,250, 17,174, -205,121, 96,253, 18,240,120,197,214,106, 66,200, 6, 39,107, 76,185,246, 63, 46,206,127, 10, 73, 73, 73, 57, 0, 10,167, 34,169, - 89,179,102, 49, 63,182,138,138, 45, 20, 68,129, 23, 34,193, 63, 65,184,123,247,238, 43,127, 67, 29,203,126, 66,235,254,113, 0, - 45, 75,218,111,179,217,102, 1,184,162, 10,252, 0, 0, 32, 0, 73, 68, 65, 84,152, 37,148, 10, 1, 2,202, 15, 33,250,180, 0, -215, 6,215, 92,154,224, 41,107,255,227,226, 20, 32, 64,128, 0, 1, 2,158, 20,184,153,235,176,125,225, 62, 0, 93, 74,120,249, -197,150,227, 2,229,158,208,179, 44,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,159, 61, 78, 39,238,101, 37,236,186,237, -194,247,213,211, 40,188, 10, 71, 31, 82, 74,255,182, 5, 64, 23,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206, 10, 94, -103,236,227,184, 78, 37,167,153, 2,104,239, 88, 23, 67,128, 0, 1, 2, 4, 8, 16, 32, 64, 64,165,192,163, 56, 90, 59,118,236, - 16, 57,254, 15, 25, 50,100, 20,199,113,133,195,222, 69, 34,209,202,239,191,255,126, 67,105, 23, 25, 48, 96, 0, 87, 26,167, 59, -148,117, 29,119,156, 13,159,243, 29, 23,224,171,122, 47, 55, 47,127,249,221,100,238,148,201,100,170,239,216,167, 80, 40,110,110, -216,176,225,143,202, 78,231,168, 81,163,234,186, 94,167,122,132,164,131,191,143,226,221,236, 92,253,210,223,255,208,125, 37, 20, -179,191, 23, 3, 7, 14, 44,215,241,247,238,105,112, 25, 97, 80,123, 73,161, 55,216,192, 93,122, 54,124,122,195,194,194,234,169, -213,234,225, 0, 26,228,231,231, 7,171, 84,170,116, 0, 55,180, 90,237,150,148,148,148,219,158,242,116,168, 65, 18, 0, 84,179, -175, 62, 56,126,143, 70,122,178,175, 44,116,171, 77, 76, 20,144, 19, 2,235,161, 59,180,112, 2,205,238,117,136,137,167,197,183, -119,171, 67, 44,148, 66, 74, 0,243,161,120,170,120, 86,202, 43, 33, 68, 13, 32, 10, 64, 67, 0, 87, 1, 28,166,148,230, 11, 53, - 89,128,128,103, 7,174,129, 74,157,215,197, 37,136,137,118, 82, 49,249,146,130,106, 0, 26, 96, 54,155, 37, 50,153, 12, 22,139, - 5, 42,149,114,213,219,163, 71,125, 6, 6,185, 54, 22,239,110,216,176,161,194, 51, 93,151,231, 58, 3, 6, 12, 56,230,122,190, -159, 90, 57,247,248,143,211,252,218,245, 92, 48,223,114, 47,115,170, 78,167, 99,228,114, 57,204,102, 51,124,125,125, 91,143, 27, - 59,182, 25, 35,161, 22,169,212,235,236,178,101,203, 82, 43,154,206, 15, 62,248, 32,212,106, 53,253,135,231,121,153,197, 98,145, -187, 94,199, 87,229,181,224,248,143,211, 84,237,123,205,255, 12,128, 32,180,158, 32, 20,136,172, 80,188, 63,244,101, 44,156,212, - 5,154, 14, 11,158,133, 10, 45,170, 89,179,230,132,200,200,200,193,235,214,173,147,214,172, 89, 19, 10,133, 2, 70,163, 49,236, -207, 63,255, 12, 27, 55,110, 92,251, 90,181,106,109,187,123,247,238, 42, 74, 41,231, 1,101,181,227, 27, 63, 1, 0,180, 30, 62, -167, 26, 33,228,191, 0,242, 1,160,125,245,191,246,117, 24, 57,167, 26, 33,100, 10,138,142, 22, 78,161,148,186, 13,146, 73, 1, -217,190,205,139,209,103,196,127,197,132,144,113,142,237, 61,234, 2, 63,125,187, 2,221,135,188, 87,100,123,183, 90, 16,255,184, -121, 49,122,141,248,111,137,179,154,119,175,203,216,120,158,150,104,137,103, 24,194, 30,186, 67,221, 77, 48,156, 70, 41, 61,228, -230, 94,118, 67,193,132,206,110,143,239,245,188, 56,205,106,227,220, 6,156,149, 74, 68,233,251,110,177,197,206, 29,217,148,216, -108, 92, 65,219, 42, 21,131,243,245,245, 61,254,241,199, 31,139,123,245,234,133,245,235,215,183,249,234,171,175,198, 18, 66,126, - 6,176,151, 82, 26, 47,212, 82, 1, 2,158, 93,193, 85,162,208, 18,139,176,118,239,206, 13,181,211,210, 51,241,198,152, 15,177, -117,235, 86,228,228,228,192,207,207, 15, 50,169, 84,178,124,209, 39,161,106,181, 87,232, 27, 99,167,174, 5, 80,175,162, 9, 42, -231,117,234, 20,203,144, 61,160,169, 88,196, 72,100, 50, 25,179,109,219, 54,228,230,230, 66,163,209, 64, 38,147, 48,203,230,127, -164, 84,171,189,149,111,141,159,222, 6,192,246,138,166,211, 98,209,183,217,189,117,131, 58, 35, 35, 3, 35,223,153, 10,215,235, - 72,165, 82,206,241, 98, 17,138,217, 63,135,204,204, 76, 0, 64, 96, 96,160,139,200,106,137,101,147,187,226,131,165,135,145,111, -178, 60,245,249,172, 89,179,230,132,129, 3, 7, 14,158, 59,119,174,148, 97, 10, 6, 14, 27, 12, 6, 24,141, 70, 84,169, 82, 5, -199,143, 31,151,206,156, 57,115,240, 15, 63,252, 0, 0, 95,148,151,255,250,245,235,213,171, 85,171,102, 2,128,222,141,124, 92, -247, 69, 58,246, 1,128,143,143, 79,153,124, 1, 26, 47,243,245,235,231, 27, 56,206,155,208,185, 10, 87,194,118, 19, 0, 85,105, - 92, 60, 79,197,135,191, 28, 87,226,254, 49,115,191, 99,175,110, 63, 85,175,102,205,154, 70,231,237, 37, 4, 92, 6,128, 16,189, - 94, 95,205,117,163,227,120,171,141, 11, 46,233,122, 93,223, 93,227, 86,128,217, 56,136,191,251,238, 59, 0,192,146,255, 14, 19, -125,253, 75,166, 88, 44, 46,104,106, 23, 45, 90,132,217,179,103,203, 14, 29, 58,212, 99,243,230,205, 61, 8, 33,203, 75, 18,170, - 2, 4, 8,120,250, 68,150,243,111,169, 66,139, 33,196, 71,237,227,141, 1, 67,223,198,193,131, 63,161, 93,187,118,133,251,106, -212,168,129,129,175,245,197,247, 27,151, 1,128,207,163, 36,234, 81,175,147,147,103,248,191,238,131,191,156,243, 32, 85,127,110, -223,190,125,104,219,182,109,145,243,135, 14, 26,128,111,191, 89, 4, 74,169,244,145,110, 30,101,164, 62,106, 47, 12,121,227, 29, -184,187,206,216,145,253,246,117, 27,184,162, 75, 90,150, 97,153, 80,212, 30, 47,110,221,186, 5,179,217, 12,181, 90, 13,137, 68, - 2,185,166, 26,146,197, 45,144, 65,106, 34, 61, 56, 31,147,187,132, 96,201,251, 29,241,193,210,195, 88,190,245, 60,154, 34,245, -169,206,111, 88, 88, 88,189,200,200,200, 34, 34, 75,167,211, 65,175,215, 67,171,213, 66,167,211,129, 97, 24, 76,157, 58, 85,122, -226,196,137,193, 97, 97, 97,177, 30,116, 35, 62,104, 61,124, 78,129,216, 16, 73,244,179,102,205, 50, 7, 7, 7,155, 85, 42, 21, - 21, 75,229,186, 14, 35,231,248, 0, 0, 35,150,234,150, 47, 95,110,169, 82,165,138, 73, 44, 22,203,222,123,239, 61,143,194,195, -152,205,102,234,204,105,177,152, 11,183, 47, 88,176,192, 18, 18, 18, 98, 86,169, 84,212,106,245, 92, 4, 95,187,151, 13,185, 84, - 4,185, 84, 4,133, 76, 2,159,234,205, 33,207,249, 29, 44,203, 98,225,194,133,214,208,208, 80,139, 74,165,162, 50,153, 76, 58, -105,210,164, 50,211, 57,106,212, 40,170,209,104,172, 42,149, 74, 58,123,246,236, 98,209,157,143, 94,125, 8,165, 76, 2,149, 92, -140, 58, 53, 34, 32,167, 70,143,211, 42, 18, 21,245, 70,144,203,229,104,211,166, 13, 26, 52,104,128, 61,123,246,116, 0, 32, 8, - 45, 1, 2,158,114,184, 90,177,138, 9,173,253,251,247,183,135,125,214,233,158, 61,123, 22,204, 54, 13,138, 41, 19, 94,195, 91, - 35,135,128,227,248,194,233, 38, 8, 67, 48,254,205, 30,224,121,206,147, 11,151, 57,196,179,188,215,113,230,164,132, 17, 1, 64, -237,200, 48, 58,246,173,215,193,241,124, 65, 24, 84, 0, 16, 1,111,143,236, 94,176,173, 18,210, 41, 2,135, 15,199,189, 10,119, -215,169, 87, 59,156, 97,173, 38, 16,167,201, 30,255,142,201, 54, 5,206,162, 56,123,246, 44, 84, 42, 21,134, 13, 27,134, 73,147, - 38,129, 19,107,176,227, 92, 22,166,173, 62,135,124,179, 21, 67, 59, 86,199,228,215, 27, 97,242,242,163,133, 34,171, 70,141,220, -167, 58,239,106,181,122,248,186,117,235,138,137,172,180,180, 52, 70,175,215,195,106,181,242, 58,157, 14, 28,199, 97,250,244,233, -146,153, 51,103, 14, 39,132,204,182,243,152,221,113, 30,191, 71, 35, 9, 33, 83,174, 95,191, 30,249,241,199, 31, 91, 59,117,234, -244,160, 70,141, 26, 6,145, 72,132,176,176,176, 21, 81, 81, 81,254,115,231,206,181,246,232,209,227,190, 72, 36, 66,157, 58,117, - 12,191,255,254,123, 36, 0,165,167,121,119,230,220,112,116,165,227,171, 15, 81, 81, 81, 9,117,234,212, 49,136, 68, 34,252,241, -227, 2,234,233,253,148,136, 25,212,173,226,235,248,140, 4,148,222, 64, 78,193,106, 84, 84, 84, 82,189,122,245,244, 12,195,224, -218,181,107, 17, 0, 20,101,113, 42,149, 74,219,208,161, 67, 31,220,190,125,187,216,241, 0, 32, 22, 49,104, 89,207,110,192,170, -210, 20, 72, 58, 93, 98, 58, 37, 34,176, 51, 39, 12, 19,107, 20,128,220, 39,208,172,213,106,161, 86,171, 11, 44,100, 86, 43,126, -251,237, 55,180,106,213,170,253,246,237,219, 79, 8,245, 93,224, 20, 56,255,130, 59, 45,242,180, 89,179, 28,130,203,157,143,214, -113,215, 76,113, 28,139, 26,213, 66,176,224,147, 81,224, 56, 30, 28,199,129,181,255,114, 28, 7,155,213, 90, 41,137,123,148,235, -248,169,149,115,127,218,246,174, 95,167,126,139, 58, 71,127, 60,242, 8,199, 1, 60,111,131,205, 6,112,188, 13, 60,199,193,102, -171,156,174, 34, 27,207, 35, 50, 34, 20,209, 31,143,132,235,117,182,124,191,189,247,209,189, 83, 85,237,122,205,255, 16,192, 66, - 65,219, 63, 30, 75,150, 74,165,194,150, 45, 91,208,188,121,115, 0,192,169, 56, 22,211, 86,159,195,161,232,214,104,221, 32, 0, -233,185,102,188,183,234, 10, 14,158, 75, 47, 38,178,158, 98, 52,168, 89,179,102, 17,145,181,120,241,226,192,213,171, 87, 87, 1, -128,215, 94,123,237, 97,231,206,157, 51,227,226,226, 16, 22, 22, 70, 50, 51, 51,123, 2,120,207, 94,241,167, 80, 74, 87,151,192, -107,168, 86,173,154, 41, 40, 40,200,236, 16, 68, 12,195, 64, 44, 22,163, 90,181,106,166,224,224, 96,115,157, 58,117, 12, 82,169, - 20, 12,195,192, 33,244, 60,108,128, 32, 18,137,224,224,116,181,246, 56, 56,203, 3,137,216,233,120, 90,220,130,196, 48,140,219, -235,149, 4,133, 66, 65, 1,148,120,188,136,113,106, 30,197,165,123, 8,108,188, 76, 37,132,144,227,148, 82, 92,190,124, 25,119, -239,222,133, 84, 42, 69,104,104, 40,102,207,158, 13,179,185, 64,239, 14, 28, 56,176, 61,128,107, 66,109, 22, 32,160, 16,199,159, - 54,129,229,106,213,114,231,163,197,184, 81,147,133, 2,168, 64,236,184, 17, 63, 54, 22, 54,155, 21, 40, 99, 82, 85, 79,133, 86, - 73,215,225, 56,190,212,235, 56,124,180,120,158,138,221,138, 44,158, 7,107,179, 85,202, 13,228, 57, 27,120,222, 6,119,215, 33, -132,225,236, 13,190, 84,168, 39,143, 7,102,179, 25, 67,134, 12, 41, 20, 89, 0,144,169,179, 33,223,108, 67,235, 6, 1,104,214, -113, 32,130, 53,114,196,156,124,136, 96,141,234, 89, 17, 89,200,207,207, 15, 86, 40, 20, 48, 24, 12,133,150,172,213,171, 87, 87, -177, 88, 44,140,197, 98, 97, 98, 98,182, 71,108, 61, 18, 87,117,203,161,184,170,235,118, 93,170,154,147,147,215,128, 82,170,164, -148, 42, 1, 44, 34,132,200, 75,227,151, 74,165,133, 2,197, 89, 0,201,229,242, 10, 9,152,194,134,198, 46,206,164, 82,169,219, -237,174,221,107,101, 65,234, 44,180, 64, 11,172, 90, 46, 98, 75, 36, 18,193,225, 27, 85, 22,100, 50, 89, 97,222,221, 65, 44,114, -186,158,168,252,174,152, 86,171, 21,122,189, 30,185,185, 69, 44,170,112,136, 96, 1, 2, 4,184,215, 34, 79,171,216, 42,210,126, -184,170, 73,216,103,159,102,109, 86,183,226,103,251,143,103,240, 32,213,128,208,192, 11,160, 37,204, 84, 93, 18, 6, 15, 30,188, - 49, 44, 44,172,112, 62, 45,185,210, 59, 96,236,187,159,130,101,173,240, 81, 50, 24, 51,188,123, 17,145, 85, 96,209,178,160, 36, - 57,151,147,103,248,191,238, 3,191,152,227,171, 14, 56,231, 42,126,162, 55, 93, 26,144,163, 53, 71, 48,204,175,200, 33, 97,220, -192,183, 63, 29,229,212,184, 95,221,182,102,214,100,143,111, 28, 97, 36, 3,198,173, 24, 75,197,222,245, 85,140,238,228,180,145, - 47,239,118, 22,115,254,254,254,251,186, 14, 88,222, 37, 45, 91,240,209,122, 92,144,201,100,152, 52,105, 82,145,109,129, 62, 18, -168,228, 18,156,185,145,137, 75,199,182,227,212,245, 76, 40,164, 34, 4,209,187,207, 76,190, 85, 42, 85,122,126,126,126,152,209, -104,132, 86,171,133, 86,171, 45, 42, 8, 36, 18, 50,246,157,137,129, 18,169, 12, 54,171, 5, 7,183,124, 94, 38,103,135, 26, 36, -161,125,117, 84,235,221,200, 7, 34,137, 76,119,163,102,205, 21, 98,177, 24, 12,195,224,199, 85,211,222,219,181,244, 93, 31, 0, -184,186,111,149,118,200,212,149, 95, 48, 12, 3,179,217, 44, 47, 79,186, 19, 19, 19, 35,204,102,179,201, 46,208, 28,166,117,220, -187,119,175,170,217,108, 54, 58,111,247, 4, 74,149, 15,160,169, 1,168,130,139, 89,207,238,223,191, 31,110,179,217,242,197, 98, - 49, 44, 22,139, 71,170,136, 97, 24,233,181,107,215, 34,120,158,119,123,124,131, 90,225, 64,104, 35, 64,230, 91,158, 6,215,163, - 99,220,125, 1, 11, 16,240,111,183,108,161,156,250,226, 73, 16, 88,238,254, 59, 11,173, 14,251,247,239,167,206, 95,136,172,205, -102, 23, 89,127,137, 30,142,227,145,156, 97, 66, 92,220, 31, 88,190,124, 57,206,156,255,175,239,220,185,115,229, 51,103,206, 52, - 15, 30, 60,120, 41,207,243, 47, 50, 12,115,117,192,128, 1,110,191,210,120,158,175,122,233,210,165,154,142,117,155,205, 6, 31, - 31, 31,248,248,248,160, 94,157,136, 98, 34,139,227, 56, 88, 75,233, 58,116,248,104, 17,202, 83,155,141, 3,199,243,133,226, 39, - 71,107,142,216, 27,123,185,182,211,225,207, 57,254,180,105, 94,191,100, 49, 56,110,118, 97, 62,182,173,153, 53,121,238,250,245, -242, 28, 46,104,210,144, 1,111, 53, 28, 56,100, 56,134,190,250, 74,123,179,197,178, 71,196, 80,222, 86,120, 61, 48,160, 40,226, -163, 37,224,239, 67,102,102, 38,140, 70, 35, 52, 26, 77,145, 23, 86,152,151, 1, 83, 7,213, 69,212,180,211, 48, 89, 57,200, 37, - 12,222,235, 27,137, 95,126,136, 65,166, 57,179,112, 52,226, 83,142, 27,241,241,241, 97, 85,171, 86,133, 86,171, 5,203,178,252, -107,175,189,246, 80, 44,150, 68,136, 37, 18,210,107,200, 68, 62, 53, 53,217,198, 48, 34, 80,202,225,149,129,227,136, 92,161,148, - 90, 45, 22, 22,192,148, 18,230,148,116, 14,225,224, 19, 21, 21,229,239, 24, 9,184,107,233,187, 62, 78,251,212,205,154, 53,243, -119, 30,117,232,161, 40, 38,131, 7, 15, 86, 86,171, 86,141, 0,192,175, 91, 62,118, 88,207, 72,239,222,189, 21,213,170, 21,248, -225,255,188,202,243, 57,181, 3, 85, 20,200,187, 7,228,221, 47,102,201,234,221,187,183,188,102,205,154,229,170,139,118, 7,248, - 18, 99,119,121,137, 89, 32,245,178, 71, 92, 35,155, 18,219,199,237, 32, 94,250, 10, 3,153,119,128,185,229,180, 67,191, 8, 98, - 75,128, 0,143,224,162, 69,158, 30,216,231, 54, 60, 14,160,131,253, 23, 69,124,180,122,246,236,121,162,136,122,164,128,141,181, - 22, 19, 89, 28,199, 65, 66,204, 88,190,124, 57,222,127,255,125, 0,144, 78,158, 60,121,247,220,185,115,251,243, 60,255, 34,165, -180, 45, 33,164,180,175,198,227, 97, 97, 97,105,148, 82, 9,195, 48,109, 87,173, 90,229,223,163, 71, 15,248,248,248,128,242,180, -152,200,226, 56, 30, 86,171, 5, 37,153,180,252,212,202,185, 63,109,159,228,215,169,239,162,206, 28,207, 31,113,136, 44,158,227, - 0,190,224,164,172,244,135, 56,124,112, 15,214,174, 89,155, 3, 66,111,129,130,103, 24,230,106, 73,105,228,121,254,197,211,191, -222,108,219,166,121,125,204, 93,191, 94,126,253, 82,202,238,137, 31,204,104, 56,112,200,112,108,255,126, 11, 24, 54,247,178,179, -200,226,108, 60,242,114, 50,123, 31, 19,124,180,254, 49,216,108, 54,228,228,228,192,166,207,193, 75, 97, 6,124, 58, 48, 24,105, - 57, 38, 72,248,124, 60,175, 78,199,177,236,251, 80,169, 84,207, 68, 94,181, 90,237,150,113,227,198,181, 63,121,242,164,148, 97, - 24,104,181, 90,116,236,216, 49, 51,131,175,162, 24,251,206,196,192,228,228,135,172, 90, 41, 54, 75,165, 18,164,167,167,243,237, -123, 12, 51, 14, 25,245,126,248,251, 31, 71,175, 75, 62,179,122,181, 39,215,112, 30, 9,232,186,239,235,175,191,182, 84,169, 82, -197, 36,151,203,101, 35, 71,142,244,168,255,208, 98,177,208, 5, 11, 22,152, 93, 71, 23, 90, 44, 22,186,124,249,114, 75, 68, 68, -132, 89,169, 84, 82,155,173,108,191, 79,134, 33,236,152,185,223,177, 44,203, 22,177, 98, 57, 68,150,141, 39,250, 47,191,252,210, - 26, 17, 17, 97, 81,169, 84, 84, 46,151, 75, 61, 73,231,196,137, 19,169,159,159,159,213,203,203, 75, 58,117,234,212, 71, 26,117, -104,227, 32,158,187,170, 48,188,131,220,199,199, 7, 58,157,174, 48,173, 97, 97, 97,130,216, 18, 32,192, 13,138,105,145,167,204, - 10, 87,146,143,150, 91, 7, 6, 30,208,167,165,103, 6, 7,134, 84, 7,203,178,246,197, 6,214,102,195,164,183,135, 96,233,154, - 47, 1,192, 33,182,162, 38, 79,158,188, 27, 46,254, 94,238,176,109,219,182, 57,147, 39, 79, 86,167,165,165, 29,218,184,113,163, -255,176, 97,195, 48,101,202, 20, 44, 90,180, 8, 18,153, 2,254, 65, 85, 11,175,227,184,110,102, 70, 54, 40,168,222,173,130,180, -251,104, 81, 10,113, 64, 80, 36,108,156, 13,188,205, 6,155,205, 6, 34, 42,200,218,225,131,123, 48,236,205,137,144,200,213,126, - 43,151, 47, 52, 54,124, 41,172,255,204,209,163,205,101,203, 83, 48,215, 47,165,236,158,248,254,212, 40,135,200,218,185,101,205, -173, 37,211,251,110,149,203,196,133,215,177,241, 60, 24, 70, 36,248,104, 61, 70, 4, 6, 6, 34, 35, 35, 3,185,185,185,240,242, -242, 66, 86, 86, 22,178,179,179,145,155,155, 11,179, 54, 7, 1, 92, 46, 8,155, 13,177, 88,140,244,196, 2, 31,192,103,196,154, -133,148,148,148,219,181,106,213,218, 54, 99,198,140, 33,211,167, 79,151,240, 60,143,184,184, 56,128, 16, 42,145,202,192, 48, 12, - 36, 18, 49,242,242,180,188,202, 91,147, 98,165, 34,149, 68,250,255,236, 93,101,120, 84,215, 22, 93,231,142, 79,220,136, 17,197, - 3,193, 93,130, 20, 45,218,226,193, 93, 10, 20,104,113,138, 4, 9, 77,113, 43, 82, 74,105,208,240,112, 41, 86,156, 96,129, 32, - 9, 22, 18, 66,146,137, 18,159, 76, 70,239,121, 63,152,201,155,132,200, 76, 8,165,237,155,245,125,243,205,204,185,231,174,123, -174,157,187,238, 62,123,239, 35, 0,195,225,151, 22, 38,252,182,253,200,247,233, 29, 24, 46, 63, 71, 23, 9,200,231,243,113, 59, -100,117,118,251,145,203,172, 0,128, 47, 20,103,116,233,210, 37,182,118,237,218,210,251,247,239,123,162, 72,212, 97, 49,247,167, -250,171,145,179, 57,102, 98,145,180,115,231,206,111,117,156,111, 46,108,206, 30, 54,121, 1, 33, 28,129,180,103,207,158,177,190, -190,190, 82, 14,135,131,200,227, 65,217, 95,141,156, 45, 34,255,139,233,253, 0,231, 94,209,113,143, 66,174,215, 90,177, 98,133, -170,123,247,238,113, 58,127,177, 55,111,222,184,246,232,209, 67,184,110,221, 58, 85,143, 30, 61,226,235,214,173,155,203, 48, 12, -194,194,194,220, 74,179, 84,233, 32, 22,139, 85, 99,198,140,121,251,228,201,147,114, 69, 29,150, 5,119,119,119,176, 44,139, 14, - 29, 58, 32, 63, 63,223,100,217, 50,193,132,127, 33,138,230,209, 42, 53, 51,188, 74,173,154, 50,225,219,165,155, 1, 98,161,215, - 11,252,207,176, 68, 65,190,255,254, 59,115, 0, 98,157,216,154, 49, 99, 70, 70, 89,141,208, 19, 89, 77,134, 12, 25,130,121,243, -230, 97,205,154, 53,154,159,126,250,137,243,252,101,140,114,228,228,197,153, 69,182, 3, 10,154,203,170,216, 41,197,241,101,100, - 73, 23,251,245, 88,181, 52, 33, 57,239,198,200, 73, 11, 11,122, 47, 13,128,108,226,162, 1,128,109, 63,255, 44,229, 9,173,204, - 7, 12, 30, 6, 0,157, 55,175, 15, 58,186, 28,191,148, 45,182, 40,241,153, 50, 99,182,173, 78,100,109, 89,183,226,137, 53, 73, -222, 52,245,187, 8,149,254,118, 0,192,206, 18, 71,253,122,172,234,154,146, 46,221, 96,186,212,254, 26, 40, 20, 10,108,220,184, - 17, 11, 23, 46, 68,122,122, 58,210,210,210,144,145,145, 81,240,201,205,205,133,179,179, 51,254,248,227,143, 15,252,152,254,233, -136,142,142,222,114,226,196, 9, 92,189,122,117,208,220,185,115,121,206,206,206,196,218, 58,153,168,148, 10, 0,148,166,166,166, -178,102, 22, 54,137, 14, 78,110,111, 37, 73, 41, 62, 42,165, 2,172, 70, 89,162,183,185, 54,189,195,247, 79,159, 62,245, 90,189, -122,181, 66, 63, 18,112,240,236,205, 27, 27, 55,110,108,183,105,211, 38, 69,207,158, 61, 99,117,206,235,134, 56,195,159,127,141, -111,159, 62,125, 92,167, 40,103,251,241,171,119,233, 56,245,163, 17,123,125,183,125, 87,245,234,213,237,124,125,125, 99, 75,227, -173, 82,165,138,204,197,197, 69, 81,171, 86,173, 92, 30,143,247,222,146,165, 82,229, 85,169, 82,133,117,114,114, 82,212,174, 93, - 59,215, 88,167,125,177, 88, 76,117, 86,177,226, 96, 76,212, 33,143, 3,245,144, 33, 67, 10, 50,195,127, 95,189,122,226,176, 97, -195, 92,102,206,156,137, 93,187,118,225,230,205,155,233, 69,215,105,215,174, 29,174, 93,187,182, 20,192, 98,211,221,109,130, 9, -255, 60,148,153, 71,171, 40,118,239, 14,190, 4, 61,159,166,226,176,124,249,114,161,214,146,213,121,250,244,233,144,201,100,182, -197,168,187, 78,186, 92, 27,197,137,172,160,160,160,253,148, 82, 55, 0,109, 52, 26,246,206,206, 95,118,119, 48, 64, 49, 22,112, - 82,194,112, 24,134,228, 10,120,244,225,207, 59,118,237,213,175,167,117,126,175, 9,130, 71,155,215, 7,201, 0,116, 46, 42,182, -250,247,239,159, 87,148, 83,135,137,147, 38, 22,136,172,205,235,131, 46,248, 54,241,248,122,225,216,101,197,138,179,101,139, 39, -152, 51, 12,105,165,239,163, 85, 28,103, 5,168,101, 19,167, 22, 66,161, 16, 7, 14, 28,128,159,159, 31,234,215,175,143,244,244, -116,228,230,230, 34, 55, 55,183,192,234, 21, 25, 25,137,216,216, 88, 8,133,194,127,213,190,107,167,213,217,232,226,226,114,113, -209,162, 69,195,210,210,210,122,100,100,100,218,159,218,189, 12,221, 6, 76, 34,237,186,251, 75, 21,148, 43,138, 79, 76,174,117, -229,204, 62,187,179, 7,183, 64,169, 80, 76, 32,228,231,103,186,244, 14,197,180, 51, 79,151,198,161, 86,173, 90, 82,125,161,226, -225,225,145,239,234,234, 42,247,245,245, 45, 40, 47, 46,154,175,184,125, 55,150, 83,235,255, 37, 45,235,120,234, 68, 91,209,180, - 17,102,102,102,208,137, 47, 99,218,169, 31,109, 89,108, 71, 89, 70,212,161, 62,231,111, 15, 40, 79,127,217,111,132,112,130,131, -131, 59, 5, 7, 7, 55, 1,240, 16,192,121, 0, 42,237,122, 5, 78,243,148,210, 37, 0,150,152,238,119, 19,231,255, 43,231, 63, -220,154,213, 14, 90,223, 44, 45,218, 83, 74,175,150, 40,180,202,130,206,241, 29, 0, 51, 99,198,140, 12,153, 76,102, 59,108,216, -176, 82,215, 73, 74, 74,218,181,103,207,158, 66, 34,171,111,223,190,163, 14, 31, 62,124, 49, 37, 37,165, 92, 59,102,107, 37, 94, -126,245,228, 28,219,118, 61, 87, 77, 7,240, 83,241, 50, 19,172,111, 19,151,175, 55,175, 15, 58, 90, 68,108,253, 14,160,111,113, -199, 11, 0,186,124,217, 7,251,118,111,214,249,118,137,159,220, 79, 56, 59,232, 65, 64,177,209,138, 54, 22,194, 0,109, 59,102, -194,228,163,245,151,192,199,199, 7,183,110,221,194,164, 73,147,208,177, 99, 71,244,233,211, 7,238,238,238, 16, 10,133,120,253, -250, 53,174, 95,191,142,232,232,104,228,229,229,161,126,253,250,255,202, 99,144,152,152,248, 92,155,140,244, 91,221,219,148, 80, - 36,230,251,143,158,238, 86, 16,117,120,112, 11,228,249, 50, 0,224, 18, 66,126, 34,132,252, 90,130, 67,252,123, 65,193,229,242, -195,195,195, 61,117, 86, 43,165, 82, 41,212,149,223,191,127,223, 83,151, 91, 43, 63, 63,223,224,168,195, 79,197,249,248,241, 99, - 55, 93,116,164, 46,186,144,203,229,242,195,194,194,220,116,156,114,185,220,160,168, 67,129, 64,192, 15, 15, 15,119,211,104, 52, - 21, 22,117, 88, 68, 24,159,211,126,116,157,178, 78,100,233,124, 58, 76,195,134, 38,152,240,207,198,149,162,147, 74,235,244, 68, -185,132,150,206,241,221, 8,165,199,245,242,242,234, 50,120,240,224, 66, 34,171,127,255,254,154, 35, 71,142, 92,113,113,113, 73, -102, 24,230,185,177,237, 40,240,209, 2,120, 69,151, 49, 12,243,168, 77,211,218, 96, 24,230,209,194,177, 99,229,203,241, 75, 33, -177,117,252,232,161,174, 37,245,139, 0, 96,239, 88, 25, 67, 70, 77,193,144, 81, 83,108, 1,180, 6, 74,142, 86, 44,173, 29, 38, -124, 58,180,106,213, 10,207,158, 61,195,133, 11, 23,112,237,218, 53,228,229,229,129, 16, 2,177, 88, 12,133, 66, 1,161, 80,248, -175, 21, 89, 37, 65,169, 84,170,231, 46, 93,189,135,195,229,171, 89, 86, 73,148, 74,229,104, 99,238,243,185,115,231, 50, 40,198, -247,106,234,212,169,197,150,127, 46,206,249,243,231, 23, 27, 37, 56,117,234,212, 82,163, 7, 75,194,119,223,125, 87, 97, 81,135, - 6,138, 47,147,160, 50,193,132,127,159, 85,171,216,208,189,114, 9, 45,134, 97, 30, 21, 19, 93, 72, 0,208,226, 34,250, 40,165, -106, 14,135,179,212,198,198,102,130, 84, 42,253,163,111,223,190, 51,250,247,239,175, 1,222, 59,200,151,119,167, 50,178,164,139, -219,247,250,113,102,102,174,124, 83,209,101, 69, 45, 79, 58,177,181,101, 67,208,214,163,135, 15,244, 79,146,196,111, 45,105,223, - 74, 18, 84, 37, 69, 43,102,101,203,150,182,239,245,227,244,140,108,153,201, 71,235, 51, 88,182,116, 40, 58,169,244,255, 3, 40, -165,114, 66,200, 44, 66,136,206,162, 59, 43,250,242,134,173,255,187,241, 55, 62,214, 95, 86,138, 53, 43,209,144, 9,162,139, 91, -175,180,101,159,128, 51,185,148, 9,162, 75, 67,178,145,124,201, 0,192,231,113, 82, 74,154, 60,154,207,227,164, 84,208, 57,212, - 37, 56, 92,106,186,163, 77, 48,225, 31,219, 23, 27,231,163,165, 19, 65, 37,161,164, 60, 89,165, 65,163,209,252, 8,224,199,138, -220,177, 39, 47,115,118, 0,216, 97,104,125,173, 79,214, 8,237,167,248,118,190,123,106,244,190,245,239,223,127, 27,128,109,166, - 75,237,175, 65, 72, 72,136,233, 32, 20,190,193,183, 18, 66,126,213, 9, 47, 67,151, 21,169,119,226, 19,180,235, 83,112,158,251, - 43,249, 78, 61, 83, 59,125,238, 78,218, 4, 19, 76,248,251,163, 56,107, 86,169, 81,135, 38,152, 96,194, 63, 78,108,201,203,179, -204, 4, 19, 76, 48,193,132,138,123, 89, 42,206,215,146, 0,232, 84,194, 74, 6, 71, 19, 16, 66, 58,149,163, 81, 23, 77,156, 38, - 78, 19,167,137,211,196,105,226, 52,113,254,127,113,150,197,173,191, 62, 33,100, 60,165,116, 7,254, 1, 40, 49,160,133, 82,250, -201, 62, 0, 58,153, 56, 77,156, 38, 78, 19,167,137,211,196,105,226, 52,113,150,115, 59,227,255,138,237, 84, 64, 59,105,209,143, -110,153,105,232,208,132, 79, 14, 55, 55, 55,176, 44, 11,134, 97, 16, 31, 31,111, 58, 32, 38,152, 96,130, 9, 38,252,171, 96,180, - 51,188, 9,197,152, 4, 61,191, 90, 8, 22,243,223,255, 65, 16,125,123,108,201,191,109, 31, 7, 12, 24,192, 49,166,126, 76,140, - 13,243, 0, 46,107,172,204,249,189,114,165,170, 53,154,176, 69,155,138,171,199,178, 44, 78,158, 60,137, 94,189,122,233,204,171, - 0, 0, 23, 23, 23,156, 60,121,178,160, 94,227,198,141, 11,146, 55,154, 96,130, 9,159,184, 79,179,173,227, 14, 66, 70, 3,244, -127, 97,151, 44,141,160,153,145,187, 11,213,179,169, 61, 10, 12,169,163, 87, 36, 3,197, 78,154, 17, 17, 87,194,240,137,238,129, - 99, 19, 21, 21,229, 89,173, 90,181, 88, 0,153, 69,170,125,176,140,150,114,243, 19, 66,136, 67,149, 70,195,205, 68,102,147, 21, - 10,133,183,133,165,101, 74,250,187,212,109,233,111, 31,111,209,171,102,117,231,206, 29,151,230,205,155, 75, 0,228,148,197,105, -130, 9, 21,122, 63,125,152,176,180,226,156,225, 73,141,126,222, 80, 51, 35, 64, 49, 20, 4,225, 52, 58,164, 95,185,120,170,245, -173, 12,150,219, 12, 64, 35,128, 54, 50, 23,139, 26,202, 20,202, 20,150,210,225, 52,234,224, 67,163,249,170, 12, 56, 13,160,123, - 9, 75,151,210,232, 67,198, 9, 37,150, 46,184,119,237,136,208,198,140,160, 90,227,190,179,161,151,193,249, 35, 78,140, 24,192, - 72, 66, 72, 71, 51, 51,179, 26,121,121,121,111, 40,165,143, 1,108,165,148, 74,202,201,201, 0, 24, 99, 97,110,222,205,211, 82, -208,232,109, 90, 86, 66,142, 74,115, 29,192, 79,148,210,140,138,186,168,222,139, 44,231, 29,211,253,155,143, 12,154,214, 9, 54, -237,127,156, 13, 96, 83,105,235, 48, 12, 51,206,213,213,213,187,114,229,202, 49,155,123, 55,216, 57,229, 68, 56,250,244,233, 3, - 0,227, 88,150,245,174, 92,185,114, 12, 33,100,167,161,125, 35, 33,196, 5, 0,151, 82, 26,167,253,111, 14,192, 23, 64, 21, 0, -209, 0,158, 82, 74,165, 31,121,142,254, 17,156,110,110,110,174, 44,203,142,117,114,114,234,145,156,156,124,154, 97,152, 95,226, -227,227, 37,159,185,239,217,174,243,175, 48,244, 27,192, 4, 99, 54, 32, 22,139,147,243,243,243, 29, 1, 64, 36, 18,165,200,100, -178, 79, 22, 37,248, 87,110,235,175,121, 50, 96,220,249, 27, 79,187,233, 23,117,105, 83,167,152, 27,151,212, 57,127, 35,162,109, -225,122,190,154,226,250, 64,109,246, 85, 44, 93,186,148, 4, 4, 4,140,170, 90,181,106,117,134, 97, 94, 44, 90,180,168, 80,234, -155,162,203, 22, 47, 94,252,191,204,173,197,112,186,213,108,117,124,208,224, 1,237,191, 25, 63,210,162,114, 37, 11, 36,166, 73, -237,127,222, 21,188, 58, 56,120, 95,207,177,131, 58,119, 3,128,101,203,150,125,229,238,238,238,197,225,112, 98,126,248,225,135, -223, 75,227, 52,193,132, 79, 0,227, 38,149, 46,243,254,172, 51,192, 28,249,180, 63, 64, 70,182,107,217,184,205,132,225,189, 8, -229,136,224, 63,110,142,218,104, 46,175, 81, 66,112,100,203,235,249,214,153, 49,160, 87, 39,166,137,175, 23, 92, 42, 89, 3, 12, - 15,219,207,188,177,223, 20,244,195, 86, 0,205,203,209,204,238,175, 67,247, 35, 49, 83, 3, 66, 0, 66, 0,134, 0,185,249, 44, -186,124, 53, 98,177,241, 66,137, 48, 54,102, 4, 51,246,231, 3, 0,231,163,251, 56, 66, 26, 85,170, 84,105,203,180,105,211,108, -235,213,171,231, 34, 18,137,204,100, 50, 89,245,168,168, 40,239,133, 11, 23,118, 38,132,172,162,148, 30, 49,146,211,163,154,155, -235,161, 77, 51,198, 52,171, 95,197, 19, 60, 69, 46, 88,185,212,253,101,212,171,150, 19,183,134,140, 35,132, 12, 46,207,148, 9, -105,105,105, 4, 0, 28, 28, 28,104, 97,145,213, 98,228,186,153, 93, 48, 99,237,121,228,229, 43,246,150,180,190, 68, 34,209, 89, -182,188, 79,158, 60, 89,167, 87,175, 94,104,230,237,134, 59,189, 82,209,244,120, 60, 0, 20,148, 27,177,175, 1, 0,230,107,251, -225,125, 28, 14,231, 66,167, 78,157,188,199,142, 29, 75, 26, 55,110,140,176,176,176, 42,251,247,239,239,196,229,114, 99, 52, 26, -205, 99, 0, 47, 40,165, 42, 3,185,121, 0,106,114, 56,156,122,127,103, 78, 87, 87, 87,177, 66,161, 24,225,230,230, 54,190,119, -239,222,245,122,245,234, 69,106,214,172,137,231,207,159, 55, 62,123,246,236,226, 6, 13, 26, 60,142,143,143,223, 33, 16, 8,246, - 72, 36, 18,217,103,120,195, 27, 15,192, 85,107,224, 88,106,192,183, 4,192, 82, 74,105,162,161,219,200,207,207,119,212, 61, 71, - 9, 33,142,159,114,127,140,217, 22, 33, 36,146, 16, 98,167,253,141,210,190, 25,134,129, 90,173,150,170,213,234,170,101,112,214, - 4,192, 24,209,100, 74, 41, 45, 45, 17,180, 24, 0,186,180,174,147, 14,130, 8,157, 69,171,152,151,204,136, 2, 1, 70, 81,231, -252,205, 8,187, 66, 86,176, 34, 88,186,116, 41, 89,188,120, 49,150, 44, 89,210, 11,128, 31,203,178,215,125,124,124, 54, 22,162, -100,217,130,101,139, 23, 47,222,176,116,233, 82, 2,160, 88, 65,100,231,213, 96,216,215, 95,247,105,191, 98,193, 84,139,132,119, - 74,132,199,200, 96,103,193,199,226, 89,147, 4,114,185,170,229,214,223,131,199,111, 94, 53,103,167, 70,163,249, 2, 64, 19,141, - 70,115, 31,192,239,165,113,154, 96,194, 39, 64,123,163, 38,149, 46,225, 38, 39,168,218,175, 45, 52, 24,233,233,238,212,127,218, -216,129, 98, 95,159,106,200,135, 5,222,164,105,112,230,212, 89, 0, 56,104,156,213,105, 80, 19, 46, 31,123,130,150,204,170,229, -215,204, 23, 79, 18, 84,184,159,160, 65, 94,140, 10, 28, 70, 5, 13, 75, 1,138,252,242,238,117,124,134, 26, 55, 94, 40,192, 16, -128,195, 0, 12, 67,192, 97,202, 73,198, 42, 94, 46,219,253,192, 55, 45,153, 5, 88,197,203,143,124, 0,125, 81,163, 70,141,245, - 1, 1, 1,206,201,201,201,118,247,239,223,135, 80, 40,132,173,173, 45,215,213,213,181,214,250,245,235,179,166, 78,157, 58,139, - 16,242,144, 82,250,198, 64, 78,159,238, 77,234,221,218, 17,180,204, 90,117,231, 44, 50, 15,252, 7, 28,134,130,111,110, 1,111, -177, 24,103,191,174,102,215,255, 84,204, 17, 66,136, 15,165, 52,161, 44,190,103,207,158,113,228,114,249, 96, 43, 43,171, 22, 60, - 30,207, 73,104,227,193, 74,184,205,222,165,146, 42,209, 41,142,121,109,103,118,114,234,182,102,122, 7,204, 88,123, 30,235,247, -223,254,173, 17,146, 22, 25,115, 12, 50,239, 93, 70,120,198,135,167,214,217,156,103,200,190,218, 2,152,163, 80, 40, 24, 62,159, - 79, 68, 34,209,176, 21, 43, 86, 40,253,253,253, 11, 28,192,252,252,252,224,231,231, 71,114,114,114,170, 92,190,124,185, 74,112, -112,176,154, 16, 18, 73, 41, 61, 94,178,197,194,236,109,126,190,204, 93, 36, 22,231,253,188,117,235,154,182,109,219,178,250,243, - 36,150,135, 19, 0,108,108,108,118,214,168, 81,131,204,155, 55, 79, 82, 81,156,222,222,222,231,253,252,252, 58,116,233,210,133, -219,186,117,107,184,186,186, 22, 44,115,112,112,128,159,159, 31,137,139,139,171,127,253,250,245,173,231,207,159,223,232,237,237, -125, 57, 38, 38,166,203, 95,217,235,104, 45, 85, 48, 66, 56,237, 40, 38, 17,242, 63,211, 88, 68,136,197,246,237,219, 29,117,115, - 50,170, 84, 42,104, 52,154,130,111,221,135,101, 89,104, 52, 26,172, 88,177, 66, 99,224, 49,149, 66,155, 28, 90,239,195, 22,247, - 45, 16, 8, 12,203,220, 75, 16,225, 34,204,172,109,110,110,238, 9,160,123,141, 26, 53,230,232, 47,174, 94,233,253,183, 84, 42, -141, 77,148,219, 68, 0,104, 91,218,229, 30, 16, 16, 48, 98,201,146, 37,125,240,191, 57, 43,235, 13, 24, 48,224,114,145,122,245, -180,223, 82, 66,200, 21,134, 97, 78, 2,216, 13,224, 3,171,187,153,153,197,132,105,147,199, 90,196,167, 41,177,252, 72, 26,118, - 95,203,198, 8, 63, 75,204,248,210, 26, 67,252, 7,153,135,252,231,240, 4, 0, 59,245, 86,121,238,227,227, 67,158, 61,123,102, - 18, 89,255, 46, 52, 5, 80, 73,239,191, 2,128,110,202,172, 52,237,125, 97, 95,164, 92,191,158,238, 59, 85, 91, 94, 73,187, 30, -213,227, 77, 5,112,175,156,253,221, 85,109, 27, 62, 0, 23, 0, 78,159, 62, 77,123,244,232, 65,116,223,197,247,236,253,207,140, -241,239,221,173, 71,199, 86, 96, 68,182,120,153, 2,132,190,165,224, 50, 42, 48,160,184,115,243, 50, 5,151,221, 83,100,195, 37, - 90, 79,136,119,255,239,234,213,245,253,241,151,160,111, 57,145, 41, 92,236,190,158, 7,101,126, 46, 82,147,222, 34, 69, 18,139, -196,248,104, 36,188,141,126, 12,144,197,134,114,126,184,227,128,134,213,190, 3,178,208, 30,207, 98, 35, 47,203,230, 84, 74,159, - 85,169,233,235,155, 33,208, 0, 74,233, 51, 3, 14,250,197, 18, 58,224,206,213,170, 85,251,105,193,130, 5,110, 79,159, 62,181, -146, 74,165,210,179,103,207, 94,141,141,141,117,114,118,118,142,155, 52,105, 82,171,202,149, 43, 59,126,245,213, 87,102,135, 14, - 29, 90, 0, 96,172, 1,156,190,189, 91, 52, 12,221,181,113,157,249,187,144, 77, 80, 68, 61,194,153, 68, 41,110, 38,231,209, 42, -214, 66, 50,165,126, 37, 88, 8,185, 88,214,218,213,162,251,209,168, 31, 1, 12, 41,141,243,214,173, 91, 46,102,102,102,107,135, - 12, 25,226, 58,109,218, 52,129,134,107,195, 61, 28,250,206,122,206,214, 80,215, 60,185,146,227,223,193, 11, 51,135,214,195,204, -245,127,234, 68,214,120,111,239, 76,182, 56, 78, 55, 55,183,113, 44,203,122,107,255,122,233,190, 59,222,200, 9,212,219,100, 65, - 57,177,116, 8,116,117,117, 5,195, 48, 49,241,241,241, 59, 13, 61, 71, 34, 81,241,179,167,216,218,218,162, 93,187,118,240,241, -241,225,182,109,219,182, 30,128,227, 37,113, 42,149, 10, 23,150,165,176,180,180, 20,219,219,219,219, 90, 90, 90,190, 83, 42,149, - 31,197, 9, 0,118,118,118,253,218,181,107,199,221,191,127,127, 90, 76, 76,204, 20,250,171, 21, 0, 0, 32, 0, 73, 68, 65, 84, - 29,127,127,255,104, 43, 43,171, 66,214, 95,115,115,115, 84,175, 94, 29, 63,252,240, 3,183, 91,183,110,101,114, 58, 57, 57,117, - 14, 14, 14, 6, 33,164,224,161, 93, 20,158,158,158,112,118,118, 70,247,238,221,185,253,250,245,235, 92,222,251,200,136,142,230, - 98, 49, 22,173,165,133,197,108,201,195,111,197,213, 55,224,188,167,232,172, 75, 34,145, 40,165, 60,237, 44,130, 18,135, 59,133, - 66, 97,129, 21,170,232,182,138,227,100, 24, 6, 11, 23, 46, 4, 33, 4, 60, 30, 15,124, 62,191,216,239,246,237,219, 27,219,206, - 56, 66, 8,195,231,243,231,112,185,220,177,114,185,220, 77, 36, 18, 73, 52, 26,205,111,114,185,124,133,214, 34,106, 83,220,181, - 91, 18,167,185,185,185,231,203,151, 47,107,148,116, 80,228,114, 57,234,213,171, 7,200, 17, 89, 26,103, 84, 84,148,103,213,170, - 85,107, 2,208, 77,209,118,141, 82,218, 86,239,191, 62,174, 81, 74,191,212,254,126,241,250,245,107, 79,157,208,210,231, 84, 41, -149,222,110,142, 86, 8,127, 35,195,238,107,217,184,180,192, 21, 29, 87, 72,208,183, 17, 23, 62, 30, 22, 80, 43, 85, 53, 7, 12, - 24,176, 7, 64, 77,237, 67,242,171, 1, 3, 6,212,226,112, 56,127, 2, 56, 6, 32,235,175,186,230, 77,156, 31,135, 50,180, 72, - 37, 66,200, 41,189,237,247,212,253,159, 59,119,238,252,192,192,192,167,132,144, 83,250,229,250,245,244,191,181,253,205, 41, 74, -105,207,121,243,230,249,174, 90,181,106,165,174,238,167, 80,136,198, 12, 29, 90,165,230,155,227,250, 91, 43,112, 57, 26,112, 25, - 2, 46, 7, 0, 37,136,125, 19,133,156,236,204, 27, 52,250, 63, 49,134, 89,178, 6,180,110,208,176, 94,208,190,245,179,153, 95, -175,231, 33, 83,154,143,103, 15,175,224,222,149, 99, 73, 26,181,230, 24, 8,189, 15, 48, 97,136,102,159, 83, 26,162, 41,255,133, -128,247, 86, 49,144, 34, 98,235,179,189,229,126, 89,171, 86,173,192,133, 11, 23,122, 62,124,248,208, 50, 59, 59, 59,117,239,222, -189,207,229,114,249, 67, 0, 27,222,190,125,219,110,195,134, 13,102,171, 87,175,238, 82,175, 94,189,154, 33, 33, 33,121, 6,112, -214,159, 53,114, 72,232,216,105,211, 69,145,135,182, 64, 16, 25,134,133,143,210, 52,151, 18,243, 22, 0, 88,143,184,220,214,169, -249,234, 11,235,218,185, 51, 94,150,124, 84,179, 17,180, 47,203,146,101,102,102,182, 54, 56, 56,216,179,105,211,166, 12, 0, 92, -127,161, 22,206,217, 26,234,122, 46,176, 53,105, 93,199, 30, 41,153,114,124,187, 37, 28,103, 67, 83,254, 40, 42,178, 62, 48, 4, -106,135, 11,245,203, 78,158, 60,105, 6,224, 3,103, 16,253,242,210,134, 17, 41,165, 25,132,144, 31, 5, 2,193, 66, 66, 8,109, -218,180,105,120,221,186,117,115,109,109,109, 33,147,201, 32,151,203,193,231,243, 33,147,201, 16, 27, 27,139, 59,119,238,192,214, -214,214,168,115,149,155,155, 11, 75, 75, 75,176, 44,251,209,156, 26,141,134,108,219,182,205,252,233,211,167,230,135, 15, 31,118, -154, 49, 99,198,187,218,181,107,223, 31, 52,104,208, 43, 71, 71, 71,249,163, 71,143,112,235,214, 45,100,100,100,160, 69,139, 22, - 6,113, 42, 20, 10,112,185, 92,200,100, 50, 8,133, 66,112,185, 92,168,213,106,176, 44, 91, 32,190,114,115,115,145,158,158, 14, - 62,159, 15,133, 66,241,151, 95,239, 58,139,150, 62, 74, 27,126, 43,174,126, 89,168,104, 63,169,210,134, 59, 51, 51, 51,197, 54, - 54, 54,115, 12,177,208, 17, 66,192,225,112,192,231,243, 65, 8, 65,219,182,109, 49,102,204, 24, 52,106,212, 8, 81, 81, 81, 56, -112,224, 0,238,221,187, 7, 30,143, 87, 80,223,224,241,137,246,237, 57, 34,145,232, 86,239,222,189,125, 23, 44, 88, 32,242,242, -242, 66,100,100,164,199,170, 85,171,230, 92,188,120,177, 15, 33,164, 9,165,148, 45,219, 74,175, 29, 18,124, 63, 92,216, 93, 46, -151, 35, 50, 50,210,152,117, 62, 64,181,106,213, 98, 25,134,121,197,178,236,117, 0,245, 40,165,109, 9, 33,103, 1,152, 23,169, - 42,165,148,126, 73, 8,201, 6,240,152, 97,152, 23, 44,203,198, 22,231, 78,101,105,105,153, 26,159,146,237,100,111, 33,194,240, - 54, 22,232,184, 66,130,254, 77,132, 16,242, 9,158,199, 36,161, 90, 85, 47, 18,126,227,120, 19,173,200,106,154,152,152, 8, 0, - 77, 0,196,196,197,197,185,232,132,150, 9,255, 14, 20, 21, 67, 58, 1, 21, 24, 24,216,179, 56,113, 85,204,189, 89,168,124,213, -170, 85, 43,245,254,103,124, 68,223,209, 14,133,157,225,219,107,173, 92,255, 19, 90,167, 79,159, 46, 93,129,176,232,123,234,200, -254,219, 29,149,196,211,183,113, 27, 61,235, 16, 69,216,157, 91, 0,232,111, 6, 53,198,181,151,152, 49, 51,255,109,219,202,169, -204,246, 43,121,136,147,164,224,214,153,223,144,154,248,102, 55, 64,103,208,232,144,236,143,238, 44,171, 12,240,117,116,176, 71, -190,146,130,165, 0, 62, 16, 91,159, 69,100,245,170, 89,179,102, 64,104,104,168,103,126,126,190,229,205,155, 55, 51,131,131,131, - 95, 41, 20,138, 95, 40,165,123,181,117, 78,164,165,165, 45,163,148,194,210,210,146,203,227,241,196,165, 57,115, 18, 66, 26,205, - 26, 59,226,198,143,219,118,137, 94, 61, 9,199,134,195,103,144,153,151,167,185,146, 34,251,138, 82,122, 74, 91,231,207, 7,105, -178, 4, 10,234,206, 99, 8, 92,204,121,206,132, 16, 17,165, 52,191,132, 55, 87,255, 33, 67,134,184,234, 68, 22, 0,164,229,168, -184,121,114, 21,167,117, 29,123, 52,238, 48, 0, 97,151, 67,112,232, 90, 2,170, 86, 50,187,230,109,158, 89,234, 17,101, 24, 38, - 70, 79, 52,121,157, 60,121,210,172, 87,175, 94,121, 0,244,135, 68, 63, 40,103, 24, 38,166,140,155,109, 17, 33,196,105,207,158, - 61,140, 74,165,202,141,138,138,130,179,179, 51,156,156,156, 96,109,109,141,103,207,158,225,210,165, 75,120,254,252, 57, 88,150, - 69,131, 6, 13,140, 58, 95,239,222,189,195,163, 71,143,208,189,123,143, 25,169,169, 41, 86,182,118,246,210, 27,215,175,173, 46, - 15, 39,203,178, 4, 0,124,125,125,225,235,235, 43, 74, 72, 72,112, 59,117,234,148,227,242,229,203,223,122,122,122,238,147,201, -100,133, 44, 7,134, 10, 45,173,112, 41, 16,129, 34,145, 8,124, 62, 31,217,217,217, 72, 78, 78, 70, 78, 78,206,251,177, 28, 27, -155,207, 34,180,138,179, 80, 85,100,253, 79, 41, 14,139, 19, 83,132,144,161, 0,230, 24,184, 47, 80,171,213,224,243,249,104,222, -188, 57, 54,109,218,132,123,247,238,225,216,177, 99,240,240,240,192,200,145, 35,193, 48, 12,158, 62,125,106,108, 19,217,208,208, -208, 57, 95,125,245,149,239,158, 61,123, 68,177,177,177,120,254,252, 57,108,108,108,176,105,211, 38,225,248,241,227,171, 93,190, -124,121, 17,128,159,202,220, 87,189,232, 66, 87, 87,215,129,245,234,213,251,160,142,179,179,179,245,185,115,231, 28,117, 2,172, -104, 68, 98, 49,200, 92,180,104,209, 58, 31, 31,159,245,218,225, 66, 63, 0,230,148,210,246,135, 15, 31, 38, 0,208,191,127,127, - 74, 8,209, 61,144, 30,135,132,132,116,120,246,236, 25, 93,178,100, 73,177,253, 92,106, 74,226,182,117,155,182,175,251,113,233, - 44,193,204,238,214,232,223,132, 7, 17,159,192,202,140,135, 21, 27,119,170, 30,220,185,246,200,197,197,229, 20,128,175, 18, 19, - 19,225,226,226,146, 11,224, 5,135,195,137,209,104, 52, 18,147, 47,252, 63, 11,197,105, 17,173, 85, 57,177, 56,161, 84, 30,161, -166,111,241,210, 97,222,188,121,190,129,129,129,119, 63, 70,100,233, 59,193, 19, 66, 40, 33,164, 61,165,244,106,193,195,180,196, - 33,195, 2,219, 23,227,226,236,228, 96, 55,119,100,107,176, 44,160,214, 0,106, 13,133, 52, 79,134,200, 39,247,242, 32, 34,135, - 13,106,145, 80, 16,180,124,193,244, 42,225,241, 12, 36, 25, 74, 92, 61,190,157,166, 38,190,233, 71,163, 15,141,174, 40,145,229, -236,232,112,101,255,246,101,184, 23,173,128,134,125,175,179, 88,150, 22,252,254, 12, 15,156,234, 14, 14, 14,171,111,223,190,237, - 37, 20, 10, 45, 95,190,124,169, 9, 9, 9,145, 40, 20,138,173, 58,145,165,197,208,198,141, 27,171,204,205,205,145,155,155, 43, - 87, 42,149,185,165,136, 44,183,246,141,234, 95,251,113,219, 46, 81,190, 66,129, 44,153, 28, 28,123,199, 66, 34, 75,139, 86, 29, -106, 84,174, 76, 68,150,160, 0,222,100, 43, 37, 37,137, 44, 0, 16, 8, 4,157,166, 77,155,166, 63,190, 13, 7, 75,158,218, 76, -200,211,220,140, 72, 99,195, 46,135,224,250,211, 52, 86,196,231,104, 42,209,232, 42,101,237,123,124,124,252, 78,137, 68, 50, 79, - 34,145,204,211, 19, 87,111, 0,204,171,109,205,255,160,188,142,141, 96,158, 68, 34,153,199,178,236, 78, 3, 14,173,100,200,144, - 33,241,117,234,212,201,242,241,241,201,122,247,238, 29, 34, 34, 34,144,145,145,129, 13, 27, 54, 32, 50, 50, 18, 44,251, 94, 7, - 22, 55,140, 98,128, 64, 66, 70, 70,186, 5,165, 20, 25,233,239,204, 23, 44, 88, 96, 93, 30, 78,141, 70, 83,232,222,170, 92,185, - 50, 38, 77,154,196,207,203,203,179,121,251,246,173,149,254, 50, 67, 57, 21, 10, 69, 65, 42, 12, 74, 41, 20, 10, 5,178,178,178, -160, 80, 40,240,234,213,171, 2,145,165,221,254,103,179,104,233,126,139,197,226,100,157,131,168, 72, 36, 2, 33,164,184,225,183, - 10,201,254,172,219, 22, 33,132,138,197,226,228,114,136,195, 50,247,199,192,243, 14, 62,159,143, 49, 99,198,224,238,221,187,136, -138,138, 2,135,195,129, 84, 42, 69, 94, 94, 30, 58,119,238, 12,129, 64, 96,172, 69,139,242,249,252,161,243,231,207, 23,197,196, -196, 32, 45, 45, 77,231, 76, 15,141, 70,131, 25, 51,102,136,133, 66,225, 80, 99, 77,247, 18,137,164,235,203,151, 47,107, 22,253, - 36, 37, 37,101,233,251, 20,150, 23,135, 15, 31, 38,253,251,247,167,253,251,247,167, 58,193,101, 40, 50,227, 35,182, 29, 59,113, -234,194,119, 63, 4,229,230, 73,115, 80,213, 85,140,220,156, 44,172, 8,252, 81, 21, 26,122,253,202,156, 25, 19, 91,134,132,132, -172, 2,240, 66,187,202,139,144,144,144, 17, 63,252,240,195,239,208,166,121, 48,225,159,131,226,180,136,254,189, 87, 17,195,123, -197,113,104,135, 15,197,229,164,212, 69, 28,182,211, 9, 47,173,232,186, 82,200,162, 85,106,231, 83,109, 80, 67, 39, 7,251,203, -123, 54, 47,181, 56,245, 4,136,143,123,131,212,196, 88, 52,105,217, 30,145, 79,194,193,170, 52, 71,232,203,144, 50,195,211,137, -247,128, 26, 62,181,235, 76,110,215,178, 46,130, 78,229,226,101,216, 57,100,166, 38,110,166, 49,135,142, 84,196, 9, 34, 85, 6, -248, 58, 85,114,184,242,251,150, 0,187,179, 17, 12,226,226,222,224,248,239,235,161, 82,126,160, 43,206, 24,221,121,179, 10, 65, -110,102, 50, 20, 57, 26,136,152, 60,145,145, 39,245, 85,165, 74,149,246,172, 91,183,110, 98,203,150, 45,205,252,253,253, 95,102, -100,100, 44,167,148, 30,210,235,224,191,168, 89,179,230,247,155, 55,111,174, 22, 23, 23,135, 75,151, 46,189, 4,112,191, 20,206, -120, 14,135,179,245,210,239, 59,103,137,171,212,194,134,249,223,169, 15,223,139,232, 77, 41, 61,171,199,233,211,169, 94,141, 83, -203,191,255,134, 97, 31,252,129, 71,177,201,136,206,146, 95, 42,137, 51, 45, 45,141,200,100, 50, 47, 27, 27, 27,253,237,192,197, - 92, 42,159, 61,176,134,164,243,156, 27,174,249, 74, 13,132, 60,134,126,219,199, 83,114,231,216, 33,251, 52,121, 26,209, 69, 35, - 26,139,151,185, 26,112,185, 92, 56, 58,254,111, 4, 41, 34,195,168,216, 7,139,187,119,239, 50, 28, 14,167,144, 64,215,183, 16, - 25,107, 41, 50, 6,134,114, 22, 21, 90, 58,168,213,106, 82, 94, 78,185, 92, 94,108,206,177,226,124,181, 88,150,253, 36,251,111, -140,133, 74,127,200, 80,231, 79,151,159,159,239, 40, 22,139,147,117,195,127, 21,101,209,250,152, 72,196,210,134, 47,141,105, 31, -195, 48, 96, 89, 22,124, 62, 31, 13, 26, 52,192,169, 83,167, 96,103,103, 7, 43, 43, 43, 88, 89, 89, 65, 44, 22,195,222,222,190, - 64,104, 49,140,193, 81, 58, 84, 46,151,123,120,120,120,224,213,171, 87, 16,137, 68, 5, 31,161, 80, 8, 95, 95, 95, 72,165,210, -202,159,207,118,255,105, 48,110, 80,167, 62, 91,130,143, 14, 63,117,234,244,100,165, 60,191,110,173, 90, 53,233,253,208,203,143, -230,204,152,216,205, 36, 77,254,191,160,179, 70,233,251, 90,205,157, 59,119,126,121,249,230,206,157, 59,191, 56, 11, 87,121, 5, - 23,222, 15,245,233,190, 81, 32,180,116, 10,178, 56, 37,169, 19, 89,187, 55, 45,177, 58,250, 16,136,143,143,193,133, 67, 27,115, - 84, 74, 69, 6,203,170, 60,163,159,135, 3, 12,126, 51,168, 9, 12,109,214,167,123, 7,114,225,169, 2,217,153,169,120,113,255, -220, 27,200, 4,243, 42, 82,100,237,217,178,212,238,228, 19,130,184,184, 55, 56,123, 96,125,150, 74,173,252,130, 70,135, 60,252, - 24,238, 97, 2, 65,159, 65,181,109,122,142,245,147, 64, 67, 52, 24, 26,249,236, 75, 87, 63,210, 71,114,189,244,200, 48,125,164, -166,166,174,176,176,176, 96,126,250,233,167,209,249,249,249, 75, 40,165,135,245, 46,156,206, 85,171, 86, 13,218,182,109,155,219, -219,183,111, 5, 55,110,220, 72,191,114,229, 10, 5, 16, 88,198, 3,124, 54, 33,132,211,200,171,242,212, 7,111, 18,122, 83, 74, -255,208,227,244,237,217,184,206,205, 93,129,139, 44, 85, 55, 15, 35, 55, 49, 14,243,110,198,103, 3, 48,248,120,171, 84, 42,100, -100,100, 64,149,155,161,110,226, 34,205, 90, 50,192, 81,158,156,145,207,229,177,121,106, 31,171, 20,249,229,244, 55, 28, 51, 51, -179,114, 31, 87,190, 64, 0,149, 74,133,202,149, 43, 23,148,101,231,228,130, 16, 2, 23, 23,151,178,110,182, 0, 0, 51, 90,181, -106, 69,154, 55,111,126,103,253,250,245,231, 75, 19, 43,229,177,104,149, 5, 67, 57, 89,150,101, 74, 56,190,164,188,156,250, 22, -173,178,132,214,231,180,104, 21, 39, 90,244, 69,162,190, 16, 42,143,143,214,167, 20,135,198,136,176, 98,120, 10, 44, 90,225,225, -225,112,119,119,135, 82,169,132,165,165, 37, 44, 45, 45, 97, 97, 97,129,156,156, 28,240,120, 60, 24,185,207,172, 72, 36,122, 27, - 17, 17, 81,179, 82,165, 74,208,104, 52,133,196,214,203,151, 47, 97,110,110,158, 96,172, 69,203,213,213,245,156, 54,234,176, 16, -156,157,157,173, 43,226,184,234, 91,178,250,247,239, 95,174, 23,179, 45,129,179,130, 1, 4, 15, 24, 48, 96,207,227,208,211, 77, - 92, 92, 92, 78,251,248,248, 16, 0, 48, 69, 24,254,187,172, 89, 37,140,176,165, 22,177, 68, 41,244,254,167, 2, 32,218,255,169, -122, 66, 76,255,183,162,152,178,119,129,129,129,151,245,252,187, 82, 63,114, 23,116, 41, 30, 10,249, 66,115,203,178,100, 57,218, -219, 93,254,101,195, 18,171, 67, 97, 64, 66, 92, 12,174, 30,217,148,165,214, 40,191, 0, 75, 19, 67, 47, 30, 57, 12,130, 60, 68, - 31,190, 10, 28, 50,160,139, 64,163, 70,181, 61,113,236,169, 10,169,241, 47, 65, 41,187,155, 38,255,158,247,209,157,163, 86,100, -237,222,180,196,238,104, 56, 65,124, 92, 12, 46, 28,218,152,165,214, 40,191, 40, 79,178, 83, 29,198, 18, 98,203, 49, 23,109, 29, -222,165,233, 64,207,170,110, 96,169, 10, 44,159,162,239,108, 7,238,139, 7,121,199, 60,186,112, 14,177,185,236,228,248, 80,195, - 18,129,230,230,230, 46, 35,132, 28,165,148, 70,234,117,200, 95, 86,171, 86,109,229,207, 63,255,236,149,144,144, 96,249,224,193, -131,236, 29, 59,118,196,176, 44, 27, 64, 41, 45, 51,138,138, 82,250, 29, 33,228, 23,253,124, 57,132,144,250,179, 70, 15, 9, 29, - 50,106,172, 40,230, 98, 48,108, 99, 34,241,253, 77,137,230, 69,134,194,159, 82,154, 84, 18,151,131,131, 3, 77, 77, 77,125,147, -153,153, 89,211,220,220, 28,239,222,189, 67,122,122, 58, 50, 51, 51, 33,207,206, 80,219,107, 50,165, 68,157, 14, 46,151,139,148, - 56, 53, 52, 26, 77, 82, 89,214,172,146,162, 14, 1, 4,202,100, 50,157,200, 42, 40,183,178,178, 10,180,178,178,210,249,104,237, - 44,225, 33,166, 75,239, 64,180,233, 29, 90,252,241,199, 31,207,186,117,235, 22, 95,156, 88, 17, 10,133,200,207, 55, 46, 75, 72, - 73, 81,140,229,225, 44,201,162, 85,180,220, 24, 78,221,240,165,206, 9,190,104,185, 14, 28, 14, 7, 44,203,126, 80,254, 87,139, - 22,253,232,192,242,136,156, 66,214,229, 50, 18,135,150, 39, 18,177,162, 45, 90,186,115,193,231,243,113,226,196, 9,140, 26, 53, - 10, 26,141, 6,102,102,102,176,176,176,128,185,185, 57,142, 28, 57, 2, 93,250, 7, 99,154,168, 82,169,246, 6, 6, 6,206,223, -182,109,155,152, 82, 10,129, 64, 80, 32,180,150, 44, 89, 34, 83, 42,149,123, 13, 17, 90, 5, 25,223, 89, 26, 81,189, 82,233, 81, -135,197,173, 83,130,191,150, 77, 64, 64,192, 8,150,101,251,160, 72, 10,135, 34,245, 10,165,126, 40, 45,189, 3, 0,219,128,128, -128,113, 44,203,234, 2,104, 10, 69, 23,234,213,211, 61, 75,106, 14, 24, 48, 96, 79,209,168, 67, 19,254,241,184,247, 55,110, 91, -123,189, 68,165, 68,219, 95, 20, 8, 46,110,201, 34,107,128,143,163,189,195,229,157,235,151, 88,237,187, 11, 72,226,162,113,235, -196,230, 44, 13,171,210, 23, 47,109,140,236,121, 27,185, 58,218, 32,253,182, 12,217,105,111, 1,138, 7, 31, 47,178, 6, 85,119, -116,176,191,178,107,227, 18,187,144,135, 12, 18,222,198,224,138, 86, 12,126,140,200, 26, 38, 16,244,241,173,225,182,107,240,151, -173,109,173,137, 26,234,216,103,248,101,228, 64,132,245, 82,162,245, 32,107, 52,235,110,137,106, 13, 69, 3,207,236, 76,239,232, -234, 71,198, 26,106,221, 42, 34,178,122,121,121,121, 45,189,115,231,142, 39,203,178,150, 87,175, 94,205,217,182,109, 91,116,126, -126,254, 70, 74,233,105, 35, 30, 14,250, 34,171,209,220,241, 35,111,172,252,249, 23, 81, 68,216, 61, 4,237, 61, 9,153, 74,161, - 57, 23,159, 59, 64,127, 88,177, 20, 75,201,197,141, 27, 55,122, 45, 92,184, 80,144,158,158,142,180,180, 52,100,100,100, 20,124, -114,115,115,225,236,236,140, 63,254,248, 67,153,157,157,125,219,128,135, 77,133, 71, 29, 22, 7, 75, 75, 75,240,249,124, 40,149, -202, 2,139,150, 80, 40,132,181,181, 53,222,189,123,135,131, 7, 15, 2, 64,122,169, 22, 54,190, 32,145, 97,136,187,216,204, 76, - 46, 18,137,216,226,172,106,198,114,106, 17,255,229,151, 95,186, 5, 4, 4,136, 26, 55,110,252,129, 69,171, 60,156,148,210,188, - 46, 93,186,152,109,220,184, 17,158,158,158, 80, 40, 20,133, 4, 21,195, 48,224,243,249,136,139,139,195,242,229,203, 65, 41,205, -251,171,123, 30,125,209,162, 47,134,180, 62, 84, 31, 8, 33, 67, 45, 70,101, 13, 13, 26, 27,137,168, 47,220,132, 66, 33, 50, 51, - 51,197,132,144,161, 37,100,176, 55,216,162,165, 19, 90,145,145,145,216,179,103, 15,186,119,239, 14, 91, 91, 91,100,100,100,224, -208,161, 67,120,246,236, 25, 4, 2, 1, 8, 33,198, 88,181,216,230,205,155,255,120,253,250,245, 94,254,254,254,117,190,255,254, -123,113,221,186,117,241,226,197, 11, 4, 4, 4,228,135,133,133, 69,201,100,178, 0, 24,146,216, 84,155,241, 93,151,140,212,160, -168,195, 34,235, 20, 69, 9,233, 29,190, 44,129, 77, 63,245, 67,161,244, 14,250,184,117,235,150,183,151,151,151, 15,222, 71, 18, -234, 30,184,250,209,133,133, 30,198,137,137,137, 77, 97,138, 58, 52,225,175,237,235,174, 18, 66, 10, 18,150,234,196,215, 7, 81, -135, 31,174, 73,102,248,143, 28,111,181,247, 46, 65, 92,108, 20,238,159,217, 90, 84,100, 25,210,217,116,210,207,181, 33, 18,155, -215,101,201,251,112,230,236,180, 56,128,114,140, 22, 90, 69, 57, 65,217,239,252, 71,140,183,219,127,159, 64, 18,247, 26, 55,143, -111, 49, 90,100,233,115, 14, 19, 8,126,224,113,200,194, 30,109, 27,241,219, 52,172, 1,243,148, 55, 72,138,151,224, 96,100,106, -122, 84,134,124,236, 77,162, 68,236,107,249, 47,221,199,217,217,217, 58,243,208,115,162,189,221,237,147,217,199, 42,127,193, 40, -169,146, 6, 74,110,208, 37,197,182,243,195,109, 86,183,178,178,250, 41, 44, 44,172,146, 72, 36,178,186,127,255,190,102,251,246, -237,113,249,249,249,171, 41,165, 7, 12,218,247, 15,151,187, 53,173, 81,245,234,202, 45, 59, 69,185,210, 60, 72, 21, 74, 8,157, - 92, 52, 71, 67,159,244, 43, 41, 1,102, 81, 78,161, 80,184,255,192,129, 3,221,253,252,252, 60,235,215,175,207,164,167,167, 35, - 55, 55, 23,185,185,185, 58,171, 23, 34, 35, 35,217,216,216,216, 4,161, 80, 88,102, 59, 43, 42,234, 80,159, 83, 47,189,195,124, - 0, 12, 33,228, 94,120,120,120,110,183,110,221, 32, 22,139, 33,149, 74,225,225,225, 1,181, 90,141, 51,103,206, 32, 44, 44, 76, -202,178,236, 85, 0,225,165,237,187, 76,150,231, 65, 8, 97,100,121,121, 13, 70,140, 24,209,110,230,204,153,133, 66,210, 29, 29, - 29, 97,103,103,103, 20, 39, 0,164,167,167,215,254,227,143, 63,166,135,135,135,127,215,189,123,119,235,249,243,231, 11,189,189, -189,161,209,104,152,242,114,102,100,100, 88, 63,120,240, 96,117,155, 54,109,190,233,214,173, 27,119,229,202,149,176,182,182,134, - 70,163,129, 88, 44, 70,118,118, 54, 2, 2, 2,112,227,198, 13, 53,165,116, 75, 86, 86,214,247,198, 92, 75,229,180, 96, 21,226, - 44,201, 2, 84,146, 16, 42,174,254, 95,209,206, 34,194, 13, 54, 54, 54,115, 0,204, 41, 33,131, 61, 12,189, 55,117, 66,139,195, -225,224,205,155, 55,216,190,125,251, 7,121,180,116,233, 31,138,227, 46, 97,223,233,149, 43, 87, 52,132,144,150,247,239,223,159, - 51,124,248,240,177, 82,169,212,205,220,220, 92,162, 82,169,126,147,201,100,186, 60, 90,124, 99,250, 16,169, 84, 26, 91, 92,212, - 97,209, 58,128, 77,169,156, 69,210, 59, 20, 74,225, 80,100,181, 66,169, 31,138,166,119,208,231,108,213,170, 85, 12,195, 48,207, -181, 67,240,207, 81, 36,186, 80,143,179,102, 98, 98, 98, 83, 23, 23,151,171, 0,204,138, 70, 29,254, 21,215,146,137,243,255, 91, -108,161,180,132,165,197,175, 5,209,197, 59,111, 32, 16,167,227,209,165,221, 70,139,172,226, 32,207,207,139, 90,180,255,109, 67, -133, 60, 31,210,172,228, 23, 52,230, 64,202,199,159,109,152, 95,188, 23, 11,145,121, 38, 30, 94,252, 53, 83,163,201,255,130, 70, -253, 39,188,252,116,152,247,243,217,195,124, 98,109,135, 71,211, 71, 65,146, 41,197,217,232,140, 67, 52, 79, 62, 57, 88, 59, 87, -160, 91, 75,114,125,215,130,164,173,126,125,173, 7, 58, 84,230, 97,237,172,223, 32,154,107,207,111,214,177,173,193,115, 32,234, - 28,228, 55,108,216, 48,201,207,207,207, 98,224,192,129, 47,211,211,211, 11, 57,200,151,227, 68,199, 19, 66,126, 62,189,109,205, - 44,251,122, 45,176,249,135,217,154,253,161, 79,138, 70, 33,150, 10, 31, 31, 31,205,173, 91,183,102, 78,154, 52,105,109,199,142, - 29, 43,247,233,211,135,239,238,238, 14,161, 80,136,215,175, 95,227,250,245,235,202,232,232,232,132,188,188,188,153,245,235,215, - 47, 51,199, 89,124,124,252, 78,129, 64,128,136,136, 8,180,107,215, 46, 80,107,177,122,115,235,214,173,121,217,217,217,200,206, -206,198,224,193,131, 11,202,167, 76,153, 50,175,106,213,170, 72, 79, 79, 47,107, 95, 23, 17, 66,182,225,253, 92,135, 73,193,193, -193, 45,143, 31, 63,222,114,198,140, 25,252,238,221,187,227,246,237,219,184,112,225,130, 82,169, 84,134, 2, 8, 53,116, 90, 27, -109,254,161, 7,132,144, 39, 65, 65, 65, 45, 57, 28, 78, 65,198,251,136,136, 8,236,222,189,187, 60,156,106, 0,171, 9, 33, 63, - 7, 7, 7, 47,186,120,241,226,232, 17, 35, 70, 88,169, 84, 42, 68, 70, 70,226,215, 95,127, 45, 47,231,244, 74,149, 42, 45, 60, -115,230,204,111,231,207,159,255,106,216,176, 97,204,180,105,211,176,105,211, 38,252,231, 63,255, 97, 53, 26,205,113, 30,143, 55, - 34, 53, 53, 85,250,153, 58,158, 29,218,105,117,118, 24, 49,231, 97,153,188, 31, 51, 52,104, 96,187, 19, 63,186, 91,210,238, 71, -251,246,237, 11,172,140,148,210, 66,126,117, 58,129,101,236,208, 33, 0, 27,237,117,186, 5,239,231, 23,213,207, 10,207,193,255, - 50,199, 27,202, 88, 39, 81,110, 19, 1, 57, 34, 75,159, 84,218, 6,160,168, 83, 6, 91,230,162, 69,139,214, 45, 94,188,120, 93, -209, 20, 14,250,149,138,166,126, 88,186,116, 41, 74, 74,239, 0, 32, 99,209,162, 69, 63,106,251, 39,162, 29, 46,108, 2,109,116, -161, 30,231, 30,109,185,217,146, 37, 75,134, 3, 40,141,211, 4, 19,254, 50,148,226,163, 69,231, 71, 92,223,175, 2, 96, 15,194, -204,163,175, 15, 70,124,116, 7,198,210,185,127,238, 91,178, 9, 20, 25, 84,163,158, 83, 33,123,192,114, 22, 68, 92,223,199, 2, -196, 6,132,153, 75, 95,255,231,163,219, 73,172,237,144, 19, 48, 9,255,121, 42,161, 73, 82,213,215,193, 10, 69, 33,107,144,214, - 39,107,144,171, 31, 57,104,235,202, 59, 58,253, 11,123,114, 58,125,184,209,219, 73, 77, 77, 93,105, 97, 97,193, 89,189,122,245, -104,153, 76, 86,200, 65,254, 35, 30, 18,179, 9, 33,156,102,213, 61,167,222,125, 21,219,199,144,225,194,162,104,213,170, 85,226, -179,103,207,134, 92,184,112,193,255,218,181,107,157,242,242,242,188, 8, 33, 16,139,197,111, 20, 10,197, 69,161, 80,184,223, 16, -145,165,255, 64,209,159, 34, 6, 0,178,179,179,145,147,147, 83, 40, 13, 1,240,222,191, 42, 53, 53, 21, 30, 30, 30,198, 62, 16, -175, 17, 66,194, 2, 2, 2,218, 6, 4, 4, 52,208, 90,133,174,149,119,200, 76, 43,120,174,137,197,102, 18, 66,136, 27, 95, 32, -148,222,186,117,235,226, 71,114,230,105, 45, 37,107,215,174, 93,187,194,220,220,188,105, 68, 68,196,165,143,225,212,138,168,126, -246,246,246,174,123,246,236, 9,217,181,107, 87, 11, 46,151,123,155, 16, 50, 32, 51, 51,243,115, 79, 42, 61, 1,134,205,113, 88, -166,197,200, 16,139, 88,121,241, 41,132,155, 70,163,201, 93,184,112, 97, 74, 81,225, 85,212,122,165,251,175, 84, 42,243, 13,188, -151,140,137,162, 44, 67,100,144, 92, 0,120, 63,119,225,251,105,117, 12,157, 84, 26, 64,137,115,103, 46, 94,188,152, 46, 93,186, -148, 48, 12,115, 28,192, 11,134, 97, 94, 21,117, 86,215, 95,182,116,233, 82, 44, 94,188,152, 46, 89, 82,242, 59,170,142,243,217, -179,103,148,195,225, 92, 2, 16,195,225,112,222,232,243,234,151,235,214, 41,141,211, 4, 19, 62,187,208,162,209, 33,113, 0, 70, - 85,232,155, 98, 76,200, 69,188,119,100,172, 56,206, 55, 7, 98, 1, 12,171, 40, 62, 22,248,105,108,179,246,179, 0, 16, 10,172, - 45, 42,178,244, 33,185, 78,143,187,180, 38,129,205, 58,182,157,161,181,134,173, 52,118,123,197, 57,200, 87,128,216,250,192, 65, -222, 88,248,248,248,104, 0, 4, 3, 8, 46, 58,169,116, 57, 30, 58, 16,139,197, 5,195,136, 12,195,196,100,102,102, 66,103,209, -210, 47,215, 30, 19, 88, 91, 91,151,103,191,243, 0,156, 37,132,156,167,148,106, 42,226, 88,202,100,121,238,218, 7, 28,167,162, - 56,181, 65, 14, 99, 43,146,243,221,187,119, 18, 0,173,170, 85,171, 38,136,138,138, 82,252, 93, 58,152,138,176, 14,125,106, 84, -180,112,211,190, 48,212,254, 4,199,242, 69, 5, 19,254,218,165, 77, 29, 14,244,115, 7,149, 53,169,180, 78,160, 81,252, 90, 66, - 27, 41,121,175, 36, 41,128, 61,175, 95,191,246,100, 89, 54,182, 24,203, 82,161,101, 75,150, 44, 65, 73, 57, 3,139,112, 2,192, -177,184,184, 56, 87,141, 70,147, 88,132,183, 80,121,105,156, 38,152,240, 55,177,104,253,127, 98,175, 66,177, 24,192, 98, 67,235, - 39,222,164, 11, 0, 44,248,200, 14, 52,178,162,247,163, 60, 34, 43, 36, 36, 68,243, 41,142,169, 74,245,126, 52, 76,127,238, 66, -125, 12, 31, 62,124,103, 5,239,187,230, 19, 28,207,127, 4,231,223, 73,100,153,240,247, 6,205,136,136, 3,240, 67,153,245,202, -206, 6,255,129, 48,210,254,204, 0,144, 81,130,214, 41,109, 89,105,156, 0,144, 13, 32,187,152,117, 75, 42, 55,193,132,207, 10, -198,116, 8, 76, 48,193, 4, 19, 76, 48,193, 4, 19, 62, 13, 8,128, 78, 37,188, 65, 24, 28, 77, 64, 8,233, 84,142,183,249,139, - 38, 78, 19,167,137,211,196,105,226, 52,113,154, 56,255,191, 56,203,226, 46, 26,189, 92, 81,211,115,253,165,226, 74,191,221,186, - 72,152, 79,241, 1,208,201,196,105,226, 52,113,154, 56, 77,156, 38, 78, 19,167,137,179,156,219, 25,255, 87,108,231, 83,126, 76, - 62, 90, 38,152, 96,130, 9, 38,152,240, 15, 66,231,154,196,133,171, 1,115, 54,138, 38, 84, 4,223,151,213, 72,101, 0,168, 40, -190,255, 71, 16, 66, 92, 0,244,208, 43, 58,173, 11, 6, 50, 9,173,127,238, 73,173, 14, 96, 62, 0,253,240,188,187,148,210,192, - 34,245,246, 1,208,159,144, 80, 10, 32,128, 82,250,202,152,237,113, 56,156,192,182,109,219, 78,190,113,227,198, 26,149, 74, 21, - 80,142,246,122,186,184,184,252, 72, 8,105, 12,128, 71, 8,121,157,156,156, 28,168, 82,169, 46,126,196, 49,168,226,236,236,188, - 10, 64, 67,134, 97,120,132,144,168,228,228,228,229, 42,149,234,202, 71,112, 90, 58, 57, 57,181,166,148, 58, 3,224,240,120,188, -119, 9, 9, 9,119,202, 27, 61, 55, 96,233, 51,126,182, 84,205, 3, 0, 43,115,174, 42,100,177,143,210,208, 50,211, 85,110,130, - 9,255,247, 29, 61,167,104, 81,215,170, 88, 65, 40,190,215, 0,164,107, 21,178,241, 92, 12,190, 47,113,253,226, 2,110,138,112, -118,173,138, 21,148,190,231,232, 90,141,172, 62,247,186,140,224, 46, 3, 56,117,216, 1, 48,227, 13,153,224,252, 19, 4, 6,125, - 6,244,208, 31,226,212, 38, 96,222, 81,166,208, 26, 92,147,184,104,184,224,134, 68,208, 56,221, 67, 8, 64, 3, 0,213, 1,188, - 2, 16, 78, 41,205,249, 72,193,240,143,224,252, 27, 98, 17,165,116, 72,145,253,254,160,210, 23, 95,124,209,251,252,249,243,102, -186,233, 89, 88,150,133, 88, 44, 86, 3, 24,105,196,241,116,244,247,247,159,251,203, 47,191, 96,224,192,129, 11, 9, 33,235, 40, -165,185,134,174,111,103,103,215,191, 74,149, 42,155,118,238,220, 89,169, 69,139,150, 68, 32, 16,224,245,235, 40,183, 9, 19, 38, -212,117,114,114, 58,158,156,156, 60,214,216,157,183,183,183, 31, 90,181,106,213,181,219,183,111,119,104,211,166, 13, 8, 33, 8, - 11, 11,115,155, 62,125,122, 3,103,103,231, 3, 73, 73, 73,223, 24,203,233,224,224, 80,163,106,213,170, 29, 54,111,222, 44,110, -221,186, 53, 68, 34, 17,194,195,195, 45, 38, 78,156,232,236,236,236, 28,153,148,148,116,213, 88,145,245, 56,236,228, 87,106,165, - 60, 8, 0,184,124,225,236,150,235,178, 79,166,135, 93,235, 85, 86,217,128,165, 56,102, 18, 91, 38,152, 96,130, 62,134,186,194, -153, 82,204, 58,255,235, 15, 12, 0,116, 25,189,108,218, 80, 87,172,217, 43, 65, 82, 5,241,125, 63,162, 50, 54,237, 73, 64,242, -199,180,115, 7,192, 76,231,114,167, 53,107,222,220, 97,202,205,155, 81, 74,224,183,255, 19, 3,200,248,226,202, 75, 20, 90,253, -235,144, 0,112, 49, 31, 0,249,178, 58, 57,112, 33,134,115,189,115,231,206,213,198,140, 25, 67, 26, 53,106,132,176,176,176, 26, - 7, 14, 28,232,193,229,114,163, 52, 26, 77, 24,128,167,134,102,181, 38,132,240, 0,248,114, 56,156,198,127,103,206,191, 57,204, -181,251,157, 12,224,174,206,162, 85,180,210,159,127,254,121,130,203,229,234, 44, 90,205,164, 82,169, 83, 17, 43,152, 33,240, 82, -169, 84,120,254,252, 57, 24,134,225, 1,240,198,135, 83,106,148,116, 94,220,220,220,220,182,134,222, 13,179, 39, 92, 49, 50,242, - 1,228, 43, 33,176,112,194, 47,187,131,237,102,126,251, 77, 63, 43, 43,171,235,217,217,217,191, 27,113, 49,123,123,120,120,172, -123,244,232,145,189,153,153, 25, 88,150, 69, 78, 78, 14,156,157,157,177,115,231, 78,155,153, 51,103, 14, 17,139,197, 87,100, 50, -217,127,140, 17,231, 85,171, 86,237,240,228,201, 19,177,110, 66,105,133, 66, 1, 55, 55, 55,236,219,183, 79, 56,109,218,180,218, - 66,161, 48, 94, 46,151, 71, 27,202,153, 45, 85,243,212, 74,121,208,158, 45, 75,220, 1, 96,196, 55, 75,130, 4, 57, 86,103, 12, - 41,203,150,170, 79, 3, 48, 9, 45, 19,254,234, 7, 69, 99, 7, 7,135,195,105,105,105, 87, 1,140,173,136, 20, 36,132, 16, 87, - 46,151,235, 77, 41,181,209,254,207, 84,171,213, 49,148,210,114, 39,212,117,168,214,161, 23,132,102,163, 64,217, 6, 12, 0,194, - 48,225, 26,101,222,238,180, 23,151, 79,126, 20,167, 64, 60, 26,160, 13, 24,128, 37, 12,243,136, 85,231,237, 76,125,118,249,236, -223,229,252,220,206, 66,205,170,206,134, 79,140, 89, 17,124,131,171,192,133, 97,193,236,123, 3,131,135, 21,167, 2,221,191,253, -246, 91,231,111, 38, 79, 38,163, 70,142,172,126,245,198, 13,210,206,152,217, 10,254,129, 40,205, 97,191, 88,161, 53,160, 14,177, - 5, 48,231,192,166,249, 12,151,195, 33,254,223, 6, 14,217,181,101, 53,211,185,215,128,130,225, 19, 63, 63, 63,248,249,249,145, -160,160,160,234,151, 46, 93,170,190,111,223, 62, 53, 33,228, 17,165,244, 96, 73, 27,235, 86,141,200, 88, 64,212,163, 22, 87,234, -255,195,239,219,155, 55,111, 14,161, 80,136,143,225, 4,128, 46,213, 57,209,221,155, 87,123,228, 63,117, 81,108,139, 22,173,104, - 69,112,254,131,112,151, 82,218, 71,219,129,217,122,120,120,180, 86,171,213, 34, 0,224,114,185,249, 0,166, 82,237,212, 65,132, -144,227, 44,203,246, 54,162,131,100, 0, 44,238,221,187,247,194, 41, 83,166,192,195,195, 3,211,166, 77,131, 74,165, 10, 35,132, - 44, 2,176,170,172,132,128,142,142,142,139,182,110,221,106,199, 21,152,163,209,156, 24, 36,102,170, 1, 0, 22, 66,224,196, 36, -138,105,211,166, 89,221,191,127,127, 57, 0,131,133,150,163,163, 99,192,206,157, 59,237,204,204,204, 64, 41, 69,110,110, 46,114, -114,114, 10,230,100,252,230,155,111,172, 34, 35, 35,127, 4, 96,176,208,114,114,114,106,189,121,243,102,177, 72, 36, 66,110,110, - 46, 95,169, 84,146,156,156, 28,228,229,229, 81,133, 66,161,156, 58,117,170,240,233,211,167,237, 1, 68,195,132,191,139, 40,224, - 0,248,154,199,227,245,173, 86,173, 90,147, 87,175, 94, 61, 84,171,213, 71, 0, 28,249,216,151, 41, 66, 72, 71, 87, 87,215, 21, - 18,137,100, 51,165, 52,248,255,229,152, 58, 57, 57, 29,185,117,235,150,251,214,173, 91, 71,174, 89,179,230,140, 49,247, 80, 9, - 47,191, 45,155, 53,107,230,208,183,111, 95,158,179,179, 51,242,242,242, 16, 21, 21,101,118,241,226,197, 74, 34,145,232,157, 92, - 46, 15, 53,230, 92, 57,212,108,109, 1,174,213,129,150, 29, 58,181, 25,216,239,107, 75, 39,123,107,200, 20, 26,188,138, 77,244, -248,227,204,137,118,174,117,123,220, 82, 42,179, 6,167,189,184,153,107, 44,103,135,110, 61,219,116,234,216,209,210,218,198, 26, - 89, 82, 37, 94,191, 73,240,188,124,225,164,159, 75,221, 30,215, 88,162, 26,150,252,248,124,222,231, 60, 55,211, 0,174, 84,100, - 95,191, 65,171, 70,247,187,140, 89,222,132, 82, 10,134, 98, 99, 81,107,214, 52,128,187, 17, 80, 27,203, 7, 74, 41, 33, 88,173, -111,205, 42, 24, 86,100, 64,186,122,163,244, 97, 74,221,243, 24, 16,218,216,217, 53,159, 56,126, 60,201,201,206, 70,120,120,120, - 94, 81,145,181,174, 50,248,215, 24,120, 29,143,195,203,127,147, 53,171,232,208,161,238,191,193,121,180,204,204,204,138, 45,183, -182,182, 70,135, 14, 29, 16, 24, 24,200, 5,208,184,136,194, 43, 60,201, 42, 32, 60,181,109, 30,172,205,133,140,135,135,135,165, -149,149,213, 71,115,190, 47,100,189, 91,121,208, 47,239,253, 62,127,228,197,125,107,125,165, 57,153,188,162, 85, 44, 44, 44, 80, -179,102, 77, 44, 92,184,208, 48,206,143, 87,183,127, 41,167,139,139, 75, 45, 63, 63,191,198,127, 94,189,106, 35,145, 72,132, 18, -137, 68,120,254,207, 63,109, 90,182,108,217,216,197,197,165,150, 30,135, 49,237, 92,182,101,203,150, 69,199,143, 31,103,252,252, -252, 96,107,107,139, 14, 29, 58,224,204,153, 51,220, 53,107,214,172, 4,176,176,172,118, 50, 12,211,198,207,207,143,128, 82, 36, -101,169,113, 39,176, 22,194, 87,251, 32, 39,159, 34, 61, 43, 27, 50, 89, 62,204,204,204, 68,218,225, 94, 67,247,189, 85,203,150, - 45, 9,128, 2,113,149,147,243,254,147,155, 43,133, 66,161,132, 80, 40,180, 36,132,136, 12,229,164,148, 58,183,110,221, 26, 0, -160, 84, 42, 11,222,240, 50, 51, 51, 73, 86, 86, 22, 20, 10, 5,120, 60, 30,159, 16,194, 53,148,211,202,156,171,226,242,133,179, -130,112, 2,223, 0, 0, 32, 0, 73, 68, 65, 84, 71,124,179, 36,110,196, 55, 75,226,184,124,225,108,133,101,182,198,144, 50, 43, -115,174,234,115, 94,159,132,144, 74, 28, 14,231,215,106,213,170, 69,114, 56,156, 61,132, 16,231,143,225, 36,132, 52, 37,132,172, - 52, 51, 51,187, 88,187,118,237, 56,115,115,243, 63, 9, 33,171, 8, 33, 45,203,195, 73, 8, 17,152,153,153,253,185,114,229,202, -144,135, 15, 31, 14,188,116,233,146,247,227,199,143,251, 5, 5, 5, 29,176,176,176,184, 78, 8, 49,251,152,123,211,219,219,123, -215,157, 59,119,154,182,106,213,234, 23, 66,136,176, 34,238,119, 66, 8,135, 16,210,144, 24, 56,215,208, 95,125,222, 9, 33,174, -141, 26, 53,114, 23,137, 68,232,212,169, 19, 0,180,255, 72,206,150, 19, 39, 78,116,158, 57,115, 38, 47, 60, 60, 28,191,252,242, - 11,142, 31, 63,142,148,148, 20,244,236,217,147,255,197, 23, 95, 56, 11,133,194,150, 70,113,114,173, 14,124, 59,125, 70,183, 89, -211,198, 89, 62,122,171,196,238,139,111,113, 44, 52, 17, 41,121, 2,244,234, 55,194,186,107,159, 65, 93, 5, 66,235, 3,198,114, -206,157, 51,167,219,248,209, 67, 44, 35, 18, 89,156,184,157,132,219,207,179,160,230,217,160,123,191,177,182, 13, 90,119,235,193, - 5,239,183,207,125,142,118, 2, 45,190,253,246,219, 74,179, 87,239,189,233,218,244,235,141,169, 25,240,211, 23, 62, 53, 0, 27, - 59,115,243,175,159,183,107, 55, 78,252,126,206,199, 82, 57, 11,241, 53,238,179, 41, 37, 3,109,245,253,179,218,218,161,186,118, - 88,145,115,254,215, 31, 24, 74, 48,109,168, 43,156,203,106,231, 21, 96,224,183, 51,102,240,172,109,109,177,101,203, 22,200,165, -210, 66, 62,179, 29,221,209,237,162, 25, 55,190,138,143, 91,100, 7, 79,114,253, 95,248, 2, 56,190, 68,139,214,233,211,167,105, -143, 30, 61, 8, 0,132, 68,208,140,254,117,200,143,131,166,172, 92, 72, 24, 66,189,124, 91, 69, 84,174, 90, 71,106,111,111,143, -188,188, 60,200,229,114,240,249,124,228,231,231,227,237,219,183,184,125,251, 54,108,109,109,141,106, 76,118,118, 54, 44, 44, 44, - 96, 97, 97, 81, 33,156,243, 70,118, 18,190,142, 75, 21,158,187,125,165,221,134,201,255,105, 81,181, 97,251,199, 29, 7, 77,123, - 98, 85,201, 53,255,241,227,199,184,117,235, 22, 50, 50, 50,208,188,121,243,127,203,249,188,171,237,175,239, 18, 66,108,253,252, -252,220,206, 93,188,102,155,155,207, 90,189, 73, 86,241, 88,150,133,153,153,139,250,224,225, 19, 89, 3,251,245, 34,132,144, 20, - 0,119,181,226,246,110, 25, 23,138, 8, 64,173,254,253,251,207,157, 60,121, 50,162,162,162, 48,110,220, 56,217,221,187,119,223, -181,106,213,202,126,231,206,157,226,153, 51,103,226,234,213,171,139, 9, 33, 71, 1,196, 80, 74,243, 75,232, 52,248,124, 62, 31, -106,173,108, 80,106,216, 2,125,159,157,157, 13, 42,203, 0,159,207,231, 0,168, 4,192, 32, 63, 58,150,101,249, 60, 30,175, 64, -100,189, 77,206,198,219,148, 60,100,231, 42, 32,147,169,161,144, 81,112,204,236,185,192, 27, 39, 0,111, 12, 60,158, 28,145, 72, - 4,181, 90, 93, 48,255,162,206, 82,166, 80, 40,144,149,149, 5, 14,135, 99, 1,192, 10, 64,186, 33,132,239,157,220,113, 76, 59, - 12,136,123,123,123, 59,188, 58, 61, 79,217,127, 73,100, 65,153,149, 57, 87,117,120,102,109,142,189, 91,131, 27, 13, 7,254,230, -163, 43,251,156,254, 89,132, 16, 97,165, 74,149, 46,135,132,132,212,174, 94,189, 58, 98, 98, 98,124, 6, 12, 24,208,156, 16,210, -208,216, 57, 25, 9, 33,102, 12,195,252, 56,106,212,168,201,254,254,254,164, 70,141, 26,224,114,185, 80,171,213,110, 81, 81, 81, - 29, 14, 29, 58, 52,135,203,229,238,212,104, 52,223, 25,234,247, 71, 8, 97, 4, 2,193,193,237,219,183,183,109,222,188, 57,246, -236,217,131,187,119,239,178, 77,155, 54,101,134, 15, 31, 14, 79, 79,207,230,195,135, 15, 63, 70, 8,233, 94, 30,203, 22, 33,196, -115,232,208,161,238, 28, 14, 7,173, 90,181,226,223,186,117,171, 17,128, 91, 31,121, 76, 45,220,220,220,174,182,111,223,190,225, -197,139, 23, 31, 16, 66,218, 27,227,231, 72, 8,233,227,234,234, 26,100,109,109,109,107, 68, 31,155,151,144,144,240,189, 17,115, -168,182,104,220,184, 49, 98, 99, 99, 81,171, 86, 45,240,249,252,150,132,144, 9, 0,186, 1, 88, 96,204, 12, 22,132, 16,215,150, - 45, 91, 58,180,111,223,158,172, 90,181, 10, 0,192,227,241,160,209,104,192, 48, 12,120, 60, 30,124,124,124, 72,116,116,180, 29, - 33,196,213,144, 97, 68,135,106, 29,122,181,234,216,173, 77,219,230,245,153, 53,135, 95, 65,195,106,192, 33,106,112, 9, 11, 86, - 37,132,144,207, 65, 13,223, 38,156,231, 79, 31, 53,119,168,217,185, 87,218,139, 11, 39, 13,225,236,214,171,183, 95,237, 90, 53, -152, 13,199, 94, 35, 51, 33, 82,147,240,236, 90, 26,195, 97, 80,187,241, 23, 14, 53,234, 52,228, 52,108,222,158, 39,137,121,218, -193,174,122,187, 78,233,175,174, 94,252, 28,247,228, 82,128,227, 86,217,225,235,158,157,219,243, 19, 37, 18,233,161,195, 39,159, -228,169,112, 27, 0,174, 2,164, 59, 80,191, 94,179,102,237,118,174, 90,101,239,226,226,194, 27,230,239,175,222,241,224,193,131, -241,128,166, 36, 62, 7,103,231, 78, 19, 39, 78,228, 36, 74, 36,244,208,145,211,143,117,124, 0, 96, 6,212,171,239,230,211, 19, -210,231, 70, 13, 83,246, 2, 4, 78,206,206,181, 39, 76,152,128, 36,137, 4,123,130,131,115,243,129, 80,157, 21,235, 4, 7,155, -235, 84,117, 30, 53,123,108,111,226,238,226,128,137,139,119,180,236,160, 76,169,122, 25,255,179,108,233,107,145,127,170,200, 42, - 42,182, 74,124, 59, 63, 28, 65, 23, 89, 9,136,247,161, 67,251,153,212, 28,165, 52, 42, 42, 10, 14, 14, 14,112,113,113,129,181, -181, 53, 34, 34, 34,240,231,159,127,226,197,139, 23, 96, 89, 22, 13, 26, 52, 48,170, 65,105,105,105,120,244,232, 17,108,109,109, - 43,140,179,170,123, 37, 76,113,175,196, 79,126,151,205,191,120,247, 69,243, 29,243,250,213, 97,124,250,237,202,207,255,159, 6, - 80, 40,254, 29, 51,148,232, 71, 23,122,120,120,180,222,189,123, 55, 95,174,134,101,141, 9,161, 63, 73,243, 53,230, 0, 96, 46, -226, 72,195,130,106,126,183,108,217, 50,233,232,209,163,125,222,190,125, 27, 88, 22,175, 64, 32, 88,241,229,151, 95,206,162,148, -242,190,253,246, 91, 0,192,136, 17, 35,178,111,223,190, 93,131, 82,154, 66, 8,113, 29, 51,102,204,203,203,151, 47,155,205,152, - 49,131,163, 86,171, 35,184, 92, 46, 37,132, 4, 80, 74,151, 20,229, 99, 24,230,254,131, 7, 15,188, 92, 61,107,194,211,158,129, -223,194,247,211,181,217,155,177,136,127,243, 26,207, 30,223,133,179,179,179,181,139,139, 75,100,173, 90,181,148, 9, 9, 9,115, -114,115,115,183,150,214, 70, 62,159, 31, 30, 22, 22,230,226,233,233,137,220,220, 92,196,167,230, 97,218, 17, 51,100,203,222, 27, - 49,120,144,161,161,123, 77, 75, 49,163,184,235,228,228,164, 84, 40, 20, 63,100,102,102,150, 58,141, 8,143,199,123,247,248,241, - 99, 11, 15, 15, 15,228,231,231,211,244,244,116, 34,149, 74,145,147,147, 67, 78,159, 62,253, 85, 98, 98, 98, 83,111,111,111,226, -230,230, 22, 80,189,122,117, 89, 66, 66,194, 56, 67,124,192, 66, 22,251, 40, 9, 33, 26, 46,151,187,102,252,248,241, 3,143, 30, - 61,122,255,240,146,218,125, 40,165, 74,237, 13,105,237,235,235,123,174,126,253, 58,174,193,171,235,109,164,148,254,244, 55,184, -188, 70,205,159, 63,191,182,157,157, 29, 38, 78,156,136,165, 75,151, 98,209,162, 69,213, 39, 78,156, 56, 30,192, 58, 35, 58, 29, -177,179,179,243,189, 13, 27, 54,248,180,110,221, 26,103,206,156,193,254,253,251, 17, 29, 29,173,246,246,246,230, 54,111,222, 28, -139, 23, 47, 70,215,174, 93,199, 77,157, 58,181, 29, 33,164,145,129,226, 99,244,226,197,139,251,180,105,211, 6, 35, 71,142,148, - 95,185,114,101, 32,128,243, 23, 46, 92,248,226,234,213,171,135,247,238,221, 43, 94,185,114,101,167,153, 51,103, 78, 4,176,169, - 28,251,255, 85,219,182,239,231, 80,110,211,166, 13,130,130,130,186,126,140,208, 34,132, 8,236,237,237, 79,239,217,179,167, 97, -205,154, 53, 49,108,216,176, 70, 3, 7, 14, 60, 77, 8,233, 76, 41, 53,168, 67,170, 92,185,242,143,199,143, 31,175, 86,210,200, - 66,113,144,203,229,118, 95,127,253,245, 42, 0, 70, 9,173,125,251,246,225,251,239,191, 71,131, 6, 13,234,183,104,209, 98,219, -132, 9, 19,208,191,127,255,142,132, 16, 39, 74,169,212, 16, 34, 46,151,235,221,179,103, 79,222,145, 35, 71,222, 91, 71,218,182, - 69,167, 78,157,240,228,201, 19,220,184,113, 3, 28, 14, 7,230,230,230,104,221,186,181, 64, 34,145,120, 3, 40, 83,104, 49, 66, -179, 81,125,122,118,183, 60,113, 59, 17, 26, 86,141, 38,213,172,208,220,199, 17,207,227,179, 17, 22, 25, 15,141,130, 15, 43, 59, -123,180,108,215,197, 46, 41, 33,122, 20,128,178,253,181,132,102,163,250,246,233, 97,113, 34, 84,130, 76,201, 51,250,234,238,209, - 63, 85,249,210,113, 0,112,255,210,129,109,206,246,226,206, 53, 26, 55,225,180,239,220,219,246,200,254,164, 81, 0, 62,139,208, -186,234,142,237,158,188,180, 17,179,135,248, 81,158,173,219, 93, 75,149,106,179,110, 89, 87,160,203,156,249,243, 91,140, 29, 63, - 94,196,178, 44,246,254,254,123,246,163, 7, 15,158,151, 22,237,183, 25,240, 28,216,167,143,208,210,202, 10,211,167, 77,131,165, - 74,117,185,224,144, 0, 29,167,207,154,213,250,155,111,190, 17,111, 11,152,124,191,235,152,229,141, 89, 74, 73,113,195,148, 69, -113, 17,104, 58,166, 79, 31, 88, 90, 89,225,219,111,191, 5, 81, 42,207,233,150,157,226,226,242,232,175,252,154, 15,233,213, 6, - 4, 4,251, 79,221,192,171,216,212,199,151, 19,241,250, 95,242, 76, 54,206, 71, 75,135, 28, 37,146, 59,246,232,135, 7, 15, 30, - 0, 0,222,189,123,135,119,239,222,161, 90,181,106,216,180,169,112,255, 85, 30, 1,195,178,108,133,115, 2,128,147,189, 21,134, -117,111,198,189,241,104,191, 72,154,154, 42,178,176,176,200,255,183, 9, 45,125,168,213,106,145,183,183, 55,178,101, 32, 89,121, - 42,139,180, 3,239, 45,254, 14,131,175, 88, 40, 20, 10,198,194,194, 2,114,185, 92,100,192, 3,129,215,167, 79,159, 89, 7, 15, - 30,228, 61,123,246, 12, 85,171, 86,133, 82,169,196,237,219,183,227,181, 19, 33,131, 82, 42,225,112, 56, 18,150,101,171, 55,104, -208, 0,129,129,129,240,241,241, 33,221,187,119,159,163, 21, 91,133,110,238,196,196,196, 31, 39, 76,152,240,197,161,195, 71,237, -182, 15,146, 33, 59, 43, 27,185,185,185, 8,127,120, 31,233,201,249,216,177, 99, 7, 68, 34, 49, 1,192, 79, 73, 73,230,207,152, - 49, 99,163,155,155, 91,183,248,248,248,158, 37,181, 83, 34,145,172,248,230,155,111, 90, 30, 56,112,192, 38, 39, 39, 7, 50, 89, - 62,210,165,102,136, 92,255,126, 30,223,218,211, 35,177,101,243, 86,166,158,151,185, 67, 94, 94, 30, 38, 79,158,188,214,213,213, -181,181, 68, 34, 25, 83, 18,103, 66, 66,194,157, 41, 83,166, 56,237,221,187, 87,164, 80, 40,148, 26,141, 6, 50,153,140, 57,112, -224,192, 28, 47, 47, 47,219,157, 59,119, 18,145, 72,172,173, 27,207,159, 52,105,210, 65,103,103,231,189, 73, 73, 73, 35,203, 26, - 46,226,112, 56,235,131,131,131,135, 15, 26, 52,200, 50, 49, 49,177,206,241,227,199,133, 0,100,218, 42, 46,157, 59,119,246, 90, -189,122,117, 37, 95, 95,223, 57,132, 16, 30,165,116,229,231,188,158, 28, 28, 28,166,246,233,211, 7,171, 86,173,194,201,147, 39, -103,218,217,217,173, 93,186,116, 41, 92, 93, 93,167, 16, 66,214, 27, 49, 81,239, 79,235,214,173,243,241,241,241,193,136, 17, 35, - 20, 23, 47, 94,156, 15,224, 24,128,216,235,215,175,123,252,246,219,111,189, 14, 30, 60,184,106,195,134, 13,162, 77,155, 54, 85, -235,215,175,223,122, 0, 99,202,188,191,157,156,102,248,251,251, 99,245,234,213,184,114,229, 74, 63, 74,233, 25,237,162,179,132, -144, 94, 43, 87,174,188,180,112,225, 66,172, 91,183,238, 91, 99,133, 22, 33,196,162,118,237,218, 63,116,235,214, 13,215,175, 95, -135,159,159, 31, 90,182,108, 57,147, 16,178,145, 82,154, 86, 14,145,197, 88, 88, 88, 28,220,189,123,183,159,151,151, 23,150, 47, - 95,142, 89,179,102, 97,215,174, 93,126,195,134, 13, 59, 72, 8,233, 91,244,158, 41, 14,214,214,214, 22,102,102,102,152, 51,103, - 14,141,142,142,206, 40,171,190,187,187,187,237,218,181,107,137,173,173,173,181,129,237, 20,139, 68,162, 86,117,235,214,197,226, -197,139,113,225,194, 5, 44, 92,184, 16,117,235,214, 69,108,108, 44, 6, 15, 30,108,182, 96,193,130,254, 0,118, 27,248,208,177, -182,183,183, 71, 74, 74, 10,120, 60, 30, 90,183,110,141, 99,199,142, 65, 46,151,195,209,209, 17,153,153,153,104,214,172,153, 78, -148, 25, 24,156, 67,235, 58,216, 89, 35,229,105, 2,184, 80,163,113, 13, 7, 92,126,242, 14, 74, 21, 11, 71,123, 27, 36,165, 36, -163, 69, 93, 55, 40, 20, 30,160,148,173,107, 8,163,128,195, 52, 22,138,196, 72,207, 73, 67, 66,228,149,119, 74,141,124, 66,102, -244,141, 56, 0,176,171,218,118,194,253, 27, 23,238, 15,232,209,214, 49, 87,234, 14, 66,217,102,159,227,126, 28,224, 1,119,115, - 17,119,196,169,237,243,136,154,101,241,229,152, 21, 77,187, 57, 33, 15,201, 64, 37,192,123,192,224,193,173,190,251,238, 59,193, -203,168, 40,118,198,180,105,153, 15,239,221,187,242, 7,112,191, 52,206, 92,160,122,231,206,157,193, 0,248,227,252,121,105, 26, - 16, 15, 0, 78,128,123,239,175,191,110, 59,127,238, 92,193,235, 55,111,216,219, 81,185, 39, 94,167,208,192, 86,118,120,116, 32, -246,125,157,210,160, 1,234,233,120,207,157, 59, 71,101,218,118,180,119,199,148,174,173,125,155, 15,239,211, 22,241, 73,239, 16, -244,203, 9, 60,126,153,120,206,158,197,208,127,203,115,184,180, 12,246,140, 1, 55,204, 7,101,121,121, 31,142, 30,124,172,128, -249, 20,156,197,225,223, 40,180,116,208, 77,222,172, 80,177, 80,168, 88,221, 91, 45,100, 50,153,161,138, 92,117,238,220,185, 61, -211,166, 77,195,218,181,107,241,242,229, 75,240,249,124,212,173, 91,215,133, 16, 98,161,179,192, 52,110,220,216,145, 97, 24, 60, -127,254, 28,107,214,172,193,232,209,163,233,173, 91,183,118, 21,247,192,160,148, 62, 76, 79, 79,223, 60, 97,220,232,204,140,228, -183, 80,201, 50,144,146,240, 26,114,105, 38,150, 7,254,136, 60, 21, 23, 73, 89, 74, 36,101, 41,193, 8,237,176,109,231,110, 78, -237,218,181,187,113,185,220,158,165,180,243,118,114,114,242,206, 73,147, 38,101, 38, 37, 37, 21,236,159, 66, 69,161, 80, 21,190, - 94,205,204,204,176,126,253,122,235, 26, 53,106,244,225,241,120, 29, 74,225, 76,140,139,139,123, 54,105,210, 36, 69,114,114, 50, -178,178,178,112,226,196,137, 94, 94, 94, 94,182,171,126, 90, 75,164, 74, 46,146, 50,149, 72,202, 84, 66, 96,225,136,131,135,143, -114,106,214,172, 57,132,199,227,181, 44, 75,100,237,221,187,119,248,160, 65,131, 44,127,250,233,167,244,227,199,143,111,161,148, -234,159,144,231,235,215,175, 63,116,240,224,193,156, 89,179,102,217, 5, 5, 5,205, 36,132,204,255,140,157, 69,135, 65,131, 6, -213, 98, 89, 22, 33, 33, 33,143, 41,165,235,142, 30, 61,122, 79, 46,151, 99,240,224,193,222,218, 97, 36, 67,120,154, 14, 25, 50, -100,178,159,159, 31,166, 79,159,174,188,120,241, 98, 99, 74,233, 90, 74,233, 27,250, 30,177,148,210,141, 87,175, 94,109, 48,117, -234, 84,121,179,102,205, 48,114,228,200,209,132, 16,191, 50,120, 91,249,251,251,251,176, 44,139, 3, 7, 14, 60,210, 19, 89,186, -243,248,231,225,195,135,111, 43, 20, 10, 12, 29, 58,180, 10, 33,228, 11, 35,246,157, 47, 20, 10, 67,150, 45, 91,102,147,144,144, -128,225,195,135,203,159, 63,127,142, 37, 75,150,136,173,173,173,207,232,238, 1, 99, 32, 20, 10,119,252,252,243,207,125,234,213, -171,135, 73,147, 38, 41,182,110,221, 58,109,242,228,201,138,198,141, 27, 99,203,150, 45,125, 4, 2,129, 81, 83,139, 72, 36,146, -204,136,136, 8,251,178, 62,241,241,241,201, 6,238,179,153,165,165,101,168,175,175,111,118,221,186,117,155,168,213,106, 68, 68, - 68,188,222,179,103, 15, 91,183,110, 93,108,222,188, 25, 65, 65, 65,232,217,179, 39, 56, 28, 78,127, 99,218, 42,149, 74, 33, 18, -137,192,231,243, 17, 22, 22, 6,185, 92, 14, 51, 51, 51,136, 68, 34,112, 56, 28,216,216,216,192,210,210, 18, 48, 48, 26,141, 16, -208,236, 60, 21,120, 60, 6, 92,134,197,179,216, 44, 40, 85, 44, 68,124, 14,120, 92, 2, 80, 22, 54,230, 60,136, 4, 28, 48,132, -176, 6,114, 34, 75,170,132,128,207,128,199, 23, 16, 70,173, 17, 23, 60, 28,185, 26,177, 88, 44, 32, 14, 86, 66,136,248,127,163, -105,129,201,251,227, 53, 10,224,153,123,120, 12, 92,189,102,141, 32, 59, 55, 23,253,250,245, 75,127,115,239, 94,176, 12,184,215, -174,140, 99,202,112,185, 53,218,183,107,135,176, 7, 15,144,147,145,241, 10,120,239, 28, 47,112,117, 29,180,126,253,122,129, 44, - 63, 31,253,250,246,205,124,121,227,198,222,184, 92,156, 50, 68,100, 1, 0,135,207,119,214,241,102,101,100,100, 0,239, 83, 72, - 56, 85,178, 88,245,205,144,174,200,201,203,199,236, 31,131,217, 7,207, 18,167, 92,143, 71,143,163, 18,100,253,155,158,193,132, -144,241,250, 31,131, 44, 90, 58,171,147, 33, 98, 69, 46,151, 87,184, 0,250, 88,206,226, 68,226,199,114,254, 29,193,229,114,243, - 95,188,120, 33,176,178,119,101,237, 45,121, 25, 94,163,111, 88, 3,128,157, 5, 55, 75,169, 81,177, 18,137, 4, 66,161, 48,223, - 16,174,252,252,252,113,132,144,229, 0,234,112,185,220, 83,187,119,239, 38,193,193,193,182,254,254,254, 81,132,144, 4, 95, 95, - 95,207,221,187,119, 91, 1,192,198,141, 27,233,193,131, 7,187,226,125,202,140, 18, 77,202, 73, 73, 73, 75,120, 60,222,173,111, -190,249,102,147, 64, 32,176, 53, 55, 55,183,191,126,253, 58,201, 87, 82, 52,157, 31, 91, 16,137,104, 37,102,112,109,158, 21,198, -143, 31,207,137,140,140, 12, 4,112,170, 20,206, 57, 66,161,240,250,203,151, 47,215, 90,187, 53,172,100,238, 57,223,186,249,188, -231, 0, 0, 79, 7, 30, 24,109,191,152,153,153,137,212,212, 84, 76,158, 60,217, 54, 42, 42,106, 14,128,203, 37,113,198,199,199, - 95, 21, 10,133,241, 79,159, 62,109,207,227,241, 4,230,230,230, 77, 67, 67, 67, 73,190,130, 69,253, 57,177, 72,207,125,223, 78, - 59, 11, 46,238, 47,115,194,148, 41, 83,184,175, 94,189,250, 17, 64,155, 98, 59, 51,134, 9,210, 23, 89,179,103,207, 14, 7, 80, -133, 16, 82,104,104, 84,163,209,144,161, 67,135, 62, 1, 80,119,214,172, 89,118,148,210,153,132,144,116, 74,233,246,191,250, 90, -178,178,178, 90, 53, 97,194, 4, 28, 60,120, 16, 25, 25, 25,235, 1, 32, 59, 59,123,221,190,125,251, 14,140, 27, 55, 14,191,255, -254,251, 42, 66,200, 31, 6, 88,181,190, 28, 60,120, 48,206,158, 61,139, 75,151, 46,253, 64, 41,141, 40,225, 30,125, 73, 8,153, -115,252,248,241, 13,254,254,254,248,245,215, 95,187, 1, 40,205, 65,182,115,215,174, 93,113,230,204, 25,188,123,247,110, 75,113, - 21, 50, 51, 51,183,158, 56,113,162, 69,215,174, 93, 17, 24, 24,216, 25,192,159, 6,116,144, 62,214,214,214,187, 55,108,216,208, -180, 94,189,122, 24, 50,100, 72,190, 82,169,236, 54,107,214,172,147,251,247,239,183,220,179,103, 79,147,241,227,199,223, 33,132, -140,165,148,222, 54,232,161,195,225,172,220,180,105,211,152,246,237,219, 99,230,204,153,234,115,231,206,245,166,148,158, 39,132, - 68,205,158, 61,251,244,154, 53,107, 56,171, 87,175, 30,195,225,112, 82, 53, 26,205,231, 18,215,203, 54,110,220,216,162, 75,151, - 46,120,253,250, 53,110,223,190, 13,165, 82,249,123,104,104,232,181,234,213,171, 47, 83, 40, 20, 39,205,205,205, 71, 88, 90, 90, -250, 54,108,216,240, 11, 66,136,153, 33,126,122,132,144,204,168,168, 40,115, 71, 71, 71,240,120, 60, 60,122,244, 8,142,142,142, - 0,128,148,148, 20,212,173, 91, 23, 28, 14, 7,153,153,153, 0, 12,123,216, 18,194, 60,142,122, 35,169, 98,103,105, 14,104, 68, -120,248, 60, 30,149, 28,108,161, 33, 12,146,146, 18,209,176,150, 27, 8, 33,200,124,151, 4, 66,200, 19, 67, 56, 53,148, 13,123, - 43, 73,169,108,111, 41, 68,189, 22, 93,236, 67,255, 72, 13,182,174,218,102, 60,151, 67, 56, 66,145,213,246, 49, 35, 71, 58,176, - 44, 69,230,187,100,112, 25,230,238,231, 56, 65, 33,111, 17,215,174,170,232, 97,151, 49,203, 27, 18, 10, 42, 83, 98,207,175,201, -200, 48, 3, 26,110, 92,176,192,198,222,193, 1, 67,134, 12, 97,223, 37, 36, 92,204, 3, 12, 74,172, 92,165,122,117, 39, 11, 75, - 75,220,188,121, 19, 28, 32, 6, 0,118, 1, 62, 65,179,103,219, 59, 58, 59, 99,244,152, 49,108,242,219,183,127,202, 12, 24,210, - 45,196, 91,181, 42, 79,199,203,104,121, 19, 57,152, 54,171,183,159,208, 92, 44,196,202,109, 71, 17,151, 38, 61, 16,154,136,109, -255, 70, 99, 71,153, 22,173,146,156,207,222, 59, 85,155,149, 42, 86, 68, 34, 81,129, 53,197,136, 55,189, 10,231, 44, 11,159,130, -243, 51, 42,231,121,132,144,227,132,144,121,113,113,113,207,198,140, 25,163, 84, 43,229, 57,183,150, 87,153,251, 32,208,107, 82, -232, 18,151, 73,199,166, 89,207,205,203, 74,207,217,184,113,163, 42, 46, 46,238,153,254, 58,101, 92, 44,111, 41,165,103,126,251, -237,183,173, 33, 33, 33,168, 91,183, 46, 34, 34, 34, 28,165, 82,105,163, 39, 79,158,216,249,248,248, 32, 56, 56, 24, 7, 15, 30, - 92, 75, 41,189, 80,154,200,210,179,182, 93, 76, 76, 76,172, 25, 27, 27, 91,205,198,198, 70,101, 99, 99,131,162,145,136,217, 50, - 22,239, 50,179, 96,103,103, 15, 43, 43, 43,239,178, 56,229,114,249,153,196,196,196, 26,172,109,173,182, 53,210,214,103,133,173, -116, 71,216, 74,119,156,153,227, 10, 23, 27, 1, 50, 50, 50,144,154,154,138,212,212, 84, 16, 66,160, 82,169,106, 27,192, 25, 45, -145, 72,126,121,251,246,237,113, 39, 39, 39, 88, 90, 90,130, 2, 72,202, 84, 33,124,181, 15,194, 87,251, 32, 41, 83,133,236,156, - 28,120,121,121,193,210,210,178,110, 73, 67, 70,149, 43, 87,238, 62,104,208, 32, 75, 0,208, 10,168,142,148,210, 73,197,124, 38, -170,213,234,214,186,186,223,127,255,189, 29,128,174,127,241,245,196, 33,132,124, 51,110,220,184, 38, 34,145, 8,155, 55,111,142, - 6,176, 87,215,215,111,221,186,245, 57, 0, 76,155, 54,205, 23,192, 76, 82, 66, 38,104, 29,248,124,126,227,218,181,107, 35, 52, - 52, 20, 0,142,150,177,249,195,183,110,221, 66,245,234,213, 33, 18,137,154,150, 81,215,219,221,221, 29,207,159, 63, 7,128,135, - 37,212,121,248,252,249,115,184,187,187,131, 16,226,109,192,190,247,233,210,165,203,227,203,151, 47, 55,109,213,170, 21,198,140, - 25,163,184,115,231, 78,119, 74,233,181,135, 15, 31,118, 24, 58,116,168,180, 70,141, 26,184,122,245,170,207,208,161, 67,111,113, - 56,156,229, 6,112,142, 14, 8, 8,152,247,213, 87, 95, 33, 32, 32,128, 30, 58,116,104, 8,165,244,188,246,254, 58,119,224,192, -129,225, 43, 86,172,160,125,251,246,197,210,165, 75,231, 17, 66, 38,149, 97, 29,202,210,104, 52,144, 74,165, 6,153,228, 13,173, -239,224,224,240,101,151, 46, 93,176,112,225, 66, 84,174, 92, 25, 39, 79,158,164, 0, 78, 81, 74,175,203,229,242,182,148,210, 53, - 82,169,244, 88,104,104, 40, 58,119,238,204, 71,225, 41, 70, 74,132, 90,173,126,115,249,242,101,165,189,189,253,127,217, 59,239, -248, 40,138, 62,140, 63,115,189,223,165, 93, 58, 9,161,165,210,149, 42, 77, 67, 13,130,162,162, 72, 17, 17, 68, 1, 17, 68,138, -162,188, 22, 4,105,162,136, 20, 69, 80,154,226,139, 82, 34, 34,200, 43,136,212,132, 22, 66, 8, 36,164,151,203,165,151, 75,114, -109,231,253, 35,185, 24, 98,202, 93,130, 10, 56,223,207,103, 63,119, 55,187,251,220,236,236,222,238,115, 83,126, 3, 95, 95, 95, -248,249,249,161,172,172, 12,133,133,133,232,216,177, 35,122,245,234,133,178,178, 50, 28, 60,120,208, 84, 88, 88,104,215,128, 21, -139,177,236,171, 35,145,123,139, 92, 85, 18,248,186,107,208,218,199, 5,165,133,185,208,103,103,162,123,136, 31, 6,116,111,141, -220, 34, 35, 14, 31,220, 91, 80, 82, 98,248,202,174, 86,128, 74,195,214,163, 63, 29, 40,114, 86,137, 16, 24, 20,134,241, 83, 94, -233,218,181, 91,207, 35, 61,122,244, 61,188,114,249, 7,157, 31,233, 29, 66,210,115, 43,112,232,224,247, 5, 69,197,197, 91,255, -137,123,253, 59, 0,191, 66,211,225,196,250,125,209, 95,132, 14,155,250, 69, 92, 58,214, 2,128,153,207, 15, 30, 49,124, 56,210, -211,211,177,119,207,158, 44, 3,112,217, 94, 61,153, 76,198, 3,128,162,162, 34, 72,170,102, 11,129, 5, 8,138,136,136,128, 62, - 55, 23, 59,119,236,208, 31, 2, 46, 56,146,207, 71, 1,177, 92, 86, 85, 33, 88, 84, 84, 4, 2, 20, 3, 0, 17, 96, 68,143,142, -237,161,207, 47,198,255,206,197,149,182, 46,199,203,141,233,220,171, 29,225, 27,235,163,213, 84,125,104,238,220,185,115, 33,145, - 72,224,229,229, 85, 99,142,108,102, 69, 44, 22,195,203,203, 11, 22,139, 5,187,119,239, 6,128, 70,251, 48,240,128,202, 81, 47, - 45,227, 42,205,212, 32, 20, 10,239,136,102,117,205, 65,229, 19,243,191,228,126, 58, 85,255,160,152,230,104,222, 3,244,168,142, -137,213,131, 82, 90,144,156,156,156, 62,246,137, 81, 69, 41, 9, 87,179,203, 10, 51,179,138,243,210,178,210,110,197,100,191,177, - 96,110, 81,122,122,122, 90,117, 44,173, 30,153,153,153,163, 0,216,219,215, 96,238,216,177, 99, 55, 76,157, 58,149, 94,186,116, - 9, 0, 16, 29, 29,141,231,158,123,142, 78,156, 56,113, 45,128,133,205,200,119, 89,121,121,249,109,181, 33, 38, 43, 87,211,228, - 87, 92, 92,140,204,204, 76, 24,141, 70,187, 29,241,141,195,171,226,243,147,163,204, 97,254, 10,132,249, 43, 16,220, 74, 14, 98, - 41,173, 49, 89,122,189, 30, 58,157, 14, 0, 42, 28,200,103,113,101,101,229,109,249,172,221, 52, 89, 92, 92,140,236,236,108, 88, -173, 86, 99, 3, 63, 58, 46, 35, 35,227,240, 55,223,124, 83, 2, 0, 43, 87,174,204, 39,132,252, 66, 8,217, 80,207,178, 81, 32, - 16,252,110,219,118,213,170, 85,249, 0,126,252, 27, 77,214, 99,157, 58,117, 42, 88,180,104,209,167,179,103,207,198,198,141, 27, -145,149,149,181,144, 82,106,177, 29, 75,110,110,238,252,245,235,215, 99,242,228,201,120,251,237,183, 87,117,235,214,173,152, 16, -210, 96,255, 10,173, 86,235, 43, 16, 8,112,225,194,133, 98, 74,105, 98, 19, 55,168,236, 11, 23, 46,232, 8, 33,240,242,242,106, -219,216,182, 46, 46, 46,237, 84, 42, 21, 50, 50, 50,128,234,127,204,245,144,156,153,153, 73,197, 98, 49,188,189,189,219, 55,117, -252,206,206,206,243,191,248,226, 11,193,213,171, 87,241,200, 35,143,164, 31, 63,126,124, 48,165,244,215,234,188, 93,136,142,142, -238, 55,104,208,160,248, 35, 71,142,224,195, 15, 63, 36, 93,186,116,121,169, 41, 77,127,127,255,233,207, 63,255, 60,214,173, 91, -135, 77,155, 54,189, 68, 41,221, 83,231,152,119,173, 95,191,254,149, 77,155, 54, 97,202,148, 41, 8, 8, 8,104,180,175, 74, 74, - 74,202,130,129, 3, 7, 70,223,184,113,195,174, 25, 15,236,217,158, 16, 50,168,103,207,158,237,202,203,203,177,117,235,214,196, -118,237,218,157,223,179,103,207, 92, 74,105,221, 7,246, 15,123,247,238,197,132, 9, 19,208,165, 75,151,173,132,144,113,118, 60, -116, 50, 83, 82, 82,114, 47, 95,190,204,241,249,124,248,250,250, 98,196,136, 17,120,230,153,103,208,165, 75, 23,228,228,228,224, -196,137, 19, 92, 66, 66, 66,174,189,129, 75,115,227,255,119, 32, 41, 41,254,247, 11,103, 79,152, 5,124, 30,252,188, 92,240,120, -120, 87,188,240,100, 95,116, 15,246, 65, 74, 78, 57,142, 29, 59, 98, 78, 74, 74, 60,109,207,136, 67,155,102, 92,236,229, 83, 87, - 47,156,180, 8, 5, 4,193, 65, 29,176,248,141,249,206, 75,151, 44,112,234,208,214, 15,151,111, 21,225,200,207,135,204,153,233, -105,255,251,167, 70, 28, 30, 7, 68, 74, 9, 81,240,121, 60, 88,121,146, 50,126,117, 32,227,142,161,161,129, 30,158,158,136,140, -140, 4, 15,184,230,144,158,178,170, 21,188,180,180, 20, 54,189,118, 65, 65, 65,126,254,254,248, 49, 50, 18,124,142,187, 54,192, -193, 0,163,215, 1,121,109, 93, 2, 84,188,220, 10,170,118,173,220,131,156, 53, 10,156,189,124, 19,149,102,122,110, 71, 1, 12, -184, 15,169,219,108,232, 72,211,225,202,141, 27, 55,246,248,226,139, 47, 6,207,157, 59, 87, 57,105,210, 36, 72,165, 82, 24, 12, - 6,248,250,250,194,106,181,226,167,159,126, 66, 84, 84, 84, 41,199,113, 71, 80, 39,108, 0, 33, 36,188,118,172,141,159, 18,168, -172, 42, 8,166,161,199,190,167,158,186, 35,154, 0,160,188,201,169,243, 90, 27,183,127,178,231,228,152,157,135, 47,144, 87,199, - 13,224,117, 15,106, 5, 0,240,240,240,128, 90,173,118, 88,243, 14, 20,250, 95,174, 89,187, 89, 55, 43, 43,235, 58, 33, 36,103, -234,212,169,193,182,142,239, 18,137,164, 34, 45, 45, 45,206, 22,176,180,238, 62, 77,229,179,122,100,220,203,132,144,253, 69, 69, - 69,135, 95,127,253,117, 44, 93,186, 20, 7, 14, 28,232, 71, 41,253,189, 57,199, 78, 41,181, 6, 4, 4, 20,158, 59,119,206,163, -125, 72, 55,180,113, 23,162,255, 91, 55, 64, 41,133,171,156,162,164, 48, 31, 23, 47, 94, 64, 73, 73,201, 89, 71,242,233,237,237, - 93,152,147,147,227,230,238,238,142,252,252,124,228,230,230,214,152,172,130,130, 2,228,231,231, 83, 66,110,143,217,210,132,102, - 89,187,118,237, 12,113,113,113, 98,143, 86,237,209,214, 93,132,158,111, 92, 7, 40,133,159, 11, 15, 37,197,133, 56,125,250, 52, -138,138,138,126,109, 72,147,227,184,215,198,143, 31,207, 7, 48,241,245,215, 95,119, 1,208,101,254,252,249, 71,234,142, 44, 20, - 10,133, 31,109,223,190,189,163,173,137,113,193,130, 5,107, 40,165, 95,252, 93,215,146,171,171,235,107,145,145,145, 42,147,201, -132, 79, 62,249, 4,107,214,172,217, 66, 41,253,111,157,242,136,228,243,249,235,121, 60,222,140,153, 51,103,226,197, 23, 95,148, - 63,240,192, 3,115,107,213,122,221,166,153,145,145,177,184,123,247,238,111,231,228,228,216,213,177,255,198,141, 27,211,186,119, -239,190, 56, 39, 39,103, 69, 99,231, 72,161, 80, 40,172, 86, 43,146,146,146, 10, 40,165, 69, 13,156,187,138, 14, 29, 58,100, 88, -173, 86, 95,185, 92,238,210,212,245, 89, 80, 80,240,193, 3, 15, 60,240, 31,157, 78,247, 51,128,247,235,134, 42,161,148, 94, 34, -132,132,205,158, 61,123,214,242,229,203,199,100,103,103,239,110, 74, 51, 37, 37,229,131, 65,131, 6,189, 21, 31, 31,191,173,161, - 38, 96, 74,233,167,132, 16,211,246,237,219, 95, 74, 74, 74, 90,214,152, 38,165,244, 32, 26,105, 74,175, 71,187,222,237,107,107, -242,249,252,249,203,151, 47,231,109,220,184, 17,148,210, 85, 22,139,165,161,124, 94,230,243,249, 95,245,237,219,119,210,158, 61, -123,164, 97, 97, 97, 47, 2,216,213,212,245, 89, 89, 89,121,230,212,169, 83,189,146,147,147,221, 6, 13, 26, 36,178,253, 65, 41, - 44, 44,196,193,131, 7, 77, 9, 9, 9,185,101,101,101,103, 28,185,135, 88,140,197,227, 78, 29,219,183, 43,249, 70, 76,239,129, -195, 70, 59, 27, 77,190,144,228,241, 81,152,151,141,159, 14,238, 45, 72, 74, 74, 60,109, 48, 20,142,115, 68,211, 84, 89,244,204, -233,255,237,223,157,158, 20,215,171,255,160, 17,206, 21, 70,127, 72, 68, 60,228,233, 50,240, 83,228,190,252,164,164, 91,191, 85, -152, 43,159,251,167,238,243,252, 0,188,207,207,142,154, 58,253,209,174,144, 57,251, 94, 20, 2,159,244, 5,100,110, 30, 30,162, -234,223, 14,148, 64,138,189,154, 58, 64,220,190,186,149,202, 96, 48, 64, 8, 24, 39, 3, 66,173, 86, 43, 3,128,248,248,120,200, -129, 84, 71,243, 89, 10, 40,228,181,116,121,128, 33, 79, 0,159,118,106, 5, 1,128,244,236, 60, 24,205,248, 29,247, 41,182, 26, -173,250, 58,197, 55, 21,124,145, 3,112,134, 16,114, 97,197,138, 21,253, 55,108,216, 48, 96,206,156, 57,226,225,195,135,227,252, -249,243, 56,122,244,168,177,178,178,242, 56,128, 19,182,225,234,118,100,230,142,107,238,169,218,110,108, 15, 31,226, 98,226,202, -191, 95,188,225,208, 67,173, 61,157,168,197,202,145,152,152, 24,156, 58,117,202, 97,205,123,228,196, 2, 64, 15, 66,200,190,234, -164,115,117, 67, 56, 84, 55, 23,246,168, 85, 11,214,156,175,186, 40, 16, 8,104, 80, 80, 16,169,158,158, 38,182, 37,249,206,206, -206,126,118,193,130, 5, 63,127,251,221,247,130,189, 51,101, 40, 42, 44,170,186, 1, 23, 21, 34, 79,151,137, 99,199,142,153,244, -122,253,139,142,104,234,245,250,151,199,141, 27,247,237,174, 93,187, 92, 10, 10, 10,106,140, 86, 65, 65, 1, 56,142,195,150, 45, - 91,244, 58,157,238, 77, 71, 52,179,178,178,166,188,254,250,235,223,237,220,253,157,224,200, 66,103,148,218,162,207,151, 21, 33, - 47, 39, 11, 7, 14, 28,168,204,205,205,157,221,200,249,177, 18, 66, 94, 29, 63,126, 60,108,102,235,244,233,211,175, 16, 66, 62, -181, 61,204, 9, 33,109, 94,123,237,181,113,181,250,113,173,249,187, 71, 29,230,229,229, 45,237,213,171,215, 26,189, 94,127,203, -100, 50,237,161,148,214, 27,165,223,106,181,206, 36,132,156,250,244,211, 79,159,113,115,115,243,200,206,206, 94,238,232,131,190, -165,219,167,166,166, 46,234,222,189,251, 27, 57, 57, 57,203, 27,219,238,230,205,155, 51,170,183, 91, 97,199,119, 71, 2,136,108, - 98, 27, 11,170, 66, 91,124,100,231,241,236, 3,176,207,206,155,243,230,127,226,254, 97,181, 90, 87,118,234,212, 73,106,177, 88, -142, 52,213, 31,144,227,184,105,115,230,204, 73,159, 55,111, 94, 87,171,213,106,111, 25,152, 1,252, 70, 8,241,206,205,205, 13, - 0,224, 4, 0, 2,129,160,176,176,176,176, 89, 83,240, 84, 71,124, 31,233, 22, 56,248,209, 61,219,214, 77,166,156,181, 11, 33, - 4,124, 30,255, 82, 73,169, 97,171,189, 53, 89,245,104, 70,184, 5, 14,126, 84,151,145,242, 60,229,172, 93, 0,194, 9, 4,188, -203, 37,165,134,207,245,113, 71,254,177, 41,120, 38,249,192,131, 79, 48,243,231, 47,223, 34, 0, 48,248,249,247,186,182,118,130, -210, 82,136, 66, 84,223,203,179,178,178,224, 12, 20,216,171, 41, 7, 44,166,234, 62,209, 5,249,249,144, 3,229, 89, 0,191,186, -223, 37,209,101,103, 67,233,128, 94,205, 31, 70,192, 84, 71,183, 8,128,196,214,157, 51,191,184, 12,176, 63,174,225, 61, 89,163, - 85,247,125,141,225,162,148,218,189,160,106,126,189,199, 1, 44,171,126, 85, 52,177,125,248, 63,161,217,203, 11,129,225,237, 72, -220,136, 32, 65, 62,128, 39,239,132,166,163,203, 95,173, 9, 96,155,209,104,164, 21, 21, 21,212, 96, 48,208,210,210, 82, 10, 96, - 95, 61,251,236,203,204,204,164,233,233,233, 52, 53, 53,149, 38, 39, 39, 83, 0, 59, 28,205,167, 90,173,254,226,169,167,158,178, - 10,133,194,117,119,226,216, 93, 92, 92,150,245,236,217,211,244,241,199, 31,211, 31,126,248,129,126,254,249,231,116,230,204,153, -180, 99,199,142,149, 78, 78, 78,227,154,163,233,233,233,185, 56, 40, 40, 40,111,203,150, 45,116,199,142, 29,116,237,218,181,244, -205, 55,223,180,250,250,250,102,171, 84,170,161,205,209,116,119,119,223,252,208, 67, 15,153, 54,111,222, 76,143, 28, 57, 66,119, -238,220, 73, 95,123,237, 53, 26, 28, 28, 92,169, 80, 40,158,176, 71, 19, 0, 95, 32, 16,172,158, 62,125,122,182,183,183,119,100, -157,117,242,208,208,208,243,227,199,143,207, 4,176,224,126,185, 62,153, 38,211,100,154, 45,215,156,232, 3,239,193,109, 96,161, - 39,222,162,244,196, 91, 52,188, 13,184,103,189,225, 67, 1,190, 92, 36,122,102, 64,191,126,171, 68,192, 51, 20,224,215,187,212, -151, 79,128, 47,229,243,159,236,219,179,231, 42, 17, 48,206,182,173,148,207,127,114, 64,191,126,171,132,124,254,132, 6,245, 26, -209,164, 0, 95, 36, 16, 44,232,219,187,247,106, 1,240,134, 45,237,225, 54,228,218,107,195, 90,209,126,254,228,230, 4,119,200, - 27,211,108,160, 60,166,221,233, 50,254,187,151,101,131, 74,187, 0, 0, 32, 0, 73, 68, 65, 84,230, 94, 8,130, 59,125, 17,222, - 43,154,119,145,209,106, 95,221,108,179,175,214,178,168,158,125, 22,213,217,102, 27,128,246,205, 44, 79,217,157, 60,118, 0,157, -220,220,220, 14,181,111,223, 94,223,186,117,235, 76,103,103,231, 93, 0,124, 91,168, 25,230,233,233,249,181,135,135,199, 13, 47, - 47,175,203,110,110,110, 31, 1,208,182, 68, 83, 40, 20,246,244,240,240,248, 53, 32, 32,160,208,223,223, 95,231,230,230,182, 27, -128,135,163,154, 0,188, 80,207, 77, 5,128, 8,128, 23,123,232, 48, 77,166,201, 52,235, 26,152, 33,109,177,124,112, 27, 88, 6, -183,129,117, 72, 0, 62,170,109, 80, 70, 2,178,230,154,162,231, 0, 73,221,237,155,212,107, 66,147, 2,252, 62,128,178,238, 62, - 35,124, 17,106,143,230,189,108,180,108,249,172,190,207, 79,171,157,111, 65,115,170,200,108,157,100,239,112, 51,216, 61,161,121, - 23, 53, 27,222, 4,154, 14,246, 86, 59,130,252, 29,248,206,242, 59,124, 12, 87, 0, 12,191,195,154, 87, 1, 76,188,147,154, 38, -147,233, 44,236,156,247,173,137,188,101, 53,210, 23, 46, 11, 12, 6,131,113,251,205,193,122, 24, 88, 56, 56,144,124, 34,176,130, -119, 40,145,102,212, 94,125,224,143,192,199, 14,105, 2,192,214,122,166,231,105,150, 94, 45, 77, 0,248, 29,248,211,236, 14,145, - 45,236,110,114,143, 61,155,179, 0,108,118, 40,142, 22,131,193, 96, 48, 24,140,127,142, 35,241,148,253, 17,187,251,137,172, 51, -199, 97, 77,191, 79, 2, 32,188, 1, 87,102,247, 72, 10, 66, 72,120, 51, 92,223, 81,166,201, 52,153, 38,211,100,154, 76,147,105, -254,187, 52,107,105, 55, 52,176,226,122, 29,189,127,100,192,200,157,130,216, 63,109, 89, 51,196,239,209,176, 9, 76,147,105, 50, - 77,166,201, 52,153, 38,211,252,123, 53,239,105, 51,117,123,109,214,109, 6,145, 53, 29, 50, 24, 12, 6,131,193, 96,180,128,198, -106,221,152,209, 98, 48, 24, 12, 6,131,193,104, 1,132, 16, 47, 84, 77, 81, 21, 89,253,202,106,180, 24, 12, 6,131,193, 96, 48, -238, 16, 17,148,210,205,245, 69,134,231,177,178, 97, 48, 24, 12, 6,131,193,104, 25,182,126, 90,142,206,117,200, 96, 48, 24, 12, - 6,131,193,104,132,198,250,104,221, 54,234, 48, 50, 50,146, 70, 68, 68, 16, 86,100, 12, 6,131,193, 96, 48,254, 9,238, 69, 47, - 82,171, 6, 43,178,110,112,106, 86,163,197, 96, 48, 24, 12, 6,131,209, 2,108, 53, 90,213,205,134,183,165, 49,163,197, 96, 48, - 24, 12, 6,131,209, 2, 26,171,209,226, 1, 85,213,116,172,152, 24, 12, 6,131,193, 96,252, 83,220,203, 94,132, 82,186,185,122, -249,211,116, 73,182, 81,135, 3,171, 15,112, 32, 59,213, 12, 6,131,193, 96, 48,254, 1,238, 89, 47, 66, 8,241,170,110, 54,244, -250,211,186,191,114, 10, 30, 6,131,193, 96, 48, 24,140,251, 29, 91,252,172,250,226,104, 49,163,197, 96, 48, 24, 12, 6,131,209, - 66,163, 85, 55,173,166,131, 60, 51, 90, 12, 6,131,193, 96, 48, 24,127, 13,127,105,100,120, 66, 72, 56,211,100,154, 76,147,105, - 50, 77,166,201, 52,153,230,253,142, 45, 34,124,221,218, 45, 22,222,129,193, 96, 48, 24, 12, 6,163,133, 38,171,118,223,172,218, -159,217, 92,135, 12, 6,131,193, 96, 48, 24,127, 17,172, 70,139,193, 96, 48, 24, 12, 6,163, 5,216, 70, 28,214,254,204,140, 22, -131,193, 96, 48, 24, 12,198, 29, 52, 91,245,165,179,166, 67, 6,131,193, 96, 48, 24,140, 22, 80,183, 3,124,237,207, 4, 64,120, - 3,206,236,168, 3, 95,224,240,232,131,166,244,153, 38,211,100,154, 76,147,105, 50, 77,166,121,255,105, 54,165,237,136,255,184, -155,140, 86, 67,157,225, 65, 41,253,203, 22, 0,225, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,247,243, 2,192, 11,192, -180, 90,139,151,109, 29,235,163,197, 96,220,235,124, 71,248, 40, 8, 10, 0,165,222,224,139,179,144,117, 37, 17, 75, 40,215, 98, - 77, 93,168, 63,100,102, 15, 88,164,122,232, 46,223,106,177, 38,131,193, 96,220,167, 84, 79, 38, 93,111, 31, 45,102,180, 24,140, -123, 29,125,112, 32, 4, 88, 6, 30,188, 64, 77, 9,208,134, 46, 3, 16,211, 98, 77, 17,247, 62,172, 60, 95, 80, 83, 60,220,131, -150, 3,136,101,133,205, 96, 48, 24,142,241,183,119,134, 23, 10,133, 58, 66, 8, 39,145, 72,246,214, 55,203, 53,131,113,167, 32, -132,120,201,100,178,189,132, 16, 78, 36, 18,233,238,203,131,220,222, 73, 14,158,117,184,209,204,249,252,116,165,208,221, 80,105, - 13, 4,207, 50, 2, 95, 6, 42, 91,164, 41, 32, 67, 42, 76,156,223,142,115, 6,143, 50,163, 37, 4, 20, 45,211,252,227,156, 56, -137,197,226,159, 8, 33,110,236, 10,189, 63, 9, 37,228,129, 7,133,194,121, 33,132, 60, 76, 8, 33,172, 68, 24,204,104,253,205, - 88, 44, 22,247,180,180, 52,242,249,231,159,143, 82,171,213, 9, 66,161,112, 17, 33, 68,244,111, 41,112,149, 74,117, 74,163,209, -232,156,156,156,116, 26,141,230, 66, 83,233,247,169, 1, 10,116,119,119, 79,113,117,117,141,175,157,238,222,101, 76,159, 14, 15, - 77, 90,226, 22,246,216,128, 22,234,139,132, 66,225, 34,141, 70,147,176,121,243,230, 81,113,113,113,196,108, 54,187,223,151,133, - 89,193,121,128,199, 31,116, 53,203, 32,207, 42, 54,123, 68, 39, 27, 84, 0,127, 32,140,104,254,159,152, 34,206, 3,160, 15, 95, - 74, 47, 87,156,202,215,122,252,150, 88,169, 6,143, 55, 8, 21,196,179,197, 55, 28, 30,239, 37,142,227, 6,139, 68,162, 87,217, -237,247,254, 68,204,227,245, 61, 53,106,212,251, 11, 58,119,158, 21, 12, 60, 90,159,217, 34, 85,188, 18, 18, 18,114,136, 16,242, -204, 29,188,183,124, 24, 28, 28,156, 65, 8,153,205,206, 4,227,111,126,174,117,179,253,193,175,158,134,199,203, 97,163,245, 84, - 27,210,247,217,182,228,248,211,109, 72,201, 51,109, 73,233,196,182,228,228,147,109,200,195,205,201,144,175,175, 47,250,244,233, -195, 79, 77, 77,149,205,158, 61,123,137, 68, 34, 73, 34,132, 12,109,142,150, 92, 46,143, 82, 40, 20,105, 66,161,240,182,188, 40, - 20,138, 40,165, 82,153, 38, 20, 10, 31,169,157,174, 86,171, 79,105, 52, 26,157, 90,173,190,208,128, 17,138,210,104, 52, 58,149, - 74, 21, 85, 59, 93, 40, 20, 62,162, 82,169,210,213,106,117,221,244,135,213,106,117, 90,221,244,134, 16, 10,133,190,105,105,105, -238,233,233,233,238, 98,177,216,163,118,122,106,106,170,123, 90, 90,218,109,233,142, 32, 20, 10, 31, 86, 42,149,105, 10,133, 34, -170,190,244,186,199,212, 16,181,202,238, 97,123,210, 29, 53, 89, 67,134, 12, 57,153,149,149,229,231,228,228,228, 84,123,157,139, -198,105,232,215, 91,214,207, 29, 61, 98,200, 75,238,161,143,119,106,166,254, 80,137, 68,146, 52,103,206,156, 37,233,233,233,178, -158, 61,123,242, 69,162,251,212,199,127, 23, 42, 2,225,250,115,148,106,175,101, 84,104, 35, 70, 61, 37,184,152, 86,174, 53, 91, -173, 46, 0,127, 32,182,181,150, 52, 75, 83, 96,238,199, 81,234,241, 75,178, 80, 59,104,236, 44,254,177,100,129,214,108,181,186, -130,135, 1,205,210,252,227,220, 8,249,124,254,220,213,171, 87,243, 0,204, 36,132,136,255, 77, 55,226,158, 62,196,231,145,246, -130,115,221,189, 73,223, 59,120,115, 15, 83, 40, 20, 81,132,144,192,187,229, 56,141, 28,119,125,247,173, 91,135, 39,180,107, 55, -114, 65,231,206,147,235,154,173,234,247, 11,150, 47, 95, 62,241,234,213,171,218, 54,109,218,188, 72, 8,225,221,129,178, 88,187, -124,249,242,249, 87,175, 94,245, 14, 8, 8,120,231, 78,104, 50,238, 46, 15, 15, 96, 16,128, 8, 0,143, 0,232, 81,253,254,193, -234, 37, 2, 85, 81, 20,106,191, 62, 88,189,175,109,125,207, 6, 52, 34,234,217,239,193, 90,233,181, 63,215,125,111,163, 91,245, -107, 68,245,104,195,136,154, 53,148, 82, 28, 60,120,144,214,126,173,187, 60, 29,128,255,204,234,227, 99,184,118, 96, 39, 45, 77, -187, 69, 11,226, 46,210,139,155, 63,160,179, 30,212, 26,158,109,131, 15, 29,236,153, 79, 41,165,116,199,142, 29,244,216,177, 99, -180,176,176,144,198,198,198,210, 30, 61,122,148,203,229,242, 95, 0, 4, 56,162,167, 82,169,116,191,252,242, 11, 29, 50,100, 72, -145, 82,169, 92, 5,128, 71, 41,133, 90,173,214,253,254,251,239,116,200,144, 33, 69, 42,149,106, 45, 0, 62,165, 20, 79, 60,241, - 68, 14,165,148,106,181,218,204,250,244, 70,143, 30, 93, 64, 41,165, 26,141, 70, 87,157, 95,190, 74,165, 90, 59, 99,198,140,210, -243,231,207, 83,103,103,103, 91, 58, 79,173, 86,175,154, 57,115,102,105,116,116,116, 77,122, 83,139,139,139, 75,154,213,106,165, - 7, 14, 28,160,238,238,238, 53,121,112,118,118, 78,179, 90,173,116,223,190,125, 13,230,173,145, 50,229, 41,149,202,149, 19, 38, - 76, 40, 73, 78, 78,166,174,174,174,186, 90,233,171, 38, 77,154, 84,146,154,154, 74,221,220,220,236,202,163,171,171,171,238,212, -169, 83,116,204,152, 49,197,181,203,212,213,213, 85,119,250,244,105, 91,250, 74, 91,122, 99,139,183,183,247,139,238,238,238,153, -238,238,238,153, 78, 78, 78, 75,189,188,188,178,245,122, 61,165,148,210,182,109,219,230, 80, 74,161,237,252,120,159,246,125, 39, - 46,113, 15, 27, 53,103,227,158,211,103, 79,196,228,233, 59, 15,126,105,165,166,243,104,141, 3,101, 16, 32,149, 74,127,233,223, -191,127,121,114,114, 50, 45, 45, 45,165, 81, 81, 81,244,183,223,126,163,215,174, 93,163,213,215,221,253, 53,210,101,125,168, 47, -221, 20,180, 59,246,109,191,184, 19,203,135,153,105,242, 49,186,115,178,214,124,124,142, 79, 2,221, 16,252, 95,186, 41,164, 85, -179, 52, 55,132,236,188,252,166,223,245,117,239,188, 98, 78, 73, 73,161,243, 38, 13,179,252, 60,203, 39,145,110, 12,222,211, 44, -205, 63,206,209,184,199, 31,127,188, 52, 53, 53,149,134,134,134,150,241,249,252, 41,255,150, 17, 73, 61,188,225, 19, 30, 40,206, -184,188, 99, 30,247,104,152, 60,175,155, 23,250,222,129, 81, 78, 97,238,238,238,185,219,182,109,163, 42,149, 42, 7, 64,224, 93, - 50,250,138, 4, 3,163,190,234,220,121, 31,247,228,147,214,175, 58,119,222, 23, 12,140, 66, 85, 56, 33, 2, 96,225,138, 21, 43, -162,205,102,115,244,214,173, 91,163, 71,141, 26, 21, 13, 96, 94, 11,191,243,227, 15, 63,252,144,154,205,102,186,117,235, 86, 58, -106,212, 40, 10,224, 19,123,247, 87, 42,149,237, 59,117,234,180, 61, 52, 52, 52,181, 75,151, 46,198,144,144,144,138,192,192,192, -228,176,176,176,109, 18,137, 36,128,141,170,251,123,150, 38,188, 72,143,133, 11, 23, 46, 2, 64, 23, 46, 92,184,136, 82, 26, 81, -125, 95,143,168,253,190,238, 43,165, 52,188,246,231,250, 52,108, 75,125,154,245,125, 71,157,247,117, 71, 29,122, 85,127,158, 86, -179,206,118, 80, 7, 15, 30, 28,112,240,224,193,227,117, 15,238,169, 54,232, 51,171,143, 79,121,185, 62,139,198,124,240, 42,253, -223, 32, 95,250,251, 64, 79, 26, 63,247,113,154,181, 99, 45,125,185,171,179,225,201, 54, 24,228,168,209,218,187,119, 47,221,183, -111, 31,253,241,199, 31,105, 76, 76, 12,205,203,203,163, 59,118,236,176,186,186,186,150, 75, 36,146,229, 0,100,246,232,169,213, -106, 29,165,148, 86, 86, 86,210,165, 75,151, 86,168, 84,170, 11, 0, 60,170,141, 18, 45, 44, 44,164,203,151, 47,175,208,104, 52, -151, 1,120,187,185,185,165,221,186,117,139,122,120,120,212,107,102,156,157,157,117,215,175, 95,167,206,206,206, 58, 0, 62,206, -206,206, 49,251,247,239, 55, 81, 74,105,122,122, 58,117,113,113,209, 1,240,112,117,117,189,120,240,224, 65, 19,165,148,102,102, -102, 82, 23, 23, 23,187,141, 86,121,121, 57,253,249,231,159,111,203,131, 45,253,208,161, 67,183, 25, 48, 59,202,211, 67,163,209, - 68,127,243,205, 55, 70,171,213, 74, 99, 98, 98,168, 70,163,209, 1,240,112,114,114,186,176,103,207, 30,163,213,106,165,113,113, -113,118,155,193,214,173, 91,231, 80, 74,169,197, 98,161, 27, 55,110,172,180,149,169, 45,221,104, 52,210,207, 62,251,172, 82,173, - 86, 71, 3,240,104, 76,203,205,205, 45,211,104, 52,210,194,194, 66,218,179,103,207,210,223,127,255,157, 22, 23, 23, 83, 74, 41, -173,214, 67,208,128, 41,239,157,189, 81, 90,252,252,252,245,223, 6,244,120,246,131,195,231, 50,210,191,248, 33, 42,218, 45,108, -244, 48, 59,142, 95, 38, 18,137,150,123,121,121, 85, 28, 59,118,204,106, 52, 26,233,205,155, 55,233,169, 83,167,232,153, 51,103, -104, 84, 84, 20,141,137,137,185,255,140,214, 30,240,233,166,160,209,116, 83, 80,244,182, 9,110,185, 37, 23,118, 81,122,100, 54, - 77,124,175, 13,125,123,152,170,132,219, 20, 20, 77, 55, 5, 63, 73,255, 51, 64,224,144,230,230,144, 71,233,166,160,232, 15,159, -242,207,187, 24,125,158, 30, 63,126,156,126,182,118, 5,157, 21,238, 83,198,109, 10,138,166, 27, 66,198, 56,164, 89,107,145, 72, - 36, 55, 78,158, 60, 73, 79,156, 56, 65,223,121,231, 29, 42,151,203, 83, 91, 94, 14, 33, 34,186, 33,208,159,126, 30, 56,128,110, -233,224, 69,127,109, 94,222,254,106,147, 53, 56, 80,156,158,123,241, 7, 74,243,111,210,236, 85,161,116, 88,144,176, 69,102,171, -218,100,233,147,147,147,105,118,118, 54, 93,179,102, 13, 85,171,213,119,181,217, 10, 2, 70, 3, 88,180,114,229,202, 26,147,181, -126,253,250,232, 43, 87,174, 68,251,249,249,253,216,130,239,250,100,229,202,149, 53, 38,107,253,250,245,244,202,149, 43,212,223, -223, 63,173,169,125, 39, 76,152, 32,239,211,167, 79,244,248,241,227, 13,219,182,109,163,201,201,201,244,242,229,203,116,229,202, -149,116,201,146, 37,244,203, 47,191,164, 99,198,140, 41,235,217,179,231,217, 39,159,124, 82,234, 96,222, 4,148, 82,113,245, 34, -164,148,218,140,166, 0,128,208,246,231,159, 45,183, 27,173,134,188, 72, 67,102,170, 33,131, 85,119, 93, 35, 70,172, 81,195,214, -212,247,213, 53, 85,245, 45,181,171, 86,127,141,136,136,248, 83,223, 24, 1,197,187,211, 94,123, 79,154,180,109, 13,116,223,124, - 10,126,161, 14,194,146, 60, 84,158,140,132,249,228,126, 76,236,221, 91, 38, 35,228,125, 71,235, 0,165, 82, 41,100, 50, 25, 36, - 18, 9, 10, 11, 11,145,152,152,136, 62,125,250,240,162,162,162,164,211,166, 77,155, 45,147,201, 82, 9, 33,143,217, 81, 93, 12, - 0, 56,117,234, 20,166, 78,157, 42,217,190,125,123, 23,173, 86,123,201,106,181,138, 1, 32, 46, 46, 14, 79, 63,253,180,100,215, -174, 93, 29,189,189,189, 47,152, 76, 38,185, 68, 34, 1,159,207,111, 80, 79, 44, 22,195,108, 54, 75, 58,116,232,112,249,210,165, - 75, 97, 35, 71,142, 20,166,164,164,224,214,173, 91, 48,155,205,226,192,192,192, 43, 23, 46, 92,232, 18, 17, 17, 33, 76, 75, 75, - 67, 74, 74, 10,236,237,243, 73, 8,129,209,104,132, 68, 34, 1,143,199,187, 45,189,178,178, 18, 98,177,216,110, 45,161, 80,248, -112,112,112,240,149, 75,151, 46,117, 27, 61,122,180,232,252,249,243, 72, 79, 79,135,213,106, 21,135,132,132, 92,185,116,233, 82, -215, 81,163, 70,137, 46, 95,190, 12,157, 78,119,219,247, 53,209,143, 6, 0,112,233,210, 37,140, 31, 63, 94,252,211, 79, 63,117, -245,242,242,186,108,177, 88,196, 0,112,229,202, 21, 60,253,244,211,226,195,135, 15,119,107,213,170,213,229, 38,154, 18,249, 0, - 96, 54,155,241,226,139, 47, 42,212,106, 53,210,210,210,192,113, 28,172, 86, 43, 0, 32,175, 32,239,202,165, 43, 49,113, 19,199, - 61, 53,160,220, 84, 89,121,250, 92,212,181,182,173,253,125, 9,161,173,155, 40,203,199,228,114,121,234,135, 31,126, 56, 39, 41, - 41, 73, 18, 20, 20,196,187,124,249, 50, 10, 11, 11, 33, 22,139, 33,149, 74, 33,145, 72, 32, 20, 10,239,191, 74,244,226, 80, 87, -112, 24,156,162, 55, 74, 36, 78,190, 42,165, 87, 32,144,122, 2,109,180, 18,240,121,124,233,249, 91, 6, 5, 64, 7,195, 47,215, -213, 49, 77,110,240,173, 28,163,196,236,210, 81,233,237,235,135,188,188, 60,180,106, 27,140, 10,177, 86,124,234,102,153, 18,196, - 65,205, 63,206, 85,191, 14, 29, 58,120,182,111,223, 30,185,185,185,232,214,173, 27,156,157,157,157, 9, 33,131,155, 93, 6,219, - 90, 75, 80,140,190, 0,111, 21,172,228, 29,152, 5,203,112, 83,223, 13,155,187,223, 53, 39,188,167, 15,241, 81, 43,197,103,118, -237,254,198,199,213, 47, 4,136,124, 30, 30, 78, 18,108,121,169,155,139, 86, 35,217,215,156,102, 68, 66, 72,152,135,135,199,177, -179,103,207,186, 73,165, 82, 92,184,112, 1,161,161,161, 88,179,102,141,214,217,217,249,196,221,208,140, 72, 41,165,113,192,129, - 15, 47, 95,222,186, 61, 33,225,224,132,118,237, 70,142, 15, 12, 92, 58,253,153,103,166,188,242,202, 43, 88,177, 98, 5,246,237, -219,135,190,125,251, 98,218,180,105,230,212,212,212,175,154,217, 92,248,233,170, 85,171,102,205,158, 61,187,174,166, 41, 37, 37, -229,195,198,246, 13, 11, 11,243,189,113,227, 70,198,220,185,115,187,109,223,190, 93, 38,151,203, 81, 88, 88,136,207, 63,255, 28, -139, 22, 45, 2, 33, 4,148, 82,124,249,229,151,242,201,147, 39,247, 72, 72, 72,200,104,221,186,181, 61,221, 58, 8, 0, 41, 0, -121,245,162, 0, 32,223,181,107,151,102,244,232,209,234,234, 52, 25, 0, 25, 33, 68, 2, 70, 93,234,245, 34,181,206,249,193, 58, -215,218,200,186,105,117,215, 81, 74, 71, 54,166,225,224,181, 93,223,247, 69,214,141, 12,127,219, 51,181,214,251,129,145,145,145, -199,255, 36, 10,116,246, 12, 8, 66,209,145, 61,144, 9, 8,100,252,234, 69, 64,192, 75,188,130, 86, 82, 33,204,148,134, 53,199, -104,217,204,150, 76, 38,131, 72, 36, 66,105,105, 41,204,102, 51,222,120,227, 13,201,145, 35, 71, 92,121, 60,222,127,155,210,169, -109,152,226,227,227, 17, 18, 18, 66, 14, 28, 56,224, 49,115,230, 76, 25, 0,136,197, 98, 20, 21, 21,161,125,251,246,228,208,161, - 67,238,111,190,249,166,178, 49, 51, 67, 8,129, 72, 36,194,236,217,179,101,231,206,157,115,241,246,246, 70, 98, 98, 34,242,243, -243,161, 84, 42, 49,123,246,108,217,217,179,103,181,222,222,222, 72, 78, 78, 70, 81, 81, 17,148, 74,165,195, 70, 75, 36, 18,221, -182, 15, 33, 4, 38,147, 9, 98,177,216,110, 67,164,209,104,118, 70, 71, 71,107, 53, 26, 13, 46, 95,190, 12,139,197, 2,141, 70, -131, 89,179,102,201,162,163,163,181, 78, 78, 78,136,139,139,179,213,252, 57,148, 71, 0,224, 56, 14,113,113,113,104,221,186, 53, - 78,156, 56,225, 62,125,250,116,169, 45,253,230,205,155,240,245,245,197,137, 19, 39,220, 21, 10,197,206,134,180, 56,142, 67, 86, - 86, 22,174, 94,189,138,196,196, 68,232,245,122,228,230,230,162,164,164, 4, 22,139,165,170,159, 93, 73,113,228,174,111, 15, 92, -146,201,100,242,208,192, 14,126, 87, 98, 98,115,100, 50,153,220,223,207, 47,144,144,119,120,141,228,243,191, 9, 9, 9,174,147, - 39, 79, 22,221,184,113, 3,153,153,153, 16, 10,133, 53,215,150,109,145, 72,238,179,123, 25, 33, 4,196,216, 1,132,116, 59,147, - 88,230,210,111,228, 56, 17,110,253, 4,112,102,128, 39,192,192,206,190,130,125, 87,202, 60, 64,209, 25,149, 8, 6,236, 56,241, -132, 16,192,212, 30, 32, 15,252,124,195,226,218,247,241,151, 68, 25, 25, 25, 16,137, 68,144, 72, 36,232,246,240, 19,130, 93,151, -204,158, 32,232, 2, 19,130,236,210,172,133, 76, 38,123,107,201,146, 37,138,218,154, 83,166, 76, 81,104, 52,154, 37,205, 54, 89, -101,242,222,176,208,217, 87, 51, 12,173,151, 70,102,135, 36,228,148, 7,129,210,185,128,185,107, 75,205, 22, 33,100,160, 84, 42, -189, 69, 8,121,168, 69, 38, 75, 37, 62,189,123,247, 55, 62, 46,173,170, 76, 22, 44, 21,128, 80, 6, 79,173, 19,182,204, 25,228, -162,117,146, 57,100,182,170, 77,214, 47,103,206,156,113,147, 74,165,136,142,142,134, 72, 36,130, 84, 42, 69,167, 78,157,176,105, -211, 38,173,139,139,203, 93,101,182,150, 95,190,188,109,217,213,171,241, 11,195,194,130, 31, 83, 40, 92,102,140, 31,175,121,243, -205, 55, 15,238,223,191,127,107, 68, 68, 68,238,185,115,231, 62,162,148,238,113,240,252, 16, 66,200,250,213,171, 87,207,176, 25, -183, 55,223,124,243,203,253,251,247, 47,139,136,136,200, 58,119,238,220, 92, 74,233,250,198, 52, 74, 75, 75,247, 47, 94,188, 88, -243,248,227,143,219, 62,227,228,201,147,248,234,171,175,160, 80, 40,110,219,118,212,168, 81,152, 58,117,170,179,209,104,108,244, -153,228,225,225,241,200,153, 51,103, 66, 1,136, 0, 72,108, 70, 43, 38, 38,198,169,184,184,216, 73,169, 84, 58,121,121,121,169, -108,102,235,241,199, 31,119, 18, 10,133, 15,129,129,166,188, 72,109,163, 99, 79, 90,115,183,183,215,108,213,249,156,213,208, 60, -135,183, 25,173,136,136,136,227, 0,250,215,183,145, 41, 95, 7, 9,172,144,241, 9,228,252, 90,102, 11, 28, 4, 69, 57,104,206, - 0,222,186, 15, 67,153, 76, 6,169, 84, 10,161, 80, 8,179,217,140,162,162, 34,135, 76,129, 90,173,134, 82,169, 68,121,121, 57, - 44, 22, 11,164, 82,169,205,140, 64,173, 86, 67, 40, 20,214, 60,132,235,214, 38,213,173,205, 17,137, 68, 80, 40, 20,200,202,202, - 66, 74, 74, 10, 56,142,131, 82,169,132, 66,161,128, 88, 44, 70,102,102, 38, 50, 51, 51, 65, 41,133, 66,161,128, 66,161,176,219, - 28, 1,128,213,106,133, 88,252,231,126,192,102,179,217,161, 26, 45,139,197,130,107,215,174, 33, 53, 53, 21, 82,169,180,230, 88, - 37, 18, 9,110,222,188,137,236,236,108,200,229,114,168,213,106,104, 52, 26,187,117,109,199,162, 82,169, 32,147,201, 80, 80, 80, - 0,131,193, 80, 83,166,106,181, 26, 10,133, 2, 69, 69, 69,200,201,201,105,244,216,173, 86, 43, 50, 51, 51,161,215,235,145,150, -150,134,220,220,220, 26,179,197,113, 45,143,127,121,226,196, 9, 36, 38, 38,218,154,166,106,206,111,237, 87, 91,190,239, 27, 62, - 11,211,192, 44, 28,146, 91,106,150,232, 77, 34,141, 71, 88, 56,112,235, 16,192, 19, 0, 82,103,244,234,216, 6, 41, 5, 86,197, -117,157, 81, 10,130,161, 88, 31,232,108,151,166, 85, 56, 88, 95, 98,150, 36,155,180,234,144,206,221,161,211,233, 32,145, 72, 32, -145, 72,240, 64,223,112,220,202,179,202, 99, 51,202,229,160, 24, 98,151,230, 31,191,209,182, 74,165,178,247, 67, 15, 61, 68,106, -107,142, 24, 49, 2,132,144, 78,132,144, 96,135,142,127, 93, 59, 49, 76,242, 94, 16,208,217,177, 89, 6,239,125, 49, 21,129,143, - 62,246,132,203,199, 71,115, 66,174,101, 87, 6,128,154, 95, 3, 53,117,111,174,217, 34,132, 12, 80,169, 84, 7,215,173, 91, 23, - 32,149, 74, 15, 17, 66,250, 53, 71, 71, 41,227,111,124,107,198, 56, 31,103,155,201, 50, 27, 0,129, 12, 16,202, 0,129, 12,158, -238,110,120,127,234, 96, 23,185, 84,184,215, 1,195,186,107,253,250,245,218,186, 38,203,182,116,235,214, 13,111,191,253,182,214, -197,197,101,231, 63,252, 95, 96,136,147,147,211,246,240,240,240, 51,153, 42,213,212,172,238,221,197,191,104, 52, 69,143, 20, 21, -105,252, 99, 98, 76, 65,192, 21, 0,159,165,165,165, 13,179,215,100, 17, 66,158,209,104, 52,209,225,225,225, 38,149, 74,149,186, -102,205,154,151,103,206,156,137, 21, 43, 86, 96,241,226,197,159, 3,120,129, 82,250, 70, 90, 90,154,119, 83, 38, 11, 0,178,179, -179,159, 93,176, 96, 65,110,110,110, 46, 0,160, 83,167, 78, 40, 44, 44,196,188,121,243,240,234,171, 85,131, 98,187,118,237, 10, - 74, 41,116, 58, 29, 86,173, 90,165,203,206,206,126,174,137,123,123,218,158, 61,123,122,152, 76, 38,223,234,230, 65, 73, 97, 97, -161, 58, 63, 63, 95,101, 50,153, 20, 28,199, 41,156,156,156,148, 0,228, 19, 39, 78, 20,196,198,198,134, 88, 44,150, 12,230,173, -254,160, 49, 47,210, 76, 34, 91, 82,115, 85, 95,141, 88, 3,215,103,227, 53, 90, 17, 17, 17,164,246,235,109, 53, 70, 4,151, 83, -163, 78,192, 37,172,251,109,181, 89,114, 62,129, 76,173,193,173,180, 20,136, 64,174, 58,122, 16, 54, 99, 85,215,108, 21, 21, 21, -225,165,151, 94, 42, 31, 59,118,108, 30,199,113, 79,216,107, 10, 52, 26, 13, 52, 26, 13, 98, 99, 99,233,152, 49, 99,116,107,214, -172, 41,175,109,180,226,227,227,233,144, 33, 67,114,150, 44, 89, 82,218,152,209,178,213,104, 45, 95,190,188,124,224,192,129,250, -171, 87,175, 82,155,153, 82, 42,149, 88,181,106, 85,249,160, 65,131,116,231,207,159,167,182, 52, 71,106,180,120, 60, 94,141,209, -170,189, 15,143,199, 3,199,113, 14, 25,173,178,178,178,103, 35, 34, 34,116,113,113,113,212,118,156, 26,141, 6,107,214,172, 41, - 31, 60,120,176,238,234,213,171,212,150,166, 86,171,237, 54,131,182,239, 87,169, 84, 80,171,213,136,141,141,165, 67,134, 12,209, -125,242,201, 39, 21,181,211,175, 93,187, 70, 71,141, 26,165, 43, 41, 41,121,182,177, 26,173,196,196,196,154, 26,172,138,138, 10, -228,230,230, 34, 45, 45,173,166,233,176, 92,161, 30, 54,110,236,163, 93,202,203,203, 13,177,241, 55, 82, 59,117, 12,117, 47, 47, - 47, 55,164,164,166,198, 83,186,132,107,228,135,240,196,243,207, 63,159,183,104,209,162,242,226,226,226,122, 77,150,237,245,190, -130,199,121,130,208,135,126,187, 81,234, 52,248,209,167,197, 36,251, 28, 96, 42, 5, 36,206,128,196, 25, 2,133, 43,134,247,235, -202,223,118,166,216, 19,148,235, 3,145,196,183, 73, 77, 33,245, 0,184,126, 71,226, 43,156, 31,122,114,150, 56, 63, 63, 31,124, - 62,191,198, 20,201, 21, 10, 60,242,216, 68,222,151,231, 42, 61, 1,218, 23,132,239,107,111,118,197, 98,241,252,183,222,122, 75, - 84, 80, 80, 0, 30,143,247,135,166, 92,142,233,211,167, 75,212,106,245, 98,187,143,253,187, 80, 17,132,146, 94, 0,125,245,122, -118,133,247,254, 43,229, 65,175, 45,223, 34, 11,235,218, 3, 47, 14,116,151, 45,143,204, 9,187,148, 86,222, 6,176,206,129,197, -248,128,163,102,139, 16,210, 79,165, 82, 69, 70, 69, 69,201, 71,140, 24,129, 85,171, 86, 41,100, 50,217, 33, 66,136,195, 55,254, -178, 82,235,204,119, 63,249, 90,119,249,163,161,128,169,172,202, 96,213, 90,114, 74, 57,188,189,229, 88,145,217, 76,199,217,171, - 89, 94, 94, 62,233,133, 23, 94,200,219,187,119,239,159, 76,150, 84, 42, 69, 82, 82, 18,150, 46, 93,154,159,159,159,255,220, 63, -105,178,102,206,156,185, 52, 61, 61, 61,232,200,145, 35, 2,189, 94,239,190,250,139, 47,138,190, 43, 42,202, 95, 22, 19,115,253, -141,142, 29, 59, 44,236,220,249,185,134, 66, 63, 52,100,178,102,204,152,177, 43, 61, 61,189,219,209,163, 71,133,122,189,222,119, -198,140, 25, 88,185,114, 37, 22, 47, 94,188, 9,192,139,180,186,179,140,189, 24,141,198,235, 5, 5, 5, 35,135, 14, 29, 90, 88, - 80, 80,128,206,157, 59,227,209, 71, 31,133,167,167, 39,188,189,189, 49,122,244,104, 4, 6, 6, 34, 47, 47, 15,227,198,141,203, -215,235,245, 67, 41,165,137,141,105,230,229,229, 37,236,220,185, 51,126,214,172, 89,221,210,211,211, 67, 0,184,150,148,148, 40, - 74, 74, 74, 36, 70,163, 81,230,236,236,236,220,181,107, 87,183,105,211,166, 41, 47, 94,188, 24,146,158,158, 94, 10, 32,133,217, -171, 26,147,213,160, 23, 1,160,175, 54, 60,198, 58,175,250, 38,214,217,187,111,189,239,237,216,238, 54,179, 85,123,249, 83,141, - 86, 67,152,128,183,191,218,179,173, 66,236,215, 30,154,160, 46,144, 75,165,144,137,197,144, 57,187,162,146,227,240, 69, 82,182, -161,140,210,197,142, 22,104,237,102, 67,169, 84, 10, 62,159,143,207, 62,251,204,210,187,119,239,138, 99,199,142,173, 51, 24, 12, -126,148,210, 31, 28, 49, 5,159,124,242,137, 97,246,236,217,151,114,114,114,186, 72,165, 82,163, 45,125,221,186,117,134,137, 19, - 39,198,164,167,167,119,147,203,229,134,134,250,103,213, 54, 90, 18,137,164, 50, 39, 39,167,199,148, 41, 83,226, 62,251,236,179, - 50,185, 92, 14,133, 66, 1,137, 68, 98,204,201,201,233,242,242,203, 47, 95, 90,185,114,165, 65, 38,147, 65,161, 80, 56,212, 44, - 71, 41,253,147,161,170,157,110, 47,102,179,249, 88, 78, 78, 78,151,217,179,103, 95,252,248,227,143,203,108, 6,168,118, 30, 87, -175, 94,109, 80, 42,149, 14,213,104,217,182, 83, 40, 20, 88,187,118,173, 97,214,172, 89,151,114,114,114,186, 72, 36, 18, 99,173, -244,178,153, 51,103, 94,204,201,201,233, 98, 54,155,143, 53,242, 15,207, 90, 92, 92, 12,129, 64,128,152,152,152, 74,145, 72, 4, - 30,143,135,155, 55,111,214, 24, 45, 23, 23,151,208, 46,157, 58, 6,127,189,107,207,113,153, 72, 34,233,221,227,129,144,196,228, -148,116, 74, 73,114, 19,255, 56,126,168,168,168,240, 59,121,242,228,186,161, 67,135, 86,124,254,249,231, 22,129, 64,240,167,135, -207,253,103,180, 32, 7,129,236, 70, 78,165, 74,202,179, 16,196,255, 80,101,178,164, 78,128,212, 25,144, 58,195,199,199, 23,231, -146, 12, 42,240, 32,134,213,142, 24, 98,148, 42, 64, 32,143,209, 65, 37, 20,203, 72,118,118,118,141, 33,178, 45, 1,237, 67,112, - 33,165, 84, 9, 66, 37,224,195,145, 16, 36, 35, 93, 93, 93, 5, 89, 89, 89,127,210, 12, 13, 13,229,155,205,102,251, 67,187,100, - 90,189, 0,110, 70,124,118,133,215,247,151,202,130,230, 44,251, 82, 38,179, 22, 2, 81,159, 32,172,173, 55,230, 60,217, 85,252, -230,126,125,216,249,100, 67, 91,240,233,139,224, 74,181, 14, 24,132,135, 84, 42,213,161,243,231,207,203, 85, 42, 21, 18, 19, 19, -209,163, 71, 15,108,222,188, 89, 46,151,203,127, 36,132, 12,116,228, 52,157,201,166, 41,165, 37,214,222,243,247,164,102, 95,206, -178,220,102,178,244,101, 20, 47,124,184,191,176,160,184,226,137,211,169, 13,255,126,234,185,230, 47, 22, 22, 22, 14, 89,188,120, -113,158, 94,175,191,237, 26, 79, 73, 73,177, 25,130,129,148,210,171,255,212,229,169,209,104,198, 47, 91,182, 12,231,207,159,199, -136, 17, 35,112,226,196, 9,228,231,231, 99,247,161, 67, 55,118,222,184,241,134,173,207, 86,125,161, 31, 26, 66,173, 86,191,182, -108,217, 50, 68, 69, 69,213,104,230,229,229, 97,217,178,101,233, 0, 94,114,212,100,217,208,233,116,231,174, 95,191, 62,180,115, -231,206,215,214,173, 91,151,238,229,229,197, 77,155, 54, 13, 47,188,240, 2,180, 90,173,117,237,218,181,169,253,250,245,139, 73, - 72, 72, 8, 47, 43, 43,187, 98,199,249,161,185,185,185,167, 54,111,222,124,230,225,135, 31,150, 79,154, 52, 73,187,111,223, 62, - 87,131,193,224, 45,145, 72,220,141, 70,163,248,218,181,107,252,239,190,251,206, 51, 54, 54, 54,169,188,188,252, 92,115,243,254, - 47,228,124,117,237,212,209, 58,175,231,155, 88,103,239,190, 13,189,111,106,187,218,231,127,115,237,165,246,138, 38,151,241,109, -241,159,233, 29, 85,134, 83, 19,122,209,236,105, 15, 81,221,211, 33,244,228, 0, 23, 58,165, 29, 41,155,212,204,240, 14, 25, 25, - 25, 84,167,211,209,188,188, 60,250,205, 55,223, 80, 79, 79,207, 50,149, 74,229,112,120, 7, 79, 79, 79, 93,113,113, 49,125,240, -193, 7,243,181, 90,109, 77, 40, 2, 47, 47, 47, 93, 89, 89, 25,237,213,171, 87,190,187,187,123, 77,120, 7, 95, 95,223, 52, 74, - 41,245,247,247,207,108, 72,207, 98,177, 80, 79, 79, 79, 91,136, 4,161,139,139,203,134,158, 61,123,230,235,116, 58,234,229,229, - 85, 19, 58, 65,171,213,174,234,209,163,199,109,233,118,228, 55, 45, 61, 61,157,166,167,167,211, 86,173, 90,101,214, 78, 79, 73, - 73,161, 41, 41, 41,212,215,215,215,225,240, 14, 90,173,118,101,221,188, 52, 55,143,126,126,126,186,242,242,114,218,167, 79,159, -219,202,212,207,207, 79, 87, 81, 81, 97, 75,183, 43,188,131, 76, 38,123, 81, 42,149,102, 74,165,210, 76,137, 68,178,180,117,235, -214, 57,223,126,251, 45, 93,187,118, 45, 85,169, 84, 85,225, 29, 66, 71,245,110,223,231,185, 55,180,161,163, 95,107, 73,120, 7, -149, 74,245,139,167,167,103,217,119,223,125, 71, 43, 43, 43,169,217,108,166, 54,112, 63,141, 58,220, 28,216,158,110, 8,222,159, -240,110, 64,236,236,254,242,138, 43,239,119,161,244,191,143, 83,250,227, 11,148, 30,155, 79,207,109,154, 70,251, 4, 72,172,191, -207,107, 21, 79, 55, 6,125,111, 87, 72,134,205,157,218,211, 13,193, 63,222,120, 39, 32,118, 82, 63,239,138, 47, 62, 91, 75,207, -158, 61, 75, 99, 98, 98,104, 98, 98, 34,253,241,135,111,105,159,182,242, 42,205, 13,193,251, 29, 9,243, 0,160,175, 68, 34, 41, - 93,179,102, 13, 61,115,230, 76,141,230,254,253,251,169, 92, 46, 55, 0,118,142, 90, 6, 8,221, 16,250,152,229,179,160,223,222, - 28,172, 44,201, 59, 56,159,210, 43,219, 40,221, 28, 70,233,214,158,148,126, 27, 65,233,129,231,232,153,181, 79,210,190, 1, 34, - 51,221, 24,116,130,110, 10, 29,108,111, 62,133, 66, 97,241,222,189,123,105,102,102, 38, 61,113,226, 4,141,138,138,162,113,113, -113, 52, 53, 53,149, 70, 70, 70, 82,161, 80, 88, 1,192,225, 81,141, 61, 61,224, 31,222, 65,148,117,105,121, 95, 74,247,141,163, -250,157,227,233,200,142,170,252, 94,173, 4, 15,183, 96,164, 93, 87, 87, 87,215,220,200,200, 72,154,148,148, 68,143, 31, 63, 78, -221,221,221,115, 1,132,253,211,215,103,120,120,248, 89, 74,105,244,136, 17, 35,162, 1,252, 20, 30, 30, 30,125,235,214,173,232, - 30, 61,122,156, 65, 35,161, 31, 26,211,124,228,145, 71, 76,148, 82, 58, 98,196, 8, 10, 32, 51, 60, 60,156,222,186,117,139,246, -232,209,195,120,135, 70, 73,242, 1, 60, 39, 20, 10,191,112,113,113,249,159,179,179,243, 49, 62,159,191, 25,192, 4,123,238,115, -141,104,122, 3, 8, 5,240, 64,245, 18, 82,157,198, 70, 28,254,155, 38,156,182,119,195, 39, 3,208,119,114, 91,114,252,217, 54, - 40, 25,215, 6,165,207,183, 35, 39,159, 8,192,195,142,206,238,109, 51, 90,249,249,249,244,226,197,139,116,192,128, 1,101, 10, -133, 34, 3,192,208,230,204, 24,238,230,230, 22,229,238,238,158, 38, 16,220,126,211,170,149,254, 72,237,116,119,119,247, 83, 94, - 94, 94, 58,173, 86,123,161, 62, 77, 55, 55,183, 40, 47, 47, 47,157,155,155, 91, 84,237,253,248,124,254, 8, 55, 55,183,140,186, -233, 2,129,224, 97,119,119,247,180,186,233,104, 96,102,115, 79, 79,207,180,204,204, 76,170,215,235,169,159,159, 95,102, 93, 3, -150,157,157,125,155, 1,115,100,182,244,134,242,210, 80,122, 67,154,118,148,169,195,231,189,214,186, 64, 31, 31,159,156,213,171, - 87, 83,165, 82,153, 83,123, 93, 80,255,231,223, 58,123,163,180,248,133, 5, 27,190,213,134, 60,214,169, 57, 51,197, 3, 24,170, - 80, 40, 50, 6, 13, 26, 84,118,243,230,205, 70,141, 22,238,145, 25,237,255,164,185, 39, 68, 68, 55,133,244,165, 27, 67, 34,227, -150,248, 95,123,174,167,162, 50,122,245, 8, 74,143,205,167,103, 54,188, 64,123, 7,136,171, 12,209,166,224, 67,244,203,192,254, -244,147,182, 98,187, 52,191,104,215,143,110, 10, 62, 20,251,182,255,181,199,187,107,141,187,182,109,162, 55,111,222,164,251,191, -219, 73,123,181,169, 54, 89, 27, 67,126,166, 27, 66, 6,217,165, 89,143,217,218,178,101, 11,189,121,243, 38,253,254,251,239,237, - 50, 89,183,105,214, 50, 90,139,194,149,133, 47,244,148, 86,142,235, 42, 54,142, 14, 19,153,134,180, 23, 89,250,248, 11,172, 93, -188,120, 92,136, 22,116, 72,144,172,146,110, 12, 58, 65, 55,134, 12,181, 55,159, 98,177, 56, 21,181, 98,234,212, 93, 36, 18,137, -190, 33,163,213,212,121,239,233, 1,255,240, 64, 73,214, 47,239, 62, 76, 31,237,172,202,179,199,100, 53,165, 9,160,171,155,155, - 91,238,214,173, 91,169,135,135,135,222, 30,147,245,119, 92,159, 26,141,102,123,105,105,105,244,225,195,135,163,195,195,195,163, -183,111,223, 30,125,242,228,201,104,185, 92,190,189,161,208, 15, 33,117,238,255,117, 53,213,106,117,116, 73, 73, 9, 61,124,248, - 48, 13, 15, 15,167,219,183,111,167, 39, 79,158,164,114,185, 60,250,174,250,109, 50,205,127,175,153,170,138,161,117,219,226,176, -209,186, 83, 39, 2, 0, 45, 44, 44,164,115,230,204, 49, 74,165, 82,131, 72, 36, 90, 4, 64,244,111,185, 8,221,220,220, 78,121, -120,120,232, 60, 60, 60,110, 51,123,181,211,221,220,220, 46,220,207, 63, 64, 0,129, 34,145, 40, 69, 40, 20,198,215, 78,215,134, -142,234,221,174,239,164,197, 30, 97,163,134,183, 36,159, 0, 68, 34,145,104,145, 84, 42, 53,204,155, 55,207, 88, 90, 90,122,127, - 25, 45, 74, 65, 63,105, 43,182,153,173, 43,139,253,227, 30,237, 40, 55,109,158, 59,132,246,110, 86,124,231, 23, 0, 0, 32, 0, - 73, 68, 65, 84, 93,199,100,109,245,151, 56,164, 89,109,182, 46,190,233, 23, 55, 40, 80,105, 89,182,120, 14,237,213, 70,118,187, -201,114, 68,179,142,217,146,203,229, 37, 75,150, 44,177,187, 38,235, 79,154, 95, 4,249,209, 77,193,219,171, 76, 84, 19,203,134, -160,207,233,167, 65,126,119,203,121,239,233, 1,255, 71, 2, 37, 87,237,173,201,178, 71, 19, 64, 87,103,103,231,107,246,214,100, -253, 29,199, 14, 96,200,244,233,211,163,111,221,186, 21,157,152,152, 24,125,242,228,201,232,199, 30,123, 44, 26,192,144,250,226, -108,153,198,140,169,236,202,227,205,105, 66,243,153,233,211,167,211, 91,183,110,209,196,196, 68,122,242,228, 73,250,216, 99,143, - 81, 0,207, 48, 3,195,140,214,221,190, 8,254,238, 70, 86,169, 84,154,227,228,228,164, 85, 42,149,145, 21, 21, 21,179, 40,165, - 89,255,166, 70,102,189, 94,223,199,145,244,251, 17, 74,105, 60, 0,255,186,233, 57, 87,247,157, 6,112,250, 14,232,155, 0, 44, - 35,132,124,181,105,211,166,117,171, 86,173,122, 76, 42,149,234,239,171, 66,156,149, 96,196,186,118, 81, 16,139,151,119,244,145, - 47,124,107, 4, 37,203, 14,159,242, 95, 49,198, 61,181, 79, 59, 69, 18,132,220,135, 32,149,231,240, 92,114,165,131,154,231, 32, - 51, 47,239,210, 74,190,240,131,209, 32, 31, 30,218,230,191,242, 49,215,212, 62,109,149,169,160,248, 16, 18,195,105,135, 52,111, - 63, 47,191, 19, 66,134,175, 94,189,250, 43,131,193, 48,149, 82,250, 63,135, 69, 84,188,108,148,153,151,192,204,239, 8, 10,113, - 35, 95,102, 0,143, 31,131, 28,220, 53,147,137,159,201,166, 41, 0,194,238,240,111,233, 98,117,115,212,221,244,251,254,153, 16, -130,157, 59,119,142, 15, 14, 14,110, 27, 27, 27,155,104, 48, 24,118, 80, 74,127,174,221,151,137, 16,114,224,195,203,151,203, 62, -141,141,253,221,200,113,191, 55,161,185,187, 90,243,181,224,224,224,176,216,216,216,171, 6,131, 97, 53,165,116, 55,235,186,196, -184,219,249,219,141, 86,121,121,185, 7, 43,118,198,223,116,195,207, 2, 48,230,190, 61,192, 90,102,171,187,159,108,214,222,233, - 50, 3, 40, 73,135,144, 91,235,176,201,170,199,108,245,240,151,189,250,253,139, 50, 3, 40,178, 65,241, 81, 75, 76, 86,109,179, - 5,160, 77,179, 5,158,140, 53, 1, 72, 2, 33,201,248, 15, 26,238, 68,253, 31,212,252,237,102,252, 51,102, 11,192,207, 77,108, - 67, 1, 28,171, 94,236,209,220, 13,128, 25, 43, 6, 51, 90, 12, 6,227,111, 54, 91,223,133,158, 71, 46,127, 30,120,104, 3, 88, - 82, 80,102,201,198,172,100, 99, 11, 53,207, 34,151,204, 6, 31,129, 16, 91, 18, 80,106,204,198,244, 22,104,254, 5, 79,114, 84, -245,157,170,159, 37,236,210, 96, 48, 24,127, 31,132,144,105,181, 71, 26,214,254,204,140, 22,131,113,175, 83, 85,203,147, 94,189, -220,189,154, 12, 6,131,241, 47, 51, 92, 64,213,156, 76,225, 13,252, 97, 60,234,128,112,120, 51,254,144, 30,101,154, 76,147,105, - 50, 77,166,201, 52,153,230,191, 75,179, 41,109, 71,252,199,221,100,176,234, 57,142,205,182, 55,127,235,168, 67,166,201, 52,153, - 38,211,100,154, 76,147,105, 50,205,127,203,194, 3,131,193, 96, 48, 24, 12, 6,163, 37, 53, 90,221,170, 95,189,170,167,224,241, -178,173,251, 71,251,104,201,221, 2,189, 32,224,117, 38, 28, 13, 6, 0,202, 35,113,176,112,151, 13,185,241, 45, 14,249,160,242, - 9,114,161, 16,239, 33, 48, 62, 85,146,113, 61,191,165,122,157,130, 52, 99, 60,220, 84,227,179,243,138,190,138,137, 43,217,231, -200,190, 78, 78,173, 53, 82, 23,231, 39, 43, 77,230,142, 98,145, 40,213, 84, 88,188, 57, 63, 63,161,132, 93,154, 12, 6,131,193, - 96,220, 23,116, 3,112, 1, 64, 4,165,116,115,117, 83, 98,227,157,225, 91,135,245, 59, 47,149,202, 2, 0,128,163, 20, 28, 5, -202,138, 11,163,179, 18,206, 15, 5, 0,109, 64,247,195, 66,169,186, 59, 71,171,214, 91, 57,192, 98,170, 72, 42, 74, 62,243,160, - 61, 57, 82,186, 7, 61, 30, 62, 36,124,204,200,145, 17, 65,157, 58,118,106, 7, 0, 87, 98,174, 36, 28, 60, 24,121, 93,233, 30, -180,183, 52,231,250,247, 45, 57, 98, 10,233,123, 15, 60,208,245,161,168,168, 11,239, 2,152,209,210, 18,116,117, 85,206,250,249, -191,243,250, 63, 50,102,149, 2,128, 67, 70, 75,234,226,252,228,232, 71,135,117,125,253,149,233,188, 23,230,125, 16,112,254,247, - 95, 87,168,188, 59, 22, 82,206,252,115,153,238,233,223, 26,155, 56,153,193, 96, 48, 24, 12,198, 93, 79,100,181,185,138,172,187, -162, 65,163, 37,149,202, 2,206,252,122,208,229,251,147,105, 0,128,240,110,158,120,227,253,117, 67, 8, 33,215, 1, 96,212, 11, -255, 9,124,119,209, 43, 56,117, 53, 7,148, 82,116,109,239,138,225,163,159,178, 43, 55, 50,207,208, 7,159, 30, 59,246,217,121, -243, 94, 27,117,243,230,205,228, 93,187,118,253, 6, 0,253,250,247,111,255,193, 7, 31,140, 93,229,236, 34,145,121,134,102,148, -103,199,158,111,206,209,202,124,218,249,132,118,232, 60,254,155, 47,215,241, 6, 14,125, 98,156,204,167,221,178,242,140,132, 12, -123,246,213,106,181,179,133, 66,161, 6, 0, 56,238, 15,255,211,182, 21,223, 19, 0, 44, 86, 78,229,226, 19, 92,194, 23, 73,173, - 18,137, 40,182,164,180,244,171,162,244,216, 47, 26,211,172, 52,155,195, 94,125,105, 50,239, 98, 98, 30, 2,194,250,241,215, 46, -123, 19,156,213,236, 60,103,209,251, 79, 70,157,253, 6,192,146,227,236, 26,101, 48, 24, 12, 6,227,222,164, 58,110,227,230, 90, -159, 55, 55,105,180, 0, 64, 41, 19,224,250,173,108, 0,128,147, 12,152,245,226, 36,228,229,234, 3,141, 22, 14,207, 79,154,128, - 11,113, 89,184,158,164, 7,165, 20,129,190,114,187, 51,196, 7,247,192,243, 83,158, 31,112,248,231,159,207,189,181,248,173,175, - 9,169,138, 6,190,105,243,231,189,223, 94,242,246,212, 9,147, 38, 12,254,238,187,239,174,162,206,204,216,246, 34, 32,170,117, - 43,151, 47, 21,167,231, 86, 84,204,158,183,144,123,109,238,236,181, 0,158,176,103, 95,161, 80,168, 73, 79, 79, 87,242,120,183, -119, 95,251,112,233,194, 19,131,199,172,186,145,156, 90,120,241,240,254,253, 15,134,134,134, 34, 61, 35,187,239,138,143, 55,118, -241,106,247,224,228,146,226,242, 49,101,250,216,122,163, 80, 75,132,194,171,239,172,216,208,149,115,106,207,123, 99,234, 8,132, -181,243, 70, 70, 78, 33,250, 15, 29, 37,136, 62,127,126, 8, 0,102,180, 24, 12, 6,131,193,184, 71,105,108,212, 33, 15, 0, 34, - 35, 35,235, 13,252,103,181, 82, 92, 79,202,194,245,164, 44,156,139,211,195, 68,133, 88,187,226, 29,172, 94,182, 4,249,229, 60, -124,127, 42, 13,241, 73,217,136, 79,202, 70,110, 65,105,125, 14,239,182, 33,154,171,151,203,187,173, 93,171, 89, 57,164,191, 98, -160,139,179,179,243,141,171, 95,151,189, 61, 87, 23,242,206,171,105, 34,161, 81,146,174, 80, 42,250,236,217,243,109,168,135,214, - 93,161, 84,170,230, 43,124,187,110,113,114,234,162,105, 76,179, 46,114,143,144, 81,163, 34,134, 61,236,233,233,193, 77, 95, 27, - 29,215, 49, 36,216,220,161,125,135,190,114,143,192, 81,141, 56,209, 26, 77,142,227,192,227,241,160,211,233,144,153,153,137, 91, -183,110, 33, 62, 62, 30,105,105,201, 58,142, 82,161, 21, 28,207,203,203, 23, 2,129, 24, 1,173,253,177, 97,237, 50,249,251,255, -121,163,135, 84, 33,222, 71, 8, 33,245,105, 86,228, 23,124,247,227, 79, 63,103, 28,218,181,193, 10, 0, 57, 5,165, 56,118,254, - 38, 46,196,166, 57,234,152,239,248,144, 87,166,201, 52,153, 38,211,100,154, 76,243,110,208,108,200,139,220, 11, 80, 74, 55,215, - 93,108,235, 26, 29,117,152,144,150,143,235,183,178,209, 61,216, 7,237, 90,123,225, 92,124, 1,118, 28, 75,195,150,195, 41, 56, -118, 73, 15, 78,160, 66,118, 49,112, 35, 89,135, 27, 41,185,141,197,105, 6, 0,240, 37,194,167, 95,125,181,104, 94,167,208,226, - 94,191, 30,154, 5, 31,237,141,208, 5, 11, 10,103,241, 37,194,167,157, 91,169,118, 45,156, 55,103,188, 74, 46, 23, 27, 43,141, -104,219,198, 95,250,202,204, 89,147,137,179,100,151,189, 7,170,246, 13,117,150,200,100, 95,188,255,159,249,146,143,190,191,145, - 90,102, 68,217,222,211,186,196,215, 22,190,157, 47, 16, 74, 55,168,125, 67,157,237,213, 50,155,205,168,172,172,132,209,104,132, -201,100, 66, 70,218,181, 81,191,124,255,250,208, 54,173, 92,134, 74,164, 82, 80, 0,197,229, 22,220,202, 50, 96,208, 35,131,249, -221,187,117, 11, 83,122,133, 76,169, 79,171,176, 48,185,136,163,124,213,193, 31,118,242,191, 61,114, 17, 95, 31, 60,143,125,255, -187,136,115,199, 15, 89, 40,103,174,153,166, 66,229,221, 33, 80,229,221, 57, 69,229,211, 69, 87,179,248,118,138, 98,255, 21, 24, - 12, 6,131,193,184,123,169, 30,105, 56,173,238,136, 67,160,145,166,195,138,138,242,164, 39,158,158, 0, 47,119, 79,229,232,129, -207,137,162, 19, 10,161,207, 74,193,205,248, 24, 24, 42,204, 16, 57,183, 1,164,158,104, 29,224,143,203,215,247,153, 62, 89, 25, - 89,202, 89, 42,147, 26,210, 27, 61,218,219,215, 75,171,224,173, 92,225,119, 38,254,122, 65,247,157,139,183,226,217,103,149,110, - 43, 87,248,157, 73, 78, 84,240,228, 82,218,103,242,164,113,132, 71, 40, 22, 44,152,135,209, 35,135,225,249,201, 19,201, 87, 95, -109,235,101,239,129,114, 16,126,186,232,205,119,196,186, 66,139,241, 92,124,105,165, 92, 33,147,253,126,163,180, 44, 44,192, 79, - 54, 98,204,115,153,145,123,190,248, 8,192, 36,123,180,108, 6,203,108, 54,195,100, 50, 1,128, 21, 0,120,188,170,215,188, 18, - 35,114, 10, 43,161, 43,172,132,197,202, 97,204,211,147,100,231,163, 46, 77, 2,208, 64,127, 45,142, 51, 91,204,216,123,228, 2, - 50,206,127,199, 17, 30,191,200,214, 25,222,102,178, 60, 61,253, 78,140, 28, 51, 81, 43,150, 86, 53,195,150,148, 85,226,171,141, - 43,216, 21,204, 96, 48, 24, 12,198, 93, 76,221,233,119, 8, 33,104,114, 10,158,228,171,191, 61, 8, 0, 65, 15, 14,205, 83, 74, - 5, 46, 2, 30,129, 46, 61, 1, 95,173,154, 13,142,163, 24, 49,117, 37, 84, 1,158,144,137,248,168, 44,205, 43,205,187,249,171, -107,227,110,207, 60,120,253,166,140,128,151, 95,106,171,222,185,179, 84, 8, 0, 59,119,150, 10, 95,154,222, 74,253,217,166,164, -128,158, 15,117, 7,181, 90, 49,114,244, 19,120,250,153,167,145,156,109,192,127, 79,164,162,172,220,104,215,252,106,114,109, 72, - 23,119,111,159, 97,175, 62, 55, 76, 33,224, 19,210,193, 95,195, 79,211,155, 45,124,190,208,122,224,124, 81,230,152, 49,207,184, - 29,251,241,219,135,229,218,144, 46, 6,253,181, 75, 77,233, 85, 86, 86,194,106,181,162,178,178, 18,102,179, 25, 46,110,109,126, - 28,252,196,170,244,172,236,146,200,236,130,138,158,101,102, 11,116,133,149,200, 41,172, 68, 97,153, 9,158, 42,103, 88,204,198, - 78,141,156,132,175, 31,123, 98,194, 68, 0, 60,194,179,108, 45,201,188, 22,111, 91,103, 51, 89,195, 70, 63,171, 61, 17,157,128, -155, 81,135, 10, 40,103, 49, 87, 21, 28,199,166, 64, 97, 48, 24, 12, 6,227, 46,167, 86, 63,173,200,234,206,241,184,205,104,217, -218, 70, 35, 34, 34, 72,221,157, 51,116,249,112, 85, 10,160,245, 14,192,248,217,171,241,245, 71,115, 97,181,154, 65, 41, 96,177, -218, 23,153,128, 82,225,145, 25, 47, 5, 4,183, 14,224,107,199, 63, 43, 47,223,177,211, 32, 27,255,172,188,188, 99, 39,215,162, - 25, 47, 5, 36,149, 84,248,245,181, 88,173,248,253,106, 14, 98,146,138, 16,147, 92, 12,165,204,254, 48, 95,124,177,232,165, 21, -203,151,137, 4,124, 66,174,166,148,150,166,231, 89, 74,249, 66,161, 73, 46, 19, 83, 35, 21, 84, 38,231,210,188, 71, 30,155, 92, -126, 96,251,199, 83, 0,204,108, 72,199, 54,210,208, 86,147,101,123,165,148, 82, 2,112, 28,177, 90,211,115, 43, 80,106, 50, 67, - 87,240,135,209, 34,150,134, 91, 78, 85,222, 29, 2, 53,106,151,159,248,124,190,132, 82,192,108,178,140, 85,121,119, 24, 90,146, -121, 35,190,182,201, 58,115, 53, 19, 9, 23,143,234,172, 38,195,132, 50, 93,220, 47,236,178,101, 48, 24, 12,198,191,137,198,188, -200,221,142,173, 6,171,222, 26,173,198, 14,136, 82,224, 70, 74, 46, 90,251,106,225,219,186, 29,226,175, 93,254, 99, 29, 0,139, -213,190,190,107,251,246,101,166,175, 89,163,225,230,206, 45,234,189, 98,133,223,233,151,166,183,210,116,236,228, 90, 52,127,126, -106,239, 53,107, 52,167,143,156, 17, 90,105,117,188, 46, 91,108,174,234, 48,255,118,194,235,209, 37,180, 13,255,157,157, 55, 82, -127,185, 82,146, 35, 18,137,204,158,206, 82,162, 82,138,249,124,158, 80, 92,105,230, 85, 6,134,117,227, 31,224, 85, 69,111,109, -202,104,213,109, 58,204,211, 39,140,250,249,191,243, 58, 14,124,108,165, 75,134,190, 28, 69, 70,126, 77,211, 33,159, 71,112,229, - 90, 10,192, 23,197,212,167,169, 86,185, 28,222,181,227,107,191, 53, 43,150,194,100,177, 98,198,220,183, 48,121,210,132,195, 42, -239, 14, 67,253, 2,130,162,127, 59,176, 85, 62,116,250, 6,164, 92,143,202,182, 84, 22,239,102, 38,139,193, 96, 48, 24,255, 54, -238, 69,115,101,163,206,168,195,250,107,180, 26,195,223,215, 3,103, 99,146,208, 41,184, 13, 52,106, 21,226, 18,210,193,231, 9, -193, 35,128,217, 98,191, 25,162, 38,243, 55,107,214,104,144,146,164,224,125,182, 33, 41, 96,198, 75, 1, 73,107,214,104, 78, 83, -147,249, 27, 0, 19, 40,173,154,123,209, 22, 32,213,234, 64, 24, 79,202,153, 91,121,184,200,249, 81,137,101,121, 60, 30,191,210, - 85, 35,229, 92, 53, 18,158,171, 74, 44, 20, 9,249,156,133,242, 76,190,238, 1, 21,148,227,186,216,163, 87,187,233,208,106,181, -130, 16,158,181,218,136, 41,210,242,202, 81, 84,193,135,174,176, 18, 5, 37, 38,116,240, 81,224,232,177,239, 12, 86,115,249,206, -250,180,248, 66,145,166, 93,128, 47,222,120,111, 13,202, 43,173,184,145, 81, 10,145, 68,226,233,225, 25,118,105,194,203, 11, 37, -175,108, 78,192,148,135, 93, 49,247,183,132, 12,131, 78,186,144,253,220, 24, 12, 6,131,193,184,119,168,221, 71,171, 46,118, 25, - 45,165, 92, 10,202,151,226,183,232, 4, 4,133,118,198,182,253,231,208,190, 83, 47,100,149, 88, 64,193,107,114,180,161,141,215, - 22, 26, 46, 0,184, 48,122,180,183,239,227,143,251, 12,166, 84,120,228,179,141, 69,233, 0,176, 97,247, 0, 80, 0, 28, 71, 65, - 41, 64,185, 42,195,101,191,157, 20,164, 36,101, 21,183, 14,240, 84, 32, 54,221, 84,169,144,136,120,206, 10, 49, 95,171, 17,139, - 68, 2, 1,172,148, 84,102,101, 37, 84, 18, 32,217, 30,185,186, 77,135,114,165,215,143,143, 60,182, 82,159,156, 90, 20,213, 33, -223,208,165,200, 36, 6,165, 64, 7, 31, 5, 98,206, 68, 90,117, 25, 55,111,148,235,174,111,172, 79,139,227,192, 55, 89, 56, 92, - 74, 44, 66, 97,153, 25,133,165, 38,244, 29,244,168,168,111,248, 40,252, 22,147, 11,206, 98,198,138,207, 35, 75,172,212,252, 52, -165,177,102,118,201, 50, 24, 12, 6,131,113,239, 80, 61,210, 48, 2, 85,145,225, 35,106,155, 47,187, 38,149,182,114, 20,110,174, - 46,144, 42,212, 72,210,153, 80, 66,220, 81, 96,160,176, 90,171,106,180,184,134,191, 56,188,190,244,125,251, 50,211,127,248, 65, -191,101,223,190,204, 90, 29,189,255,168,201,170,121,229,168,221,154,132, 90,143,238, 63,244,107,209,168,158, 90,103, 30,159, 95, - 46, 18,242, 42, 5, 34,190, 73, 36,224,153, 69, 2,158,209, 67, 45,228,255,122, 96,183,152, 18,252,218,148,102, 69, 69, 5,194, -195,195, 49, 98,196, 8,140, 30, 61, 26, 79, 61,245, 20, 2, 3, 67,220,121,124, 98,164,132,227,180,226, 18,180,211, 18, 8, 42, -210,240,203,238, 15, 13, 49,191,255,112,201, 90, 89,241, 40,173,213,214,121,155, 38,165, 92,126, 81, 37, 42, 76, 86, 20,148,154, - 80, 80,102,130, 69,219, 27, 63,156,202, 68,185,209,138,148,232,239,202,245,217,233,179, 43,116, 55,146,154, 56,145,225,127,193, -197,193, 52,153, 38,211,100,154, 76,147,105,254,227,154,247, 56, 17,213,198, 42,162,110, 28, 45, 59,106,180, 40,218,122, 41,208, -222, 71,129, 10,147, 59, 42,140, 86,148, 85, 88, 81,108, 48,161,216, 96, 70, 82,182, 1, 49,251, 91,158,195,170, 90, 44,128, 84, -191, 7,169, 50,120,246,214,105,137, 77,198,247, 86,175,248, 96,236,238,110, 93,141,175, 68,120,181,186,156,100,204, 36,132, 87, -206,227, 11,204, 46, 42,129, 48, 46,238,178,254,244,137, 31,251, 75, 45,214,137,141,233, 88, 44,150, 34, 31, 31, 31, 0,183, 79, -193, 19,210, 78, 54,250,247,200, 5,109, 6,140, 90,161,253,104,233, 60, 3,143, 47,226,136, 64, 20, 99, 53,151,239, 42,215, 93, -223, 64, 27,233, 80,198, 19, 73,175,157,189, 24,219,203,201,165, 21,110,102,148,161,172,194, 2,147,133,131,179, 82,132,244, 43, -135, 77, 73,113, 81,223,150,100, 92,218,198,174, 83, 6,131,193, 96, 48,238, 77,108,253,180,108,175, 77,134,119,168, 85,187,147, -244, 80,248,163,224, 56, 10, 43, 5, 56,107,117,205, 19,247, 71,237,147,213, 92,145,212,210, 12,114,156,245,220,167,155,183,140, -232,214, 99, 0, 63,212, 79,137,226,188,108,156,249,253,127, 22,112,244,180, 61,251,231,230,198,151,202, 61, 59, 60, 49,246,201, -199,247, 76,122,126,122, 97,255, 65,131, 20,238,238,158,149,233, 25,233,134, 47,183,239, 48, 31,254,113, 95,127, 14,150,103,114, -115,111,148, 54,166, 83, 88, 88,248,113,125,233,143, 60,212,170, 47,128, 54,124, 1, 49, 26,114,226, 21,142, 28, 91,110, 70,218, -152, 15,222,251, 79,242,179, 83,231,136,219,250,180, 67, 78, 17, 31, 73,233,217,136, 59,177,175, 50, 35,254,252,247,197,233, 23, -166,176, 75,148,193, 96, 48, 24,140,123,147, 22,245,209, 74,141,173,138,167,245, 87, 83,146,157, 51, 97,219,182,175,223,255,122, -251,238,190, 21, 70,163, 15,133, 40,205,106, 49, 30, 47,181,226,109,123, 53, 12,217, 55,162,220,220, 2, 59,126,249,249,167,111, -126,185,229,179, 1,224,172,193, 4, 72,166, 4,191, 74,205,214, 73, 77,153,172,198,141, 92,201,166,193, 79,172, 42,207,203, 43, -253,218,209,125, 13,185,113,217, 74,143,182,173, 54,173,125,111, 37,143,199, 31, 98,181,114, 66,206,106,190,105, 53, 85,124, 88, -174,191,190,159, 58, 54,188,146,193, 96, 48, 24, 12,198, 93, 4, 33,100, 90,221,160,165,118,215,104,253, 93,228,231, 39,148, 0, -120,165,165, 58,185,185,241,165, 0,238,248,200,189, 43,241, 69,255, 5,240,223,230,238, 95,170, 75,212,195,206,168,244, 12, 6, -131,193, 96, 48,238,125,195, 5,216,217, 25,158,193, 96, 48, 24, 12, 6,131,209,184,201,170,253, 90,147, 14,160,222,145, 3,142, -204,204,221,156,209, 7, 77,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,108, 74,219, 17,255,113, 79, 24,176,191, -178,123, 16, 33, 36,252, 78, 23, 24,211,100,154, 76,147,105, 50, 77,166,201, 52,239, 63,205,123,218, 76,213,169,197,170, 54,140, -119, 87, 31, 45, 6,131,193, 96, 48,254, 46,220,220, 2,149, 64, 77,191,222, 38, 81,104, 67, 61, 0,160, 76, 31,171, 99,165,199, -104,200, 84,213,215, 71,171, 89, 70,139, 16, 34,228, 9,196,175, 74,101,202,231, 8, 15,234,210,194, 92,159,127,177,139, 37,129, -173, 21, 51, 91,181,210, 14, 74,207,208,125, 21,151,104,216,247, 79,104, 42, 61,218,106,137,216,249,123,194, 85,126, 80,156, 30, -115,232, 14, 31,163, 36, 52, 52,180, 43, 0,196,198,198, 94,164,148, 86,182, 84, 83,225, 17, 52,206, 89,237,244,162,137, 51, 90, - 13,101,134, 13,165,217,241,223,221,201, 60,171,188, 59,184, 66,160,218, 8,171,101, 16, 40,248,224, 11, 46,145,202,138, 23,138, -245,177,137,141,237,231, 55,122, 89,240,148,177, 17,139,183,124, 27,249,126,234,190, 69,113,117,215,187, 12, 95,167,154, 53,113, -200,130,245,187,247, 45,207,221, 63,191,148,221, 94, 28,199,239,161,103,157, 44, 2, 79,126,230,175,171,242, 28,217,207, 55,168, -247, 85,161, 80,168, 53,153, 76, 57, 25,241,103, 58,218,179, 79,171,224, 62, 23,248,124,158,183,213,194,165,167, 93, 63,245, 0, - 43,253,166,145,185,183,237, 13,139,229, 13, 10, 16, 16,193,234,138,188,196,255,181, 68,207,219,219, 91,166,209,104,250,171,213, -234, 86,114,185, 92, 90, 80, 80, 80, 94, 80, 80,144,154,146,146,114,140, 82,106,249, 39,142, 81,225, 17,180,136, 8,201,146,234, -247,239,148,233,174, 47,107,252,254, 26,252, 62,225,209, 69,213,239,151,149,234,226, 22,223, 13,231, 74,234, 25,228,207,167,120, -133,207, 19,244,177,112,230,165, 6, 93,252, 1, 71,246,119,113,113, 25, 34, 16, 8,100,182,207, 22,139,165, 60, 63, 63,255,103, -246, 43,104,214,115,114, 90,221,247,205,174,209, 34,132,240,133, 18,249,201,103,159,159,209,113,249,127, 22, 74,215,110,249, 1, - 82,165,115,108, 69,105, 65,232,221,120,240,218,182, 61,163,248, 60,190,111,237, 52, 43,103, 77,215, 39,158,189, 35, 55,221,160, -214,178, 41,111,206,159, 48,119,220,216,112,255,240,145,179, 9,128,122, 77,145,202,239,193, 83,132,240,218,240, 8,192,227, 17, -240, 8, 0,208,204,220,196,179,221,154,171,105, 67,227,222,174,141, 88,169, 61,241,208,232, 25,158,209, 71,119,108, 83,104, 67, - 7,151,233, 99, 47,223,129, 11, 71,219,174, 93,187, 7, 3, 3, 3, 93,103,205,154, 37, 2,128,143, 62,250,168,125,251,246,237, -243, 18, 18, 18,206, 83, 74,245,205,186,201,185, 7, 79,248,120,213,187, 95, 15, 31, 62, 2,153,185,101, 88,177,102,253, 64,165, -103,224, 83,119,202,108, 57, 59,183, 81, 11,212,206, 87,102,207,127,215,125,216,192, 7,249,165, 21, 22,252,116,226, 98,191, 29, -235,223, 61,167,214,134,246,104,204,108,113,134,162,197, 30, 74, 58,140, 51, 20, 1,192,184,186,235,125,148,230,112,173,204, 58, -204, 75, 34,184, 8, 96,111,147,121, 9,120,232,176, 80, 34,241,231,241,120,176,157,123, 62,169, 58,255,102, 83,121, 74,250,181, - 19, 67,239,134,223,137,218,191,103, 54,248, 2, 87, 30,249, 35,127,164,250, 58, 37,148, 22,103,197,255,230,122, 7,174, 39, 77, -199,246, 78, 97, 17,125, 31,250,242,248,173,124,133,223,128, 57,145,132,242, 62, 75, 57,177,250,146, 93, 15, 21,169,212,249,192, -129, 3,218, 97,195,134,105, 60, 58, 62,118,220,158,125,148, 98,105,232,193,131,251, 69,195,134, 13,117,224,250, 12, 26, 12, 30, -111, 59, 1,132, 28, 71, 63,226,115,244,219,210,188,248, 4, 71,195,176,200, 61,130,167,240, 64,237,190,207,112, 32, 81, 6, 93, -220,150,230,150,175, 80,170,121, 68, 40, 18,189,218, 38,176, 83,183,140,228,155, 81,101,165, 37,107,204, 21,133,199, 29, 22, 50, - 91, 94, 63,250, 91,244,112,129, 80, 72,134, 61,210,147, 15,160, 69, 70,203,195,195,227,177,117,235,214,181,237,221,187,183,237, - 97,174,222,179,103,143,231,123,239,189,167,176,231, 55,212,192,181,228,163,213,106,253,196, 98,177, 15, 0, 24,141,198, 12,189, - 94,159, 74, 41,205,104,242,154,240,108,231, 70, 32,120,247,183, 19, 39, 4, 0,208,175, 95,255,247,253,251,205,114,230,139,148, -229,245, 22,135,177, 68, 1, 96,206,153,179,167, 9, 0,244,234,217,123,161, 66, 27,250,233, 63, 89,179, 37,243, 8,238,201, 3, -230,246,237, 63,120,204,211,207, 76,224,133,117,240,195,144,193, 15, 47, 0,224,144,209, 18, 8, 4,178,115,231,206,181,227,241, -120,124,139,197, 82,209,171, 87,175,212,150,228,203, 39,168,207, 41, 2, 94, 43,147,197,248,185, 62, 49,234,125, 74, 41, 87,215, - 63,104, 90,117,123, 19,124,193, 84,142,227,210,138, 83,206,247,185,223,106,180,234, 45,103, 71,197,120, 2,241,171,227, 38,191, -220,113,206,107,111, 72,103,175, 61,134,200,245, 11,115,239, 86,147, 5, 0,124, 30,223,247,240,207,135,221,229, 98, 62, 0,160, -180,194,130,225,195,134, 53,185,159, 83, 64,207, 95,121,132, 4,217,166, 18,183, 90, 76, 82,129, 80, 92, 65, 0,128, 84,141, 34, -112,243,110,125,204,203,203, 69, 62,110,108,184,255,246,221, 71,210, 83,211,243, 26,188,169,241,120,124,223,125,251, 15,184,251, -184, 74, 33,224, 19,148,150, 91, 48,108,196,163,214,250,182,245,242,114,137, 24, 55, 54,220,127,231, 55, 71, 83,179,178,242, 35, - 27,189,153,123, 5,118, 87,104, 60,126, 26,243,226,123,174, 21, 60, 23,188,189,244, 99,183, 19,135,118, 30, 31, 16, 49,129, 75, - 73, 73,171,160,132,196, 22,228,103,189, 90,154,117,243,186,189, 70, 90,169, 84,182, 85, 42,149, 93,134, 15, 31, 46,157, 55,111, -158,112,224,192,129, 53,235,167, 77,155, 38,250,245,215, 95,189, 86,173, 90, 53,194,219,219,187,162,180,180,244, 82,105,105,105, - 34,165,212,106,239, 57,241,244,212,206,124,226,241, 71,241,240,152, 25,176,114, 4,211, 94,158,131,195,135,246, 78, 7,112, 71, -140,150, 89,174,126,111,234,139,243,180,189, 30,236,202,127,119,231,117,200,196, 2, 12,125, 32,136, 76,158,181,216,105,203, 39, -239,126, 1, 96, 64,125, 53, 89,156,161,104,113, 71, 55,227, 51,163,122,183,193,254, 93,198,103,124,195, 23,128, 39,215,212,212, -108,181, 27,254,138,202, 89, 38, 91,231,237,196,119,151, 88,245,235,218, 13,127,229,104,194,161, 79, 74, 26,125,248, 73, 36,254, -187,118,238,236,224,172, 18, 65,192, 35,224,243, 9, 4,124, 30, 42,140, 86, 60, 53,246,153, 59,245, 79,138, 47,115,239, 48,130, - 7, 76,174,122, 96, 99,107,121,206,141, 31, 29, 57, 39,132, 47,114, 61,184,255,123,129,187, 70, 2, 62,159,128,207, 3,248, 60, -130,100, 93, 57,166, 76,153,172,105,169, 97, 31,222,215,253,193, 95, 63, 29, 48,180, 87, 71,151,206,223,156, 38,154, 94,195,159, -118,205,173,144, 63,183,123,223,255,158,241,235, 63,247, 44,165,220,202,180,223,214, 54,250, 79,186,178,178, 82, 55,116,216,112, - 53, 17, 40,228, 71,127,216,214, 95,192, 35, 48, 91, 41, 44, 86, 10,107,245,220,168, 85,191, 87, 2, 30,143,128,114, 20, 83,167, - 78,193,208, 97,195, 13,156,133, 75,183,255, 38,199,219,254,211,209,223,181,149,102, 14,171,214,109,121,183,172, 72,255,238,173, - 56,215,100,185, 71,224, 28,131, 46,222,238,121, 48,120,160, 15,164, 37,198,188,184,243,224, 25,116, 12, 13,129,149,171,202,103, -144,175, 2, 59, 35,207, 32, 56, 40,184, 42,223, 28, 69, 96, 43, 37, 30,124,224, 65, 0,104,150,209, 18, 74,213,111, 15,136,152, -248,206,200,167,158,135,187, 86, 11, 30, 53,143, 60, 26,185,115,164, 80,166,121,221, 92, 94,180,202,177, 39,134,181,230,185, 64, - 57,174,197,221, 75,188,189,189,181, 15, 62,248, 71, 56, 70,139,197,130,128,128, 0,100,100,100, 4, 53,227, 90,146,123,121,121, - 69,108,218,180,201,125,196,136, 17, 66, 79, 79, 79, 0, 64,118,118,182,207, 79, 63,253,212,205,219,219, 59, 39, 43, 43, 43,146, - 82,106,104, 72,195,106,230,137,120, 2,240,165, 82,121,213, 49,130,240,230,205,156,216,217,195,203,187,222,154,122,189, 62, 91, - 60,127,198,255,136, 64, 32,170,222, 30, 60, 74, 57,210, 72, 45, 81,184, 80, 40,148,213,183,206,196, 87,247,162, 66,205, 11, 60, - 62,175,234, 98,181,152,245,249, 41,209, 33, 14,212,196,133, 9,197,162, 13,207, 78,122,177,207,147, 99, 70,195, 75,171,193,209, -147,151, 49,125,230, 92,179,197,100, 94,211,172,103, 36,159, 47,200,201,201, 73,118,118,118,246,108,249,243,150,180, 57,114,248, -144,251,209, 95,142, 45, 92,189,246,147,151,188, 3,251,153, 57, 74,107,230, 49,246,235,248,176,112,240,200,177,106,247,118,189, -164,159, 44,121, 65,120,191,213,104, 53,100,182, 28,254, 17,137,101,170,177,111,205,159, 37,125,111,199, 25, 68,174,159,158, 91, - 86,164,215,214,252, 83,208, 56, 95, 40, 45, 42,232,214,156, 76,170,220,131,122, 19,190,224, 69,194,231, 43, 8,143,136, 57, 43, -151,102, 49, 26,223, 55,228,198,103,181,180, 0, 56,142,226,191,167,114, 28, 43, 52,138,246,219,191,249,222,221,195, 73,130, 10, -147, 21, 79,143,155,128,175,191,254, 90,165,213,136, 81, 97,180, 96,229,234,213, 37,165,201,145,238,201,105, 5, 25,225,143,206, -253, 57, 49, 41, 39, 38, 53,171,226,219,134, 79, 2, 15,238, 26, 9,150,238,142,135, 90, 38,132,179, 74, 4, 30,143,212, 62, 73, - 53,205,133,153, 89, 5, 69,181, 52,119, 52,248,163,243,234, 52, 84,227,236,189,235,241, 23,151, 58,221,200, 17,128,194,132, 4, -181, 20, 99,159,123, 69,221,214, 83, 6,133,148,239,116, 43, 37,195,107,222,235,175,159,212,184,183,235, 81,148,147,112,171,169, -227,110,221,186,245,152,145, 35, 71,202, 95,123,237, 53, 97,171, 86,173,176,117,231, 30,255,126, 67,159,122, 52, 51, 75,215,138, - 82, 10, 15,119,247,180,169,147,159, 58,240,227,143, 63,166,164,165,165, 9, 87,172, 88,209,243,251,239,191, 15,117,228,159,169, -149, 82, 84, 84, 90, 97,173,126, 64,234,139, 42, 29,189,160,137,143,143,143, 36, 35, 35,163,210, 86,203, 64, 8,169, 41, 76,229, -255,217, 59,239,176,168,142,246,253,223,179, 13,182,193,210,155, 10,138,136, 32,138,189,247, 18, 53, 18,187,198,150,104,236,166, - 24,147, 24, 75, 52, 81, 99,141,177,151,152, 24, 99,140, 26,187,177, 97, 47,168,137,198, 2, 54, 84, 80,169,210,151,182,236,178, -125,247,204,239, 15,192, 16, 66, 89, 80,127,239,251,205, 59,159,235, 58, 23,123,150,221,123,207, 57,115,202, 61,207, 60, 51, 83, -171,121,159,158, 93,219, 10,126, 56,149, 0,141,222, 10,153, 88,136,132, 76, 45, 90, 53, 15, 37, 63, 90, 45,205,202,211,156,240, -118,216,124, 79, 57,237, 59,160,189, 63, 60,156,165,216,190,105, 41,142, 93,143,239,155,169, 33,112, 27,176,114,138,183,189,224, - 13,119,169,104, 99,183, 86, 1, 94, 61, 90,250,225, 86,171, 0,175, 43,145, 49,177,161,111,175,249, 40, 85, 35, 60,159,123,234, - 35,117,249, 55, 30, 30, 92, 28, 68,248,233, 76, 18,164, 98, 1,100, 98, 1,100,246, 69,127, 75,151,127,141,106,181, 62, 33,117, -248,156,117,130,163, 79,200,132,145,111, 15,247, 25, 61,114, 56, 5,159,135, 3,135,142, 15,220,189,123, 87,186,220, 43,104,155, -149,199,255, 73,151,246,240,121,149,199,148, 7,120, 40,236,240,249,182, 7,112,148, 8,225, 32, 21,194, 81, 42, 68,143,166,238, -224,243,106,124,227,113,158, 58,176,126,191,123, 59,123,117, 15,242,149, 7,222,125,166,122, 56, 97,201,237,117, 17,249,221,103, -108, 90, 27,226,170,201, 55, 10,190,154, 57, 73,144,146,150,214,253,192,241,203, 61,124,218, 76,136,177,152, 10,191,200,186,187, -191,220, 8,238,243,199,215, 90,212,110, 63, 92,108,210,152,239,223,141, 73, 9,200, 51,216, 35, 58,177, 0, 50,177, 0,242,146, - 99, 43, 22, 64, 38, 22, 66, 46, 22, 32, 45, 37, 1,185,133,252,223, 83, 93,121,221,105,196,181,106, 53, 81,233, 77, 86,220,137, -215,160,110, 80,115,120,123,251,192,216,111, 76,221, 27, 23, 15, 29,149,121, 55, 90, 94,152,254,232, 11, 91,117,126, 61,241, 39, -230,124, 50, 37,146, 0, 81,197, 15,233, 22, 95,173,216,220,242,235, 57, 31,252,237,189,153,139, 54,180,172,121, 36,203,113,126, -143,193,239, 47,234,252,198, 96,168,115, 51,113,237,236,126,244,121,107, 40,198,140,255, 24, 78, 78,110,223, 10,197,138,187,102, -189,234,226, 63,238,185,222,141, 58,133, 54,105,180,187,150,143, 79, 29,142, 43,154,229,131, 82,160, 83,215, 30,152, 53, 99, 18, - 56, 74,209,172, 69,155, 30,253, 70,126, 68,105,241,108, 32,217, 57,217,133, 49,143, 31,246,210,101, 62,190, 97,243,177,212,235, -205, 74,165, 18,119,238,220, 65,108,108, 44,162,163,163,145,147,147, 3,133, 66,161,169,230,249,228,216,180,105,211,209, 23, 47, - 94, 20, 59, 59, 59,191,120,223,104, 52,194,193,193, 1,163, 71,143, 22,246,238,221,187, 86, 88, 88,216, 88, 66,200,175,148,210, -130,242,116,116, 57, 79,210, 28,189,130,191,239,218,173,235, 52, 0,144, 56,122,199,111,252,249,120,116,165,215,154,194,199,175, - 67,135,142, 1,160, 20, 4,116,125, 97,118, 76, 70, 37, 81, 34,217,159,127,254, 89,159,207,231, 11,254,122, 6,113,248,110,251, -190,224,115, 87,239, 15, 89,241,237, 42,177,163,204, 30, 74,149, 17, 19,199, 12,182,249, 25, 44,245, 10,238,215,177, 99,215,163, - 95, 47,250, 82, 32,151,201,112,246, 70, 28, 62,154,241,185, 62, 61,241,193, 42,202, 9, 55, 23,102,197,100,189,228,163,242,149, -244,140, 11,172, 45,135,195,128, 62,226,169,239, 14, 16, 27,205, 86,228, 23,154, 97, 48, 89, 97,229, 40, 84,133,102, 60, 76, 86, -195,205,209,174, 38,210,173, 1,184, 3, 80, 2,184, 85,102, 29,197,175, 81,206,122,118, 81,120, 4,174, 0,140, 0, 74,255,120, -201,122, 69,239,151,124,255, 33,128, 70,197,154, 86, 0, 55, 1,228,149,103,182,202,139,114, 9,194,195,195,105, 88, 88,216,139, - 59,126,217,245,178,216,139,132, 62, 50,133, 59, 40,125,132, 82,207, 54,120,122,215,206,217,242,253,143, 46, 10,103,215, 36, 85, - 94,142, 95,241,143,156,183,229, 97, 33, 32,252, 53, 93,187,117,233, 61,237,253,247, 17, 84,191,182,200,106,181,210, 7,177,241, -230, 29, 63,109, 31,167,168, 19,186,174, 32,229,193,252,146, 16,100,117,123, 57, 88, 57,107, 74,217, 8,150,149,179,166,148, 57, - 24,231,255,121,192, 0, 39,185, 29,190, 63,149, 0, 74, 1, 2, 10,133, 76,136,189, 17, 41,136,143, 60, 92,240, 86,179,130,194, -209, 43, 22,246,232,222,111,250,197,135,207,244,251,179,178,244,103, 40,165, 25, 21,105,242, 8, 32,224, 19, 56, 74,133, 80, 72, - 69,112,146,137, 64, 74, 61,192, 74, 55, 23,118,235, 55,253,220,197, 63,146,190, 0,160, 44,157, 15, 85, 90, 83,226, 21,216,218, -209,169,246,254, 33,211, 86, 58,220, 79,177, 64,192, 7,252,189, 36,112,113, 16,193,104, 33, 72, 84,154,138,175, 28, 39,124, 52, -115,145,203,156, 79,167,157, 36, 36,164, 9,165, 15, 77,149,237,187, 86,171,181,123,231,157,119,132,102,179,217, 52,122,226,199, -189, 51, 50,148, 3,191, 91,255,141,189,135,135, 39,180,122, 11, 34,163,159, 54,250,250,235, 69,254,199, 79, 71, 28, 89,248,249, -212,163,125,251,246, 85,236,219,183,143,171,234,120,254,173,134,152,153,189,105,251,238,131, 59,215,174, 90,134,152,164, 60,252, -244,195,102, 80,171,229,251, 42,194,178,231, 75,189,166, 95,124,241,133,228,200,145, 35,181,101, 50, 89,129, 86,171, 85,254, 45, - 30,193, 35,130,204, 92, 45,220, 28,236, 32, 18,240,224,233, 44,134,135,194, 30, 66, 62,192, 35,196, 90,158,230, 79,251,195,151, -112, 90, 21,142,237, 49,142,220,190,105, 41,198,127, 56, 15, 15,178,237, 78,243,164,138, 37, 31,140, 28, 50,199, 93, 98,237,235, -227,196,243,232,209,178, 46,100, 98, 17,230, 78,127, 7,109, 34, 19, 61, 82,243,185,121, 74, 29,191, 57,128,121,229,150, 59,175, - 40,130,229, 32, 21,226,244,238,111,179, 10, 85, 74, 85, 73,147,156,209,160, 79,178, 49, 36,125,190,156,154,237,156,150,205,155, - 46,157, 54,121, 2,175, 99,251, 54,148,199, 19, 34, 91,109, 36,148, 2, 51, 62,154,138, 15,166, 78,242,122,158,150,245,213,230, -205,223,207,151,123, 52, 90,172,201,122,180,176, 50, 77, 30, 41,138, 2,201,197, 2,200, 37, 69,198, 69, 46, 22, 64,111,180,130, - 16,240,157,253, 90,170, 72, 81, 36, 55, 45, 39,177,252, 26,120, 89, 77, 23,223,198, 23,206,197, 59, 4,231,237,207,187,158,144, - 22,189, 36,242, 94,230, 77, 74,105,174,111,215, 79,199,154, 44, 20, 26,189, 5, 9,153, 90, 88, 76,148,140,127,211, 15,245,134, -145,160,101,219,163,118, 18, 66, 28, 75, 12,116, 89,205,148,235, 7,244,110,161, 67, 70,172,221,240,195,173, 85, 75,231,241,179, - 85, 70,112,148, 66,108,199,135,196, 78, 80,188,240,161, 43, 84, 97,243,150, 31, 51, 44, 32, 67,104, 68,132,165, 58,231, 39, 56, - 58,102,112,191, 46,123, 9, 96, 71,120,162, 20, 31,191,186,126, 61,251,143, 19,247, 28,240, 14,172, 22,227, 28,153,103,240,165, -194,204,199, 23,108,209,108, 18,210, 8, 4,136,210,100,198, 76, 5, 0,185,103,208,247,193, 65,193, 45,203,190,215,160, 65, 80, - 75, 91,202,189, 4,145,196,241, 67,103, 23,247,121, 65,141,155,123,212, 15,237, 74, 28, 92,107, 35,225,201, 29,236,217,242,213, - 46, 78,111, 92,116, 33,124,255,210,117, 63,253,246,118,207,190,131,177,253,187,111,230, 2,184,248,143,235,136,227,198,236,216, -182,181,142,208, 98,228, 74,123, 0, 0, 32, 0, 73, 68, 65, 84,206, 30,102, 11, 7,179,149, 22,253,181, 88,145,155,155, 7,179, -133,131, 88,234, 0, 11, 71, 96,182,114, 48, 91, 56, 24,140, 22,217,212,119,194,222, 7,112,163,188,237,172,221,168,219, 25,145, -189,189, 31, 69,209,220,181,148, 82,240, 45, 70,158,183,183,247,175, 0, 96,111,111, 15,123,123,123,112, 28,135,200, 24,229,135, -238,193,189,166,161,216,224, 89, 77,198,164,188,132,223,251, 84,180,239, 94, 94, 94,253,203,154, 44,189, 94, 15,141, 70,131,171, -215,111, 41,182,237, 60,216, 55, 33, 41,165, 62, 71, 21, 6, 7,143,250,125, 0,244,175,232,120, 22,100, 60,126,191, 78,251,201, -188,207, 62, 24,219, 96,195,142, 19, 55,159,156, 94, 60,183,178, 83,194,191,215, 28,227,103, 83,134,182, 90,177,254,167, 39,185, -191,111,249,164,170, 50, 18, 8, 4, 66,165, 82,249,226,250,222,248,227,158, 86, 81, 49,169,131,214,173, 93, 39,142,140, 83,227, -126, 66, 26,198,246,242,197,223, 30, 2,149,104,202,189, 2,220, 2, 2,130,127,221,188,126,133,224, 73,154, 30,155, 14,223,196, -197,163,223, 95,205,200,186,209,151,102,164,233,106,114, 15,121, 89,163, 85,153,230,165,123,217,208,232, 45, 48, 24, 45, 48,115, - 20, 5, 90, 51,178,242,141, 40,208,154,160,209, 89, 48,246, 13,223,114,191, 87,133, 31,113, 39,132,156,160,148,190,133,162, 97, -169,236, 74,173,131, 16,114,162,120,187,254,182, 62,103,206,156, 47,150, 47, 95, 30, 93,242,217,146,247, 75, 62, 91,217,251,165, -190,239, 58,119,238,220, 38, 43, 86,172, 88,214,190,125,251,189,215,174, 93,139, 47,207,104, 85, 26,209, 42,217,153,240,240,112, - 90, 69,141,162,190,212,209,213,222, 81, 34,132,127, 61, 95,188,247,197,118, 55, 71, 23,207, 44,177,157,128,127,234,212,105,151, - 28,163, 28, 60, 30,191,208,246, 40, 86,195, 14, 18,137, 52,124,245,234,213, 24,217,191,179, 36, 57,219,172,185,151,172,203, 44, - 52,194,226,225,222,208,110,201,178, 21,242, 21, 43,191,253,224,196, 49, 46, 31,192,183,229, 55,241,181,190,205, 39,165,114,176, - 8, 1,229,172, 41,185, 9, 55, 91, 1,192,203,228, 98,105,244,102,240,139,115,107, 8, 1,180,122, 11,248,124,146,149, 31,179, -255,225,232,197, 75,122,236,218,123, 46,141,242,156,212,133,133, 9, 82, 74,105, 74,229, 17, 3,130, 2,173, 25, 10,169, 16, 78, -114, 33, 20, 50, 17,248,165, 46,178,146,230,194, 93,123,206,166, 38, 37,229,220, 42, 54, 89, 21,106, 10,248,188,120,106, 53,235, - 41,181, 58,188,213,218, 29, 30, 78,118,240,118,182,135,189,157, 0,102, 11,160, 51,114,208, 27,173, 72,204,210, 65,173,147, 32, -180,235,112,127, 87,239,219, 6, 87,191,214, 71,114,146,110, 13,169,212,156, 90,173,216,241,235,193, 6,105,105,153, 3, 79, 30, -217,109,175, 44, 48,227, 94, 98, 33,178,242, 13, 0,223, 29, 11,150,109,178,159,253,201,228, 65, 59,246, 28, 74,234,217,185,109, - 82,117,143,107, 97,214,227, 93,161, 29,194,190,127,235,173, 65,146,232, 27, 39,241,228,206,133,165,154, 76,219,243,179, 8, 33, -188, 3, 7, 14, 88, 38, 79,158,172, 94,182,108, 89,157, 99,199,142,213, 83, 42,149,119, 0,152,157,156,156,130, 27, 54,240,187, -123,246,244,169, 90, 97,131,134, 11, 83,178,117, 80, 72, 69,240,243,144,226,250,213, 51,102, 59, 59, 97,185,249, 38,197,205,131, -163,106,247,154,141, 99,215,227,251, 70,231,136, 35, 38, 77, 24,155,116,246, 74, 76,206,198,157,103,191,169, 37, 55,223, 17,115, -202,141,183, 91, 5,120,205,249,232, 29, 44,223,176, 11,151, 35, 99,178, 10,121,222, 75,211, 13,150,115, 11, 71,204,170, 32,148, - 94,100,176, 29, 36, 66, 20, 22, 40, 85, 79, 35, 79, 53,124, 69,145,234,177,103,143,236,226,229,170,205,120,158,173, 39,105,185, -106, 88, 57, 10, 39,169, 8, 22,142, 34, 63, 55,155,236,222,181, 19,183,110, 93,231,129,207,155, 8, 96, 97,165,205, 92,164,168, -169, 80, 46, 22, 22, 69,132, 36, 69,127,205, 86, 14, 65, 13, 2,176,117,227, 26, 71, 55, 15, 79,116,234,210,221,246, 40,181,171, - 95,179,189, 63,111, 68,196,181,168,110,151,215,109,106, 45,247,113,223,224, 88, 59,100,149,162,222, 27,122,131,201, 10, 85,126, - 30,236,140,207,209,166,150, 18, 46, 82, 43, 18, 11,188,241, 32,227,137,188,170, 92,168,236,251,135,239,184, 55, 25, 60,255,224, -241,139,203,251,188,209, 13, 15, 18, 11, 32,177, 19, 64,108,199,135,216,142, 15, 33,177, 98,205,150,239,205,121, 42,245, 91,217, - 15,142,100,215,224,252, 60, 95, 92,251, 45,122,200,121,214,119,223,181, 97,254, 47,147,102,173,236,211,119,240, 56,242,224,214, -165, 47, 0, 92,176,173,162, 71,109,122,143,227,108,127,198, 73, 28,221,215,127, 58,255,219,233,189,223, 26, 14, 62, 95, 0,179, -217,140, 67,251,118,225,231, 77, 11, 30, 27, 53, 57,227, 40,165, 28, 33, 46,147,247,239,218, 50,124,214, 87,107, 72,147,102,109, -218,150,235, 39,249,228,135,119, 39, 76, 25,225,233,233,233,240, 87, 68,139,162, 97, 80, 8,250, 13, 24,138, 51, 71,127,195,195, -232,123,224,104,145, 97,226, 56,138,252,188,156, 12,139,217,184,163,194, 22, 15,177,216,111,251,207, 59, 3,121, 60, 2,147,153, -131,209,194,225,147,247,223, 51, 78,157,241, 69,167,126,189,187, 70,219,241, 81,144,152,156,238,116, 61,234, 81, 40, 39,148,215, -153, 48,115,141, 72,111,176, 66,165, 53,227,228, 79, 21,123, 29,137,139, 95,251,102, 29, 6, 77,152,250,229, 86,123,123, 62,207, -212,184, 97,157,248,174,237, 26, 63,247,245,113, 83,127,189, 98, 83,155,223,111, 68,245,123,123,244, 4,241,216,224,150,196,199, - 85,226,240,222,232,193, 77,101,174,190,239, 22,230, 36, 87, 56,101,154, 80,234,156,239, 91,175,129,246,175,136, 81,208, 97, 66, -225,255,183, 7, 39, 65,188, 54, 35,102, 8, 0,120,251,248,234,133,246,142,234,106, 24, 17, 10, 0, 27,126,220,211,234,110,108, -218,164,181,107,215, 73, 35,227,212,184, 19,167,130,189,136, 7,147,153, 3,177, 49,168,205, 81,254,148,121,115,231, 56,230, 21, - 90, 17,113, 79,137,232,219,151,168, 81,163, 31, 45,181, 56, 14,145,121, 6,189, 11, 32, 0,192, 51, 66,232, 15,133,153, 94, 71, - 41,141,168,118, 39, 3,142, 43,170, 47, 43, 60, 2,252,173, 2,251,126, 66, 59, 89,123, 66,104, 99, 66,225, 12,208,212,156,226, -103,170,173, 78,173, 48, 51, 22, 43,151,125,133,245,219,126, 67, 90,142, 30, 10,235,115, 28,253,105, 9, 62, 91,254, 43,116,134, -138,179, 26,170,242, 35,229, 25,163,178,134,171,228,117,201,231,150, 47, 95,254, 86,153,178,121,171,130, 50,251,199,231, 74,190, -191, 98,197,138,101,165,254,175,181,213,100,189, 48, 90, 37, 59, 85,197,206, 53,116,247,246,187,118,244,200, 97,231, 60,141, 9, - 98, 17, 31,190,245, 26, 96,225,198,163,238,111,182,114, 67,182, 73,129, 61, 91, 87,229,234,181,234,125, 54,221, 44, 60,131,219, - 58, 56, 56,156, 60,124,232, 55,212,247,245, 16,237,190,154,155, 16, 21,175,123, 17,234, 45, 80, 38,217,213,115,212, 10,134, 12, - 30, 44,189,112,241,210,140,138,140, 22,159,240,107,255,184,243,144,135,131, 68, 8, 66, 0,181,206,130, 73,239, 14,125,249,199, - 24,229,248, 19,198,141, 5, 41, 54, 89, 5, 57, 25,248, 98,246,251,122,153,249,201,195,228,196,228,212, 94,253, 63,187, 80,160, - 33,250, 17,239,188,127,235, 97,236,242,188,170,207, 98,115, 74,191,176,126,162,162,200, 1,192, 39, 4, 28,229, 50,131,234,201, - 63,250, 71,115, 97,134,225,199,170,140,155, 58, 53, 38,215,193, 59,116,216,174,213, 31,254,232,227,233,225, 42,151, 73,168, 92, -106, 79, 26, 7, 7,138,218,181,235, 96, 87, 47,168,169,232,234, 35, 29,146,149, 58,196,167,169, 96,239,217, 92, 48,178,199,155, -216,181,110,102, 55, 66, 8,175,108,146, 98, 89,206, 69,252,217,127,219,150,181,246,153,249, 38, 60, 78,214, 32, 35, 79,143,244, - 60, 3, 50,114,245,144, 75,132,232, 50, 96,178,125,248,209, 31,250,247,236,220,118, 67, 77, 14,111,124,124, 66,120, 98,106,250, -240,166, 45,218, 96,215, 47, 63,119,118,118,246,119,204,203,139, 47,176,181,116,150, 44, 89, 98,183, 98,197, 10,193,198,141, 27, - 11,218,181,107,231, 53,119,238,220, 62, 89, 89, 89, 55,235,214,173, 27,116,230,240,142,139,205,187, 12,108, 13,206,228,222,185, -107,119,145, 61, 39,192,217, 19, 39, 76,251,247,237,206,209,233,212, 83, 43, 53, 28, 82,197,146, 76, 13,129,123,173, 90,209,114, - 59,235, 27, 2, 94,126,108,238,169,143,118, 2, 56, 28,240,230,244,243,151,110,199,196,182,138, 76,244,184, 24,249, 52, 43, 87, -107,106,248,236,212,167,149,222,120,249,132, 64,200,231,193, 65, 34, 0,175,248,174,234, 80,171,217, 83, 16,226, 94, 18, 57, 37, - 32,197,127, 1, 66,144,150,155, 20,101, 67,206, 6,161, 28, 5, 98, 82, 10,161,209, 23,133,230,107,187, 73,161,204, 76,193,119, - 27,118, 32,234,246, 45,244,126,115, 0, 54,255,184, 27,147,222, 29,174,175, 74,141,199, 43,142,104,149,138,102,201, 37, 2, 0, - 4,249,133,102, 28,250,253, 57, 2,252,121, 54, 63, 24, 0,192, 65, 46,133, 74,173, 3, 79,228,128,103,145, 39,165,167, 46,221, -152, 59,127,241,218,207,243,210,239, 37, 63,189,127, 21, 65,110, 42,248,215, 50, 33, 58,195, 17,183,115,234, 33,168, 65,125,240, - 68,183,108,210,206,142, 14, 93,121,148,119,232,173, 86,205, 67,218,251,121, 56, 65,103,180, 22, 71,181,248,248,121,251, 78, 36, - 38,164, 76,200,142, 62, 18,245, 42, 28,173, 38, 51, 78, 41,246, 12,252,224,254,141, 11,241,131, 71,127, 0,239, 90,190,205,170, -147,182, 96,203,123, 86, 27,141,150,157,204,121,238,204,175, 86, 79,239, 29, 54, 12,127, 94,189,128, 59,209,207,208,182,109,107, -188, 57,104, 36,212, 5,185,193, 7,118,174,123, 3,192, 25,129,189,101,122,155, 14, 61, 8,103,181,226,201,227, 7,207,202,211, -210,166, 61,190, 3,192,241,111,205, 83,238,141,154,201, 21, 46,119, 12, 38, 43, 82, 83, 83,240,199,181,136, 22,197,159,179, 25, -123, 17, 31,103,163,178, 96, 50,115, 48, 89, 56,116,233,250,134, 81,196, 51,116, 94,186,118,123,187,244,180,116,158,204,209,141, -115,169,213, 72,228,109,111, 50,220,141, 83,137, 76,102, 14,245,125,100,149,106,186,251, 52, 88, 54,115,230, 39,141,248, 34, 9, -212,133, 6, 99,122, 90,170,215,214, 61,151, 52,143, 30,223,175, 85,219, 67,225,248,205,186, 31, 68, 5,122,130, 44,149, 1,185, -234, 2, 50,122,202, 44,159,109,155,150,143, 1, 96,243,220,180,132,194, 63,252,236,213, 96,103, 7, 17,209,232, 45, 92, 78,129, -201, 58,122, 80,247,151, 58,119,138, 77,214,228,181,107,214, 73,163,226,212,184, 27,167,130, 88,196,135,157,136, 7,163,153,131, - 45,151, 19, 33,132,231,223,164,235,212, 14,173, 66,113,230, 78, 54,248,124, 30,116,234, 60,173, 0, 57,177,173,186,245,150,182, -108,211, 14,221,187,117,197,211,216, 24,223, 19,199, 14,245,188,254,199,229, 12,185, 71,208,135,154,172,152,223,170,117,158,107, -181,124,179,157,215,123,222,181,234,118, 28, 50,242, 61,133,159,111, 45,226,225,230, 10, 11, 21, 96,242,187, 67,109,190,242,139, -140, 57,176, 98,241, 92, 24, 12, 70,184, 59,217,129, 82, 96,251,134,133, 48, 26,141,240,113,181,135,170,208, 92,225,247,171,242, - 35, 21, 69,161,170,217, 12,125,162, 60,179, 85,246,125, 66,200,137, 57,115,230,124, 1,128,206,153, 51,231,139,146,245,229,203, -151,235, 0,164, 85,214,116, 88,218,120, 9, 74,239, 92,133, 27,101,103, 23,228,230,237,119,253,236,153,211,138, 35,119, 57,252, -249,219,109,132,181,245,134, 72,192,131, 84,225,131,187, 9, 42,132, 31,222,146,127,116,239, 15,169, 6,131,225,219,170,219,154, - 3, 91, 57,200, 28,207,252,178,107, 31,231,230,234,202,251,238,172, 50, 46, 71,109,121,209,164, 21,123,227, 24,119,251,204, 86, -111, 10,114, 90, 44, 22, 55, 48, 26,141,206, 85, 21,236,246,179, 73,197, 73,188,228, 85,220, 91, 65,248,124,235,174,221,187,224, -230,104, 7,131,153,195,156,207, 63,214,141,237, 45,207, 31,253,246,200, 30,221,251, 77,191, 40,148, 5, 94,232,208, 34,144, 54, -111,222, 60,159,207,231, 87,169,151, 19,127,243, 31,189, 43,130,235, 73, 39,206,155, 53,118, 94, 57,205,133, 54, 37,238,170,211, -239,255, 14,224,111, 17, 18, 18, 16, 96,247,235,129,163, 31, 15,123,123,196,252, 90,205, 6,201, 19,210, 85, 16, 17, 19, 90, 55, -242,198,165,211,191,209,148,196,216, 79,170, 50, 89, 0,144,165,204,173,227,238,238,137,168,120, 13, 82,115,116,200, 40, 54, 89, -233,121, 6,168,117,106, 52,245,243, 65,190, 74, 85,167,198,199, 23,248,237,204,153, 51,195,251, 13, 28,129,233,159, 47,234,244, -211,150, 85,247,228, 94, 13,199,107, 50, 98, 35,108,169, 41, 18, 66,114,103,207,158, 29,240,227,143, 63,242,198,140, 25,163, 11, - 13, 13, 21,191,243,206, 59,157,118,238,220, 41,150, 74,197,186,187, 87,143,205,159,248,209,156,129, 91,215, 47,105,150,151,151, - 71, 44,102,243, 41, 83, 94,222, 28,117, 21,102, 46,249,232,220,199, 36,100,209,184, 55, 58,187, 31,115,145,242, 26,219, 83,227, - 72, 18,178,104, 31,125,184,192,244,236,212, 6,117,232,219,107, 62, 74,203,231,230,233,121, 30, 75,171, 50, 89, 0,192,227, 19, - 24, 45, 86, 56, 72,132,224,241,120, 37, 38,222,251,231,125,167,164,238, 10, 59, 8,249, 60, 8,248, 69,209,206,236, 2, 19, 62, -120,111,160,205, 53, 1,139,149, 66,103,180, 64, 91, 92, 59, 84, 23,100, 99,238,231,159,226,205,254,131, 49,113,234,167,200,211, - 1,183,227,213, 48,153,205, 85, 94, 20, 60,194,131,214, 96,193,248,222,126,200,213,152, 80,168,179,192,104,225, 32,181, 19, 64, - 40,224, 65, 38, 22,192, 81, 42, 4, 40, 21,149,220, 76,132, 66,161,222,100, 50,237,170,164,156, 80,175,142, 39,116,102, 30,218, -140, 88,133, 94,237, 27, 34,250,247, 67,130,203,127,222,247,159,241,249, 60,124, 60,169, 63, 14, 62, 14,128,139,135, 31,228, 50, - 9,204,148, 7,192,182,161, 67, 40, 93,192,121, 7, 15, 25,245,253,143,219, 99,190,254,106,142, 56,191,144,192, 94,196,199,197, - 11,231,113,253,198,237,245,202,232, 35,187,240, 10, 17, 82,158,167,163,163, 35,196,118,124, 24, 77, 6,163,237,169, 11, 20, 20, -104, 33,247, 12,250,190,184,198,223,194,202,161,156,247,170, 54, 90, 66,137, 98,206,244,217, 75,150,245, 14, 27,134,179, 39, 14, -226,192,193,125,214,246,125, 39,240,119,255,188, 5,157,122, 13, 64,167,222, 35,112,234,183,157,159, 10, 37,138,144,201, 31,127, -185,184, 75,143,126, 56, 27,126, 16,153, 25, 41,171,109,221, 94,190,144, 76,239,241, 70,127,232,141, 86,116,238,249, 22, 78, 31, -255,237, 35, 20,119,178,176,253, 33, 86,230,254, 12,158,229,211, 79,166, 11,179,242,141, 66,101,129, 17, 41, 74, 45, 18, 50,181, - 56,186,247, 39,106,251,253,194,216,186, 75,211,218,194,201, 43, 47, 62,175, 83,219,219, 32, 52,232, 36,177,207,226,130, 39,190, - 55, 86,232,223, 32,152,151,165, 50, 64,169, 50, 32, 91,101,128, 70,111, 65,131,218,129, 60,179,133,180,175,110, 57,187, 41,236, -132,155,143,199,195, 81, 38, 68,135,224,154,119,180,229, 56,238, 47,147,181,182,200,100,221,139, 87,193, 94,196,135,189,136, 7, -123, 17, 31, 22, 43,181,169,226, 34,241,104,216,239,131, 15,223,247, 49, 90,128, 28,149, 17, 2, 62,129,135,155,179,172,117,179, - 81,216,190,234, 35, 0,192,164,217,223, 97,226,248,119,208,168,113, 40,242,243,242,188, 70, 13,235,183, 22,192,111,182,110,235, -201,179, 17,190,103,175, 68,205,254, 96,230, 2,249,219,253,187,243,239,196,169,144,158,107,192,179, 88,117,181, 34,111, 0, 96, -177,114,160,160,216,177,239, 4, 36,118, 2, 40, 85, 38, 80, 74,177,100,227,126, 56, 72,132, 72,207, 43,106,238,175,140,202,252, - 72,101, 17,169,106, 68, 27,223, 66, 81, 46,151,187,173, 17,173,229,203,151, 71, 47, 95,190,188,220, 8, 89,137,201,170,241,164, -210,118,118,242, 96, 55, 87,159, 63,207,158, 62,233,240,219, 93, 43, 46,221,205,193,176,206,181,161,201, 77,198,183,159,191,157, - 75, 64,141, 60, 62, 63,223,160,211, 30,214,233, 10,151, 82, 74, 77,149,154, 44,239,160, 22, 50,137,227,249,205, 91,127,177,184, -121,120, 96,215,213,220,148,188, 66,139,249,175,102, 43, 51,185,125,102,171,191,133, 51,247,213,101, 60,169,178,122,203, 81,136, -150,111, 57, 10,128,130,227, 56, 80,142,131, 80, 44,151,185, 7,180,207, 44,190,209,137, 5, 60,162, 47,125, 7,160,156, 37, 69, - 25, 87,121, 24,148, 0, 80, 72,133,216,119, 57, 21, 0, 50,249,234,200, 71,163,223, 46,106, 46,212, 27,197, 5,141, 3, 2,104, -235,214,173,243, 37, 18, 73,141, 11,187,186,205,133, 54,157, 64,207,158, 25, 1,172,244, 9,234, 60,184,143,188,105, 27, 59,158, - 8, 45,131,188,113,233,204, 17,250,231,233,237,147,180,153, 49,191,216,120, 34, 66,163, 55, 35, 45, 71,143,212, 28, 61, 50,242, -244,200,200, 53, 32, 35, 79, 15, 66, 8,244,198,151, 27,254,166, 48, 43,230,192,174, 95,182, 13, 48,152, 48,178, 75,239,193,248, -116,193,102,191, 93,223,175, 56, 47,241, 12,238,104, 75,162, 45,165,212, 74, 8, 73,124,239,189,247,154,237,217,179,135,223,164, - 73, 19,221,163, 71,143,164, 0, 56, 0, 38,185, 92, 42,249,105,211,242, 51,109,218,180,217,155, 26,251,248, 34,128, 60, 91,186, -231,215,237,246,158,125,176, 99,238,100, 95, 89,135, 62,245,189,164,240,149,169,251, 4,203,239,126,235,209,115,198,178,172, 11, -235,178,210, 13,150,115, 74, 29,191,121,170, 70,104, 83,174,160,217,160, 79, 26, 50,108, 36,248,132, 7,147, 94,155, 84,114,114, -121, 40,236,176,112,247, 99,200,197, 66, 56, 72, 4,144, 75,132,232, 20,226,130,106,220,207,168,217,202, 65,107,176, 66,103,176, - 64,111,180,192,173,142, 51,126,220,117, 0,201, 89, 58, 28,189,149,141,152, 36, 53, 2,107,203, 64,105,213,183, 73,206,106, 46, -236, 63,116,140, 3,159, 71,192,231, 17, 94, 72,112, 67,228,106, 76, 16, 9,120, 16,137, 37,144,217, 11,224, 40, 17, 66, 36, 18, - 34, 43, 43, 11, 6,131, 1,190,190,190,226,202,173, 32,133,131, 92,130, 64,127, 31,152,204, 22,156,188,242, 16, 75, 63, 25,130, - 55,186,180, 2, 17,202,241,216,208, 2, 14, 46, 14,224,120, 60,152, 44, 28,140, 38, 43, 0, 94,133,209, 55, 95, 95,223, 30, 50, -153, 76,166,213,106,213, 73, 73, 73, 17,233,143, 15, 39,123, 52, 30, 52,249,244,217,139,187,222,122,243, 13, 68,221,139,198,193, -223,142, 93,205,118, 85,205, 44,249, 78,147, 38, 77,218,185,185,185,201,115,114,114, 10,238,223,191,127,179,134,181, 95, 34,243, - 12,158,209,190, 83, 55,104,242,179,144,249, 60,193,230, 90,116, 35, 63, 7,124,185,124,115,203,160,134, 65, 45,173,180,200,120, -133,248, 58,224,179, 5, 27, 90, 6, 4, 54,108, 89,210, 33,164,145,175,188,114,147, 37,115,236,253,238,228,207,150, 15, 24, 54, - 14, 23,207, 30,195,154,165,159,239,146, 41,220, 27,185, 56, 43,154, 55,105,215, 27, 87,207, 31,131,216,193, 11,206,174, 94,157, -198,140,255,176,215,176, 49, 83,112,253,234,121,172, 95,241,197, 78,171, 65,253,171, 45,219, 42,247,172,239,222,188,117,151,209, - 14, 46,158,200, 87,169,225,224,236,129, 70, 77, 91,143,150,123,214,159,173,201,140, 83,214,244, 90,231, 40,133,193, 68,145,167, - 49,225,185, 82,135,196,140, 34,163,197,113,213,200, 9,178,114, 68, 46, 22, 8, 92,204, 79,125,239,159,191, 72,253,234,120,146, -149,139, 63,231,155, 32,134, 50,191,200,100, 41, 11,140, 80,170,140,208,232,205,112,145, 9,192, 89,185,106,215,186,243, 52, 38, - 56, 20,231,209, 90,185,154,231,134,111,249,121, 95,208,221,216,180, 65,107,214,172,147,222,137, 47,101,178,132, 69,209, 44,123, - 17, 31, 86,142, 43,126,210, 84, 97,176, 5,194,233, 3,251,245,194,243,108, 93, 81,175,101, 30, 65, 96,104, 27,184, 73, 56,244, - 28, 49, 7, 0,208,191, 95,209,240, 37,241,233,133, 56,254,167, 18,248,123, 98,119,229,247, 98,157,142,191,117,119,248,140, 3, -251,247, 42,244, 86, 1,126, 56,149, 8,173,193, 2,177,136, 15,123, 17, 31, 18, 17,255,111,249,216, 85, 27,173,162,156,187,228, -108, 51,180,122, 61, 10,116,102, 80, 0, 55,159,106,160, 51, 90,160, 42, 52,163, 93,176,243,203,214,125,194, 1,132,149, 53, 68, -101,205, 82,169,136, 84,121,220, 42,173, 81,242,249,138,140, 92,233,156, 45, 0,213,234,193, 37, 40,235, 28, 75,175,219,201, 93, - 26, 41, 92,221,255, 60,125,234,132,252,183,187, 28, 34,238, 21,153, 44,179, 46, 27,171,103,143, 74, 41,200,207,238, 78, 41,141, -179,245,199,100,238, 33, 77, 37, 82,233,197,111,214,253, 96,242,240,172,197, 29,254, 51, 63, 75,165,181,254, 45,134,104, 53, 24, -120,148,163, 34, 91, 76, 86,113,147,135,105,193, 71,131,193, 81,138,133,235, 14, 96,217,204, 17,144, 75,198, 72, 9, 33,210, 66, -189, 5,159, 44,218,134,213, 95, 78,112,144,218, 11, 64, 8,160, 55, 90,241,238,200,193,182,157,128,122, 11,158,221,216,163, 81, -199,159,120, 84,186,185,176,109,167, 55,111,183,109,219, 54,223,217,217, 25, 18,137,228,175, 72,133,141, 55,237,242,122, 23,102, -229, 35,197,193,193,161,171,163,163, 99,105,189,194,252,252,252, 35, 53, 57, 11,213,249,217, 23, 51, 18,239,183,233,216,189, 63, - 34,206, 28,161,127,158,250,105, 82,117,198,232,113,118,113,126, 30,121,255, 89, 35, 66, 92,138, 34, 90,197, 38,203,104,230,224, -231, 41,197,243,196,103,112, 82, 40,158,219,170, 39,245, 8, 30, 72,120,116, 42, 1,221,174,201,136, 61, 80,108,122, 70,201,188, -130,239, 69, 63,184,179,244,173,209,211, 5,189,135,189,207,255,126,249,135, 95,160, 76, 18,107, 37,152, 98, 98, 98, 30, 78,152, - 48,161,195,245,235,215,173, 0,180,132, 16, 51,159,207,151, 26,141, 70, 81,247,238,221, 85,143, 31, 63,190,140,114,146, 22,203, -210,121,252, 65, 55, 98,175,126, 51, 32,176,245, 40, 63, 7,245, 27,221, 59,183, 71,251,198,117,240,188,115,123, 0,152,158,164, -145, 7,117,154,246,211, 62,127,247,218, 39,191,255,249,248,178, 73, 35,122,125,226,211,127,209,154,180,227, 11, 42, 77, 68, 77, -126, 24,209,167, 60, 27, 47,224,243,224, 32, 17, 66, 46, 17,192, 65, 34,132,131, 88, 8,179,133, 86,167,230, 72,205, 22,174, 40, -162,101,180, 64,163,179,224,226,157, 76,100,168,140,200, 87,155,160, 51, 89, 65, 65,139,106,163, 54,220,205,179,158,252,238,244, -162,236,253, 90,170,182,110, 92,229,120,232,247,148, 23, 61,250, 20, 82, 59, 56, 72,139,122, 99, 95,185,114, 5,174,174, 85,215, -246, 57,142,195,193,211, 55,177,102,199, 69,156,222, 62, 11, 98, 17, 31, 77, 7, 46,194,184, 65,109,193, 81, 14,207, 98,162, 51, - 3, 67,154,121,242,120, 18,240, 8,129,193,204, 1,160, 21, 30, 79,163,209,232,154,156,156, 92,208,160, 65, 3,175, 90,181,106, - 13,227,243,249,212, 30, 48, 28,217,155,171,189,112,226, 87,105,161,206, 96,149, 90, 84,219, 27,164,235,194, 2, 3, 3, 65, 8, -161,110,110,110,162,139, 23, 47,106, 66, 67, 67,221,107,104,178,120, 18,143,134,235, 39, 78,155, 49, 44,160,126,125, 28,248,117, - 59, 40, 37,135,108,253,254,238,227,215,177,120,238,223,123, 24,126,182, 96, 67,203,213,139,166,255,237,189,105,115,215, 84,218, -235, 80, 98, 47,159, 57,100,212,100,220,190,121, 13,223, 46,250,108,175, 65,147, 59,206,108, 49, 15,207, 77,143,223,235, 31,210, - 22,212,164,198,217,253,171, 48,226,157, 73,246,189,223, 26,134,235, 87,207, 99,217, 23,211,118,107,243,179,222,179,117,252, 47, -142, 10,167,118,239, 51, 72,168, 51,152,176, 97,229, 87,152, 50,115, 41,218,245,232, 47,124,112,231,207,169, 0,190,182,117,159, - 13, 38, 43,186,135,186, 21,153,103, 51,135, 99,241,124, 65,121,103,160,128, 79,120,205,235, 59, 65,103,180,160, 64,107,174,252, - 65, 37, 18,102,228,171, 10,234,110, 90, 54,131, 95,168,183, 64,169, 50, 34, 75,101, 64,118,254, 95, 6, 43, 91,101,128, 82,101, -132, 80, 64, 16, 27,151, 4,158, 80, 80,237,252,188, 60,141, 25,109, 26, 58, 23, 93,163, 53,108, 29, 49, 11, 28,219,158,190,124, -119,200,154, 53,107,197,119, 19,212,184, 23, 95, 80, 28,201,226,195, 94,200,131, 93,241,107, 43, 7, 84,245, 19, 10,143, 0,255, -177, 19, 38,245,116,148, 75,144,246, 36, 11, 2,126,209, 16, 49, 10,143, 58, 80,216,235,241,225,180,201,112,115,117, 66,114,182, - 1,235,127,139,197,189,135, 79,193,233,170,183,219, 27,126,216,219,119,226, 7,159, 57,241,132,118,216,121, 38,161,104, 59,249, - 86, 60,254,243,184, 62,237,217,253, 66, 77, 65, 14, 5,181,218, 24, 0, 32,212, 98, 45, 58,221,150, 45,156,131,189, 59,190,195, -153,200,172, 23,201, 91,191, 31, 90,141, 25,115,151, 32,187,192, 88,124,234, 87, 30,201, 42,179,174, 44, 21,137,250,199,122, 41, -115, 84,222, 58, 41, 94, 55, 86,160, 97, 44, 99,174,140,101,222, 55,150,209,187, 91, 78,229,127,107,149, 77,135,255, 48, 69,206, - 30, 77, 20, 14,138,107,167, 78, 29,151, 29,185, 71, 95,152, 44,147, 54,155, 46,157,222, 63,165, 32, 95,217,187, 90, 38,203,163, - 97, 19,123,153,236,242,252, 37,235, 13,158,181,234, 90, 78,222, 41,200, 81,235,173,255, 8,139,136,164, 50,171, 76,225,174,119, -242,107,177, 70,168, 51,126,165, 84, 62, 44,172, 42,242,196, 81,138, 19, 55, 50, 64,105, 81, 21,105,255,149, 84, 20,215,204, 97, -229,138,154, 85,206,221,201,130,160, 56, 15,197,214,240,247,150, 31,190, 43, 8, 11, 85, 21,142, 94,182,240, 69,115, 97,187,102, - 69,145, 44, 71, 71, 71, 56, 57, 57, 65, 46,151,195,150,166,195, 18, 42,234, 93,232,224,224,208,245,206,157, 59, 98, 71, 71, 71, -240,249,124, 24, 12, 6, 52,110,220,184, 70, 23,186,220, 43,248,131, 54, 61, 6,127,209,169, 71,127, 92, 60,125,152,254,121,250, -231,201,213, 29, 8, 49,172, 87,135,227,139, 23, 47,244,159,191,116,147,189,131, 88,128, 71, 26, 35,120,132,192,207, 83, 10, 87, - 25, 15, 17, 71,118,234, 71,244,239, 96,243,224,120,117,234,212,218,181,122,227, 86,217,234, 21,139,186, 59,212, 10,186,168, 78, -141,201, 5,128,194,140,199, 43,165, 94,193, 15,107, 95, 59,123,178, 89,215,193,240,244,169,255, 70, 53,194,191,148, 16,162,141, -139,139,139,159, 63,127,126,208,138, 21, 43, 40,159,207,231, 0,216,175, 91,183, 78,251,228,201,147, 59, 40,234,154,139,170, 30, - 54, 61,223,104,252,137,220,206,218,206, 69,202,107, 92,223, 75,138,246,141,139, 90, 69, 71,132,117, 66, 29, 95, 95,196,101,104, -155,231,106, 57,161,198,200,175,191,249,135,123,183,234,185,241, 39, 89,116,198,135,168, 98, 48,217,138,206,217,146, 4,249,146, -104,150,131, 68, 8,174,232,193, 94, 45,163,101, 48, 89,161, 51, 88,161, 51, 90, 80,104,180, 66,107,180,130,163, 69,215, 4, 33, - 4, 38, 11, 7,155,170,205,101,206,125, 71, 23, 55,212,175, 87,212, 75,214, 65, 82, 52,212,131,163, 84, 88,212, 71,218,213, 21, - 30, 30, 30, 54, 69, 69,141,166,162, 75,220,104,230, 94, 52,235, 27, 77, 22, 80, 74, 17, 27, 27, 51, 43, 49, 62,126, 96,131,192, - 6, 93, 66,154, 54,115,145,218,243, 0,160, 66,163,165,213,106,173, 14, 14, 14, 30, 46, 46, 46,188,212,212,212, 23,230,185, 65, -243,238,150,223, 14, 31,194,144, 33,131, 53,143,110,222,125,209,197, 93,167,211,145,142, 29, 59, 58,214,169, 83,135,103, 48, 24, - 10,170,119, 12, 8,145,185, 55, 28, 84, 39,184,195,210,119,223,155,210,176,123,175,190,184,116,225, 44,142, 30,222,243, 75, 97, - 86,140,205, 35,103, 7, 5, 5,255,163,215, 97, 64, 96,195,127,244, 58,172,235, 31, 88,169,209, 10,105,218,186, 45, 37, 2,156, - 57,177,159,234,121,166,105, 69, 9,239,100,255,190, 45, 95,126, 61,106,234,220,128,126, 3, 70,225,221,119,198, 65, 32,224, 35, -226,220,113,172, 94,244,105,184, 70,149, 53,214,150, 52, 1, 0, 32, 33, 33,162, 6,190,117, 63,246, 13,104,130,200, 63,175,226, - 89,236,131,232,187,183,174, 55,110, 16,218, 14,238, 62,126, 31,147,144,144, 21,244,225, 67, 83, 85, 58, 70,189, 62,105,220,216, -119, 80,186,215, 97,251, 22, 65,174,164,236, 5, 0, 64,171,206, 50,253,180,234,147, 39, 37,189, 14, 57,147, 49,169, 34, 93, 85, -158,242, 96,196, 31, 55,102, 14, 12,235,203,203, 46, 48, 22, 69,176, 84,198,226,197,128,236,146,215, 5, 6, 4,250,200, 17, 19, - 29,201,233, 85,217,135,170,121, 93,234,199, 13,239,243,176,228,220,229, 56, 10, 2,232,171,123,125, 83,161,227,228,149,223,174, - 17,223,141,215,224, 94, 66, 65, 81, 83,161,144, 95,100,176,132,188, 23,166,171,168, 55,123, 21,209, 33,194, 95, 54,126,236, 72, -100, 23,152,192,113,128,128,207, 43, 94, 68, 72, 86, 19, 60, 87,107,145,157,167, 68,124, 98, 18,242, 51,158,129,199,227,193,205, -167, 33,108, 13, 63, 90,169,157,183,214, 72, 67,135,133,117, 17, 28,190,150, 14,169,189, 0, 6,117, 38, 78,237, 91,165, 52,104, - 10,150,234,180,154,195,186,156, 39,105,182,238, 59,143, 16,101,129, 70,239,105, 47,228,227,192,142, 77, 24, 62,110, 90,241, 65, - 41,250, 51,107,222, 98,128, 71,144,155,167, 6, 33,164,186, 81,210, 91, 85,172,215,132, 87,161,129,242,204,213,223, 42, 10, 21, -215, 70,233,169,179,167,143,203,126, 79,180,199,205,152,244, 98,147,165,228,150,124, 20,150,162, 86,229,246,161,148,198, 86,107, - 11,120,188, 62, 35,198,207,140,174,223, 48,196,112,233,129, 38, 33,191,208, 92, 97,158, 67,251, 97,243,163,111,135,111,236,167, - 50,199,189, 47,247,105,108,229, 44,150,149,218,172,152, 69, 21, 52, 29,218, 45, 90,127,224, 69,179,225,236, 21, 59,139, 94, 91, -173,176, 82, 14,148, 3, 62,252,114, 11, 44,156, 21,156,213, 10,206, 74, 97,182, 82,105, 85,155,235,225, 83,247,112,222,227,253, -193,163,191,254,103,115,161,147,147, 19, 92, 93, 93,225,234,234,138, 18, 99,244,178,205,133,142,142,142,144,203,229,184,122,245, - 42, 36, 18, 9,100, 50, 89,181,116, 75,153,172,247, 91,119, 27,184,169,199,128, 9, 56,119,248, 7,122,235,202,241, 41,218,204, -152,109, 54, 71,232,173, 86, 98, 54,155, 17,214,187, 91, 82, 84,244,211,211,243,102, 78,237,219,225,173, 41,246,237,131,106, 65, -111,180, 34, 37,241, 25, 34,142,252,172,111,232,239,125,166,103,231,182, 73,102,179, 25, 86,171,181,202, 7,185,222,104,202,230, - 11, 37,178,145, 35, 71, 11,111,221,188,121, 72,238,209,240,128,149,240,238, 18,202, 53, 37,132, 12,105,218,180, 17, 76,102, 14, - 90,109, 65, 94,117,247, 89,173, 86,199,111,223,190,221,127,236,216,177,210,144,144, 16,225,179,103,207,176,122,245,234, 28,181, - 90, 29,111,171,198,217, 43, 49,235, 4, 36,239,137, 29,103, 26,229,231,160,126, 35,185, 83,123,140,124,171, 19,246,134,255,142, -136,171,215,145,164,145,223,209, 88, 4, 71,158, 39,165, 25, 26,187, 20, 28, 26,208,190, 46,255,192,142,188, 67, 30,221,231,190, - 77,169,253, 89,101,196,130, 66,219, 31,226,128, 90,103,134,163,180,104,188,167,146,200, 22,159, 16,155, 29, 17, 1,226,175, 94, -143,108,210, 42, 48, 4, 81,241, 42,100,229, 27,160, 51, 88,192,113, 20, 28, 40, 92, 29,236, 32, 22,241,144,156, 24, 15,142,154, - 18,170,121,187, 80,118,237,210, 85, 0, 16, 16, 66, 5, 66,129, 0, 20, 69,227, 43, 74, 36, 18,141,135,135,135, 77, 17, 45,147, -197,130, 33,125,219,162, 93,235,166, 24, 56,165,104,204,204, 11,191,204,129,179, 92,136,189,187,182, 33,249,242,218, 93,245, 59, - 76, 59,251,224,126,244,208,232,168,107,163,223,108, 41,105,238, 37, 72, 19, 85,164,167,209,104, 14, 17, 66,236, 68, 34, 81,223, - 46, 93,186,184, 28, 58,116, 40,223,205,205,141,179, 19,137,148, 3,250,191,197, 9, 69,162,220,146,207,254,241,199, 31,194, 41, - 83,166, 56,228,229,229, 37,103,102,102, 94,167,148,154, 43,175, 8, 6,247, 2, 15,123, 64,136, 88, 46,145, 38,181,239, 53,210, -167,117,187,182,138, 65, 67,134,195,222,206, 30,231,206,158,198,134,181, 43,246,107,210, 31,141,175,206,145,124, 85,189, 14, 83, -146, 19,226,181, 58, 67,104,147, 86,221,200,213,179, 71,166, 19,226,190,150,111,239,184,170,215,144,105, 1,241,105, 26,108, 88, - 62, 11,206, 10, 25, 18,158, 61,214, 61,121,116,127,139, 89, 95, 48,203, 86,147, 5, 0,210, 28,235,208,246,239,244,117, 54,152, -172,184,114, 49, 92,207, 89,184,190,215, 47,159,124, 86,187, 97,107,113,147,214, 61,157,179,143,110, 27, 2, 96,111, 85, 58, 41, -143,254, 25,193,245, 13,106,147,112,225,226,121,133,167, 95, 99, 62, 1,129,201,160,135, 50,238,150, 69,155,249,184, 64,149,114, -223,166, 94,184, 57,207,241,229,220, 5,223,188,223,186, 85, 43, 25,133,248,111, 17,172, 18,131,149, 93, 96,132,155,131, 29,116, - 5, 74, 60,185,117, 90,175, 85,242, 43, 29,239,204, 98, 44,148,102,103,101,190,104, 98,211,100,198,180,171,236,243,217, 89,153, -118, 22, 99,161,180,234, 71, 29, 31,142, 50, 59,220, 79, 72,125,145,248,110, 47, 44,202,205,178, 19,242, 95,228,105,149,220, 11, -170,160,155, 72,236,132,212, 28, 61, 8, 40, 56,171, 5, 22,179, 17,234,130, 2,164,166,101, 32, 51, 35, 19,106,117, 62,164,114, -103, 52,105,222, 6, 14, 50, 49,238, 70,236, 7,165,212,166,113, 13,205, 68, 24,212,186, 93,103,251, 7,137, 69,185, 88, 98, 33, -197,241, 61, 43,114, 52, 5, 89,157,213,105,177, 79,170,123, 47,182, 88,173,231,239, 61,124,210,184,182,119, 61,114,231,153, 10, -187,126,220, 8, 99,113,100,211,108,182,226, 65,114, 33,210,115,181, 72,142,123, 68, 57,171,245,127,102, 66,106, 65,197, 1, 64, - 8,154, 54,105,132,222, 99, 6,225,187,239,182, 32, 46, 62,145, 91, 58,189, 95,178, 70,157,255,166,173, 38,171,244,236,222,133, - 25,143, 87,142,255, 46, 33,229, 88, 84, 46, 79,103,172,124,126, 43,177,187, 31, 58,143, 95,125, 70,167,206,181,179, 26,180,130, -227,187,198,239, 41, 79,179,200, 65,195,184,244,179, 17,144, 75, 4, 32,132,160,164,185,112,243,226,201,144,218, 23,181, 45,235, - 12, 22,140,249,100, 13,118,173,249, 20, 20,192,168,225,191,107, 43,218,206, 82, 77,123,181,147, 18,179, 82,123,245,255,236,130, -222,100,111,120,107,240,216,219,173, 90,181,202,151, 72, 36,144, 72, 36,112,116,116,132,179,179, 51,156,156,156,170,220,247, 10, - 7, 35, 45,213,187,144,199,227,129,199,227, 65, 38,147, 65, 46,151, 67, 38,147, 85,170, 89,161,201,234, 58, 96,115,207,129, 19, -113,238,240, 86,122,235,202,241,169,218,204,152, 31,109, 45,163,226,230,158,187, 67,134, 12, 9,157, 50,101,138,104,193,204, 41, -103,194,207, 70,196, 30, 56,177,181,127, 94, 94,126, 29, 74, 41,156, 20,138,231, 35,250,119, 56,222,189, 99,235,164, 11, 23, 46, -112,123,246,236, 49, 16, 66,238, 87,181,157,217, 89, 89,191, 92, 56,127,113, 97,231,174,221,176,109,199,158,174,209, 15, 31,117, -125,246,236, 9,234,248,213, 71, 61,255, 64,104,137, 51, 46, 94,190, 10, 77,126,214, 47,182,108,103,153,168, 22,201,203,203,187, - 54, 98,196,136,222,191,255,254, 59,111,196,136, 17,218,236,236,236, 63, 74,234, 81, 21, 69,179, 74,107, 94,219, 50, 72, 9,224, -151,186,221,222,219,159,106,202,255, 24,192, 10, 95, 63, 95, 68, 92,189,142,235,191,223,216,146, 45,245, 93, 52,126,204,123,147, -235, 14,224, 79, 28,208,190, 46,223,195, 89,138, 95,183,174,230, 31,187,158,184, 38, 49,199,186, 13,192, 98, 91,202,232,197,131, - 67,109, 66,199, 70, 46, 48, 91, 41, 56, 90,116,195,117, 16, 11,203,189,241,150,167, 41, 48,218,143,159, 58,101,202,179, 38, 77, -155,207, 24,243,222, 84, 81,243,250,117,112,243,105, 62, 64, 8, 92,188,100, 72, 79, 79,199,149,131, 91, 45,121,169,143,183,240, -249,220,215,213, 57,151,114, 19,163, 26,148,250,220,228,236,236,108, 68, 68, 68,160,196, 96,185,187,187,151,107,180,202,106,230, -100,166,253,177,248,219, 31, 58, 78,122,119, 48,222,234,214, 24,151,111, 61,131,177,120,188,166,146,174,228,241,215,191,183,251, -120, 68,125,227,251, 67, 26, 22,232,204,118,137, 95, 38,168,174,148,238, 21, 91, 86,147, 82,106, 36,132, 28,139,137,137,233,212, -172, 89,179,186, 39, 79,158,204,141,190,113,102,122,233,237,248,208,158,168,121, 0, 0, 32, 0, 73, 68, 65, 84,236,179,207,228, -223,125,247,157,148, 82,250,135,193, 96,136,179,105,223,121,248, 53,242,246,109, 87,147,153,195,213, 27,119, 27,245,236,216, 28, - 28, 5,110,221,186,133,109, 63,109,211,223,191,119,103, 85, 97,166,215,215, 21,153,151,138,142,167,245, 37,122, 29,150,214, 76, - 79, 77, 92,117, 46,252,224,174,214, 93,251, 99,244,135, 95,127, 29, 17,190,103, 97,203,206,111,241, 26,181,238,141,200,235, 23, -113,254,228,233,111, 76,154,220,133, 85,205, 67, 90,209,118,218, 75,164, 31,133,180,236,138,228,164, 68, 36, 60,121,240,139, 46, -231, 73,154,220, 43,248,151,180,148,164,169,254,141, 59,226,247, 51,123,167, 87,100,180,170, 58,231,235,184, 75,182,158, 60,113, -108,100, 74,202,247, 94,133, 58,189, 61,165, 84,111,111, 39,200,144,243, 42,238,161,254,207,114,127,104,146,185,212, 27, 50,124, -204,212,240, 13, 27,214, 10, 61,157,164,200,200,211,163, 64,103,130, 90,107, 2,143, 16, 52,240,145, 65,171,206,197,229,131,223, -154,141,154,188, 17,148, 62, 53, 85,164, 41,247, 12, 94, 2,208, 15, 63,155,118, 9,118,138, 58, 62,254, 61,191,168, 52, 90,167, - 78,187,215,255,179,105,199,131, 40,165, 61,229,158,193,234,146,185, 14,203,219,119, 66,138,174,239,209,221,235,192,100, 41, 26, -127,204,194, 1, 86,142, 43,142,242, 1,244, 69,123, 62,169, 98,223, 9,183, 47,252, 15,164,101,230, 67,103, 52,195, 96,180,192, -100,182,130,199,231,195,201,217, 9,129,245, 90, 64,225,228,136,204,140, 52, 92,191,112, 12,177,247, 46,255, 65, 40, 22,105,179, - 98, 47,216, 82, 70, 34,137, 83,144,183,143, 23, 47,189,192, 8,137, 29, 31,119, 46,159, 52,153,141,134, 85,182,152,172,242, 52, -243,115,114,215,204,152,249,249,168,159,183,239,240, 10,245,119, 68, 74,182, 14, 41, 74, 61,212,122,115,177, 17,227, 96,208,100, -227,222,197, 29, 25, 86,189,122,205,255,188,209,178,152,244,234, 67,167,111,186,206, 89,248, 45,255,233,179, 56,243,146,143,195, - 82,116,154,130,126,213,142,100,149, 98,251,251,245,246, 86,239, 27,197, 67,154,124,157, 88,121,253,187,108,115, 33,229,192, 81, -138,227, 55, 50, 94, 52, 23,114,197,153,151, 81,207,242,171,213,180,119, 47, 70,189, 91,167,203, 84, 60,126,186, 42, 15, 0,248, -124,254,139,165, 36,151, 74,175,215, 27,107,210, 92, 88, 54,241,157,227, 56, 56, 58, 58, 66, 34,145, 84,187, 73, 82,230, 25, 52, -178,117,183,129,155,122, 14,154,132,243,191,253, 72,111, 93, 62, 54, 77,155, 21,179,181,218, 57, 10,121,121,209,132,144, 39,171, - 86,173,106,190,109,219, 54,255,153, 51,103,198,237,220,180,112, 3, 0,228,228, 20,205, 1, 28, 21, 21, 69,167, 77,155,102,208, -235,245,241,121,121,121,145, 85,117,128, 0, 0,157, 82,186,108,219,230, 21, 77,158,167,166, 15,174,223,164, 13,220,253,219,192, -171, 65, 91,228,169, 77,184,249, 52, 13,113,143, 46,224,209,213,131, 39,181,114,203,194,234,110,115,179,102,205,234,240,120,188, -122, 26,141,198, 43, 36, 36,164,153, 76, 38,139,106,214,172, 89, 11,129, 64,144,114,251,246,237,196,234,104, 37, 70,252,108,168, -219,237,189,245, 73,106,135,238,113, 25,218, 22, 73,106,135, 40,173,189,226,211,172, 11,235, 12,158,189, 87,173,161,166,236,232, - 3, 59, 10, 14,253,186,117, 53,127,204,228,207,172, 15, 84,206, 31, 11, 36,118,231,150,143, 11,173, 70,179, 20, 47,253,253,177, - 3,255, 26,222,161, 56,146, 85,252,218,166, 48,125,126,254, 93, 21,128,217, 18,159,198,155, 30,124, 60,101,113,211,214, 29,223, -233,242,230, 8,158, 69, 36,199,153,223,190,167,241,247, 46, 30, 16, 80,235, 60,173, 13,179, 1, 84,217, 28,100, 52, 86,105,178, -202,109,238,121, 46,235,118, 96,207, 79,227, 14,253,118,120,249,160, 1, 3, 93, 55,127,249, 54,190,253,225, 8,100, 18,123, 80, -142,195,136, 30,190,195, 30,237,233,211,191,142,167,184,214,161, 75, 41, 87, 62, 92,251, 96,182, 86,107,138,173, 42, 18, 83,108, -156,175, 58, 56, 56, 40, 59,117,234,212,206,222,222,158,100,103,103, 11, 60, 60, 60, 44, 10,133,194,152,146,146,162, 53, 24, 12, -135, 40,165,133,213,217, 79,147,153, 67, 66,166, 30, 71, 15, 31,194,221, 27, 23,240,232, 81,140,250,209,195, 71, 27,137,128,174, -213,100,196,230,214,228,216,113,229,246, 58,164,213,238,117,104, 53,168,127,221,185,101, 73, 15,173,222, 48,174, 89,135, 48,212, -109,212,145,103, 50, 91,113,255,214, 37, 92, 58,184,246, 91,163, 58,103,206,203,148,177, 79,109,255, 64,202,183,195,181,136,112, - 80,142,219, 2, 0,148,227,182, 68,253,126,114,106,219,126, 19,225,226, 81,183, 25, 33,132, 84,119,190, 71, 0, 16, 9,120,133, -167, 14,253,252, 91, 66, 66, 2, 30, 63,126,140,167, 79,159, 34, 55, 55, 23,191,254,154, 80,173,242, 41,204, 77, 56, 39,119,173, -223,103,232,219,163,143, 15, 27,249,174,216, 63, 48,148, 23, 84,219, 25,174,114, 1, 98,158, 38, 34,246,246, 61, 46,230,230, 73, -189,169, 32,107,144, 54, 55,161, 66,227, 39,115, 15,241, 36, 60, 58,167,100,238,194,246,237, 59, 6,125,190,116,121, 59, 87,119, -143,114,239,227, 57,202, 44,187, 89, 31, 30, 11,186,254,231, 53,155,230, 58,228,172,214,156,201,227, 70,112,252,162,137, 66,241, - 34, 78, 77,138, 10,187,168, 50, 85,244, 62,229, 44, 85, 70,240,223, 27,220, 25, 22,142, 67,161,206,132,130, 66, 3, 84,106, 61, -210,179,114,112,247,222, 61, 92, 62,126, 12,207, 98,238,198,155,141,198,179, 60, 30, 57,168,205,136,185, 92,189,150, 38,129,191, -171,139, 11,226,115, 53, 16,219, 9,144, 24,123,219, 80, 88,160,218, 93,211,243, 72,155, 29,155, 46,243, 12,234, 61, 98,196,200, -211, 61,250, 12, 80,180,238,208, 75,234,230,232, 4,145,128,226, 73, 66, 26, 34,255, 56, 93, 24,119,247, 74,129,217,168,233,251, - 42,102,125,249,111,198,166, 94,135, 38, 67, 97,255, 81, 3,187, 30,230,243, 5,118, 28,103, 49,152,140,134,161, 47, 99,178, 94, - 23,148, 90, 83,198,141, 26,252,183,186,129,133,163,146, 81,195,207,232, 74,215, 21,204, 86, 42, 29, 53,252, 15,109,209, 13,164, -226,196,190, 23, 77,123,123,207,165, 36, 37,229,220,202,205, 53, 92,122,217,158,128,165,231, 46,172,164,119, 97, 97,112,112,240, - 11,115,197,231,243, 97,181, 90,109,190, 17,137,236, 37,147,122, 12,152, 64,206, 31,249,145,222,140, 56,242,190, 54, 43,246,135, -151,104,103, 54, 1,184, 65, 8,121, 48,111,222,188,214,158,158,158,158, 95,125,245,149,184,160,160, 64,184,121,243,102,125,118, -118,118, 70, 65, 65,193,117, 74,169,206,118,205, 72, 51,128, 33,114,207,134,221,233,161, 31,223,112,114,171,213, 91,225, 94, 59, - 32, 95,153, 26,175, 82,166,157, 5,112,190,120,160,200,106,209,162, 69,139,250, 60, 30,111, 4,128, 38, 50,153,172,129, 92, 46, -183,167,148, 6, 19, 66,162, 57,142,187, 23, 18, 18,114, 2, 64,181,202, 47, 49,226,103, 67,151,247,127,218,147,171,229, 68, 70, -158,104, 79, 98,196,207, 6, 0,200, 60, 59, 83, 11,224,168,103,247, 57, 67,142, 93, 79,220, 16,157,167,152,158,117,105,217,177, -234,110,115,254,243, 59, 13, 94,213,249,175, 75,139, 78, 1, 48, 78,230, 25,180,250,126,212,245, 5,132, 66,104,133,101,137, 54, -243,201,237, 87,161, 47, 20, 10,245,181,106,213, 42,183,119,161,189,189,189,190,242, 50,143,176, 0,216, 70, 72,183, 29,135,247, -239, 24,119,228,216,209,229, 93,122, 14,114, 21,215,174,141,122, 30, 4, 59,230,180,156,126, 33, 74,121,115,192,231, 87,190,139, - 75,211,223,163,148, 86, 43, 31, 70,173, 86,199, 18, 66,242, 52, 26,205, 64, 74,233,115, 66, 72,157,188,188,188, 59,102,179,249, -126,181, 13, 1,135,209,237,219,183,249,149, 16, 34,160, 22,110,229,117, 33,127,143, 62,253, 81, 74, 77,140, 69,105, 66,235, 57, -226,147,175,214,183, 12,104,208,176,101,201, 92,135,141,235, 58, 96,202,236,213, 45,235,250, 7,182,252,107,254, 67,121, 85,215, - 36, 37,132,140, 63,252,211,202, 43, 81,127, 94,250,194,205,187,110,221,140,148,184, 71,207,159,222, 89,108,209,169, 14,191,108, - 57, 39, 60,141, 94,187,109,213,236,153,233,169,241,219, 10,179, 98, 31, 0, 64, 97, 86,236, 3,169,103,195, 47,179, 51, 82,102, -230,100,197,173,170,233,177, 40, 44, 44, 76,219,189,123,183, 83,199,142, 29,121,158,158,158, 80, 42,149,184,116,233, 18,199,113, - 92,106,117,181, 52, 57,113,151, 8, 9,112,249,229,135, 77, 43, 69, 50,135,126, 22,139,197,135, 82, 64, 32, 16,164, 27,181, 5, -167,213, 60,217,231, 52, 55,161,138,243,146, 35, 0,120, 37,115, 23,114, 28, 71, 86,110,216,145, 40, 20, 59,148, 59, 63,162, 89, -175,150,114, 28,103,243, 92,135,121, 73,183, 3, 94,217,195,154,210, 69,205, 90,181,251,194,108, 54,233, 81,148, 47,166, 7,160, -167, 20, 57, 60, 30,185,204,231,204,103, 84, 47, 81,153, 34, 4,142,148, 8,224, 32, 17,128,128, 64,163,202,165,213,201,201, 42, -183,188, 51, 99,162, 9,233,230,119,202,184,127,236,197,115, 39,135, 91,173,214,122,197,103, 78,130, 65, 87,120, 64,147,238,252, - 11,165,183, 44,248,247, 19, 94, 98,182, 4,149, 92,216,177, 40,154,219,231,191,154,156,248,155,173, 94,165, 94,122,102,238,142, - 62,131,102,210,132,196,172,155,201, 25,134, 95, 74, 79,171,243,178,154,207,159, 43, 47, 21, 55, 23, 26,254, 25,161,168, 89,239, -194, 23,198, 88,175,251,102,221,188,145,208,235, 10,119,106,179, 98,119,188, 26, 19, 75,117, 0, 46, 19, 66, 20,239,191,255,126, - 11,185, 92, 46,204,206,206,190, 65, 41, 85,213, 84, 83,147, 25,123, 9,192, 37, 0,115, 94,197, 54, 70, 69, 69,197, 53,111,222, -124, 23,143,199,171, 71, 41,245,164,148, 42,138,141,108,182, 64, 32, 72,125,248,240, 97,106,141,246,221,224,112, 74, 99,228, 7, - 90,168,243,233,127,152, 15, 87,143,115, 73,185,214, 31,249, 50,241,127, 77,142, 65, 97,102, 76, 52,128,161,175, 90,183,178,113, -178,108, 63,143,254, 50, 92, 17,225, 63,143,227,217, 41,150,244, 12,210,107,123,207, 72, 93,124,245,190,242, 6,165, 84,253, 18, -231,168,210,206,206, 78, 71, 8,169, 35, 18,137,116, 70,163,241, 94,141,142, 95,145,201,119,127,149,199,142, 3,185,221,178,101, -171,106,125,222,134, 72,222,142,226,229,149,162,201,120,188, 24,197,205,223,127,139, 80,100,198, 46, 1,176,228,101,180,111,221, -186,117,124,213,170, 85,170, 13, 27, 54,248, 90,173, 86,169,209,104,212,234,116,186,132,148,148,148,107, 53, 43,243,103, 70, 0, - 31, 23, 47, 53,136,186, 60,206,144,123, 54, 92,223,161,125,135,143,139, 42,232,116,125,194,229,245,159, 84,246, 29,185,103, 67, - 93,233,207, 87, 54,215,225, 43, 45,151,172,216, 45, 0,182,188,190, 72, 5,167, 28, 61,108, 32, 80, 60, 48, 55,103,177, 40, 95, -137,108,209, 53,255, 19,106, 56, 73,250,191, 1, 74,105, 58,128,173,197,134,153,190,182, 31,178, 53, 95,133,105, 50, 77,166,249, -191,165,105,203,236, 4,236,120, 50,205,215,169, 41,241, 9,169, 3, 0,182, 76,186, 94,209,231,217,241,164,255, 51, 9,237, 54, - 28,143,201,229,152, 45,219, 6, 44,101, 48, 24,140,215, 80,219,227,216, 81, 96,252, 39,177,213, 96,213,244,243,140,255,185,123, - 90,133, 57,209, 4, 69,179, 96,151,247, 37,155,157, 42, 33,164, 87, 13, 54,234, 60,211,100,154, 76,147,105, 50, 77,166,201, 52, -255,183, 52,171,210,254,191, 24, 41, 43, 39,162, 21, 94,220,124, 88, 52, 48,219,235, 90, 0,244, 98,154, 76,147,105, 50, 77,166, -201, 52,153, 38,211,252, 95, 90, 0, 76, 46,121,205, 3,131,193, 96, 48, 24, 12, 6,227,181,192,114,180, 24, 12, 6,131,193, 96, - 48, 94,130,242,154, 14,153,209, 98, 48, 24, 12, 6,131,193,120, 5, 84,150, 12,207,154, 14, 25, 12, 6,131,193, 96, 48, 94,130, -146,136, 22, 33,196,155, 16, 50,185,116,132,139, 25, 45, 6,131,193, 96, 48, 24,140, 87, 0,165, 52,189,108,116,139, 80, 74, 17, - 30, 30, 78,195,194,194, 8,128,191,189,102, 48, 24, 12, 6,131,193,248,255,193,255,101, 47, 66, 8,241, 6, 16, 86,122,119, 74, -134,119,224,149,222, 65, 86,204, 12, 6,131,193, 96, 48,254,147,102,235,255,226,118,151, 68,178, 74, 45, 47, 38,205,126, 97,180, -194,194,194, 8, 51, 91, 12, 6,131,193, 96, 48,254, 83,252, 27,189, 8,175,236, 14,178, 98,102, 48, 24, 12, 6,131,241,159, 52, - 91,255,166,253, 97,195, 59, 48, 24, 12, 6,131,193, 96,188, 4,149,229,104,145,226,161,226, 25, 12, 6,131,193, 96, 48, 24, 53, - 51, 90,147, 75,247, 54, 44,189,206, 34, 90, 12, 6,131,193, 96, 48, 24,175,192,108,149,251, 62,139,104, 49, 24, 12, 6,131,193, - 96,188, 30, 94,235,128,165,132,144, 94, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,102, 74, 70,132, 47,126, 61,185, - 56,103,235,245, 27, 45, 6,131,193, 96, 48, 24,140,255, 1,194, 40,165, 91, 75,229,102,133, 49,163,197, 96, 48, 24, 12, 6,131, -241, 10, 41,111,114,105,102,180, 24, 12, 6,131,193, 96, 48, 94,161,193, 42,189,206,140, 22,131,193, 96, 48, 24, 12,198,107,130, - 25, 45, 6,131,193, 96, 48, 24,140,215, 4, 1, 80,110,207, 1, 74,233,121,155, 69,106,208,251,160, 42,125,166,201, 52,153, 38, -211,100,154, 76,147,105,254,251, 52,171,210,174,142,255,248,175, 49, 83,127,141, 12, 31, 94,252,247,175,230, 67, 74,233,107, 91, - 0,244, 98,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252, 55, 47, 0, 38,151,254, 91,122, 97, 77,135, 12, 6,131,193, 96, - 48, 24, 47, 31,213, 42, 61,142,214,139, 81,226,217, 20, 60, 12, 6,131,193, 96, 48, 24, 47, 65,121,195, 58,148,192, 34, 90, 12, - 6,131,193, 96, 48, 24, 47, 65,217,121, 14, 75,175, 51,163,197, 96, 48, 24, 12, 6,131,241, 26, 12, 23, 51, 90, 12, 6,131,193, - 96, 48, 24,175,208,100,253, 35,186, 85,156, 37,143,240,240,112, 26, 22, 22, 70,216,161, 98, 48, 24, 12, 6,131,241,159,224,223, -232, 69,120,165,119, 44, 60, 60,156,178, 98,102, 48, 24, 12, 6,131,241,159, 50, 89,255, 23,189, 8, 33,196,187,164,183, 97,241, -226, 93,242, 63,214,235,144,193, 96, 48, 24, 12, 6,227,229, 8, 43,221,243,176,184,249,112, 43, 51, 90, 12, 6,131,193, 96, 48, - 24,175,128,242, 18,225, 1,150,163,197, 96, 48, 24, 12, 6,227,191,132,127,163, 23,121, 97,180, 24, 12, 6,131,193, 96, 48, 24, - 53, 48, 83,229, 68,179, 74,154, 18,153,209, 98, 48, 24, 12, 6,131,193,120, 69,134,171,236, 40,241,108, 28, 45, 6,131,193, 96, - 48, 24,140,215, 96,178, 94,187,209, 34,132,244, 98,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,183,155,172,146,191,108, - 82,105, 6,131,193, 96, 48, 24,140, 87, 8,155, 84,154,193, 96, 48, 24, 12, 6,227, 53,193, 38,149,102, 48, 24, 12, 6,131,193, -248,255,108,184,152,209, 98, 48, 24, 12, 6,131,193,120,133, 38,171,172,217, 98, 57, 90, 12, 6,131,193, 96, 48, 24, 47, 65,101, - 57, 90, 4, 64,175, 10,190,116,190, 26, 46,174, 87, 13, 54,234, 60,211,100,154, 76,147,105, 50, 77,166,201, 52,255,183, 52,171, -210,174,142,255,248,111,229,111, 67, 61, 80, 74, 95,219, 2,160, 23,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,255,210, - 2, 96,114,201,107,214,116,200, 96, 48, 24, 12, 6,131,241,146, 17,172,138,254,199,140, 22,131,193, 96, 48, 24, 12,198, 75,192, -198,209, 98, 48, 24, 12, 6,131,193,120, 77, 16, 66,188,139, 71,132, 47,249,219,130, 25, 45, 6,131,193, 96, 48, 24,140, 87, 67, - 88,113, 84,171,228, 47, 51, 90, 12, 6,131,193, 96, 48, 24,175,138,138,198,209, 34,148, 82,132,135,135,211,226,245,110, 97, 97, - 97,151,217,225, 98, 48, 24, 12, 6,131,241,255,147,127,171, 23,121, 17,209, 10, 11, 11, 35, 0, 34, 88, 81, 51, 24, 12, 6,131, -193,248, 79,240,111,244, 34,188, 50, 78,178, 27, 43,102, 6,131,193, 96, 48, 24,255, 9,254,141, 94, 68, 80,198, 69, 50, 24, 12, - 6,131,193, 96,252, 71,248,191,234, 69, 8, 33,222, 0,194, 0,132, 23,255,125, 49,228, 3, 27, 71,139,193, 96, 48, 24, 12, 6, -227, 37, 61, 34,165,116,235,223,166,222, 41, 49, 97,197, 67,197, 51, 24, 12, 6,131,193, 96, 48,106, 64,121, 35,195,151, 24, 46, -102,180, 24, 12, 6,131,193, 96, 48, 94, 19,172,233,144,193, 96, 48, 24, 12, 6,227, 37, 41, 29,213, 42,221,124,200,123,205, 63, -218,139,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,110,178, 40,165, 91, 75,150,210,166,139,141, 12,207, 96, 48, 24, - 12, 6,131,241,154, 96, 77,135, 12, 6,131,193, 96, 48, 24, 47, 65,217, 40, 86,233,166, 67,102,180, 24, 12, 6,131,193, 96, 48, - 94,129,217, 42,239,125,214,116,200, 96, 48, 24, 12, 6,131,241, 18,148, 55,188, 3, 51, 90, 12, 6,131,193, 96, 48, 24,175,217, -112, 17, 0,229,246, 28,160,148,158,175,134,112,181,123, 31, 84,165,207, 52,153, 38,211,100,154, 76,147,105, 50,205,127,159,102, - 85,218,213,241, 31,255,205, 6,235, 69, 83, 34,165,244,181, 45, 0,122, 49, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254, -175, 46,172,233,144,193, 96, 48, 24, 12, 6,227, 53, 97,179,209, 34,132,184, 11,133,194, 47,164, 82,233,119, 82,169,244, 7,161, - 80,184,138, 16,226, 92,221, 31,148,203,229,211,189,189,189, 31,123,123,123,167,248,249,249,157,116,116,148,205, 8, 16,147, 46, -132, 16,225, 43, 8,221,241, 8, 33, 65,132,144, 25, 82,169,244,145, 68, 34, 73, 36,132,236, 34,132,204, 32,132,184,189,140,246, -146, 90,100,104,244,140, 65, 71,150,212, 34, 67,203,252,102,152,151,151,215, 85, 66, 72,239, 87, 85, 40,163,100,164,215,112, 57, - 73, 30, 46, 39,201,163,100, 53, 31, 20,206,209,209,241, 29, 31, 31,159,235,110,110,110,169, 62, 62, 62,127, 72, 36,146, 97,213, - 60,158, 30, 94, 94, 94,223,250,250,250,198,214,170, 85,107, 93,241,236,228,255,181,116, 17,147,206,237,197, 68,217,193,158,168, - 59,217,147,239, 58,216,147, 55,122, 19, 34,173,225,185,212,137, 16,114, 80,161, 80,220, 17, 10,133, 39, 8, 33, 67,138,207,175, - 33, 66,161,240,132, 66,161,184, 67, 8, 57, 72, 8,233, 84,195,243,244, 91, 66, 72, 42, 33,100, 89,241,250, 71,190,190,190,234, -102,205,154, 37, 54,107,214,236,231,192,192,192,119,109,213,147,201,100,111,248,250,250, 30,242,243,243, 75,236,208,161, 67,110, -237,218,181, 99,234,212,169,179, 67, 44, 22,119, 99,183, 56, 6,131,193,248, 15, 99, 67,120,176, 63,128,229, 0, 54,222,187,119, - 47,146, 82, 26, 73, 41,141,188,119,239, 94, 36,128,239, 0,172, 64, 5, 33,196,178,239,187,186,186, 46, 90,178,100,137, 62, 61, - 61,157, 42,149, 74, 26, 27, 27, 75,215,206,159,205,245,113, 17,208,250,238,206, 90,111,111,239,103,126,181,107,239,109, 44,231, -205, 6, 16, 80,157,112, 37, 0,103,137, 68,114, 99,254,252,249,154,171, 87,175,106,140, 70,163,134,227, 56, 77, 90, 90,154,230, -252,249,243,154,142, 29, 59,106, 0,124, 2,128, 95,147, 16,232,215, 62,184, 76,127,250,146,126,237,131,203,165,223, 15, 14, 14, -126,200,113, 28, 29, 58,116,168, 1, 64,173,151, 9,171,214, 2,196,141, 29,225, 52, 76,142, 76,203,142,197,148,110,158, 73,135, -201,144, 92, 19, 77, 15, 15,143,163,211,167, 79, 47, 72, 77, 77,165, 6,131,129, 38, 39, 39,211, 41, 83,166,168, 60, 60, 60,118, -219,120, 60, 93, 67, 67, 67, 51,175, 95,191,206,229,231,231,211,136,136, 8,174, 73,147, 38,153, 0,188,171, 27, 82,246,240,240, -216,234,227,227,115,178, 58,139,135,135,199,182,234,150, 81, 91,123, 36,155, 34, 47, 81,122,235, 44, 61, 54,180, 61, 93,219,170, - 54, 29,226, 98,151,223,201, 14, 31,117, 5, 4,213, 56,151,134,119,237,218,181,240,254,253,251,214,156,156, 28,250,240,225, 67, -110,210,164, 73,122, 0,209,147, 38, 77,210, 63,124,248,144,203,201,201,161,247,239,223,183,118,237,218,181, 16,192, 68, 91,183, -179,184,114,179,125,225,194,133,148, 82, 74,151, 44, 89, 66,155, 54,109, 74,123,244,232, 65, 53, 26, 13,165,148, 38, 82, 74,127, -182, 88, 44,227,108,209, 84, 40, 20,239, 76,159, 62, 93,163,213,106,105, 9, 28,199,209,252,252,124,186,113,227,198, 66, 47, 47, -175,147, 0,220, 88,243, 4,211,100,154, 76,147, 53, 29,190,214, 84, 41,111, 0,147, 75, 45, 47,158,149, 85,125,113,212,236,217, -179, 75, 76,213,169, 78,157, 58,221, 28, 55,110, 92,228,184,113,227, 34, 59,117,234, 20, 1,224,204,237,219,183, 35,103,205,154, - 21, 9, 96, 84,101, 5, 1,192,185, 67,135, 14,249, 25, 25, 25, 52, 48, 48,144,214,173, 91,151,102,100,100, 80, 74, 41,189, 53, -188, 37,189,208, 8,244,249,149, 83,244,236,111, 7,233, 36,111, 1,237,236,173, 48,123,123,121,229,184,185,185, 45, 69,241,228, -215, 21, 21, 46,128,193,141, 26, 53, 82, 71, 71, 71,107,158, 60,121,162, 89,180,104,145,166, 71,143, 30,154,208,208, 80,205,144, - 33, 67, 52, 27, 54,108,208,152, 76, 38,205,182,109,219, 52,142,142,142,209,101,205,214,203, 24, 45,129, 64,176,254,222,189,123, -244,217,179,103, 20,192,183, 21,105, 2, 80, 56, 57, 57,245,117,118,118,254,196,201,201,169, 47, 0, 5,165, 20,129,128,188,153, - 2,190, 31, 53,171, 31,124, 98, 84,175,128,141,189, 90,183, 28,230,192,203, 55,111,154, 73,233, 80,223, 26, 25, 45,133, 66,241, -206,140, 25, 51,212, 6,131,129,106,181, 90,170,209,104,168, 86,171,165,106,181,154,142, 26, 53,170, 64, 44, 22, 15,174, 74,211, -205,205,109,241,149, 43, 87, 44, 25, 25, 25,244,202,149, 43,244,228,201,147,116,243,230,205,156,135,135,199,154,234, 94,128, 94, - 94, 94,231,206,158, 61, 27, 25, 21, 21, 21,121,227,198,141, 72,179,217, 28,105, 50,153, 34, 77, 38, 83,228,137, 19, 39, 34, 15, - 31, 62, 28,185,111,223,190, 72,163,209, 24,105, 52, 26, 35, 13, 6, 67,164,191,191,255,233,234,150, 81, 27,123, 60, 55, 94, 61, - 70,233,154, 15,168,234,155,105, 52,255,211,126, 52,107, 74, 23,250, 93,235,218,180,139, 4,199, 75,159, 71,149,105, 10,133,194, -203,137,137,137,220,220,185,115,141, 33, 33, 33,170,241,227,199,235, 13, 6, 3,165,148, 82,131,193, 64,199,143, 31,175, 15, 9, - 9, 81,205,157, 59,215,152,144,144,192, 9, 4,130,243,213, 48, 90, 43, 74, 76,214,229,203,151,105,105, 52, 26, 13,237,209,163, - 71, 98,211,166, 77,127,174, 87,175,222,232,170, 52,229,114,249,192, 57,115,230,104,104, 57,152,205,102,170, 86,171,105, 66, 66, - 2, 87,183,110,221, 52, 0,174,236,102,206, 52,153, 38,211,100, 70,235,181, 25,173,201, 21,173, 87,122, 16,103,205,154, 21, 73, - 41,141,156, 55,111, 94,100,113,100, 75, 4, 64, 94,188, 8, 0,140,156, 51,103, 78, 36,165, 52,114,246,236,217,145, 0,250, 87, - 98,180,250, 31, 56,112,192,180,110,221, 58,234,233,233, 73,189,188,188,232,250,245,235, 41,199,113, 52,227,196,110,122,161, 17, -232,163, 47,198, 82, 74, 41,141, 93,250, 33,189,208, 8, 52,110,203,215,116,204,152, 49, 90,169, 84, 58,170, 18, 3,227,210,178, -101, 75,181, 78,167,211,236,216,177, 67, 35,149, 74,111, 1, 8, 1, 32, 68, 81,175, 74, 57,128,119, 67, 66, 66, 10, 30, 60,120, -160,217,179,103,143, 6,192, 34, 27, 35, 27, 1, 0,186,203,100,178, 33,115,106, 9,159,208,159,190,164,115, 60,113, 31, 64, 19, - 0,238,197,159,241,153, 61,123, 54,165,148,210, 58,117,234, 92,169, 96,223, 21,161,161,161,179,159, 60,121,178,192,108, 54, 47, -136,138,138, 90,208,176, 97,195,185, 3,252,189,219, 31, 25,245, 70, 11,213,215,211, 90,208,213,159,134,174,122,179, 77,175,189, - 35,186,141,122,175,158,219,213,241, 30, 98,237,219, 10,190,122,164,244,111, 58, 54,157,216,181,106,213,186,145,156,156,252,194, - 92,169,213,106,154,154,154, 74,227,227,227,233,213,171, 87,169,183,183,247,133,170, 52,189,188,188, 30, 38, 39, 39,211, 45,107, -215,210,161, 77,130,105, 23, 39, 7,218,213,217,129,182,146,139, 11, 27, 1,173,170,107,180,238,220,185, 19, 9, 32, 18, 64,100, - 78, 78, 78,100, 78, 78, 78,100, 94, 94,222,139,247, 0, 68,170, 84,170, 72,149, 74, 21,105, 52, 26, 35,235,215,175, 95,109,163, -213, 81,140,142,109,197,200,109,111, 15, 93,255, 90,110,105,211,252,221,172,127,142,106, 79,243, 62,232, 65,215,181,168, 69, 59, -217,225, 35, 27,203,189,191,157,157, 93, 4,128,153, 0,248, 0,198,246,237,219, 87, 75, 41,165,125,251,246,213, 2, 24, 91,252, -254, 12,129, 64,112, 30, 64, 95, 91,182, 19, 0,175, 65,131, 6,133, 37,145, 44, 0,215, 26, 52,104, 80,216,180,105, 83,218,180, -105, 83, 90,167, 78, 29, 53,128,177,182,222,208, 2, 2, 2, 98,117, 58,221, 11, 3,152,159,159, 79,211,210,210,104, 92, 92, 28, -141,142,142,166,183,110,221,162,137,137,137,116,255,254,253, 86, 39, 39,167,112,118, 51,103,154, 76,147,105, 50,163,245,250,140, - 86,217,229, 31, 70,235,196,137, 19,180,204,151,190,185,125,251,118,228,156, 57,115, 34,203, 58,181,178,226,243,230,205, 43,137, -122, 45,175,228,225,191, 45, 54, 54,150,142, 29, 59,150, 6, 5, 5,209,160,160, 32, 58,110,220, 56,170, 82,169,168,230,233, 3, -122,161, 17,232,173,183, 91, 81, 74, 41, 85, 63,138,162, 23, 26,129, 70,142,233, 64,239,222,189, 75,107,215,174,125,182,146,223, - 63,254,199, 31,127, 40,119,239,222,157, 1, 96, 87,177,193,106, 7, 96,189, 68, 34,217, 94,220, 92, 88, 23,128,115, 96, 96, 96, -174, 86,171,213, 12, 29, 58, 84, 3,192,183, 18,205,174, 65, 65, 65,207,182,109,219, 70,179,178,178,104,110,110, 46, 93,217,177, - 33,165, 63,125, 73,151,180,170,203,109,217,178,197, 48,115,230,204, 66, 23, 23,151, 19, 0,124,134, 14, 29,106,161,148,210, 46, - 93,186,100,150,167,231,228,228,212,247,201,147, 39, 11,244,122,253,130,252,252,252, 5,185,185,185, 11,142, 29, 57,178,160, 79, -147,134, 99, 85, 95, 79,107,113,100,212, 27, 45,222,172,229, 60,100, 77,239,214, 83, 83,231, 78, 28, 58,175, 67,200, 35,253,138, -143, 47, 13,247,247,252,182, 38, 5,238,238,238,158,110, 48, 24, 40,128,127, 44,207,158, 61,163,174,174,174,201, 85,105,184,184, -184,204,155, 49,114,132,117,112,221, 90,244,217,186,249,212,124,110, 15, 53,159,220, 65,159,126,243, 41, 29,224,229, 86,208, 78, -196,155, 99,235,246,120,121,121,157,187,113,227,198,223,140, 86, 94, 94, 94,185, 70,171,160,160, 32,210,104, 52, 70, 54,104,208, -224,244,203,158,248,237,236, 80,191,171,132,127, 43,106,108,103,170,156,214,131,246, 85, 8, 19, 95,226, 34, 26, 9, 32, 2,192, -152,106,126,143, 7, 96, 69,137,161,250,230,155,111, 40,165,148, 54,104,208,160, 16, 0,239, 37,182, 71, 17, 28, 28, 28, 63,113, -226, 68, 75,163, 70,141,178, 58,118,236,152,127,243,230, 77,122,249,242,101,122,242,228, 73,122,240,224, 65,250,224,193, 3,154, -154,154, 74, 99, 99, 99,105, 88, 88, 88, 62,128,174,236,134,200, 22,182,176,229,191,121, 41,235, 69,254, 53,189, 14,195,195,195, -105, 88, 88, 24, 9, 15, 15,167,197,201,186, 10, 0,226, 86,173, 90, 41, 87,172, 88,177,186,120, 14, 31,210, 84, 64,134,247,148, - 10,239,246,148, 10,239, 54, 21,144,225,132, 16, 66, 41,221,186,116,233,210,197, 77,155, 54, 77, 7, 32, 33,132,120, 85,144, 11, -214,217,213,213, 21,201,201,201, 80, 40, 20, 80, 40, 20, 72, 78, 78, 6,165, 20, 22, 10,152, 41, 96, 48,153,160,211,233,160,231, - 40,116, 28, 80,160,209,192,203,203, 11, 38,147,169,126, 5, 73,197,205,222,126,251,237,250,161,161,161,202, 89,179,102,165, 1, -152, 8, 96,251,132, 9, 19,206, 93,187,118, 45, 84,163,209,228, 70, 71, 71,235,155, 52,105,210, 23,128,215,147, 39, 79,222,217, -184,113, 35,198,142, 29, 11, 0, 93, 43,208,108, 18, 22, 22,118,242,193,131, 7,245,199,140, 25,131,136,136, 8,172, 92,185, 18, -217,217,217, 20, 0, 12, 6, 3,181, 90,173,166, 14, 29, 58,152,214,173, 91,215,166, 75,151, 46, 55,252,253,253,249, 0, 16, 31, - 31,255,180, 2,205,134,126,126,126, 48, 24, 12, 80, 42,149,120,240,224, 1, 28, 20, 10,220, 75,203,246,236,182,102, 75,206, 23, - 71,206, 9, 71,182, 9,117,249,228,141,142,134,101,103, 35, 2, 67,124, 60, 61,141, 38,179, 87,108,122,102, 90, 77,242,238, 68, - 34, 81,114,118,118, 54,140, 70, 35,116, 58, 29, 10, 10, 10,144,147,147,131,236,236,108,164,165,165, 65, 36, 18, 61,171, 50,145, - 62, 55,247, 74,252, 31,151,201,254,239,191, 65,125, 75, 46, 4,135,214, 67,112,244, 59, 4, 24,149,248, 97,254, 20, 7,163,171, -251, 66,133,163, 99,158,179,179,243, 86, 66, 72,131,170,244, 90,180,104,129,156,156, 28,228,228,228,192,213,213, 21,206,206,206, -112,118,118, 70,126,126, 62, 84, 42, 21, 10, 10, 10, 16, 24, 24,136,102,205,154, 97,231,206,157,175, 36,255,240,186,129,198, 89, - 96,157,118, 46, 38, 13, 34,153, 12,254,206,114,191, 54, 14,196,165,146, 36,245, 30, 34,145,232,128,171,171,235, 89, 66,200, 7, -132, 16, 25, 33,228, 3, 87, 87,215,179, 66,161,112, 16,128, 37,148,210,221,213,220,140,101, 11, 23, 46,156,253,228,201, 19,233, -221,187,119, 49,107,214, 44, 44, 90,180, 8, 79,159, 62,221, 68, 41,229,138,127,247,125, 55, 55,183, 19,124, 62,255, 71, 66, 72, - 63, 66, 72, 95, 31, 31,159,158, 85,232, 14,154, 57,115,166,190,101,203,150,177,143, 30, 61, 26,244,199, 31,127,180,250,244,211, - 79, 85, 73, 73, 73,136,141,141,133,183,183, 55,234,212,169, 3,141, 70,131,188,188, 60, 12, 26, 52, 72,225,232,232, 56,138,101, -165, 50, 24,140,255, 86,202,122,145,255, 75,148, 29, 71,171,244,122,185,189, 14,165, 82,233,194,200,200,200,246, 77,155, 54, 21, - 0,216, 15, 0,161,124, 12, 27,212,161,249,246, 35, 91,191,105,122,120,221,252,166,125,154, 6,110, 15,229,163,164, 23,219,137, - 86,173, 90, 57, 71, 70, 70,118,176,183,183,255,168,162,188,123, 0,112,118,118,134, 66,161,128,147,147, 19,156,157,157,193,113, - 28, 52, 90, 61, 10,173,128, 90,111,132, 74,165,130,186,120, 93, 99, 48,161,176,176,240,197,119,203,161,219,196,137, 19,149, 27, - 55,110,204, 74, 79, 79,255, 6, 64,147,177, 99,199, 14,220,176, 97, 3, 46, 94,188,168,239, 23, 20,224,186,180,115,243,197, 33, -233, 79, 23, 4, 9, 49, 9,192,149, 43, 87,174,160, 67,135, 14, 32,132,140, 40, 79, 80, 34,145,124,183,119,239, 94, 73,116,116, - 52, 2, 2, 2,162, 71,140, 24, 49,252,155,111,190,169, 47,211,228,254, 14, 0,150,156,140,232, 15, 63,252,240,203,165, 75,151, - 42,149, 74,165, 73,171,213,122, 12, 24, 48, 0,201,201,201, 72, 77, 77,189, 86,129,201,140,141,138,138,162, 42,149, 10,113,113, -113,136,138,138,146,124,249,229,151,109,172, 60,222,192, 20, 56,188, 55,182, 99,171, 54, 99,218, 53,199,238,235,119, 69, 87, 99, -226,157, 90,213,173,229,124,231,121,122, 61, 51,193,179,154, 20,184, 90,173, 94,191,120,241, 98,141, 70,163, 65, 74, 74, 10,238, -223,191,143, 71,143, 30, 33, 49, 49, 17, 43, 87,174,212,228,230,230,110,168, 74,195, 71, 44,248,236,219, 79, 39, 16,193,195,107, -192,221,203,128, 86, 13,232, 52, 48, 60,142,196,207,143, 51,176,249,208,111,118, 73,201,201, 78,251,246,237,155,232,235,235, 27, - 73, 8, 9,172,170,211, 5, 0,240,120,188,178, 39, 39,120, 60,158, 26, 64,134, 76, 38,123,238,224,224,240,156,199,227,101, 80, - 74, 11, 95,197,201,207,179,192, 4, 62, 31,176,147,128, 39, 20, 84,118,145, 12, 31, 49, 98,196,222,231,207,159,247,137,139,139, -107,191, 97,195,134,197, 98,177,248,222,134, 13, 27, 22,199,197,197,181,127,254,252,121,159, 17, 35, 70,236, 37,132,188, 91,157, -223,111,208,160,193,135, 11, 22, 44,192,202,149, 43,209,172, 89, 51, 4, 6, 6,106, 23, 46, 92,184, 30,192,124, 66,200, 71,129, -129,129,191,127,248,225,135,227,179,178,178,188, 82, 82, 82,154,109,218,180,105,202,250,245,235, 91,167,165,165,137,171,144,238, -212,187,119,111,156, 58,117, 10, 0,210, 41,165,113, 57, 57, 57,150,180,180, 52, 4, 7, 7,163, 77,155, 54,208,104, 52,208,104, - 52,200,207,207,135,159,159, 31, 56,142,107,207,110,229, 12, 6,131,241,255,207,112, 85,104,180,196, 98,177,115,139, 22, 45,224, -239,239,239, 92,156,139, 5, 87, 59,193,220, 79, 38,142,148,202, 35, 79,131, 68, 93,192,136,206,141,165,174,118,130,185,197, 95, - 17,248,249,249,217,183,104,209, 2, 50,153,172, 86, 5,191, 31,145,145,145,129, 22, 45, 90,192,201,201, 9, 10,133, 2, 45, 90, -180,128,201,100,130, 74,173, 70,161, 21,208,154, 57,168, 84, 42,228, 42, 51,161,181, 2, 22, 7, 87, 36, 38, 38,130,207,231,199, - 87,160,233, 29, 16, 16,160,188,119,239,158, 18,192, 21, 0, 83, 23, 45, 90,132, 57,115,230,224,171,175,190,218, 43, 77, 79,232, -189,247,212, 81,215, 95, 23,190,239, 30,104, 71, 70, 2, 48, 61,127,254, 28, 78, 78, 78,144,201,100,229, 26,131, 46, 93,186,180, -148,201,100,216,177, 99, 7, 77, 73, 73,233, 72, 41, 61, 72, 41,141, 39,164,200,236, 73,120, 80, 81, 74,215, 71, 70, 70,182,253, -242,203, 47, 99,122,245,234, 37,108,215,174, 29,150, 44, 89, 2, 0, 39,202,211,204,207,207,255,243,221,119,223, 53, 94,186,116, - 9,143, 31, 63,150, 29, 57,114,100,216,146, 37, 75, 26, 39, 37, 37,217, 31, 63,121,250,205, 93,207, 11,134,125,115,246,170,120, -233,153,136, 63,221, 28,101, 33,245,220, 92,254, 31,123,223, 29, 22,197,213,190,125,159,221,217, 2,236,210, 97,233,160,162,136, - 5, 84,236, 93, 99,143, 29,177,151,216, 99,121, 53, 26, 53,182,128, 24, 53, 70, 99,108, 49,209,196, 22,209,136, 5,141, 98, 39, -246,196,142,162, 32, 10, 34, 8, 72, 89,218,238,178,203, 22,182,156,239, 15,129,151, 24,202, 98,146,223,247, 38,153,251,186,230, -162,204,204, 61,231,156, 57,103,230,158,231, 60,231,121, 16,251,234, 53,223,200,197,221,218,110,106, 7, 62, 51,173,167, 37, 47, -182,155, 5, 55,187,167, 37,239, 65, 59, 62, 51, 85,161, 80, 68,158, 58,117,234,194,194,133, 11,149, 82,169, 20,214,214,214, 40, - 40, 40,192,186,117,235,148,177,177,177,199,181, 90,237,233,218,120,141, 38,218,218,171,158, 55,240, 34,174,226,127,165, 38,138, -187, 58, 62, 6,125, 56, 31,254, 77,154, 64,167,211, 33, 32, 32,128,132,135,135,139,108,109,109, 23,215, 42,122, 56,191,235,110, - 6, 66, 72, 14,165,244,181, 82,169,204,180,180,180,124,197,231,243, 95, 21, 22, 22,102, 82, 74,115,255,132, 14,207,161, 28,124, -220, 41,160, 17, 32,180,196,171, 2,101,214,221, 98, 90, 88,213,177,214,214,214, 83,119,236,216, 97,177,103,207, 30,253,220,185, -115,181, 51,103,206,228,169,213,106,201,204,153, 51,121,115,231,206,213,238,217,179, 71,191, 99,199, 14, 11,177, 88, 28,252, 46, -101,209,235,245,136,139,139,251, 34, 41, 41, 73, 68, 41,253, 8,192,252, 85,171, 86, 77, 74, 74, 74,178,216,190,125, 59,142, 29, - 59,134, 99,199,142, 97,232,208,161,152, 55,111, 30,194,194,194,106,170,151, 85,139, 22, 45,130, 28, 29, 29,113,237,218,181, 44, - 74,233, 43, 66, 72,107,177, 88,108, 61,116,232, 80,244,235,215, 15, 26,141, 6,165,165,165, 21, 66,139,203,229,194,206,206,206, -145,125, 12,178, 96,193,130,197, 95, 43,178,222, 22, 91, 12, 0,148,155,234, 6, 14, 28, 72,106,122, 49, 26,139,164,144,169, 74, -144, 38, 47, 65,122,145,233, 55,251, 76, 38, 83,141, 5,200,202,202, 58,125,235,214,173,169, 65, 65, 65, 76, 86,214,155, 25,177, -160,160, 32,148,148,148, 32,235,209, 29,168, 76,128,168, 97, 32, 84, 42, 21,138,158, 62,132,184, 69, 71, 56, 14, 28,143,175,182, -111,215, 22, 20, 20,236,172,138, 83, 32, 16,240, 60, 61, 61,243, 94,190,124,105, 0, 80,104,107,107,219,215,219,219, 27, 87,175, - 94, 5,128,131, 20,216,136,216, 43,192,181, 40,208, 55, 38, 21,177,143,143, 15,164, 82, 41,148, 74,229,213,170, 56,111,221,186, -149,164,215,235, 3,134, 12, 25, 66,126,248,225,135, 35,132,144, 80, 0,143,151,187,130,251, 40, 35, 23, 42, 35, 44, 8, 33,125, -236,237,237, 63, 10, 11, 11,235, 53,119,238, 92,156, 58,117, 10, 23, 47, 94, 44,197, 27, 95,176, 91, 85, 88,115,228,132,144, 93, -139, 22, 45,234,192,225,112, 62,188,116,233,146,193,207,207, 79, 81, 90, 90,106,108,236,239,207, 9, 13, 95,205,140, 99,206, 5, - 0, 0, 32, 0, 73, 68, 65, 84,159,243,225, 12,187,130, 18, 36,244,107,236,214,137, 16, 32,225,181,244, 85, 82, 49, 45,168,169, - 77,187, 11,153,232,209, 93, 91,116,155, 58,122,176, 88,212,176, 25, 84, 79,238,184,238, 58,122,246,171, 30,150,204,160, 92,181, - 97,168,173,173,109,200,213,171, 87,231,232,116,186, 6, 66,161,240,133, 76, 38,219, 82, 92, 92, 92,171,200, 98, 24,102, 96,160, -151,167,189,172,176, 16, 22,101,150, 40,133,222,132,124,173, 1,137,118,126, 24,235,233, 85, 49, 13,154,147,147, 3, 87, 87, 87, - 98, 52, 26, 7,215,196,121,241,226, 69, 12, 26, 52,168, 92,120,130, 16, 2, 66, 72,190,191,191,127,174, 80, 40, 44,224,243,249, -138,141, 27, 55,106, 52, 26, 13, 24,134,177, 48, 26,141,220, 63,210,225,219,139,136,164,155, 37,249,102,230,144,158,189, 91, 54, -107, 66,175,223,123, 68,138, 74, 52,251,106,176, 2,126,221,168, 81, 35,166,176,176,240, 52,128, 68,189, 94,127,232,200,145, 35, - 22, 19, 38, 76,208, 28, 61,122,116, 28, 0,223, 77,155, 54,133, 40,149,202,239,234, 82,142,228,228,228,175,215,174, 93,251,201, -138, 21, 43,112,224,192,129,185, 0,150,150, 89,186,134,134,133,133, 97,227,198,141, 56,112,224,128, 41, 49, 49,241,172,201,100, - 74, 94,184,112, 97, 11, 23, 23,151,252,236,236,236,228,240,240,240,234,104,219,244,239,223, 95,123,243,230, 77, 65,113,113,241, - 13, 66,200, 71,179,102,205,154,214,190,125,123,197,232,209,163,197,133,133,133, 50, 43, 43, 43,193,238,221,187,237, 25,134,129, - 74,165, 2, 33, 4,197,197,197, 58,246, 81,200,130, 5,139,255, 85, 84,167, 69,254, 14,168, 72,183, 83,213, 59,181,170, 10,150, -148,148,228,166,167,167, 55,121,253,250,181, 1,128, 1, 0, 10,116,134,207,215,238,142,218, 19,220,161,145, 40, 91,175,199,201, -123,241, 37, 5, 58,195,231,229,150,137,215,175, 95, 23,191,122,245,202, 90,173, 86, 43,171,185,214,175,223,124,243,141,250,202, -149, 43,214, 41, 41, 41, 48, 26,141,104,221,186, 53,158, 63,127,142,162,196, 56,136,154,180,134,168,251, 32,196, 63,184,135,216, -139, 49, 72, 85,234, 12,207, 86,174,149, 43, 85,170, 48,157, 78,119,178, 42, 66, 30,143, 87,248,166,126,212, 8, 0, 10,133,226, -177, 82,169,236,234,226,226,130,132,132, 4,145,202,136,121, 33,203,190,218, 70, 41, 53,242,223,172, 20, 91, 48,122,244,104,220, -191,127, 31, 0,238, 87,197,169, 80, 40,230, 78,159, 62,253,202,254,253,251,153,148,148,148,126,123,246,236,233,247,236,217, 51, - 74, 10,211,141, 55, 75,120,240,157, 52,175,237,183, 62,254, 23, 7, 13, 26, 4, 55, 55, 55,236,222,189, 27, 91,182,108,209,207, -158, 61, 59,105,203,150, 45,109, 1, 28,170,230, 38,200, 1,156,119,114,114,154,211,188,121,243, 98,149, 74,133,130,130, 2,100, -101,101,193,193,209,145, 99, 0,167,147,179,157,221,161,211, 57,197, 34,230,252,109,220,201,204,174,209,154,213,145,207, 76, 28, -211,163, 85,183,255,172, 88, 38,198,205,147, 32,211,195, 64,247,124,134,249, 31,132, 88,107,180,135,186,183, 97,152, 9,114,131, - 33, 2,192,177, 58, 42,242,254, 93,187,118, 61,188,118,237, 90,203,229, 27,214, 98, 83, 19, 15, 24, 10, 10,144,167, 53, 34, 95, -107,128,162, 40, 17, 9, 9,241,112,116,116, 66,106,106, 42, 52, 26, 13,158, 62,125, 74,185, 92,238,233,218, 44, 58,149,174, 81, - 62, 93, 40, 19, 10,133, 5, 60, 30, 47,151, 97,152,194,148,148, 20,149, 70,163, 1,135,195, 17, 25,141, 70, 75, 51,202,234,233, -228,228,180, 16, 64, 48,128, 83,197,249,249, 91,131,120,176, 3,131, 30, 13, 36,142, 3, 86,206,156,224,228,237, 46,145,165, 36, -189,208,239,188,240, 75,190, 70,139,207,107, 24, 36,209,149, 45,146,132,144,249, 71,143, 30,157, 6, 96,111, 89,222,173, 24, 0, -223,190,195,248, 91,121,252,248,241, 79, 86,172, 88, 1, 75, 75,203,138,224,169,150,150,150, 22, 0,240,227,143, 63, 34, 33, 33, -161,125,185,191, 22,128,195,102,112,250, 6, 6, 6,166, 68, 69, 69, 9, 0,184,207,154, 53,171,227,182,109,219,240,193, 7, 31, -228,197,199,199,119,120, 99,129, 37,190, 31,126,248,225,221, 3, 7, 14,216,155, 76, 38, 20, 21, 21, 65,167,211,189,100, 31,229, - 44, 88,176, 96,197,214, 95, 98,205, 10,162,148,198,150, 5,246, 30, 8,224, 12,165, 52,251, 55, 66,171,188,130, 0,160,209,104, -190,246,241,241,177, 5,224, 5, 96, 16,128, 83,143,141, 56,134,103,105,136, 75,205, 92, 86, 46,188, 30, 27, 43, 94,226,163,238, -222,189,171,171, 87,175,222, 35, 0,159, 85,243, 34, 83, 56, 57, 57,173, 89,184,112,225,186, 53,107,214, 48, 12,195,224,202,149, - 43,184,117,225,140,233,233,141, 59, 36, 77,109, 84, 43,238, 45,122,205, 80,227,109, 23,117,225,147,135, 37, 56, 78, 41,205,172, -169, 98, 42,149, 42, 61, 57, 57, 89,208,188,121,115,227,195,135, 15,157, 40,165, 39,206,158, 61,219,117,201,146, 37,184,122,245, -234,161, 75, 26,227, 88, 74, 77, 71, 8, 33, 12,128,177,131, 7, 15,254, 40, 36, 36, 4, 45, 91,182, 44, 5,112,160,154,114,222, - 36,132,140,205,200,200,216,181,120,241, 98,187,197,139, 23,131,195,225,144,202,109,149,159,159,143, 71,143, 30, 97,244,232,209, -242, 95,126,249,101, 94,175, 94,189,166,116,233,210, 5,231,206,157,115, 55,227,102,252,250,244,233,211,225,182,182,182, 36, 57, - 57, 25, 10,133, 2, 55,111,222,228,249,248,248,116, 58,114,228,136,176, 65,131, 6,136,127,242, 4,103,199,142, 29, 72, 8,241, -161,148,190,170,138,199,146, 71,230, 76, 26, 57, 88,172,189,121, 26,136,189, 14, 0, 80, 42,138,161, 78,141, 67, 72,187, 70, 54, - 87,159,166,205,194,155, 85,152,117,130,131,131,195,252, 77,155, 54,137,252,252,252,240,241,218, 13, 88,184, 98, 9, 62,148,248, - 64,241, 58, 29,249, 70, 64, 96,101,133, 53, 43, 87, 96,240,200,209,144, 72, 36,120,242,228, 9,221,189,123,183, 74, 46,151,111, - 52, 71,104,113,185, 92, 16, 66, 0, 64, 37,151,203,149, 2,129, 64,206, 48, 76,129,209,104,204,141,222,190,181, 53,167, 32,119, - 50, 33,132,107,105,226, 68,151, 45,182,168,210, 63,207,142, 16,159,134,190,190, 79,190,223,189, 91,212,190,125,123,114,239,222, -189, 57,179,102, 76,159, 22, 28, 88,255,236,176,222,221,224,234,230,170, 53,149,234,100,103, 79, 69,235,191, 61,122,246,154,142, -152, 22, 63,160, 84, 93,135,175,147,195,149, 69, 15, 33,100, 12,128,145, 0,162, 40,165, 7, 9, 33,147, 0, 12, 3,112,188, 58, - 7,121, 66, 8, 7,192,119, 35, 70,188, 73, 38,160, 86,171, 75,202,255,223,162, 69,139,202,215, 50,213,229, 30, 89, 89, 89, 89, - 91, 88, 88,188, 56,119,238,156,229,232,209,163,237,215,173, 91,247,250,131, 15, 62,240, 56,116,232,208,215, 0, 82, 9, 33,254, - 0, 26,170, 84, 42, 35,135,195,129,191,191, 63,118,236,216,161, 52, 26,141,123,217,199, 56, 11, 22, 44,254, 14, 98,235,111, 88, -236, 32, 0,177, 0, 6,150, 45, 32,156, 1,160,230,164,210, 0,214,198,197,197,149,199,208,154, 85, 83,120,135,165, 75,151, 62, -184,127,255,254, 3, 0,235,107, 91,230,200, 48,204,137,217,179,103, 83, 23, 23, 23,165, 68, 34, 57,193,227,114,167,121, 89, 34, - 8,239,176,212, 29, 64,215,136,136,136,161, 95,127,253,245, 64, 0,237, 1,240, 60, 60, 60,178,114,114,114,148,191,252,242,139, -178,115,231,206, 74, 39, 39, 39,105, 96, 96,160,114,211,166, 77, 74,189, 94,175, 92,184,112,161, 18,111,197,251,170,134,219, 2, -192, 28,129, 64,112,162,105,211,166,113, 43,135,188,167,223, 48,111, 26,157,212,200, 89, 9,224,107, 0,179, 1,216, 1,224,133, -132,132,252,252,244,233,211, 11,129,129,129,187,204,224,117,111,222,188,249,229,195,135, 15,223,143,138,138,122,176,120,241,226, -251,142,142,142,153, 73, 73, 73, 38,141, 70, 67,139,138,138,168, 76, 38,163,103,206,156, 49, 58, 56, 56,108,175,142,167,171,144, -155, 77, 47, 30,172, 50,132, 67,198,138,241,180,179,128,243,250, 93,150,161,138, 68,162,194,130,130, 2,154,147,147, 67, 83, 82, - 82,232,241,227,199,105,255, 78,237,104,228,135,193,244,224,212,161,116, 99,255,118,180,189,181,133,202,213, 90,124,223,218,218, - 90,106,103,103,247, 29,128, 70,181,133,119,208,106,181, 21,225, 27, 60, 61, 61, 31,248,251,251, 71, 5, 6, 6,126,117,234,212, -169,249,155, 55,111, 30,218,179,190,207, 39,235,250,117, 82,151,196, 28,165,197, 71,190,166, 75, 91,251,105, 2,185, 24, 89,109, -184, 16, 71,135,136,107, 87,175,154,202, 3,116, 26, 12, 6,122,242,196, 9, 58,106, 64,159, 56,249,249, 31,191,191, 17, 54,247, -240,194,214,126, 39, 59, 91, 96, 12,222, 10, 84, 90,213, 22, 36,134, 99, 55, 27,206,142,247,189, 29,178,187,218,114,190,238, 96, - 13,251, 74,247,108,148,159,159, 95, 10,165, 52,187, 73,147, 38, 41, 0, 14, 54,105,210,164,242,223,147,107, 11, 78,186,106,213, - 42,138, 55, 89, 20, 56, 0, 66,215,174, 93,251,128, 82,250,160, 81,163, 70, 55, 41,165,104, 41,130, 83,119, 91,206,247, 67,124, - 93, 10,186,219,114,190,111, 41,250,125, 52,119, 74, 41,124,248,104,220,213,217,234,198,208, 70,110,197, 61, 60,108,175, 31,220, -183,103,195,251,239,191,191, 27,192,118, 0,159, 57, 58, 58,222, 24, 51,102, 76,194,129, 3, 7, 18, 54,109,218, 84,154,148,148, - 68,167, 76,153,162, 18, 10,133,159,177, 75,199,217,141,221,216,141,221,254,242,200,240,110,117, 9, 88, 58,248,147, 79, 62,121, - 64, 41, 45,143,165, 53,161,138, 99,134,172, 88,177,226, 1,165,180, 60, 58,124,239,218, 2,154, 1, 88,181, 99,199, 14, 42, 20, - 10,191,255,163, 65,210, 0,184, 14, 27, 54,172,131, 66,161,104,235,226,226,210,182,204,234,228,229,228,228,148,114,232,208, 33, -165, 90,173, 86, 82, 74,149, 6,131, 65,121,255,254,125,101,143, 30, 61,148,120, 19, 2,194,172, 8,225,149,183,229,174,184,121, -111,229, 84,186,220, 21, 55,223, 58,119,252,222,189,123,207,189,124,249,242,180,141,141,205, 18, 51, 3, 87,122, 57, 59, 59,135, - 58, 56, 56, 92,112,114,114, 90,238,224,224,144, 93, 90, 90, 74,139,138,138,232,243,231,207,233,213,171, 87,233,173, 91,183,168, -131,131, 67,102,117,229,236,101,201,220, 46,218, 48,135,154,246,174,165,186,109,203, 40, 0, 42,219,188,148,230,127, 19, 78,239, - 77,239, 71,123, 88,112,127,125,151,160,115,118,118,118,223,157, 56,113,194,148,156,156, 76,163,163,163,233,153, 51,103,232,188, -121,243,104, 99,119, 55,109, 7, 1, 39,183,171,144,185,240, 46, 1, 75,181, 90,237, 3,133, 66,241, 64,169, 84, 62,104,218,180, -233,131,118,237,218, 69,117,232,208,225,171,163, 71,143,206, 95,183,110,221,208, 94,214,194,231, 37, 49, 71, 41, 93, 60,128,210, - 57, 93,232,139,105, 61,232,123,150,204,163,106, 57, 93, 92, 50,203,163,181,171, 84, 42,122,253,250,117,122,249,242,101,234,234, -228,164,232,102,201,157,209, 89,136,238,157,109, 96,103,110, 57,123,218,114,246,221,254,230,115,163,250,220, 1,250,227,164, 1, -134, 30,118,156, 29,149,142,139,164,148,102,143, 24, 49, 34,149, 82,154,125,252,248,241, 12, 74,105,118,112,112,112,106,153,105, -248,112, 85,156,111, 5, 39,221, 91, 38,178,230,172, 90,181,234, 1,165,244,193,170, 85,171, 30, 0,111,130,168,118,183,229,236, -191,179,107,163, 73,123,102, 63, 61, 58,101,160,177,187, 45,103,127,149,229,180, 99, 78,199,238,221, 76,117, 23, 14,210, 19,243, -198, 25,187,184,218, 92,243,243,243,219, 56,127,254,252,168, 91,183,110, 61, 54, 26,141, 9, 41, 41, 41, 9,219,183,111, 79,232, -216,177,227, 77, 71, 71,199, 56,129, 64, 48,155, 13,138,200,114,178,156, 44, 39, 27,176,244,255,207,198,212, 48,117,114,154, 16, - 34,162,148, 46, 12, 9, 9,193,250,245,235, 71, 5, 4, 4,140,241,240,240,112, 6,128,172,172,172, 18, 0,138,144,144, 16,132, -134,134, 98,195,134, 13, 95,149,249,178,252, 95, 58,159,229, 16, 66, 60,231,206,157, 43, 93,183,110,157,105,202,148, 41, 77, 40, -165, 79, 8, 33,141,199,141, 27, 55,135, 97,152, 16, 31, 31,159,192,236,236,236, 60,181, 90,125, 16,192,174,242, 57,211,186, 66, -200,129,177, 77, 61, 55, 92,224,192, 88,105,106,104, 64,104,104,232,232,224,224,224,210,205,155, 55, 27, 20, 10,197, 41, 51,203, -157, 1, 96,117,249,223,142,142,142,174,143, 30, 61,154, 45,145, 72, 56, 41, 41, 41,208,106,181, 72, 78, 78, 54, 1,248,169, 58, - 14,165,129,110,253,246,248, 37,255,133,227, 7,217,148, 36, 62, 4,159,203,133,158, 39, 64,206,237, 11,216,123, 61, 81,161, 42, -197,182,119,169,167, 76, 38,251,114,222,188,121,227,150, 44, 89, 98,225,227,227, 67,126,253,245, 87, 28, 57,114, 68, 43,149, 74, -251, 83, 74,175,189,235,189, 50,153, 76, 16, 8, 4, 0,128,165, 75,151,130,195,225,240,164, 82,169,128, 16, 34, 36,132, 88, 17, - 66,184,250,151, 9, 48, 41,138,144, 91, 36, 67, 70,174,172, 70, 62,163,201,116,228,206,157, 59, 11, 90,181,106,197,185,119,239, - 30,242,242,242,144,156,156, 76,141,148, 30,190, 86, 98,248,174,174,229,179,114,112, 28,214,210, 94,200, 17,236, 11, 69, 55, 29, -135,187,211,132, 17, 0,230,148,237,222, 75, 8,225, 3, 40,104,218,180,105,207,167, 79,159, 90, 54,109,218, 84,157,152,152,120, -142, 16,226, 1, 96,127,149,211,187,150,150,249, 0,242,143, 31, 63, 14, 0,211, 41,165, 38, 66, 72,235,176,176,176,236,235,215, -175, 99,213,170, 85,185, 0,118, 0,128,216,222,113, 72,160, 45,159, 8,126, 88,133,142, 90,112,182,153,104,149,139, 11,196, 18, -151,247,154,139, 56,224,237,249, 20,109, 93,253, 57, 2, 67,105, 64,120,120,248,117,165, 82,169,141,140,140,212, 77,158, 60,153, -155,148,148,116, 23,192,141,178,105, 77, 3, 59, 17,193,130, 5, 11, 22,127,185,143,214,219, 97, 29,170,246,209,170, 66, 16,252, - 72, 8,201,223,176, 97,195,123, 0,108,142, 30, 61,218,166,113,227,198, 0,128,231,207,159, 91,249,251,251, 63,107,209,162,197, - 83, 0,183, 41,165,167,205, 44, 79,249,131,223,244, 39,213, 47,126,201,146, 37,228,192,129, 3, 6,224,141, 8, 42,123,185,108, - 5,176,181, 38, 63,159, 63, 10, 63, 63,191, 62,159,126,250,169,110,207,158, 61,198,207, 62,251,236, 20,165, 52,233, 93,120, 10, - 11, 11, 55, 77,152, 48, 97, 92, 88, 88,152,173,181,181, 53,137,139,139, 51,237,221,187, 87, 81, 88, 88,184,169,186,115,238,232, - 12,145,221,133, 76,176, 76,117,180,207,168,160,122,214, 79,231, 14,196,243, 59, 55,112,240, 90, 66,113, 82,161,250,226, 61,131, -225,200, 59,138,215,100, 66, 72,203,208,208,208,165,165,165,165,193, 60, 30,239,174, 66,161, 8,167,148,254,250,174,237,164,215, -235,115, 27, 52,104,240,246,117,244, 38,147,137, 82, 74,121, 6,131, 65,228, 80,106, 58, 19,182,101,207,135,147,253,109,133,249, -249, 50,252,144,164,208, 86, 90,108,241, 59,228,229,229,125, 53,109,218,180, 15,194,194,194,236,109,108,108, 72,124,124, 60,141, -140,140, 84,230, 21, 20,172,127,151, 50,150, 20, 21, 94,140, 62,118, 52,164,139,206, 64, 34, 82,139, 41,195, 37,231, 42,149,245, - 18,128, 75,101,131,105, 60, 33,100, 4,128,147,148,210, 31,106,228, 44, 41,185, 8, 64, 48, 98,196, 8,196,197,197,141, 2,240, - 35,128,195,171, 87,175,238, 16, 26, 26,138,240,240,112,132,133,133,245, 1,112,161,184,168,224, 76,212,225,131, 99,123,232,245, -156,136,180, 98, 19,151, 67,206, 86,201,153,159,123,233,220,165,152, 33,109,109,220,201,119, 23,110,152, 74, 76,244,225,164, 73, -147,138,116, 58,221, 5, 0,219, 0,196, 81, 74,217,213,133, 44, 88,176, 96,241,127,107,248,249,174, 10,225,245, 93,173, 66,171, -236,228, 24, 0, 49,132, 16,215,206,157, 59,175,181,181,181, 21, 25,141, 70, 20, 22, 22,190, 6,176,165,204, 58, 83, 23, 68,202, -229,242,197, 66,161,112,231,159, 84, 57, 13, 33, 68,210,180,105, 83, 30, 0,109, 21,251,255, 28,145, 69,113, 60, 57, 41,217, 6, - 20,199,203,255,149,148,148,116, 56, 48, 48,112,104, 98, 98,226, 47,148,210,179,127,160, 14,175, 8, 33,173,230,205,155,247, 49, -128,161, 0,126, 42, 44, 44,220, 84,157, 35,124, 57,174,105, 13, 33,109, 25,102,220,195,180,156,217, 58, 19,173, 47,224,112, 94, -170, 74,233, 55,119, 13,134, 31,255, 96,155, 38, 3,152, 82,182,253, 97,228,231,231,215, 26,228,147, 16, 66,174,189,200,186,157, -144, 33,173,106,177, 69, 85,101,204, 38,132,180, 92,184,112,225, 66,147,201, 52,146,195,225,156,200,207,207,175,181,205,170,181, -228,233,140, 11,118, 94,185,199,223, 98, 52,245, 22,114, 56, 23,148,122,227,178,106,174,123, 16,128, 89,209,225, 95,188,120,241, -125,120,120,120,243,176,176, 48,124,251,237,183,229,203, 46, 99,194,194,194,164, 70,163,209, 43, 60, 60, 28,187,118,237, 50, 0, -128, 86,111, 90,180,231,250, 67,206, 78,147,105, 0,143,195, 57,167,213,155, 22, 85, 41,202, 53,134, 57,219,162,206,151,150,154, - 76,125,184, 32,231,178,117,166,149, 90, 45, 77, 99, 31,115, 44, 88,176, 96,241,191, 9,198,220, 3, 41,165, 57,127,198,139,151, - 82,154, 2,192,102,249,242,229,127,166,146,148,254,213, 13,245,105, 22,253, 26,192,215,159,126, 17, 89,249,186,119,129,218,131, -138,154, 43,182, 0,252,167,108, 51, 27,247, 12,134, 67,168, 38,164,196,223,236,107,128, 2, 56, 90,182,153,123, 78, 38,222,228, -178, 92,240, 71,175,255,176,132,102,227,205, 42,194, 63,179, 78,177,120,179, 10, 5,175, 95,191,174, 92,207,199,101, 27,202, 99, -202,221, 81, 81, 41,128,113,102,150,115, 20,251,232, 98,193,130, 5,139,255, 29, 84, 53,117, 88,103,161,197,130, 5, 11, 22, 44, - 88,176, 96,193,162,202, 15,235,106,125,131, 9,128,222,213,156,100,182, 99, 59, 33,164,247, 59, 20, 42,134,229,100, 57, 89, 78, -150,147,229,100, 57, 89,206,127, 23,103,109,220,255,215, 11,235,254, 47, 84,216, 95, 25, 87,130, 93,250,202,114,178,156, 44, 39, -203,201,114,178,156, 44,231,191,118,227,176, 6, 63, 22, 44, 88,176, 96,193,130, 5,139,119, 7, 33, 36,168,236,167, 27, 33,100, - 70, 89, 42, 30, 0,213,248,104,241,218,175,205, 53, 24, 12, 18, 0, 96, 24, 70,170,191,187,210,173,166, 11,240,128, 94, 6,224, -251, 50,194,233,250, 55,203,225,223,230,188,100, 48, 24,236,203, 56,139,244,119, 87,246,171,145,179,221,154, 11,191, 57,254,206, -138, 62, 85,212,140,203,107,183, 38,235,173,178,186,155,221, 50,101, 57, 18,255,234,114,254, 93, 56,255,205,224,119, 88,155,171, -215,191,233, 71, 60, 30, 35, 45,189, 83,115, 63,226,183, 95,147,245,155,227,111,175,112,169,137,211,202, 82, 88,208,208,195,249, -171,154, 56, 83,178,242, 23,170, 74, 52,142, 53,113,214,117,108,122,185,185,245, 50,150,141, 77, 46, 48, 61, 35, 43,235,210,255, - 82, 95, 34,132,180, 1,176, 18,128, 77,165,127,199, 81, 74, 63, 98,123, 37, 11, 22, 44,254, 70,168, 54, 5, 79,149, 66,203, 96, - 48, 72, 30,156, 8,131, 74, 11,244,154,184, 70,226, 59,108,215,239, 86,181, 25, 52, 69, 2, 89,124,100, 32, 87,175,176,119,102, - 74,109,178,178,178, 72,217,131,243,123, 0,222, 85,112,218, 63, 56, 17,134, 18, 29,208,109, 76,184,189, 55, 96,147,199,231,127, -108, 41, 18,245, 84,171,213,205, 1,192,210,210, 50, 94,173, 82, 93,113, 46, 45,221,244,246,241,213,213,172,114, 89,223,155,176, - 70,210,100,216,174,121, 70,147, 73,240,250,222,206,110,154,252, 36,134,103,208,238, 88, 14,156, 11, 3,140,230,180,212,111,174, - 59,114,153, 35, 15,120, 79, 96, 97,209,210,206,222,190,171,137,210,166, 38,147,137, 24, 13,134, 4,133, 92,126,195,100, 48, 60, - 50,232, 84,142, 15, 78,125,110,170,169,156,111,215,101, 36,192,156, 0, 66, 68, 98,113, 79, 46,143,215, 9, 0,140,122,253,175, - 42,165,242,202,112,224,152, 57,117, 55,183,125,222,245,248,127, 27,244,122,131,228,229,133, 48,104,245, 64,208,136,207, 37, 45, -198,253,112, 8, 0,116,210, 71, 46,202,164, 83,237, 1, 64,212,112,208, 29,161,107, 80, 46, 0, 48,175,178, 37,207,163, 87, 64, -171, 7,154, 14, 10,151,212,198, 57, 57,244,136,227,146, 25,193, 66, 0,184,120,252,235,198,151,163,190, 29, 0, 0,239, 5,207, - 58,215,119,196,220,231, 0,176,225,187, 40,199,195,159,143,170,145,211,188,177, 41,231,203,147,162, 27,233, 20,217,118, 94, 34, -198, 53, 41, 41,137, 3, 0,238,238,238,102,141, 77, 79,192, 54, 27,152,195,225,114,187, 54,108,212, 40, 8, 0, 77,121,241, 34, -214,104, 48,220,116, 3,118,252,201,125,105, 30,165,191, 13,206, 90,150, 11,147, 5, 11, 22, 44,254, 78, 56, 83, 38,174,206,188, -189,163,218, 85,135, 42, 45,112, 45, 25,232,222,161, 5,102,140,123, 95, 92,121,223,177, 93,225,222, 73,247,126,106,178,231,135, - 77,156, 22, 45, 90,224,229,203,151,102,149,162, 68, 7, 92, 77, 2, 32,123,106, 93, 36, 18,189,216,188,113,163, 77,159, 62,125, - 24,119,119,119, 16, 66,144,147,147,211, 33, 38, 38,166,205,130, 5, 11, 62,132,236,105, 81,137, 14,197, 87,205, 8, 1, 90, 94, -214,230,141,235, 97,229,220, 81,182, 0,176,124,226,142, 54,247,158,229, 58,188,120,241,162,215, 39,159,124, 82,192,189,114,229, - 91, 39, 96, 95, 46,144, 97, 78, 57, 15,156,190, 99, 97,155,253,163,239,248,185,115,143, 55,106,212, 72,236,227,227, 67,172,173, -173,193,229,114, 81, 84, 84,228,253,228,201,147, 1,119,239,222, 85,197, 92,251, 94,112,255,238,144, 20,169, 69,123,141, 89,117, - 87,103, 89, 92,180,182,142,159, 48,124,184,231,168, 81,163, 44, 26, 54,108, 8, 0,120,241,226,133,223,177, 99,199,198, 28, 63, -126, 60, 20,234, 44, 67,137, 14,154,218,234, 94,193, 9,192, 2,232,100, 39,145,140,231,242,120,205, 13, 6,131, 71,153,181,225, -181, 81,175,143,151, 73,165, 7,223, 62,158,197,239,161,213, 3, 79,179,129,222, 93,131, 48, 33,184,183, 8, 0, 62, 25,189,182, -195,171,212,100,190, 78,167, 67, 99,255,166,157, 63,251,252,171, 11,224,112, 16, 17, 21, 83,113,188, 57,156,113, 79, 95, 34,236, -179,205,200,122,124,172,131, 81,158,220,179, 88, 33,231, 2,128,141,173,109,240,177,200, 31,175,184, 7,134,220, 78,206, 47, 53, -139,179,166,177,121, 62,114,187, 91,230,147, 43,205,190,185,184,151,231,237,237,141,199,143, 31,215,109,108,202,159, 89,155,220, -220, 18, 54, 45, 94,236,218,173, 91, 55,136,197, 98, 48, 12, 3,131,193,208,251,230,205,155,189,195,194,194,102, 65,254, 76,101, -238,216, 52, 3,155, 8, 33, 61, 39,207,152,231,246,254,208, 16, 4,247,239,204,118, 68, 22, 44, 88,252,173, 64, 8,153, 81,182, -234,176, 98,229, 97,229, 85,136, 85, 10, 45,134, 97,164,125, 38,173,147,116,109, 31,128,123,143,158,203,211,210,179,149,229,251, - 10,227,143, 53, 30,218,217,163,217,245,235,215,160,213,106,241,235,175,191,226,209,163, 71, 72, 77, 77,197,204,153, 51,181, 12, - 48,189, 26,206,162,110, 99,194,237, 33, 79, 18,251, 9,158,213,143, 73, 76,228,106, 52, 26, 92,191,126, 29, 69, 69, 69, 16, 8, - 4,240,244,244, 68,223,190,125,153,196,196, 68,135, 94,125,250,219,118,235, 63,246, 37,108,253,148, 12,195, 20, 85, 87, 65,134, - 97,164,189, 38,174,145, 52,243,171,135, 23,105, 89,242,149,159,239, 81,154, 76,148, 73, 73,125, 85,122,237,218, 53, 4, 5, 5, -225,210,165, 75,142,133,133,133,159,238,216,177, 99, 37,239,139,111,182,234,117, 5,139,106,224, 43,234, 54, 38,220,222, 81,122, -212,231,242,249,147,252,248,248,120,254,206,157, 59, 81, 80, 80, 0,129, 64, 0, 59, 59, 59,184,186,186,162,113,227,198,100,249, -242,229,226, 65,131,226,241,159,233, 33, 62,165,190,211,158, 85, 87,206,138,186, 43, 95, 89, 57, 41, 46, 54,140, 58,115,134,211, -165, 75,151,223,124,182, 55,104,208, 0,253,250,245,179, 24, 63,126,124,195, 81, 99,198,153,186, 13,156,252, 2, 98,159,146, 90, - 57, 85, 25,150,142, 37,183,220,123,143, 25,115, 42, 60, 60,220,206,213,213, 21, 34,145, 8, 0, 32,151,203, 61,211,210,210, 58, -132,134,134,142,184, 19, 23,201,116, 27,148,145, 5,145,151,186,166,246,252,183,130,199, 99,164,229, 86, 36,107,145,101, 81, 70, -102,174, 10, 0,116, 58, 29,116, 58, 29,180, 90, 45,102,207,154,201,157, 62,162, 93, 35,159,174,243, 30,166,190,206, 45,108, 26, -115,219,161,252,220,218, 56,153,146, 84,153, 44,253,231,233, 97,139, 23,187,186,184,252,119, 70, 48,226,192, 1,110, 97, 97, 97, -239,176,176,176,102,212,170,135,172,233,160,112,187,154, 56,107, 26,155,178,231,103,234,127, 54,183, 95,203, 93,159, 71,195,104, - 52,226,214,173, 91,184,126,253, 58,190,250,234, 43,122,238,220, 57,185,141, 72, 84,203,216,124,102,221,197, 45,199,247,139, 47, -142, 19,161, 80,136,159,126,250, 9,137,137,137,224,112, 56,104,209,162, 5, 38, 76,152,128,222,189,123,187,206,152, 49,147,118, -235, 63, 58, 5,182,254,197,127,164, 47, 17, 66, 56, 0,230, 45, 11,251,194,109,226,180, 57,216,240,217,114, 86,104,177, 96,193, -226,111,107,205,170, 54,196, 3,165, 20,209,209,209,180,108,235, 78, 41, 5, 5, 56, 13,134,237, 58,124,244,190,233, 76,131, 97, -187, 14, 83,128, 67, 1,142, 13, 80,175, 85,171, 86,122,153, 76, 70,239,222,189, 75,103,207,158,173,218,186,117,235,149, 51,103, -206, 28, 51,148,150,238,118,119,115,251,146, 2,156, 42, 61,239, 1,142, 15, 96,107,101,101,149,151,158,158, 78,207,158, 61, 75, - 87,173, 90, 69, 15, 30, 60, 72,207,157, 59, 71, 99, 98, 98,232,185,115,231,232,225,195,135,105, 92, 92, 28,125,254,252, 57, 21, -137, 68,121, 62,128,109, 13,156, 92, 10,112, 27, 15,219,185,232,248, 61,125,184,255,176, 93, 11, 40,192,181, 7,154,180,106,213, -202,120,236,216, 49, 26, 17, 17, 65,127,248,225, 7, 26, 23, 23, 71,243,243,243, 41, 35, 20,229,149,159, 87, 93, 57, 41,192,241, -240,240,200,147,201,100,212,203,203,139, 10, 4, 2,234,226,226, 66, 27, 55,110, 76, 59,116,232, 64, 7, 12, 24, 64,199,141, 27, - 71, 63,253,244, 83, 42,147,201,168,133,133, 69,110,249,121,213,113, 6, 1,150, 34,145, 40,253,193,131, 7,180, 58,168,213,106, -154,159,159, 79, 47, 92,184, 64, 69, 34, 81,122, 16, 96, 89, 19,167, 37,208, 58, 48, 48, 48, 47, 63, 63,159,150,150,150,210,244, -244,116,250,228,201, 19,154,152,152, 72,211,211,211,169, 90,173,174,224,126,254,252, 57,245,245,245,205,179, 4, 90, 87,203,249, -111,222,202,251,196, 91,155,183,139,203, 0, 87, 87, 87,245,241,227,199,233,235,215,175,233,254,253,251, 41, 7, 88,251,187, 99, -107,224, 20, 0,125,187,116,233, 98,188,117,235, 22,125,248,240, 33, 93,186,116, 41,237,215,175, 31,237,223,191, 63, 13, 11, 11, -163,153,153,153, 52, 51, 51,147, 14, 24, 48,192, 40, 0,250,214,214, 63,171, 26,155,182,128,247,160, 65,131,212,165,165,165, 52, - 37, 37,133, 54,111,222, 60,147, 11,140, 23, 1,205,186, 3,194,218,250,167, 7, 96,239,230,230,150,125,235,214, 45, 26, 21, 21, - 69,125,124,124,242,184,192,100, 27,160,129, 13,208,128, 11, 76,110,208,160, 65,222,173, 91,183,104, 65, 65, 1,245,246,246,206, -246, 0,236,223,181, 47,225, 77,130,237,189,203,194,190,160,207, 50, 85,116, 89,216, 23, 20, 64,122, 89, 64,215, 75,108,159,100, - 55,118,251,247,109,191,211, 34,255,180, 85,135, 3, 7, 14, 36, 0,174,214, 36,217,212, 92,238,186, 13, 27, 54, 48, 26,141, 6, -123,246,236, 41, 30, 57, 98,196,209,238, 93,187,166,212,247,241,145, 17, 14,167,214,220,133,121, 66,225,252, 13, 27, 54,216,233, -116, 58,220,191,127, 31,109,218,180,129,171,171, 43,196, 98, 49,196, 98, 49, 36, 18, 9,252,253,253, 33,149, 74, 97,109,109,141, - 37, 75,150,216,230, 9,133,243,107,227, 53,153, 40, 3, 0, 70,147, 73,192, 7,102,248,182,109,123, 63, 52, 52,148,227,232,232, - 8, 7, 7, 7,136,197, 98, 36, 38, 38, 66,167,211,193,202,210,202,172, 32,173, 28, 14,135, 35, 22,139,113,249,242,101,204,155, - 55, 15,157, 58,117,130,157,157, 29,172,173,173,209,188,121,115,244,237,219, 23,211,167, 79, 71, 74, 74, 10,136, 25, 78, 37, 9, - 12, 51,103,250,244,233,146,160,160,160, 42,247,107, 52, 26,200,100, 50,228,229,229,193,211,211, 19, 33, 33, 33,146, 4,134,153, - 83, 29,159, 35,224,234,233,231,119,234,238,221,187, 78, 34,145, 8, 17, 17, 17, 56,121,242, 36,206,159, 63,143,179,103,207, 34, - 58, 58, 26, 63,253,244, 19,242,242,242, 0, 0,126,126,126, 56,114,228,136,147, 88, 34,137,118, 4, 92,217, 15, 16,243,240, 42, - 55,247, 98,243,156, 28,167,241,227,198,221, 80, 42,149, 24, 63,126, 60,214,173, 95,191,156,103,102, 52,122,127,192,214,193,205, -109,223, 23, 95,124,193,201,201,201,193,240,225,195,243, 55,173, 95, 63, 53,246,194,133,134, 15,206,159,111,184, 46, 60,124,106, -247,238,221,243, 51, 51, 51,113,224,192, 1,142,139,183,247, 62,127,192,182,174,229, 44, 6,230,109,217,178,197, 66,163,209,160, - 79,159, 62, 41,166,248,120,127, 3,240,163, 18, 72,188, 10,148,214,118,126, 54, 48,103,201,146, 37,174, 66,161, 16, 31,127,252, -113,126,201,171, 87, 1, 6,224, 7, 57,144, 38, 7,210, 12,192, 15,197, 47, 95, 6, 76,156, 56, 49, 95, 40, 20, 98,243,230,205, -174,217,255, 77,186,109,174, 5,171, 13, 33,228, 20, 33,228, 26,128,172,201, 51,230, 77, 14,106,215, 17, 7,118,239,192,231,225, -159,236, 3, 48,146, 16,114, 16,192, 34,182,231,177, 96,241,239,132, 57, 90,228,127,117,250,176,218,153,178, 10,187,215,153, 51, - 20, 64,143,154,136,236, 29, 29,219, 4, 4, 4,224,250,245,235, 8, 12, 12,188,107,103,103,103,224, 11,133,224,241,120,160,166, -218,115, 68, 91,138, 68,189,122,247,238,205,220,190,125, 27,190,190,190,176,180,180, 4,143,199,251,205,198,231,243,225,230,230, - 6,133, 66,129, 94,189,122,241,182,109,219,214, 11, 90,237,103,181,190, 16,147,158,136,243,110,127, 49,238,251,253,251, 26,116, -235,214, 13,114,185, 2, 38,147, 9, 86, 86, 86,208,233,116, 96, 24,230,205, 20,144,158, 42,204,105, 52,163,209,104,228,114,185, -240,245,245,197,186,117,235,160,209,104,192,231,243, 1, 0, 10,133, 2, 50,153, 12, 79,158, 60, 65, 90, 90,154, 89,249, 20,173, -109,109,223, 31, 53,106,148,160,170,125, 90,173, 22,114,185, 28,114,185, 28, 50,153, 12, 26,141, 6, 29, 59,118, 20,156,137,142, -126, 31, 5, 5, 85, 38,150,214, 90, 88,140, 56,112,224,128, 68, 32, 16, 64,173, 86,163,184,184, 24, 25, 25, 25,120,245,234,149, - 70, 42,149, 26,172,173,173, 57, 62, 62, 62, 28,161, 80, 40, 28, 54,108, 24, 81, 40, 20, 32,132, 96,208,160, 65,142,135, 34, 34, - 70, 1,248,138, 29,210,230,225, 34,160,109,173,211, 13,110,223,174,221,229,187,247,238, 5,205,159, 63, 31,113,113,113, 95, 88, - 69, 70, 94, 43, 1, 30,213,116,110, 10, 48,231,203, 74, 2,134,190,122, 21, 88, 10,228, 85, 58, 36,205,231,229,203,243, 19, 39, - 78,124, 28, 23, 23,231,180,121,243,102,215,145,195,135,207, 1,176,182, 46,101,180,182,181,109,235,230,230,134,115,231,206, 33, - 61, 53,245, 19, 3,160,174,203,249, 28, 46,183, 75,183,110,221,240,211, 79, 63, 33,243,213,171, 79, 12,191, 45,227,155, 15, 37, - 32,143, 73, 73,249,100,223,190,125,123,167, 76,153, 2, 46,195,116,129,193, 80,151,203,252,206,241,125,202,204,249,216,247,221, -182,125, 0,166, 81, 74, 77,248,147, 82, 90,177, 96,193,226,111, 58, 7,103,134, 22,249,187,136,173,242,169,196, 58, 89,180, 36, - 18,137,135, 88, 44, 70, 86, 86, 22,154, 54,105, 34, 21, 10,133, 16,240,120,176, 16, 8,204, 42, 68, 73, 73, 73,160,187,187, 59, -228,114, 57,156,156,156,192,231,243, 43, 54,129, 64, 80,241,187,181,181, 53, 56, 28, 14,188,189,189, 81, 82, 82, 18, 88, 43,111, -238, 19, 73,228,182, 89,179,111, 93, 59,215, 96,248,240, 96,216,219, 59,192,203,203, 19, 18,137, 4,150,150,150,240,242,242, 66, -195,134, 13,233,166, 77,155, 96, 37,105, 97,214,131,188,178,120, 98, 24, 6, 70,163, 17,185,185,185,120,246,236, 25,226,226,226, -112,235,214, 45, 60,124,248, 16,197,197,197, 48, 39,111,117,137, 90,221,146, 97,152, 42, 69,150, 76, 38,131, 76, 38,171, 16, 90, -121,121,121, 72, 75, 75,131, 82,165,106, 85,131,232, 13, 14, 8, 8,224, 2,128,165,165, 37, 90,181,106,133, 93,187,118, 25, 78, -159, 60, 57,186,217,173, 91, 14, 94, 23, 46,216,125,191,115,231,232,144,144, 16,227,237,219,183,161, 80, 40,240,244,233, 83, 56, - 59, 59, 51, 2, 11, 11, 54, 87, 94, 29,241, 0, 80, 57, 21, 23,247,239,212,169,211, 75,185, 92,142,141, 27, 55,114,120,214,214, -223,133, 3,220, 26, 79,228,114, 59,119,235,214, 13,167, 78,157, 66,214,171, 87, 75, 95, 85, 33, 96, 94, 1,121,233, 41, 41, 75, -247,237,219,135,190,125,251,130, 48, 76,157, 29,149, 58,116,232, 16, 96, 50,153,240,248,241, 99,216, 1,119,234,122,126,195, 70, -141,130,202, 45,191, 34,224, 70,117,199,137,128, 27,177,177,177,176,180,180, 68,211,102,205, 90,215,241, 50,155, 8, 33,217, 83, -102,206, 71,212,249, 95, 0, 0,251,190,219,150, 91, 73,100,177, 96,193,130,181,104,253, 45, 45, 90,229,194,170,242, 86,241, 33, - 91, 71, 18, 0, 0,143,199,131, 64, 40,132, 64, 32,120, 35,144,132,194,186, 40, 62, 88, 88, 88, 84, 8,171,202, 2,171,242,239, - 86, 86, 86,102, 9, 24, 0, 40, 74, 62,223,117,218,212, 41, 2,161, 80, 8,157, 78, 11, 74, 41,132, 66, 11,216,217,217,193,215, -215, 23, 10,133, 2,157, 58,119,215,102,200,248,209,142, 77,135,197,189, 75, 3, 26, 12, 6,168, 84, 42, 20, 21, 21,161,176,176, - 16, 10,133, 2,106,181,218,236,165,232, 38,147,137,155,145,145,129, 31,127,252, 17, 5, 5, 5, 0,222, 56, 90,151,139,171,242, -159, 47, 95,190, 68, 68, 68, 4, 82, 83, 83,235,116,127,186,118,237,138,232,232,104,110,143, 94,189,118, 95,242,241,201,186,228, -227,147,213,163, 87,175,221,167, 78,157,226,122,120,120, 32, 45, 45, 13,247,239,223, 71, 81, 81, 17, 40,165,236,250,249,119,192, - 11,160,168,164,176,112,202,242,229,203,169, 88, 44,198,198, 47,191,108,185, 22, 24,107,174,128,177,173, 65,192,216,254, 49, 1, - 3, 74, 41, 76, 38, 19,140, 70,227, 59,213,141, 16, 66,120, 60, 94, 93, 67, 43,144, 58,240, 87, 56,190, 47,249,116, 29,206,254, -116,172,124, 87, 18, 43,178, 88,176, 96,241,119, 71, 77,185, 14,153, 74, 10,178,226,103,117,200,205,205,125,173, 82,169, 26,248, -248,248, 32, 51, 51, 83,226,237,237,253, 74,192,227,129, 47, 16,128,112,106,215, 4, 86, 86, 86,143,179,178,178, 58,123,120,120, -192, 96, 48, 84,136,170,183,167, 14,203,173, 52, 15, 31, 62,132,149,149,213, 99,104,106,140,156, 0,163,174,168, 94,235,214,173, - 43, 44, 67,118,118,118,176,179,179,133, 80,104,129, 21, 43, 86,152, 54,111,218,180,195,251,189,112,249, 7, 11,150,211,229,107, -119,255,169,141,107,238,139,201,202,202,234,177,151,151, 87, 71, 91, 91, 91, 68, 69, 69, 33, 45, 45, 13, 69, 69, 69, 40, 41, 41, -129, 86,171, 69, 73, 73, 9,116, 58, 29, 44, 44, 44,208,172, 89, 51,216,216,216, 32, 38, 38,230, 49,180,218,170,197,101, 65, 65, -212,227,199,143, 59,182,107,215,174,194,162,210,179,103, 79,210,179,103, 79,167, 10, 43, 90, 73, 9,242,243,243,113,247,238, 93, -196,196,196,128, 16,130,164,164, 36,163, 86,173, 62,204, 14,139,119,131, 6,248,149,187,111,223,222, 15, 63,252,112,106,231,206, -157, 97, 4, 6, 0,136,248,255, 37, 96,202,113,235,214,173, 39, 70,163,177,115,227,198,141, 33, 3,218, 3,248,169, 78, 34, 50, - 57, 57,214, 96, 48,244,106,217,178, 37,162,142, 30,237, 10, 32,173,170,227, 84, 64,215,160,160, 32,168,213,106, 60, 77, 72,120, - 80, 7,145,181,123, 89,216, 23,147, 39, 78,155,131, 3,187,119, 96,223,119,219, 50,246,238,218,234, 5, 51,252,199, 88,176, 96, -241,175,178,102,213,170, 69,254, 23, 81,149,143, 86,185,248, 98,234, 66, 36, 47, 42,122, 16, 27, 27,219,160,117,235,214,216,189, -123,119,187, 78, 29, 59,190,230, 11, 4, 6, 1,159, 15,142, 25, 47, 18,181, 74,245,243,207, 63,255,220,126,216,176, 97,204,237, -219,183,225,234,234, 90, 33,180, 13,123,141, 42, 0, 0, 32, 0, 73, 68, 65, 84,202,127, 50, 12, 3, 74, 41,172,172,172,112,226, -196,137, 82,181, 74,245,115,173,214, 34,163,201,200, 41, 19,122,148, 82,200,100, 50,240,249,124,124,245,213,102,108,223,180,105, -156, 17, 56,230, 39,114, 94, 12,192,226,255,219, 11,186,164,228,242,217,179,103,219,132,134,134,242, 60, 61, 61, 33,147,201, 80, - 84, 84,132,130,130, 2, 40, 20, 10, 40, 20, 10, 20, 21, 21, 65, 38,147,193,194,194, 2,113,113,113,122, 77, 73,201,229,234,248, -132, 26,205,241, 73,147, 38, 45,137,141,141,117, 99, 24, 6,122,189, 30, 38,147, 9, 38,147, 9,165,165,165, 72, 78, 78, 70,124, -124, 60, 18, 19, 19, 81, 88, 88, 8, 30,143, 7, 46,151,139,135, 15, 31, 22,137,244,250,163,236,144,126,119,240,128,168,155, 55, -111, 78,157, 48, 97, 2,220, 61, 61,187, 35, 51,211, 44, 1,115,178, 6, 1, 35,127, 7, 1,243, 27, 1, 84, 92,124,239,229,203, -151,157,123,244,232, 1, 55, 79,207, 47,154,101,102, 94, 74,168,131,159,150,209, 96,184,113,243,230,205, 94, 19, 39, 78,196,238, -221,187,191,112,126,249,242,124,222, 91,211,156,206,128,115,253,134, 13,191,152, 60,121, 50, 46, 94,188, 8,163,193,112,163,134, -135, 78,229,136,239,245, 38,207,152,231,245,150,227,251, 46, 66,200, 92, 0, 27,217, 30,197,130, 5,139,127,178, 69,171, 78, 83, -135,150, 70,227,178, 69,139, 22,233, 57, 28, 14,130,131,131,173,127, 58,117, 42,228,225,163, 71,190, 82,169,212,206,104, 52,214, -202,229,172,213,110, 93,180,104,145, 76,167,211,193,223,223, 31,133,133,133, 48, 26,141, 96, 24, 6, 12,195,128, 16, 2, 14,135, - 3,177, 88,140,216,216, 88,236,221,187, 87,225,172,213,110,173,245, 37, 97, 52, 62,142,136,136, 0,151,203,165, 22, 22, 22, 32, -132,128, 97, 24,108,222,188, 89,186, 29,136, 2, 0, 46,135,163, 3, 0, 14,135,152,235,189, 91,235,188,165, 64, 32,128,233,205, - 34,128, 90,143,181,215,106,183,108,216,176,161,248,233,211,167, 80,169, 84, 21,214, 55,165, 82, 89,225, 92, 47,147,201, 64, 8, -129, 74,165,194,169, 83,167,138,237,181,218, 45,213,241, 21, 0, 57,153, 73, 73, 67,218,181,107, 87,240,242,229, 75,200,229,114, - 60,126,252, 24, 49, 49, 49, 56,114,228, 8, 46, 94,188,136,228,228,100, 24, 12, 6,120,120,120,128, 82,138,147, 39, 79,202, 13, -197,197, 3, 10,128, 28,118, 88, 84,143,122,174,174,189, 92, 36,146,116,103, 39,167,204,122,174,174,189,222,222,111, 11, 60,127, -254,252, 57, 12, 6, 3,124,125,125, 29,106,242,211,162, 6,195,205,155, 55,111, 98,226,196,137,240,106,208, 96,189, 15,224,252, -246, 49, 62,128,179, 79,195,134,235,203, 5, 12, 53, 24,110,214,181,204,214,192,182,197,139, 23,171,249,124, 62, 34, 35, 35,125, -245,141, 26, 37, 50,192, 88, 49,208,164, 7,192,175,237,124, 55, 96,199,167,159,126,154, 67, 8,193,193,131, 7,157,108, 27, 54, -124,194, 0,147,108,129,122,182, 64, 61, 6,152,100,219,176,225,147,200,200, 72, 39,131,193,128, 5, 11, 22,228,184, 1, 59,106, -160,156, 71, 41, 29, 76, 41,237, 70, 41,245,218,187,107, 43,206,254,116,172, 92,100, 77,163,148,222,165,148, 78,160,148, 62, 97, -123, 28, 11, 22, 44,254,201, 32, 85,249, 65,241,218,175,205, 5,168,164,123,135, 22,184,247,232,153,220,201,222,230, 66,249,190, -194,248, 99,141,223, 11,180,105,241,205, 55,223,128,199,227, 33, 35, 35, 3, 9, 9, 9,176,177,177,193,184,113,227,180,234,226, -226, 33,229,185, 14, 9, 33,189, 41,165, 49,101,156,111,242,169,201,147,196, 13,153,184, 6,231,207, 70,115,109,109,109,161, 84, - 42,193,225,112, 96, 97, 97, 1, 43, 43, 43, 88, 90, 90,226,254,253,251, 24, 56,120,168, 49,207,170, 91, 69,192,210,242,124,106, -149, 57, 65, 8, 23, 0,218, 3, 86,177,192,199, 18,119,247, 69, 43, 87,174,180,236,215,175, 31,248,124, 62, 60,235,249,229,248, -246,223,184,141,195, 33,134,204, 2,197,138,134,245,220,109, 19,146,210, 0,144, 55, 57, 17,203,114, 29, 86, 85, 78,111,221, 53, -223, 19, 63,108,178,105,213,234,141, 63,186, 76, 38, 67,110,110, 46,164, 82, 41,100, 50, 25, 84, 42, 21, 0, 32, 58, 58, 26,103, -175, 39, 42,212,158, 33, 41,213,149,243,191,117,127,102,237, 94,122,167,254,161,136, 31,184,206,206,206,200,205,205, 69, 94, 94, - 30,100, 50, 25,212,106, 53,140, 70, 35, 10, 11, 11,177,103,223, 15,198, 2,113,183,212,242,128,144, 53,114,170, 50, 44, 29,148, -191,120, 4, 53,243,161, 83,167, 78,181,182,177,177,129,201,100, 66, 81, 81, 17,210,211,211,241,242,229, 75, 92,191,126, 93, 37, -149,233,160,114,234,147, 89, 30,176,180,202,246,252,243, 76,168,127, 63,206,178,190, 4, 0,238,110,110, 89,175, 94,189,146, 24, -141, 70,120,120,120, 24,100,133,133,235, 5,192, 69,107, 32, 27, 0,205, 7, 86,110,217,182,109,202,208,161, 67,209,182,109,219, -140,156,220,220,250, 85,245, 37, 16,194,245, 7,108, 75, 60, 61,227,239,222,189,235,154,158,158,142,137, 19, 39,230,191,122,241, - 98,105,185,191,150, 28,232,234,211,176,225,250,200,200, 72,167, 6, 13, 26, 32, 48, 48, 48,199, 34, 61,189,249, 51, 64, 94, 77, -255,172,118,108,202,158,159,169, 63,107,120, 64,219,217,179,103,195, 96, 48,224,250,245,235,184,115,231, 14, 94,189,122,133, 95, -126,249, 69,102, 35, 18,141, 46,207,117, 88, 93,255, 28,224,167,242, 61,120, 48,130,240,249,124,236,219,183, 15,177,177,177, 0, -128,160,160, 32, 76,158, 60, 25, 6,131, 1,227,199, 79,160,103,158, 89,166,212,212, 63, 9, 33, 1, 0,190,196, 27,145,215,150, - 82,106, 65, 8,201, 2,224, 85, 23,159, 44,182,127,178,156, 44,231,191,135,243,159,138, 90,115, 29,174,249, 22,182,191, 77,243, - 49, 61,235,216,174,112,166, 75,215,110, 77,194, 87,133,113,218,181,107, 7, 47, 47, 47, 4, 5, 5, 33, 61, 61, 93,104,103,103, - 87, 91, 62, 53,101,183,254, 99, 95,182,104,209,194,110,233,210,165,182,125,251,246,229,121,121,121,129, 82,138,216,216, 88, 68, - 69, 69,149,238,222,189, 91, 81,226, 50, 88,246,224,202,143, 74,115,242,169,221, 1, 74, 0,172,246,204,202,250,110,206,172, 89, - 97,173, 90,183,158,186,106,213, 42,142,216,202,146,183,110,197, 52, 11, 0, 88,243,245, 17,219,161, 33,227,176,165, 17,208,125, -108,213,121,228, 42,151, 51, 61,115,250,171,247,135,247,106,244,241,220, 41,198, 81,163, 70,137,108,108,108,224,229,229, 5,123, -123,123,164,164,164, 32, 51, 51,147,158, 62,125, 90,121,235,225,115,222,201,139,247, 94, 89,216,186,153,147,151,176,184, 91,191, -145,169,239,191,255,190,253,164, 73,147,172,219,180,105,195, 19, 10,133, 16, 10,133,200,205,205, 69,114,114,114,233,233,211,167, -149, 37,146, 1, 69, 15,174, 68, 22,155,153,235, 80,221,109, 76,120,242,141, 75,171, 22,196, 63,126, 60,193, 4,180, 44, 45, 45, -245, 48, 26,141,132,195,225,100,155, 76,166,199,165,197,197,123,181, 65,171, 54,179,185, 14,205,131,209,104,228, 27,141, 70,200, -100, 50, 92,186,116,137,121,241,226,197,202, 71,143, 30,173,204,202,202,130, 94,175,199,136, 17, 35, 16, 20, 20,132, 43, 87,174, - 32, 47, 55,247,116, 77, 92,207, 0,185, 48, 51,115,242,244,233,211,207, 69, 68, 68,112, 30, 61,122,228,180,111,223,190, 61, 85, - 9,152, 9, 19, 38,152,114,211,211, 39,107, 1,121, 13,253,179,166,177,153,127, 62,114,251,163, 97,193, 33,205, 86,133,174,228, -117,234,212, 9, 78, 78, 78,232,218,181, 43, 74, 75, 75,237,154, 54,109, 90,219,216, 44,238,214,127,116, 74,203,150, 45, 69,155, - 55,111,118,157, 50,101, 10,230,206,157, 11, 0, 80,171,213,184,120,241, 34, 22, 44, 88,144,147,206,180, 87,213,214, 63,203, 44, - 85,229, 2,236, 26,128,110, 0, 82, 88,199,119, 22, 44, 88,252, 35,173, 86,132, 4, 81, 74, 99, 9, 33,110, 0, 6, 2, 56, 67, - 41,205,174, 86,104, 1,255,205,167,118,227,206, 19, 84, 78,243,241, 6,110, 9, 6,239, 73, 47,102, 46, 90, 31,200,213, 43,236, -121, 68, 99,147,244,252, 57,169, 45,231, 97, 69, 62, 53, 91, 63,165,227,203,195,237,214,173, 89, 51,127,203,150, 45,189,202, 67, - 56, 88, 89, 89, 61, 86,171, 84, 63, 59,107,181, 91, 75,108,253,126,174,107,110,190, 76, 32, 23,192, 44,251, 7, 15,182, 13, 26, - 58, 98,131,133,131, 47,111,249,218,221, 26, 46,135,163, 75,206,202,195,150, 70,128,200,140, 5,146, 37, 58, 32, 94,230,102,200, -117, 12,121,246,233,226,197, 31,175, 89,189,186,157, 88, 44,238, 94,106, 48,248,153, 76, 38,192,100, 74, 42, 81,169,174,209,210, -210,187,218,160,208, 77, 22,182,110,212,236,188,132,118, 77,139, 29, 82,143,181,219,191,119,239,188,163, 71,143,254,174,238,142, - 90,237,182, 18,187,166, 49,230,212,189,242, 49, 26,224, 87, 72,165,191, 86,219, 9,192,230, 58, 52,251,235,195,100,154, 97,111, -111,127,160, 87,175, 94, 22,189,123,247,198,192,129, 3,209,169, 83, 39,152, 76, 38, 80, 74, 81, 92, 92,140, 35, 71,142, 96,195, -134, 13, 73,245,129,213,181,241,105,129,159,133,103,207, 14,104,217,178,229,190,154, 4, 76,153,200,170,213, 39,177,230,177, 41, - 76, 50,216, 14, 73, 27, 51,103, 93, 35,157, 34,219,206,209,202,224, 26,255,228, 49,199,252,177,233, 95,108,140, 61,210,126,196, -240,225,115,184, 12,211,181,108, 5, 36,125,154,144,240,160, 60,169, 52,130, 38, 95,170, 99, 95, 42,143, 93,199, 58,190,179, 96, -193,226,159,138, 32, 0,177, 0, 6, 82, 74,191, 43,115,142,175,222, 25,158, 97, 24,105,185,213,135, 97, 24,105,202,201,153,227, -106, 98,231, 1,189,202, 44, 89,168, 53,215, 97,217,239,105, 64, 49,180,218,207,126, 19,140,180,210,234, 66,222, 91,199,215,165, -182, 69,192, 51, 24,180,131, 32, 77, 0, 78,205,122,195,215,110,205, 39,149,235, 84,237, 75,246, 55,215,229, 23,106,128, 27, 80, - 42,111, 64,169,172,210,105,151,199,240, 11,107, 43,231,219,117, 79, 7, 20,127,180,238, 76, 29,219,135,249, 3,237,249,111,195, -235,252,252,147, 0,196,158,209,209, 46,231,163,163, 71,125,188,112,225, 8, 55,119,247,134, 78, 78, 78,246,214,214,214,156,219, -183,111,191, 52,104, 52,219, 90, 1,251,203,172,169,181, 66, 11,252,236,159,158,222,124,228,240,225,115, 8,195,116,169, 44, 96, -168,193,240,139, 47,176,163, 38, 75,214,187,142, 77, 47,161, 91,175, 50, 75, 22,184,102,142,205,204, 55,229, 88, 11,131, 97, 45, -226,226,170,232,243,117,238, 75,107, 8, 33,197, 96, 29,223, 89,176, 96,241,207,197,153, 50,113,117,230,119,123,254,202,252, 62, - 0,122,179,156, 44,231, 63,133,243,141, 86,129, 13,219,158, 44, 39,203,201,114,178,156,127, 62,231, 63,117, 99, 88, 17,202,130, -133,121,160,111,156,211, 21,108, 75,176, 96,193,130, 5,139,202,168,228,155, 85,249,157,241, 29,240,198,117,167,119, 53, 47,149, -152, 58, 92,160,247, 59,188,180, 98, 88, 78,150,147,229,100, 57, 89, 78,150,147,229,252,119,113,214,198,253,119, 92,205, 72, 8, -153, 81,238,155,245,118, 76, 45, 98,110,154,155,119,188, 48,187,244,149,229,100, 57, 89, 78,150,147,229,100, 57, 89,206,127, 52, -106,178,104,113,216,230, 97,193,130, 5, 11, 32, 60,156,112, 0, 66,128,112, 14,112,140, 11,140,228,190,249,251,221, 49,114, 36, -169, 50,152,237,188,241, 14,214,108,139,179, 96,241,207, 1,165, 52,187,186,164,210,172,143,214,255, 95, 5,236,237,234,234,186, - 11, 0,201,201,201,153, 65, 41, 77,103, 91,229,127, 15,142,142,142,189, 12, 6, 3,228,114,249,207,255,196,250, 53,111, 68,134, - 83, 14,154,254,247,137,129,244,132, 36,122,160,170, 99,155,249,145,137, 32,255,141,197, 69, 76,120, 26,159, 76, 79,212,161,207, -115, 6,244,246,218, 1, 0,231, 98, 50,230,252, 21,113,181, 8, 33,141,157,157,157, 47, 48, 12,195, 24,141,198, 89,185,185,185, -209,213, 11,161,145, 92, 0,224,209, 43,203,156, 28,154, 44,253,232, 67,194, 43,209,238,149,105,213, 42, 57,151,199, 77, 21,242, - 92,111,130,235,113,174, 72,217, 49,161,170,243,143, 30, 61, 90,109, 22,239, 0, 63, 50,160, 73,179,102,131, 91, 7, 90,166,124, -185,181,221,150,238,190, 78,188,151, 25, 15,197, 95,236,148,239,178,113,168, 55,120,210,104,199,104,198,138, 76,216,179, 39, 95, -201,142, 50,243,241, 57, 33, 14,165, 64, 32, 79, 40,244, 50, 26, 12, 46, 4,160, 92,134,201,213,107,181, 25,124, 32,110, 41,165, -178,127, 58, 39, 95, 40,244, 52, 26, 12, 46, 0,240,191, 88, 78, 22,191, 69,181, 66,203,218,218,250, 62,135,195,241,172,156, 12, -183, 60,159, 96,249,255, 42,239, 35,132,192,104, 52,102, 22, 22, 22,182,169,195, 3,209, 6,192, 40, 0,229, 75,212, 15, 1, 56, - 66, 41, 85,188,227, 3,214,134,207,231, 47, 18,137, 68,239,169,213,234,230, 0, 96,105,105, 25,175, 82,169, 46,151,150,150,126, -249, 46,188,132, 16, 6,192, 72,177, 88,220,147,195,225,244,164,148, 18, 74,233, 21,165, 82,121, 25,192, 81, 74,169,225, 29, 56, - 45, 37, 18,201,218, 38, 77,154,140, 93,182,108, 89,129,163,163,163,255,130, 5, 11,238, 57, 59, 59,255,152,159,159,191,130, 82, -170,254, 95,232, 28,132,144,134,174,174,174,135,120, 60, 30, 55, 35, 35,163, 39, 0,120,121,121, 93,209,233,116, 70,169, 84, 58, -142, 82,250,162,142,124, 34, 0, 29,196, 98,113, 27,177, 88,220,205,104, 52, 54, 45,203,207,248, 84,169, 84, 94, 47, 45, 45,189, - 15,224, 54,165, 84,245, 63, 36,134,173, 37, 18, 73, 4, 33, 4,132, 16, 63, 74,105,241, 63,238, 75,140,131,166, 9,241,137,254, - 21, 98,170,121,147, 26, 26, 4,222, 85, 28,107,182,208,122,175,187,219,224, 33, 67,250,112, 0, 64,167, 63, 55, 24,117, 76,126, -109,142,200, 10, 14, 14,254, 53, 34, 34,194, 94,171,213, 98,198,140, 25,135,108,109,109,119,200,229,242,101, 53,157,103, 35,182, - 95,176,113,243, 69,171, 55,249,175, 33, 49,153,140,146,215,175, 95,248, 37, 60,249,181,127,124,252,173,117,234,196,203,183, 77, -132, 55,179, 20, 93, 19,205, 41, 71,179,134,100,208,208,145,195, 7,174, 94,189, 10, 99, 71,143,173, 23, 31,175,177,244,176, 73, - 17, 20,170, 69,141, 28,157, 37, 67, 86,175, 57, 70,110,222, 56, 57, 36, 98, 95,248,229,169, 83,157,222, 99,197,150, 89,247,150, -172, 97,152, 14,246, 77,154,116, 27,125,242, 36,196, 94, 94, 12, 35, 20,114, 0,192,160,213,122, 41, 51, 50,220, 34,135, 12,105, - 31, 78,200,213, 48, 74,239,176,156,255,247,156, 44,234, 40,180, 56, 28,142,231,235,215,175, 37, 34,145,168,220, 44, 6,163,209, - 8,163,209, 88,145,188,152, 82, 90,241,211, 96, 48,160, 73,147, 38,102,125,209, 2,120, 15,192, 7, 61,122,244, 8,249,242,203, - 47,121,129,129,129,229, 41, 67,186, 46, 95,190,252,107, 66,200,113, 0,251, 1,252,108,238, 23, 47, 33,164,159, 72, 36, 58,184, -113,227, 70,155, 62,125,250, 48,238,238,238, 32,132, 32, 39, 39,167, 67, 76, 76, 76,155, 5, 11, 22,204, 34,132,140,167,148, 94, -168,195,192, 14,176,182,182, 62, 54,124,248,112,207,238,221,187, 91, 52,107,214, 12, 70,163, 17, 15, 31, 62,156,114,255,254,253, - 49,199,143, 31, 15, 35,132,132,152,155,175,141, 16, 66,196, 98,241, 36, 15, 15,143,181,161,161,161, 14,227,199,143, 23, 60,121, -242,164,200,215,215,151,220,188,121,211,249,200,145, 35,179,214,175, 95, 63,210,218,218,122,133, 82,169,252,129,154,225, 64,103, - 99, 99,115,159,195,225,120,154, 35,132, 1,152, 45,134, 9, 33,173,234,215,175,127,228,198,141, 27,245,211,210,210,140,195,134, - 13, 59, 0, 0,151, 47, 95, 14,212,235,245,164,111,223,190,231, 8, 33,163, 40,165, 15,205,172,123, 11, 7, 7,135,159,198,142, - 29,235,208,176, 97, 67,171,250,245,235, 19,145, 72, 4, 46,151, 11,185, 92,238,254,228,201,147,222,119,238,220, 81,199,196,196, - 20, 18, 66,134, 80, 74,227,234,112,159, 58, 73, 36,146, 9, 60, 30, 47,192, 96, 48,120, 0, 0,195, 48,175,245,122,253, 19,169, - 84, 26, 65, 41,253,245, 93, 7,136,139,139,203,246,181,107,215, 58, 73,165, 82,186,126,253,250,237, 0, 38,253, 83, 31, 6,135, -126, 60,138,251,247,238, 0, 0,159, 16, 66,222,238,127,132, 16,210,212, 15,252,143, 62, 90,136, 54,109,219, 99,220,216,145,181, -114, 14,236,237,181,145, 39,224, 59,106, 52,154, 95,229, 37,218,163, 46,142,118,163,198,142, 25,148, 4, 0,231,206, 95, 29,213, -190,189,195, 21, 91, 43,225, 72, 11, 11,139, 78,122, 93,105,193,153,152,140,197,117, 17, 85, 30, 30, 30, 23,236,237,237,173, 10, - 11, 11,115,242,242,242,190, 13, 14, 14, 94,179,127,255,126,251,151, 47, 95, 34, 35, 35, 3,243,231,207, 23,103,102,102,206, 17, - 10,133,183,180, 90,109,181,150,173,226,226,194,173,203,151, 14, 13,181,181,117,226,138,172,108, 96,109,235, 0,223,134, 45,209, -161,211, 96, 12, 24, 56, 21,201, 73,177, 29,246,239, 91, 29,251,250,117,204,231, 98,135, 6,107,100,178,250,213, 62,151,154,251, -147,238,229, 34, 43, 52,116, 21,158, 39, 38, 22,167,165,114,254,115,230, 36, 99, 53,160, 87, 19,161, 65,151,147,118,243,198,201, -250, 93,186, 14, 3,128, 54, 17,251,194, 47,207, 27,239,208,107,219,193,194, 98,246,149, 84,253,179,115, 53,143, 55,169,223,230, -205,146,160, 89,179,248,202,212,212,210,148,157, 59, 75,114,175, 95, 55, 50, 66, 33,245,234,223,159, 56,247,236,105, 49,235,233, - 83,254, 47,235,215,119, 91, 39, 16,248, 46,215,233, 14,178,156,255,119,156,108, 31,173,112,134,175,240,213, 42,159, 62,100,106, - 56, 9, 34,145, 8,145,145,145,224,241,120, 96, 24, 6, 60, 30,175,218,223,189,189,189,205, 41, 72,176,171,171,235,215, 59,118, -236,112,233,215,175, 31, 44, 44, 44, 42,246,113,185, 92,244,233,211, 7,189,123,247,230,101,101,101,141,137,140,140, 28,179,110, -221,186, 92, 66,200, 92, 74,105, 84, 45,188, 61,253,253,253,163, 46, 94,188,104,169,209,104,112,253,250,117, 20, 21, 21, 65, 32, - 16,192,211,211, 19,125,251,246,101, 18, 19, 19, 29,250,244,233, 19, 69, 8, 25, 68, 41,189, 98, 70, 89,219, 72, 36,146,107, 71, -143, 30,181,104,217,178, 37, 73, 78, 78, 70, 80, 80, 16, 0, 64, 46,151, 99,216,176, 97, 22,227,199,143,111, 56,102,204,152,219, -132,144,238,148,210,251,181,240,181,118,117,117,253, 97,248,240,225,238,235,214,173,179,177,182,182, 70, 90, 90, 90,182,171,171, -171, 95,121,123,143, 25, 51, 70, 48,120,240, 96,183, 13, 27, 54,108, 61,118,236,216, 98, 66,200, 36, 74,233,131,154,120,203, 5, -177,149,149, 21,114,115,115,113,232,208, 33,204,153, 51, 7, 92, 46, 23, 82,169, 20, 71,142, 28,193,127,254,243,159,114, 65, 99, -150, 24, 22,137, 68,189, 91,182,108,185,231,242,229,203,158,118,118,118,112,119,119,231,124,250,233,167, 1,190,190,190,150,245, -234,213,227,102,103,103, 35, 42, 42,202,119,194,132, 9, 63, 89, 88, 88, 76,209,104, 52,181, 78,169,185,184,184,236, 61,115,230, -140,119,124,124, 60,118,238,220,137,194,194, 66, 8, 4, 2,216,217,217,193,213,213, 21,126,126,126,100,233,210,165, 86,131, 7, - 15,182,154, 59,119,238, 94, 0,173,204,184, 71, 45, 37, 18,201,174, 49, 99,198,248,134,135,135,219,185,186,186,162,252,195, 64, - 46,151,123,166,165,165,117, 8, 13, 13, 13,113,113,113,121, 41,149, 74,103, 82, 74, 31,213,113,224,180,234,213,171,215,160, 97, -195,134,113,179,179,179, 17, 17, 17, 49,136, 16,210,202, 92,113,249,119,195,253,123,119, 48, 99,246,124,165,187,151, 23,255,226, -133, 61,193, 50, 89,179,123,118,150,111, 18, 82,203,212, 40,125,175, 59,183,109,223,126, 83,249,239, 15, 28,166,252,238,155,173, - 98,115,132, 22, 79,192,119, 60,116,240,171,244, 27, 55,239, 7, 92,138,185,211, 63,120,200, 16,202,231,219,249, 2,192,226, 5, - 31,241,162, 78,157,218,215,167,119,251,172,174, 93,218,164,143, 27,191,208,187, 14,247,166,113,227,198,141,175,198,198,198,186, - 8,133, 66, 20, 22, 22, 58,126,247,221,119, 95,117,233,210,133,147,146,146,130,196,196, 68,164,166,166, 66, 46,151,163, 79,159, - 62,226, 7, 15, 30,124, 11,160, 90,161, 85,202,121,111,173,123, 61,253, 54, 71, 75, 81,253, 82,163, 66, 66,245,217,205, 46,157, -185,212,226,112,132, 58,200,197,173,137,223, 7,147,195,176,122,205,113,222,143,135,190, 8,253, 57,230, 48,192,169, 95,125, 70, - 0,138, 78,203, 87, 44,131,162, 88,139,241, 99,167, 99,194,216,233,142, 20, 58, 55,106,212,136,116,234, 34, 59,107,254,211,232, - 29,187,191, 26, 14,192,179,146,216,250,153, 21, 91,213, 99, 53,195,180, 31,244,245,215,206, 1,211,166, 9, 31,133,135,171,242, -175, 95, 87, 55,122,255,253,162,160, 15, 63,212, 2, 64,113,106, 42,255,121, 88,152,149,115,183,110,150, 29, 23, 45,178, 55,234, -116,174,159, 17,210,238, 83, 74,239,214,149,211,123,212, 40, 99,232,190,125,109,175, 47, 92,216,131,232,245,220,254, 29, 59, 62, - 92, 31, 17,241,250,143,112,254,153,229,204,186,118, 77, 91,232,235,139,160, 97,195, 10,188, 37, 18,237,159, 89,247, 63, 82, 78, - 22, 40, 55, 74,101, 3, 40,143, 12,255,230,121, 69, 41,197,153, 51,103,186, 3,184, 10, 32,124,224,192,129,171, 0,192,206,206, - 46, 87, 38,147, 73,162,162,162,106, 21, 89, 60, 30, 15,110,110,110,240,243,243,147,230,230,230,186,212,240,112,204, 48,153, 76, -158,148,210, 10,235, 75,117,208,106,181, 72, 74, 74, 66,139, 22, 45, 50, 41,165, 94, 53, 77,237, 88, 89, 89,165, 36, 38, 38, 58, - 37, 36, 36,224,254,253,251,240,245,245,133,189,189, 61,120, 60, 30,244,122, 61, 20, 10, 5,252,253,253, 33, 20, 10,209,186,117, -235,124,149, 74,229, 91,211, 20, 16, 33, 68, 40, 18,137,146,174, 93,187,230, 21, 20, 20,132,187,119,239,194,203,203, 11,174,174, -174, 0,128,212,212, 84,220,188,121, 19,239,191,255, 62, 98, 99, 99, 49, 98,196,136, 12,149, 74,229, 71, 41,213, 86,199,233,232, -232,152,125,249,242,229,204,192,192, 64,141, 74,165,226,228,230,230,242,174, 95,191,110, 40, 46, 46, 22,203,229,114,158, 76, 38, -227, 41, 20, 10, 70,165, 82,241, 56, 28, 14, 95,173, 86,243,126,254,249,103,174, 78,167,179,169,169,157,202,239,211,169, 83,167, - 16, 24, 24,136,168,168, 40,124,252,241,199,248,229,151, 95,224,229,229,133,163, 71,143, 98,209,162, 69,120,246,236, 25,156,156, -156,208,172, 89,179, 26,239, 17, 0, 52,106,212, 40,249,241,227,199, 13,249,124,126,121, 94,199,242,124,121,200,203,203,195,139, - 23, 47,240,250,245,107, 52,106,212, 8, 99,199,142,125,145,153,153,217,168,182,206,231,233,233,153, 23, 31, 31,239,212,162, 69, - 11,228,230,230,194,206,206, 14,182,182,182,176,179,179,171,248,221,215,215, 23, 11, 23, 46,132,171,171,171, 84,173, 86,187,212, - 38,130, 2, 3, 3, 47,252,252,243,207, 78, 54, 54, 54,200,201,201,129, 66,161, 0,195, 48,176,178,178,130,147,147, 83,133,144, - 79, 74, 74,194,192,129, 3,243, 83, 82, 82,250,213,193, 2,199,113,113,113, 73,140,139,139,243,163,148, 34, 61, 61, 29,207,158, - 61,195,236,217,179,147, 52, 26, 77,147,127, 82,206,190, 74,126, 87,252, 73,147,103,240,135, 15,237,164,123, 26, 31, 77,132,166, -103,104, 21, 96, 35, 7,128,135, 79, 20,182, 90,142, 63,154, 54, 31, 68, 79,252,244,171,224,135,253,223,241, 96,130, 11, 8,158, - 37, 60,167,159, 85,199,221,239, 61,247,105, 31,125, 52, 37,160, 71,151,238,156, 98,149, 74,242,237,183,155, 91,167,164, 60,149, - 0,128,175,111, 83,233,172, 89, 11, 30, 88,139, 68,210,171, 55,175,153,182,108,217,251,228,194,229,172,221,102,220, 27, 95, 63, - 63,191, 91,167, 78,157,114,146, 72, 36,176,181,181,133, 74,165, 66,105,105, 41, 18, 18, 18, 52,145,145,145,122, 27, 27, 27,235, -156,156, 28,200,100, 50, 16, 66,112,234,212,169,116, 74,169,207,219, 92,229, 62, 90, 0, 48,123, 64, 83, 94,179,247,252,236,249, - 66,131,165, 37,239,185, 27,136, 81, 72,168,216,229,220,133,135, 45,206, 93,186, 59,110,120,240,199,206, 93,187, 15, 71,232,202, - 16,125, 86, 86,122, 80, 41,186, 38, 86,229,163,213,212,143,188, 55,108,196,240,145,171, 87,175,194,170,208,112, 68,159, 58, 41, - 23,139, 56, 90, 27, 59,158,109,183, 14,157, 53, 11,231, 12,205, 80, 42,179,188, 86,111,136, 28, 59,112,232, 66,207, 46, 93,135, -225,230,141,147,136,216, 23,126,159, 88, 82,118, 26,241, 45,132, 19, 98,111,231,235, 59,115, 94, 82, 18,255,209,170, 85, 74, 67, - 86, 86, 81,155, 5, 11,242,171, 58, 54,243,210, 37,145,192,221,221,198,126,200, 16,135,173, 62, 62, 84, 47,149,238,170,202,199, -168, 42,206, 24,177,216,238,240,185,115,189, 40,143,215,125,201, 39,159, 88, 14, 26, 52, 8, 10,133, 2,199,143, 31,199,174,157, - 59,181,110,110,110,143,221,159, 60,137, 13, 80, 40, 86,154,203,217,102,193,130,124,163,209, 72, 70, 46, 90,212, 39, 62, 53,245, -189, 28,169,180, 30, 0,184, 57, 56,100,180,241,245,189,191, 55, 58,250,217,246,250,245, 77,230,150,243,251,243,231, 93,142,165, -165, 77,115,112,112,176,204,149, 74, 25,161, 64, 80,208,161, 89,179,163,223,172, 88,113,213, 16, 23,199,183,240,244,180,177, 29, - 52,168,206,117,111,179, 96, 65,126, 97,113, 49, 51,111,205,154,206,175,114,115,235, 41,181,218, 70,178,226, 98, 87,163, 94,207, -177,177,178, 42,104,224,239, 47, 85, 95,191,158,221,160,164,100,254,247,148, 74,255,170,123, 93,149, 22,249, 27, 89,180,222, 94, -117,248,187, 92,135, 87, 7, 14, 28, 72,170, 80,102,102, 89,179,120, 60,222,111,166,169,106, 0,159, 16,130, 7, 15, 30,192,209, -209, 17,174,174,174, 16, 10,127,155,124, 48, 47, 47, 15,191,252,242, 11,158, 62,125,138,150, 45, 91, 2,120,243, 69, 93, 29,132, - 66,225, 71, 27, 54,108,176,211,233,116,184,127,255, 62,218,180,105, 3,161, 80, 8, 62,159,255, 27, 17, 40,149, 74,209,188,121, -115, 44, 89,178,196,118,221,186,117, 31,161,134, 28,117, 12,195,204,157, 62,125,186,164,220,130,149,145,145,129,214,173, 91, 87, -236,119,118,118,198,195,135, 15,209,166, 77, 27,120,122,122, 34, 36, 36, 68, 18, 17, 17, 49, 23,192,151,213,113, 10, 4, 2, 78, - 96, 96, 96,219, 50,139, 17, 56, 28,206,115, 27, 27, 27,103, 23, 23, 23,145,141,141,205,239,234,184,111,223, 62, 25,135,195,209, -215,214,160, 28, 14, 7, 57, 57, 57, 8, 8, 8,128, 92,254, 38,131,139, 74,165, 66,163, 70,141,160, 80, 40, 42, 68,171,187,187, - 59,212,234,154, 93,191, 90,182,108,185,170, 73,147, 38,125,123,244,232, 33,228,241,120,120,244,232, 17,130,130,130, 16, 25, 25, - 9,111,111,111, 88, 89, 89, 33, 41, 41, 9,129,129,129,184,118,237, 26,156,157,157,209,188,121,115, 97,235,214,173,111, 20, 22, - 22, 94, 73, 75, 75, 91, 85, 67, 57, 57, 98,177, 24,215,174, 93,195,222,189,123,145,154,154,138,172,172, 44, 88, 91, 91,163, 85, -171, 86,104,214,172, 25, 58,117,234,132,164,164, 36,144, 90, 58, 19, 33,196,213,207,207, 47,250,238,221,187, 78,148, 82, 68, 68, - 68, 64,169, 84, 66,167,211,129,195,225,192,194,194, 2,246,246,246,120,239,189,247,224,236,236, 12, 63, 63, 63, 28, 57,114,196, -105,192,128, 1,103,203, 44, 82, 57,181,181,171,189,189,253,252,176,176, 48, 47,137, 68,130,180,180, 52,200,229,114,184,184,184, -160, 71,143, 30, 30, 49, 49, 49,243, 1,108,254,167,188,200,202, 29,223, 9, 33,228,226,133, 61,193,126, 13,138, 2, 91,250, 91, -121, 69, 69,187,120, 69, 70, 75,155, 3, 64, 64, 83,151,248,224, 65, 86, 25,143,226,163, 51, 46, 94, 56,121,255,233,115, 68,153, - 51,181, 45, 47,209, 30,189, 20,115,167,127, 80,203,214,166, 13, 95, 44, 26, 56,103,246, 52,161,196,101, 42,114,211, 79, 34,230, -242, 3,239, 69, 31, 79,119,254,114,211,247,231, 46,197,220,225,200, 75,180, 43,205, 41,111,227,198,222,219,247,127,211,201,169, - 56,255, 24,146, 19, 5,176,180, 14,128,175,111, 99, 40, 20, 10, 88, 88, 88, 88,140, 29, 59,214,184,108,217,178, 18, 27, 27, 27, - 43, 66, 8,174, 92,185, 34, 5,208,175, 54, 94,141,196,158, 26, 75,245, 6, 42,224,154, 40,177, 86, 19, 99,161,224, 73,194, 75, -244,237,221, 51,183, 75,251,128,117,203, 86,111, 90,238,215, 56,200,121,202,180,112,222,154, 85,227,118,130,160,107, 85, 60, 79, -147,232,229,102, 13,137, 37,128,129,171, 63, 91,133,148,148, 36,251, 25, 31,200,194, 25,161,165,123, 19,159,206,214, 59,247, 94, -233,223,168, 81,253,122, 11,231,134,156,249,234,235,175, 6, 86,182,108,237,223, 23,246, 19, 33,164, 23,253, 43,227,238,252,253, -208, 98, 66,116, 52,148,233,233,250,194, 27, 55, 52,189,190,254, 58,223,171, 95,191,205,186,210, 82,167,242, 71, 5,135, 16,144, -114,215, 9,147,137, 48, 75,150,112, 40,195, 64,111,111,255,193, 82,160,113,109,156, 31,103,103, 7,143,155, 54,109,224, 79,231, -207,163,126,253,250, 21,239, 51, 59, 59, 59, 44, 90,180, 8, 11, 22, 44, 16, 62,124,248,176,221,177, 99,199,218,125,185,113,163, -203, 82, 32,216,156,114, 94,188,125,219,254,195,213,171, 87,180,108,211,198,251,192,161, 67,194,134, 13, 27, 2, 0, 94,188,120, -225,247,197,250,245, 62, 1,129,129,185,235, 62,250,104,127,252,178,101,205, 1,220,168,137, 51,231,250,117,221,177,180,180,105, -151,175, 92,177, 11, 8, 8, 0, 0, 60,123,246, 76,178,117,235,214,233,205, 67, 66,198,175,158, 53,107,229, 32,141, 70,102,147, -151, 39, 28,180,125, 59,115,120,228,200, 90, 57,203,203, 9, 0, 61,166, 76,249,168,107,207,158,205,130,167, 77,115,240,246,246, - 38, 98,177, 24,165,165,165,200,202,202,178,143,143,143,111, 24, 93, 92,172, 56,113,251,118,196,247,101,201,226,255, 34, 84,169, - 69,254, 78,150,172, 42, 53, 69,217,207, 30,103,206,156,161, 0,122, 12, 28, 56,240, 90,249, 11,220,104, 52,154, 37,178, 24,134, - 65,153,179,176,185, 5, 66,126,126, 62,242,243,243, 43,166,142,164, 82, 41, 46, 95,190,140,164,164, 36,240,120, 60,240,249,124, -148,150,214,158,131, 86, 36, 18,245,238,221,187, 55,115,251,246,109,248,250,250,194,210,210,178,162, 92,229, 27,159,207,135,155, -155, 27, 20, 10, 5,122,245,234,197,219,182,109, 91,239,154,132,150,173,173,237,251,163, 70,141, 18,148,255,173, 84, 42,193,229, -114, 43, 68,139, 82,169, 68, 97, 97, 33,100, 50, 25, 52, 26, 13, 58,118,236, 40,136,142,142,126,191, 38,161, 85, 25, 37, 37, 37, - 74,169, 84,106,215,181,107, 87,251,253,251,247, 63,235,216,177,163,255,111,122,218,213,171, 26,141, 70,195,227,112, 56,102,229, -209, 59,120,240, 96, 69,219,191,126,253, 26, 59,119,238,172,216,151,148,148,132,109,219,182, 85,164, 2,168,233, 30, 53,105,210, -100, 64, 68, 68, 68,155, 3, 7, 14, 20,113,185, 92, 60,123,246, 12,135, 14, 29, 2,165, 20,206,206,206, 40, 41, 41, 65,110,110, - 46,174, 92,185, 2,131,193, 0,177, 88, 12, 15, 15, 15,139,185,115,231,118, 9, 15, 15,231, 1,168, 86,104, 25,141, 70, 35,151, -203,133,143,143, 15, 66, 67, 67,161,209,104,192,231,191,209,151, 10,133, 2, 50,153, 12,177,177,177, 72, 75, 75, 67,109, 47, 25, - 11, 11,139,144, 3, 7, 14, 72, 4, 2, 1,212,106, 53,138,139,139,145,145,145,129, 87,175, 94,105,164, 82,169,193,218,218,154, -227,227,227,195, 17, 10,133,194, 97,195,134,145,114,193, 57,104,208, 32,199,136,136,136,209,181,137, 36, 66,136,115,211,166, 77, -151, 79,159, 62,221,162,114,159,205,201,201, 65,112,112,176,213,175,191,254,186,140, 16,114,136, 82,154,247, 15, 51,121, 83,153, -172,217,189,251, 49,207, 2,163,162, 93,188, 94,101, 26, 59, 47, 90,188,137, 1,128,239,118,125,222, 57, 42,250,245, 47, 77,234, -231,102, 28, 59,209,248,158,157, 93, 2,173,205, 34,248, 94,119,183,193, 46,142,118,163,130,135, 12,161,223,126,187,185,245,156, -217,211,132, 62,141, 23, 1, 0, 60,120, 18,244, 50,124, 70, 74,212, 47, 44,190,253,118,115,235,224, 33, 35, 98, 83, 83,211,118, -245,234,225,126,228,242,181,236,211, 53, 89, 12, 37,142, 22, 30, 86, 66, 21, 60,124,155,193,191,169, 8, 15, 31, 61,195,241,163, -183,208,180,121, 7,104,181, 90, 24, 12, 6,209,224,193,131, 75, 34, 35, 35, 53,207,159, 63, 47, 86,171,213,221, 41,165,207,107, -171,127,102,102,130,201,223,181, 67, 41,223, 82,104, 40,150,243, 75,150,174, 60, 54,178,117,251,190,109,236,221, 60,120,206, 34, -211,233, 1,125,218, 29,218,187, 59,116,193,202,176, 67,104,219,174,111,199,167,207,110, 52, 3,240,184, 74,241,250,130, 70, 7, -248, 17, 67, 74,114,242,192, 87,105,105,153,141, 93, 92,117, 47,100, 84, 63,127,233,247,125,186,118, 15,105,209,176,105, 55,193, -211,132,107, 36,116,201,232, 31, 87,111,248,106,108,185,216,250,249,210,143,221, 63,248,224,150, 0,128,150,213, 87,101, 95,231, - 66,161,167,216,199,135, 73,221,191, 95,237, 59,120,112, 17, 0,232, 74, 75,157, 82,211,210,108,173,172,172, 64, 41,133, 94,175, -255,141, 15,113,185,223,112,128,191,191,139, 57,156,169,159,126,218, 98,201,146, 37,200,201,201,129,193, 96, 0,143,199,123,251, -153, 13,149, 74,133, 15, 62,248, 0,219, 55,110,236, 96, 14,167,209,104, 36, 31,174, 94,189,226,147, 21, 43, 26,206,156, 57,147, - 83,249,217,235,224,224,128, 99,199,143, 11,118,236,216,225,185,124,251,246, 15,198, 9,133, 41,181,113,230, 55,106, 4,135,220, - 92,203,114,145, 5, 0,254,254,254,216,185,115,167,112,234,212,169,130,193,131, 7,111,122,216,178,229,214,205, 93,186, 36, 59, - 54,110,108, 35, 16, 10, 61,205,109, 79, 0, 40,214,104, 2, 54,111,221,106,127,231,206, 29,228,230,230, 34, 39, 39,167,124, 44, -163,109,219,182,100,194,132, 9,182, 13,188,188,218,253,197,183,251,119, 90,228,111,100,209,154, 81,197, 51,245,191, 62, 90,101, - 21, 34,101, 21, 36,149, 94,142,191, 17, 44,181, 9,173,119,129, 76, 38,131, 76, 38,195,238,221,187,193,231,243, 43, 94,190, 0, -160,211,233,204, 17, 45,129,238,238,238,144,203,229,104,220,184,241,111, 44, 89,124, 62, 31, 12,195,128,207,231, 67, 40, 20, 66, -171,213,194,219,219, 27, 37, 37, 37,129, 53,113,170,213,234, 86, 14, 14, 14, 21, 47, 88,173, 86, 91, 33,178,202,203,171,211,233, - 80, 84, 84, 4,165, 82,137,226,226, 98,168, 84,170, 32,115,234,107, 50,153,240,228,201,147, 23,254,254,254,173,184, 92, 46,196, - 98,177, 72,165, 82, 85,248, 22, 21, 22, 22,226,135, 31,126, 80, 77,156, 56,209,233,212,169, 83, 37,102,220, 92,252,231, 63,255, -129, 80, 40, 68, 73, 73, 9,190,253,246, 91,204,155, 55, 15,124, 62, 31,197,197,197,216,185,115, 39, 22, 46, 92, 8,134, 97,160, -211,233,176,117,235,214,234, 45, 27, 9, 9,169,183,111,223, 14,106,221,186,181,253,137, 19, 39,242,250,244,233,227,220,175, 95, - 63, 88, 90, 90, 66,173, 86, 67,175,215,163, 67,135, 14,104,210,164, 9,164, 82, 41,206,157, 59,151,239,231,231,231,116,231,206, - 29, 83, 78, 78,206,171,218, 94,226,149, 44,134, 48, 26,141,200,205,205,133, 76, 38, 67, 94, 94, 30,178,178,178,144,153,153, 9, -134, 97, 80,219,199,188,163,163,227,136,128,128, 0, 46, 0, 88, 90, 90,162, 85,171, 86, 88,177, 98,133, 65,173, 86,143, 2,112, -174,236,176, 1,223,127,255,253,137,155, 55,111, 50,238,238,238, 72, 76, 76,132,179,179, 51, 99, 97, 97, 81,171,208,114,117,117, -221,119,250,244,105,135,114,113, 93,222,206, 37, 37,111,110, 71,112,112,176,195,129, 3, 7,246, 1,120,255,159,246, 82,179,179, - 4,191, 85,128,141, 60, 50, 90,218,124,209,226, 77, 76,147,128, 55, 31,175, 51,102,130,249,114,227,199,205,199, 15,181, 57, 99, -103,169,224,215,198, 51,160,183,215,142, 33, 67,250,112,198,142, 25,148,196,231,219,249,238,250, 46, 92, 34,113,153, 90,201,196, -105, 3, 71, 39, 27,248,250, 8,200,177, 51, 79, 37, 75,151,125,166,253,127,236, 93,119, 88, 20,215,250,126,207,246, 70,239, 93, - 17, 5,165,168, 24,148,196,222, 11,104, 52, 38,150, 68, 99, 76,177, 36, 38,154,104,140,198, 68, 19, 83,136, 38, 38,106,162,215, -150,162,177,119, 99,175,104,140, 37,118, 1, 1, 69, 1,129,133,101,105,187,176,125,103,231,252,254, 16,184,200,165, 44,168,247, - 38,249,205,251, 60,251, 48, 59,156,121,231,156,153,179, 51,239,249,206,119,190,107, 23,146, 4, 0, 0, 32, 0, 73, 68, 65, 84, -111,227,134,111,239,110,222,178,127,176, 88,120,108, 32,128,169,245,113,167,103,148,237,211,155,164,225,218,226, 27,196,205,187, - 27,162, 59,182,133,151,103, 41,214,254,188, 21,193,173, 58,195,100, 50,193,201,201, 73,110,179,217, 44,124, 62,127,163, 61, 34, - 11, 0, 78,156, 40, 99, 35, 35,203,204,252,114,150,121,235,157,111,158, 27, 48,228,217,136,190,125,251,179, 71,143, 29,181,116, -235,100,201, 31, 50, 40, 90,117,248,216,138,219,249,202,123,161,145,237,187, 35, 37,249,212, 96,128, 36, 1,117,119,216,164,219, -244,112,235,214,228,212,214,173,147, 88, 3,123, 85,246,249, 23, 55,135,196,199, 79,136,234,217,163, 39,123,236,248, 73,179, 24, - 69,183,156,186,119,205,123,235,245, 33,187,127,220,184,108,224,225, 67, 63,183,209,104,179,247,255,252, 51,229, 68, 86,205, 65, - 26,195,120, 11, 36, 18,158,250,212, 41,166,253,107,175,153,170,126,143,114,185, 28,123,247,238,133, 88, 44,174,254,136, 68,162, -234,109,111,111,239,170,197, 87,118,113, 2, 64,126,126, 62, 10, 10, 10,224,236,236, 12, 79, 79, 79, 20, 20, 20,224,220,185,115, - 72, 79, 79,135, 80, 40,196,224,193,131,193,171,199,183,185, 54,231,168, 89,179, 6,132,183,111, 31, 84, 91,100, 1,128,197, 98, - 65, 73, 73, 9,134, 15, 31,206, 59,116,232,144,207,225,251,247,159,253, 24,216,216, 16,103,167,248,248, 98,213,142, 29,117,158, -251,169,167,158, 34,127,252,241,135,100,240,160, 65,239,206,252,226,139, 21,223,111,216,144, 99, 99, 24,159,166,180,157,199,227, -241, 8, 33, 8, 12, 12, 68, 73, 73, 9, 42, 42, 30,204, 96, 59, 56, 56,192,213,213, 21, 86,171, 21, 44,165,194, 39,121,175,235, -211, 34,127,147,129,234,154, 42,193, 85, 59, 50,188,160,114, 94,180,234, 65,209,187,230,139,133,101, 89,187, 68,150, 80, 40,108, -212,231,202, 30, 43, 87,109,216, 35,180,170,234, 42,149, 74,171,127,104, 53, 5, 86, 85, 61,121, 60, 30,248,124, 62,236,177,200, -179, 44,203, 47, 47, 47,199,206,157, 59,209,171, 87,175,234,105, 41,141, 70,131,178,178, 50,104, 52, 26, 24,141, 70,100,102,102, -226,196,137, 19,104,211,166, 13, 96,103,240,215,187,119,239, 94, 14, 14, 14,142,169,122,137,247,233,211, 39,224,151, 95,126, 81, -198,197,197,249, 81, 74,241,209, 71, 31, 21, 61,253,244,211, 30, 53, 95,242,141,129,207,231,227,220,185,115,104,211,166, 13, 40, -165, 16,137, 68, 72, 75, 75,131,151,151, 23, 88,150,133, 64, 32,128, 90,173,134,163, 99,195, 49, 18,147,146,146, 38,190,250,234, -171, 74,103,103,231, 14,197,197,197,249, 18,137,164,199,153, 51,103, 2, 45, 22, 11,156,156,156,224,228,228,132,131, 7, 15,194, -197,197, 5, 51,102,204,184,111, 48, 24,206, 41, 20, 10,111,131,193,112,163,160,160,224,163,166,220,111,134, 97,160,211,233, 80, - 90, 90,138,146,146, 18,104,181, 90, 24,141,198, 70,235, 88, 23,122,244,232,129,253,251,247,243, 19, 18, 18,126,188,123,247,193, -192, 48, 36, 36, 4, 51,102,204,224,251,251,251, 35, 51, 51, 19,151, 47, 95,134,197, 98, 1,165,180,193, 31,175, 80, 40,236, 51, -115,230,204,238, 65, 65, 65,196, 98,177,128,101, 89,152, 76, 38, 84,109,223,191,127, 31,225,225,225,188, 22, 45, 90, 60, 67, 8, -233, 99,207,194, 10, 14, 15,160,186,191, 7,254, 66, 47,128,231, 4,106,216,131,226,162,230,165,141, 44, 44, 44,252, 98,246,199, -127,188,246,253, 98,139,119,110, 62,208, 54,106, 4, 66, 35,250, 97,226,120, 6, 9, 95,239, 68, 80,139,182,200,206,206, 70,159, - 62,125, 68, 74,165,242, 85, 0,179,236,229, 62,118,236,130,237,232,193, 67, 47,140, 26, 51, 33,166,127,255, 56,230,200,145,131, - 72,186,113, 36,249,213, 49,207, 23, 82,182,130,184,185,200,174,166,165, 94, 10,237, 16,221, 27,102,198,214, 3,248,100, 49,128, -122, 31, 42, 25, 25,212,252,233,167,159,242, 14,236,249,121,252,139,227, 94,233,216,175,223, 64,235,145, 99,191,225,242,249, 99, -215,151, 44,126,227,116,194,178,109,125, 6, 12,126, 62,210,211,251,220,193,168, 48,211,235,129,238,206, 25, 92, 79,169, 27, 2, -169,148, 69,229,115,145, 71, 8, 40,165, 15,137,172,218, 66,139,199,227, 53,106, 0,168,201, 89,243, 93, 84, 53,160, 94,189,122, - 53, 36, 18, 9,196, 98, 49,132, 66, 97,163,238, 23, 53, 57,147, 51, 51,251,174,223,184, 81, 82,151,200, 42, 46, 46, 70,113,113, - 49, 42, 42, 42, 48,118,236, 88,209,167,151, 46, 61,213, 24,103,144,175,175, 73, 33,147,169, 82, 82, 82,252, 34, 34, 34, 30,170, -175, 86,171,133, 76, 38,195,198, 77,155, 68, 67,227,227,223,236,119,240,224, 18, 0,101, 77,109, 59, 33, 4, 94, 94, 94,112,117, -117, 5, 33, 4, 12,195,160,160,160, 0,201,201,201,184,116,233, 18,248,132, 48, 79,242, 30,215,165, 69,254,110, 86,173,218, 34, -171,166, 69,139,212,103,125,177, 87,104,241,249,252,102, 91,181,234,131, 61, 83,135,114,185,252,166, 82,169,236,230,239,239, 15, -134, 97,170,133, 86,237,169,195, 42,235,199,181,107,215, 32,151,203,111, 54,198, 73, 41,125,166, 75,151, 46,216,181,107, 23, 78, -157, 58,133,123,247,238, 65,175,215,195,100, 50,193, 96, 48, 32, 57, 57, 25, 44,203, 34, 42, 42, 10, 10,133,162, 81, 78, 0,208, -233,116,249, 66,161,176,173, 76, 38,171,222,231,235,235,139,226,226, 98,214,106,181, 98,253,250,245, 90, 31, 31, 31,133, 76, 38, -179, 91,184, 18, 66, 80, 88, 88,136,128,128,128,106, 31,173,242,242,114,120,121,121, 85, 9, 11,152, 76, 38, 56, 58, 58, 54, 58, -117, 72, 41, 53, 2,152, 89,131,187,243,168, 81,163, 54,111,221,186,181,213,241,227,199,113,241,226, 69,120,122,122,226,203, 47, -191,188,151,149,149,245, 34,165,244,210, 19,232,168,141,150, 41, 46, 46,222,121,243,230,205,103,186,116,233, 82,253,148,232,211, -167, 15,233,211,167,143, 71, 77, 83,191, 90,173,198,159,127,254,137,227,199,143,131, 16,130,219,183,111,219, 12, 6,195,230, 6, -206, 45,106,209,162,197, 47,243,230,205,115, 96, 24,166,186,111,203,100, 50, 72,165, 82,136, 68, 34,240,249,124,100,101,101, 97, -248,240,225,206, 63,252,240,195,207,132,144,214,148, 82, 11,254, 33, 40, 51,192,114, 45, 73,235, 28, 21,238,157,188,102,117, 66, -183, 73,147, 81, 53,117,200, 68,133,123, 37, 95, 75, 82, 57,199,120,193,226, 34,110,152,231,208,241,156,183,204,214, 67,195, 14, - 29, 78, 28,253,254,187, 51,132, 33, 33,225,133,199, 79, 94, 9,234,199,124, 70,220, 61,156, 80, 92,164, 69,214,125, 21,238,102, -155,105, 72, 72,120,225,229, 63,111, 74,190,254,110,105,168, 78,111,220,118,242,116,254,111,141, 12,202,140,132,144, 17, 75,150, - 75, 78, 79,120,181,179, 88, 38,243, 67, 73,209, 77, 4, 5,121, 98,248,208, 14,248,105,195, 57, 56, 59,187,193,219,219, 27, 60, - 30, 79, 97,111,219,139,138,138,200,206, 45,191,191,246,242, 43,111, 60, 61,104, 96, 60,115,248,200, 1,193,169,163,251,206,253, -188,230,195,221,148,175,147, 19, 90, 46,107, 25,236,115, 35,227,206,181, 23,251,246, 31, 11,153,200,177, 13,208,174,206, 14, 91, -189,192,128,226, 62,143, 7,233,203,175, 76,234, 58,104,208,179,204,145, 35,123,112,228,224,134, 11, 11, 22,180, 60,120, 47,111, -147,232,252,165, 92,233,136, 23,166,150,238, 63,116,203,252,252,176,224,116, 63, 69,180, 1, 28, 30, 30, 72, 10, 4, 42,198,100, - 10, 12, 24, 52,136,175,207,206, 22, 58,120,123, 51, 0, 96,181, 90, 27, 21, 90, 0, 88,123, 56,237,173,139, 94,175, 7, 11, 48, -246,112, 22, 20, 22,182,172, 28,132, 87,195,106,181, 86,139,172,226,226, 98,148,149,149, 65,161, 80, 64,109, 50,121,219,195, 57, - 48, 54,118,253,167,159,124, 50,107,199,206,157,162,154, 34,171,234, 35, 20, 10,177,104,241, 98,209, 59,239,191, 63,245, 77,129, - 96,122, 83,174,103,213,160,157,207,231, 67, 32, 16, 32, 59, 59, 27,247,239,223, 71,118,118, 54,178,179,179, 33,147,201, 64,235, -185,158,143,209,162, 69,254,174,253,180,106,234,176,230, 20,162, 93,225, 29,154,226, 12,111,175, 48,176,217,108,143, 85,104,233, -116,186,227, 39, 78,156,136, 29, 49, 98,132,224,194,133, 11,240,241,241,169, 22, 90, 85,127,171,166,163,228,114, 57,118,239,222, -109,209,233,116,199, 27,249, 49,157, 56,120,240, 96,204,252,249,243,133, 19, 39, 78, 68, 74, 74, 10, 38, 79,158,140,178,178, 50, -104,181, 90, 20, 23, 23, 67,175,215, 35, 54, 54, 22, 82,169, 20, 55,110,220,176,234,245,250, 19,141,188, 28,104, 97, 97, 97,133, -167,167,167,111,237,255,189,240,194, 11,222, 43, 87,174,212,167,166,166, 90,187,117,235,230,100,175,224,168,194,150, 45, 91,170, - 45,117,233,233,233, 88,185,114,101,181, 79,214,149, 43, 87,240,205, 55,223, 84,199, 62,107,162,149,241, 82,100,100, 36, 99,181, - 90,209,166, 77, 27,248,251,251,195,104, 52, 98,233,210,165,204,147, 16, 89,246,194,104, 52,238,152, 48, 97,194, 7, 87,175, 94, -245, 21, 8, 4, 15, 76,218,149,237,179, 88, 44,184,115,231, 14,146,147,147,145,154,154,138,146,146,146,234,129,192,181,107,215, - 74,173, 86,235,182,250,120, 61, 61, 61, 63,250,233,167,159,124,228,114,249, 67,253,185,202, 26, 90,101, 37, 85,171,213,112,113, -113, 65,191,126,253,188, 78,156, 56,241, 17,128,249,255,132, 23, 26, 33,132,244,237,197,239,252,206, 91, 35, 48,114,168, 60,103, -215,254,188, 63,190,249,122,102,165, 51,188, 87,242,200,161,254, 57,215,211, 92,240,194,115,123, 58,159, 60, 77,114, 27,242,165, -171,244,177,218, 27, 27,235,118,106,215,190,125, 63,207,157,253,238,149, 89, 51,223,240,212, 27, 50,164, 33, 45,196, 4, 0,238, -102,155,233,141, 20,214,248,205,146,119,175, 36, 44,254,129,167, 42, 46,155,124,241, 98,253,225, 13,106,138,151,200, 48, 72, 67, -218,245, 82,134,134,117, 15,190,112,110, 35, 28,228, 6,180,109,215, 25,131, 6, 62,131, 83,137,215, 80,160, 54, 34, 63, 63, 31, - 38,147,169,193,112, 9,169, 55,118,143,167,132, 6, 17, 74,238, 19, 30,149,142,159,240,122,143,248,248,103,233,254,253,251,152, - 61,187, 55,158,221,246,235,242, 29, 60,145, 80, 96, 48, 59,155, 9, 49,106,192, 75, 74,169,208, 61, 24,208, 8, 37,162,250,205, -175,149,129, 93, 35, 34,219,249,140,159, 48,217, 57,110,200,112,122,240,224, 30,118,219,214,245,167,182,173,107,191,145,229,105, - 69,249, 57,122,137, 70,107,213, 80, 34,118,169,208,178,122,213,221,214, 70,191,248, 23,254, 49,162,253,177, 13,184, 77,166,220, -138,156, 28, 95,183, 94,189, 36,119, 62,249, 68,238, 29, 27,107, 36,149, 62,196, 13, 9, 45, 62,159, 15,240,120,172, 61,156,246, -214,197, 96, 48,128, 5,172,205,225,100, 24,230, 33,145, 85, 37,180,170,236, 26,246,112,174, 89,176,224, 66,208,160, 65, 37,137, -137,137,222,189,123,247, 38,229,229,229, 40, 47, 47,127, 72,108,249,249,249,145,136,168, 40,249,150, 83,167, 66,230,219,121, 61, -237,105, 59,143,199,123,226, 66,235,239,140,186, 44, 89, 15, 89,180,234, 67,149, 69,203, 30,161,101,167, 69,203,106,181, 90,225, -229,229,133,162,162,162,122, 95,252, 60, 30, 15, 50,153,172,106,142,184,193,149,119, 38,147,105,233,172, 89,179,166, 13, 25, 50, -196,163,109,219,182, 80,171,213,240,246,246,134, 84, 42,173,246, 29,171,226,187,114,229, 10,126,250,233, 39,173,201,100, 90,218, - 8,231,119,139, 23, 47,126,107,228,200,145,110, 62, 62, 62,112,117,117,197,141, 27, 55,224,234,234, 10,173, 86,139,180,180, 52, - 56, 58, 58, 86,251,237,236,219,183,175,220,100, 50,125,215,136,120,163,103,206,156,177, 56, 58, 58,222, 80,171,213,252,146,146, - 18, 65,105,105,169, 64,171,213, 10, 53, 26,141,240,240,225,195, 30,206,206,206,250,147, 39, 79,170,131,130,130,248,247,238,221, -227, 91,173, 86,158, 29, 47, 71, 76,159, 62, 29, 34,145, 8, 38,147, 9, 75,151, 46,197,172, 89,179,170,125,178, 22, 47, 94,140, -121,243,230, 85, 11,231,181,107,215, 54,181,243,192, 98,177,192,106,181,194,106,181,218, 37,126, 31, 5,246, 8,118, 74,105, 1, - 33,100,104,151, 46, 93,142,110,223,190,221,189, 50, 38, 25, 84, 42, 21, 84, 42, 21,212,106, 53, 42, 42, 42,192, 48, 12,252,253, -253,161, 82,169,176,103,207, 30, 77,121,121,249,160,134, 86, 28,242,249,252, 9, 61,122,244, 16,212,174, 67,213, 40,175, 74,188, - 75, 36, 18, 40,149, 74,244,233,211, 71,156,152,152, 56,225,239, 46,180,170, 4, 76,120, 40, 68, 3, 7,189, 38, 10,143,236,106, -190,158,188, 63,167, 93,176, 42,103,220,112,167, 3, 0,112, 45, 73,229,124, 61,205, 5,225,145, 67,233,192, 65,174, 49,170,130, - 53,237, 35,194,136,165,161,116, 61, 0,224, 44,151,140, 26,208, 63, 86,233,168, 80,240,190, 89,178,246,208,191,254,245,221, 83, - 59, 14,252, 59,188,195, 55, 75, 30,132,119, 24,208, 63,150, 77,189,149, 58, 10,192, 58,123,197,203,208,161,195,174,254,244,203, - 79, 72, 77, 62,233,247,193,244, 14,226, 18,149, 21, 50,135, 64,196, 68,123, 99,205, 47, 55,113,253,250,245, 2,179,217,220,167, -193,190, 68,104, 80,114, 74, 82, 88,251,200, 8,159,241, 19, 38, 57, 13, 29, 58, 28,251,247,239,197,175,235,215,157,121,126,236, -200, 31,243, 74,181,124, 47,161, 92, 36,167,172,152, 47,114, 22,136, 36,178, 66,179,249,193, 26, 8,161, 80,234, 4,140, 98, 27, -152, 57,196,148, 73,227,156,251,246, 31,142, 3, 7,247,226,215,245,107, 78,127, 28,249,194,186,224, 78,225, 36,246,169,175,167, - 6,183, 10,110,161,171, 80,105,121, 68,108, 49, 26, 89,199,175,215,103,125,123,119,222,132,187, 87,147, 70, 45,225, 86, 29, 62, -132, 27,191,198,197,117,121, 39, 35, 67,228,217,189,187, 76,121,234,148,188, 50, 19, 73,131, 66, 75, 32, 16,128,214, 63,213,245, - 16, 39,217,176,129, 7,160,193, 69, 88, 34,145, 8,122,189, 30, 86,192, 98, 15,167,239,145, 35, 57, 25, 25, 25,161,110,110,110, - 15,137,172,146,146,146,234,109,163,209, 8,189, 94, 15,153, 76,150,108, 15,167,234,204, 25,227, 87,211,167,207,127,113,236,216, -229,199, 79,156,144,186,187,187, 67,163,209, 60, 36,180,204,102, 51,250,246,235, 39, 90,124,245,234,120, 0, 11,236,185,158,222, -125,250, 52,234, 15,204,231,243,193, 62,225,169,195,127,192, 96,117, 82, 93,194,139,215,216, 20,142,189,171, 14,235,122, 65, 18, - 66,250,215,218, 53, 47, 38, 38,198,152,158,158,142,160,160,160,106,177, 82,243,156, 78, 78, 78,112,113,113,193,149, 43, 87,240, -197, 23, 95, 24, 0,204,107,136,147, 82, 90,174,215,235,199, 12, 24, 48,192, 32, 16, 8,208,174, 93,187,234,248, 89, 44,203, 66, - 44, 22, 67,161, 80,224,234,213,171, 24, 54,108,152, 94,175,215,143,169, 29, 67,171, 14, 78,141, 94,175,127,105,224,192,129,250, -148,148, 20,244,232,209, 3,215,175, 95, 71, 69, 69, 5, 42, 42, 42,144,153,153,137,136,136, 8,232,245,122,172, 92,185,210,160, -215,235, 95,162,148,106, 26,226, 44, 47, 47, 31, 54,107,214, 44,254,230,205,155,131,253,253,253, 35, 59,119,238,220,182, 95,191, -126,173,159,123,238,185, 22,113,113,113,190,161,161,161,198, 65,131, 6,121, 14, 25, 50,196, 83,175,215, 11,255,248,227,143,124, -171,213, 58,164,145,235, 89, 45, 78,210,211,211,171,167, 10, 5, 2, 1,138,138,138,170, 35,247, 87, 61,148,234, 18,194,245,113, -214, 20,219, 85, 2,171, 74,112, 53,246, 14,168,135,179,209, 23,135, 88, 44,174,178,120,210,198, 56, 41,165,215,110,221,186, 53, -160, 87,175, 94,215, 94,123,237,181,242,130,130, 2, 56, 58, 58, 34, 36, 36, 4, 97, 97, 97,240,240,240,128,197, 98,193,238,221, -187,117,123,246,236,185,169,209,104,250,212,142,161, 85,155,147,199,227,101,214,245,144,173,178,102, 85, 9, 45,169, 84, 10,127, -127,255,170,107,155,217,148,235,217,204, 31,239,147,229,172, 20, 48,253,250, 14,106, 21, 23, 63,194,121,247,222,115,226,229, 43, -246,220,140,233,143,181,238, 45,181,251,220, 91,106,247,197,244,199,218,229, 43,246,220,220,189,247,156, 56, 46,126,132,115,191, -190,131, 90,165, 36,167,182,125, 40,239, 97, 29,245,148, 74,165, 93,123,116,143, 41, 77, 60,123,154, 77, 88,252, 3,175,111,159, -231,175,174,251,113,247,238,117, 63,238,222,221,183,207,243, 87, 19, 22,255,192, 75, 60,123,154,237,209, 61,166, 84, 42,149,118, -181,167,237, 83, 38,141,115,142,143, 27,142,253,251,119, 51, 59,182,172, 92,188,117,231,237, 94,175, 79, 59,163, 74, 79,191, 78, - 11,115,143, 64,200,203,198,173, 91,183, 52,102,179,185, 79, 93,142,240,117,113, 78,126, 99, 92, 77,145,245,187,187, 79,143,181, -183,110,193,118,236,216,111,214, 19, 39,174, 26,126,191, 86,168,185,156, 82, 84,162, 84,151,220,211,106,139,205, 44,107,131,205, -102,227,127,250,233, 3,135,221,250,238, 81,183,110,189,113,242,248, 38,172,255,101,181,134,101, 97,124, 97,251,118,219,168, 81, -159,208, 22, 45, 91,182,216,184,101, 19, 25,250,236, 8,103, 10,176,195, 70, 14,119,217,188,117, 51,105,213,166, 85,203,144,144, - 7, 33,109,254,150,125,233, 9,112, 46,160,180, 84,155,157,125,250,202, 15, 63,152,188,199,140,113, 19,123,123, 59,193,102, 35, - 85,207,247,250, 62, 2,129,224, 33, 11, 76, 67,156,254, 30, 30,121,251,246,237, 67, 88, 88, 24,252,253,253, 81,211, 71,182, 42, - 32,183,187,187, 59,118,238,220, 9, 10, 92,182,135,179, 83,112,240,149, 69, 95,125,101,102, 89, 22,165,165,165,255, 97,205, 42, - 45, 45, 5,203,178, 56,120,224,128, 89, 91, 81,177,222,222,182,247,225,243, 43, 94,236,217, 51, 33, 62, 62,222,146,145,145, 1, -150,101, 81,211,178, 85, 88, 88, 8, 7, 7, 7, 24, 77,166, 64, 66,136,220, 30,206,194,195,135, 21,104,228,185, 94,219,162,245, - 36,238,251,223, 93,100,213, 76, 40, 93, 83,116, 53,104,209, 98, 24, 6,129,129,129, 15,165,116,225,241,120, 15,125,154,178,226, -144, 82,186,129, 16,114,100,208,160, 65,243,159,126,250,233, 41,243,231,207,231,183,109,219, 22, 26,141, 6,174,174,174,240,242, -242, 66, 90, 90, 26,246,237,219,103, 43, 42, 42, 90, 5, 96,161, 61, 75,232, 41,165,167, 8, 33, 67, 59,116,232,176,117,206,156, - 57,206, 3, 7, 14, 20, 6, 6, 6,130, 82,138,171, 87,175, 98,215,174, 93,150,117,235,214,105, 43, 69,214, 41, 59,235,122,148, - 16,242,252,144, 33, 67, 54, 78,152, 48,193,209,102,179, 9, 51, 51, 51, 97, 50,153, 96,181, 90,113,255,254,125,203,254,253,251, - 43,244,122,253, 56, 74,233, 81, 59,248,174, 16, 66, 34,142, 29, 59, 54,225,143, 63,254,248,226,181,215, 94,115,239,215,175,159, -136, 97, 24,156, 61,123, 86,221,169, 83, 39,175,194,194, 66,203,206,157, 59,139,141, 70,227, 60,155,205,102, 87, 10, 30, 66, 8, -180, 90, 45, 60, 60, 60, 96, 50,153,192,178, 44,204,102, 51, 28, 28, 28,170,211, 38, 81, 74,209, 20,231,250, 90,125,128,111,177, - 88, 48,118,236, 88,176, 44,139,165, 75,151,130, 97,152, 38,147, 57, 59, 59, 95,190,118,237,218,208,232,232,232,106,241, 82,213, -135, 36, 18, 9, 60, 60, 60,224,238,238,142,253,251,247, 67, 40, 20, 94,182,243, 30, 93, 7,208,137, 16,210,245,230,205,155, 47, - 3,136,182, 88, 44,254, 54,155,141,240,120,188,124, 74,233, 13,173, 86,251,163,189, 41,120, 10, 11, 11,191,120,229,149, 87, 58, -109,218,180,201, 65, 32,248,247, 79, 67, 32, 16, 64, 34,145,160, 42, 56, 38,165, 20,102,179, 25, 31,125,244,145, 86,167,211,125, -241, 79,121, 80,196,116,142,197,154,149,203, 28, 78,156, 60,162,190,117, 27,187,106,134,112,112, 17, 3, 39, 79,147, 92, 85,193, -154,246,202,156, 28,135,152,206,177,118,113, 90,205,150,226,151,198,189, 23, 84,153,130,231,163,204,204,172,213, 27, 55,124,123, - 23, 0,190,254,110,105,168,170,184,108,114,234,173,212, 81,171, 87,111,233,106, 53, 91,138,237,225,252,183,120,217,168, 1,133, -145, 82,122,145, 16, 18, 60,108,204,225,121,109, 90, 57, 61, 91, 88,108,200,171,168,208,191, 77, 41,189,107,111,219,187,119,235, -133,147, 71, 55,227,215,245, 27,181,148,229, 27, 61, 60, 60, 40, 0,220,186,229, 65,111,221, 42,163,255,246, 43,118,209, 9,233, -245,133,239,189,221,239, 61,141,182,228,187,239, 86, 52, 28,184,182, 67,199,167,209,161,227,211,152,246,246,135,206, 17,145,237, -130, 0, 96,251,118,106,139, 10, 37,191,205,255,248,147,103, 23, 46,252, 4,218,114, 19,170,210,245,164, 37,165, 28,200,200,160, -102,238,181,245, 48,230, 51,204, 69,188,247, 94,168,190,164,196,179,251, 7, 31,120, 8,222,127,159,215,144, 51,124,205,223,175, - 61,156,151,110,220, 56, 48,249,245,215,243, 22,204,159, 63,104,213,234,213,178,246,237,219,163,160,160, 0,237,218,181,131,191, -191, 63,142, 29, 59,134,157,219,182,233,202,202,203,231, 1,248,151, 61,156, 27, 14, 30, 76,107, 27, 25, 89,180,122,245,106,191, -248,248,120,162,211,233,160,209,104,160,209,104, 96, 50,153, 80, 25, 16,154,166,223,190,125,203,106,181,174,178,183,237, 54,181, - 90,186, 48, 54, 54, 87,196,178,139,158, 31, 57,114,214,194,207, 62,147,180,106,213,138,152, 76,166,106,171,150,197, 98,129,131, -131,131,197,108, 54,187, 3,208,219,195, 41, 89,183,142, 81,171,213,240,244,244,172, 14,215, 84, 51, 46, 97,121,121, 57, 40,165, - 92, 48,221,230,136,176,250,222,229,110,110,110,151, 5, 2, 65, 64, 77,235, 86, 93,185,243,106,238,179, 90,173,185,106,181, 58, -166,166,226,165,148, 30,175, 71, 32,132, 0,248,178,111,223,190,207,207,156, 57,147, 36, 38, 38, 98,207,158, 61,244,238,221,187, - 59, 0,204,171,239, 33,217, 8,167,163, 68, 34,153,161, 80, 40,250, 87,133,112,144,203,229, 55,117, 58,221,113,147,201,180,180, -190,104,240,141,112, 58, 73, 36,146,233, 10,133, 98, 64,121,121,121, 52, 0, 56, 58, 58, 94,211,233,116,199, 76, 38,211,178,250, - 18, 85, 55,194, 41,115,118,118,254,194,195,195,227,165,247,223,127,223,253,204,153, 51,249, 39, 79,158, 20,149,149,149,109, 50, -155,205,245, 38,149,174,139,211,221,221,253, 50,159,207, 15,120, 18,247, 8, 0, 58,118,236,184,127,216,176, 97,241,227,198,141, -131,213,106,197,191,254,245, 47, 28, 59,118,236,192,237,219,183,135, 54, 52, 26,173,205, 73, 8,241, 8, 8, 8, 72,156, 50,101, - 74,139,177, 99,199,202, 93, 93, 93, 33, 16, 8,160,211,233,112,231,206, 29, 92,189,122,149,238,221,187,183,226,202,149, 43,185, -122,189,190, 55,165,180,200,222,235,249, 40,163,230,218,156, 66,161,176, 87, 96, 96,224,150, 5, 11, 22, 56, 14, 24, 48, 64,230, -238,238, 14, 62,159, 15,171,213,138,252,252,124, 36, 37, 37,225,200,145, 35,186, 29, 59,118,232,138,139,139,199, 82, 74, 79,255, - 47,234,249, 56, 57, 35,194,200,199,181, 18, 69,215, 27,237,189,161,178,246,212,179, 95,111,191,225,163,158, 31, 50, 24, 0,182, -239, 60,116,248, 68,162,114,111,115,235,217, 88, 93,237,225, 12, 15,229, 47, 72, 78, 73,122, 40,160,101,100, 68, 84,122,120,251, -145,159,219,195, 85, 21, 25,190,118,219,107, 68,219,175,105,211,125,104,154,181, 42,241,244,135,243,230,226,203, 47, 18,176,119, -251,238, 3, 41, 25,116,255,223,185, 47, 61, 73,206,170, 36,200,114, 95,223,158, 75, 89,118,238,245,164, 36,135,154, 3,182, 42, -203,115,205, 65,165,159,159, 95,161, 82,169,244,182,135,115,232,247,223, 91,244, 10,133,100,238,162, 69,189, 42,140,198, 94, 11, - 23, 46, 20, 92,186,116, 9, 43,127,248,129, 49,230,230,110, 84, 3,211,235,154, 13,105,136,179,197,244,233,210,217, 43, 87, 78, - 12,105,211,198,235,229,151, 95, 22, 10,133, 66,232,116, 58,228,228,228,224,232,145, 35,230,148, 91,183, 82,180, 90,237,179,148, - 82,165,189,156, 67,191,255,222,226, 18, 18, 2,185,167, 39, 61,113,234,148,243,228, 25, 51,166,180, 12, 14,118, 30, 52,120,176, -208,201,201, 9,165,165,165,200,204,204,196,238,221,187, 11, 43, 42, 42,252, 40,165, 54,123, 56, 55,254,241, 71,135,131,167, 79, -191,240,249,231,159,139,163,162,162,224,236,236,140,242,242,114, 36, 37, 37,225,244,233,211,166, 85,171, 86,105, 52, 26,205, 20, -134, 97,246, 61,169,251,254, 79,157, 58, 36, 79,210, 21,192,158, 27, 65, 8,137, 1,240,113,229,215,207,236,200, 25,248,143,121, -248, 16, 66,130,220,220,220,214, 24,141, 70,106, 48, 24, 38, 83, 74,239,255,213,234, 73, 8, 17,196,196,196,172, 44, 44, 44,236, - 74, 41,133,179,179,243,185,228,228,228, 55, 41,165, 76, 83, 57, 9, 33,124, 0, 93, 29, 28, 28, 98, 29, 29, 29,123,153, 76,166, -240,202,233,183, 91, 58,157,238,180,197, 98,185, 8,224, 28,165,212,246,191,108,123,101, 61, 7,248,249,249,189,206,178,108, 27, - 66,136,139,205,102,131,213,106, 45, 99, 89,246,142, 70,163, 89, 7,224,216,255,186,158,143,139, 51,178, 13,121,142,242, 16, 94, -159, 32,120, 72,216,212, 18, 16,132,197,173,228, 59,116,119, 19,250, 60,111, 72,255,192, 21,192,131,149,137,141,165, 50,122, 72, -104,217, 33, 94,154, 44, 50,219, 8, 94,161,132, 6, 61, 60,250, 36,247,219,117,120,238,215, 71, 17, 90,246, 34,178, 45,233, 5, -138,174, 44,197,197, 91,183,233,201,127,234,179,238,113,114, 38, 16,226,246,131,171,235, 57,158, 64,224, 3,128, 87,105,125, 97, - 89, 66,108,148, 16,166,230,244, 86,205,129,101, 99,156, 22,160,189, 80, 34, 9,180, 49,140,119, 1,224,112,208,102,123,202, 72, -105, 69, 0,240,241, 85, 74,211,154, 83, 79, 11,208,158, 47,145, 4, 29,164,116,184, 90,161,232, 80,104, 48,120, 2,160, 14, 10, -197, 45,173, 78,183,222,104, 52,174,168, 35,121,123,163,156, 34,137, 36,192,198, 48,222, 0,192, 19, 8, 10,183,154, 76,129,185, - 78, 78, 47, 27, 77,166, 22, 14, 14, 14, 86,179,217,172, 53, 26,141,227,172, 86,235,137,166,180,253, 14,195, 68,252,193,227,245, -176, 40, 20,238, 22, 66, 20,102,134,177,152, 45,150, 28,163,209,120, 19,192,183,148,210,140, 39,121,223,255,177,168, 90,157,246, - 36, 62, 0,250,115,156, 28, 39,199,201,113,114,156, 28, 39,199,249,228, 57, 1,200, 1, 4, 1,224,255, 29,219,254, 79,250, 0, -152, 84,181, 45,224,164, 38, 7, 14, 28, 56,112,224,240,143, 48,156,232, 81,135, 79, 22,135,255, 45, 8,128,254,245,220, 48,187, - 77,130,205, 89,125, 96,199, 20, 3,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 48,206,198,184,255,142, 83,146, 13,229, - 58,228,166, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228,166, 14,159,208,135, 7, 14,245,169, 83,111, 66,136,247,227, - 46,203,225,159,221, 23,234, 56,214,159, 16,226,223,196,242,190,220, 85,231,192,129, 3,135,127, 6,254,235, 66,203,222,151,214, - 35,190,220, 30, 73,248, 16, 66, 18, 8,129,242,193,135, 36, 60,174,178,118,156,215,207,211,211,243,157,200,200,200,141, 62, 62, - 62,211, 8, 33, 94, 77, 60, 62, 84,161, 80, 44,115,112,112, 72,116,112,112, 72, 84, 40, 20,203, 8, 33,161,143,233,190, 17, 66, -200,100,169, 84,122,202,207,207, 47, 79, 34,145,156, 34,132, 76, 33,205, 76,112, 73, 8,105, 75, 8, 89, 72, 8,249,140, 16,210, -161, 41,199,122, 71,141,216,230, 21, 53,226,134, 87,212,136, 36,143,246,207,134,122, 69,141, 72,242,138, 26,113,195, 59,106,196, -182, 39,208, 95,155,125,127, 43,143,189,255,224,211,248,177,132,144,111, 9,144, 67, 8,114, 31,181, 47,113,224,192,129, 3,135, -191, 6,154,228, 12,239,239,239,255, 60,165,116, 50, 0, 74, 8, 89,147,151,151,183,179, 25, 47,158,217,149,219,139, 41,165,115, - 31,165,156, 29,199,126, 71, 41,157,213,116,145,134,217, 44, 75,121, 0,192,227,145, 15,188,189,189,229,124, 62,255, 63, 28, 12, -109, 54,155,156, 16, 76, 99, 89, 74, 42,203,206, 38,132, 44,163,148,170,154, 35, 14,199,143, 31,255,221,178,101,203,164,114,185, - 28,217,217,217, 3,167, 76,153,210,141, 16,242, 30,165, 52,191,177,227,101, 50,217,139, 93, 98,187,190,183,232,235, 37, 14,222, - 94, 94, 10,198,198, 90, 50,179,179,228, 31,205,153, 21, 43,147,201,150, 53,148, 76,185,182,160, 2, 48, 73, 32, 16,140,150, 74, -165,173,141, 70, 99, 6,195, 48, 59,248,124,254,160, 47,190,248, 34, 42, 46, 46, 78,170,213,106,197, 12,195,180,249,245,215, 95, -223,251,233,167,159,134, 16, 66,134, 55,180, 76,191,202,162, 67, 41,205,171,177,251,133,236,236,236, 24,145, 72, 68, 66, 66, 66, -120, 0,110, 52, 82,190, 26, 20, 8, 77, 62,187,189, 61, 0, 68,118, 31,149,158,124,118, 59, 42,183,159,192,160,224,225,190, 32, -149, 74, 87, 25,141,198,251, 85,255,175,172,167,202,158, 99, 9, 33,203, 43,211, 7,197, 0,120,185,178,232, 6, 74,233,101, 66, -136,143, 84, 34,153, 97, 48, 26, 9, 0,242, 40,125,137, 3, 7, 14, 28, 56,252,215,141, 72,157, 40,165, 87, 43,103, 36,226, 1, - 28,168,122,119, 55,117,213,225, 91,183,111,223,118, 0,128,176,176,176, 55, 1,236,108, 66, 37,254,227,197,211,175, 95,191, 78, - 50,153,236,161, 40,200, 6,131, 65, 76, 8,250, 53, 71,188, 84,157,195,108, 54,241,132, 66, 49,120, 60,242, 94,135, 14, 29, 90, - 22, 21, 21,157,225,241,120, 27,115,115,115, 75,155,113,241,176,118,237,218, 48, 95, 95,223,255,136,214,156,159,159, 47, 30, 62, -252,217, 38,241, 77, 36, 68, 98,146, 72, 98, 69,132,248,218, 24,198, 5, 0, 4, 2, 65,105, 91,103,231,152, 47, 63,255, 92, 78, - 8, 97,139,139,139, 97, 48, 24,240,238,187,239,202, 82, 82, 82, 70, 0, 88,209, 72, 29,195,158,126,166,219,187, 71,142, 28, 14, -215,150,148, 26,215,126,183,250,138, 65, 32,210, 7, 71,180, 19,173, 92,179,222,117,210,196,113,111, 19, 66,174,213,149,142,164, - 22, 15, 15,192,238, 25, 51,102, 68, 14, 29, 58, 84, 92, 94, 94, 46, 53, 24, 12, 45, 55,110,220,248, 81, 76, 76,140, 67,116,116, -180,120,203,150, 45, 68,163,209,128, 82, 42,111,215,174, 29, 29, 61,122,180,113,235,214,173,211, 0, 44,111, 76,248,242,249,252, -165,109,219,182, 93, 80,217,102, 81,141, 50,194,136,136, 8, 5, 0,164,165,165,125, 74, 8,102, 52, 36,178, 9,112, 59,178,251, - 40,128,160, 77,242,217,237,210,200, 30,163,140,160,184, 67,128,219,149, 3,130,133, 64,141,184, 80, 15,227, 86, 94, 94, 94,179, -114, 19,198,199, 15, 37,132,144, 29,126,126,126, 59, 11, 11, 11,131, 9,193, 27,246, 14, 6, 8, 33,196,221,221,253, 21, 0, 9, - 0, 94,191,117,235, 86, 39, 0, 8, 15, 15, 23, 1,184,236,228,228,212,205, 98, 54, 19,238,113,197,129, 3, 7, 14,127, 75,116, - 2,112, 21, 64,124,141, 20, 60,107,154, 35,180,196, 0,112,230,204, 25, 0,144, 52, 71,244,213, 20, 48,211,167, 79,135,175,175, -111,109,241,130,196,196, 83,143,210,216,135,206,241,217,103,159, 57,148,149,149,245,255,241,199, 31,123,250,251,251,127,147,151, -151,119,161,161,131, 41,165, 42, 66,200,226, 74, 11, 4, 36, 18,105,250,148, 41, 83,174, 86,254,187,229,111,191,253, 38, 31, 54, -108,152, 30, 64, 22, 0, 72, 36, 82,127, 62,159, 23,246,192,233, 13,139, 27, 18,132,163, 8, 9, 17,139,197,125, 39,127,255, 61, -243,212,176, 97, 2,133,167, 39, 1,128,172,212, 84,247,197, 95,127,221,173,244,238, 93,177,193,221,189,184, 88,167, 51,164,167, -167, 67, 34,145, 16, 62,159,255, 84, 99, 13, 86, 40, 20,239,124,254,229, 34,133,182,164,204, 96,212,150,155,249,140,213,228, 40, -147,219, 84, 5,133,197, 14, 50,133,254,131,143, 63, 17,191,245,198,132,119, 0,188,217, 8,213,180,247,222,123, 47,188, 75,151, - 46,254,219,182,109, 35, 26,141, 6, 2,129,192, 33, 58, 58, 26, 49, 49, 49,182,147, 39, 79,146,224,224, 96, 68, 69, 69,225,236, -217,179, 56,119,238, 28,233,212,169,147,124,215,174, 93,227,235, 18, 90,181,197, 53,159,207,123,183, 93,187,118,209, 10,133,194, - 28, 22, 22,134, 55,222,120, 3,148, 82,244,239,223, 63,202,193,193, 97,167, 78,167, 19,167,165,165,246,108, 76,100,171,146,246, -140, 6, 0,175,168, 17, 55, 0,180, 7,197,157,194,164, 61, 53,167, 31,195,211,210,210,158, 46, 45, 45,173,118, 70,172, 74, 96, -222,179,103, 79,187, 59, 82, 85, 95, 24, 54,108,232, 7, 0, 33,253,251,247, 47,155, 54,109, 26, 47, 53, 53,245,165,231,158, 27, - 17,117,251,246, 29,212, 87,207, 90,253,136,188,242,202, 68,149,131,131,195, 72, 63, 63,191, 52, 0, 2,145,168, 90,103,242,189, -189,189, 61, 59,116,232, 48,213,205,205,173,144,207,227,121, 81, 80,218, 88, 95,226,192,129, 3, 7, 14,127, 41, 28,168, 20, 87, - 7,106,255, 67, 0, 0, 7, 14, 28,160,255, 30,181,199,147,134, 94, 60,215,175, 95, 15,212,235,245,176,231, 37, 80,115,137, 38, -165, 84,197,231,243, 87,242,120,228, 77, 66, 8,162,162,218,223, 91,186,116,105, 93, 57,189,204, 81, 81,237,239,241,249,188, 86, -148, 82, 16,194,251, 23,203,218, 84,117,113,214,247, 98, 20,139, 37,179, 1,192,199,199,247,238,161, 67,135,204, 47,188,240, 2, -190,254,250,107,209,156, 57,115,102,181,104,209, 98, 90,118,118,118, 65,125,245,172,252, 62,215,219,219, 91,190,118,237,218,176, - 41, 83,166, 92, 85, 42,149,115, 1,192,207,207, 47, 1, 64, 4,128,172, 26,251,176,106,213,214,188, 55,222,120, 35, 93,165, 82, -205,173,143,243,121, 66, 90,183,104,215,174,239,194, 51,103, 40,207,100, 34, 69,191,255,174, 85,171, 84,214, 12,181, 90,254,203, -229,203, 67, 63, 74, 72, 16, 6, 6, 5, 33,113,223, 62,143, 34,189, 94,173, 49,153,140, 42,149,138, 50, 12,115,206,142,182, 71, -122,121,122,201, 87,127,251,175, 75,142, 66, 62,235, 21,224, 79,132,110,110, 2,158,220, 73,204, 23,240, 76,173, 90,134,138, 1, - 68, 54,118,143, 68, 34,209,248,129, 3, 7,202,183,110,221, 74,162,162,162,224,226,226,130,223,127,255, 29,215,174, 93, 67,105, -105, 41,207,106,181,162,115,231,206, 88,180,104, 17,130,130,130, 80, 86, 86,134,251,247,239,123,136,197, 98,207, 6,174,231, 67, -253,105,246,236,217,240,245,245, 5,195, 48, 40, 41, 41, 1,195, 48,112,112,112, 0, 0,228,230,230, 98,223,190,189,141,246, 37, - 59, 69, 18,158,121,230,153,114, 66,200,173,218, 22,173,166,112,250,251,251,111, 81,171,139,134,244,237,219, 23,165,165,165,214, - 79, 62,249, 4, 29, 58,116, 64, 88, 88,152, 61,125,126,174, 68, 34,249,177, 69,139, 22,223, 78,159, 62,221,215,205,205, 13, 38, -147,233,163,130,130, 2, 76,157, 58, 21, 0, 16, 23, 23,215, 65, 40, 20, 30,122,237,181,215, 16, 28, 28,156, 87, 82, 82,114,255, -202,149, 43,111,232,116,186,164,230,182,221,206,235,195,113,114,156, 28, 39,199,249,151,226,180, 87,139,252, 21, 81, 57, 77,184, -166,198,247, 53, 15, 9,173,248,248,120,114,224,192, 1,106, 71,195,138, 3, 2, 2, 2,101, 50, 25, 0, 20, 55,181, 34, 54,155, -109,154,135,135, 71,225,220,185,115,187,135,133,133,153,167, 77,155,150,148,153,153, 57,175,102,153,224,224,224, 47,126,248,225, - 7,164,167,167,103, 37, 36, 36,156, 45, 42, 42,250,172,137,141,157, 67, 8, 89, 90,105, 29, 43,218,183,111, 95,135, 51,103,206, -188,249,221,119,223,121,190,245,214, 91,162,119,222,121,103, 28,128,175, 27,227,225,243,249,250,186,166, 11,235,130,175,175,175, -185, 46, 31,174, 42, 12, 35, 68,230, 36, 22,247, 89,120,230, 12, 53,103,101,233,127, 90,178,196,113,245,159,127, 46,176, 82,234, -237,229,229,133, 30,221,186, 85, 72,249,252,162,194,130, 2,214,171,117,107,126,230,161, 67, 30, 6,177, 88,185,117,235, 86, 77, -113,113,241,158, 70, 77,120,132,104, 89, 74,205, 14, 1, 65,214, 23, 70, 12,136,186,116,241, 90,170,163,151, 7,175, 83,116, 84, -135,212,244,172, 43, 96, 89, 11, 33, 68,219, 24,143,179,179,115, 88,113,113, 49,180, 90, 45, 60, 61, 61,177,116,233, 82,248,248, -248, 64,175,215, 35, 57, 57,153, 6, 4, 4,144, 51,103,206, 32, 32, 32, 0,106,181, 26,102,179, 25,229,229,229,133, 38,147,201, - 80,159,240, 21, 8, 4, 63,243,120,100, 34, 33, 4,173, 90,133,100,175, 88,177,194,204,178, 44,194,195,195,241,220,115,207, 97, -215,174, 93, 72, 78, 78,174,178, 60,153, 91,180,104,153,205,227,145, 22,149, 90,169,217, 86,157,170,212, 62,121,121,121, 35,155, -101, 22, 37,132,231,231,231, 55, 46, 52, 52,244,205, 23, 95,124,209, 42, 22,139,161,211,233,170,174,133,117,200,144,184,178, 97, -168,130,175, 28, 0, 0, 32, 0, 73, 68, 65, 84,195,134, 58, 31, 56,112,160,193,122,154, 76,166,187,222,222,222,175,191,247,222, -123, 27, 87,173, 90,229, 58,111,222, 60,176, 44, 11, 74, 41, 24,134,169, 78,250,205,178, 44,118,239,222,141,140,140,140, 47,106, -138, 44, 14, 28, 56,112,248,255,130, 38,104,145,191, 28,106,248,102,161,182,216,250,175, 71,134,231,243,249,171,143, 30, 61, 26, -221,179,103, 79, 65,191,126,253,162, 2, 2, 2,162,114,115,115,147, 0, 32, 32, 32, 32,106,240,224,193, 81, 94, 94, 94, 88,182, -108,153,158,207,231,175,110,166,178,172,249,210,187,234,235,235,251,205,174, 93,187, 22, 79,158, 60, 25, 62, 62, 62, 17,255,237, - 54, 59, 73, 36,157, 94, 91,186,148, 17, 90,173,188,239,191,249,198,105,201,169, 83,139,183,109,223, 46,120,230,153,103, 8,165, - 20, 55,111,220,144, 45, 90,190, 92, 62,118,196,136,172,180,187,119,153,189, 71,142, 88, 85,121,121, 37,121,106,245,124, 74,105, - 73, 99,252, 86,171,245,252,237,219,183,253,122,244,122,198,255,244,159, 73,215, 94, 24, 17,215, 87, 40,224,145, 59, 89,185,151, -125,125, 60,156, 19, 79, 29, 55, 88,173,214,243,141,241,232,116,186, 76,134, 97,220, 40,165,158,137,137,137,240,244,244, 68,105, -105, 41,172, 86, 43,204,102,179, 89,175,215, 75,139,139,139, 97, 52, 26, 97, 50,153,224,228,228,132,155, 55,111,170, 24,134, 57, - 89, 31, 39,195, 48,175, 73,165,210,207,132, 66,161, 88, 36, 18, 41, 47, 95,190, 12,173, 86,219,210,197,197,229,107,134, 97,160, - 84, 42,113,230,204,153,247,157,156,156,178, 0, 64, 42,149, 66, 44,150,184,155, 76, 38,166, 62,103,120,123, 45, 90,205,133,175, -175,111, 80,171, 86,173, 22,126,240,193,236,240,142, 29,163,161, 86,171,193,178, 44, 20, 10, 5,244,122, 61,156,156,156,208,181, -107,215,204,133, 11, 23,230, 83,138, 73,141,137, 65,149, 74,165,246,247,247,159, 54,121,242,228,207,194,194,194, 90, 81, 74, 17, - 26, 26,138,129, 3, 7,226,208,161, 67, 72, 79, 79,135, 78,167,179, 93,184,112, 97,179, 82,169,252,141,123,220,114,224,192,129, -195,223, 79, 39, 86,249,102,213,180,102,253, 79,132,150, 74,165, 82, 7, 4, 4, 28,190,114,229,202,208,209,163, 71, 35, 49, 49, -241, 21, 0,239, 1,128, 68, 34,121,101,244,232,209,184,114,229, 10, 82, 83, 83, 15,171, 84, 42,245,227, 56,167, 88, 44, 54,154, -205, 15,140, 83, 82,169, 84,218,196,195, 91, 86, 78, 25, 2, 64,203, 6,246,213, 11,158, 64,224,219,126,240, 96, 65,233,181,107, -218,181, 23, 47,126,182,113,227, 70, 65,247,238,221,137,213, 98,129,141,101, 17, 18, 18, 66,250,245,239,175,248,121,227, 70, 55, -155, 78,119,230,243, 15, 62,248,125,205,107,175, 85,164, 83,154,101, 79, 5, 77, 38,211,242, 55,167,190,222,255, 84,226,239,254, - 17,237, 90,187, 29, 62,122,234,170,187,187,179, 60,172, 77, 27, 69,113,105,137,109,222,156,247, 5, 38,147,233,251,198,120, 12, - 6,195,238,227,199,143,143, 8, 12, 12,244, 76, 74, 74,130,217,108,134,205,102, 67,191,126,253, 64, 41,149, 0, 96, 5, 2, 1, - 82, 83, 83, 97,177, 88, 10,111,223,190,173,188,115,231,142, 4,192, 87, 13,241, 26,141,198,236,154,223, 3, 3, 3, 7,196,199, -199,131, 97, 24, 12, 30, 60, 24,123,247,238, 29,144,146,146,178,164,166,230,123,212,123, 94,105, 33, 11,247,247,247,223, 85,185, -203, 46, 39,248,128,128,128,168,208,208,208, 85, 95,125,245,149, 40, 32, 32, 0,148, 82,184,186,186, 64,175,215,163,168,168, 24, - 17, 17, 17, 8, 12, 12,196, 87, 95,125, 5, 0,155,237,181,184,229,229,229,221, 1, 48, 58, 34, 34, 66, 84, 86, 86, 22, 51, 96, -192,128,101,253,251,247,199,213,171, 87,241,251,239,191,143,149, 72, 36,133, 22,139,133,241,245,245,157, 68, 8,113,178, 88, 44, -155,138,138,138,242,185,103, 23, 7, 14, 28, 56,252, 45, 80,229,163, 85, 29, 37,190,201, 22,173,136,136, 8,133, 70,163,121,185, -101,203,150, 98, 0,144,201,100, 17,173, 91,183,158,149,145,145, 81,222,212,218,232,245,250,109, 27, 55,110, 28,248,237,183,223, -138,226,226,226, 90, 7, 4, 4,116, 1,128,145, 35, 71,182,118,116,116,196,198,141, 27, 45,122,189,254,177,197, 68,178, 90,173, - 61, 59,119,238,140,146,146, 18,100,101,101, 53,105, 90,230,183,223,126,147,227,129, 95, 86,131,251, 26, 2, 99, 54,187,186,248, -251,243,242, 78,157,178,148,104,181,190, 61,123,245, 34, 86,139, 5, 60, 30, 15,197,197,197,184,127,255, 62,156, 93, 92, 72,234, -237,219, 14,235,102,207,254,173,101,199,142, 98,155,217,236,222, 4, 81,161, 35,132, 76,124,123,218, 91,187, 55,109,218,236, 89, -166,213,102,200,100,114,147, 68, 34,242,153,254,246,219,182,146,146,146, 9,148,210, 10, 59,168,190,218,180,105,211,224,193,131, - 7,223, 8, 10, 10,242, 82,171,213, 62,101,101,101,182,146,146, 18, 62, 30,248, 90, 17, 0, 56,117,234, 20,180, 90, 45, 99,179, -217,206, 0, 88, 72, 41, 53,219, 91,215,150, 45, 91, 58,199,198,198,246,246,244,244,132, 70,163,129,187,187, 59,162,163,163,123, -183,108,217,242,199,172,172, 44,205,227,236,245,199,142, 29,115,164,148, 62, 77, 41,197,224,193,131,237, 58,198,102,179,189, 26, - 31, 31, 47, 34,132,192, 96,208, 67, 42,149, 65,161,112,128,163,163, 19,194,194,218, 66,169, 84, 98,208,160, 65,230,140,140,140, -149,249,249,249, 77,238,163, 26,141,102,120,215,174, 93,103, 78,157, 58, 21, 12,195, 96,248,240,225,200,201,201, 89,146,153,153, -185,213,207,207,111,220,171,175,190,234,233,238,238,142,153, 51,103,202, 0,124,202, 61,187, 56,112,224,192,225,175,143,218, 62, - 90,117, 90,180, 26,154, 19,245,245,245,237,225,230,230,246,145,193, 96, 16, 87, 77,201, 16, 66,196,158,158,158,123,253,252,252, - 18,148, 74,101,147,156,226, 74, 75, 75,181,190,190,190,123,207,159, 63, 63,106,228,200,145, 56,118,236,216,132, 74,161,133,243, -231,207,227,222,189,123,123, 75, 75, 75,181,143,163,241, 1, 1, 1, 67,122,247,238, 61,178,115,231,206,216,191,127, 63,108, 54, -219,185,166, 28, 95,115,133, 33,234, 88,117, 88,181,207, 46, 50, 62, 31,132, 16, 48, 12, 3, 0, 40, 82,171,145,158,150,134,146, -210, 82,152,140, 70,232,244,122, 91, 88,112,176, 65, 99, 54, 11, 9, 64,155,120,147,179, 29, 28, 28,238,235,117, 58, 47,119, 87, - 55,131, 92, 46, 65,153, 86, 35,186,124,233, 66, 5,165, 52,195, 78, 14, 51, 33,164,215,161, 67,135,230,243,249,252,209, 14, 14, - 14,120,243,205, 55,249,189,123,247,134, 72, 36,130,201,100, 66, 89, 89, 25, 54,110,220,168,102, 24,166, 85,101, 63,112, 80, 40, - 20,235,249,124,126,174, 86,171,253,168,177,115,152,205,230,184,161, 67,135, 10,204,102, 51, 62,255,252,115, 44, 88,176, 0,131, - 7, 15, 22, 92,186,116, 41, 14,192,166,199,213,233, 89,150,197,128, 1, 3,106, 58,195,223,178,231, 56,161, 80, 24,213,166, 77, - 27,168,213,106,168,213,106,120,122,122,194,207,207, 15, 62, 62, 62, 88,178,100, 9, 93,182,108,217, 97,139,197,178, 82,173, 86, -171,154,209, 23, 39,189,242,202, 43,147, 70,141, 26,133,138,138, 10,156, 63,127, 30,221,186,117,195,226,197,139,125,207,156, 57, -243, 94,231,206,157, 33, 20, 10,145,152,152, 8,134, 97,114,184, 71, 23, 7, 14, 28,254,191,225,239,232,159,213, 24, 26,180,104, - 5, 5, 5,185,216,108,182,247,135, 13, 27, 54, 96,196,136, 17, 24, 52,104,208, 67,255,223,180,105,147,227,206,157, 59, 19, 2, - 3, 3, 7, 91, 44,150,175,154, 50,213,199,178,236,238, 77,155, 54,197, 61,243,204, 51,242, 62,125,250,132, 0,128, 68, 34, 49, -111,218,180, 73,207,178,236,238,166, 54,164,118,240, 72,127,127,255, 14, 2,129, 96,228,208,161, 67, 59, 76,156, 56, 17,201,201, -201,216,184,113,227,157,176,176,176,179, 77,164,206,106,100,213, 97, 66, 99,214, 45,190, 88, 92, 92, 86, 80,224,226, 16, 20, 36, -116,117,116,204,223,191,127,127, 96,255,254,253, 73, 78, 78, 14, 74, 75, 75, 97, 52, 26,113,233,210, 37, 86, 0,100, 11, 92, 93, - 73,246,249,243,132, 47, 22, 55,121,177, 65,160,175,107,232,199,115,166,180, 52,154,140,145, 26,141,134, 17, 8,133,194, 0, 31, -151, 38,189,176, 41,165, 38,133, 66, 17, 3, 64,192,178,172,222,205,205, 77,126,244,232, 81,136,197, 98, 16, 66,208,190,125,123, - 72,165, 82,145, 66,161,184, 15, 0, 62, 62, 62,226,213,171, 87, 59,143, 27, 55,238,247,198,184,159,122,234, 41, 97,112,112,240, -179, 97, 97, 97, 56,127,254, 60,146,146,146,178,207,159, 63,223,162, 83,167, 78, 8, 10, 10,122,246,169,167,158,218,126,229,202, - 21,235, 99, 26, 93, 52,203, 25,222,102,179,177,132, 16,240,120, 60,176, 44, 11,181, 90,141, 86,173, 90, 97,197,138, 21, 88,186, -116,233,231, 74,165,114, 95,115,234, 19, 17, 17, 33,138,142,142,158, 48,106,212, 40,220,189,123, 23, 9, 9, 9, 69,249,249,249, -167,142, 28, 57,242,252,212,169, 83,249,221,186,117, 67,113,113, 49,126,254,249,103,230,242,229,203, 63, 21, 20, 20,108,224, 30, -185, 28, 56,112,224,240, 15, 22, 90, 65, 65, 65,163, 68, 34,209,204, 49, 99,198,240,219,182,109, 11,149, 74, 5, 39, 39, 39, 43, - 33, 68, 8, 0, 46, 46, 46, 86,153, 76,134, 41, 83,166,160, 99,199,142, 61,102,207,158,221,205,223,223,127, 69, 94, 94,222,122, -123, 78,172, 82,169,244,190,190,190, 59,222,124,243,205,175,174, 93,187,218, 10, 0,254,252,243,207,123, 74,165,114,142, 74,165, -210, 55, 81,100, 85, 5,197, 36, 50,153,236, 98,104,104,104,230,144, 33, 67,156, 70,140, 24, 1, 79, 79, 79, 92,185,114, 5,139, - 22, 45,186,109, 54,155,231, 39, 38, 38, 50,255,237,139,204,152, 76, 5,151,247,236,113,236,253,210, 75, 78,211,227,227,191,121, -235,205, 55,191,253,248,227,143, 5,109,219,182, 37,122,189, 30, 23, 47, 94,164, 59,119,238,180,254,252,217,103, 75,161, 80, 8, -207,239,220, 41, 54,155,205,217, 77,180,150,244,138, 27,220,171,237, 55,223, 46,135,209, 80,129,139,231, 14,160,180, 84,141,213, -107,118,181, 13, 8, 8,232,149,155,155,123,186, 9,215, 51,236,216,177, 99, 94,148, 82,136,197, 98, 44, 92,184, 16,126,126,126, -112,114,114, 66,121,121, 57,222,123,239, 61,231, 25, 51,102, 56, 3, 64,114,114,114,117,120,134,198,160, 84, 42,187, 78,153, 50, -197,145, 97, 24, 28, 62,124,216, 76, 8,249,232,248,241,227, 63,182,111,223, 94,220,163, 71, 15,199, 13, 27, 54,116, 3,144,248, -184,132, 86, 51,143,187,115,244,232,209,206,163, 71,143,166, 66,161,144,148,149,149,193,197,197, 5, 43, 86,172,208,229,231,231, - 31,104,118, 31, 96, 24,177, 92, 46, 23, 83, 74,177, 99,199, 14,100,103,103,191, 90, 84, 84, 84,224,237,237,189,235,253,247,223, -159,213,182,109,219,224,180,180,180,236,242,242,242,197, 42,149, 42,147,123, 52,113,224,192,129,195,223, 7, 85, 78,240, 77,138, - 12,111,179,217,166, 28, 57,114,132,207,178, 44,214,172, 89,131,203,151, 47, 83,185, 92,254,145, 92, 46,255, 65, 38,147,217, 12, - 6,195,228, 55,222,120, 99,220,130, 5, 11,120, 61,122,244,192,249,243,231,121,173, 90,181,154, 0, 96,125,141, 19,247,111, 40, -214,134, 70,163,185,164, 82, 21,180,170, 17,160,178,149, 68, 34,189,212, 72, 99, 30,226,172, 35, 40,102,236,194,133, 11,117,190, -190,190,230,164,164, 36,172, 90,181,138,189,124,249,242, 41,177, 88,188, 90,169, 84,154,236,225,124, 76, 23,189,154, 83,204, 48, - 87,126,157, 53, 43,252,169,225,195,217,215,103,206,172, 16,201,100,239,124,179,124,249,236,178,242,114, 63, 16, 66,221,157,157, -179,215, 44, 92,152, 48,248,217,103, 43,146, 79,159,150, 94, 59,118, 76,232,105,181, 94,111, 74, 61,115,115,115, 79,135,182, 14, -194, 47,107,191,133,197, 98, 66,126,222, 3,157, 86, 84,172, 65, 67, 34,171, 46, 78,134, 97, 52,207, 63,255,188, 8,128,108,252, -248,241,226,194,194, 66,180,110,221, 26, 0,160,213,106,113,224,192, 1,180,107,215, 14, 0,112,243,230,205,234,237,198,234,169, - 80, 40,158,237,214,173, 27,178,179,179,145,156,156,124, 66,169, 84, 22,251,249,249,157,200,201,201,137,235,220,185, 51,118,239, -222, 61,172, 62,161,213,212,123,100,143,208,170,139, 83, 38,147,205,217,181,107,215,171,231,206,157, 27, 61,107,214, 44, 97,191, -126,253, 0, 0,229,229,229,122, 74,169,173, 57,156, 53,235,100,181, 90,193,178, 44,220,220,220,116,149, 3,142, 76, 52, 18, 72, -246, 73,247, 79,142,147,227,228, 56, 57,206,191, 2,231, 63, 4,246, 71,134,167,148, 50, 44,203, 34, 49, 49, 17,187,118,237,178, - 89, 44,150, 73, 74,165,242,102,141, 34,203,253,252,252,142, 61,255,252,243,235,211,210,210,248, 41, 41, 41,176,231, 69, 84, 19, - 70,163,209, 90, 59, 37,177,209,104,124,228,169,163, 95,126,249, 5, 5, 5, 5,150,156,156,156,227, 12,195,236,126,196,213,139, -143,188,234,240,103, 74, 77, 47, 17,114,124, 65,247,238, 3,230, 31, 59, 38,121,253,195, 15, 77,175, 76,156,248,190,205,108,182, -242, 69, 34, 86,172, 80,240,108, 18,137, 48,249,244,105,233,178,169, 83,221, 12, 38,211,225, 95,155,224, 96, 94,195,162,133, 87, - 94,127, 23,134, 26, 22,173,243,151,210,209, 84,139,150,209,104,140,172, 20, 29,247, 1,248,188,252,242,203, 96, 89, 22, 6,131, - 1,229,229,229, 80, 42,149,154,137, 19, 39,218, 42,197,147, 96,228,200,145, 78,246,240,134,132,132,248, 9,133, 66, 28, 62,124, - 24, 66,161,240, 0, 0, 8,133,194, 3,199,142, 29,139, 27, 59,118, 44,252,253,253, 67, 8, 33,132, 54,162,146,188,163, 70,108, -163, 64, 40, 8,218, 60,248,197,163,141, 87,212,136, 27, 4,184, 93, 25, 53,254, 86,167, 78,157, 0, 59,253,178,106,162,114,113, -199, 82, 15, 15,143,237,179,103,207,126, 51, 54, 54,118,224,130, 5, 11, 8, 0,254, 99,177,110, 50,204, 35,133,158,224,192,129, - 3, 7, 14,127, 93,171, 86, 93,251, 5, 13, 28,176,166, 87,175, 94,147, 0,240, 9, 33,171,242,242,242,110,214, 46,163, 84, 42, -211,253,253,253,191, 14, 14, 14,174, 78, 52,221,148, 74, 85, 70,114, 95,196,227,145,217, 15,190, 55, 61, 64,101,141, 84, 39,179, - 1, 16, 30,143,191,254,234,213,171, 31,222,191,127, 95,221, 84,225, 87, 23, 30,199,170, 67, 0,216, 68,105,230, 88, 66,142,204, -140,138,234, 63,120,234, 84,116, 24, 60,216,201,175, 69, 11,155,193, 98, 97,111,158, 61, 75,206,237,216, 33,186,118,236,152,208, - 96, 50, 29,222, 69,233,253,166,214, 51, 55, 55,247,116,235,144,128,163, 47,140,140, 27, 24, 18,236, 7, 0,184,155,169, 68, 81, -137,230,104, 83, 68, 86, 45,193, 53,124,197,138, 21,251, 68, 34,145,160,102, 42, 27,139,197, 82, 82, 37,198, 8, 33,126,107,214, -172,217,194,227,241,178, 27,227, 75, 73, 73,217, 59,127,254,252,145, 89, 89, 89, 71,239,223,191,159, 5, 0,217,217,217, 89,126, -126,126,235,243,243,243, 71,102,103,103,239,164,118,168,144, 90, 73,165,145,124,118,187, 20, 64,251,170,164,210,205,205,101, 88, - 19,149,161, 21, 62,242,245,245,221, 52,112,224,192, 55, 0,228, 61, 10,159,217,108,182, 26, 12, 6,198,102,179, 9, 44, 22, 11, - 53,155,205, 86,238,177,196,129, 3, 7, 14, 77, 66,103, 0, 85,153, 72,170, 12, 40,158,181,182,205,168, 76, 23, 88,245,248,173, -252,174, 6,112,169, 6, 71,205,253,141, 29, 11, 0, 69, 0,110, 84,238,171, 75,139,172,169,239,123,189, 66, 43, 47, 47,111, 39, -236, 72, 26,109,111,185, 6,132,210, 92, 66,200,178, 42,209,244,168, 28, 12,195, 60,150,252,112, 60, 30, 47,115,216,176, 97, 77, - 42,223, 88,153, 45,148,102,191, 67,200,134,253,223,127, 31,125,120,213, 42,127, 27,195,184, 19,128,242,197,226, 98,179,217,156, -229,105,181, 94,111,170, 37,235, 33,107,204,221,220, 65, 0, 16, 26, 26, 74,239,220,185, 3, 74,233, 35,173,222,160,148, 94, 7, - 16,216, 72, 25, 37,128, 30,118,138,193,205, 0, 54,215, 33,216,183, 0,216, 98,247,168,161, 42,169, 52,192, 99, 9,251, 66,100, -247, 81, 59, 0,176, 85, 73,165, 31, 39,242,243,243,211, 80, 25,231,237, 81,144,149,149,101, 10, 14, 14,254,117,209,162, 69,227, -175, 93,187,182, 53, 47, 47,207,196, 61, 51, 57,112,224,192,161,105, 34,139, 16,178,191,242,221, 51,180,114,176,191,191,246,118, - 85,153,170,114, 53,203, 84,113,212,222,223,208,177, 0, 48,103,206,156, 15, 19, 18, 18,228, 0,236, 74,198, 92, 51,112,169,224, -175,112,245, 30, 71,242,220,199,157,128, 55, 55, 55,119,237,147,104,235,242, 7, 66,234,194,147,188,158,183,111,223, 38,255,228, - 95, 91, 85, 82,233, 26,136,250, 59,212, 59, 51, 51,115, 69,239,222,189, 87,231,229,229, 49,224,192,129, 3, 7, 14, 77,129,103, - 93,194,168, 30, 61, 48,180,161,255,215, 18, 68,255, 81,174,174,239,132,144,253, 9, 9, 9, 67,237,173,108, 77,139, 22,143,187, -119, 28, 56,252,247,240,191, 88,245,202,129, 3, 7, 14, 28,234, 21, 68, 15, 89,177,170,196, 87,237,239,115,230,204,249, 16,245, - 76, 27, 86,150,241, 37,132, 76,170, 92,117,248,144,191, 22, 1,208,191,158,147,219,189,154,128, 16,210,191, 25,141, 59,206,113, -114,156, 28, 39,199,201,113,114,156, 28,231,255, 47,206,198,184,235, 57, 62,190,190,169,190,134,166, 17,107,111, 55,118,172, 29, -101, 15,212,211,150, 73, 53,115, 29, 62,148,243,176,202,201,249, 73,124, 0,244,231, 56, 57, 78,142,147,227,228, 56, 57, 78,142, -147,227,124,196, 79,103, 74,105, 60, 30,100, 77,161,148,210,120, 74,233,224, 57,115,230,204,173,218, 55,103,206,156,185,148,210, -126, 85,229, 42,203, 84, 31, 83,181,175,246,223,218,251, 26, 41, 91,223,245,152, 84,115,187,230,247,191,132,143, 22, 7, 14, 28, - 56,112,224,192,129, 67, 3,184, 4,160,115, 13,107,147, 26,192,205,132,132,132,210, 26,190, 83,106, 0,215, 1,116,172, 44,167, -174, 52, 40,213,244,173, 50, 87,126, 55,215, 81,198,108, 79,217,122,172,112,107,234,218, 6,192, 9,173,250, 16,237,203,255, 44, - 40,192, 43,166,218,234,199,178, 0, 0,182, 50,250, 64,117, 24, 2,150, 5,165, 20,202,194,178, 43, 55, 84,244,227,230,158,175, -173, 63,113,243,146, 74,151,178,148,118,175,220,117, 90, 83,108,122, 55, 73, 67,203,236,229, 8,247, 33,225, 82, 30,222,103, 41, - 58, 0, 0,143,224,134,145,197,215,183, 10,232,173, 71,189, 30,132, 16, 18,233,137, 73, 98,153,124,140,179,139,107,155,210,210, -162,219, 22,163,105,123,138, 26,171,105, 51, 2, 67,181,118, 35, 79,179, 20, 31, 2,224, 9,121, 88,146, 94, 76, 79,113,189,142, - 3, 7, 14,255, 37, 60,106, 92,188,186, 66, 7, 61,234, 34, 36, 46,192,158,125, 98,171, 54,254,180,179,220,255, 12, 77, 18, 90, -145, 94,100, 42, 8, 62, 1, 64, 65,241,105,114, 33,253, 87,147,142,247, 35,253,165,124,254, 58, 0,124,163,197, 54,147,178, 56, - 83,231, 75,157,135,158, 82, 17,127, 9, 0,214,104,179,189,150,172,180,223, 95, 44, 42,128, 12, 22,176,188, 95, 89, 74,133, 54, -150,174, 7,197,126, 7, 17,254, 56,159, 75,141, 77,169,107, 80,128, 87,204,158, 63,243, 7,158,250,215,116,196,118,104, 13,106, - 99, 0,214, 10,121,143,247,113,226,187,151, 17, 27, 30, 4,202, 90, 1,150,129,195,144,111, 48, 36,202,185,217, 63,146,182,254, -196,173,133,135, 87,210,218,181,235,124,252, 66, 34, 8,203, 88,144,246,231,209,113, 51,102,207,239, 27,229, 76,162,236, 17, 91, - 29,253,200,235,173, 91,181,125,255,221, 79,190,229,251,250, 5, 42, 88,171,137, 41,200,188,213,105,249,226,249, 59, 59,250,145, - 37,215,149,116,157,189,130, 42,194, 19,147, 5, 18,241, 40,153, 84,209, 70,175, 47,191, 99,179, 88,183, 71,249, 9, 6,127,253, -205,210,232,222, 3,226, 28,108,229, 5, 60, 43,139,136,109, 91,183,180,248,126,197,202, 56, 66,200,179,148, 82,182, 41,109,102, - 41,102,167,111,152, 20, 39, 20,240, 73,248,171,107,249,176,115,201,108,109, 68,120,147, 23, 9,109, 60,188, 4, 37,248, 61, 69, - 69, 55, 55,231, 28,225,222,228, 71, 66, 17, 6,130, 29,132, 98, 75,114, 33, 45,228,158,119, 28, 56,252,179,192,227,241, 78,177, - 44,219,231,113,114, 18, 66,158,166,148, 94,224,174,238,255,111, 52,205,162, 69,240,121,114, 70,142, 43,108, 22, 68,134,133,124, - 6,160, 73, 66, 75,202,231,175,191,116, 91,229, 3,198,130,181, 95,188,185,213,108, 5, 24,171, 5, 54,198, 10, 27, 99, 5,195, - 88, 96,179, 90, 65,173, 38,204,255,233, 20, 96, 46, 71, 76, 84,232,122, 0,190,246,158, 67, 72,121,191, 94, 57,123,212,141,152, - 53,216,252,175,132,183,115,212, 21,111, 31,191,161, 44,138,244, 38,115, 83, 10,241,115, 83, 4,193,169, 85,211,177,113,247,129, -220,101, 63,234, 82, 89, 74,225,230, 36,107, 59,110,104,114,224,134,189,167,114,150,174, 55,166, 2,128,179, 66,220,118,194,141, -219, 65,143,114, 19,188,164,210,165,171, 87,126,239,227,235, 46, 35,204,185,175,192,216,108, 8,108, 17,207,159, 59,109,156,239, -231,223,173,251, 14,192, 43, 13, 29,223,206,155, 68,132,181, 14,159,185,254,192,185, 32,157,182,208,124,116,211,135, 25, 48,193, -234,227, 31, 46,252, 44,225, 91,254,188, 15,166,191,215,206,155, 92, 76, 85,209,148, 70, 30, 10,188,112, 47,236, 77,248,234,155, - 14,125,135, 12,117, 96, 43,212,124,163,174, 34,108,237, 79,235, 62,105,215,161,139,188, 71, 84,128,168,112,251, 20, 98, 40, 47, -129,133, 39,149,244,141,236,239,100, 24, 63,214,186,246,151,141,211, 0, 44,111,210,112,176,198,180, 53,203, 54,127,116, 73, 40, -122, 92,187,112,106,178, 77,121, 9,212,102, 5,108,150,234,191,176, 89, 65,217, 7,127, 99,167,252, 4,212, 17,195,203,174, 7, - 48,197,192,227,103, 47,249,170, 10,242, 59,127,247,205,151,115, 35,188,200, 33,216,240,235,173, 18,156,110,170,192,228,192,129, -195, 95, 23,132, 16,134, 82, 42,120,204,156,113,148,210,131,143,200,241, 62,128,215, 43,191,174,163,148,126,253, 24,234, 21, 0, -192,167,242,107, 1,165, 52,151,235, 1,143,116, 61, 39,213,156, 50,124,148, 56, 90, 82, 80, 22,216, 49, 2, 0,100, 77,173, 8, - 5,164, 32,124,192,170,195,240, 33, 3,224,225,229, 3, 88,245,128, 69, 15, 88, 13,128, 85, 7, 88, 13, 40,202,207, 6, 44, 58, -224,238, 33, 48,148, 74,154,220, 98,147, 6, 72,223,142,126,157,130,224,233, 44,197,244,225, 17, 30,107, 14,167,175, 91,119, 52, -173, 63,128, 49,118,213,149, 82,196,182,111,131,101,235,116,169,251,174, 20, 14, 2,128,248,104,143,195,177, 17, 45, 2,151,174, - 55,166, 30,184, 81, 50, 24, 0,134, 68, 57, 31,234,210,214, 55,136,125, 4,171, 47, 75,105, 15,191,150,109,136,237,218,106,176, -218, 92,104,181, 6,228,102,110,128,171,255, 83, 60, 27,139, 94,141, 29, 47,227, 99,206, 59,243, 22, 9,245, 90,149,153,181,168, -109,158,252, 82,190, 64,204, 18,228,157, 54, 85,176,101,182,119, 39,189,204,204,252,248,139, 57, 0,198, 53,104, 29,242,194,180, - 37, 75,150,182,239, 22,211,206,171, 96,231,116, 82, 81,170, 2,195,151, 75,134, 63,211, 13, 46,161, 17,172, 42,113, 9, 17,135, -244,135,139,123, 8,242,206,109, 66,214,133, 93,164,123,167,145,146,159, 55,139,198,215, 39,180, 66, 61, 73,247, 65, 61,187,108, - 13, 9,242,243,165,148, 5,203, 82, 80,214,134, 87, 95, 24,136,185,219,238,194,102,179,225,249, 65,221,251, 45,154,220,151,178, - 44, 11, 74, 89,228, 20, 20,235, 79, 94, 76,237,151, 81, 66, 47,218, 99,169,234,248,116,159,238, 55,174, 92,104,103, 77,255, 13, - 49,227, 18, 82, 9,112,182, 70,159,235,126,245,200,207,237,128,159,154,251,227, 33,225, 94,176,101, 29,254, 10, 65, 61, 39,241, - 87,111, 62,236,169, 81,231, 77,216,185, 97,229, 11,255, 90,189,122, 35,128, 41,220, 35,134, 3,135,127, 6, 40,165,143, 93,108, -101,103,103, 43, 31, 69,108, 5, 4, 4,244, 4,176,184,202, 67,131, 16,178, 56, 56, 56,120,254,191, 7,170, 15,141,245, 52, 54, -155,109, 92,110,110,238,153,134, 56,135, 14, 29,234, 7, 32,184, 6,103, 48, 33, 36,184,174,178, 46, 46, 46,182,174, 93,187,102, -237,223,191, 95,201,245,144,166, 11,174,230, 8,173,212,251,219,167,119, 50,229, 87, 0, 64,170, 29,157,246,161, 41, 63,163,213, -246,213, 47,159,188,252, 85,100, 75, 55,148,235,204, 56,122, 57, 11, 54,155, 21, 54,134,169,180,108, 49,176, 49, 86, 12,234,232, -129,174,198, 41, 88,190, 63, 13,140,141, 77,104,136,179, 54, 44,148,125, 49,186,255,232,109, 44, 75,197, 18, 33, 79, 19, 22,232, -238, 53,243,249,142,188,233,195, 35, 97,176, 48,163, 35,188,201,201, 20, 21, 93,107, 23, 39,251,159, 33,143,104, 93,251,108, 76, -163,109,111,192, 26, 21, 59,118,232, 0, 39,106,210,192, 90,116, 23,229,122, 43,238, 22, 91, 81, 96, 44,131,132,228,219,197,201, - 82,116, 8,240,247,149,255,177,245,131, 76,119,190, 86,224,197,103, 68, 98, 30, 3, 27, 75,249,180, 44,197,228,214,110,128,176, -202,111,171,161,122,202,228,142, 47,247, 28, 24,239,124,127,211, 36, 34, 11, 27, 4,175, 78,129,200, 60,243, 11, 10, 47,239, 71, -177, 50,139, 56, 25,203,224,237,222, 26, 67,198,141,193,215, 99, 58,163, 92, 91, 14,126,126,134,179, 88, 40,113,169,143,147,218, - 48,110,201,162, 47,124, 5,124,222,131,235, 89,245,177, 89, 97, 48,153, 0, 27, 3,169,128, 5,161, 85,255,179,194,102,181,200, - 59,140,252,224, 77, 0, 23, 27,107,123,138,138,110,142,244, 34, 61,192, 90,219, 81,171, 1, 4, 56,155, 92, 72,171,197, 79,132, - 55,121,241,169, 65, 19,123, 80,130,223,155,115,143,162,220, 49, 52, 38,216, 65,161,208,166, 34,119,199,219,200,128,148,122,119, -123, 29, 47,190, 58, 77,190,102,205,154, 97,132,144,169, 53,125,212,158, 68,146, 85,142,147,227,252,187,114, 58, 59, 59,183,106, -217,178,229,124,171,213,218, 83, 36, 18,121, 91, 44, 22,176, 44, 91, 32, 22,139,127,207,202,202, 90,168,209,104,238,253,213,218, -126,227,198, 13,187,197,150, 61,156, 66,161, 16,105,105,105,119,236, 21, 91,181, 57,133, 66,225,175,103,207,158,197,182,109,219, - 0, 0,233,233,233, 8, 13, 13, 85,212,117,108,102,102,166,162,119,239,222,191,162, 86, 70,143,218,156, 55,111,222,108,245,219, -111,191, 97,199,142, 29, 0,128,180,180, 52,132,133,133,213, 89,159,179,103,207,242, 95,122,233,165, 86, 0,148, 79,250, 30,253, - 19, 68, 86,205,191, 15, 9,173, 3, 7, 14,208,248,248,120, 82,123,187, 14,220, 13,114, 21,119,130,209, 6, 0,119,155, 90,137, -148, 2,186,168,163,175,112,240,137, 29, 43,122, 74, 69, 60, 44, 88, 59, 51, 71, 93, 82,254,180,128,128, 5, 0,134,130,231,234, - 32, 62,159, 48,161, 99, 80,105,133, 17,251,254,204, 59,147,172,106,154,137, 52, 89, 73,143, 1,112,249,247,139,146,132, 77,248, -250,216,150, 45,115, 6,119,120,119,120, 7,236, 61,151,245, 46,128, 70,163,190, 83,150, 5,101,153,106,231,247,202,161, 3,192, - 62,156, 20,152, 5,125,176,143,109,154, 69,171, 55, 33,130, 82, 47, 12,113,147,139,127,152, 60,249, 13, 39,171,250, 54, 74,204, - 34,228,148, 26, 81, 96, 16,162, 66,224,133,188,212,155, 54, 30,193,177,198,111, 46,180,148, 49,186,184,138, 29,120, 81, 3,222, -244,215, 30,254,176, 84, 76, 24,190,211,115,159,187, 20,157,248, 54,139,209,169,117,132,160,209,220,122,206,206, 46,161,198,226, - 44,190,166,180, 8, 46, 62,145, 24, 60,122, 40, 62,141,143, 64,185, 86, 7,117,201,121,218,198,215,137,100,255,190, 17,243,134, -132,163, 88,149, 15,147, 21, 32, 58, 83,137,209,108,172,168,247, 58,242,176,122,198,172,217, 47,182,240,245, 84, 84, 45, 42,160, -172, 13, 29,195, 67, 48,160,103, 44,142,157,253, 3,151,110,166,131,173, 92, 84, 64, 89, 22,185,133,165, 42,163,197,246, 75,147, - 46,168,141, 1,181, 26,235, 20, 98,104,198,148, 97,123,111, 34,183, 1, 31, 63,221,198,241,181, 57, 67, 91, 56, 42, 36, 4, 70, -171, 13, 70,179, 21,229,127,252, 0,247,150,237, 33,151, 74, 73, 39, 24, 4, 0,184,188,133, 28, 56,212,192,168, 81,163,164, 42, -149, 42, 49, 62, 62, 62, 98,192,128, 1,242, 30, 61,122, 64,167,211,225,232,209,163,208,233,116, 45, 2, 3, 3, 91, 28, 61,122, -116,228,211, 79, 63,157, 18, 16, 16,208,123,251,246,237, 77,241,161, 21,224,223,206,236, 44, 0,134, 16,130,202,125, 4, 0,251, - 40,121,110,197, 98, 49,178,179,179, 31,187,101, 43, 47, 47,239, 78,115, 44, 91, 21, 21, 21, 34,127,127,127,120,122,122,194,102, -179, 65,167,211, 97,207,158, 61,208,104, 52, 96, 89, 22, 50,153, 12,159, 47, 89,139,212,171,137,184,120,241, 34, 52, 26,141,168, - 49,206,220,220, 92,210,177, 99, 71,152, 76, 38, 48, 12, 3,163,209,136,227,199,143, 87,127, 23, 8, 4,152,253,217,119, 72,191, -156,136,107,215,174, 33, 55, 55,247,191,146,109,164, 9, 90,228,175,104, 13, 93,211, 80,135,253,175,194,102, 99,230,174, 89,191, -229,252,220, 41, 99, 48,109,108,255,192,133, 43,118,245, 79, 81,211,245, 0, 16,225, 73, 38,140,239,211, 38,200, 69, 46,196,167, -155, 46, 3,148,206,125,212,243, 37, 21,211,244, 72, 31,242,238,238,139,217,137, 31,142,233,132, 16, 95,167,208,214,173,137, 56, - 35,195,142,156,130, 44, 3, 87, 7, 73,219,248,104,143,195, 96, 89,184, 56, 74,218,193,198,192,197, 65,210,118, 72,148,243, 33, - 0,112,145,139,218,213,101,249,170, 15,157,131, 68,147,228, 18,193, 36,197, 83,190, 65,175, 12, 27, 32,139, 27, 54, 82,230, 32, -100, 80,124,241, 40,180,194, 0, 88,221, 90,192,100, 45, 65,238,189, 12,219,137, 11,183,242,138,202, 77, 51, 27,173, 38,197,153, -188,123,105,158,173, 58, 12,112, 45,218, 63,175,176,213,196, 77,193, 60,176,188,242,141,207,169, 20, 94, 93,100,127,222,189, 87, -193,210,255,180,232,212,134, 86,163,201,178,218,224,107,176, 9, 28, 51, 78,253,140, 57, 67,218,163,180,164, 16, 70, 11, 3,141, -129,177,248,184, 72, 37,166,123, 73, 48, 89, 24,152,173, 44,132, 46,254, 56,122,254,102, 17,107,181, 30,170,143, 51,163,136, 94, - 3,224, 80,115, 95,107, 79,210,241, 3, 39,217, 53, 88, 13,200,206, 85, 98,253,129,243,157, 42,203, 53,191,147,179,204,131,233, -231, 26,150, 44, 66,209,163, 57, 78,240,225,222,164,139, 76, 42,250,126,241,187, 47, 69, 60, 19,230, 38, 97,115,207,131,176, 22, - 40,108, 2, 24,196, 54, 56, 7,134,128, 53,151, 83,189,209, 88,150, 12,112,145,222, 57,112,168,129,118,237,218,249, 56, 59, 59, - 39,207,154, 53,203,237,185,231,158,195,238,221,187,161,213,106,241,203, 47,191, 96,233,210,165,248,228,147, 79, 96,181, 90,177, -102,205, 26,249,206,157, 59,187,172, 92,185, 50,183, 69,139, 22,145,217,217,217, 5,141,141, 41, 1, 72, 0, 8, 43,223, 93, 4, - 0,123,240,224, 65,196,197,197,225,224,193,131,108,229, 62, 27, 33,196, 74, 41,109, 86, 62, 81,177, 88, 12,177, 88, 12,141, 70, -243, 88,196,150, 80, 40,132,131,131, 3,196, 98, 49,202,203,203,155, 44,182, 24,134,225,231,230,230, 66,163,209, 96,192,176, 97, -248, 46, 33, 1,125,250,244,193,128, 1, 3, 64, 41,197,241,227,199,209,191, 91, 20,198, 60,219, 27,183,110,221, 2,195, 48,118, -213,183,160,160, 0, 42,149, 10,131,135, 13,195,218,149, 43, 17, 27, 27,139,182,109,219,130, 97, 24, 36, 38, 38,226,133, 65,221, - 32, 29,209, 31,233,233,233, 92,167,182,211,154,245,184,124,180, 30, 25, 73,133,244, 66,132, 39,217, 63,118, 80,151,161,195,186, - 71, 96,237,214, 19, 95, 68, 68,144, 45, 0,224,238, 40,249,252,229, 62, 33, 72,185, 95,138, 19,215,148,251, 83,212,143,103,181, - 6,107,131,135,187,147, 28,224,139, 97,176,176,140,211, 93, 52,234,192,204, 82, 10,121,207, 15, 48,126, 88, 74, 96,108, 68, 96, - 96,213,170, 67,135,184,111, 49,225,230,157,160,206,109,125,130, 96,179, 2, 54, 43,156,198,108, 2, 62, 83, 52, 90,143,238,173, - 36,199, 62,152,249,110,215, 33, 35, 70,203,196,114,103,216,180, 57,176, 22,220, 68,241,237, 51,208,201, 67, 81,144,125, 23,219, -142, 92,212,220,206, 45,214,242,120, 56,170,210,152,222,207, 40,161, 21,141,241, 26,173, 72,152, 63,111,102,252,182, 45, 91, 29, - 37, 33,221, 73,198, 15,113, 26,177,128,145,120, 6, 63,197,211, 75, 61,232,151,191,108,117,210,153,241, 85, 99, 60,122,157,118, -215,241,163,135,199,180,105,213,221, 49,243,210, 1, 24,140, 38,152,172, 64,100,151,222,176,217,168,152,240, 8,235,196,231,147, -194,226, 82, 16,171, 77,245,251,245,204,252,179,215,239,242, 77,142,141,115, 63,164,238, 9,255,157, 97,189,163, 1,171, 1,207, -246,108,143,239, 54,158,120, 27,192,196, 71,187,201, 15, 44, 90, 20,232, 30,233, 69, 86, 1,232,126,121,207,210,118, 49, 35,102, -160, 41, 22,173, 40, 79, 50, 36,170,181,223,207,223,125,254,129,155,123, 64, 40,159,176, 86, 80,159, 14,128, 54,151,146,220,243, -112,246,143,133,205,175, 27,214, 44,255,166,130,101,233,150,230,132,182,224,192,225,159, 12,163,209,184,107,209,162, 69,110, 67, -135, 14,173,178,200,224,252,249,243, 88,183,110, 29, 20,138,135,159,147,113,113,113,160,148,186, 45, 88,176, 96, 23,128,103,234, -227,236,214,173,219,176,229,203,151, 43,163,163,163,239, 86,138, 45, 17, 0, 94, 82, 82, 18, 47, 39, 39,135,184,186,186, 82, 63, - 63, 63,171, 82,169,100, 1,216, 94,125,245, 85,190,131,131, 67,155,138,138,138,211,205, 21, 90, 98,177,248,177,248,108, 9,133, - 66, 16, 66, 32, 22,139, 33, 18,137, 64, 41,109,146,216,178,217,108,130,131, 7, 15,226,242,229,203,248, 36, 58, 26,239,250,251, -195,205,205, 13,137,137,137,160,148, 66,161, 80,160,164,164, 4, 91,182,108, 65,223,190,125,193, 48,140,200, 30,222, 29, 59,118, -224,202,149, 43,248, 44, 38, 6,239, 58, 59,195,193,193, 1,199,143, 63,152, 13,148, 72, 36,200,206,206,198,241,227,199,209,187, -119,111,174, 83, 63, 34,236,238, 60,189, 9, 17, 16,111,248, 88,204, 6, 80,134, 2, 4,126, 17, 17, 68,148,146, 66, 45, 77, 61, - 41,143,135,121,203,215,239,143,255,118,198, 48, 50,105,120, 39,191,133, 63,159,154, 10, 0,175, 61, 31,230, 47,151, 8,176,108, -111, 10,229,241, 48,239,113, 52, 48, 34,130,136,120, 60, 76, 29, 16,219, 22,202, 50, 51, 50,148,101, 39, 83, 40,181,107,170,231, -196,183,227,177, 97, 95, 98,206,210, 13,198, 84, 74, 41, 92, 28, 36,109, 39,220,200, 8,250,249,224,149,251, 75,182, 25, 83, 41, - 75,225, 34, 23,182,155,120,171, 91,163,171, 14, 59, 7,137, 38,205,253,224,253,110,195, 39,206,146, 50,169,219, 97,206, 56, 2, -214, 98,128,214, 34, 66, 25,223, 7,185,247,239,227,203, 53,251,115,180, 58,243,152,164,194,166, 9,204,244, 34, 90, 17,225, 73, -158,251,242,211, 15,143, 37,124,190,192,193,112, 55,177,130, 79, 24, 3,191,101, 47,193,231,159,124, 75,202, 77,230,209, 25, 37, -180,188, 49, 30,147, 35,190, 90,180,100,121,252, 27,227, 70,166,134,133,246,114,183, 41,239,185, 27,181,218,194, 77,135,175,248, - 84,142, 20, 9, 0,100,228, 22, 67,173,209, 49, 54,198,122,218, 81,136,133,201,246, 88, 7, 43, 17,226, 77, 60,159,235,209,225, - 37, 79, 71, 17, 12, 21,101,240,114, 20, 98, 80,108,235,151, 66,188,201, 7,119, 85, 84,221,124,161,101, 5,181, 26,112,225,171, -190,237,168,205,218, 14, 54, 43, 44, 55,126,109,186,101,140,224,221,105, 61, 29,156, 92,205,153, 60,232, 20,128,204, 3,196,169, - 5,224, 28, 76,132,225,163,161,188,155,204,188,253,210,184,226,123, 89,185, 63,122,200,240, 53,247, 8,225,192,225, 97,100,103, -103,191, 60,119,238,220,179,177,177,177,222, 30, 30, 30,104,223,190, 61,246,237,219,135, 89,179,102, 85,151,137,142,142, 6,165, - 20, 37, 37, 37, 88,180,104, 81,129, 82,169,124,185, 33,206,228,228,228,212, 13, 27, 54,244,140,136,136,176,136, 68,162, 50, 0, -146,178,178, 50,105, 73, 73, 9, 49, 26,141, 96, 89,150,117,118,118,182, 41,149, 74,235,152, 49, 99, 76,231,206,157,107,173,211, -233,178, 31,197,162, 21, 24, 24,152, 84, 92, 92,172, 33,132, 60,114,232,135, 42,145,229,225,225,225, 89, 81, 81,193, 2, 40,109, - 78,232, 7,134, 97, 16, 19, 19,131, 35,103,174,226,224,137,115,208, 42,211, 48,245,141,151,209,190,125,123, 28, 57,114,164,217, -247,172, 99,199,142, 56,124,252, 44,206, 94,190, 23, 9, 63, 8, 0, 0, 32, 0, 73, 68, 65, 84,142,236,244, 27,120,123,234, 27, -136,140,140,196,225,195,135,185, 14,109, 63, 14,212,242,205, 58, 80, 91,104,245, 62,112,224, 64,213,200,252, 63,228,107,184, 39, -233,232,215, 70,252,235,130, 33,173,195,133, 3, 22,128, 8,101,216, 30,122,184,219,188, 47,127, 72,109,239, 77,198,221, 84, 53, -190, 58,236, 33,171,150,138, 38, 71,122,145,205,215,111,181,123,233,217,216, 64,172,221, 39,255, 24, 0, 70,247,104,133, 63,111, -171,113, 49,189,112,115,114, 33, 77,126,212, 86,183,247, 38,114, 80,108, 94,244,206,240,222, 45, 2,124,176,110,247, 89, 16,130, - 93,118,189,112, 41,165,177, 17, 45,176,116, 67,237, 21,134, 62, 65, 75,182, 25, 83,143, 36,105,135, 0,192,192,112,197,161,206, -173, 93,131, 26,179,108,200,196,130,201, 67, 70,142,151, 50,233,251,128,172,227, 32,140, 9, 6, 11,139,252,162,114,232,157, 3, -145,120,254,186, 65, 99, 52,207, 72, 46,108,158, 21, 47, 69, 77,239, 70,251,146,251, 21, 58,131,175,220,179,181,145,207, 99,217, - 10, 19,197,159, 41, 89,218,228,124,154,102, 15, 71, 70, 6, 53, 63, 19, 64,122,172, 90,191,109,190, 80, 36, 30,205, 39, 32, 94, - 46, 10,207, 85,223,126, 6, 71, 71, 7,176,230, 10, 64,167,198,115,111,125,169,190,153,103,105, 5, 0, 97, 30,196,161,103,136, -104,189,128, 71,114, 79,222, 49,127,212,168,121,213,138, 41,227, 6, 69, 11, 89,179, 14,239, 44,218,138,213, 31, 12,199,248,126, -225,194, 3,127,164, 79, 1,176,176,185,247,154,218, 24, 80,171, 1,207,124,120, 38,149, 0,103, 41,208,253,242,182,207,219, 1, - 87,237,230,120,138, 16,161,192,151,132,119, 8, 82,136,216,220, 63,192,230,254, 65,249,129,221, 64,130,122, 18,226, 19, 67,191, - 95,252,137,110,237,218,117, 71, 89, 30, 62,109, 44, 84, 6, 7, 14,255, 95, 65, 41,189,235,226,226, 50, 56, 46, 46,238,196,145, - 35, 71,220,162,162,162, 0, 0,151, 47, 95, 6, 0,196,196,196, 32, 44, 44, 12, 42,149, 10, 99,199,142, 45,202,207,207, 31, 76, - 41,109,208,231,183,188,188,252,222,142, 29, 59,188,117, 58, 93,244, 71, 31,125, 84,216,162, 69, 11,173,209,104, 36,101,101,101, - 44,195, 48,112,117,117, 21, 71, 71, 71,163,107,215,174, 21,231,207,159,111,153,147,147, 83, 14, 32,171, 57,245, 31, 62,124, 56, -206,156,121,176,104,239,113,196,213, 18,137, 68,136,138,138,242,191,123,247,110, 94,229,245,185,208,140,107, 90,189,125,253,250, -117,156,190,154, 11,129,217, 0,177, 90,137, 11,187,119, 96,216,228, 55,193, 48,205,247, 98,184,126,253, 58,246, 28,191, 0,133, - 68,128,180,180,100,236,216,177, 3, 83,167, 78,125, 36,206,102,162, 65, 45,242, 23,239,247,249, 0,214,212,107,209,138,143,143, - 63,141, 58,162,218,182,110, 77,196,146, 10, 44, 24, 20,227, 63,123,116,247,214,124,171, 86, 9,214,198,130, 47, 4,188, 60,156, -240,235,175,155, 91,109,222,186,245,124, 71,127,225,114,150, 97,230,221, 84, 81,125, 19,234,181,224,219,173,103, 71,255, 58,179, -183, 96,234,144,118,110, 0, 32, 18,240,176,108, 95, 50, 3, 96,193,163, 52,248,153, 0, 34,173,176, 98,146,143,187,243,199,115, - 95,143,119,235, 29, 19,134,211, 23,147,176,124,199,249, 51,226, 66,108,176,251,194,177, 86,212,214, 79,117,173, 58, 4,219,184, -223,165,205, 70,125, 68, 10, 87, 88,178, 78, 1, 22, 35,140, 38, 11,114,138,109,200, 41, 49, 66, 32, 23,225,114,250,255,177,119, -221,241, 81, 20,239,251,153,221,189,150, 75,239, 61, 33,148, 36, 36,132,208, 59, 2,210,196,192, 23, 8, 93, 20, 16,129, 8, 40, - 32, 74, 71,138, 74, 71, 64,233,160, 82,164,131,180,168, 20,165, 35, 69, 64, 18, 2,132,132, 22,210,123,191, 92,219,157,223, 31, - 41,191, 35,164,220, 37,216,112,159,207,103, 63,123,123,123,251,220,204,206,238,204, 51,239, 59,243, 78,188,202, 62, 25,199,107, -154,103, 66, 8,233, 80, 79,225,246,233, 23, 43, 61,138, 84,249,250,220,172,116,189, 84,118, 69,162, 52,147, 39,153,194,243, 91, - 60, 45,234, 84, 87,218, 28, 16, 88,153,130, 22,206,250,104,164,121, 66,212, 9, 52, 96, 18, 65, 40,133, 89, 64, 8, 44,205, 88, -105, 71, 31,105, 28, 0,248,184, 88,203,150, 46,248,216,122,242,244, 5,213,142, 1, 11, 36, 68,218,184,165,203,228, 32,111, 91, -156,191,113, 15,231, 35,158,222, 57,255,251,253, 70, 93, 26,187,193,207,195,102, 82, 32, 33, 75,162,168,233, 22,210,226,130,209, - 3,186,162,178, 89,135,129,206,100, 88,203,193,115, 42,156,109, 88, 25,124, 0, 33,154,167, 32, 44, 11, 16,166,120, 6,228,179, - 75,224,108,234,209,221,251, 14, 23,110,221,186,227,179,168, 52, 42, 90,177, 68,136,168, 6,217,217,217,183,149, 74,101,207,224, -224,224,109, 31,126,248,161,229,240,225,195,221,198,140, 25,195, 0, 64, 74, 74,138,176,122,245,234,196,175,191,254, 58, 39, 61, - 61,125,148, 86,171,141, 48,166,227, 75, 8,185,252,205, 55,223,164, 93,184,112,161, 81,171, 86,173,228,205,155, 55, 23,108,109, -109, 57,185, 92,206,107, 52,154,162,232,232,104,254,225,195,135,174,217,217,217, 49, 0, 98,107,226,214, 47,177, 94, 45,100, 89, -246, 83, 74,105,208,203, 24,163,165, 84, 42,221, 0,196, 16, 66, 26,152,234, 54,124,161,193,230, 56,100,101,101,161, 48,249, 14, - 20,241, 15, 16,108,206, 32,208,214, 2, 86, 86, 86,181, 18, 69, 57, 57, 57, 64, 65, 2, 46, 94,252, 3,208,235, 97,109,109, 13, -107,107,235,191, 92,104, 85,166, 69,254, 13, 40, 63,211,176,228,185,173,122,140, 86, 35, 39,242,190,173, 12,171,199,133,212,151, -250,120,121, 64, 29,255, 59,254,120,150,143,217,109, 90, 69,177,114,203,162,113,239,244,109, 17, 58,176, 14, 58,183,107, 73,124, - 92,173, 39, 45,249,114,195,132, 70,206,228,227, 59, 41,116,141, 49,137,186,147, 74, 31, 5, 56,145,173,103,110,199,135,121, 40, - 85, 16, 4,138, 51, 17, 73,136,120,146,181,245,110, 42,125,100, 74, 6, 27,185,145,110, 28,152,189,148, 82,133,181,185,121, 94, -211, 38, 13, 29,186,181,109,194,188,209,169, 5,164, 44,112,241,218, 31,152,242,229,161, 43,130, 64, 67,110, 24,233, 54, 44,158, - 97,248,188,128, 42,158, 97,168,123,110,134, 33,165,148, 22,207, 58,172,122,216, 23,203,146,228,194,167,215, 93, 36,246,190, 80, -197,158,193,147, 44, 1, 79, 83,243,144,203,185, 64,157,144, 0, 80, 33,238, 44,165, 53,126,170, 29, 28, 28,156,234, 6,250,213, - 95,187,253, 0,180,133, 57,120,116,118, 27,242,179,146,240,249,198,163,245, 61, 60, 60, 58,197,199,199,159, 51,225,129,241,251, -229,248,110, 39, 80,128,149,200, 17,190,126, 31,210,237,205,224,160,148, 66, 80,165, 97,220,228,225,214,189,186, 15,183, 6,128, -167,247,111,193, 91,169, 50,138, 87,107,143,208,193, 93,252,109,160, 83, 97,251,207,183,138, 24,224,141, 29, 39,239,196,118,105, -104,163, 24,220,193,219,118, 97, 98,246, 0,212, 48,168,104,169, 69,171,204,194, 87,131,217,134,251, 41,229, 3, 28, 73,236,222, -203,169,230, 3,187, 55, 87, 74, 57, 66,104,126, 2,168,153, 3, 54,108,223,159, 47,211, 97,179,216,132,138, 16, 97, 28, 10, 11, - 11,111, 16, 66, 26,127,242,201, 39,195,102,205,154,245,154,185,185,121, 93, 0, 40, 40, 40,120,164,211,233,206, 3,216,109,202, -236,192, 18,225, 20, 67, 8,121, 20, 27, 27,235,252,253,247,223,219, 0, 80,148,156, 46, 2,144, 13, 32,165, 54, 51, 14, 75, 69, - 21, 33,228,211,151,104,233,248,177,132,179, 65, 77,174,103, 24,134, 39,132,128, 16, 2,185, 92,142, 11, 23, 46, 96, 80, 72,119, -220, 13,207, 70,144,141, 5, 90,141, 26,135,189,167, 78,129,101, 89, 16, 66,192,178,172, 73,237, 8,199,113,184,120,241, 34,222, - 30, 58, 16,114, 14,176,182,182,198, 39,159,124,130, 35, 71,142,128,227,196, 85,250, 76, 40,231,205,165,130,203,248, 56, 90, 4, - 11, 79,109, 91, 36, 5,175,195,177,109, 43,112, 60, 50, 95,115, 63, 13,179,253,211,176,250, 0,242,132,180, 47,119,132,157,186, - 24,185,252,221, 33,189,149,175,119,233,142,215, 59,119,225, 26,181,236, 52, 23,192, 26,131, 6,187, 91, 85,177, 54,120, 1,159, -109,254,249,222,184,189,103,163, 9,180,121, 24,210,163, 37,229, 5,124, 86,141, 8,120,129,211,218,204, 98,239,197,223,126,179, -133, 54, 31, 79,110,253,170,168, 83,183, 62,192,107, 17, 19,243, 0, 95,111,255, 65, 56,123,237,254, 78,141, 30, 31,198,102,210, - 2, 99, 57,139,149,149, 30,214,230, 50,255, 94, 65,214, 63, 9,160,176, 81, 74, 27, 82,129,135,141, 82,210,176, 71,128,249, 79, -148, 82,106,105, 38,105, 72,121, 93,181,156, 42,141,126,211,246,111,183,174, 28, 61,122,180,121,122,124, 50, 18,115, 35,145, 47, -115,135, 78,233,137,216, 91,231, 85,133,106,125,181,141,120, 85,247, 51, 61, 61, 61,245,198,213, 76,236,221,184, 24, 58,141, 26, -169,241,197, 90, 53, 49, 61, 23, 86, 14,238,191,153,194,169,213, 11, 57,161,195,199, 74,205, 44, 97,246,118,104,111, 89,108,134, - 26,205,220, 44,139, 31,166,252, 52,220, 61,125, 17,157, 11,138,117,219,195,103, 12,188,155,184, 25,149, 78, 75,133,244,195, 94, -205,221,241, 40, 46, 9, 23,238, 36,108,127,152, 65, 19,235,217,147,237,177,137,217, 97,125,219,120, 97,213,145,168, 15, 42, 19, - 71,149,113, 6, 58,147, 97, 0, 58, 20, 15,134, 87,129, 2, 29, 2,157,201, 48, 99,102, 26, 86,196,201, 73,241,214,202,159,158, -206,217,127, 61,189,239,180,183, 58, 90,181,107,247,166, 12,122, 13,242, 84,106, 93, 84, 22,205,173, 77, 25,213,162,167, 36,114, -138,156,255, 74,206, 18,209,179,179,100,123,153,156,137, 40, 23,215,169,182,121, 55,116, 19, 82, 74,185, 18,107, 86,149,131,225, -171,227, 52,116, 19, 82, 74,127, 44,177,102, 85,105,213, 42,207, 41, 8, 66, 98,139, 22, 45,236,250,244,233, 3,158,231,241,224, -193, 3, 60,125,246, 12,221,194, 62,128,141,141, 13,206,223,190,141,251,247,239,227,211, 79, 63,133, 78,167,195,225,195,135,227, -171,227,228, 56, 78, 91,191,126,125,105,191,126,253,160,215,235,241,240,225, 67, 36, 36, 36, 96,202,148, 41,176,182,182,198,141, - 27, 55,202, 56,211,211,211,193,113,156,246,175,120,150,254,237,168, 72,100, 85, 45,180, 0, 30,188, 14, 57,167,230, 97,205, 5, -104,181, 58, 52,188,147, 74, 31, 27,156,223, 16,108, 79,142,221,142,188,247,232,198,165,215,101, 72,141, 40,190,198, 4, 68,167, -211,164,150,158, 92, 30,180,121, 86,120,248, 19, 30,167,228,229, 71,167,211, 36, 83, 51, 71, 5,158, 64, 91, 8, 36,253,142,203, -231,207,225,236,149, 63,112, 61,226, 30,127,249, 70,244, 94, 70,192,103, 81,233,244, 65, 13,212, 41, 44, 66, 86, 97,100, 68,140, - 87, 75, 63,103, 47,240,122, 80, 65, 7,235, 33,187, 49, 42,170,157, 87,203,122, 54, 94,197,150, 44, 29,108,223,251, 21, 88,169, -168,146,239,122,156,118,115,135,186,242, 1,121,217, 25,109,186,118,106,107,110, 29,208, 11,233, 49,209,120,240,199, 69,213,141, -200,216,203,215,227,180,181,178,150,184,187,187,191,214,181,147, 63,134,140,155, 9,109, 97, 14, 30,158,253, 22,249,153,201,184, -240,155, 5,238,229,230,182, 5, 96,180, 69,235,242, 83, 93, 35, 0,232,224, 35,141,179,132,218,229,157,222,125, 32, 39, 69, 16, -212,185, 32,133,233,136, 77,208,228, 12,216,248,140, 7, 0,165,156,112,230, 52,199,202, 24,222, 64,111,123, 95, 37,171,195,142, - 83,119, 32, 8,197,203, 55, 9, 2, 54,236,248, 53, 54,236,179,183,155, 33,208,203,182, 9, 33,132,152, 98,242, 39, 20, 29,175, -239, 93,208,176,232,151,185,128,160,197,197, 73,118, 13, 59,174,201,236, 88, 83,203, 88, 68, 2, 77, 0, 16, 22,224, 70, 54, 77, - 90,243,243,220, 22,167,162, 58, 76,125,175,175, 21,168,184, 0,187, 8, 17, 34,254,122,228,231,231,143, 27, 53,106,212, 38,137, - 68,226, 8,128, 8,130, 0, 65, 16,184,229,203,151, 75,120,158,103, 24,134,225, 89,150,213,255,248,227,143, 58,158,231,211,138, -138,138,198, 85,199,169,215,235, 99,199,143, 31, 95,191,186, 25,138,123,246,236, 1,199,113, 90,189, 94, 31, 43,150, 68,245, 34, -203,112,111,104,229,170,188,241,160, 88,208,254,237,121,243, 0, 16, 80,204, 47, 39,178, 0, 0,183, 51,104, 98, 35, 39, 50,165, - 81,203, 78,243, 74,175, 49, 53,113, 69, 60, 63,176,101, 99,191, 61, 0,160,166,252,219, 53,201, 96,174, 90, 53,184,105,203,182, -123, 5, 74, 57, 61,165, 91, 25, 1, 7,139,244,184,107,204, 76,187,202,144,152,154,125,163,116,161,104, 1,244,255,221,133, 37, - 97, 28, 40,165,180,204, 93,184, 66,129,244, 28,117,181,113,160, 46, 62, 82,119,111,233, 37, 29,123,242,210,173,113, 60, 79, 93, - 88,150, 36,171, 52,250, 77,181, 21, 89, 0, 16, 31, 31,127, 46,208,137,156,188,221,196,185,135,131,178,196,202, 85, 8,164, 23, -226,100,124,106,222,185,154,112,102, 21,232,250,206, 90,125,228,168, 76,194,114,160,180, 56,160, 40,165, 40,210,242,153,165, 98, - 44,216,158,184,125,114, 88,191,135,101,201,211,234,248,174,222, 79, 90, 53,100,201,233,143,239, 60,201,218,250, 56,139, 70, 2, -192,227, 44, 26,217,192,158,204,141, 77,206,251, 56,242,105,214, 10, 83,199, 85, 80,130, 11, 45,135,204,123,225,187,218,222,207, -187,137,244, 15, 0,253, 27, 57,145,238, 67,166,126, 61,149, 16,136,203, 79,136, 16,241, 31, 66,169, 85,139, 97,152,133, 47,145, -243, 71, 66,200,155, 0, 98, 76,184,230, 42,128,198, 47, 57,111, 25, 0, 50,196, 82,126,169,247,212,244,128,165,119, 82,233, 6, - 24,177,104,180,177,191,171,244,250, 68,122, 26,128,125,109, 50, 88,194, 97,247, 50,111,218,237, 20, 58,247,207, 40,140, 18, 81, -245,167,140,245,137, 74,165, 61, 1,192,215,215,151,198,196,196,128, 82, 90,171, 65,133,119,211,232, 31, 40,183,148, 67, 69, 98, - 27, 64, 71, 99,248,162,211,233,103,192,139,174,225,152, 12,250, 57,128,207,107,148,231, 26, 70,126, 55,250,217, 74,165,167,128, -234,163,243,139, 16, 33,226,213, 20, 91,127, 2,231,143,226,157,125,245, 80, 85,192, 82, 70,188, 61,175, 30, 30, 60,120, 64,106, - 43,178, 68,136, 16, 33,226, 21, 6, 95,203,173, 66, 13, 85,203, 77,196, 43, 34,184,202,127, 39, 10, 45, 17, 34, 68,136, 16, 33, - 66,132,136,151, 36,178,202,139, 45, 2,160, 91,133,210,220,132,217, 4,132,144,110,166, 38,168, 58,126,145, 83,228, 20, 57, 69, - 78,145, 83,228, 20, 57, 95, 61,206,234,184, 95,185,217,140,212, 96,144,243,203,222, 0,116, 19, 57, 69, 78,145, 83,228, 20, 57, - 69, 78,145, 83,228,124,149, 55, 0, 99, 43, 59, 22, 93,135, 34, 68,136, 16, 33, 66,132, 8, 17,127, 18,196,216, 64, 34, 68,136, - 16, 33, 66,132, 8, 17,181, 67,181,139, 74,139, 16, 33, 66,132, 8, 17, 34, 68,136,168, 1,170, 93, 84, 90,132, 8, 17, 34, 68, -136, 16, 33, 66, 68,205, 80,163, 69,165, 69,136, 16, 33, 66,132, 8, 17, 34, 68, 84,143,170, 34,195, 19, 19, 87, 60, 17, 33, 66, -132, 8, 17, 34, 68,136, 16, 81, 5, 94,136, 12, 31, 30, 30, 78, 13,247, 34, 68,136, 16, 33, 66,132, 8, 17,127, 37, 94, 85, 45, - 34,186, 14, 69,136, 16, 33, 66,132, 8, 17, 34,106,129,138,198,104,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 37,160,170, - 49, 90,165, 1, 75, 59,151,152,234, 58,139,183, 75,132, 8, 17, 34, 68,136, 16,241, 55,224,149,212, 34,101,131,225,195,195,195, -105, 72, 72, 8, 17,203, 89,132, 8, 17, 34, 68,136, 16,241,119,224, 85,212, 34,226,172, 67, 17, 34, 68,136, 16, 33, 66,132,136, -218,136, 41,131, 89,134,229,143,197,181, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94,146,224, 42,255, 29,243, 39,255, 97, 55,145, - 83,228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,255,138,200, 42, 47,182,196, 89,135, 34, 68,136, 16, 33, 66,132, 8, 17,181, -128, 49,179, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 68,212, 0,132,144,177,132,144,222, 37,159,123, 27, 90,181, 68,139,150, 8, - 17, 34, 68,136, 16, 33, 66, 68, 45, 64, 41,221, 76, 8,113, 45, 17, 88,225,148,210, 36, 81,104,137, 16, 33, 66,132, 8, 17, 34, - 68,188, 4,148, 27,151, 21, 66, 8, 41,115, 39,138, 66, 75,132, 8, 17, 34, 68,136, 16, 33,162, 22,168,106,140, 22, 1,208,173, -146,139, 78,155,160,228,186,213, 32, 81,167, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,252,111,113, 86,199,109,138,254,248, -167,160,162,176, 14,101,226,139, 82,250,167,109, 0,186,137,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254, 87,183,151, - 62,235,176, 57, 33,102,162, 17,241,213, 3, 33,196,153, 16,226, 44,222, 9, 17, 34, 68,136, 16, 33,194,120, 11,215, 75, 29,163, - 21, 72,200,123,239, 5, 57,110,108, 76,136, 85, 4,165,133, 85,253,214,201,201,105,147, 82,169, 28, 94, 88, 88, 88, 64, 8, 17, - 12, 76,109, 0, 96,184, 46,208,195,212,212,212,142,213,253,183, 92, 46, 95,237,236,236,252, 94,126,126,126, 33, 33,132, 18, 66, - 64, 8, 41,205,240,115,123,158,231,227,211,211,211, 91,252,171, 11, 17, 96, 29,156,157,175, 73, 88,214,221,212,107,121, 65,120, -156,146,156,220,214,132, 7,102, 49, 33,152, 86,242,121, 25,165,116,230, 43,248, 86,176,198,252, 44, 8,176,140, 6,134,240, 12, -243,129, 4, 88,167, 22,132,141, 37, 15, 46, 95,211,191,214, 92, 35,245, 9, 69, 19, 66, 96, 77, 41,114, 40,193, 31,178, 86, 52, -246,111,170, 28, 66, 37, 18, 73, 95, 43, 43, 43,139,140,140,140,115, 0,246, 0, 24,106,111,111,223, 41, 55, 55, 55, 95,167,211, - 29,161,148, 30,170, 9,247,107, 77,201,116,153, 84,242,110,145, 86,183,244,226, 45,250,109,231,230,196, 94, 47, 96,137, 66,202, -117, 84,107,244,203, 46,252, 65,183,154,152, 86, 82,252, 42,148, 86, 29,166,175, 39,118,192,200,114, 7,128,195,182,182,126,114, - 71,171, 95, 36, 50,246,113,118, 74,254,240,129,169,169,207, 6,214,162,220,255,137,112,116,116, 28,201, 48,204, 23,148, 82,240, - 60, 63, 59, 35, 35, 99,219, 75,122,174,102, 3,176, 41, 57,204,166,148,126, 81, 75,190,167, 0,188, 74, 14,227, 40,165,222, 98, -211, 94,227,123,185,225,135, 31,126, 8,235,210,165, 11, 86,173, 90,133, 13, 27, 54, 60, 73, 75, 75, 91, 2, 96, 59,165, 84,243, - 87,243,188,138,120,105, 66,171, 17, 33,111,142,236,217,122,211,196,193,111,146,201, 35,231, 20, 86,243, 50,127,243,198, 27,111, -188,189,125,251,118, 73,116,116,180,153,143,143, 15, 24,134, 41, 19, 66,134,245,101,157, 58,117,132,234,254,155,101,217, 53,253, -251,247, 31,117,224,192, 1,229,141, 27, 55,148, 1, 1, 1,101,124,130, 32,160,124,253,235,227,227, 83, 37,159,181,181,245,239, - 44,203,122, 84, 36,210, 42,251,204,243,124,124, 70, 70, 70, 11, 35, 30,198,158, 0,102, 24,113, 75,151, 80, 74, 79, 84,245, 3, - 9,203,186, 39, 38, 38, 58,153, 90, 86,158,158,158, 90, 19, 94, 30,103, 66, 48, 77, 16, 40, 3, 0, 12, 67,166, 43, 20,138,141, - 69, 69, 69,113,165,231, 75,202, 44,197,148, 52,184,187,187, 15,160,148,142, 3, 64, 9, 33,155, 19, 18, 18, 14,154,114,189,149, -149,213,239, 50,153,204,131,227, 56, 82, 81,185,148, 63,230,121,158,106,181,218,248,204,204, 76,147, 5,246, 57,128,188, 1,188, -166,103,217,201,246, 14, 14, 29,111,156, 60,105, 30, 20, 20,196,176, 44, 59, 19,192,198,218,188, 55,154,107,164, 62,175,195, 32, -149, 78,222, 91,238, 61,223, 79,253,116,126,180,153, 68,125, 92,115,141,236,255,171,197, 22, 33,100,196,136, 17, 35, 38, 47, 93, -186,212, 65, 38,147, 49,251,246,237,243,155, 50,101, 74,232,170, 85,171, 28, 6, 15, 30,108,169,209,104,132,233,211,167, 7, 18, - 66,156, 40,165,235, 77,225,110,215,148,180,241,247,113,253,116,226,240,215,241,241,226, 61, 19, 59, 52, 38,233,102,230,210, 13, - 3, 58,214,183,105, 84,215, 22, 11, 54, 93,254, 16,192, 86, 19,210, 74, 56,142,107,235,230,230,230, 91, 84, 84,164, 47,233,188, - 81,131, 58,161,248,254,106, 52,154,204,204,204,253,181,189, 55, 31, 43, 20,173, 91,219, 88,156,154, 55,108,132, 89,110, 86,166, -243,154,240,163,183, 15,192, 41,120, 32,240,228, 85,106, 16, 24,134,249, 34, 33, 33,193,149, 82, 10, 87, 87,215, 47, 0,108,123, - 73,212, 54,165,245, 48, 33,196,230, 37,240,121, 25,240,121,189,132,103, 95,193, 49,204,120,153, 68,210,131,231,249,198, 37,207, - 80,132, 70,167, 59,165, 23,132,117,148,210,162, 87, 88, 7, 76, 11, 11, 11,235, 62,107,214, 44,159,105,211,166, 97,218,180,105, -117,182,108,217,178,105,209,162, 69,211, 9, 33,193,148,210,252,191,152,231, 95,111,193,250, 83,132, 86, 32, 33, 45,186, 54,105, -112,112,210,200, 33, 16, 14,172, 38, 24, 57,167, 74,145,213,182, 69,139,119,183,111,223, 14, 0, 24,222,183, 47,122,180,106, 5, - 75, 11,115,200,100,197,201, 33,148, 64, 42,145,162,223,148,143,140,201,220,178,208,208,208,183, 14, 28, 56, 96, 1, 0, 27, 54, -108, 64,104,104, 40,236,236,236,160, 84, 42, 33,149, 74, 33,145, 72,158,219, 27, 33,220, 60, 18, 18, 18,156, 20, 10, 69,153,240, - 19, 4,225,185,205,192, 79, 13,189, 94, 15, 95, 95, 95, 99,111,215,140,156,156,156,215, 10, 10, 10,170,244,233,214,173, 91, 23, - 0, 78, 24, 67,248,197,231,159, 65,208, 23,128,227, 0,189, 30, 80,107, 25, 8, 21,244,237,221,220,220, 48,126,252,120,212,102, - 33,241,144,144,222,132, 16,114,192,205,205,237, 96,106,106,170, 15, 33, 24, 83, 67, 75,215,132, 7, 15, 30, 88, 0,128,159,159, -223,120, 0, 38, 9, 45,142,227, 60,110,223,190,237, 36,151,203, 43,181, 92, 26,136, 96,104,181, 90, 52,107,214, 76,111,202,127, - 56, 3, 94,153, 12, 51,166,105,243,230, 99,231,245,235,167,184,118,237,154,130, 97, 24,232,245,122, 44, 95,190, 92, 79, 41,181, - 9, 4,172,162,128,220, 42,158,207, 89, 0, 70,150, 88,105,183, 82, 74,151, 63,119,158,162,137, 74, 39,239,253, 48,191, 95,171, -214,117,166, 35,234, 78, 68,171,122, 22,135, 97,201,169, 99, 1,252,165, 66,203,202,202,170,239,170, 85,171, 28,183,110,221,154, -123,255,254,125,237,198,141, 27, 29,199,141, 27,103,169,213,106, 17, 22, 22,150,230,239,239, 47, 93,181,106,149,227,161, 67,135, - 94, 7, 96,146,208,226, 8, 62, 27,218,183, 7,138,116, 12,116, 58,189,163,171,163,229,206, 73, 35, 58, 75, 40,213, 96,199,145, - 27,208,233,133,111, 77,180,100,181, 29, 56,112, 96,189,221,187,119,115,247,238,221,227, 26, 54,108, 8, 65, 16,192,243, 60,116, - 58, 29, 0, 64, 16, 4, 52,104,208,160,214,247,229, 93,192,207,193,217,238, 84,219, 55,123,153,185, 42,228,176,203, 74,195,104, - 41,103,185, 77,169,254, 30, 64,187, 87,169,177,160,148,130,227, 56, 60,123,246, 12, 78, 78, 78,102,118,118,118, 73, 0,230,103, -102,102,110,126,133, 27,200, 86, 50,142, 59,184,227,219, 53, 46,173,219,181, 99,157, 93,157, 16,253, 32, 14, 28,225,187,221,190, -126,163,243,187,239, 79,157, 68, 8, 25, 64, 41,189,246,170,229,221,181,253,132,254,174, 29, 62,216, 64,168,128, 5,107,143,230, - 45, 94,182, 90, 25, 54,102, 4, 59,101,202, 20,120,122,122,250,244,239,223,127, 25,128,247,171,229,105, 51,161,191, 75,187,137, - 27, 64, 41,230,125,125, 52,111,209,178,213,202,247,107,192,243, 47,127,119, 54,255,105, 66, 43,144,144,122,141, 60,157, 78, 46, -158,246,190,132,254,244, 29, 83,152,145,138,202,164,140,147,147,211,166, 94,189,122, 13,223,182,237,255, 59, 73,109,131,130,208, -255,245, 14,112,178,183,134,210, 92, 86,220, 28, 9, 4,127,220,127,108,148, 32,240,244,244, 12, 59,120,240,160,133,161,152,144, - 74,165,101,155,161,200, 42,221,202, 91, 62, 42,130, 66,161,192,233,211,167,193,113, 28, 88,150, 5,199,113,101,155,225, 49,203, -178,112,118, 54,105,232,210, 18,107,107,235,224,188,188, 60,171,236,236,108,120,121,121,229, 2,184,109,112, 62, 56, 45, 45,205, -202, 20, 66, 65, 95,128, 41,163, 3, 32,209, 92,129, 70,210, 10, 42,174, 61, 46, 95,191,139,227, 39,206, 33, 33, 49, 25, 29,218, - 52,197, 59,195, 6,226,212,169, 83,224,121,222,212,135, 39,133, 16,178,172, 79,159,222,211, 1, 66,186,117,235,150, 61,113,226, - 68,230,222,189,123,111,245,239,223, 47,232,193,131,152,146,158, 48,153, 70, 8, 89, 99,130,101, 75, 6, 0,231,207,159, 7, 0, -121, 77,158, 61,185, 92,142,223,126,251, 13,165,110, 98,134, 97,192, 48, 12, 88,150,197,177, 24, 7, 20,104, 24, 20,166, 68,226, -131,222, 94,168, 91,183, 46, 24,166,250, 33,137,157, 1,197,101,160, 63,145, 72,166,184,186,185,249,116,170, 87, 79,121,250,244, -105, 22, 0,188,189,189,105, 82, 82, 82,246,145, 35, 71,242, 56, 96,131, 55,165,219,171, 18, 89, 94, 94, 94,237, 25,134,249,162, -244,158, 19, 66,150,249,248,248,124, 90, 86,110,130,128, 97,221,237, 36,147, 38, 77,150,182,238, 92,220, 57,105,221,103, 55,114, - 31, 46, 14, 32,153,179,172,255,234,138, 34, 55, 55,119,111,131, 6, 13,216,140,140,140,203, 0,158,234,116,186, 25, 59,119,238, -116, 26, 61,122,116,234,247,223,127,191, 4,128,219,210,165, 75, 59, 23, 20, 20,236, 51,133,183, 99, 19,242,102,139,166, 65,109, -188, 60, 61,113,238,242, 53, 72,101, 18,155,241, 35,123,195,194,130,195,138,173,225,194,211,248,204,137, 23,254,160,219, 77, 16, - 89,173, 6, 14, 28,232,179,123,247,110, 25, 0,220,190,125, 27,201,201,201,112,116,116,132,153,153, 25, 36, 18, 9, 88,150,133, - 68, 34,121, 41, 34,203,218,211,254,234,225,195, 71,204,236,236,108,176,246,163, 73,120, 39, 53, 5, 54,150, 22,208,229, 23,248, -188, 98,130,195,111,192,128, 1, 10,158,231, 81, 80, 80,128,179,103,207, 90,155,153,153, 89,123,120,120,204, 3, 96,180,208, 50, - 51, 51, 75, 41, 42, 42,114, 42,169, 71, 83, 85, 42,149, 51,128, 92,185, 92, 94, 90, 79,231,151,252,159, 81,238,196, 74,220,132, -113, 6,150,172,184, 90,228,185,101,171,150,193,167, 15, 29,216,101,145,147,151, 12, 27,219, 84, 48,200,193,230,205,235, 96,102, -102,133,121,243,102,113,143,187,189,238,222,243,205, 1,167, 9, 33,221, 94, 57,177, 69,201,230,110,125,134,219,153, 41, 45, 75, -218, 18, 29,182,109,153, 4,134, 97,240,233,167,159,162, 81,163, 70, 99, 9, 33,115, 40,165,153, 85,211, 96,115,227,215, 6,219, -201, 20,197, 69, 44,240, 58,108,220,243,113, 49,207,204,113, 24,218,167,238,216, 63,190, 39, 63, 55,170,135,188,226,118, 5, 42, - 9,131, 56,180,162,169,165, 28,225,225,225,157, 66, 66, 66,206, 85,118,252, 47,120,127, 92, 1,132, 84, 36,190,184,240,240,112, - 26, 18, 18, 66, 12, 50,247,220,113, 85,104, 74,136,131,179,181,242,244,134,249,147, 44,184, 43,225,172, 42, 46, 6,137, 69,124, -217,155, 83,126,138,166, 82,169, 28,190,109,219,182,231,116,152,151,179, 19,164, 82, 9, 36, 82, 2,155,142,189,139,223,184, 11, -199, 65, 8,173,172,225,127,142,179,160,160,160,232,214,173, 91, 22, 91,183,110,133,147,147, 19,124,124,124,160, 84, 42,161, 80, - 40,158, 19, 87,134,130,171,188,208, 42,207, 89,122,158,227, 56, 48, 12,131, 83,167, 78, 65,175,215, 99,224,192,129, 47,136, 44, -142,227, 42, 20,110,149, 77, 79,165,148,158, 32,132,220,166,148,190, 86,210, 0,223,166,148,118, 50,248,239,158,142,142,142, 51, - 0, 44, 49,150,147,101, 41,216,162,203, 16, 60, 86,131,123, 54, 9, 26, 73, 19,156,185,120, 3,219, 54,173, 2, 0,248, 52,108, -137, 65,253,123,151, 89,227,140,225, 52,132,187,187,251,158,180,180,244, 94,175,191,254, 58,178,178,178,116,243,231,207, 71,112, -112, 48,252,252,252,140, 42,163,202, 4,220,237,219,183, 61, 85, 42,149, 81,110,199,138, 56, 9, 33,216,185,115, 39,138,138, 94, -180,234,219,118, 90,132,143, 67,189, 49,234,131,237, 88,118,127, 31,214,175, 95, 95,101,222,149, 64,112,145,117,131, 53, 50, 86, - 31,188,100,214, 4,249, 59,239,188,195,142, 26, 53, 10,113,113,113, 24, 61,122,116,209,169, 83,167, 52,201, 73, 73, 71,100,130, -176, 86,251,188, 48,174,148, 83, 46,151,239, 56,113,226, 4,246,237, 43,214, 37,209,209,209,240,245,245, 53,127, 78, 36,103,238, - 71,222,211,181,184,122,236, 30, 90,247,217,141,171,199,134,129,207, 14,151,180,240, 69,142, 41,247,179, 6,189,175,211, 21,124, -183, 15,192, 62,131,251,107,246,253,247,223,247, 3,112,180,228, 28, 0,124,105, 10,103, 49, 17, 70, 13, 14,237, 7, 78,106,137, -123, 49,241,232,212,182, 25,156,157,156,112,251,110, 44,158, 38,100,166, 16,130,145,111,180,151, 47, 81,169, 52,115,206,223,162, -223, 84,195, 73, 60, 60, 60,252,246,239,223, 47, 53,176, 64,151,189,227, 44,203,150, 29,151, 10,239,154, 60,159,165, 34,203,210, -195,226,234,103,235,218,155, 95,141,248, 30,190,222,111,194,246,205,222,248,230,228, 73, 60,184, 19, 85,164, 41,212,119,253,171, -203,232,207,226, 36,132,248,133,134,134, 94,222,181,107,151,205,179,103,207,112,254,252,121,248,248,248,160,176,176,176,218, 14, -111,121,206,162,162, 34, 39, 3,183, 94,233,208,134, 47, 52, 26, 77,105, 97,148,190,136,149,186, 19,203,113,190,224, 38,172,201, -152,172, 10,234,121,153, 66, 42,221,127,248,208, 30,139,168,123,231,209,180, 73, 27, 88, 88, 7, 66,224,147,145,145,153,143,172, -152, 68,124,254,249, 50,204,155, 63, 27, 71,127, 56, 96,225, 31,208,228, 32, 33,164,129,161, 27,241,223, 94,238, 32,116,236,233, - 99,223,111, 32, 84,128, 42,229,158, 92, 82,240, 72, 57,124,216, 0,118,200,144, 33, 56,122,244, 40,238,220,185,179,161, 50,145, -101,200, 73, 40,198, 70,158,223,183, 1,148, 66,149,122, 79, 46, 85, 61, 82,142,120,107, 16,251,206,208, 30,184,242,235, 26,244, -104,250, 40,210,205, 9,253,179, 74,156,135, 28,139, 12,185, 2,151,204,174,145, 43, 6, 98,235, 44, 0, 98, 32,176,206,226,255, -199, 96,254, 27, 16, 82, 18, 29,126,108,121,235, 22, 87, 19,129, 5, 0,126,132, 88, 40,101,210,171,219,230, 77,112, 83,198,221, -225,212,145,191, 33, 81, 45,208,141, 79,244,194, 85, 66,204,110, 80,170, 42,127, 77, 97, 97, 97, 65,108,108,172,217,200,254,253, -209, 46, 40, 8,174,246,246,104,224,225, 1, 51,185, 12, 50,169,196,160, 94, 54, 73, 69, 82,127,127,127,244,233,211, 7, 18,137, - 4, 74,165, 18, 22, 22, 22,144,201,100, 21, 90,179,140,237,229, 82, 74,193,178, 44, 34, 35, 35,241,244,233, 83,216,216,216,224, -210,165, 75,232,218,181,235, 11, 86, 45, 67,113,102,138,137,190,124,195, 95, 42,196, 96,164,203,176, 20, 60, 79,144, 79,155, 64, -241,100, 34, 10, 73, 51,168,213,122,168,213,106,124,115, 81,139,107,177, 5,208,106, 53, 80,171,213,149,254,103, 21,247,150,113, -115,115, 27,238,235,235, 59,126,216,176, 97, 58,153, 76,134,130,130, 2, 20, 22, 22,226,206,157, 59,186, 94,189,222,204,238,211, -167,183,117,120,120, 56,165, 20,203, 76, 28,167,149,225,238,238,238, 89,226,158,205,168, 97, 15,162, 76,196,148,199,200, 47,163, -192,177,197,101,178, 97,195, 6,240, 60, 15, 74,105,165,133, 84, 68,200, 47,243, 23,173,180, 94,186,250, 91, 88,219, 57,227,220, -185,115,252,207, 63,255,156, 71,128,232, 7,119,238,124,249, 63,224,199,253,128,214,148,244,101,101,101,153,249,248,248,192,195, -195, 3,130, 32, 64,167,211,149, 89, 95, 50, 50, 50,160, 82,169, 96,103,158,141,250,246, 30,208,231,157, 69, 82,228, 2,184, 90, -220,195,246, 19, 26, 93,115, 63,252,241, 15, 48,133,127, 7,224,187,218, 19,193,221,201,197, 19, 12,213, 33, 49, 53, 3,253, 66, -122,128,149, 90,224,241,179,116, 52, 9,172,231,250,214,255,218,187,178, 68,143,105, 75,118,143, 7,240, 77,117,116,249,249,249, -252,189,123,247,112,251,118,177,222,181,178,178,130,185,185,249,115,239, 56,195, 48,181,178,104,149,138,172, 69, 27,186,154, 51, -146, 2,228,242,167,177,117,231, 13, 52,241,239,141,141, 87,175, 23,241, 41,153,221, 86, 20, 21, 69,255,171,221, 70,174,174,227, - 4, 65,152, 71, 41,205, 14, 13, 13,117,222,189,123,183,109, 66, 66, 2,110,220,184,129, 79, 63,253, 52,141,231,121, 61,165,148, - 80, 74, 23,188,132,103, 73, 48, 16, 88, 47,211,138, 32, 81, 42,240,129,131, 21,233,203, 49, 86, 62,250,220,252,199,233, 26,122, -164, 80, 47,124, 77, 41,213, 85,117, 45,195, 48,239, 29,216,187,193,205,193, 81, 64,103,199,215,145,148,162,197,162,143, 70, 32, - 35, 35, 15,223,108, 89, 12, 64, 6,173,158,197,107,157, 7,192,201,201, 29, 99,199,140,117,217,176,105,227, 4, 0, 43, 94, 21, -131, 86,210,165,117, 63, 16, 66, 78, 59, 58, 58,222,153, 48,118,172,163,143,207,219, 80, 40, 20,216,179,103, 15,118,175, 93,203, -175, 6, 6,109, 34,228,204, 56, 74,127,168,146,231,202,255,243, 76, 10, 11,115, 12, 8, 8,131, 92, 46,199,175, 63,127,135,162, -228,157,121, 33,237,160, 45, 44, 66, 72,157, 62,212,238,201, 49,146, 41,145, 32, 6, 0, 36, 10, 36, 73,128,212,114,116,255, 54, -129, 85, 38,163, 74,199,105,149,238,107, 29, 25,158, 74,100, 17, 91, 38, 15,245,118,134,154,104, 46, 30, 67,130, 90,224,151, 62, -208,178, 55,115,232,199, 81, 21,136,172,146, 7, 91,240,242,242,194,235, 45, 90,160,127,199,142,224, 56, 14, 10,153, 20,150, 10, - 51, 80,190,216,146, 85,234, 58,172,162, 77, 68, 69,214, 39,123,123,123, 72,165,210, 50,129,101,172, 53,171, 50, 78, 65, 16,192, -113, 28,110,223,190,141, 14, 29, 58,192,211,211, 19,251,246,237, 67,207,158, 61, 95,112, 37,154, 42,178, 74,133,150,161, 27,207, - 96,144,124,181,131,224, 95, 16, 9, 26,130,116, 77, 19, 16, 18, 4,189, 30,224, 41,160, 46, 42, 2,165, 0,165,128, 78,171, 65, - 81, 81, 81,217,127, 26,227,146,117,117,117,245,170, 91,183,238,194,233,211,167, 5, 52,105,210, 20,105,105,105, 16, 4, 1,230, -230,230, 40, 44, 44,132,149,149, 21,218,181,107,247,120,225,194,133, 73,148, 98,172,169,131,225, 95, 66, 5, 11, 0, 56,121,242, -228,115,110,195,210,173, 32, 41, 30,163, 62,252, 30, 50,174,216,181, 84, 58,134,167,170,122,183,203,107,237,113,249,102,180,254, -189,105,107,212,146,140, 27, 75, 92, 4, 97, 91, 60,144, 82,139,198, 5,233,233,233, 72, 73, 73, 65,223,126,253,176,123,215, 46, - 60,121,242, 4,129,129,129,232,210,165, 11,156,156,156,240,228,201, 19, 92,187,160,134, 58, 43, 19,153,154, 27, 80, 90,182,198, -225,115,177,234,185,235, 53,177,127, 87,109, 65, 8,233, 11, 96,132,149,149, 85,221,194,194,194, 36,189, 94,191, 31,192,126, 0, -131, 56,142, 27,164, 84, 42, 93,115,115,115, 31,161,120, 54,209,145,106, 93, 73, 10,133,189, 92, 97, 5, 65,175, 6,199,113,240, -244,244, 1,229, 53,200,202, 85, 97,228,144, 62,184,121,251, 46,126, 62,115, 69,175,211, 9, 95, 25,115, 91, 89,150,165,126,126, -126, 72, 77, 77,133, 68, 34,129,153,153, 25, 44, 44, 44, 48,115,230, 76,172, 93,187,182, 76,100,213, 84,104,189, 11,248, 89,121, - 89, 92,249, 98, 93,177,200, 74, 78, 76, 66, 74,188, 4,142,246,206,248,106,237,234,130,172, 39,201,173,191, 5,254,213, 34, 11, - 0, 4, 65, 88,144,144,144,224,196,113,156,139, 94,175,199,179,103,207,240,251,239,191, 99,226,196,137, 41, 25, 25, 25,157, 41, -165, 53,202,163, 66,161, 72, 45,181,100, 41, 20,138, 84,160, 82,119, 98,182,129, 37, 43,187, 10,202, 10,221,132,132,144,122, 62, - 30,150,167,182,172,154,226,213,178,117, 59, 70,201, 89,101,229,199, 36,119,184,120,254, 92,187,137,171,190,153, 64, 8,233, 65, - 41,125, 88, 25,169, 92, 34,233,213,166,125,123, 14, 52, 5,156,172, 3,150, 45, 29,130,180,244, 92,100,101,230, 65, 42, 53,135, - 70,199,130, 23, 8,218,117,232,136,239,182,239, 69,163, 49,163, 89,153, 68,210,253, 85, 18, 90, 37, 88,252,245,215, 95,123,249, -251,251, 99,219,182,109, 56,179, 99, 7,222,201,201,193, 57,134, 97,117, 18,137,195,143, 58,221,102, 0, 63, 24,203,211,168, 81, - 35,124,251,237,183,216,185,115,103,220,240,174,169, 7,167, 12,135,147, 86,139, 55,110,220,135, 93,157, 62,192,141,251,176,107, -238,143, 6,122, 14, 49,132,224,185,112, 80,225,225,225,157, 12,247,255, 38,148,172,109, 88,161,139,157, 3,208, 57, 60, 60,156, - 26,238,171, 35, 84, 58,249,133,237, 28,242,186,119, 80,125, 47,162,219,183, 6,207, 10,244,154, 60, 32,158, 67, 0, 0, 32, 0, - 73, 68, 65, 84, 57,247,181,178, 7,249,116, 74, 20,165,171,171,232, 65, 80,150,101, 97,105,102, 6, 71, 27,155, 98, 51, 63,195, - 0, 2, 32,232, 0,194, 23, 11, 0, 42, 16,152, 50,105, 90, 16, 4,200,100,178, 10, 7,190,155, 58, 54,203,144, 51, 47, 47, 15, -143, 31, 63,198,216,177, 99,161, 84, 42, 1, 0,201,201,201,240,246,246, 6,199,113, 72, 72, 72,192,175,191,254,138,186,117,235, - 66, 46,151, 19, 19, 11,165,180,225, 15, 38,132,156, 3, 16,156,148,148,100,229,234,234, 10,147, 45, 90, 2, 69,161,154, 64,163, -225,241,224,193, 3, 36, 38, 38,226,241,163, 24,180, 44,200, 5, 5, 11, 74,169, 73, 22, 45, 15, 15,143, 32, 95, 95,223,141, 75, -150, 44,145,122,120,120,128, 82, 10, 91, 91, 27, 20, 22, 22, 34, 61, 61, 3,129,129,129,240,244,244,196,178,101,203, 0, 96,247, - 95, 45,178,202, 61, 83,101, 66,203, 80,112,125,248, 63, 47,100,102, 90,128,101,255,127,246,105, 53, 99,180,164, 0,208,185, 71, - 40,119,234,231, 31,205,245,192,194,100,150, 93,200, 85, 95,142, 58, 94, 16,148,149,157,127,246,236, 25, 36, 18, 9, 14,236,223, -143,204,148, 20, 52,105,210, 4,173, 90,181, 66, 76, 76, 12,110,222,188, 9,123,123,123, 56,122,180,197,185, 71, 90, 68, 37,170, - 96,109,109,141,216,120,230,111, 11, 25, 64, 8, 25,211,173, 91,183, 79,191,252,242, 75, 39, 23, 23, 23, 73, 90, 90,154,255,186, -117,235,154,172, 91,183,110,210,132, 9, 19,156, 39, 76,152, 96,235,232,232,200, 37, 39, 39,251,125,244,209, 71,205, 9, 33,117, - 41,165, 43,171,226, 52, 55,183,180, 99,165,230, 32,132,131,141,181, 45, 56,153, 57, 4, 61, 7, 94, 0,172,172, 29,113,249,230, - 1, 92,138,200, 27,151,154,129,253, 70,188, 55,212,222,222, 30, 12,195,192,222,222,254, 5, 75,245,196,137, 19,177,101,203,150, - 50, 55, 98, 77, 69,214,162,117, 93, 45, 72,137,200, 74,126,198,129,168,235,226,216, 15,191,101,103, 61, 73,238,240, 42,136,172, -210, 58,142, 82,138, 71,143, 30,161,176,176, 16, 23, 46, 92,192,130, 5, 11,210,202,139, 44,103,103,231, 49, 86, 86, 86,243,243, -243,243,151, 37, 37, 37,173,169,142,183, 68, 68, 61,223, 25,172,192,157,104,108,136,135,138,220,132,132, 16,137,167,171,226,196, -205, 11,223,123, 91,211, 63, 8,158,142, 5, 30,228,222,177,188,234,244,218,155, 45, 67,152,102,235, 63,171,211,106,220,204, 19, -132, 16,255,202, 44, 91, 2,207, 55, 51,183,176, 4,144,138, 27,191,159, 45, 19, 89, 25,153, 57, 80,107, 89,168, 53, 4, 69, 90, - 6,175,119,123, 3,107, 55,238, 68, 66,106, 38, 74,103, 36,190, 42, 32,132,216, 5, 5, 5,133, 13, 26, 52, 8, 11, 23, 46,196, -233, 47,191,212,188, 79, 72, 46, 7,208,112,158,135, 64, 41, 97,140, 24,196, 94,158,103,197,138, 21, 63, 0, 24,186,100, 34,218, -102,229, 99,164, 91, 31,106, 87,167, 79,241,111, 7, 78,167, 0, 96,151,118,250,249, 38, 51, 36, 36,132,148,122,214, 76,245,176, -253,211,193,133,132,132,156, 11, 15, 15,135,225,190,170, 11,172, 92, 26,190, 57,243,147,137, 75, 91,246,236, 72,146,166,118, 71, -102,110,145,126, 86,148, 86, 22,175,170, 90,100, 25,226,147,117,235,112, 51,186,248, 61,246,112,114,194,180,183,222, 2,213, 3, -151,238, 68, 97,239,233,211, 24,210,173, 27,204, 75,102,252, 25,107,125,170,200,138,101,104,205, 50,213,234,148,157,157,141,253, -251,247,163, 85,171, 86, 80, 42,149,224, 56, 14,193,193,193,184,123,247, 46,234,213,171, 7, 66, 8, 14, 31, 62,140,254,253,251, -227,225,195,135,104,219,182,173, 69, 77,132, 86, 84, 84,148, 21,165,244,181, 82,235, 71, 77,161, 86,171,113,239,222, 61,244,233, -211, 7,182,182,182,112,119,223,141,211, 39,190,135, 50,232, 29, 16, 2,147,132, 22,207,243,239,134,132,132, 72, 9, 33, 80,169, - 10,161, 80,152,193,220,220, 2,150,150, 86,240,243,243, 71, 98, 98, 34,122,246,236,169,137,141,141, 93,159,148,148,180,207,212, -180, 6, 6, 6,154,231,228,228,188, 83,167, 78, 29, 89, 73,111, 55,176,126,253,250, 31,199,198,198,230,153,106,213, 42, 21, 88, -132, 16,176, 44, 91, 38,180, 56,134,129,171,139, 83,217,113,201,248, 52, 82, 5, 87,110, 66,134, 90, 14, 0, 94, 94, 94, 88,187, -233, 40, 19, 18, 18,130, 73,147, 38, 65,167,211, 97,253,250,226, 73,118,195,134, 13,131, 86,171,197,193,131,197,147, 36, 57,142, -171,210,108,242,251,239,191,227,198,141, 27,208,233,116,200,201,201,193, 79, 63,253,132,115,231,207, 99,207,225, 95,240,228, 81, - 12,130,253,189, 49,122,244,187,144, 72, 36,216,190,125, 59, 58,116,232,240,183, 86, 8, 18,137,100,248,150, 45, 91, 92,183,109, -219,150,125,248,240,225,130, 54,109,218,200, 87,175, 94,237,180,118,237, 90, 71,141, 70,131,201,147, 39,167, 94,185,114, 69,221, -175, 95, 63,243,205,155, 55,187,214,175, 95,191, 59,128,149, 21,220, 79,115, 0, 67, 0,188,221,185,149, 53,151,157,167,130,160, -215,224,209,147,199,200,201,215, 64,224,181,136,139, 79, 68,126, 17,143,140,204, 60, 4, 55,235,241,245,217,179,103,103, 19, 66, -102, 81, 74,143, 87,151,206, 59,119,238,224,202,149, 43,120,242,228, 9, 30, 61,122,244,220,185, 49, 99,198, 96,231,206,157, 38, - 91,180, 42, 22, 89, 44,136,186, 30,142, 31,190,154,157, 26,147,244,202,136,172,146, 58,104,158,171,171,235, 60, 87, 87, 87,197, -201,147, 39,173,235,212,169, 3,189, 94,175, 41,111,201,234,220,185,243,156, 45, 91,182,184,214,171, 87,111, 34,128, 53,255,132, -180, 51, 12,198, 44,219, 16,230, 96, 41,139, 75,196,131,149, 37,177, 4, 89,160, 48, 23, 56,187, 11, 92,251,185,143, 39,246,155, -110, 59, 99,219,194, 49,168, 98,134,108,236,195,103,216,176, 97, 45,166, 76, 30,137,239,190, 89, 6, 65,224,160,214,177,240,242, -105, 3,181, 86, 0, 97, 56, 52,105,214, 2,103,206, 94,128,132, 1,246,111,219,240, 74,153,178, 40,165,153,132,144,245,135, 15, - 31,254, 96,210,164, 73, 16, 4, 65, 54,127,195, 6, 85, 90, 90,218, 98,152, 16,255,170, 2,158,254, 27, 54,108,136,158,177, 54, -237,135, 41,195,193, 62, 57, 70, 50,111,220,135,221,192,233, 20, 7,150, 18, 52,247, 71,166,178,226, 38,254,124,185,253,171, 33, -180, 74,149,164,225,190, 34, 52,247,171,247,153,181,157,237,187,173,130,253, 28,166, 77,122,159,123,152, 92,132,131,117,222,202, -255,117,199, 87,230,201,122,249,215, 49, 84,181,218,148, 63,222,251,235,175,101,159,151,239,222, 93,225,185,164,129, 3,141,238, -153, 85,102,197, 50,213,146, 5, 0, 74,165,210,166,123,247,238,232,218,181, 43, 6, 12, 24, 80, 54, 38,171,105,211,166,216,179, -103, 15, 66, 67, 67,113,235,214, 45,184,186,186,162, 97,195,134,104,216,176, 33,126,252,241, 71, 83, 31,112,240, 60,143,160,160, -160,210, 89,135,193,241,241,241, 86, 53, 45, 72,181, 90,141,140,140, 12,216,217,217, 65, 38,147,161,117,235, 86,248,224,195,214, -112,112,253, 22, 65, 1,254, 40, 40, 40, 40,155,254,110, 68, 99, 27,212,160, 65, 3,164,165,165, 33, 45, 45, 13,142,142,142,112, -115,115,131,139,139, 11, 86,174, 92, 73,215,172, 89,243,179, 86,171, 93,159,150,150,102,178, 37,203,213,213,181,163,157,157,221, - 28,149, 74, 37, 51,232,225,202, 28, 29, 29,143,184,185,185, 45, 78, 76, 76, 52,101,141, 77,104,181, 90, 16, 66, 16,254,200, 13, - 5, 26,130,220,248, 27,152,244, 63,239,231,132,151, 68, 34, 49,102, 64,111,193,208,161, 67,157, 60, 61, 61,240, 44,246, 14, 14, - 28,160,248,242,203, 47, 75,103, 69, 34,186,164, 99, 80,122,220,165, 75, 23,248,248,248,192,148, 32,153,130, 32,224,246,237,219, -216,125,228, 28, 92,189, 3, 16,247,224, 30,110,254,120, 12,117, 28,237,208,168, 89, 11,232,116,186, 90,133,222,120, 25,208,233, -116, 91,125,125,125,169, 70,163, 57, 7, 96,109, 68, 68,196,200,164,164,164,201, 71,143, 30,117, 27, 52,104, 80,226,177, 99,199, - 86, 3,216, 22, 17, 17, 17,246,249,231,159,119,213,235,245, 21,206, 22,100, 89,246,187,143, 62,250,168,243,160, 65,131,136,148, -209,105, 78,158,216,206,233,245, 58,242,201,172,173,252,217,139,231, 24,189, 94, 71, 6, 12,253, 72,248,241,215, 8,102,220,135, -203,249,166,109, 66, 16, 25, 25,233,210,187,119,239,207, 1, 84, 41,180, 74, 45, 85,149, 89, 40, 89,150,197,200,145, 35,177,103, -207, 30,163,243, 61, 26,168,103,229,109,113,101,209,186,110, 22,132,203, 55, 16, 89,245,113,252,240,213,236,148, 7,137,175,148, -200, 2,128,244,244,244, 77, 0, 54,217,217,217,165,152,155,155, 35, 47, 47,239,133,231,143, 16,162,240,247,247, 87,200,100, 50, -244,232,209,195,206,213,213, 53,154, 97,152, 53, 9, 9, 9,149, 42,142,138,220,132, 21,185, 19,107, 51,235,208,214, 17,189, 91, -119,108,102,121,223,122,161,165,130, 43,186, 85, 39, 90, 97, 69, 0,228,168,157, 31, 93,126, 58, 36,151,164,202,155,182,232,210, - 28, 86,156,121,239,202,132, 22,195,178, 55,115,178,178,123,229,230,105,112,241, 82, 36,134, 14,105, 0,181,150, 64, 16, 24,228, - 23,168, 1, 86, 2, 6,192,176,183, 70,128, 18, 14,153, 41,137, 96, 89, 54, 2,175, 30,102,134,133,133,245,154, 53,107, 86,221, -146,248, 87,222, 37,241,175,166, 17, 66, 26,211,106,130,143, 87,193, 83,231,216,158,185, 83,143, 92,216,152, 19,210, 78,245,160, -185, 63, 0,192,174,185, 63, 50, 37, 18,196,112, 44, 50, 40,133,170,156, 85,171,147,225,254, 95,102, 29,124,110, 16,188,225,177, - 81, 99,180,124,235,121,188,209,169,101,139, 15,103,207,154,109,121,247,242, 89,204,248,108, 45,245,109,209, 61,111,211,133,155, -154,124,115,159, 94,121,105, 15, 46, 25,171, 47, 0,224,141,215, 67, 17, 28,216,234,133,147, 29,186, 20,199,146,188,120,230,119, -164,164, 37, 24,221,216,150,136,131, 10,199,100, 25, 51,165,191, 2,211,119,118,100,100,164, 83,124,124,252,115, 3,223,125,124, -124, 64, 8,193,213,171, 87,113,229,202, 21, 12, 29, 58, 20, 28,199, 65, 34,145,224,220,185,115, 38, 89, 99, 12,172, 75,183, 41, -165,157, 8, 33, 61, 61, 60, 60, 42,156,109,104, 12,151, 74,165, 66, 78, 78, 14, 78,156, 56,129, 6, 13, 26, 96,209,162, 69,112, -115,117,198,236,217, 83, 33, 8, 2,114,115,115,193,243,188,177, 22, 45,161,212, 90, 36, 8, 2,210,210,210, 80,183,110, 93,172, - 91,183, 14,171, 87,175,254, 60, 49, 49,241,168,169,105,244,242,242,178,225,121,254,147, 62,125,250,116,239,215,175, 31,122,246, -236,249,220,249, 93,187,118, 89, 30, 60,120,112,177,167,167,231, 27, 90,173,118, 73, 74, 74, 74,154, 49,188,223,126, 91, 28,126, - 73,217,102, 30,102, 12,170,131,183,199,111,199,202,149,135, 32,151,203,159,107,120, 23, 46, 92, 88,165,136, 17, 40,245,149,166, - 95, 78,156, 58,125,133,211,226,197,167,113,250,116, 42, 24,134,129,171,171, 43, 24,134,193,227,199,143,193, 48, 12,188,189,189, -193, 48, 12, 18, 18, 18, 74,199, 4,102,161,200,184, 88,134, 12,195,160,168,168, 8,207,226,158, 32, 62, 54, 26, 22,185,201,112, -180, 82, 34,235,206,109, 4,143, 30, 83, 22,255,233,111,238,225,238, 4,176,211,224,171, 21,132, 16, 13, 33,100, 0,128, 31, 40, -165,165, 22,141,207, 75,182, 10,209,166, 77,155,166,179,102,205,146,148,134,219,112,243,250, 66,175,213,106, 5, 0,240, 15,126, -237, 57,181, 31, 19, 19,131,149, 43, 87,162,160,160, 0, 82, 99, 2,221,149,136,214,210, 25,134, 21,137, 48, 83, 68, 22, 0,216, -123,123,124,125,245,198, 57,254,143,216,141,170,136,251, 63,153, 37,197, 49, 96, 52,175,174,200, 42,111,217,242,240,240,152, 39, - 8, 2,165,148,206, 53,168, 91,229, 94, 94, 94, 23, 78,158, 60,105,175,215,235,241,213, 87, 95,217, 36, 39, 39,219,188,246,218, -107, 51, 0, 84, 42,180, 42,114, 19, 86,228, 78,132,193,172, 67,185, 92,110, 87, 85,245, 81,126,214, 33,207,195,207,202,210, 6, - 89,136,135,218, 65,215, 52,219, 94,159,121, 42,105,204, 45,183,167,205, 2,205,121, 93, 93, 38, 87, 3,119,165, 13, 4, 74,253, - 42,237,156,234,116, 63,221,186,113,179,135,151,103, 3,246,232,241,243,232,219,127, 16,212,106, 6, 69, 58, 2,194, 74, 64, 88, - 41, 26, 7, 55, 67,195, 70,193,160, 0,126,191,118, 89,175,209,233, 78,189, 74,101,239,214,225,195,161,110, 29, 62, 88, 3, 42, -208, 10,226,104,213,237,223,191,255, 98, 0, 31, 86,199,227,220,246,195,161, 46,237,138,121, 12,227,104,125,244, 65, 24,238, 92, -147, 88,159,191,177, 84,218,179, 13,194,211, 78, 19, 40, 21,255, 63,235, 80,194,212, 60, 52,199,191, 69,112, 25, 37,180,188,188, -188,108,156, 44,148,223, 78, 24,253,174,229,211, 63,126, 67,114,212, 85, 92, 58, 31,157,181,247,224,161,204,130,140,212,209, 38, -136,172, 50, 55,159,189, 75, 29,248, 4,188, 40,180, 20, 22,142, 0, 0,159,128, 86, 96,205, 77, 11, 35, 84,145, 53,171, 38, 34, -203,176,194,174, 40,134,214,184,113,227,176,101,203, 22,180,111,223, 30,190,190,190,101,149,189,169, 86,179,242,214,165,154,204, - 54, 52, 68, 94, 94, 30,188,189,189,177,121,243,102, 68, 68, 68,192,210,210, 18, 67,135, 14, 69, 94, 94, 94,153,192, 50,118, 48, - 60,165, 52,230,228,201,147, 45, 7, 15, 30, 76, 37, 18, 9,201,206,206,134,141,141, 13,214,173, 91, 87,144,148,148, 20, 94, 3, -145, 53, 72, 42,149, 78, 29, 50,100, 8,235,239,239,143,148,148, 20, 88, 89, 89,233, 8, 33, 18, 0,176,177,177,209,153,153,153, - 33, 44, 44, 12, 77,154, 52,233, 56,109,218,180,246,238,238,238,235, 18, 18, 18,182, 87,245, 44, 17, 66,202, 26,212,209,107,238, - 65,163, 41, 22, 42,235,215,175, 71,201, 88,183,255,119, 17,196,198, 2, 70,204,100,177,176,176,128,175,175,111,133,101,223,177, - 99, 71,252,254,251,239,197,174, 73,142,131,147,147, 19, 46, 93,186,100,212, 76,170,210, 64,144,145,145,145, 8,240,113, 64,196, -233,147,112, 80, 74,208,196,205, 5, 30, 29, 59, 33, 58, 58,250,111,179,102,149,196,166,122, 31, 64,183,146,103,112, 43,128,113, - 6,199,235, 40,165, 95,155,194,169,215,235, 41,195, 48,228,217,179,103, 90,165, 82, 73,236,236,236, 56,185, 92, 14,181, 90, 93, - 38,184, 98, 98, 98,112,252,248,113,196,199,199,195,206,206,142,177,182,182,134, 86,171,205, 50,134,223,207,207, 15, 46, 46, 46, -207, 13,124, 31, 61,122,116,141, 68,214, 72, 32,104,203, 23, 75,234,200, 25,214, 58,192,225, 13, 60,186,247,184,136,209, 64,241, - 95, 16, 89, 0,144,149,149,181, 9,192,166,210, 99, 71, 71,199, 81, 44,203,206,182,182,182,182, 62,119,238,156,141,163,163, 35, -217,190,125,187,110,238,220,185,217, 44,203,102, 17, 66, 86,253,253,226, 16, 81,233, 57,177,222, 18, 91, 55,225,143, 34,122,121, -242,179, 25, 13,179, 36, 13, 28, 73,163, 32,244, 79,189,123,113,148, 62,182, 93, 74, 82, 50, 67, 33, 68, 85, 81, 7,111,157, 49, -107,225, 39,209,247,110,122, 41,172, 20, 24, 23, 54, 11,225, 63,159, 1, 97, 36,184,112,249, 42, 52, 90, 30,233,153, 57, 24, 50, -108, 56, 60, 92, 29, 16,117,229, 68,154, 94, 16,214,189, 90, 34, 91, 88,219,163,239, 40, 91,185,153,178,228,158,240,216,249,205, - 84, 48,204, 26,124,250,233,167, 8, 10, 10, 26, 79, 8, 89, 80, 93, 28, 45, 66,132,181,141, 59, 13,179,149,202,139,121,168,192, - 99,243,254, 25, 37,113,180,166, 96,221,166,131,141, 27,249, 60,154, 95, 85, 28,173, 87, 69,100, 25,238,171, 21, 90,117,234,212, -145,155, 75, 48,214,206, 76, 58,109,194, 91,253, 28, 83, 99,239, 32,254,238,205, 98,247,130, 86,165, 77,138,142,242, 53,226, 79, -187,149,139,223, 65,171,114, 93, 21, 21,233, 96, 42,103,105,131, 91,222,154,101,138,200,170,136,211, 80,108, 25,198,205,242,244, -244,196,226,197,139,171,141,163, 85, 65,222, 75,191,239, 9, 32,184, 84,108,161,120, 48,124, 79, 99,102, 26, 86,198,233,232,232, -136,140,140,226, 8, 9,157, 59,119, 70,231,206,255, 63,159, 65,171,213,150, 89,177, 44, 45, 45, 95,176,104, 85,196,105,102,102, - 54,227,208,161, 67,239, 94,190,124,121,240,199, 31,127, 44,233,218,181,107,169,152, 43,164, 70,172,237, 86,158,147,231,249,176, - 19, 39, 78,176,130, 32, 96,243,230,205,248,253,247,223,169, 82,169,156,163, 84, 42,215,154,153,153,241, 42,149,106,220,152, 49, - 99,134,207,159, 63,159,233,216,177, 35,126,251,237, 55,166,110,221,186, 35, 0,108,175, 46,239, 87,175, 94, 5,195, 48,208,103, -198, 97,252,140,189, 48, 55,227,112,239,222, 61,100,102,102,190, 16,196,212,152,251,105,104, 41, 41,221, 58,118,236, 88,230,134, -108,221,186, 53, 88,150,197,173, 91,183, 42,116,195,150,227,164,246,246,246,101,207,135, 84, 42,197,153, 51,103,240,217,103,159, -193,203,206, 6, 89,119, 35,224,210,249,117,116,127,119, 12,134, 14, 29, 10,150,101, 97,103,103, 87,102,249,173, 46,239,181,172, - 16, 12, 57,223, 13, 8, 8, 24, 17, 21, 21,229,209,184,113, 99,215,200,200,200, 46, 65, 65, 65,222, 17, 17, 17,165,199,114, 24, - 49, 54,199,144,243,250,245,235, 7,214,174, 93, 27, 54,114,228, 72,169, 32, 8,252,211,167, 79,117, 0,136,139,139, 11,123,253, -250,117,225,232,209,163, 80,169, 84,240,240,240, 96,220,221,221,201,169, 83,167,132,187,119,239, 94,165,148,206, 50, 38,239, 60, -207, 63, 23,198,161,244,243,174, 93,187, 76,126,223,235, 52,244, 91,212,245, 53,127,207,244,196, 91, 72, 74,136, 5,159,227,168, - 61,126,248,152,218, 20,145,245, 23,148,209, 95,201,185,240,193,131, 7,238,106,181, 26, 50,153, 12,235,215,175,215, 46, 94,188, - 56, 42, 61, 61,189, 3,173, 96, 70,121,121,206, 26,206, 58,204,172,130,243,133, 89,135, 57, 25, 8, 63,124,228,122, 75,139,254, - 91, 49, 62, 49,173,108, 96, 35, 37,196,238,144,115, 96, 7,101,171,198, 9,204,143,243,152, 60,190, 48,188,178,116, 82, 74, 53, -132,144, 65,253, 67,135,253,178,103,207,110,139,185,243,230,225,210,213, 8,100,100,231, 67,160, 44, 4, 66, 48,123,246, 92,184, - 56,216, 33, 55,241, 65,161, 90,171,237, 95,126, 41,158,127,123,185, 19,194, 76, 60,117,116,251, 26,134, 64, 40, 72,185, 47,103, -243, 98,149,111, 15,237,207, 13, 26, 52, 8,135, 14, 29, 66,100,100,228,198,202, 68,150, 33, 39,165,204,196,136,115,123,215, 16, - 64, 80,165,221,151,115,249,143,148, 35,222,234,207, 13, 29, 58, 20, 63, 28,191,140, 61,199, 30,109,216,125,148, 30,123,149, 59, - 44, 53,138, 12,111,201, 33,178, 67, 96, 61,247,142,205, 26, 41, 56, 94,133,248,187,177,200, 44, 40,194,169, 59, 79,179, 25,202, -212, 56,182, 78,113, 5, 41, 69, 92,220,131, 23,206,101,103, 43, 74, 26,116,211,150,149, 98, 24,230, 57,107, 86,109, 44, 89,134, -233,116,118,118,126,110, 57, 23,195,134,187,116, 12, 80, 13, 66, 59,204,136,139,139,179,138,139,139, 3,165, 20, 87,175, 94,181, -106,221,186,245,140,218, 88,179,166, 78,157, 90,102,181, 42,191,175,232,187,234, 80, 50, 40,125,181,131,131,195,254,105,211,166, -141,111,221,186,117,143,121,243,230, 17, 0,108, 13, 31, 64,189, 32, 8, 56,123,246, 44, 14, 29, 58,196,107,181,218,177,137,137, -137,134, 99, 29,190,114,115,115, 59, 21, 26, 26,186,253,254,253,251,108, 84, 84, 20,140, 17,116, 42,149, 10,190,190,190,208,235, -245, 88, 58,222, 19,121,121,141,161,215,235,193,243, 60,204,205,205,159, 91,231,210,152,114, 98, 24, 6, 60,207,191, 32,180,174, - 94,189, 10,150,101,209,161, 67, 7,220,188,121,179,204,162, 85,157, 5, 74,171,213,198, 57, 59, 59, 59, 47, 92,184,176, 44, 93, -105,105,105, 56,121,242, 36,218,180,109,135,192,177,227,144,152,152,136, 85,171, 86,193,205,205, 13,139, 22, 45, 66,102,102, 38, -244,122,253, 95,109, 78,239, 21, 21, 21,229,241,214, 91,111,165, 70, 68, 68,120, 28, 63,126,220,166,119,239,222,230,195,134, 13, - 75,141,136,136,240, 32,132,180,131,137,131,160,121,158,159, 73, 8,249,121,209,162, 69, 51, 62,252,240,195,214, 35, 71,142,148, - 72, 36, 18, 33, 33, 33, 65,191,123,247,110,226,235,235,203, 72,165, 82,114,226,196, 9,225,218,181,107, 87,244,122,253, 82, 74, -233, 5, 83, 44,206,134, 34,139,101, 89,163, 68, 86,121, 76,118,146,143,176,100,210, 58,172, 93,191,152,241,247,241,208,238,216, -125,242,217,133,223, 30, 60,100,213,250,201,223, 2, 15,241, 31, 4,203,178,251, 2, 2, 2, 70, 77,156, 56,209,172,103,207,158, -242,249,243,231,231,228,229,229, 85, 40,178, 42,121, 47,255,244, 89,135, 0,190,153,249,241,241,201, 31, 53, 30, 85,239, 61,151, - 58, 56, 93,144,138, 44,142,101,172,108, 24, 52,243,102,145,151, 30,227,120,236,151,109,143, 81, 77, 92, 54, 74,233,117, 66, 72, -183, 70,141,155, 30, 92,186,104,169,211,156,233,211, 36, 7,143,255, 4,170,215,226,234,185,115,176,144,242,244,238,141,211, 41, -106,173,166,223,171,184, 4, 79,226,197,175,246, 16, 66,142,216,217,217,253,241,238,200,145,190, 1, 1,195,160, 84, 42,113,224, -192, 1,236,252,234, 43,126, 53, 48,120, 19, 33, 55,199, 21,199,212,171, 20, 41,191,149,241,220, 26,243,238,187,126,205,154,189, - 7,165, 82,137,253,251,247, 99,251,234,213, 70,243,252,203,173, 89,165,145,225,195, 75,246, 70,196,209, 98, 72,222,149, 7, 79, -243,175, 62,120,154, 15,129, 82,129, 82, 53,195,224, 89,129, 86,187, 40,250, 97,252,137, 26, 38, 4,130, 32,224,243, 47, 38,190, -204,204,149,137,159,154, 78,233,174,160,145,136, 55, 92, 35,173,186, 5,165, 1, 64,167,211,197, 27, 73,191,196,203,235,133, 53, - 80,151,212, 52,173,165,238, 64, 99, 69,150,177,113,180, 0, 32, 61, 61, 61, 9,192, 28, 87, 87,215, 93, 61,122,244, 24, 3, 32, -161,134,101,180,185, 83,167, 78, 99, 1,176,132,144,141, 9, 9, 9, 47, 12, 40, 77, 76, 76,140,118,119,119, 95,238,227,227, 83, -182,208,116, 85,156,130, 32, 60,106,220,184,177,182,162,178,168,236, 88, 16,132,106,203, 40, 59, 59, 27,173, 90,181,122, 97, 77, - 75, 74, 41,158, 62,125, 90,106,113, 42,187,247, 85, 9,184,252,252,252,113, 31,124,240,193, 38,137, 68,226, 5,128,148,138, 92, -158,231,217,175,191,254, 90,193,243, 60, 11,128, 48, 12,163,151, 72, 36, 69,135, 14, 29,210,235,245,250, 56,181, 90, 61,238, 47, -174, 35,246,147,226,165, 24, 10,162,162,162,252, 75, 44, 89,241,145,145,145,183,246,236,217,227, 8, 96,111, 13,159,205, 11, 0, - 46, 16, 66, 58,174, 95,191,126,230,184,113,227, 90, 13, 29, 58,148,235,220,185, 51,194,195,195,249,179,103,207, 94, 85,169, 84, - 75, 76, 17, 88, 37,101,153,227,233,233, 89, 38,184,170,121,151,171, 28,200,107,239, 45, 95, 59,252,125, 55,197,230, 37, 39,243, -211, 19, 53,151,117,249,154, 89,219,128, 72,252,135,145,156,156,252, 49, 33,100,238,170, 85,171, 18,155, 52,105, 34,151, 74,165, - 26, 99, 69,214, 95,104, 61,208, 19, 66,222,252,178,251,192, 35,157,102,127,224,211,189, 75, 7,165,103, 29, 39,247,187,177, 41, -136,249, 45,188,224,143, 99, 95, 60,161,234,172,190,148, 82,189, 17, 92,215, 8, 33, 13,166, 78,155, 90,186,168,116,112,215, 83, -135,233,127,104, 81,233,207,151, 47, 95,238, 27, 16, 16,128, 3, 7, 14,224,212,247,223, 99, 72,122, 58,206,176, 44,203, 72,165, -246,199,180,218, 21, 48, 46,112,241,231, 43, 87,174,244, 11, 10, 10,194,190,125,251,112, 98,251,118, 12,174, 25, 79,101,104, 9, -192,177,180,121, 2,112, 31, 64,115, 0,102, 0,212, 40, 94,218,201,193,224,247, 25, 37,231, 74,207,159, 7,240,103, 14,132,173, - 62, 50,124,121, 68, 60,120,220,252,101,167, 66,165, 82,101,250,250,250,154, 52,231, 90,167,211, 85,233,195,213,235,245,241,245, -234,213, 51,218,106, 97,140, 40,202,200,200,104,241, 39, 86, 16,181, 26,139,245, 92, 35, 34, 8, 79, 92, 93, 93,133,210, 70,191, - 34, 17, 86,209,119, 20,120,108,202,255, 36, 37, 37,221, 7,240, 81, 77,211,153,144,144,112, 16, 70, 44, 26,109,236,239, 0, 32, - 51, 51,243,165, 47,230, 75, 40, 77,152, 63,127,190, 73, 2, 27,148, 38, 84, 81,214, 17, 0, 90,255,211,107,217,210,165,119, 8, - 33, 76,100,100,228,152, 18,247,246,105, 0, 27, 75, 34,122,215,150,191, 76,112,109,222,188,121, 50,165, 20,185,185,185,171, 77, - 21, 88,101,189,231,148,148,240,151,149,247,204, 20,205,175,187, 55,198,191,174,202,214, 78,222,146,175,217, 14, 17,165,101, 86, -228,228,228,244,221,219,111,191,221, 6,192,182,218,242, 85,228, 78,124, 9,105,124, 76, 8,105,114,102,234,103,239,158,177,177, - 12, 1,207,249, 67,195, 28,131, 38, 35, 28,192,183,198, 88,197, 13,243,139,226, 48, 37, 43,255, 75,229, 92, 18,255,106,242,168, - 81,163, 48,119,238, 92,156, 88,177, 66,251, 62, 33, 57, 18,128,254, 92,220,209,100, 8, 48,221, 88,158, 17, 35, 70, 96,238,220, -185,248,113,233,210, 26,241, 84, 3, 71, 66,200,113, 0,152, 49, 99,198,172,197,139, 23,219,206,156, 57, 51,120,201,146, 37,139, - 74,142,239,148,158, 47, 41,211,222, 51,103,206,108,100,112, 62, 15,192,245, 63,249,126, 86, 24, 25,254,185, 30,251,203,222, 0, -116, 19, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,172,229, 22, 82, 44, 89, 42,223, 87,246,217,224, 59,252, 29, 27, 39, -246,221, 68,136, 16, 33, 66,132, 8, 17,255, 82,171,220,241,218,156,127,137,233, 40, 29,163,101,104, 41,221, 12, 20, 79,119,239, - 86,137, 41,213,148,192,145,221,106, 96,246, 61, 45,114,138,156, 34,167,200, 41,114,138,156, 34,231,127,139,179, 58,238, 74,174, - 15, 33,132, 28,167,148,246,174,108, 95, 42,172,202,127, 54,248,238,165, 13, 59,168, 32, 47, 99, 43, 27,163, 37,186, 14, 69, 78, -145, 83,228, 20, 57, 69, 78,145, 83,228,252, 87,184, 14, 1,208, 25, 51,102,204,252,167,185, 14, 1,184, 2, 24,107,184, 25,225, - 58, 60,192, 38, 36,192, 74, 38, 83, 74, 1, 64,163, 41,212,186,187, 35, 23, 24,248,183, 45,120, 43,226, 95,107,218,117, 46, 17, -245, 41, 47,243,183, 34, 68,136, 16, 33,226, 63,131,180, 82, 75, 21,128, 52, 0,164,228, 88, 83,178, 79, 43,105, 59,202,127,126, -238,252,159, 5, 74,105, 18,128, 10,103,203,115,149,137,172,244,116,165, 3,199,101,249,241,124, 81, 67, 0,224, 56,230, 94,122, -186,109,180,131,195,129,244,154,136, 45, 71,103,231, 27, 18,150,117, 55,230,183, 58,158, 79, 72, 79, 73,121, 46,116, 60, 5,254, -245, 2,207, 88, 17, 81, 27,177,241, 87, 8, 21, 71, 71, 71,103,103,103,231,255, 89, 89, 89,181,205,206,206,190,150,150,150,246, - 67,101,235, 30, 18, 66, 22, 19,130,105, 37,159,151, 81, 74,103, 86,145,118,163,127, 91,193,181,190, 74,165,114, 60, 33, 36,168, - 36,255,145,133,133,133,235, 41,165, 15,254,131,194,214, 12, 64, 63,142,227, 70, 56, 56, 56,180, 74, 78, 78,158, 79, 41, 93, 85, - 67, 46, 14,192, 84, 27, 27,155,161, 54, 54, 54,117, 51, 51, 51, 31,230,230,230,238, 3,176,146, 82, 90,237, 84,233, 5,147,220, -218,118,238,217,121,206,217, 19,103, 63,159,183, 38,241,183, 23,206,127,236,102,223,163,123,251,185,103,143, 93, 94, 56,115,109, - 66,166,137,105, 99, 0,148, 6,205, 19, 74,122,173,244, 37,223, 75, 9,128, 62, 0, 58, 3, 56, 11,224,152, 49,249,174,132,171, - 13,128, 89, 37,105, 94, 73, 41, 61,243, 15,127,142,204,157,157,157,151, 2,232,195,113, 92, 84, 66, 66,194, 88, 74,105,252,223, -156, 38, 14,197,211,252,131, 80, 28,134,227,186, 49, 33, 28,140,129,131,131, 67,111,142,227,198,151,132,118, 89,159,158,158,126, -252,159, 90, 54,114,185,124,181,139,139,203,123, 42,149,170,144, 16, 66, 13,227, 61,234,245,250,248,180,180,180, 22,175, 96,213, -118,253, 31,254,190,140,173, 64,124, 85, 30, 71, 43, 33, 1, 86, 28,151,229,151,154, 28, 49, 36, 49,233,246, 96, 0,112,115, 13, -222,231,228,210,120,111, 66,130, 76,219,178,123,168,133, 68,201,173,103, 89, 73,211, 34,141,218, 65,194, 73,210,181,122,221, 45, - 70, 67,199, 39,221, 59, 84, 97,176, 69, 9,203,186, 63,137, 62,227,164,215,102, 66,162,112,131,196,204,171,210, 4,187,185,185, -213, 40,163,118,118,245, 45,181,114,197,100,137,132,237, 46, 80,125, 16, 21, 0,134, 72, 34,245,188,238, 23,169, 90,253,101,102, -102,108, 94, 77,111, 98, 67, 7,226, 66,129,161, 32,232, 14,138, 83, 4,216,115, 47,157, 38,155, 80, 8, 70,137,136, 90,138, 13, -195,107, 87, 81, 74, 63,126,217, 15,147,135,135,135,237,128, 1, 3, 86,127,246,217,103,102, 22, 22, 22, 36, 46, 46,174,231,244, -233,211, 95,243,240,240,248, 40, 62, 62, 62,177,188,232, 35, 4,211, 4,129, 50, 0,192, 48,100,186,179,179,179,146,101,217, 23, - 98, 27,241, 60,175, 36, 4, 19, 5,129,146,146,223, 78, 35,132,172, 49, 70, 48,154,153,153, 13,107,213,186,221, 71, 75,151,175, -180,112,118,114, 50,215,243,130,246,241,211, 39,202, 57, 51, 62,110,109,102,102,182, 70,165, 82,237,174,193, 75, 67, 88,150, 29, - 34,151,203,123, 3, 8, 40,249,250,174, 90,173, 62,206,243,252, 94, 99, 27,116, 23, 23,151,243, 44,203,214, 49,229,191,121,158, -143, 75, 78, 78,238, 80,195,151,125,144,151,151,215,183,157, 58,117, 82,182,106,213, 10, 50,153, 12,115,231,206,157, 10, 96,149, - 49,130, 74,169, 84, 14, 49, 55, 55,175,151,159,159, 31,171, 82,169, 14,202,100,178,110,107,214,172,241,108,223,190,189,101, 74, - 74, 10, 97, 89,214,249,248,241,227,239,124,245,213, 87, 61, 9, 33, 93,171,107,228,114, 98,233, 28,121,159,128,142, 57,177,103, -230, 0,232, 85,254,188,190, 72, 49,130,178,158,189, 85,244,230, 51,152, 48,181,158, 16,194, 72, 36,146, 53, 46, 46, 46,163,138, -138,138,138, 80, 28,123,141, 58, 59, 59,151, 53, 56, 0,160,209,104,178,178,178,178,252,107,112, 31,253, 1,140,182,177,177, 25, -245,201, 39,159,216,246,234,213, 11,223,127,255,253,132, 45, 91,182,100, 17, 66,190, 3,240, 13,165,244,190,137,180,211,146,147, -147,223,148, 72, 36,196,211,211,147, 5,112,198,132,244,248, 1,152, 93,210,216,172,167,148,242,132,144, 46, 64,241,251, 14, 96, - 89,169,112, 99, 89,118,189,191,191,255,255,238,222,189,187,129, 82,250,121, 77,223,117, 23, 23,151, 77,235,214,173, 27,220,183, -111, 95, 54, 45, 45,205,189, 73,147, 38,187, 0,116,124, 9, 13,210,187,114,185,124, 74,112,112,112,224,253,251,247,163,115,115, -115, 87,150,220, 79, 90,197, 53, 30, 0,186,217,216,216,116,157, 61,123,182, 69,239,222,189,177,121,243,230, 55,183,108,217,146, - 79, 8,249, 5,192,233,218,138, 64,142,227,198,199,199,199, 59, 80, 74,225,234,234, 58, 30,213, 44,110,254,119,129,101,217, 53, - 67,134, 12, 25,181,107,215, 46,229,147, 39, 79,148,238,238,238,101,193,179, 9, 33, 53,110, 63, 69,212,218,162,181,185, 84,112, - 25, 21, 71, 75, 38, 83, 74,121,190,168, 97, 98,210,237,193,175,117,250,218, 26, 0,206,159,251, 96,176,147, 75,163, 72,153, 76, - 25, 45,183, 82, 28, 10,237,211,173,233,192,222,157,136,135,171, 19,226,147, 82,157,191,217,115,226,141,227, 39,206, 28, 66,113, - 0,177, 10,161,215,102,194, 76,123, 26,247, 47,126, 5,135,206,137, 88,251, 99, 60,126,251,227, 49, 10,115,210, 81,199,197, 12, -203, 39,247,128,139,173,178, 70,153,180,112,246,235,194, 40,148,123,223, 26,246,182,245,255,250, 5, 72,188, 93, 92, 64,169, 28, -209,177,249,237,126, 58,121,166,229,193,253,187,199, 91, 56,251, 13,201, 79,137, 54,186,114,107,238, 70,204, 10,180,232,199,177, -228,157,142,173, 27,117, 29,246,102, 71, 38, 48,160, 1,162,238,220,237,113,228,215,171,203, 3,157,153, 95,244, 60,221, 97, 46, -197,225, 27,137,149, 7,244,171, 72,112,116,239,222,189,163, 92, 46,215, 26,254, 78,173, 86, 75, 9, 65,155,154,136,141,210,255, -208,104,212,140, 68, 34, 3,195,144,143,130,131,131, 3,210,211,211,207, 16, 66,190, 77, 72, 48,205, 90,240, 33, 33,178, 44,142, -107,206,200,229,174,188, 70, 99, 15, 0, 68, 38,203,242,176,181,109, 60,123,214, 44, 11,150,101,133,140,140, 12, 20, 22, 22,146, - 49, 99,198, 40, 98, 99, 99, 67, 1,124, 85, 77, 26,177,101,203, 22, 63, 87, 87, 87, 77,249,115, 73, 73, 73,178,190,125,255, 87, -147, 74,219,175, 77,219,246, 83, 78,156,248, 57, 32, 55, 51,171,104,203,170, 77, 55,116, 10,165,186,110,128,191,100,253,230,237, -214, 99, 71, 13,255,128, 16,114,139, 82, 26,109, 2,167,151,153,153,217,161, 21, 43, 86, 4,117,233,210, 69,226,228,228,132,148, -148, 20,220,189,123, 55,232,215, 95,127,237,183,125,251,246,169,132,144, 80, 74,169, 49, 17,220,125,127,217,241,173,147,185,157, - 61,120,157, 14,110,193,205,202,226,155,197,252,122, 18,122,173, 22,130, 78,135,128,222,253,138,205, 50,130,128,192,192,192, 26, - 69,221, 37,132,184, 53,106,212,104,231,162, 69,139,164,106,181, 26, 87,175, 94,197,153, 51,103,132,164,164,164, 37,213,137, 44, - 66,200,201,121,243,230,121,116,232,208,193, 50, 61, 61, 29, 60,207, 59, 28, 62,124,120,124,179,102,205,172, 60, 61, 61,101, 59, -118,236, 64,126,126, 62,244,122,189, 93,189,122,245,236,134, 13, 27,166,217,177, 99,199, 84, 0, 75, 43,179,100,229,198,210, 57, -201,164,222, 27,254,205, 71, 32,153,252,252,198, 71,189, 92,127,178,170, 79,202, 44, 91,189,234,215,183,172,215,208,124,186,133, - 85, 99,187,220,132,211,211,123,213,175,191,229,167,216,234, 59, 67,132, 16,134, 97,152, 53,161,161,161,111,237,217,179, 71,121, -247,238, 93,101, 64, 64, 0, 4, 65, 40,139,192, 95, 26,112,214,215,215,183, 38,247,113, 73, 88, 88,216,244,193,131, 7, 35, 56, - 56,184, 44, 40,234,167,159,126,138,233,211,167,219,158, 63,127,126,234,238,221,187,167, 18, 66,150, 82, 74,103,152,210,150, 27, -182,151, 38, 38,107,193,163, 71,143, 6, 29, 58,116,104,248,180,105,211,124, 1, 76, 4, 48, 55, 35, 35,163, 19, 0,216,219,219, -203, 0,156, 33,132,188,251,201, 39,159,188, 63, 99,198, 12,188,249,230,155,115, 9, 33, 95,212,196,202, 71, 8, 97, 29, 28, 28, -222,236,219,183, 47,171,211,233, 96,110,110, 14,157, 78, 87,191,150, 2,139, 0, 88, 55,110,220,184,247,195,194,194, 96,107,107, - 11,157, 78,231,183,103,207,158, 45,115,231,206,109, 75, 8, 25, 93, 81, 90, 9, 33, 35,222,127,255,253, 1,111,191,253, 54, 90, -180,104, 1,142, 43,190,141, 43, 86,172,192,194,133, 11, 45, 78,158, 60,217,111,199,142, 29,253, 8, 33, 7, 41,165, 53,142,133, - 38, 8, 2, 56,142,195,179,103,207,224,228,228, 36,183,179,179, 59, 65, 8,217,156,145,145,241,195, 63,200,106,178,108,200,144, - 33,111,237,218,181,203, 2, 0,150, 47, 95,142, 41, 83,166,192,217,217, 25, 22, 22, 22,162,218,249,135, 88,180,202,199,209,170, - 81,120,135,194,194,194,102, 51, 63,124, 7, 12, 83,220,107,108, 80,215, 11,139,103,141, 37, 71,142,159,104, 86,213,117, 18,133, - 27,238, 95,252, 10,114,207,201, 80,235,244,184,242,199, 35,156, 90,222, 19, 0,224,215,107, 54,212,218,174,165,202,208, 78,102, -102,182, 76,195,243,151,224,226,114, 21, 79,159,166, 85, 39,178, 28, 93,156,143,111,220,184,212, 44,168,190, 63,180,122, 29, 18, - 82, 19, 64,136, 28, 30,238,150,120,119, 68, 47, 73,167, 78,110, 14, 11, 22,108, 10, 55,119,244,235, 95,144, 22, 93,109,192, 80, -127, 71,178,173, 99, 51,223,193,195, 66, 58,200, 27, 7, 53,130, 84,110,246,255, 2,172, 69, 11, 52,111,209,130,153,145,159,215, -253,218,245, 27,221, 15,156,188,162,246,119, 36,251,238,167,209,145, 85,149,131,161,224,152, 52,105, 18, 74,123,223,165, 72, 73, - 73,193,175,191,254, 82,225, 53,198,150,181,225,127,124,241,197, 23,150, 89, 89, 89,189,182,110,221,250,186,171,171,235, 23, 73, - 73, 73, 23,141, 33,121,135,144, 58,144,203,187,142, 90,185, 82,104,250,191,255,177, 54, 46, 46,140,192,243, 36,241,225, 67,251, - 85, 95,125,213, 57, 51, 38,198,172,192,206, 46, 51, 75,165, 42,140,142,142,134, 66,161, 32, 28,199,181,172, 64,225,167, 16, 66, -150, 49, 12,153, 78, 8,129, 92,174,136, 14, 11, 11,187, 89,114,186,206,177, 99,199,148,125,250,244, 41, 4,240,164,216, 28,174, -112,103, 89,198,175,120, 0, 33,150, 25, 35, 48,205,205,205, 63,252,124,209, 82,243,220,204,108,149,182,160, 64,231,104,101, 65, -136,133, 37,155, 75, 45, 88,132, 0, 0, 32, 0, 73, 68, 65, 84,155,147,151,151,144,148,166,158, 61,127, 33, 59,238,221,183, 63, - 4, 48,222, 88,145,213,164, 73,147,107,135, 14, 29,114,178,183,183, 71,118,118, 54, 50, 50, 50,112,237,218, 53, 8,130,128,208, -208, 80,121,187,214,173,154,205,154, 61,231, 55, 66, 72, 91, 99,196,150,185,157, 3,150,119,104, 90,220, 88, 63,201, 40, 43,159, -205,131,122,151,253,102, 97,124, 14, 0, 64,161, 80,212,102, 9,169,182, 93,187,118,149, 2,192,232,209,163,115,243,242,242, 22, - 3,216, 69,171, 8,170, 90,130,169,115,230,204,113,175, 91,183,174,247,174, 93,187,144,159,159, 15, 0, 78,117,235,214,133,191, -191, 63,127,246,236, 89,248,249,249,193,210,210, 18,231,207,159,199,149, 43, 87,208,188,121,115, 75,169, 84, 58,184, 50,161,213, -185,103,231, 57,242, 62, 1, 29,253,155,143,128,133,149, 43,182,236,222,139,251, 55,182,119, 84,107,239,206, 89, 60,209,253,109, - 21,149,143,244,240,181,156, 81,167, 69, 39,251, 6,141,254, 7,239,230, 55, 29,138,248, 11,143,230, 78,168,183,132, 83, 20,109, -159,183, 34, 49,163, 50,145, 5, 96,121,104,104,232,160, 61,123,246,216, 0, 64, 68, 68, 4, 82, 82, 82,224,232,232, 8,133, 66, - 1,137, 68, 82,182, 62,105, 13, 49,114,253,250,245,101,162, 77,175,215,151,173, 2,160, 84, 42,241,218,107,175,161,105,211,166, -248,225,135, 31, 70, 2,152, 81, 65, 26, 59,180,110,221,250,123,111,111,111, 79,195,239, 67, 66, 66, 48,116,232, 80, 0, 64,167, - 78,157,186, 14, 28, 56,144,150, 10,194,164,164,164,252,235,215,175,119,167,148, 94,173, 40, 65, 12,195,168, 18, 18, 18,240,201, - 39,159,224,241,227,199, 19, 8, 33, 79, 1, 40,100, 50, 89, 89,255,152, 16,226,215,168, 81,163, 53, 83,166, 76, 65,108,108, 44, -162,162,162,174,213,212,149, 74, 41,229,125,124,124, 98,116, 58, 93, 11,189, 94, 15,149, 74,133,254,253,251, 43,236,236,236, 82, - 88,150,189,151,158,158, 62,188,100, 76,138,177,141,144, 2,192,202,176,176,176,247,167, 77,155,134, 95,126,249, 5, 71,142, 28, -193,219,111,191,141,201,147, 39,195,194,194, 98,212,228,201,147,127, 67,241,130,230,229,209,117,253,250,245,224,121,254,133,119, - 67,161, 80,160, 67,135, 14, 8, 12, 12,196,145, 35, 71,186,194, 96,125, 84, 19, 27, 73,239,208,208, 80,153, 32, 8, 40, 40, 40, -192,217,179,103, 45,204,204,204, 44, 60, 60, 60,198, 0,248,199, 8, 45,111,111,239,176, 61,123,246, 88, 24,122,127,228,114, 57, - 12,158, 3, 17,127,179, 69,171,186, 30, 86, 25, 52,154, 66, 45,199, 49,247,220, 92,131,247,157, 63,247, 65,153,235, 16, 96,238, -105, 52,133, 90, 0,224, 5,138,220, 66, 61,204,228, 12,158, 36,231,225,206,195,244,138,254,248,185, 41,154, 18, 51, 47,200, 91, - 61, 1,165, 20, 26, 45, 15,117, 78, 50, 22,135, 23,226,110,124, 17, 52, 5, 89,208,104,139,135, 97, 57, 56, 56,112, 39, 78,252, - 52,229,244,233, 95,223,255,238,187,239,216,120,107,235, 40,228,228, 52,171,136,211,206,174,190, 37,103,110,182,111,195,198,185, -102,148,125,136,232,184, 2, 52,240,104, 5, 7, 27, 79, 36,167, 23,224, 82,212,143,184,247,224, 56,234,186,122, 99,242,135,111, - 40, 62, 95,180,107,175,173,109, 93,175,172,172, 71,185,149,165,179, 4, 35, 54,253, 28, 13,125,230, 67,240, 25,177,224,243, 18, - 95, 20,120,142, 94,104,222,197, 29,142,158,245,229, 35, 39, 47, 28, 1, 96,100, 69,156,148,210, 20,150,101, 55, 48, 12,121,159, - 16,130,224,224, 38,241, 43, 87,174,212, 86,240,159,218,224,224, 38,241, 44,203,120, 20, 87,236,204,122, 65,224, 83,170, 73,231, -115,162, 70, 38,147, 79, 43, 54,251,187, 62, 11, 15, 15,215, 14, 26, 52, 8, 43, 86,172,144, 77,159, 62,125,182,135,135,199,232, -242,238,189,242,156,161,132,120,185,215,175,223,227,139, 75,151,168, 68,167, 35,153,215,174,229,102, 39, 37,233,147,243,242,100, -251,239,221,123,243,189,143, 63,150,121,122,122,226,226,241,227,246,105, 5, 5, 52, 91,173, 86,101,103,103, 83,189, 94,127,173, -146,188,207,116,118,118, 86,110,217,178,197, 47, 44, 44,236,102, 98, 98,226,204,146, 10, 98, 49,128, 64, 0, 79, 12,190,195,198, -141,123, 19,198,140, 25, 19,157,146,146, 50,179,170,116, 26,160,145,147,163,147,114,247,166, 29,183,237, 44,205, 24, 71, 15, 55, - 70, 98, 99,195,233,101,102, 82, 1, 80,213,245,172,111, 14,160, 81, 37,247,236,116,249, 30,183,153,153,217,161,163, 71,143, 58, - 73, 36, 18,240, 60, 15, 71, 71, 71, 60,126,252, 24,217,217,217,200,203,203,195,163,123,119,225,227,233,137, 5, 51,166,187, 78, -156, 62,227, 16, 33,164,133, 97, 99, 86,225, 2,200, 58,237, 11,150,189, 74, 22, 34,127,110,111, 76,185,151,195,227,184,184, 56, - 88, 88, 88, 32, 40, 40,200,226,210,165, 75, 23, 42, 19, 89,229, 22, 1, 30,220,190,125,123,203,221,187,119,163,121,243,230,176, -182,182,198,217,179,103, 17, 17, 17, 1,173, 86,203,228,231,231,195,210,210, 18, 75,150, 44,129,183,183, 55,114,115,115, 17, 23, - 23,103, 47,145, 72, 28, 42,227, 60,123,226,236,231, 57,177,103,230, 36,147,159,223,216,178,123, 47,198, 12, 27, 2, 23,250,240, -130,117,125,242,121,143, 62,237, 63,165,172,103,111,115,203, 96, 91,223,160, 62,144,202, 44, 48,113,218, 66, 68, 71, 30,179, 45, -204,187, 61,129,240,207, 60, 1, 76, 42,207, 89, 98, 17, 97, 60, 61, 61,223,219,191,127,191,165,129, 43,165,108,205, 67,195, 69, -224, 43, 91,240,221,152,251, 73, 8,193,227,199,143,225,228,228, 4, 11, 11,139,178, 5,196,239,222,189,139, 43, 87,174,160,116, - 53,138, 74, 56,135,159, 62,125,218,211,220,220,188,252,111,144,158,158, 14,189, 94, 15,165, 82, 9,158,231,161,213,106,161,211, -233, 80, 84, 84,100, 17, 24, 24, 56, 30,192,213,138, 56, 5, 65,248,104,240,224,193,237,175, 94,189, 90,239,171,175,190,130, 70, -163, 89,158,156,156,140, 1, 3, 6, 64, 16, 4,116,237,218,181, 13,165,244,254,236,217,179, 1, 0, 83,166, 76,209, 21, 20, 20, -132,213, 36,239, 37,249, 15, 28, 56,112, 96,189, 95,126,249, 5, 29, 59,118,132, 90,173,198,138, 21, 43,172, 54,110,220,104,181, - 99,199, 14,199,105,211,166,125, 11,160,103, 85,156, 37,229,181,220,197,197,229,253, 97,195,134,153,149,172, 97,138,237,219,183, - 99,193,130, 5,123, 0,204,254,233,167,159,230, 29, 57,114,100,196,123,239,189,135, 5, 11, 22, 76, 46, 21, 90, 21,113, 62,122, -244, 8,142,142,142,176,178,178, 42,174, 44,181, 90,220,186,117, 11,167, 78,157, 66,195,134, 13,141,105, 8, 79, 87, 33,178,190, -221,189,123,183,229,179,103,207,112,254,252,121,248,248,248,160,176,176,176,218,181, 97, 95,246,226,207,213,113,170, 84,170,162, -184,184, 56,139,165, 75,151,194,213,213, 21,222,222,222, 80, 40, 20, 32,132, 64,167,211, 85,186,188,154, 49,233,236,220,153,112, -233, 9,182,125,173,109,108, 39, 80, 74,185,156,156,172, 77, 90,100, 31,136,141,165,154,191, 42,239,255,114,139, 86, 51, 74,233, - 77,195, 53, 15, 75, 59, 35, 28, 0,132,135,135,211,144,144, 16, 82,186,119,119, 71,110,122,186,109,180,147, 75,227,189, 78, 46, -141, 74,214,253, 98,238,177,172,109,180,179,115, 97, 46, 0,104,245, 20,151,239,101,227,118, 76, 50, 34, 98,146, 97, 46, 55,206, -248,162,214,234,139,231,103, 82,138,162,252,255,239,180,106, 11,179,160,214, 22, 15,247,208,168, 11,145,147, 22, 69, 6,245,239, -174,120,255,253,113,112,117,117,119,172,140, 79, 43, 87, 76,158, 56,229, 77, 27, 59, 27, 9,142, 95,250, 25,109, 26,246,135, 66, - 46, 65, 70, 78, 17, 64,128, 7, 15, 79, 1,130, 37, 34,163,227,208,186,145, 18, 61,123, 4, 88,252,112,224,254,199, 0,230, 26, -147, 94,125,252, 53, 72,125,123, 65,194,235,160, 75,191, 15, 33,251, 41, 96,238, 2, 21,177, 64, 70,210, 83,220,187,112,176,120, -194,105, 53,224,121,126,130,163,163, 99,246,236,217,179, 59, 55,104,208, 64, 59,126,252,248, 63,158, 60,121,242,220,178, 54,117, -234,212,249,114,253,250,245,136,137,137, 73,248,226,139, 47,206,166,165,165,205, 49,241, 5,157, 65, 8, 89, 93,226,138, 75, 63, -124,248,112,243,115,231,206, 77, 94,189,122,245,255,177,119,221, 97, 81, 29,237,247,204,118, 88, 22,144, 94, 69,177,128,189,151, -168, 40, 98, 52, 22, 44,177,183,196,222,177,119,141,177,196,150,168,177,119, 99,193,110,108,193, 94, 80, 44,104, 84,148,162,136, - 40, 69,170,212,165,109,223,187,119,126,127, 80, 62, 68,202,130,250,149,252,246, 60,207, 62,112,119,239,158,157, 59, 51,119,230, -220,247,157,121, 95,187,233,211,167, 11,167, 79,159, 62, 22,192, 47,229,185, 11, 77, 68,162,174,107,238,221,163, 76, 66,130,234, -232,246,237,194,157,129,129, 75, 53, 44,235,104,109,107, 75,218,183,109, 43, 19,115, 56,233, 25, 41, 41,140, 77,237,218,220,152, -155, 55,173,168,177,113,210,213,171, 87,115,242,242,242,202, 76,157,195,229,114,229,165,185, 11, 75,131,131,131,131,186,180, 53, - 92,229,116,238, 28,150, 82, 77,181, 90,181,232,119,223,182,171,251, 54, 34, 42,202,168, 90, 53,174, 91, 93,215,122, 47, 95,199, - 60,161, 58,157,146, 16,146,163, 15, 23,151,203, 29,186,101,203,150, 38,102,102,102, 96, 89, 22,230,230,230, 72, 75, 75,131, 90, -173, 70, 78, 78, 14,212,185,217, 80,103,103, 35,244,125, 12, 58,116,238,140,193, 61,190,107,224,123,225,175,161, 0, 78,150,199, -235,216,180, 69,145, 37,107, 85, 77,171,127,249,130,226,179,138, 68,215,175, 45,220, 32,144, 72,208,109,206,162,207, 25,160,159, - 11,133,194, 43, 3, 6, 12,232, 53,111,222, 60, 78,114,114,242, 53, 66, 72, 7, 74,233,171,114, 45,194, 18, 73,157,244,244,116, -228,230,230,194,220,220, 28, 91,182,108,129,157,157, 29,228,114, 57,158, 62,125, 74,157,157,157,201,157, 59,119,224,236,236,140, -244,244,116,104, 52, 26,200,100,178, 15,106,181,186, 76,119,121,129,123,176,231,156,158, 14, 87, 35,130,142,116,116, 34,209, 79, -135,204,245,124, 27, 17,250, 58,238,198,205,135,191, 48, 74,163,248,172,132, 91, 11,107,181,126,110, 61,109,254, 74,236,216,176, - 28, 17,127,223,203,180,115,201,217,105, 76, 84,135,219,118, 43,187,188, 50,153, 76,249,250,245,107,211,224,224, 96, 16, 66, 96, -110,110, 14,177, 88, 92,170,216,170,194, 96,201, 41,246, 59,144,201,100, 16, 8, 4,176,178,178,194,129, 3, 7,138, 38, 94, 87, - 87,215,242,104,246,118,235,214,109,168,139,139,139,105,241, 55, 91,183,110,141, 73,147, 38, 97,247,238,221, 8, 12, 12,252, 40, -159,230,135, 15, 31,146,181, 90,237,225,114,218, 54,139, 16,210,163,127,255,254, 65,247,239,223, 55, 59,112,224, 0, 24,134, 41, -245,181,127,255,126, 60,126,252,120, 25,165,244,117, 21, 39,140,250, 3, 7, 14,188,119,236,216,177,106,105,105,105, 72, 79, 79, - 71, 94, 94, 30,100, 50, 25,116, 58, 29,234,213,171, 71, 24,134,169, 87, 81, 61,114,185,220, 11,219,183,111,239, 51, 97,194, 4, -240,120, 60,168,213,106,108,223,190, 29, 11, 23, 46, 76, 1, 48,154, 82,170, 33,132, 44, 61,124,248,240,168,190,125,251,162, 89, -179,102, 13,202,227,204,203,203, 67, 94, 94, 30,248,124, 62,236,237,237,177,122,245,106,168,213,249,195,138,187,187,123,145,203, - 19,192, 94,119,119,247, 62,111,222,188,217, 72, 41,253,173,140,113,166, 63,165,116,162, 78,167,203, 29, 48, 96,128,213,137, 19, - 39, 76, 19, 19, 19, 17, 20, 20,132,101,203,150, 73, 89,150,213,177, 44, 75, 20, 10, 69,180,157,157, 93,144, 72, 36, 50,150,203, -229,153, 25, 25, 25,107, 41,165,215,254,131,147, 57,225,243,249, 24, 55,110, 28,120, 60, 30,140,141,141,161, 84, 42,161,213,106, -139,196, 60, 42,233,150,118,115, 51,181,226, 65, 48,193,221,189,211,172,193, 51,123,219, 56, 56, 58,161,154,153, 8,225,225,175, - 58,248,223,190,185,189, 97, 61,155, 61,172, 90,187,231,117, 76,214, 87, 79,118, 95, 82,139,252,143,105,173, 22, 0,158,163, 88, -206, 67, 20,236, 66, 44, 99, 36, 26,164,179,182,254, 51, 61, 49, 81,168, 17, 10,197,111, 10,173, 92,249, 34,107,144, 14, 56, 1, - 70,163, 45, 24, 40,104,193, 75, 79,161,165,213,225,109, 68, 24,238,223,248, 11,214,242, 68,164, 71, 55, 7, 4, 77,160, 86,100, - 67,169,214, 20, 60,189,233, 16, 28,116, 27, 57,217,153,104,220,170, 55,192,225, 60, 46,139,207,220,138,244,110,223,178, 41,247, -109, 92, 24, 90,187, 15, 66,109,231,142,120,159,156,131,172, 60, 21,164, 57, 74, 52,111,188, 8,105, 82, 5,114,228, 74,188,122, -235, 11, 39,199,218, 28,194,139,250, 86, 95,161,165,122,117, 14,170,215, 23, 33,168,209, 1,194,122,125,193,173,225,129,184,144, - 59, 8,190,186, 25, 9, 47, 31,128,178, 58, 56,184,183,209,247, 38,217,126,237,218,181, 54, 29, 58,116,224,117,237,218,181,153, -163,163, 99,179,164,164,164,224, 2,107, 78,179, 94,189,122, 53,179,177,177,193,214,173, 91, 21,132,144,237, 85,156,108,139,187, -219,158,216,217,217,173, 57,119,238,220,246, 73,147, 38,193,214,214,182, 73,121,223, 77,227,243,155,141, 94,187,150,242,185, 92, -122,114,199, 14,193,202,107,215, 54, 29, 58,124, 88,208,197,203,139, 80, 74,241,226,197, 11,241,175, 59,118,136, 71,244,235, 23, -251, 62, 53,149, 9, 8, 12,212, 36, 39, 36,228,166,202,100, 43,147,146,146, 62,252, 39,122,182, 86,171,125, 20, 29, 19,237,212, -170,109,115,155,231,225,209, 47,187,119,105,223,158,195,225,112, 34,162,222, 7,218,216,152,137,111,222,184,169,209,106,181,143, -244,225, 18,137, 68,189,187,116,233,194,147, 74,165,112,116,116, 68, 90, 90, 26, 18, 19, 19,243, 45, 14,217, 82,104,178,179,161, -205,201,130, 78,150,135,232,167, 79,208,188,118, 45,209,153,252,197,242, 39, 43,104,147, 82, 45, 85,197, 45, 91, 66, 83, 83, 8, - 37, 18,144, 74,186, 13, 9, 33,253,170, 85,171,182, 48, 43, 43,235, 10,165,116,181, 70,163,241, 89,184,112, 97,235,109,219,182, - 89,175, 89,179,198,108,226,196,137,103, 8, 33,205, 41,165,170,114, 38,176,119, 12,195, 88, 3,176,189,125,251, 54,108,109,109, -145,157,157, 93,104,105, 81,203,229,114,163,140,140, 12,168, 84, 42,168,213,106,152,153,153,225,217,179,103, 82,134, 97,254,170, -168,124,102,117,200,106,149, 38,252, 39,171, 6, 38, 73, 26,198,194, 51, 53,147,149, 46,223,152,180, 10,192,166,158,117,234,236, -215,176,247,162, 35,195,252, 44, 98,158,222,205, 76,138,148,213,222,127, 57, 42,183,156,122,164,132, 16,150, 16, 66,221,221,221, -145,150,150, 6, 46,151, 11,177, 88, 12,137, 68,130,197,139, 23, 99,251,246,237,149, 22, 90,132, 16, 35, 19, 19,147,181, 28, 14, -103,168,185,185,185,141, 78,167,195,162, 69,139,208,167, 79, 31, 8,133, 66,104, 52,154, 34,139,102,161,149,170, 60, 75, 7,165, -244, 5, 0,179, 18,191,225,101,109,109,237,175, 82,169, 16, 21, 21,133, 11, 23, 46,116,166,148, 6, 84,242,222,142, 34,132,244, -240,240,240, 56,210,178,101,203, 58,148, 82, 52,105,210, 4,195,134, 13,131,175,175, 47,130,131,131,145,157,157,205,222,188,121, -243, 16,128,141,149,157,192, 11,234,183,222,192,129, 3, 31, 28, 63,126,220, 34, 35, 35, 3, 10,133, 2, 50,153, 12,103,206,156, - 65,135, 14, 29, 96,109,109,141, 99,199,142, 49,148, 82,191,242, 68, 22,135,195, 57,176,103,207,158, 62,227,199,143,199,206,157, - 59,113,242,228, 73,244,237,219, 23, 67,135, 14, 69, 90, 90,154,221,134, 13, 27, 70, 17, 66, 14, 0, 88, 62,108,216, 48,228,229, -229,225,233,211,167,225,122,222,243,200,202,202, 66, 86, 86, 22,140,141,141,139,223, 99, 4,128,239,230,205,155,135,207,154, 53, - 11,181,107,215, 94, 94,176, 41,232,147, 93,162, 44,203, 78, 78, 76, 76,180,224,241,120, 86, 12,195, 32, 62, 62, 30,207,158, 61, -195,180,105,211, 50, 51, 51, 51, 39, 81, 74,223, 19, 66,150,142, 27, 55,110,245,156, 57,115,138,250,210,156, 57,115, 46, 17, 66, -122,252,187,173, 57,245,234, 89, 52, 18,114, 69, 51, 5, 2,190,149, 84, 42, 45, 26, 59,212,106, 53, 84, 42,213, 71,150, 44,129, -128,111,213,166, 69,141,203, 10,121,238,146,151,111,164,101, 38, 72,111, 88,183, 90, 83,177,137,249, 44,239, 30,131, 71,126,215, -227,123, 46,163,213,226,250,117, 63,252,241,199, 46,120,121,184,163,118,221, 38,152, 62, 99,166,185, 74,205, 44,186,121,243,218, -194,246,109,106, 93,203,205,201, 90, 92, 30,231,255,115, 92, 46, 16, 87,151, 75,117, 29,150,174, 32, 7,233,156,156, 32, 45,184, -113,172, 45, 44, 44,118,232,116, 58, 47, 96, 2,248, 18,123,188,122,246, 55, 50,165,124,168, 20, 58,176, 52, 95,108,233, 37, 92, - 84,106,220,187,126, 17, 91, 54,111, 66, 70, 70, 6, 60, 58,117, 70, 30,175, 58, 92,170,187, 64,169,144, 23,220, 52,128, 70,173, -133,141, 93, 13, 60,127, 30,172,205,145,201,202, 28,144, 4, 70,154, 6, 46,118,238, 80,105,218,193, 72, 40, 68,118,174, 26,210, - 2,145,117,236,207, 33, 80,201, 21, 96,212, 26, 48,106, 45,108, 92, 6,162,190, 93, 23,176, 58,191, 70,149,170, 62, 86, 7, 77, -204, 61,104, 98,238,193,184,221, 12,252,181,110,120,137, 1, 80,191,188,187,169,169,169,169,142,142,142,126, 47, 94,188,232, 63, -100,200, 16,220,185,115,103, 34,128, 41, 5,238,155,137, 67,134, 12,193,139, 23, 47,240,242,229, 75,191,212,212,212, 47,146,120, - 85, 40, 20, 42, 84,170,252, 57, 86, 44, 22, 27, 85,112,174, 83,235, 1, 3, 56,217,207,159,231,108,126,248,112,249,254, 3, 7, - 4, 93,191,253,150,104, 25, 6,172, 78,135,186,110,110,228,187,239,190, 51,241, 61,125,218,138,171,213, 62,158,239,227,115,123, -247, 15, 63,228,254,157,151,167,239, 66,243,154, 5, 46, 67, 0,168, 89,206,123,122, 67,165, 82,109,155, 60, 97, 76,215,128,123, - 15,170,187, 84,119, 50,187,126, 51, 32, 88,100, 44,228,212,118,173,195,149,102,103,242, 86, 45, 95, 98,172, 82,169,244, 21,173, - 13,172,173,173,241,225,195, 7,188,125,251, 22, 42,149, 10, 90,173, 22,172, 92, 6,181, 52, 11,234,236, 76, 16,165, 2, 34,157, - 14,202,244, 20,212,172, 93, 11,248,215,142,196, 10, 93, 81,165, 9,173,194,191, 70,102,102, 16,152, 72,192,225,243,245, 78,142, - 78, 8,105,217,166, 77,155,211,103,207,158, 21,140, 29, 59,182, 45, 33,100, 71,193, 4,241,237,178,101,203,158,236,216,177, 67, - 52,105,210,164,122, 27, 55,110, 28, 5, 96,111, 89, 60, 74,165,242,244,229,203,151, 71,212,168, 81,195, 54, 52, 52, 20, 74,165, - 18, 44,203,162,103,207,158, 0, 80,212,103, 34, 34, 34, 20, 74,165, 50, 53, 44, 44, 44,231,253,251,247,106,232,177, 75,112,249, -214,164, 71,115, 6, 59, 15,176,179,119,122,108,100, 92,211,149,230, 61,239, 63,103,176,243,134,223,207, 36, 40,175,190,123,151, -187,108, 90,237,245,178,220,144,105,213,156,243,118, 94,245,139,210,103, 87, 48, 45,220,206,110,101,101, 5, 30,143, 7, 62,159, - 15,129, 64, 0, 66, 8,102,204,152,129,125,251,246,149,235, 58, 44, 41,178, 76, 77, 77, 95,174, 92,185,210,121,210,164, 73, 2, - 35, 35, 35, 72,165, 82, 28, 59,118, 12,227,198,141,195, 31,127,252, 81,234,250,151,138, 92, 74,165, 88, 75,103,253,240,195, 15, - 80,171,213, 24, 54,108, 24,246,239,223, 63, 11, 64, 64,101,251, 59,165,244, 49, 33,196, 45, 56, 56,216, 12, 64,223,161, 67,135, - 30, 30, 56,112, 32, 2, 2, 2,224,231,231,215, 25,192, 27, 0, 10, 0,235, 10,146, 56,175, 43,111, 35, 72, 65, 8,135, 93, 54, - 54, 54,125, 27, 53,106, 20, 60,112,224,192,198,199,143, 31,175,150,154,154, 90,184,249, 1, 49, 49, 49, 56,120,240, 96,242,129, - 3, 7,114,116, 58,157, 21,135,195,185,156,149,149,181,184, 28,119,225,129,205,155, 55,143, 41,112, 7,226,236,217,179,116,211, -166, 77,100,217,178,101,144, 74,165,240,242,242,194,158, 61,123,102,230,229,229, 53,219,180,105,211,132,193,131, 7, 99,213,170, - 85,144,201,100,155, 43,122, 88, 41, 71,124, 17, 0,237, 55,111,222, 92, 99,214,172, 89, 56,123,246, 44, 90,182,108,105, 28, 29, - 29,189, 27,192,248,210,218,143, 82,138,232,232,104,200,229,114, 60,120,240, 0,203,151, 47,151, 22, 19, 89, 51,167, 76,153,178, -122,230,204,153, 88,187,118, 45, 13, 13, 13, 77, 29, 56,112,160,221,190,125,251,184,117,235,214,157,137,252,164,235,255, 22,212, -119,179, 90,223,166,181,231, 66, 7,167,186, 56,118,252, 4, 50, 51, 51,139,234,164,176, 94, 40,165,200,205,205,197,135, 15, 31, - 96,110,102,138, 13, 27, 87,247,154, 58,113, 76,117,228,135,193,248,116,160,171, 99,185,113,208,176,241,115,135,141, 24,131,208, -224, 32,248, 30,222,139,176,208, 23, 69,124,140, 86,131, 55,225,207,240, 38,252, 25,236,236,107,224,187,174,157,201,240,225,195, -123,254, 48, 98,168, 13,128,175, 22, 58,226,127,216,154,245, 73, 28,173,226,107,182,120, 21,153,235, 10, 68,214,203, 83,167, 78, - 89,121,120,120,112, 25,134,193,181,235,215, 49,109,202,143, 24,245,195, 34,104, 96, 1, 70, 45, 0, 43, 48,210,171, 48, 10,133, - 28, 20, 20, 50,153, 12,129,129,129,160, 44, 3,223,125,155, 64, 41, 91, 36,180, 0, 10,181, 70, 3, 39,151,122,216,181,127, 13, - 3, 62,255, 73, 89,124, 57, 25, 92,157,150,161, 72, 76,141, 67, 92,114, 24,204, 77, 93,192,227,187, 32, 35, 75, 14, 30,199, 30, - 90,101, 4,116, 5,102, 85,185, 44, 1, 10,205,231,181,159, 46,251, 83,235, 41,173,196,160,171, 80, 40,142, 30, 61,122,180,215, -239,191,255, 46,244,246,246,118,119,116,116,108, 15, 0,131, 6, 13,114, 55, 51, 51,195,209,163, 71,213, 10,133,226,232, 23,180, -248,116,105,211,166, 13,164, 82, 41, 98, 98, 98,130,203,189, 54,181,218, 74, 98,107,203, 77,189,115, 71,155, 38,149, 86,239,210, -165, 11,209, 50, 12, 56,132, 32, 51, 59, 27,239, 99, 99, 81,173, 90, 53,242, 50, 34, 66,178,125,250,244,243,238,141, 27,243, 10, -119, 36,234, 3, 63, 63, 63, 49,242,215,101,149,251, 94, 37, 59,183,140, 16, 50,198,199,199,231,252,209,163,199,204, 83, 82, 83, -222,136,132, 66, 70, 34, 49,114,252, 97,228, 84, 94, 86, 86,214, 8, 74,105,158,190,124, 82,169, 20,209,209,209, 48, 54, 54,134, -128,207, 7,171,144, 67, 39,203,131, 50, 51, 13, 92,141, 26, 66,157, 14,150, 98, 17,170,219,217,193,197,198, 90, 47,206,183,254, - 55,138, 22,190, 23,119, 23,110,104,211, 0, 66, 19, 9,132,166, 18, 76,189,116,183,224,105, 84, 0, 44,251, 69, 31,145,101,237, -228,228,244,215,241,227,199, 5,105,105,105,120,241,226, 69, 48,165, 52,155, 16, 98, 10,128, 13, 15, 15,191, 21, 22, 22,214,187, - 96,215, 93, 69,187,197, 54,157, 59,119,174,155,135,135, 7,227,234,234,106,146,146,146,226,146,145,145, 65,146,147, 63, 94,235, -124,229,202, 21, 35,133, 66, 33, 99, 89,246, 60,242,227, 64, 85, 24,191,104,206, 96,103,163,192,231,152,225,217,189,102, 19, 51, -235,166,200,100,158, 55,121, 28,156, 60, 99,206, 96,231,109,191,159, 73, 80, 26, 19,213, 97,162,139,175,206, 51, 82, 30,209,179, -189,169,181,181, 53,194,195,195, 17, 24, 24,136,247,239,223, 35, 58, 58,250, 35, 65, 53,113,226, 68,248,250,250,234,101,209, 50, - 49, 49, 89,187, 98,197, 10,231, 89,179,102, 9,138,137, 34,248,248,248, 32, 59, 59, 27,251,247,239,135,143,143, 79,165, 39,254, - 18,109, 85,171, 91,183,110,222, 14, 14, 14,200,200,200,128,189,189, 61, 60, 60, 60,250, 16, 66, 92, 41,165, 49, 85,236,250, 83, -187,119,239,190,122,229,202,149,208,106,181, 24, 55,110, 28, 34, 35, 35, 79, 71, 70, 70,110,113,113,113,153,177, 96,193, 2, 59, - 59, 59, 59, 12, 25, 50,196, 4,192,128,178, 72, 44, 45, 45,215,237,221,187,119,132,183,183, 55, 71,163,209,116,242,247,247, 71, -108,108, 44,212,106, 53, 24,134,193,187,119,239,224,227,227,147,156,145,145,225, 73, 41,125,167, 71,185,198, 46, 93,186,116,204, -140, 25, 51,240,235,175,191, 98,197,138, 21,135,204,205,205, 27, 55,111,222,188,197,138, 21, 43, 48,127,254,124,212,168, 81, 3, - 86, 86, 86,245,151, 45, 91,214, 96,206,156, 57,216,182,109, 27,150, 47, 95,126, 8,192,193,170, 84, 4,203,178,100,253,250,245, -205, 54,111,222,236, 80, 40,178, 56, 28, 14, 78,157, 58,133,231,207,159,247, 41,227, 59,123,236,237,237, 39, 58, 56, 56, 8,111, -222,188, 41,169, 81,163, 6, 24,134,209, 22,136,172,237, 46, 46, 46,211,222,189,123, 7,111,111,111, 68, 69, 69, 29,165,148,142, -242,244,244,148,205,153, 51, 71,108,108,108,108,254,239,156,192,185, 28, 50,122,237,170,249,120,250, 60, 2,231,206, 9,240,244, -233, 83,216,217,217, 65, 36, 18,129, 82, 10,149, 74,133,180,180, 52,104, 53, 42, 52,105, 84, 11, 71, 14,172, 71,106,106, 26,192, - 33,101, 46,185, 33, 28, 50,114,204,143,253,113,255,193,117,236,222,189, 23,121,121,178, 50, 30,190,141, 80,215,189, 1,156, 28, -109, 17,159, 16, 15,194,129,245,215,188,214,255,113,215, 97,225,253,174, 95,120,135,226,168, 86,173,218,150,147, 39, 79, 90,121, -121,121,113,101, 50, 25, 88,150, 69, 71, 15, 15,204,152, 53, 11,126,199,143,195,173,237, 48, 16,181, 4,140, 88,191, 93, 15, 74, -133, 28, 13, 91,180,199,224, 33, 67, 17,247,254, 61,186,247, 30, 8,165, 82, 94,244,132, 81,104,209, 82,171, 53,176,182,173,142, - 27, 55,110,112, 49,110, 92,153,107, 76,116, 26, 97,200,155,119,202, 14, 89,138,231, 8,124,234, 11,141, 74,131, 38, 77,150, 65, -195, 90,193,214,121, 34,180,218, 11,200, 73,243,207,119, 99, 88,121, 33, 33, 46, 14, 28,174,224,101, 85, 43,145,149,165,125,214, -160,155,149,149,149,237,232,232,248,103, 96, 96,224,200, 1, 3, 6,224,198,141, 27, 19, 0, 96,192,128, 1, 8, 12, 12, 68,116, -116,244,159, 89, 89, 89,217, 95,162,193, 29, 29, 29,251,122,121,121, 13,107,221,186, 53, 46, 93,186, 4, 74,233,125,189,110,108, - 62,159,114, 56, 28,176, 44, 11, 2, 32, 35, 43, 11,145,145,145,200, 72, 79,135, 86,171,133, 44, 47,143,109,224,238,158, 71, 89, -214,180, 50,229, 41,190,195, 16,165,236, 58, 44,124,175, 10, 98,235,189, 68, 34,137,203,205,203,179,177,168,102,145, 43, 20, 10, -117,210,172,172,236, 87, 47, 67,213,122, 78, 14,133, 8, 15, 11, 11,107,156,148,148,132,184,184, 56, 48,178, 92,112, 85,106,112, - 84,114,124,219,190, 29,140, 65, 97, 4, 22,124, 86, 11, 62,151,143,220,252,221,121, 21,186, 59, 10,133,126,113,203, 22, 33, 36, -223, 93,104, 98, 2,161,196,244, 35, 11,151, 62,253, 73, 36, 18, 29, 63,115,230,140,131,147,147, 19, 86,173, 90, 5,103,103,231, -250, 77,154, 52,145,119,236,216,209,216,206,206, 14, 13, 27, 54, 68,251,246,237,113,245,234, 85, 0,120, 87, 65,253, 49,132,144, -239,238,223,191, 63,247,225,195,135,131, 9, 33,100,209,162, 69,232,209,163, 7,140,140,140, 32,151,203, 33,149, 74,177,111,223, - 62, 66, 41,109, 81, 80,214, 26, 70, 70, 70, 39, 8, 33, 9, 10,133, 98, 72, 73, 78,223,205, 77, 29, 83, 51,217,113,118,246, 78, -253, 61,187,215,108,210,165,123, 87,212,114,235,130, 46,221,227, 0, 96,189, 37, 47,118,216,134,159, 26,159,183,174,110,121,240, -198,181,155,203, 61, 60,187, 44, 93, 52,201, 98,245,250,189,210, 28, 61, 6, 50,176, 44,251, 81,236,160,146,159,143, 26, 53, 10, -167, 78,157,170,176, 30, 57, 28,206,208, 73,147, 38, 9,138,191, 87,232, 50,238,221,187, 55, 6, 12, 24,240,145,208,178,182,182, -134,189,189, 61, 98, 99, 99, 1, 32, 67,207,126, 53, 99,236,216,177, 68,161, 80, 96,252,248,241,216,191,127, 63,134, 13, 27, 70, - 2, 2, 2,102, 0,152, 85,217,254,206,225,112, 54, 44, 88,176, 96,174,143,143, 15, 50, 51, 51,113,229,202, 21,244,236,217, 19, -167, 78,157,178,185,114,229,202, 90, 47, 47, 47,112,185, 92, 92,186,116, 9, 12,195,148, 27,235, 75, 32, 16,244,245,246,246,230, -196,199,199, 67, 32, 16,160, 85,171, 86, 72, 72, 72,128, 92, 46, 71, 98, 98, 34,102,206,156,249, 33, 35, 35,163,179,190,247,145, - 64, 32,152, 53, 99,198, 12,156, 60,121, 18,139, 22, 45, 58, 12, 96,124,118,118,246,224,135, 15, 31,158,236,215,175, 31, 18, 19, - 19,113,254,252,121, 44, 95,190,156,140, 26, 53, 10, 59,119,238,196,204,153, 51, 15, 1, 24, 95,206, 14,201,220,212,212, 84,243, - 58,117,234, 32, 37, 37, 5,121,121,121, 56,127,254,188,237,213,171, 87, 93,157,156,156,204,162,163,163,117,191,252,242,139,112, -214,172, 89,216,178,101, 11, 94,188,120, 1, 95, 95, 95,116,233,210,133,137,138,138, 42,213, 74, 86, 16,178,225,188,165,165,229, - 77, 19, 19, 19,228,230,230, 22,238, 44,157,183,104,209, 34,159,117,235,242,141,236, 73, 73, 73, 24, 61,122,244, 15,132, 16,118, -229,202,149, 98,129, 64, 0,165, 82, 41,251,119, 78,220,172,142, 5,192,194,181,186, 4,215,253, 14, 32, 40, 56, 10, 65,193, 97, - 16,138,242, 23,193, 43, 20,114,180,104, 82, 23,109, 91,181, 65, 82,114, 34,142,250, 30,128,165,181, 83,185,227, 8,165, 20, 2, -158, 14, 13,220,237,113,220,119, 47, 46, 93,185, 13,223,163, 39,138,214,188,241,120,124, 52,111,209, 22,173, 90,121, 32, 42,250, - 29, 14, 28,216, 13, 27,219,234, 6,231, 96, 21, 81,228, 58, 44,254,183,132,242,239,226,225,225,193,205,203,203,131, 82,169,196, -135, 15, 31, 16, 27, 27,139,106, 22,213, 16,149, 20,131,206, 98, 13, 62,176, 57, 8, 15,126,169, 35, 92,254,139, 10, 77,131,158, -205, 1,207,230,152, 54,118, 88,217,157, 0, 20, 38,102,214,249,174, 27,134,121,139,109,219,202,124,114,102,116,218, 91,215,111, -250,183, 25, 59,170, 47,255,134,255,126,104,213, 44, 20, 90,115,200,148,106,200, 52,124,112,204,123, 2,233, 1,224,242, 68,248, -166, 89, 93,156, 63,119, 85, 67, 25,237,109,189, 43,200,174, 49,152,148,176, 98, 66,235, 99,143,158,145,169,165,222,174,195,162, -137, 87,167, 59,117,236,216,177,239,219,181,107, 39,246,242,242,170, 83, 48,113,106,142, 29, 59, 38,215,233,116,167, 42,219,136, - 37,163,193, 59, 56, 56,180, 16, 8, 4,195,250,246,237,219, 98,204,152, 49,120,245,234, 21,142, 30, 61,250,166,110,221,186,229, -198, 16,227, 10,133, 25,121,169,169,213, 36,174,174, 60, 11, 83,211,164,171, 87,174,212,232,218,173, 27,137,139,139, 67, 70, 70, - 6,148, 74, 37, 94, 4, 7, 83, 62,151,155, 64,204,204, 56, 17,207,159,115,184, 66, 97, 70, 37,138, 26, 91,193,174,195,117, 85, -181,110, 85,119,176,168,179,124,209,228, 90, 74,149,178,113, 78, 78, 14,195,227,243,249,206,246,213,222, 87,210, 13,121,233,214, -173, 91,223,119,237,218, 85,244, 38,228, 5,152,236,108,168,179,165, 16,176, 58, 88,182,104, 6,174, 70, 5,168,181,112,106, 64, -161,204, 18, 35,224,239, 8,173, 74,165,170, 48,168, 97,161,208,226,148, 16, 6, 66,137, 4, 34, 83, 51,136, 36,146,146,130,129, - 84,208,222,226,190,125,251,126,251,205, 55,223,128, 82,138,125,251,246, 65,163,209, 8, 53, 26, 13,212,106, 53, 52, 26, 13,114, -114,114,224,235,235,139, 93,187,118, 61, 4,112, 72, 15,177,202,240,249,124, 31,134, 97,108, 69, 34,145,198,198,198, 70,112,250, -244,233,162,112, 19,205,155, 55,135,137,137,137,138, 16,162, 1, 0,123,123,123,237,225,195,135,121,253,250,245, 19,148,198, 87, -175, 73,253,249,181, 24, 11, 79, 35,227,154,174,102,214, 77, 81,203,173, 11, 0,160, 91,239,177,168, 85,215, 5, 57,233, 33,174, - 74, 69,108,127, 1, 79,106,241,114, 91,226, 43, 99,239,198, 99,100,169,119, 35, 81,250,246,254, 82, 39, 10, 14,135, 83,166, 59, - 86, 31,145, 69, 8,225,152,155,155,219, 20,174,243, 41,152,128,145,156,156,140,240,240,112,212,171, 87, 15,153,153,153,112,114, -114,130, 90,173, 70,235,214,173,161, 80, 40,176,121,243,102, 60,120,240,224, 33, 10,118, 70, 86,240, 27,198,110,110,110,163, 91, -180,104,129, 43, 87,174,224,233,211,167,137,215,175, 95,119,242,240,240,128,171,171,235, 24, 66,200, 18, 74,203,142,193, 87,154, -171,175, 83,167, 78,211,125,124,124, 16, 22, 22,134,201,147, 39,103,196,199,199,159, 63,125,250,244,248,229,203,151,115,186,119, -239,142,228,228,100,108,216,176, 65,247,224,193,131,141, 0, 86, 85, 80,143,175,227,227,227,157,149, 74, 37, 50, 51, 51,193, 48, - 12,228,114, 57,174, 94,189, 10, 95, 95,223,148, 2,145,245, 86,223,242, 53,107,214,172, 33,135,195,193,201,147, 39, 1,224, 39, - 74, 41, 75, 8, 57,223,191,127,255,196, 95,126,249,197,105,241,226,197,152, 48, 97, 2, 52, 26, 13,126,253,245, 87, 44, 94,188, -248,114,129,200, 42,111, 16,253,221,222,222,126,226,228,201,147,235,207,153, 51, 7,129,129,129,182,207,158, 61,107,245,226,197, - 11, 84,175, 94, 29, 25, 25, 25, 60, 43, 43, 43,108,217,178, 5,179,103,207, 62, 11, 32,253,209,163, 71, 67,163,163,163,215, 81, - 74, 55, 84, 80,159,123,156,156,156, 38, 82, 74,169, 92, 46,143, 93,180,104,209,134, 53,107,214, 96,246,236,217,120,249,242, 37, -178,179,179, 97,106,106, 74, 22, 44, 88, 48,250,167,159,126,194,184,113,227,168, 76, 38,219,245,239,119, 75,233, 32,151,134, 65, -167,178, 64,243, 38,245,208,188,113, 77, 92,247, 15, 2, 0,124, 59,208, 3,114, 89, 46, 14, 31,222,135,183,111, 35,193,227,243, - 81,205,210, 94, 31, 75, 32,212, 57,175,145,165, 73, 70, 87,175, 86,232,217,189, 51, 14, 29, 57, 5, 70,171,193,248,177, 35, 32, -205,202,194,145, 35, 7, 16, 21,253, 14, 60, 62, 31, 86,214, 95, 63, 16,106,121, 90,228,127, 94,104,233,225,126, 2,203,178, 72, - 76, 76,196,179,103,207, 16, 19, 19, 3,177, 88, 12, 5,163, 99,119,223,122,192, 18, 34, 72, 96, 41,125, 72,153,162, 40,197,159, -114,232,116,137,197, 34,214,154, 91, 88, 88, 8, 85, 42, 5, 24, 70, 91,108, 86, 33, 0, 1, 4, 60,192,193,177, 22,226,227,226, -169, 82,169,188, 91,238, 19,148, 74,185,229,226,249, 51, 62,237, 59,120, 88,247,252,118, 37,206, 95, 88, 6,105, 78, 14,148, 26, - 62,100, 74, 13,228, 74,160,154,165, 59, 90, 55,105,138,164,164, 12,132, 60, 13,200,227,169,228,250, 44, 20,141,220,190,116,172, -219,216,105,243, 97, 92,163, 3, 84,225,231,193,230,165, 20, 89,180,140, 36, 22,176,116,105,128, 44,153, 10,103,110, 7, 1,128, -222,169, 94, 82, 82, 82,228,142,142,142,199,124,124,124,126, 13, 10,122,230, 12, 0, 65, 65, 65, 9,201,201,201, 11, 83, 82, 82, -228,149,105,192, 98,209,224,137, 88, 44, 14,170, 91,183,110,146,183,183,183,121,255,254,253, 97,109,109,141, 23, 47, 94, 96,221, -186,117,175, 53, 26,205,252,187,119,239,150,235,234, 81,171,213,137, 65, 23, 46,152,117,254,241,199,106,243,251,244,217,224,227, -227,179,101,213,170, 85,124, 55, 55, 55,162,213,104, 16, 26, 26, 74,143, 31, 59,166,221,181,120,241,102,161,137, 9,239,201,197, -139,124, 70,165, 74,252, 79,119, 98,103,103,103,207, 94, 61, 60, 27,108,252,125, 27,148,138, 60,252, 29,120, 25, 82,105, 26,246, -238, 59,215,192,217,217,217, 51, 33, 33, 33, 64, 95, 1,124,240,224,193,185,109, 91,180,104, 81,187,122,117,132,190,143,129,144, -213, 65,192, 48,224,106, 84,224, 48, 74, 84,111, 76, 65, 56,166, 72,254,144,131, 53, 39,255, 12,211, 71, 24,215,239,213, 23,171, - 18,178, 65, 8,193,166,118,141, 33, 52,149, 64, 96, 34,193,212,191,252,139,132,193,165, 85,139, 33,148, 72, 80,167,173,135, 30, -131, 46,149,155,154,154, 62, 11, 13, 13,109,221,184,113, 99,204,157, 59, 23,177,177,177, 96, 89, 22, 41, 41, 41,202,228,228,228, -196,180,180,180, 88,228,199,255,217, 79,245,124, 18, 96, 24,198, 54, 40, 40, 8, 0, 4, 0,112,251,246,109, 56, 58, 58,194,220, -220, 28, 57, 57, 57,152, 63,127,190,232,231,159,127, 6, 0, 60,123,246,140, 95, 92,160,148, 68,104, 80,248,198,172, 92, 42,165, -121,207,251,103, 50,207,155,116,233, 30,143,110,189,199,224,230,165, 67,240,191,126, 11,150,188,216, 24,152,228, 94, 77,143, 73, -207, 73,144,185,237,105,208,114, 60, 55, 89,118,125,207,140,126, 22, 92, 7, 7,246,204,162, 93,217, 89,229,149,213,205,205, 13, -118,118,118, 69,107,180,120, 60, 30,198,141, 27, 7, 74,169, 94, 34,171,160, 30, 89, 51, 51,179, 52,165, 82,105,103,100,100,132, - 15, 31, 62,224,221,187,119,136,138,138, 42, 10, 29,192,178,172, 2, 70, 94,132, 0, 0, 32, 0, 73, 68, 65, 84,118,222,188,121, -252,233,211,167, 99,247,238,221,184,123,247,238, 67, 0, 43, 41,165,250, 62,172,141, 24, 50,100,136,169, 90,173,198,137, 19, 39, - 24, 0,189,207,156, 57,243,172,117,235,214,188, 30, 61,122,152,238,220,185,115, 4,128,253,149,232,238, 38,102,102,102, 2,141, - 70,131,157, 59,119, 34, 62, 62,222,147, 82, 26, 78, 8,217, 51,100,200,144, 93,141, 27, 55,174, 27, 22, 22, 22,153,151,151, 55, -149, 82, 26,162,199, 88, 52,182, 85,171, 86,103, 88,150,173,209,181,107, 87,147,223,127,255,221, 44, 34, 34, 2,206,206,206, 96, - 89, 54,180,178, 41,172, 34, 35, 35,195,147,147,147, 27,116,238,220, 25, 87,175, 94, 93, 79, 8, 89, 11,224,215, 41, 83,166, 56, -189,127,255, 30, 45, 90,180,128,165,165, 37, 34, 34, 34,114,147,147,147,119, 1, 88, 82, 81,172, 47, 74,105, 52,128,133,132,144, -166,123,246,236, 25,102,105,105,249,205,139, 23, 47,112,255,254,125,108,220,184, 17, 63,255,252, 51, 58,118,236,136,185,115,231, -166, 3, 24, 86,224,210,214, 43,110, 94,161,101, 11, 0, 90,181,106,149,180,110,221, 58,140, 31, 63,158,254,241,199, 31, 91,143, - 29, 59, 54,107,196,136, 17, 69,115,224,232,209,163,233,209,163, 71, 71,151,183, 17,224, 43, 65,171,209,168, 97,102, 89, 11,121, - 89,113, 72,139, 15,132,216,212, 30,221,187, 52,131, 92,161,134,223,197,179, 8, 9, 13, 6,135,195,129,157,125,117, 84,179,176, -198,155, 55,145, 0,240,170,124, 78, 13, 76, 45,106, 34, 47, 59, 30,234,212, 32, 24, 75,108, 49,230,199,254,144, 43, 52, 56,119, -254, 44,194,194, 66,192,229,114, 97,239, 80, 29,230,213,242, 57, 9, 45,151,211, 0,148, 30, 79,171, 66,161,197,229,114,239, 92, -187,118,109, 80,219,182,109,121,111,223,190,197,219,183,249, 15, 55, 82,169,148, 33,208,253,153, 18,114, 97,120, 57, 34,160,107, -225,238,140,226,185, 11, 37,166,166,137, 17,175,195,237,164,153, 41, 8,126,254, 0,111,223,132, 34, 38, 42, 28, 26,141, 18, 92, - 14, 7, 28, 46, 7, 53,107, 53,194,131,135,129,106, 37,195, 4,150,197, 9, 0,153,153,239,114, 37,118,238, 67, 87,175, 90,114, -105,246,252, 21,198,131, 7,237, 70, 72,196, 43,228, 49,246,160, 20,176,183, 50, 65,243,218, 11,144,152,148,134,147,135,118,202, - 89,141,102,100,241, 24, 90,165,113, 2,128, 93, 58, 26,238,218,119,104,220,126,223,227, 43,230, 79,159,100,215,111,192, 72, 8, - 51, 95, 65,155, 20,132, 90,173,123,130,136,170,225,202, 13,127, 4, 60,123,149,194,234,232, 10,187, 12,252, 81, 17,103, 9, 23, -226,163, 15, 31,146,157,139, 69,129,119, 22,137,140, 30, 85, 32,170,186,150,136, 43,244, 81,196,121, 46,151,211,114,245,234,213, - 90, 59, 59, 59, 77, 88, 88, 24,118,239,222,205, 6, 5, 5,221,224,112, 56,219,147,146,146,148, 21,113,218,104,181,193,199, 23, - 45,106,216,102,192, 0, 58,124,250,116, 57, 68,162, 25, 27, 54,109, 90,148, 38,149, 58, 82,150,133,141,165,101,194,134,197,139, -215, 13, 26, 50, 68,250,242,193, 3,227,192, 11, 23,140,133, 12, 19, 84, 81, 57,191,144,223,187, 76,206,132,132,132, 0,183, 58, - 46, 56,188,255,119,104, 52, 42, 36, 39,230, 27,178,210, 51,178, 81,158,200, 42,201, 89,176,235,106,192, 79, 63,255,252,248,167, -217,179,236, 59,125,219, 21,113,193, 47,160,201, 76, 3,209, 50,224, 19, 30,100,169, 98,164,166,228, 97,225,209,211,169,121,114, -249,128,146,147, 68, 89,229, 44,180, 88,137,204, 76, 33, 48,145, 64, 40, 49,253,200,138,101,100,102, 6,161,137, 4, 60,161,176, - 52, 43,205, 39,156,121,121,121, 3, 7, 13, 26, 20,242,228,201, 19,139,241,227,199,163,125,251,246,207, 21, 10,133, 23,165, 52, -183,170,245,201,227,241, 82, 91,182,108,105,203,231,243,153,113,227,198,241,210,211,211,139, 34,171,231,229,229,225,234,213,171, -168, 87, 47,127, 87,255,203,151, 47,209,168, 81,163, 50, 57,199, 47, 8, 77, 4,176,106,206, 96,231, 13,143,131,147,103, 0, 88, - 95,171,110,117,248, 95,191,133,251,254,129,139,190,105,204,110,235, 53,178,245, 47, 98,175, 33,243, 27,180, 28,207,149,152, 57, -224,200,185,179,220,240,160, 3,107,228,242,208, 58, 0,230,149, 85, 78, 66, 8, 40,165,159,132,114,224,114,185, 56,118,236, 88, -101,175,253,244,254,253,251,167, 76,158, 60, 89,144,156,156,140,215,175, 95, 67, 38,147,193,200,200, 8,215,175, 95,103, 0,236, - 60,118,236,216,245, 99,199,142,245, 64,126, 92,156,219,149,233,159, 38, 38, 38, 62,221,187,119,199,235,215,175,241,244,233,211, -179,148,210, 16, 66,200,217,183,111,223, 14,237,216,177, 35, 14, 29, 58,228, 83,150,208, 42,139,147,101,217,226, 49,147, 50, 11, -250,110, 48,128,111, 42,219,238, 5, 11,120, 59, 0,128,149,149, 85,188,157,157,157, 89,112,112, 48, 92, 92, 92,160,209,104,218, - 86,182, 47,101,103,103,255,190,125,251,246, 63,198,142, 29,139, 95,126,249,101,228,233,211,167, 71,246,234,213, 11,222,222,222, - 56,120,240, 32, 66, 66, 66,214,235,147, 86,172,180,107, 47, 16,142, 33, 13, 27, 54,156, 86,189,122,117,108,220,184, 17,161,161, -161,235, 86,173, 90,181, 56, 36, 36, 4,245,234,213, 19,189,122,245,138,169,202, 24, 2, 0,102,102,102,102, 90,173, 22, 23, 46, - 92,248,155, 82, 58,155, 16, 98,187,101,203,150, 97, 18,137, 4,153,153,153,138,176,176,176, 17,148,210,139,255,238,177,142, 18, -178,116,252,132, 25,123, 38,140, 31, 97,212,170,101,115,200,115, 18,160,200, 75,129, 60,247, 3,182,239,191, 1, 66, 56,176,177, -113,128,173,189, 51,222,191,143,195,195,203, 87,212, 50,185, 98,139, 80,203,174, 47,159,115,122, 62,103,139,124, 78,185, 44, 21, -138,188,212, 34, 78, 91, 91,199, 2,206,247,120, 16,120, 69,169,144,201,126, 87, 83,242,219,215,188,246,255,101, 84, 58,215, 97, -113, 72,165,210,153,147, 38, 77,242, 90,184,112,161, 21,195, 48, 92, 75, 75, 75,188,127,255,158,249,243,207, 63, 51,243,242,242, -102, 86,165, 64, 60, 62, 63,196,205,189,158, 87,191,126,253,152,190,125,251, 8,126, 24,219,131,103, 99,107,139,236,172, 12,188, -121,253, 2, 17,175,130,224, 86,175, 25,150,175,218, 12, 84,171, 86, 97, 34,201,188,148, 55,119, 36,118,238,189, 87,254, 52,239, - 84, 7,207,239,204,234, 53,106, 38,104, 94,199, 28, 26, 45,131,132,132, 4, 92,188, 16,172, 9,123,118, 63,135,101,212, 67,101, -105,250,165,224,185,155,255, 84,180,183,137, 29, 57,182,118,195,246,185, 59,247, 30,158,191,112,198,120,147,142, 30,221, 16,122, -235, 16,206, 94, 58, 37, 83,170,212, 27, 4, 92,108, 10, 77,167,242,202,214,129, 82,169,212,148,220, 16,165, 84, 42, 53,159,219, -216, 7, 15, 30, 68, 74, 74,138, 58, 54, 54,246, 26,195, 48,167,203, 74,246, 92, 26,182, 81,170, 30, 64,200,173,159, 60, 60,122, -252,116,253,186,209,232, 5, 11,212, 35,127,248, 97, 30, 84, 42, 13,132, 66,202, 51, 49,225, 64, 36,226,191,124,240,192,120,235, -148, 41,150, 68,173,190,121,168,156,176, 1,165,224,139,239, 58, 44,102,209,194,232,241,179,161, 40,102,209,122,244,244, 13, 42, - 99,209, 42,184, 49,226, 8, 33,223,204, 88,250,211,185,161,221,191,109,208,184, 70, 77,145,141,107, 77, 72,236,237,145,145,150, -134, 7, 79, 35,180,171, 78,157, 11, 43, 16, 89,122,197,149, 97, 89, 54,127,145, 59,128,111,103, 46, 4,225,114,129,130, 48, 14, -133, 59,135, 92, 91,183, 7,225,241,160,163, 44, 84, 42, 21,213,163,156, 9,132,144,129, 35, 71,142,188,125,233,210, 37, 78,247, -238,221,155,159, 63,127,158,253,156,190,163,213,106,157, 11, 4, 87,142, 88, 44,230,141, 25, 51, 6, 90,173, 22,114,185, 28,217, -217,217, 8, 15, 15, 87, 13, 30, 60, 88, 84, 32, 32,180, 67,135, 14,173,112,252,248,253, 76,130,114,206, 96,231,109,150,188,216, - 97, 57,233, 33,174,150,188,216,152,111, 26,179,219,126, 63,147,160, 92, 57,187,218,234,244,216,128, 55,201,178,235,123,142,156, - 59,203, 29,213,127,160,206, 89, 18,185,200,200,150,254,217,165, 79,133,131,218, 39,193, 73,245, 17, 89, 37,145,155,155,187,120, -217,178,101,222, 82,169,212,185, 71,143, 30,130, 6, 13, 26,224,241,227,199,184,116,233, 18,243,232,209,163,120,153, 76,182,132, - 82,170, 4,112,163, 42,117,234,238,238,238,202,227,241, 10, 93,105, 59, 10,222,222,113,254,252,249,161,227,199,143, 71,205,154, - 53, 27, 18, 66, 68,180, 18,247, 17,165,180,200,203,240,133, 39,138,168,173, 91,183, 58,217,219,219,147,171, 87,175, 50, 92, 46, -183,210,150, 27, 74,233, 65, 66, 72, 91,173, 86, 59, 97,226,196,137,240,244,244, 4,195, 48, 56,122,244, 40, 14, 28, 56,176,190, - 50,185, 91,203,194,155, 55,111,130,226,227,227, 59,205,155, 55, 15, 27, 55,110, 92, 60,111,222, 60,196,199,199,227,205,155, 55, - 47, 62,135, 55, 39, 39, 71, 17, 23, 23, 39,110,215,174, 93, 43, 23, 23,151,176,209,163, 71, 55, 26, 63,126, 60,214,175, 95, 79, -239,222,189, 59,136, 82,122,245, 63, 49,129,191,142,204,240,109, 82,219,238,250,170,213,191,255, 92,167,182,235,228,113, 99,134, -112,221,221, 26, 65,150,157, 0, 43,107, 59, 56, 87,175,133,180,212,116, 92,187,118, 85,151,158,158,117, 80,199, 33, 43, 35, 35, - 51,146, 62,135,211,201,185, 22, 82, 83, 83,113,229,202, 21, 93,150, 52,103, 31,180,156, 85,175, 98,165, 41, 48,160, 66, 75, 86, -105,139,225,137, 62, 11,111, 11,118, 30,110,205, 15,239,144,111,229,146, 74,165, 51, 41,165,233,250, 42,115, 82, 50,136,218,224, -193, 2, 92,190,220, 20, 90,237, 55,213, 76, 77,191,165, 44,219,186, 89,179,102,146, 33, 67,134,176, 30, 30,237,133,102,102,102, -164, 97,195,198, 57,217, 89, 89,150, 0, 64, 1, 93, 69, 42,186, 48,169, 52,143,203,239,170,211,105,154,228,151,181,226,164,210, -250, 40,243,218,118,196,134,199, 98, 57,135,144, 49, 44,165,135, 24, 14, 86, 70,165,208,180,170, 62, 61,149,112,251, 21,166,156, - 89, 92,217,167,188,226,174, 67, 14,135,235,235,224,224,176, 36, 33, 33, 33,149, 82,170,171,170,101,163, 48, 5, 79,239, 89,179, -180, 45,191,251,142,177,172, 94,157,165,148,234, 98,130,130,200,163,139, 23,249,143, 46, 94, 52,210,170, 84,119,206, 80, 26,165, - 15,167,163,163,227, 58, 63, 63, 63,189,215, 94,245,233,211,231, 85,225,186, 45,125,235,179, 78,109,231,235,181, 93,157,190,171, -237,154,239,158,142,138, 73, 66, 84, 76,226,141,119, 81, 9,221,171,210, 70,197,147, 74,147,130, 16, 14, 84,143,164,210, 37, 57, -173,173,173,159,241,120, 60,231,202,220,176, 58,157, 46, 41, 45, 45,173,133,158,229, 28,238,234,234,186,254,253,251,247,231,116, - 58,221,236, 47, 97, 33, 36,132,180,231,114,185, 87,116, 58,157,113, 73,139, 87,161, 24, 35,132,212, 16,137, 68, 31, 45,134, 47, -143,115,195, 79,141,127,110,215,177, 99,255, 71,247,239,159,159,191, 58,236,163,117, 67, 51,250, 91,142, 29, 62,109,230,111, 39, -118,110, 93,176,237,124,230,193, 10,173,205,118,118,119, 1,184, 21, 10, 46, 61,234,178, 85, 5,150, 97, 35, 83, 83,211,117, 0, -134,178, 44,107, 77, 8, 73,167,148,158, 44, 38,178,170, 92,159, 92, 46,119,125,253,250,245,103, 70, 68, 68,156, 96, 24,102, 92, -177,243, 55,214,169, 83,103, 90,108,108,236, 14,173, 86, 59,191, 18,247,187, 89,199,142, 29,165, 91,183,110,229,204,158, 61, 27, - 1, 1, 1,150,148, 82,233, 23,106,119,123, 11, 11,139, 63,116, 58, 93, 3, 74,169, 95,110,110,238, 98, 74,169,172,178,156, 5, - 33, 30,134, 58, 57, 57,205,119,115,115,115,139,140,140, 12, 73, 76, 76,220, 80,210, 26,244, 25,229,244,254,254,251,239,253,182, -108,217, 66,170, 87,175,142,248,248,120,204,154, 53,139, 94,184,112,161, 15,165,244,114, 85,199,100, 66,200,210, 41, 83,166,172, -254,225,135, 31,138, 4,237,186,117,235,232,229,203,151, 71, 83, 74,125,171, 58,206,127, 73,235,125,195,218, 54,181, 41, 87,183, -166, 89,227, 6,131,126, 28,217,159, 60,122, 26,137,199,143, 2,145,144,148,116,158,229,112,150,188,121,147, 30,249,185,156,129, - 79,223,224,113, 96, 32, 77, 78, 74, 62, 3,202,253,233, 85, 84, 90,212,191,235,218,255, 9, 86,173,210, 92,135,164,138,169,176, - 42,221, 97,136, 62,209,106, 29, 29, 29,145,145,209,214,136,199,243, 16,137, 68, 94, 28, 46,247, 78,102, 90,218, 44,125,133,214, -215,232,216,159, 76,232,117,136,176,172,148, 4, 85,225, 44,185,144,189, 42,156,149,225,208,151,179,172,164,210,172, 74,149,100, -197, 48,207,182,209,178,235,160, 36,167,179,179,243, 4,150,101, 93,245, 45, 19,135,195,137, 73, 72, 72,216, 95,149,250,116,115, -115,163,111,223,190, 5,165,148,124,201,118,255, 26,125,233,255, 19,167,239,230,166,142,245,154,212,159, 31, 26, 20,190,177,192, -173, 88,132,149, 51, 44, 77, 61,186,116, 94,246,192,255,238, 47,203,183,101,230,254, 39,203, 73, 8,225,208,202,238,110,169, 34, -103, 97,144,208,202,114, 10, 4,130, 61,109,218,180,153,240,248,241,227, 63, 24,134,153,248,255,177,127, 18, 66,188,185, 92,238, - 60,119,119,247,230,111,222,188,121,161,211,233, 54,150, 39,178, 42,241,240,187,196,213,213,117,170, 64, 32, 16,229,229,229, 73, -147,146,146,150, 81, 74, 79,255,183,213,103, 67, 55,171, 86,148, 22, 5,221, 94, 19,254, 54,227,201, 23,227,164,172,142,165,220, -213, 17, 81,233,207,255,221,237,254,191, 46,178,202,178,114,241,254, 93,133, 40, 20, 74,229, 34, 41, 41, 30, 64, 60,128, 51,255, -173,149,169,143,200,170,164,185, 49,229,191,129,163, 36, 10,132, 84,224,151,224, 42, 41,154,190, 38, 34, 35, 35,137,225,150,255, -239,195,143,179, 67,146, 0,204,106,229,245,233,103, 5,226,106,190, 87,223,255,124, 57,171, 34,178,170,202, 89,213,132,207, 26, -141,102, 50, 33,100, 78,101,118, 43,254,211, 80, 32,170, 46,127, 5,222,181, 0,214,254,183, 95,255,171,200,140,103, 0,250,252, -183,115,254, 63,235,147,149, 75, 42,109,128, 1, 6, 24, 96,192,127,245,160,174, 48,212,130, 1, 6,252,119,161,184, 85,171,184, -240, 34, 0,186,150,113, 35,223,170, 4,121,215, 42, 12, 20,183, 12,156, 6, 78, 3,167,129,211,192,105,224, 52,112,254,255,226, -252,167,138,172,143,196, 85,241,227,194, 93, 79, 95,227, 5,160,171,129,211,192,105,224, 52,112, 26, 56, 13,156, 6, 78, 3,231, - 63,249, 5, 96, 98, 89,199, 6,215,161, 1, 95, 29,219, 7, 16, 39, 0,152,126,142, 38,126,141,243, 13, 48,192, 0, 3, 12, 48, -224, 63, 9, 74,233,190,178, 92,135,255,113,161, 69, 8,113, 68,126,160,189, 58, 0, 34, 0,220,175,204,118,229, 82,248,172, 1, - 12, 33,132, 12, 46,184,216, 51, 0, 78, 87, 20,138,162, 16,198,198,198, 41, 74,165,210, 22, 0,140,140,140, 82,149, 74,101,241, - 92, 6, 4,159,166, 71,161,249, 63, 83,246,194,214, 90,181,106,165,168, 84, 42, 91, 61,126, 62,155, 82, 26,194,225,112, 66, 37, - 18,137,127, 68, 68,196,165,202, 92,123,151, 46, 93, 70,115,185,220, 53, 0,160,211,233,150,250,251,251, 31,254,138,237,214,182, -186,163,253, 33,141, 86,195,164,164,101, 46, 43,107,235,246,174, 62,100, 29,143, 96,126,193,255, 27,166,250,149, 31,194,162,178, -231,151, 83,190, 86,124, 62,223,199,206,206,174,103, 66, 66,194, 51, 0, 11, 40,165, 21, 70, 53,118,113,113,249,145,199,227,141, -212,233,116,181,185, 92,110, 20,195, 48,199,226,226,226,124, 13,195,136, 1, 6, 24, 96,128, 1, 21,137,173,210,222,175,148,208, -170,111, 77,236, 41, 48, 12, 4,221, 64,113,147, 0, 39, 95,167,211, 15,250,126,223,187, 62,209,106,153,252,223, 20,112,160,187, -250,142,179,207,219,219,219,121,250,244,233,104,223,190, 61, 30, 63,126,220,238,224,193,131, 99,185, 92,110, 8,203,178,119, 0, - 60,166, 84,175, 80, 10, 38, 0,250, 1, 24,209,179,103,207,174,107,214,172,225, 54,106,212, 8, 10,133, 2,119,239,222,245,216, -176, 97,195, 22, 66,200, 45, 0,199, 1, 92, 44, 47, 54,140, 82,169,180, 45,212, 76,132, 16,219, 65,131, 6, 61, 41, 46,174, 10, -242,171, 17, 74,233, 35, 66, 72,160, 78,167,123,124,230,204,153,248,250,132,180,157,228, 42,248,115,102,180,250,147,152, 73, 42, -149,202,246,194,111,107,193, 19,137,160,202,205, 65,187, 49,255,218, 5,122,243,231,249, 32, 44, 3, 46,168,212,107,245,150, 16, - 0,161, 73, 73, 73, 33,158,158,158, 49,149,109,100, 46,151,187,230,218,181,107, 14,148, 82,116,239,222,125, 13,128,175, 34,180, - 8, 33,162,111, 90, 53,187,227,119,246,132, 81, 94,102, 10,122,244, 27,122,140, 16, 50,154, 82,122,246, 35,209,212,139,216, 17, - 30,230, 79, 89,123,156, 11, 0,187,150,140, 88,176,165, 59,217, 54,235, 58,253, 64, 8,241, 2,138, 82, 54,253, 70, 41,189,179, -171, 23,177, 3, 23, 11,167,172, 61, 78, 0, 96,247,146, 17,243,119,245, 34, 91,167, 94,169,220,174, 74, 66,200,212,209,163, 71, -111, 91,179,102, 13,215,193,193, 1,137,137,137, 61, 26, 54,108,232, 78, 8,105, 88,222, 34, 98, 87, 87,215, 83,157,187,125, 95, -107,192,224, 97, 98, 27,107, 11, 36, 37,167,155,157, 58,241,199, 36, 87, 87,215,158, 49, 49, 49, 67, 13,195,136, 1, 6, 24, 96, -128, 1,101,204, 59, 85, 15,239,208,210,145, 24,203, 52,248,158,199, 37, 63,118,108,219,232,219,225,189, 58,114, 26, 54,168,139, - 87, 47,195,191,187,232,255,247,134,134,118,156,219,140,142,250,154, 8,112, 33, 40,169,252,157, 48, 90, 6,188, 27, 23,142, 3, - 0,166,142, 29,193,125,242,228, 73,221,150, 45, 91, 22, 5, 4,252,246,219,111,241,237,183,223,146, 93,187,118, 53,187,113,227, - 70,179, 3, 7, 14,104, 8, 33,135, 42, 8, 66,231, 83,167, 78,157, 13,219,182,109, 19,121,122,122, 66, 36, 18, 21,125, 38,145, - 72,208,167, 79, 31,244,233,211,135,155,148,148,212,221,207,207,175,251,111,191,253,166, 38,132,204,163,148,238,208,167,242,150, - 45, 91,214,170,148,183,175, 17, 66,222, 49, 12,243,162,105,211,166,241,245, 8,169, 59,185, 87,251,155, 83, 59,184,153,148,197, -195, 19, 10,113,100,116,254, 92, 93, 92,104,197,248, 95,133,196,204, 52, 67,108,106, 26, 2, 32, 20, 64, 8,165, 52,244,221,187, -119,225, 13, 8,105,246,141, 5,231,208,129, 76, 93,211, 74,136, 45,196,199,199,195,220,220,220,184,115,231,206,201,132,144, 21, -119,238,220,217,247,133,251, 84,219, 21,243,167, 10,164,177, 33,248,240,250, 17,230, 12,246, 16,207,218,254,215, 47, 0,206,150, -223, 17, 57,156,223, 2,217, 69,179,242,147,241, 46,203,200,200,240, 4, 0, 43, 43, 43, 33,128, 59,155,255, 70,175,217, 29, 8, -249,140,142, 46,224,114,185, 59,143, 28, 57, 50,254,199, 31,127,204, 79, 29,241,224, 1, 36, 18, 9, 86,173, 90, 85,115,238,220, -185,235, 80, 70, 34, 96, 23, 23,151, 31, 59,119,251,190,214,214,141,191, 52,204,205,204, 86,237,221,121,250,169, 99,227,122,156, - 41, 62,115, 77,183,106, 84,246, 46, 46, 46, 63, 26, 44, 91, 6, 24, 96,128, 1, 6, 84,198,154, 85,161,208,170,103, 67, 14,119, -108,225, 54,100,184,183,135,168, 73,227, 70, 16,136,254, 21, 40,186,101,171, 86,104,217,170, 21,103, 81, 94,110,183, 39, 79,131, -186,253,121,227,177,170,158, 13, 57, 29,145, 70, 71,235, 91,176,194,164,180,107,250,217,117,145,101,165, 26, 1,128, 73, 53, 91, -229,146, 11, 31,252, 59,116,232, 0,103,103,103,193,237,219,183,199,161,252,120, 41, 75, 34, 34, 34, 68, 92,110,249,241, 80, 29, - 29, 29, 49,104,208, 32,212,171, 87, 79,216,185,115,231, 37,248, 87, 58,140,143, 96,100,100,148, 74, 8,177, 5, 0, 75, 75, 75, -221,138, 21, 43, 94, 80, 90,228, 25,164,148,210, 71, 28, 14,231, 49,203,178,127, 95,188,120, 49,161, 17, 33,182,189, 91,214,187, - 63,245,135, 65, 98,250,231,150, 50, 69,130, 50, 39,167,212,247,197, 18,147, 52, 99, 19,147, 16,145,216, 40, 20, 64, 8,128, 80, - 39, 39,167,240, 70,132, 56,127, 83,207,245,198,174,217, 35, 76,245,169,203,150, 45, 91,186,123,121,121, 25,233,116, 58,200,100, - 50,236,222,189,219,220,216,216,216,188,103,207,158,203, 1, 20,117,128,134,132, 52, 25,232,200,157,184, 34,145,153, 86, 5, 33, - 83,173, 99,187, 86,177,219,215, 47, 55,107,245, 77, 71, 68,222, 57,138,204,204, 92,100,103,229,129,101,217, 79, 50, 12, 79,189, - 66, 83,118,245, 33, 27,118, 45, 30,177,144,112, 56,164, 89,255, 5,232,107,159, 61,131, 16,242, 18, 0, 95, 40, 20, 22,245, 67, - 66,136, 99,227,198,141, 55,212,253,174, 35,118, 47,253, 1,148,101, 41,128, 13,250, 90,179, 8, 33,182,166,166,166, 23,111,220, -184,209,182,117,235,214,120,252,248, 49,162,163,163, 49,117,234, 84,245,180,105,211, 4,163, 70,141, 34,115,230,204,153, 78, 8, -249,147, 82,250,240,147, 27,129,199, 27,217,111,192, 80, 97, 94, 86,142, 82,173,210,168, 45,173,171,177, 42,153, 82,158, 46,205, - 81, 14, 29, 49, 65,253,242,249,223, 35, 1,124, 34,180, 62,167, 62, 13, 48,192, 0, 3, 12,208, 27,173, 1,216, 0, 72, 3,240, -180,196, 49, 10,254, 71, 41,199,233,200,247, 74, 89, 21,227, 74, 71,254,178, 31, 27,228,199,248,124, 2, 64,250, 57,133, 43, 43, - 42, 60, 80, 16, 25,190, 32, 64,113, 97,160, 98, 82, 76,104,209,136, 52, 10, 38, 51, 10,186,140,119,208,229,126,154, 62,137, 24, - 85, 67,182, 66,135,248,168,112,140,158,181, 10, 17,105,101, 71,228,246,174, 79,180,230, 66,240, 76, 5,128, 64, 92, 77, 53,124, -253,245,192, 86,173, 90, 41,151,120,114,188,215,237,202,183,116,205,153, 56, 2,237,102,255,121, 61, 42, 42,138,113,116,116,196, -143, 63,254, 8, 74,105,239,114, 46, 46, 37,247,105,160,237,235,222,237,209, 38,165,244,101, 82,111,222,188,193,189,123,247, 16, - 23, 23,135,218,181,107, 99,220,184,113,169,148, 82,187,178, 56,123,244,232,113,247,183,223,126,243,220,180,105, 83,240,145, 35, - 71, 58,148,229,110,106, 72,136, 73,179,154,246, 79, 15,172, 91, 88,155, 92, 61,196,151,199,189, 69,181, 0, 5, 41, 69,228,209, -164,164,127,213,221,175,238, 14, 48, 49, 55,133,137,153, 36,101,212,141,103, 69,150,172,130,191, 17, 45, 9, 49,115,118,176,122, -118,114,243, 50, 39,142,255, 41, 35,193,222, 71,164, 34,145,213,185,115,231,192, 53,107,214, 88, 36, 37, 37,225,214,173, 91,168, - 89,179, 38,228,114, 57,126,255,253,247,228,251,247,239, 59, 22,148,215,174, 77,189, 26, 33,187,231,142, 49, 23,140,251, 89, 84, -217,142, 36,224,241,118, 4, 94, 59, 53,205, 92, 68,145,149, 20,141,119,225, 47,241,228, 85,140,214,247,102,136, 46, 71,161,242, -166,148,250,151,246, 61, 31, 15, 82,247, 78,146,141,223,181,187, 79,221, 28, 28, 28, 48,105,210, 36,124,248,240, 1,148, 82,176, - 44, 91,180, 75, 99,201,146, 37,112,119,119,199,232, 97,125,229,162,204,160,206,126,175,232, 51, 61, 59,120,227, 26, 53,106,220, -184,115,231,142,157,147,147, 19,238,223,191,143, 15, 31, 62,192,222,222, 30,183,111,223,198,250,245,235,143, 76,153, 50,101,240, -154, 53,107,140,134, 15, 31,158,120,253,250,245,234, 37,215,212,213,172, 89, 51,220,239,250,125,137,255,249, 27,239, 44, 76,197, - 48,177,181, 2, 87, 98,166,164, 32,114,123, 91, 11,193,208,239,191,173, 27, 27, 27,219,160, 68,251,127, 86,125, 26, 96,128, 1, - 6, 24,240, 47, 92,190,124,153,122,123,123,147,194,191, 37, 37, 4, 33,228, 82,129, 30, 80, 3, 16, 22, 59, 6, 33,228, 82,129, - 53,228,163,227, 69,139, 22, 45, 89,183,110,221,203,194,227,194,115, 22, 47, 94,220,104,253,250,245,107,219,181,107,119, 50, 48, - 48,112, 5,128,183,159, 43,180,202,178,114,233,181, 70,139, 73,120, 2,129, 91, 79,240,117, 90,104,211, 35,192,102,189, 7, 76, -236,161, 32, 18,100, 36,191,199,235,251,103,243,181, 97, 69,149,248,154,242, 9, 33,183,195,195,195,241,250,245,107,196,199,199, - 67, 44, 22,127,114,222,131, 7, 15, 96,108,108, 12, 7, 7, 7,253, 76,118,234,143,243,177,134,180,172, 1, 73, 59, 79,164, 15, -159,140,219,183,111, 35, 53, 53, 21, 2,129, 0, 66,161, 16, 12,195, 84,200,199,225,228,103,252, 45,180, 98,149,118, 78,103, 66, -120,206,150, 18,191, 93,203,103,186,114, 30, 93,226, 43,226,222, 34, 73,169, 67, 53,125, 44,121, 18, 19,136, 77,196,201,198,198, -226,146, 34, 43,178, 37, 33,124, 19,137,145,223,161,213,115,236,185,207,111, 27, 41,222,134, 64, 80, 10, 71,183,110,221, 38, 1, - 88, 78, 41,205,234,220,185,179,221,154, 53,107, 44, 18, 19, 19,241,234,213, 43,156, 62,125, 58,141,201,191, 80, 66, 41, 93, 9, - 0,237, 8, 49,114,177,169,118,125,199,207, 51, 77,113,231,148, 16,227,126,174,116, 71, 50,111,208,231,242,192, 81, 83,166,109, -155,217, 7,178, 92, 5,142,223,124,142,107, 65,239,250, 2,120, 80,222,186,183, 29, 15,232, 91, 66,200,183, 3, 6, 12,120,113, -239,222, 61,235, 3, 7, 14,128, 97,152, 82, 95, 7, 14, 28,192,173,251, 65, 51, 40,213, 91,100, 57,186,186,186,222,250,251,239, -191,109,196, 98, 49,110,222,188,137,172,172,172, 34, 75,214,232,209,163, 73, 86, 86,214,176,221,187,119, 15,140,141,141,221,120, -255,254,253, 12,228,167,131,250,168, 35,112,185,220,119, 12,163,169,239,208,160, 46,111,112,159,142, 29,243, 50, 66, 32,177,106, -138, 71,193,239,252,178,164, 25, 10, 46,151,251,174,248,249, 95,162, 62, 13, 48,192, 0, 3, 12,168,180,160,185, 68, 41,237, 93, - 92, 56,149, 20, 92,133,255, 23,158,183,110,221,186,222,197, 69, 24, 0,172, 95,191,126,109,177, 99,249,151, 40, 91, 69,139,225, - 59, 19, 66, 40,128,206,165,157,164,122,117, 14,170,215, 23, 33,168,209, 1,194,122,125,193,173,225,129,184,144, 59, 8,190,186, - 25, 9, 47, 31,128,178, 58, 56,184,183,209,183, 44,202,250,245,235, 67,169,204, 95,154,165, 82,169, 32, 48,177, 80,206,153, 56, -194, 8, 0, 88,158,145,170, 88,161,245, 34, 52,237,224,133, 54, 41, 20, 79,236,242, 5,112,161,101,107,245,152, 49, 16, 8, 4, - 16, 8, 4, 69,201,103,245, 17, 90, 5, 73, 81,193,230,187,175,104,105,159,183, 18,241,143,159, 92,238,211, 70, 20, 27, 42, 84, -133, 61, 66,146,138,165,126, 41,186,203,250,100, 78, 22,155,136, 19,141,197,226, 80, 99,137, 73,113,161,245, 14, 0, 40,159,239, -123,116,165, 79, 83,147,148, 40, 19,229,211,219, 72, 86,178, 26,179,210,105, 86, 94,189,122,213,150,199,227,217,235,116, 58,196, -197,197,225,229,203,151,216,186,117,107, 74,110,110,110,231,160,160,160, 55,197,202,203,105,109, 44, 60,237,187,106,102, 45, 94, - 72,128,145,234, 93, 88,169,226,173, 60,216, 52,233,223,189,111,231,102,151, 39,253,176, 20,223,247,250, 14,163, 58, 55,164, 49, - 73,153, 74, 0, 55,245, 73, 96, 77, 41, 77, 36,132,116,235,212,169,211,177,230,205,155, 55,160,148,162, 73,147, 38, 24, 54,108, - 24,124,125,125, 17, 28, 28,140,156,156, 28,205,141, 27, 55,182, 80, 74, 15,234,121,195,137, 45, 44, 44,174,249,251,251,219,136, -197, 98,220,184,113, 3, 10,133, 2, 14, 14, 14,152, 54,109,154,112,253,250,245, 71,114,114,114, 6,175, 91,183,206, 40, 38, 38, -102,199,245,235,215,107, 2,224, 80, 74, 63,233, 4,106,181,122,223,113,223,195,219,166,249, 76,119,242,127,252,234,182, 42, 47, -215,188, 70,141,248, 28, 27, 11,137,233,150, 95, 87,186,168,213,234, 73,165,215,231,221, 42,213,167, 1, 6, 24, 96,128, 1,159, -218, 48, 46, 95,190, 92,166, 22, 41, 46,158, 74,138,173,202,136, 52, 0,138, 69,139, 22, 45, 33,132, 92, 42,176,120, 41, 0, 36, -125, 13,145, 85, 36,180, 40,165, 1,132, 16, 80, 74, 3,202,100, 97,117,208,196,220,131, 38,230, 30,140,219,205,192, 95,235,134, -151,248,145,170,167, 8,235,179,234,166,191, 74,165,226, 29, 62,124,184,104,221, 22, 0,232,116,186, 47,222,138,149, 17, 90, 5, - 66,239,147, 66,184,138, 36, 1,251,102, 15,254,198, 74, 39,231,171, 31,248, 33, 81,197, 50, 27,223,106,228, 79,179,232,111, 75, -202,224,188, 48,107, 18,226,239,223,130, 88, 34,137, 31,127, 47,180,184, 21, 43, 4, 64, 52, 0,184, 26,153,221, 62, 61,103,184, -135,189, 0, 2,245,229, 51, 72, 82,177,170, 61,177,218,131, 91, 75,111, 84, 80, 74, 17, 29, 29, 13,185, 92,142,192,192, 64,156, - 61,123, 54,173,164,200, 42, 40,239,221, 63, 22,140,108,107,150,251, 65,160,126,122, 11, 73, 42, 86,229,174,143,184,106,218,191, -131,128, 67,110, 16, 14,215,184, 87,199,134,152, 53,161, 63, 54,255,241, 23,163,182,237,216,123,219,197, 43, 67,242, 84,154, 37, -250,136,172, 98,101, 14, 1,208,144, 16, 34, 2,224, 53,108,216,176, 43, 3, 7, 14, 68, 64, 64, 0,252,252,252,220, 0, 36, 23, -212,255, 42, 0,118,200,223,141, 88, 86,230,120,142, 64, 32, 56,121,235,214,173, 70,142,142,142,184,117,235, 22, 20, 10, 5,166, - 76,153,162,246,241,241, 17,140, 30, 61,154,100,103,103, 23, 89,178, 2, 3, 3, 51,202, 18, 89, 0,144,144,144,112,181, 70,141, - 26,237, 59,117,234,212,191,150, 91, 61,179,168,220,156, 84,177,216,200,248,126,192, 29,193,211,191, 31,238, 72, 72, 72,120, 82, -122,125,222,214,187, 62, 13, 48,192, 0, 3, 12, 40, 27,222,222,222, 1,151, 47, 95,134,183,183,119, 64, 5,115, 73,239, 42,138, -161,194,239,241,215,173, 91,247,114,221,186,117, 31, 89,188, 62,211,210, 86,210,117,120,153, 82,154, 92,220,162, 85, 41,232,178, -227, 62,189, 0,150,173,204,197,126,242,158,133,133, 5, 99,108,108,252,145,208, 98,245,228,204, 60,127, 2, 81, 83, 71, 20, 89, -178, 10, 45, 91,232, 49,250,179,132, 22,203,178,129, 0, 62, 42,132,137, 93,189,225, 39,127,232,214,161, 97, 45, 39,142,246,244, - 86, 36,200, 25,229,242, 8,141,242,117, 46,237,251,170,148, 69,214, 69,156,140, 22, 70, 38,198,239,141, 37, 38, 37, 69, 86, 44, - 0, 72,236,221, 7, 30, 25,238,213,185, 89,189, 58, 28,230,212,239, 72,148,107,243, 22,133,107, 52, 81, 50,122,174,140, 58, 92, -254,221,119,223, 45,183,178,178, 50,218,182,109,155,121,141, 26, 53,192, 48,140,186,164,200, 50,177,171, 55,252,212,232, 30, 29, -220,237, 45, 56,218, 63,183, 35, 94,161,147,111,141,210, 30,217,163,135,200,178, 54,151, 92,223,179,118,170,177, 88,196,135, 82, -169,196,250, 93,127,226,198,195,176,222,105,161,231,175, 3,184,254, 25,125,114,124,239,222,189, 55,175, 90,181, 10, 90,173, 22, -227,198,141,195,187,119,239,110, 68, 68, 68,108,117,113,113,153,183, 96,193, 2, 71,123,123,123, 12, 25, 50, 68, 0, 96,116, 25, - 28,191, 30, 63,126,188,119,179,102,205, 16, 16, 16,128,172,172, 44, 56, 56, 56,192,199,199, 71,184,110,221,186, 35, 57, 57, 57, -131,215,174, 93,107, 20, 29, 29, 93,174, 37,235,163,126,173,211,173,222,187,121,234,188,214,223,120,112,222,190,125,195,196,181, -241,228,220,185,229,119,207,202,202,234,200, 71,245, 57,166,103,165,235,211, 0, 3, 12, 48,192,128, 47,134,203, 0,188, 75, 90, -185, 74,138,176, 66,139, 85,241,227,146,231, 23,124,174,250,220, 2,149,180,104, 21, 8,175,143,215,104, 21, 95, 4, 95, 17, 88, - 89,154, 94,226,233, 19,181, 90,159,104, 39,181, 6,111,137, 39, 7, 2, 19, 11,101,159, 85, 55,253,203, 58,215,196,196, 68,111, -139, 22,171, 82, 86, 36,156, 42, 37,180, 10,214,104, 93,163,148,126, 36,180,170,217,215,243,252,105,225,204, 45, 30, 3,123,112, - 82, 38,180, 67, 86,158, 74,181,224, 21,195, 38,200,203, 23, 89,249,179,184, 54, 70,108, 34, 9, 53, 50,249,104, 93, 86, 28, 0, - 24,219,213,109,179,104,246,244, 93, 93,134,247, 33,105, 83, 60, 32,205, 82,168,230,189,100, 72,162,130, 14,126, 69,233,157,210, -232,110,223,190,189, 23,192,222,206,157, 59,167,152,152,152, 32, 47, 47,239,147, 54, 40, 44,111,135,129, 61, 56, 41,227,219, 34, - 83,166, 81, 45,120,201, 32, 73,193,158,172, 72,100,217, 84, 51,189,190,103,205, 84,113, 82, 66, 44, 4, 2, 1, 36, 18, 9,110, - 62, 8, 69, 90,216,133,207, 17, 88,224,114,185, 43,150, 44, 89,178,124,218,180,105,200,200,200,128,159,159, 31,122,245,234,133, - 19, 39, 78,212,184,114,229,202,102, 47, 47, 47,112,185, 92, 92,186,116, 9, 90,173, 54,178,140,246,236, 63,113,226,196,121, 3, - 7, 14,196,147, 39, 79,144,156,156,252,145, 37, 43, 43, 43,107,216,174, 93,187, 6,198,196,196, 84,104,201, 42,129, 54,174,117, - 90, 8, 22, 47,219, 4,149, 60,149,151,150,248, 56,224,246, 77,206,163,204,204, 76, 49,128,236,170,214,167, 1, 6, 24, 96,128, - 1,122, 91,181,202,210, 34,105, 5, 34, 42,173,180,227, 98, 2,171,180, 99, 82,194, 10,166, 46,241,121,240,215,188, 38,189, 44, - 90, 60,187,198, 96, 82,194,138, 9,173,212,143, 62, 55, 50,181,212,203,117,168,101,192,219,115,176, 40,142,150, 81, 70, 70,134, -145,181,181,181,178,184, 64, 16,139,197,112,116,116,132, 84, 42,197,190,125,251, 0,160,162, 69,209,140,217,192, 31,208,102,248, - 56, 60,117, 22,130,106, 53, 69,150,173, 61, 99,198,124, 36,182, 4, 2, 65,225,218,176,138, 38,221,191, 9, 33,177, 0, 30, 81, - 74,105, 75,247,218,191, 24,153,152,140,105,213,180,142,245,172,169,227,249, 49,169, 42,248,123, 44,206,250,243,215,133,146,120, - 42,153,246,158,102, 61,172,128, 47,170,223,238,163, 37, 45, 89, 9, 45,220,107, 47, 53, 18, 27, 77,248,166,177,187,253,162, 57, - 83,249, 49, 41, 42,226,223,102, 65,206,217,223, 22,136,163, 97, 58, 47,158, 74,239,232,209, 60,203,123,245,234,181,156, 82, 74, - 89,150, 93, 6, 0,197,203, 59,199,103, 2, 63,234,131, 18,183, 61,150, 74,207,254,186,208, 52, 30,229,151,215,166,105,255, 14, -118, 22,102,215,247,172,157, 38, 78, 78,124, 15,145, 72, 4, 83, 83, 83,196,167,100,131,207,227, 42, 62,167,179, 17, 66, 68,158, -158,158, 11,167, 78,157,138,208,208, 80, 76,153, 50, 37, 57, 46, 46,238,220,169, 83,167,166,252,252,243,207,188,238,221,187, 35, - 57, 57, 25, 27, 54,108,208, 62,120,240, 96, 45,128, 13,165,246, 71, 30,111,252, 47,191,252, 66,147,146,146, 72,116,116, 52, 28, - 28, 28, 48,125,250,116,225,218,181,107,139,214,100, 85,198,146, 85,136,132,132,132, 0,183, 58, 46,232,123,117, 11, 24,173, 42, - 32, 43, 35,238,222,235, 40,105,128,165, 80, 56,215,163,101,211, 42,213,167, 1, 6, 24, 96,128, 1, 95, 4, 79, 43, 56,254,143, -162, 52,215,161,190, 66, 43,114,251,210,177,110, 99,167,205,135,113,141, 14, 80,133,159, 7,155,151, 82,100,209, 50,146, 88,192, -210,165, 1,178,100, 42,156,185, 29, 4, 0,145,149, 41, 88,110,110, 46, 90,182,108,137,157,163,221,187, 40,115, 51,140,140, 1, -168, 68,102,202, 11,194,142,254, 87,174, 92,145,179, 44,123, 18,192,149, 10,104, 86, 52,106,212,104,199,166, 77,155,132, 13,134, -143, 69,222,227,251, 37,173, 83, 48, 54, 54,134, 72, 36, 66, 72, 72, 8,252,253,253,213, 0, 86, 84, 80, 97,127, 51, 12, 19,124, -242,228,201, 4,183,218,206, 61, 58,183,110, 51, 99,201,226, 69,166,175,238,223,192,178,181, 59,216,186,173,186,103,175, 63,113, - 33, 55, 91,226,242,173, 60,233,245, 11, 61, 46, 53,184,132,200, 74,106, 80,203,165, 75,187, 22,205,231, 47, 91,182,212,236,229, -253,155,248,249,183, 61,212,173, 89,215,236,223,206, 94,204, 73, 23,215,252, 78,145, 18,254, 68,159, 58,188,123,247,238, 94, 0, -123, 11,143, 75,150,119,209,170,173,172,123,235, 30,210,245, 39,206,202,114, 76, 93,186,150, 87, 94,219,134, 3,218, 87,119,176, -188,190,125,245,100,241,135,196, 56,136, 68, 34, 72, 36, 18,196, 37,103, 97,249,150,211, 50, 13,203,246,248,204,190, 40, 50, 53, - 53, 21,105, 52, 26,236,220,185, 19,113,113,113,237, 40,165,113,132,144, 61, 67,135, 14,221,214,164, 73,147,250, 47, 95,190,140, -204,203,203,155, 70, 41,125, 93, 22, 73,181,106,213,218,217,216,216,144, 71,143, 30, 97,242,228,201,234,233,211,167, 11, 70,141, - 26, 69,164, 82,105, 85, 45, 89, 0, 0,103,103,103,207,126,222,237,209,161,219,148, 0,181, 50,235, 94,204,235, 35, 1, 28,250, -208,168,101,243,166, 85,170, 79, 3, 12, 48,192, 0, 3,254,127,160,188,197,240,229,102,163,246, 4,120,238, 86,152,212,200, 73, -240,193,247,215,233, 52, 55, 42,144, 42,158,236,165, 57,231, 39,208,203, 27, 70,209, 43,219,103,209, 41,222,141,230, 86,141,230, - 0, 0, 32, 0, 73, 68, 65, 84,104,125, 91,242,193,221, 10,147, 60, 1, 94,121,217,189,123,213,131,182, 91, 29,208,110,117, 64, -189,221,161, 5,176,164, 69,139, 22, 23,124,218,128,210, 87,199, 41,125,117,156,250,180, 1, 5, 48, 25,128, 68,223,140,225, 0, - 28, 0,236,107,217,178, 37,115,231,206, 29, 26, 49,184, 43,125, 94,223,154, 78,155, 54,141,254,252,243,207,116,196,136, 17,212, -198,198,134, 65,190,191,212,161, 34,206,190,125,251, 58, 83, 74, 81,189,122,245,106,173, 26,212,253, 16,114,219,143,222,243,221, - 70,255,240, 25, 64,219, 54,105,144,110, 95,191, 83,176,177, 67,189,230,250,102, 54,183,183,183, 95, 76, 41,237, 65, 41,117,160, -148,194,205,205, 74,210,162,126,221,164,224, 91,126,244,254,209, 29,244, 15,159, 1,244,155,166, 13, 51,156, 27,120,189, 54,178, -173,223,166,170,217,210, 75, 45,111,227,250,233,118,117,219,191, 40,171,188,197, 57,107,181, 25,114, 49, 33, 41,133,254,253,247, -223,244,202,149, 43,244,254,253,251,212,247,212, 69,234,210,122,112,158,117,147,239, 59,124,110, 86,119, 0,230,222,222,222, 52, - 50, 50,146,246,236,217,147, 2, 48,175, 10, 39,128, 11, 49, 49, 49, 52, 44, 44,140, 46, 89,178,132, 2, 56, 60,117,234, 84, 69, -118,118, 54,237,218,181,107, 28, 0, 14, 74,244, 69,125,203, 89,219,213,105,125,255, 62, 29, 87,248, 76, 30,232,249,185,245,249, - 5,179,194, 27, 56, 13,156, 6, 78, 3,231, 63,158,243,127,249, 85,160, 67, 38, 22,251,219,162,240,179,114, 45, 90,119,243,173, - 1,123,155,216,145, 99,107, 55,108,159,187,115,239,225,249, 11,103,140, 55,233,232,209, 13,161,183, 14,225,236,165, 83, 50,165, - 74,189, 65,192,197,166,208,116, 90, 97, 28,138,203,175, 41,191, 20,235,145,216,178, 14,138, 98, 48,189,149, 2,148,210, 61,149, - 84,146,201, 0, 38, 18, 66, 54,121,121,121,173,153,208,161,205, 0,159,246, 93,160,213,106,225,235,235,139,247,239,223,159, 3, -176,148, 82,170,151,197, 45, 52, 52, 52,189, 81,221,154, 51, 45,141, 5,243,167,141,232,111,147,246,238, 21, 18,194,159, 3, 0, - 84, 42,133, 54,249, 77, 64,179,202,148,207,216,216,248,111, 27, 27,155, 8, 27, 27, 27,169, 78,149, 55,209,136,103,182,108,202, -176,126,182, 25, 49,175, 17,255, 50,223, 51,170, 82,202, 53,241,111,252,235, 87, 69, 73,215,172, 89, 83,100,194,199,164, 82,203, -171, 86,106, 63, 68,134, 55,215,135, 71,174, 82,175, 93,185,217,247,187,213,243,199,136,204,204,204, 16, 20,246, 22,203,126, 63, - 33, 83,168,181, 61,210, 66,206, 63,252, 66,170, 31, 90,173, 86,239,141, 14,101, 96, 97,179,102,205,234,173, 89,179,198,109,244, -232,209,248, 92, 75, 86,113,188,139, 78, 88,212,185,115,231,134,111, 35,130,188, 44,141, 5,199, 62,167, 62, 13, 48,192, 0, 3, - 12,248,127, 3,111, 74,233,190,194, 8,241, 5,174,196,231,250,184, 14,243,133, 71, 10,149, 3, 88, 85,219,142,236, 89,188,102, -243,114, 14,217, 50,134,165,244, 16,195,193,202,168,116,154,246,153, 19,175,220,187, 62, 97,190,251,126, 4, 15, 0,248, 60, 48, -159,193, 21, 9, 96, 32, 33,164,245,254,135, 79,126, 42,120,123, 53,165,180, 82,190, 92, 83, 30,194, 60, 26,214,118,234,216,162, -145, 17, 87,167, 64, 66,248, 59,100,202,148,184,249,242,125, 22,135,114, 14, 85,182, 92, 81, 81, 81,119, 1,160,113,221,154,225, - 29, 27,214,113,233,212,178,145,152, 79,212, 72,120, 21,132,108,133, 26, 55, 94,190,207, 6, 33, 85, 94, 80,253,165,202,251, 33, -228,194, 83,155,166,253,187, 18, 66,110, 45,241, 25, 46, 90,254,251,201, 47, 42,178, 0,200, 19, 19, 19, 51,228,114,185, 85, 82, - 82,146, 26, 85, 12, 18, 71, 41,125, 75, 8,105, 50,107,214,172, 85,243,230,205,155,255,235,175,191, 10,170,178, 38,171, 44, 72, - 19,223,159,239,212,232,203,181,191, 1, 6, 24, 96,128, 1,255,124, 20,174,211, 42,185, 94,171, 82,225, 29,162, 82,104, 26,128, -105,117,234,144, 57,239,222, 81,245,151, 42, 92,105,150,174,207, 20,111, 79, 1,244,169, 50, 1,135,228, 62,142,124,159,247,119, -228,251, 60,176,148,178,148,170, 56, 28,196,203, 52,154,181,111,162, 18,174,127, 70, 43,232,158,190,141, 83, 60,123, 23,175,164, - 44, 75, 89, 74,213,132,224,131, 86,203,174, 13,139,138,189,248,223, 80,222,180,144,243, 15,237, 27, 14,232,248,240,239,176, 57, - 50,153,102, 71,218,171,243,129, 95,176, 93,180,132,144,145,237,218,181, 27,171,211,233,246, 80, 74,181,159,193,165, 6,176,144, - 16,114, 46, 52, 52,244,116, 96, 96, 96,242,151, 16, 89, 95,181,253, 13, 48,192, 0, 3, 12,248, 71,162,202, 73,165,203,194,151, - 20, 89,255,141, 8,141,140,105,249, 53,120,195, 34, 99, 26,255, 47,148,247,195,171,115,207, 0, 12,251, 74,157,241, 6,128, 27, - 95, 82, 84, 19, 66, 92, 1,112,191,136,200,250,138,237,111,128, 1, 6, 24, 96,192, 63, 19,159,157,235,208, 0, 3,254,203,159, - 36, 40, 0,198, 80, 19, 6, 24, 96,128, 1, 6,252,135,230,161, 50, 45, 90, 4, 64,215, 50,190,116,171, 18, 74,174,107, 21, 10, -117,203,192,105,224, 52,112, 26, 56, 13,156, 6, 78, 3,231,255, 47,206,127, 34, 8, 33, 14,200,143, 86, 95, 20,181,190, 72,124, -125,229,237,142,134,173,175, 6, 78, 3,167,129,211,192,105,224, 52,112, 26, 56,255,233,225, 29, 38, 22,255, 91,252,197, 49, 24, -252, 12, 48,192, 0, 3, 12,248,138, 79,250,162,130, 68,242, 85,250,220, 0, 3,254,135,250,122,209,174,195,226,107,182,120, 85, - 32,170, 91, 96, 9,123,251, 21, 11,235,227,224,224, 48,177,105,211,166, 13, 4, 2, 1, 39, 55, 55,119,165,191,191,255,138,146, -231,117,106,196,127,198,229,192,185,216, 55, 1,194, 5, 56, 28,232, 40, 18,238, 5,203, 91, 25,154,254,191,186, 83,214, 48, 54, -179,249,139,112,184, 66, 29,163,129, 78,171, 1,240,175,116, 76, 44,203,188,103,212,202,238,101,125,223,161,249, 0, 23, 70, 71, -215, 3,236, 46, 2,206, 20, 10,118, 55,161,156, 41,148,131, 93,132,197,100,240,180, 27,192,240,231,241, 4,188,165, 73, 65,103, -226,255, 9,117,246,231,159,127,114, 63,231,251,131, 6, 13, 42, 53,129,168,147,147,211, 37,177, 88, 92,167,172,239,201,100,178, -228,164,164, 36,175,127,120,127,236, 4, 96, 59,128, 70, 37, 62,122, 13, 96, 38,165,244,246,231,254, 70,103, 66,120,118,192, 36, - 1,176, 0, 0, 52,192,111, 41,192,222,187, 95,104, 35,199,151,128,173,173,237, 61, 30,143,231, 38,147,201,100, 57, 57, 57,181, -205,204,204,162, 76, 76, 76, 76, 24,134,137, 76, 77, 77,237, 84,201, 58,157,138,130, 84, 90,132,144,249,148,210, 93,149,249,220, - 0, 3,254, 87,240, 89,187, 14, 9, 33,238, 0, 60, 11, 94,157, 90,183,110,109, 39,147,201, 64, 8, 73, 1,112, 15, 64, 0,128, - 0, 74,233,155, 47, 81, 88, 46,151,187,113,235,214,173,115,167, 79,159, 94,148, 12, 58, 36, 36,164,244,115, 57,112,190,227,119, -203,246,105,232, 27,180,238, 58,168, 64,104,113, 0, 89, 50,188,186,181,169,234, 96,107,106, 97, 97,177,146, 16, 50,152,195,225, - 84, 56,169,177, 44,171,163,148,158,145, 74,165,203, 41,165,185,149,249, 45,137,137,145,150,209,233, 74,253, 13, 30,151,171,203, -147, 41,203, 12,123, 97,101,101, 21,200,225,112,106, 21, 79,152, 93, 80,254, 82,255, 47,126,204, 48, 76, 66, 90, 90, 90, 43, 61, -234,194,136,195, 19,204, 36, 68,208, 13, 28,214, 29, 32, 32,224,188, 97,117,234,155, 44,163,217, 74, 41, 85,126,142,200,114,168, - 94,251,254,236,165,235,157,195,194, 95, 99,137,207, 8,252,186,253, 48, 22,207, 28,139,173,251, 78, 96,230,196,225,104,216,176, - 81,185, 28, 58, 74, 86, 46,155, 57,210,107,205,214,227,173,151,206, 28, 97,178,102,235,241,214, 75,103,141,144,172,217,118,188, -213,210, 89, 35, 37,171,183, 29,107,245,211,172,145,102,107,182, 29,215, 0, 24, 87,149,114,142,112,119,146, 17,134, 41,245,105, -155,242,120,170,227,111, 18, 77,254, 19, 55,245,232,209,163,155, 42, 20,138,160, 17,221, 90,172,111,238,238,148, 88,218, 57, 25, - 31, 18,157,162, 34,158, 47,226, 11,140, 91,246, 91,116, 56,164, 60, 62,145, 72, 84,235,245,235,215,110, 44,203, 66,167,211,129, - 97,152,162,191,106,181, 26,157, 58,117,250, 34, 27,103, 8, 33,125, 0,172,204,191, 89,177,142, 82,122,250, 51,184, 36, 60, 30, -111,182, 80, 40,244,100, 24,166, 1, 0,240,249,252,112,149, 74, 21,192, 48,204,102, 74,105, 94, 37, 41,183, 36, 38, 38, 54,148, - 72, 36,208,104, 52, 69, 9,232,185, 92,110,125, 23, 23,151,157, 0,220, 62,247,250,237,128, 73,237, 61, 60,182,142,154, 59,151, -171,184,119, 15, 91, 15, 30,220,130,156, 28, 0,216, 89,209,119, 69, 34,209,117, 14,135, 83,163, 50,191,199,178,236,123,149, 74, -213,189, 50,223,225,241,120,110, 73, 73, 73,182,142,142,142, 0, 0, 19, 19, 19,147,226,199,149,177,100, 1,216, 64, 41, 53, 6, - 0, 14,135,179,181,125,251,246,237, 8, 33, 12, 0,202,178, 44,135, 16, 50,156,101, 89, 94,193,249, 27, 8, 33, 7, 41,165, 42, -195,180,109,192,255,162, 53,171, 44,177,197, 43,231, 75, 87, 0,120,182,110,221,218,120,216,176, 97,240,244,244,132,155,155, 27, -140,140,140,242, 7,241,140, 12,187, 23, 47, 94, 12,185,119,239,222, 16, 63, 63, 63, 16, 66, 20, 0, 30, 80, 74, 75,189,169,187, -246,233, 56,221, 72, 34,218, 6, 0,105, 9, 25,201, 9,209,169,219,146,147,147, 55,208, 98,217,168, 9, 33,181, 71,141, 26, 53, -103,198,140, 25,184,116,233, 18, 78,156, 56, 1,149, 74,133,220,220, 92,248,251,251,151, 94, 80,121, 42,164,254,235, 1,147, 24, - 32, 46, 0, 16,219, 2, 38,118, 85,174, 44, 11, 11,139,149, 51,103,206,156,213,176, 97,195,162, 40,230, 90,173, 22, 12,195, 64, -171,213, 66, 42,149, 98,206,156, 57,133, 10, 22, 44,203,226,234,213,171,211, 39, 78,156, 8, 0,179, 75,227,108,215,202,229, 25, -135,112,156, 11,109, 53, 84,167, 75,120,244, 60,190, 21,163,211,113,149, 74, 77,169,153,202,141,140, 4,229,138, 60, 62,159,239, -252,234,175,191,108, 57, 66, 33,168, 78, 7,176, 44, 40,203, 2, 40,246,162,249,239, 81, 29, 11,170,213,129,101, 88, 48, 10, 21, -218, 76,157,170, 79,167,105,207, 23, 26,159, 24, 57, 97,174,125,219,111,190,225,215,172,238, 8, 70,199,226, 93, 76,130,125,208, -179,199, 29,206, 28,217, 57,133, 16, 50,156, 82, 90,165, 56, 91, 66,177,217,141, 29,187,247, 59, 63,125, 17,134,219,119,238,225, -150,127, 0, 0,224,250,157,124, 58, 14,135, 83, 81,249, 44,172,220,188,154, 78, 31,251,189,201,234, 77, 7, 68,211,199,126,207, -251,215,223,253,162,233, 99,251,241,214,108,222, 47,154, 62,182, 31,255,151,223,118, 52, 39,132, 88, 80, 74,165,101,241,149,213, - 70,132, 97, 68,199,162, 82,184, 0,144,182,103, 15,180,169,169,112, 92,190, 28, 0, 48,178,182,157,222,238, 14, 27, 27,155,103, -124, 62,223,185,162,243,180, 90,109,133, 34,120,244,232,209,205, 20, 10,197, 51,134, 97, 40,143,199, 91, 52,162,255,119, 23,122, -116,108,150, 81,252,156,144,144, 96,171,181,107,255,250,254,116, 80, 46, 29,210,210, 52,232,210,198,209,173,122,207, 59, 28, 92, -206,132,204, 81,169, 84,136,140,140, 68,241, 36,239,197,117,109, 21, 7, 31, 14,128,173, 86, 86, 86,109, 51, 50, 50, 70, 2, 88, -146,147,147,211,148,203,229,194,210,210,114, 9, 33,228,157,185,185,249,129,236,236,236,192, 2,171, 17,171, 39,111, 39, 51, 51, - 51,223,243,231,207, 91,180,104,209,130,147,158,158, 14, 87, 87, 87,100,102,102,182,185,119,239, 94,203,113,227,198,141, 35,132, -252, 72, 41,189, 87,137,226,214, 19,139,197,116,212,168, 81, 68,167,251,215,229,254,241,199, 31,232,222,152,169, 51,185,135,137, - 92,169,166,217,183, 35,205, 39, 11, 4,130, 7,177,177,177,217,149,173, 15, 1,176, 96,212,220,185, 92, 73,108, 44, 36,193,193, - 24,153,147,195,251, 53,223,186, 85,161,208,226,112, 56, 53,124, 79, 28,114, 19, 10,133, 96, 24,166, 72, 12, 22,142, 81, 90,173, - 22, 26,141, 6, 90,173, 22, 58,157, 14, 90,141, 22,235, 86,255, 86,229,177, 80, 44, 22,139, 29, 29, 29, 83,196, 98,177,248, 75, - 76, 68, 34,145,136,119,228,200,145,225, 66,161, 16, 0,160, 86,171,209,184,113, 99, 98,152,162, 13,248, 39,137,173,210,172, 92, -229, 61,165,254, 31,123,223, 29, 22,213,209,182,127,207,246, 93,150,222, 65, 4, 21, 68,105,130, 29,176, 96,141, 49,160,177,198, - 24, 91, 18, 19,223, 68,163,177, 36, 98,139, 93, 72,172, 49, 49, 81,147, 24,203,107,195, 46,182,216,130,137, 93, 17, 5, 84, 84, -164, 9, 8, 75, 93, 96,251,158, 51,191, 63, 40,174, 8,236, 98,242,254,190,247,251,178,207,117,237,181,231,236,153,243,236,156, -153, 57, 51,247,220,207, 51,207, 12,150,203,229, 96, 24, 6, 86, 86, 86,224,114,185,245, 25, 21, 12, 28, 56, 16,189,123,247,198, -187,239,190,139,212,212, 84,201,187,239,190, 59,176, 81,102, 96,118, 20, 90,250,186,212, 12, 38,172,219,229, 19,119, 98,127, 89, -126,192, 9,192,108,131,100, 31, 78,153, 50,133, 20, 23, 23, 99,244,232,209,151,212,106,245, 80, 74,169,188, 81, 70,131,197,179, -190,239,142, 3, 75,137,100,253,245,159,136, 70,165,164, 28, 14, 71, 89,107, 58,124,205,130, 26,237,238,238,142,189,123,247, 66, -163,121, 53, 92,152,181,181, 53, 82, 82, 82, 12, 25, 56,132,134,134,114, 9, 33,163, 27, 3, 90,132,112, 60, 46,223,204,116,174, - 61,143, 26, 24, 40, 8,235,226, 85,224,228, 96, 69, 1,144, 5, 11, 22,212, 1, 55, 0, 88,186,116,169, 41,249, 4,135,207,135, - 44, 33,225, 69, 71,204,227,128, 35, 32, 32,124,128,195,171,182,162,130, 2,148, 1, 88, 61,192,234, 0,177, 91, 75, 83,116,119, -107,225,233, 27,191,106,221, 15,182,106, 29,197,222,163,231,145,145,241, 20, 92, 14, 7,222, 62,190,120,163, 79, 47,126,231,174, - 97, 45,191, 89, 50,251, 56, 33,100, 48,165,244, 70,179, 11,154,165, 98, 31, 79, 71,252,252,203,109, 56,217, 89, 98,244,176,183, - 32, 17,139,240,245,119,191, 98,197,188,105,240,245,246,194,150, 13, 43, 27,189,221,198,198,102, 89,167, 14,126,222,191,238, 63, -141,136,222,225,188,237,251,207,160, 79,239, 30,188, 95,247,159, 70,159,136, 94,188,237,251, 79,163, 79,239,158,252,237,251, 79, - 35,180, 75, 7,159, 43,197,119,151, 1,152,214,248, 51,215,171,163, 55,170,235,200,151, 39,168, 27, 8, 50, 63,249, 4, 0,234, -128, 86,115,132,207,231,123,228,229,229, 57, 27, 75,103,140, 53,168, 97,178,110,233,245,122, 20, 22, 22,146,178,178, 50,106,107, -107, 59,236,244,150,249,135, 7,245, 12, 41, 1,128,164,164, 36,251,152,152, 85,195,246,221,146, 67,121,237,123,242,239, 99, 9, -236,184,161, 17,183,142,198, 78,234, 60,106,212,168,196,134,244,170,213,234,140,142, 29, 59,210,154,227, 22, 34,145, 72, 80,175, - 77,184,251,250,250,190,194, 90,155, 96, 82,252,246,234,213,171,211, 2, 2, 2,224,231,231,119,165,123,247,238,214, 82,169, 20, -167, 79,159,134,191,191,127,160,181,181,245,245,184,184, 56,254,220,185,115, 67,182,109,219, 6, 0,159,153,208, 62, 7,244,237, -219,119,111,124,124,188, 88, 32, 16, 64,169, 84, 34, 37, 37, 5, 54, 54, 54, 16, 10,133,120,251,237,183,185, 61,122,244,112,232, -211,167,207,193,154,201,128,201, 43,160, 84, 42, 21,157, 63,127, 62, 44, 44, 44, 96, 97, 97, 1,169, 84, 10,169, 84, 10, 75, 49, -200,230, 25,158,146,233, 91,203, 36, 51, 23,111,142,221,249,195,146,139,158,158,158, 95,101,103,103,151, 53,183, 45, 40, 47, 93, -130,101, 82, 18, 96,240,238,154, 42, 54, 82,123, 68, 71, 71, 27, 99,164, 32, 16, 8, 16, 30, 30,110, 84,159,131,131,195, 33, 30, -143,231, 82,111,112, 16, 71, 71, 71, 51,105,105,105, 82, 14,135, 35,101, 89, 22,209,209,209,140, 94,175, 23,187,184,184, 92, 97, - 89,182, 64, 38,147,141, 48,166,155, 82,170, 38,132,124,193,225,112,190, 21,137, 68,188, 86,173, 90,101, 45, 90,180,232,106, 13, -155, 9, 74, 41,167, 85,171, 86,221, 36, 18,137,151, 90,173,214, 3,248,194,204,102,153,165, 9,233, 92, 77, 10,215,137, 6,128, -176,150,192,175, 30,237,224, 88,239,119, 0, 40,170,153, 40,186, 52,114, 94, 12, 32, 21, 64,123, 0,206, 53,215,110, 2, 40,105, -110, 6,155,100,180, 8, 33,212, 32, 97,221,192, 98,101,101,133,155, 55,111,130, 16, 2, 43, 43, 43, 88, 91, 91,195,198,198, 6, -114,185, 28,169,169,169,120,240,224, 1, 50, 51, 51, 65, 8,129,183,183, 55,106, 95, 32, 3, 93,117, 29,220,238,181,241, 16, 91, -138, 64, 8,208,169, 95, 48,130,123, 7,161,235,141,244, 25,238,238,238, 91,243,242,242, 30, 17, 66,120, 65, 65, 65, 31,134,134, -134, 98,221,186,117, 80,171,213,235, 26, 2, 89,134, 58, 47,165,232,186,212, 12, 78,115,118,157,126, 98, 49,254, 77, 31, 69, 94, - 94,222,154,215, 40,156,151, 58,226,162,162, 34,147,247,226, 99, 89, 22,165,165,165, 77,234,172,207, 16,172,255,246,123,219,138, -242, 2, 44,255,122, 23,116, 58, 29,102,207,158, 13,150,101,235, 62,101,101,101, 38,229,147, 50,245, 72, 6, 78,245,135,112, 0, -194, 3, 60,199, 84,227,138,236,189,223,131, 80,128, 48, 0,234, 61, 87,125,157,132, 16, 49, 87, 32,217,183,228,235,141,182,137, - 15,158,225,232,249, 68,104,229,185,200, 79, 58, 12, 0,240, 14, 31,139,253,106, 46,186, 7,251,224,243, 5,223,216, 45,252,124, -194, 62, 66,136,159,161, 25,209,148,129,141, 82, 6,203,151, 45,195,214,141,235,240,205,186,141,144,151,151,129,207,119, 4, 0, -232,245, 12,152,122,207,246,202,179, 83,250,230,194, 57, 83,200,183, 63, 29, 68, 80, 91, 87, 28, 63,123, 5, 93, 2,189,112,234, -194, 13,132,118,104,141, 51, 9,183, 17, 26,220, 6, 9,215, 82, 48,123,234, 68,114,249,212,246, 55,155, 83, 71, 27, 54,124,111, - 91, 33, 47, 64,252,202, 29, 40,220,180, 9, 89,211,166,161, 91, 77,154, 27,132, 64,224,225, 1, 8,140,215, 81,125,185,127,255, - 62,212,106,117, 67,179,125,248,251,251, 27,173,119,165, 82,121, 91,175,215,211,130,130, 2, 82, 80, 80, 0,169, 84, 74, 82, 82, -146,153,192,192,160,225,244,193,129,159, 0, 32, 38,102,213,240,253,183,229, 80, 92,217, 8,229,213,239, 32,104,125,151,179,117, -233, 20,237,199,139,183,220, 54, 24,228, 94,202,103,126,126,254,224,218, 99,111,111,239, 7,105,105,105,237,107, 77,205, 53, 38, - 68,129, 94,175,247,173, 53, 39,234,245,122,168,213,106, 12, 24, 48,128,219,212,179,219,217,217,133,250,251,251, 35, 49, 49, 17, - 27, 55,110,180,239,219,183, 47, 30, 63,126, 12, 66, 8, 86,173, 90, 69, 2, 2, 2,248, 69, 69, 69, 24, 52,104, 16, 14, 29, 58, - 20,110,172, 60, 9, 33, 86, 82,169,116,219,241,227,199,197, 28, 14, 7, 21, 21, 21, 96, 89, 22, 61,122,244, 0,135,195, 65,114, -114, 50, 22, 44, 88,128, 67,135, 14,225,200,145, 35,146,206,157, 59,111, 35,132,248, 27,154,245,155,168, 35,170, 82,169,168, 72, - 36,130, 72, 36,130, 88, 44,134, 88, 44,134, 80, 40, 68,165, 10,248,120,125,150,154, 43,118,100, 3, 59,246,244,121,127,250, 42, -206,154, 69, 31, 92, 0,112,212,212, 54, 15, 84,251,100,125,251,235,175, 27,199,149,151,115, 0,224,103, 66, 88, 45,165,223,152, -242,190, 3, 64,165,170, 28, 94,222, 30, 56,184,239, 8, 70,142, 25,214, 32,200,226,243, 5, 16,240,249,176,182,151, 26,213, 41, - 16, 8, 92, 30, 60,120,224,192,231,243, 65, 41, 5,195, 48,208,106,181, 5, 11, 23, 46,116,138,140,140,180, 58,117,234, 20, 39, - 50, 50,146,181,179,179,171,186,113,227, 70,161, 94,175,119,232,213,171,151,201,109,158, 82,250, 67,199,142, 29, 59, 29, 62,124, -248,131,232,232,232, 91,115,230,204, 89,110,120,125,245,234,213,203, 78,158, 60,233, 53,124,248,240,157,119,238,220,249,161, 57, -125,200, 95,237,231,205, 58,255,251,116,158, 56,113,162,174, 35,142,140,140,172,207,118,186, 16, 66,226, 13,254, 63,170,246, 60, - 58, 58,122,126, 76, 76, 76, 10, 33, 36,222,240,247,218,116, 53,125, 71,124, 67,231, 53,247,218,207,155, 55, 47, 40, 54, 54,118, - 85, 88, 88,216,222, 43, 87,174, 60,109, 46,208, 50,234,163, 85, 11,174, 12, 1, 87, 61, 5,144,203,229,144,203,229,200,201,201, -193,230,205,155,107, 94,104, 62,120, 60, 30,120, 60, 94,157, 63, 67, 99,114,238,248, 31,223, 1,248,174,115,231,206,252,123, 87, -227, 78,125,185,117,122,255, 46, 3, 58,113,111,159,191, 55, 10,192, 10, 0,131, 39, 78,156,232, 8, 0, 59,118,236, 40, 2,112, -234,127, 2, 50, 83, 74,227, 30, 61,122,244,185,155,155, 91,157,143,138,161,249, 80,175,215, 67, 44, 22,163,214,151, 69,165, 82, - 97,243,230,205,122, 74,105, 92, 19, 58,145,150,114, 1,143, 82, 46, 86,223,199,178, 96,153, 23,247, 47, 89,178,196,112,137, 40, - 62,169, 97, 78,140,130,188,134,202,156,214,251,174,247,251, 43,224,236, 21,243,132, 96,250,168, 9,211,220, 88,194,195,177, 11, -119,192,231,243,193, 26,176,153,124,110,245,108, 57,229,113, 30,220, 93, 2, 49,116,236, 20,215,195, 59,191,159, 14,224,235,230, -150,181, 95,112, 24,102,124,254, 57,126,218,186, 21, 11, 22, 47,171, 67,233,122,134,129,222,104, 62, 57,156, 30, 93, 2, 80, 89, -252, 12, 92, 46, 23,225, 29,125,192,229,114,209,171, 75, 59,112,185, 92,244,236,218, 30, 60, 30, 15,125, 66, 3,208,182,109, 91, -240,120, 60,142,145,122, 71, 90,202,121, 60, 74,249,221, 0,244, 82, 80, 0,218,252,252, 87,210,235,242,243, 65, 61, 29,154,219, -182,240,225,135, 31,150,229,228,228,104,235, 95,107,217,178,165,224,210,165, 75,182,141,152,237,234, 68, 34,145,116,230,241,120, -183, 75, 74, 74, 88, 11, 11, 11, 14,203, 50,108, 96, 96, 16,247,244,150,249,135,107,211,204,155, 55,255,240, 59,157,173,135,239, -138,139,167,130, 86, 61, 9,225,139,244, 31, 45,222, 34,224, 11, 36, 38, 69,188,175, 53, 35, 62,124,248, 16,198,242, 99, 56, 49, -107, 72, 74, 75, 75, 39,250,251,251, 95,250,238,187,239,236, 9, 33,248,227,143, 63,192,229,114,235, 62,233,233,233,224,112, 56, -248,242,203, 47,181,114,185,124,178,177,188,241,120,188,207, 15, 30, 60,104, 35, 20, 10, 81, 81, 81, 81,247,222,112,185, 92, 60, -120,240, 0,107,214,172,193,196,137, 19,145,157,157, 13,119,119,119,204,158, 61,219, 50, 54, 54,246,115, 0,203, 76,120,244,187, - 26,141,166,139,133,133, 5,196, 98, 49,106, 1, 23, 0,252,150,194, 79, 86, 40, 20, 29, 28, 29, 29, 93,157, 18,226,143,133,247, - 29, 26,226,224,228, 22, 86, 11,180, 76,149, 39,192,214, 12,134, 89, 56,248,240, 97,231,203,135, 15,179,215,142, 31,127, 38,170, -168,216, 98,114, 27,210,113,144,149,254, 12,157, 59,119,198,237,219,183,209,185,115,103, 67,208, 4,161, 80, 8,129, 64, 0,129, - 64, 0, 71, 59,147, 92, 40, 40,135,195,193,229,203,151,193, 48, 12, 52, 26, 13, 52, 26, 13, 2, 2, 2, 74, 46, 94,188,104, 9, - 0,233,233,233,116,252,248,241,101,215,175, 95, 71,199,142, 77,239,167,238,234,234,122,137,203,229,182,170,247,174,218,141, 24, - 49, 2,165,165,165,111,141, 24, 49,162,103,205,111,185, 7, 14, 28, 24, 15, 0, 66,161, 16, 28, 14,135,129, 89,254,241, 82, 11, -174, 12, 1, 87, 3,125, 78, 84,253,115, 66, 72,124, 76, 76, 76, 84,253,223, 12, 65, 85, 67,199,134,247,198,198,198,174, 50,208, -173,124, 13,107,152,113, 31, 45, 66, 8, 53,214,105, 54, 37,198,128, 86,173,220,190,125, 91,215,162, 69,139,159, 30,221,201,236, -239, 19,236, 13,137, 84,244, 6, 33,228, 59,145, 72, 52,107,194,132, 9,184,118,237, 26,146,147,147,127,249,171,219,169,116,232, -208,225,140, 72, 36,242,106,196, 76,146,117,239,222,189, 65,141, 12, 12,139,107,124,206, 26,117,134, 55,244, 23, 51,116,134,111, -180, 97,176, 20, 58,173, 14, 85, 10,229,139, 65,188, 6,104, 85, 85, 85, 97,204,152, 49, 47, 49, 90,133,133,133,166, 84, 42,214, - 28, 61,138,179,113,113,120, 43, 36, 4,135,110,220, 64,236,132,247,224,231,213, 2,148, 33,160, 4,200,222,243, 61,138,229,149, -216,125,254, 50, 74, 42, 20, 24,215,171, 23,124,173, 29,155,214,203, 23, 12,236, 22, 26, 38, 56,119, 37, 21,124, 62, 15, 28,176, -160, 58, 5,220,253,251,128,203,225,192,198,165, 53, 4,124, 62,248,124, 30,210,115,138,224, 31,212, 85, 24, 47, 20, 15,124, 29, -160,213,210,171, 53, 24,134,193,196,137, 19,177,119,239, 94, 56,184,122,193,166,101, 16, 86,172,219,138,183, 6,244, 50,250,252, -181, 51,120, 30,143, 7, 46,151,251,202,119,237,177, 41,236, 36,101, 41,180,245,235,136,165, 0,165,240, 88,185, 18, 30, 43, 87, -226, 70,205,127, 6, 84, 85, 65,169, 84, 2,221, 3,155, 5,178, 52, 26, 13,114,114,114,180,249,249,249, 46, 13, 12, 80, 5, 26, -141,198, 40,176,217,190,125,251,221, 73,147, 38,117,177,183,183,191,117, 55, 41, 73, 23, 28, 18,194, 63,181,121,254,145, 90,179, - 33, 0,132,132,132,148,204,159, 63,255,200,248,209, 81,195,126,136,126,151,249,116,217, 78,158, 72, 34,233, 18, 53,167,105,135, -120,131,247, 35, 35, 56, 56,152,154,146, 86,161, 80, 60,111,162,142,134, 0, 88,218,169, 83, 39,235,190,125,251,226,210,165, 75, - 24, 57,114,164, 90,171,213, 62,170,233, 84,219,237,222,189, 91,152,154,154, 10, 39, 39, 39,126, 86, 86,214, 54, 66, 72,147, 14, -242, 66,161,176, 79,215,174, 93, 57,106,181,250, 21,144, 21, 27, 27,139,177, 99,199,162, 93,187,118, 96, 89, 22,149,149,149,232, -219,183, 47,127,227,198,141,125, 76, 4, 90, 51,252,252,252,214,160,122,213,161, 97, 95,120, 31,192, 23, 53,108,247,243,168,145, - 19, 83,122, 13, 24,209,165, 85,219, 32, 55, 99, 10, 93, 92, 92,230,113, 56,156,119, 88,150,229,202,229,242, 28, 13, 33,109, 3, -188,188, 92,122, 12, 27,134,114, 62,159,251,237,249,243,156,130,138, 10, 75, 0, 38,153, 32, 85,186, 42,120,121, 87,187,250,141, - 28, 51, 12,183,111,223,198,168,119,135, 67, 32, 16,128,199,227, 87,191,155,130,106, 70,203,214,209,218,164,182,169,211,233,234, -250,240, 90, 63, 47,173, 86,139, 90,215, 44, 11, 11,139,186,107,106,181,186,209, 9,121,141,248,238, 95,182,200, 89, 98,109, 3, - 70,167, 67,224,176, 81,117,109,250,250,207, 63, 72,192,178,146,178,172, 12,124, 22,119,156, 15,179,152,165, 17, 86,171, 1, 54, -203,176, 95,137,175, 15,182, 94, 87, 8, 33,241,209,209,209,243, 1,208,232,232,232,249,181,231, 49, 49, 49, 74, 0,185,175, 3, -182, 26, 98,185,120,127, 7,200,170, 53, 47, 52, 37,253,250,245,251,204,202,202,106, 35, 0,116,233,210, 5, 57,215,114,145,115, - 45, 23,254,237, 3,123,116, 10,233, 82, 62,118,236, 88, 56, 56, 56, 96,206,156, 57, 20,192, 47,205,253,255,244,180, 20, 75, 0, -212,221,221,125, 14, 0,184,187,187,135,220,184,113,195,233,230,205,155,232,218,181,235, 11,234, 94,171, 69,207,158, 61,155, 26, - 16, 43, 80,237,107, 53,243,239, 99,201, 88,104,181, 90, 40, 20, 74,104, 52, 90,232,117, 44,244,122, 61, 58, 7, 90, 97,231,214, -232,234,223,244,181,236, 89, 53,107,230,225,106,133,206, 29, 92,117, 28, 14, 81,222, 76,202,111,176,199,212,104, 52,184,155,149, -133,164,204, 76, 0,192,208,152,166, 29, 95,119,158,191,132,128,128, 0, 99,185,245,241,112,119, 69,222,217,187,213,157,183, 50, - 7, 55,255,220, 15, 43, 43, 75, 0, 64, 96,196, 56, 8, 4,213, 64,171, 74,169,133, 99,251,150, 32,148, 54, 26, 22, 64,106,239, -118,134, 39, 16,123, 81,134, 5,165, 44, 40,203,128, 82, 22, 34, 43, 7,139,207, 62,249, 0, 44,203,160, 91,183,110, 32, 92, 46, - 24,157, 26,163,135, 12, 68,105,121, 5, 28,108, 77, 27, 36, 4, 2, 1, 34, 34, 34, 36,141, 93,127,252,248,177,210, 16,152, 53, - 93, 71, 58, 84, 85, 41,161, 86,171,161,213,232,161,213,233,193,180, 17, 96,249,194,247,160,215,234,161,120, 55, 12, 90,157, 30, -236,231,195,161,213,232,144,109,193,225,132, 4, 56,233, 56, 32,202,196,212, 66,107, 99, 64,171, 22, 28, 52, 38, 13,249, 4, 54, - 2,182,146, 38, 77,154,212, 57, 56, 36,228,246, 59, 3, 66,214,222, 75, 78,201,187,151,156,242, 74, 58,175,118, 33, 25,159,198, -238,157,205, 23, 72, 58,155, 10,178,128,151,205,136,127, 81,230, 87, 84, 84, 4, 91, 90, 90, 34, 45, 45, 13, 92, 46, 23,132,144, -199,148,210, 96, 0,152, 50,101,202, 19, 30,143,231,205,229,114,177,105,211, 38,194,227,241, 58,132,133,133,205, 7,176,191,137, - 9,157,191,149,149,213, 75,108,150, 64, 32, 64,116,116, 52,198,143, 31, 95, 7,178, 4, 2, 1,182,111,223,142, 46, 93,186, 64, -163,209,248,155, 8,134,111, 2,232,101, 2,227, 71,106,192,185, 81, 48,170,215,235, 39, 21,191,243, 78, 91, 36, 36,160,135,183, -119, 64,231,206,157,161,213,190, 32, 52,189,189,189, 91, 86, 84, 84, 60, 39,132,252, 27,192, 15,148,210, 59, 77,130, 34, 21,139, -172,244,103,181,147, 86,116,235,214,173,142,193, 50,100,179, 4, 2, 1, 36, 66,203,102, 1, 45,150,173,238,151, 42, 42, 42, 56, - 9, 9, 9,142,126,126,126, 4, 0,252,252,252,200,157, 59,119,236, 45, 44, 44,138,124,124,124,140, 78,128, 37,214, 54,216, 62, -105, 12, 0,224,171, 1,111,214, 77,140, 78, 47,157, 15, 62,159,143,254,115,230,191,210,238, 89,150,229,194, 44,102,144,101, 4, -100, 53,196,104,253,181,177,249, 5,163, 21, 19, 19,147, 18, 19, 19,243, 10, 59,214, 76,125,198, 25, 45, 83, 76, 1,198, 94,214, -198,100,221,186,117,232,208,161, 67,147, 3,209,198,141, 27,177,107,215,174,117,148,210,244,230,254,127, 84,255, 78,129, 88,127, - 56,197,187, 93, 32, 1,128,101,159, 15,225, 84, 85, 85,225,242,229,203,176,177,177,193,227,199,166,133,253, 34,132, 88,217,216, -216, 44,229,112, 56,163,185,245, 87, 0, 52, 12, 48, 25,150,101,227,202,203,203, 27, 13,239, 64, 41,160,213,233, 81,165, 80, 65, -163,209,224,243, 47,191, 55,154,143, 24,128,104, 53, 21,188,136,222, 97,146,198, 24,157,110, 29,250, 96,234, 4,203, 87, 6,111, - 46, 7,224,112,128,142,221,170, 25,151, 59, 55, 82,192,178, 0,195, 2,142,206,118,248,101,207,218, 38,139, 64,207,176, 53,179, - 99, 6,149,106, 6,254,161, 81,120,118, 63,161,142, 65, 18, 10,170, 77,198, 2, 62, 31, 44, 37,213, 81, 31, 26, 3, 66, 66,137, - 87,105,126,186,239,214,248,123,248, 56,170, 3, 14,156,187,139, 81, 3,130,113,241,122, 42,250,118, 15, 64,202,163, 76, 4,250, -182,194,166,109,113,160, 20, 21, 63,174, 95,241,252,197,128,166,207, 50,133,209,186,118,237,154,178, 62,139,101,248, 77,141,143, -135,160,244, 5,163,165, 84,169, 49,103,158, 73,225,124,170,235,168, 87,168,196,148,196, 77, 49, 86,166, 0,177,250,204, 22,140, -132,103,105, 3,160, 11, 48,247,127,178,227,100, 24, 6, 39, 78,156,168,171,143,134,234,209,176,238, 76, 0, 57,200,202,202, 66, - 74, 74, 10, 66, 67, 67, 81, 94, 94, 14, 62,135,131,217,247,238, 33, 96,194, 4,104, 4, 2,176, 44, 11,161, 80,136, 41, 83,166, -152, 92,158,205,236, 77,107,252,220, 24,106,164, 47, 89, 27, 21, 21,213, 54,173,170, 10, 41, 15, 30, 96,192,146, 37, 0,128,147, - 39, 79,190,212, 38,102,205,154, 37, 76, 77, 77,253,240,214,173, 91, 31, 18, 66,214, 81, 74,103, 55,218,207, 82,117,157,143,214, - 59,239,141, 68, 91,191, 54,216,245,235,158,186,235,179,190,152, 1, 62, 95, 0,190,128, 15, 91, 27, 91,147,158, 70,167,211,213, -129, 86,133, 66,193, 57,121,242,164,199,192,129, 3, 5, 51,102,204, 32, 0,176,107,215, 46,206,119,223,125, 39, 61,123,246,172, -160, 69,139, 22,249, 70,193,165, 86,251, 74, 29, 19, 66,192,231,243, 33, 16, 10, 0,150, 5, 33, 68,186,122,245,234,101, 41, 41, - 41, 93,253,252,252,160, 86,171, 39, 16, 66, 18,205,113,180,204, 82,107, 54,108, 12,112, 53,228,107, 85,195, 74, 53, 38, 50, 67, -191,173,198,128,154,161,207, 22, 0,117,243,187, 5, 19,125,180, 26, 18, 46,151,107,148,173,226,112, 56, 70, 77,135,179,102,205, -130,149,149, 85, 99, 3, 16,189,119,239, 94,106,126,126,254, 86, 74,233,247,175, 83, 57,241,231, 19, 83,150,206, 28, 94,129, 26, -219,170,173,173,109, 81,191,126,253, 42, 1,104,247,239,127,121,130,172, 86,171, 27, 29,192,109,108,108,150,254,252,243,207,211, -135, 13, 27,198,169, 31, 98,192,208,188, 87,251,209,233,116,216,191,127,255,244,185,115,231,162, 49, 22,172,118, 16, 87, 84, 41, -161,172,113,132,126,146,124,192,212,218,107,244,146,165,173, 27, 60,218, 4, 55, 58,152,112, 4,213, 62, 68, 46,158, 47, 6, 48, - 43, 43, 49,152, 38,116, 18,194, 73,207,204,206,107,209,210,213, 30, 79,114,100,112,105,213, 1,165,185, 47,202,129,199,227,130, - 95, 99, 58,180,181,150, 66, 86, 88, 8, 14,135,219, 36, 48, 94,177, 59, 17,215,147, 51,113,240,220, 29,104, 85, 85, 88,191,227, - 52,180,234, 74,104, 85, 85,208,170,170,191, 87,205,253, 8,132,224,185, 86, 85,217,174, 57,245,206,227,241,208,189,123,247, 70, -129, 78,110,110,174,137,140, 22,173, 99,180,148,170,102,214,145,105, 47, 97,147,140, 85,237,245,215, 5, 6,181, 33, 31, 36, 18, - 73,151,237,219, 27, 15,227,208,144,184,185,185,157,178,180,180,108,109,106,250,102, 4, 47, 93,101,107,107,187,212,207,207,207, -127,253,250,245,124, 46,151,139,254,253,251,183,251,232,163,143,178, 0,160, 67,135, 14,238,181,125,204,167,159,126, 74,175, 93, -187,150, 92, 61,199,104, 92,132, 66,225, 3, 27, 27,155, 46,125,251,246, 69,121,121, 57,114,114,114, 32,149, 74, 17,176,118, 45, -238,125,250, 41, 66, 54,111, 6,167, 95, 63, 16, 66, 32, 20, 10,113,239,222, 61, 72, 36,146, 7, 77,128,161,238, 0,190, 1,208, - 3, 47,204,133, 20,192,101, 0, 95, 82, 74,175, 55,208,223,113, 0,128, 97, 89, 99,149,245,222,156, 57,115, 80,198,231, 3,145, -145, 16,164,167, 67,171,213, 34, 52, 52,180,142,101, 15, 13, 13, 5,143,199, 67,112,112, 48,220,221,221,177,105,211,166,247,240, -242, 74,236,151, 68, 85,169, 69, 86,250, 51,132,133,133,213, 49, 87,145,145,145,117,140, 22,159,207,175, 99,182, 8, 99, 28,184, - 18, 66,168,225, 36,153, 97, 24,194,227,241,120, 51,103,206, 36, 35, 71,142,164, 26,141,134, 21, 10,133,156,131, 7, 15,146,139, - 23, 47,242,170,170,170,140, 78,196,131,134,143,198, 87, 3,171, 73,209, 21,173,157,192, 23,240, 33, 20, 8, 48,231,193,179,186, -122,177,222,190, 87, 24, 27, 27, 59,202,207,207,175,218, 12, 15,240,204,113,180,204, 98,132,205,146,213, 3, 73, 26,131,115, 25, - 0, 82,115, 46, 51, 0, 84, 50, 84,175, 32,236, 90, 47,109,237,117, 77,189,239,218,235, 73,205,205,187,193, 94,135,175,128,175, -166,102,196,143,174, 94,189,234,219,185,115,103,100,103,103,191,178, 18,174,118,224,146, 74,165,144, 72, 36,184,114,229, 10, 0, - 60,106, 76,217,133, 11, 23,190, 67,117,212,101, 0,128,187,187,123, 88,223,119,250, 92,233,246,102, 87,236,142,217, 83,158,159, -159, 31, 92, 27, 67,135, 16, 66,220,221,221,199,243,133,188, 49,222, 65,158, 17, 96,217,111,206, 29,251,115, 73, 83, 15,233,221, - 46,176, 18,128,210, 96,213,225,154,215,169,104, 14,135, 51,122,216,176, 97,156,212,212, 84,140, 25, 51, 6,187,118,237,106, 52, -237,248,241,227,177,119,239, 94, 12, 27, 54,140, 51,111,222,188,209,198,128, 86, 53, 91,162,249,219, 26,101,218,227, 36,236,220, -251,115,163, 62, 72,206,206,213,254, 88,133,133, 69,117,191,117,237,220,180,101,132,213,107,206, 38,222,186, 17, 22,222,187,191, - 32,167,160, 12,172, 94, 13, 85,197,139,251, 21,101, 5,160,122, 21, 4, 22,246,112,117,180,193,237,171,191,105,180, 26,213,217, -166,116, 78, 31, 22,136, 79,135,248, 3,148,197,240,217,191, 32,254,251,207,234,102,208, 61, 71,206,192,249,253,223,154,236,227, - 87, 95,248,124, 62,238,221,187,167,108,140,205,226,114,185, 70, 99,114,189, 96, 29,117, 80, 40,148, 80, 40, 85,127, 91, 29, 17, - 66,156, 92, 92, 92,126,180,183,183, 23, 55, 4,164, 8, 33, 78, 78, 78, 78, 63, 58, 56, 56,136, 77, 53, 29, 54, 6,178,106,226, -106,221,154, 52,105, 82,179,192,150, 72, 36,106,253,232,209,163,186, 96,165, 77,125,107, 52, 26,244,237,219,215,164,224,165,148, -210,227,132,144,167,110,110,110,227,242, 19, 73, 0, 0, 32, 0, 73, 68, 65, 84,151, 3, 2, 2,108,158, 60,121,130, 61,123,246, - 8,248,124,190,103,109,255, 81, 81, 81, 1, 46,151,139,194,194, 66, 29,128, 15,140,153,206,212,106,117, 66, 66, 66, 66,199, 33, - 67,134,112, 31, 60,120, 0, 46,151, 91,157,175,176, 48,132,108,222,140,228,153, 51, 17,145,153, 9,149, 86, 11,177, 88,140, 51, -103,206,104, 21, 10, 69, 66, 99,250, 36, 18,201,214,140,140,140, 64,177, 88, 12,173, 86, 11,150,101,193,225,112, 8,143,199,235, -105,107,107,187, 17, 64,215,151,223, 41,103,231, 41,179,190,110,207,232,245, 76,126,246, 19,153,177, 50, 40, 46, 46,198,241,227, -199, 17, 26, 26,138,136,136, 8,228,230,230, 34, 61, 61, 29,111,189,245, 86, 93,154,164,164, 36, 36, 38, 38,194,199,199,199, 56, -163,199,209,193,167,125,107, 8, 4,130,106,134,136, 47,168,153,248,240,235,152, 44, 1, 95, 0, 62,143, 15,177, 68,108, 50,163, - 69, 8, 1,135,195, 1, 33, 4, 18,137,164,118,146,205,122,120,120,228,151,148,148,184, 1,224, 74, 36, 18, 48, 12, 99,210,164, -165,118,140,168, 5, 89, 2,161,160,142,217, 2,128,178,178, 50,213,176, 97,195,254,173, 86,171,223,199,107,236, 80, 98,150,127, -164,220,252, 31,186,215,100,156, 72, 41,221,218,144, 83,124, 83, 13,252,173,240,240,240,205, 99,199,142,237,191, 97,195, 6, 88, - 90, 90, 34, 63, 63,191,110, 64, 20, 10,133,104,217,178, 37, 74, 74, 74,176,101,203, 22, 60,123,246,236, 2,128, 41,166,230, 40, - 63, 63,255,218,227, 59,143,138,251,142, 10,119, 8, 12,111,111,155,243,232, 89, 40,128, 43, 53, 32,235,151,177,179,222,122,191, -239,136,110, 16, 8,249,200,121,252,252,255, 91, 77,114,185, 92, 46, 33, 4, 99,198,140, 49, 41,253,187,239,190,139,132,132, 4, - 52,101,102,100,107, 25, 45,133, 10, 85,202,191,111,178, 54,245,179,241,152,250,217,248, 58, 48, 97,138,233,165, 26,228,238,107, - 2,104,105, 55,196,239,219,242,113,167,110, 97, 94, 93, 2, 91,227,250,173, 59,216,189,249, 5,201,176,237,187,101,248,122,219, - 5,180,116,177,131, 86, 93,133, 83, 7,126,122,174, 85, 43, 54,188, 38, 41, 87, 13,110, 9,129,137,113, 42, 95, 98, 81,107,129, - 86, 80, 80, 80,163,140, 86, 73, 73,137,210,216,192, 80, 87, 71, 26, 29, 42,171,148, 80, 42,254, 30,160, 69, 8, 9,233,217,179, -231,217,184,184, 56, 7,103,103,103,228,229,229,189, 4,180, 8, 33, 33, 61,122,244, 56, 27, 23, 23,231,224,226,226,130,156,156, - 28,147,195,138, 52, 0,178, 32,147,201, 72,105,105, 41,107,103,103,215, 44,176,197,225,112,160, 86,171,113,255,254,125, 83,255, -214,228, 21, 98, 54, 54, 54,219,247,238,221,107, 83, 84, 84, 4, 46,151,139,251,247,239,191,180,234,176,246,243,203, 47,191, 8, -134, 15, 31,254, 51,128, 38,151,181,233,245,250,117,227,199,143,255, 48, 55, 55,215,206,217,217, 25,249,249,249, 16, 10,133,160, -148,130,244,237,139, 94, 79,159, 66,203, 48,144, 72, 36, 72, 75, 75,195,214,173, 91,171,212,106,245,186, 70,234, 71,104, 97, 97, -225, 43, 16, 8, 48,110,220,184,151,174,237,216,177, 3, 67,187,112,187,124, 60, 80, 84,169,135, 88, 93, 32, 25,124,138,203,229, -146, 41,115,190,105,215,189,119,100,208,195,228,235, 79,100, 5,207, 46, 27,121,124,157, 70,163,129,159,159, 31,110,222,188,137, -115,231,206,161, 95,191,126,136,136,136,192,221,187,119,241,219,111,191, 33, 49, 49, 17,132, 16, 56, 56, 56,212,186, 95, 52,233, -131,161, 81,232, 81,152, 87,252, 10,123, 85,255, 92, 32, 16, 64,173,212,154, 84, 71, 15, 30, 60,192,205,155, 55,235, 66,203,112, -185, 92,253,132, 9, 19, 64, 41,165, 25, 25, 25,176,178,178,162,147, 38, 77, 98,120, 60,158, 62, 55, 55,215,212,182, 95,205, 94, -213,128, 44,158,128,255, 18, 64, 99, 89,182, 34, 41, 41,233, 99, 66,200, 93, 66,200,234,154,159,205,113,180,204,242,191, 89, 78, - 24,238,117,104, 18,163, 69, 41,125, 10, 96, 0, 33,228,189, 35, 71,142,172,219,184,113,163, 83, 84, 84, 20, 74, 75, 75,225,229, -229, 5, 55, 55, 55,196,199,199,227,228,201,147, 69, 12,195,204,166,148,238,106,224,101, 27,208, 88,172, 13, 74, 41,117,119,119, -143, 83, 87, 86,126,218, 57,194, 31, 23,246,255, 17,227,230,230, 54,165, 69,139, 22,159, 79,154,255,246,251,125,134,117, 69, 90, - 98, 6,174,253,118, 15, 5,217, 69,152,212,235,203, 38,117,214,119,134,183,181,181,253,208,194,194, 66, 8, 64,219,192,172,248, -165, 85,135,134, 58, 25,134, 97, 52, 26, 13,246,237,219,103, 18,216,218,179,103, 15, 84, 42, 21,152,122,246, 85, 67,157,148,165, -132,199, 23,193,189,165, 31,180,218, 42,176,236,235,177, 55,134, 58,107,103,160, 79,132, 66, 56, 23, 21,225,250,245,235,166, 82, -179, 77,214, 17,165, 84, 69, 8, 25,247,237,202, 57,241,211,162,191,177,237, 23,222, 17, 95,173,221, 1,173,118, 27, 56, 92, 14, - 36, 34, 1, 58,119,235, 1, 46,212,248, 49,246,139, 50,133,188,116, 92,253,173,120, 94,209,217,148,133,133, 2, 12,203,226,220, -165, 27, 38, 63,123,221,104,207, 48,224,241,120,120,252,248,177,178,161,213,134, 92,110,181,153,179,118,166,222,148, 78,202,178, -132, 47, 16,163,165, 87, 0, 52,234,202,191,165,142,156,157,157,191, 56,124,248,176, 67,109,168,132,187,119,239,130, 16,114,223, -128, 29,249,226,240,225,195, 14, 74,165, 18,201,201,201,181, 91, 77,221,111,206,123, 84,203,100,201,100, 50,146,159,159, 15, 11, - 11, 11,206,221,187,119,213,193,193,193,183,208,244,206, 15,117, 58, 85, 42, 85,102, 99,254,147, 42,149,170,133, 88, 44,230,215, -187,215,221,215,215, 55,173,190, 9,177,161,124,150,151,151, 95,159, 59,119,110,231, 55,223,124, 19, 95,124,241, 69,137,157,157, -157,213,143, 63,254,200,227,114,185,100,218,180,105, 76, 97, 97, 97,229, 79, 63,253,100,115,228,200, 17,148,149,149, 93, 49,246, -236,148,210, 10, 66,200,199,225,225,225, 59, 78,159, 62,109,225,235,235, 11,185, 92, 14, 74, 41,182,111,223,142,105,211,166, 65, - 44, 22, 35, 45, 45, 13, 67,135, 14, 85, 40, 20,138,143,235,251, 78, 26,232, 36,132, 16,202,178, 44, 22, 45, 90, 84, 23,156,180, - 54, 88,169,149,132, 96,235,172, 54,210, 25, 63,149, 75,223,251,234,167, 9, 0,192,232,245,204,195,228,235, 79,182,127,255,213, - 69,129, 64,112,201, 72, 29, 45,152, 49, 99,198,143,145,145,145, 18, 75, 75, 75,148,148,148,224,242,229,203,184,122,245, 42,174, - 93,187, 6,141, 70, 3, 7, 7, 7,216,217,217, 33, 63, 63, 31, 15, 30, 60, 80, 2, 88,208,148, 78,161, 5, 31,222,237,106, 87, -254, 86, 51, 88,124,131,213,134,134,236,150,128,207, 55,233, 61,234,221,187, 55,186,119,239, 94, 11,128,152,172,172,172,124,181, - 90, 77, 12, 64,127,110, 45, 32,247,244,244,212,239,218,181,139, 54,165,243,218,214, 77, 56,189,124, 1,132, 2, 1,102,223,207, -169, 3, 93, 59,250,117, 2, 95, 40,128,255,144,145,134,227,192, 15,132,144,109, 53,199,106, 83,218,252, 95,152,248,152,117,254, -151,235,252,223, 44,148,210,124, 0,205,219,130,199,224,230,221,132,144, 83, 31,125,244, 81,108, 72, 72,200, 71,235,215,175, 39, - 2,129, 0, 75,150, 44,161,121,121,121,191,214,204, 66, 74, 95, 51, 99,191,254,126,232,202, 39, 19,163,135,145, 89, 27, 38,245, -188,117, 62,249, 65,135,112, 95,116, 8,247,197,173, 11,169,248,126,254,158, 93,140,142, 89,148,159,159,159,109, 68,149,122, 64, -143,246,245,157,225, 29, 18, 46,158,119,104,238,170, 67,150,101,227,246,236,217, 51,125,196,136, 17,156, 27, 55,110,188,226,147, - 85,187,237, 14,203,178, 56,123,246, 44,180, 90, 45,126,253,245, 87,150,101,217,198,227,104,129, 30,253,118, 67,236,196, 95,119, - 30, 21, 10, 5, 4, 87, 47, 29, 68,121,105,211, 44,157, 64,192,199, 47,219, 15,105, 5, 2,254,195,134,174,107,181,218,156,243, -231,207,187, 12, 98, 24, 62,135,195,121, 5, 64, 53, 38,113,113,113, 58,150,101,179,140,212,203, 21, 66,248, 67, 86,124,241,193, -158,200,119, 62,114, 9, 15,239,201,119,116,118, 1, 33, 4,133, 5,133, 72, 75,190,161, 59,117,240,231,130, 42, 69,133, 73, 91, -240,124,176,230,247, 58,159, 44, 0,136,154,182,177,206, 63, 11, 0,134, 76,154,139,190,161,129, 32,166, 80, 79, 47, 64, 22,171, -215,235, 33,149, 74,161,215,235, 27, 12,241, 96, 99, 99, 35, 81,169, 84,202,154, 64,140, 77, 82, 69, 20,248,219,235,136, 97, 24, -255,210,210, 82, 84, 85, 85,225,234,213,171,116,229,202,149, 50,153, 76, 86,231,180,169,211,233,252, 75, 74, 74, 80, 89, 89,137, - 43, 87,174,208,216,216, 88, 89,113,113,241,252,230,188, 67, 18,137,164, 11,143,199,187, 85, 90, 90,202, 90, 88, 88,112,116, 58, -157, 46, 56, 56, 88, 36,145, 72, 76,222, 80, 61, 47, 47,239,205,198,174,249,248,248, 60,122,244,232, 81, 91,134, 97, 12,247, 64, - 20,168, 84, 42,223,240,240,112, 83, 76, 62, 51,182,109,219,134, 67,135, 14,117,147,203,229,227,179,178,178,118, 0,232,198,227, -241,112,231,206,157,251, 42,149,106,236,136, 17, 35,182,151,150,150, 94, 7, 48,195,196,126,227, 52, 33,100,156,191,191,255,182, -165, 75,151, 90, 70, 68, 68,240,220,221,221,209,181,107, 87,164,165,165,225,196,137, 19,186, 31,126,248,161, 74,161, 80,124, 64, - 41, 61,219,116,181,131,232,245,122, 8,133,194,186,143, 72, 36,130, 64, 32, 64,133,146, 98,242,218,116,165, 30, 18,229,186, 37, - 31,159,160, 0,121,158,147, 94, 84,248, 60,231, 58, 33,228, 82, 94, 94, 94,121, 35,101, 38, 84,169, 84, 29,221,220,220,184,132, -144, 13, 90,173,118,210,103,159,125,230,182,106,213, 42,180,111,223, 30, 69, 69, 69,144, 74,165,240,245,245,133, 76, 38,195,141, - 27, 55, 24,133, 66,177, 25,192, 50, 74,105,147,230,200,178, 34, 57, 60, 92, 61, 95, 98, 62, 41,165,160, 12,160, 83, 51, 96,180, - 20, 26,162, 3,159,175,131, 64, 32, 48,101,176,164, 44,203,162,212,205, 13,108,114, 50,174, 93,187, 6, 74,105,163,172,154,159, -159,159, 9, 21,196, 66, 40, 18,190,100, 46, 36,132, 64, 32, 20,130, 47, 20,188,178,114,198,204, 98,153,229,255,186,152,234,107, - 81, 6, 96, 10, 33,100, 71,159, 62,125,226, 41,165,124, 84,219, 35,255,248, 43,127,158,159,159,127,219,221,221,125,158,139,135, - 93,236,224,241, 61,209,190,163, 23, 24, 61,131,203, 39,239,224,215, 85, 71,246,230,230,228, 78, 50,101,239, 51,150,101, 47,246, -232,210,158, 3,131, 88,221,238,238,238,236,235,172, 58, 44, 47, 47, 95, 60,123,246,108,124,241,197, 23,205, 94,117,216, 88,154, -187,247, 11,167,132,248, 59,121, 12, 25,220,107, 16, 8,135,106, 52,234, 38, 58, 62,212, 69, 46, 21, 8,248, 15,111, 36,229, 5, - 55,148, 78, 38,147, 13,122,255,253,247,207,242,120,188,214,205, 41,115,150,101,179, 10, 10, 10,250, 27,175,115,221,101, 66,136, -239,241,189, 91,102,158, 62,180,109, 16,203, 50, 62, 4, 0,151, 39,120,162,211,106,207,168,149,242,245,166,110, 42,189,122, 74, - 24,102,124,251, 27, 54,125, 49, 4,159,197,238,199,207,139, 38, 99,222,218, 61,248,230,139, 25, 88,185,241,223,248,106,198, 56, -140,122,239,125,150, 18,206,159,166, 62, 7,151,203, 61,189,101,203,150,137,147, 39, 79,174, 91,180, 64, 41,125,169, 99,215,233, -116, 74,150,101,177,121,243,102, 22,192,233,166,244,189, 92, 71,132, 54,229, 47,101,106, 29,201,229,242, 15,194,194,194,182, 3, - 16, 81, 74, 31,151,150,150,254,139, 82, 90,183, 53, 84,101,101,229, 7,225,225,225,219, 41,165, 34, 66,200, 43,215, 77,145,154, - 80, 15, 93,236,236,236,110,213, 48, 89,162,215,113,136,111,170,168,155, 48, 43, 50, 38,244, 29, 44, 12,182,213, 33,132,172,234, -214,173,155,225,166,210,247, 1,116,105,110,166, 40,165,103, 9, 33,129,139, 22, 45,154, 41, 22,139,251, 42, 20,138,118, 0, 32, -149, 74,211,212,106,245, 69,165, 82,185,190,166,223,106, 74,135,198,194,194, 34, 77,175,215, 7, 57, 57, 57, 85,175,168,173, 1, - 91, 0,112,236, 22,115,139, 82,125,215,230,230,237,228,201,147,173,236,236,236,222, 32,132,140,162,148,250, 85, 84, 84,168, 23, - 45, 90,116, 37, 46, 46,174,188,117,235,214,131, 35, 35, 35,137,189,189, 61,110,222,188, 73,139,139,139, 15, 2,152,111,202, 74, -107,150,101,179, 86,175, 94,141,230,190,239, 77, 93,215,106,181,207, 79,158, 60,233,248,102, 97, 33,143,101, 89, 12, 25, 50,228, - 37, 0, 87, 95, 30, 62,124, 8,181, 90,221,100, 48, 71,117,121, 41,250,205,156, 11,212,172,254,172,149,106, 38,139,130,106,204, -184,202, 44,255, 44, 33,255,145,229,207,205,164, 22,221,221,221,199,136,165,162,169, 94,237,220,130,243,210, 11, 83, 43,202, 21, -187,242,243,243,183, 80, 74,153,215,213,217,156,128,165,102,250,247, 63,167,243, 69, 28, 45, 6,148, 50,160, 44, 5,165, 44, 88, -150,169,222,240,154,178,160, 12, 67, 8,193,159,106, 69,249,100, 83,243, 73, 8,177,115,116,116, 92, 70, 41,125,147,203,229,114, - 12,201, 48,195,227, 26, 38,235,180, 76, 38,251,170, 62,243,250,191,177, 60, 15, 28, 56,208, 32,248, 55,117,213,225,168, 81,163, -152,102,190,155, 23,165, 82,105,131,129, 57,171,170,170,178,243,242,242,222,248,111, 40,207, 90, 54,148,154,208,161,213, 51,193, - 55,123,213,161, 49,157,173, 90,181, 18,105,181,218, 78, 0,124, 9, 33,182, 0, 74,180, 90,237, 25,153, 76, 86, 64, 8,233, 2, - 96, 81,205,109,203, 41,165,183,254, 39,223,119, 66,136,196,209,209,113, 27,135,195,241, 48,229,126,189, 94,175, 41, 41, 41,153, -104, 56, 33, 48,212,233,232,232,120,139,199,227,121,152,160,231, 89, 81, 81, 81, 23,115,255,105,214,249,127, 6, 76,213,115,130, - 55, 60,255,175, 88,237,145,151,151,183, 15,192,190,191, 83,103, 99,145,223,205,242,255, 87,170, 74,242,255, 35,245, 80, 3,154, -166,253,211,202,179, 22, 40, 53,240,251,109, 0,228, 63,240,110,246,253,223, 80, 46,244, 53,103,140, 53, 64,170,215,223,153,151, -204,204, 76, 53,128, 43, 53,159,250,255,119, 11,192,144,255,162,114, 83, 2, 24,243,119,233,107, 10, 60,153,197, 44,255, 84, 49, - 47,171, 53,139, 89,204, 98, 22,179,152,197, 44,102,249,107,114,162,222, 22, 60, 39,106, 15, 8,128, 1,141,204,116, 76,166, 4, - 9, 33, 3, 94, 99, 38,117,206,172,211,172,211,172,211,172,211,172,211,172,211,172,243,159,165,243, 31, 39,181,129, 35,255, 19, - 31, 0, 3,204, 58,205, 58,205, 58,205, 58,205, 58,205, 58,205, 58,205, 58,255, 47,127, 0,124,220,216, 57,199, 12, 53,205, 98, - 22,179,152,197, 44,102, 49,139, 89,254, 51, 98, 50,208,178,116,245,247,119,106, 21,178,221,190,101,240, 93,251,150,193,119,157, - 90,133,108,183,116,245,247,255, 39, 22, 26, 33, 68, 66, 8,121,143,207,231,159,117,115,115,147, 19, 66,102,254, 31,125, 78,107, - 66,200, 40, 66,200, 50, 66,200,112, 66,136,197,223,169,191, 15, 33,188,119, 9,153, 58,145,144,236,137,132,100,191, 75,200,212, - 62,132,252,159,243, 27, 92, 58,195, 61,236,143,211,227, 78, 45,157,225, 30,214,224,245, 57,238, 14,215,207,190,243,109,204,180, - 22,246,127, 83,189, 89,185,184,184,108,117,117,117,205,116,113,113,201,114,113,113,217, 70, 8,177, 49,119,119,102, 49,139, 89, -204,242, 31,147, 19,132,144,143,107, 63, 48,240,209,226, 1,192,137, 19, 39, 34, 0,252, 14,160, 79,100,100,100, 66,253,187,237, -189, 58, 76,246,247,107,255,197,138, 37,243,137,171,179,163,133,158, 97,181, 25,153, 57, 1,139, 87,196, 30,176,247,234,176,174, - 36,235,222,207,175, 49, 24, 16, 46,151, 59, 70, 36, 18, 69, 1,168, 5,108,247,213,106,117, 60,195, 48,251, 76, 93, 69,228,234, -234,122,137,203,229,182,106,206,127, 51, 12,147,253,252,249,243,158,175, 57,136,141,246,244,244,220, 22, 17, 17, 97,209,173, 91, - 55, 8,133, 66, 44, 90,180,104, 54,128,245,166,234,176,183,247,177,210,138,196,159,243,132,194,129, 84,167, 9,162,160, 0, 71, -148,204,234,213,231, 5,106,245,186,146,146, 39, 21, 38,230,101, 62,128, 73,168, 94,142,254, 51,165,116,245, 95,105, 37,147, 58, - 17,157,142,169,110, 19, 2, 30, 24, 27, 27,155,223, 23, 44, 88,192,139,138,138,194,207, 63,255,220,115,235,214,173, 31, 19, 66, -206, 3, 56, 70, 41,125,242, 87, 91,165, 11, 48, 37,188,103,207,111, 39,206,158,205, 85, 94,186,132,111,183,109,219, 0,185, 28, - 0, 54, 53,183, 45, 9, 4, 24,229,232,200,143,162, 20,157, 8, 64, 8,112, 71, 86,204,158,212,106,153,125,180,185,251,251,188, -172,251, 61,188,188, 28,127,119,115,117,148, 63,161, 11, 69, 67,252,123,149, 63,185,184, 16,192,224,250,215,245, 42,241, 68,202, -109, 25,165,164,137, 57, 0,214,254, 69,144,101,225,228,228,116,247,232,209,163, 30,221,186,117,227, 1,192,173, 91,183, 38, 68, - 69, 69,245, 35,132, 4, 81, 74,229,255, 67,160, 93,204,227,112,166, 10,249,252,129, 12,195,116, 0, 0, 46,151,123, 79,163,211, -157,213,179,236, 38, 83, 99,178,153,197, 44,102,249, 63,140, 84,140, 96,145,255,102, 49, 37, 50,252,239,145,145,145,228,196,137, - 19, 20,245,150,136, 91,186,248, 5, 4, 6,250,207, 62,125,120, 71,203,178,146, 50,213,119,107,118,220,174,226, 9, 21,190, 1, -190,130,239,214,175,182,155, 58, 99,214,231,150, 46,126,215, 43, 11, 30,164, 54,163,211,245,148, 72, 36,135,214,172, 89, 19,212, -183,111, 95,190,179,179, 51, 10, 10, 10,112,255,254,253,160, 11, 23, 46, 12,219,177, 99,199,108, 66,200, 8, 74,105,182, 9,234, -124,207,239,220,230, 44,181,119, 0,163,211,193, 61,184, 83, 93,160,189,199, 23,126,131, 94,171, 5,171,211,193, 63,106, 24, 0, -128,101, 89, 4, 4, 4,112, 95,167, 32, 9, 33,238,129,129,129,187, 86,173, 90, 37, 80,171,213,184,126,253, 58, 46, 94,188,200, -230,231,231,199,154,170,195,210,165, 93, 95,142, 68,186,111,204,184,143,108,222,142,106,195,247,116,113, 2, 96,129,135, 25,250, -240, 83,191, 93,232,122,120,223,175,159, 90,186,180, 27, 83, 89,144,118,177,105,176,102, 31, 74, 8, 89, 89, 27, 33,154, 16,242, - 77,235,214,173,191, 50, 76, 83,127,223, 60, 74, 41,120, 60, 94, 65, 69, 69,197,152,162,162,162,196,250, 58,117, 12,120,187,119, - 87,227,136,133, 83,223,227,254,249,231,159,210,128,128, 0, 53, 0,172, 94,189, 26,203,150, 45, 19,158, 57,115,230,173,157, 59, -119,190, 69, 8,217, 64, 41, 61,246, 87, 26,166, 0,248,114,226,236,217, 92,203,204, 76, 88, 38, 37, 97,156, 92,206,251, 26,248, -178, 57, 64,139, 16,210,198,213,149,127, 96,246,172,247,253,189,125, 66, 5, 2,129, 99,245, 38,222,154,162,118,217,217,137,163, - 98,191,222, 26, 77, 8, 25, 73, 41,125,108,162, 62, 30,128,165, 0,196, 0, 22, 2, 88, 36,147,201,124, 25,134,129,171,171,235, - 34, 66,200, 17, 0, 43,156,156,156,168, 76, 38,155, 75, 41,213, 55,197,100,201,159,208,133,207,137,247,155,237, 59, 79,196,115, -114,250,205, 89,131,221, 78, 89,251,144, 21,139,191,205,187, 10, 0,131,125,124,172,188,253,164,115, 45,173, 59,216,203,115,207, -205, 29,236,227,243,211,169, 39,166, 1,237,250, 96, 19, 0,220,221,221, 87,239,220,185,179,101,247,238,221,235,218,120,199,142, - 29,185,171, 87,175,110, 49,115,230,204, 13, 0,222, 55, 81, 95, 59, 39, 39,167, 51, 12,195,168,139,139,139,219,213,254,238, 28, - 50, 34,220,193, 74,218, 95, 86, 90,113,169, 40,229, 72,130,137,186,186,137, 5,130,131,199,118,125,235,214,177,123, 24,199,210, -209, 25,170,220, 60, 84,234,180, 3, 46, 94,190,214,231,227,169, 95,206,168,169,163, 27,230,161,198, 44,102,249, 71, 75,163, 88, -228,127,179,240, 12,144,100,131, 12,146, 72, 36,140, 94,188, 96, 46, 41, 43, 46, 83,170,228, 21, 26,157, 74,165,226, 8,168,234, - 94,234,211, 66, 14,143, 91, 54,115,198,116,171,232,121, 11,162, 1,140, 51, 21,100,133,132,132,220, 56,116,232,144,179,189,189, - 61,202,203,203, 81, 92, 92,140, 27, 55,110,128, 82,138, 17, 35, 70,136,186,119,237,218,105,225,162, 69, 87, 9, 33, 97,166,128, - 45,169,189, 35, 86,247,172,222,139,246,171,204,226,218,255,193,214,209, 81,117,105,150, 61,171,222, 45, 67, 44, 22,215,109, 72, -252, 26, 18,214,191,127,127, 1, 0,124,248,225,135,242,138,138,138, 24, 0,187, 41,165, 38,237,180,106,233,210,174,175,163,155, -123,252,143,155, 87, 75, 58,248,248, 66,171,211, 35,235,121, 30,120,124, 91,120,120, 8,240,254,184,129,252,222,225,246,142, 43, -151,111, 61, 33,117,106, 55,188, 74,150,118,166, 49, 93,182,182,182, 59,246,237,219,135,253,251,247, 3, 0,210,210,210,224,235, -235, 43, 53,150,135,228,228,100,239,161, 67,135,238, 5,208,214, 88,218,250,129,241, 69, 34, 17,122,246,236,137,128,128, 0, 28, - 61,122,180, 15,128, 99,127,181, 1, 42, 47, 93,130,101, 82, 18,144,208,252,201, 11, 33,164, 77,231,206, 94,215, 78,158,216,229, -120,226,228,125,172, 93,187, 13, 79,158, 84, 19,109,222,222,222,120,111,236,104,254,189,123, 87, 2, 71,141,122,239, 10, 33,164, - 39,165, 52,205, 4,181, 75,127,250,233,167,249,173, 91,183,198,168, 81,163, 70, 7, 6, 6,186, 90, 91, 91, 99,203,150, 45,112, -115,115,243,214,104, 52,143,143, 30, 61,234,254,252,249,115, 76,159, 62, 29, 0,102, 55,166,168,207,160, 62, 11, 69, 67,252,123, -181,239, 60, 17,150,214,110,248,105,207, 62, 60,188,189,163,151, 90,123,127, 97,204,180, 22,227,149, 84, 52,201,195,215, 42,186, - 85,151, 8,135,182,129, 67,225,213, 57,209, 81,197,252,241,116,209, 84,239, 88,158, 88,181, 99,241,154,188,226, 87,158,121,244, - 1,110,144,252,129,125,242, 89, 20, 83,186,152,173, 1, 88,117, 29, 18, 67, 49,180,119,239,222,117, 21,151,153,153, 9,181, 90, - 13,127,127,127,142, 70,163,233,107, 98,185,182,123,227,141, 55,254, 60,121,242,164, 67,187,118,237, 94,218, 18,198,213,193,118, - 80,194,161, 13,211, 87,126,251,111, 63,231,128,225,101,133,169,135,239, 25, 3, 89, 61, 66, 59,159, 59,117,104,151, 37,169,204, -129,208,182, 8, 96,139,145,190,247, 23, 16, 11,123,140,249,100, 22,175,111,255,126, 45, 6, 14, 30,121,142, 16,210,159, 82,122, -211, 60,214,152,197, 44,255,104, 86,139,254, 95,123,166, 58,160,101,128, 34, 95, 18,150,178,193, 46,206, 14,146, 13,107,182,223, -228,106, 53, 26,169,173,141,134,111, 99,205, 18, 43, 27,174, 86,163,171,244,242,246, 18,178,148, 13,110,132, 74, 59, 87,127,214, - 45,145, 72, 14, 29, 59,118,204,153,207,231,131,101, 89, 56, 57, 57, 33, 35, 35, 3,101,101,101,168,168,168,192,147,251,247,209, -218,179, 37,150, 68,207,117,155, 62, 55,250, 16, 33,164,139,161, 25,177,161,101,163,140, 78, 91,191,115,111,108, 19,225,151,190, -155,210,217,136,100,100,103,103,195,210,210, 18, 65, 65, 65,150,151, 47, 95,254,163, 49,144, 85, 95,167,189,189,143, 21,207, 82, -178,255,135, 31, 23, 73,180,186,100,164,166,151,160,125,235, 94,112,113,240, 68, 94,137, 6,215,110, 28, 67,242,221,221,240,105, -225,137,105,159,244, 19,199,174, 62,176,207,206,174,141,103,105,233, 83,121, 67, 58,229,114,185,101,155, 54,109,224,233, 89,189, -239, 25,195, 48, 72, 77, 77, 5,195, 48,117,231,134,223,219, 15, 94,128, 94,158,133,137, 19, 38,160,184,184,216,178, 33,157,124, - 46,244,179, 62,126,143, 39,225, 3, 66,169,189,166,178,178,178,142, 29,212,106,181,184,115,231, 14,194,194,194, 34,226,226,226, - 18,140, 80,168, 38,149,167, 22,248,230,219, 95,127,221, 56,174,188,156, 3, 0, 63, 19,194,106, 41,253,198,212,182,228,236,204, - 63,120,250,212, 78, 71, 46,231, 1,236,109,190,198,141, 27, 89,208,106,171,243, 91, 92, 92,136,207,166,202, 33,224, 91,225,232, -209,127, 59,248,251,247, 60, 88, 99, 58, 99,141,228, 83,124,234,212, 41,124,246,217,103, 72, 77, 77,117,231,114,185,184,126,253, - 58, 36, 18, 9,214,172, 89,195,245,247,247,119,151, 74,165, 56,125,250, 52, 10, 10, 10, 72, 83,249,252,253,204,239, 43,202,159, - 92, 92,248,156,156,126,243,167, 61,251,240,209,216, 49,112,165,233,127,216,248,144, 21,111, 12,233,241, 21,229,182,140,146, 90, - 5,219,249, 6, 13,129, 64,104,137,105, 95, 46, 67, 90,242,113, 59, 69,197,221,169,132,201,105,137,154,189,255, 94,218, 84, 57, -110, 20,179,113,207,149,206,103, 61,111,122,185,119,158,114, 29,192,221, 23, 64,203,155, 71, 56,140, 77, 45,123,249,248,241, 99, - 60,121,242, 4, 60, 30, 15, 74,165, 18,122,189,190,193,124,182,104,209, 98,138, 94,175,255,170,166,158,183,187,185,185,125,176, -107,215, 46, 7, 67,160, 93,203,100,149,148,201, 75,175,220, 76,121, 56,107,202,168, 62,151,174, 37,231,216,134, 12,203, 46, 75, - 58, 82,222, 72, 29,137, 37, 66,225,193,211,135,255,109,169,123,122, 1, 82,255, 62,224, 91,250,130,209,229, 66, 81, 90,133,138, - 39,249, 80,255,248, 61, 58, 78,157,137,227, 71, 14, 88, 6,118,232, 18, 71, 8,241,165,148,106, 94,227,221,108, 14,197,111,214, -105,214,105,214,249, 95,168,179, 41, 44, 2,160, 51, 0,151,154,227, 98, 84,187,204, 56, 2, 40, 66,245,118, 96, 46, 0, 52, 0, -132, 6,247,212, 63, 55, 76, 91,255,220,240,184,184,230,216,185,230,251, 38,128, 18, 35,147, 74, 55, 0,145,168,246,205,138,172, - 41, 35,211, 34,195, 19,194,145, 51, 12, 43, 18, 56, 57,171, 62,124,167,127,135,223,206,221,186, 99,225,104,205, 27,212,167, 83, -196,141,123, 79,175, 18, 14,209, 17,194, 49,201,239,131,203,229,142,217,176, 97, 67, 7,107,107,107,176, 44, 11, 27, 27, 27,200, -100, 50,104, 52, 26,148,151,151, 67, 93, 33,135,182, 66,142,164,156, 76,244,136,232,131,145,111,190,225,255,239, 35,199,198, 0, -216,219,148, 94,247,224, 78,117, 76,214,178, 86, 14, 47,168,137,156,178, 58,208,245,117, 39, 95, 8, 44, 45, 49,112, 86,244, 95, -105, 88,137, 66,161,240,212,136, 17, 35, 6,207,153, 51,135,147,159,159,127,154, 16,210,131, 82,106,212,108,170, 21,137, 63,255, -244,243, 40, 59, 59, 75,138,184,179,199,208,187,211, 88, 88, 8,185, 40,150,107, 65, 8,112, 63,229, 16, 8,177,199,221,180,124, -244,234,104,141, 55, 6,249, 91, 30, 57,112,127, 14, 94,248, 7,189, 82, 53,165,165,165, 40, 44, 44,132, 78,167,131, 78,167,195, -168,209,163,177,115,199, 14, 84, 85, 85, 65,169, 84, 66,163,209,128, 97, 24,112, 56, 28,156,141,143, 67,206,211,251, 8, 15, 11, - 67, 99,148,236,246, 68,202, 39,132, 92,123,248,240, 33,238,223,191,143,103,207,158, 65, 44, 22,195,213,213, 21,203,150, 45,131, - 90, 93,189, 71,217,232,209,163, 35, 0,220,251,171, 47,212, 19, 96,107, 6,195, 44, 28,124,248,176,243,229,195,135,217,107,199, -143, 63, 19, 85, 84,108, 49,229, 94,129, 0,163, 86,127,243, 73,123,169, 84,138,103,217, 27,224,231, 39,192,236,153, 14,136,249, -186, 8, 0, 48,253, 51, 15,116,237,226, 8,121,217, 1, 56, 58,207,199,198,141, 51,124, 38, 77, 90, 55, 1,192,118, 35,170, 23, - 30, 59,118,108,164,175,175,111,139,196,196, 68, 34, 20, 10, 33,145, 72, 32,145, 72, 32, 22,139, 81, 88, 88,136,140,140, 12,186, -122,245,234, 92, 84,155, 22, 27,149, 26,243,224,224, 89,131,221, 78, 61,188,189,163, 87, 11,238,211,164,145,211,122,102,222,189, -150, 88,241,219,217,203,203,245, 42,113, 78,217,179,115,115,219,116, 77,116,156,250,197, 82,124,191,122, 49, 30, 94,191, 84,226, -226, 41,223, 36, 33,234,237,221, 7, 54,192,146,245, 89,202,155,186,232, 29,253,148, 73, 35,109,143,187, 92,153,114,146, 71,100, -207,139,110,175, 65, 70,162, 82,212,182,211,248,118,222, 28,205,133, 11, 23, 36,189,123,247,134, 74,165,170, 99, 38,119,237,218, -197,234,245,250, 6,205,209, 90,173,246,171,220,220, 92, 55,165, 82,137, 55,223,124,115,250,154, 53,107,164,181,123,212, 49, 12, -243, 18,147,181, 98,253,206, 51,159,127,181,233,226,153,189, 95,187,175,136,254,160,207,184,105, 43, 47,162,145,125, 36,121, 28, -206,212,227,135,183,185,138,237,116,144,216,191, 1, 85,129, 18, 15,183,126, 4,133, 92,133,174, 43,150, 2, 16, 66,163,227, 96, -203,144, 81,224, 59,184, 99,241,228, 15,220, 23,108,249,233, 19, 0, 27,204,243,122,179,152,197, 44,245,196,133, 16, 18, 15, 0, -209,209,209,243, 99, 98, 98, 82, 8, 33,241,148,210,168, 26,160, 19, 79, 41,141,170, 77, 83, 51,102,191,114, 94,155,182,254,121, -253,227,121,243,230, 5,198,198,198,174, 10, 11, 11,219,123,229,202,149,167,198,128, 22,170,247,127,222, 90,127, 43, 30,160,102, -213, 97,100,100, 36, 49,252,126,137,209, 98,217, 75,143,159,102, 42,222, 24,208,221, 35, 62,225,222,205,247,223,143,236, 63,102, - 72,239, 65, 25,217,197,247,125,188, 92, 29, 83, 82,238, 89,179, 44,123,201,148, 82, 18,137, 68, 81,253,250,245,227,149,150,150, -194,194,194, 2, 50,153, 12,185,185,185,208,106,181, 80,149,151, 65, 93, 94, 6, 85, 89, 41,180,229,165,120,114,235, 6,130,125, -188, 69, 53,206,242,198, 0, 80,131, 76,149, 33,179, 37,180,178,130,200,202, 10,164,153,102, 67, 66,200,219,118,118,118,215, 8, - 33, 11,107, 6,165,169,115,231,206, 45, 98, 89, 22, 43, 87,174,180,182,180,180,140, 35,132,136,140,233,177,114,226, 70,133,117, - 12,226, 60,200,184,139,158, 33, 19,209,174,205, 91,200, 40, 80,162,168, 66,139,194, 50, 45,186,246,254, 14,173, 66,150,162,101, -199, 24,220,207, 42,129,123, 11, 95, 14,120,162, 38, 55,127,206,201,201,121,233,124,239,158, 61, 80, 40, 20,240,241,241,193,216, -177, 99, 49,119,238, 92,140, 29, 59, 22,238,238,238, 24,247,206, 80, 44, 94,188, 24,207,159, 63, 55,150, 85,117,187,118,237,212, - 94, 94, 94,106, 47, 47, 47,181, 86,171, 69,101,101, 37,202,202,202,234,151,247,140,102,191, 37, 46, 46,243,220,220,220,238,186, -184,184,164,136,197,226,147,119, 8,121,160,242,242,114,233, 49,108, 24, 9,120,231, 29,110,150, 68, 66, 18, 0, 75, 83,116, 57, -218,243, 35,251,246, 27, 44, 44, 43,221, 6,160,154,164,250,224,125, 39,252,153, 16,136,203,127,116,193,103, 83,125, 64, 56, 98, - 16,142, 16,138,170, 11,232,222, 45, 76, 96,107, 75,162,140,212,245,123, 0,238,244,232,209,195,125,218,180,105, 68, 36, 18, 97, -250,244,233,218,201,147, 39, 63, 26, 59,118,236,163,243,231,207, 51, 94, 94, 94,104,217,178, 37,105,217,178,165, 27,128, 59, 53, -247, 52, 41,214, 62,100,133, 90,123,255, 15, 91, 95,233, 83, 6,142,225,149, 58,209,168,197,107,242,138,151,111, 74, 95,155,241, - 80,225,253,240,250,165,226, 71,201,199,217,140,155,191, 23,229, 61,170,240, 94,190, 41,125,237,188,239,115, 27,124,169, 19, 18, -192, 30,138, 79,208, 42,170, 20,188, 97, 67,250, 42,166,124, 56,166,157,189,101,224, 46,180,120, 35,164,149,167,199,184,197,171, - 54,106, 39,127,242,185,246,231, 95,182,209,138,138, 10,200,229,114,108,220,184, 81,127,252,248,241, 92,134, 97, 62,111,108, 14, - 4, 0, 58,157, 14, 83,166, 76,145, 90, 91, 91, 35, 39, 39,167,142, 17, 5,128,124, 89,241,189,203, 55,147, 31,204,250,215,232, -136, 42,181, 90,125,230,247, 91,247, 3,124,189, 60, 8,161,141, 46, 68, 17,242,249, 3,187,116,239,206,165,180, 12,132,231,137, - 39, 59, 86, 67,254,188, 4,242,194, 18,112,249, 82,232, 33,130,142, 21,194, 54,184, 27,210,110, 38,162,133,147, 11, 79,196,231, -155,183,206, 50,139, 89,254,161,210, 20, 22, 49, 4, 75,177,177,177,171,154,186,110,240,173,169,119, 94, 7,164,234,131, 48,195, - 99, 0,136,141,141, 93, 69, 41,141,186,114,229,202, 30, 0, 74, 19,241,194,199,181,223,134, 81,226,141,162, 14,174, 74, 19, 51, -103,238, 66,216,217, 72,108,186,117,242,117, 61,122, 58,225,214,165, 43,183,238,183,106,233,232, 68,117, 26,187,111,214,125,239, - 65, 20, 74, 83,157,193,253, 29, 29, 29,161,213,106,241,248,241, 99, 60,123,246, 12, 90,173, 22,250,170, 42,168,203,202,160, 42, - 45, 5, 83, 85, 1, 1,195, 64, 41, 43,132,131,133, 24,120,177, 34,209,216, 3, 54, 8,180,106,191,197,214,214, 16, 89, 89,131, -195,231, 55,104, 86,108, 68,103,231,110,221,186,237, 79, 78, 78,238, 62, 96,192,128,229,132, 16, 27, 74,105, 86,110,110,110,255, - 69,139, 22,169, 93, 92, 92, 48,101,202,148,246, 0, 38, 26, 5,153, 66,141,191,151,107,123,180,243,158,136, 86, 45,251,161,172, - 74, 7,153, 92,135,194, 50, 45,182,124, 23,134,131, 63,119,195,159, 7,123, 33,249,204, 64,148,233, 92, 97,233,254, 54, 40,163, - 9,108, 74,231,217,179,103,177,108,217, 50, 44, 95,190, 28, 43, 87,174,196,242,229,203,145,155,155,139,160,160, 32,100,103,103, -227,212,169, 83,200,207,207,135,163,163, 35,110,220,184,129,245,235,215,227,207, 63,255, 52,133,185, 51, 41, 13, 33,164, 89,182, -116,189, 94, 63, 41,127,216,176, 14, 5,246,246, 1,157, 58,117, 26, 60,125,250,116,239, 30, 61,122,212, 93,247,246,246,246,148, - 72, 36,207, 9, 33, 63, 19, 66, 58, 54,165,139, 5, 58, 57, 57, 5, 65,163,126, 80, 83, 87,124, 16, 34, 70,191,129,247,209,163, -215, 45,104,117, 2,112,136, 8, 28,142, 24,122,125, 49,236,236,220, 65, 41, 9, 50,146,197, 69, 50,153,204,247,220,185,115,156, -140,140, 12,136,197, 98, 0,200, 92,178,100,201,247,107,215,174, 77,117,112,112, 96,226,227,227,113,228,200, 17, 68, 69, 69,113, - 39, 79,158,236,219,178,101,203,205,198,158,123,241,183,121, 87,119,175, 59,245, 46, 95,103,215, 81, 44,105,213, 26, 85,150,111, - 79,237,227, 36, 5,128, 83, 79,158, 84, 56,123,202, 99,171, 42,238,102,219,122, 84,126,109,204, 17,158,210,197,236,237, 71, 15, -174,237, 62,124,186,188,176,160,148,223,169, 67,160, 50,102,217, 23,130, 86,173,219,126,179,120,238,191, 92,115,229,226,178,129, -211, 79, 61, 56,116,250, 70,229,248,247, 63,210,127,248,241, 52,213,169,211,103, 15,179, 44,219,161,177, 21,135, 44,203, 34, 63, - 63, 31, 41, 41, 41, 72, 79, 79,135, 76, 38, 67, 81, 81, 17, 42, 42, 42,234,204,141, 22, 21,242, 19,223,255,122, 60, 73, 42,145, - 88,116,239,224,235,121, 61, 49,181, 80, 42,145, 88,248,182,246,108, 71,200,210, 6,251, 17,134, 97, 58,136, 45, 36, 0, 8,202, -146, 47,161,178,180, 18,149,101,149,168, 40,169,132, 90,203,133, 74,205,129, 82,195,129, 87,196, 27,168,172, 82,161,178,184, 28, - 44,195,132,152,135, 27,179,152,197, 44, 77,140,203,241,209,209,209,243, 77, 76,110,178,121,179, 62,240,138,142,142,158, 79, 8, -137,159, 55,111, 94, 32, 76,240,105,166,148,110,173,255,169,189,102, 52,188, 67, 81, 81, 90,165,181, 83,192,136,153, 95,126,117, -106,207, 47,223, 57,171,213,138,108, 7, 59, 75,198,210, 66,232,248,225,148,149,168,168, 44, 29, 94, 89, 98,250, 42,169,210,210, - 82, 60,125,250, 20, 18,137, 4, 2, 62, 31,140, 82, 9, 70, 89, 5,101,105, 49, 56, 90, 53, 4, 12, 3,123, 11, 9,188,220, 93, -209,202,197,213, 36,157,143, 47,252, 86,231,248,110,104, 46, 92,221,205, 31, 66,169, 37,132, 86,150,248, 52,254,119, 0,128, 64, - 32, 0, 22, 45, 55,165, 50, 29, 91,180,104,113,108,247,238,221, 2,153, 76,134, 59,119,238, 36, 81, 74,203, 9, 33, 86, 0,216, -251,247,239,159, 75, 78, 78,142,242,245,245, 5, 0, 31, 99,250,228, 69, 28, 70,167,167,200,121,158,137,140,103,137,176,183,105, - 3,190, 69, 59, 20,150,105, 33,146,180,129, 78,253,194,250,168,146,103, 65,169, 53,109, 97,164, 70,163,129, 94,175,135, 94,175, -135, 70,163,193,199, 31,127,140,203, 87,174, 96,239,145,243,120,250, 36, 13,237, 91,187, 98,194,132,241,232,214,173, 27,174, 92, -185,210,164,174, 73,157,136,110, 65,111,240,214, 13,230, 64,104,233,160, 14,157,123,230,186, 41, 96,139, 82, 74, 76, 40,207,181, - 81, 81, 81,109,211,170,170,144,242,224, 1, 6, 44, 89, 2, 0, 56,121,242,228, 75,207, 50,107,214, 44, 97,106,106,234,135,183, -110,221,250,144, 16,178,142, 82,218,176,179, 57, 5, 78,156,184,138,127,253, 43, 21, 50, 89,181,191,246,190, 61, 47,112,105,198, - 83, 45,222,140,172,182,104,217,218,218, 98,221,186, 32,147,202,147, 97, 24,108,221,186,181,206, 92, 8, 0, 60, 30,175,199,172, - 89,179, 70, 52,148,190,109,219,182, 2, 99, 58,103,141,246, 16,223,201,146, 76,130,163,223,136, 0, 0, 32, 0, 73, 68, 65, 84, -181,105,219, 42,208,218, 49, 24,197,186,196,160,196,220,252,207,102,141,246,216,176, 46,238,153, 74, 66,212,219, 9,147,211,146, - 39, 86,237, 48, 37,143, 79, 78,109,212,216,182,122,127,199,115,153,124,193,180,143,222,115,176,182,117,174,250,249,251, 24, 59, - 14,151, 67,143,221,210,150, 5,122, 59,216,190, 29,250,109,229,191,102, 46, 74,212,232,115,166, 33,231, 88, 90, 83, 33, 46, 24, -134, 65, 94, 94, 30,100, 50, 25,178,179,179, 81, 84, 84, 84,243,238, 23,189,178,114,181,153, 29, 34,148,217,217,200, 58,252, 51, - 90,141, 31,143,174,203,151,129, 97,121, 80, 42, 24,172, 11,239,143,210,114, 37,212, 44,129,123,231,112,124,116,242, 15,112, 40, - 3,108,217,100, 30, 73,204, 98,150,127,168,152, 18,222,161, 22, 16,197,196,196, 68,253,221,255,111, 8,182, 98, 98, 98, 82, 98, - 98, 98, 76,254,175,250, 38, 67,195,115,163,225, 29, 0, 64, 46, 75, 77,119,240, 10,206,171, 82, 86, 89,184, 56, 59,169, 45,196, - 34,182, 92, 94,193, 77,188,151,164,173,204,127,252,176, 25,207,113, 63, 57, 57, 57, 40, 47, 47, 15,217, 89, 89,208, 43,171,192, - 81,107, 64, 85, 10, 12,232, 25, 14, 49, 0, 49,135, 64,192,106,193,227, 10, 81, 81, 41, 7,128,251, 70, 7, 71,157,238, 21,102, -139, 16, 2,161,149, 21,132, 82, 41,132,150, 86, 47, 49, 92,166, 48, 54, 34,145,104,119, 92, 92,156, 91,139, 22, 45,176,108,217, - 50,120,120,120,248,117,232,208, 65,209,171, 87, 47,137,139,139, 11, 2, 2, 2, 16, 30, 30,142, 83,167, 78, 1,128,209,152, 82, - 58,189,248,238,195, 76,244, 40, 42,185,130, 63,126,255, 17, 26,165, 26,157, 34,126,132,150,215, 10, 78,129, 75,193, 62,222, 5, -197,243,163,213,236,129,235, 16, 60,203,206, 4,225, 10, 83, 76,101,158,106,143,147,146,146,176,231,104, 2,220,188,252,145,253, -232, 1, 30, 92, 60,135,203, 78, 14,240,242, 15,168, 51, 3, 53,154, 71, 6,188, 21,155,234,194, 59,136, 74, 74, 74, 68,246,246, -246,234,218,178,115,115,115,251, 43, 96,235,189, 57,115,230,160,140,207, 7, 34, 35, 33, 72, 79,135, 86,171, 69,104,104, 40,186, -118,237, 10, 0, 8, 13, 13, 5,143,199, 67,112,112, 48,220,221,221,177,105,211,166,247,208,200,170, 62, 14,193, 29,189,190,216, -207,219,219,187, 14,104,237,216, 41, 67,226,173,129, 32, 16, 98,227,247, 47,162, 57,120,122,122,226,121,126, 58, 8,161,201, 70, -242,184,220,213,213,117,145,155,155,155,247,218,181,107,185, 98,177, 24,159,124,242, 73,155,202,202,202, 86, 53, 84, 50,230,205, -155, 87,205, 82, 45, 94,140, 37, 75,150, 64,173, 86, 43, 26, 83,182,115,125,176,123, 97, 9,251,161,139,107,139,225,125, 29, 91, -117,232, 55,104, 0,218,248,246, 67,191, 65,217, 0,176,202,158,151,249,206,234,133, 65,135, 29, 91,218,111,251,237,244,217,197, - 61, 35,250, 45,136,158, 98,183, 34,118, 75,169, 81,159,199,242,172,237, 21, 15,133, 99,214,127,183,121,231,250,175,230,205, 16, -103,203, 52,165,185,165,180,210, 82,196,179,244,113, 33,150,159,125,185,252,105, 94, 94,250,108,228,156, 54,186,210,146,101, 89, -164,167,167,215,249,244,169, 84, 42, 84, 85, 85, 33, 39, 39,167,174,205, 40,165,214,111, 78,123,127, 72, 72,149, 82,169,184,126, -239, 81,246,194,233,227,194,170,148, 74,197,163,140,236, 52, 74,191,109, 16,141,113, 56,156,123,138, 10,197, 0, 69,153, 10,178, - 59, 15,225,209,223, 11, 58, 61,129, 70,207, 64, 86, 92, 1,181, 30, 96, 56,124, 4,190, 51, 1, 12,225,161, 40, 47, 23, 28, 46, - 55,201, 60,220,152,197, 44,255, 88, 49, 26,222,129, 16, 18, 31, 22, 22,182,215,144,117,170, 61, 6,160, 6,208,148, 43,143,204, - 16, 76,213,154, 19, 27,251,159,122,122, 77,157, 96,190,226,163,101, 52,188, 67,205,141, 36,164,131,151,251,234,197,227, 60, 88, -189,190,125, 97, 81,129,158,199, 19,241, 91,218, 40,243,155, 83,130,106,181, 58,254,220,185,115,195, 6, 14, 28, 40,122,116, 47, - 9,154,242,114,104,202,203,192,103,245,176,151,116, 1, 71,171, 6,209,104,208,194,143,133,170, 66,130,132,203,201, 58,181, 90, - 29,111, 42,208,226,112,185, 47,251,101, 89, 90, 66,100,101, 13,145,165,101,125,211, 34, 49, 82, 80, 22, 67,135, 14,237, 31, 26, - 26, 10, 74, 41,182,110,221, 10,173, 86, 43,212,106,181,208,104, 52,208,106,181,144,203,229,216,185,115, 39,126,248,225,135,203, - 0,126, 53, 58,152,233, 53,231,206,156,189,208,237,131,113, 81,252,147,241,235,160,215, 48, 80, 18, 15, 84, 85,233, 80,169,177, - 0,227, 48, 30, 40, 56, 1, 46, 79,140,176,224, 54, 56,122,224,144, 22,122,245,121, 19, 81,248, 75,172, 80, 78,118, 38,158, 61, - 73,131,165,252, 57,156,172, 45,160, 72, 79, 67,167, 9, 19, 95,139,157,104,217,178, 37, 88,150, 69,223,190,125,235,156,171, 95, - 23,108, 21, 23, 23,227,248,241,227, 8, 13, 13, 69, 68, 68, 4,114,115,115,145,158,158,142,183,222,122,171, 46, 77, 82, 82, 18, - 18, 19, 19,225,227,211, 52, 73, 88, 84,162, 59,249, 44,231,206,232,183,223,126, 91,112,237,218, 53, 80, 74,225,235,107, 13,107, - 43, 41, 8, 71, 4,127,127,103, 0,213,115,128, 62,125,250, 64, 46, 79,215,151,150,210,147, 70,202,113, 55, 33,228,136, 70,163, -121,220,187,119,111,247, 39, 79,158, 96,230,204,153,188,125,251,246,213, 82,201,136,142,126,121, 49,133, 82,217,184,233,190,125, - 7,191, 47,218,232,237, 34,196,146, 86,173,173, 29,131,209,198,183, 31, 0, 96, 96,212, 7,104,211,214, 19,242,162,187,173, 85, -202,204,225, 2, 94,169,221,221,141,185,169,146,200,160,247, 85,133,191, 63, 2, 96, 74, 0, 96,170,124,180,175, 32,155, 63,126, -255,145, 99,167,166,188, 21, 53,148,175, 99,244,250, 32, 47,190,109,220,225, 19,133,185, 89,217,223, 34,251,116,242, 11,254,175, - 73, 22,143,145,203,229,144, 74,165, 72, 78, 78, 86, 71, 70, 70,138, 56, 28, 14, 30, 63,126, 92, 7,180,156, 29,237, 3,122,116, - 13,242, 91,177,126,231, 25,169, 72, 36, 26,212,167,139,127,234,163,172,103,148,146,204, 70,217, 86,157,238,236,189, 59, 73,125, -157,220,219,114,211,127,191, 6,135, 94,111, 65,173,230, 64,169, 97,161,214, 3,122,174, 0,110, 29,187,195,214,199, 31, 20,192, -205,107,151,117,106,157,238,140,121,172, 49,139, 89,254,209,172, 22,109, 10, 36,213, 28,151, 0,200,140,137,137, 41, 50, 96,155, -100, 0,146, 0,132,212,164,147,213,187, 79,134,234,213,131, 93, 13,244,200, 12, 0,151,225,177,166, 94, 26,147, 38,128,134, 62, - 90, 13, 2,173, 38,150, 84,194,209,209,209,185, 83,167, 46, 62, 63,253,178, 31,148, 82, 60, 76, 92,131,210,194, 7, 88,180,234, -170,143,135,135, 71,196,179,103,207, 18, 76,201, 4,195, 48,251,182,109,219, 54,187,123,231, 78,157, 90,123,120, 32, 41, 51, 3, - 2,202, 64,192, 48,224,104,213,224, 49, 26,120, 4, 49,224, 16, 75,228,229,149, 35,118,247,254,100,134, 97,246, 25,211,235,247, -214, 80, 44,123, 86, 14, 66, 8,214,134, 5, 65,104,101, 9,129,212, 18,159, 30,187, 80, 7,174,226,151,205,131,208,210, 18, 62, -221,141, 7,132,167,148, 42,172,172,172,110,221,187,119,175,107, 80, 80, 16,102,207,158,141,204,204, 76,176, 44,139,130,130, 2, - 85,126,126,126,174, 76, 38,203, 4,112, 24,192, 79,166, 68, 30, 23,168, 85, 27,226, 15,238,152, 22,214, 51,194,241,237,225, 63, -224,200,129, 89, 40, 43,151, 67,161,151,160, 74,165, 71,149,154, 11,123,135, 14,232, 30, 28,140,188,220, 66,164, 92, 59, 83,201, - 83, 43,214, 52,167,129, 18, 66,144,152,152, 8,111,119, 43,164,253,145, 0, 71, 11, 62, 66,220, 93,225,222,163,103, 93,124,169, -166,132,207,133,254,189,247,222,171,139, 12,255,198, 27,111,100,140, 31, 63,222,109,214,172, 89,248,229,151, 95,112,249,242,229, - 87, 28,180, 35, 34, 34,112,233,210,165,165, 0, 22, 27, 35,245, 52, 26, 13,252,252,252,112,243,230, 77,156, 59,119, 14,253,250, -245, 67, 68, 68, 4,238,222,189,139,223,126,251, 13,137,137,137, 32,132,192,193,193, 1,186,106,240,172,107, 76,153, 86,139,184, -175,191,217, 54,127,253,250, 31, 2,199,141, 27,135,131, 7,247,226,131,247,219,131,112, 68, 32, 68,132,161, 67,218, 99,217,242, -155,232,222,189, 15, 28, 29,249, 88,191,238,232, 83,165,146,217,105, 66, 49,174,248,237,183,223,220, 85, 42, 21,202,202,202,168, -165,165, 37, 41, 46,174, 94,209,218, 16,163,165, 80, 40,196,141, 41,186,119,251,254,154,178, 10, 90, 74, 43, 19,135,151,232, 19, - 59,244, 27,148,131,129, 81,239,227,108,252,175,184,112,230, 28,236,121,153, 25,144, 86,156, 42,202, 40,146,231, 87,249,110,246, -239, 60,153,251,172,234,204,230,233,111,219,113,221,220,216,184,232, 31,202,203,154,104,163,148, 16, 66, 74, 82,119, 29, 59, 76, - 49, 52, 60,172,123,219, 32, 79, 55, 97,105, 81, 33, 61,112,244, 84,178, 54,227,224,241, 90,128,101,108,151, 5, 74,233,178,232, -232,232,175,106,142,183, 47, 92,184,112,114,108,108,172,211,243,231,207,235,124,180, 10,139, 74, 46,132, 71,126,198, 20,151,149, -107,182,173,255,114,148, 68, 44, 18, 46,140,221,246,187,142,139,107,141,233,213,179,236,166,119,102, 46,154,241,232, 97, 98,139, - 86, 18, 33,142,126,185, 24, 73,191, 93,132,142, 35,192,191,206, 93,135, 90,203,160,172,168, 24,231, 63,156, 10, 75, 23, 59,252, -240,251,193, 2,150,101,127, 52, 15, 53,102, 49,203, 63, 87,154,192, 34, 13,197,216, 43, 48, 33,221, 77, 19,244,252,101,169,207, - 98, 25,138, 73, 75,240,138,138,138, 10, 47, 93,186,142,223,227, 87, 32, 33,126, 5, 82, 18,147,144,151,171, 65,110,129, 10,214, -214,214, 87,155, 24,248, 7,212, 31, 28, 20, 10,197,136,133,139,190,122, 46,150, 88,160,119,255,254,112,117,114,134,133,128, 15, -174,158, 5,151,240, 81, 41,179, 69,218, 93, 5,230,110,219, 85, 88,169, 80,140,168, 63, 72,212,215,105, 8, 50, 8, 33, 16, 89, - 91, 65,104,105, 5,145,149,245, 75,102, 68,177,181, 53,196, 86,214,224, 9,133, 13, 57,205,191,162,179,178,178,114,228,168, 81, -163, 74,203,203,203, 49,121,242,100, 36, 36, 36, 36,158, 57,115,198, 58, 41, 41, 73, 82, 88, 88,216,150, 82,250, 6,165,116, 75, - 99, 32,171,190,206,146,146, 39, 21, 84,175, 30, 19,243,213,231, 74,149,222, 1,163, 39,238,131,148,147, 3, 61,195,130, 2,112, -183, 23,162,199,128,229, 40,212,132, 99,223,230,149, 10, 86,171, 26,103, 24, 67,171,190, 78, 74, 41,117,113,113,121,165, 12,206, -157, 59,135,209,163, 70, 98,208,240, 97,112,106,237, 13,231, 1,111, 97,208,228,127, 97,243,230,205,224,112, 56,112,116,116,124, -137,225, 48,212,185, 61,145,242,119,223,165,100,247, 93, 74,126,189, 77,121, 0, 38,236,218,181,235,235,144,144,144,139,151, 47, - 95, 94, 3, 96,140,225,127, 25,228,101,137, 33,155,213, 72, 29, 45,152, 49, 99,134,242,209,163, 71,144, 74,165,208,235,245,184, -124,249, 50,126,248,225, 7,172, 93,187, 22,137,137,137,112,112,112,128,143,143, 15,212,106, 53,110,222,188,169, 4,176,160,137, -182,196,202,100,250,145, 27, 55,198, 22, 71, 69,245,194,182,109,223,195,213, 53, 28,124,158, 43,120,124, 39, 72, 45,253,240,243, - 79, 95, 99,240,224, 78, 56,118,116,127, 73, 81,177,126,100,253, 40,238,141,228, 83,117,253,250,117,108,222,188, 25,163, 70,141, -202, 29, 61,122, 52, 83, 94, 94, 94,199,104,213,238,198,190,164,198,199, 76,173, 86,139, 26,211, 57,249,203,123,185, 95,172, 72, - 94, 86,240, 60, 55, 52,225,226,213,247, 46,156, 57,135,167,143, 46,224,194,153,115,248,227,194,149,232,130,231,185,161,157,186, -181, 19,140,152, 60,237,139, 29,135, 14,114, 45,173,221,176,227,208, 65,238,216,207, 62, 95,217,101, 80,191, 5,198,218,124, 77, - 61,210,202,194,130,121,171,214,124, 87,169,215,170, 56,171,191,221,148,167,148,229, 47, 64,237, 82,204, 70,216, 44, 67,157, 10, -133, 98,139, 82,169,116, 87, 42,149,238, 42,149,106, 65,102,102,102,239,217,179,103,203, 24,134,169, 99, 75, 11, 83,142, 94,189, -255,199,175,171,156, 29,237, 36,225, 93, 3,219,175,219,114,224,247,236,156,130,127,215,198,208,106,164,142, 84,149, 74,213,200, - 97, 35,198, 87,149,149,170, 17,246,121, 52, 88,177, 37,212, 12,160,163, 92,232, 9, 15,247, 86,172,131,196,222, 10,187, 51,110, - 43,202,117,218,145,134, 49,180,140, 60,251,107,139, 89,167, 89,167, 89,231,127,167,206,255,205, 66, 8,113, 51,220,235,176, 38, -174,214, 11, 70,203,216,146,202, 22, 45, 90,244,126,123,232, 0,244,137, 90, 8, 74, 41, 30,220,254, 6,165,178,135,104,225, 42, - 66,122,182, 60, 12, 64,130,169,153,161,148,102, 19, 66, 66,103, 44, 88,120,104,244, 27,253,253,131, 90,183, 22,181,106,229, 5, -169,179, 51,138,138,100,248,243, 90,170,110,229,158,184,228, 26,144,101,202, 22, 60, 96, 89,182,218,201, 29, 64,255, 25,115, 65, -184, 92,160, 38,140, 67,237,192,216,186,107, 56, 8,143, 7,134,178, 80,171,213,212,132,124, 62, 35,132,140, 28, 55,110,220,249, -248,248,120,206,160, 65,131, 58, 30, 62,124,152,253, 43, 21, 81, 89,144,118,209,210,165, 93,212,202,121, 83,246,133,246, 27,102, -237, 27,216, 69,208,165, 21, 23, 90, 29, 65, 94,110, 22,226, 15,221,208,166, 94, 63, 35,167,122,213,152, 42, 89,211, 91,240,104, -181,218,236,182,109,219,186,108,222,188,185,206, 25,158, 97, 24, 20, 21, 21,225,234,213,171,232,208,181, 59,252,223,255, 16, 50, -153, 12, 27, 55,110,132,167,167, 39,134, 12, 25,130,146,146, 18,232,245,250,108, 19,235,138, 1,112,166,230,243, 18,160,173, 33, - 84,168, 49,179,161,143,143,143, 80,165, 82,117,116,115,115,227, 18, 66, 54,104, 52,154, 73,243,230,205,115, 91,181,106, 21,218, -183,111,143,162,162, 34, 72,165, 82,248,250,250, 66, 38,147,225,198,141, 27,140, 66,161,216, 12, 96, 25,165, 84,102, 36,127,143, - 9, 33,161,211,167,127,122,232,235,216, 41,190, 42,117, 31,161,189,125, 79, 80,170,135, 76,150,137, 10,249,101,237,242,101,191, - 62, 41, 40,212,141,160,148, 62, 50,177,154, 22, 79,155, 54, 13,168,217,130, 39, 61, 61,253,142,191,191,191,111, 99,140,150, 41, -178, 46,238,153, 10,192,158,213, 51,195,103,202,139,238,250,218,243, 50, 51, 66,131,216,141,235,226,158,169,150,206,180, 93, 81, -148,153,144,150, 95,117,102,243,142, 67, 7,185, 19,135,143,100, 60, 44, 31, 69,139,157,233,129,126, 67,140,214, 15,237,216,177, - 99, 75, 66, 74,218, 20, 22, 63,188,245,193,228, 41,239,216, 8,148, 39, 67, 60,138,125, 56,158,157,196,137,137,137, 25,166,238, - 25, 90, 79,111, 26, 33,164,247,188,121,243,206, 80, 74, 95,242, 77, 40, 44, 42,185, 16, 22, 53,141,150,149,149,223, 41, 76, 61, -122,207, 4, 93, 55, 8, 33,253,131, 58,116, 58,248,245,170, 88,151, 62, 51,102,243,210, 46,254, 14, 48, 58,100, 37,252, 14, 70, -164, 97,215, 93, 57, 91, 80,174,213, 14, 55, 71,133, 55,139, 89,204,108, 86, 83, 88,228,191, 61,251,245,157,225, 81,179,247, 33, -207,148,187,159, 61,123,150,224,227,237,241, 91, 90, 90,239, 55, 60, 61,156, 0, 0,233, 25,121,200, 45, 80,255,102,170,217,176, - 1,176,213,101,215,241,147, 99, 68, 34, 81, 20,169, 9,225, 64, 95, 99, 83,105,189, 94,255,172,117,235,214,141, 92,109, 56,212, - 19,195, 48, 5, 38,230,243,119, 66,200,120, 31, 31,159,216,172,172,172, 67,148,210,170,191, 90, 19,149, 5,105, 23,237,237,125, -188,175,156, 59,248,249,181,223,227, 7, 80,189,166, 3, 0, 16,158,176, 89,155, 74, 87, 86, 86, 78,249,228,147, 79,182,240,249, -124, 79,212,248,156,213,250, 96, 49, 12,195,213,106,181, 98,134, 97,184, 0, 8,135,195,209,243,249,124,213,161, 67,135,244,122, -189, 62, 91,173, 86, 79,249, 11,244,104,179, 94,128,147, 39, 79,182,178,179,179,123,131, 16, 50,138, 82,234, 87, 81, 81,161, 94, -180,104,209,149,184,184, 56,121,235,214,173,223,140,140,140, 36,246,246,246,184,121,243, 38, 45, 46, 46, 62, 0, 96, 1,165, 52, -189, 25,249, 73, 39,132,132, 76,249,215,143,239,218,219,111,137,164, 20,255,143,189,235,142,139,234,104,187,103,238,221,190,203, -194,238,210, 23,176,128,130,136, 5, 16, 37,198, 18, 81, 19, 19,177, 71, 44,177, 71,163, 38,209, 24,163, 6,141, 53,182,196,215, -196, 18,141, 93, 99,141, 61,138,216,162,198, 22,163,198, 18, 43,138,130, 40,189,215,133,237,119,190, 63,100, 9, 33,128, 11,234, -251,198,124,123,126,191,203,101,119,239,158,157,153, 59,119,230,204, 51,207, 60, 19, 8, 10, 66, 24,220,204,207,231, 14, 23, 23, -155,183,149, 10, 70,107,249, 76, 21, 44,105,115,111,221,186,181, 9, 0,191, 50, 31,173, 26, 65, 90,116, 80, 91,146,240, 46,177, - 43,222,255,237,178, 36, 45, 0,204, 90,146,151, 15, 96,253,248,222, 42,238,238,213,245,139, 60,236, 99,167, 44,219,159,179,209, - 26,186,224,224, 96, 31,134, 97,250, 3,104,234, 34,202,107,232, 44,204, 55, 19, 66,195, 8, 97,156, 0,220, 8, 8, 8, 56, 4, - 32,169,150,247,249, 62,128,186, 21,223,207,184,125,224, 55, 0,191,213,144,235, 50, 33,164,225,167,147, 38,126, 36,228,243,223, -132,217,220,124,238, 79,187,169,109, 83,105, 27,108,176,225, 95,102,213,250,160,178,247,121,214, 18, 60,140, 75,234, 2, 0,190, -190,190,244,193,131, 7, 53,238,112, 43, 27,141,227,105,196,247, 31,159,135, 39, 43, 43, 43,228,101, 22, 28,165,116, 7,128, 29, - 47,146,179, 84, 72,125, 89,122,212, 54, 93, 55, 1,132,254, 47, 43,149,197,170,133,167,155, 48, 87,138,183,222,122,235,177,193, - 96, 56, 1, 32,145, 16,162, 0,144, 99, 48, 24,142, 25,141,198,116, 66, 72,200,183,223,126,107,137,124, 63,151, 82,122,165,150, -233,224, 0,108, 47, 61, 94,116, 30,183,171,213,234,137,142,142,142, 13,180, 90,173, 80,171,213, 10,202,143, 1, 36, 18, 73,166, -181, 92, 10, 57,249, 65,192,203,117, 84,200,201,223,132,148,202, 3,123, 75, 52,183, 26,169, 60,176,215, 90,190,107,215,174,197, - 5, 5, 5,109,101, 24,166, 62,165,212, 21,160, 14,148, 34,147, 82,154,197,227,241,146,239,220,185,147,252, 79,105,128, 74,133, -212,226,210,195, 6, 27,108,176,225, 95,133,234,124,180,120, 53, 37,139,141,141, 37,182, 34,181,161,188,216,170,238,243,132,132, - 4, 29,128, 11,165, 71,197,239, 94, 1,208,253,159,158,199,148,148,148,224, 23,193, 51,114,202,205,100, 0, 19, 66, 42,217,218, -121,214,242,156, 66, 0,147,195,122,212,140,243,250,245,235, 79, 0, 60,177,213, 68, 27,108,176,193,134,255, 29, 42,179,102, 89, -189,215,161, 13, 54,216, 96,131, 13, 54,216, 96,131, 13, 85,195, 34,170, 42,139,163, 69, 0,116,174,226, 75, 86,135,174,175,205, -234,131,103,241,219, 56,109,156, 54, 78, 27,167,141,211,198,105,227,252,247,113,254, 91, 81,153,200, 2, 0, 82,139, 69, 73, 53, -249,209,206, 47,186,192,109,156, 54, 78, 27,167,141,211,198,105,227,180,113,254,251, 56, 95,117,145, 85,137,224,180, 77, 29,218, - 96,131, 13,255,191,177,103,207, 30,171, 54, 21, 29, 48,101,125, 55, 59, 59,229,140,162,130,252,175,126, 92, 60, 98,191,229,253, -190,125,251,154,109,165,104,131, 13, 54,212,202, 25,222,199,199, 43,128, 49,115,109, 40,101, 88,202, 80, 35, 41, 40,217,249, 48, - 39,231, 47, 97, 7,234,212,169,163,224, 51,232, 78, 40,149, 17,194,153, 57,150,249, 53, 46, 46,241, 78, 13, 20,160, 80,169, 84, -126, 44, 16, 8, 58,235,245,122, 79,134, 97,146,116, 58,221,137,226,226,226, 21, 21, 3, 23,254, 47,209,168, 81,163,129,167, 79, -159, 86,180,109,219, 86, 39,145, 72, 76, 37, 37, 37,188,163, 71,143,138,222,121,231,157,188, 7, 15, 30,212,106, 69,162,135,135, - 71,199,245,235,215,123,119,233,210, 5, 13, 27, 54,212,244,239,223, 95,208,186,117,107,193,200,145, 35,227,147,147,147, 79,213, - 80, 73, 7, 16, 66,182, 16, 66, 88,142,227,134,148,174, 72,124, 25,138,157, 97, 24,102, 52, 33,164, 55,165,212,135, 16, 18, 71, - 41,221,207,113,220, 26,107,162,227, 87,194,247, 46,128,174, 12,195, 4, 3, 0,199,113,215, 0, 28,166,148,238,125,142, 52,190, - 52, 78,169, 84, 26, 4, 0,197,197,197,215, 95, 20, 39, 33, 36,168,244, 33,173, 21, 39, 33,100,184, 68, 34, 25, 5, 0, 37, 37, - 37,235, 40,165,155,106,156,152, 53,141,105,240,156, 24, 0,192,181, 89,254, 0,128, 26,189, 30,125,151,212,228,183, 42,227,171, - 17,199,223,203,160,235,160, 65,131, 22,108,219,182,109, 22,165,244,192,203,168,251,110,110, 94, 43,190, 89,182, 86, 61,225,227, -247,191,194,211, 29, 33,170, 69, 19, 66,222, 20,178,108, 15,189,217,124,238, 14,176, 27, 0, 79,165, 82, 13, 20, 10,133,237,245, -122,189, 59,143,199, 75,213,235,245,103,243,243,243,119, 80, 74,141,207,157,192, 24,162, 52, 20,195,141,112,127,238,243, 70, 25, -232, 4, 82,164,193,159,230,254, 3, 70,251, 12,158,198,219, 49, 2,216, 80,155,112, 30, 44,203, 78, 80,171,213,189, 11, 10, 10, -138, 89,150,165, 79,105,201,211, 63, 0, 24,134, 33, 28,199,101,100,103,103, 15,249,127,100, 69,169, 91, 90,174,245, 74,223,226, - 3,112, 5,112, 3,192, 4, 74,105,145, 77, 2,253,215,238, 69, 69,139, 86, 52,165, 52,181, 76,104,149, 11,119,223, 33, 60, 60, -252,140,143,143, 87, 64,223, 94,125, 22,140, 25, 61,150,176, 44,131, 91,183,111,243,222, 27, 50,252, 45,149, 74,229, 97,167,211, - 53, 6, 33, 92,177, 88,124,203,104, 52, 36,239,222,177, 77,238,223,168,145,217,108,230,176,122,205,170,119,124,124,188,166, 89, - 35,182, 8, 33,126,110,110,110, 91, 34, 35, 35,221,122,244,232,193,186,185,185, 33, 33, 33, 65,241,227,143, 63, 54,250,238,187, -239,250, 17, 66,134,148,198,242,169,105,102,219,185,169,152,183,228, 18,210, 9,133,102, 20, 26,113, 50,173, 4,199, 41,165,231, -106, 91,128,197,197,197,227,138,139,139, 67, 91,182,108, 73, 55,108,216, 64,134, 13, 27, 70, 9, 33,164,164,164,228, 7,212, 50, -244,131, 76, 38, 91,217,165, 75, 23, 95, 95, 95,223,184,135, 15, 31,118,221,181,107,215,225,161, 67,135,250,200,100,178, 88, 0, -126, 53,164,219,148,157,157, 29, 88, 82, 82, 2, 79, 79,207, 13, 0, 90,188,132, 74, 68, 88,150,221,239,225,225, 65, 23, 45, 90, -116, 32, 48, 48,208, 53, 39, 39,199, 52,121,242,228,206, 23, 47, 94,124,135, 16,210,195, 90,177, 69, 8, 81, 18, 66,214,184,185, -185, 57,125,245,213, 87, 15, 66, 66, 66,110,136, 68, 34, 97,108,108,172,116,226,196,137,159, 50, 12,211,143, 82, 58,154, 82,235, - 59, 8, 11,167,135,135,135,211,130, 5, 11, 18,130,131,131,111, 9, 4, 2, 65,108,108,172,236,243,207, 63,159, 80, 91, 78,134, - 97, 86,183,110,221, 90, 57,107,214,172,187,141, 26, 53,186,192,178,172, 48, 41, 41,137,153, 61,123,246,199, 44,203, 70,112, 28, - 55,166, 54,233,116,117,117, 85,206,158, 61,251,110,235,214,173, 47, 10, 4, 2,193,189,123,247,152,200,200,200,143,107,146, 78, - 71, 71,199, 48, 71, 71,199,181,105,105,105, 60, 0,112,119,119,111,213,160, 65,131,239,202,239,105,105,113, 13, 48, 26,141,133, - 90,173,118, 80,118,118,118,165,129,112,135, 77, 93,222, 29, 0,190, 51, 88, 94, 63, 61, 63,235, 53,176, 58,202,154,124, 7,187, - 19, 10, 0, 3, 63, 91,220,235,233,249,233,251,223,104, 0, 30,143,199,109,113, 39,244, 90,170,245, 33, 99, 8, 33, 61, 59,118, -236, 56,251,212,169, 83,171, 58,116,232,240,249,214,173, 91, 93, 18, 19, 19,191, 38,132,120, 13, 24, 48, 96,216,201,147, 39, 23, -102,102,102,238,121, 81,245, 95, 40, 16,137, 8, 67, 32, 17, 75,237,173,185,158,207, 48,221, 46,244,236, 57,106,221,189,123,193, -223,197,196,120,107,220,221, 67,199,143, 31,239,218,167, 79, 31,198,203,203, 11, 15, 30, 60,112,220,186,117,107,227,117,235,214, -245, 38,132,124, 66, 41,125,252, 60, 34, 75,147,135,102, 58, 61,130, 41,133,226,207, 50, 66,158,200,128,107,178, 24,114,243, 31, - 32,182,102,110,218,180,105,214,131, 7, 15,176,112,225, 66, 0, 88, 81,195,246,103, 98,239,222,189,195,247,237,219, 39,217,189, -123,183,164,101,203,150,112,115,115, 67,233, 96,170, 44, 48,181,183,183,247,255,171,206,221,209,209,113, 67,124,124,124,152, 76, - 38,251,203,251,113,113,113, 65,190,190,190,249, 0, 62,171,169,112,115,118,118,222,206,113,156, 46, 59, 59,251,125, 0,144,203, -229,219,100, 50,153, 50, 53, 53,117,218,203, 26,200,148, 41,147, 10, 90,228, 85,182,104, 85, 26,176,180,252,142,217,140,153,107, - 51,102,244, 88,210,127,224,128,180, 7,113,241, 28,143, 47, 28,120,244,216, 49,105, 64, 64, 0,163, 91,177, 2,166,204, 76, 24, - 63,253,244,245, 19, 39, 78, 24, 35, 6, 14, 46,225,179,100,147,143,119,125,233,206, 29, 63,186,237,219,187,167, 13,128, 59,207, -178,100,185,185,185,109, 57,125,250,180,135,183,183, 55,242,242,242,144,144,144, 0,141, 70,131,126,253,250,241,219,180,105,227, -209,183,111,223, 45,132,144,182,214, 90,182, 8, 33,174, 13, 61,121,135,190,153,217,207,239,157,183,218,200, 60,188, 26,128,166, -105,145,248, 48,166,229,161,211, 23,199,251, 42,152,251, 15,242,105, 55, 74,105,122, 77, 11, 48, 43, 43,107, 74,239,222,189,247, -134,133,133, 57,139, 68, 34,168,213,106,210,163, 71,143,140,148,148,148, 57,207, 33, 92, 80, 58, 10, 51,151, 63, 87,220, 30,200, - 74,120, 42,149, 74, 40,149, 74, 0,240,120,222,145,167, 66,161, 88, 33,151,203,251, 22, 20, 20,148, 48, 12, 67, 9, 33, 84, 38, -147, 73,148, 74,229, 31,119, 99,238,171,117, 58, 93,195,197, 75,215, 45,235,216, 46,208,254,231,159,127, 70,159, 62,125,232,241, -227,199, 71, 3, 88,101,229,111,172,233,221,187,119,241,140, 25, 51,180, 15,226, 18, 60,238,222,143, 35, 50,177,144,115,114,114, -226, 95,190,124,153,183,100,201, 18,241,236,217,179,215, 0,232, 91,131,116,175, 25, 48, 96,128, 97,210,164, 73,169,247, 30,196, -187,220,188,251,128,218,137,249, 38, 39, 39, 71,246,226,197,139, 92,109, 56, 25,134, 89, 61,101,202,148,130,209,163, 71,231,102, -231,228,187,229, 22, 20, 81, 17,159, 53,186,185,185,241, 14, 28, 56,160,219,190,125, 59, 51,106,212,168,213, 0, 34,106, 80,196, -171,123,244,232, 81, 24, 25, 25,153, 23, 27,247,200,237,230,157,251,144,138,248, 70, 87, 87, 23,246,247,223,127, 55, 44, 94,188, -152,153, 55,111,158, 85,233,148,201,100,155,119,237,218,197, 59,112,224,105,219,247,219,111,191, 49, 62, 62, 62,210,242,215,148, -104,117, 96, 8,144,149,149, 37,109,221,186,245,102, 0,158,127, 19, 65,115, 98, 48,108, 42, 48,110,220,184,212,154,214,151, 96, -247,241,184,246,140,240,183,220,234,198,116,224,103,139,123,241,120, 60,110,212,168, 81,105, 21, 63,215,106,181, 4, 64,143,224, - 26,136,173,174, 93,187,126, 17, 29, 29,221, 96,235,214,173,223,110,223,190, 93, 15, 0, 98,177,216,233,199, 31,127, 92,216,175, - 95, 63,244,235,215,111, 6,128, 23, 38,180,204,212,108, 0, 0,145, 88, 36,138,137,137, 33,254,254,254,213, 58,183, 26, 56,238, -202,186,123,247, 66, 62,244,247,111,153,195,113, 13, 5,239,188, 83, 52,113,226,196,172,130,130, 2, 36, 36, 36,192, 96, 48, 96, -216,176, 97,108,135, 14, 29,212,253,250,245, 91, 78, 8,121,151, 82,106,176,194,170,179,216,195,195,227,131,252,252,252, 34,139, - 85,167,113,125, 57,175,125,144, 73,212,188,161, 81, 40, 96, 77,130,238,159,114,228,248, 10,162,241,247,198,121, 0, 16, 20, 35, - 83, 0, 60,183,208,114,240, 34,222,102, 62,230, 57,215,147,190,153, 25, 87, 60,171,232, 49, 93, 81,157,197, 86, 38,147,245,210, -104, 52,123, 74, 59,103,191,110,221,186,225,226,197,139, 0,208, 6,192, 10, 66, 72, 71,134, 97,222,227, 56,110, 61,165,180,186, -173,220,198,247,236,217,243,205,125,251,246,201, 1, 96,207,158, 61, 48, 26,141,240,241,241,129, 64, 32,128, 80, 40, 4,159,207, - 47,219, 29,228,255, 19, 24,134, 17,221,184,113, 3,106,181,186, 98, 61, 1,128,246,181,160,156, 17, 23, 23,215,250,234,213,171, - 8, 11, 11,155,209,172, 89,179,183,207,156, 57,227,150,157,157,141,176,176,176,229, 0, 14,188,236, 60,149,215, 34,255,154,251, - 84, 65, 73,118,120,170,204, 24,150,101, 25,196,199, 37, 24,195,194, 58, 13,125,242,228,137, 93,104,104, 40,195,231,243,161, 57, -117, 10,218,223,127,135,157,157, 29,122,247,238,205, 63,123,246,172,189,189,157,253,200, 71,241,143, 10, 89,150, 1,165,204, 51, -125, 30,148, 74,229,199,211,166, 77,115,243,245,245,133,201,100, 42,139,104,110, 50,153,144,152,152, 8, 59, 59, 59, 12, 25, 50, -196, 69, 42,149,126,108,101, 39, 91,207,207,199,229,218,233,195,107, 90, 76, 28,211, 85,230, 39,253, 25,178,196, 79, 96,183,231, - 67, 52, 78, 57,138,200, 94,161,178,227, 43,103, 4, 55, 80,171,174, 17, 66,234,213,180,144,180, 90,237,249, 91,183,110,141, 60, -115,230, 12, 7, 0,191,252,242, 11,189,123,247,238,232,231, 25,133,114, 28,135,188,188, 60,112, 28,199,150,190,182,156,255,167, -230,125,123,123,251,213,111,191,253,246,128,199,143, 31, 75,142, 28, 57,226,248,228,201, 19,167, 71,143, 30, 57,251,249,249,241, - 22, 46, 92, 24,173,213, 25, 88,163,153,234, 77,102, 99, 97,234,237,219,113,185,233,233,215, 54,110,220, 88, 66, 8,233,109,229, -111,188,235,238,238,238, 56,117,234, 84, 16,190,180, 85,163,198,205,124, 89,190,196,129,225, 11, 29, 74, 74,180,230,248,248,248, -196,169, 83,167,214, 15, 12, 12, 84,151, 78,175, 89,197,169, 86,171,157, 38, 77,154, 4,158, 72, 30,212, 60, 48,184,129, 80, 36, -147,179,124,137, 60, 52, 52,180, 67, 92, 92, 92, 74,100,100,164,123,203,150, 45,107,196,217,178,101, 75,229,168, 81,163, 76, 98, -137,188,181,183,183, 79,227,230, 77, 26,135,251,249,249,245,226,241,120,166,204,204,204,199, 67,134, 12,113,239,222,189,187,107, - 77, 56, 93, 92, 92,148,145,145,145, 38,175,186, 62, 93,186,188,249,214,107, 2,137,220,129, 39,148, 41,138,139,181,230,123,247, -238, 61,158, 62,125,186,123, 80, 80,144,139, 53,156,197,197,197,124, 39, 39, 39, 52,109,218, 20, 1, 62, 62,200,207,207,199,190, -125,251,176,105,211, 38,172, 95,191, 30, 59,118,236, 64, 72,219,183, 32,151,203,145,146,146,130,130,130, 2,254,127,187, 78,113, -171, 27,211,239,244, 31,244, 24, 59,118,108,202,168, 81,163,210, 36, 18, 9, 87,241, 80,169, 84,230, 65,131, 6,165, 15,249,124, -105, 15,203,212, 98,117,150,172, 78,157, 58,221, 56,124,248,240,195,173, 91,183, 34, 32, 32, 0, 93,186,116, 17, 2,192,199, 31, -127, 44,236,215,175, 31,118,237,218,133, 61,123,246,220,241,243,243,251,149, 16,210,211,154,116, 14, 25, 50,164,109, 68, 68,196, -185,136,136,136,235,253,251,247, 95, 59,122,244,232,191,244, 92,169, 41, 73, 87,244,122, 61, 2,131, 91, 74,231,110,184, 52,232, - 89,124,119,129,173,107, 99, 98, 54,125,117,251,246,227, 25, 1, 1,138,186,143, 30,169,126, 88,188,216,201,178, 73,183,209,104, - 68, 98, 98, 34,148, 74, 37, 6, 13, 26,228, 36, 18,137,134, 88, 81,127,150,244,236,217,115,248,147, 39, 79,236,214,173, 91,231, -126,253,250,117,117,106,106,170,251,201, 19,199,156, 39,127,246,177,220,193, 78, 40, 76,201,124, 42, 84, 31,165, 64, 22, 19,143, -182,148, 66, 81,126, 58,177, 86,237,130,154, 72,164, 94,228,187, 6,109, 21,247, 39,237, 10,234, 31,249, 83,144,210,201, 75, 60, -173,154,116, 54, 95,180,104,209,238,168,168,168,129,109,219,182,221, 75, 8,145, 84,114,141, 56, 36, 36,100,223,174, 93,187,134, -183,107,215,238, 60, 33,164,105,149,163, 72, 79,207,222, 63,253,244,147,163,229,181,147,147, 19,196, 98,241,223, 68,150, 64, 32, - 0,195, 48,248,255,132,204,204,204,247,218,183,111,191,187,107,215,174,186,171, 87,175, 34, 51, 51, 19, 30, 30,101, 99,237,180, - 90, 80,170,164, 82, 41,188,188,188,224,235,235, 59,240,236,217,179,110, 70,163, 17,143, 30, 61, 66, 70, 70,198,181,255, 70,158, -202,107,145, 87, 9, 21,246, 57,252, 0, 64,244,223,132, 86,233,222, 66,167, 1,128, 18,162,185,113,235, 22,159, 21, 10, 7,111, -219,190, 93, 36, 16, 8,240,248,241, 99,220,185,115, 7,197, 39, 79,162,228,194, 5,164,167,167,163,168,168, 8,174,174,174, 88, -179, 97,131, 76,111,166, 35,238,221,191,207, 82,230, 79,127,131,170, 86, 36,136, 68,162,206,125,250,244,169, 82,144,165,164,164, -160,107,215,174,124,150,101, 59, 87, 98,158, 59, 81, 33,115, 68,237, 76,162, 78,238,157,235,238, 46,188, 3, 60,152, 8, 20, 94, - 3,168, 14, 48,233,129,228,155, 64,244, 28,212, 45,138, 33,199,230, 14,117,243,144,242,162, 72, 5,179,145, 21,203, 91,125,252, -253,253,215, 15, 30, 60,152, 1,128,142, 29, 59, 18,127,127,255,181,132, 16,159,106,204,136, 39,158,209, 73, 94,204,205,205, 69, -191,126,253, 28, 27, 52,104,112,162, 95,191,126,142,150,247,107,203,105,177, 38, 55,105,210, 36, 91, 34,145,236, 32,132, 60,179, -129, 45,207,169, 80, 40, 86,116,237,218,181,239,246,237,219, 5, 0,112,250,244,105, 68, 69, 69,225,246,237,219,136,141,141,229, -130,131,131,157,151,174,223,189,122,197,170,205, 75,122,181, 9, 84,119,104, 21,220,216,174, 40,183,200,213,213,181, 13,165,212, -199,202,116,118,157, 51,103,206,157,187, 15, 31, 59, 48, 60, 62, 79,192,231,137,236,237,101,174, 74,185,204, 83, 37, 21,123,136, - 24, 98, 87, 92, 92,156,182, 99,199, 14, 14, 64, 87,107, 57,231,206,157, 27,127,247,193, 99, 5, 97,120, 60, 62,143, 47,176,179, -147, 42,222,233, 18,214, 18, 0, 4,160,130,130,130,130,244, 77,155, 54, 25,106,194, 57,107,214,172, 91, 57,121, 69, 74, 30,159, -207,231,241,216,178,178,148, 73, 36,206, 82,145, 72,168,211,233,146,151, 45, 91, 86, 82, 19,206, 57,115,230,220,185,247,240,137, -138, 33,132, 37,132,225,217,203,101,142,142, 14, 82,103,103, 59,137,147,148,199, 10, 11, 10, 10,146,183,108,217, 98, 21,167,193, - 96, 16,164,167,167,227,238,221,187,240,106,217, 18, 63,255,252, 51,234,212,169,131,126,253,250, 97,192,128, 1,144, 72, 36,232, -216,186, 25,166, 78,157,138,135, 15, 31,194, 96, 48,136, 42,227, 44,243,147,170, 0,181, 90,125,245, 89,245,167,252,119, 43,166, - 51,216,157,208,239,244, 31,244, 40, 47,176,170,226, 87,169, 84,230,202,172, 93, 21, 57,187,118,237,250,197,201,147, 39, 27,108, -217,178,165,199,144, 33, 67,206,111,217,178, 5,175,189,246, 26,238,222,189,139,250,245,235,227,135, 31,126,192,128, 1, 3,206, - 47, 95,190,188,199,213,171, 87, 3,189,189,189,167, 61,139,179,127,255,254, 31, 5, 5, 5,157, 74, 75, 75,107,157,147,147,211, -116,223,190,125, 35,122,247,238, 29, 63,112,224,192, 78,101, 22, 45,163,113,123,244,193,189, 8,239,209, 7,141,154, 52, 93, 61, -108,218,214,102,213,113, 82, 74,233,109, 96,237,166,212,212,204,237, 90,109,113, 63, 62, 95, 42,189,116, 73,181,103,213, 42,167, -242, 43,189,147,147,147,209,189,123,119,190, 64, 32,104, 87, 93, 58, 9, 33,139,122,245,234,213,111,223,190,125, 74,139, 85,231, -194,133, 11,184,121,243, 38, 18, 18, 18,144,151,151,135, 78,163,139, 48,118,225, 83,238,177, 11, 41,222,250,152,202,106,217,134, -148, 65, 90,151,184, 57,218,243,126, 29,177,172,209,199, 31,172, 14,224,217,169,248,216,246,121, 44,210, 31,104,247, 84,145, 78, -210,186,117,235,173, 17, 17, 17, 68,175,215, 67,175,215,235, 41,165, 37,149,113,123,120,120,136,155, 55,111,142,209,163, 71, 51, -246,246,246,203,171, 74,167, 70,163,209, 29, 62,124, 24, 67,134, 12,193, 39,159,124,130,134, 13, 27, 66,169, 84,130,207,231, 99, -243,214,157, 78, 3, 70,140,241,107,209,182,125, 96, 64,139,215,154, 23,234,216,150, 2,169,106, 20,169,100,106,224,101,172,144, -251, 39,112, 54,107,214,172,237,229,203,151, 69,237,219,183,199,227,199,143,193,231,151,141,167,204,207,147,206, 57,115,230,136, -180, 90, 45,254,248,227, 15, 12, 29, 58, 52,217, 96, 48,124,250,178,243, 94, 81,139,188, 74,160,148,174,173,112,164, 86,101,209, -154, 3, 0, 70, 14, 81,131,135,142, 40, 62,116,232,144, 84, 40, 20,226,241,227,199, 72, 77, 77,197,230, 77,155,204, 29, 93, 92, -191,128,178, 5, 0, 0, 32, 0, 73, 68, 65, 84, 10,187,120,120, 20,108,222,180,137,234,245,122, 80, 74,225,239,239,143,190,125, -251, 74,222,237, 55, 48,131, 20,148,236,180, 66,249,185, 91,230,215, 71,140, 24,241,183,207, 39, 79,158, 12,123,123,123, 16, 66, -220,172,200, 95,196,248, 57,189, 60,149,222,138,116,154,182, 57, 7,172, 24,224,201, 1,158, 61, 32,118, 0, 68,114, 64, 40,133, -238,234,169, 28,134,118, 73,232,211,238,125,143, 26, 78,245, 64,173, 86,207, 56,117,234,148,243,213,171, 87,105, 65, 65, 1, 82, - 83, 83,233,130, 5, 11,156,213,106,245,140,218,222,148,148,148,148,185,225,225,225,233, 67,135, 14,117, 56,122,244,168,215,208, -161, 67, 29,194,195,195,211, 83, 82, 82,230, 62,207,205, 22, 8, 4,236,237,219,183, 85,243,230,205, 27, 0,224, 74,211,166, 77, -179, 61, 61, 61,175,148, 58, 77, 86, 11,185, 92, 94, 38,178, 44,214, 53, 30,143, 7, 62,159, 15,181, 90,173,207,201,201, 49,183, -107,225, 35,241,119, 96,140,106,145, 64,162,146,136, 61,229,246, 14,161,217,217,217, 55, 8, 33, 86,237, 79, 72, 8, 9,106,213, -170, 21,223, 76,249,220,216,193, 29,213, 31, 15, 15,115,249,126,222,168, 58,203,230,126,224,177,104,246, 72,255,185, 83, 6,133, - 49, 28,167,173, 95,191,190,155,197,161,221, 10,243,121,112, 72, 72, 8,143, 3, 31,119,239, 39,164, 63, 78, 74, 46,124,179, 67, -235, 50,203,101, 64, 80,112, 23,103,103,231,246,254,254,254, 33,214,198,132,145, 72, 36, 65,141, 26, 53,226, 49, 44,159, 56, 42, -229, 94,114, 59,137,171,229, 51,123,133,226,117,149,179,115, 4, 67,105,190,187,187,187,139, 68, 34, 9,170, 65,222,121, 28, 4, -112,117, 81, 57, 56, 59, 41,236,186,132,181,105,216,250,245,214,126,205, 66, 95,107,221,164, 69,200,187,196,100, 42,240,241,241, -113,177, 56,201, 87, 7,157, 78, 39,222,190,125, 59,230,205,155,135,230,117,235,194,195,195, 3, 46, 46, 46,184,112,225, 2, 46, - 95,190, 12,165, 82,137,140,140, 12, 44, 94,188, 24,251,247,239,135,193, 96,144,215,180, 62, 89, 35,182,170,131,201,100, 98, 42, - 10,172,170,248, 37, 18, 9,103,113,146,175, 10,135, 15, 31,222,106,177,100, 77,152, 48,161,237,210,165, 75,207,199,196,196,192, -206,206, 14,151, 47, 95,198,136, 17, 35,206, 47, 95,190,188,237,152, 49, 99,176,105,211, 38,196,199,199,111,168,142,175,127,255, -254,179, 71,142, 28,185,236,204,153, 51,140,171,171, 43,148, 74, 37,122,245,234,133, 13, 27, 54,240, 76, 38,211,198,136,136,136, -235, 17, 17, 17,215,205,137,199,191,216,189,126,193,133, 91, 55,174,227,163,241,147,132,122,147, 49,210,138,134,151,150,216,217, - 21,154,218,183,207,217,101, 52, 22,247, 23, 8,164, 14,215,175,171,162, 54,110, 44, 19, 91, 83,167, 78,133,131,131, 3,240,212, -129, 25,213, 88,117, 62,216,191,127,127, 89,123,232,232,232, 8,161, 80, 8,129, 64, 0, 62,159, 15,150,101,113, 98,181, 12,171, -166, 62,213, 23,171,166, 18, 28, 95, 65,158,107,111, 86,153, 39,105,170,116, 21, 94,255,240,135, 38,129, 77, 59, 57,226,194,143, -105, 88, 16,126, 53,233,242,174,204,137,218,140, 42,183, 82,106, 49,121,242,228,128,140,140, 12,252,254,251,239,248,253,247,223, -231, 85, 81, 54,218,131, 7, 15,126, 93, 84, 84, 4,111,111,111,244,236,217,179, 61, 33,164,101, 21,207, 13, 66, 66, 66,208,189, -123,119,132,133,133,161,121,243,230,208, 27, 76,252,136,193, 31, 52,186, 29,159,233,177, 96,241, 2,233,169, 95,246, 49,231,207, -159, 97,183,238, 61,238,208, 58,236,173,101, 2,185,251, 69, 34,117,114,255,183, 91,180,196, 98,241,210, 51,103,206,184, 25, 12, - 6,220,186,117, 11,159,124,242,201,243,238, 25, 90,102, 0,241,242,242,194,233,211,167, 49,104,208, 32,109,122,122,250,111,255, -173, 60,149,215, 34,255, 22,240,202, 41,200, 50, 60,121,242, 36, 79,165, 82,121, 52,106,212,136,209,235,245, 79,167, 36,246,236, - 49,175,223,184, 49, 90,171,213,142, 7, 32, 88,241,253,247,171, 61, 60, 61,195, 6, 15, 25, 66,140, 70, 35,194,195,195,133,135, - 14, 29,114,124,152,158,254,204, 13,145, 43,142, 54,134, 13, 27,134,165, 75,151, 2, 0,198,141, 27, 87,102, 90, 39, 86, 56, 44, -217, 57,160,107,151,110, 33,246,137,178,239,236, 13,175, 27,139,234, 61,148, 95,148, 21, 73, 66,192, 8,121, 16,179,224, 12, 70, - 83,108, 70,239, 43, 15, 99, 27, 7, 72,114,178,235,119,110,242, 6,214,255,188,165, 43,128, 93, 86,143,234,164,210, 86,118,118, -118,184,114,229, 74, 78, 72, 72, 72, 30,165,212, 97,238,220,185, 78, 82,169,180,213,115,168,223, 71,132,144,246,109,218,180,249, -152, 97,152,206, 28,199,157, 72, 79, 79, 95, 65, 41,125,100,101,167, 61, 22,192, 44,148,243, 67,209,235,245, 96, 24, 6,148, 82, -244,239,223, 31, 83,167, 78, 13,184,121,243, 38, 78,157, 58,165,234,220,185,243, 69, 66, 72, 30,128,247, 41,165,149, 90,205, 10, - 10, 10, 74, 46, 95,190, 44, 57,117,234, 20, 56,142,131, 74,165,130,189,189, 61, 68, 34, 17,122,245,234,101, 23, 25, 25,217,233, -216,177, 99, 25, 5,245,234,176,226,212,100,141,200,206, 78, 14, 55,143,118, 99, 6,190, 23, 67, 41,221, 95,131,198, 65, 40,225, -153,180,196,172, 99, 22,205, 92,206, 72, 5, 2, 34, 22,240, 32,226,138,241,197,215,243,137,128,154,121,168,225,252,188, 64, 32, - 16,200, 69,208,179, 66,214, 40, 37,120, 33,193,225, 88,150, 21,138, 5,208, 85,245, 57,159, 97, 24,134, 97, 4, 0, 76,214,114, -138, 68, 34,129, 92, 68,171,228,148,176,132, 37,132, 8,241,116,117,214,223, 16,236, 78,104, 57, 43,146,174,188, 40,110,215,174, - 29,162, 79, 93,193,158,168, 19,200,122,124, 3,211, 63,159,128,150, 45, 91,226,208,161, 67,213,166,201,226,163, 85,149,117, 89, -173, 86, 95, 77, 73, 73,105, 81,213,119, 43,243,209,226, 86, 55,166, 67, 62, 95,218,163, 50, 43, 85,165,252, 51, 29,158,114, 85, -227,163, 69, 8,233,217,174, 93,187,143,182,111,223,174,127,251,237,183,133,253,251,247, 71,211,166, 77,219, 14, 31, 62, 28, 0, -208,185,115,103, 44, 93,186,180,237,240,225,195,177,115,231, 78,236,219,183, 79,215,161, 67,135,207, 9, 33,201,148,210,195,149, -113,114, 28,215,125,205,154, 53, 21, 45,133, 48,153, 76, 48, 26,141,238, 38,147,201,189,180, 45,194,178,101,203,179,142, 31, 59, -132,207,167,205,129,139,179, 91,144,149,117,136, 12,155, 52, 41,235,135,197,139,177,120,231, 78, 76,170, 95, 95,186,229,206, 29, - 28,215,106,177,235,212,169,172,210,223,121,166,111,166, 70,163, 41, 57,124,248,176,253,174, 93,187,160, 80, 40,208,176, 97, 67, -168, 84, 42,240,249,124, 48,172, 4,172, 64,137, 70, 77, 90, 1,184, 12, 0,168,175,134,198,223, 27,231, 9, 65, 30,101,170,174, -195, 85, 62,163,117, 73, 61,215,186,226, 51, 31,109,106,170,176,119, 17,224,232,138, 39, 56,246, 93,226,126,109, 22,190,133, 9, -247,170, 89,172, 17,226,237,237,141,140,140, 12, 28, 62,124, 88, 3,224,155,170,126,131,227,184,175,191,255,254,251,201,211,166, - 77, 19,249,251,251, 3, 64, 16,128,223, 43, 21,125, 50, 25, 60, 60, 60,202,132,101,255,161, 99,124, 70, 79, 28, 35,233,253, 86, - 24,120, 60, 39,228,105,140,200, 46, 52, 66,233,100,135,207, 39, 70,136, 79,132,120,180, 92,179,124,219, 65, 66, 72, 75,250, 50, -131, 69,254,143,225,232,232, 24,148,157,157,141, 71,143, 30, 97,232,208,161,201, 89, 89, 89, 63,107, 52,154, 17, 41, 41, 41, 0, -144, 83, 11,202, 50, 49, 31, 20, 20,132, 86,173, 90,161, 95,191,126,226,226,226,226, 8, 31, 31, 31, 15, 0,175,191,204,252, 84, -212, 34,255, 42,161, 85,105,135, 96, 52, 54,210,173, 94, 13,205,137, 19, 16, 30, 63,142, 93,106,117,145, 86,171,253,140, 82,154, - 88,218,232, 77,216,244,195, 15,191,246,248,237, 55,123,125, 76, 12,124,110,222, 4, 95,161, 8,170,105, 2, 54,110,220,136,130, -130, 2,228,231,231, 3, 0,190,251,238, 59, 20, 20, 20,192,226,203,240,204, 12, 8,208,214,205,165, 62,210, 16, 11,142,199,216, - 37, 52, 42,126,205, 78, 43, 79,241,120,226,170,201,103, 60, 16,243, 56, 84, 86,146,173,127,141,176,122,104,179,138,225,209,166, - 33,120,224,181,173, 73, 26, 45,243,254, 60, 30, 47,231,254,253,251,221,253,252,252,162, 0, 56, 61,175, 63, 0,165,244, 1,128, -241,181, 20, 1,179,226,227,227, 93, 54,108,216,240,241,220,185,115,105,121,161,101,249,159,199,227,129, 82, 10, 7, 7, 7,240, -249,124,215, 11, 23, 46,184,134,134,134,174, 44,109,208, 42,203, 39,109,218,180, 41,226,227,227,193,227,241,224,224,224, 0,206, -100,192,156,137, 99, 96,102, 69,188, 41, 83,166, 4,245,233,211,231,214,134, 13, 27,140,246,173,219,188,158,157,157,125,251,163, - 65,131,111, 29, 56,112, 64,207,113,220, 26, 43,243,124, 61, 54, 54,150,245, 84,187,178,212, 84,204,201, 4,128,248,198, 50, 42, -180,115,131,152,199, 82, 1, 97, 32, 18, 75, 28, 30, 37, 37,101,115, 28,119,215, 26, 78,142,227,174,197,199,199, 75, 92, 93, 28, -121,197, 37,250, 34, 9,159, 10, 19,174, 93,137,171, 23, 28,226, 3, 0,218,107,151, 79,139, 26, 53,150, 36,164,103,202,234,215, -175,111, 21,103, 73, 73,201,245,228,228,100,214,213,213,149,247, 56, 49,233,160,194, 78,230,108,175, 80,188, 6, 0,134,194,252, -203,140, 78,151,201,242,121,174,153,217,217, 57, 37, 37, 37,241,214,230,253,225,195,135, 60,119,119, 23,246,232,241,147, 81,174, - 82,145,139, 92,200,179, 23, 17, 66,164, 44, 41, 16,152,184, 44,177, 84,234,242, 40, 41, 41,135, 82, 90,165,133,240,171,188,193, -189,159,222,175, 57, 59,203,113,227,198,141, 27, 56,114,254, 46,100, 84, 15,162,205,199,241, 77,235, 48,104,202,180,231,246,251, -123,150,216,170,149, 53,107, 77,227,171, 21,248,145,242, 12, 71,248, 65,131, 6,205,217,186,117,107,153, 3,202,221,187,119,209, -177, 99, 71,203, 52, 7,186,116,233,130,208,208, 80,220,189,123, 23,190,190,190, 56,117,234,148,136,101, 89,209,224,193,131, 23, - 0, 56,252,172,244,174, 93,187, 22, 35, 70,140,168,204,177,250, 33, 0, 45, 81,250, 23, 77,253,106,179, 83, 78,118, 22, 50, 50, -211,174, 91, 91, 14,132, 16, 12,155, 52, 41,107,141, 94,143,237,151, 46, 97,136, 76, 38,253,225,193, 3,132,135,134,162, 89,199, -142, 89,214,180,117, 22,171,142, 86,171, 5,159,207,135,189,189, 61, 28, 29, 29, 33, 16, 8,192,242,213,224, 9, 3,193, 8, 4, - 8,110, 23,136,197,159,201,138,135,190,131,229,132, 32, 79, 36,196, 53,129,180,114, 95, 29, 66, 8,145,213, 65, 47, 74, 81, 80, -156,136, 95, 44,130, 68, 81,143, 56,216,217,243,143,143, 92,233,175,176,119, 17,224,200,242,199, 56,190, 50,105,175, 54, 13,211, - 1, 60,172,110,117,177, 72, 36,106,166, 80, 40,144,152,152,136, 39, 79,158,220,169,206,193,159, 82, 90,220,186,117,235, 56,145, - 72, 20,224,236,236, 12, 0,222, 85,165,147,227,184, 50, 63,172, 45,219,119, 59, 5,181,247, 17,191,217, 54, 0,155,163,230,227, -195,136,229,224,179, 4,102,179, 1,223, 46,237, 6,179,174, 8, 17, 61, 62, 32,111,116,246, 13, 60, 17,165, 31, 9, 96,221,191, - 85,104, 37, 37, 37,141,111,223,190,253,130,194,194,194, 92,141, 70, 51, 8, 0,188,189,189,235, 50, 12, 35, 2, 48,183,154,250, - 84, 23,149,135,133, 16,220,188,121, 19,114,185, 28,201,201,127,238, 73,159,152,152, 8,142,227,116,176,161,186,103, 52,152, 82, -122,141, 16,226, 14, 32, 28,229,194, 59, 48,165,166,186, 55,162,163,163,105,116,116,244, 27,101,157, 23,165,156, 41, 39, 7, 84, -247,180,108,249,124, 62, 5, 80,126, 69,147, 84,161, 80, 16,190,167, 39,136,232,169,235, 7, 45, 55, 39,252,188, 48, 26,173, 11, - 45,195,153,193,130, 24, 64,203, 25, 49, 52, 98,130,249, 78,157, 48, 94, 56, 3,105, 66, 69,249, 39, 27, 48, 81,152,193,177, 53, - 76, 14,213,104, 52, 48,153, 76,202, 6, 13, 26, 68,155, 76, 38,165,101,106,224,127,117, 83,205,102,115, 28,203,178,248,248,227, -143, 97,177,254,232,245,122,164,165,165, 65,167,211, 65,175,215, 35, 62, 62, 30,249,249,249,208,235,245,184,125,251, 54,188,189, -189,193,178,172,123, 53, 21,133, 82, 74,225,229,229,133,122,245,234,129, 37, 20,235, 23,205,198, 23,159,140,193, 0,111, 14, 27, - 87,124,139, 14, 29, 58, 52,174, 95,191,126,107, 30,143,103,118,115,115, 19,236,219,183,239,160,217,108,238, 85,131, 56, 90,135, -167, 78,157, 90,175, 73,147, 38, 46, 10,123,185, 81, 36,100, 33, 52,106,168, 72,151, 77,121,197, 89,240,242,170,107,130, 68,234, - 59,100,200, 16,179, 53,157,163,133,243,179,207, 62,115,247,247,247,119, 80, 42,228, 26, 33,159,205, 16,128,102,229,223,248,253, - 34, 0, 8,157, 93,180, 16, 75, 3,134, 14, 29,106,170, 9,231,140, 25, 51,188,157,157,157, 21, 12,104,161,217, 96,248,115,190, - 93,167,207, 38,124,126, 9, 4,194,144,113,227,198,145,154,112, 78,158, 60,185,126, 64, 64,128, 66, 97, 47, 43,226,241,217, 84, - 1,199,165,138,193,165,241,245,134, 92,177,179, 83, 49,164,118,193, 67,134, 12,169,146,211, 98,205,138,140,140, 76,172, 32,188, -145,147,147, 3,109,218, 45, 8,146, 99, 16,104,199, 71, 75,103, 37, 68, 34, 81,217,210,247,170,170,107, 85, 62, 90,149,137, 45, -107,191, 27,242,101, 53, 83,128,107, 26, 95,173, 24, 55,171,148,191,218,231,105,219,182,109,211,194,194,194, 50,186,116,233,162, -143,142,142, 6, 33, 4,167, 78,157, 66,114,114, 50,186,116,233, 2, 74,169,101, 85, 27,174, 95,191,142,206,157, 59,235,219,183, -111,159,188,109,219,182, 89,214,220,156, 17, 35, 70,192,104, 52,162,168,168, 8, 57, 57, 57, 56,116,232, 16, 2, 3, 3,169, 84, - 42,237,195,122,189, 53, 63, 98,228,180,215,155, 54, 15,194,202,229,139,245, 66, 30,255,171, 26, 54,194, 24,250,217,103, 89,249, -193,193, 57, 91, 52,154,226, 97,246,246,210, 6,137,137,170, 43,199,142, 57, 25, 12, 6,171, 56, 44, 86, 29, 79, 79,207, 50,145, - 37, 16, 8,192, 19, 58,131,149, 53,131,208,177, 11,164,110,125,240,203, 53,145,206, 65,134,253,114, 59, 28,149, 41, 80,101,104, - 7,169, 23,230,191,222,223,125, 95,155, 1,238, 39,165,117,176,129, 16,194, 16, 66, 24,202, 35,251,134,127,235,215,192,185,158, - 4,191,237, 78,195,241,149, 73, 63,105,211, 48, 27,192,131,103, 61,231, 6,131, 65,107, 54,155,193, 48, 12,120, 60, 94,121, 31, -209, 95,127,250,233, 39, 92,185,114, 5, 0,202,194,246, 20, 22, 22,154, 89,150,133, 88, 44, 6, 0,187,106,218, 59,240,249,124, -240,249,124,156,190,120,214,113,192,187,221,200,133, 63,126, 70,155,192,129,200, 46, 50, 32, 61,223,128,188, 98,160, 73,203,233, -104,218,121, 63,110,196, 23, 34,168,121, 83,150, 21,202,134,190,226,157,119, 93, 23, 23,151, 11, 78, 78, 78,167, 8, 33,117, 9, - 33,117,237,237,237,127, 85,171,213, 49,132,144,158,148,210, 3, 41, 41, 41,254, 69, 69, 69,109, 40,165,143, 41,165,143,179,178, -178, 58,102,100,100,188, 94,221, 98, 45, 71, 71,199, 13, 5, 5, 5, 19,204,102,115,143,210,227, 29,179,217, 28, 20, 27, 27, 27, - 16, 20, 20,116,199,199,199,231,186,143,143,207, 17, 31, 31,159,131, 62, 62, 62, 7,195,194,194,150, 90,194, 61,188, 76, 84,166, - 69, 94, 33, 88, 92, 93,194, 75, 67, 61,132,151,245, 25,165,231,211, 21, 29,208, 76, 34,209,109,211, 71, 31, 65,113,240, 32,248, -177,177, 24, 62,116,168,189, 84, 42, 93, 78, 8,105, 65, 8,105, 99,103,103,183,114,246,236,217,114,167,133, 11,161, 62,123, 22, - 9,135, 14,193,200,231,255, 94,155,212,149,148,148,128,199,227,149, 89, 98,100, 50, 25,204,102,115,169,118,123,134,224, 48,225, -183,228,244, 24, 8, 81, 15, 28,104,209,209,130,246,151, 6,198, 77,119, 57, 84,224,237,251, 64, 35,240,253,210,249, 53,151,229, -117,219, 94,210, 16, 94,145, 80, 33,198,147, 39,137, 48,131,171,209,124,179, 86,171,205,215,104, 52, 8, 10, 10,114,188,114,229, - 74,131,192,192, 64, 85,233,251,151,159,243, 33,106,237,225,225,177,219,211,211,243,145,135,135,199,110, 66, 72,235, 26,124,125, -195,185,115,231,192,178, 44,102,207,158,141,194,194, 66, 24, 12, 6,100,103,103,227,201,147, 39,208,235,245, 72, 74, 74,194,189, -123,247,160,215,235,145,144,144, 0,157,238,217, 3, 18,142,227, 96,111,111, 15,109, 73, 17, 86,205,255, 2, 51, 34, 39, 34,255, -225, 85, 36,165,164, 67,225, 32,195,248,241,227, 89,165, 82,201,153,205,230,122, 38,147,169,179,217,108, 94,109,173,224, 44, 13, - 90,120,222,203,203,171,233,162, 69,139, 2,190,152,191, 90, 96,207, 43,162, 34,185,152, 19,202, 69, 84,216,248, 53,140,152,190, - 92,176,108,201, 55,247,127,251,237,183,100,107,130,119, 90, 56,131,131,131,253,146,147,147, 3,253,253,253, 27, 57,213,173, 47, - 18,185,123,228, 9,220,235, 20, 80,157,246, 18,241,168,211,110,245,234,213,183,126,253,245,215,148,154,112,202,100,178,198,155, - 55,111,110,234,234,234,218,148, 47,145,136,139,243,243,119,153,138, 53,187, 89,133, 82,204,216, 43,222,217,191,127,255,213,189, -123,247,166,213,132,211,215,215,215,127,254,252,249, 77,154, 53,107,214,196,205,187,129, 72,226,225,149, 45,246,172,155, 45,105, - 22, 40,130,103,189,183, 87,174, 92,121,253,183,223,126,179,138,147,101, 89, 19,195, 48,224,243,249,144, 74,165, 56,122,244, 40, - 62, 26, 57, 16, 94, 30,142,104,228,239,143, 78, 31, 78,192,222,189,123,203,124,120, 88,150,173,178, 71,255, 97,225,248,168, 96, -119,114, 21,107, 26, 95,197,154,198, 87,131,221,201,213, 42,197, 86,233,231,149, 93, 99, 85,107, 84,133, 31,214,179,196, 22,165, -244,240,233,211,167,191, 30, 54,108,152,176,107,215,174,184,116,233, 18, 70,140, 24,113,126,223,190,125, 0,128, 75,151, 46,225, -211, 79, 63, 61,127,242,228, 73,140, 25, 51, 6, 29, 59,118, 20,158, 59,119,110,165, 53,177,127, 76, 38, 19, 54,110,220, 8,147, -201, 4, 59, 59, 59,168, 84, 42,116,235,214, 13,183,110,221, 26,179,105,211,166, 24,150,207,127, 47,188,199,187,136, 62,184, 15, -247,110,223, 26,243,195,130,193, 53, 14, 10,204, 48, 12,186, 14, 29,154,149,213,164, 73,206, 15, 5, 5,197,239, 43,149, 82,255, -180, 52,213, 47,187,119, 59, 89, 81,127,136,217,108, 46, 19, 87, 22,209, 97, 57,120, 66,103,240,100, 77,193,147,183,196,141, 7, - 2, 35,191, 21,189, 38, 8,161,119,171,139,159,197, 23, 50, 35,250,124,225,141, 62, 95,120,163,231,148,250,195,165,117,176, 94, - 86, 7, 99,187,126, 82, 47,204,167,165, 3, 10, 50, 12, 56,244,109,194, 99,109, 54, 22, 2,184,103,205,115,206,113,220,157,228, -228,100, 8,133, 66,212,169, 83,199,143, 16, 98,241, 11,220, 48,106,212,168,113, 95,126,249,229, 68, 0, 95,150,230,201, 46, 44, - 44,172, 73, 81, 81, 17, 98, 99, 99, 1,224, 74, 53,247,190,108,149, 97, 78, 65,130,168,190,186, 25, 2, 27,143,134, 82,217, 28, -201, 57,122,164,228,232,177,126, 85, 47, 92, 61, 55, 15, 87,142, 15,193,227,180, 52, 72,220,122,195,108,210, 53,125,197, 13, 37, - 51,226,226,226, 90,239,222,189, 59, 12,192,140,102,205,154,253,246,228,201,147,215,207,158, 61,219,200,211,211,115,121,109, 73, - 45, 97, 33, 18, 18, 18,254,114,148,134,133,208, 83, 74,131, 41,165, 93, 41,165, 61, 75,143, 79,159, 43,214,155,245, 56,253,170, - 58,195, 3,136,174,184,218,176,162,208, 42, 31, 40, 12, 13, 84, 42,185,209,104, 72,250,249,231,159, 13, 12,195, 64, 42,149, 98, -216,136, 17,204,170,239,191,111, 55,176,117,235, 83, 31,188,249,230,145, 83, 39, 79, 6,135,134,134,130, 82, 10,134, 97,176,115, -231,206, 18,173,182, 36,187, 78,157, 58, 10,107, 26,141,242, 15, 80, 65, 65, 65,153,208,202,207,207,135,171,171,171,213, 83,135, -154, 2,156, 56,121,244,106, 46, 53,127,248,164,235,131, 37,134,175,210,122,133,230,113,102, 94,190,217,136,252, 18,138, 66, 45, -120,151, 24, 85,232, 48,223,222,134,248,206,161,247,206,196, 92,200,214,154,181, 53, 90, 45,145,145,145,241, 69, 68, 68, 68,182, -187,187, 59,177,183,183,135,135,135, 7,211,179,103,207,172,196,196,196, 47,107,123, 71,156,156,156, 6,132,133,133, 69, 37, 39, - 39,247, 61,115,230, 76,189,179,103,207,246, 13, 11, 11,139,114,114,114, 26, 96, 37,197,174,105,211,166,105,132, 66, 33, 94,123, -237, 53, 20, 22, 22,162,116,149, 79,181,199,179, 58, 2, 0, 16, 8, 4, 88,179,104, 22,102, 68, 78, 68, 78,204, 37,220, 56,255, - 51, 78,167, 17, 76,159,255, 13, 4, 2, 65,173, 98,125,249,186,200,154, 53, 83,203,239,126, 58,162,127,202,212,200, 72,249,245, -235,215,249,227, 62,249,148, 38,164,230, 64,216,117, 49,139, 55,190, 96,254,208, 56, 35,252,157, 78,152, 61, 99, 82, 51, 74,233, -232,103,113, 6,184,200,154, 53, 85,203,239, 76,250, 96, 96,220, 39,159,124, 34,249,234,171,175,180,173, 91,183, 46, 73, 79, 79, -151,200,148, 42,127,158,131,162,105, 66,106,154, 93,235,214,173,227, 63,252,240,195,188,154,114, 78,159, 62, 93,122,236,216, 49, - 94, 68, 68,132, 41, 55, 55,215,142, 47,145, 4, 17,145,184, 85,102,110,174, 67,223,136,136, 7,125,251,246, 45,230, 56,110, 76, - 77, 56,103,206,156, 41,189,119,239, 30,175,117,235,214,198,180,180, 52,185,204,209, 41,144, 85,168, 90, 62, 74, 77,183,111, 21, - 26,250,112,220,184,113,154,234,210, 89, 94,164,200,229,242,228, 54,109,218,224,219,111,191,197,178,101,203,240,246,219,111,227, -214,237, 91, 8, 31, 55, 17, 1, 99, 63,197,193, 11, 23,145,156,156,140,185,115,231, 34, 48, 48, 16, 2,129,224, 94,165,164,163, -239,146,107,169,148, 92, 75,165, 4,163,239, 18,203,235, 42,197,208,151,249,248,203,245,149,224,202,204,202, 45, 93,193,238,228, -106,117,126, 88,207, 18, 91,125,251,246,253,200, 18,194,225,253,247,223, 63,191,124,249,242,182,239,191,255,116,160,253,218,107, -175, 97,222,188,121,109,167, 79,159,126,126,254,252,249,232,212,169, 19,124,124,124,158,185,240,197,108, 54,195,100, 50, 97,224, -192,129, 48,153, 76,200,204,204,196,253,251,247,177,118,237, 90, 80, 74,197, 0,224,174,246, 12, 17, 10,133,248,227,218,239,197, - 51,222, 15,221, 86,131,193, 20, 41, 63,136, 41, 42, 42, 66,223,177, 99,179,146, 26, 54,204, 89,157,149, 85, 60, 82,169,148,214, -127,252, 88, 37,215,235, 61,170,243, 73, 37,132,128,227,184, 50, 97,101, 17, 92, 21,143,210,142,210, 42, 24,138,185,195,103,183, -166, 0, 0,218, 15, 86,163,231,148,250,195,221,125,165,223,181, 27,244,212,232,189,119, 94, 28, 45, 76, 49,127, 5, 35,238,212, -192, 98,125,233,210,165, 75, 80, 40, 20,136,136,136, 16, 49, 12,179,176,180,157,215, 82, 74, 87, 80, 74,151, 88,184, 68, 34,209, -226, 33, 67,134, 48,121,121,121,184,113,227, 6, 0,156,172,170, 93,162,148,150,229,189, 40,135,192,204, 9,241,235,181,163, 56, -126,118, 15, 30, 37,103,226,113,134, 22,224, 57, 64,171, 73,130,161, 36, 25,250,188,107, 40,208, 73,255, 13, 51, 82, 47, 37,220, -194, 75, 8, 11,241, 34,173, 90,175,164, 79, 29,165, 52,181,252,106,195,242, 1, 76, 43, 11, 88, 10,106, 47,233,191,103,229, 42, -135,136,129,131, 53,129,129,129, 74, 15, 15, 15, 16, 66,208,171,119,111, 18,118,230,140,156,175, 86,195,177, 69,139,178,233,136, - 19, 63,255,140,163, 71,143,106,162,127,218,239, 49, 98,228,200,238, 0, 54, 87,211, 96,240, 26, 52,104, 80,246,187,169,169,169, - 16,137, 68,101, 62, 17, 5, 5, 5,112,118,118, 70,106,106, 42,172, 52,148,108,153, 26,121, 49, 50, 35,244, 11,239, 80, 57,159, - 28,209,164,193, 76, 41,248,196, 12,148, 80, 24,205,128,206, 72, 17, 82,159, 85, 29, 47, 49, 41, 15, 93,218, 23, 15, 96, 75, 13, - 45, 90,191, 16, 66, 70,115, 28,183, 7, 0,115,230,204, 25,238,206,157, 59, 31, 89,235,184, 94,169,217, 94, 42,157,114,234,212, - 41,213,148, 41, 83,114, 15, 29, 58,148,223,173, 91, 55,135,181,107,215,170, 58,118,236, 56, 5,192,143, 86,220,212, 18, 66,200, -230,196,196,196,143, 90,182,108,137,156,156, 28, 24, 12, 6, 92,189,122, 21,190,190,190,184,114,229, 10,252,252,252,240,251,239, -191,163, 81,163, 70, 48,155,205,208,106,181,224, 56,206,252,172,198, 60, 39, 43, 19,200,126,130,148, 75, 71,112,255,230, 85,156, - 74, 33, 88,241, 99, 20,234,212,243,174, 85,156,154, 70,174,178, 38, 30, 46,142,199,191,154, 51,211, 37,225,151,157,216,183,113, - 5,119,250,200,145, 0,161, 28,163,223, 24, 56,225, 93,189, 17,117, 1, 8, 95, 15,109,137,174,202,123,102,105, 61,164,157,188, - 93,125, 36,235, 70,174,178, 38,106,103,199, 99,255, 89,248,165,252,225,209, 31,176,107,205,183,116,239,214, 29,129, 90, 32,180, - 73,147, 38, 93, 25,134, 81, 0,208,150,250,121, 89,181,181, 77,101,156, 39,162,162,130,181, 64,232,129, 3, 7,186, 74,165, 82, - 55, 0,198,226,226,226,184,231,225, 60,121,232, 80,176, 37,157,132, 16, 23, 0, 6, 74,233, 67,212,112, 11,158,126,253,250,205, -251,244,211, 79, 35,205,102,179,179,229, 61,163,209,200, 46, 94,188,152,199,113, 28, 75, 41, 53, 48, 12, 99, 56,118,236,152,217, -100, 50,165,104,181,218,177,207,211,144,188,251,238,187,184,120,241,226, 28, 60, 93,132, 97,173,181,250, 47,126, 90,213, 77, 83, - 90,195,127,230,204,153,185,239,189,247,222,212, 31,127,252,241,254,242,229,203,123,140, 25, 51, 6, 59,119,238, 68,195,134, 13, -241,199, 31,127,224,139, 47,190, 0,128,182,211,167, 79, 63,184, 97,195, 6,159,132,132,132,197,207, 74,163,209,104,132,201,100, -194,142, 29, 59,208,171, 87, 47, 56, 59, 59, 67,173, 86,131, 16,242,203,200,145, 35,191, 7, 0,150,176, 2, 0,208,105,117, 58, -127,255,150, 86, 91,112,125,124,124,202,218,186,180,180,180,178,149,130,111,189,247, 94,214,250,175,190,194,182,146, 18,140, 84, - 42,165, 73,158,158,238, 7, 31, 62,252,128, 16,178,182, 42,203,145,197,170,243, 44,145,101,173,133,185, 36, 21,211,126, 90,240, -200, 13,192,219,237, 7,171,209,126,176, 26, 45,123,186, 16,134, 37,184,121, 60, 27,183, 78,228,236, 53, 22,224,151,154,108,151, - 67, 41,189,227,232,232,120,240,141, 55,222,232,209,184,113, 99,140, 26, 53,234, 67,129, 64, 32, 48, 26,141,159, 88,194, 60, 16, - 66, 28, 24,134,249,114,211,166, 77, 31,168, 84, 42,156, 59,119, 14,103,207,158,253,133, 82,250,164,170,118, 9, 64, 89,204,172, - 58, 94,126,218,123, 9, 69,210,140,228, 95,113,254,220, 79,104, 24, 56, 1, 18,183,238, 80,249,207,135, 33,102, 25,244,217,199, -161,242,234,134,164,132,135, 96,121,162, 91,248,151,192, 18,110,225,214,173, 91,149,134, 91,168, 41,154, 53,107,214,246,236,217, -179, 34,173, 86,139,211,167, 79,163, 85,171,178,181, 93,255,211,253, 59,203,107,145, 87, 9,213,109, 42, 93,105,175, 73, 56,194, -111,228,231,103, 22, 48,216,212,171,123,247,226,235,215,175,151,141,250,180,151, 47, 67,115,244, 40,204,102, 51, 40,165, 56,123, -230, 12,134, 12, 30, 92,196,103,201,250,250,245,235, 81, 66,255,140,221, 82,217, 82,122,129, 64, 16, 17, 17, 17, 81,214,248, 36, - 38, 38, 66, 38,147, 65, 40, 20,130,227, 56,152, 76, 38,176, 44, 11, 7, 7, 7,152, 76, 38,125, 37,153,233, 92, 33, 35, 70,115, -142,166,239,134,240, 65,169,234, 34, 3, 29,173,168,143,186, 2, 73,217,195,233,102, 79,208, 35,144, 15, 39, 94, 6, 61,185,248, -205, 20, 78,151,221,183,226,222, 98,207, 90,242, 79, 8,241,107,222,188,249,247, 67,134, 12, 97, 0,160,115,231,206, 76,243,230, -205,191, 35,132,248, 85,243,157,106, 57,197, 98,177, 8, 0,162,162,162,114,238,223,191,255,118, 84, 84, 84, 78,249,247,173,228, - 92,187,104,209, 34, 72,165, 82,152, 76, 38,232,245,250, 50,255,172,242,103,131,193, 0, 39, 39, 39, 68, 71, 71,195,108, 54, 71, - 63, 43,157, 94,117,235,129, 56, 55,192,230,168, 83, 56,155, 37,168,177,200, 42,207,217,208,221,174,145,155,147,227,207,255, 89, - 48,215, 57,247,193, 85, 36, 37, 37,209, 99, 71,163,127, 43,161, 52, 57,175,128,206,200, 45,162,141,138,117, 84,220,202, 7, 79, -126, 94,243, 57,157,222, 30, 70, 84,178,106,176, 60,103, 19,119,187, 70, 30,206,142,199,190,249,207, 2,121,222,131,171, 72, 77, - 75,195,225,232,168,235, 37,148, 38, 83, 74,247, 82, 74,135,155,205,230,166,102,179,185, 41,165,116,120, 85,226,165,166,156, 26, -141,166,153, 70,163,105,246, 34, 57, 57,142,107,198,113,156,213,156,229,133,202,146, 37, 75, 98, 82, 83, 83,135,100,100,100,116, -177, 28,185,185,185,157,139,138,138, 58, 20, 23, 23,183, 43, 89, 82,207, 65,163,209,184, 20, 22, 22,186,151,148,148,132, 80, 74, -175, 90, 91, 63,203,163,124,212,233,148,148,148,217, 41, 41, 41,228, 89,233,100,198,220, 37,219,191,153,244,211,154, 53,107,220, -159,135,191, 98, 58, 51, 51, 51,247,236,216,177, 35,200,219,219,219,103,248,240,225, 88,189,122, 53,150, 47, 95,174, 3,128, 13, - 27, 54,232,202, 89,178,188, 30, 61,122,212,178,178,105,195,191,164,147, 97,182,188,245,214, 91,244,236,217,179,232,213,171, 87, - 89, 32,209,117,235,214,193,100, 50, 21,116,234,212,137, 3,128, 18,109,113, 1,229, 40,244,134,202,231,223, 43, 43, 79,161, 80, -248, 78,249,120,129,150, 96,204, 66,161, 16,148, 82, 52,106,219, 54, 43, 47, 48, 48,103, 99,126,126,241,236,102,205,236, 63,240, -247, 31,222, 24, 24, 92, 25, 39, 33,228, 47, 86,157,138,135,181,150,172,242,156,148,210,140,146, 20,140,250,105,193,163,163, 22, -203,150,216,142, 7,109,161, 9,251,191,122,148,169,205,196, 58, 0, 79,106,194, 9, 0, 57, 57, 57,227,190,250,234, 43,157, 82, -169,196,187,239,190,139,249,243,231,143,108,219,182,109,190,171,171,235, 69, 95, 95,223,155,253,251,247, 79,189,122,245,234,184, -176,176, 48,196,198,198,226,155,111,190,201,203,205,205, 29, 84, 29, 39, 33,164,204,146,215, 51,188,115,206,170,239,190,229, 58, -189,241, 17,164, 18,123, 24,249, 94,200, 41, 50, 34, 87, 67,161, 23,133, 66, 40, 16,161, 75,235, 38,184,120,236,135, 98,179, 94, -179,185, 54,117,190, 6,157,235,203,230,124, 33,225, 22, 42,166,243, 69,132,133,120, 25,121,127,149, 81, 73, 28,173,191, 90,180, - 44, 75, 42, 45,103, 66, 56,179,217,204,161,190,119,125,121,194,163, 39, 43,250,245,139,120,191,107,215,112,105,120,120,184,184, - 73,204,211,169,139,168,168, 40,236,219,183,175,248,248,241,227, 5, 34, 62,187,193,171,142,151,171,217,204,129, 16,174, 90, 53, - 44,151,203, 63,153, 54,109,154, 36, 63, 63, 31,203,151, 47,231,130,130,130, 24,153, 76, 6,131,193,128, 13, 27, 54, 24,155, 52, -105,194,103, 24, 6,249,249,249, 96, 24,230,158,149, 25,188, 65, 8,233,242,125, 88,159,125, 45, 63, 30,225, 24, 16,246,186,178, -131,151, 7,140, 45, 40, 82, 18, 31,225,254,201,227,185,183,143, 45,205,134, 54,189, 15,165,244, 78, 77, 11, 80,173, 86,207, 58, -126,252,184,203,184,113,227,168, 86,171, 37, 79,158, 60,161, 11, 22, 44,112, 25, 53,106,212, 44, 0, 3,106,251, 60,229,229,229, -129, 16,194,149, 86, 90,203,168,159,212,224,198,222, 34,132, 28,232,221,187,119,207, 78,157, 58, 33, 38, 38,166,108,138,176,188, -208,178,172, 62, 92,184,112, 97, 30,128,169,207,226,229,243,249, 88,190,121, 15,242,114,179,224,234,170,134, 88, 34,169,117,196, -101, 33,195,204,254,122,238, 76,151,172,187, 23,201,173,223, 78,113,187,111,164,103,152,204,180,242,136,255,133, 41,180, 84,253, - 87, 63,154, 97,216,217, 95, 47,248,210,193, 50,173,249,227,181,212, 2, 98,166,227,158,235, 41,121, 85, 56,255,203, 80,171,213, - 72, 73, 73, 33,106,181,154, 90,166,245,170, 18, 90,127,171,224, 79,167,203, 72,117,211,134,181,229,143,143,143, 95,208,162, 69, -139, 73,177,177,177,187, 3, 2, 2,198, 0,168,163,211,233,242,166, 79,159,254,159, 13, 27, 54,188,111,141, 37, 11, 0,118,238, -220,185,116,196,136, 17, 71,187,119,239,254, 57,199,113,205,203,117, 34,241, 46, 46, 46,101, 83,184,153,233,105,145,163,223, 31, - 24, 89, 84,148,107,117,156, 59, 59, 59,187, 15,166, 79,159, 46,214,104, 52, 88,185,114, 37,215,164, 73, 19,198, 50, 40,218,186, -117,171,201,207,207,143, 23,241,209, 71, 89, 75,210,210, 48,239,220, 57, 77,100,211,166, 65, 27,239,223, 15,169,204,226,110, 25, - 56, 86,102,201,178,184, 93,212,178,115, 72, 33,132,140,250,105,193,163,117, 0,222,126,189,159, 27, 14, 44,122,132,220, 4,253, -127, 96,194, 67,107,182, 5,170,132, 51,137, 16,210, 37, 61, 61,253,192,204,153, 51, 29, 66, 66, 66,208,180,105, 83,190,157,157, - 93,168, 37, 92, 76,126,126, 62, 78,156, 56,129,213,171, 87,235,111,223,190,221,155, 82, 90,229,116,149,217,108,206,240,243,243, -179,148, 3, 37,132,100, 23,232,136,195,174,198,161,118,195, 71,239, 38,231,127,191,128, 20, 3, 7,157,145, 67,125,239, 96,116, -120,123, 9, 14, 30,185,105, 78, 73,184,115,199, 88,146,187,254, 21,239,191, 95, 74,184,133,151, 16, 22,226,133, 89,179,202,159, -255, 45,168,244, 9,229, 88,230,215,213,107, 86,189,179,115,199,143,110, 44,203,184, 61,140,139,251,189, 71,159,190,201, 63,255, -252,179, 74,224,224,208, 10, 0,167, 31, 51,230, 55,131,174, 36,231,208,129, 3,117,235,215,175, 23, 88,186,169, 52,229, 88,230, -215,234,126,176,168,168, 72,115,238,220,185,226,169, 83,167,146,196,196,196,237,174,174,174,253,143, 28, 57, 98,215,167, 79,159, -146,152,152,152,189,110,110,110, 61,195,194,194,228,147, 38, 77,210, 21, 21, 21,173,168,193,195,125,135, 16,210,248,242,204,197, -239, 93, 94,180,234, 77,240,216, 54,208,241, 1,206,248, 43, 12,133, 63, 3,216, 78, 41, 53,213,166,144,100, 50, 89,160, 84, 42, -197,245,235,215,115, 67, 67, 67,245, 90,173, 86, 48,127,254,124, 71,153, 76, 22,248, 28, 13, 28,205,205,205, 5,199,113, 60, 0, -164,244, 12,174,230,107,241, 7,244,232,209,227,192,174, 93,187,222, 10, 15, 15,135,143,143, 15,140, 70, 35,252,252,252,160,215, -235,225,235,235, 11,157, 78,135, 57,115,230, 32, 63, 63,127, 98,117,155, 21, 19, 66, 96, 50,153,202,156,109, 61, 60,235, 62,141, -211,243, 28, 97, 44,100,124,198,231,222,161,141,200,200,206,226,118,253,145,158, 94,108, 48,119,137,205,208,220,174,120, 93,177, - 25,154,176,225,227,147, 1, 64,199,161,218, 29,231,101, 66,248,220,143, 94,135,244,140, 44,236,188,150,154,167, 49,112,111,223, -171,132,179, 70,233,124, 69, 56,131,231,196,160,239,120,235,175,189, 54,186,246,191,101,173,160,170, 10,215, 82, 41,225, 86, 55, -166, 88,179,177,210, 24, 89,207,195, 95,106,169, 58, 80, 90,111, 19, 7, 14, 28, 24,249,232,209,163,185,165,241,178,214,212,132, -107,227,198,141,177, 0, 70, 84,119,205,143,139, 71,236, 7,176,191, 38,188,133,133,133,218,171, 87,175,106, 39, 77,154, 68, 18, - 19, 19,143,184,185,185,189,117,244,232, 81,105,159, 62,125,116,183,110,221, 58,169, 86,171,219,119,238,220,217,238,240,165, 75, -201,197, 15, 31, 30, 58,244,232,145,167,145,227, 14, 85,247,124,190, 72,145, 85, 81,108,237,159,247,232,235, 3, 95, 63,234,204, -233,176, 87,159,139,223, 0, 36, 61, 7,231, 89, 66, 72,192,224,193,131,119,117,235,214,237,245,128,128, 0,212,169, 83, 7,247, -239,223, 71,102,102, 38,110,220,184,129,168,168,168, 40,173, 86,251,204, 13,181,179,179,179,255,182, 61, 17,145, 56,170,127, 88, - 57, 59,234,247,243,173,252,218,133, 15,147, 52, 85,115,208, 27, 40, 18, 31, 63,196,156, 25,235,139, 83, 31,199,222, 49,152, 12, -189,255, 5, 49,180,206,198,197,197, 5,179, 44,251, 66,195, 45,212, 54, 44,132, 13, 47, 80,104,197,197, 37,222,241,241,241,154, -182,111,239,158, 54,148, 50, 44, 37, 68,163, 80, 40,163,158, 60,121,146, 87,254,186, 6, 42,149,124,196,168, 17,253, 9, 71,248, -132,112,102,142,101,126,141,139, 75,172,214, 98,164,215,235, 71,247,239,223,127,185, 84, 42,157,158,147,147,115, 93,161, 80,252, - 17, 24, 24, 56,151, 82, 58,163,164,164,228,128, 92, 46,191,244,250,235,175,207,175, 91,183,238, 82, 74,233,149, 26, 62,220, 38, - 60,245, 15,219,252,130, 77,185, 95, 82, 74, 29, 14,146, 20,204, 0, 0, 32, 0, 73, 68, 65, 84,120, 60, 94,254,205,155, 55,119, - 52,106,212,104, 32,165,212,129, 16,146, 95, 91, 78,173, 86, 59, 46, 47, 47,207,233,131, 15, 62, 48,174, 93,187,182,209,176, 97, -195, 34,111,223,190,205,215,106,181,113, 53,204,179,142, 16,210,179, 95,191,126,235,249,124,126, 39,134, 97, 8,199,113,180,220, -231,160,148,194,108, 54, 31,124, 86,185,152,205,230,228,198,141, 27,255,101, 4, 93,153,127,174,209,104, 76,182,186,179,209,155, - 39,172, 58,117,123,161,214, 72,169,137,163,163,239,165,107, 42, 93,114,118,249, 30,109, 98, 53,167,150,155,176,252,216,157,133, - 58, 35,199,153, 56, 58,166, 42,206, 26,117,138,175, 8, 39, 0, 68, 42,182,238,199,154,173,101,142,241,150,233,196,138,175, 95, - 36, 44, 86, 39,212, 48, 98, 51, 51,230,169,179,252,179, 4, 95,109,249, 43,138,174,154,162,111,223,190, 47,205, 31,197, 96, 48, -124,209,163, 71,143,185, 10,133,226, 63,153,153,153,215, 21, 10,197, 29,127,127,255, 9, 28,199, 45, 45, 46, 46,142,146,203,229, -221, 91,182,108, 57,177, 94,189,122, 63, 36, 80,250,195,179,158, 77,139, 85, 7, 0,181, 60,151, 22, 33, 81, 94, 80, 24,141,198, -164, 90,148, 97, 10, 33,228, 51, 0,245,241, 52, 0,239, 3, 74,233,115,149, 13,165, 52, 5, 64, 27, 66,136, 55,128, 78,120, 26, -191, 47, 15, 64, 60,128, 43,148,210, 27,181,230, 46,201, 78, 33,132,180,184,123,237,220,152,251,119,174,189,103, 89, 93,200,178, -194, 91,102, 67,241,102, 99, 73,238,250,127, 73,160,210,217,190,190,190, 14, 0,154, 3, 72,199,159,129,140, 19, 0, 44,123, 17, - 3,149,114,232,104,147, 68,207,165, 19, 62, 40, 63, 93,248,151,207, 94,102, 93, 36,132,116,126,209,251, 33,217, 56,109,156, 54, - 78, 27,167,141,211,198,105,227,252,247,113,190,234, 66,171, 18, 65,187,182, 74,139,150, 13, 54,216, 96,131, 13, 54,216, 96,131, - 13,214,163, 74,139, 22,128,206, 85,124,193,106,165, 90,155,213, 7,207,226,183,113,218, 56,109,156, 54, 78, 27,167,141,211,198, -249,239,227,252,255, 6,219,212,161,141,211,198,105,227,180,113,218, 56,109,156, 54,206,255, 57,231, 43, 45,166,108, 83,135, 54, -216, 96,131, 13, 54,216, 96,131, 13, 47, 7, 22, 81, 85,153, 83,188, 77,104,213, 92,181, 50, 0, 62, 4,208, 23, 64, 3, 0, 15, - 1,236, 1,240,125, 13,182,169, 40,207,103, 15, 32, 18, 64, 27, 60,221,189, 62, 30,192, 57, 0, 95, 81, 74,139,108, 37, 94, 57, -156,157,157,167,241,249,124, 5,240,116,107, 19,203,185,252,255,102,179, 57, 47, 63, 63,127,193, 75,170, 7,172,181,171,178, 44, -105, 45,159,182,242,103,163,209,248,210,210,105,195, 63,182, 29,241, 83,169, 84,219,114,114,114, 6, 81, 74,239,219, 74,196,134, -127, 19, 92, 92, 92,198, 24, 12,134,233, 2,129, 96,126, 70, 70,198,170,255, 71,207,117,165, 43, 15,203,132, 86,116,116,244, 25, - 0, 8, 15, 15,127, 3, 0,228,114,249, 5,134, 97,188, 75,191, 12,224,207,189,240, 42, 46,253,183,156, 57,142,139,207,206,206, -174, 50,128,154, 84, 42,189,192,178,172, 55, 33, 4, 12,195,148, 29, 70,163, 81,206,178,108, 97, 21,156, 73, 57, 57, 57, 33,255, -144, 66, 36, 0, 14, 41,149, 74,237,220,185,115,191,239,208,161,131, 87, 74, 74,138,105,202,148, 41,237,255,248,227,143,112, 66, -200, 59, 53, 17, 91,132,144,214,132,144, 31,130,130,130,246, 15, 29, 58,116, 87,104,104,168, 48, 59, 59, 91,190,103,207, 30,143, -205,155, 55, 95, 37,132, 12,170,105,136,139, 87,160, 34,242,170,138,103, 86,221,103, 21,193,231,243, 21, 73, 73, 73,242,210,145, -132, 69, 88,193,104, 52,194,104, 52, 66,163,209, 32, 48, 48,240,133,167,223,221,221, 61,152, 16,178,194,215,215, 55, 68,173, 86, -255, 14,224,163,148,148,148, 63,106,146, 86,147,201, 4, 74,105, 89, 58, 3, 2, 2,108, 45,115,205,234,208, 72,161, 80,248,182, -175,175,111, 43,157, 78,151, 27, 31, 31,127,217,108, 54,207,172, 46,232,101, 13,249, 29, 0,204, 20,137, 68,161, 13, 26, 52,240, -138,141,141, 77, 52, 24, 12,151, 0,124, 73, 41,205,127, 1,252,126,111,188,241,198,249,149, 43, 87, 58,142, 29, 59,246, 60, 33, -164,173, 77,108,217,240,191, 66,157, 58,117, 20, 26,141,102, 61,128, 96, 62,159,239, 38, 22,139, 33,145, 72,210, 68, 34,209,117, -137, 68,242,254,249,243,231,243,106,202,105, 54,155,103, 38, 36, 36,184,189,246,218,107,139,154, 54,109, 58, 39, 43, 43, 75,107, - 48, 24, 78,230,230,230, 78,164,148, 22, 84,247,221,138, 90,228, 85, 18, 89,229,207,165,237,253,159, 83,135,165,251, 10,117,248, -139, 2,227,241, 60, 19, 18, 18, 92,228,114, 57,204,102,115,153,181,192,210,169,149,247,237, 42,141,211, 4,127,127,127,195, 51, - 58, 28,175,164,164, 36, 23, 59, 59,187,178,247, 12, 6, 3,220,220,220,184,228,228,100, 23,177, 88,252,151,235,245,122, 61, 60, - 61, 61,255, 73,177, 80, 62, 84,169, 84,249, 79,158, 36, 6,106,117,134, 47, 71,141,155, 58,109, 80,223, 55,149, 23, 46, 92,224, -222,121,231, 29,221,153, 51,103, 62, 4,176,194,202,155,226, 64, 8,217, 60,101,202,148, 57, 98,169,189,227,169, 11,119,116,155, -247, 68, 39, 7,249,213, 39, 19, 39, 78,100,199,143, 31,127, 54, 56, 56,120, 27, 33,164, 69, 77, 44, 91,114,185,252,168, 72, 36, -170,199,178, 44, 12, 6,195,147,156,156,156,183,254, 65, 21, 49, 8,192, 53, 66, 72, 48,165,244,186,181,159, 85,135,236,236,108, -148,148,148,252,237, 8, 8, 8,192,139,246, 63, 36,132,240,188,188,188, 14, 44, 92,184,208, 35, 45, 53, 21,223, 46, 89,242, 26, -128,239, 1,188,102,205,247, 51, 50, 50,254,150, 78,127,127,127,216, 80,163,123, 16, 57,103,206,156,133,239,189,247, 30,204,102, - 51, 74, 74, 74,212, 15, 30, 60,104, 50,125,250,244,222,132,144, 86,148,210,184,231,228,119,246,245,245,141,153, 48, 97,130,170, - 85,171, 86, 40,221,165, 66,125,238,220,185,215, 54,108,216, 48,132, 16,226, 79, 41,205,124,158,223, 80,169, 84,219,214,173, 91, -231, 40,149, 74,113,240,224, 65,199, 78,157, 58,157, 35,132,180,171,173,216, 34,132, 48,142,142,142,227, 1,116,228, 56, 78, 8, -224, 82,110,110,238,188,218, 68,117,183,225,255, 23,156,156,156, 70, 22, 22, 22,174, 20,137, 68, 2,165, 82, 9,169, 84, 10, 30, -143, 7, 30,143, 87, 71, 36, 18,213, 17,137, 68, 93, 59,118,236,248,209,169, 83,167,170,141,176,255,122,176,219,112, 48,228, 75, -150, 48, 44, 0, 4,248, 58,218, 59, 56, 56,224,203, 47,191,148,245,236,217, 83, 6, 0,231,207,159, 31, 58,108,216,176, 78,132, -144,166, 85,137,173,202,180,200,171,130,170, 86, 28,254,197,162, 21, 30, 30,126,166,194,195, 11,137, 68,130, 93,187,118,129,101, -217,191,236, 26, 95,217,255,117,234,212,121,102, 66, 44, 22,177,168,168, 40,216,219,219,195,193,193,161,172,163, 17,137, 68, 56, -121,242, 36,248,124, 62,120, 60, 30,248,124, 62, 66, 66, 66, 80,205,134,246, 47, 5, 17, 77, 8, 5,128,221, 31, 63, 77, 87,196, -138,167, 65, 32,119,127,236,143,118, 13, 36,232, 59,126,118,255, 98,173,161, 37, 0, 77, 94,110,110,238,239,251,246,165, 4,249, -249, 9,182,109,219,214,202,195,195,163,175,181, 66, 11, 64,100,139, 22, 45,246,178, 18, 7,167,161,195,134, 15,125,159,199, 24, -134,140,158, 52, 63, 49, 53, 75,243,193, 7, 31,236, 59,120,240,224,208,175,191,254,250,238,228,201,147, 35, 1,124, 97,109,250, -133, 66, 97,189, 7, 15, 30,248,114, 28,135,102,205,154,253, 99,182, 49,176, 8, 41, 74, 41, 8, 33,127, 17, 84,213,125,246, 44, - 88, 44, 88,149, 29, 47, 26, 30, 30, 30,254,131, 7, 15,118,202,201,202,194,183, 75,150, 88,222, 14,121,214, 52,162,101,138, 80, -175,215,227,221,119,223, 29,108, 54,155,121, 22, 17,168,211,233,244,249,249,249,218,114, 43,123, 50, 41,165,111, 90, 81,158,222, - 50,153,236, 63, 0,130, 75, 74, 74, 60, 0, 64, 38,147, 37,115, 28,183, 95,163,209,124, 97,217,192,183, 22,247,201, 11, 64, 19, - 84,189, 21, 20, 93,184,112, 97,108,100,100,100,220,127,155,147, 16, 82,207,213,213,117, 65, 68, 68, 4,162,163,163,113,248,240, - 97,163, 68, 34,225, 13, 27, 54,140,124,244,209, 71,202, 9, 19, 38,116,197,115, 4,113, 44, 69,215, 57,115,230,168, 26, 55,110, -140, 61,123,246,224,198,141, 27, 37,190,190,190,146, 14, 29, 58,128,199,227,169,166, 77,155,246, 14,128, 31,158,231, 7,114,114, -114,230, 77,154, 52,105,243,142, 29, 59,228,241,241,241, 88,177, 98,133, 83,255,254,253,207, 16, 66,222,176, 86,108, 17, 66, 68, - 0,198, 3, 8, 99, 89,182,221,176, 97,195, 76,227,198,141,227, 51, 12, 99, 92,178,100,137,243,134, 13, 27,250, 59, 57, 57, 5, -103,101,101,217,220, 15,170, 1,203,178, 6,142,227,248, 0,196,148, 82,221,179, 94,255,155,242,238,232,232, 56, 54, 55, 55,247, -123, 55, 55, 55,184,186,186,254,173,175,213,233,116, 16,139,197, 2, 55, 55,183,117,189,122,245,226,255,244,211, 79, 85, 78, 1, - 18,150,204, 60,248,227, 92, 15,149, 82, 14, 0, 88,186,250, 88, 49, 0,252,244,211, 79, 72, 73, 73,129, 82,169, 68,211,166, 77, -217,185,115,231,186, 79,156, 56,241, 91, 0,239, 87,197, 85, 81,139,188, 74, 22,173,242, 98,171,252,235,106,125,180, 56,142, 43, -219,176,212, 34,168, 44, 34,168,226,255, 22,113, 86, 65,225,157,168,144, 16, 82, 84, 84, 84, 38,178,236,237,237, 81,218,185,194, -104, 52,254,141,215,108, 54,131, 16, 66,171,227,172, 34,195, 99, 1,156,164,148, 62,180, 82,137,150,113,238,254,216, 31,155, 69, - 83, 6, 90, 66,168,119,157,244,244,188, 25,192,133, 71,239,175, 88,249,198, 27, 30,227,103, 44,159, 93,146,157,146, 53,109,112, -247,122,190,110,142, 18, 89, 94, 70,190,170, 81,163, 46,120, 26, 81,217,218,116,182, 31, 58,116,232,150,227, 23, 19,136, 88, 44, - 16,240, 88,150,223,182,153,159,163,151, 3,235, 32, 7, 28, 18,227, 98, 47, 12, 31, 62,188,217,228,201,147,219,213, 36,239, 12, -195,192,222,222, 30, 91,182,108, 1, 99,197,222, 57, 47, 99,213, 72, 37,247,157,103, 17, 82, 57, 57, 57,136,142,142, 70,120,120, -248, 53, 66, 72,112,233, 37,215, 40,165, 40, 40, 40, 64,106,106, 42,220,221,221,175, 17, 66,248,229,167, 17, 43,114, 90,172,170, - 22, 81, 53,108,216,176,193, 38,147,137, 87,174,145,168, 40, 96,254, 38, 98,172,205,187, 90,173, 62, 14,224, 77,150,101,161,215, -106,245,255,249,230,155,242, 31, 95, 41, 47,178,170,226,180,164,213,108, 54,243,174, 93,187,198,183, 60, 51, 0,248, 0,100, 0, -156, 40,165, 96, 24,230,166, 21,229,233, 47,149, 74, 47, 68, 69, 69,217,135,132,132, 16,161, 80, 8,147,201,132, 91,183,110,121, -125,253,245,215,163, 79,156, 56,241, 14, 33, 36,160,226,230,233, 86,222,247, 38,231,206,157,211,248,248,248, 84, 42, 28, 11, 10, - 10,120,126,126,126,111, 0,136,251, 31,112, 38,165,167,167,247,122,243,205, 55,199,164,165,165,197,152, 76,166,207, 1, 52,117, -114,114,186,214,167, 79, 31, 72, 36,146, 48,107,132, 86,117,247,221,197,197,165,231,235,175,191,142, 21, 43, 86,224,235,175,191, -238, 76, 41, 61, 73, 8,233, 84, 80, 80,112,162, 71,143, 30, 80, 40, 20,189, 42, 19, 90,214,214, 37, 66,136, 95,251,246,237,215, -125,249,229,151,242,232,232,104,248,250,250,162,176,176, 16,159,125,246,153,203,172, 89,179, 78, 19, 66, 58, 88,196, 86, 85,156, -132,144, 0,145, 72,244,195,142, 29, 59,236,124,124,124,124, 4, 2, 1,227,227,227,131,156,156, 28,104,181, 90,209,252,249,243, -155, 73, 36,146, 63,150, 45, 91,246, 3,128, 62,255,237,231,189, 66, 90,243, 1,216, 3, 80,212,100,218,181,154,188,231, 3, 16, -149, 61, 60,124, 62,196, 98, 49,196, 98, 49, 68, 34, 17,238,221,187, 55, 67, 44, 22, 47, 41,223, 22, 87,199, 73,254,236,180, 2, - 9, 33,151, 89,150,173,246,117, 69,215,144,255,118,121,150,166,217,147, 16,178, 20, 64,216,211, 38,159, 57,227,228,228,244, 73, - 90, 90,218, 99,107, 57,213,106,181, 99, 81, 81,209, 50,119,119,119,184,186,186,150,245, 29, 30, 30, 30, 48, 26,141, 72, 79, 79, - 7,165, 20,121,121,121,144, 74,165, 80,171,213,203, 70,143, 30,189,103,205,154, 53,217,149,114,114,248,186, 71,255,233, 51, 89, -150,101, 0,128,229,217,217, 77,152, 10,212,171, 87, 15,109,219,182,133, 86,171, 69,126,126, 62,154, 52,105,194, 35,132, 12,101, - 24,198,158, 82,186,138, 82,122,234, 95,104,117,175,210, 25,126, 78,197,121, 81, 66, 8, 56,142, 3,143,199,251,139,208,170,120, - 88, 68, 81,105,125, 37,207, 50,113,235,245,250, 50,145,229,224,224, 80, 38,210, 76, 38, 83, 85, 66,171, 54, 74,189, 57,199,113, -222,132,144, 53,214,138,173,138, 24, 58,116,232,223,252, 61, 38, 78,156,152,148,145,145, 65,223,237, 18, 40,139, 57,146,146,218, - 64,105, 39,113,150,203,235,139,149, 42, 69,118,118,246,111, 0, 20, 53,248,137,134, 45, 90,180,144,108,222,119, 46,105,212,167, - 11,231,134,248, 56,218, 55,247,116, 82,186, 57, 72,132,118, 12,209,136, 77,198, 36,149, 74,229, 91,139, 17, 26, 0, 64,161, 80, -128,199,227,253, 35, 44, 90,148, 82, 19, 33, 36,152, 16,114, 45, 58, 58, 26,161,161,161,101, 98,203, 34, 66,242,243,243,113,235, -214, 45,180,111,223, 30, 0,130,173,241,213,226, 56, 14, 6,131, 1, 6,131,161, 76,192, 8, 4,130,191, 9, 24,203,181, 44,203, -222,172,101, 22,230, 42,149,202,246, 97, 97, 97,194, 31,119,237, 18, 82, 74, 53,120,186,241,117, 17,165, 85,108,144, 93, 1, 38, -147,169,204,202,198,231,243,241,228,201,147, 50,171,176,197, 50, 92,113,234,188, 42,136, 68,162, 73, 59,119,238,180,111,213,170, - 21,201,206,206, 6,199,113,101,141,228,247,223,127, 47,238,219,183,175,199,213,171, 87,167,161, 22,219,217, 0, 32, 85, 9, 34, - 0,176,183,183, 55, 1, 96, 94, 4,167,201,100, 34,109,218,180,153,156,149,149,213,172,164,164,100,190, 53,245, 8,192,193,210, -195,210,166,252, 17, 19, 19, 83,210,175, 95, 63, 73,253,250,245, 67,159,183,174,250,249,249,181,230,243,249,184,116,233,146, 14, -128,101,100,125,230,198,141, 27,186, 62,125,250,136,188,188,188, 90,215,160,193,245,243,247,247,255,217,197,197, 69, 98,177, 96, - 70, 68, 68,240,215,174, 93, 43, 79, 78, 78,134,193, 96, 64,100,100, 36,186,117,235, 6, 39, 39, 39, 76,156, 56,209,117,209,162, - 69,219, 0,180,168,134, 83, 44, 20, 10,183, 60,120,240,192,215,221,221, 93,114,241,226, 69, 52,111,222, 28, 89, 89, 89, 72, 75, - 75, 67, 81, 81, 17,210,210,210,240,254,251,239,187,124,251,237,183,234,127, 80,255,147, 39, 16, 8, 32,149, 74, 21,121,121,121, -207,227,231, 38, 2, 32, 44, 47,178, 68, 34, 17, 68, 34, 17,196, 98,241,115,237,203,250,138,116,226, 30,132,144, 59, 2,129, 64, - 36,149, 74, 5, 12,195, 64, 36, 18,117, 81,169, 84,183,223,122,235,173,166,199,143, 31, 79,176,134, 71,171,213,110, 17,137, 68, -124, 23, 23, 23, 0,128,175,175, 47,154, 55,111, 14,141, 70,195,229,231,231, 67,161, 80, 48,143, 31, 63, 70, 73, 73, 9, 82, 83, - 83, 81,183,110, 93, 62,195, 48, 91, 0,188, 83, 25,223,175, 87, 83, 87, 3, 88,109,121,237,236,236,156, 14, 64, 98,121, 45, 22, -139,225,225,225,129,228,228,100,200,229,114,118,214,172, 89,125,118,237,218,213,155, 16, 50,148, 82,186,181, 28,213,156, 87,213, - 71,203, 34,178,202,159,255, 34,180,194,195,195,103, 71, 71, 71,191, 81, 89, 71, 86, 58, 95, 91,165, 37,203,114, 88, 35,136, 8, - 33, 48,155,205,112,117,117,133, 84, 42,133, 84, 42, 5, 33,164,236,253,138,252,165, 35,252, 26,103, 86, 38,147,225,189,247,222, -163,171, 86,173, 26, 83, 42,182, 30, 88,251,221,136, 21, 49,101, 86,172,138, 8, 8, 8,184, 48,109,218,180,158,191,252,242, 75, -114,136, 79,125,158, 44,229,113,145,216, 94,161,128,103,157,240, 97,189,250,220,192,211,213,135,214,226, 65, 97, 97,161,164,129, -167, 84,207, 48, 90, 82, 71,196,147,187,203, 4, 34, 55,165,210, 67,160,215,101,216, 43,149, 66,157, 78,151, 7, 32,183, 58, 18, -123,123,251, 99, 34,145,168, 46,203,178, 96, 89, 22, 78, 78, 78, 14,148, 82, 40, 20, 10,120,122,122,218, 53,106,212,232, 62,143, -199, 3,195, 48, 40, 42, 42,122,252,232,209,163, 46,207, 74,152, 82,169, 60, 38, 18,137,234, 50, 12, 3, 66, 8, 88,150, 45, 91, -184, 96,249,159,101, 89, 16, 66, 80, 92, 92,108, 21, 39,165,244, 58, 33, 36, 56, 60, 60,188, 76,108, 29, 57,114, 4,111,191,253, - 54,242,242,242,112,251,246,237,242, 34,203,170,105,195,242,206,239,148, 82, 8, 4, 2,220,187,119,239, 47, 83,218,150, 67, 46, -151,215,250,225, 81,169, 84,231, 35, 34, 34,176,110,221, 58, 74, 41, 37, 0,100,132,144,230, 14, 14, 14,247,238,220,185, 99,149, - 31, 12,165, 20, 6,195,159,151, 90,234,120,249,231,171, 6, 98,186, 75,139, 22, 45, 72,126,126,190, 69, 64,150, 13,136, 88,150, -197,202,149, 43, 37,173, 90,181,154, 46, 22,139, 39, 11, 4,130, 2,163,209,248,163, 86,171,157, 79, 41,205,251, 39, 53, 74,237, -218,181,251, 52, 49, 49,177, 91,221,186,117,163,158, 67,196,211,150, 45, 91,234, 1, 72, 88,150,229,191,128,134,146, 45,173, 91, - 90,139,216,167,148,154, 90,180,104,161, 45,237,228, 89,107,185,156,156,156,182, 29, 62,124,216,179,110,221,186, 48, 26,141, 48, -153, 76, 40, 42, 42,194,153, 51,103,160,211,233, 96, 50,153,224,235,235,139,153, 51,103,106, 63,249,228, 19,241,154, 53,107, 50, -138,138,138, 6, 61,131,246,147, 61,123,246,200,220,221,221, 37, 37, 37, 37,136,139,139, 67,139, 22, 45, 80, 88, 88, 8,141, 70, -131,226,226, 98, 24, 12, 6, 20, 20, 20, 40,204,102,179,254,159,114,175,121, 60, 30, 68, 34, 17, 4, 2, 65, 94,221,186,117, 65, - 8, 17, 39, 36, 36,212,102, 42,206, 30, 64, 1,159,207, 23,150, 23, 88, 34,145, 8,151, 46, 93,154, 38, 20, 10, 43,181,102, 85, - 87,127,106,242,250, 31,208,145, 47, 21, 8, 4, 34,149, 74, 37, 40,215, 79, 11,236,236,236,224,226,226,178, 2, 64, 87, 43,243, - 29,164, 82,169,202,218,247,192,192, 64, 36, 38, 38,238,207,207,207, 31,146,145,145, 1,134, 97,182, 48, 12,211,219,162, 3,114, -115,115,225,229,229, 21, 84, 21, 95,155, 22,238, 99, 64,104,153, 69, 43,160,161,202,174, 66, 63, 5,123,123,123, 60,122,244, 8, - 26,141,134,198,198,198,146,177, 99,199, 18,189, 94,191,137, 16,242, 27,165, 52,190, 58, 45,242, 42,160, 86, 62, 90,150, 2,174, - 74, 88, 85, 20, 94,214, 8, 34,189, 94,111,215,162, 69, 11,206,210,129, 91, 14, 0,164, 42,161, 85,106, 57,168, 49,248,124,190, -124,236,216,177,133,171, 86,173, 26, 77, 8, 89, 75, 41,141,173,109, 1, 70,237,221,225,250,245,204,200,153, 42,117,253, 6,147, - 39,207,224,117,239,222,253,226,230,205,155,205,170,198, 93, 59,157, 58,182,213,117,217,103, 83,142, 28, 62,124, 24,120,234, 24, -109, 45,206, 31, 58,116,200,109,226,248,143, 48,115,210, 39, 71,237,125,157,132,118, 68, 37, 19,235, 52,153,118,160, 37,162,134, -254,221,246, 69, 69,165, 2,184, 90, 29,137, 68, 34,169, 27, 27, 27,235, 91, 94, 72, 24, 12, 6, 40, 20, 10,108,222,188,217, 89, - 46,151, 59,219,217,217,129,199,227,161,121,243,230,214, 90, 76,234,222,191,127,223, 87, 46,151,163,184,184, 24, 58,157, 14, 70, -163, 17, 28,199,129, 16, 2, 62,159, 15,161, 80, 8,153, 76, 86,163,149,125,229,197,214,145, 35, 71,208,164, 73, 19,228,230,230, - 34, 38, 38,166,198, 34,171,188,149,168,188, 63, 22,143,199,195, 54, 31, 31,140, 74, 73, 41, 19, 48, 75, 29, 28, 48,147,227,106, -117,239,155, 53,107, 70,127,253,245, 87, 28, 61,122, 20, 61,122,244, 32, 7, 14, 28, 48,152,205,102, 65,114,114,178,213,214, 49, -142,227,202,210,106,105,183,203, 11,172,154, 10, 45,147,201, 36, 23, 10,133,208,106,181,101, 83,251,229, 15,111,111,111,228,228, -228,240, 10, 10, 10,120, 41, 41, 41,210,121,243,230,141, 59,125,250,180, 59,128,129,255,203,134,104,213,170, 85,117, 71,141, 26, -245,132,199,227,209,183,223,126,123,240,227,199,143,123,185,187,187,159,252,229,151, 95,190, 1,224, 87, 83, 62,103,103,231, 43, - 60, 30,207,211,206,206, 78,176,123,247,110, 99, 97, 97,161,192,197,197, 37,221, 34,108, 45,101,109, 52, 26,147,242,243,243, 67, -172,225,115,118,118, 22,124,247,221,119,198,236,236,108,129,155,155, 91,186,133, 71, 38,251,191,246,190, 60, 46,170,178,125,255, -122,206,153,149,217, 24,214, 1, 4,193, 13,113, 55,220, 3, 21,211,212,164,222,212, 76, 95, 77,211, 80,204,236, 87,154,169,245, - 85,223,220, 73,211, 52, 51, 83, 94,247, 50,211,108, 51, 51,115, 9,114, 41, 53,169, 20,196, 5, 18,217,215, 97,103,152,237,204, -249,253,193,204, 52,224,192,204,224,160,216, 59,247,231,115, 62,156,153, 51, 92,231,217,159,235,185,159,251,185,111, 49,239,240, -225,195,186,138,138, 10,158, 92, 46,255,173,172,172,204, 38, 94,113,113,241, 11, 47,190,248,226,217,211,167, 79,123,211, 52,141, -187,119,239,162,164,164, 4,114,185, 28,251,247,239, 71,112,112, 48,190,248,226, 11,165, 82,169,156,249,222,123,239, 45,173,170, -170,178,199,213,195,144, 1, 3, 6, 4,151,149,149, 65, 46,151,163,186,186, 26,191,253,246, 27,186,117,235,134,220,220, 92, 80, - 20, 5,185, 92,142,109,219,182,213, 16, 66,148,173, 97, 2,162,105,218,172,117,178, 32, 71,181,131, 6, 13, 66, 66, 66,194, 34, - 71,200, 17,203,178, 26, 46,151, 91,143, 96, 89,220,235, 29, 77, 27,195, 48, 60,163,141, 40,177,231,115, 43,144,161,110,110,110, -188,134, 95,214,212,212,240,252,253,253, 7, 59, 64,124,189,220,220,234, 20, 78,193,193,193, 40, 47, 47,103, 52, 26,205,164,253, -251,247,235, 0,160, 79,159, 62,147, 24,134,169,213,235,245, 52,159,207, 71,117,117, 53,124,125,125,189, 26, 5,164,176,248,219, -131,171,253, 26,218,104,249,251,251, 35, 60, 60, 28,106,181, 26,121,121,121, 72, 76, 76,212, 49, 12,115,224,227,143, 63, 54,248, -248,248,188,244,220,115,207,209, 87,174, 92,121, 21,192,252,166,184,200,163,162,205,106,140,108,153, 78, 29, 14, 5,144, 0, 32, -202,148, 73,203,173,195,166, 52, 89, 13, 52, 90,196, 70,135, 43,203,206,206, 22,139,197, 98,243,119, 58,157, 14, 1, 1, 1, 6, -131,193, 64, 26,190,199,148,142,230, 10,151,203,149,190,253,246,219,101,219,182,109,155, 6, 59, 13,202, 15,191,218, 5,251, 26, -144,172,237,235, 86,110,253,112,221,106,207,180, 31,246, 96,231,150, 13, 12,195,224, 74,207,158, 61, 7, 87, 85, 85,113,220,197, - 58, 20,151,225, 56,234,252,104,177,118, 86, 8, 5, 96,247,165, 75,151,174,140, 25, 51,230,252,238,207,191,244,204, 77, 79,255, - 69, 80, 81,156, 39,235, 20,202,225,181, 9, 30, 87, 89, 91,203,155, 52,105,146, 15,128,231,154,194,162, 40, 10,233,233,233,200, -200,200,128, 68, 34,129, 84, 42,133, 68, 34,129, 76, 38,131, 84, 42,133, 84, 42,117,184, 12, 41,138, 2,195, 48, 56,114,228, 8, - 68, 34, 17,196, 98,113,189,203, 68,178,238,167,110, 70,143, 30, 13,165, 82, 9,137, 68, 98,222,238,116, 68, 76, 54, 90, 26,141, - 6, 26,141, 6, 90,173,150, 1,192,229,112, 56,136,201,206, 54,107,121, 28, 33, 48, 13,165, 87,175, 94,236, 47,191,252,130,243, -231,207,163,186,186, 26, 31,126,248, 33,252,253,253,159, 0,176,204, 81, 44, 11, 35,125,166,162,162,130, 91, 81, 81, 97,214, 14, -114,185, 92,179,198,208,222,201,129,195,225,152, 87,163,166,203, 82,171, 69,211, 52, 20, 10, 5,252,252,252,176,125,251,118, 94, -187,118,237,158,126,152,131,208,250,245,235, 59,109,222,188,121,215,190,125,251,142,191,240,194, 11,135,174, 93,187, 54,195,221, -221,253,234,153, 51,103, 86, 11, 4, 2, 67, 51,251,119, 96,110,110,174,175,229, 87, 6,131, 65,164,215,235,205,196,182,166,166, - 6, 61,122,244,176, 27, 47, 37, 37, 69, 4, 0,171, 87,175,230, 2, 16,153,220,134,152, 48,107,106,106,184,221,186,117, 11,180, -147, 20,220, 36,132, 12, 30, 49, 98,196,133,147, 39, 79,122, 4, 7, 7, 35, 39, 39, 7, 57, 57, 57,232,212,169, 19,214,174, 93, - 91, 93, 81, 81, 17, 97, 36, 87,223,216,153,237, 0, 15, 15, 15,110,102,102, 38,244,122, 61, 30,123,236, 49,108,219,182, 13,147, - 38, 77, 66,143, 30, 61, 80, 81, 81,129,148,148, 20,236,221,187,215,131,199,227, 61,247,176, 39, 31,227,214, 86,163, 87,115, 68, -175,215,203,132, 66, 97,133, 64, 32,224,155,236,179, 18, 19, 19, 29,214,102, 89, 46, 0, 29,249,220, 26, 72,107, 67,225,243,249, -240,243,243,179, 27, 71, 32, 16, 16,211,216,168,215,235, 81, 94, 94,206,248,251,251,155,183,247,147,146,146,152,144,144, 16,134, -166,105,154,207,231,131, 16, 2,145, 72,212,232,128,207, 50,236,202,103, 38, 45, 51,159, 58,164,184, 98,217,188,183,235, 22,253, - 73, 73, 73,208,106,181, 72, 76, 76,212,189,247,222,123,185,101,101,101,243, 0,112, 78,156, 56,241,226,162, 69,139,104, 95, 95, - 95,179, 29,173, 53, 46,242,168,145, 45,107, 90, 46,211, 44,148, 16, 29, 29, 77,140, 71, 43,137,137,224,176, 44,123, 15,185,106, -140,120, 25, 39, 9, 98,171,211,209, 52,141, 31,126,248,193, 76, 8, 76,167, 14, 89,150,133,179,137,150,151,151, 87,245,128, 1, - 3,100, 89, 89, 89,159, 53, 87,147,181,125,221,202,173,113,171,222,241, 84, 94,255, 21,217,185,121, 80, 22,234,174,156,187,122, -231, 43, 0, 95, 1, 0,118,116, 77,192,236,235, 31,217,139,217,213, 71,212,187,103,128,244,171, 39,199, 60, 29, 52, 49,118, 62, -245,202, 43,175, 68,190,248,226,139,229, 47,188,240,194,107, 18,137,164,179, 86,171, 45,253,242,216,177,140,137, 19, 39,182, 99, - 24,230, 69, 91, 62, 71,116, 58,221,221,241,227,199,155,203,214,207,207, 79,118,240,224, 65,133, 84, 42,197,212,169, 83,139, 50, - 50, 50,204,219, 69,149,149,149,119,237, 73,163, 86,171,189,219,187,119,239, 70,183, 11, 77, 26, 73, 71, 48,141,117,105, 62, 93, - 88, 82, 82,130, 27, 55,110,128,195,225, 96,224,192,129, 56,119,238, 28, 34, 35, 35, 29, 58,113, 88, 91, 91,139,224,224, 96,212, -214,214,162,186,186,186, 6,128, 96,127,187,118, 0,128, 87, 75, 74,240,219,123,239,225,215,184,184,102,181,163,222,189,123,179, - 23, 47, 94,196,213,171, 87,161, 86,171, 49,115,230, 76, 24,183, 13, 1, 96,164, 3,121,238,224,231,231, 55,122,204,152, 49, 1, - 0, 80, 93, 93, 77, 46, 93,186, 4,161, 80, 8, 66, 8,242,242,242,112,244,232, 81,228,228,228,128, 16, 2, 15, 15,143, 64, 66, - 72, 59,150,101,239, 52, 49, 49,144, 59,119,238,224,221,119,223,133,193, 96,192,162, 69,139, 16, 26, 26,106, 38, 88,119,239,222, -197,234,213,171,193, 48, 12,222,121,231, 29,116,234,212, 9, 58,157, 78,232,136,159, 50,103,203, 27,111,188,145,246,213, 87, 95, - 29,207,202,202,122,106,221,186,117, 67, 9, 33,134,133, 11, 23,190, 43,147,201,152,251,193, 45, 45,175,196,141,219,119,205, 68, -168,225,229,227,237,233, 48,222,173,244, 44,243,255, 51,140, 37, 30, 3, 47, 79, 15, 71,147, 88,163,211,233,170,199,141, 27, 39, - 63,114,228, 8,233,212,169, 19,254,250,235, 47,211,226,180,166, 25, 46, 29,114,148, 74,101, 40, 77,211,188,219,183,111, 35, 36, - 36, 4, 3, 6, 12,192,154, 53,107, 80, 92, 92, 12,189, 94, 15, 95, 95, 95,131, 78,167, 75,210,104, 52, 63, 63,236,137,199, 82, -235,100,121, 37, 38, 38, 46,226,243,249, 44,128,139, 0, 28, 34,218, 44,203,106,218,182,109,219, 16, 91,143, 86, 34, 45,121,146, -209,223,223, 63, 81, 42,149, 62, 93, 90, 90, 90, 79,171, 21, 17, 17,161, 85, 40, 20,103,237,197,145, 72, 36,165, 52, 77,123, 1, - 64, 78, 78, 14,196, 98, 49, 47, 61, 61, 61,142, 16,242, 22, 0,180,107,215, 46, 78,169, 84,242,218, 25,199, 83, 63, 63, 63,104, - 52,154, 70,205, 88, 46, 36,229,239, 1,176,199, 98,238,205, 43, 47, 47,119,219,176, 97, 67, 85, 92, 92,156,138, 97, 24, 53,128, - 51,101,101,101,102, 63, 90, 33, 33, 33,229, 92, 46,215, 83, 46,151,183,177,128,186,135,139, 60, 74,210,164, 70,203,200, 36, 89, - 43,255,100, 85,147,101,141,108,217,163,149, 32,132, 64,165, 82,213,211,142,152, 78, 29, 90, 35, 90,198, 9,189, 89, 91,135, 70, -146,229,118,240,224,193, 3, 91,182,108, 57,111,239,255, 89,218,104,237,216,184,106,157,137,100,253,121,254, 36,190, 73, 45, 47, - 94, 20,183,105,115,115, 43,161,155,143,184,151,159,194, 59,225,189,181, 43,101,105, 63,236,197,161, 29,239,179,127, 94,190,220, -255,242,229,203,211,230,206,157,219,214,216,176,148, 0,254, 0, 48,209,158, 83, 58, 69, 69, 69,245,236,163, 66, 67, 67,111,202, -229,114,133, 80, 40, 68,122,122,122, 85,114,114,178,195, 91, 50, 13, 49,157,196,244,235,145,172,228,228,100, 12, 27, 54, 12, 0, -112,238,220, 57, 68, 68, 68, 56, 68,182,116, 58, 93, 89,215,174, 93,205,218,173,242,242,114, 3, 0,196,230,229, 33,222,223, 31, - 28, 14, 7,191,198,197, 97,137, 78,135, 53, 92,199, 76,119, 30,123,236, 49,246,242,229,203,200,200,200,128, 94,175,199,179,207, - 62,107, 73,178, 28,201,115,143, 46, 93,186,156, 58,115,230,140,143, 68, 34, 65,117,117, 53,170,170,170, 48,125,250,116, 76,154, - 52, 9,106,181, 26,135, 15, 31,198,183,223,126, 11,169, 84,138,234,234,106, 84, 87, 87,123, 68, 71, 71, 95, 32,132, 12,105,204, -182,144,101, 89,118,212,168, 81, 56,123,246, 44,104,154, 70,255,254,253, 81, 82, 98, 62, 12, 4,133, 66, 97,237, 25,109,236,239, - 15,101, 66,226,112, 56,108, 98, 98,226,186,161, 67,135, 34, 43, 43,235,169, 62,125,250,124, 56, 99,198,140,156,251,197,245,112, -151,162,119,183, 14, 80,171,213, 80,171,213, 8, 8, 8, 64,101,101, 37,210,210,210,160, 86,171,161,240,149, 59,140, 23,222,163, -147, 25,207,215,215, 23,213,213,213,184,115,231, 14, 52, 26, 13,188,189, 61, 28,169,255,160, 81,163, 70,253,116,224,192, 1,175, -189,123,247,106,162,162,162,248, 31,126,248, 33,145,201,100, 40, 44, 44,108,110,150, 19,207,157, 59, 23, 60, 98,196,136,176,235, -215,175, 35, 49, 49, 17, 26,141, 6,225,225,225,184,117,235, 22, 6, 13, 26,132,170,170,170,139,151, 47, 95,254,182, 53, 76, 60, -166,109, 61, 11,205,211, 18,185, 92,174, 5,176,249,126,218, 98,102,102,166,160, 87,175, 94,106,161, 80,200, 55,146,182, 77, 15, -171,109, 91,169,247,251, 58,201,216,148,248,249,249,205,243,246,246, 30,209,190,125,123, 20, 20, 20,240,248,124, 62, 34, 34, 34, -180,253,250,245,211,250,249,249,189,234, 64,189, 92,231,241,120, 67,234, 22, 19, 12, 50, 51, 51,193,178,236,162, 30, 61,122,188, - 94, 89, 89,137,146,146, 18,190, 76, 38, 51, 47,170,195,194,194,160, 86,171,175, 59, 64, 54, 87,134,132,132, 44,229,241,120,107, -138,138,138, 62,182, 82, 70,252,222,189,123,203,120, 60, 30,180, 90,109, 61,178,105,141,139, 60,202, 36,171, 30,209,178, 96,145, - 13,213,233, 54,183, 13,237,181,209, 34,132, 64,163,209, 64, 44, 22,155,183,164, 44, 61,193, 91, 35, 90,205,145,160,160, 32, 12, - 24, 48,192,237,208,161, 67,159,110,216,176,225, 66,115, 48,190, 56,240,137,191,187,161, 38, 40,247,226,247,184,121,245, 10,190, - 74, 41, 43, 94, 20,183,233,181,103,158,155, 92,208,144,152, 29,158,109, 27,175,179,175,184, 71, 27,133, 87,194,198,245,113, 50, -229,245, 95,145,151,159,143,239, 47, 94,190,162, 97,217, 20, 0,139,156, 85,217,150,167,215,154, 75, 82, 91, 96,224, 49,187,119, - 40, 46, 46, 70, 74, 74,138,137,100,133, 3, 64,100,100,100,146,137,108, 93,185,114, 5,125,250,244,185,199,189,195, 61,154,135, -210,210,181, 13,222, 49, 2,128,183,137,240,115, 56, 28, 68, 44, 93,234, 48,201, 34,132,176, 12,195, 64,169, 84,154, 86,138,205, - 34, 89,198, 65,241,205, 51,103,206,248,236,222,189,187, 98,223,190,125, 37, 6,131,129,219,187,119,239,192,190,125,251,146,253, -251,247, 3, 0, 38, 78,156,136, 69,139, 22, 33, 57, 57, 25, 98,177, 24,145,145,145,204,242,229,203,125,231,205,155,247, 42,234, -252, 36,221, 35, 12,195,240,218,181,107,119, 26,192, 19,215,175, 95, 7,128, 11, 44,203, 70,152,158, 55,245,204, 14, 49, 84, 86, - 86,114,165, 82,169, 85,215, 16,188,186, 99,157,142,110,245,153, 49,207,159, 63,255,238,198,141, 27,191, 90,176, 96,193,237,251, -196,180,170,209,122,250,233,167,161, 82,107,145, 93, 80, 14,134,209, 67,165, 45,116, 24,207, 82,163,245,244,211, 79,163,166, 86, -131,204, 60, 37,244,122, 6,149, 42,189,189,237, 72,244,228,147, 79,158, 56,120,240,160,223, 47,191,252, 2,134, 97, 12,183,110, -221,186, 51,110,220, 56,217,194,133, 11,189, 44,108, 80, 29,149, 45,147, 39, 79,158,112,254,252,121,101, 88, 88,152,231,197,139, - 23, 81, 88, 88, 8,189, 94,143, 39,158,120, 2,124, 62, 63, 51, 46, 46,142, 7, 96, 75,107, 33, 90, 2,129, 0,151, 46, 93,114, - 10,193,178, 20, 62,159,223,236,237,199, 71, 85, 46, 94,188,152, 51,119,238,220,110, 50,153,108,243,224,193,131,135,121,121,121, - 81, 30, 30, 30,137,109,218,180,121,189, 87,175, 94,118,239, 46,112,185,220, 25, 98,177, 56, 77,175,215,211, 85, 85, 85,168,174, -174, 6, 0,232,245,122, 62, 69, 81,104,215,174,157, 89,121,210,191,127,127,248,249,249, 49,169,169,169, 51,236,197, 47, 44, 44, -172,119, 10,209,138,204,142,136,136,224,168,213,106,100,100,100,156,179,124,208, 24, 23,105,237,210,172,160,210, 20, 69,129,101, - 89, 8,251,246, 69,222,201,147, 56,114,228, 72,147, 47,217,177, 99, 7, 26,170,250, 26, 70,247, 54,157, 46,156, 53,107,150,249, - 55, 87,174, 92, 49, 27,197, 63,251,236,179,245, 48, 47, 93,186,116, 15,217,178, 39, 98,120, 97, 97,225,245,195,135, 15, 95, 94, -191,126,253, 69, 59, 11,200,140,105,178,209,154, 48,101,106,222,214,119,255,115,109,223,209, 51, 61,242, 84,108,222,162,184, 77, - 11, 26,146, 44,123, 49,187,250, 73,186, 6,250,122, 37,110, 88, 31,231,110,210,142, 29, 76,202, 47,135,158,157,237, 96, 69,218, -204,187,165,102,145, 16, 98,112, 6,102, 51, 26, 92, 61, 76, 75,247, 14,121,121,121,102,146,101,225,176, 52, 60, 50, 50, 50,201, - 72,178, 76,207,244,205, 73, 39,135,195,193,130,170, 42,112, 56, 28, 68,173, 88,129, 39, 86,173,114, 56,239, 12,195,128,195,225, - 32, 52, 52,212, 97,146,101,137, 73, 8,137,168,169,169,193,222,189,123, 43,111,223,190,221,161,125,251,246,243,246,236,217,179, - 73, 36, 18,213,251,159,154,154, 26, 60,243,204, 51,248,248,227,143, 49,106,212, 40,221,140, 25, 51, 4, 20, 69,141,104, 42,157, - 25, 25, 25,179,135, 15, 31,190,163,182,182,150, 83, 82, 82, 50,219,222,103,182,242,126,248,240,225,219,161,161,161, 67,209,184, - 11, 7, 3,128, 95,238, 7,115,243,230,205, 0, 16,118, 63,152,141,105,180, 62,255,252,115, 24, 12, 6, 4,249,201,161, 86,171, -209,176,172,109, 97, 54,212,104, 29, 58,116, 8, 6,131, 1,109,253, 61,161,209,104, 96, 50, 32,182,133,233,229,229,245,254,190, -125,251, 2, 83, 83, 83,145,157,157,141, 77,155, 54,221, 45, 43, 43, 27, 83, 86, 86, 38, 88,190,124,121,194,148, 41, 83, 20, 6, -131, 65,237,104,223,100, 89, 86, 77, 8,153,241,248,227,143,239, 95,189,122,245, 95, 93,186,116,105, 27, 17, 17, 33, 47, 41, 41, - 41,250,253,247,223,239,236,216,177, 67,162,215,235,103, 52,182, 37,245, 32,250,187,165,228,228,228,172, 48,106, 83, 29, 34, 88, -246,164,243,210,165, 75,111, 27,177, 47,219,131,253,160,242,126,191, 39, 25,109,165,243,163,143, 62,202, 70, 3,255,104,142,166, -243,210,165, 75, 25, 35, 70,140, 88,165, 80, 40,150, 11,133, 66, 20, 21,213, 5, 59, 48,105, 30, 77,243,117,223,190,125, 49,106, -212, 40,220,188,121,115,213,210,165, 75, 51,238,167, 60,141, 11,238, 14, 0,166, 13, 31, 62,124,225,132, 9, 19,240,209, 71, 31, -129,101,217, 93,255, 4, 18,108, 51,168,116,116,116, 52,177,252, 11, 0, 58,157, 46, 43, 45, 45,205,191, 83,105, 41, 29, 64, 8, -250,247,239, 15,203, 24,133, 38,187, 29,147, 65,221,207, 63,255,172, 55, 24, 12, 77,250,172, 98, 24, 38,235,252,249,243,138,147, - 39, 79,114, 77, 21,106, 52,234, 52,228,230,230, 82, 9, 9, 9,102,237, 24,135,195, 65, 98, 98, 81,136,152,192, 0, 0, 32, 0, - 73, 68, 65, 84,162, 94,171,213,102, 58,154,225,155, 55,111, 58,101, 53,247,115,114,198,235, 39,190,255,218,123,224,128,193,101, - 50, 79, 79,171, 29,217,228, 65,190,201, 6,198,161,214,172, 91,187, 82,110, 34, 89,159, 39,229,151,213,170,153, 97,215,139,106, -254,116,118,101, 87, 86, 86,102,152, 78, 23, 86, 85, 85,101,182,162, 70,248, 59, 33, 36,220,223,223, 63, 9, 13, 78, 23,154,158, -245,233,211,231,158,103, 14,169, 77, 12, 6,184,187,187,155, 7, 9, 71,237,178, 8, 33,172,105, 43,219,152, 46,114,159,121, 62, -127,237,218,181,144,233,211,167, 75, 67, 67, 67,211, 9, 33,220,152,152, 24,173,159,159, 31,239,220,185,115, 58, 0,100,232,208, -161,156,252,252,124, 54, 39, 39, 71,249,175,127,253,171,114,214,172, 89, 94,127,252,241, 7,223, 96, 48,156,178,129,253, 23,128, -225,142, 62,179, 37, 19, 38, 76, 72,135, 21,199,161,247, 35, 45,129,105, 18,101, 89, 5,210, 51,114,140,177, 46, 13, 96,238, 22, -152,237,170,116, 58, 61,148, 21, 37, 14,107,180,210,238,228, 24, 67,142, 49, 96,152, 92, 35, 94,157, 65, 60, 91, 90, 99,143,182, - 32,114,243,230,205, 99, 40,138,162,126,253,245, 87,245,250,245,235,179,138,138,138,158,101, 89, 54,211,216,206,162,246,238,221, -251,169, 29,174, 28, 26,171,251, 20, 66,200,160,197,139, 23,191, 6, 32, 18, 64, 91, 0,153, 0,206, 1,216,210,202, 60,152,111, -122, 68,177,155, 45,143,202, 73,198, 83,167, 78,173, 24, 59,118, 44, 39, 56, 56,248,255,130,131,131,169,210,210, 82, 84, 85, 85, -129,162, 40,248,249,249,161,123,247,238,240,243,243, 51, 92,191,126,125,237,226,197,139,109,250,228,235,214,173, 91, 7,157, 78, -215,145,162,168, 14, 0, 58,176, 44,219,129, 16,210, 1,128,167, 81, 51, 38, 11, 9, 9,225, 12, 28, 56, 16, 3, 6, 12, 64, 66, - 66, 2,190,248,226,139, 61, 44,203,158,176,212,102, 53,228, 34,173, 65, 82,250,146,161,196,128, 4,150, 66, 84,183,223,216,196, -235,225,132,237,154,116,239,252, 96, 51,168,244, 61, 3, 78,105,233,168, 49, 99,198,156,164,105,186,157,181,137,203, 74,240,231, -140,130,130,130,167,154, 28,196, 74, 75, 71,189,254,250,235, 39,105,154,110,103,210, 84,233,245,122,181, 82,169,124, 37, 42, 42, -106, 27,151,203, 21, 88,226, 26, 12,134,187, 5, 5, 5, 15, 52, 86, 95, 67, 63, 90,163,198,140, 45,190, 95, 76, 9,143,234,120, -243,216,127, 81, 80, 88,140,207,147,242, 75, 43, 53, 76,212,205,162,234,107, 45,145,254,140,140,140,209,173,152,241,255,222,216, -150, 96, 83,207,236,148, 34, 59, 28,146, 22,217, 72, 31, 49,146, 45,167,116,242,252,252,252, 13, 75,151, 46, 29,185,118,237, 90, -159,227,199,143,203,140,239,192,248,241,227, 11,175, 93,187, 54, 24,128,160,182,182,246,212,218,181,107,125, 86,174, 92,233, 5, -192,203, 56,200, 20, 20, 20, 20,108,133, 75,154, 20,157, 78,151,221,189,107,152,169,238,234,185,116,176,188,215,235,245,217,142, -224, 89,195,177,252,204, 48, 76,182, 13,173,242,130, 1, 3, 6,208, 11, 22, 44, 40, 56,126,252,184, 41,144,110,141, 69, 59,187, -137, 38,156,146,218,217,151,212, 0,214, 27, 47,151,180,194,177,206,145,207, 15, 75,190,254,250,235,101,147, 38, 77,218,235,233, -233,249, 73,135, 14, 29,194, 20, 10,133,204,205,205, 13,106,181,186, 82,163,209,220,184,121,243,230, 11, 75,151, 46,253,203, 30, -172,189,123,247,210, 0,120, 6,131, 65, 72, 81,148, 24,128,140, 16,226, 97, 34, 90,132, 16,104,181, 90,100,100,100, 96,201,146, - 37,204,233,211,167,223, 3,240,142, 3,201,237, 7,192,199, 98, 28,247, 1,160, 65,157, 3,219, 34,163,102,179, 69,132, 24,144, -208, 53,137, 37,215,195, 73,163, 70,250, 54,131, 74, 55,210, 80,170, 1, 12,114,114,227,107, 10, 51,184,181,116,146, 23,213,235, - 63,195,142,245,245,226, 28,154, 72,152,213,207, 54, 54, 0,203, 85,250,185, 91, 78, 36,111, 80,235, 89,131, 86,111,120,233,102, - 97,117,202,255,240, 0,164,111,206, 51, 59,112,159,116, 82,250,136, 19,243,122,141, 16,242,248,220,185,115,151,137, 68,162,254, - 0, 80, 83, 83,243,107,110,110,238, 42,211,169, 66, 91,207, 93,210, 4,107, 46, 42,234,219, 26,241, 52, 26,205,235,143, 63,254, -248, 7, 12,195,108,212,233,116,231, 92, 53,229,146,214, 44,159,127,254,249, 95,166,121,249,249,231,159,167, 1,224,240,225,195, - 14,159, 6,158, 62,125, 58, 99, 12,100, 94, 11,160, 26, 64, 5,234, 28,110, 19, 0,168,174,174, 46,205,205,205,189,206, 48,204, -117, 0,159, 54,227,196,173, 15, 33,228, 59,150,101,159, 54,142,157,223,177, 44,251,180,229,119, 45, 45, 22,100,203,218,120,111, -219, 24,222, 37,117,114, 56,249,239,137,182, 33,129,178,245,185, 49,185,145, 95,149,120,191, 43, 88,151, 60,178,196, 50, 29,192, -139,205,125,238,146, 71,178,206, 51, 1, 60,235, 42, 9,151, 60,114,243, 95, 51, 8,150, 73, 82, 82, 82, 90,204, 68,224, 97,139, -229, 54,161,181, 45, 67,147, 88,211,102,185,136,150, 75, 92,226, 18,151,184,196, 37, 46,113, 73, 83, 36,210,104,163,101, 38, 81, - 70, 91,173,134, 36,203,146, 92, 89,126, 38, 0, 70, 52,178, 42,115,228, 52,193,136,102,172,250, 78,185, 48, 93,152, 46, 76, 23, -166, 11,211,133,233,194,252,223,194,108,166, 68,219,216, 58, 60,214, 82, 68,203,100,252,158, 18, 78,150,119, 75, 98,151, 91, 51, -134,111,138,104,213, 51,246,116,246, 5, 96,132, 11,211,133,233,194,116, 97,186, 48, 93,152, 46, 76, 23,230,125, 94,195,222,122, -235,173,183, 81, 23,255,152,125,235,173,183,222,102, 89, 54,186,142,198,176,209, 45,249,238,228, 62, 24,154,242, 24, 88,211,149, -220, 7, 67, 27, 41,147, 88,211,101,249,189,107,235,208, 37, 46,113,137, 75, 92,226, 18,151,180,118,185, 16, 23, 23, 87, 19, 23, - 23,103, 50,124, 47, 2, 64,140,218,172,162,150,124,177,113,155,208,230, 65, 41,155, 33,120, 30,180, 16, 66, 2, 40, 14,111, 42, -151, 39, 24, 6,214,208, 29, 0, 64,209,201,140,166,246, 39,189, 94,251, 9,203,178,185,205,197,238, 74, 72,215, 78,114,183,111, -213, 12,195,203,170,212, 76,184,206,178,151,154,131,243, 60, 33, 17, 2, 62,255, 71,129, 92,110,213, 75,161,186,172, 76,165,214, -104, 70, 30,102,217,243,174, 62,224, 18,151,184,196, 37, 46,121, 20,132, 16, 34,246,240,240, 56, 77, 81, 84,176,197,119,176,118, - 15, 0, 12,195,228, 41,149,202,145, 44,203, 22, 63, 72,204, 6,162, 1,112,169, 53,148,159,163, 91,135, 28,160, 94,108, 33,155, - 17,179,187,248, 75, 6,135,117, 8, 62,144,155, 95,144, 84, 81,171,137,185,145, 83,169,116, 52,145, 28,158,112,150,220,219,111, -205,191,103,188,238, 21,218, 57,140, 4, 5,181, 1, 88, 32, 51, 43, 91,145,118,251,214,240, 67,251,182,188,193, 19, 10,151,104, -107,107,255,235, 48,243, 36, 68, 28, 44, 17,156,251,239, 91, 83,228, 28,232, 49,121,245,129, 31,186, 17, 18,148, 82,231, 90,194, - 33,146, 37,247,242, 58, 17,119,234,148,155,135,209, 1,168, 5,107,173,139,175,247,231,159,110,255, 55,114,228,137,231, 9, 25, -229, 34, 91,255,200,193,200, 79, 38,147,205,227,114,185, 81, 90,173, 54,152,207,231,103, 49, 12,147, 88, 90, 90,186,153,101,217, - 28, 87, 9,185,196, 37, 54,251, 80,163,129,204, 31,102,144,115, 0,144, 74,165,191, 81, 20, 21,104, 73, 2, 76,254, 29, 27,250, -137,180,240, 23,249, 87, 73, 73,201,227, 77,228,183,131,167,167,231, 54, 0,253,108, 57, 76, 54,110, 53, 93, 86, 42,149,175, 24, - 79, 31, 91,195,147,122,120,120,172, 32,132, 60, 79, 81,148,205,128,194, 6,131,129, 97, 89,246,112,105,105,233, 59, 44,203, 86, - 54,246, 59, 15, 15,143, 83,169,169,169,253,124,125,125,109,106,105,244,122, 61, 50, 51, 51,125,250,247,239,255, 51,128, 46, 45, -137,233, 8, 23,121,152,210,212,201, 67,171,156,199,116, 99,111,196,108,131, 1, 83,119,175,121,165, 77,222,221,219,109,102,175, -253,172,115, 23,111, 81, 84,106,113, 77,190,189, 47,228,187, 73,191,141,124,226,233, 97,115, 94, 91, 32,254,253,218, 13,252,152, -240, 11, 42,170,213,160, 41, 10,114,169, 8,157, 59,119, 36,155,226,143,120,239,217,190,105,163,155, 68, 30,173,170, 42,251,151, - 35, 25, 18,139, 56, 75, 22,141,235, 47,246,242,100, 0, 3,131, 55,199,244, 22,255,223,119, 73, 75, 0,188,237, 48,201, 58,125, - 90, 84, 88, 80,128,149, 1, 1,224,232,245, 16, 82, 20,132,132, 64, 72, 81, 16, 11,133, 24,189,107, 23, 86, 29, 63, 46, 90,246, -212, 83, 46,178,245, 15, 19,169, 84, 58,163,115,231,206,235,119,238,220,233,213,190,125,123,136,197, 98, 40,149, 74,239,155, 55, -111, 62, 54,127,254,252, 23,221,221,221,151,150,151,151,239,112,149,148, 75, 92,210, 40,233,120, 12,128,213, 32,241, 77, 61,123, - 80, 66, 81, 84, 96, 78, 78,142,175, 72, 36, 2,195, 48,198,104, 0, 6,243, 66,218, 50, 82,142,209, 81, 45,186,116,233,162,181, - 49,110,124, 84, 88, 88, 56,194, 50, 20, 90, 83, 17,119,114,114,114, 70,116,235,214,237, 35, 0, 35, 27, 33, 47, 43, 94,123,237, -181,121, 61,122,244, 48,105,129,140, 81, 16,234,254, 22, 23, 23, 99,238,220,185,230,119, 24, 12, 6,156, 60,121,242,181, 25, 51, -102, 0,192,252, 38,242, 30,236,235,235, 75,102,207,110,218, 71,209,242,229,203,177,124,249,114,108,217,178,133,112,185, 92,185, -141,242,116, 10,166,189, 92,228, 97,104,176, 26,122,136,111,240,179, 99, 13,226, 29, 30,187,135,104,217,221, 56, 89,195,247,171, - 55,239,140, 89, 57, 61,146,236,158, 63, 34,244,229, 45,167,126,233, 22,224, 54, 36, 37, 87,149,101,135, 38,235,165,129, 67,158, -138,154, 59,111,145,248,179,175,207,224,230,245, 63,145,122,238, 96,189,223,244, 29, 57, 3,249,197,149,152, 49,231, 77, 9,161, - 57, 81, 60,161,232, 37,109,109,205,110, 59,181, 89,138,110,158,162,255, 55,176,127,119,110,142,219, 77,248,121,184, 33,178, 79, - 39,110,208,137,171,255,175, 27, 33, 31,164,176,172,205, 88,133, 13, 73,214,206, 41, 83, 48, 88,167,131, 47, 77,131, 38, 4, 52, - 0,138, 16,212,170,213,184, 60,117, 42,250,239,223,143,119,142, 30, 21,173,120,230, 25,135,201,150, 72, 36,218,163, 82,169,214, - 53,195,113,219,195, 28, 60, 59, 75,165,210, 37, 21, 21, 21, 83, 91, 81,154,252, 1, 20, 89,137,143,200, 3, 32,103, 89,214,161, -200,194, 66,161,112,214,228,201,147, 55,109,221,186, 85, 84, 80, 80,128,220,220, 92, 48, 12, 3,161, 80,136,208,208, 80,114,234, -212, 41,175, 69,139, 22,109,144,201,100,130,138,138,138, 15, 28, 72, 39,197,229,114,167,123,122,122,142, 85, 40, 20,190, 69, 69, - 69, 69,165,165,165, 71,213,106,245,238,230,174,236,141,152, 47,132,132,132,140, 13, 8, 8, 80,228,228,228, 20,103,103,103,127, -171, 86,171,247,176, 44,107,184,207, 50,237, 5,163,183,122, 0,121, 33, 33, 33,201,119,238,220, 41,116, 34,102,110, 72, 72, 72, -138,163,152,132, 16, 49,128, 67, 0, 2,108,252, 52, 23,192, 68,214, 65,109,182, 75,156, 71,178,140, 33,173,234, 17,170,166,158, - 61,104,113,115,115,195,193,131, 7,193,229,114,193,229,114, 81, 90, 90,138,192,192, 64,243,103, 30,143,103,190,111,219,182,173, - 77, 60,134, 97,250,211, 52,141,170,170, 42, 48, 12, 99,190,202,202,202,192,178, 44, 4, 2, 1, 24,166, 46,156,147,197,243,254, - 77,148,227,243, 1, 1, 1,248,236,179,207,160,209,104,238,121, 46,147,201,112,237,218,223, 65, 70,104,154,198,128, 1, 3, 40, - 66,200,243, 77, 17, 45, 66,234,156,110,198,198,198,130,166,105,115, 72, 61,211,189,233, 98, 24, 6,203,151, 47,135,101,104,178, - 7,137,217,234,218,117, 19, 30,226, 89,150,205, 3, 96,213, 70,139,106, 10,180,139,159,228,149, 55,166, 60, 89,179, 52, 38,154, -253,191, 23, 71,178,139,167, 68,177, 79, 13,233,249, 53,205,225,144,139, 41,153, 8,116, 7,246,204,237, 23, 28,228, 45,190,214, -195, 75,218,217,138,106,212, 50,160,116,128, 72, 44,123,247,149,215,223,148, 28,251,249, 42, 50,179, 50,239, 33, 89, 0,240,219, -143,123,144,151,155,131,164,212,108,188,240,210,171, 18,153, 76,254, 46, 33, 36,192, 26,102, 67,113,151,242,222,123,107, 98,164, -176, 74,151,139, 74, 15,128,238,192, 7, 87, 84,141, 69, 79,247, 18,200,164,188,245, 77,168,112,205,152, 2, 62,255,199,184, 83, -167,204, 36, 43, 66,173,134,128, 97,160,103, 24, 51,201,210,232,245, 80,105, 52,240,175,170, 66,218,140, 25, 96,117, 58, 44,253, -234, 43,145,128,207,255,209,158,116, 90,172, 0,198,200,100,178, 4, 66, 72,103,123, 42,185, 37,142,204, 58,232,198,163,179, 84, - 42, 77, 32,132, 60,213, 26,210, 73, 8,161, 8, 33,171, 99, 98, 98,174,116,236,216,241,140,145, 88,153,158,113, 58,118,236,120, - 42, 38, 38,230,119, 66,200,114, 66, 8,101, 39,102,155,128,128,128, 53, 91,183,110, 21,221,186,117, 11, 57, 57, 57,208,233,116, -152, 60,121, 50, 24,134,129, 74,165,130, 70,163,193,186,117,235,196, 94, 94, 94, 75, 8, 33,193,246,228,157, 16, 66,187,187,187, -239,221,183,111, 95,236,157, 59,119,252,126,250,233, 39,234,234,213,171,138,141, 27, 55,206,240,242,242,218,111, 12,184,234, 80, -121, 18, 66, 40,127,127,255,221,223,124,243,205, 43,215,174, 93, 11,252,242,203, 47,185,191,254,250,171,255,246,237,219,103,250, -251,251,239, 39,132,208,205,169, 35, 66,200, 99, 34,145,104,248,194,133, 11, 13, 23, 46, 92,200,185,112,225, 66,206,166, 77,155, - 48,120,240,224,136, 85,171, 86,133, 55, 19,179,143, 84, 42,125, 98,225,194,133,134,179,103,207,230, 94,188,120, 49,123,195,134, - 13,212, 19, 79, 60, 17,185,118,237,218, 94, 14, 98, 30,186,112,225,194,208,172,172,172,246,217,217,217,237,178,179,179, 67,178, -179,179, 67,114,114,114,130,243,242,242,218,230,231,231, 7, 21, 22, 22, 6, 37, 38, 38, 70, 2, 56,208,218,250,209, 63, 29,211, -216,150,147, 88,150,133, 82,169,196,177, 99,199, 96,212, 94, 61,102, 73,178, 42, 42, 42,144,151,151,103,122,198,121, 8,233, 4, -195, 48,102, 34,117,242,228, 73,196,196,196, 64,169, 84,154,191,227,112, 56,230,123,211,255,216,194, 52,105,158, 24,134,193,197, -139, 23, 49,123,246,108,108,218,180, 9, 7, 14, 28,192,119,223,125, 7,165, 82,105, 38, 91,122,189,222, 38,102,113,113, 49, 12, - 6,131,189,121, 68,121,121,185,221,245,110, 73,128, 56, 28,206, 61,164,200,116, 57,210,150,238, 7,179, 53, 75, 99, 30,225,237, - 17,115,227, 54,170,234,162, 44, 31,134,133,248, 45, 89, 63,239,121, 55, 48, 90,176, 58, 21,160,173, 1,180, 85, 48,104,106, 64, -120,110,128, 78, 5, 31,129, 18,135,230,132,201, 22,127,150,126,189,171,143, 44,250,122, 81,197, 15, 86, 73, 5,135,247,194,243, -211, 95,243,202, 46,172, 64, 78, 65, 57,104,234,239,121, 47,124,196,116,112,104, 10,151, 78,212, 41,174, 40,154, 70,121,181, 26, -101, 85, 90, 76,152, 62,207,243,191,155,254,243, 2,128,117, 77,101,164, 39, 33,161,131, 2, 60,199,117,235,214,150,186, 46, 72, - 69,248, 83,231,192, 24, 0,246,236, 51,120,172,212,151,238,242, 35,127, 92, 79, 66,214, 92,101,217, 91, 77,225, 8,228,114, 55, -143, 94,189,176, 50, 32, 0, 67,116, 58,240, 88, 22, 79, 22, 20,224,207,121,243,160, 62,114, 4, 20, 0,222,115,207, 97,216,230, -205,248, 57, 32, 0,126, 42, 21,202,222,120, 3, 62, 63,252, 0,158, 76,230,230, 72,225,243,120, 60,237,206,157, 59, 3,102,206, -156,153, 64, 8,137,106,205,154, 45, 66, 72,103, 79, 79,207,132,119,223,125, 87,177,108,217,178, 60, 39, 97, 42,196, 98,241,225, -234,234,234,121,142,174,104,141,196,105,245,142, 29, 59, 94,142,141,141,149,207,156, 57,147, 77, 75, 75,147, 3, 48,105, 71,124, - 6, 15, 30,220,113,231,206,157,126,253,250,245,123,109,246,236,217, 60, 66,200, 82, 91, 90, 30,137, 68, 50,103,231,206,157,222, -197,197,197,168,170,170, 50, 15,178,217,217,217,112,115,115, 51, 7, 85,231,114,185,120,247,221,119,189,230,204,153, 51, 15,192, - 60, 91,233, 21, 8, 4,211,183,109,219,214,105,212,168, 81,156,140,140, 12, 80, 20, 5,129, 64,128, 41, 83,166,112,107,106,106, -130, 87,174, 92, 25, 11, 96,155, 35,101,192,229,114, 95,136,143,143,239, 28, 17, 17,193, 73, 77, 77,197,160, 65,131,112,233,210, - 37, 60,247,220,115,220,202,202,202,118,139, 22, 45,138,105,108,133,213,148,214, 73, 36, 18,245,248,233,167,159,178,130,130,130, -204, 3, 75,187,118,237,152,232,232,104,101,106,106,106,216, 47,191,252, 82, 50,104,208,160, 76, 7, 48,219,136, 68,162, 46,223, -127,255,125,222,202,149, 43,135,239,216,177,227, 89, 0,232,223,191,255,183,171, 86,173, 58,163, 84, 42,187,159, 61,123, 86, 57, -120,240,224,108, 59, 33, 3,252,253,253,153,185,115,231, 74,154,250,209,174, 93,187,202, 0,180, 37,132,180, 55, 6,218,118,201, - 3, 16,150,101,245,132,144,112, 66, 72,210,177, 99,199, 48, 96,192, 0, 28, 59,118, 12,209,209,209, 73,150,100,224,218,181,107, - 24, 50,100, 8, 80, 23, 72,254,161,216,106, 49, 12, 3, 14,135,131,236,236,108,236,218,181, 11,107,215,174, 69,104,104, 40,116, - 58,221, 61,100,203, 72,136,236, 82,193,232,245,122, 92,190,124, 25,159,236,223,143,165, 75,150, 64, 42,149, 2, 0,180, 90, 45, -148,165,165, 16, 10,133,102, 50,102,163, 44, 15,223,190,125,123, 94, 96, 96, 96,189, 45, 67,211, 95,227,152, 5,131,193, 0,189, - 94,143,218,218, 90,108,218,180, 73,207,178,236, 97, 27,125,210, 76,138,230,205,155, 7,181,250,239, 56,228,189,140, 54,201, 33, - 33, 33,232,221,187,183,249, 51, 69, 81,172,189,152,255,125,188, 7, 84, 22,191, 14, 91,190, 1, 0, 16, 24, 24,136,176,176, 48, -248,251,251, 55,138,105,141,139, 60,108,105,104,147,213, 44, 27,173,198, 34,101, 95,191,147,191,110,230,162, 13, 27,196, 66,154, -251,250,216,158,104, 43,231, 1,110,158,224, 13, 89, 12, 34,175, 91,200,179,202,191,128, 31, 23, 99,227, 56, 37, 21,251,105,237, -215, 29, 61, 61,125,210,148,202,123,140,240,184, 60,225,176, 14,157, 58,147,204, 60, 37, 56, 28, 14,196,238,222,120,124,236,124, -208, 52, 5,137,220, 27,132, 81,253,205,136, 41, 26, 28,154, 3,101,165, 10, 33,237, 59, 81, 2,161,219, 48, 91, 68, 75,230,206, -221,182,112,210,227,194, 18,125, 54,220,218, 10,193,152,166,211, 0, 62, 40,175, 74, 44, 24, 29,234, 22,251,237,213,109, 0,158, -176,167, 96,104,189, 30,190, 52, 13, 45,203,226,207,121,243, 16, 30, 31,143, 36, 19, 49,140,143, 71, 82,108, 44, 60,185, 92, 8, - 40, 10,172, 78,119,207,158,190,157, 19, 16,198,142, 29,139,226,226, 98,197,146, 37, 75,154, 77,182,220,220,220, 62, 33,132,140, -225,114,185, 90, 66, 8, 40,138, 50, 7, 1, 55,221,107,181, 90, 30, 77,211,223, 23, 23, 23, 59,188,229, 71, 8,233,236,225,225, -145,112,225,194, 5,133, 88, 44,198,242,229,203,157, 66,178,164, 82,233,175, 49, 49, 49,109, 63,249,228,147, 31, 8, 33,163,237, - 37, 91, 13, 73, 86,124,124,124,217,174, 93,187,254,107,185, 69,200,178,108, 30, 33,100,119,191,126,253, 94,137,141,141,149, 3, -120,121,246,236,217,176, 69,182, 4, 2, 65, 84,135, 14, 29,234,173,106, 5, 2, 1, 0, 64, 44, 22,195,221,221, 29, 60, 30, 15, -106,181, 26,225,225,225,132,207,231, 71,218,147,102,169, 84, 58,102,220,184,113,156,243,231,207, 35, 63, 63, 31,238,238,238, 16, -139,197, 96, 24, 6,179,102,205,226,109,222,188,249, 41, 71,137, 86, 80, 80,208,179,195,135, 15,231, 36, 39, 39,227,206,157, 59, - 80,171,213,184,121,243, 38,100, 50, 25,166, 77,155,198, 91,191,126,253, 51,142, 18, 45, 0, 61, 98, 99, 99, 11, 44, 73,150, 73, -196, 98, 49,233,220,185,179,210,203,203,171, 15,128, 76, 71, 48, 95,125,245,213,194,184,184,184, 33,167, 78,157, 90,108,250,242, -212,169, 83,139, 0,224,131, 15, 62, 56,235,227,227,211, 7,128,189, 68, 11, 44,203, 26,254,253,239,127,223,229,243,249,224,114, -185,224,243,249,245, 46, 30,143, 7,138,162,164,166,238,252, 79, 37, 53,132,144,126, 0,222, 71,221,137,172, 37, 44,203, 94,108, - 37,100,235,119, 66, 72,120,116,116,180,153,108, 29, 63,126, 28,163, 71,143, 70, 89, 89, 25,146,147,147, 45, 73,214,195,178,209, -130,193, 96, 0,151,203,197,134, 13, 27,160,213,106,241,233,167,159,226,139, 47,190,168, 55,134,202,100, 50,108,217,178,197,161, -109, 46,134, 97,176,119,239, 94, 44, 94,180,200, 76,178,140,139,107,248, 41, 20,240,242,246, 70,122,122,186, 77,162, 85, 90, 90, -250,206,209,163, 71,209,148, 49,252,209,163, 71,205,247,150,198,240,118,205,115, 52, 13,181, 90,141, 39,159,252, 59, 84,236,171, -175,190,106,190, 87, 42,149,160,105,218, 84, 22,196, 94, 76, 21, 11,140, 21,254,253,221,152, 5, 11,234,105,232, 26,195,108,140, -139,180, 70,237,150,149, 83,135,225, 44,203, 38, 25, 77, 36,162, 1, 28, 51,110, 39, 54,109,163,117,171,176,122, 43,135,228,245, -142,155, 59,114,122, 91, 95,119,176, 85, 5,224, 61,241, 14,254, 40,114,195,134, 77,223, 3, 0,222,156,210, 23,189, 70,172,134, -102,207, 72,204, 27, 68,243,167,102,171, 23, 2, 88,118,111,199, 51,116, 9,108, 19,128, 63,210,174,129, 67,211,224,187,123,195, -221, 83, 1,131, 94,131,242,194, 59, 72,248,242, 35, 0,192,142,189,135, 65, 81, 20, 56, 28, 26,106, 13,131,208,182, 1, 48, 24, - 12, 93,154, 74,103, 55, 66, 30, 31,223,217,127, 64, 80,176,156, 36,123,220, 65,103, 95,175,250, 63,120, 76,128,208, 92, 9, 25, - 36,113,235,223,141,144,199, 83, 88,246,130, 77, 13, 4, 69,129, 34, 4, 34, 30, 15,234, 35, 71,144,100, 36, 88, 0,144, 20, 27, - 11,234,235,175, 33, 21, 8, 64, 19, 2,142, 81, 5,221,156,142, 14, 0, 97, 97, 97,216,177, 99,135, 98,206,156, 57,205, 34, 91, -181,181,181,107,100, 50,217,240,221,187,119, 43,198,141, 27,119,207,243,180,180, 52, 12, 25, 50,164, 32, 63, 63,127,205,253,144, - 44,185, 92,142,172,172,172,251,222, 87, 55,145,172,147, 39, 79, 6, 7, 6, 6, 34, 60, 60,220,231,205, 55,223,116,132,108, 45, -179, 36, 89,179,103,207,190, 10,192,151, 16,210,144,168, 16,227,179,158, 22,100,171, 28,192,250, 38, 86,162,193, 98,177, 24,133, -133,133,152, 62,125, 58,110,221,250, 91, 1, 26, 16, 16, 96, 94,233,165,167,167,195,199,199, 7,132, 16, 95,123,242,236,227,227, -163,208,104, 52,120,233,165,151,144,149,245,183, 57, 99,155, 54,109, 76,101,234,237,104, 57, 42, 20, 10,133, 74,165,194,224,193, -131, 81, 91, 91, 11, 0,152, 56,113, 34,184, 92, 46, 10, 11, 11,193,229,114,189,155, 81, 61,222,209,209,209,141,186, 86,145,201, -100, 90, 15, 15,143,174, 14, 98,122, 61,243,204, 51, 57,241,241,241,247, 28,108,185,116,233,210,191, 60, 61, 61, 79,121,122,122, -118,118, 16,211, 96, 73,170,120, 60, 94, 61,162,197,229,114, 65, 81,148, 1,255,124,121, 15,128,233, 20,220,199, 0,122,183, 34, -205,150,153,108, 29, 63,126, 28,221,187,119, 71,105,105, 41, 82, 83, 83, 31, 58,201,178, 32, 38,224,112, 56,230, 69,178, 80, 40, - 68,120,120,184,153,100, 17, 66, 80, 83, 83, 3, 14,135, 99, 26,175,237, 26,252,202,202,202,224,239,231, 7,169, 84,138, 78,161, -161,184,109, 28, 71, 76,247, 2,129, 0,132, 16,232,245,122, 91,101, 88,137, 58, 91,171,249,206,174, 30, 19, 41,106, 82,117, 28, - 16, 0,131,193, 96, 26,243, 89,103, 96,122,123,123,163,170,170,202, 94,204, 86, 41,141,104,180,194, 1, 36, 1,136,102, 89, 54, -222,104, 24, 95,207,189,195, 80, 0, 9,176, 56, 82, 73, 8,161,186, 42, 36,187,226,230, 12,159, 62,178,187, 55, 84, 69,119, 32, -148,122,131,200, 67,176, 97,211,247, 72,254,171, 4, 0,176,225,192,111,248,108,229, 24,192,205, 19, 97,238,197,240,147,114,198, - 89, 35, 90, 4, 44, 49,176, 44, 56, 52,101,220,187,165, 65,211, 20,148, 69,121,216,252,206,203, 70,146,245, 5,142,157, 77, 69, - 96,135,238,127,239,227, 18, 2,176, 77, 55,110, 31,119, 94,252,156,241, 3,221, 10, 72, 30,228, 1, 34, 8,133, 13,248,163, 7, - 15, 36,132,194,220,168, 64,209,229,163,181,241, 0,108, 78, 20, 66,138,170, 51,126, 39,196,170, 33, 27,101,124, 70, 19, 82,231, -253,213,224,248,152,110, 34, 44, 18,137, 4, 10,133, 2,107,215,174, 85,188,245,214, 91,159,194,193, 0,212, 44,203,222, 36,132, - 68,205,154, 53, 43,161,164,164, 68, 17, 22, 22, 6,137, 68, 2,137, 68,130,130,130, 2, 76,152, 48,161, 32, 63, 63,191,185,218, -178,253, 49, 49, 49, 10, 30,143,135,180,180, 52,120,122,122,154, 9, 98,115, 73,150, 76, 38,251,245,212,169, 83,193, 29, 59,118, -196,141, 27, 55,208,181,107, 87, 28, 58,116,200,103,242,228,201,118,145, 45, 55, 55,183,177, 70,226,132,216,216, 88,121,108,108, -236, 80, 0, 67,109,189, 59, 54, 54, 86, 62,127,254,252,103,154, 34, 90, 92, 46, 55, 75,169, 84,250,185,185,185,225,203, 47,191, -132, 68, 34,129, 72, 36, 66, 64, 64, 0,148, 74, 37, 68, 34, 17, 88,150,133, 78,167, 51, 13, 22, 37,246,228,187,168,168,168,128, - 97,152,160, 31,126,248, 1, 69, 69,127,251,214, 11, 14, 14, 70,121,121, 57, 24,134, 41,118,180, 44,115,115,115, 11, 8, 33, 65, -127,252,241, 7, 50, 50, 50, 48,122,244,104,124,253,245,215,232,219,183, 47, 0, 64,163,209, 52,199,137, 31, 67,211, 52,219, 68, -253, 17, 0, 30,206,196, 52, 78, 94, 14, 97, 26, 12, 6,131,137,100, 89,254,181, 36, 95, 54,222,249, 79, 17,119,203,117, 66,107, - 77,228,232,209,163,161, 84, 42, 33,145, 72, 90,149,125,142, 73,163,181, 98,197, 10,188,252,242,203, 80, 40, 20, 88,188,120, 49, - 56, 28,142,249,178,220, 25,112, 68,124, 21,138, 38,159,155, 12,226,109,140,151, 82,119,119,247, 21, 20, 69, 61, 79,219, 81,112, - 12,195, 48, 6,131,225,112,121,121,121,147,238, 29, 76,134,235,246,212,133,101, 25,216, 72,235,125, 99, 90,227, 34,173, 65, 26, -158, 54,180,166,209,194,223,167, 14,239, 9, 5,100,202,101,130, 81,101,151, 96, 73,178,222,125,121,216,244,145,221, 61,240,237, -233,139,224,105,203, 0, 77,101, 19, 53,172, 3,225,137,161,112,231, 6, 90,173, 4,138,190,145,157,147, 11, 47, 15,137,145,100, - 25, 47,138, 66,175,238,117,139,217, 99,103, 83, 17,216,190, 59, 56, 52, 13, 14, 77, 67,226, 38, 64, 65,126, 30, 56, 28,234, 70, - 99,175,237,201, 33,227,199,119, 14, 10,241,240,226,162,216, 71, 3,127,133,200,250, 15,251, 72, 17,232,207,199, 40, 47, 97,112, - 79, 14, 25,111,131,184,152,137,150, 86,175, 7,239,185,231,204,219,133, 73,177,177, 8,143,143, 7,243,236,179,168,214,106,235, -169,138, 29, 21, 83,131, 52, 17,162,101,203,150, 21,148,148,148,188,208,204,213,227,205,210,210,210,168, 37, 75,150, 20, 20, 23, - 23, 67, 36, 18, 33, 47, 47,239,190, 72, 22, 0,168, 84,170,105,241,241,241, 5, 9, 9, 9,144, 72, 36,144, 74,165,205, 38, 90, - 38, 77,214, 59,239,188,211, 54, 40, 40, 8,233,233,233,112,119,119,135,151,151, 23,122,245,234,133,243,231,207,251, 4, 5, 5, -253, 96, 52,152,109, 42, 77,223,196,199,199,151, 1, 64,124,124,124, 25, 33, 36,145, 16,178,157, 16,242,113,131,107, 59, 33, 36, -209,242,183, 42,149,234,171,166,176, 53, 26, 77, 98,106,106, 42, 43, 18,137, 64,211, 52,180, 90, 45,132, 66,161,185,190, 42, 42, - 42,160, 82,213,109,115, 95,185,114, 5, 58,157,238,156, 61,121,175,172,172, 60,190,103,207, 30, 93, 80, 80, 16,122,246,236,137, - 62,125,250, 96,208,160, 65, 8, 14, 14,198,138, 21, 43, 52,213,213,213,199,155, 65,180,142, 29, 58,116, 72, 23, 20, 20,132, 62, -125,250, 64, 32, 16,160, 87,175, 94, 8, 8, 8,192,218,181,107, 53,229,229,229,199,155, 81, 77,153,215,174, 93,163,155, 32,185, - 50, 0, 5, 14, 98,102, 93,190,124,153, 30, 56,112,224,183, 13, 31,244,239,223,255, 91,137, 68,226, 14,192, 81,187, 63,214,146, - 92, 9, 4, 2,243,101,250,158,195,225,252, 47,104,180,230, 1,184, 10, 32, 29,192,226,214,148, 48, 75,195,247,146,146, 18,164, -166,166,226,202,149, 43, 24, 56,112, 32,206,157, 59, 7, 24, 13,228, 31, 98,250,192,178, 44,184, 92, 46,194,194,194, 48,127,254, -124,124,255,253,247,184,121,243, 38,116, 58,157,153, 8,153,108, 50, 29,209,104,241,120, 60, 40, 20, 10,232,116, 58,179, 54, 11, - 0,110,223,186, 5, 14,135, 3,131,193, 0,141, 70, 99, 83,163,229,238,238,190, 98,231,206,157,175, 21, 23, 23,251, 23, 21, 21, -249, 90, 94, 5, 5, 5,190,121,121,121,190, 57, 57, 57,190, 89, 89, 89,190,119,239,222,245,189,115,231,142,255,186,117,235, 94, -115,119,119, 95, 97,239, 28,212,171, 87, 47,188,250,234,171,230,107,235,214,173,230, 43, 33, 33,193, 97,227,117,154,166, 17,182, -124, 3,198, 20,177,230,235,123, 31, 98,190,146,223,156,221, 20,102, 61, 46,210,106,218,178,241,180,161,101, 96,105, 43,115,112, - 30,203,178,241,166,237, 66, 75,231,165, 13,141,225, 1, 0, 93,252, 68,171,223,157, 53,100,250,147, 93,221,241,205,233,223,176, -242,171,191,110,132, 78,247, 9,235,232, 81, 4, 67, 81, 42,222,156,210, 23, 27, 14,252, 6,160,110,235,208, 80,152, 12,182, 52, - 29,172, 52, 8,119,148,197, 86,183, 29,244,154,218, 51,127,165,221, 26, 22,214,163, 31,149, 95, 92, 85,239,248,103,120,212, 4, - 16, 66,208,166,125,119,208, 28, 14,104,154, 2,135,166, 33,151, 9,145,250,199, 31, 6,181, 74,117,198, 26,102, 20, 33, 28, 63, - 9,127,235,148, 81,189,132,185,252, 66,248,248,139,193,227,214,145, 0,246,175, 9, 13,102, 8, 14,208, 67,138, 25, 57, 94,110, -103, 10,106,183, 70, 17,242,109, 66, 35, 6,152, 6,131, 1, 18,129, 0,181,106, 53, 84,122, 61,162, 54,111, 54,111, 23, 82,132, -224,119, 0, 61, 55,111,198,133, 35, 71, 32,227,243, 1,129,192,238, 83, 33,214, 52, 90, 5, 5, 5,152, 56,113,226,125, 17, 34, - 75,205,214,156, 57,115, 18,214,174, 93,171, 88,182,108,153,211, 48, 23, 47, 94,156,112,224,192, 1, 69,187,118,237,154,221, 88, - 37, 18,201, 34,131,193, 32, 95,191,126,125,254,198,141, 27,209,208,158,204, 72,116, 4,114,185,124, 3,128, 97, 77, 64,173,156, - 61,123, 54, 15,192,203, 70,205, 86,207,217,179,103, 95, 96, 89,118,105,131,242, 93,190, 99,199,142,137, 22, 91,140,219, 1,108, -110, 42,141, 21, 21, 21, 31,207,159, 63,255,165,159,127,254,217, 91, 40, 20,130, 16, 2, 30,143,135, 78,157, 58,153, 79,209,112, -185, 92,176, 44,139, 5, 11, 22, 20, 23, 22, 22,218,229,222, 65,173, 86,239, 93,185,114,229, 48,149, 74, 21, 60, 99,198, 12,158, -135,135, 7, 10, 10, 10,240,254,251,239,107,246,238,221,155, 85, 93, 93,237,168, 45, 21,116, 58,221,222,255,252,231, 63, 81, 85, - 85, 85,237,103,206,156,201, 43, 47, 47,135, 74,165,194,194,133, 11, 53,187,119,239,206, 86,169, 84, 14, 59,252, 29, 52,104, 80, -218,221,187,119, 35,107,106,106, 74, 69, 34, 81, 67,109, 31, 17,139,197,253, 0,236,119, 4, 51, 60, 60, 60, 61, 51, 51,115,224, -234,213,171, 19,117, 58, 29,247,210,165, 75,102, 99,248, 15, 63,252, 48, 65, 40, 20, 14,135,227, 70,251, 6,129, 64, 80, 79,131, -213,240,158,195,225,252,227, 53, 90, 44,203, 38,160,206,101, 70,171,146,134, 36, 43, 57, 57, 25,195,134,213,117,233,115,231,206, - 33, 34, 34, 2,231,206,157, 67,100,100,228, 67,117,239, 96, 34, 90, 28, 14, 7,147, 39, 79,198,136, 17, 35,208,182,109,219,122, -167, 13, 77,247,142,144, 13,189, 94,143, 30, 61,122, 64,173,209,128,199,227,153,183, 38, 57, 28, 14,124,124,125,145,150,150,102, -151, 70,139,162,168,231,199,142, 29, 75,165,164,164, 96,210,164, 73,248,228,147, 79, 26,253,237,212,169, 83,113,240,224, 65,140, - 29, 59,150,122,251,237,183,155,116,239, 96, 50, 66,183, 39, 79,166,121,218,150, 70,207, 89,152,150, 92,164,181,137,133,107, 7, -107,109, 62,214, 74,251,138,175, 71,180, 44,156,132,161,189,143,104,198,136, 78, 28,124,115,230, 55,172,252, 38,115, 47,195,178, - 95,126,153, 84,250,221,226, 8, 64,123,120, 10,122, 77,216, 95,183, 93, 8,192, 80,152, 12,237,225,169, 32, 34,111,156,205,225, -162, 92,165, 61,102,189,225,105, 63,249,250,211,143,230, 15,220, 22,233,227,239,235, 14,101,185,202, 76,182,146, 18,190, 0, 0, -140,159,189, 6, 28,186,110, 75, 81, 38, 17,194,141, 71,227,200,190, 15,138,181,218, 90,171,173,171,146, 75,189,252,246,227,157, -220,249, 98, 29, 42,252, 88,116,247,249,251,208, 31,105,255,197,189,132,235, 49, 15,120, 39,151, 98, 74, 71,137,236,131,148,178, -151, 1,108,189,103, 66, 44, 43, 83,149,253,241,135,219,232,157, 59,113,105,218, 52,180, 97, 24, 36, 6, 4,192,147,203,133,187, - 64, 0,138, 16,168,190,251, 14, 23,190,252, 18, 10,129, 0,144, 74,161, 95,181, 10,234,212, 84,232, 42, 43, 85,142, 18,173,219, -183,111,223,183,214,201, 26, 49,122,235,173,183, 62, 45, 41, 41,121,193,153,152,211,166, 77, 75, 56,125,250,180,162,185, 56,149, -149,149,111, 0,120,195, 9,233, 49, 16, 66,150, 26, 29,227,189, 28, 27, 27, 43,191,124,249,242, 75,132,144,109,166,213, 4, 33, -196, 55, 38, 38,102, 86, 3,146,101,243,212, 33,203,178,153, 18,137,100,213, 27,111,188,177,102,227,198,141, 18,147,225,251,159, -127,254, 9,189, 94, 15, 46,151, 11,134, 97, 16, 19, 19, 83, 85, 82, 82,178,161, 49,143,206, 86,112,245,132,144,169,107,214,172, -137,249,224,131, 15,158,166,105,218,135, 97,152, 34,149, 74,245,131, 74,165,138,111,206,169, 43, 99, 57,188,184,108,217,178, 23, - 55,109,218, 52,150,162, 40, 95,189, 94, 95, 92, 89, 89,121, 84,165, 82, 53,203, 55,215,133, 11, 23,138,182,109,219,246, 87, 81, - 81, 81,151,192,192,192,114,137, 68,162,209,104, 52,180,155,155,155, 76, 44, 22,135, 3,248, 5,192,117, 71, 48,175, 92,185,146, -191,125,251,246, 12,181, 90, 29,182,125,251,246,179, 50,153,236, 52, 33,132,240,120, 60, 15, 55, 55,183, 97, 0, 18, 1,220,118, - 4,147,162, 40,131,165,246,170,161,125, 22,159,207,255, 95,177,209,106,117, 98,233,222,161,184,184, 24, 41, 41, 41, 38,146, 21, - 14, 0,145,145,145, 73, 38,178,117,229,202, 21,244,233,211, 39,137, 16,194,125,208, 39, 15, 45, 53, 90, 38, 66,213,182,109, 91, -243,103,203,203,194, 70,203, 46, 97, 24, 6, 60, 30, 15, 28, 14, 7,254, 1, 1,230,119,177, 44,139,180,180, 52, 40,149, 74,187, -136, 22, 77,211, 52, 33, 4,147, 38, 77,178,235,189,255,254,247,191,145,152,152, 8,218, 78, 86, 72,211, 52, 66, 66, 66,236,218, -121,129,157,246, 84, 52, 77, 35, 48, 48,176,217,152,150, 92,164, 53, 17, 44,107,247,214, 72,149, 53,177,106, 12,159, 94,168, 90, - 61,245,253,243,111, 95,207,175,253, 50,181,160,102, 62, 0,246,112,178,232,199, 94, 62,244,200,145,157,179,161,142,143, 4,145, -213, 57,111, 99,171,242, 64,196, 10,100, 27,218, 96,249,183, 55,242,245, 32,235, 27, 73, 68, 46, 79, 40, 90,186,111,231,135, 27, - 99,230, 44,144, 36,167, 23,160,188, 74, 13,154,166, 44, 7, 79,112, 56, 52,100, 98, 33,130,252,220,113,224,191,239, 87, 86, 86, -148, 45,107, 44,238, 97, 91, 41,111,246,240,126, 29, 5, 60,255,106,132,245,156, 8, 90,248,183,147, 89, 54,191,145,221,193,136, - 31,241, 84,102,181,240,235,204,234,217, 86,137,150, 70, 51,114,201,168, 81, 39, 86,126,255,189,168,255,222,189, 72,143,137, 65, -128, 74, 5,129,113, 43,145, 34, 4, 18, 30, 15, 18, 30,175,142,100,109,218, 4,149, 94,143,205,211,166,213,168, 53,154, 81, 14, -106, 36,120, 67,135, 14,117, 26,201,178, 36, 70,112,208,206,203, 94,178, 53, 98,196,136, 4,150,101, 5,173, 96, 37,111, 34, 91, -218,203,151, 47,207, 58,123,246,108, 58,234, 7, 22, 45, 59,123,246,108,250,204,153, 51,201,174, 93,187,118, 3,248,143,189, 14, - 60,171,170,170, 62,148,203,229, 24, 50,100,200,127,226,226,226,188,250,246,237, 11, 95, 95, 95, 84, 86, 86,226,202,149, 43,152, - 55,111,158,178,162,162, 34,174,180,180,116,163,131,105,102,140,154,155,120,103,150, 3,128, 61,198,203, 41,242,202, 43,175,252, -153,158,158, 94,226,227,227, 51,128,199,227,245, 68,157, 29, 80, 62,128,221,142, 18, 34,147,188,252,242,203,127,164,167,167, 23, -183,105,211,102,247,187,103,196, 0, 0, 6, 32, 73, 68, 65, 84,160, 17, 83, 14, 32, 7,192,206,102, 96,230,254,246,219,111,129, -253,250,245,163,184, 92, 46, 75,211, 52,184, 92, 46,203,225,112, 88,163, 93, 13, 11, 0, 71,143, 30, 21, 0, 80,194, 37, 15,186, -111,154,221, 59,228,229,229,153, 73,150,133,195,210,240,200,200,200, 36, 35,201, 50, 61,211, 63,164,180, 98,229,202,149,216,177, - 99, 7,108,121, 52, 55,158,238, 35,182,240, 76, 26, 45,134, 97,160,213,106,145,156,156,108,246,217,101,218, 46, 52,185,118,208, -235,245, 77,158, 86,103, 24,134,209,104, 52,248,252,243,207,237, 34, 91,159,125,246, 25,106,107,107,193,216, 96,112,150,174, 24, -122,247,238, 13,165, 82,105, 62,236, 19, 30,254,183,171, 60,173, 86,235, 16,113, 53, 97,134,133,133,161,184,184, 24,222,222,117, -231,113,130,166,253,173,236,209, 87,255, 51,253, 7, 55,165,209, 34,246,186, 36,232, 45,151,187,171,249,186,175,254,213, 93, 16, -245,124,184, 59,218,251, 73,193,229, 9,145, 91,161,199,169,235, 21,216,153,144,159,165,210, 49, 79,223, 44,172,190,214, 20,142, - 80,236,254, 67,223,199, 71, 68, 76,155, 53, 79, 92,165,102,144,145,113, 23, 69,133,121,160, 8, 5,255, 54,129, 8, 14, 14,129, - 27,159,194, 39,241, 27,171,147, 46,156, 62, 95, 89,161, 28,221, 24,214,211,114,254,133, 77,207, 69, 12,236,208, 65, 74,160,215, - 1,140, 14,208,235, 0,131,241,175,233, 59, 67,253, 54,151,146, 82,198,190,253,187,242,215,239,202, 52, 86, 99, 86, 61, 79, 72, -132,220,211,243,196,242,163, 71, 69, 6,173, 22, 37,111,188, 1,145, 94, 15,161,113, 85, 2, 0, 16, 8,160, 95,181,170,142,100, - 77,157, 90, 83, 94, 86,230,112, 8, 30, 31, 31,159, 61,197,197,197,143,156,103,120, 47, 47,175, 37,205,113, 19,209,130,105,242, - 5, 80,198,178,172,214,202,202,218,199,164,229,106, 6,110,136,143,143,207,219, 20, 69, 13, 98, 89,214,139,162,168, 82,131,193, -240, 75, 97, 97,225, 58,150,101,211, 92, 83,234, 67,171,111,147,103,120, 91,251,216,133, 0, 94, 7, 80,201,178,108,134,171,228, - 30,120, 61, 61,134,186, 83, 88,141,134,224,193, 67, 60,121,232,229,229,117,241,196,137, 19,125,219,183,111, 79, 89,154, 49,152, -124,229,153,182,183, 56,156, 58,125,196,207, 63,255,172,159, 52,105,210, 47,249,249,249, 67, 26,195,148,201,100, 63, 94,189,122, -245,201,242,242,242,123, 8,149,165,167,120,211,231,234,234,106,204,153, 51,231,100, 69, 69,133,213, 16, 60,114,185,124,211,198, -141, 27, 95, 27, 63,126, 60,101,114, 71, 97,121,153,194, 5,153, 46,173, 86,139,253,251,247, 27, 62,248,224,131, 45,101,101,101, -141,110, 29, 6, 4, 4,100,229,230,230, 6,154, 92, 45,216,227, 84, 52, 36, 36, 36, 47, 35, 35, 35,224, 65, 98, 62,170,132,171, -161,118,139, 56,226,251,137, 16, 66,194,124,197, 19, 89,224,121, 10,134, 30, 20, 33,124, 61,139,155, 96,241,163,136, 83,179,237, - 74, 46,107,215,214, 25, 79, 36,154, 43,149,120,188, 51,254,133, 87,189, 66, 58,132, 18,133,127, 27, 16, 80, 40,200,207,193,221, -191,110,177, 95,125,250, 81, 73,117,133,114, 69, 77, 77,213, 71, 77,225,116, 35,164, 67, 59, 25,239, 48,159, 65,103,152,242,209, - 32, 62,213, 61, 12, 19,128,150, 75,221,200,168,212, 77, 76,105, 98,219,199, 68,182,150,126,245,149,136,223,185,243, 61,142,226, - 12, 6, 3,212,169,169,216, 60,109, 90,179, 72,150, 75, 92,226,146,251, 30,208,218,195,182,143, 44, 29,128,236,135, 25,188,248, -127,188,142, 90,109, 80,105, 66,136,216,211,211,243, 52, 77,211,193, 38,141,140,165,205,144,149,128,210, 25, 5, 5, 5,195, 89, -150,173,105, 2,179,131, 84, 42,253,136, 97,152,254,246, 4,149,166,105,250, 82,101,101,229,220,166,130, 74,183,196,169, 67,111, -111,239,180,187,119,239,118, 48,157,162,182,156, 43, 27,150, 3, 0,220,190,125, 27, 67,135, 14,189,155,151,151, 23,242, 32, 49, - 91,171, 52,226, 71,235,254, 53, 90, 45,208,200, 3,120, 2,201,139,124, 55,225, 19, 6,157, 62, 12, 4,224,112,185, 55, 52,181, -170, 51,106, 85,213,190,198,182, 11, 31,164, 60, 79, 72,132,128,207,255,145, 39,147,185, 89, 43, 39, 93,101,165, 74,173,209,140, -116,145, 44,151,184,196, 37, 46,113,201, 35, 68,128, 59,123,122,122,158,224,114,185, 2, 75, 50,217,240,222, 36,122,189,190,182, -168,168,104,116, 83,187, 47, 45,129,249,143, 41,111, 71,137,214,177, 99,199, 88,123,189,183, 18, 66, 70,216, 19,179,202,194,240, -205,166,239,140,135,141,217,130,121,183,233, 21,215, 1,204,161,168, 59, 30,187, 34, 58, 58,122,249, 35,144, 78,103,214,145, 83, - 49, 77,117,110, 47,174, 35,152,246,182, 41, 7,211,105, 87,187,111, 13,152,246,244,165,102,166,179,201, 54,218,204,122,111,178, - 47,181,162,116, 58,179,142,156,130,217,176,253,216,131,235, 40,166, 61,125,169, 25,233,180,217,238, 91, 11,230,253,142, 33, 77, -164,179,209, 54,106,111, 91,106,164,238,109,206, 77,173, 85,147, 5, 0, 38,127, 90, 13, 53, 90,141, 25,196,115, 28, 37, 89, 45, -145,120,203, 73, 7,118,250, 41,121, 24,152,205, 33, 92,142,164,213,137,146,224,108,204, 6,229,233, 44, 89,110, 28,208, 19, 97, -135,195, 81, 71,242,238,140,122,111,144, 87,167,224, 90, 98, 58,171, 44,173, 13,138,206, 76,103, 75, 96, 58,171, 47, 53,196,116, - 70,187,183, 86,239, 45, 88, 71,206, 74,167, 83,250, 82, 75,180,121, 43,237,231,190,113, 27, 98, 58,163, 47, 53,196,116, 70,187, -127, 16,152,206,232, 75,214, 48,157,209,238, 27,171,251, 71, 85, 51,101,218, 46, 52, 18, 46, 98,133,124,214,219, 62, 52, 17, 47, -170, 57,133,214, 18,210, 18,129, 36,157, 77,136, 90,138,108, 30, 59,118,140, 53, 50,253, 86,143,233,228, 58, 90,110,196,116,230, -202, 38,202, 89,117,212, 18,237,221, 18,211, 89,248, 13,113,156, 81, 79,214, 48,239, 55,189,141,164,211,233,121,191,223,118,255, -160, 48,157, 92, 71, 78,233, 75, 13, 48,163,156,188, 24,136,178,248,188,220,153,152,206,234, 75, 86,210,121,223,245,100, 13,243, -126,211,219, 72, 58,157,158,119,103,204, 33, 45,133,251,176, 52, 90,215,195, 9,203, 82,214,219,132,209, 97,169,249,106,150, 70, -171, 37, 73, 86, 75, 77,106,206,196,110, 9,173, 78, 75,105,222,156,165,213,177,130,155,232, 68,184, 4,103,167,211,152, 62,210, -154,157,222,185,250,146,171, 47,253, 47,245, 37,107,237, 38, 58, 58,122,249,177, 99,199,222,105, 77,237,188, 33,166,179, 8,145, -149,188,223, 87, 95,106,248,191,206,232, 75, 54, 48, 73, 75,228,223,217,253,233, 65,106,180, 26, 35, 89,141, 61,227,180,150, 12, -152, 26,137,147, 87, 38,112,178, 6,166,197,242,237,228,116, 70,181,132,134,176, 5,196,233,233, 52,174,148,223,105,129,188, 63, - 42,101,234,234, 75,174,190,212,234,250, 82,131, 54, 25,229, 68, 77,145, 83, 53,207, 13, 49,157,241, 14, 75, 12,103,181,209,150, -206,187, 51,251, 82, 75,212,253,163, 38,255, 31, 0, 52, 22,173,101,127,139,184, 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, 39, 3, 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, 99,175,128,129,129,129,129,129,129,129,225, 17, 17, 90,155, 55,111, +246,217, 4, 70, 8,233,232, 43,167,125,107,243,168,115, 62,192,184,211, 50,228,108, 99,231,252,224, 95, 18,206, 54,143, 42,167, + 24, 95, 95,121, 75,195,233,107,154, 42,101, 56,105, 89,135,243, 65,113,150, 85, 62,114, 19, 78,250, 0,190,251, 7,255,146,112, +182,121,212, 56, 93,211,143, 47,188,165,229,244, 37, 77,221, 67, 56,105, 89,135,243, 65,113,222,111, 62, 42, 33,156,244,126,211, +146,135,111,255, 1,254, 67,224, 31,148,200, 42, 13,186,117,235, 70,156,248,201,163,202,233,252, 30, 68,254,178, 12,107, 25, 98, +103, 89,115,186,188,207,178,194, 7,221,186,117, 35,155, 55,111,222, 5,160, 77, 89,198,189, 44,190,187, 75, 92,203,132,183,180, + 34,171,180,156,101,149,238, 31, 52,103, 89,229, 37, 87,206,178, 72,247,238,190,251, 3,252, 70,101, 21,206, 50,201, 75, 15, 34, +205,187, 73, 63,247,205,235,202, 89, 22,121,201,149,179, 44,210,253,195,224, 44,139,188,228,142,179, 44,210,189,167,111,207, 44, + 90, 15, 87, 16,184,102,240,182,143,178, 32,122, 80, 98,211, 87, 11,204,163,192, 89,198,223,232, 3, 59,103, 89,182,110,218,150, +213, 55,122, 16,233,221,153,179,172,248, 93,121,202,226, 59,185,227,188,223,240,122, 8,103,153,199,253,126,211,253,195,226, 44, +227,111, 84, 38,121,201,133,179,109, 25, 55, 6,218, 58,237,127, 80,150,156,101,149,151,220,132,243,190,191,147, 59,206,251, 13, +175,135,112,150,121,220,203,162, 14,121, 80,188,143,173, 69,235, 65,138,172, 7, 85,169,149, 37,247,131,176,234, 60, 40,203, 91, + 89, 89,117,220,240,238, 42, 67,186,157,101, 29, 78,123,248,200,131,178,190, 62,234, 96,121,137,229,165, 71, 45, 47,185, 75, 55, +221,186,117,251, 96,243,230,205,239, 63,106,141,104,103,206,178, 18, 68,110,226,126, 95,121,201,245,222,178,200, 75, 94, 56,201, +131,136,127, 89,231, 39, 38,180, 74, 97, 41, 42,227,150, 9,202,216, 2,243,192,226, 93,198,225,108,251, 32, 44,132, 15, 0,101, + 30, 78,123, 75,249,253, 7, 16,247,127,203, 59,101,121,137,229,165, 71, 46, 47,185,164,201,182,101,104, 41, 42, 83,203,179, 43, +103, 89, 60,195,153,163,172,210,232,131,142,123, 89,230,165, 7,241,237,255,117,160,148, 62,176, 13, 64, 71,198,201, 56, 25, 39, +227,100,156,140,147,113, 50,206,255,234,198,166,119, 96, 96, 96, 96, 96, 96, 96, 96,120, 64, 32,108,194, 82, 6, 6, 6, 6, 6, + 6, 6,134, 7, 3,143, 62, 90,177,177,177,155,212,106,117, 37, 79,231,181, 90,237,157,148,148,148,118,236, 21, 50, 48, 48,120, +109,209, 17,194,225,239, 81,206, 2, 0, 74, 89, 43,143,129,129,225,191, 44,180, 20, 10, 69,226,133, 11, 23,170, 8,130, 0,155, +205, 6,171,213,234,248, 53,153, 76,104,221,186,117,169, 29,233,163,162,162,118, 75, 36,146, 10,165,185,199,102,179,221, 74, 77, + 77,109, 89, 66, 1,190, 31, 64, 34, 33,196,249, 88,137,191, 0, 82,204,102,115,131,146, 56, 9, 33,137,174,124, 30,184,196,255, + 37,114, 6, 5, 5, 29,229,121, 62,206, 29,151,167,255,130, 32, 92, 75, 79, 79,111,206,146,233,195, 65, 84, 84,212,110,158,231, + 75,157, 62,239,220,185,227, 49,125,198,196,196,156,224, 56, 46,166, 20,148, 18, 65, 16, 46,221,185,115,167,165, 39, 33, 34,166, +121, 47,194,166,216,127, 66, 72,146,213,106,109,228, 45, 31,149,196,229, 38,141,150,200,233, 44,178,120,158,159, 21, 17, 17, 49, + 74,167,211, 25, 0, 80,137, 68, 66, 67, 67, 67,197,176, 1, 0,172, 86,107, 70, 78, 78, 78,109,150, 18, 25, 24, 24,254, 19, 66, + 75, 16, 4,206,104, 52,226,242,229,203,240, 80,222,219,238,225,121, 85,142,253,177, 45,194, 63, 34, 18, 86,179, 25,154,176,112, + 7,119,218,249,179,176, 90,204,176,154, 76, 40,223,184,169, 88,137,161,102,205,154, 18, 47,156,113,179,103,207,142,240,247,247, +135,193, 96,128,193, 96,128,209,104,132,193, 96,128,201,100,130,201,100,130,217,108,134,217,108,134,213,106,133,209,104,196,246, +237,219,189,133, 61,238,195, 15, 63,140, 8, 8, 8,112,240,137,155,200, 41,242, 90, 44, 22, 24, 12, 6,252,249,231,159, 37,114, +242, 60, 31,151,146,146, 18, 33,147,201, 64, 41,133, 32, 8,238,156, 11,139,161, 98,197,138,102,150, 68, 31, 42,170,124,184,114, +115, 68,160, 74, 1,171, 32,160,123,221,138,142, 19,215,190, 90, 3,106,181, 65,176, 90, 81,121,236, 80,160,200, 36,131, 26, 53, +106,148,152, 62, 41,165,241, 31,174,220, 28,228, 43,103,102,102,166,190,122,245,234, 41, 40, 26,250,236,201,226, 19,167,215,235, + 35,196, 48,184, 10, 34,142,227,138,109, 91,182,108, 65,247,238,221,189,197, 61,238,181,215, 94,139,176, 88, 44, 48,153, 76, 48, + 26,141,176, 88, 44,176, 90,173,142,205,102,179, 57, 54,147,201,132, 67,135, 14,249,106,201,154,221,169, 83,167, 17,155, 55,111, +214,252,252,243,207,154, 10, 21, 42, 64, 38,147, 65, 34,145, 64, 34,145,128,227, 56,240, 60,143, 39,158,120,130,176, 36,200,192, +192,240,159, 17, 90, 70,163,241,122,253,250,245,169,253,127,172, 66,161,144,185, 20,160, 49, 85,170, 84,185,228,122,159,183, 46, + 69,255,136, 72, 76, 42, 23, 2, 0,152,124, 51,203, 81, 65,124,212,188,158,227,154,169,201,121, 0, 0,149, 74, 5,226,220,140, +246, 0,141, 70,131, 78,157, 58, 65, 46,151,163, 81,163, 70,144, 74,165,110, 55,153, 76, 6,169, 84,234, 75,229, 0, 63, 63, 63, + 76,153, 50, 69, 20, 73,208, 40, 21,120,185,121, 35, 40, 65,241,197,217, 43, 48, 9, 20, 60,207, 59, 54, 95, 56,101, 50, 25,206, +156, 57, 3,158,231, 33,145, 72, 28,191,226,255,141, 27, 55,162, 95,191,126,224,121, 30, 42,149, 10,248, 15,205, 51,242,168, 32, + 80,165,192,176, 37, 63, 1, 0,110,207, 27,235,248,118,135, 70, 79,118, 92, 19,255,194, 0, 16, 66, 32,149, 74,193,113, 92,153, +113,102,103,103,235, 7, 13, 26,180,215,223,223,127, 75,126,126, 62,188, 8, 56,220,190,125, 27, 60,207,123, 76,239, 28,199, 97, +238,220,185,184,122,245,170, 79,113, 55, 24, 12,248,242,203, 47, 97,179,217,138,241,138,255, 93,143,249, 40,178,166,119,238,220, +121,232,230,205,155,131, 9, 33,248,244,211, 79, 33,147,201,208,181,107, 87,132,134,134, 98,235,214,173,144,201,100,152, 48, 97, + 2, 75,124, 12, 12, 12, 37, 65, 10,160, 30,128,112,187,161,167, 0, 64,144,211,249, 12,251,111,184,211,254, 17, 55, 60,141,237, +215,136,231,197,125, 19, 0,185,155,227, 89, 0, 84,246,205, 8, 96, 63,128, 90, 78,207, 17,239,131,167,231,242, 64,209,250, 67, + 0,118, 2,104, 43, 78,162,119,231,206,157,167,156, 44, 43, 23, 46, 93,186, 84, 77,212, 60,246, 46, 68,153,213,106,173, 34,118, + 39,138,214,162,142, 29, 59,150,216,194,183,154,205,119, 9, 16,119, 90,202, 93,119,133, 39, 1, 99, 54,155, 49, 96,192,128,162, + 47,225,161,210,113,222,124,208,110, 48,153, 76,224,121, 30, 85,203,133,227,189, 46,245,209,132, 90,160, 45, 36,176,230,105,209, +203,207,130, 11, 53, 26, 96,233,173, 12,220,204, 47, 4,207,243, 62,113, 10,130,224, 81,100, 73, 36, 18, 44, 89,178, 4,131, 6, + 13,130, 68, 34,241,137,143,161,236, 97, 21, 4,183,233,208, 83,154,245,229, 59,249,194,153,157,157,173,239,222,189,251, 65,133, + 66,177, 44, 50, 50, 50, 37, 41, 41,201,171,208,114, 21, 63,174,141,138, 79, 62,249, 4, 11, 23, 46, 68,187,118,237,124, 10,167, +209,104, 4, 33, 4, 75,151, 46,189,235,220,180,105,211,238,122, 94, 73,156,246, 6, 18, 23, 19, 19, 51,250,247,223,127, 15, 16, +175, 13, 11, 11,131, 84, 42, 69,237,218,181,225,239,239,143,189,123,247,194,102,179,249,156, 47, 25, 24, 24, 30, 95,184,211, 34, + 78,104, 61,105,210,164, 70,179,102,205,154,209,172, 89,179, 31,247,239,223,191,146, 16,178,201,169, 76,236,110, 47,123, 54, 57, +237, 55,118, 17, 61, 82, 0,225,132,144, 77,226,245,206,251, 78,199, 59, 2,144,139,251,147, 38, 77,170, 53,107,214,172, 25, 19, + 39, 78,124,123,230,204,153,178, 73,147, 38,213,153, 53,107,214, 12,241, 57,238,194,225,206,162, 85,226,172,194, 98, 55,226,197, +139, 23,225,205,127,149, 82, 90, 98,105,169, 9, 11,119, 88,178,166,198,135, 58,142, 79, 73,202,117, 84, 96,139, 26, 86,130, 70, +163, 65,151,169, 31,251,100, 41, 50,153, 76, 72, 79, 79,119, 88, 25,188,109,190,114,170, 85, 74,108,127,173, 54,110,103,201,241, +193,129,108,108, 62,121, 21, 82,169, 20, 79,214,168,141,167,100,254,120, 55, 94,142,215,174,220,128,197, 71,159, 94, 74,169, 91, +129, 37,254, 23,187, 80,152,208,250,231,208,189,110, 69,135,213,233,144,127, 7,199,241,126,218, 51,142,111,242,198,146,143, 0, + 0,237, 26, 60, 1, 95,252,185,189,113,102,101,101,233, 91,118,104,187,203,166, 55,125, 55,116,232,208,235, 59,118,236, 80,249, +212,188,115, 35,180, 68,171,173, 40,178,120,158,135,201,100,242, 41,238, 38,147,201, 99,254,144,201,100,165,182,104, 1,128, 86, +171, 53,109,216,176, 1,139, 22, 45, 66,104,104, 40, 58,119,238,140,232,232,104,172, 89,179, 6,148, 82,140, 29, 59, 22, 42,149, + 74,180, 94,179, 4,200,192,240,223, 70, 73, 90, 68, 49,107,214,172, 25,174, 66,198,121,223, 89, 64,185,136, 41,103,177, 86,203, + 75,253,191,201, 85, 60,137,207, 37,132,108,154, 57,115,102,119, 47,225,200,240, 36,180, 74,156,190,223,104, 52, 94,175, 91,183, +174, 79,106, 66,167,211,165,122, 19, 27,238, 90,245,206, 86, 2, 63, 63, 63,104, 2,252,192,249, 88,238, 90, 44, 22,135, 80,217, +182,109, 27, 84, 42, 21,186,118,237,122, 95, 22, 45,179,217, 12,185, 76, 10, 46, 44, 18,195,230,237, 64, 86,129,222, 81,193,236, +188,118, 29,199,211,210,241, 90,179, 14,208,168,210, 81,104, 50,249,100,121, 19, 4,225, 46,145,197,243, 60, 6, 12, 24,224,176, + 38, 56,251,173,128,117, 29,254, 99,112,151, 62, 93,143, 11, 46,150,170,123,225,204,202,202,210,119,239,222,253,160, 77,111,250, + 46, 57, 57,249, 32, 0,101,147, 38, 77, 74, 45,180, 68,129, 37,149, 74, 49,119,238, 92, 44, 92,184,208,113,222, 87,161,101,181, + 90,139, 9,168, 43, 87,174, 20,123,150,171,176, 43,169,219,148, 82, 74, 9, 33, 2, 0, 33, 49, 49,209,113, 79, 84, 84, 20,130, +130,130, 32, 8, 2, 4, 65,128, 82,169,132, 74,165,130, 76, 38, 99,137,142,129,129,161, 36, 45,162,159, 56,113,226,219,132,144, + 77,118,203,210,217, 18, 4,149, 59, 52,118, 17,107, 25, 30,202,174,238,238,196,150,243,127, 17,147, 38, 77,170,229, 38, 28, 71, + 60, 10, 45,151,105,247,139,193,185, 27,177,172, 42,177,146, 42, 50,191,160, 0,168, 52, 26, 72, 36, 28, 8, 33,212, 27,151,217, +108,118, 20,252,163, 70,141, 42,209,111,197, 87,127, 42,179,217, 12,142,151,224, 78, 84, 2,108,220, 30,199,189,226,198,241, 82, +220,140,170, 6,201,197, 19,144,250, 88,225,186, 90,180,198,142, 29,139, 47,191,252, 18, 28,199, 57,222, 9,207,243,168, 92,185, + 50,174, 95,191,206,114,220, 35, 34,178, 60, 29,183,217, 4,159,173, 48,238,174,203,202,202,210,247,239,223,127, 87, 94, 94,222, +119, 53,107,214,188,130,162,233, 15, 56, 95,249,120,158, 47, 38,176, 68,145,181, 96,193,130, 98,162,200, 98,177,248,212, 16,176, + 88, 44,119, 9,158, 57,115,230, 20,251, 5,128,230,205,155,251,100, 25, 6, 64, 57,142,163, 50,153, 12,157, 58,117, 66,157, 58, +117,240,243,207, 63, 67, 16, 4,140, 25, 51, 6, 42,149, 10,243,231,207,135,213,106,197,236,217,179,153, 69,139,129,129,161, 36, + 45, 98,156, 57,115,230,217,153, 51,103, 58, 44, 75,174, 22, 45, 79,148,118, 81, 21, 46,138, 52, 20,249, 90, 29, 41,161,174,238, +238, 73,128, 57, 31,155, 53,107,214, 12, 55,225,112,237,174,124,248,107, 29,166,158, 59,131,143, 91,212, 7, 80,188,187,112,201, + 19,213,160,241,211, 64,227,239,135,254, 27,247, 0,128,189,208,159,232,147, 69, 75, 20, 90, 89, 89, 89, 37,138,172,210, 88,180, + 56, 57,143,181,113, 57,160,114, 41,120,147,165,152,208,146,240, 82,220, 14, 77, 0, 39,149,129,183, 89,125,226,164,148,222,213, + 85, 56,124,248,112, 16, 66, 28, 35,196,234,214,173,235,204,197,106,158,135,157, 62,143,126,133, 11,235, 70, 3, 0, 90,106,181, +142,111,241, 97,221,191,199,119,204, 59,179,203, 97,125,156,138, 55,239,137, 51, 43, 43, 75,223,164,122,173,131,178,144,192,239, +110,221,186,117, 16, 0, 55,112,224,192,160,186,117,235,250,148, 39,197,193, 21,174, 34,203,217,146, 37,254, 90, 44, 22,159,226, + 46,250, 74,121,131,216,141,232, 45,205, 83, 74,105, 72, 72, 8, 56,142, 67, 64, 64, 0,252,252,252, 28, 35,110,149, 74, 37,212, +106,181,195,191,211, 71,225,198,192,192,240,223, 69,176, 40,116,236, 98,169,152,165,137, 82,218,221, 89, 12,121,234, 66,180, 91, +160,118,123, 51,172,217, 5,154, 91,136,150, 53,151, 50,121,147, 39,145,198,139, 10,210,249, 55, 58, 58,250, 55, 63, 63,191, 4, + 95, 99, 95,154,201, 75,109, 22,243, 93,150, 45, 66, 8,252,252,253,160,242,211, 64,229,239,231,209,234, 85,146,208, 18, 45, 69, + 98,165,179,108,217, 50,248,249,249,225,217,103,159, 45,181,143,150, 67,104,201, 56,108, 85,252, 9,137,156, 47, 38,178,120,158, +135, 68, 42, 69,170, 95, 52, 56,169, 20,188,213, 55, 43, 89, 94, 94, 30,120,158,199,123,239,189,231,104,193, 59,139,172,210,196, +153,225,193,128,218, 44,119, 89,161, 60, 89, 95,239,149, 83,180,100,201, 66, 2,191,171, 86,173,154,195,146,165, 86,171,197,209, +166, 94,193,113,156, 91,145,229, 58, 66,144,231,249,162,180,236,101,116,164,179, 69,107,230,204,153, 14, 94,103, 75,150,136,210, +228, 35, 49,172,187,118,237,194,241,227,199, 49,106,212, 40,168, 84, 42, 44, 92,184, 16, 86,171, 21,211,166, 77,131, 74,165,130, + 92, 46,103,137,143,129,129, 89,179,138,105, 17, 23,100,184,248, 65, 17, 23, 81,147,225, 78, 96, 57,119, 19, 58,253,183,184,225, + 53,185,116, 41,186, 30, 23,127,179,102,206,156,185, 67,180,100, 57, 29, 47, 22, 14,175, 22, 45,133, 66,145,112,249,242,101,199, +100,165, 37,253,154, 76, 38,180,107,215,206,103,203,152, 56,234,144,231, 37,197,132,133,218,223, 15,234, 0,127,168,252,252, 92, + 5, 7,241, 86,136,139, 45, 98,103,161,245,254,251,239,131,231,121,124,249,229,151, 0,128, 55,223,124,211,103, 31, 45,145, 19, + 54,130, 36,250, 23,234,207,235, 7,211,247, 22,164,237, 59, 5,158,231, 17,209,244, 41, 8, 77,250, 65,167,242, 3,111,179,250, + 60,234, 48, 59, 59, 27,215,175, 95,135, 68, 34,193,235,175,191, 94,108,174, 35,215,145,108,219,182,109, 99, 22,173,127, 66,104, + 9, 86,159, 68, 85,105,172,142,206,156,162, 79, 86, 94, 94,222,119,183,110,221, 58, 4,128, 27, 58,116,104,144, 90,173,198,215, + 95,127,173, 3, 32, 95,179,102,141,202,155, 40, 18,211,141, 55,145, 37,149, 74,139,210,178, 47,113,167,197,167, 44,241,230, 24, +239, 75,154, 23,195, 74, 8,129,205,102,131, 74,165, 42,102,201, 82, 42,149, 80, 40, 20, 44,225, 49, 48, 48,120,195,145, 82, 92, +219,216, 73, 52, 29,185, 71,222, 35,101, 21,112,222,147,208, 48, 26,141, 56,127,254,188,175, 60, 62, 79, 94, 90,174,209, 19,152, +154,156, 7, 66, 8,190,104, 94, 19,154, 0, 63,168, 53, 26,244,253,121,151,163,224, 62, 51,227, 77, 40, 52,126,136,105,213,217, +167,130, 92,236, 58,116, 22, 90,185,185,185,144, 74,165,152, 62,125, 58, 56,142,195,236,217,179, 17, 27, 27,139, 59,119,238, 96, +205,154, 53, 62, 89,180, 36, 54, 9,162,159,169, 14,245,240, 64, 4, 60,211, 26,193,157,222, 71,178,137,199,126,131, 26,173, 13, +231, 32,223,186, 0, 38,193,230,243, 8, 44,171,213,138, 93,187,118,185, 58,188,131, 82,234,152,117,223, 98,177,192,108, 54, 99, +246,236,217, 96, 43,148, 60,124, 68, 55, 29,139,240, 70, 47, 1, 0, 54,206,124,206,113,252,189, 51,127,167,207,185,223, 23, 45, + 0, 80,173, 66,231, 82,113,102,101,101,233,159,108,215,124,183, 65,144,126, 91,187,118,237, 98,150, 44,165, 82, 73,236,251, 62, +137,107,142,227, 32,145, 72,238,234, 46,244, 36,182,124,241,209,178, 90,173,142,137, 68, 75,242,103,188, 23,139,214,115,207, 61, +135,232,232,104,135, 37,107,234,212,169, 80,169, 84,152, 52,105, 18, 44, 22, 11, 22, 44, 88,192, 18, 31, 3, 3,195, 63, 33,202, + 30, 56,220,150,164, 6,131,225, 70,157, 58,117,224,225, 92,172, 82,169,148,186, 20,210, 49, 85,170, 84,185,228,218,133, 72, 8, +233, 72, 41,221,238,174, 80, 39,132,192, 63,192, 31, 74, 63, 13,212, 46, 86, 44,165,127, 0, 20,126,126,224,100, 82,119, 21,194, + 93,156,162,111,137,179,208, 18,183,188,188, 60, 72,165, 82, 44, 90,180, 8, 1, 1, 1, 48, 26,141, 94, 57,197, 74, 71, 34,145, + 64,119,187, 0, 23,102,108,135, 92,185, 31,149, 58, 15, 66,180, 84, 5,217,222,245,208,219, 44, 37, 78, 88,234,142,179, 74,149, + 42,152, 60,121,242, 93,211, 58,120, 66,108,108,172,215,184,223, 47, 24,167,123,206,146, 70,197,138, 16,168,205,221,117,110, 57, + 69, 75,150, 65,144,126,123,253,250,117,209,146, 21,168, 86,171,241,249,231,159,235, 0,112,211,166, 77, 83,199,199,199, 75,124, + 73, 75, 18,137, 4,243,230,205,115,235,147,229, 78,116,149, 38, 31, 57,223,219,166, 77, 27,183, 19,150,186, 19,111,238, 56,197, +176,134,134,134, 58, 44, 89, 54,155,205, 49,218, 80,156,125,222, 83,163,130,165, 79,198,201, 56,255, 59,156,143, 43,220,214,242, + 41, 41, 41, 79,122,186,161, 82,165, 74,151, 47, 95,190, 92, 89, 92,138,195, 94,112,202, 12, 6, 67,149,230,205,155,123, 53,237, + 8,130, 0,133, 66, 1, 74, 41,218, 79,158, 5,194, 1, 28,138, 87, 98, 17, 45, 58, 64, 34,225, 33, 20, 45,245,225,117,212,161, + 94,175, 47, 86, 57,184,219, 10, 11, 11, 97, 52, 26,125,158,205,219, 96, 48, 20,155,130,129, 80, 1, 55,255, 88,125,215,232, 67, +113,243,213,111, 71,169, 84, 22,235,250, 41, 9,222,230, 36, 99, 40,123,136, 3, 22, 0,160,106,243,174, 16, 4, 27,168,205, 86, +108,153,164,234, 9, 79, 66,160, 54,152, 45, 58, 24,141, 70,111,102, 71,146,153,153,169,239,223,191,255, 46, 0,223,244,234,213, +235, 18,138, 70,188, 80, 63, 63, 63,133, 84, 42, 21, 0,100, 3,160, 57, 57, 57,129,201,201,201,130,193, 96, 40,239, 45,156,155, + 55,111,198,249,243,231,209,170, 85,171, 98,203, 65,137, 86, 81,231,217,221,125, 73,159, 98,119,185,187, 25,225, 61, 9, 57, 95, + 33,145, 72, 16, 24, 24, 8,153, 76,134,233,211,167, 67, 38,147, 65,173, 86, 3, 0, 22, 44, 88,224,152,124,149,129,129,129,225, + 63, 35,180,188,149,155, 37,116, 43,150,216,133,104,181, 90,147,226,227,227, 75,245, 48,155,205,150,230, 69,184, 37,173, 89,179, + 70,230,108,133,240,246, 75, 41, 77,243, 82,217, 38,109,220,184, 81,230,206,186,225,105,129,105,111,156, 54,155, 45,169, 66,133, + 10, 30, 45, 38,238, 96,177, 88,146, 89, 18,125,120,176,217,108, 37,164,207,119,238, 53,125, 94,169, 90,181,106,114, 80, 80,208, +175,145,145,145, 89,251,246,237, 11,109,220,184,113,168,243, 53,141, 27, 55,142,118,185,205, 4,207,235, 28,130, 16,146,212,171, + 87, 47,183,105, 94, 20, 77,110,210,103,146,183, 52,127,248,240, 97,153,243,253,158,248,157,242, 81,146, 15,194,245,102,253,250, +245, 57,103, 30, 79,105,223, 98,177,100,176, 84,200,192,192,240,159, 23, 90,122,189,254,118,157, 58,117,172, 30,206,221, 42,233, +222,204,204,204, 70,101, 29, 1,179,217,220,252,223,192,153,145,145,209,136, 37,183, 71, 27, 15,226, 27,165,165,165, 53, 41,107, + 78,171,213, 90,230,233,211, 98,177, 52,127, 16,239, 52, 43, 43,171, 25, 75, 89, 12, 12, 12, 76,104,149, 2,190, 78,227,192,192, +192,192,192,192,192,192,240, 95, 7,199, 94, 1, 3, 3, 3, 3, 3, 3, 3,195,131, 1, 65,209, 42,213,119,161, 52,163, 9, 8, + 33, 29, 75,251, 96,111,252,140,147,113, 50, 78,198,201, 56, 25, 39,227,124,252, 56,189,113, 63,118,163, 25,197,209, 84, 15, 98, + 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,158, +189,130,127, 6,132, 16, 9,165,212, 86,134,148,193, 0, 60, 45, 24,103, 2,144,115, 47,193, 4, 32,179,111,226, 68, 71, 22, 0, +102,251,230,195,212,245, 83,184,148,148,224, 90,212, 38,109, 76, 9,145, 10, 2, 78,150, 47, 95,238, 4,240,164, 9, 0,252,162, +106,212,240,211,168, 58, 26,205,166, 4,133, 84,126, 62, 87, 91,184,205,144,118,233, 6, 75, 33, 12, 12,255, 72,185,212, 3,192, + 20,123,222,159, 73, 41, 93,205,222, 10, 3,195, 3, 18, 90,254,254,254, 71, 57,142,139,243, 54, 63,143, 83, 6,133,205,102, 75, +202,206,206,110,228, 99,134,230, 1,244,247,243,243,107, 39,149, 74, 91, 0,128,197, 98,217, 87, 88, 88,184, 3,192, 26, 74,169, +245, 30, 11,138, 0, 0, 3, 0, 12,177, 31,250, 1,192,106, 74,105,254, 61,242,213, 9, 12, 12, 92, 39,149, 74,105,102,102,102, + 83, 0, 8, 13, 13, 61,104,177, 88, 72,126,126,126, 95, 74,233,233, 82,242,113, 82,169,116,110,171, 86,173, 90, 19, 66,190,161, +148, 46, 42,163,111,169,224, 56,206,173, 64, 17, 4,161,194, 61,240,201, 0, 4, 46, 90,180, 40,116,197,138, 21,245,147,146,146, +106, 3, 64, 92, 92,220,153,161, 67,135,158,120,249,229,151,179, 0,228,217, 5,151, 71,164,164, 4,215, 74, 79,189, 54, 42, 45, +253,252, 0, 0,136,138,174,189, 90, 34,225,100,177,177,199, 15,168,195,134,132, 85,173, 86,241,165, 31,191, 94, 36,171,144, 80, + 14,127,238, 63, 94,239,229, 87,222,174,165,140,172,250, 9, 19, 91, 15, 15, 1, 1, 1, 71, 57,142,139, 43, 41,143,187,203,243, + 54,155, 45, 41, 43, 43,171,145, 39, 78,158,231,227, 74, 42, 47,220, 29, 19, 4,225, 90, 70, 70,134,219,169, 38, 2, 3, 3, 15, +240, 60,159,224, 43,151,248,107,181, 90,147, 60, 77, 45, 19, 24, 24,120, 84, 34,145,196,149, 20, 79,119,231, 4, 65,184,150,158, +158,238, 41,156,119,197,189, 44,194,121, 47,156, 37,133, 83, 44,143, 0, 44, 8, 13, 13,125, 34, 43, 43,235,127, 0,222,206,207, +207,175, 43,145, 72, 16, 18, 18,242, 54, 33,228,106, 96, 96,224, 87,121,121,121,251, 1,188, 66, 41, 21, 88,142, 97, 96, 40, 35, +161,197,113, 92, 92,114,114,114,132, 70,163, 1,240,247,122,124,226, 98,210,130, 32,128, 82,234,248,181, 90,173,168, 94,189,186, +175, 98,163,118, 64, 64,192,218, 73,147, 38,149,239,223,191,191, 92, 92,106, 38, 37, 37,165,202,186,117,235,254, 55,125,250,244, +247, 9, 33,253, 40,165,103,124, 21, 47, 0, 58, 0, 24, 94,191,126,253,167,167, 78,157, 42,107,223,190, 61,108, 54, 27,126,253, +245,215, 86,211,166, 77, 91, 68, 8, 89, 15,224, 59, 0,127,248, 90, 88, 16, 66, 90, 70, 69, 69,173,220,187,119,111,244,245,235, +215,109,253,251,247, 95, 5, 0, 71,143, 30, 77,180,217,108,164,105,211,166,155, 9, 33,131, 41,165,123, 75,241,206,159, 30, 55, +110,220,192,177, 99,199, 70, 60,251,236,179, 35, 0, 44,178, 63,139,216,223,115,105, 23, 56,116, 88,178, 40,165,178, 18,174,139, + 42,133,101, 75,115,253,250,245,224,230,205,155,143, 78, 79, 79,127,205,153, 55, 45, 45, 13,199,142, 29, 51,207,152, 49, 99,222, +254,253,251, 23, 39, 36, 36,228, 0,208,122, 34,162, 54,105,227,180,244,243, 3, 90, 55, 91, 20, 8, 0,107, 54,142, 30,116,248, + 68,134,255,166,223,151,254, 79,174,148, 25, 87,124, 49, 79, 86,185, 82, 5,236, 60,122, 5,135,206,103,147,218, 45,187,243,121, +155,150,119, 2,176,148,101,207,135, 3,137, 68, 18,155,148,148, 20,161, 86,171,221, 46, 28,239,226,151, 33, 78,128,138, 42, 85, +170,120, 46, 88,120, 62, 46, 57, 57, 57, 66,169, 84, 58,202, 14,215, 50, 67, 44, 87, 28,105,133, 82, 84,173, 90,213, 92, 66,153, + 20,127,235,214,173, 8,181, 90,237,224,113, 23, 62, 87,193, 81,181,106,213,146,226, 94, 44,156,190,112, 82, 74, 81,185,114,101, +155,183,184,139, 43, 96,120,139,183,200,153,144,144, 64, 75,195,233, 75, 56, 43, 86,172,104,246,242,249, 23, 92,186,116,105,108, +185,114,229, 80,185,114,229,253, 79, 60,241, 68,128, 70,163,193,239,191,255,142, 26, 53,106,212, 10, 8, 8, 56,180,102,205, 26, +233,132, 9, 19,234,125,251,237,183, 0,240, 50,203, 49, 12, 12,101, 36,180, 8, 33,208,104, 52, 88,181,106,149,199,229, 56,156, +255,151, 47, 95,222,167, 7, 18, 66, 26, 37, 36, 36,236,218,187,119,175, 42, 58,250,239, 9,177, 77, 38, 19,130,131,131, 49,102, +204, 24,121,143, 30, 61, 42,119,238,220,249, 32, 33,164, 13,165,244,168, 23,190,167,195,195,195, 63,125,239,189,247, 34, 7, 14, + 28,136,208,208, 98,147,110,163,127,255,254,232,219,183,175,236,210,165, 75,131,150, 45, 91, 54,104,201,146, 37,169,132,144,151, + 41,165,235, 75,226, 85,171,213,189, 42, 85,170,244,249,222,189,123, 35, 34, 34, 34,144,152,152,200, 77,152, 48,161,114,149, 42, + 85, 84,113,113,113,220,157, 59,119,240,243,207, 63,199, 14, 30, 60,120,173, 92, 46,127,201,100, 50,109,240, 33,238,242,208,208, +208,183, 95,122,233,165,176,252,252,124,235,177, 99,199, 46,139,199,229,114,249,180,102,205,154, 53, 38,132,124, 79, 41,253,234, + 94, 44, 89,118,171,157,235, 90, 38, 22,241,188,143,150, 45,249,201,147, 39, 67,154, 53,107,182,222,104, 52, 54, 24, 53,106,212, +173, 25, 51,102,168, 2, 2, 2, 2, 0,144,252,252,252,156, 41, 83,166,152,230,207,159,255, 86,141, 26, 53, 58, 28, 56,112,224, +233,122,245,234, 89,236, 34,238,110,161, 69,136, 35, 60,183,147, 51,176,107,191, 32,159, 60,233,205,184,143, 62, 76,184,121,228, +220,109,129, 87, 5,224,151,221,103,145,150, 85,136,223, 14,156, 67, 84,168, 63,145, 41,164,181,130,226,106,181,201, 75, 62,183, +155,178,149,181, 31, 56, 8, 33, 80,171,213,248,229,151, 95,238, 90,186,202,221,178, 86, 60,207, 35, 40, 40,200,235,234, 6, 74, +165, 18,219,182,109,115,187,246,162,187, 37,125, 2, 3, 3,129, 18, 22,213, 38,132, 64,169, 84, 98,223,190,125,224, 56,206,237, +210, 64,174,199, 52, 26, 13,184, 18,214,186, 18, 57,119,239,222,237,149, 75,252,245,243,243, 3, 0, 73,137,153, 82,161,192,222, +189,123, 61,198,217,245,191,159,125,189, 87,111,156,251,246,237, 43,182,244,151,235,146, 96,206,251, 26,141,198,209,128,243,216, + 74, 11, 14,110, 26, 23, 23,135,195,135, 15, 99,205,154, 53, 33,181,106,213,194,149, 43, 87, 64, 8,193,140, 25, 51, 72,205,154, + 53,165,169,169,169,104,213,170, 21,126,250,233,167,230, 44,183, 48,252,131,144, 2,168, 7, 32, 28, 69,171,208, 20, 0, 8,178, +215, 61,114, 0, 89, 0, 84,246,205, 8,160, 16, 64,152,253,222, 76,123,217,226, 44, 16, 50, 80,124,241,233,198,118,110,113,133, +138,112,167,115,226, 51, 92,247, 93,127,221,114,243, 0,176,121,243,102,177, 50,107,219,173, 91,183, 93,197, 98,230,131,200, 18, +215, 41,115,205,211,110, 22,152, 85,104, 52,154,117, 7, 15, 30, 84,133,135,255, 29, 7,163,209,136,130,130, 2, 20, 22, 22,162, +160,160, 0,254,254,254, 88,179,102,141,170, 67,135, 14,235, 8, 33, 85, 40,165, 70, 79,156, 0,230,221,185,115, 39,210,106,181, + 66, 46,151,123,106, 9,163,122,245,234,120,251,237,183,209,165, 75,151,168,118,237,218,205, 3,176,190, 4, 78,168,213,234,207, +143, 29, 59, 22,161, 86,171,113,249,242,101, 36, 37, 37,225,141, 55,222, 40, 39, 8, 2,110,223,190,141, 43, 87,174, 32, 57, 57, + 25,203,150, 45,139,232,221,187,247,231, 0, 54,148, 20,119, 59, 70,189,246,218,107,213,130,131,131,185,143, 63,254, 56, 87,171, +213,126,102, 63, 62,121,225,194,133,207,180,110,221, 58, 98,228,200,145,148, 16,178,130, 82,122,151,112,113,225,116,103,201,178, + 1,184,224,114, 91,117, 23, 75, 87,148, 61, 17,230,186,225, 36, 0, 2, 59,119,238,252,186,209,104,108,176,119,239,222,171, 45, + 90,180,136, 7,112, 71, 76,124,129,129,129,154,121,243,230, 69,118,239,222,253, 82,251,246,237, 27,116,238,220,249,245,140,140, +140, 25,246,243,212,149, 83, 16,112, 50, 42,186,246,234,221, 7, 94, 30,176,115,159, 73,246,230, 43,239,223, 42, 95,174, 66,222, +201,203,217,182,115,215, 50, 80,160,183,162, 79,251,162, 5,204,155,214, 46,143, 79, 87,237,197,152, 87,223,145,174, 95,189,188, +239, 85, 10, 13,128,205, 37,188,207,251, 2,227,252, 91,108, 8,130, 0,169, 84,138,167,158,122, 10,132,144,187,214,242,148, 74, +165, 56,112,224, 0,218,183,111, 15,169, 84,138,231,158,123,206, 39, 78,158,231,209,185,115,103,199, 58,138,206,124,174,162,193, +157, 38,112,141, 59,165, 20, 60,207,131,227, 56,143, 11,105,187,114,122, 43,151,196,112,150,196,229,124,206, 91, 56, 69,107,146, +175, 34,203, 87, 78, 49,156, 60,207,163,121,243,230, 56,113,226, 68,137,162,203,157,190,116,141,123, 78, 78,206,176, 42, 85,170, +236, 94,180,104, 81, 8, 0,100,101,101, 57, 22,188,151, 72, 36,184,120,241, 34, 76, 38, 19, 62,248,224, 3,115,126,126,254, 72, +150,143, 24,231,131,228, 44, 73,139, 0,104, 61,105,210,164, 70,179,102,205,154,209,172, 89,179, 31,247,239,223,191,146, 16,178, +137, 82,218, 93,252,157, 52,105, 82,173, 89,179,102,205,152, 56,113,226,219, 51,103,206, 60, 75, 8,217, 4, 0,174,251,246,240, +119,119, 17,113,225, 34,143, 61,207, 21,187,214,221,190,235,175, 7,238,191, 45, 90,221,186,117, 35,246, 72, 18,231, 66,205, 87, +161,229,203,218,125, 60,207,143,157, 49, 99, 70,100, 73, 34,171,176,176, 16, 41, 41, 41,136,143,143,199,115,207, 61, 23,185,104, +209,162,177, 0,230,148, 64, 43,147, 72, 36, 56,124,248, 48,210,211,211, 81,167, 78, 29, 36, 36, 36, 20,187,224,175,191,254,194, +175,191,254,138,220,220, 92, 52,108,216, 16, 40,242, 63,114,139,122,245,234,125, 80,189,122,245,206,157, 59,119,182,170, 84, 42, +156, 60,121, 18, 13, 26, 52,192,170, 85,171, 80,190,124,121,168,213,106, 92,186,116, 9,117,234,212,193,174, 93,187, 16, 30, 30, +142,250,245,235, 91, 27, 54,108,184, 39, 59, 59,123,199,141, 27, 55, 62,240,208,114,150,197,198,198,190,255,226,139, 47,202, 83, + 82, 82,132,239,190,251,110, 47,165,116, 47, 33,100,236, 59,239,188, 51,162, 75,151, 46, 17,199,143, 31,207, 59,114,228,200, 33, +119, 34,203, 71, 75,150,213,181, 82,178,217,108, 70,189, 94,111, 50, 26,141, 22,142,227,110, 16, 66, 76, 54,155,205, 83,159,143, +114,248,240,225, 21, 51, 51, 51,199,188,250,234,171,215,237, 34,235, 34,138, 28,224, 1, 0, 86,171,213, 88, 88, 88,152,223,172, + 89,179,248,193,131, 7, 95, 93,185,114,229,152,225,195,135,175,249,238,187,239, 10, 1,232, 93, 9,203,151, 47,119, 66, 34,225, +100,218,130,144,107,107,215,124,245,218,175, 27,199,150,187,125, 59,185,114,104, 88,184, 86,230, 23,158,178,230,135,111,143, 2, + 48,165,100,228,227,244, 95,169,144, 74, 37, 56,127, 59, 15,173,159,236, 47,189,122,249,195,150,162,208, 98,120,160,160,226, 34, +212, 59,119,238, 44,209,162,117,224,192, 1, 72,165, 82,168, 84, 42,204,159, 63,191, 68, 82, 81, 24,136,214, 34,111, 98,134,227, +184, 18,203, 17, 81,108,136, 11,189,187,110,159,125,246, 25, 94,125,245,213, 98,207,176,139, 13,226,141,211, 83,248,226, 43, 84, + 64,122, 90, 90,177, 99,190, 44, 74,111,179,217, 32,149, 74,241,229,151, 95,162,123,247,238,216,180,105, 83,137,191, 79, 61,245, + 20, 56,142,163,190,188,207,230,205,155,195,108, 54, 59,194,124,241,226, 69,183,188, 75,150, 44,241,102,201,236, 1, 96, 74,131, + 6, 13, 2,218,181,107,135,221,187,119,163,111,223,190, 70,179,217,124,217, 94, 39, 84, 93,180,104,145,252,216,177, 99, 8, 13, + 13,149,222,186,117,235, 27, 66, 8,115,144,103,120,160,112,167, 69,196, 58,111,214,172, 89, 51, 92, 69,140, 51,196,243,132,144, + 77, 51,103,206,236,238, 44,138,156,247,157,172, 78,206, 34,174,150,179, 69,202, 89, 68,121, 18, 80, 46,245,173,243,245, 25,110, +133,150, 61, 98,109,157,173, 64, 98,225,235, 77,100,121,106, 57,186, 34, 48, 48,176,107,159, 62,125, 28, 34,199, 96, 48, 56, 4, +150, 40,178,196,253, 75,151, 46,161, 81,163, 70,178,192,192,192,174, 94,132,150, 40,226, 16, 19, 19,131,204,204, 76,156, 57,115, + 6,241,241,241,176, 88, 44,216,178,101, 11,242,242,242, 32,149, 74, 33,147,201, 96, 54,151,236,178, 80,189,122,245,167, 86,172, + 88,209,104,249,242,229, 57, 98,139,238,135, 31,126, 0,165, 20,225,225,225,208,233,116, 72, 75, 75,195,142, 29, 59, 96,181, 90, +225,231,231,135,196,196, 68,121,175, 94,189, 90, 78,153, 50, 69, 10,224, 3, 15,212,205,251,246,237, 27, 24, 16, 16,128, 87, 94, +121,133,154,205,230,153,132,144,230,125,251,246,125,255,229,151, 95, 14,189,113,227,134,233,249,231,159, 63,108, 54,155, 63,182, + 23,130, 82, 74,169,197, 75,139,194,163, 37,203, 98,177,136,239,244,122, 97, 97, 33,194,194,194,226,189,248,112, 1,128,108,223, +190,125,205, 1, 72,166, 77,155,166, 4,144,230, 44,178, 76, 38, 19, 10, 11, 11,161,213,106, 45,121,121,121,233,227,199,143,183, +174, 92,185, 82, 98,191,231,188, 59,161, 5, 60,105,170, 89, 83, 35,167, 84,242,206,210,165, 75,253,186,116,233,194,249,249,249, +161,160,160, 32,224,183,223,127,247,235,208,174,101,226,140, 89, 31,109, 13,136,171,147,182,239,228, 53, 36,167,230,193,100,177, + 32, 49, 58,176,200, 30,198,240,192, 97, 31,200,226,176,104, 57,139,138,221,187,119,227,201, 39,159,116,228,117,153, 76, 86,204, +242,229,141,147,231,121, 60,249,228,147,119, 89,120,118,238,220,233,214,250,228, 13,206,162,200, 85, 28,185, 19, 96, 28,199,193, + 91,239,179,104,205,115, 39,182,156,173,250, 46,226,205, 91,107, 31, 60,207,227,229,151, 95,134, 84, 42,197,132, 9, 19,192,243, + 60,234,215,175, 15,158,231,209,172, 89, 51, 72,165, 82,180,111,223,190,212,113, 63,120,240, 32, 26, 52,104,224, 8, 83,253,250, +245,209,184,113, 99,240, 60,143, 86,173, 90, 65, 42,149,162,115,231,206,190,112,190, 93, 80, 80, 80,215,207,207, 15,151, 46, 93, +130, 68, 34, 1, 33,228, 10,165,180, 46, 0,188,248,226,139, 87,117, 58, 93, 69,131,193,128, 23, 95,124,145,152, 76,166, 58, 19, + 38, 76,120, 7, 0, 19, 90, 12, 15, 12,174, 90,196, 9,250,137, 19, 39,190, 77, 8,217, 36, 90,168, 92, 45, 79,238,246,221,148, + 77,162, 24, 18,187,246, 26,187,136, 56,177,219,175, 91, 9,247,154, 92,132,149,107,215,225, 17,159, 45, 90, 98,225,235,171,208, +242, 6,131,193, 80, 47, 34, 34,194,163,200,114,254, 53,153, 76, 72, 72, 72,128,193, 96,168, 87,218, 74, 35, 58, 58, 26,102,179, + 25, 95,125,245, 21,100, 50, 25,100,178,191,245,133,201, 84,178,177,232,220,185,115,215, 15, 30, 60,216,160, 97,195,134,193, 63, +253,244, 83, 70,155, 54,109,194,187,116,233, 2,149, 74, 5,189, 94, 15,139,197,130,166, 77,155,162,122,245,234, 72, 74, 74,194, +111,191,253,150, 89,165, 74,149,176, 67,135, 14, 9,169,169,169, 55, 75,160,238,212,161, 67, 7, 16, 66,240,251,239,191,103, 82, + 74,143, 40,149,202, 95, 63,252,240,195, 96,147,201, 36, 12, 29, 58,244, 86,118,118,246,171, 0,204, 10,133, 98, 97,231,206,157, +155, 73, 36,146,239,109, 54,219,252,210, 38, 84,215,119,171,213,106,161, 84, 42,125,153, 74, 66,154,157,157, 93, 27, 0, 52, 26, + 77, 8,128,171,142, 20,174,215, 23, 19,195, 38,147,201, 16, 18, 18,162, 1, 0,251, 61, 82, 15,223, 35, 92,173, 86,175,189,121, +243,154,191,179,255, 92, 80, 80, 16,134, 12, 30,204,181,104,222, 92, 94,183, 94,189,206,239,126,178,124, 85, 76,104,128, 41, 49, + 38, 20, 22,155, 5,219,183,110, 17,168, 96,217,202,138,157,135, 35,180, 68,177,225,106,209,146, 74,165,216,181,107,215, 93,199, +100, 50, 25,190,248,226, 11,159,132,129, 40,170, 60,117,157,185,116,117, 17,111, 2, 70, 42,149, 66, 34,145,224,203, 47,191,132, + 32, 8,120,237,181,215,138,117, 39, 58,243,251,216, 5,226,184,167,250,251, 2, 0, 19,146,230, 42, 28,247,187,134,215,126,143, + 79, 86,178, 69,139, 22,249,100,209,234,214,173,155, 87,225,234,220,195,224, 28,174, 19, 39, 78,184,229, 93,186,116,169,215,247, +105,179,217,176,121,243,102,135, 72, 21,241,222,123,239,189, 24, 23, 23, 23,185,103,207, 30,164,166,166, 66,171,213,162,176,176, + 16, 77,155, 54, 77,236,216,177,227,201,212,212,212, 27,231,206,157,235,195,114, 15,195, 67,180,104, 25,103,206,156,121,118,230, +204,153,110, 45, 86,174,150,165,146, 44, 79, 78, 2,235, 8,236, 93,134, 19, 39, 78,124, 27, 69,110, 53, 71,124,184, 87,238,218, +117, 88,162, 33,200, 69, 69, 78,113, 87,248,250,210,125,232,163, 57,157, 39,132,192, 96, 48,184, 21, 88,206,226,192,108, 54, 35, + 59, 59, 27, 54,155,237,158,231,250,114,215,146,245, 38,180,206,156, 57,243,236,136, 17, 35, 82, 2, 3, 3,235,102,100,100,164, + 11,130,208,254,192,129, 3,225, 60,207, 35, 32, 32, 0, 1, 1, 1,248,245,215, 95,161, 86,171,241,242,203, 47,167,219,108,182, +221,254,254,254,161,122,189,254, 84,106,106,234,187, 30, 21,140, 84,218,185, 85,171, 86, 56,118,236, 24,114,114,114,182, 17, 66, +234,143, 28, 57,242,201,114,229,202,145, 15, 63,252,208,240,215, 95,127,205, 7,144,174,209,104, 86,172, 88,177,162, 93,195,134, + 13,253,135, 14, 29, 10, 66,200, 82, 74,169,193,215, 56,107,181,218, 98, 2, 43, 63, 63, 31, 5, 5, 5,208,104, 52, 86, 31,223, +153, 20, 69,190, 86,162,191,149,227,219,216,173, 89,226,247,161, 60,207,211,162, 75,168,212, 19,159, 70,163,153,182,124,249,114, +149,235, 32, 5,155,205,134,180,180, 52, 4, 4, 4,224,189,119,223,149, 77,125, 99,100, 3,137, 95,228, 1,142, 35, 48,153,105, + 46, 21, 76, 91,180,105, 3,247,176, 98,231,225, 64, 20, 6, 61,123,246,188,171,187, 80, 38,147, 97,219,182,109,232,221,187,183, +163,225,210,176, 97, 67,175,141, 43, 81, 24,244,232,209,195, 97, 25,218,178,101,139,219,110, 63,209, 34,229,139, 32, 20,175, 29, + 55,110, 28,120,158,199,167,159,126,138,215, 95,127, 29, 28,199, 97,238,220,185,224, 56, 14,147, 39, 79,246, 89,100, 58, 11,152, + 27, 31, 21,253,198,189,158,143,172, 37,145, 0, 0,255,128, 0, 49, 66,165, 42,123,120,158,119, 88,178,234,213,171, 7,169, 84, +138,102,205,154,129,231,121,135, 37,171,107,215,174,206,239,145,250,194,201,243, 60, 46, 95,190,236, 8,115,179,102,205,138, 89, +178,120,158, 71,183,110,221,124, 9,230,140,160,160,160, 41,213,171, 87,175, 49,111,222, 60,169, 68, 34, 65,135, 14, 29,170, 62, +255,252,243, 55, 67, 67, 67, 67,167, 77,155,166,118,115,143, 10, 64,221, 26, 53,106,104, 88,174, 97,120,128, 22,173, 41,110, 78, + 5, 59,251, 92,149,162, 33,185,201,249,122,145,195, 85, 28,217, 45,100,187,189,113,185,187,215, 27,120, 81, 65,150,100, 82,247, + 69,104,217,205,206, 37, 62, 76,173, 86,159, 78, 79, 79,111,166, 82,169,138,137, 44,119,130, 75, 34,145, 32, 53, 53, 21,106,181, +250,116, 89,126, 68,111, 93,135,118, 81,243,134,211,139,237,216,181,107,215,239,182,109,219, 22,189,125,251,118, 28, 58,116, 8, +225,225,225, 88,180,104,209,157,180,180,180,103, 41,165,219,124,121,110,197,138, 21,107,251,249,249, 97,223,190,125, 0,176, 11, +192,200, 49, 99,198, 16,139,197,130, 37, 75,150,104, 1,252, 30, 20, 20,180,121,205,154, 53, 13,234,214,173, 43,223,190,125,123, +254,161, 67,135,254,240, 81,100,217, 4, 65,184, 75, 96, 57,191, 83,127,127,127, 95, 44, 90,150,192,192,192, 51,249,249,249,253, +245,122,125,190, 66,161,240,207,207,207, 55, 58, 11, 44,145,159,231,121,233,229,203,151, 83, 0, 36, 6, 6, 6,158,129, 83, 23, + 99,177, 4,198,243, 29, 58,116,232,192,187,126,131,180,180, 52,164,166,166,194,108, 54,163, 97,195,134, 68, 66, 44,146,236, 91, +167, 94,100,197,204, 63, 98,209,162, 98, 94, 23, 71, 9,186, 27,105,184,101,203, 22,199, 62,199,113,176, 15,247,247, 42,138,182, +109,219, 86,162,195,186, 75,215,161, 87,211,184,120,253,226,197,139,139,150,183,176, 91,178, 56,142,195,196,137, 19,161, 80, 40, +240,225,135, 31, 98,226,196,137,224,121,222,107,215,161,179,128,169, 48, 65,231,220, 56, 42,202, 20,118,127, 40, 66,136,179,216, + 34,190,138,183,146,172,121,190,244, 4, 56,115,138,247, 41,149, 74,143,142,240, 46,156,164,132,120,255, 66, 8,185, 22, 29, 29, +189,175, 89,179,102,129, 71,143, 30,197,220,185,115,101, 70,163,177,252,246,237,219, 29,207,117,247,190,180, 90,173,138,229, 28, +134, 7, 97,205, 42,225,116,134,139,127, 21,113,238,198, 43,225,215,245,122, 56, 29,115,230,205,112,169,199,156,143,187,138, 43, +215,103, 56, 95,147,225,209,162,229,173,176,240, 38,184,124,177,104,233,116,186, 63,126,255,253,247,198,131, 7, 15,230, 75,234, + 54,212,106,181,136,140,140,196,217,179,103,173, 58,157,238, 15, 31, 44,101,101, 38,180,220, 20, 42,219,163,162,162, 36, 22,139, + 5,149, 43, 87, 70,108,108, 44, 12, 6, 3,114,115,115, 37,190,138, 44, 66,136,172, 81,163, 70, 18, 0,200,205,205, 5,138,134, +154, 86,173, 82,165, 10,142, 29, 59,134,236,236,236,245, 0,186, 76,153, 50,165, 97,211,166, 77,101,171, 86,173,210,141, 26, 53, +106,189,197, 98,249,192, 71,107,132,201,106,181, 38,112, 28,103,206,205,205, 77,118,126,159,145,145,145, 33, 26,141,134,164,165, +165, 89,124, 17, 90,117,235,214, 61,124,235,214, 45, 76,155, 54, 45, 99,198,140, 25, 85, 10, 10, 10,114,242,242,242,172,206, 98, +203, 96, 48,112, 97, 97, 97,138, 37, 75,150,168, 0,160,110,221,186,135, 61, 9, 45,173, 86, 91, 78,173,254,187, 97,108, 52, 26, +145,154,154,138,212,212, 84,164,165,165,161,160,160, 0,137,137,137,208,233,116,241,172,152,249,199,132, 86,177,238, 51,231,252, +237, 92,145,151, 38,175, 59, 11,152,158, 61,123, 58,124,187, 68, 11,153,184,173, 93,187,214,213,193,220, 39,161,181,120,241, 98, +140, 27, 55, 14, 74,165, 18,243,230,205, 43,214,117,232, 42, 14, 4, 65, 32,190,196, 61,225, 45, 61, 82, 23,134, 64, 42,149, 34, +116, 84, 90,177, 46, 58, 55,130,195,167,112,206,152, 49,163, 76,186, 14,157, 57,227,227,139,178,202,151, 95,126,137,254,253,251, + 99,207,158, 61,247,220,117, 88,171, 86,173, 31, 54,109,218, 20,120,238,220, 57,228,231,231, 35, 35, 35, 3, 70,163, 17, 73, 73, + 73, 30,123, 5,236,101,185,146,229, 28,134,135,140, 35, 15,153,183,204,158,199,123,169,192,125, 22, 90,190, 88,180,140, 70,227, +188, 87, 94,121,101, 76,199,142, 29, 67,252,253,253,145,146,146,114,151,200, 42, 44, 44,132,159,159, 31,244,122, 61, 54,110,220, +152,111, 52, 26,231,121, 19, 7, 22,139, 5, 17, 17, 17,200,204,204,132,224,193,127,154,227, 56,168, 84, 42, 20, 22, 22,194,147, + 40, 40,169,194, 48,155,205,176, 88, 44,176, 88, 44, 48,155,205, 40,229,244, 78,106,113,226, 87,173, 86, 11, 0,218,152,152,152, +202, 74,165, 18,215,175, 95, 7,138, 70,246,117,124,242,201, 39,165, 89, 89, 89,244,249,231,159,223, 75, 41,125,209,203,236,248, +166,221,187,119, 39, 0,128, 74,165,186, 4, 0, 73, 73, 73,150,220,220,220, 98,150, 66,181, 90, 77,123,247,238, 29, 77, 41,197, +238,221,187, 19,100, 50, 25,133,135, 57,175, 0, 24, 54,108,216,112, 46, 48, 48,112,229,172, 89,179, 6,119,239,222,253,108,237, +218,181, 19,180, 90,109,186, 94,175,215, 27, 12, 6, 42,145, 72,100,193,193,193,202,173, 91,183, 94, 61,112,224, 64,199,128,128, +128,149, 27, 54,108, 56, 7,192,173,229, 77,163,209, 36,233,116,186, 10,226, 55,117, 22, 89,169,169,169,160,148,226,218,181,107, + 80,171,213,183, 88, 57,242,207, 65,108, 84,185, 90, 94, 92,143,249, 42,178,156,133,193,214,173, 91, 75,156, 67,203, 87, 78,103, + 81,244,250,235,175, 99,225,194,133,119, 89,180, 62,252,240, 67, 0,192,187,239,190,235,179,143,150,104,189, 74, 93, 24,130,168, +113,217,197,194, 14, 0, 68, 12, 95, 41,167,116,227,121, 30,211,166, 77,187,203, 73,221,185,107,207,199, 46,190, 98,225, 76, 79, + 79, 7,207,243, 8, 9, 9,193,144, 33, 67,208,185,115,103, 71, 23,100,105,121, 47, 92,184,176,239,173,183,222,170, 83,171, 86, + 45, 76,159, 62, 61, 59, 40, 40,200,255,133, 23, 94,224,115,115,115, 73, 73, 22, 45, 38,180, 24, 24,202, 64,104,137, 25,204,215, + 81,135,238, 10, 75, 66, 72, 71,231,185, 54, 40,165,121,132,144, 33,157, 58,117,250,105,245,234,213,170,138, 21, 43,226,194,133, + 11,200,206,206,134,201,100,130, 76, 38, 67,116,116, 52,114,115,115,241,237,183,223,234,117, 58,221, 16, 74,105, 94, 73,156, 0, +222,105,212,168,209,231,115,230,204, 81,214,175, 95, 31,217,217,217, 40, 44, 44, 44, 54,139,117, 64, 64, 0, 84, 42, 21, 14, 31, + 62,140, 45, 91,182,232, 1,188,227,133,211,157,154,131,217,108,118, 8, 46,111, 66,203,133, 83, 35, 90,117,116, 58, 29, 0, 88, +202,149, 43, 23, 5, 0,215,174, 93, 3,128, 27,137,137,137, 83, 42, 86,172, 72, 86,172, 88, 65, 41,165, 91,220,137, 44, 23,206, +236, 86,173, 90,229, 0,136, 50,153, 76, 50, 0,200,203,203, 51,135,133,133, 69, 40, 20, 10, 65,165, 82, 9, 74,165, 82, 72, 73, + 73,177, 90,173, 86, 25, 0,180,106,213,202, 4, 32, 21, 78,190, 32, 46,156, 2,128,252,165, 75,151, 78, 25, 58,116,104,179,230, +205,155,215, 26, 61,122,244,153,231,159,127,158,139,141,141, 13, 46, 40, 40, 48, 92,185,114, 37,231,147, 79, 62, 41, 56,120,240, + 96, 71,169, 84,122,115,233,210,165, 83, 0,228,219,239,189,139,211,106,181,254,177,125,251,246,103,187,119,239,206, 39, 39, 39, + 35, 45, 45,205, 33,178,210,210,210, 80,189,122,117, 28, 56,112,192,102, 54,155,183,151,226,125,150,149, 37,135,113, 22, 53, 66, +168,152,215, 61, 9, 44,177, 49,229, 43,167,179, 40,234,223,191,127, 49, 43,150, 76, 38,195,186,117,235,220,150, 27,110,102, 56, +239,232, 58,159,148, 24,166,183,222,122,171,152,104,123,239,189,247, 60, 6,205,219,251, 20,121,242,190,140, 45, 62,234,208, 67, + 62, 47, 41,156, 98,217, 41,149, 74,241,222,123,239,249,108,209,130,139,143,150, 59, 78, 49,238,109,218,180,129, 78,167,115, 8, + 89, 79, 22, 45,111,239,211,102,179,141, 91,184,112, 33, 13, 8, 8,120, 34, 63, 63,255,127,183,110,221, 90,166,211,233,154,228, +229,229,149,104,209, 50, 26,141, 10,150,143, 24,231,131,152, 75,235, 63, 37,180,236,149, 36,202,149, 43, 87,108,237, 44,142,227, +138,109,165,241, 51,176,103,220,173,132,144,167, 91,180,104,241,253,184,113,227,252,235,215,175, 47,173, 80,161, 2,180, 90, 45, +174, 95,191,142,179,103,207, 90, 55,108,216,144,175,211,233,254, 71, 41,221,234, 3,223,114, 66,200,150, 46, 93,186, 76,110,218, +180,233, 75,239,191,255,190,164,106,213,170,200,203,203, 67,112,112, 48, 34, 34, 34,112,241,226, 69,108,220,184,209,150,153,153, +249, 57,128,169,148,210,140,210, 54,248,205,102, 51, 6, 13, 26, 4, 65, 16, 48,127,254,124, 16, 66, 74,211,188, 53,155,205,102, + 10,128,100,102,102, 2,128,206, 62,187, 52,174, 92,185, 2, 0, 55, 19, 18, 18,252, 1, 96,251,246,237, 4,128,175, 75,250, 80, +103,203, 86,245,234,213,175,187, 22,142,162, 37, 75,180,130,193,251, 66,208,134, 1, 3, 6,164,235,116,186, 46,175,191,254,250, +228,197,139, 23, 15, 94,188,120,241, 93, 23, 5, 4, 4,172,156, 59,119,238,212, 1, 3, 6,164,123,178,102,217, 45,120,239, 14, + 27, 54,108,192,233,211,167,253,149, 74, 37,180, 90, 45,178,178,178, 96, 54,155,145,152,152,136,244,244,116, 44, 95,190,188, 64, +175,215,127,192,178,227, 63, 3,103, 97,224,201,170,229, 77,100,149,100,213,249,229,151, 95,220,206, 81, 85, 90, 78, 87,177,225, +235,220, 86, 37, 53,138,196,105,105,220, 77, 25, 81,154,114,205, 29, 47,207,243,248,248,227,143, 29,147,182,186,179,100,149,198, +162, 37,114,134,132,132, 20,153,201,237, 75, 38,117,235,214,237,158,121,237,203,145,189,236,244,140, 25,227,199,143,159, 82,189, +122,245,170, 0, 20,206,239,128, 45,210,192,192, 80,198, 66,203,102,179, 37, 85,171, 86,173, 88, 1,231,109, 49, 83,139,197,146, +228, 99,230,222, 66, 8, 73,156, 59,119,238, 43, 26,141,166,163, 78,167,171, 99, 47, 56, 78,107,181,218,237, 70,163,113, 65,105, + 22,129,182, 11,167,177,132,144,249, 93,186,116,249,176,125,251,246,253,222,120,227, 13, 66, 41,197,146, 37, 75,232, 95,127,253, +181, 22,192, 59,148,210,191,238,229, 37,133,132,132,156,251,246,219,111, 35,127,250,233, 39, 88, 44, 22, 44, 88,176, 0,254,254, +254,231, 74, 17,190,116,158,231,191,107,222,188,249, 51, 7, 14, 28, 88, 78, 41, 61, 37,151,203,151,181,108,217,114,216,129, 3, + 7,126,160,148,158,229,121,126, 89,211,166, 77,135, 29, 57,114,100, 13,165,244, 68, 41,130,231,176,108, 89,173,238,123, 26,221, + 89,178,188, 32,127,196,136, 17,230, 17, 35, 70,188, 49, 96,192,128,175,142, 28, 57,210, 36, 55, 55,183, 14, 0, 4, 5, 5,157, +110,220,184,241,225,213,171, 87, 95,180, 91,178, 12,222,190, 13, 33,164,119,157, 58,117,214, 79,159, 62, 93, 83,171, 86, 45,190, +114,229,202,184,113,227, 6,206,156, 57, 99,253,230,155,111, 10,245,122,125, 79, 74,105, 14,203,142,255,156,208,162,148, 34, 40, + 40,168, 88, 35, 74, 28,242, 95,218,238, 66,231,138, 89, 92,170,199,149,215, 19,103, 73,211, 38,136,240,243,243,115, 76,110,234, +139,203,130, 32,148, 60, 31, 27,165,212,193, 41,110, 62,136, 44,175, 35, 4,237, 75,224,248,204,233,203,244, 14, 26,141, 6, 22, +139,197,193,235,195,200, 79, 82,202,111,246, 11,128, 95, 42, 87,174,124, 5, 64, 37, 38,174, 24, 24, 30,160,208,202,206,206,110, +244, 32, 31,108, 23, 82, 83,237, 91, 89,113,254, 5, 96, 0, 33,100,206,159,127,254, 41,246, 35, 76,243,182, 94,162, 55, 92,184, +112,161,187, 84, 42,253, 98,229,202,149, 77, 41,165, 8, 12, 12, 60,120,227,198,141, 23, 74,195, 97,181, 90, 71, 16, 66,198,136, +163, 8, 77, 38,211, 8, 66,200, 43,148,210, 66,167,243,142,253,210, 70, 29,128,145, 82, 26,227,225,188,177, 20, 34,203, 97,217, + 2, 96, 90,189,122,117, 33,128,147,248,123,158, 44,139,125, 51,192,169,187,208,203,119,217, 65, 8,169,252,222,123,239,205,144, + 72, 36, 29,180, 90,109,172, 70,163,185,109,181, 90,255,208,233,116,239, 80, 74,179, 88, 86,252,231, 96, 50,153,146,171, 85,171, +198,187,107, 64,149, 84,145,151,212,176,178,217,108, 73, 85,170, 84,241,218, 56,115,195,153, 92, 66, 58,186,153,152,152,200,249, +202, 37,194,108, 54,167,151, 20,206,196,196, 68,148,150,211, 91,220, 19, 18, 18,220,198,221,139, 32, 76, 46,161,252,184, 39,206, +146,222,103, 73,208,235,245, 57,225,225,225,133, 6,131, 65,106, 52, 26,165, 86,171,181,152,249, 81,165, 82,101,176,156,195,192, +112,159, 66,235,223, 12,187,176,234, 81,134,124, 70, 0,207,148, 1,143,193,101,191,176,164,253, 82,226, 65, 88,132, 4, 0,186, + 50,122,135,153, 0,158,103, 89,238,209, 67,102,102,230, 19,101,205,153,149,149, 85,230, 13,181,140,140,140,102, 15, 32,238,141, +254,171,156, 37, 33, 57, 57,249, 9,150, 51, 24, 24,202, 6, 28,123, 5, 12, 12, 12, 12, 12, 12, 12, 12, 15, 6, 4, 64, 71,119, + 39, 74, 51,154,128, 16,210,177,180, 15,246,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211, 27,247, 99, 55,154, +145, 82,250,192, 54, 0, 29, 25, 39,227,100,156,140,147,113, 50, 78,198,201, 56,255,171, 27,235, 58,100, 96, 96, 96, 96, 96, 96, + 96,120, 64, 96, 66,139,129,129,129,129,129,129,129,129, 9, 45, 6, 6,134,127, 35, 8, 33, 85,203,151, 47,127,190, 90,181,106, +201,132,144,225, 15,248, 89, 67,154, 53,107,150,165, 84, 42,183, 18, 66,170,178,183,207,192,192,192,132, 22, 3, 3,195, 99, 45, +178,234,212,169,179,247,194,133, 11,213,183,111,223, 30, 19, 27, 27,251,209,131,124, 94,163, 70,141,102,239,217,179, 39,228,247, +223,127,239, 20, 21, 21,181,251, 94,196, 22, 33,164,106,124,124,252,249,106,213,170, 37, 17, 66,134,148,241,251, 24,222,188,121, +243,108,133, 66,177,133, 9, 65,134,255, 64,254,175, 77, 8,169,195,132, 22, 3, 3, 3,195, 3, 20, 89,251,247,239, 15, 53, 24, + 12,184,112,225, 2, 50, 50, 50, 78, 60,200,103, 94,186,116, 41,103,255,254,253,136,139,139,195, 15, 63,252, 16,158,144,144,176, +167, 52,130, 70, 12,243,249,243,231,171,111,223,190, 61, 54, 34, 34,226,147,178, 12, 95,147, 38, 77, 62,220,179,103, 79,240,214, +173, 91, 59,135,135,135,239,102, 98,139,225, 49,204,247, 10, 66,200, 51, 28,199, 29,174, 93,187,246,233, 90,181,106,157,226, 56, +238, 0, 33,164, 63, 33,132,255, 79,190, 19,113,137,133,205,155, 55,239, 2,128,110,221,186,181, 97, 73,133,129,129,225, 62, 11, +219, 90,181,106,213, 58,120,240,224, 65,181, 94,175,199,154, 53,107,240,254,251,239, 91,178,179,179,247, 0,208,186,185,229, 8, +128,207,124, 89,122,139, 16, 18, 0, 96, 12,128,198,110, 78,107, 66, 66, 66, 90, 77,153, 50, 69,250,228,147, 79,194, 96, 48,160, +111,223,190,134, 75,151, 46,213,167,148, 94,242, 85, 24,234,245,122, 28, 61,122, 20, 61,123,246,220,106,177, 88,186,148,213,123, + 9, 12, 12, 60,251,203, 47,191,212,140,137,137,193,181,107,215, 48,108,216,176,140,180,180,180,214,222,194,198,192,240, 47,200, +243, 21, 0,188,228,231,231, 55,178,109,219,182,193, 61,123,246, 68,104,104, 40,172, 86, 43,110,223,190,141, 77,155, 54, 97,255, +254,253, 41, 38,147,105, 33,128, 47, 41,165,185,238,120, 30, 71, 45, 66, 40,165,216,188,121, 51, 5,208,214, 30,185, 93, 44,201, + 48, 48, 48,220,103,161,187, 95,167,211, 53,211,233,116, 40, 40, 40, 64,185,114,229, 32,149, 74,221, 94,155,158,158,142,125,251, +246,225,229,151, 95, 62,151,154,154,218,186,164,117, 47, 9, 33,193, 13, 26, 52,216,191, 99,199,142,170,254,254,254,142,227,130, + 32,192,108, 54,195, 98,177,192,108, 54,195,104, 52,194,104, 52, 66, 46,151, 67,165, 82, 33, 36, 36,228, 12,165,180,142,175, 34, +235,248,241,227, 24, 58,116,104, 70, 86, 86, 86,153,138, 32, 66, 72,213,136,136,136,221,203,151, 47, 15, 79, 76, 76,196,173, 91, +183,240,220,115,207,101,222,188,121,179, 21, 19, 91, 12,255,226,252, 62,241,233,167,159,254, 48, 50, 50,146,171, 93,187, 54,162, +163,163, 97, 52, 26,161,215,235, 65, 41, 5,207,243,160,148, 34, 47, 47, 15,187,119,239,198,142, 29, 59,140, 57, 57, 57,223, 2, + 88, 64, 41,189,236, 36,178, 30, 75, 45,226, 16, 90,221,186,117, 35, 44,185, 48, 48, 48,148, 81,193,123, 58, 47, 47,175,182,209, +104,132, 86,171,245,233,158,107,215,174, 97,248,240,225,231, 82, 83, 83, 91,184,179,108, 17, 66, 2, 26, 52,104,112,104,247,238, +221, 85, 13, 6, 3,242,243,189,175, 59, 47,151,203,161, 84, 42, 17, 26, 26,122,128, 82,218,220, 83, 75,188,118,237,218, 71, 15, + 28, 56, 16,162,215,235,113,226,196, 9, 12, 25, 50,196,156,157,157,189, 23,238,173,111, 0,144,141,162,117, 84,111,186,225,139, + 7,240, 10,128, 10, 30,238,213,132,135,135,183, 92,177, 98,133,172, 98,197,138,208,233,116,232,223,191,127,246,165, 75,151, 26, + 83, 74,175,179,212,195,240, 47,204,239,151, 46, 92,184, 80,197,102,179, 33, 51, 51, 19, 70,163, 17, 58,157,206, 33,180, 36, 18, + 9, 40,165,176, 90,173,142,134,209,177, 99,199,176,125,251,118,122,237,218,181,247, 41,165,211, 68,161,245, 56,106, 17,158, 37, + 17, 6, 6,134, 7,128, 1, 77,154, 52, 57,241,219,111,191, 41,229,114, 57, 54,110,220,232,177,235, 48, 50, 50,178,214,178,101, +203, 18, 18, 19, 19,177,104,209,162,154,125,251,246, 29, 3, 96,134, 27,206, 49, 59,118,236,168,106, 48, 24,112,226,196, 9, 12, + 27, 54,236,122, 90, 90,218, 89, 87, 17,147,144,144,208,234,147, 79, 62,145, 54,108,216, 16,249,249,249,232,212,169,147, 14,192, + 75, 37,132,117,236,206,157, 59, 67,244,122, 61, 10, 10, 10,208,182,109, 91,100,101,101,201, 0,180,247,116,131, 94,175, 71,133, + 10, 21,170, 2,184, 75,188,133,134,134,126,125,235,214,173,118, 42,149,170,196, 23,100, 54,155,145,148,148,132,160,160, 32,108, +218,180, 41,164, 82,165, 74,239, 2, 24,193,146, 14,195,191, 17, 38,147, 9, 63,254,248, 35, 26, 52,104,128, 26, 53,106,160,176, +176,208, 33,186, 76, 38,147, 67,100, 1, 0,199,113,104,220,184, 49,170, 84,169, 66, 94,123,237,181, 33, 0,166, 61,206,239, 70, + 20, 90, 83,152,143, 22, 3, 3, 67, 89,129, 82,122,137, 16, 82,191, 99,199,142,123,214,174, 93, 27,214,181,107, 87, 84,170, 84, + 73,218,167, 79,159,112,173, 86,219,193,165, 53, 28, 60,108,216,176,163,183,111,223, 78,176, 31,106,236,129,182,177,191,191,191, +232,219,116, 61, 45, 45,173,145,107, 55,163, 66,161,216,114,242,228, 73,169, 92, 46,199,145, 35, 71, 48,124,248,240,204,235,215, +175,123,235,150, 11, 50,153, 76,144, 72, 36, 0,128,164,164, 36,175,241,187,117,235, 22, 4, 65, 48,186, 59,199,113,156,226,216, +177, 99,136,137,137, 41,145,131,227, 56,200,100, 50,231, 67,185, 44,229, 48,252, 75, 97, 49,153, 76,104,212,168, 17,174, 95,191, +142, 99,199,142, 57, 4, 87,102,102, 38, 82, 82, 82,138, 93,124,248,240, 97, 28, 63,126, 28,173, 91,183,118,229,121, 44,181, 8, +111,143,208, 7,155, 55,111,102, 2,139,129,129,161,172,197, 86,171, 30, 61,122,236, 94,190,124,121,120,185,114,229,224,239,239, + 31,224,230,186, 28, 66,200, 89,169, 84,154,224, 43,119, 90, 90,218, 89,119,190, 92, 81, 81, 81,245, 77, 38, 19,142, 31, 63,142, + 33, 67,134,100,216,125,190,188,249, 62, 77,239,208,161, 67,143,173, 91,183,134, 40,149, 74,156, 61,123,214,151,174,195, 27, 0, + 22,184, 59,145,145,145, 49,164,117,235,214,239, 1, 8,241,112,175,166, 74,149, 42, 45,143, 30, 61, 42, 35,132,224,198,141, 27, +232,223,191,127, 54,128, 79, 89,170, 97,248,151, 98,242,211, 79, 63,253,205,152, 49, 99, 2,155, 54,109,138,164,164, 36,135,224, +170, 95,191, 62,234,214,173,139,191,254,250, 11, 91,182,108,193,241,227,199,161, 80, 40, 80,169, 82, 37, 20,206,249, 4,248, 4, + 22,145,228,113,213, 34,142, 81,135, 12, 12, 12, 12, 15,164,144, 33,164,170, 76, 38,155, 31, 30, 30, 94, 47, 57, 57,249,117, 74, +233, 15, 46,231,131,251,245,235,119,118,213,170, 85,209, 55,110,220, 64,197,138, 21, 55, 82, 74,123,185,225,217, 64, 41,237,121, +237,218, 53,180,104,209,194,173, 69,139, 16, 50, 60, 42, 42,106,106, 65, 65, 65,158, 78,167,235,239,171,131, 57, 33,164,106,229, +202,149,247,108,220,184, 49, 76,173, 86,227,252,249,243, 15,204, 25,190, 90,181,106,123, 15, 31, 62, 28, 42,149, 74,113,228,200, + 17, 12, 27, 54,140, 57,195, 51, 60, 14,249,220, 31,192,248,196,196,196, 55, 71,141, 26,165,168, 89,179, 38,146,146,146,144,145, +145,129,156,156, 28, 28, 60,120, 16, 0, 16, 27, 27,139,216,216, 88, 92,188,120, 17,251,246,237,203, 47, 44, 44, 28, 65, 41,253, +233,177,126, 55, 76,104, 49, 48, 48, 60,228, 2, 57, 30, 78,206,226,253,250,245,107,180, 98,197,138,232,172,172, 44, 28, 58,116, + 8,125,251,246,125,135, 82, 58,195,205,125,111,167,166,166,126, 8, 0,103,206,156,113,245,209,242,232,156, 94, 26, 17, 84,161, + 66,133, 61,107,214,172, 9, 11, 13, 13,197,133, 11, 23,208,191,127,255,179, 90,173,182,118, 89,197, 93,173, 86,111, 77, 77, 77, +237, 36,147,201,112,224,192, 1, 12, 25, 50,132, 77,239,192,240,184,229,239, 8, 0,239,214,172, 89,243,165,145, 35, 71,242,241, +241,241, 72, 78, 78,198,159,127,254,137, 74,149, 42,225,246,237,219,216,177, 99,135, 41, 35, 35, 99, 62,128, 89,148,210,188,199, +254,165, 60,200, 21,171,193, 86, 54,103,156,140,147,113,222,125,221,150,115,231,206, 81, 17, 54,155,141, 38, 39, 39,211,173, 91, +183,210,168,168,168,179, 0, 2,220,113, 2, 8,168, 81,163,198,133,139, 23, 47,210, 91,183,110, 81,179,217,236,224,184,112,225, + 2, 5,176,235,126,195, 9,160,106,108,108,108,250,206,157, 59,233,197,139, 23,105, 84, 84,212,237,178,140,123,133, 10, 21,210, + 51, 50, 50,232,159,127,254, 73,195,195,195,211, 1, 84,101,105,137,113, 62,142,156,246,134,212,138,134, 13, 27,218, 22, 46, 92, + 72, 95,122,233, 37, 26, 31, 31,111, 3,240, 53,128,216, 7,169, 61, 30,181,141,141, 58,100, 96, 96,120,216, 80, 28, 60,120, 16, + 10,133,194,113,224,212,169, 83,206,243,104,229,123,104, 20,230, 19, 66, 90,116,237,218,117,207,194,133, 11,107, 88, 44, 14,215, + 14,236,220,185, 19, 0,140,101,208,240,188, 68, 8,105,221,165, 75,151, 5,161,161,161,245, 82, 83, 83, 39,151,101,196,111,220, +184,241,122,157, 58,117,102, 20, 20, 20,228,151,166,107,147,129,225, 95,104,196,185, 1, 96, 40, 33,228,163, 99,199,142,189, 3, +128, 2,152, 78, 41, 61,255, 95,123, 23, 76,104, 49, 48, 48, 60,108, 12,127,254,249,231, 93,157,197,125,154, 25,222,238, 56,223, +188, 91,183,110,174, 51,195,123,116, 78,191, 23,177, 5,160,243, 3,170,124,126, 0,240, 3, 75, 2, 12,255, 33,193,117, 22,192, +192,255,242, 59, 96, 66,139,129,129,225, 97, 23,188, 55, 1, 60,119, 31,247,231,195,253, 60, 91, 12, 12, 12, 12,143, 28,216,162, +210, 12, 12, 12, 12, 12, 12, 12, 12, 76,104, 49, 48, 48, 48, 48, 48, 48, 48,252,187, 64, 0,116,116,119,130, 82,186,221,103, 18, + 66, 58,150,246,193,222,248, 25, 39,227,100,156,140,147,113, 50, 78,198,249,248,113,122,227, 46,141,254,248, 87,192,199, 97,156, +132, 13,125,101,156,140,147,113, 50, 78,198,233, 11,167,189, 17, 79, 80,212,107,194,137,251,143,248,116, 4,228, 81,141,251,127, +133,243, 63, 57,189, 3, 33,196,241,178, 8, 33, 2, 0,129,150,193, 12,167,132, 16,241, 67,148, 9, 31,195, 3, 48,117, 22,125, + 35,242,183, 30,103,223,137,129,129,161, 84,101,135,196,169,178,181, 1,176, 17, 66,240,168,149, 37,101, 89,207, 61,136,184,255, +151, 57, 31, 23,240, 37,189, 48,137, 68,178, 53, 44, 44,172, 93,102,102,166, 96, 63, 14,185, 92, 14,142,227, 32,149, 74,245, 5, + 5, 5, 1,247,240, 49,190,142,140,140, 28,158,149,149, 37,112, 28, 7,165, 82, 9, 66,136,131, 51, 55, 55, 55,224,159,126, 41, + 21, 42, 84,200,209,235,245,126,174,199,149, 74,165,225,230,205,155,254,255,133,130, 82, 38,147, 61, 29, 18, 18, 18,148,145,145, + 65,197,197,111, 37, 18,137,184, 16,174, 53, 55, 55,247, 59, 95,249, 66, 66, 66, 14,135,132,132, 4,137,247, 19, 66,144,149,149, +149,155,150,150,214, 4, 0, 84, 42,213, 62,141, 70, 19,202,243, 60, 36, 18, 9, 36, 18, 9,116, 58, 93, 86,102,102,102, 11, 86, +109,253, 59,177,118,237, 90, 73,151,216,231, 42,241, 84, 95,151,227,104,160, 32,144, 60, 43, 81,157,218,146,252,245, 85, 95,238, +239,215,175,159,141,189,197,135, 7,133, 66, 49, 63, 50, 50,114,100, 97, 97,161,142, 16, 66, 9, 33, 40,170, 6,112,215,175,205, +102, 75,202,204,204,108,228,165,178,149,202,229,242,185, 81, 81, 81,195,116, 58,157,206,206, 71, 9, 33,136,142,142, 46,198, 7, + 0, 22,139, 37, 41, 35, 35,163,145, 47, 97,141,136,136, 88,170, 82,169,254,167,211,233,180,118, 97,228,220, 67,227, 92,153,255, +149,145,145,209,202,155, 48,144,203,229, 11, 34, 35, 35,159,181,199, 29,132, 16, 26, 30, 30,126,223,113,143,140,140, 28,166,213, +106,139,197, 61, 34, 34,194, 45,167,167,184,187,227,116, 14, 39, 33, 4,225,225,225,247, 29,206, 71,145,243,177, 23, 90, 0, 56, + 66,200,134, 22, 45, 90,180,221,181,107, 23,119,225,194, 5,174,122,245,234,176,217,108, 16,132,162,116, 29, 23, 23,167,190,135, + 10,124, 89,171, 86,173, 6,237,222,189,155,219,176, 97, 3,215,184,113, 99, 16, 66, 96,179,217, 96,179,217, 80,187,118,109,213, +125, 10, 4, 63,158,231, 95,147,203,229,109,172, 86,107, 13, 0,144, 74,165,231,141, 70,227, 46,171,213, 58,143, 82, 90,232, 11, +143,217,108, 86,167,167,167,223,245,110, 18, 19, 19,229,247, 26,182,128,128,128,253, 28,199, 37, 58, 94,176, 93,112,184,203,204, +226, 47,165,244, 90, 70, 70, 70,115, 79,156,193,193,193, 14, 78, 79, 28,174,199, 4, 65,184,150,158,158,222,220,139,200,234,219, +170, 85,171,192,237,219,183,147,219,183,111, 19,149, 74, 5, 65, 16, 96,179,217, 96,177, 88, 80,179,102,205, 82, 77, 11, 18, 20, + 20, 20, 48,113,226,196, 74, 79, 61,245, 20,214,173, 91,135,103,158,121, 6, 45, 91,182,188, 44,158,215,104, 52,161,231,206,157, +171, 18, 18, 18, 2,157, 78,135,188,188, 60,116,234,212,233, 95,159,185,154, 54, 40, 55,157,112,196, 49, 87, 20,181,218,178, 15, +158, 76,126,247,126,121,131,130,130,142,203,229,242, 72,241,187,114, 28,231,246, 91, 59, 31, 51, 24, 12,105,153,153,153, 13,188, +228,159, 10, 0,122, 72, 36,146,202, 60,207, 87, 3, 80,193,106,181, 70, 2,128, 76, 38, 75,147, 72, 36, 55, 44, 22,203, 69,147, +201,116, 5,192, 47,246, 9, 9,221,162, 75,236,115,149,136, 85,215,175,192, 40,116, 85, 87,156, 85, 85,247,215,196, 75,106,133, +238,215, 46,177,207,173,245, 85,108,253,131, 13,141,170, 0, 86,163,104, 65,233,151,236,243, 0,221, 15, 95, 44,128,158, 0,170, +202,100,178, 4,179,217,156, 9,224, 24,128,237,148,210,203,132,144,248,240,240,240, 31, 4, 65, 48,102,101,101, 61,231,110, 25, +161,102,141,202, 31,229, 56, 46, 14,118, 25, 33, 80, 91,210,129,163,183,203,164,130,146, 72, 36, 11,250,244,233,243,236,218,181, +107,213,199,142, 29, 83,215,168, 81,195, 81, 62, 9,130, 0, 87, 67, 68, 66, 66,137,107,127, 19, 0, 60,199,113,243,251,245,235, + 55,120,197,138, 21,234,155, 55,111,170, 99, 98, 98, 28,156,206, 34, 78, 68, 76, 76,140, 79, 97, 13, 13, 13,253,250,169,167,158, + 26,186,124,249,114,233,198,141, 27, 85, 97, 97, 97, 8, 13, 13,133, 76, 38,187,235,218, 22, 45, 90, 8, 94,232, 56,142,227, 22, +244,234,213,107,232,170, 85,171,212,135, 14, 29, 82,215,174, 93, 27, 18,137,228,190,227,222,187,119,239,193, 63,254,248,163,250, +244,233,211,234,202,149, 43,131,227, 56,112, 28,119, 23, 31,199,113, 40, 87,174,156, 79,156, 61,123,246, 28,188,122,245,106,245, +241,227,199,213,213,170, 85,115,188, 79,167,110,187, 82,135,243, 17,231,124,124,133,150,221,140,186,162, 69,139, 22, 93,118,237, +218, 37, 1,128,227,199,143, 35, 59, 59, 27,177,177,177,240,243,243,131, 66,161,128,193, 96,160,165, 44,108,190,182,139, 44, 41, + 0,172,255, 95,111, 92,147, 2, 47,167,155, 32,147,201,240,215, 95,127, 65, 34,145,208,251, 40,204, 90, 7, 4, 4, 44,255,233, +167,159,130, 27, 52,104,192,101,102,102, 34, 33, 33, 1,217,217,217, 77,118,239,222,221,240,185,231,158,123,142, 16,242, 12,165, +116,183,175,156,191,254,250, 43, 52, 26, 13,212,106, 53, 52, 26, 13, 76, 38, 19,185,231, 23,205,243,113, 55,110,220,136,240,243, +243,131, 32, 8,142,205,165,127,219, 1, 65, 16, 80,165, 74, 21,179,151, 2, 50,238,230,205,155, 17, 42,149, 10,148,210, 98,124, + 54,155, 13, 10,133,194,185,229, 0,155,205,134,196,196, 68,179, 55, 75,150, 40,178, 0, 96,229,202,149,136,138,138, 66, 68, 68, + 4, 52, 26, 13, 84, 42, 85,177,138,221,199,130, 28, 93,186,116,193, 7, 31,124,128, 89,179,102, 97,252,248,241,197, 10, 90,169, + 84,138,144,144, 16,252,254,251,239, 8, 8, 8, 64,124,124, 60,164, 82,233,191,223, 50,200,145,144, 3, 71,111, 57, 44,180, 79, +182,175,206, 55,109, 24,191,216,254,133,193,113,128, 32, 20, 85,157,132,128, 90, 45, 66,206,145, 83,201,147,125,120,159, 49, 55, +111,222,140,112,158, 89,189, 36,216,108, 54,196,198,198, 74,188,228,159,174,181,106,213, 90, 63,122,244,104, 89,229,202,149,137, + 76, 38, 3,207,243,224,121, 94, 76,143,241,148,210,120, 65, 16,218,166,165,165,209, 69,139, 22,125, 68, 8,233, 67, 41,253,213, +109,122,167,250,186, 5, 70,161,235,158, 19,104,210,175,227, 91,248,125,205,196, 38,173,234, 11,240, 87,235,175, 2,120,100,133, + 22, 33,164,106,173, 90,181, 78, 28, 58,116, 72,105, 54,155,209,180,105,211,131,132,144,134,247, 50,131, 59, 33, 36, 24,192, 39, +147, 38, 77, 26, 58,122,244,104, 73, 80, 80, 16,228,114, 57, 10, 10, 10,112,245,234,213, 97,223,125,247, 29, 37,132,124, 6,192, +255,198,141, 27,205, 14, 31, 62,140,118,237,218,189, 2,224,181,187, 21,129, 36,110,223,225,235, 17,226,126,207, 46,117,100,205, + 27,199,167, 21, 53,200, 92,175,166, 16,108, 66,210,161, 19, 73,141,124, 8,227, 71, 79, 63,253,244,144,181,107,215,250, 1,192, +146, 37, 75,240,244,211, 79, 35, 36, 36, 4,106,181, 26, 50,153, 12, 82,169,180,216,175, 23, 11,145, 4,192, 71, 3, 7, 14,236, +183, 98,197, 10,127, 0, 88,177, 98, 5,122,247,238,141,208,208, 80,248,251,251, 67, 46,151, 67, 34,145,148,250,219,132,134,134, +126,221,178, 73,147, 17,203,151, 47, 7, 0,188,243,234,171,120,234,137, 39,224,167, 86, 65,173,146, 67,124, 23,114,137, 20, 79, +190, 60,206, 91,188, 57, 0,115,158,126,250,233, 1,171, 86,173,242, 7,128, 99,199,142, 33, 61, 61, 29,145,145,145, 80,169, 84, +144,203,229,142, 56, 19, 66,160, 82,169,124,138,251,211, 79, 63,221,239,199, 31,127,244, 7,128,101,203,150,161, 75,151, 46,142, +184, 43, 20, 10,200,100,178, 98,155,171,232,116,199,217,167, 79,159,126,171, 87,175,246, 7,128,239,190,251, 14, 29, 59,118, 68, +112,112,176,227,125,138, 92,165,249, 70,143, 50,231, 99, 45,180, 68,223,169,200,200,200, 1,123,246,236,225,156, 68, 2, 20, 10, + 5, 20, 10, 5,228,114,185,163,251,176, 20, 5, 14,137,140,140, 28,190,123,247,110,199, 77, 38,122,151,233,186,212, 21,184, 19, +127,199,118,237,218,253,184,105,211, 38,165, 76, 38,131, 94,175,199,217,179,103, 17, 24, 24, 8,185, 92,142, 94,189,122, 73, 90, +180,104, 17,218,182,109,219,117,132,144,193,190,140,104,160,148,194,207,207,175,152,208,186,223, 46,102,149, 74,133,141, 27, 55, + 66, 34,145,184, 45,192,156,255, 71, 68, 68,248, 18,111, 40, 20, 10,236,223,191, 31, 18,137, 4, 82,169, 20, 60,207, 67, 42,149, + 98,243,230,205,120,227,141, 55,144,153,153, 9, 66, 8,164, 82, 41,252,253,189,246,122,146,144,144,144, 32, 81,100,137, 34, 72, +165, 82, 65, 42,149, 18,158,231,137,216,181, 71, 8, 33,190,246,185,115, 28,135,239,191,255, 30,179,103,207,198,132, 9, 19,176, +116,233, 82,212,173, 91,215, 89,132, 34, 63, 63, 31,193,193,193, 8, 14, 14,134, 82,169,188,231,180,240, 40,193,245,237,204,157, +183, 80, 13,129,162,200, 9, 68, 0, 4,128,130, 66,160, 2,210,146,175,226,253, 15, 62,246,185,246, 81, 40, 20,216,183,111,159, + 67, 12,241, 60, 15, 66, 8,156, 5,146,184, 69, 69, 69,121,229,147,201,100, 83,126,254,249,103,249,247,223,127,143, 85,171, 86, + 57,210,150, 70,163, 65, 80, 80, 16, 66, 67, 67, 29, 91, 92, 92, 28,249,230,155,111,100,117,235,214,157, 2,224, 87,247,223,156, + 6,170, 43,206,170,218,175,227, 91, 0,128,126,111, 81,228, 92,254,176, 30,151, 59, 57,240, 81, 22, 89,117,234,212,217,187,127, +255,126,165, 78,167,131, 32, 8,248,245,215, 95,213, 29, 59,118,220, 67, 8,105, 85, 90,177, 85,161, 66,133,141,251,247,239,111, + 17, 30, 30,142,188,188, 60,228,231,231,195, 98,177, 64, 34,145, 32, 62, 62, 30, 31,125,244, 17,233,213,171,215,216, 97,195,134, + 25, 84, 42,149,104,217,168,224,169, 60,114,198,162, 79, 23, 7, 81, 90,148,126,168, 64,139,253,102,167,223,192,171,175,191,239, + 83, 24,203,149, 43,247,210,186,117,235,252,156, 45, 75,206, 34,192,185,140, 18, 55, 79,194,192,110,213,224,202,151, 47, 63,226, +135, 31,126,112,112,134,133,133, 57,202, 37,158,231,193,113, 28,246,236,217,131,153, 83, 38, 33, 56, 60, 6, 11, 63, 93,226, 53, +156, 17, 17, 17, 75,187,118,237,250,191,101,203,150, 57,142,213,169, 88, 17,221, 90, 60,129,136,176, 0,132, 5, 23,149,109, 84, + 32, 56,117,241,186,215,250, 8, 0, 87,174, 92,185,231,214,172, 89,227,231,220, 32, 20,227, 10, 0, 58,157,206, 97,197, 55,153, + 76,104,212,168,145, 79,113,119,230, 20,173,109,162,104,115, 45,235,197,134, 76, 73,156,229,202,149, 27, 33, 10, 97, 0, 8, 9, + 9, 41,198, 33,149, 74,177,230,247,229,119,213, 13,247,203, 89,218,239,238,202,121,227,198, 13,204,152, 49,195, 81, 38,137, 86, + 61, 66, 8, 98, 99, 99,177,112,225,194,146, 56,221,161, 49,128,112,167,125, 19, 0,185,211,111, 6,138, 86,152,112,189, 78, 60, + 46, 5, 80,207,126,206, 6,160, 0, 64,144, 27, 62, 79, 60,153, 40, 90, 70, 40,220,229,122,215,231,184, 23, 90,155, 55,111,166, + 0,176,113,227,198,118, 61,123,246,220,151,153,153, 41, 92,184,112,129, 59,118,236, 24,164, 82, 41, 34, 34, 34,208,184,113, 99, +177, 91, 13, 82,169, 20, 26,141,134, 4, 5, 5,165,137, 21,175,248, 18,157,251,218,157, 4, 13,151,157,157, 45,108,219,182,141, + 91,209,167, 51, 76, 20,168,255,222, 76,116,233,222, 29, 91, 98,229,144, 0,104,114, 33, 19,106,181,154,151, 74,165, 22,241, 99, +136,156,206,190, 91,174, 34,137, 16,226,175,209,104,190,249,229,151, 95,148, 28,199,161,160,160, 0,130, 32,160, 69,139, 22,224, + 56, 14,103,206,156,193, 59,239,188,131,245,235,215,227,231,159,127, 86, 53,104,208,224, 27, 66, 72, 13, 74,105,129, 83, 33,182, +221, 93, 34,245,247,247,135, 90,173,118, 8, 45, 49,206,206, 38,112,241,122, 74,105,114,102,102,102,195,146, 56,109, 54, 27,122, +247,238, 13, 66, 8, 36, 18, 73,177,194,199,249, 87, 38,147,225,204,153, 51,119, 37, 66,119, 2, 81, 16, 4,180,108,217, 18, 0, +160, 86,171,225,231,231, 39,174,251, 6, 0,168, 95,191, 62, 76, 38, 19,194,194,194,112,254,252,121,119, 5,120, 49,206,140,140, + 12,154,146,146, 66, 86,172, 88, 1,169, 84,138,208,208, 80,168,213,106,178,124,249,242, 73, 50,153, 44,206, 96, 48, 8, 38,147, + 9,114,185,124,161,104,221,226,121, 94,155,151,151, 23,234,137, 83, 34,145, 96,244,232,209,120,243,205, 55,177,116,233, 82,188, +248,226,139,119, 89,188, 12, 6, 3,194,194,194, 28, 98,203,151,184,223,191, 16,122,192,156, 2,197,217,227, 91,112,238,244,118, + 8, 54, 1, 54,129,130, 82, 27, 4, 43,112,108,219,193, 42,119,174,165,196, 82, 80,192,222,193,161,200, 43,180,182, 13, 83, 84, + 3,176, 97,103,166,113,190,183,244,201,243, 60, 44, 22, 11,126,249,229, 23, 92,189,122, 21, 91,183,110,133, 94,175,119,188,199, +102,205,154, 97,196,136, 17,110,133,150, 43, 39,165,116,217,237,219,183,235,183,108,217,146,228,230,230, 34, 55, 55, 23,122,189, + 30, 54,155, 13, 86,171, 21, 60,207, 67,169, 84, 66,165, 82, 33, 50, 50, 18, 6,131,129, 26,141,198,101,158, 56, 5,129,228,233, +254,154,120,233,247, 53, 19,155,244,123,139, 98,237,108,130, 74,229, 21,186, 63,142,250,143,216,176,119,124, 39, 0, 84,176,107, + 7, 14,160, 22,155,144,249,230,164, 79,198, 62,244,111,116,183,200, 10,213,235,245, 40, 40, 40, 42, 30,228,114, 57,214,174, 93, + 27,214,163, 71,143,221,132,144,214,158,196,150, 59, 78,127,127,255,120,137, 68,130, 51,103,206,224,243,207, 63,199, 31,127,252, +129,180,180,180,156,152,152,152,192,182,109,219,114,175,190,250, 42,234,215,175,143,111,191,253, 86,233,141,147, 82,138, 27,151, +247,224,198,149,189, 16, 4,234,100, 21,119,255,159,250, 24,119,173, 86,107, 56,113,226,132,223, 87, 95,125,133,136,136, 8, 36, + 36, 36, 64,173, 86, 67,169, 84, 22,171,100,157, 43, 94,111,121, 83,175,215, 27,110,220,184,225,247,227,143, 63, 34, 52, 52, 20, + 21, 42, 84,128, 90,173,134, 92, 46,119, 52, 8, 86,172, 88,129,149, 31, 12,193,141,139,167,209,187, 91, 39,175,225, 84,171,213, +255, 91,182,108, 89, 49, 19, 72,100,112, 48,120, 41, 7,137,148, 32,184, 67, 31, 0, 64,206,159, 63,121,156, 29,210,133,147, 20, + 20, 20, 24, 14, 29, 58,228,119,244,232, 81, 8,130,128, 10, 21, 42, 64,167,211, 33, 32, 32,192, 17,255,109,219,182,161, 87,175, + 94,248,254,251,239,209,172, 89, 51,175,113, 47, 44, 44, 52,156, 62,125,218,239,135, 31,126, 64, 72, 72, 8,202,149, 43,231,136, +187,184, 73,165, 82, 72, 36, 18, 36, 38, 38, 34, 47, 47, 15,126,126,126, 94,191,209,177, 99,199,252,126,248,225, 7, 4, 7, 7, + 35, 46, 46,206, 97,113, 19,197,209,236,197, 31, 20,227, 80,146,232,251,230, 44,237,119,119,229,236,221,187, 55, 42, 85,170,132, +128,128, 0,104, 52, 26, 7,119, 73,156,162, 22, 1,208,182, 91,183,110,187, 92, 62, 97, 56, 33,100,147,211,243,187, 19, 66, 54, + 57,255,122,186,206,254,183,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220,191,127,255, 74, 79,124,158,120, 38, 77, +154, 84,107,214,172, 89, 51,156,175,119,243, 28,207, 22,173,110,221,186, 17,123, 36,121, 0,168, 94,189, 58,178,179,179,161, 80, + 40,208,184,113, 99,100,102,102,194,207,207, 15, 50,153, 12,148, 82,140, 29, 59, 86, 50,126,252,248, 8,142,227, 96,181, 90, 29, + 5,191,135,190,118,129,227, 56, 52,111,222, 28,103,237, 61, 66, 93,186,119, 71, 92, 92, 28, 68, 39, 15,165, 82,137,177, 99,199, +146, 55,222,120,131, 23,173, 25,148, 82,232,245,122, 68, 71, 71,171, 74,232,146,123,117,221,186,117,129,162, 73, 94,236, 58,147, + 72, 36,184,112,225, 2,230,204,153,131, 97,195,134,225,214,173, 91,136,137,137,193,155,111,190,233, 55,107,214,172, 87, 1, 76, +245, 86, 32,251,249,249, 57, 68,150, 90,173,198,171,175,190,202,183,104,209, 34,194,207,207, 15,254,254,254, 16,187, 1,109, 54, + 27, 42, 86,172,232, 85,154, 11,130,128, 45, 91,182,128,231,121,175, 22, 45,123, 2,244,137,243,208,161, 67, 14,145,230,220, 74, + 34,132,224,236,217,179, 14, 81,231, 3, 39,229, 56, 14, 26,141, 6, 81, 81, 81, 80,169, 84, 80,171,213,228,199, 31,127,124, 55, + 33, 33, 33,250,141, 55,222,224,242,243,243,185,230,205,155,227,233,167,159,230, 5, 65,128,217,108, 70,173, 90,181,188, 90,222, +118,237,218,133,207, 63,255, 28, 47,190,248,162, 91,139,150,232, 44, 25, 16,240,143,143,133, 40, 51, 8, 0,204, 86, 11,116,133, +122, 71,215,174,205,102,195,233,157, 39,171, 92, 59,121,185,214,166, 31,191,151, 2,128, 97,231, 79,206,183, 69, 63,189,120,117, +213,182, 33,178, 67, 59,179,205,135,188, 89, 10,199,141, 27,135,201,147, 39, 99,224,192,129,216,182,109, 27,222,121,231, 29, 60, +247,220,115,197, 44, 90,190,192, 98,177,124,241,204, 51,207,188,184,118,237,218,106,111,189,245, 22, 39, 90,180,212,106,181,232, +227, 5,163,209, 8,189, 94,143,139, 23, 47, 10,207, 63,255,252, 37,147,201,244,133, 39, 62, 43, 81,157, 82, 43,116,191, 86,140, +227, 42,105,175,127,236,223,242,137, 10,122,162,106,152,215,167,106, 71,218,117,120,133, 96, 80, 10, 42, 0, 2, 5,140, 70, 45, +198,142,125, 69,242, 79,125, 39,103,145,101, 48, 24,112,226,196, 9,180,107,215, 14,183,111,223,198,249,243,231, 81,165, 74, 21, + 44, 95,190, 60,124,240,224,193, 37,138, 45, 87,156, 62,125,122, 82,189,122,245, 22, 20, 22, 22,102, 23, 22, 22, 46, 0,176,146, + 82,154, 75, 8,169,113,245,234,213, 69, 91,182,108,105,245,254,251,239, 75, 92,124,116, 36,158,204,163, 22,139, 21,122,189,177, + 68,129, 37,238, 83, 42,248, 26,119, 90,173, 90, 53,244,232,209, 3, 82,169,212,209, 88,115,238, 54,115, 21, 92, 37,149, 31, 0, + 4, 66, 8, 98, 98, 98,208,181,107, 87,200,100,178, 98,156, 98,197,218,181,107, 87,140,155,250, 30,190, 24,215, 30,159, 63, 83, + 5, 29,167,167,149, 24, 78,157, 78, 87,184, 99,199, 14,213,155, 47,190,136,122,149, 43, 35, 44, 32, 0,229, 35,195,161, 82,200, + 33,115, 14, 19,241,110,100,167,148, 82, 66,136, 32,145, 72, 80,187,118,109,164,165,165,225,250,245,235,184,126,253, 58, 56,142, + 67,203,150, 45, 29, 86,152, 43, 87,174, 96,234,212,169, 48, 26,141, 62,199,189,114,229,202,104,223,190, 61,228,114, 57,212,106, +117,177, 46, 67,241,157, 22, 20, 20,160, 82,165, 74,216,176, 97, 3,170, 86,173,234,149,179,122,245,234,104,211,166, 77,177,247, +169, 82,169, 28,245, 6, 0,220, 62, 84,232,120, 70,108,108,108,169, 56,183, 30,190,133,175,182,237,128,209, 36, 32, 95,103, 41, +118, 67,116, 88, 0,246,254,240,150, 79,113, 23, 57,191,252,242, 75,228,230,230, 58,202, 32,209,104, 34, 26, 41,202,149, 43,135, + 37, 75,220, 91, 50,157,180, 8,241,240,253,186,251,216,160, 18,175, 19, 19,151, 98,214,172, 89, 51, 92,239,247,198,231,124,222, +229,126,147,139, 56, 75,243,169,235, 80,172, 31,196,204, 16, 27, 27, 11,209, 15, 68,204, 40,142,130,212,106,197,250,245,235, 17, + 17, 17,225,216, 2, 3, 3, 61, 38,108,209,143,104, 92, 70,145,139,208,239, 49, 50,220, 0,208, 45,131, 58,252, 72,108, 54, 27, +214,173, 91, 7,103, 33,227,239,239, 95, 98, 55,146, 92, 46,111,219,184,113, 99,206,104, 52,222, 37,178,102,205,154,133,193,131, + 7,163,106,213,170, 16, 4, 1,133,133,133,104,215,174,157,116,225,194,133,109, 75, 35,180,212,234, 34,191,127,147,201,132,157, + 59,119, 34, 56, 56, 24,161,161,161, 8, 9, 9,129,191,191,191, 56,114,146,122, 19, 27,148, 82,244,238,221,219,145,248,156,173, + 88,174,162,107,255,254,253, 62,117,201, 81, 74,241,196, 19, 79, 64,163,209,192,207,207, 15,126,126,126,216,178,101,139,227,154, + 38, 77,154, 64, 16, 4, 68, 68, 68,224,192,129, 3, 37,118,127, 82, 74,169, 76, 38,115, 92, 47,149, 74,201,242,229,203, 39, 37, + 38, 38, 70,191,254,250,235,156, 68, 34,193,241,227,199,113,238,220, 57, 84,168, 80,193,103,159,173,220,220,220, 59,147, 38, 77, +178, 77,154, 52, 9, 0, 80,171, 86, 45,228,230,230,166,139,231,243,243,243,179, 58,119,238, 92,204,111, 35, 51, 51, 51,235, 95, + 47,180, 4, 1, 86,179, 21, 58,131, 1,133, 5, 58,135,117, 40, 61, 37, 45,232,173, 55, 94,147,206, 25,251, 44, 0,224,141,249, +159,162, 96,233,223, 5,217, 79,111, 12,138,232,243,201,170,137, 0,122,121,169,124, 96, 52, 26, 17, 31, 31,143,195,135, 15,163, +160,160, 0, 29, 59,118, 44,102, 49, 21,223,169, 55, 19, 61,165,212, 68, 8,105,209,189,123,247, 35,243,230,205,171, 88,163, 70, + 13,162,213,106,161,211,233,224,252,123,250,244,105,186,114,229,202,107, 58,157,174, 57,165,212,228,137,111, 75,242,215, 87,187, +196, 62,183,246,143,227,146,238, 17,149, 46, 5, 36,231, 84,180,102, 37, 43,180,249,250,139, 6, 27, 61, 7,106, 3,108, 16, 64, +173, 2,108,246,110,175,127, 10, 42,149,106,209,222,189,123, 67, 13, 6, 3,142, 29, 59,134,161, 67,135,154, 50, 51, 51,229, 0, +240,191,255,253,207,180, 98,197, 10,121,165, 74,149,176,124,249,242,240,167,159,126,122, 13,128,218, 62, 22,244,223, 3,248,222, +245,120,104,104,232,194, 91,183,110,181,117,246,249, 17, 27,171, 0,220, 54, 42,169, 0, 88, 44, 22,232,245, 70,228,229, 21,192, +100,182,216,203, 76, 1, 54,155,213,254, 43,192,106, 47, 71,229, 50,222,191, 97,157,232, 66, 74, 41, 56, 66,114,143,158,190, 83, +206, 83,185,228,169,139,203, 23,107,150, 27,216,196, 81,102,161,161,161,144, 74,165,248,254,251,239,113,106,223, 22,200, 37, 20, + 54,171, 5, 86,139, 25, 54,139, 9, 82,137, 4,127, 28,191,142, 78,213,189, 15,228, 38,132,208,176,176, 48,116,107,214, 12,221, +155, 53, 43, 26,222,198,243,240, 83, 40,160,150, 41,139, 44, 89, 0,168,141, 3,124, 75, 74,130, 24,206,200,200, 72, 28, 61,122, + 20,227,198,141,195,236,217,179,161, 82,169, 28,163,159, 47, 92,184,128,213,171, 87,163, 83,167, 78,165,142,187,104,193,155, 56, +113, 34, 82, 82, 82, 48,127,254,124, 52,108,216, 16, 82,169, 20,185,185,185,104,222,188, 57,210,210,210,124,226,116,238,222,147, +203,229,197,172, 79,162, 0, 44,237, 55,114,230,124,182,119, 52, 54,238, 91, 9, 2,130,131, 63,188, 86,172, 46, 90,178,106, 79, +169, 57, 39, 79,158, 92, 44,156,190, 88,179, 74,209, 48,218,228,139,216,114,186,238,152,104,108,157, 56,113,226,219,132,144, 77, + 19, 39, 78,124,123,230,204,153,103,125,225,243,112,126,179,168, 11,157,142, 29,243, 89,104, 81, 74,169, 92, 46,135, 32, 8,197, +196,149,171,227,173,104, 10,116, 54, 53,122, 19, 5,130, 32, 56, 18,133,107,179, 77, 34,145,224,192,129, 3, 56,112,224, 64,177, +227, 95,125,245, 85,137, 21,185,213,106,173,225,239,239, 95,204,154, 37,147,201, 48,113,226, 68, 12, 29, 58,212, 33,178,100, 50, + 25,190,251,238, 59, 52,106,212, 8, 38,147,169,134, 23,127, 21, 93, 84, 84, 20, 39, 22, 68, 26,141,134,140, 27, 55, 78, 98,181, + 90, 29,239, 68,220, 68,223, 53,111,137, 70, 28,197,178,117,235, 86,159, 44, 90,190,250, 40, 81, 74,113,242,228,201, 98,226, 77, + 28, 53, 3, 0, 39, 79,158,116,248,111,249,194, 41,145, 72, 96,179,217,160, 82,169,136, 76, 38, 35, 50,153, 44, 78, 20, 89, 18, +137,196,241,189,157,125,246,188,197, 61, 57, 57,185, 93, 73,231,211,211,211, 31,219,105, 28,204, 22, 11,244, 58, 19, 10, 10,245, +152, 50,243,219,162,131, 83,112, 8,192,161, 22, 47,141,195,232, 46,157,218,187,248, 1,248, 82,208, 56, 42,199,117,235,214, 65, + 42,149, 98,195,134, 13, 8, 8, 8, 64,207,158, 61, 17, 16, 16,128,183,222,122, 11, 3, 7, 14,244,217,162,101, 79, 75,121,132, +144, 22,175,190,250,234,145,143, 63,254,184,124,185,114,229, 96, 50,153, 96, 54,155, 97, 50,153,112,245,234, 85,172, 92,185,242, +182, 78,167,107, 65, 41,205,243,198,183, 37,249,235,171,235,119,191,145,210,113,224,211,250, 11,105,191, 35, 53, 53, 11, 86,107, + 50, 4,155, 21,102,107,209, 8,102,155,213, 10,171,213, 6,153, 76, 18,240,241,135,175,109, 19, 64,193,113,196,212,175, 95,191, +167, 30,214, 55, 10, 10, 10,170,149,145,145,129,203,151, 47, 99,216,176, 97,169, 89, 89, 89,231, 1,116, 0,128,172,172,172,189, + 67,135, 14,173,177,108,217,178,168,132,132, 4,248,249,249, 5,248,240,125,252, 0,140, 6,208,217,238, 7, 34, 34, 27,192,180, +240,240,112,197,177, 99,199,238,178,254,239,222,189, 27, 0, 14,185, 55, 25,216, 45, 90, 6, 3, 50,178,114, 48,242,165,119, 29, +166, 4,128, 22, 19, 23, 20, 20,163, 94,134, 18, 0, 50,211,174,226,217,145,227, 20,222, 26, 4,238, 42,194, 82,248,232, 56, 91, +138, 28,105,212,207,207,175,168,251,109,195, 74,108,254,228, 37,192,102, 6,181,232, 1,179, 14, 48, 23, 66, 48,233, 64,100, 42, +192,162,247, 73,104,249,249,249,193, 79,165, 66, 68, 80, 80,209, 36,144, 18, 9,164, 82, 30,130, 5, 32, 54,226, 16,164,130,205, +167,180, 78,195,194,194, 32, 8, 2, 84, 42, 21,110,220,184,129,209,163, 71,195,108, 54,163,119,239,222, 48,153, 76, 48, 24, 12, +208,235,245, 72, 76, 76,132, 78,167,243, 41,238, 98, 57, 47,246,254,188,246,218,107,104,212,168, 17,166, 78,157,138, 9, 19, 38, + 32, 49, 49, 17,163, 70,141,194,202,149, 43, 81,171, 86,173, 18,121,157,223,167,200, 41,126, 23,215, 46, 62, 0,165,254, 70,174, +156, 69,227, 3,112,215,119,127,229,153, 14,165,230,156, 53,107, 22, 50, 50, 50,238,178,100,137,255, 99, 99, 99,177,120,241,226, +123,237,250, 23,173, 71,145,238, 12, 98,110, 44, 81,141, 81,228, 59,101,156, 57,115,230,217,153, 51,103,118, 39,132,108,154, 57, +115,102,247, 18, 44, 90,221,188, 88,188,186,161,200, 39,203, 39,240, 46,125,163,109,157, 45, 37, 98, 69, 42, 86,232,206,133,188, + 90,173,198,250,245,235, 33,142, 0,113,190,166, 36,161,245,107,184,221,116,108,183,100, 57,239,247,232,209, 3, 9, 9, 9,197, +172, 89, 42,149,170,196,196, 35, 8, 2,110,222,188,137,179,103,207,162,105,211,166,200,203,203,131,148,227,240,198,233,211,168, +249,204, 51, 48,217, 45, 52,114,185, 28, 47,190,248,162, 79, 14,237,215,175, 95, 15,118,222, 15, 11, 11, 75,106,213,170, 85,236, +225,195,135, 29, 14,242,246,110, 53,135,224,240, 69,196, 80, 74,209,183,111,223, 98, 86, 44,103,145,229,188,253,254,251,239, 62, +117, 29, 82, 74,209,170, 85, 43,135, 53,203,223,223, 31, 63,255,252,179,227, 91,181,110,221,186,200,159, 33, 50,210, 39, 78, 49, + 30,118, 7,120, 24, 12, 6,161,160,160,128, 59,118,236, 24,228,114,185,195,130,167, 82,169,160, 84, 42,161, 80, 40,238,105, 4, +209,127, 1,148, 10, 48, 89, 44,208,235,245, 40, 44, 44,154, 89,228,234,153,117,197,133,152, 49,255,158,249, 69,171, 85, 65, 65, + 1,254,248,227, 15,252,244,211, 79,104,216,176,225, 93,206,240,190, 88,180,156,210, 83, 6, 33,164,229,248,241,227, 15, 78,159, + 62, 61, 38, 36, 36, 4,102,179, 25,183,110,221,194, 55,223,124,147,162,211,233, 90, 82, 74, 51,124,127, 9,128,197, 98,133, 65, +103, 68, 94,126, 1, 62,248,240, 59,143, 73, 15, 0,178,211, 47,162, 71,207,254,242,135,249,157, 82, 82, 82, 94,111,217,178,229, +135, 5, 5, 5,185, 58,157,174, 63,128, 57,206,134,195,172,172,172, 86, 61,123,246,156, 23, 18, 18,210, 48, 61, 61,253,109, 31, + 40, 39,222,184,113,227,237,248,248,248, 98, 7,237,214,199,170,233,233,233, 67, 90,183,110,253, 30,128, 16,167,211,254, 0,182, + 2, 88,236, 41, 45,137, 93,135,133,133,122, 4, 4, 69, 35,249,250, 46,175, 1,145, 73, 12,160,130,224,181, 1,232,206,138,229, + 92, 62,149, 34,253, 80,209, 39, 80,172,176,159,234,251, 12,158, 26, 61, 11,106, 41, 48,227,217, 22, 72, 12, 2,160, 10,129,172, +245, 91, 32, 65,246,119, 52,250, 23,159,248, 39,124,254, 57,142, 95, 46,154, 25, 38, 46, 60, 28,227, 7, 14, 4,181, 0,251,207, +157,195,170, 29, 59, 48,176, 93, 59,168,149, 74,159, 27, 44, 98, 35,252,234,213,171,216,191,127, 63,170, 87,175,142, 43, 87,174, + 20,155,134,130, 82,234, 83,252, 41,165, 84, 28,196,164, 80, 40, 32,149, 74,145,154,154,138,238,221,187, 59, 26,250,187,118,237, +194,248,241,227, 49, 98,196, 8,180,109,219,214,173,223,172, 43,103,120,120,184,195,128,224, 58, 80,193,185, 59,183, 52,223,200, + 29,167,136,123,253,238,206,156,211,167, 79,119, 59,160,194, 23, 78,103, 45, 82, 2,142,185, 88,147, 32,250, 75,137,194,200,117, + 31, 64,176,120,108,226,196,137,111,251,122,159,243,190,104, 17, 43, 77, 23,166, 67,104,117,235,214,141,184,171,108, 69, 51,178, + 59,104, 52, 26,140, 25, 51, 6,147, 39, 79, 70, 88, 88,152, 87,223, 26, 81,201,150,132, 95,126,185, 59,179,109,216,176,193, 91, +215,225,133,192,192,192, 70,237,218,181, 67, 94, 94, 30,110,223,190, 13,141, 70,131,154,159,124,130,211,163, 71,163,222,231,159, +131,107,223,222, 49,217,234,233,211,167,161, 82,169, 46,148,214,130,224,239,239,143,224,224, 96, 71,159,187, 40,184,156, 44, 90, +212,135,196,136, 95,127,253,213,109,171,241, 94,124,180,196, 66,224,224,193,131,197,252,179,156,133,207,193,131, 7, 29, 22, 45, +241, 54, 95,186,188, 84, 42, 21, 21,249,212,106, 53, 66, 66, 66,160, 80, 40,160, 82,169,138,137, 44, 95,172,121,222, 38, 36, 85, +169, 84,135, 53, 26, 77,144,120, 94, 42,149,162,160,160, 32, 55, 43, 43,171,201,191,186,235, 16, 20, 86,179, 21,122,189, 1,133, + 5,250, 50,231, 23, 7,166,172, 95,191, 30, 79, 60,241,196, 93, 34, 75,124,215,247,208, 98, 76, 34,132,180, 93,176, 96,193,161, +185,115,231, 6, 23, 22, 22,226,219,111,191,205, 43, 44, 44,108, 75, 41, 77, 42, 21,151, 64, 97, 49,155,161, 51, 24,161, 45, 44, +122, 7,127,157, 93,247,136, 9, 98,186, 18,192, 74, 87,139,161,211,249,191, 0,116, 47, 5,229, 19,241,241,241, 72, 77, 77, 45, +118,240,230,205,155,176,217,108, 70,251, 60, 89,207, 57, 61, 79, 66, 41,181,121, 43, 59,204,246,174,195,194,194, 34, 43,136, 65, +155, 89, 54,233,212, 46, 54, 60,249,100,221, 75, 23,143, 56,210, 89, 34,145, 96,236,216,177, 56,125,234, 20, 58,196,228, 35, 49, +202, 31, 52, 63, 25,178,246,239,227,100,134, 10,115,230,253, 90,106,238,213, 78,131,125,230,172, 94,237,246,220, 95,189,122,149, + 42,238,151, 46, 93,130, 74,165,130,205,102,187,171,190, 41,109,252,157, 5,204,188,121,243, 48,126,252,120,124,247,221,119, 56, +125,250, 52,234,213,171,135,142, 29, 59, 34, 61, 61, 29,167, 78,157,130,209,104,244, 57,156,206,126,115,151,174,157,195,246,253, +191,225,102,210,117,164,164,222,190,231,239,238,204,233, 42,180,214,111, 63,129,190,157, 26,220, 19,231, 7, 31,124,128,244,244, +244, 98,150, 44,231, 1,100,158, 44, 90,174, 90,196, 5,153, 46,190, 80,226,190,201, 69,244,184,238,187, 94, 15, 0,233, 0, 36, + 94,238,115,221,207,156, 57,115,230, 78,209, 18,102,231,149,120,243,207,114,219,117, 40,138, 34, 49,163,184, 90,170,196,255, 26, +141, 6,254,254,254,240,247,247, 71, 64, 64,128, 87, 75,145, 40,180, 90, 93, 43, 40,230,235, 37, 90,182, 0, 96,196,136, 17,119, + 89,180,156, 39,246,116, 7,163,209,184,107,215,174, 93,245,123,244,232, 33,185,112,225, 2, 36, 18, 9, 4, 65,128,169, 89, 51, +212,251,252,115,156,121,237, 53,180,185,113, 3, 6,179, 25, 74,165, 18, 91,182,108, 49,235,116,186, 93,165, 45, 55,156,133,150, + 70,163, 65, 96, 96,160, 67,104,248,162,210,197,204, 91,146,255,131,184, 57, 15, 6,240, 37, 83,139, 21,170,179, 95, 14, 33, 4, +122,189,222,225,212,233,139,213,209,185,235,208, 57, 3,114, 28,135,160,160, 32, 71,225, 33, 90,180,124,181,230,121,155,144, 84, +173, 86, 7, 92,188,120,177,146, 56,253, 68,102,102, 38,218,183,111,127,249, 95,111,210, 18, 0,179,213,134, 66,189, 1,133,122, + 93,153,209,138,105,237,251,239,191,199,213,171, 87, 97, 54,155, 49,115,230,204,187, 4, 86,105,156,225,221,164,171,171, 13, 26, + 52, 16,158,124,242, 73, 28, 60,120, 16, 10,133,194, 66, 41, 45,245,252, 87, 2, 21, 96,182, 90, 97,208,235, 81,168,213,254, 87, +140,153, 14, 85,125,254,252,121,152, 76, 38, 76,157, 58,213,118,228,200,145,157, 0, 94,178,127, 67, 14,192,144, 54,109,218, 76, +235,214,173, 91, 16, 33,228, 21, 74,233,119, 37,229,115,139,213, 46,218,203,240, 61,138,105,201, 83,153,116, 47,211,172, 56, 87, +172,130, 32,224,133,231,159, 71,199,152,124,244,105, 24, 14,237,157,203, 80, 7,134,131, 4, 85,192,156,121,191,226,236, 53,159, + 93, 49, 41, 0, 60,217,166, 23,234, 86,191,123,122,176,150, 29,138,218,100,123,255, 56,140,180,204,148, 82,199, 93,171,213,122, +180, 92,249,106,209, 18, 57,197,105, 86,164, 82, 41,234,215,175,143, 42, 85,170, 96,231,206,157,104,208,160, 1,174, 92,185,130, + 43, 87,174,224,198,141, 27, 56,125,250, 52,114,114,114, 74,253,141,126,222,186, 10, 57, 5,217,144,203,228,200,206,205,196,205, +228,235,136, 12,141,186,239,239, 46,162, 90,183, 15, 0, 0, 49,225,129,165, 18, 90,206,156, 31,125,244,209, 93,226,189, 12,166, +236, 57,236,101,191,180,247, 63, 52,240, 30,172, 68,250,144,144, 16,149,115,255, 42,199,113, 8, 12, 12, 36,179,103,207,150,112, + 28, 7,127,127,127, 4, 6, 6, 66, 52, 23,122,131, 92, 46,215, 87,168, 80, 65, 37, 38, 68, 49, 35, 6, 4, 4, 72,102,207,158, + 77,190,250,234, 43,143, 86, 46, 47, 62, 90,115,135, 14, 29,250, 92, 82, 82, 82,112, 68, 68, 4,238,220,185, 3,185, 92, 94,148, + 57,218,181, 67,171,107,215, 96, 46,242, 57,194,165, 75,151,240,197, 23, 95,104,141, 70,227,220,210,190, 40, 63, 63, 63,132,134, +134, 58,186, 12, 69,139,142,147,104,244,201, 5,179, 36, 19,189,216, 2,188,151, 46, 36, 87,177,245,210, 75, 47, 21, 19, 93,190, + 66, 38,147, 89,197,153,223, 57,142,131,217,108, 70,131, 6, 13,144,158,158,238,200, 52,206,150, 60, 95,132,150,183, 9, 73,121, +158,135,201,100, 66,235,214,173, 65, 8,193,167,159,126,250,120,116, 71, 10, 2,241,243, 11, 69, 76, 76, 85,132, 71, 24, 32, 8, +101,183,170,140,213,106,197,168, 81,163,138, 89,176,196,145,141, 98,215, 63,165, 20, 22,139,229,158, 39,127, 21,243,245,253,204, + 31, 71, 1, 71,151,151, 86,107,248,215,125,194,136,136,136,166,132,144, 13, 46,135,179, 1, 76,115, 55,131,187, 29,142, 15,125, +251,246,109,116,233,210, 5,191,253,246,155,228,167,159,126,234,176,113,227,198,115,149, 42, 85,186, 61, 96,192,128,114, 47,190, +248,162,162,117,235,214,200,204,204, 68,195,134, 13,167, 0, 40, 65,104,217,223,163,193, 8,173,182,236,173,163, 37, 53,248,238, + 71,192, 77,158,252, 30, 58, 70,231,162,119,189, 64, 44,219,180, 15, 67,234,171, 0,147,162,212,124, 98, 88, 66, 98, 18, 80,161, + 86,211,187,206, 43, 2,138,186,236, 42,212,106, 10,238,246,149, 82,199,221, 57,204,174,229,229,189, 88,244,156,223,231,200,145, + 35,241,214, 91,111,161,115,231,206,184,114,229, 10,118,239,222,141, 43, 87,174, 96,220,184,113,168, 85,171, 22,234,213,171, 87, + 42,206,141,219,215, 34,191, 48, 15, 28,225,144,157,151, 5,131, 81,143, 9,163, 38,223,247,119, 23,113,125,251, 76, 0,192,186, +109,199,239,153,243,157,119,222, 65,106,106,106, 49, 75,214,253,248,101,253,219,225, 86,104,101,101,101,185,237, 7, 12, 15, 15, + 79,235,212,169, 83,196,157, 59,119,224,231,231,231, 85,100, 17, 66, 58,138,115,109,164,166,166,186,229,244,247,247, 55,119,234, +212, 73, 26, 29, 29, 93,108,180,161, 70,163,185, 43,147,185,114,218, 43,129, 2, 66,200, 11, 45, 90,180, 88,246,251,239,191,171, +171, 84,169,130,252,252,124, 80, 74,241,221,119,223, 97,236,216,177, 80, 42,149,184,116,233, 18,122,246,236,169,211,233,116, 47, + 56,207,161,229,142,211, 83, 11, 77,156, 21,223,141,200, 42, 49,238,206,153,117,193,130, 5,152, 49, 99, 6,222,126,187,100, 87, +143,165, 75,151, 2, 46,221,124,238, 56, 41,165,152, 51,103, 78,153,113,102,101,101,125,231, 98,141,250,180, 79,159, 62,252,237, +219,183,139,137, 43,231,205, 77,193, 84,140,211,219,132,164, 18,137, 4,145,145,145,152, 62,125, 58, 66, 67, 67, 17, 21, 21,117, +151, 37,198,219, 55,186,199,202,224,129,114,218,168,112,236,227, 89,239,181,252,118,197, 70,169, 66, 14, 28,216,189, 14,249, 57, +197,187,147,140,230,191,135, 82,203, 27,116,128,233,248, 31, 62,133,211,104, 52,226,163,143, 62,194, 7, 31,124,128, 15, 62,248, +192,151,239,126, 95,113,247, 69,108,185,229, 20, 40, 81,107,130,161,212,196,160,102,173, 96, 8,212,250, 72,125, 35, 15, 56,114, +248,240,225,158,161,161,161, 72, 74, 74, 10,151, 74,165, 61,139,153,171,244,122, 84,168, 80,161, 42,128,230,222, 56,199,141, 27, +103,124,247,221,119, 21,131, 6, 13, 66,159, 62,125, 48,104,208, 32,133, 76, 38,171, 76, 41,133,217,108, 70, 82, 82, 18,254,248, +227, 15,100,100,100, 92, 40, 41,156, 2,165, 68,165, 14,130, 82, 19,141,154,181,131, 32, 8,214, 50,137,187, 88, 9,186, 90,179, + 74, 57, 33,181,219,178, 14, 0,142,252,177, 1,147, 95,171,141,239, 54, 31,194,194,195, 64,221,160,116,212, 12,207,128,144,113, + 1,111, 14,105,132, 57, 63, 28, 5, 0,236,222,229,245, 27,149, 56, 63,178, 65,111,190,175,184, 59, 91,174,156,159,227,205, 71, +203, 29,167,216, 72, 44, 40, 40, 64,110,110, 46,150, 45, 91,134,103,159,125, 22,233,233,233,184,113,227, 6, 46, 95,190,140, 31, +127,252,209, 49,154,189,180,223,232,141,231,223,193,187,115, 94, 7, 5, 69,181, 74, 53, 49,113,244, 7,104, 92,183,217,125,127, +119, 87,120,179,102,149,196, 57,127,254,252,123, 74, 75,255, 41,161, 85, 82,171,130,227, 56,132,133,133, 57, 18,137,115, 2,188, +151,150,175, 68, 34,129,213,106,117,248,254,136, 27, 0,244,232,209, 3,191,252,242,139, 47, 35, 41,126, 39,132,252,175, 70,141, + 26,223, 76,153, 50,197,175, 77,155, 54,124, 76, 76, 12, 26, 55,110,140, 75,151, 46, 97,243,230,205,150,197,139, 23,107,117, 58, +221, 8, 74,233,182,123, 41,159,196, 37,109,156,183,210,180,122,204,102,243,237, 43, 87,174, 68,207,153, 51, 71,194,113, 28,230, +207,159,239,200,148,226,132,175,206,216,189,123,183, 85, 16,132, 18,187,106, 44, 22,203,237, 43, 87,174, 68,127,242,201, 39, 18, + 66,136,131,147,227, 56, 56, 47,224, 92, 26, 78,119, 34, 83, 28, 24,225,110,115, 23,118,119,223,184,164, 9, 73,121,158,199,165, + 75,151, 48,121,242,100, 16, 66,176,110,221,186,199, 34,115,157,190,144,249, 85,189,154, 17,193, 61,158,106, 89, 7,132,192,108, +186,123, 54, 4,191,156, 66,135,200,234,243,201, 42,252,244,198, 64, 95, 68,207,213,189,123,247,134,124,244,209, 71,188, 68, 34, +193,188,121,243,138, 77, 26,236,250,221,247,236,217, 99,189,151,110, 63, 49, 63,155,205,102,232,245,247,102, 69,161,148,238,159, +249,225,187,157,150,127,255,171,148, 16, 19, 14,236, 90,135,188, 92,247,238, 12,114, 41,143,175,150,173,183,202,164,146,219,255, +240,167,251,172,119,239,222,131, 22, 45, 90, 84,211,221,201,219,183,111, 67, 16,132,146,156,107,110, 24, 12, 6, 36, 39, 39, 67, +167,211,173,157, 52,105,146,249,215, 95,127,125,238,233,167,159, 70,189,122,245, 16, 29, 29,141, 59,119,238,224,234,213,171, 88, +182,108, 25,221,183,111,223, 90, 0, 99,188,188,199, 13,179, 62,124,119,216,178, 31,126,149,115,196,140, 3,187,215, 33,207, 69, +180,223,109,157,150,226,235,239,214,155,101, 50,233, 69,111,229,186,179, 53,171, 44, 43,198,158, 67, 71,163,207,130,133,168,216, +184, 11,102,205,238,136,175, 63,236,143,185, 79,202, 96, 94, 51, 4,117,251, 45,199,202,169, 93, 1, 0, 49, 95,251,104, 45,225, +101,184,229,198, 98,149,155,167,180,139,155,210, 89, 77,197,184,151, 84,134,151,214,162,197,113, 28, 18, 18, 18, 80,177, 98, 69, +180,104,209, 2, 13, 26, 52, 64,187,118,237,112,234,212, 41,156, 58,117, 10,227,198,141,243, 40,178,124,249, 70,109,155,119,194, +161, 86, 23,239,251,219,184,126,247,178,128, 47,105,105,244,232,209, 0,240,159,178,110,241,247,242, 18,197,132,121,191, 75,210, +136,156, 38,147,201,209, 37,231, 60, 47,147,232, 28,239,227,136,190,109,132,144, 90,239,189,247,222,107, 74,165,178,157, 78,167, +171,106,183,200, 92, 50, 26,141, 59,244,122,253, 60, 74,105,238,253,132,213,121, 58, 7,119, 65, 40,233,222,156,156,156, 46, 93, +186,116,217,198,243,124,130,235,130,191,238, 50,178, 32, 8, 55,210,210,210, 74, 28,226,158,149,149,213,165,115,231,206,110, 57, +221, 21, 16,190,112,186,251, 62,130, 32,120, 20, 89,190, 20, 68,222, 38, 36,229,121, 30, 26,141, 6, 63,255,252, 51,194,194,194, + 30,171, 12,118,242, 92,250, 71, 37,157,111, 27,166,216, 5, 32,188,207, 39,171,110,237,204, 52,197,183, 13,147,223,252,233,141, +129,229, 75,186, 39, 51, 51,179,243,179,207, 62,251, 27,207,243, 9,174,239,223,221,183,176, 90,173,215, 83, 83, 83, 75, 61, 93, + 2,165, 20, 23, 47, 94, 20, 70,142, 28,153,153,145,145,209,255, 94,226, 63,113,242,194,185, 51,166,140, 13,125,178, 83,211,198, +224, 0,147,103,231, 95, 74, 0,202, 75, 37,183,199,191, 61,255,249,127,242,155, 81, 74,243, 9, 33, 45,250,246,237, 59, 6, 69, + 67,195,239, 18, 82, 0, 22,148, 64,177,160, 92,185,114,181, 37, 18,137, 2,192,100, 74,233, 77, 66,200,103,251,246,237,235, 12, +224, 9,137, 68, 18,109,179,217,146, 81,180,230,227, 42, 74,233, 73,239,233, 40,237,197,122, 53,194,227,158,236,248, 68, 23, 16, + 66, 77, 38,163,151, 6, 18, 40, 40,165, 50,153,244,226,225,147, 41,117,189, 89,235,237, 43,112,148,121,151,253,152, 49, 99, 48, +102,204, 24, 71,122,250,244,211, 86, 88,123,102, 47,250,213, 77,130,241,139,150, 32, 1,229,125,110,240, 1,192, 59,239,141, 44, + 75,203,102,177, 65, 90,101,229,163, 37,145, 72,144,153,153,137, 75,151, 46, 33, 45, 45, 13, 58,157, 14,231,207,159,135,217,108, + 70, 78, 78, 14,106,215,174,125,207,225, 44,171,111,244, 79,114,254, 23,187, 15, 75, 37,180,172, 86,107,146,183, 85,214, 45, 22, + 75,169, 70, 37, 73,165, 82, 67,149, 42, 85,136,187,209, 9,226,127,141, 70,163,247,177,128,204, 5, 48, 25,192,100,251,122, 86, +200,206,206,190,111, 53,104,179,217, 82,226,227,227, 37,158, 4,140,253,221,164,121, 9,155, 22, 64,179, 50,174, 16,202,156,211, +205,247,209, 86,175, 94,221,225,235,229, 58, 39,138,125,177,213, 18,189,115,189, 77, 72,170,213,106,239,116,233,210,197,230,124, +222,121, 66,211,199, 26,132,222,236, 58,232,185,248,157,153,166,120, 0, 16,197, 22, 60,251,255,128, 82,170, 7,208,230, 65, 7, +237,218,181,107,166, 39,158,120,226,251,130,130,130,209,148,210,123,246,230,127,251,253, 79,223,254,183,125, 22, 74,105, 62,128, + 25,247,120,239, 77, 0,237, 93,142,157, 4,112,242,126,194,116,242,124, 70,153,207, 45,102,181, 90,147, 42, 86,172, 88, 42,203, +141,183, 50,222, 98,177,148, 88, 79,156, 69, 32,222, 62, 8, 20, 45, 19,151,229, 19,167,193, 96,200,110,214,172,153,180,148,113, + 75,247, 53,238,209,209,209,136,137,137,113,252,138,112, 61,238, 45,156, 86,171, 53, 41, 46, 46, 14, 97, 97, 97, 30,103,124,119, +245,201,242,133,179,172,191, 81, 73,156, 49, 49,203,203,156,179,172,244,194,127, 66,104,137,107, 24,150, 37,210,210,210, 30,200, +154, 43,180, 44,204,109,127, 91,142, 26,227, 63,138,172,172,172,208,251,229,240, 54, 33,105, 90, 90, 90,187,255,234,251,221,153, + 97, 26,126,215, 49,187,232,250,167,161,213,106,203,123,155,118,192, 19,250,245,235,103, 3,195, 35,143,204,204,204, 50, 47,211, + 31, 68, 61,145,157,157, 93,231,191, 26,247, 7, 17,206,127, 11,231,227, 2,230,165,198,192,192,224,169,177,194,196, 18, 3, 3, + 3,195,125,130, 0,232,232,161,144,245,121,164, 15, 33,164,227, 61, 20,226,219, 25, 39,227,100,156,140,147,113, 50, 78,198,249, +223,226,244,198, 93,214, 35,141, 31,133, 86,235, 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, 24, 24, 24, 24, + 24,152,208, 98, 96, 96, 96, 96, 96, 96, 96, 96, 96, 66,139,129,129,129,129,129,129,129,225,193,129,148,225,188,158, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 78,224, 1, 96,243,230,205, 14,181,213,173, 91, 55,194, 94, 11, 3, 3, 3, 3, 3, 3,195,195,196,227, +170, 69,120, 38,176, 24, 24, 24, 24, 24, 24, 24, 30, 5, 60,142, 90,132,115,167, 36, 25, 24, 24, 24, 24, 24, 24, 24, 30, 54, 30, + 71, 45,194, 61,206, 42,146,129,129,129,129,129,129,225,223,131,199,222,162,197,172, 90, 12, 12, 12, 12, 12, 12, 12,255, 20,254, +173, 90,132, 16, 66, 9, 33,212,121,223,241,159,141, 58,100, 96, 96, 96, 96, 96, 96, 96,184, 55,129, 69, 41, 37,158,126, 1, 54, +143, 22, 3, 3, 3, 3, 3, 3, 3,195, 61, 65, 20, 83,206,251,206,214,172, 7, 46,180, 8, 33, 29, 25, 39,227,100,156,140,147, +113, 50, 78,198,201, 56,255, 43,130,139, 82, 74,156,247,121,246,122, 24, 24, 24, 24, 24, 24, 24, 24,238, 91,124, 82,119,194,139, + 9, 45, 6, 6, 6, 6, 6, 6, 6,134,251, 20, 89,206,226,138,249,104, 49, 48, 48, 48, 48, 48, 48, 48, 60, 4, 48,139, 22, 3, + 3, 3, 3, 3, 3, 3,195,125,192,213, 9,158,117, 29, 50, 48, 48, 48, 48, 48, 48, 48,148,177,216,114,119,156, 0,232,232,225, +134,237,190,146,223,203,232, 3,111,252,140,147,113, 50, 78,198,201, 56, 25, 39,227,124,252, 56,189,113,151, 70,127, 60, 42, 32, +132,180, 1,176, 19, 64, 91,251,239,223,194,139, 82,250,192, 54, 0, 29, 25, 39,227,100,156,140,147,113, 50, 78,198,201, 56, 31, +231,173, 72, 78,253,253,235,188, 49,103,120, 6,111, 42,157, 39,132,240,247,122,254, 97,113, 50, 48, 48, 48, 48, 48,252,195,245, + 37, 21,127,157,253,181,120, 15, 23, 87, 6,240, 54,128, 64,167,195,135, 41,165, 51, 93,174,251, 1,128,218,233,144, 22,192, 84, + 74,233, 21, 31,194, 36,179,243, 43,236,155, 0,192, 0,192, 8,160, 0,128,133,125,182,127, 60,209, 52, 3,208,221,254,127, 19, +165,244, 64,105,206, 63, 44,206,135,133,152,152, 24, 85,112,112,112,231,227,199,143,203,207,159, 63,143, 61,123,246,208,175,190, +250,202,156,147,147,179, 53, 37, 37, 69,207, 82,204, 99,145,230,187, 0,152,104,223,157, 69, 41,221,114,159,124, 68,173, 86,143, +211,104, 52, 93, 21, 10, 69,140,213,106, 37, 58,157, 46, 69,171,213,110,179, 90,173,159, 80, 74,133,123,224,236, 21, 18, 18,242, + 92,181,106,213, 42,223,184,113, 35, 57, 37, 37,229, 7, 0,107, 0,244,143,137,137, 25, 82,161, 66,133,216,139, 23, 47, 94,201, +206,206,254,154, 82,186,225,159, 10, 39, 3,195,127, 9,158,252,179, 60, 10, 45, 0,147, 41,165, 67, 92, 50,226, 93, 23,181,111, +223,190,231,214,173, 91,213,130, 32, 64,220, 84, 42,149, 21,192,112, 47, 97, 10,221,191,127,127,252,232,209,163,251,164,164,164, + 52, 42, 40, 40,104, 2, 0,106,181,250, 80, 68, 68,196,145, 5, 11, 22,252,216,185,115,231, 36,187,224, 42,149,165, 68, 42,149, + 62, 27, 28, 28,220,213,106,181, 54,160,148, 66, 42,149, 30,207,201,201,217, 98,177, 88,190,166,148,150, 90,188, 17, 66,228, 60, +207,143, 81, 40, 20, 93,172, 86,107, 29, 0,224,121,254,180,209,104,220, 98,181, 90, 63,163,148,154,238,129, 83, 41,151,203,199, + 4, 4, 4,116, 50,153, 76,117, 0, 64, 46,151,159,206,207,207,223,102, 50,153, 62,163,148, 26, 30,129, 10,135, 7,208,157, 82, + 42, 5, 0,137, 68,210,171, 89,179,102,241,132, 16, 65,156, 31,132,227,184,250, 54,155,141,179, 95,223,157, 16,114,132, 82,106, + 45, 13,231, 19, 79, 60, 81,142,231,121,106,159, 73,151,227, 56,174,110,105, 56,203, 10,225,225,225, 51, 4, 65,136, 41,233,154, +192,192,192, 70,199,143, 31,175,182,122,245,106,219, 23, 95,124,145, 59, 98,196, 8,191,209,163, 71,243,159,126,250,233,103, 0, + 94,113,189, 62, 44, 44,108, 46,199,113, 97,190, 60, 95, 16,132,204,204,204,204,215, 89,113,245,143, 99,226,226,237, 5,173, 41, + 5,198,116,242,231, 0,220,151,208,138,141,141, 93, 54,108,216,176, 65,117,234,212,225, 41,165,176, 88, 44, 48, 26,141,213, 14, + 28, 56,208,118,221,186,117,141, 0,244, 47,101,190,124,254,173,183,222,154, 62,109,218,180, 48,169, 84, 74, 44, 22, 75,165,213, +171, 87, 55,120,241,197, 23, 95, 93,186,116,105,185, 1, 3, 6,248,139,199, 39, 79,158,220,152, 16,146, 72, 41,253,228, 97,135, +147,129,225, 63,216, 72,107,131,226, 62, 90, 83, 40,165, 31,148, 36,180, 52,246, 27,211, 0, 28, 22, 45, 90,174, 23,253,249,231, +159, 27,121,158, 23, 45, 90, 77,180, 90,109,164,139, 21,204, 29, 42, 12, 29, 58,180,217,218,181,107,103, 12, 24, 48, 32, 85,173, + 86, 87,121,250,233,167, 11, 8, 33,146,213,171, 87,215,175, 88,177,162,170, 71,143, 30, 67,219,183,111,255,198,111,191,253,182, + 7, 64,134,143,145,172, 25, 18, 18,178,254,163,143, 62,138,239,210,165,139, 44, 44, 44, 12,148, 82,164,164,164,196,110,222,188, +249,201, 41, 83,166,188, 65, 8,233, 77, 41, 61, 87,138, 23,215, 88,165, 82,173,157, 50,101, 74,244,147, 79, 62,201, 71, 69, 69, +193, 96, 48,224,252,249,243, 29,183,108,217,210,122,233,210,165,175, 16, 66,250, 81, 74,143,148,130,179, 73, 96, 96,224,186,111, +223,122, 43,178,233,179,207,242, 33, 33, 33,160,148, 34, 35, 35,163,227,222,229,203,219,142,250,232,163, 87, 8, 33,125, 41,165, +135, 31,165, 68, 36,151,203,185, 21, 43, 86,212,147,203,229, 0, 0,147,201,132, 90,181,106,145,251,225,148, 74,165,220, 39,159, +124,210,128,231,121,152,205,102,161,160,160,128, 62,253,244,211,220, 63,148, 73,226, 82, 82, 82, 2,101, 50,153,219,243, 54,155, + 13,173, 91,183, 78,144,201,100,248,228,147, 79, 44,153,153,153,245, 23, 45, 90,116,124,229,202,149, 97,159,125,246, 89, 63,119, + 66,139,227,184,176,164,164, 36,183,156, 54,155, 13,102,179, 25, 86,171, 21, 38,147, 9, 53,106,212, 96, 37,213,163,129,120, 0, +248,245,148, 1, 0, 66,238,151, 76,163,209, 84, 31, 60,120, 48,159,145,145, 1,169, 84, 10,179,217,140,212,212, 84,212,170, 85, + 75,242,253,247,223, 87, 45, 45, 95,165, 74,149, 70,204,154, 53, 43,252,215, 95,127, 53,175, 88,177,194,212,169, 83, 39,233,136, + 17, 35, 2, 90,183,110, 93, 35, 46, 46,142,251,230,155,111,140,219,182,109,179, 12, 29, 58, 84, 62,115,230,204,240,205,155, 55, +247, 0,240,201,195, 14, 39, 3,195,127, 16, 59, 93, 23,149, 6, 80,162,208, 18,113,152, 82,218, 11, 0,100, 50, 89,253,114,229, +202, 45,179, 90,173, 81,118,171, 78,170, 84, 42,253,196,108, 54,159,176, 87, 84, 27, 4, 65,232,233,205,146, 53,116,232,208,102, +191,253,246,219,156, 3, 7, 14,228,101,101,101, 69,109,220,184,209,240,198, 27,111,220, 0,128,107,215,174, 37,246,232,209, 35, +118,236,216,177, 73,157, 59,119, 94,208,174, 93,187,151,119,236,216,177, 13, 69, 93,146, 37,138,172, 90,181,106,237,223,189,123, +183,127, 80, 80, 80,113, 85, 87,161, 2, 94,126,249,101, 89,207,158, 61, 43,118,232,208, 97, 31, 33,164, 21,165,244,140, 47,130, +168,114,229,202,219,255,252,243, 79,191,224,224, 96,228,230,230, 34, 53, 53, 21, 58,157, 14, 1, 1, 1, 24, 48, 96,128,172, 77, +203, 22,229,198,142,123,101, 59, 33,164,163, 47, 98,139, 16,210,164, 69,205,154,219, 87,206,156,233,103,185,117, 11, 42,149, 10, +133,133,133, 0, 0,127,127,127, 52, 74, 72,224,143, 46, 95, 30, 59,100,194, 4,145,243,161,139, 45, 66,136,194,110, 6, 53, 18, + 66, 54, 73, 36,146, 94,114,185,156,235,213,171, 23,182,111,223, 78, 12, 6, 3, 15, 0, 74,165,210,218,171, 87, 47,168, 84, 42, +152, 76, 38, 1,192, 38, 79,150, 39,119,156, 82,169,148,107,215,174,157,238,240,225,195,217, 34,167, 90,173,182,180,107,215, 46, + 84, 46,151,171,172, 86, 43, 45,137,243, 1,137, 73, 92,189,122,181,216,177,130,130, 2,100,100,100, 32, 43, 43, 11, 70,163, 17, +185,185,185, 16, 4,129,168, 84,170, 12, 65, 16,192,113, 69,198, 55, 79,156, 50,153, 12,151, 46, 93, 42,118,204,106,181, 66,171, +213,194,104, 52,194,108, 54,163,160,160, 64,229,239,239, 95,185,102,205,154, 73, 0, 54,100,103,103,127,146,154,154,122,147,149, + 91,255, 8,110,109, 58, 97, 40, 15,192, 4,224,122, 25,240, 9, 0,176,103,207, 30,164,165,165, 33, 51, 51, 19, 25, 25, 25,136, +139,139,195,189,116,199, 93,189,122,117,113,237,218,181,201,217,179,103,183, 0,248,116,245,234,213,195,179,179,179, 39,142, 31, + 63, 62,228,227,143, 63,206,158, 48, 97,194, 44, 0,223,173, 94,189,250,165,234,213,171,119,189,112,225,194,210,127, 34,156, 12, + 12, 15, 0,141, 1,132,219,255,103,218,203,221, 80,167,253, 83,246,124, 43, 94,103, 2, 32,119,243, 43, 66,220,207, 0,112,196, +233, 62,113,255, 94,234, 79,234,252,235,104,116, 3,192,230,205,155,169,184,185,187, 57, 50, 50,114, 92,251,246,237,231, 28, 59, +118,172,198,157, 59,119,130,239,220,185, 19,124,236,216,177, 26,237,219,183,159, 19, 25, 25, 57, 78,188,206,238,113, 15,167,125, +231, 33,154,178,253,251,247,199,175, 95,191,126,214,246,237,219,243,234,215,175,111,250,243,207, 63,173,157, 59,119, 78, 7, 96, + 5, 96,237,220,185,115,250,142, 29, 59,108, 77,155, 54, 85,253,246,219,111,183,247,237,219, 55,119,237,218,181,145, 0, 36, 30, + 56, 65, 8,145, 6, 5, 5,253,188,107,215,174,187, 68,150, 51,202,149, 43,135, 77,155, 54, 5, 4, 5, 5,109, 32,132,200, 74, + 8, 39, 8, 33, 74,165, 82,185,110,199,142, 29,126,254,254,254, 72, 79, 79,135, 84, 42, 69, 68, 68, 4,242,242,242,144,122,231, + 14,110, 94,190, 12,206,100,194,188, 15,167,249,171, 84,170,181,132, 16,185, 55,206,192,192,192,117, 43,103,204,240,203,218,190, + 29, 39,167, 79,135,217,108,118,116,185,154,205,102,236, 27, 61, 26, 25,127,252,129,111, 38, 79,246, 11, 12, 12, 92, 71, 8, 81, +150,196, 89, 22,112,230, 36,132,140, 6,144, 13, 32,155, 16, 50,154, 82,122,160, 86,173, 90,199,206,159, 63,143, 86,173, 90, 97, +205,154, 53,117,199,143, 31, 63,122,252,248,241,163,215,172, 89, 83,183, 85,171, 86, 56,127,254, 60,106,213,170,117,204,217,151, +202, 23,206, 93,187,118,161,125,251,246, 57,107,214,172, 73,156, 60,121,242,140,201,147, 39,207, 88,181,106, 85,197,246,237,219, +231,204,159, 63,223, 88, 18,231,131,136,187,179,165,201,121, 19,132,191,235,152,152,152,152,244,245,235,215, 99,192,128, 1,156, + 92, 46,191, 51,112,224, 64,197,222,189,123, 41,128, 77,165, 9,167,193, 96,128, 94,175,135, 86,171,197,181,107,215, 84, 31,125, +244, 81,203, 15, 62,248,160,210,246,237,219, 99,223,126,251,237, 81,225,225,225,199,163,162,162,226, 31,118,220, 25, 39, 0, 32, + 21,128,217,222,184,187,121, 63,156, 29, 58,116,168, 93,169, 82,165,200,213,103,131,145, 35,171, 6, 65, 22, 4, 65, 22, 4, 91, +104, 99, 92,149, 63,133,242,229,203, 71,250,251,251, 55, 43, 13, 39,165,116,197,153, 51,103,158,160,148,126, 64, 41,205,162,148, +206,153, 48, 97,194, 20, 66,200,158, 9, 19, 38, 76,163,148,206,177, 31,159,126,254,252,249,166,148,210,149,255, 68, 56, 89, 90, + 98,156,247, 2, 47, 90, 36,156, 16,178,137, 16,178,105,210,164, 73,237, 0,132,186,236, 55,119,190, 14,128,220,221,175,184, 57, + 29, 15, 7,208,205,233,190,240,123,124, 31,196,117, 43, 38,180, 0,160, 91,183,110,164, 91,183,110,226,137,195,132,144,141, 0, + 14,203,100,178,250,245,234,213,235,245,251,239,191,251,135,135,255,253,252,240,240,112,172, 93,187,214,191,102,205,154,189,100, + 50, 89,125, 0,135, 3, 2, 2, 54,194, 77, 23,163, 29, 65,163, 71,143,238,243,204, 51,207,228,215,175, 95, 31, 0,114,207,157, + 59,167,110,218,180,169,214,106,181, 18,171,213, 74,154, 54,109,170, 61,119,238,156,218, 98,177, 20, 52,110,220, 88,211,161, 67, +135, 27,175,191,254,250, 80, 0,202, 18,226, 55,120,246,236,217,113,193,193,193, 37,189, 0, 20, 20, 20, 32, 50, 50, 18,163, 71, +143,142,146, 74,165,207,149,244,194,120,158, 31, 51,123,246,236,136,160,160, 32,228,228,228, 32, 46, 46, 14, 38,147, 9,151, 46, + 93,130, 65, 91, 8, 75, 65, 62, 44,249,185,200,248,235, 10,130,164, 60,134,246,236, 30,201,243,252, 24, 47,214,146, 49, 95, 79, +152, 16,105,186,113, 3,215,214,172,129,205,122,183,161,198,106, 54,227,244,151, 95,194,144,148,132, 89, 35, 71, 70,202,229,242, + 49, 15,217,146,245, 49,165, 84, 69, 41, 85, 17, 66, 22, 52,111,222,252,123,149, 74, 53,122,230,204,153, 93,182,110,221,250,228, +238,221,187,219, 90,173, 86,169,213,106,149,238,217,179,167,149,193, 96,224, 21, 10, 5,120,158,167,190,114, 54,107,214,108,153, + 74,165, 26,181,100,201,146, 46, 59,118,236, 24,122,244,232,209, 49, 54,155, 77,110,179,217,228, 71,143, 30,125, 81,175,215, 75, + 41,165, 54, 79,156, 15, 27, 82,169, 20, 50,153, 12, 42,149, 10, 45, 91,182,252,235,171,175,190,178,196,197,197, 73,215,173, 91, + 23, 28, 19, 19,163,249,244,211, 79,115, 11, 10, 10,102,251,202,103, 54,155, 97, 52, 26,161,215,235, 97, 48, 24,240,231,159,127, + 38,140, 29, 59,150, 55, 24, 12,182, 30, 61,122,100, 91, 44, 22,227,132, 9, 19, 2, 66, 66, 66,222, 96, 13,216,127, 4, 86, 0, +133,118,161,101,116, 78,203,132,144, 58,162,117,214, 23,228,230,230, 46,253,250,235,175,227, 56, 69, 16,246,154,186,226, 71, 97, + 10,182, 6,126,138,244,248, 55, 17, 17, 87, 9,131, 6, 13,138,160,148,126, 90, 6, 21,222, 34, 74,105,107, 74,233,130,123,185, +255, 65,135,147, 16, 18,239,231,231,183, 38, 32, 32, 96,175,159,159,223, 26, 66, 72,252,253,198,185,115,101,210,177, 87, 13, 73, + 82,231, 74,132,246,170, 33, 73,234, 92,185,244,115, 61, 49, 60,154,112,209, 34,206,200,160,148,118,167,148,118,159, 53,107,214, + 12,167,244, 47,238,171,124,204, 47,221, 41,165,221, 93,210,232,166, 50,168, 67,169,235,230,208, 20,206, 74, 82,140,156,243,232, +194,114,229,202, 45, 91,182,108,153,191, 43,233,157, 59,119,144,159,159,143,119,223,125,215,255,153,103,158,121,229,246,237,219, +195,188,132, 67,158,154,154,218, 96,200,144, 33, 74,179,217,156, 35, 8, 2,151,159,159,207, 7, 6, 6,218,196, 11, 2, 3, 3, +109,121,121,121, 82,173, 86, 43,177,217,108,198,103,158,121, 70, 62,114,228,200, 70,206, 22,173,187, 36,110,120,120,167,174, 93, +187,202, 61,157,183, 88, 44,208,106,181,208,106,181, 48,155,205,104,217,178,165,226,171,175,190,234, 12, 96,137,167,123, 20, 10, + 69,167, 78,157, 58, 73,179,179,179, 17, 24, 24,136,155, 55,111,226,250,245,235, 48, 22, 22,194, 92,152, 15,115, 97, 1,172, 5, +249,160,249,121,200,186,114, 17, 77,171, 87,147,253,160, 80,116, 1, 48,215, 19,103, 64, 64, 64,167,166,195,135,243, 26,141, 6, +109,135, 20,141, 51,248,173,122,117, 80,155, 13,130,205, 6,155,213,138, 46,151, 46,193, 98,177,128,227, 56, 52,206,206,230, 3, +150, 47,239, 4, 96,206, 63,145,216, 21, 10, 5,191, 98,197,138,193,114,185, 28,148, 82, 98, 50,153,176,117,235,214,251,230, 92, +190,124,249, 80,145,211,108, 54,211,218,181,107,223,149,161,140, 70, 35,125, 84, 50,189, 92, 46,135, 82,169,132,217,108, 70,133, + 10, 21,244, 67,134, 12,217,255,225,135, 31,150,231, 56, 78, 35,147,201,126,207,202,202,154,145,146,146,114,205, 87, 62,139,197, + 2,147,201, 4,147,201, 4,189, 94,143,191,254,250, 43, 42, 33, 33,129,140, 30, 61,218,166,211,233, 18, 23, 46, 92,120,117,235, +214,173,234,217,179,103, 63, 13,224,101, 86,236, 62, 60,216,173,210,129,229, 67,121,173, 84,130, 66, 0,254,118, 81,240, 52, 33, +164,105,141, 26, 53,130,207,159, 63,159, 67, 8, 57, 8,224, 71, 74,233,157,146,248, 4, 65, 32,130, 32,224,197, 38,185, 24,221, + 76, 2,139, 37, 15,121,121,121,184,121,243, 38,206,157, 59,135, 67,135,206,221, 83, 56,149, 74,229,115,126,126,126,157,149, 74, +101, 5,171,213,202, 21, 22, 22,222,212,233,116,219, 5, 65, 88, 74, 93,187, 21,124,192,131, 10,167, 8,141, 70,243,209,219,111, +191,221, 34, 48, 48, 16, 39, 78,156, 72, 92,181,106,213, 71,184, 79,231,122,165,148,251,102,238,252, 79, 99, 99, 35,130,112,106, +247, 47,177, 51, 62, 95,253, 13,128, 56,150,138,255,253,112,214, 34, 46, 56, 2,160,155,125, 52,122,247,251,200,231,247,117,127, + 73, 22, 45,215,133,165,239, 18, 90, 30, 34, 6,171,213, 26,229,108,201,162,148,226,206,157, 59, 72, 78, 78, 70, 70, 70, 6,130, +131,131, 97, 54,155,163,124,169,103, 11, 10, 10,154,132,134,134,234,164, 82,169, 81,175,215, 67,173, 86, 11, 82,169,148,218,159, + 67,236,163, 22,109, 70,163,145,240, 60,111,241,247,247,247, 51, 26,141,213, 80,130, 47, 25,165,180, 73,104,104,168,219,115, 70, +163, 17,133,133,133,208,106,181, 40, 44, 44,132,209,104, 68,100,100, 36,172, 86,107,131, 18,155,180, 86,107,157,240,240,112,164, +164,164, 64,165, 82, 33, 41, 41, 9,166,194, 2,152, 11, 10, 96,213,230,195,150,151, 7, 33, 63, 31,130, 54, 31, 22,147, 14,177, + 85,170, 67, 28,145,232, 9, 38,147,169, 78,104,104, 40,180,218,191,221,205,168, 93, 96, 89,173, 86, 88,237,206,209, 98,119, 98, + 88, 88, 24,196, 17,137, 15, 3,118,255,169,241, 28,199, 45, 80, 40, 20,252,168, 81,163,112,231,206,157, 98,105, 98,212,168, 81, + 14,159,172,214,173, 91,239, 81, 42,149,214,140,140, 12, 24,141, 70,169, 47,156, 21, 42, 84,184,249,238,187,239, 30, 54,153, 76, +113, 49, 49, 49, 65, 70,163, 81, 95,181,106,213, 24,149, 74, 21,105, 50,153,108,141, 26, 53, 90,170, 82,169, 44,133,133,133,212, +106,181,146, 71, 33,211, 19, 66, 64, 8, 41,250, 70, 86, 43,194,194,194,180,153,153,153,135,114,114,114, 6,223, 11,159,197, 98, + 17, 71,116, 65,175,215,131, 82,138, 19, 39, 78, 64,169, 84, 74,109, 54,219, 89,171,213,170,150, 74,165,224,236,206, 95, 12, 15, +237, 59,183,173, 22, 36,159, 59,179,105, 68, 80,189, 30, 26,173, 90, 46,209, 10, 55,235, 85,248,246,227,115,171,158, 25,250,156, +255,212,169, 83,227,195,194,194,148, 87,175, 94, 53, 76,155, 54, 45, 97,197,138, 21,196, 91, 35,232,214,173, 91, 63,189,253,246, +219, 33, 93,187,118, 77, 84, 40, 20, 36, 47, 47, 15, 25, 25, 25, 72, 75, 75,195,245,235,215,233,169, 83,167,254, 50, 26,141,107, + 74, 19,206,152,152,152,175,198,142, 29,251, 76,195,134, 13,165,162,133, 84,171,213,214,223,181,107, 87,207,223,126,251,173, 21, +128, 82,167,203,219,183,111,175,121,231,157,119, 52, 79, 61,245, 84, 53,133, 66,193,149, 69, 56,157,193,113, 92,164,159,159, 31, +182,111,223,142,160,160, 32,112, 28, 23,121,191,223,203, 96, 22, 98, 99,162, 66, 97,216, 55, 23,213,194,227, 97, 48, 11,177, 44, + 21, 63, 62, 22, 45, 15,167, 26,139, 22, 41, 47, 98, 73, 63,113,226,196,183, 9, 33,155, 38, 78,156,248,182, 59,139,150,253,175, +205,249, 58,167,235,141,101, 45,182, 74, 53, 41,164, 32, 8, 72, 78, 78, 70, 74, 74, 10,146,147,147,145,149,149, 5,142,227, 74, +156, 63,194, 57, 12,132, 16, 97,219,182,109,193,251,247,239,215, 54,110,220, 56, 87,244,127,177, 90,173,196, 98,177, 16,187, 95, + 12,185,121,243,166,108,239,222,189, 65, 23, 46, 92,136, 68,145,195,154,224, 37,114,119, 29, 19, 5,150,243,102, 48, 24,160, 84, + 42,125,138,171, 88, 17,158, 56,118,172, 72,100, 21, 22,216,187, 12,243, 96,203,207, 3,213, 22, 64,110,179, 64, 14, 10, 98,208, +249,252,254,156, 33,138, 44,179, 93,104,153, 76, 38, 88, 44, 22, 8,130, 0,171,213,250,208, 19, 56,165,116,113,253,250,245, 27, +252,244,211, 79, 35,146,147,147,239, 58,223,187,119,111,188,252,242,203, 24, 59,118,236,133,110,221,186,157,250,229,151, 95, 48, +102,204, 24, 8,130, 80,143, 16,146, 71, 41,253,173, 36,206,137, 19, 39, 30,189,125,251,246,206,203,151, 47,143,138,136,136, 80, +212,169, 83,231, 74,157, 58,117, 36, 63,253,244, 83,228,243,207, 63,127,236,201, 39,159,188,241,199, 31,127,132,108,223,190, 93, + 41, 8, 66, 67, 66, 72,242, 63, 61,143,150,209,104,116, 88,160, 12, 6, 3,204,102, 51, 80,130,243,187,183,180, 41,126, 91,171, +213, 42,114,147,159,126, 90,143, 61,123,246,112,231,206,157,141, 27, 53,106,180,232,112,207, 74,220,135, 35,176,158,146,115,228, +139,241,245, 66,149,111,212, 13,213,202,121, 82,120,233,139,183, 11,175,151, 15,208, 70,150, 83,155,226, 18,130, 98,102,204,248, + 48,250,194,133,139,198,119,223,125,247,252,192,129, 3, 35,222,120,227,141, 26,235,214,173,107, 69, 8,249,154, 82,154,235,129, + 87, 57,124,248,240,131, 17, 17, 17, 9,159,127,254,121,250,237,219,183,131, 45, 22,139,198,108, 54, 11, 90,173,246,186, 94,175, +223,110, 54,155,183, 83, 74,143,149, 38,188,254,254,254,117,135, 15, 31, 46,205,205,205,133,125,180, 46,210,211,211,209,162, 69, + 11,201,198,141, 27,107,222,203, 59,200,206,206,158, 75, 8,217,185,114,229,202,206, 1, 1, 1, 13, 21, 10, 69, 20, 0, 91, 65, + 65, 65,154, 86,171, 61,121, 47,225, 44, 86,206,217,108,105,199,142, 29,171, 24, 16, 16,128, 91,183,110,193,102,179,165,221,239, +119, 83,202,184,219,167,119,111, 44, 87, 61, 44, 1,123,247, 31,132, 82,198,221,102,169,249,177,135,232, 67, 5,103, 1,229, 70, + 32,237,159, 57,115,166,106,214,172, 89,152, 57,115,230, 89,119, 22, 45, 81,112,205,156, 57,243,172,120,157,211,245,187,239,163, + 60,241,108,209, 42, 65, 65,130,231,249,212,140,140,140,224,160,160, 32,135,192, 74, 73, 73, 65, 74, 74, 10,228,114, 57,110,222, +188, 9,185, 92,126,199,151, 70,136, 74,165, 58, 90,191,126,253,170,215,174, 93,147, 77,155, 54,173,220,177, 99,199, 2, 90,180, +104, 81, 91,165, 82,217, 40,165, 48, 24, 12,220,249,243,231,253,230,204,153, 19,219,164, 73, 19, 83,147, 38, 77,142,175, 94,189, + 90,143, 18, 38, 47, 37,132, 28,190,115,231, 78, 98,133, 10, 21, 68,209, 86, 76, 92, 57, 11, 46,160,168,203,147,231,249,227, 37, + 5,148,231,249,211,151, 46, 93,234,168, 86, 42, 96, 42,200,135,185, 48, 31,214,130, 2,216, 10,242, 96,203,203, 3,180,249,144, + 91,173,144,218, 44, 80, 41,149, 72, 78, 74, 2,207,243,167, 75,226,148,203,229,167,211,210,210, 58, 6, 5, 5, 57, 42, 81,139, +213, 90,180,217,108, 48, 89,173, 14,139,150, 84, 42,197,237,219,183, 33,151,203, 79, 63,236,148,204,113,156, 77,156,194,193, 67, + 60, 16, 25, 25, 41, 52,109,218, 20, 99,198,140,129,205,102,179,127, 6,210,150, 16,178,151, 82, 90,232,137, 83, 16, 4,238,252, +249,243,125,174, 94,189, 42,145, 74,165,220, 19, 79, 60, 81,171,101,203,150, 38,185, 92, 14,153, 76,198, 23, 22, 22,250,111,223, +190, 93,105,177, 88,136,157,243,161,205,163, 37,166,157,187,154, 70,118,167,117,189, 94,143,194,194, 66,228,228,228,240, 42,149, +170,106,237,218,181, 15,154, 76,166, 53, 86,171,245,155,107,215,174,229,123,226,180, 11, 51,135,232, 18, 4, 1,148, 82,216,108, + 54, 88, 44, 22,200,100, 50, 97,215,174,221,152, 51,239, 35, 44,251,102, 5,237,217,179, 39,217,184,113, 35, 4, 65, 72, 98,229, +234, 67,193, 39,185, 63,126,168,132,213,166, 53,238, 90, 89,248,253,229,124,237,212,239,231, 31, 53,201, 37,249,141,218, 68,214, + 73, 76,168, 42, 9, 10, 10,230,150, 44, 93,144,245,195,138,181, 87,111,221,186,149,255,217,103,159, 53,171, 90,181,106,224,201, +147, 39, 99, 1,184, 21, 90,106,181,186,242,115,207, 61, 55, 60, 39, 39, 71,182,108,217,178,213,119,238,220, 57, 10,224, 28,165, + 84,235, 84,118,117, 35,132,124,135,162,145, 79,145,246,114,110, 47,165,116, 90, 73,237, 53, 66, 8,118,236,216,113,215,232, 64, +225,254,212,121, 80,165, 74,149, 6, 92,187,118,109, 79,106,106,106, 95, 55,249,126,106,149, 42, 85,186,156, 61,123,118, 10,165, +244,215,210, 16,235,116,186, 9,107,215,174,253, 88, 34,145,196,216,108,182, 20,189, 94, 63,225,190, 45, 90, 22, 97,228,204, 37, +171,190,212,155,108,229, 85,114,201, 45,131, 69,120,158, 37,229,199,218,154, 5,216,125,180,196,255, 0,136,203,254, 73,251,127, +147,211,181, 25, 78, 86, 44,147,139, 21,204,221,185, 12,220,227,100,233,238, 70, 28,138,162,203,211,204,240,147, 0, 52, 1,112, + 88, 42,149, 46,120,230,153,103,230,252,240,195, 15,254,249,249,249, 72, 75, 75, 67,122,122, 58,120,158, 71, 64, 64, 0, 22, 47, + 94,172, 79, 75, 75, 91,224,124,143,235, 12,242, 98,222, 8, 11, 11, 59,186, 98,197,138,168, 47,190,248,130, 31, 54,108,216,205, +110,221,186, 85, 91,188,120,241, 53,153, 76, 70,109, 54, 27, 49, 26,141,228,197, 23, 95,172, 56,111,222,188, 27, 18,137, 68, 61, + 96,192, 0,162,209,104, 14,163,200, 65,213,253,155,207,200,216,246,243,207, 63,247,121,253,245,215, 21, 38,147,201,173, 37, 75, + 60, 22, 20, 20,132,125,251,246,153,114,114,114,182,122,177, 98,108,251,253,215,205,173,255, 55,112,160,204, 82,144, 15, 75, 65, + 62,172,249,249,176, 21,228,130, 20,230, 67,106,179, 66, 37, 19, 16, 21,167,132, 85,239,135,205, 71, 78, 90,140, 70, 99,137, 19, + 27,230,231,231,111,219,187,108, 89,219, 38,241,241,252,190,113,227, 96,182, 88,240,212,165, 75, 14,113,101, 54,155,177,161, 78, + 29,216, 8, 65,189, 23, 94,192, 21,171,213,154,159,159,191,237, 81,204, 12,167, 78,157, 74, 31, 50,100,200, 49, 65, 16, 26,148, +198,186, 35,194,207,207,175,160,176,176, 16,153,153,153,182,172,172, 44, 3, 0,164,167,167,231,108,220,184,241,188, 32, 8, 77, +238,133,179, 44, 96,177, 88,238,178, 70,217,108,182, 34,171, 99,145,229, 64,190,121,243,230,214,231,207,159,151,157, 57,115, 6, +123,246,236,169,247,195, 15, 63, 76,138,143,143,175,115,243,230,205, 84,111,226,205,221,164,191,176,251, 31,174, 94,185, 6, 47, +189,244, 18, 73, 77, 77,197,143, 63,254, 8,111,147,167, 50,148, 25,180,176,218, 84,166, 93, 43, 11,187,253,122,171,224,192, 29, +253, 52, 0, 91,168,222, 74,203,149, 43,119,170, 97,195,224, 48, 0, 48, 26,108, 81,149, 43, 87,110,195,243,188,220,158,134, 27, +134,134,134, 46, 6,208,210, 77,249, 41, 25, 56,112, 96,211,136,136,136,250,191,253,246,219,201, 59,119,238,156,165,148, 30,114, +189,174, 98,197,138,239, 94,184,112,161,177, 84, 42, 37, 94,210, 8, 0,160,109,219,182, 85,227,227,227, 67,127,189, 28,136,124, + 89, 37, 80, 73, 30,192, 43, 97, 11,170,139,155,178, 26,136,139, 59, 24, 26, 20, 20, 84, 47, 55, 55,247,100, 41, 43,136,118,125, +250,244,249,102,217,178,101,113,109,218,180,161,132, 16,206,117, 74,135,138, 21, 43,118, 62,112,224, 64,131,231,159,127,254,115, +251,232, 97,159,157,135, 41,165, 55, 1,244, 43,203,143,182,245, 10,221, 14,251,156,103, 12,255, 25, 28,121, 64,215,150, 9,238, +101,102,248, 38,130, 32,244,228, 56, 14,102,179,121,102,100,100,228,134, 1, 3, 6,244,158, 52,105,146, 95,104,104,168,195,146, +181,120,241, 98,253,245,235,215,215,153,205,230, 19,132,144,201, 41, 41, 41, 61, 99, 98, 60,214, 15, 5, 11, 23, 46, 92,213,163, + 71,143, 97, 47,188,240,130,190, 78,157, 58, 1,213,170, 85,211,237,223,191,223,175, 83,167, 78,249, 18,137,132,238,219,183,207, +191, 98,197,138, 6, 66,136,226,143, 63,254,200, 58,120,240, 96,197,153, 51,103,126,141,162,225,214,158,176,114,250,244,233,239, +246,236,217,179, 98,104,104, 40,242,243,243,139,137, 45,241,191, 82,169, 68,106,106, 42,214,175, 95,127,199, 98,177,124,237,197, +178,241,217,167,139,151,188,210,174,233, 19,177, 1,106, 21, 82,147,110,194,150,151, 3,104, 11, 33,183, 90,160,146, 83,196, 86, + 82,131,151,104,112, 53,181, 16,203,246, 31, 73,181, 90,173,159,149,196,105, 50,153, 62,123,121,222,188, 87, 14, 44, 89, 18, 27, +223,191, 63,206, 45, 95,238,232, 42, 20,133,150,141, 16,148,239,208, 1, 92, 96, 32,102,124,254,121,154,201,100,250,236, 97, 39, + 22, 65, 16, 36, 38,147,169,164,120, 64, 16,132,164,115,231,206,173, 34,132, 20, 16, 66,218,218, 79,237,116,103,205,114,230,228, + 56, 78,168, 81,163,198, 79,145,145,145,125, 0,104,107,212,168,241,147, 66,161,104,111, 50,153,158, 16, 4, 33,233,196,137, 19, +235, 9, 33,169,132, 16,177,213,241, 80,231,209,178, 88, 44,152, 60,121, 50,102,205,154,133,137, 19, 39, 58,226, 43,118, 31,230, +230,230, 38,236,221,187, 87,182,107,215, 46,250,249,231,159,103, 13, 27, 54, 44,232,133, 23, 94, 8,250,226,139, 47, 94, 3, 48, +193, 19,231,132, 9, 19,240,249,231,159,227,165,151, 94,186, 91,101, 73, 36, 66, 82,210,109, 24, 12, 6,186,112,225,194, 20,169, + 84, 26,252,245,215, 95,171,158,127,254,121,194,202,213,135,130,119, 84, 67,222,123,213, 94,198, 44,160,148,238, 20, 79, 4, 4, + 4,168,126,250,233,103, 30, 0,214,173, 93, 47,165,148, 6,138, 19,204,126,255,253,247,202, 22, 45, 90, 68,120, 40,112,109, 74, +165,210, 56,123,246,236,208,145, 35, 71, 62,249,231,159,127, 6, 19, 66,154, 2, 56, 10, 32,205, 46,174, 35, 0,156, 11, 11, 11, + 11, 88,189,122,117,108,231,206,157, 53,222, 2, 90, 80, 80,240,245,170, 85,171, 42,204,219, 27,136, 95,181,125,112, 91,232, 15, + 26, 68, 17, 18, 81,128, 26,126,183, 48,120,240,224,152, 5, 11, 22,124, 9,160, 97, 41, 68,214,224,222,189,123,207, 90,182,108, + 89,204,200,145, 35, 83,143, 31, 63,158, 6, 96,153, 27,193,151,249,204, 51,207,220, 89,190,124,121, 52,165,116, 9, 33, 68, 78, + 41, 93,199,146, 15, 3,131, 35, 47,181, 65,209,140,240,119,137, 47,226,206,191,137, 16,178,193,106,181,246,228,121,126,163,243, +132,165,145,145,145,175,152, 76,166,104, 66, 8,149,201,100,169,105,105,105, 11,156, 39, 44, 77, 74, 74,234, 25, 23, 23,231,184, +199, 62,233,166,243, 92, 27, 1, 79, 61,245, 84,199, 3, 7, 14, 44,218,180,105, 83,122, 65, 65,129,223,218,181,107, 85,179,102, +205,186, 41, 8, 2,125,235,173,183,226,187,116,233,162,179,217,108,119, 94,120,225,133,138, 9, 9, 9, 47, 92,184,112, 97,187, +179,208,114,195, 9, 66, 72,205, 74,149, 42,237, 91,183,110, 93, 64, 80, 80, 16,210,211,211,145,157,157, 13,173, 86, 11,155,205, + 6,169, 84,138,140,140, 12, 76,155, 54, 45, 63, 37, 37,229,174, 9, 75, 61,112, 54,169, 16, 27,187,109,193,148,201,254, 65, 60, +135,172,139,231, 97,205,201,130,212,106, 65,185,154,129,144,201, 85,184,114,169, 0,175,173, 92, 95,112, 43, 59,247,174, 9, 75, + 61,113, 54,170, 92,121,251,231,227,199,251, 25,110,223, 70,244,179,207, 66,167,211,193,108, 54,131,227, 56,252,181, 96, 1,100, +225,225,120,119,245,106,237,217, 91,183, 58,184, 78, 88,234,142,179, 12, 18,135,131,147, 16, 50,154, 16,226,112,134,239,221,187, +119,177,107,127,254,249,103, 44, 89,178, 4, 70,163,209, 74, 41,125,133, 82,186,152, 16,226,103, 79, 80,133,222, 56, 43, 84,168, +112,171, 86,173, 90, 71,108, 54, 27,111, 23, 25,244,220,185,115, 13,175, 95,191, 94,206,133,147,183,115, 90, 31, 86,220, 67, 67, + 67, 23,252,246,219,111, 21, 34, 34, 34,136,243,140,237,118,161, 8, 0, 24, 51,102, 76,135,131, 7, 15, 42,234,215,175,111,204, +204,204,108, 28, 30, 30,254,231,138, 21, 43,194, 6, 12, 24,144,114,246,236,217, 88, 87,206,176,176,176, 57,235,214,173,171, 84, +169, 82, 37, 78,180,138,185,118, 79,142, 24, 49,162,227,138, 21, 43,228,125,250,244, 49,106,181,218, 72,127,127,255,171,235,214, +173, 11,235,213,171, 87,234,217,179,103,163, 31, 70,220, 25,167,123,212,170, 85,235,202,217,179,103, 43,137,251,122,189, 30, 25, + 25, 25,200,204,204, 68, 80, 80, 16, 58,117,234,244,215,245,235,215, 43,185,227, 36,132,212,239,215,175,223,148, 47,191,252,178, +163, 70,163,145,237,222,189, 91,187,125,251,118,195,205,155, 55,173, 22,139,133, 70, 71, 71,243, 45, 91,182, 84,118,237,218, 85, +163, 80, 40,184,247,222,123, 47,243,195, 15, 63, 12, 35,132,172, 20,151, 63,115,229,108,208,160,193,161,223,127,255,189, 9, 33, + 4, 18,137, 4, 38,147, 25,185,185,185, 72, 78, 78,194,185,115,231,112,224,192, 1,108,221,186,245,100, 97, 97, 97,125, 31,243, +123, 40,128,221, 70,163,177,154, 92, 46,247, 89,216,219,108, 54,240, 60,127, 17, 64,103, 74,105, 18, 75, 75,140,147,225,111,255, +172, 82, 57,195,219, 5, 88, 19, 66,200, 6,251,161,195,174, 83, 56, 16, 66, 38, 17, 66, 38, 59, 89,193,188,133, 37,255,183,223, +126,219,211,177, 99,199, 49, 29, 58,116,152,215,185,115,231, 59,119,238,220, 73,156, 59,119,110,156,213,106, 53,159, 59,119,142, +187,122,245,234,205,163, 71,143, 86,170, 82,165,202, 11, 23, 46, 92,216,229,197,154, 37,134,245, 28, 33,164, 69,187,118,237,214, +191,240,194, 11,229,155, 54,109, 42, 15, 10, 10, 2,207,243,184,118,237, 26, 78,158, 60,105, 90,189,122,117, 82,110,110,174,207, + 75,240, 80, 74, 15, 19, 66, 58, 13, 24,251,202,186, 23,122,247, 8,123,162, 90, 85,121,116,116, 52,160,215,227,226,173, 84, 28, +188,120,210,252,213,158,131, 25, 70,163,177,175,175, 75,240,216, 57, 59,182, 31, 63,126,221,212,255,253, 47, 18,119,238,240,209, +209,209,144,203,229,184,126,253, 58,174, 10,130,117,246,210,165,105,249,249,249, 15,125, 9, 30,113,206, 43, 65, 16,120, 0, 80, +169, 84,120,249,229,151,225,188,228,206,146, 37, 75,160,215,235, 1,128, 39,132,124, 76, 8,249,198,147, 21,203, 3,103,249, 95, +127,253,181,188, 51,103,245,234,213,221,113, 26, 31,118, 38,201,206,206,126,247,169,167,158,154,201,243,188,199, 89,111,131,131, +131, 81, 80, 80, 0,171,213,106, 75, 78, 78,190, 24, 28, 28, 12,169, 84, 10, 74,169,219,124,148,149,149,245,110,223,190,125,167, +115, 28, 23,225,137, 51, 32, 32,224,230,159,127,254, 89,249,249,231,159,231,190,253,246,219,107, 35, 71,142, 84,252,249,231,159, + 54, 74,233,122, 86,116, 61, 90,112,110,148,218, 27,113,180,132,107, 79, 16, 66,230, 29, 61,122, 52,124,204,152, 49,137,255,251, +223,255, 2,218,181,107,231,231,124,141, 94,175, 23,126,249,229, 23,237,146, 37, 75,242,246,236,217,115, 99,196,136, 17, 77, 81, +228, 95,226, 22,183,110,221,218, 60, 99,198,140,192,174, 93,187, 86, 1,224,240,207,202,200,200,192,205,155, 55,113,230,204,153, +155,102,179,121, 99, 41,226,147, 69, 8,153, 58,104,208,160,143,151, 47, 95, 30, 51,114,228,200,212,213,171, 87,159, 65,209, 4, +195,174, 8,234,221,187,119,157,229,203,151, 71,143, 28, 57, 50, 21,192, 52, 74, 41,243, 35,100, 96,248, 27,109, 93,253,180, 74, +244,209, 2,144, 39, 8, 2, 12, 6, 67,164, 32, 8, 61, 5, 65,128,159,159,159,187,235,154,164,164,164,244,116, 94, 84, 26, 94, +150,203, 1,144,177,125,251,246,109, 43, 87,174,236,240,214, 91,111,253, 47, 55, 55,183,201,169, 83,167,154, 2,128, 84, 42, 61, +160,209,104, 14,205,156, 57,243,217, 9, 19, 38,100,248, 34,178, 92,196, 86,141, 57,115,230,148,217,162,210,118, 97, 84,249,179, + 53,235,199,124,173, 80,116,114, 89, 84,122,155,125, 81,105,195,189,112,142,255,242,203, 49, 1,107,214, 60,178,139, 74, 27,141, + 70,107,159, 62,125,190,230, 56, 78,176,183, 98,121,163,209,248, 44, 74, 57, 82,213,149,179,119,239,222,223, 74, 36, 18,171,221, + 82,196, 25,141,198,231,238,135,179, 12, 43,209, 66, 0, 99, 75,186,166,118,237,218, 43, 54,110,220, 56,164,103,207,158, 54,179, +217,156,222,163, 71, 15,254,208,161, 67,148,227,184,237, 30, 56,141, 0,222, 44,137, 51, 42, 42, 42,254,211, 79, 63, 61, 62,110, +220,184,128,149, 43, 87,134,236,221,187,215,182,112,225,194,252,236,236,236, 79, 88,185,245,104, 65, 42,149, 66,173, 86,195,100, + 50, 33, 35, 35, 3,222,166,172,162,148,238, 32,132,116, 29, 63,126,252,211,227,199,143,239, 26, 21, 21, 85,177, 66,133, 10,106, +142,227,144,156,156,108, 77, 73, 73, 73,183, 88, 44,219, 0,172, 7,128,138, 21, 43, 62, 3,224, 43, 79,124, 89, 89, 89,211, 9, + 33, 59,150, 47, 95,222, 77,163,209,212, 80, 42,149, 33, 22,139,133, 43, 40, 40,200,214,235,245,231, 13, 6,195, 38, 74,233,254, + 82,166,251,213,132,144,204, 97,195,134,125,179,108,217,178,184,107,215,174, 21, 28, 61,122,244, 41,215,235,106,212,168,177,119, +249,242,229,209,207, 63,255,252,157,213,171, 87,151,202, 71,139,129,225, 63,210, 16,219, 5, 15,254,197,158, 42,184, 25,114,185, +156,135,125,113,105,209,162,229,230,186,195, 46, 62, 89,121, 0,102,248, 16, 38,237,224,193,131,175, 15, 30, 60,248, 99,123, 24, + 36, 40,154,194,193,138, 34,143,127, 51,188, 76,233,224, 33,162, 86, 0, 95,218,183,178,122,121, 6, 20,205,151, 51,231, 81,230, + 44,131, 48, 25, 9, 33,227, 9, 33, 31,219, 15,141, 63,113,226,196, 98, 23, 11,213, 41,231,243,222, 44, 79,238, 56, 79,158, 60, +233,202,121,166, 52,156,255, 36,114,115,115, 95,249,244,211, 79, 15, 79,156, 56, 81, 49,124,248,112,156, 57,115, 6,179,102,205, + 50,230,230,230,174,188, 87,206,212,212,212,155, 81, 81, 81, 13,230,207,159,255,198,188,121,243,122, 17, 66,216, 90,135,143, 8, +244,122,253, 95,117,235,214, 5, 41,114, 88,162, 86,171,213, 49, 90,212, 62,195,255, 95,190, 88,141, 0, 44,181,111, 32,132,132, +160,104,148, 97, 22,165,212,181, 33, 57,222, 7,190, 3, 0, 14,148,113,222,223, 65, 8,121,246,234,213,171, 51,254,250,235, 47, +183, 66,237,202,149, 43, 59, 91,182,108,233,127,234,212,169,119, 40,165,155, 89,234, 96, 96,240, 29,188,135,140,119, 5,192,255, +124,200,160, 51,239,227,217, 54, 31,172, 95, 12, 15, 87,108, 45, 38,132,124,227,100,141, 41,213,249,135,197,249, 79, 33, 41, 41, + 41, 7,128, 99, 41,146,196,196,196,187,252,216,238, 85,108,161,104, 22,120, 54, 19,252, 35,132,107,215,174, 61,245, 0,242, 88, +246, 35,154,247,119, 2,104,234,233,188,197, 98,153, 12, 96, 50, 75, 21, 12, 12,165, 7,155,125,154,193,181,192, 53,150, 36,120, +188,157,127, 88,156, 12, 12, 12, 12, 12, 12,143, 10,220,172,117,216,198,113, 14, 64, 71, 15,149,223,246, 82, 60,160,212, 11,122, +122,227,103,156,140,147,113, 50, 78,198,201, 56, 25,231,227,199,233,196, 61,207,195,169,139, 46,124, 95,252, 27,133,151, 99,244, + 33,165,244,129,109, 0, 58, 50, 78,198,201, 56, 25, 39,227,100,156,140,147,113,222,227,115, 94,120, 24,207, 41,227, 48, 83, 0, +109,196,125, 30, 12, 12, 12, 12, 12, 12, 12, 12, 12,101, 2,159,230,209, 90,187,118,173, 68,252, 63,104,208,160, 17, 54,155,205, + 49,236, 93, 34,145,124,250,227,143, 63,126, 83,210, 67,250,245,235,103, 43,137,211, 29,188, 61,199, 29,103,173,170,129,163, 66, + 3,213,175,228,230,233,230, 95, 75,177,237, 49, 24, 12, 53,196,115, 74,165,242,252, 55,223,124,115,185,172,195, 57, 98,196,136, + 42,174,207,169, 16, 39,109, 27,226,175,124, 57, 59,183,112,238,153,203, 5, 95,176,100,246, 96,209,191,127,255, 82, 93,127,253, +122, 16,142, 35, 26, 1, 26, 25, 10,181, 22,216,142, 61, 30, 62,189,209,209,209,213, 2, 2, 2,134, 2,168,169,211,233, 34,212, +106,117, 58,128,115,249,249,249, 43,238,220,185,115,209, 87,158,182, 9,228, 38,128,242,246,221, 91, 59,175,211,120, 95,206,121, + 67,151, 74,196, 64, 1, 5, 33, 48,111,185, 66, 29, 11,104, 62, 89,153, 24, 4,122,247,241, 46,149,137,137, 82,200, 8, 96,220, +114,149, 42, 31,151,244, 74, 8, 9, 0,208, 9, 64, 45, 0,167, 0,108,165,148,234, 88, 78,102, 96,120,124,224, 58, 81,169,243, + 62,239, 65, 76,180,150,241,100, 17, 5, 13, 2,104,168,209,104,148,202,229,114,152, 76, 38,168,213,170,207, 94, 28, 57, 98, 10, + 56,228, 90,172,120,249,155,111,190,185,231,149,174, 75,243,156,126,253,250,237,112,189, 63, 56, 64, 53,125,231, 47,111, 5,183, +238, 54,123,150,233,122,230,132,130,130, 2, 78,161, 80,192,104, 52, 34, 48, 48,176,197,168, 23, 94,104,200, 73,169, 73, 38,211, +236,159, 55,111, 94,234,189,134,243,181,215, 94,139, 50,155, 13,205, 5, 65,144,155, 76, 38,133,235,115, 2,213,154,217, 59,127, +121, 75,221,166,251,172, 41, 0,152,208,122,132, 80, 36,178,162,240,234,224, 39,240,209,184,142, 8,106, 59,251,113,200,208,146, +196,196,196, 49,241,241,241, 3,151, 46, 93, 42, 75, 76, 76,132, 82,169,132, 94,175,143,254,235,175,191,162, 71,141, 26,213,166, + 98,197,138,171,174, 93,187,246, 25,165,212,230, 3,101,249,157,223,189, 7, 0,104, 49,116, 90,121, 66,200,155, 0,116, 0,208, +166,194,223,231,218, 14,159, 86,158, 16, 50, 30,197, 71, 11,223,161,148,186,157, 36,147, 2,242, 77,203,231,160,231, 51,111,242, +132,144, 81,226,241,174, 85,128,223,191, 95,128, 39, 7,189, 82,236,120,151,138,224,127, 89, 62, 7,221,159,121,211,227,170,230, + 79, 86,225, 44,130, 64, 61, 90,226, 57,142, 88,183, 92,161,238, 22, 24, 78,163,148,110,113,243, 46,187,160,104, 65,103,183,215, +119,175,206,167,153, 45, 54,183, 19,206,202,164,146,244, 77, 23,172,119,221, 59,188, 1,177, 88,108, 69,101,171,140,135, 45, 48, + 48,112,231, 59,239,188,195,119,239,222, 29, 95,125,245, 85,203, 47,190,248,226, 5, 66,200, 31, 0, 54, 82, 74,175,178, 92,202, +192,240,248, 10, 46,143, 66,139,151,224,243,141,235,190,169,148,150,158,137, 97,207,191,129,149, 43, 87, 34, 39, 39, 7,193,193, +193,144,203,100,210,249, 31,191, 23, 21, 16,160,137, 26,246,194,132,207, 1, 84,187,215, 0,149,242, 57,149,239,138,144,125, 66, + 83, 94,194, 73,229,114, 57,183,106,213, 42,228,230,230, 34, 40, 40, 8,114,185,148,155, 55,107,146, 42, 32,192, 79,245,220,232, +137, 45, 1,172,185,215,112,154, 76,133, 45,127, 90,249, 77, 64, 70, 70, 6,134,191, 52, 1,174,207,145,201,100, 54,177, 98, 97, +201,236,159, 67,102,102, 38, 0, 32, 44, 44,204, 69,100, 53,197,188,215, 59,227,181,185, 91,161, 51,152,254,245,241, 76, 76, 76, + 28,211,191,127,255,129,211,167, 79,151,113, 92,209,192, 97,173, 86, 11,189, 94,143,216,216, 88,236,220,185, 83,246,238,187,239, + 14,252,249,231,159, 1, 96, 97,105,249,207,158, 61, 91,161,124,249,242, 6, 0,232, 81,199,223,245, 92,188,120, 14, 0,252,253, +253,189,242,133, 6,105,140,103,207, 30,172, 41,222, 55,166, 67,172,205,195,113, 3, 0,117, 73, 92,130, 64,249,173,139, 70,121, + 60,255,252,244, 31,172,167,214,236,169,150,152,152,168,119, 62,238, 97,194,101, 0,136, 44, 44, 44, 44,239,122, 80,188,222,108, +177, 69,120,122, 94,231,151,151,184, 21, 96, 22, 27,248, 31,126,248, 1, 0,240,201,155, 67, 36, 95, 30,202,228,121,190,168,168, +253,248,227,143, 49,117,234, 84,249,150, 45, 91,186, 46, 95,190,188, 43, 33,100,190, 39,161,202,192,192,240,239, 19, 89,206,191, + 37, 10, 45,142, 16,255, 0,127, 63,244, 27,252, 34,126,251,237,119,180,110,221,218,113, 46, 33, 33, 1,253,251,246,194,143,223, +205, 3, 0,255,251, 9,212,253, 62, 39, 39, 79,251,254,147, 3, 23, 77,187,149, 90,120, 96,211,166, 77,104,213,170, 85,177,251, + 7, 15,232,135,239,191,254, 24,148, 82,217,125,189, 60,202,201,252, 3, 52, 24, 52,236, 37,184,123,206, 11,195,123,111,234,210, +127, 65,199,180, 44,237, 60,150,212, 30, 46, 46, 92,184, 0,163,209,136,128,128, 0, 72,165, 82, 40,130,202, 35,133,111,130, 12, +146,136,244, 8, 29, 94,239, 24,137, 79, 94,109,135,215,230,110,197,252,149, 7,209, 0,169,255,234,248, 70, 71, 71, 87,139,143, +143, 47, 38,178, 10, 10, 10, 80, 88, 88,136,252,252,124, 20, 20, 20,128,227, 56, 76,152, 48, 65,182,107,215,174,129,209,209,209, +219,125,232, 70,188,213, 98,232,180, 34,177, 33,145, 22, 78,158, 60,217, 24, 17, 17, 97, 84,171,213,148,151, 41, 10,218, 14,159, +230, 15, 0, 28, 47, 43,152, 63,127,190, 41, 54, 54,214,192,243,188,252,149, 87, 94,241,105,122, 24,163,209, 72,157, 57, 77, 38, +163,227,248,236,217,179, 77,145,145,145, 70,181, 90, 77,205,102,223, 69,240,233,235,217, 80,200, 36, 80,200, 36, 80,202,165,240, +175,208, 24,138,156, 51,176, 90,173,248,232,163,143,204, 81, 81, 81, 38,181, 90, 77,229,114,185,108,220,184,113, 94,195, 57, 98, +196, 8, 26, 20, 20,100, 86,171,213,178,169, 83,167,222, 53,187,243,159,167,146,161,146, 75,161, 86,240,168,156, 16, 7, 5,213, +251, 28, 86,137,164,184, 55,130, 66,161, 64,203,150, 45, 81,179,102, 77,108,216,176,161, 45, 0, 38,180, 24, 24,254,229,112,181, + 98,221, 37,180, 54,111,222,220, 6,246, 85,167,187,117,235, 86,180,218, 52, 40,198,143,233,139,231,134, 15,130,205, 38, 56,150, +155, 32, 28,193,232,103,187, 66, 16,108,190, 60,216,235, 16,207,210, 62,199,153,147, 18, 78, 2, 0,149,226,163,233, 11,207,253, + 15, 54, 65, 40,154, 6, 21, 0, 36,192,139,195,159, 44, 58, 86, 6,225,148,192,134, 55, 70, 61, 13,119,207,169, 86, 41,134,179, +154, 13, 32, 78,139, 61, 62,136,197, 54, 25,103,113,236,223,191, 31,106,181, 26, 67,134, 12,193,184,113,227, 96,227,131,176,246, + 64, 22,222, 90,124, 0, 58,163, 25,131,219, 85,192,235,255,171,131,215,231,255,233, 16, 89, 9, 9,185,255,234,184, 7, 4, 4, + 12, 93,186,116,233, 93, 34, 43, 45, 45,141, 43, 44, 44,132,217,108, 22, 10, 10, 10, 96,179,217, 48,113,226, 68,233,187,239,190, + 59,148, 16, 50,213,206, 99,116,199,185,243, 58,141, 39,132,140, 63,123,246,108,252, 59,239,188, 99,110,223,190,253,173,132,132, + 4,173, 68, 34, 65,116,116,244,130, 78,157, 58,133, 76,159, 62,221,220,181,107,215, 27, 18,137, 4,149, 43, 87,214,158, 57,115, + 38, 30,128,202,215,184, 59,115,126,243,231,167, 98,171, 15,157, 58,117,186, 89,185,114,101,173, 68, 34,193,229, 95,102, 83, 95, +223,167,148,231, 80, 37, 54, 80,108, 70, 2, 42, 63, 32,167,104,183, 83,167, 78, 73,213,170, 85, 43,228, 56, 14,167, 79,159,142, + 3,160,244,198,169, 82,169, 44,131, 7, 15,190,117,241,226,197,187,174, 7, 0, 94,194,161,105, 53,187, 1, 43,182, 1,144,180, +215, 99, 56,165, 18, 88,223, 29, 51,132, 15, 82, 2, 10,255, 48, 99,126,126, 62, 2, 2, 2,138, 44,100,102, 51, 78,156, 56,129, +102,205,154,181, 89,179,102,205, 46,150,223, 25, 39,227,252, 27,238,180,200,191,205,154, 37, 10, 46,119, 62, 90, 59, 93, 35,101, +179, 89,145, 80, 62, 18,179,223, 27, 1,155, 77,128,205,102,131,213,254,107,179,217, 96, 49,155,203, 36,112,247,243,156,224, 0, +213,244,223, 87,189, 28,220,190,247,199, 29,102,190, 51,124,155,205, 6, 8,130, 5, 22, 11, 96, 19, 44, 16,108, 54, 88, 44,101, +211, 85,100, 17, 4,196,199, 69, 97,230, 59,195,225,250,156, 21, 63,174,233,241,231,198, 9,234,214,221,103,189, 1,224, 35,166, +237, 31,142, 37, 75,173, 86, 99,197,138, 21,104,220,184, 49, 0, 96,207, 37, 43,222, 90,124, 0, 91,102,182, 64,139,154,161, 72, +207, 53,226,149,207, 78,226,183, 3,233,119,137,172,127, 49,106, 38, 38, 38, 22, 19, 89,115,230,204, 9, 91,188,120,113, 44, 0, +244,237,219, 55,185, 67,135, 14,153,151, 46, 93, 66,116,116, 52,201,204,204,236, 6,224, 21,123,198, 31, 79, 41, 93,236,129, 87, + 91,190,124,121, 67,120,120,184, 81, 20, 68, 28,199,129,231,121,148, 47, 95,222, 16, 17, 17, 97,172, 92,185,178, 86, 38,147,129, +227, 56,136, 66,207,199, 2, 8, 18,137, 4, 34,167,171,181, 71,228, 44, 13,164,188,211,245,244,110, 11, 18,199,113,110,159,231, + 9, 74,165,146, 2,240,120,189,132,115, 42, 30,249,146, 61, 4,190, 59, 78,165,132,144,157,148, 82, 28, 63,126, 28,215,174, 93, +131, 76, 38, 67, 84, 84, 20,166, 78,157, 10,163,177, 72,239,246,239,223,191, 13,128,211, 44, 55, 51, 48, 56,176,243,223, 38,176, + 92,173, 90,238,124,180, 56, 55,106,210, 33,128,138,196,142, 27,241, 99,177,194, 98, 49, 3, 94, 22, 85,245, 85,104,121,122,142, +205, 38,148,248, 28,209, 71, 75, 16, 40,239, 86,100, 9, 2,172, 22, 75,153,188, 64,193,102,129, 32, 88,224,238, 57,132,112, 54, +123,129, 47, 99,249,228,225,192,104, 52, 98,208,160, 65, 14,145, 5, 0,153, 5, 22,232,140, 22,180,168, 25,138,134,237,250, 35, + 34, 72,129,213,187,147, 17, 17,164,126, 92, 68, 22,116, 58, 93,132, 82,169,132, 86,171,117, 88,178, 22, 47, 94, 28,107, 50,153, + 56,147,201,196,173, 94,189, 38,110,229,182, 75,229, 86,108,185, 84,110,233,250, 99,229,114,114,242,106, 82, 74, 85,148, 82, 21, +128,143, 9, 33,138,146,248,101, 50,153, 67,160, 56, 11, 32,133, 66,113, 79, 2,198, 81,208,216,197,153, 76, 38,115,123,220,181, +123,205, 27,100,206, 66, 11,180,200,170,229, 34,182, 36, 18, 9, 68,223, 40,111,144,203,229,142,184,187, 3, 47,113,122,158,164, +244,174,152,102,179, 25,133,133,133,200,205, 45,102, 81,133, 40,130, 25, 24, 24,220,107,145,127,171,216, 42, 86,126,184,170, 73, +216, 87,159,182, 90,204,110,197,207,154, 95,246,225, 86,170, 22, 81, 97,135, 65, 61,172, 84,237, 9, 3, 7, 14,252, 46, 58, 58, +218,177,158,150, 66,229, 23,250,194,203, 31,192,106, 53,195, 95,197,225,249,161, 79, 22, 19, 89, 69, 22, 45, 19, 60,201,185,156, + 60,237,251, 79,246, 95, 56, 45, 48, 32,244,128,171,248,153,185,236, 88,191,156,124, 99, 28,199, 29, 65, 14,137,182,245,127,241, +131, 17, 78,133,251,169, 85, 75, 38,191,238,243,139, 35,156,180,223,168, 5, 47, 80,222,175,134,154, 43,216,253,214,240, 39,126, +114, 22,115, 33, 33, 33,155, 58,247,155,223, 49, 45,155,249,104, 61, 44,200,229,114,140, 27, 55,174,216,177, 48,127, 41,212, 10, + 41,246,157,203,196,177, 29,107,176,231,108, 38,148, 50, 9,194,233,181,199, 38,222,106,181, 58, 93,167,211, 69,235,245,122,228, +231,231, 35, 63, 63,191,184, 32,144, 74,201, 11, 47,141, 13,147,202,228,176,152, 77,248,109,197,135, 94, 57,219, 38,144,155,109, + 42,160,124,143, 58,254,144, 72,229, 5,231, 18, 19, 23,240, 60, 15,142,227,240,203,103,111,189,178,126,238,203,254, 0,112,106, +211,103,249,131, 38,124,186,144,227, 56, 24,141, 70, 69,105,194,125,251,246,237, 56,163,209,104,176, 11, 52,209,180,142,235,215, +175,151, 51, 26,141,122,231,227,190, 64,165,246, 7,130, 18, 0,117,196, 93,214,179, 27, 55,110,196, 88, 44, 22, 29,207,243, 48, +153, 76, 62,169, 34,142,227,100,167, 79,159,142, 19, 4,193,237,245, 53, 43,198, 0, 81,117, 0,121, 96,105, 10, 92,159,174,113, +215, 2,102, 96,248,175, 91,182, 80, 74,125,241, 40, 8, 44,119,255,157,133, 86,219,205,155, 55, 83,231, 22,162,213, 98,177,139, +172,191, 69,143,205, 38, 32, 37,195,128, 75,151, 46, 99,254,252,249,216,119,240,205,192,233,211,167, 43,222,125,247, 93,227,192, +129, 3,231, 10,130, 80,151,227,184, 83,253,250,245,115,219, 74, 19, 4,161,220,177, 99,199, 18,197,125,139,197, 2,127,127,127, +248,251,251,163, 90,229,184,187, 68,150,205,102,131,185,132,174, 67,209, 71,139, 80,129, 90, 44, 54,216, 4,193, 33,126,114,242, +141,113, 27,183, 31,175,228,116,121, 85,241, 79,203,198, 53, 60,139,193, 81, 83, 29,241, 88,181,100,242,235,211,191,250, 74,145, + 99, 11, 31, 55,168,223,115,181,250, 15, 26,138,193, 79, 63,213,198,104, 50,109,144,112, 84,176, 56,158, 7, 14, 20,197,124,180, + 24, 30, 28, 50, 51, 51,161,215,235, 17, 20, 20, 84,172,194,138,214,104, 49, 97, 64, 21,116,122,107, 47, 12,102, 27, 20, 82, 14, +175,244,138,199,161,159, 87, 35,211,152,233, 24,141,248, 47,199,185,171, 87,175, 70,151, 43, 87, 14,249,249,249,176, 90,173, 66, +223,190,125,147,121, 94, 26,199, 75,165,164,251,160,177, 66,106,106,138,133,227, 36,160,212,134,167,250,143, 34, 10,165, 74,102, + 54,153,172, 0,198,123, 88, 83,210,121, 10, 7,255, 78,157, 58,133,136, 35, 1,215,207,125,217,223,233, 92, 64,195,134, 13, 67, +156, 71, 29,250, 40,138,201,192,129, 3, 85,229,203,151, 39, 0,112,100,197, 59,162,245,140,244,232,209, 67, 89,190,124,145, 31, +254, 31,159,249,190,166,118,152,154, 2,121,215,129,188, 27,119, 89,178,122,244,232,161, 72, 76, 76, 44, 85, 94,180, 59,192,123, +156,187, 75,195, 91,129,212,227, 62,113, 13,111, 64, 44,239,180, 6, 63,247, 41, 14,114,191, 80, 99,211,183,182, 28, 98, 98,139, +129,193, 39,184,104,145,127, 15,236,107, 27,238, 4,208,214,254,139, 98, 62, 90,221,186,117,219, 85, 76, 61, 82,192, 98, 53,223, + 37,178,108, 54, 27,164,196,136,249,243,231,227,213, 87, 95, 5, 0,217,235,175,191,254,211,244,233,211,251, 8,130, 80,151, 82, +218,138, 16, 82, 82,171,113,103,116,116,116, 26,165, 84,202,113, 92,171,207, 62,251, 44,164,107,215,174,240,247,247, 7, 21,232, + 93, 34,203,102, 19, 96, 54,155,224,201,164, 21, 28,160,154,254,251,154,113,193,237,123,125,220,193, 38, 8,219, 68,145, 37,216, +108,128, 80,116, 83, 86,122, 50,182,254,182, 1,159, 47,249, 60, 7,132, 94, 0,133,192,113,220, 41, 79, 97, 20, 4,161,238,222, + 35,231, 91,181,108, 92, 3,211,191,250, 74,113,246,216,157,159,198,190,246,118,173,254,131,134, 98,205,143, 43,192, 89,115,143, + 59,139, 44,155, 69, 64, 94, 78,102,143, 29,204, 71,235, 31,131,197, 98, 65, 78, 78, 14, 44,133, 57,104, 20,173,197, 7,253, 35, +144,150, 99,128, 84,208,161,122, 64, 58,118,100,223,128, 90,173,126, 44,226,154,159,159,191, 98,212,168, 81,109,118,239,222, 45, +227, 56, 14,249,249,249,104,215,174, 93,102,134, 16,171,124,225,165,177, 97, 41, 41,201,214, 0, 21,111,148,201,164, 72, 79, 79, + 23,218,116, 29,162, 31, 52,226,213,152, 87,223,153,185, 52,101,223,226,197,190, 60,195,121, 36,160,235,185, 47,191,252,210, 20, + 27, 27,107, 80, 40, 20,242,225,195,135,251,212,127,104, 50,153,232,236,217,179,141,174,163, 11, 77, 38, 19,157, 63,127,190, 41, + 46, 46,206,168, 82,169,168,197,226,221,239,147,227,136,245,249,233, 63, 88,173, 86,107, 49, 43,150, 40,178, 44, 2, 41, 92,180, +104,145, 57, 46, 46,206,164, 86,171,169, 66,161,144,249, 18,206,177, 99,199,210,224,224, 96,179, 70,163,145, 77,152, 48,225,190, + 70, 29, 90,108,224,167,127,230,152,222, 65,225,239,239,143,130,130, 2, 71, 88,163,163,163,153,216, 98, 96,112,131,187,180,200, +191,204, 10,231,201, 71,203,173, 3,131, 0, 20,166,165,103, 70,132, 69, 86,128,213,106,181,111, 22, 88, 45, 22,140,123,113, 16, +230, 46, 89, 4, 0,162,216,234,244,250,235,175,255, 4, 23,127, 47,119, 88,181,106,213,180,215, 95,127, 61, 32, 45, 45,109,203, +119,223,125, 23, 50,100,200, 16,140, 31, 63, 30, 31,127,252, 49,164,114, 37, 66,194,203, 57,158, 35, 62, 55, 51, 35, 27, 20,180, +208,173,130,180,251,104, 81, 10, 62, 52, 60, 30, 22,155, 5,130,197, 2,139,197, 2, 34, 41,138,218,214,223, 54, 96,200,179, 99, + 33, 85, 4, 4,127, 58,255, 35,125,173, 70,209,125,222, 29, 57,210,232, 93,158,130, 59,123,236,206, 79, 99, 95,157,208, 73, 20, + 89,235, 86, 44,185,240,201,196, 94, 43, 21,114,222,241, 28,139, 32,128,227, 36,204, 71,235, 33, 34, 44, 44, 12, 25, 25, 25,200, +205,205,133, 70,163, 65, 86, 86, 22,178,179,179,145,155,155, 11, 99,126, 14, 66,109,185, 32,214,108,240, 60,143,244,219, 69, 62, +128,143,137, 53, 11,119,238,220,185, 88,177, 98,197, 85,111,191,253,246,160,137, 19, 39, 74, 5, 65,192,165, 75,151, 0, 66,168, + 84, 38, 7,199,113,144, 74,121,228,229,229, 11,106,191,160, 59,102, 42, 81,255,159,189,171, 14,143,226,120,195,239,236,185,228, +114,113, 39, 33, 88, 18, 18,188, 56, 65, 74,144,162, 45,238, 80,138, 21, 43, 20,135, 98, 45,133, 98,165, 88,145, 82,160, 56,252, +104,241, 34,197, 29,130,135, 32,129,184,187, 93,114,186,243,251,131, 92,122,164,145,187,132,150, 66,247,125,158,125,246,110,118, +247,221,153,217,221,217,119,191,249,230, 27,129, 80, 4,134, 39, 44,109,152,112, 84,235,161,175,194, 59, 48,124, 97,182,113, 36, +160, 80, 40,196,245,253,203,179, 90, 15,253,218, 26, 0,132, 98,105,122,251,246,237, 35,107,214,172,153,123,251,246,109, 47, 20, + 25,117, 88,204,243,169,255,120,232, 52,158, 76, 42,201,109,215,174, 93,148,145, 51,226,244,218,172, 65,159,207, 38,132, 39,202, +237,210,165, 75,100, 64, 64, 64, 46,143,199,195,227, 67, 75,179, 62, 30, 58, 77, 66,254, 28,211,251, 23,156,124, 78, 71,220,223, +127,201,119,209,162, 69,186, 78,157, 58, 69, 27,253,197, 34, 34, 34,220, 58,119,238, 44,254,254,251,239,117,157, 59,119,142,169, + 85,171, 86, 14,195, 48, 8, 14, 14,246, 40,205, 82,101,132, 84, 42,213, 13, 31, 62, 60,234,225,195,135,229, 26,117, 88, 22, 42, + 85,170, 4,150,101,209,166, 77, 27,228,231,231,115,150, 45, 14, 28,222, 67, 20,141,163, 85,106,100,120,157, 94, 55,110,212,196, + 5,107, 1, 98,101,210, 10,252,105, 88,162, 32, 83,166,124, 41, 7, 32, 53,138,173, 73,147, 38,165,151,149, 9, 19,145,245,193, +128, 1, 3, 48,115,230, 76,172, 88,177,194,176,108,217, 50,222,147,103,225,218,161,159,207,203, 40,114, 30, 80,208, 28, 86,199, +142, 43,142, 47, 61, 51,119, 94, 96,231, 37, 11, 98, 19, 85,151,135,142,153, 83,216,122, 25, 0,100, 17, 87, 3, 0,108,248,241, +199, 92,129,216, 90,222,187,223, 32, 0,104,183,118,213,210, 95,191,193, 79,101,139, 45, 74,252,198, 77,154,102,107, 20, 89,235, +190, 95,244, 80, 73, 18,215,140,255, 50, 68,103,122, 30, 0,176, 83,224,215,192,206, 75, 58, 36,165,229,254,192,221,106,255, 12, + 52, 26, 13, 86,175, 94,141, 57,115,230, 32, 45, 45, 13, 41, 41, 41, 72, 79, 79, 47, 92,114,114,114,224,226,226,130,223,127,255, +253, 47,126, 76,239, 58, 94,190,124,185,238,240,225,195,184,112,225, 66,223, 25, 51,102, 8, 92, 92, 92,136, 82,153, 72,116, 90, + 13, 0, 74,147,147,147, 89,153,149, 77,188,131,179, 71, 84, 92, 66,146,159, 78,171, 1,107,208,150,232,109, 94, 16,222, 97,202, +163, 71,143, 42, 47, 95,190, 92, 99, 58, 18,176,223,180,181,171, 27, 52,104, 96,183,102,205, 26, 77,151, 46, 93, 34,141,206,235, +230, 56,195,159,122,129,137,143, 30, 61,240, 47,202,217,122,228,242, 45, 70, 78,211,209,136, 93,191,220,184,165,122,245,234,118, + 1, 1, 1,145,165,241, 86,169, 82, 37,207,213,213, 85,227,235,235,155, 35, 16, 8, 94, 89,178,116, 58, 85,149, 42, 85, 88,103, +103,103, 77,205,154, 53,115, 44,117,218,151, 74,165,212,104, 21, 43, 14,150,140, 58, 20,240,160, 31, 48, 96, 64, 97,100,248, 41, +213,171,199, 15, 26, 52,200,117,242,228,201,216,178,101, 11,174, 92,185,146, 86,244,152, 86,173, 90,225,226,197,139, 11, 0,204, +227,158,110, 14, 28,222, 61,148, 25, 71,171, 40,182,110,221,241, 7, 76,124,154,138,195, 55,223,124, 35, 46,176,100,181,251,226, +139, 47,144,151,151,103, 91,140,186, 11, 50,198,218, 40, 78,100, 45, 93,186,116, 55,165,212, 3, 64, 11,131,129,189,177,249,167, +173,109,204, 80,140,133,156,148, 48, 60,134, 33, 57, 34, 1,189,251,227,166, 45, 59, 77,247, 43,112,126,247, 1,193,253,181,171, +150,230, 1,104, 87, 84,108,245,234,213, 75, 85,148,211,136,209, 99, 70, 23,138,172,181,171,150,158, 14,248,192,243,147, 57,159, +125, 93,172, 56,251,122,222, 40, 57,195,144,102,166, 62, 90,197,113,190, 1,181,204,113, 22, 64, 44, 22, 99,207,158, 61, 8, 12, + 12, 68,157, 58,117,144,150,150,134,156,156, 28,228,228,228, 20, 90,189, 30, 63,126,140,200,200, 72,136,197,226,247,170,236, 5, +211,234,172,118,117,117, 61, 51,119,238,220, 65, 41, 41, 41,157,211,211, 51,236,143,110,253, 26, 29,123,143, 33,173, 58,245,207, +213, 80,190, 36, 38, 62,209,247,252,241, 93,118, 39,246,174,131, 86,163, 25, 69,200,143,161,198,240, 14,197,228, 83,101, 12,227, +224,235,235,155,107, 42, 84, 60, 61, 61,243,221,220,220,212, 1, 1, 1,133,233,197,141,230, 43,174,236,150,114, 22,248,127,229, +150, 85,159, 70,209, 86, 52,108,132, 76, 38,131, 81,124, 89,146, 79,211,209,150,197, 54,148,101,140, 58, 52,229,220,118,135, 10, + 76,183,109, 35,132,183, 99,199,142,160, 29, 59,118,124, 0,224, 46,128, 83, 0,116, 5,199, 21, 58,205, 83, 74,231, 3,152,207, + 61,239, 28,231,127,149,243, 29,183,102,181, 66,129,111, 86, 1, 90, 83, 74, 47,148, 40,180,202,130,209,241, 29, 0, 51,105,210, +164,244,188,188, 60,219, 65,131, 6,149,122, 76, 66, 66,194,150,237,219,183,191, 38,178,122,244,232, 49,236,192,129, 3,103,146, +146,146,202, 85, 48, 91,107,233, 55, 23,142, 76,183,109,213,101,201, 23, 0,150, 21, 47, 51,193, 6,124,224,250,201,218, 85, 75, +127, 45, 34,182,126, 1,208,163,184,250, 2,128,246, 31,117,199,174,173,107,141,190, 93,210,135,183, 99, 79,244,189,179,176,216, +209,138, 54, 86,226,133, 5,249,152, 12,206, 71,235, 31,129,159,159, 31,174, 94,189,138, 49, 99,198,160,109,219,182,232,222,189, + 59, 42, 85,170, 4,177, 88,140, 23, 47, 94,224,210,165, 75,120,249,242, 37, 84, 42, 21,234,212,169,243, 94,214, 65,124,124,252, +147,130, 96,164, 19,141, 95, 83, 98,137, 84,216,255,211, 47, 60, 10, 71, 29,238, 93, 7,117,126, 30, 0,240, 9, 33,203, 8, 33, + 63,151,224, 16,255, 74, 80,240,249,194,123,247,238,121, 25,173, 86, 90,173, 86,108, 76,191,125,251,182,151, 49,182, 86,126,126, +190,217,163, 14,255, 46,206, 7, 15, 30,120, 24, 71, 71, 26, 71, 23,242,249,124, 97,112,112,176,135,145, 83,173, 86,155, 53,234, + 80, 36, 18, 9,239,221,187,231, 97, 48, 24,222,216,168,195, 34,194,248,100,193, 98,108,148,141, 34,203,232,211,193,117, 27,114, +224,240,110,227,124,209, 73,165,141,122,162, 92, 66,203,232,248,110,129,210,227, 87,174, 92,185,125,191,126,253, 94, 19, 89,189, +122,245, 50, 28, 60,120,240,188,171,171,107, 34,195, 48, 79, 44,205, 71,161,143, 22, 32, 40,186,141, 97,152,251, 45, 26,214, 4, +195, 48,247,231,124,246,153,250, 27,252,244,154,216, 58,244,235,190, 14, 37,181,139, 0, 96,239,228,142, 1,195,198, 97,192,176, +113,182, 0,154, 3, 37,143, 86, 44, 45, 31, 28,254, 62, 52,107,214, 12,161,161,161, 56,125,250, 52, 46, 94,188, 8,149, 74, 5, + 66, 8,164, 82, 41, 52, 26, 13,196, 98,241,123, 43,178, 74,130, 86,171,213,207, 88,176,124, 59,143, 47,212,179,172,150,104,181, +218, 79, 45,121,206,103,204,152,193,160, 24,223,171,241,227,199, 23,155,254,182, 56,103,205,154, 85,236, 40,193,241,227,199,151, + 58,122,176, 36,124,249,229,151,111,108,212,161,153,226,139, 19, 84, 28, 56,188,127, 86,173, 98,135,238,149, 75,104, 49, 12,115, +191,152,209,133, 4, 0, 45,110, 68, 31,165, 84,207,227,241, 22,216,216,216,140,202,205,205,253,189, 71,143, 30,147,122,245,234, +101, 0, 94, 57,200,151,183, 80,233,153,185,243, 90,119,253,110,114, 70,142,122, 77,209,109, 69, 45, 79, 70,177,181,238,135,165, +235,127, 61,176,167, 87, 66, 92,204,250,146,202, 86,146,160, 42,105,180, 98,102, 86,222,130,214, 93,191,251, 34, 61, 43,143,243, +209,122, 11,150, 45, 35,138, 78, 42,253, 95, 0,165, 84, 77, 8,153, 74, 8, 49, 90,116,167,190, 60,247,195,250, 63, 31,252,213, + 15, 76,183,149, 98,205,138, 55,103,130,232,226,142, 43,109,219,223,192,153, 88,202, 4,209,165, 33,209, 66,190, 68, 0, 16, 10, +120, 73, 37, 77, 30, 45, 20,240,146,222,208, 53, 52, 6, 56, 92,192, 61,209, 28, 56,188,179,109,177,101, 62, 90, 70, 17, 84, 18, + 74,138,147, 85, 26, 12, 6,195,119, 0,190,123,147, 5,123,248, 44,123, 19,128, 77,230,238, 95,224,147, 53,164, 96, 41, 62,159, +169,143, 44, 46, 91,175, 94,189, 54, 0,216,192,221,106,255, 12,246,239,223,207, 85,194,235, 15,248,122, 66,200,207, 70,225,101, +238,182, 34,251, 29,254, 27,242,245,119,112,158,252, 39,249,142,134,234,157,223,118, 35,205,129, 3,135,127, 63,138,179,102,149, + 58,234,144, 3, 7, 14,239,156,216, 82,151,103, 27, 7, 14, 28, 56,112,120,115, 31, 75,197,249, 90, 18, 0, 65, 37, 28,100,246, +104, 2, 66, 72, 80, 57, 50,117,134,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,255, 22,103, 89,220,166,199, 19, 66, 70, 82, + 74, 55,225, 29, 64,137, 3, 90, 40,165,127,219, 2, 32,136,227,228, 56, 57, 78,142,147,227,228, 56, 57, 78,142,179,156,231, 25, +249, 79,156,231, 13,228,147, 22, 93,140,219,184,174, 67, 14,127, 59, 60, 60, 60,192,178, 44, 24,134, 65, 76, 76, 12, 87, 33, 28, + 56,112,224,192,225,189,130,197,206,240, 28,138, 49, 9,122,125, 60, 7, 44,102,189,250,131,165, 52,234,183,249,239, 91, 25,123, +247,238,205,179,100,255,240,112, 27,230, 14, 92, 87, 88,203,133, 93,115,114,117, 43, 12,193,115,215, 20,183, 31,203,178, 56,114, +228, 8,186,118,237,106, 52,175, 2, 0, 92, 93, 93,113,228,200,145,194,253, 26, 52,104, 80, 24,188,145, 3, 7, 14,127,115,155, +102,235, 95, 9,132,124, 10,208, 63,135, 93,178, 52,132,102, 60,222,250,218,126, 54, 53,135,129, 33,254, 38, 73,121,160,216, 76, +211, 67,162, 75,232, 62, 49,190,112,108,194,194,194,188,170, 85,171, 22, 9, 32,163,200,110,127,217, 70, 75,121,248, 9, 33,196, +161, 74,253,193, 50,137,236,115,141, 70,227,109,165, 80, 36,165,165, 38,111, 72,139,122,176,206,100, 55,235, 27, 55,110,184, 54, +110,220, 56, 14, 64,118, 89,156, 28, 56,188,209,231,233,175, 1, 75,223,156, 51, 60,169,209,211, 27,122,102, 8, 40, 6,130,224, + 30,125,185,191,103,185,120,170,245,112, 7,203,111, 4,160, 62, 64,235,203,165,146,122,121, 26,109, 18, 75,233, 96, 26,182,247, +174,197,124, 85,122, 31, 3,208,169,132,173, 11,232,203,125,150, 9, 37,150,206,190,117,241,160,216, 70, 70, 80,173, 65,143,105, + 48,137,224, 92,129, 11, 35, 5, 48,148, 16,210, 86, 38,147,213, 80,169, 84, 17,148,210, 7, 0,214, 83, 74,227,202,201,201, 0, + 24,110, 37,151,119,244, 82,136,234, 71,165,100,198,102,235, 12,151, 0, 44,163,148,166,191,169,155,234,149,200,114,217,244, 69, +255,198, 67,151, 78, 8,130, 77,235,239,166, 1, 88, 83,218, 49, 12,195,140,112,115,115,243,118,119,119, 15, 95,219,173,238,230, +113,135,239,161,123,247,238, 0, 48,130,101, 89,111,119,119,247,112, 66,200,102,115,219, 70, 66,136, 43, 0, 62,165, 52,186,224, +191, 28, 64, 0,128, 42, 0, 94, 2,120, 68, 41,205,173,224, 53,122, 39, 56, 61, 60, 60,220, 88,150,253,204,217,217,185,115, 98, + 98,226, 49,134, 97,126,138,137,137,137,123,203,109,207, 70,163,127,133,185,107, 0,163, 44, 57,129, 84, 42, 77,204,207,207,119, + 2, 0,137, 68,146,148,151,151,247,183,141, 18,252, 39,207,245,207,188, 25, 48,226,212,229, 71, 29, 77,147,218,183,240, 47,230, +193, 37,254,167, 46,135,180,124,125,191, 0, 67,113,109, 96, 65,244, 85, 44, 88,176,128, 44, 92,184,112, 88,213,170, 85,171, 51, + 12,243,116,238,220,185,175,133,190, 41,186,109,222,188,121,127, 70,110, 45,134,211,195,167,217,161,190,253,122,183, 30, 59,114, +168,149,187,163, 21,226, 83,114,237,127,220,178, 99,249,142, 29,187,186,124,214,183, 93, 71, 0,248,250,235,175, 63,174, 84,169, + 82,101, 30,143, 23,254,213, 87, 95,253, 82, 26, 39, 7, 14,127, 3, 44,155, 84,186,204,231,211,191,183, 28,249,180, 23, 64,134, +182,106,218,160,197,168,193, 93, 9,229, 73,208,127,196,116,189,197, 92,149,135,137,193,203,251,166,118,128,255,164,222, 93,131, +152, 15, 2, 42,195,213, 81, 9, 48, 2,108, 60, 30, 97,191,102,233, 87,235, 1, 52, 46, 71, 54, 59,189,184,182, 27,241, 25, 6, + 16, 2, 16, 2, 48, 4,200,201,103,209,254,227, 33,243, 44, 23, 74,132,177,145, 17, 76,218,157, 15, 0,188, 10,183,113,132,212, +119,116,116, 92, 55, 97,194, 4,219,218,181,107,187, 74, 36, 18, 89, 94, 94, 94,245,176,176, 48,239, 57,115,230,180, 35,132, 44, +161,148, 30,180,144,211,179,154,135,219,190, 53,147,134, 55,170, 83,197, 11, 2, 77, 14, 88,117,110,165,103, 97,207,155,142, 94, +191,127, 4, 33,164, 95,121,166, 76, 72, 73, 73, 33, 0,224,224,224, 64, 95, 23, 89, 77,134,126, 63,185, 61, 38,173, 60, 5, 85, +190,102,103, 73,199,199,197,197, 25, 45, 91,222, 71,142, 28,241,239,218,181, 43, 26,121,123,224, 70,215,100, 52, 60, 20, 3, 0, +133,233, 22,148,117, 33,128, 89, 5,237,240, 46, 30,143,119, 58, 40, 40,200,251,179,207, 62, 35, 13, 26, 52, 64,112,112,112,149, +221,187,119, 7,241,249,252,112,131,193,240, 0,192, 83, 74,169,206, 76,110, 1, 0, 31, 30,143, 87,251,223,204,233,230,230, 38, +213,104, 52, 67, 60, 60, 60, 70,118,235,214,173,118,215,174, 93,137,143,143, 15,158, 60,121,210,224,196,137, 19,243,234,214,173, +251, 32, 38, 38,102,147, 72, 36,218, 30, 23, 23,151,247, 22,190,240, 70, 2,112, 43, 48,112, 44, 48, 99, 29, 7, 96, 1,165, 52, +222,220,115,228,231,231, 59, 25,223,163,132, 16,167,191,179, 60,150,156,139, 16,242,152, 16, 98, 87,240, 27,165,173, 25,134,129, + 94,175,207,213,235,245, 85,203,224,244, 1,192, 88,144,101, 74, 41, 45, 45, 16,180, 20, 0,218, 55,247, 79, 3, 65,136,209,162, + 85,204, 71,102, 72,161, 0,163,240, 63,117, 37,196,238, 53, 43, 88, 17, 44, 88,176,128,204,155, 55, 15,243,231,207,239, 10, 32, +144,101,217, 75,126,126,126,171, 95,163,100,217,194,109,243,230,205,251, 97,193,130, 5, 4, 64,177,130,200,174,114,221, 65,159, +124,210,189,245,162,217,227,173, 98, 83,181,184, 23,158, 7, 59, 43, 33,230, 77, 29, 35, 82,171,117, 77,215,255,178, 99,228,218, + 37,211, 55, 27, 12,134, 15, 1,124, 96, 48, 24,110, 3,248,165, 52, 78, 14, 28,254, 6,180,182,104, 82,233, 18, 30,114,130,170, + 61, 91,194,128,161, 94,149,156,123, 77,248,172,143, 52,192,175, 26,242, 97,133,136, 20, 3,142, 31, 61, 1, 0,123, 45,179, 58, +245,253,128, 47,196,246,165,243,167,250, 6, 54, 10,192,195, 88, 29,110,199, 26,160, 10,215,129,199,232, 96, 96, 41, 64,145, 95, +222, 82,199,164,235,113,249,169, 6, 12, 1,120, 12,192, 48, 4, 60,166,156,100,172,230,217,215, 91,239, 4,164, 36,178, 0,171, +121, 86,193, 23,208,135, 53,106,212, 88,181,112,225, 66,151,196,196, 68,187,219,183,111, 67, 44, 22,195,214,214,150,239,230,230, +230,187,106,213,170,204,241,227,199, 79, 37,132,220,165,148, 70,152,201,233,215,233,131,218, 87, 55, 45,253, 90,169,187,113, 2, + 25,123,254, 7, 30, 67, 33,148, 91,193, 91, 42,197,137, 79,170,217,245, 58, 26,126,144, 16,226, 71, 41,141, 45,139, 47, 52, 52, +148,167, 86,171,251, 89, 91, 91, 55, 17, 8, 4,206, 98, 27, 79, 54,142,223, 40, 53,153, 84,121,153,228,164,106, 57, 57,200,185, +227,138, 47,218, 96,210,202, 83, 88,181,251,250,182,250, 72,152,107, 73, 29,100,220, 58,135,123,233,127,189,180, 46,114,129, 57, +101,181, 5, 48, 93,163,209, 48, 66,161,144, 72, 36,146, 65,139, 22, 45,210,246,239,223,191,208, 1, 44, 48, 48, 16,129,129,129, + 36, 59, 59,187,202,185,115,231,170,236,216,177, 67, 79, 8,121, 76, 41, 61, 84,178,197, 66, 22,149,159,159, 87, 73, 34,149,170, +126, 92,191,126, 69,203,150, 45, 89,211,121, 18,203,195, 9, 0, 54, 54, 54,155,107,212,168, 65,102,206,156, 25,247,166, 56,189, +189,189, 79, 5, 6, 6,182,105,223,190, 61,191,121,243,230,112,115,115, 43,220,230,224,224,128,192,192, 64, 18, 29, 29, 93,231, +210,165, 75,235, 79,157, 58,181,218,219,219,251, 92,120,120,120,251,127,178,213, 41,176, 84,193, 2,225,180,169,152, 64,200,239, +166,177,136, 16,171,141, 27, 55, 58, 25,231,100,212,233,116, 48, 24, 12,133,107,227,194,178, 44, 12, 6, 3, 22, 45, 90,100, 48, +179, 78,115, 81, 16, 28,218,100, 97,139, 91,139, 68, 34,243, 34,247, 18,132,184,138, 51,106,202,229,114, 47, 0,157,106,212,168, + 49,221,116,115,117,199, 87,235,220,220,220,200,120,181, 77, 8,128,150,165,221,238, 11, 23, 46, 28, 50,127,254,252,238,248,115, +206,202,218,189,123,247, 62, 87,100,191,218, 5,235, 92, 66,200,121,134, 97,142, 0,216, 10,224, 47, 86,119,153,204,106,212,132, +207, 63,179,138, 73,209,226,155,131, 41,216,122, 49, 11, 67, 2, 21,152,244,145, 18, 3,250,247,149,239,255,223,129, 81, 0, 54, +155, 28,242,196,207,207,143,132,134,134,114, 34,235,253, 66, 67, 0,142, 38,255, 53, 0,140, 83,102,165, 20, 60, 23,246, 69,210, + 77,247, 51,174,147, 11,210, 29, 11,142,163, 38,188,201, 0,110,149,179,189,187, 80,144,135,191,128, 15, 0,199,142, 29,163,157, + 59,119, 38,198,117,241, 45,123,175,227,195,251,119,235,216,185,109, 51, 48, 18, 91, 60, 75, 2,174, 69, 81,240, 25, 29, 24, 80, +220,184,114,142,130,207,110, 47,114,226, 18,173, 39,196,187,215,151,181,107, 5,124,247,211,210,137,188,199, 73,124,108,189,164, +130, 54, 63, 7,201, 9, 81, 72,138,139, 68,124,204, 75,196, 70,189,124, 0,144,121,230,114,254,181,224,128,129, 45,248, 6,100, + 81, 80,159,197,142,188, 44,155, 83,155, 27, 90,197, 39, 32, 32, 93,100, 0,180,185,161,102, 84,250,153, 18, 26,224,118,213,170, + 85, 91, 54,123,246,108,143, 71,143, 30, 89,231,230,230,230,158, 56,113,226, 66,100,100,164,179,139,139, 75,244,152, 49, 99,154, +185,187,187, 59,125,252,241,199,178,125,251,246,205, 6,240,153, 25,156, 1,221,154,212,187,182,101,245,247,242,212,253,107,160, + 9,187,143,227,241,185,184,146,168,162, 85,148, 98, 50,174,142, 35,172,196,124,124,221,220,205,170,211,175, 97,223, 1, 24, 80, + 26,231,213,171, 87, 93,101, 50,217,202, 1, 3, 6,184, 77,152, 48, 65,100,224,219,240, 15, 92, 75, 85, 78, 95,127,205, 77,165, +214,242,250,183,169,140,201, 3,107, 99,242,170,179, 70,145, 53,210,219, 59,131, 45,142,211,195,195, 99, 4,203,178,222, 5,127, + 43, 27,215,109, 47,103, 47, 54, 57,101, 97, 58, 81, 56, 44,118,115,115, 3,195, 48,225, 49, 49, 49,155,205,189, 70, 18, 73,241, +179,167,216,218,218,162, 85,171, 86,240,243,243,227,183,108,217,178, 54,128, 67, 37,113,106,181, 26, 87,150,165, 80, 40, 20, 82, +123,123,123, 91,133, 66,145,170,213,106, 43,196, 9, 0,118,118,118, 61, 91,181,106,197,223,189,123,119, 74,120,120,248,141,254, +253,251,191,180,182,182,126,205,250, 43,151,203, 81,189,122,117,124,245,213, 87,252,142, 29, 59,150,201,233,236,236,220,110,199, +142, 29, 32,132, 20,190,180,139,194,203,203, 11, 46, 46, 46,232,212,169, 19,191,103,207,158,237,202,251, 28, 89,208,208,156, 41, +198,162,181,224,117, 49, 91,114,247, 91,113,251,155,113,221,147,140,214, 37,137, 68,146, 84,158,124, 22, 65,137,221,157, 98,177, +184,208, 10, 85,244, 92,197,113, 50, 12,131, 57,115,230,128, 16, 2,129, 64, 0,161, 80, 88,236,186,117,235,214,150,230, 51,154, + 16,194, 8,133,194,233,124, 62,255, 51,181, 90,237, 33,145, 72,226, 12, 6,195, 54,181, 90,189,168,192, 34,106, 83,220,189, 91, + 18,167, 92, 46,247,122,246,236, 89,141,146, 42, 69,173, 86,163,118,237,218,128, 26,143, 75,227, 12, 11, 11,243,170, 90,181,170, + 15, 0,227, 20,109, 23, 41,165, 45, 77,254,155,226, 34,165,244,163,130,223, 79, 95,188,120,225,101, 20, 90,166,156, 58,173,214, +219,195,201, 26,247, 34,242,176,245, 98, 22,254,152,237,134,182,139,226,208,163, 62, 31,126,158, 86,208,107,117, 62,189,123,247, +222, 14,192,167,224, 37,249,113,239,222,189,125,121, 60,222, 89, 0,191, 1,200,252,167,238,121,142,179, 98, 40, 67,139, 56, 18, + 66,142,154,156,191,139,241,255,140, 25, 51,102, 45, 94,188,248, 17, 33,228,168,105,186,233,126,166,235,130,246,230, 40,165,180, +203,204,153, 51, 3,150, 44, 89,242,173,113,223,191, 67, 33, 90,210,117,104,157,156, 47,199,165, 40,107,240,121, 6,240, 25, 2, + 62, 15, 0, 37,136,140, 8, 67,118, 86,198,101,250,242,127,225,230, 89,178,122, 55,175, 91,175,246,210, 93,171,166, 49, 63, 95, + 82, 33, 35, 55, 31,161,119,207,227,214,249,223, 18, 12,122,195,111, 32,244, 54,192, 4,227, 37,251,132,210,253,134,242,223, 8, +120,101, 21, 3, 41, 34,182,222,218, 87,238, 71,190,190,190,139,231,204,153,227,117,247,238, 93, 69, 86, 86, 86,242,206,157, 59, +159,168,213,234,187, 0,126,136,138,138,106,245,195, 15, 63,200,150, 47, 95,222,190,118,237,218, 62,251,247,239, 87,153,193, 89, +103,234,208, 1,215, 62,155,240,133,228,241,190,117, 16, 61, 14,198,156,251, 41,134, 63,226, 85,179, 1,172, 66,116, 78,243,228, +124,253,233,239, 91, 85, 98, 42, 43,132,168,102, 35,106, 93,150, 37, 75, 38,147,173,220,177, 99,135, 87,195,134, 13, 25, 0,184, +244, 84, 47,158,190,254,154,219,201,197,205, 73,115,127,123, 36,101,168, 49,113,221, 61,156,184,150,244,123, 81,145,245, 23, 67, + 96, 65,119,161,105,218,145, 35, 71,100, 0,254,226, 12, 98,154, 94, 90, 55, 34,165, 52,157, 16,242,157, 72, 36,154, 67, 8,161, + 13, 27, 54,188, 87,171, 86,173, 28, 91, 91, 91,228,229,229, 65,173, 86, 67, 40, 20, 34, 47, 47, 15,145,145,145,184,113,227, 6, +108,109,109, 45,186, 86, 57, 57, 57, 80, 40, 20, 96, 89,182,194,156, 6,131,129,108,216,176, 65,254,232,209, 35,249,129, 3, 7, +156, 39, 77,154,148, 90,179,102,205,219,125,251,246,125,238,228,228,164,190,127,255, 62,174, 94,189,138,244,244,116, 52,105,210, +196, 44, 78,141, 70, 3, 62,159,143,188,188, 60,136,197, 98,240,249,124,232,245,122,176, 44, 91, 40,190,114,114,114,144,150,150, + 6,161, 80, 8,141, 70,243,143,223,239, 70,139,150, 41, 74,235,126, 43,110,255,178,240,166,253,164, 74,235,238,204,200,200,144, +218,216,216, 76, 55,199, 66, 71, 8, 1,143,199,131, 80, 40, 4, 33, 4, 45, 91,182,196,240,225,195, 81,191,126,125,132,133,133, + 97,207,158, 61,184,117,235, 22, 4, 2, 65,225,254,102,247, 79,180,110,205,147, 72, 36, 87,187,117,235, 22, 48,123,246,108, 73, +229,202,149,241,248,241, 99,207, 37, 75,150, 76, 63,115,230, 76,119, 66,200, 7,148, 82,182,108, 43,125, 65,151,224,171,238,194, + 78,106,181, 26,143, 31, 63,182,228,152,191,160, 90,181,106,145, 12,195, 60,103, 89,246, 18,128,218,148,210,150,132,144, 19, 0, +228, 69,118,205,165,148,126, 68, 8,201, 2,240,128, 97,152,167, 44,203, 70, 22,231, 78,165, 80, 40,146, 99,146,178,156,237,173, + 36, 24,220,194, 10,109, 23,197,161,215, 7, 98,136,133, 4, 79,194, 19, 80,173,106,101,114,239,242,161, 15, 10, 68, 86,195,248, +248,120, 0,248, 0, 64,120,116,116,180,171, 81,104,113,120, 63, 80, 84, 12, 25, 5,212,226,197,139,187, 20, 39,174,138,121, 54, + 95, 75, 95,178,100,201,183, 38,255,211, 43,208,118,180,194,235,206,240,173, 11,172, 92,127, 10,173, 99,199,142,149,174, 64, 88, +244, 56,122,112,247,245,182, 90,226, 21,208,160,133,137,117,136, 34,248,198, 85, 0,116,155, 89,153,113,235, 42,101,100,242,109, + 27,190, 29,207,108, 60,175, 66,116, 92, 18,174, 30,223,134,228,248,136,173, 0,157, 68, 95,238,207,170,112, 99, 89,165,119,128, +147,131, 61,242,181, 20, 44, 5,240, 23,177,245, 86, 68, 86, 87, 31, 31,159,133,215,174, 93,243,202,207,207, 87, 92,185,114, 37, + 99,199,142, 29,207, 53, 26,205, 79,148,210,157, 5,251, 28, 78, 73, 73,249,154, 82, 10,133, 66,193, 23, 8, 4,210,210,156, 57, + 9, 33,245,167,126, 54,228,242,119, 27,182, 72,158, 63,188,135, 31, 14, 28, 71,134, 74,101, 56,159,148,247, 49,165,244,104,193, + 62,103,239,164,228,197, 82,208, 74, 2,134,192, 85, 46,112, 33,132, 72, 40,165,249, 37,124,185,246, 31, 48, 96,128,155, 81,100, + 1, 64, 74,182,142,175, 82,235,120,205,253,237,209,160, 77,111, 4,159,219,143,125, 23, 99, 81,213, 81,118,209, 91,158, 81,106, +141, 50, 12, 19,110, 34,154, 42, 31, 57,114, 68,214,181,107, 87, 21, 0,211, 46,209,191,164, 51, 12, 19, 94,198,195, 54,151, 16, +226,188,125,251,118, 70,167,211,229,132,133,133,193,197,197, 5,206,206,206, 80, 42,149, 8, 13, 13,197, 31,127,252,129, 39, 79, +158,128,101, 89,212,173, 91,215,162,235,149,154,154,138,251,247,239,163, 83,167,206,147,146,147,147,172,109,237,236,115, 47, 95, +186,184,188, 60,156, 44,203, 18, 0, 8, 8, 8, 64, 64, 64,128, 36, 54, 54,214,227,232,209,163, 78,223,124,243, 77,148,151,151, +215,174,188,188,188,215, 44, 7,230, 10,173, 2,225, 82, 40, 2, 37, 18, 9,132, 66, 33,178,178,178,144,152,152,136,236,236,236, + 87,125, 57, 54, 54,111, 69,104, 21,103,161,122,147,251,255,157,226,176, 56, 49, 69, 8, 25, 8, 96,186,153,101,129, 94,175,135, + 80, 40, 68,227,198,141,177,102,205, 26,220,186,117, 11,191,253,246, 27, 60, 61, 61, 49,116,232, 80, 48, 12,131, 71,143, 30, 89, +154, 69,246,218,181,107,211, 63,254,248,227,128,237,219,183, 75, 34, 35, 35,241,228,201, 19,216,216,216, 96,205,154, 53,226,145, + 35, 71, 86, 59,119,238,220, 92, 0,203,202, 44,171,201,232, 66, 55, 55,183, 62,181,107,215,254,203, 62, 46, 46, 46,202,147, 39, + 79, 58, 25, 5, 88,209, 17,137,197, 32, 99,238,220,185,223,251,249,249,173, 42,232, 46, 12, 4, 32,167,148,182, 62,112,224, 0, + 1,128, 94,189,122, 81, 66,136,241,133,244, 96,255,254,253,109, 66, 67, 67,233,252,249,243,139,109,231,146,147,226, 55,124,191, +102,227,247,223, 45,152, 42,154,220, 73,137, 94, 31, 8, 32, 17, 18, 88,203, 4, 88,180,122,179,238,206,141,139,247, 93, 93, 93, +143, 2,248, 56, 62, 62, 30,174,174,174, 57, 0,158,242,120,188,112,131,193, 16,199,249,194,191, 91, 40, 78,139, 20, 88,149,227, +139, 19, 74,229, 17,106,166, 22, 47, 35,102,206,156, 25,176,120,241,226,155, 21, 17, 89,166, 78,240,132, 16, 74, 8,105, 77, 41, +189, 80,248, 50, 45,177,203,176,208,246,197,184,186, 56, 59,216,205, 24,218, 28, 44, 11,232, 13,128,222, 64,145,171,202,195,227, +135,183, 84,144,144, 3,102,229, 72, 44, 90,250,205,236, 47,170,220,139, 97, 16,151,174,197,133, 67, 27,105,114,124, 68, 79,250, +114,223,167,111, 74,100,185, 56, 57,156,223,189,241,107,220,122,169,129,129,125,165,179, 88,150, 22,254,126, 11, 47,156,234, 14, + 14, 14,203,175, 95,191, 94, 89, 44, 22, 43,158, 61,123,102,216,191,127,127,156, 70,163, 89,111, 20, 89, 5, 24,216,160, 65, 3, +157, 92, 46, 71, 78, 78,142, 90,171,213,230,148, 34,178, 60, 90,215,175,115,241,187, 13, 91, 36,249, 26, 13, 50,243,212,224,217, + 59,189, 38,178, 10,208,172, 77, 13,119,119, 34, 81,128, 2,136,200,210,198,149, 36,178, 0, 64, 36, 18, 5, 77,152, 48,193,180, +127, 27, 14, 10,129, 94, 38, 22, 24,174,132,164,176,193,231,246,227,210,163, 20, 86, 34,228, 25, 28,233,203, 42,101,149, 61, 38, + 38,102,115, 92, 92,220,204,184,184,184,153, 38,226, 42, 2,192,204,154, 74,225, 95,210,253,109, 68, 51,227,226,226,102,178, 44, +187,217,140,170,141, 27, 48, 96, 64,140,191,191,127,166,159,159, 95,102,106,106, 42, 66, 66, 66,144,158,158,142, 31,126,248, 1, +143, 31, 63, 6,203,190,210,129,197,117,163,152, 33,144,144,158,158,102, 69, 41, 69,122, 90,170,124,246,236,217,202,242,112, 26, + 12,134,215,158, 45,119,119,119,140, 25, 51, 70,168, 82,169,108,162,162,162,172, 77,183,153,203,169,209,104, 10, 67, 97, 80, 74, +161,209,104,144,153,153, 9,141, 70,131,231,207,159, 23,138,172,130,243,191, 53,139,150,241,183, 84, 42, 77, 52, 58,136, 74, 36, + 18, 16, 66,138,235,126,123, 35,209,159,141,231, 34,132, 80,169, 84,154, 88, 14,113, 88,102,121,204,188,238, 16, 10,133, 24, 62, +124, 56,110,222,188,137,176,176, 48,240,120, 60,228,230,230, 66,165, 82,161, 93,187,118, 16,137, 68,150, 90,180,168, 80, 40, 28, + 56,107,214, 44, 73,120,120, 56, 82, 82, 82,140,206,244, 48, 24, 12,152, 52,105,146, 84, 44, 22, 15,180,212,116, 31, 23, 23,215, +225,217,179,103, 62, 69,151,132,132,132, 76, 83,159,194,242,226,192,129, 3,164, 87,175, 94,180, 87,175, 94,212, 40,184,204, 69, + 70, 76,200,134,223, 14, 31, 61,253,229, 87, 75,115, 84,185,217,168,234, 38, 69, 78,118, 38, 22, 45,254, 78,119,237,218,165,243, +211, 39,141,110,186,127,255,254, 37, 0,158, 22, 28,242,116,255,254,253, 67,190,250,234,171, 95, 80, 16,230,129,195,187,131,226, +180,136,233,179,247, 38,186,247,138,227, 40,232, 62,148,150,147,210, 56,226,176,149, 81,120, 21,136,174,243,175, 89,180, 74,109, +124,170,245,173,231,236, 96,127,110,251,218, 5, 86, 71, 31, 2, 49,209, 17, 72,142,143,196, 7, 77, 91,227,241,195,123, 96,117, +134,131,244,217,254, 50,135,167, 19,239,222, 53,252,106,250,127,222,170,105, 45, 44, 61,154,131,103,193, 39,145,145, 28,191,150, +134,239, 59,248, 38, 46, 16,169,210, 59,192,217,209,225,252, 47,235, 22,218,157, 8, 97, 16, 29, 29,129, 67,191,172,130, 78,251, + 23, 93,113,220,226,198,155,213,136,114, 50, 18,161,201, 54, 64,194,168, 36, 22, 94,212,231,142,142,142,219,191,255,254,251,209, + 77,155, 54,149,245,239,223,255, 89,122,122,250, 55,148,210,125, 38, 13,252,135, 62, 62, 62, 83,214,174, 93, 91, 45, 58, 58, 26, +127,252,241,199, 51, 0,183, 75,225,140,225,241,120,235,255,248,101,243, 84,105, 21, 95,252, 48,235, 75,253,129, 91, 33,221, 40, +165, 39, 76, 56,253,130,106,215, 56,250,205,148,177, 12,123,231,119,220,143, 76,196,203, 76,245, 31, 37,113,166,164,164,144,188, +188,188,202, 54, 54, 54,166,231,129,171, 60, 87, 61,173, 79,141,184,118,211, 47,187,229,107, 13, 16, 11, 24, 58,177,187, 87,220, +141,223,246,217,167,168, 83,136,113, 52,162,165,120,150, 99, 0,159,207,135,147,211,159, 61, 72, 33,233, 22,141,125,176,186,121, +243, 38,195,227,241, 94, 19,232,166, 22, 34, 75, 45, 69,150,192, 92,206,162, 66,203, 8,189, 94, 79,202,203,169, 86,171,139,141, + 57, 86,156,175, 22,203,178,127, 75,249, 45,177, 80,153,118, 25, 26,253,233,242,243,243,157,164, 82,105,162,177,251,239, 77, 89, +180, 42, 50, 18,177,180,238, 75, 75,242,199, 48, 12, 88,150,133, 80, 40, 68,221,186,117,113,244,232, 81,216,217,217,193,218,218, + 26,214,214,214,144, 74,165,176,183,183, 47, 20, 90, 12, 99,246, 40, 29,170, 86,171, 61, 61, 61, 61,241,252,249,115, 72, 36,146, +194, 69, 44, 22, 35, 32, 32, 0,185,185,185,238,111,207,118,255,247, 96, 68,223,160,238,235,118,252, 58,248,232,209, 99,159,107, +213,249,181,124,125,125,232,237,107,231,238, 79,159, 52,186, 35, 39, 77,254, 91, 48, 90,163, 76,125,173,102,204,152, 49,171,188, +124, 51,102,204,152, 85,156,133,171,188,130, 11,175,186,250,140,107, 20, 10, 45,163,130, 44, 78, 73, 26, 69,214,214, 53,243,173, +127,189, 11,196,196,132,227,244,190,213,217, 58,173, 38,157,101,117, 94, 47,159,220, 3, 24,108, 51, 43, 11, 12,109,212,189, 83, + 27,114,250,145, 6, 89, 25,201,120,122,251,100, 4,242, 68, 51,223,164,200,218,190,110,129,221,145,135, 4,209,209, 17, 56,177, +103, 85,166, 78,175,253,144,190,220,127,183, 34,220,131, 68,162,238,125,107,218,116,249, 44, 48, 14, 6, 98,192,192,199,161, 31, +185, 5,146,238,113,151, 74, 31, 25,102,138,228,228,228, 69, 86, 86, 86,204,178,101,203, 62,205,207,207,159, 79, 41, 61, 96,114, +227,180,171, 90,181,234,210, 13, 27, 54,120, 68, 69, 69,137, 46, 95,190,156,118,254,252,121, 10, 96,113, 25, 47,240,105,132, 16, + 94,253,202,238,227,239, 68,196,118,163,148,254,110,194, 25,208,165,129,255,149, 45,139,231, 42,116, 87, 14, 32, 39, 62, 26, 51, +175,196,100, 1, 48,187,190,117, 58, 29,210,211,211,161,203, 73,215,127,224,154,155, 57,191,183,147, 58, 49, 61,159, 47, 96, 85, +122, 63,235, 36,245,185,180, 8,158, 76, 38, 43,119,189, 10, 69, 34,232,116, 58,184,187,187, 23,166,101,101,231,128, 16, 2, 87, + 87,215,178, 30,182,133, 0, 38, 53,107,214,140, 52,110,220,248,198,170, 85,171, 78,149, 38, 86,202, 99,209, 42, 11,230,114,178, + 44,203,148, 80,191,164,188,156,166, 22,173,178,132,214,219,180,104, 21, 39, 90, 76, 69,162,169, 16, 42,143,143,214,223, 41, 14, + 45, 17, 97,197,240, 20, 90,180,238,221,187,135, 74,149, 42, 65,171,213, 66,161, 80, 64,161, 80,192,202,202, 10,217,217,217, 16, + 8, 4,176,176,204,172, 68, 34,137, 10, 9, 9,241,113,116,116,132,193, 96,120, 77,108, 61,123,246, 12,114,185, 60,214, 82,139, +150,155,155,219,201,130, 81,135,175,193,197,197, 69,249, 38,234,213,212,146,213,171, 87,175,114,125,152,173, 91, 60,117, 7,128, + 29,189,123,247,222,254,224,218,177, 15, 92, 93, 93,143,249,249,249, 17, 0,224, 70, 24,190, 95,214,172, 18,122,216,146,139, 88, +162, 52, 38,255,147, 1,144,130,255,201, 38, 66,204,244,183,166,152,180,212,197,139, 23,159, 51,241,239, 74,174, 96, 17,140, 33, + 30, 94,243,133,230,151,101,201,114,178,183, 59,247,211, 15,243,173,247, 5, 3,177,209,225,184,112,112, 77,166,222,160,253, 16, + 44,141,191,118,230,224, 1, 16,168,240,242,192, 5, 96,159, 25, 77, 4,234,215,175,233,133,223, 30,233,144, 28,243, 12,148,178, + 91,105,226, 47,170, 10, 55,142, 5, 34,107,235,154,249,118,191,222, 35,136,137, 14,199,233,125,171, 51,245, 6,237,135,229, 9, +118,106,196,103,132,216,242,228,146,245,131,219, 55,236,227, 85,213, 3, 44,213,129, 21, 82,244,152,230,192,127,122, 71,245,155, +103,123,222, 62, 54,135,253, 60,230,154,121,129, 64,115,114,114,190, 38,132,252, 74, 41,125,108,210, 32,127, 84,173, 90,181,111, +127,252,241,199,202,177,177,177,138, 59,119,238,100,109,218,180, 41,156,101,217,133,148,210, 50, 71, 81, 81, 74,191, 36,132,252, +100, 26, 47,135, 16, 82,103,234,167, 3,174, 13, 24,246,153, 36,252,204, 14,216,134, 63,198,148, 43,113,134,167,233,154,254,148, +210,132,146,184, 28, 28, 28,104,114,114,114, 68, 70, 70,134,143, 92, 46, 71,106,106, 42,210,210,210,144,145,145, 1,117, 86,186, +222,222,144,145, 75,244,105,224,243,249, 72,138,214,195, 96, 48, 36,148,101,205, 42,105,212, 33,128,197,121,121,121, 70,145, 85, +152,110,109,109,189,216,218,218,218,232,163,181,185,132,151,152, 49,188, 3, 41, 8,239,208,228,247,223,127, 15,237,216,177, 99, + 76,113, 98, 69, 44, 22, 35, 63,223,178, 40, 33, 37,141, 98, 44, 15,103, 73, 22,173,162,233,150,112, 26,187, 47,141, 78,240, 69, +211,141,224,241,120, 96, 89,246, 47,233,255,180,104, 49, 29, 29, 88, 30,145,243,154,117,185,140,192,161,229, 25,137,248,166, 45, + 90,198,107, 33, 20, 10,113,248,240, 97, 12, 27, 54, 12, 6,131, 1, 50,153, 12, 86, 86, 86,144,203,229, 56,120,240, 32,140,225, + 31, 44,201,162, 78,167,219,185,120,241,226, 89, 27, 54,108,144, 82, 74, 33, 18,137, 10,133,214,252,249,243,243,180, 90,237, 78, +115,132, 86, 97,196,119,150,134, 84,119, 44,125,212, 97,113,199,148,224,175,101,179,112,225,194, 33, 44,203,118, 71,145, 16, 14, + 69,246,123, 45,244, 67,105,225, 29, 0,216, 46, 92,184,112, 4,203,178,198, 1, 52,175,141, 46, 52,217,207,248, 46,241,233,221, +187,247,246,162,163, 14, 57,188,243,184,245, 47,206, 91,107,147, 64,165,164,160,189, 40, 20, 92,252,146, 69, 86,111, 63, 39,123, +135,115,155, 87,205,183,222,117, 19,136,139,126,137,171,135,215,102, 26, 88,157,169,120,105, 97, 97,203, 91,223,205,201, 6,105, +215,243,144,149, 18, 5, 80,220,169,184,200,234, 91,221,201,193,254,252,150,213,243,237,246,223,101, 16, 27, 21,142,243, 5, 98, +176, 34, 34,107,144, 72,212, 61,160,134,199,150,126, 31, 53,183, 85, 18, 61,244,145,161,248,105,104, 31, 4,119,213,162,121, 95, + 37, 26,117, 82,160, 90, 61, 73,159,227,155,211,218,186, 5,146,207,204,181,110, 21, 17, 89, 93, 43, 87,174,188,224,198,141, 27, + 94, 44,203, 42, 46, 92,184,144,189, 97,195,134,151,249,249,249,171, 41,165,199, 44,120, 57,152,138,172,250, 51, 70, 14,189,252, +237,143, 63, 73, 66,130,111, 97,233,206, 35,200,211,105, 12, 39, 99,114,122,155,118, 43,150, 98, 41, 57,179,122,245,234,202,115, +230,204, 17,165,165,165, 33, 37, 37, 5,233,233,233,133, 75, 78, 78, 14, 92, 92, 92,240,251,239,191,107,179,178,178,174,155,241, +178,121,227,163, 14,139,131, 66,161,128, 80, 40,132, 86,171, 45,180,104,137,197, 98, 40,149, 74,164,166,166, 98,239,222,189, 0, +144, 86,170,133, 77, 40,138,103, 24, 82, 73, 42,147,169, 37, 18, 9, 91,156, 85,205, 82,206, 2,196,124,244,209, 71, 30, 11, 23, + 46,148, 52,104,208,224, 47, 22,173,242,112, 82, 74, 85,237,219,183,151,173, 94,189, 26, 94, 94, 94,208,104, 52,175, 9, 42,134, + 97, 32, 20, 10, 17, 29, 29,141,111,190,249, 6,148, 82,213, 63,221,242,152,138, 22, 83, 49, 84,224, 67,245, 23, 33,100,174,197, +168,172,174, 65, 75, 71, 34,154, 10, 55,177, 88,140,140,140, 12, 41, 33,100, 96, 9, 17,236,205,182,104, 25,133,214,227,199,143, +177,125,251,118,116,234,212, 9,182,182,182, 72, 79, 79,199,190,125,251, 16, 26, 26, 10,145, 72, 4, 66,136, 37, 86, 45,182,113, +227,198,223, 93,186,116,169,107,255,254,253,253,167, 76,153, 34,173, 85,171, 22,158, 62,125,138,133, 11, 23,230, 7, 7, 7,135, +229,229,229, 45,132, 57,129, 77, 11, 34,190, 27,131,145,154, 53,234,176,200, 49, 69, 81, 66,120,135,143, 74, 96, 51, 13,253,240, + 90,120, 7, 83, 92,189,122,213,187,114,229,202,126,120, 53,146,208,248,194, 53, 29, 93,248,218,203, 56, 62, 62,190, 33,184, 81, +135, 28,254,217,182,238, 2, 33,164, 48, 96,169, 81,124,253,101,212,225, 95,143, 36,147,250, 15, 29,105,189,243, 38, 65,116,100, + 24,110, 31, 95, 95, 84,100,153,211,216, 4,153,198,218,144, 72,229,181, 88,242,106, 56,115, 86, 74, 52, 64,121, 22, 11,173,162, +156,160,236,151,253,135,140,180,219,125,155, 32, 46,250, 5,174, 28, 90,103,177,200, 50,229, 28, 36, 18,125, 37,224,145, 57,157, + 91,214, 23,182,168, 87, 3,242,164, 8, 36,196,196, 97,239,227,228,180,176,116,245,103, 87,136, 22,145, 47,212, 63,117, 26, 97, +103,103,235, 34, 64,151,209,246,118,215,143,100,253,230,254, 33,163,165, 90,186, 56,238, 50,157, 95,108, 62,255,122,206,234,214, +214,214,203,130,131,131, 29, 37, 18,137,245,237,219,183, 13, 27, 55,110,140,206,207,207, 95, 78, 41,221, 99, 86,217,255,186,221, +163, 97,141,170, 23,190, 93,183, 89,146,147,171, 66,174, 70, 11,177,179,171,225,215,107, 15,123,150, 20, 0,179, 40,167, 88, 44, +222,189,103,207,158, 78,129,129,129, 94,117,234,212, 97,210,210,210,144,147,147,131,156,156, 28,163,213, 11,143, 31, 63,102, 35, + 35, 35, 99,197, 98,113,153,249,124, 83,163, 14, 77, 57, 77,194, 59,204, 2,192, 16, 66,110,221,187,119, 47,167, 99,199,142,144, + 74,165,200,205,205,133,167,167, 39,244,122, 61,142, 31, 63,142,224,224,224, 92,150,101, 47, 0,184, 87, 90,217,243,242, 84,158, +132, 16, 38, 79,165,170, 59,100,200,144, 86,147, 39, 79,126,109, 72,186,147,147, 19,236,236,236, 44,226, 4,128,180,180,180,154, +191,255,254,251, 23,247,238,221,251,178, 83,167, 78,202, 89,179,102,137,189,189,189, 97, 48, 24,152,242,114,166,167,167, 43,239, +220,185,179,188, 69,139, 22, 99, 59,118,236,200,255,246,219,111,161, 84, 42, 97, 48, 24, 32,149, 74,145,149,149,133,133, 11, 23, +226,242,229,203,122, 74,233,186,204,204,204, 41,150,220, 75,229,180, 96,189,198, 89,146, 5,168, 36, 33, 84,220,254,255, 68, 62, +139, 8, 55,216,216,216, 76, 7, 48,189,132, 8,246, 48,247,217, 52, 10, 45, 30,143,135,136,136, 8,108,220,184,241, 47,113,180, +140,225, 31,138,227, 46,161,236,244,252,249,243, 6, 66, 72,211,219,183,111, 79, 31, 60,120,240,103,185,185,185, 30,114,185, 60, + 78,167,211,109,203,203,203, 51,198,209, 18, 90,210,134,228,230,230, 70, 22, 55,234,176,232, 62,128, 77,169,156, 69,194, 59,188, + 22,194,161,200, 97,175,133,126, 40, 26,222,193,148,179, 89,179,102,225, 12,195, 60, 41,232,130,127,130, 34,163, 11, 77, 56,125, +226,227,227, 27,186,186,186, 94, 0, 32, 43, 58,234,240,159,184,151, 56,206,255,182,216, 66,105, 1, 75,139, 63, 10,146, 51, 55, + 34, 32,146,166,225,254, 31, 91, 45, 22, 89,197, 65,157,175, 10,155,187, 59,170,158, 70,157,143,220,204,196,167, 52,124, 79, 82, +197,175, 54,228,103,110, 69, 66, 34,207,192,221, 51, 63,103, 24, 12,249, 31,210,176,255,221, 43, 63, 29,102,254,120,226,128,144, + 40,237,112,255,139, 97,136,203,200,197,137,151,233,251,168, 74,253,249,142,130,185, 2, 61,154,146, 75, 91,102, 39,172, 15,236, +161,236,227,224, 46,192,202,169,219, 32,153, 97, 47,108,212,182,165,217,115, 32, 26, 29,228,127,248,225,135, 49,129,129,129, 86, +125,250,244,121,150,150,150,246,154,131,124, 57, 46,116, 12, 33,228,199, 99, 27, 86, 76,181,175,221, 4,107,191,154,102,216,125, +237, 97,209, 81,136,165,194,207,207,207,112,245,234,213,201, 99,198,140, 89,217,182,109, 91,247,238,221,187, 11, 43, 85,170, 4, +177, 88,140, 23, 47, 94,224,210,165, 75,218,151, 47, 95,198,170, 84,170,201,117,234,212, 41, 51,198, 89, 76, 76,204,102,145, 72, +132,144,144, 16,180,106,213,106,113,129,197, 42,226,234,213,171, 51,179,178,178,144,149,149,133,126,253,250, 21,166,143, 27, 55, +110,102,213,170, 85,145,150,150, 86, 86, 89,231, 18, 66, 54,224,213, 92,135, 9, 59,118,236,104,122,232,208,161,166,147, 38, 77, + 18,118,234,212, 9,215,175, 95,199,233,211,167,181, 90,173,246, 26,128,107,230, 78,107, 83, 16,127,232, 14, 33,228,225,210,165, + 75,155,242,120,188,194,136,247, 33, 33, 33,216,186,117,107,121, 56,245, 0,150, 19, 66,126,220,177, 99,199,220, 51,103,206,124, + 58,100,200, 16,107,157, 78,135,199,143, 31,227,231,159,127, 46, 47,231, 23,142,142,142,115,142, 31, 63,190,237,212,169, 83, 31, + 15, 26, 52,136,153, 48, 97, 2,214,172, 89,131,255,253,239,127,172,193, 96, 56, 36, 16, 8,134, 36, 39, 39,231,190,165,134,103, + 83,193,180, 58,155, 44,152,243,176, 76,222,138,116, 13,154,153,239,248, 10, 55, 75, 5,229,104,221,186,117,161,149,145, 82,250, +154, 95,157, 81, 96, 89,218,117, 8,192,166,224, 62, 93,135, 87,243,139,154, 70,133,231,225,207,200,241,230, 50,250,199,171,109, + 66,160,198,227,210, 39,149,182, 1, 40,252,203, 96,203,152, 59,119,238,247,243,230,205,251,190,104, 8, 7,211,157,138,134,126, + 88,176, 96, 1, 74, 10,239, 0, 32,125,238,220,185,223, 21,180, 79,164,160,187,240, 3, 20,140, 46, 52,225,220, 94,144, 46,155, + 63,127,254, 96, 0,165,113,114,224,240,143,161, 20, 31, 45, 58, 43,228,210,110, 29, 0,123, 16,102, 38,125,177, 55,164,194, 13, + 24, 75,103,156,221, 53,127, 13, 40,210,169, 65, 63,253,141,148,128,229,205, 14,185,180,139, 5,136, 13, 8, 51,131,190,248, 95, +133,243, 73,148,118,200, 94, 56, 6,255,123, 20, 71, 19,114,117,159,236,208,104, 94,179, 6, 21,248,100,245,117, 11, 36,123,109, +221, 4,191,126,241,161, 61, 57,150, 54,216,226,243, 36, 39, 39,127,107,101,101,197, 91,190,124,249,167,121,121,121,175, 57,200, + 87,224, 37, 49,141, 16,194,107, 84,221,107,252,205,231,145,221,205,233, 46, 44,138,102,205,154,197,135,134,134, 14, 56,125,250, +116,255,139, 23, 47, 6,169, 84,170,202,132, 16, 72,165,210, 8,141, 70,115, 70, 44, 22,239, 54, 71,100,153,190, 80, 76,167,136, + 1,128,172,172, 44,100,103,103,191, 22,134, 0,120,229, 95,149,156,156, 12, 79, 79, 79, 75, 95,136, 23, 9, 33,193, 11, 23, 46, +108,185,112,225,194,186, 5, 86,161,139,229,237, 50, 43, 16, 60, 23,165, 82, 89, 28, 33,196, 67, 40, 18,231, 94,189,122,245, 76, + 5, 57, 85, 5,150,146,149, 43, 87,174, 92, 36,151,203, 27,134,132,132,252, 81, 17,206, 2, 17,213,211,222,222,222,109,251,246, +237,251,183,108,217,210,132,207,231, 95, 39,132,244,206,200,200,120,219,147, 74,143,130,121,115, 28,150,105, 49, 50,199, 34, 86, + 94,252, 29,194,205, 96, 48,228,204,153, 51, 39,169,168,240, 42,106,189, 50,254,215,106,181,249,102, 62, 75,150,140,162, 44, 67, +100,144, 28, 0,120, 53,119,225,171,105,117,204,157, 84, 26, 64,137,115,103,206,155, 55,143, 46, 88,176,128, 48, 12,115, 8,192, + 83,134, 97,158, 23,117, 86, 55,221,182, 96,193, 2,204,155, 55,143,206,159, 95,242, 55,170,145, 51, 52, 52,148,242,120,188, 63, + 0,132,243,120,188, 8, 83, 94,211,116,227, 49,165,113,114,224,240,214,133, 22,125,185, 63, 26,192,176, 55,250,165, 24,190,255, + 12, 94, 57, 50,190, 57,206,136, 61,145, 0, 6,189, 41, 62, 22, 88,246, 89,163,214, 83, 1, 16, 10,172, 44, 42,178, 76, 17,119, +137, 30,114,109, 78, 22, 55,106,219,114, 82,129, 53,236, 91, 75,207, 87,156,131,252, 27, 16, 91,127,113,144,183, 20,126,126,126, + 6, 0, 59, 0,236, 40, 58,169,116, 57, 94, 58,144, 74,165,133,221,136, 12,195,132,103,100,100,192,104,209, 50, 77, 47,168, 19, + 40,149,202,242, 10,153, 19,132,144, 83,148, 82,195,155,168,203,188, 60, 85,165,130, 23, 28,239, 77,113, 22, 12,114,248,236, 77, +114,166,166,166,198, 1,104, 86,173, 90, 53, 81, 88, 88,152,230,223,210,192,188, 9,235,208,223,141, 55, 45,220, 10, 62, 24,106, +254, 13,117,249,244, 13, 19,254,220,190,133, 63, 15,166,177,131,202,154, 84,218, 40,208, 40,126, 46, 33,143,148,188, 82,146, 20, +192,246, 23, 47, 94,120,177, 44, 27, 89,140,101,233,181,109,243,231,207, 71, 73, 49, 3,139,112, 2,192,111,209,209,209,110, 6, +131, 33,190, 8,239,107,233,165,113,114,224,240, 47,177,104,253, 55,177, 83,163,153, 7, 96,158,185,251,199, 95,161,179, 1,204, +174, 96, 3,250,248, 77,151,163, 60, 34,107,255,254,253,134,191,163, 78,117,186, 87,189, 97,166,115, 23,154, 98,240,224,193,155, +223,112,217, 13,127, 67,125,190, 19,156,255, 38,145,197,225,223, 13,154, 30, 18, 13,224,171, 50,247, 43, 59, 26,252, 95,132, 81, +193,207,116, 0,233, 37,104,157,210,182,149,198, 9, 0, 89, 0,178,138, 57,182,164,116, 14, 28,222, 42, 24,174, 10, 56,112,224, +192,129, 3, 7, 14, 28,254, 30, 16, 0, 65, 37,124, 65,152, 61,154,128, 16, 18, 84,142,175,249, 51, 28, 39,199,201,113,114,156, + 28, 39,199,201,113,254,183, 56,203,226, 46, 58,122,249, 77, 77,207,245,143,138, 43,211,124, 27, 71,194,252, 29, 11,128, 32,142, +147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,114,158,103,228, 63,113,158,191,115,225,124,180, 56,112,224,192,129, 3,135, +119, 8,237,124,136, 43,223, 0,230, 68, 24,141,125, 19,124, 31, 85, 35,238, 0,240,166,248,254,139, 32,132,184, 2,232,108,146, +116,204, 56, 24,136, 19, 90,239,238, 69,173, 14, 96, 22, 0,165, 73,242, 77, 74,233,226, 34,251,237, 2, 96, 58, 33, 97, 46,128, +133,148,210,231,150,156,143,199,227, 45,110,217,178,229,231,151, 47, 95, 94,161,211,233, 22,150, 35,191, 94,174,174,174,223, 17, + 66, 26, 0, 16, 16, 66, 94, 36, 38, 38, 46,214,233,116,103, 42, 80, 7, 85, 92, 92, 92,150, 0,168,199, 48,140,128, 16, 18,150, +152,152,248,141, 78,167, 59, 95, 1, 78,133,179,179,115,115, 74,169, 11, 0,158, 64, 32, 72,141,141,141,189, 81,222,209,115,189, + 23,132, 10,179,114,245, 2, 0,176,150,243,117,251,231,249,105,205, 77,227,238,114, 14, 28,254,243, 13, 61,175,104, 82,135,170, + 88, 68, 40,166, 24, 0,210,161, 10, 89,125, 50, 28, 83, 74, 60,190,184, 1, 55, 69, 56, 59, 84,197, 34, 74, 95,113,116,168, 70, +150,159,124, 81,198,224, 46, 51, 56,141,216, 4, 48, 35,205,153,224,252,111, 24, 24,244, 22,208,217,180,139,179, 32, 0,243,166, + 50,133, 86, 63, 31,226,106,224,131,191, 63,132, 70, 27, 95, 66, 0,234, 2,168, 14,224, 57,128,123,148,210,236, 10, 10,134,119, +130,243, 95,136,185,148,210, 1, 69,202,253,151,157, 62,252,240,195,110,167, 78,157,146, 25,167,103, 97, 89, 22, 82,169, 84, 15, + 96,168, 5,245,233,212,191,127,255, 25, 63,253,244, 19,250,244,233, 51,135, 16,242, 61,165, 52,199,220,227,237,236,236,122, 85, +169, 82,101,205,230,205,155, 29,155, 52,105, 74, 68, 34, 17, 94,188, 8,243, 24, 53,106, 84, 45,103,103,231, 67,137,137,137,159, + 89, 90,120,123,123,251,129, 85,171, 86, 93,185,113,227, 70,135, 22, 45, 90,128, 16,130,224,224, 96,143, 47,190,248,162,174,139, +139,203,158,132,132,132,177,150,114, 58, 56, 56,212,168, 90,181,106,155,181,107,215, 74,155, 55,111, 14,137, 68,130,123,247,238, + 89,141, 30, 61,218,197,197,197,229,113, 66, 66,194, 5, 75, 69,214,131,224, 35, 31,235,181,234,165, 0,192, 23,138,167, 53,253, + 62,235, 72, 90,240,197,174,101,165,245, 94,128,223, 56,177,197,129, 3, 7, 83, 12,116,131, 11,165,152,122,234,231,175, 24, 0, +104,255,233,215, 19, 6,186, 97,197,206, 56, 36,188, 33,190, 41, 67,220,177,102,123, 44, 18, 43,146,207, 77, 0,243, 5,159, 63, +161, 81,227,198, 14,227,174, 92, 9,211, 2,219,254, 35, 6,144,145,197,165,151, 40,180,122,249,147,133,224, 99, 22, 0,242, 81, +117,178,231,116, 56,239, 82,187,118,237,170, 13, 31, 62,156,212,175, 95, 31,193,193,193, 53,246,236,217,211,153,207,231,135, 25, + 12,134, 96, 0,143,204,141,106, 77, 8, 17, 0, 8,224,241,120, 13,254,205,156,255,114,200, 11,202,157, 8,224,166,209,162, 85, +116,167,179,103,207, 30,230,243,249, 70,139, 86,163,220,220, 92,231, 34, 86, 48,115, 80, 89,167,211,225,201,147, 39, 96, 24, 70, + 0,192, 27,127,157, 82,163,164,235,226,225,225,225,177,254,218,205, 96,123,194,151, 34, 61, 31, 64,190, 22, 34, 43,103,252,180, +117,135,221,228,137, 99,123, 90, 91, 91, 95,202,202,202,250,197,130,155,217,219,211,211,243,251,251,247,239,219,203,100, 50,176, + 44,139,236,236,108,184,184,184, 96,243,230,205, 54,147, 39, 79, 30, 32,149, 74,207,231,229,229,253,207, 18,113, 94,181,106,213, + 54, 15, 31, 62,148, 26, 39,148,214,104, 52,240,240,240,192,174, 93,187,196, 19, 38, 76,168, 41, 22,139, 99,212,106,245, 75,115, + 57,179,114,245, 2,189, 86,189,116,251,186,249,149, 0, 96,200,216,249, 75, 69,217,214,199,205, 73,203,202,213, 31, 3,192, 9, + 45, 14,255,244,139,162,129,131,131,195,129,148,148,148, 11, 0, 62,123, 19, 33, 72, 8, 33,110,124, 62,223,155, 82,106, 83,240, + 63, 67,175,215,135, 83, 74,203, 29, 80,215,161, 90,155,174, 16,203,134,129,178,117, 25, 0,132, 97,238, 25,180,170,173, 41, 79, +207, 29,169, 16,167, 72,250, 41, 64,235, 50, 0, 75, 24,230, 62,171, 87,109, 78, 14, 61,119,226,223,114,125,174,103,194,167,170, +139,249, 19, 99,190, 9,190,126, 85,224,202,176, 96,118, 69,192,236,110,197,241, 64,167,137, 19, 39,186,140,253,252,115, 50,108, +232,208,234, 23, 46, 95, 38,173, 44,153,173,224, 29, 68,105, 14,251,197, 10,173,222,254,196, 22,192,244, 61,107,102, 49,124, 30, +143,244,159,184,120,192,150,117,203,153,118, 93,123, 23,118,159, 4, 6, 6, 34, 48, 48,144, 44, 93,186,180,250, 31,127,252, 81, +125,215,174, 93,122, 66,200,125, 74,233,222,146, 78,214,177, 26,201, 99, 1, 73,103, 95,126,110,255,175,126,217,216,184,113, 99, +136,197, 98, 84,132, 19, 0,218, 87,231,189,236,212,184,218,253,254,227,231, 70, 54,105,210,140,190, 9,206,119, 8, 55, 41,165, +221, 11, 26, 48, 91, 79, 79,207,230,122,189, 94, 2, 0,124, 62, 63, 31,192,120, 90, 48,117, 16, 33,228, 16,203,178,221, 44,104, + 32, 25, 0,243,186,117,235, 54,103,220,184,113,240,244,244,196,132, 9, 19,160,211,233,130, 9, 33,115, 1, 44, 41, 43, 32,160, +147,147,211,220,245,235,215,219,241, 69,114,212,159, 30,142,248, 12, 61, 0,192, 74, 12, 28, 30, 67, 49, 97,194, 4,235,219,183, +111,127, 3,192,108,161,229,228,228,180,112,243,230,205,118, 50,153, 12,148, 82,228,228,228, 32, 59, 59,187,112, 78,198,177, 99, +199, 90, 63,126,252,248, 59, 0,102, 11, 45,103,103,231,230,107,215,174,149, 74, 36, 18,228,228,228, 8,181, 90, 45,201,206,206, +134, 74,165,162, 26,141, 70, 59,126,252,120,241,163, 71,143, 90, 3,120, 9, 14,255, 22, 81,192, 3,240,137, 64, 32,232, 81,173, + 90,181, 15,158, 63,127,126, 87,175,215, 31, 4,112,176,162, 31, 83,132,144,182,110,110,110,139,226,226,226,214, 82, 74,119,252, + 87,234,212,217,217,249,224,213,171, 87, 43,173, 95,191,126,232,138, 21, 43,142, 91,242, 12,149,240,241,219,180, 81,163, 70, 14, + 61,122,244, 16,184,184,184, 64,165, 82, 33, 44, 44, 76,118,230,204, 25, 71,137, 68,146,170, 86,171,175, 89,114,173, 28,124,154, + 91,129,111,189,167,105,155,160, 22,125,122,126,162,112,182, 87, 34, 79, 99,192,243,200,120,207,223,143, 31,110,229, 86,171,243, + 85,173, 54,179, 95,202,211, 43, 57,150,114,182,233,216,165, 69, 80,219,182, 10,165,141, 18,153,185, 90,188,136,136,245, 58,119, +250, 72,160,107,173,206, 23, 89,162, 27,148,248,224,148,234,109, 94,155, 9, 0, 63, 87, 98, 95,167,110,179,250,183,219, 15,255, +230, 3, 74, 41, 24,138,213, 69,173, 89, 19, 0,254,106, 64,111, 41, 31, 40,165,132, 96,185,169, 53,171,176, 91,145, 1,233,224, +141,210,187, 41,141,239, 99, 64,108, 99,103,215,120,244,200,145, 36, 59, 43, 11,247,238,221, 83, 21, 21, 89,223,187, 67,120,145, + 65,229, 67,209,120,246, 62, 89,179,138,118, 29, 26,255,155, 29, 71, 75, 38,147, 21,155,174, 84, 42,209,166, 77, 27, 44, 94,188, +152, 15,160, 65, 17,133,247,250, 36,171,128,248,232,134,153, 80,202,197,140,167,167,167,194,218,218,186,194,156,175, 18, 89,239, +102,158,244,163, 91,191,204, 26,122,102,215,202,128,220,236, 12, 65,209, 93,172,172,172,224,227,227,131, 57,115,230,152,199, 89, +113,117,251,143,114,186,186,186,250, 6, 6, 6, 54, 56,123,225,130, 77, 92, 92,156, 56, 46, 46, 78,124,234,236, 89,155,166, 77, +155, 54,112,117,117,245, 53,225,176, 36,159, 95,175, 91,183,110,238,161, 67,135,152,192,192, 64,216,218,218,162, 77,155, 54, 56, +126,252, 56,127,197,138, 21,223, 2,152, 83, 86, 62, 25,134,105, 17, 24, 24, 72, 64, 41, 18, 50,245,184,177,216, 23,247,150,251, + 33, 59,159, 34, 45, 51, 11,121,121,249,144,201,100,146,130,238, 94,115,203,222,172,105,211,166, 4, 64,161,184,202,206,126,181, +228,228,228, 66,163,209, 66, 44, 22, 43, 8, 33, 18,115, 57, 41,165, 46,205,155, 55, 7, 0,104,181,218,194, 47,188,140,140, 12, +146,153,153, 9,141, 70, 3,129, 64, 32, 36,132,240,205,229,180,150,243,117,124,161,120,218,144,177,243,163,135,140,157, 31,205, + 23,138,167,105, 20, 89, 6,115,210,172,229,124,221,219,188, 63, 9, 33,142, 60, 30,239,231,106,213,170, 61,230,241,120,219, 9, + 33, 46, 21,225, 36,132, 52, 36,132,124, 43,147,201,206,212,172, 89, 51, 90, 46,151,159, 37,132, 44, 33,132, 52, 45, 15, 39, 33, + 68, 36,147,201,206,126,251,237,183,251,239,222,189,219,231,143, 63,254,240,126,240,224, 65,207,165, 75,151,238,177,178,178,186, + 68, 8,145, 85,228,217,244,246,246,222,114,227,198,141,134,205,154, 53,251,137, 16, 34,126, 19,207, 59, 33,132, 71, 8,169, 71, +204,156,107,232,159,190,238,132, 16,183,250,245,235, 87,146, 72, 36, 8, 10, 10, 2,128,214, 21,228,108, 58,122,244,104,151,201, +147, 39, 11,238,221,187,135,159,126,250, 9,135, 14, 29, 66, 82, 82, 18,186,116,233, 34,252,240,195, 15, 93,196, 98,113, 83,139, + 56,249,214,123, 38,126, 49,169,227,212, 9, 35, 20,247,163,180,216,122, 38, 10,191, 93,139, 71,146, 74,132,174, 61,135, 40, 59, +116,239,219, 65, 36, 86,238,177,148,115,198,244,233, 29, 71,126, 58, 64, 17, 18,207,226,240,245, 4, 92,127,146, 9,189,192, 6, +157,122,126,102, 91,183,121,199,206,124, 8,182,189,237,107,180, 25,104, 50,113,226, 68,199,105,203,119, 94,113,107,248,201,234, +228,116, 4,154, 10,159, 26,128,141,157, 92,254,201,147, 86,173, 70, 72, 95,205,249, 88, 42,231,107,124, 13,186,175, 73, 74, 71, + 75, 83,255,172,150,118,168, 94,208,173,200, 59,245,243, 87, 12, 37,152, 48,208, 13, 46,101,229,243, 60,208,103,226,164, 73, 2, +165,173, 45,214,173, 91, 7,117,110,238,107, 62,179,109, 43,161,227, 25, 25, 63,166,138,159,199,227, 54, 94,228,210,123,248, 1, + 56,178, 68,139,214,177, 99,199,104,231,206,157, 9, 0,236, 15,161,233,189,252,201,119,125,199,125, 59,135, 48,132, 86, 14,104, + 22,226, 94,213, 63,215,222,222, 30, 42,149, 10,106,181, 26, 66,161, 16,249,249,249,136,138,138,194,245,235,215, 97,107,107,107, + 81,102,178,178,178, 96,101,101, 5, 43, 43,171, 55,194, 57,115,104,144,248, 69,116,178,248,228,245,243,173,126,248,252,127, 77, +170,214,107,253,160,109,223, 9, 15,173, 29,221,242, 31, 60,120,128,171, 87,175, 34, 61, 61, 29,141, 27, 55,126, 95,174,231,205, +130,246,250, 38, 33,196, 54, 48, 48,208,227,228,153,139,182, 57,249,172,117, 68,162, 78,192,178, 44,100, 50, 87,253,222, 3,135, + 51,251,244,236, 74, 8, 33, 73, 0,110, 22,136,219,155,101,220, 40, 18, 0,190,189,122,245,154,241,249,231,159, 35, 44, 44, 12, + 35, 70,140,200,187,121,243,102,106,179,102,205,236, 55,111,222, 44,157, 60,121, 50, 46, 92,184, 48,143, 16,242, 43,128,112, 74, +105,126, 9,141,134, 80, 40, 20, 66, 95, 32, 27,180, 6,182, 80,223,103,101,101,129,230,165, 67, 40, 20,242, 0, 56, 2, 48,203, +143,142,101, 89,161, 64, 32, 40, 20, 89, 81,137, 89,136, 74, 82, 33, 43, 71,131,188, 60, 61, 52,121, 20, 60,153, 61, 31,136,112, + 6, 16, 97,102,125,242, 36, 18, 9,244,122,125,225,252,139, 70, 75,153, 70,163, 65,102,102, 38,120, 60,158, 21, 0,107, 0,105, +230, 16,190,114,114,199,111, 5,221,128,184,181,179,155,195,243, 99, 51,181,189,230, 63, 46, 76,179,150,243,117, 7, 38,215,228, +217,123,212,189, 92,175,207, 54, 63, 99,218,219,244,207, 34,132,136, 29, 29, 29,207,237,223,191,191,102,245,234,213, 17, 30, 30, +238,215,187,119,239,198,132,144,122,150,206,201, 72, 8,145, 49, 12,243,221,176, 97,195, 62,239,223,191, 63,169, 81,163, 6,248, +124, 62,244,122,189, 71, 88, 88, 88,155,125,251,246, 77,231,243,249,155, 13, 6,195,151,230,250,253, 17, 66, 24,145, 72,180,119, +227,198,141, 45, 27, 55,110,140,237,219,183,227,230,205,155,108,195,134, 13,153,193,131, 7,195,203,203,171,241,224,193,131,127, + 35,132,116, 42,143,101,139, 16,226, 53,112,224,192, 74, 60, 30, 15,205,154, 53, 19, 94,189,122,181, 62,128,171, 21,172, 83, 43, + 15, 15,143, 11,173, 91,183,174,119,230,204,153, 59,132,144,214,150,248, 57, 18, 66,186,187,185,185, 45, 85, 42,149,182, 22,180, +177,170,216,216,216, 41, 22,204,161,218,164, 65,131, 6,136,140,140,132,175,175, 47,132, 66, 97, 83, 66,200, 40, 0, 29, 1,204, +182,100, 6, 11, 66,136, 91,211,166, 77, 29, 90,183,110, 77,150, 44, 89, 2, 0, 16, 8, 4, 48, 24, 12, 96, 24, 6, 2,129, 0, +126,126,126,228,229,203,151,118,132, 16, 55,115,186, 17, 29,170,181,233,218,172,109,199, 22, 45, 27,215, 97, 86, 28,120, 14, 3, +107, 0,143,232,193, 39, 44, 88,157, 24, 98, 33, 15, 53, 2, 62,224, 61,121,116,191,177,131, 79,187,174, 41, 79, 79, 31, 49,135, +179, 99,215,110,129, 53,125,107, 48, 63,252,246, 2, 25,177,143, 13,177,161, 23, 83, 24, 30,131,154, 13, 62,116,168,225, 95,143, + 87,175,113,107, 65, 92,248,163, 54,118,213, 91, 5,165, 61,191,112,230,109, 60,147, 11, 0,158,135,187,195, 39, 93,218,181, 22, +198,199,197,229,238, 59,112,228,161, 74,135,235, 0,112, 1, 32,157,128, 58,181, 27, 53,106,181,121,201, 18,123, 87, 87, 87,193, +160,254,253,245,155,238,220,185, 51, 18, 48,148,196,231,224,226, 18, 52,122,244,104, 94,124, 92, 28,221,119,240,216, 3, 35, 31, + 0,200,128,218,117, 60,252,186, 32,247,137, 69,221,148, 93, 1,145,179,139, 75,205, 81,163, 70, 33, 33, 46, 14,219,119,236,200, +201, 7,174, 25,173, 88,135,121, 88,235, 95,213,101,216,180,207,186,145, 74,174, 14, 24, 61,111, 83,211, 54,218,164,170,231,240, +167,101,203, 84,139,188,171, 34,171,168,216, 42,241,235,252, 64, 8,157,107, 45, 34,222,251,246,237,102,146,179,181,185, 97, 97, + 97,112,112,112,128,171,171, 43,148, 74, 37, 66, 66, 66,112,246,236, 89, 60,125,250, 20, 44,203,162,110,221,186, 22,101, 40, 37, + 37, 5,247,239,223,135,173,173,237, 27,227,172, 90,201, 17,227, 42, 57, 10, 19, 83,179,132,103,110, 62,109,188,105,102, 79,127, +198,175,231,150,252,252, 63, 53,128, 70,243,126,204, 80, 98, 58,186,208,211,211,179,249,214,173, 91,133,106, 61, 20, 53, 70, 93, + 91,150,155,111,144, 3,128, 92,194,203, 13, 94,234,243,229,215, 95,127,157,251,233,167,159,250, 69, 69, 69, 45, 46,139, 87, 36, + 18, 45,250,232,163,143,166, 82, 74, 5, 19, 39, 78, 4, 0, 12, 25, 50, 36,235,250,245,235, 53, 40,165, 73,132, 16,183,225,195, +135, 63, 59,119,238,156,108,210,164, 73, 60,189, 94, 31,194,231,243, 41, 33,100, 33,165,116,126, 81, 62,134, 97,110,223,185,115, +167,178,155,151, 15,188,236, 25, 4,206,121, 53, 93,155,189,140, 69, 76,196, 11,132, 62,184, 9, 23, 23, 23,165,171,171,235, 99, + 95, 95, 95,109,108,108,236,244,156,156,156,245,165,229, 81, 40, 20,222, 11, 14, 14,118,245,242,242, 66, 78, 78, 14, 98,146, 85, +152,112, 80,134,172,188, 87, 70, 12, 1,242, 80,175,146,143, 66,202,104,110, 58, 59, 59,107, 53, 26,205, 87, 25, 25, 25,165, 78, + 35, 34, 16, 8, 82, 31, 60,120, 96,229,233,233,137,252,252,124,154,150,150, 70,114,115,115,145,157,157, 77,142, 29, 59,246,113, +124,124,124, 67,111,111,111,226,225,225,177,176,122,245,234,121,177,177,177, 35,204,241, 1,219, 63,207, 79, 75, 8, 49,240,249, +252, 21, 35, 71,142,236,243,235,175,191,222, 62, 48,191,102,119, 74,169,182,224,129, 84, 6, 4, 4,156,172, 83,199,223,109,199, +242,218,171, 41,165,203,254, 5,183,215,176, 89,179,102,213,180,179,179,195,232,209,163,177, 96,193, 2,204,157, 59,183,250,232, +209,163, 71, 2,248,222,130, 70, 71,234,226,226,114,235,135, 31,126,240,107,222,188, 57,142, 31, 63,142,221,187,119,227,229,203, +151,122,111,111,111,126,227,198,141, 49,111,222, 60,116,232,208, 97,196,248,241,227, 91, 17, 66,234,155, 41, 62, 62,157, 55,111, + 94,247, 22, 45, 90, 96,232,208,161,234,243,231,207,247, 1,112,234,244,233,211, 31, 94,184,112,225,192,206,157, 59,165,223,126, +251,109,208,228,201,147, 71, 3, 88, 83,142,242,127,220,178,229,171, 57,148, 91,180,104,129,165, 75,151,118,168,136,208, 34,132, +136,236,237,237,143,109,223,190,189,158,143,143, 15, 6, 13, 26, 84,191, 79,159, 62,199, 8, 33,237, 40,165,102, 53, 72,238,238, +238,223, 29, 58,116,168, 90, 73, 61, 11,197, 65,173, 86,219,125,242,201, 39, 75, 0, 88, 36,180,118,237,218,133, 41, 83,166,160, +110,221,186,117,154, 52,105,178, 97,212,168, 81,232,213,171, 87, 91, 66,136, 51,165, 52,215, 28, 34, 62,159,239,221,165, 75, 23, +193,193,131, 7, 95, 89, 71, 90,182, 68, 80, 80, 16, 30, 62,124,136,203,151, 47,131,199,227, 65, 46,151,163,121,243,230,162,184, +184, 56,111, 0,101, 10, 45, 70, 44, 27,214,189, 75, 39,197,225,235,241, 48,176,122,124, 80,205, 26,141,253,156,240, 36, 38, 11, +193,143, 99, 96,208, 8, 97,109,103,143,166,173,218,219, 37,196,190, 28, 6,160,108,127, 45,177,108, 88,143,238,157,173, 14, 95, +139, 67, 70, 92, 40,125,126,243,215,179,186,252,220, 17, 0,112,251,143, 61, 27, 92,236,165,237,106, 52,248,128,215,186, 93, 55, +219,131,187, 19,134, 1,120, 43, 66,235, 66, 37,108,244, 18,164, 12,153, 54, 32,144, 10,108, 61,110, 42,116,186,181,198,109, 29, +128,246,211,103,205,106,242,217,200,145, 18,150,101,177,243,151, 95,178,238,223,185,243,164,180,209,126,107, 1,175, 62,221,187, +139, 21,214,214,248, 98,194, 4, 40,116,186,115,133, 85, 2,180,253, 98,234,212,230, 99,199,142,149,110, 88,248,249,237, 14,195, +191,105,192, 82, 74,138,235,166, 44,138, 51, 64,195,225,221,187, 67, 97,109,141,137, 19, 39,130,104,181, 39,141,219,142,242,113, +238,211,143, 3, 27, 15,232,218, 2, 4, 4,187,143, 94,198,243,200,228, 7,231,226,241,226, 61,121, 39, 91,230,163,101, 68,182, + 22,137,109, 59,247,196,157, 59,119, 0, 0,169,169,169, 72, 77, 77, 69,181,106,213,176,102,205,235,237, 87,121, 4, 12,203,178, +111,156, 19, 0,156,237,173, 49,168, 83, 35,254,229,251,187, 37,185,201,201, 18, 43, 43,171,252,247, 77,104,153, 66,175,215, 75, +188,189,189,145,149, 7,146,169,210, 89,165,236,121,101,241,119,232,119,222, 74,163,209, 48, 86, 86, 86, 80,171,213, 18, 51, 94, + 8,130,238,221,187, 79,221,187,119,175, 32, 52, 52, 20, 85,171, 86,133, 86,171,197,245,235,215, 99, 10, 38, 66, 6,165, 52,142, +199,227,197,177, 44, 91,189,110,221,186, 88,188,120, 49,252,252,252, 72,167, 78,157,166, 23,136,173,215, 30,238,248,248,248,239, + 70,141, 26,245,225,190, 3,191,218,109,236,155,135,172,204, 44,228,228,228,224,222,221,219, 72, 75,204,199,166, 77,155, 32,145, + 72, 9, 0, 97, 82, 82,162,112,210,164, 73,171, 61, 60, 60, 58,198,196,196,116, 41, 41,159,113,113,113,139,198,142, 29,219,116, +207,158, 61, 54,217,217,217,200,203,203, 71, 90,174, 12,143, 87,189,154,199,183,230, 23,143,177,110,237,122,166,118,101,185,131, + 74,165,194,231,159,127,190,210,205,205,173,121, 92, 92,220,240,146, 56, 99, 99, 99,111,140, 27, 55,206,121,231,206,157, 18,141, + 70,163, 53, 24, 12,200,203,203, 99,246,236,217, 51,189,114,229,202,182,155, 55,111, 38, 18,137,180, 96,223, 24,225,152, 49, 99, +246,186,184,184,236, 76, 72, 72, 24, 90, 86,119, 17,143,199, 91,181, 99,199,142,193,125,251,246, 85,196,199,199,251, 31, 58,116, + 72, 12, 32,175, 96, 23,215,118,237,218, 85, 94,190,124,185, 99, 64, 64,192,116, 66,136,128, 82,250,237,219,188,159, 28, 28, 28, +198,119,239,222, 29, 75,150, 44,193,145, 35, 71, 38,219,217,217,173, 92,176, 96, 1,220,220,220,198, 17, 66, 86, 89, 48, 81,239, +178,239,191,255,222,207,207,207, 15, 67,134, 12,209,156, 57,115,102, 22,128,223, 0, 68, 94,186,116,201,115,219,182,109, 93,247, +238,221,187,228,135, 31,126,144,172, 89,179,166, 90,207,158, 61, 87, 1, 24, 94,230,243,237,236, 60,169,127,255,254, 88,190,124, + 57,206,159, 63,223,147, 82,122,188, 96,211, 9, 66, 72,215,111,191,253,246,143, 57,115,230,224,251,239,191,159,104,169,208, 34, +132, 88,213,172, 89,243,171,142, 29, 59,226,210,165, 75, 8, 12, 12, 68,211,166, 77, 39, 19, 66, 86, 83, 74, 83,202, 33,178, 24, + 43, 43,171,189, 91,183,110, 13,172, 92,185, 50,190,249,230, 27, 76,157, 58, 21, 91,182,108, 9, 28, 52,104,208, 94, 66, 72,143, +162,207, 76,113, 80, 42,149, 86, 50,153, 12,211,167, 79,167, 47, 95,190, 76, 47,107,255, 74,149, 42,217,174, 92,185,146,216,218, +218, 42,205, 21,197, 18,137,164, 89,173, 90,181, 48,111,222, 60,156, 62,125, 26,115,230,204, 65,173, 90,181, 16, 25, 25,137,126, +253,250,201,102,207,158,221, 11,192, 86, 51, 95, 58, 74,123,123,123, 36, 37, 37, 65, 32, 16,160,121,243,230,248,237,183,223,160, + 86,171,225,228,228,132,140,140, 12, 52,106,212,200, 40,202,148,102,190,202,106, 57,216, 41,145,244, 40, 22,124,232,209,160,134, + 3,206, 61, 76,133, 86,199,194,201,222, 6, 9, 73,137,104, 82,203, 3, 26,141, 39, 40,101,107,153,195, 40,226, 49, 13,196, 18, + 41,210,178, 83, 16,251,248,124,170,214,160, 30,149,241,242,114, 52, 0,216, 85,109, 57,234,246,229,211,183,123,119,110,233,148, +147, 91, 9,132,178,141,222,198,243,216,219, 19,149,228, 18,254,144,163, 27,103, 18, 61,203,226,163,225,139, 26,118,116,134, 10, +137,128, 35,224,221,187, 95,191,102, 95,126,249,165,232, 89, 88, 24, 59,105,194,132,140,187,183,110,157,255, 29,184, 93, 26,103, + 14, 80,189, 93,187,118, 96, 0,252,126,234, 84,110, 10, 16, 3, 0,206, 64,165,110,159,124,210,114,214,140, 25,162, 23, 17, 17, +236,245,176,156,195, 47,146,232,226,102,118,184,191, 39,242,213, 62,165,193, 0,212, 54,242,158, 60,121,146,230, 21,228,163,117, + 37,140,235,208, 60,160,241,224,238, 45, 17,147,144,138,165, 63, 29,198,131,103,241, 39,237, 89, 12,124, 95,222,195,165, 69,176, +103,204,120, 96,254,146,166, 82,253,181,247,160,162, 2,230,239,224, 44, 14,239,163,208, 50,194, 56,121,179, 70,199, 66,163, 99, +141, 95,181,200,203,203, 51, 87,145,235, 78,158, 60,185,125,194,132, 9, 88,185,114, 37,158, 61,123, 6,161, 80,136, 90,181,106, +185, 18, 66,172,140, 22,152, 6, 13, 26, 56, 49, 12,131, 39, 79,158, 96,197,138, 21,248,244,211, 79,233,213,171, 87,183, 20,247, +194,160,148,222, 77, 75, 75, 91, 59,106,196,167, 25,233,137, 81,208,229,165, 35, 41,246, 5,212,185, 25,248,102,241,119, 80,233, +248, 72,200,212, 34, 33, 83, 11, 70,108,135, 13,155,183,242,106,214,172,217,145,207,231,119, 41, 37,159,215, 19, 19, 19, 55,143, + 25, 51, 38, 35, 33, 33,161,176,124, 26, 29,133, 70,247,250,253, 42,147,201,176,106,213, 42,101,141, 26, 53,186, 11, 4,130, 54, +165,112,198, 71, 71, 71,135,142, 25, 51, 70,147,152,152,136,204,204, 76, 28, 62,124,184,107,229,202,149,109,151, 44, 91, 73,114, +181,124, 36,100,104,145,144,161,133,200,202, 9,123, 15,252,202,243,241,241, 25, 32, 16, 8,154,150, 37,178,118,238,220, 57,184, +111,223,190,138,101,203,150,165, 29, 58,116,104, 29,165,212,244,130, 60, 89,181,106,213,190,189,123,247,102, 79,157, 58,213,110, +233,210,165,147, 9, 33,179,222, 98, 99,209,166,111,223,190,190, 44,203, 98,255,254,253, 15, 40,165,223,255,250,235,175,183,212, +106, 53,250,245,235,231, 93,208,141,100, 14, 79,195, 1, 3, 6,124, 30, 24, 24,136, 47,190,248, 66,123,230,204,153, 6,148,210, +149,148,210, 8,250, 10,145,148,210,213, 23, 46, 92,168, 59,126,252,120,117,163, 70,141, 48,116,232,208, 79, 9, 33,129,101,240, + 54,235,223,191,191, 31,203,178,216,179,103,207,125, 19,145,101,188,142,103, 15, 28, 56,112, 93,163,209, 96,224,192,129, 85, 8, + 33, 31, 90, 80,118,161, 88, 44,222,255,245,215, 95,219,196,198,198, 98,240,224,193,234, 39, 79,158, 96,254,252,249, 82,165, 82, +121,220,248, 12, 88, 2,177, 88,188,233,199, 31,127,236, 94,187,118,109,140, 25, 51, 70,179,126,253,250, 9,159,127,254,185,166, + 65,131, 6, 88,183,110, 93,119,145, 72,100,209,212, 34,113,113,113, 25, 33, 33, 33,246,101, 45, 49, 49, 49,137,102,150, 89,166, + 80, 40,174, 5, 4, 4,100,213,170, 85,235, 3,189, 94,143,144,144,144, 23,219,183,111,103,107,213,170,133,181,107,215, 98,233, +210,165,232,210,165, 11,120, 60, 94, 47, 75,242,154,155,155, 11,137, 68, 2,161, 80,136,224,224, 96,168,213,106,200,100, 50, 72, + 36, 18,240,120, 60,216,216,216, 64,161, 80, 0,102,142, 70, 35, 4, 52, 75,165,131, 64,192,128,207,176, 8,141,204,132, 86,199, + 66, 34,228, 65,192, 39, 0,101, 97, 35, 23, 64, 34,226,129, 33,132, 53,147, 19,153,185, 90,136,132, 12, 4, 66, 17, 97,244, 6, +105,225,203,145,111,144, 74,165, 34,226, 96, 45,134, 68,248, 47,154, 22,152,188,170,175, 97,128, 64,238,233,217,103,249,138, 21, +162,172,156, 28,244,236,217, 51, 45,226,214,173, 29,121,192,173, 86,101,212, 41,195,231,215,104,221,170, 21,130,239,220, 65,118, +122,250,115,224,149,115,188,200,205,173,239,170, 85,171, 68,121,249,249,232,217,163, 71,198,179,203,151,119, 70,231,224,168, 57, + 34, 11, 0,120, 66,161,139,145, 55, 51, 61, 61, 29,120, 21, 66,194,217,209,106,201,216, 1, 29,144,173,202,199,180,239,118,176, +119, 66,227,199, 93,138, 65,231, 95,227,144,249, 62,189,131, 9, 33, 35, 77, 23,179, 44, 90, 70,171,147, 57, 98, 69,173, 86,191, +113, 1, 84, 81,206,226, 68, 98, 69, 57,255,141,224,243,249,249, 79,159, 62, 21, 89,219,187,177,246, 10, 65,122,229, 79, 47, 43, + 1,192,206,138,159,169, 53,232,216,184,184, 56,136,197,226,124,115,184,242,243,243, 71, 16, 66,190, 1,224,207,231,243,143,110, +221,186,149,236,216,177,195,182,127,255,254, 97,132,144,216,128,128, 0,175,173, 91,183, 90, 3,192,234,213,171,233,222,189,123, + 59,224, 85,200,140, 18, 77,202, 9, 9, 9,243, 5, 2,193,213,177, 99,199,174, 17,137, 68,182,114,185,220,254,210,165, 75, 36, + 95, 75,209,112, 86,100,225, 72, 68,107, 41,131,139, 51,173, 49,114,228, 72,222,227,199,143, 23, 3, 56, 90, 10,231,116,177, 88, +124,233,217,179,103, 43,149, 30,245, 28,229, 94,179,148,141,103, 62, 1, 0,120, 57, 8,192, 20,180,139, 25, 25, 25, 72, 78, 78, +198,231,159,127,110, 27, 22, 22, 54, 29,192,185,146, 56, 99, 98, 98, 46,136,197,226,152, 71,143, 30,181, 22, 8, 4, 34,185, 92, +222,240,218,181,107, 36, 95,195,162,206,244, 72,164,229,188,202,167,157, 21, 31,183,191,118,198,184,113,227,248,207,159, 63,255, + 14, 64,139, 98, 27, 51,134, 89,106, 42,178,166, 77,155,118, 15, 64, 21, 66,200,107, 93,163, 6,131,129, 12, 28, 56,240, 33,128, + 90, 83,167, 78,181,163,148, 78, 38,132,164, 81, 74, 55,254,211,247,146,181,181,245,146, 81,163, 70, 97,239,222,189, 72, 79, 79, + 95, 5, 0, 89, 89, 89,223,239,218,181,107,207,136, 17, 35,240,203, 47,191, 44, 33,132,252,110,134, 85,235,163,126,253,250,225, +196,137, 19,248,227,143, 63,190,162,148,134,148,240,140, 62, 35,132, 76, 63,116,232,208, 15,253,251,247,199,207, 63,255,220, 17, + 64,105, 14,178,237, 58,116,232,128,227,199,143, 35, 53, 53,117, 93,113, 59,100,100,100,172, 63,124,248,112,147, 14, 29, 58, 96, +241,226,197,237, 0,156, 53,163,129,244, 83, 42,149, 91,127,248,225,135,134,181,107,215,198,128, 1, 3,242,181, 90,109,199,169, + 83,167, 30,217,189,123,183, 98,251,246,237, 31,140, 28, 57,242, 6, 33,228, 51, 74,233,117,179, 94, 58, 60,222,183,107,214,172, + 25,222,186,117,107, 76,158, 60, 89,127,242,228,201,110,148,210, 83,132,144,176,105,211,166, 29, 91,177, 98, 5,111,249,242,229, +195,121, 60, 94,178,193, 96,120, 91,226,250,235,213,171, 87, 55,105,223,190, 61, 94,188,120,129,235,215,175, 67,171,213,254,114, +237,218,181,139,213,171, 87,255, 90,163,209, 28,145,203,229, 67, 20, 10, 69, 64,189,122,245, 62, 36,132,200,204,241,211, 35,132, +100,132,133,133,201,157,156,156, 32, 16, 8,112,255,254,125, 56, 57, 57, 1, 0,146,146,146, 80,171, 86, 45,240,120, 60,100,100, +100, 0, 48,239,101, 75, 8,243, 32, 44, 34,174,138,157, 66, 14, 24, 36,184,251, 36, 6,142, 14,182, 48, 16, 6, 9, 9,241,168, +231,235, 1, 66, 8, 50, 82, 19, 64, 8,121,104, 14,167,129,178,193, 81,113, 73,238,246, 10, 49,106, 55,105,111,127,237,247,228, + 29,202,170, 45, 70,242,121,132, 39,150, 88,111, 28, 62,116,168, 3,203, 82,100,164, 38,130,207, 48, 55,223,198, 5,218, 31,133, +232, 86, 85, 37,119,219, 15,255,166, 30,161,160,121, 90,108,255, 57, 17,233, 50,160,222,234,217,179,109,236, 29, 28, 48, 96,192, + 0, 54, 53, 54,246,140, 10, 48, 43,176,114,149,234,213,157,173, 20, 10, 92,185,114, 5, 60, 32, 28, 0,182, 0,126, 75,167, 77, +179,119,114,113,193,167,195,135,179,137, 81, 81,103,243,204,232,210,125,141,183,106, 85,129,145,151, 41,224,141,231, 97,194,212, +110,129, 98,185, 84,140,111, 55,252,138,232,148,220, 61,215,226,177,225,125, 52,118,148,105,209, 42,201,249,236,149, 83,181,172, + 84,177, 34,145, 72, 10,173, 41, 22,124,233,189,113,206,178,240,119,112,190, 69,229, 60,147, 16,114,136, 16, 50, 51, 58, 58, 58, +116,248,240,225, 90,189, 86,157,125,245,155, 42, 51,238, 44,174, 60,230,218,124,215, 49,191, 77, 80,206, 80,101,166,101,175, 94, +189, 90, 23, 29, 29, 29,106,122, 76, 25, 55, 75, 20,165,244,248,182,109,219,214,239,223,191, 31,181,106,213, 66, 72, 72,136, 83, +110,110,110,253,135, 15, 31,218,249,249,249, 97,199,142, 29,216,187,119,239, 74, 74,233,233,210, 68,150,137,181,237, 76,124,124, +188, 79,100,100,100, 53, 27, 27, 27,157,141,141, 13,138,142, 68,204,202, 99,145,154,145, 9, 59, 59,123, 88, 91, 91,123,151,197, +169, 86,171,143,199,199,199,215, 96,109,125, 91,214, 72, 89,149, 25,252,109, 37, 4,127, 91, 9,199,167,187,193,213, 70,132,244, +244,116, 36, 39, 39, 35, 57, 57, 25,132, 16,232,116,186,154,102,112,190,140,139,139,251, 41, 42, 42,234,144,179,179, 51, 20, 10, + 5, 40,128,132, 12, 29,238, 45,247,195,189,229,126, 72,200,208, 33, 43, 59, 27,149, 43, 87,134, 66,161,168, 85, 82,151,145,187, +187,123,167,190,125,251, 42, 0,160, 64, 64,181,165,148,142, 41,102, 25,173,215,235,155, 27,247,157, 50,101,138, 29,128, 14,255, +240,253,196, 35,132,140, 29, 49, 98,196, 7, 18,137, 4,107,215,174,125, 9, 96,167,177,173, 95,191,126,253, 19, 0,152, 48, 97, + 66, 0,128,201,164,132, 72,208, 70, 8,133,194, 6, 53,107,214,196,181,107,215, 0,224,215, 50, 78,127,224,234,213,171,168, 94, +189, 58, 36, 18, 73,195, 50,246,245,174, 84,169, 18,158, 60,121, 2, 0,119, 75,216,231,238,147, 39, 79, 80,169, 82, 37, 16, 66, +188,205, 40,123,247,246,237,219, 63, 56,119,238, 92,195,102,205,154, 97,248,240,225,154, 27, 55,110,116,162,148, 94,188,123,247, +110,155,129, 3, 7,230,214,168, 81, 3, 23, 46, 92,240, 27, 56,112,224, 85, 30,143,247,141, 25,156,159, 46, 92,184,112,230,199, + 31,127,140,133, 11, 23,210,125,251,246, 13,160,148,158, 42,120,190, 78,238,217,179,103,240,162, 69,139,104,143, 30, 61,176, 96, +193,130,153,132,144, 49,101, 88,135, 50, 13, 6, 3,114,115,115,205, 50,201,155,187,191,131,131,195, 71,237,219,183,199,156, 57, +115,224,238,238,142, 35, 71,142, 80, 0, 71, 41,165,151,212,106,117, 75, 74,233,138,220,220,220,223,174, 93,187,134,118,237,218, + 9,241,250, 20, 35, 37, 66,175,215, 71,156, 59,119, 78,107,111,111, 15, 15, 15, 15,120,122,122, 34, 55, 55, 23, 25, 25, 25,168, + 85,171, 22,154, 52,105,130,220,220, 92, 28, 61,122, 84,155,145,145, 97,214,128, 21,189, 38,119,251,233, 99, 7, 51,237, 21, 98, +120, 56, 41, 81,217,221, 14, 57, 25, 41, 72, 78,136, 67,131,154,158,104,213,160, 50, 82, 50, 53, 56,121,244, 96,122,118,182,106, +187, 89,189, 0,106,213,214, 51,191, 31,201,180, 85, 8,225,227, 27,128,129,195, 39,212,171, 87,191,241,233, 70,141,154,159, 92, +182,228,219, 58,109,155,214, 36, 49, 41,249, 56,113,244,215,244,204,172,172,173,111,163,173, 95, 0,240,242,149, 53, 46,174, 59, + 20,252,147,127,199, 17, 63,133,198, 96, 21, 0,232,120, 60,191, 78, 31,125,132,152,152, 24, 28,220,191, 63, 94, 5,220, 55,151, + 79, 42,149, 50, 0,144,153,153, 9,241,171,217, 66,160, 7,124, 59,119,238,140,228,148, 20,236,218,185, 51,249, 4,112,199,146, +124,118, 5, 68, 50,233, 43,131, 96,102,102, 38, 8,144, 5, 0,132,143, 78,141,106, 85, 71,114, 90, 22,206,221, 12,205,169,156, +135,207, 75,227,121, 87, 29,225, 75,243,209, 42,203, 30,154, 50,121,242,100,136,197, 98,184,186,186, 22,138, 35,163, 88, 17,137, + 68,112,117,117,133, 94,175,199,158, 61,123, 0,160, 84, 31, 6, 6, 80,119, 27,179,152, 85,235,168, 74, 32, 16,188, 17,206, 2, +203,129,186,231,180,159,217,223,175, 22, 63, 40,166, 60,156,239, 0, 26, 21,196,196,106, 68, 41, 77,143,136,136,136,233,211,179, + 91,102,100,216,163,132,220,140,184,248,172,212,232,248,232,151, 15, 19,102, 77,159,156, 25, 19, 19, 19, 93, 16, 75,171, 81, 92, + 92, 92, 55, 0,230,250, 26, 76,238,211,167,207,143, 35, 70,140,160,247,238,221, 3, 0, 4, 7, 7, 99,232,208,161,116,240,224, +193,171, 0,204, 40, 71,190,115,243,242,242, 94,179,134,104, 13,108, 97,151, 95, 86, 86, 22,226,226,226,160,209,104,204, 86,196, +207, 78, 46,127,154, 22,113, 91, 23,224, 37, 71,128,151, 28,126,149,100, 32,250,156, 66,145,149,156,156,140,196,196, 68, 0,200, +183, 32,159, 89,106,181,250,181,124,154,118, 77,102,101,101, 33, 33, 33, 1, 6,131, 65, 83,194, 67,199,198,198,198,158,220,187, +119,111, 54, 0, 44, 91,182, 44,141, 16,242, 7, 33,228,199, 98,150, 13,124, 62,255,138,113,223,229,203,151,167, 1, 56,254, 15, +138,172,143,107,215,174,157, 62,115,230,204,181, 19, 39, 78,196,134, 13, 27, 16, 31, 31, 63,131, 82,170, 55,150, 37, 37, 37,101, +218,186,117,235, 48,108,216, 48,204,157, 59,119,121,253,250,245,179, 8, 33, 37,250, 87, 56, 58, 58,122,240,249,124,220,185,115, + 39,139, 82,250,162,140, 6, 42,225,206,157, 59,137,132, 16,184,186,186, 86, 45,109, 95, 59, 59,187,106, 10,133, 2,177,177,177, + 64,193, 23,115, 49,136,136,139,139,163, 34,145, 8,110,110,110,213,203, 42,191,173,173,237,180,159,126,250,137,255,232,209, 35, +180,109,219, 54,230,194,133, 11,237, 40,165,231, 11,242,118, 39, 56, 56, 56,176, 77,155, 54, 79, 79,159, 62,141,239,190,251,142, +212,173, 91,119, 76, 89,156, 94, 94, 94,163, 63,253,244, 83,172, 89,179, 6, 27, 55,110, 28, 67, 41,221, 95,164,204,187,215,173, + 91, 55, 97,227,198,141, 24, 62,124, 56,188,189,189, 75,245, 85,137,140,140,156,222,186,117,235,224,103,207,158,153, 53,227,129, + 57,251, 19, 66,218, 52,110,220,184, 90, 94, 94, 30,182,110,221,250,162, 90,181,106,183,246,239,223, 63,153, 82, 90,244,133,253, +219,193,131, 7, 49,104,208, 32,212,173, 91,119, 43, 33,164,191, 25, 47,157,184,200,200,200,148,251,247,239,179, 60, 30, 15, 30, + 30, 30,232,212,169, 19,250,245,235,135,186,117,235, 34, 41, 41, 9, 23, 47, 94,100,195,194,194, 82,204, 13, 92,154,242,244,220, +145,240,240,167, 87,238,220,184,168,227,243, 24,120,186,218,225,147,160,122,248,172, 87,115, 52,240,115, 71,100, 82, 30,206,158, + 61,173, 11, 15,127,113,205,156, 17,135, 70,206,208,144,251, 87, 31,221,185,172, 23,240, 9,252,124,107, 96,206,172,105,182,139, +230, 77,183,169, 81,213, 19,247, 95,102,226,244,169, 19,186,184,152,232,115,111,107,196,225, 5, 64,104, 37, 38,114, 30,195,192, +192,136,115,121, 5,129,140,107,249,251,251, 56,187,184,224,216,177, 99, 96,128,199, 22,241, 89,189,234, 5,207,201,201,129,145, +175,154,175,175,175,167,151, 23,142, 31, 59, 6, 30,203, 62,110,101, 97,128,209, 39,128,204,148,151, 0,249,159, 87,130,162, 90, + 37, 39, 95, 91,165, 28, 55,238, 63,135, 90, 71,111,238, 76,135, 10,239, 33,138,118, 27, 90,210,117,184,108,195,134, 13,141,126, +250,233,167,118,147, 39, 79,182, 26, 50,100, 8, 36, 18, 9, 84, 42, 21, 60, 60, 60, 96, 48, 24,240,251,239,191,227,246,237,219, + 57, 44,203,158, 70,145,176, 1,132,144, 32,211, 88, 27,191,135, 81,233,171, 32,152,170, 70,135,122,247,126, 35,156, 0, 96,245, +156,181, 78,173,172,217,177,122,255,229, 30,187, 78,222, 33, 95,244,111,197, 52,240,173, 4, 0,112,118,118,134,181,181,181,197, +156,111,160,210,255,118, 78,211,110,221,248,248,248, 39,132,144,164, 17, 35, 70,248, 25, 29,223,197, 98,113,126,116,116,116,168, + 49, 96,105,209, 99,202,202,103,193,200,184,207, 9, 33,135, 51, 51, 51, 79, 78,157, 58, 21,139, 22, 45,194,145, 35, 71, 2, 41, +165, 87,202, 83,118, 74,169,193,219,219, 59,227,230,205,155,206,213,107,214, 71, 21, 39, 1, 90,126,245, 12,148, 82,216,203, 40, +178, 51,210,112,247,238, 29,100,103,103,223,176, 36,159,110,110,110, 25, 73, 73, 73, 14, 78, 78, 78, 72, 75, 75, 67, 74, 74, 74, +161,200, 74, 79, 79, 71, 90, 90, 26, 37,228,245,152, 45,101,112,230, 86,171, 86, 77, 21, 26, 26, 42,114,174, 84, 29, 85,157,132, +104, 60,235, 9, 64, 41, 60,237, 24,100,103,101,224,218,181,107,200,204,204, 60, 95, 18, 39,203,178, 95, 14, 28, 56,144, 7, 96, +240,212,169, 83,237, 0,212,157, 54,109,218,233,162, 35, 11, 5, 2,193,247, 59,118,236,168,101,236, 98,156, 62,125,250, 74, 74, +233, 79,255,212,189,100,111,111,255,229,177, 99,199, 20, 90,173, 22,171, 87,175,198,202,149, 43,183, 80, 74,255, 87,164, 62,142, +241,120,188,117, 12,195,140, 29, 55,110, 28, 70,141, 26, 37,251,224,131, 15, 38,155, 88,189, 94,227,140,141,141,157,211,160, 65, +131,185, 73, 73, 73,102, 57,246, 63,123,246,108,100,131, 6, 13,230, 36, 37, 37, 45, 45,237, 26,201,229,114,185,193, 96, 64,120, +120,120, 58,165, 52,179,132,107,151, 95,163, 70,141, 88,131,193,224, 33,147,201,236,202,186, 63,211,211,211,191,253,224,131, 15, +230, 39, 38, 38,158, 2,240, 77,209, 80, 37,148,210,123,132,144,128,137, 19, 39,142, 95,178,100, 73,143,132,132,132, 61,101,113, + 70, 70, 70,126,219,166, 77,155,175,158, 62,125,186,173,164, 46, 96, 74,233, 90, 66,136,118,199,142, 29, 99,194,195,195, 23,151, +198, 73, 41, 61,138, 82,186,210,139,225, 46,118,127, 83, 78, 30,143, 55,109,201,146, 37,204,134, 13, 27, 64, 41, 93,174,215,235, + 75,202,231,125, 30,143,183,189,121,243,230, 67,246,239,223, 47, 9, 8, 8, 24, 5, 96,119, 89,247,167, 90,173,190,126,245,234, +213, 38, 17, 17, 17, 14,109,218,180, 17, 26, 63, 80, 50, 50, 50,112,244,232, 81,109, 88, 88, 88, 74,110,110,238,117, 75,218, 16, +189, 38,171,255,213,179,135,118, 71, 60,123,216,180,117,199,238,182, 26,173, 7,196,169, 60,100,164, 38,224,247,163, 7,211,195, +195, 95, 92, 83,169, 50,250, 91,194,169, 85,103,246,187,118,238,240,158,152,240,208, 38, 45,219,116,178,205,215,120, 65, 44,100, +144,154, 24,139,223,143, 29, 74, 11, 15,127,121, 41, 95,167, 30,250,182,218,121,158, 55,190,225, 37,220, 30, 49,186,107, 61, 72, +109, 61,238, 10,128,213,205, 1,169,131,179,179,176,224,217,129, 21, 16,105, 46,103, 34, 32,170, 94,208, 75,165, 82,169, 32, 0, + 52,195, 0,129,163,163,163, 20, 0,158, 62,125, 10, 25, 16,101,105, 62,115, 0,185,204,132,151, 1, 84,169,124,184, 87,179,150, + 19, 0,136, 73, 72,133, 70,135, 43,120, 79, 97,180,104, 21,231, 20, 95, 86,240, 69, 22,192,117, 66,200,157,165, 75,151,182,252, +241,199, 31, 91, 77,154, 52, 73,244,209, 71, 31,225,214,173, 91, 56,115,230,140, 70,173, 86, 95, 0,112,209, 56, 92,221,140,204, +188,113,206,253,175,246,235,211,200,157,216,105,217,188, 95,231,252,120,162, 69,101, 23, 27,170, 55,176,228,225,195,135,184,122, +245,170,197,156,239,200,133, 5,128, 70,132,144, 67, 5, 73, 55,139,134,112, 40,232, 46,108,100, 98, 5, 43,207,169,238,242,249, +124,234,235,235, 75, 10,166,167, 9,169, 72,190, 19, 18, 18, 6, 76,159, 62,253,212,190, 3,191,242, 15,142,147, 34, 51, 35,243, + 85, 3,156,153,129,212,196, 56,156, 61,123, 86,155,156,156, 60,202, 18,206,228,228,228,207,251,247,239,191,111,247,238,221,118, +233,233,233,133, 66, 43, 61, 61, 29, 44,203, 98,203,150, 45,201,137,137,137,179, 45,225,140,143,143, 31, 62,117,234,212, 3,187, +246, 28,224,159,158, 97,139, 28, 99,244,249,220, 76,164, 38,197,227,200,145, 35,234,148,148,148,137,165, 92, 31, 3, 33,228,139, +129, 3, 7,194, 40,182,174, 93,187, 54,129, 16,178,214,248, 50, 39,132, 84,249,242,203, 47,251,155,248,113,173,252,167, 71, 29, +166,166,166, 46,106,210,164,201,202,228,228,228,151, 90,173,118, 63,165,180,216, 40,253, 6,131, 97, 28, 33,228,234,218,181,107, +251, 57, 56, 56, 56, 39, 36, 36, 44,177,244, 69, 95,209,253,163,162,162,102, 54,104,208, 96, 86, 82, 82,210,146,210,246,123,254, +252,249,216,130,253,150,154,113,238, 99, 0,142,149,177,143, 30,175, 66, 91,124,111,102,121, 14, 1, 56,100,102,227,188,233,109, +180, 31, 6,131, 97, 89,237,218,181, 37,122,189,254,116, 89,254,128, 44,203,142,156, 52,105, 82,204,148, 41, 83,234, 25, 12, 6, +115,235, 64, 7,224, 18, 33,196, 45, 37, 37,197, 27,128, 13, 0,240,249,252,140,140,140,140,114, 77,193, 83, 16,241,189,139,131, + 79,187,174,251,183,173, 25, 70, 89, 67, 93, 66, 8,120, 12,239, 94,118,142,106,171,185,150,172, 98, 56, 59, 59,248,180,235,154, + 24, 27,249, 41,101, 13,117, 1,194,242,249,204,253,236, 28,213,230,228,208,211,111,109, 10,158, 33,238,112,230, 17,140, 59,245, +243, 87, 4, 0,218,125,250,117,189,202, 54,176,210,103, 32, 3, 5,109,121,124,124, 60,108,129,116,115, 57,101,128, 94, 91,224, + 19,157,158,150, 6, 25,144, 23, 15,240, 10,252, 46, 73, 98, 66, 2,172, 44,224, 43,252, 96, 4,180, 69,120, 51, 1,136,141,238, +156,105, 89,185,128,249,113, 13,223, 73,139, 86,209,223,133,130,139, 82,106,246,130, 87,243,235,125, 2, 96,113,193, 90, 94,198, +254, 65,111,131,179,137, 43,124,130,170,145,208, 78,190,252, 52, 0,189,222, 4,167,165,203,223,205, 9, 96,155, 70,163,161,249, +249,249, 84,165, 82,209,156,156, 28, 10,224, 80, 49,199, 28,138,139,139,163, 49, 49, 49, 52, 42, 42,138, 70, 68, 68, 80, 0, 59, + 45,205,167,181,181,245, 79,189,123,247, 54, 8, 4,130, 53,111,162,236,118,118,118,139, 27, 55,110,172,253,225,135, 31,232,111, +191,253, 70, 55,111,222, 76,199,141, 27, 71,107,213,170,165,182,177,177,233, 95, 30, 78, 23, 23,151, 57,190,190,190,169, 91,182, +108,161, 59,119,238,164,171, 86,173,162,179,103,207, 54,120,120,120, 36, 40, 20,138, 14,229,225,116,114,114,218,212,162, 69, 11, +237,166, 77,155,232,233,211,167,233,174, 93,187,232,151, 95,126, 73,253,252,252,212,114,185,188,167, 57,156, 0,120,124, 62,127, +197,232,209,163, 19,220,220,220,142, 21,217, 38,243,247,247,191, 53,112,224,192, 56, 0,211,223,151,251,147,227,228, 56, 57,206, +138,115, 14,118,135, 91,187, 42,208,211,139, 95, 81,122,241, 43, 26, 84, 5,236, 0, 55,184, 83,128, 39, 19, 10,251,181, 10, 12, + 92, 46, 4,250, 81,128, 87,236, 82, 92, 62, 1,158,132,199,235,213,188,113,227,229, 66,160,191,113, 95, 9,143,215,171, 85, 96, +224,114, 1,143, 55,168, 68,190, 82, 56, 41,192, 19,242,249,211,155, 55,109,186,130, 15,204, 50,166,125, 88,133, 60,254,178, 99, + 37, 26,232, 69,158, 15,114,130,172, 52,206, 18,234, 99,228,155,174,227,127,122, 41,239,141,192,127,211, 55,225,187,194,249, 47, + 18, 90,213, 11,186,109, 14,153, 44, 51,139, 57,102,102,145,125,182, 1,168, 94,206,250,148,190,201,178, 3,168,237,224,224,112, +162,122,245,234,201,149, 43, 87,142,179,181,181,221, 13,192,163,130,156, 1, 46, 46, 46,191, 56, 59, 59, 63,115,117,117,189,239, +224,224,240, 61, 0,199,138,112, 10, 4,130,198,206,206,206,231,189,189,189, 51,188,188,188, 18, 29, 28, 28,246, 0,112,182,148, + 19,128, 43,138,105, 84, 0, 8, 1,184,114, 47, 29,142,147,227,228, 56,139, 10,152,246, 85,177,164, 93, 21,232,219, 85,129,161, +189, 55,190, 55, 21, 40, 93, 0,105,121, 69,209, 80, 64, 92,116,255, 50,249,202,224,164, 0,175, 25, 96, 85,244,152, 78, 30,240, + 55,135,243, 93, 22, 90,198,124, 22,180,243, 35, 77,243,205, 47,143,137,204,232, 36,251,134,187,193,222, 9,206,127, 81,183,225, +115,160,236, 96,111,166, 17,228,223,192, 57,243,222,112, 25, 30, 0,248,232, 13,115, 62, 2, 48,248, 77,114,106,181,218, 27, 48, +115,222,183, 50,242, 22, 95,138, 47, 92, 60, 56,112,224,192,225,245,198,193,112, 18,152,209,206,135,172,230, 27,192,156,120, 65, + 99, 77, 55, 31,249, 51,240,177, 69,156, 0,176,181,152,233,121,202,197,103,194, 9, 0, 87,128,191,204,238,112,172,130,238, 38, +239,216,187, 57, 30,192, 38,139,226,104,113,224,192,129, 3, 7, 14, 28,222, 30, 78, 63,165,220,135,216,191, 31,199,138,204,113, + 88,232,247, 73, 0, 4,149,160,202,204, 30, 73, 65, 8, 9, 42,135,234, 59,195,113,114,156, 28, 39,199,201,113,114,156, 28,231, +127,139,211,132,187,164,129, 21, 79,138,240,189,149, 1, 35,111, 10,196,252,105,203,202, 65,254,142,134, 77,224, 56, 57, 78,142, +147,227,228, 56, 57, 78,142,243,159,229,124,167,197,212,235,214,172,215, 4, 34,215,117,200,129, 3, 7, 14, 28, 56,112,224, 80, + 1,148,102,117,227,132, 22, 7, 14, 28, 56,112,224,192,129, 67, 5, 64, 8,113,197,171, 41,170,142, 21,172, 57,139, 22, 7, 14, + 28, 56,112,224,192,129,195, 27, 66,103, 74,233,166,226, 34,195, 51, 92,221,112,224,192,129, 3, 7, 14, 28, 56, 84, 12, 70, 63, + 45, 75,231, 58,228,192,129, 3, 7, 14, 28, 56,112,224, 80, 10, 74,243,209,122,109,212,225,177, 99,199,104,231,206,157, 9, 87, +101, 28, 56,112,224,192,129, 3,135,183,129,119, 81,139,152, 88,176,142, 21, 13, 78,205, 89,180, 56,112,224,192,129, 3, 7, 14, + 28, 42, 0,163, 69,171,160,219,240,181, 52, 78,104,113,224,192,129, 3, 7, 14, 28, 56, 84, 0,165, 89,180, 24,224,149,153,142, +171, 38, 14, 28, 56,112,224,192,129,195,219,194,187,172, 69, 40,165,155, 10,150,191, 76,151,100, 28,117,216,186,160,128,173,185, + 75,205,129, 3, 7, 14, 28, 56,112,120, 11,120,103,181, 8, 33,196,181,160,219,208,245, 47,219,254,206, 41,120, 56,112,224,192, +129, 3, 7, 14, 28,222,119, 24,227,103, 21, 23, 71,139, 19, 90, 28, 56,112,224,192,129, 3, 7, 14, 21, 20, 90, 69,211, 10, 29, +228, 57,161,197,129, 3, 7, 14, 28, 56,112,224,240,247,224,111,141, 12, 79, 8, 9,226, 56, 57, 78,142,147,227,228, 56, 57, 78, +142,147,227,124,223, 97,140, 8, 95,212,186,197,133,119,224,192,129, 3, 7, 14, 28, 56,112,168,160,200, 50,245,205, 50,253,207, +205,117,200,129, 3, 7, 14, 28, 56,112,224,240, 55,129,179,104,113,224,192,129, 3, 7, 14, 28, 56, 84, 0,198, 17,135,166,255, + 57,161,197,129, 3, 7, 14, 28, 56,112,224,240, 6,197, 86,113,233, 92,215, 33, 7, 14, 28, 56,112,224,192,129, 67, 5, 80,212, + 1,222,244, 63, 1, 16, 84,130, 50, 59, 99,193, 9, 44, 30,125, 80, 22, 63,199,201,113,114,156, 28, 39,199,201,113,114,156,239, + 31,103, 89,220,150,232,143,127,147,208, 42,201, 25, 30,148,210,191,109, 1, 16,196,113,114,156, 28, 39,199,201,113,114,156, 28, + 39,199,249, 62, 47, 0, 92, 1,140, 52, 89, 92,141,219, 56, 31, 45, 14, 28,222,117, 28, 32, 60,164,251,122,131, 82, 55,240, 68, +241,136,127,240, 2,243, 40, 91, 97,206, 68,127, 47, 72,117,206,208, 75,146,145,120,255,101,133, 57, 57,112,224,192,225, 61, 69, +193,100,210,197,250,104,113, 66,139, 3,135,119, 29,201,126, 62,224, 99, 49, 24,184,130,106,195,224,232,191, 24,192,195, 10,115, + 10,217,111, 96, 96, 60, 64,181, 79,225,228,187, 4, 64, 8, 87,217, 28, 56,112,224, 96, 25,254,113,103,120,129, 64,144, 72, 8, + 97,197, 98,241,193,226,102,185,230,192,225, 77,129, 16,226, 42,149, 74, 15, 18, 66, 88,161, 80,152,248, 94, 22,114, 71,109, 25, + 24,195, 71, 26, 29,235,254,251,131, 12, 39,149,218,224, 3, 70,223, 9, 63,251, 88, 85,136,147, 79,218,231,107, 89,207,157, 55, + 85,206,185, 26,125, 77, 80, 84,140,243,207,107, 98, 35, 18,137,126, 39,132, 56,112,119,232,251, 9,127, 66, 62,104, 40, 16, 76, +169, 73,200,135,132, 16,194,213, 8, 7, 78,104,253,195,208,235,245, 78,209,209,209,100,243,230,205,221,172,173,173,195, 4, 2, +193, 76, 66,136,240,191, 82,225, 10,133,226,170, 82,169, 76,180,177,177, 73, 84, 42,149,119,202, 74,127, 79, 5,144,143,147,147, + 83,164,189,189,253, 83,211,116,167,186, 61,154,213,104, 49,100,158, 67,192,199,173, 42,200, 47, 20, 8, 4, 51,149, 74,101,216, +166, 77,155,186,133,134,134, 18,157, 78,231,244, 94, 86,102, 62,235, 12,134,215,230, 81,188, 74, 22,159,165,115, 14,142, 80, 41, + 0, 94,107,104, 80,254,143,152, 76,214, 25,160, 31,222,139,201,147, 95, 77,115,116,190,244, 66,109, 13,134,105,131,124,226, 82, +225, 6,135, 97,198,176, 44,219, 78, 40, 20,126,193, 53,191,239, 39, 68, 12,211,252,106,183,110,223, 76,175, 83,103,188, 31,208, +181, 56,177, 69, 94, 97, 66,205,154, 53, 79, 16, 66,250,189,193,182,229, 59, 63, 63,191, 88, 66,200, 68,238, 74,112,248,135,223, +107,245,141, 31,248, 5,211,240,184, 90, 44,180,122, 87, 33,205, 7, 84, 37, 23,250, 86, 33,217,253,170,146,156,193, 85,201,229, + 94, 85,200,135,229,201,144,135,135, 7,154, 53,107,198,139,138,138,146, 78,156, 56,113,158, 88, 44, 14, 39,132,116, 40, 15,151, + 76, 38,187, 45,151,203,163, 5, 2,193,107,121,145,203,229,183,173,172,172,162, 5, 2, 65, 91,211,116,107,107,235,171, 74,165, + 50,209,218,218,250, 78, 9, 66,232,182, 82,169, 76, 84, 40, 20,183, 77,211, 5, 2, 65, 91,133, 66, 17, 99,109,109, 93, 52,253, + 67,107,107,235,232,162,233, 37, 65, 32, 16,120, 68, 71, 71, 59,197,196,196, 56,137, 68, 34,103,211,244,168,168, 40,167,232,232, +232,215,210, 45,129, 64, 32,248,208,202,202, 42, 90, 46,151,223, 46, 46,189,104,153, 74,130, 73,221,125,104, 78,186,165, 34,171, +125,251,246,151,227,227,227, 61,109,108,108,108, 76,183,217, 41,109, 58,252,178,101,221,228,238,157,218,143,113,242,255,164,118, + 57,249, 59,136,197,226,240, 73,147, 38,205,139,137,137,145, 54,110,220,152, 39, 20,190,167, 58,254,128,191, 16,132,109,201, 82, +234,248, 56, 54,223,177,115,183,222,252,187,209,121,142, 58,131,193, 14,224,181,198,182,202,226,114,113,242,117,129, 44,165,206, +127, 68, 8, 28,219,244, 25,207, 59, 27,193,119,212, 25, 12,246, 96,208,170, 92,156,127, 94, 27, 1,143,199,155,188, 98,197, 10, + 6,192, 56, 66,136,232,191,212, 16, 55,118, 39,238,109,171,243,111, 54,112, 35,205,223, 96,227, 30, 32,151,203,111, 19, 66,124, +254, 45,229,212,176,236,147, 61, 47, 95,158, 28, 84,173, 90,151,233,117,234, 12, 43, 42,182, 10,126, 79, 95,178,100,201,224, 71, +143, 30, 57, 86,169, 82,101, 20, 33,132,121, 3,117,177,106,201,146, 37,211, 30, 61,122,228,230,237,237,189,224, 77,112,114,248, +119,105,120, 0,109, 0,116, 6,208, 22, 64,163,130,223, 13, 11,150,206,120, 21, 69,193,116,221,176,224, 88,227,246,198, 37,112, +116, 46,230,184,134, 38,233,166,255,139,254, 54,162,126,193,186,115,193,104,195,206,133, 91, 40,165, 56,122,244, 40, 53, 93, 23, + 93,250,122, 99,254,248,102,238,170,199, 71,118,209,156,232,151, 52, 61,244, 46,189,187,233, 91, 58,190,161,163,106, 64, 21,124, +103,161,103, 62,165,148,210,157, 59,119,210,179,103,207,210,140,140, 12, 26, 18, 18, 66, 27, 53,106,148, 39,147,201,254, 0,224, +109, 9,159, 66,161, 72,252,227,143, 63,104,251,246,237, 51,173,172,172,150, 3, 96, 40,165,176,182,182, 78,188,114,229, 10,109, +223,190,125,166, 66,161, 88, 5,128, 71, 41, 69,207,158, 61,147, 40,165,212,209,209, 49,174, 56,190,238,221,187,167, 83, 74,169, + 82,169, 76, 44,200, 47, 79,161, 80,172, 26, 59,118,108,206,173, 91,183,168,173,173,173, 49,157,177,182,182, 94, 62,110,220,184, +156,224,224,224,194,244,178, 22, 59, 59,187,104,131,193, 64,143, 28, 57, 66,157,156,156, 10,243, 96,107,107, 27,109, 48, 24,232, +161, 67,135, 74,204, 91, 41,117,202, 88, 89, 89, 45, 27, 52,104, 80,118, 68, 68, 4,181,183,183, 79, 52, 73, 95, 62,100,200,144, +236,168,168, 40,234,224,224, 96, 86, 30,237,237,237, 19,175, 94,189, 74,123,244,232,145,101, 90,167,246,246,246,137,215,174, 93, + 51,166, 47, 51,166,151,182,184,185,185,141,114,114,114,138,115,114,114,138,179,177,177, 89,228,234,234,154,144,156,156, 76, 41, +165,180,106,213,170, 73,148, 82, 56,214,249,164, 89,245,230,131,231, 57, 5,116,155,180, 97,255,181, 27, 23, 31,166, 38,215,105, + 55,102,153,178, 78,119,165, 5,117,224, 45,145, 72,254,104,217,178,101, 94, 68, 68, 4,205,201,201,161,183,111,223,166,151, 46, + 93,162,143, 31, 63,166, 5,247,221,251, 53,210,101,157,191, 7,221,232,187, 39,100,174,103,232,197, 37, 29,117, 52,226, 44,221, + 53,204, 81,119, 97,146,123, 24,253,209,239,127,116, 99,205, 74,229,226,252,177,230,174,251,179, 61,159,172, 89, 48, 65, 23, 25, + 25, 73,167, 12,233,168, 63, 53,222,253, 5,221,224,183,191, 92,156,127, 94,163,254,159,124,242, 73, 78, 84, 84, 20,245,247,247, +207,229,241,120,195,255, 43, 35,146, 26,185,193, 61,200, 71, 20,123,127,231, 20,182,107,128, 44,181,190, 43,154,191,129, 81, 78, + 1, 78, 78, 78, 41,219,182,109,163, 10,133, 34, 9,128,207,191,100,244, 21,241, 3,186,109,175, 83,231, 16,219,171,151, 97,123, +157, 58,135,252,128,110,120, 21, 78,136, 0,152,177,116,233,210, 96,157, 78, 23,188,117,235,214,224,110,221,186, 5, 3,152, 82, +193,115,254,240,221,119,223, 81,157, 78, 71,183,110,221, 74,187,117,235, 70, 1,172, 54,247,120, 43, 43,171,234,181,107,215,222, +225,239,239, 31, 85,183,110, 93, 77,205,154, 53,243,125,124,124, 34, 2, 2, 2,182,137,197, 98,111,110, 84,221, 63,179,148,161, + 69, 26,205,152, 49, 99, 38, 0, 58, 99,198,140,153,148,210,206, 5,237,122,103,211,223, 69,215,148,210, 32,211,255,197,113, 24, +151,226, 56,139, 59, 71,145,223, 69, 71, 29,186, 22,252, 31, 89,184,205, 88,168,163, 71,143,182, 58,122,244,232,133,162,133,235, + 93, 5,205,198, 55,115,207,203, 75,142,167, 15,191,253,130,158,107,227, 65,175,180,118,161, 79, 39,127, 66,227,119,174,162,159, +215,179, 85,245,170,130, 54,150, 10,173,131, 7, 15,210, 67,135, 14,209,227,199,143,211,135, 15, 31,210,212,212, 84,186,115,231, + 78,131,189,189,125,158, 88, 44, 94, 2, 64,106, 14,159,181,181,117, 34,165,148,170,213,106,186,104,209,162,124,133, 66,113, 7, +128,115,129, 80,162, 25, 25, 25,116,201,146, 37,249, 74,165,242, 62, 0, 55, 7, 7,135,232,151, 47, 95, 82,103,103,231, 98,197, +140,173,173,109,226,147, 39, 79,168,173,173,109, 34, 0,119, 91, 91,219,135,135, 15, 31,214, 82, 74,105, 76, 76, 12,181,179,179, + 75, 4,224,108,111,111,127,247,232,209,163, 90, 74, 41,141,139,139,163,118,118,118,102, 11,173,188,188, 60,122,234,212,169,215, +242, 96, 76, 63,113,226,196,107, 2,204,140,250,116, 86, 42,149,193,123,247,238,213, 24, 12, 6,250,240,225, 67,170, 84, 42, 19, + 1, 56,219,216,216,220,217,191,127,191,198, 96, 48,208,208,208, 80,179,197, 96,229,202,149,147, 40,165, 84,175,215,211, 13, 27, + 54,168,141,117,106, 76,215,104, 52,116,253,250,245,106,107,107,235, 96, 0,206,165,113, 57, 56, 56,196,105, 52, 26,154,145,145, + 65, 27, 55,110,156,115,229,202, 21,154,149,149, 69, 41,165,180,128, 15,190,173,134,127,125,227, 89, 78,214,167,211,214,237,243, +110, 52,224,219,147, 55, 99, 99,126,250,237,118,176, 67, 64,247,142,102,148, 95, 42, 20, 10,151,184,186,186,230,159, 61,123,214, +160,209,104,232,243,231,207,233,213,171, 87,233,245,235,215,233,237,219,183,233,195,135, 15,223, 63,161,181, 31, 60,186,209,183, + 59,221,232, 27,188,109,144, 67, 74,246,157,221,148,158,158, 72, 95,124, 93,133,206,237,168,200,102, 55,250, 6,211,141,126,189, +232,252, 86,124,139, 56, 55,213,236, 74, 55,250, 6,127,215,219, 43,245,110,240, 45,122,225,194, 5,186,126,213, 82, 58, 62,200, + 61,151,221,232, 27, 76,127,172,217,195, 34, 78,147, 69, 44, 22, 63,187,124,249, 50,189,120,241, 34, 93,176, 96, 1,149,201,100, + 81, 21,175,135,154, 66,250,163,143, 23,221,236,211,138,110,169,225, 74,207,151, 47,111,127,183,200,106,231, 35,138, 73,185,251, + 27,165,105,207,105,194,114,127,218,209, 87, 80, 33,177, 85, 32,178,146, 35, 34, 34,104, 66, 66, 2, 93,185,114, 37,181,182,182, +254, 87,139, 45, 95,160, 59,128,153,203,150, 45, 43, 20, 89,235,214,173, 11,126,240,224, 65,176,167,167,231,241, 10,156,107,245, +178,101,203, 10, 69,214,186,117,235,232,131, 7, 15,168,151,151, 87,116, 89,199, 14, 26, 52, 72,214,172, 89,179,224,129, 3, 7, +170,182,109,219, 70, 35, 34, 34,232,253,251,247,233,178,101,203,232,188,121,243,232,207, 63,255, 76,123,244,232,145,219,184,113, +227, 27,189,122,245,146, 88,152, 55, 62,165, 84, 84,176, 8, 40,165, 70,161,201, 7, 32, 48,126,252,115,203,235, 66,171, 36, 45, + 82,146,152, 42, 73, 96, 21,221, 86,138, 16, 43, 85,176,149,117,190,162,162,170,184,197,212,180,122,190,115,231,206,127,241,141, +225, 83, 44, 28,249,229,215,146,240,109, 43,145,184,119, 45,120, 25,137, 16,100,167, 66,125,249, 24,116,151, 15, 99,112,211,166, + 82, 41, 33,223, 88,106, 3,148, 72, 36,144, 74,165, 16,139,197,200,200,200,192,139, 23, 47,208,172, 89, 51,230,246,237,219,146, +145, 35, 71, 78,148, 74,165, 81,132,144,143,205, 48, 23, 3, 0,174, 94,189,138, 17, 35, 70,136,119,236,216, 81,215,209,209,241, +158,193, 96, 16, 1, 64,104,104, 40,250,246,237, 43,222,189,123,119, 45, 55, 55,183, 59, 90,173, 86, 38, 22,139,193,227,241, 74, +228, 19,137, 68,208,233,116,226, 26, 53,106,220,191,119,239, 94, 64,151, 46, 93, 4,145,145,145,120,249,242, 37,116, 58,157,200, +199,199,231,193,157, 59,119,234,118,238,220, 89, 16, 29, 29,141,200,200, 72,152,235,243, 73, 8,129, 70,163,129, 88, 44, 6,195, + 48,175,165,171,213,106,136, 68, 34,179,185, 4, 2,193,135,126,126,126, 15,238,221,187, 87,191,123,247,238,194, 91,183,110, 33, + 38, 38, 6, 6,131, 65, 84,179,102,205, 7,247,238,221,171,215,173, 91, 55,225,253,251,247,145,152,152,248,218,249,202,240,163, + 1, 0,220,187,119, 15, 3, 7, 14, 20,253,254,251,239,245, 92, 93, 93,239,235,245,122, 17, 0, 60,120,240, 0,125,251,246, 21, +157, 60,121,178,126,165, 74,149,238,151,209,149,200, 3, 0,157, 78,135, 81,163, 70,201,173,173,173, 17, 29, 29, 13,150,101, 97, + 48, 24, 0, 0,169,233,169, 15,238, 61,120, 24, 58,184,127,239, 86,121, 90,181,250,218,205,219,143,171, 86,246,242, 32,132, 86, + 46,163, 46, 63,150,201,100, 81,223,125,247,221,164,240,240,112,177,175,175, 47,115,255,254,125,100,100,100, 64, 36, 18, 65, 34, +145, 64, 44, 22, 67, 32, 16,188,127, 70,244, 44,127,123,176,104, 23,153,172, 17,139,109, 60, 20, 86,174, 62, 64,212, 69, 84,113, + 20,131,199,240, 36,183, 94,170,228, 0,109, 7,207, 20,123,203, 56,217,118, 47,147, 52, 98,157, 93, 45, 43, 55, 15, 79,164,166, +166,162, 82, 85, 63,228,139, 28, 69, 87,159,231, 90,129, 88,200,249,231,181, 10,172, 81,163,134, 75,245,234,213,145,146,146,130, +250,245,235,195,214,214,214,150, 16,210,174,220,117,176,173,178, 24, 89,104, 14, 48,203, 97, 32, 11,160,227, 47,198,243,228,250, +216,212,224, 95,115,193, 27,187, 19,119,107, 43,209,245,221,123,246,186,219,123,214, 4,142,125, 10,103, 27, 49,182,140,169,111, +231,168, 20, 31, 42, 79, 55, 34, 33, 36,192,217,217,249,236,141, 27, 55, 28, 36, 18, 9,238,220,185, 3,127,127,127,172, 92,185, +210,209,214,214,246,226,191,161, 27,145, 82, 74, 67,129, 35,223,221,191,191,117, 71, 88,216,209, 65,213,170,117, 25,232,227,179, +104,116,191,126,195, 39, 76,152,128,165, 75,151,226,208,161, 67,104,222,188, 57, 70,142, 28,169,139,138,138,218, 94,206,238,194, +181,203,151, 47, 31, 63,113,226,196,162,156,218,200,200,200,239, 74, 59, 54, 32, 32,192,227,217,179,103,177,147, 39, 79,174,191, + 99,199, 14,169, 76, 38, 67, 70, 70, 6, 54,111,222,140,153, 51,103,130, 16, 2, 74, 41,126,254,249,103,217,176, 97,195, 26,133, +133,133,197, 86,174, 92,217, 28,183, 14, 2, 64, 2, 64, 86,176,200, 1,200,118,239,222,173,236,222,189,187,117, 65,154, 20,128, +148, 16, 34, 6,135,162, 40, 86,139,152, 92,243,163, 69,238,181, 46, 69,211,138,110,163,148,118, 41,141,195,194,123,187,184,243, + 29, 43, 26, 25,254,181,119,170,201,239,214,199,142, 29,187,240, 23, 82,160,142,139,183, 47, 50, 79,239,135,148, 79, 32,229, 21, + 44,124, 2,230,197, 3, 84,146, 8,160,163, 52,160, 60, 66,203, 40,182,164, 82, 41,132, 66, 33,114,114,114,160,211,233, 48,107, +214, 44,241,233,211,167,237, 25,134,249, 95, 89, 60,166,130,233,233,211,167,168, 89,179, 38, 57,114,228,136,243,184,113,227,164, + 0, 32, 18,137,144,153,153,137,234,213,171,147, 19, 39, 78, 56,205,158, 61,219,170, 52, 49, 67, 8,129, 80, 40,196,196,137, 19, +165, 55,111,222,180,115,115,115,195,139, 23, 47,144,150,150, 6, 43, 43, 43, 76,156, 56, 81,122,227,198, 13, 71, 55, 55, 55, 68, + 68, 68, 32, 51, 51, 19, 86, 86, 86, 22, 11, 45,161, 80,248,218, 49,132, 16,104,181, 90,136, 68, 34,179, 5,145, 82,169,220, 21, + 28, 28,236,168, 84, 42,113,255,254,125,232,245,122, 40,149, 74,140, 31, 63, 94, 26, 28, 28,236,104, 99, 99,131,208,208, 80,163, +229,207,162, 60, 2, 0,203,178, 8, 13, 13, 69,229,202,149,113,241,226, 69,167,209,163, 71, 75,140,233,207,159, 63,135,135,135, + 7, 46, 94,188,232, 36,151,203,119,149,196,197,178, 44,226,227,227,241,232,209, 35,188,120,241, 2,201,201,201, 72, 73, 73, 65, +118,118, 54,244,122,253, 43, 63,187,236,172, 99,187,247, 29,185, 39,149, 74,101,254, 62, 53, 60, 31, 60, 12, 73,146, 74,165, 50, + 47, 79, 79, 31, 66, 22, 48,165,228,243,127, 97, 97, 97,246,195,134, 13, 19, 62,123,246, 12,113,113,113, 16, 8, 4,133,247,150, +113, 17,139,223,179,182,140, 16, 2,162,169, 1, 66,234, 95,127,145,107, 23,216,165,191, 16, 47,127, 7, 88, 29,192,240,209,186, +142, 7,255,208,131, 92,103, 80,212,129, 26,126,128, 25, 23,158, 16, 2,104,171, 3,228,131, 83,207,244,246,205, 63, 25, 35,140, +141,141,133, 80, 40,132, 88, 44, 70,253, 15,123,242,119,223,211,185,128,160, 46,180,240, 53,139,211, 4, 82,169,244,171,121,243, +230,201, 77, 57,135, 15, 31, 46, 87, 42,149,243,202, 45,178,114,101, 77,161,167, 19, 31,197,170, 42, 47, 58,150, 80, 51, 44, 41, +207, 23,148, 78, 6,116,245, 42, 42,182, 8, 33,173, 37, 18,201, 75, 66, 72,139, 10,137, 44,133,232,218,158, 61,123,221,237, 42, +189, 18, 89,208,231, 3, 2, 41, 92, 28,109,176,101, 82, 27, 59, 71, 27,169, 69, 98,171, 64,100,253,113,253,250,117, 7,137, 68, +130,224,224, 96, 8,133, 66, 72, 36, 18,212,174, 93, 27, 27, 55,110,116,180,179,179,251, 87,137,173, 37,247,239,111, 91,252,232, +209,211, 25, 1, 1,126, 31,203,229,118, 99, 7, 14, 84,206,158, 61,251,232,225,195,135,183,118,238,220, 57,229,230,205,155,223, + 83, 74,247, 91,120,125, 8, 33,100,221,138, 21, 43,198, 26,133,219,236,217,179,127, 62,124,248,240,226,206,157, 59,199,223,188, +121,115, 50,165,116, 93,105, 28, 57, 57, 57,135,231,204,153,163,252,228,147, 79,140,255,113,249,242,101,108,223,190, 29,114,185, +252,181,125,187,117,235,134, 17, 35, 70,216,106, 52,154, 82,223, 73,206,206,206,109,175, 95,191,238, 15, 64, 8, 64,108, 20, 90, + 15, 31, 62,180,201,202,202,178,177,178,178,178,113,117,117, 85, 24,197,214, 39,159,124, 98, 35, 16, 8, 90,128, 3,202,210, 34, +166, 66,199,156,180,242,238,111,174,216, 42,242, 63,190,164,121, 14, 95, 19, 90,157, 59,119,190, 0,160,101,113, 59,105,211, 18, + 33,134, 1, 82, 30,129,140,103, 34,182,192,130,159,153,132,242, 12,224, 45,250, 50,148, 74,165,144, 72, 36, 16, 8, 4,208,233, +116,200,204,204,180, 72, 20, 88, 91, 91,195,202,202, 10,121,121,121,208,235,245,144, 72, 36, 70, 49, 2,107,107,107, 8, 4,130, +194,151,112, 81,107, 82, 81,107,142, 80, 40,132, 92, 46, 71,124,124, 60, 34, 35, 35,193,178, 44,172,172,172, 32,151,203, 33, 18, +137, 16, 23, 23,135,184,184, 56, 80, 74, 33,151,203, 33,151,203,205, 22, 71, 0, 96, 48, 24, 32, 18,253,213, 15, 88,167,211, 89, +100,209,210,235,245,120,252,248, 49,162,162,162, 32,145, 72, 10,203, 42, 22,139,241,252,249,115, 36, 36, 36, 64, 38,147,193,218, +218, 26, 74,165,210,108, 94, 99, 89, 20, 10, 5,164, 82, 41,210,211,211,161, 82,169, 10,235,212,218,218, 26,114,185, 28,153,153, +153, 72, 74, 74, 42,181,236, 6,131, 1,113,113,113, 72, 78, 78, 70,116,116, 52, 82, 82, 82, 10,197, 22,203, 86, 60,254,229,197, +139, 23,241,226,197, 11, 99,215, 84,225,245, 53, 93, 27,243,253,222, 96,125,128, 18, 58, 65,251,148, 28,157, 56, 89, 43, 84, 58, + 7, 4, 1, 47, 79, 0, 12, 31,144,216,162, 73,173, 42,136, 76, 55,200,159, 36,106, 36, 32,232,128,117, 62,182,102,113, 26, 4, +237,146,179,117,226, 8,173,163,117,205, 58, 13,144,152,152, 8,177, 88, 12,177, 88,140, 15,154, 7,225,101,170, 65, 22, 18,155, + 39, 3, 69,123,179, 56,255,124, 70,171, 90, 89, 89, 53,109,209,162, 5, 49,229,236,212,169, 19, 8, 33,181, 9, 33,126, 22,149, +127, 77, 53, 17,180,178, 38,224,211,137, 33,241, 42,183, 67, 15,243,125,186,126,220,211,238,135, 51, 73, 53, 31, 39,168,189, 65, +117, 95,130,106, 27,148, 87,108, 17, 66, 90, 41, 20,138,163,107,214,172,241,150, 72, 36, 39, 8, 33,129,229,225,177,146,242, 54, +124, 53,182,191,187,173, 81,100,233, 84, 0, 95, 10, 8,164, 0, 95, 10, 23, 39, 7,124, 51,162,157,157, 76, 34, 56,104,129, 96, +221,189,110,221, 58,199,162, 34,203,184,212,175, 95, 31,115,231,206,117,180,179,179,219,245,150,191, 5,218,219,216,216,236, 8, + 10, 10,186, 30,167, 80,140,136,111,208, 64,244,135, 82,153,217, 54, 51, 83,233,245,240,161,214, 23,120, 0, 96,125,116,116,116, + 71,115, 69, 22, 33,164,159, 82,169, 12, 14, 10, 10,210, 42, 20,138,168,149, 43, 87,126, 62,110,220, 56, 44, 93,186, 20,115,230, +204,217, 12,224, 51, 74,233,172,232,232,104,183,178, 68, 22, 0, 36, 36, 36, 12,152, 62,125,122, 74, 74, 74, 10, 0,160,118,237, +218,200,200,200,192,148, 41, 83,240,197, 23, 95, 0, 0,234,213,171, 7, 74, 41, 18, 19, 19,177,124,249,242,196,132,132,132,161, +101,180,237,209,251,247,239,111,164,213,106, 61, 10,186, 7,197, 25, 25, 25,214,105,105,105, 10,173, 86, 43,103, 89, 86,110, 99, + 99, 99, 5, 64, 54,120,240, 96,126, 72, 72, 72, 77,189, 94, 31,203,105,171, 63, 81,154, 22, 41, 39,142, 85,196,114, 85,156, 69, +172,132,251,179,116,139, 86,231,206,157,137,233,250, 53,139, 17,193,253,168,219, 23, 97, 23,208,224, 53,107,150,140, 71, 32,181, + 86,226,101,116, 36,132, 32,143, 44, 45,132, 81, 88, 21, 21, 91,153,153,153, 24, 51,102, 76, 94,159, 62,125, 82, 89,150,237,105, +174, 40, 80, 42,149, 80, 42,149, 8, 9, 9,161, 61,122,244, 72, 92,185,114,101,158,169,208,122,250,244, 41,109,223,190,125,210, +188,121,243,114, 74, 19, 90, 70,139,214,146, 37, 75,242, 90,183,110,157,252,232,209, 35,106, 20, 83, 86, 86, 86, 88,190,124,121, + 94,155, 54,109, 18,111,221,186, 69,141,105,150, 88,180, 24,134, 41, 20, 90,166,199, 48, 12, 3,150,101, 45, 18, 90,185,185,185, + 3, 58,119,238,156, 24, 26, 26, 74,141,229, 84, 42,149, 88,185,114,101, 94,187,118,237, 18, 31, 61,122, 68,141,105,214,214,214, +102,139, 65,227,249, 21, 10, 5,172,173,173, 17, 18, 18, 66,219,183,111,159,184,122,245,234,124,211,244,199,143, 31,211,110,221, +186, 37,102,103,103, 15, 40,205,162,245,226,197,139, 66, 11, 86,126,126, 62, 82, 82, 82, 16, 29, 29, 93,216,117,152, 39,183,238, +216,191, 79,215,186,121,121,121,170,144,167,207,162,106,215,242,119,202,203,203, 83, 69, 70, 69, 61,165,116, 30, 91,202,131,208, +243,211, 79, 63, 77,157, 57,115,102, 94, 86, 86, 86,177, 34,203,184,126,175,192,176, 46, 32,180,197,165,103, 57, 54,237,186,246, + 21,145,132,155,128, 54, 7, 16,219, 2, 98, 91,240,229,246,248, 40,176, 30,111,219,245, 44, 23, 80,182, 25,132, 98,143, 50, 57, + 5,212, 25, 96, 3, 79, 63,205,183,109,209,107,188, 40, 45, 45, 13, 60, 30,175, 80, 20,201,228,114,180,253,120, 48,243,243, 77, +181, 11, 64,155,131,240, 60,204,205,174, 72, 36,154,246,213, 87, 95, 9,211,211,211,193, 48,204,159,156, 50, 25, 70,143, 30, 45, +182,182,182,158, 99,118,217, 15,248, 11, 33, 16, 55, 1,232, 23, 79, 18,242,221, 14, 63,200,243,253,114,201, 22,105, 64,189, 70, + 24,213,218, 73,186,228, 88, 82,192,189,232,188, 42,128, 97, 18,244,154, 15, 44, 21, 91,132,144, 64,133, 66,113,236,246,237,219, +178, 78,157, 58, 97,249,242,229,114,169, 84,122,130, 16, 98,113,195,159,155, 99, 24,183,112,245, 47,137,247,191,239, 0,104,115, + 95, 9, 44,147, 37, 41,135,197,220, 45,103, 51,117, 58,218,223, 92,206,188,188,188, 33,159,125,246, 89,234,193,131, 7,255, 34, +178, 36, 18, 9,194,195,195,177,104,209,162,180,180,180,180,161,111, 83,100,141, 27, 55,110, 81, 76, 76,140,239,233,211,167,249, +201,201,201, 78, 43,126,250, 41,243, 64,102,102,218,226,135, 15,159,204,170, 85,171,198,140, 58,117,134,150, 20,250,161, 36,145, + 53,118,236,216,221, 49, 49, 49,245,207,156, 57, 35, 72, 78, 78,246, 24, 59,118, 44,150, 45, 91,134, 57,115,230,108, 4, 48,138, + 22, 56,203,152, 11,141, 70,243, 36, 61, 61,189, 75,135, 14, 29, 50,210,211,211, 81,167, 78, 29,116,237,218, 21, 46, 46, 46,112, +115,115, 67,247,238,221,225,227,227,131,212,212, 84,244,239,223, 63, 45, 57, 57,185, 3,165,244, 69,105,156,169,169,169, 97,187, +118,237,122, 58,126,252,248,250, 49, 49, 49, 53, 1,216,103,103,103,203,179,179,179,197, 26,141, 70,106,107,107,107, 91,175, 94, + 61,135,145, 35, 71, 90,221,189,123,183,102, 76, 76, 76, 14,128, 72, 78, 94, 21,138,172, 18,181, 8,128,228, 2,193,163, 41,178, + 78, 46, 99,155,185,199, 22,251,219,140,253, 94, 19, 91,166,203, 95, 44, 90, 37, 65, 11,204,221,190,127, 91,190,200,179, 58,148, +190,117, 33,147, 72, 32, 21,137, 32,181,181,135,154,101,241, 83,120,130, 42,151,210, 57,150, 86,168,105,183,161, 68, 34, 1,143, +199,195,250,245,235,245, 77,155, 54,205, 63,123,246,236, 26,149, 74,229, 73, 41,253,205, 18, 81,176,122,245,106,213,196,137, 19, +239, 37, 37, 37,213,149, 72, 36, 26, 99,250,154, 53,107, 84,131, 7, 15,126, 24, 19, 19, 83, 95, 38,147,169, 74,242,207, 50, 21, + 90, 98,177, 88,157,148,148,212,104,248,240,225,161,235,215,175,207,149,201,100,144,203,229, 16,139,197,154,164,164,164,186,159, +127,254,249,189,101,203,150,169,164, 82, 41,228,114,185, 69,221,114,148,210,191, 8, 42,211,116,115,161,211,233,206, 38, 37, 37, +213,157, 56,113,226,221, 31,126,248, 33,215, 40,128, 76,243,184, 98,197, 10,149,149,149,149, 69, 22, 45,227,126,114,185, 28,171, + 86,173, 82,141, 31, 63,254, 94, 82, 82, 82, 93,177, 88,172, 49, 73,207, 29, 55,110,220,221,164,164,164,186, 58,157,238,108, 41, + 95,120,134,172,172, 44,240,249,124, 60,124,248, 80, 45, 20, 10,193, 48, 12,158, 63,127, 94, 40,180,236,236,236,252,235,214,174, +229,247,203,238,253, 23,164, 66,177,184,105,163, 15,106,190,136,136,140,161,148, 68,148,241,197,241, 91,126,126,190,231,229,203, +151,215,116,232,208, 33,127,243,230,205,122, 62,159,255,151,151,207,251, 39,180, 32, 3,129,244, 89,146, 90, 33, 97,244, 4, 79, +127,123, 37,178, 36, 54,128,196, 22,144,216,194,221,221, 3, 55,195, 85, 10, 48, 16,193, 96, 70, 12, 49, 74,229, 32,144, 61, 76, +132, 66, 32,146,146,132,132,132, 66, 65,100, 92,188,171,215,196,157,200, 28, 43, 16, 42, 6, 15,150,132, 32,233, 98,111,111,207, +143,143,143,255, 11,167,191,191, 63, 79,167,211,153, 31,218, 37,206,224, 10,176, 99,159, 38,228,187,254,122, 47,215,119,210,226, +159,165, 82, 67, 6,112,123, 53, 2,170,186, 97, 82,175,122,162,217,135,147, 3,110, 69,168,170,130, 71, 71,129,205,113,180, 64, + 32,180, 80, 40, 20, 39,110,221,186, 37, 83, 40, 20,120,241,226, 5, 26, 53,106,132, 77,155, 54,201,100, 50,217,113, 66, 72,107, + 75, 46,211,245, 4, 26,153,147,109,104, 58,109,127, 84,194,253,120,253,107, 34, 43, 57,151,226,179,239, 14,103,164,103,229,247, +188, 22, 85,242,243, 83,204, 61,127, 55, 35, 35,163,253,156, 57,115, 82,147,147,147, 95,187,199, 35, 35, 35,141,130,160, 53,165, +244,209,219,186, 61,149, 74,229,192,197,139, 23,227,214,173, 91,232,212,169, 19, 46, 94,188,136,180,180, 52,236, 57,113,226,217, +174,103,207,102, 25,125,182,138, 11,253, 80, 18,172,173,173,191, 92,188,120, 49,110,223,190, 93,200,153,154,154,138,197,139, 23, +199, 0, 24, 99,169,200, 50, 34, 49, 49,241,230,147, 39, 79, 58,212,169, 83,231,241,154, 53,107, 98, 92, 93, 93,217,145, 35, 71, +226,179,207, 62,131,163,163,163, 97,213,170, 85, 81,129,129,129, 15,195,194,194,130,114,115,115, 31,152,113,125,104, 74, 74,202, +213, 77,155, 54, 93,255,240,195, 15,101, 67,134, 12,113, 60,116,232,144,189, 74,165,114, 19,139,197, 78, 26,141, 70,244,248,241, + 99,222,129, 3, 7, 92, 66, 66, 66,194,243,242,242,110,150, 55,239,255, 65,220, 42,176, 78,157, 41,178,190, 85,198, 54,115,143, + 45,233,119, 89,251,153, 94,255, 77,166,139,233,134, 50,151,129, 85, 49,127,116, 45,133,234,234,160, 38, 52, 97,100, 11,154,216, +183, 38,189,220,202,142, 14,175, 70,114,135,148, 51,188, 67,108,108, 44, 77, 76, 76,164,169,169,169,116,239,222,189,212,197,197, + 37, 87,161, 80, 88, 28,222,193,197,197, 37, 49, 43, 43,139, 54,108,216, 48,205,209,209,177, 48, 20,129,171,171,107, 98,110,110, + 46,109,210,164, 73,154,147,147,211, 42, 20,140,240,240,240,240,136,166,148, 82, 47, 47,175,184,146,248,244,122, 61,117,113,113, + 49,134, 72, 16,216,217,217,253,216,184,113,227,180,196,196, 68,234,234,234, 90, 24, 58,193,209,209,113,121,163, 70,141, 94, 75, + 55, 35,191,209, 49, 49, 49, 52, 38, 38,134, 86,170, 84, 41,206, 52, 61, 50, 50,146, 70, 70, 70, 82, 15, 15, 15,139,195, 59, 56, + 58, 58, 46, 43,154,151,242,230,209,211,211, 51, 49, 47, 47,143, 54,107,214,236,181, 58,245,244,244, 76,204,207,207, 55,166,155, + 21,222, 65, 42,149,142,146, 72, 36,113, 18,137, 36, 78, 44, 22, 47,170, 92,185,114,210,190,125,251,232,170, 85,171,168, 66,161, +120, 21,222,193,191, 91,211,234,205,134,206,114,244,239,254,101, 69,194, 59, 40, 20,138, 63, 92, 92, 92,114, 15, 28, 56, 64,213, +106, 53,213,233,116,212, 8,188, 79,163, 14, 55,249, 84,167, 63,250, 29, 14, 91,232, 29, 50,177,165, 44,255,193, 55,117, 41,253, +223, 39,148, 30,255,140,210,179,211,232,205,141, 35,105, 51,111,177,225,202,148, 74, 79,233, 6,223, 95,205, 10,201,176,169,118, +117,250,163,223,241,103, 11,188, 67,134, 4,186,229,255,180,126, 21,189,113,227, 6,125,248,240, 33,125,241,226, 5, 61,254,219, + 62,218,172,170,236, 21,231,143,126,135, 45, 9,243, 0,160,185, 88, 44,206, 89,185,114, 37,189,126,253,122, 33,231,225,195,135, +169, 76, 38, 83, 1,102,142, 90, 6, 8,253,209,255, 99,253,122,223, 75,179,219, 89,101,167, 30,157, 70,233,131,109,148,110, 10, +160,116,107, 99, 74,247,117,166,244,200, 80,122,125, 85, 47,218,220, 91,168,163, 27,124, 47,210,141,254,237,204,205,167, 64, 32, +200, 58,120,240, 32,141,139,139,163, 23, 47, 94,164,183,111,223,166,161,161,161, 52, 42, 42,138, 30, 59,118,140, 10, 4,130,124, + 0, 22,143,106,108,236, 12,175,160, 26,194,248,123, 75,154, 83,122,168, 63, 77,222, 53,144,118,169,165, 72,107, 82,137,255, 97, + 5, 70,218,213,179,183,183, 79, 57,118,236, 24, 13, 15, 15,167, 23, 46, 92,160, 78, 78, 78, 41, 0, 2,222,246,253, 25, 20, 20, +116,131, 82, 26,220,169, 83,167, 96, 0,191, 7, 5, 5, 5,191,124,249, 50,184, 81,163, 70,215, 81, 74,232,135,210, 56,219,182, +109,171,165,148,210, 78,157, 58, 81, 0,113, 65, 65, 65,244,229,203,151,180, 81,163, 70,154, 55, 52, 74,146, 7, 96,168, 64, 32, +248,201,206,206,238,156,173,173,237, 89, 30,143,183, 9,192, 32,115,218,185, 82, 56,221, 0,248, 3,248,160, 96,169, 89,144,198, +141, 56,252, 47, 77, 56,109,238,142,189,188,209,124, 88, 85,114, 97, 64, 21,100,247,175,130,156, 79,171,145,203, 61,189,241,161, +165,179,123, 27,133, 86, 90, 90, 26,189,123,247, 46,109,213,170, 85,174, 92, 46,143, 5,208,161, 60, 51,134, 59, 56, 56,220,118, +114,114,138,230,243, 95,111,180, 76,210,219,154,166, 59, 57, 57, 93,117,117,117, 77,116,116,116,188, 83, 28,167,131,131,195,109, + 87, 87,215, 68, 7, 7,135,219,166,199,241,120,188, 78, 14, 14, 14,177, 69,211,249,124,254,135, 78, 78, 78,209, 69,211, 81,194, +204,230, 46, 46, 46,209,113,113,113, 52, 57, 57,153,122,122,122,198, 21, 21, 96, 9, 9, 9,175, 9, 48, 75,102, 75, 47, 41, 47, + 37,165,151,196,105, 70,157, 90,124,221, 77,182,249,184,187,187, 39,173, 88,177,130, 90, 89, 89, 37,153,110,243,109,249,233, 87, + 55,158,229,100,125, 54,253,199,125,142, 53, 63,174, 93,158,153,226, 1,116,144,203,229,177,109,218,180,201,125,254,252,121,169, + 66, 11,239,200,140,246,127,225,220, 95, 83, 72, 55,214,108, 78, 55,212, 60, 22, 58,207,235,241,208,198,114,117,240,138, 78,148, +158,157, 70,175,255,248, 25,109,234, 45,122, 37,136, 54,250,157,160, 63,251,180,164,171,171,138,204,226,252,169, 90, 32,221,232, +119, 34,100,174,215,227, 79, 26, 56,106,118,111,219, 72,159, 63,127, 78, 15, 31,216, 69,155, 84, 41, 16, 89, 27,106,158,162, 63, +214,108, 99, 22,103, 49, 98,107,203,150, 45,244,249,243,231,244,215, 95,127, 53, 75,100,189,198,105, 34,180,102, 6, 89,101,124, +214, 88,162,238, 95, 79,164,233, 30, 32,212,182,175, 46,212, 55,243,226, 27,234,186, 50,108, 77, 71,208,246,190, 82, 53,221,224, +123,145,110,168,217,193,220,124,138, 68,162, 40,152,196,212, 41,186,136,197,226,228,146,132, 86, 89,215,189,177, 51,188,130,124, +196,241,127, 44,252,144,118,173,163, 72, 53, 71,100,149,197, 9,160,158,131,131, 67,202,214,173, 91,169,179,179,115,178, 57, 34, +235,159,184, 63,149, 74,229,142,156,156,156,224,147, 39, 79, 6, 7, 5, 5, 5,239,216,177, 35,248,242,229,203,193, 50,153,108, + 71, 73,161, 31,106, 22,105,255,139,114, 90, 91, 91, 7,103,103,103,211,147, 39, 79,210,160,160, 32,186, 99,199, 14,122,249,242, +101, 42,147,201,130,255, 85,207, 38,199,249,223, 21, 83,175, 98,104,189,182, 88, 44,180,222,212,133, 0, 64, 51, 50, 50,232,164, + 73,147, 52, 18,137, 68, 37, 20, 10,103, 2, 16,254, 87,110, 66, 7, 7,135,171,206,206,206,137,206,206,206,175,137, 61,211,116, + 7, 7,135, 59,239,243, 3, 8,192, 71, 40, 20, 70, 10, 4,130,167,166,233,142,254,221,154, 86,107, 62,100,142,115, 64,183,143, + 42,146, 79, 0, 66,161, 80, 56, 83, 34,145,168,166, 76,153,162,201,201,201,121,191,132, 22,165,160,171,171,138,140, 98,235,193, + 28,175,208,174,181,100,218, 77,147,219,211,166,149,139,136,172,173, 94, 98,139, 56, 11,196,214,221,217,158,161,109,124,172,244, +139,231, 76,162, 77,170, 72, 95, 23, 89,150,112, 22, 17, 91, 50,153, 44,123,222,188,121,102, 91,178,254,194,249,147,175, 39,221, +232,183,227,149,136, 42, 99,249,209,119, 51, 93,235,235,249,111,185,238,141,157,225,213,214, 71,252,200, 92, 75,150, 57,156, 0, +234,217,218,218, 62, 54,215,146,245, 79,148, 29, 64,251,209,163, 71, 7,191,124,249, 50,248,197,139, 23,193,151, 47, 95, 14,254, +248,227,143,131, 1,180, 47, 46,206,150,182, 71, 15,117, 61,134,153, 84, 6,103,191,209,163, 71,211,151, 47, 95,210, 23, 47, 94, +208,203,151, 47,211,143, 63,254,152, 2,232,199, 9, 24, 78,104,253,219, 23,254, 63,221,201, 42,145, 72,146,108,108,108, 28,173, +172,172,142,229,231,231,143,167,148,198,255,151, 58,153,147,147,147,155, 89,146,254, 62,130, 82,250, 20,128, 87,209,244,164, 71, +135,174, 1,184,246, 6,248,181, 0, 22, 19, 66,182,111,220,184,113,205,242,229,203, 63,150, 72, 36,201,239, 85, 37,142, 15,211, + 96, 77,181,219, 16,137,150,212,114,151,205,248,170, 19, 37,139, 79, 94,245, 90,218,195, 41,170, 89, 53,121, 56, 4,236,119, 32, +234,155, 24, 26,161,182,144,243, 38,164,186, 37,117, 43,201,102,124,219, 29,228,187, 19,219,188,150,125,108, 31,213,172,170, 85, + 20, 40,190,131, 88,117,205, 34,206,215,175,203, 21, 66,200, 71, 43, 86,172,216,174, 82,169, 70, 80, 74,207, 89, 76,162, 96, 18, +144,171,155, 7, 29,175, 22, 40, 68,165,156, 76, 5,134,247, 16, 73,248,215, 76, 38,126, 61,129, 70, 2, 8,120,195,207,210,221, +130,238,168,127,211,243,125,138, 16,130, 93,187,118, 13,244,243,243,171, 26, 18, 18,242, 66,165, 82,237,164,148,158, 50,245,101, + 34,132, 28,249,238,254,253,220,181, 33, 33, 87, 52, 44,123,165, 12,206, 61, 5,156, 95,250,249,249, 5,132,132,132, 60, 82,169, + 84, 43, 40,165,123, 56,215, 37, 14,255,118,252,227, 66, 43, 47, 47,207,153,171,118, 14,255, 80,131, 31, 15,160,199,123, 91, 64, + 19,177,213,192, 83, 58,254,224,104,169, 10,148,196, 64,192,174,178, 88,100, 21, 35,182, 26,121, 73,191,248,117,148, 84, 5,138, + 4, 80,124, 95, 17,145,101, 42,182, 0, 84, 41, 55, 65,175, 16, 45,128,112, 16, 18,129,249, 40,217,137,122, 62, 10, 63,187, 57, +188, 29,177, 5,224, 84, 25,251, 80, 0,103, 11, 22,115, 56,247, 0,224,132, 21, 7, 78,104,113,224,192,225, 31, 22, 91, 7,252, +111, 33,133, 55, 5, 12,170, 0,250, 72,228,234, 19, 48, 62, 66, 83, 65,206, 27, 72, 33, 19,193,131, 15, 68,250, 48,228,104, 18, + 48,186, 2,156,127,195,155, 28,175,124,167,138,199, 60,238,214,224,192,129,195, 63, 7, 66,200, 72,211,145,134,166,255, 57,161, +197,129,195,187,142, 87, 86,158,152,130,229,223,203,201,129, 3, 7, 14,255, 49,193, 5,188,154,147, 41,168,132, 15,198, 51, 22, + 16, 7,149,227,131,244, 12,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 45,206,178,184, 45,209, 31,255, 38,129, 85, 76, + 57, 54, 25,127,252,163,163, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228, 56,255, 43, 11, 3, 14, 28, 56,112,224,192, +129, 3, 7, 14, 21,177,104,213, 47, 88,187, 22, 76,193,227,106,220,246, 86,125,180,100, 14, 62,174,224, 51,117, 8, 75,253, 0, +128, 50, 36, 20,122,246,190, 42,229,105,133, 67, 62, 40,220,125,237, 40, 68,251, 9, 52,189,179, 99,159,164, 85,148,175,182,175, +178,135,179,131, 98, 96, 66,106,230,246,135,161,217,135, 44, 57,214,198,166,178, 82, 98,103,219, 75,173,213,213, 18, 9,133, 81, +218,140,172, 77,105,105, 97,217,220,173,201,129, 3, 7, 14, 28, 56,188, 23,168, 15,224, 14,128,206,148,210, 77, 5, 93,137,165, + 59,195, 87, 14, 8,188, 37,145, 72,189, 1,128,165, 20, 44, 5,114,179, 50,130,227,195,110,117, 0, 0, 71,239, 6, 39, 5, 18, +235, 6, 44,125,181,221,192, 2,122,109,126,120,102,196,245,134,230,228,200,202,201,247,147,160,246, 65, 61,186,116,233,236, 91, +187, 86,237,106, 0,240,224,225,131,176,163, 71,143, 61,177,114,242, 61,152,147,244,228,215,138,148,152, 66,242,245, 7, 31,212, +107,113,251,246,157,133, 0,198, 86,180, 6,237,237,173,198,159,250,223,148,150,109,123, 44,151, 3,176, 72,104, 73,236,108,123, +117,239,218,177,222,212, 9,163,153,207,166,124,235,125,235,202,249,165, 10,183, 90, 25,148,213,157,202, 77,236,123,169,180,137, +147, 57,112,224,192,129, 3, 7, 14,255,122, 28, 43, 16, 87,199,138,110, 40, 81,104, 73, 36, 82,239,235,231,143,218,253,122, 57, + 26, 0, 16, 84,223, 5,179,190, 89,211,158, 16,242, 4, 0,186,125, 54,223,103,225,204, 9,184,250, 40, 9,148, 82,212,171,110, +143,143,186,247, 54, 43, 55, 82, 23,255,134,125,251,244, 25, 48,101,202,151,221,158, 63,127, 30,177,123,247,238, 75, 0, 16,216, +178,101,245,111,191,253,182,207,114, 91, 59,177,212,197, 63, 54, 47, 33,228, 86,121, 74, 43,117,175,230,238, 95,163,206,192,189, + 63,175, 97, 90,119,232,217, 95,234, 94,109,113, 94,108, 88,172, 57,199, 58, 58, 58, 78, 20, 8, 4, 74, 0, 96,217, 63,245, 79, +213, 74, 60, 23, 0,208, 27, 88,133,157,187, 95, 54, 79, 40, 49,136,197,194,144,236,156,156,237,153, 49, 33, 63,149,198,169,214, +233, 2,190, 24, 51,140,185,251, 34, 21,222, 1,129,188, 85,139,103,131, 53,232,108, 39,205,252,166,215,237, 27,123, 1,204,187, +192,221,163, 28, 56,112,224,192,129,195,187,137,130,184,141,155, 76,254,111, 42, 83,104, 1,128,149,148,143, 39, 47, 19, 0, 0, + 54, 82, 96,252,168, 33, 72, 77, 73,246,209,232, 89,124, 58,100, 16,238,132,198,227, 73,120, 50, 40,165,240,241,144,153,157, 33, + 30,216, 15, 62, 29,254,105,171,147,167, 78,221,252,106,206, 87,191, 16,242, 42, 26,248,198, 77,155,155,206,157, 55,119,196,160, + 33,131,218, 29, 56,112,224, 17,138,204,140,109, 46,248, 68,177,102,217,146, 69,162,152,148,252,252,137, 83,102,176, 95, 78,158, +184, 10, 64, 79,115,142, 21, 8, 4,202,152,152, 24, 43,134,121,221,125,237,187, 69, 51, 46,182,235,177,252, 89, 68, 84,198,221, +147,135, 15, 55,244,247,247, 71, 76,108, 66,243,165, 63,108,168,235, 90,173,225,176,236,172,188, 30,185,201, 33,197, 70,161, 22, + 11, 4,143, 22, 44,253,177, 30,107, 83,157,153, 53,162, 19, 2,170,185, 33, 54, 41, 3, 45, 59,116,227, 7,223,186,213, 30, 0, + 39,180, 56,112,224,192,129, 3,135,119, 20,165,141, 58,100, 0,224,216,177, 99,197, 6,254, 51, 24, 40,158,132,199,227, 73,120, + 60,110,134, 38, 67, 75, 5, 88,181,116, 1, 86, 44,158,135,180, 60, 6,191, 94,141,198,211,240, 4, 60, 13, 79, 64, 74,122, 78, +113, 10,239,181, 33,154, 43,150,200,234,175, 90,165, 92,214,190,165,188,181,157,173,173,237,179, 71,191,228,206,157,156, 88,115, +193, 23,209, 66,129, 70, 28, 35,183,146, 55,219,191,127,159,191,179,163,147,220,202, 74, 49, 77,238, 81,111,139,141, 77, 93,101, +105,156, 69, 33,115,174,217,173, 91,231,142, 31,186,184, 56,179,163, 87, 5,135,214,170,233,167,171, 81,189, 70,115,153,179, 79, +183, 82,148,104, 33, 39,203,178, 96, 24, 6,137,137,137,136,139,139,195,203,151, 47,241,244,233, 83, 68, 71, 71, 36,178,148, 10, + 12, 96, 25, 87, 87, 15,240,249, 34,120, 87,246,194,143,171, 22,203,190,153, 63,171,145, 68, 46, 58, 68, 8, 33,197,113,230,167, +165, 31, 56,254,251,169,216, 19,187,127, 52, 0, 64, 82,122, 14,206,222,122,142, 59, 33,209,150, 42,230, 55, 62,228,149,227,228, + 56, 57, 78,142,147,227,228, 56,255, 13,156, 37,105,145,119, 1,148,210, 77, 69, 23,227,182, 82, 71, 29,134, 69,167,225,201,203, + 4, 52,240,115, 71,181,202,174,184,249, 52, 29, 59,207, 70, 99,203,201, 72,156,189,151, 12,150,175, 64, 66, 22,240, 44, 34, 17, +207, 34, 83, 74,139,211, 12, 0,224,137, 5,125,191,248, 34,115, 74,109,255,172, 38,231, 79,140,135,187,227, 51,255,233,211, 51, +198,243,196,130,190,182,149, 20,187,103, 76,153, 52, 80, 33,147,137, 52,106, 13,170, 86,241,146, 76, 24, 55,126, 24,177, 21,239, + 54,183,160,214, 30,254,182, 98,169,244,167,111,230, 79, 19,127,255,235,179,168, 92, 13,114, 15, 94, 75,124,241,229,140,185,105, +124,129,228, 71,107, 15,127, 91,115,185,116, 58, 29,212,106, 53, 52, 26, 13,180, 90, 45, 98,163, 31,119,251,227,215,169, 29,170, + 84,178,235, 32,150, 72, 64, 1,100,229,233,241, 50, 94,133, 54,109,219,241, 26,212,175, 31, 96,229, 90,115,120,113, 92, 25, 25, + 17,153, 44,229, 41,142,254,182,139,183,239,244, 93,252,114,244, 22, 14,157,187,139,155, 23, 78,232, 41,171, 43,156,166, 66,225, + 86,195, 71,225, 86, 39, 82,225, 94, 55,177,112,241,168,125,155,251, 86,224,192,129, 3, 7, 14, 28,254,189, 40, 24,105, 56,178, +232,136, 67,160,148,174,195,252,252,188,240,158,125, 7,193,213,201,197,170,123,235,161,194,224,176, 12, 36,199, 71,226,249,211, +135, 80,229,235, 32,180,173, 2, 72, 92, 80,217,219, 11,247,159, 28,210,174, 94,118, 44,135,213,171,195, 75,226,235,222,221,205, +195,213, 81,206, 44, 91,234,121,253,233,147,244, 6,187,230,108,197,128, 1, 86, 14,203,150,122, 94,143,120, 33,103,100, 18,218, +108,216,144,254,132, 33, 20,211,167, 79, 65,247, 46, 29,241,233,176,193,100,251,246,109, 77,204, 45, 40, 11,193,218,153,179, 23, +136, 18, 51,244,154,155, 79,115,212, 50,185, 84,122,229, 89, 78,110,128,183,167,180, 83,143,161,113,199,246,255,244, 61,128, 33, +230,112, 25, 5,150, 78,167,131, 86,171, 5, 0, 3, 0, 48,204,171,117,106,182, 6, 73, 25,106, 36,102,168,161, 55,176,232,209, +119,136,244,214,237,123, 67, 0,148,224,175,197,178, 58,189, 14, 7, 79,223, 65,236,173, 3, 44, 97,120,153, 70,103,120,163,200, +114,113,241,188,216,165,199, 96, 71,145,228, 85, 55,108,118,174, 26,219, 55, 44,229,238, 96, 14, 28, 56,112,224,192,225, 95,140, +162,211,239, 16, 66, 80,230, 20, 60, 17,143, 46, 53, 4, 0,223,134, 29, 82,173, 36,124, 59, 62, 67,144, 24, 19,134,237,203, 39, +130,101, 41, 58,141, 88, 6,133,183, 11,164, 66, 30,212, 57,169, 57,169,207,207,219,151,174,246,116,237,214,109,140,245,254,124, + 76, 85,235, 93,187,114, 4, 0,176,107, 87,142, 96,204,232, 74,214,235, 55,134,123, 55,110,209, 0,212, 96, 64,151,238, 61,209, +183, 95, 95, 68, 36,168,240,191,139, 81,200,205,211,152, 53,191,154,204,177,102, 93, 39, 55,247,142, 95, 12,237, 40,231,243, 8, +169,225,165,228, 69, 39,235,244, 60,158,192,112,228, 86,102, 92,143, 30,253, 28,206, 30,223,247,161,204,177,102, 93, 85,242,227, +123,101,241,169,213,106, 24, 12, 6,168,213,106,232,116, 58,216, 57, 84, 57,222,174,231,242,152,248,132,236, 99, 9,233,249,141, +115,117,122, 36,102,168,145,148,161, 70, 70,174, 22, 46, 10, 91,232,117,154,218,165, 92,132, 95, 62,238, 57,104, 48, 0,134, 48, +250,173,217,113,143,159, 26,183, 25, 69, 86,199,238, 3, 28, 47, 6,135,225,249,237, 19,233,148,213,235, 94, 85, 28,203, 77,129, +194,129, 3, 7, 14, 28, 56,252,203, 97,226,167,117,172,192, 57, 30,175, 9, 45, 99,223,104,231,206,157, 73,209,131, 99, 19,211, + 96,111,197,135,163,155, 55, 6, 78, 92,129, 95,190,159, 12,131, 65, 7, 74, 1,189,193,188,200, 4,148, 10, 78,143, 29,227,237, + 87,217,155,231, 56,112,128, 44,111,231, 46,149,116,224, 0, 89, 94,173,218,246,153, 99,199,120,135,103,231,123, 54,215, 27, 12, +184,242, 40, 9, 15,195, 51,241, 48, 34, 11, 86, 82,243,195,124,241, 68,194, 49, 75,151, 44, 22,242,121,132, 60,138,204,201,137, + 73,213,231,240, 4, 2,173, 76, 42,162, 26,202, 87, 71,164,208,212,182, 31, 15,203, 59,178,227,135,225, 0,198,149,196, 99, 28, +105,104,180,100, 25,215,148, 82, 74, 0,150, 37, 6, 67, 76, 74, 62,114,180, 58, 36,166,255, 41,180,136,190,228,158, 83,133, 91, + 13, 31,165,181,221,239, 60, 30, 79, 76, 41,160,211,234,251, 40,220,106,116,200,142,123,246,212, 84,100, 93,127, 20,135,176,187, +103, 18, 13, 90,213,160,220,196,208, 63,184,219,150, 3, 7, 14, 28, 56,252,151, 80,154, 22,249,183,195,104,193, 42,214,162, 85, + 90,129, 40, 5,158, 69,166,160,178,135, 35, 60, 42, 87,195,211,199,247,255,220, 6, 64,111, 48,207,119,237,208,161,184,152,149, + 43,149,236,228,201,153, 77,151, 46,245,188, 54,102,116, 37,101,173,218,246,153,211,166, 69, 53, 93,185, 82,121,237,244,117,129, +129, 22,196,235, 50,198,230, 42, 8,243,111, 38,152, 70,117,253,171,240, 22,236,122, 22,245,199,131,236, 36,161, 80,168,115,177, +149, 16,133,149,136,199, 99, 4, 34,181,142, 81,251, 4,212,231, 29, 97, 94, 69,111, 45, 75,104, 21,237, 58, 76, 77, 14,235,118, +234,127, 83,106,181,254,120,153, 93,108,114, 30, 50, 53,188,194,174, 67, 30, 67,240,224,113, 36,192, 19, 62, 44,142,211, 90, 97, +119,114,247,206, 95, 60, 87, 46, 93, 4,173,222,128,177,147,191,194,176, 33,131, 78, 42,220,106,116,240,244,246, 13,190,116,100, +171,172,195,232, 31, 17,249,228,118,130, 94,157,181,135, 19, 89, 28, 56,112,224,192,225,191,134,119, 81, 92, 25, 81,100,212, 97, +241, 22,173,210,224,229,225,140, 27, 15,195, 81,219,175, 10,148,214, 10,132,134,197,128,199, 8,192, 16, 64,167, 55, 95, 12, 81, +173,110,239,202,149, 74, 68,134,203,153,245, 63,134,123,143, 29,227, 29,190,114,165,242, 26,213,234,246, 2, 24, 68,233,171,185, + 23,141, 1, 82, 13, 22,132,241,164,172,174,146,179,157,140,119,251, 69,110, 42,195,240,212,246, 74, 9,107,175, 20, 51,246, 10, +145, 64, 40,224,177,122,202,104, 61,156,188,243, 41,203,214, 53,135,207,180,235,208, 96, 48,128, 16,198, 80, 32,196,228,209,169, +121,200,204,231, 33, 49, 67,141,244,108, 45,106,184,203,113,230,236, 1,149, 65,151,183,171, 56, 46,158, 64,168,172,230,237,129, + 89, 95,175, 68,158,218,128,103,177, 57, 16,138,197, 46,206, 46, 1,247, 6,125, 62, 67, 60, 97, 83, 24,134,127,104,143,201,151, +194, 98, 85,137,146, 25,220,227,198,129, 3, 7, 14, 28, 56,188, 59, 48,245,209, 42, 10,179,132,150,149, 76, 2,202,147,224, 82, +112, 24,124,253,235, 96,219,225,155,168, 94,187, 9,226,179,245,160, 96,202, 28,109,104,196,151, 51, 84,119, 0,220,233,222,221, +205,227,147, 79,220,219, 81, 42, 56,189,126, 67,102, 12, 0,252,184,167, 21, 40, 0,150,165,160, 20,160,236, 43,193,101,190,156, +228, 71,134,199,103, 85,246,118,145, 35, 36, 70,171,150,139,133,140,173, 92,196,115, 84,138,132, 66, 62, 31, 6, 74,212,241,241, + 97,106, 2, 68,152, 67, 87,180,235, 80,102,229,122,188,237,199,203,146, 35,162, 50,111,215, 72, 83,213,205,212,138, 64, 41, 80, +195, 93,142,135,215,143, 25, 18, 99,159, 63,203, 75,124,178,161, 56, 46,150, 5, 79,171,103,113,239, 69, 38, 50,114,117,200,200, +209,162,121,155,174,194,230, 65,221,112,233, 97, 10, 88,189, 14, 75, 55, 31,203, 54, 80, 93, 95, 74, 67,116,220, 45,203,129, 3, + 7, 14, 28, 56,188, 59, 40, 24,105,216, 25,175, 34,195,119, 54, 21, 95,102, 77, 42,109, 96, 41, 28,236,237, 32,145, 91, 35, 60, + 81,139,108,226,132,116, 21,133,193,240,202,162,197,150,124,226,160,226,210, 15, 29,138,139,249,237,183,228, 45,135, 14,197,153, + 56,122,255,105,201, 42, 92,179,212,108, 78, 66, 13,103, 14,159, 56,159,217,173,177,163, 45,195,227,229, 9, 5,140,154, 47,228, +105,133,124, 70, 39,228, 51, 26,103,107, 1,239,252,145, 61, 34, 74,112,190, 44,206,252,252,124, 4, 5, 5,161, 83,167, 78,232, +222,189, 59,122,247,238, 13, 31,159,154, 78, 12,143,104, 40, 97, 89, 71, 81, 54,170, 57, 18,240,243,163,241,199,158,239, 84, 15, +175,252,118,207,160,206,239, 74, 77,250, 58, 95,227,164,148, 77,203, 84, 35, 95,107, 64,122,142, 22,233,185, 90,232, 29,155,226, +183,171,113,200,211, 24, 16, 25,124, 32, 47, 57, 33,102, 98,126,226,179,240, 50, 46,100,208,223,112,115,112,156, 28, 39,199,201, +113,114,156, 28,231, 91,231,124,199,209,185, 64, 88,117, 46, 26, 71,203, 12,139, 22, 69, 85, 87, 57,170,187,203,145,175,117, 66, +190,198,128,220,124, 3,178, 84, 90,100,169,116, 8, 79, 80,225,225,225,138,231,240,149, 21, 11, 32, 5,191, 65, 94, 9, 60,115, +109, 90, 34,173,230,235, 21, 75,191,237,179,167,126, 61,205,132,206,174,149,238,135,107,226, 8, 97,242, 24, 30, 95,103,167,224, + 11, 66, 67,239, 39, 95,187,120,188,165, 68,111, 24, 92, 26,143, 94,175,207,116,119,119, 7,240,250, 20, 60, 53,171, 73,187, 95, + 57, 54,189, 74,171,110, 75, 29,191, 95, 52, 69,197,240,132, 44,225, 11, 31, 26,116,121,187,243, 18,159,252, 72, 75,113, 40, 99, +132,146,199, 55,238,134, 52,177,177,171,132,231,177,185,200,205,215, 67,171,103, 97,107, 37, 68,204,131,147,218,240,208,219,251, +178, 99,239,109,227,238, 83, 14, 28, 56,112,224,192,225,221,132,209, 79,203,184, 46, 51,188,131,137,117, 39,188, 69, 80, 87,176, + 44,133,129, 2,172,161,192,242,196,254,105,125, 50,232,242,195, 43,154, 65,150, 53,220, 92,187,105, 75,167,250,141, 90,241,252, + 61,173,144,149,154,128,235, 87,206,233,193,210,107,230, 28,159,146,242, 52, 71,230, 82,163,103,159, 94,159,236, 31,242,233,232, +140,150,109,218,200,157,156, 92,212, 49,177, 49,170,159,119,236,212,157, 60,126,168, 37, 11,125,191,148,148,103, 57,165,241,100, +100,100,252, 80, 92,122,219, 22,149,154, 3,168,194,227, 19,141, 42,233,169,220,146,178,165,196, 70,247,248,246,235,249, 17, 3, + 70, 76, 18, 85,117,175,134,164, 76, 30,194, 99, 18, 16,122,241,144, 58,246,233,173, 95,179, 98,238, 12,231,110, 81, 14, 28, 56, +112,224,192,225,221, 68,133,124,180,162, 66, 94,197,211,250,187,145,157,144, 52,104,219,182, 95,190,249,101,199,158,230,249, 26, +141, 59,133, 48,218,160,215, 92,200, 49, 96,174,185, 28,170,132,103,183, 29, 28,124,106,253,188,121,237,236,159,183,172,111, 5, +214,224, 71,128, 8, 74,112, 94,162, 51, 12, 41, 75,100,149, 46,228,178, 55,182,235,185, 60, 47, 53, 53,231, 23, 75,143, 85,165, +132, 38, 88, 57, 87,173,180,113,213,215,203, 24,134,215,222, 96, 96, 5,172, 65,247,220,160,205,255, 46, 47,249,201, 97,106,217, +240, 74, 14, 28, 56,112,224,192,129,195,191, 8,132,144,145, 69,131,150,154,109,209,250,167,144,150, 22,150, 13, 96, 66, 69,121, + 82, 82,158,230, 0,120,227, 35,247, 30, 60,205,252, 31,128,255,149,247,248,156,196, 23,201, 48, 51, 42, 61, 7, 14, 28, 56,112, +224,192,225,221, 23, 92,128,153,206,240, 28, 56,112,224,192,129, 3, 7, 14, 28, 74, 23, 89,166,235,194,116, 0,197,142, 28,176, +100,102,238,242,140, 62, 40,139,159,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,247,143,179, 44,110, 75,244,199, 59, 33,192, +254, 78,247, 32, 66, 72,208,155,174, 48,142,147,227,228, 56, 57, 78,142,147,227,228, 56,223, 63,206,119, 90, 76, 21,177, 98, 21, + 8,198,127,151,143, 22, 7, 14, 28, 56,112,224,240, 79,193,193,193,199, 10, 40,244,235, 45, 19,114, 71,127,103, 0,200, 77, 14, + 73,228,106,143, 67, 73,162,170, 56, 31,173,114, 9, 45, 66,136,128,225,139,190,144, 72,173,134, 18, 6,214, 57, 25, 41,238,255, + 97, 21, 75,124, 42,203,199, 85,170,228,216, 38, 38, 54,113,123,232, 11,213,161,183,193,105,229, 92,213,145,136,108,127, 37,172, +250,219,172,152,135, 39,222,112, 25,197,254,254,254,245, 0, 32, 36, 36,228, 46,165, 84, 93, 81, 78,185,179,111,127, 91,107,155, + 81, 90, 86, 99, 80,229,170,126,204, 73,120,122,224, 77,230, 89,225, 86,195, 30,124,197, 6, 24,244,109, 64,193, 3,143,127,143, +168,243, 63,203, 74, 14,121, 81,218,113,158,221, 23,251, 13,239,211,121,206,150,125,199,190,137, 58, 52, 51,180,232,118,187,143, +214, 40,198, 15,110, 63,125,221,158, 67, 75, 82, 14, 79,203,225,154, 23,203,225,217, 98,128,141,158,239,194,139, 59,191, 60,213, +146,227, 60,124,155, 62, 18, 8, 4,142, 90,173, 54, 41,246,233,245, 90,230, 28, 83,201,175,217, 29, 30,143,113, 51,232,217,152, +232, 39, 87, 63,224,106,191,108, 72,157,170, 54,133, 94, 63,139, 2, 4,132,191, 34, 63,245,197,185,138,240,185,185,185, 73,149, + 74,101, 75,107,107,235, 74, 50,153, 76,146,158,158,158,151,158,158, 30, 21, 25, 25,121,150, 82,170,127, 27,101,148, 59,251,206, + 36, 2, 50,175,224,247,130,220,196, 39,139, 75,111, 95,253,190, 33, 12,157, 89,240,123,113, 78, 98,232,156,127,195,181,146,184, +248,122,241, 40, 38,240, 24,126, 51, 61,171, 91,164, 74,124,122,196,146,227,237,236,236,218,243,249,124,169,241,191, 94,175,207, + 75, 75, 75, 59,197, 61, 5,229,122, 79,142, 44,250,187,220, 22, 45, 66, 8, 79, 32,150, 93, 30,240,233,216, 90, 75,230,207,144, +172,218,242, 27, 36, 86,182, 33,249, 57,233,254,255,198,194, 59, 86,109,124,155,199,240, 60, 76,211, 12,172, 33, 38,249,197,141, + 55,210,232,250, 86,150, 14,159, 61,109,208,228,254,125,130,188,130,186, 76, 36, 0,138, 21, 69, 10,207,134, 87, 9, 97,170, 48, + 4, 96, 24, 2,134, 0, 0,141, 75,121,113,163,126,121, 57,141, 80, 58, 85,171, 34,178,114,188,216,162,251, 88,151,224, 51, 59, +183,201, 29,253,219,229, 38,135,220,127, 3, 55,142, 99,181,106,213, 26,250,248,248,216,143, 31, 63, 94, 8, 0,223,127,255,125, +245,234,213,171,167,134,133,133,221,162,148, 38,151,171,145,115,242, 27,244,195,242,133,191,124,244, 81, 39,196,165,228, 98,233, +202,117,173,173, 92,124,122,191, 41,177,101,107, 91,197,154,111,109,251, 96,226,180,133, 78, 29, 91, 55,228,229,228,235,241,251, +197,187,129, 59,215, 45,188,105,237,232,223,168, 52,177,197,170, 50,231, 56, 91,209,142,172, 42, 19, 0,250, 23,221,238,110,165, + 11,114,148, 26, 58,186,138,249,119, 1, 28, 44, 51, 47,222, 45, 78, 10,196, 98, 47,134, 97, 96,188,246, 60,242,234,250,235,180, +121,145, 49,143, 47,118,248, 55, 60, 39,214, 94,141, 19,192,227,219, 51,228,207,252,145,130,251,148, 80,154, 21,255,244,146,253, + 27,184,159,148,181,170,219, 4,116,110,222,226,231, 11, 47,211,228,158,173, 38, 29, 35,148, 89, 31,121,113,197, 61,179, 94, 42, + 18,137,237,145, 35, 71, 28, 59,118,236,168,116,174,245,241, 5,115,142,177, 18, 73,252,143, 30, 61, 44,236,216,177,131, 5,247, +167,111, 59, 48,204, 14, 2, 8, 88,150,126,207, 99,233,190,156,212,167, 97,150,134, 97,145, 57,251, 13,103, 64,205,110,103, 88, +144,219,170,196,208, 45,229,173, 95,129, 68,217, 86, 32, 20,126, 81,197,167,118,253,216,136,231,183,115,115,178, 87,234,242, 51, + 46, 88, 76,164,211, 79, 61,115, 41,248, 35,190, 64, 64, 58,182,109,204, 3, 80, 33,161,229,236,236,252,241,154, 53,107,170, 54, +109,218,212,248, 50,183,222,191,127,191,203,215, 95,127, 45, 55,231, 25, 42,225, 94,114,119,116,116,244, 20,137, 68,238, 0,160, +209,104, 98,147,147,147,163, 40,165,177,101,222, 19, 46,213, 28, 8,248, 11, 47, 93,188,200, 7,128,192,192,150,223,120, 5,142, +183,229, 9,173,242,138,173, 14, 77,182, 28,192,164,235, 55,174, 17, 0,104,210,184,233, 12,185,163,255,218,183,105,217,146, 58, +251, 53,102,128,201,205, 91,182,235,209,183,223, 32, 38,160,134, 39,218,183,251,112, 58, 0,139,132, 22,159,207,151,222,188,121, +179, 26,195, 48, 60,189, 94,159,223,164, 73,147,168,138,228,203,221,183,217, 85, 2,166,146, 86,175,217,156,252,226,246, 55,148, + 82,182,168,126, 80, 86,170, 63, 27, 60,254, 8,150,101,163,179, 34,111, 53,123,223, 44, 90,197,214,179,165,100, 12, 95,244, 69, +255, 97,159,215,154,244,229, 44,201,196, 85,103,113,108,221,140,148,127,171,200, 2, 0, 30,195,243, 56,121,234,164,147, 76,196, + 3, 0,228,228,235,241, 81,199,142,101, 30,103,227,221,248, 60, 67,136,175,113, 42,113,131, 94, 43,225, 11, 68,249, 4, 0,200, +171, 81, 4, 14,110,149,207,186,186,218,201,250,247, 9,242,218,177,231,116, 76, 84, 76,106,137,141, 26,195,240, 60, 14, 29, 62, +226,228,110, 47, 1,159, 71,144,147,167, 71,199, 78, 93, 13,197,237,235,234,106,215,185,127,159, 32,175, 93,123,207, 68,197,199, +167, 29, 43,181, 49,119,245,105, 32, 87, 58,255,222, 99,212,215,246,249,140, 29,230, 46,250,193,225,226,137, 93, 23, 90,117, 30, +196, 70, 70, 70,231, 83, 66, 66,210,211,226,191,200,137,127,254,196, 92, 33,109,101,101, 85,213,202,202,170,238, 71, 31,125, 36, +153, 50,101,138,160,117,235,214,133,219, 71,142, 28, 41, 60,127,254,188,235,242,229,203, 59,185,185,185,229,231,228,228,220,203, +201,201,121, 65, 41, 53,152,123, 77, 92, 92, 28,199,245,252,164, 43, 62,236, 49, 22, 6,150, 96,228,231,147,112,242,196,193,209, + 0,222,136,208,210,201,172,191, 30, 49,106,138, 99,147,134,245,120, 11,119, 61,129, 84,196, 71,135, 15,124,201,176,241,115,108, +182,172, 94,248, 19,128, 86,197, 89,178, 88, 85,230,156, 90, 14,154,126,221,154, 86,193,225,221,154,126, 30, 65,211,193,200,148, +133,150,173,106, 31, 77, 80,216, 74,165,107,220,108,120, 78, 98, 67,242,154,106, 31, 77, 56, 19,118, 98,117,118,169, 47, 63,177, +216,107,247,174, 93, 53,108, 21, 66,240, 25, 2, 30,143,128,207, 99,144,175, 49,160,119,159,126,111,234, 75,138, 39,117,170,209, +137, 1,134,189,122, 97, 99,107, 94,210,179,227,150, 92, 19,194, 19,218, 31, 61,252, 43,223, 73, 41, 6,143, 71,192, 99, 0, 30, + 67, 16,145,152,135,225,195,135, 41, 43, 42,216, 63,106,238,212,240,252,218, 86, 29,154,212,178,171,179,247, 26, 81, 54,249,168, +175,125, 74,190,108,232,158, 67,231,250,121,182,156,124,131, 82,118, 89,244,165, 85,165,126, 73,171,213,234,196, 14, 29, 63,178, + 38,124,185,236,204,111,219, 90,242, 25, 2,157,129, 66,111,160, 48, 20,204,141,250,234,121, 37, 96, 24, 2,202, 82,140, 24, 49, + 28, 29, 58,126,164, 98,245,108,140,249,141, 28,179,227,247, 51, 87, 28,213, 58, 22,203,215,108, 89,152,155,153,188,240,101,168, +125,132,204,217,103,146, 42,241,169,217,243, 96, 48,160, 31, 68,191,120, 56,106,215,209,235,168,229, 95, 19, 6,246, 85, 62,125, + 61,228,216,117,236, 58,252,124,253, 94,229,155,165,240,169,100,133,134, 31, 52, 4,128,114, 9, 45,129,196,122,110,171,206,131, + 23,116,233,253, 41,156, 28, 29,193, 80, 93,151, 51,199,118,117, 17, 72,149, 83,117,121,153,203, 45,123, 99, 24, 10,223, 11,148, +101, 43,236, 94,226,230,230,230,216,176,225,159,225, 24,245,122, 61,188,189,189, 17, 27, 27,235, 91,142,123, 73,230,234,234,218, +121,227,198,141, 78,157, 58,117, 18,184,184,184, 0, 0, 18, 18, 18,220,127,255,253,247,250,110,110,110, 73,241,241,241,199, 40, +165,170,146, 56, 12, 58, 70,200,240,193,147, 72,100,175,202, 8,194, 76, 25, 55,184,142,179,171, 91,177,150,250,228,228, 4,209, +180,177,231, 8,159, 47, 44,216, 31, 12,165, 44, 41,197, 74, 20, 36, 16, 8,164,197,109,211,242,172,155, 80,129,242, 51,134,199, +188,186, 89,245,186,228,180,200,224,154, 22, 88,226, 2, 4, 34,225,143, 3,134,140,106,214,171, 71,119,184, 58, 42,113,230,242, +125,140, 30, 55, 89,167,215,234, 86,150,235, 29,201,227,241,147,146,146, 34,108,109,109, 93, 42,254,190, 37, 85, 78,159, 60,225, +116,230,143,179, 51, 86,172, 90, 61,198,205, 39, 80,199, 82, 90, 56,143,177,103,173, 15, 5,237,186,244,177,118,170,214, 68,178, +122,222,103,130,247,205,162, 85,146,216,178,248, 33, 18, 73, 21,125,190,154, 54, 94,242,245,206,235, 56,182,110,116, 74,110,102, +178, 99,225,151,130,210,246, 78, 78,102,122,253,242,100, 82,225,228,219,148,240,248,163, 8,143, 39, 39, 12, 17,177, 6, 54, 90, +175,209,124,163, 74,121, 26, 95,209, 10, 96, 89,138,255, 93, 77,178,172,210, 40,170,239,216,251,171,147,179,141, 24,249, 90, 3, +250,246, 31,132, 95,126,249, 69,225,168, 20, 33, 95,163,199,178, 21, 43,178,115, 34,142, 57, 69, 68,167,199, 6,117,157,124,234, + 69,120,210,195,168,248,252,125, 37, 95, 4, 6, 78, 74, 49, 22,237,121, 10,107,169, 0,182, 10, 33, 24,134,152, 94,164,194,238, +194,184,248,244, 76, 19,206,157, 37, 62,116,174,181, 59, 40,109,221,118,127, 50,106,145,205,179, 36, 62, 40,180, 8,179,150,160, +207,208, 9,214, 85, 93,164,144, 75,120, 54, 47, 35, 99, 93,167, 76,157,122, 89,233, 84,173, 81,102, 82,216,203,178,202, 93,185, +114,229, 30, 93,186,116,145,125,249,229,151,130, 74,149, 42, 97,235,174,253, 94,129, 29,122,119,141,139, 79,172, 68, 41,133,179, +147, 83,244,136, 97,189,143, 28, 63,126, 60, 50, 58, 58, 90,176,116,233,210,198,191,254,250,171,191, 37, 95,166, 6, 74,145,175, + 54,192, 80,240,130, 76,206, 84, 91,122, 67, 19,119,119,119,113,108,108,172,218,104,101, 32,255,103,239,188,195,162, 58,218, 54, +126,207,118,150, 93, 88,122, 83, 64, 69, 17, 44,168,216,123, 47, 17,123,111,209, 88, 99,137,137,198, 24, 91, 44,137, 26,163,177, +199, 88, 98,139,189,198,216,123, 79,172,160, 40, 22, 80,138,136,244,178,189,151,249,254, 0,124,137,161, 44,106,190,247, 77, 50, +191,235, 58, 23,236,238,217,123,231,156, 51,231,156,251, 60,243,204, 12, 33,175,119,166,180, 66,189,206,237, 91, 55,230,109, 60, +149, 8,181,222, 10,137, 3, 31,137, 25, 90, 52,168, 23, 70,126,178, 90,234, 22,167, 57,106, 64,196, 28,111, 41,237,210,163,105, + 21,120,185, 58, 98,235, 15,139,112,244, 70, 66,151, 12, 53,129, 71,143,165,227,124, 69,188,142,158,142,130,181,109, 26, 84,245, +105, 87, 63, 16,119, 26, 84,245,185, 26,249, 52, 54,108,192,138, 79, 94,169,249,231,115, 79,125,162, 42,254,194,195,129,155,147, + 0, 91,206,188,128,163, 3, 15, 18, 7, 30, 36,162,252,191, 69,143,255, 91, 61,213,250,213,244,231,218,172,163,156,253,106,142, + 26, 52,160,191,223,144, 65,253, 41,184, 28, 28, 56,116,172,231,174, 93, 59,211,164, 62, 33,155,173, 28,238, 22, 93,234,163,151, +101,238, 83, 14,224, 37, 19,226,139,205, 15,225, 44,230,195,201,145, 15,103, 71, 62,218,213,241, 4,151,243,214, 23, 30,215,143, +123, 6,117,141,222,209,161,109, 72,128, 52,248,254,115,197,163, 81, 11,239,174,186, 44,111,251,217, 15, 43,107,186,171,229, 70, +222,220,105, 99,120, 41,169,169,109, 15, 28,187,210,206,175,209,168,167, 22,147,102, 86,230,253,253,197, 70,112, 95, 62,249, 61, +188, 98,211,254, 14, 38,181,249,193,253,167, 41, 85,243, 12, 34,196, 36, 41, 33,113,224, 65, 90,184,111, 29,120,144, 56,240, 33, +117,224, 33, 53, 37, 17,185, 26,238,245, 87,238,156,182,244,242,239,229,106,162,210,155,172,184,151,160, 70,165,144,122,240,245, +245,131,177,235,208, 74,183, 46, 30,250, 85,226, 91,227, 91, 77,218,227, 89,246,234,236, 62,126, 19, 51,166,140,139, 36, 64, 84, +193, 77, 58,124,238,146,117,245,191,158, 49,241, 15,239, 77, 91,176,166,254,219, 71,178,156,231,180,235, 61, 97, 65,203,142,189, +161,202,205,192,239,103,247,163,115,183,190, 24, 58,242, 83,184,184,120, 44,227, 59,200,238,155,245,138,139,127,186,230,250,214, +104, 17, 86,187,198,174, 10,126,126,254, 54, 91,254, 44, 31,148, 2, 45, 90,183,195,244,207,198,192, 70, 41,234,134, 55,106,215, +117,208, 39,148, 22,204, 6,146,157,147,173,121,250,228, 81, 7, 93,198,147, 91,118,239, 75,189,222,156,149,149,133,123,247,238, + 33, 54, 54, 22, 49, 49, 49,200,201,201,129, 76, 38, 83,151,179, 62, 57,215,169, 83,103,200,197,139, 23, 29, 92, 93, 93, 95,191, +111, 52, 26,225,228,228,132, 33, 67,134,240, 59,117,234, 84, 33, 34, 34, 98, 56, 33,100, 55,165, 84, 89,156,142, 46, 39, 46,213, +217, 39,116, 67,235, 54,173,199, 3,128,216,217, 55, 97,237,182, 99, 49,165,158,107, 50,191,192,102,205,154, 87, 5,165, 32,160, +171, 53,217, 79,211, 75,137, 18, 73,110,222,188, 25,196,229,114,121,255,185, 7,217,240,227,214,125,161,231,174, 61,232,179,100, +217,247, 14,206, 18, 17,178, 20, 70,140, 30,218,219,238,123,176,163, 79,104,215,230,205, 91,255,250,245,130,175,120, 82,137, 4, +103,111,197,227,147,207,190,208,167, 37, 61,252,158,218,248,235, 52,153, 79, 51,223,241, 86,249, 94,122,198, 5, 87,148,194,169, + 71,103,135,143, 63,236,225, 96, 52, 91, 33,215,152, 97, 48, 89, 97,181, 81, 40, 52,102, 60, 74, 86,193,195, 89,248, 54,210, 13, + 1,120, 2,200, 2,112,231,141,215, 40,248, 31,197,188,206,206, 15,143,192, 29,128, 17, 64,209, 31, 47,124, 93,210,251,133,223, +127, 4,160, 70,129,166, 21,192,109, 0,121,197,153,173,226,162, 92,188, 19, 39, 78,208,136,136,136,215, 87,252, 55, 95,191,137, + 72,192,247,147,200, 60, 65,233, 99, 20,185,183,193,219,183, 98,206,250, 13, 63,185,201, 92,221, 95, 40,242,114, 2, 11,126,228, +188, 61, 55, 11, 30,225,174,104,221,166, 85,167,241, 19, 38, 32, 36,168,162,192,106,181,210,135,177, 9,230,237, 91,182,142,144, +249,135,173, 82,166, 60,156, 83, 24,130, 44,111, 47, 7,171,205,154,242,102, 4,203,106,179,166,188,177, 51,206,255,121,135, 1, + 46, 82, 33, 54,156, 74, 4,165, 0, 1,133, 76,194,199,222,203, 41, 72,136, 60,172,236, 86, 87,169, 25,178,100,126,187,182, 93, + 39, 95,124,244, 92,191, 63, 51, 83,127,134, 82,154, 94,146, 38,135, 0, 60, 46,129,179, 35, 31, 50, 71, 1, 92, 36, 2,144, 34, + 55,176,162,205,133,109,186, 78, 62,119,241,183, 23,179, 0,100, 21,205,135, 42,170, 41,246, 9,110,232,236, 82,113,127,159,241, + 75,157, 30,164, 88,192,227, 2, 85,124,196,112,115, 18,192,104, 33, 72,202, 50, 21,156, 57, 46,248,100,218, 2,183, 25, 83,199, +159, 36,164,102,109, 74, 31,153, 74,219,118,173, 86, 43, 28, 54,108, 24,223,108, 54,155,134,140,254,180, 83,122,122, 86,207, 31, + 87,127, 39,242,242,242,134, 86,111, 65,100,204,179, 26, 95,127,189,160,202,177,211,151,143,204,255,226,227, 95,187,116,233, 34, +219,183,111,159,173,172,253,249,135, 39,196,140,236, 31,182,238, 58,184, 99,229,247,139,241,244, 69, 30,182,108, 92, 7,106,181, +108, 40, 35, 44,123,190,200,255,116,214,172, 89,226, 35, 71,142, 84,148, 72, 36, 74,173, 86,155,245,135,120, 4,135,240, 50,114, +181,240,112, 18, 66,192,227,192,219,213, 1, 94, 50, 17,248, 92,128, 67,136,181, 56,205, 45,251, 79, 44,180,105, 21, 56,186,199, + 56,104,235, 15,139, 48,114,210,108, 60,204, 22,158,230, 56,202, 22, 78, 28,212,103,134,167,216,218,197,207,133,227,213,174,126, + 37, 72, 28, 4,152, 57,121, 24, 26, 69, 38,121,189,146,219,102,103,233,184,245, 0,204, 46,246,184,115,242, 35, 88, 78,142,124, +156,222,181, 44, 83,163,200, 82, 20, 54,201, 25, 13,250, 23,118,134,164,207, 23,243,100, 59,163,126,189, 58,139,198,143, 29,197, +105,222,180, 17,229,112,248,200, 86, 25, 9,165,192,103,159,124,140,137, 31,143,241,121,153,154, 57,119,221,186, 13,115,164, 94, + 53,190, 81,103, 62,158, 95,154, 38,135,228, 71,129,164, 14, 60, 72,197,249,198, 69,234,192,131,222,104, 5, 33,224,186, 6,214, + 87,144,252, 72,110,106, 78, 82,241, 79,224,111,106,186, 5,212,186,112, 46,193, 41, 52,111,127,222,141,196,212,152,133,145,209, + 25,183, 41,165,185, 1,173,167, 14, 55, 89, 40,212,122, 11, 18, 51,180,176,152, 40, 25,249, 65, 32, 42,247, 35, 33,139,183, 70, +237, 32,132, 56, 23, 26,232, 55, 53, 83,110, 28,208,123,132,245, 25,184,114,205,198, 59,223, 47,154,205,205, 86, 24, 97,163, 20, + 14, 66, 46,196, 66, 94,193,194,133, 78,163,192,186,245, 63,165, 91, 64,250,208,203,151, 45,229,169,159,176,209,161,189,187,182, +218, 75, 0, 33,225, 8, 82,252, 2, 43, 5,182,239, 62,194,161,125,143, 97,176, 90,140, 51, 36,222,161,151, 52, 25, 79, 46,216, +163, 89,187,102, 13, 16, 32, 74,157,241,244, 99, 0,144,122,135,108, 8, 13, 9,173,255,230,123,213,170,133,212,183,231,184, 23, + 34, 16, 59, 79,114,117,243,156, 29, 82,171,158, 87, 80, 88,107,226,228, 94, 17,137,113,247,176,103,253,220,157, 54,189,113,193, +133, 19,251, 23,173,218,242,203,128,246, 93,122, 99,235,143,223,205, 4,112,241, 79,231,145,205, 54,116,251,230, 77,254,124,161, + 8,102,139, 13,102, 43,205,255,107,177, 34, 55, 55, 15,102,139, 13, 14,142, 78,176,216, 8,204, 86, 27,204, 22, 27, 12, 70,139, +228,227, 97, 17, 19, 0,220, 42,174,156, 21,107,180, 57, 35, 16,137, 2, 41,242,231,174,165,148,130,107, 49,114,124,125,125,119, + 3,128, 72, 36,130, 72, 36,130,205,102, 67,228,211,172, 73,158,161, 29,198,163,192,224, 89, 77,198, 23,121,137,215, 59,151,180, +237, 62, 62, 62,221,223, 52, 89,122,189, 30,106,181, 26,215,110,220,145,109,222,113,176, 75,226,139,148, 32, 27,149, 25,156,188, +130, 58, 3,232, 94,210,254, 84,166, 63,153,224,223,116, 44,231,243,137,195,171,173,217,126,252,118,220,233,111,102,150, 86, 37, +170,116,152, 97,252,124, 92,223, 6, 75, 86,111,137,203,189,190,126, 74, 89,199,136,199,227,241,179,178,178, 94,159,223,107,127, +218,211, 32,234,233,171, 94,171, 86,174,114,136,140, 87,225, 65, 98, 42,134,119, 8,192, 31,110, 2,165,104, 74,125,170,122, 84, +173, 26,186,123,221,234, 37,188,184, 84, 61,126, 56,124, 27, 23,127,221,112, 45, 61,243, 86, 23,154,158,170,123,155,107,200,187, + 26,173,210, 52, 47, 69,103, 67,173,183,192, 96,180,192,108,163, 80,106,205,200,148, 27,161,212,154,160,214, 89, 48,188, 99, 64, +177,223, 43,195,143,120, 18, 66,142, 83, 74,187, 33,127, 88, 42, 97,145,215, 32,132, 28, 47, 40,215, 31, 94,207,152, 49, 99,214, +183,223,126, 27, 83,184,110,225,251,133,235,150,246,126,145,239,187,207,156, 57,179,246,146, 37, 75, 22, 55,109,218,116,239,239, +191,255,158, 80,156,209, 42, 53,162, 85,184, 49, 39, 78,156,160,101, 60, 81, 4, 57, 58,187,139,156,197,124, 84,169, 28,128,143, +102,109,245,112,118,243,206,116, 16,242,184,167, 78,157,118,203, 49, 74,193,225,112, 53,246, 71,177,170, 55, 19,139, 29, 79, 44, + 95,190, 28,131,186,183, 20, 39,103,155,213,209,201,186, 12,141, 17, 22, 47,207,234,194,133,139,151, 72,151, 44, 93, 54,241,248, + 81,155, 28,192,178,226,155,248, 26,222,229,146, 34, 57, 88,132,128,218,172, 41,185,137,183, 27, 0,192,187,228, 98,169,245,102, +112, 11,114,107, 8, 1,180,122, 11,184, 92,146, 41,127,186,255,209,144,111, 22,182,219,185,247, 92, 42,229,184,168, 52,154, 68, + 71, 74,105, 74,233, 17, 3, 2,165,214, 12,153, 35, 31, 46, 82, 62,100, 18, 1,184, 69, 78,178,194,230,194,157,123,206,190,122, +241, 34,231, 78,129,201, 42, 81,147,199,229, 36, 80,171, 89, 79,169,213,169, 91, 67, 79,120,185, 8,225,235, 42,130, 72,200,131, +217, 2,232,140, 54,232,141, 86, 36,101,234,160,210,137, 17,214,186,127, 21,119,223,187, 6,247,192,134, 71,114, 94,220,233, 83, +170, 57,181, 90,177,125,247,193,106,169,169, 25, 61, 79, 30,217, 37,202, 82,154, 17,157,164, 65,166,220, 0,112, 61, 49,111,241, + 15,162, 47,167,140,237,181,125,207,161, 23,237, 91, 54,126, 81,222,253,170,201,124,178, 51,172, 89,196,134,110,221,122,137, 99, +110,157, 68,220,189, 11,139,212, 25,246,231,103, 17, 66, 56, 7, 14, 28,176,140, 29, 59, 86,181,120,241, 98,255,163, 71,143, 86, +206,202,202,186, 7,192,236,226,226, 18, 90,189, 90,224,253,179,167, 79, 85,136,232,213,159,159,146,173,131,204, 81,128, 64, 47, + 71,220,184,118,198, 44, 20,242,139,205, 55, 41,104, 30, 28, 92,177,195,151, 56,122, 35,161, 75, 76,142,195,229, 49,163,134,191, + 56,123,245,105,206,218, 29,103,191,171, 32, 53,223,115,176,101,173,189,219,160,170,207,140, 79,134,225,219, 53, 59,113, 37,242, +105,166,134,227,187, 40,205, 96, 57, 55,127,224,244, 18, 66,233,249, 6,219, 73,204,135, 70,153,165,120, 22,121,170,250,123,138, + 84, 15, 63,123,100, 39, 39, 87,101,198,203,108, 61, 73,205, 85,193,106,163,112,113, 20,192, 98,163,144,231,102,147, 93, 59,119, +224,206,157, 27, 28,112, 57,163, 1,204, 47,181,153,139,228, 55, 21, 74, 29,248,249, 17, 33,113,254, 95,179,213,134,144,106, 85, +177,105,237, 10,103, 15, 47,111,180,104,213,214,254, 40,181,123, 96,221,189,219,214,226,242,239, 81,109,174,172,250,161,161,212, +207,115,141,115,197,154,223,203, 42,119,212, 27, 76, 86, 40,228,121, 16, 26, 95,162, 81,133, 44,184, 57, 90,145,164,244,197,195, +244, 56,105, 89,185, 80,217, 15, 14,223,243,172,221,123,206,193, 99, 23,191,237,220,177, 13, 30, 38, 41, 33, 22,242,224, 32,228, +194, 65,200, 5,159, 88,177, 98,253, 6,115,158, 66,213, 45,251,225,145,236,183,168,159,231, 11,158,126,243,111,114,222, 65,158, + 59,215,204,249,121,204,244,165,157,187,244, 30, 65, 30,222,185, 52, 11,192, 5,251, 30,244,168, 93,239,217,108,246,223,227,196, +206,158,171,167,206, 89, 54,185, 83,183,254,224,114,121, 48,155,205, 56,180,111, 39,182,253, 48,239,137, 81,157, 51,130, 82,106, + 35,196,109,236,254,157,235,251, 79,159,187,130,212,174,219,168,113,177,126,146, 75, 54,126, 56,106,220, 64,111,111,111,167,255, + 68,180, 40,170,135,212, 68,215, 30,125,113,230,215, 95,240, 40, 38, 26, 54,154,111,152,108, 54, 10,121, 94, 78,186,197,108,220, + 94, 98,139,135,131, 67,224,214,109, 59,130, 57, 28, 2,147,217, 6,163,197,134, 41, 19, 62, 50,126,252,217,172, 22, 93, 59,181, +142, 17,114,161, 76, 74, 78,115,185, 17,245, 56,204,198,151,250,143,154,182, 66,160, 55, 88,161,208,154,113,114, 75,201, 94, 71, +236, 22,216,180,110,179, 94,163, 62,254,106,147, 72,196,229,152,106, 85,247, 79,104,221,164,214,203, 0, 63, 15,213,215, 75,126, +104,116,253, 86, 84,215, 1, 67, 70, 57, 12, 15,173, 79,252,220,197, 78, 31, 13,233, 93, 71,226, 30,240,161, 38, 39,185,196, 41, +211,248,142,174,242,128,202,213,180,255,137, 24,133, 28, 38, 20, 85,254,112,227, 36, 72,208,166, 63,237, 3, 0,190,126, 1,122, +190,200, 89, 85, 14, 35, 66, 1, 96,205, 79,123, 26,220,143, 77, 29,179,114,229, 42,199,200,120, 21,238,197, 43, 32, 18,112, 96, + 50,219, 64,236, 12,106,219, 40,119,220,236,153, 51,156,243, 52, 86, 92,142,206, 66,204,221, 75,212,168,214, 15,113,180, 56,247, +145,120,135,124, 8,160, 42,128,231,132,208,141,154, 12,159, 95, 41,189, 92,238, 78, 6, 54, 91,254,243,178,204,171,106, 21, 43, + 79,212,149, 47,148, 52, 37,132,214, 34, 20,174, 0,125,149, 83,112, 79,181,215,169,105, 50, 98,177,116,241, 92,172,222,252, 11, + 82,115,244,144, 89, 95,226,215, 45, 11,241,249,183,187,161, 51,148,156,213, 80,150, 31, 41,206, 24,189,105,184, 10,255, 47, 92, +239,219,111,191,237,246,198,177,233, 86,194, 49,251,211,122,133,223, 95,178,100,201,226, 34,159,107,237, 53, 89,175,141, 86,225, + 70,149,177,113,213, 61,125, 3,127,255,245,200, 97,215, 60,181, 9, 14, 2, 46, 2, 42, 87,195,252,181,191,122,126,208,192, 3, +217, 38, 25,246,108,250, 62, 87,175, 85,237,179,235, 98,225, 29,218,216,201,201,233,228,225, 67,191, 32, 40,192, 75,176,235, 90, +110, 98, 84,130,238,117,168, 87,153,245, 66, 88,217, 89,203,235,211,187,183,227,133,139,151, 62, 43,201,104,113, 9,183,226, 79, + 59, 14,121, 57,137,249, 32, 4, 80,233, 44, 24,243, 97,223,119,191,141, 81, 27,119,212,136,225, 32, 5, 38, 75,153,147,142, 89, + 95, 78,208, 75,204,113,143,146,147,146, 95,117,232,254,249, 5,165,154,232, 7, 14,155,112,231, 81,236,183,121,101,215, 98,115, + 74,215,136,174,130,252,200, 1,192, 37, 4, 54,106,203, 8,169, 44,253,228, 79,205,133,233,134,159,202, 50,110,170, 87, 79,115, +157,124,195,250,237, 92, 62,233, 39, 63,111, 47,119,169, 68, 76,165,142, 34, 82, 43, 52, 88,208,164, 73, 51, 97,229,144, 58,130, +107,143,117, 72,206,210, 33, 33, 85, 1,145,119, 61,222,160,118, 31, 96,231,170,105,109, 8, 33,156, 55,147, 20,223,228,220,229, +155,221, 55,175, 95, 41,202,144,155,240, 36, 89,141,244, 60, 61,210,242, 12, 72,207,213, 67, 42,230,163, 85,143,177,162, 19,191, +110,236,222,190,101,227, 53,111,179,123, 19, 18, 18, 79, 36,189, 74,235, 95, 39,188, 17,118,254,188,173,165,171,107, 21,231,188, +188, 4,165,189, 71,103,225,194,133,194, 37, 75,150,240,214,174, 93,171,108,210,164,137,207,204,153, 51, 59,103,102,102,222,174, + 84,169, 82,200,153,195,219, 47,214,107,213,179, 33,108, 38,207,150,173,219, 10, 68, 54, 30,206, 30, 63,110,218,191,111, 87,142, + 78,167,250,184, 84,195,225, 40, 91,152,161, 38,240,172, 80, 33, 70, 42,180,118,228,113,228,177,185,167, 62,217, 1,224,112,213, + 15, 38,159,191,116,247,105,108,131,200, 36,175,139,145,207, 50,115,181,166,234,207, 79, 77, 45,245,194,203, 37, 4,124, 46, 7, + 78, 98, 30, 56, 5, 87, 85,167, 10,117,159,129, 16,207,194,200, 41, 1, 41,248, 11, 16,130,212,220, 23, 81,118,228,108, 16,106, +163,192,211, 20, 13,212,250,252,208,124, 69, 15, 71,100,101,164,224,199, 53,219, 17,117,247, 14, 58,125,208, 3,235,126,218,133, + 49, 31,246,215,151,165,198,225, 20, 68,180,138, 68,179,164, 98, 30, 0, 2,185,198,140, 67,215, 95,162,106, 21,142,221, 55, 6, + 0,112,146, 58, 66,161,210,129, 35,112,194,243,200,147,142,167, 46,221,154, 57,231,155,149, 95,228,165, 69, 39, 63,123,112, 13, + 33, 30, 10, 84,169, 96, 66, 76,186, 51,238,230, 84, 70, 72,181, 32,112, 4,119,236,210,206,142, 9, 91,250, 43,231, 80,183, 6, +245,106, 54, 13,244,114,129,206,104, 45,136,106,113,177,109,235, 14, 36, 37,166,140,202,142, 57, 18,245, 62, 28,173, 58, 35, 62, +203,193, 59,120,226,131, 91, 23, 18,122, 15,153, 8,223, 10, 1,117,203,147,182, 96,207,123, 86, 59,141,150, 80,226, 58,115,218, +220,229,147, 59, 69,244,195,205,107, 23,112, 47,230, 57, 26, 55,110,136, 15,122, 13,130, 74,153, 27,122, 96,199,170,142, 0,206, +240, 68,150,201,141,154,181, 35, 54,171, 21,113, 79, 30, 62, 47, 78, 75,155,250,228, 30, 0,231, 63, 52, 79,121,214,168, 43,149, +185,221, 51,152,172,120,245, 42, 5,191,253,126, 57,188, 96, 61,187, 17, 9,184, 56, 27,149, 9,147,217, 6,147,197,134, 86,173, + 59, 26, 5, 28, 67,203, 69, 43,183, 54, 73, 75, 77,227, 72,156, 61,108,110, 21,106, 8,124, 69, 38,195,253,120,133,192,100,182, + 33,200, 79, 82,170,166,167, 95,181,197,211,166, 77,169,193, 21,136,161,210, 24,140,105,169,175,124, 54,237,185,164,126,252,228, + 65,133,138, 94, 50,231,239, 86,109, 20, 40,245, 4,153, 10, 3,114, 85, 74, 50,100,220,116,191,205, 63,124, 59, 20,128,221,115, +211, 18,138, 42, 39,206, 94, 11,117,117, 18, 16,181,222, 98,203, 81,154,172, 67,122,181,125,167,186, 83, 96,178,198,174, 92,177, +202, 49, 42, 94,133,251,241, 10, 56, 8,184, 16, 10, 56, 48,154,109,176,231,116, 34,132,112,170,212,110,253,113,179, 6, 97, 56, +115, 47, 27, 92, 46, 7, 58, 85,158,150,135,156,216, 6,109, 58, 57,214,111,212, 4,109,219,180,198,179,216,167, 1,199,143, 30, +106,127,227,183, 43,233, 82,175,144, 73,234,204,167,191,148,171,158,107,181, 92,179,208,231, 35,223, 10,149,154,247, 25,244,145, + 44, 48,160, 2,241,242,112,135,133,242, 48,246,195,190,118,159,249,249,198, 28, 88,242,205, 76, 24, 12, 70,120,186, 8, 65, 41, +176,117,205,124, 24,141, 70,248,185,139,160,208,152, 75,252,126, 89,126,164,164, 40, 84, 57,155,161,143, 23,103,182,222,124,159, + 16,114,124,198,140, 25,179, 0,208, 25, 51,102,204, 42,124,253,237,183,223,234, 0,164,150,214,116, 88,212,120,241,138,110, 92, +137,133, 18, 10, 67, 60,124, 3,111,156, 61,115, 90,118,228,190, 13, 55,127,185,139,136,198,190, 16,240, 56,112,148,249,225,126, +162, 2, 39, 14,175,151,255,186,119,227, 43,131,193,176,172,236,182,230,224, 6, 78, 18,231, 51, 63,239,220,103,243,112,119,231, +252,120, 54, 43, 62, 71,101,121,221,164, 21,123,235,168,237,238,153, 77,190, 20,228,180,131,131, 67, 53,163,209,232, 90,214,129, +221,122,246, 69, 65, 18, 47,121, 31,215, 86, 16, 46,215,186,115,215, 78,120, 56, 11, 97, 48,219, 48,227,139, 79,117,195, 59, 73, +229, 67, 6, 12,106,215,182,235,228,139,124, 73,240,133,102,225,193,180, 94,189,122,114, 46,151, 91,166, 94, 78,194,237, 63,245, +174, 8,173,236, 56,122,246,244,225,179,139,105, 46,180, 43,113, 87,149,246,224, 58,128, 63, 68, 72, 72,213,170,194,221, 7,126, +253,180,223,128,129,115, 42,212,237, 37, 77, 76, 83, 64, 64, 76,104, 88,195, 23,151, 78,255, 66, 83,146, 98,167,148,101,178, 0, + 32, 51, 43,215,223,211,211, 27, 81, 9,106,188,202,209, 33,189,192,100,165,229, 25,160,210,169, 80, 39,208, 15,114,133,194,255, +173,247, 47,240,203,153, 51,103,250,119,237, 57, 16,147,191, 88,208, 98,203,250,239,163,165, 62,213, 71,170,211, 99, 47,219,243, +164, 72, 8,201,253,242,203, 47,171,254,244,211, 79,156,161, 67,135,234,194,194,194, 28,134, 13, 27,214, 98,199,142, 29, 14,142, +142, 14,186,251,215,142,206, 25,253,201,140,158,155, 86, 47,172,155,151,151, 71, 44,102,243, 41, 83, 94,222, 12, 85, 25,102, 46, +249,215,153, 79, 72,205, 5, 35, 58,182,244, 60,234,230,200,169, 37,162,198, 65,164,230,130,125,244,209, 60,211,243, 83,107, 84, + 97, 3, 86,124,146, 42,183,205,214,115,188, 22,149,101,178, 0,128,195, 37, 48, 90,172,112, 18,243,193,225,112, 10, 77,188,239, +182,125,167, 28, 61,101, 66,240,185, 28,240,184,249,209,206,108,165, 9, 19, 63,234,105,247,147,128,197, 74,161, 51, 90,160, 45, +120, 58, 84, 41,179, 49,243,139,169,248,160,123,111,140,254,120, 42,242,116,192,221, 4, 21, 76,102,115,153, 39, 5,135,112,160, + 53, 88, 48,178, 83, 32,114,213, 38,104,116, 22, 24, 45, 54, 56, 10,121,224,243, 56,144, 56,240,224,236,200, 7, 40, 21, 20, 94, + 76,248,124,190,222,100, 50,237, 44,229, 56,161,178,191, 55,116,102, 14, 26, 13,252, 30, 29,154, 86, 71,204,245, 67,188, 43, 55, + 31, 84,249,236,139,217,248,116, 76,119, 28,124, 82, 21,110, 94,129,144, 74,196, 48, 83, 14, 0,251,134, 14,161,116,158,205, 55, +180,207,224, 13, 63,109,125,250,245,220, 25, 14,114, 13,129, 72,192,197,197, 11,231,113,227,214,221,213, 89, 49, 71,118,226, 61, +194,167, 28,111,103,103,103, 56, 8,185, 48,154, 12, 70,251, 83, 23, 40, 40, 16, 46,245, 14,217, 80,240,196, 31,110,181,161,152, +247,202, 54, 90,124,177,108,198,228, 47, 23, 46,238, 20,209, 15,103,143, 31,196,129,131,251,172, 77,187,140,226,238,218,182, 30, + 45, 58,244, 64,139, 78, 3,113,234,151, 29, 83,249, 98, 89,205,177,159,126,245, 77,171,118, 93,113,246,196, 65,100,164,167, 44, +183,183,188, 92, 62,153,220,174, 99,119,232,141, 86,180,108,223, 13,167,143,253,242, 9, 10, 58, 89,216,127, 19,123,227,250, 12, +142,101,234,148,201,252, 76,185,145,159,165, 52, 34, 37, 75,139,196, 12, 45,126,221,187,133,218,127,189, 48, 54,108, 85,167, 34, +127,236,210,139, 47,253, 43,250, 26,248, 6,157, 56,246,121,124,232,232,143,134,243,171, 84, 11,229,100, 42, 12,200, 82, 24,144, +173, 48, 64,173,183,160, 90,197, 96,142,217, 66,154,150,247, 56,123,200,132,252,117,199, 18,224, 44,225,163, 89,232,219,119,180, +181,217,108,255, 49, 89, 43,243, 77, 86,116,130, 2, 34, 1, 23, 34, 1, 7, 34, 1, 23, 22, 43,181,235,193, 69,236, 85,189,235, +196, 73, 19,252,140, 22, 32, 71, 97, 4,143, 75,224,229,225, 42,105, 88,119, 48,182,126,255, 9, 0, 96,204,151, 63, 98,244,200, + 97,168, 81, 43, 12,242,188, 60,159,193,253,186,174, 4,240,139,189,101, 61,121,246,114,192,217,171, 81, 95, 78,156, 54, 79, 58, +160,123, 91,238,189,120, 5,210,114, 13,120, 30,171, 42, 87,228, 13, 0, 44, 86, 27, 40, 40,182,239, 59, 14,177,144,135, 44,133, + 9,148, 82, 44, 92,187, 31, 78, 98, 62,210,242,242,155,251, 75,163, 52, 63, 82, 90, 68,170, 28,209,198,110,200,207,229,242,180, + 55,162,245,237,183,223,198,124,251,237,183,197, 70,200, 10, 77,214, 91, 79, 42, 45, 20, 74, 67, 61,220,253,110,158, 61,125,210, +233,151,251, 86, 92,186,159,131,126, 45, 43, 66,157,155,140,101, 95, 12,200, 37,160, 70, 14,151, 43, 55,232,180,135,117, 58,205, + 34, 74,169,169, 84,147,229, 27, 18, 46, 17, 59,159, 95,183,233,103,139,135,151, 23,118, 94,203, 77,201,211, 88,204,255,105,182, + 50,147,187,103, 54, 85,177,216,204, 93,116,233,113,101, 62,222,218, 40, 4,223,174,255, 21, 0,133,205,102, 3,181,217,192,119, +144, 74, 60,171, 54,205, 40,184,208, 57,240, 56, 68, 95,244, 10, 64,109,150,148,172,248,210,195,160, 4,128,204,145,143,125, 87, + 94, 1, 64, 6, 87, 21,249,120,200,128,252,230, 66,189,209, 65, 89,171,106, 85,218,176, 97, 67,185, 88, 44,126,235,131, 93,222, +230, 66,187, 42,208,243,231, 70, 0, 75,253, 66, 90,246,238, 44,173,211, 72,200, 17,160,126,136, 47, 46,157, 57, 66,111,158,222, + 58, 70,155,241,244,103, 59, 43, 34,212,122, 51, 82,115,244,120,149,163, 71,122,158, 30,233,185, 6,164,231,233, 65, 8,129,222, +248,110,195,223,104, 50,159, 30,216,249,243,230, 30, 6, 19, 6,181,234,212, 27, 83,231,173, 11,220,185, 97,201,121,177,119,104, +115,123, 18,109, 41,165, 86, 66, 72,210, 71, 31,125, 84,119,207,158, 61,220,218,181,107,235, 30, 63,126,236, 8,192, 6,192, 36, +149, 58,138,183,252,240,237,153, 70,141, 26,237,125, 21,251,228, 34,128, 60,123,186,231, 87,106,243,145, 40,212, 57,119,108,128, +164, 89,231, 32, 31, 71, 4, 72, 84,157, 67,165,247,151,121,181,255,108,113,230,133, 85,153,105, 6,203,185, 44, 29,183,222, 43, + 53,223,174, 92, 65,179, 65,255,162, 79,191, 65,224, 18, 14, 76,122,237,139,194,202,229, 37, 19, 98,254,174, 39,144, 58,240,225, + 36,230, 65, 42,230,163, 69, 77, 55,148,227,122, 70,205, 86, 27,180, 6, 43,116, 6, 11,244, 70, 11, 60,252, 93,241,211,206, 3, + 72,206,212,225,215, 59,217,120,250, 66,133,224,138, 18, 80, 90,246,101,210,102, 53,107,186,247, 29,234,196,229, 16,112, 57,132, + 83, 51,180, 58,114,213, 38, 8,120, 28, 8, 28,196,144,136,120,112, 22,243, 33, 16,240,145,153,153, 9,131,193,128,128,128, 0, +135,210,173, 32,133,147, 84,140,224, 42,126, 48,153, 45, 56,121,245, 17, 22, 77,233,131,142,173, 26,128,240,165,120, 98, 8,135, +147,155, 19,108, 28, 14, 76, 22, 27,140, 38, 43, 0, 78,137,209,183,128,128,128,118, 18,137, 68,162,213,106, 85, 47, 94,188,184, +156,246,228,112,178, 87,173, 94, 99, 79,159,189,184,179,219, 7, 29, 17, 21, 29,131,131,191, 28,189,150,237,174,152, 86,248,157, +218,181,107, 55,241,240,240,144,230,228,228, 40, 31, 60,120,112,251, 45,159,126,137,196, 59,244,179,166, 45,218, 64, 45,207, 68, +198,203, 68,187,159,162,107, 4, 58,225,171,111,215,213, 15,169, 30, 82,223, 74,243,141, 87,205, 0, 39,124, 62,111, 77,253,170, +193,213,235, 23,118, 8,169, 17, 32, 45,221,100, 73,156, 59,125, 56,246,243,111,123,244, 27,129,139,103,143, 98,197,162, 47,118, + 74,100,158, 53,220, 92,101,245,106, 55,233,132,107,231,143,194,193,201, 7,174,238, 62, 45,134,142,156,212,161,223,208,113,184, +113,237, 60, 86, 47,153,181,195,106, 80,237,182,167,172, 82,239, 32,207,122, 13, 91, 13,113,114,243,134, 92,161,130,147,171, 23, +106,212,105, 56, 68,234, 29,244,165, 58, 35, 62,235,109,207,117, 27,165, 48,152, 40,242,212, 38,188,204,210, 33, 41, 61,223,104, +217,108,229,200, 9,178,218,136,212,129,199,115, 51, 63, 11,120,112,254, 34, 13,244,247, 38, 75,191,249,130,107,130, 3,178,228, +249, 38, 43, 75,105, 68,150,194, 8,181,222, 12, 55, 9, 15, 54,171,173,220, 79,221,121,106, 19,156, 10,242,104,173,182,183,207, + 13, 95,191,109, 95,200,253,216,212, 94, 43, 86,172,114,188,151, 80,196,100,241,243,163, 89, 34, 1, 23, 86,155,173,224, 78, 83, +134,193,230,241, 39,247,236,218, 1, 47,179,117,249,189,150, 57, 4,193, 97,141,224, 33,182,161,253,192, 25, 0,128,238, 93,243, +135, 47, 73, 72,211,224,216,205, 44,224,143,137,221,165, 95,139,117, 58,238,166, 93, 39, 62, 59,176,127,175, 76,111,229, 97,227, +169, 36,104, 13, 22, 56, 8,184, 16, 9,184, 16, 11,184,127,200,199, 46,219,104,229,231,220, 37,103,155,161,213,235,161,212,153, + 65, 1,220,126,166,134,206,104,129, 66, 99, 70,147, 80,215,119,125,246, 57, 1, 32,226, 77, 67,244,166, 89, 42, 18,145, 42,142, + 59, 69, 53, 10,215, 47,201,200, 21,205,217, 2, 80,174, 30, 92,188, 55,157, 99,209,215, 66,169, 91, 13,153,187,231,205,211,167, +142, 75,127,185,111,195,229,232,124,147,101,214,101, 99,249,151,131, 83,148,242,236,182,148,210,120,123,127, 76,226, 89,179,142, +216,209,241,226,119,171, 54,154,188,188, 43,216, 14,223,148,103, 42,180,214, 63,196, 16,173, 6, 3,135,218,168,192, 30,147, 85, +208,228, 97,154,247, 73,111,216, 40,197,252, 85, 7,176,120,218, 64, 72,197, 67, 29, 9, 33,142, 26,189, 5, 83, 22,108,198,242, +175, 70, 57, 57,138,120, 32, 4,208, 27,173,248,112, 80,111,251, 42,160,222,130,231,183,246,168, 85, 9,199, 31, 23,109, 46,108, +220,226,131,187,141, 27, 55,150,187,186,186, 66, 44, 22,255, 39, 82, 97,231, 69,187,184,222,133,153,114,164, 56, 57, 57,181,118, +118,118, 46,170,167,145,203,229, 71,222,166, 22,170,228,217, 23,211,147, 30, 52,106,222,182, 59, 46,159, 57, 66,111,158,218, 50, +166, 60, 99,244,184,186,185,190,140,124,240,188, 6, 33,110,249, 17,173, 2,147,101, 52,219, 16,232,237,136,151, 73,207,225, 34, +147,189,180, 87,207,209, 43,180, 39,225,208,143, 9,232, 86,117,122,236,129, 2,211, 51, 88,226, 19, 26, 29,243,240,222,162,110, + 67, 38,243, 58,245,155,192,221,240,237,164, 89,120, 35,137,181, 20, 76, 79,159, 62,125, 52,106,212,168,102, 55,110,220,176, 2, +208, 18, 66,204, 92, 46,215,209,104, 52, 10,218,182,109,171,120,242,228,201, 21, 20,147,180,248, 38, 45, 71, 30,244, 32, 34,213, + 7, 85,131, 27, 14, 14,116, 82,117,108,219,178, 41,154,214,242,199,203,150, 77, 1, 96,242, 11,181, 52,164,197,248, 45,251,170, +120, 86, 60,185, 97,219,177,197, 99, 6,118,152,226,215,125,193,138,212, 99,243, 74, 77, 68, 77,126,116,185,115,113, 54,158,199, +229,192, 73,204,135, 84,204,131,147,152, 15, 39, 7, 62,204, 22, 90,158, 39, 71,106,182,216,242, 35, 90, 70, 11,212, 58, 11, 46, +222,203, 64,186,194, 8,185,202, 4,157,201, 10, 10,154,255, 52,106,199,213, 60, 51,238,186,203,235, 99, 31, 88, 95,177,105,237, +247,206,135,174,167,188,238,209, 39,115, 20,194,201, 49,191, 55,246,213,171, 87,225,238, 94,246,211,190,205,102,195,193,211,183, +177, 98,251, 69,156,222, 58, 29, 14, 2, 46,234,244, 92,128, 17,189, 26,195, 70,109,120,254, 52, 38, 35,184,102, 93,111, 14, 71, + 12, 14, 33, 48,152,109, 0,104,137,251,211,104, 52,186, 39, 39, 39, 43,171, 85,171,230, 83,161, 66,133,126, 92, 46,151,138, 0, +195,145,189,185,218, 11,199,119, 59,106,116, 6,171,163, 69,177,181, 90,154, 46, 34, 56, 56, 24,132, 16,234,225,225, 33,184,120, +241,162, 58, 44, 44,204,243, 45, 77, 22, 71,236, 85,125,245,232,241,159,245,171, 26, 20,132, 3,187,183,130, 82,114,200,222,239, +239, 58,118, 3,223,204,252, 99, 15,195,207,231,173,169,191,124,193,228, 63,188, 55,126,230,138, 82,123, 29,138, 69,210,105,125, + 6,143,197,221,219,191, 99,217,130,207,247, 26,212,185, 35,204, 22,115,255,220,180,132,189, 85,106, 54, 6, 53,169,112,118,255, +247, 24, 56,108,140,168, 83,183,126,184,113,237, 60, 22,207, 26,191, 75, 43,207,252,200,222,241,191,108,148,255,113,219,206,189, +248, 58,131, 9,107,150,206,197,184,105,139,208,164, 93,119,254,195,123, 55, 63, 6,240,181,189,219,108, 48, 89,209, 54,204, 35, +223, 60,155,109, 56,154,192,229, 21, 87, 3,121, 92,194,169, 23,228, 2,157,209, 2,165,214, 92,250,141, 74,192, 79,151, 43,148, +149,126, 88,252, 25, 87,163,183, 32, 75, 97, 68,166,194,128,108,249,127, 12, 86,182,194,128, 44,133, 17,124, 30, 65,108,252, 11, +112,248,188,114,231,231,229,169,205,104, 84,221, 53,255, 28,125,203,214, 17, 51,207,185,241,233, 43,247,251,172, 88,177,210,225, +126,162, 10,209, 9,202,130, 72, 22, 23, 34, 62, 7,194,130,255,173, 54,160,172,159,144,121, 85,173, 50,124,212,152,246,206, 82, + 49, 82,227, 50,193,227,230, 15, 17, 35,243,242,135, 76,164,199,164,241, 99,225,225,238,130,228,108, 3, 86,255, 18,139,232, 71, +207, 96,211,149,111,179,215,108,220,219,101,244,196,207, 93, 56,124, 33,118,156, 73,204, 47, 39,215,138, 39, 55,143,233, 83,159, + 63,208,168,149, 57, 20,212,106,103, 0,128, 80,139, 53,191,186, 45,158, 63, 3,123,183,255,136, 51,145,153,175,147,183,174, 31, + 90,142,207,102, 46, 68,182,210, 88, 80,245, 75,143,100,189,241, 58,171, 72, 36,234, 79,175,139,152,163,226, 94,147,130,215,198, + 18, 52,140,111,152, 43,227, 27,239, 27,223,208,187, 95,204,195,255,166, 50,155, 14,255,100,138, 92,189,106,203,156,100,191,159, + 58,117, 76,114, 36,154,190, 54, 89, 38,109, 54, 93, 52,185,123,138, 82,158,213,169, 92, 38,203,171,122,109,145, 68,114,101,206, +194,213, 6,239, 10,149, 44, 39,239, 41,115, 84,122,235,159,194, 34, 2, 71,137, 85, 34,243,212,187, 4,134,175,224,235,140,115, +179,178, 30,105,202,138, 60,217, 40,197,241, 91,233,160, 52,255, 17,105,255,213, 87, 40,120, 50,135,213,150,223,172,114,238, 94, + 38,120, 5,121, 40,246,134,191,215,111,252, 81, 25, 17,166,208, 12, 89, 60,255,117,115, 97,147,186,249,145, 44,103,103,103,184, +184,184, 64, 42,149,194,158,166,195, 66, 74,234, 93,232,228,228,212,250,222,189,123, 14,206,206,206,224,114,185, 48, 24, 12,168, + 85,171,214, 91,157,232, 82,159,208,137,141,218,245,158,213,162, 93,119, 92, 60,125,152,222, 60,189,109,108,121, 7, 66,140,232, +208,236,216, 55,223,204,175, 50,103,209, 15, 34, 39, 7, 30, 30,171,141,224, 16,130, 64,111, 71,184, 75, 56,184,124,100,135,126, + 96,247,102,118, 15,142,231,239, 95, 97,231,242,181,155, 36,203,151, 44,104,235, 84, 33,228,162,234,213,211, 92, 0,208,164, 63, + 89,234,232, 19,250,168,226,239,103, 79,214,109,221, 27,222,126, 65, 29,203, 17,254,165,132, 16,109,124,124,124,194,156, 57,115, + 66,150, 44, 89, 66,185, 92,174, 13,128,104,213,170, 85,218,184,184,184,123,200,239,154,139,178,110, 54,237, 59,214,154, 34, 21, + 90,155,184, 57,114,106, 5,249, 56,162,105,173,252, 86,209,129, 17, 45,224, 31, 16,128,248,116,109,189, 92,173,141,175, 54,114, +131,214,109,140,190, 83,217,131, 59,198,162, 51, 62, 66, 25,131,201,150, 84,103, 11, 19,228, 11,163, 89, 78, 98, 62,108,249, 55, +246,114, 25, 45,131,201, 10,157,193, 10,157,209, 2,141,209, 10,173,209, 10, 27,205, 63, 39, 8, 33, 48, 89,108,176,235,177,249, +141,186,239,236,230,129,160,202,249,189,100,157,196,249, 67, 61, 56, 59,242,243,251, 72,187,187,195,203,203,203,174,168,168,209, +148,127,138, 27,205,182,215,205,250, 70,147, 5,148, 82,196,198, 62,157,158,148,144,208,179, 90,112,181, 86, 53,235,212,117,115, + 20,113, 0,160, 68,163,165,213,106,173, 78, 78, 78, 94,110,110,110,156, 87,175, 94,189, 54,207,213,234,181,181,252,114,248, 16, +250,244,233,173,126,124,251,254,235, 46,238, 58,157,142, 52,111,222,220,217,223,223,159, 99, 48, 24,148,229,219, 7,132, 72, 60, +171,247,242, 15,109,182,232,195,143,198, 85,111,219,161, 11, 46, 93, 56,139, 95, 15,239,249, 89,147,249,212,238,145,179, 67, 66, + 66,255,212,235,176,106,112,245, 63,245, 58,172, 84, 37,184, 84,163, 85,179, 78,195,198,148,240,112,230,248,126,170,231,152,198, +231, 39,188,147,253,251,214,127,245,245,224,143,103, 86,237,218, 99, 48, 62, 28, 54, 2, 60, 30, 23,151,207, 29,195,242, 5, 83, + 79,168, 21,153,195,237, 73, 19, 0, 0, 82,179,166,160, 90, 64,165, 79, 3,170,214, 70,228,205,107,120, 30,251, 48,230,254,157, + 27,181,170,133, 53,129,167, 95,224,167,164,102,205, 37,244,209, 35, 83, 89, 58, 70,189,254,197,136,225,195, 80,180,215, 97,211, +240, 16,119,242,230, 9, 0, 64,171,202, 52,109,249,126, 74, 92, 97,175, 67,155,201,248,162, 36, 93, 69, 94,214,193,203,191,221, +154,214, 51,162, 11, 39, 91,105,204,143, 96, 41,140, 5,139, 1,217,133,255, 43, 13, 8,246,147,226,105, 76,164, 77,175,200, 62, + 84,206,243, 82, 63,162,127,231, 71,133,117,215,102,163, 32,128,190,188,231, 55,229, 59,143, 93,186,108,133,195,253, 4, 53,162, + 19,149,249, 77,133,124,110,190,193,226,115, 94,155,174,252,222,236,101, 68,135, 8,119,241,200,225,131,144,173, 52,193,102, 3, +120, 92, 78,193, 34, 64,178,138,224,165, 74,139,236,188, 44, 36, 36,189,128, 60,253, 57, 56, 28, 14, 60,252,170,195,222,240,163, +149, 10,125,181, 70, 26,214, 47,162, 21,239,240,239,105,112, 20,241, 96, 80,101,224,212,190,239,179, 12,106,229, 34,157, 86,125, + 88,151, 19,151,106,239,182,115, 8,201, 82,170,245,222, 34, 62, 23, 7,182,255,128,254, 35,198, 23,236,148,252, 63,211,103,127, + 3,112, 8,114,243, 84, 32,132,148, 55, 74,122,167,140,215,111,195,251,208, 64,113,230,234, 15, 15, 10, 37, 63,141,210, 83,103, + 79, 31,147, 92, 79, 18,225,246,211,180, 2,147,149,101, 91,248, 73, 68,138, 74,145,219,153, 82, 26, 91,174, 18,112, 56,157, 7, +142,156, 22, 19, 84,189,166,225,210, 67,117,162, 92, 99, 46, 49,207,161,105,191, 57, 49,119, 79,172,237,170, 48,199, 79,144,250, +213,178,218, 44,150,165,218,204,167, 11, 74,104, 58, 20, 46, 88,125,224,117,179,225,151, 75,118,228,255,111,181,194, 74,109,160, + 54, 96,210, 87,235, 97,177, 89, 97,179, 90, 97,179, 82,152,173,212,177,172,226,122,249, 85, 58,156,247,100,127,232,144,175,255, +220, 92,232,226,226, 2,119,119,119,184,187,187,163,208, 24,189,107,115,161,179,179, 51,164, 82, 41,174, 93,187, 6,177, 88, 12, +137, 68, 82, 46,221, 34, 38,107, 66,195, 54, 61,127,104,215, 99, 20,206, 29,222, 72,239, 92, 61, 54, 78,155,241,116,179,221, 17, +122,171,149,152,205,102, 68,116,106,243, 34, 42,230,217,233,217,211, 62,238,210,172,219, 56, 81,211,144, 10,208, 27,173, 72, 73, +122,142,203, 71,182,233,171, 87,241, 61,211,190,101,227, 23,102,179, 25, 86,171,181,204, 27,185,222,104,202,230,242,197,146, 65, +131,134,240,239,220,190,125, 72,234, 85,253,128,149,112,238, 19,106,171, 67, 8,233, 83,167, 78, 13,152,204, 54,104,181,202,188, +242,110,179, 74,165, 74,216,186,117,107,149,225,195,135, 59,214,172, 89,147,255,252,249,115, 44, 95,190, 60, 71,165, 82, 37,216, +171,113,246,234,211, 85, 60,146, 23, 39,180,153, 6, 7, 58,169, 58, 38,183,104,138, 65,221, 90, 96,239,137,235,184,124,237, 6, + 94,168,165,247,212, 22,222,145,151, 47, 82, 13,181,220,148,135,122, 52,173,196, 61,176, 61,239,144, 87,219,153, 3, 40, 21,157, +205,186, 60, 79, 99,255, 77, 28, 80,233,204,112,118,204, 31,239,169, 48,178,197, 37,196,110, 71, 68,128,132,107, 55, 34,107, 55, + 8,174,137,168, 4, 5, 50,229, 6,232, 12, 22,216,108, 20, 54, 80,184, 59, 9,225, 32,224, 32, 57, 41, 1, 54,106, 74, 44,231, +229, 34,171,117,171,214, 60,128,128, 16,202,227,243,120,160,200, 31, 95, 81, 44, 22,171,189,188,188,236,138,104,153, 44, 22,244, +233,210, 24, 77, 26,214, 65,207,113,249, 99,102, 94,248,121, 6, 92,165,124,236,221,185, 25,201, 87, 86,238, 12,106, 54,254,236, +195, 7, 49,125, 99,162,126, 31,242, 65,125,113, 61, 31, 94,170,160, 36, 61,181, 90,125,136, 16, 34, 20, 8, 4, 93, 90,181,106, +229,118,232,208, 33,185,135,135,135, 77, 40, 16,100,245,232,222,205,198, 23, 8,114, 11,215,253,237,183,223,248,227,198,141,115, +202,203,203, 75,206,200,200,184, 65, 41, 53,151,254, 32, 24,218, 1, 28,236, 1, 33, 14, 82,177,227,139,166, 29, 6,249, 53,108, +210, 88,214,171, 79,127,136,132, 34,156, 59,123, 26,107, 86, 46,217,175, 78,123, 60,178, 60,123,242,125,245, 58, 76, 73, 78, 76, +208,234, 12, 97,181, 27,180, 33,215,206, 30,153, 76,136,231, 74,174,200,249,251, 14,125,198, 87, 77, 72, 85, 99,205,183,211,225, + 42,147, 32,241,249, 19, 93,220,227, 7,235,205,122,229,116,123, 77, 22, 0, 56,230, 88,251, 54, 29,214,197,213, 96,178,226,234, +197, 19,122,155,197,214,229,198,149,147,207, 43, 86,111,232, 80,187, 97,123,215,236, 95, 55,247, 1,176,183, 44,157,148,199,127, +142,224, 6,132, 52, 74,188,112,241,188,204, 59,176, 22,151,128,192,100,208, 35, 43,254,142, 69,155,241, 68,169, 72,121, 96, 87, + 47,220,156,151,248,106,230,188,239, 38, 52,108,208, 64, 66,225,240,135, 8, 86,161,193,202, 86, 26,225,225, 36,132, 78,153,133, +184, 59,167,245,218, 44,110,169,227,157, 89,140, 26,199,236,204,140,215, 77,108,234,140,167, 77, 74, 91, 63, 59, 51, 67,104, 49, +106, 28,203,190,213,113,225, 44, 17,226, 65,226,171,215,137,239, 34,126,126,110,150,144,207,125,157,167, 85,120, 45, 40,131, 54, + 2, 7, 23,188,202,209,131,128,194,102,181,192, 98, 54, 66,165, 84,226, 85,106, 58, 50,210, 51,160, 82,201,225, 40,117, 69,237, +122,141,224, 36,113,192,253,203,251, 65, 41,181,107, 92, 67, 51,225,135, 52,108,210, 82,244, 48, 41, 63, 23,203,129, 79,113,108, +207,146, 28,181, 50,179,165, 42, 53, 54,174,188,215, 98,139,213,122, 62,250, 81, 92,173,138,190,149,201,189,231, 10,236,252,105, + 45,140, 5,145, 77,179,217,138,135,201, 26,164,229,106,145, 28,255,152,218,172,214,127,205,132,212,188,146, 3,128,224,213,169, + 93, 3,157,134,246,194,143, 63,174, 71,124, 66,146,109,209,228,174,201,106,149,252, 3,123, 77, 86,209,217,189, 53,233, 79,150, +142,252, 49, 49,229,104, 84, 46, 71,103, 44,125,126, 43, 7,207, 64,180, 28,185,252,140, 78,149, 43,180, 26,180,188, 99, 59, 71, +238, 41, 78, 51,223, 65,195,184,232,243,129,144,138,121, 32,132,160,176,185,112,221, 55, 99,225, 40,202,111, 91,214, 25, 44, 24, + 58,101, 5,118,174,152, 10, 10, 96,112,255,235,218,146,202, 89,164,105,175,226,139,164,204, 87, 29,186,127,126, 65,111, 18, 25, +186,245, 30,126,183, 65,131, 6,114,177, 88, 12,177, 88, 12,103,103,103,184,186,186,194,197,197,165,204,109, 47,113, 48,210, 34, +189, 11, 57, 28, 14, 56, 28, 14, 36, 18, 9,164, 82, 41, 36, 18, 73,169,154, 37,154,172,214, 61,214,181,239, 57, 26,231, 14,111, +162,119,174, 30,251, 88,155,241,244, 39,123,143, 81, 65,115,207,253, 62,125,250,132,141, 27, 55, 78, 48,111,218,184, 51, 39,206, + 94,142, 61,112,124, 83,247,188, 60,185, 63,165, 20, 46, 50,217,203,129,221,155, 29,107,219,188,225,139, 11, 23, 46,216,246,236, +217, 99, 32,132, 60, 40,171,156,217,153,153, 63, 95, 56,127,113,126,203,214,109,176,121,251,158,214, 49,143, 30,183,126,254, 60, + 14,254,129, 65,168, 92, 37, 24, 90,226,138,139, 87,174, 65, 45,207,252,217,158,114,190, 17,213, 34,121,121,121,191, 15, 28, 56, +176,211,245,235,215, 57, 3, 7, 14,212,102,103,103,255, 86,248, 28, 85, 82, 52,171,168,230,239,235,123,101, 1,248,185, 82,155, +143,246,191, 50,201, 63, 5,176, 36, 32, 48, 0,151,175,221,192,141,235,183,214,103, 59, 6, 44, 24, 57,244,163,177,149,122,112, + 71,247,104, 90,137,235,229,234,136,221,155,150,115,143,222, 72, 90,145,148, 99,221, 12,224, 27,123,142,209,235, 27,135,202,132, +230, 53,220, 96,182, 82,216,104,254, 5,215,201,129, 95,236,133,183, 56, 77,158, 81, 52,242,227,113,227,158,215,174, 83,239,179, +161, 31,125, 44,168, 23,228,143,219,207,228, 0, 33,112,243,145, 32, 45, 45, 13, 87, 15,110,178,228,189,122,178,158,203,181,125, + 93,158,186,148,155, 20, 85,173,200,122, 99,179,179,179,113,249,242,101, 20, 26, 44, 79, 79,207, 98,141,214,155,154, 57, 25,169, +191,125,179,108, 99,243, 49, 31,246, 70,183, 54,181,112,229,206,115, 24, 11,198,107, 42,236, 74,158,112, 99,131,240,211,129, 65, +198, 9,125,170, 43,117,102, 97,210, 87,137,138,171, 69,123,197,190,169, 73, 41, 53, 18, 66,142, 62,125,250,180, 69,221,186,117, + 43,157, 60,121, 50, 55,230,214,153,201, 69,203,241,249,231,159, 75,127,252,241, 71, 71, 74,233,111, 6,131, 33,222,174,109,231, + 96,119,228,221,187,238, 38,179, 13,215,110,221,175,209,190,121, 61,216, 40,112,231,206, 29,108,222,178, 89,255, 32,250,222,247, +154, 12,159,175, 75, 50, 47, 37,237, 79,235, 59,244, 58, 44,170,153,246, 42,233,251,115, 39, 14,238,108,216,186, 59,134, 76,250, +250,235,203, 39,246,204,175,223,178, 27,167, 70,195, 78,136,188,113, 17,231, 79,158,254,206,164,206,157, 95,214, 60,164, 37,149, + 83, 36,118,252,164,102,253,214, 72,126,145,132,196,184,135, 63,235,114,226, 82,165, 62,161, 63,167,166,188,248,184, 74,173,230, +184,126,102,239,228,146,140, 86, 89,117,222,223, 83,188,233,228,241,163,131, 82, 82, 54,248,104,116,122, 17,165, 84, 47, 18,242, +210,165,156,146,123,168,255,249,184, 63, 50, 73,220, 42,247,233, 63,244,227, 19,107,214,172,228,123,187, 56, 34, 61, 79, 15,165, +206, 4,149,214, 4, 14, 33,168,230, 39,129, 86,149,139, 43, 7,151,153,141,234,188,129,148, 62, 51,149,164, 41,245, 14, 93, 8, +208, 73,159,143,191, 4,161,204,223,175, 74,251, 89,165, 70,235, 84,169,209,221, 63, 31,127, 44,132, 82,218, 94,234, 29,170, 42, +156,235,176,184,109, 39, 36,255,252, 30,210,214, 31, 38, 75,254,248, 99, 22, 27, 96,181,217, 10,162,124, 0,125,221,158, 79,202, +216,118, 98,219,119,226, 55,164,102,200,161, 51,154, 97, 48, 90, 96, 50, 91,193,225,114,225,226,234,130,224,202,225,144,185, 56, + 35, 35, 61, 21, 55, 46, 28, 69,108,244,149,223, 8,197, 2,109,102,236, 5,123,142,145, 64,236, 18,226,235,231,195, 73, 83, 26, + 33, 22,114,113,239,202, 73,147,217,104,248,222, 30,147, 85,156,166, 60, 39,119,197,103,211,190, 24,188,109,235,118,159,176, 42, +206, 72,201,214, 33, 37, 75, 15,149,222, 92, 96,196,108, 48,168,179, 17,125,113,123,186, 85,175, 90,241,175, 55, 90, 22,147, 94, +117,232,244,109,247, 25,243,151,113,159, 61,143, 55, 47,252, 52, 34, 69,167, 86,118, 45,119, 36,171, 8, 91, 39, 84,222, 91,190, +111, 20, 12,105,242,117, 82,233,207,223,111, 54, 23, 82, 27,108,148,226,216,173,244,215,205,133,182,130,204,203,168,231,242,114, + 53,237, 69, 63, 85,237,210,233, 50,100, 79,158,125,159, 7, 0, 92, 46,247,245, 82,152, 75,165,215,235,141,111,211, 92,248,102, +226,187,205,102,131,179,179, 51,196, 98,113,185,155, 36, 37,222, 33,131, 26,182,233,249, 67,251, 94, 99,112,254,151,159,232,157, + 43, 71,199,107, 51,159,110, 42,119,142, 66, 94, 94, 12, 33, 36,238,251,239,191,175,183,121,243,230, 42,211,166, 77,139,223,241, +195,252, 53, 0,144,147,147, 63, 7,112, 84, 84, 20, 29, 63,126,188, 65,175,215, 39,228,229,229, 69,150,213, 1, 2, 0,116, 89, +142,139, 55,175, 91, 82,251,229,171,180,222, 65,181, 27,193,179, 74, 35,248, 84,107,140, 60,149, 9,183,159,165, 34,254,241, 5, + 60,190,118,240,164, 86,106,153, 95,222, 50,215,173, 91,215,159,195,225, 84, 86,171,213, 62, 53,107,214,172, 43,145, 72,162,234, +214,173, 27,206,227,241, 82,238,222,189,155, 84, 30,173,164,203,219, 12,149,218,124,180,250,133,202,169,109,124,186, 54,252,133, +202, 41, 74, 43,146, 77,205,188,176,202,224,221,233,251, 21,212,148, 29,115, 96,187,242,208,238, 77,203,185, 67,199,126,110,125, +168,112,253,148, 39, 22,158,251,118, 68, 88, 57,154,165, 56,105, 19,134,247,252,207,240, 14, 5,145,172,130,255,237, 10,211,203, +229,247, 21, 0,190, 20,251,213,250,225,225,167,227,190,169,211,176,249,176, 86, 31, 12,228, 88, 4, 82,156,249,101, 3, 77,136, +190,120,128, 71,173,179,181,118,204, 6, 80,102,115,144,209, 88,166,201, 42,182,185,231,165,164,205,129, 61, 91, 70, 28,250,229, +240,183,189,122,244,116, 95,247,213, 0, 44,219,120, 4, 18,177, 8,212,102,195,192,118, 1,253, 30,239,233,220,221,223,219,161, +194,161, 75, 41, 87, 39,173,124,248,165, 86,107,138, 45, 43, 18, 83, 96,156,175, 57, 57, 57,101,181,104,209,162,137, 72, 36, 34, +217,217,217, 60, 47, 47, 47,139, 76, 38, 51,166,164,164,104, 13, 6,195, 33, 74,169,166, 60,219,105, 50,219,144,152,161,199,175, +135, 15,225,254,173, 11,120,252,248,169,234,241,163,199,107, 9,143,174, 84,167,199,230,190,205,190,179, 21,219,235,144,150,187, +215,161,213,160,218,189, 99,253,194,118, 90,189, 97, 68,221,102, 17,168, 84,163, 57,199,100,182,226,193,157, 75,184,116,112,229, + 50,163, 42,103,198,187, 28, 99,191,138, 85,130, 41, 87,136,223, 47,159, 0,181,217,214, 3, 0,181,217,214, 71, 93, 63,249,113, +227,174,163,225,230, 85,169, 46, 33,132,148,119,190, 71, 0, 16,240, 56,154, 83,135,182,253,146,152,152,136, 39, 79,158,224,217, +179,103,200,205,205,197,238,221,137,229, 58, 62,154,220,196,115, 82,247,160,206,125, 7, 12, 57,214,111,208,135, 14, 85,130,195, + 56, 33, 21, 93,225, 46,229,225,233,179, 36,196,222,141,182, 61,189,125, 82,111, 82,102,246,210,230, 38,150,104,252, 36,158, 53, +189, 9,135,206, 40,156,187,176,105,211,230, 33, 95, 44,250,182,137,187,167, 87,177,215,241,156,172, 76,225,244, 73, 71, 67,110, +220,252,221,174,185, 14,109, 86,107,206,216, 17, 3,109,220,252,137, 66,241, 58, 78, 77,242, 15,118,254,195, 84,254,251,212,102, + 41, 51,130,255, 81,239,150,176,216,108,208,232, 76, 80,106, 12, 80,168,244, 72,203,204,193,253,232,104, 92, 57,118, 20,207,159, +222, 79, 48, 27,141,103, 57, 28,114, 80,155,254,244, 74,249, 90,154,120, 85,220,221,220,144,144,171,134,131,144,135,164,216,187, + 6,141, 82,177,235,109,235,145, 54, 59, 54, 77,226, 29,210,105,224,192, 65,167,219,117,238, 33,107,216,172,131,163,135,179, 11, + 4, 60,138,184,196, 84, 68,254,118, 90, 19,127,255,170,210,108, 84,119,121, 31,179,190,252, 47, 99, 87,175, 67,147, 65,211,125, +112,207,214,135,185, 92,158,208,102,179, 24, 76, 70, 67,223,119, 49, 89,127, 21,148, 90, 83, 70, 12,238,253,135,103, 3,139,141, +138, 7,247, 63,163, 43,250,172, 96,182, 82,199,193,253,127,211,230, 95, 64, 74, 78,236,123,221,180,183,247, 92,202,139, 23, 57, +119,114,115, 13,151,222,181, 39, 96,209,185, 11, 75,233, 93,168, 9, 13, 13,125,109,174,184, 92, 46,172, 86,171,221, 23, 34,129, + 72, 60,166, 93,143, 81,228,252,145,159,232,237,203, 71, 38,104, 51, 99, 55,190, 67, 59,179, 9,192, 45, 66,200,195,217,179,103, + 55,244,246,246,246,158, 59,119,174,131, 82,169,228,175, 91,183, 78,159,157,157,157,174, 84, 42,111, 80, 74,117,246,107, 70,154, + 1,244,145,122, 87,111, 75, 15,253,212,209,197,163, 66, 39,153,103,197,170,242,172, 87, 9,138,172,212,179, 0,206, 23, 12, 20, + 89, 46,194,195,195,131, 56, 28,206, 64, 0,181, 37, 18, 73, 53,169, 84, 42,162,148,134, 18, 66, 98,108, 54, 91,116,205,154, 53, +143, 3, 40,215,241, 75,186,188,205,208,106,194,150, 61,185, 90,155,192,200, 17,236, 73,186,188,205, 0, 0, 25,103,167,105, 1, +252,234,221,118, 70,159,163, 55,146,214,196,228,201, 38,103, 94, 90,124,180,188,101,150,191,188, 87,237,125,213,127, 93,106, 76, + 10,128, 17, 18,239,144,229, 15,162,110,204, 35, 20,124, 43, 44, 11,181, 25,113,119,223,135, 62,159,207,215, 87,168, 80,161,216, +222,133, 34,145, 72, 95,250, 49,191,108, 1,176,153,144, 54,219, 15,239,223, 62,226,200,209, 95,191,109,213,190,151,187, 67,197, +138,168,236, 69,176,125, 70,253,201, 23,162,178,110,247,248,226,234,143,241,169,250,104, 74,105,185,242, 97, 84, 42, 85, 44, 33, + 36, 79,173, 86,247,164,148,190, 36,132,248,231,229,229,221, 51,155,205, 15,202,109, 8,108, 24,210,180,105,163,221,132, 16, 30, +181,216,150,222,224,115,247,232,211, 30,167,188,141,177, 40, 74, 88,101,103, 76,153,187,186,126,213,106,213,235, 23,206,117, 88, +171,146, 19,198,125,185,188,126,165, 42,193,245,255, 51,255,161,180,172,115,146, 18, 66, 70, 30,222,178,244,106,212,205, 75,179, + 60,124, 43, 85, 74, 79,137,127,252,242,217,189,111, 44, 58,197,225,119, 61,206,137,207, 98, 86,110,254,254,203,105,105,175, 18, + 54,107, 50, 99, 31, 2,128, 38, 51,246,161,163,119,245,175,178,211, 83,166,229,100,198,127,255,182,251, 66,163,209,164,238,218, +181,203,165,121,243,230, 28,111,111,111,100,101,101,225,210,165, 75, 54,155,205,246,170,188, 90,234,156,248, 75,132, 84,117,251, +121,227, 15, 75, 5, 18,167,174, 22,139,197,143, 82,128,199,227,165, 25,181,202,211, 42,142,228, 11,154,155, 88, 70,189,180, 17, + 0,156,194,185, 11,109, 54, 27, 89,186,102,123, 18,223,193,169,216,249, 17,205,122,149,163,205,102,179,123,174,195,188, 23,119, +171,190,183,155, 53,165, 11,234, 54,104, 50,203,108, 54,233,145,159, 47,166, 7,160,167, 20, 57, 28, 14,185,194,181,153,207, 40, +222,225, 97,138, 16, 56, 83,194,131,147,152, 7, 2, 2,181, 34,151,150, 39, 39,171,216,227,157,241, 52,134,144, 54,129,167,140, +251,135, 95, 60,119,178,191,213,106,173, 92, 80,115, 18, 13, 58,205, 1,117,154,235,207,148,222,177,224,159,207,137, 66,179,197, + 43,229,196,142, 69,254,220, 62,255,211,228, 36,220,110,240, 62,245,210, 50,114,183,119,238, 53,141, 38, 38,101,222, 78, 78, 55, +252, 92,116, 90,157,119,213,124,249, 50,235, 82, 65,115,161,225,207, 17,138,183,235, 93,248,218, 24,235,117,223,173,154, 61, 8, +122,157,102,135, 54, 51,118,251,251, 49,177, 84, 7,224, 10, 33, 68, 54, 97,194,132,112,169, 84,202,207,206,206,190, 69, 41, 85, +188,173,166, 58, 35,246, 18,128, 75, 0,102,188,143, 50, 70, 69, 69,197,215,171, 87,111, 39,135,195,169, 76, 41,245,166,148,202, + 10,140,108, 54,143,199,123,245,232,209,163, 87,111,181,237, 6,167, 83,106, 35, 55,216, 66, 93, 79,255,201,124,184,123,157,123, +145,107,253,137, 43,113,248,159,201, 49,208,100, 60,141, 1,208,247,125,235,150, 54, 78,150,253,245,232, 63,134,235,242,137,109, + 35, 56, 66,217,194,246, 33,122,109,167,207, 94,125,115,237, 65,214, 45, 74,169,234, 29,234,104,150, 80, 40,212, 17, 66,252, 5, + 2,129,206,104, 52, 70,191,213,254,203, 55,249,158,239,115,223,217, 64,238,214,175,223,160, 92,235,219, 17,201,219, 94,176,188, + 87,212,233, 79,190, 65, 65,243,247, 31, 34, 20, 25,177, 11, 1, 44,124, 23,237, 59,119,238, 28,251,254,251,239, 21,107,214,172, + 9,176, 90,173,142, 70,163, 81,171,211,233, 18, 83, 82, 82,126,127,187, 99,254,220, 8,224,211,130,229, 45,162, 46, 79,210,165, +222,213, 87, 55,107,218,236,211,252, 7,116,186, 58,241,202,234, 41,165,125, 71,234, 93, 93, 87,116,253,210,230, 58,124,175,199, + 37, 51,118, 61,128,245,127, 93,164,194,150, 53,164, 95, 79,160, 96, 96,110,155,197,146,245, 94,100,243,207,249, 45,120,203, 73, +210,255, 9, 80, 74,211, 0,108, 42, 48,204,244, 47,251, 33,123,243, 85,152, 38,211,100,154,255, 46, 77,123,102, 39, 96,251,147, +105,254,149,154, 98,191,154,254, 0, 96,207,164,235, 37,173,207,246, 39,253,215, 36,180,219,177, 63,198, 22, 99,182,236, 27,176, +148,193, 96, 48,254,130,167, 61, 27,219, 11,140,255, 38,246, 26,172,183, 93,159,241,175,187,166,149,152, 19, 77,144, 63, 11,118, +113, 95,178,219,169, 18, 66, 58,188, 69,161,206, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,223,165, 89,150,246,223, 49, 82, + 86, 76, 68,235, 68, 65,243, 97,254,192,108,127,213, 2,160, 3,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,191,105, 1, + 48,182,240,127, 14, 24, 12, 6,131,193, 96, 48, 24,127, 9, 44, 71,139,193, 96, 48, 24, 12, 6,227, 29, 40,174,233,144, 25, 45, + 6,131,193, 96, 48, 24,140,247, 64,105,201,240,172,233,144,193, 96, 48, 24, 12, 6,227, 29, 40,140,104, 17, 66,124, 9, 33, 99, +139, 70,184,152,209, 98, 48, 24, 12, 6,131,193,120, 15, 80, 74,211,222,140,110, 17, 74, 41, 78,156, 56, 65, 35, 34, 34, 8,128, + 63,252,207, 96, 48, 24, 12, 6,131,241,255,193,223,217,139, 16, 66,124, 1, 68, 20,221,156,194,225, 29, 56, 69, 55,144, 29,102, + 6,131,193, 96, 48, 24,255, 77,179,245,119, 44,119, 97, 36,171,200,242,122,210,236,215, 70, 43, 34, 34,130, 48,179,197, 96, 48, + 24, 12, 6,227,191,197, 63,209,139,112,222,220, 64,118,152, 25, 12, 6,131,193, 96,252, 55,205,214, 63,105,123,216,240, 14, 12, + 6,131,193, 96, 48, 24,239, 64,105, 57, 90,164, 96,168,120, 6,131,193, 96, 48, 24, 12,198,219, 25,173,177, 69,123, 27, 22,125, +205, 34, 90, 12, 6,131,193, 96, 48, 24,239,193,108, 21,251, 62,139,104, 49, 24, 12, 6,131,193, 96,252, 53,252,165, 3,150, 18, + 66, 58, 48, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254,147, 41, 28, 17,190,224,255,177, 5, 57, 91,127,189,209, 98, 48, + 24, 12, 6,131,193,248, 23, 16, 65, 41,221, 84, 36, 55, 43,130, 25, 45, 6,131,193, 96, 48, 24,140,247, 72,113,147, 75, 51,163, +197, 96, 48, 24, 12, 6,131,241, 30, 13, 86,209,215,204,104, 49, 24, 12, 6,131,193, 96,252, 69, 48,163,197, 96, 48, 24, 12, 6, +131,241, 23, 65, 0, 20,219,115,128, 82,122,222,110,145,183,232,125, 80,150, 62,211,100,154, 76,147,105, 50, 77,166,201, 52,255, +121,154,101,105,151,199,127,252,207,152,169,255,140, 12,127,162,224,239,127,154, 15, 41,165,127,217, 2,160, 3,211,100,154, 76, +147,105, 50, 77,166,201, 52,153,230, 63,121, 1, 48,182,232,223,162, 11,107, 58,100, 48, 24, 12, 6,131,193,120,247,168, 86,209, +113,180, 94,143, 18,207,166,224, 97, 48, 24, 12, 6,131,193,120, 7,138, 27,214,161, 16, 22,209, 98, 48, 24, 12, 6,131,193,120, + 7,222,156,231,176,232,107,102,180, 24, 12, 6,131,193, 96, 48,254, 2,195,197,140, 22,131,193, 96, 48, 24, 12,198,123, 52, 89, +127,138,110, 21,100,201,227,196,137, 19, 52, 34, 34,130,176, 93,197, 96, 48, 24, 12, 6,227,191,193, 63,209,139,112,138,110,216, +137, 19, 39, 40, 59,204, 12, 6,131,193, 96, 48,254, 91, 38,235,239,232, 69, 8, 33,190,133,189, 13, 11, 22,223,194,207, 88,175, + 67, 6,131,193, 96, 48, 24,140,119, 35,162,104,207,195,130,230,195, 77,204,104, 49, 24, 12, 6,131,193, 96,188, 7,138, 75,132, + 7, 88,142, 22,131,193, 96, 48, 24,140,255, 17,254,137, 94,228,181,209, 98, 48, 24, 12, 6,131,193, 96,188,133,153, 42, 38,154, + 85,216,148,200,140, 22,131,193, 96, 48, 24, 12,198,123, 50, 92,111,142, 18,207,198,209, 98, 48, 24, 12, 6,131,193,248, 11, 76, +214, 95,110,180, 8, 33, 29,152, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,233, 38,171,240, 47,155, 84,154,193, 96, 48, + 24, 12, 6,227, 61,194, 38,149,102, 48, 24, 12, 6,131,193,248,139, 96,147, 74, 51, 24, 12, 6,131,193, 96,252, 63, 27, 46,102, +180, 24, 12, 6,131,193, 96, 48,222,163,201,122,211,108,177, 28, 45, 6,131,193, 96, 48, 24,140,119,160,180, 28, 45, 2,160, 67, + 9, 95, 58, 95, 14, 23,215,225, 45, 10,117,158,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 46,205,178,180,203,227, 63,254, + 87,249,195, 80, 15,148,210,191,108, 1,208,129,105, 50, 77,166,201, 52,153, 38,211,100,154, 76,243,223,180, 0, 24, 91,248, 63, +107, 58,100, 48, 24, 12, 6,131,193,120,199, 8, 86, 73,159, 49,163,197, 96, 48, 24, 12, 6,131,241, 14,176,113,180, 24, 12, 6, +131,193, 96, 48,254, 34, 8, 33,190, 5, 35,194, 23,254, 13,103, 70,139,193, 96, 48, 24, 12, 6,227,253, 16, 81, 16,213, 42,252, +203,140, 22,131,193, 96, 48, 24, 12,198,251,162,164,113,180, 8,165, 20, 39, 78,156,160, 5,175,219, 68, 68, 68, 92, 97,187,139, +193, 96, 48, 24, 12,198,255, 39,255, 84, 47,242, 58,162, 21, 17, 17, 65, 0, 92,102,135,154,193, 96, 48, 24, 12,198,127,131,127, +162, 23,225,188,225, 36,219,176,195,204, 96, 48, 24, 12, 6,227,191,193, 63,209,139,240,222,112,145, 12, 6,131,193, 96, 48, 24, +255, 21,254,174, 94,132, 16,226, 11, 32, 2,192,137,130,191,175,135,124, 96,227,104, 49, 24, 12, 6,131,193, 96,188,163, 71,164, +148,110,250,195,212, 59,133, 38,172, 96,168,120, 6,131,193, 96, 48, 24, 12,198, 91, 80,220,200,240,133,134,139, 25, 45, 6,131, +193, 96, 48, 24,140,191, 8,214,116,200, 96, 48, 24, 12, 6,131,241,142, 20,141,106, 21,109, 62,228,252,197, 63,218,129,105, 50, + 77,166,201, 52,153, 38,211,100,154, 76,243,159,110,178, 40,165,155, 10,151,162,166,139,141, 12,207, 96, 48, 24, 12, 6,131,241, + 23,193,154, 14, 25, 12, 6,131,193, 96, 48,222,129, 55,163, 88, 69,155, 14,153,209, 98, 48, 24, 12, 6,131,193,120, 15,102,171, +184,247, 89,211, 33,131,193, 96, 48, 24, 12,198, 59, 80,220,240, 14,204,104, 49, 24, 12, 6,131,193, 96,252,197,134,139, 0, 40, +182,231, 0,165,244,124, 57,132,203,221,251,160, 44,125,166,201, 52,153, 38,211,100,154, 76,147,105,254,243, 52,203,210, 46,143, +255,248, 95, 54, 88,175,155, 18, 41,165,127,217, 2,160, 3,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,191,117, 97, 77, +135, 12, 6,131,193, 96, 48, 24,127, 17,118, 27, 45, 66,136, 39,159,207,159,229,232,232,248,163,163,163,227, 70, 62,159,255, 61, + 33,196,181,188, 63, 40,149, 74, 39,251,250,250, 62,241,245,245, 77, 9, 12, 12, 60,233,236, 44,249,172,170, 3,105, 69, 8,225, +191,135,208, 29,135, 16, 18, 66, 8,249,204,209,209,241,177, 88, 44, 78, 34,132,236, 36,132,124, 70, 8,241,120, 23,237,133, 21, + 72,223,152,207,122, 29, 89, 88,129,244,125,227, 55, 35,124,124,124,174, 17, 66, 58,189,175,131, 50, 88, 66, 58,244,151,146,228, +254, 82,146, 60, 88,242,246,131,194, 57, 59, 59, 15,243,243,243,187,225,225,225,241,202,207,207,239, 55,177, 88,220,175,156,251, +211,203,199,199,103, 89, 64, 64, 64,108,133, 10, 21, 86, 21,204, 78,254, 63, 75, 43, 7,210,178,169, 3,201,106, 38, 34,170, 22, + 34,242, 99, 51, 17,233,216,137, 16,199,183,172, 75, 45, 8, 33, 7,101, 50,217, 61, 62,159,127,156, 16,210,167,160,126,245,225, +243,249,199,101, 50,217, 61, 66,200, 65, 66, 72,139,183,172,167,203, 8, 33,175, 8, 33,139, 11, 94,127, 18, 16, 16,160,170, 91, +183,110, 82,221,186,117,183, 5, 7, 7,127,104,175,158, 68, 34,233, 24, 16, 16,112, 40, 48, 48, 48,169, 89,179,102,185, 21, 43, + 86,124,234,239,239,191,221,193,193,161, 13,187,196, 49, 24, 12,198,127, 25, 59,194,131,221, 1,124, 11, 96,109,116,116,116, 36, +165, 52,146, 82, 26, 25, 29, 29, 29, 9,224, 71, 0, 75, 80, 66, 8,241,205,247,221,221,221, 23, 44, 92,184, 80,159,150,150, 70, +179,178,178,104,108,108, 44, 93, 57,231, 75, 91,103, 55, 30, 13,242,116,213,250,250,250, 62, 15,172, 88,113,111, 45, 41,231, 75, + 0, 85,203, 19,174, 4,224, 42, 22,139,111,205,153, 51, 71,125,237,218, 53,181,209,104, 84,219,108, 54,117,106,106,170,250,252, +249,243,234,230,205,155,171, 1, 76, 1,192,125,155, 16,232,215,126,184, 66,183,124, 69,191,246,195,149,162,239,135,134,134, 62, +178,217,108,180,111,223,190, 6, 0, 21,222, 37,172, 90, 1,112,168,229, 12,151,126, 82,100, 88,182,127, 67,233,186,105,180,159, + 4,201,111,163,233,229,229,245,235,228,201,147,149,175, 94,189,162, 6,131,129, 38, 39, 39,211,113,227,198, 41,188,188,188,118, +217,185, 63,221,195,194,194, 50,110,220,184, 97,147,203,229,244,242,229,203,182,218,181,107,103, 0,240, 45,111, 72,217,203,203, +107,147,159,159,223,201,242, 44, 94, 94, 94,155,203,123,140, 26,139,144,108,138,188, 68,233,157,179,244,104,223,166,116,101,131, +138,180,143,155, 80,222, 66,136, 79, 90, 3,188,114,212,165,254,173, 91,183,214, 60,120,240,192,154,147,147, 67, 31, 61,122,100, + 27, 51,102,140, 30, 64,204,152, 49, 99,244,143, 30, 61,178,229,228,228,208, 7, 15, 30, 88, 91,183,110,173, 1, 48,218,222,114, + 22, 60,220,108,157, 63,127, 62,165,148,210,133, 11, 23,210, 58,117,234,208,118,237,218, 81,181, 90, 77, 41,165, 73,148,210,109, + 22,139,101,132, 61,154, 50,153,108,216,228,201,147,213, 90,173,150, 22, 98,179,217,168, 92, 46,167,107,215,174,213,248,248,248, +156, 4,224,193,154, 39,152, 38,211,100,154,172,233,240, 47, 77,149,242, 5, 48,182,200,242,250, 94, 89,214, 23, 7,127,249,229, +151,133,166,234, 84,139, 22, 45,110,143, 24, 49, 34,114,196,136, 17,145, 45, 90,180,184, 12,224,204,221,187,119, 35,167, 79,159, + 30, 9, 96,112,105, 7, 2,128,107,179,102,205,228,233,233,233, 52, 56, 56,152, 86,170, 84,137,166,167,167, 83, 74, 41,189,211, +191, 62,189, 80, 3,244,229,213, 83,244,236, 47, 7,233, 24, 95, 30,109,233, 43, 51,251,250,248,228,120,120,120, 44, 66,193,228, +215, 37, 29, 92, 0,189,107,212,168,161,138,137,137, 81,199,197,197,169, 23, 44, 88,160,110,215,174,157, 58, 44, 44, 76,221,167, + 79, 31,245,154, 53,107,212, 38,147, 73,189,121,243,102,181,179,179,115,204,155,102,235, 93,140, 22,143,199, 91, 29, 29, 29, 77, +159, 63,127, 78, 1, 44, 43, 73, 19,128,204,197,197,165,139,171,171,235, 20, 23, 23,151, 46, 0,100,148, 82, 4, 3,210,186, 50, + 4,124, 82, 55, 40,244,248,224, 14, 85,215,118,104, 88,191,159, 19, 71,110,254, 97, 26,165,125, 3,222,202,104,201,100,178, 97, +159,125,246,153,202, 96, 48, 80,173, 86, 75,213,106, 53,213,106,181, 84,165, 82,209,193,131, 7, 43, 29, 28, 28,122,151,165,233, +225,225,241,205,213,171, 87, 45,233,233,233,244,234,213,171,244,228,201,147,116,221,186,117, 54, 47, 47,175, 21,229, 61, 1,125, +124,124,206,157, 61,123, 54, 50, 42, 42, 42,242,214,173, 91,145,102,179, 57,210,100, 50, 69,154, 76,166,200,227,199,143, 71, 30, + 62,124, 56,114,223,190,125,145, 70,163, 49,210,104, 52, 70, 26, 12,134,200, 42, 85,170,156, 46,239, 49,106, 36,194, 75,227,181, +163,148,174,152, 72, 21,223,141,167,242,169, 93,105,230,184, 86,244,199,134, 21,105, 43, 49,142, 21,173, 71,165,105,242,249,252, + 43, 73, 73, 73,182,153, 51,103, 26,107,214,172,169, 24, 57,114,164,222, 96, 48, 80, 74, 41, 53, 24, 12,116,228,200,145,250,154, + 53,107, 42,102,206,156,105, 76, 76, 76,180,241,120,188,243,229, 48, 90, 75, 10, 77,214,149, 43, 87,104, 81,212,106, 53,109,215, +174, 93, 82,157, 58,117,182, 85,174, 92,121, 72, 89,154, 82,169,180,231,140, 25, 51,212,180, 24,204,102, 51, 85,169, 84, 52, 49, + 49,209, 86,169, 82,165, 84, 0,238,236, 98,206, 52,153, 38,211,100, 70,235, 47, 51, 90, 99, 75,122, 93,234, 78,156, 62,125,122, + 36,165, 52,114,246,236,217,145, 5,145, 45, 1, 0,105,193,194, 3, 48,104,198,140, 25,145,148,210,200, 47,191,252, 50, 18, 64, +247, 82,140, 86,247, 3, 7, 14,152, 86,173, 90, 69,189,189,189,169,143,143, 15, 93,189,122, 53,181,217,108, 52,253,248, 46,122, +161, 6,232,227, 89,195, 41,165,148,198, 46,154, 68, 47,212, 0,141, 95,255, 53, 29, 58,116,168,214,209,209,113,112, 41, 6,198, +173,126,253,250, 42,157, 78,167,222,190,125,187,218,209,209,241, 14,128,154, 0,248,200,239, 85, 41, 5,240, 97,205,154, 53,149, + 15, 31, 62, 84,239,217,179, 71, 13, 96,129,157,145,141,170, 0,218, 74, 36,146, 62, 51, 42,240,227,232,150,175,232, 12,111, 60, + 0, 80, 27,128,103,193, 58,126, 95,126,249, 37,165,148, 82,127,127,255,171, 37,108,187, 44, 44, 44,236,203,184,184,184,121,102, +179,121, 94, 84, 84,212,188,234,213,171,207,236, 81,197,183,233,145,193, 29,195, 21, 95,143, 15,167,203,167,134,125,255, 65,163, + 14,123, 7,182, 25,252, 81,101,143,107, 35,189, 28,180, 3,100, 92,213, 32,199, 63,232,216, 85,177, 43, 84,168,112, 43, 57, 57, +249,181,185, 82,169, 84,244,213,171, 87, 52, 33, 33,129, 94,187,118,141,250,250,250, 94, 40, 75,211,199,199,231, 81,114,114, 50, + 93,191,114, 37,237, 91, 59,148,182,114,113,162,173, 93,157,104, 3,169,131,166, 6,208,160,188, 70,235,222,189,123,145, 0, 34, + 1, 68,230,228,228, 68,230,228,228, 68,230,229,229,189,126, 15, 64,164, 66,161,136, 84, 40, 20,145, 70,163, 49, 50, 40, 40,168, +220, 70,171,185, 3,154, 55,118, 64,110, 83, 17,116,221, 43,120,164,142,175,226, 97,189, 57,184, 41,205,155,216,142,174, 10,175, + 64, 91, 8,241,137,157,199,189,187, 80, 40,188, 12, 96, 26, 0, 46,128,225, 93,186,116,209, 82, 74,105,151, 46, 93,180, 0,134, + 23,188,255, 25,143,199, 59, 15,160,139, 61,229, 4,192,169, 86,173,154,166, 48,146, 5,224,247,106,213,170,105,234,212,169, 67, +235,212,169, 67,253,253,253, 85, 0,134,219,123, 65,171, 90,181,106,172, 78,167,123,109, 0,229,114, 57, 77, 77, 77,165,241,241, +241, 52, 38, 38,134,222,185,115,135, 38, 37, 37,209,253,251,247, 91, 93, 92, 92, 78,176,139, 57,211,100,154, 76,147, 25,173,191, +206,104,189,185,252,201,104, 29, 63,126,156,190,241,165,239,238,222,189, 27, 57, 99,198,140,200, 55,157,218,155,226,179,103,207, + 46,140,122,125, 91,202,205,127,115,108,108, 44, 29, 62,124, 56, 13, 9, 9,161, 33, 33, 33,116,196,136, 17, 84,161, 80, 80,245, +179,135,244, 66, 13,208, 59, 3, 26, 80, 74, 41, 85, 61,142,162, 23,106,128, 70, 14,109, 70,239,223,191, 79, 43, 86,172,120,182, +148,223, 63,246,219,111,191,101,237,218,181, 43, 29,192,206, 2,131,213, 4,192,106,177, 88,188,181,160,185,176, 18, 0,215,224, +224,224, 92,173, 86,171,238,219,183,175, 26, 64, 64, 41,154,173, 67, 66, 66,158,111,222,188,153,102,102,102,210,220,220, 92,186, +180,121,117, 74,183,124, 69, 23, 54,168,100, 91,191,126,189, 97,218,180,105, 26, 55, 55,183,227, 0,252,250,246,237,107,161,148, +210, 86,173, 90,101, 20,167,231,226,226,210, 37, 46, 46,110,158, 94,175,159, 39,151,203,231,229,230,230,206, 59,122,228,200,188, +206,181,171, 15, 87,124, 61, 62,252,200,224,142,225, 31, 84,112,237,179,162, 83,195,143, 95,205, 28,221,119,118,179,154,143,245, + 75, 62,189,212,191,138,247,178,183, 57,224,158,158,158,105, 6,131,129, 2,248,211,242,252,249,115,234,238,238,158, 92,150,134, +155,155,219,236,207, 6, 13,180,246,174, 84,129, 62, 95, 53,135,154,207,237,161,230,147,219,233,179,239,166,210, 30, 62, 30,202, + 38, 2,206, 12,123,203,227,227,227,115,238,214,173, 91,127, 48, 90,121,121,121,197, 26, 45,165, 82, 25,105, 52, 26, 35,171, 85, +171,118,250, 93, 43,126, 19, 33,130, 90,139,185,119,162,134,183,164, 89,227,219,209, 46, 50,126,210, 59,156, 68,131, 0, 92, 6, + 48,180,156,223,227, 0, 88, 82,104,168,190,251,238, 59, 74, 41,165,213,170, 85,211, 0,224,188, 67,121,100,161,161,161, 9,163, + 71,143,182,212,168, 81, 35,179,121,243,230,242,219,183,111,211, 43, 87,174,208,147, 39, 79,210,131, 7, 15,210,135, 15, 31,210, + 87,175, 94,209,216,216, 88, 26, 17, 17, 33, 7,208,154, 93, 16,217,194, 22,182,252, 47, 47,111,122,145,127, 76,175,195, 19, 39, + 78,208,136,136, 8,114,226,196, 9, 90,144,172, 43, 3,224,208,160, 65,131,172, 37, 75,150, 44, 47,152,195,135,212,225,145,254, +237, 29,249,247,219, 59,242,239,215,225,145,254,132, 16, 66, 41,221,180,104,209,162,111,234,212,169,147, 6, 64, 76, 8,241, 41, + 33, 23,172,165,187,187, 59,146,147,147, 33,147,201, 32,147,201,144,156,156, 12, 74, 41, 44, 20, 48, 83,192, 96, 50, 65,167,211, + 65,111,163,208,217, 0,165, 90, 13, 31, 31, 31,152, 76,166,160, 18,146,138,235, 14, 24, 48, 32, 40, 44, 44, 44,107,250,244,233, +169, 0, 70, 3,216, 58,106,212,168,115,191,255,254,123,152, 90,173,206,141,137,137,209,215,174, 93,187, 11, 0,159,184,184,184, + 97,107,215,174,197,240,225,195, 1,160,117, 9,154,181, 35, 34, 34, 78, 62,124,248, 48,104,232,208,161,184,124,249, 50,150, 46, + 93,138,236,236,108, 10, 0, 6,131,129, 90,173, 86, 83,179,102,205, 76,171, 86,173,106,212,170, 85,171, 91, 85,170, 84,225, 2, + 64, 66, 66,194,179, 18, 52,171, 7, 6, 6,194, 96, 48, 32, 43, 43, 11, 15, 31, 62,132,147, 76,134,232,212,108,239, 54, 43,214, +231,204, 58,114,142, 63,168, 81,152,219,148,142,205, 13,139,207, 94, 14,174,233,231,237,109, 52,153,125, 98,211, 50, 82,223, 38, +239, 78, 32, 16, 36,103,103,103,195,104, 52, 66,167,211, 65,169, 84, 34, 39, 39, 7,217,217,217, 72, 77, 77,133, 64, 32,120, 94, +102, 34,125,110,238,213,132,223,174,144,253, 27,190, 67,144, 37, 23,188, 67,171,193,251,245, 71, 84, 53,102, 97,227,156,113, 78, + 70,119,207,249, 50,103,231, 60, 87, 87,215, 77,132,144,106,101,233,133,135,135, 35, 39, 39, 7, 57, 57, 57,112,119,119,135,171, +171, 43, 92, 93, 93, 33,151,203,161, 80, 40,160, 84, 42, 17, 28, 28,140,186,117,235, 98,199,142, 29,239, 37,255,240,134,129,198, + 91, 96, 29,127,238,105, 42, 4, 18, 9,170,184, 74, 3, 27, 57, 17,183, 82,146,212,219, 9, 4,130, 3,238,238,238,103, 9, 33, + 19, 9, 33, 18, 66,200, 68,119,119,247,179,124, 62,191, 23,128,133,148,210, 93,229, 44,198,226,249,243,231,127, 25, 23, 23,231, +120,255,254,125, 76,159, 62, 29, 11, 22, 44,192,179,103,207,126,160,148,218, 10,126,119,130,135,135,199,113, 46,151,251, 19, 33, +164, 43, 33,164,139,159,159, 95,251, 50,116,123, 77,155, 54, 77, 95,191,126,253,216,199,143, 31,247,250,237,183,223, 26, 76,157, + 58, 85,241,226,197, 11,196,198,198,194,215,215, 23,254,254,254, 80,171,213,200,203,203, 67,175, 94,189,100,206,206,206,131, 89, + 86, 42,131,193,248, 95,229, 77, 47,242,119,226,205,113,180,138,190, 46,182,215,161,163,163,227,252,200,200,200,166,117,234,212, +225, 1,216, 15, 0, 97, 92,244,235,213,172,222,214, 35,155,190,171,115,120,213,156, 58,157,235, 4,111, 13,227,162,176, 23,219, +241, 6, 13, 26,184, 70, 70, 70, 54, 19,137, 68,159,148,148,119, 15, 0,174,174,174,144,201,100,112,113,113,129,171,171, 43,108, + 54, 27,212, 90, 61, 52, 86, 64,165, 55, 66,161, 80, 64, 85,240, 90,109, 48, 65,163,209,188,254,110, 49,180, 25, 61,122,116,214, +218,181,107, 51,211,210,210,190, 3, 80,123,248,240,225, 61,215,172, 89,131,139, 23, 47,234,187,134, 84,117, 95,212,178,222, 55, + 53,211,158,205, 11,225, 99, 12,128,171, 87,175, 94, 69,179,102,205, 64, 8, 25, 88,156,160, 88, 44,254,113,239,222,189,226,152, +152, 24, 84,173, 90, 53,102,224,192,129,253,191,251,238,187, 32,137, 58,247, 58, 0, 88,114,210, 99, 38, 77,154,244,213,162, 69, +139,178,178,178,178, 76, 90,173,214,171, 71,143, 30, 72, 78, 78,198,171, 87,175,126, 47,193,100,198, 70, 69, 69, 81,133, 66,129, +248,248,120, 68, 69, 69,137,191,250,234,171, 70, 86, 14,167,103, 10,156, 62, 26,222,188, 65,163,161, 77,234, 97,215,141,251,130, +107, 79, 19, 92, 26, 84,170,224,122,239,101, 90,101, 51,193,243,183, 57,224, 42,149,106,245, 55,223,124,163, 86,171,213, 72, 73, + 73,193,131, 7, 15,240,248,241, 99, 36, 37, 37, 97,233,210,165,234,220,220,220, 53,101,105,248, 57,240, 62, 95, 54,117, 20,225, + 61,250, 29,184,127, 5,208,170, 0,157, 26,134, 39,145,216,246, 36, 29,235, 14,253, 34,124,145,156,236,178,111,223,190,209, 1, + 1, 1,145,132,144,224,178, 58, 93, 0, 0,135,195,121,179,114,130,195,225,168, 0,164, 75, 36,146,151, 78, 78, 78, 47, 57, 28, + 78, 58,165, 84,243, 62, 42, 63,199, 2, 19,184, 92, 64, 40, 6,135,207, 43,237, 36,233, 63,112,224,192,189, 47, 95,190,236, 28, + 31, 31,223,116,205,154, 53,223, 56, 56, 56, 68,175, 89,179,230,155,248,248,248,166, 47, 95,190,236, 60,112,224,192,189,132,144, + 15,203,243,251,213,170, 85,155, 52,111,222, 60, 44, 93,186, 20,117,235,214, 69,112,112,176,118,254,252,249,171, 1,204, 33,132, +124, 18, 28, 28,124,125,210,164, 73, 35, 51, 51, 51,125, 82, 82, 82,234,254,240,195, 15,227, 86,175, 94,221, 48, 53, 53,213,161, + 12,233, 22,157, 58,117,194,169, 83,167, 0, 32,141, 82, 26,159,147,147, 99, 73, 77, 77, 69,104,104, 40, 26, 53,106, 4,181, 90, + 13,181, 90, 13,185, 92,142,192,192, 64,216,108,182,166,236, 82,206, 96, 48, 24,255,127,134,171, 68,163,229,224,224,224, 26, 30, + 30,142, 42, 85,170,184, 22,228, 98,193, 93,200,155, 57,101,244, 32, 71,105,228,105,144,168, 11, 24,216,178,150,163,187,144, 55, +179,224, 43,188,192,192, 64, 81,120,120, 56, 36, 18, 73,133, 18,126,255,114,122,122, 58,194,195,195,225,226,226, 2,153, 76,134, +240,240,112,152, 76, 38, 40, 84, 42,104,172,128,214,108,131, 66,161, 64,110, 86, 6,180, 86,192,226,228,142,164,164, 36,112,185, +220,132, 18, 52,125,171, 86,173,154, 21, 29, 29,157, 5,224, 42,128,143, 23, 44, 88,128, 25, 51,102, 96,238,220,185,123, 29,211, + 18, 59,237, 61,245,171,251,238,249, 19, 60,131,133,100, 16, 0,211,203,151, 47,225,226,226, 2,137, 68, 82,172, 49,104,213,170, + 85,125,137, 68,130,237,219,183,211,148,148,148,230,148,210,131,148,210, 4, 66,242,205,158,152, 3, 5,165,116,117,100,100,100, +227,175,190,250,234,105,135, 14, 29,248, 77,154, 52,193,194,133, 11, 1,224,120,113,154,114,185,252,230,135, 31,126,104,188,116, +233, 18,158, 60,121, 34, 57,114,228, 72,191,133, 11, 23,214,122,241,226,133,232,216,201,211, 31,236,124,169,236,247,221,217,107, + 14,139,206, 92,190,233,225, 44,169, 89,217,195, 13, 81, 47, 94, 9,172, 92,220, 46,235,160, 54, 17,240, 70,183, 21,243,163, 90, + 57,112,211,218,138,249,145,141, 4,188, 81, 74,165,114,223,209,163, 71,207, 76,157, 58, 85,157,153,153, 9, 39, 39, 39,228,228, +228, 96,241,226,197,234,168,168,168, 67, 6,131,225, 88, 89,186, 86, 27,173,239, 95, 41, 0,120, 30,253,250, 61,147,141,226,182, + 81,128,110, 31,127,138,144,208, 80, 24,141, 70,212,174, 93,155, 44, 88,176, 64, 34,147,201,190, 40,211,244,112,254, 84,221, 44, +132,144,116, 74,233, 43,181, 90,157, 34, 22,139, 95, 8, 4,130, 23,185,185,185, 41,148,210,140,247, 80,225, 57,148,131,207,155, +213,174, 6,136,196,120,145,163, 78,189,173,162,185,197,173,235,228,228, 52,106,221,186,117, 14, 91,182,108, 49, 79,154, 52,201, + 48,110,220, 56,190, 78,167,243, 26, 55,110, 28,127,210,164, 73,134, 45, 91,182,152,215,173, 91,231, 32,149, 74,251,188, 77, 89, +204,102, 51,162,163,163,191,139,139,139,147, 80, 74, 63, 3,240,233,252,249,243,135,199,197,197, 57,172, 93,187, 22, 7, 15, 30, +196,193,131, 7,209,179,103, 79, 76,158, 60, 25,243,230,205, 43,109,187, 28,235,212,169, 19,238,238,238,142, 43, 87,174,164, 82, + 74, 95, 16, 66,234, 75,165, 82,167,158, 61,123,162,115,231,206,208,235,245, 48,153, 76,175,141, 22,151,203,133,139,139,139, 59, +187, 12, 50, 24, 12,198, 95,107,178,222, 52, 91, 60, 0, 40, 12,213, 69, 68, 68,144,210,110,140,214,188, 76,200, 53, 90, 36, 41, +180, 72,206,179,253,225, 51,155,205, 86,106, 1, 82, 83, 83,143,221,184,113, 99, 84,120,120, 56, 47, 53, 53,191, 69, 44, 60, 60, + 28, 90,173, 22,169,247,111, 65, 99, 3, 36, 85,195,160,209,104,144,247,248, 30,164,117,154,194, 61, 98, 40, 86,172, 93,107,200, +201,201,217, 80,156,166, 80, 40,228, 87,172, 88, 49, 43, 33, 33,193, 2, 32, 87, 38,147,117, 10, 8, 8,192,229,203,151, 1, 96, + 23, 5,150, 33,234, 18,112,229, 48,104,126, 72, 69, 26, 24, 24,136,204,204, 76,168,213,234,203,197,105,222,184,113, 35,206,108, + 54,215,238,209,163, 7,249,249,231,159,247, 19, 66,230, 2,120, 48,203, 7,220,251, 47, 51,160,177,194,129, 16,210,209,213,213, +245,179,121,243,230,181,159, 52,105, 18,142, 30, 61,138,179,103,207,154,144,159, 11,118,163,152,104,142,130, 16,178,113,218,180, +105, 77, 56, 28,206,199,231,206,157,179, 4, 7, 7, 43, 77, 38,147,181,122, 72, 8,103,238,130,175, 5, 19, 63, 30,235,146,163, +197,163,206,213,125,155, 17, 2, 60,122,149,249, 34, 78, 69,115, 74,219,167,173, 69,188,227, 3, 91,214,105, 53,106, 96,119,169, +164,106, 77,104, 30,222,242,217,120,224,228,138, 54, 98, 94,183, 12,157,165,167, 76, 38,235,119,249,242,229,137, 70,163,177,138, + 72, 36,122, 46,151,203, 87,169, 84,170, 50, 77, 22,143,199,139, 8,243,175,232, 42,207,205,133, 67, 65, 36, 74,105,182, 33,219, + 96,193, 19,151, 96, 12,174,232,255,186, 25, 52, 61, 61, 29, 62, 62, 62,196,106,181,118, 47, 77,243,236,217,179,232,214,173, 91, +161,241, 4, 33, 4,132,144,236,144,144,144, 12,145, 72,148, 35, 16, 8,148,203,150, 45,211,235,245,122,240,120, 60, 7,171,213, +202,125,151, 10,223, 88, 66,188, 90,137,201,143,227,122,180,237, 80,183,102, 40,189,122,231, 62,201,211,234,183,149, 18, 5,252, +161, 90,181,106,188,220,220,220, 99, 0,158,152,205,230,221,251,247,239,119, 24, 54,108,152,254,192,129, 3, 67, 0, 4, 45, 95, +190,188,159, 90,173,222, 84,158,114, 60,123,246,236,135, 69,139, 22,125, 57,123,246,108,236,216,177, 99, 18,128, 25, 5,145,174, +158,243,230,205,195,178,101,203,176, 99,199, 14,219,147, 39, 79, 78,218,108,182,103, 83,167, 78,173,227,237,237,157,157,150,150, +246,108,193,130, 5, 37,201, 54,232,210,165,139,225,250,245,235, 66,149, 74,117,141, 16,242,217,248,241,227, 71, 55,110,220, 88, + 57,112,224, 64,105,110,110,174,220,209,209, 81,184,121,243,102, 87, 30,143, 7,141, 70, 3, 66, 8, 84, 42,149,145, 93, 10, 25, + 12,198,255, 42, 37,121,145,191, 3,175,167,219, 41,238,158, 90,220, 6,106,181,218,140,228,228,228,208, 87,175, 94, 89, 0, 88, + 0, 32,199,104,249,118,209,230,195, 91,250, 52,169, 38, 73, 51,155,113,228, 78,140, 54,199,104,249,182, 48, 50,241,234,213, 43, +213,139, 23, 47,156,116, 58,157,186,132,223,250,253,199, 31,127,212, 93,186,116,201, 41, 62, 62, 30, 86,171, 21,245,235,215, 71, +108,108, 44,242,158, 68, 67, 18, 90, 31,146,214,221, 16, 19,121, 7, 81,103,207, 35, 81,109,180, 60,157,179, 72,161,214,104,230, + 25,141,198, 35,197, 9,242,249,252,220,252,237,163, 86, 0, 80, 42,149, 15,212,106,117, 75,111,111,111, 60,122,244, 72,162,177, + 98,114,191,153, 43,214, 80, 74,173,130,252,158, 98, 83, 6, 14, 28,136,187,119,239, 2,192,221,226, 52,149, 74,229,164, 49, 99, +198, 92,218,190,125, 59, 47, 62, 62,190,243,150, 45, 91, 58, 63,125,250,148,146,220,100,235,117, 45, 31, 65,195, 39, 55, 92, 31, + 24,114,182, 91,183,110,240,245,245,197,230,205,155,177,106,213, 42,243,132, 9, 19,226, 86,173, 90,213, 16,192,238, 18, 14,130, + 2,192,105, 15, 15,143,137,181,106,213, 82,105, 52, 26,228,228,228, 32, 53, 53, 21,110,238,238, 28, 11, 56,205, 60, 93, 92,118, + 31, 75, 87, 73,120,167,111,226, 86, 74, 90,169,209,172,166, 2,222,135,131,218,212,107,245,201,236,153, 82, 92, 63, 2, 50,102, + 30,232,150,111,240,233,136,126, 78,122,195,238,214, 13,120,188, 97, 10,139,101, 39,128,131,229,116,228, 93, 90,182,108,185,119, +209,162, 69,226, 89, 75, 23, 97,121,104, 5, 88,114,114,144,101,176, 34,219, 96,129, 50,239, 9, 30, 61,138,129,187,187, 7, 18, + 19, 19,161,215,235,241,248,241, 99,202,229,114,143,149, 21,209, 41,242, 27,133,205,133,114,145, 72,148,195,231,243, 51,120, 60, + 94,110,124,124,188, 70,175,215,131,195,225, 72,172, 86,171,216,142,178, 86,244,240,240,152, 10,160, 15,128,163,170,236,236,213, +225,124,184,128,135, 54, 85,188,220, 63,152, 51,110,152, 71,128,159,151, 60, 62,238,185,121,195,153,223,178,245, 6,124, 91,202, + 73,114,188,104, 68,146, 16,242,233,129, 3, 7, 70, 3,216, 90, 48,239,214,121, 0,235,223,226,252,155,115,232,208,161, 47,103, +207,158, 13,177, 88,252,122,240, 84,177, 88,236, 0, 0,123,246,236,193,163, 71,143, 26, 23,230,107, 1,216,107,135,102, 80, 88, + 88, 88,252,225,195,135,133, 0,252,198,143, 31,223,116,205,154, 53, 24, 49, 98, 68, 86, 76, 76, 76,147,252, 8, 44, 9,250,248, +227,143,111,239,216,177,195,213,102,179, 33, 47, 47, 15, 70,163, 49,129, 93,202, 25, 12, 6, 51, 91,127, 73, 52, 43,156, 82, 26, + 85, 48,176,119, 4,128, 19,148,210,180, 63, 24,173,194, 13, 4, 0,189, 94,255, 67, 96, 96,160, 12,128, 63,128,110, 0,142, 62, +176,226, 32,158, 38, 33, 58, 49,101,102,161,241,122, 96,125,125, 19, 31,112,251,246,109, 99,165, 74,149,238, 3,248,166,132, 27, +153,210,195,195, 99,225,212,169, 83, 23, 47, 92,184,144,199,227,241,112,233,210, 37,220, 56,115,194,246,248,218, 45,146,164,179, +234,148,119,166,189,226, 81,235, 77,111, 93,238,195,123, 90, 28,162,148,166,148,182, 97, 26,141, 38,249,217,179,103,194, 90,181, +106, 89,239,221,187,231, 65, 41,253,229,228,201,147, 45,167, 79,159,142,203,151, 47,239, 62,167,183, 14,166,212,182,159, 16,194, + 3, 48,184,123,247,238,159,245,235,215, 15,117,235,214, 53, 1,216, 81, 66, 57,175, 19, 66, 6,191,124,249,114,227, 23, 95,124, +225,242,197, 23, 95,128,195,225,144,162,251, 42, 59, 59, 27,247,239,223,199,192,129, 3, 21,191,253,246,219,228,246,237,219,143, +108,209,162, 5, 78,157, 58,229,103,199,193,248,253,241,227,199,189,101, 50, 25,121,246,236, 25,148, 74, 37,174, 95,191,206, 15, + 12, 12,108,182,127,255,126, 81,149, 42, 85, 16,243,240, 33, 78, 14, 30, 28, 65, 8, 9,164,148,190, 40, 78, 71,204, 39, 19,135, +247,239, 46, 53, 92, 63, 6, 68, 93, 5, 0,168,149, 42,232, 18,163,209,175, 81, 53,231,203,143,147,198, 35,191, 23,102,185,112, +115,115,251,116,249,242,229,146,224,224, 96,124,190,104, 41,166,206,158,142,143,189, 2,161,124,149,140,108, 43, 32,116,116,196, +194, 57,179,209,189,255, 64,120,121,121,225,225,195,135,116,243,230,205, 26,133, 66,177,204, 30,163,197,229,114, 65, 8, 1, 0, +141, 66,161, 80, 11,133, 66, 5,143,199,203,177, 90,173, 25,199,215,174,174,207,201,201,248,136, 16,194, 21,219, 56,199, 11, 58, + 91, 20,155,159,231, 66, 72, 96,213,160,160,135, 63,109,222, 44,105,220,184, 49,185,115,231,206,196,241, 99,199,140,238, 19, 86, +249,100,175, 14,173,224,227,235, 99,176,153,140,242,147, 71,143,155,215, 31, 56,121,197, 72,108, 95, 68, 82,170, 43,199,211,201, +222,162,166,135, 16, 50, 8, 64,127, 0,135, 41,165,187, 8, 33,195, 1,244, 2,112,168,164, 4,121, 66, 8, 7,192,166,190,125, +243, 39, 19,208,233,116,218,194,247,235,212,169, 83,244,183,108,229, 57, 70,142,142,142, 78, 14, 14, 14,207, 79,157, 58, 37, 30, + 56,112,160,235,226,197,139, 95,141, 24, 49,162,194,238,221,187,127, 0,144, 72, 8, 9, 1, 80, 85,163,209, 88, 57, 28, 14, 66, + 66, 66,176,110,221, 58,181,213,106,221,202, 46,227, 12, 6,227,239, 96,182,254,134,197, 14, 7, 16, 5, 32,162,160, 3,225, 88, + 0,165, 79, 42, 13, 96, 81,116,116,116,225, 24, 90,227, 75, 27,222, 97,198,140, 25,145,119,239,222,141, 4,176,164,172,110,142, + 60, 30,239,151, 9, 19, 38, 80,111,111,111,181,151,151,215, 47,124, 46,119,180,191, 24,225,120,139,174,238, 0, 90,238,220,185, +179,231, 15, 63,252, 16, 1,160, 49, 0,126,133, 10, 21, 82,211,211,211,213,191,253,246,155,186,121,243,230,106, 15, 15,143,204, +176,176, 48,245,242,229,203,213,102,179, 89, 61,117,234, 84, 53,222, 24,239,171, 4,109, 7, 0, 19,133, 66,225, 47, 53,106,212, +136,158,211,163,157,121,233,228,209,116,120, 53, 79, 53,128, 31, 0, 76, 0,224, 2,128,223,175, 95,191, 11,143, 31, 63, 62, 19, + 22, 22,182,209, 14, 93,191, 90,181,106, 93,220,187,119,239,221,195,135, 15, 71,126,241,197, 23,119,221,221,221, 83,226,226,226, +108,122,189,158,230,229,229, 81,185, 92, 78, 79,156, 56, 97,117,115,115, 91, 91,146, 78, 75, 17, 55,141,158,221, 85,236, 16, 14, + 47,103, 15,165,205,133,156, 87,111,211, 13, 85, 34,145,228,230,228,228,208,244,244,116, 26, 31, 31, 79, 15, 29, 58, 68,187, 52, +107, 68,247,125,220,135,238, 26,213,147, 46,235,210,136, 54,118,114,208,248, 56, 73,239, 58, 57, 57,101,186,184,184,108, 2, 80, +173,172,225, 29, 12, 6,195,235,225, 27, 42, 86,172, 24, 25, 18, 18,114, 56, 44, 44,108,197,209,163, 71, 63, 93,185,114,101,207, +182,149, 3,191, 92,220,185,153, 78,123,254, 0, 85,237,255,129,206,168, 31,172, 15,227,162,127,137,195,133,184,187,237,188,114, +249,178,173,112,128, 78,139,197, 66,143,252,242, 11, 29,240, 65,199,104,197,233, 61, 63, 93,155, 55,105,239,212,250,193, 71,154, + 59, 96, 16,222, 24,168,180,184, 37, 92, 10,247, 86,206,156,117, 93, 3,220,210, 90,202, 56, 63, 52,113,130,107,145, 99, 54, 32, + 56, 56, 56,158, 82,154, 22, 26, 26, 26, 15, 96, 87,104,104,104,209,215, 31,149, 53, 56,233,252,249,243, 41,242,103, 81,224, 0, +152,187,104,209,162, 72, 74,105,100,181,106,213,174, 83, 74, 81, 87, 2,143,214, 50,206, 79, 61,130,188,115, 90,203, 56, 63,213, +149,252,121, 52,119, 74, 41, 2, 5,168,222,210,211,241, 90,207,106,190,170, 54, 21,100, 87,119,109,219,178,180,107,215,174,155, + 1,172, 5,240,141,187,187,251,181, 65,131, 6, 61,218,177, 99,199,163,229,203,151,155,226,226,226,232,200,145, 35, 53, 34,145, +232, 27,214,117,156, 45,108, 97, 11, 91,254,242,145,225,125,203, 51, 96,105,247, 47,191,252, 50,146, 82, 90, 56,150,214,176, 98, +214,233, 49,123,246,236, 72, 74,105,225,232,240, 29,202, 26,208, 12,192,252,117,235,214, 81,145, 72,244,211,187, 14,146, 6,192, +167, 87,175, 94, 77,148, 74,101, 67,111,111,239,134, 5, 81, 39,127, 15, 15,143,248,221,187,119,171,117, 58,157,154, 82,170,182, + 88, 44,234,187,119,239,170,219,180,105,163, 70,254, 16, 16,118,141, 16, 94,116,153,229,131,235,119,230,140,162,179,124,112,253, +141,239, 14,221,186,117,235,169,132,132,132, 99,206,206,206,211,237, 28,184,210,223,211,211,115,174,155,155,219, 25, 15, 15,143, + 89,110,110,110,105, 38,147,137,230,229,229,209,216,216, 88,122,249,242,101,122,227,198, 13,234,230,230,150, 82, 82, 57,219,139, +121, 55,243,150, 78,164,182,173,139,168,113,205, 76, 10,128,202, 87,206,160,217, 63, 46,160,119,198,116,166,109, 28,184,191,191, +205,160,115, 46, 46, 46,155,126,249,229, 23,219,179,103,207,232,241,227,199,233,137, 19, 39,232,228,201,147,105,117, 63, 95, 67, + 19, 33, 39,163,165,136,119,230,109, 6, 44, 53, 24, 12,145, 74,165, 50, 82,173, 86, 71,214,168, 81, 35,178, 81,163, 70,135,155, + 52,105,178,226,192,129, 3,159, 46, 94,188,184,103,123, 39, 81,172,246,252, 1, 74,191,248,128,210,137, 45,232,243,209,109,104, + 59, 49,239,126,137,154,222,222, 41,133,163,181,107, 52, 26,122,245,234, 85,122,241,226, 69,234,227,225,161,108, 37,230,142,109, + 46, 66,235,230,206,112,177,183,156,109,101,156,109, 55,127,252,214,170, 59,181,131,238, 25,254,129,165,141, 11,103, 93,145,245, +246, 81, 74,211,250,246,237,155, 72, 41, 77, 59,116,232,208, 75, 74,105, 90,159, 62,125, 18, 11, 66,195,123,139,211,124, 99,112, +210,173, 5, 38,107,226,252,249,243, 35, 41,165,145,243,231,207,143, 4,242, 7, 81,109, 45,227,108,191,181,113,153,205,112, 98, + 59, 61, 48, 50,194,218, 90,198,217, 94,108, 57, 93,120,199,162,182,174,164,198, 51,187,232, 47,147,135, 88, 91,248, 56, 95, 9, + 14, 14, 94,246,233,167,159, 30,190,113,227,198, 3,171,213,250, 40, 62, 62,254,209,218,181,107, 31, 53,109,218,244,186,187,187, +123,180, 80, 40,156,192, 6, 69,100,154, 76,147,105,178, 1, 75,255, 59, 11,175,148,166,147, 99,132, 16, 9,165,116,106,191,126, +253,176,100,201,146, 1,181,107,215, 30, 84,161, 66, 5, 79, 0, 72, 77, 77,213, 2, 80,246,235,215, 15,115,231,206,197,210,165, + 75, 87, 20,228,178,252,127, 38,159,165, 19, 66, 42, 78,154, 52, 41,115,241,226,197,182,145, 35, 71,134, 82, 74, 31, 18, 66,170, + 15, 25, 50,100, 34,143,199,235, 23, 24, 24, 24,150,150,150,150,165,211,233,118, 1,216, 88,216,102, 90, 94, 68, 28, 88, 27, 84, +242,197, 25, 14,172, 69,154,134, 62,152, 59,119,238,192, 62,125,250,152, 86,174, 92,105, 81, 42,149, 71,237, 44,247, 75, 0, 95, + 23,190,118,119,119,247,185,127,255,254, 4, 47, 47, 47, 78,124,124, 60, 12, 6, 3,158, 61,123,102, 3,240,107, 73, 26,106, 11, + 93,189,254,208,185,144,169, 67,187, 57,107,159,220,131,128,203,133,153, 47, 68,250,205, 51,216,122,245,137, 82, 99,194,154,183, +217, 78,185, 92,254,253,228,201,147,135, 76,159, 62,221, 33, 48, 48,144,252,254,251,239,216,191,127,191, 33, 51, 51,179, 11,165, +244,202,219, 30, 43,155,205, 6,161, 80, 8, 0,152, 49, 99, 6, 56, 28, 14, 63, 51, 51, 83, 72, 8, 17, 17, 66, 28, 9, 33, 92, +115,194, 35,216,148,121,200,200,147,227,101,134,188, 84, 61,171,205,182,255,214,173, 91, 83,234,213,171,199,185,115,231, 14,178, +178,178,240,236,217, 51,106,165,116,239, 21,173,101, 83,121,203,231,232,230,222,171,174,171,136, 35,220, 54, 23,173,140, 28,238, + 6, 27,250, 2,152, 88,240,241, 86, 66,136, 0, 64, 78,141, 26, 53,218, 62,126,252, 88, 92,163, 70, 13,221,147, 39, 79, 78, 17, + 66, 42, 0,216, 94,108,243,174, 88,156, 13, 32,251,208,161, 67, 0, 48,134, 82,106, 35,132,212,159, 55,111, 94,218,213,171, 87, + 49,127,254,252, 12, 0,235, 0, 64,234,234,222, 35, 76, 38, 32,194,159,231,163,169, 1,156, 53, 54, 90,108,231, 2,169,151,119, +187, 90, 18, 14,248, 91,190, 66, 67,159, 16,142,208, 98,170,189, 96,193,130,171,106,181,218,176,111,223, 62,227, 71, 31,125,196, +141,139,139,187, 13,224, 90, 65,179,166,133, 53, 68, 48, 24, 12,198, 95,158,163,245,230,176, 14,197,231,104, 21, 99, 8,246, 16, + 66,178,151, 46, 93,218, 14,128,243,129, 3, 7, 26, 84,175, 94, 29, 0, 16, 27, 27,235, 24, 18, 18,242,180, 78,157, 58,143, 1, +220,164,148, 30,179,179, 60,133, 23,126,219,123,218,190,152,233,211,167,147, 29, 59,118, 88,128,124, 19, 84,112,115, 89, 13, 96, +117,105,121, 62,239, 74,112,112,112,199,175,190,250,202,184,101,203, 22,235, 55,223,124,115,148, 82, 26,247, 54, 58,185,185,185, +203,135, 13, 27, 54,100,222,188,121, 50, 39, 39, 39, 18, 29, 29,109,219,186,117,171, 50, 55, 55,119,121, 73,223,185,101,180,236, +107, 45,226,245,145,107, 14,116, 28, 16, 94,201,233,241,164, 8,196,222,186,134, 93, 87, 30,169,226,114,117,103,239, 88, 44,251, +223,210,188, 62, 35,132,212,157, 59,119,238, 12,147,201,212,135,207,231,223, 86, 42,149, 11, 40,165,191,191,237,126, 50,155,205, + 25, 85,170, 84,121,243,119,204, 54,155,141, 82, 74,249, 22,139, 69,226,102,178,157,152,183,106,203,199, 31,133,200, 68,217,217, +114,252, 28,167, 52, 20,233,108,241, 39,178,178,178, 86,140, 30, 61,122,196,188,121,243, 92,157,157,157, 73, 76, 76, 12,221,183, +111,159, 58, 43, 39,103,201,219,148, 81,155,151,123,246,248,193, 3,253, 90, 24, 45,100,103,162,138,242,184,228, 84,145,178,158, + 3,112,174,224,100, 26, 74, 8,233, 11,224, 8,165,244,231, 82, 53,181,218,179, 0,132,125,251,246, 69,116,116,244, 0, 0,123, + 0,236,253,250,235,175,155,204,157, 59, 23, 11, 22, 44,192,188,121,243, 58, 2, 56,163,202,203, 57,113,120,239,174,193,109,204, +102,206,206, 36,149,141,203, 33, 39,139,213,204,206, 56,119,234,220,249, 30, 13,157,253,200,166, 51,215,108, 90, 27,189, 55,124, +248,240, 60,163,209,120, 6,192, 26, 0,209,148, 82,214,187,144,193, 96, 48,254,127, 3, 63,155,138, 49, 94,155,202, 52, 90, 5, + 95, 62, 15,224, 60, 33,196,167,121,243,230,139,100, 50,153,196,106,181, 34, 55, 55,247, 21,128, 85, 5,209,153,242,176, 79,161, + 80,124, 33, 18,137, 54,188,167,141,211, 19, 66,188,106,212,168,193, 7, 96, 40,230,243,247, 99,178, 40, 14, 61,139,123,230, 12, +138, 67,133,111,197,197,197,237, 13, 11, 11,235,249,228,201,147,223, 40,165, 39,223, 97, 27, 94, 16, 66,234, 77,158, 60,249,115, + 0, 61, 1,252,154,155,155,187,188,164, 68,248, 66,174, 24, 44,253, 26,242,120, 67,238, 37,165, 79, 48,218,104,101, 33,135,147, +160, 49,209, 31,111, 91, 44,123,222,113,159, 62, 3, 48,178, 96,121,103,178,179,179,203, 28,228,147, 16, 66,174, 60, 79,189,249, +232,101,102,113,157, 45,138, 43, 99, 26, 33,164,238,212,169, 83,167,218,108,182,254, 28, 14,231,151,236,236,236, 50,247, 89,137, +145, 60,163,117,202,134, 75,119, 4,171,172,182, 14, 34, 14,231,140,218,108,157, 89,194,239,238, 2, 96,215,232,240,207,159, 63, +255,105,193,130, 5,181,230,205,155,135,245,235,215, 23,118,187, 60, 63,111,222,188, 76,171,213,234,191, 96,193, 2,108,220,184, +209, 2, 0, 6,179,109,218,150,171,247, 56, 27,108,182, 15,248, 28,206, 41,131,217, 54,173, 88, 83,174,183, 76, 92,115,248,180, +201,100,179,117,228,130,156, 74, 51,218,230, 24, 12, 52,137, 93,230, 24, 12, 6,227,127, 19,158,189, 43, 82, 74,211,223,199,141, +151, 82, 26, 15,192,121,214,172, 89,239,211, 73,102,254,213, 59,234,171, 84,250, 3,128, 31,190,250,110, 95,209,223,189, 13,148, + 61,168,168,189,102, 11,192, 39, 5,139,221,220,177, 88,118,163,132, 33, 37,254,102, 79, 3, 20,192,129,130,197,222,239,164, 32, +127, 46,203, 41,239,250,251,247,180, 52, 13,249,189, 8,223,231, 54, 69, 33,191, 23, 10, 94,189,122, 85,116, 59, 31, 20, 44, 40, + 28, 83,238,150,134,102, 2, 24, 98,103, 57, 7,176, 75, 23,131,193, 96,252,239, 80, 92,211, 97,185,141, 22,131,193, 96, 48, 24, + 12, 6,163,216, 7,235, 18,115,131, 9,128, 14, 37,124,201,238,196,118, 66, 72,135,183, 40,212,121,166,201, 52,153, 38,211,100, +154, 76,147,105,254,187, 52,203,210,254,255,238, 88,247,255,225,194,254,202,113, 37, 88,215, 87,166,201, 52,153, 38,211,100,154, + 76,147,105,254,107, 23, 14, 11,248, 49, 24, 12, 6,131,193, 96,188, 61,132,144,240,130,191,190,132,144,177, 5, 83,241, 0, 40, + 33, 71,139,223,120, 81,134,197, 98,241, 2, 0, 30,143,151,105,190, 61,199,183,180, 31,224, 3,237, 45,192, 79, 5,130, 99,204, +249,221,225,223,212, 60,103,177, 88, 92, 11, 52,243,204,183,231,116, 46, 85,179,209,194, 51,127, 88,255,214,236,142,197,108, 25, +151,223,104, 97,234, 27,101,245,179,123,207, 20,204,145,248, 87,151,243,239,162,249,111, 70,208,100, 81,134,217,156, 95,143,248, +124, 94,166,233, 86,233,245, 72,208,120, 97,234, 31,214,191, 57,219,187, 52, 77, 71,177, 40,167,106, 5,207, 21,165,105,198,167, +102, 79,213,104,245,238,165,105,150,247,220,244,247,245,109,111, 45, 56, 55,185,192,152,151,169,169,231,254,151,234, 18, 33,164, + 1,128, 57, 0,156,139,188, 29, 77, 41,253,140,213, 74, 6,131,241, 55,162,196, 41,120,138, 53, 90, 22,139,197, 43,242,151,121, +208, 24,128,246, 31, 46,244, 10,234,181,241, 79,189,218, 44,250, 60,161, 60,102, 95, 24,215,172,116,245,228,153,156, 83, 83, 83, + 73,193,133,243, 39, 0, 1,197,104,186, 70,254, 50, 15, 90, 35,208,106,208, 2,215, 0,192, 57, 75, 32,248, 92, 44,145,180,213, +233,116,181, 0, 64, 44, 22,199,232, 52,154, 75,158, 38,211,242, 55,215, 47,105,203,138,150,181,221,176,133, 94,161,189, 54, 78, +182,218,108,194, 87,119, 54,180,210,103,199,241,248, 22,195,186, 89,192,169,121,128,213,158, 61,245,135,223,237, 63,211,157, 15, +180, 19, 58, 56,212,117,113,117,109,105,163,180,134,205,102, 35, 86,139,229,145, 82,161,184,102,179, 88,238, 91,140, 26,247,200, +163,223,218, 74, 43,231,155,219,210, 31,224,253, 2,244,147, 72,165,109,185,124,126, 51, 0,176,154,205,191,107,212,234, 75,189, +129,131,246,108,187,189,251,231,109,215,255,183, 97, 54, 91,188, 18,206,204,131,193, 12,132,247,253,214,171,206,144,159,119, 3, +128, 49,243,190,183, 58,238,104, 99, 0,144, 84,237,118, 75,228, 19,158, 1, 0,188, 23,105, 94,177,199,103,195, 96, 6,106,116, + 91,224, 85,150,230, 71,115,247,187, 79, 31,219, 71, 4, 0,103, 15,253, 80,253,226,225,245, 31, 0, 64,187, 62,227, 79,117,234, + 59, 41, 22, 0,150,110, 58,236,190,247,219, 1,165,106,218,119,110, 42, 4,138,184,227,213,140,202, 52, 23,127, 9,207, 39, 46, + 46,142, 3, 0,126,126,126,118,157,155, 21, 1, 89, 26, 48,145,195,229,182,172, 90,173, 90, 56, 0, 26,255,252,121,148,213, 98, +185,238, 11,172,123,207,117,105, 50,165,127, 28,156,181, 96, 46, 76, 6,131,193,248, 59,113,162,192, 92,157,120,243,131, 18,123, + 29,106, 12,192,149,103, 64,235, 38,117, 48,118, 72, 87,105,209,207, 14,110, 92, 16, 16,119,231,215,208, 45, 63, 47,231,212,169, + 83, 7, 9, 9, 9,118,149, 66,107, 4, 46,199, 1,144, 63,118,202,147, 72,158,175, 92,182,204,185, 99,199,142, 60, 63, 63, 63, + 16, 66,144,158,158,222,228,252,249,243, 13,166, 76,153,242, 49,228,143,243,180, 70,168, 46,219, 49, 4,104, 97, 89,107, 85,175, +132, 57,147, 6,200, 0, 96,214,135,235, 26,220,121,154,225,246,252,249,243,246, 95,126,249,101, 14,247,210,165,245, 30,192,182, + 12,224,165, 61,229,220,113,236,150,131, 44,109, 79,208,208, 73,147, 14, 85,171, 86, 77, 26, 24, 24, 72,156,156,156,192,229,114, +145,151,151, 23,240,240,225,195, 15,110,223,190,173, 57,127,229, 39,225,221,219, 61,226, 51, 29, 26,235,237,218,118, 93,170,195, + 89, 39,167,152, 97,189,123, 87, 28, 48, 96,128, 67,213,170, 85, 1, 0,207,159, 63, 15, 62,120,240,224,160, 67,135, 14,205,133, + 46,213,162, 53, 66, 95,214,182,191,214, 4,224, 0, 52,115,241,242, 26,202,229,243,107, 89, 44,150, 10, 5,209,134, 87, 86,179, + 57, 70,158,153,185,235,205,245, 25,127,198, 96, 6, 30,167, 1, 29, 90,134, 99, 88,159, 14, 18, 0,248,114,224,162, 38, 47, 18, +159, 9,140, 70, 35,170,135,212,104,254,205,183, 43,206,128,195,193,206,195,231, 95,175,111,143,102,244,227, 4,204,251,102, 37, + 82, 31, 28,108, 98, 85, 60,107,171, 82, 42,184, 0,224, 44,147,245, 57,184,111,207, 37,191,176,126, 55,159,101,155,236,210, 44, +237,220, 60,189,111,173,111,202,195, 75, 53,127, 60,187,149, 31, 16, 16,128, 7, 15, 30,148,239,220, 84, 60,117,178,249,250, 62, + 90,254,197, 23, 62,173, 90,181,130, 84, 42, 5,143,199,131,197, 98,233,112,253,250,245, 14,243,230,205, 27, 15,197, 83,141,189, +231,166, 29, 44, 39,132,180,253,104,236,100,223,174, 61,251,161, 79,151,230,172, 34, 50, 24,140,191, 21,132,144,177, 5,189, 14, + 95,247, 60, 44,218, 11,177, 88,163,197,227,241, 50, 59, 14, 95,236,213,178,113,109,220,185, 31,171, 72, 74, 78, 83, 23,126,150, + 27,115,176,122,207,230, 21,106, 94,189,122, 5, 6,131, 1,191,255,254, 59,238,223,191,143,196,196, 68,140, 27, 55,206,192, 3, +198,148,160,153,215,106,208, 2, 87, 40,226,164,193,194,167,149,207, 63,121,194,213,235,245,184,122,245, 42,242,242,242, 32, 20, + 10, 81,177, 98, 69,116,234,212,137,247,228,201, 19,183,246, 29,187,200, 90,117, 25,156, 0, 89,176,154,199,227,229,149,180,129, + 60, 30, 47,179,253,135, 11,189,106, 6, 87,194,243,164, 84,197,156,111,183,168,109, 54,202,139, 79,124, 97,186,114,229, 10,194, +195,195,113,238,220, 57,247,220,220,220,175,214,173, 91, 55,135,255,221,143,171,205,198,156,105,165,232,229,181, 26,180,192,213, + 61,243, 64,224,197,211, 71, 4, 49, 49, 49,130, 13, 27, 54, 32, 39, 39, 7, 66,161, 16, 46, 46, 46,240,241,241, 65,245,234,213, +201,172, 89,179,164,221,186,197,224,147, 49,253, 2, 77, 65,163,159,150, 84,206,215,219,174,126,225,232,161, 60, 91,245,240,137, + 19,156, 22, 45, 90,252,225,177,189, 74,149, 42,232,220,185,179,195,208,161, 67,171, 14, 24, 52,196,214, 42,226,163,231,144, 6, +106,203,212,212,188, 20,187,107,111,248,117, 24, 52,232,232,130, 5, 11, 92,124,124,124, 32,145, 72, 0, 0, 10,133,162, 98, 82, + 82, 82,147,185,115,231,246,189, 21,189,143,215,170,219,203, 84, 72,252,117,165,237,207,127, 43,124, 62, 47,179, 48,138,228, 36, + 17,231,189, 76,201,208, 0,128,209,104,132,209,104,132,193, 96,192,132,241,227,184, 99,250, 54,170, 22,216,114,242,189,196, 87, + 25,185, 53,206,223,116, 43,252,110, 89,154, 60,109,162, 92,158,124, 97,204,188, 47,190,240,241,246,254, 79,139,224,206, 29, 59, +184,185,185,185, 29,230,205,155, 87,147, 58,182,145,215,232,182,192,165, 52,205,210,206, 77,121,236,137,202,223, 76,234, 92,119, +227,183,199, 97,181, 90,113,227,198, 13, 92,189,122, 21, 43, 86,172,160,167, 78,157, 82, 56, 75, 36,101,156,155, 79,157, 90,248, +166, 7,125,247,221, 33, 34, 18,137,240,235,175,191,226,201,147, 39,224,112, 56,168, 83,167, 14,134, 13, 27,134, 14, 29, 58,248, +140, 29, 59,142,182,234, 50, 48, 30,178, 16,213,187,212, 37, 66, 8, 7,192,228,153,243,190,243,253,112,244, 68, 44,253,102, 22, + 51, 90, 12, 6,227,111, 27,205, 42,113,136, 7, 74, 41,142, 31, 63, 78, 11,150,214,148, 82, 80,128, 83,165,215,198,189, 7,238, +218, 78, 84,233,181,113, 47, 5, 56, 20,224, 56, 3,149,234,213,171,103,150,203,229,244,246,237,219,116,194,132, 9,154,213,171, + 87, 95, 58,113,226,196, 65,139,201,180,217,207,215,247,123, 10,112,138,205,188, 7, 56,129,128,204,209,209, 49, 43, 57, 57,153, +158, 60,121,146,206,159, 63,159,238,218,181,139,158, 58,117,138,158, 63,127,158,158, 58,117,138,238,221,187,151, 70, 71, 71,211, +216,216, 88, 42,145, 72,178, 2, 1, 89, 41,154, 92, 10,112,171,247,218, 48,237,208, 29,243,130,144, 94, 27,167, 80,128,235, 10, +132,214,171, 87,207,122,240,224, 65,186,115,231, 78,250,243,207, 63,211,232,232,104,154,157,157, 77,121, 34, 73, 86,225,247, 74, + 42, 39, 5, 56, 21, 42, 84,200,146,203,229,212,223,223,159, 10,133, 66,234,237,237, 77,171, 87,175, 78,155, 52,105, 66, 63,248, +224, 3, 58,100,200, 16,250,213, 87, 95, 81,185, 92, 78, 29, 28, 28, 50, 10,191, 87,146,102, 56, 32,150, 72, 36,201,145,145,145, +180, 36,116, 58, 29,205,206,206,166,103,206,156,161, 18,137, 36, 57, 28, 16,151,166, 41, 6,234,135,133,133,101,101,103,103, 83, +147,201, 68,147,147,147,233,195,135, 15,233,147, 39, 79,104,114,114, 50,213,233,116,175,181, 99, 99, 99,105, 80, 80, 80,150, 24, +168, 95,162,230,191,121, 41,172, 19,111, 44, 1,222,222, 31,248,248,248,232, 14, 29, 58, 68, 95,189,122, 69,183,111,223, 78, 57, +192,162, 63,173, 91,138,166, 16,232,212,162, 69, 11,235,141, 27, 55,232,189,123,247,232,140, 25, 51,104,231,206,157,105,151, 46, + 93,232,188,121,243,104, 74, 74, 10, 77, 73, 73,161, 31,124,240,129, 85, 8,116, 42,171,126, 22,119,110,202,128,128,110,221,186, +233, 76, 38, 19,141,143,143,167,181,106,213, 74,225, 2, 67, 37, 64,205,214,128,168,172,250, 89, 1,112,245,245,245, 77,187,113, +227, 6, 61,124,248, 48, 13, 12, 12,204,226, 2, 31, 57, 3, 85,156,129, 42, 92,224,163, 42, 85,170,100,221,184,113,131,230,228, +228,208,128,128,128,180, 10,128,235,219,214, 37,228, 79,176,189,117,230,188,239,232,211, 20, 13,157, 57,239, 59, 10, 32,185, 96, + 64,215,115,172, 78,178,133, 45,255,190,229, 79, 94,228,159,214,235, 48, 34, 34,130, 0,184, 92,154,101,211,113,185,139,151, 46, + 93,202,211,235,245,216,178,101,139,170,127,223,190, 7, 90,183,108, 25, 95, 57, 48, 80, 78, 56,156, 50,231, 46,204, 18,137, 62, + 93,186,116,169,139,209,104,196,221,187,119,209,160, 65, 3,248,248,248, 64, 42,149, 66, 42,149,194,203,203, 11, 33, 33, 33,200, +204,204,132,147,147, 19,166, 79,159, 46,203, 18,137, 62, 45, 75,215,102,163, 60, 0,176,218,108, 66, 1, 48, 54,168, 97,195,187, +115,231,206,229,184,187,187,195,205,205, 13, 82,169, 20, 79,158, 60,129,209,104,132,163,216,209,174, 65, 90, 57, 28, 14, 71, 42, +149,226,226,197,139,152, 60,121, 50,154, 53,107, 6, 23, 23, 23, 56, 57, 57,161, 86,173, 90,232,212,169, 19,198,140, 25,131,248, +248,120, 16, 59,146, 74, 30,241,120, 19,199,140, 25,227, 21, 30, 30, 94,236,231,122,189, 30,114,185, 28, 89, 89, 89,168, 88,177, + 34,250,245,235,231,245,136,199,155, 88,146,158, 59,224, 83, 49, 56,248,232,237,219,183, 61, 36, 18, 9,118,238,220,137, 35, 71, +142,224,244,233,211, 56,121,242, 36,142, 31, 63,142, 95,127,253, 21, 89, 89, 89, 0,128,224,224, 96,236,223,191,223, 67,234,229, +117,220, 29,240, 97, 15, 32,246,241, 34, 35,227,108,173,244,116,143,161, 67,134, 92, 83,171,213, 24, 58,116, 40, 22, 47, 89, 50, +139,111,231,104,244, 33,128,204,205,215,119,219,119,223,125,199, 73, 79, 79, 71,239,222,189,179,151, 47, 89, 50, 42,234,204,153, +170,145,167, 79, 87, 93,188, 96,193,168,214,173, 91,103,167,164,164, 96,199,142, 29, 28,239,128,128,109, 33,128,172,188,229, 84, + 1,147, 87,173, 90,229,160,215,235,209,177, 99,199,120, 91, 76, 76,136, 5,216,163, 6,158, 92, 6, 76,101,125, 63, 13,152, 56, +125,250,116, 31,145, 72,132,207, 63,255, 60, 91,251,226, 69,109, 11,240,179, 2, 72, 82, 0, 73, 22,224,103, 85, 66, 66,237, 15, + 63,252, 48, 91, 36, 18, 97,229,202,149, 62,105,255,153,116,219,222, 8, 86, 3, 66,200, 81, 66,200, 21, 0,169, 31,141,157,252, + 81,120,163,166,216,177,121, 29,190, 93,240,229, 54, 0,253, 9, 33,187, 0, 76, 99, 53,143,193,248,119, 98,143, 23,249, 95,109, + 62, 44,177,165,236,117,220,235,196, 9, 10,160, 77,105, 66,174,238,238, 13,106,215,174,141,171, 87,175, 34, 44, 44,236,182,139, +139,139, 69, 32, 18,129,207,231,131,218,202,158, 35, 90, 44,145,180,239,208,161, 3,239,230,205,155, 8, 10, 10,130, 88, 44, 6, +159,207,255,195, 34, 16, 8,224,235,235, 11,165, 82,137,246,237,219,243,215,172, 89,211, 30, 6,195, 55,101,222, 16,227, 30, 74, +179,110,126, 55,228,167,237,219,170,180,106,213, 10, 10,133, 18, 54,155, 13,142,142,142, 48, 26,141,224,241,120,249, 77, 64,102, +170,180,103,167, 89,173, 86, 43,151,203, 69, 80, 80, 16, 22, 47, 94, 12,189, 94, 15,129, 64, 0, 0, 80, 42,149,144,203,229,120, +248,240, 33,146,146,146,236,154, 79,209, 73, 38,235, 58, 96,192, 0, 97,113,159, 25, 12, 6, 40, 20, 10, 40, 20, 10,200,229,114, +232,245,122, 52,109,218, 84,120,226,248,241,174,200,201, 41,118, 98,105,131,131, 67,223, 29, 59,118,120, 9,133, 66,232,116, 58, +168, 84, 42,188,124,249, 18, 47, 94,188,208,103,102,102, 90,156,156,156, 56,129,129,129, 28,145, 72, 36,234,213,171, 23, 81, 42, +149, 32,132,160, 91,183,110,238,187,119,238, 28, 0, 96, 5, 59,165,237,227, 44, 96,168,111, 52,118,111,220,168,209,197,219,119, +238,132,127,250,233,167,136,142,142,254,206,113,223,190, 43, 90,224,126,105,223,141, 7, 38,126, 95,196,192,208, 23, 47,194, 76, + 64, 86,145, 85,146, 2, 19, 18, 78,127,248,225,135, 15,162,163,163, 61, 86,174, 92,233,211,191,119,239,137, 0, 22,149,167,140, + 78, 50, 89, 67, 95, 95, 95,156, 58,117, 10,201,137,137, 95, 90, 0, 93,121,190,207,225,114, 91,180,106,213, 10,191,254,250, 43, + 82, 94,188,248,210,242,199, 50,230, 63, 40, 1, 89,188,248,248, 47,183,109,219,182,117,228,200,145,224,242,120, 45, 96,177,148, +231,103,254,148,248, 62,114,220,167,216,182,105,205, 54, 0,163, 41,165, 54,188,167, 41,173, 24, 12,198,223,180, 13,206, 14, 47, +242,119, 49, 91,133, 77,137,229,138,104,121,121,121, 85,144, 74,165, 72, 77, 77, 69,141,208,208, 76,145, 72, 4, 33,159, 15, 7, +161,208,174, 66,104,181,218, 48, 63, 63, 63, 40, 20, 10,120,120,120, 64, 32, 16,188, 94,132, 66,225,235,255,157,156,156,192,225, +112, 16, 16, 16, 0,173, 86, 27, 86,166,110,198, 67,175,125,107,198, 79,184,113,229, 84,149,222,189,251,192,213,213, 13,254,254, + 21,225,229,229, 5,177, 88, 12,127,127,127, 84,173, 90,149, 46, 95,190, 28,142, 94,117,236,186,144, 23, 53, 79, 60, 30, 15, 86, +171, 21, 25, 25, 25,120,250,244, 41,162,163,163,113,227,198, 13,220,187,119, 15, 42,149, 10,246,204, 91,173,213,233,234,242,120, +188, 98, 77,150, 92, 46,135, 92, 46,127,109,180,178,178,178,144,148,148, 4,181, 70, 83,175, 20,211,219,167,118,237,218, 92, 0, + 16,139,197,168, 87,175, 30, 54,110,220,104, 57,118,228,200,192,154, 55,110,184,249,159, 57,227,242,211,134, 13, 3,251,245,235, +103,189,121,243, 38,148, 74, 37, 30, 63,126, 12, 79, 79, 79,158,208,193,129,205,149, 87, 78, 34, 1,141,135, 74,213,165, 89,179, +102, 9, 10,133, 2,203,150, 45,227,240,157,156, 54, 45, 0,184,165,126,145,203,109,222,170, 85, 43, 28, 61,122, 20,169, 47, 94, +204,120, 81,140,129,121, 1,100, 37,199,199,207,216,182,109, 27, 58,117,234, 4,194,227,149, 59, 81,169, 73,147, 38,181,109, 54, + 27, 30, 60,120, 0, 23,224, 86,121,191, 95,181, 90,181,240,194,200,175, 4,184, 86,210,122, 18,224, 90, 84, 84, 20,196, 98, 49, +106,212,172, 89,191,156, 63,179,156, 16,146, 54,114,220,167, 56,124,250, 55, 0,192,182, 77,107, 50,138,152, 44, 6,131,193, 34, + 90,127,203,136, 86,161,177, 42,186,188,126,144, 45,167, 8, 0,128,207,231, 67, 40, 18, 65, 40, 20,230, 27, 36,145,168, 60,142, + 15, 14, 14, 14,175,141, 85, 81,131, 85,244,127, 71, 71, 71,187, 12, 12, 0,228, 61, 59,221,114,244,168,145, 66,145, 72, 4,163, +209, 0, 74, 41, 68, 34, 7,184,184,184, 32, 40, 40, 8, 74,165, 18,205,154,183, 54,188,148, 11,142,187,215,232, 21,253, 54, 59, +208, 98,177, 64,163,209, 32, 47, 47, 15,185,185,185, 80, 42,149,208,233,116,118,119, 69,183,217,108,220,151, 47, 95, 98,207,158, + 61,200,201,201, 1,144,159,104, 93,104,174, 10,255, 38, 36, 36, 96,231,206,157, 72, 76, 76, 44,215,241,105,217,178, 37,142, 31, + 63,206,109,211,190,253,230,115,129,129,169,231, 2, 3, 83,219,180,111,191,249,232,209,163,220, 10, 21, 42, 32, 41, 41, 9,119, +239,222, 69, 94, 94, 30, 40,165,172,255,252, 91,240, 28,200,211,230,230,142,156, 53,107, 22,149, 74,165, 88,246,253,247,117, 23, + 1,131,237, 53, 48,178, 82, 12,140,236,221, 12, 12, 40,165,176,217,108,176, 90,173,111,181,109,132, 16,194,231,243,203, 59,180, + 2, 41,135,254,235,196,247,233, 95, 45,198,201, 95, 15, 22,126, 20,199, 76, 22,131,193,248,187, 83,218, 92,135,188, 34, 14,242, +245,223,146,200,200,200,120,165,209,104,170, 4, 6, 6, 34, 37, 37,197, 43, 32, 32,224,133,144,207,135, 64, 40, 4,225,148,237, + 9, 28, 29, 29, 31,164,166,166, 54,175, 80,161, 2, 44, 22,203,107, 83,245,102,211, 97, 97,148,230,222,189,123,112,116,116,124, + 0,125,169, 35, 39,192,106,204,171, 84,191,126,253,215,145, 33, 23, 23, 23,184,184,200, 32, 18, 57, 96,246,236,217,182,149,203, +151,175, 11,104,183, 64, 49, 98,202, 44, 58,107,209,230,247,186,115,237,189, 49, 57, 58, 58, 62,240,247,247,111, 42,147,201,112, +248,240, 97, 36, 37, 37, 33, 47, 47, 15, 90,173, 22, 6,131, 1, 90,173, 22, 70,163, 17, 14, 14, 14,168, 89,179, 38,156,157,157, +113,254,252,249, 7, 48, 24,138, 55,151, 57, 57,135, 31, 60,120,208,180, 81,163, 70,175, 35, 42,109,219,182, 37,109,219,182,245, +120, 29, 69,211,106,145,157,157,141,219,183,111,227,252,249,243, 32,132, 32, 46, 46,206,106,208,233,246,178,211,226,237,208, 3, +191,115,183,109,219,250,241,199, 31,143,106,222,188, 57,172,192, 7, 0,118,254,183, 12, 76, 33, 55,110,220,120,104,181, 90,155, + 87,175, 94, 29,114,160, 49,128, 95,203,101, 34,159, 61,139,178, 88, 44,237,235,214,173,139,195, 7, 14,180, 4,144, 84,220,122, + 26,160,101,120,120, 56,116, 58, 29, 30, 63,122, 20, 89, 14,147,181,121,230,188,239, 62,250,112,244, 68,236,216,188, 14,219, 54, +173,121,185,117,227,106,127,216,145, 63,198, 96, 48,254, 85,209,172, 50,189,200,255, 34,197,229,104, 21,154, 47, 94,121,132, 20, +121,121,145, 81, 81, 81, 85,234,215,175,143,205,155, 55, 55,106,214,180,233, 43,129, 80,104, 17, 10, 4,224,216,113, 35,209,105, + 52, 23, 46, 92,184,208,184, 87,175, 94,188,155, 55,111,194,199,199,231,181,209, 42,252,203,227,241, 64, 41,133,163,163, 35,126, +249,229, 23,147, 78,163,185, 80,102,180,200,106,179,114, 10,140, 30,165, 20,114,185, 28, 2,129, 0, 43, 86,172,196,218,229,203, +135, 88,129,131,193, 18,207, 47, 0, 56,252,215,110,208, 90,237,197,147, 39, 79, 54,152, 59,119, 46,191, 98,197,138,144,203,229, +200,203,203, 67, 78, 78, 14,148, 74, 37,148, 74, 37,242,242,242, 32,151,203,225,224,224,128,232,232,104,179, 94,171,189, 88,146, +158, 72,175, 63, 52,124,248,240,233, 81, 81, 81,190, 60, 30, 15,102,179, 25, 54,155, 13, 54,155, 13, 38,147, 9,207,158, 61, 67, + 76, 76, 12,158, 60,121,130,220,220, 92,240,249,124,112,185, 92,220,187,119, 47, 79, 98, 54, 31, 96,167,244,219,195, 7, 14, 95, +191,126,125,212,176, 97,195,224, 87,177, 98,107,164,164,216,101, 96,142,148, 98, 96, 20,111, 97, 96,254, 96,128, 84,170, 59, 9, + 9, 9,205,219,180,105, 3,223,138, 21,191,171,153,146,114,238, 81, 57,242,180,172, 22,203,181,235,215,175,183,255,240,195, 15, +177,121,243,230,239, 60, 19, 18, 78,103,189,209,204,233, 9,120, 86,174, 90,245,187,143, 62,250, 8,103,207,158,133,213, 98,185, + 86,202, 69,167,232,136,239,149, 62, 26, 59,217,255,141,196,247,141,132,144, 73, 0,150,177, 26,197, 96, 48,254,201, 17,173,114, + 53, 29,138,173,214,153,211,166, 77, 51,115, 56, 28,244,233,211,199,233,215,163, 71,251,221,187,127, 63, 40, 51, 51,211,197,106, +181,150,169,229,105, 48,172,158, 54,109,154,220,104, 52, 34, 36, 36, 4,185,185,185,176, 90,173,224,241,120,224,241,120, 32,132, +128,195,225, 64, 42,149, 34, 42, 42, 10, 91,183,110, 85,122, 26, 12,171,203,188, 73, 88,173, 15,118,238,220, 9, 46,151, 75, 29, + 28, 28, 64, 8, 1,143,199,195,202,149, 43, 51,215, 2,135, 1,128,203,225, 24, 1,128,195, 33,246,102,239,150,217,110, 41, 20, + 10, 97,203,239, 4, 80,230,186,174, 6,195,170,165, 75,151,170, 30, 63,126, 12,141, 70,243, 58,250,166, 86,171, 95, 39,215,203, +229,114, 16, 66,160,209,104,112,244,232, 81,149,171,193,176,170, 36,189, 28, 32, 61, 37, 46,174, 71,163, 70,141,114, 18, 18, 18, +160, 80, 40,240,224,193, 3,156, 63,127, 30,251,247,239,199,217,179,103,241,236,217, 51, 88, 44, 22, 84,168, 80, 1,148, 82, 28, + 57,114, 68, 97, 81,169, 62,200, 1,210,217,105, 81, 50,149,124,124,218,123,123,121, 37,123,122,120,164, 84,242,241,105,255,230, +231, 50, 32, 54, 54, 54, 22, 22,139, 5, 65, 65, 65,110,165,229,105, 81,139,229,250,245,235,215,241,225,135, 31,194,191, 74,149, + 37,129,128,231,155,235, 4, 2,158,129, 85,171, 46, 41, 52, 48,212, 98,185, 94,222, 50, 59, 1,107,190,248,226, 11,157, 64, 32, +192,190,125,251,130,204,213,170, 61,225, 1,131,165, 64,104, 27, 64, 80,214,247,125,129,117, 95,125,245, 85, 58, 33, 4,187,118, +237,242,144, 85,173,250,144, 7, 12,151, 1,149,100, 64, 37, 30, 48, 92, 86,181,234,195,125,251,246,121, 88, 44, 22, 76,153, 50, + 37,221, 23, 88, 87,138,228,100, 74,105,119, 74,105, 43, 74,169,255,214,141,171,113,242,215,131,133, 38,107, 52,165,244, 54,165, +116, 24,165,244, 33,171,113, 12, 6,227,159, 12, 41, 46, 15,138,223,120, 81, 6, 64,189, 90, 55,169,131, 59,247,159, 42, 60, 92, +157,207, 20,126,150, 27,115,176,122,187, 48,231, 58, 63,254,248, 35,248,124, 62, 94,190,124,137, 71,143, 30,193,217,217, 25, 67, +134, 12, 49,232, 84,170, 30,133,115, 29, 18, 66, 58, 80, 74,207, 23,104,230,207,167,166,136,147, 86,229, 69, 87, 57,125,242, 56, + 87, 38,147, 65,173, 86,131,195,225,192,193,193, 1,142,142,142, 16,139,197,184,123,247, 46, 34,186,247,180,102, 57,182,122, 61, + 96,105,225,124,106, 69, 53, 65, 8, 23, 0, 26, 3,142, 81,192,231, 94,126,126,211,230,204,153, 35,238,220,185, 51, 4, 2, 1, + 42, 86, 10, 78, 15,234,178,108, 13,135, 67, 44, 41, 57,202,217, 85, 43,249,201, 30,197, 37, 1, 32,249,115, 34, 22,204,117, 88, + 92, 57, 3,140, 87,130,126,249,121,185,115,189,122,249,249,232,114,185, 28, 25, 25, 25,200,204,204,132, 92, 46,135, 70,163, 1, + 0, 28, 63,126, 28, 39,175, 62, 81,234, 42,246,139, 47,169,156,255,217,246,167, 78,126,166, 91,149,119,239,252,153,235,233,233, +137,140,140, 12,100,101,101, 65, 46,151, 67,167,211,193,106,181, 34, 55, 55, 23, 91,182,253,108,205,145,182, 74, 44, 28, 16,178, + 84, 77,205, 75,177,155,250,183, 10,225, 53, 3,233,168, 81,163,156,156,157,157, 97,179,217,144,151,151,135,228,228,100, 36, 36, + 36,224,234,213,171,154, 76,185, 17, 26,143,142, 41,133, 3,150, 22,187, 63,223, 95, 8,245,239,167, 89, 80,151, 0,192,207,215, + 55,245,197,139, 23, 94, 86,171, 21, 21, 42, 84,176,200,115,115,151, 8,129,179, 78, 64, 26, 0,154, 13,204, 89,181,102,205,200, +158, 61,123,162, 97,195,134, 47,211, 51, 50, 42, 23, 87,151, 64, 8, 55, 4,144,105, 43, 86,140,185,125,251,182, 79,114,114, 50, + 62,252,240,195,236, 23,207,159,207,144, 21,228,107, 41,128,150,129, 85,171, 46,217,183,111,159, 71,149, 42, 85, 16, 22, 22,150, +238,144,156, 92,235, 41,160, 40,161,126,150,120,110,202, 99, 79, 84, 30,223,187,118,195, 9, 19, 38,192, 98,177,224,234,213,171, +184,117,235, 22, 94,188,120,129,223,126,251, 77,238, 44,145, 12, 44,156,235,176,164,250,249, 65,176, 38,104,215,174,157, 68, 32, + 16, 96,219,182,109,136,138,138, 2, 0,132,135,135,227,163,143, 62,130,197, 98,193,208,161,195,232,137,167,226,248,210,234, 39, + 33,164, 54,128,239,145,111,242, 26, 82, 74, 29, 8, 33,169, 0,252,203,147,147,197,234, 39,211,100,154,255, 30,205,127, 42,101, +206,117,184,112, 61,100,127,156,230, 99, 76,234,193,141, 11,120, 45, 90,182, 10, 93, 48,127, 30,167, 81,163, 70,240,247,247, 71, +120,120, 56,146,147,147, 69, 46, 46, 46,101,205,167,166,110,213,101,112, 66,157, 58,117, 92,102,204,152, 33,235,212,169, 19,223, +223,223, 31,148, 82, 68, 69, 69,225,240,225,195,166,205,155, 55, 43,181,222,221,229,145,151,246,168,237,153, 79,237, 22,160, 5, +240,117,197,212,212, 77, 19,199,143,159, 87,175,126,253, 81,243,231,207,231, 72, 29,197,252,197,179, 71, 59, 0,192,194, 31,246, +203,122,246, 27,130, 85,213,128,214,131,139,159, 71,174,104, 57,147, 83,198,188,232,218,187,125,181,207, 39,141,180, 14, 24, 48, + 64,226,236,236, 12,127,127,127,184,186,186, 34, 62, 62, 30, 41, 41, 41,244,216,177, 99,234, 27,247, 98,249, 71,206,222,121,225, + 32,243,181,103, 94, 66, 85,171,206,253, 19,187,118,237,234, 58,124,248,112,167, 6, 13, 26,240, 69, 34, 17, 68, 34, 17, 50, 50, + 50,240,236,217, 51,211,177, 99,199,212, 90,175, 15,242, 34, 47,237, 83,217, 57,215,161,174,213,160, 5,207,174,157,155, 63, 37, +230,193,131, 97, 54,160,174,201,100,170, 96,181, 90, 9,135,195, 73,179,217,108, 15, 76, 42,213, 86, 67,248,252,149,108,174, 67, +251,176, 90,173, 2,171,213, 10,185, 92,142,115,231,206,241,158, 63,127, 62,231,254,253,251,115, 82, 83, 83, 97, 54,155,209,183, +111, 95,132,135,135,227,210,165, 75,200,202,200, 56, 86,154,214, 83, 64, 33, 74, 73,249,104,204,152, 49,167,118,238,220,201,185, +127,255,190,199,182,109,219,182, 20,103, 96,134, 13, 27,102,203, 72, 78,254,200, 0, 40, 74,169,159,165,157,155,217,167,247,173, +189,223,171, 79,191,154,243,231,206,225, 55,107,214, 12, 30, 30, 30,104,217,178, 37, 76, 38,147, 75,141, 26, 53,202, 58, 55, 85, +173,186, 12,140,175, 91,183,174,100,229,202,149, 62, 35, 71,142,196,164, 73,147, 0, 0, 58,157, 14,103,207,158,197,148, 41, 83, +210,147,121,141, 53,101,213,207,130, 72, 85,161, 1,187, 2,160, 21,128,120,150,248,206, 96, 48,254,145, 81, 43, 66,194, 41,165, + 81,132, 16, 95, 0, 17, 0, 78, 80, 74,211, 74, 52, 90,192,127,230, 83,187,118,235, 33,138, 78,243,145,143,239, 35, 75,192,240, +231,227,166, 45, 9,227,154,149,174,124,162,119,142,139,141, 37,101,205,121,248,122, 62, 53, 89,176,218, 61, 97,111,163,197, 11, + 23,126,186,106,213,170,246,133, 67, 56, 56, 58, 58, 62,208,105, 52, 23, 60, 13,134,213, 90, 89,240,133,242,206,205,151, 2,100, + 0, 24,239, 26, 25,185,166, 91,207,190, 75, 29,220,130,248,179, 22,109,214,115, 57, 28,227,179,212, 44,172,170, 6, 72,236,232, + 32,169, 53, 2, 49,114, 95, 75,134,123,191,167, 95,125,241,197,231, 11,191,254,186,145, 84, 42,109,109,178, 88,130,109, 54, 27, + 96,179,197,105, 53,154, 43,212,100,186,109, 8,159,187,220, 65,230, 75,237,158,151,208,165,134,202, 45,241, 96,163,237, 91,183, + 78, 62,112,224,192,159,182,221,221, 96, 88,163,117,169,113,222,158,109, 47,186,142, 30,248, 29,153,153,191,151, 88, 9,192,230, + 58,180,251,233,195,102, 27,235,234,234,186,163,125,251,246, 14, 29, 58,116, 64, 68, 68, 4,154, 53,107, 6,155,205, 6, 74, 41, + 84, 42, 21,246,239,223,143,165, 75,151,198, 85, 6,190, 46, 75,207, 0, 92, 16,157, 60,249, 65,221,186,117,183,149,102, 96, 10, + 76, 86,153, 57,137,165,159,155,162, 56,139,172, 71,210,160,137,139,171, 25,149,105, 46,238,142, 22,159,152,135, 15, 56,246,159, +155, 33, 42,107,212,254,198,125,123,247,158,200,229,241, 90, 22,244,128,164,143, 31, 61,138, 44,156, 84, 26,225, 31,157, 43,103, + 93, 42, 28,187,142, 37,190, 51, 24,140,127, 42,225, 0,162, 0, 68, 80, 74, 55, 21, 36,199,151,156, 12,207,227,241, 50, 11,163, + 62, 60, 30, 47, 51,254,200,184, 33,165,169,243,129,246, 5,145, 44,148, 57,215, 97,193,255, 73,128, 10, 6,195, 55,127, 24,140, +180, 72,239, 66,254, 27,235,151,103,107,243,128,167,176, 24,186, 33,243, 17,112,116,124,190, 94,163,133, 95, 22,221,166, 18,111, +178,127,248, 93, 65,174, 30,184, 6,181,250, 26,212,234, 98,147,118,249, 60, 65,110, 89,229,124,115,219,147, 1,229,187,110, 59, +175,156,251,135,247, 14,251,243,223,198,171,236,236, 35, 0,164, 21,143, 31,247, 62,125,252,248,128,207,167, 78,237,235,235,231, + 87,213,195,195,195,213,201,201,137,115,243,230,205, 4,139, 94,191,166, 30,176,189, 32,154, 90, 38, 6,224, 66, 72,114,114,173, +254,189,123, 79, 36, 60, 94,139,162, 6,134, 90, 44,191, 5, 1,235, 74,139,100,189,237,185,233, 47,242,109, 95, 16,201, 2,215, +206,115, 51, 37,191, 28,139, 96,177, 44, 66,116,116, 49,117,190,220,117,105, 33, 33, 68, 5,150,248,206, 96, 48,254,185,156, 40, + 48, 87, 39,254,244,201, 95, 57,191, 15,128, 14, 76,147,105,254, 83, 52,243,189, 10,156,217,254,100,154, 76,147,105, 50,205,247, +175,249, 79, 93,120,204,132, 50, 24,246, 65,243,147,211,149,108, 79, 48, 24, 12, 6,163, 40, 69,114,179,138,222, 51, 54, 1,249, +169, 59, 29, 74,184,169,156, 47,199, 15,116,120,139,155,214,121,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52,203,210, +254, 59,246,102, 36,132,140, 45,204,205,122,115, 76, 45, 98,239, 52, 55,111,249,195,172,235, 43,211,100,154, 76,147,105, 50, 77, +166,201, 52,255,209,148, 22,209,226,176,221,195, 96, 48, 24,192,130, 5,132, 3, 16, 2, 44,224, 0, 7,185, 64,127,110,254,235, +183,167,127,127, 82,236, 96,182,147,135,186, 57,177, 61,206, 96,252,115,160,148,166,149, 52,169, 52,203,209,250,239, 58,224, 0, + 31, 31,159,141, 0, 72,122,122,250, 88, 74,105, 50,219, 43,255,123,184,187,187,183,183, 88, 44, 80, 40, 20, 23,254,137,219, 87, +171, 26,233, 77, 57,168,241,159, 43, 6,146, 31,197,209, 29,197,173, 91, 51,152,124, 8,242,159,177,184,136, 13,143, 99,158,209, + 95,202, 81,231, 57, 31,116,240, 95, 7, 0,167,206,191,156,248, 87,140,171, 69, 8,169,238,233,233,121,134,199,227,241,172, 86, +235,248,140,140,140,227, 37, 27,161,254, 92, 0,224,211, 75, 51, 61,220, 66,103,124,246, 49,225,107, 13, 91,229, 6,157, 70,193, +229,115, 19, 69,124,159,235,224, 86, 56,149,167,110,250,168,184,239, 31, 56,112,160,196, 89,188,107, 7,147, 15, 66,107,214,236, + 94, 63, 76, 28,255,253,234, 70,171, 90, 7,121,240, 19, 94,222,147,126,183, 65,177,209,217,173, 82,247,225, 3,221,143,243, 28, +201,176, 45, 91,178,213,236, 44,179,159,111, 9,113, 51, 1, 97,124,145,200,223,106,177,120, 19,128,114,121,188, 12,179,193,240, + 82, 0, 68,207,160, 84,254, 79,215, 20,136, 68, 21,173, 22,139, 55, 0,252, 47,150,147,241, 71, 74, 52, 90, 78, 78, 78,119, 57, + 28, 78,197,162,147,225, 22,206, 39, 88,248, 94,209,207, 8, 33,176, 90,173, 41,185,185,185, 13,202,113, 65,116, 6, 48, 0, 64, + 97, 23,245,221, 0,246, 83, 74,149,111,121,129,117, 22, 8, 4,211, 36, 18, 73, 59,157, 78, 87, 11, 0,196, 98,113,140, 70,163, +185,104, 50,153,190,127, 27, 93, 66, 8, 15, 64,127,169, 84,218,150,195,225,180,165,148, 18, 74,233, 37,181, 90,125, 17,192, 1, + 74,169,229, 45, 52,197, 94, 94, 94,139, 66, 67, 67, 7,207,156, 57, 51,199,221,221, 61,100,202,148, 41,119, 60, 61, 61,247,100, +103,103,207,166,148,234,254, 23, 42, 7, 33,164,170,143,143,207,110, 62,159,207,125,249,242,101, 91, 0,240,247,247,191,100, 52, + 26,173,153,153,153, 67, 40,165,207,203,169, 39, 1,208, 68, 42,149, 54,144, 74,165,173,172, 86,107,141,130,249, 25, 31,171,213, +234,171, 38,147,233, 46,128,155,148, 82,205,255,144, 25,118,242,242,242,218, 73, 8, 1, 33, 36,152, 82,170,250,199, 61,137,113, + 80,227, 81,204,147,144,215,102,170, 86,104, 41, 59, 4, 1,197,172,107,183,209,106,215,218,183,123,143, 30, 29, 57, 0, 96, 52, +159,234,142,114, 78,126,109,143,201,234,211,167,207,239, 59,119,238,116, 53, 24, 12, 24, 59,118,236,110,153, 76,182, 78,161, 80, +204, 44,237,123,206, 82,215, 41,203, 86,158,117,204,159,255, 26, 94, 54,155,213,235,213,171,231,193,143, 30,254,222, 37, 38,230, +198, 98,221,147,139, 55,109,132, 63,206,132,150, 79,236, 41, 71,205,170,164, 91,207,254,189, 35,190,254,122, 62, 6, 15, 28, 92, + 41, 38, 70, 47,174,224, 28, 47,204,213, 73,170,185,123,122,245,248,122,225, 65,114,253,218,145, 30, 59,183, 45,184, 56,106,148, + 71, 59,102,182,236, 58,182,100, 33,143,215,196, 53, 52,180,213,192, 35, 71, 32,245,247,231,241, 68, 34, 14, 0, 88, 12, 6,127, +245,203,151,190,251,122,244,104,188,128,144,203,243, 40,189,197, 52,255,255, 53, 25,229, 52, 90, 28, 14,167,226,171, 87,175,188, + 36, 18, 73, 97, 88, 12, 86,171, 21, 86,171,245,245,228,197,148,210,215,127, 45, 22, 11, 66, 67, 67,237,122,162, 5,208, 14,192, +136, 54,109,218,244,251,254,251,239,249, 97, 97, 97,133, 83,134,180,156, 53,107,214, 15,132,144, 67, 0,182, 3,184, 96,239, 19, + 47, 33,164,179, 68, 34,217,181,108,217, 50,231,142, 29, 59,242,252,252,252, 64, 8, 65,122,122,122,147,243,231,207, 55,152, 50, +101,202,120, 66,200, 80, 74,233,153,114,156,216,181,157,156,156, 14,246,238,221,187, 98,235,214,173, 29,106,214,172, 9,171,213, +138,123,247,238,141,188,123,247,238,160, 67,135, 14,205, 35,132,244,179,119,190, 54, 66, 8,145, 74,165,195, 43, 84,168,176,104, +238,220,185,110, 67,135, 14, 21, 62,124,248, 48, 47, 40, 40,136, 92,191,126,221,115,255,254,253,227,151, 44, 89,210,223,201,201, +105,182, 90,173,254,153,218,145, 64,231,236,236,124,151,195,225, 84,180,199, 8, 3,176,219, 12, 19, 66,234, 85,174, 92,121,255, +181,107,215, 42, 39, 37, 37, 89,123,245,234,181, 3, 0, 46, 94,188, 24,102, 54,155, 73,167, 78,157, 78, 17, 66, 6, 80, 74,239, +217,185,237,117,220,220,220,126, 29, 60,120,176, 91,213,170, 85, 29, 43, 87,174, 76, 36, 18, 9,184, 92, 46, 20, 10,133,223,195, +135, 15, 59,220,186,117, 75,119,254,252,249, 92, 66, 72, 15, 74,105,116, 57,142, 83, 51, 47, 47,175, 97,124, 62,191,182,197, 98, +169, 0, 0, 60, 30,239,149,217,108,126,152,153,153,185,147, 82,250,251,219,158, 32,222,222,222,107, 23, 45, 90,228,145,153,153, + 73,151, 44, 89,178, 22,192,240,127,234,197, 96,247,158, 3,184,123,231, 22, 0, 8, 8, 33,228,205,250, 71, 8, 33, 53,130, 33, +248,236,179,169,104,208,176, 49,134, 12,238, 95,166,102, 68, 7,255,101,124,161,192, 93,175,215,255,174,208, 26, 14,120,187,187, + 12, 24, 60,168, 91, 28, 0,156, 58,125,121, 64,227,198,110,151,100,142,162,254, 14, 14, 14,205,204, 70, 83,206,137,243, 47,191, + 40,143,169,170, 80,161,194, 25, 87, 87, 87,199,220,220,220,244,172,172,172,245,125,250,244, 89,184,125,251,118,215,132,132, 4, +188,124,249, 18,159,126,250,169, 52, 37, 37,101,162, 72, 36,186, 97, 48, 24, 74,140,108,169, 84,185,171,103,205,232, 57, 87, 38, +243,224, 74, 28,157,225, 36,115, 67, 80,213,186,104,210,172, 59, 62,136, 24,133,103,113, 81, 77,182,111,251, 58,234,213,171,243, +223, 74,221,170, 44,148,203, 43,151,120, 93,170, 21, 66, 90, 23,154,172,185,115,231, 35,246,201, 19, 85, 82, 34,231,147, 19, 71, +120,142, 31,180, 15, 21, 89,140,233, 73,215,175, 29,169,220,162,101, 47, 0,104,176,115,219,130,139,147,135,186,181, 95,179, 43, + 87,197,110, 73, 37, 95, 59,191,230,243,135,119, 94,185,210, 43,124,252,120,129, 58, 49,209, 20,191, 97,131, 54,227,234, 85, 43, + 79, 36,162,254, 93,186, 16,207,182,109, 29,198, 63,126, 44,248,109,201,146, 86,139,133,194,160, 89, 70,227, 46,166,249,255,167, +201,234,232,235,100,248,215,185, 90,133,205,135,188, 82,190, 4,137, 68,130,125,251,246,129,207,231,131,199,227,129,207,231,151, +248,127, 64, 64,128, 61, 5,233,227,227,227,243,195,186,117,235,188, 59,119,238, 12, 7, 7,135,215,159,113,185, 92,116,236,216, + 17, 29, 58,116,224,167,166,166, 14,218,183,111,223,160,197,139, 23,103, 16, 66, 38, 81, 74, 15,151,161,219, 54, 36, 36,228,240, +217,179,103,197,122,189, 30, 87,175, 94, 69, 94, 94, 30,132, 66, 33, 42, 86,172,136, 78,157, 58,241,158, 60,121,226,214,177, 99, +199,195,132,144,110,148,210, 75,118,148,181,129,151,151,215,149, 3, 7, 14, 56,212,173, 91,151, 60,123,246, 12,225,225,225, 0, + 0,133, 66,129, 94,189,122, 57, 12, 29, 58,180,234,160, 65,131,110, 18, 66, 90, 83, 74,239,150,161, 87,223,199,199,231,231,222, +189,123,251, 45, 94,188,216,217,201,201, 9, 73, 73, 73,105, 62, 62, 62,193,133,251,123,208,160, 65,194,238,221,187,251, 46, 93, +186,116,245,193,131, 7,191, 32,132, 12,167,148, 70,150,166, 91,104,136, 29, 29, 29,145,145,145,129,221,187,119, 99,226,196,137, +224,114,185,200,204,204,196,254,253,251,241,201, 39,159, 20, 26, 26,187,204,176, 68, 34,233, 80,183,110,221, 45, 23, 47, 94,172, +232,226,226, 2, 63, 63, 63,206, 87, 95,125, 85, 59, 40, 40, 72, 92,169, 82, 37,110, 90, 90, 26, 14, 31, 62, 28, 52,108,216,176, + 95, 29, 28, 28, 70,234,245,250, 50,155,212,188,189,189,183,158, 56,113, 34, 32, 38, 38, 6, 27, 54,108, 64,110,110, 46,132, 66, + 33, 92, 92, 92,224,227,227,131,224,224, 96, 50, 99,198, 12,199,238,221,187, 59, 78,154, 52,105, 43,128,122,118, 28,163,186, 94, + 94, 94, 27, 7, 13, 26, 20,180, 96,193, 2, 23, 31, 31, 31, 20, 62, 24, 40, 20,138,138, 73, 73, 73, 77,230,206,157,219,207,219, +219, 59, 33, 51, 51,115, 28,165,244,126, 57, 79,156,122,237,219,183,239,214,171, 87, 47,110, 90, 90, 26,118,238,220,217,141, 16, + 82,207, 94,115,249,119,227,238,157, 91, 24, 59,225, 83,181,159,191,191,224,236,153, 45,125,228,242,154,119, 92,196,249, 19, 82, +203,117, 48,181,107,205,109,216,169,243, 40, 65,215,136, 94,234, 77, 63,174,150,218, 99,180,248, 66,129,251,238, 93, 43,146,175, + 93,191, 91,251,220,249, 91, 93,250,244,232, 65, 5, 2,151, 32, 0,248, 98,202,103,252,195, 71,143,110,235,216,161,113,106,203, + 22, 13,146,135, 12,157, 26, 80,142, 99, 83,189,122,245,234,151,163,162,162,188, 69, 34, 17,114,115,115,221, 55,109,218,180,162, + 69,139, 22,156,248,248,120, 60,121,242, 4,137,137,137, 80, 40, 20,232,216,177,163, 52, 50, 50,114, 61,128, 18,141,150,137,211, +110,145, 95, 37,243, 26,119,177,164,178,201,170,244,162,230,180,154,231, 78,156,171,179,119,167, 46,220,219, 55, 52,120,196, 71, +243,240,245,194, 67,252, 61,187,191,155,123,225,252, 94,128, 83,185,228, 25, 1, 40,154,205,154, 61, 19, 74,149, 1, 67, 7,143, +193,176,193, 99,220, 41,140,190,212,170,151, 24,117,121, 46, 78,130,199,199,215,109, 94,209, 27, 64,197, 34,102,235, 2, 51, 91, + 37,243, 53,143,215,184,219, 15, 63,120,214, 30, 61, 90,116,127,193, 2, 77,246,213,171,186,106, 93,187,230,133,127,252,177, 1, + 0, 84,137,137,130,216,121,243, 28, 61, 91,181, 18, 55,157, 54,205,213,106, 52,250,124, 67, 72,163,175, 40,189, 93, 94,205,128, + 1, 3,172,115,183,109,107,120,117,234,212, 54,196,108,230,118,105,218,244,222,146,157, 59, 95,189,139,230,251, 44,103,234,149, + 43,134,220,160, 32,132,247,234,149, 19,224,229,101,120,159,219,254, 46,229,100,160, 48, 40,149, 6,160,112,100,248,252,235, 21, +165, 20, 39, 78,156,104, 13,224, 50,128, 5, 17, 17, 17,243, 1,192,197,197, 37, 67, 46,151,123, 29, 62,124,184, 76,147,197,231, +243,225,235,235,139,224,224,224,204,140,140, 12,239, 82, 46,142, 47,109, 54, 91, 69, 74,233,235,232, 75, 73, 24, 12, 6,196,197, +197,161, 78,157, 58, 41,148, 82,255,210,154,118, 28, 29, 29,227,159, 60,121,226,241,232,209, 35,220,189,123, 23, 65, 65, 65,112, +117,117, 5,159,207,135,217,108,134, 82,169, 68, 72, 72, 8, 68, 34, 17,234,215,175,159,173,209,104,130, 74,107, 2, 34,132,136, + 36, 18, 73,220,149, 43, 87,252,195,195,195,113,251,246,109,248,251,251,195,199,199, 7, 0,144,152,152,136,235,215,175,163,107, +215,174,136,138,138, 66,223,190,125, 95,106, 52,154, 96, 74,169,161, 36, 77,119,119,247,180,139, 23, 47,166,132,133,133,233, 53, + 26, 13, 39, 35, 35,131,127,245,234, 85,139, 74,165,146, 42, 20, 10,190, 92, 46,231, 43,149, 74,158, 70,163,225,115, 56, 28,129, + 78,167,227, 95,184,112,129,107, 52, 26,157, 75,219, 79,133,199,233,232,209,163, 8, 11, 11,195,225,195,135,241,249,231,159,227, +183,223,126,131,191,191, 63, 14, 28, 56,128,105,211,166,225,233,211,167,240,240,240, 64,205,154, 53, 75, 61, 70, 0, 80,173, 90, +181,103, 15, 30, 60,168, 42, 16, 8, 10,231,117, 44,156, 47, 15, 89, 89, 89,120,254,252, 57, 94,189,122,133,106,213,170, 97,240, +224,193,207, 83, 82, 82,170,149, 85,249, 42, 86,172,152, 21, 19, 19,227, 81,167, 78, 29,100,100,100,192,197,197, 5, 50,153, 12, + 46, 46, 46,175,255, 15, 10, 10,194,212,169, 83,225,227,227,147,169,211,233,188,203, 50, 65, 97, 97, 97,103, 46, 92,184,224,225, +236,236,140,244,244,116, 40,149, 74,240,120, 60, 56, 58, 58,194,195,195,227,181,145,143,139,139, 67, 68, 68, 68,118,124,124,124, +231,114, 68,224, 56,222,222,222, 79,162,163,163,131, 41,165, 72, 78, 78,198,211,167, 79, 49, 97,194,132, 56,189, 94, 31,250, 79, +154,179,175, 72,222,149, 96,248, 71, 99, 5,189,123, 54, 51, 62,142, 57, 78, 68,182,167,168, 87,219, 89, 1, 0,247, 30, 42,101, + 6, 78, 8,106,212,234, 70,127,249,245,119,225,207,219, 55,241, 97,131, 55, 8,158, 62,138,165,223,148,164,221,185,157,223,232, +207, 62, 27, 89,187, 77,139,214, 28,149, 70,227,181,126,253,202,250,241,241,143,189, 0, 32, 40,168, 70,230,248,241, 83, 34,157, + 36,146,204,203,215,175,216, 86,173,218,250,240,204,197,212,205,118, 28,155,160,224,224,224, 27, 71,143, 30,245,240,242,242,130, + 76, 38,131, 70,163,129,201,100,194,163, 71,143,244,251,246,237, 51, 59, 59, 59, 59,165,167,167, 67, 46,151,131, 16,130,163, 71, +143, 38, 83, 74, 3,223,212, 42,204,209, 2,128, 9, 31,212,224,215,108, 23,236, 42, 16, 89,196, 98,126,172, 47,136, 85, 68,168, +212,251,212,153,123,117, 78,157,187, 61,164,119,159,207, 61, 91,182,238,141,185,115,250,153, 83, 83,147,195, 77,104,249,164,184, + 28,173, 26,193,164, 93,175,190,189,251,127,253,245,124,204,159,187, 0,199,143, 30, 81, 72, 37, 28,131,179, 11, 95,214,170, 73, +115,253,212,137, 61, 95,170,213,169,254, 95, 47,221, 55, 56,162,231,212,138, 45, 90,246,194,245,107, 71,176,115,219,130,187, 68, + 76, 89, 51,226, 27, 44, 32,196,213, 37, 40,104,220,228,184, 56,193,253,249,243,213,150,212,212,188, 6, 83,166,100, 23,183,110, +202,185,115, 18,161,159,159,179,107,143, 30,110,171, 3, 3,169, 57, 51,115, 99,113, 57, 70,197,105,158,151, 74, 93,246,158, 58, +213,158,242,249,173,167,127,249,165,184, 91,183,110, 80, 42,149, 56,116,232, 16, 54,110,216, 96,240,245,245,125,224,247,240, 97, + 84,109,165,114,142,189,154, 13,166, 76,201,182, 90,173,164,255,180,105, 29, 99, 18, 19,219,165,103,102, 86, 2, 0, 95, 55,183, +151, 13,130,130,238,110, 61,126,252,233,218,202,149,109,246,150,243,167,211,167,189, 15, 38, 37,141,118,115,115, 19,103,100,102, +242, 68, 66, 97, 78,147,154, 53, 15,252, 56,123,246,101, 75,116,180,192,161, 98, 69,103, 89,183,110,229,222,246, 6, 83,166,100, +231,170, 84,188,201, 11, 23, 54,127,145,145, 81, 73,109, 48, 84,147,171, 84, 62, 86,179,153,227,236,232,152, 83, 37, 36, 36, 83, +119,245,106, 90, 21,173,246,211,159, 40,205,252,171,142,117,113, 94,228,111, 20,209,122,179,215,225,159,230, 58,188, 28, 17, 17, + 65,138,113,102,118, 69,179,248,124,254, 31,154,169, 74, 65, 64, 8, 65,100,100, 36,220,221,221,225,227,227, 3,145,232,143,147, + 15,102,101,101,225,183,223,126,195,227,199,143, 81,183,110, 93, 0,249, 79,212, 37, 33, 18,137, 62, 91,186,116,169,139,209,104, +196,221,187,119,209,160, 65, 3,136, 68, 34, 8, 4,130, 63,152,192,204,204, 76,212,170, 85, 11,211,167, 79,151, 45, 94,188,248, + 51,148, 50, 71, 29,143,199,155, 52,102,204, 24,175,194, 8,214,203,151, 47, 81,191,126,253,215,159,123,122,122,226,222,189,123, +104,208,160, 1, 42, 86,172,136,126,253,250,121,237,220,185,115, 18,128,239, 75,210, 20, 10,133,156,176,176,176,134, 5, 17, 35, +112, 56,156, 88,103,103,103, 79,111,111,111,137,179,179,243,159,182,113,219,182,109,114, 14,135, 99, 46,107,135,114, 56, 28,164, +167,167,163,118,237,218, 80, 40, 20, 0, 0,141, 70,131,106,213,170, 65,169, 84,190, 54,173,126,126,126,208,233, 74, 79,253,170, + 91,183,238,252,208,208,208, 78,109,218,180, 17,241,249,124,220,191,127, 31,225,225,225,216,183,111, 31, 2, 2, 2,224,232,232, +136,184,184, 56,132,133,133,225,202,149, 43,240,244,244, 68,173, 90,181, 68,245,235,215,191,150,155,155,123, 41, 41, 41,105,126, + 41,229,228, 72,165, 82, 92,185,114, 5, 91,183,110, 69, 98, 98, 34, 82, 83, 83,225,228,228,132,122,245,234,161,102,205,154,104, +214,172, 25,226,226,226, 64,202,168, 76,132, 16,159,224,224,224,227,183,111,223,246,160,148, 98,231,206,157, 80,171,213, 48, 26, +141,224,112, 56,112,112,112,128,171,171, 43,218,181,107, 7, 79, 79, 79, 4, 7, 7, 99,255,254,253, 30, 31,124,240,193,201,130, +136, 84,122, 89,251,213,213,213,245,211,121,243,230,249,123,121,121, 33, 41, 41, 9, 10,133, 2,222,222,222,104,211,166, 77,133, +243,231,207,127, 10, 96,229, 63,229, 70, 86,152,248, 78, 8, 33,103,207,108,233, 19, 92, 37, 47,172,110,136,163,255,225,227,222, +254,251,142,103,214, 2,128,218, 53,188, 99,250,116,115,124,121, 63,230,248,203,179,103,142,220,125, 28,139,195,246, 52,109, 43, +180,134, 3,231,206,223,234, 18, 94,183,190,109,233,119,211, 34, 38, 78, 24, 45,242,242, 30,133,140,228, 35, 56,127, 49, 50, 96, +218,231, 99, 60,191, 95,254,211,169,115,231,111,113, 20, 90,195, 28,123,202, 91,189,122,192,218,237, 63, 54,243, 80,101, 31,196, +179, 39, 66,136,157,106, 35, 40,168, 58,148, 74, 37, 28, 28, 28, 28, 6, 15, 30,108,157, 57,115,166,214,217,217,217,145, 16,130, + 75,151, 46,101, 2,232, 92,150,174,222,203,149, 90, 77,102, 11, 21,114,109,148, 56,233,136, 53, 87,248,240, 81, 2, 58,117,104, +155,209,162,113,237,197, 51,191, 94, 62, 43,184,122,184,231,200,209, 11,248, 11,231, 15,217, 0,130,150,197,233, 60,142,163, 23, +107, 86, 37, 98, 0, 17, 95,127, 51, 31,241,241,113,174, 99, 71,200, 23,240, 68, 98,191,208,192,230, 78, 27,182, 94,234, 82,173, + 90,229, 74, 83, 39,245, 59,177,226,135, 21, 17, 69, 35, 91,219,183,205,251,149, 16,210,158,254,149,227,238,252,253,168, 51,236, +248,113,168,147,147,205,185,215,174,233,219,255,240, 67,182,127,231,206, 43,141, 38,147, 71,225,165,130, 67, 8, 72, 97,234,132, +205, 70,120,211,167,115, 40,143, 7,179,171,235,136, 25, 64,245,178, 52, 63, 79, 75,235, 51,100,244,232,136, 95, 79,159, 70,229, +202,149, 95,223,207, 92, 92, 92, 48,109,218, 52, 76,153, 50, 69,116,239,222,189, 70, 7, 15, 30,108,244,253,178,101,222, 51,128, + 62,246,148,243,236,205,155,174, 31,127,253,245,236,186, 13, 26, 4,236,216,189, 91, 84,181,106, 85, 0,192,243,231,207,131,191, + 91,178, 36,176,118, 88, 88,198,226,207, 62,219, 30, 51,115,102, 45, 0,215, 74,211, 76,191,122,213,120, 48, 41,105,244,197, 75, +151, 92,106,215,174, 13, 0,120,250,244,169,215,234,213,171,199,212,234,215,111,232,215,227,199,207,233,166,215,203,157,179,178, + 68,221,214,174,229,237,237,223,191, 76,205,194,114, 2, 64,155,145, 35, 63,107,217,182,109,205, 62,163, 71,187, 5, 4, 4, 16, +169, 84, 10,147,201,132,212,212, 84,215,152,152,152,170,199, 85, 42,229, 47, 55,111,238,252,169, 96,178,248,191,136, 98,189,200, +223, 41,146, 85,172,167, 40,248,219,230,196,137, 19, 20, 64,155,136,136,136, 43,133, 55,112,171,213,106,151,201,226,241,120, 40, + 72, 22,182,183, 64,200,206,206, 70,118,118,246,235,166,163,204,204, 76, 92,188,120, 17,113,113,113,224,243,249, 16, 8, 4, 48, +153,202,158,131, 86, 34,145,116,232,208,161, 3,239,230,205,155, 8, 10, 10,130, 88, 44,126, 93,174,194, 69, 32, 16,192,215,215, + 23, 74,165, 18,237,219,183,231,175, 89,179,166, 67,105, 70, 75, 38,147,117, 29, 48, 96,128,176,240,181, 90,173, 6,151,203,125, +109, 90,212,106, 53,114,115,115, 33,151,203,161,215,235,209,180,105, 83,225,241,227,199,187,150,102,180,138,162,213,106,213,153, +153,153, 46, 45, 91,182,116,221,190,125,251,211,166, 77,155,134,252,161,166, 93,190,172,215,235,245,124, 14,135, 99,215, 60,122, +187,118,237,122,189,239, 95,189,122,133, 13, 27, 54,188,254, 44, 46, 46, 14,107,214,172,121, 61, 21, 64,105,199, 40, 52, 52,244, +131,157, 59,119, 54,216,177, 99, 71, 30,151,203,197,211,167, 79,177,123,247,110, 80, 74,225,233,233, 9,173, 86,139,140,140, 12, + 92,186,116, 9, 22,139, 5, 82,169, 20, 21, 42, 84,112,152, 52,105, 82,139, 5, 11, 22,240, 1,148,104,180,172, 86,171,149,203, +229, 34, 48, 48, 16,115,231,206,133, 94,175,135, 64,144,239, 47,149, 74, 37,228,114, 57,162,162,162,144,148,148,132,178,110, 50, + 14, 14, 14,253,118,236,216,225, 37, 20, 10,161,211,233,160, 82,169,240,242,229, 75,188,120,241, 66,159,153,153,105,113,114,114, +226, 4, 6, 6,114, 68, 34,145,168, 87,175, 94,164,208,112,118,235,214,205,125,231,206,157, 3,203, 50, 73,132, 16,207, 26, 53, +106,204, 26, 51,102,140, 67,209, 58,155,158,158,142, 62,125,250, 56,254,254,251,239, 51, 9, 33,187, 41,165, 89,255,176,144, 55, +149,203,107,222,185,123,254,105,216,225,227,222,254, 47, 82,172,205,167,125,177,156, 7, 0,155, 54,126,219,252,240,241, 87,191, +133, 86,206,120,121,240,151,234,119, 92, 92, 30,209,178, 34,130,237, 90,251,118,247,118,119, 25,208,167, 71, 15,186,126,253,202, +250, 19, 39,140, 22, 5, 86,159, 6, 0,168,192,247, 66,123,203, 55, 68,171,123,238,176,126,253,202,250,125,122,244,141, 74, 76, + 76,218,216,190,141,223,254,139, 87,210,142,149, 22, 49,244,114,119,168,224, 40,210,160, 66, 80, 77,132,212,144,224,222,253,167, + 56,116,224, 6,106,212,106, 2,131,193, 0,139,197, 34,233,222,189,187,118,223,190,125,250,216,216, 88,149, 78,167,107, 77, 41, +141, 45,107,251, 83, 82, 30,217, 66,124,154,152, 4, 98,145, 69,165, 16,104,103,204, 57,216,191,126,227, 78, 13, 92,125, 43,240, + 61, 37,182, 99, 31,116,108,180,123,235,230,185, 83,230,204,219,141,134,141, 58, 53,125,252,244, 90, 77, 0, 15,138, 53,175,207, +233,241,218,193,196, 18,255,236, 89,196,139,164,164,148,234,222, 62,198,231,114,106,254,116,198, 79, 29, 91,182,238, 87,167,106, +141, 86,194,199,143,174,144,185,211, 7,238,249,122,233,138,193,133,102,235,194,185, 61,173, 71,140,184, 33, 4, 96, 96,254,170, +224,233, 92, 36,170, 40, 13, 12,228, 37,110,223,174, 11,234,222, 61, 15, 0,140, 38,147, 71, 98, 82,146,204,209,209, 17,148, 82, +152,205,230, 63,228, 16, 23,230, 13,215, 14, 9,241,182, 71, 51,241,171,175,234, 76,159, 62, 29,233,233,233,176, 88, 44,224,243, +249,111, 94,179,161,209,104, 48, 98,196, 8,172, 93,182,172,137, 61,154, 86,171,149,124,252,245,215,179,191,156, 61,187,234,184, +113,227, 56, 69,175,189,110,110,110, 56,120,232,144,112,221,186,117, 21,103,173, 93, 59, 98,136, 72, 20, 95,150,102,118,181,106, +112,203,200, 16, 23,154, 44, 0, 8, 9, 9,193,134, 13, 27, 68,163, 70,141, 18,118,239,222,125,249,189,186,117, 87,175,108,209, +226,153,123,245,234,206, 66,145,168,162,189,251, 19, 0, 84,122,125,237,149,171, 87,187,222,186,117, 11, 25, 25, 25, 72, 79, 79, + 47, 60,151,209,176, 97, 67, 50,108,216, 48, 89, 21,127,255, 70,127,241,225,254,147, 23,249, 27, 69,180,198, 22,115, 77,253, 79, +142, 86,193, 6,145,130, 13, 36, 69,110,142,127, 48, 44,101, 25,173,183, 65, 46,151, 67, 46,151, 99,243,230,205, 16, 8, 4,175, +111,190, 0, 96, 52, 26,237, 49, 45, 97,126,126,126, 80, 40, 20,168, 94,189,250, 31, 34, 89, 2,129, 0, 60, 30, 15, 2,129, 0, + 34,145, 8, 6,131, 1, 1, 1, 1,208,106,181, 97,165,105,234,116,186,122,110,110,110,175,111,176, 6,131,225,181,201, 42, 44, +175,209,104, 68, 94, 94, 30,212,106, 53, 84, 42, 21, 52, 26, 77,184, 61,219,107,179,217,240,240,225,195,231, 33, 33, 33,245,184, + 92, 46,164, 82,169, 68,163,209,188,206, 45,202,205,205,197,207, 63,255,172,249,240,195, 15, 61,142, 30, 61,170,181,227,224,226, +147, 79, 62,129, 72, 36,130, 86,171,197,250,245,235, 49,121,242,100, 8, 4, 2,168, 84, 42,108,216,176, 1, 83,167, 78, 5,143, +199,131,209,104,196,234,213,171, 75,142,108, 60,122,148,120,243,230,205,240,250,245,235,187,254,242,203, 47, 89, 29, 59,118,244, +236,220,185, 51,196, 98, 49,116, 58, 29,204,102, 51,154, 52,105,130,208,208, 80,100,102,102,226,212,169, 83,217,193,193,193, 30, +183,110,221,178,165,167,167,191, 40,235, 38, 94, 36, 98, 8,171,213,138,140,140, 12,200,229,114,100,101,101, 33, 53, 53, 21, 41, + 41, 41,224,241,120, 40,235, 97,222,221,221,189,111,237,218,181,185, 0, 32, 22,139, 81,175, 94, 61,204,158, 61,219,162,211,233, + 6, 0, 56, 85,176,218, 7, 63,253,244,211, 47,215,175, 95,231,249,249,249,225,201,147, 39,240,244,244,228, 57, 56, 56,148,105, +180,124,124,124,182, 29, 59,118,204,173,208, 92, 23,238,103,173, 54,255,112,244,233,211,199,109,199,142, 29,219, 0,116,253,167, +221,212, 92,196, 16,212,171,237,172,216,119, 60,179,214,180, 47,150,243, 66,107,231, 63,188,142, 29, 7,222,247,203, 62,175, 53, +180,167,243, 9, 23,177, 82, 80,150,206, 7, 29,252,215,245,232,209,145, 51,120, 80,183, 56,129,192, 37,104,227,166, 5, 94, 94, +222,163,138,132, 56,157,225,238,225,140,160, 64,225,255,177,119,213,225, 85, 28,111,247,204,238,213,220,184,123, 66,144, 36, 16, +130, 75,139, 83,156, 64,113, 43, 45, 80,138,150, 22, 40, 20, 41, 90, 42, 72,161, 72,113,104,139,187,150,224,148, 32,197, 61, 9, + 16, 8,144,132,184,235,245,221,157,239,143,200, 47,164,145,155, 64,141,111,207,243,220,231,222,221,187,123,118,102,103,118,231, +204, 59,239,188, 67,246, 7, 63,116,154, 49,243, 27,221,142,109, 63, 62,219,181,251, 88, 87,185,244, 76,103, 0,227,202,226,142, +136,204, 60,170,214, 41,235,100,167,221, 39,118,206, 45,209,176,129, 63,156, 28, 51,176,233,215, 61,240,169,222, 20, 58,157, 14, + 86, 86, 86, 42,158,231, 13, 44,203,238, 48, 69,100, 1,192,185,115,153, 66,221,186,153,122, 54, 71,224, 62,253,124,105,159, 78, +221,222, 15,120,239,189,142,194,233, 51,167, 13, 45, 27, 25, 18,186,117,105,152,116,242,204,154, 39, 9,241,207,125,235,214,107, +133,240,176,243, 93, 1, 18, 10,148, 94, 97, 67,159,208,147, 53,107,146,243,123,246,140, 22, 52,194, 29,179,111,191,123,208, 45, + 40,104, 88, 96,155,214,109,132, 51,103,127,215,203,145,250,208,170, 85,139,184, 79, 63,233,118,232,231, 29, 43, 59,159, 60,241, +107,173,172,236,232, 99,191,254, 74, 69,145, 85,188,147,198,113,206, 18,133,130, 73, 57,127,158,171, 55,114,164,174,240,121, 84, +169, 84, 56,114,228, 8,228,114,121,209, 71, 38,147, 21,253,118,118,118, 46,156,124,101, 18, 39, 0, 36, 36, 36, 32, 49, 49, 17, +214,214,214,112,116,116, 68, 98, 98, 34,174, 92,185,130,136,136, 8, 72,165, 82,116,237,218, 21, 76, 25,190,205, 37, 57, 7, 76, +157,218,169, 78,189,122, 94, 37, 69, 22, 0, 24, 12, 6,164,167,167,163, 87,175, 94,204,137, 19, 39, 92, 78,198,196,188, 63, 7, +216, 81, 30,103,163,160,160,180,164,253,251, 75,189,118,227,198,141,201, 31,127,252,161,232,218,165,203,228, 41,223,125,183,230, +167,109,219, 94,242, 28,231, 82,153,188, 51, 12,195, 16, 66,224,233,233,137,244,244,116,228,230,230,143, 96, 91, 88, 88,192,214, +214, 22, 70,163, 17, 2,165,210,191,178,172,203,210, 34,255,145,142,234,198, 66,193, 85, 50, 50,188,164, 96, 92,180,240, 69,209, +174,120,195, 34, 8,130, 73, 34, 75, 42,149, 86,232,115,101,138,149,171, 36, 76, 17, 90,133,105, 85, 42,149, 69, 15, 90,113,129, + 85,152, 78,134, 97,192,178, 44, 76,177,200, 11,130,192,230,228,228,224,192,129, 3,104,219,182,109,209,176, 84, 86, 86, 22, 50, + 51, 51,145,149,149, 5,173, 86,139, 23, 47, 94,224,220,185,115,168, 85,171, 22, 96, 98,240,215,103,207,158,221,242,241,241,105, + 82,216,136,183,111,223,222, 99,203,150, 45,241,221,187,119,119,163,148, 98,246,236,217,169,239,188,243,142, 67,241, 70,190, 34, +176, 44,139, 43, 87,174,160, 86,173, 90,160,148, 66, 38,147,225,241,227,199,112,114,114,130, 32, 8,144, 72, 36, 72, 73, 73,129, +165,101,249, 49, 18, 67, 67, 67, 71,124,252,241,199,241,214,214,214,245,211,210,210, 18, 20, 10, 69,235,139, 23, 47,122, 26, 12, + 6, 88, 89, 89,193,202,202, 10,199,143, 31,135,141,141, 13, 38, 77,154, 20,163,209,104,174,152,155,155, 59,107, 52,154,251,137, +137,137,179, 43, 83,222, 28,199, 33, 47, 47, 15, 25, 25, 25, 72, 79, 79, 71,118,118, 54,180, 90,109,133,105, 44, 13,173, 91,183, +198,177, 99,199,216,133, 11, 23,254,252,236, 89,126,199,176, 70,141, 26,152, 52,105, 18,235,238,238,142, 23, 47, 94,224,214,173, + 91, 48, 24, 12,160,148,150,251,240, 74,165,210,246, 83,166, 76,105,229,229,229, 69, 12, 6, 3, 4, 65,128, 78,167, 67,225,239, +152,152, 24,212,169, 83,135,241,246,246,126,151, 16,210,222,148,137, 21, 34,242,145, 20,115, 24,238, 82, 39,128,177, 2,213, 28, + 70, 90,106,213,150,141, 76, 78, 78,254,110,218,156, 63, 70,254,180,196,224, 28,155, 0,248, 7,246,134,111, 64, 7,140,248,144, +195,194, 31, 14,192,203,219, 31,209,209,209,104,223,190,189, 44, 62, 62,254, 99, 0, 83, 77,229, 62,115,230, 26,127,250,248,137, +254, 3, 6, 13,107,210,177, 99,119,238,212,169,227, 8,189,127, 42,236,227, 65,253,146,169,144, 75,236,108,204,238, 60,126,116, +211,183,126,195,118,208,115,124,107, 96,254, 18, 0,101,190, 84, 34, 35,169,254,235,175,191,102,130, 15,255,250,225,144,161,195, + 27,116,232,208,217,120,234,204,111,184,117,245,204,189,101, 75, 70, 93, 88,184,114,111,251, 78, 93,251,213,117,116,190,114, 60, +208, 79,247,137,167,189,117,164, 88, 83, 74,135, 68,169, 20, 80,240, 94,100, 8, 1,165,244, 21,145, 85, 82,104, 49, 12, 83,161, + 1,160, 56,103,241,182,168,176, 67,189, 97,195, 6, 40, 20, 10,200,229,114, 72,165,210, 10,221, 47,138,115,134,189,120,241,222, +214, 29, 59, 20,165,137,172,180,180, 52,164,165,165, 33, 55, 55, 23,131, 7, 15,150,125,125,243,102,227,138, 56,189, 92, 93,117, +230,102,102, 73,225,225,225,110, 1, 1, 1,175,164, 55, 59, 59, 27,102,102,102,216,177,115,167,172, 71, 80,208,248, 14,199,143, + 47, 3,144, 89,217,188, 19, 66,224,228,228, 4, 91, 91, 91, 16, 66,192,113, 28, 18, 19, 19, 17, 22, 22,134,155, 55,111,130, 37, +132,251, 43,203,184, 52, 45,242, 95,179,106,149, 20, 89,197, 45, 90,164, 44,235,139,169, 66,139,101,217, 42, 91,181,202,130, 41, + 67,135, 42,149,234, 65,124,124,124, 75,119,119,119,112, 28, 87, 36,180, 74, 14, 29, 22, 90, 63,238,222,189, 11,149, 74,245,160, + 34, 78, 74,233,187,205,154, 53,195,193,131, 7,113,254,252,121, 60,127,254, 28,106,181, 26, 58,157, 14, 26,141, 6, 97, 97, 97, + 16, 4, 1,129,129,129, 48, 55, 55,175,144, 19, 0,242,242,242, 18,164, 82,169,191,153,153, 89,209, 62, 87, 87, 87,164,165,165, + 9, 70,163, 17, 91,183,110,205,118,113,113, 49, 55, 51, 51, 51, 89,184, 18, 66,144,156,156, 12, 15, 15,143, 34, 31,173,156,156, + 28, 56, 57, 57, 21, 10, 11,232,116, 58, 88, 90, 90, 86, 56,116, 72, 41,213, 2,152, 82,140,187,233,128, 1, 3,118,237,217,179, +167,250,217,179,103,113,253,250,117, 56, 58, 58,226,251,239,191,127, 30, 21, 21, 53,132, 82,122,243, 47,168,168, 21, 30,147,150, +150,118,224,193,131, 7,239, 54,107,214,172,232, 45,209,190,125,123,210,190,125,123,135,226,166,254,148,148, 20,220,184,113, 3, +103,207,158, 5, 33, 4, 79,158, 60,225, 53, 26,205,174,114,174, 45,243,246,246,222, 50,107,214, 44, 11,142,227,138,234,182,153, +153, 25,148, 74, 37,100, 50, 25, 88,150, 69, 84, 84, 20,122,245,234,101,189,122,245,234, 95, 9, 33, 53, 41,165, 6,188, 37,200, +212,192,112, 55, 52,219, 58,176,142,115,216,198, 13, 11, 91,142, 30,131,194,161, 67, 46,176,142, 83,216,221,208, 36,235, 38, 78, + 48,216,200,203,231, 57,113,246,229,167,122,227,137,158, 39, 78,134, 12,252,114,242, 36,105,141, 26,117,146,207,254,126,219,171, + 3,247, 13,177,119,176, 66, 90,106, 54,162, 98,146,240, 44, 90, 79,107,212,168,147,124,235,198, 3,197, 15,203, 87,248,230,169, +181,123,127,191,144,240, 91, 5,157, 50, 45, 33,164,247,178, 85,138, 11,195, 62,110, 42, 55, 51,115, 67,122,234, 3,120,121, 57, +162, 87,143,250,248,101,219, 21, 88, 91,219,193,217,217, 25, 12,195,152,155,154,247,212,212, 84,114, 96,247,165,145, 31, 13, 31, +245, 78,151,206, 65,220,201, 83,193,146,243,167,143, 94,249,117,227, 87,135, 40,155,167, 34, 52,199,172,154,143,203,253,200,167, +119,135,188,215,113, 48,204,100,150,181,128,218,165, 86,216,162, 9, 6, 20, 49, 12, 3,229, 71,195, 71,183,232,210,229,125,238, +212,169,195, 56,117,124,219,181,121,243,170, 29,127, 30,183, 83,118,245,102,172,178,119,255,113, 25,199, 78, 60,212,247,235,233, + 19,225,102,222, 80, 3, 17,175,118, 36, 37,146, 36, 78,167,243,244,232,210,133, 85, 71, 71, 75, 45,156,157, 57, 0, 48, 26,141, + 21, 10, 45, 0,130, 41,156,166,166, 69,173, 86, 67, 0, 56, 83, 56, 19,147,147,171, 21,116,194,139, 96, 52, 26,139, 68, 86, 90, + 90, 26, 50, 51, 51, 97,110,110,142, 20,157,206,217, 20,206,206,205,155,111,253,122,254,252,169,251, 15, 28,144, 21, 23, 89,133, + 31,169, 84,138,197, 75,150,200, 62,255,242,203,113,227, 37,146,137,149,185,159,133,157,118,150,101, 33,145, 72, 16, 29, 29,141, +152,152, 24, 68, 71, 71, 35, 58, 58, 26,102,102,102,160,101,220,207, 55,104,209, 34,255,213,122, 90, 56,116, 88,124, 8,209,164, +240, 14,149,113,134, 55, 85, 24,240, 60,255, 70,133, 86, 94, 94,222,217,115,231,206, 53,239,221,187,183,228,218,181,107,112,113, +113, 41, 18, 90,133,223,133,195, 81, 42,149, 10,135, 14, 29, 50,228,229,229,157,173,224, 97, 58,119,252,248,241, 38,115,231,206, +149,142, 24, 49, 2,225,225,225, 24, 51,102, 12, 50, 51, 51,145,157,157,141,180,180, 52,168,213,106, 52,111,222, 28, 74,165, 18, +247,239,223, 55,170,213,234,115, 21, 52, 14, 52, 57, 57, 57,215,209,209,209,181,228,127,253,251,247,119, 94,187,118,173,250,209, +163, 71,198,150, 45, 91, 90,153, 42, 56, 10,177,123,247,238, 34, 75, 93, 68, 68, 4,214,174, 93, 91,228,147,117,251,246,109, 44, + 93,186,180, 40,246, 89, 37,173,140, 55,235,214,173,203, 25,141, 70,212,170, 85, 11,238,238,238,208,106,181, 88,177, 98, 5,247, + 87,136, 44, 83,161,213,106,247, 15, 27, 54,108,250,157, 59,119, 92, 37, 18, 73,190, 73,187, 32,127, 6,131, 1, 79,159, 62, 69, + 88, 88, 24, 30, 61,122,132,244,244,244,162,142,192,221,187,119, 51,140, 70,227,222,178,120, 29, 29, 29,103,255,242,203, 47, 46, + 42,149,234,149,250, 92,104, 13, 45,180,146,166,164,164,192,198,198, 6, 29, 58,116,112, 58,119,238,220,108, 0,115,223,134, 6, +141, 16, 66,222,107,203, 54,253,252,211,222,232,219, 67,245,242,224,177,184, 63,150,254, 48,165,192, 25,222, 41,172,111, 15,247, +151,247, 30,219,160,127,159,195, 77,127,191, 64, 98,203,243,165, 43,240,177, 58,210,188,185,221,249,131, 71,143,254, 58,115,218, +228,219, 83,167,140,114, 84,107, 34,149, 53,188,229, 4, 0,158, 69,235,233,253,112, 65,187,116,217,228,219, 11,151,172,102,146, +210, 50,199, 92,191, 94,118,120,131,226,226,165,174, 31,148, 53,106,183,141,247,245,107,229,115,237,202, 14, 88,168, 52,240,175, +221, 20, 93, 58,191,139,243, 33,119,145,152,162, 69, 66, 66, 2,116, 58, 93,185,225, 18, 30,221, 63,244, 33, 37,212,139, 80, 18, + 67, 24,170,252,112,216, 39,173,131,130,222,167,199,142, 29,229, 14, 31,218,113,121,239,246, 85,251, 25,153, 84,162,209, 91,235, + 9,209,102,129, 9, 13,207,205,203,239,208, 72, 21,178,178,205,175, 5,129, 93, 3,234,214,118,249,112,216, 24,235,238,221,122, +209,227,199, 15, 11,123,247,108, 61,191,119,115,189, 29, 2,147, 45, 75,120,169, 86,100,101, 27,179, 40,145,219,228,102, 11,234, +164,103, 53,181,110, 65,253,223, 26,209,254,198, 58,220, 58, 93,108,238,203,151,174,118,109,219, 42,158,206,159,175,114,110,222, + 92, 75, 10,124,136,203, 19, 90, 44,203, 2, 12, 35,152,194,105,106, 90, 52, 26, 13, 4,192, 88, 21, 78,142,227, 94, 17, 89,133, + 66,171,208,174, 97, 10,231,198,121,243,174,121,117,233,146, 30, 18, 18,226,220,174, 93, 59,146,147,147,131,156,156,156, 87,196, +150,155,155, 27, 9, 8, 12, 84,237, 62,127,190,198, 92, 19,239,167, 41,121,103, 24,230, 47, 23, 90,255,101,148,102,201,122,197, +162, 85, 22, 10, 45, 90,166, 8, 45, 19, 45, 90, 70,163,209, 8, 39, 39, 39,164,166,166,150,217,240, 51, 12, 3, 51, 51,179,194, + 49,226,114,103,222,233,116,186, 21, 83,167, 78,157,208,173, 91, 55, 7,127,127,127,164,164,164,192,217,217, 25, 74,165,178,200, +119,172,144,239,246,237,219,248,229,151, 95,178,117, 58,221,138, 10, 56,151, 47, 89,178,228,211,190,125,251,218,185,184,184,192, +214,214, 22,247,239,223,135,173,173, 45,178,179,179,241,248,241, 99, 88, 90, 90, 22,249,237, 28, 61,122, 52, 71,167,211, 45,175, + 64,188,209,139, 23, 47, 26, 44, 45, 45,239,167,164,164,176,233,233,233,146,140,140, 12, 73,118,118,182, 52, 43, 43, 75,122,242, +228, 73, 7,107,107,107,245,239,191,255,158,226,229,229,197, 62,127,254,156, 53, 26,141,140, 9,141, 35, 38, 78,156, 8,153, 76, + 6,157, 78,135, 21, 43, 86, 96,234,212,169, 69, 62, 89, 75,150, 44,193,172, 89,179,138,132,243,166, 77,155, 42, 91,121, 96, 48, + 24, 96, 52, 26, 97, 52, 26, 77, 18,191,175, 3, 83, 4, 59,165, 52,145, 16,210,163, 89,179,102,167,247,237,219,103, 95, 16,147, + 12, 73, 73, 73, 72, 74, 74, 66, 74, 74, 10,114,115,115,193,113, 28,220,221,221,145,148,148,132,195,135, 15,103,229,228,228,116, + 41,111,198, 33,203,178,195, 90,183,110, 45, 41,153,134,194, 94, 94,161,120, 87, 40, 20,136,143,143, 71,251,246,237,229, 33, 33, + 33,195,254,235, 66,171, 80,192,212,241,133,172,115,151,145,178, 58,117, 91,232,239,133, 29,123, 89,219, 39,233,229,208, 94, 86, +193, 0,112, 55, 52,201,250,222, 99, 27,212,169,219,131,118,238, 98,219, 36, 41,113, 99,189, 0, 63, 98, 40,111,185, 30, 0,176, + 86, 41, 6,116,234,216, 60,222,210,220,156, 89,186,108,211,137,117,235,150, 55,222, 31,252,191,240, 14, 75,151,229,135,119,232, +212,177,185,240,232,225,163, 1, 0, 54,155, 42, 94,122,244,232,121,231,151, 45,191,224, 81,216,239,110,211, 39,214,151,167, 39, + 25, 97,102,225,137, 38, 13,157,177,113,203, 3,220,187,119, 47, 81,175,215,183, 47,183, 46, 17,234, 21, 22, 30,234, 87,175,110, +128,203,135,195, 70, 91,245,232,209, 11,199,142, 29,193,246,173,155, 47,246, 27,220,247,231,184,140,108,214, 73,170,146,169,168, + 32,103,101,214, 18,153,194, 44, 89,175,207,159, 3, 33,149, 42,173,128, 1, 66, 57, 35,135, 24, 59,122,168,245,123, 29,123, 33, +248,248, 17,108,223,186,241,194,156,186,253, 55,251, 52,170, 67,154, 55,254, 97,156, 79,117, 31,239,188,220,164,108,134,200, 13, + 90,173, 96,249,195,214,168, 31,159,205, 26,246,236, 78,232,128,101,226,172,195, 87,112,127,123,247,238,205, 62,143,140,148, 57, +182,106,101, 22,127,254,188,170, 96, 37,146,114,133,150, 68, 34, 1, 45,123,168,235, 21, 78,178,109, 27, 3,160,220, 73, 88, 50, +153, 12,106,181, 26, 70,192, 96, 10,167,235,169, 83, 47, 35, 35, 35,125,237,236,236, 94, 17, 89,233,233,233, 69,191,181, 90, 45, +212,106, 53,204,204,204,194, 76,225, 76,186,120, 81,187,104,226,196,185, 67, 6, 15, 94,117,246,220, 57,165,189,189, 61,178,178, +178, 94, 17, 90,122,189, 30,239,117,232, 32, 91,114,231,206,135, 0,230,153,114, 63,157,219,183,175,208, 31,152,101, 89, 8,127, +241,208,225, 91,208, 89, 29, 93,154,240, 98, 42, 26,194, 49,117,214, 97,105, 13, 36, 33,164, 99,137, 93,179,154, 52,105,162,141, +136,136,128,151,151, 87,145, 88, 41,126, 77, 43, 43, 43,216,216,216,224,246,237,219,248,238,187,239, 52, 0,102,149,199, 73, 41, +205, 81,171,213,131, 58,117,234,164,145, 72, 36,168, 93,187,118, 81,252, 44, 65, 16, 32,151,203, 97,110,110,142, 59,119,238,160, +103,207,158,106,181, 90, 61,168,100, 12,173, 82, 56,179,212,106,245, 7,157, 59,119, 86,135,135,135,163,117,235,214,184,119,239, + 30,114,115,115,145,155,155,139, 23, 47, 94, 32, 32, 32, 0,106,181, 26,107,215,174,213,168,213,234, 15, 40,165, 89,229,113,230, +228,228,244,156, 58,117, 42,187,107,215, 46, 31,119,119,247,186, 77,155, 54,245,239,208,161, 67,205, 62,125,250,120,119,239,222, +221,213,215,215, 87,219,165, 75, 23,199,110,221,186, 57,170,213,106,233, 31,127,252,145, 96, 52, 26,187, 85,112, 63,139,196, 73, + 68, 68, 68,209, 80,161, 68, 34, 65,106,106,106, 81,228,254,194,151, 82,105, 66,184, 44,206,226, 98,187, 80, 96, 21, 10,174,138, +218,128, 50, 56, 43,108, 56,228,114,121,161,197,147, 86,196, 73, 41,189,251,240,225,195, 78,109,219,182,189, 59,114,228,200,156, +196,196, 68, 88, 90, 90,162, 70,141, 26,240,243,243,131,131,131, 3, 12, 6, 3, 14, 29, 58,148,119,248,240,225, 7, 89, 89, 89, +237, 75,198,208, 42,201,201, 48,204,139,210, 94,178,133,214,172, 66,161,165, 84, 42,225,238,238, 94,120,111, 95, 84,230,126, 86, +241,225,253,107, 57, 11, 4, 76,135,247,186, 84,239, 30,212,219,250,208,145, 43,242, 85,107, 14, 63,104,210, 17,155,236,171,101, + 31,181,175,150,125,180, 73, 71,108, 90,181,230,240,131, 67, 71,174,200,187, 7,245,182,238,240, 94,151,234,225, 97,143,252, 95, + 89,247,176,148,116, 42,149,202, 22,173, 91, 53,201, 8,185,124, 65, 88,184,100, 53,243, 94,251,126,119, 54,255,124,232,208,230, +159, 15, 29,122,175,125,191, 59, 11,151,172,102, 66, 46, 95, 16, 90,183,106,146,161, 84, 42, 91,152,146,247,177,163,135, 90, 7, +117,239,133, 99,199, 14,113,251,119,175, 93,178,231,192,147,182,159, 76,184,152, 20, 17,113,143, 38,199,158,130,148,137,198,195, +135, 15,179,244,122,125,251,210, 28,225, 75,227, 28, 51,106,104,113,145,117,201,222,165,245,166,135, 15,193,159, 57,243,155,241, +220,185, 59,154, 75,119,147,179,110,133,167,166,199,167,164, 63,207,206, 78,211, 11, 2, 15,158,231,217,175,191,206,119,216, 45, +171,140, 90,182,108,135,223,207,238,196,214, 45, 27,178, 4, 1,218,254,251,246,241, 3, 6,204,167,222,213,170,121,239,216,189, +147,244,120,191,183, 53, 5,132,158,125,123,217,236,218,179,139, 84,175, 85,189, 90,141, 26,249, 33,109,254,147,117,233, 47,224, +156, 71,105, 70,118,116,244,133,219,171, 87,235,156, 7, 13,178,147, 59, 59, 91,129,231, 73,225,251,189,172,143, 68, 34,121,197, + 2, 83, 30,167,187,131, 67,220,209,163, 71,225,231,231, 7,119,119,119, 20,247,145, 45, 12,200,109,111,111,143, 3, 7, 14,128, + 2,183, 76,225,108,228,227,115,123,241,162, 69,122, 65, 16,144,145,145,241, 39,107, 86, 70, 70, 6, 4, 65,192,241,224, 96,125, +118,110,238, 86, 83,243,222,158,101,115,135,180,105,179, 48, 40, 40,200, 16, 25, 25, 9, 65, 16, 80,220,178,149,156,156, 12, 11, + 11, 11,104,117, 58, 79, 66,136,202, 20,206,228,147, 39,205, 81,193,123,189,164, 69,235,175, 40,247,255,186,200, 42,190,160,116, +113,209, 85,174, 69,139,227, 56,120,122,122,190,178,164, 11,195, 48,175,124, 42, 51,227,144, 82,186,141, 16,114,170, 75,151, 46, +115,223,121,231,157,177,115,231,206,101,253,253,253,145,149,149, 5, 91, 91, 91, 56, 57, 57,225,241,227,199, 56,122,244, 40,159, +154,154,186, 30,192, 2, 83,166,208, 83, 74,207, 19, 66,122,212,175, 95,127,207,140, 25, 51,172, 59,119,238, 44,245,244,244, 4, +165, 20,119,238,220,193,193,131, 7, 13,155, 55,111,206, 46, 16, 89,231, 77, 76,235,105, 66, 72,191,110,221,186,237, 24, 54,108, +152, 37,207,243,210, 23, 47, 94, 64,167,211,193,104, 52, 34, 38, 38,198,112,236,216,177, 92,181, 90, 61,148, 82,122,218, 4,190, +219,132,144,128, 51,103,206, 12,251,227,143, 63,190, 27, 57,114,164,125,135, 14, 29,100, 28,199,225,242,229,203, 41,141, 26, 53, +114, 74, 78, 78, 54, 28, 56,112, 32, 77,171,213,206,226,121,222,164, 37,120, 8, 33,200,206,206,134,131,131, 3,116, 58, 29, 4, + 65,128, 94,175,135,133,133, 69,209,178, 73,148, 82, 84,198,185,190, 68, 29, 96, 13, 6, 3, 6, 15, 30, 12, 65, 16,176, 98,197, + 10,112, 28, 87,105, 50,107,107,235, 91,119,239,222,237,209,176, 97,195, 34,241, 82, 88,135, 20, 10, 5, 28, 28, 28, 96,111,111, +143, 99,199,142, 65, 42,149,222, 50,177,140,238, 1,104, 68, 8,105,241,224,193,131,143, 0, 52, 52, 24, 12,238, 60,207, 19,134, + 97, 18, 40,165,247,179,179,179,127, 54,117, 9,158,228,228,228,239,134, 15, 31,222,104,231,206,157, 22, 18,201,255, 30, 13,137, + 68, 2,133, 66,129,194,224,152,148, 82,232,245,122,204,158, 61, 59, 59, 47, 47,239,187,183,229, 69,209,164,105,115,108, 92,187, +210,226,220,239,167, 82, 30, 62,193,193,226, 33, 28,108,228,192,239, 23, 72,108, 82,226,198,122,241, 47, 95, 90, 52,105,218,220, + 36, 78,163,222,144,246,193,208, 47,188, 10,150,224,153,253,226, 69,212,134, 29,219,126,124, 6, 0, 63, 44, 95,225,155,148,150, + 57,230,209,195, 71, 3, 54,108,216,221,194,168, 55,164,153,194,249, 63,241,178, 35, 11, 20, 90, 74,233,117, 66,136, 79,207, 65, + 39,103,213,170,110,245,126,114,154, 38, 46, 55, 87,253, 25,165,244,153,169,121,111,213,178, 45,126, 63,189, 11,219,183,238,200, +166, 2,171,117,112,112,160, 0,240,240,161, 3,125,248, 48,147,254,207,175,216, 38, 79, 74,239, 45,248,226,179, 14, 95,100,101, +167, 47, 95,190,166,252,192,181,245, 27,188,131,250, 13,222,193,132,207,190,178, 14,168, 91,219, 11, 0,246,237,163,124,160, 47, +249,109,238,156,249,239, 47, 88, 48, 31,217, 57, 58, 44, 88,144,191, 92,207,227,208,240,224,200, 72,170, 23,155,173, 87, 49,151, +227,174,227,139, 47,124,213,233,233,142,173,166, 79,119,144,124,249, 37, 83,158, 51,124,241,231,215, 20,206,155,247,239, 7,143, +249,228,147,184,121,115,231,118, 89,191, 97,131, 89,189,122,245,144,152,152,136,218,181,107,195,221,221, 29,103,206,156,193,129, +189,123,243, 50,115,114,102, 1, 88,103, 10,231,182,227,199, 31,251,215,173,155,186, 97,195, 6,183,160,160, 32,146,151,151,135, +172,172, 44,100,101,101, 65,167,211,161, 32, 32, 52,141,120,242,228,161,209,104, 92,111,106,222,249,148, 20,229,130,230,205, 99, +101,130,176,184, 95,223,190, 83, 23,124,243,141,162,122,245,234, 68,167,211, 21, 89,181, 12, 6, 3, 44, 44, 44, 12,122,189,222, + 30,128,218, 20, 78,197,230,205, 92, 74, 74, 10, 28, 29, 29,139,194, 53, 21,143, 75,152,147,147, 3, 74,169, 24, 76,183, 42, 34, +172,172,182,220,206,206,238,150, 68, 34,241, 40,110,221, 42,109,237,188,226,251,140, 70, 99,108, 74, 74, 74,147,226,138,151, 82, +122,182, 12,129, 80, 3,192,247,239,189,247, 94,191, 41, 83,166,144,144,144, 16, 28, 62,124,152, 62,123,246,108, 63,128, 89,101, +189, 36, 43,224,180, 84, 40, 20,147,204,205,205, 59, 22,134,112, 80,169, 84, 15,242,242,242,206,234,116,186, 21,101, 69,131,175, +128,211, 74,161, 80, 76, 52, 55, 55,239,148,147,147,211, 16, 0, 44, 45, 45,239,230,229,229,157,209,233,116, 43,203, 90,168,186, + 2, 78, 51,107,107,235,239, 28, 28, 28, 62,248,242,203, 47,237, 47, 94,188,152,240,251,239,191,203, 50, 51, 51,119,234,245,250, + 50, 23,149, 46,141,211,222,222,254, 22,203,178, 30,127, 69, 25, 1, 64,131, 6, 13,142,245,236,217, 51,104,232,208,161, 48, 26, +141, 88,183,110, 29,206,156, 57, 19,252,228,201,147, 30,229,245, 70, 75,114, 18, 66, 28, 60, 60, 60, 66,198,142, 29,235, 61,120, +240, 96,149,173,173, 45, 36, 18, 9,242,242,242,240,244,233, 83,220,185,115,135, 30, 57,114, 36,247,246,237,219,177,106,181,186, + 29,165, 52,213,212,251,249, 58,189,230,146,156, 82,169,180,173,167,167,231,238,121,243,230, 89,118,234,212,201,204,222,222, 30, + 44,203,194,104, 52, 34, 33, 33, 1,161,161,161, 56,117,234, 84,222,254,253,251,243,210,210,210, 6, 83, 74, 47,252, 19,233,124, +147,156, 1,126,100, 78,137,133,162,203,140,246, 94,222,177,166,164,179, 67, 59,183, 94, 3,250,117,235, 10, 0,251, 14,156, 56, +121, 46, 36,254, 72, 85,211, 89, 81, 90, 77,225,172,227,203,206, 11, 11, 15,125, 37,160,101,221,128,192,136, 58,245,250,126,107, + 10, 87, 97,100,248,146,121, 47, 22,109,191,184, 77,247,149, 97,214,194,133,167,191,154, 53, 19,223,127,183, 16, 71,246, 29, 10, + 14,143,164,199,254,203,117,233,175,228, 44, 92, 4, 89,229,234,218,102,133, 32,204,188, 23, 26,106, 81,188,195, 86,104,121, 46, +222,169,116,115,115, 75,142,143,143,119, 54,133,179,199, 79, 63, 25,212,230,230,138,153,139, 23,183,205,213,106,219, 46, 88,176, + 64,114,243,230, 77,172, 93,189,154,211,198,198,238, 72, 1, 38,150, 54, 26, 82, 30,167,247,196,137,202,105,107,215,142,168, 81, +171,150,211, 71, 31,125, 36,149, 74,165,200,203,203,195,203,151, 47,113,250,212, 41,125,248,195,135,225,217,217,217,239, 83, 74, +227, 77,229,236,241,211, 79, 6,155, 26, 53,160,114,116,164,231,206,159,183, 30, 51,105,210,216,106, 62, 62,214, 93,186,118,149, + 90, 89, 89, 33, 35, 35, 3, 47, 94,188,192,161, 67,135,146,115,115,115,221, 40,165,188, 41,156, 59,254,248,163,254,241, 11, 23, +250,127,251,237,183,242,192,192, 64, 88, 91, 91, 35, 39, 39, 7,161,161,161,184,112,225,130,110,253,250,245, 89, 89, 89, 89, 99, + 57,142, 59,250, 87,149,251,219, 58,116, 72,254, 74, 87, 0, 83, 10,130, 16,210, 4,192,156,130,205,111, 76, 88, 51,240,173,121, +249, 16, 66,188,236,236,236, 54,106,181, 90,170,209,104,198, 80, 74, 99,254,109,233, 36,132, 72,154, 52,105,178, 54, 57, 57,185, + 5,165, 20,214,214,214, 87,194,194,194,198, 83, 74,185,202,114, 18, 66, 88, 0, 45, 44, 44, 44,154, 91, 90, 90,182,213,233,116, +117, 10,134,223, 30,230,229,229, 93, 48, 24, 12,215, 1, 92,161,148,242,255,100,222, 11,210,217,201,205,205,237, 19, 65, 16,106, + 17, 66,108,120,158,135,209,104,204, 20, 4,225,105, 86, 86,214,102, 0,103,254,233,116,190, 41,206,186,181, 72, 31,202,160, 78, + 89,130,224, 21, 97, 83, 66, 64, 16, 1, 15,195,158,210, 67,149,168,243, 76,183,142,158,107,128,252,153,137, 21, 45,101,244,138, +208, 50, 65,188, 84, 90,100,214,146, 12,167,132,122,189,218,251, 36, 49,181,235,247,217,254, 58, 66,203, 84,212,245, 39,109, 65, +209, 66,160,184,254,240, 9,253,253,109,125,215,189, 73,206,133,132,216,173,182,181,189,194, 72, 36, 46, 0,152, 2,235,139, 32, + 16,194, 83, 66,184,226,195, 91,197, 59,150, 21,113, 26,128,122, 82,133,194,147,231, 56,231, 68,192,226, 56,207, 55,214, 82,154, +235, 1,204,185, 67,233,227,170,164,211, 0,212, 99, 21, 10,175,227,148,246, 74, 49, 55,175,159,172,209, 56, 2,160, 22,230,230, + 15,179,243,242,182,106,181,218, 53,165, 44,222, 94, 33,167, 76,161,240,224, 57,206, 25, 0, 24,137, 36,121,143, 78,231, 25,107, +101,245,145, 86,167,243,182,176,176, 48,234,245,250,108,173, 86, 59,212,104, 52,158,171, 76,222,159,114, 92,192, 31, 12,211,218, + 96,110,110,111, 32,196, 92,207,113, 6,189,193,240, 82,171,213, 62, 0,240, 35,165, 52,242,175, 44,247,183, 22,133,179,211,254, +138, 15,128,142, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254,245,156, 0, 84, 0,188, 0,176,255,197,188,191, 77, 31, 0, +163, 11,127, 75, 68,169, 41, 66,132, 8, 17, 34, 68,188, 21,134, 19, 53, 74,241,201, 18,241,207,130, 0,232, 88, 70,129,153,108, + 18,172,202,236, 3, 19,134, 24, 68, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,124,203, 56, 43,226,254, 47, 14, 73,150,183,214, +161, 56,116, 40,114,138,156, 34,167,200, 41,114,138,156, 34,167, 56,116,248, 23,125, 24,136, 40, 75,157, 58, 19, 66,156,223,244, +177, 34,222,238,186, 80,202,185,238,132, 16,247, 74, 30,239, 42,222,117, 17, 34, 68,136,120, 59,240,183, 11, 45, 83, 27,173,215, +108,220, 94, 75,248, 16, 66, 22, 18,130,248,252, 15, 89,248,166,142, 53,225,186,110,142,142,142,159,215,173, 91,119,135,139,139, +203, 4, 66,136, 83, 37,207,247, 53, 55, 55, 95,105, 97, 97, 17, 98, 97, 97, 17, 98,110,110,190,146, 16,226,251,134,202,141, 16, + 66,198, 40,149,202,243,110,110,110,113, 10,133,226, 60, 33,100, 44,169,226, 2,151,132, 16,127, 66,200, 2, 66,200, 55,132,144, +250,149, 57,215, 57,176,247, 94,167,192,222,247,157, 2,123,135, 58,212,123,223,215, 41,176,119,168, 83, 96,239,251,206,129,189, +247,254, 5,245,181,202,229, 91,112,110, 76,254,167,226,115, 9, 33, 63, 18,224, 37, 33,136,125,221,186, 36, 66,132, 8, 17, 34, +254, 29,168,148, 51,188,187,187,123, 63, 74,233, 24, 0,148, 16,178, 49, 46, 46,238, 64, 21, 26,158,105, 5,191,151, 80, 74,103, +190,206,113, 38,156,187,156, 82, 58,181,242, 34, 13,211, 4,129, 50, 0,192, 48,100,186,179,179,179,138,101,217, 63, 57, 24,242, + 60,175, 34, 4, 19, 4,129,146,130, 99,167, 17, 66, 86, 82, 74,147,170, 34, 14, 63,252,240,195,229, 43, 87,174, 84,170, 84, 42, + 68, 71, 71,119, 30, 59,118,108, 75, 66,200, 23,148,210,132,138,206, 55, 51, 51, 27,210,172,121,139, 47, 22,255,176,204,194,217, +201,201,156,227, 5,195,139,232, 40,213,236, 25, 83,155,155,153,153,173, 44,111, 49,229,146,130, 10,192,104,137, 68, 50, 80,169, + 84,214,212,106,181,145, 28,199,237,103, 89,182,203,119,223,125, 23,216,189,123,119,101,118,118,182,156,227,184, 90,219,183,111, +255,226,151, 95,126,233, 70, 8,233, 85,222, 52,253, 66,139, 14,165, 52,174,216,238,254,209,209,209, 77,100, 50, 25,169, 81,163, + 6, 3,224,126, 5,199, 23,129, 2,190, 97,151,247,213, 3,128,186,173, 6, 68,132, 93,222,135,130,223,127, 65,167,224,213,186, +160, 84, 42,215,107,181,218,152,194,255, 11,210,153,100,202,185,132,144, 85, 5,203, 7, 53, 1,240, 81,193,161,219, 40,165,183, + 8, 33, 46, 74,133, 98,146, 70,171, 37, 0,200,235,212, 37, 17, 34, 68,136, 16,241,183, 27,145, 26, 81, 74,239, 20,140, 72, 4, + 1, 8, 46,108,187, 43, 59,235,240,211, 39, 79,158, 88, 0,128,159,159,223,120, 0, 7, 42,145,136, 63, 53, 60, 29, 58,116,104, +100,102,102,246, 74, 20,100,141, 70, 35, 39, 4, 29,170, 34, 94, 10,175,161,215,235, 24,169, 84, 14,134, 33, 95,212,175, 95,191, + 90,106,106,234, 69,134, 97,118,196,198,198,102, 84,225,230, 97,211,166, 77,126,174,174,174,127,138,214,156,144,144, 32,239,213, +235,253, 74,241,141, 32, 68,161, 83, 40,154,203, 8,113,229, 57,206, 6, 0, 36, 18, 73,134,191,181,117,147,239,191,253, 86, 69, + 8, 17,210,210,210,160,209,104, 48,121,242,100,179,240,240,240,222, 0,214, 84,144, 70,191,119,222,109, 57,249,212,169,147,117, +178,211, 51,180,155,150,111,184,173,145,200,212, 62, 1,181,101,107, 55,110,181, 29, 61, 98,232,103,132,144,187,165, 45, 71, 82, +130,135, 1,112,104,210,164, 73,117,123,244,232, 33,207,201,201, 81,106, 52,154,106, 59,118,236,152,221,164, 73, 19,139,134, 13, + 27,202,119,239,222, 77,178,178,178, 64, 41, 85,213,174, 93,155, 14, 28, 56, 80,187,103,207,158, 9, 0, 86, 85, 36,124, 89,150, + 93,225,239,239, 63,175, 32,207,178, 98,199, 72, 3, 2, 2,204, 1,224,241,227,199, 95, 19,130, 73,229,137,108, 2, 60,169,219, +106, 0, 64, 80, 43,236,242, 62,101,221,214, 3,180,160,120, 74,128, 39, 5, 29,130, 5, 64,177,184, 80,175,226, 97, 92, 92, 92, +149,214, 38, 12, 10,234, 65, 8, 33,251,221,220,220, 14, 36, 39, 39,251, 16,130, 81,166,118, 6, 8, 33,196,222,222,126, 56,128, +133, 0, 62,121,248,240, 97, 35, 0,168, 83,167,142, 12,192, 45, 43, 43,171,150, 6,189,158,136,175, 43, 17, 34, 68,136,248, 79, +162, 17,128, 59, 0,130,138, 45,193,179,177, 42, 66, 75, 14, 0, 23, 47, 94, 4, 0, 69, 85, 68, 95,113, 1, 51,113,226, 68,184, +186,186,150, 20, 47, 8, 9, 57,255, 58,153,125,229, 26,223,124,243,141, 69,102,102,102,199,159,127,254,185,141,187,187,251,210, +184,184,184,107,229,157, 76, 41, 77, 34,132, 44, 41,176, 64, 64,161, 80, 70,140, 29, 59,246, 78,193,223,213,126,251,237, 55, 85, +207,158, 61,213, 0,162, 0, 64,161, 80,186,179, 44,227,151,239,244,134, 37,229, 9,194, 1,132,212,144,203,229,239,141,249,233, + 39,174,113,207,158, 18,115, 71, 71, 2, 0, 81,143, 30,217, 47,249,225,135,150, 25,207,158,201, 53,246,246,105,105,121,121,154, +136,136, 8, 40, 20, 10,194,178,108,227,138, 50,108,110,110,254,249,183,223, 47, 54,207, 78,207,212,104,179,115,244, 44,103,212, + 89,154,169,248,164,196,228, 52, 11, 51,115,245,244, 57,243,229,159,142, 26,246, 57,128,241, 21, 80, 77,248,226,139, 47,234, 52, +107,214,204,125,239,222,189, 36, 43, 43, 11, 18,137,196,162, 97,195,134,104,210,164, 9,255,251,239,191, 19, 31, 31, 31, 4, 6, + 6,226,242,229,203,184,114,229, 10,105,212,168,145,234,224,193,131, 31,150, 38,180, 74,138,107,150,101, 38,215,174, 93,187,161, +185,185,185,222,207,207, 15,163, 70,141, 2,165, 20, 29, 59,118, 12,180,176,176, 56,144,151,151, 39,127,252,248, 81,155,138, 68, +118, 82,232,225,129, 0,224, 20,216,251, 62,128,122,160,120,154, 28,122,184,126,177, 67,234, 60,126,252,248,157,140,140,140, 34, +103,196,194, 5,204,219,180,105, 99,114, 69, 42,172, 11, 61,123,246,152, 14, 16,210,177, 99,199,204, 9, 19, 38, 48,143, 30, 61, +250,160, 79,159,222,129, 79,158, 60, 69, 89,233, 44, 81,143,200,240,225, 35,146, 44, 44, 44,250,186,185,185, 61, 6, 32,145,201, +138,116, 38,235,236,236,236, 88,191,126,253,113,118,118,118,201, 44,195, 56, 81, 80, 90, 81, 93, 18, 33, 66,132, 8, 17,255, 42, + 4, 23,136,171,224,146,127, 72, 0, 32, 56, 56,152,254,175,215, 30, 68,202,107,120,238,221,187,231,169, 86,171, 97, 74, 35, 80, +124,138, 38,165, 52,137,101,217,181, 12, 67,198, 19, 66, 16, 24, 88,239,249,138, 21, 43, 74, 91,211, 75, 31, 24, 88,239, 57,203, + 50,213, 41,165, 32,132, 89, 39, 8,124, 82,105,156,101, 53,140,114,185, 98, 26, 0,184,184,184, 62, 59,113,226,132,190,127,255, +254,248,225,135, 31,100, 51,102,204,152,234,237,237, 61, 33, 58, 58, 58,177,172,116, 22,108,207,116,118,118, 86,109,218,180,201, +111,236,216,177,119,226,227,227,103, 2,128,155,155,219, 66, 0, 1, 0,162,138,237,195,250,245,123,226, 70,141, 26, 21,145,148, +148, 52,179, 44,206,126,132,212,244,174, 93,251,189, 5, 23, 47, 82, 70,167, 35,169,151, 46,101,167, 36, 37, 25, 35, 83, 82, 84, + 91,110,221,234, 49,123,225, 66,169,167,151, 23, 66,142, 30,117, 72, 85,171, 83,178,116, 58,109, 82, 82, 18,229, 56,238,138, 9, +121,175,235,228,232,164,218,240,227,186,155,150, 82, 86,112,242,112, 39, 82, 59, 59, 9,163,178,146,179, 18, 70, 87,189,154,175, + 28, 64,221,138,202, 72, 38,147,125,216,185,115,103,213,158, 61,123, 72, 96, 96, 32,108,108,108,112,233,210, 37,220,189,123, 23, + 25, 25, 25,140,209,104, 68,211,166, 77,177,120,241, 98,120,121,121, 33, 51, 51, 19, 49, 49, 49, 14,114,185,220,177,156,251,249, + 74,125,154, 54,109, 26, 92, 93, 93,193,113, 28,210,211,211,193,113, 28, 44, 44, 44, 0, 0,177,177,177, 56,122,244, 72,133,117, +201, 68,145,132,119,223,125, 55,135, 16,242,176,164, 69,171, 50,156,238,238,238,187, 83, 82, 82,187,189,247,222,123,200,200,200, + 48,206,159, 63, 31,245,235,215,135,159,159,159, 41,117,126,166, 66,161,248,217,219,219,251,199,137, 19, 39,186,218,217,217, 65, +167,211,205, 78, 76, 76,196,184,113,227, 0, 0,221,187,119,175, 47,149, 74, 79,140, 28, 57, 18, 62, 62, 62,113,233,233,233, 49, +183,111,223, 30,149,151,151, 23, 90,213,188,155,120,127, 68, 78,145, 83,228, 20, 57,255, 85,156,166,106,145,127, 35, 10,134, 9, + 55, 22,219,222,248,138,208, 10, 10, 10, 34,193,193,193,212,132,140,165,121,120,120,120,154,153,153, 1, 64, 90,101, 19,194,243, +252, 4, 7, 7,135,228,153, 51,103,182,242,243,243,211, 79,152, 48, 33,244,197,139, 23,179,138, 31,227,227,227,243,221,234,213, +171, 17, 17, 17, 17,181,112,225,194,203,169,169,169,223, 84, 50,179, 51, 8, 33, 43, 10,172, 99,169, 71,143, 30,173,127,241,226, +197,241,203,151, 47,119,252,244,211, 79,101,159,127,254,249, 80, 0, 63, 84,196,195,178,172,186,180,225,194,210,224,234,234,170, + 47,205,135,171, 16, 61, 9, 49,179,146,203,219, 47,184,120,145,234,163,162,212,191, 44, 91,102,185,225,198,141,121, 70, 74,157, +157,156,156,208,186,101,203, 92, 37,203,166, 38, 39, 38, 10, 78, 53,107,178, 47, 78,156,112,208,200,229,241,123,246,236,201, 74, + 75, 75, 59, 92,161, 9,143,144,108,129, 82,189,133,135,151,177,127,239, 78,129, 55,175,223,125,100,233,228,192, 52,106, 24, 88, +255, 81, 68,212,109, 8,130,129, 16,146, 93, 17,143,181,181,181, 95, 90, 90, 26,178,179,179,225,232,232,136, 21, 43, 86,192,197, +197, 5,106,181, 26, 97, 97, 97,212,195,195,131, 92,188,120, 17, 30, 30, 30, 72, 73, 73,129, 94,175, 71, 78, 78, 78,178, 78,167, +211,148, 37,124, 37, 18,201,175, 12, 67, 70, 16, 66, 80,189,122,141,232, 53,107,214,232, 5, 65, 64,157, 58,117,208,167, 79, 31, + 28, 60,120, 16, 97, 97, 97,133,150, 39,189,183,119,181,104,134, 33,222, 5, 90,169,202, 86,157,194,165,125,226,226,226,250, 86, +201, 44, 74, 8,227,230,230, 54,212,215,215,119,252,144, 33, 67,140,114,185, 28,121,121,121,133,247,194,216,173, 91,247,204,158, + 61,123, 88, 7, 7, 7,151,155, 78,157, 78,247,204,217,217,249,147, 47,190,248, 98,199,250,245,235,109,103,205,154, 5, 65, 16, + 64, 41, 5,199,113, 69,139,126, 11,130,128, 67,135, 14, 33, 50, 50,242,187,226, 34, 75,132, 8, 17, 34,254,191,160, 18, 90,228, + 95,135, 98,190, 89, 40, 41,182,254,246,200,240, 44,203,110, 56,125,250,116,195, 54,109,218, 72, 58,116,232, 16,232,225,225, 17, + 24, 27, 27, 27, 10, 0, 30, 30, 30,129, 93,187,118, 13,116,114,114,194,202,149, 43,213, 44,203,110,168,162,178, 44,222,232,221, +113,117,117, 93,122,240,224,193, 37, 99,198,140,129,139,139, 75,192,223,157,103, 43,133,162,209,200, 21, 43, 56,169,209,200,252, +180,116,169,213,178,243,231,151,236,221,183, 79,242,238,187,239, 18, 74, 41, 30,220,191,111,182,120,213, 42,213,224,222,189,163, + 30, 63,123,198, 29, 57,117,202,152, 20, 23,151, 30,151,146, 50,151, 82,154, 94, 17,191,209,104,188,250,228,201, 19,183,214,109, +223,117,191,112, 35,244,110,255,222,221,223,147, 74, 24,242, 52, 42,246,150,171,139,131,117,200,249,179, 26,163,209,120,181, 34, +158,188,188,188, 23, 28,199,217, 81, 74, 29, 67, 66, 66,224,232,232,136,140,140, 12, 24,141, 70,232,245,122,189, 90,173, 86,166, +165,165, 65,171,213, 66,167,211,193,202,202, 10, 15, 30, 60, 72,226, 56,238,247,178, 56, 57,142, 27,169, 84, 42,191,145, 74,165, +114,153, 76, 22,127,235,214, 45,100,103,103, 87,179,177,177,249,129,227, 56,196,199,199,227,226,197,139, 95, 90, 89, 89, 69, 1, +128, 82,169,132, 92,174,176,215,233,116, 92, 89,206,240,166, 90,180,170, 10, 87, 87, 87,175,234,213,171, 47,152, 62,125, 90,157, + 6, 13, 26, 34, 37, 37, 5,130, 32,192,220,220, 28,106,181, 26, 86, 86, 86,104,209,162,197,139, 5, 11, 22, 36, 80,138,209, 21, +137,193,164,164,164, 20,119,119,247, 9, 99,198,140,249,198,207,207,175, 58,165, 20,190,190,190,232,220,185, 51, 78,156, 56,129, +136,136, 8,228,229,229,241,215,174, 93,219, 21, 31, 31,255,155,248,186, 21, 33, 66,132,136,255,158, 78, 44,244,205, 42,110,205, +250, 71,132, 86, 82, 82, 82,138,135,135,199,201,219,183,111,247, 24, 56,112, 32, 66, 66, 66,134, 3,248, 2, 0, 20, 10,197,240, +129, 3, 7,226,246,237,219,120,244,232,209,201,164,164,164,148, 55,113, 77,185, 92,174,213,235,243,141, 83, 74,165, 82, 89,201, +211,171, 21, 12, 25, 2, 64,181,114,246,149, 9, 70, 34,113,173,215,181,171, 36,227,238,221,236, 77,215,175,127,179, 99,199, 14, + 73,171, 86,173,136,209, 96, 0, 47, 8,168, 81,163, 6,233,208,177,163,249,175, 59,118,216,241,121,121, 23,191,157, 62,253,210, +198,145, 35,115, 35, 40,141, 50, 37,129, 58,157,110,213,248,113,159,116, 60, 31,114,201, 61,160,118, 77,187,147,167,207,223,177, +183,183, 86,249,213,170,101,158,150,145,206,207,154,241,165, 68,167,211,253, 84, 17,143, 70,163, 57,116,246,236,217,222,158,158, +158,142,161,161,161,208,235,245,224,121, 30, 29, 58,116, 0,165, 84, 1, 64,144, 72, 36,120,244,232, 17, 12, 6, 67,242,147, 39, + 79,226,159, 62,125,170, 0,176,168, 60, 94,173, 86, 27, 93,124,219,211,211,179, 83, 80, 80, 16, 56,142, 67,215,174, 93,113,228, +200,145, 78,225,225,225,203,138,107,190,215, 45,243, 2, 11, 89, 29,119,119,247,131, 5,187, 76,114,130,247,240,240, 8,244,245, +245, 93,191,104,209, 34,153,135,135, 7, 40,165,176,181,181,129, 90,173, 70,106,106, 26, 2, 2, 2,224,233,233,137, 69,139, 22, + 1,192, 46, 83, 45,110,113,113,113, 79, 1, 12, 12, 8, 8,144,101,102,102, 54,233,212,169,211,202,142, 29, 59,226,206,157, 59, +184,116,233,210, 96,133, 66,145,108, 48, 24, 56, 87, 87,215,209,132, 16, 43,131,193,176, 51, 53, 53, 53, 65,124,119,137, 16, 33, + 66,196,127, 2,133, 62, 90, 69, 81,226, 43,109,209, 10, 8, 8, 48,207,202,202,250,168, 90,181,106,114, 0, 48, 51, 51, 11,168, + 89,179,230,212,200,200,200,156,202,166, 70,173, 86,239,221,177, 99, 71,231, 31,127,252, 81,214,189,123,247,154, 30, 30, 30,205, + 0,160,111,223,190, 53, 45, 45, 45,177, 99,199, 14,131, 90,173,126, 99, 49,145,140, 70, 99,155,166, 77,155, 34, 61, 61, 29, 81, + 81, 81,149, 26,150,249,237,183,223, 84,200,247,203, 42,119, 95,121,224,244,122, 91, 27,119,119, 38,238,252,121, 67,122,118,182, +107,155,182,109,137,209, 96, 0,195, 48, 72, 75, 75, 67, 76, 76, 12,172,109,108,200,163, 39, 79, 44, 54, 79,155,246, 91,181, 6, + 13,228,188, 94,111, 95, 9, 81,145, 71, 8, 25,241,217,132, 79, 15,237,220,185,203, 49, 51, 59, 59,210,204, 76,165, 83, 40,100, + 46, 19, 63,251,140, 79, 79, 79, 31, 70, 41,205, 53,129,106,209,206,157, 59,187,118,237,218,245,190,151,151,151, 83, 74, 74,138, + 75,102,102, 38,159,158,158,206, 34,223,215,138, 0,192,249,243,231,145,157,157,205,241, 60,127, 17,192, 2, 74,169,222,212,180, + 86,171, 86,205,186,121,243,230,237, 28, 29, 29,145,149,149, 5,123,123,123, 52,108,216,176, 93,181,106,213,126,142,138,138,202, +122,147,181,254,204,153, 51,150,148,210,119, 40,165,232,218,181,171, 73,231,240, 60,255,113, 80, 80,144,140, 16, 2,141, 70, 13, +165,210, 12,230,230, 22,176,180,180,130,159,159, 63,226,227,227,209,165, 75, 23,125,100,100,228,218,132,132,132, 74,215,209,172, +172,172, 94, 45, 90,180,152, 50,110,220, 56,112, 28,135, 94,189,122,225,229,203,151,203, 94,188,120,177,199,205,205,109,232,199, + 31,127,236,104,111,111,143, 41, 83,166,152, 1,248, 90,124,119,137, 16, 33, 66,196,191, 31, 37,125,180, 74,181,104,149, 55, 38, +234,234,234,218,218,206,206,110,182, 70,163,145, 23, 14,201, 16, 66,228,142,142,142, 71,220,220,220, 22,198,199,199, 87,202, 41, + 46, 35, 35, 35,219,213,213,245,200,213,171, 87, 7,244,237,219, 23,103,206,156, 25, 86, 32,180,112,245,234, 85, 60,127,254,252, + 72, 70, 70, 70,246,155,200,188,135,135, 71,183,118,237,218,245,109,218,180, 41,142, 29, 59, 6,158,231,175, 84,230,252,226, 51, + 12, 81,202,172,195,194,125, 38,145,177, 44, 8, 33,224, 56, 14, 0,144,154,146,130,136,199,143,145,158,145, 1,157, 86,139, 60, +181,154,247,243,241,209,100,233,245, 82, 2,208, 74, 22,114,180,133,133, 69,140, 58, 47,207,201,222,214, 78,163, 82, 41,144,153, +157, 37,187,117,243, 90, 46,165, 52,210, 68, 14, 61, 33,164,237,137, 19, 39,230,178, 44, 59,208,194,194, 2,227,199,143,103,219, +181,107, 7,153, 76, 6,157, 78,135,204,204, 76,236,216,177, 35,133,227,184,234, 5,245,192,194,220,220,124, 43,203,178,177,217, +217,217,179, 43,186,134, 94,175,239,222,163, 71, 15,137, 94,175,199,183,223,126,139,121,243,230,161,107,215,174,146,155, 55,111, +118, 7,176,243, 77, 85,122, 65, 16,208,169, 83,167,226,206,240, 15, 77, 57, 79, 42,149, 6,214,170, 85, 11, 41, 41, 41, 72, 73, + 73,129,163,163, 35,220,220,220,224,226,226,130,101,203,150,209,149, 43, 87,158, 52, 24, 12,107, 83, 82, 82,146,170, 80, 23, 71, + 15, 31, 62,124,244,128, 1, 3,144,155,155,139,171, 87,175,162,101,203,150, 88,178,100,137,235,197,139, 23,191,104,218,180, 41, +164, 82, 41, 66, 66, 66,192,113,220, 75,241,213, 37, 66,132,136,255,111,248, 47,250,103, 85,132,114, 45, 90, 94, 94, 94, 54, 60, +207,127,217,179,103,207, 78,189,123,247, 70,151, 46, 93, 94,249,127,231,206,157,150, 7, 14, 28, 88,232,233,233,217,213, 96, 48, + 44,170,204, 80,159, 32, 8,135,118,238,220,217,253,221,119,223, 85,181,111,223,190, 6, 0, 40, 20, 10,253,206,157, 59,213,130, + 32, 28,170,108, 70, 74, 6,143,116,119,119,175, 47,145, 72,250,246,232,209,163,254,136, 17, 35, 16, 22, 22,134, 29, 59,118, 60, +245,243,243,187, 92, 73,234,168, 10,102, 29, 46,172,200,186,197,202,229,105,153,137,137, 54, 22, 94, 94, 82, 91, 75,203,132, 99, +199,142,121,118,236,216,145,188,124,249, 18, 25, 25, 25,208,106,181,184,121,243,166, 32, 1,162, 37,182,182, 36,250,234, 85,194, +202,229,149,158,108,224,233,106,235, 59,103,198,216,106, 90,157,182,110, 86, 86, 22, 39,145, 74,165, 30, 46, 54,149,106,176, 41, +165, 58,115,115,243, 38, 0, 36,130, 32,168,237,236,236, 84,167, 79,159,134, 92, 46, 7, 33, 4,245,234,213,131, 82,169,148,153, +155,155,199, 0,128,139,139,139,124,195,134, 13,214, 67,135, 14,189, 84, 17,119,227,198,141,165, 62, 62, 62,239,251,249,249,225, +234,213,171, 8, 13, 13,141,190,122,245,170,119,163, 70,141,224,229,229,245,126,227,198,141,247,221,190,125,219,248,134,122, 23, + 85,114,134,231,121, 94, 32,132,128, 97, 24, 8,130,128,148,148, 20, 84,175, 94, 29,107,214,172,193,138, 21, 43,190,141,143,143, + 63, 90,149,244, 4, 4, 4,200, 26, 54,108, 56,108,192,128, 1,120,246,236, 25, 22, 46, 92,152,154,144,144,112,254,212,169, 83, +253,198,141, 27,199,182,108,217, 18,105,105,105,248,245,215, 95,185, 91,183,110,253,146,152,152,184, 77,124,229,138, 16, 33, 66, +196, 91, 44,180,188,188,188, 6,200,100,178, 41,131, 6, 13, 98,253,253,253,145,148,148, 4, 43, 43, 43, 35, 33, 68, 10, 0, 54, + 54, 54, 70, 51, 51, 51,140, 29, 59, 22, 13, 26, 52,104, 61,109,218,180,150,238,238,238,107,226,226,226,182,154,114,225,164,164, + 36,181,171,171,235,254,241,227,199, 47,186,123,247, 78,117, 0,184,113,227,198,243,248,248,248, 25, 73, 73, 73,234, 74,138,172, +194,160,152,196,204,204,236,186,175,175,239,139,110,221,186, 89,245,238,221, 27,142,142,142,184,125,251, 54, 22, 47, 94,252, 68, +175,215,207, 13, 9, 9,225,254,238,155,204,233,116,137,183, 14, 31,182,108,247,193, 7, 86, 19,131,130,150,126, 58,126,252,143, +115,230,204,145,248,251,251, 19,181, 90,141,235,215,175,211, 3, 7, 14, 24,127,253,230,155, 21, 48, 55,151, 94, 61,112, 64,174, +215,235,163, 43,105, 45,105,219,189,107, 91,255,165, 63,174,130, 86,147,139,235, 87,130,145,145,145,130, 13, 27, 15,250,123,120, +120,180,141,141,141,189, 80,137,251,233,119,230,204, 25, 39, 74, 41,228,114, 57, 22, 44, 88, 0, 55, 55, 55, 88, 89, 89, 33, 39, + 39, 7, 95,124,241,133,245,164, 73,147,172, 1, 32, 44, 44,172, 40, 60, 67, 69,136,143,143,111, 49,118,236, 88, 75,142,227,112, +242,228, 73, 61, 33,100,246,217,179,103,127,174, 87,175,158,188,117,235,214,150,219,182,109,107, 9, 32,228, 77, 9,173, 42,158, +247,244,244,233,211, 77, 7, 14, 28, 72,165, 82, 41,201,204,204,132,141,141, 13,214,172, 89,147,151,144,144, 16, 92,229, 58,192, +113,114,149, 74, 37,167,148, 98,255,254,253,136,142,142,254, 56, 53, 53, 53,209,217,217,249,224,151, 95,126, 57,213,223,223,223, +231,241,227,199,209, 57, 57, 57, 75,146,146,146, 94,136,175, 38, 17, 34, 68,136,248,239,160,208, 9,190, 82,145,225,121,158, 31, +123,234,212, 41, 86, 16, 4,108,220,184, 17,183,110,221,162, 42,149,106,182, 74,165, 90,109,102,102,198,107, 52,154, 49,163, 70, +141, 26, 58,111,222, 60,166,117,235,214,184,122,245, 42, 83,189,122,245, 97, 0,182, 22,187,112,199,242, 98,109,100,101,101,221, + 76, 74, 74,172, 94, 44, 64,101,117,133, 66,121,179,130,204,188,194, 89, 74, 80,204,230, 11, 22, 44,200,115,117,117,213,135,134, +134, 98,253,250,245,194,173, 91,183,206,203,229,242, 13,241,241,241, 58, 83, 56,223,208, 77, 47,226,148,115,220,237,237, 83,167, +214,105,220,171,151,240,201,148, 41,185, 50, 51,179,207,151,174, 90, 53, 45, 51, 39,199, 13,132, 80,123,107,235,232,141, 11, 22, + 44,236,250,254,251,185, 97, 23, 46, 40,239,158, 57, 35,117, 52, 26,239, 85, 38,157,177,177,177, 23,124,107,122, 97,203,166, 31, + 97, 48,232,144, 16,151,175,211, 82,211,178, 80,158,200, 42,141,147,227,184,172,126,253,250,201, 0,152,125,248,225,135,242,228, +228,100,212,172, 89, 19, 0,144,157,157,141,224,224, 96,212,174, 93, 27, 0,240,224,193,131,162,223, 21,165,211,220,220,252,253, +150, 45, 91, 34, 58, 58, 26, 97, 97, 97,231,226,227,227,211,220,220,220,206,189,124,249,178,123,211,166, 77,113,232,208,161,158, +101, 9,173,202,150,145, 41, 66,171, 52, 78, 51, 51,179, 25, 7, 15, 30,252,248,202,149, 43, 3,167, 78,157, 42,237,208,161, 3, + 0, 32, 39, 39, 71, 77, 41,229,171,194, 89, 60, 77, 70,163, 17,130, 32,192,206,206, 46,175,160,195,241, 2, 21, 4,146,253,171, +235,167,200, 41,114,138,156, 34,231,191,129,243, 45,129,233,145,225, 41,165,156, 32, 8, 8, 9, 9,193,193,131, 7,121,131,193, + 48, 58, 62, 62,254, 65,177, 67, 86,185,185,185,157,233,215,175,223,214,199,143, 31,179,225,225,225, 48,165, 33, 42, 14,173, 86, +107, 44,185, 36,177, 86,171,125,237,161,163, 45, 91,182, 32, 49, 49,209,240,242,229,203,179, 28,199, 29,122,205,217,139,175, 61, +235,240, 87, 74,117, 31, 16,114,118, 94,171, 86,157,230,158, 57,163,248,228,171,175,116,195, 71,140,248,146,215,235,141,172, 76, + 38,200,205,205, 25, 94,161,144,134, 93,184,160, 92, 57,110,156,157, 70,167, 59,185,189, 18, 14,230,197, 44, 90, 24,254,201,100, +104,138, 89,180,174,222,140, 64,101, 45, 90, 90,173,182,110,129,232,136, 1,224,242,209, 71, 31, 65, 16, 4,104, 52, 26,228,228, +228, 32, 62, 62, 62,107,196,136, 17,124,129,120,146,244,237,219,215,202, 20,222, 26, 53,106,184, 73,165, 82,156, 60,121, 18, 82, +169, 52, 24, 0,164, 82,105,240,153, 51,103,186, 15, 30, 60, 24,238,238,238, 53, 8, 33,132, 86,160,146,156, 3,123,239,165,128, + 47, 8,106,229, 63,241,168,229, 20,216,251, 62, 1,158, 20, 68,141,127,216,168, 81, 35,192, 68,191,172,226, 40,152,220,177,194, +193,193, 97,223,180,105,211,198, 55,111,222,188,243,188,121,243, 8, 0,246,141, 88, 55, 57,238,181, 66, 79,136, 16, 33, 66,132, +136,127,175, 85,171,180,253,146,114, 78,216,216,182,109,219,209, 0, 88, 66,200,250,184,184,184, 7, 37,143,137,143,143,143,112, +119,119,255,193,199,199,167,104,161,233,202, 36,170, 32,146,251, 98,134, 33,211,242,183, 43, 31,160,178,216, 82, 39,211, 0, 16, +134, 97,183,222,185,115,231,171,152,152,152,148,202, 10,191,210,240, 38,102, 29, 2,192, 78, 74, 95, 12, 38,228,212,148,192,192, +142, 93,199,141, 67,253,174, 93,173,220,188,189,121,141,193, 32, 60,184,124,153, 92,217,191, 95,118,247,204, 25,169, 70,167, 59, +121,144,210,152,202,166, 51, 54, 54,246, 66,205, 26, 30,167,251,247,237,222,185,134,143, 27, 0,224,217,139,120,164,166,103,157, +174,140,200, 42, 33,184,122,173, 89,179,230,168, 76, 38,147, 20, 95,202,198, 96, 48,164, 23,138, 49, 66,136,219,198,141, 27,119, + 51, 12, 19, 93, 17, 95,120,120,248,145,185,115,231,246,141,138,138, 58, 29, 19, 19, 19, 5, 0,209,209,209, 81,110,110,110, 91, + 19, 18, 18,250, 70, 71, 71, 31,160, 38,168,144, 18,139, 74, 35,236,242, 62, 37,128,122,133,139, 74, 87,117, 45,195,226, 40, 8, +173, 48,219,213,213,117,103,231,206,157, 71, 1,136,123, 29, 62,189, 94,111,212,104, 52, 28,207,243, 18,131,193, 64,245,122,189, + 81,124, 45,137, 16, 33, 66, 68,165,208, 20, 64,225, 74, 36,133, 6, 20,199, 18,191,245, 40, 88, 46,176,240,245, 91,176,157, 2, +224,102, 49,142,226,251, 43, 58, 23, 0, 82, 1,220, 47,216, 87,154, 22,217, 88,214,118,153, 66, 43, 46, 46,238, 0, 76, 88, 52, +218,212,227,202, 17, 74, 51, 9, 33, 43, 11, 69,211,235,114,112, 28,247, 70,214,135, 99, 24,230, 69,207,158, 61, 43,117,124, 69, +199,236,166, 52,250,115, 66,182, 29,251,233,167,134, 39,215,175,119,231, 57,206,158, 0,148,149,203,211,244,122,125,148,163,209, +120,175,178,150,172, 87,172, 49,207, 98,187, 0,128,175,175, 47,125,250,244, 41, 40,165,175, 53,123,131, 82,122, 15,128,103, 5, +199,196, 3,104,109,162, 24,220, 5, 96, 87, 41,130,125, 55,128,221, 38,247, 26, 10, 23,149, 6, 24,129, 8,253,235,182, 26,176, + 31,128, 80,184,168,244,155, 68, 66, 66,194, 99, 20,196,121,123, 29, 68, 69, 69,233,124,124,124,182, 47, 94,188,248,195,187,119, +239,238,137,139,139,211,137,239, 76, 17, 34, 68,136,168,156,200, 34,132, 28, 43,104,123,122, 20,116,246,143,149,252, 93,120, 76, +225,113,197,143, 41,228, 40,185,191,188,115, 1, 96,198,140, 25, 95, 45, 92,184, 80, 5,192,164,197,152,139, 7, 46,149,252, 27, +238,222,155, 88, 60,247, 77, 47,192, 27, 27, 27,187,233,175,200,235,170,124, 33,117,237,175,188,159, 79,158, 60, 33,111,243,211, + 86,184,168,116, 49, 4,254, 23,210,253,226,197,139, 53,237,218,181,219, 16, 23, 23,199, 65,132, 8, 17, 34, 68, 84, 6,142,165, + 9,163, 50,244, 64,143,242,254, 47, 33,136,254,116, 92,105,219,132,144, 99, 11, 23, 46,236, 97,106, 98,139, 91,180, 24,177,236, + 68,136,248,251,240, 79,204,122, 21, 33, 66,132, 8, 17,101, 10,162, 87,172, 88,133,226,171,228,246,140, 25, 51,190, 66, 25,195, +134, 5,199,184, 18, 66, 70, 23,204, 58,124,197, 95,139, 0,232, 88,198,197, 77,158, 77, 64, 8,233, 88,133,204,157, 21, 57, 69, + 78,145, 83,228, 20, 57, 69, 78,145,243,255, 23,103, 69,220,101,156, 31, 84,214, 80, 95,121,195,136, 37,127, 87,116,174, 9,199, + 6,151,145,151,209,197,215, 58,124,101,205,195, 66, 39,231,191,226, 3,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156, + 34,231,107,126,154, 82, 74,131,144,191,106, 10,165,148, 6, 81, 74,187,206,152, 49, 99,102,225,190, 25, 51,102,204,164,148,118, + 40, 60,174,224,152,162,115, 10,247,149,252, 46,185,175,130, 99,203,186, 31,163,139,255, 46,190,253,175,240,209, 18, 33, 66,132, + 8, 17, 34, 68,136, 40, 7, 55, 1, 52, 45,102,109, 74, 1,240, 96,225,194,133, 25,197,124,167, 82, 0,220, 3,208,160,224,184, +148, 2,131, 82,113,223, 42,125,193,182,190,148, 99,244,166, 28, 91,134, 21,110, 99,105,191, 1,136, 66,171, 44, 52,116,101,191, +241,242,112,106, 82,100,245, 19, 4, 0,128, 80, 16,125,160, 40, 12,129, 32,128, 82,138,248,228,204,219,247,147,232,156,170, 94, +207,223,157,216, 57, 41,149, 43, 4, 74, 91, 21,236,186,144,149,166,155, 28,154, 69, 51, 77,229,168,227, 66,234, 40, 25,124, 41, + 80,212, 7, 0,134,224,190, 86,192, 15, 15, 19,233,195,215,189, 31,132, 16, 82,215, 17,163,229,102,170, 65,214, 54,182,181, 50, + 50, 82,159, 24,180,186,125,225, 41,216, 64,171, 16, 24,170,166, 29,121, 71,160,248, 10, 0, 35,101,176, 44, 34,141,158, 23,107, +157, 8, 17, 34,254, 38,188,110, 92,188,210, 66, 7,189,238, 36, 36, 49,192,158,105, 98,171, 36,110,152,120,220, 63,134, 74, 9, +173,186, 78,100, 28, 8,230, 3,160,160,248, 58, 44,153,174,171,212,249,110,164,163,146,101, 55, 3, 96,181, 6,126, 10, 21,112, +177,212, 70,157, 65, 27,165,140, 93, 6, 64,208,242,252,200,176,120,211,253,197, 2, 61, 72, 87,137,192,108, 23, 40,149,242, 2, +221, 10,138, 99, 22, 50,252,113, 53,150,106, 43,147, 86, 47, 15,167, 38,135,111, 36,116, 62,191,110, 34,154,215,175, 9,202,115, +128, 96,132,170,245,151, 56,183,252, 35, 52,175,227, 5, 42, 24, 1,129,131, 69,183,165,232, 22,104, 93,229,135,196,223,157,216, +121, 59, 56,133,110,218,180,217,197,173, 70, 0, 17, 56, 3, 30,223, 56, 61,116,210,180,185,239, 5, 90,147, 64, 83,196, 86, 3, + 55,242, 73,205,234,254, 95, 78,158,255, 35,235,234,230,105, 46, 24,117, 92,226,139,135,141, 86, 45,153,123,160,129, 27, 89,118, + 47,158,110, 54, 85, 80, 5, 56, 98,140, 68, 33, 31, 96,166, 52,175,165, 86,231, 60,229, 13,198,125,129,110,146,174, 63, 44, 93, +209,176, 93,167,238, 22,124, 78, 34, 99, 20, 16,176,119,207,110,239,159,214,172,237, 78, 8,121,159, 82, 42, 84, 38,207, 2,197, +180,136,109,163,187, 75, 37, 44,169,243,241, 38, 22, 38, 78,153, 45,137, 0,103, 50,132,208,138,195, 75, 80,130, 75,225, 73,116, + 87, 85,174, 81,199,153,252, 76, 40,252, 64,176,159, 80,236, 14, 75,166,201,226,251, 78,132,136,183, 11, 12,195,156, 23, 4,161, +253,155,228, 36,132,188, 67, 41,189, 38,222,221,255,223,168,156, 69,139,224,219,176,200,151,182,224, 13,168,235, 87,227, 27, 0, +149, 18, 90, 74,150,221,122,243, 73,146, 11, 56, 3, 54,125, 55,126,143,222, 8,112, 70, 3,120,206, 8,158, 51,130,227, 12,224, +141, 70, 80,163, 14,115,127, 57, 15,232,115,208, 36,208,119, 43, 0, 87, 83,175, 33,165,204,246,219,151, 79,219, 17,125, 22,118, +173, 91,248,217,203,148,220,207,206,222,143, 79,173,235, 76,102,134, 39,227,215,202, 8,130,243,235, 39, 98,199,161,224,216,149, + 63,231, 61, 18, 40,133,157,149,153,255,208, 30, 97,158,219,142,156,127,185, 98,171,246, 17, 0, 88,155,203,253,135,221,127,226, +245, 58,133,224,164, 84,174,216,176,246, 39, 23, 87,123, 51,194, 93, 89, 4,142,231,225,233, 29,196,206,156, 48,212,245,219,229, +155,151, 3, 24, 94,222,249,181,157, 73,128, 95,205, 58, 83,182, 6, 95,241,202,203, 78,214,159,222,249, 85, 36,116, 48,186,184, +215,145,126,179,240, 71,118,214,244,137, 95,212,118, 38,215, 31, 37,209,240, 10, 94, 10, 76, 29, 39, 28, 89,184,104,105,253,247, +186,245,176, 16,114, 83, 88,109, 94,174,223,166, 95, 54,207,175, 93,191,153,170,117,160,135, 44,121,223, 88,162,201, 73,135,129, + 81, 42,222,171,219,209, 74,243,225, 96,227,166, 45, 59, 38, 0, 88, 85,169,238, 96,177, 97,107, 65,168,122,239,146, 80,180,190, +123,237,252, 24, 62,254, 38, 40,111, 4,120, 67,209, 55,120, 35,168,144,255,221,124,236, 47, 64, 41, 49,188, 76,122, 1, 83,116, + 62,123,249,166,107, 82, 98, 66,211,229, 75,191,159, 25,224, 68, 78,128,199,246,135,233,184, 80, 89,129, 41, 66,132,136,127, 47, + 8, 33, 28,165, 84,242,134, 57,187, 83, 74,143,191, 38,199,151, 0, 62, 41,216,220, 76, 41,253,225, 13,164,203, 3,128, 75,193, +102, 34,165, 52, 86,172, 1,175,117, 63, 71, 23, 31, 50,124,157, 56, 90, 74, 80, 1,216,223, 27, 0,204, 42,155, 16, 10, 40, 65, + 88,192,152,135, 94,221, 58,193,193,201, 5, 48,170, 1,131, 26, 48,106, 0, 99, 30, 96,212, 32, 53, 33, 26, 48,228, 1,207, 78, +128,163, 84, 81,233, 28,235,178,128,136,125,232,208,200, 11,142,214, 74, 76,236, 21,224,176,241,100,196,230,205,167, 31,119, 4, + 48,200,164,180, 82,138,230,245,106, 97,229,230,188, 71, 71,111, 39,119, 1,128,160,134, 14, 39,155, 7,120,123,174,216,170,125, + 20,124, 63,189, 43, 0,116, 11,180, 62,209,204,223,213, 75,120, 13,171,175, 64,105,107,183,106,181, 8,127,119, 3,132,236, 88, +100,103,107, 16,251, 98, 27,108,221, 27, 51,188,128,182, 21,157,111,198, 98,198,231,179, 22, 75,213,217, 73,122,193,144,194, 59, +178, 25,172, 68, 46, 16,196, 93,208,229, 10,153,252,228,209, 31,113, 83,230,124, 55, 3,192,208,114,173, 67, 78,152,176,108,217, +138,122, 45,155,212,118, 74, 60, 48,145,228,102, 36,129, 99, 85,138, 94,239,182,132,141,111,128,144, 20,178,140,200,107,116,132, +141,125, 13,196, 93,217,137,168,107, 7, 73,171, 70,125, 21,191,238,146,125, 88,150,208,242,117, 36,173,186,180,105,182,167,134, +151,155, 43,165, 2, 4,129,130, 10, 60, 62,238,223, 25, 51,247, 62, 3,207,243,232,215,165, 85,135,197, 99,222,163,130, 32,128, + 82, 1, 47, 19,211,212,191, 95,127,212, 33, 50,157, 94, 55,197, 82,213,224,157,246,173,238,223,190, 86,219, 24,241, 27,154, 12, + 93,248,136, 0,151,139,213,185, 86,119, 78,253, 90, 27,248,165,170, 15, 15,169,227, 4, 62,234,228, 34,120,181, 25,205,110,216, +117,210, 49, 43, 37,110,216,129,109,107,251,175,219,176, 97, 7,128,177,226, 43, 70,132,136,183, 3,148,210, 55, 46,182,162,163, +163,227, 95, 71,108,121,120,120,180, 1,176,164,208, 67,131, 16,178,196,199,199,103,238,255, 58,170,175,244,245,178,120,158, 31, + 26, 27, 27,123,177, 60,206, 30, 61,122,184, 1,240, 41,198,233, 67, 8,241, 41,237, 88, 27, 27, 27,190, 69,139, 22, 81,199,142, + 29,139, 23,107, 72,229, 5, 87, 85,132,214,163,152,125, 19, 27,233, 18,114, 1,224,145, 9,149,246,149, 33, 63,173,145, 95,180, +101,254, 71,139,234, 86,179, 67, 78,158, 30,167,111, 69,129,231,141,224, 57,174,192,178,197,129,231,140,232,210,192, 1, 45,180, + 99,177,234,216, 99,112,188,176,176, 60,206,146, 48, 80, 97, 72,195,142, 3,247, 10, 2,149, 43,164, 76,150,159,167,189,211,148, +126, 13,152,137,189,234, 66, 99,224, 6, 6, 56,147,223,195,147,232, 38,147, 56,133, 63,135, 60,162,165,237,227,185, 10,243, 94, +142, 53,170,249,224, 30,157,172,168, 46, 11,198,212,103,200, 81, 27,241, 44,205,136, 68,109, 38, 20, 36,193, 36, 78,129,162,190, +135,187,171,234,143, 61,211, 95,216,179,217, 18, 39,150,147,201, 25, 14,188, 64, 89,154, 25,174,179,171,221, 73, 90,232,183, 85, + 94, 58,205, 84,150, 31,181,233, 28,100, 29,179,115, 52, 49,243,235, 2,167, 70,158,120,113,113, 11,146,111, 29, 67, 90,124, 20, +177,210,102,194,217,190, 38,186, 13, 29,132, 31, 6, 53, 69, 78,118, 14,216,132, 72,107,185, 84, 97, 83, 22, 39,229, 49,116,217, +226,239, 92, 37, 44,147,127, 63, 11, 63,188, 17, 26,157, 14,224, 57, 40, 37, 2, 8, 45,252,207, 8,222,104, 80,213,239, 59,125, + 60,128,235, 21,229, 61, 60,137,238,170,235, 68, 90, 67, 48,214,166, 70, 13, 8,112, 57, 44,153, 22,137,159, 0,103, 50,164,113, +151, 17,173, 41,193,165,170,148, 81,160, 61,122, 52,241,177, 48, 55,207,126,132,216,253,159, 33, 18, 74,234,220,242, 19, 12,249, +120,130,106,227,198,141, 61, 9, 33,227,138,251,168,253, 21,139,172,138,156, 34,231,127,149,211,218,218,186,122,181,106,213,230, + 26,141,198, 54, 50,153,204,217, 96, 48, 64, 16,132, 68,185, 92,126, 41, 42, 42,106, 65, 86, 86,214,243,127, 91,222,239,223,191, +111,178,216, 50,133, 83, 42,149,226,241,227,199, 79, 77, 21, 91, 37, 57,165, 82,233,246,203,151, 47, 99,239,222,189, 0,128,136, +136, 8,248,250,250,154,151,118,238,139, 23, 47,204,219,181,107,183, 29, 37, 86,244, 40,201,249,224,193,131,234,191,253,246, 27, +246,239,223, 15, 0,120,252,248, 49,252,252,252, 74, 77,207,229,203,151,217, 15, 62,248,160, 58,128,248,191,186,140,222, 6,145, + 85,252,251, 21,161, 21, 28, 28, 76,131,130,130, 72,201,223,165,224,153,151,173,188, 17,180, 60, 0, 60,171,108, 34,194, 19,233, +226, 6,174,210,174,231,246,175,105,163,148, 49,152,183,105,202,203,148,244,156,119, 36, 4, 2, 0,112, 20,140,173,133,252,234, +194, 97, 13,188, 50,114,181, 56,122, 35,238, 98, 88, 82,229, 76,164, 97,241,244, 12, 0,155,255, 53,148,196,111,216, 15,103,118, +239,158,209,181,254,228, 94,245,113,228, 74,212,100, 0, 21, 70,125,167,130, 0, 42,112, 69,206,239, 5, 93, 7, 64,120,117, 81, + 96, 1, 52,127,159, 80, 57,139, 86, 59, 66, 36, 25, 78,232,102,167,146,175, 30, 51,102,148,149, 49,229, 9,210,245, 50,188,204, +208, 34, 81, 35, 69,174,196, 9,113,143, 30,240, 12,193,153,138, 11, 23,217,148,211,218,216,202, 45,152,192, 78,227,221,179, 79, +126,149, 33, 39, 28,107,213,231, 91,155,212,115, 63, 70,113,121, 41,121,132,160,194,181,245,172,173,109,124,181,105, 81,108, 86, + 70, 42,108, 92,234,162,235,192, 30,248, 58, 40, 0, 57,217,121, 72, 73,191, 74,107,185, 90,145,232, 75, 59, 48,171, 91, 29,164, + 37, 37, 64,103, 4, 72,158, 46, 93,171,215,230,150,121, 31, 25,108,152, 52,117,218, 16,111, 87, 71,243,194, 73, 5, 84,224,209, +160, 78, 13,116,106,211, 28,103, 46,255,129,155, 15, 34, 32, 20, 76, 42,160,130,128,216,228,140, 36,173,129,223, 82,169, 27,202, +115,160, 70,109,169, 66, 12, 85, 24, 50,172,231, 76, 84, 60, 48,231,157, 90,150, 35,103,244,240,182, 52, 87, 16,104,141, 60,180, +122, 35,114,254, 88, 13,251,106,245,160, 82, 42, 73, 35,104, 36, 0,196,117, 11, 69,136, 40,134, 1, 3, 6, 40,147,146,146, 66, +130,130,130, 2, 58,117,234,164,106,221,186, 53,242,242,242,112,250,244,105,228,229,229,121,123,122,122,122,159, 62,125,186,239, + 59,239,188, 19,238,225,225,209,110,223,190,125,149,241,161,149,224,127,206,236, 2, 0,142, 16,130,130,125, 4,128,240, 58,235, +220,202,229,114, 68, 71, 71,191,113,203, 86, 92, 92,220,211,170, 88,182,114,115,115,101,238,238,238,112,116,116, 4,207,243,200, +203,203,195,225,195,135,145,149,149, 5, 65, 16, 96,102,102,134,111,151,109,194,163, 59, 33,184,126,253, 58,178,178,178,100, 21, +113,198,198,198,146, 6, 13, 26, 64,167,211,129,227, 56,104,181, 90,156, 61,123,182,104, 91, 34,145, 96,218, 55,203, 17,113, 43, + 4,119,239,222, 69,108,108,236,223,178,218, 72, 37,180,200,191,209, 26,186,177,188, 10,251,183,130,231,185,153, 27,183,238,190, + 58,115,236, 32, 76, 24,220,209,115,193,154,131, 29,195, 83,232, 86, 0, 8,112, 36,195, 62,108, 95,203,203, 70, 37,197,215, 59, +111, 1,148,206,124,221,235,133,166,209,136,186, 46,100,242,161,235,209, 33, 95, 13,106,132, 26,174, 86,190, 53,107, 18,121,100, +164, 9,107, 10, 10, 28,108, 45, 20,254, 65, 13, 29, 78, 66, 16, 96, 99,169,168, 13,158,131,141,133,194,191, 91,160,245, 9, 0, +176, 81,201,106,151,102,249, 42, 11, 77,189,100,163, 85, 10,201,104,243,198,174, 94,195,123,118, 50,235,222,179,175,153,133,148, + 67,218,245,211,200,150,122,192,104,231, 13,157, 49, 29,177,207, 35,249,115,215, 30,198,165,230,232,166, 84,152, 76,138,139,113, +207, 31, 59, 86,175,223,201, 54,245,216,172,228,234, 35,118,250, 48, 16,152,156, 29,125,146,204,157,154,153,221,120,246, 60, 87, +160,127,182,232,148, 68,118, 86, 86,148,145,135,171,134,151, 88, 70,158,255, 21, 51,186,213, 67, 70,122, 50,180, 6, 14, 89, 26, +206,224, 98,163, 84,232,158,135, 66,103,224,160, 55, 10,144,218,184,227,244,213, 7,169,130,209,120,162, 44,206,200, 84,122, 23, +128, 69,241,125, 53, 29, 73,131,233, 86,102,119, 97,212, 32, 58, 54, 30, 91,131,175, 54, 42, 56,174,234,149, 92,224,242,135,159, +139, 89,178, 8, 69,235,170, 56,193,215,113, 38,205,204,148,178,159,150, 76,254, 32,224, 93, 63, 59,133, 16,123, 21, 68, 48,192, +156,151, 64, 35,231, 97,237, 89, 3,130, 62,135,170,181,218,204, 48, 64,140,244, 46, 66, 68, 49,212,174, 93,219,197,218,218, 58, +108,234,212,169,118,125,250,244,193,161, 67,135,144,157,157,141, 45, 91,182, 96,197,138, 21,152, 63,127, 62,140, 70, 35, 54,110, +220,168, 58,112,224, 64,179,181,107,215,198,122,123,123,215,141,142,142, 78,172,168, 79, 9, 64, 1, 64, 90,208,118, 17, 0,194, +241,227,199,209,189,123,119, 28, 63,126, 92, 40,216,199, 19, 66,140,148,210, 42,173, 39, 42,151,203, 33,151,203,145,149,149,245, + 70,196,150, 84, 42,133,133,133, 5,228,114, 57,114,114,114, 42, 45,182, 56,142, 99, 99, 99, 99,145,149,149,133, 78, 61,123, 98, +249,194,133,104,223,190, 61, 58,117,234, 4, 74, 41,206,158, 61,139,142, 45, 3, 49,232,253,118,120,248,240, 33, 56,142, 51, 41, +189,137,137,137, 72, 74, 74, 66,215,158, 61,177,105,237, 90, 52,111,222, 28,254,254,254,224, 56, 14, 33, 33, 33,232,223,165, 37, +148,189, 59, 34, 34, 34, 66,172,212, 38, 90,179,222,148,143,214,107, 35, 52,153, 94, 11,112, 36,199, 6,119,105,214,163,103,171, + 0,108,218,115,238,187,128, 0,178, 27, 0,236, 45, 21,223,126,212,190, 6,194, 99, 50,112,238,110,252,177,240,148, 55, 51, 91, + 67,224,225, 96,111,165, 2, 88, 57, 52, 6,129,179,122,134, 10, 29,152, 5, 74,161,106, 51, 29, 31,246, 12,247,108, 30,224,233, + 89, 56,235,208,162,251,143, 24,246,224,169, 87, 83,127, 23, 47,240, 70,128, 55,194,106,208, 78,224, 27,243, 10,211,209,170,186, +226,204,244, 41,147, 91,116,235, 61,208, 76,174,178, 6,159,253, 18,198,196, 7, 72,123,114, 17,121, 42, 95, 36, 70, 63,195,222, + 83,215,179,158,196,166,101, 51, 12, 78, 39,101,233,190,140, 76,167,185, 21,241,106,141, 88, 56,119,214,148,160,189,187,247, 88, + 42,106,180, 34,145,171,187,103,201, 37,156,194,209,167, 49,163, 86, 58,208,239,183,236,177,202,211, 99, 81, 69, 60,234,188,236, +131,103, 79,159, 28, 84,171,122, 43,203, 23, 55,131,161,209,234,160, 51, 2,117,155,181, 3,207, 83, 57, 97,136, 96,197,178, 36, + 57, 45, 3,196,200, 39, 93,186,247, 34,225,242,189,103,172,206,178, 98,238, 87,212, 61, 97, 63,239,217,174, 33, 96,212,224,253, + 54,245,176,124,199,185,207, 0,140,120,189, 66,206,183,104, 81,160, 85, 93, 39,178, 30, 64,171, 91,135, 87,212,110,210,123, 18, + 42, 99,209, 10,116, 36,221, 2,107,186,253,186,252,219,233,118,246, 30,190, 44, 17,140,160, 46,245,129,236, 88, 74, 98,175,194, +218,189, 57,120,183,150,216,184,106,105,174, 32,208,221, 85, 9,109, 33, 66,196,219, 12,173, 86,123,112,241,226,197,118, 61,122, +244, 40,180,200,224,234,213,171,216,188,121, 51,204,205, 95,125, 79,118,239,222, 29,148, 82,187,121,243,230, 29, 4,240,110, 89, +156, 45, 91,182,236,185,106,213,170,248,134, 13, 27, 62, 43, 16, 91, 50, 0, 76,104,104, 40,243,242,229, 75, 98,107,107, 75,221, +220,220,140,241,241,241, 2, 0,254,227,143, 63,102, 45, 44, 44,106,229,230,230, 94,168,170,208,146,203,229,111,196,103, 75, 42, +149,130, 16, 2,185, 92, 14,153, 76, 6, 74,105,165,196, 22,207,243,146,227,199,143,227,214,173, 91,152,223,176, 33, 38,187,187, +195,206,206, 14, 33, 33, 33,160,148,194,220,220, 28,233,233,233,216,189,123, 55,222,123,239, 61,112, 28, 39, 51,133,119,255,254, +253,184,125,251, 54,190,105,210, 4,147,173,173, 97, 97, 97,129,179,103,243, 71, 3, 21, 10, 5,162,163,163,113,246,236, 89,180, +107,215, 78,172,212,175, 9,147, 43, 79, 59, 66, 36,196, 25, 46, 6,189, 6,148,163, 0,129, 91, 64, 0,145,133,135, 83, 67,101, + 47,202, 48,152,181,106,235,177,160, 31, 39,245, 36,163,123, 53,114, 91,240,235,249,113, 0, 48,178,159,159,187, 74, 33,193,202, + 35,225,148, 97, 48,235, 77,100, 48, 32,128,200, 24, 6,227, 58, 53,247, 71,124,166, 30,145,241,153,191,135, 83,106,210, 80,207, +185, 31, 63,196,182,163, 33, 47, 87,108,211, 62,162,148,194,198, 66,225, 63,236,126,164,215,175,199,111,199, 44,219,171,125, 68, + 5, 10, 27,149,180,246,136,135, 45, 43,156,117,216,212, 75, 54,122,230,244, 47, 91,246, 26, 49, 85,201, 61,218, 7,125,228, 41, + 8, 6, 13,178, 13, 50,100,178, 46,136,141,137,193,247, 27,143,189,204,206,211, 15, 10, 77,174,156,192,140, 72,165,185, 1,142, +164,207,247, 95,127,117,102,225,183,243, 44, 52,207, 66,114, 89,194,105,216,106,109, 37,223,206,255,145,228,232,244, 3, 35,211, +105, 78, 69, 60, 58, 75, 44, 90,188,108, 85,208,168,161,125, 31,249,249,182,181,231,227,159,219,107,179,179,147,119,158,188,237, + 82,208, 83, 36, 0, 16, 25,155,134,148,172, 60,142,231,140, 23, 44,165, 88, 16,102,138,117,176, 0, 53,156,137, 99,159,214,245, + 63,112,180,148, 65,147,155, 9, 39, 75, 41,186, 52,175,249, 65, 13,103, 50,253, 89, 18, 77,169,186,208, 50,130, 26, 53,184,182, +232,189,218,148, 55,214, 6,111,132,225,254,246,202, 91,198, 8, 38, 79,104, 99, 97,101,171,127,193, 32,207, 28, 48,115, 0,177, +242, 6,172,125,136,180,206, 64,196, 63, 11,227, 62,251, 96,104,218,243,168,216,159, 29,204,240,131,248, 10, 17, 33,226, 85, 68, + 71, 71,127, 52,115,230,204,203,205,155, 55,119,118,112,112, 64,189,122,245,112,244,232, 81, 76,157, 58,181,232,152,134, 13, 27, +130, 82,138,244,244,116, 44, 94,188, 56, 49, 62, 62,254,163,242, 56,195,194,194, 30,109,219,182,173, 77, 64, 64,128, 65, 38,147, +101, 2, 80,100,102,102, 42,211,211,211,137, 86,171,133, 32, 8,130,181,181, 53, 31, 31, 31,111, 28, 52,104,144,238,202,149, 43, + 53,243,242,242,162, 95,199,162,229,233,233, 25,154,150,150,150, 69, 8,121,237,208, 15,133, 34,203,193,193,193, 49, 55, 55, 87, + 0,144, 81,149,208, 15, 28,199,161, 73,147, 38, 56,117,241, 14,142,159,187,130,236,248,199, 24, 55,234, 35,212,171, 87, 15,167, + 78,157,170,114,153, 53,104,208, 0, 39,207, 94,198,229, 91,247, 16, 29,113, 31,159,141, 27,133,186,117,235,226,228,201,147, 98, +133, 54, 29,193, 37,124,179,130, 75, 10,173,118,193,193,193,133, 61,243, 63,201,215, 58,142,164,129, 91, 45,249,246,121,221,106, +214,145,118,154, 7, 34, 53,195, 62,223,147, 45,103,125,191,250, 81, 61,103, 50,244, 65, 82,197,179,195, 94,177,106, 37,209,176, +186, 78,100,215,189,135,181, 63,120,191,185, 39, 54, 29, 85,205, 1,128,129,173,171,227,198,147, 20, 92,143, 72,222, 21,150, 76, +195, 94, 55,215,245,156,137, 10, 20,187, 22,127,222,171,157,183,135, 11, 54, 31,186, 12, 66,112,208,164, 6,151, 82,218, 60,192, + 27, 43,182,149,156, 97,232,226,181,108,175,246,209,169,208,236,110, 0,208,185,142,249,137,166, 53,109,189, 42,178,108,152,201, + 37, 99,186,245,253, 80,201, 69, 28, 5,162,206,130,112, 58,104, 12, 2, 18, 82,115,160,182,246, 68,200,213,123,154, 44,173,126, + 82, 88,114,213,172,120,225, 41,244, 89, 67, 87, 18,147,155,167,113, 85, 57,214,212,178,140, 32,228,234, 40,110,132, 71,101,135, + 37,208,199,166,112, 68, 70, 82,253,187, 30,164,245,250,173,123,231, 74,101,242,129, 44, 1,113,178, 49,119, 92,255,227, 55,176, +180,180,128,160,207, 5,242, 82,208,231,211,239, 83, 30,196, 25,170, 3,128,159, 3,177,104, 83, 67,182, 85,194,144,216,223,159, +234,103, 87,104, 94, 53, 98,236,208, 46, 13,165,130, 62, 15,159, 47,222,131, 13,211,123,225,195, 14,117,164,193,127, 68,140, 5, +176,160,170,101, 77,121, 14,212,168,193,187, 95, 93,124, 68,128,203, 20,104,117,107,239,183,181,129, 59, 38,115, 52, 38, 68, 42, +113, 37,117,234,123,153,203,132,216, 63, 32,196,254, 65, 89,207,150, 32, 94,109, 8,113,105, 66,127, 90, 50, 63,111,211,166,205, +167, 5, 6, 95, 87, 20, 42, 67,132,136,255,175,160,148, 62,179,177,177,233,218,189,123,247,115,167, 78,157,178, 11, 12, 12, 4, + 0,220,186,117, 11, 0,208,164, 73, 19,248,249,249, 33, 41, 41, 9,131, 7, 15, 78, 77, 72, 72,232, 74, 41, 45,215,231, 55, 39, + 39,231,249,254,253,251,157,243,242,242, 26,206,158, 61, 59,217,219,219, 59, 91,171,213,146,204,204, 76,129,227, 56,216,218,218, +202, 27, 54,108,136, 22, 45, 90,228, 94,189,122,181,218,203,151, 47,115, 0, 68, 85, 37,253,189,122,245,194,197,139,249,147,246, +222, 68, 92, 45,153, 76,134,192,192, 64,247,103,207,158,197, 21,220,159,107, 85,184,167, 69,191,239,221,187,135, 11,119, 98, 33, +209,107, 32, 79,137,199,181, 67,251,209,115,204,120,112, 92,213,189, 24,238,221,187,135,195,103,175,193, 92, 33,193,227,199, 97, +216,191,127, 63,198,141, 27,247, 90,156, 85, 68,185, 90,228, 95, 94,239, 19, 0,108, 44,211,162, 21, 20, 20,116, 1,165, 68,181, +173, 89,147,200, 21,185,152,215,165,137,251,180,129,173,106,178,198,236,120, 8,188, 0, 86, 10, 56, 57, 88, 97,251,246, 93,213, +119,237,217,115,181,129,187,116,149,192,113,179, 30, 36, 81,117, 37,210, 53,239,199, 61,151, 7,110,159,210, 78, 50,174, 91,109, + 59, 0,144, 73, 24,172, 60, 26,198, 1,152,247, 58, 25,126,215,131, 40,115,141, 24,237, 98,111, 61,103,230, 39, 65,118,237,154, +248,225,194,245, 80,172,218,127,245,162, 60, 25,219, 76,190,113,130, 17, 37,245, 83,105,179, 14, 33, 84,236,119,201,243,212, 69, +102,110, 11, 67,212,121,192,160,133, 86,103,192,203, 52, 30, 47,211,181,144,168,100,184, 21, 17,171,177, 79,196,177,170,230,153, + 16, 66, 90,213, 80,186,205,253,110,153,135, 86,147,203,101,103,164,114, 50,249, 53,169,202, 76,145, 80, 25,158,171,177, 84,219, +182,186,172, 49, 32,176,114, 37, 85,127,245,197,112,243,184,240, 83,168,197,196,131, 80, 10,179, 58, 65,176, 52, 99,101,173,125, +100, 49, 0,224,227, 98, 45, 95,252,245, 84,235, 73,211,191,174,208, 7, 44,128, 16, 89,189,166, 46,147, 2,189,109,113,241,246, + 35, 92,124, 16, 29,118,241,214,227,186,237,235,185,193,207,195,102, 98, 0, 33,139,194,105,229, 45,164,249, 5,195, 1, 70,109, +209,172,195, 0,103, 50,164,233,192,217,165,206, 54, 44, 11, 62,128, 16,193, 83, 16,150, 5, 8,147, 63, 3,242,229, 31,144,216, +212,160,187,246, 30, 86,111,222,188,237,155,240, 20, 42, 90,177, 68,136,168, 0,153,153,153,247, 85, 42, 85,151,250,245,235,111, +249,252,243,207, 45,135, 14, 29,234, 54,106,212, 40, 6, 0,146,146,146,132, 21, 43, 86,196,255,244,211, 79, 89,169,169,169, 35, + 12, 6,195, 3, 83, 58,190,132,144, 43, 63,255,252,115,202,165, 75,151,234, 54,107,214, 76,209,184,113, 99,193,214,214, 86,162, + 80, 40,120,189, 94,175,141,136,136,224,159, 61,123,230,154,153,153,249, 20, 64,100, 85,134,245, 11,172, 87, 11, 88,150,157, 75, + 41, 13,124, 19, 62, 90, 42,149,202, 13,192, 83, 66, 72,173,202, 14, 27,254,169,193,150, 72,144,145,145, 1,117, 98, 24,148,177, + 79, 80,223,156, 65,128,173, 5,172,172,172, 94, 75, 20,101,101,101, 1,121,113,184,124,249, 30,192,113,176,182,182,134,181,181, +245,223, 46,180,202,210, 34,255, 5,148,156,105, 88, 80,111,203,247,209,170,235, 68,198,217,202,177, 98, 76, 80, 77,153,143,151, + 7,116,177,183,112,239,101, 46,102,189,211, 44,156, 85, 88,106,199,124,212,171, 73,223,254,213,208,174, 69, 83,226,227,106, 61, +113,209,143,235, 62,173,235, 76,166,134, 37,209,149,166, 36, 42, 44,153, 62,175,227, 68, 54,159,191, 31, 59,214, 67,165,129, 32, + 80,156,127,144,128, 7, 81, 25,155, 31, 38,211,231,149,201, 96, 93, 55,210, 81, 2,102, 15,165, 84,105,109,110,158,211,176, 65, +109,135,142,239, 54, 96,186,182,109, 2, 25, 11, 92,190,113, 15,147,127, 60,120, 77, 16,104,208,109, 19,135, 13,243,103, 24,190, + 42,160,242,103, 24, 26, 95,153, 97, 72, 41,165,249,179, 14,203,119,251, 98, 89,146,168,142,190,233, 34,181,247,133, 38,242, 60, +162, 50, 4, 68, 39,231, 32, 91,226, 2, 93, 92, 28, 64,133,152, 16, 74,171, 92,171, 29, 28, 28,156,170, 7,248,213, 92,189,117, + 63, 12,234, 44, 60, 15,217,130,220,140, 4,124,187,254,104, 77, 15, 15,143,182,177,177,177, 23, 42, 81, 97,252,206, 29,219,229, + 4, 10,176, 82, 5,130,215,238, 69,170,189, 25, 28, 84, 50, 8,154, 20,140,153, 52,212,186, 91,167,161,214, 0, 16,253,248, 46, +188, 85, 26,147,120, 13,246,232, 59,176,189,191, 13,140, 26,108, 61,121, 87,203, 0, 93,183,157, 14,139,108, 95,219, 70, 57,176, +149,183,237,130,248,204,126,168, 98, 80,209, 66,139, 86,145,133,175, 10,179, 13,247, 81,202,215,113, 36,145,123,174, 36,155,247, +239,212, 88, 37,147, 16, 66,115,227, 64,205, 28,176,110,235,190, 92,185, 17, 27,197, 38, 84,132, 8,211,160, 86,171,111, 19, 66, +234,125,249,229,151, 67,190,250,234,171, 54,230,230,230,213, 1, 32, 47, 47,239,185,209,104,188, 8, 96, 87,101,102, 7, 22, 8, +167,167,132,144,231,145,145,145,206, 59,118,236,176, 1,160, 44,248, 91, 11, 32, 19, 64,210,235,204, 56, 44, 20, 85,132,144,185, +111,208,210,113,188,128,179, 86, 85,206,103, 24,134, 39,132,128, 16, 2,133, 66,129, 75,151, 46, 97, 64, 80, 39, 60, 12,206, 68, +160,141, 5,154,141, 24,131, 61,103,206,128,101, 89, 16, 66,192,178,108,165,218, 17,137, 68,130,203,151, 47,227,195,193,253,161, +144, 0,214,214,214,248,242,203, 47,113,228,200, 17, 72, 36,226, 42,125,149, 40,231,141,133,130,203,244, 56, 90, 4, 11,206,108, +249, 94, 6,222,136,223,182, 44,197,177,208, 92,253,227, 20,204,242, 79,193,138,253,200, 17, 82,126,220, 54,246,204,229,208, 31, + 62, 30,212, 67,245, 94,251, 78,120,175, 93,123, 73,221,166,109,231, 0, 88, 89,172,193,238, 88, 94,172, 13, 94,192, 55, 27, 79, + 62, 26,179, 39, 36,130,192,144,131, 65,157,155, 82, 94,192, 55, 21,136,128, 63,113, 90,155, 89,236,185,124,245,170, 45, 12,185, +136,186,251,187,178, 90,245,154, 0,111,192,211,167, 79,240,211,214, 67, 66,200,141,199,219,245, 28, 62,143, 76,167,121,166,114, +230, 43, 43, 14,214,230,114,255,110,129,214, 39, 4, 80,216,168,100,181,169,192,195, 70, 37,173,221,185,142,249, 9, 74, 41,181, + 52,147,214,166,188,177, 66, 78,141,158,219,176,245,151,205,203, 70,142, 28,105,158, 26,155,136,248,236, 80,228,202,221, 97, 84, +121, 34,242,238, 69,141, 90,199, 85,216,136,151,119, 63, 83, 83, 83,147,111, 95, 79,199,158,245, 11, 97,212,235,144, 28,155,175, + 85,227, 83,179, 97,229,224,126,181, 50,156, 6, 78,200,234, 59,116,180,204,204, 18,102, 31,246,237, 33,143, 76,211,161,145,155, +101,126,101,202, 77,193,195,179,151,209, 46, 47, 95,183, 61,123,201,192,187,129,155, 73,233,180, 84,202, 62,239,214,216, 29,207, + 99, 18,112, 41, 44,110,235,179, 52, 26, 95,195,158,108,141,140,207, 28,219,235, 29, 47, 44, 63, 18,254, 89, 89,226,168, 44,206, + 0,103, 50, 4, 64,171,124,103,120, 13, 40,208, 42,192,153, 12, 49,101,166, 97,105,156, 18, 25, 62, 88,118, 34,122,246,190,155, +169,189,166,125,208,218,170, 69,139,238,114,112,122,228,104,116,198,240, 12,154,253, 58,101,244, 26, 61, 37,145, 83,228,252, 79, +114, 22,136,158,237, 5,159, 55,201, 25,143, 18,113,157, 94, 55,239,197,135, 9, 41,165,146, 2,107, 86,185,206,240, 21,113, 22, + 31, 38,164,148, 30, 47,176,102,149,107,213, 42,201, 41, 8, 66,124,147, 38, 77,236,122,246,236, 9,158,231,241,228,201, 19, 68, +191,124,137,142, 99, 63,131,141,141, 13, 46,222,191,143,199,143, 31, 99,238,220,185, 48, 26,141, 56,124,248,112,108, 69,156, 18, +137,196, 80,179,102, 77, 89,239,222,189,193,113, 28,158, 61,123,134,184,184, 56, 76,158, 60, 25,214,214,214,184,125,251,118, 17, +103,106,106, 42, 36, 18,137,225,239,168, 75,255,117,148, 38,178,202, 23, 90, 0, 15,222,136,172, 51,243,176,242, 18, 12, 6, 35, +106,135, 37,211, 23,197,254, 95, 87,223,158,252,118, 63,244,209,243,219,127,188, 39, 71,242,131,252,115, 42,129,136, 84,154,208, +212, 83,146, 3, 67,142, 21,158,157,192,139,164,156,220,136, 84,154, 80,217,204, 81,129, 39, 48,168,129,132, 91,184,114,241, 2, + 66,174,221,195,205, 7,143,248, 43,183, 35,246, 48, 2,190, 9, 79,165, 79,170,160, 78, 97, 17,180, 28,195, 31, 60,245,106,234, +231,236, 5,158, 3, 21,140,176, 30,180, 11, 35,194, 91,120, 53,173, 97,227,149,111,201, 50,194,246,147,223,129,101,202,114,249, +110,198, 24, 54,182,170,174,232,151,147,153,246, 78,135,182,239,154, 91,215,233,134,212,167, 17,120,114,239,178,230,118,104,228, +149,155, 49,134,215,178,150,184,187,187,183,233,208,214, 31,131,198,204,132, 65,157,133,103, 33,191, 32, 55, 61, 17,151,174, 90, +224, 81,118,246,187, 0, 76,182,104, 93,137, 54,214, 5,128, 86, 62,178, 24, 75,232, 92, 62,234,209, 19, 10,162,133,160,203, 6, + 81,167, 34, 50, 78,159,213,111,253, 75, 30, 0, 84, 10, 34, 49,167, 89, 86,166,240, 6,120,219,251,170, 88, 35,182,157, 9,131, + 32,228, 47,223, 36, 8, 88,183,237,247,200,177,223,124,216, 8, 1, 94,182, 13, 8, 33,164, 50, 38,127, 66,209,250,230,158,175, +107,107,207,205, 1, 4, 3, 46, 79,180,171,221,122,101,122,235,170, 90,198, 30,196,209, 56, 0, 99,235,184,145, 13, 19, 87,158, +156,211,228, 76,120,171, 41,159,244,178, 2, 21, 23, 96, 23, 33, 66,196,223,143,220,220,220, 49, 35, 70,140,216, 32,149, 74, 29, + 1, 16, 65, 16, 32, 8,130,228,135, 31,126,144,242, 60,207, 48, 12,195,179, 44,203, 29, 63,126,220,200,243,124,138, 86,171, 29, + 83, 17, 39,199,113,145,227,199,143,175, 89,209, 12,197,221,187,119, 67, 34,145, 24, 56,142,139, 20, 75,162, 98,145, 85,252,187, +184,149,171,236,198,131,226,235,150, 31,206,155, 7,128,128, 98,126, 9,145, 5, 0,184,159, 70,227,235, 58,145,201,117,155,182, +157, 87,120, 78,101, 19,167,229,249,254, 77,235,249,237, 6, 0, 29,229, 63,172, 74, 6,179,117,154,129, 13,155,190,187, 71,160, + 84,194, 81,186,153, 17,112, 64,203,225,161, 41, 51,237,202, 66,124,114,230,237,194,133,162, 5,208,255, 13, 23, 22,132,113,160, +148,210,162,225,194,165, 74,164,102,233, 42,140, 3,117,249,185,174, 83, 83, 47,217,232,211,127,220, 29,195,243,212,133,101, 73, +162, 70,207,109,120, 93,145, 5, 0,177,177,177, 23, 2,156,200,233,251, 13,156, 59, 59,168, 10,172, 92,106, 32, 85,141,211,177, +201, 57, 23,170,194,153,145,103,236,245,213,138, 35, 71,229, 82, 86, 2, 74,243, 3,138, 82, 10,173,129, 79, 47, 20, 99,245,237, +137,219,151,135,185,221, 44, 75,162, 43,226,187,254, 56, 97,249,160, 69,103,167,134, 69,101,108,126,145, 65, 67, 1,224, 69, 6, + 13,173,101, 79,230, 68, 38,230, 76, 13,141,206, 88, 90, 89,191, 10, 74,112,169,233,160,121,127,218,247,186,247,243, 97, 60,189, + 7,160, 79, 93, 39,210,105,208,148,159,166, 16, 2,113,249, 9, 17, 34,254, 31,161,208,170,197, 48,204,130, 55,200,121,156, 16, +210, 29,192,211, 74,156,115, 29, 64,189, 55,156,183, 52, 0,105, 98, 41,191,209,123, 90,249,128,165, 97,201,116, 29, 76, 88, 52, +218,212,227,202, 60, 63,158,158, 5, 96,255, 58, 25, 44,224,176,123,147, 55,237,126, 18,157,243, 87, 20, 70,129,168,250, 75,124, +125,194,147,105, 23, 0,240,245,245,165, 79,159, 62, 5,165,244,181,156, 10, 31,166,208,123, 40,177,148, 67,105, 98, 27, 64,107, + 83,248, 34, 82,233, 55,192,159,135,134,159,166,209,111, 1,124, 91,165, 60, 87, 49,242,187,201,117, 43,153,158, 1, 42,142,206, + 47, 66,132,136,183, 83,108,253, 5,156,199,197, 59,251,246,161,188,128,165,140,120,123,222, 62, 60,121,242,132,188,174,200, 18, + 33, 66,132,136,183, 24,252,107,126, 74,213, 80,175,249, 17,241,150, 8,174,146,251, 68,161, 37, 66,132, 8, 17, 34, 68,136, 16, +241,134, 68, 86, 73,177, 69, 0,116, 44, 85,154, 87, 98, 54, 1, 33,164, 99,101, 19, 84, 17,191,200, 41,114,138,156, 34,167,200, + 41,114,138,156,111, 31,103, 69,220,111,221,108, 70, 90,204,201,249, 77,127, 0,116, 20, 57, 69, 78,145, 83,228, 20, 57, 69, 78, +145, 83,228,124,155, 63, 0, 70,151,181, 45, 14, 29,138, 16, 33, 66,132, 8, 17, 34, 68,252, 69, 16, 99, 3,137, 16, 33, 66,132, + 8, 17, 34, 68,188, 30, 42, 92, 84, 90,132, 8, 17, 34, 68,136, 16, 33, 66, 68, 21, 80,225,162,210, 34, 68,136, 16, 33, 66,132, + 8, 17, 34,170,134, 42, 45, 42, 45, 66,132, 8, 17, 34, 68,136, 16, 33,162, 98,148, 23, 25,158, 84,114,197, 19, 17, 34, 68,136, + 16, 33, 66,132, 8, 17,229,224, 79,145,225,131,131,131,105,241,111, 17, 34, 68,136, 16, 33, 66,132,136,191, 19,111,171, 22, 17, +135, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94, 3,165,249,104,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 13,160, 60, 31, +173,194,128,165,237, 10, 76,117,237,196,219, 37, 66,132, 8, 17, 34, 68,136,248, 7,240, 86,106,145, 34,103,248,224,224, 96, 26, + 20, 20, 68,196,114, 22, 33, 66,132, 8, 17, 34, 68,252, 19,120, 27,181,136, 56,235, 80,132, 8, 17, 34, 68,136, 16, 33,226,117, +196, 84,177, 89,134, 37,183,197,181, 14, 69,136, 16, 33, 66,132, 8, 17, 34,222,144,224, 42,185,143,249,139, 47,216, 81,228, 20, + 57, 69, 78,145, 83,228, 20, 57, 69, 78,145,243,255,139,200, 42, 41,182,196, 89,135, 34, 68,136, 16, 33, 66,132, 8, 17,175, 1, + 83,102, 29,138, 16, 33, 66,132, 8, 17, 34, 68,136,168, 2, 8, 33,163, 9, 33, 61, 10,126,247, 40,110,213, 18, 45, 90, 34, 68, +136, 16, 33, 66,132, 8, 17,175, 1, 74,233, 70, 66,136,107,129,192, 10,166,148, 38,136, 66, 75,132, 8, 17, 34, 68,136, 16, 33, +226, 13,160,132, 95, 86, 16, 33,164,104, 56, 81, 20, 90, 34, 68,136, 16, 33, 66,132, 8, 17,175,129,242,124,180, 8,128,142,101, +156,116,182, 18, 74,174, 99, 21, 18,117, 86,228, 20, 57, 69, 78,145, 83,228, 20, 57, 69,206,255, 95,156, 21,113, 87, 70,127,252, + 91, 80, 90, 88,135, 34,241, 69, 41,253,203, 62, 0, 58,138,156, 34,167,200, 41,114,138,156, 34,167,200, 41,114,254,127,253,188, +241, 89,135,141, 9, 49, 19,141,136,111, 31, 8, 33,206,132, 16,103,241, 78,136, 16, 33, 66,132, 8, 17,166, 91,184,222,168,143, + 86, 0, 33,159,124, 18,232,184,190, 30, 33, 86, 15, 40, 85,151,119,172,147,147,211, 6,149, 74, 53, 84,173, 86,231, 17, 66,132, + 98,166, 54, 0, 40,190, 46,208,179,228,228,228,214, 21, 93, 91,161, 80,172,112,118,118,254, 36, 55, 55, 87, 77, 8,161,132, 16, + 16, 66, 10, 51,252,202, 55,207,243,177,169,169,169, 77,254,211,133, 8,176, 14,206,206, 55,164, 44,235, 94,217,115,121, 65,120, +145,148,152,248,110, 37, 42,204, 66, 66, 48,173,224,247, 18, 74,233,204,183,240,169, 96, 77, 57, 44, 16,176,140, 0, 6,241, 12, +243,153, 20, 88,163, 19,132,245, 5, 21,151,175,234,165,245, 55, 72, 77, 66,209,128, 16, 88, 83,138, 44, 74,112, 79,222,140, 70, +254, 67, 47,135,190, 82,169,180,151,149,149,149, 69, 90, 90,218, 5, 0,187, 1, 12,182,183,183,111,155,157,157,157,107, 52, 26, +143, 80, 74, 15, 86,133,187, 77, 67, 50, 93, 46,147,126,172, 53, 24, 23, 95,190, 75,127,105,215,152,216,115, 2, 22, 41,101,146, +214, 58, 61,183,228,210, 61,186,185,146,105, 37,249,143, 66,225,171,163,242,235,137,237, 55,177,220, 1,224,176,173,173,159,194, +209,234,156, 84,206,190,200, 76,202, 29,218, 63, 57,249,101,255,215, 40,247,127, 35, 28, 29, 29,135, 51, 12,243, 29,165, 20, 60, +207,207, 74, 75, 75,219,242,134,234,213, 44, 0, 54, 5,155,153,148,210,239, 94,147, 47, 26,128, 87,193,102, 12,165,212, 91,108, +218,171,124, 47,215, 29, 58,116,104,108,251,246,237,177,124,249,114,172, 91,183, 46, 42, 37, 37,101, 17,128,173,148, 82,253,223, +205,243, 54,226,141, 9,173,186,132,116, 31,222,165,249,134, 9, 3,187,147, 73,195,103,171, 43,120,152,127,238,218,181,235,135, + 91,183,110,149, 70, 68, 68,152,249,248,248,128, 97,152, 34, 33, 84,252,125, 89,173, 90, 53,161,162,107,179, 44,187,178, 79,159, + 62, 35,246,239,223,175,186,125,251,182,170, 78,157, 58, 69,124,130, 32,160,228,251,215,199,199,167, 92, 62,107,107,235, 91, 44, +203,122,148, 38,210,202,250,205,243,124,108, 90, 90, 90, 19, 19, 42, 99, 23, 0, 51, 76,184,165,139, 40,165,167,202, 59, 64,202, +178,238,241,241,241, 78,149, 45, 43, 79, 79, 79, 67, 37, 30, 30,103, 66, 48, 77, 16, 40, 3, 0, 12, 67,166, 43,149,202,245, 90, +173, 54,166,240,255,130, 50, 75,170, 76, 26,220,221,221,251, 81, 74,199, 0,160,132,144,141,113,113,113, 7, 42,115,190,149,149, +213, 45,185, 92,238, 33,145, 72, 72,105,229, 82,114,155,231,121,106, 48, 24, 98,211,211,211, 43, 45,176, 47, 0,164, 43,208,134, + 99,217, 73,246, 14, 14,173,111,159, 62,109, 30, 24, 24,200,176, 44, 59, 19,192,250,215,121,110,244, 55, 72, 77,222,136, 1, 26, +163,162,135,194,123,190,159, 46,122,126,132,153, 84,119, 76,127,131,236,251,187,197, 22, 33,100,216,176, 97,195, 38, 45, 94,188, +216, 65, 46,151, 51,123,247,238,245,155, 60,121,114,223,229,203,151, 59, 12, 28, 56,208, 82,175,215, 11,211,167, 79, 15, 32,132, + 56, 81, 74,215, 86,134,187, 69, 67,242,142,191,143,235,220, 9, 67,223,195,212,133,187, 39,180,170, 71, 82,205,204,101,235,250, +181,174,105, 83,183,186, 45,190,222,112,229,115, 0,155, 43,145, 86, 34,145, 72,222,117,115,115,243,213,106,181, 92, 65,231,141, + 22,123, 39,228,223, 95,189, 94,159,158,158,190,239,117,239,205, 84,165,178,121,115, 27,139, 51,243,134, 12, 51,203,206, 72,119, + 94, 25,124,244,254,126, 56,213,239, 15, 68,189, 77, 13, 2,195, 48,223,197,197,197,185, 82, 74,225,234,234,250, 29,128, 45,111, +136,218,166,240, 61, 76, 8,177,121, 3,124, 94,197,248,188,222, 64,221, 87, 74, 24,102,188, 92, 42,237,204,243,124,189,130, 58, +244, 64,111, 52,158,225, 4, 97, 13,165, 84,251, 22,235,128,105, 99,199,142,237,244,213, 87, 95,249, 76,155, 54, 13,211,166, 77, +171,182,105,211,166, 13,223,127,255,253,116, 66, 72,125, 74,105,238,223,204,243,159,183, 96,253, 37, 66, 43,128,144, 38, 29, 26, +212, 58, 48,113,248, 32, 8,251, 87, 16, 12,159, 93,174,200,122,183, 73,147,143,183,110,221, 10, 0, 24,218,171, 23, 58, 55,107, + 6, 75, 11,115,200,229,249,201, 33,148, 64, 38,149,161,247,228, 47, 76,201,220,146,190,125,251,126,176,127,255,126, 11, 0, 88, +183,110, 29,250,246,237, 11, 59, 59, 59,168, 84, 42,200,100, 50, 72,165,210, 87,190, 77, 16,110, 30,113,113,113, 78, 74,165,178, + 72,248, 9,130,240,202,167,216, 56, 53, 56,142,131,175,175,175,169,183,107, 70, 86, 86, 86,155,188,188,188,114,199,116,171, 87, +175, 14, 0,167, 76, 33,252,238,219,111, 32,112,121,144, 72, 0,142, 3,116, 6, 6, 66, 41,125,123, 55, 55, 55,140, 31, 63, 30, +175,179,144,120, 80, 80, 15, 66, 8,217,239,230,230,118, 32, 57, 57,217,135, 16,140,170,162,165,235,211, 39, 79,158, 88, 0,128, +159,159,223,120, 0,149, 18, 90, 18,137,196,227,254,253,251, 78, 10,133,162, 76,203,101, 49, 17, 12,131,193,128, 70,141, 26,113, +149,185,134, 51,224,149,206, 48,163, 26, 54,110, 60,122, 94,239,222,202, 27, 55,110, 40, 25,134, 1,199,113,248,225,135, 31, 56, + 74,169, 77, 0, 96, 21, 14,100,151, 83, 63,191, 2, 48,188,192, 74,187,153, 82,250,195, 43,255, 83, 52,208, 24, 21, 61,158,229, +246,110,214,188,218,116,132,135, 61,104, 86,195,226, 48, 44, 37,186, 72, 0,127,171,208,178,178,178,234,181,124,249,114,199,205, +155, 55,103, 63,126,252,216,176,126,253,122,199, 49, 99,198, 88, 26, 12, 6,140, 29, 59, 54,197,223,223, 95,182,124,249,114,199, +131, 7, 15,190, 7,160, 82, 66, 75, 66,240,205,224, 94,157,161, 53, 50, 48, 26, 57, 71, 87, 71,203,237, 19,135,181,147, 82,170, +199,182, 35,183, 97,228,132, 95, 42,105,201,122,183,127,255,254, 53,118,237,218, 37,121,244,232,145,164,118,237,218, 16, 4, 1, + 60,207,195,104, 52, 2, 0, 4, 65, 64,173, 90,181, 94,251,190,124, 12,248, 57, 56,219,157,121,183,123, 55, 51, 87,165, 2,118, + 25, 41, 24, 41,147, 88,110, 81,233,118, 0,104,241, 54, 53, 22,148, 82, 72, 36, 18,188,124,249, 18, 78, 78, 78,102,118,118,118, + 9, 0,230,167,167,167,111,124,139, 27,200,102,114,137,228,192,182, 95, 86,186, 52,111,209,130,117,118,117, 66,196,147, 24, 72, + 8,223,241,254,205,219,237, 62, 30, 55,101, 34, 33,164, 31,165,244,198,219,150,119,215,150,159,246,113,109,245,217, 58, 66, 5, +124,189,250,104,206,194, 37, 43, 84, 99, 71, 13, 99, 39, 79,158, 12, 79, 79, 79,159, 62,125,250, 44, 1, 48,174, 66,158,119, 62, +237,227,210, 98,194, 58, 80,138,121, 63, 29,205,249,126,201, 10,213,184, 42,240,252,199,159,157,141,127,153,208, 10, 32,164, 70, + 93, 79,167,211, 11,167,141,147,210, 19,191, 50,234,180,100,148, 37,101,156,156,156, 54,116,235,214,109,232,150, 45,255,235, 36, +189, 27, 24,136, 62,239,181,130,147,189, 53, 84,230,242,252,230, 72, 32,184,247,248,133, 73,130,192,211,211,115,236,129, 3, 7, + 44,138,139, 9,153, 76, 86,244, 41, 46,178, 10, 63, 37, 45, 31,165, 65,169, 84,226,236,217,179,144, 72, 36, 96, 89, 22, 18,137, +164,232, 83,124,155,101, 89, 56, 59, 87,202,117,105,145,181,181,117,253,156,156, 28,171,204,204, 76,120,121,121,101, 3,184, 95, +236,255,250, 41, 41, 41, 86,149, 33, 20,184, 60, 76, 30, 89, 7, 82,253, 53,232,165,205,160,145,180,196,149,155, 15,113,236,212, + 5,196,197, 39,162,213, 59, 13,241,209,144,254, 56,115,230, 12,120,158,175,108,229, 73, 34,132, 44,233,217,179,199,116,128,144, +142, 29, 59,102, 78,152, 48,129,121,244,232,209, 7,125,250,244, 14,124,242,228,105, 65, 79,152, 76, 35,132,172,172,132,101, 75, + 14, 0, 23, 47, 94, 4, 0, 69, 85,234,158, 66,161,192,213,171, 87, 81, 56, 76,204, 48, 12, 24,134, 1,203,178,248,237,169, 3, +242,244, 12,212, 73,161,248,172,135, 23,170, 87,175, 14,134,169,216, 37,177, 29,160,188, 2,244, 33, 82,233,100, 87, 55, 55,159, +182, 53,106,168,206,158, 61,203, 2,128,183,183, 55, 77, 72, 72,200, 60,114,228, 72,142, 4, 88,231, 77,233,214,242, 68,150,151, +151, 87, 75,134, 97,190, 43,188,231,132,144, 37, 62, 62, 62,115,139,202, 77, 16, 48,164,147,157,116,226,196, 73,178,230,237,242, + 59, 39,205,123,238, 66,246,179,133,117, 72,250, 87,214,127,247,139, 34, 59, 59,123, 79,173, 90,181,216,180,180,180, 43, 0,162, +141, 70,227,140,237,219,183, 59,141, 28, 57, 50,121,199,142, 29,139, 0,184, 45, 94,188,184, 93, 94, 94,222,222,202,240,182,110, + 64,186, 55,105, 24,248,142,151,167, 39, 46, 92,185, 1,153, 92,106, 51,126,120, 15, 88, 88, 72,176,116,115,176, 16, 29,155, 62, +225,210, 61,186,181, 18, 34,171, 89,255,254,253,125,118,237,218, 37, 7,128,251,247,239, 35, 49, 49, 17,142,142,142, 48, 51, 51, +131, 84, 42, 5,203,178,144, 74,165,111, 68,100, 89,123,218, 95, 63,124,248,136,153,157,157, 13, 86,127, 49, 17, 31, 37, 39,193, +198,210, 2,198,220, 60,159,183, 76,112,248,245,235,215, 79,201,243, 60,242,242,242, 16, 18, 18, 98,109,102,102,102,237,225,225, + 49, 15,128,201, 66,203,204,204, 44, 73,171,213, 58, 21,188, 71,147, 53, 26,141, 51,128,108,133, 66, 81,248,158,206, 45,184,158, + 73,195,137,101, 12, 19,198, 20,179,100,197,188, 70,158,155, 54,107, 90,255,236,193,253, 59, 45,178,114, 18, 97, 99,155, 12, 6, + 89,216,184,113, 13,204,204,172, 48,111,222, 87,146, 23, 29,223,115,239,210,189,223, 89, 66, 72,199,183, 78,108, 81,178,177, 99, +207,161,118,102, 42,203,130,182,196,136, 45,155, 38,130, 97, 24,204,157, 59, 23,117,235,214, 29, 77, 8,153, 77, 41, 77, 47,159, + 6, 27,235,181, 25,104, 39, 87,230, 23,177,192, 27,177,126,247,212,124,158,153, 99, 48,184,103,245,209,247,118,144,147,117,107, + 32, 39,191, 93,129, 70,202, 32, 6,205,104,114, 33, 71,112,112,112,219,160,160,160, 11,101,109,255, 7,158, 31, 87, 0, 65,165, +137, 47, 73,112,112, 48, 13, 10, 10, 34,197, 50,247,202,118,121,104, 72,136,131,179,181,234,236,186,249, 19, 45, 36,215,130, 89, + 77,204, 83,196,107,249,162, 39,167,228, 20, 77,149, 74, 53,116,203,150, 45,175,232, 48, 47,103, 39,200,100, 82, 72,101, 4, 54, +173,123,228, 63,113,151,142,129, 16, 90, 86,195,255, 10,103, 94, 94,158,246,238,221,187, 22,155, 55,111,134,147,147, 19,124,124, +124,160, 82,169,160, 84, 42, 95, 17, 87,197, 5, 87, 73,161, 85,146,179,240,127,137, 68, 2,134, 97,112,230,204, 25,112, 28,135, +254,253,251,255, 73,100, 73, 36,146, 82,133, 91, 89,211, 83, 41,165,167, 8, 33,247, 41,165,109, 10, 26,224,251,148,210,182,197, +174,221,197,209,209,113, 6,128, 69,166,114,178, 44, 5,171,189, 2,193, 99, 5, 36, 47, 39, 66, 47,109,128,243,151,111, 99,203, +134,229, 0, 0,159,218, 77, 49,160, 79,143, 34,107,156, 41,156,197,225,238,238,190, 59, 37, 37,181,219,123,239,189,135,140,140, + 12,227,252,249,243, 81,191,126,125,248,249,249,153, 84, 70,101, 9,184,251,247,239,123,106, 52, 26,147,134, 29, 75,227, 36,132, + 96,251,246,237,208,106,255,108,213,183,109,251, 61,166,246,245,198,136,207,182, 98,201,227,189, 88,187,118,109,185,121, 87, 1, +245,181,214,181, 86,202, 89,174,254,162,175, 62, 85,124,244,209, 71,236,136, 17, 35, 16, 19, 19,131,145, 35, 71,106,207,156, 57, +163, 79, 76, 72, 56, 34, 23,132,213,134, 87,133,113,153,156, 10,133, 98,219,169, 83,167,176,119,111,190, 46,137,136,136,128,175, +175,175,249, 43, 34, 57,125, 31,114,162, 87,227,250,111,143,208,188,231, 46, 92,255,109, 8,248,204, 96,105, 19, 95,100, 85,230, +126, 86,161,247,117,182,148,125,123, 1,236, 45,118,127,205,118,236,216,209, 27,192,209,130,255, 0,224,199,202,112,230, 19, 97, +196,192,190,189, 33,145, 89,226,209,211, 88,180,125,183, 17,156,157,156,112,255, 97, 36,162,227,210,147, 8,193,240,174, 45, 21, +139, 52, 26,253,236,139,119,233,207, 21,112, 18, 15, 15, 15,191,125,251,246,201,138, 89,160,139,158,113,150,101,139,182, 11,133, +119, 85,234,103,161,200,178,244,176,184,254,205,154,150,230,215, 31,236,128,175,119,119,216,118,239,129,159, 79,159,198,147,176, +112,173, 94,205,117,248,187,203,232,175,226, 36,132,248,245,237,219,247,202,206,157, 59,109, 94,190,124,137,139, 23, 47,194,199, +199, 7,106,181,186,194, 14,111, 73, 78,173, 86,235, 84,108, 88,175,208,181,225, 59,189, 94, 95, 88, 24,133, 15, 98,153,195,137, + 37, 56,255, 52, 76, 88, 21,159,172, 82,222,243,114,165, 76,182,239,240,193,221, 22,225,143, 46,162, 97,131,119, 96, 97, 29, 0, +129, 79, 68, 90,122, 46, 50,158,198,227,219,111,151, 96,222,252, 89, 56,122,104,191,133,127,157, 6, 7, 8, 33,181,138, 15, 35, +254,215,203, 29,132,142, 62,251,219,142,117,132, 10,208, 36, 61, 82, 72,243,158,171,134, 14,233,199, 14, 26, 52, 8, 71,143, 30, + 69, 88, 88,216,186,178, 68, 86,113, 78, 66, 49, 58,244,226,222,117,160, 20,154,228, 71, 10,153,230,185,106,216, 7, 3,216,143, + 6,119,198,181,223, 87,162,115,195,231,161,110, 78,232,147, 81, 48,120, 40, 97,145,166, 80,226, 15,179, 27,228, 90, 49,177, 21, + 2,128, 20, 19, 88, 33,248,159, 15,230,127, 1, 65, 5,209,225, 71,151,180,110, 73,170, 34,176, 0,192,143, 16, 11,149, 92,118, +125,203,188, 79,221, 84, 49, 97, 18, 93,232, 85,196,235, 4,186, 62,138, 19,174, 19, 98,118,155, 82, 77,201,115,212,106,117, 94, +100,100,164,217,240, 62,125,208, 34, 48, 16,174,246,246,168,229,225, 1, 51,133, 28,114,153,180,216,123,185, 82, 42,146,250,251, +251,163,103,207,158,144, 74,165, 80,169, 84,176,176,176,128, 92, 46, 47,213,154,101,106, 47,151, 82, 10,150,101, 17, 26, 26,138, +232,232,104,216,216,216,224,143, 63,254, 64,135, 14, 29,254,100,213, 42, 46,206, 42, 99,162, 47,217,240, 23, 10, 49,152, 56,100, + 88, 8,158, 39,200,165, 13,160,140,154, 0, 53,105, 4,157,142,131, 78,167,195,207,151, 13,184, 17,153, 7,131, 65, 15,157, 78, + 87,230, 53,203,185,183,140,155,155,219, 80, 95, 95,223,241, 67,134, 12, 49,202,229,114,228,229,229, 65,173, 86, 35, 44, 44,204, +216,173, 91,247,204,158, 61,123, 88, 7, 7, 7, 83, 74,177,164,146,126, 90,105,238,238,238,158, 5,195,179,105, 85,236, 65, 20, +137,152,146, 24,254, 99, 56, 36,108,126,153,172, 91,183, 14, 60,207,131, 82, 90,102, 33,105, 9, 57, 55,255,251,101,214,139, 87, +252, 2,107, 59,103, 92,184,112,129, 63,121,242,100, 14, 1, 34,158,132,133,253,248, 62,112,124, 31, 96,168, 76,250, 50, 50, 50, +204,124,124,124,224,225,225, 1, 65, 16, 96, 52, 26,139,172, 47,105,105,105,208,104, 52,176, 51,207, 68, 77,123, 15,112, 57, 33, + 72, 8,253, 26,174, 22,143,176,245,148,222,216,216, 15,247,254, 5,166,240, 95, 1,252,250,250, 68,112,119,114,241, 4, 67,141, +136, 79, 78, 67,239,160,206, 96,101, 22,120,241, 50, 21, 13, 2,106,184,126,240,126, 75, 87,150,112,152,182,104,215,120, 0, 63, + 87, 68,151,155,155,203, 63,122,244, 8,247,239,231,235, 93, 43, 43, 43,152,155,155,191,242,140, 51, 12,243, 90, 22,173, 66,145, +245,253,186, 14,230,140, 52, 15,217,252, 89,108,222,126, 27, 13,252,123, 96,253,245,155, 90, 62, 41,189,227, 82,173, 54,226, 63, + 61,108,228,234, 58, 70, 16,132,121,148,210,204,190,125,251, 58,239,218,181,203, 54, 46, 46, 14,183,111,223,198,220,185,115, 83, +120,158,231, 40,165,132, 82,250,245, 27,168, 75, 66, 49,129,245, 38,173, 8, 82,149, 18,159, 57, 88,145, 94, 18,198,202,135,203, +206,125,145,170,167, 71,212,156,240, 19,165,212, 88,222,185, 12,195,124,178,127,207, 58, 55, 7, 71, 1,237, 28,223, 67, 66,146, + 1,223,127, 49, 12,105,105, 57,248,121,211, 66, 0,114, 24, 56, 22,109,218,245,131,147,147, 59, 70,143, 26,237,178,110,195,250, + 79, 1, 44,125, 91, 12, 90, 9,127,172, 57, 68, 8, 57,235,232,232, 24,246,233,232,209,142, 62, 62, 31, 66,169, 84, 98,247,238, +221,216,181,122, 53,191, 2, 24,176,129,144,243, 99, 40, 61, 84, 46,207,181,255,241, 76, 28, 59,214,177, 78,157,177, 80, 40, 20, +248,253,228,175,208, 38,110,207, 9,106, 1,131, 90,139,160,106, 61,169, 93,212,111, 36, 93, 42,197, 83, 0,144, 42,145, 32, 5, +146, 75,208,253,215, 4, 86,145,140, 42,244,211, 42,252,126,237,200,240, 84, 42,127,176,105,210, 96,111,103,232,136,254,242,111, +136,211, 9,252,226, 39, 6,246, 78, 22,157, 26, 94,138,200, 42,168,216,130,151,151, 23,222,107,210, 4,125, 90,183,134, 68, 34, +129, 82, 46,131,165,210, 12,148,207,183,100, 21, 14, 29,150,211, 38,162, 52,235,147,189,189, 61,100, 50, 89,145,192, 50,213,154, + 85, 22,167, 32, 8,144, 72, 36,184,127,255, 62, 90,181,106, 5, 79, 79, 79,236,221,187, 23, 93,186,116,249,211, 80, 98,101, 69, + 86,161,208, 42, 62,140, 87,204, 73,190, 66, 39,248, 63,137, 4, 61, 65,170,190, 1, 8, 9, 4,199, 1, 60, 5,116, 90, 45, 40, + 5, 40, 5,140, 6, 61,180, 90,109,209, 53, 77, 25,146,117,117,117,245,170, 94,189,250,130,233,211,167,213,105,208,160, 33, 82, + 82, 82, 32, 8, 2,204,205,205,161, 86,171, 97,101,101,133, 22, 45, 90,188, 88,176, 96, 65, 2,165, 24, 93, 89,103,248, 55,240, +130, 5, 0,156, 62,125,250,149, 97,195,194, 79, 94, 66, 44, 70,124,190, 3,114, 73,254,208, 82,161, 15, 79,121,239,221,246,109, + 90,226,202,157, 8,238,147,105, 43,117,210,180,219,139, 92, 4, 97, 75, 44,144,244, 26,141, 11, 82, 83, 83,145,148,148,132, 94, +189,123, 99,215,206,157,136,138,138, 66, 64, 64, 0,218,183,111, 15, 39, 39, 39, 68, 69, 69,225,198, 37, 29,116, 25,233, 72,215, +223,134,202,178, 57, 14, 95,136,212,205, 89,171,143,252,167,222, 22,132,144, 94, 0,134, 89, 89, 89, 85, 87,171,213, 9, 28,199, +237, 3,176, 15,192, 0,137, 68, 50, 64,165, 82,185,102,103,103, 63, 71,254,108,162, 35, 21, 14, 37, 41,149,246, 10,165, 21, 4, + 78, 7,137, 68, 2, 79, 79, 31, 80, 94,143,140,108, 13,134, 15,234,137, 59,247, 31,226,228,249,107,156,209, 40,172, 50,229,182, +178, 44, 75,253,252,252,144,156,156, 12,169, 84, 10, 51, 51, 51, 88, 88, 88, 96,230,204,153, 88,189,122,117,145,200,170,170,208, +250, 24,240,179,242,178,184,246,221,154,124,145,149, 24,159,128,164, 88, 41, 28,237,157,177,106,245,138,188,140,168,196,230,191, + 0,255,105,145, 5, 0,130, 32,124, 29, 23, 23,231, 36,145, 72, 92, 56,142,195,203,151, 47,113,235,214, 45, 76,152, 48, 33, 41, + 45, 45,173, 29,165,180, 74,121, 84, 42,149,201,133,150, 44,165, 82,153, 12,148, 57,156,152, 89,204,146,149, 89, 14,101,169,195, +132,132,144, 26, 62, 30,150,103, 54, 45,159,236,213,180,121, 11, 70, 37,177,202,200,125,154,216,234,242,197, 11, 45, 38, 44,255, +249, 83, 66, 72,103, 74,233,179,178, 72, 21, 82,105,183,119, 90,182,148,128, 38, 65, 34,111,133, 37,139, 7, 33, 37, 53, 27, 25, +233, 57,144,201,204,161, 55,178,224, 5,130, 22,173, 90,227,215,173,123, 80,119,212, 72, 86, 46,149,118,122,155,132, 86, 1, 22, +254,244,211, 79, 94,254,254,254,216,178,101, 11,206,111,219,134,143,178,178,112,129, 97, 88,163, 84,234,112,220,104,220, 8,224, +144,169, 60,117,235,214,197, 47,191,252,130,237,219,183,199, 12,237,144,124, 96,242, 80, 56, 25, 12,232,122,251, 49,236,170,245, + 4,110, 63,134, 93, 99,127,212,226, 36,120, 74, 8, 94, 9, 7, 21, 28, 28,220,182,248,247,127, 9, 5,107, 27,150, 58,196, 46, + 1,208, 46, 56, 56,152, 22,255,174,136, 80,229,228, 55,118,251,160,247,188, 3,107,122, 17,227,222,149,120,153,199,233,103, 63, + 54,200,159,228,210,201,225,148,174, 40,167, 7, 65, 89,150,133,165,153, 25, 28,109,108,242,205,252, 12, 3, 8,128, 96, 4, 8, +159, 47, 0,168, 64, 80,153, 73,211,130, 32, 64, 46,151,151,234,248, 94, 89,223,172,226,156, 57, 57, 57,120,241,226, 5, 70,143, + 30, 13,149, 74, 5, 0, 72, 76, 76,132,183,183, 55, 36, 18, 9,226,226,226,240,251,239,191,163,122,245,234, 80, 40, 20,164,146, +133, 82,216,240,215, 39,132, 92, 0, 80, 63, 33, 33,193,202,213,213, 21,149,182,104, 9, 20,106, 29,129, 94,207,227,201,147, 39, +136,143,143,199,139,231, 79,209, 52, 47, 27, 20, 44, 40,165,149,178,104,121,120,120, 4,250,250,250,174, 95,180,104,145,204,195, +195, 3,148, 82,216,218,218, 64,173, 86, 35, 53, 53, 13, 1, 1, 1,240,244,244,196,146, 37, 75, 0, 96,215,223, 45,178, 74,212, +169, 34,161, 85, 92,112,125,254,190, 23,210,211, 45,192,178,255,155,125, 90,129,143,150, 12, 0,218,117,238, 43, 57,115,242,184, + 57, 7, 44, 72,100,217, 5,146,138,203,209,200, 11,130,170,172,255, 95,190,124, 9,169, 84,138,253,251,246, 33, 61, 41, 9, 13, + 26, 52, 64,179,102,205,240,244,233, 83,220,185,115, 7,246,246,246,112,244,120, 23, 23,158, 27, 16, 30,175,129,181,181, 53, 34, + 99,153,127, 44,100, 0, 33,100, 84,199,142, 29,231,254,248,227,143, 78, 46, 46, 46,210,148,148, 20,255, 53,107,214, 52, 88,179, +102,205,196, 79, 63,253,212,249,211, 79, 63,181,117,116,116,148, 36, 38, 38,250,125,241,197, 23,141, 9, 33,213, 41,165,203,202, +227, 52, 55,183,180, 99,101,230, 32, 68, 2, 27,107, 91, 72,228,230, 16, 56, 9,120, 1,176,178,118,196,149, 59,251,241,199,131, +156, 49,201,105,216,103,194,115, 67,237,237,237,193, 48, 12,236,237,237,255,100,169,158, 48, 97, 2, 54,109,218, 84, 52,140, 88, + 85,145,245,253,154, 14, 22,164, 64,100, 37,190,148,128,232,170,227,183, 67, 87, 51, 51,162, 18, 91,189, 13, 34,171,240, 29, 71, + 41,197,243,231,207,161, 86,171,113,233,210, 37,124,253,245,215, 41, 37, 69,150,179,179,243, 40, 43, 43,171,249,185,185,185, 75, + 18, 18, 18, 86, 86,196, 91, 32,162, 94,237, 12,150, 50,156,104,106,136,135,210,134, 9, 9, 33, 82, 79, 87,229,169, 59,151,118, +120, 91,211,123, 4,209,163,129, 39,217, 97,150,215,157,218,116,111, 26,196, 52, 90,251, 77,181,102, 99,102,158, 34,132,248,151, +101,217, 18,120,190,145,185,133, 37,128,100,220,190, 21, 82, 36,178,210,210,179,160, 51,176,208,233, 9,180, 6, 6,239,117,236, +138,213,235,183, 35, 46, 57, 29,133, 51, 18,223, 22, 16, 66,236, 2, 3, 3,199, 14, 24, 48, 0, 11, 22, 44,192,217, 31,127,212, +143, 35, 36, 91, 2,208, 96,158,135, 64, 41, 97, 76,112, 98, 47,201,179,116,233,210, 67, 0, 6, 47,154,128,119, 51,114, 49,220, +173, 39,181,171,214, 51,255,216,254,211, 41, 0,216,165,156,125,181,201, 12, 10, 10, 34,133, 35,107,149, 29, 97,251,183, 67, 18, + 20, 20,116, 33, 56, 56, 24,197,191,203, 59,193,202,165,118,247,153, 95, 78, 88,220,180, 75,107,146, 48,165, 19,210,179,181,220, + 87,225, 6,121,172,166,124,145, 85, 28, 95,174, 89,131, 59, 17,249,207,177,135,147, 19,166,125,240, 1, 40, 7,252, 17, 22,142, + 61,103,207, 98, 80,199,142, 48, 47,152,241,103,170,245,169, 52, 43, 86,113,107, 86,101,173, 78,153,153,153,216,183,111, 31,154, + 53,107, 6,149, 74, 5,137, 68,130,250,245,235,227,225,195,135,168, 81,163, 6, 8, 33, 56,124,248, 48,250,244,233,131,103,207, +158,225,221,119,223,181,168,138,208, 10, 15, 15,183,162,148,182, 41,180,126, 84, 21, 58,157, 14,143, 30, 61, 66,207,158, 61, 97, +107,107, 11,119,247, 93, 56,123,106, 7, 84,129, 31,129, 16, 84, 74,104,241, 60,255,113, 80, 80,144,140, 16, 2,141, 70, 13,165, +210, 12,230,230, 22,176,180,180,130,159,159, 63,226,227,227,209,165, 75, 23,125,100,100,228,218,132,132,132,189,149, 77,107, 64, + 64,128,121, 86, 86,214, 71,213,170, 85,147, 23,244,118, 3,106,214,172, 57, 53, 50, 50, 50,167,178, 86,173, 66,129, 69, 8, 1, +203,178, 69, 66, 75,194, 48,112,117,113, 42,218, 46,240, 79, 35,229,112,101,199,165,233, 20, 0,224,229,229,133,213, 27,142, 50, + 65, 65, 65,152, 56,113, 34,140, 70, 35,214,174,205,159,100, 55,100,200, 16, 24, 12, 6, 28, 56,144, 63, 73, 82, 34,145,148,107, + 54,185,117,235, 22,110,223,190, 13,163,209,136,172,172, 44,156, 56,113, 2, 23, 46, 94,196,238,195,231, 16,245,252, 41,234,251, +123, 99,228,200,143, 33,149, 74,177,117,235, 86,180,106,213,234, 31,125, 33, 72,165,210,161,155, 54,109,114,221,178,101, 75,230, +225,195,135,243,222,121,231, 29,197,138, 21, 43,156, 86,175, 94,237,168,215,235, 49,105,210,164,228,107,215,174,233,122,247,238, +109,190,113,227, 70,215,154, 53,107,118, 2,176,172,148,251,105, 14, 96, 16,128, 15,219, 53,179,150,100,230,104, 32,112,122, 60, +143,122,129,172, 92, 61, 4,222,128,152,216,120,228,106,121,164,165,231,160,126,163,206, 63,133,132,132,204, 34,132,124, 69, 41, + 61, 86, 81, 58,195,194,194,112,237,218, 53, 68, 69, 69,225,249,243,231,175,252, 55,106,212, 40,108,223,190,189,210, 22,173,210, + 69, 22, 11,162,171,129, 99,135,175,103, 38, 63, 77,120,107, 68, 86,193, 59,104,158,171,171,235, 60, 87, 87, 87,229,233,211,167, +173,171, 85,171, 6,142,227,244, 37, 45, 89,237,218,181,155,189,105,211, 38,215, 26, 53,106, 76, 0,176,242,223,144,118,134,193, +168, 37,235,198, 58, 88,202, 99,226,241,100, 89, 65, 44, 65, 22, 80,103, 3, 33, 59, 33,105, 57,231,197,132,222,211,109,103,108, + 89, 48, 10,229,204,144,141,124,246, 18,235,214,173,198,228, 73,195,241,235,207, 75, 32, 8, 18,232,140, 44,188,124,222,129,206, + 32,128, 48, 18, 52,104,212, 4,231, 67, 46, 65,202, 0,251,182,172,123,171, 76, 89,148,210,116, 66,200,218,195,135, 15,127, 54, +113,226, 68, 8,130, 32,159,191,110,157, 38, 37, 37,101, 33, 42, 17,255,170, 20,158, 62,235,214,173,139,152,177, 58,229,208,228, +161, 96,163,126, 35,233,183, 31,195,174,255,116,138,253,139, 9, 26,251, 35, 93, 85,122, 19,127,177,196,247,219, 33,180, 10,149, +100,241,239,210,208,216,175,198, 55,214,118,182, 31, 55,171,239,231, 48,109,226, 56,201,179, 68, 45, 14, 84,251, 32,247,247,109, +171,204, 19, 57,197, 79, 79,169,102, 69,101, 46,188,231,247,223,139,126,255,176,107, 87,169,255, 37,244,239,111,114,207,172, 44, + 43, 86,101, 45, 89, 0,160, 82,169,108, 58,117,234,132, 14, 29, 58,160, 95,191,126, 69, 62, 89, 13, 27, 54,196,238,221,187,209, +183,111, 95,220,189,123, 23,174,174,174,168, 93,187, 54,106,215,174,141,227,199,143, 87,182,130,131,231,121, 4, 6, 6, 22,206, + 58,172, 31, 27, 27,107, 85,213,130,212,233,116, 72, 75, 75,131,157,157, 29,228,114, 57,154, 55,111,134,207, 62,111, 14, 7,215, + 95, 16, 88,199, 31,121,121,121, 69,211,223, 77,104,108, 3,107,213,170,133,148,148, 20,164,164,164,192,209,209, 17,110,110,110, +112,113,113,193,178,101,203,232,202,149, 43, 79, 26, 12,134,181, 41, 41, 41,149,182,100,185,186,186,182,182,179,179,155,173,209, +104,228,197,122,184,114, 71, 71,199, 35,110,110,110, 11,227,227,227, 43,179,198, 38, 12, 6, 3, 8, 33, 8,126,238,134, 60, 61, + 65,118,236,109, 76,124,223,251, 21,225, 37,149, 74, 77,113,232,205, 27, 60,120,176,147,167,167, 7, 94, 70,134, 97,255,126,138, + 31,127,252,177,112, 86, 36, 34, 10, 58, 6,133,219,237,219,183,135,143,143, 15, 42, 19, 36, 83, 16, 4,220,191,127, 31,187,142, + 92,128,171,119, 29,196, 60,121,132, 59,199,127, 67, 53, 71, 59,212,109,212, 4, 70,163,241,181, 66,111,188, 9, 24,141,198,205, +190,190,190, 84,175,215, 95, 0,176,250,193,131, 7,195, 19, 18, 18, 38, 29, 61,122,212,109,192,128, 1,241,191,253,246,219, 10, + 0, 91, 30, 60,120, 48,246,219,111,191,237,192,113, 92,169,179, 5, 89,150,253,245,139, 47,190,104, 55, 96,192, 0, 34, 99,140, +250,211,167,182, 74, 56,206, 72,190,252,106, 51, 31,114,249, 2,195,113, 70,210,111,240, 23,194,241,223, 31, 48, 99, 62,255,129, +111,248, 78, 16, 66, 67, 67, 93,122,244,232,241, 45,128,114,133, 86,161,165,170, 44, 11, 37,203,178, 24, 62,124, 56,118,239,222, +109,114,190, 71, 2, 53,172,188, 45,174,125,191,166,163, 5,145,228, 22, 19, 89, 53,113,236,240,245,204,164, 39,241,111,149,200, + 2,128,212,212,212, 13, 0, 54,216,217,217, 37,153,155,155, 35, 39, 39,231, 79,245,143, 16,162,244,247,247, 87,202,229,114,116, +238,220,217,206,213,213, 53,130, 97,152,149,113,113,113,101, 42,142,210,134, 9, 75, 27, 78,124,157, 89,135,182,142,232,209,188, +117, 35,203,199,214, 11, 44,149, 18,237,221,106, 17, 74, 43, 2, 32, 75,231,252,252, 74,244,160,108,146,172,104,216,164,125, 99, + 88, 73,204,123,148, 37,180, 24,150,189,147,149,145,217, 45, 59, 71,143,203,127,132, 98,240,160, 90,208, 25, 8, 4,129, 65,110, +158, 14, 96,165, 96, 0, 12,249, 96, 24, 40,145, 32, 61, 41, 30, 44,203, 62,192,219,135,153, 99,199,142,237,246,213, 87, 95, 85, + 47,136,127,229, 93, 16,255,106, 26, 33,164, 30,173, 32,248,120, 57, 60,213,126,219, 61,103,202,145, 75,235,179,130, 90,104,158, + 52,246, 7, 0,216, 53,246, 71,186, 84,138,167, 18, 22,105,148, 66, 83,194,170,213,182,248,247,127,204, 58,248,138, 19,124,241, +109,147,124,180,124,107,120,116,109,219,180,201,231,179,190,154,101,249,240, 74, 8,102,124,179,154,250, 54,233,148,179,225,210, + 29,125,174,185, 79,183,156,148, 39,127,152,170, 47, 0,160,235,123,125, 81, 63,160,217,159,254,108,213, 62, 63,150,228,229,243, +183,144,148, 18,103,114, 99, 91, 32, 14, 74,245,201, 50,101, 74,127, 41,166,239,204,208,208, 80,167,216,216,216, 87, 28,223,125, +124,124, 64, 8,193,245,235,215,113,237,218, 53, 12, 30, 60, 24, 18,137, 4, 82,169, 20, 23, 46, 92,168,148, 53,166,152,117,233, + 62,165,180, 45, 33,164,139,135,135, 71,169,179, 13, 77,225,210,104, 52,200,202,202,194,169, 83,167, 80,171, 86, 45,124,255,253, +247,112,115,117,198,172, 89, 83, 32, 8, 2,178,179,179,193,243,188,169, 22, 45,161,208, 90, 36, 8, 2, 82, 82, 82, 80,189,122, +117,172, 89,179, 6, 43, 86,172,248, 54, 62, 62,254,104,101,211,232,229,229,101,195,243,252,151, 61,123,246,236,212,187,119,111, +116,233,210,229,149,255,119,238,220,105,121,224,192,129,133,158,158,158, 93, 13, 6,195,162,164,164,164, 20, 83,120,127,249, 37, + 63,252,146,234,157,121,152, 49,160, 26, 62, 28,191, 21,203,150, 29,132, 66,161,120,165,225, 93,176, 96, 65,185, 34, 70,160,212, + 87,150,122, 37,126,202,244,165, 78, 11, 23,158,197,217,179,201, 96, 24, 6,174,174,174, 96, 24, 6, 47, 94,188, 0,195, 48,240, +246,246, 6,195, 48,136,139,139, 43,244, 9,204,128,214,180, 88,134, 12,195, 64,171,213,226,101, 76, 20, 98, 35, 35, 96,145,157, + 8, 71, 43, 21, 50,194,238,163,254,200, 81, 69,241,159,254,225, 30,238,118, 0,219,139,237, 90, 74, 8,209, 19, 66,250, 1, 56, + 68, 41, 45,180,104,124, 91,240, 41, 21,239,188,243, 78,195,175,190,250, 74, 90, 24,110,195,205,235, 59,206, 96, 48, 8, 0,224, + 95,191,205, 43,106,255,233,211,167, 88,182,108, 25,242,242,242, 32, 51, 37,208, 93,129,104, 45,156, 97, 88,154, 8,171,140,200, + 2, 0,123,111,143,159,174,223,190,192,223,139, 92,175,121,240,248,132, 89, 66, 12, 3, 70,255,246,138,172,146,150, 45, 15, 15, +143,121,130, 32, 80, 74,233,156, 98,239, 86,133,151,151,215,165,211,167, 79,219,115, 28,135, 85,171, 86,217, 36, 38, 38,218,180, +105,211,102, 6,128, 50,133, 86,105,195,132,165, 13, 39,162,216,172, 67,133, 66, 97, 87,222,235,163,228,172, 67,158,135,159,149, +165, 13, 50, 16, 11,157,131,177, 97,166, 61,151,126, 38, 97,212, 93,183,232, 70, 1,230,188,177, 58,147,173,135,187,202, 6, 2, +165,126,101,118, 78,141,198, 19,119,111,223,233,236,229, 89,139, 61,122,236, 34,122,245, 25, 0,157,142,129,214, 72, 64, 88, 41, + 8, 43, 67,189,250,141, 80,187,110,125, 80, 0,183,110, 92,225,244, 70,227,153,183,169,236,221, 90,125, 62,216,173,213,103, 43, + 65, 5, 90, 74, 28,173,234,125,250,244, 89, 8,224,243,138,120,156,223,253,124,176, 75,139,124,158,226,113,180,190,248,108, 44, +194,110, 72,173, 47,222, 94, 44,235,242, 14,130, 83,206, 18,168,148,255,155,117, 40,101,170, 30,154,227,191, 34,184, 76, 18, 90, + 94, 94, 94, 54, 78, 22,170, 95, 62, 29,249,177,101,244,189,171, 72, 12,191,142, 63, 46, 70,100,236, 57,112, 48, 61, 47, 45,121, +100, 37, 68, 86,209, 48,159,189, 75, 53,248,212,249,179,208, 82, 90, 56, 2, 0,124,234, 52, 3,107,110, 93,217, 33,143, 63, 89, +179,170, 34,178,138,191,176, 75,139,161, 53,102,204, 24,108,218,180, 9, 45, 91,182,132,175,175,111,209,203,190,178, 86,179,146, +214,165,170,204, 54, 44,142,156,156, 28,120,123,123, 99,227,198,141,120,240,224, 1, 44, 45, 45, 49,120,240, 96,228,228,228, 20, + 9, 44, 83,157,225, 41,165, 79, 79,159, 62,221,116,224,192,129, 84, 42,149,146,204,204, 76,216,216,216, 96,205,154, 53,121, 9, + 9, 9,193, 85, 16, 89, 3,100, 50,217,148, 65,131, 6,177,254,254,254, 72, 74, 74,130,149,149,149,145, 16, 34, 5, 0, 27, 27, + 27,163,153,153, 25,198,142, 29,139, 6, 13, 26,180,158, 54,109, 90, 75,119,119,247, 53,113,113,113, 91,203,171, 75,132,144,162, + 6,117,228,202, 71,208,235,243,133,202,218,181,107, 81,224,235,246,191, 33,130,200, 72,192,132,153, 44, 22, 22, 22,240,245,245, + 45,181,236, 91,183,110,141, 91,183,110,229, 15, 77, 74, 36,112,114,114,194, 31,127,252, 97,210, 76,170,194, 64,144,161,161,161, +168,227,227,128, 7,103, 79,195, 65, 37, 69, 3, 55, 23,120,180,110,139,136,136,136,127,204,154, 85, 16,155,106, 28,128,142, 5, +117,112, 51,128, 49,197,182,215, 80, 74,127,170, 12, 39,199,113,148, 97, 24,242,242,229, 75,131, 74,165, 34,118,118,118, 18,133, + 66, 1,157, 78, 87, 36,184,158, 62,125,138, 99,199,142, 33, 54, 54, 22,118,118,118,140,181,181, 53, 12, 6, 67,134, 41,252,126, +126,126,112,113,113,121,197,241,125,228,200,145, 85, 18, 89,195,129,192, 77,223, 45,170,166, 96, 88,235, 58, 14, 93,241,252,209, + 11, 45,163,135,242,255,131,200, 2,128,140,140,140, 13, 0, 54, 20,110, 59, 58, 58,142, 96, 89,118,150,181,181,181,245,133, 11, + 23,108, 28, 29, 29,201,214,173, 91,141,115,230,204,201,100, 89, 54,131, 16,178,252,159, 23,135, 8, 79,205,138,244,150,218,186, + 9,247,180,244,202,164,151, 51,106,103, 72,107, 57,146,186,129,232,147,252,240,242, 8, 46,178, 69, 82, 66, 34, 67, 33,132,151, +243, 14,222, 60,227,171, 5, 95, 70, 60,186,227,165,180, 82, 98,204,216,175, 16,124,242, 60, 8, 35,197,165, 43,215,161, 55,240, + 72, 77,207,194,160, 33, 67,225,225,234,128,240,107,167, 82, 56, 65, 88,243,118,137,108, 97,117,231, 94, 35,108, 21,102,170,130, +123,194, 99,251,207, 83,192, 48, 43, 49,119,238, 92, 4, 6, 6,142, 39,132,124, 93, 81, 28, 45, 66,132,213,245,218, 14,177,149, + 41,242,121,168,192, 99,227,190, 25, 5,113,180, 38, 99,205,134, 3,245,234,250, 60,159, 95, 94, 28,173,183, 69,100, 21,255,174, + 80,104, 85,171, 86, 77, 97, 46,197,104, 59, 51,217,180, 79, 63,232,237,152, 28, 25,134,216,135,119,242,135, 23, 12, 26, 67, 66, + 68,184,175, 9, 23,237, 88, 34,126, 7, 45,111,232, 74,171, 53,162,178,156,133, 13,110, 73,107, 86,101, 68, 86,105,156,197,197, + 86,241,184, 89,158,158,158, 88,184,112, 97,133,113,180, 74,201,123,225,254, 46, 0,234, 23,138, 45,228, 59,195,119, 49,101,166, + 97, 89,156,142,142,142, 72, 75,203,143,144,208,174, 93, 59,180,107,247,191,249, 12, 6,131,161,200,138,101,105,105,249, 39,139, + 86,105,156,102,102,102, 51, 14, 30, 60,248,241,149, 43, 87, 6, 78,157, 58, 85,218,161, 67,135, 66, 49,167,166, 38,172,237, 86, +146,147,231,249,177,167, 78,157, 98, 5, 65,192,198,141, 27,113,235,214, 45,170, 82,169,102,171, 84,170,213,102,102,102,188, 70, +163, 25, 51,106,212,168,161,243,231,207,103, 90,183,110,141,171, 87,175, 50,213,171, 87, 31, 6, 96,107, 69,121,191,126,253, 58, + 24,134, 1,151, 30,131,241, 51,246,192,220, 76,130, 71,143, 30, 33, 61, 61,253, 79, 65, 76, 77,185,159,197, 45, 37,133,159,214, +173, 91, 23, 13, 67, 54,111,222, 28, 44,203,226,238,221,187,165, 14,195,150,224,164,246,246,246, 69,245, 67, 38,147,225,252,249, +243,248,230,155,111,224,101,103,131,140,135, 15,224,210,238, 61,116,250,120, 20, 6, 15, 30, 12,150,101, 97,103,103, 87,100,249, +173, 40,239,175,249, 66, 40,206,249,113,157, 58,117,134,133,135,135,123,212,171, 87,207, 53, 52, 52,180,125, 96, 96,160,247,131, + 7, 15, 10,183, 21, 48,193, 55,167, 56,231,205,155, 55,247,175, 94,189,122,236,240,225,195,101,130, 32,240,209,209,209, 70, 0, +196,197,197,133,189,121,243,166,112,244,232, 81,104, 52, 26,120,120,120, 48,238,238,238,228,204,153, 51,194,195,135, 15,175, 83, + 74,191, 50, 37,239, 60,207,191, 18,198,161,240,247,206,157, 59, 43,253,188, 87,171,237,247,125,135, 54,254,158,169,241,119,145, + 16, 23, 9, 62,203,209,112,236,240,111,186,202,136,172,191,161,140,254, 78,206, 5, 79,158, 60,113,215,233,116,144,203,229, 88, +187,118,173, 97,225,194,133,225,169,169,169,173,104, 41, 51,202, 75,114, 86,113,214, 97,122, 57,156,127,154,117,152,149,134,224, +195, 71,110, 54,181,232,179, 25,227,227, 83,138, 28, 27, 41, 33,118, 7,157, 3, 90,169,154,213,139, 99,142,207, 99,114,120,117, +112, 89,233,164,148,234, 9, 33, 3,250,244, 29,114,110,247,238, 93, 22,115,230,205,195, 31,215, 31, 32, 45, 51, 23, 2,101, 33, + 16,130, 89,179,230,192,197,193, 14,217,241, 79,212, 58,131,161, 79,201,165,120,254,235,229, 78, 8, 51,225,204,209,173, 43, 25, + 2, 33, 47,233,177,130,205,137, 84,125, 56,184,143,100,192,128, 1, 56,120,240, 32, 66, 67, 67,215,151, 37,178,138,115, 82,202, + 76,120,112, 97,207, 74, 2, 8,154,148,199, 10, 73,238,115,213,176, 15,250, 72, 6, 15, 30,140, 67,199,174, 96,247,111,207,215, +237, 58, 74,127,123,155, 59, 44, 85,138, 12,111, 41, 65,104,171,128, 26,238,173, 27,213, 85, 74,120, 13, 98, 31, 70, 34, 61, 79, +139, 51, 97,209,153, 12,101,170, 28, 91, 39,255, 5, 41, 67, 76,204,147, 63,253,151,153,169, 44,104,208, 43,183,172, 20,195, 48, +175, 88,179, 94,199,146, 85, 60,157,206,206,206,175, 44,231, 82,188,225, 46,244, 1,170, 66,104,135, 25, 49, 49, 49, 86, 49, 49, + 49,160,148,226,250,245,235, 86,205,155, 55,159,241, 58,214,172, 41, 83,166, 20, 89,173, 74,126,151,182,175, 34, 20, 56,165,175, +112,112,112,216, 55,109,218,180,241,205,155, 55,239, 60,111,222, 60, 2,128,173, 98, 5,228, 4, 65, 64, 72, 72, 8, 14, 30, 60, +200, 27, 12,134,209,241,241,241,197,125, 29, 86,185,185,185,157,233,219,183,239,214,199,143, 31,179,225,225,225, 48, 69,208,105, + 52, 26,248,250,250,130,227, 56, 44, 30,239,137,156,156,122,224, 56, 14, 60,207,195,220,220,252,149,117, 46, 77, 41, 39,134, 97, +192,243,252,159,132,214,245,235,215,193,178, 44, 90,181,106,133, 59,119,238, 20, 89,180, 42,178, 64, 25, 12,134, 24,103,103,103, +231, 5, 11, 22, 20,165, 43, 37, 37, 5,167, 79,159,198, 59,239,182, 64,192,232, 49,136,143,143,199,242,229,203,225,230,230,134, +239,191,255, 30,233,233,233,224, 56,238,239, 54,167,119, 11, 15, 15,247,248,224,131, 15,146, 31, 60,120,224,113,236,216, 49,155, + 30, 61,122,152, 15, 25, 50, 36,249,193,131, 7, 30,132,144, 22,168,164, 19, 52,207,243, 51, 9, 33, 39,191,255,254,251, 25,159, +127,254,121,243,225,195,135, 75,165, 82,169, 16, 23, 23,199,237,218,181,139,248,250,250, 50, 50,153,140,156, 58,117, 74,184,113, +227,198, 53,142,227, 22, 83, 74, 47, 85,198,226, 92, 92,100,177, 44,107,146,200, 42,137, 73, 78,138, 97,150, 76, 74,171,213,107, + 23, 50,254, 62, 30,134,109,187, 78,191,188,116,245,201, 51, 86,199, 77,250, 5,120,134,255,135, 96, 89,118,111,157, 58,117, 70, + 76,152, 48,193,172, 75,151, 46,138,249,243,231,103,229,228,228,148, 42,178,202,120, 46,255,242, 89,135, 0,126,158, 57,245,216, +164, 47,234,141,168,241,137, 75, 53,156,205, 75, 70,134,132,101,172,108, 24, 52,242,102,145,147,250,212,241,183,115, 91, 94,160, +130,184,108,148,210,155,132,144,142,117,235, 53, 60,176,248,251,197, 78,179,167, 79,147, 30, 56,118, 2,148, 51,224,250,133, 11, +176,144,241,244,225,237,179, 73, 58,131,190,247,219,184, 4, 79,252,229, 85,187, 9, 33, 71,236,236,236,238,125, 60,124,184,111, +157, 58, 67,160, 82,169,176,127,255,126,108, 95,181,138, 95, 1, 12,220, 64,200,157, 49,249, 49,245,202, 68,210,213, 34,158,187, +163, 62,254,216,175, 81,163, 79,160, 82,169,176,111,223, 62,108, 93,177,194,100,158,255,184, 53,171, 48, 50,124,112,193,183, 9, +113,180, 24,146,115,237, 73,116,238,245, 39,209,185, 16, 40, 21, 40,213, 49, 12, 94,230, 25, 12,223, 71, 60,139, 61, 85,197,132, + 64, 16, 4,124,251,221,132, 55,153,185, 34,241, 83,213, 41,221,165, 52, 18,177,197,215, 72,171,104, 65,105, 0, 48, 26,141,177, + 38,210, 47,242,242,250,211, 26,168,139,170,154,214,194,225, 64, 83, 69,150,169,113,180, 0, 32, 53, 53, 53, 1,192,108, 87, 87, +215,157,157, 59,119, 30, 5, 32,174,138,101,180,177,109,219,182,163, 1,176,132,144,245,113,113,113,127,114, 40,141,143,143,143, +112,119,119,255,193,199,199,167,104,161,233,242, 56, 5, 65,120, 94,175, 94, 61, 67,105,101, 81,214,182, 32, 8, 21,150, 81,102, +102, 38,154, 53,107,246,167, 53, 45, 41,165,136,142,142, 46,180, 56, 21,221,251,242, 4, 92,110,110,238,152,207, 62,251,108,131, + 84, 42,245, 2, 64, 10, 69, 46,207,243,236, 79, 63,253,164,228,121,158, 5, 64, 24,134,225,164, 82,169,246,224,193,131, 28,199, +113, 49, 58,157,110,204,223,252,142,216, 71,242,151, 98,200, 11, 15, 15,247, 47,176,100,197,134,134,134,222,221,189,123,183, 35, +128, 61, 85,172,155,151, 0, 92, 34,132,180, 94,187,118,237,204, 49, 99,198, 52, 27, 60,120,176,164, 93,187,118, 8, 14, 14,230, + 67, 66, 66,174,107, 52,154, 69,149, 17, 88, 5,101,153,229,233,233, 89, 36,184, 42,120,150,203,117,228,181,247, 86,172, 30, 58, +206, 77,185,113,209,233,220,212,120,253, 21, 99,174,254,171, 45, 64, 40,254, 31, 35, 49, 49,113, 42, 33,100,206,242,229,203,227, + 27, 52,104,160,144,201,100,122, 83, 69,214,223,104, 61,224, 8, 33,221,127,236,212,255, 72,219, 89,159,249,116,106,223, 74,229, + 89,205,201,253, 97,100, 18,158, 94, 13,206,187,247,219,119, 81, 84,151,209,139, 82,202,153,192,117,131, 16, 82,107,202,180, 41, +133,139, 74,215,239,112,230, 48,253,127,180,168,244,183, 63,252,240,131,111,157, 58,117,176,127,255,126,156,217,177, 3,131, 82, + 83,113,158,101, 89, 70, 38,179,255,205, 96, 88, 10,211, 2, 23,127,187,108,217, 50,191,192,192, 64,236,221,187, 23,167,182,110, +197,192,170,241,148,133,166, 0, 28, 11,155, 39, 0,143, 1, 52, 6, 96, 6, 64,135,252,165,157, 28,138, 29,159, 86,240, 95,225, +255, 23, 1,252,149,142,176, 21, 71,134, 47,137, 7, 79, 94, 52,126,211,169,208,104, 52,233,190,190,190,149,154,115,109, 52, 26, +203, 29,195,229, 56, 46,182, 70,141, 26, 38, 91, 45, 76, 17, 69,105,105,105, 77,254,194, 23,196,107,249, 98,189,210,136, 8, 66, +148,171,171,171, 80,216,232,151, 38,194, 74,219, 71,129, 23,149,185, 78, 66, 66,194, 99, 0, 95, 84, 53,157,113,113,113, 7, 96, +194,162,209,166, 30, 7, 0,233,233,233,111,124, 49, 95, 66,105,220,252,249,243, 43, 37,176, 65,105, 92, 57,101,253, 0, 64,243, +127,251, 91,182,112,233, 29, 66, 8, 19, 26, 26, 58,170, 96,120,251, 44,128,245, 5, 17,189, 95,151,191, 72,112,109,220,184,113, + 18,165, 20,217,217,217, 43, 42, 43,176,138,122,207, 73, 73,193,111, 42,239,233, 73,250,223,119,173,143,125, 79,147,105,152,180, + 41, 87,191, 21, 34, 10,203, 76,235,228,228,244,235,135, 31,126,248, 14,128, 45,175,203, 87,218,112,226, 27, 72,227, 11, 66, 72, +131,243, 83,190,249,248,188,141,101, 16,120,137, 63,244,204,111,208,167, 5, 3,248,197, 20,171,120,241,252, 34, 63, 76,201,178, +255, 79,229, 92, 16,255,106,210,136, 17, 35, 48,103,206, 28,156, 90,186,212, 48,142,144, 44, 41, 64, 79,230,119, 52, 25, 2, 76, + 55,149,103,216,176, 97,152, 51,103, 14,142, 47, 94, 92, 37,158, 10,224, 72, 8, 57, 6, 0, 51,102,204,248,106,225,194,133,182, + 51,103,206,172,191,104,209,162,239, 11,182,195, 10,255, 47, 40,211, 30, 51,103,206,172, 91,236,255, 28, 0, 55,255,226,251, 89, +106,100,248, 87,122,236,111,250, 3,160,163,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,107,126,130,242, 37, 75,217, +223,101,253, 46,182, 15,255,196, 71, 34,246,221, 68,136, 16, 33, 66,132, 8, 17,255, 81,171,220,177,215,249,255, 13,166,163,208, + 71,171,184,165,116, 35,144, 63,221,189, 99, 25,166,212,202, 4,142,236, 88, 5,179,239, 89,145, 83,228, 20, 57, 69, 78,145, 83, +228, 20, 57,255,127,113, 86,196, 93,198,249, 65,132,144, 99,148,210, 30,101,125, 23, 10,171,146,191,139,237,123, 99,110, 7,165, +228,101,116, 89, 62, 90,226,208,161,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,137,161, 67, 0,116,198,140, 25, 51,255, +109, 67,135, 0, 92, 1,140, 46,254, 49, 97,232,112, 63, 27, 23, 7, 43,185, 92, 37, 3, 0,189, 94,109,112,119, 71, 54,208,255, + 31, 91,240, 86,196,127,214,180,235, 92, 32,234,147,222,228,177, 34, 68,136, 16, 33,226,255, 13, 82, 10, 45, 85, 0, 82, 0,144, +130,109,125,193,119, 74, 65,219, 81,242,247, 43,255,255, 85,160,148, 38, 0, 40,117,182,188,164, 44,145,149,154,170,114,144, 72, + 50,252,120, 94, 91, 27, 0, 36, 18,230, 81,106,170,109,132,131,195,254,212,170,136, 45, 71,103,231,219, 82,150,117, 55,229, 88, + 35,207,199,165, 38, 37,189, 18, 58,158, 2,255,121,129,103,170,136,120, 29,177,241,119, 8, 21, 71, 71, 71,103,103,103,231,247, +173,172,172,222,205,204,204,188,145,146,146,114,168,172,117, 15, 9, 33, 11, 9,193,180,130,223, 75, 40,165, 51,203, 73,187,201, +199,150,114,174,175, 74,165, 26, 79, 8, 9, 44,200,127,168, 90,173, 94, 75, 41,125,242,255, 80,216,154, 1,232, 45,145, 72,134, + 57, 56, 56, 52, 75, 76, 76,156, 79, 41, 93, 94, 69, 46, 9,128, 41, 54, 54, 54,131,109,108,108,170,167,167,167, 63,203,206,206, +222, 11, 96, 25,165,180,194,169,210, 95, 79,116,123,183, 93,151,118,179, 67, 78,133,124, 59,111,101,252,213, 63,253, 63,213,205, +190,115,167,150,115, 66,126,187,178, 96,230,234,184,244, 74,166,141, 1, 80, 24, 52, 79, 40,232,181,210, 55,124, 47,165, 0,122, + 2,104, 7, 32, 4,192,111,166,228,187, 12,174,119, 0,124, 85,144,230,101,148,210,243,255,242,122,100,238,236,236,188, 24, 64, + 79,137, 68, 18, 30, 23, 23, 55,154, 82, 26,251, 15,167, 73,130,252,105,254,129,200, 15,195,113,211,148, 16, 14,166,192,193,193, +161,135, 68, 34, 25, 95, 16,218,101,109,106,106,234,177,127,107,217, 40, 20,138, 21, 46, 46, 46,159,104, 52, 26, 53, 33,132, 22, +143,247,200,113, 92,108, 74, 74, 74,147,183,240,213,118,243, 95,254,188,140, 46, 69,124,149, 29, 71, 43, 46, 14, 86, 18, 73,134, + 95,114,226,131, 65,241, 9,247, 7, 2,128,155,107,253,189, 78, 46,245,246,196,197,201, 13, 77, 59,245,181,144,170, 36,107, 89, + 86,218, 80,171,215, 57, 72, 37,210, 84, 3,103,188,203,232,233,248,132, 71, 7, 75, 13,182, 40,101, 89,247,168,136,243, 78,156, + 33, 29, 82,165, 27,164,102, 94,101, 38,216,205,205,173, 74, 25,181,179,171,105,105, 80, 40, 39, 73,165,108, 39,129,114,129, 84, + 0, 24, 34, 13,229,120,227, 57,153, 78,247, 99,122,122,100, 78, 85,111, 98,109, 7,226, 66,129,193, 32,232, 4,138, 51, 4,216, +253, 40,149, 38, 86,162, 16, 76, 18, 17,175, 41, 54,138,159,187,156, 82, 58,245, 77, 87, 38, 15, 15, 15,219,126,253,250,173,248, +230,155,111,204, 44, 44, 44, 72, 76, 76, 76,151,233,211,167,183,241,240,240,248, 34, 54, 54, 54,190,164,232, 35, 4,211, 4,129, + 50, 0,192, 48,100,186,179,179,179,138,101,217, 63,197, 54,226,121, 94, 69, 8, 38, 8, 2, 37, 5,199, 78, 35,132,172, 52, 69, + 48,154,153,153, 13,105,214,188,197, 23,139,127, 88,102,225,236,228,100,206,241,130,225, 69,116,148,106,246,140,169,205,205,204, +204, 86,106, 52,154, 93, 85,120,104, 8,203,178,131, 20, 10, 69, 15, 0,117, 10,118, 63,212,233,116,199,120,158,223, 99,106,131, +238,226,226,114,145,101,217,106,149,185, 54,207,243, 49,137,137,137,173,170,248,176, 15,240,242,242,250,165,109,219,182,170,102, +205,154, 65, 46,151, 99,206,156, 57, 83, 0, 44, 55, 69, 80,169, 84,170, 65,230,230,230, 53,114,115,115, 35, 53, 26,205, 1,185, + 92,222,113,229,202,149,158, 45, 91,182,180, 76, 74, 74, 34, 44,203, 58, 31, 59,118,236,163, 85,171, 86,117, 33,132,116,168,168, +145,203,138,164,179, 21, 61,235,180,206,138, 60, 63, 27, 64,183,146,255,115, 90,229, 48,202,122,246,208,208, 59, 47, 81,137,169, +245,132, 16, 70, 42,149,174,116,113,113, 25,161,213,106,181,200,143,189, 70,157,157,157,139, 26, 28, 0,208,235,245, 25, 25, 25, + 25,254, 85,184,143,254, 0, 70,218,216,216,140,248,242,203, 47,109,187,117,235,134, 29, 59,118,124,186,105,211,166, 12, 66,200, +175, 0,126,166,148, 62,174, 36,237,180,196,196,196,238, 82,169,148,120,122,122,178, 0,206, 87, 34, 61,126, 0,102, 21, 52, 54, +107, 41,165, 60, 33,164, 61,144,255,188, 3, 88, 82, 40,220, 88,150, 93,235,239,239,255,254,195,135, 15,215, 81, 74,191,173,234, +179,238,226,226,178, 97,205,154, 53, 3,123,245,234,197,166,164,164,184, 55,104,208, 96, 39,128,214,111,160, 65,250, 88,161, 80, + 76,174, 95,191,126,192,227,199,143, 35,178,179,179,151, 21,220, 79, 90,206, 57, 30, 0, 58,218,216,216,116,152, 53,107,150, 69, +143, 30, 61,176,113,227,198,238,155, 54,109,202, 37,132,156, 3,112,246,117, 69,160, 68, 34, 25, 31, 27, 27,235, 64, 41,133,171, +171,235,120, 84,176,184,249, 63, 5,150,101, 87, 14, 26, 52,104,196,206,157, 59, 85, 81, 81, 81, 42,119,119,247,162,224,217,132, +144, 42,183,159, 34, 94,219,162,181,177, 80,112,153, 20, 71, 75, 46, 87,201,120, 94, 91, 59, 62,225,254,192, 54,109,127,178, 6, +128,139, 23, 62, 27,232,228, 82, 55, 84, 46, 87, 69, 40,172,148, 7,251,246,236,216,176,127,143,182,196,195,213, 9,177, 9,201, +206, 63,239, 62,213,245,216,169,243, 7,145, 31, 64,172, 84,112,134,116,152, 25,206,226,241,229, 85,112,104, 23,143,213,199, 99, +113,245,222, 11,168,179, 82, 81,205,197, 12, 63, 76,234, 12, 23, 91, 85,149, 50,105,225,236,215,158, 81,170,246,124, 48,228, 67, +235,247,123,215,145,122,187,184,128, 82, 5, 34, 34,115, 91,156, 56,125,190,233,129,125,187,198, 91, 56,251, 13,202, 77,138, 48, +249,229,214,216,141,152,229, 25,208, 91,194,146,143, 90, 55,175,219, 97, 72,247,214, 76, 64,157, 90, 8, 15,123,216,249,200,239, +215,127, 8,112,102,206,113, 60,221,102, 46,195,225,219,241,101, 7,244, 43, 77,112,116,234,212,169,181, 66,161, 48, 20, 63, 78, +167,211,201, 8,193, 59, 85, 17, 27,133,215,208,235,117,140, 84, 42, 7,195,144, 47,234,215,175, 95, 39, 53, 53,245, 60, 33,228, +151,184,184,202, 89, 11, 62, 39, 68,158, 33,145, 52,102, 20, 10, 87, 94,175,183, 7, 0, 34,151,103,120,216,218,214,155,245,213, + 87, 22, 44,203, 10,105,105,105, 80,171,213,100,212,168, 81,202,200,200,200,190, 0, 86, 85,144, 70,108,218,180,201,207,213,213, + 85, 95,242,191,132,132, 4,121,175, 94,239, 87,229,165,237,247,206,187, 45, 39,159, 58,117,178, 78,118,122,134,118,211,242, 13, +183,141, 74,149,174,122, 29,127,233,218,141, 91,173, 71,143, 24,250, 25, 33,228, 46,165, 52,162, 18,156, 94,102,102,102, 7,151, + 46, 93, 26,216,190,125,123,169,147,147, 19,146,146,146,240,240,225,195,192,223,127,255,189,247,214,173, 91,167, 16, 66,250, 82, + 74, 77,137,224,238,123,110,219, 47, 78,230,118,246,224,141, 70,184,213,111, 84, 20,223,236,233,239,167,193, 25, 12, 16,140, 70, +212,233,209, 59,223, 44, 35, 8, 8, 8, 8,168, 82,212, 93, 66,136, 91,221,186,117,183,127,255,253,247, 50,157, 78,135,235,215, +175,227,252,249,243, 66, 66, 66,194,162,138, 68, 22, 33,228,244,188,121,243, 60, 90,181,106,101,153,154,154, 10,158,231, 29, 14, + 31, 62, 60,190, 81,163, 70, 86,158,158,158,242,109,219,182, 33, 55, 55, 23, 28,199,217,213,168, 81,195,110,200,144, 33,250,109, +219,182, 77, 1,176,184, 44, 75, 86,118, 36,157,157, 72,106,116,245,111, 60, 12,137,228,100,215, 47,186,185,158,176,170, 73,138, + 44, 91,221,106,214,180,172, 81,219,124,186,133, 85, 61,187,236,184,179,211,187,213,172,185,233, 68,100,197,157, 33, 66, 8,195, + 48,204,202,190,125,251,126,176,123,247,110,213,195,135, 15, 85,117,234,212,129, 32, 8, 69, 17,248, 11, 3,206,250,250,250, 86, +229, 62, 46, 26, 59,118,236,244,129, 3, 7,162,126,253,250, 69, 65, 81,231,206,157,139,233,211,167,219, 94,188,120,113,202,174, + 93,187,166, 16, 66, 22, 83, 74,103, 84,166, 45, 47,222, 94, 86, 50, 89, 95, 63,127,254,124,192,193,131, 7,135, 78,155, 54,205, + 23,192, 4, 0,115,210,210,210,218, 2,128,189,189,189, 28,192,121, 66,200,199, 95,126,249,229,184, 25, 51,102,160,123,247,238, +115, 8, 33,223, 85,197,202, 71, 8, 97, 29, 28, 28,186,247,234,213,139, 53, 26,141, 48, 55, 55,135,209,104,172,249,154, 2,139, + 0, 88, 51,102,204,152,113, 99,199,142,133,173,173, 45,140, 70,163,223,238,221,187, 55,205,153, 51,231, 93, 66,200,200,210,210, + 74, 8, 25, 54,110,220,184,126, 31,126,248, 33,154, 52,105, 2,137, 36,255, 54, 46, 93,186, 20, 11, 22, 44,176, 56,125,250,116, +239,109,219,182,245, 38,132, 28,160,148, 86, 57, 22,154, 32, 8,144, 72, 36,120,249,242, 37,156,156,156, 20,118,118,118,167, 8, + 33, 27,211,210,210, 14,253,139,172, 38, 75, 6, 13, 26,244,193,206,157, 59, 45, 0,224,135, 31,126,192,228,201,147,225,236,236, + 12, 11, 11, 11, 81,237,252, 75, 44, 90, 37,227,104, 85, 41,188,131, 90,173,110, 52,243,243,143,192, 48,249,189,198, 90,213,189, +176,240,171,209,228,200,177, 83,141,202, 59, 79,170,116,195,227,203,171,160,240,156, 4,157,145,195,181,123,207,113,230,135, 46, + 0, 0,191,110,179,160, 51,116, 40, 84,134,118,114, 51,179, 37,122,158,255, 3, 46, 46,215, 17, 29,157, 82,145,200,114,116,113, + 62,182,126,253, 98,179,192,154,254, 48,112, 70,196, 37,199,129, 16, 5, 60,220, 45,241,241,176,110,210,182,109,221, 28,190,254, +122, 67,176,185,163, 95,159,188,148,136, 10, 3,134,250, 59,146, 45,173, 27,249, 14, 28, 18,212, 74, 81, 47,176, 46,100, 10,179, +255, 9,176, 38, 77,208,184, 73, 19,102, 70,110, 78,167, 27, 55,111,119,218,127,250,154,206,223,145,236,125,156, 66,135,151, 87, + 14,197, 5,199,196,137, 19, 81,216,251, 46, 68, 82, 82, 18,126,255,253, 92,169,231,152, 90,214,197,175,241,221,119,223, 89,102, +100,100,116,219,188,121,243,123,174,174,174,223, 37, 36, 36, 92, 54,133,228, 35, 66,170, 65,161,232, 48, 98,217, 50,161,225,251, +239,179, 54, 46, 46,140,192,243, 36,254,217, 51,251,229,171, 86,181, 75,127,250,212, 44,207,206, 46, 61, 67,163, 81, 71, 68, 68, + 64,169, 84, 18,137, 68,210,180, 20,133,159, 68, 8, 89,194, 48,100, 58, 33, 4, 10,133, 50, 98,236,216,177,119, 10,254,174,246, +219,111,191,169,122,246,236,169, 6, 16,149,111, 14, 87,186,179, 44,227,151,239, 64,136, 37,166, 8, 76,115,115,243,207,191,253, +126,177,121,118,122,166,198,144,151,103,116,180,178, 32,196,194,146,205,206,202,201,137, 75, 72,209,205,154,191,128, 29,243,241, +135,159, 3, 24,111,170,200,106,208,160,193,141,131, 7, 15, 58,217,219,219, 35, 51, 51, 19,105,105,105,184,113,227, 6, 4, 65, + 64,223,190,125, 21, 45,154, 55,107,244,213,172,217, 87, 9, 33,239,154, 34,182,204,237, 28,240, 67,171,134,249,141,117, 84, 90, + 81,249,108, 28,208,163,232,152, 5,177, 89, 0, 0,165, 82,249, 58, 75, 72,189,219,161, 67, 7, 25, 0,140, 28, 57, 50, 59, 39, + 39,103, 33,128,157,180,156,160,170, 5,152, 50,123,246,108,247,234,213,171,123,239,220,185, 19,185,185,185, 0,224, 84,189,122, +117,248,251,251,243, 33, 33, 33,240,243,243,131,165,165, 37, 46, 94,188,136,107,215,174,161,113,227,198,150, 50,153,108, 96, 89, + 66,171, 93,151,118,179, 21, 61,235,180,246,111, 60, 12, 22, 86,174,216,180,107, 15, 30,223,222,218, 90,103,120, 56,123,225, 4, +247, 15, 53, 84, 49,220,195,215,114, 70,181, 38,109,237,107,213,125, 31,222,141,239, 56,104,249, 75,207,231,124, 90, 99,145, 68, +169,221, 58,111,105,124, 90, 89, 34, 11,192, 15,125,251,246, 29,176,123,247,110, 27, 0,120,240,224, 1,146,146,146,224,232,232, + 8,165, 82, 9,169, 84, 90,180, 62,105, 21, 49,124,237,218,181, 69,162,141,227,184,162, 85, 0, 84, 42, 21,218,180,105,131,134, + 13, 27,226,208,161, 67,195, 1,204, 40, 37,141,173,154, 55,111,190,195,219,219,219,179,248,254,160,160, 32, 12, 30, 60, 24, 0, +208,182,109,219, 14,253,251,247,167,133,130, 48, 33, 33, 33,247,230,205,155,157, 40,165,215, 75, 75, 16,195, 48,154,184,184, 56, +124,249,229,151,120,241,226,197,167,132,144,104, 0, 74,185, 92, 94,212, 63, 38,132,248,213,173, 91,119,229,228,201,147, 17, 25, + 25,137,240,240,240, 27, 85, 29, 74,165,148,242, 62, 62, 62, 79,141, 70, 99, 19,142,227,160,209,104,208,167, 79, 31,165,157,157, + 93, 18,203,178,143, 82, 83, 83,135, 22,248,164,152,218, 8, 41, 1, 44, 27, 59,118,236,184,105,211,166,225,220,185,115, 56,114, +228, 8, 62,252,240, 67, 76,154, 52, 9, 22, 22, 22, 35, 38, 77,154,116, 21,249, 11,154,151, 68,135,181,107,215,130,231,249, 63, + 61, 27, 74,165, 18,173, 90,181, 66, 64, 64, 0,142, 28, 57,210, 1,197,214, 71,173,100, 35,233,221,183,111, 95,185, 32, 8,200, +203,203, 67, 72, 72,136,133,153,153,153,133,135,135,199, 40, 0,255, 26,161,229,237,237, 61,118,247,238,221, 22,197, 71,127, 20, + 10, 5,138,213, 3, 17,255,176, 69,171,162, 30, 86, 17,244,122,181, 65, 34, 97, 30,185,185,214,223,123,241,194,103, 69, 67,135, + 0,243, 72,175, 87, 27, 0,128, 23, 40,178,213, 28,204, 20, 12,162, 18,115, 16,246, 44,181,180, 11,191, 50, 69, 83,106,230, 5, + 69,179, 40, 80, 74,161, 55,240,208,101, 37, 98, 97,176, 26, 15, 99,181,208,231,101, 64,111,200,119,195,114,112,112,144,156, 58, +117, 98,242,217,179,191,143,251,245,215, 95,217, 88,107,235,112,100,101, 53, 42,141,211,206,174,166,165,196,220,108,239,186,245, +115,204, 40,251, 12, 17, 49,121,168,229,209, 12, 14, 54,158, 72, 76,205,195, 31,225,199,241,232,201, 49, 84,119,245,198,164,207, +187, 42,191,253,126,231, 30, 91,219,234, 94, 25, 25,207,179,203, 74,103, 1,134,109, 56, 25, 1, 46,253, 25,248,180, 72,240, 57, +241,127, 22,120,142, 94,104,220,222, 29,142,158, 53, 21,195, 39, 45, 24, 6, 96,120,105,156,148,210, 36,150,101,215, 49, 12, 25, + 71, 8, 65,253,250, 13, 98,151, 45, 91,102, 40,229,154,134,250,245, 27,196,178, 44,227,145,255, 98,103,214, 10, 2,159, 84, 65, + 58, 95, 17, 53,114,185, 98, 90,190,217,223,245,101,112,112,176, 97,192,128, 1, 88,186,116,169,124,250,244,233,179, 60, 60, 60, + 70,150, 28,222, 43,201,217,151, 16, 47,247,154, 53, 59,127,247,199, 31, 84,106, 52,146,244, 27, 55,178, 51, 19, 18,184,196,156, + 28,249,190, 71,143,186,127, 50,117,170,220,211,211, 19,151,143, 29,179, 79,201,203,163,153, 58,157, 38, 51, 51,147,114, 28,119, +163,140,188,207,116,118,118, 86,109,218,180,201,111,236,216,177,119,226,227,227,103, 22,188, 32, 22, 2, 8, 0, 16, 85,108, 31, +214,175,223, 19, 55,106,212,168,136,164,164,164,153,229,165,179, 24,234, 58, 57, 58,169,118,109,216,118,223,206,210,140,113,244, +112, 99,164, 54, 54, 18, 78,110, 38, 19, 0, 77,117,207,154,230, 0,234,150,113,207,206,150,236,113,155,153,153, 29, 60,122,244, +168,147, 84, 42, 5,207,243,112,116,116,196,139, 23, 47,144,153,153,137,156,156, 28, 60,127,244, 16, 62,158,158,248,122,198,116, +215, 9,211,103, 28, 36,132, 52, 41,222,152,149,186, 0,178,209,240, 39,203, 94, 25, 11,145,191,242,109, 74,185,151,192,139,152, +152, 24, 88, 88, 88, 32, 48, 48,208,226,143, 63,254,184, 84,150,200, 42,177, 8,240,192,150, 45, 91, 90,238,218,181, 11,141, 27, + 55,134,181,181, 53, 66, 66, 66,240,224,193, 3, 24, 12, 6, 38, 55, 55, 23,150,150,150, 88,180,104, 17,188,189,189,145,157,157, +141,152,152, 24,123,169, 84,234, 80, 22,103,200,169,144,111,179, 34,207,207, 78, 36, 39,187,110,218,181, 7,163,134, 12,130, 11, +125,118,201,186, 38,249,182,115,207,150,115, 41,235,217,195,220,178,190,173,111, 96, 79,200,228, 22,152, 48,109, 1, 34, 66,127, +179, 85,231,220,255,148,240, 47, 61, 1, 76, 44,201, 89, 96, 17, 97, 60, 61, 61, 63,217,183,111,159,101,177,161,148,162, 53, 15, +139, 47, 2, 95,214,130,239,166,220, 79, 66, 8, 94,188,120, 1, 39, 39, 39, 88, 88, 88, 20, 45, 32,254,240,225, 67, 92,187,118, + 13,133,171, 81,148,193, 57,244,236,217,179,158,230,230,230, 37,143, 65,106,106, 42, 56,142,131, 74,165, 2,207,243, 48, 24, 12, + 48, 26,141,208,106,181, 22, 1, 1, 1,227, 1, 92, 47,141, 83, 16,132, 47, 6, 14, 28,216,242,250,245,235, 53, 86,173, 90, 5, +189, 94,255, 67, 98, 98, 34,250,245,235, 7, 65, 16,208,161, 67,135,119, 40,165,143,103,205,154, 5, 0,152, 60,121,178, 49, 47, + 47,111,108, 85,242, 94,144,255,128,254,253,251,215, 56,119,238, 28, 90,183,110, 13,157, 78,135,165, 75,151, 90,173, 95,191,222, +106,219,182,109,142,211,166, 77,251, 5, 64,151,242, 56, 11,202,235, 7, 23, 23,151,113, 67,134, 12, 49, 43, 88,195, 20, 91,183, +110,197,215, 95,127,189, 27,192,172, 19, 39, 78,204, 59,114,228,200,176, 79, 62,249, 4, 95,127,253,245,164, 66,161, 85, 26,231, +243,231,207,225,232,232, 8, 43, 43,171,252,151,165,193,128,187,119,239,226,204,153, 51,168, 93,187,182, 41, 13,225,217,114, 68, +214, 47,187,118,237,178,124,249,242, 37, 46, 94,188, 8, 31, 31, 31,168,213,234, 10,215,134,125,211,139, 63, 87,196,169,209,104, +180, 49, 49, 49, 22,139, 23, 47,134,171,171, 43,188,189,189,161, 84, 42, 65, 8,129,209,104, 44,115,121, 53, 83,210,217,174, 29, +145,164,198,217,246,178,182,177,253,148, 82, 42,201,202,202,216, 96, 64,230,254,200, 72,170,255,187,242,254, 31,183,104, 53,162, +148,222, 41,190,230, 97, 97,103, 68, 2, 0,193,193,193, 52, 40, 40,136, 20,126,187,187, 35, 59, 53,213, 54,194,201,165,222, 30, + 39,151,186, 5,235,126, 49,143, 88,214, 54,194,217, 89,157, 13, 0, 6,142,226,202,163, 76,220,127,154,136, 7, 79, 19, 97,174, + 48,205,248,162, 51,112,249,243, 51, 41,133, 54,247,127,157, 86,131, 58, 3, 58, 67,190,187,135, 94,167, 70, 86, 74, 56, 25,208, +167,147,114,220,184, 49,112,117,117,119, 44,139,207,160, 80, 78,154, 48,185,187,141,157,141, 20,199,254, 56,137,119,106,247,129, + 82, 33, 69, 90,150, 22, 32,192,147,103,103, 0,193, 18,161, 17, 49,104, 94, 87,133, 46,157,235, 88, 28,218,255,120, 42,128, 57, +166,164,151,139,189, 1,153,111, 55, 72,121, 35,140,169,143, 33,100, 70, 3,230, 46,208, 16, 11,164, 37, 68,227,209,165, 3,249, + 19, 78, 43, 0,207,243,159, 58, 58, 58,102,206,154, 53,171, 93,173, 90,181, 12,227,199,143,191, 23, 21, 21,245,202,178, 54,213, +170, 85,251,113,237,218,181,120,250,244,105,220,119,223,125, 23,146,146,146, 50,187,146, 15,232, 12, 66,200,138,130,161,184,255, + 99,239,170,195,163, 58,222,238,153,245,221,100,227, 46, 36, 72, 8, 16,220,157, 16,164, 72,128,226, 94,180, 80,220, 75,176,226, + 36, 45,174,197,138,123,177,226, 78,144,224, 16,129, 64,128, 16, 79,136,251,250,189,119,190, 63, 34, 13, 33,178, 1,250,253,108, +207,243,236,179,123,247,222,125,119,238,204,220,153, 51,231,157,121, 39,229,204,153, 51,141,253,253,253,167,111,216,176,193,110, +202,148, 41,226, 41, 83,166,140, 6,176,188, 44,119,161,177, 68,210,105,229,157, 59,148,137,141, 85, 31,220,188, 89,188, 53, 32, + 96,129,150,227, 28,173,109,109, 73,171,230,205,115,141,120,188,148,212,196, 68,198,166, 90, 53,126,196,181,107, 86, 84, 38,139, +191,116,233, 82, 86, 78, 78, 78,169, 91,231,240,249,124, 69, 73,238,194,146,224,224,224,160, 41,105, 14, 87, 25,149, 59,139,163, + 84,107, 94,181, 42,253,174, 99,203,234,239,222,132,135, 75,205,205,249,238,213,171,212,124,249, 58,226, 49,101, 89, 21, 33, 36, + 75, 31, 91,124, 62,127,208,134, 13, 27,234,153,154,154,130,227, 56,152,153,153, 33, 57, 57, 25, 26,141, 6, 89, 89, 89,208,100, +103, 66,147,153,137,224,168, 8,180,110,223, 30, 3,186,126,231,113,224,204, 95,131, 0, 28, 45,203,174, 99,253, 70,133, 74,214, +178,202, 86,127,251,130, 98, 50, 10, 73,215,175,141,220, 33,146,203,209,121,166,207,215, 52,208,207,197, 98,241,197,190,125,251, +118,159, 61,123, 54, 47, 33, 33,225, 50, 33,164, 53,165,244, 85,153,138,176, 92,238,150,146,146,130,236,236,108,152,153,153, 97, +195,134, 13,176,179,179,131, 66,161,192,147, 39, 79,168,179,179, 51,185,117,235, 22,156,157,157,145,146,146, 2,173, 86,139,220, +220,220,143, 26,141,166, 84,119,121,190,123,176,219,204,110, 14,151,222, 60,219,223,214,137,124,120, 50,112,150,231,187, 55,193, +175,163,175, 94,187,191,156, 81, 73, 99, 50, 98,175,207,173,218,244,185,245,164, 57, 75,177,101,245, 98,188,121,116, 39,205,206, + 37,107,171,140,168,247, 53,239, 92,122,122,115,115,115, 85,175, 95,191, 54, 9, 12, 12, 4, 33, 4,102,102,102, 48, 50, 50, 42, +145,108,125, 65, 99,201, 43,242, 63,200,205,205,133, 72, 36,130,149,149, 21,118,239,222, 93,216,241, 86,169, 82,165, 44, 51, 59, + 58,119,238, 60,200,197,197,197,164,232,151, 77,155, 54,197,248,241,227,241,251,239,191, 35, 32, 32,224,147,253, 52, 63,126,252, +152,160,211,233,246,149, 81,182, 25,132,144,174,125,250,244,121,118,247,238, 93,211,221,187,119,131, 97,152, 18, 95,187,118,237, +194,195,135, 15, 23, 81, 74, 95,127, 97,135, 81,171, 95,191,126,119, 14, 29, 58,100,158,156,156,140,148,148, 20,228,228,228, 32, + 55, 55, 23, 44,203,162,102,205,154,132, 97,152,154,229,229, 35,159,207, 63,179,121,243,230,158, 63,254,248, 35, 4, 2, 1, 52, + 26, 13, 54,111,222,140,185,115,231, 38, 2, 24, 73, 41,213, 18, 66, 22,236,219,183,111, 68,175, 94,189,208,160, 65, 3,143,178, +108,230,228,228, 32, 39, 39, 7, 66,161, 16,246,246,246, 88,177, 98, 5, 52,154,188,102,165, 70,141, 26,133, 46, 79, 0, 59,106, +212,168,209, 51, 44, 44,108, 13,165,244,183, 82,218,153, 62,148,210,113, 44,203,102,247,237,219,215,234,200,145, 35, 38,113,113, +113,120,246,236, 25, 22, 45, 90,148,206,113, 28,203,113, 28, 81, 42,149, 31,236,236,236,158, 73, 36, 18,153, 66,161, 72, 75, 77, + 77, 93, 69, 41,189,252, 47,236,204,137, 80, 40,196,152, 49, 99, 32, 16, 8, 32,147,201,160, 82,169,160,211,233, 10,201, 60, 42, +232,150,118,119, 55,177, 18, 64,244, 99,141, 26,237,166, 15,152,214,195,198,193,209, 9,230,166, 18,132,134,190,106,125,243,198, +181,205,181,107,218,108,231, 52,186,237,175, 35, 50,254,241,205,238,139,115,145,255, 48,174,213, 8,192,115, 20,217,243, 16,249, +171, 16, 75,105,137,250,179,214,214,127,166,196,197,137,181, 98,177, 81, 88,129,202,149, 71,178,250,179,192, 17, 48, 90, 93,126, + 67, 65,243, 95,122, 18, 45, 29,139,119,111, 66,112,247,234, 95,176, 86,196, 33,229, 67, 67, 64, 84, 15, 26,101, 38, 84, 26,109, +254,232,141, 69,224,179, 27,200,202, 76, 67,221, 38, 61, 0, 30,239, 97,105,246,204,172, 72,143, 86,141,235,243,223, 69,135,160, +105,141,254,168,230,220, 22, 81, 9, 89,200,200, 81, 35, 61, 75,133,134,117,125,144,156,174, 68,150, 66,133, 87,239, 14,192,201, +177, 26,143, 8,194, 59,234, 75,180,212,175, 78, 65,253,250, 44, 68,174,173, 33,174,217, 11,124,215, 54,136, 14,186,133,192, 75, +235, 17,251,242, 30, 40,199,194,161, 70, 51,125, 31,146,205,151, 47, 95,110,214,186,117,107, 65,167, 78,157, 26, 56, 58, 58, 54, +136,143,143, 15,204, 87,115, 26,116,239,222,189,129,141,141, 13, 54,110,220,168, 36,132,108,254,194,206,182,168,187,237,177,157, +157,221,202, 83,167, 78,109, 30, 63,126, 60,108,109,109,235,149,245,219,100,161,176,193,200, 85,171,168,144,207,167, 71,183,108, + 17, 45,189,124,121,237,222,125,251, 68, 29,188,188, 8,165, 20, 47, 94,188, 48,250,117,203, 22,163,161,223,127, 31, 25,149,148, +196,248, 7, 4,104, 19, 98, 99,179,147,114,115,151,198,199,199,127,252, 87,212,108,157, 78,247,224, 67,196, 7,167, 38,205, 27, +218, 60, 15,253,240,178, 75,135, 86,173,120, 60, 30,239, 77,120, 84,128,141,141,169,209,181,171,215,180, 58,157,238,129, 62,182, + 36, 18, 73,143, 14, 29, 58, 8,210,211,211,225,232,232,136,228,228,100,196,197,197,229, 41, 14,153,233,208,102,102, 66,151,149, + 1, 54, 55, 7, 31,158, 60, 70,195,106, 85, 37, 39,242, 38,203, 31, 45,167, 76, 74, 84,170,138, 42, 91, 98, 19, 19,136,229,114, +144, 10,186, 13, 9, 33,223,155,155,155,207,205,200,200,184, 72, 41, 93,161,213,106, 39,207,157, 59,183,233,166, 77,155,172, 87, +174, 92,105, 58,110,220,184, 19,132,144,134,148, 82,117, 25, 29,216,123,134, 97,172, 1,216,222,184,113, 3,182,182,182,200,204, +204, 44, 80, 90, 52, 10,133, 66,154,154,154, 10,181, 90, 13,141, 70, 3, 83, 83, 83, 60,125,250, 52,157, 97,152,191,202, 75,159, +169, 27, 89,161,214,134, 46,180,242, 48,142,215, 50, 22,158, 73,105, 92,250,226, 53,241,203, 0,172,237,230,230,182, 75,203,221, +249,240, 54,228,156, 69,196,147,219,105,241,111,115,171,237,186, 16,158, 93, 70, 62, 82, 66, 8, 71, 8,161, 53,106,212, 64,114, +114, 50,248,124, 62,140,140,140, 32,151,203, 49,111,222, 60,108,222,188,185,194, 68,139, 16, 34, 53, 54, 54, 94,197,227,241, 6, +153,153,153,217,176, 44, 11, 31, 31, 31,244,236,217, 19, 98,177, 24, 90,173,182, 80,209, 44, 80,169,202, 82, 58, 40,165, 47, 0, +152, 22,251, 15, 47,107,107,235,155,106,181, 26,225,225,225, 56,115,230, 76,123, 74,169,127, 5,159,237,112, 66, 72,215, 54,109, +218,236,111,220,184,177, 27,165, 20,245,234,213,195,224,193,131,113,224,192, 1, 4, 6, 6, 34, 51, 51,147,187,118,237,218, 94, + 0,107, 42,218,129,231,231,111,205,126,253,250,221, 59,124,248,176, 69,106,106, 42,148, 74, 37,114,115,115,113,226,196, 9,180, +110,221, 26,214,214,214, 56,116,232, 16, 67, 41, 61, 87, 22,201,226,241,120,187,183,111,223,222,115,236,216,177,216,186,117, 43, +142, 30, 61,138, 94,189,122, 97,208,160, 65, 72, 78, 78,182, 91,189,122,245, 8, 66,200,110, 0,139, 7, 15, 30,140,156,156, 28, + 60,121,242, 36, 84,207,103, 30, 25, 25, 25,200,200,200,128, 76, 38, 43,250,140, 17, 0, 7,214,175, 95, 63,100,250,244,233,168, + 86,173,218,226,252, 69, 65,159,173, 18,229, 56,238,167,184,184, 56, 11,129, 64, 96,197, 48, 12, 98, 98, 98,240,244,233, 83, 76, +154, 52, 41, 45, 45, 45,109, 60,165, 52,138, 16,178, 96,204,152, 49, 43,102,206,156, 89, 88,151,102,206,156,121,158, 16,210,245, +255, 91,205,169, 89,211,162,142,152, 47,153, 38, 18, 9,173,210,211,211, 11,219, 14,141, 70, 3,181, 90,253,137,146, 37, 18, 9, +173,154, 53,114,189,160, 84,100,207,127, 25,150, 94,234, 6,233,181,171,155,215, 55, 50, 54,155,238,221,117,192,176,239,186,246, +230, 51, 58, 29,174, 92, 57,135, 63,254,216, 6,175, 54, 53, 80,173,122, 61, 76,153, 58,205, 76,173, 97,124,174, 93,187, 60,183, + 85,179,170,151,179,179, 50,230,149,101,243,127, 28, 23,242,201,213,133, 18, 93,135, 37, 51,200,254,172,147, 19,210,243, 31, 28, +107, 11, 11,139, 45, 44,203,122, 1, 63, 66, 40,183,199,171,167,143,144,150, 46,132, 90,201,130,163,121,100, 75, 47,226,162,214, +224,206,149,179,216,176,126, 45, 82, 83, 83,209,166, 93,123,228, 8, 42,193,165,146, 11, 84, 74, 69,254, 67, 3,104, 53, 58,216, +216,185,226,249,243, 64, 93, 86,110,110,169, 13,146, 72,170,245,112,177,171, 1,181,182, 37,164, 98, 49, 50,179, 53, 72,207, 39, + 89,135,254, 28, 8,181, 66, 9, 70,163, 5,163,209,193,198,165, 31,106,217,117, 0,199,158,171, 83,161,236,227, 88,104, 35,238, + 64, 27,113, 7,178,150, 83,241,151,239,144, 98, 13,160,126,251,238, 38, 37, 37, 37, 57, 58, 58,158,123,241,226, 69,159,129, 3, + 7,226,214,173, 91,227, 0, 76,200,119,223,140, 27, 56,112, 32, 94,188,120,129,151, 47, 95,158, 75, 74, 74,250, 38, 27,175,138, +197, 98,165, 90,157,215,199, 26, 25, 25, 73,203,185,214,169,105,223,190,188,204,231,207,179,214,223,191,191,120,215,238,221,162, + 78, 29, 59, 18, 29,195,128, 99, 89, 84,119,119, 39,223,125,247,157,241,129,227,199,173,248, 58,221,195, 57,147, 39,223,248,125, +248,240,236, 71, 57, 57,250, 78, 52,175,156,239, 50, 4,128,202,101,124,167, 55,212,106,245,166,159,126, 28,213,201,255,206,189, + 74, 46,149,156, 76,175, 92,243, 15,148,200,196,188,106, 85,220,248,233,153,105,130,101,139,231,203,212,106,181,190,164,213,195, +218,218, 26, 31, 63,126,196,187,119,239,160, 86,171,161,211,233,192, 41,114,161, 73,207,128, 38, 51, 13, 68,165,132,132,101,161, + 74, 73, 68,229,106, 85,129,191, 87, 36,150,235,138, 42,137,104, 21,188, 75, 77, 77, 33, 50,150,131, 39, 20,234,189, 57, 58, 33, +164,113,179,102,205,142,159, 60,121, 82, 52,122,244,232,230,132,144, 45,249, 29, 68,199, 69,139, 22, 61,222,178,101,139,100,252, +248,241, 53,215,172, 89, 51, 2,192,142,210,236,168, 84,170,227, 23, 46, 92, 24,234,234,234,106, 27, 28, 28, 12,149, 74, 5,142, +227,208,173, 91, 55, 0, 40,172, 51,111,222,188, 81,170, 84,170,164,144,144,144,172,168,168, 40, 13,244, 88, 37,184,120, 99,252, +131,153, 3,156,251,218,217, 59, 61,148,202, 42, 87,161, 57,207,251,204, 28,224,188,122,221,137, 88,213,165,247,239,179, 23, 77, +170,230,151,155, 29, 52,201,220, 57,103,235,165,115,225,250,172, 10,166, 5,203,217,173,172,172, 32, 16, 8, 32, 20, 10, 33, 18, +137, 64, 8,193,212,169, 83,177,115,231,206, 50, 93,135,197, 73,150,137,137,201,203,165, 75,151, 58,143, 31, 63, 94, 36,149, 74, +145,158,158,142, 67,135, 14, 97,204,152, 49,248,227,143, 63, 74,156,255, 82,158, 75,169, 4,181,116,250,240,225,195,161,209,104, + 48,120,240, 96,236,218,181,107, 58, 0,255,138,214,119, 74,233, 67, 66,136,123, 96, 96,160, 41,128, 94,131, 6, 13,218,215,175, + 95, 63,248,251,251,227,220,185,115,237, 1,132, 1, 80, 2,240,205,223,196,217,183,172,133, 32,249, 33, 28,182,217,216,216,244, +170, 83,167, 78, 96,191,126,253,234, 30, 62,124,216, 60, 41, 41,169, 96,241, 3, 34, 34, 34,176,103,207,158,132,221,187,119,103, +177, 44,107,197,227,241, 46,100,100,100,204, 43,195, 93,184,123,253,250,245,163,242,221,129, 56,121,242, 36, 93,187,118, 45, 89, +180,104, 17,210,211,211,225,229,229,133,237,219,183, 79,203,201,201,105,176,118,237,218, 31, 7, 12, 24,128,101,203,150, 33, 55, + 55,119,125,121,131,149, 50,200, 23, 1,208,106,253,250,245,174,211,167, 79,199,201,147, 39,209,184,113, 99,217,135, 15, 31,126, + 7, 48,182,164,242,163,148,226,195,135, 15, 80, 40, 20,184,119,239, 30, 22, 47, 94,156, 94,132,100, 77,155, 48, 97,194,138,105, +211,166, 97,213,170, 85, 52, 56, 56, 56,169, 95,191,126,118, 59,119,238,228, 87,175, 94,125, 26,242, 54, 93,255,127, 65, 45,119, + 43,191,102, 77, 61,231, 58, 56, 85,199,161,195, 71,144,150,150, 86,152, 39, 5,249, 66, 41, 69,118,118, 54, 62,126,252, 8, 51, + 83, 19,172, 94,179,162,251,196,113,163, 42, 33, 47, 12,198,231, 13,157,155,229,154,254,131,199,206, 26, 60,116, 20,130, 3,159, +225,192,190, 29, 8, 9,126, 81,104,143,209,105, 17, 22,250, 20, 97,161, 79, 97,103,239,138,239, 58,181, 39, 67,134, 12,233, 54, +124,232, 32, 27, 0,255, 88,232,136,255, 96, 53,235,179, 56, 90, 69,231,108, 9,202,147,235,242, 73,214,203, 99,199,142, 89,181, +105,211,134,207, 48, 12, 46, 95,185,130, 73, 19,126,192,136,225, 62,208,194, 2,140, 70, 4, 78, 36,213, 43, 49, 74,165, 2, 20, + 20,185,185,185, 8, 8, 8, 0,229, 24, 28,216,185, 22,148,114,133, 68, 11,160,208,104,181,112,114,169,137,109,187, 86, 50, 16, + 10, 31,151,102, 47, 43,149,207,234, 24,138,184,164,104, 68, 39,132,192,204,196, 5, 2,161, 11, 82, 51, 20, 16,240,236,161, 83, +189, 1,155, 47,171, 42,114, 99,161,212,126, 93,249,177,153,159,171,167,180, 2,141,174, 82,169, 60,120,240,224,193,238,235,214, +173, 19,123,123,123,215,112,116,116,108, 5, 0,253,251,247,175, 97,106,106,138,131, 7, 15,106,148, 74,229,193,111,168,248,116, +104,214,172, 25,210,211,211, 17, 17, 17, 17, 88,230,189,105, 52, 86,114, 91, 91,126,210,173, 91,186,228,244,244, 74, 29, 58,116, + 32, 58,134, 1,143, 16,164,101,102, 34, 42, 50, 18,230,230,230,228,229,155, 55,242,205, 83,166,156,174, 81,183,174,160, 96, 69, +162, 62, 56,119,238,156, 17,242,230,101,149,249, 93, 5, 43,119, 46, 33,100,212,228,201,147, 79, 31, 60,120,200, 44, 49, 41, 49, + 76, 34, 22, 51,114,185,212,113,248,176,137,130,140,140,140,161,148,210, 28,125,237,165,167,167,227,195,135, 15,144,201,100, 16, + 9,133,224,148, 10,176,185, 57, 80,165, 37,131,175,213, 64,204,178,176, 52,146,160,146,157, 29, 92,108,172,245,178,249,238,230, +213,194,137,239, 69,221,133,171,155,121, 64,108, 44,135,216, 68,142,137,231,111,231,143, 70, 69,192,162,229,250,144, 44,107, 39, + 39,167,191, 14, 31, 62, 44, 74, 78, 78,198,139, 23, 47, 2, 41,165,153,132, 16, 19, 0, 92,104,104,232,245,144,144,144, 30,249, +171,238,202, 91, 45,182,246,212,169, 83,157,219,180,105,195, 84,169, 82,197, 56, 49, 49,209, 37, 53, 53,149, 36, 36,124, 58,215, +249,226,197,139, 82,165, 82,153,203,113,220,105,228,197,129, 42, 55,126,209,204, 1,206,210,128,231,152,234,217,165,114, 61, 83, +235,250, 72, 99,158,215,123, 24,152, 48,117,230, 0,231, 77,235, 78,196,170,100, 68,189,143,176, 49,149, 4, 82,213,126, 61,203, +155, 90, 91, 91, 35, 52, 52, 20, 1, 1, 1,136,138,138,194,135, 15, 31, 62, 33, 84,227,198,141,195,129, 3, 7,244, 82,180,140, +141,141, 87, 45, 89,178,196,121,250,244,233,162, 34,164, 8,147, 39, 79, 70,102,102, 38,118,237,218,133,201,147, 39, 87,184,227, + 47, 86, 86, 85, 59,119,238,236,237,224,224,128,212,212, 84,216,219,219,163, 77,155, 54, 61, 9, 33, 85, 40,165, 17, 95, 88,245, + 39,118,233,210,101,197,210,165, 75,161,211,233, 48,102,204, 24,188,125,251,246,248,219,183,111, 55,184,184,184, 76,253,249,231, +159,237,236,236,236, 48,112,224, 64, 99, 0,125, 75, 51, 98,105,105,233,187, 99,199,142,161,222,222,222, 60,173, 86,219,238,230, +205,155,136,140,140,132, 70,163, 1,195, 48,120,255,254, 61, 38, 79,158,156,144,154,154,234, 73, 41,125,175, 71,186, 70, 47, 88, +176, 96,212,212,169, 83,241,235,175,191, 98,201,146, 37,123,205,204,204,234, 54,108,216,176,209,146, 37, 75, 48,103,206, 28,184, +186,186,194,202,202,170,214,162, 69,139, 60,102,206,156,137, 77,155, 54, 97,241,226,197,123, 1,236,249,146,140,224, 56,142,248, +249,249, 53, 88,191,126,189, 67, 1,201,226,241,120, 56,118,236, 24,158, 63,127,222,179,148,223,108,183,183,183, 31,231,224,224, + 32,190,118,237,154,220,213,213, 21, 12,195,232,242, 73,214,102, 23, 23,151, 73,239,223,191,135,183,183, 55,194,195,195, 15, 82, + 74, 71,120,122,122,230,206,156, 57,211, 72, 38,147,153,253,127,118,224,124, 30, 25,185,106,217, 28, 60,121,254, 6,167, 78,137, +240,228,201, 19,216,217,217, 65, 34,145,128, 82, 10,181, 90,141,228,228,100,232,180,106,212,171, 83, 21,251,119,251, 33, 41, 41, + 25,224,145, 82,167,220, 16, 30, 25, 54,234,135, 62,184,123,239, 10,126,255,125, 7,114,114,114, 75, 25,124, 75, 81,189,134, 7, +156, 28,109, 17, 19, 27, 3,194,131,245, 63,121,175,255,225,174,195,130,231, 93,191,240, 14, 69, 97,110,110,190,225,232,209,163, + 86, 94, 94, 94,252,220,220, 92,112, 28,135,182,109,218, 96,234,244,233, 56,119,248, 48,220,155, 15, 6,209,200,193, 24,233,183, +234, 65,165, 84,160,118,163, 86, 24, 48,112, 16,162,163,162,208,165, 71, 63,168, 84,138,194, 17, 70,129,162,165,209,104, 97,109, + 91, 9, 87,175, 94,229, 99,204,152, 82,231,152,176, 90,113, 80,216,123, 85,235, 12,229,115, 4, 60, 57, 0,173, 90,139,122,245, + 22, 65,203, 89,193,214,121, 28,116,186, 51,200, 74,190,153,231,198,176,242, 66,108,116, 52,120,124,209,203, 47,205, 68, 46, 55, +249,171, 26,221,140,140,140, 76, 71, 71,199, 63, 3, 2, 2,134,245,237,219, 23, 87,175, 94,253, 17, 0,250,246,237,139,128,128, + 0,124,248,240,225,207,140,140,140,204,111, 81,224,142,142,142,189,188,188,188, 6, 55,109,218, 20,231,207,159, 7,165,244,174, + 94, 15,182, 80, 72,121, 60, 30, 56,142, 3, 1,144,154,145,129,183,111,223, 34, 53, 37, 5, 58,157, 14,185, 57, 57,156, 71,141, + 26, 57,148,227, 76, 42,146,158,162, 43, 12, 81,194,170,195,130,239,190,128,108, 69,201,229,242,232,236,156, 28, 27, 11,115,139, +108,177, 88,204,166,103,100,100,190,122, 25,172,209,179,115, 40, 64,104, 72, 72, 72,221,248,248,120, 68, 71, 71,131,201,205, 6, + 95,173, 1, 79,173, 64,199, 86, 45, 33, 3,133, 20, 28,132,156, 14, 66,190, 16,217,121,171,243,202,117,119, 20, 16,253,162,202, + 22, 33, 36,207, 93,104,108, 12,177,220,228, 19,133, 75,159,250, 36,145, 72, 14,159, 56,113,194,193,201,201, 9,203,150, 45,131, +179,179,115,173,122,245,234, 41,218,182,109, 43,179,179,179, 67,237,218,181,209,170, 85, 43, 92,186,116, 9, 0,222,151,147,127, + 12, 33,228,187,187,119,239,206,186,127,255,254, 0, 66, 8,241,241,241, 65,215,174, 93, 33,149, 74,161, 80, 40,144,158,158,142, +157, 59,119, 18, 74,105,163,252,180,186, 74,165,210, 35,132,144, 88,165, 82, 57,176,184,205, 3,235,235, 59, 38,165,113, 99,236, +236,157,250,120,118,169, 92,175, 67,151, 78,168,234,222, 1, 29,186, 68, 3,128,159,165, 32,114,240,234,133,117, 79, 91, 87,178, +220,115,245,242,181,197,109, 60, 59, 44,240, 25,111,177,194,111, 71,122,150, 30, 13, 25, 56,142,251, 36,118, 80,241,243, 35, 70, +140,192,177, 99,199,202,205, 71, 30,143, 55,104,252,248,241,162,162,223, 21,184,140,123,244,232,129,190,125,251,126, 66,180,172, +173,173, 97,111,111,143,200,200, 72, 0, 72,213,179, 94, 77, 29, 61,122, 52, 81, 42,149, 24, 59,118, 44,118,237,218,133,193,131, + 7, 19,127,127,255,169, 0,166, 87,180,190,243,120,188,213, 63,255,252,243,172,201,147, 39, 35, 45, 45, 13, 23, 47, 94, 68,183, +110,221,112,236,216, 49,155,139, 23, 47,174,242,242,242, 2,159,207,199,249,243,231,193, 48, 76,153,177,190, 68, 34, 81, 47,111, +111,111, 94, 76, 76, 12, 68, 34, 17,154, 52,105,130,216,216, 88, 40, 20, 10,196,197,197, 97,218,180,105, 31, 83, 83, 83,219,235, +251, 28,137, 68,162,233, 83,167, 78,197,209,163, 71,225,227,227,179, 15,192,216,204,204,204, 1,247,239,223, 63,250,253,247,223, + 35, 46, 46, 14,167, 79,159,198,226,197,139,201,136, 17, 35,176,117,235, 86, 76,155, 54,109, 47,128,177,101,172,144,204, 78, 74, + 74, 50,115,115,115, 67, 98, 98, 34,114,114,114,112,250,244,105,219, 75,151, 46, 85,113,114,114, 50,253,240,225, 3,187,124,249, +114,241,244,233,211,177, 97,195, 6,188,120,241, 2, 7, 14, 28, 64,135, 14, 29,152,240,240,240, 18, 85,178,252,144, 13,167, 45, + 45, 45,175, 25, 27, 27, 35, 59, 59,187, 96,101,233,108, 31, 31,159,201,190,190,121, 34,123,124,124, 60, 70,142, 28, 57,156, 16, +194, 45, 93,186,212, 72, 36, 18, 65,165, 82,229,254,127,118,220, 28,203, 1,224, 80,165,146, 28, 87,206,237,198,179,192,112, 60, + 11, 12,129, 88,146, 55, 9, 94,169, 84,160, 81,189,234,104,222,164, 25,226, 19,226,112,240,192,110, 88, 90, 59,149,217,142, 80, + 74, 33, 18,176,240,168, 97,143,195, 7,118,224,252,197, 27, 56,112,240, 72,225,156, 55,129, 64,136,134,141,154,163, 73,147, 54, + 8,255,240, 30,187,119,255, 14, 27,219, 74, 6,231,224, 23,162,208,117, 88,244,189, 24,243,239,208,166, 77, 27,126, 78, 78, 14, + 84, 42, 21, 62,126,252,136,200,200, 72,152, 91,152, 35, 60, 62, 2,237,141,180,248,200,101, 33, 52,240, 37, 75,248,194, 23,229, + 74,131,158, 13, 1,207,134,152, 52,122,112,233,149, 0, 20,198,166,214,121,174, 27,134,121,135, 77,155, 74, 29, 57, 51,172,238, +250,149,107, 55,155,141, 30,209, 75,120,245,230, 46,232, 52, 28,148, 58, 51,228,170, 52,200,213, 10,193, 51,235, 6,164,248,131, + 47,144,160, 69,131,234, 56,125,234,146,150, 50,186, 27,122,103,144, 93, 93, 48,137, 33, 69,136,214,167, 30, 61,169,137,165,222, +174,195,194,142,151,101,143, 29, 58,116,168,119,203,150, 45,141,188,188,188,220,242, 59, 78,237,161, 67,135, 20, 44,203, 30,171, +104, 33, 22,143, 6,239,224,224,208, 72, 36, 18, 13,238,213,171, 87,163, 81,163, 70,225,213,171, 87, 56,120,240, 96, 88,245,234, +213,203,140, 33,198, 23,139, 83,115,146,146,204,229, 85,170, 8, 44, 76, 76,226, 47, 93,188,232,218,169,115,103, 18, 29, 29,141, +212,212, 84,168, 84, 42,188, 8, 12,164, 66, 62, 63,150,152,154,242,222, 60,127,206,227,139,197,169, 21, 72,106,100, 57,171, 14, +125,191, 84,221,170,228, 96,225,182,216,231,167,170, 42,181,170,110, 86, 86, 22, 35, 16, 10,133,206,246,230, 81, 21,116, 67,158, +191,126,253,122,239, 78,157, 58, 73,194,130, 94,128,201,204,132, 38, 51, 29, 34,142,133,101,163, 6,224,107,213,128, 70, 7, 39, + 15, 10, 85,134, 17,252, 31,189,209,169,213,234,114,131, 26, 22, 16, 45, 94, 49, 98, 32,150,203, 33, 49, 49,133, 68, 46, 47, 78, + 24, 72, 57,229,109,212,171, 87,175,142, 45, 90,180, 0,165, 20, 59,119,238,132, 86,171, 21,107,181, 90,104, 52, 26,104,181, 90, +100,101,101,225,192,129, 3,216,182,109,219,125, 0,123,245, 32,171,140, 80, 40,156,204, 48,140,173, 68, 34,209,218,216,216,136, +142, 31, 63, 94, 24,110,162, 97,195,134, 48, 54, 54, 86, 19, 66,180, 0, 96,111,111,175,219,183,111,159,224,251,239,191, 23,149, +100,175,102,189, 90,115,170, 50, 22,158, 82, 89,229, 42,166,214,245, 81,213,189, 3, 0,160,115,143,209,168, 90,221, 5, 89, 41, + 65, 85, 84,202,200, 62, 34, 65,186,197,203, 77,113,175,100,222,117, 71,229, 38,221,126,139,146,151,247,151,216, 81,240,120,188, + 82,221,177,250,144, 44, 66, 8,207,204,204,204,166, 96,158, 79,126, 7,140,132,132, 4,132,134,134,162,102,205,154, 72, 75, 75, +131,147,147, 19, 52, 26, 13,154, 54,109, 10,165, 82,137,245,235,215,227,222,189,123,247,145,191, 50,178,156,255,144,185,187,187, +143,108,212,168, 17, 46, 94,188,136, 39, 79,158,196, 93,185,114,197,169, 77,155, 54,168, 82,165,202, 40, 66,200,124, 74, 75,143, +193, 87,146,171,175, 93,187,118, 83, 38, 79,158,140,144,144, 16,252,244,211, 79,169, 49, 49, 49,167,143, 31, 63, 62,118,241,226, +197,188, 46, 93,186, 32, 33, 33, 1,171, 87,175,102,239,221,187,183, 6,192,178,114,242,241,117, 76, 76,140,179, 74,165, 66, 90, + 90, 26, 24,134,129, 66,161,192,165, 75,151,112,224,192,129,196,124,146,245, 78,223,244, 53,104,208,160, 54,143,199,195,209,163, + 71, 1, 96, 33,165,148, 35,132,156,238,211,167, 79,220,242,229,203,157,230,205,155,135, 31,127,252, 17, 90,173, 22,191,254,250, + 43,230,205,155,119, 33,159,100,149,213,136,174,179,183,183, 31,247,211, 79, 63,213,154, 57,115, 38, 2, 2, 2,108,159, 62,125, +218,228,197,139, 23,168, 84,169, 18, 82, 83, 83, 5, 86, 86, 86,216,176, 97, 3,102,204,152,113, 18, 64,202,131, 7, 15, 6,125, +248,240,193,151, 82,186,186,156,252,220,238,228,228, 52,142, 82, 74, 21, 10, 69,164,143,143,207,234,149, 43, 87, 98,198,140, 25, +120,249,242, 37, 50, 51, 51, 97, 98, 98, 66,126,254,249,231,145, 11, 23, 46,196,152, 49, 99,104,110,110,238,182,255,127,183, 20, + 11, 69,122, 8, 88,181, 5, 26,214,171,137,134,117, 43,227,202,205,103, 0,128,142,253,218, 64,145,155,141,125,251,118,226,221, +187,183, 16, 8,133, 48,183,180,215, 71, 9,132, 38,235, 53, 50,180, 9,232,228,213, 4,221,186,180,199,222,253,199,192,232,180, + 24, 59,122, 40,210, 51, 50,176,127,255,110,132,127,120, 15,129, 80, 8, 43,235,127, 62, 16,106, 89, 92,228, 63,158,104,233,225, +126, 2,199,113,136,139,139,195,211,167, 79, 17, 17, 17, 1, 35, 35, 35, 40, 25,150,251,253,250, 61,142, 16, 81, 44, 71,233,125, +202, 20, 70, 41,254,220, 6,203,198, 21,137, 88,107,102, 97, 97, 33, 86,171,149, 96, 24, 93,145, 94,133, 0, 4, 16, 9, 0, 7, +199,170,136,137,142,161, 42,149,234,118,153, 35, 40,181,106,195,217,211, 39, 38,183,106,221,198,186, 91,199,165, 56,125,102, 17, +210,179,178,160,210, 10,145,171,210, 66,161, 2,204, 45,107,160,105,189,250,136,143, 79, 69,208, 19,255, 28,129, 90,161,207, 68, +209,183,155, 23,140,118, 31, 61,105, 14,100,174,173,161, 14, 61, 13, 46, 39,177, 80,209,146,202, 45, 96,233,226,129,140, 92, 53, + 78,220,120, 6, 0,122,111,245,146,152,152,168,112,116,116, 60, 52,121,242,228, 95,159, 61,123,234, 12, 0,207,158, 61,139, 77, + 72, 72,152,155,152,152,168,168, 72, 1, 22,137, 6, 79,140,140,140,158, 85,175, 94, 61,222,219,219,219,172, 79,159, 62,176,182, +182,198,139, 23, 47,224,235,235,251, 90,171,213,206,185,125,251,118,153,174, 30,141, 70, 19,247,236,204, 25,211,246, 63,252, 96, + 62,167,103,207,213,147, 39, 79,222,176,108,217, 50,161,187,187, 59,209,105,181, 8, 14, 14,166,135, 15, 29,210,109,155, 55,111, +189,216,216, 88,240,248,236, 89, 33,163, 86,199,253,171, 43,177,179,179,179,103,247,174,158, 30,107,214,109,130, 74,153,131, 71, + 1, 23,144,158,158,140, 29, 59, 79,121, 56, 59, 59,123,198,198,198,250,235, 75,128,247,236,217, 51,171,121,163, 70,141,170, 85, +170,132,224,168, 8,136, 57, 22, 34,134, 1, 95,171, 6,143, 81,161, 82, 93, 10,194, 51, 65,194,199, 44,172, 60,250,103,136, 62, +196,184, 86,247, 94, 88, 22,155, 9, 66, 8,214,182,172, 11,177,137, 28, 34, 99, 57, 38,254,117,179,144, 24,156, 95, 54, 15, 98, +185, 28,110,205,219,232,209,232, 82,133,137,137,201,211,224,224,224,166,117,235,214,197,172, 89,179, 16, 25, 25, 9,142,227,144, +152,152,168, 74, 72, 72,136, 75, 78, 78,142, 68, 94,252,159, 93, 84,207,145, 0,195, 48,182,207,158, 61, 3, 0, 17, 0,220,184, +113, 3,142,142,142, 48, 51, 51, 67, 86, 86, 22,230,204,153, 35,249,229,151, 95, 0, 0, 79,159, 62, 21, 22, 37, 40,197, 17,252, + 44,116, 77, 70, 54, 77,167, 57,207,251,164, 49,207,235,117,232, 18,131,206, 61, 70,225,218,249,189,184,121,229, 58, 44, 5,145, + 17, 48,206,190,148, 18,145,146, 21,155,235,190,221,163,241, 88,126, 66,238,149,237, 83,191,183,224, 59, 56,112, 39,124,182,101, +102,148,149, 86,119,119,119,216,217,217, 21,206,209, 18, 8, 4, 24, 51,102, 12, 40,165,122,145,172,252,124,228, 76, 77, 77,147, + 85, 42,149,157, 84, 42,197,199,143, 31,241,254,253,123,132,135,135, 23,134, 14,224, 56, 78, 55,123,246,108,225,148, 41, 83,240, +251,239,191,227,246,237,219,247, 1, 44,165,148,234, 59, 88, 27, 58,112,224, 64, 19,141, 70,131, 35, 71,142, 48, 0,122,156, 56, +113,226,105,211,166, 77, 5, 93,187,118, 53,217,186,117,235, 80, 0,187, 42, 80,221,141, 77, 77, 77, 69, 90,173, 22, 91,183,110, + 69, 76, 76,140, 39,165, 52,148, 16,178,125,224,192,129,219,234,214,173, 91, 61, 36, 36,228,109, 78, 78,206, 68, 74,105,144, 30, +109,209,232, 38, 77,154,156,224, 56,206,181, 83,167, 78,198,235,214,173, 51,125,243,230, 13,156,157,157,193,113, 92,112, 69,183, +176,122,251,246,109,104, 66, 66,130, 71,251,246,237,113,233,210, 37, 63, 66,200, 42, 0,191, 78,152, 48,193, 41, 42, 42, 10,141, + 26, 53,130,165,165, 37,222,188,121,147,157,144,144,176, 13,192,252,242, 98,125, 81, 74, 63, 0,152, 75, 8,169,191,125,251,246, +193,150,150,150, 45, 94,188,120,129,187,119,239, 98,205,154, 53,248,229,151, 95,208,182,109, 91,204,154, 53, 43, 5,192,224,124, +151,182, 94,113,243, 10,148, 45, 0,104,210,164, 73,188,175,175, 47,198,142, 29, 75,255,248,227,143,141,135, 14, 29,154, 62,116, +232,208,194, 62,112,228,200,145,244,224,193,131, 35,203, 90, 8,240, 15, 65,167,213,106, 96,106, 89, 21, 57, 25,209, 72,142, 9, +128,145,137, 61,186,116,104, 0,133, 82,131,115,103, 79, 34, 40, 56, 16, 60, 30, 15,118,246,149, 96,110, 97,141,176,176,183, 0, +240,170,108,155, 90,152, 88, 84, 70, 78,102, 12, 52, 73,207, 32,147,219, 98,212, 15,125,160, 80,106,113,234,244, 73,132,132, 4, +129,207,231,195,222,161, 18,204,204,243,108, 18, 90,166, 77, 3, 80,114, 60,173,114,137, 22,159,207,191,117,249,242,229,254,205, +155, 55, 23,188,123,247, 14,239,222,229, 13,110,210,211,211, 25, 2,246,207,196,160, 51, 67,202, 32, 1,157, 10, 86,103, 20,221, +187, 80,110, 98, 18,247,230,117,168, 93,122, 90, 34, 2,159,223,195,187,176, 96, 68,132,135, 66,171, 85,129,207,227,129,199,231, +161,114,213, 58,184,119, 63, 64,163, 98,152,128,210,108, 2, 64, 90,218,251,108,185, 93,141, 65, 43,150,205, 63, 63, 99,206, 18, +217,128,254,191, 35,232,205, 43,228, 48,246,160, 20,176,183, 50, 70,195,106, 63, 35, 46, 62, 25, 71,247,110, 85,112, 90,237,176, +162, 49,180, 74,178, 9, 0,118, 41,168,189,109,231,222, 49,187, 14, 28, 94, 50,103,202,120,187,239,251, 14,131, 56,237, 21,116, +241,207, 80,181,105, 55, 16,137, 57, 46, 94,189, 9,255,167,175, 18, 57,150, 46,177, 75,197, 31,229,217, 44,230, 66,124,240,241, + 99,130,115,145, 40,240,206, 18,137,244, 65, 57,164,170, 83,177,184, 66,159, 68,156,231,243,121,141, 87,172, 88,161,179,179,179, +211,134,132,132,224,247,223,127,231,158, 61,123,118,149,199,227,109,142,143,143, 87,149,103,211, 70,167, 11, 60,236,227, 83,187, + 89,223,190,116,200,148, 41, 10, 72, 36, 83, 87,175, 93,235,147,156,158,238, 72, 57, 14, 54,150,150,177,171,231,205,243,237, 63, +112, 96,250,203,123,247,100, 1,103,206,200,196, 12,243,172,188,116,126, 35,191,119,169, 54, 99, 99, 99,253,221,221, 92,176,111, +215, 58,104,181,106, 36,196,229, 9, 89, 41,169,153, 40,139,100, 21,183,153,191,234,170,239,194, 95,126,121,184,112,198,116,251, +118, 29, 59, 33, 58,240, 5,180,105,201, 32, 58, 6, 66, 34, 64,110,146, 17,146, 18,115, 48,247,224,241,164, 28,133,162,111,241, + 78,162,180,116, 22, 40, 86, 18, 83, 19,136,140,229, 16,203, 77, 62, 81,177,164,166,166, 16, 27,203, 33, 16,139, 75, 82,105, 62, +179,153,147,147,211,175,127,255,254, 65,143, 31, 63,182, 24, 59,118, 44, 90,181,106,245, 92,169, 84,122, 81, 74,179,191, 52, 63, + 5, 2, 65, 82,227,198,141,109,133, 66, 33, 51,102,204, 24, 65, 74, 74, 74, 97,100,245,156,156, 28, 92,186,116, 9, 53,107,230, +173,234,127,249,242, 37,234,212,169, 83,170,205,177, 63, 7,199, 1, 88, 54,115,128,243,234,135,129, 9, 83, 1,248, 85,173, 94, + 9, 55,175, 92,199,221,155, 1, 62, 45,234,114,155,186, 15,107,186,220,200,107,224, 28,143,198, 99,249,114, 83, 7,236, 63,117, +146, 31,250,108,247, 74,133, 34,216, 13,192,236,210,210, 73, 8, 1,165,244,179, 80, 14,124, 62, 31,135, 14, 29,170,232,189, 31, +223,181,107,215,132,159,126,250, 73,148,144,144,128,215,175, 95, 35, 55, 55, 23, 82,169, 20, 87,174, 92, 97, 0,108, 61,116,232, +208,149, 67,135, 14,117, 69, 94, 92,156, 27, 21,169,159,198,198,198,147,187,116,233,130,215,175, 95,227,201,147, 39, 39, 41,165, + 65,132,144,147,239,222,189, 27,212,182,109, 91,236,221,187,119,114,105, 68,171, 52,155, 28,199, 21,141,153,148,150, 95,119, 3, + 1,180,168,104,185,231, 79,224,109, 13, 0, 86, 86, 86, 49,118,118,118,166,129,129,129,112,113,113,129, 86,171,109, 94,209,186, +148,153,153,185,110,243,230,205,127,140, 30, 61, 26,203,151, 47, 31,118,252,248,241, 97,221,187,119,135,183,183, 55,246,236,217, +131,160,160, 32, 63,125,182, 21, 43,233,222,243,137, 99, 80,237,218,181, 39, 85,170, 84, 9,107,214,172, 65,112,112,176,239,178, +101,203,230, 5, 5, 5,161,102,205,154,146, 87,175, 94, 49, 95,210,134, 0,128,169,169,169,169, 78,167,195,153, 51,103, 30, 81, + 74,103, 16, 66,108, 55,108,216, 48, 88, 46,151, 35, 45, 45, 77, 25, 18, 18, 50,148, 82,122,246,255,187,173,163,132, 44, 24,251, +227,212,237, 63,142, 29, 42,109,210,184, 33, 20, 89,177, 80,230, 36, 66,145,253, 17,155,119, 93, 5, 33, 60,216,216, 56,192,214, +222, 25, 81, 81,209,184,127,225,162, 38, 87,161,220, 32,214,113,126,101,219,156,146,103,179, 81,158, 77, 69,110, 18,148, 57, 73, +133, 54,109,109, 29,243,109, 70,225, 94,192, 69,149, 50, 55,119,157,134,146,223,254,201,123,255, 79, 70,133,247, 58, 44,138,244, +244,244,105,227,199,143,247,154, 59,119,174, 21,195, 48,124, 75, 75, 75, 68, 69, 69, 49,127,254,249,103, 90, 78, 78,206,180, 47, + 73,144, 64, 40, 12,114,175, 81,211,235,251,239,191,103,122,245,234, 41, 26, 62,186,171,192,198,214, 22,153, 25,169, 8,123,253, + 2,111, 94, 61,131,123,205, 6, 88,188,108, 61, 96,110, 94,238, 70,146, 57,137, 97,183,228,118, 53,122, 44, 93, 56,251, 88,107, +207,239, 76,107,214,105, 32,106,232,102, 6,173,142, 65,108,108, 44,206,158, 9,212,134, 60,189,155,197, 49,154, 65,185,201,250, +109,193,115, 59,111, 84,180,163,158, 29, 57,180,106,245,230, 89, 91,119,236,155, 51,119,234, 88,227,182,109, 58, 35,248,250, 94, +156, 60,127, 44, 87,165,214,172, 22,241,177, 54, 56,133, 42, 42,154, 7, 42,149, 74, 91,124, 65,148, 74,165,210,126,109, 97,239, +217,179, 7,137,137,137,154,200,200,200,203, 12,195, 28, 47,109,179,231,146,176,137, 82, 77, 95, 66,174, 47,108,211,166,235,194, + 43, 87,164, 35,127,254, 89, 51,108,248,240,217, 80,171,181, 16,139,169,192,216,152, 7,137, 68,248,242,222, 61,217,198, 9, 19, + 44,137, 70,115,109,111, 25, 97, 3, 74,192, 55, 95,117, 88, 68,209,194,200,177, 51,160, 44,162,104, 61,120, 18,134,138, 40, 90, +249, 15, 70, 52, 33,164,197,212, 5, 11, 79, 13,234,210,209,163,174,107,101,137, 77,149,202,144,219,219, 35, 53, 57, 25,247,158, +188,209, 45, 59,118, 42, 36,159,100,233, 21, 87,134,227,184,188, 73,238, 0, 58, 78,155, 11,194,231, 3,249, 97, 28, 10, 86, 14, + 85,105,218, 10, 68, 32, 0, 75, 57,168,213,106,170, 71, 58, 99, 9, 33,253,134, 13, 27,118,227,252,249,243,188, 46, 93,186, 52, + 60,125,250, 52,247, 53,117, 71,167,211, 57,231, 19,174, 44, 35, 35, 35,193,168, 81,163,160,211,233,160, 80, 40,144,153,153,137, +208,208, 80,245,128, 1, 3, 36,249, 4, 66, 55,104,208,160,114,219,143,117, 39, 98, 85, 51, 7, 56,111,178, 20, 68, 14,206, 74, + 9,170, 98, 41,136,140,104, 81,151,219,180,238, 68,172,106,233, 12,243, 21, 41,145,254, 97, 9,185, 87,182,239, 63,117,146, 63, +162, 79, 63,214, 89,254,214, 71,106, 75,255,236,208,179,220, 70,237,179,224,164,250,144,172,226,200,206,206,158,183,104,209, 34, +239,244,244,116,231,174, 93,187,138, 60, 60, 60,240,240,225, 67,156, 63,127,158,121,240,224, 65, 76,110,110,238,124, 74,169, 10, +192,213, 47,201,211, 26, 53,106, 84, 17, 8, 4, 5,174,180, 45,249, 95,111, 57,125,250,244,160,177, 99,199,162,114,229,202,181, + 9, 33, 18, 90,129,231,136, 82, 90,232,101,248,198, 29, 69,248,198,141, 27,157,236,237,237,201,165, 75,151, 24, 62,159, 95, 97, +229,134, 82,186,135, 16,210, 92,167,211,253, 56,110,220, 56,120,122,122,130, 97, 24, 28, 60,120, 16,187,119,239,246,171,200,222, +173,165, 33, 44, 44,236, 89, 76, 76, 76,187,217,179,103, 99,205,154, 53,243,102,207,158,141,152,152, 24,132,133,133,189,248, 26, +187, 89, 89, 89,202,232,232,104,163,150, 45, 91, 54,113,113,113, 9, 25, 57,114,100,157,177, 99,199,194,207,207,143,222,190,125, +187, 63,165,244,210,191,162, 3,127,253, 54,245, 64,189,106,118, 87,150,173, 88,247,139, 91,181, 42, 63,141, 25, 53,144, 95,195, +189, 14,114, 51, 99, 97,101,109, 7,231, 74, 85,145,156,148,130,203,151, 47,177, 41, 41, 25,123, 88, 30, 89,250,246,109,106,252, +215,216,116,114,174,138,164,164, 36, 92,188,120,145,205, 72,207,218, 9, 29,111,217,171,200,244, 68, 24, 80,174,146, 85,210,100, +120,162,207,196,219,252,149,135, 27,243,194, 59,228,169, 92,233,233,233,211, 40,165, 41,250, 50,115, 82, 60,136,218,128, 1, 34, + 92,184, 80, 31, 58, 93, 11,115, 19,147,142,148,227,154, 54,104,208, 64, 62,112,224, 64,174, 77,155, 86, 98, 83, 83, 83, 82,187, +118,221,172,204,140, 12, 75, 0,160, 0, 91, 30,139, 46,216, 84, 90,192, 23,118, 98, 89,109,189,188,180,150,191,169,180, 62,204, +188,154, 29,177, 17,112, 88,204, 35,100, 20, 71,233, 94,134,135,165,225,137, 52,249, 75, 71, 79,197,220,126, 5, 91,206,204,171, +232, 40,175,168,235,144,199,227, 31,112,112,112,152, 31, 27, 27,155, 68, 41,101,191, 84,217, 40,216,130,167,199,244,233,186,198, +223,125,199, 88, 86,170,196, 81, 74,217,136,103,207,200,131,179,103,133, 15,206,158,149,234,212,234, 91, 39, 40, 13,215,199,166, +163,163,163,239,185,115,231,244,158,123,213,179,103,207, 87, 5,243,182,244,205, 79,183,106,206, 87,170, 85,113,250,174, 90,149, + 60,247,116,120, 68, 60,194, 35,226,174,190, 15,143,237,242, 37,101, 84,116, 83,105,146, 31,194,129,234,177,169,116,113,155,214, +214,214, 79, 5, 2,129,115, 69, 30, 88,150,101,227,147,147,147, 27,233,153,206, 33, 85,170, 84,241,139,138,138, 58,197,178,236, +140,111,161, 16, 18, 66, 90,241,249,252,139, 44,203,202,138, 43, 94, 5,100,140, 16,226, 42,145, 72, 62,153, 12, 95,150,205,213, + 11,235,254,210,178,109,219, 62, 15,238,222, 61, 61,103, 69,200, 39,243,134,166,246,177, 28, 61,100,210,180,223,142,108,221,248, +243,166,211,105,123,202, 85,155,237,236,110, 3,112, 47, 32, 92,122,228,101,147,114,148, 97,169,137,137,137, 47,128, 65, 28,199, + 89, 19, 66, 82, 40,165, 71,139,144,172, 47,206, 79, 62,159,239, 87,171, 86,173,105,111,222,188, 57,194, 48,204,152, 34,215,175, +113,115,115,155, 20, 25, 25,185, 69,167,211,205,169,192,243,110,218,182,109,219,244,141, 27, 55,242,102,204,152, 1,127,127,127, + 75, 74,105,250, 55, 42,119,123, 11, 11,139, 63, 88,150,245,160,148,158,203,206,206,158, 71, 41,205,173,168,205,252, 16, 15,131, +156,156,156,230,184,187,187,187,191,125,251, 54, 40, 46, 46,110,117,113, 53,232, 43,210,233,221,187,119,239,115, 27, 54,108, 32, +149, 42, 85, 66, 76, 76, 12,166, 79,159, 78,207,156, 57,211,147, 82,122,225, 75,219,100, 66,200,130, 9, 19, 38,172, 24, 62,124, +120, 33,161,245,245,245,165, 23, 46, 92, 24, 73, 41, 61,240,165,237,252,183, 84,239,107, 87,179,169, 70,249,236,202, 6,117, 61, +250,255, 48,172, 15,121,240,228, 45, 30, 62, 8, 64,108,124,252,105,142,199,155, 31, 22,150,242,246,107,109, 6, 60, 9,195,195, +128, 0,154, 16,159,112, 2,148,191,240, 85,120,114,248,255,215,189,255, 55,168, 90, 37,185, 14,201, 23,110,133, 85,225, 10, 67, +244,137, 86,235,232,232,136,212,212,230, 82,129,160,141, 68, 34,241,226,241,249,183,210,146,147,167,235, 75,180,254,137,138,253, + 89,135,238, 70,196,165,109, 73,240, 37, 54,139, 79,100,255, 18,155, 21,177,161,175,205,210, 54,149,230,212,234,120, 43,134,121, +186,137,150,158, 7,197,109, 58, 59, 59,255,200,113, 92, 21,125,211,196,227,241, 34, 98, 99, 99,119,125, 73,126,186,187,187,211, +119,239,222,129, 82, 74,190,101,185,255, 19,117,233,127,201,230,129,245,245, 29,107,214,171, 53, 39,248, 89,232,154,124,183, 98, + 33,150, 78,181, 52,105,211,161,253,162,123, 55,111, 47, 95,188, 41, 45,251, 95,153, 78, 66, 8,143, 86,116,117,203, 23,218, 44, + 8, 18, 90, 81,155, 34,145,104,123,179,102,205,126,124,248,240,225, 31, 12,195,140,251, 95,172,159,132, 16,111, 62,159, 63,187, + 70,141, 26, 13,195,194,194, 94,176, 44,187,166, 44,146, 85,129,193,239,252, 42, 85,170, 76, 20,137, 68,146,156,156,156,244,248, +248,248, 69,148,210,227,255,110,249, 89,219,221,170, 9,165,133, 65,183, 87,134,190, 75,125,252,205,108, 82,142,229, 40,127,197, +155,240,148,231,255,223,229,254,159, 78,178, 74, 83,185, 4,255, 95,137, 40, 32, 74,101, 34, 62, 62, 6, 64, 12,128, 19,255,174, +153,169, 15,201,170,160,220,152,248,239, 96,163, 56,242,137, 84,192,183,176, 85,156, 52,253,147,120,251,246, 45, 49, 60,242,255, +126,248, 97, 70, 80, 60,128,233, 77,188, 62, 63,151, 79,174,230,120,245,250,215,167,243, 75, 72,214,151,218,252,210, 13,159,181, + 90,237, 79,132,144,153, 21, 89,173,248,223,134,124, 82,117,225, 31,176,187, 10,192,170,127,247,251,127,245, 54,245, 41,128,158, +255,238, 54,255,199,234,100,197, 54,149, 54,192, 0, 3, 12, 48,224,223,186, 81, 87, 26,114,193, 0, 3,254,189, 80, 84,213, 42, + 74,188, 8,128, 78,165, 60,200,215, 43, 96,188,211, 23, 52, 20,215, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54, 13, 54,255, +183,108,254,183,146,172, 79,200, 85,209,227,130, 85, 79,255,196, 11, 64, 39,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131, + 77,131,205,255,230, 23,128,113,165, 29, 27, 92,135, 6,252,227,216,220,151, 56, 1,192,148, 83, 52,238,159,184,222, 0, 3, 12, + 48,192, 0, 3,254,149,160,148,238, 44,205,117,248, 47, 39, 90,132, 16, 71,228, 5,218,115, 3,240, 6,192,221,138, 44, 87, 46, +193,158, 53,128,129,132,144, 1,249, 55,123, 2,192,241,242, 66, 81, 20, 64, 38,147, 37,170, 84, 42, 91, 0,144, 74,165, 73, 42, +149,170,232, 94, 6, 4,159,111,143, 66,243,254,166,244,137,173, 85,171, 86, 77, 84,171,213,182,122,252,125, 38,165, 52,136,199, +227, 5,203,229,242,155,111,222,188, 57, 95,145,123,239,208,161,195, 72, 62,159,191, 18, 0, 88,150, 93,112,243,230,205,125,255, + 96,185, 53,175,228,104,191, 87,171,211, 50,137,201,105,139, 74, 91,186,189,173, 39,241, 21, 16,204,201,255,188,122,226,185,178, + 67, 88, 84,244,250, 50,210,215, 68, 40, 20, 78,182,179,179,235, 22, 27, 27,251, 20,192,207,148,210,114,163, 26,187,184,184,252, + 32, 16, 8,134,177, 44, 91,141,207,231,135, 51, 12,115, 40, 58, 58,250,128,161, 25, 49,192, 0, 3, 12, 48,160, 60,178, 85,210, +247, 21, 34, 90,181,172,137, 61, 5, 6,131,160, 51, 40,174, 17,224,232,235, 20,250, 81,223,223,123,215, 34, 58, 29,147,247,159, + 34, 30,216, 75,239,121, 59,189,189,189,157,167, 76,153,130, 86,173, 90,225,225,195,135, 45,247,236,217, 51,154,207,231, 7,113, + 28,119, 11,192, 67, 74,245, 10,165, 96, 12,224,123, 0, 67,187,117,235,214,105,229,202,149,252, 58,117,234, 64,169, 84,226,246, +237,219,109, 86,175, 94,189,129, 16,114, 29,192, 97, 0,103,203,138, 13,163, 82,169,108, 11, 56, 19, 33,196,182,127,255,254,143, +139,146,171,252,253,213, 8,165,244, 1, 33, 36,128,101,217,135, 39, 78,156,136,169, 69, 72,243,241, 85, 68,127, 78,251,160,249, + 44,102,146, 90,173,182, 61,243,219, 42, 8, 36, 18,168,179,179,208,114,212,223,171, 64,175,253, 50, 7,132, 99,192, 7, 77,247, + 90,177, 33, 8, 64,112,124,124,124,144,167,167,103, 68, 69, 11,153,207,231,175,188,124,249,178, 3,165, 20, 93,186,116, 89, 9, +224, 31, 33, 90,132, 16, 73,139, 38, 13,110,157, 59,121, 68,154,147,150,136,174,223, 15, 58, 68, 8, 25, 73, 41, 61,249, 9,105, +234, 78,236,136, 0,115, 38,172, 58,204, 7,128,109,243,135,254,188,161, 11,217, 52,253, 10,253, 72, 8,241, 2, 10,183,108,250, +141, 82,122,107, 91,119, 98, 7, 62,230, 78, 88,117,152, 0,192,239,243,135,206,217,214,157,108,156,120,177, 98,171, 42, 9, 33, + 19, 71,142, 28,185,105,229,202,149,124, 7, 7, 7,196,197,197,117,173, 93,187,118, 13, 66, 72,237,178, 38, 17, 87,169, 82,229, + 88,251,206,189,171,246, 29, 48,216,200,198,218, 2,241, 9, 41,166,199,142,252, 49,190, 74,149, 42,221, 34, 34, 34, 6, 25,154, + 17, 3, 12, 48,192, 0, 3, 74,233,119,190, 60,188, 67, 99, 71, 34,203,213,162,183,128, 79,126,104,219,188, 78,199, 33,221,219, +242,106,123, 84,199,171,151,161,223,157,189,249,104,117,109, 59,222, 13,134,165, 7,140, 69, 56,243, 44,190,236,149, 48, 58, 6, +130,171,103, 14, 3, 0, 38,142, 30,202,127,252,248,113,245,198,141, 27, 23, 6, 4,236,216,177, 35, 58,118,236, 72,182,109,219, +214,224,234,213,171, 13,118,239,222,173, 37,132,236, 45, 39, 8,221,100, 55, 55,183,213,155, 54,109,146,120,122,122, 66, 34,145, + 20,158,147,203,229,232,217,179, 39,122,246,236,201,143,143,143,239,114,238,220,185, 46,191,253,246,155,134, 16, 50,155, 82,186, + 69,159,204, 91,180,104, 81,147, 18,190,190, 76, 8,121,207, 48,204,139,250,245,235,199,212, 36,164,250, 79,221, 91, 93,155,216, +218,221,184, 52, 59, 2,177, 24,251, 71,230,245,213, 69,137, 86,196,205, 75,144,155,154,164, 26,153,152, 4, 1, 8, 6, 16, 68, + 41, 13,126,255,254,125,168, 7, 33, 13, 90, 88,240,246,238, 78, 99,235, 87,128,108, 33, 38, 38, 6,102,102,102,178,246,237,219, + 39, 16, 66,150,220,186,117,107,231, 55,174, 83,205,151,204,153, 40, 74,143, 12,194,199,215, 15, 48,115, 64, 27,163,233,155,255, + 90, 14,224,100,217, 21,145,199,251, 45,128,243,153,158,183, 25,239,162,212,212, 84, 79, 0,176,178,178, 18, 3,184,181,254, 17, +186,207,104, 77,200, 87, 84,116, 17,159,207,223,186,127,255,254,177, 63,252,240, 67,222,214, 17,247,238, 65, 46,151, 99,217,178, +101,149,103,205,154,229,139, 82, 54, 2,118,113,113,249,161,125,231,222, 85, 55,174, 89, 94, 59, 59, 45, 83,189, 99,235,241, 39, +142,117,107,242, 38, 76,158,101,178, 81,171,182,119,113,113,249,193,160,108, 25, 96,128, 1, 6, 24, 80, 17, 53,171, 92,162, 85, +211,134,236,107,219,200,125,224, 16,239, 54,146,122,117,235, 64, 36,249, 59, 80,116,227, 38, 77,208,184, 73, 19,158, 79, 78,118, +231,199, 79,158,117,254,243,234, 67,117, 77, 27,114,252, 77, 50, 29,169,111,194, 10, 54,165, 93,249,189, 93,135,220,140, 36, 41, + 0, 24,155,219,170,230,159,249,120,179,117,235,214,112,118,118, 22,221,184,113, 99, 12,202,142,151, 50,255,205,155, 55, 18, 62, +191,236,120,168,142,142,142,232,223,191, 63,106,214,172, 41,110,223,190,253,124,252,189, 29,198, 39,144, 74,165, 73,132, 16, 91, + 0,176,180,180,100,151, 44, 89,242,130,210, 66,207, 32,165,148, 62,224,241,120, 15, 57,142,123,116,246,236,217,216, 58,132,216, +246,104, 92,243,238,196,225,253,141,232,159, 27, 74, 37, 9,170,172,172, 18,191, 55,146, 27, 39,203,140,141,131, 36, 70,210, 96, + 0, 65, 0,130,157,156,156, 66,235, 16,226,220,162,102,149,171,219,102, 12, 53,209, 39, 47, 27, 55,110, 92,195,203,203, 75,202, +178, 44,114,115,115,241,251,239,191,155,201,100, 50,179,110,221,186, 45, 6, 80, 88, 1,106, 19, 82,175,159, 35,127,220,146, 56, +102,210, 23, 16, 25,243,182, 45,155, 68,110,246, 91,108,218,164, 69, 91,188,189,117, 16,105,105,217,200,204,200, 1,199,113,159, +237, 48, 60,241, 34, 77,220,214,147,172,222, 54,111,232, 92,194,227,145, 6,125,126, 70, 47,251,204,169,132,144,151, 0,132, 98, +177,184,176, 30, 18, 66, 28,235,214,173,187,186,250,119,109,241,251,130,225,160, 28, 71, 1,172,214, 87,205, 34,132,216,154,152, +152,156,189,122,245,106,243,166, 77,155,226,225,195,135,248,240,225, 3, 38, 78,156,168,153, 52,105,146,104,196,136, 17,100,230, +204,153, 83, 8, 33,127, 82, 74,239,127,246, 32, 8, 4,195,190,239, 59, 72,156,147,145,165,210,168,181, 26, 75,107,115, 78,157, +171, 82,164,164,103,169, 6, 13,253, 81,243,242,249,163, 97, 0, 62, 35, 90, 95,147,159, 6, 24, 96,128, 1, 6,232,141,166, 0, +108, 0, 36, 3,120, 82,236, 24,249,159, 81,194,113, 10,242,188, 82, 86, 69,108,165, 32,111,218,143, 13,242, 98,124, 62, 6,144, +254, 53,137, 43, 45, 42, 60,144, 31, 25, 62, 63, 64,113, 65,160, 98, 82,132,104,209, 55,201, 20, 76, 90, 56,216,212,247, 96,179, + 63,223, 62,137, 72,205,145,169,100, 17, 19, 30,138,145,211,151,225, 77,114,233, 17,185,189,107, 17,157,153, 24, 2, 19, 17, 32, + 50, 50, 87, 15,241,187, 18,208,164, 73, 19,213,124, 79,158,183,239,182, 60,165,107,230,184,161,104, 57,227,207, 43,225,225,225, +140,163,163, 35,126,248,225, 7, 80, 74,123,148,113,115,137,217, 79, 2,108, 95,247,104,133,102,137, 37, 79,147, 10, 11, 11,195, +157, 59,119, 16, 29, 29,141,106,213,170, 97,204,152, 49, 73,148, 82,187,210,108,118,237,218,245,246,111,191,253,230,185,118,237, +218,192,253,251,247,183, 46,205,221, 84,155, 16,227, 6,149,237,159,236,246,157, 91,141, 92,218, 43, 84, 68,191,131,185,191,146, +148, 64,242,104,124,252,223,121,247,107, 13, 7, 24,155,153,192,216, 84,158, 56,226,234,211, 66, 37, 43,255,253, 77, 99, 66, 76, +157, 29,172,158, 30, 93,191,200,137,119,243,152, 84,180,227, 1, 41,143,100,181,111,223, 62, 96,229,202,149, 22,241,241,241,184, +126,253, 58, 42, 87,174, 12,133, 66,129,117,235,214, 37,220,189,123,215, 49, 63,189,118,205,106,186, 6,253, 62,107,148,153,104, +204, 47,146,138, 86, 36,145, 64,176, 37,224,242,177, 73,102, 18,138,140,248, 15,120, 31,250, 18,143, 95, 69,232, 14, 92, 11, 98, +179,148,106,111, 74,233,205,146,126, 55,185, 13,169,126, 43,222,230,220,229,219, 79,220, 29, 28, 28, 48,126,252,120,124,252,248, + 17,148, 82,112, 28, 87,184, 74, 99,254,252,249,168, 81,163, 6, 70, 14,238,165,144,164, 61,107,127,238, 21,125,170,103, 5,175, +235,234,234,122,245,214,173, 91,118, 78, 78, 78,184,123,247, 46, 62,126,252, 8,123,123,123,220,184,113, 3,126,126,126,251, 39, + 76,152, 48, 96,229,202,149,210, 33, 67,134,196, 93,185,114,165, 82,241, 57,117,149, 43, 87, 14, 61,119,229,174,252,230,233,171, +239, 45, 76,140, 96,108,107, 5,190,220, 84, 69, 65, 20,246,182, 22,162, 65,189, 59, 86,143,140,140,244, 40, 86,254, 95,149,159, + 6, 24, 96,128, 1, 6,252,141, 11, 23, 46, 80,111,111,111, 82,240, 94,156, 66, 16, 66,206,231,243, 1, 13, 0,113,145, 99, 16, + 66,206,231,171, 33,159, 28,251,248,248,204,247,245,245,125, 89,112, 92,112,205,188,121,243,234,248,249,249,173,106,217,178,229, +209,128,128,128, 37, 0,222,125, 45,209, 42, 77,229,210,107,142, 22, 19,251, 24, 34,247,110, 16,178, 58,232, 82,222,128,203,136, + 2,140,237,161, 36,114,164, 38, 68,225,245,221,147,121,220,176,188, 76,124, 77,133,132,144, 27,161,161,161,120,253,250, 53, 98, + 98, 98, 96,100,100,244,217,117,247,238,221,131, 76, 38,131,131,131,131,126,146,157,230,211,253, 88,131, 26,187, 66,222,210, 19, + 41, 67,126,194,141, 27, 55,144,148,148, 4,145, 72, 4,177, 88, 12,134, 97,202,181,199,227,229,237,248, 91,160, 98,149,116, 77, +123, 66, 4,206,150,242,115,219, 22, 79,171,194,123,112, 94,168,140,126,135,120, 21, 11,115,125,148, 60,185, 49,140,140,141, 18, +100, 50,163,226, 36,235,109, 99, 66,132,198,114,233,185,189, 43,102,218,243,159,223,144, 42,223, 5, 65, 84,130,141,206,157, 59, +143, 7,176,152, 82,154,209,190,125,123,187,149, 43, 87, 90,196,197,197,225,213,171, 87, 56,126,252,120, 50,147,119,163,132, 82, +186, 20, 0, 90, 18, 34,117,177, 49,191,178,229,151,105, 38,184,117, 76,140, 49,191, 84,184, 34,153,121,244,188,208,111,196,132, + 73,155,166,245, 68,110,182, 18,135,175, 61,199,229,103,239,123, 1,184, 87,214,188,183, 45,247,232, 59, 66, 72,199,190,125,251, +190,184,115,231,142,245,238,221,187,193, 48, 76,137,175,221,187,119,227,250,221,103, 83, 41,213,155,100, 57, 86,169, 82,229,250, +163, 71,143,108,140,140,140,112,237,218, 53,100,100,100, 20, 42, 89, 35, 71,142, 36, 25, 25, 25,131,127,255,253,247,126,145,145, +145,107,238,222,189,155,138,188,237,160, 62,169, 8,124, 62,255, 61,195,104,107, 57,120, 84, 23, 12,232,217,182,109, 78,106, 16, +228, 86,245,241, 32,240,253,185,140,244, 84, 37,159,207,127, 95,244,250,111,145,159, 6, 24, 96,128, 1, 6, 84,152,208,156,167, +148,246, 40, 74,156,138, 19,174,130,207, 5,215,249,250,250,246, 40, 74,194, 0,192,207,207,111, 85,145, 99,197,183, 72, 91,121, +147,225,219, 19, 66, 40,128,246, 37, 93,164,126,117, 10,234,215,103, 33,114,109, 13,113,205, 94,224,187,182, 65,116,208, 45, 4, + 94, 90,143,216,151,247, 64, 57, 22, 14, 53,154,233,155, 22, 85,173, 90,181,160, 82,229, 77,205, 82,171,213, 16, 25, 91,168,102, +142, 27, 42, 5, 0, 78, 32, 85, 23, 73,180, 94, 6, 77, 90,123,161, 89, 34,197, 99,187, 60, 2, 92,160,108,173, 24, 53, 10, 34, +145, 8, 34,145,168,112,243, 89,125,136, 86,254,166,168,224,242,220, 87,180,164,243, 77, 36,194,195, 71, 23, 79,110, 38,137, 12, + 22,171, 67, 30, 32, 94,205,209,115,137,236, 5,125,118, 78, 54, 50, 54,138,147, 25, 25, 5,203,228,198, 69,137,214,123, 0,160, + 66,225,129,131, 75, 39,215, 55, 78, 12, 55, 86, 61,185,129, 4, 21,167, 53, 45,217,204,210, 75,151, 46,217, 10, 4, 2,123,150, +101, 17, 29, 29,141,151, 47, 95, 98,227,198,141,137,217,217,217,237,159, 61,123, 22, 86, 36,189,188,166, 50,241,241, 3,203,166, + 85, 21, 4,249, 75,213,239, 67, 74, 36,111,101,193,166, 94,159, 46,189,218, 55,184, 48,126,248, 2,244,238,254, 29, 70,180,175, + 77, 35,226,211, 84, 0,174,233,179,129, 53,165, 52,142, 16,210,185, 93,187,118,135, 26, 54,108,232, 65, 41, 69,189,122,245, 48, +120,240, 96, 28, 56,112, 0,129,129,129,200,202,202,210, 94,189,122,117, 3,165,116,143,158, 15,156,145,133,133,197,229,155, 55, +111,218, 24, 25, 25,225,234,213,171, 80, 42,149,112,112,112,192,164, 73,147,196,126,126,126,251,179,178,178, 6,248,250,250, 74, + 35, 34, 34,182, 92,185,114,165, 50, 0, 30,165,244,179, 74,160,209,104,118, 30, 62,176,111,211,164,201, 83,156,110, 62,124,117, + 67,157,147,109,230,234, 26,147,101, 99, 33, 55,217,240,235, 82, 23,141, 70, 51,190,228,252,188,253, 69,249,105,128, 1, 6, 24, + 96,192,231, 26,198,133, 11, 23, 74,229, 34, 69,201, 83,113,178, 85, 17,146, 6, 64,233,227,227, 51,159, 16,114, 62, 95,241, 82, + 2,136,255, 39, 72, 86, 33,209,162,148,250, 19, 66, 64, 41,245, 47,213, 10,199, 66, 27,113, 7,218,136, 59,144,181,156,138,191, +124,135, 20,251,147, 47,223, 34,172,231,178,107, 55,213,106,181, 96,223,190,125,133,243,182, 0,128,101,217,111, 94,138, 21, 33, + 90,249, 68,239,179, 68, 84,145,200,253,119,206, 24,208,194,138, 85, 8, 53,247,206, 33, 78,205, 49,107,222,105, 21, 79, 50,232, +111,243, 75,177,121,102,250,120,196,220,189, 14, 35,185, 60,102,236,157,224,162, 42, 86, 16,128, 15, 0, 80, 69,106,122,227,248, +204, 33,109,236, 69, 16,105, 46,156, 64,188,154, 83,111,143,212,237,217, 88,114,161,130, 82,138, 15, 31, 62, 64,161, 80, 32, 32, + 32, 0, 39, 79,158, 76, 46, 78,178,242,211,123,251,143,159,135, 53, 55,205,254, 40,210, 60,185,142,120, 53,167,174,161, 15,185, +170,223,167,181,136, 71,174, 18, 30, 95,214,189,109,109, 76,255,177, 15,214,255,241, 23,163,177,109,219, 99,211,217,139, 3,115, +212,218,249,250,144,172, 34,105, 14, 2, 80,155, 16, 34, 1,224, 53,120,240,224,139,253,250,245,131,191,191, 63,206,157, 59,231, + 14, 32, 33, 63,255,151, 1,176, 67,222,106,196,210,118,142,231,137, 68,162,163,215,175, 95,175,227,232,232,136,235,215,175, 67, +169, 84, 98,194,132, 9,154,201,147, 39,139, 70,142, 28, 73, 50, 51, 51, 11,149,172,128,128,128,212,210, 72, 22, 0,196,198,198, + 94,114,117,117,109,213,174, 93,187, 62, 85,221,107,154,134,103,103, 37, 25, 25, 73,101,119,253,111,137,158, 60,186,191, 37, 54, + 54,246,113,201,249,121, 67,239,252, 52,192, 0, 3, 12, 48,160,116,120,123,123,251, 95,184,112, 1,222,222,222,254,229,244, 37, + 61,190,144, 12, 21,252, 78,232,235,235,251,210,215,215,247, 19,197,235, 43,149,182,226,174,195, 11,148,210,132,162,138, 86,133, +192,102, 70,127,126, 3, 28, 87,145,155,253,236, 59, 11, 11, 11, 70, 38,147,125, 66,180, 56, 61,109,166,157, 62,130,240,137, 67, + 11,149,172, 2,101, 11, 93, 71,126, 21,209,226, 56, 46, 0,192, 39,137, 48,182,171, 57,228,232,240,206,173,107, 87,117,226,233, +142,111, 68,172,130, 81, 45,126,163, 85,189,206,166,189, 94,149, 48,201,186,208, 38,163,131,212, 88, 22, 37,147, 27, 23, 39, 89, +145, 0, 32,183,175,209,111,255, 16,175,246, 13,106,186,241,152, 99,235, 16,167,208,229,248,132,106,181,225,185,244, 84, 41,121, +184,248,187,239,190, 91,108,101,101, 37,221,180,105,147,153,171,171, 43, 24,134,209, 20, 39, 89,198,118, 53,135, 28, 27,217,181, +117, 13,123, 11,158,238,207,205,136, 81,178,138,141,225,186,253,219,245, 32, 89,214,102,242, 43,219, 87, 77,148, 25, 73,132, 80, +169, 84,240,219,246, 39,174,222, 15,233,145, 28,124,250, 10,128, 43, 95, 81, 39,199,246,232,209, 99,253,178,101,203,160,211,233, + 48,102,204, 24,188,127,255,254,234,155, 55,111, 54,186,184,184,204,254,249,231,159, 29,237,237,237, 49,112,224, 64, 17,128,145, +165,216,248,245,240,225,195, 61, 26, 52,104, 0,127,127,127,100,100,100,192,193,193, 1,147, 39, 79, 22,251,250,250,238,207,202, +202, 26,176,106,213, 42,233,135, 15, 31,202, 84,178, 62,169,215, 44,187, 98,199,250,137,179,155,182,104,195,123,247, 46,140,137, +110,230,201,187,117,253,220, 29, 43, 43,171,253,159,228,231,168,110, 21,206, 79, 3, 12, 48,192, 0, 3,190, 25, 46, 0,240, 46, +174,114, 21, 39, 97, 5,138, 85,209,227,226,215,231,159, 87,127,109,130,138, 43, 90,249,196,235,211, 57, 90, 69, 39,193,151, 7, + 46, 55, 89, 47,242,244, 25, 91,173, 69,116,227,155, 66, 48,223,147, 7,145,177,133,170,231,178,107, 55, 75,187,214,216,216, 88, +111, 69,139, 83,171,202, 35, 78, 21, 34, 90,249,115,180, 46, 83, 74, 63, 33, 90,230,246, 53, 61, 23,206,157,182,161, 77,191,174, +188,196, 31, 91, 34, 35, 71,173,254,249, 21,195,197, 42,202, 38, 89,121,189,184, 46,194,200, 88, 30, 44, 53,254,100, 94, 86, 52, + 0,200,236,170, 55,243,153, 49,101, 91,135, 33, 61, 73,242,132, 54, 72,207, 80,170,103,191,100, 72,156,146, 14,120, 69,233,173, +146,204,221,184,113, 99, 7,128, 29,237,219,183, 79, 52, 54, 54, 70, 78, 78,206,103,101, 80,144,222,214,253,186,242, 18,199, 54, + 71, 90,174, 86,253,243, 75, 6,241, 74,238,104,121, 36,203,198,220,228,202,246,149, 19,141,226, 99, 35, 33, 18,137, 32,151,203, +113,237, 94, 48,146, 67,206,124, 13,193, 2,159,207, 95, 50,127,254,252,197,147, 38, 77, 66,106,106, 42,206,157, 59,135,238,221, +187,227,200,145, 35,174, 23, 47, 94, 92,239,229,229, 5, 62,159,143,243,231,207, 67,167,211,189, 45,165, 60,251,140, 27, 55,110, +118,191,126,253,240,248,241, 99, 36, 36, 36,124,162,100,101,100,100, 12,222,182,109, 91,191,136,136,136,114,149,172, 98,104, 86, +197,173,145,104,222,162,181, 80, 43,146, 4,201,113, 15,253,111, 92,227, 61, 72, 75, 75, 51, 2,144,249,165,249,105,128, 1, 6, + 24, 96,128,222,170, 86,105, 92, 36, 57,159, 68, 37,151,116, 92,132, 96,149,116, 76,138,169, 96,154, 98,231, 3,255,201,123,210, + 75,209, 18,216,213, 5,147, 24, 82,132,104, 37,125,114, 94,106, 98,169,151,235, 80,199, 64,176,125, 79, 97, 28, 45,105,106,106, +170,212,218,218, 90, 85,148, 32, 24, 25, 25,193,209,209, 17,233,233,233,216,185,115, 39, 0,148, 55, 41,154, 49,237, 55, 28,205, +134,140,193, 19,103, 49,168, 78, 91,168,108,109, 31, 53,234, 19,178, 37, 18,137, 10,230,134,149,215,233, 62, 34,132, 68, 2,120, + 64, 41,165,141,107, 84, 91, 46, 53, 54, 30,213,164,190,155,245,244,137, 99,133, 17, 73,106,220,108, 51, 47,227,207, 95,231,202, + 99,168,124, 82, 20,205,184, 95,142,189,240,239,127, 63, 88, 92,201,138,109, 84,163,218, 2,169,145,244,199, 22,117,107,216,251, +204,156, 40,140, 72, 84,147,155,205,126,206, 58,249,219,207, 70, 31, 96, 50, 59,134,166,223,210,163,120, 22,119,239,222,125, 49, +165,148,114, 28,183, 8, 0,138,166,119,230,228, 31,133,225, 31, 85,184,209,102, 65,250,201, 95,231,154,196,160,236,244,218,212, +239,211,218,206,194,244,202,246, 85,147,140, 18,226,162, 32,145, 72, 96, 98, 98,130,152,196, 76, 8, 5,124,229,215, 84, 54, 66, +136,196,211,211,115,238,196,137, 19, 17, 28, 28,140, 9, 19, 38, 36, 68, 71, 71,159, 58,118,236,216,132, 95,126,249, 69,208,165, + 75, 23, 36, 36, 36, 96,245,234,213,186,123,247,238,173, 2,176,186,196,250, 40, 16,140, 93,190,124, 57,141,143,143, 39, 31, 62, +124,128,131,131, 3,166, 76,153, 34, 94,181,106, 85,225,156,172,138, 40, 89, 5,136,141,141,245,119,119,115, 65,175, 75, 27,192, +232,212,254, 25,169,209,119, 94,135,167,251, 91,138,197,179,218, 52,174,255, 69,249,105,128, 1, 6, 24, 96,192, 55,193,147,114, +142,255,165, 40,201,117,168, 47,209,122,187,121,193,104,247,209,147,230, 64,230,218, 26,234,208,211,224,114, 18, 11, 21, 45,169, +220, 2,150, 46, 30,200,200, 85,227,196,141,103, 0,240,182, 34, 9,203,206,206, 70,227,198,141,177,117,100,141, 14,170,236, 84, +169, 12,128, 90, 98,170, 58, 35,110,123,243,226,197,139, 10,142,227,142, 2,184, 88,142,153, 37,117,234,212,217,178,118,237, 90, +177,199,144,209,200,121,120,183,184, 58, 5,153, 76, 6,137, 68,130,160,160, 32,220,188,121, 83, 3, 96, 73, 57, 25,246,136, 97, +152,192,163, 71,143,198,186, 87,115,238,218,190,105,179,169,243,231,249,152,188,186,123, 21,139, 86,109,225,170, 55,233,146,233, +119,228, 76,118,166,220,165,163, 34,254,245, 11, 61,110, 53,176, 24,201,138,247,168,234,210,161,101,163,134,115, 22, 45, 90, 96, +250,242,238, 53,252,242,219,118,234,222,160, 83,230,111, 39,207,102,165, 24, 85,254, 78,153, 24,250, 88,159, 60,188,125,251,246, + 14, 0, 59, 10,142,139,167,215,103,217, 70,174, 70,211,174,233,126, 71, 78,230,102,153,184,116, 42, 43,189,182,181,251,182,170, +228, 96,121,101,243,138,159,140, 62,198, 69, 67, 34,145, 64, 46,151, 35, 58, 33, 3,139, 55, 28,207,213,114, 92,215,175,172,139, + 18, 19, 19, 19,137, 86,171,197,214,173, 91, 17, 29, 29,221,146, 82, 26, 77, 8,217, 62,104,208,160, 77,245,234,213,171,245,242, +229,203,183, 57, 57, 57,147, 40,165,175, 75, 51, 98,110,110,222,210,198,198,134, 60,120,240, 0, 63,253,244,147,102,202,148, 41, +162, 17, 35, 70,144,244,244,244, 47, 85,178, 0, 0,206,206,206,158,223,123,183, 66,235,206, 19,252, 53,170,140, 59, 17,175,247, +251,243,232,125,105,227,134,245,191, 40, 63, 13, 48,192, 0, 3, 12,248,223, 64, 89,147,225,203,220,141,218, 19, 16,212,176,194, +248, 58, 78,162,143, 7,126,157, 66,179,195, 3,168,242,241, 14,154,117,250, 71,122, 97,245, 8,122,113,243,116, 58,193,187, 14, +173,101, 75, 62,214,176,194,120, 79, 64, 80,214,238,222,221,107, 66,215,217, 13,180,179, 27,168,119, 13,232, 0,204,111,212,168, +209,153,201,205, 64,233,171,195,148,190, 58, 76, 39, 55, 3, 5,240, 19, 0,185,190, 59,134, 3,112, 0,176,179,113,227,198,204, +173, 91,183,232,155, 1,157,232,243, 90,214,116,210,164, 73,244,151, 95,126,161, 67,135, 14,165, 54, 54, 54, 12,242,252,165, 14, +229,217,236,213,171,151, 51,165, 20,149, 42, 85, 50,111,226, 81,253, 99,208,141,115,244,206,129, 77,244,143,201,125,105,243,122, + 30, 41,246,181,218, 5,202, 28,106, 54,212,119,103,115,123,123,251,121,148,210,174,148, 82, 7, 74, 41,220,221,173,228,141,106, + 85,143, 15,188,126,142,222, 61,184,133,254, 49,185, 47,109, 81,191,118,170,179,135,215,107,169,109,173,102, 95,186, 91,122,137, +233,173, 91, 43,197,174,122,171, 23,165,165,183,168,205,170,205, 6,158,141,141, 79,164,143, 30, 61,162, 23, 47, 94,164,119,239, +222,165, 7,142,157,165, 46, 77, 7,228, 88,215,235,221,250,107,119,117, 7, 96,230,237,237, 77,223,190,125, 75,187,117,235, 70, + 1,152,125,137, 77, 0,103, 34, 34, 34,104, 72, 72, 8,157, 63,127, 62, 5,176,111,226,196,137,202,204,204, 76,218,169, 83,167, +104, 0, 60, 20,171,139,250,166,179, 90, 21, 39,191, 62, 61,219, 46,153,252, 83, 63,207,175,205,207,111,184, 43,188,193,166,193, +166,193,166,193,230,127,189,205,255,228, 87, 62, 15, 25, 87,228,189, 81,193,185, 50, 21,173,219,121,106,192,142,122,118,228,208, +170,213,155,103,109,221,177,111,206,220,169, 99,141,219,182,233,140,224,235,123,113,242,252,177, 92,149, 90,179, 90,196,199,218, +224, 20, 90,110, 28,138, 11,175,169,176, 4,245,200,200,210, 13,133, 49,152,222,165, 3,148,210,237, 21,100,146, 9, 0,198, 17, + 66,214,122,121,121,173,252,177,117,179,190,147, 91,117,128, 78,167,195,129, 3, 7, 16, 21, 21,117, 10,192, 2, 74,169, 94,138, + 91,112,112,112, 74,157,234,149,167, 89,202, 68,115, 38, 13,237, 99,147,252,254, 21, 98, 67,159, 3, 0,212,106,165, 46, 33,204, +191, 65, 69,210, 39,147,201, 30,217,216,216,188,177,177,177, 73,103,213, 57,227,164, 2,211, 69, 19, 6,127,111,155, 26,241, 26, + 49, 47,243, 60,163,106,149, 66, 27, 19,118,179,214,151, 48,233,202,149, 43, 75,140,133, 24, 95, 98,122, 53, 42,221,199,183,161, + 13,245,177,163, 80,107, 86, 45, 93,127,224,187, 21,115, 70, 73, 76, 77, 77,241, 44,228, 29, 22,173, 59,146,171,212,232,186, 38, + 7,157,190,255,141, 88, 63,116, 58,157,222, 11, 29, 74,193,220, 6, 13, 26,212, 92,185,114,165,251,200,145, 35,241,181, 74, 86, + 81,188,255, 16,235,211,190,125,251,218,239,222, 60,243,178,148,137, 14,125, 77,126, 26, 96,128, 1, 6, 24,240, 63, 3,111, 74, +233,206,130, 8,241,249,174,196,231,250,184, 14,243,136, 71, 34, 85, 0, 88, 86,205,142,108,159,183,114,253, 98, 30,217, 48,138, +163,116, 47,195,195,210,240, 20,154,252,149, 29,175,194,187, 22, 97,190,235, 61, 84, 0, 0, 66, 1,152,175,176,245, 22, 64, 63, + 66, 72,211, 93,247, 31, 47,204,255,122, 5,165,180, 66,190, 92, 19, 1, 66,218,212,174,230,212,182, 81, 29, 41,159, 85, 34, 54, +244, 61,210,114, 85,184,246, 50, 42,131, 71,121,123, 43,154,174,240,240,240,219, 0, 80,183,122,229,208,182,181,221, 92,218, 53, +174, 99, 36, 36, 26,196,190,122,134, 76,165, 6, 87, 95, 70,101,130,144, 47,158, 80,253,173,210,251, 49,232,204, 19,155,250,125, + 58, 17, 66,174,207,159, 60, 68,178,120,221,209,111, 74,178, 0, 40,226,226,226, 82, 21, 10,133, 85,124,124,188, 6, 95, 24, 36, +142, 82,250,142, 16, 82,111,250,244,233,203,102,207,158, 61,231,215, 95,127, 21,125,201,156,172,210,144, 30, 23,117,186, 93,157, +111, 87,254, 6, 24, 96,128, 1, 6,252,247,163, 96,158, 86,241,249, 90, 21, 10,239, 16,158, 72,147, 1, 76,114,115, 35, 51,223, +191,167,154,111,149,184,146,148,174,175, 36,111, 79, 0,244,252, 98, 3, 60,146,253,240,109, 84,206,163,183, 81, 57,224, 40,229, + 40, 85,243,120,136,201,213,106, 87,133,133,199, 94,249,138, 82, 96,159,188,139, 86, 62,125, 31,163,162, 28, 71, 57, 74, 53,132, +224,163, 78,199,173, 10, 9,143, 60,251,239,144,222,228,160,211,247,237,107,247,109,123,255, 81,200,204,220, 92,237,150,228, 87, +167, 3,190, 97,185,232, 8, 33,195, 90,182,108, 57,154,101,217,237,148, 82,221, 87,216,210, 0,152, 75, 8, 57, 21, 28, 28,124, + 60, 32, 32, 32,225, 91,144,172,127,180,252, 13, 48,192, 0, 3, 12,248,175,196, 23,111, 42, 93, 26,190, 37,201,250,119, 68,240, +219,136,198,255,132,221,144,183, 17,117,255, 19,210,251,241,213,169,167, 0, 6,255, 67,149,241, 42,128,171,223,146, 84, 19, 66, +170, 0,224,127, 19,146,245, 15,150,191, 1, 6, 24, 96,128, 1,255,157,248,234,189, 14, 13, 48,224,223,124, 36, 65, 1, 48,134, +156, 48,192, 0, 3, 12, 48,224, 95,212, 15,149,170,104, 17, 0,157, 74,249,209,245, 10, 48,185, 78, 95,144,168,235, 6,155, 6, +155, 6,155, 6,155, 6,155, 6,155, 6,155,255, 91, 54,255, 27, 65, 8,113, 64, 94,180,250,194,168,245,133,228,235, 31, 94,238, +104, 88,250,106,176,105,176,105,176,105,176,105,176,105,176,105,176,249,223, 30,222, 97, 92,209,247,162, 47,158, 65,240, 51,192, + 0, 3, 12, 48,224, 31, 28,233, 75,242, 55,146,255,162,243, 6, 24,240, 31, 84,215, 11, 87, 29, 22,157,179, 37,248, 2, 67,213, +243,149,176,119,255, 96, 98, 39, 59, 56, 56,140,171, 95,191,190,135, 72, 36,226,101,103,103, 47,189,121,243,230,146,226,215,181, +171, 35,124,202,231,193,185,200, 47, 1,194, 7,120, 60,176, 20,177,119, 2, 21, 77, 12, 69,255,111, 93, 41, 93,101,166, 54,127, + 17, 30, 95,204, 50, 90,176, 58, 45,128,191,183, 99,226, 56, 38,138,209,168,186,148,246,123,135,134,125, 93, 24,150,250, 1,220, + 54, 2,222, 4, 10,238,119, 66,121, 19, 40, 15,219, 8,135,159, 32,208,173, 6, 35,156, 45, 16, 9, 22,196, 63, 59, 17,243,223, +144,103,127,254,249, 39,255,107,126,223,191,127,255, 18, 55, 16,117,114,114, 58,111,100,100,228, 86,218,239,114,115,115, 19,226, +227,227,189,254,203,235, 99, 59, 0,155, 1,212, 41,118,234, 53,128,105,148,210, 27, 95,251, 31,237, 9, 17,216, 1,227, 69,192, +207, 0,160, 5,126, 75, 4,118,220,254, 70, 11, 57,190, 5,108,109,109,239, 8, 4, 2,247,220,220,220,220,172,172,172,106,166, +166,166,225,198,198,198,198, 12,195,188, 77, 74, 74,106, 87,193, 60,157,136,252,173,180, 8, 33,115, 40,165,219, 42,114,222, 0, + 3,254, 83,240, 85,171, 14, 9, 33, 53, 0,120,230,191,218, 53,109,218,212, 46, 55, 55, 23,132,144, 68, 0,119, 0,248, 3,240, +167,148,134,125,139,196,242,249,252, 53, 27, 55,110,156, 53,101,202,148,194,205,160,131,130,130, 74,190,150, 7,231, 91,231,174, +219, 62, 9, 14, 67,211, 78,253,243,137, 22, 15,200, 77,128, 87,231,102, 95,218,216,154, 88, 88, 88, 44, 37,132, 12,224,241,120, +229,118,106, 28,199,177,148,210, 19,233,233,233,139, 41,165,217, 21,249, 47,185,177, 84,199,176,108,137,255, 33,224,243,217,156, + 92, 85,169, 97, 47,172,172,172, 2,120, 60, 94,213,162, 27,102,231,167,191,196,207, 69,143, 25,134,137, 77, 78, 78,110,162, 71, + 94, 72,121, 2,209, 52, 66, 68,157,193,227,106, 0, 4, 4,188, 48,142,213, 92,227, 24,237, 70, 74,169,234,107, 72,150, 67,165, +106,119,103, 44,240,115, 14, 9,125,141,249,147,135,226,215,205,251, 48,111,218,104,108,220,121, 4,211,198, 13, 65,237,218,117, +202,180,193, 82,178,116,209,180, 97, 94, 43, 55, 30,110,186, 96,218, 80,227,149, 27, 15, 55, 93, 48,125,168,124,229,166,195, 77, + 22, 76, 31, 38, 95,177,233, 80,147,133,211,135,153,174,220,116, 88, 11, 96,204,151,164,115,104, 13,167, 92,194, 48, 37,142,182, +169, 64,160, 62, 28, 22,103,252,175,120,168, 71,142, 28, 89, 95,169, 84, 62, 27,218,185,145, 95,195, 26, 78,113, 37, 93,147,250, + 49,206, 41,252,205,115, 31,161, 72,214,248,123,159,125, 65,101,217,147, 72, 36, 85, 95,191,126,237,206,113, 28, 88,150, 5,195, + 48,133,239, 26,141, 6,237,218,181,251, 38, 11,103, 8, 33, 61, 1, 44,205,123, 88,225, 75, 41, 61,254, 21,182,228, 2,129, 96, +134, 88, 44,246,100, 24,198, 3, 0,132, 66, 97,168, 90,173,246,103, 24,102, 61,165, 52,167,130, 38, 55,196,197,197,213,150,203, +229,208,106,181,133, 27,208,243,249,252, 90, 46, 46, 46, 91, 1,184,127,237,253,219, 1,227, 91,181,105,179,113,196,172, 89,124, +229,157, 59,216,184,103,207, 6,100,101, 1,192,214,242,126, 43,145, 72,174,240,120, 60,215,138,252, 31,199,113, 81,106,181,186, + 75, 69,126, 35, 16, 8,220,227,227,227,109, 29, 29, 29, 1, 0,198,198,198,198, 69,143, 43,162,100, 1, 88, 77, 41,149, 1, 0, +143,199,219,216,170, 85,171,150,132, 16, 6, 0,229, 56,142, 71, 8, 25,194,113,156, 32,255,250,213,132,144, 61,148, 82,181,161, +219, 54,224, 63, 81,205, 42,141,108, 9,202,248,209, 69, 0,158, 77,155, 54,149, 13, 30, 60, 24,158,158,158,112,119,119,135, 84, + 42,205,107,196, 83, 83,237, 94,188,120, 49,240,206,157, 59, 3,207,157, 59, 7, 66,136, 18,192, 61, 74,105,137, 15,117,167,158, +109,167, 72,229,146, 77, 0,144, 28,155,154, 16,251, 33,105, 83, 66, 66,194,106, 90,100, 55,106, 66, 72,181, 17, 35, 70,204,156, + 58,117, 42,206,159, 63,143, 35, 71,142, 64,173, 86, 35, 59, 59, 27, 55,111,222, 44, 57,161,138, 36,164,223,244, 3,140, 35,128, +104,127,192,200, 22, 48,182,251,226,204,178,176,176, 88, 58,109,218,180,233,181,107,215, 46,140, 98,174,211,233,192, 48, 12,116, + 58, 29,210,211,211, 49,115,230,204, 2, 6, 11,142,227,112,233,210,165, 41,227,198,141, 3,128, 25, 37,217,108,217,196,229, 41, +143,240,156, 11,180, 26,202,178,177, 15,158,199, 52, 97, 88,150,175, 82,105, 75,220,169, 92, 42, 21,149, 73,242,132, 66,161,243, +171,191,254,178,229,137,197,160, 44, 11,112, 28, 40,199, 1, 40,242,162,121,223, 81,150, 3,213,177,224, 24, 14,140, 82,141,102, + 19, 39,234, 83,105, 90, 9,197,178, 35,195,126,156,101,223,188, 69, 11, 97,229, 74,142, 96, 88, 14,239, 35, 98,237,159, 61,125, +216,250,196,254,173, 19, 8, 33, 67, 40,165, 95, 20,103, 75,108,100,122,117,203,239,187,156,159,188, 8,193,141, 91,119,112,253, +166, 63, 0,224,202,173, 60,115, 60, 30,175,188,244, 89, 88,185,123,213,159, 50,186,183,241,138,181,187, 37, 83, 70,247, 22,252, +253,190, 75, 50,101,244,247,130,149,235,119, 73,166,140,254, 94,184,252,183, 45, 13, 9, 33, 22,148,210,244,210,236,149, 86, 70, +132, 97, 36,135,194, 19,249, 0,144,188,125, 59,116, 73, 73,112, 92,188, 24, 0, 48,172,154,157,222,238, 14, 27, 27,155,167, 66, +161,208,185,188,235,116, 58, 93,185, 36,120,228,200,145, 13,148, 74,229, 83,134, 97,168, 64, 32,240, 25,218,231,187, 51, 93,219, + 54, 72, 45,122, 77, 80, 80,160,213,170, 85,127,245, 62,254, 44,155, 14,108,108,242,236,252,154,145, 77,122,204,222, 23, 88, 70, +135,204, 83,171,213,120,251,246, 45,138,110,242, 94,148,215,126, 97,227,195, 3,176,209,202,202,170,121,106,106,234, 48, 0,243, +179,178,178,234,243,249,124, 88, 90, 90,206, 39,132,188, 55, 51, 51,219,157,153,153, 25,144,175, 26,113,122,218,109,103,106,106, +122,224,244,233,211, 22,141, 26, 53,226,165,164,164,160, 74,149, 42, 72, 75, 75,107,118,231,206,157,198, 99,198,140, 25, 67, 8, +249,129, 82,122,167, 2,201,173,105,100,100, 68, 71,140, 24, 65, 88,246,239,219,253,227,143, 63,208,165, 46,227,246, 83, 87, 99, +133, 74, 67, 51,111,188, 53,251, 73, 36, 18,221,139,140,140,204,172,104,126,136,128,159, 71,204,154,197,151, 71, 70, 66, 30, 24, +136, 97, 89, 89,130, 95,243,212,173,114,137, 22,143,199,115, 61,112,100,175,187, 88, 44, 6,195, 48,133,100,176,160,141,210,233, +116,208,106,181,208,233,116, 96, 89, 22, 58,173, 14,190, 43,126,251,226,182,208,200,200,200,200,209,209, 49,209,200,200,200,232, + 91,116, 68, 18,137, 68,176,127,255,254, 33, 98,177, 24, 0,160,209,104, 80,183,110, 93, 98,232,162, 13,248,111, 34, 91, 37,169, + 92,101,141, 82,187,101,101,101,129,101, 89,152,152,152,128,207,231, 23, 87, 84,208,185,115,103,180,107,215, 14,131, 7, 15,198, +171, 87,175,100,131, 7, 15,238, 92,170, 50, 48,171, 7, 42,185,219,229,119, 38,156,195,253, 11, 47,252,254, 88,254,167, 13,128, + 89, 69, 46, 27, 51,126,252,120,146,154,154,138, 1, 3, 6,220, 81,171,213,189, 40,165, 89,165, 42, 26, 28, 98,189, 6, 15, 3, + 71,137,108,253,163, 93, 68,163, 82, 82, 30,143,167, 44,112, 29,126, 97, 70, 13,112,116,116,196,209,163, 71,161,209,124, 30, 46, +204,212,212, 20, 47, 95,190, 44,170,192,161, 69,139, 22,124, 66,200,128,210,136, 22, 33, 60,231,251, 79, 34,109, 11,142,123,116, +174, 35,106,217,196, 53,209,198,202,132, 2, 32, 11, 22, 44, 40, 36,110, 0,176,116,233, 82,125,210, 9,158, 80,136,100,127,255, +191, 27, 98, 1, 15, 60, 17, 1, 17, 2, 60, 65,158, 23, 21, 20,160, 44,192, 49, 0,167, 3,164, 14,149,244,177,221,204,201,197, +253,252,170,117,219,204,213, 58,138,163,103,111, 32, 34,226, 3,248, 60, 30,170,185,185,227,187,246,109,133,141,155,182,172,244, +219,146, 89,231, 8, 33,221, 40,165,143, 43,156,209, 28,149,186,185, 88, 99,247, 31,207, 96, 99, 33,199,128,222,221, 33,147, 74, +240,235,230,189, 88, 49,111, 50,220,171,185, 98,199,134,149,165,254,220,204,204,108, 89,163,122,181,170,237, 61,126, 25,158,237, + 90, 9,246, 29,191,130,246,237, 90, 11,246, 30,191,140,246,158,109, 5,251,142, 95, 70,251,118,109,132,251,142, 95, 70,139, 38, +245,220, 2, 82,131,150, 1,152, 92,250, 61, 23, 43,163,239,242,202,200, 93, 32, 42,236, 8, 34, 39, 76, 0,128, 66,162, 85, 17, + 8,133, 66,231,248,248,120,219,242,174, 43, 79, 53,200, 87,178,158, 50, 12,131,164,164, 36,146,145,145, 65,205,205,205,123, 95, +222, 49,255,116,151, 54, 13,210, 0, 32, 48, 48,208,210,215,119, 85,239, 99, 79,179,160,124,184,133, 28,250,203,159, 27,214,203, +243,233, 89,191,145,141,251,247,239,255,188, 36,187,106,181, 58,162, 97,195,134, 52,255,179,147, 68, 34, 17, 21,171, 19,142,238, +238,238,159,169,214,122,184, 20, 55, 62,120,240, 96,114,237,218,181, 81,171, 86,173,128,230,205,155,155, 26, 27, 27,227,242,229, +203,240,240,240,168, 99,106,106,250,232,196,137, 19,194,185,115,231, 54,216,179,103, 15, 0, 76,209,163,126,118,242,242,242, 58, +122,254,252,121,169, 72, 36,130, 82,169,196,203,151, 47, 97,102,102, 6,177, 88,140,239,191,255,158,223,186,117,107,171,246,237, +219,159,204, 31, 12,232,189, 2, 74,165, 82,209,249,243,231,195,200,200, 8, 70, 70, 70, 48, 54, 54,134,177,177, 49,228, 82,144, +237,211, 92,100, 83,119,102,200,102, 44,222,238,119, 96,219,146, 91, 46, 46, 46,191, 68, 71, 71,103, 84,180, 46, 40,239,220,129, + 60, 48, 16, 40,242,236,234, 11, 51, 99, 75,248,248,248,148,167, 72, 65, 36, 18,161, 85,171, 86,229,218,179,178,178, 58, 37, 16, + 8,236,138,117, 14, 82, 31, 31, 31, 54, 44, 44,204,152,199,227, 25,115, 28, 7, 31, 31, 31,150, 97, 24,169,157,157, 93, 0,199, +113,137,201,201,201,125,203,179, 77, 41, 85, 19, 66,230,240,120,188,141, 18,137, 68, 80,185,114,229,168, 69,139, 22, 61,200, 87, + 51, 65, 41,229, 85,174, 92,185,153, 76, 38,115, 85,171,213, 12,128, 57, 6, 53,203,128, 50,208, 56, 79, 20, 46,132, 6,128,184, + 64,192,207,235,237, 96, 93,236,123, 0, 72,201, 31, 40,218,149,114,156, 10,224, 21,128,154, 0,108,243,207, 61, 1,144, 86,209, + 4,150,169,104, 17, 66,104,145, 11, 11, 59, 22, 19, 19, 19, 60,121,242, 4,132, 16,152,152,152,192,212,212, 20,102,102,102,200, +202,202,194,171, 87,175,240,250,245,107, 68, 70, 70,130, 16,130,106,213,170,161,224, 1, 42, 98,171,176,129, 59,188,246, 60,164, +114, 9, 8, 1, 26,117,168,143,250,237,234,162,233,227,240,105,142,142,142, 59,227,227,227,223, 18, 66, 4,117,235,214, 29,211, +162, 69, 11,172, 91,183, 14,106,181,122, 93, 73, 36,171,168,205, 59, 47,117, 77,242, 59,167,217, 7, 47,191, 55, 26,222,213, 77, + 17, 31, 31,191,230, 11, 50,231,147,134, 56, 37, 37, 69,239,189,248, 56,142, 67,122,122,122,153, 54,139, 43, 4,235, 55,110, 49, +207,206, 76,196,242, 95, 15, 66,167,211, 97,214,172, 89,224, 56,174,240,149,145,145,161, 87, 58, 41, 91, 76,100,224,229,189, 8, + 15, 32, 2,192,101, 80, 30,175,136, 62,186, 5,132, 2,132, 5, 80,236,190,138,219, 36,132, 72,249, 34,217,177, 37,191,110, 50, +127,254, 58, 22,103,111, 60,135, 54, 43, 14, 9,129,167, 1, 0,213, 90, 13,193,113, 53, 31,205,235,187, 97,250,130,223, 44, 22, + 78,255,225, 24, 33,164, 86, 81, 55,162, 62, 29, 27,165, 44,150, 47, 91,134,157,155,214,225,183,117,155,144,149,153, 1,161,208, + 26, 0,192, 48, 44,216, 98,247,246,217,189, 83,218,117,225,236,241,100,227,174,147,168, 91,221, 30,231,174, 5,160, 73, 29, 87, + 92,186,249, 24, 45,234, 85,193, 21,255,103,104, 81,191, 42,252, 31,190,196,172, 73, 35,200,253, 75,251,186, 86,164,140, 54,108, +216, 98,158,157,149,136,243, 43,247, 35,105,235, 86, 68, 77,158,140,102,249,215, 60, 38, 4, 34,103,103, 64, 84,126, 25, 21, 71, +104,104, 40,212,106,117, 73,163,125,120,120,120,148, 91,238, 74,165,242, 25,195, 48, 52, 49, 49,145, 36, 38, 38,194,216,216,152, +188,124, 25,194,214,169, 83,183, 15,125,253,231, 46, 0,240,245, 93,213,231,248,179, 44, 40, 2, 54, 65,249, 96, 51, 68, 85,130, +120, 59,151,142,215,142, 91,188,227, 89,145, 78,238,147,116, 38, 36, 36,116, 43,248, 92,173, 90,181,215, 97, 97, 97, 53, 11, 92, +205,249, 46, 68, 17,195, 48,238, 5,238, 68,134, 97,160, 86,171,209,169, 83, 39,126, 89,247,110, 97, 97,209,194,195,195, 3,207, +159, 63,199,166, 77,155, 44,189,188,188,240,238,221, 59, 16, 66,176,106,213, 42, 82,187,118,109, 97, 74, 74, 10,186,116,233,130, + 83,167, 78,181, 42, 47, 63, 9, 33, 38,198,198,198,123,206,157, 59, 39,229,241,120,200,206,206, 6,199,113,104,221,186, 53,120, + 60, 30, 66, 66, 66,176, 96,193, 2,156, 58,117, 10,103,206,156,145, 53,110,220,120, 15, 33,196,163,168, 91,191,140, 50,162, 42, +149,138, 74, 36, 18, 72, 36, 18, 72,165, 82, 72,165, 82,136,197, 98,228,168,128,113,235,163,212,124,169, 53, 87,167, 97, 27,183, + 81, 83, 87,241,214, 44, 26,125, 19,192, 89,125,235, 60,144, 55, 39,107,227,222,189,155,134,101,102,242, 0, 96, 55, 33,156,150, +210,223,244,121,222, 1, 32, 71,149, 9,215,106,206, 56,121,236, 12,250, 13,234, 93, 34,201, 18, 10, 69, 16, 9,133, 48,181, 52, + 46,215,166, 72, 36,178,123,253,250,181,149, 80, 40, 4,165, 20, 44,203, 66,171,213, 38, 46, 92,184,208,198,219,219,219,228,210, +165, 75, 60,111,111,111,206,194,194, 34,247,241,227,199, 73, 12,195, 88,181,109,219, 86,239, 58, 79, 41,221,214,176, 97,195, 70, +167, 79,159, 30,237,227,227,243,116,246,236,217,203,139,158, 95,189,122,245,178,139, 23, 47,186,246,233,211,231,192,139, 23, 47, +182, 85,164, 13,249,218,118,222, 96,243,223,207,230,133, 11, 23, 10, 27, 98,111,111,239,226,106,167, 29, 33,228,124,145,255,239, + 81,112,236,227,227, 51,223,215,215,247, 37, 33,228,124,209,239, 11,174,203,111, 59,206,151,116,156,255, 91,203,121,243,230,213, +245,243,243, 91,213,178,101,203,163, 1, 1, 1, 31, 42, 74,180,202,157,163, 85, 64,174,138, 18,174, 98, 6,144,149,149,133,172, +172, 44,196,196,196, 96,251,246,237,249, 15,180, 16, 2,129, 0, 2,129,160,112, 62, 67,105,184,126,238,238,102, 0,155, 27, 55, +110, 44, 12,126,112,226,210,207, 59,167,118,108,210,169, 17,255,217,141,224,254, 0, 86, 0,232, 54, 98,196, 8,107, 0,216,191, +127,127, 10,128, 75,255, 10,202, 76, 41, 61,241,246,237,219,233, 14, 14, 14,133,115, 84,138,186, 15, 25,134,129, 84, 42, 69,193, + 92, 22,149, 74,133,237,219,183, 51,148,210, 19,101,216, 68,216,203,155,120,251,242, 86,222,239, 56, 14, 28,251,247,239,151, 44, + 89, 82,116,137, 40, 38,228, 43, 39,229,146,188,146,242,156, 22,123, 47,246,253,103,228,236, 51,247,132,104,106,255, 31, 38, 59, +112, 68,128,191,110,190,128, 80, 40, 4, 87, 68,205, 20,242,243, 70,203, 47,223,197,195,209,174, 14,122, 13, 25,111,127,250,192, +150,169, 0,126,173,104, 94,215,170,223, 18,211,166, 79,199,174,157, 59,177, 96,241,178, 66,150,206,176, 44,152,114,211,201,227, +181,110, 82, 27, 57,169,177,224,243,249,104,213,208, 13,124, 62, 31,109,155,212, 0,159,207, 71,155,166, 53, 33, 16, 8,208,190, + 69,109, 84,175, 94, 29, 2,129,128, 87, 78,185, 35,236,229, 13,188,125,121,187, 8,233,165,160, 0,180, 9, 9,159, 93,175, 75, + 72, 0,117,177,170,104,221,194,152, 49, 99, 50, 98, 98, 98,180,197,207, 85,170, 84, 73,116,231,206, 29,243, 82,220,118,133,144, +201,100,141, 5, 2,193,179,180,180, 52,206,200,200,136,199,113, 44, 87,167, 78, 93,254,229, 29,243, 79, 23, 92, 51,111,222,252, +211, 3, 27,155,246, 57,120,226, 60, 21, 85,110, 67,136, 80,194,252,184,120,135, 72, 40,146,233, 21,241,190,192,141,248,230,205, + 27,148,151,158,162, 3,179,146,144,158,158, 62,194,195,195,227,206,230,205,155, 45, 9, 33,184,123,247, 46,248,124,126,225, 43, + 60, 60, 28, 60, 30, 15, 63,255,252,179, 54, 43, 43,107,108,121,105, 19, 8, 4,211, 79,158, 60,105, 38, 22,139,145,157,157, 93, +248,220,240,249,124,188,126,253, 26,107,214,172,193,136, 17, 35, 16, 29, 29, 13, 71, 71, 71,204,154, 53, 75,238,231,231, 55, 29, +192, 50, 61,110, 61, 72,163,209, 52, 49, 50, 50,130, 84, 42, 69, 1,225, 2,128,171, 47,133, 33, 10,133,162,158,181,181,181,189, +141,255,249,191, 90,121,245,106, 96,101,227,208,178,128,104,233,139,247,192,206, 8,150, 93,216,237,244,105,219,251,167, 79,115, + 15,207,157,139,149,100,103,239,208,187, 14,233,120,136, 10,143, 69,227,198,141,241,236,217, 51, 52,110,220,184, 40,105,130, 88, + 44,134, 72, 36,130, 72, 36,130,181,133, 94, 83, 40, 40,143,199,195,253,251,247,193,178, 44, 52, 26, 13, 52, 26, 13,106,215,174, +157,118,235,214, 45, 57, 0,132,135,135,211,225,195,135,103, 60,122,244, 8, 13, 27,150,189,159,186,189,189,253, 29, 62,159, 95, +185,216,179,106,209,183,111, 95,164,167,167,119,239,219,183,111,155,252,239,226,254,252,243,207,225, 0, 32, 22,139,193,227,241, + 88, 24,240, 63,143, 2,114, 85,148,112,149,208,230,244, 40,126, 76, 8, 57,239,235,235,219,163,248,119, 69, 73, 85, 73,159,139, +254,214,207,207,111, 85, 17,219,202, 47,240,134,149, 63, 71,139, 16, 66,203,107, 52,203, 66,121, 68,171, 0,207,158, 61,211, 57, + 57, 57,237,122,251, 34,178,163, 91,253,106,144, 25, 75,190, 35,132,108,150, 72, 36, 51,127,248,225, 7, 60,124,248, 16, 33, 33, + 33,127,124,237,118, 42,245,234,213,187, 34,145, 72, 92, 75,113,147, 68, 5, 7, 7,119, 41,165, 99, 88,156, 63,231,172,212,201, +240, 69,231,139, 21,157, 12, 95,106,197,224, 40,116, 90, 29,114, 21,202,191, 59,241,124,162,149,155,155,139, 65,131, 6,125,162, +104, 37, 37, 37,233, 83,168, 88,115,246, 44,174,157, 56,129,238, 13, 26,224,212,227,199,240,251, 97, 40,106,185, 58,129,178, 4, +148, 0,209, 71,182, 32, 53, 43, 7,135,111,220, 71, 90,182, 2,195,218,182,133,187,169,117,217,118,133,162,206,205, 90,180, 20, + 93, 15,120, 5,161, 80, 0, 30, 56, 80,157, 2,142, 30,237,193,231,241, 96,102, 87, 5, 34,161, 16, 66,161, 0,225, 49, 41,240, +168,219, 84,124, 94, 44,237,252, 37, 68,171,146,107, 21,176, 44,139, 17, 35, 70,224,232,209,163,176,178,119,133, 89,165,186, 88, +177,110, 39,186,119,106, 91,238,253, 23,140,224, 5, 2, 1,248,124,254,103,239, 5,159,245, 81, 39, 41, 71,161, 45, 94, 70, 28, + 5, 40,133,243,202,149,112, 94,185, 18,143,243,255,179,118,110, 46,148, 74, 37,208,188, 78,133, 72,150, 70,163, 65, 76, 76,140, + 54, 33, 33,193,174,132, 14, 42, 81,163,209,148, 75,108,246,237,219, 23, 52,114,228,200, 38,150,150,150, 79,131, 2, 3,117,245, + 27, 52, 16, 94,218, 62,255, 76,129,219, 16, 0, 26, 52,104,144, 54,127,254,252, 51,195, 7,244,232,189,205,103, 48, 59,113,217, + 1,129, 68, 38,107,210, 99,118,217, 19,226,139, 60, 31, 17,245,235,215,167,250, 92,171, 80, 40, 62,150, 81, 70, 61, 1, 44,109, +212,168,145,169,151,151, 23,238,220,185,131,126,253,250,169,181, 90,237,219,252, 70,181,198,225,195,135,197,175, 94,189,130,141, +141,141, 48, 42, 42,106, 15, 33,164,204, 9,242, 98,177,184,125,211,166, 77,121,106,181,250, 51,146,229,231,231,135, 33, 67,134, +160, 70,141, 26,224, 56, 14, 57, 57, 57,240,242,242, 18,110,218,180,169,189,158, 68,107, 90,173, 90,181,214, 32,111,213, 97,209, +182, 48, 20,192,156,124,181,251, 99,143,126, 35, 94,182,237,212,183, 73,229,234,117, 29,202, 51,104,103,103, 55,143,199,227, 13, +228, 56,142,159,149,149, 21,163, 33,164,122,109, 87, 87,187,214,189,123, 35, 83, 40,228,111,188,113,131,151,152,157, 45, 7,160, +151, 11, 82,165,203,133,107,181,188,169,126,253, 6,245,198,179,103,207,208,127,112, 31,136, 68, 34, 8, 4,194,188,103, 83,148, +167,104,153, 91,155,234, 85, 55,117, 58, 93, 97, 27, 94, 48,207, 75,171,213,162, 96,106,150,145,145, 81,225, 57,181, 90, 93,234, +128, 60, 31,238,199,151, 45,178,149,153,154,129,213,233, 80,167,119,255,194, 58,253,104,247, 54, 25, 56, 78,150, 17, 21,129, 41, + 39,206, 9, 97,128, 1,165,168, 90, 37,168, 89, 69,219,149,243,197,201,214,151,130, 16,114,222,199,199,103, 62, 0,234,227,227, + 51,191,224,216,215,215, 87, 9, 32,238, 75,200, 86, 73, 42,151,224, 91,144,172, 2,247, 66, 89,232,208,161,195, 20, 19, 19,147, + 77, 0,208,164, 73, 19,196, 60,140, 67,204,195, 56,120,212,172,211,186, 81,131, 38,153, 67,134, 12,129,149,149, 21,102,207,158, + 77, 1,252, 81,209,255, 15, 15,123, 41, 7, 64, 29, 29, 29,103, 3,128,163,163, 99,131,199,143, 31,219, 60,121,242, 4, 77,155, + 54,253, 91,186,215,106,209,166, 77,155,178, 58,196,108,228,205,181,154,241,237, 84, 50, 14, 90,173, 22, 10,133, 18, 26,141, 22, +140,142, 3,195, 48,104, 92,199, 4, 7,118,250,228,125,199, 20,168,103,121,170,153,179,189, 9, 26,215,179,215,241,120, 68,249, + 36, 48,161,196, 22, 83,163,209, 32, 40, 42, 10,129,145,145, 0,128, 94,190,101, 79,124, 61,112,227, 14,106,215,174, 93, 94,106, +221,156, 29,237, 17,127, 45, 40,175,241, 86,198,224,201,189,227, 48, 49,145, 3, 0,234,120, 14,131, 72,148, 71,180,114,149, 90, + 88,215,172, 4, 66,105,169, 97, 1,140, 45, 29,174, 8, 68, 82, 87,202,114,160,148, 3,229, 88, 80,202, 65, 98, 98,101, 52,101, +194,104,112, 28,139,102,205,154,129,240,249, 96,117,106, 12,232,217, 25,233,153,217,176, 50,215,175,147, 16,137, 68,240,244,244, +148,149,118,254,221,187,119,202,162,196,172,236, 50,210, 33, 55, 87, 9,181, 90, 13,173,134,129, 86,199,128,173, 42,194,242,133, + 67,193,104, 25, 40, 6,183,132, 86,199,128,155,222, 7, 90,141, 14,209, 70, 60, 94,131,218, 54, 58, 30,136,242,249,171, 36,211, +242,136, 86, 1, 57, 40, 13, 37,205, 9, 44,133,108, 5,142, 28, 57,178,113,253, 6, 13,158, 13,236,212, 96,109,112,200,203,248, +224,144,151,159, 93,231, 90,163, 65,196, 68,191,163,179,132, 34, 89, 99,125, 73, 22,240,169, 27,241, 43, 49, 63, 59, 59,187,190, + 92, 46, 71, 88, 88, 24,248,124, 62, 8, 33,239, 40,165,245, 1, 96,252,248,241,239, 5, 2, 65, 53, 62,159,143,173, 91,183, 18, +129, 64, 80,175,101,203,150,243, 1, 28, 47, 99, 64,231, 97, 98, 98,242,137,154, 37, 18,137,224,227,227,131,225,195,135, 23,146, + 44,145, 72,132,125,251,246,161, 73,147, 38,208,104, 52, 30,122,146,225, 39, 0,218,234,161,248,145,124,114, 94, 46, 25,101, 24, +102,100,234,192,129,213,225,239,143,214,213,170,213,110,220,184, 49,180,218,191, 5,205,106,213,170, 85,202,206,206,254, 72, 8, + 57, 4, 96, 27,165,244, 69,153,164, 72,197, 33, 42, 60,182, 96,208,138,102,205,154, 21, 42, 88, 69,213, 44,145, 72, 4,153, 88, + 94, 33,162,197,113,121,237, 82,118,118, 54,207,223,223,223,186, 86,173, 90, 4, 0,106,213,170, 69, 94,188,120, 97,105,100,100, +148,226,230,230, 86,238, 0, 88,102,106,134,125, 35, 7, 1, 0,126,233,212,181,112, 96,116,121,233,124, 8,133, 66,116,156, 61, +255,179,122,207,113, 28, 31, 6, 24, 72, 86, 57, 36,171, 36, 69,235,235,250,230,191, 21, 45, 95, 95,223,151,190,190,190,159,169, + 99, 21,180, 87,190,162,165,143, 43,160,188,135,181, 52,172, 91,183, 14,245,234,213, 43,179, 35,218,180,105, 19, 14, 30, 60,184, +142, 82, 26, 94,209,255,239,209,177, 81, 29,172, 63,253,178, 90,141, 58, 4, 0,150, 77,239,201,203,205,205,197,253,251,247, 97, +102,102,134,119,239,244, 11,251, 69, 8, 49, 49, 51, 51, 91,202,227,241, 6,240,139,175, 0, 40,153, 96,178, 28,199,157,200,204, +204, 44, 53,188, 3,165,128, 86,199, 32, 87,161,130, 70,163,193,244,159,183,148,155, 14, 95,128,104, 53,217, 2,207,118, 45,101, +165, 41, 58,205,234,181,199,164, 31,228,159,117,222,124, 30,192,227, 1, 13,155,229, 41, 46, 47, 30,191, 4,199, 1, 44, 7, 88, +219, 90,224,143, 35,107,203,204, 2,134,229,242, 71,199, 44,114,212, 44, 60, 90,244, 64,108,168,127,161,130, 36, 22,229,185,140, + 69, 66, 33, 56, 74,242,162, 62,148, 70,132,196, 50,215,244,132,112,247,157,231,131, 49,174, 71, 61,252,121, 61, 8,253, 59,213, +199,173, 71,175,224,213,188, 54, 94,190,141, 68, 29,247,202,216,186,231, 4, 40, 69,246,239,235, 87,124,252,187, 67, 99,162,244, + 81,180, 30, 62,124,168, 44,174, 98, 21,125,167,229,247,135,160,244,111, 69, 75,169, 82, 99,246, 60,189,194,249,228,149, 81,219, + 22, 50,125, 46, 46, 75,177,210,135,136, 21, 87,182, 80, 78,120,150,170, 0,154, 0,115,255,149, 13, 39,203,178,184,112,225, 66, + 97,121,148, 84,142, 69,203, 78, 15,146,131,168,168, 40,188,124,249, 18, 45, 90,180, 64,102,102, 38,132, 60, 30,102, 5, 7,163, +246, 15, 63, 64, 35, 18,129,227, 56,136,197, 98,140, 31, 63, 94,239,252,172, 96,107,154, 63,207,141,165,229,180, 37,107,123,244, +232, 81, 61, 44, 55, 23, 47, 95,191, 70,167, 37, 75, 0, 0, 23, 47, 94,252,164, 78,204,156, 57, 83,252,234,213,171, 49, 79,159, + 62, 29, 67, 8, 89, 71, 41,157, 85,106, 59, 75,213,133,115,180, 6, 14,237,135,234,181,170,226,224,222, 35,133,231,103,206,153, + 6,161, 80, 4,161, 72, 8,115, 51,115,189,238, 70,167,211, 21,146, 86,133, 66,193,187,120,241,162,115,231,206,157, 69,211,166, + 77, 35, 0,112,240,224, 65,222,230,205,155,141,175, 93,187, 38,114,114,114, 74, 40,151, 92,106,181,159,149, 49, 33, 4, 66,161, + 16, 34,177, 8,224, 56, 16, 66,140, 87,175, 94,189,236,229,203,151, 77,107,213,170, 5,181, 90,253, 3, 33,228,185, 33,142,150, + 1, 5,110,195,210, 8, 87, 73,115,173,242, 85,169,210,144, 92,116,222, 86,105, 68,173,232,156, 45, 0,234,138, 55, 11,122,206, +209, 42, 9,124, 62,191, 92,181,138,199,227,149,235, 58,156, 57,115, 38, 76, 76, 76, 74,235,128,104,112,112,240,171,132,132,132, +157,148,210, 45, 95, 82, 56,231,111, 60,127,185,116, 70,159,108,228,251, 86,205,205,205, 83, 58,116,232,144, 3, 64,123,252,248, +167, 3,100,181, 90, 93,106, 7,110,102,102,182,116,247,238,221, 83,123,247,238,205, 43, 30, 98,160,168,123,175,224,165,211,233, +112,252,248,241,169,115,231,206, 69,105, 42, 88, 65, 39,174,200, 85, 66,153, 63, 17,250,125,200,159,250,150, 94,169,167,228,230, + 14,112,174, 90,191,212,206,132, 39,202,155, 67,100,231,242,119, 7,102, 98, 34, 5, 91,134, 77, 66,120,225,145,209,241, 78,149, +236, 45,241, 62, 38, 25,118,149,235, 33, 61,238,239,124, 16, 8,248, 16,230,187, 14,205, 77,141,145,156,148, 4, 30,143, 95, 38, + 49, 94,113,248, 57, 30,133, 68,226,228,245, 23,208,170,114,177,126,255,101,104,213, 57,208,170,114,161, 85,229,189,175,154,251, + 35, 8,193, 71,173, 42,167, 70, 69,202, 93, 32, 16,160,121,243,230,165, 18,157,184,184, 56, 61, 21, 45, 90,168,104, 41, 85, 21, + 44, 35,253, 30,194, 50, 21,171,130,243, 95, 74, 12, 10, 66, 62,200,100,178, 38,251,246,149, 30,198,161, 36, 56, 56, 56, 92,146, +203,229, 85,244,189,190, 2,193, 75, 87,153,155,155, 47,173, 85,171,150,199,250,245,235,133,124, 62, 31, 29, 59,118,172,241,227, +143, 63, 70, 1, 64,189,122,245, 28, 11,218,152,137, 19, 39,210,135, 15, 31,134,228,141, 49, 74,135, 88, 44,126,109,102,102,214, +196,203,203, 11,153,153,153,136,137,137,129,177,177, 49,106,175, 93,139,224,137, 19,209, 96,251,118,240, 58,116, 0, 33, 4, 98, +177, 24,193,193,193,144,201,100,175,203, 32, 67,205, 1,252, 6,160, 53,254,118, 23, 82, 0,247, 1,252, 76, 41,125, 84, 66,123, +199, 3, 0,150,227,202, 43,172,161,179,103,207, 70,134, 80, 8,120,123, 67, 20, 30, 14,173, 86,139, 22, 45, 90, 20,170,236, 45, + 90,180,128, 64, 32, 64,253,250,245,225,232,232,136,173, 91,183, 14,197,167, 43,177, 63,129, 42, 71,139,168,240, 88,180,108,217, +178, 80,185,242,246,246, 46, 84,180,132, 66, 97,161,178, 69,216,242,137, 43, 33,132, 22, 29, 36,179, 44, 75, 4, 2,129, 96,198, +140, 25,164, 95,191,126, 84,163,209,112, 98,177,152,119,242,228, 73,114,235,214, 45, 65,110,110,110,185, 3,241,186,125, 6,224, +151,206,121,162,232,138, 42, 54, 16,138,132, 16,139, 68,152,253, 58,182,176, 92, 76,247, 29, 21,251,249,249,245,175, 85,171, 86, +158, 27, 30, 16, 24,226,104, 25, 80,142,154,149, 92,140, 36,105,138, 28, 39, 3, 32,249,199,201, 69, 8, 85, 50,242, 86, 16, 54, + 45,118,109,193,121, 77,177,247,130,243,129, 21, 77,123,145,189, 14, 63, 35, 95,101,141,136,223, 62,120,240,192,189,113,227,198, +136,142,142,254,108, 37, 92, 65,199,101,108,108, 12,153, 76,134,128,128, 0, 0,120, 91,154,177,155, 55,111,110, 70, 94,212,101, + 0,128,163,163, 99, 75,175,129,237, 3,154,117,109,138,195,190, 71, 50, 19, 18, 18,234, 23,196,208, 33,132, 16, 71, 71,199,225, + 66,177, 96, 80,181,186, 46,158,224,184,223,174,255,117,111, 73, 89, 55, 89,173, 70,157, 28, 0,202, 34,171, 14,215,124, 73, 65, +243,120,188, 1,189,123,247,230,189,122,245, 10,131, 6, 13,194,193,131, 7, 75,189,118,248,240,225, 56,122,244, 40,122,247,238, +205,155, 55,111,222,128,242,136, 86,158, 90,162,249,102,149, 50,236, 93, 32, 14, 28,221, 93,234, 28, 36, 91,219,188,249, 88, 73, + 73, 41,133,223, 53,109, 92,182,103,132, 99, 52,215,158, 63,125,220,178, 85,187,142,162,152,196, 12,112,140, 26,170,236,191,127, +175,200, 72, 4,101, 84, 16, 25, 89,194,222,218, 12,207, 30, 92,213,104, 53,170,107,101,217,156,218,187, 14, 38,246,244, 0, 40, +135, 62,179,254,192,249, 45, 83, 10, 71,208,109,250, 77,195,141,227, 27,245,158,227, 87, 28, 66,161, 16,193,193,193,202,210,212, + 44, 62,159, 95,110, 76,174,191, 85, 71, 29, 20, 10, 37, 20, 74,213, 55, 43, 35, 66,136,141,157,157,221,239,150,150,150,210,146, +136, 20, 33,196,198,198,198,230,119, 43, 43, 43,169,190,174,195,210, 72, 86,126, 92,173,167, 35, 71,142,172, 16,217,146, 72, 36, + 85,222,190,125, 91, 24,172,180,172,119,141, 70, 3, 47, 47, 47,189,130,151, 82, 74,207, 17, 66, 62, 56, 56, 56,220,175, 93,187, +182,217,251,247,239,113,228,200, 17,145, 80, 40,116, 41,104, 63,178,179,179,193,231,243,145,148,148,164, 3, 48,186, 60,215,153, + 90,173,246,247,247,247,111,216,179,103, 79,254,235,215,175,193,231,243,243,210,213,178, 37, 26,108,223,142,144, 25, 51,224, 25, + 25, 9,149, 86, 11,169, 84,138, 43, 87,174,104, 21, 10,133,127,105,246,100, 50,217,206,136,136,136, 58, 82,169, 20, 90,173, 22, + 28,199,129,199,227, 17,129, 64,208,198,220,220,124, 19,128,166,159, 62, 83,182,182,227,103,254, 90,147,101, 24, 54, 33,250,125, +114,121,121,144,154,154,138,115,231,206,161, 69,139, 22,240,244,244, 68, 92, 92, 28,194,195,195,209,189,123,247,194,107, 2, 3, + 3,241,252,249,115,184,185,185,149,175,232,241,116,112,171, 89, 5, 34,145, 40, 79, 33, 18,138,242, 7, 62,194, 66, 37, 75, 36, + 20, 65, 40, 16, 66, 42,147,234,173,104, 17, 66,192,227,241, 64, 8,129, 76, 38, 43, 24,100,115,206,206,206, 9,105,105,105, 14, + 0,248, 50,153, 12, 44,203,234, 53,104, 41,232, 35, 10, 72,150, 72, 44, 42, 84,182, 0, 32, 35, 35, 67,213,187,119,239, 67,106, +181,122, 20,190, 96,135, 18, 3,254, 39,241,228, 95,244, 91,189,121, 34,165,116,103, 73,147,226,203,170,224,221, 91,181,106,181, +125,200,144, 33, 29, 55,108,216, 0,185, 92,142,132,132,132,194, 14, 81, 44, 22,163, 82,165, 74, 72, 75, 75,195,142, 29, 59, 16, + 27, 27,123, 19,192,120,125, 83,148,144,144,240,240,221,139,183,169, 94,253, 91, 89,213,105, 85,211, 60,230,109,108, 11, 0, 1, +249, 36,235,143, 33, 51,187,143,242,234,219, 12, 34,177, 16, 49,239, 62,254,191,149, 36,159,207,231, 19, 66, 48,104,208, 32,189, +174, 31, 60,120, 48,252,253,253, 81,150,155,145, 43, 80,180, 20, 42,228, 42,191,221, 96,109,210,148,225,152, 52,101,120, 33,153, +208,199,245,146, 71,114,143,149, 65,180,180, 27,206, 31,219, 49,174, 81,179,150,174, 77,234, 84,193,163,167, 47,112,120,251,223, + 34,195,158,205,203,240,235,158,155,168,100,103, 1,173, 58, 23,151,254,220,245, 81,171, 86,108,248, 66, 81, 46,143,220, 18, 2, + 61,227, 84,126,162,162, 22, 16,173,186,117,235,150,170,104,165,165,165, 41,203,235, 24, 10,203, 72,163, 67, 78,174, 18, 74,197, +183, 33, 90,132,144, 6,109,218,180,185,118,226,196, 9, 43, 91, 91, 91,196,199,199,127, 66,180, 8, 33, 13, 90,183,110,125,237, +196,137, 19, 86,118,118,118,136,137,137,209, 59,172, 72, 9, 36, 11,201,201,201, 36, 61, 61,157,179,176,176,168, 16,217,226,241, +120, 80,171,213, 8, 13, 13,213,247,111,245, 94, 33,102,102,102,182,239,232,209,163,102, 41, 41, 41,224,243,249, 8, 13, 13,253, +100,213, 97,193,235,143, 63,254, 16,245,233,211,103, 55,128, 50,151,181, 49, 12,179,110,248,240,225, 99,226,226,226, 44,108,109, +109,145,144,144, 0,177, 88, 12, 74, 41,136,151, 23,218,126,248, 0, 45,203, 66, 38,147, 33, 44, 44, 12, 59,119,238,204, 85,171, +213,235, 74, 41, 31,177,145,145,145,187, 72, 36,194,176, 97,195, 62, 57,183,127,255,126,244,106,194,111, 50,174,179, 36,135,129, + 84,157, 40,235,118,137,207,231,147,241,179,127,171,209,188,157,119,221, 55, 33,143,222, 39, 39,198,222, 47,231,246,117, 26,141, + 6,181,106,213,194,147, 39, 79,112,253,250,117,116,232,208, 1,158,158,158, 8, 10, 10,194,213,171, 87,241,252,249,115, 16, 66, + 96,101,101, 85, 48,253,162,204, 57, 24, 26, 5,131,164,248,212,207,212,171,226,199, 34,145, 8,106,165, 86,175, 50,122,253,250, + 53,158, 60,121, 82, 24, 90,134,207,231, 51, 63,252,240, 3, 40,165, 52, 34, 34, 2, 38, 38, 38,116,228,200,145,172, 64, 32, 96, +226,226,226,244,173,251,121,234, 85, 62,201, 18,136,132,159, 16, 52,142,227,178, 3, 3, 3,199, 17, 66,130, 8, 33,171,243,191, + 54,196,209, 50,224, 63, 25, 23,138,238,117,168,151,162, 69, 41,253, 0,160, 19, 33,100,232,153, 51,103,214,109,218,180,201,166, + 71,143, 30, 72, 79, 79,135,171,171, 43, 28, 28, 28,112,254,252,121, 92,188,120, 49,133,101,217, 89,148,210,131, 37, 60,108,157, + 74,139,181, 65, 41,165,142,142,142, 39,212, 57, 57, 19, 27,123,122,224,230,241,187,190, 14, 14, 14,227,157,156,156,166,143,156, +255,253,168,246,189,155, 34,236,121, 4, 30, 94, 13, 70, 98,116, 10, 70,182,253,185, 76,155,197, 39,195,155,155,155,143, 49, 50, + 50, 18, 3,208,150, 48, 42,254,100,213, 97, 81,155, 44,203,178, 26,141, 6,199,142, 29,211,139,108, 29, 57,114, 4, 42,149, 10, +108, 49,255,106, 81,155,148,163, 68, 32,148,192,177, 82, 45,104,181,185,224,184, 47, 83,111,138,218, 44, 24,129,190, 23,139, 97, +155,146,130, 71,143, 30,233, 43,205,150, 89, 70,148, 82, 21, 33,100,216,198,149,179,207, 79,246,249,205,188, 67,171,134,248,101, +237,126,104,181,123,192,227,243, 32,147,136,208,184, 89,107,240,161,198,239,126,115, 50, 20, 89,233,195,138,111,197,243,153,205, +178, 60, 44, 20, 96, 57, 14,215,239, 60,214,251,222, 11,123,123,150,133, 64, 32,192,187,119,239,148, 37,173, 54,228,243,243,220, +156, 5, 35,245,178,108, 82,142, 35, 66,145, 20,149, 92,107, 67,163,206,249, 38,101,100,107,107, 59,231,244,233,211, 86, 5,161, + 18,130,130,130, 64, 8, 9, 45,162,142,204, 57,125,250,180,149, 82,169, 68, 72, 72, 72,193, 86, 83,161, 21,121,142, 10,148,172, +228,228,100,146,144,144, 0, 35, 35, 35, 94, 80, 80,144,186,126,253,250, 79, 81,246,206, 15,133, 54, 85, 42, 85,100,105,243, 39, + 85, 42,149,147, 84, 42, 21, 22,251,173,163,187,187,123, 88,113, 23, 98, 73,233,204,204,204,124, 52,119,238,220,198, 93,187,118, +197,156, 57,115,210, 44, 44, 44, 76,126,255,253,119, 1,159,207, 39,147, 39, 79,102,147,146,146,114,118,237,218,101,118,230,204, + 25,100,100,100, 4,148,119,239,148,210,108, 66,200,184, 86,173, 90,237,191,124,249,178,145,187,187, 59,178,178,178, 64, 41,197, +190,125,251, 48,121,242,100, 72,165, 82,132,133,133,161, 87,175, 94, 10,133, 66, 49,174,248,220,201, 34, 54, 9, 33,132,114, 28, +135, 69,139, 22, 21, 6, 39, 45, 8, 86,106, 34, 35,216, 57,179,170,241,180, 93,153,198, 67,127,217,245, 3, 0,176, 12,195,190, + 9,121,244,126,223,150, 95,110,137, 68,162, 59,229,148,209,130,105,211,166,253,238,237,237, 45,147,203,229, 72, 75, 75,195,253, +251,247,241,224,193, 3, 60,124,248, 16, 26,141, 6, 86, 86, 86,176,176,176, 64, 66, 66, 2, 94,191,126,173, 4,176,160, 44,155, + 98, 35, 33,170,213, 40, 88,249,155,167, 96, 9,139,172, 54, 44,170,110,137,132, 66,189,158,163,118,237,218,161,121,243,230, 5, + 4,136,141,138,138, 74, 80,171,213,164, 8,233,143, 43, 32,228, 46, 46, 46,204,193,131, 7,105, 89, 54, 31,238,220,138,203,203, + 23, 64, 44, 18, 97, 86,104, 76, 33,233,218,223,161, 17,132, 98, 17, 60,122,246, 43,218, 15,108, 35,132,236,201,255,172,214,167, +206,127,197,192,199, 96,243,223,220,230,127, 50, 40,165, 9, 0, 42,182, 5, 79,145, 31, 31, 38,132, 92,250,241,199, 31,253, 26, + 52,104,240,227,250,245,235,137, 72, 36,194,146, 37, 75,104,124,124,252,222,252, 81, 72,250, 23, 38,108,239,237, 83, 1, 19, 70, +248,244, 38, 51, 55,140,108,243,244, 70,200,235,122,173,220, 81,175,149, 59,158,222,124,133, 45,243,143, 28,100,117,236,162,132, +132,132,232,114, 76,169, 59,181,174, 89,124, 50,188,149,255,173, 27, 86, 21, 93,117,200,113,220,137, 35, 71,142, 76,237,219,183, + 47,239,241,227,199,159,205,201, 42,216,118,135,227, 56, 92,187,118, 13, 90,173, 22,123,247,238,229, 56,142, 43, 61,142, 22,232, +217,141, 27,252, 70,236, 61,112, 86, 44, 22, 17, 60,184,115, 18,153,233,101,171,116, 34,145, 16,127,236, 59,165, 21,137,132,111, + 74, 58,175,213,106, 99,110,220,184, 97,215,133,101,133, 60, 30,239, 51, 2, 85, 26, 78,156, 56,161,227, 56, 46,170,156,114, 9, + 32, 68,216,115,197,156,209, 71,188, 7,254,104,215,170, 85, 27,161,181,173, 29, 8, 33, 72, 74, 76, 66, 88,200, 99,221,165,147, +187, 19,115, 21,217,122,109,193, 51,122,205,237,194, 57, 89, 0,208, 99,242,166,194,249, 89, 0,208,115,228, 92,120,181,168, 3, +162,143,244,244, 55,201,226, 24,134,129,177,177, 49, 24,134, 41, 49,196,131,153,153,153, 76,165, 82, 41,243, 3, 49,150, 41, 21, + 81,224,155,151, 17,203,178, 30,233,233,233,200,205,205,197,131, 7, 15,232,202,149, 43,147,147,147,147, 11, 39,109,234,116, 58, +143,180,180, 52,228,228,228, 32, 32, 32,128,250,249,249, 37,167,166,166,206,175,200, 51, 36,147,201,154, 8, 4,130,167,233,233, +233,156,145,145, 17, 79,167,211,233,234,215,175, 47,145,201,100,122,111,168, 30, 31, 31,223,181,180,115,110,110,110,111,223,190, +125, 91,157,101,217,162,123, 32,138, 84, 42,149,123,171, 86,173,244,113,249, 76,219,179,103, 15, 78,157, 58,213, 44, 43, 43,107, +120, 84, 84,212,126, 0,205, 4, 2, 1, 94,188,120, 17,170, 82,169,134,244,237,219,119, 95,122,122,250, 35, 0,211,244,108, 55, + 46, 19, 66,134,121,120,120,236, 89,186,116,169,220,211,211, 83,224,232,232,136,166, 77,155, 34, 44, 44, 12, 23, 46, 92,208,109, +219,182, 45, 87,161, 80,140,166,148, 94, 43,187,216, 65, 24,134,129, 88, 44, 46,124, 73, 36, 18,136, 68, 34,100, 43, 41,198,174, + 13, 87, 50,144, 41,215, 45, 25,119,129, 2,228, 99, 76,120, 74,210,199,152, 71,132,144, 59,241,241,241,153,165,228,153, 88,165, + 82, 53,116,112,112,224, 19, 66, 54,104,181,218,145, 83,166, 76,113, 88,181,106, 21,106,214,172,137,148,148, 20, 24, 27, 27,195, +221,221, 29,201,201,201,120,252,248, 49,171, 80, 40,182, 3, 88, 70, 41, 45,211, 29,153,145,146, 5,103,123,151, 79,148, 79, 74, + 41, 40, 11,232,212, 44, 88, 45,133,134,232, 32, 20,234, 32, 18,137,244,233, 44, 41,199,113, 72,119,112, 0, 23, 18,130,135, 15, + 31,130, 82, 90,170,170, 86,171, 86, 45, 61, 10,136,131, 88, 34,254,196, 93, 72, 8,129, 72, 44,134, 80, 44,250,108,229,140, 65, +197, 50,224,191, 29,250,206,181,200, 0, 48,158, 16,178,191,125,251,246,231, 41,165, 66,228,249, 35,239,126,205,159, 39, 36, 36, + 60,115,116,116,156,103,231,108,225,215,109,120, 27,212,108,232, 10,150, 97,113,255,226, 11,236, 93,117,230,104, 92, 76,220, 72, +125,246, 62,227, 56,238, 86,235, 38, 53,121, 40, 18,171,219,209,209,145,251,146, 85,135,153,153,153,139,103,205,154,133, 57,115, +230, 84,120,213, 97,105,215, 4,133, 38,141,111,224, 97,227,220,179, 91,219, 46, 32, 60,170,209,168,203,104,248, 80, 24,185, 84, + 36, 18,190,121, 28, 24, 95,191,164,235,146,147,147,187,140, 26, 53,234,154, 64, 32,168, 82,145, 60,231, 56, 46, 42, 49, 49,177, + 99,249,101,174,187, 79, 8,113, 63,119,116,199,140,203,167,246,116,225, 56,214,141, 0,224, 11, 68,239,117, 90,237, 21,181, 50, +107,189,190,155, 74,175, 30,223, 18,211, 54, 94,197,214, 57, 61, 49,197,239, 56,118, 47, 26,139,121,107,143,224,183, 57,211,176, +114,211, 33,252, 50,109, 24,250, 15, 29,197, 81,194,187,167,239,125,240,249,252,203, 59,118,236, 24, 49,118,236,216,194, 69, 11, +148,210, 79, 26,118,157, 78,167,228, 56, 14,219,183,111,231, 0, 92, 46,203,222,167,101, 68,104, 89,243,165,244, 45,163,172,172, +172,209, 45, 91,182,220, 7, 64, 66, 41,125,151,158,158,254, 19,165,180,112,107,168,156,156,156,209,173, 90,181,218, 71, 41,149, + 16, 66, 62, 59,175, 15,242, 67, 61, 52,177,176,176,120,154,175,100, 73,190,100, 66,124, 89, 89, 93,134, 91,145,213,163,237,224, + 80,100, 91, 29, 66,200,170,102,205,154, 21,221, 84, 58, 20, 64,147,138, 38,138, 82,122,141, 16, 82,103,209,162, 69, 51,164, 82, +169,151, 66,161,168, 1, 0,198,198,198, 97,106,181,250,150, 82,169, 92,159,223,110,149,101, 67, 99,100,100, 20,198, 48, 76, 93, + 27, 27,155,188, 21,181,249,100, 11, 0,254,122,202, 62,165,148,105, 90,209,180, 93,188,120,177,178,133,133,197,119,132,144,254, +148,210, 90,217,217,217,234, 69,139, 22, 5,156, 56,113, 34,179, 74,149, 42,221,188,189,189,137,165,165, 37,158, 60,121, 66, 83, + 83, 83, 79, 2,152,175,207, 74,107,142,227,162, 86,175, 94,141,138, 62,239,101,157,215,106,181, 31, 47, 94,188,104,221, 53, 41, + 73,192,113, 28,122,246,236,249, 9,129, 43,142, 55,111,222, 64,173, 86,151, 25,204, 81,157,153,142, 14, 51,230, 2,249,171, 63, + 11,144,167,100, 81, 80,141,129, 87, 25,240,191, 5,242,143, 44,127,174,160,180,232,232,232, 56, 72,106, 44,153,228, 90,195,161, +126,124,120,210,171,236, 76,197,193,132,132,132, 29,148, 82,246, 75,109, 86, 36, 96,169, 65,254,253,231,108,254, 29, 71,139, 5, +165, 44, 40, 71, 65, 41, 7,142, 99,243, 54,188,166, 28, 40,203, 18, 66,112, 79,173,200, 28,171,111, 58, 9, 33, 22,214,214,214, +203, 40,165, 93,249,124, 62,175,168, 24, 86,244,115,190,146,117, 57, 57, 57,249,151,226,202,235,127, 98,126,254,249,231,159, 37, +146,127,125, 87, 29,246,239,223,159,173,224,179,121,203,216,216,184,196,192,156,185,185,185,209,241,241,241,223,253, 59,228,103, +129, 26, 74,245,104,208,138,185,224, 43,188,234,176, 60,155,149, 43, 87,150,104,181,218, 70, 0,220, 9, 33,230, 0,210,180, 90, +237,149,228,228,228, 68, 66, 72, 19, 0,139,242,127,182,156, 82,250,244, 95,249,188, 19, 66,100,214,214,214,123,120, 60,158,179, + 62,191,103, 24, 70,147,150,150, 54,162,232,128,160,168, 77,107,107,235,167, 2,129,192, 89, 15, 59,177, 41, 41, 41, 77, 12,237, +167,193,230,127, 13,153, 42, 54, 9,190,232,241,191,197,106,143,248,248,248, 99, 0,142,125, 75,155,165, 69,126, 55,224,255, 23, +185,105, 9,255, 72, 57,228,147,166,201,255,107,249, 89, 64,148, 74,248,254, 25, 0,242, 15, 60,155, 94,255, 9,249, 66,191,112, +196,152, 79,164,218,126,203,180, 68, 70, 70,170, 1, 4,228,191,138,255,223, 83, 0, 61,255,141,242, 77, 9, 96,208,183,178, 87, + 22,121, 50,192,128,255, 85, 24,150,213, 26, 96,128, 1, 6, 24, 96,128, 1, 6,124, 29, 46, 20,219,130,231, 66,193, 7, 2,160, + 83, 41, 35, 29,189, 37, 65, 66, 72,167, 47, 24, 73, 93, 55,216, 52,216, 52,216, 52,216, 52,216, 52,216, 52,216,252,223,178,249, + 63,135,130,192,145,255,196, 11, 64, 39,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131, 77,131,205,255,230, 23,128,113,165, + 29,243, 12, 84,211, 0, 3, 12, 48,192, 0, 3, 12, 48,224,159,129,222, 68, 75,110,239,225, 97, 83,185,193, 62,203, 74,245,131, + 44, 43,213, 15,178,169,220, 96,159,220,222,195,227,127, 49,211, 8, 33, 50, 66,200, 80,161, 80,120,205,193,193, 33,139, 16, 50, +227,191,244, 62, 77, 9, 33,253, 9, 33,203, 8, 33,125, 8, 33, 70,223,210,126,123, 66, 4,131, 9,153, 52,130,144,232, 17,132, + 68, 15, 38,100, 82,123, 66,254,235,230, 13, 46,157,230,216,242,238,229, 97,151,150, 78,115,108, 89,226,249,217,142, 86,143,174, + 13,220,232, 59,217,201,242, 27,149,155,137,157,157,221, 78,123,123,251, 72, 59, 59,187, 40, 59, 59,187, 61,132, 16, 51, 67,115, +103,128, 1, 6, 24,240,143,225, 2, 33,100, 92,193, 11, 69,230,104, 9, 0,224,194,133, 11,158, 0,110, 3,104,239,237,237,237, + 95,252,215,150,174,245,198,122,212,170, 57,103,197,146,249,196,222,214,218,136, 97, 57,109, 68,100, 76,237,197, 43,252,254,180, +116,173,183, 46, 45, 42,120,247, 23,116, 6,132,207,231, 15,146, 72, 36, 61, 0, 20, 16,182, 80,181, 90,125,158,101,217, 99,250, +174, 34,178,183,183,191,195,231,243, 43, 87,228,191, 89,150,141,254,248,241, 99,155, 47,236,196, 6,184,184,184,236,241,244,244, + 52,106,214,172, 25,196, 98, 49, 22, 45, 90, 52, 11,192,122,125,109, 88, 90,186,153,104, 37,210,233, 2,177,184, 51,213,105,234, + 82, 80,128, 39, 9,225, 24,245, 13,145, 90,189, 46, 45,237,125,182,158,105,153, 15, 96, 36,242,150,163,239,166,148,174,254,154, + 90, 50,178, 17,209,233,216,188, 58, 33, 18,128, 53, 51, 51,187,189, 96,193, 2, 65,143, 30, 61,176,123,247,238, 54, 59,119,238, + 28, 71, 8,185, 1,224, 47, 74,233,251,175,173,149,118,192,248, 86,109,218,108, 28, 49,107, 22, 95,121,231, 14, 54,238,217,179, + 1, 89, 89, 0,176,181,162,117, 73, 36, 66,127,107,107, 97, 15, 74,209,136, 0,132, 0, 47,146, 83,185,139, 90, 45,123,140, 86, +116,127,159, 79,109, 15,197,167,203,241, 15, 87,212, 70,230,123,186, 80,210,211,163,109,230,251, 91, 11, 1,116, 43,126,158, 81, + 73, 71, 80,126,165, 30, 74,250, 60, 6,192,218,175, 36, 89, 70, 54, 54, 54, 65,103,207,158,117,110,214,172,153, 0, 0,158, 62, +125,250, 67,143, 30, 61, 58, 16, 66,234, 82, 74,179,254, 69,164, 93, 42,224,241, 38,137,133,194,206, 44,203,214, 3, 0, 62,159, + 31,172,209,233,174, 49, 28,183, 85,223,152,108, 6, 24, 96,192,127, 49, 83, 41,135,139,252, 59, 67,159,200,240,183,189,189,189, +201,133, 11, 23, 40,138, 45, 17,151,219,213,170, 93,167,142,199,172,203,167,247, 87,202, 72,203, 80,109, 94,179,255, 89,174, 64, +172,112,175,237, 46,218,188,126,181,197,164,105, 51,167,203,237,106, 61,202, 73,124,253,170, 2,141,174,139, 76, 38, 59,181,102, +205,154,186, 94, 94, 94, 66, 91, 91, 91, 36, 38, 38, 34, 52, 52,180,238,205,155, 55,123,239,223,191,127, 22, 33,164, 47,165, 52, + 90, 15,115,238, 55, 14,236,177, 53,182,180, 2,171,211,193,177,126,163,194, 64,123,239,110, 94, 5,163,213,130,211,233,224,209, +163, 55, 0,128,227, 56,212,174, 93,155,255, 37, 25, 73, 8,113,172, 83,167,206,193, 85,171, 86,137,212,106, 53, 30, 61,122,132, + 91,183,110,113, 9, 9, 9,126,250,218,144,219,213,240,226,201,140,143, 13, 26,246,163,217,247, 61,170, 10, 93,236,108, 0, 24, +225, 77, 4,211,234,210,213,155, 77, 79, 31,219, 59, 81,110, 87, 99, 80, 78, 98,216,173,178,201,154,101, 11, 66,200,202,130, 8, +209,132,144,223,170, 84,169,242, 75,209,107,138,239,155, 71, 41,133, 64, 32, 72,204,206,206, 30,148,146,146,242,188,184, 77, 29, + 11,193,225,195,121, 60, 98,225,164,161,252,123,247,238, 25,215,174, 93, 91, 13, 0,171, 87,175,198,178,101,203,196, 87,174, 92, +233,126,224,192,129,238,132,144, 13,148,210,191,190,166, 98,138,128,159, 71,204,154,197,151, 71, 70, 66, 30, 24,136, 97, 89, 89, +130, 95,129,159, 43, 66,180, 8, 33, 85,237,237,133,127,206,154, 57,202,163,154, 91, 11,145, 72,100,157,183,137,183, 38,165, 70, +116,244,243,254,126,191,238,244, 33,132,244,163,148,190,211,211,158, 0,192, 82, 0, 82, 0, 11, 1, 44, 74, 78, 78,118,103, 89, + 22,246,246,246,139, 8, 33,103, 0,172,176,177,177,161,201,201,201,115, 41,165, 76, 89, 74, 86,214,123,186,240, 35,169,214,181, +102,227, 17,248, 72, 46,119,157,217,205,225,146,169, 27, 89,177,120, 99,252, 3, 0,232,230,230,102, 82,173,150,241, 92,185,105, + 61,203,172,184,235,115,187,185,185,237,186,244, 94, 63,162, 93,156,108, 2,128,163,163,227,234, 3, 7, 14, 84,106,222,188,121, + 97, 29,111,216,176, 33,127,245,234,213, 78, 51,102,204,216, 0, 96,148,158,246,106,216,216,216, 92, 97, 89, 86,157,154,154, 90, +163,224,123,219, 6,125, 91, 89,153, 24,119, 76, 78,207,190,147,242,242,140,191,158,182,154, 73, 69,162,147,127, 29,220,232,208, +176,121, 75,158,220,218, 22,170,184,120,228,232,180,157,110,221,127,216,126,220,164,159,167,229,151,209, 99, 67, 87, 99,128, 1, +255,211, 40,149,139,252, 39, 67, 80,132, 73,150,168, 32, 73, 36, 98,159,197, 11,230,146,140,212, 12,165, 42, 43, 91,163, 83,169, + 84, 60, 17, 85, 5,191,250,144,196, 19,240, 51,102, 76,155,106,226, 51,111,129, 15,128, 97,250,146,172, 6, 13, 26, 60, 62,117, +234,148,173,165,165, 37, 50, 51, 51,145,154,154,138,199,143, 31,131, 82,138,190,125,251, 74,154, 55,109,218,104,225,162, 69, 15, + 8, 33, 45,245, 33, 91,198,150,214, 88,221, 38,111, 47,218, 95, 34, 83, 11,254, 7, 59, 7,244, 40,188,102, 89,108, 38, 0, 64, + 42,149, 22,110, 72,252, 5,104,217,177, 99, 71, 17, 0,140, 25, 51, 38, 43, 59, 59,219, 23,192, 97, 74,169, 94, 59,173,202,237, +106,120, 89, 59, 56,158,255,125,251,106, 89, 61, 55,119,104,117, 12,162, 62,198, 67, 32, 52,135,179,179, 8,163,134,117, 22,182, +107,101,105,189,114,249,206, 11,198, 54, 53,250,228, 38,135, 93, 41,205,150,185,185,249,254, 99,199,142,225,248,241,227, 0,128, +176,176, 48,184,187,187, 27,151,151,134,144,144,144,106,189,122,245, 58, 10,160,122,121,215, 22, 15,140, 47,145, 72,208,166, 77, + 27,212,174, 93, 27,103,207,158,109, 15,224,175,175,173,128,202, 59,119, 32, 15, 12, 4,252, 43, 62,120, 33,132, 84,109,220,216, +245,225,197, 11, 7,173, 47, 92, 12,197,218,181,123,240,254,125,158,208, 86,173, 90, 53, 12, 29, 50, 64, 24, 28, 28, 80,167,127, +255,161, 1,132,144, 54,148,210, 48, 61,204, 46,221,181,107,215,252, 42, 85,170,160,127,255,254, 3,234,212,169, 99,111,106,106, +138, 29, 59,118,192,193,193,161,154, 70,163,121,119,246,236, 89,199,143, 31, 63, 98,234,212,169, 0, 48,171, 52, 67,237,187,180, + 95, 40,233,233,209,182,102,227, 17,144,155, 58, 96,215,145, 99,120,243,108,127, 91,181, 54,116,161,239,100,167,225, 74, 42, 25, +233,236,110,226, 83,185,137,167, 85,245, 58,189,224,218,248,185,181,138,189,251, 97,209,164,106,126, 2,169,106,255,226, 53,241, +169,159,221,243,128, 63,249,117,179, 94, 91,134, 92, 67, 42,165,139,185,124,130, 85,216, 32,177, 20,189,218,181,107, 87, 88,112, +145,145,145, 80,171,213,240,240,240,224,105, 52, 26, 47, 61,243,181,198,119,223,125,119,239,226,197,139, 86, 53,106,212,248,100, + 75, 24,123, 43,243, 46,254,167, 54, 76, 93,185,241, 80, 45,219,218,125, 50,146, 94,157, 14, 46,143,100,181,110,209,248,250,165, + 83, 7,229, 36, 39, 6, 98,243, 20,128, 75, 69,248,209, 63, 64,140, 44, 49,104,194, 76,129, 87,199, 14, 78,157,187,245,187, 78, + 8,233, 72, 41,125, 98,232,107, 12, 48,224,127, 90,213,162,255,109,247, 84, 72,180,138,176,200, 79,192, 81,174,190,157,173,149, +108,195,154,125, 79,248, 90,141,198,216,220, 76, 35, 52, 51,229,136,137, 25, 95,171,209,229,184, 86,115, 21,115,148,171, 95,138, +148,118,189,248,168, 91, 38,147,157,250,235,175,191,108,133, 66, 33, 56,142,131,141,141, 13, 34, 34, 34,144,145,145,129,236,236, +108,188, 15, 13, 69, 21,151, 74, 88,226, 51,215, 97,234, 92,159, 83,132,144, 38, 69,221,136, 37, 45, 27,101,117,218,226,141,123, +105,155, 8,127,242, 94,150,205, 82, 16, 17, 29, 29, 13,185, 92,142,186,117,235,202,239,223,191,127,183, 52,146, 85,220,166,165, +165,155,137, 64, 46, 59,190,237,247, 69, 50,173, 46, 4,175,194,211, 80,179, 74, 91,216, 89,185, 32, 62, 77,131,135,143,255, 66, + 72,208, 97,184, 57,185, 96,242,132, 14, 82,191,213,127, 30,179,176,168,234,146,158,254, 33,171, 36,155, 89, 89, 89,242,170, 85, +171,194,197, 37,111,223, 51,150,101,241,234,213, 43,176, 44, 91,120, 92,244,125,223,201,155, 96,178,162, 48,226,135, 31,144,154, +154, 42, 47,201,166,144, 15,102,230,184,161, 2,153, 16, 16, 27, 91,106,114,114,114, 10,213, 65,173, 86,139, 23, 47, 94,160,101, +203,150,158, 39, 78,156,240, 47, 71, 66,213, 43, 63,181,192,111, 27,247,238,221, 52, 44, 51,147, 7, 0,187, 9,225,180,148,254, +166,111, 93,178,181, 21,158,188,124,233,128, 53,159,247, 26,150,102,191,226,241,227, 40,104,181,121,233, 77, 77, 77,194,148, 73, + 89, 16, 9, 77,112,246,236, 33, 43, 15,143, 54, 39,243, 93,103, 92, 57,233,148, 94,186,116, 9, 83,166, 76,193,171, 87,175, 28, +249,124, 62, 30, 61,122, 4,153, 76,134, 53,107,214,240, 61, 60, 60, 28,141,141,141,113,249,242,101, 36, 38, 38,146,178,210,121, +251,202,237, 21,153,239,111, 45,252, 72, 46,119,221,117,228, 24,126, 28, 50, 8,246, 52,252,174,153, 27, 89,241, 93,207,214,191, + 80,126,165, 30,198, 38,245, 45,220,235,246,132, 72, 44,199,228,159,151, 33, 44,228,156,133, 34, 59,104, 18, 97, 99, 42, 33,127, +239,191, 79, 54, 85, 62,209,159,221,116, 36,160,241, 53,151, 39,174,142,141,199, 63, 2, 16,244, 55,209,170, 38, 32, 60,214,172, + 64,189,124,247,238, 29,222,191,127, 15,129, 64, 0,165, 82, 9,134, 97, 74, 76,167,147,147,211,120,134, 97,126,201, 47,231,125, + 14, 14, 14,163, 15, 30, 60,104, 85,148,104, 23, 40, 89,105, 25, 89,233, 1, 79, 94,190,153, 57,190,127,251, 59, 15, 67, 98,204, + 27,244,142,206, 8, 60,147, 89, 74, 25, 73,101, 98,241,201,203,167, 15,201,117, 31,110,194,216,163, 61,132,114,119,176,186, 56, + 40,210,115,145,253, 62, 1,234,223,183,160,225,164, 25, 56,119,230, 79,121,157,122, 77, 78, 16, 66,220, 41,165,154, 47,120, 54, + 43, 34,241, 27,108, 26,108, 26,108,254, 27,218, 44,139,139, 0,104, 12,192, 46,255,115, 42,242,166,204, 88, 3, 72, 65,222,118, + 96,118, 0, 52, 0,196, 69,126, 83,252,184,232,181,197,143,139,126, 78,205,255,108,155,255,254, 4, 64, 90, 57,131, 74, 7, 0, +222,200,155,155,229,157,159, 71,250, 69,134, 39,132,151,197,178,156, 68,100, 99,171, 26, 51,176, 99,189,171,215,159,190, 48,178, + 54, 21,116,105,223,200,243,113,240,135, 7,132, 71,116,132,240,244,154,247,193,231,243, 7,109,216,176,161,158,169,169, 41, 56, +142,131,153,153, 25,146,147,147,161,209,104,144,153,153, 9,117,118, 22,180,217, 89, 8,140,137, 68,107,207,246,232,215,245, 59, +143, 67,103,254, 26, 4,224,104, 89,118, 29,235, 55, 42, 84,178,150, 85,182,250, 91,154,136,201, 40, 36, 93,191, 54,114,135, 72, + 46, 71,231,153, 62, 95, 83,177,158,139,197,226, 75,125,251,246,237, 54,123,246,108, 94, 66, 66,194,101, 66, 72,107, 74,105,185, +110, 83,173, 68, 58,125,226,244, 30, 22, 22,114,138, 19,215,254, 66,187, 70, 67, 96, 36,230, 35, 53, 75, 11, 66,128,208,151,167, + 64,136, 37,130,194, 18,208,182,161, 41,190,235,226, 33, 63,243,103,232,108,252, 61, 63,232,179,162, 73, 79, 79, 71, 82, 82, 18, +116, 58, 29,116, 58, 29,250, 15, 24,128, 3,251,247, 35, 55, 55, 23, 74,165, 18, 26,141, 6, 44,203,130,199,227,225,218,249, 19, +136,249, 16,138, 86, 45, 91,162, 52, 73,118,223,115, 42, 36,132, 60,124,243,230, 13, 66, 67, 67, 17, 27, 27, 11,169, 84, 10,123, +123,123, 44, 91,182, 12,106,117,222, 30,101, 3, 6, 12,240, 4, 16,252,181, 15,212,123, 96,103, 4,203, 46,236,118,250,180,237, +253,211,167,185,135,231,206,197, 74,178,179,119,232,243, 91,145, 8,253, 87,255, 54,161,166,177,177, 49, 98,163, 55,160, 86, 45, + 17,102,205,176,130,239,175, 41, 0,128,169, 83,156,209,180,137, 53,178, 50,254,132,181,237,124,108,218, 52,205,109,228,200,117, + 63, 0,216, 87,142,233,133,127,253,245, 87, 63,119,119,119,167,231,207,159, 19,177, 88, 12,153, 76, 6,153, 76, 6,169, 84,138, +164,164, 36, 68, 68, 68,208,213,171, 87,199, 33,207,181, 88, 42,242,221,131,221,102,118,115,184,244,230,217,254,182, 78,252, 15, +129,253, 38,183,137, 12,122,248, 60,251,234,181,251,203, 25,149, 52, 38, 35,246,250,220,170, 77,159, 91, 79,154,179, 20, 91, 86, + 47,198,155, 71,119,210,236, 92,178,182,202,136,122, 95,243,206, 37,168,100,237,151, 10, 38, 45, 26,200,140, 31,217,207,252,156, + 93,192,248,139, 2,146,252, 49,229,217, 26, 68, 60, 87, 74,170, 55, 26, 94,163, 26, 79,115,243,230, 77, 89,187,118,237,160, 82, +169, 10,149,201,131, 7, 15,114, 12,195,148,232,142,214,106,181,191,196,197,197, 57, 40,149, 74,116,237,218,117,234,154, 53,107, +140, 11,246,168, 99, 89,246, 19, 37,107,197,250, 3, 87,166,255,178,245,214,149,163,191, 58,174,240, 25,221,126,216,228,149,183, + 80,202, 62,146, 2, 30,111,210,185,211,123,236,165, 22, 58,200, 44,191,131, 42, 81,137, 55, 59,127,132, 34, 75,133,166, 43,150, + 2, 16, 67,163,227, 97, 71,207,254, 16, 90, 57, 98,241,216,209,142, 11,118,236,154, 0, 96,131, 97, 92,111,128, 1, 6, 20,131, + 29, 33,228, 60, 0,248,248,248,204,247,245,245,125, 73, 8, 57, 79, 41,237,145, 79,116,206, 83, 74,123, 20, 92,147,223,103,127, +118, 92,112,109,241,227,226,159,231,205,155, 87,199,207,207,111, 85,203,150, 45,143, 6, 4, 4,124, 40,143,104, 33,111,255,231, +157,197,183,226, 1,242, 87, 29,122,123,123,147,162,239,159, 40, 90, 28,119,231,221,135, 72,197,119,157,154, 59,159,247, 15,126, + 50,106,148,119,199, 65, 61,219,117,137,136, 78, 13,117,115,181,183,126,249, 50,216,148,227,184, 59,250,228,146, 68, 34,233,209, +161, 67, 7, 65,122,122, 58,140,140,140,144,156,156,140,184,184, 56,104,181, 90,168, 50, 51,160,206,204,128, 42, 35, 29,218,204, +116,188,127,250, 24,245,221,170, 73,242, 39,203,151, 71,128, 74, 84,170,138, 42, 91, 98, 19, 19, 72, 76, 76, 64, 42,232, 54, 36, +132,124,111, 97, 97,241,144, 16,178, 48,191, 83,154, 52,119,238,220, 20,142,227,176,114,229, 74, 83,185, 92,126,130, 16, 34, 41, +207,142,137, 13,191, 71,203,134,117,121,175, 35,130,208,166,193, 8,212,168,218, 29, 17,137, 74,164,100,107,145,148,161, 69,211, +118,155, 81,185,193, 82, 84,106,232,139,208,168, 52, 56, 58,185,243, 32,144,148,185,249,115, 76, 76,204, 39,199, 71,143, 28,129, + 66,161,128,155,155, 27,134, 12, 25,130,185,115,231, 98,200,144, 33,112,116,116,196,176,129,189,176,120,241, 98,124,252,248,177, +188,164,170,107,212,168,161,118,117,117, 85,187,186,186,170,181, 90, 45,114,114,114,144,145,145, 81, 60,191,167, 85,248, 41,177, +179,155,231,224,224, 16,100,103,103,247, 82, 42,149, 94,124, 65,200,107,149,171,171, 93,235,222,189, 73,237,129, 3,249, 81, 50, + 25,241, 7,228,250,216,178,182, 20,122,123,117,232, 38,206, 72,223, 3, 32, 79,164, 26, 61,202, 6,247,252,235,224,254,221, 38, +152, 50,201, 13,132, 39, 5,225,137,161,200,189,137,230,205, 90,138,204,205, 73,143,114,202,122, 40,128, 23,173, 91,183,118,156, + 60,121, 50,145, 72, 36,152, 58,117,170,118,236,216,177,111,135, 12, 25,242,246,198,141, 27,172,171,171, 43, 42, 85,170, 68, 42, + 85,170,228, 0,224, 69,254,111,202,132,169, 27, 89,161,214,134,222, 53,119, 55,254,192,194,186, 85,142, 78,210,127,241,154,248, +212,229, 91,195,215, 70,188, 81, 84,123,243,232, 78,234,219,144,115, 92,196,147,219, 41,241,111,179,171, 45,223, 26,190,118,222, +150,184, 18, 31,106,127,127,112,167,206,251,107, 21,185, 10, 65,239,158, 94,138,241, 99, 6,213,176,148,215, 57, 8,167,239, 26, + 84,118,113, 30,182,120,213, 38,237,216, 9,211,181,187,255,216, 67,179,179,179,145,149,149,133, 77,155, 54, 49,231,206,157,139, + 99, 89,118,122,105, 99, 32, 0,208,233,116, 24, 63,126,188,177,169,169, 41, 98, 98, 98, 10, 21, 81, 0, 72, 72, 78, 13,190,255, + 36,228,245,204,159, 6,120,230,170,213,234, 43,183,159,134,214,118,119,117, 38,132,150,186, 16, 69, 44, 20,118,110,210,188, 57, +159,210, 12, 16,129, 11,222,239, 95,141,172,143,105,200, 74, 74, 3, 95,104, 12, 6, 18,232, 56, 49,204,235, 55, 67,216,147,231, +112,178,177, 19, 72,132, 66,195,214, 89, 6, 24,240, 63,138,178,184, 72, 81,178,228,231,231,183,170,172,243, 69,222, 53,197,142, + 11,137, 84,113, 18, 86,244, 51, 0,248,249,249,173,162,148,246, 8, 8, 8, 56, 2, 64,169, 39, 95, 24, 87,240, 94, 52, 74,124, +185,172,131,175,210,248,206,158,187, 16, 22,102, 50,179,102,141,220,237,207, 94,246,127,122, 39,224,105,104,229, 74,214, 54, 84, +167,177,248,109,221, 22,103,162, 80,234, 59, 25,220,195,218,218, 26, 90,173, 22,239,222,189, 67,108,108, 44,180, 90, 45,152,220, + 92,168, 51, 50,160, 74, 79, 7,155,155, 13, 17,203, 66,153,156, 4, 43, 35, 41,240,247,138,196,242,110,176, 68,162, 85,240, 46, + 53, 53,133,196,196, 20, 60,161,176, 68,183, 98, 41, 54, 27, 55,107,214,236,120, 72, 72, 72,243, 78,157, 58, 45, 39,132,152, 81, + 74,163,226,226,226, 58, 46, 90,180, 72,109,103,103,135,241,227,199,215, 4, 48,162, 92,146, 41,214,120,184,218,215, 68,141,106, + 35, 80,185, 82, 7,100,228,234,144,156,165, 67, 82,134, 22, 59, 54,183,196,201,221,205,112,239,100, 91,132, 92,233,140, 12,157, + 61,228,142,223,131,178,154, 58,101,217,188,118,237, 26,150, 45, 91,134,229,203,151, 99,229,202,149, 88,190,124, 57,226,226,226, + 80,183,110, 93, 68, 71, 71,227,210,165, 75, 72, 72, 72,128,181,181, 53, 30, 63,126,140,245,235,215,227,222,189,123,250, 40,119, +122, 93, 67, 8,169,144, 47,157, 97,152,145, 9,189,123,215, 75,180,180,172,221,168, 81,163,110, 83,167, 78,173,214,186,117,235, +194,243,213,170, 85,115,145,201,100, 31, 9, 33,187, 9, 33, 13,203,178,197, 1,141,108,108,234, 66,163,126,157, 95, 86, 66, 16, + 34, 69,135,206,161,104,221,246, 41,180, 58, 17,120, 68, 2, 30, 79, 10,134, 73,133,133,133, 35, 40, 37,117,203, 73,226,162,228, +228,100,247,235,215,175,243, 34, 34, 34, 32,149, 74, 1, 32,114,201,146, 37, 91,214,174, 93,251,202,202,202,138, 61,127,254, 60, +206,156, 57,131, 30, 61,122,240,199,142, 29,235, 94,169, 82,165,237,229,221,247,226,141,241, 15, 14,175,187, 52, 88,168,179,104, + 40,149, 85,174,130, 92,249,247,147,218,219, 24, 3,192,165,247,239,179,109, 93,178,252,114,179,131,162,205,157,115,126, 45,111, + 34, 60,165,139,185,103,111, 95, 63, 60,124,250,114,102, 82, 98,186,176, 81,189, 58, 74,223,101,115, 68,149,171, 84,255,109,241, +220,159,236,227,178,164, 25,157,167, 94,122,125,234,242,227,156,225,163,126,100,198,140,155,172,186,116,249,218,105,142,227,234, +149,182,226,144,227, 56, 36, 36, 36,224,229,203,151, 8, 15, 15, 71,114,114, 50, 82, 82, 82,144,157,157, 93,232,110, 52,202,206, +186,176,101,239,185, 64, 99,153,204,168,121, 61,119,151, 71,207, 95, 37, 25,203,100, 70,238, 85, 92,106, 16,178,180,196,118,132, +101,217,122, 82, 35, 25, 0,130,140,144, 59,200, 73,207, 65, 78, 70, 14,178,211,114,160,214,242,161, 82,243,160,212,240,224,234, +249, 29,114,114, 85,200, 73,205, 4,199,178, 13, 12,221,141, 1, 6, 24, 80, 70,191,124,222,199,199,103,190,158,151,235,237,222, + 44, 78,188,124,124,124,230, 19, 66,206,207,155, 55,175, 14,244,152,211, 76, 41,221, 89,252, 85,112,174,220,240, 14, 41, 41, 97, + 57,166, 54,181,251,206,248,249,151, 75, 71,254,216,108,171, 86, 43,162,173, 44,228,172,220, 72,108, 61,102,252, 74,100,231,164, +247,201, 73,211,127,149, 84,122,122, 58, 62,124,248, 0,153, 76, 6,145, 80, 8, 86,169, 4,171,204,133, 50, 61, 21, 60,173, 26, + 34,150,133,165,145, 12,174,142,246,168,108,103,175,151,205,119, 55,175, 22, 78,124, 47,234, 46, 92,221,204, 3, 98, 99, 57,196, + 38,114, 76, 60,127, 27, 0, 32, 18,137,128, 69,203,245, 41, 76,107, 39, 39,167,191, 14, 31, 62, 44, 74, 78, 78,198,139, 23, 47, + 2, 41,165,153,132, 16, 19, 0, 92,104,104,232,245,144,144,144, 30,238,238,238, 0,224, 86,158,189,172, 20, 30,171, 99, 40, 98, + 62, 70, 34, 34,246, 57, 44,205,170, 66,104, 84, 3, 73, 25, 90, 72,100, 85,161, 83,255,237,125, 84,101, 69, 65,169,213,111, 97, +164, 70,163, 1,195, 48, 96, 24, 6, 26,141, 6,227,198,141,195,253,128, 0, 28, 61,115, 3, 31,222,135,161,102, 21,123,252,240, +195,112, 52,107,214, 12, 1, 1, 1,101,218, 26,217,136,232, 22,180,131, 96, 93, 55, 30,196,114, 43,117,139,185, 87, 30,233, 67, +182, 40,165, 68,143,252, 92,219,163, 71,143,234, 97,185,185,120,249,250, 53, 58, 45, 89, 2, 0,184,120,241,226, 39,247, 50,115, +230, 76,241,171, 87,175,198, 60,125,250,116, 12, 33,100, 29,165,180,228,201,230, 20,184,112,225, 1,126,250,233, 21,146,147,243, +230,107, 31, 59,242, 55, 47,141,248,160, 69, 87,239, 60,143,150,185,185, 57,214,173,171,171, 87,126,178, 44,139,157, 59,119, 22, +186, 11, 1, 64, 32, 16,180,158, 57,115,102,223,146,174,175, 94,189,186,168, 60,155, 51, 7, 56, 75, 95, 68,201, 38,153, 85,175, + 92,199,212,186, 62, 82,117,207,235, 62,143, 75,152, 50,115,128,243,134,117, 39, 98, 85, 50,162,222, 71,216,152, 74, 2,169,106, +191, 62,105,124,127,105,147,198,188,242,168,253, 31,147,179, 22, 76,254,113,168,149,169,185,109,238,238, 45,190, 22, 60, 62,143, +254,245, 84,155, 81,167,154,149,249,247, 45, 54,230,252, 52, 99,209,115, 13, 19, 51, 25, 49,127,133,149, 21,226,130,101, 89,196, +199,199, 35, 57, 57, 25,209,209,209, 72, 73, 73,201,127,246, 83, 62, 91,185, 90,193, 6, 17,202,232,104, 68,157,222,141,202,195, +135,163,233,242,101, 96, 57, 1,148, 10, 22,235, 90,117, 68,122,166, 18,106,142,192,177,113, 43,252,120,241, 46,120,148, 5,118, +108, 53,244, 36, 6, 24,240, 63, 10,125,194, 59, 20, 16, 34, 95, 95,223, 30,223,250,255,139,146, 45, 95, 95,223,151,190,190,190, +122,255, 87,113,151, 97,209,227,114,195, 59, 0, 64, 86,242,171,112, 43,215,250,241,185,202, 92, 35, 59, 91, 27,181,145, 84,194, +101,102,101,243,159, 7, 7,106,115, 18,222,189,169,192,125,132,134,132,132,212,141,143,143, 71,116, 84, 20, 24,101, 46,120,106, + 13,168, 74,129, 78,109, 90, 65, 10, 64,202, 35, 16,113, 90, 8,248, 98,100,231,100, 1, 64,104,185,157,163, 78,247,153,178, 69, + 8,129,216,196, 4, 98, 99, 99,136,229, 38,159, 40, 92,250, 40, 54, 18,137,228,240,137, 19, 39, 28,156,156,156,176,108,217, 50, + 56, 59, 59,215,170, 87,175,158,162,109,219,182, 50, 59, 59, 59,212,174, 93, 27,173, 90,181,194,165, 75,151, 0,160,220,152, 82, + 58, 70, 26,244, 38, 18,173, 83,210, 2,112,247,246,239,208, 40,213,104,228,249, 59,180,130,202,176,169,179, 20,220,187,131, 80, +124, 60,155,167, 30,216,247, 68,108,116, 36, 8, 95,252, 82, 95,229,169,224,115, 96, 96, 32,142,156,245,135,131,171, 7,162,223, +190,198,235, 91,215,113,223,198, 10,174, 30,181, 11,221, 64,165,166,145,133, 96,197,214,194,240, 14,146,180,180, 52,137,165,165, +165,186, 32,239, 28, 28, 28,190,134,108, 13,157, 61,123, 54, 50,132, 66,192,219, 27,162,240,112,104,181, 90,180,104,209, 2, 77, +155, 54, 5, 0,180,104,209, 2, 2,129, 0,245,235,215,135,163,163, 35,182,110,221, 58, 20,165,172,234,227, 17,188, 96,152,212, + 90,213,170, 85, 43, 36, 90,251, 15, 36,227,249,211,206, 32, 16, 99,211,150,191,163, 57,184,184,184,224, 99, 66, 56, 8,161, 33, +229,164,113,185,189,189,253, 34, 7, 7,135,106,107,215,174,229, 75,165, 82, 76,152, 48,161,106, 78, 78, 78,229,124, 41, 25,243, +230,205,203, 83,169, 22, 47,198,146, 37, 75,160, 86,171, 21,165, 25, 59,176,190,190, 99, 82, 26, 55,198,206,222,169,143,151,117, +229,122, 29,186,116, 66, 85,247, 14,232,208, 37, 26, 0, 86, 89, 10, 34, 7,174, 94, 88,247,180,117, 37,203, 61, 87, 47, 95, 91, +220,198,179,195, 2,159,241, 22, 43,252,118,164,151, 59,231, 49, 51,106, 95,246, 27,241,160,245,155,183, 31, 88,255,203,188,105, +210,232,100, 77,122, 92, 58,205,145, 75, 4,114, 55, 59, 34,159,242,243,242, 15,241,241,225,179, 16,115,185,220,149,150, 28,199, + 33, 60, 60,188,112, 78,159, 74,165, 66,110,110, 46, 98, 98, 98, 10,235,140,210,216,180,235,228, 81, 61, 27,228, 42,149,138, 71, +193,111,163, 23, 78, 29,214, 50, 87,169, 84,188,141,136, 14,163,116, 99,137,108,140,199,227, 5, 43,178, 21,157, 20, 25, 42, 36, +191,120, 3,231,142,174,208, 49, 4, 26,134, 69,114,106, 54,212, 12,192,242,132,168, 51,240, 7,176, 68,128,148,248, 56,240,248, +252, 64, 67,119, 99,128, 1,255,179, 40, 55,188, 3, 33,228,124,203,150, 45,143, 22, 85,157, 10, 62, 3, 80, 3, 40,107, 42, 79, +114, 81, 50, 85,224, 78, 44,237,127,138,217,213,119,128,249,217, 28,173,114,195, 59,228,255,144, 52,168,231,234,184,122,241, 48, +103,142, 97,106, 38,165, 36, 50, 2,129, 68, 88,201, 76,153, 80,145, 28, 84,171,213,231,175, 95,191,222,187,115,231,206,146,183, +193,129,208,100,102, 66,147,153, 1, 33,199,192, 82,214, 4, 60,173, 26, 68,163,129, 83, 45, 14,170,108, 25,252,239,135,232,212, +106,245,121,125,137, 22,143,207,255,116, 94,150, 92, 14,137,137, 41, 36,114,121,113,215, 34, 41, 39,163,140,122,245,234,213,177, + 69,139, 22,160,148, 98,231,206,157,208,106,181, 98,173, 86, 11,141, 70, 3,173, 86,139,172,172, 44, 28, 56,112, 0,219,182,109, +187, 15, 96,111,185,157, 25,163,185,126,229,218,205,102,163,135,245, 16, 94, 60,191, 14,140,134,133,146, 56, 35, 55, 87,135, 28, +141, 17, 88,171,225, 64,226, 5,240, 5, 82,180,172, 95, 21,103,255, 60,165, 5,163,190,161, 39, 11,255, 68, 21,138,137,142, 68, +236,251, 48,200,179, 62,194,198,212, 8,138,240, 48, 52,250, 97,196, 23,169, 19,149, 42, 85, 2,199,113,240,242,242, 42,156, 92, +253,165,100, 43, 53, 53, 21,231,206,157, 67,139, 22, 45,224,233,233,137,184,184, 56,132,135,135,163,123,247,238,133,215, 4, 6, + 6,226,249,243,231,112,115, 43, 91, 36, 76, 73,211, 93,140,141,121, 49,224,251,239,191, 23, 61,124,248, 16,148, 82,184,187,155, +194,212,196, 24,132, 39,129,135,135, 45,128,188, 49, 64,251,246,237,145,149, 21,206,164,167,211,139,229,228,227, 97, 66,200, 25, +141, 70,243,174, 93,187,118,142,239,223,191,199,140, 25, 51, 4,199,142, 29, 43,144,146,225,227,243,233, 98, 10,165,178,116,215, +125,205,122,181,230, 84,101, 44, 60,165,178,202, 85, 76,173,235,163,170,123, 7, 0, 64,231, 30,163, 81,181,186, 11,178, 82,130, +170,168,148,145,125, 68,130,116,139,160, 77,113,175,100,222,117, 71,169,146,110,191, 5,160, 79, 0, 96,170,124,123, 44, 49, 90, + 56,252,248,153,191, 46,141,239,222,163,151, 80,199, 50, 76, 93, 87,161,249,137,211, 23,146,226,162,162, 55, 34,250,114,200,223, +250, 95,153, 42, 30,155,149,149, 5, 99, 99, 99,132,132,132,168,189,189,189, 37, 60, 30, 15,239,222,189, 43, 36, 90,182,214,150, +181, 91, 55,173, 91,107,197,250, 3, 87,140, 37, 18, 73,151,246, 77, 60, 94,189,141,138,165,148, 68,150,170,182,234,116,215,130, + 95, 4,122,217, 56, 86,231,135,223,126, 8,171,182,221,161, 86,243,160,212,112, 80, 51, 0,195, 23,193,161, 97,115,152,187,121, +128, 2,120,242,240,190, 78,173,211, 93, 49,244, 53, 6, 24,240, 63,173,106,209,178, 72, 82,254,231, 52, 0,145,190,190,190, 41, + 69,212,166,100, 0,129, 0, 26,228, 95,151, 92,236,119,201,200, 91, 61,216,180,136,157,228, 34,132,171,232,103, 77,177,107,244, + 26, 0, 22,157,163, 85, 34,209, 42, 99, 73, 37,172,173,173,109, 27, 53,106,226,182,235,143,227,160,148,226,205,243, 53, 72, 79, +122,141, 69,171, 30,184, 57, 59, 59,123,198,198,198,250,235,147, 8,150,101,143,237,217,179,103, 86,243,198,141, 26, 85,113,118, + 70, 96,100, 4, 68,148,133,136,101,193,211,170, 33, 96, 53,112,174,203,130, 71,228,136,143,207,132,223,225,227, 33, 44,203, 30, + 43,207,110,173,238,189,176, 44, 54, 19,132, 16,172,109, 89, 23, 98, 19, 57, 68,198,114, 76,252,235,102, 33,185, 58,191,108, 30, +196,114, 57,220,154,151, 31, 16,158, 82,170, 48, 49, 49,121, 26, 28, 28,220,180,110,221,186,152, 53,107, 22, 34, 35, 35,193,113, + 28, 18, 19, 19, 85, 9, 9, 9,113,201,201,201,145, 0, 78, 3,216,165, 79,228,113,145, 90,181,225,252,201,253,147, 91,182,241, +180,254,190,207, 54,156,249,115, 38, 50, 50,179,160, 96,100,200, 85, 49,200, 85,243, 97,105, 85, 15,205,235,215, 71,124, 92, 18, + 94, 62,188,146, 35, 80, 43,214, 84,164,130, 18, 66,240,252,249,115, 84,115, 52, 65,216, 93,127, 88, 27, 9,209,192,209, 30,142, +173,219, 20,198,151, 42, 11, 66, 62,152,161, 67,135, 22, 70,134,255,238,187,239, 34,134, 15, 31,238, 48,115,230, 76,252,241,199, + 31,184,127,255,254,103, 19,180, 61, 61, 61,113,231,206,157,165, 0, 22,151, 39,234,105, 52, 26,212,170, 85, 11, 79,158, 60,193, +245,235,215,209,161, 67, 7,120,122,122, 34, 40, 40, 8, 87,175, 94,197,243,231,207, 65, 8,129,149,149, 21,116,121,228, 89, 87, +154, 49,173, 22, 39,126,253,109,207,252,245,235,183,213, 25, 54,108, 24, 78,158, 60,138,209,163,106,130,240, 36, 32, 68,130, 94, + 61,107, 98,217,242, 39,104,222,188, 61,172,173,133, 88,191,238,236, 7,165,146, 61,160, 71, 54,174,184,122,245,170,163, 74,165, + 66, 70, 70, 6,149,203,229, 36, 53, 53,111, 69,107, 73,138,150, 66,161,144,150,102, 40,248, 89,232,154,140,108,154, 78,115,158, +247, 73, 99,158,215,235,208, 37, 6,157,123,140,194,181,243,123,113,243,202,117, 88, 10, 34, 35, 96,156,125, 41, 37, 34, 37, 43, + 33,215,125,187, 71,227,177,252,216,220, 43,219,167,126,111,193,119,112,224, 78,248,108,203,204, 40,163,142, 82, 66, 8, 73,123, +117,240,175,211, 20,189, 90,181,108, 94,189,174,139,131, 56, 61, 37,137,254,121,246, 82,136, 54,226,228,185, 2,130, 85,222, 46, + 11,148,210,101, 62, 62, 62,191,228,127,222,183,112,225,194,177,126,126,126, 54, 31, 63,126, 44,156,163,149,148,146,118,179,149, +247, 20, 54, 53, 35, 83,179,103,253,207,253,101, 82,137,120,161,223,158,219, 58, 62, 30,150,102,151,225,184,173, 3,103, 44,154, +246,246,205,115,167,202, 50, 49,206,254,188, 24,129, 87,111, 65,199, 19,225,167,235,143,160,214,178,200, 72, 73,197,141, 49,147, + 32,183,179,192,182,219, 39, 19, 57,142,251,221,208,213, 24, 96,192,255, 46,202,224, 34, 37,197,216, 75,212,227,186, 39,122,216, +249,106, 20, 87,177,138, 66,175, 37,120, 41, 41, 41, 73,119,238, 60,194,237,243, 43,224,127,126, 5, 94, 62, 15, 68,124,156, 6, +113,137, 42,152,154,154, 62, 40,163,227,239, 84,188,115, 80, 40, 20,125, 23, 46,250,229,163, 84,102,132,118, 29, 59,194,222,198, + 22, 70, 34, 33,248, 12, 7, 62, 17, 34, 39,217, 28, 97, 65, 10,204,221,115, 48, 41, 71,161,232, 91,188,147, 40,110,179, 40,201, + 32,132, 64, 98,106, 2,177,220, 4, 18, 19,211, 79,220,136, 82, 83, 83, 72, 77, 76, 33, 16,139, 75,154, 52,255,153,205,156,156, +156,126,253,251,247, 79,207,204,204,196,216,177, 99,225,239,239,255,252,202,149, 43,166,129,129,129,178,164,164,164,234,148,210, +239, 40,165, 59, 74, 35, 89,197,109,166,165,189,207,166,140,122,144,239, 47,211,149, 42,198, 10, 3, 70, 28,131, 49, 47, 6, 12, +203,129, 2,112,180, 20,163,117,167,229, 72,210,180,194,177,237, 43, 21,156, 86, 53,172,104, 12,173,226, 54, 41,165,212,206,206, +238,179, 60,184,126,253, 58, 6,244,239,135, 46,125,122,195,166, 74, 53,216,118,234,142, 46, 99,127,194,246,237,219,193,227,241, + 96,109,109,253,137,194, 81,212,230,190,231, 84,120, 56,136,146,195, 65,148,236,125, 70, 5, 0,126, 56,120,240,224,175, 13, 26, + 52,184,117,255,254,253, 53, 0, 6, 21,253,175, 34,105, 89, 82, 84,205, 42,165,140, 22, 76,155, 54, 77,249,246,237, 91, 24, 27, + 27,131, 97, 24,220,191,127, 31,219,182,109,195,218,181,107,241,252,249,115, 88, 89, 89,193,205,205, 13,106,181, 26, 79,158, 60, + 81, 2, 88, 80, 70, 93,226,146,147,153,126,155, 54,249,165,246,232,209, 22,123,246,108,129,189,125, 43, 8, 5,246, 16, 8,109, + 96, 44,175,133,221,187,126, 69,183,110,141,240,215,217,227,105, 41,169, 76,191,226, 81,220, 75, 73,167,234,209,163, 71,216,190, +125, 59,250,247,239, 31, 55, 96,192, 0, 54, 51, 51,179, 80,209, 42,216,141,125, 73,254, 28, 51,181, 90, 45, 41,205,230,216,159, +131,227,230,172, 8, 89,150,248, 49,174,133,255,173, 7, 67,111, 94,185,142, 15,111,111,226,230,149,235,184,123, 51,192, 39,241, + 99, 92,139, 70,205,106,136,250,142,157, 60,103,255,169,147,124,185,169, 3,246,159, 58,201, 31, 50,101,250,202, 38, 93, 58, 44, + 40,175,206,231,151, 35,205, 73, 74,156,183,106,205,230, 28, 70,171,226,173,222,184, 53, 94,153,156,176, 0, 5, 75, 49, 75, 81, +179,138,218, 84, 40, 20, 59,148, 74,165,163, 82,169,116, 84,169, 84, 11, 34, 35, 35,219,205,154, 53, 43,153,101,217, 66,181, 52, +233,229,217, 7,161,119,247,174,178,181,182,144,181,106, 90,167,230,186, 29,127,222,142,142, 73, 60, 84, 16, 67,171,148, 50, 82, +229, 40, 85,253,122,247, 29,158,155,145,174, 70,203,233, 62,224,164,114,168, 89, 64, 71,249, 96,136, 0,193, 43,214, 65,102,105, +130,195, 17,207, 20,153, 58,109,191,162, 49,180,202,185,247, 47,134,193,166,193,166,193,230,191,167,205,255,100, 16, 66, 28,138, +238,117,152, 31, 87,235,111, 69,171,188, 37,149, 78, 78, 78,237,190,239,213, 9,237,123, 44, 4,165, 20,175,159,253,134,244,228, + 55,112,178,151, 32, 60, 58,171, 37, 0,127,125, 19, 67, 41,141, 38,132,180,152,182, 96,225,169, 1,223,117,244,168, 91,165,138, +164,114,101, 87, 24,219,218, 34, 37, 37, 25,247, 30,190,210,173, 60,114, 34, 36,159,100,233,179, 5, 15, 56,142,203,155,228, 14, +160,227,180,185, 32,124, 62,144, 31,198,161,160, 99,172,210,180, 21,136, 64, 0,150,114, 80,171,213, 84,143,116,198, 18, 66,250, + 13, 27, 54,236,198,249,243,231,121, 93,186,116,105,120,250,244,105,238,107, 10, 34, 39, 49,236,150,220,174, 70,143,149,243,198, + 31,107,209,161,183,169,123,157, 38,162, 38,149,249,208,234, 8,226,227,162,112,254,212, 99,237,171, 71, 87,178, 40,163, 26,148, +155, 92,246, 22, 60, 90,173, 54,186,122,245,234,118,219,183,111, 47,156, 12,207,178, 44, 82, 82, 82,240,224,193, 3,212,107,218, + 28, 30,163,198, 32, 57, 57, 25,155, 54,109,130,139,139, 11,122,246,236,137,180,180, 52, 48, 12, 19,173,103, 89,177, 0,174,228, +191, 62, 33,180,249,130, 10, 45,207,109,232,230,230, 38, 86,169, 84, 13, 29, 28, 28,248,132,144, 13, 26,141,102,228,188,121,243, + 28, 86,173, 90,133,154, 53,107, 34, 37, 37, 5,198,198,198,112,119,119, 71,114,114, 50, 30, 63,126,204, 42, 20,138,237, 0,150, + 81, 74,147,203, 73,223, 59, 66, 72,139,169, 83, 39,158,250,213,111,188,187, 74,221, 94,108,105,217, 6,148, 50, 72, 78,142, 68, +118,214,125,237,242,101,123,223, 39, 38,233,250, 82, 74,223,234, 89, 76,139, 39, 79,158, 12,228,111,193, 19, 30, 30,254,194,195, +195,195,189, 52, 69, 75, 31,172, 59, 17,171, 2,112,100,245,140, 86, 51,178, 82,130,220, 45, 5,145, 17, 45,234,114,155,214,157, +136, 85, 45,157, 97,190, 34, 37,210, 63, 44, 33,247,202,246,253,167, 78,242, 71,244,233,199, 58,203,223,250, 72,109,233,159, 29, +122,150, 91, 62,180, 97,195,134,149, 8, 73,171,154,148,250,230,233,232,177,227, 7,154,137,148, 23, 27, 56,167,186,241, 92, 26, + 73,159, 63,127, 30,161,239,158,161,197,236,134, 17, 66,218,205,155, 55,239, 10,165,244,147,185, 9, 73, 41,105, 55, 91,246,152, + 76, 51, 50, 50, 95, 36,189, 58, 27,172,135,173,199,132,144,142,117,235, 53, 58,249,235, 42, 63,187,246,211,102, 9,194,110,221, + 6, 88, 29,162,252,111,131,149,104,184,117, 1,215, 18, 51,181,218, 62,134,168,240, 6, 24, 96, 80,179,202,226, 34,255,238,201, + 47, 62, 25, 30,249,123, 31, 10,244,249,117,108,108,172,191, 91, 53,231,171, 97, 97,237,190,115,113,182, 1, 0,132, 71,196, 35, + 46, 81,125, 85, 95,183, 97, 9,100,171,201,193,115, 23, 7, 73, 36,146, 30, 36, 63,132, 3,253,130, 77,165, 25,134,137,173, 82, +165, 74, 41,103, 75, 14,245,196,178,108,162,158,233,188, 77, 8, 25,238,230,230,230, 23, 21, 21,117,138, 82,154,251,181, 37,145, +147, 24,118,203,210,210,173, 90,192,245,147,211, 31,222, 62,223,137, 50,154,122, 0, 64, 4,226, 10,109, 42,157,147,147, 51,126, +194,132, 9, 59,132, 66,161, 11,242,231,156, 21,204,193, 98, 89,150,175,213,106,165, 44,203,242, 1, 16, 30,143,199, 8,133, 66, +213,169, 83,167, 24,134, 97,162,213,106,245,248,175,144, 71, 43,244, 0, 92,188,120,177,178,133,133,197,119,132,144,254,148,210, + 90,217,217,217,234, 69,139, 22, 5,156, 56,113, 34,171, 74,149, 42, 93,189,189,189,137,165,165, 37,158, 60,121, 66, 83, 83, 83, +255, 4,176,128, 82, 26, 94,129,244,252, 31,123,215, 29, 30, 85,241,181,223,185,119,123,205,166,119, 2, 4, 82,232,132, 46,189, + 40, 72,148, 38, 69,164,119,196,130, 40, 8, 10, 74, 71,249,161, 32,162, 2,210, 17,149,170,244, 46, 93, 58, 82, 67, 11, 4,210, +219,166,103,251,189,243,253, 65,118, 93, 66,202,110, 8, 10,126,123,158,231,102,115,247,238,190, 59,125,222, 57,115,230,156, 88, + 66, 72,131,209, 99,126,120,211,195, 99, 89, 52,165,104, 0, 10, 66, 24, 92,201,201,225,119, 23, 22,114, 63, 21, 17, 70, 71,241, + 44,197, 52,105,179,174, 94,189,186, 26,128,176, 36, 27, 45,167, 68,158,191, 93,175,139,123,131, 40, 11,183,125,253, 77,130, 30, + 0, 62, 95,152,157, 3, 96,197,123, 61, 61,248, 27, 23, 86,204, 15, 84,223,158,244,205, 54,237, 42, 71,224,162,162,162, 66, 25, +134,233, 7,160,174,143, 36,187,166,183, 56,135, 35,132,182, 39,132,241, 2,112,185,118,237,218, 59, 1, 36, 84,176,158,111, 1, + 8, 41,254,126,218,181,223,255, 4,240,167,147, 88,103, 9, 33, 53, 63,248,104,194, 56,177, 80,248, 50, 56,174,254,172,223, 54, + 81, 87, 80,105,151,184,196, 37,255, 49,173,214,168,146,222, 23, 56, 10,112, 55, 54,161, 51, 0,132,133,133,209, 59,119,238, 56, + 61,225,150,180, 26,199, 35,143,239,191, 60, 13, 78, 70, 70, 70,227,103, 89,112,148,210,159, 1,252, 92,153,152, 69, 68,106,102, +209, 85,209,116, 93, 1,208,236,223,108, 84, 86,173, 22, 30, 5, 97, 46, 81, 94,121,229,149, 7, 38,147,233, 32,128,120, 66,136, + 6,128,214,100, 50,237, 51,155,205,169,132,144,198, 95,127,253,181,213,243,253, 44, 74,233,249, 10,166,131, 7,176,161,232,170, +236, 60,110, 8, 8, 8,152,224,233,233, 89, 67,175,215,139,245,122,189,200,126, 13, 32,147,201,210, 29,197,210,168,200, 26,145, + 32,203, 83,163, 34, 79, 16, 41,143, 64,108,209, 21, 92,141,240, 8,196, 22, 71,241, 46, 94,188, 24,219,176, 97,195,245, 12,195, + 84,163,148,250, 2,212,141, 82,164, 83, 74, 51, 4, 2, 65,226,245,235,215, 19,159,151, 1,168,136, 72, 45, 40,186, 92,226, 18, +151,184,228, 63, 37,101,217,104, 9,156, 5,187,125,251, 54,113, 21,169, 75,236,201, 86, 89,207,227,226,226, 12, 0, 78, 21, 93, +197,191,123, 30,192,235,207,123, 30,147,146,146,162, 42, 3,103,196,164, 43,137, 0,198, 55, 46, 33,180,243,231,139,181,121, 0, + 38,182,239,230, 28,230,165, 75,151, 30, 2,120,232,106,137, 46,113,137, 75, 92,242,239, 73, 73,218, 44,135, 99, 29,186,196, 37, + 46,113,137, 75, 92,226, 18,151,184,164,116,177,146,170,146,252,104, 17, 0,157, 74,249,146,195,174,235, 43,114,250,160, 60,124, + 23,166, 11,211,133,233,194,116, 97,186, 48, 93,152,255, 61,204,255,170,148, 68,178, 0,128, 84,224, 80,146, 51, 63,218,169,178, + 11,220,133,233,194,116, 97,186, 48, 93,152, 46, 76, 23,230,127, 15,243, 69, 39, 89, 37, 16, 78,215,214,161, 75, 92,226,146,255, +223,178,121,243,102,135,130,138,190, 57,105,197,107, 74,165,251,180,252,220,156, 47,126, 89, 48,108,155,245,253,222,189,123,115, +174, 82,116,137, 75, 92, 82, 33, 99,248,208,208,224,218, 12,199,183,164,148, 97, 41, 67,205, 36, 87,247,235, 93,173,246, 49,183, + 3, 85,170, 84,209, 8, 25,188, 78, 40, 85, 16,194,115, 60,203,156,140,141,141,191,238, 4, 3, 20,187,187,187,191, 35, 18,137, + 58, 25,141,198, 32,134, 97, 18, 12, 6,195,193,194,194,194, 37,197, 29, 23,254,155, 18, 17, 17,209,255,200,145, 35,154, 86,173, + 90, 25,100, 50,153, 69,167,211, 9,246,238,221, 43,121,245,213, 87,179,239,220,185, 83,161, 19,137,129,129,129, 29, 86,172, 88, + 81,189,115,231,206,168, 89,179,102, 65,191,126,253, 68, 45, 90,180, 16,141, 24, 49,226, 94, 98, 98,226, 97, 39,153,116,109, 66, +200, 58, 66, 8,203,243,252,160,162, 19,137,207,130,177, 51, 12,195,140, 38,132,244,164,148,134, 18, 66, 98, 41,165,219,120,158, + 95,230,136,119,252, 18,240,222, 0,208,149, 97,152, 40, 0,224,121,254, 34,128,221,148,210, 45, 79,145,198,103,134, 41,151,203, + 27, 2, 64, 97, 97,225,165,202,194, 36,132, 52, 44,234,164, 21,194, 36,132, 12,149,201,100, 35, 1, 64,167,211,253, 72, 41, 93, +237,116, 98,150,213,162, 81, 51, 98, 0, 0, 23, 63,143, 4, 0, 56,117, 63,250, 6,113,230,183, 74,194,115, 10,227,201, 50,232, + 58, 96,192,128,185, 63,253,244,211,231,148,210,223,159, 69,219,247,243, 11, 94,242,213, 55,203, 3,198,191, 51,252, 11, 60,138, + 8, 81,166,212, 33,228,101, 49,203,118, 51,114,220,241,235,192, 38, 0, 2, 15, 15,143,254, 98,177,184,141,209,104,244, 23, 8, + 4,201, 70,163,241, 88, 78, 78,206,207,148, 82,243, 83, 39, 48,134,184,155, 10,225, 71,248,191,227,188, 81, 6, 6,145, 28, 41, +136,164, 89,207,193,106,159,193, 35,127, 59,102, 0, 43, 43,226,206,131,101,217,241, 1, 1, 1, 61,115,115,115, 11, 89,150,165, +143, 96,201,163, 63, 0, 24,134, 33, 60,207,167,101,102,102, 14,250,127,164, 69, 9, 41, 42,215,170, 69,111, 9, 1,248, 2,184, + 12, 96, 60,165, 52,223, 69,129,254,177,186, 40,174,209,218, 69, 41, 77,182, 17, 45, 59,119,247,237,162,163,163,143,134,134, 6, +215,238,221,163,215,220, 49,163,199, 18,150,101,112,245,218, 53,193, 91,131,134,190,226,225,225, 17,168, 52, 24,106,129, 16,190, + 80, 42,189,106, 54,155, 18, 55,253,252,147, 42, 50, 34,130,227, 56, 30, 75,151,253,240,106,104,104,240, 39,142,144, 45, 66, 72, +184,159,159,223,186,201,147, 39,251,117,235,214,141,245,243,243, 67, 92, 92,156,230,151, 95,126,137,248,246,219,111,251, 18, 66, + 6, 21,249,242,113, 54,179,173,253, 60,152, 87, 84, 50,210, 17,121, 28,242,204, 56,148,162,195,126, 74,233,241,138, 22, 96, 97, + 97,225,187,133,133,133,205,154, 52,105, 66, 87,174, 92, 73,134, 12, 25, 66, 9, 33, 68,167,211,173, 65, 5, 93, 63, 40, 20,138, +239, 58,119,238, 28, 22, 22, 22, 22,123,247,238,221,174, 27, 55,110,220, 61,120,240,224, 80,133, 66,113, 27, 64,184,147,112,171, + 51, 51, 51, 27,232,116, 58, 4, 5, 5,173, 4,208,232, 25, 52, 34,194,178,236,182,192,192, 64, 58,127,254,252,223, 27, 52,104, +224,171,213,106, 45, 19, 39, 78,236,116,250,244,233, 87, 9, 33,221, 28, 37, 91,132, 16,119, 66,200, 50, 63, 63, 63,175, 47,190, +248,226, 78,227,198,141, 47, 75, 36, 18,241,237,219,183,229, 19, 38, 76,248,128, 97,152,190,148,210,209,148, 58, 62, 65, 88, 49, + 3, 3, 3,189,230,206,157, 27, 23, 21, 21,117, 85, 36, 18,137,110,223,190,173,248,248,227,143,199, 87, 20,147, 97,152,165, 45, + 90,180,112,255,252,243,207,111, 68, 68, 68,156, 98, 89, 86,156,144,144,192, 76,159, 62,253, 29,150,101,251,240, 60, 63,166, 34, +233,244,245,245,117,159, 62,125,250,141, 22, 45, 90,156, 22,137, 68,162,155, 55,111, 50,147, 39, 79,126,199,153,116,122,122,122, +182,247,244,244, 92,158,146,146, 34, 0, 0,127,127,255,166, 53,106,212,248,214, 62,166,165,213, 52,192,108, 54,231,233,245,250, + 1,153,153,153, 37, 58,194, 29, 50,101,241,235, 0,240,173,201,122,255,232,181,188,123, 96,233, 14, 71,242, 29,229, 79, 40, 0, +244,255,112, 65,143, 71,175,143,222,255,170, 0, 16, 8, 4,252, 58,127, 66, 47, 38, 59,238, 50,134, 16,210,189, 67,135, 14,211, + 15, 31, 62,252, 67,187,118,237, 62, 94,191,126,189, 79,124,124,252,151,132,144,224, 55,223,124,115,200,161, 67,135,230,165,167, +167,111,174,172,246, 47, 22, 73, 36,132, 33,144, 73,229,106, 71, 62, 47,100,152,215, 78,117,239, 62,242,199,155, 55,163,190,141, +137,169, 94,224,239,223,236,189,247,222,243,237,213,171, 23, 19, 28, 28,140, 59,119,238,120,174, 95,191,190,214,143, 63,254,216, +147, 16,242, 62,165,244,193,211,144,172,130,108,212, 51, 24, 17, 69, 41, 52,127,151, 17,178, 37, 38, 92, 84,196,144, 43,207, 1, +217,250,108,245,234,213,159,223,185,115, 7,243,230,205, 3,128, 37, 78,142, 63, 19,122,246,236, 25,189,117,235, 86,217,166, 77, +155,100, 77,154, 52,129,159,159, 31,138, 22, 83, 54,199,212,213,171, 87,255,127, 53,185,123,122,122,174,188,119,239, 94,123,133, + 66,241,216,251,177,177,177, 13,195,194,194,114, 0,124,232, 44,113,243,246,246,222,192,243,188, 33, 51, 51,115, 56, 0,168, 84, +170,159, 20, 10,133,123,114,114,242, 39,207,106, 33, 99, 99, 38,197,184,200,139,172,209, 42,209, 97,169,125,196,108,134,227, 91, +142, 25, 61,150,244,235,255,102,202,157,216,123,188, 64, 40,238,191,119,223, 62,121,237,218,181, 25,195,146, 37,176,164,167,195, +252,193, 7, 47, 29, 60,120,208,220,167,255, 64,157,144, 37,171, 67,171, 87,147,255,250,243, 47,126, 91,183,108,110, 9,224,122, +121,154, 44, 63, 63,191,117, 71,142, 28, 9,172, 94,189, 58,178,179,179, 17, 23, 23,135,130,130, 2,244,237,219, 87,216,178,101, +203,192,222,189,123,175, 35,132,180,114, 84,179, 69, 8,241,173, 25, 36,216,249,213,103,125,195, 95,125,165,165, 34, 48,184, 6, +104,138, 30,241,119, 99,154,236, 60,114,250,189, 48, 13,115,235, 78, 14,125,141, 82,154,234,108, 1,102,100,100, 76,234,217,179, +231,150,246,237,219,123, 75, 36, 18, 4, 4, 4,144,110,221,186,165, 37, 37, 37,205,120, 10,226,130,162, 85, 24,103,255, 90, 60, + 60,144,131, 18,228,238,238, 14,119,119,119, 0, 8,124,218,149,167, 70,163, 89,162, 82,169,122,231,230,230,234, 24,134,161,132, + 16,170, 80, 40,100,238,238,238,127,221,136,185, 21, 96, 48, 24,106, 46, 88,244,227, 55, 29, 90, 55, 80, 31, 56,112, 0,189,122, +245,162,251,247,239, 31, 13,224, 7, 7,127, 99, 89,207,158, 61, 11,167, 77,155,166,191, 19, 27, 23,120,227, 86, 44, 81, 72,197, +188,151,151,151,240,236,217,179,130,133, 11, 23, 74,167, 79,159,190, 12, 64,111, 39,210,189,236,205, 55,223, 52,125,244,209, 71, +201, 55,239,220,243,185,114,227, 14, 85, 74,133, 22, 47, 47, 79,246,244,233,211,124, 69, 48, 25,134, 89, 58,105,210,164,220,209, +163, 71,103,101,106,115,252,178,114,243,169, 68,200,154,253,252,252, 4,191,255,254,187, 97,195,134, 13,204,200,145, 35,151, 2, +232,227, 68, 17, 47,237,214,173, 91,222,228,201,147,179,111,199,222,247,187,114,253, 22,228, 18,161,217,215,215,135, 61,119,238, +156,105,193,130, 5,204,236,217,179, 29, 74,167, 66,161, 88,187,113,227, 70,193,239,191, 63, 26,251,254,252,243, 79, 38, 52, 52, + 84,110,255, 25,157,222, 0,134, 0, 25, 25, 25,242, 22, 45, 90,172, 5, 16,244, 4, 9,154, 17,131, 33, 83,128,119,223,125, 55, +217,217,246, 18,229,255, 30, 46,150,227,254,150, 95, 90,139,246,255,112, 65, 15,129, 64,192,143, 28, 57, 50,165,248,115,189, 94, + 79, 0,116,139,114,130,108,117,237,218,245,211, 93,187,118,213, 88,191,126,253,215, 27, 54,108, 48, 2,128, 84, 42,245,250,229, +151, 95,230,245,237,219, 23,125,251,246,157, 6,160,210,136, 22, 71, 57, 19, 0, 72,164, 18, 73, 76, 76, 12,137,140,140, 44,211, +184,213,196,243,231,127,188,121,179,241,219,145,145, 77,180, 60, 95, 83,244,234,171,249, 19, 38, 76,200,200,205,205, 69, 92, 92, + 28, 76, 38, 19,134, 12, 25,194,182,107,215, 46,160,111,223,190,139, 9, 33,111, 80, 74, 77, 14,104,117, 22, 4, 6, 6,142,202, +201,201,201,183,106,117,106, 85, 83, 9,218, 52,180, 72,234,215, 52,139, 69,172, 69,244,250, 7, 60,217,191,132, 20, 68, 86,199, + 9, 0, 16, 21, 34, 93, 4, 60, 53,209,114, 11, 38,213, 57, 33,102,123, 87,149,191,156, 30, 91,248,121,254, 3,186,164, 44,141, +173, 66,161,232, 81, 80, 80,176,185,104,114, 14,127,237,181,215,112,250,244,105, 0,104, 9, 96, 9, 33,164, 3,195, 48,111,241, + 60,191,130, 82, 90, 86, 40,183,247,186,119,239,254,242,214,173, 91, 85, 0,176,121,243,102,152,205,102,132,134,134, 66, 36, 18, + 65, 44, 22, 67, 40, 20,218,162,131,252,127, 18,134, 97, 36,151, 47, 95, 70, 64, 64, 64,241,118, 2, 0,109, 42, 0, 57, 45, 54, + 54,182,197,133, 11, 23,208,190,125,251,105,245,234,213,235,114,244,232, 81,191,204,204, 76,180,111,223,126, 49,128,223,159,117, +158,236,185,200,127,166,158,138, 49,201,118,143,152, 25,195,178, 44,131,123,177,113,230,246,237, 59, 14,126,248,240,161,178, 89, +179,102,140, 80, 40, 68,193,225,195,208,159, 59, 7,165, 82,137,158, 61,123, 10,143, 29, 59,166, 86, 43,213, 35,238,223,187,159, +199,178, 12, 40,101,202,181,121,112,119,119,127,231,147, 79, 62,241, 11, 11, 11,131,197, 98,177,121, 52,183, 88, 44,136,143,143, +135, 82,169,196,160, 65,131,124,228,114,249, 59, 14, 78,178, 85,195, 67,125, 46, 30,217,189,172,209,132, 49, 93, 21,225,242, 3, + 80,196,191, 15,229,230,183, 81, 43,105, 47, 38,247,104,166,216,255,221,180,168, 26, 1, 30, 23, 9, 33, 85,157, 45, 36,189, 94, +127,226,234,213,171, 35,142, 30, 61,202, 3,192, 31,127,252, 65,111,220,184, 49,250,105, 86,161, 60,207, 35, 59, 59, 27, 60,207, +179, 69,247,214,215,127, 85,189,175, 86,171,151,118,233,210,229,205, 7, 15, 30,200,246,236,217,227,249,240,225, 67,175,251,247, +239,123,135,135,135, 11,230,205,155,183, 75,111, 48,177,102,142, 26, 45,156, 57, 47,249,218,181,216,172,212,212,139,171, 86,173, +210, 17, 66,122, 58,248, 27,111,248,251,251,123, 78,153, 50, 5, 68, 40,111, 26, 81,171, 94, 24, 43,148,185, 49, 66,177,155, 78, +167,231,238,221,187, 23, 63,101,202,148,106, 13, 26, 52, 8, 40,218, 94,115, 8, 51, 32, 32,192,235,163,143, 62,130, 64,162,106, + 88,191, 65, 84, 13,177, 68,161, 98,133, 50, 85,179,102,205,218,197,198,198, 38, 77,158, 60,217,191, 73,147, 38, 78, 97, 54,105, +210,196,125,228,200,145, 22,169, 76,213,162,122,245,208, 90,245,235,212,138, 14, 15, 15,239, 33, 16, 8, 44,233,233,233, 15, 6, + 13, 26,228,255,250,235,175,251, 58,131,233,227,227,227, 62,121,242,100, 75,112, 72,104,231,206, 47,191,210, 92, 36, 83,185, 9, +196, 10, 77, 97,161,158,187,121,243,230,131,169, 83,167,250, 55,108,216,208,199, 17,204,194,194, 66,161,151,151, 23,234,214,173, +139,218,161,161,200,201,201,193,214,173, 91,177,122,245,106,172, 88,177, 2, 63,255,252, 51, 26,183,122, 5, 42,149, 10, 73, 73, + 73,200,205,205, 21,254,211,109,138, 95, 90,139,126,107, 28,213,109,236,216,177, 73, 35, 71,142, 76,145,201,100,124,241,203,195, +195,131, 27, 48, 96, 64,234,160,143, 23,117,179,110, 45,150,165,201,234,216,177,227,229,221,187,119,223, 93,191,126, 61,106,215, +174,141,206,157, 59,139, 1,224,157,119,222, 17,247,237,219, 23, 27, 55,110,196,230,205,155,175,135,135,135,159, 36,132,116,119, + 36,157,131, 6, 13,106,213,167, 79,159,227,125,250,244,185,212,175, 95,191,229,163, 71,143,126,108,230, 74, 78, 74, 56,111, 52, + 26,209, 32,170,137,124,214,202, 51, 3,202,195,187, 1,172, 95, 30, 19,179,250,139,107,215, 30, 76,171, 93, 91, 19,114,255,190, +199,154, 5, 11,188,172, 65,186,205,102, 51,226,227,227,225,238,238,142, 1, 3, 6,120, 73, 36,146, 65, 14,180,159,133,221,187, +119, 31,250,240,225, 67,229,143, 63,254,232,127,233,210,165,128,228,228,100,255, 67, 7,247,121, 79,252,240, 29,149,155, 82, 44, + 78, 74,127, 68, 84,239, 39, 65, 17,115, 15,173, 40,133,198,126, 59,177, 66,227, 66, 0,145,201,131,201,183, 53, 90,105,110,125, +180,177, 97,191,201,191, 53,116,247, 10,150,126, 82, 70, 58,235,207,159, 63,127,211,142, 29, 59,250,183,106,213,106, 11, 33, 68, + 86,194,103,164,141, 27, 55,222,186,113,227,198,161,173, 91,183, 62, 65, 8,169, 91,234, 42, 50, 40,168,231,111,191,253,230,105, +189,247,242,242,130, 84, 42,125,130,100,137, 68, 34, 48, 12,131,255, 79,146,158,158,254, 86,155, 54,109, 54,117,237,218,213,112, +225,194, 5,164,167,167, 35, 48,208,182,214, 78,169, 0,164,135, 92, 46, 71,112,112, 48,194,194,194,250, 31, 59,118,204,207,108, + 54,227,254,253,251, 72, 75, 75,187,248, 79,228,201,158,139,188, 72, 82, 44,206,225, 40, 0,187,158, 32, 90, 69,177,133,142, 0, + 0, 37,164,224,242,213,171, 66, 86, 44, 30,248,211,134, 13, 18,145, 72,132, 7, 15, 30,224,250,245,235, 40, 60,116, 8,186, 83, +167,144,154,154,138,252,252,124,248,250,250, 98,217,202,149, 10, 35, 71,135,221,188,117,139,165,204,223,246, 6,165,157, 72,144, + 72, 36,157,122,245,234, 85, 42, 33, 75, 74, 74, 66,215,174, 93,133, 44,203,118, 42, 65, 61,119,176, 88,230, 72,128, 55,217,113, +104,203, 44,127,127,241,117,224,206, 4, 32,239, 34, 64, 13,128,197, 8, 36, 94, 1,118,205, 64, 72,126, 12,217, 55,107,176, 95, +160, 92,176,131, 20, 83, 27, 57,112,188, 53, 52, 50, 50,114,197,192,129, 3, 25, 0,232,208,161, 3,137,140,140, 92, 78, 8, 9, + 45, 67,141,120,176,156, 73,242,116, 86, 86, 22,250,246,237,235, 89,163, 70,141,131,125,251,246,245,180,190, 95, 81, 76,171, 54, +185, 78,157, 58,153, 50,153,236,103, 66, 72,185, 3,172, 61,166, 70,163, 89,210,181,107,215,222, 27, 54,108, 16, 1,192,145, 35, + 71,176, 99,199, 14, 92,187,118, 13,183,111,223,230,163,162,162,188, 23,173,216,180,116,201, 15,107, 23,246,104,217, 32,160, 93, +211,168, 90,202,252,172,124, 95, 95,223,150,148,210, 80, 7,211,217,117,198,140, 25,215,111,220,125,224,198, 8,132, 2,145, 80, + 32, 81,171, 21,190,238, 42, 69,144,135, 92, 26, 40, 97,136,178,176,176, 48,229,231,159,127,230, 1,116,117, 20,115,214,172, 89, +247,110,220,121,160, 33,140, 64, 32, 20, 8, 69, 74,165, 92,243,106,231,246, 77, 0, 64, 4, 42,202,205,205, 77, 93,189,122,181, +201, 25,204,207, 63,255,252,170, 54, 59,223, 93, 32, 20, 10, 5, 2,214, 86,150, 10,153,204, 91, 46,145,136, 13, 6, 67,226, 55, +223,124,163,115, 6,115,198,140, 25,215,111,222,125,232,193, 16,194, 18,194, 8,212, 42,133,167,167,155,220,219, 91, 41,243,146, + 11, 88,113,110,110,110,226,186,117,235, 28,194, 52,153, 76,162,212,212, 84,220,184,113, 3,193, 77,154,224,192,129, 3,168, 82, +165, 10,250,246,237,139, 55,223,124, 19, 50,153, 12, 29, 90,212,195,148, 41, 83,112,247,238, 93,152, 76, 38, 73, 73,152, 54, 59, +169, 98, 18, 16, 16,112,161,188,246, 99,255,221,226,233,140,242, 39,244, 91,227,168,110,246, 4,171, 52,124, 15, 15, 15,174, 36, +109, 87,113,204,174, 93,187,126,122,232,208,161, 26,235,214,173,235, 54,104,208,160, 19,235,214,173, 67,243,230,205,113,227,198, + 13, 84,171, 86, 13,107,214,172,193,155,111,190,121, 98,241,226,197,221, 46, 92,184,208,160,122,245,234,159,148,135,217,175, 95, +191,113, 13, 27, 54, 60,156,146,146,210, 66,171,213,214,221,186,117,235,176,158, 61,123,222,235,223,191,127, 71,155, 70,203,108, +222,176,107,251, 22, 68,119,235,133,136, 58,117,151, 14,249,100,125,189,178, 48, 41,165,244, 26,176,124,117,114,114,250, 6,189, +190,176,175, 80, 40,151,159, 57,227,177,249,135, 31,188,236, 79,122, 39, 38, 38,226,245,215, 95, 23,138, 68,162,214,101,165,147, + 16, 50,191, 71,143, 30,125,183,110,221,234,110,213,234,156, 58,117, 10, 87,174, 92, 65, 92, 92, 28,178,179,179,209,113,116, 62, +198,206,123,132, 61,118, 30,197, 43,239, 80, 69, 5,199, 16,155,200, 67,136,159,167, 90,112,114,216, 55, 17,239,140, 90, 90, 91, +160,244, 16,226,167,143,111, 35,245,142,126,115, 41,233, 36, 45, 90,180, 88,223,167, 79, 31, 98, 52, 26, 97, 52, 26,141,148, 82, + 93, 73,216,129,129,129,210,250,245,235, 99,244,232,209,140, 90,173, 94, 92, 90, 58, 11, 10, 10, 12,187,119,239,198,160, 65,131, +240,254,251,239,163,102,205,154,112,119,119,135, 80, 40,196,218,245,191,122,189, 57,108, 76,120,163, 86,109, 26,212,110,212,188, +126,158,129,109, 34,146,123,140, 36, 37,108, 13, 60,139, 19,114,207, 3,102,189,122,245, 90,157, 61,123, 86,210,166, 77, 27, 60, +120,240, 0, 66,161,109, 61,197, 61, 77, 58,103,204,152, 33,209,235,245,248,235,175,191, 48,120,240,224, 68,147,201,244,193,179, +206,123,113, 46,242, 34, 9,165,116,121,177, 43,185, 52,141,214, 12, 0, 48,243,216, 49,112,240,176,194,157, 59,119,202,197, 98, + 49, 30, 60,120,128,228,228,100,172, 93,189,154,235,224,227,147,215, 57, 48, 48,119,237,234,213,212,104, 52,130, 82,138,200,200, + 72,244,238,221, 91,246, 70,223,254,105, 36, 87,247,171, 3,204,207,223,186,191, 62,108,216,176, 39,158, 79,156, 56, 17,106,181, + 26,132, 16, 63, 7,242,215,231,189, 25, 61,130,220,171,107, 82,105,202, 90, 45, 88, 41, 32, 80, 1, 2, 53, 32,117, 3, 36, 42, + 64, 44,135,225,194, 97, 45, 67, 59,199,245,106, 61, 60,208,201,173, 30, 4, 4, 4, 76, 59,124,248,176,247,133, 11, 23,104,110, +110, 46,146,147,147,233,220,185,115,189, 3, 2, 2,166, 85,180, 82,146,146,146,102, 69, 71, 71,167, 14, 30, 60,216,109,239,222, +189,193,131, 7, 15,118,139,142,142, 78, 77, 74, 74,154,245, 52,149, 45, 18,137,216,107,215,174,121,204,158, 61,251, 77, 0,231, +235,214,173,155, 25, 20, 20,116,190,200,104,178, 76, 81,169, 84, 54,146,101,213,174, 9, 4, 2, 8,133, 66, 4, 4, 4, 24,181, + 90, 45,215,186, 81,168, 44,210,141, 49, 7, 72, 68, 50, 15,153, 52, 72,165,118,107,150,153,153,121,153, 16,226, 80,124, 66, 66, + 72,195,166, 77,155, 10, 57, 42,228,199, 14,236, 16,240,206,208,246, 62,223,207, 30, 89,229,155, 89,163, 2,231, 79, 31, 17, 57, +107,210,128,246, 12,207,235,171, 85,171,230,103, 53,104,119, 64,125, 30,213,184,113, 99, 1, 15, 33,110,220,138, 75,125,144,144, +152,247,114,187, 22, 54,205,101,237,134, 81,157,189,189,189,219, 68, 70, 70, 54,118,212, 39,140, 76, 38,107, 24, 17, 17, 33, 96, + 88, 33,241,116, 87, 5,171,148, 50, 95,235, 51,181, 70,243,146,135,183,119, 31,134,210, 28,127,127,127, 31,153, 76,214,208,137, +188, 11,120,136,224,235,227,225,230,237,165, 81,118,110,223,178,102,139,151, 90,132,215,107,214,188, 69,157, 70,141,223, 32, 22, + 75,110,104,104,168,143,213, 72,190, 44, 49, 24, 12,210, 13, 27, 54, 96,246,236,217,168, 31, 18,130,192,192, 64,248,248,248,224, +212,169, 83, 56,123,246, 44,220,221,221,145,150,150,134, 5, 11, 22, 96,219,182,109, 48,153, 76, 42,103,219,147, 35,100,171, 44, +177, 88, 44, 76,113,130, 85, 26,190, 76, 38,227,173, 70,242,165,201,238,221,187,215, 91, 53, 89,227,199,143,111,181,104,209,162, + 19, 49, 49, 49, 80, 42,149, 56,123,246, 44,134, 13, 27,118, 98,241,226,197,173,198,140, 25,131,213,171, 87,227,222,189,123, 43, +203,194,235,215,175,223,244, 17, 35, 70,124,115,244,232, 81,198,215,215, 23,238,238,238,232,209,163, 7, 86,174, 92, 41,176, 88, + 44,171,250,244,233,115,169, 79,159, 62,151,184,248,253,159,110, 90, 49,247,212,213,203,151, 48,238,189,143,196, 70,139,121,178, + 3, 3, 47,213, 41,149,121,150, 54,109,180, 27,205,230,194,126, 34,145,220,237,210, 37,143, 29,171, 86,217,200,214,148, 41, 83, +224,230,230, 6, 60, 50, 96, 70, 25, 90,157, 81,219,182,109,179,141,135,158,158,158, 16,139,197, 16,137, 68, 16, 10,133, 96, 89, + 22, 7,151, 42,240,195,148, 71,252,226,135, 41, 4,251,151,144,167,138,205,170, 8, 34,117,221,125,197,151,222, 94, 83,167, 65, +221,142,158, 56,245, 75, 10,230, 70, 95, 72, 56,187, 49,125,130, 62,173,212, 80, 74,141, 38, 78,156, 88, 59, 45, 45, 13,231,206, +157,195,185,115,231,102,151, 82, 54,250,237,219,183,127,153,159,159,143,234,213,171,163,123,247,238,109, 8, 33, 77, 74,233, 55, +104,220,184, 49, 94,127,253,117,180,111,223, 30,245,235,215,135,209,100, 17,246, 25, 56, 42,226,218,189,244,192,185, 11,230,202, + 15,255,177,149, 57,113,226, 40,187,126,203,126,183, 22,237, 95,249, 70,164,242, 63, 77,228, 94,254,255,117,141,150, 84, 42, 93, +116,244,232, 81, 63,147,201,132,171, 87,175,226,253,247,223,127,218,152,161, 54, 5, 72,112,112, 48,142, 28, 57,130, 1, 3, 6, +232, 83, 83, 83,255,252,167,242,100,207, 69,254, 43, 34,176, 99,144, 54,121,248,240, 97,182,135,135, 71, 96, 68, 68, 4, 99, 52, + 26, 31,109, 73,108,222,204,173, 88,181,106,151, 94,175,127, 15,128,104,201,247,223, 47, 13, 12, 10,106, 63,112,208, 32, 98, 54, +155, 17, 29, 29, 45,222,185,115,167,231,221,212,212,114, 3, 34, 23, 95,109, 12, 25, 50, 4,139, 22, 45, 2, 0,188,251,238,187, + 54,213, 58,113,192, 96, 73,233,134,174,157, 95,107,172,142, 87,124,171, 54,189,100,206,175,122, 87,117, 90,145, 47,107, 12, 70, + 44,128,148, 5,111, 50, 91,110,167,245, 60,127,247,118,173,218, 50,109,102,181, 78,117,218, 98,197,129,117, 93, 1,108,116,120, + 85, 39,151, 55, 85, 42,149, 56,127,254,188,182,113,227,198,217,148, 82,183, 89,179,102,121,201,229,242,166, 79,193,126,239, 19, + 66,218,180,108,217,242, 29,134, 97, 58,241, 60,127, 48, 53, 53,117, 9,165,244,190,131,147,246, 88, 0,159,195,206, 14,197,104, + 52,130, 97, 24, 80, 74,209,175, 95, 63, 76,153, 50,165,246,149, 43, 87,112,248,240, 97,143, 78,157, 58,157, 38,132,100, 3, 24, + 78, 41, 45, 81,107,150,155,155,171, 59,123,246,172,236,240,225,195,224,121, 30, 30, 30, 30, 80,171,213,144, 72, 36,232,209,163, +135,114,242,228,201, 29,247,237,219,151,150, 91,181, 10, 43, 77, 78, 44,144, 40,149, 42,248, 5,182, 30,211,255,173, 24, 74,233, + 54, 39, 6, 7,177, 76, 96,209, 19,206,192,204,255,108, 49, 35, 23,137,136, 84, 36,128,132, 47,196,167, 95,206, 33, 34,202, 9, +224,228,254,188, 72, 36, 18,169, 36, 48,178, 98,214, 44, 39,168, 20,231,112, 44,203,138,165, 34, 24, 74,123, 46,100, 24,134, 97, + 24, 17, 0,139,163,152, 18,137, 68,164,146,208, 82, 49,101, 44, 97, 9, 33, 98, 60, 58,157,245,132, 68,249, 19,106,167, 69, 50, +216,147,226,214,173, 91, 99,215,225,243,216,188,227, 32, 50, 30, 92,198,212,143,199,163, 73,147, 38,216,185,115,103,153,105,178, +218,104,149,166, 93, 14, 8, 8,184,144,148,148,212,168,180,239,150,100,163,197, 47,173, 69, 7,125,188,168, 91, 73, 90,170, 18, +241, 63,115,123,132, 85,134,141, 22, 33,164,123,235,214,173,199,109,216,176,193,216,165, 75, 23,113,191,126,253, 80,183,110,221, + 86, 67,135, 14, 5, 0,116,234,212, 9,139, 22, 45,106, 53,116,232, 80,252,250,235,175,216,186,117,171,161, 93,187,118, 31, 19, + 66, 18, 41,165,187, 75,194,228,121,254,245,101,203,150, 21,215, 20,194, 98,177,192,108, 54,251, 91, 44, 22,255,162,177, 8,223, +124,179, 56, 99,255,190,157,248,248,147, 25,240,241,246,107,232, 96, 27, 34, 67, 62,250, 40, 99,205,130, 5, 88,240,235,175,248, +168, 90, 53,249,186,235,215,177, 95,175,199,198,195,135, 51,138,126,167, 92,219,204,130,130, 2,221,238,221,187,213, 27, 55,110, +132, 70,163, 65,205,154, 53,225,225,225, 1,161, 80, 8,134,149,129, 21,185, 35,162, 78, 83, 0,103, 1, 0,213, 2, 80, 16, 89, + 29, 39, 8, 65, 54,101, 74,111,195,165,246,209, 16, 82,213, 55, 68,122,116,220,234,186, 26,181,143, 8,123,151, 60,196,190,111, +227,183,233, 51,240, 53, 44,184, 89,198, 97,141,198,213,171, 87, 71, 90, 90, 26,118,239,222, 93, 0,224,171,210,126,131,231,249, + 47,191,255,254,251,137,159,124,242,137, 36, 50, 50, 18, 0, 26, 2, 56, 87, 34,233, 83, 40, 16, 24, 24,104, 35,150,253, 6,143, + 9, 29, 61, 97,140,172,231, 43,237, 33, 16,120, 33,187,192,140,204, 60, 51,220,189,148,248,120, 66, 31,233,193,198,129, 77,150, + 45,254,105, 59, 33,164, 9,125,150,206, 34,255,101,241,244,244,108,152,153,153,137,251,247,239, 99,240,224,193,137, 25, 25, 25, + 7, 10, 10, 10,134, 37, 37, 37, 1,128,182, 2,144, 54, 50,223,176, 97, 67, 52,109,218, 20,125,251,246,149, 22, 22, 22,246, 9, + 13, 13, 13, 4,240,210,179,204, 79,113, 46,242,159, 34, 90, 37, 78, 8,102,115,132, 97,233, 82, 20, 28, 60, 8,241,254,253,216, + 24, 16,144,175,215,235, 63,164,148,198, 23, 13,122,227, 87,175, 89,115,178,219,159,127,170,141, 49, 49, 8,189,114, 5, 66,141, +166,161,179, 9, 88,181,106, 21,114,115,115,145,147,147, 3, 0,248,246,219,111,145,155,155, 11,171, 45, 67,185, 25, 16,161,149, +159, 79, 53,164,224, 54,120, 1,163,140,139, 40,108,174,212,171,146, 2, 31,250, 22,228, 48,129,136,121,208, 76,161,203, 52, 54, + 39,172, 17,250,140, 66, 4,182,172, 9, 1, 4,173,156, 73,163,117,223, 95, 32, 16,104,111,221,186,245,122,120,120,248, 14, 0, + 94, 79,107, 15, 64, 41,189, 3,224,189, 10,146,128,207,239,221,187,231,179,114,229,202,119,102,205,154, 69,237,137,150,245,127, +129, 64, 0, 74, 41,220,220,220, 32, 20, 10,125, 79,157, 58,229,219,172, 89,179,239,138, 6,180,146,242, 73,235,214,173,139,123, +247,238, 65, 32, 16,192,205,205, 13,188,197,132, 25, 19,198,128, 99, 37,130, 73,147, 38, 53,236,213,171,215,213,149, 43, 87,154, +213, 45, 90,190,148,153,153,121,109,220,128,129, 87,127,255,253,119, 35,207,243,203, 28,204,243,165,219,183,111,179, 65, 1,190, + 44,181, 20,242, 10, 17, 32,189,252, 13, 21, 43,253, 32, 21,176, 84, 68, 24, 72,164, 50,183,251, 9, 9,153, 60,207,223,112, 4, +147,231,249,139,247,238,221,147,249,250,120, 10, 10,117,198,124,153,144,138,227, 46,158,143,173, 26,213, 56, 20, 0,244, 23,207, + 30,145, 68,212,146,197,165,166, 43,170, 85,171,230, 16,166, 78,167,187,148,152,152,200,250,250,250, 10, 30,196, 39,108,215, 40, + 21,222,106,141,166, 57, 0,152,242,114,206, 50, 6, 67, 58, 43, 20,248,166,103,102,106,117, 58,221, 61, 71,243,126,247,238, 93, +129,191,191, 15,187,119,255,161, 29,190,114,137,143, 74, 44, 80, 75, 8, 33,114,150,228,138, 44,124,134, 84, 46,247,185,159,144, +160,165,148,150,170, 33,252, 34,123, 96,207, 71,245, 53,227, 87, 59,108, 92,190,124, 25,123, 78,220,128,130, 26, 65,244, 57,216, +191,250, 71, 12,152,244,201, 83,219,253,149, 71,182, 42,164,205, 90, 86,235, 66, 49,124, 36,149, 99, 8, 63, 96,192,128, 25,235, +215,175,183, 25,160,220,184,113, 3, 29, 58,116,176,110,115,160,115,231,206,104,214,172, 25,110,220,184,129,176,176, 48, 28, 62, +124, 88,194,178,172,100,224,192,129,115, 1,236, 46, 47,189,203,151, 47,199,176, 97,195, 74, 50,172,190, 11, 64, 79,220, 35,243, +167,124,177,214, 75,155,153,129,180,244,148, 75,142,150, 3, 33, 4, 67, 62,250, 40, 99,153,209,136, 13,103,206, 96,144, 66, 33, + 95,115,231, 14,162,155, 53, 67,189, 14, 29, 50, 28, 25,235,172, 90, 29,189, 94, 15,161, 80, 8,181, 90, 13, 79, 79, 79,136, 68, + 34,176,194, 0, 8,196, 13,192,136, 68,136,106,221, 0, 11, 62, 84, 20, 14,126, 21,139, 9, 65,182, 68,140,139, 34,121,201,182, + 58,132, 16,162,168,130, 30,148, 34,183, 48, 30,127, 88, 9,137,166, 42,113, 83,170,133,251, 71,124, 23,169, 81,251,136,176,103, +241, 3,236,255, 46, 97,139, 62, 5, 83, 1,220, 45,235,116,177, 68, 34,169,167,209,104, 16, 31, 31,143,135, 15, 31, 94, 47,203, +192,159, 82, 90,216,162, 69,139, 88,137, 68, 82,219,219,219, 27, 0,170,151,150, 78,158,231,109,118, 88,235, 54,108,242,106,216, + 38, 84,250,114,171,218, 88,187, 99, 14,222,238,179, 24, 66,150,128,227, 76,248,122,209,107,224, 12,249,232,211,109, 20,105,219, + 41,172,193,193, 29,198, 17, 0,126,252,175, 18,173,132,132,132,247,218,180,105, 51, 55, 47, 47, 47,171,160,160, 96, 0, 0, 84, +175, 94, 61,132, 97, 24, 9,128, 89,101,180,167, 16,148,236, 22, 66,116,229,202, 21,168, 84, 42, 36, 38,254, 29,147, 62, 62, 62, + 30, 60,207, 27,224,146,178,250,104, 20,165,244, 34, 33,196, 31, 64, 52,236,220, 59, 48, 69,170,186,182,187,118,237,162,187,118, +237,106,107,155,188, 40,229, 45, 90, 45,168,225, 81,217, 10,133, 66, 10,192,254, 68,147, 92,163,209, 16, 97, 80, 16,136,228,145, +233, 7,181,219, 19,126, 90, 49,155, 29,115, 45,195,115, 96, 65, 76,160,118, 74,140, 2, 41,193, 28,175,142,120, 79, 60, 13, 41, + 98,141,125,207, 6, 44, 20, 28,120,214,201,228,208,130,130, 2, 88, 44, 22,247, 26, 53,106,236,178, 88, 44,238,214,173,129,127, +171, 82, 57,142,139,101, 89, 22,239,188,243, 14,172,218, 31,163,209,136,148,148, 20, 24, 12, 6, 24,141, 70,220,187,119, 15, 57, + 57, 57, 48, 26,141,184,118,237, 26,170, 87,175, 14,150,101,253,203,104, 40,148, 82,138,224,224, 96, 84,173, 90, 21, 44,161, 88, + 49,127, 58, 62,125,127, 12,222,172,206, 99,213,146,175,209,174, 93,187, 90,213,170, 85,107, 33, 16, 8, 56, 63, 63, 63,209,214, +173, 91,183,115, 28,215,195, 9, 63, 90,187,167, 76,153, 82,181, 78,157, 58, 62, 26,181,202, 44, 17,179, 16,155, 11,168,196,144, + 73, 5,133, 25, 8, 14, 14,177, 64, 38, 15, 27, 52,104, 16,231,200,228,104,197,252,240,195, 15,253, 35, 35, 35,221,220, 53,170, + 2,177,144, 77, 19,129,102,228, 92, 62,119, 26, 0,196,222, 62,122, 72,229,181, 7, 15, 30,108,113, 6,115,218,180,105,213,189, +189,189, 53, 12,104, 30,103, 50,253,189,223,110, 48,102, 18,161, 80, 7,145,184,241,187,239,190, 75,156,193,156, 56,113, 98,181, +218,181,107,107, 52,106, 69,190, 64,200, 38,139,120, 62, 89, 10, 62, 69,104, 52,101, 73,189,189, 10, 33, 87, 70, 13, 26, 52,168, + 84, 76,171, 54,107,242,228,201,241,197,136, 55,180, 90, 45,244, 41, 87, 33, 74,140, 65, 3,165, 16, 77,188,221, 33,145, 72,108, + 71,223, 75,107,174,165,217,104,149, 68,182, 28,253,110,227,153,101,108, 1, 46,171,117,161,184,223,172, 34,252, 50,251,211, 79, + 63,253,244, 73,251,246,237,211, 58,119,238,108,220,181,107, 23, 8, 33, 56,124,248, 48, 18, 19, 19,209,185,115,103, 80, 74,173, +167,218,112,233,210, 37,116,234,212,201,216,166, 77,155,196,159,126,250,233,115, 71, 42,103,216,176, 97, 48,155,205,200,207,207, +135, 86,171,197,206,157, 59,209,160, 65, 3, 42,151,203,123,177,193,175,204,233, 51,226,147,151,234,214,111,136,239, 22, 47, 48, +138, 5,194, 47,156, 28,132, 49,248,195, 15, 51,114,162,162,180,235, 10, 10, 10,135,168,213,242, 26,241,241, 30,231,247,237,243, + 50,153, 76, 14, 97, 88,181, 58, 65, 65, 65, 54,146, 37, 18,137, 32, 16,123,131, 85,212,131,216,179, 51,228,126,189,240,199, 69, +137,193, 77,129,109, 42, 37,246, 42, 52, 40,213,181,131, 60, 24,115, 94,234,231,191,181,229,155,254,135,228, 85,176,146, 16,194, + 16, 66, 24, 42, 32, 91,135,126, 29, 94,195,187,170, 12,127,110, 74,193,254,239, 18,126,211,167, 96, 58,128, 59,229,245,115,147, +201,164,231, 56, 14, 12,195, 64, 32, 16,216,219,136,158,252,237,183,223,112,254,252,121, 0,176,185,237,201,203,203,227, 88,150, +133, 84, 42, 5, 0,101, 25,227, 29,132, 66, 33,132, 66, 33,142,156, 62,230,249,230, 27,175,145, 83,127, 29, 64,203, 6,253,145, +153,111, 66,106,142, 9,217,133, 64,157, 38, 83, 81,183,211, 54, 92,190,151,135,134,245,235,178,172, 88, 49,248, 5,159,188, 67, +124,124,124, 78,121,121,121, 29, 38,132,132, 16, 66, 66,212,106,245,201,128,128,128, 24, 66, 72,119, 74,233,239, 73, 73, 73,145, +249,249,249, 45, 41,165, 15, 40,165, 15, 50, 50, 50, 58,164,165,165,189, 84,214, 97, 45, 79, 79,207,149,185,185,185,227, 57,142, +235, 86,116,189,202,113, 92,195,219,183,111,215,110,216,176,225,245,208,208,208, 75,161,161,161,123, 66, 67, 67,183,135,134,134, +110,111,223,190,253, 34,171,187,135,103, 41, 37,113,145, 23, 72,172,166, 46,209, 69,174, 30,162,109,115, 70,209,235,145,226, 6, +104, 22,137,228,154,101,220, 56,104,182,111,135,240,246,109, 12, 29, 60, 88, 45,151,203, 23, 19, 66, 26, 17, 66, 90, 42,149,202, +239,166, 79,159,174,242,154, 55, 15, 1,199,142, 33,110,231, 78,152,133,194,115, 21, 73,157, 78,167,131, 64, 32,176,105, 98, 20, + 10, 5, 56,142, 43,226,110,229, 16, 14, 11,254, 76, 76,141,129, 24, 85,193,131,230,239,205,109,115,166,127,236, 84,159,157,185, +213,195,238, 20,136,194,102,122, 55,247, 89, 28,210,234, 76, 1, 17,228,139, 53, 82, 60,124, 24, 15, 14,188, 83,251,205,122,189, + 62,167,160,160, 0, 13, 27, 54,244, 60,127,254,124,141, 6, 13, 26,120, 20,189,127,246, 41, 59, 81,139,192,192,192, 77, 65, 65, + 65,247, 3, 3, 3, 55, 17, 66, 90, 56,241,245,149,199,143, 31, 7,203,178,152, 62,125, 58,242,242,242, 96, 50,153,144,153,153, +137,135, 15, 31,194,104, 52, 34, 33, 33, 1, 55,111,222,132,209,104, 68, 92, 92, 28, 12,134,242, 23, 36, 60,207, 67,173, 86, 67, +175,203,199, 15,115, 62,197,180,201, 19,144,115,247, 2, 18,146, 82,161,113, 83,224,189,247,222, 99,221,221,221,121,142,227,170, + 90, 44,150, 78, 28,199, 45,117,148,112, 22, 57, 45, 60, 17, 28, 28, 92,119,254,252,249,181, 63,157,179, 84,164, 22,228, 83,137, + 74,202,139, 85, 18, 42,174,213, 28,195,166, 46, 22,125,179,240,171, 91,127,254,249,103,162, 35,206, 59,173,152, 81, 81, 81,225, +137,137,137, 13, 34, 35, 35, 35,188, 66,170, 73, 36,254,129,217, 34,255, 42,185,212,160, 63, 67, 2,171,180, 94,186,116,233,213, +147, 39, 79, 38, 57,131,169, 80, 40,106,173, 93,187,182,174,175,175,111, 93,161, 76, 38, 45,204,201,217,104, 41, 44,216,196,106, +220,165,140, 90,243,234,182,109,219, 46,108,217,178, 37,197, 25,204,176,176,176,200, 57,115,230,212,169, 87,175, 94, 29,191,234, + 53, 36,178,192,224, 76,105, 80, 72,166,172, 94, 3, 9,130,170,118,249,238,187,239, 46,253,249,231,159, 14, 97,178, 44,107, 97, + 24, 6, 66,161, 16,114,185, 28,123,247,238,197,184, 17,253, 17, 28,232,137,136,200, 72,116,124,123, 60,182,108,217, 98,179,225, + 97, 89,182,212, 25,125,205,188,247,118, 68,249,147, 11, 88, 86,235, 2,150,213,186, 16,229, 79, 46,148, 74,182,138,158,151,244, + 25,135, 70,163, 82,236,176,202, 35, 91,148,210,221, 71,142, 28,249,114,200,144, 33,226,174, 93,187,226,204,153, 51, 24, 54,108, +216,137,173, 91,183, 2, 0,206,156, 57,131, 15, 62,248,224,196,161, 67,135, 48,102,204, 24,116,232,208, 65,124,252,248,241,239, + 28,241,253, 99,177, 88,176,106,213, 42, 88, 44, 22, 40,149, 74,120,120,120,224,181,215, 94,195,213,171, 87,199,172, 94,189, 58, +134, 21, 10,223,138,238,246, 6,118,109,223,138,155,215,174,142, 89, 51,119,160,211, 78,129, 25,134, 65,215,193,131, 51, 50,234, +212,209,174,201,205, 45, 28,238,238, 46,143, 76, 73,241,248, 99,211, 38, 47, 7,218, 15,225, 56,206, 70,174,172,164,195,122, 9, +196,222, 16, 40,234, 66,160,106,130,203,119, 68,102, 97, 83,122, 81,212,152,222, 40,203,127,150, 80,204, 12,235,245,105,117,244, +250,180, 58,186, 79,170, 54, 84, 94, 5, 43, 20, 85, 48,182,235,251, 85,219,135, 54,113, 67,110,154, 9, 59,191,142,123,160,207, +196, 60, 0, 55, 29,233,231, 60,207, 95, 79, 76, 76,132, 88, 44, 70,149, 42, 85,194, 9, 33, 86,187,192,149, 35, 71,142,124,119, +230,204,153, 19, 0,204, 44,202,147,178,125,251,246,117,242,243,243,113,251,246,109, 0, 56, 95, 70,221,219, 78, 25,106,115,227, + 36,213, 2,234,161, 65,173,209,112,119,175,143, 68,173, 17, 73, 90, 35, 86,252,208, 3, 23,142,207,198,249,253,131,240, 32, 37, + 5, 50,191,158,224, 44,134,186, 47,184,162,100, 90,108,108,108,139, 77,155, 54,181, 7, 48,173, 94,189,122,127, 62,124,248,240, +165, 99,199,142, 69, 4, 5, 5, 45,174, 40,168,213, 45, 68, 92, 92,220, 99, 87,145, 91, 8, 35,165, 52,138, 82,218,149, 82,218, +189,232,250,224,169,124,189, 57, 46, 71, 94, 84, 99,120, 0,187,138,159, 54, 44, 78,180,236, 29,133,161,134,135,135,202,108, 54, + 37, 28, 56,112,192,196, 48, 12,228,114, 57,134, 12, 27,198,252,240,253,247,173,251,183,104,113,120,212,203, 47,239, 57,124,232, + 80, 84,179,102,205, 64, 41, 5,195, 48,248,245,215, 95,117,122,189, 46,179, 74,149, 42, 26, 71, 6, 13,251, 14,148,155,155,107, + 35, 90, 57, 57, 57,240,245,245,117,120,235,176, 32, 23, 7, 15,237,189,144, 69,185,183, 31,118,189,179,208,244, 69, 74,143,102, +217, 60, 39,200,225,204,200,209, 81,228,233, 33, 56,195,120, 52, 27, 18,214,211,116,175, 83,179,155, 71, 99, 78,101,234, 57,189, + 83,167, 37,210,210,210, 62,237,211,167, 79,166,191,191, 63, 81,171,213, 8, 12, 12,100,186,119,239,158, 17, 31, 31, 63,179,162, + 53,226,229,229,245,102,251,246,237,119, 36, 38, 38,246, 62,122,244,104,213, 99,199,142,245,110,223,190,253, 14, 47, 47,175, 55, + 29,132,216,248,201, 39,159, 20,136,197, 98, 52,111,222, 28,121,121,121, 40, 58,229, 83,230, 85,222, 68, 0, 0, 34,145, 8,203, +230,127,142,105,147, 39, 64, 27,115, 6,151, 79, 28,192,145, 20,130,169,115,190,130, 72, 36,170,144,175,175, 48, 31, 69,189,122, + 1,170, 27, 31, 12,235,151, 52,101,242,100,213,165, 75,151,132,239,190,255, 1,141, 75,214, 66,220,117, 1,139,182,159, 50,127, + 21,120, 35,250,213,142,152, 62,237,163,122,148,210,209,229, 97,214,246, 81,212,171, 27,160,186,254,209,168,254,177,239,191,255, +190,236,139, 47,190,208,183,104,209, 66,151,154,154, 42, 83,184,123, 68, 10,220, 52,117,227,146, 83,148, 45, 90,180,184,247,246, +219,111,103, 59,139, 57,117,234, 84,249,190,125,251, 4,125,250,244,177,100,101,101, 41,133, 50, 89, 67, 34,145, 54, 77,207,202, +114,235,221,167,207,157,222,189,123, 23,242, 60, 63,198, 25,204,207, 62,251, 76,126,243,230, 77, 65,139, 22, 45,204, 41, 41, 41, + 42,133,167, 87, 3, 86,227,209,228,126,114,170,186,105,179,102,119,223,125,247,221,130,178,210,105, 79, 82, 84, 42, 85, 98,203, +150, 45,241,245,215, 95,227,155,111,190, 65,151, 46, 93,112,245,218, 85, 68,191, 59, 1,181,199,126,128,237,167, 78, 35, 49, 49, + 17,179,102,205, 66,131, 6, 13, 32, 18,137,110,150, 8, 58,250, 6,185,152, 76,201,197,100, 74, 48,250, 6,177,222,151, 74,134, +102,230,224,177,207,151, 32,231, 63, 43, 89,211, 21,229, 79, 46,148,101,135, 85, 30,217,234,221,187,247, 56,171, 11,135,225,195, +135,159, 88,188,120,113,171,225,195, 31, 45,180,155, 55,111,142,217,179,103,183,154, 58,117,234,137, 57,115,230,160, 99,199,142, + 8, 13, 13, 45,247,224, 11,199,113,176, 88, 44,232,223,191, 63, 44, 22, 11,210,211,211,113,235,214, 45, 44, 95,190, 28,148, 82, + 41, 0,248, 7, 4, 53, 22,139,197,248,235,226,185,194,105,195,155,253,228,196, 98,138,216, 47, 98,242,243,243,209,123,236,216, +140,132,154, 53,181, 75, 51, 50, 10, 71,184,187,203,171, 61,120,224,161, 50, 26, 3,203,178, 73, 37,132,128,231,121, 27,177,178, + 18,174,226, 87,209, 68,233,144,152, 10,249,221,199,214, 39, 1, 0,218, 12, 12, 64,247, 73,213,134,250,135,201,191,109, 61,224, +145,210,123,203,236, 88,154,151,196,125, 1, 51,174, 59,161,177, 62,115,230,204, 25,104, 52, 26,244,233,211, 71,194, 48,204,188, +162,113, 94, 79, 41, 93, 66, 41, 93,104,197,146, 72, 36, 11, 6, 13, 26,196,100,103,103,227,242,229,203, 0,112,168,180,113,137, + 82,106,203,123,190,150,128,227,197, 56,121,113, 47,246, 31,219,140,251,137,233,120,144,166, 7, 4,110,208, 23, 36,192,164, 75, +132, 49,251, 34,114, 13,242,255,194,142,212, 51,113,183,240, 12,220, 66, 84,166, 86,235,133,180,169,163,148, 38,219,159, 54,180, +119, 96, 90,146,195, 82, 80,181,172,223,230,239,126,112,235,211,127, 96, 65,131, 6, 13,220, 3, 3, 3, 65, 8, 65,143,158, 61, + 73,251,163, 71, 85,194,128, 0,120, 54,106,100,219,142, 56,120,224, 0,246,238,221, 91,176,235,183,109,129,195, 70,140,120, 29, +192,218, 50, 6, 12, 65,141, 26, 53,108,191,155,156,156, 12,137, 68, 98,179,137,200,205,205,133,183,183, 55,146,147,147,225,160, +162,100,221,148,201,167, 39,167, 53,251,180,122, 51,149,144,236, 41, 72, 1, 71, 41,132,132, 3,116, 20,102, 14, 48,152, 41, 26, + 87, 99, 61,246,235, 44,238, 59,207,108,189, 7, 96,157,147, 26,173, 63, 8, 33,163,121,158,223, 12,128, 57,122,244, 40,127,253, +250,245,113,142, 26,174,151,168,182,151,203, 39, 29, 62,124,216, 99,210,164, 73, 89, 59,119,238,204,121,237,181,215,220,150, 47, + 95,238,209,161, 67,135, 73, 0,126,113,160, 82,117,132,144,181,241,241,241,227,154, 52,105, 2,173, 86, 11,147,201,132, 11, 23, + 46, 32, 44, 44, 12,231,207,159, 71,120,120, 56,206,157, 59,135,136,136, 8,112, 28, 7,189, 94, 15,158,231,185,242, 6,115,109, + 70, 58,144,249, 16, 73,103,246,224,214,149, 11, 56,156, 68,176,228,151, 29,168, 82,181,122,133,252,212, 68,248, 42,234, 4,250, +120,238,255, 98,198,103, 62,113,127,252,138,173,171,150,240, 71,246,236,169, 45, 86, 97,116,219,254,227,223, 48,154, 17, 2, 64, +252, 82,179, 38,232,234,126,147,147, 87, 69,202,161,107,101,123,178,142,240, 85,212, 9,240,246,220,247,191,121, 51, 85,119,247, +174,193,198,101, 95,211, 45,235,127,110,160, 7,154,213,169, 83,167, 43,195, 48, 26, 0,250, 34, 59, 47,135, 66,219,148,132,121, +112,199,142, 40, 61,208,236,247,223,127,239, 42,151,203,253, 0,152, 11, 11, 11, 99,159, 6,243,208,206,157, 81,214,116, 18, 66, +124, 0,152, 40,165,119,225,100, 8,158,190,125,251,206,254,224,131, 15, 38,115, 28,231,109,125,207,108, 54,179, 11, 22, 44, 16, +240, 60,207, 82, 74, 77, 12,195,152,246,237,219,199, 89, 44,150, 36,189, 94, 63,246,105, 6,146, 55,222,120, 3,167, 79,159,158, +129, 71,135, 48, 28,213, 86, 63,102,167, 85,214, 54,165, 35,248, 71,143, 30,157,245,214, 91,111, 77,249,229,151, 95,110, 45, 94, +188,184,219,152, 49, 99,240,235,175,191,162,102,205,154,248,235,175,191,240,233,167,159, 2, 64,171,169, 83,167,110, 95,185,114, +101,104, 92, 92,220,130,242,210,104, 54,155, 97,177, 88,240,243,207, 63,163, 71,143, 30,240,246,246, 70, 64, 64, 0, 8, 33,127, +140, 24, 49,226,123, 0, 96, 9, 43, 2, 0,131,222, 96,136,140,108,226,176, 6, 55, 52, 52,212, 54,214,165,164,164,216, 78, 10, +190,242,214, 91, 25, 43,190,248, 2, 63,233,116, 24,225,238, 46, 79, 8, 10,242,223,126,247,238, 40, 66,200,242,210, 52, 71, 86, +173, 78,121, 36,203, 81, 13,179, 46, 25,159,252, 54,247,190, 31,128, 46,109, 6, 6,160,205,192, 0, 52,233,238, 67, 24,150,224, +202,254, 76, 92, 61,168,221, 98,206,197, 31,206,132,203,161,148, 94,247,244,244,220,222,182,109,219,110,181,106,213,194,200,145, + 35,223, 22,137, 68, 34,179,217,252,190,213,205, 3, 33,196,141, 97,152,153,171, 87,175, 30,229,225,225,129,227,199,143,227,216, +177, 99,127, 80, 74, 31,150, 54, 46, 1,176,249,204,170, 18, 28,174,191, 25,151, 47, 79, 75, 60,137, 19,199,127, 67,205, 6,227, + 33,243,123, 29, 30,145,115, 96,138,249, 6,198,204,253,240, 8,126, 13, 9,113,119,193, 10, 36, 87,241, 31, 17,171,187,133,171, + 87,175,150,232,110,193, 89,169, 87,175, 94,171, 99,199,142, 73,244,122, 61,142, 28, 57,130,166, 77,109,103,187,254,213,248,157, +246, 92,228, 69,146,178,130, 74,151, 56,107, 18,158, 8, 35,194,195, 57, 17,131,213, 61, 94,127,189,240,210,165, 75,182, 85,159, +254,236, 89, 20,236,221, 11,142,227, 64, 41,197,177,163, 71, 49,104,224,192,124, 33, 75, 86, 84,171, 86,149, 18,250,183,239,150, +146,142,210,139, 68,162, 62,125,250,244,177, 13, 62,241,241,241, 80, 40, 20, 16,139,197,224,121, 30, 22,139, 5, 44,203,194,205, +205, 13, 22,139,197, 88, 66,102, 58, 21,203,136,153,211, 22,244, 94, 25, 61, 32, 57, 32,223, 68, 71,107,170, 33, 68, 36,179,117, + 78, 63, 53, 65,183, 6, 66,120, 9,210,232,161, 5, 47, 39,241,134,204,222,197, 99,139,149,119,228,159, 16, 18, 94,191,126,253, +239, 7, 13, 26,196, 0, 64,167, 78,157,152,250,245,235,127, 75, 8, 9, 47,227, 59,101, 98, 74,165, 82, 9, 0,236,216,177, 67, +123,235,214,173, 46, 59,118,236,208,218,191,239, 32,230,242,249,243,231, 67, 46,151,195, 98,177,192,104, 52,218,236,179,236, 95, + 77, 38, 19,188,188,188,176,107,215, 46,112, 28,183,171,188,116, 6,135, 84, 5,241,174,129,181, 59, 14,227, 88,134,200,105,146, +101,143, 89,211, 95, 25,225,231,229,121,224,127,115,103,121,103,221,185,128,132,132, 4,186,111,239,174, 63,117,148, 38,102,231, +210,105, 89,249, 52,162,208, 64,165, 77, 67,241,240,192,178,143,233,212, 54, 48,163,132, 83,131,246,152,117,252,149, 17,129,222, +158,251,190,250,223, 92, 85,246,157, 11, 72, 78, 73,193,238, 93, 59, 46,233, 40, 77,164,148,110,161,148, 14,229, 56,174, 46,199, +113,117, 41,165, 67, 75, 35, 47,206, 98, 22, 20, 20,212, 43, 40, 40,168, 87,153,152, 60,207,215,227,121,222, 97, 76,123,162,178, +112,225,194,152,228,228,228, 65,105,105,105,157,173, 87, 86, 86, 86,167,252,252,252,118,133,133,133,173,117, 11,171,186, 21, 20, + 20,248,228,229,229,249,235,116,186,198,148,210, 11,142,182, 79,123,177,247, 58,157,148,148, 52, 61, 41, 41,137,148,151, 78,102, +204, 13,178,225,171,143,126, 91,182,108,153,255,211,224, 23, 79,103,122,122,250,230,159,127,254,185, 97,245,234,213, 67,135, 14, + 29,138,165, 75,151, 98,241,226,197, 6, 0, 88,185,114,165,193, 78,147, 21,124,255,254,253, 38, 37,109, 27, 62,150, 78,134, 89, +247,202, 43,175,208, 99,199,142,161, 71,143, 30, 54, 71,162, 63,254,248, 35, 44, 22, 75,110,199,142, 29,121, 0,208,233, 11,115, + 41, 79, 97, 52,149,188,255, 94, 82,121,138,197,226, 87,237,253, 5, 90,157, 49,139,197, 98, 80, 74, 17,209,170, 85, 70,118,131, + 6,218, 85, 57, 57,133,211,235,213, 83,143,138,140, 28, 90, 11, 24, 88, 18, 38, 33,228, 49,173, 78,241,203, 81, 77,150, 61, 38, +165, 52, 77,151,132,145,191,205,189,191,215,170,217,146, 42, 5,208,231, 89,176,237,139,251,233,250,116,252, 8,224,161, 51,152, + 0,160,213,106,223,253,226,139, 47, 12,238,238,238,120,227,141, 55, 48,103,206,156, 17,173, 90,181,202,241,245,245, 61, 29, 22, + 22,118,165, 95,191,126,201, 23, 46, 92,120,183,125,251,246,184,125,251, 54,190,250,234,171,236,172,172,172, 1,101, 97, 18, 66, +108,154,188,238,209,157,180, 63,124,251, 53,223,177,237, 56,200,101,106,152,133,193,208,230,155,145, 85, 64, 97,148, 52,131, 88, + 36, 65,231, 22,117,112,122,223,154, 66,206, 88,176,182, 34,109,222,137,201,245, 89, 99, 86,138,187,133,226,233,172, 12,183, 16, +207, 34,239, 47,178,148,224, 71,235,113,141,150,245, 72,165,245,149, 16,158,227, 56, 30,213,170, 87, 83,197,221,127,184,164,111, +223, 62,195,187,118,141,150, 71, 71, 71, 75,235,196, 60,218,186,216,177, 99, 7,182,110,221, 90,184,127,255,254, 92,137,144, 93, + 25, 92, 37,216,151,227,120, 16,194,151,201,134, 85, 42,213,251,159,124,242,137, 44, 39, 39, 7,139, 23, 47,230, 27, 54,108,200, + 40, 20, 10,152, 76, 38,172, 92,185,210, 92,167, 78, 29, 33,195, 48,200,201,201, 1,195, 48, 55, 29,204,224,101, 66, 72,231,239, +219,247,218,218,228,157, 97,158,181,219,191,228,222, 46, 56, 16,230, 70, 20, 73,241,247,113,235,208,254,172,107,251, 22,101, 66, +159,218,139, 82,122,221,217, 2, 12, 8, 8,248,124,255,254,253, 62,239,190,251, 46,213,235,245,228,225,195,135,116,238,220,185, + 62, 35, 71,142,252, 28,192,155, 21,237, 79,217,217,217, 32,132,240, 69,141,214,186,234, 39, 78, 84,236, 85, 66,200,239, 61,123, +246,236,222,177, 99, 71,196,196,196,216,182, 8,237,137,150,245,244,225,188,121,243,178, 1, 76, 41, 15, 87, 40, 20, 98,241,218, +205,200,206,202,128,175,111, 0,164, 50, 89,133, 61, 46,139, 25,102,250,151,179, 62,243,201,184,113,154, 92,253,243, 48,191,233, +114,106,154,133,163, 37,123,252,207, 75,162, 69,236,191,236,213, 12,195, 78,255,114,238, 76, 55,235,182,230, 47, 23,147,115, 9, + 71,223,125,170, 94,242,162, 96,254,195, 18, 16, 16,128,164,164, 36, 18, 16, 16, 64,173,219,122,165, 17,173, 39, 26,248,163,237, + 50, 82,214,182, 97, 69,241,239,221,187, 55,183, 81,163, 70, 31,221,190,125,123, 83,237,218,181,199, 0,168, 98, 48, 24,178,167, + 78,157,250,191,149, 43, 87, 14,119, 68,147, 5, 0,191,254,250,235,162, 97,195,134,237,125,253,245,215, 63,230,121,190,190,221, + 36,114,207,199,199,199,182,133,155,158,154, 50,121,244,240,254,147,243,243,179, 28,246,115,167, 84, 42, 71, 77,157, 58, 85, 90, + 80, 80,128,239,190,251,142,175, 83,167, 14, 99, 93, 20,173, 95,191,222, 18, 30, 30, 46,232, 51,110, 92,198,194,148, 20,204, 62, +126,188, 96,114,221,186, 13, 87,221,186,213,184, 36,141,187,117,225, 88,146, 38,203,106,118, 81,193,201, 33,137, 16, 50,242,183, +185,247,127, 4,208,229,165,190,126,248,125,254,125,100,197, 25,255, 7, 11,238, 58, 18, 22,168, 4,204, 4, 66, 72,231,212,212, +212,223, 63,251,236, 51,183,198,141, 27,163,110,221,186, 66,165, 82,217,204,234, 46, 38, 39, 39, 7, 7, 15, 30,196,210,165, 75, +141,215,174, 93,235, 73, 41, 45,117,187,138,227,184,180,240,240,112,107, 57, 80, 66, 72,102,174,129,184,109,172,213, 76, 57,116, +244, 38,114,226,220, 41, 36,153,120, 24,204, 60,170, 85,143, 66,187, 46, 11,177,125,207, 21, 46, 41,238,250,117,179, 46,107,197, + 11, 62,127, 63, 19,119, 11,207,192, 45, 68,165,105,179,236, 95,255, 43, 82, 98, 15,229, 89,230,228,210,101, 63,188,250,235,207, +191,248,177, 44,227,119, 55, 54,246, 92,183, 94,189, 19, 15, 28, 56,224, 33,114,115,107, 10,128, 55,142, 25,243,167,201,160,211, +238,252,253,247,144,106,213,170, 54, 40, 10, 42, 77,121,150, 57, 89,214, 15,230,231,231, 23, 28, 63,126,188,112,202,148, 41, 36, + 62, 62,126,131,175,175,111,191, 61,123,246, 40,123,245,234,165,139,137,137,217,226,231,231,215,189,125,251,246,170,143, 62,250, +200,144,159,159,191,196,137,206,125,157, 16, 82,235,236,103, 11,222, 58, 59,255,135,151, 33, 96, 91,194, 32, 4,120,243, 73,152, +242, 14, 0,216, 64, 41,181, 84,164,144, 20, 10, 69, 3,185, 92,142, 75,151, 46,101, 53,107,214,204,168,215,235, 69,115,230,204, +241, 84, 40, 20, 13,158, 98,128,163, 89, 89, 89,224,121, 94, 0,128, 20,189,130,119,254, 44,254,155,221,186,117,251,125,227,198, +141,175, 68, 71, 71, 35, 52, 52, 20,102,179, 25,225,225,225, 48, 26,141, 8, 11, 11,131,193, 96,192,140, 25, 51,144,147,147, 51, +161,172, 96,197,132, 16, 88, 44, 22,155,177,109, 96, 80,200, 35, 63, 61, 79,225,198, 66, 33,100, 66,111,238, 92,133,180,204, 12, +126,227, 95,169,169,133, 38,174,243,237,180,130,107,197, 63, 87,200,161,160,253,208,247, 18, 1,192,192,163,204,136,243, 10, 49, + 66,111,237,250, 17,169,105, 25,248,245, 98,114,118,129,137,239,114,179, 4, 76,167,210,249,130, 96, 70,205,136, 65,239,247, 28, +255,236,197,209, 21,255, 45, 71, 9, 85,105,114, 49,153, 18,126,105, 45,138,101,171, 74,244,145,245, 52,248, 69,154,170,223,139, +218,109,124,255,254,253, 39,223,191,127,127, 86,145,191,172,101,206, 96,173, 90,181,234, 54,128, 97,101,125,230,151, 5,195,182, + 1,216,230, 12,110, 94, 94,158,254,194,133, 11,250,143, 62,250,136,196,199,199,239,241,243,243,123,101,239,222,189,242, 94,189, +122, 25,174, 94,189,122, 40, 32, 32,160, 77,167, 78,157,148,187,207,156, 73, 44,188,123,119,231,206,251,247,131,204, 60,191,179, +172,254, 89,153, 36,171, 56,217,218, 54,251,254,151,191,127,121,191, 19,111,192, 22, 99, 22,254, 4,144,240, 20,152,199, 8, 33, +181, 7, 14, 28,184,241,181,215, 94,123,169,118,237,218,168, 82,165, 10,110,221,186,133,244,244,116, 92,190,124, 25, 59,118,236, +216,161,215,235,203, 13,168,157,153,153,249, 68,120, 34, 34,243, 12, 88,243,221,244, 29,231, 78, 52, 13,111, 29, 61, 68, 86, 55, +128,135,209, 68, 17,255,224, 46,102, 76, 91, 81,152,252,224,246,117,147,197,212,243, 63,224, 67,235, 88,108,108,108, 20,203,178, +149,234,110,161,162,110, 33, 92, 82,137, 68, 43, 54, 54,254,122,104,104,240, 39, 91,183,108,110, 73, 41,195, 82, 66, 10, 52, 26, +247, 29, 15, 31, 62,204,182,255, 92, 13, 15, 15,213,176,145,195,250, 17,158, 8, 9,225, 57,158,101, 78,198,198,198,151,169, 49, + 50, 26,141,163,251,245,235,183, 88, 46,151, 79,213,106,181,151, 52, 26,205, 95, 13, 26, 52,152, 69, 41,157,166,211,233,126, 87, +169, 84,103, 94,122,233,165, 57, 33, 33, 33,139, 40,165,231,157,236,220, 22, 60,178, 15, 91, 91,201,170,220,153,148, 82, 55,129, + 64,144,115,229,202,149,159, 35, 34, 34,250, 83, 74,221, 8, 33, 57, 21,197,212,235,245,239,102,103,103,123,141, 26, 53,202,188, +124,249,242,136, 33, 67,134, 76,190,118,237,154, 80,175,215,199, 58,153,103, 3, 33,164,123,223,190,125, 87, 8,133,194,142, 12, +195, 16,158,231,169,221,115, 80, 74,193,113,220,246,242,202,133,227,184,196, 90,181,106, 61,182,130, 46,201, 62,215,108, 54, 39, + 58, 60,217, 24,185,241, 63, 28,190, 54, 79,111,166,212,194,211,209, 55, 83, 11, 74, 60,114,118,246, 38,173,227, 48,166,158, 31, +191,120,223,245,121, 6, 51,207, 91,120, 58,166, 52, 76,167, 38,197, 23, 4, 19, 0, 38,107,214,111,195,178,245, 54,195,120,235, +118, 98,241,251,202, 20,171,214, 9, 78,122,108,102,198, 60, 50,150, 47,143,240, 85, 20,191, 56,233,114, 86,122,247,238,253,204, +236, 81, 76, 38,211,167,221,186,117,155,165,209,104,254,151,158,158,126, 73,163,209, 92,143,140,140, 28,207,243,252,162,194,194, +194, 29, 42,149,234,245, 38, 77,154, 76,168, 90,181,234,154, 56, 74,215,148,215, 55,173, 90, 29, 0,212,218, 47,173, 68,194,158, + 80,152,205,230,132, 10,148, 97, 18, 33,228, 67, 0,213,240,200, 1,239, 29, 74,233, 83,149, 13,165, 52, 9, 64, 75, 66, 72,117, + 0, 29,241,200,127, 95, 54,128,123, 0,206, 83, 74, 47, 87, 24, 91,151,153, 68, 8,105,116,227,226,241, 49,183,174, 95,124,203, +122,186,144,101,197, 87, 57, 83,225, 90,179, 46,107,197,127,196, 81,233,244,176,176, 48, 55, 0,245, 1,164,226,111, 71,198,113, + 0,190,169,140,133,138,157,116,112, 81,162,167,226, 9,163,236,183, 11, 31,123,246, 44,219, 34, 33,164, 83,101,199, 67,114, 97, +186, 48, 93,152, 46, 76, 23,166, 11,211,133,249,223,195,124,209,137, 86, 9,132,118,121,169, 26, 45,151,184,196, 37, 46,113,137, + 75, 92,226, 18,151, 56, 46,165,106,180, 0,116, 42,229, 11, 14, 51,213,138,156, 62, 40, 15,223,133,233,194,116, 97,186, 48, 93, +152, 46, 76, 23,230,127, 15,243,255,155,184,182, 14, 93,152, 46, 76, 23,166, 11,211,133,233,194,116, 97,254,235,152, 47, 52,153, +114,109, 29,186,196, 37, 46,113,137, 75, 92,226, 18,151, 60, 27,177,146,170,146,140,226, 93, 68,203,121,214,202, 0,120, 27, 64, +111, 0, 53, 0,220, 5,176, 25,192,247, 78,132,169,176,199, 83, 3,152, 12,160, 37, 30, 69,175,191, 7,224, 56,128, 47, 40,165, +249,174, 18, 47, 89,188,189,189, 63, 17, 10,133, 26,224, 81,104, 19,235,171,253,255, 28,199,101,231,228,228,204,125, 70,237,128, +117,244, 84,150, 53,173,246,105,179,127, 53,155,205,207, 44,157, 46,121,110,199,145,112, 15, 15,143,159,180, 90,237, 0, 74,233, + 45, 87,137,184,228,191, 36, 62, 62, 62, 99, 76, 38,211, 84,145, 72, 52, 39, 45, 45,237,135,255, 71,253,186,196,147,135, 54,162, +181,107,215,174,163, 0, 16, 29, 29,221, 22, 0, 84, 42,213, 41,134, 97,170, 23,125, 25,192,223,177,240,138, 31,253,183,190,242, + 60,127, 47, 51, 51,179, 84, 7,106,114,185,252, 20,203,178,213, 9, 33, 96, 24,198,118,153,205,102, 21,203,178,121,165, 96, 38, +104,181,218,198,207, 73, 33, 18, 0, 59,221,221,221,245,179,102,205,250,190, 93,187,118,193, 73, 73, 73,150, 73,147, 38,181,249, +235,175,191,162, 9, 33,175, 58, 67,182, 8, 33, 45, 8, 33,107, 26, 54,108,184,109,240,224,193, 27,155, 53,107, 38,206,204,204, + 84,109,222,188, 57,112,237,218,181, 23, 8, 33, 3,156,117,113,241, 2, 52, 68, 65,105,254,204,202,122, 86, 92,132, 66,161, 38, + 33, 33, 65, 85,180,146,176, 18, 43,152,205,102,152,205,102, 20, 20, 20,160, 65,131, 6,149,158,126,127,127,255, 40, 66,200,146, +176,176,176,198, 1, 1, 1,231, 0,140, 75, 74, 74,250,203,153,180, 90, 44, 22, 80, 74,109,233,172, 93,187,182,107,100,118,174, + 13,141, 16,139,197, 93,194,194,194,154, 26, 12,134,172,123,247,238,157,229, 56,238,179,178,156, 94, 58,137,239, 6,224, 51,137, + 68,210,172, 70,141, 26,193,183,111,223,142, 55,153, 76,103, 0,204,164,148,230, 84, 6,201,106,219,182,237,137,239,190,251,206, +115,236,216,177, 39, 8, 33,173, 92,100,203, 37,255,150, 84,169, 82, 69, 83, 80, 80,176, 2, 64,148, 80, 40,244,147, 74,165,144, +201,100, 41, 18,137,228,146, 76, 38, 27,126,226,196,137,108,103, 49, 57,142,251, 44, 46, 46,206,175,121,243,230,243,235,214,173, + 59, 35, 35, 35, 67,111, 50,153, 14,101,101,101, 77,160,148,230,150,245,221,226, 92,228, 69, 34, 89,246,175, 69,227,253,223, 91, +135, 69,113,133,218, 61,198,192, 4,130,160,184,184, 56, 31,149, 74, 5,142,227,108,218, 2,235,164,102,111,219, 85,228,167, 9, +145,145,145,166,114, 38,156,224,132,132, 4, 31,165, 82,105,123,207,100, 50,193,207,207,143, 79, 76, 76,244,145, 74,165,143,125, +222,104, 52, 34, 40, 40,232,121,242,133,242,182,135,135, 71,206,195,135,241, 13,244, 6,211,204,145,239, 78,249,100, 64,239,151, +221, 79,157, 58,197,191,250,234,171,134,163, 71,143,190, 13, 96,137,131,149,226, 70, 8, 89, 59,105,210,164, 25, 82,185,218,243, +240,169,235,134,181,155,119, 37, 54, 12,175, 70, 38, 76,152,192,190,247,222,123,199,162,162,162,126, 34,132, 52,114, 70,179,165, + 82,169,246, 74, 36,146,170, 44,203,194,100, 50, 61,212,106,181,175, 60, 71, 13,177, 33,128,139,132,144, 40, 74,233, 37, 71,159, +149, 37,153,153,153,208,233,116, 79, 92,181,107,215, 70,101,219, 31, 18, 66, 4,193,193,193,191,207,155, 55, 47, 48, 37, 57, 25, + 95, 47, 92,216, 28,192,247, 0,154, 59,242,253,180,180,180, 39,210, 25, 25, 25, 9,151, 56, 85, 7,147,103,204,152, 49,239,173, +183,222, 2,199,113,208,233,116, 1,119,238,220,169, 51,117,234,212,158,132,144,166,148,210,216,167,196,247, 14, 11, 11,139, 25, + 63,126,188, 71,211,166, 77, 81, 20,165, 34,224,248,241,227,205, 87,174, 92, 57,136, 16, 18, 73, 41, 77,127,154,223,240,240,240, +248,233,199, 31,127,244,148,203,229,216,190,125,187,103,199,142, 29,143, 19, 66, 90, 87,148,108, 17, 66, 24, 79, 79,207,247, 0, +116,224,121, 94, 12,224, 76, 86, 86,214,108,103,189,186, 19, 66,252,149, 74,229, 22,134, 97,170, 21, 91, 96,123, 17, 66, 50,172, +239, 17, 66,124,120,158,255,179,172, 69,181, 75, 94, 12,241,242,242, 26,145,151,151,247,157, 68, 34, 17,185,187,187, 67, 46,151, + 67, 32, 16, 64, 32, 16, 84,145, 72, 36, 85, 36, 18, 73,215, 14, 29, 58,140, 59,124,248,112,153, 30,246, 95,138,242, 27, 10,134, +204,100, 9,195, 2, 64,237, 48, 79,181,155,155, 27,102,206,156,169,232,222,189,187, 2, 0, 78,156, 56, 49,120,200,144, 33, 29, + 9, 33,117, 75, 35, 91, 37,113,145, 23, 69, 74, 59,113,248,152, 70, 43, 58, 58,250,104,177, 78, 7,153, 76,134,141, 27, 55,130, +101,217,199,162,198,151,244,127,149, 42, 85,202, 77,136, 85, 35,182, 99,199, 14,168,213,106,184,185,185,217, 38, 26,137, 68,130, + 67,135, 14, 65, 40, 20, 66, 32, 16, 64, 40, 20,162,113,227,198, 40, 35,160,253, 51,145, 62,117, 8, 5,128, 77,239, 60, 74, 87, +159, 37,143,156, 64,110,122, 39, 18,173,107,200,208,251,189,233,253, 10,245,166, 38, 0, 10,178,179,178,178,206,109,221,154,212, + 48, 60, 92,244,211, 79, 63, 53, 13, 12, 12,236,237, 40,209, 2, 48,185, 81,163, 70, 91, 88,153,155,215,224, 33, 67, 7, 15, 23, + 48,166, 65,163, 63,154, 19,159,156, 81, 48,106,212,168,173,219,183,111, 31,252,229,151, 95,222,152, 56,113,226,100, 0,159, 58, +154,126,177, 88, 92,245,206,157, 59, 97, 60,207,163, 94,189,122,207, 77, 24, 3, 43,145,162,148,130, 16,242, 24,161, 42,235, 89, +121, 98,213, 96,149,116, 85,182, 4, 6, 6, 70, 14, 28, 56,208, 75,155,145,129,175, 23, 46,180,190,221,184,188,109, 68,235, 22, +161,209,104,196, 27,111,188, 49,144,227, 56,129,149, 4, 26, 12, 6, 99, 78, 78,142,222,238,100, 79, 58,165,244,101, 7,202,179, +186, 66,161,248, 31,128, 40,157, 78, 23, 8, 0, 10,133, 34,145,231,249,109, 5, 5, 5,159, 90, 3,248, 86,160,158,130, 1,212, + 65,233,161,160,232,188,121,243,110, 79,158, 60, 57,246,159,198, 36,132, 84,245,245,245,157,219,167, 79, 31,236,218,181, 11,187, +119,239, 54,203,100, 50,193,144, 33, 67,200,184,113,227,220,199,143, 31,223, 21, 79,225,196,177, 72,186,206,152, 49,195,163, 86, +173, 90,216,188,121, 51, 46, 95,190,172, 11, 11, 11,147,181,107,215, 14, 2,129,192,227,147, 79, 62,121, 21,192,154,167,249, 1, +173, 86, 59,251,163,143, 62, 90,251,243,207, 63,171,238,221,187,135, 37, 75,150,120,245,235,215,239, 40, 33,164,173,163,100,139, + 16, 34, 1,240, 30,128,246, 44,203,182, 30, 50,100,136,229,221,119,223, 21, 50, 12, 99, 94,184,112,161,247,202,149, 43,251,121, +121,121, 69,101,100,100,228, 59,128,197, 0,152, 57,124,248,240, 97,127,252,241,135,251,217,179,103,197,158,158,158,182, 5,118, +209,171,143,181,205, 90, 44, 22, 68, 70, 70, 6,253, 23,136, 6,203,178, 38,158,231,133, 0,164,148, 82, 67,121,247,255, 37,146, +229,233,233, 57, 54, 43, 43,235,123, 63, 63, 63,248,250,250, 62, 49,215, 26, 12, 6, 72,165, 82,145,159,159,223,143, 61,122,244, + 16,254,246,219,111,165,110, 1, 18,150,124,182,253,151, 89,129, 30,238, 42, 0,192,162,165,251, 10, 1,224,183,223,126, 67, 82, + 82, 18,220,221,221, 81,183,110, 93,118,214,172, 89,254, 19, 38, 76,248, 26,192,240,210,176,138,115,145, 23, 73,163,101, 79,182, +236,239,203,180,209,226,121,222, 22,176,212, 74,168,172, 36,168,248,255,246, 43, 32, 59,134,119,176, 88, 66, 72,126,126,190,141, +100,169,213,106, 20, 77,174, 48,155,205, 79,224,114, 28, 7, 66, 8, 45, 11,179,148, 12,143, 5,112,136, 82,122,215, 65, 38,106, +195,220,244, 78, 36,214, 74, 38,245,183,186, 80,239,250,209,163,215,181, 0, 78,221, 31,190,228,187,182,109, 3,223,155,182,120, +186, 46, 51, 41,227,147,129,175, 87, 13,243,243,148, 41,178,211,114, 60, 34, 34, 58,227,145, 71,101, 71,211,217,102,240,224,193, +235,246,159,142, 35, 82,169, 72, 36, 96, 89, 97,171,122,225,158,193,110,172,155, 10,112,139,143,189,125,106,232,208,161,245, 38, + 78,156,216,218,153,188, 51, 12, 3,181, 90,141,117,235,214,129,113, 32,118,206,179, 56, 53, 82, 66,189, 11,172, 68, 74,171,213, + 98,215,174, 93,136,142,142,190, 72, 8,137, 42,250,200, 69, 74, 41,114,115,115,145,156,156, 12,127,127,255,139,132, 16,161,253, + 54, 98,113, 76,171, 86,213, 74,170,134, 12, 25, 50,208, 98,177, 8,236, 6,137,226, 4,230, 9, 18,227,104,222, 3, 2, 2,246, + 3,120,153,101, 89, 24,245,122,227,255,190,250,202,254,241,121,123,146, 85, 26,166, 53,173, 28,199, 9, 46, 94,188, 40,180,246, + 25, 0, 66, 0, 10, 0, 94,148, 82, 48, 12,115,197,129,242,140,148,203,229,167,118,236,216,161,110,220,184, 49, 17,139,197,176, + 88, 44,184,122,245,106,240,151, 95,126, 57,250,224,193,131,175, 18, 66,106, 23, 15,158,238, 96,189,215, 57,126,252,120, 65,104, +104,104,137,196, 49, 55, 55, 87, 16, 30, 30,222, 22, 64,236,191,128,153,144,154,154,218,227,229,151, 95, 30,147,146,146, 18, 99, +177, 88, 62, 6, 80,215,203,203,235, 98,175, 94,189, 32,147,201,218, 59, 66,180,202,170,119, 31, 31,159,238, 47,189,244, 18,150, + 44, 89,130, 47,191,252,178, 19,165,244, 16, 33,164, 99,110,110,238,193,110,221,186, 65,163,209,244, 40,137,104, 57,218,150, 8, + 33,225,109,218,180,249,113,230,204,153,170, 93,187,118, 33, 44, 44, 12,121,121,121,248,240,195, 15,125, 62,255,252,243, 35,132, +144,118, 86,178, 85, 26, 38, 33,164,182, 68, 34, 89,243,243,207, 63, 43, 67, 67, 67, 67, 69, 34, 17, 19, 26, 26, 10,173, 86, 11, +189, 94, 47,153, 51,103, 78, 61,153, 76,246,215, 55,223,124,179, 6, 64,175,114,218, 18, 3, 96,246,178,101,203,198,140, 26, 53, + 74, 51,112,224, 64,206,104, 52, 62,182,192,150,203,229,143, 45,174, 35, 34, 34, 28,206,123, 81,244, 12, 53, 0,141, 51,219,174, +101,228, 61, 7,128,196,214,121,132, 66, 72,165, 82, 72,165, 82, 72, 36, 18,220,188,121,115,154, 84, 42, 93,104, 63, 22,151,133, + 73,254,158,180, 26, 16, 66,206,178, 44, 91,230,125,113,211,144,127, 98,252, 44, 33,205, 65,132,144, 69, 0,218, 63, 26,242,153, +163, 94, 94, 94,239,167,164,164, 60,112, 20, 51, 32, 32,192, 51, 63, 63,255, 27,127,127,127,248,250,250,218,230,142,192,192, 64, +152,205,102,164,166,166,130, 82,138,236,236,108,200,229,114, 4, 4, 4,124, 51,122,244,232,205,203,150, 45,203, 44, 17,147,199, +151,221,250, 77,253,140,101, 89, 6, 0, 88,129, 82, 57,126, 10, 80,181,106, 85,180,106,213, 10,122,189, 30, 57, 57, 57,168, 83, +167,142,128, 16, 50,152, 97, 24, 53,165,244, 7, 74,233,225,255,160,214,189, 84, 99,248, 25,197,247, 69, 9, 33,224,121, 30, 2, +129,224, 49,162, 85,252,178,146,162,162,246, 74,202, 91, 57, 25,141, 70, 27,201,114,115,115,179,145, 52,139,197, 82, 26,209,170, + 8, 83,175,207,243,124,117, 66,200, 50, 71,201, 86,113, 25, 60,120,240, 19,246, 30, 19, 38, 76, 72, 72, 75, 75,163,111,116,110, +160,136,217,147,148, 92,195, 93, 41,243, 86,169,170, 73,221, 61, 52,153,153,153,127, 2,208, 56,241, 19, 53, 27, 53,106, 36, 91, +187,245,120,194,200, 15,230,205,106, 28,234,169,174, 31,228,229,238,231, 38, 19, 43, 25, 82, 32,181,152, 19, 60, 60, 60,194, 42, +176, 66, 3, 0,104, 52, 26, 8, 4,130,231, 66,163, 69, 41,181, 16, 66,162, 8, 33, 23,119,237,218,133,102,205,154,217,200,150, +149,132,228,228,228,224,234,213,171,104,211,166, 13, 0, 68, 57, 98,171,197,243, 60, 76, 38, 19, 76, 38,147,141,192,136, 68,162, + 39, 8,140,245,179, 44,203, 94,169, 96, 22,102,185,187,187,183,105,223,190,189,248,151,141, 27,197,148,210, 2, 60, 10,124,157, + 79,105, 41, 1,178,139,137,197, 98,177,105,217,132, 66, 33, 30, 62,124,104,155,184,172,154,225,226, 91,231,165,137, 68, 34,249, +232,215, 95,127, 85, 55,109,218,148,100,102,102,130,231,121,219, 32,249,253,247,223, 75,123,247,238, 29,120,225,194,133, 79, 80, +129,112, 54, 0, 72,105,132, 8, 0,212,106,181, 5, 0, 83, 25,152, 22,139,133,180,108,217,114, 98, 70, 70, 70, 61,157, 78, 55, +199,145,118, 4, 96,123,209,101, 29, 83,254,138,137,137,209,245,237,219, 87, 86,173, 90,181,102, 79,219, 86,195,195,195, 91, 8, +133, 66,156, 57,115,198, 0,192,186,178, 62,122,249,242,101, 67,175, 94,189, 36,193,193,193, 45,156, 24,112,195, 35, 35, 35, 15, +248,248,248,200,172,218,160, 62,125,250, 8,151, 47, 95,174, 74, 76, 76,132,201,100,194,228,201,147,241,218,107,175,193,203,203, + 11, 19, 38, 76,240,157, 63,127,254, 79, 0, 26,149,129, 41, 21,139,197,235,238,220,185, 19,230,239,239, 47, 59,125,250, 52,234, +215,175,143,140,140, 12,164,164,164, 32, 63, 63, 31, 41, 41, 41, 24, 62,124,184,207,215, 95,127, 29,224,128, 38,203, 70,178,150, + 47, 95,158,189,101,203, 22,118,197,138, 21, 42,251, 5,118,241,197,117, 73,139,106, 7, 36, 91, 36, 18, 65, 46,151,107,178,179, +179,115,158,162,138, 36, 0,196,246, 36, 75, 34,145, 64, 34,145, 64, 42,149, 62, 85, 92,214, 23,100, 18, 15, 36,132, 92, 23,137, + 68, 18,185, 92, 46, 98, 24, 6, 18,137,164,179,135,135,199,181, 87, 94,121,165,238,254,253,251,227, 28,193,209,235,245,235, 36, + 18,137,208,199,199, 7, 0, 16, 22, 22,134,250,245,235,163,160,160,128,207,201,201,129, 70,163, 97, 30, 60,120, 0,157, 78,135, +228,228,100,132,132,132, 8, 25,134, 89, 7,224,213,146,240, 78, 94, 72, 94, 10, 96,169,245,222,219,219, 59, 21,128,204,122, 47, +149, 74, 17, 24, 24,136,196,196, 68,168, 84, 42,246,243,207, 63,239,181,113,227,198,158,132,144,193,148,210,245,118, 80, 51, 94, + 84, 27, 45, 43,201,178,127,125,140,104, 69, 71, 71, 79,223,181,107, 87,219,146, 38,178,162,253,218, 82, 53, 89,214,203,145,142, + 71, 8, 1,199,113,240,245,245,133, 92, 46,135, 92, 46,183,238,249,131,227,184, 39,240,139, 86,248, 78,103, 86,161, 80,224,173, +183,222,162, 63,252,240,195,152, 34,178,117,199,209,239,246, 89, 18, 99,211, 98, 21,151,218,181,107,159,250,228,147, 79,186,255, +241,199, 31,137,141, 67,171, 9, 20, 73, 15,242,165,106,141, 6, 65, 85,162,135,244,232,117, 25,143, 78, 31, 58, 42,119,242,242, +242,100, 53,130,228, 70,134,209,147, 42, 18,129,202, 95, 33,146,248,185,187, 7,138,140,134, 52,181,187,187,216, 96, 48,100, 3, +200, 42, 11, 68,173, 86,239,147, 72, 36, 33, 44,203,130,101, 89,120,121,121,185, 81, 74,161,209,104, 16, 20, 20,164,140,136,136, +184, 37, 16, 8,192, 48, 12,242,243,243, 31,220,191,127,191,115,121, 9,115,119,119,223, 39,145, 72, 66, 24,134, 1, 33, 4, 44, +203,218, 14, 46, 88,255,103, 89, 22,132, 16, 20, 22, 22, 58,132, 73, 41,189, 68, 8,137,138,142,142,182,145,173, 61,123,246,160, + 75,151, 46,200,206,206,198,181,107,215,236, 73,150, 67,219,134,246,198,239,148, 82,136, 68, 34,220,188,121,243,177, 45,109,235, +165, 82,169, 42,220,121, 60, 60, 60, 78,244,233,211, 7, 63,254,248, 35,165,148, 18, 0, 10, 66, 72,125, 55, 55,183,155,215,175, + 95,119,200, 14,134, 82, 10,147,233,239,143, 90,219,184,125,255,114,130, 76,119,110,212,168, 17,201,201,201,177, 18, 72,219,130, +136,101, 89,124,247,221,119,178,166, 77,155, 78,149, 74,165, 19, 69, 34, 81,174,217,108,254, 69,175,215,207,161,148,102, 63, 79, +131, 82,235,214,173, 63,136,143,143,127, 45, 36, 36,100,199, 83,144,120,218,164, 73, 19, 35, 0, 25,203,178,194, 74, 24, 40,217, +162,182,165,183,146,125, 74,169,165, 81,163, 70,250,162, 73,158,117, 20,203,203,203,235,167,221,187,119, 7,133,132,132,192,108, + 54,195, 98,177, 32, 63, 63, 31, 71,143, 30,133,193, 96,128,197, 98, 65, 88, 88, 24, 62,251,236, 51,253,251,239,191, 47, 93,182, +108, 89, 90,126,126,254,128,114, 96,223,223,188,121,179,194,223,223, 95,166,211,233, 16, 27, 27,139, 70,141, 26, 33, 47, 47, 15, + 5, 5, 5, 40, 44, 44,132,201,100, 66,110,110,174,134,227, 56, 99, 57, 88,211,236, 73,214,232,209,163,175,136,197,226, 70,239, +190,251, 46, 18, 18, 18,108,125,126,228,200,145,240,245,245, 45, 62,214, 59,197,180, 4, 2, 1, 36, 18, 9, 68, 34, 81,118, 72, + 72, 8, 8, 33,210,184,184,184,138,108,197,169, 1,228, 10,133, 66,177, 61,193,146, 72, 36, 56,115,230,204, 39, 98,177,184, 68, +109, 86, 89,237,199,153,251,231, 96, 34, 95, 36, 18,137, 36, 30, 30, 30, 34,187,121, 90,164, 84, 42,225,227,227,179, 4, 64, 87, + 7,243,221,208,195,195,195, 54,190, 55,104,208, 0,241,241,241,219,114,114,114, 6,165,165,165,129, 97,152,117, 12,195,244,180, +242,128,172,172, 44, 4, 7, 7, 55, 44, 13,175,101, 35,255, 49, 32,212,166,209,170, 93,211, 67, 89,108,158,130, 90,173,198,253, +251,247, 81, 80, 80, 64,111,223,190, 77,198,142, 29, 75,140, 70,227,106, 66,200,159,148,210,123,101,113,145, 23, 65, 42,100,163, +101, 45,224,210,136, 85,113,226,229, 8, 33, 50, 26,141,202, 70,141, 26,241,214, 9,220,122, 1, 32,165, 17,173, 34,205,129,211, + 34, 20, 10, 85, 99,199,142,205,251,225,135, 31, 70, 19, 66,150, 83, 74,111, 87,180, 0,119,108,249,217,247,203,207, 38,127,230, + 17, 80,173,198,196,137,211, 4,175,191,254,250,233,181,107,215,114, 30,181,186,118, 60,188,111,189,239, 55, 31, 78,218,179,123, +247,110,224,145, 97,180,163,114, 98,231,206,157,126, 19,222, 27,135,207, 62,122,127,175, 58,204, 75,172, 36, 30, 10,169,161, 32, + 93, 9,170,147,212,140,124,109,235,142, 29,201, 0, 46,148, 5, 34,147,201, 66,110,223,190, 29,102, 79, 36, 76, 38, 19, 52, 26, + 13,214,174, 93,235,173, 82,169,188,149, 74, 37, 4, 2, 1,234,215,175,239,168,198, 36,228,214,173, 91, 97, 42,149, 10,133,133, +133, 48, 24, 12, 48,155,205,224,121, 30,132, 16, 8,133, 66,136,197, 98, 40, 20, 10,167, 78,246,217,147,173, 61,123,246,160, 78, +157, 58,200,202,202, 66, 76, 76,140,211, 36,203, 94, 75,100,111,143, 37, 16, 8,240, 83,104, 40, 70, 38, 37,217, 8,204, 34, 55, + 55,124,198,243, 21,170,251,122,245,234,209,147, 39, 79, 98,239,222,189,232,214,173, 27,249,253,247,223, 77, 28,199,137, 18, 19, + 19, 29,214,142,241, 60,111, 75,171,117,220,182, 39, 88,206, 18, 45,139,197,162, 18,139,197,208,235,245,182,173,125,251,171,122, +245,234,208,106,181,130,220,220, 92, 65, 82, 82,146,124,246,236,217,239, 30, 57,114,196, 31, 64,255,127,115, 32,250,225,135, 31, + 66, 70,142, 28,249, 80, 32, 16,208, 46, 93,186, 12,124,240,224, 65, 15,127,127,255, 67,127,252,241,199, 87, 0,194,157,197,243, +246,246, 62, 47, 16, 8,130,148, 74,165,104,211,166, 77,230,188,188, 60,145,143,143, 79,170,149,216, 90,203,218,108, 54, 39,228, +228,228, 52,118, 4,207,219,219, 91,244,237,183,223,154, 51, 51, 51, 69,126,126,126,169, 86, 28,133, 66, 33,218,180,105,147, 57, + 55, 55, 87,164,209,104,206,103,103,103,151,139,151,145,145, 49, 96,240,224,193,199, 15, 29, 58,228,197,178, 44, 30, 60,120,128, +204,204, 76,104, 52, 26,172, 91,183, 14, 33, 33, 33,216,188,121,179, 86,171,213,142,248,223,255,254, 55, 53, 63, 63,223, 17, 87, + 15,109,154, 53,107, 22,146,157,157, 13,141, 70,131,130,130, 2,156, 63,127, 30,181,107,215, 70, 82, 82, 18, 24,134,129, 70,163, +193,247,223,127, 95, 72, 8,209,150, 51,118,244, 24, 53,106,148, 6, 0, 70,141, 26,165, 25, 53,106, 84,137, 19, 92,139, 22, 45, +176,100,201, 18,167, 22,213,197,181,236, 86, 82,100, 71,142,244, 45, 90,180,192,145, 35, 71, 38, 57, 67,142, 40,165, 70,161, 80, +248, 24,193,178,251,223,226,108, 27,226, 56, 78, 84,100, 35, 74, 28,185,127, 14,164,173, 76, 38, 19, 21,127,179,176,176, 80,228, +239,239,223,218, 9,226,235, 41,147, 61, 82, 56,133,132,132, 32, 39, 39,135, 51, 26,141,253,214,173, 91,103, 6,128, 70,141, 26, +245,227, 56, 78,111,177, 88, 88,177, 88,140,130,130, 2,248,248,248,120,150, 10,200,224,227,237,191,204,246, 43,110,163,229,239, +239,143,168,168, 40, 24, 12, 6, 36, 39, 39,227,232,209,163,102,142,227, 54,252,240,195, 15,188,183,183,247,176, 55,222,120,131, +189,112,225,194, 59, 0, 62, 40,139,139,188, 40,218,172,210,200,150,245,212, 97, 91, 0, 71, 0,180,179,102,210,126,235,176, 44, + 77,150, 51,171, 28,150,101,179, 19, 18, 18, 20, 10,133,194,246,158,217,108, 70, 64, 64, 0,207,243, 60, 41,254, 59, 21, 84, 81, + 63, 70,182,166, 76,153,146,253,253,247,223, 15,130,131, 6,229,155,222,137,196,218, 98, 36,107,233,151, 51,151,124,251,229,108, +143,187,123, 87, 99,197,226, 5, 28,199,225, 66,189,122,245, 90,231,231,231, 11,220, 20,102,100,100, 99, 15, 30,249,209,162, 14, + 86, 8, 3, 96,213,217,179,103, 47,116,237,218,245,228,170, 95,183,122, 36,197,198,254, 41,201,205, 72, 86,215, 12, 19,136, 2, + 67,122,230,233,245,162,126,253,250,121, 3,120,163, 44, 44,134, 97, 16, 27, 27,139,184,184, 56, 40,149, 74,168, 84, 42, 40,149, + 74,168,213,106,168, 84, 42,168, 84, 42,167,203,144, 97, 24,112, 28,135, 45, 91,182, 64, 46,151, 67,161, 80, 60,118, 89, 73,214, +211,212, 77,151, 46, 93,160,213,106,161, 84, 42,109,219,157,206,136,213, 70,203,104, 52,194,104, 52,194,100, 50,113, 0,132, 2, +129, 0,195, 19, 18,108, 90, 30,103, 8, 76,113,169, 95,191, 62,253,243,207, 63,113,242,228, 73, 20, 20, 20,224,219,111,191,133, +191,191,127, 7, 0,211,156,197,178, 51,210,231,114,115,115,133,185,185,185, 54,237,160, 80, 40,180,105, 15, 28,157, 28, 4, 2, +129,109, 53,106,189,236,181, 90, 44,203,194,215,215, 23,126,126,126, 88,186,116,169,168, 90,181,106,175,253,155,131,208,252,249, +243,107, 46, 90,180,104,229,218,181,107,247, 12, 24, 48, 96,227,213,171, 87,135,186,185,185, 93, 57,124,248,240,108,137, 68,194, + 87,176,127, 7, 37, 37, 37,249,216,191,197,243,188,220, 98,177,216,136,109, 97, 97, 33,234,214,173,235, 48,222,245,235,215,229, + 0, 48,123,246,108, 33, 0,185,213, 24,220,138, 89, 88, 88, 40,172, 93,187,182, 67,134,224,148,210, 91,132,144,214,157, 58,117, + 58,117,224,192, 1,247,144,144, 16, 36, 38, 38, 34, 49, 49, 17, 53,107,214,196,220,185,115, 11,114,115,115, 91, 22,145,171,223, + 29,204,118,128,187,187,187,240,225,195,135,176, 88, 44,104,216,176, 33,190,255,254,123,244,235,215, 15,117,235,214, 69,110,110, + 46,174, 95,191,142, 53,107,214,184,139, 68,162, 50,199, 14,157, 78,247,251,242,229,203,131,139,107,180, 6, 14, 28,168, 72, 77, + 77,181,181,201,153, 51,103, 62, 54, 46, 59,179,203, 80,180,181, 85,234, 85, 17,177, 88, 44,106,169, 84,154, 43,145, 72,196, 86, +251,172,163, 71,143, 58,173,205,178, 95, 0, 58,115,255,111,138,149,180, 22, 23,177, 88, 12, 63, 63, 63,135,113, 36, 18, 9,177, +142,141, 22,139, 5, 57, 57, 57,156,191,191,191,109,123,255,226,197,139, 92,213,170, 85, 57,150,101, 89,177, 88, 12, 66, 8,228, +114,121,169, 3, 62,229,232,204,215,251, 77,179,157, 58,100,132, 10,245,248, 41,143, 22,253, 23, 47, 94,132,201,100,194,209,163, + 71,205,255,251,223,255,146,178,179,179,199, 3, 16,236,219,183,111,240,164, 73,147, 88, 31, 31, 31,155, 29,109, 73, 92,228, 69, + 35, 91, 37,105,185,172,179,208,145,232,232,104, 82,116,180,146, 88, 9, 14,165,244, 9,114, 85, 26,241, 42,234,124,164,188, 78, +199,178, 44,246,238,221,107, 35, 4,214, 83,135,148, 82, 84, 54,209,242,244,244, 44,104,214,172,153, 58, 62, 62,254,231,138,106, +178,150,126, 57,115,201,188, 89,159,123,104,111,156, 70, 66, 82, 50,180,105,230, 11, 39,174,220,223, 6, 96, 27, 0, 96, 89,173, + 35, 24,125,227, 59, 71, 49,107,121,203, 27,212, 11, 80,109,123,185,235,107,193,125, 71,125,192,188,253,246,219,173, 6, 15, 30, +156, 51, 96,192,128,247,148, 74,101,184,201,100,202,218,186,107, 87, 92,223,190,125,171,113, 28, 55,184, 60,159, 35,102,179,249, + 65,175, 94,189,108,101,235,231,231,167,254,229,151, 95,124, 85, 42, 21, 6, 14, 28,152, 30, 23, 23,103,219, 46,202,203,203,123, +224, 72, 26, 77, 38,211,131, 6, 13, 26,148,186, 93,104,213, 72, 58,131, 89, 84,151,182,211,133,153,153,153,184,121,243, 38, 4, + 2, 1,154, 55,111,142, 19, 39, 78,160, 85,171, 86, 78,157, 56,212,235,245, 8, 9, 9,129, 94,175, 71, 65, 65, 65, 33, 0,201, +186,106,213, 0, 0,239,100,102,226,252,255,254,135,211,243,230, 85,168, 29, 53,104,208,128,158, 57,115, 6, 87,174, 92,129,193, + 96,192,136, 17, 35, 80,180,109, 8, 0,175, 56,145,231, 80, 63, 63,191, 46, 93,187,118, 13, 0,128,130,130, 2,114,246,236, 89, + 72,165, 82, 16, 66,144,156,156,140, 29, 59,118, 32, 49, 49, 17,132, 16,184,187,187, 7, 17, 66,170, 81, 74,239,151, 49, 49,144, +251,247,239,227,139, 47,190, 0,207,243,152, 52,105, 18,194,194,194,108, 4,235,193,131, 7,152, 61,123, 54, 56,142,195,231,159, +127,142,154, 53,107,194,108, 54, 75,157,241, 83, 86,217, 50, 97,194,132,187,219,182,109,219, 19, 31, 31,255,234,151, 95,126,217, +150, 16,194, 79,156, 56,241, 11,181, 90,205, 61, 13,110, 86, 78, 30,110,222,121, 96, 35, 66,197, 47,111, 47, 15,167,241,110,199, +198,219,190,207,113,246,120, 28, 60, 61,220,157, 77, 98,161,217,108, 46,232,217,179,167,102,203,150, 45,164,102,205,154,184,119, +239,158,117,113, 90, 88, 1,151, 14,137, 90,173, 54,140,101, 89,209,157, 59,119, 80,181,106, 85, 52,107,214, 12,115,230,204, 65, + 70, 70, 6, 44, 22, 11,124,124,124,120,179,217,124,209,104, 52, 30, 43, 7,107,230,232,209,163, 69, 0,198, 20,105,182,234,141, + 31, 63,158, 95,176, 96, 1, 46, 94,188,104, 27,143,237,141,225,157,221, 58,180,215, 58,217, 95, 71,143, 30,157, 36, 22,139, 41, +128, 51, 0,156, 34,218,148, 82, 99,149, 42, 85,138, 99, 91,158,151,201,246, 89,158,100,244,247,247, 63,170, 82,169, 94,203,202, +202,122, 76,171,213,178,101, 75,147,175,175,239,113, 71,113,148, 74,101, 22,203,178,158, 0,144,152,152, 8,133, 66, 33,138,141, +141,157, 71, 8,153, 12, 0,213,170, 85,155,167,213,106, 69,213,138,198, 83, 63, 63, 63, 24,141,198, 82,205, 88, 78, 93, 76, 89, + 13, 96,181,221,220,155,156,147,147, 35, 91,176, 96, 65,254,188,121,243,116, 28,199, 25, 0, 28,206,206,206,182,249,209,170, 90, +181,106,142, 80, 40,244,208,104, 52,129,118, 80, 79,112,145,255,194,246,161,189,195, 82, 90,194,151, 74,212,100,149, 68,182, 28, +209, 74, 16, 66,160,211,233, 30,211,142, 88, 79, 29,150, 68,180,138, 38,244, 10,109, 29, 22,145, 44,217, 47,191,252,178, 97,241, +226,197, 39, 29,253,158,189,141,214,178,175,102,125,105, 37, 89,151, 79, 30,192,239, 49, 57, 25,147,230, 45, 92, 84,209, 74,168, +237,173,168,239,231,235,117,228,127,115,103,170,239,238, 93,131,141,203,190,166,151,207,157,107,122,238,220,185, 65,227,198,141, +171, 82,212,176,180, 0,254, 2,208,215,145, 83, 58,233,233,233,143,217, 71,133,133,133,221,210,104, 52,190, 82,169, 20,177,177, +177,249,215,174, 93,115,122, 75,166, 56,102, 37, 49,253,199, 72,214,181,107,215,208,190,125,123, 0,192,137, 19, 39,208,178,101, + 75,167,200,150,217,108,206,174, 85,171,150, 77,187,149,147,147,195, 3,192,168,228,100, 44,247,247,135, 64, 32,192,233,121,243, +240,169,217,140, 57, 66,231, 76,119, 26, 54,108, 72,207,157, 59,135,184,184, 56, 88, 44, 22,116,239,222,221,158,100, 57,147,231, +186,145,145,145, 7, 15, 31, 62,236,173, 84, 42, 81, 80, 80,128,252,252,124, 12, 25, 50, 4,253,250,245,131,193, 96,192,166, 77, +155,176,125,251,118,168, 84, 42, 20, 20, 20,160,160,160,192, 61, 58, 58,250, 20, 33,164, 77,105,182,133,148, 82,218,185,115,103, + 28, 63,126, 28, 44,203,162,105,211,166,200,204,180, 29, 6,130,175,175,111, 73,207,216,162,254,254,175, 76, 72, 2,129,128, 30, + 61,122,244,203,182,109,219, 34, 62, 62,254,213, 70,141, 26,125, 59,116,232,208,196,167,197,117,119, 83,161, 65,237, 80, 24, 12, + 6, 24, 12, 6, 4, 4, 4, 32, 47, 47, 15,119,239,222,133,193, 96,128,175,143,198,105,188,168,186, 53,109,120, 62, 62, 62, 40, + 40, 40,192,253,251,247, 97, 52, 26,225,229,229,238, 76,253, 7,119,238,220,249,143, 13, 27, 54,120,174, 89,179,198,216,174, 93, + 59,241,183,223,126, 75,212,106, 53,210,210,210, 42,154,229,163, 39, 78,156, 8,233,212,169, 83,196,141, 27, 55,112,244,232, 81, + 24,141, 70, 68, 69, 69,225,246,237,219,104,209,162, 5,242,243,243,207,156, 59,119,110,187, 3,147, 2, 79, 8,153, 58,122,244, +104, 88,201,214,241,227,199,145,156,156, 12,149, 74,245, 4,209,178,218, 62,138,197, 98, 0, 8,112, 80,115, 98, 59, 21, 88,164, +121,250, 84,163,209,152, 0, 44,122,154,182,248,240,225, 67, 73,253,250,245, 13, 82,169, 84, 92, 68,218, 22,254, 91,109,187,132, +122,127,170,147,140,101,137,159,159,223,120, 47, 47,175, 78,213,171, 87, 71,106,106,170, 72, 44, 22,163,101,203,150,166, 38, 77, +154,152,252,252,252,222,113, 20, 71, 34,145,220, 16,137, 68,109, 30, 45, 38, 56, 60,124,248, 16,148,210, 73,117,235,214,125, 63, + 47, 47, 15,153,153,153, 98,181, 90,109, 91, 84, 71, 68, 68,192, 96, 48,220,112,130,108,206,172, 90,181,234, 84,145, 72, 52, 39, + 61, 61,253,135, 18,202, 72,220,160, 65, 3,181, 72, 36,130,201,100,122,140,108,150,196, 69, 94,100,146,245, 24,209,178, 99,145, +197,213,233,229,110, 27, 58,106,163, 69, 8,129,209,104,132, 66,161,176,109, 73,217,123,130, 47,137,104, 85, 68,130,131,131,209, +172, 89, 51,217,198,141, 27,127, 90,176, 96,193,169,138, 96,108,222,176,222,223,141, 47, 12, 78, 58,179, 27,183,174, 92,192,182, +235,217, 25,147,230, 45,124,239,245, 55,250,167, 22, 39,102,155, 70,151,143, 23,238,163,168, 27,232,235,121,228,171,249,243,212, +218, 27,167,145,156,146,130,221,103,206, 93, 48, 82,122, 29,192,164,202,170,108,251,211,107, 21, 37,169,207, 96,224,177,185,119, +200,200,200,192,245,235,215,173, 36, 43, 10, 0, 90,181,106,117,209, 74,182, 46, 92,184,128, 70,141, 26, 61,225,222,225, 9,205, + 67, 86,214,220, 98,191,209, 9,128,151,149,240, 11, 4, 2,180,156, 58,213,105,146, 69, 8,161, 28,199, 65,171,213, 90, 87,138, + 21, 34, 89, 69,131,226, 71,135, 15, 31,246, 94,181,106, 85,238,218,181,107, 51,121,158, 23, 54,104,208, 32,168,113,227,198,100, +221,186,117, 0,128,190,125,251, 98,210,164, 73,184,118,237, 26, 20, 10, 5, 90,181,106,197, 77,159, 62,221,103,252,248,241,239, +224,145,159,164, 39,132,227, 56, 81,181,106,213, 14, 1,232,112,227,198, 13, 0, 56, 69, 41,109,105,125, 94,214, 51, 7,132,207, +203,203, 19,170, 84,170, 18, 93, 67,136, 30, 29,235,116,118,171,207,134,121,242,228,201, 47,190,250,234,171,109, 31,126,248,225, +157,167,196, 44, 81,163,245,218,107,175, 65,103, 48, 33, 33, 53, 7, 28,103,129,206,148,230, 52,158,189, 70,235,181,215, 94, 67, +161,222,136,135,201, 90, 88, 44, 28,242,116, 22, 71,219,145,252,229,151, 95,222,247,203, 47,191,248,253,249,231,159,224, 56,142, +191,125,251,246,253,158, 61,123,170, 39, 78,156,232,105,103,131,234,172, 44,238,223,191,127,239,147, 39, 79,106, 35, 34, 34, 60, +206,156, 57,131,180,180, 52, 88, 44, 22,116,232,208, 1, 98,177,248,225,188,121,243, 68, 0, 22, 59, 56, 57, 88,201,150,233,220, +185,115, 35, 79,159, 62,237,225,225,225, 33,230, 35, 35,145,124,224, 0,182,108,217,242,196,119,150, 45, 91, 6, 0, 14,121,225, +183,106,156,206,158, 61, 91, 41, 4,171,248,118, 89, 69,183, 31, 95, 84, 57,115,230, 76,226,184,113,227,106,171,213,234, 69,173, + 91,183,110,239,233,233,201,184,187,187, 31, 13, 12, 12,124,191,126,253,250, 15,156,152, 39,134, 42, 20,138,187, 22,139,133,205, +207,207, 71, 65, 65, 1, 0,192, 98,177,136, 25,134, 65,181,106,213,108,202,147,166, 77,155,194,207,207,143,139,137,137, 25,234, + 40,126, 90, 90,218, 99,167, 16, 75,144,209, 45, 91,182, 20, 24, 12, 6,196,197,197,157,176,127, 80, 26, 23,121,222,165, 66, 65, +165, 25,134, 1,165, 20,210,198,141, 75,237,112, 37,116, 62, 82,124,242,179,247,181, 97, 61, 93, 56,114,228, 72,219,103, 46, 92, +184, 96, 51,138,239,222,189,251, 99,152,103,207,158,125,130,108, 57, 18, 49, 60, 45, 45,237,198,166, 77,155,206,205,159, 63,255, +140,131, 5,100,195,180,218,104,245,126,107, 96,242,146, 47, 62,187,186,118,199,225,186,201, 58,154, 60,105,222,194, 15,139,147, + 44, 71, 49,107,249, 41,107, 5,249,120, 30, 93, 48,127,158,155, 85, 59,246,203,197,148, 28, 88,232,104, 39, 43,178,220,188,219, +107, 22, 9, 33,124,101, 96, 86,160,193, 61,134,105,239,222, 33, 57, 57,217, 70,178,236, 28,150, 70,181,106,213,234, 98, 17,201, +178, 62,179, 84, 36,157, 2,129, 0, 31,230,231, 67, 32, 16,160,221,140, 25,232, 48,107,150,211,121,231, 56, 14, 2,129, 0, 97, + 97, 97, 78,147, 44,123, 76, 66, 72,203,194,194, 66,172, 89,179, 38,239,206,157, 59,161,213,171, 87, 31,191,122,245,234,133,114, +185,252,177,239, 20, 22, 22,226,245,215, 95,199, 15, 63,252,128,206,157, 59,155,135, 14, 29, 42, 97, 24,166, 83, 89,233,140,139, +139, 27,221,177, 99,199,101,122,189, 94,144,153,153, 57,218,209,103,229,229,125,211,166, 77,119,194,194,194,218,162,116, 23, 14, + 60,128, 63,159, 6,115,209,162, 69, 0, 16,241, 52,152,165,105,180,126,253,245, 87,240, 60,143, 96, 63, 13, 12, 6, 3,138,151, +117,121,152,197, 53, 90, 27, 55,110, 4,207,243,168,226,239, 1,163,209, 8,171, 1,113,121,152,158,158,158, 95,175, 93,187, 54, + 40, 38, 38, 6, 9, 9, 9, 88,184,112,225,131,236,236,236,174,217,217,217,146,233,211,167, 31,121,235,173,183,124,121,158, 55, + 56,219, 55, 41,165, 6, 66,200,208,151, 94,122,105,221,236,217,179,239, 69, 70, 70, 86,105,217,178,165, 38, 51, 51, 51,253,210, +165, 75,247,151, 45, 91,166,180, 88, 44, 67, 75,219,146, 42, 5,147, 7, 48,157, 16,242,131, 70,163,217, 22, 23, 23,215,180,102, + 86, 22, 27, 64, 8,154, 54,109,250,152,233, 0,195, 48, 56,126,252, 56,120,158,191,235, 72,121, 38, 38, 38,206, 40,210,166, 58, + 69,176, 28,233,239,103,207,158,157, 82,132,125,206, 17,236,127, 98,172,179,106,156,157,185,119, 54,157,223,125,247, 93, 2,138, +249, 71,115, 54,157,103,207,158,141,235,212,169,211, 44, 95, 95,223,233, 82,169, 20,233,233,143,130, 29, 88, 53,143,214,249,186, +113,227,198,232,220,185, 51,110,221,186, 53,107,234,212,169,113, 79, 83,158, 69, 11,238, 80, 0,131, 58,118,236, 56,177,119,239, +222,248,238,187,239, 64, 41, 93,249, 95, 32,193,229, 6,149,142,142,142, 38,246,175, 69, 91, 51,241,119,239,222,245,183,239,112, +246, 49, 10,173,157,206,106, 80,119,236,216, 49,139,125,231, 43,101, 37, 30,127,242,228, 73,223, 3, 7, 14, 8,173, 21, 90,100, +212,201, 39, 37, 37, 49, 71,142, 28,177,105,199, 4, 2, 1,142, 30, 61,106, 49,153, 76, 15,157,205,240,173, 91,183, 22, 87, 70, +193, 29,187, 22,247,254,190,221,191,121, 53,111,214, 58, 91,237,225, 81, 98, 71,182,122,144, 47,179,129, 9,152, 57, 95,206,157, +169,177,146,172, 95, 47,166,100,235, 13, 92,251, 27,233,133,151, 43,187,178,243,242,242,226,172,167, 11,243,243,243, 31, 62, 71, +141,240, 18, 33, 36,202,223,223,255, 34,138,157, 46,180, 62,107,212,168,209, 19,207,156, 82,155,240, 60,220,220,220,108,131,132, +179,118, 89,132, 16,106,221,202, 46, 74, 23,121,202, 60,159,188,122,245,106,213, 33, 67,134,168,194,194,194, 98, 9, 33,194,225, +195,135,155,252,252,252, 68, 39, 78,156, 48, 3, 32,109,219,182, 21,164,164,164,208,196,196, 68,109,183,110,221,242, 70,142, 28, +233,249,215, 95,127,137,121,158, 63, 88, 14,246, 61, 0, 29,157,125, 86,158,244,238,221, 59, 22, 37, 56, 14,125, 26,121, 22,152, + 86,209,102,231, 34, 54, 46,177,200,131, 57, 15,238, 65,170,205,174,202,108,182, 64,155,155,233,180, 70,235,238,253,196,162,144, + 99, 28, 56, 46,169, 8,239,145, 65, 60,205, 42,116, 68, 91,208,106,209,162, 69, 93, 25,134, 97, 78,159, 62,109,152, 63,127,126, +124,122,122,122,119, 74,233,195,162,118,214,110,205,154, 53, 63, 57,224,202,161,180,186,191, 78, 8,105,241,241,199, 31,191, 7, +160, 21,128, 42, 0, 30, 2, 56, 1, 96,113, 69, 61,152, 83, 74,211, 8, 33,175,116,237,218,245, 0,203,178,213,236,250,145, 23, +128, 12,187,126,225,147,154,154,250,170,131,176, 11,159,225,176,178, 16,207,161,188, 40, 39, 25, 15, 30, 60, 56,163, 71,143, 30, +130,144,144,144, 79, 66, 66, 66,152,172,172, 44,228,231,231,131, 97, 24,248,249,249,161, 78,157, 58,240,243,243,227,111,220,184, + 49,247,227,143, 63, 46,215, 39, 95,237,218,181, 67,205,102,115, 13,134, 97, 66, 1,132, 82, 74, 67, 9, 33,161, 0, 60,138, 52, + 99,234,170, 85,171, 10,154, 55,111,142,102,205,154,225,200,145, 35,216,188,121,243,106, 74,233, 62,123,109, 86,113, 46,242, 60, +200,245,198,164, 45,225,113,132, 50,104, 87,251, 60, 61,122, 35,138,208, 90, 23,159,156, 31,202, 13, 42,253,196,128,147,149,213, +185,132, 14,103, 15,248,216, 43,207,243,113,229,117,190,172,172,172,206,239,191,255,254, 1,150,101,171, 89, 53, 85, 22,139,197, +160,213,106,223,110,215,174,221,247, 66,161, 80, 98,143,203,243,252,131,212,212,212,127, 52, 86, 95,113, 63, 90,157,187,246,200, +120, 90, 76,165,136,169,113,107,215,143, 72, 77,203,192,175, 23, 83,178,242,140, 92,187, 91,233, 5, 87,159, 69,250,227,226,226, +186, 60,199,140,255, 82,105, 91,130,101, 61,115, 80,210, 29,112, 72,154, 94, 78,250, 72, 17,217,170,148, 78,158,146,146,178, 96, +234,212,169,175,204,157, 59,215,123,207,158, 61,234,162,223, 64,175, 94,189,210,174, 94,189,218, 26,128, 68,175,215, 31,156, 59, +119,174,247,204,153, 51, 61, 1,120, 22, 13, 50,169,169,169,169, 75,224,146, 50,197,108, 54, 39,212,169, 21, 97,173,187,199, 92, + 58,216,255,111,177, 88, 18,156,193, 43, 9,199,254,158,227,184,132,114,180,202, 31, 54,107,214,140,253,240,195, 15, 83,247,236, +217, 99, 13,164, 91,104,215,206,110,161, 12,167,164, 14,246, 37, 3,128,249, 69, 87,101,246,209, 2, 0, 45, 92,173,235,233,199, + 58,103,238,255, 45,249,237,183,223,166,245,235,215,111,141,135,135,199,250,208,208,208, 8, 95, 95, 95,181, 76, 38,131,193, 96, +200, 51, 26,141, 55,111,221,186, 53, 96,234,212,169,247, 28,193, 90,179,102, 13, 11, 64,196,243,188,148, 97, 24, 5, 0, 53, 33, +196,221, 74,180, 8, 33, 48,153, 76,136,139,139,195,167,159,126,202, 29, 58,116,232,127, 0, 62,119, 34,185, 77, 0,120,219,141, +227,222, 0,140,120,228,192, 54,189, 72,179,249, 76,132,240, 56, 82,235, 34, 37, 55,162, 72,169, 70,250,229, 6,149,254,167, 58, + 92, 57,152, 33,207, 75, 39, 25,108,152,255, 51,150,205,127, 44,206,161,149,132,149,120, 95,206, 6, 96,142,206, 50,110,241,190, +107, 11, 12, 22,202,155, 44,252,176, 91,105, 5,215,255, 31, 15, 64,150,138, 60,115, 0,247,229, 74, 74, 31,169,196,188, 94, 37, +132,188, 52,110,220,184,105,114,185,188, 41, 0, 20, 22, 22,158, 78, 74, 74,154,101, 61, 85, 88,222,115,151,148,193,154,211,211, + 27, 63,143,120, 70,163,241,253,151, 94,122,233, 27,142,227,190, 50,155,205, 39, 92, 53,229,146,231, 89,126,253,245,215,123,214, +121,185, 79,159, 62, 44, 0,108,218,180,201,233,211,192, 67,134, 12,225,138, 2,153,235, 1, 20, 0,200,197, 35,135,219, 4, 0, + 10, 10, 10,178,146,146,146,110,112, 28,119, 3,192, 79, 21, 56,113,235, 77, 8,217, 73, 41,125,173,104,236,220, 73, 41,125,205, +254,189,103, 45,118,100,171,164,241,190,124, 99,120,151, 60,146, 77,215,254,158,104,139, 19,168,242,238, 75,147,155, 41,249, 71, +159,118, 5,235,146, 23,150, 88,198, 2, 24, 92,209,231, 46,121, 33,235,252, 33,128,238,174,146,112,201, 11, 55,255, 85,128, 96, + 89,229,250,245,235,207,204, 68,224,223, 22,251,109,194,146,182, 12,173, 82,146, 54,203, 69,180, 92,226, 18,151,184,196, 37, 46, +113,137, 75,202, 34,145, 69, 54, 90, 54, 18, 85,100,171, 85,156,100,217,147, 43,251,123, 2,160, 83, 41,171, 50,103, 78, 19,116, +170,192,170,239,160, 11,211,133,233,194,116, 97,186, 48, 93,152, 46,204,255, 95,152, 21,148,232,114,182, 14,119, 61, 43,162,101, + 53,126,191, 30, 69,166,215,190, 72,167,151,100, 12, 95, 22,209,122,204,216,179,178, 47, 0,157, 92,152, 46, 76, 23,166, 11,211, +133,233,194,116, 97,186, 48,159,242,106, 63,121,242,228, 41,120, 20,255,152, 78,158, 60,121, 10,165, 52,250, 17,141,161,209,207, +242,183,175, 53, 66,219,235, 13, 65,173,215,181, 70,104, 91, 74,153,140,178, 94,246,239,187,182, 14, 93,226, 18,151,184,196, 37, + 46,113,201,243, 46,167,230,205,155, 87, 56,111,222, 60,171,225,123, 58, 0, 82,164,205, 74,127,150, 63, 92,180, 77, 88,238, 65, +169,114, 67,240,252,211, 66, 8, 9, 96, 4,162,129, 66,145,164, 61, 40, 95, 7, 0,192,176,215, 56,163,254, 15,139,197,180,158, + 82,154, 84, 81,236, 90,132,212,170,169,145,109, 55,112,156, 40, 62,207,216,251, 6,165,103, 43,130,211,135,144,150, 18,177,120, +191, 68,163, 41,209, 75,161, 33, 59, 91,103, 48, 26, 95,217, 68,233, 73, 87, 31,112,137, 75, 92,226, 18,151,188, 8, 66, 8, 81, +184,187,187, 31, 98, 24, 38,196,238, 61,148,244, 63, 0,112, 28,151,172,213,106, 95,161,148,102,252,147,152,197,196, 8,224,236, +243, 80,126,206,110, 29, 10,128,199, 98, 11,149, 27, 49, 59,210, 95,217, 58, 34, 52,100, 67, 82, 74,234,197, 92,189,113,248,205, +196, 60,173,179,137, 20,136,164, 35, 53, 94,126,115,222, 28,250,190,103, 88,120, 4, 9, 14, 14, 4, 40,240, 48, 62,193,247,238, +157,219, 29, 55,174, 93, 60, 65, 36,149,126,106,210,235,127,116,154,121, 18,162, 8, 81, 74, 78,252, 56,249, 45,141, 0, 22,244, +159,189, 97,111,109, 66,130,175, 63,114, 45,225, 20,201,210,120,122,238,155,119,240,160,204,189,200, 1,168, 29,107,125, 20, 95, +239,242,101,217, 39,175,188,178,175, 15, 33,157, 93,100,235, 63, 57, 24,249,169,213,234,241, 66,161,176,157,201,100, 10, 17,139, +197,241, 28,199, 29,205,202,202, 90, 68, 41, 77,116,149,144, 75, 92, 82,110, 31, 42, 53,144,249,191, 25,228, 28, 0, 84, 42,213, +121,134, 97,130,236, 73,128,213,191, 99,113, 63,145,118,254, 34,239,101,102,102,190, 84, 70,126, 67, 61, 60, 60,190, 7,208,164, + 60,135,201, 69, 91, 77,231,180, 90,237,219, 69,167,143, 75,194, 83,185,187,187,207, 32,132,244, 97, 24,166,220,128,194, 60,207, +115,148,210, 77, 89, 89, 89,159, 83, 74,243, 74,251,156,187,187,251,193,152,152,152, 38, 62, 62, 62,229,106,105, 44, 22, 11, 30, + 62,124,232,221,180,105,211, 99, 0, 34,159, 37,166, 51, 92,228,223,148,178, 78, 30,150,200,121,172,255, 56, 26, 49,155,231, 49, +112,213,156,183, 3,147, 31,220, 9, 28, 61,247,231,240, 72, 47,121,187,152,140,194, 20, 71,127, 80, 44, 83,109,111,213,225,181, +246, 99,223,251, 80,113,233,234, 77,236, 63,242, 39,114, 11, 12, 96, 25, 6, 26,149, 28,225,225, 53,200,194,229, 91,188, 86, 47, + 93,248,149, 76,169,137,214,229,103,119,115, 38, 67, 10,185,224,211, 73, 61,155, 42, 60, 61, 56,128,231,240, 81,215, 6,138, 79, +118, 94,252, 20,192, 20,167, 73,214,161, 67,242,180,212, 84,204, 12, 8,128,192, 98,129,148, 97, 32, 37, 4, 82,134,129, 66, 42, + 69,151,149, 43, 49,107,207, 30,249,180, 87, 95,117,145,173,255,152,168, 84,170,161,225,225,225,243, 87,172, 88,225, 89,189,122, +117, 40, 20, 10,104,181, 90,175, 91,183,110, 53,252,224,131, 15, 6,187,185,185, 77,205,201,201, 89,230, 42, 41,151,184,164, 84, +210,209, 16, 64,137, 65,226,203,122,246, 79, 9,195, 48, 65,137,137,137, 62,114,185, 28, 28,199, 21, 69, 3,224,109, 11,105,251, + 72, 57, 69,142,106, 17, 25, 25,105, 42,103,220,248, 46, 45, 45,173,147,125, 40,180,178, 34,238, 36, 38, 38,118,170, 93,187,246, +119, 0, 94, 41,133,188,204,120,239,189,247,198,215,173, 91,215,170, 5, 42,138,130,240,232, 53, 35, 35, 3,227,198,141,179,253, + 6,207,243, 56,112,224,192,123, 67,135, 14, 5,128, 15,202,200,123,136,143,143, 15, 41, 10, 40, 94,170, 76,159, 62, 29,211,167, + 79,199,226,197,139,137, 80, 40,212,148, 83,158,149,130,233, 40, 23,249, 55, 52, 88,197, 61,196, 23,251,216,174, 98,241, 14,119, + 61, 65,180, 28,110,156,148,223, 61,123,209,138,225, 51,135,180, 34,171, 62,232, 20, 54,102,241,193, 63,107, 7,200,218, 92, 79, +210,197, 59,160,201, 26,214,188,205,171,237,198,141,159,164,248,249,183,195,184,117,227, 50, 98, 78,252,242,216,103, 26,191, 50, + 20, 41, 25,121, 24, 58,246, 35, 37, 97, 5,237, 68, 82,249, 48,147,190,112,149,131,218, 44,223,218, 30,242,119,155, 55,173, 35, + 76,148,221,130,159,187, 12,173, 26,213, 20, 6,239,187,242,110,109, 66,190,185, 78,105,185,177, 10,139,147,172, 21,111,189,133, +214,102, 51,124, 88, 22, 44, 33, 96, 1, 48,132, 64,111, 48,224,220,192,129,104,186,110, 29, 62,223,177, 67, 62,227,245,215,157, + 38, 91,114,185,124,181, 78,167,251,178, 2,142,219,254,205,193, 51, 92,165, 82,125,154,155,155, 59,240, 57, 74,147, 63,128,244, + 18,226, 35,138, 0,104, 40,165, 78, 69, 22,150, 74,165, 35,251,247,239,191,112,201,146, 37,242,212,212, 84, 36, 37, 37,129,227, + 56, 72,165, 82,132,133,133,145,131, 7, 15,122, 78,154, 52,105,129, 90,173,150,228,230,230,126,227, 68, 58, 25,161, 80, 56,196, +195,195,163,135,175,175,175, 79,122,122,122,122, 86, 86,214, 14,131,193,176,170,162, 43,251, 34,204, 1, 85,171, 86,237, 17, 16, + 16,224,155,152,152,152,145,144,144,176,221, 96, 48,172, 46,138, 97,247, 52,101, 90, 31, 69,222,234, 1, 36, 87,173, 90,245,218, +253,251,247,211, 42, 17, 51,169,106,213,170,215,157,197, 36,132, 40, 0,108, 4, 16, 80,206, 71,147, 0,244,165, 78,106,179, 93, + 82,121, 36,171, 40,164,213, 99,132,170,172,103,255,180,200,100, 50,252,242,203, 47, 16, 10,133, 16, 10,133,200,202,202, 66, 80, + 80,144,237, 94, 36, 18,217,254,175, 82,165, 74,185,120, 28,199, 53,101, 89, 22,249,249,249,224, 56,206,118,101,103,103,131, 82, + 10,137, 68, 2,142,123, 20,206,201,238,121,211, 50,202,177, 79, 64, 64, 0,126,254,249,103, 24,141,198, 39,158,171,213,106, 92, +189,250,119,144, 17,150,101,209,172, 89, 51,134, 16,210,167, 44,162, 69,200, 35,167,155,163, 70,141, 2,203,178,143,197,179,180, +191, 56,142,195,244,233,211, 97, 31,154,236,159,196,124,238,218,117, 25, 30,226, 41,165,201, 0, 74,180,209, 98,202, 2,141,244, + 83,190, 61,225,173,151, 11,167, 14,143,166,159, 12,126,133,126,252, 86, 59,250,106,155,122,191,177, 2, 1, 57,115,253, 33,130, +220,128,213,227,154,132, 4,123, 41,174,214,245, 84,133,151,160, 26,181, 15, 40, 29, 32, 87,168,191,120,251,253,143,148,187,142, + 93,193,195,248,135, 79,144, 44, 0, 56,191,127, 53,146,147, 18,113, 49, 38, 1, 3,134,189,163, 84,171, 53, 95, 16, 66, 2, 74, +194, 44, 46,110, 42,209,255, 38,247,109, 37,205, 55, 39, 33,207, 29, 96, 67,197, 16,202, 11, 48,233,181,250, 18,181, 74, 52,191, + 12, 21,174, 13, 83, 34, 22,239,159,119,240,160,141,100,181, 52, 24, 32,225, 56, 88, 56,206, 70,178,140, 22, 11,116, 70, 35,252, +243,243,113,119,232, 80, 80,179, 25, 83,183,109,147, 75,196,226,253,142,164,211,110, 5,208, 85,173, 86, 31, 33,132,132, 59, 82, +201,207,226,200,172,147,110, 60,194, 85, 42,213, 17, 66,200,171,207, 67, 58, 9, 33, 12, 33,100,246,240,225,195, 47,212,168, 81, +227,112, 17,177,178, 62, 19,212,168, 81,227,224,240,225,195, 47, 17, 66,166, 19, 66, 24, 7, 49, 3, 3, 2, 2,230, 44, 89,178, + 68,126,251,246,109, 36, 38, 38,194,108, 54,163,127,255,254,224, 56, 14, 58,157, 14, 70,163, 17, 95,126,249,165,194,211,211,243, + 83, 66, 72,136, 35,121, 39,132,176,110,110,110,107,214,174, 93, 59,234,254,253,251,126,127,252,241, 7,115,229,202, 21,223,175, +190,250,106,168,167,167,231,186,162,128,171, 78,149, 39, 33,132,241,247,247, 95,245,251,239,191,191,125,245,234,213,160,173, 91, +183, 10, 79,159, 62,237,191,116,233,210, 17,254,254,254,235, 8, 33,108, 69,234,136, 16,210, 80, 46,151,119,156, 56,113, 34,127, +234,212,169,196, 83,167, 78, 37, 46, 92,184, 16,173, 91,183,110, 57,107,214,172,168, 10, 98, 54, 82,169, 84, 29, 38, 78,156,200, + 31, 63,126, 60,233,204,153, 51, 9, 11, 22, 44, 96, 58,116,232,208,106,238,220,185,245,157,196,220,120,234,212,169,182,241,241, +241,213, 19, 18, 18,170, 37, 36, 36, 84, 77, 72, 72,168,154,152,152, 24,146,156,156, 92, 37, 37, 37, 37, 56, 45, 45, 45,248,232, +209,163,173, 0,108,120,222,250,209,127, 29,179,168, 45, 95,164,148, 66,171,213, 98,215,174, 93, 40,210, 94, 53,180, 39, 89,185, +185,185, 72, 78, 78,182, 62, 19,252, 11,233, 4,199,113, 54, 34,117,224,192, 1, 12, 31, 62, 28, 90,173,214,246,158, 64, 32,176, +253,111,253, 78,121,152, 86,205, 19,199,113, 56,115,230, 12, 70,143, 30,141,133, 11, 23, 98,195,134, 13,216,185,115, 39,180, 90, +173,141,108, 89, 44,150,114, 49, 51, 50, 50,192,243,188,163,121, 68, 78, 78,142,195,245,110, 79,128, 4, 2,193, 19,164,200,122, + 57,211,150,158, 6,243,121,150,210, 60,194, 59, 34,182,198, 93,164,170,107,103,255, 48,162,170,223,167,243,199,247,145,129, 51, +129,154,117,128,169, 16, 48,229,131, 55, 22,130,136,100,128, 89, 7,111,137, 22, 27,199, 70,168, 63,254, 57,246, 70, 45,111,117, +244,141,244,220,189, 37,146, 10,129,104, 64,159, 33,239,121, 38,164,229, 34, 49, 53, 7, 44,243,247,188, 23,213,105, 8, 4, 44, +131,179,251, 30, 41,174, 24,150, 69, 78,129, 1,217,249, 38,244, 30, 50,222,227,199,133,159, 13, 0,240,101, 89, 25,169, 71, 72, + 88,139, 0,143,158,181,107, 87, 97,110, 72, 98, 16,245,234, 9,112, 60, 64,143,191,142,134, 89, 62,108,228,126,113,207,122,132, +204,185, 66,233,237,178,112, 36, 26,141,204,189,126,125,204, 12, 8, 64, 27,179, 25, 34, 74,241,114,106, 42, 46,143, 31, 15,195, +150, 45, 96, 0,136,222,120, 3,237, 23, 45,194,177,128, 0,248,233,116,200,158, 48, 1,222,123,247, 66,164, 86,203,156, 41,124, +145, 72,100, 90,177, 98, 69,192,136, 17, 35,142, 16, 66,218, 61,207,154, 45, 66, 72,184,135,135,199,145, 47,190,248,194,119,218, +180,105,201,149,132,233,171, 80, 40, 54, 21, 20, 20,140,119,118, 69, 91, 68,156,102, 47, 91,182,108,204,168, 81,163, 52, 35, 70, +140,160,119,239,222,213, 0,176,106, 71,188, 91,183,110, 93, 99,197,138, 21,126, 77,154, 52,121,111,244,232,209, 34, 66,200,212, +242,180, 60, 74,165,114,236,138, 21, 43,188, 50, 50, 50,144,159,159,111, 27,100, 19, 18, 18, 32,147,201,108, 65,213,133, 66, 33, +190,248,226, 11,207,177, 99,199,142, 7, 48,190,188,244, 74, 36,146, 33,223,127,255,125,205,206,157, 59, 11,226,226,226,192, 48, + 12, 36, 18, 9,222,122,235, 45, 97, 97, 97, 97,200,204,153, 51, 71, 1,248,222,153, 50, 16, 10,133, 3,150, 47, 95, 30,222,178, +101, 75, 65, 76, 76, 12, 90,180,104,129,179,103,207,226,141, 55,222, 16,230,229,229, 85,155, 52,105,210,240,210, 86, 88,101,105, +157,228,114,121,221, 63,254,248, 35, 62, 56, 56,216, 54,176, 84,171, 86,141,139,142,142,214,198,196,196, 68,252,249,231,159,153, + 45, 90,180,120,232, 4,102,160, 92, 46,143,220,189,123,119,242,204,153, 51, 59, 46, 91,182,172, 59, 0, 52,109,218,116,251,172, + 89,179, 14,107,181,218, 58,199,143, 31,215,182,110,221, 58,193, 65,200, 0,127,127,127,110,220,184,113,202,178, 62,180,114,229, +202,108, 0, 85, 8, 33,213,139, 2,109,187,228, 31, 16, 74,169,133, 16, 18, 69, 8,185,184,107,215, 46, 52,107,214, 12,187,118, +237, 66,116,116,244, 69,123, 50,112,245,234, 85,180,105,211, 6,120, 20, 72,254, 95,177,213,226, 56, 14, 2,129, 0, 9, 9, 9, + 88,185,114, 37,230,206,157,139,176,176, 48,152,205,230, 39,200, 86, 17, 33,114, 72, 5, 99,177, 88,112,238,220, 57,172, 95,183, + 14, 83, 63,253, 20, 42,149, 10, 0, 96, 50,153,160,205,202,130, 84, 42,181,145,177,114,202,114,211,157, 59,119,198, 7, 5, 5, + 61,182,101,104,125, 45, 26,179,192,243, 60, 44, 22, 11,244,122, 61, 22, 46, 92,104,161,148,110, 42,167, 79,218, 72,209,248,241, +227, 97, 48,252, 29,135,188,126,145, 77,114,213,170, 85,209,160, 65, 3,219, 61,195, 48,212, 81,204, 31, 95,170, 11,157,221,167, + 35,166, 47, 0, 0, 4, 5, 5, 33, 34, 34, 2,254,254,254,165, 98,150,196, 69,254,109, 41,110,147, 85, 33, 27,173,210, 34,101, +223,184,159,242,229,136, 73, 11, 22, 40,164,172,240,253, 30,245, 80, 69, 35, 2,100, 30, 16,181,249, 24, 68,243,104, 33, 79,181, +247,128,253, 31,227,171,158, 90,102,212, 79,250,223,106,120,120,120,223,213,106,159, 48,194, 19,138,164,237, 67,107,134,147,135, +201, 90, 8, 4, 2, 40,220,188,240, 82,143, 15,192,178, 12,148, 26, 47, 16, 78,247, 55, 35,102, 88, 8, 88, 1,180,121, 58, 84, +173, 94,147,145, 72,101,237,203, 35, 90,106, 55,225,247, 19,251,189, 36,205,180, 36, 64, 86, 69, 10,206, 58,157, 6,136,193,120, +230,225,195, 46, 97,178, 81,219,175,124, 15,160,131, 35, 5,195, 90, 44,240, 97, 89,152, 40,197,229,241,227, 17,181,124, 57, 46, + 90,137,225,242,229,184, 56,106, 20, 60,132, 66, 72, 24, 6,212,108,126, 98, 79,223,193, 9, 8, 61,122,244, 64, 70, 70,134,239, +167,159,126, 90, 97,178, 37,147,201,214, 19, 66,186, 10,133, 66, 19, 33, 4, 12,195,216,130,128, 91,255, 55,153, 76, 34,150,101, +119,103,100,100, 56,189,229, 71, 8, 9,119,119,119, 63,114,234,212, 41, 95,133, 66,129,233,211,167, 87, 10,201, 82,169, 84,167, +135, 15, 31, 94,101,253,250,245,123, 9, 33, 93, 28, 37, 91,197, 73,214,242,229,203,179, 87,174, 92,249,163,253, 22, 33,165, 52, +153, 16,178,170, 73,147, 38,111,143, 26, 53, 74, 3, 96,204,232,209,163, 81, 30,217,146, 72, 36,237, 66, 67, 67, 31, 91,213, 74, + 36, 18, 0,128, 66,161,128,155,155, 27, 68, 34, 17, 12, 6, 3,162,162,162,136, 88, 44,110,229, 72,154, 85, 42, 85,215,158, 61, +123, 10, 78,158, 60,137,148,148, 20,184,185,185, 65,161, 80,128,227, 56,140, 28, 57, 82,180,104,209,162, 87,157, 37, 90,193,193, +193,221, 59,118,236, 40,184,118,237, 26,238,223,191, 15,131,193,128, 91,183,110, 65,173, 86, 99,208,160, 65,162,249,243,231,191, +238, 44,209, 2, 80,119,212,168, 81,169,246, 36,203, 42, 10,133,130,132,135,135,107, 61, 61, 61, 27, 1,120,232, 12,230, 59,239, +188,147, 54,111,222,188, 54, 7, 15, 30,252,216,250,230,193,131, 7, 39, 1,192, 55,223,124,115,220,219,219,187, 17, 0, 71,137, + 22, 40,165,252,155,111,190,249, 64, 44, 22, 67, 40, 20, 66, 44, 22, 63,118,137, 68, 34, 48, 12,163,178,118,231,255, 42,169, 33, +132, 52, 1,240, 53, 30,157,200,250,148, 82,122,230, 57, 33, 91,151, 8, 33, 81,209,209,209, 54,178,181,103,207, 30,116,233,210, + 5,217,217,217,184,118,237,154, 61,201,250,183,108,180,192,243, 60,132, 66, 33, 22, 44, 88, 0,147,201,132,159,126,250, 9,155, + 55,111,126,108, 12, 85,171,213, 88,188,120,177, 83,219, 92, 28,199, 97,205,154, 53,248,120,210, 36, 27,201, 42, 90, 92,195,207, +215, 23,158, 94, 94,136,141,141, 45,151,104,101,101,101,125,190, 99,199, 14,148,101, 12,191, 99,199, 14,219,255,246,198,240, 14, +205,115, 44, 11,131,193,128,151, 95,254, 59, 84,236, 59,239,188, 99,251, 95,171,213,130,101, 89,107, 89, 16, 71, 49,117, 20,232, + 33,253,251,189,174, 31,126,248,152,134,174, 52,204,210,184,200,243,168,221, 42,225,212, 97, 20,165,244, 98,145,137, 68, 52,128, + 93, 69,219,137,101,219,104,221, 78, 43, 88, 34, 32,201, 13,230,141,123,101, 72, 21, 31, 55,208,252, 84,136, 58,124,142,191,210, +101, 88,176,112, 55, 0,224,163,183, 26,163,126,167,217, 48,174,126, 5,227, 91,176,226,129, 9,134,137, 0,166, 61,217,241,248, +200,160,192, 0,252,117,247, 42, 4, 44, 11,177,155, 23,220, 60,124,193, 91,140,200, 73,187,143, 35, 91,191, 3, 0, 44, 91,179, + 9, 12,195, 64, 32, 96, 97, 48,114, 8,171, 18, 0,158,231, 35,203, 74,103,109, 66, 94,234, 21,238,223, 44, 56, 68, 67,174,185, +223, 71,184,143,231,227, 31,104, 40, 65, 88,146,146,180, 80,202,154,214, 38,228,165,235,148,158, 42, 87, 3,193, 48, 96, 8,129, + 92, 36,130, 97,203, 22, 92, 44, 34, 88, 0,112,113,212, 40, 48,191,253, 6,149, 68, 2,150, 16, 8,138, 84,208, 21,233,232, 0, + 16, 17, 17,129,101,203,150,249,142, 29, 59,182, 66,100, 75,175,215,207, 81,171,213, 29, 87,173, 90,229,219,179,103,207, 39,158, +223,189,123, 23,109,218,180, 73, 77, 73, 73,153,243, 52, 36, 75,163,209, 32, 62, 62,254,169,247,213,173, 36,235,192,129, 3, 33, + 65, 65, 65,136,138,138,242,254,232,163,143,156, 33, 91,211,236, 73,214,232,209,163,175, 0,240, 33,132, 20, 39, 42,164,232, 89, + 61, 59,178,149, 3, 96,126, 25, 43,209, 16,133, 66,129,180,180, 52, 12, 25, 50, 4,183,111,255,173, 0, 13, 8, 8,176,173,244, + 98, 99, 99,225,237,237, 13, 66,136,143, 35,121,246,246,246,246, 53, 26,141, 24, 54,108, 24,226,227,255, 54,103, 12, 12, 12,180, +150,169,151,179,229,232,235,235,235,171,211,233,208,186,117,107,232,245,122, 0, 64,223,190,125, 33, 20, 10,145,150,150, 6,161, + 80,232, 85,129,234,241,138,142,142, 46,213,181,138, 90,173, 54,185,187,187,215,114, 18,211,243,245,215, 95, 79, 92,190,124,249, + 19, 7, 91,206,158, 61,219,205,195,195,227,160,135,135, 71,184,147,152,188, 61,169, 18,137, 68,143, 17, 45,161, 80, 8,134, 97, +120,252,247,229,127, 0,172,167,224,126, 0,208,224, 57,210,108,217,200,214,158, 61,123, 80,167, 78, 29,100,101,101, 33, 38, 38, +230, 95, 39, 89,118,196, 4, 2,129,192,182, 72,150, 74,165,136,138,138,178,145, 44, 66, 8, 10, 11, 11, 33, 16, 8,172,227,181, + 67,131, 95,118,118, 54,252,253,252,160, 82,169, 80, 51, 44, 12,119,138,198, 17,235,255, 18,137, 4,132, 16, 88, 44,150,242,202, + 48, 15,143,108,173, 62,168,236,234,177,146,162, 50, 85,199, 1, 1,224,121,222, 58,230,211,202,192,244,242,242, 66,126,126,190, +163,152,207,165,148,162,209,138, 2,112, 17, 64, 52,165,116,121,145, 97,252, 99,238, 29,218, 2, 56, 2,187, 35,149,132, 16,166, +150,175,114,229,188,177, 29,135,188, 82,199, 11,186,244,251,144,170,188, 64, 52, 85,177, 96,225,110, 92,187,151, 9, 0, 88,176, +225, 60,126,158,217, 21,144,121, 32,194, 45, 3,126, 42, 65,207,146,136, 22, 1, 37, 60,165, 16,176, 76,209,222, 45, 11,150,101, +160, 77, 79,198,162,207,199, 20,145,172,205,216,117, 60, 6, 65,161,117,254,222,199, 37, 4,160,101, 55,110,111, 55,209,242,177, +189,154,203, 82, 73, 50, 52, 1,114, 72,165,197,248,163,187, 8,164, 42,131,113,237,130,228,231,118,232,151, 3, 40,119,162,144, + 50,204, 35,227,119, 66, 74, 52,100, 99,138,158,177,132, 60,242,254,202, 59, 63,166, 91, 9,139, 82,169,132,175,175, 47,230,206, +157,235, 59,121,242,228,159,224,100, 0,106, 74,233, 45, 66, 72,187,145, 35, 71, 30,201,204,204,244,141,136,136,128, 82,169,132, + 82,169, 68,106,106, 42,122,247,238,157,154,146,146, 82, 81,109,217,186,225,195,135,251,138, 68, 34,220,189,123, 23, 30, 30, 30, + 54,130, 88, 81,146,165, 86,171, 79, 31, 60,120, 48,164, 70,141, 26,184,121,243, 38,106,213,170,133,141, 27, 55,122,247,239,223, +223, 33,178, 37,147,201,122, 20, 17, 39,140, 26, 53, 74, 51,106,212,168,182, 0,218,150,247,219,163, 70,141,210,124,240,193, 7, +175,151, 69,180,132, 66, 97,188, 86,171,245,147,201,100,216,186,117, 43,148, 74, 37,228,114, 57, 2, 2, 2,160,213,106, 33,151, +203, 65, 41,133,217,108,182, 14, 22,153,142,228, 59, 61, 61, 61,149,227,184,224,189,123,247, 34, 61,253,111,223,122, 33, 33, 33, +200,201,201, 1,199,113, 25,206,150,101, 82, 82, 82, 42, 33, 36,248,175,191,254, 66, 92, 92, 28,186,116,233,130,223,126,251, 13, +141, 27, 55, 6, 0, 24,141,198,138, 56,241,227, 88,150,165,101,212, 31, 1,224, 94,153,152, 69,147,151, 83,152, 60,207,243, 86, +146,101,255,106, 79,190,202,249,205,255,138,184,217,175, 19,158,215, 68,118,233,210, 5, 90,173, 22, 74,165,242,185,178,207,177, +106,180,102,204,152,129, 49, 99,198,192,215,215, 23, 31,127,252, 49, 4, 2,129,237,178,223, 25,112, 70,124,124,125,203,124,110, + 53,136, 47,103,188, 84,185,185,185,205, 96, 24,166, 15,235, 64,193,113, 28,199,241, 60,191, 41, 39, 39,167, 76,247, 14, 86,195, +117, 71,234,194,190, 12,202, 73,235, 83, 99,150,196, 69,158, 7, 41,126,218,176, 36,141, 22,254, 62,117,248, 68, 40, 32,107, 46, +143, 20,169,236,142,216,147,172, 47,198,180, 31,242, 74, 29,119,108, 63,116, 6, 34, 83, 54, 96,204, 43,163,134,205, 32, 34, 5, +124,221,132, 65, 37, 86, 2,195,222, 76, 72, 76,130,167,187,178,136,100, 21, 93, 12,131,250,117, 30, 45,102,119, 29,143, 65, 80, +245, 58, 16,176, 44, 4, 44, 11,165, 76,130,212,148,100, 8, 4,204,205,210,126,182,158,128,244,234, 21, 30, 92,213,221, 83,136, + 12,111, 35,252,125,229, 37,127,176,145, 10, 65,254, 98,116,246,148,134,212, 19,144, 94,229, 16, 23, 27,209, 50, 89, 44, 16,189, +241,134,109,187,240,226,168, 81,136, 90,190, 28, 92,247,238, 40, 48,153, 30, 83, 21, 59, 43,214, 6,105, 37, 68,211,166, 77, 75, +205,204,204, 28, 80,193,213,227,173,172,172,172,118,159,126,250,105,106, 70, 70, 6,228,114, 57,146,147,147,159,138,100, 1,128, + 78,167, 27,180,124,249,242,212, 35, 71,142, 64,169, 84, 66,165, 82, 85,152,104, 89, 53, 89,159,127,254,121,149,224,224, 96,196, +198,198,194,205,205, 13,158,158,158,168, 95,191, 62, 78,158, 60,233, 29, 28, 28,188,183,200, 96,182,172, 52,253,190,124,249,242, +108, 0, 88,190,124,121, 54, 33,228, 40, 33,100, 41, 33,228,135, 98,215, 82, 66,200, 81,251,207,234,116,186,109,101, 97, 27,141, +198,163, 49, 49, 49, 84, 46,151,131,101, 89,152, 76, 38, 72,165, 82, 91,125,229,230,230, 66,167,123,180,205,125,225,194, 5,152, +205,230, 19,142,228, 61, 47, 47,111,207,234,213,171,205,193,193,193,168, 87,175, 30, 26, 53,106,132, 22, 45, 90, 32, 36, 36, 4, + 51,102,204, 48, 22, 20, 20,236,169, 0,209,218,181,113,227, 70,115,112,112, 48, 26, 53,106, 4,137, 68,130,250,245,235, 35, 32, + 32, 0,115,231,206, 53,230,228,228,236,169, 64, 53, 61,188,122,245, 42, 91, 6,201, 85, 3, 72,117, 18, 51,254,220,185,115,108, +243,230,205,183, 23,127,208,180,105,211,237, 74,165,210, 13,128,179,118,127,212,158, 92, 73, 36, 18,219,101,125, 95, 32, 16,252, +127,208,104,141, 7,112, 5, 64, 44,128,143,159,167,132,217, 27,190,103,102,102, 34, 38, 38, 6, 23, 46, 92, 64,243,230,205,113, +226,196, 9,160,200, 64,254, 95, 76, 31, 40,165, 16, 10,133,136,136,136,192, 7, 31,124,128,221,187,119,227,214,173, 91, 48,155, +205, 54, 34,100,181,201,116, 70,163, 37, 18,137,224,235,235, 11,179,217,108,211,102, 1,192,157,219,183, 33, 16, 8,192,243, 60, +140, 70, 99,185, 26, 45, 55, 55,183, 25, 43, 86,172,120, 47, 35, 35,195, 63, 61, 61,221,199,254, 74, 77, 77,245, 73, 78, 78,246, + 73, 76, 76,244,137,143,143,247,121,240,224,129,207,253,251,247,253,191,252,242,203,247,220,220,220,102, 56, 58, 7,213,175, 95, + 31,239,188,243,142,237, 90,178,100,137,237, 58,114,228,136,211,198,235, 44,203, 34, 98,250, 2,116, 77,167,182,107,183, 55,177, + 93,215, 62, 26, 93, 22,230, 99, 92,228,185,105,203, 69,167, 13,237, 3, 75,151, 48, 7, 39, 83, 74,151, 91,183, 11,237,157,151, + 22, 55,134, 7, 0, 68,250,201,103,127, 49,178,205,144,151,107,185,225,247, 67,231, 49,115,219,189,155, 97, 67,188, 35,106,184, +167,131, 79,143,193, 71,111, 53,198,130, 13,231, 1, 60,218, 58,228,211,174,129,102,197,130,170,130,113, 95,155, 81,226,182,131, +197,168, 63,124,239,238,237,246, 17,117,155, 48, 41, 25,249,143, 29,255,140,106,215, 27,132, 16, 4, 86,175, 3, 86, 32, 0,203, + 50, 16,176, 44, 52,106, 41, 98,254,250,139, 55,232,116,135, 75,194,108, 71,136,192, 79, 41, 94,242, 86,231,250,210, 36,113, 26, +188,253, 21, 16, 9, 31,145, 0,122,175,119,177, 25, 66, 0,212, 85, 97,104,162,167,236,112,170,126, 73, 59, 66,182, 31, 41,197, + 0,147,231,121, 40, 37, 18,232, 13, 6,232, 44, 22,180, 91,180,200,182, 93,200, 16,130, 75, 0,234, 45, 90,132, 83, 91,182, 64, + 45, 22, 3, 18,137,195,167, 66, 74,210,104,165,166,166,162,111,223,190, 79, 69,136,236, 53, 91, 99,199,142, 61, 50,119,238, 92, +223,105,211,166, 85, 26,230,199, 31,127,124,100,195,134, 13,190,213,170, 85,171,112, 99, 85, 42,149,147,120,158,215,204,159, 63, + 63,229,171,175,190, 66,113,123,178, 34,162, 35,209,104, 52, 11, 0,180, 47, 3,106,230,232,209,163, 69, 0,198, 20,105,182,234, +141, 30, 61,250, 20,165,116,106,177,242,157,190,108,217,178,190,118, 91,140, 75, 1, 44, 42, 43,141,185,185,185, 63,124,240,193, + 7,195,142, 29, 59,230, 37,149, 74, 65, 8,129, 72, 36, 66,205,154, 53,109,167,104,132, 66, 33, 40,165,248,240,195, 15, 51,210, +210,210, 28,114,239, 96, 48, 24,214,204,156, 57,179,189, 78,167, 11, 25, 58,116,168,200,221,221, 29,169,169,169,248,250,235,175, +141,107,214,172,137, 47, 40, 40,112,214,150, 10,102,179,121,205,103,159,125,214, 46, 63, 63,191,250,136, 17, 35, 68, 57, 57, 57, +208,233,116,152, 56,113,162,113,213,170, 85, 9, 58,157,206,105,135,191, 45, 90,180,184,251,224,193,131, 86,133,133,133, 89,114, +185,188,184,182,143, 40, 20,138, 38, 0,214, 57,131, 25, 21, 21, 21,251,240,225,195,230,179,103,207, 62,106, 54,155,133,103,207, +158,237,110, 37, 89,223,126,251,237, 17,169, 84,218, 17,206, 27,237,243, 18,137,228, 49, 13, 86,241,255, 5, 2,193,127, 94,163, + 69, 41, 61,130, 71, 46, 51,158, 43, 41, 78,178,174, 93,187,134,246,237, 31,117,233, 19, 39, 78,160,101,203,150, 56,113,226, 4, + 90,181,106,245,175,186,119,176, 18, 45,129, 64,128,254,253,251,163, 83,167, 78,168, 82,165,202, 99,167, 13,173,255, 59, 67, 54, + 44, 22, 11,234,214,173, 11,131,209, 8,145, 72,100,219,154, 20, 8, 4,240,246,241,193,221,187,119, 29,210,104, 49, 12,211,167, + 71,143, 30,204,245,235,215,209,175, 95, 63,172, 95,191,190,212,207, 14, 28, 56, 16,191,252,242, 11,122,244,232,193, 76,153, 50, +165, 76,247, 14, 86, 35,116, 71,242,100,157,167,203,211,232, 85, 22,166, 61, 23,121,222,196,206,181, 67, 73,109,126, 84, 9,237, +107,249, 99, 68,203,206, 73, 24,170,123,203,135,118,170, 41,192,239,135,207, 99,230,239, 15,215,112,148,110,221,122, 49,107,231, +199, 45, 1,211,166,183, 80,191,247,186, 71,219,133, 0,248,180,107, 48,109, 26, 8, 34,247,194,241, 68, 33,114,116,166, 93, 37, + 55, 60,211,250,223,126,250,238,131,230,223,183,242,246,247,113,131, 54, 71,103, 35, 91, 23,143,108, 6, 0,244, 26, 61, 7, 2, +246,209,150,162, 90, 41,133, 76,196, 98,203,218,111, 50, 76, 38,125,137,173, 43, 79,200,140,153,242, 82, 77, 55,177,194,140, 92, + 63,138, 58,222,127, 31,250, 35,213, 55, 63, 73,184, 26,186,195,235, 90, 22,222,170,161, 84,127,115, 61,123, 12,128, 37, 79, 76, +136,217,217,186,236,191,254,146,117, 89,177, 2,103, 7, 13, 66, 32,199,225,104, 64, 0, 60,132, 66,184, 73, 36, 96, 8,129,110, +231, 78,156,218,186, 21,190, 18, 9,160, 82,193, 50,107, 22, 12, 49, 49, 48,231,229,233,156, 37, 90,119,238,220,121,106,173, 83, + 73,196,104,242,228,201, 63,101,102,102, 14,168, 76,204, 65,131, 6, 29, 57,116,232,144,111, 69,113,242,242,242, 38, 0,152, 80, + 9,233,225, 9, 33, 83,139, 28,227,141, 25, 53,106,148,230,220,185,115,195, 8, 33,223, 91, 87, 19,132, 16,159,225,195,135,143, + 44, 70,178,202, 61,117, 72, 41,125,168, 84, 42,103, 77,152, 48, 97,206, 87, 95,125,165,180, 26,190, 95,190,124, 25, 22,139, 5, + 66,161, 16, 28,199, 97,248,240,225,249,153,153,153, 11, 74,243,232, 92, 2,174,133, 16, 50,112,206,156, 57,195,191,249,230,155, +215, 88,150,245,230, 56, 46, 93,167,211,237,213,233,116,203, 43,114,234,170,168, 28, 6, 79,155, 54,109,240,194,133, 11,123, 48, + 12,227, 99,177, 88, 50,242,242,242,118,232,116,186, 10,249,230, 58,117,234, 84,250,247,223,127,127, 47, 61, 61, 61, 50, 40, 40, + 40, 71,169, 84, 26,141, 70, 35, 43,147,201,212, 10,133, 34, 10,192,159, 0,110, 56,131,121,225,194,133,148,165, 75,151,198, 25, + 12,134,136,165, 75,151, 30, 87,171,213,135, 8, 33, 68, 36, 18,185,203,100,178,246, 0,142, 2,184,227, 12, 38,195, 48,188,189, +246,170,184,125,150, 88, 44,254,255, 98,163,245,220,137,189,123,135,140,140, 12, 92,191,126,221, 74,178,162, 0,160, 85,171, 86, + 23,173,100,235,194,133, 11,104,212,168,209, 69, 66,136,240,159, 62,121,104,175,209,178, 18,170, 42, 85,170,216,238,237, 47, 59, + 27, 45,135,132,227, 56,136, 68, 34, 8, 4, 2,248, 7, 4,216,126,139, 82,138,187,119,239, 66,171,213, 58, 68,180, 88,150,101, + 9, 33,232,215,175,159, 67,191,251,230,155,111,226,232,209,163, 96, 29,100,133, 44,203,162,106,213,170, 14,237,188,192, 65,123, + 42,150,101, 17, 20, 20, 84, 97, 76,123, 46,242, 60, 17,172,146,254, 47,137, 84,149, 36, 37, 26,195,199,166,233,102, 15,252,250, +228,148, 27, 41,250,173, 49,169,133, 31, 0,160,155,174,201,247,215,247,102, 95,121, 37, 60, 1,134,229,173, 64,212,143,156,183, +209,252,100, 16,133, 47, 18,248, 64, 76,223,126, 51,197, 2, 50,191,148, 68, 36,137,164,242,169,107, 87,124,251,213,240,177, 31, + 42,175,197,166, 34, 39,223, 0,150,101,236, 7, 79, 8, 4, 44,212, 10, 41,130,253,220,176,225,199,175,243,242,114,179,167,149, + 22,247,176,138, 74, 52,186, 99,147, 26, 18,145,127, 1, 34,234,245, 5, 43,253,219,201, 44, 77, 41,101,119,176,229,126,188,250, +176, 64,250,219,195,130,209, 37, 18, 45,163,241,149, 79, 59,119,222, 55,115,247,110,121,211, 53,107, 16, 59,124, 56, 2,116, 58, + 72,138,182, 18, 25, 66,160, 20,137,160, 20,137, 30,145,172,133, 11,161,179, 88,176,104,208,160, 66,131,209,216,217, 73,141,132, +168,109,219,182,149, 70,178,236,137, 17,156,180,243,114,148,108,117,234,212,233, 8,165, 84,242, 28,172,228,173,100,203,116,238, +220,185,145,199,143, 31,143,197,227,129, 69,179,143, 31, 63, 30, 59, 98,196, 8,178,114,229,202, 85, 0, 62,115,212,129,103,126, +126,254,183, 26,141, 6,109,218,180,249,108,222,188,121,158,141, 27, 55,134,143,143, 15,242,242,242,112,225,194, 5,140, 31, 63, + 94,155,155,155, 59, 47, 43, 43,235, 43, 39,211,204, 21,105,110,150, 87,102, 57, 0, 88, 93,116, 85,138,188,253,246,219,151, 99, + 99, 99, 51,189,189,189,155,137, 68,162,122,120,100, 7,148, 2, 96,149,179,132,200, 42, 99,198,140,249, 43, 54, 54, 54, 35, 48, + 48,176,121, 17,166, 6, 64, 34,128, 21, 21,192, 76, 58,127,254,124, 80,147, 38, 77, 24,161, 80, 72, 89,150,133, 80, 40,164, 2, +129,128, 22,217,213, 80, 0,216,177, 99,135, 4,128, 22, 46,249,167,251,166,205,189, 67,114,114,178,141,100,217, 57, 44,141,106, +213,170,213,197, 34,146,101,125,102,249,151,210,138,153, 51,103, 98,217,178,101, 40,207,163,121,209,233, 62, 82, 30,158, 85,163, +197,113, 28, 76, 38, 19,174, 93,187,102,243,217,101,221, 46,180,186,118,176, 88, 44,101,158, 86,231, 56,142, 51, 26,141,248,245, +215, 95, 29, 34, 91, 63,255,252, 51,244,122, 61,184,114, 24,156,189, 43,134, 6, 13, 26, 64,171,213,218, 14,251, 68, 69,253,237, + 42,207,100, 50, 57, 69, 92,173,152, 17, 17, 17,200,200,200,128,151,215,163,243, 56,193,131,254, 86,246, 88, 10,254,155,254,131, +203,210,104, 17, 71, 93, 18, 52,208,104,220, 12, 98,243,182,110,117, 36,237,250, 68,185,161,186,159, 10, 66,145, 20, 73,185, 22, + 28,188,145,139, 21, 71, 82,226,117,102,238,181, 91,105, 5, 87,203,194,145, 42,220,246, 54,126,169, 83,203, 65, 35,199, 43,242, + 13, 28,226,226, 30, 32, 61, 45, 25, 12, 97,224, 31, 24,132,144,144,170,144,137, 25,172, 95,254, 85,193,197, 83,135, 78,230,229, +106,187,148,134,245,154, 70,124,106,225, 27, 45,155,135,134,170, 8, 44,102,128, 51, 3, 22, 51,192, 23,189, 90,223,227, 31,111, +115,215,175,103,211, 41,151,180,167,119,102, 27, 75,140, 89,213,135,144,150, 26, 15,143,125,211,119,236,144,243, 38, 19, 50, 39, + 76,128,220, 98,129,180,104, 85, 2, 0,144, 72, 96,153, 53,235, 17,201, 26, 56,176, 48, 39, 59,219,233, 16, 60,222,222,222,171, + 51, 50, 50, 94, 56,207,240,158,158,158,159, 86,196, 77,196, 51, 76,147, 15,128,108, 74,169,169,132,149,181,183, 85,203, 85, 1, +220,170,222,222,222, 83, 24,134,105, 65, 41,245,100, 24, 38,139,231,249, 63,211,210,210,190,164,148,222,117, 77,169,255, 90,125, + 91, 61,195,151,183,143,157, 6,224,125, 0,121,148,210, 56, 87,201,253,227,245,212, 16,143, 78, 97,149, 26,130, 7,255,226,201, + 67, 79, 79,207, 51,251,246,237,107, 92,189,122,117,198,222,140,193,234, 43,207,186,189, 37, 16, 60,210, 71, 28, 59,118,204,210, +175, 95,191, 63, 83, 82, 82,218,148,134,169, 86,171,247, 95,185,114,229,229,156,156,156, 39, 8,149,189,167,120,235,125, 65, 65, + 1,198,142, 29,123, 32, 55, 55,183,196, 16, 60, 26,141,102,225, 87, 95,125,245, 94,175, 94,189, 24,171, 59, 10,251,203, 26, 46, +200,122,153, 76, 38,172, 91,183,142,255,230,155,111, 22,103,103,103,151,186,117, 24, 16, 16, 16,159,148,148, 20,100,117,181,224, +136, 83,209,170, 85,171, 38,199,197,197, 5,252,147,152, 47, 42,225, 42,174,221, 34,206,248,126, 34,132,144, 8, 31, 69, 95, 10, +244, 97,192,215,101, 8, 17, 91, 40,110,129, 98,191, 92, 80,248,253,133, 36,234,208,214,153, 72, 46, 31,167, 82,186,127,222,107, +192, 59,158, 85, 67,195,136,175,127, 32, 8, 24,164,166, 36,226,193,189,219,116,219, 79,223,101, 22,228,106,103, 20, 22,230,127, + 87, 22, 78,109, 66, 66,171,169, 69,155,196, 28,194, 97,205, 71,177,248, 84, 79, 48, 76, 0, 38, 33,115, 51, 46,207,220,247,122, + 25,219, 62, 86,178, 53,117,219, 54,185, 56, 60,252, 9, 71,113, 60,207,195, 16, 19,131, 69,131, 6, 85,136,100,185,196, 37, 46, +121,234, 1,173, 58,202,247,145,101, 6,144,240,111, 6, 47,254,127, 94, 71,207,109, 80,105, 66,136,194,195,195,227, 16,203,178, + 33, 86,141,140,189,205, 80, 9, 1,165,227, 82, 83, 83, 59, 82, 74, 11,203,192, 12, 85,169, 84,223,113, 28,215,212,145,160,210, + 44,203,158,205,203,203, 27, 87, 86, 80,233,103,113,234,208,203,203,235,238,131, 7, 15, 66,173,167,168,237,231,202,226,229, 0, + 0,119,238,220, 65,219,182,109, 31, 36, 39, 39, 87,253, 39, 49,159, 87, 41,197,143,214,211,107,180,158, 65, 35, 15, 16, 73,148, +131,197, 50,105, 7,222,108,137, 0, 1, 4, 66,225, 77,163, 94,119,216,160,203, 95, 91,218,118,225, 63, 41,125, 8,105, 41, 17, +139,247,139,212,106, 89, 73,229,100,206,203,211, 25,140,198, 87, 92, 36,203, 37, 46,113,137, 75, 92,242, 2, 17,224,112, 15, 15, +143,125, 66,161, 80, 98, 79, 38,139,255,111, 21,139,197,162, 79, 79, 79,239, 82,214,238,203,179,192,252,207,148,183,179, 68,107, +215,174, 93,212, 81,239,173,132,144, 78,142,196,172,178, 51,124, 43,215,119,198,191,141,249, 12,243, 94,174, 87, 92, 39, 48,219, +226,209,241,216, 25,209,209,209,211, 95,128,116, 86,102, 29, 85, 42,166,181,206, 29,197,117, 6,211,209, 54,229,100, 58, 29,106, +247,207, 3,166, 35,125,169,130,233, 44,179,141, 86,176,222,203,236, 75,207, 81, 58, 43,179,142, 42, 5,179,120,251,113, 4,215, + 89, 76, 71,250, 82, 5,210, 89,110,187,127, 94, 48,159,118, 12, 41, 35,157,165,182, 81, 71,219, 82, 41,117, 95,238,220,244,188, +106,178, 0,192,234, 79,171,184, 70,171, 52,131,120,129,179, 36,235, 89, 36,222,126,210,129,131,126, 74,254, 13,204,138, 16, 46, +103,210, 90,137,114,164,178, 49,139,149,103,101,201,244,162, 1,253, 40, 28,112, 56,234, 76,222, 43,163,222,139,229,181, 82,112, +237, 49, 43,171, 44, 75, 26, 20, 43, 51,157,207, 2,179,178,250, 82,113,204,202,104,247, 37,213,251, 51,172,163,202, 74,103,165, +244,165,103,209,230, 75,104, 63, 79,141, 91, 28,179, 50,250, 82,113,204,202,104,247,255, 4,102,101,244,165,146, 48, 43,163,221, +151, 86,247, 47,170,102,202,186, 93, 88, 68,184, 72, 9,228,243,177,237, 67, 43,241, 98, 42, 82,104,207, 66,158, 69, 32,201,202, + 38, 68,207,138,108,238,218,181,139, 22, 49,253,231, 30,179,146,235,104,122, 17,102,101,174,108,218, 85, 86, 29, 61,139,246,110, +143, 89, 89,248,197,113, 42,163,158, 74,194,124,218,244,150,146,206, 74,207,251,211,182,251,127, 10,179,146,235,168, 82,250, 82, + 49,204,118,149,188, 24,104,103,119, 63,189, 50, 49, 43,171, 47,149,144,206,167,174,167,146, 48,159, 54,189,165,164,179,210,243, + 94, 25,115,200,179,194,253,183, 52, 90, 55,162, 8,165, 76,201,109,162,200, 97,169,237,170,144, 70,235, 89,146,172,103, 53,169, + 85, 38,246,179,208,234, 60, 43,205, 91,101,105,117, 74,192, 61, 90,137,112, 71, 42, 59,157, 69,233, 35,207,179,211, 59, 87, 95, +114,245,165,255, 79,125,169,164,118, 19, 29, 29, 61,125,215,174, 93,159, 63, 79,237,188, 56,102,101, 17,162, 18,242,254, 84,125, +169,248,119, 43,163, 47,149,131, 73,158, 69,254, 43,187, 63,253,147, 26,173,210, 72, 86,105,207, 4,207, 75, 6,172,141,164,146, + 87, 38,168,100, 13,204, 51,203,119, 37,167,179,221,179,208, 16, 62, 3,169,244,116, 22,173,148, 63,127, 6,121,127, 81,202,212, +213,151, 92,125,233,185,235, 75,197,218,100,187, 74,212, 20, 85,170,230,185, 56,102,101,252,134, 61, 70,101,181,209,103,157,247, +202,236, 75,207,162,238, 95, 52,249,191, 1, 0, 27, 20,197,251,159,141,187,244, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 2cb8745ac05..46973e29d2a 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -81,7 +81,7 @@ void ED_area_tag_refresh(ScrArea *sa); void ED_area_do_refresh(struct bContext *C, ScrArea *sa); void ED_area_headerprint(ScrArea *sa, const char *str); void ED_area_newspace(struct bContext *C, ScrArea *sa, int type); -void ED_area_prevspace(struct bContext *C); +void ED_area_prevspace(struct bContext *C, ScrArea *sa); void ED_area_swapspace(struct bContext *C, ScrArea *sa1, ScrArea *sa2); /* screens */ @@ -100,7 +100,8 @@ void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen void ED_screen_animation_timer(struct bContext *C, int redraws, int sync, int enable); void ED_screen_animation_timer_update(struct bContext *C, int redraws); int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type); -void ED_screen_full_prevspace(struct bContext *C); +void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa); +void ED_screen_full_restore(struct bContext *C, ScrArea *sa); void ED_screen_new_window(struct bContext *C, struct rcti *position, int type); diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index b9d5e98b88e..f6de5138214 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -76,7 +76,7 @@ DEF_ICON(ICON_UNLOCKED) DEF_ICON(ICON_LOCKED) DEF_ICON(ICON_UNPINNED) DEF_ICON(ICON_PINNED) -DEF_ICON(ICON_BLANK015) +DEF_ICON(ICON_SCREEN_BACK) DEF_ICON(ICON_RIGHTARROW) DEF_ICON(ICON_DOWNARROW_HLT) DEF_ICON(ICON_DOTSUP) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index ea56e9fd31b..d9d76e963a3 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1089,30 +1089,11 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type) } } -void ED_area_prevspace(bContext *C) +void ED_area_prevspace(bContext *C, ScrArea *sa) { - SpaceLink *sl= CTX_wm_space_data(C); - ScrArea *sa= CTX_wm_area(C); - - /* cleanup */ -#if 0 // XXX needs to be space type specific - if(sfile->spacetype==SPACE_FILE) { - if(sfile->pupmenu) { - MEM_freeN(sfile->pupmenu); - sfile->pupmenu= NULL; - } - } -#endif + SpaceLink *sl = (sa) ? sa->spacedata.first : CTX_wm_space_data(C); if(sl->next) { - -#if 0 // XXX check whether this is still needed - if (sfile->spacetype == SPACE_SCRIPT) { - SpaceScript *sc = (SpaceScript *)sfile; - if (sc->script) sc->script->flags &=~SCRIPT_FILESEL; - } -#endif - /* workaround for case of double prevspace, render window with a file browser on top of it */ if(sl->next->spacetype == SPACE_FILE && sl->next->next) @@ -1193,7 +1174,8 @@ int ED_area_header_standardbuttons(const bContext *C, uiBlock *block, int yco) ScrArea *sa= CTX_wm_area(C); int xco= 8; - xco= ED_area_header_switchbutton(C, block, yco); + if (!sa->full) + xco= ED_area_header_switchbutton(C, block, yco); uiBlockSetEmboss(block, UI_EMBOSSN); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 1f6ce4fed73..6504ea4c2d5 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1312,7 +1312,13 @@ void ED_screen_delete(bContext *C, bScreen *sc) wmWindow *win= CTX_wm_window(C); bScreen *newsc; int delete= 1; - + + /* don't allow deleting temp fullscreens for now */ + if (sc->full == SCREENFULL) { + return; + } + + /* screen can only be in use by one window at a time, so as long as we are able to find a screen that is unused, we can safely assume ours is not in use anywhere an delete it */ @@ -1536,17 +1542,42 @@ int ED_screen_full_newspace(bContext *C, ScrArea *sa, int type) return 1; } -void ED_screen_full_prevspace(bContext *C) +void ED_screen_full_prevspace(bContext *C, ScrArea *sa) { wmWindow *win= CTX_wm_window(C); - ScrArea *sa= CTX_wm_area(C); - - ED_area_prevspace(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); + } + /* otherwise just tile the area again */ + else { + ed_screen_fullarea(C, win, sa); + } +} + /* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 55e2ec6b540..b108e1bbd41 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1544,10 +1544,10 @@ static int screen_set_exec(bContext *C, wmOperator *op) int tot= BLI_countlist(&CTX_data_main(C)->screen); int delta= RNA_int_get(op->ptr, "delta"); - /* this screen is 'fake', solve later XXX */ + /* return to previous state before switching screens */ if(sa && sa->full) - return OPERATOR_CANCELLED; - + ED_screen_full_restore(C, sa); + if(delta==1) { while(tot--) { screen= screen->id.next; @@ -3412,10 +3412,10 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused) if(sima->flag & SI_FULLWINDOW) { sima->flag &= ~SI_FULLWINDOW; - ED_screen_full_prevspace(C); + ED_screen_full_prevspace(C, sa); } else - ED_area_prevspace(C); + ED_area_prevspace(C, sa); return OPERATOR_FINISHED; } @@ -3459,7 +3459,7 @@ static int render_view_show_invoke(bContext *C, wmOperator *unused, wmEvent *eve if(sima->flag & SI_FULLWINDOW) { sima->flag &= ~SI_FULLWINDOW; - ED_screen_full_prevspace(C); + ED_screen_full_prevspace(C, sa); } else if(sima->next) { ED_area_newspace(C, sa, sima->next->spacetype); @@ -3486,6 +3486,40 @@ static void SCREEN_OT_render_view_show(struct wmOperatorType *ot) ot->poll= ED_operator_screenactive; } +/* *********************** generic fullscreen 'back' button *************** */ + + +static int fullscreen_back_exec(bContext *C, wmOperator *op) +{ + bScreen *screen = CTX_wm_screen(C); + ScrArea *sa=NULL; + + /* search current screen for 'fullscreen' areas */ + for (sa=screen->areabase.first; sa; sa=sa->next) { + if (sa->full) break; + } + if (!sa) { + BKE_report(op->reports, RPT_ERROR, "No fullscreen areas were found."); + return OPERATOR_CANCELLED; + } + + ED_screen_full_restore(C, sa); + + return OPERATOR_FINISHED; +} + +static void SCREEN_OT_back_to_previous(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Back to Previous Screen"; + ot->description= "Revert back to the original screen layout, before fullscreen area overlay."; + ot->idname= "SCREEN_OT_back_to_previous"; + + /* api callbacks */ + ot->exec= fullscreen_back_exec; + ot->poll= ED_operator_screenactive; +} + /* *********** show user pref window ****** */ static int userpref_show_invoke(bContext *C, wmOperator *unused, wmEvent *event) @@ -3672,6 +3706,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_header_toolbox); WM_operatortype_append(SCREEN_OT_screen_set); WM_operatortype_append(SCREEN_OT_screen_full_area); + WM_operatortype_append(SCREEN_OT_back_to_previous); WM_operatortype_append(SCREEN_OT_screenshot); WM_operatortype_append(SCREEN_OT_screencast); WM_operatortype_append(SCREEN_OT_userpref_show); diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index 79a5d3d5cd1..57ab63c952d 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -78,6 +78,12 @@ static int rna_Screen_animation_playing_get(PointerRNA *ptr) return (sc->animtimer != NULL); } +static int rna_Screen_fullscreen_get(PointerRNA *ptr) +{ + bScreen *sc= (bScreen*)ptr->data; + return (sc->full == SCREENFULL); +} + static void rna_Area_type_set(PointerRNA *ptr, int value) { ScrArea *sa= (ScrArea*)ptr->data; @@ -185,6 +191,11 @@ static void rna_def_screen(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_funcs(prop, "rna_Screen_animation_playing_get", NULL); RNA_def_property_ui_text(prop, "Animation Playing", "Animation playback is active."); + + prop= RNA_def_property(srna, "fullscreen", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_boolean_funcs(prop, "rna_Screen_fullscreen_get", NULL); + RNA_def_property_ui_text(prop, "Fullscreen", "An area is maximised, filling this screen."); } void RNA_def_screen(BlenderRNA *brna) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 3a74dbe0b16..bba38705e15 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1029,9 +1029,9 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa char *path= RNA_string_get_alloc(handler->op->ptr, "path", NULL, 0); if(screen != handler->filescreen) - ED_screen_full_prevspace(C); + ED_screen_full_prevspace(C, CTX_wm_area(C)); else - ED_area_prevspace(C); + ED_area_prevspace(C, CTX_wm_area(C)); /* remlink now, for load file case */ BLI_remlink(handlers, handler); -- cgit v1.2.3 From 915f35240014cfdafb6d247acb5e032d7c1204bf Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 8 Dec 2009 08:44:18 +0000 Subject: ImBuf: Fix bug in clipping --- source/blender/imbuf/intern/rectop.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/imbuf/intern/rectop.c b/source/blender/imbuf/intern/rectop.c index 56714c3b481..080340750e4 100644 --- a/source/blender/imbuf/intern/rectop.c +++ b/source/blender/imbuf/intern/rectop.c @@ -277,7 +277,7 @@ void IMB_rectclip(struct ImBuf *dbuf, struct ImBuf *sbuf, int *destx, } if (*srcx < 0) { *destx -= *srcx; - *width += *destx; + *width += *srcx; *srcx = 0; } if (*desty < 0) { @@ -287,7 +287,7 @@ void IMB_rectclip(struct ImBuf *dbuf, struct ImBuf *sbuf, int *destx, } if (*srcy < 0) { *desty -= *srcy; - *height += *desty; + *height += *srcy; *srcy = 0; } -- cgit v1.2.3 From 2318886f7029cef4c0890d3ae9c56b86cc49d7ad Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 8 Dec 2009 08:46:07 +0000 Subject: BGE: fix bug in mouse button release detection --- .../BlenderRoutines/KX_BlenderMouseDevice.cpp | 46 +++++++++++++++------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp index b2e965a35f6..2aae3557f0c 100644 --- a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp +++ b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp @@ -117,14 +117,12 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val) // convert event KX_EnumInputs kxevent = this->ToNative(incode); + int previousTable = 1-m_currentTable; // only process it, if it's a key - if (kxevent > KX_BEGINMOUSE && kxevent < KX_ENDMOUSE) + if (kxevent > KX_BEGINMOUSE && kxevent < KX_ENDMOUSEBUTTONS) { - int previousTable = 1-m_currentTable; - - - if (val > 0) + if (val == KM_PRESS) { m_eventStatusTables[m_currentTable][kxevent].m_eventval = val ; //??? @@ -139,14 +137,7 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val) } case SCA_InputEvent::KX_JUSTRELEASED: { - if ( kxevent > KX_BEGINMOUSEBUTTONS && kxevent < KX_ENDMOUSEBUTTONS) - { - m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED; - } else - { - m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE; - - } + m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED; break; } default: @@ -155,7 +146,7 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val) } } - } else + } else if (val == KM_RELEASE) { // blender eventval == 0 switch (m_eventStatusTables[previousTable][kxevent].m_status) @@ -173,5 +164,32 @@ bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode,short val) } } } + + if (kxevent > KX_ENDMOUSEBUTTONS && kxevent < KX_ENDMOUSE) + { + m_eventStatusTables[m_currentTable][kxevent].m_eventval = val ; //remember mouse position + + switch (m_eventStatusTables[previousTable][kxevent].m_status) + { + + case SCA_InputEvent::KX_ACTIVE: + case SCA_InputEvent::KX_JUSTACTIVATED: + { + m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE; + break; + } + case SCA_InputEvent::KX_JUSTRELEASED: + { + m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_ACTIVE; + break; + } + default: + { + m_eventStatusTables[m_currentTable][kxevent].m_status = SCA_InputEvent::KX_JUSTACTIVATED; + } + } + } + + return result; } -- cgit v1.2.3 From d765068fca979efece01bf124141d4df56fca9ef Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 8 Dec 2009 08:58:24 +0000 Subject: BGE: add hitUV property to mouse focus sensor to return UV coordinates under mouse pointer. Useful for texture painting. More details in PyDoc. --- source/gameengine/Ketsji/KX_MouseFocusSensor.cpp | 16 +++++++++++++++- source/gameengine/Ketsji/KX_MouseFocusSensor.h | 7 +++++++ source/gameengine/PyDoc/GameTypes.py | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp index 2dbaf3c9081..110e3abd6d8 100644 --- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp +++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp @@ -150,6 +150,7 @@ bool KX_MouseFocusSensor::RayHit(KX_ClientObjectInfo* client_info, KX_RayCast* r m_hitObject = hitKXObj; m_hitPosition = result->m_hitPoint; m_hitNormal = result->m_hitNormal; + m_hitUV = result->m_hitUV; return true; } @@ -284,7 +285,8 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam) KX_IPhysicsController* physics_controller = cam->GetPhysicsController(); PHY_IPhysicsEnvironment* physics_environment = m_kxscene->GetPhysicsEnvironment(); - KX_RayCast::Callback callback(this,physics_controller); + // get UV mapping + KX_RayCast::Callback callback(this,physics_controller,NULL,false,true); KX_RayCast::RayTest(physics_environment, m_prevSourcePoint, m_prevTargetPoint, callback); @@ -340,6 +342,11 @@ const MT_Vector3& KX_MouseFocusSensor::HitNormal() const return m_hitNormal; } +const MT_Vector2& KX_MouseFocusSensor::HitUV() const +{ + return m_hitUV; +} + #ifndef DISABLE_PYTHON /* ------------------------------------------------------------------------- */ @@ -380,6 +387,7 @@ PyAttributeDef KX_MouseFocusSensor::Attributes[] = { KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_MouseFocusSensor, pyattr_get_hit_object), KX_PYATTRIBUTE_RO_FUNCTION("hitPosition", KX_MouseFocusSensor, pyattr_get_hit_position), KX_PYATTRIBUTE_RO_FUNCTION("hitNormal", KX_MouseFocusSensor, pyattr_get_hit_normal), + KX_PYATTRIBUTE_RO_FUNCTION("hitUV", KX_MouseFocusSensor, pyattr_get_hit_uv), KX_PYATTRIBUTE_BOOL_RW("usePulseFocus", KX_MouseFocusSensor,m_bTouchPulse), { NULL } //Sentinel }; @@ -428,6 +436,12 @@ PyObject* KX_MouseFocusSensor::pyattr_get_hit_normal(void *self_v, const KX_PYAT return PyObjectFrom(self->HitNormal()); } +PyObject* KX_MouseFocusSensor::pyattr_get_hit_uv(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + KX_MouseFocusSensor* self= static_cast(self_v); + return PyObjectFrom(self->HitUV()); +} + #endif // DISABLE_PYTHON /* eof */ diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.h b/source/gameengine/Ketsji/KX_MouseFocusSensor.h index e3f0e2b34f5..b107b54434b 100644 --- a/source/gameengine/Ketsji/KX_MouseFocusSensor.h +++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.h @@ -92,6 +92,7 @@ class KX_MouseFocusSensor : public SCA_MouseSensor const MT_Point3& RayTarget() const; const MT_Point3& HitPosition() const; const MT_Vector3& HitNormal() const; + const MT_Vector2& HitUV() const; #ifndef DISABLE_PYTHON @@ -106,6 +107,7 @@ class KX_MouseFocusSensor : public SCA_MouseSensor static PyObject* pyattr_get_hit_object(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); static PyObject* pyattr_get_hit_position(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); static PyObject* pyattr_get_hit_normal(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static PyObject* pyattr_get_hit_uv(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef); #endif // DISABLE_PYTHON @@ -164,6 +166,11 @@ class KX_MouseFocusSensor : public SCA_MouseSensor * the object was hit. */ MT_Vector3 m_hitNormal; + /** + * UV texture coordinate of the hit point if any, (0,0) otherwise + */ + MT_Vector2 m_hitUV; + /** * The KX scene that holds the camera. The camera position * determines a part of the start location of the picking ray. */ diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py index 27b4685ca14..ba22dbd4e8f 100644 --- a/source/gameengine/PyDoc/GameTypes.py +++ b/source/gameengine/PyDoc/GameTypes.py @@ -2414,6 +2414,10 @@ class KX_MouseFocusSensor(SCA_MouseSensor): @type hitPosition: list (vector of 3 floats) @ivar hitNormal: the worldspace normal from the face at point of intersection. @type hitNormal: list (normalized vector of 3 floats) + @ivar hitUV: the UV coordinates at the point of intersection. + If the object has no UV mapping, it returns [0,0]. + The UV coordinates are not normalized, they can be < 0 or > 1 depending on the UV mapping. + @type hitUV: list (vector of 2 floats) @ivar usePulseFocus: When enabled, moving the mouse over a different object generates a pulse. (only used when the 'Mouse Over Any' sensor option is set) @type usePulseFocus: bool """ -- cgit v1.2.3 From c146ce977cea962e82f9b542bdf4d342d6ec0d2a Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 8 Dec 2009 09:07:20 +0000 Subject: Quick ShapeKey Editor fix (i.e. submode of DopeSheet): Switching to ShapeKey Editor mode now shows the sliders again --- source/blender/makesrna/intern/rna_space.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index cc44a1b6c14..21258458a57 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -464,6 +464,19 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) } } +static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr) +{ + SpaceAction *saction= (SpaceAction*)(ptr->data); + + /* special exception for ShapeKey Editor mode: + * enable 'show sliders' by default, since one of the main + * points of the ShapeKey Editor is to provide a one-stop shop + * for controlling the shapekeys, whose main control is the value + */ + if (saction->mode == SACTCONT_SHAPEKEY) + saction->flag |= SACTION_SLIDERS; +} + static int rna_SpaceGraphEditor_has_ghost_curves_get(PointerRNA *ptr) { SpaceIpo *sipo= (SpaceIpo*)(ptr->data); @@ -1251,7 +1264,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "mode"); RNA_def_property_enum_items(prop, mode_items); RNA_def_property_ui_text(prop, "Mode", "Editing context being displayed."); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_mode_update"); /* display */ prop= RNA_def_property(srna, "show_seconds", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From fccceaa87fb1e883c5d29113dc8b7d33786c8c1e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 09:40:30 +0000 Subject: - pyrna support for (value in array), currently only 1 dimensional arrays. - use python malloc's in bpy_array.c - automatically blending bone locations is disabled if the target bone has locked location - neck had incorrect roll --- release/scripts/modules/rigify/__init__.py | 3 +- release/scripts/modules/rigify/neck.py | 2 +- source/blender/python/intern/bpy_array.c | 97 ++++++++++++++++++++++++++++-- source/blender/python/intern/bpy_rna.c | 35 ++++++----- source/blender/python/intern/bpy_rna.h | 1 + 5 files changed, 118 insertions(+), 20 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index cf6e17a895f..f33ba9edc56 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -272,7 +272,8 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta new_pbone = obj.pose.bones[new_bone_name] - if not new_pbone.bone.connected: + # if the bone is connected or its location is totally locked then dont add location blending. + if not (new_pbone.bone.connected or (False not in new_pbone.lock_location)): blend_location(new_pbone, from_bone_name, to_bone_name) blend_rotation(new_pbone, from_bone_name, to_bone_name) diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index d20c231c0f8..9c7e53fa52d 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -160,7 +160,7 @@ def main(obj, bone_definition, base_names): neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) neck_e_parent.head = neck_e.head neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) - neck_e_parent.roll = neck_e.roll + neck_e_parent.roll = mt.head_e.roll orig_parent = neck_e.parent diff --git a/source/blender/python/intern/bpy_array.c b/source/blender/python/intern/bpy_array.c index f11c95e7ed5..5f228836b42 100644 --- a/source/blender/python/intern/bpy_array.c +++ b/source/blender/python/intern/bpy_array.c @@ -32,8 +32,6 @@ #include "BKE_global.h" -#include "MEM_guardedalloc.h" - #define MAX_ARRAY_DIMENSION 10 typedef void (*ItemConvertFunc)(PyObject *, char *); @@ -258,7 +256,7 @@ static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *p if (totitem) { if (!param_data || RNA_property_flag(prop) & PROP_DYNAMIC) - data= MEM_callocN(item_size * totitem, "pyrna primitive type array"); + data= PyMem_MALLOC(item_size * totitem); else data= param_data; @@ -273,7 +271,7 @@ static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *p else { /* NULL can only pass through in case RNA property arraylength is 0 (impossible?) */ rna_set_array(ptr, prop, data); - MEM_freeN(data); + PyMem_FREE(data); } } @@ -513,3 +511,94 @@ PyObject *pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop) return pyrna_prop_CreatePyObject(ptr, prop); } + +/* TODO, multi-dimensional arrays */ +int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value) +{ + int len= RNA_property_array_length(ptr, prop); + int type; + int i; + + if(len==0) /* possible with dynamic arrays */ + return 0; + + if (RNA_property_array_dimension(ptr, prop, NULL) > 1) { + PyErr_SetString(PyExc_TypeError, "PropertyRNA - multi dimensional arrays not supported yet"); + return -1; + } + + type= RNA_property_type(prop); + + switch (type) { + case PROP_FLOAT: + { + float value_f= PyFloat_AsDouble(value); + if(value_f==-1 && PyErr_Occurred()) { + PyErr_Clear(); + return 0; + } + else { + float tmp[32]; + float *tmp_arr; + + if(len * sizeof(float) > sizeof(tmp)) { + tmp_arr= PyMem_MALLOC(len * sizeof(float)); + } + else { + tmp_arr= tmp; + } + + RNA_property_float_get_array(ptr, prop, tmp_arr); + + for(i=0; i sizeof(tmp)) { + tmp_arr= PyMem_MALLOC(len * sizeof(int)); + } + else { + tmp_arr= tmp; + } + + if(type==PROP_BOOLEAN) + RNA_property_boolean_get_array(ptr, prop, tmp_arr); + else + RNA_property_int_get_array(ptr, prop, tmp_arr); + + for(i=0; iprop) == PROP_COLLECTION) { + /* key in dict style check */ + char *keyname = _PyUnicode_AsString(value); - if (RNA_property_type(self->prop) != PROP_COLLECTION) { - PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, is only valid for collection types"); - return -1; - } + if(keyname==NULL) { + PyErr_SetString(PyExc_TypeError, "PropertyRNA - key in prop, key must be a string type"); + return -1; + } - if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr)) - return 1; + if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr)) + return 1; + } + else if (RNA_property_array_check(&self->ptr, self->prop)) { + /* value in list style check */ + return pyrna_array_contains_py(&self->ptr, self->prop, value); + } + else { + PyErr_SetString(PyExc_TypeError, "PropertyRNA - type is not an array or a collection"); + return -1; + } return 0; } @@ -2264,6 +2271,9 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set) } } + if(array) + PyMem_Free(array); + if(PyErr_Occurred()) { /* Maybe we could make our own error */ PyErr_Print(); @@ -2275,9 +2285,6 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set) return NULL; } - if(array) - PyMem_Free(array); - Py_RETURN_NONE; } diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index 0e40bf7258c..37f6af36726 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -103,5 +103,6 @@ int pyrna_py_to_array_index(PointerRNA *ptr, PropertyRNA *prop, int arraydim, in PyObject *pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop); PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index); PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop); +int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value); #endif -- cgit v1.2.3 From 5132b6a173fd88ead0bd7f0dd82bacf8672b3b4a Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 8 Dec 2009 09:58:42 +0000 Subject: OSX: Disable parallel openMP for elbeem library until a proper fix is found (currently makes fluid sim crash) (Bug# 20043) Thx Jens Verwiebe for the investigation! --- intern/elbeem/CMakeLists.txt | 4 ++-- intern/elbeem/SConscript | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/intern/elbeem/CMakeLists.txt b/intern/elbeem/CMakeLists.txt index e541d334086..b59554e5709 100644 --- a/intern/elbeem/CMakeLists.txt +++ b/intern/elbeem/CMakeLists.txt @@ -33,9 +33,9 @@ IF(WINDOWS) ADD_DEFINITIONS(-DUSE_MSVC6FIXES) ENDIF(WINDOWS) -IF(WITH_OPENMP) +IF(WITH_OPENMP AND NOT APPLE) ADD_DEFINITIONS(-DPARALLEL=1) -ENDIF(WITH_OPENMP) +ENDIF(WITH_OPENMP AND NOT APPLE) BLENDERLIB_NOLIST(bf_elbeem "${SRC}" "${INC}") #, libtype='blender', priority=0 ) diff --git a/intern/elbeem/SConscript b/intern/elbeem/SConscript index 0900ab1db5c..ef411d0eb03 100644 --- a/intern/elbeem/SConscript +++ b/intern/elbeem/SConscript @@ -8,7 +8,8 @@ sources = env.Glob('intern/*.cpp') defs = 'NOGUI ELBEEM_BLENDER=1' if env['WITH_BF_OPENMP']: - defs += ' PARALLEL' + if env['OURPLATFORM'] != 'darwin': + defs += ' PARALLEL' if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): defs += ' USE_MSVC6FIXES' -- cgit v1.2.3 From 445d077cf4ecc84b5d5cf422bfb2040186d60164 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 8 Dec 2009 10:02:22 +0000 Subject: BGE: Add plot method to VideoTexture.ImageBuff class. Synopsis: plot(brush,width,height,x,y,mode) plot(imgbuff,x,y,mode) The first form uses a byte array containing the brush shape. The second form uses another ImageBuff object as a brush. The ImageBuff object must be initialized before you can call these methods. Use load(rgb_buffer,sizex,sizey) method to create an image buffer of given size (with alpha channel set to 255). The brush is plotted directly in the image buffer. The texture is updated only when the VideoTexture.Texture parent object is refreshed: this will download the image buffer to the GPU. brush: Byte array containing RGBA data to be plotted in image buffer. The data must be continuous in memory, organized row by row starting from lower left corner of the image. Each pixel is 4 bytes representing RGBA data in that order. width: Horizontal size in pixels of image in brush. height: Vertical size in pixels of the image in brush. imgbuff:Another ImageBuff object that is used as a brush. The object must have been initialized first with load(). x: Horizontal position in pixel from left side of the image buffer where the brush will be plotted. The brush is plotted on pixels positions x->x+width-1. Clipping is performed if the brush falls partially outside the image buffer. y: Vertical position in pixel from bottom side of the image buffer where the brush will be plotted. mode: Mode of drawing. Use one of the following value: 0 : MIX 1 : ADD 2 : SUB 3 : MUL 4 : LIGHTEN 5 : DARKEN 6 : ERASE ALPHA 7 : ADD ALPHA 1000 : COPY RGBA (default) 1001 : COPY RGB 1002 : COPY ALPHA Modes 0 to 7 are 'blend' modes: the brush pixels are combined with the image pixel in various ways. Refer to Blender documentation to learn more about these modes. --- source/gameengine/VideoTexture/ImageBuff.cpp | 153 ++++++++++++++++++++++++--- source/gameengine/VideoTexture/ImageBuff.h | 12 ++- 2 files changed, 150 insertions(+), 15 deletions(-) diff --git a/source/gameengine/VideoTexture/ImageBuff.cpp b/source/gameengine/VideoTexture/ImageBuff.cpp index 9cd661a2422..eccac9d9f89 100644 --- a/source/gameengine/VideoTexture/ImageBuff.cpp +++ b/source/gameengine/VideoTexture/ImageBuff.cpp @@ -30,14 +30,34 @@ http://www.gnu.org/copyleft/lesser.txt. #include "ImageBase.h" #include "FilterSource.h" +// use ImBuf API for image manipulation +extern "C" { +#include "IMB_imbuf_types.h" +#include "IMB_imbuf.h" +}; // default filter FilterRGB24 defFilter; +// forward declaration; +extern PyTypeObject ImageBuffType; + +ImageBuff::~ImageBuff (void) +{ + if (m_imbuf) + IMB_freeImBuf(m_imbuf); +} + // load image from buffer void ImageBuff::load (unsigned char * img, short width, short height) { + // loading a new buffer implies to reset the imbuf if any, because the size may change + if (m_imbuf) + { + IMB_freeImBuf(m_imbuf); + m_imbuf = NULL; + } // initialize image buffer init(width, height); // original size @@ -53,6 +73,52 @@ void ImageBuff::load (unsigned char * img, short width, short height) m_avail = true; } +// img must point to a array of RGBA data of size width*height +void ImageBuff::plot (unsigned char * img, short width, short height, short x, short y, short mode) +{ + struct ImBuf* tmpbuf; + + if (m_size[0] == 0 || m_size[1] == 0 || width <= 0 || height <= 0) + return; + + if (!m_imbuf) { + // allocate most basic imbuf, we will assign the rect buffer on the fly + m_imbuf = IMB_allocImBuf(m_size[0], m_size[1], 0, 0, 0); + } + + tmpbuf = IMB_allocImBuf(width, height, 0, 0, 0); + + // assign temporarily our buffer to the ImBuf buffer, we use the same format + tmpbuf->rect = (unsigned int*)img; + m_imbuf->rect = m_image; + IMB_rectblend(m_imbuf, tmpbuf, x, y, 0, 0, width, height, (IMB_BlendMode)mode); + // remove so that MB_freeImBuf will free our buffer + m_imbuf->rect = NULL; + tmpbuf->rect = NULL; + IMB_freeImBuf(tmpbuf); +} + +void ImageBuff::plot (ImageBuff* img, short x, short y, short mode) +{ + if (m_size[0] == 0 || m_size[1] == 0 || img->m_size[0] == 0 || img->m_size[1] == 0) + return; + + if (!m_imbuf) { + // allocate most basic imbuf, we will assign the rect buffer on the fly + m_imbuf = IMB_allocImBuf(m_size[0], m_size[1], 0, 0, 0); + } + if (!img->m_imbuf) { + // allocate most basic imbuf, we will assign the rect buffer on the fly + img->m_imbuf = IMB_allocImBuf(img->m_size[0], img->m_size[1], 0, 0, 0); + } + // assign temporarily our buffer to the ImBuf buffer, we use the same format + img->m_imbuf->rect = img->m_image; + m_imbuf->rect = m_image; + IMB_rectblend(m_imbuf, img->m_imbuf, x, y, 0, 0, img->m_imbuf->x, img->m_imbuf->y, (IMB_BlendMode)mode); + // remove so that MB_freeImBuf will free our buffer + m_imbuf->rect = NULL; + img->m_imbuf->rect = NULL; +} // cast Image pointer to ImageBuff @@ -62,16 +128,47 @@ inline ImageBuff * getImageBuff (PyImage * self) // python methods +static bool testPyBuffer(Py_buffer* buffer, int width, int height, unsigned int pixsize) +{ + if (buffer->itemsize != 1) + { + PyErr_SetString(PyExc_ValueError, "Buffer must be an array of bytes"); + return false; + } + if (buffer->len != width*height*pixsize) + { + PyErr_SetString(PyExc_ValueError, "Buffer hasn't correct size"); + return false; + } + // multi dimension are ok as long as there is no hole in the memory + Py_ssize_t size = buffer->itemsize; + for (int i=buffer->ndim-1; i>=0 ; i--) + { + if (buffer->suboffsets != NULL && buffer->suboffsets[i] >= 0) + { + PyErr_SetString(PyExc_ValueError, "Buffer must be of one block"); + return false; + } + if (buffer->strides != NULL && buffer->strides[i] != size) + { + PyErr_SetString(PyExc_ValueError, "Buffer must be of one block"); + return false; + } + if (i > 0) + size *= buffer->shape[i]; + } + return true; +} + // load image static PyObject * load (PyImage * self, PyObject * args) { // parameters: string image buffer, its size, width, height - unsigned char * buff; - unsigned int buffSize; + Py_buffer buffer; short width; short height; // parse parameters - if (!PyArg_ParseTuple(args, "s#hh:load", &buff, &buffSize, &width, &height)) + if (!PyArg_ParseTuple(args, "s*hh:load", &buffer, &width, &height)) { // report error return NULL; @@ -80,31 +177,61 @@ static PyObject * load (PyImage * self, PyObject * args) else { // calc proper buffer size - unsigned int propSize = width * height; + unsigned int pixSize; // use pixel size from filter if (self->m_image->getFilter() != NULL) - propSize *= self->m_image->getFilter()->m_filter->firstPixelSize(); + pixSize = self->m_image->getFilter()->m_filter->firstPixelSize(); else - propSize *= defFilter.firstPixelSize(); + pixSize = defFilter.firstPixelSize(); // check if buffer size is correct - if (propSize != buffSize) + if (testPyBuffer(&buffer, width, height, pixSize)) { - // if not, report error - PyErr_SetString(PyExc_TypeError, "Buffer hasn't correct size"); - return NULL; - } - else // if correct, load image - getImageBuff(self)->load(buff, width, height); + getImageBuff(self)->load((unsigned char*)buffer.buf, width, height); + } + PyBuffer_Release(&buffer); } Py_RETURN_NONE; } +static PyObject * plot (PyImage * self, PyObject * args) +{ + PyImage * other; + Py_buffer buffer; + //unsigned char * buff; + //unsigned int buffSize; + short width; + short height; + short x, y; + short mode = IMB_BLEND_COPY; + + if (PyArg_ParseTuple(args, "s*hhhh|h:plot", &buffer, &width, &height, &x, &y, &mode)) + { + // correct decoding, verify that buffer size is correct + // we need a continous memory buffer + if (testPyBuffer(&buffer, width, height, 4)) + { + getImageBuff(self)->plot((unsigned char*)buffer.buf, width, height, x, y, mode); + } + PyBuffer_Release(&buffer); + Py_RETURN_NONE; + } + PyErr_Clear(); + // try the other format + if (!PyArg_ParseTuple(args, "O!hh|h:plot", &ImageBuffType, &other, &x, &y, &mode)) + { + PyErr_SetString(PyExc_TypeError, "Expecting ImageBuff or string,width,height as first arguments, postion x, y and mode and last arguments"); + return NULL; + } + getImageBuff(self)->plot(getImageBuff(other), x, y, mode); + Py_RETURN_NONE; +} // methods structure static PyMethodDef imageBuffMethods[] = { {"load", (PyCFunction)load, METH_VARARGS, "Load image from buffer"}, + {"plot", (PyCFunction)plot, METH_VARARGS, "update image buffer"}, {NULL} }; // attributes structure diff --git a/source/gameengine/VideoTexture/ImageBuff.h b/source/gameengine/VideoTexture/ImageBuff.h index fa2025fa8c4..e18edc44288 100644 --- a/source/gameengine/VideoTexture/ImageBuff.h +++ b/source/gameengine/VideoTexture/ImageBuff.h @@ -28,20 +28,28 @@ http://www.gnu.org/copyleft/lesser.txt. #include "ImageBase.h" +struct ImBuf; /// class for image buffer class ImageBuff : public ImageBase { +private: + struct ImBuf* m_imbuf; // temporary structure for buffer manipulation public: /// constructor - ImageBuff (void) : ImageBase(true) {} + ImageBuff (void) : ImageBase(true), m_imbuf(NULL) {} /// destructor - virtual ~ImageBuff (void) {} + virtual ~ImageBuff (void); /// load image from buffer void load (unsigned char * img, short width, short height); + /// plot image from extern RGBA buffer to image at position x,y using one of IMB_BlendMode + void plot (unsigned char * img, short width, short height, short x, short y, short mode); + /// plot image from other ImageBuf to image at position x,y using one of IMB_BlendMode + void plot (ImageBuff* img, short x, short y, short mode); + /// refresh image - do nothing virtual void refresh (void) {} }; -- cgit v1.2.3 From 0391b1ab780b34a149d3c4181d0fe676ef55199e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 10:36:46 +0000 Subject: compile python driver expressions for faster re-evaluation. approx 15-25x speedup --- source/blender/blenkernel/intern/fcurve.c | 7 ++++++- source/blender/blenloader/intern/writefile.c | 6 ++++++ source/blender/makesdna/DNA_anim_types.h | 5 ++++- source/blender/makesrna/intern/rna_fcurve.c | 9 ++++++++- source/blender/python/BPY_extern.h | 2 +- source/blender/python/intern/bpy_interface.c | 18 +++++++++++++++--- 6 files changed, 40 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index b3a6b773cf3..04fcd43b883 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -758,7 +758,12 @@ void fcurve_free_driver(FCurve *fcu) dtarn= dtar->next; driver_free_target(driver, dtar); } - + +#ifndef DISABLE_PYTHON + if(driver->expr_comp) + BPY_DECREF(driver->expr_comp); +#endif + /* free driver itself, then set F-Curve's point to this to NULL (as the curve may still be used) */ MEM_freeN(driver); fcu->driver= NULL; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 2bfc726b7c7..3d654f5ebc9 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -934,8 +934,14 @@ static void write_fcurves(WriteData *wd, ListBase *fcurves) ChannelDriver *driver= fcu->driver; DriverTarget *dtar; + /* don't save compiled python bytecode */ + void *expr_comp= driver->expr_comp; + driver->expr_comp= NULL; + writestruct(wd, DATA, "ChannelDriver", 1, driver); + driver->expr_comp= expr_comp; /* restore */ + /* targets */ for (dtar= driver->targets.first; dtar; dtar= dtar->next) { writestruct(wd, DATA, "DriverTarget", 1, dtar); diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index 09f77d98f4b..c5d0231ce62 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -291,7 +291,8 @@ typedef struct ChannelDriver { /* python expression to execute (may call functions defined in an accessory file) * which relates the target 'variables' in some way to yield a single usable value */ - char expression[256]; + char expression[256]; + void *expr_comp; /* PyObject - compiled expression, dont save this */ float curval; /* result of previous evaluation, for subtraction from result under certain circumstances */ float influence; /* influence of driver on result */ // XXX to be implemented... this is like the constraint influence setting @@ -322,6 +323,8 @@ typedef enum eDriver_Flags { /* driver does replace value, but overrides (for layering of animation over driver) */ // TODO: this needs to be implemented at some stage or left out... DRIVER_FLAG_LAYERING = (1<<2), + + DRIVER_FLAG_RECOMPILE = (1<<3), /* use when the expression needs to be recompiled */ } eDriver_Flags; /* F-Curves -------------------------------------- */ diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index bf8b74d08ee..e126175a020 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -105,6 +105,13 @@ static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); } +static void rna_ChannelDriver_update_expr(bContext *C, PointerRNA *ptr) +{ + ChannelDriver *driver= ptr->data; + driver->flag |= DRIVER_FLAG_RECOMPILE; + rna_ChannelDriver_update_data(C, ptr); +} + static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr) { PointerRNA driverptr; @@ -807,7 +814,7 @@ static void rna_def_channeldriver(BlenderRNA *brna) /* String values */ prop= RNA_def_property(srna, "expression", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Expression", "Expression to use for Scripted Expression."); - RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_data"); + RNA_def_property_update(prop, 0, "rna_ChannelDriver_update_expr"); /* Collections */ prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE); diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h index a055060ed07..6a94443dd8b 100644 --- a/source/blender/python/BPY_extern.h +++ b/source/blender/python/BPY_extern.h @@ -134,7 +134,7 @@ extern "C" { // void BPY_scripts_clear_pyobjects( void ); // // void error_pyscript( void ); -// void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */ + void BPY_DECREF(void *pyob_ptr); /* Py_DECREF() */ void BPY_set_context(struct bContext *C); /* void BPY_Err_Handle(struct Text *text); */ /* int BPY_spacetext_is_pywin(struct SpaceText *st); */ diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index d4d0cbf602f..af1d522600a 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -549,7 +549,9 @@ int BPY_run_script_space_listener(bContext *C, SpaceScript * sc) void BPY_DECREF(void *pyob_ptr) { + PyGILState_STATE gilstate = PyGILState_Ensure(); Py_DECREF((PyObject *)pyob_ptr); + PyGILState_Release(gilstate); } #if 0 @@ -721,7 +723,7 @@ static float pydriver_error(ChannelDriver *driver) float BPY_pydriver_eval (ChannelDriver *driver) { PyObject *driver_vars=NULL; - PyObject *retval; + PyObject *retval= NULL; PyGILState_STATE gilstate; DriverTarget *dtar; @@ -772,10 +774,20 @@ float BPY_pydriver_eval (ChannelDriver *driver) BPy_errors_to_report(NULL); // TODO - reports } } - + +#if 0 // slow /* execute expression to get a value */ retval = PyRun_String(expr, Py_eval_input, bpy_pydriver_Dict, driver_vars); - +#else + if(driver->flag & DRIVER_FLAG_RECOMPILE || driver->expr_comp==NULL) { + Py_XDECREF(driver->expr_comp); + driver->expr_comp= Py_CompileString(expr, "", Py_eval_input); + driver->flag &= ~DRIVER_FLAG_RECOMPILE; + } + if(driver->expr_comp) + retval= PyEval_EvalCode(driver->expr_comp, bpy_pydriver_Dict, driver_vars); +#endif + /* decref the driver vars first... */ Py_DECREF(driver_vars); -- cgit v1.2.3 From 88b0e1c52ad9df86ea3ca7c897672babfe21be0b Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 8 Dec 2009 12:16:34 +0000 Subject: OSX: print warning if Blender application is located in a path Python lib can't handle (bug # 20258) OSX allow file/directory names to contain ':' (displayed as '/' in Finder), and current Python lib (3.1.1) has trouble with those when importing modules. Added warning message to help user understand why Blender start fails in this case. --- source/blender/python/intern/bpy_interface.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index af1d522600a..d1ef7401494 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -280,6 +280,14 @@ void BPY_start_python_path(void) /* set the environment path */ printf("found bundled python: %s\n", py_path_bundle); +#ifdef __APPLE__ + /* OSX allow file/directory names to contain : character (represented as / in the Finder) + but current Python lib (release 3.1.1) doesn't handle these correctly */ + if(strchr(py_path_bundle, ':')) + printf("Warning : Blender application is located in a path containing : or / chars\ + \nThis may make python import function fail\n"); +#endif + #if 0 BLI_setenv("PYTHONHOME", py_path_bundle); BLI_setenv("PYTHONPATH", py_path_bundle); -- cgit v1.2.3 From 0304b623f559a515e844cdb12bec6a27e01251c2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 12:59:21 +0000 Subject: RNA: added common sequencer properties notifiers/updates. Still some updates missing. --- source/blender/makesrna/intern/rna_sequence.c | 185 ++++++++++++++++---------- 1 file changed, 115 insertions(+), 70 deletions(-) diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index cb9863d7ea5..4f9d2a3d6ca 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -42,7 +42,7 @@ #ifdef RNA_RUNTIME -static void rna_SequenceEditor_start_frame_set(PointerRNA *ptr, int value) +static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; Scene *sce= (Scene*)ptr->id.data; @@ -57,7 +57,7 @@ static void rna_SequenceEditor_start_frame_set(PointerRNA *ptr, int value) sort_seq(sce); } -static void rna_SequenceEditor_length_set(PointerRNA *ptr, int value) +static void rna_Sequence_length_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; Scene *sce= (Scene*)ptr->id.data; @@ -72,13 +72,13 @@ static void rna_SequenceEditor_length_set(PointerRNA *ptr, int value) sort_seq(sce); } -static int rna_SequenceEditor_length_get(PointerRNA *ptr) +static int rna_Sequence_length_get(PointerRNA *ptr) { Sequence *seq= (Sequence*)ptr->data; return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0); } -static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value) +static void rna_Sequence_channel_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; Scene *sce= (Scene*)ptr->id.data; @@ -93,7 +93,7 @@ static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value) } /* properties that need to allocate structs */ -static void rna_SequenceEditor_use_color_balance_set(PointerRNA *ptr, int value) +static void rna_Sequence_use_color_balance_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; int c; @@ -113,7 +113,7 @@ static void rna_SequenceEditor_use_color_balance_set(PointerRNA *ptr, int value) } } -static void rna_SequenceEditor_use_proxy_set(PointerRNA *ptr, int value) +static void rna_Sequence_use_proxy_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; if(value) { @@ -126,7 +126,7 @@ static void rna_SequenceEditor_use_proxy_set(PointerRNA *ptr, int value) } } -static void rna_SequenceEditor_use_translation_set(PointerRNA *ptr, int value) +static void rna_Sequence_use_translation_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; if(value) { @@ -139,7 +139,7 @@ static void rna_SequenceEditor_use_translation_set(PointerRNA *ptr, int value) } } -static void rna_SequenceEditor_use_crop_set(PointerRNA *ptr, int value) +static void rna_Sequence_use_crop_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; if(value) { @@ -263,6 +263,19 @@ static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) BLI_strncpy(elem->name, name, sizeof(elem->name)); } +static void rna_Sequence_update(bContext *C, PointerRNA *ptr) +{ + Scene *scene= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + + free_imbuf_seq(scene, &ed->seqbase, FALSE); +} + +static void rna_Sequence_sound_update(bContext *C, PointerRNA *ptr) +{ + /* TODO */ +} + #else static void rna_def_strip_element(BlenderRNA *brna) @@ -278,6 +291,7 @@ static void rna_def_strip_element(BlenderRNA *brna) RNA_def_property_string_sdna(prop, NULL, "name"); RNA_def_property_ui_text(prop, "Filename", ""); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SequenceElement_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_strip_crop(BlenderRNA *brna) @@ -292,18 +306,22 @@ static void rna_def_strip_crop(BlenderRNA *brna) prop= RNA_def_property(srna, "top", PROP_INT, PROP_UNSIGNED); RNA_def_property_ui_text(prop, "Top", ""); RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "bottom", PROP_INT, PROP_UNSIGNED); RNA_def_property_ui_text(prop, "Bottom", ""); RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "left", PROP_INT, PROP_UNSIGNED); RNA_def_property_ui_text(prop, "Left", ""); RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "right", PROP_INT, PROP_UNSIGNED); RNA_def_property_ui_text(prop, "Right", ""); RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_strip_transform(BlenderRNA *brna) @@ -319,11 +337,13 @@ static void rna_def_strip_transform(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "xofs"); RNA_def_property_ui_text(prop, "Offset Y", ""); RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "offset_y", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "yofs"); RNA_def_property_ui_text(prop, "Offset Y", ""); RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_strip_proxy(BlenderRNA *brna) @@ -338,10 +358,12 @@ static void rna_def_strip_proxy(BlenderRNA *brna) prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "dir"); RNA_def_property_ui_text(prop, "Directory", "Location to story the proxy file"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "file", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "file"); RNA_def_property_ui_text(prop, "File", "Proxy file name"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_strip_color_balance(BlenderRNA *brna) @@ -355,33 +377,41 @@ static void rna_def_strip_color_balance(BlenderRNA *brna) prop= RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Lift", "Color balance lift (shadows)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Gamma", "Color balance gamma (midtones)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Gain", "Color balance gain (highlights)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAIN); RNA_def_property_ui_text(prop, "Inverse Gain", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "inverse_gamma", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAMMA); RNA_def_property_ui_text(prop, "Inverse Gamma", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "inverse_lift", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT); RNA_def_property_ui_text(prop, "Inverse Lift", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); /* not yet used prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Exposure", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Saturation", "");*/ + RNA_def_property_ui_text(prop, "Saturation", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); */ } static void rna_def_sequence(BlenderRNA *brna) @@ -434,11 +464,13 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_string_maxlength(prop, sizeof(((Sequence*)NULL)->name)-2); RNA_def_property_ui_text(prop, "Name", ""); RNA_def_struct_name_property(srna, prop); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_enum_items(prop, seq_type_items); RNA_def_property_ui_text(prop, "Type", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); //prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE); //RNA_def_property_ui_text(prop, "Ipo Curves", "Ipo curves used by this sequence."); @@ -448,28 +480,32 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); RNA_def_property_ui_text(prop, "Left Handle Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); RNA_def_property_ui_text(prop, "Right Handle Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); RNA_def_property_ui_text(prop, "Mute", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it can't be transformed."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); /* strip positioning */ @@ -477,76 +513,76 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "len"); RNA_def_property_range(prop, 1, MAXFRAME); RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); - RNA_def_property_int_funcs(prop, "rna_SequenceEditor_length_get", "rna_SequenceEditor_length_set",NULL); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_int_funcs(prop, "rna_Sequence_length_get", "rna_Sequence_length_set",NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "start"); RNA_def_property_ui_text(prop, "Start Frame", ""); - RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_start_frame_set",NULL); // overlap tests and calc_seq_disp - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "startofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_ui_text(prop, "Start Offset", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "endofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_ui_text(prop, "End offset", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "startstill"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "Start Still", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "endstill"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "End Still", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "machine"); RNA_def_property_range(prop, 0, MAXSEQ-1); RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip."); - RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_channel_set",NULL); // overlap test - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set",NULL); // overlap test + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); /* blending */ prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, blend_mode_items); RNA_def_property_ui_text(prop, "Blend Mode", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Blend Opacity", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_float_sdna(prop, NULL, "effect_fader"); RNA_def_property_ui_text(prop, "Effect fader position", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE); RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "speed_fader"); RNA_def_property_ui_text(prop, "Speed effect fader position", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); /* functions */ func= RNA_def_function(srna, "getStripElem", "give_stripelem"); @@ -598,66 +634,63 @@ static void rna_def_filter_video(StructRNA *srna) prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX); RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY); RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT); RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES); RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "mul"); RNA_def_property_range(prop, 0.0f, 20.0f); RNA_def_property_ui_text(prop, "Multiply Colors", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 1.0f, 30.0f); RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE); RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_color_balance_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_color_balance_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance"); RNA_def_property_ui_text(prop, "Color Balance", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM); RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_translation_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->transform"); RNA_def_property_ui_text(prop, "Transform", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP); RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_crop_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_crop_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->crop"); RNA_def_property_ui_text(prop, "Crop", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); } static void rna_def_proxy(StructRNA *srna) @@ -667,7 +700,7 @@ static void rna_def_proxy(StructRNA *srna) prop= RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY); RNA_def_property_ui_text(prop, "Use Proxy", "Use a preview proxy for this strip."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_proxy_set"); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_proxy_set"); prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy"); @@ -676,6 +709,7 @@ static void rna_def_proxy(StructRNA *srna) prop= RNA_def_property(srna, "proxy_custom_directory", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_DIR); RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_input(StructRNA *srna) @@ -686,13 +720,13 @@ static void rna_def_input(StructRNA *srna) RNA_def_property_int_sdna(prop, NULL, "anim_startofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "animation_end_offset", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "anim_endofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test RNA_def_property_ui_text(prop, "Animation End Offset", "Animation end offset (trim end)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_image(BlenderRNA *brna) @@ -707,13 +741,13 @@ static void rna_def_image(BlenderRNA *brna) prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "strip->dir"); RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "strip->stripdata", "strip->len"); RNA_def_property_struct_type(prop, "SequenceElement"); RNA_def_property_ui_text(prop, "Elements", ""); - rna_def_filter_video(srna); rna_def_proxy(srna); rna_def_input(srna); @@ -750,7 +784,7 @@ static void rna_def_scene(BlenderRNA *brna) prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); rna_def_filter_video(srna); rna_def_proxy(srna); @@ -770,15 +804,18 @@ static void rna_def_movie(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "anim_preseek"); RNA_def_property_range(prop, 0, 50); RNA_def_property_ui_text(prop, "MPEG Preseek", "For MPEG movies, preseek this many frames."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); RNA_def_property_ui_text(prop, "Filename", ""); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MovieSequence_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "strip->dir"); RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); rna_def_filter_video(srna); rna_def_proxy(srna); @@ -797,15 +834,18 @@ static void rna_def_sound(BlenderRNA *brna) prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Sound"); RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); RNA_def_property_ui_text(prop, "Filename", ""); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoundSequence_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "strip->dir"); RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); rna_def_input(srna); @@ -815,7 +855,7 @@ static void rna_def_sound(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "volume"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); } static void rna_def_effect(BlenderRNA *brna) @@ -842,6 +882,7 @@ static void rna_def_plugin(BlenderRNA *brna) RNA_def_property_string_sdna(prop, NULL, "name"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Filename", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); /* plugin properties need custom wrapping code like ID properties */ } @@ -875,25 +916,25 @@ static void rna_def_wipe(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "edgeWidth"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Blur Width", "Width of the blur edge, in percentage relative to the image size."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "angle"); RNA_def_property_range(prop, -90.0f, 90.0f); RNA_def_property_ui_text(prop, "Angle", "Edge angle."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "forward"); RNA_def_property_enum_items(prop, wipe_direction_items); RNA_def_property_ui_text(prop, "Direction", "Wipe direction."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "transition_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "wipetype"); RNA_def_property_enum_items(prop, wipe_type_items); RNA_def_property_ui_text(prop, "Transition Type", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_glow(BlenderRNA *brna) @@ -909,36 +950,36 @@ static void rna_def_glow(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "fMini"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Threshold", "Minimum intensity to trigger a glow"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "clamp", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "fClamp"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Clamp", "rightness limit of intensity."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "boost_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "fBoost"); RNA_def_property_range(prop, 0.0f, 10.0f); RNA_def_property_ui_text(prop, "Boost Factor", "Brightness multiplier."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "blur_distance", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dDist"); RNA_def_property_range(prop, 0.5f, 20.0f); RNA_def_property_ui_text(prop, "Blur Distance", "Radius of glow effect."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "dQuality"); RNA_def_property_range(prop, 1, 5); RNA_def_property_ui_text(prop, "Quality", "Accuracy of the blur effect."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "only_boost", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "bNoComp", 0); RNA_def_property_ui_text(prop, "Only Boost", "Show the glow buffer only."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_transform(BlenderRNA *brna) @@ -967,72 +1008,72 @@ static void rna_def_transform(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "ScalexIni"); RNA_def_property_ui_text(prop, "Scale Start X", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScaleyIni"); RNA_def_property_ui_text(prop, "Scale Start Y", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_end_x", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScalexFin"); RNA_def_property_ui_text(prop, "Scale End X", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_end_y", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScaleyFin"); RNA_def_property_ui_text(prop, "Scale End Y", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xIni"); RNA_def_property_ui_text(prop, "Translate Start X", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yIni"); RNA_def_property_ui_text(prop, "Translate Start Y", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_end_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xFin"); RNA_def_property_ui_text(prop, "Translate End X", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_end_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yFin"); RNA_def_property_ui_text(prop, "Translate End Y", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotIni"); RNA_def_property_range(prop, 0.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation Start", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_end", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotFin"); RNA_def_property_range(prop, 0.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation End", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "percent"); RNA_def_property_enum_items(prop, translation_unit_items); RNA_def_property_ui_text(prop, "Translation Unit", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, interpolation_items); RNA_def_property_ui_text(prop, "Interpolation", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_solid_color(BlenderRNA *brna) @@ -1047,7 +1088,7 @@ static void rna_def_solid_color(BlenderRNA *brna) prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_ui_text(prop, "Color", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_speed_control(BlenderRNA *brna) @@ -1064,18 +1105,22 @@ static void rna_def_speed_control(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Global Speed", ""); RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "curve_velocity", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_INTEGRATE); RNA_def_property_ui_text(prop, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "frame_blending", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_BLEND); RNA_def_property_ui_text(prop, "Frame Blending", "Blend two frames into the target for a smoother result."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "curve_compress_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_COMPRESS_IPO_Y); RNA_def_property_ui_text(prop, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } void RNA_def_sequence(BlenderRNA *brna) -- cgit v1.2.3 From 0151be0210bf58a108d90f2c36b2ab3be2294d5a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 13:02:03 +0000 Subject: UI: fix trailing tooltips when deactivating window, and when opening right click menu. Added window deactivate event for this. --- .../blender/editors/interface/interface_handlers.c | 35 +++++++++++++++------- source/blender/makesrna/intern/rna_wm.c | 1 + .../blender/windowmanager/intern/wm_event_system.c | 10 ++++++- source/blender/windowmanager/intern/wm_window.c | 1 + source/blender/windowmanager/wm_event_types.h | 1 + 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index d2545e530e4..c7c0849927c 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3405,7 +3405,8 @@ static int ui_but_menu(bContext *C, uiBut *but) if((but->rnapoin.data && but->rnaprop)==0 && but->optype==NULL) return 0; - + + button_timers_tooltip_remove(C, but); if(but->rnaprop) name= (char*)RNA_property_ui_name(but->rnaprop); @@ -3604,7 +3605,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) char buf[512]; if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { - + button_timers_tooltip_remove(C, but); uiPupBlock(C, menu_change_hotkey, but); } @@ -3832,12 +3833,14 @@ static int ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y) return 1; } -static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y) +static uiBut *ui_but_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y) { uiBlock *block; uiBut *but, *butover= NULL; int mx, my; + if(!win->active) + return NULL; if(!ui_mouse_inside_region(ar, x, y)) return NULL; @@ -3859,12 +3862,14 @@ static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y) return butover; } -static uiBut *ui_list_find_mouse_over(ARegion *ar, int x, int y) +static uiBut *ui_list_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y) { uiBlock *block; uiBut *but; int mx, my; + if(!win->active) + return NULL; if(!ui_mouse_inside_region(ar, x, y)) return NULL; @@ -4171,10 +4176,11 @@ static uiBut *uit_but_find_open_event(ARegion *ar, wmEvent *event) static int ui_handle_button_over(bContext *C, wmEvent *event, ARegion *ar) { + wmWindow *win= CTX_wm_window(C); uiBut *but; if(event->type == MOUSEMOVE) { - but= ui_but_find_mouse_over(ar, event->x, event->y); + but= ui_but_find_mouse_over(win, ar, event->x, event->y); if(but) button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER); } @@ -4240,14 +4246,18 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) if(data->state == BUTTON_STATE_HIGHLIGHT) { switch(event->type) { - + case WINDEACTIVATE: + data->cancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + retval= WM_UI_HANDLER_CONTINUE; + break; case MOUSEMOVE: /* verify if we are still over the button, if not exit */ if(!ui_mouse_inside_button(ar, but, event->x, event->y)) { data->cancel= 1; button_activate_state(C, but, BUTTON_STATE_EXIT); } - else if(ui_but_find_mouse_over(ar, event->x, event->y) != but) { + else if(ui_but_find_mouse_over(data->window, ar, event->x, event->y) != but) { data->cancel= 1; button_activate_state(C, but, BUTTON_STATE_EXIT); } @@ -4295,8 +4305,12 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) } else if(data->state == BUTTON_STATE_WAIT_RELEASE) { switch(event->type) { + case WINDEACTIVATE: + data->cancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + break; + case MOUSEMOVE: - if(ELEM(but->type,LINK, INLINK)) { but->flag |= UI_SELECT; ui_do_button(C, block, but, event); @@ -4341,7 +4355,7 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) else if(data->state == BUTTON_STATE_MENU_OPEN) { switch(event->type) { case MOUSEMOVE: { - uiBut *bt= ui_but_find_mouse_over(ar, event->x, event->y); + uiBut *bt= ui_but_find_mouse_over(data->window, ar, event->x, event->y); if(bt && bt->active != data) { if(but->type != COL) /* exception */ @@ -4376,7 +4390,8 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) static int ui_handle_list_event(bContext *C, wmEvent *event, ARegion *ar) { - uiBut *but= ui_list_find_mouse_over(ar, event->x, event->y); + wmWindow *win= CTX_wm_window(C); + uiBut *but= ui_list_find_mouse_over(win, ar, event->x, event->y); int retval= WM_UI_HANDLER_CONTINUE; int value, min, max; diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 2e4c0690031..f58f14ec928 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -226,6 +226,7 @@ EnumPropertyItem event_type_items[] = { {PAGEDOWNKEY, "PAGE_DOWN", 0, "Page Down", ""}, {ENDKEY, "END", 0, "End", ""}, {0, "", 0, NULL, NULL}, + {WINDEACTIVATE, "WINDOW_DEACTIVATE", 0, "Window Deactivate", ""}, {TIMER, "TIMER", 0, "Timer", ""}, {TIMER0, "TIMER0", 0, "Timer 0", ""}, {TIMER1, "TIMER1", 0, "Timer 1", ""}, diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index bba38705e15..8e187eea93c 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -837,7 +837,7 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) static int wm_event_always_pass(wmEvent *event) { /* some events we always pass on, to ensure proper communication */ - return ELEM4(event->type, TIMER, TIMER0, TIMER1, TIMER2); + return ELEM5(event->type, TIMER, TIMER0, TIMER1, TIMER2, WINDEACTIVATE); } /* operator exists */ @@ -1812,5 +1812,13 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) case GHOST_kEventUnknown: case GHOST_kNumEventTypes: break; + + case GHOST_kEventWindowDeactivate: { + event.type= WINDEACTIVATE; + wm_event_add(win, &event); + + break; + } + } } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 542520ce1b0..31ad8cdcc63 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -574,6 +574,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) switch(type) { case GHOST_kEventWindowDeactivate: + wm_event_add_ghostevent(win, type, data); win->active= 0; /* XXX */ break; case GHOST_kEventWindowActivate: diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 8412e7f0b16..043ad8b1dcc 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -69,6 +69,7 @@ /* SYSTEM : 0x01x */ #define INPUTCHANGE 0x0103 /* input connected or disconnected */ +#define WINDEACTIVATE 0x0104 /* window is deactivated, focus lost */ #define TIMER 0x0110 /* timer event, passed on to all queues */ #define TIMER0 0x0111 /* timer event, slot for internal use */ -- cgit v1.2.3 From f2452c1fd6fe2009e2ecd794b13b1de1fade277b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 13:57:51 +0000 Subject: Sequencer: * Sound strips now respect metastrips for muting. That means they are muted if the metastrip is muted, and don't play when located outside of the current metastrip. * Operators now use notifiers instead of redraw tagging, added a separate notifier for selection as well, but that is not used to do less redraws yet. --- source/blender/blenkernel/BKE_sequence.h | 1 + source/blender/blenkernel/intern/sequence.c | 47 +++++++++++-- source/blender/blenloader/intern/readfile.c | 3 + .../editors/space_sequencer/sequencer_add.c | 10 +-- .../editors/space_sequencer/sequencer_edit.c | 81 +++++++++++----------- .../editors/space_sequencer/sequencer_select.c | 31 +++++---- .../editors/space_sequencer/space_sequencer.c | 2 + source/blender/makesrna/intern/rna_sequence.c | 28 +++++--- source/blender/windowmanager/WM_types.h | 1 + 9 files changed, 133 insertions(+), 71 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h index 2f7526d524c..acc0d8576a1 100644 --- a/source/blender/blenkernel/BKE_sequence.h +++ b/source/blender/blenkernel/BKE_sequence.h @@ -186,6 +186,7 @@ int shuffle_seq_time(ListBase * seqbasep); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); void seq_update_sound(struct Sequence *seq); +void seq_update_muting(struct Editing *ed); void clear_scene_in_allseqs(struct Scene *sce); diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index 39b911d1c37..f11aca32da7 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -3477,16 +3477,55 @@ int shuffle_seq_time(ListBase * seqbasep) return offset? 0:1; } - -void seq_update_sound(struct Sequence *seq) +void seq_update_sound(Sequence *seq) { - if(seq->type == SEQ_SOUND) + if(seq->type == SEQ_SOUND && seq->sound_handle) { seq->sound_handle->startframe = seq->startdisp; seq->sound_handle->endframe = seq->enddisp; seq->sound_handle->frameskip = seq->startofs + seq->anim_startofs; - seq->sound_handle->mute = seq->flag & SEQ_MUTE ? 1 : 0; seq->sound_handle->changed = -1; + /* mute is set in seq_update_muting_recursive */ + } +} + +static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, int mute) +{ + Sequence *seq; + int seqmute; + + /* for sound we go over full meta tree to update muted state, + since sound is played outside of evaluating the imbufs, */ + for(seq=seqbasep->first; seq; seq=seq->next) { + seqmute= (mute || (seq->flag & SEQ_MUTE)); + + if(seq->type == SEQ_META) { + /* if this is the current meta sequence, unmute because + all sequences above this were set to mute */ + if(seq == metaseq) + seqmute= 0; + + seq_update_muting_recursive(&seq->seqbase, metaseq, seqmute); + } + else if(seq->type == SEQ_SOUND) { + if(seq->sound_handle && seqmute != seq->sound_handle->mute) { + seq->sound_handle->mute = seqmute; + seq->sound_handle->changed = -1; + } + } + } +} + +void seq_update_muting(Editing *ed) +{ + if(ed) { + /* mute all sounds up to current metastack list */ + MetaStack *ms= ed->metastack.last; + + if(ms) + seq_update_muting_recursive(&ed->seqbase, ms->parseq, 1); + else + seq_update_muting_recursive(&ed->seqbase, NULL, 0); } } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 83627ac50c3..2ad628da428 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4234,6 +4234,9 @@ static void lib_link_scene(FileData *fd, Main *main) seq->anim= 0; } SEQ_END + + if(sce->ed) + seq_update_muting(sce->ed); if(sce->nodetree) { lib_link_ntree(fd, &sce->id, sce->nodetree); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index ba3735834bc..ac341e40de9 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -218,7 +218,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) seq->flag |= SELECT; } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -297,8 +297,9 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad } sort_seq(scene); + seq_update_muting(ed); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -425,7 +426,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) /* last active name */ strncpy(ed->act_imagedir, strip->dir, FILE_MAXDIR-1); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -557,7 +558,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) seq->flag |= SELECT; } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 5dd453b9e30..96d4ed06ead 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1399,7 +1399,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op) /* as last: */ sort_seq(scene); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1451,21 +1451,18 @@ static int sequencer_mute_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq= seq->next) { if ((seq->flag & SEQ_LOCK)==0) { if(selected){ /* mute unselected */ - if (seq->flag & SELECT) { + if(seq->flag & SELECT) seq->flag |= SEQ_MUTE; - seq_update_sound(seq); - } } else { - if ((seq->flag & SELECT)==0) { + if((seq->flag & SELECT)==0) seq->flag |= SEQ_MUTE; - seq_update_sound(seq); - } } } } - ED_area_tag_redraw(CTX_wm_area(C)); + seq_update_muting(ed); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1505,21 +1502,18 @@ static int sequencer_unmute_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq= seq->next) { if ((seq->flag & SEQ_LOCK)==0) { if(selected){ /* unmute unselected */ - if (seq->flag & SELECT) { + if(seq->flag & SELECT) seq->flag &= ~SEQ_MUTE; - seq_update_sound(seq); - } } else { - if ((seq->flag & SELECT)==0) { + if((seq->flag & SELECT)==0) seq->flag &= ~SEQ_MUTE; - seq_update_sound(seq); - } } } } - ED_area_tag_redraw(CTX_wm_area(C)); + seq_update_muting(ed); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1559,7 +1553,7 @@ static int sequencer_lock_exec(bContext *C, wmOperator *op) } } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1596,7 +1590,7 @@ static int sequencer_unlock_exec(bContext *C, wmOperator *op) } } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1633,7 +1627,7 @@ static int sequencer_reload_exec(bContext *C, wmOperator *op) } } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1665,7 +1659,7 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op) free_imbuf_seq(scene, &ed->seqbase, FALSE); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1741,9 +1735,7 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) sort_seq(scene); } - if (changed) { - ED_area_tag_redraw(CTX_wm_area(C)); - } + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1803,7 +1795,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) recurs_dupli_seq(scene, ed->seqbasep, &new); addlisttolist(ed->seqbasep, &new); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1894,8 +1886,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op) ms= ms->prev; } - //ED_area_tag_redraw(CTX_wm_area(C)); - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, NULL); /* redraw other sequencer views */ + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -1986,7 +1977,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) /* as last: */ sort_seq(scene); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } @@ -2063,7 +2054,9 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) } - ED_area_tag_redraw(CTX_wm_area(C)); + seq_update_muting(ed); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + return OPERATOR_FINISHED; } @@ -2164,7 +2157,9 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm); - ED_area_tag_redraw(CTX_wm_area(C)); + seq_update_muting(ed); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + return OPERATOR_FINISHED; } @@ -2233,8 +2228,10 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op) SEQ_END; sort_seq(scene); + seq_update_muting(ed); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); - ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; } @@ -2459,16 +2456,16 @@ static int next_prev_edit_internal(Scene *scene, int side) return change; } -/* select less operator */ +/* move frame to next edit point operator */ static int sequencer_next_edit_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - if (next_prev_edit_internal(scene, SEQ_SIDE_RIGHT)) { - ED_area_tag_redraw(CTX_wm_area(C)); - WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); - } - + if(!next_prev_edit_internal(scene, SEQ_SIDE_RIGHT)) + return OPERATOR_CANCELLED; + + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + return OPERATOR_FINISHED; } @@ -2494,9 +2491,10 @@ static int sequencer_previous_edit_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - if (next_prev_edit_internal(scene, SEQ_SIDE_LEFT)) { - ED_area_tag_redraw(CTX_wm_area(C)); - } + if(!next_prev_edit_internal(scene, SEQ_SIDE_LEFT)) + return OPERATOR_CANCELLED; + + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); return OPERATOR_FINISHED; } @@ -2578,10 +2576,13 @@ static int sequencer_swap_internal_exec(bContext *C, int side) swap_sequence(active_seq, seq); break; } - ED_area_tag_redraw(CTX_wm_area(C)); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; } - return OPERATOR_FINISHED; + return OPERATOR_CANCELLED; } static int sequencer_swap_right_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index b197077c68d..7afe320322c 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -256,7 +256,8 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) seq->flag |= SELECT; } } - ED_area_tag_redraw(CTX_wm_area(C)); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -297,7 +298,8 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op) seq->flag |= SELECT; } } - ED_area_tag_redraw(CTX_wm_area(C)); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -508,7 +510,8 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) } #endif - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + /* allowing tweaks */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; } @@ -594,9 +597,10 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - if (select_more_less_seq__internal(scene, 0, 0)) { - ED_area_tag_redraw(CTX_wm_area(C)); - } + if(!select_more_less_seq__internal(scene, 0, 0)) + return OPERATOR_CANCELLED; + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -624,9 +628,10 @@ static int sequencer_select_less_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - if (select_more_less_seq__internal(scene, 1, 0)) { - ED_area_tag_redraw(CTX_wm_area(C)); - } + if(!select_more_less_seq__internal(scene, 1, 0)) + return OPERATOR_CANCELLED; + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -681,7 +686,7 @@ static int sequencer_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEv selected = select_more_less_seq__internal(scene, 1, 1); } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -716,7 +721,7 @@ static int sequencer_select_linked_exec(bContext *C, wmOperator *op) selected = select_more_less_seq__internal(scene, 1, 1); } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -768,7 +773,7 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op) } } - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); return OPERATOR_FINISHED; } @@ -805,7 +810,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); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, 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 b8adaf23f73..00df314df6c 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -232,6 +232,7 @@ static void sequencer_main_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; } @@ -266,6 +267,7 @@ 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; } diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 4f9d2a3d6ca..03fa0a410fe 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -25,6 +25,7 @@ #include #include +#include "RNA_access.h" #include "RNA_define.h" #include "RNA_types.h" @@ -269,11 +270,18 @@ static void rna_Sequence_update(bContext *C, PointerRNA *ptr) Editing *ed= seq_give_editing(scene, FALSE); free_imbuf_seq(scene, &ed->seqbase, FALSE); + + if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) + seq_update_sound(ptr->data); } -static void rna_Sequence_sound_update(bContext *C, PointerRNA *ptr) +static void rna_Sequence_mute_update(bContext *C, PointerRNA *ptr) { - /* TODO */ + Scene *scene= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + + seq_update_muting(ed); + rna_Sequence_update(C, ptr); } #else @@ -480,22 +488,22 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); RNA_def_property_ui_text(prop, "Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); RNA_def_property_ui_text(prop, "Left Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); RNA_def_property_ui_text(prop, "Right Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); RNA_def_property_ui_text(prop, "Mute", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_mute_update"); prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); @@ -834,18 +842,18 @@ static void rna_def_sound(BlenderRNA *brna) prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Sound"); RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); RNA_def_property_ui_text(prop, "Filename", ""); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoundSequence_filename_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "strip->dir"); RNA_def_property_ui_text(prop, "Directory", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); rna_def_input(srna); @@ -855,7 +863,7 @@ static void rna_def_sound(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "volume"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_sound_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } static void rna_def_effect(BlenderRNA *brna) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 53cca69fffc..a884d7b6831 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -168,6 +168,7 @@ typedef struct wmNotifier { #define ND_KEYINGSET (12<<16) #define ND_SCENEDELETE (13<<16) #define ND_LAYER (14<<16) +#define ND_SEQUENCER_SELECT (15<<16) /* NC_OBJECT Object */ #define ND_TRANSFORM (16<<16) -- cgit v1.2.3 From fb7fed670646050a78fa13d604b28b18f3ab17fe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 14:02:06 +0000 Subject: minor fixes --- release/scripts/modules/rigify/__init__.py | 29 ++++++++++++++++++++++++----- release/scripts/modules/rigify/leg.py | 4 ++-- release/scripts/modules/rigify/spine.py | 2 +- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index f33ba9edc56..a7863d0caf5 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -276,7 +276,8 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta if not (new_pbone.bone.connected or (False not in new_pbone.lock_location)): blend_location(new_pbone, from_bone_name, to_bone_name) - blend_rotation(new_pbone, from_bone_name, to_bone_name) + if not (False not in new_pbone.lock_rotation): # TODO. 4D chech? + blend_rotation(new_pbone, from_bone_name, to_bone_name) def add_stretch_to(obj, from_name, to_name, name): @@ -364,7 +365,7 @@ def add_pole_target_bone(obj, base_name, name, mode='CROSS'): return poll_name -def generate_rig(context, obj_orig, prefix="ORG-"): +def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): from collections import OrderedDict global_undo = context.user_preferences.edit.global_undo @@ -372,15 +373,20 @@ def generate_rig(context, obj_orig, prefix="ORG-"): bpy.ops.object.mode_set(mode='OBJECT') + scene = context.scene # copy object and data obj_orig.selected = False obj = obj_orig.copy() obj.data = obj_orig.data.copy() - scene = context.scene scene.objects.link(obj) scene.objects.active = obj obj.selected = True + + if META_DEF: + obj_def = obj_orig.copy() + obj_def.data = obj_orig.data.copy() + scene.objects.link(obj_def) arm = obj.data @@ -481,8 +487,21 @@ def generate_rig(context, obj_orig, prefix="ORG-"): if len(result_submod) == 2: blend_bone_list(obj, definition, result_submod[0], result_submod[1]) - # needed to update driver deps - # context.scene.update() + + if META_DEF: + # for pbone in obj_def.pose.bones: + for bone_name, bone_name_new in base_names.items(): + #pbone_from = bone_name + pbone = obj_def.pose.bones[bone_name_new] + + con = pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = bone_name + + if not pbone.bone.connected: + con = pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = bone_name # Only for demo'ing diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index bdeef5db29a..499c0b4b6fa 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -225,7 +225,7 @@ def ik(obj, bone_definition, base_names): con.weight = 1.0 con.target = obj - con.subtarget = ik.foot + con.subtarget = ik_chain.foot con.pole_target = obj con.pole_subtarget = ik.knee_target @@ -279,7 +279,7 @@ def fk(obj, bone_definition, base_names): ex.thigh_socket = ex.thigh_socket_e.name ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) - ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=True) + ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % base_names[mt_chain.thigh]) ex.thigh_hinge = ex.thigh_hinge_e.name ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) ex.thigh_hinge_e.translate(Vector( - (mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index d714214adfb..e905a691a7d 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -360,7 +360,7 @@ def main(obj, bone_definition, base_names): prop["soft_max"] = 1.0 prop = rna_idprop_ui_prop_get(mt.ribcage_p, "pivot_slide", create=True) - mt.ribcage_p["pivot_slide"] = 0.5 + mt.ribcage_p["pivot_slide"] = 1.0 / spine_chain_len prop["soft_min"] = 1.0 / spine_chain_len prop["soft_max"] = 1.0 -- cgit v1.2.3 From 45509f129d8c32d0432ad905aeb1ea7490784c5a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 15:20:57 +0000 Subject: unwrap was unwrapping all faces rather then just the selected ones --- source/blender/editors/uvedit/uvedit_unwrap_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index e5881415100..8a3e3039352 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -826,7 +826,7 @@ static int unwrap_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - handle= construct_param_handle(scene, em, 0, fill_holes, 0, correct_aspect); + handle= construct_param_handle(scene, em, 0, fill_holes, 1, correct_aspect); param_lscm_begin(handle, PARAM_FALSE, method == 0); param_lscm_solve(handle); -- cgit v1.2.3 From 7235e681b96097fc859335d750365d1013dcc0f3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 16:39:00 +0000 Subject: slow print, only debug mode --- source/blender/editors/animation/keyframes_draw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index 15ca0fab35f..4fd9295792b 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -231,7 +231,8 @@ static void nupdate_abk_bezt (void *node, void *data) // TODO: need to allocate new array to cater... // FIXME: urgent... is a problem when working with duplicate keyframes //bezts_extra= MEM_callocN(...); - printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n"); + if(G.f & G_DEBUG) + printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n"); } else { /* just store an extra one */ -- cgit v1.2.3 From ee74e720a82b7a1fb5f732cd8ceacbb26fa7e0d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 17:00:53 +0000 Subject: - modify for Cessens updated spine - Neck example didnt account for some possible problems when linking to the body - foot IK were referencing the wrong bones - updated some example rigs - graph constraint arrow direction was incorrect --- release/scripts/modules/graphviz_export.py | 4 +- release/scripts/modules/rigify/arm.py | 4 +- release/scripts/modules/rigify/neck.py | 33 +++++++------ release/scripts/modules/rigify/spine.py | 75 ++++++++++++++++-------------- 4 files changed, 64 insertions(+), 52 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 8f9f2c01ad5..92eb427f8d2 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -51,7 +51,7 @@ def compat_str(text, line_length=0): return "* " + text -def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=False): +def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=True): CONSTRAINTS = DRIVERS = True fileobject = open(path, "w") @@ -131,7 +131,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, if XTRA_INFO: label = "%s\n%s" % (constraint.type, constraint.name) opts.append('label="%s"' % compat_str(label)) - fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts))) + fw('"%s" -> "%s" [%s] ;\n' % (pbone.name, subtarget, ','.join(opts))) # Drivers if DRIVERS: diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 2145109cd55..7408e349dca 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -77,8 +77,8 @@ def metarig_definition(obj, orig_bone_name): if index == 2: hands.append(pbone) - if len(hands) > 1: - raise Exception("more then 1 hand found on:", orig_bone_name) + if len(hands) != 1: + raise Exception("Expected more then 1 hand found on:", orig_bone_name) # first add the 2 new bones mt.hand_p = hands[0] diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 9c7e53fa52d..887b0b091fc 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -27,19 +27,20 @@ METARIG_NAMES = ("body", "head") def metarig_template(): + # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object arm = obj.data bone = arm.edit_bones.new('body') bone.head[:] = -0.0000, -0.2771, -1.3345 - bone.tail[:] = -0.0000, -0.1708, -0.3984 + bone.tail[:] = -0.0000, -0.1708, -0.1984 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('head') bone.head[:] = -0.0000, -0.1708, -0.1984 - bone.tail[:] = 0.0000, -0.1708, 1.6016 - bone.roll = -0.0000 - bone.connected = False + bone.tail[:] = 0.0000, 0.7292, 1.3604 + bone.roll = 0.0000 + bone.connected = True bone.parent = arm.edit_bones['body'] bone = arm.edit_bones.new('neck.01') bone.head[:] = 0.0000, -0.1708, -0.1984 @@ -116,7 +117,7 @@ def main(obj, bone_definition, base_names): setattr(mt_chain, attr, neck_chain[i]) mt_chain.update() - neck_chain_basename = mt_chain.neck_01_e.basename + neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] neck_chain_segment_length = mt_chain.neck_01_e.length ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras @@ -125,7 +126,8 @@ def main(obj, bone_definition, base_names): # Copy the head bone and offset - ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % mt.head, parent=True) + ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % base_names[mt.head], parent=True) + ex.head_e.connected = False ex.head = ex.head_e.name # offset head_length = ex.head_e.length @@ -133,17 +135,20 @@ def main(obj, bone_definition, base_names): ex.head_e.tail.y += head_length / 2.0 # Yes, use the body bone but call it a head hinge - ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % mt.head, parent=True) + ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=True) + ex.head_hinge_e.connected = False ex.head_hinge = ex.head_hinge_e.name ex.head_hinge_e.head.y += head_length / 4.0 ex.head_hinge_e.tail.y += head_length / 4.0 # reparent the head, assume its not connected + mt.head_e.connected = False mt.head_e.parent = ex.head_hinge_e # Insert the neck socket, the head copys this loation ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) ex.neck_socket = ex.neck_socket_e.name + ex.neck_socket_e.connected = False ex.neck_socket_e.parent = mt.body_e ex.neck_socket_e.head = mt.head_e.head ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) @@ -157,11 +162,11 @@ def main(obj, bone_definition, base_names): neck_e = getattr(mt_chain, attr + "_e") # dont store parent names, re-reference as each chain bones parent. - neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name) + neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[neck_e.name]) neck_e_parent.head = neck_e.head neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) neck_e_parent.roll = mt.head_e.roll - + orig_parent = neck_e.parent neck_e.connected = False @@ -221,7 +226,7 @@ def main(obj, bone_definition, base_names): head_driver_path = mt.head_p.path_to_id() target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - + mt.head_p["bend_tot"] = 0.0 fcurve = mt.head_p.driver_add('["bend_tot"]', 0) driver = fcurve.driver @@ -234,7 +239,7 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) - + for i, attr in enumerate(mt_chain.attr_names): neck_p = getattr(mt_chain, attr + "_p") @@ -264,9 +269,9 @@ def main(obj, bone_definition, base_names): driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" - + fcurve.modifiers.remove(0) # grr dont need a modifier - + # add target tar = driver.targets.new() @@ -274,7 +279,7 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = head_driver_path + ('["bend_tot"]') - + tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index e905a691a7d..6ebf167cb5c 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -27,6 +27,7 @@ METARIG_NAMES = ("pelvis", "ribcage") def metarig_template(): + # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object arm = obj.data @@ -86,7 +87,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['rib_cage'] - pbone['type'] = 'spine' + pbone['type'] = 'spine.fk' def metarig_definition(obj, orig_bone_name): @@ -139,47 +140,55 @@ def main(obj, bone_definition, base_names): child = spine_chain[0] spine_chain_segment_length = child.length - child.parent = mt.pelvis_e # was mt.ribcage + #child.parent = mt.pelvis_e # was mt.ribcage # The first bone in the chain happens to be the basis of others, create them now - ex = bone_class_instance(obj, ["pelvis", "ribcage", "ribcage_hinge", "spine_rotate"]) + ex = bone_class_instance(obj, ["pelvis", "pelvis_copy", "ribcage", "ribcage_hinge", "ribcage_copy", "spine_rotate"]) df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage + ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent + ex.pelvis_copy = ex.pelvis_copy_e.name # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge - ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % mt.ribcage) + ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage]) ex.ribcage_hinge = ex.ribcage_hinge_e.name ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) - mt.ribcage_e.parent = ex.ribcage_hinge_e ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) ex.spine_rotate = ex.spine_rotate_e.name ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) # swap head/tail ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() - ex.spine_rotate_e.parent = mt.pelvis_e + ex.spine_rotate_e.connected = False + ex.spine_rotate_e.parent = ex.pelvis_copy_e - df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.pelvis) + df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.pelvis]) df.pelvis = df.pelvis_e.name df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, - spine_chain_segment_length, 0.0)) - ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.pelvis) + ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.pelvis]) ex.pelvis = ex.pelvis_e.name ex.pelvis_e.translate(Vector(0.0, - spine_chain_segment_length, 0.0)) - ex.pelvis_e.parent = mt.pelvis_e + ex.pelvis_e.connected = False + ex.pelvis_e.parent = ex.pelvis_copy_e # Copy the last bone now child = spine_chain[-1] - df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.ribcage) + df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage]) df.ribcage = df.ribcage_e.name df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) - ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.ribcage) + ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.ribcage]) ex.ribcage = ex.ribcage_e.name ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0)) ex.ribcage_e.parent = mt.ribcage_e + ex.ribcage_copy_e = copy_bone_simple(arm, child.name, base_names[mt.ribcage]) + ex.ribcage_copy = ex.ribcage_copy_e.name + ex.ribcage_copy_e.connected = False + ex.ribcage_copy_e.parent = ex.ribcage_hinge_e + spine_chain = [child.name for child in spine_chain] # We have 3 spine chains @@ -214,21 +223,22 @@ def main(obj, bone_definition, base_names): # Now we need to re-parent these chains for i, child_name in enumerate(spine_chain_orig): attr = ex_chain.attr_names[i] + "_e" - + ebone = getattr(ex_chain, attr) if i == 0: - getattr(ex_chain, attr).parent = mt.pelvis_e + ebone.connected = False + ebone.parent = ex.pelvis_copy_e else: - attr_parent = ex_chain.attr_names[i-1] + "_e" - getattr(ex_chain, attr).parent = getattr(ex_chain, attr_parent) + attr_parent = ex_chain.attr_names[i - 1] + "_e" + ebone.parent = getattr(ex_chain, attr_parent) # intentional! get the parent from the other paralelle chain member - getattr(rv_chain, attr).parent = getattr(ex_chain, attr) + getattr(rv_chain, attr).parent = ebone # ex_chain needs to interlace bones! # Note, skip the first bone for i in range(1, spine_chain_len): # similar to neck - child_name_orig = spine_chain_orig[i] + child_name_orig = base_names[spine_chain_orig[i]] spine_e = getattr(mt_chain, mt_chain.attr_names[i] + "_e") # dont store parent names, re-reference as each chain bones parent. @@ -299,11 +309,9 @@ def main(obj, bone_definition, base_names): con = ex.ribcage_hinge_p.constraints.new('COPY_ROTATION') con.name = "hinge" con.target = obj - con.subtarget = mt.pelvis + con.subtarget = ex.pelvis_copy # add driver - hinge_driver_path = mt.ribcage_p.path_to_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) driver = fcurve.driver tar = driver.targets.new() @@ -311,7 +319,7 @@ def main(obj, bone_definition, base_names): tar.name = "var" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = hinge_driver_path + tar.rna_path = ex.ribcage_copy_p.path_to_id() + '["hinge"]' mod = fcurve.modifiers[0] mod.poly_order = 1 @@ -347,20 +355,20 @@ def main(obj, bone_definition, base_names): con.target = obj con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) - # mt.pelvis_p / rib_cage - con = mt.ribcage_p.constraints.new('COPY_LOCATION') + # ex.pelvis_copy_p / rib_cage + con = ex.ribcage_copy_p.constraints.new('COPY_LOCATION') con.target = obj - con.subtarget = mt.pelvis + con.subtarget = ex.pelvis_copy con.head_tail = 0.0 # This stores all important ID props - prop = rna_idprop_ui_prop_get(mt.ribcage_p, "hinge", create=True) - mt.ribcage_p["hinge"] = 1.0 + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "hinge", create=True) + ex.ribcage_copy_p["hinge"] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - prop = rna_idprop_ui_prop_get(mt.ribcage_p, "pivot_slide", create=True) - mt.ribcage_p["pivot_slide"] = 1.0 / spine_chain_len + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "pivot_slide", create=True) + ex.ribcage_copy_p["pivot_slide"] = 1.0 / spine_chain_len prop["soft_min"] = 1.0 / spine_chain_len prop["soft_max"] = 1.0 @@ -382,10 +390,10 @@ def main(obj, bone_definition, base_names): # Constrain 'inbetween' bones target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] - rib_driver_path = mt.ribcage_p.path_to_id() + rib_driver_path = ex.ribcage_copy_p.path_to_id() - mt.ribcage_p["bend_tot"] = 0.0 - fcurve = mt.ribcage_p.driver_add('["bend_tot"]', 0) + ex.ribcage_copy_p["bend_tot"] = 0.0 + fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]', 0) driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -396,14 +404,13 @@ def main(obj, bone_definition, base_names): tar.id_type = 'OBJECT' tar.id = obj tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) - print(rib_driver_path) for i in range(1, spine_chain_len): # Add bend prop prop_name = "bend_%.2d" % i - prop = rna_idprop_ui_prop_get(mt.ribcage_p, prop_name, create=True) - mt.ribcage_p[prop_name] = 1.0 + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, prop_name, create=True) + ex.ribcage_copy_p[prop_name] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 -- cgit v1.2.3 From 07904712e8943b5845df9559093018c8473f72f3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 17:23:48 +0000 Subject: RNA: * Property update functions no longer get context, instead they get only Main and Scene. The RNA api was intended to be as context-less as possible, since it doesn't really matter who is changing the property, everything that uses the property should be updated. * There's still one exception case that use it now, screen operations still depend on context too much. It also revealed a few places using context where they shouldn't. * Ideally Scene shouldn't be passed, but much of Blender still depends on it, should be dropped when we try to support multiple scene editing. Change was planned for a while, but need this now to be able to call update without a context pointer. --- source/blender/editors/include/ED_screen.h | 2 +- source/blender/editors/screen/screen_edit.c | 4 +- source/blender/editors/screen/screen_ops.c | 2 +- source/blender/makesrna/RNA_access.h | 2 + source/blender/makesrna/RNA_types.h | 3 ++ source/blender/makesrna/intern/makesrna.c | 4 +- source/blender/makesrna/intern/rna_access.c | 30 ++++++++++-- source/blender/makesrna/intern/rna_armature.c | 14 +++--- source/blender/makesrna/intern/rna_boid.c | 10 ++-- source/blender/makesrna/intern/rna_brush.c | 4 +- source/blender/makesrna/intern/rna_camera.c | 4 +- source/blender/makesrna/intern/rna_cloth.c | 8 ++-- source/blender/makesrna/intern/rna_constraint.c | 10 ++-- source/blender/makesrna/intern/rna_curve.c | 30 ++++++------ source/blender/makesrna/intern/rna_fcurve.c | 16 +++---- source/blender/makesrna/intern/rna_fluidsim.c | 9 ++-- source/blender/makesrna/intern/rna_group.c | 4 +- source/blender/makesrna/intern/rna_image.c | 13 +++-- source/blender/makesrna/intern/rna_internal.h | 8 ++-- .../blender/makesrna/intern/rna_internal_types.h | 5 +- source/blender/makesrna/intern/rna_key.c | 5 +- source/blender/makesrna/intern/rna_lamp.c | 12 ++--- source/blender/makesrna/intern/rna_lattice.c | 9 ++-- source/blender/makesrna/intern/rna_main_api.c | 28 +++++------ source/blender/makesrna/intern/rna_material.c | 8 ++-- source/blender/makesrna/intern/rna_mesh.c | 12 ++--- source/blender/makesrna/intern/rna_meta.c | 8 +--- source/blender/makesrna/intern/rna_modifier.c | 14 +++--- source/blender/makesrna/intern/rna_nodetree.c | 27 +++++------ source/blender/makesrna/intern/rna_object.c | 43 ++++++++--------- source/blender/makesrna/intern/rna_object_force.c | 55 ++++++++++------------ source/blender/makesrna/intern/rna_particle.c | 51 ++++++++++---------- source/blender/makesrna/intern/rna_pose.c | 17 ++++--- source/blender/makesrna/intern/rna_scene.c | 9 ++-- source/blender/makesrna/intern/rna_scene_api.c | 2 +- source/blender/makesrna/intern/rna_screen.c | 12 ++--- source/blender/makesrna/intern/rna_sculpt_paint.c | 12 +++-- source/blender/makesrna/intern/rna_sequence.c | 8 ++-- source/blender/makesrna/intern/rna_smoke.c | 16 +++---- source/blender/makesrna/intern/rna_sound.c | 4 +- source/blender/makesrna/intern/rna_space.c | 25 +++++----- source/blender/makesrna/intern/rna_texture.c | 18 +++---- source/blender/makesrna/intern/rna_ui.c | 12 ++--- source/blender/makesrna/intern/rna_userdef.c | 28 ++++++----- source/blender/makesrna/intern/rna_wm.c | 4 +- source/blender/makesrna/intern/rna_world.c | 8 ++-- source/blender/windowmanager/WM_api.h | 2 +- source/blender/windowmanager/intern/wm.c | 2 +- source/blender/windowmanager/intern/wm_files.c | 3 +- 49 files changed, 318 insertions(+), 318 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 46973e29d2a..89f032efc21 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -98,7 +98,7 @@ 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 bContext *C, int redraws); +void ED_screen_animation_timer_update(struct bScreen *screen, int redraws); 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); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6504ea4c2d5..024e00fa617 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1632,10 +1632,8 @@ static ARegion *time_top_left_3dwindow(bScreen *screen) return aret; } -void ED_screen_animation_timer_update(bContext *C, int redraws) +void ED_screen_animation_timer_update(bScreen *screen, int redraws) { - bScreen *screen= CTX_wm_screen(C); - if(screen && screen->animtimer) { wmTimer *wt= screen->animtimer; ScreenAnimData *sad= wt->customdata; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index b108e1bbd41..87716190994 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2418,7 +2418,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event) ED_screen_animation_timer(C, stime->redraws, sync, mode); /* update region if TIME_REGION was set, to leftmost 3d window */ - ED_screen_animation_timer_update(C, stime->redraws); + ED_screen_animation_timer_update(screen, stime->redraws); } else { int redraws = TIME_REGION|TIME_ALL_3D_WIN; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 263183cadd8..edbe55ba11d 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -38,6 +38,7 @@ struct bContext; struct ID; struct Main; struct ReportList; +struct Scene; /* Types */ @@ -649,6 +650,7 @@ int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop); int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_update_main(struct Main *bmain, struct Scene *scene, PointerRNA *ptr, PropertyRNA *prop); /* Property Data */ diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 8743bb39d57..18fb2700bbf 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -166,6 +166,9 @@ typedef enum PropertyFlag { /* flag contains multiple enums */ PROP_ENUM_FLAG = 1<<21, + /* need context for update function */ + PROP_CONTEXT_UPDATE = 1<<22, + /* internal flags */ PROP_BUILTIN = 1<<7, PROP_EXPORT = 1<<8, diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 037b866edba..96953cefa2e 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1763,7 +1763,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr rna_print_c_string(f, prop->description); fprintf(f, ",\n\t"); fprintf(f, "%d,\n", prop->icon); fprintf(f, "\t%s, %s|%s, %s, %d, {%d, %d, %d}, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), rna_property_subtype_unit(prop->subtype), rna_function_string(prop->getlength), prop->arraydimension, prop->arraylength[0], prop->arraylength[1], prop->arraylength[2], prop->totarraylength); - fprintf(f, "\t%s, %d, %s, %s,\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable)); + fprintf(f, "\t%s%s, %d, %s, %s,\n", (prop->flag & PROP_CONTEXT_UPDATE)? "(UpdateFunc)": "", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable), rna_function_string(prop->itemeditable)); if(prop->flag & PROP_RAW_ACCESS) rna_set_raw_offset(f, srna, prop); else fprintf(f, "\t0, 0"); @@ -2050,11 +2050,13 @@ static void rna_generate(BlenderRNA *brna, FILE *f, char *filename, char *api_fi fprintf(f, "#include \n\n"); fprintf(f, "#include \"DNA_ID.h\"\n"); + fprintf(f, "#include \"DNA_scene_types.h\"\n"); fprintf(f, "#include \"BLI_blenlib.h\"\n\n"); fprintf(f, "#include \"BKE_context.h\"\n"); fprintf(f, "#include \"BKE_library.h\"\n"); + fprintf(f, "#include \"BKE_main.h\"\n"); fprintf(f, "#include \"BKE_report.h\"\n"); fprintf(f, "#include \"BKE_utildefines.h\"\n\n"); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 360f43428d1..174cb13b0cd 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -29,6 +29,7 @@ #include "MEM_guardedalloc.h" #include "DNA_ID.h" +#include "DNA_scene_types.h" #include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" @@ -37,6 +38,7 @@ #include "BKE_context.h" #include "BKE_idprop.h" +#include "BKE_main.h" #include "BKE_report.h" #include "BKE_utildefines.h" @@ -1103,23 +1105,41 @@ int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop) return 0; } -void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop) +static void rna_property_update(bContext *C, Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop) { int is_rna = (prop->magic == RNA_MAGIC); prop= rna_ensure_property(prop); if(is_rna) { - if(prop->update) - prop->update(C, ptr); + if(prop->update) { + /* ideally no context would be needed for update, but there's some + parts of the code that need it still, so we have this exception */ + if(prop->flag & PROP_CONTEXT_UPDATE) { + if(C) ((ContextUpdateFunc)prop->update)(C, ptr); + } + else + prop->update(bmain, scene, ptr); + } if(prop->noteflag) - WM_event_add_notifier(C, prop->noteflag, ptr->id.data); + WM_main_add_notifier(prop->noteflag, ptr->id.data); } else { /* WARNING! This is so property drivers update the display! * not especially nice */ DAG_id_flush_update(ptr->id.data, OB_RECALC_OB); - WM_event_add_notifier(C, NC_WINDOW, NULL); + WM_main_add_notifier(NC_WINDOW, NULL); } + +} + +void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop) +{ + rna_property_update(C, CTX_data_main(C), CTX_data_scene(C), ptr, prop); +} + +void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop) +{ + rna_property_update(NULL, bmain, scene, ptr, prop); } /* Property Data */ diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 371f14be753..90bf404083c 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -47,13 +47,13 @@ #include "ED_armature.h" -static void rna_Armature_update_data(bContext *C, PointerRNA *ptr) +static void rna_Armature_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; DAG_id_flush_update(id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); - //WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); + //WM_main_add_notifier(NC_OBJECT|ND_POSE, NULL); } @@ -103,11 +103,11 @@ void rna_Armature_edit_bone_remove(bArmature *arm, EditBone *ebone) ED_armature_edit_bone_remove(arm, ebone); } -static void rna_Armature_redraw_data(bContext *C, PointerRNA *ptr) +static void rna_Armature_redraw_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); } static char *rna_Bone_path(PointerRNA *ptr) @@ -304,7 +304,7 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value) } } -static void rna_Armature_editbone_transform_update(bContext *C, PointerRNA *ptr) +static void rna_Armature_editbone_transform_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bArmature *arm= (bArmature*)ptr->id.data; EditBone *ebone= (EditBone*)ptr->data; @@ -339,7 +339,7 @@ static void rna_Armature_editbone_transform_update(bContext *C, PointerRNA *ptr) } } - rna_Armature_update_data(C, ptr); + rna_Armature_update_data(bmain, scene, ptr); } static void rna_Armature_bones_next(CollectionPropertyIterator *iter) diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 37b957a16ca..01d8a4db498 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -72,7 +72,7 @@ EnumPropertyItem boidruleset_type_items[] ={ #include "BKE_depsgraph.h" #include "BKE_particle.h" -static void rna_Boids_reset(bContext *C, PointerRNA *ptr) +static void rna_Boids_reset(Main *bmain, Scene *scene, PointerRNA *ptr) { if(ptr->type==&RNA_ParticleSystem) { ParticleSystem *psys = (ParticleSystem*)ptr->data; @@ -84,12 +84,10 @@ static void rna_Boids_reset(bContext *C, PointerRNA *ptr) else DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } -static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr) +static void rna_Boids_reset_deps(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene = CTX_data_scene(C); - if(ptr->type==&RNA_ParticleSystem) { ParticleSystem *psys = (ParticleSystem*)ptr->data; @@ -102,7 +100,7 @@ static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr) DAG_scene_sort(scene); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } static StructRNA* rna_BoidRule_refine(struct PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 28f546c07f1..2049618628b 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -76,10 +76,10 @@ static void rna_Brush_active_texture_set(PointerRNA *ptr, PointerRNA value) set_current_brush_texture(br, value.data); } -static void rna_Brush_update(bContext *C, PointerRNA *ptr) +static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; - WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, br); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } static float rna_BrushTextureSlot_angle_get(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c index 6254041c7ef..1715df1809a 100644 --- a/source/blender/makesrna/intern/rna_camera.c +++ b/source/blender/makesrna/intern/rna_camera.c @@ -37,13 +37,13 @@ #ifdef RNA_RUNTIME -static void rna_Camera_angle_update(bContext *C, PointerRNA *ptr) +static void rna_Camera_angle_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Camera *cam= (Camera*)ptr->id.data; cam->lens = 16.0f / tan(M_PI*cam->angle/360.0f); } -static void rna_Camera_lens_update(bContext *C, PointerRNA *ptr) +static void rna_Camera_lens_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Camera *cam= (Camera*)ptr->id.data; cam->angle= 360.0f * atan(16.0f/cam->lens) / M_PI; diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c index 0e298c1f6be..c416db2a21c 100644 --- a/source/blender/makesrna/intern/rna_cloth.c +++ b/source/blender/makesrna/intern/rna_cloth.c @@ -45,15 +45,15 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" -static void rna_cloth_update(bContext *C, PointerRNA *ptr) +static void rna_cloth_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob); } -static void rna_cloth_reset(bContext *C, PointerRNA *ptr) +static void rna_cloth_reset(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; ClothSimSettings *settings = (ClothSimSettings*)ptr->data; @@ -61,7 +61,7 @@ static void rna_cloth_reset(bContext *C, PointerRNA *ptr) settings->reset = 1; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob); } diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 226554f9ee6..f9405dec531 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -198,24 +198,24 @@ static char *rna_Constraint_path(PointerRNA *ptr) return BLI_sprintfN("constraints[\"%s\"]", con->name); } -static void rna_Constraint_update(bContext *C, PointerRNA *ptr) +static void rna_Constraint_update(Main *bmain, Scene *scene, PointerRNA *ptr) { ED_object_constraint_update(ptr->id.data); } -static void rna_Constraint_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_Constraint_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - ED_object_constraint_dependency_update(CTX_data_scene(C), ptr->id.data); + ED_object_constraint_dependency_update(scene, ptr->id.data); } -static void rna_Constraint_influence_update(bContext *C, PointerRNA *ptr) +static void rna_Constraint_influence_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= ptr->id.data; if(ob->pose) ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK); - rna_Constraint_update(C, ptr); + rna_Constraint_update(bmain, scene, ptr); } static void rna_Constraint_ik_type_set(struct PointerRNA *ptr, int value) diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index faef93247d9..d3a56661813 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -215,21 +215,21 @@ static void rna_BPoint_array_begin(CollectionPropertyIterator *iter, PointerRNA rna_iterator_array_begin(iter, (void*)nu->bp, sizeof(BPoint), nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu, 0, NULL); } -static void rna_Curve_update_data(bContext *C, PointerRNA *ptr) +static void rna_Curve_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; DAG_id_flush_update(id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); } -static void rna_Curve_update_deps(bContext *C, PointerRNA *ptr) +static void rna_Curve_update_deps(Main *bmain, Scene *scene, PointerRNA *ptr) { - DAG_scene_sort(CTX_data_scene(C)); - rna_Curve_update_data(C, ptr); + DAG_scene_sort(scene); + rna_Curve_update_data(bmain, scene, ptr); } -static void rna_Curve_resolution_u_update_data(bContext *C, PointerRNA *ptr) +static void rna_Curve_resolution_u_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu= (Curve*)ptr->id.data; Nurb *nu=NULL; @@ -242,10 +242,10 @@ static void rna_Curve_resolution_u_update_data(bContext *C, PointerRNA *ptr) nu= nu->next; } - rna_Curve_update_data(C, ptr); + rna_Curve_update_data(bmain, scene, ptr); } -static void rna_Curve_resolution_v_update_data(bContext *C, PointerRNA *ptr) +static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu= (Curve*)ptr->id.data; Nurb *nu=NULL; @@ -258,7 +258,7 @@ static void rna_Curve_resolution_v_update_data(bContext *C, PointerRNA *ptr) nu= nu->next; } - rna_Curve_update_data(C, ptr); + rna_Curve_update_data(bmain, scene, ptr); } /* name functions that ignore the first two ID characters */ @@ -293,34 +293,34 @@ void rna_Curve_body_set(PointerRNA *ptr, const char *value) BLI_strncpy(cu->str, value, len+1); } -static void rna_Nurb_update_handle_data(bContext *C, PointerRNA *ptr) +static void rna_Nurb_update_handle_data(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; if(nu->type == CU_BEZIER) calchandlesNurb(nu); - rna_Curve_update_data(C, ptr); + rna_Curve_update_data(bmain, scene, ptr); } -static void rna_Nurb_update_knot_u(bContext *C, PointerRNA *ptr) +static void rna_Nurb_update_knot_u(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; clamp_nurb_order_u(nu); makeknots(nu, 1); - rna_Curve_update_data(C, ptr); + rna_Curve_update_data(bmain, scene, ptr); } -static void rna_Nurb_update_knot_v(bContext *C, PointerRNA *ptr) +static void rna_Nurb_update_knot_v(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; clamp_nurb_order_v(nu); makeknots(nu, 2); - rna_Curve_update_data(C, ptr); + rna_Curve_update_data(bmain, scene, ptr); } #else diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index e126175a020..23cd4b2c892 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -91,7 +91,7 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) #include "BKE_depsgraph.h" #include "BKE_animsys.h" -static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) +static void rna_ChannelDriver_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; ChannelDriver *driver= ptr->data; @@ -99,20 +99,20 @@ static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) driver->flag &= ~DRIVER_FLAG_INVALID; // TODO: this really needs an update guard... - DAG_scene_sort(CTX_data_scene(C)); + DAG_scene_sort(scene); DAG_id_flush_update(id, OB_RECALC_OB|OB_RECALC_DATA); - WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); + WM_main_add_notifier(NC_SCENE|ND_FRAME, scene); } -static void rna_ChannelDriver_update_expr(bContext *C, PointerRNA *ptr) +static void rna_ChannelDriver_update_expr(Main *bmain, Scene *scene, PointerRNA *ptr) { ChannelDriver *driver= ptr->data; driver->flag |= DRIVER_FLAG_RECOMPILE; - rna_ChannelDriver_update_data(C, ptr); + rna_ChannelDriver_update_data(bmain, scene, ptr); } -static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr) +static void rna_DriverTarget_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { PointerRNA driverptr; ChannelDriver *driver; @@ -125,7 +125,7 @@ static void rna_DriverTarget_update_data(bContext *C, PointerRNA *ptr) if(driver && BLI_findindex(&driver->targets, ptr->data) != -1) { RNA_pointer_create(ptr->id.data, &RNA_Driver, driver, &driverptr); - rna_ChannelDriver_update_data(C, &driverptr); + rna_ChannelDriver_update_data(bmain, scene, &driverptr); return; } } @@ -267,7 +267,7 @@ static void rna_FModifier_active_set(PointerRNA *ptr, int value) fm->flag |= FMODIFIER_FLAG_ACTIVE; } -static void rna_FModifier_active_update(bContext *C, PointerRNA *ptr) +static void rna_FModifier_active_update(Main *bmain, Scene *scene, PointerRNA *ptr) { FModifier *fm, *fmo= (FModifier*)ptr->data; diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c index 2517ee5c8ef..682eebddbbe 100644 --- a/source/blender/makesrna/intern/rna_fluidsim.c +++ b/source/blender/makesrna/intern/rna_fluidsim.c @@ -72,17 +72,16 @@ static StructRNA* rna_FluidSettings_refine(struct PointerRNA *ptr) } } -static void rna_fluid_update(bContext *C, PointerRNA *ptr) +static void rna_fluid_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= ptr->id.data; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob); } -static void rna_FluidSettings_update_type(bContext *C, PointerRNA *ptr) +static void rna_FluidSettings_update_type(Main *bmain, Scene *scene, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); Object *ob= (Object*)ptr->id.data; FluidsimModifierData *fluidmd; ParticleSystemModifierData *psmd; @@ -132,7 +131,7 @@ static void rna_FluidSettings_update_type(bContext *C, PointerRNA *ptr) } } - rna_fluid_update(C, ptr); + rna_fluid_update(bmain, scene, ptr); } static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *value) diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c index f13eb4fedc1..528d2eb0b3d 100644 --- a/source/blender/makesrna/intern/rna_group.c +++ b/source/blender/makesrna/intern/rna_group.c @@ -56,7 +56,7 @@ static void rna_Group_objects_link(Group *group, bContext *C, ReportList *report return; } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, &object->id); } static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList *reports, Object *object) @@ -66,7 +66,7 @@ static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList *repo return; } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, &object->id); } #else diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index 44c55e821a9..e0d8a6950de 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -49,7 +49,7 @@ static EnumPropertyItem image_source_items[]= { #include "IMB_imbuf_types.h" -static void rna_Image_animated_update(bContext *C, PointerRNA *ptr) +static void rna_Image_animated_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= (Image*)ptr->data; int nr; @@ -74,13 +74,13 @@ static int rna_Image_dirty_get(PointerRNA *ptr) return 0; } -static void rna_Image_source_update(bContext *C, PointerRNA *ptr) +static void rna_Image_source_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; BKE_image_signal(ima, NULL, IMA_SIGNAL_SRC_CHANGE); } -static void rna_Image_fields_update(bContext *C, PointerRNA *ptr) +static void rna_Image_fields_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; ImBuf *ibuf; @@ -101,22 +101,21 @@ static void rna_Image_fields_update(bContext *C, PointerRNA *ptr) BKE_image_release_ibuf(ima, lock); } -static void rna_Image_reload_update(bContext *C, PointerRNA *ptr) +static void rna_Image_reload_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD); printf("reload %p\n", ima); } -static void rna_Image_generated_update(bContext *C, PointerRNA *ptr) +static void rna_Image_generated_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE); } -static void rna_ImageUser_update(bContext *C, PointerRNA *ptr) +static void rna_ImageUser_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); ImageUser *iuser= ptr->data; BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0); diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 52945b67275..df1dd249dd1 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -194,10 +194,10 @@ void rna_object_vgroup_name_set(struct PointerRNA *ptr, const char *value, char void rna_object_uvlayer_name_set(struct PointerRNA *ptr, const char *value, char *result, int maxlen); void rna_object_vcollayer_name_set(struct PointerRNA *ptr, const char *value, char *result, int maxlen); -void rna_Object_update(struct bContext *C, struct PointerRNA *ptr); -void rna_Object_update_data(struct bContext *C, struct PointerRNA *ptr); -void rna_Mesh_update_draw(struct bContext *C, struct PointerRNA *ptr); -void rna_TextureSlot_update(struct bContext *C, struct PointerRNA *ptr); +void rna_Object_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); +void rna_Object_update_data(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); +void rna_Mesh_update_draw(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); +void rna_TextureSlot_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); char *rna_TextureSlot_path(struct PointerRNA *ptr); diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h index 8a35f831c96..4f05e6132f7 100644 --- a/source/blender/makesrna/intern/rna_internal_types.h +++ b/source/blender/makesrna/intern/rna_internal_types.h @@ -38,6 +38,8 @@ struct CollectionPropertyIterator; struct bContext; struct IDProperty; struct GHash; +struct Main; +struct Scene; #ifdef UNIT_TEST #define RNA_MAX_ARRAY_LENGTH 64 @@ -53,7 +55,8 @@ struct GHash; /* Function Callbacks */ -typedef void (*UpdateFunc)(struct bContext *C, struct PointerRNA *ptr); +typedef void (*UpdateFunc)(struct Main *main, struct Scene *scene, struct PointerRNA *ptr); +typedef void (*ContextUpdateFunc)(struct bContext *C, struct PointerRNA *ptr); typedef int (*EditableFunc)(struct PointerRNA *ptr); typedef int (*ItemEditableFunc)(struct PointerRNA *ptr, int index); typedef struct IDProperty* (*IDPropertiesFunc)(struct PointerRNA *ptr, int create); diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c index 49dd96241cd..9e560a50af0 100644 --- a/source/blender/makesrna/intern/rna_key.c +++ b/source/blender/makesrna/intern/rna_key.c @@ -286,16 +286,15 @@ static char *rna_ShapeKey_path(PointerRNA *ptr) return BLI_sprintfN("keys[\"%s\"]", ((KeyBlock*)ptr->data)->name); } -static void rna_Key_update_data(bContext *C, PointerRNA *ptr) +static void rna_Key_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); Key *key= ptr->id.data; Object *ob; for(ob=bmain->object.first; ob; ob= ob->id.next) { if(ob_get_key(ob) == key) { DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob); } } } diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index a518bd28d24..5112e68a008 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -100,28 +100,28 @@ static StructRNA* rna_Lamp_refine(struct PointerRNA *ptr) } } -static void rna_Lamp_update(bContext *C, PointerRNA *ptr) +static void rna_Lamp_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Lamp *la= ptr->id.data; DAG_id_flush_update(&la->id, 0); - WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING, la); + WM_main_add_notifier(NC_LAMP|ND_LIGHTING, la); } -static void rna_Lamp_draw_update(bContext *C, PointerRNA *ptr) +static void rna_Lamp_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Lamp *la= ptr->id.data; DAG_id_flush_update(&la->id, 0); - WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING_DRAW, la); + WM_main_add_notifier(NC_LAMP|ND_LIGHTING_DRAW, la); } -static void rna_Lamp_sky_update(bContext *C, PointerRNA *ptr) +static void rna_Lamp_sky_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Lamp *la= ptr->id.data; DAG_id_flush_update(&la->id, 0); - WM_event_add_notifier(C, NC_LAMP|ND_SKY, la); + WM_main_add_notifier(NC_LAMP|ND_SKY, la); } #else diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c index aff38ebdd74..f46ea13ba2e 100644 --- a/source/blender/makesrna/intern/rna_lattice.c +++ b/source/blender/makesrna/intern/rna_lattice.c @@ -87,17 +87,16 @@ static void rna_Lattice_points_begin(CollectionPropertyIterator *iter, PointerRN rna_iterator_array_begin(iter, NULL, 0, 0, 0, NULL); } -static void rna_Lattice_update_data(bContext *C, PointerRNA *ptr) +static void rna_Lattice_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; DAG_id_flush_update(id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); } -static void rna_Lattice_update_size(bContext *C, PointerRNA *ptr) +static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); Lattice *lt= ptr->id.data; Object *ob; int newu, newv, neww; @@ -124,7 +123,7 @@ static void rna_Lattice_update_size(bContext *C, PointerRNA *ptr) resizelattice(lt->editlatt, newu, newv, neww, NULL); } - rna_Lattice_update_data(C, ptr); + rna_Lattice_update_data(bmain, scene, ptr); } static void rna_Lattice_outside_set(PointerRNA *ptr, int value) diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 70dab957fb9..5069bbd6ae6 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -50,41 +50,41 @@ #include "DNA_mesh_types.h" #include "DNA_object_types.h" -static Mesh *rna_Main_add_mesh(Main *main, char *name) +static Mesh *rna_Main_add_mesh(Main *bmain, char *name) { Mesh *me= add_mesh(name); me->id.us--; return me; } -static void rna_Main_remove_mesh(Main *main, ReportList *reports, Mesh *me) +static void rna_Main_remove_mesh(Main *bmain, ReportList *reports, Mesh *me) { if(me->id.us == 0) - free_libblock(&main->mesh, me); + free_libblock(&bmain->mesh, me); else BKE_report(reports, RPT_ERROR, "Mesh must have zero users to be removed."); /* XXX python now has invalid pointer? */ } -static void rna_Main_remove_armature(Main *main, ReportList *reports, bArmature *arm) +static void rna_Main_remove_armature(Main *bmain, ReportList *reports, bArmature *arm) { if(arm->id.us == 0) - free_libblock(&main->armature, arm); + free_libblock(&bmain->armature, arm); else BKE_report(reports, RPT_ERROR, "Armature must have zero users to be removed."); /* XXX python now has invalid pointer? */ } -static bArmature *rna_Main_add_armature(Main *main, char *name) +static bArmature *rna_Main_add_armature(Main *bmain, char *name) { bArmature *arm= add_armature(name); arm->id.us--; return arm; } -static Lamp *rna_Main_add_lamp(Main *main, char *name) +static Lamp *rna_Main_add_lamp(Main *bmain, char *name) { Lamp *la= add_lamp(name); la->id.us--; @@ -92,7 +92,7 @@ static Lamp *rna_Main_add_lamp(Main *main, char *name) } /* -static void rna_Main_remove_lamp(Main *main, ReportList *reports, Lamp *la) +static void rna_Main_remove_lamp(Main *bmain, ReportList *reports, Lamp *la) { if(la->id.us == 0) free_libblock(&main->lamp, la); @@ -101,7 +101,7 @@ static void rna_Main_remove_lamp(Main *main, ReportList *reports, Lamp *la) } */ -static Object* rna_Main_add_object(Main *main, int type, char *name) +static Object* rna_Main_add_object(Main *bmain, int type, char *name) { Object *ob= add_only_object(type, name); ob->id.us--; @@ -120,29 +120,29 @@ static Object* rna_Main_add_object(Main *main, int type, char *name) # don't do this since ob is already freed! bpy.data.remove_object(ob) */ -static void rna_Main_remove_object(Main *main, ReportList *reports, Object *ob) +static void rna_Main_remove_object(Main *bmain, ReportList *reports, Object *ob) { if(ob->id.us == 0) - free_libblock(&main->object, ob); + free_libblock(&bmain->object, ob); else BKE_report(reports, RPT_ERROR, "Object must have zero users to be removed."); } -static Material *rna_Main_add_material(Main *main, char *name) +static Material *rna_Main_add_material(Main *bmain, char *name) { return add_material(name); } /* TODO: remove material? */ -struct Tex *rna_Main_add_texture(Main *main, char *name) +struct Tex *rna_Main_add_texture(Main *bmain, char *name) { return add_texture(name); } /* TODO: remove texture? */ -struct Image *rna_Main_add_image(Main *main, char *filename) +struct Image *rna_Main_add_image(Main *bmain, char *filename) { return BKE_add_image_file(filename, 0); } diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index 85007482dc4..a5c1d8d5f57 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -64,20 +64,20 @@ static EnumPropertyItem prop_texture_coordinates_items[] = { #include "ED_node.h" -static void rna_Material_update(bContext *C, PointerRNA *ptr) +static void rna_Material_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Material *ma= ptr->id.data; DAG_id_flush_update(&ma->id, 0); - WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, ma); + WM_main_add_notifier(NC_MATERIAL|ND_SHADING, ma); } -static void rna_Material_draw_update(bContext *C, PointerRNA *ptr) +static void rna_Material_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Material *ma= ptr->id.data; DAG_id_flush_update(&ma->id, 0); - WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, ma); + WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, ma); } static PointerRNA rna_Material_mirror_get(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index bacd7fc2b72..355314f5c92 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -50,26 +50,26 @@ #include "WM_api.h" #include "WM_types.h" -static void rna_Mesh_update_data(bContext *C, PointerRNA *ptr) +static void rna_Mesh_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; DAG_id_flush_update(id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); } -static void rna_Mesh_update_select(bContext *C, PointerRNA *ptr) +static void rna_Mesh_update_select(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, id); + WM_main_add_notifier(NC_GEOM|ND_SELECT, id); } -void rna_Mesh_update_draw(bContext *C, PointerRNA *ptr) +void rna_Mesh_update_draw(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; - WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); + WM_main_add_notifier(NC_GEOM|ND_DATA, id); } static void rna_MeshVertex_normal_get(PointerRNA *ptr, float *value) diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c index 62466047ef4..b7cd40b2efd 100644 --- a/source/blender/makesrna/intern/rna_meta.c +++ b/source/blender/makesrna/intern/rna_meta.c @@ -50,10 +50,8 @@ static int rna_Meta_texspace_editable(PointerRNA *ptr) return (mb->texflag & AUTOSPACE)? 0: PROP_EDITABLE; } -static void rna_MetaBall_update_data(bContext *C, PointerRNA *ptr) +static void rna_MetaBall_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); MetaBall *mb= ptr->id.data; Object *ob; @@ -62,11 +60,9 @@ static void rna_MetaBall_update_data(bContext *C, PointerRNA *ptr) copy_mball_properties(scene, ob); DAG_id_flush_update(&mb->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, mb); + WM_main_add_notifier(NC_GEOM|ND_DATA, mb); } - - #else static void rna_def_metaelement(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index d5cdad08923..f2683e39c54 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -192,19 +192,19 @@ static char *rna_Modifier_path(PointerRNA *ptr) return BLI_sprintfN("modifiers[\"%s\"]", ((ModifierData*)ptr->data)->name); } -static void rna_Modifier_update(bContext *C, PointerRNA *ptr) +static void rna_Modifier_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ptr->id.data); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ptr->id.data); } -static void rna_Modifier_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_Modifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - rna_Modifier_update(C, ptr); - DAG_scene_sort(CTX_data_scene(C)); + rna_Modifier_update(bmain, scene, ptr); + DAG_scene_sort(scene); } -static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr) +static void rna_Smoke_set_type(Main *bmain, Scene *scene, PointerRNA *ptr) { SmokeModifierData *smd= (SmokeModifierData *)ptr->data; Object *ob= (Object*)ptr->id.data; @@ -229,7 +229,7 @@ static void rna_Smoke_set_type(bContext *C, PointerRNA *ptr) } // update dependancy since a domain - other type switch could have happened - rna_Modifier_dependency_update(C, ptr); + rna_Modifier_dependency_update(bmain, scene, ptr); } static void rna_ExplodeModifier_vgroup_get(PointerRNA *ptr, char *value) diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 1aec395b43f..d1e73d6add3 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -149,9 +149,8 @@ static void rna_Matte_t2_set(PointerRNA *ptr, float value) chroma->t2 = value; } -static void node_update(bContext *C, bNodeTree *ntree, bNode *node) +static void node_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node) { - Main *bmain= CTX_data_main(C); Material *ma; Tex *tex; Scene *sce; @@ -170,15 +169,15 @@ static void node_update(bContext *C, bNodeTree *ntree, bNode *node) ED_node_changed_update(&sce->id, node); } -static void rna_Node_update(bContext *C, PointerRNA *ptr) +static void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bNodeTree *ntree= (bNodeTree*)ptr->id.data; bNode *node= (bNode*)ptr->data; - node_update(C, ntree, node); + node_update(bmain, scene, ntree, node); } -static void rna_Node_update_name(bContext *C, PointerRNA *ptr) +static void rna_Node_update_name(Main *bmain, Scene *scene, PointerRNA *ptr) { bNodeTree *ntree= (bNodeTree*)ptr->id.data; bNode *node= (bNode*)ptr->data; @@ -193,12 +192,12 @@ static void rna_Node_update_name(bContext *C, PointerRNA *ptr) /* fix all the animation data which may link to this */ BKE_all_animdata_fix_paths_rename("nodes", oldname, node->name); - node_update(C, ntree, node); + node_update(bmain, scene, ntree, node); } /* this should be done at display time! if no custom names are set */ #if 0 -static void rna_Node_update_username(bContext *C, PointerRNA *ptr) +static void rna_Node_update_username(Main *bmain, Scene *scene, PointerRNA *ptr) { bNode *node= (bNode*)ptr->data; const char *name; @@ -241,18 +240,18 @@ static void rna_Node_update_username(bContext *C, PointerRNA *ptr) } } - rna_Node_update(C, ptr); + rna_Node_update(bmain, scene, ptr); } #endif -static void rna_NodeSocket_update(bContext *C, PointerRNA *ptr) +static void rna_NodeSocket_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bNodeTree *ntree= (bNodeTree*)ptr->id.data; bNodeSocket *sock= (bNodeSocket*)ptr->data; bNode *node; if (nodeFindNode(ntree, sock, &node, NULL)) - node_update(C, ntree, node); + node_update(bmain, scene, ntree, node); } static void rna_NodeSocket_defvalue_range(PointerRNA *ptr, float *min, float *max) @@ -263,16 +262,16 @@ static void rna_NodeSocket_defvalue_range(PointerRNA *ptr, float *min, float *ma *max = sock->ns.max; } -static void rna_Node_mapping_update(bContext *C, PointerRNA *ptr) +static void rna_Node_mapping_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bNode *node= (bNode*)ptr->data; init_mapping((TexMapping *)node->storage); - rna_Node_update(C, ptr); + rna_Node_update(bmain, scene, ptr); } -static void rna_Node_image_layer_update(bContext *C, PointerRNA *ptr) +static void rna_Node_image_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bNode *node= (bNode*)ptr->data; Image *ima = (Image *)node->id; @@ -281,7 +280,7 @@ static void rna_Node_image_layer_update(bContext *C, PointerRNA *ptr) BKE_image_multilayer_index(ima->rr, iuser); BKE_image_signal(ima, iuser, IMA_SIGNAL_SRC_CHANGE); - rna_Node_update(C, ptr); + rna_Node_update(bmain, scene, ptr); } static EnumPropertyItem *renderresult_layers_add_enum(RenderLayer *rl) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 4dacf46f0c6..38b449dffb0 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -114,56 +114,56 @@ EnumPropertyItem object_type_items[] = { #include "BLI_editVert.h" /* for EditMesh->mat_nr */ +#include "ED_mesh.h" #include "ED_object.h" #include "ED_particle.h" -void rna_Object_update(bContext *C, PointerRNA *ptr) +void rna_Object_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_OB); } -void rna_Object_matrix_update(bContext *C, PointerRNA *ptr) +void rna_Object_matrix_update(Main *bmain, Scene *scene, PointerRNA *ptr) { ED_object_apply_obmat(ptr->id.data); - rna_Object_update(C, ptr); + rna_Object_update(bmain, scene, ptr); } -void rna_Object_update_data(bContext *C, PointerRNA *ptr) +void rna_Object_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ptr->id.data); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ptr->id.data); } -void rna_Object_active_shape_update(bContext *C, PointerRNA *ptr) +void rna_Object_active_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= ptr->id.data; - Scene *scene= CTX_data_scene(C); int editmode= (scene->obedit == ob && ob->type == OB_MESH); if(editmode) { /* exit/enter editmode to get new shape */ - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO); - ED_object_enter_editmode(C, EM_WAITCURSOR); + load_editMesh(scene, ob); + make_editMesh(scene, ob); } - rna_Object_update_data(C, ptr); + rna_Object_update_data(bmain, scene, ptr); } -static void rna_Object_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_Object_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_OB); - DAG_scene_sort(CTX_data_scene(C)); + DAG_scene_sort(scene); } /* when changing the selection flag the scene needs updating */ -static void rna_Object_select_update(bContext *C, PointerRNA *ptr) +static void rna_Object_select_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; short mode = ob->flag & SELECT ? BA_SELECT : BA_DESELECT; - ED_base_object_select(object_in_scene(ob, CTX_data_scene(C)), mode); + ED_base_object_select(object_in_scene(ob, scene), mode); } -static void rna_Base_select_update(bContext *C, PointerRNA *ptr) +static void rna_Base_select_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Base *base= (Base*)ptr->data; short mode = base->flag & BA_SELECT ? BA_SELECT : BA_DESELECT; @@ -182,10 +182,9 @@ static void rna_Object_layer_update__internal(Scene *scene, Base *base, Object * } } -static void rna_Object_layer_update(bContext *C, PointerRNA *ptr) +static void rna_Object_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; - Scene *scene= CTX_data_scene(C); Base *base; base= object_in_scene(ob, scene); @@ -196,11 +195,10 @@ static void rna_Object_layer_update(bContext *C, PointerRNA *ptr) rna_Object_layer_update__internal(scene, base, ob); } -static void rna_Base_layer_update(bContext *C, PointerRNA *ptr) +static void rna_Base_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Base *base= (Base*)ptr->id.data; Object *ob= (Object*)base->object; - Scene *scene= CTX_data_scene(C); ob->lay= base->lay; @@ -527,9 +525,8 @@ static void rna_Object_active_particle_system_index_set(PointerRNA *ptr, int val psys_set_current_num(ob, value); } -static void rna_Object_particle_update(bContext *C, PointerRNA *ptr) +static void rna_Object_particle_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); Object *ob= (Object*)ptr->id.data; PE_current_changed(scene, ob); @@ -973,7 +970,7 @@ static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value) static bConstraint *rna_Object_constraint_new(Object *object, bContext *C, int type) { - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); + WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); return add_ob_constraint(object, NULL, type); } @@ -982,7 +979,7 @@ static int rna_Object_constraint_remove(Object *object, bContext *C, int index) int ok = remove_constraint_index(&object->constraints, index); if(ok) { ED_object_constraint_set_active(object, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object); + WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT, object); } return ok; diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index c601622fcc3..9a57a24e1a7 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -97,9 +97,9 @@ EnumPropertyItem empty_vortex_shape_items[] = { #include "ED_object.h" -static void rna_Cache_change(bContext *C, PointerRNA *ptr) +static void rna_Cache_change(Main *bmain, Scene *scene, PointerRNA *ptr) { - Object *ob = CTX_data_active_object(C); + Object *ob = (Object*)ptr->id.data; PointCache *cache = (PointCache*)ptr->data; PTCacheID *pid = NULL; ListBase pidlist; @@ -124,9 +124,9 @@ static void rna_Cache_change(bContext *C, PointerRNA *ptr) BLI_freelistN(&pidlist); } -static void rna_Cache_toggle_disk_cache(bContext *C, PointerRNA *ptr) +static void rna_Cache_toggle_disk_cache(Main *bmain, Scene *scene, PointerRNA *ptr) { - Object *ob = CTX_data_active_object(C); + Object *ob = (Object*)ptr->id.data; PointCache *cache = (PointCache*)ptr->data; PTCacheID *pid = NULL; ListBase pidlist; @@ -147,9 +147,9 @@ static void rna_Cache_toggle_disk_cache(bContext *C, PointerRNA *ptr) BLI_freelistN(&pidlist); } -static void rna_Cache_idname_change(bContext *C, PointerRNA *ptr) +static void rna_Cache_idname_change(Main *bmain, Scene *scene, PointerRNA *ptr) { - Object *ob = CTX_data_active_object(C); + Object *ob = (Object*)ptr->id.data; PointCache *cache = (PointCache*)ptr->data; PTCacheID *pid = NULL, *pid2= NULL; ListBase pidlist; @@ -440,7 +440,7 @@ static int particle_id_check(PointerRNA *ptr) return (GS(id->name) == ID_PA); } -static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr) +static void rna_FieldSettings_update(Main *bmain, Scene *scene, PointerRNA *ptr) { if(particle_id_check(ptr)) { ParticleSettings *part = (ParticleSettings*)ptr->id.data; @@ -456,7 +456,7 @@ static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr) } DAG_id_flush_update(&part->id, OB_RECALC|PSYS_RECALC_RESET); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); } else { @@ -468,14 +468,12 @@ static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr) } DAG_id_flush_update(&ob->id, OB_RECALC_OB); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } } -static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr) +static void rna_FieldSettings_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); - if(!particle_id_check(ptr)) { Object *ob= (Object*)ptr->id.data; PartDeflect *pd= ob->pd; @@ -492,14 +490,12 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr) ED_object_modifier_remove(NULL, scene, ob, md); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } } -static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_FieldSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); - if(particle_id_check(ptr)) { DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC|PSYS_RECALC_RESET); } @@ -513,7 +509,7 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr) do_curvebuts(B_CU3D); // all curves too }*/ - rna_FieldSettings_shape_update(C, ptr); + rna_FieldSettings_shape_update(bmain, scene, ptr); DAG_scene_sort(scene); @@ -522,7 +518,7 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr) else DAG_id_flush_update(&ob->id, OB_RECALC_OB); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } } @@ -550,22 +546,20 @@ static char *rna_FieldSettings_path(PointerRNA *ptr) return NULL; } -static void rna_EffectorWeight_update(bContext *C, PointerRNA *ptr) +static void rna_EffectorWeight_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); } -static void rna_EffectorWeight_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_EffectorWeight_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); - DAG_scene_sort(scene); DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); } static char *rna_EffectorWeight_path(PointerRNA *ptr) @@ -612,9 +606,8 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr) return NULL; } -static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_CollisionSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); Object *ob= (Object*)ptr->id.data; ModifierData *md= modifiers_findByType(ob, eModifierType_Collision); @@ -624,23 +617,23 @@ static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr else if(!ob->pd->deflect && md) ED_object_modifier_remove(NULL, scene, ob, md); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } -static void rna_CollisionSettings_update(bContext *C, PointerRNA *ptr) +static void rna_CollisionSettings_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; DAG_id_flush_update(&ob->id, OB_RECALC); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } -static void rna_softbody_update(bContext *C, PointerRNA *ptr) +static void rna_softbody_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_main_add_notifier(NC_OBJECT|ND_MODIFIER, ob); } diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 6ddec53c28d..4ff42bbb7c2 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -109,7 +109,7 @@ EnumPropertyItem part_hair_ren_as_items[] = { #include "BLI_listbase.h" /* property update functions */ -static void particle_recalc(bContext *C, PointerRNA *ptr, short flag) +static void particle_recalc(Main *bmain, Scene *scene, PointerRNA *ptr, short flag) { if(ptr->type==&RNA_ParticleSystem) { ParticleSystem *psys = (ParticleSystem*)ptr->data; @@ -121,43 +121,41 @@ static void particle_recalc(bContext *C, PointerRNA *ptr, short flag) else DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|flag); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } -static void rna_Particle_redo(bContext *C, PointerRNA *ptr) +static void rna_Particle_redo(Main *bmain, Scene *scene, PointerRNA *ptr) { - particle_recalc(C, ptr, PSYS_RECALC_REDO); + particle_recalc(bmain, scene, ptr, PSYS_RECALC_REDO); } -static void rna_Particle_redo_dependency(bContext *C, PointerRNA *ptr) +static void rna_Particle_redo_dependency(Main *bmain, Scene *scene, PointerRNA *ptr) { - DAG_scene_sort(CTX_data_scene(C)); - rna_Particle_redo(C, ptr); + DAG_scene_sort(scene); + rna_Particle_redo(bmain, scene, ptr); } -static void rna_Particle_reset(bContext *C, PointerRNA *ptr) +static void rna_Particle_reset(Main *bmain, Scene *scene, PointerRNA *ptr) { - particle_recalc(C, ptr, PSYS_RECALC_RESET); + particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET); } -static void rna_Particle_change_type(bContext *C, PointerRNA *ptr) +static void rna_Particle_change_type(Main *bmain, Scene *scene, PointerRNA *ptr) { - particle_recalc(C, ptr, PSYS_RECALC_RESET|PSYS_RECALC_TYPE); + particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET|PSYS_RECALC_TYPE); } -static void rna_Particle_change_physics(bContext *C, PointerRNA *ptr) +static void rna_Particle_change_physics(Main *bmain, Scene *scene, PointerRNA *ptr) { - particle_recalc(C, ptr, PSYS_RECALC_RESET|PSYS_RECALC_PHYS); + particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET|PSYS_RECALC_PHYS); } -static void rna_Particle_redo_child(bContext *C, PointerRNA *ptr) +static void rna_Particle_redo_child(Main *bmain, Scene *scene, PointerRNA *ptr) { - particle_recalc(C, ptr, PSYS_RECALC_CHILD); + particle_recalc(bmain, scene, ptr, PSYS_RECALC_CHILD); } -static void rna_Particle_target_reset(bContext *C, PointerRNA *ptr) +static void rna_Particle_target_reset(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene = CTX_data_scene(C); - if(ptr->type==&RNA_ParticleTarget) { ParticleTarget *pt = (ParticleTarget*)ptr->data; Object *ob = (Object*)ptr->id.data; @@ -187,10 +185,10 @@ static void rna_Particle_target_reset(bContext *C, PointerRNA *ptr) DAG_scene_sort(scene); } - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } -static void rna_Particle_target_redo(bContext *C, PointerRNA *ptr) +static void rna_Particle_target_redo(Main *bmain, Scene *scene, PointerRNA *ptr) { if(ptr->type==&RNA_ParticleTarget) { Object *ob = (Object*)ptr->id.data; @@ -199,13 +197,12 @@ static void rna_Particle_target_redo(bContext *C, PointerRNA *ptr) psys->recalc = PSYS_RECALC_REDO; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } } -static void rna_Particle_hair_dynamics(bContext *C, PointerRNA *ptr) +static void rna_Particle_hair_dynamics(Main *bmain, Scene *scene, PointerRNA *ptr) { - /* Scene *scene = CTX_data_scene(C); */ ParticleSystem *psys = (ParticleSystem*)ptr->data; if(psys && !psys->clmd) { @@ -213,10 +210,10 @@ static void rna_Particle_hair_dynamics(bContext *C, PointerRNA *ptr) psys->clmd->sim_parms->goalspring = 0.0f; psys->clmd->sim_parms->flags |= CLOTH_SIMSETTINGS_FLAG_GOAL|CLOTH_SIMSETTINGS_FLAG_NO_SPRING_COMPRESS; psys->clmd->coll_parms->flags &= ~CLOTH_COLLSETTINGS_FLAG_SELF; - rna_Particle_redo(C, ptr); + rna_Particle_redo(bmain, scene, ptr); } else - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); } static PointerRNA rna_particle_settings_get(PointerRNA *ptr) { @@ -241,7 +238,7 @@ static void rna_particle_settings_set(PointerRNA *ptr, PointerRNA value) psys_check_boid_data(psys); } } -static void rna_Particle_abspathtime_update(bContext *C, PointerRNA *ptr) +static void rna_Particle_abspathtime_update(Main *bmain, Scene *scene, PointerRNA *ptr) { ParticleSettings *settings = (ParticleSettings*)ptr->data; float delta = settings->end + settings->lifetime - settings->sta; @@ -253,7 +250,7 @@ static void rna_Particle_abspathtime_update(bContext *C, PointerRNA *ptr) settings->path_start = (settings->path_start - settings->sta)/delta; settings->path_end = (settings->path_end - settings->sta)/delta; } - rna_Particle_redo(C, ptr); + rna_Particle_redo(bmain, scene, ptr); } static void rna_PartSettings_start_set(struct PointerRNA *ptr, float value) { diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 8a4aadcba57..c7aca9c9738 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -58,14 +58,14 @@ #include "MEM_guardedalloc.h" -static void rna_Pose_update(bContext *C, PointerRNA *ptr) +static void rna_Pose_update(Main *bmain, Scene *scene, PointerRNA *ptr) { // XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK); DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); } -static void rna_Pose_IK_update(bContext *C, PointerRNA *ptr) +static void rna_Pose_IK_update(Main *bmain, Scene *scene, PointerRNA *ptr) { // XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK); Object *ob= ptr->id.data; @@ -142,11 +142,10 @@ static void rna_Pose_ik_solver_set(struct PointerRNA *ptr, int value) } } -static void rna_Pose_ik_solver_update(bContext *C, PointerRNA *ptr) +static void rna_Pose_ik_solver_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= ptr->id.data; bPose *pose = ptr->data; - Scene *scene = CTX_data_scene(C); pose->flag |= POSE_RECALC; // checks & sorts pose channels DAG_scene_sort(scene); @@ -242,7 +241,7 @@ static StructRNA *rna_Pose_ikparam_typef(PointerRNA *ptr) } } -static void rna_Itasc_update(bContext *C, PointerRNA *ptr) +static void rna_Itasc_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob = ptr->id.data; bItasc *itasc = ptr->data; @@ -267,13 +266,13 @@ static void rna_Itasc_update(bContext *C, PointerRNA *ptr) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } -static void rna_Itasc_update_rebuild(bContext *C, PointerRNA *ptr) +static void rna_Itasc_update_rebuild(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob= ptr->id.data; bPose *pose = ob->pose; pose->flag |= POSE_RECALC; // checks & sorts pose channels - rna_Itasc_update(C, ptr); + rna_Itasc_update(bmain, scene, ptr); } static PointerRNA rna_PoseChannel_bone_group_get(PointerRNA *ptr) @@ -431,7 +430,7 @@ static void rna_PoseChannel_active_constraint_set(PointerRNA *ptr, PointerRNA va static bConstraint *rna_PoseChannel_constraints_new(bPoseChannel *pchan, bContext *C, int type) { - //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); + //WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT|NA_ADDED, object); // TODO, pass object also // TODO, new pose bones don't have updated draw flags return add_pose_constraint(NULL, pchan, NULL, type); @@ -441,7 +440,7 @@ static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C, { // TODO //ED_object_constraint_set_active(object, NULL); - //WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, object); + //WM_main_add_notifier(NC_OBJECT|ND_CONSTRAINT, object); return remove_constraint_index(&pchan->constraints, index); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 5000dd90b1d..033a8f45809 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -190,9 +190,8 @@ static void rna_Scene_layer_set(PointerRNA *ptr, const int *values) scene->lay= ED_view3d_scene_layer_set(scene->lay, values); } -static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr) +static void rna_Scene_layer_update(Main *bmain, Scene *unused, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); Scene *scene= (Scene*)ptr->data; ED_view3d_scene_layers_update(bmain, scene); @@ -269,7 +268,7 @@ static void rna_Scene_preview_range_end_frame_set(PointerRNA *ptr, int value) data->r.pefra= value; } -static void rna_Scene_frame_update(bContext *C, PointerRNA *ptr) +static void rna_Scene_frame_update(Main *bmain, Scene *unused, PointerRNA *ptr) { //Scene *scene= ptr->id.data; //ED_update_for_newframe(C); @@ -538,7 +537,7 @@ static void rna_SceneRenderLayer_layer_set(PointerRNA *ptr, const int *values) rl->lay= ED_view3d_scene_layer_set(rl->lay, values); } -static void rna_SceneRenderLayer_pass_update(bContext *C, PointerRNA *ptr) +static void rna_SceneRenderLayer_pass_update(Main *bmain, Scene *unused, PointerRNA *ptr) { Scene *scene= (Scene*)ptr->id.data; @@ -555,7 +554,7 @@ static void rna_Scene_use_nodes_set(PointerRNA *ptr, int value) ED_node_composit_default(scene); } -static void rna_Physics_update(bContext *C, PointerRNA *ptr) +static void rna_Physics_update(Main *bmain, Scene *unused, PointerRNA *ptr) { Scene *scene= (Scene*)ptr->id.data; Base *base; diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 89e9c2ee5ca..4efbed167a6 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -54,7 +54,7 @@ static void rna_Scene_set_frame(Scene *scene, bContext *C, int frame) CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME); scene_update_for_newframe(scene, (1<<20) - 1); - WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_main_add_notifier(NC_SCENE|ND_FRAME, scene); } static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports, diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index 57ab63c952d..da8f326caca 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -61,13 +61,13 @@ static void rna_Screen_scene_set(PointerRNA *ptr, PointerRNA value) sc->newscene= value.data; } -static void rna_Screen_scene_update(bContext *C, PointerRNA *ptr) +static void rna_Screen_scene_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bScreen *sc= (bScreen*)ptr->data; /* exception: can't set screens inside of area/region handers */ if(sc->newscene) { - WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, sc->newscene); + WM_main_add_notifier(NC_SCENE|ND_SCENEBROWSE, sc->newscene); sc->newscene= NULL; } } @@ -94,10 +94,8 @@ static void rna_Area_type_update(bContext *C, PointerRNA *ptr) { ScrArea *sa= (ScrArea*)ptr->data; - if(sa) { - ED_area_newspace(C, sa, sa->butspacetype); /* XXX - this uses the window */ - ED_area_tag_redraw(sa); - } + ED_area_newspace(C, sa, sa->butspacetype); /* XXX - this uses the window */ + ED_area_tag_redraw(sa); } #else @@ -135,9 +133,9 @@ static void rna_def_area(BlenderRNA *brna) RNA_def_property_enum_items(prop, space_type_items); RNA_def_property_enum_funcs(prop, NULL, "rna_Area_type_set", NULL); RNA_def_property_ui_text(prop, "Type", "Space type."); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); RNA_def_property_update(prop, 0, "rna_Area_type_update"); - RNA_def_function(srna, "tag_redraw", "ED_area_tag_redraw"); } diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 6cfd38ba26e..9e13ae1191d 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -100,9 +100,10 @@ static void rna_Paint_active_brush_set(PointerRNA *ptr, PointerRNA value) paint_brush_set(ptr->data, value.data); } -static void rna_ParticleEdit_redo(bContext *C, PointerRNA *ptr) +static void rna_ParticleEdit_redo(Main *bmain, Scene *scene, PointerRNA *ptr) { - PTCacheEdit *edit = PE_get_current(CTX_data_scene(C), CTX_data_active_object(C)); + Object *ob= (scene->basact)? scene->basact->object: NULL; + PTCacheEdit *edit = PE_get_current(scene, ob); if(!edit) return; @@ -110,9 +111,9 @@ static void rna_ParticleEdit_redo(bContext *C, PointerRNA *ptr) psys_free_path_cache(edit->psys, edit); } -static void rna_ParticleEdit_update(bContext *C, PointerRNA *ptr) +static void rna_ParticleEdit_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Object *ob = CTX_data_active_object(C); + Object *ob= (scene->basact)? scene->basact->object: NULL; if(ob) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } @@ -120,7 +121,8 @@ static void rna_ParticleEdit_update(bContext *C, PointerRNA *ptr) static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *ptr, int *free) { Scene *scene= CTX_data_scene(C); - PTCacheEdit *edit = PE_get_current(scene, CTX_data_active_object(C)); + Object *ob= (scene->basact)? scene->basact->object: NULL; + PTCacheEdit *edit = PE_get_current(scene, ob); if(edit && edit->psys) return particle_edit_hair_brush_items; diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 03fa0a410fe..68bfea7161d 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -264,9 +264,8 @@ static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) BLI_strncpy(elem->name, name, sizeof(elem->name)); } -static void rna_Sequence_update(bContext *C, PointerRNA *ptr) +static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= (Scene*)ptr->id.data; Editing *ed= seq_give_editing(scene, FALSE); free_imbuf_seq(scene, &ed->seqbase, FALSE); @@ -275,13 +274,12 @@ static void rna_Sequence_update(bContext *C, PointerRNA *ptr) seq_update_sound(ptr->data); } -static void rna_Sequence_mute_update(bContext *C, PointerRNA *ptr) +static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= (Scene*)ptr->id.data; Editing *ed= seq_give_editing(scene, FALSE); seq_update_muting(ed); - rna_Sequence_update(C, ptr); + rna_Sequence_update(bmain, scene, ptr); } #else diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index e302ea90a8a..11b1e80865e 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -49,33 +49,33 @@ #include "ED_object.h" -static void rna_Smoke_update(bContext *C, PointerRNA *ptr) +static void rna_Smoke_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); } -static void rna_Smoke_dependency_update(bContext *C, PointerRNA *ptr) +static void rna_Smoke_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - rna_Smoke_update(C, ptr); - DAG_scene_sort(CTX_data_scene(C)); + rna_Smoke_update(bmain, scene, ptr); + DAG_scene_sort(scene); } -static void rna_Smoke_reset(bContext *C, PointerRNA *ptr) +static void rna_Smoke_reset(Main *bmain, Scene *scene, PointerRNA *ptr) { SmokeDomainSettings *settings = (SmokeDomainSettings*)ptr->data; smokeModifier_reset(settings->smd); - rna_Smoke_update(C, ptr); + rna_Smoke_update(bmain, scene, ptr); } -static void rna_Smoke_reset_dependancy(bContext *C, PointerRNA *ptr) +static void rna_Smoke_reset_dependancy(Main *bmain, Scene *scene, PointerRNA *ptr) { SmokeDomainSettings *settings = (SmokeDomainSettings*)ptr->data; smokeModifier_reset(settings->smd); - rna_Smoke_dependency_update(C, ptr); + rna_Smoke_dependency_update(bmain, scene, ptr); } static char *rna_SmokeDomainSettings_path(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c index 38e4d850c68..7fc209bfc5f 100644 --- a/source/blender/makesrna/intern/rna_sound.c +++ b/source/blender/makesrna/intern/rna_sound.c @@ -37,9 +37,9 @@ #include "BKE_sound.h" #include "BKE_context.h" -static void rna_Sound_filename_update(bContext *C, PointerRNA *ptr) +static void rna_Sound_filename_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - sound_load(CTX_data_main(C), (bSound*)ptr->data); + sound_load(bmain, (bSound*)ptr->data); } static int rna_Sound_caching_get(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 21258458a57..28784e0e666 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -83,7 +83,7 @@ static EnumPropertyItem transform_orientation_items[] = { {V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"}, {0, NULL, 0, NULL, NULL}}; -static EnumPropertyItem autosnap_items[] = { +EnumPropertyItem autosnap_items[] = { {SACTSNAP_OFF, "NONE", 0, "No Auto-Snap", ""}, {SACTSNAP_STEP, "STEP", 0, "Time Step", "Snap to 1.0 frame/second intervals."}, {SACTSNAP_FRAME, "FRAME", 0, "Nearest Frame", "Snap to actual frames/seconds (nla-action time)."}, @@ -249,12 +249,9 @@ static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_SpaceUVEditor, ptr->data); } -static void rna_SpaceImageEditor_paint_update(bContext *C, PointerRNA *ptr) +static void rna_SpaceImageEditor_paint_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Scene *scene= CTX_data_scene(C); - - if(scene) - paint_init(&scene->toolsettings->imapaint.paint, PAINT_CURSOR_TEXTURE_PAINT); + paint_init(&scene->toolsettings->imapaint.paint, PAINT_CURSOR_TEXTURE_PAINT); } static int rna_SpaceImageEditor_show_render_get(PointerRNA *ptr) @@ -322,7 +319,7 @@ static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *C, P return item; } -static void rna_SpaceImageEditor_curves_update(bContext *C, PointerRNA *ptr) +static void rna_SpaceImageEditor_curves_update(Main *bmain, Scene *scene, PointerRNA *ptr) { SpaceImage *sima= (SpaceImage*)ptr->data; ImBuf *ibuf; @@ -332,7 +329,7 @@ static void rna_SpaceImageEditor_curves_update(bContext *C, PointerRNA *ptr) curvemapping_do_ibuf(sima->cumap, ibuf); ED_space_image_release_buffer(sima, lock); - WM_event_add_notifier(C, NC_IMAGE, sima->image); + WM_main_add_notifier(NC_IMAGE, sima->image); } @@ -432,10 +429,12 @@ static void rna_View3D_display_background_image_set(PointerRNA *ptr, int value) /* Space Time */ -static void rna_SpaceTime_redraw_update(bContext *C, PointerRNA *ptr) +static void rna_SpaceTime_redraw_update(Main *bmain, Scene *scene, PointerRNA *ptr) { SpaceTime *st= (SpaceTime*)ptr->data; - ED_screen_animation_timer_update(C, st->redraws); + bScreen *screen= (bScreen*)ptr->id.data; + + ED_screen_animation_timer_update(screen, st->redraws); } /* Space Dopesheet */ @@ -446,10 +445,10 @@ static void rna_SpaceDopeSheetEditor_action_set(PointerRNA *ptr, PointerRNA valu saction->action= value.data; } -static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) +static void rna_SpaceDopeSheetEditor_action_update(Main *bmain, Scene *scene, PointerRNA *ptr) { SpaceAction *saction= (SpaceAction*)(ptr->data); - Object *obact= CTX_data_active_object(C); + Object *obact= (scene->basact)? scene->basact->object: NULL; /* we must set this action to be the one used by active object (if not pinned) */ if(obact && saction->pin == 0) { @@ -464,7 +463,7 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr) } } -static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr) +static void rna_SpaceDopeSheetEditor_mode_update(Main *bmain, Scene *scene, PointerRNA *ptr) { SpaceAction *saction= (SpaceAction*)(ptr->data); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index be38139ce4e..19d33465ceb 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -106,21 +106,21 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr) } } -static void rna_Texture_update(bContext *C, PointerRNA *ptr) +static void rna_Texture_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Tex *tex= ptr->id.data; DAG_id_flush_update(&tex->id, 0); - WM_event_add_notifier(C, NC_TEXTURE, tex); + WM_main_add_notifier(NC_TEXTURE, tex); } /* Used for Texture Properties, used (also) for/in Nodes */ -static void rna_Texture_nodes_update(bContext *C, PointerRNA *ptr) +static void rna_Texture_nodes_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Tex *tex= ptr->id.data; DAG_id_flush_update(&tex->id, 0); - WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, tex); + WM_main_add_notifier(NC_TEXTURE|ND_NODES, tex); } static void rna_Texture_type_set(PointerRNA *ptr, int value) @@ -140,7 +140,7 @@ static void rna_Texture_type_set(PointerRNA *ptr, int value) tex->type = value; } -void rna_TextureSlot_update(bContext *C, PointerRNA *ptr) +void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr) { ID *id= ptr->id.data; @@ -148,16 +148,16 @@ void rna_TextureSlot_update(bContext *C, PointerRNA *ptr) switch(GS(id->name)) { case ID_MA: - WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, id); + WM_main_add_notifier(NC_MATERIAL|ND_SHADING, id); break; case ID_WO: - WM_event_add_notifier(C, NC_WORLD, id); + WM_main_add_notifier(NC_WORLD, id); break; case ID_LA: - WM_event_add_notifier(C, NC_LAMP|ND_LIGHTING, id); + WM_main_add_notifier(NC_LAMP|ND_LIGHTING, id); break; case ID_BR: - WM_event_add_notifier(C, NC_BRUSH, id); + WM_main_add_notifier(NC_BRUSH, id); break; } } diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 1bb7fe720a6..d33e96df2e6 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -145,7 +145,7 @@ static void rna_Panel_unregister(const bContext *C, StructRNA *type) /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); } static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) @@ -196,7 +196,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); return pt->ext.srna; } @@ -242,7 +242,7 @@ static void rna_Header_unregister(const bContext *C, StructRNA *type) /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); } static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) @@ -289,7 +289,7 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); return ht->ext.srna; } @@ -356,7 +356,7 @@ static void rna_Menu_unregister(const bContext *C, StructRNA *type) /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); } static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) @@ -396,7 +396,7 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void /* update while blender is running */ if(C) - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); return mt->ext.srna; } diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 278d7855f3a..2424a72b6a3 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -48,9 +48,9 @@ #include "DNA_object_types.h" // #include "GPU_draw.h" -static void rna_userdef_update(bContext *C, PointerRNA *ptr) +static void rna_userdef_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - WM_event_add_notifier(C, NC_WINDOW, NULL); + WM_main_add_notifier(NC_WINDOW, NULL); } #if 0 @@ -132,14 +132,13 @@ static PointerRNA rna_UserDef_system_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesSystem, ptr->data); } -static void rna_UserDef_audio_update(bContext *C, PointerRNA *ptr) +static void rna_UserDef_audio_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - sound_init(C); + sound_init(); } -static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr) +static void rna_UserDef_weight_color_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Main *bmain= CTX_data_main(C); Object *ob; vDM_ColorBand_store((U.flag & USER_CUSTOM_RANGE) ? (&U.coba_weight):NULL); @@ -149,22 +148,25 @@ static void rna_UserDef_weight_color_update(bContext *C, PointerRNA *ptr) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } - rna_userdef_update(C, ptr); + rna_userdef_update(bmain, scene, ptr); } // XXX - todo, this is not accessible from here and it only works when the userprefs are in the same window. // extern int GPU_default_lights(void); -static void rna_UserDef_viewport_lights_update(bContext *C, PointerRNA *ptr) +static void rna_UserDef_viewport_lights_update(Main *bmain, Scene *scene, PointerRNA *ptr) { // GPU_default_lights(); - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL); - rna_userdef_update(C, ptr); + WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D, NULL); + rna_userdef_update(bmain, scene, ptr); } -static void rna_userdef_autosave_update(bContext *C, PointerRNA *ptr) +static void rna_userdef_autosave_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - WM_autosave_init(C); - rna_userdef_update(C, ptr); + wmWindowManager *wm= bmain->wm.first; + + if(wm) + WM_autosave_init(wm); + rna_userdef_update(bmain, scene, ptr); } #else diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index f58f14ec928..d3e0d166755 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -348,13 +348,13 @@ static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value) win->newscreen= value.data; } -static void rna_Window_screen_update(bContext *C, PointerRNA *ptr) +static void rna_Window_screen_update(Main *bmain, Scene *scene, PointerRNA *ptr) { wmWindow *win= (wmWindow*)ptr->data; /* exception: can't set screens inside of area/region handers */ if(win->newscreen) { - WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, win->newscreen); + WM_main_add_notifier(NC_SCREEN|ND_SCREENBROWSE, win->newscreen); win->newscreen= NULL; } } diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index 231faffef0f..4046fc266da 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -82,20 +82,20 @@ static void rna_World_active_texture_set(PointerRNA *ptr, PointerRNA value) set_current_world_texture(wo, value.data); } -static void rna_World_update(bContext *C, PointerRNA *ptr) +static void rna_World_update(Main *bmain, Scene *scene, PointerRNA *ptr) { World *wo= ptr->id.data; DAG_id_flush_update(&wo->id, 0); - WM_event_add_notifier(C, NC_WORLD, wo); + WM_main_add_notifier(NC_WORLD, wo); } -static void rna_World_draw_update(bContext *C, PointerRNA *ptr) +static void rna_World_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr) { World *wo= ptr->id.data; DAG_id_flush_update(&wo->id, 0); - WM_event_add_notifier(C, NC_WORLD|ND_WORLD_DRAW, wo); + WM_main_add_notifier(NC_WORLD|ND_WORLD_DRAW, wo); } #else diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 1fab234dbf7..84f41b4e4e0 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -74,7 +74,7 @@ int WM_write_homefile (struct bContext *C, struct wmOperator *op); void WM_read_file (struct bContext *C, char *name, struct ReportList *reports); void WM_write_file (struct bContext *C, char *target, int fileflags, struct ReportList *reports); void WM_read_autosavefile(struct bContext *C); -void WM_autosave_init (struct bContext *C); +void WM_autosave_init (struct wmWindowManager *wm); /* mouse cursors */ void WM_cursor_set (struct wmWindow *win, int curs); diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index d455c8b2bc1..ee1d76020c2 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -213,7 +213,7 @@ void WM_check(bContext *C) /* case: fileread */ if((wm->initialized & WM_INIT_WINDOW) == 0) { WM_keymap_init(C); - WM_autosave_init(C); + WM_autosave_init(wm); } /* case: no open windows at all, for old file reads */ diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index ba514f097e6..81666fbe023 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -569,9 +569,8 @@ void wm_autosave_location(char *filename) BLI_make_file_string("/", filename, U.tempdir, pidstr); } -void WM_autosave_init(bContext *C) +void WM_autosave_init(wmWindowManager *wm) { - wmWindowManager *wm= CTX_wm_manager(C); wm_autosave_timer_ended(wm); if(U.flag & USER_AUTOSAVE) -- cgit v1.2.3 From 278fc187cf09a7dda1332a469369d97db670f54a Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 8 Dec 2009 17:37:31 +0000 Subject: Image Paint keymap in image editor wasn't looked up with the space type. --- source/blender/editors/space_image/space_image.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 2751edfcb43..2f839feeb36 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -391,7 +391,7 @@ static void image_main_area_init(wmWindowManager *wm, ARegion *ar) // UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy); /* image paint polls for mode */ - keymap= WM_keymap_find(wm->defaultconf, "Image Paint", SPACE_IMAGE, 0); + keymap= WM_keymap_find(wm->defaultconf, "Image Paint", 0, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); keymap= WM_keymap_find(wm->defaultconf, "UVEdit", 0, 0); -- cgit v1.2.3 From 1b3a295e4f11ab2837bceb6aea5bacdc02e648d0 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 8 Dec 2009 18:02:50 +0000 Subject: RNA functions to find keymaps in a keyconfig (from the usual idname + space or modal keymaps from operator id) --- source/blender/makesrna/intern/rna_wm_api.c | 29 +++++++++++++++++++++++++ source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_keymap.c | 18 +++++++-------- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index ce26072e91b..2fbcd2f4ae3 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -52,6 +52,21 @@ static wmKeyMap *rna_keymap_add(wmKeyConfig *keyconf, char *idname, int spaceid, } } +static wmKeyMap *rna_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid) +{ + return WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid); +} + +static wmKeyMap *rna_keymap_find_modal(wmKeyConfig *keyconf, char *idname) +{ + wmOperatorType *ot = WM_operatortype_find(idname, 0); + + if (!ot) + return NULL; + else + return ot->modalkeymap; +} + static wmKeyMap *rna_keymap_active(wmKeyMap *km, bContext *C) { wmWindowManager *wm = CTX_wm_manager(C); @@ -175,6 +190,20 @@ void RNA_api_keyconfig(StructRNA *srna) RNA_def_boolean(func, "modal", 0, "Modal", ""); parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map."); RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "find_keymap", "rna_keymap_find"); + parm= RNA_def_string(func, "name", "", 0, "Name", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_enum(func, "space_type", space_type_items, SPACE_EMPTY, "Space Type", ""); + RNA_def_enum(func, "region_type", region_type_items, RGN_TYPE_WINDOW, "Region Type", ""); + parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "find_keymap_modal", "rna_keymap_find_modal"); + parm= RNA_def_string(func, "name", "", 0, "Operator Name", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map."); + RNA_def_function_return(func, parm); } void RNA_api_keymap(StructRNA *srna) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 84f41b4e4e0..66ede3f6ba6 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -108,6 +108,7 @@ void WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len); wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid); +wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid); wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap); int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap); wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap); diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index b22f01b7d7a..fe5b42a1841 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -229,7 +229,7 @@ void WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi) space/region ids are same as DNA_space_types.h */ /* gets free'd in wm.c */ -static wmKeyMap *wm_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid) +wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid) { wmKeyMap *km; @@ -243,7 +243,7 @@ static wmKeyMap *wm_keymap_list_find(ListBase *lb, char *idname, int spaceid, in wmKeyMap *WM_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid) { - wmKeyMap *km= wm_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid); + wmKeyMap *km= WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid); if(km==NULL) { km= MEM_callocN(sizeof(struct wmKeyMap), "keymap list"); @@ -455,7 +455,7 @@ int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap) /* init from user key config */ keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr); if(keyconf) { - km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(km) { keymap->poll= km->poll; /* lazy init */ keymap->modal_items= km->modal_items; @@ -464,7 +464,7 @@ int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap) } /* or from default */ - km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(km) { keymap->poll= km->poll; /* lazy init */ keymap->modal_items= km->modal_items; @@ -483,7 +483,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap) return NULL; /* first user defined keymaps */ - km= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + km= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(km) { km->poll= keymap->poll; /* lazy init */ km->modal_items= keymap->modal_items; @@ -493,7 +493,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap) /* then user key config */ keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr); if(keyconf) { - km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(km) { km->poll= keymap->poll; /* lazy init */ km->modal_items= keymap->modal_items; @@ -502,7 +502,7 @@ wmKeyMap *WM_keymap_active(wmWindowManager *wm, wmKeyMap *keymap) } /* then use default */ - km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); return km; } @@ -511,7 +511,7 @@ wmKeyMap *WM_keymap_copy_to_user(wmKeyMap *keymap) wmKeyMap *usermap; wmKeyMapItem *kmi; - usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(!usermap) { /* not saved yet, duplicate existing */ @@ -549,7 +549,7 @@ void WM_keymap_restore_to_default(wmKeyMap *keymap) { wmKeyMap *usermap; - usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid); if(usermap) { WM_keymap_free(usermap); -- cgit v1.2.3 From 445e4c9a8cbe3701ec784fa2f3aa16edc82c6971 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 18:09:08 +0000 Subject: Sequencer: comment out unimplemented operator to avoid error print. --- release/scripts/ui/space_sequencer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index bb6bd1dc04c..026161e23c6 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -223,7 +223,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator("sequencer.effect_reassign_inputs") elif stype == 'IMAGE': layout.separator() - layout.operator("sequencer.image_change") + # layout.operator("sequencer.image_change") layout.operator("sequencer.rendersize") elif stype == 'SCENE': layout.separator() -- cgit v1.2.3 From 7e333010f3b76a467b88e80605df55b8f559bcda Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 18:28:09 +0000 Subject: Animation System: Handling Updates * Added ANIM_list_elem_update and ANIM_id_update functions to call when changing animation curves, which will then call the RNA property update functions for those curves. This is to replace just calling DAG_id_flush_update, that may not always be the right thing to do, and doesn't send proper notifiers for redraw. Still only used/usable when transforming in the graph editor, not sure how this do this with NLA for example, .. needs to be improved. * Added function wm_data_handle_update function to contain the object update function, and also added scene animation update there. Actually it should be doing all datablocks, this makes it work for sequencer. Joshua, do you agree this is the right direction to go in? I can revert or change the code if you think it should be done differently. Mainly wanted to get this working well for sequencer now. --- source/blender/editors/animation/anim_deps.c | 58 ++++++++++++++++++++++ source/blender/editors/include/ED_anim_api.h | 3 ++ .../blender/editors/transform/transform_generics.c | 23 ++------- .../blender/windowmanager/intern/wm_event_system.c | 56 ++++++++++++++------- 4 files changed, 102 insertions(+), 38 deletions(-) diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 7a96c3b32a3..0e81dab380c 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -32,6 +32,7 @@ #include "MEM_guardedalloc.h" #include "DNA_action_types.h" +#include "DNA_anim_types.h" #include "DNA_armature_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -39,8 +40,10 @@ #include "BLI_blenlib.h" #include "BKE_action.h" +#include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_depsgraph.h" +#include "BKE_global.h" #include "BKE_main.h" #include "BKE_scene.h" #include "BKE_screen.h" @@ -55,6 +58,61 @@ #include "WM_api.h" #include "WM_types.h" +/* tags the given anim list element for refreshes (if applicable) + * due to Animation Editor editing */ +void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) +{ + ID *id; + FCurve *fcu; + AnimData *adt; + + id= ale->id; + if(!id) + return; + + /* tag AnimData for refresh so that other views will update in realtime with these changes */ + adt= BKE_animdata_from_id(id); + if(adt) + adt->recalc |= ADT_RECALC_ANIM; + + /* update data */ + fcu= (ale->datatype == ALE_FCURVE)? ale->key_data: NULL; + + if(fcu && fcu->rna_path) { + /* if we have an fcurve, call the update for the property we + are editing, this is then expected to do the proper redraws + and depsgraph updates */ + PointerRNA id_ptr, ptr; + PropertyRNA *prop; + + RNA_id_pointer_create(id, &id_ptr); + + if(RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop)) + RNA_property_update_main(G.main, scene, &ptr, prop); + } + 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? + } +} + +/* tags the given ID block for refreshes (if applicable) due to + * Animation Editor editing */ +void ANIM_id_update(Scene *scene, ID *id) +{ + if(id) { + AnimData *adt= BKE_animdata_from_id(id); + + /* tag AnimData for refresh so that other views will update in realtime with these changes */ + if (adt) + adt->recalc |= ADT_RECALC_ANIM; + + /* set recalc flags */ + DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? + } +} + /* **************************** pose <-> action syncing ******************************** */ /* Summary of what needs to be synced between poses and actions: * 1) Flags diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index c9c4c7af18c..9989589cf23 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -496,6 +496,9 @@ void ED_nla_postop_refresh(bAnimContext *ac); /* --------- anim_deps.c, animation updates -------- */ +void ANIM_id_update(struct Scene *scene, struct ID *id); +void ANIM_list_elem_update(struct Scene *scene, bAnimListElem *ale); + /* pose <-> action syncing */ void ANIM_action_to_pose_sync(struct Object *ob); void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 0340475a1d1..7951b002174 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -273,23 +273,6 @@ static void editmesh_apply_to_mirror(TransInfo *t) } } -/* tags the given ID block for refreshes (if applicable) due to - * Animation Editor editing - */ -static void animedit_refresh_id_tags (Scene *scene, ID *id) -{ - if (id) { - AnimData *adt= BKE_animdata_from_id(id); - - /* tag AnimData for refresh so that other views will update in realtime with these changes */ - if (adt) - adt->recalc |= ADT_RECALC_ANIM; - - /* set recalc flags */ - DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? - } -} - /* for the realtime animation recording feature, handle overlapping data */ static void animrecord_check_state (Scene *scene, ID *id, wmTimer *animtimer) { @@ -378,7 +361,7 @@ void recalcData(TransInfo *t) /* just tag these animdata-blocks to recalc, assuming that some data there changed */ for (ale= anim_data.first; ale; ale= ale->next) { /* set refresh tags for objects using this animation */ - animedit_refresh_id_tags(t->scene, ale->id); + ANIM_list_elem_update(t->scene, ale); } /* now free temp channels */ @@ -426,7 +409,7 @@ void recalcData(TransInfo *t) calchandles_fcurve(fcu); /* set refresh tags for objects using this animation */ - animedit_refresh_id_tags(t->scene, ale->id); + ANIM_list_elem_update(t->scene, ale); } /* do resort and other updates? */ @@ -457,7 +440,7 @@ void recalcData(TransInfo *t) continue; /* set refresh tags for objects using this animation */ - animedit_refresh_id_tags(t->scene, tdn->id); + ANIM_id_update(t->scene, tdn->id); /* if cancelling transform, just write the values without validating, then move on */ if (t->state == TRANS_CANCEL) { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 8e187eea93c..76ab00e19a5 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -29,6 +29,7 @@ #include #include +#include "DNA_anim_types.h" #include "DNA_listBase.h" #include "DNA_screen_types.h" #include "DNA_scene_types.h" @@ -41,6 +42,7 @@ #include "BLI_blenlib.h" +#include "BKE_animsys.h" #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_idprop.h" @@ -147,6 +149,40 @@ static wmNotifier *wm_notifier_next(wmWindowManager *wm) return note; } +static void wm_data_handle_update(Scene *scene) +{ + Scene *sce; + Base *base; + + /* XXX make lock in future, or separated derivedmesh users in scene */ + if(G.rendering) + return; + + /* update all objects, drivers, matrices, displists, etc. Flags set by depgraph or manual, + no layer check here, gets correct flushed */ + /* sets first, we allow per definition current scene to have dependencies on sets */ + if(scene->set) { + for(SETLOOPER(scene->set, base)) + object_handle_update(scene, base->object); + } + + for(base= scene->base.first; base; base= base->next) { + object_handle_update(scene, base->object); + } + + /* recalc scene animation data here (for sequencer). actually + this should be doing all datablocks including e.g. materials, + but for now this solves some update issues - brecht. */ + { + AnimData *adt= BKE_animdata_from_id(&scene->id); + + if(adt && (adt->recalc & ADT_RECALC_ANIM)) + BKE_animsys_evaluate_animdata(&scene->id, adt, scene->r.cfra, 0); + } + + BKE_ptcache_quick_cache_all(scene); +} + /* called in mainloop */ void wm_event_do_notifiers(bContext *C) { @@ -246,9 +282,7 @@ void wm_event_do_notifiers(bContext *C) /* cached: editor refresh callbacks now, they get context */ for(win= wm->windows.first; win; win= win->next) { - Scene *sce, *scene= win->screen->scene; ScrArea *sa; - Base *base; CTX_wm_window_set(C, win); for(sa= win->screen->areabase.first; sa; sa= sa->next) { @@ -258,23 +292,9 @@ void wm_event_do_notifiers(bContext *C) } } - if(G.rendering==0) { // XXX make lock in future, or separated derivedmesh users in scene - - /* update all objects, drivers, matrices, displists, etc. Flags set by depgraph or manual, - no layer check here, gets correct flushed */ - /* sets first, we allow per definition current scene to have dependencies on sets */ - if(scene->set) { - for(SETLOOPER(scene->set, base)) - object_handle_update(scene, base->object); - } - - for(base= scene->base.first; base; base= base->next) { - object_handle_update(scene, base->object); - } - - BKE_ptcache_quick_cache_all(scene); - } + wm_data_handle_update(win->screen->scene); } + CTX_wm_window_set(C, NULL); } -- cgit v1.2.3 From 1c9da5fe2c6f2ff9c294947805d313718db176f6 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Tue, 8 Dec 2009 19:08:35 +0000 Subject: 2.5 User Preferences: * Massive Code Cleanup, still not "Layout Code Guidelines" conform, but much better. * Commented out buttons that don't work yet, like translation buttons. * Some minor shuffling around of buttons in "System" Tab. William: Feel free to modify that, still some room for improvements. :) --- release/scripts/ui/space_userpref.py | 1047 +++++++++++++++++----------------- 1 file changed, 523 insertions(+), 524 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 5a8dbf9ee80..bf232116bb6 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -37,13 +37,6 @@ class USERPREF_HT_header(bpy.types.Header): layout.operator("wm.keyconfig_export", "Export Key Configuration...").path = "keymap.py" -class USERPREF_MT_view(bpy.types.Menu): - bl_label = "View" - - def draw(self, context): - pass # layout = self.layout - - class USERPREF_PT_tabs(bpy.types.Panel): bl_label = "" bl_space_type = 'USER_PREFERENCES' @@ -76,72 +69,75 @@ class USERPREF_PT_interface(bpy.types.Panel): split = layout.split() - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.label(text="Display:") - sub1.prop(view, "tooltips") - sub1.prop(view, "display_object_info", text="Object Info") - sub1.prop(view, "use_large_cursors") - sub1.prop(view, "show_view_name", text="View Name") - sub1.prop(view, "show_playback_fps", text="Playback FPS") - sub1.prop(view, "global_scene") - sub1.prop(view, "pin_floating_panels") - sub1.prop(view, "object_origin_size") - sub1.separator() - sub1.separator() - sub1.separator() - sub1.prop(view, "show_mini_axis", text="Display Mini Axis") - sub2 = sub1.column() - sub2.enabled = view.show_mini_axis - sub2.prop(view, "mini_axis_size", text="Size") - sub2.prop(view, "mini_axis_brightness", text="Brightness") + column = split.column() + colsplit = column.split(percentage=0.85) - col = split.column() - sub = col.split(percentage=0.85) + col = colsplit.column() + col.label(text="Display:") + col.prop(view, "tooltips") + col.prop(view, "display_object_info", text="Object Info") + col.prop(view, "use_large_cursors") + col.prop(view, "show_view_name", text="View Name") + col.prop(view, "show_playback_fps", text="Playback FPS") + col.prop(view, "global_scene") + col.prop(view, "pin_floating_panels") + col.prop(view, "object_origin_size") - sub1 = sub.column() - sub1.label(text="View Manipulation:") - sub1.prop(view, "auto_depth") - sub1.prop(view, "global_pivot") - sub1.prop(view, "zoom_to_mouse") - sub1.prop(view, "rotate_around_selection") - sub1.separator() + col.separator() + col.separator() + col.separator() + col.prop(view, "show_mini_axis", text="Display Mini Axis") + sub = col.column() + sub.enabled = view.show_mini_axis + sub.prop(view, "mini_axis_size", text="Size") + sub.prop(view, "mini_axis_brightness", text="Brightness") - sub1.prop(view, "auto_perspective") - sub1.prop(view, "smooth_view") - sub1.prop(view, "rotation_angle") + column = split.column() + colsplit = column.split(percentage=0.85) - col = split.column() - sub = col.split(percentage=0.85) - sub1 = sub.column() + col = colsplit.column() + col.label(text="View Manipulation:") + col.prop(view, "auto_depth") + col.prop(view, "global_pivot") + col.prop(view, "zoom_to_mouse") + col.prop(view, "rotate_around_selection") -#Toolbox doesn't exist yet -# sub1.label(text="Toolbox:") -# sub1.prop(view, "use_column_layout") -# sub1.label(text="Open Toolbox Delay:") -# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB") -# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB") + col.separator() - #manipulator - sub1.prop(view, "use_manipulator") - sub2 = sub1.column() - sub2.enabled = view.use_manipulator - sub2.prop(view, "manipulator_size", text="Size") - sub2.prop(view, "manipulator_handle_size", text="Handle Size") - sub2.prop(view, "manipulator_hotspot", text="Hotspot") + col.prop(view, "auto_perspective") + col.prop(view, "smooth_view") + col.prop(view, "rotation_angle") + + column = split.column() + colsplit = column.split(percentage=0.85) + + col = colsplit.column() + + #Toolbox doesn't exist yet + #col.label(text="Toolbox:") + #col.prop(view, "use_column_layout") + #col.label(text="Open Toolbox Delay:") + #col.prop(view, "open_left_mouse_delay", text="Hold LMB") + #col.prop(view, "open_right_mouse_delay", text="Hold RMB") + + #Manipulator + col.prop(view, "use_manipulator") + sub = col.column() + sub.enabled = view.use_manipulator + sub.prop(view, "manipulator_size", text="Size") + sub.prop(view, "manipulator_handle_size", text="Handle Size") + sub.prop(view, "manipulator_hotspot", text="Hotspot") - sub1.separator() - sub1.separator() - sub1.separator() + col.separator() + col.separator() + col.separator() - sub1.label(text="Menus:") - sub1.prop(view, "open_mouse_over") - sub1.label(text="Menu Open Delay:") - sub1.prop(view, "open_toplevel_delay", text="Top Level") - sub1.prop(view, "open_sublevel_delay", text="Sub Level") + col.label(text="Menus:") + col.prop(view, "open_mouse_over") + col.label(text="Menu Open Delay:") + col.prop(view, "open_toplevel_delay", text="Top Level") + col.prop(view, "open_sublevel_delay", text="Sub Level") class USERPREF_PT_edit(bpy.types.Panel): @@ -162,91 +158,100 @@ class USERPREF_PT_edit(bpy.types.Panel): split = layout.split() - col = split.column() - sub = col.split(percentage=0.85) + column = split.column() + colsplit = column.split(percentage=0.85) - sub1 = sub.column() - sub1.label(text="Link Materials To:") - sub1.row().prop(edit, "material_link", expand=True) - sub1.separator() - sub1.separator() - sub1.separator() - sub1.label(text="New Objects:") - sub1.prop(edit, "enter_edit_mode") - sub1.label(text="Align To:") - sub1.row().prop(edit, "object_align", expand=True) - sub1.separator() - sub1.separator() - sub1.separator() - - sub1.label(text="Undo:") - sub1.prop(edit, "global_undo") - sub1.prop(edit, "undo_steps", text="Steps") - sub1.prop(edit, "undo_memory_limit", text="Memory Limit") + col = colsplit.column() + col.label(text="Link Materials To:") + col.row().prop(edit, "material_link", expand=True) - col = split.column() - sub = col.split(percentage=0.85) + col.separator() + col.separator() + col.separator() - sub1 = sub.column() - sub1.label(text="Snap:") - sub1.prop(edit, "snap_translate", text="Translate") - sub1.prop(edit, "snap_rotate", text="Rotate") - sub1.prop(edit, "snap_scale", text="Scale") - sub1.separator() - sub1.separator() - sub1.separator() - sub1.label(text="Grease Pencil:") - sub1.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") - sub1.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") - # sub1.prop(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") - sub1.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") - sub1.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") + col.label(text="New Objects:") + col.prop(edit, "enter_edit_mode") + col.label(text="Align To:") + col.row().prop(edit, "object_align", expand=True) + + col.separator() + col.separator() + col.separator() - col = split.column() - sub = col.split(percentage=0.85) + col.label(text="Undo:") + col.prop(edit, "global_undo") + col.prop(edit, "undo_steps", text="Steps") + col.prop(edit, "undo_memory_limit", text="Memory Limit") - sub1 = sub.column() - sub1.label(text="Keyframing:") - sub1.prop(edit, "use_visual_keying") - sub1.prop(edit, "keyframe_insert_needed", text="Only Insert Needed") - sub1.separator() - sub1.label(text="New F-Curve Defaults:") - sub1.prop(edit, "new_interpolation_type", text="Interpolation") - sub1.separator() - sub1.prop(edit, "auto_keying_enable", text="Auto Keyframing:") - sub2 = sub1.column() - sub2.active = edit.auto_keying_enable - sub2.prop(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") - sub2.prop(edit, "auto_keyframe_insert_available", text="Only Insert Available") - - sub1.separator() - sub1.separator() - sub1.separator() - - sub1.label(text="Transform:") - sub1.prop(edit, "drag_immediately") - - sub1.separator() - sub1.separator() - sub1.separator() + column = split.column() + colsplit = column.split(percentage=0.85) - col = split.column() - sub = col.split(percentage=0.85) + col = colsplit.column() + col.label(text="Snap:") + col.prop(edit, "snap_translate", text="Translate") + col.prop(edit, "snap_rotate", text="Rotate") + col.prop(edit, "snap_scale", text="Scale") + col.separator() + col.separator() + col.separator() + col.label(text="Grease Pencil:") + col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") + col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") + #col.prop(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") + col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") + col.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") - sub1 = sub.column() - sub1.label(text="Duplicate Data:") - sub1.prop(edit, "duplicate_mesh", text="Mesh") - sub1.prop(edit, "duplicate_surface", text="Surface") - sub1.prop(edit, "duplicate_curve", text="Curve") - sub1.prop(edit, "duplicate_text", text="Text") - sub1.prop(edit, "duplicate_metaball", text="Metaball") - sub1.prop(edit, "duplicate_armature", text="Armature") - sub1.prop(edit, "duplicate_lamp", text="Lamp") - sub1.prop(edit, "duplicate_material", text="Material") - sub1.prop(edit, "duplicate_texture", text="Texture") - sub1.prop(edit, "duplicate_fcurve", text="F-Curve") - sub1.prop(edit, "duplicate_action", text="Action") - sub1.prop(edit, "duplicate_particle", text="Particle") + column = split.column() + colsplit = column.split(percentage=0.85) + + col = colsplit.column() + col.label(text="Keyframing:") + col.prop(edit, "use_visual_keying") + col.prop(edit, "keyframe_insert_needed", text="Only Insert Needed") + + col.separator() + + col.label(text="New F-Curve Defaults:") + col.prop(edit, "new_interpolation_type", text="Interpolation") + + col.separator() + + col.prop(edit, "auto_keying_enable", text="Auto Keyframing:") + + sub = col.column() + + sub.active = edit.auto_keying_enable + sub.prop(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") + sub.prop(edit, "auto_keyframe_insert_available", text="Only Insert Available") + + col.separator() + col.separator() + col.separator() + + col.label(text="Transform:") + col.prop(edit, "drag_immediately") + + col.separator() + col.separator() + col.separator() + + column = split.column() + colsplit = column.split(percentage=0.85) + + col = colsplit.column() + col.label(text="Duplicate Data:") + col.prop(edit, "duplicate_mesh", text="Mesh") + col.prop(edit, "duplicate_surface", text="Surface") + col.prop(edit, "duplicate_curve", text="Curve") + col.prop(edit, "duplicate_text", text="Text") + col.prop(edit, "duplicate_metaball", text="Metaball") + col.prop(edit, "duplicate_armature", text="Armature") + col.prop(edit, "duplicate_lamp", text="Lamp") + col.prop(edit, "duplicate_material", text="Material") + col.prop(edit, "duplicate_texture", text="Texture") + col.prop(edit, "duplicate_fcurve", text="F-Curve") + col.prop(edit, "duplicate_action", text="Action") + col.prop(edit, "duplicate_particle", text="Particle") class USERPREF_PT_system(bpy.types.Panel): @@ -270,106 +275,109 @@ class USERPREF_PT_system(bpy.types.Panel): split = layout.split() - col = split.column() - sub = col.split(percentage=0.9) + column = split.column() + colsplit = column.split(percentage=0.85) - sub1 = sub.column() - sub1.label(text="General:") - sub1.prop(system, "dpi") - sub1.prop(system, "frame_server_port") - sub1.prop(system, "scrollback", text="Console Scrollback") - sub1.prop(system, "auto_run_python_scripts") - - sub1.separator() - sub1.separator() - sub1.separator() - - sub1.label(text="Sound:") - sub1.row().prop(system, "audio_device", expand=True) - sub2 = sub1.column() - sub2.active = system.audio_device != 'NONE' - sub2.prop(system, "enable_all_codecs") - sub2.prop(system, "game_sound") - sub2.prop(system, "audio_channels", text="Channels") - sub2.prop(system, "audio_mixing_buffer", text="Mixing Buffer") - sub2.prop(system, "audio_sample_rate", text="Sample Rate") - sub2.prop(system, "audio_sample_format", text="Sample Format") + col = colsplit.column() + col.label(text="General:") + col.prop(system, "dpi") + col.prop(system, "frame_server_port") + col.prop(system, "scrollback", text="Console Scrollback") + col.prop(system, "auto_run_python_scripts") - col = split.column() - sub = col.split(percentage=0.9) - - sub1 = sub .column() - sub1.label(text="Weight Colors:") - sub1.prop(system, "use_weight_color_range", text="Use Custom Range") - sub2 = sub1.column() - sub2.active = system.use_weight_color_range - sub2.template_color_ramp(system, "weight_color_range", expand=True) - - sub1.separator() - sub1.separator() - sub1.separator() + col.separator() + col.separator() + col.separator() - sub1.prop(system, "language") - sub1.label(text="Translate:") - sub1.prop(system, "translate_tooltips", text="Tooltips") - sub1.prop(system, "translate_buttons", text="Labels") - sub1.prop(system, "translate_toolbox", text="Toolbox") + col.label(text="Sound:") + col.row().prop(system, "audio_device", expand=True) + sub = col.column() + sub.active = system.audio_device != 'NONE' + #sub.prop(system, "enable_all_codecs") + sub.prop(system, "game_sound") + sub.prop(system, "audio_channels", text="Channels") + sub.prop(system, "audio_mixing_buffer", text="Mixing Buffer") + sub.prop(system, "audio_sample_rate", text="Sample Rate") + sub.prop(system, "audio_sample_format", text="Sample Format") + + col.separator() + col.separator() + col.separator() + + col.label(text="Weight Colors:") + col.prop(system, "use_weight_color_range", text="Use Custom Range") + sub = col.column() + sub.active = system.use_weight_color_range + sub.template_color_ramp(system, "weight_color_range", expand=True) - sub1.separator() + #column = split.column() + #colsplit = column.split(percentage=0.85) - sub1.prop(system, "use_textured_fonts") + # No translation in 2.5 yet + #col.prop(system, "language") + #col.label(text="Translate:") + #col.prop(system, "translate_tooltips", text="Tooltips") + #col.prop(system, "translate_buttons", text="Labels") + #col.prop(system, "translate_toolbox", text="Toolbox") - col = split.column() - sub = col.split(percentage=0.9) + #col.separator() - sub1 = sub.column() + #col.prop(system, "use_textured_fonts") - sub1.label(text="Solid OpenGL lights:") + column = split.column() + colsplit = column.split(percentage=0.85) - sub2 = sub1.split() + col1 = colsplit.column() + col1.label(text="Solid OpenGL lights:") + + col = col1.split() - col = sub2.column() - col.prop(lamp0, "enabled") sub = col.column() - sub.active = lamp0.enabled - sub.prop(lamp0, "diffuse_color") - sub.prop(lamp0, "specular_color") - sub.prop(lamp0, "direction") + sub.prop(lamp0, "enabled") + subsub = sub.column() + subsub.active = lamp0.enabled + subsub.prop(lamp0, "diffuse_color") + subsub.prop(lamp0, "specular_color") + subsub.prop(lamp0, "direction") - col = sub2.column() - col.prop(lamp1, "enabled") sub = col.column() - sub.active = lamp1.enabled - sub.prop(lamp1, "diffuse_color") - sub.prop(lamp1, "specular_color") - sub.prop(lamp1, "direction") + sub.prop(lamp1, "enabled") + subsub = sub.column() + subsub.active = lamp1.enabled + subsub.prop(lamp1, "diffuse_color") + subsub.prop(lamp1, "specular_color") + subsub.prop(lamp1, "direction") - col = sub2.column() - col.prop(lamp2, "enabled") sub = col.column() - sub.active = lamp2.enabled - sub.prop(lamp2, "diffuse_color") - sub.prop(lamp2, "specular_color") - sub.prop(lamp2, "direction") - - sub1.label(text="OpenGL:") - sub1.prop(system, "clip_alpha", slider=True) - sub1.prop(system, "use_mipmaps") - sub1.prop(system, "use_vbos") - sub1.label(text="Window Draw Method:") - sub1.row().prop(system, "window_draw_method", expand=True) - sub1.label(text="Textures:") - sub1.prop(system, "gl_texture_limit", text="Limit Size") - sub1.prop(system, "texture_time_out", text="Time Out") - sub1.prop(system, "texture_collection_rate", text="Collection Rate") - - sub1.separator() - sub1.separator() - sub1.separator() - - sub1.label(text="Sequencer:") - sub1.prop(system, "prefetch_frames") - sub1.prop(system, "memory_cache_limit") + sub.prop(lamp2, "enabled") + subsub = sub.column() + subsub.active = lamp2.enabled + subsub.prop(lamp2, "diffuse_color") + subsub.prop(lamp2, "specular_color") + subsub.prop(lamp2, "direction") + + column = split.column() + colsplit = column.split(percentage=0.85) + + col = colsplit.column() + col.label(text="OpenGL:") + col.prop(system, "clip_alpha", slider=True) + col.prop(system, "use_mipmaps") + col.prop(system, "use_vbos") + col.label(text="Window Draw Method:") + col.row().prop(system, "window_draw_method", expand=True) + col.label(text="Textures:") + col.prop(system, "gl_texture_limit", text="Limit Size") + col.prop(system, "texture_time_out", text="Time Out") + col.prop(system, "texture_collection_rate", text="Collection Rate") + + col.separator() + col.separator() + col.separator() + + col.label(text="Sequencer:") + col.prop(system, "prefetch_frames") + col.prop(system, "memory_cache_limit") class USERPREF_PT_theme(bpy.types.Panel): @@ -380,7 +388,6 @@ class USERPREF_PT_theme(bpy.types.Panel): def poll(self, context): userpref = context.user_preferences - return (userpref.active_section == 'THEMES') def draw(self, context): @@ -388,7 +395,6 @@ class USERPREF_PT_theme(bpy.types.Panel): theme = context.user_preferences.themes[0] - split = layout.split(percentage=0.33) split.prop(theme, "active_theme", text="") @@ -413,7 +419,6 @@ class USERPREF_PT_theme(bpy.types.Panel): col.prop(v3d, "editmesh_active", slider=True) col = split.column() - col.prop(v3d, "object_selected") col.prop(v3d, "object_active") col.prop(v3d, "object_grouped") @@ -426,327 +431,326 @@ class USERPREF_PT_theme(bpy.types.Panel): col.prop(v3d, "normal") col.prop(v3d, "bone_solid") col.prop(v3d, "bone_pose") + #col.prop(v3d, "edge") Doesn't seem to work -# col.prop(v3d, "edge") Doesn't seem to work elif theme.active_theme == 'USER_INTERFACE': - ui = theme.user_interface.wcol_regular - layout.label(text="Regular:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") + layout.separator() ui = theme.user_interface.wcol_tool layout.label(text="Tool:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_radio layout.label(text="Radio Buttons:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_text layout.label(text="Text:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_option layout.label(text="Option:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_toggle layout.label(text="Toggle:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_num layout.label(text="Number Field:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_numslider layout.label(text="Value Slider:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_box layout.label(text="Box:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu layout.label(text="Menu:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_pulldown layout.label(text="Pulldown:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu_back layout.label(text="Menu Back:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_menu_item layout.label(text="Menu Item:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_scroll layout.label(text="Scroll Bar:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_list_item layout.label(text="List Item:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "outline") - sub1.prop(ui, "item", slider=True) - sub1 = sub.column() - sub1.prop(ui, "inner", slider=True) - sub1.prop(ui, "inner_sel", slider=True) - sub1 = sub.column() - sub1.prop(ui, "text") - sub1.prop(ui, "text_sel") - sub1 = sub.column() - sub1.prop(ui, "shaded") - sub2 = sub1.column(align=True) - sub2.active = ui.shaded - sub2.prop(ui, "shadetop") - sub2.prop(ui, "shadedown") + row = layout.row() + sub = row.column() + sub.prop(ui, "outline") + sub.prop(ui, "item", slider=True) + sub = row.column() + sub.prop(ui, "inner", slider=True) + sub.prop(ui, "inner_sel", slider=True) + sub = row.column() + sub.prop(ui, "text") + sub.prop(ui, "text_sel") + sub = row.column() + sub.prop(ui, "shaded") + subsub = sub.column(align=True) + subsub.active = ui.shaded + subsub.prop(ui, "shadetop") + subsub.prop(ui, "shadedown") ui = theme.user_interface.wcol_state layout.label(text="State:") - sub = layout.row() - sub1 = sub.column() - sub1.prop(ui, "inner_anim") - sub1.prop(ui, "inner_anim_sel") - sub1 = sub.column() - sub1.prop(ui, "inner_driven") - sub1.prop(ui, "inner_driven_sel") - sub1 = sub.column() - sub1.prop(ui, "inner_key") - sub1.prop(ui, "inner_key_sel") - sub1 = sub.column() - sub1.prop(ui, "blend") + row = layout.row() + sub = row.column() + sub.prop(ui, "inner_anim") + sub.prop(ui, "inner_anim_sel") + sub = row.column() + sub.prop(ui, "inner_driven") + sub.prop(ui, "inner_driven_sel") + sub = row.column() + sub.prop(ui, "inner_key") + sub.prop(ui, "inner_key_sel") + sub = row.column() + sub.prop(ui, "blend") ui = theme.user_interface layout.separator() @@ -966,7 +970,6 @@ class USERPREF_PT_theme(bpy.types.Panel): col.prop(node, "button_title") col.prop(node, "button_text") - col = split.column() col.prop(node, "text") col.prop(node, "text_hi") @@ -1063,56 +1066,53 @@ class USERPREF_PT_file(bpy.types.Panel): userpref = context.user_preferences paths = userpref.filepaths - split = layout.split(percentage=0.6) + split = layout.split(percentage=0.7) col = split.column() col.label(text="File Paths:") - sub = col.split(percentage=0.3) - + + colsplit = col.split(percentage=0.95) + col1 = colsplit.split(percentage=0.3) + + sub = col1.column() sub.label(text="Fonts:") - sub.prop(paths, "fonts_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Textures:") - sub.prop(paths, "textures_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Texture Plugins:") - sub.prop(paths, "texture_plugin_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Sequence Plugins:") - sub.prop(paths, "sequence_plugin_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Render Output:") - sub.prop(paths, "render_output_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Scripts:") - sub.prop(paths, "python_scripts_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Sounds:") - sub.prop(paths, "sounds_directory", text="") - sub = col.split(percentage=0.3) sub.label(text="Temp:") + + sub = col1.column() + sub.prop(paths, "fonts_directory", text="") + sub.prop(paths, "textures_directory", text="") + sub.prop(paths, "texture_plugin_directory", text="") + sub.prop(paths, "sequence_plugin_directory", text="") + sub.prop(paths, "render_output_directory", text="") + sub.prop(paths, "python_scripts_directory", text="") + sub.prop(paths, "sounds_directory", text="") sub.prop(paths, "temporary_directory", text="") col = split.column() - sub = col.split(percentage=0.2) - sub.column() # sub1, unused - sub2 = sub.column() - sub2.label(text="Save & Load:") - sub2.prop(paths, "use_relative_paths") - sub2.prop(paths, "compress_file") - sub2.prop(paths, "load_ui") - sub2.prop(paths, "filter_file_extensions") - sub2.prop(paths, "hide_dot_files_datablocks") - sub2.separator() - sub2.separator() - sub2.label(text="Auto Save:") - sub2.prop(paths, "save_version") - sub2.prop(paths, "recent_files") - sub2.prop(paths, "save_preview_images") - sub2.prop(paths, "auto_save_temporary_files") - sub3 = sub2.column() - sub3.enabled = paths.auto_save_temporary_files - sub3.prop(paths, "auto_save_time", text="Timer (mins)") + col.label(text="Save & Load:") + col.prop(paths, "use_relative_paths") + col.prop(paths, "compress_file") + col.prop(paths, "load_ui") + col.prop(paths, "filter_file_extensions") + col.prop(paths, "hide_dot_files_datablocks") + + col.separator() + col.separator() + + col.label(text="Auto Save:") + col.prop(paths, "save_version") + col.prop(paths, "recent_files") + col.prop(paths, "save_preview_images") + col.prop(paths, "auto_save_temporary_files") + sub = col.column() + sub.enabled = paths.auto_save_temporary_files + sub.prop(paths, "auto_save_time", text="Timer (mins)") class USERPREF_PT_input(bpy.types.Panel): @@ -1294,7 +1294,6 @@ class USERPREF_PT_input(bpy.types.Panel): itemrow.enabled = km.user_defined bpy.types.register(USERPREF_HT_header) -bpy.types.register(USERPREF_MT_view) bpy.types.register(USERPREF_PT_tabs) bpy.types.register(USERPREF_PT_interface) bpy.types.register(USERPREF_PT_theme) @@ -1465,4 +1464,4 @@ bpy.ops.add(WM_OT_keyconfig_export) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) -bpy.ops.add(WM_OT_keyitem_remove) +bpy.ops.add(WM_OT_keyitem_remove) \ No newline at end of file -- cgit v1.2.3 From 7f580d073443e88086a08b49fd1bea7b9c6774c8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 19:27:19 +0000 Subject: transforming metastrips didnt move effects within them & remove warning --- source/blender/editors/include/ED_armature.h | 21 +++++++++++---------- .../editors/transform/transform_conversions.c | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 74f1f7e3b83..9d35121032c 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -27,22 +27,23 @@ #ifndef ED_ARMATURE_H #define ED_ARMATURE_H -struct bContext; -struct Scene; -struct Object; +struct bArmature; struct Base; +struct bContext; struct Bone; -struct bArmature; struct bPoseChannel; -struct wmOperator; -struct wmKeyConfig; +struct DerivedMesh; +struct IDProperty; struct ListBase; -struct View3D; -struct ViewContext; +struct MeshDeformModifierData; +struct Object; struct RegionView3D; +struct Scene; struct SK_Sketch; -struct IDProperty; -struct MeshDeformModifierData; +struct View3D; +struct ViewContext; +struct wmKeyConfig; +struct wmOperator; typedef struct EditBone { diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 9e154bc4db6..a81c262dd64 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2371,7 +2371,7 @@ void flushTransSeq(TransInfo *t) switch (tdsq->sel_flag) { case SELECT: - if (seq->type != SEQ_META && seq_tx_test(seq)) /* for meta's, their children move */ + if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */ seq->start= new_frame - tdsq->start_offset; if (seq->depth==0) { -- cgit v1.2.3 From 47b4c8357c9bef5dfc57dbe4a7c3fa51b0ef687f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 8 Dec 2009 19:27:30 +0000 Subject: Attempted Bugfix: opengl preview render artifacts, was using wmPush/PopMatrix, but this does not have an actual stack, so using glPush/PopMatrix instead now. --- source/blender/editors/space_view3d/view3d_draw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index e2310a140a6..5a2040a44aa 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1949,7 +1949,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, Base *base; int bwinx, bwiny; - wmPushMatrix(); + glPushMatrix(); /* set temporary new size */ bwinx= ar->winx; @@ -2024,7 +2024,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, ar->winx= bwinx; ar->winy= bwiny; - wmPopMatrix(); + glPopMatrix(); } void view3d_main_area_draw(const bContext *C, ARegion *ar) -- cgit v1.2.3 From 96a5db9a4c21e78e3d7d81c3c0bfa0d16263c4f0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 20:58:23 +0000 Subject: setting and editbone parent to NULL wasnt working --- source/blender/makesrna/intern/rna_armature.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 90bf404083c..bfab46aa11c 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -279,10 +279,6 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value) EditBone *ebone= (EditBone*)(ptr->data); EditBone *pbone, *parbone= (EditBone*)value.data; - /* within same armature */ - if(value.id.data != ptr->id.data) - return; - if(parbone == NULL) { if(ebone->parent && !(ebone->parent->flag & BONE_ROOTSEL)) ebone->parent->flag &= ~BONE_TIPSEL; @@ -291,6 +287,10 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value) ebone->flag &= ~BONE_CONNECTED; } else { + /* within same armature */ + if(value.id.data != ptr->id.data) + return; + /* make sure this is a valid child */ if(parbone == ebone) return; -- cgit v1.2.3 From bee57757025439a6ddf01fd4d4963e33860dae10 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Dec 2009 22:35:03 +0000 Subject: split out driver functions into its own file --- source/blender/python/intern/bpy_driver.c | 237 +++++++++++++++++++++++++++ source/blender/python/intern/bpy_interface.c | 208 ----------------------- 2 files changed, 237 insertions(+), 208 deletions(-) create mode 100644 source/blender/python/intern/bpy_driver.c diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c new file mode 100644 index 00000000000..9acd6b1cd44 --- /dev/null +++ b/source/blender/python/intern/bpy_driver.c @@ -0,0 +1,237 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contributor(s): Willian P. Germano, Campbell Barton + * + * ***** END GPL LICENSE BLOCK ***** + */ +/* ****************************************** */ +/* Drivers - PyExpression Evaluation */ + +#include "DNA_anim_types.h" + +#include "BPY_extern.h" +#include "BKE_fcurve.h" + +#include + +/* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */ +PyObject *bpy_pydriver_Dict = NULL; + +/* For faster execution we keep a special dictionary for pydrivers, with + * the needed modules and aliases. + */ +static int bpy_pydriver_create_dict(void) +{ + PyObject *d, *mod; + + /* validate namespace for driver evaluation */ + if (bpy_pydriver_Dict) return -1; + + d = PyDict_New(); + if (d == NULL) + return -1; + else + bpy_pydriver_Dict = d; + + /* import some modules: builtins, bpy, math, (Blender.noise )*/ + PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins()); + + mod = PyImport_ImportModule("math"); + if (mod) { + PyDict_Merge(d, PyModule_GetDict(mod), 0); /* 0 - dont overwrite existing values */ + + /* Only keep for backwards compat! - just import all math into root, they are standard */ + PyDict_SetItemString(d, "math", mod); + PyDict_SetItemString(d, "m", mod); + Py_DECREF(mod); + } + + /* add bpy to global namespace */ + mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0); + if (mod) { + PyDict_SetItemString(bpy_pydriver_Dict, "bpy", mod); + Py_DECREF(mod); + } + + +#if 0 // non existant yet + mod = PyImport_ImportModule("Blender.Noise"); + if (mod) { + PyDict_SetItemString(d, "noise", mod); + PyDict_SetItemString(d, "n", mod); + Py_DECREF(mod); + } else { + PyErr_Clear(); + } + + /* If there's a Blender text called pydrivers.py, import it. + * Users can add their own functions to this module. + */ + if (G.f & G_DOSCRIPTLINKS) { + mod = importText("pydrivers"); /* can also use PyImport_Import() */ + if (mod) { + PyDict_SetItemString(d, "pydrivers", mod); + PyDict_SetItemString(d, "p", mod); + Py_DECREF(mod); + } else { + PyErr_Clear(); + } + } +#endif // non existant yet + + return 0; +} + +/* Update function, it gets rid of pydrivers global dictionary, forcing + * BPY_pydriver_eval to recreate it. This function is used to force + * reloading the Blender text module "pydrivers.py", if available, so + * updates in it reach pydriver evaluation. + */ +void BPY_pydriver_update(void) +{ + PyGILState_STATE gilstate = PyGILState_Ensure(); + + if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */ + PyDict_Clear(bpy_pydriver_Dict); + Py_DECREF(bpy_pydriver_Dict); + bpy_pydriver_Dict = NULL; + } + + PyGILState_Release(gilstate); + + return; +} + +/* error return function for BPY_eval_pydriver */ +static float pydriver_error(ChannelDriver *driver) +{ + if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */ + PyDict_Clear(bpy_pydriver_Dict); + Py_DECREF(bpy_pydriver_Dict); + bpy_pydriver_Dict = NULL; + } + + driver->flag |= DRIVER_FLAG_INVALID; /* py expression failed */ + fprintf(stderr, "\nError in Driver: The following Python expression failed:\n\t'%s'\n\n", driver->expression); + + // BPy_errors_to_report(NULL); // TODO - reports + PyErr_Print(); + PyErr_Clear(); + + return 0.0f; +} + +/* This evals py driver expressions, 'expr' is a Python expression that + * should evaluate to a float number, which is returned. + */ +float BPY_pydriver_eval (ChannelDriver *driver) +{ + PyObject *driver_vars=NULL; + PyObject *retval= NULL; + PyGILState_STATE gilstate; + + DriverTarget *dtar; + float result = 0.0f; /* default return */ + char *expr = NULL; + short targets_ok= 1; + + /* sanity checks - should driver be executed? */ + if ((driver == NULL) /*|| (G.f & G_DOSCRIPTLINKS)==0*/) + return result; + + /* get the py expression to be evaluated */ + expr = driver->expression; + if ((expr == NULL) || (expr[0]=='\0')) + return result; + + gilstate = PyGILState_Ensure(); + + /* init global dictionary for py-driver evaluation settings */ + if (!bpy_pydriver_Dict) { + if (bpy_pydriver_create_dict() != 0) { + fprintf(stderr, "Pydriver error: couldn't create Python dictionary"); + PyGILState_Release(gilstate); + return result; + } + } + + /* add target values to a dict that will be used as '__locals__' dict */ + driver_vars = PyDict_New(); // XXX do we need to decref this? + for (dtar= driver->targets.first; dtar; dtar= dtar->next) { + PyObject *driver_arg = NULL; + float tval = 0.0f; + + /* try to get variable value */ + tval= driver_get_target_value(driver, dtar); + driver_arg= PyFloat_FromDouble((double)tval); + + /* try to add to dictionary */ + if (PyDict_SetItemString(driver_vars, dtar->name, driver_arg)) { + /* this target failed - bad name */ + if (targets_ok) { + /* first one - print some extra info for easier identification */ + fprintf(stderr, "\nBPY_pydriver_eval() - Error while evaluating PyDriver:\n"); + targets_ok= 0; + } + + fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add variable '%s' to namespace \n", dtar->name); + BPy_errors_to_report(NULL); // TODO - reports + } + } + +#if 0 // slow + /* execute expression to get a value */ + retval = PyRun_String(expr, Py_eval_input, bpy_pydriver_Dict, driver_vars); +#else + if(driver->flag & DRIVER_FLAG_RECOMPILE || driver->expr_comp==NULL) { + Py_XDECREF(driver->expr_comp); + driver->expr_comp= Py_CompileString(expr, "", Py_eval_input); + driver->flag &= ~DRIVER_FLAG_RECOMPILE; + } + if(driver->expr_comp) + retval= PyEval_EvalCode(driver->expr_comp, bpy_pydriver_Dict, driver_vars); +#endif + + /* decref the driver vars first... */ + Py_DECREF(driver_vars); + + /* process the result */ + if (retval == NULL) { + result = pydriver_error(driver); + PyGILState_Release(gilstate); + return result; + } + + result = (float)PyFloat_AsDouble(retval); + Py_DECREF(retval); + + if ((result == -1) && PyErr_Occurred()) { + result = pydriver_error(driver); + PyGILState_Release(gilstate); + return result; + } + + /* all fine, make sure the "invalid expression" flag is cleared */ + driver->flag &= ~DRIVER_FLAG_INVALID; + + PyGILState_Release(gilstate); + + return result; +} diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index d1ef7401494..7b44f8e6ba1 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -49,7 +49,6 @@ #include "BLI_winstuff.h" #endif -#include "DNA_anim_types.h" #include "DNA_space_types.h" #include "DNA_text_types.h" @@ -61,7 +60,6 @@ #include "BLI_string.h" #include "BKE_context.h" -#include "BKE_fcurve.h" #include "BKE_text.h" #include "BKE_context.h" #include "BKE_global.h" @@ -77,7 +75,6 @@ #include "../generic/BGL.h" #include "../generic/IDProp.h" - /* for internal use, when starting and ending python scripts */ /* incase a python script triggers another python call, stop bpy_context_clear from invalidating */ @@ -617,211 +614,6 @@ int BPY_run_python_script_space(const char *modulename, const char *func) #include "PIL_time.h" #endif -/* ****************************************** */ -/* Drivers - PyExpression Evaluation */ - -/* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */ -PyObject *bpy_pydriver_Dict = NULL; - -/* For faster execution we keep a special dictionary for pydrivers, with - * the needed modules and aliases. - */ -static int bpy_pydriver_create_dict(void) -{ - PyObject *d, *mod; - - /* validate namespace for driver evaluation */ - if (bpy_pydriver_Dict) return -1; - - d = PyDict_New(); - if (d == NULL) - return -1; - else - bpy_pydriver_Dict = d; - - /* import some modules: builtins, bpy, math, (Blender.noise )*/ - PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins()); - - mod = PyImport_ImportModule("math"); - if (mod) { - PyDict_Merge(d, PyModule_GetDict(mod), 0); /* 0 - dont overwrite existing values */ - - /* Only keep for backwards compat! - just import all math into root, they are standard */ - PyDict_SetItemString(d, "math", mod); - PyDict_SetItemString(d, "m", mod); - Py_DECREF(mod); - } - - /* add bpy to global namespace */ - mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0); - if (mod) { - PyDict_SetItemString(bpy_pydriver_Dict, "bpy", mod); - Py_DECREF(mod); - } - - -#if 0 // non existant yet - mod = PyImport_ImportModule("Blender.Noise"); - if (mod) { - PyDict_SetItemString(d, "noise", mod); - PyDict_SetItemString(d, "n", mod); - Py_DECREF(mod); - } else { - PyErr_Clear(); - } - - /* If there's a Blender text called pydrivers.py, import it. - * Users can add their own functions to this module. - */ - if (G.f & G_DOSCRIPTLINKS) { - mod = importText("pydrivers"); /* can also use PyImport_Import() */ - if (mod) { - PyDict_SetItemString(d, "pydrivers", mod); - PyDict_SetItemString(d, "p", mod); - Py_DECREF(mod); - } else { - PyErr_Clear(); - } - } -#endif // non existant yet - - return 0; -} - -/* Update function, it gets rid of pydrivers global dictionary, forcing - * BPY_pydriver_eval to recreate it. This function is used to force - * reloading the Blender text module "pydrivers.py", if available, so - * updates in it reach pydriver evaluation. - */ -void BPY_pydriver_update(void) -{ - PyGILState_STATE gilstate = PyGILState_Ensure(); - - if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */ - PyDict_Clear(bpy_pydriver_Dict); - Py_DECREF(bpy_pydriver_Dict); - bpy_pydriver_Dict = NULL; - } - - PyGILState_Release(gilstate); - - return; -} - -/* error return function for BPY_eval_pydriver */ -static float pydriver_error(ChannelDriver *driver) -{ - if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */ - PyDict_Clear(bpy_pydriver_Dict); - Py_DECREF(bpy_pydriver_Dict); - bpy_pydriver_Dict = NULL; - } - - driver->flag |= DRIVER_FLAG_INVALID; /* py expression failed */ - fprintf(stderr, "\nError in Driver: The following Python expression failed:\n\t'%s'\n\n", driver->expression); - - BPy_errors_to_report(NULL); // TODO - reports - - return 0.0f; -} - -/* This evals py driver expressions, 'expr' is a Python expression that - * should evaluate to a float number, which is returned. - */ -float BPY_pydriver_eval (ChannelDriver *driver) -{ - PyObject *driver_vars=NULL; - PyObject *retval= NULL; - PyGILState_STATE gilstate; - - DriverTarget *dtar; - float result = 0.0f; /* default return */ - char *expr = NULL; - short targets_ok= 1; - - /* sanity checks - should driver be executed? */ - if ((driver == NULL) /*|| (G.f & G_DOSCRIPTLINKS)==0*/) - return result; - - /* get the py expression to be evaluated */ - expr = driver->expression; - if ((expr == NULL) || (expr[0]=='\0')) - return result; - - gilstate = PyGILState_Ensure(); - - /* init global dictionary for py-driver evaluation settings */ - if (!bpy_pydriver_Dict) { - if (bpy_pydriver_create_dict() != 0) { - fprintf(stderr, "Pydriver error: couldn't create Python dictionary"); - PyGILState_Release(gilstate); - return result; - } - } - - /* add target values to a dict that will be used as '__locals__' dict */ - driver_vars = PyDict_New(); // XXX do we need to decref this? - for (dtar= driver->targets.first; dtar; dtar= dtar->next) { - PyObject *driver_arg = NULL; - float tval = 0.0f; - - /* try to get variable value */ - tval= driver_get_target_value(driver, dtar); - driver_arg= PyFloat_FromDouble((double)tval); - - /* try to add to dictionary */ - if (PyDict_SetItemString(driver_vars, dtar->name, driver_arg)) { - /* this target failed - bad name */ - if (targets_ok) { - /* first one - print some extra info for easier identification */ - fprintf(stderr, "\nBPY_pydriver_eval() - Error while evaluating PyDriver:\n"); - targets_ok= 0; - } - - fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add variable '%s' to namespace \n", dtar->name); - BPy_errors_to_report(NULL); // TODO - reports - } - } - -#if 0 // slow - /* execute expression to get a value */ - retval = PyRun_String(expr, Py_eval_input, bpy_pydriver_Dict, driver_vars); -#else - if(driver->flag & DRIVER_FLAG_RECOMPILE || driver->expr_comp==NULL) { - Py_XDECREF(driver->expr_comp); - driver->expr_comp= Py_CompileString(expr, "", Py_eval_input); - driver->flag &= ~DRIVER_FLAG_RECOMPILE; - } - if(driver->expr_comp) - retval= PyEval_EvalCode(driver->expr_comp, bpy_pydriver_Dict, driver_vars); -#endif - - /* decref the driver vars first... */ - Py_DECREF(driver_vars); - - /* process the result */ - if (retval == NULL) { - result = pydriver_error(driver); - PyGILState_Release(gilstate); - return result; - } - - result = (float)PyFloat_AsDouble(retval); - Py_DECREF(retval); - - if ((result == -1) && PyErr_Occurred()) { - result = pydriver_error(driver); - PyGILState_Release(gilstate); - return result; - } - - /* all fine, make sure the "invalid expression" flag is cleared */ - driver->flag &= ~DRIVER_FLAG_INVALID; - - PyGILState_Release(gilstate); - - return result; -} int BPY_button_eval(bContext *C, char *expr, double *value) { -- cgit v1.2.3 From fabdde675a02407e59e4f2720a64b1495b1080e7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 00:03:18 +0000 Subject: reference to INDIVIDUAL_CENTERS causing error --- source/blender/editors/space_view3d/view3d_ops.c | 2 +- source/blender/makesrna/intern/rna_space.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 3b60d4d555f..bc8d34b407b 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -266,7 +266,7 @@ void view3d_keymap(wmKeyConfig *keyconf) 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, "value", "INDIVIDUAL_CENTERS"); + 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"); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 28784e0e666..ef72b6cbf1f 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1316,7 +1316,7 @@ static void rna_def_space_graph(BlenderRNA *brna) static EnumPropertyItem gpivot_items[] = { {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""}, {V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""}, - {V3D_LOCAL, "INDIVIDUAL_CENTERS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, + {V3D_LOCAL, "INDIVIDUAL_ORIGINS", ICON_ROTATECOLLECTION, "Individual Centers", ""}, //{V3D_CENTROID, "MEDIAN_POINT", 0, "Median Point", ""}, //{V3D_ACTIVE, "ACTIVE_ELEMENT", 0, "Active Element", ""}, {0, NULL, 0, NULL, NULL}}; -- cgit v1.2.3 From e9b417c1bf4b8e42dce2ee42a7421d4177478e5d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 00:45:50 +0000 Subject: auto-dist working again, renamed obofs --> dyn_ofs, use_sel --> use_dyn_ofs, since its used by Auto-Depth too. --- source/blender/editors/space_view3d/view3d_edit.c | 76 ++++++++++++++++++----- 1 file changed, 60 insertions(+), 16 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 0ea185589e1..ad40a7266af 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -236,11 +236,14 @@ typedef struct ViewOpsData { float oldquat[4]; float trackvec[3]; - float ofs[3], obofs[3]; float reverse, dist0; float grid, far; short axis_snap; /* view rotate only */ + /* use for orbit selection and auto-dist */ + float ofs[3], dyn_ofs[3]; + short use_dyn_ofs; + int origx, origy, oldx, oldy; int origkey; /* the key that triggered the operator */ @@ -292,14 +295,56 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event) vod->origx= vod->oldx= event->x; vod->origy= vod->oldy= event->y; vod->origkey= event->type; /* the key that triggered the operator. */ - - if (U.uiflag & USER_ORBIT_SELECTION) - { + vod->use_dyn_ofs= (U.uiflag & USER_ORBIT_SELECTION) ? 1:0; + + if (vod->use_dyn_ofs) { VECCOPY(vod->ofs, rv3d->ofs); /* If there's no selection, lastofs is unmodified and last value since static */ calculateTransformCenter(C, event, V3D_CENTROID, lastofs); - VECCOPY(vod->obofs, lastofs); - mul_v3_fl(vod->obofs, -1.0f); + VECCOPY(vod->dyn_ofs, lastofs); + mul_v3_fl(vod->dyn_ofs, -1.0f); + } + else if (U.uiflag & USER_ORBIT_ZBUF) { + + view3d_operator_needs_opengl(C); /* needed for zbuf drawing */ + + if((vod->use_dyn_ofs=view_autodist(CTX_data_scene(C), vod->ar, v3d, event->mval, vod->dyn_ofs))) { + if (rv3d->persp==RV3D_PERSP) { + float my_origin[3]; /* original G.vd->ofs */ + float my_pivot[3]; /* view */ + float dvec[3]; + + // locals for dist correction + float mat[3][3]; + float upvec[3]; + + VECCOPY(my_origin, rv3d->ofs); + negate_v3(my_origin); /* ofs is flipped */ + + /* Set the dist value to be the distance from this 3d point */ + /* this means youll always be able to zoom into it and panning wont go bad when dist was zero */ + + /* remove dist value */ + upvec[0] = upvec[1] = 0; + upvec[2] = rv3d->dist; + copy_m3_m4(mat, rv3d->viewinv); + + mul_m3_v3(mat, upvec); + sub_v3_v3v3(my_pivot, rv3d->ofs, upvec); + negate_v3(my_pivot); /* ofs is flipped */ + + /* find a new ofs value that is allong the view axis (rather then the mouse location) */ + closest_to_line_v3(dvec, vod->dyn_ofs, my_pivot, my_origin); + vod->dist0 = rv3d->dist = len_v3v3(my_pivot, dvec); + + negate_v3(dvec); + VECCOPY(rv3d->ofs, dvec); + } + negate_v3(vod->dyn_ofs); + VECCOPY(vod->ofs, rv3d->ofs); + } else { + vod->ofs[0] = vod->ofs[1] = vod->ofs[2] = 0.0f; + } } /* lookup, we dont pass on v3d to prevent confusement */ @@ -413,7 +458,6 @@ void viewrotate_modal_keymap(wmKeyConfig *keyconf) static void viewrotate_apply(ViewOpsData *vod, int x, int y) { RegionView3D *rv3d= vod->rv3d; - int use_sel= U.uiflag & USER_ORBIT_SELECTION; rv3d->view= 0; /* need to reset everytime because of view snapping */ @@ -449,7 +493,7 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) q1[3]*= si; mul_qt_qtqt(rv3d->viewquat, q1, vod->oldquat); - if (use_sel) { + if (vod->use_dyn_ofs) { /* compute the post multiplication quat, to rotate the offset correctly */ QUATCOPY(q1, vod->oldquat); conjugate_qt(q1); @@ -457,9 +501,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->obofs); + sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs); + add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); } } else { @@ -491,11 +535,11 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) q1[3] = si * xvec[2]; mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); - if (use_sel) { + if (vod->use_dyn_ofs) { conjugate_qt(q1); /* conj == inv for unit quat */ - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs); + sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs); + add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); } /* Perform the orbital rotation */ @@ -505,11 +549,11 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) q1[3] = sin(phi); mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); - if (use_sel) { + if (vod->use_dyn_ofs) { conjugate_qt(q1); - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs); + sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->obofs); + add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); } } -- cgit v1.2.3 From 2ef0ee76a05b39b148ffc280ebf002c9ac9a44da Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 01:53:04 +0000 Subject: Fix for [#20249] duplicating a mesh in edit mode with a lattice modifier Removed lattice and curve modifiers from being correctable for crazy space - it didn't work and was giving weird results. --- source/blender/blenkernel/BKE_modifier.h | 4 ++-- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/modifier.c | 16 ++++++---------- source/blender/editors/transform/transform_conversions.c | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index c30bfa3e247..539c2e59dbe 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -280,7 +280,7 @@ void modifier_copyData(struct ModifierData *md, struct ModifierData *ta int modifier_dependsOnTime(struct ModifierData *md); int modifier_supportsMapping(struct ModifierData *md); int modifier_couldBeCage(struct ModifierData *md); -int modifier_isDeformer(struct ModifierData *md); +int modifier_isCorrectableDeformed(struct ModifierData *md); int modifier_sameTopology(ModifierData *md); int modifier_isEnabled(struct ModifierData *md, int required_mode); void modifier_setError(struct ModifierData *md, char *format, ...); @@ -303,7 +303,7 @@ int modifiers_isParticleEnabled(struct Object *ob); struct Object *modifiers_isDeformedByArmature(struct Object *ob); struct Object *modifiers_isDeformedByLattice(struct Object *ob); int modifiers_usesArmature(struct Object *ob, struct bArmature *arm); -int modifiers_isDeformed(struct Scene *scene, struct Object *ob); +int modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob); void modifier_freeTemporaryData(struct ModifierData *md); int modifiers_indexInObject(struct Object *ob, struct ModifierData *md); diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 209e4610c6a..a681b539097 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2513,7 +2513,7 @@ int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deform } for(; md && i <= cageIndex; md = md->next, i++) - if(editmesh_modifier_is_enabled(md, dm) && modifier_isDeformer(md)) + if(editmesh_modifier_is_enabled(md, dm) && modifier_isCorrectableDeformed(md)) numleft++; if(dm) diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 56aab7d2ba9..08c979b89db 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -9151,15 +9151,15 @@ Object *modifiers_isDeformedByArmature(Object *ob) } /* Takes an object and returns its first selected lattice, else just its -* armature -* This should work for multiple armatures per object +* lattice +* This should work for multiple lattics per object */ Object *modifiers_isDeformedByLattice(Object *ob) { ModifierData *md = modifiers_getVirtualModifierList(ob); LatticeModifierData *lmd= NULL; - /* return the first selected armature, this lets us use multiple armatures + /* return the first selected lattice, this lets us use multiple lattices */ for (; md; md=md->next) { if (md->type==eModifierType_Lattice) { @@ -9192,28 +9192,24 @@ int modifiers_usesArmature(Object *ob, bArmature *arm) return 0; } -int modifier_isDeformer(ModifierData *md) +int modifier_isCorrectableDeformed(ModifierData *md) { if (md->type==eModifierType_Armature) return 1; - if (md->type==eModifierType_Curve) - return 1; - if (md->type==eModifierType_Lattice) - return 1; if (md->type==eModifierType_ShapeKey) return 1; return 0; } -int modifiers_isDeformed(Scene *scene, Object *ob) +int modifiers_isCorrectableDeformed(Scene *scene, Object *ob) { ModifierData *md = modifiers_getVirtualModifierList(ob); for (; md; md=md->next) { if(ob->mode==OB_MODE_EDIT && (md->mode & eModifierMode_Editmode)==0); else - if(modifier_isDeformer(md)) + if(modifier_isCorrectableDeformed(md)) return 1; } return 0; diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index a81c262dd64..37e56874044 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2212,7 +2212,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t) /* detect CrazySpace [tm] */ if(propmode==0) { if(modifiers_getCageIndex(t->obedit, NULL, 1)>=0) { - if(modifiers_isDeformed(t->scene, t->obedit)) { + if(modifiers_isCorrectableDeformed(t->scene, t->obedit)) { /* check if we can use deform matrices for modifier from the start up to stack, they are more accurate than quats */ totleft= editmesh_get_first_deform_matrices(t->obedit, em, &defmats, &defcos); -- cgit v1.2.3 From f626b2c4dd41f98b56156e21ffe096cb35af77b2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 01:53:51 +0000 Subject: Minor fix for missing menu --- release/scripts/ui/space_view3d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 83888ac9c0f..6179a2be1e3 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -50,7 +50,7 @@ class VIEW3D_HT_header(bpy.types.Header): if edit_object: sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower()) elif obj: - if mode_string not in ('PAINT_WEIGHT'): + if mode_string not in ('PAINT_WEIGHT', 'PAINT_TEXTURE'): sub.menu("VIEW3D_MT_%s" % mode_string.lower()) else: sub.menu("VIEW3D_MT_object") -- cgit v1.2.3 From 1c47b3acb6fa03ea13f9a1f545a750439dcd68ab Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 02:55:19 +0000 Subject: Fix for [#20197] dof node bugs This is still a bit dodgy, the issue of accessing scene data from nodes needs to be solved better, but this at least fixes it up to previous capabilities, and prevents writing any data to scene/objects either. --- source/blender/blenkernel/intern/object.c | 6 +++--- source/blender/editors/space_node/node_edit.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 5806b269e7d..048e1cd01e3 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -741,12 +741,12 @@ float dof_camera(Object *ob) if (cam->dof_ob) { /* too simple, better to return the distance on the view axis only * return len_v3v3(ob->obmat[3], cam->dof_ob->obmat[3]); */ - float mat[4][4], obmat[4][4]; + float mat[4][4], imat[4][4], obmat[4][4]; copy_m4_m4(obmat, ob->obmat); normalize_m4(obmat); - invert_m4_m4(ob->imat, obmat); - mul_m4_m4m4(mat, cam->dof_ob->obmat, ob->imat); + invert_m4_m4(imat, obmat); + mul_m4_m4m4(mat, cam->dof_ob->obmat, imat); return (float)fabs(mat[3][2]); } return cam->YF_dofdist; diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index b42e9e1fac5..ce32c536389 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1471,7 +1471,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float node_set_active(snode, node); if(snode->nodetree->type==NTREE_COMPOSIT) { - if(ELEM(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE)) + if(ELEM3(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS)) node->id = &scene->id; ntreeCompositForceHidden(snode->edittree, scene); -- cgit v1.2.3 From bc795694198a700aeb6283741da2a4ed515a70c3 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 9 Dec 2009 04:51:35 +0000 Subject: grabcursor attribute stores full grab mode so we can better differentiate when it needs to wrap around cursor draw. Also add cocoa exception to wm_get_cursor_position (this should be fixed at the ghost level) --- source/blender/makesdna/DNA_windowmanager_types.h | 2 +- source/blender/windowmanager/intern/wm_cursors.c | 4 ++-- source/blender/windowmanager/intern/wm_draw.c | 5 ++++- source/blender/windowmanager/intern/wm_window.c | 5 +++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 24374720232..714dc853419 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -141,7 +141,7 @@ typedef struct wmWindow { int winid; /* winid also in screens, is for retrieving this window after read */ - short grabcursor; /* 1 if cursor is grabbed */ + short grabcursor; /* cursor grab mode */ short pad; struct bScreen *screen; /* active screen */ diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index cec5886014a..dfcc1fcd227 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -181,7 +181,7 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) else if (tabletdata->Active == GHOST_kTabletModeNone) GHOST_SetCursorGrab(win->ghostwin, mode, bounds); - win->grabcursor = 1; + win->grabcursor = mode; } } } @@ -191,7 +191,7 @@ void WM_cursor_ungrab(wmWindow *win) if ((G.f & G_DEBUG) == 0) { if(win && win->ghostwin) { GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL); - win->grabcursor = 0; + win->grabcursor = GHOST_kGrabDisable; } } } diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 96aea760e20..3335efeb166 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -41,6 +41,9 @@ #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_utildefines.h" + +#include "GHOST_C-api.h" #include "ED_screen.h" @@ -74,7 +77,7 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) for(pc= wm->paintcursors.first; pc; pc= pc->next) { if(pc->poll == NULL || pc->poll(C)) { ARegion *ar= CTX_wm_region(C); - if (win->grabcursor) { + if (ELEM(win->grabcursor, GHOST_kGrabWrap, GHOST_kGrabHide)) { int x = 0, y = 0; wm_get_cursor_position(win, &x, &y); pc->draw(C, x - ar->winrct.xmin, y - ar->winrct.ymin, pc->customdata); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 31ad8cdcc63..6ae320da912 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -977,7 +977,12 @@ void wm_get_cursor_position(wmWindow *win, int *x, int *y) { GHOST_GetCursorPosition(g_system, x, y); GHOST_ScreenToClient(win->ghostwin, *x, *y, x, y); +#if defined(__APPLE__) && defined(GHOST_COCOA) + //Cocoa has silly exception that should be fixed at the ghost level + //(ghost is an allegory for an invisible system specific code) +#else *y = (win->sizey-1) - *y; +#endif } /* ******************* exported api ***************** */ -- cgit v1.2.3 From 9b6b74f292856dd8edf5bf9e9f172d95fc12d5e4 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 06:55:16 +0000 Subject: Various more screen-related fixes including: [#20271] File Browser - Wont show when area is fullscreen --- source/blender/editors/screen/screen_edit.c | 38 +++++++++++++++++++++-------- source/blender/makesdna/DNA_screen_types.h | 7 +++--- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 024e00fa617..6d8f25bb9ff 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1468,7 +1468,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) // 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 */ @@ -1502,7 +1502,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) /* 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) @@ -1511,11 +1511,12 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) /* copy area */ newa= newa->prev; area_copy_data(newa, sa, 1); /* 1 = swap spacelist */ + sa->flag |= AREA_TEMP_INFO; sa->full= oldscreen; newa->full= oldscreen; newa->next->full= oldscreen; // XXX - + ED_screen_set(C, sc); } @@ -1530,13 +1531,26 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) 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) + if(!sa || sa->full==0) { newsa= ed_screen_fullarea(C, win, sa); - if(!newsa) - newsa= 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; @@ -1567,10 +1581,14 @@ void ED_screen_full_restore(bContext *C, ScrArea *sa) SpaceImage *sima= sa->spacedata.first; if (sima->flag & SI_PREVSPACE) sima->flag &= ~SI_PREVSPACE; - if (sima->flag & SI_FULLWINDOW) + if (sima->flag & SI_FULLWINDOW) { sima->flag &= ~SI_FULLWINDOW; - } - ED_screen_full_prevspace(C, sa); + 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 { diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index b091a0529e7..18c7a819eb3 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -170,9 +170,10 @@ typedef struct ARegion { #define WIN_EQUAL 3 /* area->flag */ -#define HEADER_NO_PULLDOWN 1 -#define AREA_FLAG_DRAWJOINTO 2 -#define AREA_FLAG_DRAWJOINFROM 4 +#define HEADER_NO_PULLDOWN 1 +#define AREA_FLAG_DRAWJOINTO 2 +#define AREA_FLAG_DRAWJOINFROM 4 +#define AREA_TEMP_INFO 8 /* If you change EDGEWIDTH, also do the global arrat edcol[] */ #define EDGEWIDTH 1 -- cgit v1.2.3 From 3712e78d5257bc5681be120e15e3de4e05539f9b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 10:55:28 +0000 Subject: RNA: fix for yesterday's commit, browsing screens and scenes was not working anymore, relies on special notifiers. --- source/blender/makesrna/intern/rna_screen.c | 5 +++-- source/blender/makesrna/intern/rna_wm.c | 5 +++-- source/blender/windowmanager/intern/wm_event_system.c | 12 ++++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index da8f326caca..5311c80e45d 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -61,13 +61,13 @@ static void rna_Screen_scene_set(PointerRNA *ptr, PointerRNA value) sc->newscene= value.data; } -static void rna_Screen_scene_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Screen_scene_update(bContext *C, PointerRNA *ptr) { bScreen *sc= (bScreen*)ptr->data; /* exception: can't set screens inside of area/region handers */ if(sc->newscene) { - WM_main_add_notifier(NC_SCENE|ND_SCENEBROWSE, sc->newscene); + WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, sc->newscene); sc->newscene= NULL; } } @@ -178,6 +178,7 @@ static void rna_def_screen(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE|PROP_NEVER_NULL); RNA_def_property_pointer_funcs(prop, NULL, "rna_Screen_scene_set", NULL); RNA_def_property_ui_text(prop, "Scene", "Active scene to be edited in the screen."); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); RNA_def_property_update(prop, 0, "rna_Screen_scene_update"); prop= RNA_def_property(srna, "areas", PROP_COLLECTION, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index d3e0d166755..6459e5d7c48 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -348,13 +348,13 @@ static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value) win->newscreen= value.data; } -static void rna_Window_screen_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Window_screen_update(bContext *C, PointerRNA *ptr) { wmWindow *win= (wmWindow*)ptr->data; /* exception: can't set screens inside of area/region handers */ if(win->newscreen) { - WM_main_add_notifier(NC_SCREEN|ND_SCREENBROWSE, win->newscreen); + WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, win->newscreen); win->newscreen= NULL; } } @@ -772,6 +772,7 @@ static void rna_def_window(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Screen", "Active screen showing in the window."); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, "rna_Window_screen_set", NULL); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); RNA_def_property_update(prop, 0, "rna_Window_screen_update"); } diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 76ab00e19a5..8bc258f7c0a 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -214,21 +214,25 @@ void wm_event_do_notifiers(bContext *C) if(note->category==NC_SCREEN) { if(note->data==ND_SCREENBROWSE) { ED_screen_set(C, note->reference); // XXX hrms, think this over! - printf("screen set %p\n", note->reference); + if(G.f & G_DEBUG) + printf("screen set %p\n", note->reference); } else if(note->data==ND_SCREENDELETE) { ED_screen_delete(C, note->reference); // XXX hrms, think this over! - printf("screen delete %p\n", note->reference); + if(G.f & G_DEBUG) + printf("screen delete %p\n", note->reference); } } else if(note->category==NC_SCENE) { if(note->data==ND_SCENEBROWSE) { ED_screen_set_scene(C, note->reference); // XXX hrms, think this over! - printf("scene set %p\n", note->reference); + if(G.f & G_DEBUG) + printf("scene set %p\n", note->reference); } if(note->data==ND_SCENEDELETE) { ED_screen_delete_scene(C, note->reference); // XXX hrms, think this over! - printf("scene delete %p\n", note->reference); + if(G.f & G_DEBUG) + printf("scene delete %p\n", note->reference); } else if(note->data==ND_FRAME) do_anim= 1; -- cgit v1.2.3 From abae1e2ccf2bb16d4a436cdcbb17560252df7e8a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 11:09:56 +0000 Subject: Sculpt Branch: sculpting with modifiers and shape keys working again. --- source/blender/editors/sculpt_paint/sculpt.c | 130 +++++++++++++-------- .../blender/editors/sculpt_paint/sculpt_intern.h | 7 +- 2 files changed, 84 insertions(+), 53 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 9a25cf21542..d67f13f1537 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -294,8 +294,9 @@ static void update_cb(PBVHNode *node, void *data) 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(CTX_data_scene(C), ob, 0); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); SculptSession *ss = ob->sculpt; SculptUndoNode *unode; MVert *mvert; @@ -303,7 +304,7 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) int *index; int i, j, update= 0; - sculpt_update_mesh_elements(C, 0); + sculpt_update_mesh_elements(scene, ob, 0); for(unode=lb->first; unode; unode=unode->next) { if(!(strcmp(unode->idname, ob->id.name)==0)) @@ -349,6 +350,9 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) } 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 */ @@ -1250,7 +1254,6 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) { SculptSearchSphereData data; Brush *brush = paint_brush(&sd->paint); - //KeyBlock *keyblock= NULL; /*XXX: ob_get_keyblock(OBACT); */ PBVHNode **nodes= NULL; int totnode; @@ -1312,23 +1315,8 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) break; } -#if 0 - /* Copy the modified vertices from mesh to the active key */ + /* copy the modified vertices from mesh to the active key */ if(ss->kb) mesh_to_key(ss->ob->data, ss->kb); - - for(; adata; adata= adata->next) - if(adata->Index < keyblock->totelem) - copy_v3_v3(&co[adata->Index*3], me->mvert[adata->Index].co); - } - } - - if(ss->vertexcosnos && !ss->multires) - BLI_freelistN(&active_verts); - else { - if(b->sculpt_tool != SCULPT_TOOL_GRAB) - addlisttolist(&ss->modified_verts, &active_verts); - } -#endif if((brush->sculpt_tool != SCULPT_TOOL_GRAB) && nodes) MEM_freeN(nodes); @@ -1390,8 +1378,9 @@ char sculpt_modifiers_active(Object *ob) ModifierData *md; for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(modifier_isEnabled(md, eModifierMode_Realtime) && md->type != eModifierType_Multires) - return 1; + if(modifier_isEnabled(md, eModifierMode_Realtime)) + if(!ELEM(md->type, eModifierType_Multires, eModifierType_ShapeKey)) + return 1; } return 0; @@ -1421,14 +1410,40 @@ struct MultiresModifierData *sculpt_multires_active(Object *ob) return NULL; } -void sculpt_update_mesh_elements(bContext *C, int need_fmap) +void sculpt_key_to_mesh(KeyBlock *kb, Object *ob) { - Object *ob = CTX_data_active_object(C); - DerivedMesh *dm = mesh_get_derived_final(CTX_data_scene(C), ob, 0); + 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); SculptSession *ss = ob->sculpt; 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; + } + + /* need to make PBVH with shape key coordinates */ + if(ss->kb) sculpt_key_to_mesh(ss->kb, ss->ob); + if((ss->multires = sculpt_multires_active(ob))) { ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumFaces(dm); @@ -1445,18 +1460,8 @@ void sculpt_update_mesh_elements(bContext *C, int need_fmap) ss->face_normals = NULL; } - ss->ob = ob; ss->tree = dm->getPBVH(ob, dm); ss->fmap = (need_fmap && dm->getFaceMap)? dm->getFaceMap(dm): NULL; - - 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; - } } static int sculpt_mode_poll(bContext *C) @@ -1701,6 +1706,12 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P } } +static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss) +{ + if(sculpt_modifiers_active(ss->ob)) + sculpt_update_mesh_elements(CTX_data_scene(C), ss->ob, 0); // XXX brush->sculpt_tool == SCULPT_TOOL_SMOOTH); +} + typedef struct { SculptSession *ss; float *ray_start, *ray_normal; @@ -1739,6 +1750,8 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou mouse[1] - vc->ar->winrct.ymin}; SculptRaycastData srd; + sculpt_stroke_modifiers_check(C, ss); + viewray(vc->ar, vc->v3d, mval, ray_start, ray_normal); invert_m4_m4(obimat, ss->ob->obmat); @@ -1800,6 +1813,7 @@ static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmE static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) { + Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); Sculpt *sd = CTX_data_tool_settings(C)->sculpt; SculptSession *ss = CTX_data_active_object(C)->sculpt; @@ -1817,9 +1831,7 @@ static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) changes are made to the texture. */ sculpt_update_tex(sd, ss); - sculpt_update_mesh_elements(C, brush->sculpt_tool == SCULPT_TOOL_SMOOTH); - - if(ss->kb) key_to_mesh(ss->kb, ss->ob->data); + sculpt_update_mesh_elements(scene, ob, brush->sculpt_tool == SCULPT_TOOL_SMOOTH); return 1; } @@ -1871,23 +1883,30 @@ static void sculpt_flush_update(bContext *C) SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); MultiresModifierData *mmd = ss->multires; - rcti r; int redraw = 0; if(mmd) multires_mark_as_modified(ob); - BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); - redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); + if(sculpt_modifiers_active(ob)) { + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + ED_region_tag_redraw(ar); + } + else { + rcti r; - if(redraw) { - r.xmin += ar->winrct.xmin + 1; - r.xmax += ar->winrct.xmin - 1; - r.ymin += ar->winrct.ymin + 1; - r.ymax += ar->winrct.ymin - 1; - - ss->partial_redraw = 1; - ED_region_tag_redraw_partial(ar, &r); + BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); + redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); + + if(redraw) { + r.xmin += ar->winrct.xmin + 1; + r.xmax += ar->winrct.xmin - 1; + r.ymin += ar->winrct.ymin + 1; + r.ymax += ar->winrct.ymin - 1; + + ss->partial_redraw = 1; + ED_region_tag_redraw_partial(ar, &r); + } } } @@ -1923,6 +1942,7 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P Sculpt *sd = CTX_data_tool_settings(C)->sculpt; SculptSession *ss = CTX_data_active_object(C)->sculpt; + sculpt_stroke_modifiers_check(C, ss); sculpt_update_cache_variants(sd, ss, stroke, itemptr); sculpt_restore_mesh(sd, ss); do_symmetrical_brush_actions(sd, ss); @@ -1938,12 +1958,16 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) /* Finished */ if(ss->cache) { + sculpt_stroke_modifiers_check(C, ss); + sculpt_cache_free(ss->cache); ss->cache = NULL; sculpt_undo_push_end(ss); BLI_pbvh_update(ss->tree, PBVH_UpdateOriginalBB, NULL); + + if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); } } @@ -2053,15 +2077,19 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) /**** Toggle operator for turning sculpt mode on or off ****/ -static void sculpt_init_session(bContext *C, Object *ob) +static void sculpt_init_session(Scene *scene, Object *ob) { ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); - sculpt_update_mesh_elements(C, 0); + 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) { + 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); @@ -2093,7 +2121,7 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) if(ob->sculpt) free_sculptsession(&ob->sculpt); - sculpt_init_session(C, ob); + sculpt_init_session(scene, ob); paint_init(&ts->sculpt->paint, PAINT_CURSOR_SCULPT); diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index d0eeacf5ea3..0e1c0510902 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -35,12 +35,13 @@ struct bContext; struct Brush; +struct KeyBlock; struct Mesh; +struct MultiresModifierData; struct Object; struct Scene; struct Sculpt; struct SculptStroke; -struct MultiresModifierData; /* Interface */ void sculptmode_selectbrush_menu(void); @@ -57,7 +58,9 @@ char sculpt_modifiers_active(struct Object *ob); void sculpt(Sculpt *sd); int sculpt_poll(struct bContext *C); -void sculpt_update_mesh_elements(struct bContext *C, int need_fmap); +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); -- cgit v1.2.3 From 9bc23bd616ffec08af43258ffe3b8bfbf2e0065f Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 11:38:32 +0000 Subject: Whoops, silly typo --- source/blender/editors/screen/screen_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6d8f25bb9ff..fef3818a2c7 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1468,7 +1468,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) // 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; + if (sa->flag & AREA_TEMP_INFO) sa->flag &= ~AREA_TEMP_INFO; old->full= NULL; /* animtimer back */ -- cgit v1.2.3 From 0e713ba1d01c6bca4052b19f72045415cd6fea70 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 12:00:28 +0000 Subject: - rewrote arm rig so it creates 2 chains and blend them automatically (like the leg) - use reverse order for palm fingers (pointer first) - allow copying bone class instances to exclude some bones - doc generation had a python error (incedently updated online docs linked from the splash) --- release/scripts/modules/rigify/__init__.py | 29 ++- release/scripts/modules/rigify/arm.py | 349 +++++++++++------------------ release/scripts/modules/rigify/leg.py | 2 +- release/scripts/modules/rigify/palm.py | 17 +- source/blender/python/epy_doc_gen.py | 11 +- 5 files changed, 167 insertions(+), 241 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index a7863d0caf5..09a17dffdd4 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -73,19 +73,23 @@ def _bone_class_instance_rename(self, attr, new_name): setattr(self, attr, ebone.name) -def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): +def _bone_class_instance_copy(self, from_fmt="%s", to_fmt="%s", exclude_attrs=(), base_names=None): from_name_ls = [] new_name_ls = [] new_slot_ls = [] for attr in self.attr_names: + + if attr in exclude_attrs: + continue + bone_name_orig = getattr(self, attr) ebone = getattr(self, attr + "_e") # orig_names[attr] = bone_name_orig - # insert prefix - if from_prefix: - bone_name = from_prefix + bone_name_orig + # insert formatting + if from_fmt != "%s": + bone_name = from_fmt % bone_name_orig ebone.name = bone_name bone_name = ebone.name # cant be sure we get what we ask for else: @@ -95,8 +99,9 @@ def _bone_class_instance_copy(self, from_prefix="", to_prefix=""): new_slot_ls.append(attr) from_name_ls.append(bone_name) - bone_name_orig = bone_name_orig.replace("ORG-", "") # XXX - we need a better way to do this - new_name_ls.append(to_prefix + bone_name_orig) + if base_names: + bone_name_orig = base_names[bone_name_orig] + new_name_ls.append(to_fmt % bone_name_orig) new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) new_bc = bone_class_instance(self.obj, new_slot_ls) @@ -134,6 +139,10 @@ def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_pr def bone_class_instance(obj, slots, name="BoneContainer"): + + if len(slots) != len(set(slots)): + raise Exception("duplicate entries found %s" % attr_names) + attr_names = tuple(slots) # dont modify the original slots = list(slots) # dont modify the original for i in range(len(slots)): @@ -210,6 +219,11 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta if obj.mode == 'EDIT': raise Exception("blending cant be called in editmode") + if len(apply_bones) != len(from_bones): + raise Exception("lists differ in length (from -> apply): \n\t%s\n\t%s" % (from_bones, apply_bones)) + if len(apply_bones) != len(to_bones): + raise Exception("lists differ in length (to -> apply): \n\t%s\n\t%s" % (to_bones, apply_bones)) + # setup the blend property if target_bone is None: target_bone = apply_bones[-1] # default to the last bone @@ -319,7 +333,8 @@ def add_stretch_to(obj, from_name, to_name, name): con.volume = 'NO_VOLUME' bpy.ops.object.mode_set(mode=mode_orig) - + + return stretch_name def add_pole_target_bone(obj, base_name, name, mode='CROSS'): ''' diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 7408e349dca..0823f8ad331 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -19,13 +19,15 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to +from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list from rna_prop_ui import rna_idprop_ui_prop_get +from Mathutils import Vector METARIG_NAMES = "shoulder", "arm", "forearm", "hand" def metarig_template(): + # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.object arm = obj.data @@ -66,8 +68,11 @@ def metarig_definition(obj, orig_bone_name): mt.shoulder_p = mt.arm_p.parent if not mt.shoulder_p: - raise Exception("could not find 'arm' parent, skipping:", orig_bone_name) - print(mt.shoulder_p) + raise Exception("could not find '%s' parent, skipping:" % orig_bone_name) + + if mt.arm_p.parent.bone.connected: + raise Exception("expected '%s' to be disconnected from its parent" % orig_bone_name) + mt.shoulder = mt.shoulder_p.name # We could have some bones attached, find the bone that has this as its 2nd parent @@ -90,232 +95,125 @@ def metarig_definition(obj, orig_bone_name): return mt.names() -def main(obj, definitions, base_names): - """ - the bone with the 'arm' property is the upper arm, this assumes a chain as follows. - [shoulder, upper_arm, forearm, hand] - ...where this bone is 'upper_arm' - - there are 3 chains - - Original - - IK, MCH-%s_ik - - IKSwitch, MCH-%s () - - - """ - - # Since there are 3 chains, this gets confusing so divide into 3 chains - # Initialize container classes for convenience - mt = bone_class_instance(obj, METARIG_NAMES) # meta +def ik(obj, definitions, base_names): + mt = bone_class_instance(obj, METARIG_NAMES) mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions + mt.update() + + ik = bone_class_instance(obj, ["pole", "pole_vis", "hand_vis"]) + ik_chain = mt.copy(to_fmt="MCH-%s_ik", base_names=base_names, exclude_attrs=["shoulder"]) + + # IK needs no parent_index + ik_chain.hand_e.connected = False + ik_chain.hand_e.parent = None + + ik_chain.arm_e.connected = False + ik_chain.arm_e.parent = mt.shoulder_e + + # Add the bone used for the arms poll target + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') + + # update bones after this! + ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) + ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) + + ik.update() + ik.hand_vis_e.restrict_select = True + ik.pole_vis_e.restrict_select = True + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + ik.update() + ik_chain.update() + + con = ik_chain.forearm_p.constraints.new('IK') + con.target = obj + con.subtarget = ik_chain.hand + con.pole_target = obj + con.pole_subtarget = ik.pole + + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.chain_length = 2 + con.pole_angle = -90.0 # XXX, RAD2DEG + + # ID Propery on the hand for IK/FK switch + + prop = rna_idprop_ui_prop_get(ik_chain.hand_p, "ik", create=True) + ik_chain.hand_p["ik"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 - ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik - sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge - ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras - - arm = obj.data - - def chain_ik(prefix="MCH-%s_ik"): - - mt.update() - - # Add the edit bones - ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % base_names[mt.hand]) - ik.hand = ik.hand_e.name - - ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % base_names[mt.arm]) - ik.arm = ik.arm_e.name - - ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % base_names[mt.forearm]) - ik.forearm = ik.forearm_e.name - - ik.arm_e.parent = mt.arm_e.parent - ik.forearm_e.connected = mt.arm_e.connected - - ik.forearm_e.parent = ik.arm_e - ik.forearm_e.connected = True - - - # Add the bone used for the arms poll target - ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') - - bpy.ops.object.mode_set(mode='OBJECT') - - ik.update() - - con = ik.forearm_p.constraints.new('IK') - con.target = obj - con.subtarget = ik.hand - con.pole_target = obj - con.pole_subtarget = ik.pole - - con.use_tail = True - con.use_stretch = True - con.use_target = True - con.use_rotation = False - con.chain_length = 2 - con.pole_angle = -90.0 # XXX, RAD2DEG - - # ID Propery on the hand for IK/FK switch - - prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True) - ik.hand_p["ik"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - bpy.ops.object.mode_set(mode='EDIT') - - def chain_switch(prefix="MCH-%s"): - print(mt.obj.mode) - sw.update() - mt.update() - - sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % base_names[mt.shoulder]) - sw.shoulder = sw.shoulder_e.name - sw.shoulder_e.parent = mt.shoulder_e.parent - sw.shoulder_e.connected = mt.shoulder_e.connected - - sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % base_names[mt.arm]) - sw.arm = sw.arm_e.name - sw.arm_e.parent = sw.shoulder_e - sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected - - sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % base_names[mt.forearm]) - sw.forearm = sw.forearm_e.name - sw.forearm_e.parent = sw.arm_e - sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected - - sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % base_names[mt.hand]) - sw.hand = sw.hand_e.name - sw.hand_e.parent = sw.forearm_e - sw.hand_e.connected = arm.edit_bones[mt.hand].connected - - # The sw.hand_e needs to own all the children on the metarig's hand - for child in mt.hand_e.children: - child.parent = sw.hand_e - - - # These are made the children of sw.shoulder_e - - - bpy.ops.object.mode_set(mode='OBJECT') - - # Add constraints - sw.update() - - #dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple - - ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]' - - def ik_fk_driver(con): - ''' - 3 bones use this for ik/fk switching - ''' - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "ik" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = ik_driver_path - - # *********** - con = sw.arm_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.arm - - con = sw.arm_p.constraints.new('COPY_ROTATION') - - con.target = obj - con.subtarget = ik.arm - con.influence = 0.5 - ik_fk_driver(con) - - # *********** - con = sw.forearm_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.forearm - - con = sw.forearm_p.constraints.new('COPY_ROTATION') - con.name = "IK" - con.target = obj - con.subtarget = ik.forearm - con.influence = 0.5 - ik_fk_driver(con) - - # *********** - con = sw.hand_p.constraints.new('COPY_ROTATION') - con.name = "FK" - con.target = obj - con.subtarget = mt.hand - - con = sw.hand_p.constraints.new('COPY_ROTATION') - con.name = "IK" - con.target = obj - con.subtarget = ik.hand - con.influence = 0.5 - ik_fk_driver(con) - - - add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll") - add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik") - - bpy.ops.object.mode_set(mode='EDIT') - - def chain_shoulder(prefix="MCH-%s"): - - sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % base_names[mt.arm]) + "_socket") - sw.socket = sw.socket_e.name - sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail - - - # Set the shoulder as parent - ik.update() - sw.update() - mt.update() - - sw.socket_e.parent = sw.shoulder_e - ik.arm_e.parent = sw.shoulder_e - - - # ***** add the shoulder hinge - # yes this is correct, the shoulder copy gets the arm's name - ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % base_names[mt.arm]) + "_hinge") - ex.arm_hinge = ex.arm_hinge_e.name - offset = ex.arm_hinge_e.length / 2.0 - - ex.arm_hinge_e.head.y += offset - ex.arm_hinge_e.tail.y += offset - - # Note: meta arm becomes child of hinge - mt.arm_e.parent = ex.arm_hinge_e - - - bpy.ops.object.mode_set(mode='OBJECT') + bpy.ops.object.mode_set(mode='EDIT') + + # don't blend the shoulder + return [None] + ik_chain.names() - ex.update() - con = mt.arm_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = sw.socket +def fk(obj, definitions, base_names): + + arm = obj.data + + mt = bone_class_instance(obj, METARIG_NAMES) + mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions + mt.update() + ex = bone_class_instance(obj, ["socket", "arm_hinge", "hand_delta"]) + fk_chain = mt.copy(base_names=base_names) + + # shoulder is used as a hinge + fk_chain.rename("shoulder", "MCH-%s_hinge" % base_names[mt.arm]) + fk_chain.shoulder_e.translate(Vector(0.0, fk_chain.shoulder_e.length / 2, 0.0)) + + # upper arm constrains to this. + ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm]) + ex.socket = ex.socket_e.name + ex.socket_e.connected = False + ex.socket_e.parent = mt.shoulder_e + ex.socket_e.tail = mt.shoulder_e.tail + + # insert the 'DLT-hand', between the forearm and the hand + # copies forarm rotation + ex.hand_delta_e = copy_bone_simple(arm, fk_chain.hand, "DLT-%s" % base_names[mt.hand], parent=True) + ex.hand_delta = ex.hand_delta_e.name + ex.hand_delta_e.length *= 0.5 + ex.hand_delta_e.connected = False + + fk_chain.hand_e.connected = False + fk_chain.hand_e.parent = ex.hand_delta_e + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + ex.update() + fk_chain.update() + + con = fk_chain.arm_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.socket + + fk_chain.hand_p.lock_location = True, True, True + con = ex.hand_delta_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = fk_chain.forearm + + def hinge_setup(): # Hinge constraint & driver - con = ex.arm_hinge_p.constraints.new('COPY_ROTATION') + con = fk_chain.shoulder_p.constraints.new('COPY_ROTATION') con.name = "hinge" con.target = obj - con.subtarget = sw.shoulder + con.subtarget = mt.shoulder driver_fcurve = con.driver_add("influence", 0) driver = driver_fcurve.driver - controller_path = mt.arm_p.path_to_id() + controller_path = fk_chain.arm_p.path_to_id() # add custom prop - mt.arm_p["hinge"] = 0.0 - prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True) + fk_chain.arm_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(fk_chain.arm_p, "hinge", create=True) prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 @@ -330,16 +228,21 @@ def main(obj, definitions, base_names): tar.id = obj tar.rna_path = controller_path + '["hinge"]' + mod = driver_fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 - bpy.ops.object.mode_set(mode='EDIT') + hinge_setup() + + bpy.ops.object.mode_set(mode='EDIT') - # remove the shoulder and re-parent + return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand - chain_ik() - chain_switch() - chain_shoulder() - # Shoulder with its delta and hinge. +def main(obj, bone_definition, base_names): + bones_ik = ik(obj, bone_definition, base_names) + bones_fk = fk(obj, bone_definition, base_names) - # TODO - return a list for fk and IK - return None + bpy.ops.object.mode_set(mode='OBJECT') + blend_bone_list(obj, bone_definition, bones_ik, bones_fk) diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 499c0b4b6fa..f38b27c63de 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -146,7 +146,7 @@ def ik(obj, bone_definition, base_names): # Make a new chain, ORG are the original bones renamed. - ik_chain = mt_chain.copy(to_prefix="MCH-") + ik_chain = mt_chain.copy(to_fmt="MCH-%s") # simple rename ik_chain.rename("thigh", ik_chain.thigh + "_ik") diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index a0b86007974..5f4ada6128d 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -41,31 +41,31 @@ def metarig_template(): bone.roll = -3.1396 bone.connected = False bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.04') + bone = arm.edit_bones.new('palm.02') bone.head[:] = 0.5000, -0.0000, 0.0000 bone.tail[:] = 0.6433, 1.2444, -0.1299 bone.roll = -3.1357 bone.connected = False bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.05') + bone = arm.edit_bones.new('palm.01') bone.head[:] = 1.0000, 0.0000, 0.0000 bone.tail[:] = 1.3961, 1.0084, -0.1299 bone.roll = -3.1190 bone.connected = False bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.02') + bone = arm.edit_bones.new('palm.04') bone.head[:] = -0.5000, 0.0000, -0.0000 bone.tail[:] = -0.5674, 1.2022, -0.1299 bone.roll = 3.1386 bone.connected = False bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.01') + bone = arm.edit_bones.new('palm.05') bone.head[:] = -1.0000, 0.0000, -0.0000 bone.tail[:] = -1.3286, 1.0590, -0.1299 bone.roll = 3.1239 bone.connected = False bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.06') + bone = arm.edit_bones.new('thumb') bone.head[:] = 1.3536, -0.2941, 0.0000 bone.tail[:] = 2.1109, 0.4807, -0.1299 bone.roll = -3.0929 @@ -73,16 +73,16 @@ def metarig_template(): bone.parent = arm.edit_bones['hand'] bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['palm.05'] + pbone = obj.pose.bones['palm.01'] pbone['type'] = 'palm' def metarig_definition(obj, orig_bone_name): ''' The bone given is the first in an array of siblings with a matching basename - sorted with the little finger lowest. + sorted with pointer first, little finger last. eg. - [pinky, ring... etc] + [pointer, middle, ring, pinky... ] # any number of fingers ''' arm = obj.data @@ -91,6 +91,7 @@ def metarig_definition(obj, orig_bone_name): palm_base = palm_bone.basename bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] bone_definition.sort() + bone_definition.reverse() return [palm_parent.name] + bone_definition diff --git a/source/blender/python/epy_doc_gen.py b/source/blender/python/epy_doc_gen.py index f16c7504cb2..8783cec93ab 100644 --- a/source/blender/python/epy_doc_gen.py +++ b/source/blender/python/epy_doc_gen.py @@ -691,8 +691,15 @@ def op2epy(BASEPATH): operators = dir(op_mod) for op in sorted(operators): # rna = getattr(bpy.types, op).bl_rna - rna = getattr(op_mod, op).get_rna() - write_func(rna, '', out, 'OPERATOR') + try: + rna = getattr(op_mod, op).get_rna() + except AttributeError: + rna = None + except TypeError: + rna = None + + if rna: + write_func(rna, '', out, 'OPERATOR') out.write('\n') out.close() -- cgit v1.2.3 From d6c583cc540257aeb516471fd724d79efc63ad11 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 12:36:13 +0000 Subject: - use the bone that the type was set for automatic assigned blending property (when blending 2 chains) - delete the type property from the generated rig so running again wont confuse things --- release/scripts/modules/rigify/__init__.py | 13 ++++++++++--- release/scripts/modules/rigify/arm.py | 2 +- release/scripts/modules/rigify/leg.py | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 09a17dffdd4..d4c0169bfbd 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -429,10 +429,17 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # inspect all bones and assign their definitions before modifying for pbone in obj.pose.bones: bone_name = pbone.name - bone_type = obj.pose.bones[bone_name].get("type", "") - bone_type_list = [bt for bt in bone_type.replace(",", " ").split()] + bone_type = pbone.get("type", "") + if bone_type: + bone_type_list = [bt for bt in bone_type.replace(",", " ").split()] + + # not essential but means running autorig again wont do anything + del pbone["type"] + else: + bone_type_list = [] for bone_type in bone_type_list: + type_pair = bone_type.split(".") # 'leg.ik' will look for an ik function in the leg module @@ -500,7 +507,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): definition = bone_def_dict[submod_name] if len(result_submod) == 2: - blend_bone_list(obj, definition, result_submod[0], result_submod[1]) + blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name) if META_DEF: diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 0823f8ad331..d3cdd22dc4a 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -245,4 +245,4 @@ def main(obj, bone_definition, base_names): bones_fk = fk(obj, bone_definition, base_names) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk) + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index f38b27c63de..55f8fb9cf74 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -338,4 +338,4 @@ def main(obj, bone_definition, base_names): bones_fk = fk(obj, bone_definition, base_names) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk) + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) -- cgit v1.2.3 From 9ea765e5d316ca6d2b15da2392e9da3643a856bb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 13:37:19 +0000 Subject: Sculpt Branch: * Smooth brush works again for multires. * Optimal Display option for multires modifier, same as subsurf. --- release/scripts/ui/properties_data_modifier.py | 3 +- source/blender/blenkernel/BKE_multires.h | 20 ++-- source/blender/blenkernel/intern/CCGSubSurf.c | 27 +++-- source/blender/blenkernel/intern/multires.c | 67 ++++++++++-- source/blender/blenkernel/intern/subsurf_ccg.c | 6 +- source/blender/blenlib/BLI_pbvh.h | 9 +- source/blender/blenlib/intern/pbvh.c | 20 ++-- source/blender/editors/sculpt_paint/sculpt.c | 136 ++++++++++++++++++++----- source/blender/makesdna/DNA_modifier_types.h | 6 +- source/blender/makesrna/intern/rna_modifier.c | 9 +- 10 files changed, 236 insertions(+), 67 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 54a4defb676..8194027bae6 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -438,6 +438,7 @@ class DATA_PT_modifiers(DataButtonsPanel): col.prop(md, "levels", text="Preview") col.prop(md, "sculpt_levels", text="Sculpt") col.prop(md, "render_levels", text="Render") + col.prop(md, "optimal_display") if wide_ui: col = split.column() @@ -604,7 +605,7 @@ class DATA_PT_modifiers(DataButtonsPanel): if wide_ui: col = split.column() col.label(text="Options:") - col.prop(md, "optimal_draw", text="Optimal Display") + col.prop(md, "optimal_display") def SURFACE(self, layout, ob, md, wide_ui): layout.label(text="See Fields panel.") diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index 53ead3a5eda..ff320bc7d25 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -27,24 +27,22 @@ * ***** END GPL LICENSE BLOCK ***** */ +#ifndef BKE_MULTIRES_H +#define BKE_MULTIRES_H + struct DerivedMesh; struct Mesh; struct MFace; +struct Multires; struct MultiresModifierData; struct Object; -typedef struct MultiresSubsurf { - struct MultiresModifierData *mmd; - struct Object *ob; - int local_mmd; -} MultiresSubsurf; - void multires_mark_as_modified(struct Object *ob); void multires_force_update(struct Object *ob); -struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*, int local_mmd, struct DerivedMesh*, - struct Object *, int, int); +struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*, + int local_mmd, struct DerivedMesh*, struct Object *, int, int); struct MultiresModifierData *find_multires_modifier(struct Object *ob); void multiresModifier_join(struct Object *); @@ -53,7 +51,11 @@ void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object int updateblock, int simple); int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *dst, struct Object *src); +void multires_stitch_grids(struct Object *); + /* Related to the old multires */ -struct Multires; void multires_load_old(struct DerivedMesh *, struct Multires *); void multires_free(struct Multires*); + +#endif + diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index cc2bd531fe6..4bd0586c592 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -2228,8 +2228,9 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in VertDataZero(FACE_getCenterData(f)); for (S=0; SnumVerts; S++) - for (x=0; xflags&Edge_eEffected) + for (x=0; xnumVerts; S++) { int prevS = (S+f->numVerts-1)%f->numVerts; @@ -2237,18 +2238,23 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in CCGEdge *prevE = FACE_getEdges(f)[prevS]; VertDataAdd(FACE_getCenterData(f), FACE_getIFCo(f, lvl, S, 0, 0)); - VertDataAdd(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx)); + if (FACE_getVerts(f)[S]->flags&Vert_eEffected) + VertDataAdd(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx)); for (x=1; xflags&Edge_eEffected) + VertDataAdd(FACE_getIECo(f, lvl, S, x), FACE_getIFCo(f, lvl, S, x, 0)); + if (FACE_getEdges(f)[prevS]->flags&Edge_eEffected) + VertDataAdd(FACE_getIECo(f, lvl, prevS, x), FACE_getIFCo(f, lvl, S, 0, x)); } for (x=0; xflags&Edge_eEffected) + VertDataAdd(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x)); + if (FACE_getEdges(f)[prevS]->flags&Edge_eEffected) + if(x != 0) + VertDataAdd(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx)); } } } @@ -2276,8 +2282,9 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); for (S=0; SnumVerts; S++) - for (x=1; xflags&Edge_eEffected) + for (x=1; xnumVerts; S++) { int prevS = (S+f->numVerts-1)%f->numVerts; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 69659db3ba7..8a76d659d5f 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -39,6 +39,7 @@ #include "BLI_math.h" #include "BLI_blenlib.h" +#include "BLI_pbvh.h" #include "BKE_btex.h" #include "BKE_cdderivedmesh.h" @@ -60,8 +61,8 @@ /* MULTIRES MODIFIER */ static const int multires_max_levels = 13; -static const int multires_grid_tot[] = {1, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; -static const int multires_side_tot[] = {1, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; +static const int multires_grid_tot[] = {0, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; +static const int multires_side_tot[] = {0, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl); @@ -307,7 +308,7 @@ static DerivedMesh *multires_dm_create_local(Object *ob, DerivedMesh *dm, int lv return multires_dm_create_from_derived(&mmd, 1, dm, ob, 0, 0); } -static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple) +static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple, int optimal) { SubsurfModifierData smd; @@ -316,6 +317,8 @@ static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl smd.flags |= eSubsurfModifierFlag_SubsurfUv; if(simple) smd.subdivType = ME_SIMPLE_SUBSURF; + if(optimal) + smd.flags |= eSubsurfModifierFlag_ControlEdges; return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0); } @@ -363,7 +366,7 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updat /* create subsurf DM from original mesh at high level */ cddm = CDDM_from_mesh(me, NULL); - highdm = subsurf_dm_create_local(ob, cddm, totlvl, simple); + highdm = subsurf_dm_create_local(ob, cddm, totlvl, simple, 0); /* create multires DM from original mesh at low level */ lowdm = multires_dm_create_local(ob, cddm, lvl, lvl, simple); @@ -551,7 +554,7 @@ static void multiresModifier_update(DerivedMesh *dm) /* create subsurf DM from original mesh at high level */ cddm = CDDM_from_mesh(me, NULL); - highdm = subsurf_dm_create_local(ob, cddm, totlvl, mmd->simple); + highdm = subsurf_dm_create_local(ob, cddm, totlvl, mmd->simple, 0); /* create multires DM from original mesh and displacements */ lowdm = multires_dm_create_local(ob, cddm, lvl, totlvl, mmd->simple); @@ -602,7 +605,7 @@ static void multiresModifier_update(DerivedMesh *dm) DerivedMesh *cddm, *subdm; cddm = CDDM_from_mesh(me, NULL); - subdm = subsurf_dm_create_local(ob, cddm, mmd->totlvl, mmd->simple); + subdm = subsurf_dm_create_local(ob, cddm, mmd->totlvl, mmd->simple, 0); cddm->release(cddm); multiresModifier_disp_run(dm, me, 1, 0, subdm->getGridData(subdm), mmd->totlvl); @@ -629,6 +632,25 @@ void multires_force_update(Object *ob) } } +void multires_stitch_grids(Object *ob) +{ + /* utility for smooth brush */ + if(ob && ob->derivedFinal) { + CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)ob->derivedFinal; + CCGFace **faces; + int totface; + + if(ccgdm->pbvh) { + BLI_pbvh_get_grid_updates(ccgdm->pbvh, 0, (void***)&faces, &totface); + + if(totface) { + ccgSubSurf_stitchFaces(ccgdm->ss, 0, faces, totface); + MEM_freeN(faces); + } + } + } +} + struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob, int useRenderParams, int isFinalCalc) { @@ -642,7 +664,8 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i if(lvl == 0) return dm; - result = subsurf_dm_create_local(ob, dm, lvl, 0); + result = subsurf_dm_create_local(ob, dm, lvl, + mmd->simple, mmd->flags & eMultiresModifierFlag_ControlEdges); if(!local_mmd) { ccgdm = (CCGDerivedMesh*)result; @@ -680,6 +703,36 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i /**** Old Multires code **** ***************************/ +#if 0 +static void mdisp_copy_grid(float (*new)[3], int newstride, float (*old)[3], int oldstride, int xoff, int yoff, int xsize, int ysize) +{ + int x, y; + + for(y = 0; y < ysize; ++y) + for(x = 0; x < xsize; ++x) + copy_v3_v3(disps[x + y*side], mdisp->disps[(x + xoffs) + (y + yoffs)*oldside]); + +} + +static void mdisps_convert(MFace *mface, MDisps *mdisp, int lvl) +{ + int side = multires_side_tot[lvl]; + int nvert = (mface->v4)? 4: 3; + int totdisp = multires_grid_tot[lvl]*nvert; + int x, y; + float (*disps)[3]; + + disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); + + + +static const int multires_max_levels = 13; +static const int multires_grid_tot[] = {1, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; +static const int multires_side_tot[] = {1, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; + +} +#endif + /* Does not actually free lvl itself */ static void multires_free_level(MultiresLevel *lvl) { diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index c9d84670044..f6abedda2b6 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1235,7 +1235,7 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) CCGFace **faces; int totface; - BLI_pbvh_get_grid_updates(ccgdm->pbvh, (void***)&faces, &totface); + BLI_pbvh_get_grid_updates(ccgdm->pbvh, 1, (void***)&faces, &totface); if(totface) { ccgSubSurf_updateFromFaces(ss, 0, faces, totface); ccgSubSurf_updateNormals(ss, faces, totface); @@ -2155,8 +2155,8 @@ static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) numGrids = ccgDM_getNumGrids(dm); ccgdm->pbvh = BLI_pbvh_new(); - BLI_pbvh_build_grids(ccgdm->pbvh, ccgdm->gridData, numGrids, gridSize, - (void**)ccgdm->gridFaces); + BLI_pbvh_build_grids(ccgdm->pbvh, ccgdm->gridData, ccgdm->gridAdjacency, + numGrids, gridSize, (void**)ccgdm->gridFaces); } else if(ob->type == OB_MESH) { Mesh *me= ob->data; diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 5c5277dc091..e1e733c91df 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -27,6 +27,7 @@ struct MFace; struct MVert; +struct DMGridAdjacency; struct DMGridData; struct PBVH; struct PBVHNode; @@ -47,7 +48,8 @@ typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data); PBVH *BLI_pbvh_new(void); void BLI_pbvh_build_mesh(PBVH *bvh, struct MFace *faces, struct MVert *verts, int totface, int totvert); -void BLI_pbvh_build_grids(PBVH *bvh, struct DMGridData **grids, int totgrid, +void BLI_pbvh_build_grids(PBVH *bvh, struct DMGridData **grids, + struct DMGridAdjacency *gridadj, int totgrid, int gridsize, void **gridfaces); void BLI_pbvh_free(PBVH *bvh); @@ -94,7 +96,8 @@ typedef enum { void BLI_pbvh_node_mark_update(PBVHNode *node); void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, - int **grid_indices, int *totgrid, int *maxgrid, int *gridsize); + int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, + struct DMGridData ***griddata, struct DMGridAdjacency **gridadj); void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert); @@ -105,7 +108,7 @@ void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]); void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]); -void BLI_pbvh_get_grid_updates(PBVH *bvh, void ***gridfaces, int *totface); +void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *totface); /* Vertex Iterator */ diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 3aa0f43553f..960888260ce 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -114,6 +114,7 @@ struct PBVH { /* Grid Data */ DMGridData **grids; + DMGridAdjacency *gridadj; void **gridfaces; int totgrid; int gridsize; @@ -510,14 +511,15 @@ void BLI_pbvh_build_mesh(PBVH *bvh, MFace *faces, MVert *verts, int totface, int } /* Do a full rebuild with on Grids data structure */ -void BLI_pbvh_build_grids(PBVH *bvh, DMGridData **grids, int totgrid, - int gridsize, void **gridfaces) +void BLI_pbvh_build_grids(PBVH *bvh, DMGridData **grids, DMGridAdjacency *gridadj, + int totgrid, int gridsize, void **gridfaces) { BBC *prim_bbc = NULL; BB cb; int i, j; bvh->grids= grids; + bvh->gridadj= gridadj; bvh->gridfaces= gridfaces; bvh->totgrid= totgrid; bvh->gridsize= gridsize; @@ -948,7 +950,7 @@ void BLI_pbvh_redraw_BB(PBVH *bvh, float bb_min[3], float bb_max[3]) copy_v3_v3(bb_max, bb.bmax); } -void BLI_pbvh_get_grid_updates(PBVH *bvh, void ***gridfaces, int *totface) +void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *totface) { PBVHIter iter; PBVHNode *node; @@ -965,10 +967,12 @@ void BLI_pbvh_get_grid_updates(PBVH *bvh, void ***gridfaces, int *totface) if(node->flag & PBVH_UpdateNormals) { for(i = 0; i < node->totprim; ++i) { face= bvh->gridfaces[node->prim_indices[i]]; - BLI_ghash_insert(map, face, face); + if(!BLI_ghash_lookup(map, face)) + BLI_ghash_insert(map, face, face); } - node->flag &= ~PBVH_UpdateNormals; + if(clear) + node->flag &= ~PBVH_UpdateNormals; } } @@ -1021,19 +1025,23 @@ void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *to } } -void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize) +void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, DMGridData ***griddata, DMGridAdjacency **gridadj) { if(bvh->grids) { if(grid_indices) *grid_indices= node->prim_indices; if(totgrid) *totgrid= node->totprim; if(maxgrid) *maxgrid= bvh->totgrid; if(gridsize) *gridsize= bvh->gridsize; + if(griddata) *griddata= bvh->grids; + if(gridadj) *gridadj= bvh->gridadj; } else { if(grid_indices) *grid_indices= NULL; if(totgrid) *totgrid= 0; if(maxgrid) *maxgrid= 0; if(gridsize) *gridsize= 0; + if(griddata) *griddata= NULL; + if(gridadj) *gridadj= NULL; } } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index d67f13f1537..c715dc97cde 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -415,7 +415,8 @@ static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) unode->node= node; BLI_pbvh_node_num_verts(ss->tree, node, &totvert, &allvert); - BLI_pbvh_node_get_grids(ss->tree, node, &grids, &totgrid, &maxgrid, &gridsize); + BLI_pbvh_node_get_grids(ss->tree, node, &grids, &totgrid, + &maxgrid, &gridsize, NULL, NULL); unode->totvert= totvert; /* we will use this while sculpting, is mapalloc slow to access then? */ @@ -795,9 +796,9 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] BLI_pbvh_vertex_iter_end; } + #pragma omp critical { /* we sum per node and add together later for threads */ - #pragma omp critical add_v3_v3v3(out, out, nout); add_v3_v3v3(out_flip, out_flip, nout_flip); } @@ -903,43 +904,128 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) copy_v3_v3(avg, ss->mvert[vert].co); } -static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node) { Brush *brush = paint_brush(&sd->paint); float bstrength= ss->cache->bstrength; - int iteration, n; + PBVHVertexIter vd; + SculptBrushTest test; + + sculpt_brush_test_init(ss, &test); - /* XXX not working for multires yet */ - if(!ss->fmap) - return; + BLI_pbvh_vertex_iter_begin(ss->tree, node, vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + float avg[3], val[3]; + + 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; + } + } + BLI_pbvh_vertex_iter_end; +} - for(iteration = 0; iteration < 2; ++iteration) { - #pragma omp parallel for private(n) schedule(static) - for(n=0; npaint); + SculptBrushTest test; + DMGridData **griddata, *data; + DMGridAdjacency *gridadj, *adj; + float bstrength= ss->cache->bstrength; + float co[3], (*tmpgrid)[3]; + int v1, v2, v3, v4; + int *grid_indices, totgrid, gridsize, i, x, y; - sculpt_undo_push_node(ss, nodes[n]); - sculpt_brush_test_init(ss, &test); + 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 fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + BLI_pbvh_node_get_grids(ss->tree, node, &grid_indices, &totgrid, + NULL, &gridsize, &griddata, &gridadj); + + #pragma omp critical + tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); + + for(i = 0; i < totgrid; ++i) { + data = griddata[grid_indices[i]]; + adj = &gridadj[grid_indices[i]]; + + 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) { + v1 = x + y*gridsize; + v2 = (x + 1) + y*gridsize; + v3 = (x + 1) + (y + 1)*gridsize; + v4 = x + (y + 1)*gridsize; + + cent_quad_v3(co, data[v1].co, data[v2].co, data[v3].co, data[v4].co); + mul_v3_fl(co, 0.25f); + + add_v3_v3(tmpgrid[v1], co); + add_v3_v3(tmpgrid[v2], co); + add_v3_v3(tmpgrid[v3], co); + add_v3_v3(tmpgrid[v4], co); + } + } + + /* 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; + + copy_v3_v3(co, data[x + y*gridsize].co); + + if(sculpt_brush_test(&test, co)) { + float fade = tex_strength(ss, brush, co, test.dist)*bstrength; float avg[3], val[3]; + + copy_v3_v3(avg, tmpgrid[x + y*gridsize]); + if(x == 0 || x == gridsize - 1) + mul_v3_fl(avg, 2.0f); + if(y == 0 || y == gridsize - 1) + mul_v3_fl(avg, 2.0f); + + 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; - 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; + sculpt_clip(sd, ss, data[x + y*gridsize].co, val); } } - BLI_pbvh_vertex_iter_end; + } + } + + #pragma omp critical + MEM_freeN(tmpgrid); +} + +static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + int iteration, n; + + for(iteration = 0; iteration < 2; ++iteration) { + #pragma omp parallel for private(n) schedule(static) + for(n=0; nfmap) + do_mesh_smooth_brush(sd, ss, nodes[n]); + else + do_multires_smooth_brush(sd, ss, nodes[n]); BLI_pbvh_node_mark_update(nodes[n]); } + + if(!ss->fmap) + multires_stitch_grids(ss->ob); } } diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 33130c6732f..c599c8a7e0f 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -586,9 +586,13 @@ typedef struct MultiresModifierData { ModifierData modifier; char lvl, sculptlvl, renderlvl, totlvl; - char simple, pad[3]; + char simple, flags, pad[2]; } MultiresModifierData; +typedef enum { + eMultiresModifierFlag_ControlEdges = (1<<0), +} MultiresModifierFlag; + typedef struct FluidsimModifierData { ModifierData modifier; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index dedd072011d..cefaf2d7535 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -534,9 +534,9 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna) RNA_def_property_ui_range(prop, 0, 6, 1, 0); RNA_def_property_ui_text(prop, "Render Levels", "Number of subdivisions to perform when rendering."); - prop= RNA_def_property(srna, "optimal_draw", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_ControlEdges); - RNA_def_property_ui_text(prop, "Optimal Draw", "Skip drawing/rendering of interior subdivided edges"); + RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop= RNA_def_property(srna, "subsurf_uv", PROP_BOOLEAN, PROP_NONE); @@ -583,6 +583,11 @@ static void rna_def_modifier_multires(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", "rna_MultiresModifier_external_set"); RNA_def_property_editable_func(prop, "rna_MultiresModifier_external_editable"); RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory."); + + prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", eMultiresModifierFlag_ControlEdges); + RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); } static void rna_def_modifier_lattice(BlenderRNA *brna) -- cgit v1.2.3 From a41131db24cd063f770b22bfdfa452511560c4ac Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 14:25:56 +0000 Subject: - added editbone.matrix, readonly, utility property that calculates the matrix from the bone roll - spine fixes - arm now uses the average Z axis to place the poll target --- release/scripts/modules/rigify/__init__.py | 9 ++++++++- release/scripts/modules/rigify/arm.py | 2 +- release/scripts/modules/rigify/spine.py | 16 +++++++++------- source/blender/makesrna/intern/rna_armature.c | 26 +++++++++++++++++++++++++- source/blender/python/intern/bpy_driver.c | 4 +++- 5 files changed, 46 insertions(+), 11 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index d4c0169bfbd..c40efce3d75 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -359,11 +359,18 @@ def add_pole_target_bone(obj, base_name, name, mode='CROSS'): parent_dir = parent_head - parent_tail distance = (base_dir.length + parent_dir.length) - + if mode == 'CROSS': + # direction from the angle of the joint offset = base_dir.copy().normalize() - parent_dir.copy().normalize() offset.length = distance + elif mode == 'ZAVERAGE': + # between both bones Z axis + z_axis_a = base_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) + z_axis_b = parent_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) + offset = (z_axis_a + z_axis_b).normalize() * distance else: + # preset axis offset = Vector(0, 0, 0) if mode[0] == "+": val = distance diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index d3cdd22dc4a..66797ddc312 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -111,7 +111,7 @@ def ik(obj, definitions, base_names): ik_chain.arm_e.parent = mt.shoulder_e # Add the bone used for the arms poll target - ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z') + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='ZAVERAGE') # update bones after this! ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 6ebf167cb5c..2ccc10350b1 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -178,16 +178,16 @@ def main(obj, bone_definition, base_names): df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage]) df.ribcage = df.ribcage_e.name df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) + + ex.ribcage_copy_e = copy_bone_simple(arm, mt.ribcage, base_names[mt.ribcage]) + ex.ribcage_copy = ex.ribcage_copy_e.name + ex.ribcage_copy_e.connected = False + ex.ribcage_copy_e.parent = ex.ribcage_hinge_e ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.ribcage]) ex.ribcage = ex.ribcage_e.name ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0)) - ex.ribcage_e.parent = mt.ribcage_e - - ex.ribcage_copy_e = copy_bone_simple(arm, child.name, base_names[mt.ribcage]) - ex.ribcage_copy = ex.ribcage_copy_e.name - ex.ribcage_copy_e.connected = False - ex.ribcage_copy_e.parent = ex.ribcage_hinge_e + ex.ribcage_e.parent = ex.ribcage_copy_e spine_chain = [child.name for child in spine_chain] @@ -294,6 +294,8 @@ def main(obj, bone_definition, base_names): con.target_space = 'LOCAL' # df.ribcage_p / DEF-wgt_rib_cage + df.ribcage_p.lock_location = True, True, True + con = df.ribcage_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = ex.ribcage @@ -329,7 +331,7 @@ def main(obj, bone_definition, base_names): con = ex.spine_rotate_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = mt.ribcage + con.subtarget = ex.ribcage_copy # ex.pelvis_p / MCH-wgt_pelvis diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index bfab46aa11c..6a6c370977a 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -43,9 +43,10 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_idprop.h" -#include "BKE_main.h" +#include "BKE_main.h"" #include "ED_armature.h" +#include "BKE_armature.h" static void rna_Armature_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { @@ -304,6 +305,21 @@ static void rna_EditBone_parent_set(PointerRNA *ptr, PointerRNA value) } } +static void rna_EditBone_matrix_get(PointerRNA *ptr, float *values) +{ + EditBone *ebone= (EditBone*)(ptr->data); + + float delta[3], tmat[3][3], mat[4][4]; + + /* Find the current bone matrix */ + sub_v3_v3v3(delta, ebone->tail, ebone->head); + vec_roll_to_mat3(delta, ebone->roll, tmat); + copy_m4_m3(mat, tmat); + VECCOPY(mat[3], ebone->head); + + memcpy(values, mat, 16 * sizeof(float)); +} + static void rna_Armature_editbone_transform_update(Main *bmain, Scene *scene, PointerRNA *ptr) { bArmature *arm= (bArmature*)ptr->id.data; @@ -618,6 +634,14 @@ static void rna_def_edit_bone(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Tail Selected", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); + /* calculated and read only, not actual data access */ + prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); + //RNA_def_property_float_sdna(prop, NULL, ""); // doesnt access any real data + RNA_def_property_array(prop, 16); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Editbone Matrix", "Read-only matrix calculated from the roll (armature space)."); + RNA_def_property_float_funcs(prop, "rna_EditBone_matrix_get", NULL, NULL); // TODO - this could be made writable also + RNA_api_armature_edit_bone(srna); RNA_define_verify_sdna(1); diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c index 9acd6b1cd44..76df28494ac 100644 --- a/source/blender/python/intern/bpy_driver.c +++ b/source/blender/python/intern/bpy_driver.c @@ -192,7 +192,9 @@ float BPY_pydriver_eval (ChannelDriver *driver) } fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add variable '%s' to namespace \n", dtar->name); - BPy_errors_to_report(NULL); // TODO - reports + // BPy_errors_to_report(NULL); // TODO - reports + PyErr_Print(); + PyErr_Clear(); } } -- cgit v1.2.3 From 5dd68e8cb62dd6bd755543fd4f2d152e6840234b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 14:29:55 +0000 Subject: some more rig options, fix typo --- release/scripts/modules/rigify/arm.py | 12 +++++++++++- release/scripts/modules/rigify/leg.py | 5 +++++ source/blender/makesrna/intern/rna_armature.c | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 66797ddc312..6ed564ac070 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -126,7 +126,12 @@ def ik(obj, definitions, base_names): mt.update() ik.update() ik_chain.update() - + + # Set IK dof + ik_chain.forearm_p.ik_dof_x = True + ik_chain.forearm_p.ik_dof_y = False + ik_chain.forearm_p.ik_dof_z = False + con = ik_chain.forearm_p.constraints.new('IK') con.target = obj con.subtarget = ik_chain.hand @@ -191,6 +196,11 @@ def fk(obj, definitions, base_names): ex.update() fk_chain.update() + # Set rotation modes and axis locks + fk_chain.forearm_p.rotation_mode = 'XYZ' + fk_chain.forearm_p.lock_rotation = (False, True, True) + fk_chain.hand_p.rotation_mode = 'ZXY' + con = fk_chain.arm_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.socket diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index 55f8fb9cf74..ed28c21fd32 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -213,6 +213,11 @@ def ik(obj, bone_definition, base_names): mt_chain.update() ik_chain.update() + # Set IK dof + ik_chain.shin_p.ik_dof_x = True + ik_chain.shin_p.ik_dof_y = False + ik_chain.shin_p.ik_dof_z = False + # IK con = ik_chain.shin_p.constraints.new('IK') con.chain_length = 2 diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 6a6c370977a..4859f23967f 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -43,7 +43,7 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_idprop.h" -#include "BKE_main.h"" +#include "BKE_main.h" #include "ED_armature.h" #include "BKE_armature.h" -- cgit v1.2.3 From f54776b1a677a8650cf3c18111643c0379c51724 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 14:37:26 +0000 Subject: VBO: * Fix #19785: curves not drawing with VBO enabled * Fix #19553: duplicate Window crashes with VBO's The convention in Blender was to have GL_VERTEX_ARRAY and GL_NORMAL_ARRAY enabled by default, and other arrays disabled. The VBO drawing code did not take this into account. I've made these now disabled by default, since that makes the code clearer in other places too. --- source/blender/editors/space_view3d/drawobject.c | 40 +++++++++++++----------- source/blender/gpu/intern/gpu_buffers.c | 8 +---- source/blender/gpu/intern/gpu_draw.c | 8 +++-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index fa8eee630aa..31c12285293 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3010,7 +3010,7 @@ static int drawDispListwire(ListBase *dlbase) if(dlbase==NULL) return 1; - glDisableClientState(GL_NORMAL_ARRAY); + glEnableClientState(GL_VERTEX_ARRAY); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); for(dl= dlbase->first; dl; dl= dl->next) { @@ -3087,7 +3087,7 @@ static int drawDispListwire(ListBase *dlbase) } } - glEnableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); return 0; @@ -3106,6 +3106,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl) glGetFloatv(GL_CURRENT_COLOR, curcol); glEnable(GL_LIGHTING); + glEnableClientState(GL_VERTEX_ARRAY); if(ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW); else glFrontFace(GL_CCW); @@ -3164,10 +3165,12 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl) if(dl->rt & CU_SMOOTH) glShadeModel(GL_SMOOTH); else glShadeModel(GL_FLAT); - + + glEnableClientState(GL_NORMAL_ARRAY); glVertexPointer(3, GL_FLOAT, 0, dl->verts); glNormalPointer(GL_FLOAT, 0, dl->nors); glDrawElements(GL_QUADS, 4*dl->totindex, GL_UNSIGNED_INT, dl->index); + glDisableClientState(GL_NORMAL_ARRAY); } break; @@ -3177,32 +3180,35 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl) glVertexPointer(3, GL_FLOAT, 0, dl->verts); /* voor polys only one normal needed */ - if(index3_nors_incr==0) { - glDisableClientState(GL_NORMAL_ARRAY); - glNormal3fv(ndata); + if(index3_nors_incr) { + glEnableClientState(GL_NORMAL_ARRAY); + glNormalPointer(GL_FLOAT, 0, dl->nors); } else - glNormalPointer(GL_FLOAT, 0, dl->nors); + glNormal3fv(ndata); glDrawElements(GL_TRIANGLES, 3*dl->parts, GL_UNSIGNED_INT, dl->index); - if(index3_nors_incr==0) - glEnableClientState(GL_NORMAL_ARRAY); + if(index3_nors_incr) + glDisableClientState(GL_NORMAL_ARRAY); break; case DL_INDEX4: GPU_enable_material(dl->col+1, (glsl)? &gattribs: NULL); + glEnableClientState(GL_NORMAL_ARRAY); glVertexPointer(3, GL_FLOAT, 0, dl->verts); glNormalPointer(GL_FLOAT, 0, dl->nors); glDrawElements(GL_QUADS, 4*dl->parts, GL_UNSIGNED_INT, dl->index); + glDisableClientState(GL_NORMAL_ARRAY); break; } dl= dl->next; } + glDisableClientState(GL_VERTEX_ARRAY); glShadeModel(GL_FLAT); glDisable(GL_LIGHTING); glFrontFace(GL_CCW); @@ -3216,7 +3222,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob) if(lb==NULL) return; glShadeModel(GL_SMOOTH); - glDisableClientState(GL_NORMAL_ARRAY); + glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); dl= lb->first; @@ -3255,7 +3261,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob) } glShadeModel(GL_FLAT); - glEnableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); } @@ -3996,14 +4002,12 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv /* 6. */ glGetIntegerv(GL_POLYGON_MODE, polygonmode); - glDisableClientState(GL_NORMAL_ARRAY); + glEnableClientState(GL_VERTEX_ARRAY); if(draw_as==PART_DRAW_PATH){ ParticleCacheKey **cache, *path; float *cd2=0,*cdata2=0; - glEnableClientState(GL_VERTEX_ARRAY); - /* setup gl flags */ if(ob_dt > OB_WIRE) { glEnableClientState(GL_NORMAL_ARRAY); @@ -4131,7 +4135,6 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv glDisableClientState(GL_COLOR_ARRAY); cpack(0xC0C0C0); - glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, pdd->vedata); glDrawArrays(GL_LINES, 0, 2*totve); @@ -4144,7 +4147,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv glDisable(GL_LIGHTING); glDisableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); if(states) MEM_freeN(states); @@ -4209,7 +4213,6 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj } glEnableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnable(GL_COLOR_MATERIAL); @@ -4319,7 +4322,8 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glDisable(GL_LIGHTING); glDisable(GL_COLOR_MATERIAL); glDisableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); glEnable(GL_DEPTH_TEST); glLineWidth(1.0f); diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index a59c263055d..3c178b10561 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -388,15 +388,9 @@ GPUBuffer *GPU_buffer_setup( DerivedMesh *dm, GPUDrawObject *object, int size, G DEBUG_VBO("GPU_buffer_setup\n"); - if( globalPool == 0 ) { + if( globalPool == 0 ) globalPool = GPU_buffer_pool_new(); - /* somehow GL_NORMAL_ARRAY is enabled on startup and causes edge drawing code to crash */ - glDisableClientState( GL_VERTEX_ARRAY ); - glDisableClientState( GL_NORMAL_ARRAY ); - glDisableClientState( GL_TEXTURE_COORD_ARRAY ); - glDisableClientState( GL_COLOR_ARRAY ); - } buffer = GPU_buffer_alloc(size,globalPool); if( buffer == 0 ) { dm->drawObject->legacy = 1; diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index c2cf4dfa9fd..db6c7fa5ce0 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -1276,9 +1276,11 @@ void GPU_state_init(void) glDisable(GL_TEXTURE_1D); glDisable(GL_TEXTURE_2D); - /* default on, disable/enable should be local per function */ - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); + /* default disabled, enable should be local per function */ + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); glPixelTransferi(GL_MAP_COLOR, GL_FALSE); glPixelTransferi(GL_RED_SCALE, 1); -- cgit v1.2.3 From daf043b3fea6e8c8c3430d0055a8e3a721a0770a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 15:13:03 +0000 Subject: if bone type root is defined, all new parentless bones become children of it --- release/scripts/modules/rigify/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index c40efce3d75..af345b5e546 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -414,6 +414,9 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # original name mapping base_names = {} + + # add all new parentless children to this bone + root_bone = None bpy.ops.object.mode_set(mode='EDIT') for bone in arm.edit_bones: @@ -444,6 +447,12 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): del pbone["type"] else: bone_type_list = [] + + if bone_type_list == ["root"]: # special case! + if root_bone: + raise Exception("cant have more then 1 root bone, found '%s' and '%s' to have type==root" % (root_bone, bone_name)) + root_bone = bone_name + bone_type_list[:] = [] for bone_type in bone_type_list: @@ -516,6 +525,17 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): if len(result_submod) == 2: blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name) + if root_bone: + # assign all new parentless bones to this + + bpy.ops.object.mode_set(mode='EDIT') + root_ebone = arm.edit_bones[root_bone] + for ebone in arm.edit_bones: + if ebone.parent is None and ebone.name not in base_names: + ebone.connected = False + ebone.parent = root_ebone + bpy.ops.object.mode_set(mode='OBJECT') + if META_DEF: # for pbone in obj_def.pose.bones: -- cgit v1.2.3 From 8df3e7b54c52273b8698f2352b53ce1f79fe4b87 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 15:20:47 +0000 Subject: Sculpt Branch: * Fallback code in case VBO allocation fails. --- source/blender/gpu/intern/gpu_buffers.c | 338 ++++++++++++++++++++++---------- 1 file changed, 231 insertions(+), 107 deletions(-) diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 4c55f759e47..ec9392c3694 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -386,8 +386,22 @@ typedef struct { } VertexBufferFormat; typedef struct { + /* opengl buffer handles */ GLuint vert_buf, index_buf; GLenum index_type; + + /* mesh pointers in case buffer allocation fails */ + MFace *mface; + MVert *mvert; + int *face_indices; + int totface; + + /* grid pointers */ + DMGridData **grids; + int *grid_indices; + int totgrid; + int gridsize; + unsigned int tot_tri, tot_quad; } GPU_Buffers; @@ -398,21 +412,34 @@ void GPU_update_mesh_buffers(void *buffers_v, MVert *mvert, VertexBufferFormat *vert_data; int i; - /* Build VBO */ - glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(VertexBufferFormat) * totvert, - NULL, GL_STATIC_DRAW_ARB); - vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + if(buffers->vert_buf) { + /* Build VBO */ + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBufferDataARB(GL_ARRAY_BUFFER_ARB, + sizeof(VertexBufferFormat) * totvert, + NULL, GL_STATIC_DRAW_ARB); + vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + + if(vert_data) { + for(i = 0; i < totvert; ++i) { + MVert *v = mvert + vert_indices[i]; + VertexBufferFormat *out = vert_data + i; + + copy_v3_v3(out->co, v->co); + memcpy(out->no, v->no, sizeof(short) * 3); + } - for(i = 0; i < totvert; ++i) { - MVert *v = mvert + vert_indices[i]; - VertexBufferFormat *out = vert_data + i; + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + } + else { + glDeleteBuffersARB(1, &buffers->vert_buf); + buffers->vert_buf = 0; + } - copy_v3_v3(out->co, v->co); - memcpy(out->no, v->no, sizeof(short) * 3); + glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); } - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + + buffers->mvert = mvert; } void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, @@ -431,47 +458,61 @@ void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, for(i = 0, tottri = 0; i < totface; ++i) tottri += mface[face_indices[i]].v4 ? 2 : 1; - /* Generate index buffer object */ - glGenBuffersARB(1, &buffers->index_buf); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, - sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB); - - /* Fill the triangle buffer */ - tri_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - for(i = 0; i < totface; ++i) { - MFace *f = mface + face_indices[i]; - int v[3] = {f->v1, f->v2, f->v3}; - - for(j = 0; j < (f->v4 ? 2 : 1); ++j) { - for(k = 0; k < 3; ++k) { - void *value, *key = SET_INT_IN_POINTER(v[k]); - int vbo_index; - - value = BLI_ghash_lookup(map, key); - vbo_index = GET_INT_FROM_POINTER(value); - - if(vbo_index < 0) { - vbo_index = -vbo_index + - tot_uniq_verts - 1; + if(buffers->index_buf) { + /* Generate index buffer object */ + glGenBuffersARB(1, &buffers->index_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB); + + /* Fill the triangle buffer */ + tri_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + if(tri_data) { + for(i = 0; i < totface; ++i) { + MFace *f = mface + face_indices[i]; + int v[3] = {f->v1, f->v2, f->v3}; + + for(j = 0; j < (f->v4 ? 2 : 1); ++j) { + for(k = 0; k < 3; ++k) { + void *value, *key = SET_INT_IN_POINTER(v[k]); + int vbo_index; + + value = BLI_ghash_lookup(map, key); + vbo_index = GET_INT_FROM_POINTER(value); + + if(vbo_index < 0) { + vbo_index = -vbo_index + + tot_uniq_verts - 1; + } + + *tri_data = vbo_index; + ++tri_data; + } + v[0] = f->v4; + v[1] = f->v1; + v[2] = f->v3; } - - *tri_data = vbo_index; - ++tri_data; } - v[0] = f->v4; - v[1] = f->v1; - v[2] = f->v3; + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + } + else { + glDeleteBuffersARB(1, &buffers->index_buf); + buffers->index_buf = 0; } + + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); } - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); - /* Build VBO */ - glGenBuffersARB(1, &buffers->vert_buf); + if(buffers->vert_buf) + glGenBuffersARB(1, &buffers->vert_buf); GPU_update_mesh_buffers(buffers, mvert, vert_indices, totvert); buffers->tot_tri = tottri; + buffers->mface = mface; + buffers->face_indices = face_indices; + buffers->totface = totface; + return buffers; } @@ -485,18 +526,31 @@ void GPU_update_grid_buffers(void *buffers_v, DMGridData **grids, totvert= gridsize*gridsize*totgrid; /* Build VBO */ - glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(DMGridData) * totvert, - NULL, GL_STATIC_DRAW_ARB); - vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - - for(i = 0; i < totgrid; ++i) { - DMGridData *grid= grids[grid_indices[i]]; - memcpy(vert_data, grid, sizeof(DMGridData)*gridsize*gridsize); - vert_data += gridsize*gridsize; + if(buffers->vert_buf) { + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBufferDataARB(GL_ARRAY_BUFFER_ARB, + sizeof(DMGridData) * totvert, + NULL, GL_STATIC_DRAW_ARB); + vert_data = glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + if(vert_data) { + for(i = 0; i < totgrid; ++i) { + DMGridData *grid= grids[grid_indices[i]]; + memcpy(vert_data, grid, sizeof(DMGridData)*gridsize*gridsize); + vert_data += gridsize*gridsize; + } + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + } + else { + glDeleteBuffersARB(1, &buffers->vert_buf); + buffers->vert_buf = 0; + } + glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); } - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + + buffers->grids = grids; + buffers->grid_indices = grid_indices; + buffers->totgrid = totgrid; + buffers->gridsize = gridsize; //printf("node updated %p\n", buffers_v); } @@ -514,57 +568,75 @@ void *GPU_build_grid_buffers(DMGridData **grids, /* Generate index buffer object */ glGenBuffersARB(1, &buffers->index_buf); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); - - if(totquad < USHRT_MAX) { - unsigned short *quad_data; + if(buffers->index_buf) { + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); + + if(totquad < USHRT_MAX) { + unsigned short *quad_data; + + buffers->index_type = GL_UNSIGNED_SHORT; + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned short) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); + + /* Fill the quad buffer */ + quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + if(quad_data) { + for(i = 0; i < totgrid; ++i) { + for(j = 0; j < gridsize-1; ++j) { + for(k = 0; k < gridsize-1; ++k) { + *(quad_data++)= offset + j*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k+1; + *(quad_data++)= offset + j*gridsize + k+1; + } + } - buffers->index_type = GL_UNSIGNED_SHORT; - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, - sizeof(unsigned short) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); - - /* Fill the quad buffer */ - quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - for(i = 0; i < totgrid; ++i) { - for(j = 0; j < gridsize-1; ++j) { - for(k = 0; k < gridsize-1; ++k) { - *(quad_data++)= offset + j*gridsize + k; - *(quad_data++)= offset + (j+1)*gridsize + k; - *(quad_data++)= offset + (j+1)*gridsize + k+1; - *(quad_data++)= offset + j*gridsize + k+1; + offset += gridsize*gridsize; } + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + } + else { + glDeleteBuffersARB(1, &buffers->index_buf); + buffers->index_buf = 0; } - - offset += gridsize*gridsize; } - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); - } - else { - unsigned int *quad_data; + else { + unsigned int *quad_data; + + buffers->index_type = GL_UNSIGNED_INT; + glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, + sizeof(unsigned int) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); + + /* Fill the quad buffer */ + quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + + if(quad_data) { + for(i = 0; i < totgrid; ++i) { + for(j = 0; j < gridsize-1; ++j) { + for(k = 0; k < gridsize-1; ++k) { + *(quad_data++)= offset + j*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k; + *(quad_data++)= offset + (j+1)*gridsize + k+1; + *(quad_data++)= offset + j*gridsize + k+1; + } + } - buffers->index_type = GL_UNSIGNED_INT; - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, - sizeof(unsigned int) * totquad * 4, NULL, GL_STATIC_DRAW_ARB); - - /* Fill the quad buffer */ - quad_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - for(i = 0; i < totgrid; ++i) { - for(j = 0; j < gridsize-1; ++j) { - for(k = 0; k < gridsize-1; ++k) { - *(quad_data++)= offset + j*gridsize + k; - *(quad_data++)= offset + (j+1)*gridsize + k; - *(quad_data++)= offset + (j+1)*gridsize + k+1; - *(quad_data++)= offset + j*gridsize + k+1; + offset += gridsize*gridsize; } + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + } + else { + glDeleteBuffersARB(1, &buffers->index_buf); + buffers->index_buf = 0; } - - offset += gridsize*gridsize; } - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); } /* Build VBO */ - glGenBuffersARB(1, &buffers->vert_buf); + if(buffers->index_buf) + glGenBuffersARB(1, &buffers->vert_buf); GPU_update_grid_buffers(buffers, grids, grid_indices, totgrid, gridsize); buffers->tot_quad = totquad; @@ -576,20 +648,70 @@ void GPU_draw_buffers(void *buffers_v) { GPU_Buffers *buffers = buffers_v; - glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); + if(buffers->vert_buf && buffers->index_buf) { + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_NORMAL_ARRAY); - if(buffers->tot_quad) { - glVertexPointer(3, GL_FLOAT, sizeof(DMGridData), 0); - glNormalPointer(GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, no)); + glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); + glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); - glDrawElements(GL_QUADS, buffers->tot_quad * 4, buffers->index_type, 0); + if(buffers->tot_quad) { + glVertexPointer(3, GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, co)); + glNormalPointer(GL_FLOAT, sizeof(DMGridData), (void*)offsetof(DMGridData, no)); + + glDrawElements(GL_QUADS, buffers->tot_quad * 4, buffers->index_type, 0); + } + else { + glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, co)); + glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, no)); + + glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, buffers->index_type, 0); + } + + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); + } + else if(buffers->totface) { + /* fallback if we are out of memory */ + int i; + + for(i = 0; i < buffers->totface; ++i) { + MFace *f = buffers->mface + buffers->face_indices[i]; + + glBegin((f->v4)? GL_QUADS: GL_TRIANGLES); + glNormal3sv(buffers->mvert[f->v1].no); + glVertex3fv(buffers->mvert[f->v1].co); + glNormal3sv(buffers->mvert[f->v2].no); + glVertex3fv(buffers->mvert[f->v2].co); + glNormal3sv(buffers->mvert[f->v3].no); + glVertex3fv(buffers->mvert[f->v3].co); + if(f->v4) { + glNormal3sv(buffers->mvert[f->v4].no); + glVertex3fv(buffers->mvert[f->v4].co); + } + glEnd(); + } } - else { - glVertexPointer(3, GL_FLOAT, sizeof(VertexBufferFormat), 0); - glNormalPointer(GL_SHORT, sizeof(VertexBufferFormat), (void*)offsetof(VertexBufferFormat, no)); + else if(buffers->totgrid) { + int i, x, y, gridsize = buffers->gridsize; + + for(i = 0; i < buffers->totgrid; ++i) { + DMGridData *grid = buffers->grids[buffers->grid_indices[i]]; + + for(y = 0; y < gridsize-1; y++) { + glBegin(GL_QUAD_STRIP); + for(x = 0; x < gridsize; x++) { + DMGridData *a = &grid[y*gridsize + x]; + DMGridData *b = &grid[(y+1)*gridsize + x]; - glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, buffers->index_type, 0); + glNormal3fv(a->no); + glVertex3fv(a->co); + glNormal3fv(b->no); + glVertex3fv(b->co); + } + glEnd(); + } + } } } @@ -598,8 +720,10 @@ void GPU_free_buffers(void *buffers_v) if(buffers_v) { GPU_Buffers *buffers = buffers_v; - glDeleteBuffersARB(1, &buffers->vert_buf); - glDeleteBuffersARB(1, &buffers->index_buf); + if(buffers->vert_buf) + glDeleteBuffersARB(1, &buffers->vert_buf); + if(buffers->index_buf) + glDeleteBuffersARB(1, &buffers->index_buf); MEM_freeN(buffers); } -- cgit v1.2.3 From 2cc8ef127e1a626f4517c8a0ee9f555fb8b66758 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 16:00:53 +0000 Subject: added collection sequences_all so strips within meta's can be animated --- source/blender/makesdna/DNA_sequence_types.h | 4 +- source/blender/makesrna/intern/rna_sequence.c | 53 ++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 3b8182b8759..6adaf936ed4 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -183,8 +183,8 @@ typedef struct MetaStack { } MetaStack; typedef struct Editing { - ListBase *seqbasep; - ListBase seqbase; + ListBase *seqbasep; /* pointer to the current list of seq's being edited (can be within a meta strip) */ + ListBase seqbase; /* pointer to the top-most seq's */ ListBase metastack; /* Context vars, used to be static */ diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 68bfea7161d..6f9cbd608e3 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -43,6 +43,51 @@ #ifdef RNA_RUNTIME +/* build a temp referene to the parent */ +static int meta_tmp_ref(Sequence *seq_par, Sequence *seq) +{ + for (; seq; seq= seq->next) { + seq->tmp= seq_par; + if(seq->type == SEQ_META) { + meta_tmp_ref(seq, seq->seqbase.first); + } + } +} + +static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) +{ + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + meta_tmp_ref(NULL, ed->seqbase.first); + + rna_iterator_listbase_begin(iter, &ed->seqbase, NULL); +} + +static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *iter) +{ + ListBaseIterator *internal= iter->internal; + Sequence *seq= (Sequence*)internal->link; + + if(seq->seqbase.first) + internal->link= (Link*)seq->seqbase.first; + else if(seq->next) + internal->link= (Link*)seq->next; + else { + internal->link= NULL; + + do { + seq= seq->tmp; // XXX - seq's dont reference their parents! + if(seq && seq->next) { + internal->link= (Link*)seq->next; + break; + } + } while(seq); + } + + iter->valid= (internal->link != NULL); +} + static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; @@ -222,7 +267,7 @@ static char *rna_Sequence_path(PointerRNA *ptr) * TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths) */ if (seq->name+2) - return BLI_sprintfN("sequence_editor.sequences[\"%s\"]", seq->name+2); + return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", seq->name+2); else return BLI_strdup(""); } @@ -613,6 +658,12 @@ static void rna_def_editor(BlenderRNA *brna) RNA_def_property_struct_type(prop, "Sequence"); RNA_def_property_ui_text(prop, "Sequences", ""); + prop= RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); + RNA_def_property_struct_type(prop, "Sequence"); + RNA_def_property_ui_text(prop, "Sequences", ""); + RNA_def_property_collection_funcs(prop, "rna_SequenceEditor_sequences_all_begin", "rna_SequenceEditor_sequences_all_next", 0, 0, 0, 0, 0); + prop= RNA_def_property(srna, "meta_stack", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL); RNA_def_property_struct_type(prop, "Sequence"); -- cgit v1.2.3 From 00b8e65f0aaefc34c91bdfee7f31233bb313f312 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 16:46:41 +0000 Subject: very very bad hack to have sequencer strips fcurve data transform with them. ifdef'd so its not kept in by accident. Committing because without this animating with the sequencer isnt really usable and am not interensted in having many patches applied on artists systems. --- source/blender/blenkernel/BKE_sequence.h | 1 + source/blender/blenkernel/intern/sequence.c | 25 ++++++++++++++++++++++ .../editors/transform/transform_conversions.c | 21 ++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h index acc0d8576a1..b42f023d12a 100644 --- a/source/blender/blenkernel/BKE_sequence.h +++ b/source/blender/blenkernel/BKE_sequence.h @@ -181,6 +181,7 @@ int seq_tx_test(struct Sequence * seq); int check_single_seq(struct Sequence *seq); void fix_single_seq(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); +void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); int shuffle_seq_time(ListBase * seqbasep); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index f11aca32da7..bb1096c9e7e 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -3529,6 +3529,31 @@ void seq_update_muting(Editing *ed) } } + +/* XXX - hackish function needed for transforming strips! TODO - have some better solution */ +void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) +{ + if(scene->adt==NULL || ofs==0) + return; + + char str[32]; + sprintf(str, "[\"%s\"]", seq->name+2); + + FCurve *fcu; + for (fcu= scene->adt->action->curves.first; fcu; fcu= fcu->next) { + if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) { + int i; + for (i = 0; i < fcu->totvert; i++) { + BezTriple *bezt= &fcu->bezt[i]; + bezt->vec[0][0] += ofs; + bezt->vec[1][0] += ofs; + bezt->vec[2][0] += ofs; + } + } + } +} + + Sequence *active_seq_get(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 37e56874044..0840d709ef8 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2346,6 +2346,7 @@ void flushTransNodes(TransInfo *t) } /* *** SEQUENCE EDITOR *** */ +#define XXX_DURIAN_ANIM_TX_HACK void flushTransSeq(TransInfo *t) { ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* Editing null check alredy done */ @@ -2374,6 +2375,13 @@ void flushTransSeq(TransInfo *t) if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */ seq->start= new_frame - tdsq->start_offset; +#ifdef XXX_DURIAN_ANIM_TX_HACK + if (seq->type != SEQ_META && seq != seq_prev) { + int ofs = (new_frame - tdsq->start_offset) - seq->start; + seq_offset_animdata(t->scene, seq, ofs); + } +#endif + if (seq->depth==0) { seq->machine= (int)floor(td2d->loc[1] + 0.5f); CLAMP(seq->machine, 1, MAXSEQ); @@ -3828,6 +3836,19 @@ static short constraints_list_needinv(TransInfo *t, ListBase *list) */ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count, int *flag) { + +#ifdef XXX_DURIAN_ANIM_TX_HACK + /* hack */ + if((seq->flag & SELECT)==0 && seq->type & SEQ_EFFECT) { + Sequence *seq_t[3] = {seq->seq1, seq->seq2, seq->seq3}; + int i; + for(i=0; i<3; i++) { + if (seq_t[i] && ((seq_t[i])->flag & SELECT) && !(seq_t[i]->flag & SEQ_LOCK) && !(seq_t[i]->flag & (SEQ_LEFTSEL|SEQ_RIGHTSEL))) + seq->flag |= SELECT; + } + } +#endif + /* for extend we need to do some tricks */ if (t->mode == TFM_TIME_EXTEND) { -- cgit v1.2.3 From 9e7bb2de8f5601dda3984a578a27b5d3c8e9dc9d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 17:18:39 +0000 Subject: Fix bug #20299: bilateral blur node crashes when the number of iterations is rapidly changed. --- source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c b/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c index b954e876ea1..b4c1bbd7acc 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_bilateralblur.c @@ -229,9 +229,6 @@ static void node_composit_exec_bilateralblur(void *data, bNode *node, bNodeStack SWAP(CompBuf, *source, *new); } - if(node->exec & NODE_BREAK) - free_compbuf(source); - if(img != in[0]->data) free_compbuf(img); -- cgit v1.2.3 From b4d8d51a26caf9a006bd74c4c7207dc56c5f0855 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 17:32:54 +0000 Subject: Fix for bug #20307: snapping in uv editor is related to objects origin. Also updated image window header to use snap element property. --- release/scripts/ui/space_image.py | 3 +-- source/blender/editors/transform/transform_snap.c | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 5714a3d2548..34e6ca7019a 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -288,8 +288,7 @@ class IMAGE_HT_header(bpy.types.Header): row = layout.row(align=True) row.prop(settings, "snap", text="") - if settings.snap: - row.prop(settings, "snap_mode", text="") + row.prop(settings, "snap_element", text="", icon_only=True) # mesh = context.edit_object.data # row.prop_object(mesh, "active_uv_layer", mesh, "uv_textures") diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index b8ea49110fc..34c01339441 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -838,8 +838,6 @@ void CalcSnapGeometry(TransInfo *t, float *vec) t->tsnap.snapPoint[0] *= aspx; t->tsnap.snapPoint[1] *= aspy; - mul_m4_v3(t->obedit->obmat, t->tsnap.snapPoint); - t->tsnap.status |= POINT_INIT; } else -- cgit v1.2.3 From e68dff3e76f4f582aa6f90be567d5bd4b64435bf Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Wed, 9 Dec 2009 17:53:52 +0000 Subject: Move libpython.a to COMLIB (before was PULIB). --- source/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Makefile b/source/Makefile index a106e655e78..e503fdc3302 100644 --- a/source/Makefile +++ b/source/Makefile @@ -177,6 +177,7 @@ COMLIB += $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a COMLIB += $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a COMLIB += $(NAN_MEMUTIL)/lib/libmemutil.a COMLIB += $(NAN_PNG)/lib/libpng.a +COMLIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a # This was a PULIB up to circa r25248 COMLIB += $(OCGDIR)/blender/gen_python/$(DEBUG_DIR)libgen_python.a ifeq ($(WITH_QUICKTIME), true) @@ -276,13 +277,12 @@ PULIB += $(OCGDIR)/blender/ed_userpref/$(DEBUG_DIR)libed_userpref.a PULIB += $(OCGDIR)/blender/ed_gpencil/$(DEBUG_DIR)libed_gpencil.a PULIB += $(OCGDIR)/blender/ed_opsound/$(DEBUG_DIR)libed_opsound.a PULIB += $(OCGDIR)/blender/windowmanager/$(DEBUG_DIR)libwindowmanager.a -PULIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a PULIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a # note, no idea but it suddenly doesn't compile :( PULIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a PULIB += $(NAN_OPENNL)/lib/$(DEBUG_DIR)libopennl.a PULIB += $(NAN_ELBEEM)/lib/$(DEBUG_DIR)libelbeem.a -PULIB += $(NAN_SMOKE)/lib/$(DEBUG_DIR)/libsmoke.a +PULIB += $(NAN_SMOKE)/lib/$(DEBUG_DIR)libsmoke.a ifeq ($(NAN_NO_KETSJI),true) PULIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a -- cgit v1.2.3 From 1601f297c984fd437cb70cebf738bbda199b54f8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 18:03:44 +0000 Subject: Fix #20245: datablock names allowed entering 22 characters but can only accept 21. --- source/blender/editors/interface/interface_handlers.c | 12 ++++++------ source/blender/makesrna/intern/rna_access.c | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c7c0849927c..fe6635d60ab 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1079,9 +1079,9 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho uiStyleFontSet(&style->widget); - origstr= MEM_callocN(sizeof(char)*(data->maxlen+1), "ui_textedit origstr"); + origstr= MEM_callocN(sizeof(char)*data->maxlen, "ui_textedit origstr"); - BLI_strncpy(origstr, but->drawstr, data->maxlen+1); + BLI_strncpy(origstr, but->drawstr, data->maxlen); but->pos= strlen(origstr)-but->ofs; /* XXX solve generic */ @@ -1130,7 +1130,7 @@ static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char asc changed= ui_textedit_delete_selection(but, data); len= strlen(str); - if(len < data->maxlen) { + if(len+1 < data->maxlen) { for(x= data->maxlen; x>but->pos; x--) str[x]= str[x-1]; str[but->pos]= ascii; @@ -1365,7 +1365,7 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste for (y=0; ymaxlen) { + if(len+1 < data->maxlen) { for(x= data->maxlen; x>but->pos; x--) str[x]= str[x-1]; str[but->pos]= buf[y]; @@ -1411,8 +1411,8 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) /* retrieve string */ data->maxlen= ui_get_but_string_max_length(but); - data->str= MEM_callocN(sizeof(char)*(data->maxlen+1), "textedit str"); - ui_get_but_string(but, data->str, data->maxlen+1); + data->str= MEM_callocN(sizeof(char)*data->maxlen, "textedit str"); + ui_get_but_string(but, data->str, data->maxlen); data->origstr= BLI_strdup(data->str); data->selextend= 0; diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 174cb13b0cd..7bfb6d7249f 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -885,6 +885,7 @@ void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *soft *precision= (float)fprop->precision; } +/* this is the max length including \0 terminator */ int RNA_property_string_maxlength(PropertyRNA *prop) { StringPropertyRNA *sprop= (StringPropertyRNA*)rna_ensure_property(prop); @@ -1588,6 +1589,7 @@ char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fi return buf; } +/* this is the length without \0 terminator */ int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop) { StringPropertyRNA *sprop= (StringPropertyRNA*)prop; -- cgit v1.2.3 From 1d53b78036601c2112e3cdcf26c8affb9f1bc95c Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 9 Dec 2009 18:08:14 +0000 Subject: Fix compile problem (warnings are important) --- source/blender/blenkernel/intern/sequence.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index bb1096c9e7e..71382a53d5d 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -3533,13 +3533,14 @@ void seq_update_muting(Editing *ed) /* XXX - hackish function needed for transforming strips! TODO - have some better solution */ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) { + char str[32]; + FCurve *fcu; + if(scene->adt==NULL || ofs==0) return; - char str[32]; sprintf(str, "[\"%s\"]", seq->name+2); - FCurve *fcu; for (fcu= scene->adt->action->curves.first; fcu; fcu= fcu->next) { if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) { int i; -- cgit v1.2.3 From 177e27ea4b426dd49b8661a02d4319a7d2f07e16 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Wed, 9 Dec 2009 18:38:55 +0000 Subject: MSVC 9 projectfiles * quick updates for bpy_driver.c --- projectfiles_vc9/blender/BPY_python/BPY_python.vcproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj b/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj index 42dd1c7cef0..68feafe6bef 100644 --- a/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj +++ b/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj @@ -339,6 +339,10 @@ RelativePath="..\..\..\source\blender\python\intern\bpy_array.c" > + + -- cgit v1.2.3 From 1d9eb1e0a07dd45217297bedfd033a2bd9bf4750 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 9 Dec 2009 18:47:52 +0000 Subject: Invalid return type --- source/blender/makesrna/intern/rna_sequence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 6f9cbd608e3..e401a7c756d 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -44,7 +44,7 @@ #ifdef RNA_RUNTIME /* build a temp referene to the parent */ -static int meta_tmp_ref(Sequence *seq_par, Sequence *seq) +static void meta_tmp_ref(Sequence *seq_par, Sequence *seq) { for (; seq; seq= seq->next) { seq->tmp= seq_par; -- cgit v1.2.3 From 664f2d834a9cea8461df27054b90db5d24b7c232 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 9 Dec 2009 19:41:27 +0000 Subject: Fix #20305: overlay blending mode for specular intensity does not work. --- source/blender/render/intern/source/texture.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index 16372d7a15d..9d03889a747 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -1495,6 +1495,14 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen in= 1.0-(facm+fact*(1.0-tex))*(1.0-out); break; + case MTEX_OVERLAY: + facm= 1.0-facg; + if(out < 0.5f) + in = out * (facm + 2.0f*fact*tex); + else + in = 1.0f - (facm + 2.0f*fact*(1.0 - tex)) * (1.0 - out); + break; + case MTEX_SUB: fact= -fact; case MTEX_ADD: -- cgit v1.2.3 From c16acaff8b546434902bdced6a01a28edc7b0d02 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Wed, 9 Dec 2009 20:03:08 +0000 Subject: Sequencer fix: Transform Strip wouldn't work with default_fader * added default_fader to transform strip, since it used the old fac too. * removed ANIMATEABLE attribute from the settings in the transform strip, since they are animated via the effect_fader and not directly for now. (too confusing) * UI: only show default_fader for the effect strips that support it Sequencer Durian feature: uniform scale for Sequence transform strip. * for now re-using variable for x-axis scaling. Note: This brings back functionality as close to 2.49 as possible. The Start and End values in the current design are not meant to be animated directly, but via the effect_fader. --- release/scripts/ui/space_sequencer.py | 34 +++++++++++++++++---------- source/blender/blenkernel/intern/seqeffects.c | 9 +++++-- source/blender/makesdna/DNA_sequence_types.h | 1 + source/blender/makesrna/intern/rna_sequence.c | 18 ++++++++++++++ 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 026161e23c6..3c6c43ea910 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -401,14 +401,23 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): layout.separator() col = layout.column(align=True) - col.label(text="Scale X:") - col.prop(strip, "scale_start_x", text="Start") - col.prop(strip, "scale_end_x", text="End") - - col = layout.column(align=True) - col.label(text="Scale Y:") - col.prop(strip, "scale_start_y", text="Start") - col.prop(strip, "scale_end_y", text="End") + col.prop(strip, "uniform_scale") + + if (strip.uniform_scale): + col = layout.column(align=True) + col.label(text="Scale:") + col.prop(strip, "scale_start_x", text="Start") + col.prop(strip, "scale_end_x", text="End") + else: + col = layout.column(align=True) + col.label(text="Scale X:") + col.prop(strip, "scale_start_x", text="Start") + col.prop(strip, "scale_end_x", text="End") + + col = layout.column(align=True) + col.label(text="Scale Y:") + col.prop(strip, "scale_start_y", text="Start") + col.prop(strip, "scale_end_y", text="End") layout.separator() @@ -420,10 +429,11 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): col = layout.column(align=True) if strip.type == 'SPEED': col.prop(strip, "speed_fader", text="Speed fader") - else: - col.prop(strip, "use_effect_default_fade", "Default fade") - if not strip.use_effect_default_fade: - col.prop(strip, "effect_fader", text="Effect fader") + elif strip.type in ('CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE', + 'TRANSFORM'): + col.prop(strip, "use_effect_default_fade", "Default fade") + if not strip.use_effect_default_fade: + col.prop(strip, "effect_fader", text="Effect fader") class SEQUENCER_PT_input(SequencerButtonsPanel): diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index a1f81bf6166..50fa34b52e3 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -2007,8 +2007,12 @@ static void do_transform(Sequence * seq,float facf0, int x, int y, yo = y; //factor scale - factxScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0; - factyScale = scale->ScaleyIni + (scale->ScaleyFin - scale->ScaleyIni) * facf0; + if (scale->uniform_scale) { + factxScale = factyScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0; + } else { + factxScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0; + factyScale = scale->ScaleyIni + (scale->ScaleyFin - scale->ScaleyIni) * facf0; + } //Factor translate if(!scale->percent){ @@ -3080,6 +3084,7 @@ static struct SeqEffectHandle get_sequence_effect_impl(int seq_type) rval.free = free_transform_effect; rval.copy = copy_transform_effect; rval.execute = do_transform_effect; + rval.get_default_fac = get_default_fac_fade; break; case SEQ_SPEED: rval.init = init_speed_effect; diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 6adaf936ed4..006e1e594d8 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -221,6 +221,7 @@ typedef struct TransformVars { float rotFin; int percent; int interpolation; + int uniform_scale; /* preserve aspect/ratio when scaling */ } TransformVars; typedef struct SolidColorVars { diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index e401a7c756d..56fea340dae 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -1063,72 +1063,90 @@ static void rna_def_transform(BlenderRNA *brna) prop= RNA_def_property(srna, "scale_start_x", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScalexIni"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Scale Start X", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScaleyIni"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Scale Start Y", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_end_x", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScalexFin"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Scale End X", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_end_y", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScaleyFin"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Scale End Y", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ + RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xIni"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Translate Start X", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yIni"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Translate Start Y", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_end_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xFin"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Translate End X", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_end_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yFin"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_ui_text(prop, "Translate End Y", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotIni"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_range(prop, 0.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation Start", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_end", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotFin"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_range(prop, 0.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation End", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "percent"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ RNA_def_property_enum_items(prop, translation_unit_items); RNA_def_property_ui_text(prop, "Translation Unit", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, interpolation_items); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ RNA_def_property_ui_text(prop, "Interpolation", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } -- cgit v1.2.3 From 80bd73639f57203b0383d9b313b4bd640f24f2ca Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 9 Dec 2009 21:42:21 +0000 Subject: =?UTF-8?q?Patch=20[#20290]=20by=20Bj=C3=B8rnar=20Hansen=20for=20b?= =?UTF-8?q?ug=20[#20270]=202.5a0,=20Select=20Random=20says=20percent=20but?= =?UTF-8?q?=20is=20really=200-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/blender/editors/mesh/editmesh_mods.c | 6 +++--- source/blender/editors/object/object_select.c | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index e7986d227cf..30dc6114097 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3629,7 +3629,7 @@ static int mesh_select_random_exec(bContext *C, wmOperator *op) if(!RNA_boolean_get(op->ptr, "extend")) EM_deselect_all(em); - selectrandom_mesh(em, RNA_float_get(op->ptr, "percentage")/100.0f); + selectrandom_mesh(em, RNA_float_get(op->ptr, "percent")/100.0f); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); @@ -3652,8 +3652,8 @@ void MESH_OT_select_random(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_float_percentage(ot->srna, "percentage", 50.f, 0.0f, 100.0f, "Percentage", "Percentage of elements to select randomly.", 0.f, 100.0f); - RNA_def_boolean(ot->srna, "extend", 0, "Extend Select", ""); + RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f, "Percent", "Percentage of elements to select randomly.", 0.f, 100.0f); + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend Selection", "Extend selection instead of deselecting everything first."); } void EM_select_by_material(EditMesh *em, int index) diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 5366446c8ae..a0223997cfb 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -996,11 +996,11 @@ static int object_select_random_exec(bContext *C, wmOperator *op) } CTX_DATA_END; } - percent = RNA_float_get(op->ptr, "percent"); + percent = RNA_float_get(op->ptr, "percent")/100.0f; CTX_DATA_BEGIN(C, Base*, base, visible_bases) { if (BLI_frand() < percent) { - ED_base_object_select(base, BA_SELECT); + ED_base_object_select(base, BA_SELECT); } } CTX_DATA_END; @@ -1013,7 +1013,7 @@ static int object_select_random_exec(bContext *C, wmOperator *op) void OBJECT_OT_select_random(wmOperatorType *ot) { /* identifiers */ - ot->name= "Random select"; + ot->name= "Select Random"; ot->description = "Set select on random visible objects."; ot->idname= "OBJECT_OT_select_random"; @@ -1026,8 +1026,8 @@ void OBJECT_OT_select_random(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); - RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "percentage of objects to randomly select", 0.0001f, 1.0f); + RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f, "Percent", "Percentage of objects to select randomly", 0.f, 100.0f); + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend Selection", "Extend selection instead of deselecting everything first."); } -- cgit v1.2.3 From 30fd13387dc5b9733a0402f1a58dbbddd162d918 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 22:37:02 +0000 Subject: give IDPropertyGroups's an identifier so they can display text in the listview, hardcoded to "name" --- source/blender/makesrna/intern/rna_ID.c | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 3bcdf373c43..ed73ddef3f5 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -225,6 +225,40 @@ ID *rna_ID_copy(ID *id) return NULL; } +static int rna_IDPropertyGroup_name_length(PointerRNA *ptr) +{ + IDProperty *group=(IDProperty*)ptr->id.data; + IDProperty *idprop; + idprop= IDP_GetPropertyFromGroup(group, "name"); + + if(idprop && idprop->type == IDP_STRING) + return strlen(idprop->data.pointer); + else + return 0; +} + +static void rna_IDPropertyGroup_name_get(PointerRNA *ptr, char *str) +{ + IDProperty *group=(IDProperty*)ptr->id.data; + IDProperty *idprop; + idprop= IDP_GetPropertyFromGroup(group, "name"); + + if(idprop && idprop->type == IDP_STRING) + strcpy(str, idprop->data.pointer); + else + strcpy(str, ""); +} + +void rna_IDPropertyGroup_name_set(PointerRNA *ptr, const char *value) +{ + IDProperty *group=(IDProperty*)ptr->id.data; + IDProperty *idprop; + IDPropertyTemplate val = {0}; + val.str= (char *)value; + idprop = IDP_New(IDP_STRING, val, "name"); + IDP_ReplaceInGroup(group, idprop); +} + #else static void rna_def_ID_properties(BlenderRNA *brna) @@ -275,6 +309,15 @@ static void rna_def_ID_properties(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY); RNA_def_property_struct_type(prop, "IDPropertyGroup"); + // never tested, maybe its useful to have this? +#if 0 + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Name", "Unique name used in the code and scripting."); + RNA_def_struct_name_property(srna, prop); +#endif + /* IDP_ID -- not implemented yet in id properties */ /* ID property groups > level 0, since level 0 group is merged @@ -285,6 +328,16 @@ static void rna_def_ID_properties(BlenderRNA *brna) RNA_def_struct_idproperties_func(srna, "rna_IDPropertyGroup_idproperties"); RNA_def_struct_register_funcs(srna, "rna_IDPropertyGroup_register", "rna_IDPropertyGroup_unregister"); RNA_def_struct_refine_func(srna, "rna_IDPropertyGroup_refine"); + + /* important so python types can have their name used in list views + * however this isnt prefect because it overrides how python would set the name + * when we only really want this so RNA_def_struct_name_property() is set to something useful */ + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_flag(prop, PROP_EXPORT|PROP_IDPROPERTY); + //RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Name", "Unique name used in the code and scripting."); + RNA_def_property_string_funcs(prop, "rna_IDPropertyGroup_name_get", "rna_IDPropertyGroup_name_length", "rna_IDPropertyGroup_name_set"); + RNA_def_struct_name_property(srna, prop); } static void rna_def_ID(BlenderRNA *brna) -- cgit v1.2.3 From 3535be3f6f35af5a766c7bc523c68054584a3ad4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Dec 2009 22:44:26 +0000 Subject: patch from Cessen, tweaks and fixes to metarig elements --- release/scripts/modules/rigify/__init__.py | 28 ++++++++++++++++++--- release/scripts/modules/rigify/arm.py | 19 +++++++++------ release/scripts/modules/rigify/finger.py | 7 +++--- release/scripts/modules/rigify/leg.py | 39 +++++++++++++++++++++--------- release/scripts/modules/rigify/neck.py | 2 +- release/scripts/modules/rigify/palm.py | 7 ++++-- release/scripts/modules/rigify/spine.py | 1 + 7 files changed, 74 insertions(+), 29 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index af345b5e546..2f099474990 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -294,6 +294,28 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta blend_rotation(new_pbone, from_bone_name, to_bone_name) +def get_side_name(name): + ''' + Returns the last part of a string (typically a bone's name) indicating + whether it is a a left or right (or center, or whatever) bone. + Returns an empty string if nothing is found. + ''' + if name[-2] in "-._": + return name[-2:] + else: + return "" + +def get_base_name(name): + ''' + Returns the part of a string (typically a bone's name) corresponding to it's + base name (no sidedness, no ORG prefix). + ''' + if name[-2] in "-._": + return name[:-2] + else: + return name + + def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another @@ -336,7 +358,7 @@ def add_stretch_to(obj, from_name, to_name, name): return stretch_name -def add_pole_target_bone(obj, base_name, name, mode='CROSS'): +def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): ''' Does not actually create a poll target, just the bone to use as a poll target ''' @@ -345,8 +367,8 @@ def add_pole_target_bone(obj, base_name, name, mode='CROSS'): arm = obj.data - poll_ebone = arm.edit_bones.new(base_name + "_poll") - base_ebone = arm.edit_bones[base_name] + poll_ebone = arm.edit_bones.new(name) + base_ebone = arm.edit_bones[base_bone_name] poll_name = poll_ebone.name parent_ebone = base_ebone.parent diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 6ed564ac070..35be7f34e4b 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list +from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from Mathutils import Vector @@ -69,9 +69,6 @@ def metarig_definition(obj, orig_bone_name): if not mt.shoulder_p: raise Exception("could not find '%s' parent, skipping:" % orig_bone_name) - - if mt.arm_p.parent.bone.connected: - raise Exception("expected '%s' to be disconnected from its parent" % orig_bone_name) mt.shoulder = mt.shoulder_p.name @@ -79,11 +76,11 @@ def metarig_definition(obj, orig_bone_name): hands = [] for pbone in obj.pose.bones: index = pbone.parent_index(mt.arm_p) - if index == 2: + if index == 2 and pbone.bone.connected and pbone.bone.parent.connected: hands.append(pbone) if len(hands) != 1: - raise Exception("Expected more then 1 hand found on:", orig_bone_name) + raise Exception("Found %s possible hands attached to this arm, expected 1 from bone: %s" % ([pbone.name for pbone in hands], orig_bone_name)) # first add the 2 new bones mt.hand_p = hands[0] @@ -106,12 +103,18 @@ def ik(obj, definitions, base_names): # IK needs no parent_index ik_chain.hand_e.connected = False ik_chain.hand_e.parent = None + ik_chain.hand_e.local_location = False + ik_chain.rename("hand", get_base_name(base_names[mt.hand]) + "_ik" + get_side_name(mt.hand)) ik_chain.arm_e.connected = False ik_chain.arm_e.parent = mt.shoulder_e # Add the bone used for the arms poll target - ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='ZAVERAGE') + #ik.pole = add_pole_target_bone(obj, mt.forearm, get_base_name(base_names[mt.forearm]) + "_target" + get_side_name(mt.forearm), mode='ZAVERAGE') + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_target" + get_side_name(mt.forearm), mode='ZAVERAGE') + + ik.update() + ik.pole_e.local_location = False # update bones after this! ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) @@ -178,7 +181,7 @@ def fk(obj, definitions, base_names): ex.socket = ex.socket_e.name ex.socket_e.connected = False ex.socket_e.parent = mt.shoulder_e - ex.socket_e.tail = mt.shoulder_e.tail + ex.socket_e.length *= 0.5 # insert the 'DLT-hand', between the forearm and the hand # copies forarm rotation diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index baa9ed49041..ad4206cc432 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -19,7 +19,7 @@ # import bpy -from rigify import get_bone_data, empty_layer, copy_bone_simple +from rigify import get_bone_data, empty_layer, copy_bone_simple, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -98,11 +98,12 @@ def main(obj, bone_definition, base_names): children = orig_pbone.children_recursive tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - base_name = base_names[bone_definition[0]].rsplit(".", 1)[0] + # FIXME, the line below is far too arbitrary + base_name = base_names[bone_definition[0]].rsplit(".", 2)[0] # first make a new bone at the location of the finger #control_ebone = arm.edit_bones.new(base_name) - control_ebone = copy_bone_simple(arm, bone_definition[0], base_name) + control_ebone = copy_bone_simple(arm, bone_definition[0], base_name + get_side_name(base_names[bone_definition[0]]), parent=True) control_bone_name = control_ebone.name # we dont know if we get the name requested control_ebone.connected = orig_ebone.connected diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index ed28c21fd32..aaed335f6c7 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple, blend_bone_list +from rigify import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" @@ -152,15 +152,19 @@ def ik(obj, bone_definition, base_names): ik_chain.rename("thigh", ik_chain.thigh + "_ik") ik_chain.rename("shin", ik_chain.shin + "_ik") - # ik foot, no parents - base_foot_name = base_names[mt_chain.foot] # whatever the foot is called, use that!, XXX - ORG! - ik.foot_e = copy_bone_simple(arm, mt_chain.foot, "%s_ik" % base_foot_name) + # make sure leg is child of hips + ik_chain.thigh_e.parent = mt.hips_e + + # ik foot: no parents + base_foot_name = get_base_name(base_names[mt_chain.foot]) + ik.foot_e = copy_bone_simple(arm, mt_chain.foot, base_foot_name + "_ik" + get_side_name(base_names[mt_chain.foot])) ik.foot = ik.foot_e.name ik.foot_e.tail.z = ik.foot_e.head.z ik.foot_e.roll = 0.0 + ik.foot_e.local_location = False - # heel pointing backwards, half length - ik.foot_roll_e = copy_bone_simple(arm, mt.heel, "%s_roll" % base_foot_name) + # foot roll: heel pointing backwards, half length + ik.foot_roll_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_roll" + get_side_name(base_names[mt_chain.foot])) ik.foot_roll = ik.foot_roll_e.name ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 ik.foot_roll_e.parent = ik.foot_e # heel is disconnected @@ -182,7 +186,7 @@ def ik(obj, bone_definition, base_names): # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 # ------------------ FK or IK? - ik_chain.rename("toe", base_names[mt_chain.toe] + "_ik") + ik_chain.rename("toe", get_base_name(base_names[mt_chain.toe]) + "_ik" + get_side_name(base_names[mt_chain.toe])) ik_chain.toe_e.connected = False ik_chain.toe_e.parent = ik.foot_roll_01_e @@ -201,6 +205,7 @@ def ik(obj, bone_definition, base_names): ik.knee_target_e.translate(offset) ik.knee_target_e.length *= 0.5 ik.knee_target_e.parent = ik.foot_e + ik.knee_target_e.local_location = False # roll the bone to point up... could also point in the same direction as ik.foot_roll # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode @@ -218,6 +223,12 @@ def ik(obj, bone_definition, base_names): ik_chain.shin_p.ik_dof_y = False ik_chain.shin_p.ik_dof_z = False + # Set rotation modes and axis locks + ik.foot_roll_p.rotation_mode = 'XYZ' + ik.foot_roll_p.lock_rotation = False, True, True + ik_chain.toe_p.rotation_mode = 'YXZ' + ik_chain.toe_p.lock_rotation = False, True, True + # IK con = ik_chain.shin_p.constraints.new('IK') con.chain_length = 2 @@ -284,13 +295,10 @@ def fk(obj, bone_definition, base_names): ex.thigh_socket = ex.thigh_socket_e.name ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) - ex.thigh_hinge_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_hinge" % base_names[mt_chain.thigh]) + ex.thigh_hinge_e = copy_bone_simple(arm, mt.hips, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=False) ex.thigh_hinge = ex.thigh_hinge_e.name - ex.thigh_hinge_e.tail = ex.thigh_hinge_e.head + Vector(0.0, 0.0, mt_chain.thigh_e.head.length) - ex.thigh_hinge_e.translate(Vector( - (mt.hips_e.head.x - mt_chain.thigh_e.head.x), 0.0, 0.0)) - ex.thigh_hinge_e.length = mt.hips_e.length - fk_chain = mt_chain.copy() # fk has no prefix! + fk_chain = mt_chain.copy(base_names=base_names) # fk has no prefix! fk_chain.thigh_e.connected = False fk_chain.thigh_e.parent = ex.thigh_hinge_e @@ -301,6 +309,13 @@ def fk(obj, bone_definition, base_names): mt_chain.update() fk_chain.update() + # Set rotation modes and axis locks + fk_chain.shin_p.rotation_mode = 'XYZ' + fk_chain.shin_p.lock_rotation = False, True, True + fk_chain.foot_p.rotation_mode = 'YXZ' + fk_chain.toe_p.rotation_mode = 'YXZ' + fk_chain.toe_p.lock_rotation = False, True, True + con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.thigh_socket diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 887b0b091fc..0aeee59225e 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -135,7 +135,7 @@ def main(obj, bone_definition, base_names): ex.head_e.tail.y += head_length / 2.0 # Yes, use the body bone but call it a head hinge - ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=True) + ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=False) ex.head_hinge_e.connected = False ex.head_hinge = ex.head_hinge_e.name ex.head_hinge_e.head.y += head_length / 4.0 diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index 5f4ada6128d..078e3125b00 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -19,7 +19,7 @@ # import bpy -from rigify import get_bone_data, copy_bone_simple +from rigify import get_bone_data, copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness @@ -105,7 +105,10 @@ def main(obj, bone_definition, base_names): pinky_ebone = arm.edit_bones[children[0]] ring_ebone = arm.edit_bones[children[1]] - control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True) + # FIXME, why split the second one? + base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0] + + control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True) control_name = control_ebone.name offset = (pinky_ebone.head - ring_ebone.head) diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index 2ccc10350b1..ed42d6a2e46 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -148,6 +148,7 @@ def main(obj, bone_definition, base_names): ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent ex.pelvis_copy = ex.pelvis_copy_e.name + ex.pelvis_copy_e.local_location = False # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage]) -- cgit v1.2.3 From 22643b12e86dbb9b8d6d2e193befc44835d14fc5 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 9 Dec 2009 22:54:25 +0000 Subject: show_handles property didn't flip bool properly. Patch by DustyDingo on irc. --- source/blender/makesrna/intern/rna_space.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index ef72b6cbf1f..e4d0769feeb 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1351,7 +1351,7 @@ static void rna_def_space_graph(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); prop= RNA_def_property(srna, "show_handles", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_NOHANDLES); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOHANDLES); RNA_def_property_ui_text(prop, "Show Handles", "Show handles of Bezier control points."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); -- cgit v1.2.3 From 3e43a3f727ba402e7b58e7e83949af5aac1f8382 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Dec 2009 22:58:08 +0000 Subject: Fix notifiers for object active material selection --- source/blender/makesrna/intern/rna_object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 38b449dffb0..d0447cf0376 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1528,13 +1528,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_Object_active_material_get", "rna_Object_active_material_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active Material", "Active material being displayed."); - RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); prop= RNA_def_property(srna, "active_material_index", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "actcol"); RNA_def_property_int_funcs(prop, "rna_Object_active_material_index_get", "rna_Object_active_material_index_set", "rna_Object_active_material_index_range"); RNA_def_property_ui_text(prop, "Active Material Index", "Index of active material slot."); - RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, NULL); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); /* transform */ prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); -- cgit v1.2.3 From ce65569708e666cd9bdb8cc620185394104eed24 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Thu, 10 Dec 2009 00:20:19 +0000 Subject: MSVC 9 projectfiles * added missing header BKE_sequence.h * moved source folder back to correct place (was inside headers folder) --- .../blender/blenkernel/BKE_blenkernel.vcproj | 4 + projectfiles_vc9/blender/loader/BLO_loader.vcproj | 224 ++++++++++----------- 2 files changed, 116 insertions(+), 112 deletions(-) diff --git a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj index ad40639db12..bc6aebb37da 100644 --- a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj +++ b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj @@ -1063,6 +1063,10 @@ RelativePath="..\..\..\source\blender\blenkernel\BKE_script.h" > + + diff --git a/projectfiles_vc9/blender/loader/BLO_loader.vcproj b/projectfiles_vc9/blender/loader/BLO_loader.vcproj index 0ddb02afad1..77edb4b074d 100644 --- a/projectfiles_vc9/blender/loader/BLO_loader.vcproj +++ b/projectfiles_vc9/blender/loader/BLO_loader.vcproj @@ -490,123 +490,123 @@ RelativePath="..\..\..\source\blender\blenloader\BLO_undofile.h" > - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + -- cgit v1.2.3 From 456c11c822191ac289120f56d06846d3a0e93549 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 00:28:18 +0000 Subject: textedit string needs to be one byte longer than maxlen, for terminator. --- .../blender/editors/interface/interface_handlers.c | 161 ++++++--------------- 1 file changed, 46 insertions(+), 115 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index fe6635d60ab..4a7f00d7520 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -71,78 +71,6 @@ #define BUTTON_AUTO_OPEN_THRESH 0.3 #define BUTTON_MOUSE_TOWARDS_THRESH 1.0 -typedef enum uiButtonActivateType { - BUTTON_ACTIVATE_OVER, - BUTTON_ACTIVATE, - BUTTON_ACTIVATE_APPLY, - BUTTON_ACTIVATE_TEXT_EDITING, - BUTTON_ACTIVATE_OPEN -} uiButtonActivateType; - -typedef enum uiHandleButtonState { - BUTTON_STATE_INIT, - BUTTON_STATE_HIGHLIGHT, - BUTTON_STATE_WAIT_FLASH, - BUTTON_STATE_WAIT_RELEASE, - BUTTON_STATE_WAIT_KEY_EVENT, - BUTTON_STATE_NUM_EDITING, - BUTTON_STATE_TEXT_EDITING, - BUTTON_STATE_TEXT_SELECTING, - BUTTON_STATE_MENU_OPEN, - BUTTON_STATE_EXIT -} uiHandleButtonState; - -typedef struct uiHandleButtonData { - wmWindowManager *wm; - wmWindow *window; - ARegion *region; - - int interactive; - - /* overall state */ - uiHandleButtonState state; - int cancel, escapecancel, retval; - int applied, appliedinteractive; - wmTimer *flashtimer; - - /* edited value */ - char *str, *origstr; - double value, origvalue, startvalue; - float vec[3], origvec[3]; - int togdual, togonly; - ColorBand *coba; - CurveMapping *cumap; - - /* tooltip */ - ARegion *tooltip; - wmTimer *tooltiptimer; - - /* auto open */ - int used_mouse; - wmTimer *autoopentimer; - - /* text selection/editing */ - int maxlen, selextend, selstartx; - - /* number editing / dragging */ - int draglastx, draglasty; - int dragstartx, dragstarty; - int dragchange, draglock, dragsel; - float dragf, dragfstart; - CBData *dragcbd; - - /* menu open */ - uiPopupBlockHandle *menu; - int menuretval; - - /* search box */ - ARegion *searchbox; - - /* post activate */ - uiButtonActivateType posttype; - uiBut *postbut; -} uiHandleButtonData; - typedef struct uiAfterFunc { struct uiAfterFunc *next, *prev; @@ -1411,7 +1339,7 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) /* retrieve string */ data->maxlen= ui_get_but_string_max_length(but); - data->str= MEM_callocN(sizeof(char)*data->maxlen, "textedit str"); + data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str"); /* +1 for terminator */ ui_get_but_string(but, data->str, data->maxlen); data->origstr= BLI_strdup(data->str); @@ -1689,7 +1617,7 @@ static void ui_do_but_textedit_select(bContext *C, uiBlock *block, uiBut *but, u static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) { - float softrange, softmin, softmax; + float softmin, softmax; if(but->type == BUT_CURVE) { data->cumap= (CurveMapping*)but->poin; @@ -1712,9 +1640,9 @@ static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) softmin= but->softmin; softmax= but->softmax; - softrange= softmax - softmin; + data->softrange = (float)pow(10, floorf(log10(softmax - softmin) + 0.5)); - data->dragfstart= (softrange == 0.0)? 0.0: (data->value - softmin)/softrange; + data->dragfstart= (data->softrange == 0.0)? 0.0: (data->value - softmin)/data->softrange; data->dragf= data->dragfstart; } @@ -2036,12 +1964,16 @@ static float ui_numedit_apply_snap(int temp, float softmin, float softmax, int s return temp; } -static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx) +static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx, int my) { - float deler, tempf, softmin, softmax, softrange; + float deler, tempf, softmin, softmax; + //float ladder = powf(10.0, floorf((my - data->dragstarty + 25) / 50.0f)); + float ladder = 1.0f; int lvalue, temp, changed= 0; - if(mx == data->draglastx) + printf("(%i, %i)\n", mx, my); + + if(mx == data->draglastx && my == data->draglasty) return changed; /* drag-lock - prevent unwanted scroll adjustments */ @@ -2056,16 +1988,14 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i softmin= but->softmin; 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 */ if(ui_is_but_float(but)) { fac *= 0.01*but->a1; - tempf = data->startvalue + ((mx - data->dragstartx) * fac); - tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap); + tempf = data->startvalue + ((mx - data->dragstartx) * fac) * ladder; + tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap); #if 1 /* fake moving the click start, nicer for dragging back after passing the limit */ if(tempf < softmin) { @@ -2088,8 +2018,12 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i else { fac = 0.5; /* simple 2px == 1 */ - temp= data->startvalue + ((mx - data->dragstartx) * fac); + temp= data->startvalue + floorf((mx - data->dragstartx) * fac) * ladder; temp= ui_numedit_apply_snap(temp, softmin, softmax, snap); + +// printf("x %i y %i\n", mx, my); +// printf("temp %i, dragstartx %i ladder %f\n", temp, data->dragstartx, ladder); + #if 1 /* fake moving the click start, nicer for dragging back after passing the limit */ if(temp < softmin) { @@ -2109,33 +2043,31 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i changed= 1; } } - - data->draglastx= mx; } else { /* Use a non-linear mapping of the mouse drag especially for large floats (normal behavior) */ - deler= 500; + deler= 1000; if(!ui_is_but_float(but)) { - if((softrange)<100) deler= 200.0; - if((softrange)<25) deler= 50.0; + if((data->softrange)<100) deler= 200.0; + if((data->softrange)<25) deler= 50.0; } deler /= fac; - if(ui_is_but_float(but) && softrange > 11) { + if(ui_is_but_float(but) && data->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 */ + data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.002)*ladder; + } else if (!ui_is_but_float(but) && data->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); + data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004)*ladder; } else { /*no scaling */ - data->dragf+= ((float)(mx-data->draglastx))/deler ; + data->dragf+= ((float)(mx-data->draglastx))/deler*ladder ; } - if(data->dragf>1.0) data->dragf= 1.0; - if(data->dragf<0.0) data->dragf= 0.0; - data->draglastx= mx; - tempf= (softmin + data->dragf*softrange); + tempf= (softmin + data->dragf*data->softrange); + + if (tempf > softmax) data->dragf = (softmax - softmin) / data->softrange; + if (tempf < softmin) data->dragf = softmin / data->softrange; if(!ui_is_but_float(but)) { @@ -2154,7 +2086,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i } else { temp= 0; - tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap); + tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap); CLAMP(tempf, softmin, softmax); @@ -2166,6 +2098,8 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i } } + data->draglastx= mx; + data->draglasty= my; return changed; } @@ -2199,6 +2133,7 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(event->type == LEFTMOUSE) { data->dragstartx= data->draglastx= ui_is_a_warp_but(but) ? screen_mx:mx; + data->dragstarty= data->draglasty= ui_is_a_warp_but(but) ? screen_my:my; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } @@ -2229,7 +2164,7 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton snap= (event->ctrl)? (event->shift)? 2: 1: 0; - if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx))) + if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx), (ui_is_a_warp_but(but) ? screen_my:my))) ui_numedit_apply(C, block, but, data); } retval= WM_UI_HANDLER_BREAK; @@ -2309,12 +2244,11 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton static int ui_numedit_but_SLI(uiBut *but, uiHandleButtonData *data, int shift, int ctrl, int mx) { - float deler, f, tempf, softmin, softmax, softrange; + float deler, f, tempf, softmin, softmax; int temp, lvalue, changed= 0; softmin= but->softmin; softmax= but->softmax; - softrange= softmax - softmin; if(but->type==NUMSLI) deler= ((but->x2-but->x1) - 5.0*but->aspect); else if(but->type==HSVSLI) deler= ((but->x2-but->x1)/2 - 5.0*but->aspect); @@ -2330,8 +2264,8 @@ static int ui_numedit_but_SLI(uiBut *but, uiHandleButtonData *data, int shift, i if(shift) f= (f-data->dragfstart)/10.0 + data->dragfstart; - CLAMP(f, 0.0, 1.0); - tempf= softmin + f*softrange; + //CLAMP(f, 0.0, 1.0); + tempf= softmin + f * data->softrange; temp= floor(tempf+.5); if(ctrl) { @@ -2415,7 +2349,9 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(event->type == LEFTMOUSE) { data->dragstartx= mx; + data->dragstarty= my; data->draglastx= mx; + data->draglasty= my; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } @@ -2453,14 +2389,13 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton if(click) { if (click==2) { /* nudge slider to the left or right */ - float f, tempf, softmin, softmax, softrange; + float f, tempf, softmin, softmax; int temp; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); softmin= but->softmin; softmax= but->softmax; - softrange= softmax - softmin; tempf= data->value; temp= (int)data->value; @@ -2469,7 +2404,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton if(but->type==SLI) f= (float)(mx-but->x1)/(but->x2-but->x1); else f= (float)(mx- but->x1)/(but->x2-but->x1); - f= softmin + f*softrange; + f= softmin + f * data->softrange; if(!ui_is_but_float(but)) { if(fstate == BUTTON_STATE_HIGHLIGHT) { if(event->val==KM_PRESS) { if(event->type == LEFTMOUSE) { - if(horizontal) { - data->dragstartx= mx; - data->draglastx= mx; - } - else { - data->dragstartx= my; - data->draglastx= my; - } + data->dragstartx= mx; + data->draglastx= mx; + data->dragstartx= my; + data->draglastx= my; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } -- cgit v1.2.3 From ee124514636be9c7456cf856bd4772af4a02ca48 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 00:41:03 +0000 Subject: Revert bunch of changes I should have committed before. --- .../blender/editors/interface/interface_handlers.c | 161 +++++++++++++++------ 1 file changed, 115 insertions(+), 46 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 4a7f00d7520..4ef59e4b59a 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -71,6 +71,78 @@ #define BUTTON_AUTO_OPEN_THRESH 0.3 #define BUTTON_MOUSE_TOWARDS_THRESH 1.0 +typedef enum uiButtonActivateType { + BUTTON_ACTIVATE_OVER, + BUTTON_ACTIVATE, + BUTTON_ACTIVATE_APPLY, + BUTTON_ACTIVATE_TEXT_EDITING, + BUTTON_ACTIVATE_OPEN +} uiButtonActivateType; + +typedef enum uiHandleButtonState { + BUTTON_STATE_INIT, + BUTTON_STATE_HIGHLIGHT, + BUTTON_STATE_WAIT_FLASH, + BUTTON_STATE_WAIT_RELEASE, + BUTTON_STATE_WAIT_KEY_EVENT, + BUTTON_STATE_NUM_EDITING, + BUTTON_STATE_TEXT_EDITING, + BUTTON_STATE_TEXT_SELECTING, + BUTTON_STATE_MENU_OPEN, + BUTTON_STATE_EXIT +} uiHandleButtonState; + +typedef struct uiHandleButtonData { + wmWindowManager *wm; + wmWindow *window; + ARegion *region; + + int interactive; + + /* overall state */ + uiHandleButtonState state; + int cancel, escapecancel, retval; + int applied, appliedinteractive; + wmTimer *flashtimer; + + /* edited value */ + char *str, *origstr; + double value, origvalue, startvalue; + float vec[3], origvec[3]; + int togdual, togonly; + ColorBand *coba; + CurveMapping *cumap; + + /* tooltip */ + ARegion *tooltip; + wmTimer *tooltiptimer; + + /* auto open */ + int used_mouse; + wmTimer *autoopentimer; + + /* text selection/editing */ + int maxlen, selextend, selstartx; + + /* number editing / dragging */ + int draglastx, draglasty; + int dragstartx, dragstarty; + int dragchange, draglock, dragsel; + float dragf, dragfstart; + CBData *dragcbd; + + /* menu open */ + uiPopupBlockHandle *menu; + int menuretval; + + /* search box */ + ARegion *searchbox; + + /* post activate */ + uiButtonActivateType posttype; + uiBut *postbut; +} uiHandleButtonData; + typedef struct uiAfterFunc { struct uiAfterFunc *next, *prev; @@ -1339,7 +1411,7 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) /* retrieve string */ data->maxlen= ui_get_but_string_max_length(but); - data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str"); /* +1 for terminator */ + data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str"); ui_get_but_string(but, data->str, data->maxlen); data->origstr= BLI_strdup(data->str); @@ -1617,7 +1689,7 @@ static void ui_do_but_textedit_select(bContext *C, uiBlock *block, uiBut *but, u static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) { - float softmin, softmax; + float softrange, softmin, softmax; if(but->type == BUT_CURVE) { data->cumap= (CurveMapping*)but->poin; @@ -1640,9 +1712,9 @@ static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) softmin= but->softmin; softmax= but->softmax; - data->softrange = (float)pow(10, floorf(log10(softmax - softmin) + 0.5)); + softrange= softmax - softmin; - data->dragfstart= (data->softrange == 0.0)? 0.0: (data->value - softmin)/data->softrange; + data->dragfstart= (softrange == 0.0)? 0.0: (data->value - softmin)/softrange; data->dragf= data->dragfstart; } @@ -1964,16 +2036,12 @@ static float ui_numedit_apply_snap(int temp, float softmin, float softmax, int s return temp; } -static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx, int my) +static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx) { - float deler, tempf, softmin, softmax; - //float ladder = powf(10.0, floorf((my - data->dragstarty + 25) / 50.0f)); - float ladder = 1.0f; + float deler, tempf, softmin, softmax, softrange; int lvalue, temp, changed= 0; - printf("(%i, %i)\n", mx, my); - - if(mx == data->draglastx && my == data->draglasty) + if(mx == data->draglastx) return changed; /* drag-lock - prevent unwanted scroll adjustments */ @@ -1988,14 +2056,16 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i softmin= but->softmin; 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 */ if(ui_is_but_float(but)) { fac *= 0.01*but->a1; - tempf = data->startvalue + ((mx - data->dragstartx) * fac) * ladder; - tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap); + tempf = data->startvalue + ((mx - data->dragstartx) * fac); + tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap); #if 1 /* fake moving the click start, nicer for dragging back after passing the limit */ if(tempf < softmin) { @@ -2018,12 +2088,8 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i else { fac = 0.5; /* simple 2px == 1 */ - temp= data->startvalue + floorf((mx - data->dragstartx) * fac) * ladder; + temp= data->startvalue + ((mx - data->dragstartx) * fac); temp= ui_numedit_apply_snap(temp, softmin, softmax, snap); - -// printf("x %i y %i\n", mx, my); -// printf("temp %i, dragstartx %i ladder %f\n", temp, data->dragstartx, ladder); - #if 1 /* fake moving the click start, nicer for dragging back after passing the limit */ if(temp < softmin) { @@ -2043,31 +2109,33 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i changed= 1; } } + + data->draglastx= mx; } else { /* Use a non-linear mapping of the mouse drag especially for large floats (normal behavior) */ - deler= 1000; + deler= 500; if(!ui_is_but_float(but)) { - if((data->softrange)<100) deler= 200.0; - if((data->softrange)<25) deler= 50.0; + if((softrange)<100) deler= 200.0; + if((softrange)<25) deler= 50.0; } deler /= fac; - if(ui_is_but_float(but) && data->softrange > 11) { + if(ui_is_but_float(but) && 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)*ladder; - } else if (!ui_is_but_float(but) && data->softrange > 129) { /* only scale large int buttons */ + 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 */ /* 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)*ladder; + data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004); } else { /*no scaling */ - data->dragf+= ((float)(mx-data->draglastx))/deler*ladder ; + data->dragf+= ((float)(mx-data->draglastx))/deler ; } - tempf= (softmin + data->dragf*data->softrange); - - if (tempf > softmax) data->dragf = (softmax - softmin) / data->softrange; - if (tempf < softmin) data->dragf = softmin / data->softrange; + if(data->dragf>1.0) data->dragf= 1.0; + if(data->dragf<0.0) data->dragf= 0.0; + data->draglastx= mx; + tempf= (softmin + data->dragf*softrange); if(!ui_is_but_float(but)) { @@ -2086,7 +2154,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i } else { temp= 0; - tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap); + tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap); CLAMP(tempf, softmin, softmax); @@ -2098,8 +2166,6 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i } } - data->draglastx= mx; - data->draglasty= my; return changed; } @@ -2133,7 +2199,6 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(event->type == LEFTMOUSE) { data->dragstartx= data->draglastx= ui_is_a_warp_but(but) ? screen_mx:mx; - data->dragstarty= data->draglasty= ui_is_a_warp_but(but) ? screen_my:my; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } @@ -2164,7 +2229,7 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton snap= (event->ctrl)? (event->shift)? 2: 1: 0; - if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx), (ui_is_a_warp_but(but) ? screen_my:my))) + if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx))) ui_numedit_apply(C, block, but, data); } retval= WM_UI_HANDLER_BREAK; @@ -2244,11 +2309,12 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton static int ui_numedit_but_SLI(uiBut *but, uiHandleButtonData *data, int shift, int ctrl, int mx) { - float deler, f, tempf, softmin, softmax; + float deler, f, tempf, softmin, softmax, softrange; int temp, lvalue, changed= 0; softmin= but->softmin; softmax= but->softmax; + softrange= softmax - softmin; if(but->type==NUMSLI) deler= ((but->x2-but->x1) - 5.0*but->aspect); else if(but->type==HSVSLI) deler= ((but->x2-but->x1)/2 - 5.0*but->aspect); @@ -2264,8 +2330,8 @@ static int ui_numedit_but_SLI(uiBut *but, uiHandleButtonData *data, int shift, i if(shift) f= (f-data->dragfstart)/10.0 + data->dragfstart; - //CLAMP(f, 0.0, 1.0); - tempf= softmin + f * data->softrange; + CLAMP(f, 0.0, 1.0); + tempf= softmin + f*softrange; temp= floor(tempf+.5); if(ctrl) { @@ -2349,9 +2415,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(event->type == LEFTMOUSE) { data->dragstartx= mx; - data->dragstarty= my; data->draglastx= mx; - data->draglasty= my; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } @@ -2389,13 +2453,14 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton if(click) { if (click==2) { /* nudge slider to the left or right */ - float f, tempf, softmin, softmax; + float f, tempf, softmin, softmax, softrange; int temp; button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); softmin= but->softmin; softmax= but->softmax; + softrange= softmax - softmin; tempf= data->value; temp= (int)data->value; @@ -2404,7 +2469,7 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton if(but->type==SLI) f= (float)(mx-but->x1)/(but->x2-but->x1); else f= (float)(mx- but->x1)/(but->x2-but->x1); - f= softmin + f * data->softrange; + f= softmin + f*softrange; if(!ui_is_but_float(but)) { if(fstate == BUTTON_STATE_HIGHLIGHT) { if(event->val==KM_PRESS) { if(event->type == LEFTMOUSE) { - data->dragstartx= mx; - data->draglastx= mx; - data->dragstartx= my; - data->draglastx= my; + if(horizontal) { + data->dragstartx= mx; + data->draglastx= mx; + } + else { + data->dragstartx= my; + data->draglastx= my; + } button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); retval= WM_UI_HANDLER_BREAK; } -- cgit v1.2.3 From 11af0ff2702ccd02f5dd7528e3f4c5039c635144 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Thu, 10 Dec 2009 00:51:13 +0000 Subject: * WITH_BF_RAYOPTIMIZATION cleanup and flag separation by matd. This adds BF_RAYOPTIMIZATION_SSE_FLAGS through which one can manage what SSE flags are best for the platform built for. Note that the ray optimizations coded by jaguarandi are SSE-intrinsics only. --- config/darwin-config.py | 8 ++++++++ config/linux2-config.py | 4 ++++ config/win32-mingw-config.py | 4 ++++ config/win32-vc-config.py | 5 +++++ config/win64-vc-config.py | 4 ++++ source/blender/render/SConscript | 29 ++++++++++++++--------------- tools/btools.py | 7 +++++-- 7 files changed, 44 insertions(+), 17 deletions(-) diff --git a/config/darwin-config.py b/config/darwin-config.py index 55cb5d6a253..049fe62f3b0 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -270,6 +270,14 @@ BF_PCRE_LIBPATH = '${BF_PCRE}/lib' #BF_EXPAT_LIB = 'expat' #BF_EXPAT_LIBPATH = '/usr/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +if MACOSX_ARCHITECTURE == 'i386': + BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] +elif MACOSX_ARCHITECTURE == 'x86_64': + BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2'] + + ############################################################################# ################### various compile settings and flags ################## ############################################################################# diff --git a/config/linux2-config.py b/config/linux2-config.py index 3e40b7af416..abe79ba5806 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -167,6 +167,10 @@ BF_EXPAT_LIBPATH = '/usr/lib' WITH_BF_OPENMP = True +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 7973ae930b4..00c70aaaf1f 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -137,6 +137,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py index 60463a07a32..f18ed3e2007 100644 --- a/config/win32-vc-config.py +++ b/config/win32-vc-config.py @@ -148,6 +148,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE'] + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' @@ -155,6 +159,7 @@ BF_OPENGL_LIB = 'opengl32 glu32' BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a', '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a', '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ] + CC = 'cl.exe' CXX = 'cl.exe' diff --git a/config/win64-vc-config.py b/config/win64-vc-config.py index 53df6d96bf8..457640507da 100644 --- a/config/win64-vc-config.py +++ b/config/win64-vc-config.py @@ -161,6 +161,10 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = False +BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE','/arch:SSE2'] + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 2642d31bd35..71c60e046cc 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -4,18 +4,28 @@ Import ('env') cflags = env['CCFLAGS'] cxxflags = env['CXXFLAGS'] +defs = [] + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['/arch:SSE'] + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'win32-mingw': if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['-mfpmath=sse'] + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'darwin': if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CFLAGS'] + ['-mfpmath=sse'] - cxxflags = env['CXXFLAGS'] + ['-mfpmath=sse'] + cflags = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + +if env['OURPLATFORM'] == 'linux2': + if env['WITH_BF_RAYOPTIMIZATION']: + cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + incs += ' ../../../extern/binreloc/include' sources = env.Glob('intern/source/*.c') raysources = env.Glob('intern/raytrace/*.cpp') @@ -24,8 +34,6 @@ incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna' incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf' incs += ' ../include ../blenloader ../../../intern/smoke/extern' -defs = [] - if env['WITH_BF_QUICKTIME']: defs.append('WITH_QUICKTIME') incs += ' ../quicktime ' + env['BF_QUICKTIME_INC'] @@ -33,15 +41,6 @@ if env['WITH_BF_QUICKTIME']: if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') -if env['OURPLATFORM'] == 'linux2': -# SSE is NOT safe all the time on linux, plus that ignores users compile flags and therefore no no -# cflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] -# cxxflags = ['-O2','-msse2','-mfpmath=sse', '-pthread'] - if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] - cxxflags = env['CXXFLAGS'] + ['-O2','-msse2','-mfpmath=sse', '-pthread'] - incs += ' ../../../extern/binreloc/include' - if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] diff --git a/tools/btools.py b/tools/btools.py index d5cc8a543b4..556cb9b901a 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -76,7 +76,8 @@ def validate_arguments(args, bc): 'WITH_BF_FHS', 'BF_VERSION', 'BF_GHOST_DEBUG', - 'WITH_BF_RAYOPTIMIZATION' + 'WITH_BF_RAYOPTIMIZATION', + 'BF_RAYOPTIMIZATION_SSE_FLAGS' ] # Have options here that scons expects to be lists @@ -423,7 +424,9 @@ def read_opts(cfg, args): (BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)), (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)), - (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)) + + (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)), + ('BF_RAYOPTIMIZATION_SSE_FLAGS', 'SSE flags', '') ) # end of opts.AddOptions() return localopts -- cgit v1.2.3 From ef8706c4ea6eff84ddf5ddaad27c0d036d789821 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Thu, 10 Dec 2009 01:11:04 +0000 Subject: wrong code order made linux+scons barf. --- source/blender/render/SConscript | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 71c60e046cc..d9a074c1470 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -1,6 +1,13 @@ #!/usr/bin/python Import ('env') +sources = env.Glob('intern/source/*.c') +raysources = env.Glob('intern/raytrace/*.cpp') + +incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna' +incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf' +incs += ' ../include ../blenloader ../../../intern/smoke/extern' + cflags = env['CCFLAGS'] cxxflags = env['CXXFLAGS'] @@ -27,13 +34,6 @@ if env['OURPLATFORM'] == 'linux2': cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] incs += ' ../../../extern/binreloc/include' -sources = env.Glob('intern/source/*.c') -raysources = env.Glob('intern/raytrace/*.cpp') - -incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna' -incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf' -incs += ' ../include ../blenloader ../../../intern/smoke/extern' - if env['WITH_BF_QUICKTIME']: defs.append('WITH_QUICKTIME') incs += ' ../quicktime ' + env['BF_QUICKTIME_INC'] -- cgit v1.2.3 From 653593b5748eb7ca78c74336bca1166ade0bbc75 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 01:29:43 +0000 Subject: Fix for [#20216] Search List is unordered This sorts RNA collection (bones, vgroups, etc) search lists alphabetically like ID data search lists are already. --- .../blender/editors/interface/interface_layout.c | 60 +++++++++++++++++----- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index ceb5ac10486..168b1532db8 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1057,38 +1057,72 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname) /* Pointer RNA button with search */ +typedef struct CollItemSearch { + struct CollItemSearch *next, *prev; + char *name; + int index; + int iconid; +} CollItemSearch; + +int sort_search_items_list(void *a, void *b) +{ + CollItemSearch *cis1 = (CollItemSearch *)a; + CollItemSearch *cis2 = (CollItemSearch *)b; + + if (BLI_strcasecmp(cis1->name, cis2->name)>0) + return 1; + else + return 0; +} + static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, uiSearchItems *items) { uiBut *but= arg_but; char *name; - int i, iconid, flag= RNA_property_flag(but->rnaprop); + int i=0, iconid=0, flag= RNA_property_flag(but->rnaprop); + ListBase *items_list= MEM_callocN(sizeof(ListBase), "items_list"); + CollItemSearch *cis; - i = 0; + /* build a temporary list of relevant items first */ RNA_PROP_BEGIN(&but->rnasearchpoin, itemptr, but->rnasearchprop) { if(flag & PROP_ID_SELF_CHECK) if(itemptr.data == but->rnapoin.id.data) continue; - - iconid= 0; + if(RNA_struct_is_ID(itemptr.type)) iconid= ui_id_icon_get((bContext*)C, itemptr.data); - + name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); - + if(name) { if(BLI_strcasestr(name, str)) { - if(!uiSearchItemAdd(items, name, SET_INT_IN_POINTER(i), iconid)) { - MEM_freeN(name); - break; - } + cis = MEM_callocN(sizeof(CollItemSearch), "CollectionItemSearch"); + cis->name = MEM_dupallocN(name); + cis->index = i; + cis->iconid = iconid; + BLI_addtail(items_list, cis); } - - MEM_freeN(name); } - + MEM_freeN(name); + i++; } RNA_PROP_END; + + BLI_sortlist(items_list, sort_search_items_list); + + /* add search items from temporary list */ + for (cis=items_list->first; cis; cis=cis->next) { + if (!uiSearchItemAdd(items, cis->name, SET_INT_IN_POINTER(cis->index), cis->iconid)) { + break; + } + } + + for (cis=items_list->first; cis; cis=cis->next) { + MEM_freeN(cis->name); + } + BLI_freelistN(items_list); + MEM_freeN(items_list); } static void search_id_collection(StructRNA *ptype, PointerRNA *ptr, PropertyRNA **prop) -- cgit v1.2.3 From 985c24b0f10da0de347965de0572fb6b715d8f55 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 01:30:47 +0000 Subject: Fix for 'Copy materials to selected' button freezing when using linked geometry --- source/blender/editors/render/render_shading.c | 4 +++- source/blender/editors/space_buttons/space_buttons.c | 1 + source/blender/makesrna/intern/rna_object.c | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 59b220dec63..4be35a4a2c4 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -442,7 +442,9 @@ static int material_slot_copy_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { if(ob != ob_iter && give_matarar(ob_iter)) { - assign_matarar(ob_iter, matar, ob->totcol); + if (ob->data != ob_iter->data) + assign_matarar(ob_iter, matar, ob->totcol); + if(ob_iter->totcol==ob->totcol) { ob_iter->actcol= ob->actcol; WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter); diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 9fc24516d2d..6c13a36cdf3 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -274,6 +274,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_CONSTRAINT: ED_area_tag_redraw(sa); break; + case ND_DRAW: case ND_SHADING: case ND_SHADING_DRAW: /* currently works by redraws... if preview is set, it (re)starts job */ diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index d0447cf0376..c4bfb9e0197 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1040,13 +1040,13 @@ static void rna_def_material_slot(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, "rna_MaterialSlot_material_get", "rna_MaterialSlot_material_set", NULL); RNA_def_property_ui_text(prop, "Material", "Material datablock used by this material slot."); - RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); prop= RNA_def_property(srna, "link", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, link_items); RNA_def_property_enum_funcs(prop, "rna_MaterialSlot_link_get", "rna_MaterialSlot_link_set", NULL); RNA_def_property_ui_text(prop, "Link", "Link material to object or the object's data."); - RNA_def_property_update(prop, NC_OBJECT|ND_SHADING, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_MaterialSlot_name_get", "rna_MaterialSlot_name_length", NULL); -- cgit v1.2.3 From a4e4d0f6585fe6e9e2aa4b86f82e5c3a2b8420f1 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 02:43:55 +0000 Subject: Fix for [#20140] Double Properties Panel on 3dview from 2.4x fles --- source/blender/blenloader/intern/readfile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 2ad628da428..860225b7dc3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6010,7 +6010,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) ar= MEM_callocN(sizeof(ARegion), "toolbar for view3d"); BLI_addtail(lb, ar); - ar->regiontype= RGN_TYPE_UI; + ar->regiontype= RGN_TYPE_TOOLS; ar->alignment= RGN_ALIGN_LEFT; ar->flag = RGN_FLAG_HIDDEN; @@ -6018,7 +6018,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) ar= MEM_callocN(sizeof(ARegion), "tool properties for view3d"); BLI_addtail(lb, 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; -- cgit v1.2.3 From 64c29743c3a25bbcafcd03bdec9e3f1764f43ba1 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 03:07:04 +0000 Subject: Fix for [#20153] Scale region size from search crashes Blender 2.5 24999 --- source/blender/editors/screen/screen_ops.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 87716190994..1a0ae95dfe0 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1301,7 +1301,14 @@ typedef struct RegionMoveData { static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) { sActionzoneData *sad= event->customdata; - AZone *az= sad->az; + AZone *az; + + if(event->type!=EVT_ACTIONZONE_AREA) { + BKE_report(op->reports, RPT_ERROR, "Can only scale region size from an action zone"); + return OPERATOR_CANCELLED; + } + + az = sad->az; if(az->ar) { RegionMoveData *rmd= MEM_callocN(sizeof(RegionMoveData), "RegionMoveData"); -- cgit v1.2.3 From 4bcb759c946e2a3f2f676d2f57e3536478dc7613 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 05:05:04 +0000 Subject: Attempted fix for [#19810] Crash when flipping header with F5 --- source/blender/editors/screen/screen_ops.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 1a0ae95dfe0..838af633362 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1303,7 +1303,7 @@ static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) sActionzoneData *sad= event->customdata; AZone *az; - if(event->type!=EVT_ACTIONZONE_AREA) { + if(event->type!=EVT_ACTIONZONE_REGION) { BKE_report(op->reports, RPT_ERROR, "Can only scale region size from an action zone"); return OPERATOR_CANCELLED; } @@ -2111,6 +2111,9 @@ static int region_flip_exec(bContext *C, wmOperator *op) { ARegion *ar= CTX_wm_region(C); + if (!ar) + return OPERATOR_CANCELLED; + if(ar->alignment==RGN_ALIGN_TOP) ar->alignment= RGN_ALIGN_BOTTOM; else if(ar->alignment==RGN_ALIGN_BOTTOM) @@ -2121,7 +2124,6 @@ static int region_flip_exec(bContext *C, wmOperator *op) ar->alignment= RGN_ALIGN_LEFT; WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - printf("executed region flip\n"); return OPERATOR_FINISHED; } -- cgit v1.2.3 From 900165bc722ebcec55a61916ff6aad601da1edd0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 08:54:16 +0000 Subject: raise an error when adding/removing editbones when the armature is not in editmode (without this blender crashes) --- source/blender/makesrna/intern/rna_armature.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 4859f23967f..cb030bf0c31 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -94,13 +94,21 @@ static void rna_Armature_act_edit_bone_set(PointerRNA *ptr, PointerRNA value) } } -EditBone *rna_Armature_edit_bone_new(bArmature *arm, char *name) +EditBone *rna_Armature_edit_bone_new(bArmature *arm, ReportList *reports, char *name) { + if(arm->edbo==NULL) { + BKE_reportf(reports, RPT_ERROR, "Armature '%s' not in editmode, cant add an editbone.", arm->id.name+2); + return NULL; + } return ED_armature_edit_bone_add(arm, name); } -void rna_Armature_edit_bone_remove(bArmature *arm, EditBone *ebone) +void rna_Armature_edit_bone_remove(bArmature *arm, ReportList *reports, EditBone *ebone) { + if(arm->edbo==NULL) { + BKE_reportf(reports, RPT_ERROR, "Armature '%s' not in editmode, cant remove an editbone.", arm->id.name+2); + return; + } ED_armature_edit_bone_remove(arm, ebone); } @@ -701,15 +709,18 @@ static void rna_def_armature_edit_bones(BlenderRNA *brna, PropertyRNA *cprop) /* add target */ func= RNA_def_function(srna, "new", "rna_Armature_edit_bone_new"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Add a new bone."); parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the bone."); RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ parm= RNA_def_pointer(func, "bone", "EditBone", "", "Newly created edit bone."); RNA_def_function_return(func, parm); /* remove target */ func= RNA_def_function(srna, "remove", "rna_Armature_edit_bone_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Remove an existing bone from the armature."); /* target to remove*/ parm= RNA_def_pointer(func, "bone", "EditBone", "", "EditBone to remove."); -- cgit v1.2.3 From 24be31bda01e5aae56a7d637674a888f0ab54f80 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 09:25:30 +0000 Subject: Fix for [#19776] Header bar problem in 2.5 Prevents dragging region edges outside area boundaries or into other regions. --- source/blender/editors/screen/screen_ops.c | 895 +++++++++++++++-------------- 1 file changed, 466 insertions(+), 429 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 838af633362..b67001a454c 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -180,10 +180,10 @@ int ED_operator_buttons_active(bContext *C) int ED_operator_node_active(bContext *C) { SpaceNode *snode= CTX_wm_space_node(C); - + if(snode && snode->edittree) return 1; - + return 0; } @@ -252,7 +252,7 @@ int ED_operator_posemode(bContext *C) if ((obact != obedit) && (obact) && (obact->type==OB_ARMATURE)) return (obact->mode & OB_MODE_POSE)!=0; - + return 0; } @@ -261,15 +261,15 @@ int ED_operator_uvedit(bContext *C) { Object *obedit= CTX_data_edit_object(C); EditMesh *em= NULL; - + if(obedit && obedit->type==OB_MESH) em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - + if(em && (em->faces.first) && (CustomData_has_layer(&em->fdata, CD_MTFACE))) { BKE_mesh_end_editmesh(obedit->data, em); return 1; } - + if(obedit) BKE_mesh_end_editmesh(obedit->data, em); return 0; @@ -279,15 +279,15 @@ int ED_operator_uvmap(bContext *C) { Object *obedit= CTX_data_edit_object(C); EditMesh *em= NULL; - + if(obedit && obedit->type==OB_MESH) em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - + if(em && (em->faces.first)) { BKE_mesh_end_editmesh(obedit->data, em); return 1; } - + if(obedit) BKE_mesh_end_editmesh(obedit->data, em); return 0; @@ -345,27 +345,27 @@ int ED_operator_editmball(bContext *C) /* *************************** action zone operator ************************** */ /* operator state vars used: - none - -functions: - - apply() set actionzone event - - exit() free customdata - -callbacks: - - exec() never used - - invoke() check if in zone - add customdata, put mouseco and area in it - add modal handler - - modal() accept modal events while doing it - call apply() with gesture info, active window, nonactive window - call exit() and remove handler when LMB confirm - -*/ + none + + functions: + + apply() set actionzone event + + exit() free customdata + + callbacks: + + exec() never used + + invoke() check if in zone + add customdata, put mouseco and area in it + add modal handler + + modal() accept modal events while doing it + call apply() with gesture info, active window, nonactive window + call exit() and remove handler when LMB confirm + + */ typedef struct sActionzoneData { ScrArea *sa1, *sa2; @@ -399,7 +399,7 @@ static int actionzone_area_poll(bContext *C) for(az= sa->actionzones.first; az; az= az->next) if(BLI_in_rcti(&az->rect, x, y)) - return 1; + return 1; } return 0; } @@ -514,14 +514,14 @@ static int actionzone_modal(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } - break; + break; case ESCKEY: actionzone_exit(C, op); return OPERATOR_CANCELLED; case LEFTMOUSE: actionzone_exit(C, op); return OPERATOR_CANCELLED; - + } return OPERATOR_RUNNING_MODAL; @@ -537,7 +537,7 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot) ot->invoke= actionzone_invoke; ot->modal= actionzone_modal; ot->poll= actionzone_area_poll; - + ot->flag= OPTYPE_BLOCKING; RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2); @@ -546,25 +546,25 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot) /* ************** swap area operator *********************************** */ /* operator state vars used: - sa1 start area - sa2 area to swap with - - functions: - - init() set custom data for operator, based on actionzone event custom data - - cancel() cancel the operator - - exit() cleanup, send notifier - - callbacks: - - invoke() gets called on shift+lmb drag in actionzone - call init(), add handler - - modal() accept modal events while doing it - -*/ + sa1 start area + sa2 area to swap with + + functions: + + init() set custom data for operator, based on actionzone event custom data + + cancel() cancel the operator + + exit() cleanup, send notifier + + callbacks: + + invoke() gets called on shift+lmb drag in actionzone + call init(), add handler + + modal() accept modal events while doing it + + */ typedef struct sAreaSwapData { ScrArea *sa1, *sa2; @@ -574,15 +574,15 @@ static int area_swap_init(bContext *C, wmOperator *op, wmEvent *event) { sAreaSwapData *sd= NULL; sActionzoneData *sad= event->customdata; - + if(sad==NULL || sad->sa1==NULL) - return 0; + return 0; sd= MEM_callocN(sizeof(sAreaSwapData), "sAreaSwapData"); sd->sa1= sad->sa1; sd->sa2= sad->sa2; op->customdata= sd; - + return 1; } @@ -602,22 +602,22 @@ static int area_swap_cancel(bContext *C, wmOperator *op) static int area_swap_invoke(bContext *C, wmOperator *op, wmEvent *event) { - + if(!area_swap_init(C, op, event)) return OPERATOR_PASS_THROUGH; - + /* add modal handler */ WM_cursor_modal(CTX_wm_window(C), BC_SWAPAREA_CURSOR); WM_event_add_modal_handler(C, op); return OPERATOR_RUNNING_MODAL; - + } static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) { sActionzoneData *sad= op->customdata; - + switch(event->type) { case MOUSEMOVE: /* second area, for join */ @@ -626,19 +626,19 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) case LEFTMOUSE: /* release LMB */ if(event->val==KM_RELEASE) { if(!sad->sa2 || sad->sa1 == sad->sa2) { - + return area_swap_cancel(C, op); } 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; } break; - + case ESCKEY: return area_swap_cancel(C, op); } @@ -650,11 +650,11 @@ static void SCREEN_OT_area_swap(wmOperatorType *ot) ot->name= "Swap areas"; ot->description= "Swap selected areas screen positions."; ot->idname= "SCREEN_OT_area_swap"; - + ot->invoke= area_swap_invoke; ot->modal= area_swap_modal; ot->poll= ED_operator_areaactive; - + ot->flag= OPTYPE_BLOCKING; } @@ -675,10 +675,10 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event) /* XXX hrmf! */ if(event->type==EVT_ACTIONZONE_AREA) { sActionzoneData *sad= event->customdata; - + if(sad==NULL) return OPERATOR_PASS_THROUGH; - + sa= sad->sa1; } @@ -703,7 +703,7 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event) /* screen, areas init */ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - + if(event->type==EVT_ACTIONZONE_AREA) actionzone_exit(C, op); @@ -724,33 +724,33 @@ static void SCREEN_OT_area_dupli(wmOperatorType *ot) /* ************** move area edge operator *********************************** */ /* operator state vars used: - x, y mouse coord near edge - delta movement of edge - - functions: - - init() set default property values, find edge based on mouse coords, test - if the edge can be moved, select edges, calculate min and max movement - - apply() apply delta on selection - - exit() cleanup, send notifier - - cancel() cancel moving - - callbacks: - - exec() execute without any user interaction, based on properties - call init(), apply(), exit() - - invoke() gets called on mouse click near edge - call init(), add handler - - modal() accept modal events while doing it - call apply() with delta motion - call exit() and remove handler - -*/ + x, y mouse coord near edge + delta movement of edge + + functions: + + init() set default property values, find edge based on mouse coords, test + if the edge can be moved, select edges, calculate min and max movement + + apply() apply delta on selection + + exit() cleanup, send notifier + + cancel() cancel moving + + callbacks: + + exec() execute without any user interaction, based on properties + call init(), apply(), exit() + + invoke() gets called on mouse click near edge + call init(), add handler + + modal() accept modal events while doing it + call apply() with delta motion + call exit() and remove handler + + */ typedef struct sAreaMoveData { int bigger, smaller, origval, step; @@ -795,25 +795,25 @@ static int area_move_init (bContext *C, wmOperator *op) ScrEdge *actedge; sAreaMoveData *md; int x, y; - + /* required properties */ x= RNA_int_get(op->ptr, "x"); y= RNA_int_get(op->ptr, "y"); - + /* setup */ actedge= screen_find_active_scredge(sc, x, y); if(actedge==NULL) return 0; - + md= MEM_callocN(sizeof(sAreaMoveData), "sAreaMoveData"); op->customdata= md; - + md->dir= scredge_is_horizontal(actedge)?'h':'v'; if(md->dir=='h') md->origval= actedge->v1->vec.y; else md->origval= actedge->v1->vec.x; select_connected_scredge(sc, actedge); /* now all vertices with 'flag==1' are the ones that can be moved. */ - + area_move_set_limits(sc, md->dir, &md->bigger, &md->smaller); return 1; @@ -837,7 +837,7 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int } if((dir=='h') && v1->vec.y>0 && v1->vec.ysizey-1) { v1->vec.y= origval + delta; - + v1->vec.y+= AREAGRID-1; v1->vec.y-= (v1->vec.y % AREAGRID); @@ -847,7 +847,7 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int } } } - + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } @@ -887,7 +887,7 @@ static int area_move_invoke(bContext *C, wmOperator *op, wmEvent *event) { RNA_int_set(op->ptr, "x", event->x); RNA_int_set(op->ptr, "y", event->y); - + if(!area_move_init(C, op)) return OPERATOR_PASS_THROUGH; @@ -899,11 +899,11 @@ static int area_move_invoke(bContext *C, wmOperator *op, wmEvent *event) static int area_move_cancel(bContext *C, wmOperator *op) { - + RNA_int_set(op->ptr, "delta", 0); area_move_apply(C, op); area_move_exit(C, op); - + return OPERATOR_CANCELLED; } @@ -912,7 +912,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event) { sAreaMoveData *md= op->customdata; int delta, x, y; - + /* execute the events */ switch(event->type) { case MOUSEMOVE: @@ -923,7 +923,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event) delta= (md->dir == 'v')? event->x - x: event->y - y; if(md->step) delta= delta - (delta % md->step); RNA_int_set(op->ptr, "delta", delta); - + area_move_apply(C, op); break; @@ -933,7 +933,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event) case KM_MODAL_APPLY: area_move_exit(C, op); return OPERATOR_FINISHED; - + case KM_MODAL_CANCEL: return area_move_cancel(C, op); @@ -955,15 +955,15 @@ static void SCREEN_OT_area_move(wmOperatorType *ot) ot->name= "Move area edges"; ot->description= "Move selected area edges."; ot->idname= "SCREEN_OT_area_move"; - + ot->exec= area_move_exec; ot->invoke= area_move_invoke; ot->cancel= area_move_cancel; ot->modal= area_move_modal; ot->poll= ED_operator_screen_mainwinactive; /* when mouse is over area-edge */ - + ot->flag= OPTYPE_BLOCKING; - + /* rna */ RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX); @@ -973,56 +973,56 @@ static void SCREEN_OT_area_move(wmOperatorType *ot) /* ************** split area operator *********************************** */ /* -operator state vars: - fac spit point - dir direction 'v' or 'h' - -operator customdata: - area pointer to (active) area - x, y last used mouse pos - (more, see below) - -functions: - - init() set default property values, find area based on context - - apply() split area based on state vars - - exit() cleanup, send notifier - - cancel() remove duplicated area - -callbacks: - - exec() execute without any user interaction, based on state vars - call init(), apply(), exit() - - invoke() gets called on mouse click in action-widget - call init(), add modal handler - call apply() with initial motion - - modal() accept modal events while doing it - call move-areas code with delta motion - call exit() or cancel() and remove handler - -*/ + operator state vars: + fac spit point + dir direction 'v' or 'h' + + operator customdata: + area pointer to (active) area + x, y last used mouse pos + (more, see below) + + functions: + + init() set default property values, find area based on context + + apply() split area based on state vars + + exit() cleanup, send notifier + + cancel() remove duplicated area + + callbacks: + + exec() execute without any user interaction, based on state vars + call init(), apply(), exit() + + invoke() gets called on mouse click in action-widget + call init(), add modal handler + call apply() with initial motion + + modal() accept modal events while doing it + call move-areas code with delta motion + call exit() or cancel() and remove handler + + */ #define SPLIT_STARTED 1 #define SPLIT_PROGRESS 2 typedef struct sAreaSplitData -{ - int x, y; /* last used mouse position */ - - int origval; /* for move areas */ - int bigger, smaller; /* constraints for moving new edge */ - int delta; /* delta move edge */ - int origmin, origsize; /* to calculate fac, for property storage */ - - ScrEdge *nedge; /* new edge */ - ScrArea *sarea; /* start area */ - ScrArea *narea; /* new area */ -} sAreaSplitData; + { + int x, y; /* last used mouse position */ + + int origval; /* for move areas */ + int bigger, smaller; /* constraints for moving new edge */ + int delta; /* delta move edge */ + int origmin, origsize; /* to calculate fac, for property storage */ + + ScrEdge *nedge; /* new edge */ + ScrArea *sarea; /* start area */ + ScrArea *narea; /* new area */ + } sAreaSplitData; /* generic init, no UI stuff here */ static int area_split_init(bContext *C, wmOperator *op) @@ -1040,7 +1040,7 @@ static int area_split_init(bContext *C, wmOperator *op) /* minimal size */ if(dir=='v' && sa->winx < 2*AREAMINX) return 0; if(dir=='h' && sa->winy < 2*AREAMINY) return 0; - + /* custom data */ sd= (sAreaSplitData*)MEM_callocN(sizeof (sAreaSplitData), "op_area_split"); op->customdata= sd; @@ -1077,7 +1077,7 @@ static ScrEdge *area_findsharededge(bScreen *screen, ScrArea *sa, ScrArea *sb) else if(sav1==sbv2 && sav4==sbv3) { /* sa on top of sb = S*/ return screen_findedge(screen, sav1, sav4); } - + return NULL; } @@ -1092,24 +1092,24 @@ static int area_split_apply(bContext *C, wmOperator *op) fac= RNA_float_get(op->ptr, "factor"); dir= RNA_enum_get(op->ptr, "direction"); - + sd->narea= area_split(CTX_wm_window(C), sc, sd->sarea, dir, fac); if(sd->narea) { ScrVert *sv; sd->nedge= area_findsharededge(sc, sd->sarea, sd->narea); - + /* select newly created edge, prepare for moving edge */ for(sv= sc->vertbase.first; sv; sv= sv->next) sv->flag = 0; sd->nedge->v1->flag= 1; sd->nedge->v2->flag= 1; - + if(dir=='h') sd->origval= sd->nedge->v1->vec.y; else sd->origval= sd->nedge->v1->vec.x; - + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return 1; @@ -1126,7 +1126,7 @@ static void area_split_exit(bContext *C, wmOperator *op) } WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - + /* this makes sure aligned edges will result in aligned grabbing */ removedouble_scrverts(CTX_wm_screen(C)); removedouble_scredges(CTX_wm_screen(C)); @@ -1141,7 +1141,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event) if(event->type==EVT_ACTIONZONE_AREA) { sActionzoneData *sad= event->customdata; int dir; - + if(sad->modifier>0) { return OPERATOR_PASS_THROUGH; } @@ -1168,7 +1168,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_float_set(op->ptr, "factor", ((float)(event->y - sad->sa1->v1->vec.y)) / (float)sad->sa1->winy); } RNA_enum_set(op->ptr, "direction", dir); - + /* general init, also non-UI case, adds customdata, sets area and defaults */ if(!area_split_init(C, op)) return OPERATOR_PASS_THROUGH; @@ -1214,7 +1214,7 @@ static int area_split_exec(bContext *C, wmOperator *op) static int area_split_cancel(bContext *C, wmOperator *op) { sAreaSplitData *sd= (sAreaSplitData *)op->customdata; - + if (screen_area_join(C, CTX_wm_screen(C), sd->sarea, sd->narea)) { if (CTX_wm_area(C) == sd->narea) { CTX_wm_area_set(C, NULL); @@ -1223,7 +1223,7 @@ static int area_split_cancel(bContext *C, wmOperator *op) sd->narea = NULL; } area_split_exit(C, op); - + return OPERATOR_CANCELLED; } @@ -1232,7 +1232,7 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event) sAreaSplitData *sd= (sAreaSplitData *)op->customdata; float fac; int dir; - + /* execute the events */ switch(event->type) { case MOUSEMOVE: @@ -1262,9 +1262,9 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event) } static EnumPropertyItem prop_direction_items[] = { - {'h', "HORIZONTAL", 0, "Horizontal", ""}, - {'v', "VERTICAL", 0, "Vertical", ""}, - {0, NULL, 0, NULL, NULL}}; +{'h', "HORIZONTAL", 0, "Horizontal", ""}, +{'v', "VERTICAL", 0, "Vertical", ""}, +{0, NULL, 0, NULL, NULL}}; static void SCREEN_OT_area_split(wmOperatorType *ot) { @@ -1294,10 +1294,40 @@ typedef struct RegionMoveData { ScrArea *sa; int bigger, smaller, origval; int origx, origy; + int maxsize; char edge; } RegionMoveData; + +static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge) +{ + ARegion *ar; + int dist; + + if(edge=='l' || edge=='r') { + dist = sa->totrct.xmax - sa->totrct.xmin; + } else { /* t, b */ + dist = sa->totrct.ymax - sa->totrct.ymin; + } + + /* subtractwidth of regions on opposite side + * prevents dragging regions into other opposite regions */ + for (ar=sa->regionbase.first; ar; ar=ar->next) + { + 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) + dist -= ar->winy; + else if (scalear->alignment == RGN_ALIGN_LEFT && ar->alignment == RGN_ALIGN_RIGHT) + dist -= ar->winx; + else if (scalear->alignment == RGN_ALIGN_RIGHT && ar->alignment == RGN_ALIGN_LEFT) + dist -= ar->winx; + } + + return dist; +} + static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) { sActionzoneData *sad= event->customdata; @@ -1321,10 +1351,13 @@ static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) rmd->edge= az->edge; rmd->origx= event->x; rmd->origy= event->y; - if(rmd->edge=='l' || rmd->edge=='r') + rmd->maxsize = area_max_regionsize(rmd->sa, rmd->ar, rmd->edge); + if(rmd->edge=='l' || rmd->edge=='r') { rmd->origval= rmd->ar->type->minsizex; - else + } else { rmd->origval= rmd->ar->type->minsizey; + } + CLAMP(rmd->maxsize, 0, 1000); /* add temp handler */ WM_event_add_modal_handler(C, op); @@ -1347,8 +1380,10 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) if(rmd->edge=='l' || rmd->edge=='r') { delta= event->x - rmd->origx; if(rmd->edge=='l') delta= -delta; + rmd->ar->type->minsizex= rmd->origval + delta; - CLAMP(rmd->ar->type->minsizex, 0, 1000); + CLAMP(rmd->ar->type->minsizex, 0, rmd->maxsize); + if(rmd->ar->type->minsizex < 24) { rmd->ar->type->minsizex= rmd->origval; if(!(rmd->ar->flag & RGN_FLAG_HIDDEN)) @@ -1360,8 +1395,10 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) else { delta= event->y - rmd->origy; if(rmd->edge=='b') delta= -delta; + rmd->ar->type->minsizey= rmd->origval + delta; - CLAMP(rmd->ar->type->minsizey, 0, 1000); + CLAMP(rmd->ar->type->minsizey, 0, rmd->maxsize); + if(rmd->ar->type->minsizey < 24) { rmd->ar->type->minsizey= rmd->origval; if(!(rmd->ar->flag & RGN_FLAG_HIDDEN)) @@ -1372,7 +1409,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) } WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - + break; case LEFTMOUSE: @@ -1386,7 +1423,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) } MEM_freeN(op->customdata); op->customdata = NULL; - + return OPERATOR_FINISHED; } break; @@ -1421,13 +1458,13 @@ static void SCREEN_OT_region_scale(wmOperatorType *ot) static int frame_offset_exec(bContext *C, wmOperator *op) { int delta; - + delta = RNA_int_get(op->ptr, "delta"); - + CTX_data_scene(C)->r.cfra += delta; - + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); - + return OPERATOR_FINISHED; } @@ -1435,12 +1472,12 @@ static void SCREEN_OT_frame_offset(wmOperatorType *ot) { ot->name = "Frame Offset"; ot->idname = "SCREEN_OT_frame_offset"; - + ot->exec= frame_offset_exec; - + ot->poll= ED_operator_screenactive; ot->flag= 0; - + /* rna */ RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX); } @@ -1455,9 +1492,9 @@ static int frame_jump_exec(bContext *C, wmOperator *op) CFRA= PEFRA; else CFRA= PSFRA; - + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); - + return OPERATOR_FINISHED; } @@ -1466,12 +1503,12 @@ static void SCREEN_OT_frame_jump(wmOperatorType *ot) ot->name = "Jump to Endpoint"; ot->description= "Jump to first/last frame in frame range."; ot->idname = "SCREEN_OT_frame_jump"; - + ot->exec= frame_jump_exec; - + ot->poll= ED_operator_screenactive; ot->flag= 0; - + /* rna */ RNA_def_boolean(ot->srna, "end", 0, "Last Frame", "Jump to the last frame of the frame range."); } @@ -1501,7 +1538,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) scene_to_keylist(NULL, scene, &keys, NULL); if (ob && ob->adt) ob_to_keylist(NULL, ob, &keys, NULL); - + /* build linked-list for searching */ BLI_dlrbTree_linkedlist_sync(&keys); @@ -1521,7 +1558,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) BLI_dlrbTree_free(&keys); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C)); - + return OPERATOR_FINISHED; } @@ -1530,12 +1567,12 @@ static void SCREEN_OT_keyframe_jump(wmOperatorType *ot) ot->name = "Jump to Keyframe"; ot->description= "Jump to previous/next keyframe."; ot->idname = "SCREEN_OT_keyframe_jump"; - + ot->exec= keyframe_jump_exec; - + ot->poll= ED_operator_screenactive; ot->flag= 0; - + /* rna */ RNA_def_boolean(ot->srna, "next", 1, "Next Keyframe", ""); } @@ -1554,7 +1591,7 @@ static int screen_set_exec(bContext *C, wmOperator *op) /* return to previous state before switching screens */ if(sa && sa->full) ED_screen_full_restore(C, sa); - + if(delta==1) { while(tot--) { screen= screen->id.next; @@ -1614,7 +1651,7 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot) ot->exec= screen_full_area_exec; ot->poll= ED_operator_areaactive; ot->flag= 0; - + } @@ -1622,40 +1659,40 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot) /* ************** join area operator ********************************************** */ /* operator state vars used: - x1, y1 mouse coord in first area, which will disappear - x2, y2 mouse coord in 2nd area, which will become joined - -functions: - - init() find edge based on state vars - test if the edge divides two areas, - store active and nonactive area, - - apply() do the actual join - - exit() cleanup, send notifier - -callbacks: - - exec() calls init, apply, exit - - invoke() sets mouse coords in x,y - call init() - add modal handler - - modal() accept modal events while doing it - call apply() with active window and nonactive window - call exit() and remove handler when LMB confirm - -*/ + x1, y1 mouse coord in first area, which will disappear + x2, y2 mouse coord in 2nd area, which will become joined + + functions: + + init() find edge based on state vars + test if the edge divides two areas, + store active and nonactive area, + + apply() do the actual join + + exit() cleanup, send notifier + + callbacks: + + exec() calls init, apply, exit + + invoke() sets mouse coords in x,y + call init() + add modal handler + + modal() accept modal events while doing it + call apply() with active window and nonactive window + call exit() and remove handler when LMB confirm + + */ typedef struct sAreaJoinData -{ - ScrArea *sa1; /* first area to be considered */ - ScrArea *sa2; /* second area to be considered */ - ScrArea *scr; /* designed for removal */ - -} sAreaJoinData; + { + ScrArea *sa1; /* first area to be considered */ + ScrArea *sa2; /* second area to be considered */ + ScrArea *scr; /* designed for removal */ + + } sAreaJoinData; /* validate selection inside screen, set variables OK */ @@ -1667,7 +1704,7 @@ static int area_join_init(bContext *C, wmOperator *op) sAreaJoinData* jd= NULL; int x1, y1; int x2, y2; - + /* required properties, make negative to get return 0 if not set by caller */ x1= RNA_int_get(op->ptr, "x1"); y1= RNA_int_get(op->ptr, "y1"); @@ -1678,9 +1715,9 @@ static int area_join_init(bContext *C, wmOperator *op) sa2 = screen_areahascursor(CTX_wm_screen(C), x2, y2); if(sa1==NULL || sa2==NULL || sa1==sa2) return 0; - + jd = (sAreaJoinData*)MEM_callocN(sizeof (sAreaJoinData), "op_area_join"); - + jd->sa1 = sa1; jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM; jd->sa2 = sa2; @@ -1696,7 +1733,7 @@ static int area_join_apply(bContext *C, wmOperator *op) { sAreaJoinData *jd = (sAreaJoinData *)op->customdata; if (!jd) return 0; - + if(!screen_area_join(C, CTX_wm_screen(C), jd->sa1, jd->sa2)){ return 0; } @@ -1704,7 +1741,7 @@ static int area_join_apply(bContext *C, wmOperator *op) CTX_wm_area_set(C, NULL); CTX_wm_region_set(C, NULL); } - + return 1; } @@ -1715,7 +1752,7 @@ static void area_join_exit(bContext *C, wmOperator *op) MEM_freeN(op->customdata); op->customdata = NULL; } - + /* this makes sure aligned edges will result in aligned grabbing */ removedouble_scredges(CTX_wm_screen(C)); removenotused_scredges(CTX_wm_screen(C)); @@ -1729,17 +1766,17 @@ static int area_join_exec(bContext *C, wmOperator *op) area_join_apply(C, op); area_join_exit(C, op); - + return OPERATOR_FINISHED; } /* interaction callback */ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event) { - + if(event->type==EVT_ACTIONZONE_AREA) { sActionzoneData *sad= event->customdata; - + if(sad->modifier>0) { return OPERATOR_PASS_THROUGH; } @@ -1757,13 +1794,13 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_int_set(op->ptr, "y1", sad->y); RNA_int_set(op->ptr, "x2", event->x); RNA_int_set(op->ptr, "y2", event->y); - + if(!area_join_init(C, op)) return OPERATOR_PASS_THROUGH; - + /* add temp handler */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } @@ -1773,7 +1810,7 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event) static int area_join_cancel(bContext *C, wmOperator *op) { sAreaJoinData *jd = (sAreaJoinData *)op->customdata; - + if (jd->sa1) { jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM; jd->sa1->flag &= ~AREA_FLAG_DRAWJOINTO; @@ -1782,11 +1819,11 @@ static int area_join_cancel(bContext *C, wmOperator *op) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINFROM; jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; } - + WM_event_add_notifier(C, NC_WINDOW, NULL); area_join_exit(C, op); - + return OPERATOR_CANCELLED; } @@ -1800,66 +1837,66 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) switch(event->type) { case MOUSEMOVE: - { - ScrArea *sa = screen_areahascursor(sc, event->x, event->y); - int dir; - - if (sa) { - if (jd->sa1 != sa) { - dir = area_getorientation(sc, jd->sa1, sa); - if (dir >= 0) { - if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; - jd->sa2 = sa; - jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; - } - else { - /* we are not bordering on the previously selected area - we check if area has common border with the one marked for removal - in this case we can swap areas. - */ - dir = area_getorientation(sc, sa, jd->sa2); - if (dir >= 0) { - if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM; - if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; - jd->sa1 = jd->sa2; - jd->sa2 = sa; - if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM; - if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; - } - else { - if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; - jd->sa2 = NULL; - } - } - WM_event_add_notifier(C, NC_WINDOW, NULL); + { + ScrArea *sa = screen_areahascursor(sc, event->x, event->y); + int dir; + + if (sa) { + if (jd->sa1 != sa) { + dir = area_getorientation(sc, jd->sa1, sa); + if (dir >= 0) { + if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; + jd->sa2 = sa; + jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; } else { - /* we are back in the area previously selected for keeping - * we swap the areas if possible to allow user to choose */ - if (jd->sa2 != NULL) { + /* we are not bordering on the previously selected area + we check if area has common border with the one marked for removal + in this case we can swap areas. + */ + dir = area_getorientation(sc, sa, jd->sa2); + if (dir >= 0) { if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM; if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; jd->sa1 = jd->sa2; jd->sa2 = sa; if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM; if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; - dir = area_getorientation(sc, jd->sa1, jd->sa2); - if (dir < 0) { - printf("oops, didn't expect that!\n"); - } } else { - dir = area_getorientation(sc, jd->sa1, sa); - if (dir >= 0) { - if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; - jd->sa2 = sa; - jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; - } + if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; + jd->sa2 = NULL; + } + } + WM_event_add_notifier(C, NC_WINDOW, NULL); + } + else { + /* we are back in the area previously selected for keeping + * we swap the areas if possible to allow user to choose */ + if (jd->sa2 != NULL) { + if (jd->sa1) jd->sa1->flag &= ~AREA_FLAG_DRAWJOINFROM; + if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; + jd->sa1 = jd->sa2; + jd->sa2 = sa; + if (jd->sa1) jd->sa1->flag |= AREA_FLAG_DRAWJOINFROM; + if (jd->sa2) jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; + dir = area_getorientation(sc, jd->sa1, jd->sa2); + if (dir < 0) { + printf("oops, didn't expect that!\n"); + } + } + else { + dir = area_getorientation(sc, jd->sa1, sa); + if (dir >= 0) { + if (jd->sa2) jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO; + jd->sa2 = sa; + jd->sa2->flag |= AREA_FLAG_DRAWJOINTO; } - WM_event_add_notifier(C, NC_WINDOW, NULL); } + WM_event_add_notifier(C, NC_WINDOW, NULL); } } + } break; case LEFTMOUSE: if(event->val==KM_RELEASE) { @@ -1869,12 +1906,12 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; } break; - + case RIGHTMOUSE: case ESCKEY: return area_join_cancel(C, op); } - + return OPERATOR_RUNNING_MODAL; } @@ -1891,9 +1928,9 @@ static void SCREEN_OT_area_join(wmOperatorType *ot) ot->invoke= area_join_invoke; ot->modal= area_join_modal; ot->poll= ED_operator_areaactive; - + ot->flag= OPTYPE_BLOCKING; - + /* rna */ RNA_def_int(ot->srna, "x1", -100, INT_MIN, INT_MAX, "X 1", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "y1", -100, INT_MIN, INT_MAX, "Y 1", "", INT_MIN, INT_MAX); @@ -1941,10 +1978,10 @@ static int repeat_history_invoke(bContext *C, wmOperator *op, wmEvent *event) pup= uiPupMenuBegin(C, op->type->name, 0); layout= uiPupMenuLayout(pup); - + for (i=items-1, lastop= wm->operators.last; lastop; lastop= lastop->prev, i--) uiItemIntO(layout, lastop->type->name, 0, op->type->idname, "index", i); - + uiPupMenuEnd(C, pup); return OPERATOR_CANCELLED; @@ -1962,7 +1999,7 @@ static int repeat_history_exec(bContext *C, wmOperator *op) WM_operator_repeat(C, op); } - + return OPERATOR_FINISHED; } @@ -1988,7 +2025,7 @@ static int redo_last_invoke(bContext *C, wmOperator *op, wmEvent *event) { wmWindowManager *wm= CTX_wm_manager(C); wmOperator *lastop; - + /* only for operators that are registered and did an undo push */ for(lastop= wm->operators.last; lastop; lastop= lastop->prev) if((lastop->type->flag & OPTYPE_REGISTER) && (lastop->type->flag & OPTYPE_UNDO)) @@ -1996,7 +2033,7 @@ static int redo_last_invoke(bContext *C, wmOperator *op, wmEvent *event) if(lastop) WM_operator_redo_popup(C, lastop); - + return OPERATOR_CANCELLED; } @@ -2096,7 +2133,7 @@ static void SCREEN_OT_region_quadview(wmOperatorType *ot) ot->idname= "SCREEN_OT_region_quadview"; /* api callbacks */ -// ot->invoke= WM_operator_confirm; + // ot->invoke= WM_operator_confirm; ot->exec= region_quadview_exec; ot->poll= ED_operator_areaactive; ot->flag= 0; @@ -2110,7 +2147,7 @@ static void SCREEN_OT_region_quadview(wmOperatorType *ot) static int region_flip_exec(bContext *C, wmOperator *op) { ARegion *ar= CTX_wm_region(C); - + if (!ar) return OPERATOR_CANCELLED; @@ -2204,7 +2241,7 @@ static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) ARegion *ar= CTX_wm_region(C); uiPopupMenu *pup; uiLayout *layout; - + pup= uiPupMenuBegin(C, "Header", 0); layout= uiPupMenuLayout(pup); @@ -2225,7 +2262,7 @@ static int header_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) } uiPupMenuEnd(C, pup); - + return OPERATOR_CANCELLED; } @@ -2245,7 +2282,7 @@ void SCREEN_OT_header_toolbox(wmOperatorType *ot) static int match_region_with_redraws(int spacetype, int regiontype, int redraws) { if(regiontype==RGN_TYPE_WINDOW) { - + switch (spacetype) { case SPACE_VIEW3D: if(redraws & TIME_ALL_3D_WIN) @@ -2416,7 +2453,7 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event) ScrArea *sa= CTX_wm_area(C); int mode= (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1; int sync= -1; - + if(RNA_property_is_set(op->ptr, "sync")) sync= (RNA_boolean_get(op->ptr, "sync")); @@ -2431,12 +2468,12 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event) } else { int redraws = TIME_REGION|TIME_ALL_3D_WIN; - + /* XXX - would like a better way to deal with this situation - Campbell */ if((sa) && (sa->spacetype == SPACE_SEQ)) { redraws |= TIME_SEQ; } - + ED_screen_animation_timer(C, redraws, sync, mode); if(screen->animtimer) { @@ -2504,23 +2541,23 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) /* ************** border select operator (template) ***************************** */ /* operator state vars used: (added by default WM callbacks) - xmin, ymin - xmax, ymax - - customdata: the wmGesture pointer - -callbacks: - - exec() has to be filled in by user - - invoke() default WM function - adds modal handler - - modal() default WM function - accept modal events while doing it, calls exec(), handles ESC and border drawing - - poll() has to be filled in by user for context -*/ + xmin, ymin + xmax, ymax + + customdata: the wmGesture pointer + + callbacks: + + exec() has to be filled in by user + + invoke() default WM function + adds modal handler + + modal() default WM function + accept modal events while doing it, calls exec(), handles ESC and border drawing + + poll() has to be filled in by user for context + */ #if 0 static int border_select_do(bContext *C, wmOperator *op) { @@ -2555,14 +2592,14 @@ static void SCREEN_OT_border_select(wmOperatorType *ot) 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); RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); - + } #endif /* ****************************** render invoking ***************** */ /* set callbacks, exported to sequence render too. -Only call in foreground (UI) renders. */ + 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. */ @@ -2627,7 +2664,7 @@ static ScrArea *find_area_showing_r_result(bContext *C) } } } - + return sa; } @@ -2736,13 +2773,13 @@ static void screen_set_image_output(bContext *C, int mx, int my) /* get the correct image, and scale it */ sima->image= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); -// if(G.displaymode==2) { // XXX - if(sa->full) { - sima->flag |= SI_FULLWINDOW|SI_PREVSPACE; - -// ed_screen_fullarea(C, win, sa); - } -// } + // if(G.displaymode==2) { // XXX + if(sa->full) { + sima->flag |= SI_FULLWINDOW|SI_PREVSPACE; + + // ed_screen_fullarea(C, win, sa); + } + // } } @@ -2766,7 +2803,7 @@ static int screen_render_exec(bContext *C, wmOperator *op) ED_update_for_newframe(C, 1); WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); - + return OPERATOR_FINISHED; } @@ -2846,7 +2883,7 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs) /* make jobs timer to send notifier */ *(rj->do_update)= 1; - + } /* called inside thread! */ @@ -2909,7 +2946,7 @@ static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *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; y1image, &rj->iuser, &lock); if(ibuf) { image_buffer_rect_update(rj->scene, rr, ibuf, renrect); - + /* make jobs timer to send notifier */ *(rj->do_update)= 1; } @@ -3000,7 +3037,7 @@ 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; + return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; /* running render */ switch (event->type) { @@ -3030,7 +3067,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) /* handle UI stuff */ WM_cursor_wait(1); - + /* flush multires changes (for sculpt) */ multires_force_update(CTX_data_active_object(C)); @@ -3043,7 +3080,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) /* ensure at least 1 area shows result */ screen_set_image_output(C, event->x, event->y); - + /* job custom data */ rj= MEM_callocN(sizeof(RenderJob), "render job"); rj->scene= scene; @@ -3074,14 +3111,14 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) // BKE_report in render! // RE_error_cb(re, error_cb); - + WM_jobs_start(CTX_wm_manager(C), steve); G.afbreek= 0; 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); @@ -3112,20 +3149,20 @@ static void SCREEN_OT_render(wmOperatorType *ot) typedef struct OGLRender { Render *re; Scene *scene; - + View3D *v3d; RegionView3D *rv3d; ARegion *ar; - + Image *ima; ImageUser iuser; - + GPUOffScreen *ofs; int sizex, sizey; - + bMovieHandle *mh; int cfrao, nfra; - + wmTimer *timer; } OGLRender; @@ -3141,10 +3178,10 @@ static void screen_opengl_render_apply(OGLRender *oglrender) 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); @@ -3152,19 +3189,19 @@ static void screen_opengl_render_apply(OGLRender *oglrender) } 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.scemode & R_STAMP_INFO) && (scene->r.stamp & R_STAMP_DRAW)) BKE_stamp_buf(scene, (unsigned char *)rr->rect32, rr->rectf, rr->rectx, rr->recty, 3); 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); } @@ -3177,7 +3214,7 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op) GPUOffScreen *ofs; OGLRender *oglrender; int sizex, sizey; - + /* ensure we have a 3d view */ if(!ED_view3d_context_activate(C)) return 0; @@ -3191,79 +3228,79 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op) /* 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_InitState(oglrender->re, NULL, &scene->r, sizex, sizey, NULL); - + rr= RE_AcquireResultWrite(oglrender->re); if(rr->rectf==NULL) rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizex, "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) { 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; } @@ -3276,7 +3313,7 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even char name[FILE_MAXDIR+FILE_MAXFILE]; unsigned int lay; int ok= 0; - + switch(event->type) { case ESCKEY: /* cancel */ @@ -3290,26 +3327,26 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even /* nothing to do */ return OPERATOR_RUNNING_MODAL; } - + /* go to next frame */ while(CFRAnfra) { 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); - + /* 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)) { oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey); @@ -3324,31 +3361,31 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even else printf("saved: %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++; - + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); - + /* stop at the end or on error */ if(scene->r.cfra > EFRA || !ok) { screen_opengl_render_end(C, op->customdata); 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; @@ -3357,30 +3394,30 @@ static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *eve 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 { /* initialize animation */ OGLRender *oglrender; Scene *scene; - + oglrender= op->customdata; scene= oglrender->scene; - + oglrender->mh= BKE_get_movie_handle(scene->r.imtype); if(BKE_imtype_is_movie(scene->r.imtype)) oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey); - + oglrender->cfrao= scene->r.cfra; oglrender->nfra= SFRA; scene->r.cfra= SFRA; - + WM_event_add_modal_handler(C, op); oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f); - + screen_set_image_output(C, event->x, event->y); - + return OPERATOR_RUNNING_MODAL; } } @@ -3425,7 +3462,7 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused) } else ED_area_prevspace(C, sa); - + return OPERATOR_FINISHED; } else if(sima->flag & SI_FULLWINDOW) { @@ -3433,7 +3470,7 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused) ed_screen_fullarea(C, win, sa); return OPERATOR_FINISHED; } - + return OPERATOR_PASS_THROUGH; } @@ -3454,7 +3491,7 @@ static void SCREEN_OT_render_view_cancel(struct wmOperatorType *ot) 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)); @@ -3502,7 +3539,7 @@ static int fullscreen_back_exec(bContext *C, wmOperator *op) { bScreen *screen = CTX_wm_screen(C); ScrArea *sa=NULL; - + /* search current screen for 'fullscreen' areas */ for (sa=screen->areabase.first; sa; sa=sa->next) { if (sa->full) break; @@ -3574,10 +3611,10 @@ static int screen_new_exec(bContext *C, wmOperator *op) { wmWindow *win= CTX_wm_window(C); bScreen *sc= CTX_wm_screen(C); - + sc= ED_screen_duplicate(win, sc); WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, sc); - + return OPERATOR_FINISHED; } @@ -3590,7 +3627,7 @@ void SCREEN_OT_new(wmOperatorType *ot) /* api callbacks */ ot->exec= screen_new_exec; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -3600,9 +3637,9 @@ void SCREEN_OT_new(wmOperatorType *ot) static int screen_delete_exec(bContext *C, wmOperator *op) { bScreen *sc= CTX_wm_screen(C); - + WM_event_add_notifier(C, NC_SCREEN|ND_SCREENDELETE, sc); - + return OPERATOR_FINISHED; } @@ -3615,7 +3652,7 @@ void SCREEN_OT_delete(wmOperatorType *ot) /* api callbacks */ ot->exec= screen_delete_exec; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -3627,17 +3664,17 @@ static int scene_new_exec(bContext *C, wmOperator *op) Scene *newscene, *scene= CTX_data_scene(C); Main *bmain= CTX_data_main(C); int type= RNA_enum_get(op->ptr, "type"); - + newscene= copy_scene(bmain, scene, type); - + /* these can't be handled in blenkernel curently, so do them here */ if(type == SCE_COPY_LINK_DATA) ED_object_single_users(newscene, 0); else if(type == SCE_COPY_FULL) ED_object_single_users(newscene, 1); - + WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, newscene); - + return OPERATOR_FINISHED; } @@ -3649,7 +3686,7 @@ void SCENE_OT_new(wmOperatorType *ot) {SCE_COPY_LINK_DATA, "LINK_OBJECT_DATA", 0, "Link Object Data", "Copy objects linked to data from the current scene."}, {SCE_COPY_FULL, "FULL_COPY", 0, "Full Copy", "Make a full copy of the current scene."}, {0, NULL, 0, NULL, NULL}}; - + /* identifiers */ ot->name= "New Scene"; ot->description= "Add new scene by type."; @@ -3658,10 +3695,10 @@ void SCENE_OT_new(wmOperatorType *ot) /* api callbacks */ ot->exec= scene_new_exec; ot->invoke= WM_menu_invoke; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - + /* properties */ RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); } @@ -3671,9 +3708,9 @@ void SCENE_OT_new(wmOperatorType *ot) static int scene_delete_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - + WM_event_add_notifier(C, NC_SCENE|ND_SCENEDELETE, scene); - + return OPERATOR_FINISHED; } @@ -3686,7 +3723,7 @@ void SCENE_OT_delete(wmOperatorType *ot) /* api callbacks */ ot->exec= scene_delete_exec; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -3734,13 +3771,13 @@ void ED_operatortypes_screen(void) 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); WM_operatortype_append(SCENE_OT_new); WM_operatortype_append(SCENE_OT_delete); - + /* tools shared by more space types */ WM_operatortype_append(ED_OT_undo); WM_operatortype_append(ED_OT_redo); @@ -3764,12 +3801,12 @@ static void keymap_modal_set(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KM_MODAL_APPLY); WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); - + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_STEP10); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_MODAL_STEP10_OFF); WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move"); - + } /* called in spacetypes.c */ @@ -3783,16 +3820,16 @@ 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); - + /* screen tools */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE_AREA, 0, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli", EVT_ACTIONZONE_AREA, 0, KM_SHIFT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_area_swap", EVT_ACTIONZONE_AREA, 0, KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_region_scale", EVT_ACTIONZONE_REGION, 0, 0, 0); - /* area move after action zones */ + /* area move after action zones */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); - + /* Header Editing ------------------------------------------------ */ keymap= WM_keymap_find(keyconf, "Header", 0, 0); @@ -3812,29 +3849,29 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "SCREEN_OT_screencast", F3KEY, KM_PRESS, KM_ALT, 0); - - /* tests */ + + /* tests */ WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0); 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); - + /* files */ WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_execute", PADENTER, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0); /* undo */ - #ifdef __APPLE__ +#ifdef __APPLE__ WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0); - #endif +#endif WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - + /* 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); @@ -3842,9 +3879,9 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_render_view_show", F11KEY, KM_PRESS, 0, 0); /* user prefs */ - #ifdef __APPLE__ +#ifdef __APPLE__ WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0); - #endif +#endif WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); @@ -3869,7 +3906,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 0, LKEY); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1); WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); - + keymap_modal_set(keyconf); } -- cgit v1.2.3 From 7fcb5d33ffec43da4f98d4a84b1cbb35d068c9a5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 09:38:58 +0000 Subject: values that had units set would not be coerced into Mathutils types by the python api. eg. scene.cursor_location wasnt a vector --- source/blender/makesrna/RNA_types.h | 5 +++-- source/blender/python/intern/bpy_rna.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 18fb2700bbf..e771b495b96 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -84,8 +84,9 @@ typedef enum PropertyUnit { PROP_UNIT_ACCELERATION = (8<<16) /* m/(s^2) */ } PropertyUnit; -#define RNA_SUBTYPE_UNIT(subtype) (subtype & 0x00FF0000) -#define RNA_SUBTYPE_UNIT_VALUE(subtype) (subtype>>16) +#define RNA_SUBTYPE_UNIT(subtype) ((subtype) & 0x00FF0000) +#define RNA_SUBTYPE_VALUE(subtype) ((subtype) & ~0x00FF0000) +#define RNA_SUBTYPE_UNIT_VALUE(subtype) ((subtype)>>16) #define RNA_ENUM_BITFLAG_SIZE 32 diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 92bd686114d..7427fc73d94 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -158,7 +158,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) { ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */ - switch(RNA_property_subtype(prop)) { + switch(RNA_SUBTYPE_VALUE(RNA_property_subtype(prop))) { case PROP_TRANSLATION: case PROP_DIRECTION: case PROP_VELOCITY: -- cgit v1.2.3 From 9c5019a9a9acd33c4757a0a1d4f0944c92e57ffd Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 10 Dec 2009 09:58:10 +0000 Subject: Notifier related fixes: [#20319] 3D View - need 3D cursor notifier [#20321] Views not receiving the NC_ID notifier --- source/blender/editors/space_action/space_action.c | 15 +++++++++++++++ source/blender/editors/space_graph/space_graph.c | 7 +++++++ source/blender/editors/space_logic/space_logic.c | 7 +++++++ source/blender/editors/space_nla/space_nla.c | 14 ++++++++++++++ source/blender/editors/space_node/space_node.c | 7 +++++++ source/blender/editors/space_sequencer/space_sequencer.c | 15 ++++++++++++++- source/blender/editors/space_view3d/space_view3d.c | 4 ++-- source/blender/editors/space_view3d/view3d_edit.c | 12 ++++-------- 8 files changed, 70 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 0bf3e3f70cb..0cbc2ce9078 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -291,6 +291,13 @@ static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); @@ -331,6 +338,14 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; + default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index f6d25bd7285..d77caa4c0e3 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -407,6 +407,13 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index f9fdbb92db9..ed8c7f2e4e7 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -217,6 +217,13 @@ static void logic_listener(ARegion *ar, wmNotifier *wmn) break; case NC_OBJECT: break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; } } diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 572ad44f680..8aceb647fe2 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -422,6 +422,13 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); @@ -451,6 +458,13 @@ static void nla_channel_area_listener(ARegion *ar, wmNotifier *wmn) break; } break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index b0ce1a6bd3e..64db1520ba1 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -314,6 +314,13 @@ static void node_region_listener(ARegion *ar, wmNotifier *wmn) case NC_NODE: ED_region_tag_redraw(ar); break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; } } diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 00df314df6c..3f23cdfc1a5 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -241,6 +241,13 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_SEQUENCER) ED_region_tag_redraw(ar); break; + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; } } @@ -276,7 +283,13 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data == ND_SPACE_SEQUENCER) ED_region_tag_redraw(ar); break; - + case NC_ID: + switch(wmn->data) { + case ND_ID_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; } } /* ************************************* */ diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index db617473291..bd277f68513 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -452,12 +452,12 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_LAYER: - ED_region_tag_redraw(ar); - break; case ND_MODE: ED_region_tag_redraw(ar); break; } + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); break; case NC_OBJECT: switch(wmn->data) { diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index ad40a7266af..fd20b534dd7 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2108,14 +2108,10 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event) fp[2]= (rv3d->persinv[0][2]*dx + rv3d->persinv[1][2]*dy+ rv3d->persinv[2][2]*fz)-rv3d->ofs[2]; } -// if(lr_click) { - // XXX if(obedit->type==OB_MESH) add_click_mesh(); - // else if ELEM(obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0); - // else if (obedit->type==OB_ARMATURE) addvert_armature(); -// VECCOPY(fp, oldcurs); -// } - // XXX notifier for scene */ - ED_area_tag_redraw(CTX_wm_area(C)); + if(v3d && v3d->localvd) + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); + else + WM_event_add_notifier(C, NC_SCENE|NA_EDITED, scene); return OPERATOR_FINISHED; } -- cgit v1.2.3 From b5740b0e779e76d599f819cf106009aea663d0bf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 10:23:53 +0000 Subject: remove ICON prefix from the enum, for python this is redundant eg. layout.prop("setting", icon='ICON_BLAH_BLAH') Also reverted previous commit, the cursor subtype just needed to be added to the switch statement. --- release/scripts/io/netrender/ui.py | 22 +++--- release/scripts/op/add_mesh_torus.py | 2 +- release/scripts/ui/properties_data_armature.py | 4 +- release/scripts/ui/properties_data_bone.py | 2 +- release/scripts/ui/properties_data_mesh.py | 36 +++++----- release/scripts/ui/properties_material.py | 6 +- release/scripts/ui/properties_object.py | 4 +- release/scripts/ui/properties_object_constraint.py | 2 +- release/scripts/ui/properties_particle.py | 40 +++++------ release/scripts/ui/properties_physics_common.py | 4 +- release/scripts/ui/properties_physics_fluid.py | 2 +- release/scripts/ui/properties_render.py | 18 ++--- release/scripts/ui/properties_scene.py | 8 +-- release/scripts/ui/properties_texture.py | 4 +- release/scripts/ui/space_dopesheet.py | 4 +- release/scripts/ui/space_filebrowser.py | 12 ++-- release/scripts/ui/space_graph.py | 14 ++-- release/scripts/ui/space_image.py | 6 +- release/scripts/ui/space_info.py | 78 +++++++++++----------- release/scripts/ui/space_logic.py | 4 +- release/scripts/ui/space_nla.py | 2 +- release/scripts/ui/space_node.py | 2 +- release/scripts/ui/space_outliner.py | 8 +-- release/scripts/ui/space_sequencer.py | 8 +-- release/scripts/ui/space_text.py | 8 +-- release/scripts/ui/space_time.py | 24 +++---- release/scripts/ui/space_userpref.py | 12 ++-- release/scripts/ui/space_view3d.py | 18 ++--- source/blender/editors/include/UI_icons.h | 20 +++--- source/blender/editors/interface/interface_icons.c | 20 +++--- .../editors/space_buttons/buttons_context.c | 2 +- source/blender/makesrna/intern/rna_ui_api.c | 2 +- source/blender/python/intern/bpy_rna.c | 3 +- 33 files changed, 201 insertions(+), 200 deletions(-) diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 081d9952871..7dfdd20f6f5 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -71,7 +71,7 @@ class RENDER_PT_network_settings(RenderButtonsPanel): if scene.network_render.mode == "RENDER_MASTER": col.prop(scene.network_render, "server_broadcast") else: - col.operator("render.netclientscan", icon="ICON_FILE_REFRESH", text="") + col.operator("render.netclientscan", icon='FILE_REFRESH', text="") @rnaType class RENDER_PT_network_job(RenderButtonsPanel): @@ -93,9 +93,9 @@ class RENDER_PT_network_job(RenderButtonsPanel): split = layout.split() col = split.column() - col.operator("render.netclientanim", icon='ICON_RENDER_ANIMATION') - col.operator("render.netclientsend", icon="ICON_FILE_BLEND") - col.operator("render.netclientweb", icon="ICON_QUESTION") + col.operator("render.netclientanim", icon='RENDER_ANIMATION') + col.operator("render.netclientsend", icon='FILE_BLEND') + col.operator("render.netclientweb", icon='QUESTION') col.prop(scene.network_render, "job_name") row = col.row() row.prop(scene.network_render, "priority") @@ -120,8 +120,8 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientslaves", icon="ICON_FILE_REFRESH", text="") - sub.operator("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientslaves", icon='FILE_REFRESH', text="") + sub.operator("render.netclientblacklistslave", icon='ZOOMOUT', text="") if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0: while(len(netsettings.slaves) > 0): @@ -156,7 +156,7 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="") + sub.operator("render.netclientwhitelistslave", icon='ZOOMOUT', text="") if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0: while(len(netsettings.slaves_blacklist) > 0): @@ -191,10 +191,10 @@ class RENDER_PT_network_jobs(RenderButtonsPanel): row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2) sub = row.column(align=True) - sub.operator("render.netclientstatus", icon="ICON_FILE_REFRESH", text="") - sub.operator("render.netclientcancel", icon="ICON_ZOOMOUT", text="") - sub.operator("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="") - sub.operator("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="") + sub.operator("render.netclientstatus", icon='FILE_REFRESH', text="") + sub.operator("render.netclientcancel", icon='ZOOMOUT', text="") + sub.operator("render.netclientcancelall", icon='PANEL_CLOSE', text="") + sub.operator("render.netclientdownload", icon='RENDER_ANIMATION', text="") if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0: while(len(netsettings.jobs) > 0): diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index fe8feecf43d..7e3b28b628e 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -131,7 +131,7 @@ bpy.ops.add(AddTorus) import dynamic_menu menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname, - text="Torus", icon='ICON_MESH_DONUT')) + text="Torus", icon='MESH_DONUT')) menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 1024ddc7836..1145202332e 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -128,8 +128,8 @@ class DATA_PT_bone_groups(DataButtonsPanel): col = row.column(align=True) col.active = (ob.proxy is None) - col.operator("pose.group_add", icon='ICON_ZOOMIN', text="") - col.operator("pose.group_remove", icon='ICON_ZOOMOUT', text="") + col.operator("pose.group_add", icon='ZOOMIN', text="") + col.operator("pose.group_remove", icon='ZOOMOUT', text="") group = pose.active_bone_group if group: diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 4a10ff80a32..982a4911694 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -43,7 +43,7 @@ class BONE_PT_context_bone(BoneButtonsPanel): bone = context.edit_bone row = layout.row() - row.label(text="", icon='ICON_BONE_DATA') + row.label(text="", icon='BONE_DATA') row.prop(bone, "name", text="") diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index 46866a89671..d6cdcfc2de9 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -114,12 +114,12 @@ class DATA_PT_vertex_groups(DataButtonsPanel): row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows) col = row.column(align=True) - col.operator("object.vertex_group_add", icon='ICON_ZOOMIN', text="") - col.operator("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") + col.operator("object.vertex_group_add", icon='ZOOMIN', text="") + col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="") - col.operator("object.vertex_group_copy", icon='ICON_COPY_ID', text="") + col.operator("object.vertex_group_copy", icon='COPY_ID', text="") if ob.data.users > 1: - col.operator("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="") + col.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA', text="") if group: row = layout.row() @@ -170,15 +170,15 @@ class DATA_PT_shape_keys(DataButtonsPanel): col = row.column() sub = col.column(align=True) - sub.operator("object.shape_key_add", icon='ICON_ZOOMIN', text="") - sub.operator("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") + sub.operator("object.shape_key_add", icon='ZOOMIN', text="") + sub.operator("object.shape_key_remove", icon='ZOOMOUT', text="") if kb: col.separator() sub = col.column(align=True) - sub.operator("object.shape_key_move", icon='ICON_TRIA_UP', text="").type = 'UP' - sub.operator("object.shape_key_move", icon='ICON_TRIA_DOWN', text="").type = 'DOWN' + sub.operator("object.shape_key_move", icon='TRIA_UP', text="").type = 'UP' + sub.operator("object.shape_key_move", icon='TRIA_DOWN', text="").type = 'DOWN' split = layout.split(percentage=0.4) row = split.row() @@ -198,18 +198,18 @@ class DATA_PT_shape_keys(DataButtonsPanel): subsub = sub.row(align=True) subsub.active = enable_edit_value if ob.shape_key_lock: - subsub.prop(ob, "shape_key_lock", icon='ICON_PINNED', text="") + subsub.prop(ob, "shape_key_lock", icon='PINNED', text="") else: - subsub.prop(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") + subsub.prop(ob, "shape_key_lock", icon='UNPINNED', text="") if kb.mute: - subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_ON', text="") + subsub.prop(kb, "mute", icon='MUTE_IPO_ON', text="") else: - subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="") + subsub.prop(kb, "mute", icon='MUTE_IPO_OFF', text="") sub.prop(ob, "shape_key_edit_mode", text="") sub = row.row(align=True) - sub.operator("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="") - sub.operator("object.shape_key_clear", icon='ICON_X', text="") + sub.operator("object.shape_key_mirror", icon='ARROW_LEFTRIGHT', text="") + sub.operator("object.shape_key_clear", icon='X', text="") row = layout.row() @@ -256,8 +256,8 @@ class DATA_PT_uv_texture(DataButtonsPanel): col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2) col = row.column(align=True) - col.operator("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") - col.operator("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") + col.operator("mesh.uv_texture_add", icon='ZOOMIN', text="") + col.operator("mesh.uv_texture_remove", icon='ZOOMOUT', text="") lay = me.active_uv_texture if lay: @@ -278,8 +278,8 @@ class DATA_PT_vertex_colors(DataButtonsPanel): col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2) col = row.column(align=True) - col.operator("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") - col.operator("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") + col.operator("mesh.vertex_color_add", icon='ZOOMIN', text="") + col.operator("mesh.vertex_color_remove", icon='ZOOMOUT', text="") lay = me.active_vertex_color if lay: diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 50fc0a7ded9..64e36a26961 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -89,9 +89,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): row.template_list(ob, "materials", ob, "active_material_index", rows=2) col = row.column(align=True) - col.operator("object.material_slot_add", icon='ICON_ZOOMIN', text="") - col.operator("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") - col.operator("object.material_slot_copy", icon='ICON_COPY_ID', text="") + col.operator("object.material_slot_add", icon='ZOOMIN', text="") + col.operator("object.material_slot_remove", icon='ZOOMOUT', text="") + col.operator("object.material_slot_copy", icon='COPY_ID', text="") if ob.mode == 'EDIT': row = layout.row(align=True) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index c7c1ce24d59..ff7e15cde58 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -38,7 +38,7 @@ class OBJECT_PT_context_object(ObjectButtonsPanel): ob = context.object row = layout.row() - row.label(text="", icon='ICON_OBJECT_DATA') + row.label(text="", icon='OBJECT_DATA') row.prop(ob, "name", text="") @@ -162,7 +162,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel): row = col.box().row() row.prop(group, "name", text="") - row.operator("object.group_remove", text="", icon='ICON_X') + row.operator("object.group_remove", text="", icon='X') split = col.box().split() diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index d6552585191..0436da546bc 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -59,7 +59,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): if wide_ui: if target and owner: - row.label(icon='ICON_ARROW_LEFTRIGHT') + row.label(icon='ARROW_LEFTRIGHT') else: row = layout.row() if owner: diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 3577ba961b3..a33a1a12f1b 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -66,8 +66,8 @@ class PARTICLE_PT_particles(ParticleButtonsPanel): row.template_list(ob, "particle_systems", ob, "active_particle_system_index", rows=2) col = row.column(align=True) - col.operator("object.particle_system_add", icon='ICON_ZOOMIN', text="") - col.operator("object.particle_system_remove", icon='ICON_ZOOMOUT', text="") + col.operator("object.particle_system_add", icon='ZOOMIN', text="") + col.operator("object.particle_system_remove", icon='ZOOMOUT', text="") if psys and not psys.settings: split = layout.split(percentage=0.32) @@ -457,12 +457,12 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.operator("particle.new_target", icon='ICON_ZOOMIN', text="") - subsub.operator("particle.target_remove", icon='ICON_ZOOMOUT', text="") + subsub.operator("particle.new_target", icon='ZOOMIN', text="") + subsub.operator("particle.target_remove", icon='ZOOMOUT', text="") sub = col.row() subsub = sub.column(align=True) - subsub.operator("particle.target_move_up", icon='VICON_MOVE_UP', text="") - subsub.operator("particle.target_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("particle.target_move_up", icon='MOVE_UP_VEC', text="") + subsub.operator("particle.target_move_down", icon='MOVE_DOWN_VEC', text="") key = psys.active_particle_target if key: @@ -512,11 +512,11 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): #row.template_list(boids, "states", boids, "active_boid_state_index", compact="True") #col = row.row() #sub = col.row(align=True) - #sub.operator("boid.state_add", icon='ICON_ZOOMIN', text="") - #sub.operator("boid.state_del", icon='ICON_ZOOMOUT', text="") + #sub.operator("boid.state_add", icon='ZOOMIN', text="") + #sub.operator("boid.state_del", icon='ZOOMOUT', text="") #sub = row.row(align=True) - #sub.operator("boid.state_move_up", icon='VICON_MOVE_UP', text="") - #sub.operator("boid.state_move_down", icon='VICON_MOVE_DOWN', text="") + #sub.operator("boid.state_move_up", icon='MOVE_UP_VEC', text="") + #sub.operator("boid.state_move_down", icon='MOVE_DOWN_VEC', text="") state = boids.active_boid_state @@ -535,12 +535,12 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.operator_menu_enum("boid.rule_add", "type", icon='ICON_ZOOMIN', text="") - subsub.operator("boid.rule_del", icon='ICON_ZOOMOUT', text="") + subsub.operator_menu_enum("boid.rule_add", "type", icon='ZOOMIN', text="") + subsub.operator("boid.rule_del", icon='ZOOMOUT', text="") sub = col.row() subsub = sub.column(align=True) - subsub.operator("boid.rule_move_up", icon='VICON_MOVE_UP', text="") - subsub.operator("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("boid.rule_move_up", icon='MOVE_UP_VEC', text="") + subsub.operator("boid.rule_move_down", icon='MOVE_DOWN_VEC', text="") rule = state.active_boid_rule @@ -548,8 +548,8 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): row = layout.row() row.prop(rule, "name", text="") #somebody make nice icons for boids here please! -jahka - row.prop(rule, "in_air", icon='VICON_MOVE_UP', text="") - row.prop(rule, "on_land", icon='VICON_MOVE_DOWN', text="") + row.prop(rule, "in_air", icon='MOVE_UP_VEC', text="") + row.prop(rule, "on_land", icon='MOVE_DOWN_VEC', text="") row = layout.row() @@ -695,10 +695,10 @@ class PARTICLE_PT_render(ParticleButtonsPanel): col = row.column() sub = col.row() subsub = sub.column(align=True) - subsub.operator("particle.dupliob_copy", icon='ICON_ZOOMIN', text="") - subsub.operator("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="") - subsub.operator("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="") - subsub.operator("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="") + subsub.operator("particle.dupliob_copy", icon='ZOOMIN', text="") + subsub.operator("particle.dupliob_remove", icon='ZOOMOUT', text="") + subsub.operator("particle.dupliob_move_up", icon='MOVE_UP_VEC', text="") + subsub.operator("particle.dupliob_move_down", icon='MOVE_DOWN_VEC', text="") weight = part.active_dupliweight if weight: diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 7c1d71302ec..26411b227a8 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -30,8 +30,8 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): row = layout.row() row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2) col = row.column(align=True) - col.operator("ptcache.add", icon='ICON_ZOOMIN', text="") - col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="") + col.operator("ptcache.add", icon='ZOOMIN', text="") + col.operator("ptcache.remove", icon='ZOOMOUT', text="") row = layout.row() row.label(text="File Name:") diff --git a/release/scripts/ui/properties_physics_fluid.py b/release/scripts/ui/properties_physics_fluid.py index a126002c211..66a2d454ca1 100644 --- a/release/scripts/ui/properties_physics_fluid.py +++ b/release/scripts/ui/properties_physics_fluid.py @@ -72,7 +72,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel): layout.prop(fluid, "type", text="") if fluid.type == 'DOMAIN': - layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM') + layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='MOD_FLUIDSIM') split = layout.split() col = split.column() diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index aa04e277f69..7f5ce213aed 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -53,11 +53,11 @@ class RENDER_PT_render(RenderButtonsPanel): split = layout.split() col = split.column() - col.operator("screen.render", text="Image", icon='ICON_RENDER_STILL') + col.operator("screen.render", text="Image", icon='RENDER_STILL') if wide_ui: col = split.column() - col.operator("screen.render", text="Animation", icon='ICON_RENDER_ANIMATION').animation = True + col.operator("screen.render", text="Animation", icon='RENDER_ANIMATION').animation = True layout.prop(rd, "display_mode", text="Display") @@ -78,8 +78,8 @@ class RENDER_PT_layers(RenderButtonsPanel): row.template_list(rd, "layers", rd, "active_layer_index", rows=2) col = row.column(align=True) - col.operator("scene.render_layer_add", icon='ICON_ZOOMIN', text="") - col.operator("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="") + col.operator("scene.render_layer_add", icon='ZOOMIN', text="") + col.operator("scene.render_layer_remove", icon='ZOOMOUT', text="") rl = rd.layers[rd.active_layer_index] @@ -145,19 +145,19 @@ class RENDER_PT_layers(RenderButtonsPanel): col.prop(rl, "pass_diffuse") row = col.row() row.prop(rl, "pass_specular") - row.prop(rl, "pass_specular_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_specular_exclude", text="", icon='X') row = col.row() row.prop(rl, "pass_shadow") - row.prop(rl, "pass_shadow_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_shadow_exclude", text="", icon='X') row = col.row() row.prop(rl, "pass_ao") - row.prop(rl, "pass_ao_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_ao_exclude", text="", icon='X') row = col.row() row.prop(rl, "pass_reflection") - row.prop(rl, "pass_reflection_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_reflection_exclude", text="", icon='X') row = col.row() row.prop(rl, "pass_refraction") - row.prop(rl, "pass_refraction_exclude", text="", icon='ICON_X') + row.prop(rl, "pass_refraction_exclude", text="", icon='X') class RENDER_PT_shading(RenderButtonsPanel): diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 8325889e644..86703d9f05d 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -85,8 +85,8 @@ class SCENE_PT_keying_sets(SceneButtonsPanel): col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2) col = row.column(align=True) - col.operator("anim.keying_set_add", icon='ICON_ZOOMIN', text="") - col.operator("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="") + col.operator("anim.keying_set_add", icon='ZOOMIN', text="") + col.operator("anim.keying_set_remove", icon='ZOOMOUT', text="") ks = scene.active_keying_set if ks: @@ -125,8 +125,8 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): col.template_list(ks, "paths", ks, "active_path_index", rows=2) col = row.column(align=True) - col.operator("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="") - col.operator("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="") + col.operator("anim.keying_set_path_add", icon='ZOOMIN', text="") + col.operator("anim.keying_set_path_remove", icon='ZOOMOUT', text="") ksp = ks.active_path if ksp: diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index 1844599e957..4471f6f9644 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -99,8 +99,8 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel): row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2) col = row.column(align=True) - col.operator("texture.slot_move", text="", icon='ICON_TRIA_UP').type = 'UP' - col.operator("texture.slot_move", text="", icon='ICON_TRIA_DOWN').type = 'DOWN' + col.operator("texture.slot_move", text="", icon='TRIA_UP').type = 'UP' + col.operator("texture.slot_move", text="", icon='TRIA_DOWN').type = 'DOWN' if wide_ui: diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index a669140d38e..1657539ddb2 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -57,8 +57,8 @@ class DOPESHEET_HT_header(bpy.types.Header): layout.prop(st, "autosnap", text="") row = layout.row(align=True) - row.operator("action.copy", text="", icon='ICON_COPYDOWN') - row.operator("action.paste", text="", icon='ICON_PASTEDOWN') + row.operator("action.copy", text="", icon='COPYDOWN') + row.operator("action.paste", text="", icon='PASTEDOWN') class DOPESHEET_MT_view(bpy.types.Menu): diff --git a/release/scripts/ui/space_filebrowser.py b/release/scripts/ui/space_filebrowser.py index 3b8734bdb21..47272b9aa32 100644 --- a/release/scripts/ui/space_filebrowser.py +++ b/release/scripts/ui/space_filebrowser.py @@ -35,22 +35,22 @@ class FILEBROWSER_HT_header(bpy.types.Header): row.separator() row = layout.row(align=True) - row.operator("file.previous", text="", icon='ICON_BACK') - row.operator("file.next", text="", icon='ICON_FORWARD') - row.operator("file.parent", text="", icon='ICON_FILE_PARENT') - row.operator("file.refresh", text="", icon='ICON_FILE_REFRESH') + row.operator("file.previous", text="", icon='BACK') + row.operator("file.next", text="", icon='FORWARD') + row.operator("file.parent", text="", icon='FILE_PARENT') + row.operator("file.refresh", text="", icon='FILE_REFRESH') row = layout.row() row.separator() row = layout.row(align=True) - row.operator("file.directory_new", text="", icon='ICON_NEWFOLDER') + row.operator("file.directory_new", text="", icon='NEWFOLDER') layout.prop(params, "display", expand=True, text="") layout.prop(params, "sort", expand=True, text="") layout.prop(params, "hide_dot", text="Hide Invisible") - layout.prop(params, "do_filter", text="", icon='ICON_FILTER') + layout.prop(params, "do_filter", text="", icon='FILTER') row = layout.row(align=True) row.active = params.do_filter diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index c24bf460147..893b2e35bc3 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -46,14 +46,14 @@ class GRAPH_HT_header(bpy.types.Header): layout.prop(st, "pivot_point", text="", icon_only=True) row = layout.row(align=True) - row.operator("graph.copy", text="", icon='ICON_COPYDOWN') - row.operator("graph.paste", text="", icon='ICON_PASTEDOWN') + row.operator("graph.copy", text="", icon='COPYDOWN') + row.operator("graph.paste", text="", icon='PASTEDOWN') row = layout.row(align=True) if st.has_ghost_curves: - row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED') + row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: - row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED') + row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED') class GRAPH_MT_view(bpy.types.Menu): @@ -67,7 +67,7 @@ class GRAPH_MT_view(bpy.types.Menu): layout.column() layout.separator() - layout.operator("graph.properties", icon="ICON_MENU_PANEL") + layout.operator("graph.properties", icon='MENU_PANEL') layout.prop(st, "show_cframe_indicator") layout.prop(st, "show_cursor") @@ -76,9 +76,9 @@ class GRAPH_MT_view(bpy.types.Menu): layout.separator() if st.show_handles: - layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_HLT", text="Show All Handles") + layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text="Show All Handles") else: - layout.operator("graph.handles_view_toggle", icon="ICON_CHECKBOX_DEHLT", text="Show All Handles") + layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text="Show All Handles") layout.prop(st, "only_selected_curves_handles") layout.prop(st, "only_selected_keyframe_handles") layout.operator("anim.time_toggle") diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 34e6ca7019a..38a3d499a4f 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -34,7 +34,7 @@ class IMAGE_MT_view(bpy.types.Menu): show_uvedit = sima.show_uvedit - layout.operator("image.properties", icon='ICON_MENU_PANEL') + layout.operator("image.properties", icon='MENU_PANEL') layout.separator() @@ -306,9 +306,9 @@ class IMAGE_HT_header(bpy.types.Header): row = layout.row(align=True) if ima.type == 'COMPOSITE': - row.operator("image.record_composite", icon='ICON_REC') + row.operator("image.record_composite", icon='REC') if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'): - row.operator("image.play_composite", icon='ICON_PLAY') + row.operator("image.play_composite", icon='PLAY') if show_uvedit or sima.image_painting: layout.prop(sima, "update_automatically", text="") diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index ece06e1751a..1543e6bf263 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -47,7 +47,7 @@ class INFO_HT_header(bpy.types.Header): sub.menu("INFO_MT_help") if window.screen.fullscreen: - layout.operator("screen.back_to_previous", icon="ICON_SCREEN_BACK", text="Back to Previous") + layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous") layout.separator() else: layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") @@ -66,7 +66,7 @@ class INFO_HT_header(bpy.types.Header): layout.label(text=scene.statistics()) - layout.operator("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="") + layout.operator("wm.window_fullscreen_toggle", icon='FULLSCREEN_ENTER', text="") class INFO_MT_file(bpy.types.Menu): @@ -76,9 +76,9 @@ class INFO_MT_file(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_AREA' - layout.operator("wm.read_homefile", text="New", icon='ICON_NEW') + layout.operator("wm.read_homefile", text="New", icon='NEW') layout.operator_context = 'INVOKE_AREA' - layout.operator("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER') + layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER') layout.operator_menu_enum("wm.open_recentfile", "file", text="Open Recent") layout.operator("wm.recover_last_session") layout.operator("wm.recover_auto_save", text="Recover Auto Save...") @@ -86,13 +86,13 @@ class INFO_MT_file(bpy.types.Menu): layout.separator() layout.operator_context = 'INVOKE_AREA' - layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') + layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK') layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_as_mainfile", text="Save As...") layout.separator() - layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') + layout.operator("screen.userpref_show", text="User Preferences...", icon='PREFERENCES') layout.operator("wm.read_homefile", text="Load Factory Settings").factory = True layout.separator() @@ -113,7 +113,7 @@ class INFO_MT_file(bpy.types.Menu): layout.separator() layout.operator_context = 'EXEC_AREA' - layout.operator("wm.exit_blender", text="Quit", icon='ICON_QUIT') + layout.operator("wm.exit_blender", text="Quit", icon='QUIT') # test for expanding menus ''' @@ -171,16 +171,16 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane") - layout.operator("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube") - layout.operator("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle") - layout.operator("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere") - layout.operator("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere") - layout.operator("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube") - layout.operator("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone") + layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane") + layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube") + layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle") + layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere") + layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere") + layout.operator("mesh.primitive_tube_add", icon='MESH_TUBE', text="Tube") + layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone") layout.separator() - layout.operator("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid") - layout.operator("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey") + layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") + layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") class INFO_MT_add(bpy.types.Menu): @@ -191,37 +191,37 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_context = 'EXEC_SCREEN' - #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') - layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') + #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH') + layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH') - layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') - layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE') - layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META') - layout.operator("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT') + layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE') + layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') + layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='OUTLINER_OB_META') + layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT') layout.separator() layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') - layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE' - layout.operator("object.add", text="Empty", icon='ICON_OUTLINER_OB_EMPTY').type = 'EMPTY' + layout.operator("object.armature_add", text="Armature", icon='OUTLINER_OB_ARMATURE') + layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE' + layout.operator("object.add", text="Empty", icon='OUTLINER_OB_EMPTY').type = 'EMPTY' layout.separator() - layout.operator("object.add", text="Camera", icon='ICON_OUTLINER_OB_CAMERA').type = 'CAMERA' + layout.operator("object.add", text="Camera", icon='OUTLINER_OB_CAMERA').type = 'CAMERA' layout.operator_context = 'EXEC_SCREEN' - layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP') + layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='OUTLINER_OB_LAMP') layout.separator() - layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY') + layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='OUTLINER_OB_EMPTY') layout.separator() - layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY') + layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='OUTLINER_OB_EMPTY') class INFO_MT_game(bpy.types.Menu): @@ -250,8 +250,8 @@ class INFO_MT_render(bpy.types.Menu): # rd = context.scene.render_data - layout.operator("screen.render", text="Render Image", icon='ICON_RENDER_STILL') - layout.operator("screen.render", text="Render Animation", icon='ICON_RENDER_ANIMATION').animation = True + layout.operator("screen.render", text="Render Image", icon='RENDER_STILL') + layout.operator("screen.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True layout.separator() @@ -269,19 +269,19 @@ class INFO_MT_help(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("help.manual", icon='ICON_HELP') - layout.operator("help.release_logs", icon='ICON_URL') + layout.operator("help.manual", icon='HELP') + layout.operator("help.release_logs", icon='URL') layout.separator() - layout.operator("help.blender_website", icon='ICON_URL') - layout.operator("help.blender_eshop", icon='ICON_URL') - layout.operator("help.developer_community", icon='ICON_URL') - layout.operator("help.user_community", icon='ICON_URL') + layout.operator("help.blender_website", icon='URL') + layout.operator("help.blender_eshop", icon='URL') + layout.operator("help.developer_community", icon='URL') + layout.operator("help.user_community", icon='URL') layout.separator() - layout.operator("help.report_bug", icon='ICON_URL') + layout.operator("help.report_bug", icon='URL') layout.separator() - layout.operator("help.python_api", icon='ICON_URL') + layout.operator("help.python_api", icon='URL') layout.operator("help.operator_cheat_sheet") bpy.types.register(INFO_HT_header) diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index e547da6bb8f..f2fdbd3a15a 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -43,7 +43,7 @@ class LOGIC_PT_properties(bpy.types.Panel): row.prop(prop, "name", text="") row.prop(prop, "type", text="") row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly - row.prop(prop, "debug", text="", toggle=True, icon='ICON_INFO') - row.operator("object.game_property_remove", text="", icon='ICON_X').index = i + row.prop(prop, "debug", text="", toggle=True, icon='INFO') + row.operator("object.game_property_remove", text="", icon='X').index = i bpy.types.register(LOGIC_PT_properties) diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py index d17e5e0b8cb..e9cc77c8633 100644 --- a/release/scripts/ui/space_nla.py +++ b/release/scripts/ui/space_nla.py @@ -53,7 +53,7 @@ class NLA_MT_view(bpy.types.Menu): layout.column() - layout.operator("nla.properties", icon="ICON_MENU_PANEL") + layout.operator("nla.properties", icon='MENU_PANEL') layout.separator() layout.prop(st, "show_cframe_indicator") diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index c05ab767f85..9d3873286ea 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -73,7 +73,7 @@ class NODE_MT_view(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("node.properties", icon='ICON_MENU_PANEL') + layout.operator("node.properties", icon='MENU_PANEL') layout.separator() layout.operator("view2d.zoom_in") diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index cc2c6a633ae..f60cb3299b4 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -45,16 +45,16 @@ class OUTLINER_HT_header(bpy.types.Header): if space.display_mode == 'DATABLOCKS': row = layout.row(align=True) - row.operator("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="") - row.operator("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="") + row.operator("outliner.keyingset_add_selected", icon='ZOOMIN', text="") + row.operator("outliner.keyingset_remove_selected", icon='ZOOMOUT', text="") if ks: row = layout.row(align=False) row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") row = layout.row(align=True) - row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') - row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') + row.operator("anim.keyframe_insert", text="", icon='KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT') else: row = layout.row(align=False) row.label(text="No Keying Set active") diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 3c6c43ea910..73fbe01d8ec 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -297,9 +297,9 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): row = layout.row() if strip.mute == True: - row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="") + row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON', text="") elif strip.mute is False: - row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="") + row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_OFF', text="") sub = row.row() sub.active = (not strip.mute) @@ -517,9 +517,9 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): row = layout.row() if strip.sound.packed_file: - row.operator("sound.unpack", icon='ICON_PACKAGE', text="Unpack") + row.operator("sound.unpack", icon='PACKAGE', text="Unpack") else: - row.operator("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack") + row.operator("sound.pack", icon='UGLYPACKAGE', text="Pack") row.prop(strip.sound, "caching") diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 95175e9ce41..5df937aacde 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -42,7 +42,7 @@ class TEXT_HT_header(bpy.types.Header): if text and text.modified: row = layout.row() # row.color(redalert) - row.operator("text.resolve_conflict", text="", icon='ICON_HELP') + row.operator("text.resolve_conflict", text="", icon='HELP') layout.template_ID(st, "text", new="text.new", unlink="text.unlink") @@ -104,14 +104,14 @@ class TEXT_PT_find(bpy.types.Panel): col = layout.column(align=True) row = col.row() row.prop(st, "find_text", text="") - row.operator("text.find_set_selected", text="", icon='ICON_TEXT') + row.operator("text.find_set_selected", text="", icon='TEXT') col.operator("text.find") # replace col = layout.column(align=True) row = col.row() row.prop(st, "replace_text", text="") - row.operator("text.replace_set_selected", text="", icon='ICON_TEXT') + row.operator("text.replace_set_selected", text="", icon='TEXT') col.operator("text.replace") # mark @@ -156,7 +156,7 @@ class TEXT_MT_text(bpy.types.Menu): layout.separator() - layout.operator("text.properties", icon='ICON_MENU_PANEL') + layout.operator("text.properties", icon='MENU_PANEL') layout.menu("TEXT_MT_templates") diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 4c1111cee47..73bfd7f85b7 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -54,32 +54,32 @@ class TIME_HT_header(bpy.types.Header): layout.separator() row = layout.row(align=True) - row.operator("screen.frame_jump", text="", icon='ICON_REW').end = False - row.operator("screen.keyframe_jump", text="", icon='ICON_PREV_KEYFRAME').next = False + row.operator("screen.frame_jump", text="", icon='REW').end = False + row.operator("screen.keyframe_jump", text="", icon='PREV_KEYFRAME').next = False if not screen.animation_playing: - row.operator("screen.animation_play", text="", icon='ICON_PLAY_REVERSE').reverse = True - row.operator("screen.animation_play", text="", icon='ICON_PLAY') + row.operator("screen.animation_play", text="", icon='PLAY_REVERSE').reverse = True + row.operator("screen.animation_play", text="", icon='PLAY') else: sub = row.row() sub.scale_x = 2.0 - sub.operator("screen.animation_play", text="", icon='ICON_PAUSE') - row.operator("screen.keyframe_jump", text="", icon='ICON_NEXT_KEYFRAME').next = True - row.operator("screen.frame_jump", text="", icon='ICON_FF').end = True + sub.operator("screen.animation_play", text="", icon='PAUSE') + row.operator("screen.keyframe_jump", text="", icon='NEXT_KEYFRAME').next = True + row.operator("screen.frame_jump", text="", icon='FF').end = True row = layout.row(align=True) - row.prop(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC') + row.prop(tools, "enable_auto_key", text="", toggle=True, icon='REC') if screen.animation_playing and tools.enable_auto_key: subsub = row.row() subsub.prop(tools, "record_with_nla", toggle=True) - layout.prop(scene, "sync_audio", text="Realtime", toggle=True, icon='ICON_SPEAKER') + layout.prop(scene, "sync_audio", text="Realtime", toggle=True, icon='SPEAKER') layout.separator() row = layout.row(align=True) row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="") - row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT') - row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT') + row.operator("anim.keyframe_insert", text="", icon='KEY_HLT') + row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT') class TIME_MT_view(bpy.types.Menu): @@ -146,7 +146,7 @@ class TIME_MT_playback(bpy.types.Menu): layout.separator() - layout.prop(scene, "sync_audio", text="Realtime Playback", icon='ICON_SPEAKER') + layout.prop(scene, "sync_audio", text="Realtime Playback", icon='SPEAKER') layout.prop(scene, "mute_audio") layout.prop(scene, "scrub_audio") diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index bf232116bb6..fda6fe67c1e 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1215,16 +1215,16 @@ class USERPREF_PT_input(bpy.types.Panel): row = subcol.row() if kmi.expanded: - row.prop(kmi, "expanded", text="", icon='ICON_TRIA_DOWN') + row.prop(kmi, "expanded", text="", icon='TRIA_DOWN') else: - row.prop(kmi, "expanded", text="", icon='ICON_TRIA_RIGHT') + row.prop(kmi, "expanded", text="", icon='TRIA_RIGHT') itemrow = row.row() itemrow.enabled = km.user_defined if kmi.active: - itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_HLT') + itemrow.prop(kmi, "active", text="", icon='CHECKBOX_HLT') else: - itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_DEHLT') + itemrow.prop(kmi, "active", text="", icon='CHECKBOX_DEHLT') itemcol = itemrow.column() itemcol.active = kmi.active @@ -1286,11 +1286,11 @@ class USERPREF_PT_input(bpy.types.Panel): itemcol.separator() - itemrow.operator("wm.keyitem_remove", text="", icon='ICON_ZOOMOUT') + itemrow.operator("wm.keyitem_remove", text="", icon='ZOOMOUT') itemrow = col.row() itemrow.label() - itemrow.operator("wm.keyitem_add", text="", icon='ICON_ZOOMIN') + itemrow.operator("wm.keyitem_add", text="", icon='ZOOMIN') itemrow.enabled = km.user_defined bpy.types.register(USERPREF_HT_header) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 6179a2be1e3..6abce19e032 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -87,16 +87,16 @@ class VIEW3D_HT_header(bpy.types.Header): # OpenGL render row = layout.row(align=True) - row.operator("screen.opengl_render", text="", icon='ICON_RENDER_STILL') - props = row.operator("screen.opengl_render", text="", icon='ICON_RENDER_ANIMATION') + row.operator("screen.opengl_render", text="", icon='RENDER_STILL') + props = row.operator("screen.opengl_render", text="", icon='RENDER_ANIMATION') props.animation = True # Pose if obj and obj.mode == 'POSE': row = layout.row(align=True) - row.operator("pose.copy", text="", icon='ICON_COPYDOWN') - row.operator("pose.paste", text="", icon='ICON_PASTEDOWN') - props = row.operator("pose.paste", text="", icon='ICON_PASTEFLIPDOWN') + row.operator("pose.copy", text="", icon='COPYDOWN') + row.operator("pose.paste", text="", icon='PASTEDOWN') + props = row.operator("pose.paste", text="", icon='PASTEFLIPDOWN') props.flipped = 1 @@ -230,8 +230,8 @@ class VIEW3D_MT_view(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("view3d.properties", icon='ICON_MENU_PANEL') - layout.operator("view3d.toolbar", icon='ICON_MENU_PANEL') + layout.operator("view3d.properties", icon='MENU_PANEL') + layout.operator("view3d.toolbar", icon='MENU_PANEL') layout.separator() @@ -1594,14 +1594,14 @@ class VIEW3D_PT_3dview_name(bpy.types.Panel): ob = context.active_object row = layout.row() - row.label(text="", icon='ICON_OBJECT_DATA') + row.label(text="", icon='OBJECT_DATA') row.prop(ob, "name", text="") if ob.type == 'ARMATURE' and ob.mode in ('EDIT', 'POSE'): bone = context.active_bone if bone: row = layout.row() - row.label(text="", icon='ICON_BONE_DATA') + row.label(text="", icon='BONE_DATA') row.prop(bone, "name", text="") diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index f6de5138214..01c15a7d303 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -871,14 +871,14 @@ DEF_ICON(ICON_BLANK346b) /* vector icons */ -DEF_ICON(VICON_VIEW3D) -DEF_ICON(VICON_EDIT) -DEF_ICON(VICON_EDITMODE_DEHLT) -DEF_ICON(VICON_EDITMODE_HLT) -DEF_ICON(VICON_DISCLOSURE_TRI_RIGHT) -DEF_ICON(VICON_DISCLOSURE_TRI_DOWN) -DEF_ICON(VICON_MOVE_UP) -DEF_ICON(VICON_MOVE_DOWN) -DEF_ICON(VICON_X) -DEF_ICON(VICON_SMALL_TRI_RIGHT) +DEF_ICON(VICO_VIEW3D_VEC) +DEF_ICON(VICO_EDIT_VEC) +DEF_ICON(VICO_EDITMODE_DEHLT) +DEF_ICON(VICO_EDITMODE_HLT) +DEF_ICON(VICO_DISCLOSURE_TRI_RIGHT_VEC) +DEF_ICON(VICO_DISCLOSURE_TRI_DOWN_VEC) +DEF_ICON(VICO_MOVE_UP_VEC) +DEF_ICON(VICO_MOVE_DOWN_VEC) +DEF_ICON(VICO_X_VEC) +DEF_ICON(VICO_SMALL_TRI_RIGHT_VEC) diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 23a0ff7d223..e219198da0f 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -528,16 +528,16 @@ static void init_internal_icons() } } - def_internal_vicon(VICON_VIEW3D, vicon_view3d_draw); - def_internal_vicon(VICON_EDIT, vicon_edit_draw); - def_internal_vicon(VICON_EDITMODE_DEHLT, vicon_editmode_dehlt_draw); - def_internal_vicon(VICON_EDITMODE_HLT, vicon_editmode_hlt_draw); - def_internal_vicon(VICON_DISCLOSURE_TRI_RIGHT, vicon_disclosure_tri_right_draw); - def_internal_vicon(VICON_DISCLOSURE_TRI_DOWN, vicon_disclosure_tri_down_draw); - def_internal_vicon(VICON_MOVE_UP, vicon_move_up_draw); - def_internal_vicon(VICON_MOVE_DOWN, vicon_move_down_draw); - def_internal_vicon(VICON_X, vicon_x_draw); - def_internal_vicon(VICON_SMALL_TRI_RIGHT, vicon_small_tri_right_draw); + def_internal_vicon(VICO_VIEW3D_VEC, vicon_view3d_draw); + def_internal_vicon(VICO_EDIT_VEC, vicon_edit_draw); + def_internal_vicon(VICO_EDITMODE_DEHLT, vicon_editmode_dehlt_draw); + def_internal_vicon(VICO_EDITMODE_HLT, vicon_editmode_hlt_draw); + def_internal_vicon(VICO_DISCLOSURE_TRI_RIGHT_VEC, vicon_disclosure_tri_right_draw); + def_internal_vicon(VICO_DISCLOSURE_TRI_DOWN_VEC, vicon_disclosure_tri_down_draw); + def_internal_vicon(VICO_MOVE_UP_VEC, vicon_move_up_draw); + def_internal_vicon(VICO_MOVE_DOWN_VEC, vicon_move_down_draw); + def_internal_vicon(VICO_X_VEC, vicon_x_draw); + def_internal_vicon(VICO_SMALL_TRI_RIGHT_VEC, vicon_small_tri_right_draw); IMB_freeImBuf(bbuf); } diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index 0e2769a3557..ade906ce678 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -767,7 +767,7 @@ void buttons_context_draw(const bContext *C, uiLayout *layout) ptr= &path->ptr[a]; if(a != 0) - uiItemL(row, "", VICON_SMALL_TRI_RIGHT); + uiItemL(row, "", VICO_SMALL_TRI_RIGHT_VEC); if(ptr->data) { icon= RNA_struct_ui_icon(ptr->type); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 6086cdfdec2..5880e1d7ae6 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -64,7 +64,7 @@ static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opna #else -#define DEF_ICON(name) {name, #name, 0, #name, ""}, +#define DEF_ICON(name) {name, (#name)+5, 0, (#name)+5, ""}, static EnumPropertyItem icon_items[] = { #include "UI_icons.h" {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 7427fc73d94..cfd455e045c 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -158,12 +158,13 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) { ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */ - switch(RNA_SUBTYPE_VALUE(RNA_property_subtype(prop))) { + switch(RNA_property_subtype(prop)) { case PROP_TRANSLATION: case PROP_DIRECTION: case PROP_VELOCITY: case PROP_ACCELERATION: case PROP_XYZ: + case PROP_XYZ|PROP_UNIT_LENGTH: if(len>=2 && len <= 4) { PyObject *vec_cb= newVectorObject_cb(ret, len, mathutils_rna_array_cb_index, FALSE); Py_DECREF(ret); /* the vector owns now */ -- cgit v1.2.3 From 9358af05d09817fcba3c35e34bcdf8c6c08c3be8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 10:36:32 +0000 Subject: rename operators TFM_OT_* --> TRANSFORM_OT_* --- release/scripts/op/wm.py | 2 +- release/scripts/ui/space_dopesheet.py | 6 +- release/scripts/ui/space_graph.py | 8 +- release/scripts/ui/space_image.py | 10 +- release/scripts/ui/space_nla.py | 6 +- release/scripts/ui/space_node.py | 6 +- release/scripts/ui/space_sequencer.py | 4 +- release/scripts/ui/space_view3d.py | 46 +++--- release/scripts/ui/space_view3d_toolbar.py | 56 +++---- source/blender/editors/armature/armature_ops.c | 12 +- source/blender/editors/curve/curve_ops.c | 4 +- source/blender/editors/curve/editcurve.c | 4 +- source/blender/editors/gpencil/gpencil_edit.c | 4 - source/blender/editors/mesh/editmesh_tools.c | 2 +- source/blender/editors/mesh/mesh_ops.c | 10 +- source/blender/editors/metaball/mball_edit.c | 2 +- source/blender/editors/object/object_ops.c | 4 +- source/blender/editors/space_action/action_edit.c | 2 +- source/blender/editors/space_graph/graph_edit.c | 2 +- source/blender/editors/space_nla/nla_edit.c | 2 +- source/blender/editors/space_node/node_ops.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 2 +- source/blender/editors/transform/transform.c | 24 +-- source/blender/editors/transform/transform.h | 2 +- .../editors/transform/transform_manipulator.c | 8 +- source/blender/editors/transform/transform_ops.c | 178 ++++++++++----------- 26 files changed, 202 insertions(+), 206 deletions(-) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 7000eaffebf..a61c6d2f301 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -30,7 +30,7 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bl_label = "Delete Edge Loop" def execute(self, context): - bpy.ops.tfm.edge_slide(value=1.0) + bpy.ops.transform.edge_slide(value=1.0) bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index 1657539ddb2..f9381432e27 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -178,9 +178,9 @@ class DOPESHEET_MT_key_transform(bpy.types.Menu): layout = self.layout layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.operator("transform.translate", text="Grab/Move") + layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("transform.resize", text="Scale") bpy.types.register(DOPESHEET_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index 893b2e35bc3..57e42f9d48c 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -181,10 +181,10 @@ class GRAPH_MT_key_transform(bpy.types.Menu): layout = self.layout layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.rotate", text="Rotate") - layout.operator("tfm.resize", text="Scale") + layout.operator("transform.translate", text="Grab/Move") + layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("transform.rotate", text="Rotate") + layout.operator("transform.resize", text="Scale") bpy.types.register(GRAPH_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 38a3d499a4f..5f9df21331f 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -150,9 +150,9 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("tfm.translate") - layout.operator("tfm.rotate") - layout.operator("tfm.resize") + layout.operator("transform.translate") + layout.operator("transform.rotate") + layout.operator("transform.resize") class IMAGE_MT_uvs_snap(bpy.types.Menu): @@ -179,8 +179,8 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_REGION_WIN' - layout.operator("tfm.mirror", text="X Axis").constraint_axis[0] = True - layout.operator("tfm.mirror", text="Y Axis").constraint_axis[1] = True + layout.operator("transform.mirror", text="X Axis").constraint_axis[0] = True + layout.operator("transform.mirror", text="Y Axis").constraint_axis[1] = True class IMAGE_MT_uvs_weldalign(bpy.types.Menu): diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py index e9cc77c8633..622ebb42ab7 100644 --- a/release/scripts/ui/space_nla.py +++ b/release/scripts/ui/space_nla.py @@ -153,9 +153,9 @@ class NLA_MT_edit_transform(bpy.types.Menu): layout = self.layout layout.column() - layout.operator("tfm.translate", text="Grab/Move") - layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND' - layout.operator("tfm.resize", text="Scale") + layout.operator("transform.translate", text="Grab/Move") + layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND' + layout.operator("transform.resize", text="Scale") bpy.types.register(NLA_HT_header) # header/menu classes diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index 9d3873286ea..9cf0a0c5ef3 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -109,9 +109,9 @@ class NODE_MT_node(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("tfm.translate") - layout.operator("tfm.rotate") - layout.operator("tfm.resize") + layout.operator("transform.translate") + layout.operator("transform.rotate") + layout.operator("transform.resize") layout.separator() diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 73fbe01d8ec..35174033572 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -199,8 +199,8 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' layout.column() - layout.operator("tfm.transform", text="Grab/Move").mode = 'TRANSLATION' - layout.operator("tfm.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND' + layout.operator("transform.transform", text="Grab/Move").mode = 'TRANSLATION' + layout.operator("transform.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND' # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator layout.separator() diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 6abce19e032..af351f86d86 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -124,24 +124,24 @@ class VIEW3D_MT_transform(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("tfm.translate", text="Grab/Move") + layout.operator("transform.translate", text="Grab/Move") # TODO: sub-menu for grab per axis - layout.operator("tfm.rotate", text="Rotate") + layout.operator("transform.rotate", text="Rotate") # TODO: sub-menu for rot per axis - layout.operator("tfm.resize", text="Scale") + layout.operator("transform.resize", text="Scale") # TODO: sub-menu for scale per axis layout.separator() - layout.operator("tfm.tosphere", text="To Sphere") - layout.operator("tfm.shear", text="Shear") - layout.operator("tfm.warp", text="Warp") - layout.operator("tfm.transform", text="Push/Pull").mode = 'PUSHPULL' + layout.operator("transform.tosphere", text="To Sphere") + layout.operator("transform.shear", text="Shear") + layout.operator("transform.warp", text="Warp") + layout.operator("transform.transform", text="Push/Pull").mode = 'PUSHPULL' if context.edit_object and context.edit_object.type == 'ARMATURE': layout.operator("armature.align") else: layout.operator_context = 'EXEC_REGION_WIN' - layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working + layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working layout.separator() @@ -158,32 +158,32 @@ class VIEW3D_MT_mirror(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("tfm.mirror", text="Interactive Mirror") + layout.operator("transform.mirror", text="Interactive Mirror") layout.separator() layout.operator_context = 'INVOKE_REGION_WIN' - props = layout.operator("tfm.mirror", text="X Global") + props = layout.operator("transform.mirror", text="X Global") props.constraint_axis = (True, False, False) props.constraint_orientation = 'GLOBAL' - props = layout.operator("tfm.mirror", text="Y Global") + props = layout.operator("transform.mirror", text="Y Global") props.constraint_axis = (False, True, False) props.constraint_orientation = 'GLOBAL' - props = layout.operator("tfm.mirror", text="Z Global") + props = layout.operator("transform.mirror", text="Z Global") props.constraint_axis = (False, False, True) props.constraint_orientation = 'GLOBAL' if context.edit_object: layout.separator() - props = layout.operator("tfm.mirror", text="X Local") + props = layout.operator("transform.mirror", text="X Local") props.constraint_axis = (True, False, False) props.constraint_orientation = 'LOCAL' - props = layout.operator("tfm.mirror", text="Y Local") + props = layout.operator("transform.mirror", text="Y Local") props.constraint_axis = (False, True, False) props.constraint_orientation = 'LOCAL' - props = layout.operator("tfm.mirror", text="Z Local") + props = layout.operator("transform.mirror", text="Z Local") props.constraint_axis = (False, False, True) props.constraint_orientation = 'LOCAL' @@ -918,7 +918,7 @@ class VIEW3D_MT_pose(bpy.types.Menu): layout.menu("VIEW3D_MT_transform") layout.menu("VIEW3D_MT_snap") if arm.drawtype in ('BBONE', 'ENVELOPE'): - layout.operator("tfm.transform", text="Scale Envelope Distance").mode = 'BONESIZE' + layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONESIZE' layout.menu("VIEW3D_MT_pose_transform") @@ -1177,7 +1177,7 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): layout.separator() - layout.operator("TFM_OT_edge_slide", text="Edge Slide") + layout.operator("TRANSFORM_OT_edge_slide", text="Edge Slide") layout.operator("mesh.loop_multi_select", text="Edge Loop") # uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1); @@ -1298,7 +1298,7 @@ class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu): edit_object = context.edit_object if edit_object.type == 'CURVE': - layout.operator("tfm.transform").mode = 'TILT' + layout.operator("transform.transform").mode = 'TILT' layout.operator("curve.tilt_clear") layout.operator("curve.separate") @@ -1458,9 +1458,9 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu): layout.menu("VIEW3D_MT_edit_armature_roll") if arm.drawtype == 'ENVELOPE': - layout.operator("tfm.transform", text="Scale Envelope Distance").mode = 'BONESIZE' + layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONESIZE' else: - layout.operator("tfm.transform", text="Scale B-Bone Width").mode = 'BONESIZE' + layout.operator("transform.transform", text="Scale B-Bone Width").mode = 'BONESIZE' layout.separator() @@ -1544,7 +1544,7 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): layout.separator() - layout.operator("tfm.transform", text="Set Roll").mode = 'BONE_ROLL' + layout.operator("transform.transform", text="Set Roll").mode = 'BONE_ROLL' # ********** Panel ********** @@ -1769,13 +1769,13 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel): col = layout.column() col.prop(view, "transform_orientation") - col.operator("tfm.create_orientation", text="Create") + col.operator("transform.create_orientation", text="Create") orientation = view.current_orientation if orientation: col.prop(orientation, "name") - col.operator("tfm.delete_orientation", text="Delete") + col.operator("transform.delete_orientation", text="Delete") class VIEW3D_PT_etch_a_ton(bpy.types.Panel): diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 61707b60631..41d7ffd2d4f 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -37,9 +37,9 @@ class VIEW3D_PT_tools_objectmode(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.label(text="Object:") @@ -84,15 +84,15 @@ class VIEW3D_PT_tools_meshedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") - col.operator("tfm.shrink_fatten", text="Along Normal") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") + col.operator("transform.shrink_fatten", text="Along Normal") col = layout.column(align=True) col.label(text="Deform:") - col.operator("tfm.edge_slide") + col.operator("transform.edge_slide") col.operator("mesh.rip_move") col.operator("mesh.vertices_smooth") @@ -168,13 +168,13 @@ class VIEW3D_PT_tools_curveedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) - col.operator("tfm.transform", text="Tilt").mode = 'TILT' - col.operator("tfm.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN' + col.operator("transform.transform", text="Tilt").mode = 'TILT' + col.operator("transform.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN' col = layout.column(align=True) col.label(text="Curve:") @@ -222,9 +222,9 @@ class VIEW3D_PT_tools_surfaceedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.label(text="Curve:") @@ -295,9 +295,9 @@ class VIEW3D_PT_tools_armatureedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.label(text="Bones:") @@ -347,9 +347,9 @@ class VIEW3D_PT_tools_mballedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.label(text="Repeat:") @@ -375,9 +375,9 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.operator("lattice.make_regular") @@ -407,9 +407,9 @@ class VIEW3D_PT_tools_posemode(View3DPanel): col = layout.column(align=True) col.label(text="Transform:") - col.operator("tfm.translate") - col.operator("tfm.rotate") - col.operator("tfm.resize", text="Scale") + col.operator("transform.translate") + col.operator("transform.rotate") + col.operator("transform.resize", text="Scale") col = layout.column(align=True) col.label(text="In-Between:") diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 7caadf532e5..a3c35413680 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -164,13 +164,13 @@ void ED_operatormacros_armature(void) ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER); otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude"); RNA_enum_set(otmacro->ptr, "forked", 0); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); // XXX would it be nicer to just be able to have standard extrude_move, but set the forked property separate? @@ -178,7 +178,7 @@ void ED_operatormacros_armature(void) ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_forked", "Extrude Forked", OPTYPE_UNDO|OPTYPE_REGISTER); otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude"); RNA_enum_set(otmacro->ptr, "forked", 1); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); } @@ -261,10 +261,10 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* special transforms: */ /* 1) envelope/b-bone size */ - kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); + kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); /* 2) set roll */ - kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0); + kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0); RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL); /* menus */ @@ -335,7 +335,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* special transforms: */ /* 1) envelope/b-bone size */ - kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); + kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 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 diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index c54739902d0..3f59e295fe4 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -238,8 +238,8 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", TFM_TILT); - RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN); + RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", TFM_TILT); + RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, 0, 0)->ptr, "type", 3); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", VKEY, KM_PRESS, 0, 0)->ptr, "type", 2); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index a139a75f844..aeeb8dffa28 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -3539,7 +3539,7 @@ static int extrude_invoke(bContext *C, wmOperator *op, wmEvent *event) { if(extrude_exec(C, op) == OPERATOR_FINISHED) { RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } @@ -4294,7 +4294,7 @@ static int duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event) duplicate_exec(C, op); RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index 2f41d90b37c..e5a0cd0f8cb 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -493,7 +493,6 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short Scene *scene= CTX_data_scene(C); bGPDframe *gpf= gpencil_layer_getframe(gpl, CFRA, 0); bGPDstroke *gps; - Base *base= BASACT; Object *ob; Curve *cu; @@ -529,9 +528,6 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short break; } } - - /* restore old active object */ - // BASACT= base; // removing since this is expected new objects are active. } /* --- */ diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 089a35f8402..b283070d454 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -4985,7 +4985,7 @@ static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event) // RNA_enum_set(op->ptr, "proportional", 0); // RNA_boolean_set(op->ptr, "mirror", 0); -// WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr); +// WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 9a44f5960df..5f54aa041e3 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -173,29 +173,29 @@ void ED_operatormacros_mesh(void) ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loop Cut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "MESH_OT_loopcut"); - WM_operatortype_macro_define(ot, "TFM_OT_edge_slide"); + WM_operatortype_macro_define(ot, "TRANSFORM_OT_edge_slide"); ot= WM_operatortype_append_macro("MESH_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "MESH_OT_duplicate"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); ot= WM_operatortype_append_macro("MESH_OT_rip_move", "Rip", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "MESH_OT_rip"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); ot= WM_operatortype_append_macro("MESH_OT_extrude_move_along_normals", "Extrude Along Normals", OPTYPE_UNDO|OPTYPE_REGISTER); ot->poll = ED_operator_editmesh_face_select; /* restrict extrude along normals to face select */ WM_operatortype_macro_define(ot, "MESH_OT_extrude"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); RNA_enum_set(otmacro->ptr, "constraint_orientation", V3D_MANIP_NORMAL); RNA_boolean_set_array(otmacro->ptr, "constraint_axis", constraint_axis); ot= WM_operatortype_append_macro("MESH_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "MESH_OT_extrude"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); } diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index d4ad833d11e..d8e36a503f1 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -370,7 +370,7 @@ static int duplicate_metaelems_invoke(bContext *C, wmOperator *op, wmEvent *even if (retv == OPERATOR_FINISHED) { RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); } return retv; diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 49c947f52c8..66a03d4aec5 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -203,7 +203,7 @@ void ED_operatormacros_object(void) ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); if(ot) { WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF); } @@ -212,7 +212,7 @@ void ED_operatormacros_object(void) if(ot) { otmacro= WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); RNA_boolean_set(otmacro->ptr, "linked", 1); - otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF); } } diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 133d48a5ecc..c5da96267e1 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -572,7 +572,7 @@ static int actkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event) actkeys_duplicate_exec(C, op); RNA_int_set(op->ptr, "mode", TFM_TIME_TRANSLATE); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 532c2fe5faa..6e488678f2b 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -754,7 +754,7 @@ static int graphkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *even graphkeys_duplicate_exec(C, op); RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 0ae3a347872..4422bc2d158 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -679,7 +679,7 @@ static int nlaedit_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event) nlaedit_duplicate_exec(C, op); RNA_int_set(op->ptr, "mode", TFM_TIME_TRANSLATE); // XXX - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index fae9afacbcd..2a32ce6b65a 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -83,7 +83,7 @@ void ED_operatormacros_node(void) 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, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); } diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 96d4ed06ead..c8f47e1a3e8 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1805,7 +1805,7 @@ static int sequencer_add_duplicate_invoke(bContext *C, wmOperator *op, wmEvent * sequencer_add_duplicate_exec(C, op); RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 728c4eae676..d6088648eb2 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -569,18 +569,18 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); /* assign map to operators */ - WM_modalkeymap_assign(keymap, "TFM_OT_transform"); - WM_modalkeymap_assign(keymap, "TFM_OT_translate"); - WM_modalkeymap_assign(keymap, "TFM_OT_rotate"); - WM_modalkeymap_assign(keymap, "TFM_OT_tosphere"); - WM_modalkeymap_assign(keymap, "TFM_OT_resize"); - WM_modalkeymap_assign(keymap, "TFM_OT_shear"); - WM_modalkeymap_assign(keymap, "TFM_OT_warp"); - WM_modalkeymap_assign(keymap, "TFM_OT_shrink_fatten"); - WM_modalkeymap_assign(keymap, "TFM_OT_tilt"); - WM_modalkeymap_assign(keymap, "TFM_OT_trackball"); - WM_modalkeymap_assign(keymap, "TFM_OT_mirror"); - WM_modalkeymap_assign(keymap, "TFM_OT_edge_slide"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_transform"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_translate"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_rotate"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_tosphere"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_resize"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_shear"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_warp"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_shrink_fatten"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_tilt"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_trackball"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_mirror"); + WM_modalkeymap_assign(keymap, "TRANSFORM_OT_edge_slide"); } diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 9f40b6f7288..7d9c16ada9b 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -429,7 +429,7 @@ typedef struct TransInfo { #define POINT_INIT 4 #define MULTI_POINTS 8 -void TFM_OT_transform(struct wmOperatorType *ot); +void TRANSFORM_OT_transform(struct wmOperatorType *ot); int initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event, int mode); void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op); diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 7530e015496..21e1ea42064 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -1743,7 +1743,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) break; } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); - WM_operator_name_call(C, "TFM_OT_translate", WM_OP_INVOKE_DEFAULT, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_DEFAULT, op->ptr); } else if (drawflags & MAN_SCALE_C) { switch(drawflags) { @@ -1773,10 +1773,10 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) break; } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); - WM_operator_name_call(C, "TFM_OT_resize", WM_OP_INVOKE_DEFAULT, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_resize", WM_OP_INVOKE_DEFAULT, op->ptr); } else if (drawflags == MAN_ROT_T) { /* trackball need special case, init is different */ - WM_operator_name_call(C, "TFM_OT_trackball", WM_OP_INVOKE_DEFAULT, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_trackball", WM_OP_INVOKE_DEFAULT, op->ptr); } else if (drawflags & MAN_ROT_C) { switch(drawflags) { @@ -1791,7 +1791,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) break; } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); - WM_operator_name_call(C, "TFM_OT_rotate", WM_OP_INVOKE_DEFAULT, op->ptr); + WM_operator_name_call(C, "TRANSFORM_OT_rotate", WM_OP_INVOKE_DEFAULT, op->ptr); } } /* after transform, restore drawflags */ diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index ad4462a74cf..f794d79bdd9 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -55,17 +55,17 @@ typedef struct TransformModeItem static float VecOne[3] = {1, 1, 1}; -char OP_TRANSLATION[] = "TFM_OT_translate"; -char OP_ROTATION[] = "TFM_OT_rotate"; -char OP_TOSPHERE[] = "TFM_OT_tosphere"; -char OP_RESIZE[] = "TFM_OT_resize"; -char OP_SHEAR[] = "TFM_OT_shear"; -char OP_WARP[] = "TFM_OT_warp"; -char OP_SHRINK_FATTEN[] = "TFM_OT_shrink_fatten"; -char OP_TILT[] = "TFM_OT_tilt"; -char OP_TRACKBALL[] = "TFM_OT_trackball"; -char OP_MIRROR[] = "TFM_OT_mirror"; -char OP_EDGE_SLIDE[] = "TFM_OT_edge_slide"; +char OP_TRANSLATION[] = "TRANSFORM_OT_translate"; +char OP_ROTATION[] = "TRANSFORM_OT_rotate"; +char OP_TOSPHERE[] = "TRANSFORM_OT_tosphere"; +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_TILT[] = "TRANSFORM_OT_tilt"; +char OP_TRACKBALL[] = "TRANSFORM_OT_trackball"; +char OP_MIRROR[] = "TRANSFORM_OT_mirror"; +char OP_EDGE_SLIDE[] = "TRANSFORM_OT_edge_slide"; TransformModeItem transform_modes[] = @@ -95,12 +95,12 @@ static int snap_type_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void TFM_OT_snap_type(wmOperatorType *ot) +void TRANSFORM_OT_snap_type(wmOperatorType *ot) { /* identifiers */ ot->name= "Snap Type"; ot->description= "Set the snap element type."; - ot->idname= "TFM_OT_snap_type"; + ot->idname= "TRANSFORM_OT_snap_type"; /* api callbacks */ ot->invoke= WM_menu_invoke; @@ -134,20 +134,20 @@ static int select_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event pup= uiPupMenuBegin(C, "Orientation", 0); layout= uiPupMenuLayout(pup); - uiItemsEnumO(layout, "TFM_OT_select_orientation", "orientation"); + uiItemsEnumO(layout, "TRANSFORM_OT_select_orientation", "orientation"); uiPupMenuEnd(C, pup); return OPERATOR_CANCELLED; } -void TFM_OT_select_orientation(struct wmOperatorType *ot) +void TRANSFORM_OT_select_orientation(struct wmOperatorType *ot) { PropertyRNA *prop; /* identifiers */ ot->name = "Select Orientation"; ot->description= "Select transformation orientation."; - ot->idname = "TFM_OT_select_orientation"; + ot->idname = "TRANSFORM_OT_select_orientation"; ot->flag = OPTYPE_UNDO; /* api callbacks */ @@ -194,12 +194,12 @@ static int delete_orientation_poll(bContext *C) return selected_index >= 0; } -void TFM_OT_delete_orientation(struct wmOperatorType *ot) +void TRANSFORM_OT_delete_orientation(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Delete Orientation"; ot->description= "Delete transformation orientation."; - ot->idname = "TFM_OT_delete_orientation"; + ot->idname = "TRANSFORM_OT_delete_orientation"; ot->flag = OPTYPE_UNDO; /* api callbacks */ @@ -228,12 +228,12 @@ static int create_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event return create_orientation_exec(C, op); } -void TFM_OT_create_orientation(struct wmOperatorType *ot) +void TRANSFORM_OT_create_orientation(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Create Orientation"; ot->description= "Create transformation orientation from selection."; - ot->idname = "TFM_OT_create_orientation"; + ot->idname = "TRANSFORM_OT_create_orientation"; ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; /* api callbacks */ @@ -395,7 +395,7 @@ void Properties_Constraints(struct wmOperatorType *ot) RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf); } -void TFM_OT_translate(struct wmOperatorType *ot) +void TRANSFORM_OT_translate(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Translate"; @@ -421,7 +421,7 @@ void TFM_OT_translate(struct wmOperatorType *ot) Properties_Snapping(ot, 1, 1); } -void TFM_OT_resize(struct wmOperatorType *ot) +void TRANSFORM_OT_resize(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Resize"; @@ -448,7 +448,7 @@ void TFM_OT_resize(struct wmOperatorType *ot) } -void TFM_OT_trackball(struct wmOperatorType *ot) +void TRANSFORM_OT_trackball(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Trackball"; @@ -472,7 +472,7 @@ void TFM_OT_trackball(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } -void TFM_OT_rotate(struct wmOperatorType *ot) +void TRANSFORM_OT_rotate(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Rotate"; @@ -498,7 +498,7 @@ void TFM_OT_rotate(struct wmOperatorType *ot) Properties_Snapping(ot, 1, 0); } -void TFM_OT_tilt(struct wmOperatorType *ot) +void TRANSFORM_OT_tilt(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Tilt"; @@ -527,7 +527,7 @@ void TFM_OT_tilt(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } -void TFM_OT_warp(struct wmOperatorType *ot) +void TRANSFORM_OT_warp(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Warp"; @@ -554,7 +554,7 @@ void TFM_OT_warp(struct wmOperatorType *ot) // Properties_Constraints(ot); } -void TFM_OT_shear(struct wmOperatorType *ot) +void TRANSFORM_OT_shear(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Shear"; @@ -581,7 +581,7 @@ void TFM_OT_shear(struct wmOperatorType *ot) // Properties_Constraints(ot); } -void TFM_OT_shrink_fatten(struct wmOperatorType *ot) +void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Shrink/Fatten"; @@ -605,7 +605,7 @@ void TFM_OT_shrink_fatten(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } -void TFM_OT_tosphere(struct wmOperatorType *ot) +void TRANSFORM_OT_tosphere(struct wmOperatorType *ot) { /* identifiers */ ot->name = "To Sphere"; @@ -630,7 +630,7 @@ void TFM_OT_tosphere(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } -void TFM_OT_mirror(struct wmOperatorType *ot) +void TRANSFORM_OT_mirror(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Mirror"; @@ -649,7 +649,7 @@ void TFM_OT_mirror(struct wmOperatorType *ot) Properties_Constraints(ot); } -void TFM_OT_edge_slide(struct wmOperatorType *ot) +void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Edge Slide"; @@ -671,7 +671,7 @@ void TFM_OT_edge_slide(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } -void TFM_OT_transform(struct wmOperatorType *ot) +void TRANSFORM_OT_transform(struct wmOperatorType *ot) { static EnumPropertyItem transform_mode_types[] = { {TFM_INIT, "INIT", 0, "Init", ""}, @@ -707,7 +707,7 @@ void TFM_OT_transform(struct wmOperatorType *ot) /* identifiers */ ot->name = "Transform"; ot->description= "Transform selected items by mode type."; - ot->idname = "TFM_OT_transform"; + ot->idname = "TRANSFORM_OT_transform"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; /* api callbacks */ @@ -729,24 +729,24 @@ void TFM_OT_transform(struct wmOperatorType *ot) void transform_operatortypes(void) { - WM_operatortype_append(TFM_OT_transform); - WM_operatortype_append(TFM_OT_translate); - WM_operatortype_append(TFM_OT_rotate); - WM_operatortype_append(TFM_OT_tosphere); - WM_operatortype_append(TFM_OT_resize); - WM_operatortype_append(TFM_OT_shear); - WM_operatortype_append(TFM_OT_warp); - WM_operatortype_append(TFM_OT_shrink_fatten); - WM_operatortype_append(TFM_OT_tilt); - WM_operatortype_append(TFM_OT_trackball); - WM_operatortype_append(TFM_OT_mirror); - WM_operatortype_append(TFM_OT_edge_slide); + WM_operatortype_append(TRANSFORM_OT_transform); + WM_operatortype_append(TRANSFORM_OT_translate); + WM_operatortype_append(TRANSFORM_OT_rotate); + WM_operatortype_append(TRANSFORM_OT_tosphere); + WM_operatortype_append(TRANSFORM_OT_resize); + WM_operatortype_append(TRANSFORM_OT_shear); + WM_operatortype_append(TRANSFORM_OT_warp); + WM_operatortype_append(TRANSFORM_OT_shrink_fatten); + WM_operatortype_append(TRANSFORM_OT_tilt); + WM_operatortype_append(TRANSFORM_OT_trackball); + WM_operatortype_append(TRANSFORM_OT_mirror); + WM_operatortype_append(TRANSFORM_OT_edge_slide); - WM_operatortype_append(TFM_OT_select_orientation); - WM_operatortype_append(TFM_OT_create_orientation); - WM_operatortype_append(TFM_OT_delete_orientation); + WM_operatortype_append(TRANSFORM_OT_select_orientation); + WM_operatortype_append(TRANSFORM_OT_create_orientation); + WM_operatortype_append(TRANSFORM_OT_delete_orientation); - WM_operatortype_append(TFM_OT_snap_type); + WM_operatortype_append(TRANSFORM_OT_snap_type); } void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid) @@ -759,107 +759,107 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke switch(spaceid) { case SPACE_VIEW3D: - km = WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_tosphere", SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_tosphere", SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_tilt", TKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); RNA_boolean_set(km->ptr, "use", 1); - km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + 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", "scene.tool_settings.snap"); - km = WM_keymap_add_item(keymap, "TFM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0); break; case SPACE_ACTION: - km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + 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, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); // XXX the 'mode' identifier here is not quite right - km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); break; case SPACE_NLA: - km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); - km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TRANSLATION); - km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); + 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, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE); break; case SPACE_NODE: - km= WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); break; case SPACE_SEQ: - km= WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); break; case SPACE_IMAGE: - km = WM_keymap_add_item(keymap, "TFM_OT_translate", GKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TFM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TFM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + 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", "scene.tool_settings.snap"); -- cgit v1.2.3 From 6b7544bfda1d51e6d256240316ed1900e838faeb Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 10 Dec 2009 10:40:28 +0000 Subject: Durian Request: Default F-Curve Auto-Colour Modes Added option to KeyingSets+Keyframing Functions which makes newly added F-Curves for Transforms + Colours to use the colour mode which uses the array index to determine the colour of the F-Curve. The main implication of this is that when this option is enabled for a KeyingSet, all sets of XYZ F-Curves (i.e. location, rotation, scale) for transforms will be shown in Red/Green/Blue instead of some automatically determined "rainbow" colour. Useful for animators far too used to Maya's Graph Editor :P This setting is named, "XYZ to RGB", though that doesn't make its purpose entirely clear. --- release/scripts/ui/properties_scene.py | 3 ++- source/blender/editors/animation/keyframing.c | 14 +++++++++++++- source/blender/editors/include/ED_keyframing.h | 2 +- source/blender/makesdna/DNA_anim_types.h | 11 ++++++----- source/blender/makesrna/intern/rna_animation.c | 4 ++++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 86703d9f05d..857b6bfff02 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -100,7 +100,8 @@ class SCENE_PT_keying_sets(SceneButtonsPanel): col = row.column() col.label(text="Keyframing Settings:") col.prop(ks, "insertkey_needed", text="Needed") - col.prop(ks, "insertkey_visual", text="Visual") + col.prop(ks, "insertkey_visual", text="Visual") + col.prop(ks, "insertkey_xyz_to_rgb", text="XYZ to RGB") class SCENE_PT_keying_set_paths(SceneButtonsPanel): diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 3bfb8bdc867..3e25c9a6b60 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -274,6 +274,7 @@ int insert_vert_fcurve (FCurve *fcu, float x, float y, short flag) 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? + //BEZKEYTYPE(&beztr)= scene->keytype; /* default keyframe type */ /* add temp beztriple to keyframes */ a= insert_bezt_fcurve(fcu, &beztr, flag); @@ -809,7 +810,7 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ return 0; } - /* get F-Curve - if no action is provided, keyframe to the default one attached to this ID-block */ + /* if no action is provided, keyframe to the default one attached to this ID-block */ if (act == NULL) { AnimData *adt= BKE_animdata_from_id(id); @@ -842,8 +843,19 @@ 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); + /* 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); } diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 97a08845020..45a62ee7bcb 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -149,7 +149,7 @@ short ANIM_driver_can_paste(void); /* Main Driver Management API calls: * Add a new driver for the specified property on the given ID block */ -short ANIM_add_driver (struct ID *id, const char rna_path[], int array_index, short flag, int type); +short ANIM_add_driver(struct ID *id, const char rna_path[], int array_index, short flag, int type); /* Main Driver Management API calls: * Remove the driver for the specified property on the given ID block (if available) diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index c5d0231ce62..6a9700a5573 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -291,8 +291,8 @@ typedef struct ChannelDriver { /* python expression to execute (may call functions defined in an accessory file) * which relates the target 'variables' in some way to yield a single usable value */ - char expression[256]; - void *expr_comp; /* PyObject - compiled expression, dont save this */ + char expression[256]; /* expression to compile for evaluation */ + void *expr_comp; /* PyObject - compiled expression, dont save this */ float curval; /* result of previous evaluation, for subtraction from result under certain circumstances */ float influence; /* influence of driver on result */ // XXX to be implemented... this is like the constraint influence setting @@ -323,8 +323,8 @@ typedef enum eDriver_Flags { /* driver does replace value, but overrides (for layering of animation over driver) */ // TODO: this needs to be implemented at some stage or left out... DRIVER_FLAG_LAYERING = (1<<2), - - DRIVER_FLAG_RECOMPILE = (1<<3), /* use when the expression needs to be recompiled */ + /* use when the expression needs to be recompiled */ + DRIVER_FLAG_RECOMPILE = (1<<3), } eDriver_Flags; /* F-Curves -------------------------------------- */ @@ -367,7 +367,7 @@ typedef struct FCurve { char *rna_path; /* RNA-path to resolve data-access */ /* curve coloring (for editor) */ - int color_mode; /* coloring method to use */ + int color_mode; /* coloring method to use (eFCurve_Coloring) */ float color[3]; /* the last-color this curve took */ } FCurve; @@ -703,6 +703,7 @@ typedef enum eInsertKeyFlags { INSERTKEY_FAST = (1<<2), /* don't recalculate handles,etc. after adding key */ INSERTKEY_FASTR = (1<<3), /* don't realloc mem (or increase count, as array has already been set out) */ INSERTKEY_REPLACE = (1<<4), /* only replace an existing keyframe (this overrides INSERTKEY_NEEDED) */ + INSERTKEY_XYZ2RGB = (1<<5), /* transform F-Curves should have XYZ->RGB color mode */ } eInsertKeyFlags; /* ************************************************ */ diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index 3e7638b3d51..fdf345015e2 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -267,6 +267,10 @@ static void rna_def_keyingset(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_MATRIX); RNA_def_property_ui_text(prop, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'."); + prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_XYZ2RGB); + RNA_def_property_ui_text(prop, "XYZ Transforms to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis."); + /* Keying Set API */ RNA_api_keyingset(srna); } -- cgit v1.2.3 From 11ca70b42d2bb46202365358f40e63822a42a840 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 10 Dec 2009 11:08:38 +0000 Subject: Update Handling: moved wm_data_handle_update from windowmanager to scene_update_tagged in blenkernel, code fits better there. --- source/blender/blenkernel/BKE_scene.h | 1 + source/blender/blenkernel/intern/scene.c | 41 +++++++++++++++++++-- .../blender/windowmanager/intern/wm_event_system.c | 43 ++-------------------- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 686fc265de0..ecff62a7952 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -74,6 +74,7 @@ void scene_select_base(struct Scene *sce, struct Base *selbase); /* checks for cycle, returns 1 if it's all OK */ int scene_check_setscene(struct Scene *sce); +void scene_update_tagged(struct Scene *sce); void scene_update_for_newframe(struct Scene *sce, unsigned int lay); void scene_add_render_layer(struct Scene *sce); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 27cb3ad834b..cd9487862ea 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -77,6 +77,7 @@ #include "BKE_node.h" #include "BKE_object.h" #include "BKE_paint.h" +#include "BKE_pointcache.h" #include "BKE_scene.h" #include "BKE_sequence.h" #include "BKE_world.h" @@ -772,7 +773,7 @@ float frame_to_float (Scene *scene, int cfra) /* see also bsystem_time in objec return ctime; } -static void scene_update(Scene *sce, unsigned int lay) +static void scene_update_newframe(Scene *sce, unsigned int lay) { Base *base; Object *ob; @@ -804,6 +805,40 @@ static void scene_update(Scene *sce, unsigned int lay) } } +/* this is called in main loop, doing tagged updates before redraw */ +void scene_update_tagged(Scene *scene) +{ + Scene *sce; + Base *base; + float ctime = frame_to_float(scene, scene->r.cfra); + + /* update all objects: drivers, matrices, displists, etc. flags set + by depgraph or manual, no layer check here, gets correct flushed */ + + /* sets first, we allow per definition current scene to have + dependencies on sets, but not the other way around. */ + if(scene->set) { + for(SETLOOPER(scene->set, base)) + object_handle_update(scene, base->object); + } + + for(base= scene->base.first; base; base= base->next) { + object_handle_update(scene, base->object); + } + + /* recalc scene animation data here (for sequencer) */ + { + AnimData *adt= BKE_animdata_from_id(&scene->id); + + if(adt && (adt->recalc & ADT_RECALC_ANIM)) + BKE_animsys_evaluate_animdata(&scene->id, adt, ctime, 0); + } + + BKE_ptcache_quick_cache_all(scene); + + /* in the future this should handle updates for all datablocks, not + only objects and scenes. - brecht */ +} /* applies changes right away, does all sets too */ void scene_update_for_newframe(Scene *sce, unsigned int lay) @@ -815,9 +850,9 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay) /* sets first, we allow per definition current scene to have dependencies on sets */ for(sce= sce->set; sce; sce= sce->set) - scene_update(sce, lay); + scene_update_newframe(sce, lay); - scene_update(scene, lay); + scene_update_newframe(scene, lay); } /* return default layer, also used to patch old files */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 8bc258f7c0a..ce3acece776 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -29,7 +29,6 @@ #include #include -#include "DNA_anim_types.h" #include "DNA_listBase.h" #include "DNA_screen_types.h" #include "DNA_scene_types.h" @@ -42,17 +41,14 @@ #include "BLI_blenlib.h" -#include "BKE_animsys.h" #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_idprop.h" #include "BKE_global.h" #include "BKE_main.h" -#include "BKE_object.h" #include "BKE_report.h" #include "BKE_scene.h" #include "BKE_utildefines.h" -#include "BKE_pointcache.h" #include "ED_fileselect.h" #include "ED_info.h" @@ -149,40 +145,6 @@ static wmNotifier *wm_notifier_next(wmWindowManager *wm) return note; } -static void wm_data_handle_update(Scene *scene) -{ - Scene *sce; - Base *base; - - /* XXX make lock in future, or separated derivedmesh users in scene */ - if(G.rendering) - return; - - /* update all objects, drivers, matrices, displists, etc. Flags set by depgraph or manual, - no layer check here, gets correct flushed */ - /* sets first, we allow per definition current scene to have dependencies on sets */ - if(scene->set) { - for(SETLOOPER(scene->set, base)) - object_handle_update(scene, base->object); - } - - for(base= scene->base.first; base; base= base->next) { - object_handle_update(scene, base->object); - } - - /* recalc scene animation data here (for sequencer). actually - this should be doing all datablocks including e.g. materials, - but for now this solves some update issues - brecht. */ - { - AnimData *adt= BKE_animdata_from_id(&scene->id); - - if(adt && (adt->recalc & ADT_RECALC_ANIM)) - BKE_animsys_evaluate_animdata(&scene->id, adt, scene->r.cfra, 0); - } - - BKE_ptcache_quick_cache_all(scene); -} - /* called in mainloop */ void wm_event_do_notifiers(bContext *C) { @@ -296,7 +258,10 @@ void wm_event_do_notifiers(bContext *C) } } - wm_data_handle_update(win->screen->scene); + /* XXX make lock in future, or separated derivedmesh users in scene */ + if(!G.rendering) + /* depsgraph & animation: update tagged datablocks */ + scene_update_tagged(win->screen->scene); } CTX_wm_window_set(C, NULL); -- cgit v1.2.3 From 901962c6213d896c2e8434b23cd2a3ffbc9a615a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 11:20:43 +0000 Subject: return value was included in the list of optional args for function-rna error message --- source/blender/python/intern/bpy_rna.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index cfd455e045c..ad695344038 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -2671,6 +2671,9 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) RNA_parameter_list_begin(&parms, &iter); for(; iter.valid; RNA_parameter_list_next(&iter)) { parm= iter.parm; + if(RNA_property_flag(parm) & PROP_RETURN) + continue; + BLI_dynstr_appendf(good_args, first ? "%s" : ", %s", RNA_property_identifier(parm)); first= FALSE; } -- cgit v1.2.3 From f26e188a7c049249b4b76e3af069f53ea0d08404 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 11:56:31 +0000 Subject: - rigify context changes & example for delta - sequencer transform had 0.0 for rotation minimum - missed icon rename in last commit --- release/scripts/io/export_mdd.py | 2 +- release/scripts/modules/graphviz_export.py | 2 +- release/scripts/modules/rigify/__init__.py | 83 +++++++++++++++++++-------- release/scripts/modules/rigify/arm.py | 2 +- release/scripts/modules/rigify/delta.py | 30 +++++++++- release/scripts/modules/rigify/finger.py | 4 +- release/scripts/modules/rigify/leg.py | 2 +- release/scripts/modules/rigify/neck.py | 2 +- release/scripts/modules/rigify/palm.py | 2 +- release/scripts/modules/rigify/spine.py | 2 +- release/scripts/modules/rna_prop_ui.py | 2 +- source/blender/makesrna/intern/rna_sequence.c | 4 +- 12 files changed, 100 insertions(+), 37 deletions(-) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index c160b94e546..9753a63ce48 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -163,7 +163,7 @@ class ExportMDD(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "tmp.mdd") + path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "") fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25) start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1) end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 92eb427f8d2..e4bce9a85a9 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -48,7 +48,7 @@ def compat_str(text, line_length=0): #text = text.replace(']', ']\n') text = text.replace("\n", "\\n") text = text.replace('"', '\\"') - return "* " + text + return text def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=True): diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 2f099474990..224a8da2136 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -25,7 +25,7 @@ from Mathutils import Vector from rna_prop_ui import rna_idprop_ui_prop_get empty_layer = [False] * 32 - +DELIMITER = '-._' def auto_class(slots, name="ContainerClass", class_dict=None): @@ -300,7 +300,7 @@ def get_side_name(name): whether it is a a left or right (or center, or whatever) bone. Returns an empty string if nothing is found. ''' - if name[-2] in "-._": + if name[-2] in DELIMITER: return name[-2:] else: return "" @@ -310,7 +310,7 @@ def get_base_name(name): Returns the part of a string (typically a bone's name) corresponding to it's base name (no sidedness, no ORG prefix). ''' - if name[-2] in "-._": + if name[-2] in DELIMITER: return name[:-2] else: return name @@ -408,12 +408,34 @@ def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): return poll_name +def validate_rig(context, obj): + for pbone in obj.pose.bones: + bone_name = pbone.name + bone_type = pbone.get("type", "") + + if bone_type: + bone_type_list = [bt for bt in bone_type.replace(",", " ").split()] + else: + bone_type_list = [] + + for bone_type in bone_type_list: + type_pair = bone_type.split(".") + submod_name = type_pair[0] + + submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + reload(submod) + + submod.metarig_definition(obj, bone_name) + + # missing, - check for duplicate root bone. + def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): from collections import OrderedDict global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False + mode_orig = context.mode bpy.ops.object.mode_set(mode='OBJECT') @@ -495,8 +517,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # Only calculate bone definitions once if submod_name not in bone_def_dict: - metarig_definition_func = getattr(submod, "metarig_definition") - bone_def_dict[submod_name] = metarig_definition_func(obj, bone_name) + bone_def_dict[submod_name] = submod.metarig_definition(obj, bone_name) bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) @@ -579,8 +600,10 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # obj.restrict_view = True obj.data.draw_axes = False - context.user_preferences.edit.global_undo = global_undo + bpy.ops.object.mode_set(mode=mode_orig) + context.user_preferences.edit.global_undo = global_undo + return obj @@ -594,7 +617,7 @@ def write_meta_rig(obj, func_name="metarig_template"): bpy.ops.object.mode_set(mode='EDIT') code.append(" bpy.ops.object.mode_set(mode='EDIT')") - code.append(" obj = bpy.context.object") + code.append(" obj = bpy.context.active_object") code.append(" arm = obj.data") arm = obj.data @@ -642,7 +665,7 @@ def write_meta_rig(obj, func_name="metarig_template"): return "\n".join(code) -def generate_test(context): +def generate_test(context, metarig_type="", GENERATE_FINAL=True): import os new_objects = [] @@ -654,6 +677,9 @@ def generate_test(context): obj_new.data = armature scene.objects.link(obj_new) scene.objects.active = obj_new + for obj in scene.objects: + obj.selected = False + obj_new.selected = True files = os.listdir(os.path.dirname(__file__)) for f in files: @@ -664,6 +690,10 @@ def generate_test(context): continue module_name = f[:-3] + + if (module_name and module_name != metarig_type): + continue + submodule = __import__(name="%s.%s" % (__package__, module_name), fromlist=[module_name]) metarig_template = getattr(submodule, "metarig_template", None) @@ -671,17 +701,21 @@ def generate_test(context): if metarig_template: create_empty_armature("meta_" + module_name) # sets active metarig_template() - obj = context.object - obj_new = generate_rig(context, obj) - - new_objects.append((obj, obj_new)) + obj = context.active_object + obj.location = scene.cursor_location + + if GENERATE_FINAL: + obj_new = generate_rig(context, obj) + new_objects.append((obj, obj_new)) + else: + new_objects.append((obj, None)) else: print("note: rig type '%s' has no metarig_template(), can't test this", module_name) return new_objects -def generate_test_all(context): +def generate_test_all(context, GRAPH=False): import rigify import graphviz_export import os @@ -689,18 +723,19 @@ def generate_test_all(context): reload(graphviz_export) new_objects = rigify.generate_test(context) + + if GRAPH: + base_name = os.path.splitext(bpy.data.filename)[0] + for obj, obj_new in new_objects: + for obj in (obj, obj_new): + fn = base_name + "-" + bpy.utils.clean_name(obj.name) - base_name = os.path.splitext(bpy.data.filename)[0] - for obj, obj_new in new_objects: - for obj in (obj, obj_new): - fn = base_name + "-" + bpy.utils.clean_name(obj.name) - - path_dot = fn + ".dot" - path_png = fn + ".png" - saved = graphviz_export.graph_armature(obj, path_dot, CONSTRAINTS=True, DRIVERS=True) + path_dot = fn + ".dot" + path_png = fn + ".png" + saved = graphviz_export.graph_armature(obj, path_dot, CONSTRAINTS=True, DRIVERS=True) - #if saved: - # os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) + #if saved: + # os.system("dot -Tpng %s > %s; eog %s" % (path_dot, path_png, path_png)) i = 0 for obj, obj_new in new_objects: @@ -713,4 +748,4 @@ def generate_test_all(context): if __name__ == "__main__": - generate_rig(bpy.context, bpy.context.object) + generate_rig(bpy.context, bpy.context.active_object) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 35be7f34e4b..6a457a28ac2 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -29,7 +29,7 @@ METARIG_NAMES = "shoulder", "arm", "forearm", "hand" def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('shoulder') bone.head[:] = 0.0000, -0.4515, 0.0000 diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 00d79ed33df..974dcf3f6d5 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -25,6 +25,34 @@ from rigify import get_bone_data METARIG_NAMES = tuple() +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('bonesker') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = -0.0000, 0.7382, 0.1895 + bone.roll = -0.0000 + bone.connected = False + bone = arm.edit_bones.new('delta') + bone.head[:] = -0.0497, 0.8414, 0.3530 + bone.tail[:] = -0.2511, 1.1588, 0.9653 + bone.roll = 2.6044 + bone.connected = False + bone.parent = arm.edit_bones['bonesker'] + bone = arm.edit_bones.new('boney') + bone.head[:] = 0.7940, 2.5592, 0.4134 + bone.tail[:] = 0.7940, 3.3975, 0.4890 + bone.roll = 3.1416 + bone.connected = False + bone.parent = arm.edit_bones['delta'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['delta'] + pbone['type'] = 'delta' + + def metarig_definition(obj, orig_bone_name): ''' The bone given is the head, its parent is the body, @@ -37,7 +65,7 @@ def metarig_definition(obj, orig_bone_name): children = delta.children if len(children) != 1: - print("only 1 child supported for delta") + raise Exception("only 1 child supported for delta on bone '%s'" % delta.name) bone_definition = [delta.name, children[0].name] diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index ad4206cc432..ae09652926b 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -28,7 +28,7 @@ METARIG_NAMES = "finger_01", "finger_02", "finger_03" def metarig_template(): bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('finger.01') bone.head[:] = 0.0000, 0.0000, 0.0000 @@ -73,7 +73,7 @@ def metarig_definition(obj, orig_bone_name): children = bone.children if len(children) != 1: - raise Exception("expected the chain to have 2 children without a fork") + raise Exception("expected the chain to have 2 children from bone '%s' without a fork" % orig_bone_name) bone = children[0] bone_definition.append(bone.name) # finger_02, finger_03 chain += 1 diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index aaed335f6c7..f4be80b0f9d 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -28,7 +28,7 @@ METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('hips') bone.head[:] = 0.0000, 0.0000, 0.0000 diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 0aeee59225e..031806d2ea0 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -29,7 +29,7 @@ METARIG_NAMES = ("body", "head") def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('body') bone.head[:] = -0.0000, -0.2771, -1.3345 diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index 078e3125b00..ed9eade2dff 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -28,7 +28,7 @@ METARIG_NAMES = tuple() def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('hand') bone.head[:] = 0.0082, -1.2492, 0.0000 diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index ed42d6a2e46..cc65ae44e28 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -29,7 +29,7 @@ METARIG_NAMES = ("pelvis", "ribcage") def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.object + obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('pelvis') bone.head[:] = -0.0000, -0.2559, 0.8673 diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index dd71da74d35..07b3a7c1c42 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -120,7 +120,7 @@ def draw(layout, context, context_member, use_edit=True): prop = row.operator("wm.properties_edit", text="edit") assign_props(prop, val_draw, key) - prop = row.operator("wm.properties_remove", text="", icon='ICON_ZOOMOUT') + prop = row.operator("wm.properties_remove", text="", icon='ZOOMOUT') assign_props(prop, val_draw, key) diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 56fea340dae..136dfe0b9b7 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -1126,14 +1126,14 @@ static void rna_def_transform(BlenderRNA *brna) prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotIni"); RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_range(prop, 0.0f, 360.0f); + RNA_def_property_range(prop, -360.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation Start", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_end", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotFin"); RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_range(prop, 0.0f, 360.0f); + RNA_def_property_range(prop, -360.0f, 360.0f); RNA_def_property_ui_text(prop, "Rotation End", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -- cgit v1.2.3 From 6e6e675191e7db5789280842e8a8c3879477b472 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 12:58:03 +0000 Subject: move generic functions out of rigify's __init__.py into rigify_utils.py since rigify its self does not use them, only some of the metarig types. --- release/scripts/modules/rigify/__init__.py | 474 ++--------------------------- release/scripts/modules/rigify/arm.py | 2 +- release/scripts/modules/rigify/delta.py | 6 +- release/scripts/modules/rigify/finger.py | 3 +- release/scripts/modules/rigify/leg.py | 2 +- release/scripts/modules/rigify/neck.py | 2 +- release/scripts/modules/rigify/palm.py | 5 +- release/scripts/modules/rigify/spine.py | 2 +- release/scripts/modules/rigify_utils.py | 465 ++++++++++++++++++++++++++++ 9 files changed, 493 insertions(+), 468 deletions(-) create mode 100644 release/scripts/modules/rigify_utils.py diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 224a8da2136..6561e346d0d 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -24,390 +24,25 @@ from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get -empty_layer = [False] * 32 +EMPTY_LAYER = [False] * 32 DELIMITER = '-._' -def auto_class(slots, name="ContainerClass", class_dict=None): +def submodule_func_from_type(bone_type): + type_pair = bone_type.split(".") - if class_dict: - class_dict = class_dict.copy() - else: - class_dict = {} + # 'leg.ik' will look for an ik function in the leg module + # 'leg' will look up leg.main + if len(type_pair) == 1: + type_pair = type_pair[0], "main" - class_dict["__slots__"] = tuple(slots) + submod_name, func_name = type_pair - return type(name, (object,), class_dict) - - -def auto_class_instance(slots, name="ContainerClass", class_dict=None): - return auto_class(slots, name, class_dict)() - - -def _bone_class_instance_update(self): - ''' Re-Assigns bones from the blender data - ''' - arm = self.obj.data - bbones = arm.bones - pbones = self.obj.pose.bones - ebones = arm.edit_bones - - for member in self.attr_names: - name = getattr(self, member, None) - if name is not None: - setattr(self, member + "_b", bbones.get(name, None)) - setattr(self, member + "_p", pbones.get(name, None)) - setattr(self, member + "_e", ebones.get(name, None)) - - -def _bone_class_instance_rename(self, attr, new_name): - ''' Rename bones, editmode only - ''' - - if self.obj.mode != 'EDIT': - raise Exception("Only rename in editmode supported") - - ebone = getattr(self, attr + "_e") - ebone.name = new_name - - # we may not get what is asked for so get the name from the editbone - setattr(self, attr, ebone.name) - - -def _bone_class_instance_copy(self, from_fmt="%s", to_fmt="%s", exclude_attrs=(), base_names=None): - from_name_ls = [] - new_name_ls = [] - new_slot_ls = [] - - for attr in self.attr_names: - - if attr in exclude_attrs: - continue - - bone_name_orig = getattr(self, attr) - ebone = getattr(self, attr + "_e") - # orig_names[attr] = bone_name_orig - - # insert formatting - if from_fmt != "%s": - bone_name = from_fmt % bone_name_orig - ebone.name = bone_name - bone_name = ebone.name # cant be sure we get what we ask for - else: - bone_name = bone_name_orig - - setattr(self, attr, bone_name) - - new_slot_ls.append(attr) - from_name_ls.append(bone_name) - if base_names: - bone_name_orig = base_names[bone_name_orig] - new_name_ls.append(to_fmt % bone_name_orig) - - new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) - new_bc = bone_class_instance(self.obj, new_slot_ls) - - for i, attr in enumerate(new_slot_ls): - ebone = new_bones[i] - setattr(new_bc, attr + "_e", ebone) - setattr(new_bc, attr, ebone.name) - - return new_bc - - -def _bone_class_instance_names(self): - return [getattr(self, attr) for attr in self.attr_names] - - -def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend"): - ''' - Use for blending bone chains. - - blend_target = (bone_name, bone_property) - default to the last bone, blend prop - - XXX - toggles editmode, need to re-validate all editbones :( - ''' - - if self.attr_names != from_bc.attr_names or self.attr_names != to_bc.attr_names: - raise Exception("can only blend between matching chains") - - apply_bones = [getattr(self, attr) for attr in self.attr_names] - from_bones = [getattr(from_bc, attr) for attr in from_bc.attr_names] - to_bones = [getattr(to_bc, attr) for attr in to_bc.attr_names] - - blend_bone_list(self.obj, apply_bones, from_bones, to_bones, target_bone, target_prop) - - -def bone_class_instance(obj, slots, name="BoneContainer"): + # from rigify import leg + submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) - if len(slots) != len(set(slots)): - raise Exception("duplicate entries found %s" % attr_names) - - attr_names = tuple(slots) # dont modify the original - slots = list(slots) # dont modify the original - for i in range(len(slots)): - member = slots[i] - slots.append(member + "_b") # bone bone - slots.append(member + "_p") # pose bone - slots.append(member + "_e") # edit bone - - class_dict = { \ - "obj": obj, \ - "attr_names": attr_names, \ - "update": _bone_class_instance_update, \ - "rename": _bone_class_instance_rename, \ - "names": _bone_class_instance_names, \ - "copy": _bone_class_instance_copy, \ - "blend": _bone_class_instance_blend, \ - } - - instance = auto_class_instance(slots, name, class_dict) - return instance - - -def get_bone_data(obj, bone_name): - arm = obj.data - pbone = obj.pose.bones[bone_name] - if obj.mode == 'EDIT': - bone = arm.edit_bones[bone_name] - else: - bone = arm.bones[bone_name] - - return arm, pbone, bone - - -def copy_bone_simple(arm, from_bone, name, parent=False): - ebone = arm.edit_bones[from_bone] - ebone_new = arm.edit_bones.new(name) - - if parent: - ebone_new.connected = ebone.connected - ebone_new.parent = ebone.parent - - ebone_new.head = ebone.head - ebone_new.tail = ebone.tail - ebone_new.roll = ebone.roll - return ebone_new - - -def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): - - if len(from_bones) != len(to_bones): - raise Exception("bone list sizes must match") - - copy_bones = [copy_bone_simple(arm, bone_name, to_bones[i], True) for i, bone_name in enumerate(from_bones)] - - # now we need to re-parent - for ebone in copy_bones: - parent = ebone.parent - if parent: - try: - i = from_bones.index(parent.name) - except: - i = -1 - - if i == -1: - ebone.parent = None - else: - ebone.parent = copy_bones[i] - - return copy_bones - - -def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend"): - - if obj.mode == 'EDIT': - raise Exception("blending cant be called in editmode") - - if len(apply_bones) != len(from_bones): - raise Exception("lists differ in length (from -> apply): \n\t%s\n\t%s" % (from_bones, apply_bones)) - if len(apply_bones) != len(to_bones): - raise Exception("lists differ in length (to -> apply): \n\t%s\n\t%s" % (to_bones, apply_bones)) - - # setup the blend property - if target_bone is None: - target_bone = apply_bones[-1] # default to the last bone - - prop_pbone = obj.pose.bones[target_bone] - if prop_pbone.get(target_bone, None) is None: - prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) - prop_pbone[target_prop] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - driver_path = prop_pbone.path_to_id() + ('["%s"]' % target_prop) - - def blend_target(driver): - tar = driver.targets.new() - tar.name = target_bone - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = driver_path - - def blend_location(new_pbone, from_bone_name, to_bone_name): - con = new_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = from_bone_name - - con = new_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = to_bone_name - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'AVERAGE' - fcurve.modifiers.remove(0) # grr dont need a modifier - - blend_target(driver) - - def blend_rotation(new_pbone, from_bone_name, to_bone_name): - con = new_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = from_bone_name - - con = new_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = to_bone_name - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'AVERAGE' - fcurve.modifiers.remove(0) # grr dont need a modifier - - blend_target(driver) - - for i, new_bone_name in enumerate(apply_bones): - from_bone_name = from_bones[i] - to_bone_name = to_bones[i] - - # allow skipping some bones by having None in the list - if None in (new_bone_name, from_bone_name, to_bone_name): - continue - - new_pbone = obj.pose.bones[new_bone_name] - - # if the bone is connected or its location is totally locked then dont add location blending. - if not (new_pbone.bone.connected or (False not in new_pbone.lock_location)): - blend_location(new_pbone, from_bone_name, to_bone_name) - - if not (False not in new_pbone.lock_rotation): # TODO. 4D chech? - blend_rotation(new_pbone, from_bone_name, to_bone_name) - - -def get_side_name(name): - ''' - Returns the last part of a string (typically a bone's name) indicating - whether it is a a left or right (or center, or whatever) bone. - Returns an empty string if nothing is found. - ''' - if name[-2] in DELIMITER: - return name[-2:] - else: - return "" - -def get_base_name(name): - ''' - Returns the part of a string (typically a bone's name) corresponding to it's - base name (no sidedness, no ORG prefix). - ''' - if name[-2] in DELIMITER: - return name[:-2] - else: - return name + return submod, getattr(submod, func_name) -def add_stretch_to(obj, from_name, to_name, name): - ''' - Adds a bone that stretches from one to another - ''' - - mode_orig = obj.mode - bpy.ops.object.mode_set(mode='EDIT') - - arm = obj.data - stretch_ebone = arm.edit_bones.new(name) - stretch_name = stretch_ebone.name - del name - - head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() - #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() - - # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter - #if (head - tail).length < 0.1: - if 1: - tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() - - - # Now for the constraint - bpy.ops.object.mode_set(mode='OBJECT') - - stretch_pbone = obj.pose.bones[stretch_name] - - con = stretch_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = from_name - - con = stretch_pbone.constraints.new('STRETCH_TO') - con.target = obj - con.subtarget = to_name - con.original_length = (head - tail).length - con.keep_axis = 'PLANE_X' - con.volume = 'NO_VOLUME' - - bpy.ops.object.mode_set(mode=mode_orig) - - return stretch_name - -def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): - ''' - Does not actually create a poll target, just the bone to use as a poll target - ''' - mode_orig = obj.mode - bpy.ops.object.mode_set(mode='EDIT') - - arm = obj.data - - poll_ebone = arm.edit_bones.new(name) - base_ebone = arm.edit_bones[base_bone_name] - poll_name = poll_ebone.name - parent_ebone = base_ebone.parent - - base_head = base_ebone.head.copy() - base_tail = base_ebone.tail.copy() - base_dir = base_head - base_tail - - parent_head = parent_ebone.head.copy() - parent_tail = parent_ebone.tail.copy() - parent_dir = parent_head - parent_tail - - distance = (base_dir.length + parent_dir.length) - - if mode == 'CROSS': - # direction from the angle of the joint - offset = base_dir.copy().normalize() - parent_dir.copy().normalize() - offset.length = distance - elif mode == 'ZAVERAGE': - # between both bones Z axis - z_axis_a = base_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) - z_axis_b = parent_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) - offset = (z_axis_a + z_axis_b).normalize() * distance - else: - # preset axis - offset = Vector(0, 0, 0) - if mode[0] == "+": - val = distance - else: - val = - distance - - setattr(offset, mode[1].lower(), val) - - poll_ebone.head = base_head + offset - poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) - - bpy.ops.object.mode_set(mode=mode_orig) - - return poll_name - def validate_rig(context, obj): for pbone in obj.pose.bones: bone_name = pbone.name @@ -418,13 +53,9 @@ def validate_rig(context, obj): else: bone_type_list = [] - for bone_type in bone_type_list: - type_pair = bone_type.split(".") - submod_name = type_pair[0] - - submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + for bone_type in bone_type_list: + submod, type_func = submodule_func_from_type(bone_type) reload(submod) - submod.metarig_definition(obj, bone_name) # missing, - check for duplicate root bone. @@ -499,30 +130,17 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bone_type_list[:] = [] for bone_type in bone_type_list: - - type_pair = bone_type.split(".") - - # 'leg.ik' will look for an ik function in the leg module - # 'leg' will look up leg.main - if len(type_pair) == 1: - type_pair = type_pair[0], "main" - - submod_name, func_name = type_pair - - # from rigify import leg - submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + submod, type_func = submodule_func_from_type(bone_type) reload(submod) - + submod_name = submod.__name__ + bone_def_dict = bone_definitions.setdefault(bone_name, {}) # Only calculate bone definitions once if submod_name not in bone_def_dict: bone_def_dict[submod_name] = submod.metarig_definition(obj, bone_name) - bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) - - type_func = getattr(submod, func_name) bone_typeinfo.append((submod_name, type_func)) @@ -607,64 +225,6 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): return obj -def write_meta_rig(obj, func_name="metarig_template"): - ''' Must be in editmode - ''' - code = [] - - code.append("def %s():" % func_name) - code.append(" # generated by rigify.write_meta_rig") - bpy.ops.object.mode_set(mode='EDIT') - code.append(" bpy.ops.object.mode_set(mode='EDIT')") - - code.append(" obj = bpy.context.active_object") - code.append(" arm = obj.data") - - arm = obj.data - # write parents first - bones = [(len(bone.parent_recursive), bone.name) for bone in arm.edit_bones] - bones.sort(key=lambda item: item[0]) - bones = [item[1] for item in bones] - - - for bone_name in bones: - bone = arm.edit_bones[bone_name] - code.append(" bone = arm.edit_bones.new('%s')" % bone.name) - code.append(" bone.head[:] = %.4f, %.4f, %.4f" % bone.head.toTuple(4)) - code.append(" bone.tail[:] = %.4f, %.4f, %.4f" % bone.tail.toTuple(4)) - code.append(" bone.roll = %.4f" % bone.roll) - code.append(" bone.connected = %s" % str(bone.connected)) - if bone.parent: - code.append(" bone.parent = arm.edit_bones['%s']" % bone.parent.name) - - bpy.ops.object.mode_set(mode='OBJECT') - code.append("") - code.append(" bpy.ops.object.mode_set(mode='OBJECT')") - - for bone_name in bones: - pbone = obj.pose.bones[bone_name] - pbone_written = False - - # Only 1 level of props, simple types supported - for key, value in pbone.items(): - if key.startswith("_"): - continue - - if type(value) not in (float, str, int): - print("Unsupported ID Prop:", str((key, value))) - continue - - if type(value) == str: - value = "'" + value + "'" - - if not pbone_written: # only write bones we need - code.append(" pbone = obj.pose.bones['%s']" % bone_name) - - code.append(" pbone['%s'] = %s" % (key, value)) - - return "\n".join(code) - - def generate_test(context, metarig_type="", GENERATE_FINAL=True): import os new_objects = [] @@ -691,7 +251,7 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): module_name = f[:-3] - if (module_name and module_name != metarig_type): + if (metarig_type and module_name != metarig_type): continue submodule = __import__(name="%s.%s" % (__package__, module_name), fromlist=[module_name]) diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py index 6a457a28ac2..dedbc27ad2a 100644 --- a/release/scripts/modules/rigify/arm.py +++ b/release/scripts/modules/rigify/arm.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name +from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from Mathutils import Vector diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 974dcf3f6d5..a081e3390f4 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -19,7 +19,6 @@ # import bpy -from rigify import get_bone_data # not used, defined for completeness METARIG_NAMES = tuple() @@ -84,7 +83,8 @@ def main(obj, bone_definition, base_names): delta_pbone = obj.pose.bones[delta_name] - arm, child_pbone, child_bone = get_bone_data(obj, child_name) + arm = obj.data + child_pbone = obj.pose.bones[child_name] delta_phead = delta_pbone.head.copy() delta_ptail = delta_pbone.tail.copy() @@ -105,7 +105,6 @@ def main(obj, bone_definition, base_names): delta_head = delta_ebone.head.copy() delta_tail = delta_ebone.tail.copy() - # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) child_head = child_ebone.head.copy() child_tail = child_ebone.tail.copy() @@ -153,7 +152,6 @@ def main(obj, bone_definition, base_names): mod.coefficients[1] = 0.0 - # arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name) bpy.ops.object.mode_set(mode='EDIT') bpy.ops.object.mode_set(mode=mode_orig) diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py index ae09652926b..eb5a5d7149a 100644 --- a/release/scripts/modules/rigify/finger.py +++ b/release/scripts/modules/rigify/finger.py @@ -19,7 +19,8 @@ # import bpy -from rigify import get_bone_data, empty_layer, copy_bone_simple, get_side_name, get_base_name +from rigify import EMPTY_LAYER +from rigify_utils import copy_bone_simple, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py index f4be80b0f9d..66edc7bc1c1 100644 --- a/release/scripts/modules/rigify/leg.py +++ b/release/scripts/modules/rigify/leg.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name +from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 031806d2ea0..088d8566cbc 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple +from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py index ed9eade2dff..2970dab8566 100644 --- a/release/scripts/modules/rigify/palm.py +++ b/release/scripts/modules/rigify/palm.py @@ -19,7 +19,7 @@ # import bpy -from rigify import get_bone_data, copy_bone_simple, get_side_name +from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness @@ -97,7 +97,8 @@ def metarig_definition(obj, orig_bone_name): def main(obj, bone_definition, base_names): - arm, palm_pbone, palm_ebone = get_bone_data(obj, bone_definition[0]) + arm = obj.data + children = bone_definition[1:] # Make a copy of the pinky diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py index cc65ae44e28..2674d920cc8 100644 --- a/release/scripts/modules/rigify/spine.py +++ b/release/scripts/modules/rigify/spine.py @@ -19,7 +19,7 @@ # import bpy -from rigify import bone_class_instance, copy_bone_simple +from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py new file mode 100644 index 00000000000..9407c4e5875 --- /dev/null +++ b/release/scripts/modules/rigify_utils.py @@ -0,0 +1,465 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +# rigify its self does not depend on this module, however some of the +# rigify templates use these utility functions. +# +# So even though this can be for general purpose use, this module was created +# for rigify so in some cases seemingly generic functions make assumptions +# that a generic function would need to check for. + +def add_stretch_to(obj, from_name, to_name, name): + ''' + Adds a bone that stretches from one to another + ''' + + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + stretch_ebone = arm.edit_bones.new(name) + stretch_name = stretch_ebone.name + del name + + head = stretch_ebone.head = arm.edit_bones[from_name].head.copy() + #tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy() + + # annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter + #if (head - tail).length < 0.1: + if 1: + tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy() + + + # Now for the constraint + bpy.ops.object.mode_set(mode='OBJECT') + + stretch_pbone = obj.pose.bones[stretch_name] + + con = stretch_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_name + + con = stretch_pbone.constraints.new('STRETCH_TO') + con.target = obj + con.subtarget = to_name + con.original_length = (head - tail).length + con.keep_axis = 'PLANE_X' + con.volume = 'NO_VOLUME' + + bpy.ops.object.mode_set(mode=mode_orig) + + return stretch_name + + +def copy_bone_simple(arm, from_bone, name, parent=False): + ebone = arm.edit_bones[from_bone] + ebone_new = arm.edit_bones.new(name) + + if parent: + ebone_new.connected = ebone.connected + ebone_new.parent = ebone.parent + + ebone_new.head = ebone.head + ebone_new.tail = ebone.tail + ebone_new.roll = ebone.roll + return ebone_new + + +def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): + + if len(from_bones) != len(to_bones): + raise Exception("bone list sizes must match") + + copy_bones = [copy_bone_simple(arm, bone_name, to_bones[i], True) for i, bone_name in enumerate(from_bones)] + + # now we need to re-parent + for ebone in copy_bones: + parent = ebone.parent + if parent: + try: + i = from_bones.index(parent.name) + except: + i = -1 + + if i == -1: + ebone.parent = None + else: + ebone.parent = copy_bones[i] + + return copy_bones + + +def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend"): + + if obj.mode == 'EDIT': + raise Exception("blending cant be called in editmode") + + if len(apply_bones) != len(from_bones): + raise Exception("lists differ in length (from -> apply): \n\t%s\n\t%s" % (from_bones, apply_bones)) + if len(apply_bones) != len(to_bones): + raise Exception("lists differ in length (to -> apply): \n\t%s\n\t%s" % (to_bones, apply_bones)) + + # setup the blend property + if target_bone is None: + target_bone = apply_bones[-1] # default to the last bone + + prop_pbone = obj.pose.bones[target_bone] + if prop_pbone.get(target_bone, None) is None: + prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) + prop_pbone[target_prop] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + driver_path = prop_pbone.path_to_id() + ('["%s"]' % target_prop) + + def blend_target(driver): + tar = driver.targets.new() + tar.name = target_bone + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = driver_path + + def blend_location(new_pbone, from_bone_name, to_bone_name): + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + + def blend_rotation(new_pbone, from_bone_name, to_bone_name): + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = from_bone_name + + con = new_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = to_bone_name + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'AVERAGE' + fcurve.modifiers.remove(0) # grr dont need a modifier + + blend_target(driver) + + for i, new_bone_name in enumerate(apply_bones): + from_bone_name = from_bones[i] + to_bone_name = to_bones[i] + + # allow skipping some bones by having None in the list + if None in (new_bone_name, from_bone_name, to_bone_name): + continue + + new_pbone = obj.pose.bones[new_bone_name] + + # if the bone is connected or its location is totally locked then dont add location blending. + if not (new_pbone.bone.connected or (False not in new_pbone.lock_location)): + blend_location(new_pbone, from_bone_name, to_bone_name) + + if not (False not in new_pbone.lock_rotation): # TODO. 4D chech? + blend_rotation(new_pbone, from_bone_name, to_bone_name) + + +def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): + ''' + Does not actually create a poll target, just the bone to use as a poll target + ''' + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') + + arm = obj.data + + poll_ebone = arm.edit_bones.new(name) + base_ebone = arm.edit_bones[base_bone_name] + poll_name = poll_ebone.name + parent_ebone = base_ebone.parent + + base_head = base_ebone.head.copy() + base_tail = base_ebone.tail.copy() + base_dir = base_head - base_tail + + parent_head = parent_ebone.head.copy() + parent_tail = parent_ebone.tail.copy() + parent_dir = parent_head - parent_tail + + distance = (base_dir.length + parent_dir.length) + + if mode == 'CROSS': + # direction from the angle of the joint + offset = base_dir.copy().normalize() - parent_dir.copy().normalize() + offset.length = distance + elif mode == 'ZAVERAGE': + # between both bones Z axis + z_axis_a = base_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) + z_axis_b = parent_ebone.matrix.copy().rotationPart() * Vector(0.0, 0.0, -1.0) + offset = (z_axis_a + z_axis_b).normalize() * distance + else: + # preset axis + offset = Vector(0, 0, 0) + if mode[0] == "+": + val = distance + else: + val = - distance + + setattr(offset, mode[1].lower(), val) + + poll_ebone.head = base_head + offset + poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0))) + + bpy.ops.object.mode_set(mode=mode_orig) + + return poll_name + + + +def get_side_name(name): + ''' + Returns the last part of a string (typically a bone's name) indicating + whether it is a a left or right (or center, or whatever) bone. + Returns an empty string if nothing is found. + ''' + if name[-2] in DELIMITER: + return name[-2:] + else: + return "" + +def get_base_name(name): + ''' + Returns the part of a string (typically a bone's name) corresponding to it's + base name (no sidedness, no ORG prefix). + ''' + if name[-2] in DELIMITER: + return name[:-2] + else: + return name + + +def write_meta_rig(obj, func_name="metarig_template"): + ''' + Write a metarig as a python script, this rig is to have all info needed for + generating the real rig with rigify. + ''' + code = [] + + code.append("def %s():" % func_name) + code.append(" # generated by rigify.write_meta_rig") + bpy.ops.object.mode_set(mode='EDIT') + code.append(" bpy.ops.object.mode_set(mode='EDIT')") + + code.append(" obj = bpy.context.active_object") + code.append(" arm = obj.data") + + arm = obj.data + # write parents first + bones = [(len(bone.parent_recursive), bone.name) for bone in arm.edit_bones] + bones.sort(key=lambda item: item[0]) + bones = [item[1] for item in bones] + + + for bone_name in bones: + bone = arm.edit_bones[bone_name] + code.append(" bone = arm.edit_bones.new('%s')" % bone.name) + code.append(" bone.head[:] = %.4f, %.4f, %.4f" % bone.head.toTuple(4)) + code.append(" bone.tail[:] = %.4f, %.4f, %.4f" % bone.tail.toTuple(4)) + code.append(" bone.roll = %.4f" % bone.roll) + code.append(" bone.connected = %s" % str(bone.connected)) + if bone.parent: + code.append(" bone.parent = arm.edit_bones['%s']" % bone.parent.name) + + bpy.ops.object.mode_set(mode='OBJECT') + code.append("") + code.append(" bpy.ops.object.mode_set(mode='OBJECT')") + + for bone_name in bones: + pbone = obj.pose.bones[bone_name] + pbone_written = False + + # Only 1 level of props, simple types supported + for key, value in pbone.items(): + if key.startswith("_"): + continue + + if type(value) not in (float, str, int): + print("Unsupported ID Prop:", str((key, value))) + continue + + if type(value) == str: + value = "'" + value + "'" + + if not pbone_written: # only write bones we need + code.append(" pbone = obj.pose.bones['%s']" % bone_name) + + code.append(" pbone['%s'] = %s" % (key, value)) + + return "\n".join(code) + + + +# *** bone class collection *** +def bone_class_instance(obj, slots, name="BoneContainer"): + ''' + bone collection utility class to help manage cases with + edit/pose/bone bones where switching modes can invalidate some of the members. + + there are also utility functions for manipulating all members. + ''' + + if len(slots) != len(set(slots)): + raise Exception("duplicate entries found %s" % attr_names) + + attr_names = tuple(slots) # dont modify the original + slots = list(slots) # dont modify the original + for i in range(len(slots)): + member = slots[i] + slots.append(member + "_b") # bone bone + slots.append(member + "_p") # pose bone + slots.append(member + "_e") # edit bone + + class_dict = { \ + "obj": obj, \ + "attr_names": attr_names, \ + "update": _bone_class_instance_update, \ + "rename": _bone_class_instance_rename, \ + "names": _bone_class_instance_names, \ + "copy": _bone_class_instance_copy, \ + "blend": _bone_class_instance_blend, \ + } + + instance = auto_class_instance(slots, name, class_dict) + return instance + +def auto_class(slots, name="ContainerClass", class_dict=None): + + if class_dict: + class_dict = class_dict.copy() + else: + class_dict = {} + + class_dict["__slots__"] = tuple(slots) + + return type(name, (object,), class_dict) + + +def auto_class_instance(slots, name="ContainerClass", class_dict=None): + return auto_class(slots, name, class_dict)() + + +def _bone_class_instance_update(self): + ''' Re-Assigns bones from the blender data + ''' + arm = self.obj.data + bbones = arm.bones + pbones = self.obj.pose.bones + ebones = arm.edit_bones + + for member in self.attr_names: + name = getattr(self, member, None) + if name is not None: + setattr(self, member + "_b", bbones.get(name, None)) + setattr(self, member + "_p", pbones.get(name, None)) + setattr(self, member + "_e", ebones.get(name, None)) + + +def _bone_class_instance_rename(self, attr, new_name): + ''' Rename bones, editmode only + ''' + + if self.obj.mode != 'EDIT': + raise Exception("Only rename in editmode supported") + + ebone = getattr(self, attr + "_e") + ebone.name = new_name + + # we may not get what is asked for so get the name from the editbone + setattr(self, attr, ebone.name) + + +def _bone_class_instance_copy(self, from_fmt="%s", to_fmt="%s", exclude_attrs=(), base_names=None): + from_name_ls = [] + new_name_ls = [] + new_slot_ls = [] + + for attr in self.attr_names: + + if attr in exclude_attrs: + continue + + bone_name_orig = getattr(self, attr) + ebone = getattr(self, attr + "_e") + # orig_names[attr] = bone_name_orig + + # insert formatting + if from_fmt != "%s": + bone_name = from_fmt % bone_name_orig + ebone.name = bone_name + bone_name = ebone.name # cant be sure we get what we ask for + else: + bone_name = bone_name_orig + + setattr(self, attr, bone_name) + + new_slot_ls.append(attr) + from_name_ls.append(bone_name) + if base_names: + bone_name_orig = base_names[bone_name_orig] + new_name_ls.append(to_fmt % bone_name_orig) + + new_bones = copy_bone_simple_list(self.obj.data, from_name_ls, new_name_ls, True) + new_bc = bone_class_instance(self.obj, new_slot_ls) + + for i, attr in enumerate(new_slot_ls): + ebone = new_bones[i] + setattr(new_bc, attr + "_e", ebone) + setattr(new_bc, attr, ebone.name) + + return new_bc + + +def _bone_class_instance_names(self): + return [getattr(self, attr) for attr in self.attr_names] + + +def _bone_class_instance_blend(self, from_bc, to_bc, target_bone=None, target_prop="blend"): + ''' + Use for blending bone chains. + + blend_target = (bone_name, bone_property) + default to the last bone, blend prop + + XXX - toggles editmode, need to re-validate all editbones :( + ''' + + if self.attr_names != from_bc.attr_names or self.attr_names != to_bc.attr_names: + raise Exception("can only blend between matching chains") + + apply_bones = [getattr(self, attr) for attr in self.attr_names] + from_bones = [getattr(from_bc, attr) for attr in from_bc.attr_names] + to_bones = [getattr(to_bc, attr) for attr in to_bc.attr_names] + + blend_bone_list(self.obj, apply_bones, from_bones, to_bones, target_bone, target_prop) -- cgit v1.2.3 From b259efe2d7fff8c113e32b2edcc207c3eece4602 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 13:20:31 +0000 Subject: UI limits for the envalope frame were too small --- source/blender/editors/animation/fmodifier_ui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 35f7f424f85..17d8f0a847b 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -560,7 +560,7 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh block= uiLayoutGetBlock(row); uiBlockBeginAlign(block); - but=uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Fra:", 0, 0, 90, 20, &fed->time, -UI_FLT_MAX, UI_FLT_MAX, 10, 1, "Frame that envelope point occurs"); + but=uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Fra:", 0, 0, 90, 20, &fed->time, -MAXFRAMEF, MAXFRAMEF, 10, 1, "Frame that envelope point occurs"); uiButSetFunc(but, validate_fmodifier_cb, fcm, NULL); uiDefButF(block, NUM, B_FMODIFIER_REDRAW, "Min:", 0, 0, 100, 20, &fed->min, -UI_FLT_MAX, UI_FLT_MAX, 10, 2, "Minimum bound of envelope at this point"); -- cgit v1.2.3 From e93c0e4ecfe7d482c8e5891f8d74cc5fb6db3dbd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 13:34:21 +0000 Subject: renaming metarig types since we may well have multiple arm/finger/leg types --- release/scripts/modules/rigify/arm.py | 261 ----------- .../scripts/modules/rigify/arm_biped_generic.py | 261 +++++++++++ release/scripts/modules/rigify/finger.py | 225 --------- release/scripts/modules/rigify/finger_curl.py | 225 +++++++++ release/scripts/modules/rigify/leg.py | 361 --------------- .../scripts/modules/rigify/leg_biped_generic.py | 361 +++++++++++++++ release/scripts/modules/rigify/neck.py | 290 ------------ release/scripts/modules/rigify/neck_flex.py | 290 ++++++++++++ release/scripts/modules/rigify/palm.py | 213 --------- release/scripts/modules/rigify/palm_spread.py | 213 +++++++++ release/scripts/modules/rigify/spine.py | 501 --------------------- release/scripts/modules/rigify/spine_pivot_flex.py | 501 +++++++++++++++++++++ 12 files changed, 1851 insertions(+), 1851 deletions(-) delete mode 100644 release/scripts/modules/rigify/arm.py create mode 100644 release/scripts/modules/rigify/arm_biped_generic.py delete mode 100644 release/scripts/modules/rigify/finger.py create mode 100644 release/scripts/modules/rigify/finger_curl.py delete mode 100644 release/scripts/modules/rigify/leg.py create mode 100644 release/scripts/modules/rigify/leg_biped_generic.py delete mode 100644 release/scripts/modules/rigify/neck.py create mode 100644 release/scripts/modules/rigify/neck_flex.py delete mode 100644 release/scripts/modules/rigify/palm.py create mode 100644 release/scripts/modules/rigify/palm_spread.py delete mode 100644 release/scripts/modules/rigify/spine.py create mode 100644 release/scripts/modules/rigify/spine_pivot_flex.py diff --git a/release/scripts/modules/rigify/arm.py b/release/scripts/modules/rigify/arm.py deleted file mode 100644 index dedbc27ad2a..00000000000 --- a/release/scripts/modules/rigify/arm.py +++ /dev/null @@ -1,261 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name -from rna_prop_ui import rna_idprop_ui_prop_get -from Mathutils import Vector - -METARIG_NAMES = "shoulder", "arm", "forearm", "hand" - - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('shoulder') - bone.head[:] = 0.0000, -0.4515, 0.0000 - bone.tail[:] = 1.0000, -0.0794, 0.3540 - bone.roll = -0.2227 - bone.connected = False - bone = arm.edit_bones.new('upper_arm') - bone.head[:] = 1.1319, -0.0808, -0.0101 - bone.tail[:] = 3.0319, 0.2191, -0.1101 - bone.roll = 1.6152 - bone.connected = False - bone.parent = arm.edit_bones['shoulder'] - bone = arm.edit_bones.new('forearm') - bone.head[:] = 3.0319, 0.2191, -0.1101 - bone.tail[:] = 4.8319, -0.0809, -0.0242 - bone.roll = 1.5153 - bone.connected = True - bone.parent = arm.edit_bones['upper_arm'] - bone = arm.edit_bones.new('hand') - bone.head[:] = 4.8319, -0.0809, -0.0242 - bone.tail[:] = 5.7590, -0.1553, -0.1392 - bone.roll = -3.0083 - bone.connected = True - bone.parent = arm.edit_bones['forearm'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['upper_arm'] - pbone['type'] = 'arm' - - -def metarig_definition(obj, orig_bone_name): - mt = bone_class_instance(obj, METARIG_NAMES) # meta - mt.arm = orig_bone_name - mt.update() - - mt.shoulder_p = mt.arm_p.parent - - if not mt.shoulder_p: - raise Exception("could not find '%s' parent, skipping:" % orig_bone_name) - - mt.shoulder = mt.shoulder_p.name - - # We could have some bones attached, find the bone that has this as its 2nd parent - hands = [] - for pbone in obj.pose.bones: - index = pbone.parent_index(mt.arm_p) - if index == 2 and pbone.bone.connected and pbone.bone.parent.connected: - hands.append(pbone) - - if len(hands) != 1: - raise Exception("Found %s possible hands attached to this arm, expected 1 from bone: %s" % ([pbone.name for pbone in hands], orig_bone_name)) - - # first add the 2 new bones - mt.hand_p = hands[0] - mt.hand = mt.hand_p.name - - mt.forearm_p = mt.hand_p.parent - mt.forearm = mt.forearm_p.name - - return mt.names() - - -def ik(obj, definitions, base_names): - mt = bone_class_instance(obj, METARIG_NAMES) - mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions - mt.update() - - ik = bone_class_instance(obj, ["pole", "pole_vis", "hand_vis"]) - ik_chain = mt.copy(to_fmt="MCH-%s_ik", base_names=base_names, exclude_attrs=["shoulder"]) - - # IK needs no parent_index - ik_chain.hand_e.connected = False - ik_chain.hand_e.parent = None - ik_chain.hand_e.local_location = False - ik_chain.rename("hand", get_base_name(base_names[mt.hand]) + "_ik" + get_side_name(mt.hand)) - - ik_chain.arm_e.connected = False - ik_chain.arm_e.parent = mt.shoulder_e - - # Add the bone used for the arms poll target - #ik.pole = add_pole_target_bone(obj, mt.forearm, get_base_name(base_names[mt.forearm]) + "_target" + get_side_name(mt.forearm), mode='ZAVERAGE') - ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_target" + get_side_name(mt.forearm), mode='ZAVERAGE') - - ik.update() - ik.pole_e.local_location = False - - # update bones after this! - ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) - ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) - - ik.update() - ik.hand_vis_e.restrict_select = True - ik.pole_vis_e.restrict_select = True - - bpy.ops.object.mode_set(mode='OBJECT') - - mt.update() - ik.update() - ik_chain.update() - - # Set IK dof - ik_chain.forearm_p.ik_dof_x = True - ik_chain.forearm_p.ik_dof_y = False - ik_chain.forearm_p.ik_dof_z = False - - con = ik_chain.forearm_p.constraints.new('IK') - con.target = obj - con.subtarget = ik_chain.hand - con.pole_target = obj - con.pole_subtarget = ik.pole - - con.use_tail = True - con.use_stretch = True - con.use_target = True - con.use_rotation = False - con.chain_length = 2 - con.pole_angle = -90.0 # XXX, RAD2DEG - - # ID Propery on the hand for IK/FK switch - - prop = rna_idprop_ui_prop_get(ik_chain.hand_p, "ik", create=True) - ik_chain.hand_p["ik"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - bpy.ops.object.mode_set(mode='EDIT') - - # don't blend the shoulder - return [None] + ik_chain.names() - - -def fk(obj, definitions, base_names): - - arm = obj.data - - mt = bone_class_instance(obj, METARIG_NAMES) - mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions - mt.update() - - ex = bone_class_instance(obj, ["socket", "arm_hinge", "hand_delta"]) - fk_chain = mt.copy(base_names=base_names) - - # shoulder is used as a hinge - fk_chain.rename("shoulder", "MCH-%s_hinge" % base_names[mt.arm]) - fk_chain.shoulder_e.translate(Vector(0.0, fk_chain.shoulder_e.length / 2, 0.0)) - - # upper arm constrains to this. - ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm]) - ex.socket = ex.socket_e.name - ex.socket_e.connected = False - ex.socket_e.parent = mt.shoulder_e - ex.socket_e.length *= 0.5 - - # insert the 'DLT-hand', between the forearm and the hand - # copies forarm rotation - ex.hand_delta_e = copy_bone_simple(arm, fk_chain.hand, "DLT-%s" % base_names[mt.hand], parent=True) - ex.hand_delta = ex.hand_delta_e.name - ex.hand_delta_e.length *= 0.5 - ex.hand_delta_e.connected = False - - fk_chain.hand_e.connected = False - fk_chain.hand_e.parent = ex.hand_delta_e - - bpy.ops.object.mode_set(mode='OBJECT') - - mt.update() - ex.update() - fk_chain.update() - - # Set rotation modes and axis locks - fk_chain.forearm_p.rotation_mode = 'XYZ' - fk_chain.forearm_p.lock_rotation = (False, True, True) - fk_chain.hand_p.rotation_mode = 'ZXY' - - con = fk_chain.arm_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.socket - - fk_chain.hand_p.lock_location = True, True, True - con = ex.hand_delta_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = fk_chain.forearm - - def hinge_setup(): - # Hinge constraint & driver - con = fk_chain.shoulder_p.constraints.new('COPY_ROTATION') - con.name = "hinge" - con.target = obj - con.subtarget = mt.shoulder - driver_fcurve = con.driver_add("influence", 0) - driver = driver_fcurve.driver - - - controller_path = fk_chain.arm_p.path_to_id() - # add custom prop - fk_chain.arm_p["hinge"] = 0.0 - prop = rna_idprop_ui_prop_get(fk_chain.arm_p, "hinge", create=True) - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - - # ***** - driver = driver_fcurve.driver - driver.type = 'AVERAGE' - - tar = driver.targets.new() - tar.name = "hinge" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["hinge"]' - - mod = driver_fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.0 - mod.coefficients[1] = -1.0 - - hinge_setup() - - bpy.ops.object.mode_set(mode='EDIT') - - return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand - - -def main(obj, bone_definition, base_names): - bones_ik = ik(obj, bone_definition, base_names) - bones_fk = fk(obj, bone_definition, base_names) - - bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py new file mode 100644 index 00000000000..dedbc27ad2a --- /dev/null +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -0,0 +1,261 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name +from rna_prop_ui import rna_idprop_ui_prop_get +from Mathutils import Vector + +METARIG_NAMES = "shoulder", "arm", "forearm", "hand" + + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('shoulder') + bone.head[:] = 0.0000, -0.4515, 0.0000 + bone.tail[:] = 1.0000, -0.0794, 0.3540 + bone.roll = -0.2227 + bone.connected = False + bone = arm.edit_bones.new('upper_arm') + bone.head[:] = 1.1319, -0.0808, -0.0101 + bone.tail[:] = 3.0319, 0.2191, -0.1101 + bone.roll = 1.6152 + bone.connected = False + bone.parent = arm.edit_bones['shoulder'] + bone = arm.edit_bones.new('forearm') + bone.head[:] = 3.0319, 0.2191, -0.1101 + bone.tail[:] = 4.8319, -0.0809, -0.0242 + bone.roll = 1.5153 + bone.connected = True + bone.parent = arm.edit_bones['upper_arm'] + bone = arm.edit_bones.new('hand') + bone.head[:] = 4.8319, -0.0809, -0.0242 + bone.tail[:] = 5.7590, -0.1553, -0.1392 + bone.roll = -3.0083 + bone.connected = True + bone.parent = arm.edit_bones['forearm'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['upper_arm'] + pbone['type'] = 'arm' + + +def metarig_definition(obj, orig_bone_name): + mt = bone_class_instance(obj, METARIG_NAMES) # meta + mt.arm = orig_bone_name + mt.update() + + mt.shoulder_p = mt.arm_p.parent + + if not mt.shoulder_p: + raise Exception("could not find '%s' parent, skipping:" % orig_bone_name) + + mt.shoulder = mt.shoulder_p.name + + # We could have some bones attached, find the bone that has this as its 2nd parent + hands = [] + for pbone in obj.pose.bones: + index = pbone.parent_index(mt.arm_p) + if index == 2 and pbone.bone.connected and pbone.bone.parent.connected: + hands.append(pbone) + + if len(hands) != 1: + raise Exception("Found %s possible hands attached to this arm, expected 1 from bone: %s" % ([pbone.name for pbone in hands], orig_bone_name)) + + # first add the 2 new bones + mt.hand_p = hands[0] + mt.hand = mt.hand_p.name + + mt.forearm_p = mt.hand_p.parent + mt.forearm = mt.forearm_p.name + + return mt.names() + + +def ik(obj, definitions, base_names): + mt = bone_class_instance(obj, METARIG_NAMES) + mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions + mt.update() + + ik = bone_class_instance(obj, ["pole", "pole_vis", "hand_vis"]) + ik_chain = mt.copy(to_fmt="MCH-%s_ik", base_names=base_names, exclude_attrs=["shoulder"]) + + # IK needs no parent_index + ik_chain.hand_e.connected = False + ik_chain.hand_e.parent = None + ik_chain.hand_e.local_location = False + ik_chain.rename("hand", get_base_name(base_names[mt.hand]) + "_ik" + get_side_name(mt.hand)) + + ik_chain.arm_e.connected = False + ik_chain.arm_e.parent = mt.shoulder_e + + # Add the bone used for the arms poll target + #ik.pole = add_pole_target_bone(obj, mt.forearm, get_base_name(base_names[mt.forearm]) + "_target" + get_side_name(mt.forearm), mode='ZAVERAGE') + ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_target" + get_side_name(mt.forearm), mode='ZAVERAGE') + + ik.update() + ik.pole_e.local_location = False + + # update bones after this! + ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) + ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) + + ik.update() + ik.hand_vis_e.restrict_select = True + ik.pole_vis_e.restrict_select = True + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + ik.update() + ik_chain.update() + + # Set IK dof + ik_chain.forearm_p.ik_dof_x = True + ik_chain.forearm_p.ik_dof_y = False + ik_chain.forearm_p.ik_dof_z = False + + con = ik_chain.forearm_p.constraints.new('IK') + con.target = obj + con.subtarget = ik_chain.hand + con.pole_target = obj + con.pole_subtarget = ik.pole + + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.chain_length = 2 + con.pole_angle = -90.0 # XXX, RAD2DEG + + # ID Propery on the hand for IK/FK switch + + prop = rna_idprop_ui_prop_get(ik_chain.hand_p, "ik", create=True) + ik_chain.hand_p["ik"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + bpy.ops.object.mode_set(mode='EDIT') + + # don't blend the shoulder + return [None] + ik_chain.names() + + +def fk(obj, definitions, base_names): + + arm = obj.data + + mt = bone_class_instance(obj, METARIG_NAMES) + mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions + mt.update() + + ex = bone_class_instance(obj, ["socket", "arm_hinge", "hand_delta"]) + fk_chain = mt.copy(base_names=base_names) + + # shoulder is used as a hinge + fk_chain.rename("shoulder", "MCH-%s_hinge" % base_names[mt.arm]) + fk_chain.shoulder_e.translate(Vector(0.0, fk_chain.shoulder_e.length / 2, 0.0)) + + # upper arm constrains to this. + ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm]) + ex.socket = ex.socket_e.name + ex.socket_e.connected = False + ex.socket_e.parent = mt.shoulder_e + ex.socket_e.length *= 0.5 + + # insert the 'DLT-hand', between the forearm and the hand + # copies forarm rotation + ex.hand_delta_e = copy_bone_simple(arm, fk_chain.hand, "DLT-%s" % base_names[mt.hand], parent=True) + ex.hand_delta = ex.hand_delta_e.name + ex.hand_delta_e.length *= 0.5 + ex.hand_delta_e.connected = False + + fk_chain.hand_e.connected = False + fk_chain.hand_e.parent = ex.hand_delta_e + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + ex.update() + fk_chain.update() + + # Set rotation modes and axis locks + fk_chain.forearm_p.rotation_mode = 'XYZ' + fk_chain.forearm_p.lock_rotation = (False, True, True) + fk_chain.hand_p.rotation_mode = 'ZXY' + + con = fk_chain.arm_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.socket + + fk_chain.hand_p.lock_location = True, True, True + con = ex.hand_delta_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = fk_chain.forearm + + def hinge_setup(): + # Hinge constraint & driver + con = fk_chain.shoulder_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = mt.shoulder + driver_fcurve = con.driver_add("influence", 0) + driver = driver_fcurve.driver + + + controller_path = fk_chain.arm_p.path_to_id() + # add custom prop + fk_chain.arm_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(fk_chain.arm_p, "hinge", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurve.driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "hinge" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["hinge"]' + + mod = driver_fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + hinge_setup() + + bpy.ops.object.mode_set(mode='EDIT') + + return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand + + +def main(obj, bone_definition, base_names): + bones_ik = ik(obj, bone_definition, base_names) + bones_fk = fk(obj, bone_definition, base_names) + + bpy.ops.object.mode_set(mode='OBJECT') + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) diff --git a/release/scripts/modules/rigify/finger.py b/release/scripts/modules/rigify/finger.py deleted file mode 100644 index eb5a5d7149a..00000000000 --- a/release/scripts/modules/rigify/finger.py +++ /dev/null @@ -1,225 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify import EMPTY_LAYER -from rigify_utils import copy_bone_simple, get_side_name, get_base_name -from rna_prop_ui import rna_idprop_ui_prop_get -from functools import reduce - -METARIG_NAMES = "finger_01", "finger_02", "finger_03" - - -def metarig_template(): - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('finger.01') - bone.head[:] = 0.0000, 0.0000, 0.0000 - bone.tail[:] = 0.8788, -0.4584, -0.1327 - bone.roll = -2.8722 - bone.connected = False - bone = arm.edit_bones.new('finger.02') - bone.head[:] = 0.8788, -0.4584, -0.1327 - bone.tail[:] = 1.7483, -0.9059, -0.3643 - bone.roll = -2.7099 - bone.connected = True - bone.parent = arm.edit_bones['finger.01'] - bone = arm.edit_bones.new('finger.03') - bone.head[:] = 1.7483, -0.9059, -0.3643 - bone.tail[:] = 2.2478, -1.1483, -0.7408 - bone.roll = -2.1709 - bone.connected = True - bone.parent = arm.edit_bones['finger.02'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['finger.01'] - pbone['type'] = 'finger' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the first in a chain - Expects a chain of at least 2 children. - eg. - finger -> finger_01 -> finger_02 - ''' - - bone_definition = [] - - orig_bone = obj.data.bones[orig_bone_name] - - bone_definition.append(orig_bone.name) - - bone = orig_bone - chain = 0 - while chain < 2: # first 2 bones only have 1 child - children = bone.children - - if len(children) != 1: - raise Exception("expected the chain to have 2 children from bone '%s' without a fork" % orig_bone_name) - bone = children[0] - bone_definition.append(bone.name) # finger_02, finger_03 - chain += 1 - - if len(bone_definition) != len(METARIG_NAMES): - raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) - - return bone_definition - - -def main(obj, bone_definition, base_names): - - # *** EDITMODE - - # get assosiated data - arm, orig_pbone, orig_ebone = get_bone_data(obj, bone_definition[0]) - - obj.animation_data_create() # needed if its a new armature with no keys - - arm.layer[0] = arm.layer[8] = True - - children = orig_pbone.children_recursive - tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) - - # FIXME, the line below is far too arbitrary - base_name = base_names[bone_definition[0]].rsplit(".", 2)[0] - - # first make a new bone at the location of the finger - #control_ebone = arm.edit_bones.new(base_name) - control_ebone = copy_bone_simple(arm, bone_definition[0], base_name + get_side_name(base_names[bone_definition[0]]), parent=True) - control_bone_name = control_ebone.name # we dont know if we get the name requested - - control_ebone.connected = orig_ebone.connected - control_ebone.parent = orig_ebone.parent - control_ebone.length = tot_len - - # now add bones inbetween this and its children recursively - - # switching modes so store names only! - children = [pbone.name for pbone in children] - - # set an alternate layer for driver bones - other_layer = empty_layer[:] - other_layer[8] = True - - - driver_bone_pairs = [] - - for child_bone_name in children: - child_ebone = arm.edit_bones[child_bone_name] - - # finger.02 --> finger_driver.02 - driver_bone_name = child_bone_name.split('.') - driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) - - driver_ebone = copy_bone_simple(arm, child_ebone.name, driver_bone_name) - driver_ebone.length *= 0.5 - driver_ebone.layer = other_layer - - # Insert driver_ebone in the chain without connected parents - driver_ebone.connected = False - driver_ebone.parent = child_ebone.parent - - child_ebone.connected = False - child_ebone.parent = driver_ebone - - # Add the drivers to these when in posemode. - driver_bone_pairs.append((child_bone_name, driver_bone_name)) - - del control_ebone - - - # *** POSEMODE - bpy.ops.object.mode_set(mode='OBJECT') - - - orig_pbone = obj.pose.bones[bone_definition[0]] - control_pbone = obj.pose.bones[control_bone_name] - - - # only allow Y scale - control_pbone.lock_scale = (True, False, True) - - control_pbone["bend_ratio"] = 0.4 - prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - con = orig_pbone.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = control_bone_name - - con = orig_pbone.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = control_bone_name - - - - # setup child drivers on each new smaller bone added. assume 2 for now. - - # drives the bones - controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name - - i = 0 - for child_bone_name, driver_bone_name in driver_bone_pairs: - - # XXX - todo, any number - if i == 2: - break - - driver_pbone = obj.pose.bones[driver_bone_name] - - driver_pbone.rotation_mode = 'YZX' - fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) - - #obj.driver_add('pose.bones["%s"].scale', 1) - #obj.animation_data.drivers[-1] # XXX, WATCH THIS - driver = fcurve_driver.driver - - # scale target - tar = driver.targets.new() - tar.name = "scale" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '.scale[1]' - - # bend target - tar = driver.targets.new() - tar.name = "br" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["bend_ratio"]' - - # XXX - todo, any number - if i == 0: - driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' - elif i == 1: - driver.expression = '(-scale+1.0)*pi*2.0*br' - - child_pbone = obj.pose.bones[child_bone_name] - - # only allow X rotation - driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) - - i += 1 - - # no blending the result of this - return None diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py new file mode 100644 index 00000000000..eb5a5d7149a --- /dev/null +++ b/release/scripts/modules/rigify/finger_curl.py @@ -0,0 +1,225 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify import EMPTY_LAYER +from rigify_utils import copy_bone_simple, get_side_name, get_base_name +from rna_prop_ui import rna_idprop_ui_prop_get +from functools import reduce + +METARIG_NAMES = "finger_01", "finger_02", "finger_03" + + +def metarig_template(): + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('finger.01') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.8788, -0.4584, -0.1327 + bone.roll = -2.8722 + bone.connected = False + bone = arm.edit_bones.new('finger.02') + bone.head[:] = 0.8788, -0.4584, -0.1327 + bone.tail[:] = 1.7483, -0.9059, -0.3643 + bone.roll = -2.7099 + bone.connected = True + bone.parent = arm.edit_bones['finger.01'] + bone = arm.edit_bones.new('finger.03') + bone.head[:] = 1.7483, -0.9059, -0.3643 + bone.tail[:] = 2.2478, -1.1483, -0.7408 + bone.roll = -2.1709 + bone.connected = True + bone.parent = arm.edit_bones['finger.02'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['finger.01'] + pbone['type'] = 'finger' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects a chain of at least 2 children. + eg. + finger -> finger_01 -> finger_02 + ''' + + bone_definition = [] + + orig_bone = obj.data.bones[orig_bone_name] + + bone_definition.append(orig_bone.name) + + bone = orig_bone + chain = 0 + while chain < 2: # first 2 bones only have 1 child + children = bone.children + + if len(children) != 1: + raise Exception("expected the chain to have 2 children from bone '%s' without a fork" % orig_bone_name) + bone = children[0] + bone_definition.append(bone.name) # finger_02, finger_03 + chain += 1 + + if len(bone_definition) != len(METARIG_NAMES): + raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + + return bone_definition + + +def main(obj, bone_definition, base_names): + + # *** EDITMODE + + # get assosiated data + arm, orig_pbone, orig_ebone = get_bone_data(obj, bone_definition[0]) + + obj.animation_data_create() # needed if its a new armature with no keys + + arm.layer[0] = arm.layer[8] = True + + children = orig_pbone.children_recursive + tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) + + # FIXME, the line below is far too arbitrary + base_name = base_names[bone_definition[0]].rsplit(".", 2)[0] + + # first make a new bone at the location of the finger + #control_ebone = arm.edit_bones.new(base_name) + control_ebone = copy_bone_simple(arm, bone_definition[0], base_name + get_side_name(base_names[bone_definition[0]]), parent=True) + control_bone_name = control_ebone.name # we dont know if we get the name requested + + control_ebone.connected = orig_ebone.connected + control_ebone.parent = orig_ebone.parent + control_ebone.length = tot_len + + # now add bones inbetween this and its children recursively + + # switching modes so store names only! + children = [pbone.name for pbone in children] + + # set an alternate layer for driver bones + other_layer = empty_layer[:] + other_layer[8] = True + + + driver_bone_pairs = [] + + for child_bone_name in children: + child_ebone = arm.edit_bones[child_bone_name] + + # finger.02 --> finger_driver.02 + driver_bone_name = child_bone_name.split('.') + driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:]) + + driver_ebone = copy_bone_simple(arm, child_ebone.name, driver_bone_name) + driver_ebone.length *= 0.5 + driver_ebone.layer = other_layer + + # Insert driver_ebone in the chain without connected parents + driver_ebone.connected = False + driver_ebone.parent = child_ebone.parent + + child_ebone.connected = False + child_ebone.parent = driver_ebone + + # Add the drivers to these when in posemode. + driver_bone_pairs.append((child_bone_name, driver_bone_name)) + + del control_ebone + + + # *** POSEMODE + bpy.ops.object.mode_set(mode='OBJECT') + + + orig_pbone = obj.pose.bones[bone_definition[0]] + control_pbone = obj.pose.bones[control_bone_name] + + + # only allow Y scale + control_pbone.lock_scale = (True, False, True) + + control_pbone["bend_ratio"] = 0.4 + prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True) + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = orig_pbone.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = control_bone_name + + con = orig_pbone.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = control_bone_name + + + + # setup child drivers on each new smaller bone added. assume 2 for now. + + # drives the bones + controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name + + i = 0 + for child_bone_name, driver_bone_name in driver_bone_pairs: + + # XXX - todo, any number + if i == 2: + break + + driver_pbone = obj.pose.bones[driver_bone_name] + + driver_pbone.rotation_mode = 'YZX' + fcurve_driver = driver_pbone.driver_add("rotation_euler", 0) + + #obj.driver_add('pose.bones["%s"].scale', 1) + #obj.animation_data.drivers[-1] # XXX, WATCH THIS + driver = fcurve_driver.driver + + # scale target + tar = driver.targets.new() + tar.name = "scale" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '.scale[1]' + + # bend target + tar = driver.targets.new() + tar.name = "br" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["bend_ratio"]' + + # XXX - todo, any number + if i == 0: + driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)' + elif i == 1: + driver.expression = '(-scale+1.0)*pi*2.0*br' + + child_pbone = obj.pose.bones[child_bone_name] + + # only allow X rotation + driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True) + + i += 1 + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/leg.py b/release/scripts/modules/rigify/leg.py deleted file mode 100644 index 66edc7bc1c1..00000000000 --- a/release/scripts/modules/rigify/leg.py +++ /dev/null @@ -1,361 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name -from rna_prop_ui import rna_idprop_ui_prop_get - -METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" - - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('hips') - bone.head[:] = 0.0000, 0.0000, 0.0000 - bone.tail[:] = 0.0000, 0.0000, 1.0000 - bone.roll = 0.0000 - bone.connected = False - bone = arm.edit_bones.new('thigh') - bone.head[:] = 0.5000, 0.0000, 0.0000 - bone.tail[:] = 0.3000, -0.1000, -1.7000 - bone.roll = 0.1171 - bone.connected = False - bone.parent = arm.edit_bones['hips'] - bone = arm.edit_bones.new('shin') - bone.head[:] = 0.3000, -0.1000, -1.7000 - bone.tail[:] = 0.3000, 0.0000, -3.5000 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['thigh'] - bone = arm.edit_bones.new('foot') - bone.head[:] = 0.3000, 0.0000, -3.5000 - bone.tail[:] = 0.4042, -0.5909, -3.9000 - bone.roll = -0.4662 - bone.connected = True - bone.parent = arm.edit_bones['shin'] - bone = arm.edit_bones.new('toe') - bone.head[:] = 0.4042, -0.5909, -3.9000 - bone.tail[:] = 0.4391, -0.9894, -3.9000 - bone.roll = -3.1416 - bone.connected = True - bone.parent = arm.edit_bones['foot'] - bone = arm.edit_bones.new('heel') - bone.head[:] = 0.2600, 0.2000, -4.0000 - bone.tail[:] = 0.3700, -0.4000, -4.0000 - bone.roll = 0.0000 - bone.connected = False - bone.parent = arm.edit_bones['foot'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['thigh'] - pbone['type'] = 'leg' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the first in a chain - Expects a chain of at least 3 children. - eg. - thigh -> shin -> foot -> [toe, heel] - ''' - - bone_definition = [] - - orig_bone = obj.data.bones[orig_bone_name] - orig_bone_parent = orig_bone.parent - - if orig_bone_parent is None: - raise Exception("expected the thigh bone to have a parent hip bone") - - bone_definition.append(orig_bone_parent.name) - bone_definition.append(orig_bone.name) - - - bone = orig_bone - chain = 0 - while chain < 2: # first 2 bones only have 1 child - children = bone.children - - if len(children) != 1: - raise Exception("expected the thigh bone to have 3 children without a fork") - bone = children[0] - bone_definition.append(bone.name) # shin, foot - chain += 1 - - children = bone.children - # Now there must be 2 children, only one connected - if len(children) != 2: - raise Exception("expected the foot bone:'%s' to have 2 children" % bone.name ) - - if children[0].connected == children[1].connected: - raise Exception("expected one bone to be connected") - - toe, heel = children - if heel.connected: - toe, heel = heel, toe - - - bone_definition.append(toe.name) - bone_definition.append(heel.name) - - if len(bone_definition) != len(METARIG_NAMES): - raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) - - return bone_definition - - -def ik(obj, bone_definition, base_names): - arm = obj.data - - # setup the existing bones - mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) - mt = bone_class_instance(obj, ["hips", "heel"]) - #ex = bone_class_instance(obj, [""]) - ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) - # children of ik_foot - ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) - - # XXX - duplicate below - for bone_class in (mt, mt_chain): - for attr in bone_class.attr_names: - i = METARIG_NAMES.index(attr) - ebone = arm.edit_bones[bone_definition[i]] - setattr(bone_class, attr, ebone.name) - bone_class.update() - # XXX - end dupe - - - # Make a new chain, ORG are the original bones renamed. - ik_chain = mt_chain.copy(to_fmt="MCH-%s") - - # simple rename - ik_chain.rename("thigh", ik_chain.thigh + "_ik") - ik_chain.rename("shin", ik_chain.shin + "_ik") - - # make sure leg is child of hips - ik_chain.thigh_e.parent = mt.hips_e - - # ik foot: no parents - base_foot_name = get_base_name(base_names[mt_chain.foot]) - ik.foot_e = copy_bone_simple(arm, mt_chain.foot, base_foot_name + "_ik" + get_side_name(base_names[mt_chain.foot])) - ik.foot = ik.foot_e.name - ik.foot_e.tail.z = ik.foot_e.head.z - ik.foot_e.roll = 0.0 - ik.foot_e.local_location = False - - # foot roll: heel pointing backwards, half length - ik.foot_roll_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_roll" + get_side_name(base_names[mt_chain.foot])) - ik.foot_roll = ik.foot_roll_e.name - ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 - ik.foot_roll_e.parent = ik.foot_e # heel is disconnected - - # heel pointing forwards to the toe base, parent of the following 2 bones - ik.foot_roll_01_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.01" % base_foot_name) - ik.foot_roll_01 = ik.foot_roll_01_e.name - ik.foot_roll_01_e.tail = mt_chain.foot_e.tail - ik.foot_roll_01_e.parent = ik.foot_e # heel is disconnected - - # same as above but reverse direction - ik.foot_roll_02_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.02" % base_foot_name) - ik.foot_roll_02 = ik.foot_roll_02_e.name - ik.foot_roll_02_e.parent = ik.foot_roll_01_e # heel is disconnected - ik.foot_roll_02_e.head = mt_chain.foot_e.tail - ik.foot_roll_02_e.tail = mt.heel_e.head - - del base_foot_name - - # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 - # ------------------ FK or IK? - ik_chain.rename("toe", get_base_name(base_names[mt_chain.toe]) + "_ik" + get_side_name(base_names[mt_chain.toe])) - ik_chain.toe_e.connected = False - ik_chain.toe_e.parent = ik.foot_roll_01_e - - # re-parent ik_chain.foot to the - ik_chain.foot_e.connected = False - ik_chain.foot_e.parent = ik.foot_roll_02_e - - - # knee target is the heel moved up and forward on its local axis - ik.knee_target_e = copy_bone_simple(arm, mt.heel, "knee_target") - ik.knee_target = ik.knee_target_e.name - offset = ik.knee_target_e.tail - ik.knee_target_e.head - offset.z = 0 - offset.length = mt_chain.shin_e.head.z - mt.heel_e.head.z - offset.z += offset.length - ik.knee_target_e.translate(offset) - ik.knee_target_e.length *= 0.5 - ik.knee_target_e.parent = ik.foot_e - ik.knee_target_e.local_location = False - - # roll the bone to point up... could also point in the same direction as ik.foot_roll - # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode - ik.foot_roll_01_e.align((0.0, 0.0, -1.0)) - - bpy.ops.object.mode_set(mode='OBJECT') - - ik.update() - ex.update() - mt_chain.update() - ik_chain.update() - - # Set IK dof - ik_chain.shin_p.ik_dof_x = True - ik_chain.shin_p.ik_dof_y = False - ik_chain.shin_p.ik_dof_z = False - - # Set rotation modes and axis locks - ik.foot_roll_p.rotation_mode = 'XYZ' - ik.foot_roll_p.lock_rotation = False, True, True - ik_chain.toe_p.rotation_mode = 'YXZ' - ik_chain.toe_p.lock_rotation = False, True, True - - # IK - con = ik_chain.shin_p.constraints.new('IK') - con.chain_length = 2 - con.iterations = 500 - con.pole_angle = -90.0 # XXX - in deg! - con.use_tail = True - con.use_stretch = True - con.use_target = True - con.use_rotation = False - con.weight = 1.0 - - con.target = obj - con.subtarget = ik_chain.foot - - con.pole_target = obj - con.pole_subtarget = ik.knee_target - - # foot roll - cons = [ \ - (ik.foot_roll_01_p.constraints.new('COPY_ROTATION'), ik.foot_roll_01_p.constraints.new('LIMIT_ROTATION')), \ - (ik.foot_roll_02_p.constraints.new('COPY_ROTATION'), ik.foot_roll_02_p.constraints.new('LIMIT_ROTATION'))] - - for con, con_l in cons: - con.target = obj - con.subtarget = ik.foot_roll - con.use_x, con.use_y, con.use_z = True, False, False - con.target_space = con.owner_space = 'LOCAL' - - con = con_l - con.use_limit_x, con.use_limit_y, con.use_limit_z = True, False, False - con.owner_space = 'LOCAL' - - if con_l is cons[-1][-1]: - con.minimum_x = 0.0 - con.maximum_x = 180.0 # XXX -deg - else: - con.minimum_x = -180.0 # XXX -deg - con.maximum_x = 0.0 - - bpy.ops.object.mode_set(mode='EDIT') - - return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None - - -def fk(obj, bone_definition, base_names): - from Mathutils import Vector - arm = obj.data - - # these account for all bones in METARIG_NAMES - mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) - mt = bone_class_instance(obj, ["hips", "heel"]) - - # new bones - ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge"]) - - for bone_class in (mt, mt_chain): - for attr in bone_class.attr_names: - i = METARIG_NAMES.index(attr) - ebone = arm.edit_bones[bone_definition[i]] - setattr(bone_class, attr, ebone.name) - bone_class.update() - - ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % base_names[mt_chain.thigh], parent=True) - ex.thigh_socket = ex.thigh_socket_e.name - ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) - - ex.thigh_hinge_e = copy_bone_simple(arm, mt.hips, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=False) - ex.thigh_hinge = ex.thigh_hinge_e.name - - fk_chain = mt_chain.copy(base_names=base_names) # fk has no prefix! - - fk_chain.thigh_e.connected = False - fk_chain.thigh_e.parent = ex.thigh_hinge_e - - bpy.ops.object.mode_set(mode='OBJECT') - - ex.update() - mt_chain.update() - fk_chain.update() - - # Set rotation modes and axis locks - fk_chain.shin_p.rotation_mode = 'XYZ' - fk_chain.shin_p.lock_rotation = False, True, True - fk_chain.foot_p.rotation_mode = 'YXZ' - fk_chain.toe_p.rotation_mode = 'YXZ' - fk_chain.toe_p.lock_rotation = False, True, True - - con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.thigh_socket - - # hinge - prop = rna_idprop_ui_prop_get(fk_chain.thigh_p, "hinge", create=True) - fk_chain.thigh_p["hinge"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = mt.hips - - # add driver - hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "var" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = hinge_driver_path - - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.0 - mod.coefficients[1] = -1.0 - - bpy.ops.object.mode_set(mode='EDIT') - - # dont blend the hips or heel - return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None - - -def main(obj, bone_definition, base_names): - bones_ik = ik(obj, bone_definition, base_names) - bones_fk = fk(obj, bone_definition, base_names) - - bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py new file mode 100644 index 00000000000..66edc7bc1c1 --- /dev/null +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -0,0 +1,361 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name +from rna_prop_ui import rna_idprop_ui_prop_get + +METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe", "heel" + + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('hips') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.0000, 0.0000, 1.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('thigh') + bone.head[:] = 0.5000, 0.0000, 0.0000 + bone.tail[:] = 0.3000, -0.1000, -1.7000 + bone.roll = 0.1171 + bone.connected = False + bone.parent = arm.edit_bones['hips'] + bone = arm.edit_bones.new('shin') + bone.head[:] = 0.3000, -0.1000, -1.7000 + bone.tail[:] = 0.3000, 0.0000, -3.5000 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['thigh'] + bone = arm.edit_bones.new('foot') + bone.head[:] = 0.3000, 0.0000, -3.5000 + bone.tail[:] = 0.4042, -0.5909, -3.9000 + bone.roll = -0.4662 + bone.connected = True + bone.parent = arm.edit_bones['shin'] + bone = arm.edit_bones.new('toe') + bone.head[:] = 0.4042, -0.5909, -3.9000 + bone.tail[:] = 0.4391, -0.9894, -3.9000 + bone.roll = -3.1416 + bone.connected = True + bone.parent = arm.edit_bones['foot'] + bone = arm.edit_bones.new('heel') + bone.head[:] = 0.2600, 0.2000, -4.0000 + bone.tail[:] = 0.3700, -0.4000, -4.0000 + bone.roll = 0.0000 + bone.connected = False + bone.parent = arm.edit_bones['foot'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['thigh'] + pbone['type'] = 'leg' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects a chain of at least 3 children. + eg. + thigh -> shin -> foot -> [toe, heel] + ''' + + bone_definition = [] + + orig_bone = obj.data.bones[orig_bone_name] + orig_bone_parent = orig_bone.parent + + if orig_bone_parent is None: + raise Exception("expected the thigh bone to have a parent hip bone") + + bone_definition.append(orig_bone_parent.name) + bone_definition.append(orig_bone.name) + + + bone = orig_bone + chain = 0 + while chain < 2: # first 2 bones only have 1 child + children = bone.children + + if len(children) != 1: + raise Exception("expected the thigh bone to have 3 children without a fork") + bone = children[0] + bone_definition.append(bone.name) # shin, foot + chain += 1 + + children = bone.children + # Now there must be 2 children, only one connected + if len(children) != 2: + raise Exception("expected the foot bone:'%s' to have 2 children" % bone.name ) + + if children[0].connected == children[1].connected: + raise Exception("expected one bone to be connected") + + toe, heel = children + if heel.connected: + toe, heel = heel, toe + + + bone_definition.append(toe.name) + bone_definition.append(heel.name) + + if len(bone_definition) != len(METARIG_NAMES): + raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + + return bone_definition + + +def ik(obj, bone_definition, base_names): + arm = obj.data + + # setup the existing bones + mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) + mt = bone_class_instance(obj, ["hips", "heel"]) + #ex = bone_class_instance(obj, [""]) + ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) + # children of ik_foot + ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) + + # XXX - duplicate below + for bone_class in (mt, mt_chain): + for attr in bone_class.attr_names: + i = METARIG_NAMES.index(attr) + ebone = arm.edit_bones[bone_definition[i]] + setattr(bone_class, attr, ebone.name) + bone_class.update() + # XXX - end dupe + + + # Make a new chain, ORG are the original bones renamed. + ik_chain = mt_chain.copy(to_fmt="MCH-%s") + + # simple rename + ik_chain.rename("thigh", ik_chain.thigh + "_ik") + ik_chain.rename("shin", ik_chain.shin + "_ik") + + # make sure leg is child of hips + ik_chain.thigh_e.parent = mt.hips_e + + # ik foot: no parents + base_foot_name = get_base_name(base_names[mt_chain.foot]) + ik.foot_e = copy_bone_simple(arm, mt_chain.foot, base_foot_name + "_ik" + get_side_name(base_names[mt_chain.foot])) + ik.foot = ik.foot_e.name + ik.foot_e.tail.z = ik.foot_e.head.z + ik.foot_e.roll = 0.0 + ik.foot_e.local_location = False + + # foot roll: heel pointing backwards, half length + ik.foot_roll_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_roll" + get_side_name(base_names[mt_chain.foot])) + ik.foot_roll = ik.foot_roll_e.name + ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 + ik.foot_roll_e.parent = ik.foot_e # heel is disconnected + + # heel pointing forwards to the toe base, parent of the following 2 bones + ik.foot_roll_01_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.01" % base_foot_name) + ik.foot_roll_01 = ik.foot_roll_01_e.name + ik.foot_roll_01_e.tail = mt_chain.foot_e.tail + ik.foot_roll_01_e.parent = ik.foot_e # heel is disconnected + + # same as above but reverse direction + ik.foot_roll_02_e = copy_bone_simple(arm, mt.heel, "MCH-%s_roll.02" % base_foot_name) + ik.foot_roll_02 = ik.foot_roll_02_e.name + ik.foot_roll_02_e.parent = ik.foot_roll_01_e # heel is disconnected + ik.foot_roll_02_e.head = mt_chain.foot_e.tail + ik.foot_roll_02_e.tail = mt.heel_e.head + + del base_foot_name + + # rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01 + # ------------------ FK or IK? + ik_chain.rename("toe", get_base_name(base_names[mt_chain.toe]) + "_ik" + get_side_name(base_names[mt_chain.toe])) + ik_chain.toe_e.connected = False + ik_chain.toe_e.parent = ik.foot_roll_01_e + + # re-parent ik_chain.foot to the + ik_chain.foot_e.connected = False + ik_chain.foot_e.parent = ik.foot_roll_02_e + + + # knee target is the heel moved up and forward on its local axis + ik.knee_target_e = copy_bone_simple(arm, mt.heel, "knee_target") + ik.knee_target = ik.knee_target_e.name + offset = ik.knee_target_e.tail - ik.knee_target_e.head + offset.z = 0 + offset.length = mt_chain.shin_e.head.z - mt.heel_e.head.z + offset.z += offset.length + ik.knee_target_e.translate(offset) + ik.knee_target_e.length *= 0.5 + ik.knee_target_e.parent = ik.foot_e + ik.knee_target_e.local_location = False + + # roll the bone to point up... could also point in the same direction as ik.foot_roll + # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode + ik.foot_roll_01_e.align((0.0, 0.0, -1.0)) + + bpy.ops.object.mode_set(mode='OBJECT') + + ik.update() + ex.update() + mt_chain.update() + ik_chain.update() + + # Set IK dof + ik_chain.shin_p.ik_dof_x = True + ik_chain.shin_p.ik_dof_y = False + ik_chain.shin_p.ik_dof_z = False + + # Set rotation modes and axis locks + ik.foot_roll_p.rotation_mode = 'XYZ' + ik.foot_roll_p.lock_rotation = False, True, True + ik_chain.toe_p.rotation_mode = 'YXZ' + ik_chain.toe_p.lock_rotation = False, True, True + + # IK + con = ik_chain.shin_p.constraints.new('IK') + con.chain_length = 2 + con.iterations = 500 + con.pole_angle = -90.0 # XXX - in deg! + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.weight = 1.0 + + con.target = obj + con.subtarget = ik_chain.foot + + con.pole_target = obj + con.pole_subtarget = ik.knee_target + + # foot roll + cons = [ \ + (ik.foot_roll_01_p.constraints.new('COPY_ROTATION'), ik.foot_roll_01_p.constraints.new('LIMIT_ROTATION')), \ + (ik.foot_roll_02_p.constraints.new('COPY_ROTATION'), ik.foot_roll_02_p.constraints.new('LIMIT_ROTATION'))] + + for con, con_l in cons: + con.target = obj + con.subtarget = ik.foot_roll + con.use_x, con.use_y, con.use_z = True, False, False + con.target_space = con.owner_space = 'LOCAL' + + con = con_l + con.use_limit_x, con.use_limit_y, con.use_limit_z = True, False, False + con.owner_space = 'LOCAL' + + if con_l is cons[-1][-1]: + con.minimum_x = 0.0 + con.maximum_x = 180.0 # XXX -deg + else: + con.minimum_x = -180.0 # XXX -deg + con.maximum_x = 0.0 + + bpy.ops.object.mode_set(mode='EDIT') + + return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None + + +def fk(obj, bone_definition, base_names): + from Mathutils import Vector + arm = obj.data + + # these account for all bones in METARIG_NAMES + mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) + mt = bone_class_instance(obj, ["hips", "heel"]) + + # new bones + ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge"]) + + for bone_class in (mt, mt_chain): + for attr in bone_class.attr_names: + i = METARIG_NAMES.index(attr) + ebone = arm.edit_bones[bone_definition[i]] + setattr(bone_class, attr, ebone.name) + bone_class.update() + + ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % base_names[mt_chain.thigh], parent=True) + ex.thigh_socket = ex.thigh_socket_e.name + ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) + + ex.thigh_hinge_e = copy_bone_simple(arm, mt.hips, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=False) + ex.thigh_hinge = ex.thigh_hinge_e.name + + fk_chain = mt_chain.copy(base_names=base_names) # fk has no prefix! + + fk_chain.thigh_e.connected = False + fk_chain.thigh_e.parent = ex.thigh_hinge_e + + bpy.ops.object.mode_set(mode='OBJECT') + + ex.update() + mt_chain.update() + fk_chain.update() + + # Set rotation modes and axis locks + fk_chain.shin_p.rotation_mode = 'XYZ' + fk_chain.shin_p.lock_rotation = False, True, True + fk_chain.foot_p.rotation_mode = 'YXZ' + fk_chain.toe_p.rotation_mode = 'YXZ' + fk_chain.toe_p.lock_rotation = False, True, True + + con = fk_chain.thigh_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.thigh_socket + + # hinge + prop = rna_idprop_ui_prop_get(fk_chain.thigh_p, "hinge", create=True) + fk_chain.thigh_p["hinge"] = 0.5 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = ex.thigh_hinge_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.hips + + # add driver + hinge_driver_path = fk_chain.thigh_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + bpy.ops.object.mode_set(mode='EDIT') + + # dont blend the hips or heel + return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None + + +def main(obj, bone_definition, base_names): + bones_ik = ik(obj, bone_definition, base_names) + bones_fk = fk(obj, bone_definition, base_names) + + bpy.ops.object.mode_set(mode='OBJECT') + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py deleted file mode 100644 index 088d8566cbc..00000000000 --- a/release/scripts/modules/rigify/neck.py +++ /dev/null @@ -1,290 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import bone_class_instance, copy_bone_simple -from rna_prop_ui import rna_idprop_ui_prop_get - -# not used, defined for completeness -METARIG_NAMES = ("body", "head") - - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('body') - bone.head[:] = -0.0000, -0.2771, -1.3345 - bone.tail[:] = -0.0000, -0.1708, -0.1984 - bone.roll = 0.0000 - bone.connected = False - bone = arm.edit_bones.new('head') - bone.head[:] = -0.0000, -0.1708, -0.1984 - bone.tail[:] = 0.0000, 0.7292, 1.3604 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['body'] - bone = arm.edit_bones.new('neck.01') - bone.head[:] = 0.0000, -0.1708, -0.1984 - bone.tail[:] = -0.0000, -0.0994, 0.1470 - bone.roll = -0.0000 - bone.connected = False - bone.parent = arm.edit_bones['head'] - bone = arm.edit_bones.new('neck.02') - bone.head[:] = -0.0000, -0.0994, 0.1470 - bone.tail[:] = 0.0000, -0.2428, 0.5162 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['neck.01'] - bone = arm.edit_bones.new('neck.03') - bone.head[:] = 0.0000, -0.2428, 0.5162 - bone.tail[:] = 0.0000, -0.4190, 0.8722 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['neck.02'] - bone = arm.edit_bones.new('neck.04') - bone.head[:] = 0.0000, -0.4190, 0.8722 - bone.tail[:] = 0.0000, -0.5111, 1.1956 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['neck.03'] - bone = arm.edit_bones.new('neck.05') - bone.head[:] = 0.0000, -0.5111, 1.1956 - bone.tail[:] = 0.0000, -0.5391, 1.6081 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['neck.04'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['head'] - pbone['type'] = 'neck' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the head, its parent is the body, - # its only child the first of a chain with matching basenames. - eg. - body -> head -> neck_01 -> neck_02 -> neck_03.... etc - ''' - arm = obj.data - head = arm.bones[orig_bone_name] - body = head.parent - - children = head.children - if len(children) != 1: - print("expected the head to have only 1 child.") - - child = children[0] - bone_definition = [body.name, head.name, child.name] - bone_definition.extend([child.name for child in child.children_recursive_basename]) - return bone_definition - - -def main(obj, bone_definition, base_names): - from Mathutils import Vector - - arm = obj.data - - # Initialize container classes for convenience - mt = bone_class_instance(obj, ["body", "head"]) # meta - mt.body = bone_definition[0] - mt.head = bone_definition[1] - mt.update() - - neck_chain = bone_definition[2:] - - mt_chain = bone_class_instance(obj, [("neck_%.2d" % (i + 1)) for i in range(len(neck_chain))]) # 99 bones enough eh? - for i, attr in enumerate(mt_chain.attr_names): - setattr(mt_chain, attr, neck_chain[i]) - mt_chain.update() - - neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] - neck_chain_segment_length = mt_chain.neck_01_e.length - - ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras - - # Add the head hinge at the bodys location, becomes the parent of the original head - - - # Copy the head bone and offset - ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % base_names[mt.head], parent=True) - ex.head_e.connected = False - ex.head = ex.head_e.name - # offset - head_length = ex.head_e.length - ex.head_e.head.y += head_length / 2.0 - ex.head_e.tail.y += head_length / 2.0 - - # Yes, use the body bone but call it a head hinge - ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=False) - ex.head_hinge_e.connected = False - ex.head_hinge = ex.head_hinge_e.name - ex.head_hinge_e.head.y += head_length / 4.0 - ex.head_hinge_e.tail.y += head_length / 4.0 - - # reparent the head, assume its not connected - mt.head_e.connected = False - mt.head_e.parent = ex.head_hinge_e - - # Insert the neck socket, the head copys this loation - ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) - ex.neck_socket = ex.neck_socket_e.name - ex.neck_socket_e.connected = False - ex.neck_socket_e.parent = mt.body_e - ex.neck_socket_e.head = mt.head_e.head - ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) - ex.neck_socket_e.roll = 0.0 - - # offset the head, not really needed since it has a copyloc constraint - mt.head_e.head.y += head_length / 4.0 - mt.head_e.tail.y += head_length / 4.0 - - for i, attr in enumerate(mt_chain.attr_names): - neck_e = getattr(mt_chain, attr + "_e") - - # dont store parent names, re-reference as each chain bones parent. - neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[neck_e.name]) - neck_e_parent.head = neck_e.head - neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) - neck_e_parent.roll = mt.head_e.roll - - - orig_parent = neck_e.parent - neck_e.connected = False - neck_e.parent = neck_e_parent - neck_e_parent.connected = False - - if i == 0: - neck_e_parent.parent = mt.body_e - else: - neck_e_parent.parent = orig_parent - - - bpy.ops.object.mode_set(mode='OBJECT') - - mt.update() - mt_chain.update() - ex.update() - - # Simple one off constraints, no drivers - con = mt.head_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.neck_socket - - con = ex.head_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = mt.head - - # driven hinge - prop = rna_idprop_ui_prop_get(mt.head_p, "hinge", create=True) - mt.head_p["hinge"] = 0.0 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - con = ex.head_hinge_p.constraints.new('COPY_ROTATION') - con.name = "hinge" - con.target = obj - con.subtarget = mt.body - - # add driver - hinge_driver_path = mt.head_p.path_to_id() + '["hinge"]' - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "var" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = hinge_driver_path - - #mod = fcurve_driver.modifiers.new('GENERATOR') - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.0 - mod.coefficients[1] = -1.0 - - head_driver_path = mt.head_p.path_to_id() - - target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - - mt.head_p["bend_tot"] = 0.0 - fcurve = mt.head_p.driver_add('["bend_tot"]', 0) - driver = fcurve.driver - driver.type = 'SUM' - fcurve.modifiers.remove(0) # grr dont need a modifier - - for i in range(len(neck_chain)): - tar = driver.targets.new() - tar.name = target_names[i] - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) - - - for i, attr in enumerate(mt_chain.attr_names): - neck_p = getattr(mt_chain, attr + "_p") - neck_p.lock_location = True, True, True - neck_p.lock_location = True, True, True - neck_p.lock_rotations_4d = True - - # Add bend prop - prop_name = "bend_%.2d" % (i + 1) - prop = rna_idprop_ui_prop_get(mt.head_p, prop_name, create=True) - mt.head_p[prop_name] = 1.0 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - # add parent constraint - neck_p_parent = neck_p.parent - - # add constraint - con = neck_p_parent.constraints.new('COPY_ROTATION') - con.name = "Copy Rotation" - con.target = obj - con.subtarget = ex.head - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'SCRIPTED' - driver.expression = "bend/bend_tot" - - fcurve.modifiers.remove(0) # grr dont need a modifier - - - # add target - tar = driver.targets.new() - tar.name = "bend_tot" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = head_driver_path + ('["bend_tot"]') - - tar = driver.targets.new() - tar.name = "bend" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = head_driver_path + ('["%s"]' % prop_name) - - # no blending the result of this - return None diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py new file mode 100644 index 00000000000..088d8566cbc --- /dev/null +++ b/release/scripts/modules/rigify/neck_flex.py @@ -0,0 +1,290 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import bone_class_instance, copy_bone_simple +from rna_prop_ui import rna_idprop_ui_prop_get + +# not used, defined for completeness +METARIG_NAMES = ("body", "head") + + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('body') + bone.head[:] = -0.0000, -0.2771, -1.3345 + bone.tail[:] = -0.0000, -0.1708, -0.1984 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('head') + bone.head[:] = -0.0000, -0.1708, -0.1984 + bone.tail[:] = 0.0000, 0.7292, 1.3604 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['body'] + bone = arm.edit_bones.new('neck.01') + bone.head[:] = 0.0000, -0.1708, -0.1984 + bone.tail[:] = -0.0000, -0.0994, 0.1470 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['head'] + bone = arm.edit_bones.new('neck.02') + bone.head[:] = -0.0000, -0.0994, 0.1470 + bone.tail[:] = 0.0000, -0.2428, 0.5162 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.01'] + bone = arm.edit_bones.new('neck.03') + bone.head[:] = 0.0000, -0.2428, 0.5162 + bone.tail[:] = 0.0000, -0.4190, 0.8722 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.02'] + bone = arm.edit_bones.new('neck.04') + bone.head[:] = 0.0000, -0.4190, 0.8722 + bone.tail[:] = 0.0000, -0.5111, 1.1956 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.03'] + bone = arm.edit_bones.new('neck.05') + bone.head[:] = 0.0000, -0.5111, 1.1956 + bone.tail[:] = 0.0000, -0.5391, 1.6081 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.04'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['head'] + pbone['type'] = 'neck' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the head, its parent is the body, + # its only child the first of a chain with matching basenames. + eg. + body -> head -> neck_01 -> neck_02 -> neck_03.... etc + ''' + arm = obj.data + head = arm.bones[orig_bone_name] + body = head.parent + + children = head.children + if len(children) != 1: + print("expected the head to have only 1 child.") + + child = children[0] + bone_definition = [body.name, head.name, child.name] + bone_definition.extend([child.name for child in child.children_recursive_basename]) + return bone_definition + + +def main(obj, bone_definition, base_names): + from Mathutils import Vector + + arm = obj.data + + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["body", "head"]) # meta + mt.body = bone_definition[0] + mt.head = bone_definition[1] + mt.update() + + neck_chain = bone_definition[2:] + + mt_chain = bone_class_instance(obj, [("neck_%.2d" % (i + 1)) for i in range(len(neck_chain))]) # 99 bones enough eh? + for i, attr in enumerate(mt_chain.attr_names): + setattr(mt_chain, attr, neck_chain[i]) + mt_chain.update() + + neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] + neck_chain_segment_length = mt_chain.neck_01_e.length + + ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras + + # Add the head hinge at the bodys location, becomes the parent of the original head + + + # Copy the head bone and offset + ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % base_names[mt.head], parent=True) + ex.head_e.connected = False + ex.head = ex.head_e.name + # offset + head_length = ex.head_e.length + ex.head_e.head.y += head_length / 2.0 + ex.head_e.tail.y += head_length / 2.0 + + # Yes, use the body bone but call it a head hinge + ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=False) + ex.head_hinge_e.connected = False + ex.head_hinge = ex.head_hinge_e.name + ex.head_hinge_e.head.y += head_length / 4.0 + ex.head_hinge_e.tail.y += head_length / 4.0 + + # reparent the head, assume its not connected + mt.head_e.connected = False + mt.head_e.parent = ex.head_hinge_e + + # Insert the neck socket, the head copys this loation + ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) + ex.neck_socket = ex.neck_socket_e.name + ex.neck_socket_e.connected = False + ex.neck_socket_e.parent = mt.body_e + ex.neck_socket_e.head = mt.head_e.head + ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) + ex.neck_socket_e.roll = 0.0 + + # offset the head, not really needed since it has a copyloc constraint + mt.head_e.head.y += head_length / 4.0 + mt.head_e.tail.y += head_length / 4.0 + + for i, attr in enumerate(mt_chain.attr_names): + neck_e = getattr(mt_chain, attr + "_e") + + # dont store parent names, re-reference as each chain bones parent. + neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[neck_e.name]) + neck_e_parent.head = neck_e.head + neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) + neck_e_parent.roll = mt.head_e.roll + + + orig_parent = neck_e.parent + neck_e.connected = False + neck_e.parent = neck_e_parent + neck_e_parent.connected = False + + if i == 0: + neck_e_parent.parent = mt.body_e + else: + neck_e_parent.parent = orig_parent + + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + mt_chain.update() + ex.update() + + # Simple one off constraints, no drivers + con = mt.head_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.neck_socket + + con = ex.head_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.head + + # driven hinge + prop = rna_idprop_ui_prop_get(mt.head_p, "hinge", create=True) + mt.head_p["hinge"] = 0.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + con = ex.head_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = mt.body + + # add driver + hinge_driver_path = mt.head_p.path_to_id() + '["hinge"]' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = hinge_driver_path + + #mod = fcurve_driver.modifiers.new('GENERATOR') + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + head_driver_path = mt.head_p.path_to_id() + + target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] + + mt.head_p["bend_tot"] = 0.0 + fcurve = mt.head_p.driver_add('["bend_tot"]', 0) + driver = fcurve.driver + driver.type = 'SUM' + fcurve.modifiers.remove(0) # grr dont need a modifier + + for i in range(len(neck_chain)): + tar = driver.targets.new() + tar.name = target_names[i] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) + + + for i, attr in enumerate(mt_chain.attr_names): + neck_p = getattr(mt_chain, attr + "_p") + neck_p.lock_location = True, True, True + neck_p.lock_location = True, True, True + neck_p.lock_rotations_4d = True + + # Add bend prop + prop_name = "bend_%.2d" % (i + 1) + prop = rna_idprop_ui_prop_get(mt.head_p, prop_name, create=True) + mt.head_p[prop_name] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + # add parent constraint + neck_p_parent = neck_p.parent + + # add constraint + con = neck_p_parent.constraints.new('COPY_ROTATION') + con.name = "Copy Rotation" + con.target = obj + con.subtarget = ex.head + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'SCRIPTED' + driver.expression = "bend/bend_tot" + + fcurve.modifiers.remove(0) # grr dont need a modifier + + + # add target + tar = driver.targets.new() + tar.name = "bend_tot" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["bend_tot"]') + + tar = driver.targets.new() + tar.name = "bend" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = head_driver_path + ('["%s"]' % prop_name) + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/palm.py b/release/scripts/modules/rigify/palm.py deleted file mode 100644 index 2970dab8566..00000000000 --- a/release/scripts/modules/rigify/palm.py +++ /dev/null @@ -1,213 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import copy_bone_simple, get_side_name -from rna_prop_ui import rna_idprop_ui_prop_get - -# not used, defined for completeness -METARIG_NAMES = tuple() - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('hand') - bone.head[:] = 0.0082, -1.2492, 0.0000 - bone.tail[:] = 0.0423, -0.4150, 0.0000 - bone.roll = 0.0000 - bone.connected = False - bone = arm.edit_bones.new('palm.03') - bone.head[:] = 0.0000, 0.0000, -0.0000 - bone.tail[:] = 0.0506, 1.2781, -0.1299 - bone.roll = -3.1396 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.02') - bone.head[:] = 0.5000, -0.0000, 0.0000 - bone.tail[:] = 0.6433, 1.2444, -0.1299 - bone.roll = -3.1357 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.01') - bone.head[:] = 1.0000, 0.0000, 0.0000 - bone.tail[:] = 1.3961, 1.0084, -0.1299 - bone.roll = -3.1190 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.04') - bone.head[:] = -0.5000, 0.0000, -0.0000 - bone.tail[:] = -0.5674, 1.2022, -0.1299 - bone.roll = 3.1386 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.05') - bone.head[:] = -1.0000, 0.0000, -0.0000 - bone.tail[:] = -1.3286, 1.0590, -0.1299 - bone.roll = 3.1239 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('thumb') - bone.head[:] = 1.3536, -0.2941, 0.0000 - bone.tail[:] = 2.1109, 0.4807, -0.1299 - bone.roll = -3.0929 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['palm.01'] - pbone['type'] = 'palm' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the first in an array of siblings with a matching basename - sorted with pointer first, little finger last. - eg. - [pointer, middle, ring, pinky... ] # any number of fingers - ''' - arm = obj.data - - palm_bone = arm.bones[orig_bone_name] - palm_parent = palm_bone.parent - palm_base = palm_bone.basename - bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] - bone_definition.sort() - bone_definition.reverse() - - return [palm_parent.name] + bone_definition - - -def main(obj, bone_definition, base_names): - arm = obj.data - - children = bone_definition[1:] - - # Make a copy of the pinky - # simply assume the pinky has the lowest name - pinky_ebone = arm.edit_bones[children[0]] - ring_ebone = arm.edit_bones[children[1]] - - # FIXME, why split the second one? - base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0] - - control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True) - control_name = control_ebone.name - - offset = (pinky_ebone.head - ring_ebone.head) - - control_ebone.translate(offset) - - bpy.ops.object.mode_set(mode='OBJECT') - - - arm, control_pbone, control_ebone = get_bone_data(obj, control_name) - arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) - - control_pbone.rotation_mode = 'YZX' - control_pbone.lock_rotation = False, True, True - - driver_fcurves = pinky_pbone.driver_add("rotation_euler") - - - controller_path = control_pbone.path_to_id() - - # add custom prop - control_pbone["spread"] = 0.0 - prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) - prop["soft_min"] = -1.0 - prop["soft_max"] = 1.0 - - - # ***** - driver = driver_fcurves[0].driver - driver.type = 'AVERAGE' - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[1].driver - driver.expression = "-x/4.0" - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[2].driver - driver.expression = "(1.0-cos(x))-s" - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - tar = driver.targets.new() - tar.name = "s" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["spread"]' - - - for i, child_name in enumerate(children): - child_pbone = obj.pose.bones[child_name] - child_pbone.rotation_mode = 'YZX' - - if child_name != children[-1] and child_name != children[0]: - - # this is somewhat arbitrary but seems to look good - inf = i / (len(children) + 1) - inf = 1.0 - inf - inf = ((inf * inf) + inf) / 2.0 - - # used for X/Y constraint - inf_minor = inf * inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy Z Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = False, False, True - con.influence = inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy XY Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = True, True, False - con.influence = inf_minor - - - child_pbone = obj.pose.bones[children[-1]] - child_pbone.rotation_mode = 'QUATERNION' - - # no blending the result of this - return None diff --git a/release/scripts/modules/rigify/palm_spread.py b/release/scripts/modules/rigify/palm_spread.py new file mode 100644 index 00000000000..2970dab8566 --- /dev/null +++ b/release/scripts/modules/rigify/palm_spread.py @@ -0,0 +1,213 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import copy_bone_simple, get_side_name +from rna_prop_ui import rna_idprop_ui_prop_get + +# not used, defined for completeness +METARIG_NAMES = tuple() + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('hand') + bone.head[:] = 0.0082, -1.2492, 0.0000 + bone.tail[:] = 0.0423, -0.4150, 0.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('palm.03') + bone.head[:] = 0.0000, 0.0000, -0.0000 + bone.tail[:] = 0.0506, 1.2781, -0.1299 + bone.roll = -3.1396 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.02') + bone.head[:] = 0.5000, -0.0000, 0.0000 + bone.tail[:] = 0.6433, 1.2444, -0.1299 + bone.roll = -3.1357 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.01') + bone.head[:] = 1.0000, 0.0000, 0.0000 + bone.tail[:] = 1.3961, 1.0084, -0.1299 + bone.roll = -3.1190 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.04') + bone.head[:] = -0.5000, 0.0000, -0.0000 + bone.tail[:] = -0.5674, 1.2022, -0.1299 + bone.roll = 3.1386 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.05') + bone.head[:] = -1.0000, 0.0000, -0.0000 + bone.tail[:] = -1.3286, 1.0590, -0.1299 + bone.roll = 3.1239 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('thumb') + bone.head[:] = 1.3536, -0.2941, 0.0000 + bone.tail[:] = 2.1109, 0.4807, -0.1299 + bone.roll = -3.0929 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['palm.01'] + pbone['type'] = 'palm' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in an array of siblings with a matching basename + sorted with pointer first, little finger last. + eg. + [pointer, middle, ring, pinky... ] # any number of fingers + ''' + arm = obj.data + + palm_bone = arm.bones[orig_bone_name] + palm_parent = palm_bone.parent + palm_base = palm_bone.basename + bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] + bone_definition.sort() + bone_definition.reverse() + + return [palm_parent.name] + bone_definition + + +def main(obj, bone_definition, base_names): + arm = obj.data + + children = bone_definition[1:] + + # Make a copy of the pinky + # simply assume the pinky has the lowest name + pinky_ebone = arm.edit_bones[children[0]] + ring_ebone = arm.edit_bones[children[1]] + + # FIXME, why split the second one? + base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0] + + control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True) + control_name = control_ebone.name + + offset = (pinky_ebone.head - ring_ebone.head) + + control_ebone.translate(offset) + + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) + arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) + + control_pbone.rotation_mode = 'YZX' + control_pbone.lock_rotation = False, True, True + + driver_fcurves = pinky_pbone.driver_add("rotation_euler") + + + controller_path = control_pbone.path_to_id() + + # add custom prop + control_pbone["spread"] = 0.0 + prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) + prop["soft_min"] = -1.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurves[0].driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[1].driver + driver.expression = "-x/4.0" + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[2].driver + driver.expression = "(1.0-cos(x))-s" + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + tar = driver.targets.new() + tar.name = "s" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["spread"]' + + + for i, child_name in enumerate(children): + child_pbone = obj.pose.bones[child_name] + child_pbone.rotation_mode = 'YZX' + + if child_name != children[-1] and child_name != children[0]: + + # this is somewhat arbitrary but seems to look good + inf = i / (len(children) + 1) + inf = 1.0 - inf + inf = ((inf * inf) + inf) / 2.0 + + # used for X/Y constraint + inf_minor = inf * inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy Z Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = False, False, True + con.influence = inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy XY Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = True, True, False + con.influence = inf_minor + + + child_pbone = obj.pose.bones[children[-1]] + child_pbone.rotation_mode = 'QUATERNION' + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/spine.py b/release/scripts/modules/rigify/spine.py deleted file mode 100644 index 2674d920cc8..00000000000 --- a/release/scripts/modules/rigify/spine.py +++ /dev/null @@ -1,501 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import bone_class_instance, copy_bone_simple -from rna_prop_ui import rna_idprop_ui_prop_get - -# not used, defined for completeness -METARIG_NAMES = ("pelvis", "ribcage") - - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('pelvis') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.2559, -0.1327 - bone.roll = 0.0000 - bone.connected = False - bone = arm.edit_bones.new('rib_cage') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.2559, 1.8673 - bone.roll = -0.0000 - bone.connected = False - bone.parent = arm.edit_bones['pelvis'] - bone = arm.edit_bones.new('spine.01') - bone.head[:] = -0.0000, -0.0000, 0.0000 - bone.tail[:] = -0.0000, -0.2559, 0.8673 - bone.roll = -0.0000 - bone.connected = False - bone.parent = arm.edit_bones['rib_cage'] - bone = arm.edit_bones.new('spine.02') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.3321, 1.7080 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.01'] - bone = arm.edit_bones.new('spine.03') - bone.head[:] = -0.0000, -0.3321, 1.7080 - bone.tail[:] = -0.0000, -0.0787, 2.4160 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.02'] - bone = arm.edit_bones.new('spine.04') - bone.head[:] = -0.0000, -0.0787, 2.4160 - bone.tail[:] = -0.0000, 0.2797, 3.0016 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.03'] - bone = arm.edit_bones.new('spine.05') - bone.head[:] = -0.0000, 0.2797, 3.0016 - bone.tail[:] = -0.0000, 0.4633, 3.6135 - bone.roll = 0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.04'] - bone = arm.edit_bones.new('spine.06') - bone.head[:] = -0.0000, 0.4633, 3.6135 - bone.tail[:] = -0.0000, 0.3671, 4.3477 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.05'] - bone = arm.edit_bones.new('spine.07') - bone.head[:] = -0.0000, 0.3671, 4.3477 - bone.tail[:] = -0.0000, 0.0175, 5.0033 - bone.roll = -0.0000 - bone.connected = True - bone.parent = arm.edit_bones['spine.06'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['rib_cage'] - pbone['type'] = 'spine.fk' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the second in a chain. - Expects at least 1 parent and a chain of children withe the same basename - eg. - pelvis -> rib_cage -> spine.01 -> spine.02 -> spine.03 - - note: same as neck. - ''' - arm = obj.data - ribcage = arm.bones[orig_bone_name] - pelvis = ribcage.parent - - if pelvis is None: - raise Exception("expected the ribcage bone:'%s' to have a parent (ribcage)." % ribcage.name) - - children = ribcage.children - if len(children) != 1: - raise Exception("expected the ribcage to have only 1 child.") - - child = children[0] - - bone_definition = [pelvis.name, ribcage.name, child.name] - bone_definition.extend([child.name for child in child.children_recursive_basename]) - return bone_definition - - -def fk(*args): - main(*args) - - -def main(obj, bone_definition, base_names): - from Mathutils import Vector, RotationMatrix - from math import radians, pi - - arm = obj.data - - # Initialize container classes for convenience - mt = bone_class_instance(obj, ["pelvis", "ribcage"]) # meta - mt.pelvis = bone_definition[0] - mt.ribcage = bone_definition[1] - mt.update() - - spine_chain_orig = tuple(bone_definition[2:]) - spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig] - spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1)[0] # probably 'ORG-spine.01' -> 'spine' - spine_chain_len = len(spine_chain_orig) - - child = spine_chain[0] - spine_chain_segment_length = child.length - #child.parent = mt.pelvis_e # was mt.ribcage - - # The first bone in the chain happens to be the basis of others, create them now - ex = bone_class_instance(obj, ["pelvis", "pelvis_copy", "ribcage", "ribcage_hinge", "ribcage_copy", "spine_rotate"]) - df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage - - ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent - ex.pelvis_copy = ex.pelvis_copy_e.name - ex.pelvis_copy_e.local_location = False - - # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge - ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage]) - ex.ribcage_hinge = ex.ribcage_hinge_e.name - ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) - - ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) - ex.spine_rotate = ex.spine_rotate_e.name - ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) - # swap head/tail - ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() - ex.spine_rotate_e.connected = False - ex.spine_rotate_e.parent = ex.pelvis_copy_e - - df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.pelvis]) - df.pelvis = df.pelvis_e.name - df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, - spine_chain_segment_length, 0.0)) - - ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.pelvis]) - ex.pelvis = ex.pelvis_e.name - ex.pelvis_e.translate(Vector(0.0, - spine_chain_segment_length, 0.0)) - ex.pelvis_e.connected = False - ex.pelvis_e.parent = ex.pelvis_copy_e - - # Copy the last bone now - child = spine_chain[-1] - - df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage]) - df.ribcage = df.ribcage_e.name - df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) - - ex.ribcage_copy_e = copy_bone_simple(arm, mt.ribcage, base_names[mt.ribcage]) - ex.ribcage_copy = ex.ribcage_copy_e.name - ex.ribcage_copy_e.connected = False - ex.ribcage_copy_e.parent = ex.ribcage_hinge_e - - ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.ribcage]) - ex.ribcage = ex.ribcage_e.name - ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0)) - ex.ribcage_e.parent = ex.ribcage_copy_e - - spine_chain = [child.name for child in spine_chain] - - # We have 3 spine chains - # - original (ORG_*) - # - copy (*use original name*) - # - reverse (MCH-rev_*) - spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(spine_chain_len)] - - mt_chain = bone_class_instance(obj, spine_chain_attrs) # ORG_* - rv_chain = bone_class_instance(obj, spine_chain_attrs) # * - ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* - del spine_chain_attrs - - for i, child_name in enumerate(spine_chain): - child_name_orig = base_names[spine_chain_orig[i]] - - attr = mt_chain.attr_names[i] # eg. spine_04 - - setattr(mt_chain, attr, spine_chain_orig[i]) # the original bone - - ebone = copy_bone_simple(arm, child_name, child_name_orig) # use the original name - setattr(ex_chain, attr, ebone.name) - - ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig) - setattr(rv_chain, attr, ebone.name) - ebone.connected = False - - mt_chain.update() - ex_chain.update() - rv_chain.update() - - # Now we need to re-parent these chains - for i, child_name in enumerate(spine_chain_orig): - attr = ex_chain.attr_names[i] + "_e" - ebone = getattr(ex_chain, attr) - if i == 0: - ebone.connected = False - ebone.parent = ex.pelvis_copy_e - else: - attr_parent = ex_chain.attr_names[i - 1] + "_e" - ebone.parent = getattr(ex_chain, attr_parent) - - # intentional! get the parent from the other paralelle chain member - getattr(rv_chain, attr).parent = ebone - - - # ex_chain needs to interlace bones! - # Note, skip the first bone - for i in range(1, spine_chain_len): # similar to neck - child_name_orig = base_names[spine_chain_orig[i]] - spine_e = getattr(mt_chain, mt_chain.attr_names[i] + "_e") - - # dont store parent names, re-reference as each chain bones parent. - spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) - spine_e_parent.head = spine_e.head - spine_e_parent.tail = spine_e.head + ((mt.ribcage_e.tail - mt.ribcage_e.head).normalize() * spine_chain_segment_length / 2.0) - spine_e_parent.roll = mt.ribcage_e.roll - - - spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e") - orig_parent = spine_e.parent - spine_e.connected = False - spine_e.parent = spine_e_parent - spine_e_parent.connected = False - - spine_e_parent.parent = orig_parent - - - # Rotate the rev chain 180 about the by the first bones center point - pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 - matrix = RotationMatrix(radians(180), 3, 'X') - for i, attr in enumerate(rv_chain.attr_names): # similar to neck - spine_e = getattr(rv_chain, attr + "_e") - # use the first bone as the pivot - - spine_e.head = ((spine_e.head - pivot) * matrix) + pivot - spine_e.tail = ((spine_e.tail - pivot) * matrix) + pivot - spine_e.roll += pi # 180d roll - del spine_e - - - bpy.ops.object.mode_set(mode='OBJECT') - - # refresh pose bones - mt.update() - ex.update() - df.update() - mt_chain.update() - ex_chain.update() - rv_chain.update() - - # df.pelvis_p / DEF-wgt_pelvis - con = df.pelvis_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.pelvis - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - - con = df.pelvis_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = ex.pelvis - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - - # df.ribcage_p / DEF-wgt_rib_cage - df.ribcage_p.lock_location = True, True, True - - con = df.ribcage_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = ex.ribcage - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - - con = df.ribcage_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.ribcage - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - - con = ex.ribcage_hinge_p.constraints.new('COPY_ROTATION') - con.name = "hinge" - con.target = obj - con.subtarget = ex.pelvis_copy - - # add driver - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "var" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = ex.ribcage_copy_p.path_to_id() + '["hinge"]' - - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.0 - mod.coefficients[1] = -1.0 - - - con = ex.spine_rotate_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = ex.ribcage_copy - - - # ex.pelvis_p / MCH-wgt_pelvis - con = ex.pelvis_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = mt_chain.spine_01 - con.owner_space = 'WORLD' - con.target_space = 'WORLD' - - con = ex.pelvis_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = mt_chain.spine_01 - con.owner_space = 'WORLD' - con.target_space = 'WORLD' - - # ex.ribcage_p / MCH-wgt_rib_cage - con = ex.ribcage_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) - con.head_tail = 0.0 - - con = ex.ribcage_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) - - # ex.pelvis_copy_p / rib_cage - con = ex.ribcage_copy_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = ex.pelvis_copy - con.head_tail = 0.0 - - # This stores all important ID props - prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "hinge", create=True) - ex.ribcage_copy_p["hinge"] = 1.0 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "pivot_slide", create=True) - ex.ribcage_copy_p["pivot_slide"] = 1.0 / spine_chain_len - prop["soft_min"] = 1.0 / spine_chain_len - prop["soft_max"] = 1.0 - - - # Create a fake connected parent/child relationship with bone location constraints - # positioned at the tip. - - # reverse bones / MCH-rev_spine.## - for i in range(1, spine_chain_len): - spine_p = getattr(rv_chain, rv_chain.attr_names[i] + "_p") - spine_fake_parent_name = getattr(rv_chain, rv_chain.attr_names[i - 1]) - - con = spine_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = spine_fake_parent_name - con.head_tail = 1.0 - del spine_p, spine_fake_parent_name, con - - - # Constrain 'inbetween' bones - target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] - rib_driver_path = ex.ribcage_copy_p.path_to_id() - - ex.ribcage_copy_p["bend_tot"] = 0.0 - fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]', 0) - driver = fcurve.driver - driver.type = 'SUM' - fcurve.modifiers.remove(0) # grr dont need a modifier - - for i in range(spine_chain_len - 1): - tar = driver.targets.new() - tar.name = target_names[i] - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) - - for i in range(1, spine_chain_len): - - # Add bend prop - prop_name = "bend_%.2d" % i - prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, prop_name, create=True) - ex.ribcage_copy_p[prop_name] = 1.0 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - spine_p = getattr(ex_chain, ex_chain.attr_names[i] + "_p") - spine_p_parent = spine_p.parent # interlaced bone - - con = spine_p_parent.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = ex.spine_rotate - con.owner_space = 'LOCAL' - con.target_space = 'LOCAL' - del spine_p - - # add driver - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - driver.type = 'SCRIPTED' - driver.expression = "bend/bend_tot" - - fcurve.modifiers.remove(0) # grr dont need a modifier - - - # add target - tar = driver.targets.new() - tar.name = "bend_tot" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = rib_driver_path + ('["bend_tot"]') - - tar = driver.targets.new() - tar.name = "bend" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = rib_driver_path + ('["%s"]' % prop_name) - - - - # original bone drivers - # note: the first bone has a lot more constraints, but also this simple one is first. - for i, attr in enumerate(mt_chain.attr_names): - spine_p = getattr(mt_chain, attr + "_p") - - con = spine_p.constraints.new('COPY_ROTATION') - con.target = obj - con.subtarget = getattr(ex_chain, attr) # lock to the copy's rotation - del spine_p - - # pivot slide: - lots of copy location constraints. - - con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') - con.name = "base" - con.target = obj - con.subtarget = rv_chain.spine_01 # lock to the reverse location - - for i in range(1, spine_chain_len + 1): - con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') - con.name = "slide_%d" % i - con.target = obj - - if i == spine_chain_len: - attr = mt_chain.attr_names[i - 1] - else: - attr = mt_chain.attr_names[i] - - con.subtarget = getattr(rv_chain, attr) # lock to the reverse location - - if i == spine_chain_len: - con.head_tail = 1.0 - - fcurve = con.driver_add("influence", 0) - driver = fcurve.driver - tar = driver.targets.new() - driver.type = 'AVERAGE' - tar.name = "var" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = rib_driver_path + '["pivot_slide"]' - - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = - (i - 1) - mod.coefficients[1] = spine_chain_len - - # no support for blending chains - return None diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py new file mode 100644 index 00000000000..2674d920cc8 --- /dev/null +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -0,0 +1,501 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import bone_class_instance, copy_bone_simple +from rna_prop_ui import rna_idprop_ui_prop_get + +# not used, defined for completeness +METARIG_NAMES = ("pelvis", "ribcage") + + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('pelvis') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.2559, -0.1327 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('rib_cage') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.2559, 1.8673 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['pelvis'] + bone = arm.edit_bones.new('spine.01') + bone.head[:] = -0.0000, -0.0000, 0.0000 + bone.tail[:] = -0.0000, -0.2559, 0.8673 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['rib_cage'] + bone = arm.edit_bones.new('spine.02') + bone.head[:] = -0.0000, -0.2559, 0.8673 + bone.tail[:] = -0.0000, -0.3321, 1.7080 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.01'] + bone = arm.edit_bones.new('spine.03') + bone.head[:] = -0.0000, -0.3321, 1.7080 + bone.tail[:] = -0.0000, -0.0787, 2.4160 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.02'] + bone = arm.edit_bones.new('spine.04') + bone.head[:] = -0.0000, -0.0787, 2.4160 + bone.tail[:] = -0.0000, 0.2797, 3.0016 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.03'] + bone = arm.edit_bones.new('spine.05') + bone.head[:] = -0.0000, 0.2797, 3.0016 + bone.tail[:] = -0.0000, 0.4633, 3.6135 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.04'] + bone = arm.edit_bones.new('spine.06') + bone.head[:] = -0.0000, 0.4633, 3.6135 + bone.tail[:] = -0.0000, 0.3671, 4.3477 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.05'] + bone = arm.edit_bones.new('spine.07') + bone.head[:] = -0.0000, 0.3671, 4.3477 + bone.tail[:] = -0.0000, 0.0175, 5.0033 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.06'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['rib_cage'] + pbone['type'] = 'spine.fk' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the second in a chain. + Expects at least 1 parent and a chain of children withe the same basename + eg. + pelvis -> rib_cage -> spine.01 -> spine.02 -> spine.03 + + note: same as neck. + ''' + arm = obj.data + ribcage = arm.bones[orig_bone_name] + pelvis = ribcage.parent + + if pelvis is None: + raise Exception("expected the ribcage bone:'%s' to have a parent (ribcage)." % ribcage.name) + + children = ribcage.children + if len(children) != 1: + raise Exception("expected the ribcage to have only 1 child.") + + child = children[0] + + bone_definition = [pelvis.name, ribcage.name, child.name] + bone_definition.extend([child.name for child in child.children_recursive_basename]) + return bone_definition + + +def fk(*args): + main(*args) + + +def main(obj, bone_definition, base_names): + from Mathutils import Vector, RotationMatrix + from math import radians, pi + + arm = obj.data + + # Initialize container classes for convenience + mt = bone_class_instance(obj, ["pelvis", "ribcage"]) # meta + mt.pelvis = bone_definition[0] + mt.ribcage = bone_definition[1] + mt.update() + + spine_chain_orig = tuple(bone_definition[2:]) + spine_chain = [arm.edit_bones[child_name] for child_name in spine_chain_orig] + spine_chain_basename = base_names[spine_chain[0].name].rsplit(".", 1)[0] # probably 'ORG-spine.01' -> 'spine' + spine_chain_len = len(spine_chain_orig) + + child = spine_chain[0] + spine_chain_segment_length = child.length + #child.parent = mt.pelvis_e # was mt.ribcage + + # The first bone in the chain happens to be the basis of others, create them now + ex = bone_class_instance(obj, ["pelvis", "pelvis_copy", "ribcage", "ribcage_hinge", "ribcage_copy", "spine_rotate"]) + df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage + + ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent + ex.pelvis_copy = ex.pelvis_copy_e.name + ex.pelvis_copy_e.local_location = False + + # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge + ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage]) + ex.ribcage_hinge = ex.ribcage_hinge_e.name + ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) + + ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) + ex.spine_rotate = ex.spine_rotate_e.name + ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) + # swap head/tail + ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() + ex.spine_rotate_e.connected = False + ex.spine_rotate_e.parent = ex.pelvis_copy_e + + df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.pelvis]) + df.pelvis = df.pelvis_e.name + df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, - spine_chain_segment_length, 0.0)) + + ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.pelvis]) + ex.pelvis = ex.pelvis_e.name + ex.pelvis_e.translate(Vector(0.0, - spine_chain_segment_length, 0.0)) + ex.pelvis_e.connected = False + ex.pelvis_e.parent = ex.pelvis_copy_e + + # Copy the last bone now + child = spine_chain[-1] + + df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage]) + df.ribcage = df.ribcage_e.name + df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) + + ex.ribcage_copy_e = copy_bone_simple(arm, mt.ribcage, base_names[mt.ribcage]) + ex.ribcage_copy = ex.ribcage_copy_e.name + ex.ribcage_copy_e.connected = False + ex.ribcage_copy_e.parent = ex.ribcage_hinge_e + + ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.ribcage]) + ex.ribcage = ex.ribcage_e.name + ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0)) + ex.ribcage_e.parent = ex.ribcage_copy_e + + spine_chain = [child.name for child in spine_chain] + + # We have 3 spine chains + # - original (ORG_*) + # - copy (*use original name*) + # - reverse (MCH-rev_*) + spine_chain_attrs = [("spine_%.2d" % (i + 1)) for i in range(spine_chain_len)] + + mt_chain = bone_class_instance(obj, spine_chain_attrs) # ORG_* + rv_chain = bone_class_instance(obj, spine_chain_attrs) # * + ex_chain = bone_class_instance(obj, spine_chain_attrs) # MCH-rev_* + del spine_chain_attrs + + for i, child_name in enumerate(spine_chain): + child_name_orig = base_names[spine_chain_orig[i]] + + attr = mt_chain.attr_names[i] # eg. spine_04 + + setattr(mt_chain, attr, spine_chain_orig[i]) # the original bone + + ebone = copy_bone_simple(arm, child_name, child_name_orig) # use the original name + setattr(ex_chain, attr, ebone.name) + + ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig) + setattr(rv_chain, attr, ebone.name) + ebone.connected = False + + mt_chain.update() + ex_chain.update() + rv_chain.update() + + # Now we need to re-parent these chains + for i, child_name in enumerate(spine_chain_orig): + attr = ex_chain.attr_names[i] + "_e" + ebone = getattr(ex_chain, attr) + if i == 0: + ebone.connected = False + ebone.parent = ex.pelvis_copy_e + else: + attr_parent = ex_chain.attr_names[i - 1] + "_e" + ebone.parent = getattr(ex_chain, attr_parent) + + # intentional! get the parent from the other paralelle chain member + getattr(rv_chain, attr).parent = ebone + + + # ex_chain needs to interlace bones! + # Note, skip the first bone + for i in range(1, spine_chain_len): # similar to neck + child_name_orig = base_names[spine_chain_orig[i]] + spine_e = getattr(mt_chain, mt_chain.attr_names[i] + "_e") + + # dont store parent names, re-reference as each chain bones parent. + spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) + spine_e_parent.head = spine_e.head + spine_e_parent.tail = spine_e.head + ((mt.ribcage_e.tail - mt.ribcage_e.head).normalize() * spine_chain_segment_length / 2.0) + spine_e_parent.roll = mt.ribcage_e.roll + + + spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e") + orig_parent = spine_e.parent + spine_e.connected = False + spine_e.parent = spine_e_parent + spine_e_parent.connected = False + + spine_e_parent.parent = orig_parent + + + # Rotate the rev chain 180 about the by the first bones center point + pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 + matrix = RotationMatrix(radians(180), 3, 'X') + for i, attr in enumerate(rv_chain.attr_names): # similar to neck + spine_e = getattr(rv_chain, attr + "_e") + # use the first bone as the pivot + + spine_e.head = ((spine_e.head - pivot) * matrix) + pivot + spine_e.tail = ((spine_e.tail - pivot) * matrix) + pivot + spine_e.roll += pi # 180d roll + del spine_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + # refresh pose bones + mt.update() + ex.update() + df.update() + mt_chain.update() + ex_chain.update() + rv_chain.update() + + # df.pelvis_p / DEF-wgt_pelvis + con = df.pelvis_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.pelvis + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = df.pelvis_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.pelvis + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + # df.ribcage_p / DEF-wgt_rib_cage + df.ribcage_p.lock_location = True, True, True + + con = df.ribcage_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.ribcage + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = df.ribcage_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.ribcage + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + + con = ex.ribcage_hinge_p.constraints.new('COPY_ROTATION') + con.name = "hinge" + con.target = obj + con.subtarget = ex.pelvis_copy + + # add driver + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = ex.ribcage_copy_p.path_to_id() + '["hinge"]' + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = 1.0 + mod.coefficients[1] = -1.0 + + + con = ex.spine_rotate_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.ribcage_copy + + + # ex.pelvis_p / MCH-wgt_pelvis + con = ex.pelvis_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt_chain.spine_01 + con.owner_space = 'WORLD' + con.target_space = 'WORLD' + + con = ex.pelvis_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt_chain.spine_01 + con.owner_space = 'WORLD' + con.target_space = 'WORLD' + + # ex.ribcage_p / MCH-wgt_rib_cage + con = ex.ribcage_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) + con.head_tail = 0.0 + + con = ex.ribcage_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = getattr(mt_chain, mt_chain.attr_names[-1]) + + # ex.pelvis_copy_p / rib_cage + con = ex.ribcage_copy_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = ex.pelvis_copy + con.head_tail = 0.0 + + # This stores all important ID props + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "hinge", create=True) + ex.ribcage_copy_p["hinge"] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, "pivot_slide", create=True) + ex.ribcage_copy_p["pivot_slide"] = 1.0 / spine_chain_len + prop["soft_min"] = 1.0 / spine_chain_len + prop["soft_max"] = 1.0 + + + # Create a fake connected parent/child relationship with bone location constraints + # positioned at the tip. + + # reverse bones / MCH-rev_spine.## + for i in range(1, spine_chain_len): + spine_p = getattr(rv_chain, rv_chain.attr_names[i] + "_p") + spine_fake_parent_name = getattr(rv_chain, rv_chain.attr_names[i - 1]) + + con = spine_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = spine_fake_parent_name + con.head_tail = 1.0 + del spine_p, spine_fake_parent_name, con + + + # Constrain 'inbetween' bones + target_names = [("b%.2d" % (i + 1)) for i in range(spine_chain_len - 1)] + rib_driver_path = ex.ribcage_copy_p.path_to_id() + + ex.ribcage_copy_p["bend_tot"] = 0.0 + fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]', 0) + driver = fcurve.driver + driver.type = 'SUM' + fcurve.modifiers.remove(0) # grr dont need a modifier + + for i in range(spine_chain_len - 1): + tar = driver.targets.new() + tar.name = target_names[i] + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) + + for i in range(1, spine_chain_len): + + # Add bend prop + prop_name = "bend_%.2d" % i + prop = rna_idprop_ui_prop_get(ex.ribcage_copy_p, prop_name, create=True) + ex.ribcage_copy_p[prop_name] = 1.0 + prop["soft_min"] = 0.0 + prop["soft_max"] = 1.0 + + spine_p = getattr(ex_chain, ex_chain.attr_names[i] + "_p") + spine_p_parent = spine_p.parent # interlaced bone + + con = spine_p_parent.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ex.spine_rotate + con.owner_space = 'LOCAL' + con.target_space = 'LOCAL' + del spine_p + + # add driver + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + driver.type = 'SCRIPTED' + driver.expression = "bend/bend_tot" + + fcurve.modifiers.remove(0) # grr dont need a modifier + + + # add target + tar = driver.targets.new() + tar.name = "bend_tot" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["bend_tot"]') + + tar = driver.targets.new() + tar.name = "bend" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + ('["%s"]' % prop_name) + + + + # original bone drivers + # note: the first bone has a lot more constraints, but also this simple one is first. + for i, attr in enumerate(mt_chain.attr_names): + spine_p = getattr(mt_chain, attr + "_p") + + con = spine_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = getattr(ex_chain, attr) # lock to the copy's rotation + del spine_p + + # pivot slide: - lots of copy location constraints. + + con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') + con.name = "base" + con.target = obj + con.subtarget = rv_chain.spine_01 # lock to the reverse location + + for i in range(1, spine_chain_len + 1): + con = mt_chain.spine_01_p.constraints.new('COPY_LOCATION') + con.name = "slide_%d" % i + con.target = obj + + if i == spine_chain_len: + attr = mt_chain.attr_names[i - 1] + else: + attr = mt_chain.attr_names[i] + + con.subtarget = getattr(rv_chain, attr) # lock to the reverse location + + if i == spine_chain_len: + con.head_tail = 1.0 + + fcurve = con.driver_add("influence", 0) + driver = fcurve.driver + tar = driver.targets.new() + driver.type = 'AVERAGE' + tar.name = "var" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = rib_driver_path + '["pivot_slide"]' + + mod = fcurve.modifiers[0] + mod.poly_order = 1 + mod.coefficients[0] = - (i - 1) + mod.coefficients[1] = spine_chain_len + + # no support for blending chains + return None -- cgit v1.2.3 From aaa181818ec61979d21f2a1ff579b031b62ebbf9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 13:45:16 +0000 Subject: missed editing the sample rigs, Cessen likes palm_curl.py better --- .../scripts/modules/rigify/arm_biped_generic.py | 2 +- release/scripts/modules/rigify/finger_curl.py | 2 +- .../scripts/modules/rigify/leg_biped_generic.py | 2 +- release/scripts/modules/rigify/neck_flex.py | 2 +- release/scripts/modules/rigify/palm_curl.py | 213 +++++++++++++++++++++ release/scripts/modules/rigify/palm_spread.py | 213 --------------------- release/scripts/modules/rigify/spine_pivot_flex.py | 2 +- 7 files changed, 218 insertions(+), 218 deletions(-) create mode 100644 release/scripts/modules/rigify/palm_curl.py delete mode 100644 release/scripts/modules/rigify/palm_spread.py diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index dedbc27ad2a..af6c4880954 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -57,7 +57,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['upper_arm'] - pbone['type'] = 'arm' + pbone['type'] = 'arm_biped_generic' def metarig_definition(obj, orig_bone_name): diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index eb5a5d7149a..9cba1810fc9 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -51,7 +51,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['finger.01'] - pbone['type'] = 'finger' + pbone['type'] = 'finger_curl' def metarig_definition(obj, orig_bone_name): diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 66edc7bc1c1..c6fb57dd6f5 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -68,7 +68,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['thigh'] - pbone['type'] = 'leg' + pbone['type'] = 'leg_biped_generic' def metarig_definition(obj, orig_bone_name): diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 088d8566cbc..68015b3ebd3 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -75,7 +75,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['head'] - pbone['type'] = 'neck' + pbone['type'] = 'neck_flex' def metarig_definition(obj, orig_bone_name): diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py new file mode 100644 index 00000000000..78a3d1fb73f --- /dev/null +++ b/release/scripts/modules/rigify/palm_curl.py @@ -0,0 +1,213 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import copy_bone_simple, get_side_name +from rna_prop_ui import rna_idprop_ui_prop_get + +# not used, defined for completeness +METARIG_NAMES = tuple() + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('hand') + bone.head[:] = 0.0082, -1.2492, 0.0000 + bone.tail[:] = 0.0423, -0.4150, 0.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('palm.03') + bone.head[:] = 0.0000, 0.0000, -0.0000 + bone.tail[:] = 0.0506, 1.2781, -0.1299 + bone.roll = -3.1396 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.02') + bone.head[:] = 0.5000, -0.0000, 0.0000 + bone.tail[:] = 0.6433, 1.2444, -0.1299 + bone.roll = -3.1357 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.01') + bone.head[:] = 1.0000, 0.0000, 0.0000 + bone.tail[:] = 1.3961, 1.0084, -0.1299 + bone.roll = -3.1190 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.04') + bone.head[:] = -0.5000, 0.0000, -0.0000 + bone.tail[:] = -0.5674, 1.2022, -0.1299 + bone.roll = 3.1386 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('palm.05') + bone.head[:] = -1.0000, 0.0000, -0.0000 + bone.tail[:] = -1.3286, 1.0590, -0.1299 + bone.roll = 3.1239 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + bone = arm.edit_bones.new('thumb') + bone.head[:] = 1.3536, -0.2941, 0.0000 + bone.tail[:] = 2.1109, 0.4807, -0.1299 + bone.roll = -3.0929 + bone.connected = False + bone.parent = arm.edit_bones['hand'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['palm.01'] + pbone['type'] = 'palm_curl' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in an array of siblings with a matching basename + sorted with pointer first, little finger last. + eg. + [pointer, middle, ring, pinky... ] # any number of fingers + ''' + arm = obj.data + + palm_bone = arm.bones[orig_bone_name] + palm_parent = palm_bone.parent + palm_base = palm_bone.basename + bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] + bone_definition.sort() + bone_definition.reverse() + + return [palm_parent.name] + bone_definition + + +def main(obj, bone_definition, base_names): + arm = obj.data + + children = bone_definition[1:] + + # Make a copy of the pinky + # simply assume the pinky has the lowest name + pinky_ebone = arm.edit_bones[children[0]] + ring_ebone = arm.edit_bones[children[1]] + + # FIXME, why split the second one? + base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0] + + control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True) + control_name = control_ebone.name + + offset = (pinky_ebone.head - ring_ebone.head) + + control_ebone.translate(offset) + + bpy.ops.object.mode_set(mode='OBJECT') + + + arm, control_pbone, control_ebone = get_bone_data(obj, control_name) + arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) + + control_pbone.rotation_mode = 'YZX' + control_pbone.lock_rotation = False, True, True + + driver_fcurves = pinky_pbone.driver_add("rotation_euler") + + + controller_path = control_pbone.path_to_id() + + # add custom prop + control_pbone["spread"] = 0.0 + prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) + prop["soft_min"] = -1.0 + prop["soft_max"] = 1.0 + + + # ***** + driver = driver_fcurves[0].driver + driver.type = 'AVERAGE' + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[1].driver + driver.expression = "-x/4.0" + + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + + # ***** + driver = driver_fcurves[2].driver + driver.expression = "(1.0-cos(x))-s" + tar = driver.targets.new() + tar.name = "x" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + ".rotation_euler[0]" + + tar = driver.targets.new() + tar.name = "s" + tar.id_type = 'OBJECT' + tar.id = obj + tar.rna_path = controller_path + '["spread"]' + + + for i, child_name in enumerate(children): + child_pbone = obj.pose.bones[child_name] + child_pbone.rotation_mode = 'YZX' + + if child_name != children[-1] and child_name != children[0]: + + # this is somewhat arbitrary but seems to look good + inf = i / (len(children) + 1) + inf = 1.0 - inf + inf = ((inf * inf) + inf) / 2.0 + + # used for X/Y constraint + inf_minor = inf * inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy Z Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = False, False, True + con.influence = inf + + con = child_pbone.constraints.new('COPY_ROTATION') + con.name = "Copy XY Rot" + con.target = obj + con.subtarget = children[0] # also pinky_pbone + con.owner_space = con.target_space = 'LOCAL' + con.use_x, con.use_y, con.use_z = True, True, False + con.influence = inf_minor + + + child_pbone = obj.pose.bones[children[-1]] + child_pbone.rotation_mode = 'QUATERNION' + + # no blending the result of this + return None diff --git a/release/scripts/modules/rigify/palm_spread.py b/release/scripts/modules/rigify/palm_spread.py deleted file mode 100644 index 2970dab8566..00000000000 --- a/release/scripts/modules/rigify/palm_spread.py +++ /dev/null @@ -1,213 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy -from rigify_utils import copy_bone_simple, get_side_name -from rna_prop_ui import rna_idprop_ui_prop_get - -# not used, defined for completeness -METARIG_NAMES = tuple() - -def metarig_template(): - # generated by rigify.write_meta_rig - bpy.ops.object.mode_set(mode='EDIT') - obj = bpy.context.active_object - arm = obj.data - bone = arm.edit_bones.new('hand') - bone.head[:] = 0.0082, -1.2492, 0.0000 - bone.tail[:] = 0.0423, -0.4150, 0.0000 - bone.roll = 0.0000 - bone.connected = False - bone = arm.edit_bones.new('palm.03') - bone.head[:] = 0.0000, 0.0000, -0.0000 - bone.tail[:] = 0.0506, 1.2781, -0.1299 - bone.roll = -3.1396 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.02') - bone.head[:] = 0.5000, -0.0000, 0.0000 - bone.tail[:] = 0.6433, 1.2444, -0.1299 - bone.roll = -3.1357 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.01') - bone.head[:] = 1.0000, 0.0000, 0.0000 - bone.tail[:] = 1.3961, 1.0084, -0.1299 - bone.roll = -3.1190 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.04') - bone.head[:] = -0.5000, 0.0000, -0.0000 - bone.tail[:] = -0.5674, 1.2022, -0.1299 - bone.roll = 3.1386 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('palm.05') - bone.head[:] = -1.0000, 0.0000, -0.0000 - bone.tail[:] = -1.3286, 1.0590, -0.1299 - bone.roll = 3.1239 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - bone = arm.edit_bones.new('thumb') - bone.head[:] = 1.3536, -0.2941, 0.0000 - bone.tail[:] = 2.1109, 0.4807, -0.1299 - bone.roll = -3.0929 - bone.connected = False - bone.parent = arm.edit_bones['hand'] - - bpy.ops.object.mode_set(mode='OBJECT') - pbone = obj.pose.bones['palm.01'] - pbone['type'] = 'palm' - - -def metarig_definition(obj, orig_bone_name): - ''' - The bone given is the first in an array of siblings with a matching basename - sorted with pointer first, little finger last. - eg. - [pointer, middle, ring, pinky... ] # any number of fingers - ''' - arm = obj.data - - palm_bone = arm.bones[orig_bone_name] - palm_parent = palm_bone.parent - palm_base = palm_bone.basename - bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base] - bone_definition.sort() - bone_definition.reverse() - - return [palm_parent.name] + bone_definition - - -def main(obj, bone_definition, base_names): - arm = obj.data - - children = bone_definition[1:] - - # Make a copy of the pinky - # simply assume the pinky has the lowest name - pinky_ebone = arm.edit_bones[children[0]] - ring_ebone = arm.edit_bones[children[1]] - - # FIXME, why split the second one? - base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0] - - control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True) - control_name = control_ebone.name - - offset = (pinky_ebone.head - ring_ebone.head) - - control_ebone.translate(offset) - - bpy.ops.object.mode_set(mode='OBJECT') - - - arm, control_pbone, control_ebone = get_bone_data(obj, control_name) - arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) - - control_pbone.rotation_mode = 'YZX' - control_pbone.lock_rotation = False, True, True - - driver_fcurves = pinky_pbone.driver_add("rotation_euler") - - - controller_path = control_pbone.path_to_id() - - # add custom prop - control_pbone["spread"] = 0.0 - prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True) - prop["soft_min"] = -1.0 - prop["soft_max"] = 1.0 - - - # ***** - driver = driver_fcurves[0].driver - driver.type = 'AVERAGE' - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[1].driver - driver.expression = "-x/4.0" - - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - - # ***** - driver = driver_fcurves[2].driver - driver.expression = "(1.0-cos(x))-s" - tar = driver.targets.new() - tar.name = "x" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" - - tar = driver.targets.new() - tar.name = "s" - tar.id_type = 'OBJECT' - tar.id = obj - tar.rna_path = controller_path + '["spread"]' - - - for i, child_name in enumerate(children): - child_pbone = obj.pose.bones[child_name] - child_pbone.rotation_mode = 'YZX' - - if child_name != children[-1] and child_name != children[0]: - - # this is somewhat arbitrary but seems to look good - inf = i / (len(children) + 1) - inf = 1.0 - inf - inf = ((inf * inf) + inf) / 2.0 - - # used for X/Y constraint - inf_minor = inf * inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy Z Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = False, False, True - con.influence = inf - - con = child_pbone.constraints.new('COPY_ROTATION') - con.name = "Copy XY Rot" - con.target = obj - con.subtarget = children[0] # also pinky_pbone - con.owner_space = con.target_space = 'LOCAL' - con.use_x, con.use_y, con.use_z = True, True, False - con.influence = inf_minor - - - child_pbone = obj.pose.bones[children[-1]] - child_pbone.rotation_mode = 'QUATERNION' - - # no blending the result of this - return None diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 2674d920cc8..37a350bb3be 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -87,7 +87,7 @@ def metarig_template(): bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones['rib_cage'] - pbone['type'] = 'spine.fk' + pbone['type'] = 'spine_pivot_flex' def metarig_definition(obj, orig_bone_name): -- cgit v1.2.3 From acadb8c39f83a4b4112c8c77bac1eb39584ad100 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 10 Dec 2009 14:26:06 +0000 Subject: Sculpt Branch: Revised external multires file saving. Now it is more manual in that you have to specify where to save it, like an image file, but still saved at the same time as the .blend. It would ideally be automatic, but this is difficult to implement, so for now this should at least be more reliable. --- release/scripts/ui/properties_data_modifier.py | 16 +- source/blender/blenkernel/BKE_btex.h | 64 --- source/blender/blenkernel/BKE_customdata.h | 10 +- source/blender/blenkernel/BKE_customdata_file.h | 59 +++ source/blender/blenkernel/BKE_utildefines.h | 10 +- source/blender/blenkernel/intern/btex.c | 482 --------------------- source/blender/blenkernel/intern/customdata.c | 125 +++--- source/blender/blenkernel/intern/customdata_file.c | 446 +++++++++++++++++++ source/blender/blenkernel/intern/multires.c | 9 +- source/blender/blenloader/intern/writefile.c | 18 +- source/blender/editors/object/object_intern.h | 2 + source/blender/editors/object/object_modifier.c | 101 ++++- source/blender/editors/object/object_ops.c | 2 + source/blender/editors/space_file/file_draw.c | 2 + source/blender/editors/space_file/filelist.c | 2 + source/blender/editors/space_file/filesel.c | 2 + source/blender/makesdna/DNA_space_types.h | 1 + source/blender/makesrna/intern/rna_modifier.c | 34 +- source/blender/windowmanager/intern/wm_operators.c | 2 + 19 files changed, 749 insertions(+), 638 deletions(-) delete mode 100644 source/blender/blenkernel/BKE_btex.h create mode 100644 source/blender/blenkernel/BKE_customdata_file.h delete mode 100644 source/blender/blenkernel/intern/btex.c create mode 100644 source/blender/blenkernel/intern/customdata_file.c diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 8194027bae6..97c8f603273 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -438,7 +438,6 @@ class DATA_PT_modifiers(DataButtonsPanel): col.prop(md, "levels", text="Preview") col.prop(md, "sculpt_levels", text="Sculpt") col.prop(md, "render_levels", text="Render") - col.prop(md, "optimal_display") if wide_ui: col = split.column() @@ -446,9 +445,20 @@ class DATA_PT_modifiers(DataButtonsPanel): col.enabled = ob.mode != 'EDIT' col.operator("object.multires_subdivide", text="Subdivide") col.operator("object.multires_higher_levels_delete", text="Delete Higher") + col.prop(md, "optimal_display") + + layout.separator() + + col = layout.column() row = col.row() - row.enabled = md.total_levels > 0 - row.prop(md, "external") + if md.external: + row.operator("object.multires_pack_external", text="Pack External") + row.label() + row = col.row() + row.prop(md, "filename", text="") + else: + row.operator("object.multires_save_external", text="Save External...") + row.label() def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui): layout.prop(md, "object") diff --git a/source/blender/blenkernel/BKE_btex.h b/source/blender/blenkernel/BKE_btex.h deleted file mode 100644 index cb73fd160d7..00000000000 --- a/source/blender/blenkernel/BKE_btex.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef BKE_BTEX_H -#define BKE_BTEX_H - -#define BTEX_TYPE_IMAGE 0 -#define BTEX_TYPE_MESH 1 - -#define BTEX_LAYER_NAME_MAX 64 - -typedef struct BTex BTex; -typedef struct BTexLayer BTexLayer; - -/* Create/Free */ - -BTex *btex_create(int type); -void btex_free(BTex *btex); - -/* File read/write/remove */ - -int btex_read_open(BTex *btex, char *filename); -int btex_read_layer(BTex *btex, BTexLayer *blay); -int btex_read_data(BTex *btex, int size, void *data); -void btex_read_close(BTex *btex); - -int btex_write_open(BTex *btex, char *filename); -int btex_write_layer(BTex *btex, BTexLayer *blay); -int btex_write_data(BTex *btex, int size, void *data); -void btex_write_close(BTex *btex); - -void btex_remove(char *filename); - -/* Layers */ - -BTexLayer *btex_layer_find(BTex *btex, int type, char *name); -BTexLayer *btex_layer_add(BTex *btex, int type, char *name); -void btex_layer_remove(BTex *btex, BTexLayer *blay); - -/* Mesh */ - -void btex_mesh_set_grids(BTex *btex, int totgrid, int gridsize, int datasize); - -#endif /* BKE_BTEX_H */ - diff --git a/source/blender/blenkernel/BKE_customdata.h b/source/blender/blenkernel/BKE_customdata.h index 5ce4b396f0e..5f13e702343 100644 --- a/source/blender/blenkernel/BKE_customdata.h +++ b/source/blender/blenkernel/BKE_customdata.h @@ -32,6 +32,7 @@ #ifndef BKE_CUSTOMDATA_H #define BKE_CUSTOMDATA_H +struct ID; struct CustomData; struct CustomDataLayer; typedef unsigned int CustomDataMask; @@ -282,16 +283,15 @@ void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize); /* External file storage */ void CustomData_external_add(struct CustomData *data, - int type, const char *name, int totelem); + struct ID *id, int type, int totelem, const char *filename); void CustomData_external_remove(struct CustomData *data, - int type, int totelem); -void CustomData_external_remove_object(struct CustomData *data); + struct ID *id, int type, int totelem); int CustomData_external_test(struct CustomData *data, int type); void CustomData_external_write(struct CustomData *data, - CustomDataMask mask, int totelem, int free); + struct ID *id, CustomDataMask mask, int totelem, int free); void CustomData_external_read(struct CustomData *data, - CustomDataMask mask, int totelem); + struct ID *id, CustomDataMask mask, int totelem); #endif diff --git a/source/blender/blenkernel/BKE_customdata_file.h b/source/blender/blenkernel/BKE_customdata_file.h new file mode 100644 index 00000000000..5cbff193cd3 --- /dev/null +++ b/source/blender/blenkernel/BKE_customdata_file.h @@ -0,0 +1,59 @@ +/* + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BKE_CUSTOMDATA_FILE_H +#define BKE_CUSTOMDATA_FILE_H + +#define CDF_TYPE_IMAGE 0 +#define CDF_TYPE_MESH 1 + +#define CDF_LAYER_NAME_MAX 64 + +typedef struct CDataFile CDataFile; +typedef struct CDataFileLayer CDataFileLayer; + +/* Create/Free */ + +CDataFile *cdf_create(int type); +void cdf_free(CDataFile *cdf); + +/* File read/write/remove */ + +int cdf_read_open(CDataFile *cdf, char *filename); +int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay); +int cdf_read_data(CDataFile *cdf, int size, void *data); +void cdf_read_close(CDataFile *cdf); + +int cdf_write_open(CDataFile *cdf, char *filename); +int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay); +int cdf_write_data(CDataFile *cdf, int size, void *data); +void cdf_write_close(CDataFile *cdf); + +void cdf_remove(char *filename); + +/* Layers */ + +CDataFileLayer *cdf_layer_find(CDataFile *cdf, int type, char *name); +CDataFileLayer *cdf_layer_add(CDataFile *cdf, int type, char *name, size_t datasize); + +#endif /* BKE_CUSTOMDATA_FILE_H */ + diff --git a/source/blender/blenkernel/BKE_utildefines.h b/source/blender/blenkernel/BKE_utildefines.h index c0ed8430177..c052af775f2 100644 --- a/source/blender/blenkernel/BKE_utildefines.h +++ b/source/blender/blenkernel/BKE_utildefines.h @@ -168,7 +168,15 @@ #define ENDB MAKE_ID('E','N','D','B') -/* This one rotates the bytes in an int */ +/* This one rotates the bytes in an int64, int (32) and short (16) */ +#define SWITCH_INT64(a) { \ + char s_i, *p_i; \ + p_i= (char *)&(a); \ + s_i=p_i[0]; p_i[0]=p_i[7]; p_i[7]=s_i; \ + s_i=p_i[1]; p_i[1]=p_i[6]; p_i[6]=s_i; \ + s_i=p_i[2]; p_i[2]=p_i[5]; p_i[5]=s_i; \ + s_i=p_i[3]; p_i[3]=p_i[4]; p_i[4]=s_i; } + #define SWITCH_INT(a) { \ char s_i, *p_i; \ p_i= (char *)&(a); \ diff --git a/source/blender/blenkernel/intern/btex.c b/source/blender/blenkernel/intern/btex.c deleted file mode 100644 index 363e515f6e2..00000000000 --- a/source/blender/blenkernel/intern/btex.c +++ /dev/null @@ -1,482 +0,0 @@ -/* - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include -#include - -#include "MEM_guardedalloc.h" - -#include "BLI_fileops.h" -#include "BLI_string.h" - -#include "BKE_btex.h" -#include "BKE_global.h" -#include "BKE_utildefines.h" - -/************************* File Format Definitions ***************************/ - -#define BTEX_ENDIAN_LITTLE 0 -#define BTEX_ENDIAN_BIG 1 - -#define BTEX_DATA_FLOAT 0 - -typedef struct BTexHeader { - char ID[4]; /* "BTEX" */ - char endian; /* little, big */ - char version; /* non-compatible versions */ - char subversion; /* compatible sub versions */ - char pad; /* padding */ - - int structbytes; /* size of this struct in bytes */ - int type; /* image, mesh */ - int totlayer; /* number of layers in the file */ -} BTexHeader; - -typedef struct BTexImageHeader { - int structbytes; /* size of this struct in bytes */ - int width; /* image width */ - int height; /* image height */ - int tile_size; /* tile size (required power of 2) */ -} BTexImageHeader; - -typedef struct BTexMeshHeader { - int structbytes; /* size of this struct in bytes */ - int totgrid; /* number of grids */ - int gridsize; /* width of grids */ -} BTexMeshHeader; - -struct BTexLayer { - int structbytes; /* size of this struct in bytes */ - int datatype; /* only float for now */ - int datasize; /* size of data in layer */ - int type; /* layer type */ - char name[BTEX_LAYER_NAME_MAX]; /* layer name */ -}; - -/**************************** Other Definitions ******************************/ - -#define BTEX_VERSION 0 -#define BTEX_SUBVERSION 0 -#define BTEX_TILE_SIZE 64 - -struct BTex { - int type; - - BTexHeader header; - union { - BTexImageHeader image; - BTexMeshHeader mesh; - } btype; - - BTexLayer *layer; - int totlayer; - - FILE *readf; - FILE *writef; - int switchendian; - size_t dataoffset; -}; - -/********************************* Create/Free *******************************/ - -static int btex_endian(void) -{ - if(ENDIAN_ORDER == L_ENDIAN) - return BTEX_ENDIAN_LITTLE; - else - return BTEX_ENDIAN_BIG; -} - -/*static int btex_data_type_size(int datatype) -{ - if(datatype == BTEX_DATA_FLOAT) - return sizeof(float); - - return 0; -}*/ - -BTex *btex_create(int type) -{ - BTex *btex= MEM_callocN(sizeof(BTex), "BTex"); - - btex->type= type; - - return btex; -} - -void btex_free(BTex *btex) -{ - btex_read_close(btex); - btex_write_close(btex); - - if(btex->layer) - MEM_freeN(btex->layer); - - MEM_freeN(btex); -} - -/********************************* Read/Write ********************************/ - -static int btex_read_header(BTex *btex) -{ - BTexHeader *header; - BTexImageHeader *image; - BTexMeshHeader *mesh; - BTexLayer *layer; - FILE *f= btex->readf; - size_t offset = 0; - int a; - - header= &btex->header; - - if(!fread(header, sizeof(BTexHeader), 1, btex->readf)) - return 0; - - if(memcmp(header->ID, "BTEX", sizeof(header->ID)) != 0) - return 0; - if(header->version > BTEX_VERSION) - return 0; - - btex->switchendian= header->endian != btex_endian(); - header->endian= btex_endian(); - - if(btex->switchendian) { - SWITCH_INT(header->type); - SWITCH_INT(header->totlayer); - SWITCH_INT(header->structbytes); - } - - if(!ELEM(header->type, BTEX_TYPE_IMAGE, BTEX_TYPE_MESH)) - return 0; - - offset += header->structbytes; - header->structbytes= sizeof(BTexHeader); - - if(fseek(f, offset, SEEK_SET) != 0) - return 0; - - if(header->type == BTEX_TYPE_IMAGE) { - image= &btex->btype.image; - if(!fread(image, sizeof(BTexImageHeader), 1, f)) - return 0; - - if(btex->switchendian) { - SWITCH_INT(image->width); - SWITCH_INT(image->height); - SWITCH_INT(image->tile_size); - SWITCH_INT(image->structbytes); - } - - offset += image->structbytes; - image->structbytes= sizeof(BTexImageHeader); - } - else if(header->type == BTEX_TYPE_MESH) { - mesh= &btex->btype.mesh; - if(!fread(mesh, sizeof(BTexMeshHeader), 1, f)) - return 0; - - if(btex->switchendian) { - SWITCH_INT(mesh->totgrid); - SWITCH_INT(mesh->gridsize); - SWITCH_INT(mesh->structbytes); - } - - offset += mesh->structbytes; - mesh->structbytes= sizeof(BTexMeshHeader); - } - - if(fseek(f, offset, SEEK_SET) != 0) - return 0; - - btex->layer= MEM_callocN(sizeof(BTexLayer)*header->totlayer, "BTexLayer"); - btex->totlayer= header->totlayer; - - for(a=0; atotlayer; a++) { - layer= &btex->layer[a]; - - if(!fread(layer, sizeof(BTexLayer), 1, f)) - return 0; - - if(btex->switchendian) { - SWITCH_INT(layer->type); - SWITCH_INT(layer->datatype); - SWITCH_INT(layer->datasize); - SWITCH_INT(layer->structbytes); - } - - if(layer->datatype != BTEX_DATA_FLOAT) - return 0; - - offset += layer->structbytes; - layer->structbytes= sizeof(BTexLayer); - - if(fseek(f, offset, SEEK_SET) != 0) - return 0; - } - - btex->dataoffset= offset; - - return 1; -} - -static int btex_write_header(BTex *btex) -{ - BTexHeader *header; - BTexImageHeader *image; - BTexMeshHeader *mesh; - BTexLayer *layer; - FILE *f= btex->writef; - int a; - - header= &btex->header; - - if(!fwrite(header, sizeof(BTexHeader), 1, f)) - return 0; - - if(header->type == BTEX_TYPE_IMAGE) { - image= &btex->btype.image; - if(!fwrite(image, sizeof(BTexImageHeader), 1, f)) - return 0; - } - else if(header->type == BTEX_TYPE_MESH) { - mesh= &btex->btype.mesh; - if(!fwrite(mesh, sizeof(BTexMeshHeader), 1, f)) - return 0; - } - - for(a=0; atotlayer; a++) { - layer= &btex->layer[a]; - - if(!fwrite(layer, sizeof(BTexLayer), 1, f)) - return 0; - } - - return 1; -} - -int btex_read_open(BTex *btex, char *filename) -{ - FILE *f; - - f= fopen(filename, "rb"); - if(!f) - return 0; - - btex->readf= f; - - if(!btex_read_header(btex)) { - btex_read_close(btex); - return 0; - } - - if(btex->header.type != btex->type) { - btex_read_close(btex); - return 0; - } - - return 1; -} - -int btex_read_layer(BTex *btex, BTexLayer *blay) -{ - size_t offset; - int a; - - /* seek to right location in file */ - offset= btex->dataoffset; - for(a=0; atotlayer; a++) { - if(&btex->layer[a] == blay) - break; - else - offset += btex->layer[a].datasize; - } - - return (fseek(btex->readf, offset, SEEK_SET) == 0); -} - -int btex_read_data(BTex *btex, int size, void *data) -{ - float *fdata; - int a; - - /* read data */ - if(!fread(data, size, 1, btex->readf)) - return 0; - - /* switch endian if necessary */ - if(btex->switchendian) { - fdata= data; - - for(a=0; areadf) { - fclose(btex->readf); - btex->readf= NULL; - } -} - -int btex_write_open(BTex *btex, char *filename) -{ - BTexHeader *header; - BTexImageHeader *image; - BTexMeshHeader *mesh; - FILE *f; - - f= fopen(filename, "wb"); - if(!f) - return 0; - - btex->writef= f; - - /* fill header */ - header= &btex->header; - strcpy(header->ID, "BTEX"); - header->endian= btex_endian(); - header->version= BTEX_VERSION; - header->subversion= BTEX_SUBVERSION; - - header->structbytes= sizeof(BTexHeader); - header->type= btex->type; - header->totlayer= btex->totlayer; - - if(btex->type == BTEX_TYPE_IMAGE) { - /* fill image header */ - image= &btex->btype.image; - image->structbytes= sizeof(BTexImageHeader); - image->tile_size= BTEX_TILE_SIZE; - } - else if(btex->type == BTEX_TYPE_MESH) { - /* fill mesh header */ - mesh= &btex->btype.mesh; - mesh->structbytes= sizeof(BTexMeshHeader); - } - - btex_write_header(btex); - - return 1; -} - -int btex_write_layer(BTex *btex, BTexLayer *blay) -{ - return 1; -} - -int btex_write_data(BTex *btex, int size, void *data) -{ - /* write data */ - if(!fwrite(data, size, 1, btex->writef)) - return 0; - - return 1; -} - -void btex_write_close(BTex *btex) -{ - if(btex->writef) { - fclose(btex->writef); - btex->writef= NULL; - } -} - -void btex_remove(char *filename) -{ - BLI_delete(filename, 0, 0); -} - -/********************************** Layers ***********************************/ - -BTexLayer *btex_layer_find(BTex *btex, int type, char *name) -{ - BTexLayer *layer; - int a; - - for(a=0; atotlayer; a++) { - layer= &btex->layer[a]; - - if(layer->type == type && strcmp(layer->name, name) == 0) - return layer; - } - - return NULL; -} - -BTexLayer *btex_layer_add(BTex *btex, int type, char *name) -{ - BTexLayer *newlayer, *layer; - - /* expand array */ - newlayer= MEM_callocN(sizeof(BTexLayer)*(btex->totlayer+1), "BTexLayer"); - memcpy(newlayer, btex->layer, sizeof(BTexLayer)*btex->totlayer); - btex->layer= newlayer; - - btex->totlayer++; - - /* fill in new layer */ - layer= &btex->layer[btex->totlayer-1]; - layer->structbytes= sizeof(BTexLayer); - layer->datatype= BTEX_DATA_FLOAT; - layer->type= type; - BLI_strncpy(layer->name, name, BTEX_LAYER_NAME_MAX); - - return layer; -} - -void btex_layer_remove(BTex *btex, BTexLayer *layer) -{ - BTexLayer *newlayer; - int index= layer - btex->layer; - - /* expand array */ - newlayer= MEM_callocN(sizeof(BTexLayer)*(btex->totlayer-1), "BTexLayer"); - if(index > 0) - memcpy(newlayer, btex->layer, sizeof(BTexLayer)*index); - if(index+1 < btex->totlayer) - memcpy(newlayer+index, btex->layer+index+1, sizeof(BTexLayer)*(btex->totlayer-(index+1))); - btex->layer= newlayer; - - btex->totlayer--; -} - -/********************************* Mesh **************************************/ - -void btex_mesh_set_grids(BTex *btex, int totgrid, int gridsize, int datasize) -{ - BTexLayer *layer; - int a; - - btex->btype.mesh.totgrid= totgrid; - btex->btype.mesh.gridsize= gridsize; - - for(a=0; atotlayer; a++) { - layer= &btex->layer[a]; - layer->datasize= datasize; - } -} - diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index f9997708a50..d9e85d5d412 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -48,8 +48,8 @@ #include "BLI_mempool.h" #include "BLI_string.h" -#include "BKE_btex.h" #include "BKE_customdata.h" +#include "BKE_customdata_file.h" #include "BKE_global.h" #include "BKE_utildefines.h" @@ -95,11 +95,14 @@ typedef struct LayerTypeInfo { default is assumed to be all zeros */ void (*set_default)(void *data, int count); - /* a function to read data from a btex file */ - int (*read)(BTex *btex, void *data, int count); + /* a function to read data from a cdf file */ + int (*read)(CDataFile *cdf, void *data, int count); - /* a function to write data to a btex file */ - int (*write)(BTex *btex, void *data, int count); + /* a function to write data to a cdf file */ + int (*write)(CDataFile *cdf, void *data, int count); + + /* a function to determine file size */ + size_t (*filesize)(CDataFile *cdf, void *data, int count); } LayerTypeInfo; static void layerCopy_mdeformvert(const void *source, void *dest, @@ -550,7 +553,7 @@ static void layerFree_mdisps(void *data, int count, int size) } } -static int layerRead_mdisps(BTex *btex, void *data, int count) +static int layerRead_mdisps(CDataFile *cdf, void *data, int count) { MDisps *d = data; int i; @@ -559,7 +562,7 @@ static int layerRead_mdisps(BTex *btex, void *data, int count) if(!d[i].disps) d[i].disps = MEM_callocN(sizeof(float)*3*d[i].totdisp, "mdisps read"); - if(!btex_read_data(btex, d[i].totdisp*3*sizeof(float), d[i].disps)) { + if(!cdf_read_data(cdf, d[i].totdisp*3*sizeof(float), d[i].disps)) { printf("failed to read %d/%d %d\n", i, count, d[i].totdisp); return 0; } @@ -568,13 +571,13 @@ static int layerRead_mdisps(BTex *btex, void *data, int count) return 1; } -static int layerWrite_mdisps(BTex *btex, void *data, int count) +static int layerWrite_mdisps(CDataFile *cdf, void *data, int count) { MDisps *d = data; int i; for(i = 0; i < count; ++i) { - if(!btex_write_data(btex, d[i].totdisp*3*sizeof(float), d[i].disps)) { + if(!cdf_write_data(cdf, d[i].totdisp*3*sizeof(float), d[i].disps)) { printf("failed to write %d/%d %d\n", i, count, d[i].totdisp); return 0; } @@ -583,6 +586,18 @@ static int layerWrite_mdisps(BTex *btex, void *data, int count) return 1; } +static size_t layerFilesize_mdisps(CDataFile *cdf, void *data, int count) +{ + MDisps *d = data; + size_t size = 0; + int i; + + for(i = 0; i < count; ++i) + size += d[i].totdisp*3*sizeof(float); + + return size; +} + /* --------- */ static void layerDefault_mloopcol(void *data, int count) @@ -776,7 +791,7 @@ const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = { {sizeof(MLoopCol), "MLoopCol", 1, "Col", NULL, NULL, layerInterp_mloopcol, NULL, layerDefault_mloopcol}, {sizeof(float)*3*4, "", 0, NULL, NULL, NULL, NULL, NULL, NULL}, {sizeof(MDisps), "MDisps", 1, NULL, layerCopy_mdisps, - layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL, layerRead_mdisps, layerWrite_mdisps}, + layerFree_mdisps, layerInterp_mdisps, layerSwap_mdisps, NULL, layerRead_mdisps, layerWrite_mdisps, layerFilesize_mdisps}, {sizeof(MCol)*4, "MCol", 4, "WeightCol", NULL, NULL, layerInterp_mcol, layerSwap_mcol, layerDefault_mcol}, {sizeof(MCol)*4, "MCol", 4, "IDCol", NULL, NULL, layerInterp_mcol, @@ -838,8 +853,6 @@ void CustomData_merge(const struct CustomData *source, struct CustomData *dest, CustomDataLayer *layer, *newlayer; int i, type, number = 0, lasttype = -1, lastactive = 0, lastrender = 0, lastclone = 0, lastmask = 0; - CustomData_external_read(dest, mask, totelem); - for(i = 0; i < source->totlayer; ++i) { layer = &source->layers[i]; typeInfo = layerType_getInfo(layer->type); @@ -2297,18 +2310,20 @@ int CustomData_verify_versions(struct CustomData *data, int index) /****************************** External Files *******************************/ -static void customdata_external_filename(char filename[FILE_MAX], CustomDataExternal *external) +static void customdata_external_filename(char filename[FILE_MAX], ID *id, CustomDataExternal *external) { + char *path = (id->lib)? id->lib->filename: G.sce; + BLI_strncpy(filename, external->filename, FILE_MAX); - BLI_convertstringcode(filename, G.sce); + BLI_convertstringcode(filename, path); } -void CustomData_external_read(CustomData *data, CustomDataMask mask, int totelem) +void CustomData_external_read(CustomData *data, ID *id, CustomDataMask mask, int totelem) { CustomDataExternal *external= data->external; CustomDataLayer *layer; - BTex *btex; - BTexLayer *blay; + CDataFile *cdf; + CDataFileLayer *blay; char filename[FILE_MAX]; const LayerTypeInfo *typeInfo; int i, update = 0; @@ -2329,10 +2344,10 @@ void CustomData_external_read(CustomData *data, CustomDataMask mask, int totelem if(!update) return; - customdata_external_filename(filename, external); + customdata_external_filename(filename, id, external); - btex= btex_create(BTEX_TYPE_MESH); - if(!btex_read_open(btex, filename)) + cdf= cdf_create(CDF_TYPE_MESH); + if(!cdf_read_open(cdf, filename)) return; for(i=0; itotlayer; i++) { @@ -2342,11 +2357,11 @@ void CustomData_external_read(CustomData *data, CustomDataMask mask, int totelem if(!(mask & (1<type))); else if(layer->flag & CD_FLAG_IN_MEMORY); else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read) { - blay= btex_layer_find(btex, layer->type, layer->name); + blay= cdf_layer_find(cdf, layer->type, layer->name); if(blay) { - if(btex_read_layer(btex, blay)) { - if(typeInfo->read(btex, layer->data, totelem)); + if(cdf_read_layer(cdf, blay)) { + if(typeInfo->read(cdf, layer->data, totelem)); else break; layer->flag |= CD_FLAG_IN_MEMORY; } @@ -2356,16 +2371,16 @@ void CustomData_external_read(CustomData *data, CustomDataMask mask, int totelem } } - btex_read_close(btex); - btex_free(btex); + cdf_read_close(cdf); + cdf_free(cdf); } -void CustomData_external_write(CustomData *data, CustomDataMask mask, int totelem, int free) +void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, int totelem, int free) { CustomDataExternal *external= data->external; CustomDataLayer *layer; - BTex *btex; - BTexLayer *blay; + CDataFile *cdf; + CDataFileLayer *blay; const LayerTypeInfo *typeInfo; int i, update = 0; char filename[FILE_MAX]; @@ -2385,20 +2400,21 @@ void CustomData_external_write(CustomData *data, CustomDataMask mask, int totele if(!update) return; - CustomData_external_read(data, mask, totelem); + CustomData_external_read(data, id, mask, totelem); - btex= btex_create(BTEX_TYPE_MESH); + cdf= cdf_create(CDF_TYPE_MESH); for(i=0; itotlayer; i++) { layer = &data->layers[i]; typeInfo = layerType_getInfo(layer->type); - if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) - btex_layer_add(btex, layer->type, layer->name); + if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->filesize) + cdf_layer_add(cdf, layer->type, layer->name, + typeInfo->filesize(cdf, layer->data, totelem)); } - customdata_external_filename(filename, external); - if(!btex_write_open(btex, filename)) + customdata_external_filename(filename, id, external); + if(!cdf_write_open(cdf, filename)) return; for(i=0; itotlayer; i++) { @@ -2406,10 +2422,10 @@ void CustomData_external_write(CustomData *data, CustomDataMask mask, int totele typeInfo = layerType_getInfo(layer->type); if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write) { - blay= btex_layer_find(btex, layer->type, layer->name); + blay= cdf_layer_find(cdf, layer->type, layer->name); - if(btex_write_layer(btex, blay)) { - if(typeInfo->write(btex, layer->data, totelem)); + if(cdf_write_layer(cdf, blay)) { + if(typeInfo->write(cdf, layer->data, totelem)); else break; } else @@ -2418,7 +2434,7 @@ void CustomData_external_write(CustomData *data, CustomDataMask mask, int totele } if(i != data->totlayer) { - btex_free(btex); + cdf_free(cdf); return; } @@ -2435,11 +2451,11 @@ void CustomData_external_write(CustomData *data, CustomDataMask mask, int totele } } - btex_write_close(btex); - btex_free(btex); + cdf_write_close(cdf); + cdf_free(cdf); } -void CustomData_external_add(CustomData *data, int type, const char *name, int totelem) +void CustomData_external_add(CustomData *data, ID *id, int type, int totelem, const char *filename) { CustomDataExternal *external= data->external; CustomDataLayer *layer; @@ -2454,23 +2470,20 @@ void CustomData_external_add(CustomData *data, int type, const char *name, int t return; if(!external) { - char hex[MAX_ID_NAME*2]; - external= MEM_callocN(sizeof(CustomDataExternal), "CustomDataExternal"); - BLI_strhex(hex, sizeof(hex), name); - BLI_snprintf(external->filename, sizeof(external->filename), "//%s_mesh.btex", hex); + BLI_strncpy(external->filename, filename, sizeof(external->filename)); data->external= external; } layer->flag |= CD_FLAG_EXTERNAL|CD_FLAG_IN_MEMORY; } -void CustomData_external_remove(CustomData *data, int type, int totelem) +void CustomData_external_remove(CustomData *data, ID *id, int type, int totelem) { CustomDataExternal *external= data->external; CustomDataLayer *layer; - char filename[FILE_MAX]; - int layer_index, i, remove_file; + //char filename[FILE_MAX]; + int layer_index; // i, remove_file; layer_index = CustomData_get_active_layer_index(data, type); if(layer_index < 0) return; @@ -2482,20 +2495,22 @@ void CustomData_external_remove(CustomData *data, int type, int totelem) if(layer->flag & CD_FLAG_EXTERNAL) { if(!(layer->flag & CD_FLAG_IN_MEMORY)) - CustomData_external_read(data, (1<type), totelem); + CustomData_external_read(data, id, (1<type), totelem); layer->flag &= ~CD_FLAG_EXTERNAL; +#if 0 remove_file= 1; for(i=0; itotlayer; i++) if(data->layers[i].flag & CD_FLAG_EXTERNAL) remove_file= 0; if(remove_file) { - customdata_external_filename(filename, external); - btex_remove(filename); + customdata_external_filename(filename, id, external); + cdf_remove(filename); CustomData_external_free(data); } +#endif } } @@ -2511,7 +2526,8 @@ int CustomData_external_test(CustomData *data, int type) return (layer->flag & CD_FLAG_EXTERNAL); } -void CustomData_external_remove_object(CustomData *data) +#if 0 +void CustomData_external_remove_object(CustomData *data, ID *id) { CustomDataExternal *external= data->external; char filename[FILE_MAX]; @@ -2519,8 +2535,9 @@ void CustomData_external_remove_object(CustomData *data) if(!external) return; - customdata_external_filename(filename, external); - btex_remove(filename); + customdata_external_filename(filename, id, external); + cdf_remove(filename); CustomData_external_free(data); } +#endif diff --git a/source/blender/blenkernel/intern/customdata_file.c b/source/blender/blenkernel/intern/customdata_file.c new file mode 100644 index 00000000000..b58ada878de --- /dev/null +++ b/source/blender/blenkernel/intern/customdata_file.c @@ -0,0 +1,446 @@ +/* + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include + +#include "MEM_guardedalloc.h" + +#include "BLI_fileops.h" +#include "BLI_string.h" + +#include "BKE_customdata_file.h" +#include "BKE_global.h" +#include "BKE_utildefines.h" + +/************************* File Format Definitions ***************************/ + +#define CDF_ENDIAN_LITTLE 0 +#define CDF_ENDIAN_BIG 1 + +#define CDF_DATA_FLOAT 0 + +typedef struct CDataFileHeader { + char ID[4]; /* "BCDF" */ + char endian; /* little, big */ + char version; /* non-compatible versions */ + char subversion; /* compatible sub versions */ + char pad; /* padding */ + + int structbytes; /* size of this struct in bytes */ + int type; /* image, mesh */ + int totlayer; /* number of layers in the file */ +} CDataFileHeader; + +typedef struct CDataFileImageHeader { + int structbytes; /* size of this struct in bytes */ + int width; /* image width */ + int height; /* image height */ + int tile_size; /* tile size (required power of 2) */ +} CDataFileImageHeader; + +typedef struct CDataFileMeshHeader { + int structbytes; /* size of this struct in bytes */ +} CDataFileMeshHeader; + +struct CDataFileLayer { + int structbytes; /* size of this struct in bytes */ + int datatype; /* only float for now */ + uint64_t datasize; /* size of data in layer */ + int type; /* layer type */ + char name[CDF_LAYER_NAME_MAX]; /* layer name */ +}; + +/**************************** Other Definitions ******************************/ + +#define CDF_VERSION 0 +#define CDF_SUBVERSION 0 +#define CDF_TILE_SIZE 64 + +struct CDataFile { + int type; + + CDataFileHeader header; + union { + CDataFileImageHeader image; + CDataFileMeshHeader mesh; + } btype; + + CDataFileLayer *layer; + int totlayer; + + FILE *readf; + FILE *writef; + int switchendian; + size_t dataoffset; +}; + +/********************************* Create/Free *******************************/ + +static int cdf_endian(void) +{ + if(ENDIAN_ORDER == L_ENDIAN) + return CDF_ENDIAN_LITTLE; + else + return CDF_ENDIAN_BIG; +} + +/*static int cdf_data_type_size(int datatype) +{ + if(datatype == CDF_DATA_FLOAT) + return sizeof(float); + + return 0; +}*/ + +CDataFile *cdf_create(int type) +{ + CDataFile *cdf= MEM_callocN(sizeof(CDataFile), "CDataFile"); + + cdf->type= type; + + return cdf; +} + +void cdf_free(CDataFile *cdf) +{ + cdf_read_close(cdf); + cdf_write_close(cdf); + + if(cdf->layer) + MEM_freeN(cdf->layer); + + MEM_freeN(cdf); +} + +/********************************* Read/Write ********************************/ + +static int cdf_read_header(CDataFile *cdf) +{ + CDataFileHeader *header; + CDataFileImageHeader *image; + CDataFileMeshHeader *mesh; + CDataFileLayer *layer; + FILE *f= cdf->readf; + size_t offset = 0; + int a; + + header= &cdf->header; + + if(!fread(header, sizeof(CDataFileHeader), 1, cdf->readf)) + return 0; + + if(memcmp(header->ID, "BCDF", sizeof(header->ID)) != 0) + return 0; + if(header->version > CDF_VERSION) + return 0; + + cdf->switchendian= header->endian != cdf_endian(); + header->endian= cdf_endian(); + + if(cdf->switchendian) { + SWITCH_INT(header->type); + SWITCH_INT(header->totlayer); + SWITCH_INT(header->structbytes); + } + + if(!ELEM(header->type, CDF_TYPE_IMAGE, CDF_TYPE_MESH)) + return 0; + + offset += header->structbytes; + header->structbytes= sizeof(CDataFileHeader); + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + + if(header->type == CDF_TYPE_IMAGE) { + image= &cdf->btype.image; + if(!fread(image, sizeof(CDataFileImageHeader), 1, f)) + return 0; + + if(cdf->switchendian) { + SWITCH_INT(image->width); + SWITCH_INT(image->height); + SWITCH_INT(image->tile_size); + SWITCH_INT(image->structbytes); + } + + offset += image->structbytes; + image->structbytes= sizeof(CDataFileImageHeader); + } + else if(header->type == CDF_TYPE_MESH) { + mesh= &cdf->btype.mesh; + if(!fread(mesh, sizeof(CDataFileMeshHeader), 1, f)) + return 0; + + if(cdf->switchendian) + SWITCH_INT(mesh->structbytes); + + offset += mesh->structbytes; + mesh->structbytes= sizeof(CDataFileMeshHeader); + } + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + + cdf->layer= MEM_callocN(sizeof(CDataFileLayer)*header->totlayer, "CDataFileLayer"); + cdf->totlayer= header->totlayer; + + for(a=0; atotlayer; a++) { + layer= &cdf->layer[a]; + + if(!fread(layer, sizeof(CDataFileLayer), 1, f)) + return 0; + + if(cdf->switchendian) { + SWITCH_INT(layer->type); + SWITCH_INT(layer->datatype); + SWITCH_INT64(layer->datasize); + SWITCH_INT(layer->structbytes); + } + + if(layer->datatype != CDF_DATA_FLOAT) + return 0; + + offset += layer->structbytes; + layer->structbytes= sizeof(CDataFileLayer); + + if(fseek(f, offset, SEEK_SET) != 0) + return 0; + } + + cdf->dataoffset= offset; + + return 1; +} + +static int cdf_write_header(CDataFile *cdf) +{ + CDataFileHeader *header; + CDataFileImageHeader *image; + CDataFileMeshHeader *mesh; + CDataFileLayer *layer; + FILE *f= cdf->writef; + int a; + + header= &cdf->header; + + if(!fwrite(header, sizeof(CDataFileHeader), 1, f)) + return 0; + + if(header->type == CDF_TYPE_IMAGE) { + image= &cdf->btype.image; + if(!fwrite(image, sizeof(CDataFileImageHeader), 1, f)) + return 0; + } + else if(header->type == CDF_TYPE_MESH) { + mesh= &cdf->btype.mesh; + if(!fwrite(mesh, sizeof(CDataFileMeshHeader), 1, f)) + return 0; + } + + for(a=0; atotlayer; a++) { + layer= &cdf->layer[a]; + + if(!fwrite(layer, sizeof(CDataFileLayer), 1, f)) + return 0; + } + + return 1; +} + +int cdf_read_open(CDataFile *cdf, char *filename) +{ + FILE *f; + + f= fopen(filename, "rb"); + if(!f) + return 0; + + cdf->readf= f; + + if(!cdf_read_header(cdf)) { + cdf_read_close(cdf); + return 0; + } + + if(cdf->header.type != cdf->type) { + cdf_read_close(cdf); + return 0; + } + + return 1; +} + +int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay) +{ + size_t offset; + int a; + + /* seek to right location in file */ + offset= cdf->dataoffset; + for(a=0; atotlayer; a++) { + if(&cdf->layer[a] == blay) + break; + else + offset += cdf->layer[a].datasize; + } + + return (fseek(cdf->readf, offset, SEEK_SET) == 0); +} + +int cdf_read_data(CDataFile *cdf, int size, void *data) +{ + float *fdata; + int a; + + /* read data */ + if(!fread(data, size, 1, cdf->readf)) + return 0; + + /* switch endian if necessary */ + if(cdf->switchendian) { + fdata= data; + + for(a=0; areadf) { + fclose(cdf->readf); + cdf->readf= NULL; + } +} + +int cdf_write_open(CDataFile *cdf, char *filename) +{ + CDataFileHeader *header; + CDataFileImageHeader *image; + CDataFileMeshHeader *mesh; + FILE *f; + + f= fopen(filename, "wb"); + if(!f) + return 0; + + cdf->writef= f; + + /* fill header */ + header= &cdf->header; + strcpy(header->ID, "BCDF"); + header->endian= cdf_endian(); + header->version= CDF_VERSION; + header->subversion= CDF_SUBVERSION; + + header->structbytes= sizeof(CDataFileHeader); + header->type= cdf->type; + header->totlayer= cdf->totlayer; + + if(cdf->type == CDF_TYPE_IMAGE) { + /* fill image header */ + image= &cdf->btype.image; + image->structbytes= sizeof(CDataFileImageHeader); + image->tile_size= CDF_TILE_SIZE; + } + else if(cdf->type == CDF_TYPE_MESH) { + /* fill mesh header */ + mesh= &cdf->btype.mesh; + mesh->structbytes= sizeof(CDataFileMeshHeader); + } + + cdf_write_header(cdf); + + return 1; +} + +int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay) +{ + return 1; +} + +int cdf_write_data(CDataFile *cdf, int size, void *data) +{ + /* write data */ + if(!fwrite(data, size, 1, cdf->writef)) + return 0; + + return 1; +} + +void cdf_write_close(CDataFile *cdf) +{ + if(cdf->writef) { + fclose(cdf->writef); + cdf->writef= NULL; + } +} + +void cdf_remove(char *filename) +{ + BLI_delete(filename, 0, 0); +} + +/********************************** Layers ***********************************/ + +CDataFileLayer *cdf_layer_find(CDataFile *cdf, int type, char *name) +{ + CDataFileLayer *layer; + int a; + + for(a=0; atotlayer; a++) { + layer= &cdf->layer[a]; + + if(layer->type == type && strcmp(layer->name, name) == 0) + return layer; + } + + return NULL; +} + +CDataFileLayer *cdf_layer_add(CDataFile *cdf, int type, char *name, size_t datasize) +{ + CDataFileLayer *newlayer, *layer; + + /* expand array */ + newlayer= MEM_callocN(sizeof(CDataFileLayer)*(cdf->totlayer+1), "CDataFileLayer"); + memcpy(newlayer, cdf->layer, sizeof(CDataFileLayer)*cdf->totlayer); + cdf->layer= newlayer; + + cdf->totlayer++; + + /* fill in new layer */ + layer= &cdf->layer[cdf->totlayer-1]; + layer->structbytes= sizeof(CDataFileLayer); + layer->datatype= CDF_DATA_FLOAT; + layer->datasize= datasize; + layer->type= type; + BLI_strncpy(layer->name, name, CDF_LAYER_NAME_MAX); + + return layer; +} + diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 8a76d659d5f..20ba360a231 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -41,7 +41,6 @@ #include "BLI_blenlib.h" #include "BLI_pbvh.h" -#include "BKE_btex.h" #include "BKE_cdderivedmesh.h" #include "BKE_customdata.h" #include "BKE_depsgraph.h" @@ -250,7 +249,7 @@ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object int levels = mmd->totlvl - lvl; MDisps *mdisps; - CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface); mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS); multires_force_update(ob); @@ -286,7 +285,7 @@ void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object } } else { - CustomData_external_remove(&me->fdata, CD_MDISPS, me->totface); + CustomData_external_remove(&me->fdata, &me->id, CD_MDISPS, me->totface); CustomData_free_layer_active(&me->fdata, CD_MDISPS, me->totface); } } @@ -538,7 +537,7 @@ static void multiresModifier_update(DerivedMesh *dm) ob = ccgdm->multires.ob; me = ccgdm->multires.ob->data; mmd = ccgdm->multires.mmd; - CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface); mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS); if(mdisps) { @@ -690,7 +689,7 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i memcpy(subGridData[i], gridData[i], sizeof(DMGridData)*gridSize*gridSize); } - CustomData_external_read(&me->fdata, CD_MASK_MDISPS, me->totface); + CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface); multiresModifier_disp_run(result, ob->data, 0, 0, subGridData, mmd->totlvl); for(i = 0; i < numGrids; i++) diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index bc0db6d4cd1..280b9ffc182 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1457,13 +1457,13 @@ static void write_mdisps(WriteData *wd, int count, MDisps *mdlist, int external) } } -static void write_customdata(WriteData *wd, int count, CustomData *data, int partial_type, int partial_count) +static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, int partial_type, int partial_count) { int i; - /* write external customdata */ + /* write external customdata (not for undo) */ if(data->external && !wd->current) - CustomData_external_write(data, CD_MASK_MESH, count, 0); + CustomData_external_write(data, id, CD_MASK_MESH, count, 0); writestruct(wd, DATA, "CustomDataLayer", data->maxlayer, data->layers); @@ -1515,16 +1515,16 @@ static void write_meshs(WriteData *wd, ListBase *idbase) writedata(wd, DATA, sizeof(void *)*mesh->totcol, mesh->mat); if(mesh->pv) { - write_customdata(wd, mesh->pv->totvert, &mesh->vdata, -1, 0); - write_customdata(wd, mesh->pv->totedge, &mesh->edata, + write_customdata(wd, &mesh->id, mesh->pv->totvert, &mesh->vdata, -1, 0); + write_customdata(wd, &mesh->id, mesh->pv->totedge, &mesh->edata, CD_MEDGE, mesh->totedge); - write_customdata(wd, mesh->pv->totface, &mesh->fdata, + write_customdata(wd, &mesh->id, mesh->pv->totface, &mesh->fdata, CD_MFACE, mesh->totface); } else { - write_customdata(wd, mesh->totvert, &mesh->vdata, -1, 0); - write_customdata(wd, mesh->totedge, &mesh->edata, -1, 0); - write_customdata(wd, mesh->totface, &mesh->fdata, -1, 0); + write_customdata(wd, &mesh->id, mesh->totvert, &mesh->vdata, -1, 0); + write_customdata(wd, &mesh->id, mesh->totedge, &mesh->edata, -1, 0); + write_customdata(wd, &mesh->id, mesh->totface, &mesh->fdata, -1, 0); } /* PMV data */ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index c87210d6070..848855da1b0 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -143,6 +143,8 @@ void OBJECT_OT_modifier_convert(struct wmOperatorType *ot); void OBJECT_OT_modifier_copy(struct wmOperatorType *ot); void OBJECT_OT_multires_subdivide(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_meshdeform_bind(struct wmOperatorType *ot); void OBJECT_OT_explode_refresh(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 76c0f297999..a0fa0efec0a 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -44,6 +44,7 @@ #include "BLI_math.h" #include "BLI_listbase.h" #include "BLI_string.h" +#include "BLI_util.h" #include "BKE_action.h" #include "BKE_curve.h" @@ -794,21 +795,105 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int multires_subdivide_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); -} - void OBJECT_OT_multires_subdivide(wmOperatorType *ot) { ot->name= "Multires Subdivide"; ot->description= "Add a new level of subdivision."; ot->idname= "OBJECT_OT_multires_subdivide"; + ot->poll= multires_poll; ot->exec= multires_subdivide_exec; - ot->poll= multires_subdivide_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/****************** multires save external operator *********************/ + +static int multires_save_external_exec(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); + Object *ob= ptr.id.data; + Mesh *me= (ob)? ob->data: op->customdata; + char path[FILE_MAX]; + + 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 */ + + 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); + + return OPERATOR_FINISHED; +} + +static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); + Object *ob= ptr.id.data; + Mesh *me= ob->data; + char path[FILE_MAX]; + + 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); + + op->customdata= me; + + BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name+2); + RNA_string_set(op->ptr, "path", path); + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +void OBJECT_OT_multires_save_external(wmOperatorType *ot) +{ + ot->name= "Multires Save External"; + ot->description= "Save displacements to an external file."; + ot->idname= "OBJECT_OT_multires_save_external"; + + 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); +} + +/****************** multires pack operator *********************/ + +static int multires_pack_external_exec(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); + Object *ob= ptr.id.data; + Mesh *me= ob->data; + + if(!CustomData_external_test(&me->fdata, CD_MDISPS)) + return OPERATOR_CANCELLED; + + // XXX don't remove.. + CustomData_external_remove(&me->fdata, &me->id, CD_MDISPS, me->totface); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_multires_pack_external(wmOperatorType *ot) +{ + ot->name= "Multires Pack External"; + ot->description= "Pack displacements from an external file."; + ot->idname= "OBJECT_OT_multires_pack_external"; + + ot->poll= multires_poll; + ot->exec= multires_pack_external_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 13b1155d616..7376b5aa939 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -136,6 +136,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_modifier_copy); WM_operatortype_append(OBJECT_OT_multires_subdivide); 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_meshdeform_bind); WM_operatortype_append(OBJECT_OT_explode_refresh); diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index a1f9a9fd250..93bedd0b866 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -310,6 +310,8 @@ static int get_file_icon(struct direntry *file) return ICON_FILE_SOUND; else if (file->flags & FTFONTFILE) return ICON_FILE_FONT; + else if (file->flags & BTXFILE) + return ICON_FILE_BLANK; else return ICON_FILE_BLANK; } diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 640f365b073..81aa63dcad9 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -871,6 +871,8 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".otf") || BLI_testextensie(file->relname, ".otc")) { file->flags |= FTFONTFILE; + } else if(BLI_testextensie(file->relname, ".btx")) { + file->flags |= BTXFILE; } else if (has_quicktime){ if( BLI_testextensie(file->relname, ".int") || BLI_testextensie(file->relname, ".inta") diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index d681a58b276..bf580545455 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -161,6 +161,8 @@ short ED_fileselect_set_params(SpaceFile *sfile) params->filter |= RNA_boolean_get(op->ptr, "filter_text") ? TEXTFILE : 0; if(RNA_struct_find_property(op->ptr, "filter_folder")) 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; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 7a76417fe4b..83181d10df5 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -667,6 +667,7 @@ enum FileSortTypeE { #define TEXTFILE 512 #define MOVIEFILE_ICON 1024 /* movie file that preview can't load */ #define FOLDERFILE 2048 /* represents folders for filtering */ +#define BTXFILE 4096 /* SpaceImage->dt_uv */ #define SI_UVDT_OUTLINE 0 diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index ae02489537f..5a534a8ce14 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -357,15 +357,29 @@ static int rna_MultiresModifier_external_get(PointerRNA *ptr) return CustomData_external_test(&me->fdata, CD_MDISPS); } -static void rna_MultiresModifier_external_set(PointerRNA *ptr, int value) +static void rna_MultiresModifier_filename_get(PointerRNA *ptr, char *value) { Object *ob= (Object*)ptr->id.data; - Mesh *me= ob->data; + CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; + + BLI_strncpy(value, (external)? external->filename: "", sizeof(external->filename)); +} + +static void rna_MultiresModifier_filename_set(PointerRNA *ptr, const char *value) +{ + Object *ob= (Object*)ptr->id.data; + CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; + + if(external) + BLI_strncpy(external->filename, value, sizeof(external->filename)); +} + +static int rna_MultiresModifier_filename_length(PointerRNA *ptr) +{ + Object *ob= (Object*)ptr->id.data; + CustomDataExternal *external= ((Mesh*)ob->data)->fdata.external; - if(CustomData_external_test(&me->fdata, CD_MDISPS) && !value) - CustomData_external_remove(&me->fdata, CD_MDISPS, me->totface); - else if(!CustomData_external_test(&me->fdata, CD_MDISPS) && value) - CustomData_external_add(&me->fdata, CD_MDISPS, me->id.name+2, me->totface); + return strlen((external)? external->filename: ""); } static int rna_MultiresModifier_external_editable(PointerRNA *ptr) @@ -580,10 +594,16 @@ static void rna_def_modifier_multires(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored."); prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", "rna_MultiresModifier_external_set"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", NULL); RNA_def_property_editable_func(prop, "rna_MultiresModifier_external_editable"); RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory."); + prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_funcs(prop, "rna_MultiresModifier_filename_get", "rna_MultiresModifier_filename_length", "rna_MultiresModifier_filename_set"); + RNA_def_property_ui_text(prop, "Filename", "Path to external displacements file."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", eMultiresModifierFlag_ControlEdges); RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges"); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 8c819c1e3a0..751785a417a 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -680,6 +680,8 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type) RNA_def_property_flag(prop, PROP_HIDDEN); prop= RNA_def_boolean(ot->srna, "filter_text", (filter & TEXTFILE), "Filter text files", ""); RNA_def_property_flag(prop, PROP_HIDDEN); + prop= RNA_def_boolean(ot->srna, "filter_btx", (filter & BTXFILE), "Filter btx files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); prop= RNA_def_boolean(ot->srna, "filter_folder", (filter & FOLDERFILE), "Filter folders", ""); RNA_def_property_flag(prop, PROP_HIDDEN); -- cgit v1.2.3 From 5c5ec6f0a724c5bbc4179f08a53d4dc70e8fdbed Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 14:32:37 +0000 Subject: fix for some errors and local root bone override --- release/scripts/modules/rigify/__init__.py | 45 ++++++++++++++++++++++++--- release/scripts/modules/rigify/delta.py | 2 +- release/scripts/modules/rigify/finger_curl.py | 9 +++--- release/scripts/modules/rigify/palm_curl.py | 6 ++-- release/scripts/modules/rigify_utils.py | 7 +++++ 5 files changed, 57 insertions(+), 12 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 6561e346d0d..611bfd7035d 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -24,8 +24,7 @@ from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get -EMPTY_LAYER = [False] * 32 -DELIMITER = '-._' + def submodule_func_from_type(bone_type): type_pair = bone_type.split(".") @@ -39,7 +38,7 @@ def submodule_func_from_type(bone_type): # from rigify import leg submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) - + reload(submod) return submod, getattr(submod, func_name) @@ -63,6 +62,8 @@ def validate_rig(context, obj): def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): from collections import OrderedDict + import rigify_utils + reload(rigify_utils) global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False @@ -110,6 +111,12 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # value: [functions, ...] # each function is from the module. eg leg.ik, arm.main bone_typeinfos = {} + + # key: bone name + # value: [new_bone_name, ...] + # where each bone with a 'type' stores a list of bones that it created + # ...needed so we can override the root parent + bone_genesis = {} # inspect all bones and assign their definitions before modifying for pbone in obj.pose.bones: @@ -162,6 +169,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # Only blend results from the same submodule, eg. # leg.ik and arm.fk could not be blended. results = OrderedDict() + + bone_names_pre = set([bone.name for bone in arm.bones]) for submod_name, type_func in bone_typeinfos[bone_name]: # this bones definition of the current typeinfo @@ -186,15 +195,41 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): if len(result_submod) == 2: blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name) + + bone_names_post = set([bone.name for bone in arm.bones]) + + # Store which bones were created from this one + bone_genesis[bone_name] = list(bone_names_post - bone_names_pre) + + # need a reverse lookup on bone_genesis so as to know immediately + # where a bone comes from + bone_genesis_reverse = {} + for bone_name, bone_children in bone_genesis.items(): + for bone_child_name in bone_children: + bone_genesis_reverse[bone_child_name] = bone_name + + if root_bone: # assign all new parentless bones to this bpy.ops.object.mode_set(mode='EDIT') root_ebone = arm.edit_bones[root_bone] for ebone in arm.edit_bones: - if ebone.parent is None and ebone.name not in base_names: + bone_name = ebone.name + if ebone.parent is None and bone_name not in base_names: + # check for override + bone_creator = bone_genesis_reverse[bone_name] + pbone_creator = obj.pose.bones[bone_creator] + root_bone_override = pbone_creator.get("root", "") + + if root_bone_override: + root_ebone_tmp = arm.edit_bones[root_bone_override] + else: + root_ebone_tmp = root_ebone + ebone.connected = False ebone.parent = root_ebone + bpy.ops.object.mode_set(mode='OBJECT') @@ -277,9 +312,11 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): def generate_test_all(context, GRAPH=False): import rigify + import rigify_utils import graphviz_export import os reload(rigify) + reload(rigify_utils) reload(graphviz_export) new_objects = rigify.generate_test(context) diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index a081e3390f4..faedf7029f0 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -75,7 +75,7 @@ def main(obj, bone_definition, base_names): ''' Use this bone to define a delta thats applied to its child in pose mode. ''' - + return mode_orig = obj.mode bpy.ops.object.mode_set(mode='OBJECT') diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 9cba1810fc9..73d4cc5fbd8 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -19,8 +19,7 @@ # import bpy -from rigify import EMPTY_LAYER -from rigify_utils import copy_bone_simple, get_side_name, get_base_name +from rigify_utils import copy_bone_simple, get_side_name, get_base_name, EMPTY_LAYER from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -90,7 +89,9 @@ def main(obj, bone_definition, base_names): # *** EDITMODE # get assosiated data - arm, orig_pbone, orig_ebone = get_bone_data(obj, bone_definition[0]) + arm = obj.data + orig_pbone = obj.pose.bones[bone_definition[0]] + orig_ebone = arm.edit_bones[bone_definition[0]] obj.animation_data_create() # needed if its a new armature with no keys @@ -117,7 +118,7 @@ def main(obj, bone_definition, base_names): children = [pbone.name for pbone in children] # set an alternate layer for driver bones - other_layer = empty_layer[:] + other_layer = EMPTY_LAYER[:] other_layer[8] = True diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 78a3d1fb73f..cc40503703c 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -118,9 +118,9 @@ def main(obj, bone_definition, base_names): bpy.ops.object.mode_set(mode='OBJECT') - - arm, control_pbone, control_ebone = get_bone_data(obj, control_name) - arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0]) + arm = obj.data + control_pbone = obj.pose.bones[control_name] + pinky_pbone = obj.pose.bones[children[0]] control_pbone.rotation_mode = 'YZX' control_pbone.lock_rotation = False, True, True diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index 9407c4e5875..5061248c35d 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -25,6 +25,13 @@ # for rigify so in some cases seemingly generic functions make assumptions # that a generic function would need to check for. +import bpy +from Mathutils import Vector +from rna_prop_ui import rna_idprop_ui_prop_get + +DELIMITER = '-._' +EMPTY_LAYER = [False] * 32 + def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another -- cgit v1.2.3 From 959ac68914c684081e1526b4c9e6380d71cbff1f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 14:47:07 +0000 Subject: align option for split --- source/blender/editors/animation/fmodifier_ui.c | 8 ++++---- source/blender/editors/gpencil/gpencil_buttons.c | 2 +- source/blender/editors/include/UI_interface.h | 2 +- source/blender/editors/interface/interface_layout.c | 7 ++++--- source/blender/editors/interface/interface_regions.c | 2 +- source/blender/editors/interface/interface_templates.c | 4 ++-- source/blender/editors/interface/interface_utils.c | 2 +- source/blender/editors/space_image/image_buttons.c | 6 +++--- source/blender/editors/space_view3d/view3d_buttons.c | 6 +++--- source/blender/editors/space_view3d/view3d_select.c | 2 +- source/blender/makesrna/intern/rna_sequence.c | 2 +- source/blender/makesrna/intern/rna_ui_api.c | 1 + source/blender/windowmanager/intern/wm_operators.c | 2 +- source/blenderplayer/bad_level_call_stubs/stubs.c | 2 +- 14 files changed, 25 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 17d8f0a847b..ebddcd45a8b 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -276,7 +276,7 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor /* split into 2 columns * NOTE: the mode comboboxes shouldn't get labels, otherwise there isn't enough room */ - split= uiLayoutSplit(layout, 0.5f); + split= uiLayoutSplit(layout, 0.5f, 0); /* before range */ col= uiLayoutColumn(split, 1); @@ -306,7 +306,7 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short uiItemR(layout, NULL, 0, &ptr, "modification", 0); /* split into 2 columns */ - split= uiLayoutSplit(layout, 0.5f); + split= uiLayoutSplit(layout, 0.5f, 0); /* col 1 */ col= uiLayoutColumn(split, 0); @@ -588,7 +588,7 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor row= uiLayoutRow(layout, 0); /* split into 2 columns */ - split= uiLayoutSplit(layout, 0.5f); + split= uiLayoutSplit(layout, 0.5f, 0); /* x-minimum */ col= uiLayoutColumn(split, 1); @@ -606,7 +606,7 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor row= uiLayoutRow(layout, 0); /* split into 2 columns */ - split= uiLayoutSplit(layout, 0.5f); + split= uiLayoutSplit(layout, 0.5f, 0); /* x-minimum */ col= uiLayoutColumn(split, 1); diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c index 4da5ec02ddc..5deffbabb77 100644 --- a/source/blender/editors/gpencil/gpencil_buttons.c +++ b/source/blender/editors/gpencil/gpencil_buttons.c @@ -187,7 +187,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* new backdrop ----------------------------------- */ box= uiLayoutBox(layout); - split= uiLayoutSplit(box, 0.5f); + split= uiLayoutSplit(box, 0.5f, 0); /* draw settings ---------------------------------- */ diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index aed1e5d5f0d..5febaa3e5a1 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -629,7 +629,7 @@ uiLayout *uiLayoutBox(uiLayout *layout); uiLayout *uiLayoutListBox(uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, struct PointerRNA *actptr, struct PropertyRNA *actprop); uiLayout *uiLayoutAbsolute(uiLayout *layout, int align); -uiLayout *uiLayoutSplit(uiLayout *layout, float percentage); +uiLayout *uiLayoutSplit(uiLayout *layout, float percentage, int align); uiLayout *uiLayoutOverlap(uiLayout *layout); uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 168b1532db8..bfb5ab11263 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -714,7 +714,7 @@ void uiItemsEnumO(uiLayout *layout, char *opname, char *propname) if(prop && RNA_property_type(prop) == PROP_ENUM) { EnumPropertyItem *item; int totitem, i, free; - uiLayout *split= uiLayoutSplit(layout, 0); + uiLayout *split= uiLayoutSplit(layout, 0, 0); uiLayout *column= uiLayoutColumn(split, 0); RNA_property_enum_items(block->evil_C, &ptr, prop, &item, &totitem, &free); @@ -1024,7 +1024,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname) if(RNA_property_type(prop) == PROP_ENUM) { EnumPropertyItem *item; int totitem, i, free; - uiLayout *split= uiLayoutSplit(layout, 0); + uiLayout *split= uiLayoutSplit(layout, 0, 0); uiLayout *column= uiLayoutColumn(split, 0); RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free); @@ -2088,13 +2088,14 @@ uiLayout *uiLayoutOverlap(uiLayout *layout) return litem; } -uiLayout *uiLayoutSplit(uiLayout *layout, float percentage) +uiLayout *uiLayoutSplit(uiLayout *layout, float percentage, int align) { uiLayoutItemSplt *split; split= MEM_callocN(sizeof(uiLayoutItemSplt), "uiLayoutItemSplt"); split->litem.item.type= ITEM_LAYOUT_SPLIT; split->litem.root= layout->root; + split->litem.align= align; split->litem.active= 1; split->litem.enabled= 1; split->litem.context= layout->context; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 55b908a44ce..f01ae990586 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1377,7 +1377,7 @@ static void ui_block_func_MENUSTR(bContext *C, uiLayout *layout, void *arg_str) } /* create items */ - split= uiLayoutSplit(layout, 0); + split= uiLayoutSplit(layout, 0, 0); for(a=0, b=0; anitems; a++, b++) { if(block->flag & UI_BLOCK_NO_FLIP) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index f59e10ede75..0c5f03f0d0f 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1864,7 +1864,7 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe /* black/white levels */ if(levels) { - split= uiLayoutSplit(layout, 0); + 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); @@ -2098,7 +2098,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe else if(itemptr->type == &RNA_ShapeKey) { ob= (Object*)activeptr->data; - split= uiLayoutSplit(sub, 0.75f); + split= uiLayoutSplit(sub, 0.75f, 0); uiItemL(split, name, icon); diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index 7aaa6cbb42b..a8cd0e017ed 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -151,7 +151,7 @@ void uiDefAutoButsRNA(const bContext *C, uiLayout *layout, PointerRNA *ptr, int uiItemL(col, name, 0); } else if(columns == 2) { - split = uiLayoutSplit(layout, 0.5f); + split = uiLayoutSplit(layout, 0.5f, 0); uiItemL(uiLayoutColumn(split, 0), name, 0); col= uiLayoutColumn(split, 0); diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index a184ea2b2c4..bb989b35cd5 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -1024,7 +1024,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn if(ima->source != IMA_SRC_GENERATED) { uiItemS(layout); - split= uiLayoutSplit(layout, 0); + split= uiLayoutSplit(layout, 0, 0); col= uiLayoutColumn(split, 0); uiItemR(col, NULL, 0, &imaptr, "fields", 0); @@ -1040,7 +1040,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { uiItemS(layout); - split= uiLayoutSplit(layout, 0); + split= uiLayoutSplit(layout, 0, 0); col= uiLayoutColumn(split, 0); @@ -1062,7 +1062,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn uiItemR(col, NULL, 0, userptr, "cyclic", 0); } else if(ima->source==IMA_SRC_GENERATED) { - split= uiLayoutSplit(layout, 0); + split= uiLayoutSplit(layout, 0, 0); col= uiLayoutColumn(split, 1); uiItemR(col, "X", 0, &imaptr, "generated_width", 0); diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index a988ceb50e7..a21b8442c85 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -502,7 +502,7 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) { uiLayout *split, *colsub; - split = uiLayoutSplit(layout, 0.8); + split = uiLayoutSplit(layout, 0.8, 0); if (ptr->type == &RNA_PoseBone) { PointerRNA boneptr; @@ -518,7 +518,7 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) uiItemL(colsub, "", 0); uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_location", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); - split = uiLayoutSplit(layout, 0.8); + split = uiLayoutSplit(layout, 0.8, 0); switch(RNA_enum_get(ptr, "rotation_mode")) { case ROT_MODE_QUAT: /* quaternion */ @@ -553,7 +553,7 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) } uiItemR(layout, "", 0, ptr, "rotation_mode", 0); - split = uiLayoutSplit(layout, 0.8); + split = uiLayoutSplit(layout, 0.8, 0); colsub = uiLayoutColumn(split, 1); uiItemR(colsub, "Scale", 0, ptr, "scale", 0); colsub = uiLayoutColumn(split, 1); diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 54038853775..e7ebcbdb849 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -908,7 +908,7 @@ static Base *mouse_select_menu(bContext *C, ViewContext *vc, unsigned int *buffe /* UI */ uiPopupMenu *pup= uiPupMenuBegin(C, "Select Object", 0); uiLayout *layout= uiPupMenuLayout(pup); - uiLayout *split= uiLayoutSplit(layout, 0); + uiLayout *split= uiLayoutSplit(layout, 0, 0); uiLayout *column= uiLayoutColumn(split, 0); LinkNode *node; diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 136dfe0b9b7..52ce9bd721d 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -1155,7 +1155,7 @@ static void rna_def_solid_color(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - + srna = RNA_def_struct(brna, "ColorSequence", "EffectSequence"); RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single color."); RNA_def_struct_sdna_from(srna, "SolidColorVars", "effectdata"); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 5880e1d7ae6..0955ec1c581 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -145,6 +145,7 @@ void RNA_api_ui_layout(StructRNA *srna) parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in."); RNA_def_function_return(func, parm); RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f); + RNA_def_boolean(func, "align", 0, "", "Align buttons to each other."); /* items */ func= RNA_def_function(srna, "prop", "rna_uiItemR"); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 8c819c1e3a0..818dcd98afd 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -922,7 +922,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); - split = uiLayoutSplit(layout, 0); + split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); uiItemL(col, "Links", 0); uiItemO(col, NULL, ICON_URL, "HELP_OT_release_logs"); diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 9abd518ff6e..ede1b865970 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -167,7 +167,7 @@ struct uiLayout *uiLayoutRow(struct uiLayout *layout, int align){return (struct struct uiLayout *uiLayoutColumn(struct uiLayout *layout, int align){return (struct uiLayout *) NULL;} struct uiLayout *uiLayoutColumnFlow(struct uiLayout *layout, int number, int align){return (struct uiLayout *) NULL;} struct uiLayout *uiLayoutBox(struct uiLayout *layout){return (struct uiLayout *) NULL;} -struct uiLayout *uiLayoutSplit(struct uiLayout *layout, float percentage){return (struct uiLayout *) NULL;} +struct uiLayout *uiLayoutSplit(struct uiLayout *layout, float percentage, int align){return (struct uiLayout *) NULL;} void uiItemsEnumR(struct uiLayout *layout, struct PointerRNA *ptr, char *propname){} void uiItemMenuEnumR(struct uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname){} void uiItemEnumR_string(struct uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value){} -- cgit v1.2.3 From 0cc5d50d9183ca3915ae6d0fd423127d7fc43df4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 16:52:44 +0000 Subject: operator report function so python operators can report errors TODO - reports are currently shown upside down. --- source/blender/makesdna/DNA_windowmanager_types.h | 2 +- source/blender/makesrna/RNA_enum_types.h | 2 ++ source/blender/makesrna/intern/rna_wm.c | 15 +++++++++++++++ source/blender/makesrna/intern/rna_wm_api.c | 17 +++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 714dc853419..678cc85ee0f 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -60,7 +60,7 @@ struct uiLayout; #define OP_MAX_TYPENAME 64 #define KMAP_MAX_NAME 64 - +/* keep in sync with 'wm_report_items' in wm_rna.c */ typedef enum ReportType { RPT_DEBUG = 1<<0, RPT_INFO = 1<<1, diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index 479397a2180..55ebf014b64 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -72,6 +72,8 @@ extern EnumPropertyItem space_type_items[]; extern EnumPropertyItem keymap_propvalue_items[]; +extern EnumPropertyItem wm_report_items[]; + struct bContext; struct PointerRNA; EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 6459e5d7c48..b0d8e372cb0 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -251,6 +251,18 @@ EnumPropertyItem operator_return_items[] = { {OPERATOR_PASS_THROUGH, "PASS_THROUGH", 0, "Pass Through", ""}, // used as a flag {0, NULL, 0, NULL, NULL}}; +/* flag/enum */ +EnumPropertyItem wm_report_items[] = { + {RPT_DEBUG, "DEBUG", 0, "Debug", ""}, + {RPT_INFO, "INFO", 0, "Info", ""}, + {RPT_OPERATOR, "OPERATOR", 0, "Operator", ""}, + {RPT_WARNING, "WARNING", 0, "Warning", ""}, + {RPT_ERROR, "ERROR", 0, "Error", ""}, + {RPT_ERROR_INVALID_INPUT, "ERROR_INVALID_INPUT", 0, "Invalid Input", ""},\ + {RPT_ERROR_INVALID_CONTEXT, "ERROR_INVALID_CONTEXT", 0, "Invalid Context", ""}, + {RPT_ERROR_OUT_OF_MEMORY, "ERROR_OUT_OF_MEMORY", 0, "Out of Memory", ""}, + {0, NULL, 0, NULL, NULL}}; + #define KMI_TYPE_KEYBOARD 0 #define KMI_TYPE_MOUSE 1 #define KMI_TYPE_TWEAK 2 @@ -601,10 +613,13 @@ static void rna_def_operator(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Properties", ""); RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL); + RNA_api_operator(srna); + srna= RNA_def_struct(brna, "OperatorProperties", NULL); RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator."); RNA_def_struct_refine_func(srna, "rna_OperatorProperties_refine"); RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties"); + } static void rna_def_macro_operator(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 2fbcd2f4ae3..47d15c87596 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -134,6 +134,11 @@ static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char return WM_keymap_add_item(km, idname, type, value, modifier, keymodifier); } +static void rna_Operator_report(wmOperator *op, int type, char *msg) +{ + BKE_report(op->reports, type, msg); +} + #else void RNA_api_wm(StructRNA *srna) @@ -177,6 +182,18 @@ void RNA_api_wm(StructRNA *srna) parm= RNA_def_int(func, "height", 20, 0, INT_MAX, "", "Height of the popup.", 0, INT_MAX); } +void RNA_api_operator(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "report", "rna_Operator_report"); + parm= RNA_def_enum(func, "type", wm_report_items, 0, "Type", ""); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_ENUM_FLAG); + parm= RNA_def_string(func, "message", "", 0, "Report Message", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + void RNA_api_keyconfig(StructRNA *srna) { FunctionRNA *func; -- cgit v1.2.3 From e7bd63c128975b75afa02a31b4b4e962f8d7d2fd Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 10 Dec 2009 17:37:04 +0000 Subject: Sculpt Branch: * Multires 2.50 -> Branch compatibility code converting to the new displacement format. 2.49 -> 2.50 is not functional yet. --- source/blender/blenkernel/BKE_blender.h | 2 +- source/blender/blenkernel/BKE_multires.h | 5 +- source/blender/blenkernel/intern/multires.c | 171 +++++++++++++++++++++--- source/blender/blenloader/intern/readfile.c | 84 ++++-------- source/blender/editors/object/object_modifier.c | 6 + 5 files changed, 184 insertions(+), 84 deletions(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 7bbcb63a7f5..08503a3d00c 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,7 +43,7 @@ struct bContext; struct ReportList; #define BLENDER_VERSION 250 -#define BLENDER_SUBVERSION 8 +#define BLENDER_SUBVERSION 9 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index ff320bc7d25..2f372f80957 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -54,8 +54,9 @@ int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *ds void multires_stitch_grids(struct Object *); /* Related to the old multires */ -void multires_load_old(struct DerivedMesh *, struct Multires *); -void multires_free(struct Multires*); +void multires_free(struct Multires *mr); +void multires_load_old(struct Object *ob, struct Mesh *me); +void multires_load_old_250(struct Mesh *); #endif diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 20ba360a231..bf02bd89f72 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -614,12 +614,16 @@ static void multiresModifier_update(DerivedMesh *dm) } } +static void multires_dm_mark_as_modified(struct DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; + ccgdm->multires.modified = 1; +} + void multires_mark_as_modified(struct Object *ob) { - if(ob && ob->derivedFinal) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)ob->derivedFinal; - ccgdm->multires.modified = 1; - } + if(ob && ob->derivedFinal) + multires_dm_mark_as_modified(ob->derivedFinal); } void multires_force_update(Object *ob) @@ -702,35 +706,99 @@ struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, i /**** Old Multires code **** ***************************/ -#if 0 -static void mdisp_copy_grid(float (*new)[3], int newstride, float (*old)[3], int oldstride, int xoff, int yoff, int xsize, int ysize) +/* Adapted from sculptmode.c */ +static void old_mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v) { - int x, y; + int x, y, x2, y2; + const int st_max = st - 1; + float urat, vrat, uopp; + float d[4][3], d2[2][3]; + + if(u < 0) + u = 0; + else if(u >= st) + u = st_max; + if(v < 0) + v = 0; + else if(v >= st) + v = st_max; + + x = floor(u); + y = floor(v); + x2 = x + 1; + y2 = y + 1; + + if(x2 >= st) x2 = st_max; + if(y2 >= st) y2 = st_max; + + urat = u - x; + vrat = v - y; + uopp = 1 - urat; - for(y = 0; y < ysize; ++y) - for(x = 0; x < xsize; ++x) - copy_v3_v3(disps[x + y*side], mdisp->disps[(x + xoffs) + (y + yoffs)*oldside]); + mul_v3_v3fl(d[0], disps[y * st + x], uopp); + mul_v3_v3fl(d[1], disps[y * st + x2], urat); + mul_v3_v3fl(d[2], disps[y2 * st + x], uopp); + mul_v3_v3fl(d[3], disps[y2 * st + x2], urat); + add_v3_v3v3(d2[0], d[0], d[1]); + add_v3_v3v3(d2[1], d[2], d[3]); + mul_v3_fl(d2[0], 1 - vrat); + mul_v3_fl(d2[1], vrat); + + add_v3_v3v3(out, d2[0], d2[1]); } -static void mdisps_convert(MFace *mface, MDisps *mdisp, int lvl) +static void old_mdisps_rotate(int S, int newside, int oldside, int x, int y, float *u, float *v) { - int side = multires_side_tot[lvl]; + float offset = oldside*0.5f - 0.5f; + + if(S == 1) { *u= offset + x; *v = offset - y; } + if(S == 2) { *u= offset + y; *v = offset + x; } + if(S == 3) { *u= offset - x; *v = offset + y; } + if(S == 0) { *u= offset - y; *v = offset - x; } +} + +static void old_mdisps_convert(MFace *mface, MDisps *mdisp) +{ + int newlvl = log(sqrt(mdisp->totdisp)-1)/log(2); + int oldlvl = newlvl+1; + int oldside = multires_side_tot[oldlvl]; + int newside = multires_side_tot[newlvl]; int nvert = (mface->v4)? 4: 3; - int totdisp = multires_grid_tot[lvl]*nvert; - int x, y; - float (*disps)[3]; + int newtotdisp = multires_grid_tot[newlvl]*nvert; + int x, y, S; + float (*disps)[3], (*out)[3], u, v; + + disps = MEM_callocN(sizeof(float) * 3 * newtotdisp, "multires disps"); + + out = disps; + for(S = 0; S < nvert; S++) { + for(y = 0; y < newside; ++y) { + for(x = 0; x < newside; ++x, ++out) { + old_mdisps_rotate(S, newside, oldside, x, y, &u, &v); + old_mdisps_bilinear(*out, mdisp->disps, oldside, u, v); + } + } + } - disps = MEM_callocN(sizeof(float) * 3 * totdisp, "multires disps"); + MEM_freeN(mdisp->disps); + mdisp->totdisp= newtotdisp; + mdisp->disps= disps; +} +void multires_load_old_250(Mesh *me) +{ + MDisps *mdisps; + int a; -static const int multires_max_levels = 13; -static const int multires_grid_tot[] = {1, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; -static const int multires_side_tot[] = {1, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; + mdisps= CustomData_get_layer(&me->fdata, CD_MDISPS); + if(mdisps) { + for(a=0; atotface; a++) + old_mdisps_convert(&me->mface[a], &mdisps[a]); + } } -#endif /* Does not actually free lvl itself */ static void multires_free_level(MultiresLevel *lvl) @@ -770,6 +838,7 @@ void multires_free(Multires *mr) } } +#if 0 static void create_old_vert_face_map(ListBase **map, IndexNode **mem, const MultiresFace *mface, const int totvert, const int totface) { @@ -893,12 +962,11 @@ static void multires_load_old_faces(ListBase **fmap, ListBase **emap, MultiresLe } /* Loads a multires object stored in the old Multires struct into the new format */ -void multires_load_old(DerivedMesh *dm, Multires *mr) +static void multires_load_old_dm(DerivedMesh *dm, Multires *mr, int totlvl) { MultiresLevel *lvl, *lvl1; MVert *vsrc, *vdst; int src, dst; - int totlvl = 2; // XXX MultiresDM_get_totlvl(dm); int st = multires_side_tot[totlvl - 1] - 1; int extedgelen = multires_side_tot[totlvl] - 2; int *vvmap; // inorder for dst, map to src @@ -1056,4 +1124,63 @@ void multires_load_old(DerivedMesh *dm, Multires *mr) MEM_freeN(vvmap); } +#endif + +void multires_load_old(Object *ob, Mesh *me) +{ + /* XXX not implemented */ +#if 0 + MultiresLevel *lvl; + ModifierData *md; + MultiresModifierData *mmd; + DerivedMesh *dm, *orig; + int i; + + /* Load original level into the mesh */ + lvl = me->mr->levels.first; + CustomData_free_layers(&me->vdata, CD_MVERT, lvl->totvert); + CustomData_free_layers(&me->edata, CD_MEDGE, lvl->totedge); + CustomData_free_layers(&me->fdata, CD_MFACE, lvl->totface); + me->totvert = lvl->totvert; + me->totedge = lvl->totedge; + me->totface = lvl->totface; + me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert); + me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, me->totedge); + me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, me->totface); + memcpy(me->mvert, me->mr->verts, sizeof(MVert) * me->totvert); + for(i = 0; i < me->totedge; ++i) { + me->medge[i].v1 = lvl->edges[i].v[0]; + me->medge[i].v2 = lvl->edges[i].v[1]; + } + for(i = 0; i < me->totface; ++i) { + me->mface[i].v1 = lvl->faces[i].v[0]; + me->mface[i].v2 = lvl->faces[i].v[1]; + me->mface[i].v3 = lvl->faces[i].v[2]; + me->mface[i].v4 = lvl->faces[i].v[3]; + } + + /* Add a multires modifier to the object */ + md = ob->modifiers.first; + while(md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) + md = md->next; + mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires); + BLI_insertlinkbefore(&ob->modifiers, md, mmd); + + for(i = 0; i < me->mr->level_count - 1; ++i) + multiresModifier_subdivide(mmd, ob, 1, 0); + + mmd->lvl = mmd->totlvl; + orig = CDDM_from_mesh(me, NULL); + dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0, 0); + + multires_load_old_dm(dm, me->mr, mmd->totlvl); + + multires_dm_mark_as_modified(dm); + dm->release(dm); + orig->release(orig); +#endif + + /* Remove the old multires */ + multires_free(me->mr); +} diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 3ab557fe058..039f8c60201 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9633,7 +9633,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ToolSettings *ts; //PTCacheID *pid; //ListBase pidlist; - int /*i, */a; + int a; for(ob = main->object.first; ob; ob = ob->id.next) { //BKE_ptcache_ids_from_object(&pidlist, ob); @@ -9650,62 +9650,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) void *olddata = ob->data; ob->data = me; - if(me && me->id.lib==NULL && me->mr) { /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */ - // XXX -#if 0 - MultiresLevel *lvl; - ModifierData *md; - MultiresModifierData *mmd; - DerivedMesh *dm, *orig; - - /* Load original level into the mesh */ - lvl = me->mr->levels.first; - CustomData_free_layers(&me->vdata, CD_MVERT, lvl->totvert); - CustomData_free_layers(&me->edata, CD_MEDGE, lvl->totedge); - CustomData_free_layers(&me->fdata, CD_MFACE, lvl->totface); - me->totvert = lvl->totvert; - me->totedge = lvl->totedge; - me->totface = lvl->totface; - me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert); - me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, me->totedge); - me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, me->totface); - memcpy(me->mvert, me->mr->verts, sizeof(MVert) * me->totvert); - for(i = 0; i < me->totedge; ++i) { - me->medge[i].v1 = lvl->edges[i].v[0]; - me->medge[i].v2 = lvl->edges[i].v[1]; - } - for(i = 0; i < me->totface; ++i) { - me->mface[i].v1 = lvl->faces[i].v[0]; - me->mface[i].v2 = lvl->faces[i].v[1]; - me->mface[i].v3 = lvl->faces[i].v[2]; - me->mface[i].v4 = lvl->faces[i].v[3]; - } - - /* Add a multires modifier to the object */ - md = ob->modifiers.first; - while(md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) - md = md->next; - mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires); - BLI_insertlinkbefore(&ob->modifiers, md, mmd); - - for(i = 0; i < me->mr->level_count - 1; ++i) - multiresModifier_subdivide(mmd, ob, 1, 0); - - mmd->lvl = mmd->totlvl; - orig = CDDM_from_mesh(me, NULL); - dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0, 0); - - multires_load_old(dm, me->mr); - - MultiresDM_mark_as_modified(dm); - dm->release(dm); - orig->release(orig); - - /* Remove the old multires */ - multires_free(me->mr); -#endif - me->mr = NULL; - } + if(me && me->id.lib==NULL && me->mr) /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */ + multires_load_old(ob, me); ob->data = olddata; } @@ -10177,13 +10123,33 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - /* put 2.50 compatibility code here until next subversion bump */ + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 9)) { - Scene *sce= main->scene.first; + Scene *sce; + Mesh *me; + Object *ob; for(sce=main->scene.first; sce; sce=sce->id.next) if(!sce->toolsettings->particle.selectmode) sce->toolsettings->particle.selectmode= SCE_SELECT_PATH; + + for(me=main->mesh.first; me; me=me->id.next) + multires_load_old_250(me); + + for(ob=main->object.first; ob; ob=ob->id.next) { + MultiresModifierData *mmd = (MultiresModifierData *)modifiers_findByType(ob, eModifierType_Multires); + + if(mmd) { + mmd->totlvl--; + mmd->lvl--; + mmd->sculptlvl= mmd->lvl; + mmd->renderlvl= mmd->lvl; + } + } + } + + /* put 2.50 compatibility code here until next subversion bump */ + { } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index a0fa0efec0a..a1e70c011fe 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -188,6 +188,12 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod else if(md->type == eModifierType_Smoke) { ob->dt = OB_TEXTURE; } + else if(md->type == eModifierType_Multires) { + Mesh *me= ob->data; + + CustomData_external_remove(&me->fdata, &me->id, CD_MDISPS, me->totface); + CustomData_free_layer_active(&me->fdata, CD_MDISPS, me->totface); + } BLI_remlink(&ob->modifiers, md); modifier_free(md); -- cgit v1.2.3 From 0779f2c42599dd665730902cd669741070bdb46b Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 17:41:03 +0000 Subject: Double Click event value. Timeout between both clicks is user configurable, should be taken from the OS when possible. --- release/scripts/ui/space_userpref.py | 6 ++++++ source/blender/editors/interface/resources.c | 3 +++ source/blender/makesdna/DNA_userdef_types.h | 4 +++- source/blender/makesdna/DNA_windowmanager_types.h | 2 ++ source/blender/makesrna/intern/rna_userdef.c | 5 +++++ source/blender/makesrna/intern/rna_wm.c | 10 ++++++++++ source/blender/windowmanager/WM_types.h | 1 + .../blender/windowmanager/intern/wm_event_system.c | 21 ++++++++++++++++++++- 8 files changed, 50 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index fda6fe67c1e..1ec01c31eca 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1186,6 +1186,12 @@ class USERPREF_PT_input(bpy.types.Panel): sub.prop(inputs, "ndof_pan_speed", text="Pan Speed") sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") + col.separator() + + sub = col.column() + sub.label(text="Double Click:") + sub.prop(inputs, "double_click_time", text="Speed") + row.separator() # Keymap Settings diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 1df76f312b3..809b3387f28 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1280,6 +1280,9 @@ void init_userdef_do_versions(void) if (U.frameserverport == 0) { U.frameserverport = 8080; } + if (U.dbl_click_time == 0) { + U.dbl_click_time = 350; + } /* funny name, but it is GE stuff, moves userdef stuff to engine */ // XXX space_set_commmandline_options(); diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 6e610b1c32d..82e6cebe71e 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -288,7 +288,9 @@ typedef struct UserDef { char sounddir[160]; /* yafray: temporary xml export directory */ char yfexportdir[160]; - short versions, pad; + short versions; + + short dbl_click_time; int gameflags; int wheellinescroll; diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 678cc85ee0f..9d944ca0d4b 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -158,6 +158,7 @@ typedef struct wmWindow { short last_type; /* last event information, used for click */ short last_val; + double last_click_time; /* for double click */ struct wmEvent *eventstate; /* storage for event system */ @@ -291,6 +292,7 @@ typedef struct wmKeyMap { /* wmKeyMap.flag */ #define KEYMAP_MODAL 1 /* modal map, not using operatornames */ #define KEYMAP_USER 2 /* user created keymap */ +#define KEYMAP_EXPANDED 4 typedef struct wmKeyConfig { struct wmKeyConfig *next, *prev; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 2424a72b6a3..f695936d47c 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2338,6 +2338,11 @@ static void rna_def_userdef_input(BlenderRNA *brna) RNA_def_property_range(prop, 0, 200); RNA_def_property_ui_text(prop, "NDof Rotation Speed", "The overall rotation speed of an NDOF device, as percent of standard."); + prop= RNA_def_property(srna, "double_click_time", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "dbl_click_time"); + RNA_def_property_range(prop, 1, 1000); + RNA_def_property_ui_text(prop, "Double Click Timeout", "The time (in ms) for a double click."); + prop= RNA_def_property(srna, "emulate_3_button_mouse", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE); RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set"); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index b0d8e372cb0..5cf9c245b05 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -43,6 +43,7 @@ EnumPropertyItem event_keymouse_value_items[] = { {KM_PRESS, "PRESS", 0, "Press", ""}, {KM_RELEASE, "RELEASE", 0, "Release", ""}, {KM_CLICK, "CLICK", 0, "Click", ""}, + {KM_DBL_CLICK, "DOUBLE_CLICK", 0, "Double Click", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem event_tweak_value_items[]= { @@ -871,16 +872,19 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "idname"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Name", "Name of the key map."); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "space_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "spaceid"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_enum_items(prop, space_type_items); RNA_def_property_ui_text(prop, "Space Type", "Optional space type keymap is associated with."); prop= RNA_def_property(srna, "region_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "regionid"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_enum_items(prop, region_type_items); RNA_def_property_ui_text(prop, "Region Type", "Optional region type keymap is associated with."); @@ -894,8 +898,14 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "modal", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_MODAL); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Modal Keymap", "Indicates that a keymap is used for translate modal events for an operator."); + prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_EXPANDED); + RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface."); + + RNA_api_keymap(srna); /* KeyMapItem */ diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index a884d7b6831..160f9cccf6c 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -83,6 +83,7 @@ enum { #define KM_PRESS 1 #define KM_RELEASE 2 #define KM_CLICK 3 +#define KM_DBL_CLICK 4 /* ************** UI Handler ***************** */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index ce3acece776..9aad7da7a58 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -60,6 +60,8 @@ #include "UI_interface.h" +#include "PIL_time.h" + #include "WM_api.h" #include "WM_types.h" #include "wm.h" @@ -1163,6 +1165,12 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) event->val = KM_CLICK; action |= wm_handlers_do(C, event, handlers); + /* if not handled and time is right, check double click */ + if ((action & WM_HANDLER_BREAK) == 0 && (PIL_check_seconds_timer() - win->last_click_time) * 1000 < U.dbl_click_time) { + event->val = KM_DBL_CLICK; + action |= wm_handlers_do(C, event, handlers); + } + /* revert value if not handled */ if ((action & WM_HANDLER_BREAK) == 0) { event->val = KM_RELEASE; @@ -1354,11 +1362,22 @@ void wm_event_do_handlers(bContext *C) /* mousemove event don't overwrite last type */ if (event->type != MOUSEMOVE) { if (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) { - win->last_type = event->type; + if (win->last_type == event->type) { + /* set click time on first click (press -> release) */ + if (win->last_val == KM_PRESS && event->val == KM_RELEASE) { + win->last_click_time = PIL_check_seconds_timer(); + } + } else { + /* reset click time if event type not the same */ + win->last_click_time = 0; + } + win->last_val = event->val; + win->last_type = event->type; } else { win->last_type = -1; win->last_val = 0; + win->last_click_time = 0; } } -- cgit v1.2.3 From 2576268fb85071f2e3ba80142ddb01e733c07e08 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 18:28:22 +0000 Subject: missed a header last commit, added custom exceptions to rigify so they can be caught and converted into reports and have normal errors display the stack trace as useual. --- release/scripts/modules/rigify/__init__.py | 8 +++++++- release/scripts/modules/rigify/arm_biped_generic.py | 5 +++-- release/scripts/modules/rigify/delta.py | 3 ++- release/scripts/modules/rigify/finger_curl.py | 5 +++-- release/scripts/modules/rigify/leg_biped_generic.py | 11 ++++++----- release/scripts/modules/rigify/neck_flex.py | 3 ++- release/scripts/modules/rigify/spine_pivot_flex.py | 4 ++-- source/blender/editors/interface/interface_regions.c | 1 + source/blender/makesrna/intern/rna_internal.h | 1 + 9 files changed, 27 insertions(+), 14 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 611bfd7035d..ff0c1421f55 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -24,7 +24,13 @@ from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get - +class RigifyError(Exception): + """Exception raised for errors in the metarig. + """ + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) def submodule_func_from_type(bone_type): type_pair = bone_type.split(".") diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index af6c4880954..dfae94875b7 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -19,6 +19,7 @@ # import bpy +from rigify import RigifyError from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from Mathutils import Vector @@ -68,7 +69,7 @@ def metarig_definition(obj, orig_bone_name): mt.shoulder_p = mt.arm_p.parent if not mt.shoulder_p: - raise Exception("could not find '%s' parent, skipping:" % orig_bone_name) + raise RigifyError("could not find '%s' parent, skipping:" % orig_bone_name) mt.shoulder = mt.shoulder_p.name @@ -80,7 +81,7 @@ def metarig_definition(obj, orig_bone_name): hands.append(pbone) if len(hands) != 1: - raise Exception("Found %s possible hands attached to this arm, expected 1 from bone: %s" % ([pbone.name for pbone in hands], orig_bone_name)) + raise RigifyError("Found %s possible hands attached to this arm, expected 1 from bone: %s" % ([pbone.name for pbone in hands], orig_bone_name)) # first add the 2 new bones mt.hand_p = hands[0] diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index faedf7029f0..a83b45307dd 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -19,6 +19,7 @@ # import bpy +from rigify import RigifyError # not used, defined for completeness METARIG_NAMES = tuple() @@ -64,7 +65,7 @@ def metarig_definition(obj, orig_bone_name): children = delta.children if len(children) != 1: - raise Exception("only 1 child supported for delta on bone '%s'" % delta.name) + raise RigifyError("only 1 child supported for delta on bone '%s'" % delta.name) bone_definition = [delta.name, children[0].name] diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 73d4cc5fbd8..15bdd803500 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -19,6 +19,7 @@ # import bpy +from rigify import RigifyError from rigify_utils import copy_bone_simple, get_side_name, get_base_name, EMPTY_LAYER from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -73,13 +74,13 @@ def metarig_definition(obj, orig_bone_name): children = bone.children if len(children) != 1: - raise Exception("expected the chain to have 2 children from bone '%s' without a fork" % orig_bone_name) + raise RigifyError("expected the chain to have 2 children from bone '%s' without a fork" % orig_bone_name) bone = children[0] bone_definition.append(bone.name) # finger_02, finger_03 chain += 1 if len(bone_definition) != len(METARIG_NAMES): - raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + raise RigifyError("internal problem, expected %d bones" % len(METARIG_NAMES)) return bone_definition diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index c6fb57dd6f5..d08d0e99f43 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -19,6 +19,7 @@ # import bpy +from rigify import RigifyError from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -85,7 +86,7 @@ def metarig_definition(obj, orig_bone_name): orig_bone_parent = orig_bone.parent if orig_bone_parent is None: - raise Exception("expected the thigh bone to have a parent hip bone") + raise RigifyError("expected the thigh bone to have a parent hip bone") bone_definition.append(orig_bone_parent.name) bone_definition.append(orig_bone.name) @@ -97,7 +98,7 @@ def metarig_definition(obj, orig_bone_name): children = bone.children if len(children) != 1: - raise Exception("expected the thigh bone to have 3 children without a fork") + raise RigifyError("expected the thigh bone to have 3 children without a fork") bone = children[0] bone_definition.append(bone.name) # shin, foot chain += 1 @@ -105,10 +106,10 @@ def metarig_definition(obj, orig_bone_name): children = bone.children # Now there must be 2 children, only one connected if len(children) != 2: - raise Exception("expected the foot bone:'%s' to have 2 children" % bone.name ) + raise RigifyError("expected the foot bone:'%s' to have 2 children" % bone.name ) if children[0].connected == children[1].connected: - raise Exception("expected one bone to be connected") + raise RigifyError("expected one bone to be connected") toe, heel = children if heel.connected: @@ -119,7 +120,7 @@ def metarig_definition(obj, orig_bone_name): bone_definition.append(heel.name) if len(bone_definition) != len(METARIG_NAMES): - raise Exception("internal problem, expected %d bones" % len(METARIG_NAMES)) + raise RigifyError("internal problem, expected %d bones" % len(METARIG_NAMES)) return bone_definition diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 68015b3ebd3..31763518f09 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -19,6 +19,7 @@ # import bpy +from rigify import RigifyError from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -91,7 +92,7 @@ def metarig_definition(obj, orig_bone_name): children = head.children if len(children) != 1: - print("expected the head to have only 1 child.") + raise RigifyError("expected the head bone '%s' to have only 1 child." % orig_bone_name) child = children[0] bone_definition = [body.name, head.name, child.name] diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 37a350bb3be..f9a5aceb4d6 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -104,11 +104,11 @@ def metarig_definition(obj, orig_bone_name): pelvis = ribcage.parent if pelvis is None: - raise Exception("expected the ribcage bone:'%s' to have a parent (ribcage)." % ribcage.name) + raise RigifyError("expected the ribcage bone:'%s' to have a parent (ribcage)." % ribcage.name) children = ribcage.children if len(children) != 1: - raise Exception("expected the ribcage to have only 1 child.") + raise RigifyError("expected the ribcage to have only 1 child.") child = children[0] diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index f01ae990586..8ebfed21dcc 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -2288,6 +2288,7 @@ uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut /* 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 */ diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index df1dd249dd1..6f4233b9337 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -207,6 +207,7 @@ void RNA_api_action(StructRNA *srna); void RNA_api_armature_edit_bone(StructRNA *srna); void RNA_api_drivers(StructRNA *srna); void RNA_api_image(struct StructRNA *srna); +void RNA_api_operator(struct StructRNA *srna); void RNA_api_keyconfig(struct StructRNA *srna); void RNA_api_keyingset(struct StructRNA *srna); void RNA_api_keymap(struct StructRNA *srna); -- cgit v1.2.3 From 8f2db59253c5449824641cb3442b045b9d6d970b Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 18:56:21 +0000 Subject: Netrender: categories and balancing by categories based on usage. Enables grouping of jobs in a single priority group. Jobs in the same category are still ordered by cluster usage. --- release/scripts/io/netrender/balancing.py | 10 ++++++++++ release/scripts/io/netrender/client.py | 1 + release/scripts/io/netrender/master.py | 20 ++++++++------------ release/scripts/io/netrender/master_html.py | 2 ++ release/scripts/io/netrender/model.py | 21 +++++++++++++++++---- release/scripts/io/netrender/ui.py | 7 +++++++ 6 files changed, 45 insertions(+), 16 deletions(-) diff --git a/release/scripts/io/netrender/balancing.py b/release/scripts/io/netrender/balancing.py index f093815d8a8..aa0ffcd3f67 100644 --- a/release/scripts/io/netrender/balancing.py +++ b/release/scripts/io/netrender/balancing.py @@ -84,6 +84,16 @@ class RatingUsage(RatingRule): # less usage is better return job.usage / job.priority +class RatingUsageByCategory(RatingRule): + def __init__(self, get_jobs): + self.getJobs = get_jobs + def rate(self, job): + total_category_usage = sum([j.usage for j in self.getJobs() if j.category == job.category]) + maximum_priority = max([j.priority for j in self.getJobs() if j.category == job.category]) + + # less usage is better + return total_category_usage / maximum_priority + class NewJobPriority(PriorityRule): def __init__(self, limit = 1): self.limit = limit diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index f39beadfe57..829d75b6c67 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -150,6 +150,7 @@ def clientSendJob(conn, scene, anim = False): # print(job.files) job.name = job_name + job.category = netsettings.job_category for slave in netrender.blacklist: job.blacklist.append(slave.id) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 7abca023e50..504430a7e0c 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -60,17 +60,9 @@ class MRenderSlave(netrender.model.RenderSlave): self.job = None class MRenderJob(netrender.model.RenderJob): - def __init__(self, job_id, job_type, name, files, chunks = 1, priority = 1, blacklist = []): - super().__init__() + def __init__(self, job_id, job_info): + super().__init__(job_info) self.id = job_id - self.type = job_type - self.name = name - self.files = files - self.frames = [] - self.chunks = chunks - self.priority = priority - self.usage = 0.0 - self.blacklist = blacklist self.last_dispatched = time.time() # force one chunk for process jobs @@ -80,7 +72,7 @@ class MRenderJob(netrender.model.RenderJob): # special server properties self.last_update = 0 self.save_path = "" - self.files_map = {path: MRenderFile(path, start, end) for path, start, end in files} + self.files_map = {path: MRenderFile(path, start, end) for path, start, end in job_info.files} self.status = JOB_WAITING def save(self): @@ -393,7 +385,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): job_id = self.server.nextJobID() - job = MRenderJob(job_id, job_info.type, job_info.name, job_info.files, chunks = job_info.chunks, priority = job_info.priority, blacklist = job_info.blacklist) + job = MRenderJob(job_id, job_info) for frame in job_info.frames: frame = job.addFrame(frame.number, frame.command) @@ -635,6 +627,7 @@ class RenderMasterServer(http.server.HTTPServer): self.slave_timeout = 2 self.balancer = netrender.balancing.Balancer() + self.balancer.addRule(netrender.balancing.RatingUsageByCategory(self.getJobs)) self.balancer.addRule(netrender.balancing.RatingUsage()) self.balancer.addException(netrender.balancing.ExcludeQueuedEmptyJob()) self.balancer.addException(netrender.balancing.ExcludeSlavesLimit(self.countJobs, self.countSlaves, limit = 0.9)) @@ -707,6 +700,9 @@ class RenderMasterServer(http.server.HTTPServer): def balance(self): self.balancer.balance(self.jobs) + def getJobs(self): + return self.jobs + def countJobs(self, status = JOB_QUEUED): total = 0 for j in self.jobs: diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 2fc6cd66f93..c94d1e2f72d 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -71,6 +71,7 @@ def get(handler): startTable() headerTable( "name", + "category", "priority", "usage", "wait", @@ -88,6 +89,7 @@ def get(handler): results = job.framesStatus() rowTable( link(job.name, "/html/job" + job.id), + job.category, job.priority, "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), diff --git a/release/scripts/io/netrender/model.py b/release/scripts/io/netrender/model.py index cf13fe1e1fa..7d0fff5a83a 100644 --- a/release/scripts/io/netrender/model.py +++ b/release/scripts/io/netrender/model.py @@ -99,18 +99,29 @@ JOB_TYPES = { } class RenderJob: - def __init__(self): + def __init__(self, job_info = None): self.id = "" self.type = JOB_BLENDER self.name = "" + self.category = "None" self.files = [] - self.frames = [] self.chunks = 0 self.priority = 0 - self.usage = 0.0 self.blacklist = [] + + self.usage = 0.0 self.last_dispatched = 0.0 - + self.frames = [] + + if job_info: + self.type = job_info.type + self.name = job_info.name + self.category = job_info.category + self.files = job_info.files + self.chunks = job_info.chunks + self.priority = job_info.priority + self.blacklist = job_info.blacklist + def addFile(self, file_path, start=-1, end=-1): self.files.append((file_path, start, end)) @@ -167,6 +178,7 @@ class RenderJob: "id": self.id, "type": self.type, "name": self.name, + "category": self.category, "files": [f for f in self.files if f[1] == -1 or not frames or (f[1] <= max_frame and f[2] >= min_frame)], "frames": [f.serialize() for f in self.frames if not frames or f in frames], "chunks": self.chunks, @@ -185,6 +197,7 @@ class RenderJob: job.id = data["id"] job.type = data["type"] job.name = data["name"] + job.category = data["category"] job.files = data["files"] job.frames = [RenderFrame.materialize(f) for f in data["frames"]] job.chunks = data["chunks"] diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 7dfdd20f6f5..fd9ce0fcc32 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -97,6 +97,7 @@ class RENDER_PT_network_job(RenderButtonsPanel): col.operator("render.netclientsend", icon='FILE_BLEND') col.operator("render.netclientweb", icon='QUESTION') col.prop(scene.network_render, "job_name") + col.prop(scene.network_render, "job_category") row = col.row() row.prop(scene.network_render, "priority") row.prop(scene.network_render, "chunks") @@ -264,6 +265,12 @@ NetRenderSettings.StringProperty( attr="job_name", maxlen = 128, default = "[default]") +NetRenderSettings.StringProperty( attr="job_category", + name="Job category", + description="Category of the job", + maxlen = 128, + default = "") + NetRenderSettings.IntProperty( attr="chunks", name="Chunks", description="Number of frame to dispatch to each slave in one chunk", -- cgit v1.2.3 From 2a785e8fae8d160f7ce11565705be4d71e2d676b Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 22:07:33 +0000 Subject: Snap options were reset too often, discarding all user options. --- source/blender/editors/transform/transform_snap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 34c01339441..b4894ecdcaa 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -327,6 +327,7 @@ void resetSnapping(TransInfo *t) { t->tsnap.status = 0; t->tsnap.align = 0; + t->tsnap.project = 0; t->tsnap.mode = 0; t->tsnap.modeSelect = 0; t->tsnap.target = 0; @@ -362,8 +363,6 @@ void initSnappingMode(TransInfo *t) Object *obedit = t->obedit; Scene *scene = t->scene; - resetSnapping(t); - /* force project off when not supported */ if (ts->snap_mode != SCE_SNAP_MODE_FACE) { -- cgit v1.2.3 From 97abf6ad96932ae5d1a3e6b6d89e271f11e9cd8a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 22:23:09 +0000 Subject: * rename 'rna_path' --> 'data_path', rna and dna are for internal use and are not descriptive. * armature.pose_position: POSE_POSITION, REST_POSITION --> POSE, REST * rigify now forces rest pose mode * updated neck_flex to keep original bones unchanged --- release/scripts/modules/graphviz_export.py | 8 +-- release/scripts/modules/rigify/__init__.py | 23 +++++++- .../scripts/modules/rigify/arm_biped_generic.py | 2 +- release/scripts/modules/rigify/delta.py | 3 + release/scripts/modules/rigify/finger_curl.py | 4 +- .../scripts/modules/rigify/leg_biped_generic.py | 2 +- release/scripts/modules/rigify/neck_flex.py | 67 ++++++++++++---------- release/scripts/modules/rigify/palm_curl.py | 8 +-- release/scripts/modules/rigify/spine_pivot_flex.py | 10 ++-- release/scripts/modules/rigify_utils.py | 2 +- release/scripts/ui/properties_scene.py | 2 +- source/blender/makesrna/intern/rna_animation.c | 4 +- source/blender/makesrna/intern/rna_animation_api.c | 2 +- source/blender/makesrna/intern/rna_armature.c | 4 +- source/blender/makesrna/intern/rna_fcurve.c | 8 +-- 15 files changed, 89 insertions(+), 60 deletions(-) diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index e4bce9a85a9..f39095b9eba 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -150,16 +150,16 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, if animation_data: fcurve_drivers = [fcurve_driver for fcurve_driver in animation_data.drivers] - fcurve_drivers.sort(key=lambda fcurve_driver: fcurve_driver.rna_path) + fcurve_drivers.sort(key=lambda fcurve_driver: fcurve_driver.data_path) for fcurve_driver in fcurve_drivers: - rna_path = fcurve_driver.rna_path + rna_path = fcurve_driver.data_path pbone = rna_path_as_pbone(rna_path) if pbone: for target in fcurve_driver.driver.targets: - pbone_target = rna_path_as_pbone(target.rna_path) - rna_path_target = target.rna_path + pbone_target = rna_path_as_pbone(target.data_path) + rna_path_target = target.data_path if pbone_target: opts = ['dir=forward', "weight=1", "arrowhead=normal", "arrowtail=none", "constraint=false", 'color="blue"', "labelfontsize=4"] # , display_source = rna_path.replace("pose.bones", "") diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index ff0c1421f55..f4922f80040 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -49,6 +49,8 @@ def submodule_func_from_type(bone_type): def validate_rig(context, obj): + type_found = False + for pbone in obj.pose.bones: bone_name = pbone.name bone_type = pbone.get("type", "") @@ -62,19 +64,29 @@ def validate_rig(context, obj): submod, type_func = submodule_func_from_type(bone_type) reload(submod) submod.metarig_definition(obj, bone_name) + type_found = True # missing, - check for duplicate root bone. + + if not type_found: + raise RigifyError("This rig has no 'type' properties defined on any pose bones, nothing to do") def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): from collections import OrderedDict import rigify_utils reload(rigify_utils) + + # Not needed but catches any errors before duplicating + # validate_rig(context, obj_orig) global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False mode_orig = context.mode - + rest_backup = obj_orig.data.pose_position + obj_orig.data.pose_position = 'REST' + + bpy.ops.object.mode_set(mode='OBJECT') scene = context.scene @@ -86,7 +98,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): scene.objects.link(obj) scene.objects.active = obj obj.selected = True - + if META_DEF: obj_def = obj_orig.copy() obj_def.data = obj_orig.data.copy() @@ -254,15 +266,20 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): con.target = obj con.subtarget = bone_name + # would be 'REST' from when copied + obj_def.data.pose_position = 'POSE' + # Only for demo'ing # obj.restrict_view = True obj.data.draw_axes = False bpy.ops.object.mode_set(mode=mode_orig) - + obj_orig.data.pose_position = rest_backup + obj.data.pose_position = 'POSE' context.user_preferences.edit.global_undo = global_undo + return obj diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index dfae94875b7..e22857852ee 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -240,7 +240,7 @@ def fk(obj, definitions, base_names): tar.name = "hinge" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + '["hinge"]' + tar.data_path = controller_path + '["hinge"]' mod = driver_fcurve.modifiers[0] mod.poly_order = 1 diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index a83b45307dd..4f1e56b7bb1 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -67,6 +67,9 @@ def metarig_definition(obj, orig_bone_name): if len(children) != 1: raise RigifyError("only 1 child supported for delta on bone '%s'" % delta.name) + if delta.connected: + raise RigifyError("bone cannot be connected to its parent '%s'" % delta.name) + bone_definition = [delta.name, children[0].name] return bone_definition diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 15bdd803500..7f21eecd7d3 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -201,14 +201,14 @@ def main(obj, bone_definition, base_names): tar.name = "scale" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + '.scale[1]' + tar.data_path = controller_path + '.scale[1]' # bend target tar = driver.targets.new() tar.name = "br" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + '["bend_ratio"]' + tar.data_path = controller_path + '["bend_ratio"]' # XXX - todo, any number if i == 0: diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index d08d0e99f43..af103a08265 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -341,7 +341,7 @@ def fk(obj, bone_definition, base_names): tar.name = "var" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = hinge_driver_path + tar.data_path = hinge_driver_path mod = fcurve.modifiers[0] mod.poly_order = 1 diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 31763518f09..9bb852b25b5 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -121,10 +121,14 @@ def main(obj, bone_definition, base_names): neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] neck_chain_segment_length = mt_chain.neck_01_e.length - ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras + ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket", "head_ctrl"]) # hinge & extras # Add the head hinge at the bodys location, becomes the parent of the original head + # apply everything to this copy of the chain + ex_chain = mt_chain.copy(base_names=base_names) + ex_chain.neck_01_e.parent = mt_chain.neck_01_e.parent + # Copy the head bone and offset ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % base_names[mt.head], parent=True) @@ -142,10 +146,6 @@ def main(obj, bone_definition, base_names): ex.head_hinge_e.head.y += head_length / 4.0 ex.head_hinge_e.tail.y += head_length / 4.0 - # reparent the head, assume its not connected - mt.head_e.connected = False - mt.head_e.parent = ex.head_hinge_e - # Insert the neck socket, the head copys this loation ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename) ex.neck_socket = ex.neck_socket_e.name @@ -154,20 +154,21 @@ def main(obj, bone_definition, base_names): ex.neck_socket_e.head = mt.head_e.head ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) ex.neck_socket_e.roll = 0.0 + + + # copy of the head for controling + ex.head_ctrl_e = copy_bone_simple(arm, mt.head, base_names[mt.head]) + ex.head_ctrl = ex.head_ctrl_e.name + ex.head_ctrl_e.parent = ex.head_hinge_e - # offset the head, not really needed since it has a copyloc constraint - mt.head_e.head.y += head_length / 4.0 - mt.head_e.tail.y += head_length / 4.0 - - for i, attr in enumerate(mt_chain.attr_names): - neck_e = getattr(mt_chain, attr + "_e") + for i, attr in enumerate(ex_chain.attr_names): + neck_e = getattr(ex_chain, attr + "_e") # dont store parent names, re-reference as each chain bones parent. - neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[neck_e.name]) + neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[getattr(mt_chain, attr)]) neck_e_parent.head = neck_e.head neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) neck_e_parent.roll = mt.head_e.roll - orig_parent = neck_e.parent neck_e.connected = False @@ -184,20 +185,21 @@ def main(obj, bone_definition, base_names): mt.update() mt_chain.update() + ex_chain.update() ex.update() # Simple one off constraints, no drivers - con = mt.head_p.constraints.new('COPY_LOCATION') + con = ex.head_ctrl_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.neck_socket con = ex.head_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = mt.head + con.subtarget = ex.head_ctrl # driven hinge - prop = rna_idprop_ui_prop_get(mt.head_p, "hinge", create=True) - mt.head_p["hinge"] = 0.0 + prop = rna_idprop_ui_prop_get(ex.head_ctrl_p, "hinge", create=True) + ex.head_ctrl_p["hinge"] = 0.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 @@ -207,7 +209,7 @@ def main(obj, bone_definition, base_names): con.subtarget = mt.body # add driver - hinge_driver_path = mt.head_p.path_to_id() + '["hinge"]' + hinge_driver_path = ex.head_ctrl_p.path_to_id() + '["hinge"]' fcurve = con.driver_add("influence", 0) driver = fcurve.driver @@ -216,7 +218,7 @@ def main(obj, bone_definition, base_names): tar.name = "var" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = hinge_driver_path + tar.data_path = hinge_driver_path #mod = fcurve_driver.modifiers.new('GENERATOR') mod = fcurve.modifiers[0] @@ -224,12 +226,12 @@ def main(obj, bone_definition, base_names): mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 - head_driver_path = mt.head_p.path_to_id() + head_driver_path = ex.head_ctrl_p.path_to_id() target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - mt.head_p["bend_tot"] = 0.0 - fcurve = mt.head_p.driver_add('["bend_tot"]', 0) + ex.head_ctrl_p["bend_tot"] = 0.0 + fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0) driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -239,19 +241,19 @@ def main(obj, bone_definition, base_names): tar.name = target_names[i] tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) + tar.data_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) - for i, attr in enumerate(mt_chain.attr_names): - neck_p = getattr(mt_chain, attr + "_p") + for i, attr in enumerate(ex_chain.attr_names): + neck_p = getattr(ex_chain, attr + "_p") neck_p.lock_location = True, True, True neck_p.lock_location = True, True, True neck_p.lock_rotations_4d = True # Add bend prop prop_name = "bend_%.2d" % (i + 1) - prop = rna_idprop_ui_prop_get(mt.head_p, prop_name, create=True) - mt.head_p[prop_name] = 1.0 + prop = rna_idprop_ui_prop_get(ex.head_ctrl_p, prop_name, create=True) + ex.head_ctrl_p[prop_name] = 1.0 prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 @@ -279,13 +281,20 @@ def main(obj, bone_definition, base_names): tar.name = "bend_tot" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = head_driver_path + ('["bend_tot"]') + tar.data_path = head_driver_path + ('["bend_tot"]') tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = head_driver_path + ('["%s"]' % prop_name) + tar.data_path = head_driver_path + ('["%s"]' % prop_name) + + + # finally constrain the original bone to this one + orig_neck_p = getattr(mt_chain, attr + "_p") + con = orig_neck_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = neck_p.name # no blending the result of this return None diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index cc40503703c..6c9ff516c49 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -145,7 +145,7 @@ def main(obj, bone_definition, base_names): tar.name = "x" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" + tar.data_path = controller_path + ".rotation_euler[0]" # ***** @@ -156,7 +156,7 @@ def main(obj, bone_definition, base_names): tar.name = "x" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" + tar.data_path = controller_path + ".rotation_euler[0]" # ***** @@ -166,13 +166,13 @@ def main(obj, bone_definition, base_names): tar.name = "x" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + ".rotation_euler[0]" + tar.data_path = controller_path + ".rotation_euler[0]" tar = driver.targets.new() tar.name = "s" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = controller_path + '["spread"]' + tar.data_path = controller_path + '["spread"]' for i, child_name in enumerate(children): diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index f9a5aceb4d6..beeb5c68b7c 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -322,7 +322,7 @@ def main(obj, bone_definition, base_names): tar.name = "var" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = ex.ribcage_copy_p.path_to_id() + '["hinge"]' + tar.data_path = ex.ribcage_copy_p.path_to_id() + '["hinge"]' mod = fcurve.modifiers[0] mod.poly_order = 1 @@ -406,7 +406,7 @@ def main(obj, bone_definition, base_names): tar.name = target_names[i] tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) + tar.data_path = rib_driver_path + ('["bend_%.2d"]' % (i + 1)) for i in range(1, spine_chain_len): @@ -441,13 +441,13 @@ def main(obj, bone_definition, base_names): tar.name = "bend_tot" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = rib_driver_path + ('["bend_tot"]') + tar.data_path = rib_driver_path + ('["bend_tot"]') tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = rib_driver_path + ('["%s"]' % prop_name) + tar.data_path = rib_driver_path + ('["%s"]' % prop_name) @@ -490,7 +490,7 @@ def main(obj, bone_definition, base_names): tar.name = "var" tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = rib_driver_path + '["pivot_slide"]' + tar.data_path = rib_driver_path + '["pivot_slide"]' mod = fcurve.modifiers[0] mod.poly_order = 1 diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index 5061248c35d..a1fc54cb5bb 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -141,7 +141,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta tar.name = target_bone tar.id_type = 'OBJECT' tar.id = obj - tar.rna_path = driver_path + tar.data_path = driver_path def blend_location(new_pbone, from_bone_name, to_bone_name): con = new_pbone.constraints.new('COPY_LOCATION') diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 857b6bfff02..622ce06c567 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -134,7 +134,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): col = layout.column() col.label(text="Target:") col.template_any_ID(ksp, "id", "id_type") - col.template_path_builder(ksp, "rna_path", ksp.id) + col.template_path_builder(ksp, "data_path", ksp.id) row = layout.row() diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index fdf345015e2..035194e0d9f 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -203,9 +203,9 @@ static void rna_def_keyingset_path(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Grouping Method", "Method used to define which Group-name to use."); /* Path + Array Index */ - prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_ksPath_RnaPath_get", "rna_ksPath_RnaPath_length", "rna_ksPath_RnaPath_set"); - RNA_def_property_ui_text(prop, "RNA Path", "RNA Path to property setting."); + RNA_def_property_ui_text(prop, "Data Path", "Path to property setting."); RNA_def_struct_name_property(srna, prop); // XXX this is the best indicator for now... prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_animation_api.c b/source/blender/makesrna/intern/rna_animation_api.c index 5852c494936..fc36bab29af 100644 --- a/source/blender/makesrna/intern/rna_animation_api.c +++ b/source/blender/makesrna/intern/rna_animation_api.c @@ -76,7 +76,7 @@ void RNA_api_keyingset(StructRNA *srna) parm= RNA_def_pointer(func, "target_id", "ID", "Target ID", "ID-Datablock for the destination."); RNA_def_property_flag(parm, PROP_REQUIRED); /* rna-path */ - parm= RNA_def_string(func, "rna_path", "", 256, "RNA-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough + parm= RNA_def_string(func, "data_path", "", 256, "Data-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough RNA_def_property_flag(parm, PROP_REQUIRED); parm=RNA_def_int(func, "array_index", 0, 0, INT_MAX, "Array Index", "If applicable, the index ", 0, INT_MAX); /* flags */ diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index cb030bf0c31..bc01c22de1c 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -752,8 +752,8 @@ static void rna_def_armature(BlenderRNA *brna) {0, "TAILS", 0, "Tails", "Calculate bone paths from tails"}, {0, NULL, 0, NULL, NULL}}; static const EnumPropertyItem prop_pose_position_items[]= { - {0, "POSE_POSITION", 0, "Pose Position", "Show armature in posed state."}, - {ARM_RESTPOS, "REST_POSITION", 0, "Rest Position", "Show Armature in binding pose state. No posing possible."}, + {0, "POSE", 0, "Pose Position", "Show armature in posed state."}, + {ARM_RESTPOS, "REST", 0, "Rest Position", "Show Armature in binding pose state. No posing possible."}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "Armature", "ID"); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 23cd4b2c892..97918556976 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -747,9 +747,9 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); /* Target Properties - Property to Drive */ - prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_DriverTarget_RnaPath_get", "rna_DriverTarget_RnaPath_length", "rna_DriverTarget_RnaPath_set"); - RNA_def_property_ui_text(prop, "RNA Path", "RNA Path (from Object) to property used"); + RNA_def_property_ui_text(prop, "Data Path", "RNA Path (from Object) to property used"); RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); @@ -926,9 +926,9 @@ static void rna_def_fcurve(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Driver", "Channel Driver (only set for Driver F-Curves)"); /* Path + Array Index */ - prop= RNA_def_property(srna, "rna_path", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_FCurve_RnaPath_get", "rna_FCurve_RnaPath_length", "rna_FCurve_RnaPath_set"); - RNA_def_property_ui_text(prop, "RNA Path", "RNA Path to property affected by F-Curve."); + RNA_def_property_ui_text(prop, "Data Path", "RNA Path to property affected by F-Curve."); RNA_def_property_update(prop, NC_ANIMATION, NULL); // XXX need an update callback for this to that animation gets evaluated prop= RNA_def_property(srna, "array_index", PROP_INT, PROP_NONE); -- cgit v1.2.3 From ab7e9da34299d029eab38e3e4e758ebead0b659e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 23:22:43 +0000 Subject: wm_menu_invoke calls exec automatically if property is already set. This way you can set the param in the keymap and it won't always show the menu for nothing. --- source/blender/windowmanager/intern/wm_operators.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 818dcd98afd..6d028a63c1d 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -615,6 +615,9 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) else if (RNA_property_type(prop) != PROP_ENUM) { printf("WM_menu_invoke: %s \"type\" is not an enum property\n", op->type->idname); } + else if (RNA_property_is_set(op->ptr, RNA_property_identifier(prop))) { + return op->type->exec(C, op); + } else { pup= uiPupMenuBegin(C, op->type->name, 0); layout= uiPupMenuLayout(pup); -- cgit v1.2.3 From 5a0436b8ea44bf4a90993c255f9fc7cda048bc73 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 10 Dec 2009 23:24:29 +0000 Subject: Double Click plays nicer with Click. 1) Double Click takes priority over a second Click (Click will still be send if not handled) 2) The first Click being handled doesn't stop the following Double Click --- .../blender/windowmanager/intern/wm_event_system.c | 30 +++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 9aad7da7a58..906a166a28c 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1093,6 +1093,11 @@ static int handler_boundbox_test(wmEventHandler *handler, wmEvent *event) return 1; } +static int wm_action_not_handled(int action) +{ + return action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL); +} + static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) { wmWindowManager *wm= CTX_wm_manager(C); @@ -1158,21 +1163,24 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) } /* test for CLICK event */ - if ((action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) && event->val == KM_RELEASE) { + if (wm_action_not_handled(action) && event->val == KM_RELEASE) { wmWindow *win = CTX_wm_window(C); if (win && win->last_type == event->type && win->last_val == KM_PRESS) { - event->val = KM_CLICK; - action |= wm_handlers_do(C, event, handlers); - - /* if not handled and time is right, check double click */ - if ((action & WM_HANDLER_BREAK) == 0 && (PIL_check_seconds_timer() - win->last_click_time) * 1000 < U.dbl_click_time) { + /* test for double click first */ + if ((PIL_check_seconds_timer() - win->last_click_time) * 1000 < U.dbl_click_time) { event->val = KM_DBL_CLICK; action |= wm_handlers_do(C, event, handlers); } + if (wm_action_not_handled(action)) { + event->val = KM_CLICK; + action |= wm_handlers_do(C, event, handlers); + } + + /* revert value if not handled */ - if ((action & WM_HANDLER_BREAK) == 0) { + if (wm_action_not_handled(action)) { event->val = KM_RELEASE; } } @@ -1361,7 +1369,7 @@ void wm_event_do_handlers(bContext *C) /* store last event for this window */ /* mousemove event don't overwrite last type */ if (event->type != MOUSEMOVE) { - if (action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) { + if (wm_action_not_handled(action)) { if (win->last_type == event->type) { /* set click time on first click (press -> release) */ if (win->last_val == KM_PRESS && event->val == KM_RELEASE) { @@ -1374,7 +1382,11 @@ void wm_event_do_handlers(bContext *C) win->last_val = event->val; win->last_type = event->type; - } else { + } else if (event->val == KM_CLICK) { /* keep click for double click later */ + win->last_type = event->type; + win->last_val = event->val; + win->last_click_time = PIL_check_seconds_timer(); + } else { /* reset if not */ win->last_type = -1; win->last_val = 0; win->last_click_time = 0; -- cgit v1.2.3 From 8b32402f381e22928390188144b1ab89aac55cd4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2009 23:24:31 +0000 Subject: * root bone override fixed * delta was disabled * simple copy metarig type * proper exception when a type isnt found --- release/scripts/modules/rigify/__init__.py | 14 ++++-- release/scripts/modules/rigify/copy.py | 53 ++++++++++++++++++++++ release/scripts/modules/rigify/delta.py | 1 - .../scripts/modules/rigify/leg_biped_generic.py | 4 +- 4 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 release/scripts/modules/rigify/copy.py diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index f4922f80040..5d1ec2e1e5a 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -23,6 +23,7 @@ from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get +SPECIAL_TYPES = "root", class RigifyError(Exception): """Exception raised for errors in the metarig. @@ -43,7 +44,11 @@ def submodule_func_from_type(bone_type): submod_name, func_name = type_pair # from rigify import leg - submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + try: + submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + except ImportError: + raise RigifyError("python module for type '%s' not found" % submod_name) + reload(submod) return submod, getattr(submod, func_name) @@ -61,6 +66,9 @@ def validate_rig(context, obj): bone_type_list = [] for bone_type in bone_type_list: + if bone_type.split(".")[0] in SPECIAL_TYPES: + continue + submod, type_func = submodule_func_from_type(bone_type) reload(submod) submod.metarig_definition(obj, bone_name) @@ -78,7 +86,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): reload(rigify_utils) # Not needed but catches any errors before duplicating - # validate_rig(context, obj_orig) + validate_rig(context, obj_orig) global_undo = context.user_preferences.edit.global_undo context.user_preferences.edit.global_undo = False @@ -246,7 +254,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): root_ebone_tmp = root_ebone ebone.connected = False - ebone.parent = root_ebone + ebone.parent = root_ebone_tmp bpy.ops.object.mode_set(mode='OBJECT') diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py new file mode 100644 index 00000000000..2be5669e5a6 --- /dev/null +++ b/release/scripts/modules/rigify/copy.py @@ -0,0 +1,53 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify_utils import copy_bone_simple, get_side_name, bone_class_instance +from rna_prop_ui import rna_idprop_ui_prop_get + +METARIG_NAMES = ("cpy",) + +def metarig_template(): + pass + +def metarig_definition(obj, orig_bone_name): + return [orig_bone_name] + + +def main(obj, bone_definition, base_names): + arm = obj.data + mt = bone_class_instance(obj, METARIG_NAMES) + mt.cpy = bone_definition[0] + mt.update() + cp = mt.copy(to_fmt="%s_cpy") + bpy.ops.object.mode_set(mode='OBJECT') + + cp.update() + mt.update() + + con = cp.cpy_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = mt.cpy + + con = cp.cpy_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt.cpy + + return [mt.cpy] diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 4f1e56b7bb1..261e2b22479 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -79,7 +79,6 @@ def main(obj, bone_definition, base_names): ''' Use this bone to define a delta thats applied to its child in pose mode. ''' - return mode_orig = obj.mode bpy.ops.object.mode_set(mode='OBJECT') diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index af103a08265..65fde79da6e 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -146,8 +146,8 @@ def ik(obj, bone_definition, base_names): # XXX - end dupe - # Make a new chain, ORG are the original bones renamed. - ik_chain = mt_chain.copy(to_fmt="MCH-%s") + # Make a new chain + ik_chain = mt_chain.copy(to_fmt="MCH-%s", base_names=base_names) # simple rename ik_chain.rename("thigh", ik_chain.thigh + "_ik") -- cgit v1.2.3 From 98dff9b1c71b6936621641897589f1fb59220312 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 11 Dec 2009 00:09:58 +0000 Subject: For for [#20330] Can't open a file made in 2.49 Hair clothsim internal_friction wasn't being initialised correctly. --- source/blender/blenkernel/intern/cloth.c | 1 + source/blender/blenloader/intern/readfile.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 6c4c7daea7f..dc9a70f2767 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -154,6 +154,7 @@ void cloth_init ( ClothModifierData *clmd ) clmd->sim_parms->defgoal = 0.0f; clmd->sim_parms->goalspring = 1.0f; clmd->sim_parms->goalfrict = 0.0f; + clmd->sim_parms->velocity_smooth = 0.0f; if(!clmd->sim_parms->effector_weights) clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 860225b7dc3..eada820ba89 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10184,6 +10184,21 @@ static void do_versions(FileData *fd, Library *lib, Main *main) sce->toolsettings->particle.selectmode= SCE_SELECT_PATH; } + { + Object *ob; + + /* properly initialise hair clothsim data on old files */ + for(ob = main->object.first; ob; ob = ob->id.next) { + ModifierData *md; + for(md= ob->modifiers.first; md; md= md->next) { + if (md->type == eModifierType_Cloth) { + ClothModifierData *clmd = (ClothModifierData *)md; + if (clmd->sim_parms->velocity_smooth < 0.01f) + clmd->sim_parms->velocity_smooth = 0.f; + } + } + } + } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ -- cgit v1.2.3 From cff8de339d25d1723769d3c9183162005a3e9f68 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Dec 2009 00:51:14 +0000 Subject: [#20288] FBX exporter fails * disallow registering operators that have properties starting with an underscore which caused this problem. --- release/scripts/io/export_fbx.py | 16 ++++++++-------- source/blender/python/intern/bpy_rna.c | 8 ++++++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index c821e1d4fad..6fa81fb41ce 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3363,10 +3363,10 @@ class ExportFBX(bpy.types.Operator): EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) # EXP_OBS_SCENE = BoolProperty(name="Scene Objects", description="Export all objects in this scene", default=True) - _SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) - _XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) - _YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) - _ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) + TX_SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) + TX_XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) + TX_YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) + TX_ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) EXP_EMPTY = BoolProperty(name="Empties", description="Export empty objects", default=True) EXP_CAMERA = BoolProperty(name="Cameras", description="Export camera objects", default=True) EXP_LAMP = BoolProperty(name="Lamps", description="Export lamp objects", default=True) @@ -3397,10 +3397,10 @@ class ExportFBX(bpy.types.Operator): raise Exception("path not set") GLOBAL_MATRIX = mtx4_identity - GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties._SCALE - if self.properties._XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n - if self.properties._YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n - if self.properties._ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n + GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties.TX_SCALE + if self.properties.TX_XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n + if self.properties.TX_YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n + if self.properties.TX_ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n write(self.properties.path, None, # XXX diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index ad695344038..f90dbef9836 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -3719,11 +3719,15 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key if(PyTuple_CheckExact(item) && PyTuple_GET_SIZE(item)==2) { PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret; + PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) { - PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); - + if(*_PyUnicode_AsString(key)=='_') { + PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not register because the property starts with an '_'\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key)); + Py_DECREF(dummy_args); + return -1; + } pyfunc = PyCObject_AsVoidPtr(py_func_ptr); py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL); -- cgit v1.2.3 From 5244b7c21bc1807a11996dad9750289dab867795 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 11 Dec 2009 01:12:22 +0000 Subject: Various UV editor / notifier related fixes: [#20336] Missing notifier - properties view does not update on UV unwrap [#20337] Shift select is not working in UV-editor island mode [#20338] Update automatically menu item has strange icon behavior [#20339] Select all will quit working in UV editor --- release/scripts/ui/space_image.py | 2 +- source/blender/editors/space_buttons/space_buttons.c | 1 + source/blender/editors/uvedit/uvedit_ops.c | 2 +- source/blender/makesrna/intern/rna_scene.c | 3 +++ source/blender/makesrna/intern/rna_space.c | 1 - 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 5f9df21331f..0abbdf01edb 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -311,7 +311,7 @@ class IMAGE_HT_header(bpy.types.Header): row.operator("image.play_composite", icon='PLAY') if show_uvedit or sima.image_painting: - layout.prop(sima, "update_automatically", text="") + layout.prop(sima, "update_automatically", text="", icon_only=True, icon='LOCKED') class IMAGE_PT_image_properties(bpy.types.Panel): diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 6c13a36cdf3..f6b376f6e8e 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -285,6 +285,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case NC_GEOM: switch(wmn->data) { case ND_SELECT: + case ND_DATA: ED_area_tag_redraw(sa); break; } diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index fb02f5100b6..3d58e7f03dc 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -904,7 +904,7 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] } } - if(!extend || hit) { + if(!extend && hit) { for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) { tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); if(flag[a]) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 033a8f45809..100df4645c7 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -722,15 +722,18 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "uv_selectmode"); RNA_def_property_enum_items(prop, uv_select_mode_items); RNA_def_property_ui_text(prop, "UV Selection Mode", "UV selection and display mode."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL); prop= RNA_def_property(srna, "uv_sync_selection", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SYNC_SELECTION); RNA_def_property_ui_text(prop, "UV Sync Selection", "Keep UV and edit mode mesh selection in sync."); RNA_def_property_ui_icon(prop, ICON_EDIT, 0); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL); prop= RNA_def_property(srna, "uv_local_view", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SHOW_SAME_IMAGE); RNA_def_property_ui_text(prop, "UV Local View", "Draw only faces with the currently displayed image assigned."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL); /* Mesh */ prop= RNA_def_property(srna, "mesh_selection_mode", PROP_ENUM, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index e4d0769feeb..9f8d5278a27 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1042,7 +1042,6 @@ static void rna_def_space_image(BlenderRNA *brna) /* update */ prop= RNA_def_property(srna, "update_automatically", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "lock", 0); - RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1); RNA_def_property_ui_text(prop, "Update Automatically", "Update other affected window spaces automatically to reflect changes during interactive operations such as transform."); /* state */ -- cgit v1.2.3 From d6bee7da753b0047e0ad0b4c1f4a41bec915c551 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Dec 2009 02:14:10 +0000 Subject: use rna buttons for color ramps colors so keyframes can be added/deleted. --- .../editors/interface/interface_templates.c | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 0c5f03f0d0f..d2b58e61757 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1490,7 +1490,7 @@ static void colorband_del_cb(bContext *C, void *cb_v, void *coba_v) /* offset aligns from bottom, standard width 300, height 115 */ -static void colorband_buttons_large(uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb) +static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb) { uiBut *bt; @@ -1515,18 +1515,28 @@ static void colorband_buttons_large(uiBlock *block, ColorBand *coba, int xoffs, if(coba->tot) { CBData *cbd= coba->data + coba->cur; +#if 1 + /* better to use rna so we can animate them */ + PointerRNA ptr; + RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr); + uiItemR(layout, NULL, 0, &ptr, "color", 0); + //uiItemR(layout, NULL, 0, &ptr, "position", 0); + bt= uiDefButF(block, NUM, 0, "Pos:", 0+xoffs,40+yoffs,100, 20, &cbd->pos, 0.0, 1.0, 10, 0, "The position of the active color stop"); + uiButSetNFunc(bt, colorband_pos_cb, MEM_dupallocN(cb), coba); +#else bt= uiDefButF(block, NUM, 0, "Pos:", 0+xoffs,40+yoffs,100, 20, &cbd->pos, 0.0, 1.0, 10, 0, "The position of the active color stop"); uiButSetNFunc(bt, colorband_pos_cb, MEM_dupallocN(cb), coba); bt= uiDefButF(block, COL, 0, "", 110+xoffs,40+yoffs,80,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "The color value for the active color stop"); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); bt= uiDefButF(block, NUMSLI, 0, "A ", 200+xoffs,40+yoffs,100,20, &cbd->a, 0.0, 1.0, 10, 0, "The alpha value of the active color stop"); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); +#endif } } -static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr, RNAUpdateCb *cb) +static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand *coba, rctf *butr, RNAUpdateCb *cb) { uiBut *bt; float unit= (butr->xmax-butr->xmin)/14.0f; @@ -1540,10 +1550,16 @@ static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr, if(coba->tot) { CBData *cbd= coba->data + coba->cur; +#if 1 + PointerRNA ptr; + RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr); + uiItemR(layout, "", 0, &ptr, "color", 0); +#else bt= uiDefButF(block, COL, 0, "", xs+4.0f*unit,butr->ymin+20.0f,2.0f*unit,20, &(cbd->r), 0, 0, 0, B_BANDCOL, "The color value for the active color stop"); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); bt= uiDefButF(block, NUMSLI, 0, "A:", xs+6.0f*unit,butr->ymin+20.0f,4.0f*unit,20, &(cbd->a), 0.0f, 1.0f, 10, 2, "The alpha value of the active color stop"); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); +#endif } bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4", @@ -1556,12 +1572,12 @@ static void colorband_buttons_small(uiBlock *block, ColorBand *coba, rctf *butr, uiBlockEndAlign(block); } -static void colorband_buttons_layout(uiBlock *block, ColorBand *coba, rctf *butr, int small, RNAUpdateCb *cb) +static void colorband_buttons_layout(uiLayout *layout, uiBlock *block, ColorBand *coba, rctf *butr, int small, RNAUpdateCb *cb) { if(small) - colorband_buttons_small(block, coba, butr, cb); + colorband_buttons_small(layout, block, coba, butr, cb); else - colorband_buttons_large(block, coba, 0, 0, cb); + colorband_buttons_large(layout, block, coba, 0, 0, cb); } void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, char *propname, int expand) @@ -1587,7 +1603,7 @@ void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, char *propname, int rect.ymin= 0; rect.ymax= 190; block= uiLayoutAbsoluteBlock(layout); - colorband_buttons_layout(block, cptr.data, &rect, !expand, cb); + colorband_buttons_layout(layout, block, cptr.data, &rect, !expand, cb); MEM_freeN(cb); } -- cgit v1.2.3 From 34ec7474fd36238459f96bd3426f1b5663d2210d Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 11 Dec 2009 04:03:55 +0000 Subject: Tweak to make temp 'fullscreen' screens be alphabetically similar to the previous ones that spawned them, so you can switch screens (ctrl left and right arrow) more smoothly ( [#20301] Screens and Fullscreen still doesn't work ) --- source/blender/editors/screen/screen_edit.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index fef3818a2c7..640a14a934b 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1483,6 +1483,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) } else { ScrArea *newa; + char newname[20]; oldscreen= win->screen; @@ -1491,8 +1492,8 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) return NULL; oldscreen->full = SCREENFULL; - - sc= ED_screen_add(win, oldscreen->scene, "temp"); + 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 */ -- cgit v1.2.3 From 877c47fe350de17f58e55358fe28887a8131cca8 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 11 Dec 2009 05:23:00 +0000 Subject: Fix for [#20331] adding and removing render layers in specific sequence creates layers with the same name Render layers now use the same consistent 'unique name' function as other parts of Blender (i.e. RenderLayer.001). Updated the defaults for consistency. --- source/blender/blenkernel/intern/scene.c | 4 +- source/blender/editors/datafiles/B.blend.c | 16383 ++++++++++++++------------- 2 files changed, 8196 insertions(+), 8191 deletions(-) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index cd9487862ea..368e05fa441 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -29,6 +29,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include #include #include @@ -862,7 +863,8 @@ void scene_add_render_layer(Scene *sce) int tot= 1 + BLI_countlist(&sce->r.layers); srl= MEM_callocN(sizeof(SceneRenderLayer), "new render layer"); - sprintf(srl->name, "%d RenderLayer", tot); + sprintf(srl->name, "RenderLayer"); + BLI_uniquename(&sce->r.layers, srl, "RenderLayer", '.', offsetof(SceneRenderLayer, name), 32); BLI_addtail(&sce->r.layers, srl); /* note, this is also in render, pipeline.c, to make layer when scenedata doesnt have it */ diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c index 9ee3b8d72fa..a3b4798fd5e 100644 --- a/source/blender/editors/datafiles/B.blend.c +++ b/source/blender/editors/datafiles/B.blend.c @@ -1,3960 +1,3963 @@ /* DataToC output of file */ -int datatoc_B_blend_size= 320428; +int datatoc_B_blend_size= 320520; char datatoc_B_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, - 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,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, -240,236,191, 95,255,127, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 56, 8, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, -208, 30,165, 29, 1, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, - 62, 0, 0, 0, 0, 0, 0, 0, 34,239, 28, 1, 1, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 32,238,191, 95,255,127, 0, 0, - 80,237,191, 95,255,127, 0, 0,208,198,223, 28, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 48,147,201, 20, 1, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0,192,237,191, 95,255,127, 0, 0,245, 3, 94, 0, 1, 0, 0, 0, -160,237,191, 95,255,127, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, 48,147,201, 20, 1, 0, 0, 0, - 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16,238,191, 95,255,127, 0, 0, - 16,238,191, 95,255,127, 0, 0,187, 10, 94, 0, 1, 0, 0, 0, 48,102, 4, 28, 1, 0, 0, 0, 48,147,201, 20, 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, -208, 30,165, 29, 1, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,144, 6,163, 29, 1, 0, 0, 0, 98, 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,208, 7,163, 29, 1, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0, -208, 7,163, 29, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 16,158,162, 21, 1, 0, 0, 0, 64, 69,200, 20, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,160, 21, 1, 0, 0, 0, 32, 73,200, 20, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,220,195, 20, 1, 0, 0, 0, 48,220,195, 20, 1, 0, 0, 0, - 48,220,195, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,125,140, 27, 1, 0, 0, 0, 80,125,140, 27, 1, 0, 0, 0, - 80,125,140, 27, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,208, 7,163, 29, 1, 0, 0, 0, 99, 1, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,235,195, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -208, 30,165, 29, 1, 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, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 1, 0,238, 3, - 0, 0, 1, 0,255,255, 0, 0, 96,160,160, 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,192,165,164, 21, 1, 0, 0, 0,240,165,201, 20, 1, 0, 0, 0,240,165,201, 20, 1, 0, 0, 0, -240,125,140, 27, 1, 0, 0, 0,176,126,140, 27, 1, 0, 0, 0,112,127,140, 27, 1, 0, 0, 0,112,127,140, 27, 1, 0, 0, 0, - 96,103,164, 21, 1, 0, 0, 0, 80,237,200, 20, 1, 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,112,122,163, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208,190,163, 29, 1, 0, 0, 0, - 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, -224,182,162, 29, 1, 0, 0, 0, 16,176, 20, 27, 1, 0, 0, 0, 80,148, 21, 27, 1, 0, 0, 0, 32,132,163, 29, 1, 0, 0, 0, -128,132,163, 29, 1, 0, 0, 0,144, 0,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,240, 77,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, -224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -112, 2,160, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -144,246,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, -208,140,162, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 64,141,160, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 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, 32, 31,142, 27, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 62,142, 27, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,228, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, -160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,228, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -240,185,140, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 96, 4,162, 29, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,128, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 32,142,160, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 2,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 16,176, 20, 27, 1, 0, 0, 0, 80,164, 21, 27, 1, 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, 16,176, 20, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 80,148, 21, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,194, 20, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 2,160, 29, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 48,194, 20, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,154, 21, 27, 1, 0, 0, 0, 80,148, 21, 27, 1, 0, 0, 0, -208,140,162, 21, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -224,154, 21, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 3,162, 29, 1, 0, 0, 0, 48,194, 20, 27, 1, 0, 0, 0, -144,246,142, 27, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 0, 3,162, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 16,162, 29, 1, 0, 0, 0,224,154, 21, 27, 1, 0, 0, 0, -208,140,162, 21, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 0, 16,162, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,123,163, 29, 1, 0, 0, 0, 0, 3,162, 29, 1, 0, 0, 0, - 64,141,160, 21, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -128,123,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,123,163, 29, 1, 0, 0, 0, 0, 16,162, 29, 1, 0, 0, 0, - 64,141,160, 21, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -224,123,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,124,163, 29, 1, 0, 0, 0,128,123,163, 29, 1, 0, 0, 0, - 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 64,124,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,124,163, 29, 1, 0, 0, 0,224,123,163, 29, 1, 0, 0, 0, - 64,141,160, 21, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -160,124,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,125,163, 29, 1, 0, 0, 0, 64,124,163, 29, 1, 0, 0, 0, - 0, 62,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 0,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,125,163, 29, 1, 0, 0, 0,160,124,163, 29, 1, 0, 0, 0, - 0, 62,142, 27, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 96,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,125,163, 29, 1, 0, 0, 0, 0,125,163, 29, 1, 0, 0, 0, -240,185,140, 27, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -192,125,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,126,163, 29, 1, 0, 0, 0, 96,125,163, 29, 1, 0, 0, 0, - 32, 31,142, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 32,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,126,163, 29, 1, 0, 0, 0,192,125,163, 29, 1, 0, 0, 0, - 64,141,160, 21, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -128,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,126,163, 29, 1, 0, 0, 0, 32,126,163, 29, 1, 0, 0, 0, -240,185,140, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -224,126,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,127,163, 29, 1, 0, 0, 0,128,126,163, 29, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 64,127,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,127,163, 29, 1, 0, 0, 0,224,126,163, 29, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -160,127,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,128,163, 29, 1, 0, 0, 0, 64,127,163, 29, 1, 0, 0, 0, -208,140,162, 21, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 0,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,128,163, 29, 1, 0, 0, 0,160,127,163, 29, 1, 0, 0, 0, - 32, 31,142, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 96,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,128,163, 29, 1, 0, 0, 0, 0,128,163, 29, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -192,128,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,129,163, 29, 1, 0, 0, 0, 96,128,163, 29, 1, 0, 0, 0, - 32,142,160, 21, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 32,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,129,163, 29, 1, 0, 0, 0,192,128,163, 29, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -128,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,129,163, 29, 1, 0, 0, 0, 32,129,163, 29, 1, 0, 0, 0, - 32,142,160, 21, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -224,129,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,130,163, 29, 1, 0, 0, 0,128,129,163, 29, 1, 0, 0, 0, -160,237,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 64,130,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,130,163, 29, 1, 0, 0, 0,224,129,163, 29, 1, 0, 0, 0, - 32, 31,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -160,130,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,131,163, 29, 1, 0, 0, 0, 64,130,163, 29, 1, 0, 0, 0, - 16,176, 20, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 0,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,131,163, 29, 1, 0, 0, 0,160,130,163, 29, 1, 0, 0, 0, - 16,176, 20, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 96,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,131,163, 29, 1, 0, 0, 0, 0,131,163, 29, 1, 0, 0, 0, - 16,176, 20, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -192,131,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,132,163, 29, 1, 0, 0, 0, 96,131,163, 29, 1, 0, 0, 0, - 32,142,160, 21, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 32,132,163, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,131,163, 29, 1, 0, 0, 0, - 80,164, 21, 27, 1, 0, 0, 0, 96, 4,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -128,132,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,140,162, 21, 1, 0, 0, 0,240, 77,162, 29, 1, 0, 0, 0,112, 2,160, 29, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,112,241,162, 29, 1, 0, 0, 0,112,241,162, 29, 1, 0, 0, 0, - 96,133,163, 29, 1, 0, 0, 0,192,134,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 45,202, 20, 1, 0, 0, 0, 0, 25,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,133,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,192,134,163, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,134,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,133,163, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,128,132,163, 29, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, -160,237,142, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0,160, 41,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 4, 4, 80, 1,228, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,141,217, 2, 1, 0, 0, 0,176,162,163, 29, 1, 0, 0, 0,176,166,163, 29, 1, 0, 0, 0, 0,137,163, 29, 1, 0, 0, 0, - 96,138,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,134,201, 20, 1, 0, 0, 0, - 0,224,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,137,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96,138,163, 29, 1, 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,168, 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, 79, 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, 80, 1, 31, 0, 80, 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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,197, 1, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,143,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,138,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,137,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0, 64, 68,196, 0, 0, 0, 0, - 0, 0, 0, 0, 1,128,159, 67, 1,128,217,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,196, 1, 0, 0, - 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,196, 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, 80, 1,197, 1, 63, 1,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,129,160, 21, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,196, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,197, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,139,163, 29, 1, 0, 0, 0, - 32,161,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,139,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 80,141,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 63, 1, 36, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 80,141,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,142,163, 29, 1, 0, 0, 0,192,139,163, 29, 1, 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, 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, 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, + 66, 76, 69, 78, 68, 69, 82, 45, +118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,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,240,236,191, 95,255,127, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 56, 8, 0, 0, 0,250, 0, 0, 0, + 1, 0, 0, 1, 32,158,131, 29, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109, +111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0,178, 38, 29, 1, 1, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 32,238,191, 95, +255,127, 0, 0, 80,237,191, 95,255,127, 0, 0,208,230, 29, 29, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0,208, 78,111, 27, + 1, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0,192,237,191, 95,255,127, 0, 0, 13,241, 93, 0, + 1, 0, 0, 0,160,237,191, 95,255,127, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,208, 78,111, 27, + 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16,238,191, 95, +255,127, 0, 0, 16,238,191, 95,255,127, 0, 0,211,247, 93, 0, 1, 0, 0, 0, 48, 88,131, 27, 1, 0, 0, 0,208, 78,111, 27, + 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, 32,158,131, 29, 1, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,208, 87,128, 29, 1, 0, 0, 0, 98, 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, 16, 89,128, 29, 1, 0, 0, 0, 16, 89,128, 29, 1, 0, 0, 0, 16, 89,128, 29, + 1, 0, 0, 0, 16, 89,128, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0,192,200,129, 29, 1, 0, 0, 0,192,200,129, 29, + 1, 0, 0, 0,192,200,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 85,107, 27, 1, 0, 0, 0, 48, 85,107, 27, + 1, 0, 0, 0, 48, 85,107, 27, 1, 0, 0, 0, 68, 65, 84, 65,232, 0, 0, 0, 16, 89,128, 29, 1, 0, 0, 0, 99, 1, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,254,195, 20, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 32,158,131, 29, 1, 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, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, + 1, 0,238, 3, 0, 0, 1, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,181,176, 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, 80,178,178, 21, 1, 0, 0, 0, 64,117,129, 29, + 1, 0, 0, 0, 64,117,129, 29, 1, 0, 0, 0,208, 85,107, 27, 1, 0, 0, 0,144, 86,107, 27, 1, 0, 0, 0, 80, 87,107, 27, + 1, 0, 0, 0, 80, 87,107, 27, 1, 0, 0, 0,128, 2,128, 29, 1, 0, 0, 0,240, 54,128, 29, 1, 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, 48, 90,128, 29, 1, 0, 0, 0,191, 0, 0, 0, + 1, 0, 0, 0,240,200,110, 27, 1, 0, 0, 0, 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, 96,242,129, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 0, 9,130, 29, + 1, 0, 0, 0,192, 92,128, 29, 1, 0, 0, 0, 32, 93,128, 29, 1, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 96,242,129, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 48,240,107, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,244,129, 29, + 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0,160, 55,130, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,176,129, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 56,130, 29, + 1, 0, 0, 0, 0, 61,131, 29, 1, 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,160, 56,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0,240, 39,245, 26, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,252,130, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 6,228, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,228, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,227,179, 21, + 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,144,239,129, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 35,245, 26, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,156, 2,128, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,100, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 40,108, 27, + 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0,128, 65,129, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,148, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,106,130, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 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, 0,160,129, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 9,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 50,130, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 50,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 42,131, 29, + 1, 0, 0, 0, 0, 9,130, 29, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 42,131, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 89,244, 26, + 1, 0, 0, 0,208, 50,130, 29, 1, 0, 0, 0,160, 55,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 89,244, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,110,129, 29, + 1, 0, 0, 0,240, 42,131, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,110,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,184,130, 29, + 1, 0, 0, 0,224, 89,244, 26, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,184,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,243,130, 29, + 1, 0, 0, 0, 16,110,129, 29, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,243,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,223,129, 29, + 1, 0, 0, 0,160,184,130, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,223,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 45,244, 26, + 1, 0, 0, 0,160,243,130, 29, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 45,244, 26, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,171,129, 29, + 1, 0, 0, 0, 32,223,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 16,244,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,171,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,199,129, 29, + 1, 0, 0, 0, 64, 45,244, 26, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,199,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 79,129, 29, + 1, 0, 0, 0,128,171,129, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 96,242,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 79,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 66,129, 29, + 1, 0, 0, 0,160,199,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 66,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 47,130, 29, + 1, 0, 0, 0, 80, 79,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 47,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,184,109, 27, + 1, 0, 0, 0, 32, 66,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,184,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 56,131, 29, + 1, 0, 0, 0, 16, 47,130, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 56,131, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,108,129, 29, + 1, 0, 0, 0,192,184,109, 27, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,108,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,150,129, 29, + 1, 0, 0, 0,144, 56,131, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,150,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 41,108, 27, + 1, 0, 0, 0, 96,108,129, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 41,108, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,195,129, 29, + 1, 0, 0, 0, 32,150,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,195,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,242,108, 27, + 1, 0, 0, 0,128, 41,108, 27, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,242,108, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 20,130, 29, + 1, 0, 0, 0, 16,195,129, 29, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 20,130, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,185,129, 29, + 1, 0, 0, 0,160,242,108, 27, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,185,129, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,177,176, 21, + 1, 0, 0, 0, 64, 20,130, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,177,176, 21, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 91,128, 29, + 1, 0, 0, 0, 96,185,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 91,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 91,128, 29, + 1, 0, 0, 0, 48,177,176, 21, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 91,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 92,128, 29, + 1, 0, 0, 0, 64, 91,128, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 92,128, 29, + 1, 0, 0, 0,160, 91,128, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 92,128, 29, + 1, 0, 0, 0, 0, 92,128, 29, 1, 0, 0, 0,128, 65,129, 29, 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 92,128, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 92,128, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 93,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,128, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0, 48,240,107, 27, 1, 0, 0, 0,160, 55,130, 29, + 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0, +128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,200,110, 27, + 1, 0, 0, 0,112,200,110, 27, 1, 0, 0, 0, 0, 94,128, 29, 1, 0, 0, 0, 96, 95,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 94,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 95,128, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 96, 95,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,128, 29, + 1, 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, 0, 0, 0, 0, +128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,142,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -112,144,163, 29, 1, 0, 0, 0, 80,141,163, 29, 1, 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, 68, 65, 84, 65, +160, 0, 0, 0,192, 96,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,127,128, 29, 1, 0, 0, 0, 32, 93,128, 29, + 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0,252,130, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 16,244,129, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 4, 4, 80, 1, +228, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,122,128, 29, 1, 0, 0, 0, 64,126,128, 29, + 1, 0, 0, 0,160, 97,128, 29, 1, 0, 0, 0, 0, 99,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,160, 97,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 99,128, 29, 1, 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,168, 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, - 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, + 79, 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, 80, 1, 31, 0, 80, 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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,197, 1, 0, 0, +227, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 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, - 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 99,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 97,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0,128,159, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0, 1,128,159, 67, 1,128,217,195, 0, 0, 0, 0, 63, 1, 0, 0, + 80, 1, 0, 0, 18, 0, 0, 0,196, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 62, 1, 0, 0, 18, 0, 0, 0,196, 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, 80, 1,197, 1, 63, 1,179, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, +196, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,197, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,100,128, 29, 1, 0, 0, 0,176,120,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,100,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,101,128, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -112,144,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,146,163, 29, 1, 0, 0, 0,224,142,163, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0,213,254, 63, 1, 69, 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, 2, 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, 63, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,146,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -144,147,163, 29, 1, 0, 0, 0,112,144,163, 29, 1, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0,240,101,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,103,128, 29, + 1, 0, 0, 0, 96,100,128, 29, 1, 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, 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, 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,153,254, 63, 1, 36, 0, 20, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,103,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,105,128, 29, 1, 0, 0, 0,240,101,128, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -144,147,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,149,163, 29, 1, 0, 0, 0, 0,146,163, 29, 1, 0, 0, 0, - 32,198, 17, 27, 1, 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, 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, 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, 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, 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, 50,255, 63, 1, 61, 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,135,255, 63, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,105,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,106,128, 29, + 1, 0, 0, 0,128,103,128, 29, 1, 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, 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, 12, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,149,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -176,150,163, 29, 1, 0, 0, 0,144,147,163, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,106,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,108,128, 29, 1, 0, 0, 0, 16,105,128, 29, 1, 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, - 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, 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, - 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, 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,111,255, 63, 1, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0,153,254, 63, 1, 36, 0, 20, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -176,150,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,152,163, 29, 1, 0, 0, 0, 32,149,163, 29, 1, 0, 0, 0, - 96,202, 17, 27, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,108,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,109,128, 29, + 1, 0, 0, 0,160,106,128, 29, 1, 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, 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, + 63, 1, 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,140,254, 63, 1,203, 0, 0, 0, 0, 0, 0, 0, 10, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,109,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,111,128, 29, 1, 0, 0, 0, 48,108,128, 29, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64,152,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -208,153,163, 29, 1, 0, 0, 0,176,150,163, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, - 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, 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, - 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,111,255, 63, 1, 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, 58,254, 63, 1, 58, 0, 20, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,111,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,112,128, 29, + 1, 0, 0, 0,192,109,128, 29, 1, 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, 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, + 63, 1,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, 68, 65, 84, 65, 88, 1, 0, 0, -208,153,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,155,163, 29, 1, 0, 0, 0, 64,152,163, 29, 1, 0, 0, 0, - 32,207, 17, 27, 1, 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, 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,188,253, 63, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,112,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,114,128, 29, 1, 0, 0, 0, 80,111,128, 29, 1, 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, 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, 63, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,155,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -240,156,163, 29, 1, 0, 0, 0,208,153,163, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0,112,114,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,116,128, 29, + 1, 0, 0, 0,224,112,128, 29, 1, 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, 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,188,253, + 63, 1,102, 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, - 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, 59,253, 63, 1,105, 0, 0, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,116,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,117,128, 29, 1, 0, 0, 0,112,114,128, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -240,156,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,158,163, 29, 1, 0, 0, 0, 96,155,163, 29, 1, 0, 0, 0, - 16,142, 17, 27, 1, 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, 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, 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, 0, 0, 0, 0, 35,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 59,253, 63, 1,105, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,158,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 32,161,163, 29, 1, 0, 0, 0,240,156,163, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,144,117,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,119,128, 29, + 1, 0, 0, 0, 0,116,128, 29, 1, 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, 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, 35,253, + 63, 1, 0, 0, 0, 0, 0, 0, 4, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,119,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,120,128, 29, 1, 0, 0, 0,144,117,128, 29, 1, 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, 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, 11,253, 63, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 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, 11,253, 63, 1, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 32,161,163, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,158,163, 29, 1, 0, 0, 0, -144,217, 17, 27, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,120,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,119,128, 29, 1, 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, 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,243,252, + 63, 1, 0, 0, 20, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0, 64,122,128, 29, + 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,126,128, 29, 1, 0, 0, 0, 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,243,252, 63, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,176,162,163, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, -176,166,163, 29, 1, 0, 0, 0, 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, 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, 40, 1, 0, 0,128,123,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,224,124,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,124,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,123,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,166,162, 21, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,240,163,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,165,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,165,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,163,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 92,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 92,131, 27, 1, 0, 0, 0,157, 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, - 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,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, 48, 14, 4, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 14, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, + 32, 1, 0, 0, 64,126,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,122,128, 29, + 1, 0, 0, 0,128,123,128, 29, 1, 0, 0, 0,224,124,128, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,127,128, 29, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,136,128, 29, 1, 0, 0, 0,192, 96,128, 29, 1, 0, 0, 0, 96,242,129, 29, + 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,192,227,179, 21, 1, 0, 0, 0,240, 39,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,127, 0, 0, 0, 15, 15, 48, 6,128, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,131,128, 29, 1, 0, 0, 0, 0,135,128, 29, 1, 0, 0, 0,128,128,128, 29, + 1, 0, 0, 0,224,129,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,224,129,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 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, 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, 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, 68, 65, 84, 65, 32, 1, 0, 0,176,166,163, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,162,163, 29, 1, 0, 0, 0,240,163,163, 29, 1, 0, 0, 0, - 80,165,163, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,129,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, 29, 1, 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, +101, 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,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, 47, 6, 0, 0, 26, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -208,171,163, 29, 1, 0, 0, 0, 32,136,163, 29, 1, 0, 0, 0,224,182,162, 29, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, - 64,242,142, 27, 1, 0, 0, 0, 64,141,160, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0,127, 0, 0, 0, 15, 15, 48, 6,128, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,109,217, 2, 1, 0, 0, 0, -208,170,163, 29, 1, 0, 0, 0,240,248,162, 29, 1, 0, 0, 0, 16,168,163, 29, 1, 0, 0, 0,112,169,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255,199, 20, 1, 0, 0, 0,224, 25,200, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 16,168,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,169,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 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, 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, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,131,128, 29, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 0,135,128, 29, 1, 0, 0, 0, 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, - 68, 65, 84, 65, 40, 1, 0, 0,112,169,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,168,163, 29, 1, 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,101, 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, -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, 47, 6, 0, 0, 26, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, - 68, 65, 84, 65,200, 0, 0, 0,208,170,163, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,248,162, 29, 1, 0, 0, 0, - 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,132,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,133,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,133,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,132,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 40, 1, 0, 0, 48,246,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,247,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,247,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,246,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 7, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,192, 7, 3, 1, 0, 0, 0,157, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 18, 4, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 18, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, + 32, 1, 0, 0, 0,135,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,131,128, 29, + 1, 0, 0, 0, 64,132,128, 29, 1, 0, 0, 0,160,133,128, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,136,128, 29, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,160,127,128, 29, 1, 0, 0, 0, 0,252,130, 29, + 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0, 0,160,129, 29, 1, 0, 0, 0,160,201,129, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0,115, 3, 0, 0, 3, 3, 80, 1,143, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,128, 29, 1, 0, 0, 0, 48,149,128, 29, 1, 0, 0, 0, 64,137,128, 29, + 1, 0, 0, 0,160,138,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,137,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,138,128, 29, 1, 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,168, 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, 79, 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, 80, 1, 26, 0, 80, 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, 49, 6, 0, 0,128, 7, 0, 0, 90, 3, 0, 0,115, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,138,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,137,128, 29, 1, 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,159, 67, 0,128,177,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0, +116, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0, +116, 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, 80, 1,117, 1, 63, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0, 89, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,248,162, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,170,163, 29, 1, 0, 0, 0, 48,246,162, 29, 1, 0, 0, 0, -144,247,162, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,140,128, 29, 1, 0, 0, 0,167, 0, 0, 0, + 1, 0, 0, 0, 48,145,128, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65,160, 0, 0, 0,208,171,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -176,187,162, 29, 1, 0, 0, 0, 16,160,163, 29, 1, 0, 0, 0,160,237,142, 27, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, - 16,176, 20, 27, 1, 0, 0, 0, 0, 62,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, -229, 1, 0, 0,115, 3, 0, 0, 3, 3, 80, 1,143, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,217, 2, 1, 0, 0, 0, - 16,253,162, 29, 1, 0, 0, 0, 80,186,162, 29, 1, 0, 0, 0, 80,250,162, 29, 1, 0, 0, 0,176,251,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 46,200, 20, 1, 0, 0, 0, 32, 66,201, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,250,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,251,162, 29, 1, 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,168, 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, 79, 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, 80, 1, - 26, 0, 80, 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, - 49, 6, 0, 0,128, 7, 0, 0, 90, 3, 0, 0,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,108,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,176,251,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,250,162, 29, 1, 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,159, 67, - 0,128,177,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,116, 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, 80, 1, -117, 1, 63, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,128, 7, 0, 0,229, 1, 0, 0, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,107,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 16,253,162, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, - 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,176,238,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,238,109, 27, 1, 0, 0, 0,219, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 96,141,128, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 96,141,128, 29, + 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0, + 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,112,142,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,143,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,208,143,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,142,128, 29, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,145,128, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48,149,128, 29, 1, 0, 0, 0, 0,140,128, 29, + 1, 0, 0, 0,112,142,128, 29, 1, 0, 0, 0,208,143,128, 29, 1, 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,176, 46,202, 20, 1, 0, 0, 0,176, 46,202, 20, 1, 0, 0, 0,160,254,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,160,254,161, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, -112,254,162, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,254,162, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,255,162, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,224, 0,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 0,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,162, 29, 1, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,146,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,147,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0, 80,186,162, 29, 1, 0, 0, 0, 16,253,162, 29, 1, 0, 0, 0,128,255,162, 29, 1, 0, 0, 0, -224, 0,163, 29, 1, 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, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208,147,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,146,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,183,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,184,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,184,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,183,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,196, 7, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,196, 7, 3, + 1, 0, 0, 0,157, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 6, 5, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 80,186,162, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 2,163, 29, 1, 0, 0, 0, -144,183,162, 29, 1, 0, 0, 0,240,184,162, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,187,162, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0,208,171,163, 29, 1, 0, 0, 0,240,143, 21, 27, 1, 0, 0, 0, - 96, 4,162, 29, 1, 0, 0, 0, 32, 31,142, 27, 1, 0, 0, 0, 64,242,142, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0, 99, 4, 0, 0, 1, 1,147, 3,227, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,111,217, 2, 1, 0, 0, 0, 96,206,162, 29, 1, 0, 0, 0,128,210,162, 29, 1, 0, 0, 0,144,188,162, 29, 1, 0, 0, 0, - 0,205,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,176,160, 21, 1, 0, 0, 0, -160,112,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,188,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,189,162, 29, 1, 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,100, 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,146, 3, 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,147, 3, 26, 0,147, 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,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,189,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 80,191,162, 29, 1, 0, 0, 0,144,188,162, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,201, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 48,116,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,191,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -176,192,162, 29, 1, 0, 0, 0,240,189,162, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0,155, 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, 1, 0, 0, 0, 0, 0, 0, 0, - 0,118,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,192,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0,205,162, 29, 1, 0, 0, 0, 80,191,162, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0, -112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,194,162, 29, 1, 0, 0, 0, -112,203,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,194,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -160,195,162, 29, 1, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -160,195,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,197,162, 29, 1, 0, 0, 0, 16,194,162, 29, 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,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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,197,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -192,198,162, 29, 1, 0, 0, 0,160,195,162, 29, 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, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48,149,128, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48,145,128, 29, 1, 0, 0, 0,112,146,128, 29, 1, 0, 0, 0,208,147,128, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0, 96,136,128, 29, + 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0,192,227,179, 21, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0, 99, 4, 0, 0, 1, 1,147, 3, +227, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,169,128, 29, 1, 0, 0, 0, 96,173,128, 29, + 1, 0, 0, 0,112,151,128, 29, 1, 0, 0, 0,224,167,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,112,151,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,152,128, 29, 1, 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,100, 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, - 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, +146, 3, 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,147, 3, 26, 0,147, 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,157, 2, 0, 0, 47, 6, 0, 0,129, 0, 0, 0, +154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -192,198,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,200,162, 29, 1, 0, 0, 0, 48,197,162, 29, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,152,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,154,128, 29, 1, 0, 0, 0,112,151,128, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0,157, 2, 0, 0,155, 0, 0, 0, + 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,201, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,154,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,155,128, 29, 1, 0, 0, 0,208,152,128, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, +155, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,200,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -224,201,162, 29, 1, 0, 0, 0,192,198,162, 29, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,155,128, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,167,128, 29, 1, 0, 0, 0, 48,154,128, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, + 99, 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, - 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,240,156,128, 29, 1, 0, 0, 0, 80,166,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,156,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,158,128, 29, 1, 0, 0, 0, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -224,201,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,203,162, 29, 1, 0, 0, 0, 80,200,162, 29, 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,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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,203,162, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,201,162, 29, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,158,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,160,128, 29, + 1, 0, 0, 0,240,156,128, 29, 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,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, - 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,160,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,161,128, 29, 1, 0, 0, 0,128,158,128, 29, 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, 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,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,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, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 0,205,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,192,162, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,161,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,163,128, 29, + 1, 0, 0, 0, 16,160,128, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,163,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,164,128, 29, 1, 0, 0, 0,160,161,128, 29, 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, 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,157, 2, 0, 0, 47, 6, 0, 0, -155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 48, 10, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 10, 5, 28, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 38, 67,148, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,200, 42,243, 62,208,249,224,190, 48,180, 81,191,184,158, 81,191, - 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,206,156,122, 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, 88, 62,181, 62, 47,143, 73, 63,144,162, 59,188, 0, 0, 96,179, -191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194,185,204,216, 65,104,156, 5,194,212,247,159,192, -235, 62,114, 66, 61,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,200, 42,243, 62,208,249,224,190, 48,180, 81,191,184,158, 81,191, - 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188,206,156,122, 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,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,197, 7, 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,149, 87,247, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,164,128, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,166,128, 29, + 1, 0, 0, 0, 48,163,128, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,166,128, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,164,128, 29, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,167,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144,155,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,206,162, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, -128,210,162, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 40, 1, 0, 0,192,207,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,209,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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,157, 2, 0, 0, 47, 6, 0, 0,155, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,147, 3,201, 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, 48,120,131, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,120,131, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 38, 67,148, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,200, 42,243, 62, +208,249,224,190, 48,180, 81,191,184,158, 81,191, 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188, +206,156,122, 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, 88, 62,181, 62, + 47,143, 73, 63,144,162, 59,188, 0, 0, 96,179,191, 15,188,190,128, 75, 53, 62,217,125, 81, 63, 0, 0, 96,178, 67,108,117,194, +185,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 61,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,200, 42,243, 62, +208,249,224,190, 48,180, 81,191,184,158, 81,191, 49, 54,135, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,222,187,123,188, +206,156,122, 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,124,197, 7, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,197, 7, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,124,197, 7, 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,149, 87,247, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 32,209,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,207,162, 29, 1, 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,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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,200, 0, 0, 0,128,210,162, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,206,162, 29, 1, 0, 0, 0,192,207,162, 29, 1, 0, 0, 0, 32,209,162, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0, -176,187,162, 29, 1, 0, 0, 0,240,185,140, 27, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, -240,143, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,129, 0, 0, 0,147, 1, 0, 0, - 2, 2,156, 2, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,120,217, 2, 1, 0, 0, 0,224,217,162, 29, 1, 0, 0, 0, -112,235,162, 29, 1, 0, 0, 0, 96,212,162, 29, 1, 0, 0, 0,128,216,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 41,201, 20, 1, 0, 0, 0, 96, 61,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 96,212,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,213,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 0, 0, -129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,122,217, 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, 68, 65, 84, 65, 32, 1, 0, 0, 64,169,128, 29, + 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 96,173,128, 29, 1, 0, 0, 0, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -192,213,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,215,162, 29, 1, 0, 0, 0, 96,212,162, 29, 1, 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,103,195, 0, 0, 0, 0, -200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,248, 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,248, 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, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,249, 0,200, 0,231, 0, 0, 0, - 0, 0, 0, 0, 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, -155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,249, 0, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,123,217, 2, 1, 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, 40, 1, 0, 0,160,170,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0,172,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 32,215,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,216,162, 29, 1, 0, 0, 0,192,213,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,172,128, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,170,128, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96,173,128, 29, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,169,128, 29, 1, 0, 0, 0,160,170,128, 29, 1, 0, 0, 0, 0,172,128, 29, + 1, 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,155, 2, 0, 0,155, 2, 0, 0, -155, 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, - 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,124,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -128,216,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,215,162, 29, 1, 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,248, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,248, 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,195, 1,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,217, 0, 0, 0,155, 2, 0, 0, -155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 1,249, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,121,217, 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, 68, 65, 84, 65,248, 0, 0, 0, -224,217,162, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 48,159,111, 27, 1, 0, 0, 0,144,150,128, 29, 1, 0, 0, 0,144,239,129, 29, 1, 0, 0, 0,128, 65,129, 29, + 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0,144, 35,245, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +155, 2, 0, 0,129, 0, 0, 0,147, 1, 0, 0, 2, 2,156, 2, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0, 48,158,111, 27, 1, 0, 0, 0, 64,175,128, 29, 1, 0, 0, 0, 96,179,128, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,175,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,176,128, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 39, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 0, 0,129, 0, 0, 0,154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,156, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,176,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,178,128, 29, + 1, 0, 0, 0, 64,175,128, 29, 1, 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,103,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,248, 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,248, 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, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0,217, 0,249, 0,200, 0,231, 0, 0, 0, 0, 0, 0, 0, 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,155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0,249, 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, - 16,219,162, 29, 1, 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, 32, 0, 0, 0, 16,219,162, 29, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,112,219,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,220,162, 29, 1, 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,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, - 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,178,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,179,128, 29, + 1, 0, 0, 0,160,176,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,220,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,222,162, 29, 1, 0, 0, 0, -112,219,162, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,222,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,220,162, 29, 1, 0, 0, 0, 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,155, 2, 0, 0,155, 2, 0, 0,155, 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, 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,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, 68, 65, 84, 65, 40, 1, 0, 0, 96,179,128, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,178,128, 29, 1, 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,248, 0, 0, 0, 18, 0, 0, 0, +194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,248, 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,195, 1,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,217, 0, 0, 0,155, 2, 0, 0,155, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 1,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, - 68, 65, 84, 65,168, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 80,231,162, 29, 1, 0, 0, 0, -224,217,162, 29, 1, 0, 0, 0,112,219,162, 29, 1, 0, 0, 0, 48,222,162, 29, 1, 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, 68, 65, 84, 65,248, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 24,131, 29, + 1, 0, 0, 0, 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,128, 63, 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,112,224,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,225,162, 29, 1, 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, 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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,225,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,227,162, 29, 1, 0, 0, 0, -112,224,162, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,227,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,228,162, 29, 1, 0, 0, 0, -208,225,162, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,228,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,229,162, 29, 1, 0, 0, 0, - 48,227,162, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,229,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,228,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 14, 5, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 14, 5, 28, 1, 0, 0, 0,157, 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, 48,184,110, 27, 1, 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, 32, 0, 0, 0, 48,184,110, 27, + 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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,144,184,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 23,131, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 23,131, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,208,145,111, 27, 1, 0, 0, 0,144,184,110, 27, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,231,162, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0,112,235,162, 29, 1, 0, 0, 0,144,223,162, 29, 1, 0, 0, 0,112,224,162, 29, 1, 0, 0, 0, -240,229,162, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,145,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 23,131, 29, 1, 0, 0, 0, 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, - 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,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, 40, 1, 0, 0,176,232,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 16,234,162, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,128, 24,131, 29, 1, 0, 0, 0,168, 0, 0, 0, + 1, 0, 0, 0, 16,154,111, 27, 1, 0, 0, 0, 0,183,110, 27, 1, 0, 0, 0,144,184,110, 27, 1, 0, 0, 0,208,145,111, 27, + 1, 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, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,234,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,232,162, 29, 1, 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,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, 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,128, 63, 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, 48,147,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,144,148,111, 27, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,112,235,162, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,231,162, 29, 1, 0, 0, 0,176,232,162, 29, 1, 0, 0, 0, 16,234,162, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,148,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,240,149,111, 27, 1, 0, 0, 0, 48,147,111, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,149,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 80,151,111, 27, 1, 0, 0, 0,144,148,111, 27, 1, 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, 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, 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,160, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -144, 0,164, 29, 1, 0, 0, 0,128,211,162, 29, 1, 0, 0, 0, 32,142,160, 21, 1, 0, 0, 0,208,140,162, 21, 1, 0, 0, 0, - 96, 4,162, 29, 1, 0, 0, 0, 80,164, 21, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, -149, 1, 0, 0, 99, 4, 0, 0, 12, 12,156, 2,207, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,159,217, 2, 1, 0, 0, 0, - 80,230,163, 29, 1, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, 80,237,162, 29, 1, 0, 0, 0, 16,240,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,220,200, 20, 1, 0, 0, 0, 32,129,160, 21, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,237,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,238,162, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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,155, 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,156, 2, - 26, 0,156, 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, - 0, 0, 0, 0,155, 2, 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, -156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,160,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,151,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,176,152,111, 27, 1, 0, 0, 0,240,149,111, 27, 1, 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, 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, 0, 0, 0, 0, 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,176,238,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,240,162, 29, 1, 0, 0, 0, - 80,237,162, 29, 1, 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,192, 40,196, 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,180, 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,200, 0, -181, 2,200, 0,163, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0,181, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,161,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,152,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,151,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,240,162, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,238,162, 29, 1, 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,192, 40,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,180, 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,212, 1, -181, 2, 0, 0, 0, 0, 0, 0, 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,155, 2, 0, 0,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 1,181, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,159,217, 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, - 68, 65, 84, 65, 8, 1, 0, 0, 80,230,163, 29, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0,128,245,163, 29, 1, 0, 0, 0, - 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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,124,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,124,131, 27, 1, 0, 0, 0,157, 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, 48,180, 4, 28, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,144,231,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,241,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,241,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,242,163, 29, 1, 0, 0, 0, -144,231,163, 29, 1, 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,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, - 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, + 32, 1, 0, 0, 16,154,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 48,158,111, 27, 1, 0, 0, 0,128, 24,131, 29, + 1, 0, 0, 0, 48,147,111, 27, 1, 0, 0, 0,176,152,111, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,112,155,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,156,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 68, 65, 84, 65, 40, 1, 0, 0,192,242,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,244,163, 29, 1, 0, 0, 0, - 96,241,163, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208,156,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,155,111, 27, 1, 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,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, 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, 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, 68, 65, 84, 65,200, 0, 0, 0, 48,158,111, 27, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,154,111, 27, 1, 0, 0, 0,112,155,111, 27, + 1, 0, 0, 0,208,156,111, 27, 1, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 32,244,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,242,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,245,163, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0, - 80,230,163, 29, 1, 0, 0, 0,144,231,163, 29, 1, 0, 0, 0, 32,244,163, 29, 1, 0, 0, 0, 2, 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,160, 0, 0, 0, 48,159,111, 27, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0, 96,174,128, 29, 1, 0, 0, 0,128, 65,129, 29, + 1, 0, 0, 0,112,176,129, 29, 1, 0, 0, 0,160, 78,129, 29, 1, 0, 0, 0,208, 40,108, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,149, 1, 0, 0, 99, 4, 0, 0, 12, 12,156, 2,207, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,164,111, 27, 1, 0, 0, 0, 32,188,111, 27, 1, 0, 0, 0, 16,160,111, 27, + 1, 0, 0, 0,208,162,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,160,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,112,161,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 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,155, 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,156, 2, 26, 0,156, 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, 0, 0, 0, 0,155, 2, 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,156, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,161,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,208,162,111, 27, 1, 0, 0, 0, 16,160,111, 27, 1, 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,192, 40,196, 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, +180, 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,200, 0,181, 2,200, 0,163, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,181, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,162,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,161,111, 27, 1, 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,192, 40,196, 0, 0, 0, 0,195, 1, 0, 0,212, 1, 0, 0, 18, 0, 0, 0, +180, 2, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0, +180, 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,212, 1,181, 2, 0, 0, 0, 0, 0, 0, 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,155, 2, 0, 0,175, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,181, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,232,163, 29, 1, 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, 32, 0, 0, 0,240,232,163, 29, 1, 0, 0, 0, - 21, 1, 0, 0, 1, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,112,223,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -144,218,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 48,164,111, 27, 1, 0, 0, 0, 22, 1, 0, 0, + 1, 0, 0, 0,240,170,111, 27, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,218,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,219,163, 29, 1, 0, 0, 0,112,223,163, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,219,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,218,163, 29, 1, 0, 0, 0, 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, 48, 66,136, 27, + 1, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,165,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,208,166,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,166,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 48,168,111, 27, 1, 0, 0, 0,112,165,111, 27, 1, 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,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, 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,168, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, -112,174,163, 29, 1, 0, 0, 0,128,245,163, 29, 1, 0, 0, 0,112,223,163, 29, 1, 0, 0, 0,240,219,163, 29, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,234,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -176,235,163, 29, 1, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,168,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,144,169,111, 27, 1, 0, 0, 0,208,166,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,235,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -208,253,163, 29, 1, 0, 0, 0, 80,234,163, 29, 1, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,253,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 48,255,163, 29, 1, 0, 0, 0,176,235,163, 29, 1, 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, - 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,255,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 16,173,163, 29, 1, 0, 0, 0,208,253,163, 29, 1, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,144,169,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,168,111, 27, 1, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,173,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,255,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,170,111, 27, 1, 0, 0, 0,162, 0, 0, 0, + 1, 0, 0, 0, 64,176,111, 27, 1, 0, 0, 0, 48,164,111, 27, 1, 0, 0, 0,112,165,111, 27, 1, 0, 0, 0,144,169,111, 27, + 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,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,240,185,110, 27, 1, 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, + 32, 0, 0, 0,240,185,110, 27, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 32,172,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,173,111, 27, 1, 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,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, 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, - 48, 18, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 18, 5, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,173,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,174,111, 27, 1, 0, 0, 0, 32,172,111, 27, 1, 0, 0, 0, 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, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,224,174,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173,111, 27, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 64,176,111, 27, + 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0,184,111, 27, 1, 0, 0, 0,240,170,111, 27, 1, 0, 0, 0, 32,172,111, 27, + 1, 0, 0, 0,224,174,111, 27, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,177,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,178,111, 27, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,128,178,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,179,111, 27, 1, 0, 0, 0, 32,177,111, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,224,179,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,181,111, 27, 1, 0, 0, 0,128,178,111, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 64,181,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,182,111, 27, 1, 0, 0, 0,224,179,111, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,160,182,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,181,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,131, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,128,131, 27, + 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 32, 1, 0, 0, -112,174,163, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, 80,221,163, 29, 1, 0, 0, 0, - 80,234,163, 29, 1, 0, 0, 0, 16,173,163, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,208,175,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48,177,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,177,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,175,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,237,163, 29, 1, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,174,163, 29, 1, 0, 0, 0,208,175,163, 29, 1, 0, 0, 0, - 48,177,163, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 0,184,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 32,188,111, 27, + 1, 0, 0, 0, 64,176,111, 27, 1, 0, 0, 0, 32,177,111, 27, 1, 0, 0, 0,160,182,111, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 40, 1, 0, 0, 96,185,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,186,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192,186,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,185,111, 27, + 1, 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,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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144, 0,164, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,236,162, 29, 1, 0, 0, 0,176, 5,143, 27, 1, 0, 0, 0, - 32, 31,142, 27, 1, 0, 0, 0,144,246,142, 27, 1, 0, 0, 0, 16,176, 20, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 1, 1, 80, 1,239, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,111,217, 2, 1, 0, 0, 0, 80,181,163, 29, 1, 0, 0, 0,144,189,163, 29, 1, 0, 0, 0,144,178,163, 29, 1, 0, 0, 0, -240,179,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 62,201, 20, 1, 0, 0, 0, -240, 0,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,178,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,179,163, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,117, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0, -208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,179,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,178,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +200, 0, 0, 0, 32,188,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,111, 27, + 1, 0, 0, 0, 96,185,111, 27, 1, 0, 0, 0,192,186,111, 27, 1, 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, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,112,217, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 32,189,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,159,111, 27, + 1, 0, 0, 0, 32,106,130, 29, 1, 0, 0, 0,160, 56,130, 29, 1, 0, 0, 0, 0, 61,131, 29, 1, 0, 0, 0, 0,160,129, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 99, 4, 0, 0, 1, 1, 80, 1, +239, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,192,110, 27, 1, 0, 0, 0, 96,191,111, 27, + 1, 0, 0, 0, 0,190,111, 27, 1, 0, 0, 0,176, 18,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0,190,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 18,131, 29, 1, 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, - 48, 22, 5, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 22, 5, 28, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, - 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,160, 71, 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,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128, -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, - 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63, -179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,118,101,150,191,216, 49, 49, 65,152, 9, 52, 65, -231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180, 27, 97,208,189, 70, 41,205, 61,173,247,146, 62, 0, 0,166, 51, -211,120, 21,194,145, 5, 2, 66, 9,136,213,193,193,214,159,192,219, 38, 19, 66,197,173,255,193,157,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, - 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63, -179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191,118,101,150,191,216, 49, 49, 65,152, 9, 52, 65, +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, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, +117, 3, 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, -241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,210, 47, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 18,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, + 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,240,133, 27, + 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,160, 71, 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,128, + 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,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, 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, + 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191, +118,101,150,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,160,206,159,187, 0, 0,168,180, 27, 97,208,189, + 70, 41,205, 61,173,247,146, 62, 0, 0,166, 51,211,120, 21,194,145, 5, 2, 66, 9,136,213,193,193,214,159,192,219, 38, 19, 66, +197,173,255,193,157,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, 3,201,194, 63, 30,108,125,191,244,250, 39,191, 8,165, 39,191,143,164,206, 63, + 41,130,121, 63,180,164, 28, 63,149, 84, 28, 63,179,153,196,188, 10,188, 50, 64, 8,108,228,190, 50,247,227,190, 82, 21, 64,191, +118,101,150,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, 3, 35,171,190, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 80,181,163, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,112,185,163, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,182,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16,184,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,184,163, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,182,163, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,185,163, 29, 1, 0, 0, 0, -167, 0, 0, 0, 1, 0, 0, 0,144,189,163, 29, 1, 0, 0, 0, 80,181,163, 29, 1, 0, 0, 0,176,182,163, 29, 1, 0, 0, 0, - 16,184,163, 29, 1, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 48,209,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,209,161, 29, 1, 0, 0, 0, -219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,222,163, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, - 48,222,163, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,208,186,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,188,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,188,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,186,163, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,189,163, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,185,163, 29, 1, 0, 0, 0,208,186,163, 29, 1, 0, 0, 0, 48,188,163, 29, 1, 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, 2, 0, 0, 0, 0, 0, 0, 0, - 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, -208,190,163, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,208, 30,165, 29, 1, 0, 0, 0,112,122,163, 29, 1, 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,208,224,163, 29, 1, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, - 0, 3,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0,208,224,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,225,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 48,225,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0,208,224,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -160,192,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, - 64,192,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 0,193,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 32,194,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, -192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -128,194,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -160,195,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,180, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, - 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, - 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0, 96,196,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, - 48,225,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0,192,196,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, - 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, 32,197,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, - 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0,128,197,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, -192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0,224,197,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, -192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, 64,198,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, - 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0,160,198,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, - 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0, 0,199,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, - 32,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, 96,199,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, -192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0,192,199,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, -128,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0, 32,200,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, -224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0,128,200,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, -224,194,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0,224,200,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, - 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0, 64,201,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, - 64,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0,160,201,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, -208,224,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, 0,202,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, 96,202,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0,192,202,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0, 32,203,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0, -160,195,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0,128,203,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, - 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,204,163, 29, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,203,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, -208,224,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, - 48,225,163, 29, 1, 0, 0, 0,224,191,163, 29, 1, 0, 0, 0, 0,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, -208,144,217, 2, 1, 0, 0, 0, 80, 30,165, 29, 1, 0, 0, 0, 80, 30,165, 29, 1, 0, 0, 0, 32,207,163, 29, 1, 0, 0, 0, -240, 9,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 69,201, 20, 1, 0, 0, 0, -208,112,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,207,163, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240, 9,164, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 9,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,207,163, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 16, 15,164, 29, 1, 0, 0, 0, 64,206,163, 29, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, -192,193,163, 29, 1, 0, 0, 0, 64,192,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, - 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,100, 1,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16,109,217, 2, 1, 0, 0, 0, - 16, 14,164, 29, 1, 0, 0, 0, 0,173,164, 29, 1, 0, 0, 0, 80, 11,164, 29, 1, 0, 0, 0,176, 12,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,180,160, 21, 1, 0, 0, 0,240, 11,143, 27, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80, 11,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 12,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 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, 99, 1, 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,100, 1, - 26, 0,100, 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, - 29, 6, 0, 0,128, 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, -100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,176, 12,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 11,164, 29, 1, 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, 99, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 18, 0, 0, 0, 73, 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,100, 1, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, - 68, 65, 84, 65,200, 0, 0, 0, 16, 14,164, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0,173,164, 29, 1, 0, 0, 0, - 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, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 64,170,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,171,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,171,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,170,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,208, 2, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,208, 2, 28, 1, 0, 0, 0,157, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 48,192,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 80,196,110, 27, + 1, 0, 0, 0, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, + 40, 1, 0, 0,144,193,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,194,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,240,194,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,193,110, 27, + 1, 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,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, 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, 0, 0, 0, 0, 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, 0,173,164, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14,164, 29, 1, 0, 0, 0, 64,170,164, 29, 1, 0, 0, 0, -160,171,164, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,196,110, 27, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 96,191,111, 27, 1, 0, 0, 0, 48,192,110, 27, + 1, 0, 0, 0,144,193,110, 27, 1, 0, 0, 0,240,194,110, 27, 1, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16, 15,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -112,203,164, 29, 1, 0, 0, 0,128,208,163, 29, 1, 0, 0, 0, 96,193,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0, - 0,193,163, 29, 1, 0, 0, 0,192,193,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, -101, 0, 0, 0, 99, 4, 0, 0, 4, 4,100, 1,255, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, -192,192,164, 29, 1, 0, 0, 0, 16,202,164, 29, 1, 0, 0, 0, 96,174,164, 29, 1, 0, 0, 0,192,175,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 13,201, 20, 1, 0, 0, 0, 16,117,160, 21, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 96,174,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,175,164, 29, 1, 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,178, 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, 99, 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,100, 1, - 31, 0,100, 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, 0, 0, 0, 0, - 29, 6, 0, 0,128, 7, 0, 0, 69, 4, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,192,175,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,174,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 64,115,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67, -254,127,115,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0,223, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0,223, 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, 4, 6, 0,100, 1, -224, 3, 83, 1,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 78,201, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 1,224, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,177,164, 29, 1, 0, 0, 0, 48,191,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 32,177,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,178,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 80,186,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, 82, 1, 36, 0, - 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 68, 65, 84, 65, + 16, 0, 0, 0, 80,186,110, 27, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 20,131, 29, + 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16, 20,131, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, + 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,197,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 16,199,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,178,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 64,180,164, 29, 1, 0, 0, 0, 32,177,164, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,199,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,197,110, 27, 1, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0, 96,191,111, 27, 1, 0, 0, 0,163, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,196,110, 27, 1, 0, 0, 0,176,197,110, 27, 1, 0, 0, 0, 16,199,110, 27, + 1, 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,135,255, 82, 1, 61, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 64,180,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,181,164, 29, 1, 0, 0, 0, -176,178,164, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 82, 1, 0, 0, - 0, 0, 0, 0, 4, 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, + 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, 83, 78, 0, 0,208, 0, 0, 0,240,200,110, 27, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32,158,131, 29, + 1, 0, 0, 0, 48, 90,128, 29, 1, 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, 0,202,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 64,207,110, 27, 1, 0, 0, 0, 32,215,110, 27, + 1, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0, 96, 57,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 96,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,202,110, 27, + 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 96,202,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,203,110, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,204,110, 27, + 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0,224,203,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,204,110, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,100, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,205,110, 27, + 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 96,205,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,206,110, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 64,207,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,207,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160,207,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,208,110, 27, 1, 0, 0, 0, 64,207,110, 27, + 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 0,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,208,110, 27, 1, 0, 0, 0,160,207,110, 27, + 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 96,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,208,110, 27, 1, 0, 0, 0, 0,208,110, 27, + 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,192,208,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,209,110, 27, 1, 0, 0, 0, 96,208,110, 27, + 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 32,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,209,110, 27, 1, 0, 0, 0,192,208,110, 27, + 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,128,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,209,110, 27, 1, 0, 0, 0, 32,209,110, 27, + 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,224,209,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,210,110, 27, 1, 0, 0, 0,128,209,110, 27, + 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 64,210,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,210,110, 27, 1, 0, 0, 0,224,209,110, 27, + 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160,210,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,211,110, 27, 1, 0, 0, 0, 64,210,110, 27, + 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 0,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,211,110, 27, 1, 0, 0, 0,160,210,110, 27, + 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 96,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,211,110, 27, 1, 0, 0, 0, 0,211,110, 27, + 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,192,211,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,212,110, 27, 1, 0, 0, 0, 96,211,110, 27, + 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 32,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,212,110, 27, 1, 0, 0, 0,192,211,110, 27, + 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,128,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,212,110, 27, 1, 0, 0, 0, 32,212,110, 27, + 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,224,212,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,213,110, 27, 1, 0, 0, 0,128,212,110, 27, + 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 64,213,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,213,110, 27, 1, 0, 0, 0,224,212,110, 27, + 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160,213,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,214,110, 27, 1, 0, 0, 0, 64,213,110, 27, + 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 0,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,214,110, 27, 1, 0, 0, 0,160,213,110, 27, + 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 96,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,214,110, 27, 1, 0, 0, 0, 0,214,110, 27, + 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,192,214,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,215,110, 27, 1, 0, 0, 0, 96,214,110, 27, + 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 32,215,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,214,110, 27, + 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,219,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 96,202,110, 27, 1, 0, 0, 0,192,202,110, 27, 1, 0, 0, 0,224,203,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, + 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,142,111, 27, 1, 0, 0, 0, 80,142,111, 27, + 1, 0, 0, 0, 96,216,110, 27, 1, 0, 0, 0,192,217,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 96,216,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,217,110, 27, 1, 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, 32,240, 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, +128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0, +126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,217,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,216,110, 27, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0, +128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 32,219,110, 27, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,227,110, 27, 1, 0, 0, 0,128,215,110, 27, 1, 0, 0, 0,224,206,110, 27, + 1, 0, 0, 0, 64,204,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 32,203,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,100, 1,100, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,222,110, 27, 1, 0, 0, 0,128,226,110, 27, 1, 0, 0, 0, 0,220,110, 27, + 1, 0, 0, 0, 96,221,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,220,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 96,221,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0,221, 67, 0,128, 71, 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, 99, 1, 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,100, 1, 26, 0,100, 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, 29, 6, 0, 0,128, 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,100, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,221,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,110, 27, 1, 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, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 18, 0, 0, 0, + 73, 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,100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192,222,110, 27, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0,128,226,110, 27, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,223,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32,225,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,225,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,223,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,244,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,244,133, 27, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 1, 0, 0,128,226,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,222,110, 27, + 1, 0, 0, 0,192,223,110, 27, 1, 0, 0, 0, 32,225,110, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,227,110, 27, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 1,111, 27, 1, 0, 0, 0, 32,219,110, 27, 1, 0, 0, 0, 64,204,110, 27, + 1, 0, 0, 0, 0,205,110, 27, 1, 0, 0, 0,224,203,110, 27, 1, 0, 0, 0,160,204,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 99, 4, 0, 0, 4, 4,100, 1,255, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,247,110, 27, 1, 0, 0, 0,112, 0,111, 27, 1, 0, 0, 0,192,228,110, 27, + 1, 0, 0, 0, 32,230,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,228,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32,230,110, 27, 1, 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,178, 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, 99, 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,100, 1, 31, 0,100, 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, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 69, 4, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,181,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 96,183,164, 29, 1, 0, 0, 0, 64,180,164, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,230,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,228,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, 0, 64,115,196, + 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,254,127,115,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, 18, 0, 0, 0, +223, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 18, 0, 0, 0, +223, 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, 4, 6, 0,100, 1,224, 3, 83, 1,206, 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, 29, 6, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 68, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,224, 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,128,231,110, 27, + 1, 0, 0, 0,144,245,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,231,110, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 16,233,110, 27, 1, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0,140,254, 82, 1,203, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 3, 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, 82, 1, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 96,183,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,184,164, 29, 1, 0, 0, 0, -208,181,164, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 82, 1, 58, 0, - 20, 0, 0, 0, 0, 0, 2, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 16,233,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,234,110, 27, 1, 0, 0, 0,128,231,110, 27, + 1, 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, 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, 82, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,240,184,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,128,186,164, 29, 1, 0, 0, 0, 96,183,164, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,234,110, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 48,236,110, 27, 1, 0, 0, 0, 16,233,110, 27, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0,188,253, 82, 1,102, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 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, 82, 1, 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, - 68, 65, 84, 65, 88, 1, 0, 0,128,186,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,188,164, 29, 1, 0, 0, 0, -240,184,164, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 48,236,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,237,110, 27, 1, 0, 0, 0,160,234,110, 27, + 1, 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, 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, 0, 0, 0, 0, 59,253, 82, 1,105, 0, - 0, 0, 0, 0, 0, 0, 2, 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,140,254, 82, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,188,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,160,189,164, 29, 1, 0, 0, 0,128,186,164, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,237,110, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 80,239,110, 27, 1, 0, 0, 0, 48,236,110, 27, 1, 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, 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, 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, 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, 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, 0, 0, 0, 0, 35,253, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58,254, 82, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 80,239,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,240,110, 27, 1, 0, 0, 0,192,237,110, 27, + 1, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0,160,189,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,191,164, 29, 1, 0, 0, 0, - 16,188,164, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 11,253, 82, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 2, 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,188,253, 82, 1,102, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,191,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,164, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,240,110, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,112,242,110, 27, 1, 0, 0, 0, 80,239,110, 27, 1, 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, 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, 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, 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, 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, 0, 0, 0, 0,243,252, 82, 1, 0, 0, 20, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59,253, 82, 1,105, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,112,242,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,244,110, 27, 1, 0, 0, 0,224,240,110, 27, + 1, 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, 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, - 68, 65, 84, 65, 0, 1, 0, 0,192,192,164, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 32,198,164, 29, 1, 0, 0, 0, - 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, 35,253, 82, 1, 0, 0, 0, 0, 0, 0, + 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,244,110, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,144,245,110, 27, 1, 0, 0, 0,112,242,110, 27, 1, 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, 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, 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, -160, 26,200, 20, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 0,194,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,195,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 11,253, 82, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 96,195,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,196,164, 29, 1, 0, 0, 0, 0,194,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,144,245,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,110, 27, + 1, 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, 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,243,252, 82, 1, 0, 0, 20, 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, 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, 68, 65, 84, 65, 0, 1, 0, 0, 32,247,110, 27, 1, 0, 0, 0,163, 0, 0, 0, + 1, 0, 0, 0,128,252,110, 27, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, -192,196,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,195,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 32,198,164, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16,202,164, 29, 1, 0, 0, 0,192,192,164, 29, 1, 0, 0, 0, - 0,194,164, 29, 1, 0, 0, 0,192,196,164, 29, 1, 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, 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, 40, 1, 0, 0, 96,248,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,249,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,249,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,251,110, 27, + 1, 0, 0, 0, 96,248,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,199,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,200,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,200,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,199,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,251,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192,249,110, 27, 1, 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,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, + 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,212, 2, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,212, 2, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65,240, 0, 0, 0,128,252,110, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,112, 0,111, 27, + 1, 0, 0, 0, 32,247,110, 27, 1, 0, 0, 0, 96,248,110, 27, 1, 0, 0, 0, 32,251,110, 27, 1, 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,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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 16,202,164, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,198,164, 29, 1, 0, 0, 0, 80,199,164, 29, 1, 0, 0, 0, -176,200,164, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,203,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -176,236,164, 29, 1, 0, 0, 0, 16, 15,164, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0, -224,194,163, 29, 1, 0, 0, 0, 0,196,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, - 0, 0, 0, 0,179, 1, 0, 0, 1, 1, 27, 3,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0, - 32,222,164, 29, 1, 0, 0, 0,176,235,164, 29, 1, 0, 0, 0, 80,204,164, 29, 1, 0, 0, 0,192,220,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,140, 27, 1, 0, 0, 0,240, 90,201, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,204,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,205,164, 29, 1, 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, 70, 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, 26, 3, 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, 27, 3, - 26, 0, 27, 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, - 1, 3, 0, 0, 27, 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, - 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,176,205,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,207,164, 29, 1, 0, 0, 0, - 80,204,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,154, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 16,207,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,208,164, 29, 1, 0, 0, 0, -176,205,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 0, 0, 27, 6, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,112,208,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,220,164, 29, 1, 0, 0, 0, - 16,207,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,209,164, 29, 1, 0, 0, 0, 48,219,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,208,209,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,211,164, 29, 1, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,211,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,212,164, 29, 1, 0, 0, 0,208,209,164, 29, 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,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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,253,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 16,255,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,255,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,253,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,240,212,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,214,164, 29, 1, 0, 0, 0, - 96,211,164, 29, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128,214,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,216,164, 29, 1, 0, 0, 0,240,212,164, 29, 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, 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, 48,248,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,248,133, 27, 1, 0, 0, 0,157, 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, 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,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,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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 16,216,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,217,164, 29, 1, 0, 0, 0, -128,214,164, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,217,164, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,219,164, 29, 1, 0, 0, 0, 16,216,164, 29, 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,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, 68, 65, 84, 65, + 32, 1, 0, 0,112, 0,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,252,110, 27, + 1, 0, 0, 0,176,253,110, 27, 1, 0, 0, 0, 16,255,110, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208, 1,111, 27, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0,224,227,110, 27, 1, 0, 0, 0,128,206,110, 27, + 1, 0, 0, 0, 32,206,110, 27, 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0,224,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 1, 1, 27, 3,180, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 20,111, 27, 1, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,176, 2,111, 27, + 1, 0, 0, 0, 32, 19,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 2,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 16, 4,111, 27, 1, 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, 70, 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, 26, 3, 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, 27, 3, 26, 0, 27, 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, 1, 3, 0, 0, 27, 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, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 48,219,164, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,217,164, 29, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 4,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,112, 5,111, 27, 1, 0, 0, 0,176, 2,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,154, 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,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, 68, 65, 84, 65, 40, 1, 0, 0,112, 5,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,208, 6,111, 27, 1, 0, 0, 0, 16, 4,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,220,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,208,164, 29, 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, 40, 1, 0, 0,208, 6,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 19,111, 27, 1, 0, 0, 0,112, 5,111, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 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, 48, 8,111, 27, + 1, 0, 0, 0,144, 17,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 8,111, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192, 9,111, 27, 1, 0, 0, 0, 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, 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, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 48,216, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,216, 2, 28, 1, 0, 0, 0, -157, 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,240, 94, 95, 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,128, 0, 0, 0,128, - 72, 1, 77,190, 0, 0, 0,128,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, 79,200,141,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,189,151,139, 63, -180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,231, 72,168,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,204, 58,186,189,131, 90,183, 61, - 76, 88,131, 62, 0, 0,152, 50,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, 79,200,141,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,189,151,139, 63, -180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,231, 72,168,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, 68, 65, 84, 65, + 88, 1, 0, 0,192, 9,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 11,111, 27, 1, 0, 0, 0, 48, 8,111, 27, + 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,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, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190,214,211,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 11,111, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224, 12,111, 27, 1, 0, 0, 0,192, 9,111, 27, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,224, 12,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 14,111, 27, 1, 0, 0, 0, 80, 11,111, 27, + 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, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 32,222,164, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 64,226,164, 29, 1, 0, 0, 0, - 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, -128,223,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,224,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -224,224,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,223,164, 29, 1, 0, 0, 0, - 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 14,111, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 16,111, 27, 1, 0, 0, 0,224, 12,111, 27, 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, 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, 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, - 64,226,164, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, 32,222,164, 29, 1, 0, 0, 0, -128,223,164, 29, 1, 0, 0, 0,224,224,164, 29, 1, 0, 0, 0, 16, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 0, 16,111, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 17,111, 27, 1, 0, 0, 0,112, 14,111, 27, + 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,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, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 17,111, 27, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,111, 27, 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, 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, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,227,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0,229,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,229,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 96,230,164, 29, 1, 0, 0, 0,160,227,164, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 32, 19,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 6,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, + 27, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,230,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,252,133, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48,252,133, 27, 1, 0, 0, 0,157, 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,240, 94, 95, 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,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,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, 79,200,141,191,244,250, 39,191, + 8,165, 39,191,170,164,167, 63,189,151,139, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, + 50,247,227,190,222,212, 27,191,231, 72,168,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,204, 58,186,189,131, 90,183, 61, 76, 88,131, 62, 0, 0,152, 50,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, 79,200,141,191,244,250, 39,191, + 8,165, 39,191,170,164,167, 63,189,151,139, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, 90,254, 71, 64, 8,108,228,190, + 50,247,227,190,222,212, 27,191,231, 72,168,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, 68, 65, 84, 65,240, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0,176,235,164, 29, 1, 0, 0, 0, 64,226,164, 29, 1, 0, 0, 0,160,227,164, 29, 1, 0, 0, 0, - 96,230,164, 29, 1, 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,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, + 3, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 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, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -240,232,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,234,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 80,234,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,232,164, 29, 1, 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,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, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128, 20,111, 27, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0,160, 24,111, 27, 1, 0, 0, 0, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 40, 1, 0, 0,224, 21,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 23,111, 27, + 1, 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,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, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, -176,235,164, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,231,164, 29, 1, 0, 0, 0, -240,232,164, 29, 1, 0, 0, 0, 80,234,164, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 23,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224, 21,111, 27, 1, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 24,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 32, 30,111, 27, + 1, 0, 0, 0,128, 20,111, 27, 1, 0, 0, 0,224, 21,111, 27, 1, 0, 0, 0, 64, 23,111, 27, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -176,236,164, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 3,165, 29, 1, 0, 0, 0,112,203,164, 29, 1, 0, 0, 0, -128,194,163, 29, 1, 0, 0, 0,160,192,163, 29, 1, 0, 0, 0, 32,194,163, 29, 1, 0, 0, 0,224,194,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 16, 16, 28, 6,175, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,135,217, 2, 1, 0, 0, 0, 80,240,164, 29, 1, 0, 0, 0, 0, 2,165, 29, 1, 0, 0, 0, -144,237,164, 29, 1, 0, 0, 0,240,238,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 68,201, 20, 1, 0, 0, 0, 80,114,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,237,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,240,238,164, 29, 1, 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,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, 27, 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, 28, 6, 26, 0, 28, 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, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0,206, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,136,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,238,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,237,164, 29, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68,240, 80,128,193,136, 2, 4, 68, 11, 6, 0, 0, 28, 6, 0, 0, - 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, - 18, 0, 0, 0,148, 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, 28, 6,149, 2, 11, 6,131, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,136,217, 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, 68, 65, 84, 65, 32, 1, 0, 0, 80,240,164, 29, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0,208,245,164, 29, 1, 0, 0, 0, 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, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, + 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, + 40, 1, 0, 0, 0, 26,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 27,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 27,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 28,111, 27, 1, 0, 0, 0, 0, 26,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 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, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,241,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 16,243,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,243,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -112,244,164, 29, 1, 0, 0, 0,176,241,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 28,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 27,111, 27, + 1, 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,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, 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, 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, 68, 65, 84, 65, +240, 0, 0, 0, 32, 30,111, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,160, 24,111, 27, + 1, 0, 0, 0, 0, 26,111, 27, 1, 0, 0, 0,192, 28,111, 27, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,244,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,243,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,245,164, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, -224,253,164, 29, 1, 0, 0, 0, 80,240,164, 29, 1, 0, 0, 0,176,241,164, 29, 1, 0, 0, 0,112,244,164, 29, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 31,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 32,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 32,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 31,111, 27, 1, 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, +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, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,247,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 96,248,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,248,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,192,249,164, 29, 1, 0, 0, 0, 0,247,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,249,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 32,251,164, 29, 1, 0, 0, 0, 96,248,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,251,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,128,252,164, 29, 1, 0, 0, 0,192,249,164, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,252,164, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,251,164, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,220, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,220, 2, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65,200, 0, 0, 0, 16, 34,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 30,111, 27, 1, 0, 0, 0, 80, 31,111, 27, 1, 0, 0, 0,176, 32,111, 27, 1, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 57,111, 27, + 1, 0, 0, 0,208, 1,111, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0,128,203,110, 27, 1, 0, 0, 0, 0,205,110, 27, + 1, 0, 0, 0,192,205,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,181, 1, 0, 0, + 99, 4, 0, 0, 16, 16, 28, 6,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 38,111, 27, + 1, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0,240, 35,111, 27, 1, 0, 0, 0, 80, 37,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 35,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 37,111, 27, 1, 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,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, 27, 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, 28, 6, 26, 0, 28, 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, 0, 0, 0, 0, + 27, 6, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 37,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 35,111, 27, + 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 84, 64,199,195, 42,160, 99, 68,240, 80,128,193, +136, 2, 4, 68, 11, 6, 0, 0, 28, 6, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 18, 0, 0, 0,148, 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, 28, 6,149, 2, 11, 6, +131, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 6, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,253,164, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 2,165, 29, 1, 0, 0, 0, -208,245,164, 29, 1, 0, 0, 0, 0,247,164, 29, 1, 0, 0, 0,128,252,164, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, - 64,255,164, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 0,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 1, 0, 0,176, 38,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 48, 44,111, 27, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, -160, 0,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,255,164, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, - 0, 2,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,253,164, 29, 1, 0, 0, 0, - 64,255,164, 29, 1, 0, 0, 0,160, 0,165, 29, 1, 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, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 66, 86, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 40,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 41,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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,160, 0, 0, 0, - 0, 3,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,236,164, 29, 1, 0, 0, 0, -208,224,163, 29, 1, 0, 0, 0,128,194,163, 29, 1, 0, 0, 0, 64,195,163, 29, 1, 0, 0, 0,160,195,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 6, 6, 0, 3,180, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,128,217, 2, 1, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0, 80, 29,165, 29, 1, 0, 0, 0, -224, 3,165, 29, 1, 0, 0, 0,160, 6,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 36,201, 20, 1, 0, 0, 0,128, 85,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 3,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 64, 5,165, 29, 1, 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, 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, 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, 64,134,217, 2, 1, 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, 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, 40, 1, 0, 0, 64, 5,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,160, 6,165, 29, 1, 0, 0, 0,224, 3,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,112, 41,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 42,111, 27, 1, 0, 0, 0, 16, 40,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,179, 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, - 1, 0, 0, 0, 0, 0, 0, 0,144,130,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 6,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5,165, 29, 1, 0, 0, 0, 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,154,190, 0,128,166, 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,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,129,217, 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, 68, 65, 84, 65,168, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0, -168, 0, 0, 0, 1, 0, 0, 0,160, 11,165, 29, 1, 0, 0, 0, 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, 48,180, 4, 28, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 8,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 64, 10,165, 29, 1, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 42,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 41,111, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 10,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 8,165, 29, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65,240, 0, 0, 0, 48, 44,111, 27, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,176, 38,111, 27, 1, 0, 0, 0, 16, 40,111, 27, + 1, 0, 0, 0,208, 42,111, 27, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,160, 11,165, 29, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 32, 17,165, 29, 1, 0, 0, 0, 0, 8,165, 29, 1, 0, 0, 0,224, 8,165, 29, 1, 0, 0, 0, - 64, 10,165, 29, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 96, 45,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 46,111, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 0, 13,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96, 14,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,192, 46,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 48,111, 27, 1, 0, 0, 0, 96, 45,111, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 48,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 49,111, 27, 1, 0, 0, 0,192, 46,111, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 14,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192, 15,165, 29, 1, 0, 0, 0, 0, 13,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 49,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 50,111, 27, 1, 0, 0, 0, 32, 48,111, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 50,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 49,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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,192, 15,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 14,165, 29, 1, 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,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, 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, 48, 0,134, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 0,134, 27, 1, 0, 0, 0,157, 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, 68, 65, 84, 65,240, 0, 0, 0, 32, 17,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, - 48, 25,165, 29, 1, 0, 0, 0,160, 11,165, 29, 1, 0, 0, 0, 0, 13,165, 29, 1, 0, 0, 0,192, 15,165, 29, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 18,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,176, 19,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 19,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16, 21,165, 29, 1, 0, 0, 0, 80, 18,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 21,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,112, 22,165, 29, 1, 0, 0, 0,176, 19,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 22,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208, 23,165, 29, 1, 0, 0, 0, 16, 21,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 23,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 22,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,224, 2, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, 32, 1, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0, 48, 44,111, 27, 1, 0, 0, 0, 96, 45,111, 27, 1, 0, 0, 0,224, 50,111, 27, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 40, 1, 0, 0,160, 53,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 55,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 55,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 53,111, 27, 1, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 25,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 80, 29,165, 29, 1, 0, 0, 0, - 32, 17,165, 29, 1, 0, 0, 0, 80, 18,165, 29, 1, 0, 0, 0,208, 23,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, -144, 26,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 27,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65,200, 0, 0, 0, 96, 56,111, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 52,111, 27, 1, 0, 0, 0,160, 53,111, 27, 1, 0, 0, 0, 0, 55,111, 27, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, -240, 27,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 26,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, - 80, 29,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 25,165, 29, 1, 0, 0, 0, -144, 26,165, 29, 1, 0, 0, 0,240, 27,165, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, -208, 30,165, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,127,165, 29, 1, 0, 0, 0,208,190,163, 29, 1, 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,240, 15,164, 29, 1, 0, 0, 0, - 64, 35,165, 29, 1, 0, 0, 0,160, 35,165, 29, 1, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0, -144, 93,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 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, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 48, 21, 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, 32, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, -160,204,163, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -160, 32,165, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, - 64, 32,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 0, 33,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 32, 34,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,101, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, -192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -128, 34,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,100, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,160, 35,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 36,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 0, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 36,165, 29, 1, 0, 0, 0, -160, 35,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 96, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 36,165, 29, 1, 0, 0, 0, - 0, 36,165, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,192, 36,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 37,165, 29, 1, 0, 0, 0, - 96, 36,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 32, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 37,165, 29, 1, 0, 0, 0, -192, 36,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,128, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 37,165, 29, 1, 0, 0, 0, - 32, 37,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,224, 37,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 38,165, 29, 1, 0, 0, 0, -128, 37,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 64, 38,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 38,165, 29, 1, 0, 0, 0, -224, 37,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,160, 38,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 39,165, 29, 1, 0, 0, 0, - 64, 38,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 0, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 39,165, 29, 1, 0, 0, 0, -160, 38,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 96, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 39,165, 29, 1, 0, 0, 0, - 0, 39,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,192, 39,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 40,165, 29, 1, 0, 0, 0, - 96, 39,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 32, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 40,165, 29, 1, 0, 0, 0, -192, 39,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,128, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 40,165, 29, 1, 0, 0, 0, - 32, 40,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,224, 40,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 41,165, 29, 1, 0, 0, 0, -128, 40,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 64, 41,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 41,165, 29, 1, 0, 0, 0, -224, 40,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,160, 41,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0, - 64, 41,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 0, 42,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 41,165, 29, 1, 0, 0, 0,224, 34,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 46,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,160,204,163, 29, 1, 0, 0, 0,224, 31,165, 29, 1, 0, 0, 0, - 0, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,102, 4, 0, 0,128, 4, 0, 0, - 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,192,126,165, 29, 1, 0, 0, 0, -192,126,165, 29, 1, 0, 0, 0, 64, 43,165, 29, 1, 0, 0, 0,160, 44,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,128,140, 27, 1, 0, 0, 0,240, 63,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 64, 43,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 44,165, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -102, 4, 0, 0,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 2, 1, 0, 0, 0, 48,210, 6, 3, 1, 0, 0, 0, - 48,210, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197,200, 20, 1, 0, 0, 0, -192, 22,143, 27, 1, 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, -160, 44,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 43,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, 4, 0, 0,128, 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, 1, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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,112,224,200, 20, 1, 0, 0, 0, - 80, 93,201, 20, 1, 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, - 0, 46,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, 96, 42,165, 29, 1, 0, 0, 0, - 96, 33,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 64, 32,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,115, 3, 0, 0, 4, 4, 92, 1,116, 3, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, 64, 65,165, 29, 1, 0, 0, 0, 64, 69,165, 29, 1, 0, 0, 0, -224, 46,165, 29, 1, 0, 0, 0, 64, 48,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 4,201, 20, 1, 0, 0, 0, 32, 31,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 46,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 64, 48,165, 29, 1, 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,174, 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, 91, 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, 92, 1, 31, 0, 92, 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, 0, 0, 0, 0, 37, 6, 0, 0,128, 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, 92, 1, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 2, 1, 0, 0, 0, 48,164, 6, 28, 1, 0, 0, 0, 48,164, 6, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 40,201, 20, 1, 0, 0, 0,208,248,199, 20, 1, 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, 64, 48,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 67, - 0,128, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,251,191, 80,196, 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, - 18, 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, 74, 1, 0, 0, - 18, 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, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 85, 3, 75, 1, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,168,164, 21, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 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, 92, 1, 85, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, 48,138, 23, 3, 1, 0, 0, 0, 48, 18, 7, 3, 1, 0, 0, 0, -160, 49,165, 29, 1, 0, 0, 0,176, 63,165, 29, 1, 0, 0, 0,144, 10,200, 20, 1, 0, 0, 0, 96, 3,160, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 49,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48, 51,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 48, 51,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 52,165, 29, 1, 0, 0, 0, -160, 49,165, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 52,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80, 54,165, 29, 1, 0, 0, 0, 48, 51,165, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 74, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 80, 54,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 55,165, 29, 1, 0, 0, 0, -192, 52,165, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 74, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 55,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112, 57,165, 29, 1, 0, 0, 0, 80, 54,165, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 57,111, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 35,111, 27, 1, 0, 0, 0, 0,202,110, 27, 1, 0, 0, 0, 96,205,110, 27, 1, 0, 0, 0, 32,206,110, 27, + 1, 0, 0, 0,128,206,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, +179, 1, 0, 0, 6, 6, 0, 3,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 62,111, 27, + 1, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0, 64, 58,111, 27, 1, 0, 0, 0, 0, 61,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 58,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 59,111, 27, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 59,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 61,111, 27, 1, 0, 0, 0, 64, 58,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 74, 1, 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, 26, 0, 0, 0,179, 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, - 68, 65, 84, 65, 88, 1, 0, 0,112, 57,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 59,165, 29, 1, 0, 0, 0, -224, 55,165, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 0, 61,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 59,111, 27, + 1, 0, 0, 0, 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,154,190, + 0,128,166, 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,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,253, 74, 1,102, 0, - 0, 0, 0, 0, 0, 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, +255, 2, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 59,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144, 60,165, 29, 1, 0, 0, 0,112, 57,165, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 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, 68, 65, 84, 65, +168, 0, 0, 0, 96, 62,111, 27, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 66,111, 27, 1, 0, 0, 0, 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,128, 63, 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, 64, 63,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 64,111, 27, 1, 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, 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, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,160, 64,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 63,111, 27, + 1, 0, 0, 0, 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, 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, 59,253, 74, 1,105, 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, 68, 65, 84, 65, + 32, 1, 0, 0, 0, 66,111, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 16,129,110, 27, 1, 0, 0, 0, 96, 62,111, 27, + 1, 0, 0, 0, 64, 63,111, 27, 1, 0, 0, 0,160, 64,111, 27, 1, 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, - 68, 65, 84, 65, 88, 1, 0, 0,144, 60,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 62,165, 29, 1, 0, 0, 0, - 0, 59,165, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 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,123,252, 74, 1,168, 0, - 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32, 62,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176, 63,165, 29, 1, 0, 0, 0,144, 60,165, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 11,253, 74, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 96, 67,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 68,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0,176, 63,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 62,165, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 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,243,252, 74, 1, 0, 0, - 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 68,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,127,110, 27, 1, 0, 0, 0, 96, 67,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 65,165, 29, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0, 64, 69,165, 29, 1, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,176,127,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 68,111, 27, 1, 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,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, 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, 2, 0, 1, 0, 0, 0, 0, 0,240,171,140, 27, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 66,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -224, 67,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 16,129,110, 27, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0,154,131, 29, 1, 0, 0, 0, 0, 66,111, 27, 1, 0, 0, 0, 96, 67,111, 27, + 1, 0, 0, 0,176,127,110, 27, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 67,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 66,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 64,130,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,131,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,160,131,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,133,110, 27, 1, 0, 0, 0, 64,130,110, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 48,228, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,228, 2, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 0,133,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,140,111, 27, 1, 0, 0, 0,160,131,110, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,240,140,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,152,131, 29, 1, 0, 0, 0, 0,133,110, 27, + 1, 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, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,160,152,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,140,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4,134, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 4,134, 27, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 32, 1, 0, 0, - 64, 69,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,165, 29, 1, 0, 0, 0, -128, 66,165, 29, 1, 0, 0, 0,224, 67,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, 0, 46,165, 29, 1, 0, 0, 0,240, 15,164, 29, 1, 0, 0, 0, -224, 34,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, 96, 33,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15, 36, 6,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,109,217, 2, 1, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0, 0, 78,165, 29, 1, 0, 0, 0,128, 71,165, 29, 1, 0, 0, 0, -224, 72,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,149,140, 27, 1, 0, 0, 0, - 32,110,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 71,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -224, 72,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 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, 36, 6, 26, 0, 6, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,110,217, 2, 1, 0, 0, 0, 48,250, 6, 3, 1, 0, 0, 0, 48,250, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 6,143, 27, 1, 0, 0, 0,240, 87,160, 21, 1, 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,224, 72,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 71,165, 29, 1, 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, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 18, 0, 0, 0, 73, 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, 36, 6, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 74, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,109,217, 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,208,154,162, 21, 1, 0, 0, 0,176,145,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 78,165, 29, 1, 0, 0, 0, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 75,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -160, 76,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 0,154,131, 29, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0, 16,129,110, 27, 1, 0, 0, 0, 64,130,110, 27, 1, 0, 0, 0,160,152,131, 29, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 76,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 75,165, 29, 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, 40, 1, 0, 0, 96,155,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,156,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,156,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,155,131, 29, 1, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65,200, 0, 0, 0, 96,134,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,154,131, 29, 1, 0, 0, 0, 96,155,131, 29, 1, 0, 0, 0,192,156,131, 29, 1, 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, - 48,232, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,232, 2, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 0, 78,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 74,165, 29, 1, 0, 0, 0, - 64, 75,165, 29, 1, 0, 0, 0,160, 76,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,144, 93,165, 29, 1, 0, 0, 0,160, 70,165, 29, 1, 0, 0, 0, 32, 34,165, 29, 1, 0, 0, 0, -192, 33,165, 29, 1, 0, 0, 0, 0, 33,165, 29, 1, 0, 0, 0,128, 34,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,100, 4, 0, 0, 3, 3, 92, 1,240, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,106,217, 2, 1, 0, 0, 0, 0, 83,165, 29, 1, 0, 0, 0, 48, 92,165, 29, 1, 0, 0, 0, 64, 80,165, 29, 1, 0, 0, 0, -160, 81,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 13,143, 27, 1, 0, 0, 0, - 16,150,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 80,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -160, 81,165, 29, 1, 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,174, 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, 91, 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, 92, 1, 26, 0, 92, 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, 37, 6, 0, 0,128, 7, 0, 0, 75, 4, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,108,217, 2, 1, 0, 0, 0, 48, 74, 10, 28, 1, 0, 0, 0, 48, 74, 10, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 42,201, 20, 1, 0, 0, 0, 80,142,162, 21, 1, 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,160, 81,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 80,165, 29, 1, 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,165, 67, 0, 0, 68,195, 0, 0, 0, 0, 75, 1, 0, 0, 92, 1, 0, 0, 18, 0, 0, 0,213, 0, 0, 0, - 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 18, 0, 0, 0,213, 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, 92, 1,214, 0, 75, 1,196, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,214, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,107,217, 2, 1, 0, 0, 0, 48,144, 11, 28, 1, 0, 0, 0, 48,144, 11, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,201, 20, 1, 0, 0, 0,208, 62,202, 20, 1, 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, 0, 83,165, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, - 48, 88,165, 29, 1, 0, 0, 0, 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,192,102,164, 21, 1, 0, 0, 0,192,102,164, 21, 1, 0, 0, 0, -144, 39,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 39,163, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 96, 84,165, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 96, 84,165, 29, 1, 0, 0, 0, -218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -112, 85,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 86,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -208, 86,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 85,165, 29, 1, 0, 0, 0, - 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, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 32,158,131, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,254,131, 29, + 1, 0, 0, 0,240,200,110, 27, 1, 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,208,142,111, 27, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0,176,169,131, 29, + 1, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 66,136, 27, 1, 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,113, 46, 21, 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, 32, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 48,159,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,159,131, 29, + 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 48,159,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,159,131, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,161,131, 29, + 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,176,160,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,161,131, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 6,101, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 48,162,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6,116, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,162,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,162,131, 29, + 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,162,131, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 6,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0,144,159,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0, 80,163,131, 29, 1, 0, 0, 0, 48,159,131, 29, 1, 0, 0, 0, 80,160,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,176,163,131, 29, 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,176,160,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0, 16,164,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,176,160,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0,112,164,131, 29, 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0, 16,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,208,164,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 16,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0, 48,165,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,112,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,144,165,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0,112,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,240,165,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,208,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0, 80,166,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,208,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,176,166,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0, 16,167,131, 29, 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0,112,167,131, 29, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,208,167,131, 29, 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,144,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0, 48,168,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,144,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,144,168,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,240,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,176,169,131, 29, 1, 0, 0, 0,240,168,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,240,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,169,131, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,169,131, 29, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,240,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,176,173,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0, 48,159,131, 29, + 1, 0, 0, 0,144,159,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,102, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 16,162,217, 2, + 1, 0, 0, 0,112,254,131, 29, 1, 0, 0, 0,112,254,131, 29, 1, 0, 0, 0,240,170,131, 29, 1, 0, 0, 0, 80,172,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,205,129, 29, 1, 0, 0, 0,224,104,111, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,170,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,172,131, 29, + 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,102, 4, 0, 0,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,163,217, 2, + 1, 0, 0, 0, 48,202,139, 27, 1, 0, 0, 0, 48,202,139, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 5,128, 29, 1, 0, 0, 0,128, 7,128, 29, 1, 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, 80,172,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,170,131, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0,128, 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, 1, 0, 0, 0, 0, 0, 0, 0,240,162,217, 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, 68, 65, 84, 65,160, 0, 0, 0,176,173,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,198,131, 29, + 1, 0, 0, 0, 16,170,131, 29, 1, 0, 0, 0, 16,161,131, 29, 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0,240,159,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, +115, 3, 0, 0, 4, 4, 92, 1,116, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,158,217, 2, 1, 0, 0, 0,240,192,131, 29, + 1, 0, 0, 0,240,196,131, 29, 1, 0, 0, 0,144,174,131, 29, 1, 0, 0, 0,240,175,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 9,128, 29, 1, 0, 0, 0,224,134,133, 29, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,144,174,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,175,131, 29, 1, 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,174, 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, 91, 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, 92, 1, 31, 0, 92, 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, 0, 0, 0, 0, 37, 6, 0, 0, +128, 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, 92, 1, 31, 0, + 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,161,217, 2, 1, 0, 0, 0, 48,182, 13, 3, + 1, 0, 0, 0, 48,182, 13, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 10,128, 29, + 1, 0, 0, 0, 48, 13,128, 29, 1, 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,240,175,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,174,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0, 85,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,165, 67,251, 63, 85,196, + 0, 0, 0, 0, 75, 1, 0, 0, 92, 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, 74, 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, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 92, 1, 85, 3, 75, 1, + 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,183,129, 29, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0, +128, 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, 92, 1, 85, 3, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,159,217, 2, 1, 0, 0, 0, 48, 40,138, 27, + 1, 0, 0, 0, 48,102,139, 27, 1, 0, 0, 0, 80,177,131, 29, 1, 0, 0, 0, 96,191,131, 29, 1, 0, 0, 0, 80, 15,128, 29, + 1, 0, 0, 0,144, 17,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 80,177,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,178,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64,160,217, 2, 1, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,178,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,112,180,131, 29, 1, 0, 0, 0, 80,177,131, 29, 1, 0, 0, 0,176, 12,241, 26, 1, 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, 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, 74, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,112,180,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,182,131, 29, 1, 0, 0, 0,224,178,131, 29, + 1, 0, 0, 0,144, 14,241, 26, 1, 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, 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, 74, 1,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, 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, 88, 1, 0, 0, 0,182,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,144,183,131, 29, 1, 0, 0, 0,112,180,131, 29, 1, 0, 0, 0,240, 16,241, 26, 1, 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, 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, 74, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,144,183,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,185,131, 29, 1, 0, 0, 0, 0,182,131, 29, + 1, 0, 0, 0, 80, 19,241, 26, 1, 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, 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, 74, 1, 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, 68, 65, 84, 65, 0, 1, 0, 0, - 48, 88,165, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 48, 92,165, 29, 1, 0, 0, 0, 0, 83,165, 29, 1, 0, 0, 0, -112, 85,165, 29, 1, 0, 0, 0,208, 86,165, 29, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,185,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,176,186,131, 29, 1, 0, 0, 0,144,183,131, 29, 1, 0, 0, 0,176, 21,241, 26, 1, 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, 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,188,253, 74, 1,102, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 89,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208, 90,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,176,186,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,188,131, 29, 1, 0, 0, 0, 32,185,131, 29, + 1, 0, 0, 0, 16, 24,241, 26, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 90,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 89,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,253, 74, 1,105, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,188,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,208,189,131, 29, 1, 0, 0, 0,176,186,131, 29, 1, 0, 0, 0, 80,246,240, 26, 1, 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, 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, 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, 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,123,252, 74, 1,168, 0, 0, 0, 0, 0, 4, 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, 48,236, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,236, 2, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, + 88, 1, 0, 0,208,189,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,191,131, 29, 1, 0, 0, 0, 64,188,131, 29, + 1, 0, 0, 0,192, 29,241, 26, 1, 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, 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, 11,253, 74, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,191,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,189,131, 29, 1, 0, 0, 0, 32, 32,241, 26, 1, 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, 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,243,252, 74, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 0, 1, 0, 0,240,192,131, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,240,196,131, 29, 1, 0, 0, 0, 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, - 68, 65, 84, 65, 32, 1, 0, 0, 48, 92,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 88,165, 29, 1, 0, 0, 0,112, 89,165, 29, 1, 0, 0, 0,208, 90,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -144, 93,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 79,165, 29, 1, 0, 0, 0, -224, 34,165, 29, 1, 0, 0, 0,160, 32,165, 29, 1, 0, 0, 0,192, 33,165, 29, 1, 0, 0, 0, 64, 35,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0,101, 0, 0, 0,100, 4, 0, 0, 1, 1, 36, 6, 0, 4, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0,160,121,165, 29, 1, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0, -112, 94,165, 29, 1, 0, 0, 0, 64,120,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,242,201, 20, 1, 0, 0, 0,176, 4,216, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 94,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208, 95,165, 29, 1, 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,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 6, 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, 36, 6, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 2, 1, 0, 0, 0, 48, 10, 4, 28, 1, 0, 0, 0, 48, 10, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,107,164, 21, 1, 0, 0, 0, 96,173,140, 27, 1, 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,208, 95,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,112,103,165, 29, 1, 0, 0, 0,112, 94,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 0, 87,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 87,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,109, 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,109, 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, 4, 6, 0,160, 0,110, 3,143, 0, 92, 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,159, 0, 0, 0,247, 0, 0, 0,100, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,110, 3, 11, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 2, 1, 0, 0, 0, 48,180, 11, 28, 1, 0, 0, 0, 48,254, 6, 3, 1, 0, 0, 0, - 48, 97,165, 29, 1, 0, 0, 0,224,101,165, 29, 1, 0, 0, 0,128, 28,202, 20, 1, 0, 0, 0, 96, 96,160, 21, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 97,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,192, 98,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,117,217, 2, 1, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0,192, 98,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,100,165, 29, 1, 0, 0, 0, - 48, 97,165, 29, 1, 0, 0, 0,144, 38, 21, 27, 1, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,100,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,224,101,165, 29, 1, 0, 0, 0,192, 98,165, 29, 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,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, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,224,101,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,100,165, 29, 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,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,103,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 96,106,165, 29, 1, 0, 0, 0,208, 95,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,127, 0, 0, 0,246, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 12, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 2, 1, 0, 0, 0, 48,186, 10, 28, 1, 0, 0, 0, 48,186, 10, 28, 1, 0, 0, 0, -208,104,165, 29, 1, 0, 0, 0,208,104,165, 29, 1, 0, 0, 0,192,114,160, 21, 1, 0, 0, 0,192, 3,201, 20, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,104,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,118,217, 2, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 96,106,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,120,165, 29, 1, 0, 0, 0, -112,103,165, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, - 35, 6, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,107,165, 29, 1, 0, 0, 0,176,118,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,192,107,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,109,165, 29, 1, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,109,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,224,110,165, 29, 1, 0, 0, 0,192,107,165, 29, 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,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, 2, 0, 1, 0, 0, 0, 0, 0,160,149,176, 21, + 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,194,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,195,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,144,195,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,194,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,224,110,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,112,165, 29, 1, 0, 0, 0, - 80,109,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,112,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0,114,165, 29, 1, 0, 0, 0,224,110,165, 29, 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, 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, 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, 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, 48, 8,134, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 8,134, 27, + 1, 0, 0, 0,157, 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,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,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, - 68, 65, 84, 65, 88, 1, 0, 0, 0,114,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,115,165, 29, 1, 0, 0, 0, -112,112,165, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,115,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 32,117,165, 29, 1, 0, 0, 0, 0,114,165, 29, 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,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, 68, 65, 84, 65, 32, 1, 0, 0,240,196,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,192,131, 29, 1, 0, 0, 0, 48,194,131, 29, 1, 0, 0, 0,144,195,131, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 32,117,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,118,165, 29, 1, 0, 0, 0, -144,115,165, 29, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 80,198,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,176,173,131, 29, + 1, 0, 0, 0,208,142,111, 27, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 16,161,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15, 36, 6, +100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,126,217, 2, 1, 0, 0, 0,240,201,131, 29, 1, 0, 0, 0,176,205,131, 29, + 1, 0, 0, 0, 48,199,131, 29, 1, 0, 0, 0,144,200,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 19,128, 29, 1, 0, 0, 0, 32,165,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,199,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,200,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,196, 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, + 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, 35, 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, 36, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,128,217, 2, 1, 0, 0, 0, 48,244,136, 27, 1, 0, 0, 0, 48,244,136, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,128, 29, 1, 0, 0, 0, 64, 23,128, 29, + 1, 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,144,200,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,199,131, 29, 1, 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, 35, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 35, 6, 0, 0, 18, 0, 0, 0, 73, 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, 36, 6, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 6, 0, 0, 26, 0, 0, 0, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 6, 74, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,127,217, 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, 96, 25,128, 29, 1, 0, 0, 0, 96, 28,128, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240,201,131, 29, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,176,205,131, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,118,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,117,165, 29, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,202,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,204,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 64,120,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,106,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 80,204,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,202,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 5,230, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 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, -224, 34,201, 20, 1, 0, 0, 0, 80,120,201, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,240, 2, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,240, 2, 28, 1, 0, 0, 0,157, 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,127, 19,198, 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,128, 0, 0, 0,128, 74,215, 76,190, 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,184, 38, 31,191, - 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, 35, 44,185, 62,147,180,109,188,122, 73,177, 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, - 48,185, 70,188, 0, 0, 78,180,246,235,132,190,156, 35, 0, 62,130, 17, 20, 63, 0, 0,192,178, 67,108,117,194,185,204,216, 65, -105,156, 5,194,213,247,159,192,235, 62,114, 66, 61,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,180,157,229, 62,184, 38, 31,191, - 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, 35, 44,185, 62,147,180,109,188,122, 73,177, 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, 97, 89,186, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 97, 89,186, 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,188,189,169, 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, 48,230,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,230,135, 27, + 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,176,205,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,201,131, 29, 1, 0, 0, 0,240,202,131, 29, 1, 0, 0, 0, 80,204,131, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0, 80,198,131, 29, + 1, 0, 0, 0,208,161,131, 29, 1, 0, 0, 0,112,161,131, 29, 1, 0, 0, 0,176,160,131, 29, 1, 0, 0, 0, 48,162,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0,100, 4, 0, 0, 3, 3, 92, 1, +240, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,123,217, 2, 1, 0, 0, 0,176,210,131, 29, 1, 0, 0, 0,224,219,131, 29, + 1, 0, 0, 0,240,207,131, 29, 1, 0, 0, 0, 80,209,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 30,128, 29, 1, 0, 0, 0, 48,121,129, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,207,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,209,131, 29, 1, 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,174, 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, + 91, 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, 92, 1, 26, 0, 92, 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, 37, 6, 0, 0,128, 7, 0, 0, 75, 4, 0, 0, +100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,125,217, 2, 1, 0, 0, 0, 48,236,138, 27, 1, 0, 0, 0, 48,236,138, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 31,128, 29, 1, 0, 0, 0, 16, 34,128, 29, + 1, 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, 80,209,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,207,131, 29, 1, 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,165, 67, 0, 0, 68,195, 0, 0, 0, 0, 75, 1, 0, 0, + 92, 1, 0, 0, 18, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 74, 1, 0, 0, 18, 0, 0, 0,213, 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, 92, 1,214, 0, 75, 1,196, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,117, 3, 0, 0, + 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1,214, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,124,217, 2, 1, 0, 0, 0, 48,150,132, 27, 1, 0, 0, 0, 48,150,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 36,128, 29, 1, 0, 0, 0,176, 37,128, 29, + 1, 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,176,210,131, 29, + 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,224,215,131, 29, 1, 0, 0, 0, 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,144, 1,128, 29, + 1, 0, 0, 0,144, 1,128, 29, 1, 0, 0, 0, 32, 18,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 18,130, 29, + 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16,212,131, 29, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0, 16,212,131, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,213,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,214,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,121,165, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 0,123,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96,124,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,124,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,123,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192,125,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,121,165, 29, 1, 0, 0, 0, 0,123,165, 29, 1, 0, 0, 0, 96,124,165, 29, 1, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 64,127,165, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, - 0, 36,166, 29, 1, 0, 0, 0,208, 30,165, 29, 1, 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, 80,128,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,144,133,165, 29, 1, 0, 0, 0, - 16,141,165, 29, 1, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48, 21, 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, 32, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,176,128,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 16,129,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, -176,128,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -112,129,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -144,130,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, - 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -240,130,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 16,132,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,180, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, -176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -112,132,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 60, 1,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,100, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,133,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,133,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,133,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,134,165, 29, 1, 0, 0, 0, -144,133,165, 29, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,134,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,134,165, 29, 1, 0, 0, 0, -240,133,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,134,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,135,165, 29, 1, 0, 0, 0, - 80,134,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,135,165, 29, 1, 0, 0, 0, -176,134,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,135,165, 29, 1, 0, 0, 0, - 16,135,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,135,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,136,165, 29, 1, 0, 0, 0, -112,135,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,136,165, 29, 1, 0, 0, 0, -208,135,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,136,165, 29, 1, 0, 0, 0, - 48,136,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,136,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,137,165, 29, 1, 0, 0, 0, -144,136,165, 29, 1, 0, 0, 0, 80,128,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,137,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,137,165, 29, 1, 0, 0, 0, -240,136,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,137,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,138,165, 29, 1, 0, 0, 0, - 80,137,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,138,165, 29, 1, 0, 0, 0, -176,137,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,138,165, 29, 1, 0, 0, 0, - 16,138,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,138,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,139,165, 29, 1, 0, 0, 0, -112,138,165, 29, 1, 0, 0, 0, 48,130,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,139,165, 29, 1, 0, 0, 0, -208,138,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,139,165, 29, 1, 0, 0, 0, - 48,139,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,139,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,140,165, 29, 1, 0, 0, 0, -144,139,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,140,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,140,165, 29, 1, 0, 0, 0, -240,139,165, 29, 1, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,140,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,141,165, 29, 1, 0, 0, 0, - 80,140,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,141,165, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,140,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,145,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,129,165, 29, 1, 0, 0, 0,176,128,165, 29, 1, 0, 0, 0, 16,129,165, 29, 1, 0, 0, 0, - 48,130,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, - 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,128, 35,166, 29, 1, 0, 0, 0, -128, 35,166, 29, 1, 0, 0, 0, 80,142,165, 29, 1, 0, 0, 0,176,143,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 14,201, 20, 1, 0, 0, 0,240,153,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 80,142,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,143,165, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -176,143,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,142,165, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, -127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,214,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,213,131, 29, 1, 0, 0, 0, 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, + 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, - 0, 0, 0, 0, 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, - 16,145,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,175,165, 29, 1, 0, 0, 0,112,141,165, 29, 1, 0, 0, 0, - 80,131,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0,112,129,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 4, 4, 96, 1,180, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,141,217, 2, 1, 0, 0, 0, 80,164,165, 29, 1, 0, 0, 0,160,173,165, 29, 1, 0, 0, 0, -240,145,165, 29, 1, 0, 0, 0, 80,147,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 49,161, 29, 1, 0, 0, 0,112,188,142, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,145,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 80,147,165, 29, 1, 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,176, 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, 95, 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, 96, 1, 31, 0, 96, 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, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0,149, 1, 0, 0,179, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,143,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,147,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,145,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, - 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,193,195, 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, - 18, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, - 18, 0, 0, 0,148, 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, 96, 1,149, 1, 79, 1,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,203,200, 20, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,149, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,148,165, 29, 1, 0, 0, 0,192,162,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,148,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 64,150,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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, 68, 65, 84, 65, 0, 1, 0, 0,224,215,131, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,219,131, 29, + 1, 0, 0, 0,176,210,131, 29, 1, 0, 0, 0, 32,213,131, 29, 1, 0, 0, 0,128,214,131, 29, 1, 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, 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, 78, 1, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 32,217,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,218,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 64,150,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,151,165, 29, 1, 0, 0, 0, -176,148,165, 29, 1, 0, 0, 0, 32,198, 17, 27, 1, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,128,218,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,217,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,151,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 96,153,165, 29, 1, 0, 0, 0, 64,150,165, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, 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, 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, 48,234,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48,234,135, 27, 1, 0, 0, 0,157, 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,111,255, 78, 1, 0, 0, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 96,153,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,154,165, 29, 1, 0, 0, 0, -208,151,165, 29, 1, 0, 0, 0, 96,202, 17, 27, 1, 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, 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, 78, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,154,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,128,156,165, 29, 1, 0, 0, 0, 96,153,165, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, 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, 78, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,224,219,131, 29, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,215,131, 29, 1, 0, 0, 0, 32,217,131, 29, 1, 0, 0, 0,128,218,131, 29, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,221,131, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,207,131, 29, 1, 0, 0, 0,144,162,131, 29, 1, 0, 0, 0, 80,160,131, 29, 1, 0, 0, 0,112,161,131, 29, + 1, 0, 0, 0,240,162,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 6, 0, 0,101, 0, 0, 0, +100, 4, 0, 0, 1, 1, 36, 6, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,128,217, 2, 1, 0, 0, 0, 80,249,131, 29, + 1, 0, 0, 0,112,253,131, 29, 1, 0, 0, 0, 32,222,131, 29, 1, 0, 0, 0,240,247,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 40,128, 29, 1, 0, 0, 0, 48, 92,135, 29, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 32,222,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,223,131, 29, 1, 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,128,196, 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, 35, 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, 36, 6, 26, 0, 36, 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, 0, 0, 0, 0, + 35, 6, 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, 36, 6, 26, 0, + 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,137,217, 2, 1, 0, 0, 0, 48,216,129, 27, + 1, 0, 0, 0, 48,216,129, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 42,128, 29, + 1, 0, 0, 0,112, 45,128, 29, 1, 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,128,223,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,231,131, 29, 1, 0, 0, 0, 32,222,131, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0,128, 91,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 91,196, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,109, 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, 0, 0, 0, 0,109, 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, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,110, 3,143, 0, +110, 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, +159, 0, 0, 0,247, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,110, 3, + 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,133,217, 2, 1, 0, 0, 0, 48, 6, 21, 3, + 1, 0, 0, 0, 48, 46, 21, 3, 1, 0, 0, 0,224,224,131, 29, 1, 0, 0, 0,144,229,131, 29, 1, 0, 0, 0,144, 47,128, 29, + 1, 0, 0, 0,208, 49,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,224,224,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,226,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,134,217, 2, 1, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,226,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,228,131, 29, 1, 0, 0, 0,224,224,131, 29, 1, 0, 0, 0, 16, 88,245, 26, 1, 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, 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, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 0,228,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,229,131, 29, 1, 0, 0, 0,112,226,131, 29, + 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,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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,229,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,131, 29, 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,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, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,231,131, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,234,131, 29, 1, 0, 0, 0,128,223,131, 29, + 1, 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, 1, 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, 0, 0, 0, 0, +159, 0, 0, 0,127, 0, 0, 0,246, 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, 64,135,217, 2, 1, 0, 0, 0, 48, 48,134, 27, + 1, 0, 0, 0, 48, 48,134, 27, 1, 0, 0, 0,128,232,131, 29, 1, 0, 0, 0,128,232,131, 29, 1, 0, 0, 0,240, 51,128, 29, + 1, 0, 0, 0, 48, 54,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,128,232,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,136,217, 2, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,234,131, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,240,247,131, 29, 1, 0, 0, 0, 32,231,131, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 35, 6, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 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, 1, 0, 0, 0, + 0, 0, 0, 0,176,130,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,235,131, 29, + 1, 0, 0, 0, 96,246,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,235,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,237,131, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 0,237,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,238,131, 29, 1, 0, 0, 0,112,235,131, 29, + 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,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, - 68, 65, 84, 65, 88, 1, 0, 0,128,156,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,158,165, 29, 1, 0, 0, 0, -240,154,165, 29, 1, 0, 0, 0, 32,207, 17, 27, 1, 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, 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,188,253, 78, 1,102, 0, - 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144,238,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,240,131, 29, 1, 0, 0, 0, 0,237,131, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,158,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,160,159,165, 29, 1, 0, 0, 0,128,156,165, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 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, 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,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, 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, 59,253, 78, 1,105, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 32,240,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,241,131, 29, 1, 0, 0, 0,144,238,131, 29, + 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0,160,159,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,161,165, 29, 1, 0, 0, 0, - 16,158,165, 29, 1, 0, 0, 0, 16,142, 17, 27, 1, 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, 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, 35,253, 78, 1, 0, 0, - 0, 0, 0, 0, 4, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,241,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,243,131, 29, 1, 0, 0, 0, 32,240,131, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,161,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,192,162,165, 29, 1, 0, 0, 0,160,159,165, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, 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, 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, 0, 0, 0, 0, 11,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 64,243,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,244,131, 29, 1, 0, 0, 0,176,241,131, 29, + 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,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, - 68, 65, 84, 65, 88, 1, 0, 0,192,162,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,161,165, 29, 1, 0, 0, 0,144,217, 17, 27, 1, 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, 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,243,252, 78, 1, 0, 0, - 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,244,131, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,246,131, 29, 1, 0, 0, 0, 64,243,131, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 80,164,165, 29, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0,176,169,165, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 96,246,131, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,244,131, 29, + 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,112, 33,201, 20, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,165,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,166,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,166,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 80,168,165, 29, 1, 0, 0, 0,144,165,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,247,131, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,234,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 0, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 5,230, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208,129,217, 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, 80, 56,128, 29, 1, 0, 0, 0, 64, 71,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48,238,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,238,135, 27, 1, 0, 0, 0,157, 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,127, 19,198, 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,128, 0, 0, 0,128, 74,215, 76,190, + 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,184, 38, 31,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, + 35, 44,185, 62,147,180,109,188,122, 73,177, 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, 48,185, 70,188, 0, 0, 78,180,246,235,132,190,156, 35, 0, 62,130, 17, 20, 63, + 0, 0,192,178, 67,108,117,194,185,204,216, 65,105,156, 5,194,213,247,159,192,235, 62,114, 66, 61,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,180,157,229, 62,184, 38, 31,191, 48,180, 81,191,184,158, 81,191,118, 90,127, 63,197,108,153, 62, 26, 63,185, 62, + 35, 44,185, 62,147,180,109,188,122, 73,177, 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, 97, 89,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 89,186, 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,188,189,169, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,168,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,166,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,169,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, -160,173,165, 29, 1, 0, 0, 0, 80,164,165, 29, 1, 0, 0, 0,144,165,165, 29, 1, 0, 0, 0, 80,168,165, 29, 1, 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, 68, 65, 84, 65, + 32, 1, 0, 0, 80,249,131, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,112,253,131, 29, 1, 0, 0, 0, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,176,250,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,252,131, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 16,252,131, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,250,131, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,112,253,131, 29, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,249,131, 29, 1, 0, 0, 0,176,250,131, 29, + 1, 0, 0, 0, 16,252,131, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,240,254,131, 29, + 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 38,110, 27, 1, 0, 0, 0, 32,158,131, 29, 1, 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, 0, 0,132, 29, 1, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0, 48, 16,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 96, 0,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 1,132, 29, + 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 32, 1,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 1,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 3,132, 29, + 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0,160, 2,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 3,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,180, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 4,132, 29, + 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 4,132, 29, 1, 0, 0, 0, 32, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,180, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 1,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0,192, 0,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0, 64, 5,132, 29, 1, 0, 0, 0, 96, 0,132, 29, 1, 0, 0, 0,128, 1,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,160, 5,132, 29, 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,224, 1,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0, 0, 6,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 1,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0, 96, 6,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 64, 2,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,192, 6,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,160, 2,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0, 32, 7,132, 29, 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 0, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0,128, 7,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 0, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,224, 7,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 64, 2,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0, 64, 8,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 0, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,160, 8,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0, 0, 9,132, 29, 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0, 96, 9,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 96, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0,192, 9,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 32, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0, 32, 10,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 32, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,128, 10,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0,192, 3,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,224, 10,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0, 64, 11,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0,128, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,160, 11,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0, 0, 12,132, 29, 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 12,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 12,132, 29, 1, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,192, 16,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0, 96, 0,132, 29, + 1, 0, 0, 0,192, 0,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,122,132, 29, 1, 0, 0, 0,128,122,132, 29, 1, 0, 0, 0, 0, 14,132, 29, 1, 0, 0, 0, 96, 15,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 14,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 15,132, 29, + 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 15,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14,132, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 16,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 46,132, 29, + 1, 0, 0, 0, 32, 13,132, 29, 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0,160, 2,132, 29, 1, 0, 0, 0, 96, 3,132, 29, + 1, 0, 0, 0, 32, 1,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, +179, 1, 0, 0, 4, 4, 96, 1,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,132, 29, + 1, 0, 0, 0, 80, 45,132, 29, 1, 0, 0, 0,160, 17,132, 29, 1, 0, 0, 0, 0, 19,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 17,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 19,132, 29, 1, 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,176, 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, 95, 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, 96, 1, 31, 0, 96, 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, 0, 0, 0, 0, 33, 6, 0, 0, +128, 7, 0, 0,149, 1, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 0, 19,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 17,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67,254,127,193,195, + 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,148, 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, 96, 1,149, 1, 79, 1, +131, 1, 0, 0, 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, 6, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1,149, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 20,132, 29, 1, 0, 0, 0,112, 34,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 96, 20,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 21,132, 29, 1, 0, 0, 0, 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, 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, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 21,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128, 23,132, 29, 1, 0, 0, 0, 96, 20,132, 29, 1, 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, 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, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,128, 23,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 25,132, 29, 1, 0, 0, 0,240, 21,132, 29, + 1, 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, 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, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 25,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160, 26,132, 29, 1, 0, 0, 0,128, 23,132, 29, 1, 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, 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, 78, 1,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,160, 26,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 28,132, 29, 1, 0, 0, 0, 16, 25,132, 29, + 1, 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, 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, 78, 1, 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, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,170,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 64,172,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 88, 1, 0, 0, 48, 28,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192, 29,132, 29, 1, 0, 0, 0,160, 26,132, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,172,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,170,165, 29, 1, 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,188,253, 78, 1,102, 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, 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, 68, 65, 84, 65, + 88, 1, 0, 0,192, 29,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 31,132, 29, 1, 0, 0, 0, 48, 28,132, 29, + 1, 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, 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, 59,253, 78, 1,105, 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, 48,244, 2, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,244, 2, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 31,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224, 32,132, 29, 1, 0, 0, 0,192, 29,132, 29, 1, 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, 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, 35,253, 78, 1, 0, 0, 0, 0, 0, 0, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,224, 32,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 34,132, 29, 1, 0, 0, 0, 80, 31,132, 29, + 1, 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, 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, 11,253, 78, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 34,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 32,132, 29, 1, 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, - 68, 65, 84, 65, 32, 1, 0, 0,160,173,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,169,165, 29, 1, 0, 0, 0,224,170,165, 29, 1, 0, 0, 0, 64,172,165, 29, 1, 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, 48,202, 4, 28, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 0,175,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,208,165, 29, 1, 0, 0, 0, 16,145,165, 29, 1, 0, 0, 0, - 80,128,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0,240,130,165, 29, 1, 0, 0, 0, 80,131,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,179, 1, 0, 0, 17, 17, 32, 6,180, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,182,217, 2, 1, 0, 0, 0,144,181,165, 29, 1, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0, -224,175,165, 29, 1, 0, 0, 0, 48,180,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 67,200, 20, 1, 0, 0, 0,224, 61,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,175,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 64,177,165, 29, 1, 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, 0,196, 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, 6, 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, 32, 6, 26, 0, 32, 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, 0, 0, 0, 0, 31, 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, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,184,217, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,177,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48,180,165, 29, 1, 0, 0, 0,224,175,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, - 0, 0,196,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 18, 0, 0, 0,153, 1, 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, - 18, 0, 0, 0,153, 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,220, 0,154, 1,203, 0,136, 1, 0, 0, 0, 0, 0, 0, 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,179, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,154, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,183,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,178,165, 29, 1, 0, 0, 0,160,178,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,178,165, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 19, 27, 1, 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,243,252, 78, 1, 0, 0, 20, 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, 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, 68, 65, 84, 65, + 0, 1, 0, 0, 0, 36,132, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 96, 41,132, 29, 1, 0, 0, 0, 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,196,255,203, 0, 36, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 48,180,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,177,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67,228, 46, 44,195,220,133,181, 68, -162,102,238,194,168,153,179, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,153, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,153, 1, 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, 68, 5, -154, 1, 51, 5,136, 1, 0, 0, 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, 31, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 5,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,183,217, 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, 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, 40, 1, 0, 0, 64, 37,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 38,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 68, 65, 84, 65, 72, 0, 0, 0,144,181,165, 29, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 48,186,165, 29, 1, 0, 0, 0, - 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, 40, 1, 0, 0, 16,182,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,183,165, 29, 1, 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, 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, - 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,112,183,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,184,165, 29, 1, 0, 0, 0, - 16,182,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,160, 38,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 40,132, 29, 1, 0, 0, 0, 64, 37,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,208,184,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,183,165, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 40,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 38,132, 29, 1, 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,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, 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, 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, 68, 65, 84, 65,240, 0, 0, 0, 96, 41,132, 29, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 80, 45,132, 29, 1, 0, 0, 0, 0, 36,132, 29, 1, 0, 0, 0, 64, 37,132, 29, + 1, 0, 0, 0, 0, 40,132, 29, 1, 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, - 68, 65, 84, 65,168, 0, 0, 0, 48,186,165, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,208,189,165, 29, 1, 0, 0, 0, -144,181,165, 29, 1, 0, 0, 0, 16,182,165, 29, 1, 0, 0, 0,208,184,165, 29, 1, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 16,187,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,188,165, 29, 1, 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, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,188,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,187,165, 29, 1, 0, 0, 0, 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, - 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,144, 42,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 43,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 43,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 42,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,189,165, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 80,195,165, 29, 1, 0, 0, 0, - 48,186,165, 29, 1, 0, 0, 0, 16,187,165, 29, 1, 0, 0, 0,112,188,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,242,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48,242,135, 27, 1, 0, 0, 0,157, 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, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 48,191,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,192,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -144,192,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,193,165, 29, 1, 0, 0, 0, 48,191,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -240,193,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,192,165, 29, 1, 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,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, 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, 68, 65, 84, 65, 32, 1, 0, 0, 80, 45,132, 29, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 41,132, 29, 1, 0, 0, 0,144, 42,132, 29, 1, 0, 0, 0,240, 43,132, 29, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 46,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 80,132, 29, + 1, 0, 0, 0,192, 16,132, 29, 1, 0, 0, 0, 0, 0,132, 29, 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,160, 2,132, 29, + 1, 0, 0, 0, 0, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, +179, 1, 0, 0, 17, 17, 32, 6,180, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 53,132, 29, + 1, 0, 0, 0, 48, 79,132, 29, 1, 0, 0, 0,144, 47,132, 29, 1, 0, 0, 0,224, 51,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 47,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 48,132, 29, 1, 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, 0,196, 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, 6, 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, 32, 6, 26, 0, 32, 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, 0, 0, 0, 0, + 31, 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, 32, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 48,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 51,132, 29, 1, 0, 0, 0,144, 47,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,196,195, + 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,153, 1, 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, 18, 0, 0, 0,153, 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,220, 0,154, 1,203, 0, +136, 1, 0, 0, 0, 0, 0, 0, 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,179, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,154, 1, + 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, 80, 50,132, 29, 1, 0, 0, 0, 80, 50,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 80, 50,132, 29, 1, 0, 0, 0,194, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 51,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 48,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, + 0, 0,112, 67,228, 46, 44,195,220,133,181, 68,162,102,238,194,168,153,179, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0, +153, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0, +153, 1, 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, 68, 5,154, 1, 51, 5,136, 1, 0, 0, 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, 31, 6, 0, 0, 26, 0, 0, 0,179, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 53,132, 29, 1, 0, 0, 0,175, 0, 0, 0, + 1, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0, 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, 40, 1, 0, 0,192, 53,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 55,132, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 55,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,128, 56,132, 29, 1, 0, 0, 0,192, 53,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 56,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 55,132, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0,168, 0, 0, 0, + 1, 0, 0, 0,128, 61,132, 29, 1, 0, 0, 0, 64, 53,132, 29, 1, 0, 0, 0,192, 53,132, 29, 1, 0, 0, 0,128, 56,132, 29, + 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 58,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 60,132, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 60,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 58,132, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 80,195,165, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,203,165, 29, 1, 0, 0, 0,208,189,165, 29, 1, 0, 0, 0, - 48,191,165, 29, 1, 0, 0, 0,240,193,165, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0,128, 61,132, 29, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0, 67,132, 29, 1, 0, 0, 0,224, 57,132, 29, 1, 0, 0, 0,192, 58,132, 29, 1, 0, 0, 0, 32, 60,132, 29, + 1, 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, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 40, 1, 0, 0,224, 62,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 64,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,128,196,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,197,165, 29, 1, 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,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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 64,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 65,132, 29, + 1, 0, 0, 0,224, 62,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,197,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,199,165, 29, 1, 0, 0, 0, -128,196,165, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,199,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,200,165, 29, 1, 0, 0, 0, -224,197,165, 29, 1, 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, 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, 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, 40, 1, 0, 0,160,200,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,202,165, 29, 1, 0, 0, 0, - 64,199,165, 29, 1, 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 65,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 64,132, 29, 1, 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,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, 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, 40, 1, 0, 0, 0,202,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,200,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 67,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16, 75,132, 29, + 1, 0, 0, 0,128, 61,132, 29, 1, 0, 0, 0,224, 62,132, 29, 1, 0, 0, 0,160, 65,132, 29, 1, 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, -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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,248, 2, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,248, 2, 28, 1, 0, 0, 0,157, 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,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 68,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,144, 69,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 69,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,240, 70,132, 29, 1, 0, 0, 0, 48, 68,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 70,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 80, 72,132, 29, 1, 0, 0, 0,144, 69,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 72,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,176, 73,132, 29, 1, 0, 0, 0,240, 70,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 73,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 72,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,246,135, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,246,135, 27, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 1, 0, 0, 16, 75,132, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 48, 79,132, 29, 1, 0, 0, 0, 0, 67,132, 29, + 1, 0, 0, 0, 48, 68,132, 29, 1, 0, 0, 0,176, 73,132, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,112, 76,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 77,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96,203,165, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0, 80,195,165, 29, 1, 0, 0, 0,128,196,165, 29, 1, 0, 0, 0, - 0,202,165, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 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, 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, - 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, 40, 1, 0, 0,192,204,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 32,206,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 77,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 76,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 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, 32,206,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,204,165, 29, 1, 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,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, 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, 68, 65, 84, 65,200, 0, 0, 0, 48, 79,132, 29, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 75,132, 29, 1, 0, 0, 0,112, 76,132, 29, + 1, 0, 0, 0,208, 77,132, 29, 1, 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,200, 0, 0, 0,128,207,165, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96,203,165, 29, 1, 0, 0, 0,192,204,165, 29, 1, 0, 0, 0, 32,206,165, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48, 80,132, 29, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,102,132, 29, 1, 0, 0, 0,176, 46,132, 29, 1, 0, 0, 0,192, 3,132, 29, + 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,224, 1,132, 29, 1, 0, 0, 0, 96, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 9, 9, 72, 2,175, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,250,135, 27, 1, 0, 0, 0, 16,101,132, 29, 1, 0, 0, 0, 16, 81,132, 29, + 1, 0, 0, 0,112, 82,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 81,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,112, 82,132, 29, 1, 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, 18, 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, 71, 2, 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, 72, 2, 26, 0, 72, 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, 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,208,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -192,230,165, 29, 1, 0, 0, 0, 0,175,165, 29, 1, 0, 0, 0, 16,132,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, - 48,130,165, 29, 1, 0, 0, 0,176,131,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0, -181, 1, 0, 0, 99, 4, 0, 0, 9, 9, 72, 2,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,175,217, 2, 1, 0, 0, 0, - 48,252, 2, 28, 1, 0, 0, 0, 96,229,165, 29, 1, 0, 0, 0, 96,209,165, 29, 1, 0, 0, 0,192,210,165, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,145,162, 21, 1, 0, 0, 0, 48, 10,201, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 96,209,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,210,165, 29, 1, 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, 18, 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, 71, 2, 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, 72, 2, - 26, 0, 72, 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, - 57, 5, 0, 0,128, 7, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,177,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 82,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 81,132, 29, 1, 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,120, 27, 19, 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, 71, 2, 0, 0, 0, 0, 0, 0, +148, 2, 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, 72, 2,149, 2, 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,210,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,209,165, 29, 1, 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,120, 27, 19, 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, 71, 2, 0, 0, 0, 0, 0, 0,148, 2, 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, 72, 2, -149, 2, 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 5, 0, 0,128, 7, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 2,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,176,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 48,250,135, 27, 1, 0, 0, 0,170, 0, 0, 0, + 1, 0, 0, 0,144, 86,132, 29, 1, 0, 0, 0, 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, - 68, 65, 84, 65,144, 2, 0, 0, 48,252, 2, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,224,214,165, 29, 1, 0, 0, 0, - 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, @@ -3969,995 +3972,994 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208, 83,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 85,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 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, 32,212,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -128,213,165, 29, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 85,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 83,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 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,128,213,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,212,165, 29, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 86,132, 29, + 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,192, 91,132, 29, 1, 0, 0, 0, 48,250,135, 27, 1, 0, 0, 0,208, 83,132, 29, + 1, 0, 0, 0, 48, 85,132, 29, 1, 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, 40, 1, 0, 0,224,214,165, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, - 16,220,165, 29, 1, 0, 0, 0, 48,252, 2, 28, 1, 0, 0, 0, 32,212,165, 29, 1, 0, 0, 0,128,213,165, 29, 1, 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, 80,203,107, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,203,107, 27, + 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240, 87,132, 29, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,240, 87,132, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 89,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 90,132, 29, + 1, 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,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, + 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, -224, 54,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 54,160, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 64,216,165, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 64,216,165, 29, 1, 0, 0, 0, -218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 80,217,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,218,165, 29, 1, 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,162, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 90,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89,132, 29, 1, 0, 0, 0, 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, + 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, - 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 91,132, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 32, 97,132, 29, + 1, 0, 0, 0,144, 86,132, 29, 1, 0, 0, 0, 0, 89,132, 29, 1, 0, 0, 0, 96, 90,132, 29, 1, 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, 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, + 40, 1, 0, 0, 0, 93,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 94,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 94,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 95,132, 29, 1, 0, 0, 0, 0, 93,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -176,218,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,217,165, 29, 1, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 16,220,165, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,112,225,165, 29, 1, 0, 0, 0,224,214,165, 29, 1, 0, 0, 0, - 80,217,165, 29, 1, 0, 0, 0,176,218,165, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 95,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 94,132, 29, + 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 97,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16,101,132, 29, 1, 0, 0, 0,192, 91,132, 29, + 1, 0, 0, 0, 0, 93,132, 29, 1, 0, 0, 0,192, 95,132, 29, 1, 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, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 98,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 99,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 80,221,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,176,222,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 99,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 98,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,222,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16,224,165, 29, 1, 0, 0, 0, 80,221,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 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,254,135, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,254,135, 27, 1, 0, 0, 0,157, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,224,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,222,165, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,225,165, 29, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0, 96,229,165, 29, 1, 0, 0, 0, 16,220,165, 29, 1, 0, 0, 0, 80,221,165, 29, 1, 0, 0, 0, - 16,224,165, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16,101,132, 29, + 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 97,132, 29, 1, 0, 0, 0, 80, 98,132, 29, + 1, 0, 0, 0,176, 99,132, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,102,132, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 48, 16,110, 27, 1, 0, 0, 0, 48, 80,132, 29, 1, 0, 0, 0,128, 4,132, 29, 1, 0, 0, 0,224, 4,132, 29, + 1, 0, 0, 0, 32, 4,132, 29, 1, 0, 0, 0,192, 3,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, + 55, 5, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 1, 1,251, 3,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,121,132, 29, 1, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0, 80,103,132, 29, 1, 0, 0, 0,192,119,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,103,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,104,132, 29, + 1, 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,126, 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,250, 3, 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, 3, 26, 0,251, 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, 61, 1, 0, 0, 55, 5, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,251, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,104,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,106,132, 29, + 1, 0, 0, 0, 80,103,132, 29, 1, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,149, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,106,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,107,132, 29, + 1, 0, 0, 0,176,104,132, 29, 1, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0,207, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,107,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,119,132, 29, + 1, 0, 0, 0, 16,106,132, 29, 1, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0,207, 1, 0, 0, 99, 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,208,108,132, 29, 1, 0, 0, 0, 48,118,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,108,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,110,132, 29, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96,110,132, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,111,132, 29, 1, 0, 0, 0,208,108,132, 29, 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,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, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -160,226,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,228,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, + 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, 68, 65, 84, 65, 40, 1, 0, 0, - 0,228,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,226,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,111,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,113,132, 29, + 1, 0, 0, 0, 96,110,132, 29, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,113,132, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,115,132, 29, 1, 0, 0, 0,240,111,132, 29, 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, 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, 48, 0, 3, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 0, 3, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96,229,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,225,165, 29, 1, 0, 0, 0,160,226,165, 29, 1, 0, 0, 0, 0,228,165, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,192,230,165, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, -128,208,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,112,132,165, 29, 1, 0, 0, 0, - 16,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, - 1, 1,251, 3,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0,112,249,165, 29, 1, 0, 0, 0, - 0, 7,166, 29, 1, 0, 0, 0,160,231,165, 29, 1, 0, 0, 0, 16,248,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 44,200, 20, 1, 0, 0, 0, 48, 7,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -160,231,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,233,165, 29, 1, 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,126, 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,250, 3, 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, 3, 26, 0,251, 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, 61, 1, 0, 0, 55, 5, 0, 0, -181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 0,233,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,234,165, 29, 1, 0, 0, 0,160,231,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 61, 1, 0, 0, -207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,149, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 96,234,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,235,165, 29, 1, 0, 0, 0, 0,233,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0, -207, 1, 0, 0,207, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0,118,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -192,235,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,248,165, 29, 1, 0, 0, 0, 96,234,165, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 55, 5, 0, 0, 55, 5, 0, 0, -207, 1, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,237,165, 29, 1, 0, 0, 0,128,246,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 32,237,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,238,165, 29, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,115,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,116,132, 29, + 1, 0, 0, 0,128,113,132, 29, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,116,132, 29, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,118,132, 29, 1, 0, 0, 0, 16,115,132, 29, 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,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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,238,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 64,240,165, 29, 1, 0, 0, 0, 32,237,165, 29, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 48,118,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,116,132, 29, 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, 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, - 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,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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,192,119,132, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,107,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 64,240,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,241,165, 29, 1, 0, 0, 0,176,238,165, 29, 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, 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, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0, + 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,241,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 96,243,165, 29, 1, 0, 0, 0, 64,240,165, 29, 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, 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, 48, 2,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 2,136, 27, + 1, 0, 0, 0,157, 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, +226,201,115, 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,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +226,201,115, 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, + 90,105,134, 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, +226,201,115, 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, - 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,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,221, 57, 80, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 96,243,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,244,165, 29, 1, 0, 0, 0,208,241,165, 29, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,244,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -128,246,165, 29, 1, 0, 0, 0, 96,243,165, 29, 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,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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 32,121,132, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 32, 8,110, 27, + 1, 0, 0, 0, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 40, 1, 0, 0, 96, 5,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 6,110, 27, 1, 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, 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, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,192, 6,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 5,110, 27, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -128,246,165, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,244,165, 29, 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, 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, 68, 65, 84, 65, + 32, 1, 0, 0, 32, 8,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,160, 13,110, 27, 1, 0, 0, 0, 32,121,132, 29, + 1, 0, 0, 0, 96, 5,110, 27, 1, 0, 0, 0,192, 6,110, 27, 1, 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,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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,248,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,235,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,128, 9,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 10,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 61, 1, 0, 0, 55, 5, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 3,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,112,217, 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, - 48, 4, 3, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 4, 3, 28, 1, 0, 0, 0,157, 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,226,201,115, 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, -190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,201,115, 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, 90,105,134, 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,226,201,115, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 10,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 12,110, 27, 1, 0, 0, 0,128, 9,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -221, 57, 80, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 64, 12,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 10,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,160, 13,110, 27, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0, 32, 8,110, 27, 1, 0, 0, 0,128, 9,110, 27, + 1, 0, 0, 0, 64, 12,110, 27, 1, 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, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -112,249,165, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,144,253,165, 29, 1, 0, 0, 0, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,208,250,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48,252,165, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,252,165, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,250,165, 29, 1, 0, 0, 0, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,208, 14,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,137,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,137,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 14,110, 27, + 1, 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,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, 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,144,253,165, 29, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 16, 3,166, 29, 1, 0, 0, 0,112,249,165, 29, 1, 0, 0, 0,208,250,165, 29, 1, 0, 0, 0, - 48,252,165, 29, 1, 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, +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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +200, 0, 0, 0,160,138,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 13,110, 27, + 1, 0, 0, 0,208, 14,110, 27, 1, 0, 0, 0, 64,137,110, 27, 1, 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, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,240,254,165, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 80, 0,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 0,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -176, 1,166, 29, 1, 0, 0, 0,240,254,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, +160, 0, 0, 0, 48, 16,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,102,132, 29, + 1, 0, 0, 0, 64, 2,132, 29, 1, 0, 0, 0,128, 1,132, 29, 1, 0, 0, 0,224, 4,132, 29, 1, 0, 0, 0,128, 4,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 3, 3, 60, 1, +175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,142,110, 27, 1, 0, 0, 0,240, 37,110, 27, + 1, 0, 0, 0,160,139,110, 27, 1, 0, 0, 0, 0,141,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,160,139,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,141,110, 27, 1, 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,158, 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, + 59, 1, 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, 60, 1, 26, 0, 60, 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, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0, +206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,141,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,139,110, 27, 1, 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,149, 67, 0,192, 32,196, 0, 0, 0, 0, 43, 1, 0, 0, + 60, 1, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 42, 1, 0, 0, 18, 0, 0, 0,148, 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, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,149, 2, 43, 1,131, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,207, 1, 0, 0, + 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,142,110, 27, + 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 96, 24,110, 27, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 1,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 3,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, - 0, 7,166, 29, 1, 0, 0, 0,144,253,165, 29, 1, 0, 0, 0,240,254,165, 29, 1, 0, 0, 0,176, 1,166, 29, 1, 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,160, 7,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 7,130, 29, + 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,192,143,110, 27, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,192,143,110, 27, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,144,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,146,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 4,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,160, 5,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 5,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 4,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 0, 7,166, 29, 1, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,166, 29, 1, 0, 0, 0, 64, 4,166, 29, 1, 0, 0, 0, -160, 5,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0, 8,166, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,230,165, 29, 1, 0, 0, 0,144,130,165, 29, 1, 0, 0, 0, -208,129,165, 29, 1, 0, 0, 0, 48,133,165, 29, 1, 0, 0, 0,208,132,165, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0, 99, 4, 0, 0, 3, 3, 60, 1,175, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,106,217, 2, 1, 0, 0, 0,160, 11,166, 29, 1, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0,224, 8,166, 29, 1, 0, 0, 0, - 64, 10,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,200, 20, 1, 0, 0, 0, - 96,111,160, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 8,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 64, 10,166, 29, 1, 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,158, 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, 59, 1, 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, 60, 1, 26, 0, 60, 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, 0, 0, 0, 0, 59, 1, 0, 0,181, 1, 0, 0,206, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,108,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 10,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224, 8,166, 29, 1, 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,149, 67, 0,192, 32,196, 0, 0, 0, 0, 43, 1, 0, 0, 60, 1, 0, 0, 18, 0, 0, 0,148, 2, 0, 0, - 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 18, 0, 0, 0,148, 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, 18, 0, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0, 60, 1,149, 2, 43, 1,131, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,207, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,149, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,107,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 11,166, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, -240, 20,166, 29, 1, 0, 0, 0, 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,192, 57,201, 20, 1, 0, 0, 0,192, 57,201, 20, 1, 0, 0, 0, -224, 70,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 70,161, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 0, 13,166, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 0, 13,166, 29, 1, 0, 0, 0, -218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,208, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,220, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,214, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 16, 14,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 15,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -112, 15,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 16,166, 29, 1, 0, 0, 0, 16, 14,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -208, 16,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 18,166, 29, 1, 0, 0, 0,112, 15,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 48, 18,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 19,166, 29, 1, 0, 0, 0,208, 16,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -144, 19,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 18,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,120, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48,120, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,146,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,147,110, 27, + 1, 0, 0, 0,208,144,110, 27, 1, 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, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,144,147,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,148,110, 27, + 1, 0, 0, 0, 48,146,110, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,148,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,150,110, 27, + 1, 0, 0, 0,144,147,110, 27, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,150,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,148,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,240, 20,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, - 16, 25,166, 29, 1, 0, 0, 0,160, 11,166, 29, 1, 0, 0, 0, 16, 14,166, 29, 1, 0, 0, 0,144, 19,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 40, 1, 0, 0, 80, 22,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 23,166, 29, 1, 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, 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, - 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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 6,136, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 6,136, 27, 1, 0, 0, 0,157, 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, - 68, 65, 84, 65, 40, 1, 0, 0,176, 23,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 22,166, 29, 1, 0, 0, 0, 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, - 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, 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, - 68, 65, 84, 65, 32, 1, 0, 0, 16, 25,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144, 30,166, 29, 1, 0, 0, 0, -240, 20,166, 29, 1, 0, 0, 0, 80, 22,166, 29, 1, 0, 0, 0,176, 23,166, 29, 1, 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, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96, 24,110, 27, + 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,128, 28,110, 27, 1, 0, 0, 0, 96,142,110, 27, 1, 0, 0, 0,208,144,110, 27, + 1, 0, 0, 0, 80,150,110, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, -112, 26,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 27,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,192, 25,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 27,110, 27, 1, 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, 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, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -208, 27,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 29,166, 29, 1, 0, 0, 0,112, 26,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 27,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 25,110, 27, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 28,110, 27, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0, 96, 24,110, 27, 1, 0, 0, 0,192, 25,110, 27, 1, 0, 0, 0, 32, 27,110, 27, + 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 48, 29,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 27,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -144, 30,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0, 16, 25,166, 29, 1, 0, 0, 0, -112, 26,166, 29, 1, 0, 0, 0, 48, 29,166, 29, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,192, 31,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 33,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 33,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 31,166, 29, 1, 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,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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,200, 0, 0, 0,128, 34,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 30,166, 29, 1, 0, 0, 0,192, 31,166, 29, 1, 0, 0, 0, 32, 33,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0, 0, 36,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 80,188,166, 29, 1, 0, 0, 0, - 64,127,165, 29, 1, 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, - 16, 37,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 80, 42,166, 29, 1, 0, 0, 0, 48, 50,166, 29, 1, 0, 0, 0, -144, 50,166, 29, 1, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 16, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -112, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,112, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, - 16, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -208, 37,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0,112, 37,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -240, 38,166, 29, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, -144, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 80, 39,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -112, 40,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, - 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -208, 40,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 2,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -240, 41,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 64, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 64, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 80, 42,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 42,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 37,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -176, 42,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 43,166, 29, 1, 0, 0, 0, 80, 42,166, 29, 1, 0, 0, 0, -112, 37,166, 29, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 16, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 43,166, 29, 1, 0, 0, 0,176, 42,166, 29, 1, 0, 0, 0, -208, 37,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -112, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 43,166, 29, 1, 0, 0, 0, 16, 43,166, 29, 1, 0, 0, 0, -144, 38,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -208, 43,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 44,166, 29, 1, 0, 0, 0,112, 43,166, 29, 1, 0, 0, 0, -240, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 48, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 44,166, 29, 1, 0, 0, 0,208, 43,166, 29, 1, 0, 0, 0, -144, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -144, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 44,166, 29, 1, 0, 0, 0, 48, 44,166, 29, 1, 0, 0, 0, - 48, 38,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -240, 44,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 45,166, 29, 1, 0, 0, 0,144, 44,166, 29, 1, 0, 0, 0, - 16, 37,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 80, 45,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 45,166, 29, 1, 0, 0, 0,240, 44,166, 29, 1, 0, 0, 0, -144, 38,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -176, 45,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 46,166, 29, 1, 0, 0, 0, 80, 45,166, 29, 1, 0, 0, 0, - 80, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 16, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 46,166, 29, 1, 0, 0, 0,176, 45,166, 29, 1, 0, 0, 0, -176, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -112, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 46,166, 29, 1, 0, 0, 0, 16, 46,166, 29, 1, 0, 0, 0, - 16, 40,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -208, 46,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 47,166, 29, 1, 0, 0, 0,112, 46,166, 29, 1, 0, 0, 0, - 16, 37,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 48, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 47,166, 29, 1, 0, 0, 0,208, 46,166, 29, 1, 0, 0, 0, -176, 39,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -144, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 47,166, 29, 1, 0, 0, 0, 48, 47,166, 29, 1, 0, 0, 0, - 16, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -240, 47,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 48,166, 29, 1, 0, 0, 0,144, 47,166, 29, 1, 0, 0, 0, -112, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 80, 48,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 48,166, 29, 1, 0, 0, 0,240, 47,166, 29, 1, 0, 0, 0, -208, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -176, 48,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 49,166, 29, 1, 0, 0, 0, 80, 48,166, 29, 1, 0, 0, 0, -176, 39,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 16, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 49,166, 29, 1, 0, 0, 0,176, 48,166, 29, 1, 0, 0, 0, - 80, 39,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -112, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 49,166, 29, 1, 0, 0, 0, 16, 49,166, 29, 1, 0, 0, 0, -240, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -208, 49,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 50,166, 29, 1, 0, 0, 0,112, 49,166, 29, 1, 0, 0, 0, - 48, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 48, 50,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 49,166, 29, 1, 0, 0, 0, -144, 41,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -144, 50,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 38,166, 29, 1, 0, 0, 0,112, 37,166, 29, 1, 0, 0, 0,208, 37,166, 29, 1, 0, 0, 0,240, 38,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,208,187,166, 29, 1, 0, 0, 0,208,187,166, 29, 1, 0, 0, 0, -112, 51,166, 29, 1, 0, 0, 0,208, 52,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,144,140, 27, 1, 0, 0, 0,208,252,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 51,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208, 52,166, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 52,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 51,166, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0,144, 50,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, -144, 41,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 48, 38,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 63, 3, 0, 0, 4, 4,144, 1, 64, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,141,217, 2, 1, 0, 0, 0,112, 73,166, 29, 1, 0, 0, 0,192, 82,166, 29, 1, 0, 0, 0, 16, 55,166, 29, 1, 0, 0, 0, -112, 56,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,108,141, 27, 1, 0, 0, 0, -192,123,164, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 55,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -112, 56,166, 29, 1, 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,200, 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,143, 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,144, 1, 31, 0,144, 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, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 33, 3, 0, 0, 63, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,143,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 56,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 55,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64, 68,196, 0, 0, 0, 0, - 0, 0, 0, 0,255,127,191, 67,255,191, 67,196, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, 32, 3, 0, 0, - 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, 32, 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, 4, 6, 0,144, 1, 33, 3,127, 1, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,152,162, 21, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32,142,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 57,166, 29, 1, 0, 0, 0, -224, 71,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208, 57,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 96, 59,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,217, 2, 1, 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,126, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 96, 59,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 60,166, 29, 1, 0, 0, 0,208, 57,166, 29, 1, 0, 0, 0, - 32,198, 17, 27, 1, 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, 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,126, 1, 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, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 40, 1, 0, 0,224, 29,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 31,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 60,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -128, 62,166, 29, 1, 0, 0, 0, 96, 59,166, 29, 1, 0, 0, 0, 0,200, 17, 27, 1, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 31,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 32,110, 27, + 1, 0, 0, 0,224, 29,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,126, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -128, 62,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 64,166, 29, 1, 0, 0, 0,240, 60,166, 29, 1, 0, 0, 0, - 96,202, 17, 27, 1, 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, 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,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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,126, 1,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, 68, 65, 84, 65, 40, 1, 0, 0,160, 32,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 31,110, 27, 1, 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,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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 64,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -160, 65,166, 29, 1, 0, 0, 0,128, 62,166, 29, 1, 0, 0, 0,192,204, 17, 27, 1, 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, - 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, 68, 65, 84, 65,240, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,240, 37,110, 27, + 1, 0, 0, 0,128, 28,110, 27, 1, 0, 0, 0,224, 29,110, 27, 1, 0, 0, 0,160, 32,110, 27, 1, 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, - 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,126, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -160, 65,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 67,166, 29, 1, 0, 0, 0, 16, 64,166, 29, 1, 0, 0, 0, - 32,207, 17, 27, 1, 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, 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,188,253,126, 1,102, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 35,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,144, 36,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 36,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 35,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,240, 37,110, 27, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,110, 27, 1, 0, 0, 0, 48, 35,110, 27, 1, 0, 0, 0,144, 36,110, 27, + 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,240, 38,110, 27, 1, 0, 0, 0,191, 0, 0, 0, + 1, 0, 0, 0,128, 74,111, 27, 1, 0, 0, 0,240,254,131, 29, 1, 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,176,151,110, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 96, 45,109, 27, + 1, 0, 0, 0, 0, 42,110, 27, 1, 0, 0, 0, 96, 42,110, 27, 1, 0, 0, 0, 16,113,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,176,151,110, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 16,152,110, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,109,109, 27, + 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0,192,108,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,109,109, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,110,109, 27, + 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 64,110,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,111,109, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,192, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,112,109, 27, + 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,192,111,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,112,109, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 5, 64, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 64, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 45,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 45,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 45,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 46,109, 27, + 1, 0, 0, 0, 96, 45,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 46,109, 27, + 1, 0, 0, 0,192, 45,109, 27, 1, 0, 0, 0,192,108,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 46,109, 27, + 1, 0, 0, 0, 32, 46,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 46,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 47,109, 27, + 1, 0, 0, 0,128, 46,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 47,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 47,109, 27, + 1, 0, 0, 0,224, 46,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 47,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 48,109, 27, + 1, 0, 0, 0, 64, 47,109, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 48,109, 27, + 1, 0, 0, 0,160, 47,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 48,109, 27, + 1, 0, 0, 0, 0, 48,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 48,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 49,109, 27, + 1, 0, 0, 0, 96, 48,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 49,109, 27, + 1, 0, 0, 0,192, 48,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 49,109, 27, + 1, 0, 0, 0, 32, 49,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 49,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 50,109, 27, + 1, 0, 0, 0,128, 49,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 50,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 50,109, 27, + 1, 0, 0, 0,224, 49,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 50,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 51,109, 27, + 1, 0, 0, 0, 64, 50,109, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 51,109, 27, + 1, 0, 0, 0,160, 50,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 51,109, 27, + 1, 0, 0, 0, 0, 51,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 51,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 52,109, 27, + 1, 0, 0, 0, 96, 51,109, 27, 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 52,109, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 41,110, 27, + 1, 0, 0, 0,192, 51,109, 27, 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 41,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 41,110, 27, + 1, 0, 0, 0, 32, 52,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 41,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 42,110, 27, + 1, 0, 0, 0, 64, 41,110, 27, 1, 0, 0, 0, 32,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 42,110, 27, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 41,110, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96, 42,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 46,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 16,152,110, 27, 1, 0, 0, 0,192,108,109, 27, + 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0, +128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,132,111, 27, + 1, 0, 0, 0,144,132,111, 27, 1, 0, 0, 0, 64, 43,110, 27, 1, 0, 0, 0,160, 44,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 43,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 44,110, 27, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0,160, 44,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 43,110, 27, + 1, 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, 0, 0, 0, 0, +128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 67,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -192, 68,166, 29, 1, 0, 0, 0,160, 65,166, 29, 1, 0, 0, 0,128,209, 17, 27, 1, 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, 68, 65, 84, 65, +160, 0, 0, 0, 0, 46,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0, 96, 42,110, 27, + 1, 0, 0, 0,160,110,109, 27, 1, 0, 0, 0,128,112,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 32,109,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 63, 3, 0, 0, 4, 4,144, 1, + 64, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,110, 27, 1, 0, 0, 0,144, 74,110, 27, + 1, 0, 0, 0,224, 46,110, 27, 1, 0, 0, 0, 64, 48,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,224, 46,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 48,110, 27, 1, 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,200, 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, - 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, +143, 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,144, 1, 31, 0,144, 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, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 33, 3, 0, 0, + 63, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 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, - 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, 59,253,126, 1,105, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 48,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0,191, 67, 0, 64, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,191, 67,255,191, 67,196, 0, 0, 0, 0,127, 1, 0, 0, +144, 1, 0, 0, 18, 0, 0, 0, 32, 3, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +126, 1, 0, 0, 18, 0, 0, 0, 32, 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, 4, 6, 0,144, 1, 33, 3,127, 1, 15, 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,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 33, 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,160, 49,110, 27, 1, 0, 0, 0,176, 63,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 49,110, 27, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 51,110, 27, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -192, 68,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 70,166, 29, 1, 0, 0, 0, 48, 67,166, 29, 1, 0, 0, 0, - 16,142, 17, 27, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 35,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 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, 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,126, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 70,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -224, 71,166, 29, 1, 0, 0, 0,192, 68,166, 29, 1, 0, 0, 0, 48,215, 17, 27, 1, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 51,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 52,110, 27, + 1, 0, 0, 0,160, 49,110, 27, 1, 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, 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, +126, 1, 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, 11,253,126, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 52,110, 27, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 54,110, 27, 1, 0, 0, 0, 48, 51,110, 27, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -224, 71,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 70,166, 29, 1, 0, 0, 0, -144,217, 17, 27, 1, 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, 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, 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, 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, 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,111,255,126, 1, 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,243,252,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 54,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 55,110, 27, + 1, 0, 0, 0,192, 52,110, 27, 1, 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, 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, +126, 1,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, 68, 65, 84, 65, 0, 1, 0, 0,112, 73,166, 29, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, -208, 78,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 55,110, 27, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 57,110, 27, 1, 0, 0, 0, 80, 54,110, 27, 1, 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, 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,126, 1, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 57,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 59,110, 27, + 1, 0, 0, 0,224, 55,110, 27, 1, 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, 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,188,253, +126, 1,102, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 59,110, 27, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 60,110, 27, 1, 0, 0, 0,112, 57,110, 27, 1, 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, - 2, 0, 1, 0, 0, 0, 0, 0,160,108,160, 21, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,176, 74,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16, 76,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 16, 76,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 77,166, 29, 1, 0, 0, 0, -176, 74,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,253,126, 1,105, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 60,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 62,110, 27, + 1, 0, 0, 0, 0, 59,110, 27, 1, 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, 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, 35,253, +126, 1, 0, 0, 0, 0, 0, 0, 4, 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, -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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 62,110, 27, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 63,110, 27, 1, 0, 0, 0,144, 60,110, 27, 1, 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, 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, 11,253,126, 1, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 63,110, 27, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 62,110, 27, 1, 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, 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,243,252, +126, 1, 0, 0, 20, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 64, 65,110, 27, + 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,160, 70,110, 27, 1, 0, 0, 0, 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, 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, 40, 1, 0, 0,128, 66,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,224, 67,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 67,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 64, 69,110, 27, 1, 0, 0, 0,128, 66,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 77,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 76,166, 29, 1, 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,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, 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, 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, - 68, 65, 84, 65,240, 0, 0, 0,208, 78,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,192, 82,166, 29, 1, 0, 0, 0, -112, 73,166, 29, 1, 0, 0, 0,176, 74,166, 29, 1, 0, 0, 0,112, 77,166, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 69,110, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 67,110, 27, 1, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 70,110, 27, 1, 0, 0, 0,164, 0, 0, 0, + 1, 0, 0, 0,144, 74,110, 27, 1, 0, 0, 0, 64, 65,110, 27, 1, 0, 0, 0,128, 66,110, 27, 1, 0, 0, 0, 64, 69,110, 27, + 1, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 80,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96, 81,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 81,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 71,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 73,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 48, 73,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 71,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,124, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,124, 4, 28, 1, 0, 0, 0,157, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 10,136, 27, + 1, 0, 0, 0,157, 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, 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, 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, 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, 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, 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, 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,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, @@ -4965,84 +4967,79 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 74,110, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 70,110, 27, 1, 0, 0, 0,208, 71,110, 27, 1, 0, 0, 0, 48, 73,110, 27, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -192, 82,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 78,166, 29, 1, 0, 0, 0, - 0, 80,166, 29, 1, 0, 0, 0, 96, 81,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0, 0, 46,110, 27, + 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0,160,110,109, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,255, 2, +192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 79,110, 27, 1, 0, 0, 0,128,104,110, 27, + 1, 0, 0, 0,208, 76,110, 27, 1, 0, 0, 0, 48, 78,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208, 76,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 78,110, 27, 1, 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,192, 63, 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, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,176,113,166, 29, 1, 0, 0, 0, 48, 54,166, 29, 1, 0, 0, 0,208, 40,166, 29, 1, 0, 0, 0, - 48, 41,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0,176, 39,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,255, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,185,217, 2, 1, 0, 0, 0,192, 87,166, 29, 1, 0, 0, 0,176,112,166, 29, 1, 0, 0, 0, 0, 85,166, 29, 1, 0, 0, 0, - 96, 86,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,148,140, 27, 1, 0, 0, 0, - 16, 25,162, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 85,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96, 86,166, 29, 1, 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,192, 63, 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, 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,255, 2, 26, 0,255, 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,241, 2, 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,255, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,187,217, 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, +254, 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,255, 2, 26, 0,255, 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,241, 2, 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,255, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 86,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 51, 67, - 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,211, 67,238, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,237, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,255, 2,166, 1,238, 2,166, 1, 0, 0, 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, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,186,217, 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, 68, 65, 84, 65,136, 1, 0, 0,192, 87,166, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, - 48,128, 4, 28, 1, 0, 0, 0, 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,144, 42,200, 20, 1, 0, 0, 0, -144, 42,200, 20, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 78,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,211, 67,238, 2, 0, 0, +255, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +237, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,166, 1,238, 2,166, 1, 0, 0, 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, 2, 0, 0,239, 5, 0, 0, 26, 0, 0, 0, +191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,144, 79,110, 27, + 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48, 14,136, 27, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 89,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -224, 90,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 90,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 89,166, 29, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 81,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 82,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65,144, 2, 0, 0, 48,128, 4, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, - 0, 95,166, 29, 1, 0, 0, 0,192, 87,166, 29, 1, 0, 0, 0,128, 89,166, 29, 1, 0, 0, 0,224, 90,166, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 82,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81,110, 27, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 48, 14,136, 27, + 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,208, 86,110, 27, 1, 0, 0, 0,144, 79,110, 27, 1, 0, 0, 0, 80, 81,110, 27, + 1, 0, 0, 0,176, 82,110, 27, 1, 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, @@ -5056,222 +5053,147 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 92,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,160, 93,166, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 93,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 92,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 16, 84,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 85,110, 27, 1, 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, 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, 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, 0, 0, 0, 0, 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, 0, 95,166, 29, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0,128,100,166, 29, 1, 0, 0, 0, 48,128, 4, 28, 1, 0, 0, 0, 64, 92,166, 29, 1, 0, 0, 0, -160, 93,166, 29, 1, 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, 68, 65, 84, 65, + 40, 1, 0, 0,112, 85,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 84,110, 27, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 86,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 80, 92,110, 27, 1, 0, 0, 0, 48, 14,136, 27, + 1, 0, 0, 0, 16, 84,110, 27, 1, 0, 0, 0,112, 85,110, 27, 1, 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, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 96, 96,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192, 97,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 97,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 32, 99,166, 29, 1, 0, 0, 0, 96, 96,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 48, 88,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 89,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 89,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 90,110, 27, 1, 0, 0, 0, 48, 88,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 99,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 97,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,100,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, -144,108,166, 29, 1, 0, 0, 0, 0, 95,166, 29, 1, 0, 0, 0, 96, 96,166, 29, 1, 0, 0, 0, 32, 99,166, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,101,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16,103,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,103,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,112,104,166, 29, 1, 0, 0, 0,176,101,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,104,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208,105,166, 29, 1, 0, 0, 0, 16,103,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,105,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48,107,166, 29, 1, 0, 0, 0,112,104,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,107,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,105,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,132, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,132, 4, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 90,110, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 89,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 80, 92,110, 27, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,100,110, 27, 1, 0, 0, 0,208, 86,110, 27, 1, 0, 0, 0, 48, 88,110, 27, + 1, 0, 0, 0,240, 90,110, 27, 1, 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, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,128, 93,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 94,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,144,108,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,176,112,166, 29, 1, 0, 0, 0, -128,100,166, 29, 1, 0, 0, 0,176,101,166, 29, 1, 0, 0, 0, 48,107,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, -240,109,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,111,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 80,111,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109,166, 29, 1, 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,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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,224, 94,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 96,110, 27, 1, 0, 0, 0,128, 93,110, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 64, 96,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 97,110, 27, 1, 0, 0, 0,224, 94,110, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, -176,112,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,108,166, 29, 1, 0, 0, 0, -240,109,166, 29, 1, 0, 0, 0, 80,111,166, 29, 1, 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, 68, 65, 84, 65, + 40, 1, 0, 0,160, 97,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 99,110, 27, 1, 0, 0, 0, 64, 96,110, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 99,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 97,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 0, 0, 0, -176,113,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0, 32, 84,166, 29, 1, 0, 0, 0, - 16, 40,166, 29, 1, 0, 0, 0,144, 38,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0,112, 40,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0, 99, 4, 0, 0, 9, 9,240, 5,163, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,175,217, 2, 1, 0, 0, 0, 48,136, 4, 28, 1, 0, 0, 0,192,137,166, 29, 1, 0, 0, 0, -144,114,166, 29, 1, 0, 0, 0,240,115,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,157,140, 27, 1, 0, 0, 0, 32,164,140, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,114,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,240,115,166, 29, 1, 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,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, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0,218, 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,208,177,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,115,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,114,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, - 0, 0, 0, 0, 0,192, 22, 68,168, 86,234, 67, 86, 74,131, 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,239, 5, 0, 0, - 0, 0, 0, 0,136, 2, 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,137, 2,240, 5,137, 2, 0, 0, 0, 0, 0, 0, 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,219, 1, 0, 0, 99, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,137, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,176,217, 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, 68, 65, 84, 65,144, 2, 0, 0, 48,136, 4, 28, 1, 0, 0, 0, -170, 0, 0, 0, 1, 0, 0, 0, 16,120,166, 29, 1, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 18,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 18,136, 27, 1, 0, 0, 0,157, 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, @@ -5280,258 +5202,227 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,100,110, 27, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0,128,104,110, 27, 1, 0, 0, 0, 80, 92,110, 27, 1, 0, 0, 0,128, 93,110, 27, 1, 0, 0, 0, 0, 99,110, 27, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 40, 1, 0, 0,192,101,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,103,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,103,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192,101,110, 27, 1, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 80,117,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,118,166, 29, 1, 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, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,128,104,110, 27, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,100,110, 27, 1, 0, 0, 0,192,101,110, 27, 1, 0, 0, 0, 32,103,110, 27, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -176,118,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,117,166, 29, 1, 0, 0, 0, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 16,120,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144,125,166, 29, 1, 0, 0, 0, 48,136, 4, 28, 1, 0, 0, 0, - 80,117,166, 29, 1, 0, 0, 0,176,118,166, 29, 1, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,116,110, 27, + 1, 0, 0, 0,240, 75,110, 27, 1, 0, 0, 0, 0,111,109, 27, 1, 0, 0, 0,128,109,109, 27, 1, 0, 0, 0, 64,110,109, 27, + 1, 0, 0, 0, 96,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,193, 1, 0, 0, + 99, 4, 0, 0, 9, 9,240, 5,163, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 22,136, 27, + 1, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0, 96,106,110, 27, 1, 0, 0, 0,192,107,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,106,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,107,110, 27, 1, 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,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, 0, 0, 0, 0, +239, 5, 0, 0,193, 1, 0, 0,218, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192,107,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,106,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,168, 86,234, 67, 86, 74,131, 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,239, 5, 0, 0, 0, 0, 0, 0,136, 2, 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,137, 2,240, 5, +137, 2, 0, 0, 0, 0, 0, 0, 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,219, 1, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,137, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 22,136, 27, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,224,111,110, 27, 1, 0, 0, 0, 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, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0,112,121,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,208,122,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,122,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48,124,166, 29, 1, 0, 0, 0,112,121,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,124,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,122,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,125,166, 29, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0,160,133,166, 29, 1, 0, 0, 0, 16,120,166, 29, 1, 0, 0, 0,112,121,166, 29, 1, 0, 0, 0, - 48,124,166, 29, 1, 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, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -192,126,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,128,166, 29, 1, 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,157, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,109,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,110,110, 27, + 1, 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, 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, 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, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 32,128,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,129,166, 29, 1, 0, 0, 0,192,126,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -128,129,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,130,166, 29, 1, 0, 0, 0, 32,128,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -224,130,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,132,166, 29, 1, 0, 0, 0,128,129,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 64,132,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,130,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 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,140, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48,140, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,110,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,109,110, 27, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,111,110, 27, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,144, 2,133, 29, + 1, 0, 0, 0, 48, 22,136, 27, 1, 0, 0, 0, 32,109,110, 27, 1, 0, 0, 0,128,110,110, 27, 1, 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, 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, + 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, + 40, 1, 0, 0, 64,113,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,114,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160,133,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, -192,137,166, 29, 1, 0, 0, 0,144,125,166, 29, 1, 0, 0, 0,192,126,166, 29, 1, 0, 0, 0, 64,132,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,160,114,110, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 1,133, 29, 1, 0, 0, 0, 64,113,110, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 40, 1, 0, 0, 0,135,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,136,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 96,136,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,135,166, 29, 1, 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,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, - 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, + 40, 1, 0, 0, 48, 1,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,114,110, 27, + 1, 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,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, 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, - 68, 65, 84, 65,200, 0, 0, 0,192,137,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,133,166, 29, 1, 0, 0, 0, 0,135,166, 29, 1, 0, 0, 0, 96,136,166, 29, 1, 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, 68, 65, 84, 65, +240, 0, 0, 0,144, 2,133, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,224,238,132, 29, 1, 0, 0, 0,224,111,110, 27, + 1, 0, 0, 0, 64,113,110, 27, 1, 0, 0, 0, 48, 1,133, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0, -176,113,166, 29, 1, 0, 0, 0, 16, 37,166, 29, 1, 0, 0, 0, 16, 40,166, 29, 1, 0, 0, 0, 48, 41,166, 29, 1, 0, 0, 0, -208, 40,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 18, 18,240, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,185,217, 2, 1, 0, 0, 0, 96,142,166, 29, 1, 0, 0, 0, - 80,167,166, 29, 1, 0, 0, 0,160,139,166, 29, 1, 0, 0, 0, 0,141,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96,151,162, 21, 1, 0, 0, 0, 80, 11,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -160,139,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,141,166, 29, 1, 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, 60, 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, 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,240, 2, 26, 0,240, 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, 0, 0, 0, 0,239, 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,240, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,187,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 0,141,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,139,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, 0,192, 55, 68, 0, 0, 0, 0, 0, 0,211, 67, -223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,240, 2,166, 1,223, 2,166, 1, 0, 0, - 0, 0, 0, 0, 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, 2, 0, 0, - 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,166, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,186,217, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 3,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,231,132, 29, + 1, 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,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, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0, - 96,142,166, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48,144, 4, 28, 1, 0, 0, 0, 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,224,107,160, 21, 1, 0, 0, 0, -240, 71,200, 20, 1, 0, 0, 0,176,104,160, 21, 1, 0, 0, 0,176,104,160, 21, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,231,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,232,132, 29, + 1, 0, 0, 0,192, 3,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,232,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,236,132, 29, + 1, 0, 0, 0,128,231,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,236,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,237,132, 29, + 1, 0, 0, 0,224,232,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 40, 1, 0, 0, - 32,144,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,145,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,237,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,236,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -128,145,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,144,166, 29, 1, 0, 0, 0, - 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, 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,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, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 48,144, 4, 28, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,160,149,166, 29, 1, 0, 0, 0, 96,142,166, 29, 1, 0, 0, 0, - 32,144,166, 29, 1, 0, 0, 0,128,145,166, 29, 1, 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, 48, 26,136, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 26,136, 27, 1, 0, 0, 0,157, 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, @@ -5540,1118 +5431,889 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,224,238,132, 29, + 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0,144, 2,133, 29, 1, 0, 0, 0,192, 3,133, 29, + 1, 0, 0, 0,128,237,132, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 64,240,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,241,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,241,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,240,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 64,234,132, 29, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,238,132, 29, 1, 0, 0, 0, 64,240,132, 29, 1, 0, 0, 0,160,241,132, 29, + 1, 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, - 68, 65, 84, 65, 40, 1, 0, 0,224,146,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,148,166, 29, 1, 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, 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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,116,110, 27, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 16,113,111, 27, 1, 0, 0, 0,128,105,110, 27, 1, 0, 0, 0,176,151,110, 27, 1, 0, 0, 0, 0,111,109, 27, + 1, 0, 0, 0, 32,112,109, 27, 1, 0, 0, 0,192,111,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 2, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 18, 18,240, 2,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192,245,132, 29, 1, 0, 0, 0, 16,112,111, 27, 1, 0, 0, 0, 0,243,132, 29, 1, 0, 0, 0, 96,244,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,243,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,244,132, 29, + 1, 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, 60, 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, 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,240, 2, 26, 0,240, 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, 0, 0, 0, 0,239, 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,240, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,244,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,243,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, + 0,192, 55, 68, 0, 0, 0, 0, 0, 0,211, 67,223, 2, 0, 0,240, 2, 0, 0, 0, 0, 0, 0,165, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 0, 0,165, 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, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, + 10, 0,240, 2,166, 1,223, 2,166, 1, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 26, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 2,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,192,245,132, 29, 1, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 48, 30,136, 27, + 1, 0, 0, 0, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 64,148,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,146,166, 29, 1, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,149,166, 29, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 32,155,166, 29, 1, 0, 0, 0, - 48,144, 4, 28, 1, 0, 0, 0,224,146,166, 29, 1, 0, 0, 0, 64,148,166, 29, 1, 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,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, 68, 65, 84, 65, 40, 1, 0, 0,128,247,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,248,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, - 0,151,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,152,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,248,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,247,132, 29, 1, 0, 0, 0, 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, 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, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 96,152,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,153,166, 29, 1, 0, 0, 0, 0,151,166, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 48, 30,136, 27, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,160,228,109, 27, + 1, 0, 0, 0,192,245,132, 29, 1, 0, 0, 0,128,247,132, 29, 1, 0, 0, 0,224,248,132, 29, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -192,153,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,152,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 32,155,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 48,163,166, 29, 1, 0, 0, 0,160,149,166, 29, 1, 0, 0, 0, - 0,151,166, 29, 1, 0, 0, 0,192,153,166, 29, 1, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,156,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,157,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,157,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,159,166, 29, 1, 0, 0, 0, - 80,156,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,159,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,160,166, 29, 1, 0, 0, 0, -176,157,166, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,160,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,161,166, 29, 1, 0, 0, 0, - 16,159,166, 29, 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,250,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,251,132, 29, 1, 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, 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, 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, 0, 0, 0, 0, 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,208,161,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,160,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,251,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,250,132, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,228,109, 27, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0,230,109, 27, 1, 0, 0, 0, 48, 30,136, 27, 1, 0, 0, 0, 64,250,132, 29, 1, 0, 0, 0,160,251,132, 29, + 1, 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, -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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,148, 4, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,148, 4, 28, 1, 0, 0, 0,157, 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, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 40, 1, 0, 0, 64,136,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,137,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,137,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,139,132, 29, + 1, 0, 0, 0, 64,136,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,163,166, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 80,167,166, 29, 1, 0, 0, 0, 32,155,166, 29, 1, 0, 0, 0, 80,156,166, 29, 1, 0, 0, 0, -208,161,166, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,139,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,137,132, 29, 1, 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,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, 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, - 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, 40, 1, 0, 0,144,164,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -240,165,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65,240, 0, 0, 0, 0,230,109, 27, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,240,107,111, 27, + 1, 0, 0, 0,160,228,109, 27, 1, 0, 0, 0, 64,136,132, 29, 1, 0, 0, 0, 0,139,132, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,165,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,164,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 80,167,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,163,166, 29, 1, 0, 0, 0,144,164,166, 29, 1, 0, 0, 0,240,165,166, 29, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,140,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,192,141,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,141,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32,143,132, 29, 1, 0, 0, 0, 96,140,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,143,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,128,144,132, 29, 1, 0, 0, 0,192,141,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,144,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,224,145,132, 29, 1, 0, 0, 0, 32,143,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224,145,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,144,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 34,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 34,136, 27, 1, 0, 0, 0,157, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80,168,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,138,166, 29, 1, 0, 0, 0,144, 41,166, 29, 1, 0, 0, 0, 80, 39,166, 29, 1, 0, 0, 0, -240, 38,166, 29, 1, 0, 0, 0,240, 41,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, - 65, 3, 0, 0, 99, 4, 0, 0, 3, 3,144, 1, 35, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,106,217, 2, 1, 0, 0, 0, -240,171,166, 29, 1, 0, 0, 0,112,186,166, 29, 1, 0, 0, 0, 48,169,166, 29, 1, 0, 0, 0,144,170,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,151,162, 21, 1, 0, 0, 0,176,251,201, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 48,169,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,170,166, 29, 1, 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,200, 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,143, 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,144, 1, - 26, 0,144, 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, -241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,108,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,144,170,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,169,166, 29, 1, 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,191, 67, - 0, 0,119,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, 8, 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,144, 1, - 9, 1,127, 1,247, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 91, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,107,217, 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, - 68, 65, 84, 65, 40, 1, 0, 0,240,171,166, 29, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 32,177,166, 29, 1, 0, 0, 0, - 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, 68, 65, 84, 65, + 32, 1, 0, 0,240,107,111, 27, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,112,111, 27, 1, 0, 0, 0, 0,230,109, 27, + 1, 0, 0, 0, 96,140,132, 29, 1, 0, 0, 0,224,145,132, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 80,109,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,110,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,176,110,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,109,111, 27, 1, 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,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, 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,112,195,200, 20, 1, 0, 0, 0,112,195,200, 20, 1, 0, 0, 0,112, 61,160, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,112, 61,160, 29, 1, 0, 0, 0,219, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, - 80,173,166, 29, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 80,173,166, 29, 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,208, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,224, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,220, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,214, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,202, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 64, 86,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,174,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,192,175,166, 29, 1, 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,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, 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, 68, 65, 84, 65,200, 0, 0, 0, 16,112,111, 27, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,107,111, 27, 1, 0, 0, 0, 80,109,111, 27, + 1, 0, 0, 0,176,110,111, 27, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,175,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,174,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,177,166, 29, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0,128,182,166, 29, 1, 0, 0, 0,240,171,166, 29, 1, 0, 0, 0, 96,174,166, 29, 1, 0, 0, 0, -192,175,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,113,111, 27, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,110, 27, 1, 0, 0, 0,128,112,109, 27, + 1, 0, 0, 0, 64,110,109, 27, 1, 0, 0, 0,224,109,109, 27, 1, 0, 0, 0,224,112,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 99, 4, 0, 0, 3, 3,144, 1, 35, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,116,111, 27, 1, 0, 0, 0, 48,131,111, 27, 1, 0, 0, 0,240,113,111, 27, + 1, 0, 0, 0, 80,115,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,113,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 80,115,111, 27, 1, 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,200, 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,143, 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,144, 1, 26, 0,144, 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,241, 5, 0, 0,128, 7, 0, 0, 65, 3, 0, 0, 90, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,115,111, 27, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,113,111, 27, 1, 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,191, 67, 0, 0,119,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0, + 8, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0, + 8, 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,144, 1, 9, 1,127, 1,247, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 91, 3, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,116,111, 27, 1, 0, 0, 0,167, 0, 0, 0, + 1, 0, 0, 0,224,121,111, 27, 1, 0, 0, 0, 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, 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, 40, 1, 0, 0, 96,178,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192,179,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192,179,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 32,181,166, 29, 1, 0, 0, 0, 96,178,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,113,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,113,109, 27, 1, 0, 0, 0,219, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16,118,111, 27, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16,118,111, 27, + 1, 0, 0, 0,218, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 21, 0, 1, 0, + 1, 0, 1, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 74,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 86,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 80,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 32,163,176, 21, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 32,119,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,120,111, 27, 1, 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,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, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,128,120,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,119,111, 27, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,181,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,179,166, 29, 1, 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,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, 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, 68, 65, 84, 65, + 0, 1, 0, 0,224,121,111, 27, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,127,111, 27, 1, 0, 0, 0,176,116,111, 27, + 1, 0, 0, 0, 32,119,111, 27, 1, 0, 0, 0,128,120,111, 27, 1, 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, 68, 65, 84, 65,240, 0, 0, 0,128,182,166, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, -112,186,166, 29, 1, 0, 0, 0, 32,177,166, 29, 1, 0, 0, 0, 96,178,166, 29, 1, 0, 0, 0, 32,181,166, 29, 1, 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, 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, 40, 1, 0, 0, 32,123,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,124,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,183,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16,185,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,185,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,183,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,128,124,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,125,111, 27, 1, 0, 0, 0, 32,123,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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,152, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,152, 4, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,125,111, 27, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,124,111, 27, 1, 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,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, 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,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, 68, 65, 84, 65,240, 0, 0, 0, 64,127,111, 27, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 48,131,111, 27, 1, 0, 0, 0,224,121,111, 27, 1, 0, 0, 0, 32,123,111, 27, + 1, 0, 0, 0,224,125,111, 27, 1, 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, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,112,128,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,129,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,208,129,111, 27, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,128,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,186,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,182,166, 29, 1, 0, 0, 0,176,183,166, 29, 1, 0, 0, 0, 16,185,166, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, - 80,188,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0,247,166, 29, 1, 0, 0, 0, 0, 36,166, 29, 1, 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, 96,189,166, 29, 1, 0, 0, 0, - 0,192,166, 29, 1, 0, 0, 0, 96,192,166, 29, 1, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0, -144,219,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, -192,189,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -224,190,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, -128,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 64,191,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 96,192,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,192,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,192,192,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,193,166, 29, 1, 0, 0, 0, - 96,192,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 32,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,193,166, 29, 1, 0, 0, 0, -192,192,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,128,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,193,166, 29, 1, 0, 0, 0, - 32,193,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,224,193,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,194,166, 29, 1, 0, 0, 0, -128,193,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 64,194,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,194,166, 29, 1, 0, 0, 0, -224,193,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,160,194,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,195,166, 29, 1, 0, 0, 0, - 64,194,166, 29, 1, 0, 0, 0, 96,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 0,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,195,166, 29, 1, 0, 0, 0, -160,194,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 96,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,195,166, 29, 1, 0, 0, 0, - 0,195,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,192,195,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0, - 96,195,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 32,196,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,195,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,200,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,192,189,166, 29, 1, 0, 0, 0, 32,190,166, 29, 1, 0, 0, 0, - 64,191,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, - 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0,128,246,166, 29, 1, 0, 0, 0, -128,246,166, 29, 1, 0, 0, 0, 96,197,166, 29, 1, 0, 0, 0,192,198,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,145,214, 2, 1, 0, 0, 0,192, 34,200, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 96,197,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,198,166, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -192,198,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,197,166, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, -127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, - 32,200,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,219,166, 29, 1, 0, 0, 0,128,196,166, 29, 1, 0, 0, 0, - 96,189,166, 29, 1, 0, 0, 0,224,190,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, 99, 4, 0, 0, 6, 6,196, 3,100, 4, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,128,217, 2, 1, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0, - 0,201,166, 29, 1, 0, 0, 0, 80,205,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 9,163, 29, 1, 0, 0, 0, 32,102,164, 21, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,201,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 96,202,166, 29, 1, 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,113, 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,195, 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,196, 3, 26, 0,196, 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, 0, 0, 0, 0,195, 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,196, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,134,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,202,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 80,205,166, 29, 1, 0, 0, 0, 0,201,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 67, - 0,224,134,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,255,255,134,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 18, 0, 0, 0, 73, 4, 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, - 18, 0, 0, 0, 73, 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, 4, 6, 0,220, 0, 74, 4,203, 0, 56, 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,219, 0, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 74, 4, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,130,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,203,166, 29, 1, 0, 0, 0,192,203,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,203,166, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,133,217, 2, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 80,205,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,202,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,154,153, 41,191,205,204,212, 63, -154,153,155,191,205,204, 13, 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,232, 2, 0, 0, 0, 0, 0, 0, 74, 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, -220, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 2, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,129,217, 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, - 68, 65, 84, 65,168, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,112,214,166, 29, 1, 0, 0, 0, - 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, 48,180, 4, 28, 1, 0, 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, - 68, 65, 84, 65, 40, 1, 0, 0,144,207,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,208,166, 29, 1, 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, 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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,208,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,210,166, 29, 1, 0, 0, 0, -144,207,166, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,210,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,211,166, 29, 1, 0, 0, 0, -240,208,166, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,211,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,213,166, 29, 1, 0, 0, 0, - 80,210,166, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,213,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,211,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,156, 4, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,156, 4, 28, 1, 0, 0, 0,157, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 38,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 38,136, 27, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 32, 1, 0, 0,112,214,166, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0,176,206,166, 29, 1, 0, 0, 0,144,207,166, 29, 1, 0, 0, 0, - 16,213,166, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,208,215,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 48,217,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,217,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,215,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144,218,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,214,166, 29, 1, 0, 0, 0,208,215,166, 29, 1, 0, 0, 0, 48,217,166, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48,131,111, 27, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,127,111, 27, 1, 0, 0, 0,112,128,111, 27, 1, 0, 0, 0,208,129,111, 27, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,128, 74,111, 27, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,159,176, 21, + 1, 0, 0, 0,240, 38,110, 27, 1, 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, 64,147,132, 29, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,208,203,132, 29, + 1, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0,224, 75,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,147,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 16,133,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 16,133,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,133,111, 27, + 1, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 75,111, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 76,111, 27, + 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 80, 76,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 77,111, 27, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,196, 3, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,133,111, 27, 1, 0, 0, 0,112,133,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,112, 71,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,208, 71,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,112,133,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0, 48, 72,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 80, 76,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,144, 72,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,176, 76,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,240, 72,111, 27, 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 64,147,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0, 80, 73,111, 27, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 64,147,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,176, 73,111, 27, 1, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 16, 77,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,176,202,132, 29, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,176, 76,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,208,203,132, 29, 1, 0, 0, 0, 16,203,132, 29, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 16, 77,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,203,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,203,132, 29, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 80, 76,111, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 16,205,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0, 16,133,111, 27, + 1, 0, 0, 0,112,133,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,125,132, 29, 1, 0, 0, 0, 0,125,132, 29, 1, 0, 0, 0, 80, 6,133, 29, 1, 0, 0, 0,176, 7,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 6,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 7,133, 29, + 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 7,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 6,133, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,205,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 75,133, 29, + 1, 0, 0, 0, 48,204,132, 29, 1, 0, 0, 0, 64,147,132, 29, 1, 0, 0, 0,240, 75,111, 27, 1, 0, 0, 0,176, 76,111, 27, + 1, 0, 0, 0, 16, 77,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, + 99, 4, 0, 0, 6, 6,196, 3,100, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,222,132, 29, + 1, 0, 0, 0,224, 74,133, 29, 1, 0, 0, 0, 16, 9,133, 29, 1, 0, 0, 0,208, 11,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 9,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 10,133, 29, 1, 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,113, 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,195, 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,196, 3, 26, 0,196, 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, 0, 0, 0, 0, +195, 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,196, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 10,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 11,133, 29, 1, 0, 0, 0, 16, 9,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 67, 0,224,134,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,255,255,134,196, + 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0, 73, 4, 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, 18, 0, 0, 0, 73, 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, 4, 6, 0,220, 0, 74, 4,203, 0, + 56, 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, +219, 0, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 74, 4, + 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, 96,221,132, 29, 1, 0, 0, 0, 96,221,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 96,221,132, 29, 1, 0, 0, 0,194, 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, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,219,166, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32,200,166, 29, 1, 0, 0, 0, 0,192,166, 29, 1, 0, 0, 0,160,191,166, 29, 1, 0, 0, 0, - 64,191,166, 29, 1, 0, 0, 0,128,190,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, - 0, 0, 0, 0, 99, 4, 0, 0, 1, 1,188, 3,100, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,111,217, 2, 1, 0, 0, 0, - 96,241,166, 29, 1, 0, 0, 0,128,245,166, 29, 1, 0, 0, 0,112,220,166, 29, 1, 0, 0, 0, 0,240,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,249,201, 20, 1, 0, 0, 0,112, 1,162, 29, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,112,220,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208,221,166, 29, 1, 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, 0,111, 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,187, 3, 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,188, 3, - 26, 0,188, 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, -197, 3, 0, 0,128, 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, -188, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,119,217, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 11,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 10,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 67,154,153, 41,191,205,204,212, 63,154,153,155,191,205,204, 13, 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,232, 2, 0, 0, 0, 0, 0, 0, + 74, 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,220, 0, 0, 0,195, 3, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 2, 74, 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, - 68, 65, 84, 65, 40, 1, 0, 0,208,221,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80,226,166, 29, 1, 0, 0, 0, -112,220,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 0,112,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,209, 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,209, 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, 4, 6, 0,160, 0, -210, 3,143, 0,192, 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, -197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0,210, 3, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,116,217, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,223,166, 29, 1, 0, 0, 0,192,224,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 48,223,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,224,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,117,217, 2, 1, 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, 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, 68, 65, 84, 65,168, 0, 0, 0,240,222,132, 29, 1, 0, 0, 0,168, 0, 0, 0, + 1, 0, 0, 0,192, 70,133, 29, 1, 0, 0, 0, 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,160, 63, 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,208,223,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 48,225,132, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,225,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,144,226,132, 29, 1, 0, 0, 0,208,223,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,226,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,240,227,132, 29, 1, 0, 0, 0, 48,225,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,227,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 80,229,132, 29, 1, 0, 0, 0,144,226,132, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,229,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,227,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 42,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 42,136, 27, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,224,166, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,223,166, 29, 1, 0, 0, 0,144, 38, 21, 27, 1, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,226,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,229,166, 29, 1, 0, 0, 0, -208,221,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, -197, 3, 0, 0,100, 4, 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,118,217, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,227,166, 29, 1, 0, 0, 0,176,227,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,176,227,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,118,217, 2, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,229,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0,240,166, 29, 1, 0, 0, 0, 80,226,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 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, - 1, 0, 0, 0, 0, 0, 0, 0,112,113,217, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,230,166, 29, 1, 0, 0, 0,112,238,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,230,166, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,232,166, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 48,232,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,233,166, 29, 1, 0, 0, 0, -160,230,166, 29, 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,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, 68, 65, 84, 65, + 32, 1, 0, 0,192, 70,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,224, 74,133, 29, 1, 0, 0, 0,240,222,132, 29, + 1, 0, 0, 0,208,223,132, 29, 1, 0, 0, 0, 80,229,132, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,233,166, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,235,166, 29, 1, 0, 0, 0, 48,232,166, 29, 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, 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, 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, 40, 1, 0, 0, 32, 72,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 73,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,128, 73,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 72,133, 29, 1, 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,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, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 80,235,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,236,166, 29, 1, 0, 0, 0, -192,233,166, 29, 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, 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, 68, 65, 84, 65,200, 0, 0, 0,224, 74,133, 29, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 70,133, 29, 1, 0, 0, 0, 32, 72,133, 29, + 1, 0, 0, 0,128, 73,133, 29, 1, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,236,166, 29, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,238,166, 29, 1, 0, 0, 0, 80,235,166, 29, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224, 75,133, 29, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,205,132, 29, 1, 0, 0, 0, 16, 77,111, 27, + 1, 0, 0, 0,176, 76,111, 27, 1, 0, 0, 0, 80, 76,111, 27, 1, 0, 0, 0,144, 75,111, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,197, 3, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 4, 0, 0, 1, 1,188, 3,100, 4, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,218,132, 29, 1, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0,192, 76,133, 29, + 1, 0, 0, 0, 64,217,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 76,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 78,133, 29, 1, 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, 0,111, 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,187, 3, 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,188, 3, 26, 0,188, 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,197, 3, 0, 0,128, 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,188, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,112,238,166, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,236,166, 29, 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,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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 78,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160, 82,133, 29, 1, 0, 0, 0,192, 76,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,112,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, +209, 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, +209, 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, 4, 6, 0,160, 0,210, 3,143, 0,192, 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,197, 3, 0, 0,100, 4, 0, 0,146, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,210, 3, 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,128, 79,133, 29, + 1, 0, 0, 0, 16, 81,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 79,133, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 16, 81,133, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,240,166, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,229,166, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 16, 81,133, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 79,133, 29, + 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,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,101, 4, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 74, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,112,217, 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, 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, 48,160, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,160, 4, 28, 1, 0, 0, 0, -157, 0, 0, 0, 1, 0, 0, 0,151, 29,193, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 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,128, 0, 0, 0,128, - 74,215, 76,190, 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, - 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,184,158, 81,191,232, 29,176, 63,139,225, 88, 62, - 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, -100, 98, 82, 64, 0, 25, 95, 64,227, 37,139, 62,171,190, 26, 63,112, 12, 16,188, 0, 0, 64, 51,195, 15,188,190,131, 75, 53, 62, -218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 16,173,201, 64,182,148,248,192,203,247,159,192,233, 74, 87, 65,246, 46,190,192, - 89,106,234, 64, 45, 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191,184,158, 81,191,232, 29,176, 63,139,225, 88, 62, - 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, -100, 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,104, 72,218, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 82,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 84,133, 29, 1, 0, 0, 0, 32, 78,133, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,197, 3, 0, 0,100, 4, 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,160,156,176, 21, + 1, 0, 0, 0,160,156,176, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,156,176, 21, 1, 0, 0, 0,194, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 0, 84,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,217,132, 29, 1, 0, 0, 0,160, 82,133, 29, + 1, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, +128, 7, 0, 0, 26, 0, 0, 0, 99, 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, 48,158,176, 21, 1, 0, 0, 0,112,123,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 48,158,176, 21, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,229,130, 29, 1, 0, 0, 0, 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, 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, - 68, 65, 84, 65, 32, 1, 0, 0, 96,241,166, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,128,245,166, 29, 1, 0, 0, 0, - 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, -192,242,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,244,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 32,244,166, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,242,166, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, -128,245,166, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,241,166, 29, 1, 0, 0, 0, -192,242,166, 29, 1, 0, 0, 0, 32,244,166, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, - 0,247,166, 29, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,188,166, 29, 1, 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, 16,248,166, 29, 1, 0, 0, 0, - 48,252,166, 29, 1, 0, 0, 0,144,252,166, 29, 1, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0, - 48, 64,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 21, 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, 32, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, -112,248,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -144,249,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, - 48,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -240,249,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 16,251,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, -176,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -112,251,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 3, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,252,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,252,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,252,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,253,166, 29, 1, 0, 0, 0, -144,252,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,253,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,253,166, 29, 1, 0, 0, 0, -240,252,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,253,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,254,166, 29, 1, 0, 0, 0, - 80,253,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,254,166, 29, 1, 0, 0, 0, -176,253,166, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,254,166, 29, 1, 0, 0, 0, - 16,254,166, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,254,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,255,166, 29, 1, 0, 0, 0, -112,254,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,255,166, 29, 1, 0, 0, 0, -208,254,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,255,166, 29, 1, 0, 0, 0, - 48,255,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,255,166, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 0,167, 29, 1, 0, 0, 0, -144,255,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80, 0,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 0,167, 29, 1, 0, 0, 0, -240,255,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176, 0,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 1,167, 29, 1, 0, 0, 0, - 80, 0,167, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 1,167, 29, 1, 0, 0, 0, -176, 0,167, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 1,167, 29, 1, 0, 0, 0, - 16, 1,167, 29, 1, 0, 0, 0, 16,248,166, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208, 1,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 2,167, 29, 1, 0, 0, 0, -112, 1,167, 29, 1, 0, 0, 0,240,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 2,167, 29, 1, 0, 0, 0, -208, 1,167, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0, - 48, 2,167, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240, 2,167, 29, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 2,167, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 6,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0,112,248,166, 29, 1, 0, 0, 0,208,248,166, 29, 1, 0, 0, 0, -240,249,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, - 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,208,144,217, 2, 1, 0, 0, 0, 96, 82,167, 29, 1, 0, 0, 0, - 96, 82,167, 29, 1, 0, 0, 0, 48, 4,167, 29, 1, 0, 0, 0,144, 5,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128,146,140, 27, 1, 0, 0, 0,176,248,201, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 48, 4,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 5,167, 29, 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,146,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -144, 5,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4,167, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0, -127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,145,217, 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, 68, 65, 84, 65,160, 0, 0, 0, -240, 6,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 15,167, 29, 1, 0, 0, 0, 80, 3,167, 29, 1, 0, 0, 0, - 16,248,166, 29, 1, 0, 0, 0,176,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, 48,249,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,129, 7,100, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,109,217, 2, 1, 0, 0, 0,144, 10,167, 29, 1, 0, 0, 0, 80, 14,167, 29, 1, 0, 0, 0, -208, 7,167, 29, 1, 0, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,141,162, 21, 1, 0, 0, 0,176, 73,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 7,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 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,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,110,217, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,229,130, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,128,132, 29, 1, 0, 0, 0, 48,158,176, 21, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 9,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 7,167, 29, 1, 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,128, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, - 18, 0, 0, 0, 73, 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,129, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 26, 0, 0, 0, 99, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,109,217, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144, 10,167, 29, 1, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 80, 14,167, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,160,128,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,130,132, 29, 1, 0, 0, 0,192,229,130, 29, + 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 11,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,240, 12,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 12,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 11,167, 29, 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, 88, 1, 0, 0, 48,130,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,131,132, 29, 1, 0, 0, 0,160,128,132, 29, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,192,131,132, 29, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,123,132, 29, 1, 0, 0, 0, 48,130,132, 29, + 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, 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, 48,164, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,164, 4, 28, 1, 0, 0, 0, -157, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,123,132, 29, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,131,132, 29, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 64,217,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, 4, 0, 0, +128, 7, 0, 0, 26, 0, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 3, 74, 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, - 68, 65, 84, 65, 32, 1, 0, 0, 80, 14,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 10,167, 29, 1, 0, 0, 0,144, 11,167, 29, 1, 0, 0, 0,240, 12,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -176, 15,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,240, 6,167, 29, 1, 0, 0, 0, -176,250,166, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 48,252,166, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 0, 0, 0, 23, 2, 0, 0, 8, 8,129, 7,179, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,178,217, 2, 1, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0,224, 32,167, 29, 1, 0, 0, 0, -144, 16,167, 29, 1, 0, 0, 0, 80, 19,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 67,201, 20, 1, 0, 0, 0,240,172,140, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 16,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,240, 17,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 38, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 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,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,181,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 17,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 80, 19,167, 29, 1, 0, 0, 0,144, 16,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, - 0,128,195,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 18, 0, 0, 0,152, 1, 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, - 18, 0, 0, 0,152, 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,220, 0,153, 1,203, 0,135, 1, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,153, 1, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,180,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 19,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 17,167, 29, 1, 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,152, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, - 18, 0, 0, 0,152, 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,165, 6,153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,179,217, 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, 68, 65, 84, 65,240, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0,192, 28,167, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -224, 21,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 23,167, 29, 1, 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,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, 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, 48, 46,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 46,136, 27, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,151, 29,193, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 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,128, 0, 0, 0,128, 74,215, 76,190, 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, 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191, +184,158, 81,191,232, 29,176, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64,227, 37,139, 62,171,190, 26, 63,112, 12, 16,188, + 0, 0, 64, 51,195, 15,188,190,131, 75, 53, 62,218,125, 81, 63, 0, 0,160,179,115, 77,100,193, 16,173,201, 64,182,148,248,192, +203,247,159,192,233, 74, 87, 65,246, 46,190,192, 89,106,234, 64, 45, 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,166, 93, 30, 63,206,249,224,190, 48,180, 81,191, +184,158, 81,191,232, 29,176, 63,139,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,237,241,163,188,204,156,122, 63,138, 84,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 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, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 64, 23,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 24,167, 29, 1, 0, 0, 0,224, 21,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -160, 24,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 26,167, 29, 1, 0, 0, 0, 64, 23,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 0, 26,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 27,167, 29, 1, 0, 0, 0,160, 24,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 96, 27,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 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,168, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48,168, 4, 28, 1, 0, 0, 0,157, 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, 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,104, 72,218, 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, @@ -6660,875 +6322,1213 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 28,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, -224, 32,167, 29, 1, 0, 0, 0,176, 20,167, 29, 1, 0, 0, 0,224, 21,167, 29, 1, 0, 0, 0, 96, 27,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160,218,132, 29, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,165,196, 20, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,164,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 40, 1, 0, 0, 32, 30,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 31,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,164,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,165,196, 20, 1, 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, +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, 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, 40, 1, 0, 0,128, 31,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 30,167, 29, 1, 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,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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 0,220,132, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,218,132, 29, 1, 0, 0, 0,128,165,196, 20, 1, 0, 0, 0,192,164,132, 29, 1, 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, - 68, 65, 84, 65,200, 0, 0, 0,224, 32,167, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 28,167, 29, 1, 0, 0, 0, 32, 30,167, 29, 1, 0, 0, 0,128, 31,167, 29, 1, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,192,159,176, 21, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 74,111, 27, 1, 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, 80,133,132, 29, 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,192,174,132, 29, + 1, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0,224, 50,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,133,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,176,133,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,176,133,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,231,130, 29, + 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0,176,133,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,231,130, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,166,132, 29, + 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,100, 4, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,196, 20, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,166,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,100, 4, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,167,132, 29, + 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 64,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 24, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0,168,132, 29, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0,176,133,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0, 96,168,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,176,133,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0,192,168,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 80,231,130, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0, 32,169,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 64,167,196, 20, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,128,169,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 32,166,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,224,169,132, 29, 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0,128,166,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0, 64,170,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,224,166,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,160,170,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0, 0,171,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,160,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0, 96,171,132, 29, 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,160,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,192,171,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0,168,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0, 32,172,132, 29, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0,168,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0,128,172,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0,168,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0,224,172,132, 29, 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 80,133,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0, 64,173,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0,224,166,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0,160,173,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0,160,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,192,174,132, 29, 1, 0, 0, 0, 0,174,132, 29, 1, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0, 64,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,174,132, 29, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,174,132, 29, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 64,167,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 32,148,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,166,196, 20, 1, 0, 0, 0,176,133,132, 29, + 1, 0, 0, 0, 80,231,130, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0,101, 4, 0, 0,128, 4, 0, 0, 7, 7,129, 7, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,177,132, 29, 1, 0, 0, 0, 96,177,132, 29, 1, 0, 0, 0, 0,176,132, 29, 1, 0, 0, 0, 32, 16,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,176,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 16,133, 29, + 1, 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, 32,240, 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,128, 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,129, 7, 26, 0,129, 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, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 4, 0, 0,126, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 16,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,176,132, 29, 1, 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, 0, 0, 0, 0,128, 7, 0, 0,127, 4, 0, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,148,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,156,132, 29, + 1, 0, 0, 0, 32,175,132, 29, 1, 0, 0, 0, 80,133,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 0,168,132, 29, + 1, 0, 0, 0,176,231,130, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 99, 0, 0, 0, 15, 15,129, 7,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,151,132, 29, + 1, 0, 0, 0,128,155,132, 29, 1, 0, 0, 0, 0,149,132, 29, 1, 0, 0, 0, 96,150,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,149,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96,150,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,136, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, +128, 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,129, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 96,150,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,132, 29, + 1, 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,128, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 18, 0, 0, 0, 73, 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,129, 7, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +200, 0, 0, 0,192,151,132, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,155,132, 29, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,192,152,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,154,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 32,154,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,152,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,160, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 64,167, 29, 1, 0, 0, 0, -176, 15,167, 29, 1, 0, 0, 0,112,251,166, 29, 1, 0, 0, 0,144,249,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, -208,251,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, - 2, 2, 80, 3, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,120,217, 2, 1, 0, 0, 0, 64, 40,167, 29, 1, 0, 0, 0, - 48, 63,167, 29, 1, 0, 0, 0,192, 34,167, 29, 1, 0, 0, 0,224, 38,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224, 99,160, 21, 1, 0, 0, 0,208, 47,202, 20, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -192, 34,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 36,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 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, 79, 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, 80, 3, 26, 0, 80, 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, 0, 0, 0, 0, 79, 3, 0, 0, - 25, 2, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,122,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 32, 36,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 37,167, 29, 1, 0, 0, 0,192, 34,167, 29, 1, 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,192, 7,196, 0, 0, 0, 0, -200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 48, 2, 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, 48, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 49, 2,200, 0, 31, 2, 0, 0, - 0, 0, 0, 0, 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, - 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 49, 2, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,123,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -128, 37,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 38,167, 29, 1, 0, 0, 0, 32, 36,167, 29, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 50,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 88, 3, 0, 0, 48, 50,136, 27, 1, 0, 0, 0,157, 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, 79, 3, 0, 0, 79, 3, 0, 0, - 51, 2, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0, 48,124,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, -224, 38,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37,167, 29, 1, 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, 48, 2, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 48, 2, 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,119, 2, 49, 2, 0, 0, 0, 0, 0, 0, - 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, 79, 3, 0, 0, - 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 2, 49, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,121,217, 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, 68, 65, 84, 65,248, 0, 0, 0, - 64, 40,167, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,240, 45,167, 29, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -112, 41,167, 29, 1, 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, 32, 0, 0, 0,112, 41,167, 29, 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, - 48,180, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 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,208, 41,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 43,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 68, 65, 84, 65, 32, 1, 0, 0,128,155,132, 29, 1, 0, 0, 0,158, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,151,132, 29, 1, 0, 0, 0,192,152,132, 29, 1, 0, 0, 0, 32,154,132, 29, + 1, 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, 48, 68,132, 27, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,156,132, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,169,176, 21, + 1, 0, 0, 0, 32,148,132, 29, 1, 0, 0, 0,128,166,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0, 32,166,132, 29, + 1, 0, 0, 0, 0,168,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,101, 0, 0, 0, + 23, 2, 0, 0, 8, 8,129, 7,179, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,161,132, 29, + 1, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,192,157,132, 29, 1, 0, 0, 0,128,160,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192,157,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,159,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 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,128, 7, 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,129, 7, 26, 0,129, 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, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 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,129, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 32,159,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128,160,132, 29, 1, 0, 0, 0,192,157,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,195,195, + 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,152, 1, 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, 18, 0, 0, 0,152, 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,220, 0,153, 1,203, 0, +135, 1, 0, 0, 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, 6, 0, 0, +128, 7, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,153, 1, + 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, 68, 65, 84, 65, + 40, 1, 0, 0,128,160,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,159,132, 29, + 1, 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,152, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,152, 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,165, 6,153, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,127, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 6,153, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,224,161,132, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 96,168,176, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,163,132, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 85,133, 29, + 1, 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,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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 85,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 87,133, 29, + 1, 0, 0, 0, 16,163,132, 29, 1, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 87,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 88,133, 29, + 1, 0, 0, 0,240, 85,133, 29, 1, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 88,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,167,176, 21, + 1, 0, 0, 0, 80, 87,133, 29, 1, 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,167,176, 21, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176, 88,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 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, 54,136, 27, + 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 54,136, 27, 1, 0, 0, 0,157, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 48, 43,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 44,167, 29, 1, 0, 0, 0, -208, 41,167, 29, 1, 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, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 44,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 43,167, 29, 1, 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,128, 4,196, 0, 0, 64,193,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0,240, 45,167, 29, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0, - 64, 40,167, 29, 1, 0, 0, 0,208, 41,167, 29, 1, 0, 0, 0,144, 44,167, 29, 1, 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,168,176, 21, + 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,224,161,132, 29, 1, 0, 0, 0, 16,163,132, 29, + 1, 0, 0, 0, 0,167,176, 21, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 80,212,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,176,213,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,213,132, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,212,132, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 48, 47,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 48,167, 29, 1, 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,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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 16,215,132, 29, 1, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,168,176, 21, 1, 0, 0, 0, 80,212,132, 29, 1, 0, 0, 0,176,213,132, 29, + 1, 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, - 68, 65, 84, 65, 40, 1, 0, 0,144, 48,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 49,167, 29, 1, 0, 0, 0, - 48, 47,167, 29, 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 49,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 48,167, 29, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192,169,176, 21, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,224, 50,133, 29, 1, 0, 0, 0,224,156,132, 29, 1, 0, 0, 0, 64,167,132, 29, 1, 0, 0, 0,224,166,196, 20, + 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0,160,167,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 3, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 2, 2, 80, 3, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 28,133, 29, 1, 0, 0, 0,224, 49,133, 29, 1, 0, 0, 0,176, 22,133, 29, 1, 0, 0, 0,208, 26,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 22,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16, 24,133, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 83, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 84, 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, 79, 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, 80, 3, 26, 0, 80, 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, 0, 0, 0, 0, 79, 3, 0, 0, 25, 2, 0, 0, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 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, - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 24,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 25,133, 29, + 1, 0, 0, 0,176, 22,133, 29, 1, 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,192, 7,196, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 48, 2, 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, 48, 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, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0,217, 0, 49, 2,200, 0, 31, 2, 0, 0, 0, 0, 0, 0, 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, 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0, 49, 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,168, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 16, 59,167, 29, 1, 0, 0, 0, -240, 45,167, 29, 1, 0, 0, 0, 48, 47,167, 29, 1, 0, 0, 0,240, 49,167, 29, 1, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 48, 52,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 53,167, 29, 1, 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, 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, - 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 53,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 54,167, 29, 1, 0, 0, 0, - 48, 52,167, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 54,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 56,167, 29, 1, 0, 0, 0, -144, 53,167, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 56,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 57,167, 29, 1, 0, 0, 0, -240, 54,167, 29, 1, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 57,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 56,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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,172, 4, 28, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,172, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 25,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 26,133, 29, + 1, 0, 0, 0, 16, 24,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 79, 3, 0, 0, 51, 2, 0, 0, 99, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 26,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112, 25,133, 29, 1, 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, 48, 2, 0, 0, 18, 0, 0, 0, +118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 48, 2, 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,119, 2, 49, 2, 0, 0, 0, 0, 0, 0, 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, 79, 3, 0, 0, 51, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,119, 2, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 59,167, 29, 1, 0, 0, 0, -158, 0, 0, 0, 1, 0, 0, 0, 48, 63,167, 29, 1, 0, 0, 0, 80, 51,167, 29, 1, 0, 0, 0, 48, 52,167, 29, 1, 0, 0, 0, -176, 57,167, 29, 1, 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, - 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 28,133, 29, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,128, 33,133, 29, + 1, 0, 0, 0, 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, - 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, 40, 1, 0, 0,112, 60,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -208, 61,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208, 61,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 60,167, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 17,133, 29, 1, 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, 32, 0, 0, 0,128, 17,133, 29, + 1, 0, 0, 0, 21, 1, 0, 0, 1, 0, 0, 0, 48, 66,136, 27, 1, 0, 0, 0, 0, 0, 0, 0, 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, 96, 29,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,192, 30,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,200, 0, 0, 0, 48, 63,167, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 59,167, 29, 1, 0, 0, 0,112, 60,167, 29, 1, 0, 0, 0,208, 61,167, 29, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 30,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 32,133, 29, 1, 0, 0, 0, 96, 29,133, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 32,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 30,133, 29, 1, 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,128, 4,196, 0, 0, 64,193,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, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48, 64,167, 29, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224, 33,167, 29, 1, 0, 0, 0,208,251,166, 29, 1, 0, 0, 0, 16,251,166, 29, 1, 0, 0, 0, -240,249,166, 29, 1, 0, 0, 0, 80,250,166, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0, - 25, 2, 0, 0, 99, 4, 0, 0, 8, 8, 48, 4, 75, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,178,217, 2, 1, 0, 0, 0, - 48, 69,167, 29, 1, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, 16, 65,167, 29, 1, 0, 0, 0,208, 67,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,110,160, 21, 1, 0, 0, 0, 48, 43,201, 20, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 16, 65,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 66,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, - 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, 55, 4, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, - 0,224,156, 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, 56, 4, - 24, 0, 56, 4, 24, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 25, 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, 1, 0, 0, 0, 0, 0, 0, 0, 80,181,217, 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, 68, 65, 84, 65, 8, 1, 0, 0,128, 33,133, 29, 1, 0, 0, 0, 22, 1, 0, 0, + 1, 0, 0, 0, 16,216,132, 29, 1, 0, 0, 0, 48, 28,133, 29, 1, 0, 0, 0, 96, 29,133, 29, 1, 0, 0, 0, 32, 32,133, 29, + 1, 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, - 68, 65, 84, 65, 40, 1, 0, 0,112, 66,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 67,167, 29, 1, 0, 0, 0, - 16, 65,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 66,136, 27, + 1, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 34,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 36,133, 29, 1, 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,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, 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, -128, 7, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 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, 1, 0, 0, 0, 0, 0, 0, 0,112,180,217, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 36,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,128, 37,133, 29, 1, 0, 0, 0,192, 34,133, 29, 1, 0, 0, 0, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0,208, 67,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 66,167, 29, 1, 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, 74, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0, 74, 2, 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, 48, 4, - 75, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 4, 75, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,179,217, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 37,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 36,133, 29, 1, 0, 0, 0, 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, - 68, 65, 84, 65,240, 0, 0, 0, 48, 69,167, 29, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 77,167, 29, 1, 0, 0, 0, - 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,168, 0, 0, 0, 16,216,132, 29, 1, 0, 0, 0,168, 0, 0, 0, + 1, 0, 0, 0,192, 45,133, 29, 1, 0, 0, 0,128, 33,133, 29, 1, 0, 0, 0,192, 34,133, 29, 1, 0, 0, 0,128, 37,133, 29, + 1, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 38,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 64, 40,133, 29, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 70,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192, 71,167, 29, 1, 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,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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 40,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160, 41,133, 29, 1, 0, 0, 0,224, 38,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 71,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 32, 73,167, 29, 1, 0, 0, 0, 96, 70,167, 29, 1, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 41,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 43,133, 29, 1, 0, 0, 0, 64, 40,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 43,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 96, 44,133, 29, 1, 0, 0, 0,160, 41,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 44,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 73,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -128, 74,167, 29, 1, 0, 0, 0,192, 71,167, 29, 1, 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, - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 58,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 58,136, 27, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 74,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -224, 75,167, 29, 1, 0, 0, 0, 32, 73,167, 29, 1, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,224, 75,167, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 74,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 45,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0,224, 49,133, 29, 1, 0, 0, 0, 16,216,132, 29, + 1, 0, 0, 0,224, 38,133, 29, 1, 0, 0, 0, 96, 44,133, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0, 32, 47,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,128, 48,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, - 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, +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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,176, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,176, 4, 28, 1, 0, 0, 0,157, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 48,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 47,133, 29, 1, 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,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, 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, 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, 68, 65, 84, 65,200, 0, 0, 0,224, 49,133, 29, + 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 45,133, 29, 1, 0, 0, 0, 32, 47,133, 29, + 1, 0, 0, 0,128, 48,133, 29, 1, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224, 50,133, 29, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,169,176, 21, 1, 0, 0, 0,160,167,132, 29, + 1, 0, 0, 0,224,166,132, 29, 1, 0, 0, 0, 64,167,196, 20, 1, 0, 0, 0, 32,166,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 8, 8, 48, 4, 75, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0, 16, 68,133, 29, 1, 0, 0, 0,192, 51,133, 29, + 1, 0, 0, 0,128, 54,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 51,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 32, 53,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, 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, 55, 4, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, 0,224,156, 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, 56, 4, 24, 0, 56, 4, 24, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 25, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 53,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,128, 54,133, 29, 1, 0, 0, 0,192, 51,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 64, 77,167, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, 48, 69,167, 29, 1, 0, 0, 0, - 96, 70,167, 29, 1, 0, 0, 0,224, 75,167, 29, 1, 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, 48,202, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 1, 0, 0,160, 78,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 80,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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, 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,128, 7, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 80,167, 29, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 78,167, 29, 1, 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,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, 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, 40, 1, 0, 0,128, 54,133, 29, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 53,133, 29, 1, 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, + 74, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 18, 0, 0, 0, + 74, 2, 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, 48, 4, 75, 2, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0,128, 7, 0, 0, 25, 2, 0, 0, 99, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 75, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 96, 81,167, 29, 1, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 77,167, 29, 1, 0, 0, 0,160, 78,167, 29, 1, 0, 0, 0, - 0, 80,167, 29, 1, 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, 68, 65, 84, 65,240, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0,164, 0, 0, 0, + 1, 0, 0, 0,240, 63,133, 29, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, 40, 6, 0, 0, 48,180, 4, 28, 1, 0, 0, 0, -155, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,202, 4, 28, 1, 0, 0, 0, - 48,192, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, -160, 83,167, 29, 1, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 57,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112, 58,133, 29, 1, 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,112, 58,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 59,133, 29, 1, 0, 0, 0, 16, 57,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,208, 59,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48, 61,133, 29, 1, 0, 0, 0,112, 58,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 48, 61,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 62,133, 29, 1, 0, 0, 0,208, 59,133, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,144, 62,133, 29, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 61,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 62,136, 27, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 62,136, 27, + 1, 0, 0, 0,157, 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, 84,167, 29, 1, 0, 0, 0, 48,116, 22, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 85,167, 29, 1, 0, 0, 0,176, 85,167, 29, 1, 0, 0, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,240, 63,133, 29, 1, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 16, 68,133, 29, + 1, 0, 0, 0,224, 55,133, 29, 1, 0, 0, 0, 16, 57,133, 29, 1, 0, 0, 0,144, 62,133, 29, 1, 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, 48, 68,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, + 40, 1, 0, 0, 80, 65,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 66,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 66,133, 29, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 65,133, 29, + 1, 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,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, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +200, 0, 0, 0, 16, 68,133, 29, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 63,133, 29, + 1, 0, 0, 0, 80, 65,133, 29, 1, 0, 0, 0,176, 66,133, 29, 1, 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,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, 6, 0, 0, 0, 16, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,109,203, 20, 1, 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, 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, 68, 65, 84, 65, 40, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, -131, 0, 0, 0, 1, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0,194, 2,243, 1, 48,208, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, -131, 0, 0, 0, 1, 0, 0, 0,160, 83,167, 29, 1, 0, 0, 0,224, 82,167, 29, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 4, 0, 0,144, 3, 47, 3, 48,214, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 83,167, 29, 1, 0, 0, 0, -131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 83,167, 29, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 0, 4, 0, 0,156, 0, 83, 2, 48,202, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, 0, 84,167, 29, 1, 0, 0, 0, -151, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, - 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, - 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 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, 0, 0, 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, 88, 0, 0, 0,176, 85,167, 29, 1, 0, 0, 0,137, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 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,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,152, 0, 0, 0, 64, 86,167, 29, 1, 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, -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, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 65, 0, 0,248, 1, 0, 0, 48,188, 4, 28, 1, 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, 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, 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, 16, 87,167, 29, 1, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, + 40, 6, 0, 0, 48, 66,136, 27, 1, 0, 0, 0,155, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 68,132, 27, 1, 0, 0, 0, 48, 58,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,161,176, 21, 1, 0, 0, 0, 48, 26,139, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 0, 0, 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, 69,133, 29, 1, 0, 0, 0,208, 69,133, 29, 1, 0, 0, 0, 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,128, 88,167, 29, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 16, 87,167, 29, 1, 0, 0, 0, - 75, 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,144,118,161, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0,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,144,118,161, 29, 1, 0, 0, 0, 73, 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,128, 88,167, 29, 1, 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,224, 1, 0, 0, 48,192, 4, 28, 1, 0, 0, 0, -130, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 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,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, 6, 0, 0, 0, 16, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,224, 88,167, 29, 1, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,240,174,135, 29, 1, 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, 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, 68, 65, 84, 65, + 40, 0, 0, 0,224, 17,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 16, 69,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,194, 2,243, 1, 48, 74,132, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 16, 69,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,224, 17,133, 29, + 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 47, 3, 48, 80,132, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,112, 69,133, 29, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69,133, 29, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 83, 2, 48, 68,132, 27, 1, 0, 0, 0, 68, 65, 84, 65, +120, 1, 0, 0,112,161,176, 21, 1, 0, 0, 0,151, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 80, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, + 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, + 10, 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, 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, 88, 0, 0, 0,208, 69,133, 29, 1, 0, 0, 0,137, 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, +152, 0, 0, 0, 32,163,176, 21, 1, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 48, 54,132, 27, 1, 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, 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, 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,240,163,176, 21, + 1, 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, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0, -208, 89,167, 29, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0,208, 89,167, 29, 1, 0, 0, 0, 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,196, 4, 28, 1, 0, 0, 0,255,255,255,255, 0, 4, 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,208, 89,167, 29, 1, 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, 96,209,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 96,209,163, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,202, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, - 1, 0, 0, 0, 48,208, 4, 28, 1, 0, 0, 0, 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, 64, 86,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,165,176, 21, 1, 0, 0, 0, 68, 65, 84, 65, + 56, 1, 0, 0,240,163,176, 21, 1, 0, 0, 0, 75, 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,224,177,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,224,177,132, 29, 1, 0, 0, 0, 73, 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, 96,165,176, 21, 1, 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, +224, 1, 0, 0, 48, 58,132, 27, 1, 0, 0, 0,130, 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, 0, 0, 0, 0, 0, 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, 0, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -152, 4, 0, 0, 48,208, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,214, 4, 28, 1, 0, 0, 0, 48,202, 4, 28, - 1, 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,240, 9,200, 20, 1, 0, 0, 0, 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, 93,167, 29, 1, 0, 0, 0, 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,176, 0, 0, 0, 0,196,132, 29, + 1, 0, 0, 0, 27, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 21, 1, 0, 0, 0,192,165,176, 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, 48, 62,132, 27, + 1, 0, 0, 0,255,255,255,255, 0, 4, 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,192,165,176, 21, 1, 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, 16, 90,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, + 4, 0, 0, 0, 16, 90,133, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, + 48, 68,132, 27, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48, 74,132, 27, 1, 0, 0, 0, 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, 32,163,176, 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, 64, 6,163, 29, - 1, 0, 0, 0, 64,213,163, 29, 1, 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,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,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,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, 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, 48,108, 5, 28, 1, 0, 0, 0, 48,112, 5, 28, 1, 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, 64, 6,163, 29, 1, 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, 64,213,163, 29, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,214, 4, 28, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,208, 4, 28, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,152, 4, 0, 0, 48, 74,132, 27, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, + 48, 80,132, 27, 1, 0, 0, 0, 48, 68,132, 27, 1, 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, - 48,188, 4, 28, 1, 0, 0, 0, 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,118,133, 29, 1, 0, 0, 0, 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,171,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160,176, 21, 1, 0, 0, 0,128,125,132, 29, 1, 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, -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,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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 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, 48,244,138, 27, 1, 0, 0, 0, 48,248,138, 27, 1, 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, +208,160,176, 21, 1, 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, +128,125,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48, 80,132, 27, + 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 74,132, 27, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, - 48,220, 4, 28, 1, 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,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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 48, 90,167, 29, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 54,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 86,132, 27, 1, 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,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, 0, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63,240,196,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 91,167, 29, 1, 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, 48, 90,167, 29, 1, 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,224, 91,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,166,176, 21, 1, 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,240,196,132, 29, 1, 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, 64,198,132, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, -128, 91,167, 29, 1, 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, 48, 28, 9, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, - 48, 28, 9, 28, 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, - 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,104, 1, 0, 0,224, 91,167, 29, 1, 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, 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,128, 93,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 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,128, 93,167, 29, 1, 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, - 48, 46, 9, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48, 46, 9, 28, 1, 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,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, 32,166,176, 21, 1, 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, 48, 90,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48, 90,132, 27, 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, 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, +104, 1, 0, 0, 64,198,132, 29, 1, 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, 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,224,199,132, 29, + 1, 0, 0, 0, 0, 0, 0, 0, 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,224,199,132, 29, 1, 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, 48,108,132, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 0, 16, 0, 0, 48,108,132, 27, 1, 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, @@ -7656,92 +7656,90 @@ char datatoc_B_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 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,144, 1, 0, 0,224, 93,167, 29, 1, 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,112,142,161, 29, 1, 0, 0, 0, 96,102,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 97,167, 29, 1, 0, 0, 0,240, 99,167, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 95,167, 29, 1, 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, 80, 98,167, 29, 1, 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,192,100,167, 29, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,112,142,161, 29, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 48,220, 4, 28, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,176, 95,167, 29, 1, 0, 0, 0, - 78, 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, 80, 97,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0, 48,171,109, 27, + 1, 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,224,116,110, 27, + 1, 0, 0, 0,224,184,135, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,174,109, 27, + 1, 0, 0, 0, 64,177,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,109, 27, + 1, 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,160,175,109, 27, + 1, 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, 16,178,109, 27, + 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 0, 0, 0,224,116,110, 27, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 48, 86,132, 27, 1, 0, 0, 0, 68, 65, 84, 65, +104, 1, 0, 0, 0,173,109, 27, 1, 0, 0, 0, 78, 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,160,174,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 97,167, 29, 1, 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, 80, 98,167, 29, 1, 0, 0, 0, 78, 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, -240, 99,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,160,174,109, 27, 1, 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,160,175,109, 27, + 1, 0, 0, 0, 78, 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, 64,177,109, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240, 99,167, 29, 1, 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,192,100,167, 29, 1, 0, 0, 0, - 78, 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, 96,102,167, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 64,177,109, 27, + 1, 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, 16,178,109, 27, 1, 0, 0, 0, 78, 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,224,184,135, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,102,167, 29, 1, 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, - 85, 83, 69, 82,160, 11, 0, 0, 96, 76,251, 1, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 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, 68, 65, 84, 65, +120, 0, 0, 0,224,184,135, 29, 1, 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, 85, 83, 69, 82,160, 11, 0, 0,224,252,251, 1, 1, 0, 0, 0,190, 0, 0, 0, + 1, 0, 0, 0, 33,152, 1, 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, 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, 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, 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, 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, @@ -7759,9 +7757,9 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, @@ -7769,22 +7767,22 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 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, - 48, 76, 9, 28, 1, 0, 0, 0, 48,100, 9, 28, 1, 0, 0, 0, 16, 91,160, 21, 1, 0, 0, 0, 16, 91,160, 21, 1, 0, 0, 0, - 96, 92,160, 21, 1, 0, 0, 0, 96, 92,160, 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, - 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, + 0, 0, 0, 0, 1, 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, 48, 98, 21, 3, 1, 0, 0, 0, 48,122, 21, 3, 1, 0, 0, 0, 0, 72,128, 29, + 1, 0, 0, 0, 0, 72,128, 29, 1, 0, 0, 0, 80, 73,128, 29, 1, 0, 0, 0, 80, 73,128, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7792,2229 +7790,2234 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,216, 21, 0, 0, - 48, 76, 9, 28, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 48,100, 9, 28, 1, 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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,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, 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,216, 21, 0, 0, 48,100, 9, 28, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 76, 9, 28, 1, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 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, 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,216, 21, 0, 0, 48, 98, 21, 3, 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 48,122, 21, 3, + 1, 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, 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,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, + 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,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, 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,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, + 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,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, 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,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, + 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,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, 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,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, + 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,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, 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,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, + 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,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, 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,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,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, + 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,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, 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,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, + 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,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, 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,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, + 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,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, 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,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, + 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,216, 21, 0, 0, 48,122, 21, 3, + 1, 0, 0, 0,188, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 98, 21, 3, 1, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,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, + 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 82, 96,110,255,124,137,150,255, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 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,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, 96,192, 64,255, 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,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255, -124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -228,156,198,255,255,255,170,255, 96,192, 64,255, 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, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 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, 80,200,255,255, - 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,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,228,156,198,204, +255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,228,156,198,255,255,255,170,255, 96,192, 64,255, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80,200,255,255, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255, 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, 80,200,255,255, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,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, + 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96,192, 64,255, 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,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, 96,192, 64,255, 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,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, 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,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, 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,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,216,230, 0, 0, - 48, 80,221, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 63, 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,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,116,101,112,115, 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, 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, - 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,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,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, 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, 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,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,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,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, 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,116,111,111,108, 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, 99, 97,109,101,114, 97, 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,115,111,117,110,100, 95,104, 97,110,100,108,101, -115, 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,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,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114, -115,112, 0,118,105,101,119, 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, -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, 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,103,114,105,100,118,105,101,119, 0,112, 97,100,102, 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,116,119,100,114, 97,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, 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,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, 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,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,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, 97,114,109, 91, 50, 48, 93, - 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 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,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 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,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,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,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,111,117,110,100, 95,104, 97,110, -100,108,101, 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, 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,109,111,100,117,108,101, 91, 54, 52, 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, 49, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117, -110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0,112, 97,100, 50, 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, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 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,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, 42,115,111,117,114, 99,101, 0,102,114, - 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 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, 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, 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, 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,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105, -100,116,104, 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,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, 42,115,101,108,105,110, 0, 42,115,101,108,111,117,116, - 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,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,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 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, 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,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, 97,108,105,118,101, 0,108,111,111,112, 0,104, 97,105, -114, 95,105,110,100,101,120, 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,102,108, 97,103, 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, 91, 51, 93, - 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,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,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,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,100, -101,102, 97,117,108,116, 97, 99,116,109, 97,112, 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, 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,108, 97,115, -116, 95,116,121,112,101, 0,108, 97,115,116, 95,118, 97,108, 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, 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, -114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, 93, 0,112,114,101,118,120, - 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107,101,121,109, 97,112, 95,105,100,110, - 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114,101,101, 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, 97,114, -114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, - 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 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, 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,198, 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,105, 0,118,101, 99, 50,102, 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, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, - 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, - 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100, -101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105, -110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, - 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, - 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, - 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, - 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, - 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, - 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, - 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, - 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, - 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, - 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, - 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, - 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, - 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, - 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, - 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, - 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97, -114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101, -118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105, -101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, - 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115, -104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114, -101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116, -105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, - 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, - 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101, -119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100, -103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, - 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, - 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, -116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10, -125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62, -102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, - 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, - 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, - 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, - 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, - 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, - 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, - 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, - 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, - 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117, -110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32, -114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114, -101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, - 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110, -101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, - 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110, -101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, - 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, - 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, - 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, - 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, - 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117, -115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112, -101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109, -116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, - 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, - 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, - 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, - 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, - 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, - 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, - 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, - 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, - 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, - 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, - 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, - 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, - 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, - 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, - 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, - 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, - 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116, -104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112, -104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, - 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116, -104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, - 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, - 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, - 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, - 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, - 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105,110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100, -105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111, -105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, - 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101, -109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32, -115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32, -117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97, -116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69,216, 24, 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, 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, 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,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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 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, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116, -105,110,103,115, 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, 77,105,110, 77, 97,120, 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, 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, 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, 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, 70, 77,111,100, - 95, 83,111,117,110,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 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, 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,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0, -168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, 40, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, - 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0,248, 1, 56, 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,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, - 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, - 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0, -128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, - 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, 0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, - 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, 48, 0, 0, 0,144, 0, 88, 0,104, 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,224, 1, 40, 0,184, 0,152, 0, 40, 0, 64, 0, - 24, 0, 88, 0, 64, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 64, 0, -120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0, -152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0, -224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, - 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 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, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 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,224, 0, - 40, 0, 40, 1,200, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0, -120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 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, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, - 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,168, 0, 72, 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, 24, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, - 40, 0,200, 0,104, 0,112, 0,104, 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,140, 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, - 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 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, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, 4, 0, 17, 1, 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, - 27, 0, 31, 0, 39, 0, 75, 0, 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, 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,242, 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, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, - 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,238, 0, 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, - 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,181, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, - 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 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, 69, 1, 2, 0,175, 0, 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, - 7, 0,184, 0, 7, 0,185, 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,249, 0, 2, 0, 70, 0, - 7, 0,110, 0, 7, 0,111, 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, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, 2, 0,124, 1, 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, - 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 2, 0,132, 1, 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, - 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, - 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, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, - 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,155, 1, 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, - 7, 0,184, 0, 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, 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, 65, 0,176, 1, 7, 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, 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, - 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 2, 0,191, 1, 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, - 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, 4, 0, 69, 1, 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, - 2, 0,202, 1, 2, 0,203, 1, 7, 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, 0, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, - 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, 0, 0, 63, 1, 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, - 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, - 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, 0, 0,233, 1, 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, - 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 51, 0,134, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, - 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1, 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, - 7, 0,248, 1, 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, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, 4, 0,121, 1, 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, - 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, - 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, - 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 15, 2, 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, 23, 0, 7, 0, 22, 2, 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, 12, 0, 26, 2, 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, - 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, - 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, - 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, - 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, 2, 0, 42, 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, 44, 2, 2, 0, 42, 2, 2, 0, 19, 0, 2, 0, 45, 2, 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, 7, 0, 53, 2, 7, 0, 54, 2, - 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, 4, 0, 57, 2, 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 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, 59, 2, - 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 60, 2, 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, - 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, 38, 0, 66, 2, 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, - 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 68, 2, 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, - 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, - 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, 4, 0, 79, 2, 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, - 2, 0, 67, 0, 2, 0, 81, 2, 7, 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, 0, 0, 92, 2, 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, - 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 4, 0,100, 2, 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, - 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, 74, 0,108, 2, 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, - 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, 81, 0,110, 2, 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, - 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, 80, 0,118, 2, 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, - 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, 4, 0,125, 2, 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, - 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0,129, 2, 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, - 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, 92, 0,134, 2, 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, - 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, - 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 2, 0, 44, 2, 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, - 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, - 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, - 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 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,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, - 7, 0,154, 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,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, - 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 98, 0, 1, 0, 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2, -100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2,102, 0, 3, 0, 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2, -104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0,105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, - 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, 0, 0, 70, 2,107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2, -108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2,105, 0,166, 2,107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, - 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, 12, 0,169, 2, 84, 0,168, 2, 0, 0,170, 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, 19, 0, 91, 0,121, 2, 91, 0,123, 2, - 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, 4, 0,180, 2, 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, - 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0,109, 0, 0, 0,109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, - 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0,109, 0,184, 2, 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, - 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0, -109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, 0, 0,190, 2,113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, - 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0,109, 0,184, 2, 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, - 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, 32, 0,196, 2, 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, - 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, 4, 0,203, 2, 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0, -109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, 32, 0,207, 2,117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, - 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, 4, 0,210, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, - 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2,119, 0, 3, 0,109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0, -120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2,123, 0,218, 2, 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0, -109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, 0, 0,215, 2, 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, - 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0,109, 0,184, 2, 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, - 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, - 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, 7, 0,235, 2, 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2, -128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, 7, 0,251, 0, 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, - 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, 0, 0,215, 2, 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, - 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, - 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, 7, 0,245, 2, 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0, -109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, 32, 0,164, 0, 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0, -109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, 7, 0,252, 2, 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, - 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2,133, 0, 7, 0,109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3, -135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3,138, 0, 13, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, - 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 81, 0, 11, 3, 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, - 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, - 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, 32, 0,164, 0, 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, - 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, 4, 0, 20, 3,146, 0, 21, 0,109, 0,184, 2, 32, 0,164, 0, - 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0, 7, 0, 22, 3, 7, 0, 23, 3, 4, 0, 54, 0, - 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, 4, 0, 28, 3, 4, 0, 29, 3, 4, 0, 20, 3, 7, 0, 30, 3, - 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0,109, 0,184, 2,148, 0, 34, 3,141, 0, 16, 3, 4, 0, 35, 3, - 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0,149, 0, 8, 0,109, 0,184, 2, 32, 0, 45, 0, 2, 0,255, 0, - 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, 7, 0, 39, 3,150, 0, 5, 0,109, 0,184, 2, 4, 0, 40, 3, - 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0,109, 0,184, 2, 84, 0, 43, 3, 4, 0, 44, 3, 0, 0, 45, 3, - 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0,109, 0,184, 2,153, 0, 49, 3,137, 0, 3, 3,154, 0, 10, 0, -109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, 7, 0, 53, 3, 2, 0, 54, 3, 2, 0, 55, 3, 0, 0, 56, 3, - 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 58, 3, 0, 0, 52, 3, 7, 0, 59, 3, 7, 0, 60, 3, - 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,157, 0, 27, 0, 27, 0, 31, 0, - 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, 2, 0, 63, 3, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 70, 0, - 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3, - 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 76, 3, - 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 79, 3, - 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 80, 3, 2, 0, 17, 0, 2, 0, 81, 3, - 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, 32, 0, 38, 0, 32, 0, 86, 3, 32, 0, 87, 3, 32, 0, 88, 3, - 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,160, 0, 90, 3,160, 0, 91, 3,161, 0, 92, 3, 9, 0, 2, 0, -162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 95, 3, 12, 0, 96, 3, 4, 0, 69, 1, 4, 0, 97, 3, - 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, 7, 0, 64, 1, 7, 0,100, 3, 7, 0,101, 3, 7, 0,172, 0, - 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, 7, 0,104, 3, 7, 0,105, 3, 7, 0,106, 3, 7, 0,107, 3, - 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, 7, 0,240, 0, 4, 0,111, 3, 2, 0, 19, 0, 2, 0,112, 3, - 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 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, 4, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3, 7, 0,127, 3, 7, 0,101, 2, - 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,215, 0, 7, 0,133, 3, 7, 0,134, 3, - 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, 7, 0,142, 3, - 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 7, 0,148, 3, 2, 0,156, 2, 2, 0,149, 3, - 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, 2, 0,153, 3, 2, 0,247, 0, 7, 0,154, 3, 12, 0,155, 3, - 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1,165, 0,159, 3, 67, 0,160, 3, 2, 0,161, 3, 2, 0,162, 3, - 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, 2, 0,166, 3,153, 0,167, 3,141, 0,168, 3,141, 0,169, 3, - 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, 12, 0,173, 3, 12, 0,174, 3, 12, 0,175, 3,166, 0, 14, 0, -166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, 7, 0, 66, 1, 7, 0,252, 2, 7, 0,244, 2, 0, 0, 20, 0, - 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, 2, 0,177, 3, 7, 0,255, 2,167, 0, 12, 0,167, 0, 0, 0, -167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, 4, 0,179, 3, 4, 0, 17, 0, 4, 0,180, 3, 7, 0, 66, 1, - 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, 4, 0, 19, 0, 2, 0,183, 3, 2, 0,184, 3, 2, 0,244, 2, - 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 7, 0,190, 3, 7, 0,191, 3, 7, 0,192, 3, - 7, 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, 37, 0, 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, - 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2,169, 0, 5, 0, 67, 0,241, 1, 7, 0,218, 3, 7, 0,219, 3, - 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0,170, 0, 1, 0, 4, 0,221, 3, 4, 0,222, 3, 4, 0,223, 3, - 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3,137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0, - 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3, 4, 0,222, 3, 4, 0,156, 2, - 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 12, 0,237, 3,171, 0,238, 3, 9, 0,239, 3, -172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, 7, 0,240, 3, 7, 0,241, 3, 7, 0,242, 3, 4, 0,243, 3, - 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 7, 0,250, 3, 7, 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, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4, - 7, 0,133, 3,165, 0, 54, 0, 4, 0,222, 3, 4, 0, 12, 4,173, 0, 13, 4,174, 0, 14, 4, 0, 0, 37, 0, 0, 0, 15, 4, - 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, 7, 0, 23, 4, - 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 2, 0, 28, 4, 0, 0, 29, 4, 2, 0, 30, 4, 7, 0, 31, 4, - 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, 4, 0, 35, 4, 2, 0, 36, 4, 2, 0, 37, 4,172, 0, 38, 4, - 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 2, 0, 44, 4, 2, 0, 45, 4, - 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4,175, 0, 52, 4, 7, 0, 53, 4, - 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4, 7, 0, 57, 4, 7, 0, 58, 4, 7, 0, 59, 4, 0, 0, 60, 4, -153, 0, 49, 0,152, 0, 61, 4, 2, 0, 17, 0, 2, 0, 62, 4, 2, 0, 63, 4, 2, 0, 64, 4, 7, 0, 65, 4, 2, 0, 66, 4, - 2, 0, 67, 4, 7, 0, 68, 4, 2, 0, 69, 4, 2, 0, 70, 4, 7, 0, 71, 4, 7, 0, 72, 4, 7, 0, 73, 4, 7, 0, 74, 4, - 7, 0, 75, 4, 7, 0, 76, 4, 4, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 80, 0, 81, 4, 80, 0, 82, 4, - 80, 0, 83, 4, 0, 0, 84, 4, 7, 0, 85, 4, 7, 0, 86, 4, 36, 0, 80, 0, 2, 0, 87, 4, 0, 0, 88, 4, 0, 0, 89, 4, - 7, 0, 90, 4, 4, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 4, 0, 94, 4, 4, 0, 19, 0, 7, 0, 95, 4, 7, 0, 96, 4, - 7, 0, 97, 4, 84, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, - 7, 0,105, 4, 4, 0,106, 4,176, 0, 76, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, - 2, 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, 7, 0,114, 4, - 7, 0,115, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1, 7, 0,116, 4, 4, 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,124, 4, 2, 0,125, 4, 2, 0, 69, 1, 2, 0,126, 4, - 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 7, 0,134, 4, - 7, 0,135, 4, 7, 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, 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, 2, 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, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 2, 0,165, 4, 2, 0, 19, 0, - 7, 0,166, 4, 7, 0,167, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0, -177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,168, 4, 4, 0, 19, 0, 2, 0,169, 4, 2, 0,170, 4, 32, 0,164, 0, -178, 0, 13, 0, 9, 0,171, 4, 9, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0,175, 4, 4, 0,176, 4, 4, 0,177, 4, - 4, 0,178, 4, 4, 0,179, 4, 4, 0,180, 4, 4, 0,181, 4, 4, 0, 37, 0, 0, 0,182, 4,179, 0, 5, 0, 9, 0,183, 4, - 9, 0,184, 4, 4, 0,185, 4, 4, 0, 70, 0, 0, 0,186, 4,180, 0, 10, 0, 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,193, 4, 4, 0,194, 4, 4, 0,195, 4, 4, 0,196, 4,181, 0, 15, 0, - 4, 0, 17, 0, 4, 0,189, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 7, 0,201, 4, 4, 0,202, 4, - 4, 0, 90, 0, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 26, 0, 30, 0,182, 0, 7, 0, - 4, 0,208, 4, 7, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4, 4, 0,212, 4, 2, 0, 19, 0, 2, 0, 37, 0,183, 0, 11, 0, -183, 0, 0, 0,183, 0, 1, 0, 0, 0, 20, 0, 66, 0,213, 4, 67, 0,214, 4, 4, 0,111, 3, 4, 0,215, 4, 4, 0,216, 4, - 4, 0, 37, 0, 4, 0,217, 4, 4, 0,218, 4,184, 0,135, 0,178, 0,219, 4,179, 0,220, 4,180, 0,221, 4,181, 0,222, 4, - 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 34, 4, 4, 0,223, 4, 4, 0,224, 4, 4, 0,225, 4, 4, 0,226, 4, 2, 0, 19, 0, - 2, 0,227, 4, 7, 0,101, 2, 7, 0,228, 4, 7, 0,229, 4, 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 2, 0,233, 4, - 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0,238, 4, 2, 0,239, 4, 2, 0,240, 4, - 2, 0,241, 4, 2, 0, 91, 1, 2, 0,106, 0, 2, 0,242, 4, 2, 0,243, 4, 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, - 2, 0,247, 4, 2, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0, 92, 1, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, - 2, 0,254, 4, 4, 0,255, 4, 4, 0, 69, 1, 4, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0,121, 1, - 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 24, 0, 8, 5, 24, 0, 9, 5, 23, 0, 10, 5, 12, 0, 11, 5, - 2, 0, 12, 5, 2, 0, 37, 0, 7, 0, 13, 5, 7, 0, 14, 5, 7, 0, 15, 5, 7, 0, 16, 5, 4, 0, 17, 5, 7, 0, 18, 5, - 7, 0, 19, 5, 7, 0, 20, 5, 7, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, - 2, 0, 27, 5, 7, 0, 28, 5, 7, 0, 29, 5, 7, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 2, 0, 33, 5, 2, 0, 34, 5, - 2, 0, 35, 5, 2, 0, 36, 5, 2, 0, 37, 5, 2, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, 4, 0, 41, 5, 4, 0, 42, 5, - 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 7, 0, 46, 5, 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, - 7, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, 7, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 7, 0, 58, 5, - 7, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0,238, 1, 0, 0, 64, 5, 7, 0, 65, 5, - 7, 0, 66, 5, 4, 0, 67, 5, 4, 0, 68, 5, 7, 0, 69, 5, 7, 0, 70, 5, 2, 0, 71, 5, 2, 0, 72, 5, 7, 0, 73, 5, - 2, 0, 74, 5, 2, 0, 75, 5, 4, 0, 76, 5, 2, 0, 77, 5, 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 80, 5, 7, 0, 81, 5, - 7, 0, 70, 0, 42, 0, 82, 5, 0, 0, 83, 5,185, 0, 9, 0,185, 0, 0, 0,185, 0, 1, 0, 0, 0, 20, 0, 2, 0, 84, 5, - 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 43, 0, 7, 0, 87, 5, 7, 0, 70, 0,186, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, - 2, 0,109, 0, 2, 0, 88, 5, 7, 0, 89, 5, 7, 0, 70, 0, 42, 0, 90, 5,187, 0, 5, 0, 7, 0, 91, 5, 0, 0, 17, 0, - 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,188, 0, 26, 0, 7, 0,123, 4, 7, 0,124, 4, 2, 0, 69, 1, 2, 0, 19, 0, - 2, 0, 92, 5, 2, 0,136, 1, 2, 0,126, 4, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4, -187, 0, 93, 5, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0, 94, 5, - 2, 0,238, 4,186, 0, 95, 5, 2, 0, 96, 5, 2, 0,240, 4, 2, 0,243, 4, 2, 0,244, 4,189, 0, 5, 0,189, 0, 0, 0, -189, 0, 1, 0, 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0,190, 0, 6, 0,191, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, - 9, 0,100, 5, 0, 0,101, 5, 4, 0, 37, 0,192, 0, 6, 0,190, 0,102, 5, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, - 2, 0,105, 5, 9, 0,106, 5,193, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,227, 3, 2, 0,107, 5,194, 0, 14, 0, - 2, 0, 19, 0, 2, 0,108, 5, 2, 0,109, 5, 2, 0,110, 5,193, 0,111, 5, 9, 0,106, 5, 7, 0,112, 5, 7, 0, 57, 0, - 4, 0,113, 5, 4, 0,114, 5, 4, 0,115, 5, 4, 0,116, 5, 46, 0,134, 0, 32, 0,164, 0,195, 0, 4, 0,195, 0, 0, 0, -195, 0, 1, 0, 0, 0,117, 5, 7, 0,118, 5,196, 0, 6, 0,190, 0,102, 5, 7, 0,119, 5, 4, 0, 90, 0, 0, 0,120, 5, - 0, 0,121, 5, 0, 0,190, 2,197, 0, 7, 0,190, 0,102, 5, 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,122, 5, - 86, 0,123, 5, 9, 0,106, 5,198, 0, 74, 0,197, 0,124, 5,197, 0,125, 5,196, 0, 80, 3, 7, 0,126, 5, 2, 0,127, 5, - 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 2, 0,227, 3, 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, - 2, 0,135, 5, 2, 0,113, 5, 2, 0,136, 5, 2, 0,137, 5, 2, 0,138, 5, 2, 0,139, 5, 7, 0,140, 5, 7, 0,141, 5, - 7, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, -192, 0,150, 5,194, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, 7, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 0, 0,157, 5, - 0, 0,158, 5, 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 2, 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, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, - 2, 0,174, 5, 0, 0,175, 5, 0, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 32, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, - 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, - 2, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 4, 0,193, 5, 4, 0,194, 5,199, 0, 8, 0, 4, 0,195, 5, 4, 0,196, 5, - 4, 0,197, 5, 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, 4, 0, 54, 0, 4, 0,125, 2,200, 0, 3, 0, 7, 0,201, 5, - 2, 0,202, 5, 2, 0, 19, 0,201, 0, 2, 0, 7, 0,203, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 32, 0,204, 5,176, 0,205, 5, 46, 0,206, 5, 47, 0,238, 0, 12, 0,207, 5,177, 0,208, 5, 32, 0,209, 5, 7, 0,210, 5, - 7, 0,211, 5, 7, 0,212, 5, 7, 0,213, 5, 4, 0,111, 3, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,202, 0,214, 5, -198, 0,215, 5,203, 0,216, 5,184, 0,182, 0,182, 0,217, 5, 12, 0,100, 0, 12, 0,218, 5, 12, 0,219, 5,204, 0,220, 5, - 2, 0,221, 5, 2, 0,222, 5, 2, 0,247, 0, 2, 0,223, 5, 4, 0,224, 5, 4, 0,225, 5, 12, 0,226, 5,187, 0, 93, 5, -188, 0,227, 5,200, 0,228, 5,162, 0, 93, 3,201, 0,229, 5,205, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, - 7, 0, 90, 2, 7, 0,106, 0, 7, 0,230, 5,206, 0, 36, 0, 7, 0,231, 5, 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, 76, 1, 7, 0,240, 5, 7, 0,241, 5, - 7, 0,242, 5, 7, 0,243, 5, 7, 0,171, 0, 2, 0,244, 5, 2, 0,245, 5, 2, 0, 70, 2, 2, 0,246, 5, 2, 0,247, 5, - 2, 0,248, 5, 2, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 71, 0,252, 5,162, 0, 93, 3,206, 0,253, 5,207, 0,254, 5, -208, 0,255, 5,209, 0, 0, 6,210, 0, 1, 6,211, 0, 2, 6, 7, 0, 3, 6, 2, 0, 4, 6, 2, 0, 5, 6, 4, 0,238, 1, -212, 0, 54, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 7, 0,239, 5, - 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 10, 6, 2, 0,248, 5, 2, 0,249, 5, 32, 0,204, 5, 32, 0, 11, 6,205, 0, 12, 6, -212, 0,253, 5, 0, 0, 13, 6, 4, 0,111, 3, 4, 0, 14, 6, 2, 0, 15, 6, 2, 0, 70, 0, 2, 0, 16, 6, 2, 0, 17, 6, - 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 18, 6, 7, 0,112, 0, 7, 0, 19, 6, 7, 0, 20, 6, 7, 0, 21, 6, - 7, 0, 22, 6, 7, 0, 23, 6, 7, 0,171, 0, 7, 0,210, 5, 2, 0, 24, 6, 2, 0,121, 1, 2, 0, 25, 6, 2, 0, 26, 6, - 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, 4, 0, 33, 6, 12, 0, 34, 6, - 2, 0, 35, 6, 2, 0,139, 2, 2, 0, 36, 6, 0, 0, 37, 6, 0, 0, 38, 6, 9, 0, 39, 6,162, 0, 93, 3,214, 0, 25, 0, - 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 40, 6, 23, 0, 41, 6, 23, 0, 42, 6, 7, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, - 7, 0, 46, 6, 2, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, 2, 0, 19, 0, 2, 0, 52, 6, - 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 17, 6, 7, 0, 57, 6, 7, 0, 58, 6, 4, 0, 59, 6, - 4, 0, 60, 6,213, 0, 6, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, -215, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,216, 0, 61, 6, - 46, 0,134, 0,217, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, -214, 0, 62, 6,218, 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, 17, 6, -219, 0, 20, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,207, 0,254, 5, -214, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, 2, 0, 52, 6, 2, 0, 71, 6, 0, 0, 19, 0, - 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 72, 6, 4, 0, 73, 6, 27, 0, 74, 6,220, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, - 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 7, 0, 89, 2, 7, 0, 90, 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,162, 0, 93, 3,221, 0, 16, 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,181, 1, - 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, 2, 0, 88, 6, 2, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6,222, 0, 16, 0, -213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 4, 0, 37, 0,221, 0, 92, 6,223, 0, 93, 6, 12, 0, 94, 6, - 12, 0, 95, 6,224, 0, 96, 6,211, 0, 97, 6,225, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0,101, 6, 2, 0, 70, 0, -226, 0, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, - 12, 0,102, 6,227, 0,103, 6, 0, 0,104, 6,228, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 19, 0, 2, 0,108, 6, - 2, 0,109, 6, 2, 0, 37, 0,229, 0, 29, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, - 2, 0, 9, 6, 47, 0,229, 2, 45, 0, 57, 1, 63, 0,110, 6, 2, 0,133, 0, 2, 0,111, 6, 2, 0, 70, 0, 2, 0,112, 6, - 4, 0, 19, 0, 2, 0,113, 6, 2, 0,114, 6, 2, 0,115, 6, 2, 0,238, 1, 0, 0,116, 6, 0, 0,117, 6, 0, 0,118, 6, - 0, 0, 17, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 78, 6, 7, 0,121, 1, 7, 0,119, 6, 7, 0,120, 6,162, 0, 93, 3, -230, 0, 11, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 65, 6, - 2, 0, 19, 0, 4, 0, 37, 0,218, 0, 63, 6,214, 0, 62, 6,231, 0, 27, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, - 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 42, 0,121, 6, 4, 0,122, 6, 4, 0,123, 6, 2, 0, 90, 0, 2, 0,133, 0, - 2, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 4, 0,127, 6, 4, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 2, 0,131, 6, - 2, 0,132, 6, 7, 0,133, 6, 23, 0,134, 6, 23, 0,135, 6, 4, 0,136, 6, 4, 0,137, 6, 0, 0,138, 6, 0, 0,139, 6, -232, 0, 10, 0, 27, 0, 31, 0, 9, 0,140, 6, 9, 0,141, 6, 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 4, 0, 90, 0, - 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,233, 0, 10, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, - 7, 0, 8, 6,232, 0,148, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,149, 6,234, 0, 8, 0,213, 0, 0, 0, -213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6,214, 0, 62, 6, 4, 0, 19, 0, 4, 0,150, 6,235, 0, 23, 0, -213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 27, 0,151, 6, - 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,152, 6, 9, 0,153, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,154, 6, - 7, 0,155, 6, 60, 0, 58, 1, 60, 0,156, 6, 4, 0,157, 6, 2, 0,158, 6, 2, 0, 37, 0,162, 0, 93, 3,236, 0, 10, 0, -213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 19, 0, 2, 0,120, 3, - 4, 0, 37, 0,162, 0, 93, 3,237, 0, 42, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, - 2, 0, 9, 6,214, 0, 62, 6,223, 0, 93, 6, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0, 89, 6, - 2, 0, 19, 0, 2, 0, 83, 6, 9, 0,153, 6, 4, 0, 86, 6, 4, 0,159, 6, 4, 0,160, 6, 4, 0, 87, 6, 23, 0,161, 6, - 23, 0,162, 6, 7, 0,163, 6, 7, 0,164, 6, 7, 0,165, 6, 7, 0,152, 6, 2, 0,166, 6, 2, 0,237, 0, 2, 0,181, 1, - 2, 0, 85, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,167, 6, 2, 0,168, 6, 9, 0,169, 6, 9, 0,170, 6, 9, 0,171, 6, - 9, 0,172, 6, 9, 0,173, 6, 2, 0,174, 6, 0, 0, 91, 6, 57, 0,175, 6,238, 0, 7, 0,238, 0, 0, 0,238, 0, 1, 0, - 4, 0,176, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,177, 6, 4, 0, 17, 0,239, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, - 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 4, 0, 17, 0, 4, 0,178, 6, 4, 0, 19, 0, 4, 0,124, 6, - 12, 0,179, 6, 12, 0,180, 6, 0, 0,181, 6, 0, 0,182, 6,240, 0, 5, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, - 4, 0, 7, 6, 4, 0, 37, 0,241, 0, 7, 0,241, 0, 0, 0,241, 0, 1, 0, 0, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, - 2, 0,186, 6, 2, 0, 37, 0,242, 0, 12, 0, 2, 0,185, 6, 2, 0,187, 6, 2, 0,188, 6, 0, 0,190, 2, 2, 0,189, 6, - 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6, 2, 0, 52, 6, 7, 0,194, 6, 7, 0,195, 6,243, 0, 18, 0, -243, 0, 0, 0,243, 0, 1, 0, 0, 0,233, 3,242, 0,196, 6,242, 0,197, 6,242, 0,198, 6,242, 0,199, 6, 7, 0,200, 6, - 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, - 2, 0,209, 6, 2, 0,210, 6,244, 0, 10, 0, 0, 0,211, 6, 0, 0,212, 6, 0, 0,213, 6, 0, 0,214, 6, 0, 0,215, 6, - 0, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6, 2, 0, 37, 0,245, 0, 8, 0, 0, 0,220, 6, 0, 0,221, 6, - 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, 0, 0,225, 6, 7, 0,230, 5, 7, 0, 37, 0,246, 0, 17, 0,244, 0,226, 6, -244, 0,227, 6,244, 0,228, 6,244, 0,229, 6,244, 0,230, 6,244, 0,231, 6,244, 0,232, 6,244, 0,233, 6,244, 0,234, 6, -244, 0,235, 6,244, 0,236, 6,244, 0,237, 6,244, 0,238, 6,244, 0,239, 6,244, 0,240, 6,245, 0,241, 6, 0, 0,242, 6, -247, 0, 71, 0, 0, 0,243, 6, 0, 0,244, 6, 0, 0,215, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, - 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7, - 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, 92, 0, -248, 0, 5, 0, 0, 0, 56, 7, 0, 0, 11, 7, 0, 0, 13, 7, 2, 0, 19, 0, 2, 0, 37, 0,249, 0, 24, 0,249, 0, 0, 0, -249, 0, 1, 0, 0, 0, 20, 0,246, 0, 57, 7,247, 0, 58, 7,247, 0, 59, 7,247, 0, 60, 7,247, 0, 61, 7,247, 0, 62, 7, -247, 0, 63, 7,247, 0, 64, 7,247, 0, 65, 7,247, 0, 66, 7,247, 0, 67, 7,247, 0, 68, 7,247, 0, 69, 7,247, 0, 70, 7, -247, 0, 71, 7,247, 0, 72, 7,247, 0, 73, 7,247, 0, 74, 7,248, 0, 75, 7, 4, 0, 76, 7, 4, 0, 37, 0,250, 0, 5, 0, - 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 77, 7, 7, 0, 43, 2,251, 0, 73, 0, 4, 0, 19, 0, 4, 0, 78, 7, - 4, 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, 2, 0, 89, 7, 2, 0, 37, 0, 4, 0, 90, 7, 4, 0, 91, 7, 4, 0, 92, 7, 4, 0, 93, 7, - 2, 0, 94, 7, 2, 0, 95, 7, 4, 0, 96, 7, 4, 0, 97, 7, 4, 0, 98, 7, 4, 0, 99, 7, 4, 0,100, 7, 4, 0,179, 6, - 4, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7, 12, 0,106, 7, 12, 0,107, 7, 12, 0,108, 7, - 12, 0,109, 7, 0, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 2, 0,113, 7, 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, - 2, 0,117, 7, 2, 0,118, 7,250, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, - 2, 0,125, 7, 2, 0,126, 7, 2, 0,127, 7, 4, 0,128, 7, 4, 0,129, 7, 2, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, - 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, - 2, 0,141, 7, 0, 0,142, 7, 0, 0,143, 7, 7, 0,144, 7, 2, 0,155, 5, 2, 0,156, 5, 55, 0,145, 7,216, 0, 21, 0, - 27, 0, 31, 0, 12, 0,146, 7, 12, 0,147, 7, 12, 0,148, 7, 12, 0, 6, 6, 46, 0,134, 0, 46, 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, 37, 0, 2, 0,157, 7, - 2, 0,158, 7, 4, 0, 70, 0,211, 0,159, 7, 9, 0,160, 7, 2, 0,161, 7,252, 0, 5, 0,252, 0, 0, 0,252, 0, 1, 0, -252, 0,162, 7, 13, 0,163, 7, 4, 0, 19, 0,253, 0, 7, 0,253, 0, 0, 0,253, 0, 1, 0,252, 0,164, 7,252, 0,165, 7, - 2, 0, 9, 5, 2, 0, 19, 0, 4, 0, 37, 0,254, 0, 25, 0,254, 0, 0, 0,254, 0, 1, 0,255, 0,166, 7, 0, 1, 98, 6, - 0, 0,167, 7, 0, 0,168, 7, 0, 0,169, 7, 2, 0,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, - 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 4, 0,178, 7,254, 0,179, 7, 9, 0,180, 7, - 4, 0,181, 7, 4, 0,182, 7, 4, 0,183, 7, 4, 0,184, 7, 0, 0,185, 7, 1, 1, 22, 0, 1, 1, 0, 0, 1, 1, 1, 0, -252, 0,164, 7,252, 0,165, 7,252, 0,186, 7,252, 0,187, 7,216, 0,188, 7, 23, 0, 52, 0, 0, 0, 7, 6, 0, 0,189, 7, - 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,190, 7, 2, 0, 37, 0, 2, 0,153, 7, 2, 0,177, 6, 2, 0, 19, 0, 2, 1,166, 7, - 12, 0,191, 7, 12, 0, 6, 6, 12, 0,192, 7, 12, 0,193, 7, 3, 1, 21, 0, 3, 1, 0, 0, 3, 1, 1, 0,214, 0, 62, 6, - 23, 0,194, 7, 23, 0,195, 7, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,196, 7, 2, 0,197, 7, 2, 0,198, 7, 2, 0, 19, 0, - 7, 0, 85, 2, 2, 0,152, 7, 2, 0,156, 7, 4, 0, 43, 0, 4, 1,166, 7, 12, 0,199, 7, 12, 0,200, 7, 12, 0,192, 7, - 0, 0,201, 7, 9, 0,202, 7, 5, 1, 12, 0, 0, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, 2, 0,206, 7, 2, 0,207, 7, - 2, 0,252, 4, 2, 0,247, 4,216, 0,208, 7, 46, 0,209, 7, 4, 0,210, 7, 4, 0,211, 7, 0, 0, 35, 0, 6, 1, 1, 0, - 0, 0,212, 7, 7, 1, 8, 0, 57, 0,213, 7, 57, 0,214, 7, 7, 1,215, 7, 7, 1,216, 7, 7, 1,217, 7, 2, 0,129, 0, - 2, 0, 19, 0, 4, 0,218, 7, 8, 1, 4, 0, 4, 0,122, 6, 4, 0,219, 7, 4, 0,127, 6, 4, 0,220, 7, 9, 1, 2, 0, - 4, 0,221, 7, 4, 0,222, 7, 10, 1, 7, 0, 7, 0,223, 7, 7, 0,224, 7, 7, 0,225, 7, 4, 0, 19, 0, 4, 0, 37, 0, - 7, 0,118, 4, 7, 0,226, 7, 11, 1, 6, 0, 0, 0,227, 7, 0, 0, 81, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,251, 4, - 4, 0, 37, 0, 12, 1, 21, 0, 12, 1, 0, 0, 12, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,228, 7, - 4, 0,229, 7, 4, 0,230, 7, 6, 1,231, 7, 0, 0,227, 7, 4, 0,232, 7, 4, 0,233, 7, 11, 1, 87, 3, 8, 1,234, 7, - 9, 1,235, 7, 10, 1,236, 7, 7, 1,237, 7, 7, 1,238, 7, 7, 1,239, 7, 57, 0,240, 7, 57, 0,241, 7, 13, 1, 12, 0, - 0, 0, 5, 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,242, 7, 9, 0,243, 7, 9, 0,232, 0, 9, 0,234, 0, 14, 1, 43, 0, 14, 1, 0, 0, 14, 1, 1, 0, 9, 0,244, 7, - 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,245, 7, 4, 0,246, 7, - 4, 0,229, 7, 4, 0,230, 7, 4, 0,247, 7, 4, 0,246, 0, 4, 0,248, 7, 4, 0,249, 7, 7, 0,250, 7, 7, 0,251, 7, - 4, 0,126, 0, 4, 0,252, 7, 12, 1,253, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0,254, 7, 7, 0,255, 7, - 13, 1, 59, 1, 14, 1, 0, 8, 14, 1, 1, 8, 14, 1, 2, 8, 12, 0, 3, 8, 15, 1, 4, 8, 16, 1, 5, 8, 7, 0, 6, 8, - 7, 0, 7, 8, 4, 0, 8, 8, 7, 0, 9, 8, 9, 0, 10, 8, 4, 0, 11, 8, 4, 0, 12, 8, 4, 0, 13, 8, 7, 0, 14, 8, - 17, 1, 4, 0, 17, 1, 0, 0, 17, 1, 1, 0, 12, 0, 15, 8, 14, 1, 16, 8,202, 0, 6, 0, 12, 0, 17, 8, 12, 0, 3, 8, - 12, 0, 18, 8, 14, 1, 19, 8, 0, 0, 20, 8, 0, 0, 21, 8, 18, 1, 4, 0, 7, 0, 22, 8, 7, 0,109, 0, 2, 0, 23, 8, - 2, 0, 24, 8, 19, 1, 6, 0, 7, 0, 25, 8, 7, 0, 26, 8, 7, 0, 27, 8, 7, 0, 28, 8, 4, 0, 29, 8, 4, 0, 30, 8, - 20, 1, 12, 0, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, - 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8, 4, 0,233, 2, 4, 0, 41, 8, 21, 1, 2, 0, 7, 0, 91, 5, 7, 0, 37, 0, - 22, 1, 5, 0, 7, 0, 42, 8, 7, 0, 43, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 44, 8, 23, 1, 6, 0, 23, 1, 0, 0, - 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0, 57, 0, 24, 1, 8, 0, 24, 1, 0, 0, 24, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 25, 1, 45, 0, 25, 1, 0, 0, - 25, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 45, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 46, 8, 7, 0, 47, 8, - 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 48, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 49, 8, 7, 0, 50, 8, 7, 0, 51, 8, - 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 54, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 55, 8, 7, 0, 56, 8, 7, 0, 37, 0, - 7, 0, 57, 8, 7, 0, 58, 8, 7, 0, 59, 8, 2, 0, 60, 8, 2, 0, 61, 8, 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, - 2, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 28, 2, 2, 0, 68, 8, 2, 0, 25, 2, 2, 0, 69, 8, 0, 0, 70, 8, - 0, 0, 71, 8, 7, 0,240, 0, 26, 1, 72, 8, 67, 0,241, 1, 27, 1, 16, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 45, 8, 2, 0,242, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, - 7, 0,242, 2, 7, 0, 73, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,228, 0, 5, 0, 2, 0, 17, 0, 2, 0,218, 7, - 2, 0, 19, 0, 2, 0, 74, 8, 27, 0,151, 6,227, 0, 3, 0, 4, 0, 69, 0, 4, 0, 75, 8,228, 0, 2, 0, 28, 1, 7, 0, - 28, 1, 0, 0, 28, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 76, 8, 29, 1, 5, 0, - 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 77, 8, 4, 0, 78, 8, 4, 0, 37, 0, 30, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0, 43, 0, 2, 0, 70, 0, 31, 1, 4, 0, 0, 0, 20, 0, 66, 0, 79, 8, 7, 0, 76, 1, 7, 0, 37, 0, 32, 1, 6, 0, - 2, 0, 80, 8, 2, 0, 81, 8, 2, 0, 17, 0, 2, 0, 82, 8, 0, 0, 83, 8, 0, 0, 84, 8, 33, 1, 5, 0, 4, 0, 17, 0, - 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 85, 8, 0, 0, 86, 8, 34, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, - 35, 1, 4, 0, 2, 0, 87, 8, 2, 0, 88, 8, 2, 0, 19, 0, 2, 0, 37, 0, 36, 1, 6, 0, 0, 0, 20, 0, 0, 0, 89, 8, - 2, 0, 90, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 37, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,120, 4, - 2, 0, 19, 0, 2, 0,205, 2, 38, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 87, 8, 39, 1, 7, 0, 0, 0, 20, 0, - 7, 0,120, 4, 0, 0, 91, 8, 0, 0, 92, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 93, 8, 40, 1, 4, 0, 0, 0, 94, 8, - 0, 0, 95, 8, 4, 0, 17, 0, 7, 0,209, 2, 41, 1, 3, 0, 32, 0, 96, 8, 0, 0, 97, 8, 0, 0, 98, 8, 42, 1, 18, 0, - 42, 1, 0, 0, 42, 1, 1, 0, 2, 0, 17, 0, 2, 0, 99, 8, 2, 0, 19, 0, 2, 0,100, 8, 2, 0,101, 8, 2, 0,102, 8, - 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 43, 1,103, 8, 32, 0, 45, 0, 2, 0,107, 5, 2, 0, 6, 8, - 2, 0,104, 8, 2, 0, 37, 0, 44, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,105, 8, 2, 0, 19, 0, 2, 0,205, 2, - 2, 0,106, 8, 4, 0,107, 8, 4, 0,108, 8, 4, 0,109, 8, 4, 0,110, 8, 4, 0,111, 8, 45, 1, 1, 0, 0, 0,112, 8, - 46, 1, 4, 0, 42, 0,121, 6, 0, 0,113, 8, 4, 0, 69, 1, 4, 0, 19, 0, 43, 1, 18, 0, 43, 1, 0, 0, 43, 1, 1, 0, - 43, 1,114, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,102, 8, 2, 0, 99, 8, 2, 0,116, 8, 2, 0, 70, 0, - 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 47, 1,103, 8, 42, 1,117, 8, 2, 0, 15, 0, 2, 0,118, 8, 4, 0,119, 8, - 48, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 49, 1, 12, 0,160, 0,120, 8, 2, 0, 17, 0, 2, 0, 19, 0, - 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, - 7, 0,126, 8, 50, 1, 13, 0, 2, 0, 19, 0, 2, 0,127, 8, 4, 0, 47, 8, 4, 0, 89, 0, 2, 0,128, 8, 7, 0,242, 3, - 7, 0,129, 8, 15, 1, 4, 8, 51, 1,130, 8, 2, 0, 17, 0, 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 52, 1, 11, 0, - 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,134, 8, 0, 0, 20, 0, 7, 0,135, 8, 7, 0,136, 8, - 7, 0,128, 3, 2, 0,137, 8, 2, 0,138, 8, 53, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, - 32, 0,204, 5, 54, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 85, 8, 32, 0, 45, 0, 55, 1, 13, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 99, 8, 2, 0,129, 3, 7, 0,139, 8, 7, 0,140, 8, 7, 0, 64, 1, 7, 0, 65, 1, - 7, 0,100, 3, 7, 0,103, 3, 7, 0,141, 8, 7, 0,142, 8, 32, 0,143, 8, 56, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, - 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,121, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,144, 8, 2, 0,145, 8, - 57, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,146, 8, 7, 0,147, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, - 7, 0,148, 8, 58, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, 2, 0,149, 8, - 4, 0, 37, 0, 7, 0,150, 8, 7, 0,151, 8, 7, 0,152, 8, 7, 0,153, 8, 0, 0,154, 8, 59, 1, 9, 0, 2, 0, 19, 0, - 2, 0, 17, 0, 4, 0, 47, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,144, 8, 2, 0,145, 8, - 60, 1, 7, 0, 4, 0,193, 2, 4, 0,155, 8, 4, 0,156, 8, 4, 0,157, 8, 7, 0,158, 8, 7, 0,159, 8, 0, 0, 91, 8, - 61, 1, 7, 0, 0, 0,160, 8, 32, 0,161, 8, 0, 0, 97, 8, 2, 0,162, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0, 98, 8, - 62, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 47, 8, 4, 0, 89, 0, 0, 0,163, 8, 0, 0,164, 8, 63, 1, 1, 0, - 4, 0, 19, 0, 64, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,165, 8, 7, 0,166, 8, 42, 0,121, 6, - 65, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 66, 1, 2, 0, 4, 0, 17, 0, 4, 0, 42, 6, - 67, 1, 6, 0, 0, 0, 94, 8, 0, 0, 95, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,167, 8, 47, 1, 10, 0, - 47, 1, 0, 0, 47, 1, 1, 0, 47, 1,114, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 99, 8, 2, 0,168, 8, 0, 0, 20, 0, - 9, 0, 2, 0, 32, 0, 45, 0, 68, 1, 10, 0, 7, 0,128, 3, 7, 0,169, 8, 7, 0,170, 8, 7, 0,171, 8, 7, 0,172, 8, - 4, 0, 19, 0, 7, 0,149, 8, 7, 0,173, 8, 7, 0,174, 8, 7, 0, 37, 0, 16, 1, 12, 0, 16, 1, 0, 0, 16, 1, 1, 0, - 15, 1,175, 8, 9, 0,223, 0, 4, 0,171, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, - 7, 0,242, 3, 7, 0, 37, 0, 51, 1, 8, 0, 7, 0,179, 8, 7, 0,180, 8, 7, 0,181, 8, 7, 0,182, 8, 7, 0,183, 8, - 7, 0,184, 8, 7, 0,185, 8, 7, 0,186, 8, 15, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, - 43, 0,187, 8, 36, 0, 80, 0, 7, 0,242, 3, 7, 0,188, 8, 7, 0,129, 8, 7, 0,179, 8, 7, 0,180, 8, 7, 0,189, 8, - 4, 0, 90, 0, 4, 0,178, 8, 9, 0,190, 8, 69, 1, 15, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, - 7, 0, 8, 6, 1, 1,191, 8,214, 0, 62, 6, 15, 1, 4, 8, 2, 0, 69, 1, 2, 0,127, 8, 2, 0, 89, 2, 2, 0, 90, 2, - 2, 0, 19, 0, 2, 0,114, 6, 4, 0, 70, 0, 70, 1, 6, 0, 70, 1, 0, 0, 70, 1, 1, 0, 32, 0, 45, 0, 9, 0,192, 8, - 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,193, 8, 4, 0,131, 0, 7, 0,194, 8, 71, 1, 27, 0, - 71, 1, 0, 0, 71, 1, 1, 0, 26, 0,195, 8, 71, 1, 38, 0, 12, 0,196, 8, 0, 0, 20, 0, 7, 0,197, 8, 7, 0,198, 8, - 7, 0,199, 8, 7, 0,200, 8, 4, 0, 19, 0, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 7, 0, 76, 1, 7, 0, 36, 2, - 7, 0,204, 8, 7, 0,191, 2, 7, 0,205, 8, 7, 0,206, 8, 7, 0,207, 8, 7, 0,208, 8, 7, 0,209, 8, 7, 0,172, 0, - 4, 0,131, 0, 2, 0,136, 5, 2, 0,136, 1, 72, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,210, 8, 12, 0,211, 8, - 12, 0,212, 8, 71, 1,213, 8, 9, 0,214, 8, 9, 0,215, 8, 4, 0, 19, 0, 4, 0, 15, 6, 2, 0,247, 2, 2, 0, 72, 6, - 4, 0, 37, 0, 4, 0,131, 0, 4, 0,216, 8, 2, 0,217, 8, 2, 0,218, 8, 2, 0,219, 8, 2, 0,220, 8, 4, 0,221, 8, - 4, 0,222, 8, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8, 73, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, - 74, 1, 5, 0, 73, 1,227, 8, 4, 0,191, 2, 4, 0,228, 8, 4, 0,229, 8, 4, 0, 19, 0, 75, 1, 6, 0, 4, 0, 37, 0, - 4, 0, 72, 6, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8, 76, 1, 42, 0, 76, 1, 0, 0, 76, 1, 1, 0, - 26, 0,195, 8, 12, 0,155, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,230, 8, 2, 0,231, 8, 2, 0,232, 8, 2, 0,114, 3, - 2, 0,233, 8, 4, 0, 72, 2, 4, 0,223, 8, 4, 0,224, 8, 71, 1,234, 8, 76, 1, 38, 0, 76, 1,235, 8, 12, 0,236, 8, - 9, 0,237, 8, 9, 0,238, 8, 9, 0,239, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,240, 8, 7, 0, 15, 2, 7, 0,105, 3, - 7, 0,107, 3, 2, 0,137, 3, 2, 0, 37, 0, 7, 0,241, 8, 7, 0,242, 8, 7, 0,110, 3, 7, 0,243, 8, 7, 0,244, 8, - 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 7, 0,250, 8, 7, 0, 65, 2, 32, 0,251, 8, -161, 0, 11, 0, 12, 0,252, 8, 2, 0, 19, 0, 2, 0,253, 8, 7, 0,101, 2, 7, 0,254, 8, 7, 0,255, 8, 12, 0, 0, 9, - 4, 0, 1, 9, 4, 0, 2, 9, 9, 0, 3, 9, 9, 0, 4, 9, 77, 1, 1, 0, 4, 0, 2, 9, 78, 1, 12, 0, 4, 0, 2, 9, - 7, 0,111, 8, 2, 0, 5, 9, 2, 0, 6, 9, 7, 0, 7, 9, 7, 0, 8, 9, 2, 0, 9, 9, 2, 0, 19, 0, 7, 0, 10, 9, - 7, 0, 11, 9, 7, 0, 12, 9, 7, 0, 13, 9, 79, 1, 7, 0, 79, 1, 0, 0, 79, 1, 1, 0, 12, 0, 14, 9, 4, 0, 19, 0, - 4, 0, 15, 9, 0, 0,233, 3,248, 0, 16, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 17, 9, 12, 0,252, 8, 12, 0, 18, 9, - 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 19, 9,218, 0, 4, 0, 27, 0,175, 8, 12, 0,252, 8, 4, 0, 20, 9, 4, 0, 19, 0, - 80, 1, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, -160, 0, 90, 3,218, 0, 21, 9, 0, 0, 69, 1, 0, 0, 65, 6, 2, 0, 19, 0, 2, 0, 22, 9, 2, 0,115, 6, 2, 0,114, 6, - 2, 0, 23, 9, 7, 0, 24, 9, 81, 1, 8, 0, 81, 1, 0, 0, 81, 1, 1, 0, 79, 1, 25, 9, 36, 0, 80, 0, 12, 0, 94, 3, - 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 26, 9, 82, 1, 5, 0, 82, 1, 0, 0, 82, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, - 0, 0, 27, 9, 83, 1, 14, 0, 83, 1, 0, 0, 83, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 28, 9, - 0, 0, 29, 9, 0, 0, 27, 9, 7, 0, 30, 9, 7, 0, 31, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 32, 9, 7, 0, 33, 9, - 84, 1, 9, 0, 84, 1, 0, 0, 84, 1, 1, 0, 32, 0, 34, 9, 0, 0,250, 2, 7, 0, 35, 9, 2, 0, 36, 9, 2, 0, 19, 0, - 2, 0, 17, 0, 2, 0, 37, 9, 85, 1, 7, 0, 42, 0,121, 6, 26, 0,195, 8, 4, 0, 19, 0, 4, 0, 38, 9, 12, 0, 39, 9, - 32, 0, 34, 9, 0, 0,250, 2, 86, 1, 15, 0, 32, 0, 34, 9, 2, 0, 40, 9, 2, 0, 19, 0, 2, 0, 41, 9, 2, 0, 42, 9, - 0, 0,250, 2, 32, 0, 43, 9, 0, 0, 44, 9, 7, 0, 45, 9, 7, 0, 36, 2, 7, 0, 46, 9, 7, 0, 47, 9, 2, 0, 17, 0, - 2, 0, 69, 1, 7, 0, 76, 1, 87, 1, 6, 0, 32, 0, 34, 9, 7, 0,227, 8, 2, 0, 48, 9, 2, 0, 49, 9, 2, 0, 19, 0, - 2, 0, 50, 9, 88, 1, 6, 0, 32, 0, 34, 9, 4, 0, 51, 9, 4, 0, 52, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, - 89, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, 4, 0, 51, 9, 0, 0,250, 2, 90, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, - 4, 0, 51, 9, 0, 0,250, 2, 91, 1, 10, 0, 32, 0, 34, 9, 4, 0, 53, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,117, 6, - 2, 0, 54, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 55, 9, 0, 0,250, 2, 92, 1, 4, 0, 32, 0, 34, 9, 4, 0, 19, 0, - 4, 0, 51, 9, 0, 0,250, 2, 93, 1, 10, 0, 32, 0, 34, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, - 7, 0,146, 8, 7, 0,147, 8, 4, 0, 37, 0,160, 0,120, 8, 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 34, 9, 4, 0,115, 3, - 4, 0, 56, 9, 0, 0,250, 2, 95, 1, 4, 0, 32, 0, 34, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 96, 1, 5, 0, - 32, 0, 34, 9, 7, 0,125, 0, 4, 0, 57, 9, 4, 0,115, 3, 4, 0,116, 3, 97, 1, 6, 0, 32, 0, 34, 9, 4, 0, 58, 9, - 4, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 0, 0,250, 2, 98, 1, 16, 0, 32, 0, 34, 9, 32, 0,235, 8, 4, 0, 17, 0, - 7, 0, 62, 9, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, - 7, 0, 70, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 99, 1, 3, 0, 32, 0, 34, 9, 4, 0, 19, 0, - 4, 0, 28, 2,100, 1, 5, 0, 32, 0, 34, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 71, 9, 0, 0,250, 2,101, 1, 10, 0, - 32, 0, 34, 9, 0, 0,250, 2, 2, 0, 72, 9, 2, 0, 73, 9, 0, 0, 74, 9, 0, 0, 75, 9, 7, 0, 76, 9, 7, 0, 77, 9, - 7, 0, 78, 9, 7, 0, 79, 9,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 80, 9, - 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0, 80, 9, 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,104, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0, 80, 9, 7, 0, 81, 9, 2, 0, 19, 0, 2, 0, 28, 2,105, 1, 7, 0, 32, 0, 34, 9, 0, 0,250, 2, - 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,106, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, - 2, 0, 54, 3, 0, 0, 56, 3, 0, 0, 82, 9,107, 1, 10, 0,107, 1, 0, 0,107, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 0, 0, 83, 9, 7, 0, 20, 1, 7, 0, 21, 1, 2, 0, 14, 9, 2, 0, 84, 9, 32, 0, 45, 0,108, 1, 22, 0,108, 1, 0, 0, -108, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 85, 9, 2, 0, 86, 9, 36, 0, 80, 0,160, 0,120, 8, 32, 0,164, 0, - 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 87, 9, 7, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0,236, 2, 7, 0, 91, 9, - 7, 0,122, 8, 7, 0, 92, 9, 0, 0, 93, 9, 0, 0, 94, 9, 12, 0, 96, 3,109, 1, 8, 0, 7, 0, 43, 2, 7, 0,146, 8, - 7, 0,147, 8, 9, 0, 2, 0, 2, 0, 95, 9, 2, 0, 96, 9, 2, 0, 97, 9, 2, 0, 98, 9,110, 1, 18, 0,110, 1, 0, 0, -110, 1, 1, 0,110, 1, 99, 9, 0, 0, 20, 0,109, 1,100, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 9, 2, 0,102, 9, - 2, 0,103, 9, 2, 0,104, 9, 4, 0, 43, 0, 7, 0,105, 9, 7, 0,106, 9, 4, 0,107, 9, 4, 0,108, 9,110, 1,109, 9, -111, 1,110, 9,112, 1, 33, 0,112, 1, 0, 0,112, 1, 1, 0,112, 1,111, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,228, 7, 2, 0, 6, 8, 2, 0,112, 9, 2, 0,133, 0, 2, 0,102, 9, 2, 0,218, 7, 12, 0,115, 8, 12, 0,113, 9, - 27, 0,151, 6, 9, 0,114, 9, 7, 0,105, 9, 7, 0,106, 9, 7, 0, 74, 2, 7, 0,115, 9, 2, 0,116, 9, 2, 0,117, 9, - 7, 0,118, 9, 7, 0,119, 9, 2, 0,120, 9, 2, 0,121, 9, 9, 0,122, 9, 24, 0,123, 9, 24, 0,124, 9, 24, 0,125, 9, -113, 1,150, 0,114, 1,126, 9,115, 1,127, 9,111, 1, 8, 0,111, 1, 0, 0,111, 1, 1, 0,112, 1,128, 9,112, 1,129, 9, -110, 1,130, 9,110, 1,109, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, - 12, 0,131, 9, 12, 0,132, 9,109, 1,133, 9, 12, 0,134, 9, 4, 0, 17, 0, 4, 0,135, 9, 4, 0,136, 9, 4, 0,137, 9, - 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,138, 9,115, 1,139, 9,110, 1,140, 9,110, 1,141, 9, 9, 0,142, 9, 9, 0,143, 9, - 4, 0,144, 9, 9, 0,145, 9, 9, 0,146, 9, 9, 0,147, 9,116, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,218, 7, - 0, 0,148, 9, 0, 0,149, 9, 2, 0, 37, 0,117, 1, 16, 0, 2, 0,172, 7, 2, 0,173, 7, 2, 0,150, 9, 2, 0,170, 8, - 2, 0,151, 9, 2, 0, 68, 0, 7, 0,235, 2, 7, 0,152, 9, 7, 0,153, 9, 2, 0, 91, 1, 0, 0,154, 9, 0, 0,155, 9, - 2, 0,156, 9, 2, 0, 37, 0, 4, 0,157, 9, 4, 0,158, 9,118, 1, 9, 0, 7, 0,159, 9, 7, 0,160, 9, 7, 0,189, 8, - 7, 0,109, 0, 7, 0,161, 9, 7, 0, 78, 6, 2, 0,162, 9, 0, 0,163, 9, 0, 0, 37, 0,119, 1, 4, 0, 7, 0,164, 9, - 7, 0,165, 9, 2, 0,162, 9, 2, 0, 37, 0,120, 1, 3, 0, 7, 0,166, 9, 7, 0,167, 9, 7, 0, 15, 0,121, 1, 7, 0, - 0, 0, 5, 2, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,189, 4, 4, 0,126, 0, 4, 0, 34, 4,122, 1, 7, 0, - 7, 0,168, 9, 7, 0,169, 9, 7, 0,170, 9, 7, 0, 85, 2, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9,123, 1, 4, 0, - 2, 0,174, 9, 2, 0,175, 9, 2, 0,176, 9, 2, 0,177, 9,124, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,125, 1, 2, 0, - 0, 0,166, 0, 0, 0,178, 9,126, 1, 1, 0, 0, 0, 20, 0,127, 1, 10, 0, 0, 0,179, 9, 0, 0,180, 9, 0, 0, 71, 6, - 0, 0,181, 9, 2, 0,150, 9, 2, 0,182, 9, 7, 0,183, 9, 7, 0,184, 9, 7, 0,185, 9, 7, 0, 91, 9,128, 1, 2, 0, - 9, 0,186, 9, 9, 0,187, 9,129, 1, 11, 0, 0, 0,251, 4, 0, 0, 17, 0, 0, 0,162, 9, 0, 0,109, 0, 0, 0,188, 9, - 0, 0,106, 0, 0, 0, 70, 2, 7, 0,189, 9, 7, 0,190, 9, 7, 0,191, 9, 7, 0,192, 9,130, 1, 8, 0, 7, 0, 80, 8, - 7, 0,125, 0, 7, 0,155, 9, 7, 0,157, 2, 7, 0,193, 9, 7, 0,236, 0, 7, 0,194, 9, 4, 0, 17, 0,131, 1, 4, 0, - 2, 0,195, 9, 2, 0,196, 9, 2, 0,197, 9, 2, 0, 37, 0,132, 1, 1, 0, 0, 0, 20, 0,133, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,198, 9,134, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,120, 4, 7, 0,199, 9, - 7, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9,133, 1,203, 9,133, 1,204, 9,133, 1,205, 9, 63, 0, 9, 0, 4, 0, 19, 0, - 4, 0, 64, 0, 24, 0,206, 9, 24, 0,207, 9,134, 1,208, 9, 7, 0,209, 9, 7, 0,210, 9, 7, 0,211, 9, 7, 0,212, 9, -135, 1, 4, 0, 47, 0,229, 2, 7, 0,213, 9, 7, 0,170, 1, 7, 0, 37, 0,191, 0, 17, 0, 27, 0, 31, 0,135, 1,214, 9, - 63, 0,203, 9, 51, 0,134, 1, 2, 0, 19, 0, 2, 0,230, 5, 4, 0,106, 0, 7, 0,215, 9, 7, 0, 82, 2, 4, 0,216, 9, - 7, 0,217, 9, 7, 0,218, 9, 7, 0,219, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,220, 9, 0, 0,210, 6,136, 1, 10, 0, - 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, 4, 0,177, 3, 4, 0,221, 9, 4, 0,222, 9, 4, 0,223, 9, 0, 0, 92, 0, - 0, 0, 20, 0, 9, 0, 2, 0, 91, 0, 6, 0,136, 1,224, 9, 4, 0,225, 9, 4, 0,226, 9, 4, 0,227, 9, 4, 0, 37, 0, - 9, 0,228, 9,137, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,138, 1, 5, 0, - 7, 0,152, 2, 7, 0,229, 9, 7, 0,230, 9, 7, 0,231, 9, 7, 0,219, 2,139, 1, 5, 0, 32, 0,232, 9,140, 1, 22, 0, - 7, 0,203, 5, 7, 0,233, 9, 7, 0, 57, 0,141, 1, 7, 0, 4, 0,234, 9, 4, 0,235, 9, 4, 0,236, 9, 7, 0,237, 9, - 7, 0,238, 9, 7, 0,239, 9, 7, 0, 57, 0,142, 1, 8, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, - 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,219, 2, 7, 0, 88, 8,143, 1, 6, 0,143, 1, 0, 0,143, 1, 1, 0, 32, 0, 45, 0, - 2, 0,204, 2, 2, 0, 19, 0, 2, 0,240, 9,144, 1, 18, 0,138, 1,171, 3,138, 1,241, 9,137, 1,242, 9,138, 1, 72, 8, -139, 1,243, 9, 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0,244, 9, 4, 0,234, 9, 4, 0,245, 9, 7, 0,238, 9, - 7, 0,239, 9, 7, 0,106, 0, 2, 0, 19, 0, 2, 0,246, 9, 2, 0,247, 9, 2, 0,248, 9,145, 1,110, 0, 27, 0, 31, 0, - 39, 0, 75, 0,146, 1,249, 9,169, 0, 56, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 72, 9, 2, 0,250, 9, 2, 0,251, 9, - 2, 0,137, 3, 2, 0,252, 9, 2, 0,253, 9, 2, 0,254, 9, 2, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, - 2, 0,238, 4, 2, 0,115, 5, 2, 0, 3, 10, 2, 0, 4, 10, 2, 0, 5, 10, 2, 0, 6, 10, 2, 0, 7, 10, 2, 0, 25, 2, - 2, 0, 65, 8, 2, 0, 41, 8, 2, 0, 8, 10, 2, 0, 9, 10, 2, 0,187, 3, 2, 0,188, 3, 2, 0, 10, 10, 2, 0, 11, 10, - 2, 0, 12, 10, 2, 0, 13, 10, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 2, 0, 17, 10, 2, 0, 18, 10, 7, 0, 19, 10, - 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 47, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 53, 8, 7, 0, 22, 10, 7, 0, 23, 10, - 7, 0, 24, 10, 4, 0, 48, 8, 4, 0, 46, 8, 4, 0, 25, 10, 7, 0, 49, 8, 7, 0, 50, 8, 7, 0, 51, 8, 7, 0, 26, 10, - 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 57, 0, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, - 7, 0, 34, 10, 7, 0,128, 3, 7, 0,106, 0, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, - 7, 0, 40, 10, 7, 0, 41, 10, 4, 0, 42, 10, 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, - 7, 0, 48, 10, 7, 0,210, 0, 7, 0, 49, 10, 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 50, 10, 7, 0, 51, 10, - 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 55, 10, 7, 0, 56, 10, 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, - 7, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 4, 0, 63, 10, 4, 0, 64, 10, 67, 0,160, 3, 12, 0, 65, 10, 67, 0, 66, 10, - 32, 0, 67, 10, 32, 0, 68, 10, 36, 0, 80, 0,164, 0, 61, 1,164, 0, 69, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0, -145, 1, 70, 10,144, 1, 71, 10,141, 1,235, 8,171, 0,238, 3, 9, 0,239, 3,147, 1, 72, 10,147, 1, 73, 10, 12, 0, 74, 10, - 12, 0, 75, 10,133, 0, 76, 10,141, 0, 77, 10,141, 0, 78, 10, 32, 0, 79, 10, 32, 0, 80, 10, 32, 0, 38, 0, 12, 0, 39, 9, - 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 81, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 48, 8, - 4, 0, 82, 10, 4, 0, 83, 10, 4, 0, 84, 10, 2, 0,247, 0, 2, 0, 85, 10, 2, 0, 86, 10, 2, 0, 87, 10, 0, 0, 88, 10, - 2, 0, 89, 10, 2, 0, 90, 10, 2, 0, 91, 10, 9, 0, 92, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 93, 10,148, 1, 94, 10, -149, 1, 95, 10, 7, 0, 96, 10,135, 0, 35, 0,150, 1,190, 8, 7, 0, 25, 4, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0,123, 4, - 7, 0, 99, 10, 7, 0,138, 3, 7, 0,128, 3, 7, 0,100, 10, 7, 0, 84, 2, 7, 0,101, 10, 7, 0,102, 10, 7, 0,103, 10, - 7, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0, 26, 4, 7, 0,107, 10, 7, 0,108, 10, 7, 0,109, 10, 7, 0, 27, 4, - 7, 0, 23, 4, 7, 0, 24, 4, 7, 0,110, 10, 4, 0,111, 10, 4, 0, 90, 0, 4, 0,112, 10, 4, 0,113, 10, 2, 0,114, 10, - 2, 0,115, 10, 2, 0,116, 10, 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10,169, 0, 56, 4,136, 0, 8, 0,150, 1,120, 10, - 7, 0,121, 10, 7, 0,122, 10, 7, 0,242, 1, 7, 0,123, 10, 4, 0, 90, 0, 2, 0,124, 10, 2, 0,125, 10,151, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,126, 10,152, 1, 6, 0,152, 1, 0, 0,152, 1, 1, 0,151, 1,227, 8, - 4, 0,253, 0, 2, 0,127, 10, 2, 0, 19, 0,153, 1, 5, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,128, 10, 4, 0,129, 10, - 4, 0, 19, 0,154, 1, 9, 0,154, 1, 0, 0,154, 1, 1, 0, 12, 0,124, 0,153, 1,130, 10, 4, 0, 19, 0, 2, 0,127, 10, - 2, 0,131, 10, 7, 0, 91, 0, 0, 0,132, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0, 11, 5, 4, 0, 19, 0, 2, 0,133, 10, - 2, 0,134, 10, 9, 0,135, 10,155, 1, 7, 0,155, 1, 0, 0,155, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, - 0, 0,136, 10, 0, 0,137, 10,156, 1, 5, 0, 12, 0,138, 10, 4, 0,139, 10, 4, 0,140, 10, 4, 0, 19, 0, 4, 0, 37, 0, -157, 1, 18, 0, 27, 0, 31, 0,158, 1,141, 10,158, 1,142, 10, 12, 0,143, 10, 4, 0,144, 10, 2, 0,145, 10, 2, 0, 37, 0, - 12, 0,146, 10, 12, 0,147, 10,156, 1,148, 10, 12, 0,149, 10, 12, 0,150, 10, 12, 0,151, 10,159, 1,152, 10, 4, 0,153, 10, - 4, 0, 70, 0, 12, 0,154, 10,211, 0,155, 10,158, 1, 31, 0,158, 1, 0, 0,158, 1, 1, 0, 9, 0,156, 10, 4, 0,151, 7, - 4, 0, 37, 0,216, 0, 61, 6,216, 0,157, 10, 0, 0,158, 10, 2, 0,159, 10, 2, 0,160, 10, 2, 0,172, 7, 2, 0,173, 7, - 2, 0,161, 10, 2, 0,162, 10, 2, 0,177, 3, 2, 0,177, 6, 2, 0,163, 10, 2, 0,164, 10, 2, 0,165, 10, 2, 0,166, 10, -160, 1,167, 10,161, 1,168, 10,162, 1,169, 10, 4, 0,170, 10, 4, 0,171, 10, 9, 0,172, 10, 12, 0,147, 10, 12, 0,192, 7, - 12, 0,173, 10, 12, 0,174, 10, 12, 0,175, 10,163, 1, 16, 0,163, 1, 0, 0,163, 1, 1, 0, 0, 0,176, 10, 26, 0, 30, 0, - 2, 0,177, 10, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 2, 0,181, 10, 2, 0,182, 10, - 2, 0, 19, 0, 2, 0,183, 10, 2, 0, 70, 2,164, 1,184, 10,165, 1, 10, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,185, 10, - 0, 0,176, 10, 2, 0,186, 10, 2, 0,187, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,188, 10, 9, 0,189, 10,159, 1, 7, 0, -159, 1, 0, 0,159, 1, 1, 0, 0, 0,176, 10, 0, 0,190, 10, 12, 0,109, 7, 4, 0,191, 10, 4, 0, 19, 0,224, 0, 12, 0, -224, 0, 0, 0,224, 0, 1, 0, 0, 0,176, 10, 26, 0, 30, 0,166, 1,166, 7, 9, 0,192, 10,164, 1,184, 10,156, 1,193, 10, - 12, 0,194, 10,224, 0,195, 10, 2, 0, 19, 0, 2, 0,136, 1,160, 1, 23, 0,160, 1, 0, 0,160, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 15, 0, 2, 0, 5, 0, 2, 0, 6, 0, 2, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 2, 0,199, 10, 0, 0,200, 10, - 0, 0, 37, 0, 2, 0,178, 10, 2, 0,179, 10, 2, 0,180, 10, 2, 0,181, 10, 2, 0,182, 10, 2, 0, 43, 0, 0, 0,201, 10, - 2, 0,202, 10, 2, 0,203, 10, 4, 0, 70, 0, 9, 0,192, 10,167, 1, 8, 0,167, 1, 0, 0,167, 1, 1, 0, 9, 0, 2, 0, - 9, 0,204, 10, 0, 0,233, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,205, 10,168, 1, 5, 0, 7, 0,206, 10, 4, 0,207, 10, - 4, 0,208, 10, 4, 0, 69, 1, 4, 0, 19, 0,169, 1, 6, 0, 7, 0,209, 10, 7, 0,210, 10, 7, 0,211, 10, 7, 0,212, 10, - 4, 0, 17, 0, 4, 0, 19, 0,170, 1, 5, 0, 7, 0,146, 8, 7, 0,147, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2, -171, 1, 5, 0,170, 1, 2, 0, 4, 0, 54, 0, 7, 0,213, 10, 7, 0,146, 8, 7, 0,147, 8,172, 1, 4, 0, 2, 0,214, 10, - 2, 0,215, 10, 2, 0,216, 10, 2, 0,217, 10,173, 1, 2, 0, 42, 0,148, 6, 26, 0,195, 8,174, 1, 3, 0, 24, 0,218, 10, - 4, 0, 19, 0, 4, 0, 37, 0,175, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,219, 10, 7, 0, 37, 0, 2, 0,246, 0, - 2, 0,220, 10,176, 1, 5, 0, 7, 0,221, 2, 7, 0, 87, 8, 2, 0,220, 10, 2, 0,136, 1, 15, 1, 4, 8,177, 1, 9, 0, -177, 1, 0, 0,177, 1, 1, 0, 27, 0,151, 6, 0, 0,221, 10, 4, 0,222, 10, 4, 0,223, 10, 4, 0, 90, 0, 4, 0, 37, 0, - 0, 0,233, 3,178, 1, 6, 0, 12, 0, 39, 9, 0, 0,224, 10, 7, 0, 61, 0, 7, 0,205, 10, 4, 0, 17, 0, 4, 0, 19, 0, -179, 1, 3, 0, 7, 0,225, 10, 4, 0, 19, 0, 4, 0, 37, 0,180, 1, 15, 0,180, 1, 0, 0,180, 1, 1, 0, 79, 1, 25, 9, -178, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,179, 1,226, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, - 4, 0,222, 10, 0, 0,221, 10, 4, 0,227, 10, 7, 0,228, 10,181, 1, 2, 0, 0, 0,229, 10, 0, 0,230, 10,182, 1, 4, 0, -182, 1, 0, 0,182, 1, 1, 0,160, 0, 50, 3, 12, 0,231, 10,183, 1, 24, 0,183, 1, 0, 0,183, 1, 1, 0, 12, 0,232, 10, -160, 0,120, 8,182, 1,233, 10, 12, 0,234, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,205, 10, 7, 0,235, 10, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0, 87, 9, 7, 0, 88, 9, 7, 0,236, 2, 7, 0, 91, 9, 7, 0,122, 8, 7, 0, 92, 9, 2, 0,236, 10, - 2, 0,237, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,184, 1, 6, 0,184, 1, 0, 0,184, 1, 1, 0, - 12, 0,232, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,185, 1, 10, 0,185, 1, 0, 0,185, 1, 1, 0, 27, 0,151, 6, - 0, 0,238, 10, 4, 0,223, 10, 4, 0,239, 10, 0, 0,221, 10, 4, 0,222, 10, 2, 0, 19, 0, 2, 0,240, 10,186, 1, 7, 0, -186, 1, 0, 0,186, 1, 1, 0, 12, 0,241, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,242, 10, 4, 0,243, 10,187, 1, 5, 0, -187, 1, 0, 0,187, 1, 1, 0, 0, 0,221, 10, 4, 0,222, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,244, 10, -182, 1,233, 10, 12, 0,245, 10,183, 1,246, 10, 12, 0,247, 10, 12, 0,248, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,249, 10, - 2, 0,250, 10, 7, 0,251, 10,188, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,189, 1, 5, 0,189, 1, 0, 0,189, 1, 1, 0, - 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,190, 1, 6, 0,189, 1,252, 10, 32, 0, 45, 0, 4, 0,253, 10, 7, 0,254, 10, - 4, 0,255, 10, 4, 0, 14, 9,191, 1, 3, 0,189, 1,252, 10, 4, 0,253, 10, 7, 0, 0, 11,192, 1, 8, 0,189, 1,252, 10, - 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 1, 11, 7, 0, 17, 3, 7, 0,189, 8, 4, 0,253, 10, 4, 0, 2, 11,193, 1, 5, 0, -189, 1,252, 10, 7, 0, 3, 11, 7, 0, 6, 8, 7, 0,242, 2, 7, 0, 57, 0,194, 1, 3, 0,189, 1,252, 10, 7, 0,189, 8, - 7, 0, 4, 11,140, 1, 4, 0, 7, 0, 5, 11, 7, 0, 37, 10, 2, 0, 6, 11, 2, 0, 69, 1,195, 1, 14, 0,195, 1, 0, 0, -195, 1, 1, 0, 12, 0, 7, 11, 12, 0, 8, 11, 12, 0, 9, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 10, 11, - 7, 0, 11, 11, 4, 0,255, 10, 4, 0, 14, 9, 7, 0,242, 3, 7, 0,244, 2,146, 1, 23, 0, 4, 0,253, 10, 4, 0, 12, 11, - 7, 0, 13, 11, 7, 0, 57, 0, 7, 0, 14, 11, 7, 0,240, 2, 7, 0, 5, 11, 7, 0, 15, 11, 7, 0,221, 2, 7, 0, 16, 11, - 7, 0,120, 4, 7, 0, 17, 11, 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 22, 11, 7, 0, 23, 11, - 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 26, 11, 7, 0, 27, 11, 12, 0, 28, 11,121, 0, 34, 0,120, 0, 29, 11,196, 1, 30, 11, - 67, 0, 31, 11, 67, 0, 66, 10, 67, 0, 32, 11,197, 1, 33, 11, 48, 0,165, 0, 48, 0, 34, 11, 48, 0, 35, 11, 7, 0, 36, 11, - 7, 0, 37, 11, 7, 0, 38, 11, 7, 0, 39, 11, 7, 0, 40, 11, 7, 0, 26, 9, 7, 0, 41, 11, 7, 0,170, 1, 7, 0, 42, 11, - 4, 0, 43, 11, 4, 0, 44, 11, 4, 0, 45, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, - 4, 0, 49, 11, 7, 0,221, 2, 4, 0, 50, 11, 7, 0, 51, 11, 4, 0, 52, 11,137, 0, 53, 11, 12, 0, 54, 11,169, 0, 56, 4, -122, 0, 11, 0,120, 0, 29, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 26, 9, 7, 0, 55, 11, 7, 0, 56, 11, 2, 0, 57, 11, - 2, 0, 58, 11, 2, 0, 59, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 29, 11,139, 0, 14, 3,141, 0, 16, 3, - 7, 0,227, 8, 7, 0, 60, 11, 7, 0, 61, 11, 7, 0, 66, 1, 7, 0, 62, 11, 4, 0, 48, 9, 4, 0, 12, 3, 2, 0, 17, 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,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, 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,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, + 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,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, 44,231, 0, 0, 48,112, 27, 29, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, + 78, 65, 77, 69, 68, 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,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, +116,101,112,115, 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, 42,117,110,100, +111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, + 97,108, 0,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,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, 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, 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,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,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,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, 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,116,111,111,108, 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, 99, 97,109,101,114, 97, 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, +115,111,117,110,100, 95,104, 97,110,100,108,101,115, 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,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,114,102,108, 97,103, 0, +118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0,118,105,101,119, 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,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, 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,103,114,105,100,118, +105,101,119, 0,112, 97,100,102, 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,116,119,100,114, 97,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, 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,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, 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,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,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, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 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,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 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,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, +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,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,111,117,110,100, 95,104, 97,110,100,108,101, 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,109,111,100,117,108,101, 91, 54, 52, 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, 49, 91, 50, 93, 0, +112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121,109, 97,100,101, 0, +112, 97,100, 50, 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, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, 0,109, 97,120, 0, +118,105,115,105,102, 97, 99, 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,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, 42, +115,111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103,101,100, 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, 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, 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, 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,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99, +116,110,114, 0, 97, 99,116,119,105,100,116,104, 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,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, 42,115,101,108,105, +110, 0, 42,115,101,108,111,117,116, 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,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,111,102,102,115,101,116, 91, + 50, 93, 0, 99,108,111,110,101, 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, 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,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, 97,108,105,118,101, + 0,108,111,111,112, 0,104, 97,105,114, 95,105,110,100,101,120, 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, +102,108, 97,103, 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, 91, 51, 93, 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,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,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,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97, +117,108,116, 99,111,110,102, 0,100,101,102, 97,117,108,116, 97, 99,116,109, 97,112, 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,108, 97,115,116, 95,116,121,112,101, 0,108, 97,115,116, 95, +118, 97,108, 0,108, 97,115,116, 95, 99,108,105, 99,107, 95,116,105,109,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, 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,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, 93, 0,112, +114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107,101,121,109, 97,112, + 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114,101,101, 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, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 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, 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, 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, +198, 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,105, 0, +118,101, 99, 50,102, 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, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, + 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, + 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, + 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, + 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, + 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, + 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102, +105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, + 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, + 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, + 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, + 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, + 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, + 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, + 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, + 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, + 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, + 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97,114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, + 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, + 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101, +118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116, +111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, + 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101, +115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101, +102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110, +115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97, +112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, + 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, + 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, + 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, + 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, + 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108, +105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, + 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, + 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, + 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, + 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, + 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101, +115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, + 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, + 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97, +108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102, +108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, + 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, + 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, + 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102, +105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, + 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, + 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, + 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32, +104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98, +101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, + 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, + 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, + 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, + 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, + 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, + 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, + 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, + 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, + 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, + 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62, +116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102, +108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, + 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, + 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, + 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111, +116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99, +101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, + 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, + 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, + 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, + 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, + 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, + 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100, +105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105, +110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100,105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101, +100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111,105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, + 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108, +105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101,109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, + 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32,115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111, +114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32,117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, + 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97,116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, + 69,216, 24, 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, 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, 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,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, 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, 83,111,117,110,100, 72, 97,110,100,108,101, 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, 77,111,116,105,111,110, 80, + 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 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, 77,105,110, 77, 97,120, 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, 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, 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, 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, 70, 77,111,100, 95, 83,111,117,110,100, 0, 68,114,105,118,101,114, 84, 97,114, +103,101,116, 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, + 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,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, + 40, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 32, 1,248, 0,136, 0, +248, 1, 56, 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,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, + 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, + 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, + 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, + 0, 0, 88, 0, 8, 0, 8, 0, 16, 1,104, 0,240, 1, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, + 48, 0, 0, 0,144, 0, 88, 0,104, 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,224, 1, 40, 0,184, 0,152, 0, 40, 0, 64, 0, 24, 0, 88, 0, 64, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, + 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 64, 0,120, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0, + 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1, +104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, + 40, 0,136, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 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, 52, 0, 0, 1, 32, 1,200, 1, + 8, 1, 48, 1, 64, 0, 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,224, 0, 40, 0, 40, 1,200, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, + 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, + 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 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, 40, 0, 8, 0, 8, 0, 64, 0, + 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, + 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1, +232, 0,168, 0, 72, 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, 24, 0,112, 0, 40, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,104, 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,140, 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, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, + 7, 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, 37, 0, 32, 0,164, 0, 7, 0, 16, 1, + 4, 0, 17, 1, 0, 0, 18, 1, 7, 0, 19, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 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, 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,242, 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, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, + 4, 0,125, 0, 4, 0,126, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0,189, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, + 47, 0,238, 0, 53, 0, 59, 1, 55, 0, 11, 1, 56, 0, 60, 1, 30, 0,150, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, + 0, 0,181, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, + 7, 0, 68, 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, 69, 1, + 2, 0,175, 0, 2, 0, 70, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 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,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 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, 2, 0,121, 1, 4, 0,122, 1, 4, 0,123, 1, + 2, 0,124, 1, 2, 0,125, 1, 2, 0,126, 1, 2, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, + 2, 0,132, 1, 2, 0,133, 1, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0, 64, 0, 2, 0, + 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,137, 1, 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, 2, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, + 2, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 4, 0,154, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 2, 0,155, 1, 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 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, 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, 65, 0,176, 1, 7, 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, 2, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 0, 0,187, 1, 0, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, + 2, 0,191, 1, 2, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 2, 0,197, 1, 2, 0,198, 1, + 4, 0, 69, 1, 4, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 7, 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, + 0, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 4, 0,218, 1, 0, 0,219, 1, 0, 0,104, 1, 0, 0,220, 1, + 0, 0, 63, 1, 2, 0,221, 1, 2, 0,222, 1, 2, 0,135, 1, 2, 0,223, 1, 2, 0,224, 1, 2, 0,225, 1, 7, 0,226, 1, + 7, 0,227, 1, 7, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,231, 1, 55, 0,232, 1, + 0, 0,233, 1, 0, 0,234, 1, 0, 0,235, 1, 0, 0,236, 1, 2, 0,237, 1, 2, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, + 51, 0,134, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,241, 1, 30, 0,150, 0, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, + 7, 0,245, 1, 7, 0,246, 1, 2, 0,247, 1, 2, 0, 70, 0, 7, 0,248, 1, 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, 2, 0, 1, 2, 2, 0, 2, 2, 4, 0, 3, 2, + 4, 0,121, 1, 12, 0, 4, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 5, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, + 70, 0, 0, 0, 70, 0, 1, 0, 71, 0, 6, 2, 4, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, + 4, 0, 12, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 13, 2, 2, 0, 14, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, + 7, 0, 15, 2, 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, 23, 0, + 7, 0, 22, 2, 7, 0, 23, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, 12, 0, 24, 2, 12, 0, 25, 2, + 12, 0, 26, 2, 36, 0, 80, 0, 66, 0, 27, 2, 0, 0, 19, 0, 0, 0, 28, 2, 2, 0, 29, 2, 2, 0,174, 0, 2, 0, 37, 0, + 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 7, 0, 30, 2, 7, 0, 31, 2, 7, 0, 32, 2, 70, 0, 33, 2, 35, 0, 11, 0, + 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 37, 2, 0, 0, 38, 2, 0, 0, 39, 2, + 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2, 34, 0, 7, 0, 7, 0, 43, 2, 7, 0, 35, 2, 7, 0, 36, 2, 2, 0, 39, 2, + 2, 0, 42, 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, 44, 2, + 2, 0, 42, 2, 2, 0, 19, 0, 2, 0, 45, 2, 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, 7, 0, 53, 2, 7, 0, 54, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 55, 2, 2, 0, 56, 2, + 4, 0, 57, 2, 74, 0, 5, 0, 2, 0, 58, 2, 2, 0, 44, 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, 59, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 6, 2, + 12, 0, 60, 2, 12, 0, 25, 2, 12, 0, 61, 2, 32, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 36, 0, 80, 0, 77, 0, 65, 2, + 38, 0, 66, 2, 66, 0, 27, 2, 12, 0, 67, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, 2, 0,174, 0, 2, 0, 43, 0, + 2, 0, 68, 2, 2, 0, 69, 2, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 70, 0, 2, 0, 72, 2, 2, 0, 29, 2, 2, 0, 19, 0, + 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 77, 2, 2, 0, 78, 2, + 4, 0, 79, 2, 34, 0, 80, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 81, 2, 7, 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, + 0, 0, 92, 2, 78, 0, 93, 2, 79, 0, 94, 2, 0, 0, 95, 2, 68, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, + 4, 0,100, 2, 7, 0,101, 2, 4, 0,102, 2, 4, 0,103, 2, 75, 0,104, 2, 4, 0,105, 2, 4, 0,106, 2, 74, 0,107, 2, + 74, 0,108, 2, 80, 0, 40, 0, 27, 0, 31, 0, 71, 0, 6, 2, 12, 0,109, 2, 36, 0, 80, 0, 38, 0, 66, 2, 66, 0, 27, 2, + 81, 0,110, 2, 82, 0,111, 2, 83, 0,112, 2, 84, 0,113, 2, 85, 0,114, 2, 86, 0,115, 2, 87, 0,116, 2, 88, 0,117, 2, + 80, 0,118, 2, 89, 0,119, 2, 90, 0,120, 2, 91, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 4, 0, 54, 0, 4, 0,124, 2, + 4, 0,125, 2, 4, 0,126, 2, 4, 0,127, 2, 2, 0,174, 0, 2, 0,128, 2, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 65, 1, + 7, 0,129, 2, 4, 0, 68, 2, 2, 0,130, 2, 2, 0, 19, 0, 2, 0,131, 2, 2, 0,132, 2, 2, 0, 29, 2, 2, 0,133, 2, + 92, 0,134, 2, 93, 0,135, 2, 83, 0, 8, 0, 9, 0,136, 2, 7, 0,137, 2, 4, 0,138, 2, 0, 0, 19, 0, 0, 0,139, 2, + 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 81, 0, 7, 0, 4, 0,142, 2, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, + 2, 0, 44, 2, 0, 0,146, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,142, 2, 4, 0,143, 2, 0, 0,147, 2, 0, 0,148, 2, + 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,149, 2, 7, 0, 36, 2, 86, 0, 3, 0, 94, 0,150, 2, 4, 0,151, 2, 4, 0, 19, 0, + 84, 0, 6, 0, 7, 0,152, 2, 2, 0,153, 2, 2, 0, 44, 2, 0, 0, 19, 0, 0, 0,148, 2, 0, 0, 70, 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,136, 2, 0, 0, 19, 0, 0, 0,139, 2, + 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, 96, 0, 1, 0, 7, 0,154, 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,155, 2, 89, 0, 2, 0, 4, 0,156, 2, 4, 0, 17, 0, + 82, 0, 7, 0, 7, 0,137, 2, 47, 0,136, 2, 0, 0, 19, 0, 0, 0,139, 2, 2, 0, 69, 1, 2, 0,140, 2, 2, 0,141, 2, + 98, 0, 1, 0, 7, 0,157, 2, 99, 0, 1, 0, 4, 0,158, 2,100, 0, 1, 0, 0, 0,159, 2,101, 0, 1, 0, 7, 0,137, 2, +102, 0, 3, 0, 4, 0,160, 2, 0, 0, 92, 0, 7, 0,161, 2,104, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, + 7, 0,184, 0,105, 0, 1, 0,104, 0,138, 2,106, 0, 5, 0, 4, 0,162, 2, 4, 0,163, 2, 0, 0, 19, 0, 0, 0, 44, 2, + 0, 0, 70, 2,107, 0, 2, 0, 4, 0,164, 2, 4, 0,163, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,165, 2, +105, 0,166, 2,107, 0,167, 2, 4, 0, 54, 0, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 37, 0, 84, 0,168, 2, 92, 0, 14, 0, + 12, 0,169, 2, 84, 0,168, 2, 0, 0,170, 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, 19, 0, 91, 0,121, 2, 91, 0,123, 2, 2, 0,177, 2, 0, 0,178, 2, 93, 0, 8, 0, 4, 0,179, 2, + 4, 0,180, 2, 81, 0,181, 2, 85, 0,182, 2, 4, 0,125, 2, 4, 0,124, 2, 4, 0, 54, 0, 4, 0, 37, 0,109, 0, 7, 0, +109, 0, 0, 0,109, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,183, 2,110, 0, 7, 0, +109, 0,184, 2, 2, 0,185, 2, 2, 0,169, 2, 2, 0,186, 2, 2, 0, 90, 0, 9, 0,187, 2, 9, 0,188, 2,111, 0, 3, 0, +109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0,112, 0, 5, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,189, 2, + 0, 0,190, 2,113, 0, 5, 0,109, 0,184, 2, 7, 0, 88, 0, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2,114, 0, 5, 0, +109, 0,184, 2, 32, 0,194, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0,115, 0, 13, 0,109, 0,184, 2, 32, 0,195, 2, + 32, 0,196, 2, 32, 0,197, 2, 32, 0,198, 2, 7, 0,199, 2, 7, 0,200, 2, 7, 0,191, 2, 7, 0,201, 2, 4, 0,202, 2, + 4, 0,203, 2, 4, 0, 90, 0, 4, 0,204, 2,116, 0, 5, 0,109, 0,184, 2, 2, 0,205, 2, 2, 0, 19, 0, 7, 0,206, 2, + 32, 0,207, 2,117, 0, 3, 0,109, 0,184, 2, 7, 0,208, 2, 4, 0, 90, 0,118, 0, 10, 0,109, 0,184, 2, 7, 0,209, 2, + 4, 0,210, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,211, 2, 2, 0,212, 2, 2, 0,213, 2, 7, 0,214, 2, 0, 0,215, 2, +119, 0, 3, 0,109, 0,184, 2, 7, 0, 37, 0, 4, 0, 17, 0,120, 0, 6, 0,109, 0,184, 2,121, 0,216, 2,122, 0,217, 2, +123, 0,218, 2, 7, 0,219, 2, 4, 0, 17, 0,124, 0, 11, 0,109, 0,184, 2, 52, 0,220, 2, 7, 0,221, 2, 4, 0,222, 2, + 0, 0,215, 2, 7, 0,223, 2, 4, 0,224, 2, 32, 0,225, 2, 0, 0,226, 2, 4, 0,227, 2, 4, 0, 37, 0,125, 0, 10, 0, +109, 0,184, 2, 32, 0,228, 2, 47, 0,229, 2, 4, 0, 90, 0, 4, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 0, 0,226, 2, + 4, 0,227, 2, 4, 0, 37, 0,126, 0, 3, 0,109, 0,184, 2, 7, 0,233, 2, 4, 0,234, 2,127, 0, 5, 0,109, 0,184, 2, + 7, 0,235, 2, 0, 0,215, 2, 2, 0, 19, 0, 2, 0,236, 2,128, 0, 8, 0,109, 0,184, 2, 32, 0,164, 0, 7, 0,235, 2, + 7, 0,251, 0, 7, 0,106, 0, 0, 0,215, 2, 2, 0, 19, 0, 2, 0, 17, 0,129, 0, 21, 0,109, 0,184, 2, 32, 0,237, 2, + 0, 0,215, 2, 52, 0,220, 2, 32, 0,225, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, + 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 4, 0,224, 2, 4, 0,227, 2, 0, 0,226, 2, + 7, 0,245, 2, 7, 0,246, 2, 7, 0, 43, 0,130, 0, 7, 0,109, 0,184, 2, 2, 0,247, 2, 2, 0,248, 2, 4, 0, 70, 0, + 32, 0,164, 0, 7, 0,249, 2, 0, 0,215, 2,131, 0, 10, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,250, 2, 7, 0,251, 2, + 7, 0,252, 2, 7, 0,244, 2, 4, 0,253, 2, 4, 0,254, 2, 7, 0,255, 2, 0, 0, 20, 0,132, 0, 1, 0,109, 0,184, 2, +133, 0, 7, 0,109, 0,184, 2, 46, 0,134, 0,134, 0, 0, 3,135, 0, 1, 3,136, 0, 2, 3,137, 0, 3, 3, 12, 0, 4, 3, +138, 0, 13, 0,109, 0,184, 2, 84, 0, 5, 3, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, + 81, 0, 11, 3, 4, 0, 12, 3, 4, 0, 13, 3, 7, 0,219, 2, 7, 0, 37, 0,139, 0, 14, 3,140, 0, 7, 0,109, 0,184, 2, + 84, 0, 5, 3, 84, 0, 15, 3,141, 0, 16, 3,142, 0, 14, 3, 4, 0, 17, 3, 4, 0, 12, 3,143, 0, 4, 0,109, 0,184, 2, + 32, 0,164, 0, 4, 0, 18, 3, 4, 0, 37, 0,144, 0, 2, 0, 4, 0, 19, 3, 7, 0, 36, 2,145, 0, 2, 0, 4, 0,125, 0, + 4, 0, 20, 3,146, 0, 21, 0,109, 0,184, 2, 32, 0,164, 0, 0, 0,215, 2, 2, 0, 21, 3, 2, 0, 19, 0, 2, 0, 69, 1, + 2, 0, 37, 0, 7, 0, 22, 3, 7, 0, 23, 3, 4, 0, 54, 0, 4, 0, 24, 3,145, 0, 25, 3,144, 0, 26, 3, 4, 0, 27, 3, + 4, 0, 28, 3, 4, 0, 29, 3, 4, 0, 20, 3, 7, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, 9, 0, 33, 3,147, 0, 8, 0, +109, 0,184, 2,148, 0, 34, 3,141, 0, 16, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 37, 3, 2, 0, 19, 0, 2, 0, 57, 0, +149, 0, 8, 0,109, 0,184, 2, 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,205, 2, 2, 0, 57, 0, 7, 0, 38, 3, + 7, 0, 39, 3,150, 0, 5, 0,109, 0,184, 2, 4, 0, 40, 3, 2, 0, 19, 0, 2, 0, 41, 3, 7, 0, 42, 3,151, 0, 7, 0, +109, 0,184, 2, 84, 0, 43, 3, 4, 0, 44, 3, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 48, 3,152, 0, 3, 0, +109, 0,184, 2,153, 0, 49, 3,137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 50, 3, 32, 0, 51, 3, 0, 0, 52, 3, + 7, 0, 53, 3, 2, 0, 54, 3, 2, 0, 55, 3, 0, 0, 56, 3, 0, 0, 57, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, + 32, 0, 58, 3, 0, 0, 52, 3, 7, 0, 59, 3, 7, 0, 60, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 61, 3, 0, 0, 37, 0, +156, 0, 1, 0,109, 0,184, 2,157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 62, 3, 2, 0, 19, 0, + 2, 0, 63, 3, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 70, 0, 0, 0, 66, 3, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 17, 0, + 4, 0, 37, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 34, 0, 75, 3, + 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 76, 3, 7, 0, 77, 3,157, 0, 78, 3,158, 0, 3, 0,158, 0, 0, 0, +158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 79, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, + 39, 0, 75, 0,159, 0, 80, 3, 2, 0, 17, 0, 2, 0, 81, 3, 4, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 0, 0, 85, 3, + 32, 0, 38, 0, 32, 0, 86, 3, 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2, +160, 0, 90, 3,160, 0, 91, 3,161, 0, 92, 3, 9, 0, 2, 0,162, 0, 93, 3, 12, 0, 94, 3, 12, 0,109, 2, 12, 0, 25, 2, + 12, 0, 95, 3, 12, 0, 96, 3, 4, 0, 69, 1, 4, 0, 97, 3, 66, 0, 27, 2, 0, 0, 98, 3, 4, 0, 29, 2, 4, 0, 99, 3, + 7, 0, 64, 1, 7, 0,100, 3, 7, 0,101, 3, 7, 0,172, 0, 7, 0,102, 3, 7, 0, 65, 1, 7, 0,103, 3, 7, 0, 15, 2, + 7, 0,104, 3, 7, 0,105, 3, 7, 0,106, 3, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,251, 2, 7, 0,110, 3, + 7, 0,240, 0, 4, 0,111, 3, 2, 0, 19, 0, 2, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 2, 0,115, 3, 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, 4, 0,123, 3, 4, 0,124, 3, + 4, 0,125, 3, 4, 0,126, 3, 7, 0,127, 3, 7, 0,101, 2, 7, 0,128, 3, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, + 7, 0,132, 3, 7, 0,215, 0, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 2, 0,137, 3, 0, 0,138, 3, + 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, 7, 0,142, 3, 7, 0,143, 3, 12, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, + 12, 0,147, 3, 7, 0,148, 3, 2, 0,156, 2, 2, 0,149, 3, 7, 0,138, 2, 4, 0,150, 3, 4, 0,151, 3,163, 0,152, 3, + 2, 0,153, 3, 2, 0,247, 0, 7, 0,154, 3, 12, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3,164, 0, 61, 1, +165, 0,159, 3, 67, 0,160, 3, 2, 0,161, 3, 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 7, 0,130, 2, 2, 0,165, 3, + 2, 0,166, 3,153, 0,167, 3,141, 0,168, 3,141, 0,169, 3, 4, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0, 70, 0, + 12, 0,173, 3, 12, 0,174, 3, 12, 0,175, 3,166, 0, 14, 0,166, 0, 0, 0,166, 0, 1, 0, 32, 0, 38, 0, 7, 0,251, 2, + 7, 0, 66, 1, 7, 0,252, 2, 7, 0,244, 2, 0, 0, 20, 0, 4, 0,253, 2, 4, 0,254, 2, 4, 0,176, 3, 2, 0, 17, 0, + 2, 0,177, 3, 7, 0,255, 2,167, 0, 12, 0,167, 0, 0, 0,167, 0, 1, 0, 32, 0, 45, 0, 4, 0,178, 3, 4, 0,156, 2, + 4, 0,179, 3, 4, 0, 17, 0, 4, 0,180, 3, 7, 0, 66, 1, 7, 0,181, 3, 7, 0,182, 3, 7, 0,154, 2,164, 0, 40, 0, + 4, 0, 19, 0, 2, 0,183, 3, 2, 0,184, 3, 2, 0,244, 2, 2, 0,185, 3, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, + 2, 0,189, 3, 7, 0,190, 3, 7, 0,191, 3, 7, 0,192, 3, 7, 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, 37, 0, 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, 52, 0,165, 0,168, 0,216, 3, 7, 0,217, 3, 4, 0,193, 2, +169, 0, 5, 0, 67, 0,241, 1, 7, 0,218, 3, 7, 0,219, 3, 2, 0, 19, 0, 2, 0,220, 3,170, 0, 9, 0,170, 0, 0, 0, +170, 0, 1, 0, 4, 0,221, 3, 4, 0,222, 3, 4, 0,223, 3, 4, 0, 19, 0, 4, 0,224, 3, 9, 0,225, 3, 9, 0,226, 3, +137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0, 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, + 4, 0,231, 3, 4, 0,232, 3, 4, 0,222, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, + 0, 0,236, 3, 12, 0,237, 3,171, 0,238, 3, 9, 0,239, 3,172, 0, 1, 0, 7, 0, 43, 2,163, 0, 30, 0, 4, 0, 19, 0, + 7, 0,240, 3, 7, 0,241, 3, 7, 0,242, 3, 4, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 7, 0,247, 3, + 7, 0,248, 3, 7, 0,249, 3, 7, 0,250, 3, 7, 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, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4, 7, 0,133, 3,165, 0, 54, 0, 4, 0,222, 3, 4, 0, 12, 4, +173, 0, 13, 4,174, 0, 14, 4, 0, 0, 37, 0, 0, 0, 15, 4, 2, 0, 16, 4, 7, 0, 17, 4, 0, 0, 18, 4, 7, 0, 19, 4, + 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, + 2, 0, 28, 4, 0, 0, 29, 4, 2, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 0, 0, 33, 4, 4, 0,126, 0, 4, 0, 34, 4, + 4, 0, 35, 4, 2, 0, 36, 4, 2, 0, 37, 4,172, 0, 38, 4, 4, 0, 39, 4, 4, 0, 82, 0, 7, 0, 40, 4, 7, 0, 41, 4, + 7, 0, 42, 4, 7, 0, 43, 4, 2, 0, 44, 4, 2, 0, 45, 4, 2, 0, 46, 4, 2, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, + 2, 0, 50, 4, 2, 0, 51, 4,175, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4,137, 0, 55, 4, 12, 0, 4, 3,169, 0, 56, 4, + 7, 0, 57, 4, 7, 0, 58, 4, 7, 0, 59, 4, 0, 0, 60, 4,153, 0, 49, 0,152, 0, 61, 4, 2, 0, 17, 0, 2, 0, 62, 4, + 2, 0, 63, 4, 2, 0, 64, 4, 7, 0, 65, 4, 2, 0, 66, 4, 2, 0, 67, 4, 7, 0, 68, 4, 2, 0, 69, 4, 2, 0, 70, 4, + 7, 0, 71, 4, 7, 0, 72, 4, 7, 0, 73, 4, 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 4, 0, 77, 4, 7, 0, 78, 4, + 7, 0, 79, 4, 7, 0, 80, 4, 80, 0, 81, 4, 80, 0, 82, 4, 80, 0, 83, 4, 0, 0, 84, 4, 7, 0, 85, 4, 7, 0, 86, 4, + 36, 0, 80, 0, 2, 0, 87, 4, 0, 0, 88, 4, 0, 0, 89, 4, 7, 0, 90, 4, 4, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, + 4, 0, 94, 4, 4, 0, 19, 0, 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 84, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, + 7, 0,101, 4, 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 4, 0,106, 4,176, 0, 76, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 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, 7, 0,114, 4, 7, 0,115, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1, + 7, 0,116, 4, 4, 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,124, 4, 2, 0,125, 4, 2, 0, 69, 1, 2, 0,126, 4, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, + 2, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 7, 0,134, 4, 7, 0,135, 4, 7, 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, 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, + 2, 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, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, + 2, 0,163, 4, 2, 0,164, 4, 2, 0,165, 4, 2, 0, 19, 0, 7, 0,166, 4, 7, 0,167, 4, 36, 0, 80, 0, 51, 0,134, 1, + 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,177, 0, 8, 0,177, 0, 0, 0,177, 0, 1, 0, 4, 0,111, 3, 4, 0,168, 4, + 4, 0, 19, 0, 2, 0,169, 4, 2, 0,170, 4, 32, 0,164, 0,178, 0, 13, 0, 9, 0,171, 4, 9, 0,172, 4, 4, 0,173, 4, + 4, 0,174, 4, 4, 0,175, 4, 4, 0,176, 4, 4, 0,177, 4, 4, 0,178, 4, 4, 0,179, 4, 4, 0,180, 4, 4, 0,181, 4, + 4, 0, 37, 0, 0, 0,182, 4,179, 0, 5, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, 4, 0, 70, 0, 0, 0,186, 4, +180, 0, 10, 0, 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,193, 4, + 4, 0,194, 4, 4, 0,195, 4, 4, 0,196, 4,181, 0, 15, 0, 4, 0, 17, 0, 4, 0,189, 4, 4, 0,197, 4, 4, 0,198, 4, + 4, 0,199, 4, 4, 0,200, 4, 7, 0,201, 4, 4, 0,202, 4, 4, 0, 90, 0, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, + 4, 0,206, 4, 4, 0,207, 4, 26, 0, 30, 0,182, 0, 7, 0, 4, 0,208, 4, 7, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4, + 4, 0,212, 4, 2, 0, 19, 0, 2, 0, 37, 0,183, 0, 11, 0,183, 0, 0, 0,183, 0, 1, 0, 0, 0, 20, 0, 66, 0,213, 4, + 67, 0,214, 4, 4, 0,111, 3, 4, 0,215, 4, 4, 0,216, 4, 4, 0, 37, 0, 4, 0,217, 4, 4, 0,218, 4,184, 0,135, 0, +178, 0,219, 4,179, 0,220, 4,180, 0,221, 4,181, 0,222, 4, 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 34, 4, 4, 0,223, 4, + 4, 0,224, 4, 4, 0,225, 4, 4, 0,226, 4, 2, 0, 19, 0, 2, 0,227, 4, 7, 0,101, 2, 7, 0,228, 4, 7, 0,229, 4, + 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,246, 0, + 2, 0,237, 4, 2, 0,238, 4, 2, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0, 91, 1, 2, 0,106, 0, 2, 0,242, 4, + 2, 0,243, 4, 2, 0,244, 4, 2, 0,245, 4, 2, 0,246, 4, 2, 0,247, 4, 2, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, + 2, 0, 92, 1, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 4, 0,255, 4, 4, 0, 69, 1, 4, 0, 0, 5, + 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0,121, 1, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, + 24, 0, 8, 5, 24, 0, 9, 5, 23, 0, 10, 5, 12, 0, 11, 5, 2, 0, 12, 5, 2, 0, 37, 0, 7, 0, 13, 5, 7, 0, 14, 5, + 7, 0, 15, 5, 7, 0, 16, 5, 4, 0, 17, 5, 7, 0, 18, 5, 7, 0, 19, 5, 7, 0, 20, 5, 7, 0, 21, 5, 2, 0, 22, 5, + 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 2, 0, 27, 5, 7, 0, 28, 5, 7, 0, 29, 5, 7, 0, 30, 5, + 2, 0, 31, 5, 2, 0, 32, 5, 2, 0, 33, 5, 2, 0, 34, 5, 2, 0, 35, 5, 2, 0, 36, 5, 2, 0, 37, 5, 2, 0, 38, 5, + 2, 0, 39, 5, 2, 0, 40, 5, 4, 0, 41, 5, 4, 0, 42, 5, 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 7, 0, 46, 5, + 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, 7, 0, 51, 5, 7, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, + 7, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 7, 0, 58, 5, 7, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, + 2, 0, 63, 5, 2, 0,238, 1, 0, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, 4, 0, 67, 5, 4, 0, 68, 5, 7, 0, 69, 5, + 7, 0, 70, 5, 2, 0, 71, 5, 2, 0, 72, 5, 7, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 4, 0, 76, 5, 2, 0, 77, 5, + 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 80, 5, 7, 0, 81, 5, 7, 0, 70, 0, 42, 0, 82, 5, 0, 0, 83, 5,185, 0, 9, 0, +185, 0, 0, 0,185, 0, 1, 0, 0, 0, 20, 0, 2, 0, 84, 5, 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 43, 0, 7, 0, 87, 5, + 7, 0, 70, 0,186, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, 2, 0, 88, 5, 7, 0, 89, 5, 7, 0, 70, 0, + 42, 0, 90, 5,187, 0, 5, 0, 7, 0, 91, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,188, 0, 26, 0, + 7, 0,123, 4, 7, 0,124, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 92, 5, 2, 0,136, 1, 2, 0,126, 4, 2, 0,127, 4, + 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4,187, 0, 93, 5, 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, + 2, 0,236, 4, 2, 0,246, 0, 2, 0,237, 4, 2, 0, 94, 5, 2, 0,238, 4,186, 0, 95, 5, 2, 0, 96, 5, 2, 0,240, 4, + 2, 0,243, 4, 2, 0,244, 4,189, 0, 5, 0,189, 0, 0, 0,189, 0, 1, 0, 4, 0,221, 3, 0, 0,233, 3, 4, 0, 19, 0, +190, 0, 6, 0,191, 0, 97, 5, 4, 0, 98, 5, 4, 0, 99, 5, 9, 0,100, 5, 0, 0,101, 5, 4, 0, 37, 0,192, 0, 6, 0, +190, 0,102, 5, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, 2, 0,105, 5, 9, 0,106, 5,193, 0, 4, 0, 2, 0,106, 0, + 2, 0,221, 2, 2, 0,227, 3, 2, 0,107, 5,194, 0, 14, 0, 2, 0, 19, 0, 2, 0,108, 5, 2, 0,109, 5, 2, 0,110, 5, +193, 0,111, 5, 9, 0,106, 5, 7, 0,112, 5, 7, 0, 57, 0, 4, 0,113, 5, 4, 0,114, 5, 4, 0,115, 5, 4, 0,116, 5, + 46, 0,134, 0, 32, 0,164, 0,195, 0, 4, 0,195, 0, 0, 0,195, 0, 1, 0, 0, 0,117, 5, 7, 0,118, 5,196, 0, 6, 0, +190, 0,102, 5, 7, 0,119, 5, 4, 0, 90, 0, 0, 0,120, 5, 0, 0,121, 5, 0, 0,190, 2,197, 0, 7, 0,190, 0,102, 5, + 2, 0, 69, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,122, 5, 86, 0,123, 5, 9, 0,106, 5,198, 0, 74, 0,197, 0,124, 5, +197, 0,125, 5,196, 0, 80, 3, 7, 0,126, 5, 2, 0,127, 5, 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 2, 0,227, 3, + 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, 2, 0,135, 5, 2, 0,113, 5, 2, 0,136, 5, 2, 0,137, 5, + 2, 0,138, 5, 2, 0,139, 5, 7, 0,140, 5, 7, 0,141, 5, 7, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, + 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5,192, 0,150, 5,194, 0,151, 5, 7, 0,152, 5, 7, 0,153, 5, + 7, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 0, 0,157, 5, 0, 0,158, 5, 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, + 0, 0,162, 5, 2, 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, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 2, 0,174, 5, 0, 0,175, 5, 0, 0,176, 5, 0, 0,177, 5, + 0, 0,178, 5, 32, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, + 0, 0,186, 5, 0, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, 2, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 4, 0,193, 5, + 4, 0,194, 5,199, 0, 8, 0, 4, 0,195, 5, 4, 0,196, 5, 4, 0,197, 5, 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, + 4, 0, 54, 0, 4, 0,125, 2,200, 0, 3, 0, 7, 0,201, 5, 2, 0,202, 5, 2, 0, 19, 0,201, 0, 2, 0, 7, 0,203, 5, + 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,204, 5,176, 0,205, 5, 46, 0,206, 5, 47, 0,238, 0, + 12, 0,207, 5,177, 0,208, 5, 32, 0,209, 5, 7, 0,210, 5, 7, 0,211, 5, 7, 0,212, 5, 7, 0,213, 5, 4, 0,111, 3, + 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,202, 0,214, 5,198, 0,215, 5,203, 0,216, 5,184, 0,182, 0,182, 0,217, 5, + 12, 0,100, 0, 12, 0,218, 5, 12, 0,219, 5,204, 0,220, 5, 2, 0,221, 5, 2, 0,222, 5, 2, 0,247, 0, 2, 0,223, 5, + 4, 0,224, 5, 4, 0,225, 5, 12, 0,226, 5,187, 0, 93, 5,188, 0,227, 5,200, 0,228, 5,162, 0, 93, 3,201, 0,229, 5, +205, 0, 6, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, 7, 0,230, 5,206, 0, 36, 0, + 7, 0,231, 5, 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, 76, 1, 7, 0,240, 5, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,171, 0, 2, 0,244, 5, + 2, 0,245, 5, 2, 0, 70, 2, 2, 0,246, 5, 2, 0,247, 5, 2, 0,248, 5, 2, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, + 71, 0,252, 5,162, 0, 93, 3,206, 0,253, 5,207, 0,254, 5,208, 0,255, 5,209, 0, 0, 6,210, 0, 1, 6,211, 0, 2, 6, + 7, 0, 3, 6, 2, 0, 4, 6, 2, 0, 5, 6, 4, 0,238, 1,212, 0, 54, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 7, 0,239, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 10, 6, 2, 0,248, 5, + 2, 0,249, 5, 32, 0,204, 5, 32, 0, 11, 6,205, 0, 12, 6,212, 0,253, 5, 0, 0, 13, 6, 4, 0,111, 3, 4, 0, 14, 6, + 2, 0, 15, 6, 2, 0, 70, 0, 2, 0, 16, 6, 2, 0, 17, 6, 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 18, 6, + 7, 0,112, 0, 7, 0, 19, 6, 7, 0, 20, 6, 7, 0, 21, 6, 7, 0, 22, 6, 7, 0, 23, 6, 7, 0,171, 0, 7, 0,210, 5, + 2, 0, 24, 6, 2, 0,121, 1, 2, 0, 25, 6, 2, 0, 26, 6, 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, + 2, 0, 31, 6, 2, 0, 32, 6, 4, 0, 33, 6, 12, 0, 34, 6, 2, 0, 35, 6, 2, 0,139, 2, 2, 0, 36, 6, 0, 0, 37, 6, + 0, 0, 38, 6, 9, 0, 39, 6,162, 0, 93, 3,214, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 40, 6, 23, 0, 41, 6, + 23, 0, 42, 6, 7, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 2, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, + 2, 0, 50, 6, 2, 0, 51, 6, 2, 0, 19, 0, 2, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, + 2, 0, 17, 6, 7, 0, 57, 6, 7, 0, 58, 6, 4, 0, 59, 6, 4, 0, 60, 6,213, 0, 6, 0,213, 0, 0, 0,213, 0, 1, 0, + 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,215, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,216, 0, 61, 6, 46, 0,134, 0,217, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, + 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,218, 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, 17, 6,219, 0, 20, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,207, 0,254, 5,214, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, + 2, 0, 70, 6, 2, 0, 52, 6, 2, 0, 71, 6, 0, 0, 19, 0, 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 72, 6, 4, 0, 73, 6, + 27, 0, 74, 6,220, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, +214, 0, 62, 6, 7, 0, 89, 2, 7, 0, 90, 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,162, 0, 93, 3,221, 0, 16, 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,181, 1, 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, 2, 0, 88, 6, + 2, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6,222, 0, 16, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, + 4, 0, 37, 0,221, 0, 92, 6,223, 0, 93, 6, 12, 0, 94, 6, 12, 0, 95, 6,224, 0, 96, 6,211, 0, 97, 6,225, 0, 98, 6, + 2, 0, 99, 6, 2, 0,100, 6, 2, 0,101, 6, 2, 0, 70, 0,226, 0, 17, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 12, 0,102, 6,227, 0,103, 6, 0, 0,104, 6,228, 0,105, 6, + 4, 0,106, 6, 4, 0,107, 6, 2, 0, 19, 0, 2, 0,108, 6, 2, 0,109, 6, 2, 0, 37, 0,229, 0, 29, 0,213, 0, 0, 0, +213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 47, 0,229, 2, 45, 0, 57, 1, 63, 0,110, 6, + 2, 0,133, 0, 2, 0,111, 6, 2, 0, 70, 0, 2, 0,112, 6, 4, 0, 19, 0, 2, 0,113, 6, 2, 0,114, 6, 2, 0,115, 6, + 2, 0,238, 1, 0, 0,116, 6, 0, 0,117, 6, 0, 0,118, 6, 0, 0, 17, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 78, 6, + 7, 0,121, 1, 7, 0,119, 6, 7, 0,120, 6,162, 0, 93, 3,230, 0, 11, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, + 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 65, 6, 2, 0, 19, 0, 4, 0, 37, 0,218, 0, 63, 6,214, 0, 62, 6, +231, 0, 27, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, 42, 0,121, 6, + 4, 0,122, 6, 4, 0,123, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 4, 0,127, 6, + 4, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 2, 0,131, 6, 2, 0,132, 6, 7, 0,133, 6, 23, 0,134, 6, 23, 0,135, 6, + 4, 0,136, 6, 4, 0,137, 6, 0, 0,138, 6, 0, 0,139, 6,232, 0, 10, 0, 27, 0, 31, 0, 9, 0,140, 6, 9, 0,141, 6, + 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 4, 0, 90, 0, 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,233, 0, 10, 0, +213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6,232, 0,148, 6, 2, 0, 90, 0, 2, 0,133, 0, + 4, 0, 43, 0, 9, 0,149, 6,234, 0, 8, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, +214, 0, 62, 6, 4, 0, 19, 0, 4, 0,150, 6,235, 0, 23, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, + 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6, 27, 0,151, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,152, 6, + 9, 0,153, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,154, 6, 7, 0,155, 6, 60, 0, 58, 1, 60, 0,156, 6, 4, 0,157, 6, + 2, 0,158, 6, 2, 0, 37, 0,162, 0, 93, 3,236, 0, 10, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, + 7, 0, 8, 6, 2, 0, 9, 6, 2, 0, 19, 0, 2, 0,120, 3, 4, 0, 37, 0,162, 0, 93, 3,237, 0, 42, 0,213, 0, 0, 0, +213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,223, 0, 93, 6, 0, 0, 79, 6, + 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0, 89, 6, 2, 0, 19, 0, 2, 0, 83, 6, 9, 0,153, 6, 4, 0, 86, 6, + 4, 0,159, 6, 4, 0,160, 6, 4, 0, 87, 6, 23, 0,161, 6, 23, 0,162, 6, 7, 0,163, 6, 7, 0,164, 6, 7, 0,165, 6, + 7, 0,152, 6, 2, 0,166, 6, 2, 0,237, 0, 2, 0,181, 1, 2, 0, 85, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,167, 6, + 2, 0,168, 6, 9, 0,169, 6, 9, 0,170, 6, 9, 0,171, 6, 9, 0,172, 6, 9, 0,173, 6, 2, 0,174, 6, 0, 0, 91, 6, + 57, 0,175, 6,238, 0, 7, 0,238, 0, 0, 0,238, 0, 1, 0, 4, 0,176, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,177, 6, + 4, 0, 17, 0,239, 0, 14, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, + 4, 0, 17, 0, 4, 0,178, 6, 4, 0, 19, 0, 4, 0,124, 6, 12, 0,179, 6, 12, 0,180, 6, 0, 0,181, 6, 0, 0,182, 6, +240, 0, 5, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 4, 0, 37, 0,241, 0, 7, 0,241, 0, 0, 0, +241, 0, 1, 0, 0, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, 2, 0,186, 6, 2, 0, 37, 0,242, 0, 12, 0, 2, 0,185, 6, + 2, 0,187, 6, 2, 0,188, 6, 0, 0,190, 2, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6, + 2, 0, 52, 6, 7, 0,194, 6, 7, 0,195, 6,243, 0, 18, 0,243, 0, 0, 0,243, 0, 1, 0, 0, 0,233, 3,242, 0,196, 6, +242, 0,197, 6,242, 0,198, 6,242, 0,199, 6, 7, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, + 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6,244, 0, 10, 0, 0, 0,211, 6, + 0, 0,212, 6, 0, 0,213, 6, 0, 0,214, 6, 0, 0,215, 6, 0, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6, + 2, 0, 37, 0,245, 0, 8, 0, 0, 0,220, 6, 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, 0, 0,225, 6, + 7, 0,230, 5, 7, 0, 37, 0,246, 0, 17, 0,244, 0,226, 6,244, 0,227, 6,244, 0,228, 6,244, 0,229, 6,244, 0,230, 6, +244, 0,231, 6,244, 0,232, 6,244, 0,233, 6,244, 0,234, 6,244, 0,235, 6,244, 0,236, 6,244, 0,237, 6,244, 0,238, 6, +244, 0,239, 6,244, 0,240, 6,245, 0,241, 6, 0, 0,242, 6,247, 0, 71, 0, 0, 0,243, 6, 0, 0,244, 6, 0, 0,215, 6, + 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, 0, 0,252, 6, + 0, 0,253, 6, 0, 0,254, 6, 0, 0,255, 6, 0, 0, 0, 7, 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, 92, 0,248, 0, 5, 0, 0, 0, 56, 7, 0, 0, 11, 7, 0, 0, 13, 7, + 2, 0, 19, 0, 2, 0, 37, 0,249, 0, 24, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0, 20, 0,246, 0, 57, 7,247, 0, 58, 7, +247, 0, 59, 7,247, 0, 60, 7,247, 0, 61, 7,247, 0, 62, 7,247, 0, 63, 7,247, 0, 64, 7,247, 0, 65, 7,247, 0, 66, 7, +247, 0, 67, 7,247, 0, 68, 7,247, 0, 69, 7,247, 0, 70, 7,247, 0, 71, 7,247, 0, 72, 7,247, 0, 73, 7,247, 0, 74, 7, +248, 0, 75, 7, 4, 0, 76, 7, 4, 0, 37, 0,250, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 77, 7, + 7, 0, 43, 2,251, 0, 73, 0, 4, 0, 19, 0, 4, 0, 78, 7, 4, 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, 2, 0, 89, 7, 2, 0, 90, 7, + 4, 0, 91, 7, 4, 0, 92, 7, 4, 0, 93, 7, 4, 0, 94, 7, 2, 0, 95, 7, 2, 0, 96, 7, 4, 0, 97, 7, 4, 0, 98, 7, + 4, 0, 99, 7, 4, 0,100, 7, 4, 0,101, 7, 4, 0,179, 6, 4, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7, + 2, 0,106, 7, 12, 0,107, 7, 12, 0,108, 7, 12, 0,109, 7, 12, 0,110, 7, 0, 0,111, 7, 2, 0,112, 7, 2, 0,113, 7, + 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7,250, 0,120, 7, 2, 0,121, 7, + 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, 2, 0,125, 7, 2, 0,126, 7, 2, 0,127, 7, 2, 0,128, 7, 4, 0,129, 7, + 4, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, + 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 2, 0,141, 7, 2, 0,142, 7, 0, 0,143, 7, 0, 0,144, 7, 7, 0,145, 7, + 2, 0,155, 5, 2, 0,156, 5, 55, 0,146, 7,216, 0, 21, 0, 27, 0, 31, 0, 12, 0,147, 7, 12, 0,148, 7, 12, 0,149, 7, + 12, 0, 6, 6, 46, 0,134, 0, 46, 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, 2, 0, 37, 0, 2, 0,158, 7, 2, 0,159, 7, 4, 0, 70, 0,211, 0,160, 7, 9, 0,161, 7, + 2, 0,162, 7,252, 0, 5, 0,252, 0, 0, 0,252, 0, 1, 0,252, 0,163, 7, 13, 0,164, 7, 4, 0, 19, 0,253, 0, 7, 0, +253, 0, 0, 0,253, 0, 1, 0,252, 0,165, 7,252, 0,166, 7, 2, 0, 9, 5, 2, 0, 19, 0, 4, 0, 37, 0,254, 0, 25, 0, +254, 0, 0, 0,254, 0, 1, 0,255, 0,167, 7, 0, 1, 98, 6, 0, 0,168, 7, 0, 0,169, 7, 0, 0,170, 7, 2, 0,171, 7, + 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,176, 7, 2, 0,177, 7, + 2, 0,178, 7, 4, 0,179, 7,254, 0,180, 7, 9, 0,181, 7, 4, 0,182, 7, 4, 0,183, 7, 4, 0,184, 7, 4, 0,185, 7, + 0, 0,186, 7, 1, 1, 22, 0, 1, 1, 0, 0, 1, 1, 1, 0,252, 0,165, 7,252, 0,166, 7,252, 0,187, 7,252, 0,188, 7, +216, 0,189, 7, 23, 0, 52, 0, 0, 0, 7, 6, 0, 0,190, 7, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0,191, 7, 2, 0, 37, 0, + 2, 0,154, 7, 2, 0,177, 6, 2, 0, 19, 0, 2, 1,167, 7, 12, 0,192, 7, 12, 0, 6, 6, 12, 0,193, 7, 12, 0,194, 7, + 3, 1, 21, 0, 3, 1, 0, 0, 3, 1, 1, 0,214, 0, 62, 6, 23, 0,195, 7, 23, 0,196, 7, 2, 0, 53, 6, 2, 0, 54, 6, + 2, 0,197, 7, 2, 0,198, 7, 2, 0,199, 7, 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,153, 7, 2, 0,157, 7, 4, 0, 43, 0, + 4, 1,167, 7, 12, 0,200, 7, 12, 0,201, 7, 12, 0,193, 7, 0, 0,202, 7, 9, 0,203, 7, 5, 1, 12, 0, 0, 0,204, 7, + 2, 0,205, 7, 2, 0,206, 7, 2, 0,207, 7, 2, 0,208, 7, 2, 0,252, 4, 2, 0,247, 4,216, 0,209, 7, 46, 0,210, 7, + 4, 0,211, 7, 4, 0,212, 7, 0, 0, 35, 0, 6, 1, 1, 0, 0, 0,213, 7, 7, 1, 8, 0, 57, 0,214, 7, 57, 0,215, 7, + 7, 1,216, 7, 7, 1,217, 7, 7, 1,218, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,219, 7, 8, 1, 4, 0, 4, 0,122, 6, + 4, 0,220, 7, 4, 0,127, 6, 4, 0,221, 7, 9, 1, 2, 0, 4, 0,222, 7, 4, 0,223, 7, 10, 1, 7, 0, 7, 0,224, 7, + 7, 0,225, 7, 7, 0,226, 7, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,118, 4, 7, 0,227, 7, 11, 1, 6, 0, 0, 0,228, 7, + 0, 0, 81, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,251, 4, 4, 0, 37, 0, 12, 1, 21, 0, 12, 1, 0, 0, 12, 1, 1, 0, + 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,229, 7, 4, 0,230, 7, 4, 0,231, 7, 6, 1,232, 7, 0, 0,228, 7, + 4, 0,233, 7, 4, 0,234, 7, 11, 1, 87, 3, 8, 1,235, 7, 9, 1,236, 7, 10, 1,237, 7, 7, 1,238, 7, 7, 1,239, 7, + 7, 1,240, 7, 57, 0,241, 7, 57, 0,242, 7, 13, 1, 12, 0, 0, 0, 5, 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,243, 7, 9, 0,244, 7, 9, 0,232, 0, 9, 0,234, 0, + 14, 1, 43, 0, 14, 1, 0, 0, 14, 1, 1, 0, 9, 0,245, 7, 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,246, 7, 4, 0,247, 7, 4, 0,230, 7, 4, 0,231, 7, 4, 0,248, 7, 4, 0,246, 0, + 4, 0,249, 7, 4, 0,250, 7, 7, 0,251, 7, 7, 0,252, 7, 4, 0,126, 0, 4, 0,253, 7, 12, 1,254, 7, 36, 0, 80, 0, + 46, 0,134, 0, 49, 0,137, 0, 7, 0,255, 7, 7, 0, 0, 8, 13, 1, 59, 1, 14, 1, 1, 8, 14, 1, 2, 8, 14, 1, 3, 8, + 12, 0, 4, 8, 15, 1, 5, 8, 16, 1, 6, 8, 7, 0, 7, 8, 7, 0, 8, 8, 4, 0, 9, 8, 7, 0, 10, 8, 9, 0, 11, 8, + 4, 0, 12, 8, 4, 0, 13, 8, 4, 0, 14, 8, 7, 0, 15, 8, 17, 1, 4, 0, 17, 1, 0, 0, 17, 1, 1, 0, 12, 0, 16, 8, + 14, 1, 17, 8,202, 0, 6, 0, 12, 0, 18, 8, 12, 0, 4, 8, 12, 0, 19, 8, 14, 1, 20, 8, 0, 0, 21, 8, 0, 0, 22, 8, + 18, 1, 4, 0, 7, 0, 23, 8, 7, 0,109, 0, 2, 0, 24, 8, 2, 0, 25, 8, 19, 1, 6, 0, 7, 0, 26, 8, 7, 0, 27, 8, + 7, 0, 28, 8, 7, 0, 29, 8, 4, 0, 30, 8, 4, 0, 31, 8, 20, 1, 13, 0, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, + 7, 0, 35, 8, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8, 7, 0, 41, 8, 4, 0,233, 2, + 4, 0, 42, 8, 4, 0, 43, 8, 21, 1, 2, 0, 7, 0, 91, 5, 7, 0, 37, 0, 22, 1, 5, 0, 7, 0, 44, 8, 7, 0, 45, 8, + 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 46, 8, 23, 1, 6, 0, 23, 1, 0, 0, 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0, 47, 8, 2, 0, 57, 0, 24, 1, 8, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 47, 8, + 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 25, 1, 45, 0, 25, 1, 0, 0, 25, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0, 47, 8, 2, 0,242, 0, 2, 0, 28, 4, 2, 0, 48, 8, 7, 0, 49, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 50, 8, + 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 51, 8, 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 54, 8, 7, 0, 55, 8, 7, 0, 56, 8, + 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 57, 8, 7, 0, 58, 8, 7, 0, 37, 0, 7, 0, 59, 8, 7, 0, 60, 8, 7, 0, 61, 8, + 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 68, 8, 2, 0, 69, 8, + 2, 0, 28, 2, 2, 0, 70, 8, 2, 0, 25, 2, 2, 0, 71, 8, 0, 0, 72, 8, 0, 0, 73, 8, 7, 0,240, 0, 26, 1, 74, 8, + 67, 0,241, 1, 27, 1, 16, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 47, 8, 2, 0,242, 0, + 7, 0,238, 2, 7, 0,239, 2, 7, 0,240, 2, 7, 0, 74, 2, 7, 0,241, 2, 7, 0,242, 2, 7, 0, 75, 8, 7, 0,243, 2, + 7, 0,245, 2, 7, 0,246, 2,228, 0, 5, 0, 2, 0, 17, 0, 2, 0,219, 7, 2, 0, 19, 0, 2, 0, 76, 8, 27, 0,151, 6, +227, 0, 3, 0, 4, 0, 69, 0, 4, 0, 77, 8,228, 0, 2, 0, 28, 1, 7, 0, 28, 1, 0, 0, 28, 1, 1, 0, 0, 0, 20, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 78, 8, 29, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 79, 8, + 4, 0, 80, 8, 4, 0, 37, 0, 30, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 31, 1, 4, 0, + 0, 0, 20, 0, 66, 0, 81, 8, 7, 0, 76, 1, 7, 0, 37, 0, 32, 1, 6, 0, 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 17, 0, + 2, 0, 84, 8, 0, 0, 85, 8, 0, 0, 86, 8, 33, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 87, 8, + 0, 0, 88, 8, 34, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 35, 1, 4, 0, 2, 0, 89, 8, 2, 0, 90, 8, + 2, 0, 19, 0, 2, 0, 37, 0, 36, 1, 6, 0, 0, 0, 20, 0, 0, 0, 91, 8, 2, 0, 92, 8, 2, 0,243, 2, 2, 0, 69, 1, + 2, 0, 70, 0, 37, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,120, 4, 2, 0, 19, 0, 2, 0,205, 2, 38, 1, 3, 0, + 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 89, 8, 39, 1, 7, 0, 0, 0, 20, 0, 7, 0,120, 4, 0, 0, 93, 8, 0, 0, 94, 8, + 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 95, 8, 40, 1, 4, 0, 0, 0, 96, 8, 0, 0, 97, 8, 4, 0, 17, 0, 7, 0,209, 2, + 41, 1, 3, 0, 32, 0, 98, 8, 0, 0, 99, 8, 0, 0,100, 8, 42, 1, 18, 0, 42, 1, 0, 0, 42, 1, 1, 0, 2, 0, 17, 0, + 2, 0,101, 8, 2, 0, 19, 0, 2, 0,102, 8, 2, 0,103, 8, 2, 0,104, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, + 9, 0, 2, 0, 43, 1,105, 8, 32, 0, 45, 0, 2, 0,107, 5, 2, 0, 7, 8, 2, 0,106, 8, 2, 0, 37, 0, 44, 1, 11, 0, + 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,107, 8, 2, 0, 19, 0, 2, 0,205, 2, 2, 0,108, 8, 4, 0,109, 8, 4, 0,110, 8, + 4, 0,111, 8, 4, 0,112, 8, 4, 0,113, 8, 45, 1, 1, 0, 0, 0,114, 8, 46, 1, 4, 0, 42, 0,121, 6, 0, 0,115, 8, + 4, 0, 69, 1, 4, 0, 19, 0, 43, 1, 18, 0, 43, 1, 0, 0, 43, 1, 1, 0, 43, 1,116, 8, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,117, 8, 2, 0,104, 8, 2, 0,101, 8, 2, 0,118, 8, 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, + 47, 1,105, 8, 42, 1,119, 8, 2, 0, 15, 0, 2, 0,120, 8, 4, 0,121, 8, 48, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, + 32, 0, 45, 0, 49, 1, 12, 0,160, 0,122, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 49, 8, 4, 0, 89, 0, 0, 0, 20, 0, + 0, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, 2, 0,126, 8, 2, 0,127, 8, 7, 0,128, 8, 50, 1, 13, 0, 2, 0, 19, 0, + 2, 0,129, 8, 4, 0, 49, 8, 4, 0, 89, 0, 2, 0,130, 8, 7, 0,242, 3, 7, 0,131, 8, 15, 1, 5, 8, 51, 1,132, 8, + 2, 0, 17, 0, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 52, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, + 32, 0, 45, 0, 80, 0,136, 8, 0, 0, 20, 0, 7, 0,137, 8, 7, 0,138, 8, 7, 0,128, 3, 2, 0,139, 8, 2, 0,140, 8, + 53, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,204, 5, 54, 1, 5, 0, 4, 0, 19, 0, + 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 87, 8, 32, 0, 45, 0, 55, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,101, 8, + 2, 0,129, 3, 7, 0,141, 8, 7, 0,142, 8, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,100, 3, 7, 0,103, 3, 7, 0,143, 8, + 7, 0,144, 8, 32, 0,145, 8, 56, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 49, 8, 4, 0, 89, 0, 0, 0, 20, 0, + 0, 0,123, 8, 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,146, 8, 2, 0,147, 8, 57, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, + 7, 0,148, 8, 7, 0,149, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, 7, 0,150, 8, 58, 1, 12, 0, 2, 0, 17, 0, + 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,243, 2, 2, 0,219, 2, 2, 0,151, 8, 4, 0, 37, 0, 7, 0,152, 8, 7, 0,153, 8, + 7, 0,154, 8, 7, 0,155, 8, 0, 0,156, 8, 59, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 49, 8, 4, 0, 89, 0, + 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, 2, 0,146, 8, 2, 0,147, 8, 60, 1, 7, 0, 4, 0,193, 2, 4, 0,157, 8, + 4, 0,158, 8, 4, 0,159, 8, 7, 0,160, 8, 7, 0,161, 8, 0, 0, 93, 8, 61, 1, 7, 0, 0, 0,162, 8, 32, 0,163, 8, + 0, 0, 99, 8, 2, 0,164, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0,100, 8, 62, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, + 4, 0, 49, 8, 4, 0, 89, 0, 0, 0,165, 8, 0, 0,166, 8, 63, 1, 1, 0, 4, 0, 19, 0, 64, 1, 6, 0, 0, 0, 92, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,167, 8, 7, 0,168, 8, 42, 0,121, 6, 65, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, + 4, 0, 17, 0, 32, 0, 45, 0, 66, 1, 2, 0, 4, 0, 17, 0, 4, 0, 42, 6, 67, 1, 6, 0, 0, 0, 96, 8, 0, 0, 97, 8, + 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 50, 3, 32, 0,169, 8, 47, 1, 10, 0, 47, 1, 0, 0, 47, 1, 1, 0, 47, 1,116, 8, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,170, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 68, 1, 10, 0, + 7, 0,128, 3, 7, 0,171, 8, 7, 0,172, 8, 7, 0,173, 8, 7, 0,174, 8, 4, 0, 19, 0, 7, 0,151, 8, 7, 0,175, 8, + 7, 0,176, 8, 7, 0, 37, 0, 16, 1, 12, 0, 16, 1, 0, 0, 16, 1, 1, 0, 15, 1,177, 8, 9, 0,223, 0, 4, 0,171, 3, + 4, 0,229, 3, 4, 0,230, 3, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, 7, 0,242, 3, 7, 0, 37, 0, 51, 1, 8, 0, + 7, 0,181, 8, 7, 0,182, 8, 7, 0,183, 8, 7, 0,184, 8, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0,188, 8, + 15, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, 43, 0,189, 8, 36, 0, 80, 0, 7, 0,242, 3, + 7, 0,190, 8, 7, 0,131, 8, 7, 0,181, 8, 7, 0,182, 8, 7, 0,191, 8, 4, 0, 90, 0, 4, 0,180, 8, 9, 0,192, 8, + 69, 1, 15, 0,213, 0, 0, 0,213, 0, 1, 0, 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 1, 1,193, 8,214, 0, 62, 6, + 15, 1, 5, 8, 2, 0, 69, 1, 2, 0,129, 8, 2, 0, 89, 2, 2, 0, 90, 2, 2, 0, 19, 0, 2, 0,114, 6, 4, 0, 70, 0, + 70, 1, 6, 0, 70, 1, 0, 0, 70, 1, 1, 0, 32, 0, 45, 0, 9, 0,194, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, + 27, 0, 31, 0, 12, 0,195, 8, 4, 0,131, 0, 7, 0,196, 8, 71, 1, 27, 0, 71, 1, 0, 0, 71, 1, 1, 0, 26, 0,197, 8, + 71, 1, 38, 0, 12, 0,198, 8, 0, 0, 20, 0, 7, 0,199, 8, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 4, 0, 19, 0, + 7, 0,203, 8, 7, 0,204, 8, 7, 0,205, 8, 7, 0, 76, 1, 7, 0, 36, 2, 7, 0,206, 8, 7, 0,191, 2, 7, 0,207, 8, + 7, 0,208, 8, 7, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, 7, 0,172, 0, 4, 0,131, 0, 2, 0,136, 5, 2, 0,136, 1, + 72, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,212, 8, 12, 0,213, 8, 12, 0,214, 8, 71, 1,215, 8, 9, 0,216, 8, + 9, 0,217, 8, 4, 0, 19, 0, 4, 0, 15, 6, 2, 0,247, 2, 2, 0, 72, 6, 4, 0, 37, 0, 4, 0,131, 0, 4, 0,218, 8, + 2, 0,219, 8, 2, 0,220, 8, 2, 0,221, 8, 2, 0,222, 8, 4, 0,223, 8, 4, 0,224, 8, 4, 0,225, 8, 4, 0,226, 8, + 4, 0,227, 8, 4, 0,228, 8, 73, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0, 74, 1, 5, 0, 73, 1,229, 8, 4, 0,191, 2, + 4, 0,230, 8, 4, 0,231, 8, 4, 0, 19, 0, 75, 1, 6, 0, 4, 0, 37, 0, 4, 0, 72, 6, 4, 0,225, 8, 4, 0,226, 8, + 4, 0,227, 8, 4, 0,228, 8, 76, 1, 42, 0, 76, 1, 0, 0, 76, 1, 1, 0, 26, 0,197, 8, 12, 0,155, 3, 0, 0, 20, 0, + 2, 0, 19, 0, 2, 0,232, 8, 2, 0,233, 8, 2, 0,234, 8, 2, 0,114, 3, 2, 0,235, 8, 4, 0, 72, 2, 4, 0,225, 8, + 4, 0,226, 8, 71, 1,236, 8, 76, 1, 38, 0, 76, 1,237, 8, 12, 0,238, 8, 9, 0,239, 8, 9, 0,240, 8, 9, 0,241, 8, + 7, 0, 64, 1, 7, 0,172, 0, 7, 0,242, 8, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,107, 3, 2, 0,137, 3, 2, 0, 37, 0, + 7, 0,243, 8, 7, 0,244, 8, 7, 0,110, 3, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, + 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0, 65, 2, 32, 0,253, 8,161, 0, 11, 0, 12, 0,254, 8, 2, 0, 19, 0, + 2, 0,255, 8, 7, 0,101, 2, 7, 0, 0, 9, 7, 0, 1, 9, 12, 0, 2, 9, 4, 0, 3, 9, 4, 0, 4, 9, 9, 0, 5, 9, + 9, 0, 6, 9, 77, 1, 1, 0, 4, 0, 4, 9, 78, 1, 12, 0, 4, 0, 4, 9, 7, 0,113, 8, 2, 0, 7, 9, 2, 0, 8, 9, + 7, 0, 9, 9, 7, 0, 10, 9, 2, 0, 11, 9, 2, 0, 19, 0, 7, 0, 12, 9, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, + 79, 1, 7, 0, 79, 1, 0, 0, 79, 1, 1, 0, 12, 0, 16, 9, 4, 0, 19, 0, 4, 0, 17, 9, 0, 0,233, 3,248, 0, 18, 9, +160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 19, 9, 12, 0,254, 8, 12, 0, 20, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 21, 9, +218, 0, 4, 0, 27, 0,177, 8, 12, 0,254, 8, 4, 0, 22, 9, 4, 0, 19, 0, 80, 1, 17, 0,213, 0, 0, 0,213, 0, 1, 0, + 12, 0, 6, 6, 4, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6,214, 0, 62, 6,160, 0, 90, 3,218, 0, 23, 9, 0, 0, 69, 1, + 0, 0, 65, 6, 2, 0, 19, 0, 2, 0, 24, 9, 2, 0,115, 6, 2, 0,114, 6, 2, 0, 25, 9, 7, 0, 26, 9, 81, 1, 8, 0, + 81, 1, 0, 0, 81, 1, 1, 0, 79, 1, 27, 9, 36, 0, 80, 0, 12, 0, 94, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 28, 9, + 82, 1, 5, 0, 82, 1, 0, 0, 82, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 29, 9, 83, 1, 14, 0, 83, 1, 0, 0, + 83, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 30, 9, 0, 0, 31, 9, 0, 0, 29, 9, 7, 0, 32, 9, + 7, 0, 33, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 34, 9, 7, 0, 35, 9, 84, 1, 9, 0, 84, 1, 0, 0, 84, 1, 1, 0, + 32, 0, 36, 9, 0, 0,250, 2, 7, 0, 37, 9, 2, 0, 38, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 39, 9, 85, 1, 7, 0, + 42, 0,121, 6, 26, 0,197, 8, 4, 0, 19, 0, 4, 0, 40, 9, 12, 0, 41, 9, 32, 0, 36, 9, 0, 0,250, 2, 86, 1, 15, 0, + 32, 0, 36, 9, 2, 0, 42, 9, 2, 0, 19, 0, 2, 0, 43, 9, 2, 0, 44, 9, 0, 0,250, 2, 32, 0, 45, 9, 0, 0, 46, 9, + 7, 0, 47, 9, 7, 0, 36, 2, 7, 0, 48, 9, 7, 0, 49, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 87, 1, 6, 0, + 32, 0, 36, 9, 7, 0,229, 8, 2, 0, 50, 9, 2, 0, 51, 9, 2, 0, 19, 0, 2, 0, 52, 9, 88, 1, 6, 0, 32, 0, 36, 9, + 4, 0, 53, 9, 4, 0, 54, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,250, 2, 89, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0, + 4, 0, 53, 9, 0, 0,250, 2, 90, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 53, 9, 0, 0,250, 2, 91, 1, 10, 0, + 32, 0, 36, 9, 4, 0, 55, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,117, 6, 2, 0, 56, 9, 2, 0, 43, 0, 2, 0, 70, 0, + 7, 0, 57, 9, 0, 0,250, 2, 92, 1, 4, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 53, 9, 0, 0,250, 2, 93, 1, 10, 0, + 32, 0, 36, 9, 2, 0, 17, 0, 2, 0, 36, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,148, 8, 7, 0,149, 8, 4, 0, 37, 0, +160, 0,122, 8, 0, 0,250, 2, 94, 1, 4, 0, 32, 0, 36, 9, 4, 0,115, 3, 4, 0, 58, 9, 0, 0,250, 2, 95, 1, 4, 0, + 32, 0, 36, 9, 4, 0,115, 3, 4, 0, 37, 0, 0, 0,250, 2, 96, 1, 5, 0, 32, 0, 36, 9, 7, 0,125, 0, 4, 0, 59, 9, + 4, 0,115, 3, 4, 0,116, 3, 97, 1, 6, 0, 32, 0, 36, 9, 4, 0, 60, 9, 4, 0, 61, 9, 7, 0, 62, 9, 7, 0, 63, 9, + 0, 0,250, 2, 98, 1, 16, 0, 32, 0, 36, 9, 32, 0,237, 8, 4, 0, 17, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0, 66, 9, + 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 2, 0, 19, 0, 2, 0, 37, 0, + 2, 0, 43, 0, 2, 0, 70, 0, 99, 1, 3, 0, 32, 0, 36, 9, 4, 0, 19, 0, 4, 0, 28, 2,100, 1, 5, 0, 32, 0, 36, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 73, 9, 0, 0,250, 2,101, 1, 10, 0, 32, 0, 36, 9, 0, 0,250, 2, 2, 0, 74, 9, + 2, 0, 75, 9, 0, 0, 76, 9, 0, 0, 77, 9, 7, 0, 78, 9, 7, 0, 79, 9, 7, 0, 80, 9, 7, 0, 81, 9,102, 1, 8, 0, + 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9, 2, 0, 19, 0, 2, 0, 28, 2, +103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9, 2, 0, 19, 0, + 2, 0, 28, 2,104, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 82, 9, 7, 0, 83, 9, + 2, 0, 19, 0, 2, 0, 28, 2,105, 1, 7, 0, 32, 0, 36, 9, 0, 0,250, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, + 2, 0, 69, 1, 4, 0, 37, 0,106, 1, 5, 0, 32, 0, 50, 3, 7, 0, 76, 1, 2, 0, 54, 3, 0, 0, 56, 3, 0, 0, 84, 9, +107, 1, 10, 0,107, 1, 0, 0,107, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 85, 9, 7, 0, 20, 1, 7, 0, 21, 1, + 2, 0, 16, 9, 2, 0, 86, 9, 32, 0, 45, 0,108, 1, 22, 0,108, 1, 0, 0,108, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, + 2, 0, 87, 9, 2, 0, 88, 9, 36, 0, 80, 0,160, 0,122, 8, 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 89, 9, + 7, 0, 90, 9, 7, 0, 91, 9, 7, 0, 92, 9, 7, 0,236, 2, 7, 0, 93, 9, 7, 0,124, 8, 7, 0, 94, 9, 0, 0, 95, 9, + 0, 0, 96, 9, 12, 0, 96, 3,109, 1, 8, 0, 7, 0, 43, 2, 7, 0,148, 8, 7, 0,149, 8, 9, 0, 2, 0, 2, 0, 97, 9, + 2, 0, 98, 9, 2, 0, 99, 9, 2, 0,100, 9,110, 1, 18, 0,110, 1, 0, 0,110, 1, 1, 0,110, 1,101, 9, 0, 0, 20, 0, +109, 1,102, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,103, 9, 2, 0,104, 9, 2, 0,105, 9, 2, 0,106, 9, 4, 0, 43, 0, + 7, 0,107, 9, 7, 0,108, 9, 4, 0,109, 9, 4, 0,110, 9,110, 1,111, 9,111, 1,112, 9,112, 1, 33, 0,112, 1, 0, 0, +112, 1, 1, 0,112, 1,113, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,229, 7, 2, 0, 7, 8, 2, 0,114, 9, + 2, 0,133, 0, 2, 0,104, 9, 2, 0,219, 7, 12, 0,117, 8, 12, 0,115, 9, 27, 0,151, 6, 9, 0,116, 9, 7, 0,107, 9, + 7, 0,108, 9, 7, 0, 74, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0,119, 9, 7, 0,120, 9, 7, 0,121, 9, 2, 0,122, 9, + 2, 0,123, 9, 9, 0,124, 9, 24, 0,125, 9, 24, 0,126, 9, 24, 0,127, 9,113, 1,150, 0,114, 1,128, 9,115, 1,129, 9, +111, 1, 8, 0,111, 1, 0, 0,111, 1, 1, 0,112, 1,130, 9,112, 1,131, 9,110, 1,132, 9,110, 1,111, 9, 4, 0, 19, 0, + 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, 39, 0, 75, 0,162, 0, 93, 3, 12, 0,133, 9, 12, 0,134, 9,109, 1,135, 9, + 12, 0,136, 9, 4, 0, 17, 0, 4, 0,137, 9, 4, 0,138, 9, 4, 0,139, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,140, 9, +115, 1,141, 9,110, 1,142, 9,110, 1,143, 9, 9, 0,144, 9, 9, 0,145, 9, 4, 0,146, 9, 9, 0,147, 9, 9, 0,148, 9, + 9, 0,149, 9,116, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,219, 7, 0, 0,150, 9, 0, 0,151, 9, 2, 0, 37, 0, +117, 1, 16, 0, 2, 0,173, 7, 2, 0,174, 7, 2, 0,152, 9, 2, 0,172, 8, 2, 0,153, 9, 2, 0, 68, 0, 7, 0,235, 2, + 7, 0,154, 9, 7, 0,155, 9, 2, 0, 91, 1, 0, 0,156, 9, 0, 0,157, 9, 2, 0,158, 9, 2, 0, 37, 0, 4, 0,159, 9, + 4, 0,160, 9,118, 1, 9, 0, 7, 0,161, 9, 7, 0,162, 9, 7, 0,191, 8, 7, 0,109, 0, 7, 0,163, 9, 7, 0, 78, 6, + 2, 0,164, 9, 0, 0,165, 9, 0, 0, 37, 0,119, 1, 4, 0, 7, 0,166, 9, 7, 0,167, 9, 2, 0,164, 9, 2, 0, 37, 0, +120, 1, 3, 0, 7, 0,168, 9, 7, 0,169, 9, 7, 0, 15, 0,121, 1, 7, 0, 0, 0, 5, 2, 2, 0,249, 4, 2, 0,250, 4, + 2, 0,251, 4, 2, 0,189, 4, 4, 0,126, 0, 4, 0, 34, 4,122, 1, 7, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, + 7, 0, 85, 2, 7, 0,173, 9, 7, 0,174, 9, 7, 0,175, 9,123, 1, 4, 0, 2, 0,176, 9, 2, 0,177, 9, 2, 0,178, 9, + 2, 0,179, 9,124, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,125, 1, 2, 0, 0, 0,166, 0, 0, 0,180, 9,126, 1, 1, 0, + 0, 0, 20, 0,127, 1, 10, 0, 0, 0,181, 9, 0, 0,182, 9, 0, 0, 71, 6, 0, 0,183, 9, 2, 0,152, 9, 2, 0,184, 9, + 7, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9, 7, 0, 93, 9,128, 1, 2, 0, 9, 0,188, 9, 9, 0,189, 9,129, 1, 11, 0, + 0, 0,251, 4, 0, 0, 17, 0, 0, 0,164, 9, 0, 0,109, 0, 0, 0,190, 9, 0, 0,106, 0, 0, 0, 70, 2, 7, 0,191, 9, + 7, 0,192, 9, 7, 0,193, 9, 7, 0,194, 9,130, 1, 8, 0, 7, 0, 82, 8, 7, 0,125, 0, 7, 0,157, 9, 7, 0,157, 2, + 7, 0,195, 9, 7, 0,236, 0, 7, 0,196, 9, 4, 0, 17, 0,131, 1, 4, 0, 2, 0,197, 9, 2, 0,198, 9, 2, 0,199, 9, + 2, 0, 37, 0,132, 1, 1, 0, 0, 0, 20, 0,133, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,200, 9, +134, 1, 10, 0, 2, 0,222, 3, 2, 0, 19, 0, 7, 0,120, 4, 7, 0,201, 9, 7, 0,202, 9, 7, 0,203, 9, 7, 0,204, 9, +133, 1,205, 9,133, 1,206, 9,133, 1,207, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, 24, 0,208, 9, 24, 0,209, 9, +134, 1,210, 9, 7, 0,211, 9, 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9,135, 1, 4, 0, 47, 0,229, 2, 7, 0,215, 9, + 7, 0,170, 1, 7, 0, 37, 0,191, 0, 17, 0, 27, 0, 31, 0,135, 1,216, 9, 63, 0,205, 9, 51, 0,134, 1, 2, 0, 19, 0, + 2, 0,230, 5, 4, 0,106, 0, 7, 0,217, 9, 7, 0, 82, 2, 4, 0,218, 9, 7, 0,219, 9, 7, 0,220, 9, 7, 0,221, 9, + 7, 0,170, 1, 2, 0,104, 1, 0, 0,222, 9, 0, 0,210, 6,136, 1, 10, 0, 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, + 4, 0,177, 3, 4, 0,223, 9, 4, 0,224, 9, 4, 0,225, 9, 0, 0, 92, 0, 0, 0, 20, 0, 9, 0, 2, 0, 91, 0, 6, 0, +136, 1,226, 9, 4, 0,227, 9, 4, 0,228, 9, 4, 0,229, 9, 4, 0, 37, 0, 9, 0,230, 9,137, 1, 5, 0, 7, 0,152, 2, + 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,138, 1, 5, 0, 7, 0,152, 2, 7, 0,231, 9, 7, 0,232, 9, + 7, 0,233, 9, 7, 0,219, 2,139, 1, 5, 0, 32, 0,234, 9,140, 1, 22, 0, 7, 0,203, 5, 7, 0,235, 9, 7, 0, 57, 0, +141, 1, 7, 0, 4, 0,236, 9, 4, 0,237, 9, 4, 0,238, 9, 7, 0,239, 9, 7, 0,240, 9, 7, 0,241, 9, 7, 0, 57, 0, +142, 1, 8, 0,142, 1, 0, 0,142, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,219, 2, + 7, 0, 90, 8,143, 1, 6, 0,143, 1, 0, 0,143, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2, 2, 0, 19, 0, 2, 0,242, 9, +144, 1, 18, 0,138, 1,171, 3,138, 1,243, 9,137, 1,244, 9,138, 1, 74, 8,139, 1,245, 9, 4, 0, 82, 0, 7, 0,219, 2, + 7, 0,246, 2, 7, 0,246, 9, 4, 0,236, 9, 4, 0,247, 9, 7, 0,240, 9, 7, 0,241, 9, 7, 0,106, 0, 2, 0, 19, 0, + 2, 0,248, 9, 2, 0,249, 9, 2, 0,250, 9,145, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,146, 1,251, 9,169, 0, 56, 4, + 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 74, 9, 2, 0,252, 9, 2, 0,253, 9, 2, 0,137, 3, 2, 0,254, 9, 2, 0,255, 9, + 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10, 2, 0, 4, 10, 2, 0,238, 4, 2, 0,115, 5, 2, 0, 5, 10, + 2, 0, 6, 10, 2, 0, 7, 10, 2, 0, 8, 10, 2, 0, 9, 10, 2, 0, 25, 2, 2, 0, 67, 8, 2, 0, 42, 8, 2, 0, 10, 10, + 2, 0, 11, 10, 2, 0,187, 3, 2, 0,188, 3, 2, 0, 12, 10, 2, 0, 13, 10, 2, 0, 14, 10, 2, 0, 15, 10, 7, 0, 16, 10, + 7, 0, 17, 10, 7, 0, 18, 10, 2, 0, 19, 10, 2, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10, 7, 0, 49, 8, + 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 55, 8, 7, 0, 24, 10, 7, 0, 25, 10, 7, 0, 26, 10, 4, 0, 50, 8, 4, 0, 48, 8, + 4, 0, 27, 10, 7, 0, 51, 8, 7, 0, 52, 8, 7, 0, 53, 8, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, + 7, 0, 32, 10, 7, 0, 57, 0, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0,128, 3, 7, 0,106, 0, + 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10, 4, 0, 44, 10, + 4, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10, 7, 0, 50, 10, 7, 0,210, 0, 7, 0, 51, 10, + 7, 0,213, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 55, 10, 7, 0, 56, 10, + 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 7, 0, 63, 10, 7, 0, 64, 10, + 4, 0, 65, 10, 4, 0, 66, 10, 67, 0,160, 3, 12, 0, 67, 10, 67, 0, 68, 10, 32, 0, 69, 10, 32, 0, 70, 10, 36, 0, 80, 0, +164, 0, 61, 1,164, 0, 71, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,145, 1, 72, 10,144, 1, 73, 10,141, 1,237, 8, +171, 0,238, 3, 9, 0,239, 3,147, 1, 74, 10,147, 1, 75, 10, 12, 0, 76, 10, 12, 0, 77, 10,133, 0, 78, 10,141, 0, 79, 10, +141, 0, 80, 10, 32, 0, 81, 10, 32, 0, 82, 10, 32, 0, 38, 0, 12, 0, 41, 9, 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 17, 3, + 7, 0, 83, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 50, 8, 4, 0, 84, 10, 4, 0, 85, 10, 4, 0, 86, 10, + 2, 0,247, 0, 2, 0, 87, 10, 2, 0, 88, 10, 2, 0, 89, 10, 0, 0, 90, 10, 2, 0, 91, 10, 2, 0, 92, 10, 2, 0, 93, 10, + 9, 0, 94, 10,137, 0, 55, 4, 12, 0, 4, 3, 12, 0, 95, 10,148, 1, 96, 10,149, 1, 97, 10, 7, 0, 98, 10,135, 0, 35, 0, +150, 1,192, 8, 7, 0, 25, 4, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,123, 4, 7, 0,101, 10, 7, 0,138, 3, 7, 0,128, 3, + 7, 0,102, 10, 7, 0, 84, 2, 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, 26, 4, 7, 0,109, 10, 7, 0,110, 10, 7, 0,111, 10, 7, 0, 27, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0,112, 10, + 4, 0,113, 10, 4, 0, 90, 0, 4, 0,114, 10, 4, 0,115, 10, 2, 0,116, 10, 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10, + 2, 0,120, 10, 2, 0,121, 10,169, 0, 56, 4,136, 0, 8, 0,150, 1,122, 10, 7, 0,123, 10, 7, 0,124, 10, 7, 0,242, 1, + 7, 0,125, 10, 4, 0, 90, 0, 2, 0,126, 10, 2, 0,127, 10,151, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, + 7, 0,128, 10,152, 1, 6, 0,152, 1, 0, 0,152, 1, 1, 0,151, 1,229, 8, 4, 0,253, 0, 2, 0,129, 10, 2, 0, 19, 0, +153, 1, 5, 0,153, 1, 0, 0,153, 1, 1, 0, 12, 0,130, 10, 4, 0,131, 10, 4, 0, 19, 0,154, 1, 9, 0,154, 1, 0, 0, +154, 1, 1, 0, 12, 0,124, 0,153, 1,132, 10, 4, 0, 19, 0, 2, 0,129, 10, 2, 0,133, 10, 7, 0, 91, 0, 0, 0,134, 10, +162, 0, 6, 0, 27, 0, 31, 0, 12, 0, 11, 5, 4, 0, 19, 0, 2, 0,135, 10, 2, 0,136, 10, 9, 0,137, 10,155, 1, 7, 0, +155, 1, 0, 0,155, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,138, 10, 0, 0,139, 10,156, 1, 5, 0, + 12, 0,140, 10, 4, 0,141, 10, 4, 0,142, 10, 4, 0, 19, 0, 4, 0, 37, 0,157, 1, 18, 0, 27, 0, 31, 0,158, 1,143, 10, +158, 1,144, 10, 12, 0,145, 10, 4, 0,146, 10, 2, 0,147, 10, 2, 0, 37, 0, 12, 0,148, 10, 12, 0,149, 10,156, 1,150, 10, + 12, 0,151, 10, 12, 0,152, 10, 12, 0,153, 10,159, 1,154, 10, 4, 0,155, 10, 4, 0, 70, 0, 12, 0,156, 10,211, 0,157, 10, +158, 1, 33, 0,158, 1, 0, 0,158, 1, 1, 0, 9, 0,158, 10, 4, 0,152, 7, 2, 0,159, 10, 2, 0, 37, 0,216, 0, 61, 6, +216, 0,160, 10, 0, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10, 2, 0,173, 7, 2, 0,174, 7, 2, 0,164, 10, 2, 0,165, 10, + 2, 0,177, 3, 2, 0,177, 6, 2, 0,166, 10, 2, 0,167, 10, 2, 0,168, 10, 2, 0,169, 10, 8, 0,170, 10,160, 1,171, 10, +161, 1,172, 10,162, 1,173, 10, 4, 0,174, 10, 4, 0,175, 10, 9, 0,176, 10, 12, 0,149, 10, 12, 0,193, 7, 12, 0,177, 10, + 12, 0,178, 10, 12, 0,179, 10,163, 1, 16, 0,163, 1, 0, 0,163, 1, 1, 0, 0, 0,180, 10, 26, 0, 30, 0, 2, 0,181, 10, + 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10, 2, 0,185, 10, 2, 0,186, 10, 2, 0, 19, 0, + 2, 0,187, 10, 2, 0, 70, 2,164, 1,188, 10,165, 1, 10, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,189, 10, 0, 0,180, 10, + 2, 0,190, 10, 2, 0,191, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,192, 10, 9, 0,193, 10,159, 1, 7, 0,159, 1, 0, 0, +159, 1, 1, 0, 0, 0,180, 10, 0, 0,194, 10, 12, 0,110, 7, 4, 0,195, 10, 4, 0, 19, 0,224, 0, 12, 0,224, 0, 0, 0, +224, 0, 1, 0, 0, 0,180, 10, 26, 0, 30, 0,166, 1,167, 7, 9, 0,196, 10,164, 1,188, 10,156, 1,197, 10, 12, 0,198, 10, +224, 0,199, 10, 2, 0, 19, 0, 2, 0,136, 1,160, 1, 23, 0,160, 1, 0, 0,160, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, + 2, 0, 5, 0, 2, 0, 6, 0, 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 2, 0,203, 10, 0, 0,204, 10, 0, 0, 37, 0, + 2, 0,182, 10, 2, 0,183, 10, 2, 0,184, 10, 2, 0,185, 10, 2, 0,186, 10, 2, 0, 43, 0, 0, 0,205, 10, 2, 0,206, 10, + 2, 0,207, 10, 4, 0, 70, 0, 9, 0,196, 10,167, 1, 8, 0,167, 1, 0, 0,167, 1, 1, 0, 9, 0, 2, 0, 9, 0,208, 10, + 0, 0,233, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,209, 10,168, 1, 5, 0, 7, 0,210, 10, 4, 0,211, 10, 4, 0,212, 10, + 4, 0, 69, 1, 4, 0, 19, 0,169, 1, 6, 0, 7, 0,213, 10, 7, 0,214, 10, 7, 0,215, 10, 7, 0,216, 10, 4, 0, 17, 0, + 4, 0, 19, 0,170, 1, 5, 0, 7, 0,148, 8, 7, 0,149, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,171, 1, 5, 0, +170, 1, 2, 0, 4, 0, 54, 0, 7, 0,217, 10, 7, 0,148, 8, 7, 0,149, 8,172, 1, 4, 0, 2, 0,218, 10, 2, 0,219, 10, + 2, 0,220, 10, 2, 0,221, 10,173, 1, 2, 0, 42, 0,148, 6, 26, 0,197, 8,174, 1, 3, 0, 24, 0,222, 10, 4, 0, 19, 0, + 4, 0, 37, 0,175, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,223, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,224, 10, +176, 1, 5, 0, 7, 0,221, 2, 7, 0, 89, 8, 2, 0,224, 10, 2, 0,136, 1, 15, 1, 5, 8,177, 1, 9, 0,177, 1, 0, 0, +177, 1, 1, 0, 27, 0,151, 6, 0, 0,225, 10, 4, 0,226, 10, 4, 0,227, 10, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,233, 3, +178, 1, 7, 0, 12, 0, 41, 9, 0, 0,228, 10, 9, 0,229, 10, 7, 0, 61, 0, 7, 0,209, 10, 4, 0, 17, 0, 4, 0, 19, 0, +179, 1, 3, 0, 7, 0,230, 10, 4, 0, 19, 0, 4, 0, 37, 0,180, 1, 15, 0,180, 1, 0, 0,180, 1, 1, 0, 79, 1, 27, 9, +178, 1, 62, 0, 12, 0, 96, 3, 35, 0, 50, 0,179, 1,231, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, + 4, 0,226, 10, 0, 0,225, 10, 4, 0,232, 10, 7, 0,233, 10,181, 1, 2, 0, 0, 0,234, 10, 0, 0,235, 10,182, 1, 4, 0, +182, 1, 0, 0,182, 1, 1, 0,160, 0, 50, 3, 12, 0,236, 10,183, 1, 24, 0,183, 1, 0, 0,183, 1, 1, 0, 12, 0,237, 10, +160, 0,122, 8,182, 1,238, 10, 12, 0,239, 10, 12, 0, 96, 3, 0, 0,233, 3, 7, 0,209, 10, 7, 0,240, 10, 7, 0, 88, 0, + 7, 0, 89, 0, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0,236, 2, 7, 0, 93, 9, 7, 0,124, 8, 7, 0, 94, 9, 2, 0,241, 10, + 2, 0,242, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,184, 1, 6, 0,184, 1, 0, 0,184, 1, 1, 0, + 12, 0,237, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,233, 3,185, 1, 10, 0,185, 1, 0, 0,185, 1, 1, 0, 27, 0,151, 6, + 0, 0,243, 10, 4, 0,227, 10, 4, 0,244, 10, 0, 0,225, 10, 4, 0,226, 10, 2, 0, 19, 0, 2, 0,245, 10,186, 1, 7, 0, +186, 1, 0, 0,186, 1, 1, 0, 12, 0,246, 10, 0, 0,233, 3, 2, 0, 19, 0, 2, 0,247, 10, 4, 0,248, 10,187, 1, 5, 0, +187, 1, 0, 0,187, 1, 1, 0, 0, 0,225, 10, 4, 0,226, 10, 7, 0,209, 2, 39, 0, 12, 0,160, 0, 90, 3,160, 0,249, 10, +182, 1,238, 10, 12, 0,250, 10,183, 1,251, 10, 12, 0,252, 10, 12, 0,253, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,254, 10, + 2, 0,255, 10, 7, 0, 0, 11,188, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,189, 1, 5, 0,189, 1, 0, 0,189, 1, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,190, 1, 6, 0,189, 1, 1, 11, 32, 0, 45, 0, 4, 0, 2, 11, 7, 0, 3, 11, + 4, 0, 4, 11, 4, 0, 16, 9,191, 1, 3, 0,189, 1, 1, 11, 4, 0, 2, 11, 7, 0, 5, 11,192, 1, 8, 0,189, 1, 1, 11, + 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 6, 11, 7, 0, 17, 3, 7, 0,191, 8, 4, 0, 2, 11, 4, 0, 7, 11,193, 1, 5, 0, +189, 1, 1, 11, 7, 0, 8, 11, 7, 0, 7, 8, 7, 0,242, 2, 7, 0, 57, 0,194, 1, 3, 0,189, 1, 1, 11, 7, 0,191, 8, + 7, 0, 9, 11,140, 1, 4, 0, 7, 0, 10, 11, 7, 0, 39, 10, 2, 0, 11, 11, 2, 0, 69, 1,195, 1, 14, 0,195, 1, 0, 0, +195, 1, 1, 0, 12, 0, 12, 11, 12, 0, 13, 11, 12, 0, 14, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 15, 11, + 7, 0, 16, 11, 4, 0, 4, 11, 4, 0, 16, 9, 7, 0,242, 3, 7, 0,244, 2,146, 1, 23, 0, 4, 0, 2, 11, 4, 0, 17, 11, + 7, 0, 18, 11, 7, 0, 57, 0, 7, 0, 19, 11, 7, 0,240, 2, 7, 0, 10, 11, 7, 0, 20, 11, 7, 0,221, 2, 7, 0, 21, 11, + 7, 0,120, 4, 7, 0, 22, 11, 7, 0, 23, 11, 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 26, 11, 7, 0, 27, 11, 7, 0, 28, 11, + 7, 0, 29, 11, 7, 0, 30, 11, 7, 0, 31, 11, 7, 0, 32, 11, 12, 0, 33, 11,121, 0, 34, 0,120, 0, 34, 11,196, 1, 35, 11, + 67, 0, 36, 11, 67, 0, 68, 10, 67, 0, 37, 11,197, 1, 38, 11, 48, 0,165, 0, 48, 0, 39, 11, 48, 0, 40, 11, 7, 0, 41, 11, + 7, 0, 42, 11, 7, 0, 43, 11, 7, 0, 44, 11, 7, 0, 45, 11, 7, 0, 28, 9, 7, 0, 46, 11, 7, 0,170, 1, 7, 0, 47, 11, + 4, 0, 48, 11, 4, 0, 49, 11, 4, 0, 50, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 51, 11, 2, 0, 52, 11, 2, 0, 53, 11, + 4, 0, 54, 11, 7, 0,221, 2, 4, 0, 55, 11, 7, 0, 56, 11, 4, 0, 57, 11,137, 0, 58, 11, 12, 0, 59, 11,169, 0, 56, 4, +122, 0, 11, 0,120, 0, 34, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 28, 9, 7, 0, 60, 11, 7, 0, 61, 11, 2, 0, 62, 11, + 2, 0, 63, 11, 2, 0, 64, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 34, 11,139, 0, 14, 3,141, 0, 16, 3, + 7, 0,229, 8, 7, 0, 65, 11, 7, 0, 66, 11, 7, 0, 66, 1, 7, 0, 67, 11, 4, 0, 50, 9, 4, 0, 12, 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}; -- cgit v1.2.3 From 7e7e1018acfb23f0e10d4ae051d002a6516b8d83 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 11 Dec 2009 08:05:05 +0000 Subject: Added back rendered animation playback (in a sense), with a customisable player. You can choose a player in User Preferences -> File Paths. You can choose a plan custom command line, otherwise there are presets available for the Blender 2.4 player or DJV (where it will give it the correct filename, fps, etc on the command line). So for example if you have a Blender 2.4 version installed, you can enter the path to the blender 2.4 executable, and the playback will work just like before. Any info on other frame players (FrameCycler? pdplayer?) and their command line settings could be useful for adding some more presets too, if anyone knows of them. It's available in Render->Play Rendered Animation (Ctrl F11) --- release/scripts/op/screen_play_rendered_anim.py | 99 +++++++++++++++++++++++++ release/scripts/ui/space_info.py | 1 + release/scripts/ui/space_userpref.py | 4 + source/blender/editors/screen/screen_ops.c | 1 + source/blender/makesdna/DNA_userdef_types.h | 7 +- source/blender/makesrna/intern/rna_userdef.c | 16 ++++ 6 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 release/scripts/op/screen_play_rendered_anim.py diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py new file mode 100644 index 00000000000..e98fa45cbaa --- /dev/null +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -0,0 +1,99 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# Script copyright (C) Campbell J Barton +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- + +# History +# +# Originally written by Matt Ebb + +import bpy +import subprocess, platform + +# from BKE_add_image_extension() +img_format_exts = { + 'IRIS':'.rgb', + 'RADHDR':'.hdr', + 'PNG':'png', + 'TARGA':'tga', + 'RAWTARGA':'tga', + 'BMP':'bmp', + 'TIFF':'tif', + 'OPENEXR':'exr', + 'MULTILAYER':'exr', + 'CINEON':'cin', + 'DPX':'dpx', + 'JPEG':'jpg', + 'JPEG2000':'jp2', + 'QUICKTIME_QTKIT':'mov', + 'QUICKTIME_CARBON':'mov', + 'AVIRAW':'avi', + 'AVIJPEG':'avi', + 'AVICODEC':'avi', + 'XVID':'avi', + 'THEORA':'ogg', + } + +class PlayRenderedAnim(bpy.types.Operator): + + bl_idname = "screen.play_rendered_anim" + bl_label = "Play Rendered Animation" + bl_register = True + bl_undo = False + + def execute(self, context): + sce = context.scene + rd = sce.render_data + prefs = context.user_preferences + + preset = prefs.filepaths.animation_player_preset + player_path = prefs.filepaths.animation_player + + # try and guess a command line if it doesn't exist + if player_path == '': + if preset == 'BLENDER24': + player_path = 'blender' + elif preset == 'DJV': + player_path = 'djv_view' + + # doesn't support ### frame notation yet + file = "%s%04d" % (rd.output_path, sce.start_frame) + if rd.file_extensions: + file += '.' + img_format_exts[rd.file_format] + + cmd = [player_path] + # extra options, fps controls etc. + if preset == 'BLENDER24': + opts = ["-a", "-f", str(rd.fps), str(rd.fps_base), file] + cmd.extend(opts) + elif preset == 'DJV': + opts = [file, "-playback_speed", str(rd.fps)] + cmd.extend(opts) + else: # 'CUSTOM' + cmd.extend(file) + + # launch it + try: + process = subprocess.Popen(cmd) + except: + pass + + return('FINISHED',) + +bpy.ops.add(PlayRenderedAnim) \ No newline at end of file diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 1543e6bf263..37075ac3188 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -261,6 +261,7 @@ class INFO_MT_render(bpy.types.Menu): layout.separator() layout.operator("screen.render_view_show") + layout.operator("screen.play_rendered_anim") class INFO_MT_help(bpy.types.Menu): diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 1ec01c31eca..383e7ce4e9c 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1083,6 +1083,7 @@ class USERPREF_PT_file(bpy.types.Panel): sub.label(text="Scripts:") sub.label(text="Sounds:") sub.label(text="Temp:") + sub.label(text="Animation Player:") sub = col1.column() sub.prop(paths, "fonts_directory", text="") @@ -1093,6 +1094,9 @@ class USERPREF_PT_file(bpy.types.Panel): sub.prop(paths, "python_scripts_directory", text="") sub.prop(paths, "sounds_directory", text="") sub.prop(paths, "temporary_directory", text="") + subsplit = sub.split(percentage=0.3) + subsplit.prop(paths, "animation_player_preset", text="") + subsplit.prop(paths, "animation_player", text="") col = split.column() col.label(text="Save & Load:") diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index b67001a454c..fe2bc58faf2 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3877,6 +3877,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) 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); /* user prefs */ #ifdef __APPLE__ diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 82e6cebe71e..c6b1bf0b3f6 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -286,10 +286,11 @@ typedef struct UserDef { char plugseqdir[160]; char pythondir[160]; char sounddir[160]; - /* yafray: temporary xml export directory */ - char yfexportdir[160]; + char anim_player[240]; // FILE_MAX length + int anim_player_preset; + int pad; + short versions; - short dbl_click_time; int gameflags; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index f695936d47c..21e601c3ba3 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2358,6 +2358,13 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) PropertyRNA *prop; StructRNA *srna; + static EnumPropertyItem anim_player_presets[] = { + //{0, "INTERNAL", 0, "Internal", "Built-in animation player"}, // doesn't work yet! + {0, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"}, + {2, "DJV", 0, "Djv", "Open source frame player: http://djv.sourceforge.net"}, + {3, "CUSTOM", 0, "Custom", "Custom animation player executable path"}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "UserPreferencesFilePaths", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "UserPreferences"); @@ -2414,7 +2421,16 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) prop= RNA_def_property(srna, "temporary_directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "tempdir"); RNA_def_property_ui_text(prop, "Temporary Directory", "The directory for storing temporary save files."); + + prop= RNA_def_property(srna, "animation_player", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "anim_player"); + RNA_def_property_ui_text(prop, "Animation Player", "Path to a custom animation/frame sequence player."); + prop= RNA_def_property(srna, "animation_player_preset", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "anim_player_preset"); + RNA_def_property_enum_items(prop, anim_player_presets); + RNA_def_property_ui_text(prop, "Animation Player Preset", "Preset configs for external animation players"); + /* Autosave */ prop= RNA_def_property(srna, "save_version", PROP_INT, PROP_NONE); -- cgit v1.2.3 From 89b6d94e387d4b127dfa7095146b641053a01617 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 11 Dec 2009 10:56:20 +0000 Subject: Sculpt Branch: multires conversion from 2.4 working again. --- source/blender/blenkernel/intern/CCGSubSurf.c | 42 +++++++++++++++ source/blender/blenkernel/intern/CCGSubSurf.h | 1 + source/blender/blenkernel/intern/multires.c | 76 ++++++++++++++++++++++++--- source/blender/blenloader/intern/readfile.c | 20 +++---- 4 files changed, 122 insertions(+), 17 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 4bd0586c592..dc863869ad8 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -2188,6 +2188,48 @@ CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF return eCCGError_None; } +/* copy other places to face grid coordinates */ +CCGError ccgSubSurf_updateToFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF) +{ + int i, S, x, gridSize, cornerIdx, subdivLevels; + int vertDataSize = ss->meshIFC.vertDataSize, freeF; + + subdivLevels = ss->subdivLevels; + lvl = (lvl)? lvl: subdivLevels; + gridSize = 1 + (1<<(lvl-1)); + cornerIdx = gridSize-1; + + ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); + + for (i=0; inumVerts; S++) { + int prevS = (S+f->numVerts-1)%f->numVerts; + CCGEdge *e = FACE_getEdges(f)[S]; + CCGEdge *prevE = FACE_getEdges(f)[prevS]; + + for (x=0; xss; + DMGridData *vd; + int index; + int totvert, totedge, totface; + int gridSize = ccgSubSurf_getGridSize(ss); + int edgeSize = ccgSubSurf_getEdgeSize(ss); + int i = 0; + + totface = ccgSubSurf_getNumFaces(ss); + for(index = 0; index < totface; index++) { + CCGFace *f = ccgdm->faceMap[index].face; + int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); + + vd= ccgSubSurf_getFaceCenterData(f); + copy_v3_v3(vd->co, mvert[i].co); + i++; + + for(S = 0; S < numVerts; S++) { + for(x = 1; x < gridSize - 1; x++, i++) { + vd= ccgSubSurf_getFaceGridEdgeData(ss, f, S, x); + copy_v3_v3(vd->co, mvert[i].co); + } + } + + for(S = 0; S < numVerts; S++) { + for(y = 1; y < gridSize - 1; y++) { + for(x = 1; x < gridSize - 1; x++, i++) { + vd= ccgSubSurf_getFaceGridData(ss, f, S, x, y); + copy_v3_v3(vd->co, mvert[i].co); + } + } + } + } + + totedge = ccgSubSurf_getNumEdges(ss); + for(index = 0; index < totedge; index++) { + CCGEdge *e = ccgdm->edgeMap[index].edge; + int x; + + for(x = 1; x < edgeSize - 1; x++, i++) { + vd= ccgSubSurf_getEdgeData(ss, e, x); + copy_v3_v3(vd->co, mvert[i].co); + } + } + + totvert = ccgSubSurf_getNumVerts(ss); + for(index = 0; index < totvert; index++) { + CCGVert *v = ccgdm->vertMap[index].vert; + + vd= ccgSubSurf_getVertData(ss, v); + copy_v3_v3(vd->co, mvert[i].co); + i++; + } + + ccgSubSurf_updateToFaces(ss, 0, NULL, 0); +} + /* Loads a multires object stored in the old Multires struct into the new format */ -static void multires_load_old_dm(DerivedMesh *dm, Multires *mr, int totlvl) +static void multires_load_old_dm(DerivedMesh *dm, Mesh *me, int totlvl) { MultiresLevel *lvl, *lvl1; + Multires *mr= me->mr; MVert *vsrc, *vdst; int src, dst; int st = multires_side_tot[totlvl - 1] - 1; @@ -976,7 +1036,7 @@ static void multires_load_old_dm(DerivedMesh *dm, Multires *mr, int totlvl) src = 0; dst = 0; vsrc = mr->verts; - vdst = CDDM_get_verts(dm); + vdst = dm->getVertArray(dm); totvert = dm->getNumVerts(dm); vvmap = MEM_callocN(sizeof(int) * totvert, "multires vvmap"); @@ -1123,13 +1183,13 @@ static void multires_load_old_dm(DerivedMesh *dm, Multires *mr, int totlvl) copy_v3_v3(vdst[i].co, vsrc[vvmap[i]].co); MEM_freeN(vvmap); + + multires_old_mvert_to_ss(dm, vdst); } -#endif + void multires_load_old(Object *ob, Mesh *me) { - /* XXX not implemented */ -#if 0 MultiresLevel *lvl; ModifierData *md; MultiresModifierData *mmd; @@ -1173,14 +1233,14 @@ void multires_load_old(Object *ob, Mesh *me) orig = CDDM_from_mesh(me, NULL); dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0, 0); - multires_load_old_dm(dm, me->mr, mmd->totlvl); + multires_load_old_dm(dm, me, mmd->totlvl+1); multires_dm_mark_as_modified(dm); dm->release(dm); orig->release(orig); -#endif /* Remove the old multires */ multires_free(me->mr); + me->mr= NULL; } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 039f8c60201..d6d43eacd85 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10133,17 +10133,19 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(!sce->toolsettings->particle.selectmode) sce->toolsettings->particle.selectmode= SCE_SELECT_PATH; - for(me=main->mesh.first; me; me=me->id.next) - multires_load_old_250(me); + if (main->versionfile == 250 && main->subversionfile > 1) { + for(me=main->mesh.first; me; me=me->id.next) + multires_load_old_250(me); - for(ob=main->object.first; ob; ob=ob->id.next) { - MultiresModifierData *mmd = (MultiresModifierData *)modifiers_findByType(ob, eModifierType_Multires); + for(ob=main->object.first; ob; ob=ob->id.next) { + MultiresModifierData *mmd = (MultiresModifierData *)modifiers_findByType(ob, eModifierType_Multires); - if(mmd) { - mmd->totlvl--; - mmd->lvl--; - mmd->sculptlvl= mmd->lvl; - mmd->renderlvl= mmd->lvl; + if(mmd) { + mmd->totlvl--; + mmd->lvl--; + mmd->sculptlvl= mmd->lvl; + mmd->renderlvl= mmd->lvl; + } } } } -- cgit v1.2.3 From fba99b627b001177590e73471f0b0f29a832bc14 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 11 Dec 2009 11:18:55 +0000 Subject: Timeline Drawing Tweaks: * Made the TimeLine current frame indicator get drawn using the standard frame-indicator code. Also, it is now possible to show the frame indicator box beside the line as in the other animation editors, although this is disabled in the timeline due to the closeness of the frame number field. * Removed some old (unnecessary) code -> "Continue Physics" option in TimeLine, which is now obsolete with the current physics options. Feel free to restore if this is not the case. -> Already commented out hacks to create "speed ipo" for curves. There are easy alternatives that are better integrated. -> Unused init/exit callbacks for scrubbing time, since those were only used to set an obsolete flag for timeline drawing that is now used for the indicator. * Switched long-keyframe optimisation code to use constants instead of some magic numbers + fancy trickery... --- release/scripts/ui/space_time.py | 5 +-- source/blender/editors/animation/anim_ops.c | 54 +---------------------- source/blender/editors/animation/keyframes_draw.c | 8 ++-- source/blender/editors/curve/editcurve.c | 39 ---------------- source/blender/editors/space_time/space_time.c | 28 +++--------- source/blender/makesdna/DNA_space_types.h | 2 +- source/blender/makesrna/intern/rna_space.c | 14 +++--- 7 files changed, 19 insertions(+), 131 deletions(-) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 73bfd7f85b7..86347f8c543 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -95,6 +95,7 @@ class TIME_MT_view(bpy.types.Menu): layout.separator() + layout.prop(st, "show_cframe_indicator") layout.prop(st, "only_selected") @@ -142,10 +143,6 @@ class TIME_MT_playback(bpy.types.Menu): layout.separator() - layout.prop(st, "continue_physics") - - layout.separator() - layout.prop(scene, "sync_audio", text="Realtime Playback", icon='SPEAKER') layout.prop(scene, "mute_audio") layout.prop(scene, "scrub_audio") diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 6c8a982b323..6aa638b1ada 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -74,25 +74,6 @@ static int change_frame_poll(bContext *C) return ((curarea) && (curarea->spacetype != SPACE_IPO)); } -/* Set any flags that are necessary to indicate modal time-changing operation */ -static int change_frame_init(bContext *C, wmOperator *op) -{ - ScrArea *curarea= CTX_wm_area(C); - - if (curarea == NULL) - return 0; - - if (curarea->spacetype == SPACE_TIME) { - SpaceTime *stime= CTX_wm_space_time(C); - - /* timeline displays frame number only when dragging indicator */ - // XXX make this more in line with other anim editors? - stime->flag |= TIME_CFRA_NUM; - } - - return 1; -} - /* Set the new frame number */ static void change_frame_apply(bContext *C, wmOperator *op) { @@ -106,33 +87,12 @@ static void change_frame_apply(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); } -/* Clear any temp flags */ -static void change_frame_exit(bContext *C, wmOperator *op) -{ - ScrArea *curarea= CTX_wm_area(C); - - if (curarea == NULL) - return; - - if (curarea->spacetype == SPACE_TIME) { - SpaceTime *stime= CTX_wm_space_time(C); - - /* timeline displays frame number only when dragging indicator */ - // XXX make this more in line with other anim editors? - stime->flag &= ~TIME_CFRA_NUM; - } -} - /* ---- */ /* Non-modal callback for running operator without user input */ static int change_frame_exec(bContext *C, wmOperator *op) { - if (!change_frame_init(C, op)) - return OPERATOR_CANCELLED; - change_frame_apply(C, op); - change_frame_exit(C, op); return OPERATOR_FINISHED; } @@ -166,7 +126,6 @@ static int change_frame_invoke(bContext *C, wmOperator *op, wmEvent *event) */ RNA_int_set(op->ptr, "frame", frame_from_event(C, event)); - change_frame_init(C, op); change_frame_apply(C, op); /* add temp handler */ @@ -175,20 +134,12 @@ static int change_frame_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_RUNNING_MODAL; } -/* In case modal operator is cancelled */ -static int change_frame_cancel(bContext *C, wmOperator *op) -{ - change_frame_exit(C, op); - return OPERATOR_CANCELLED; -} - /* Modal event handling of frame changing */ static int change_frame_modal(bContext *C, wmOperator *op, wmEvent *event) { /* execute the events */ switch (event->type) { case ESCKEY: - change_frame_exit(C, op); return OPERATOR_FINISHED; case MOUSEMOVE: @@ -201,10 +152,8 @@ static int change_frame_modal(bContext *C, wmOperator *op, wmEvent *event) /* we check for either mouse-button to end, as checking for ACTIONMOUSE (which is used to init * the modal op) doesn't work for some reason */ - if (event->val==KM_RELEASE) { - change_frame_exit(C, op); + if (event->val==KM_RELEASE) return OPERATOR_FINISHED; - } break; } @@ -221,7 +170,6 @@ void ANIM_OT_change_frame(wmOperatorType *ot) /* api callbacks */ ot->exec= change_frame_exec; ot->invoke= change_frame_invoke; - ot->cancel= change_frame_cancel; ot->modal= change_frame_modal; ot->poll= change_frame_poll; diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index 4fd9295792b..b19ee5d1dab 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -170,6 +170,9 @@ static void add_bezt_to_keycolumns_list(DLRBT_Tree *keys, BezTriple *bezt) /* ActBeztColumns (Helpers for Long Keyframes) ------------------------------ */ +/* maximum size of default buffer for BezTriple columns */ +#define MAX_ABK_BUFSIZE 4 + /* BezTriple Container Node */ // NOTE: only used internally while building Long Keyframes for now, but may be useful externally? typedef struct ActBeztColumn { @@ -187,7 +190,7 @@ typedef struct ActBeztColumn { short numBezts; /* number of BezTriples on this frame */ float cfra; /* frame that the BezTriples occur on */ - BezTriple *bezts[4]; /* buffer of pointers to BezTriples on the same frame */ + BezTriple *bezts[MAX_ABK_BUFSIZE]; /* buffer of pointers to BezTriples on the same frame */ //BezTriple **bezts_extra; /* secondary buffer of pointers if need be */ } ActBeztColumn; @@ -227,9 +230,8 @@ static void nupdate_abk_bezt (void *node, void *data) BezTriple *bezt= (BezTriple *)data; /* just add the BezTriple to the buffer if there's space, or allocate a new one */ - if (abk->numBezts >= sizeof(abk->bezts)/sizeof(BezTriple)) { + if (abk->numBezts >= MAX_ABK_BUFSIZE) { // TODO: need to allocate new array to cater... - // FIXME: urgent... is a problem when working with duplicate keyframes //bezts_extra= MEM_callocN(...); if(G.f & G_DEBUG) printf("FIXME: nupdate_abk_bezt() missing case for too many overlapping BezTriples \n"); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index aeeb8dffa28..a109e9149cf 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5285,42 +5285,3 @@ void undo_push_curve(bContext *C, char *name) { undo_editmode_push(C, name, get_data, free_undoCurve, undoCurve_to_editCurve, editCurve_to_undoCurve, NULL); } - -/***************** XXX old cruft ********************/ - -void default_curve_ipo(Scene *scene, Curve *cu) -{ -#if 0 // XXX old animation system - IpoCurve *icu; - BezTriple *bezt; - - if(cu->ipo) return; - - cu->ipo= add_ipo(scene, "CurveIpo", ID_CU); - - icu= MEM_callocN(sizeof(IpoCurve), "ipocurve"); - - icu->blocktype= ID_CU; - icu->adrcode= CU_SPEED; - icu->flag= IPO_VISIBLE|IPO_SELECT|IPO_AUTO_HORIZ; - set_icu_vars(icu); - - BLI_addtail( &(cu->ipo->curve), icu); - - icu->bezt= bezt= MEM_callocN(2*sizeof(BezTriple), "defaultipo"); - icu->totvert= 2; - - bezt->hide= IPO_BEZ; - bezt->f1=bezt->f2= bezt->f3= SELECT; - bezt->h1= bezt->h2= HD_AUTO; - bezt++; - bezt->vec[1][0]= 100.0; - bezt->vec[1][1]= 1.0; - bezt->hide= IPO_BEZ; - bezt->f1=bezt->f2= bezt->f3= SELECT; - bezt->h1= bezt->h2= HD_AUTO; - - calchandles_ipocurve(icu); -#endif // XXX old animation system -} - diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 59314fba48e..eea5891a720 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -45,6 +45,7 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" +#include "ED_anim_api.h" #include "ED_keyframes_draw.h" #include "ED_space_api.h" #include "ED_screen.h" @@ -66,27 +67,6 @@ /* ************************ main time area region *********************** */ -/* draws a current frame indicator for the TimeLine */ -static void time_draw_cfra_time(const bContext *C, SpaceTime *stime, ARegion *ar) -{ - Scene *scene= CTX_data_scene(C); - float vec[2]; - - vec[0]= scene->r.cfra*scene->r.framelen; - - UI_ThemeColor(TH_CFRAME); // no theme, should be global color once... - glLineWidth(3.0); - - glBegin(GL_LINES); - vec[1]= ar->v2d.cur.ymin; - glVertex2fv(vec); - vec[1]= ar->v2d.cur.ymax; - glVertex2fv(vec); - glEnd(); - - glLineWidth(1.0); -} - static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar) { View2D *v2d= UI_view2d_fromcontext(C); @@ -218,8 +198,8 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) View2D *v2d= &ar->v2d; View2DGrid *grid; View2DScrollers *scrollers; + int unit, flag=0; float col[3]; - int unit; /* clear and setup matrix */ UI_GetThemeColor3fv(TH_BACK, col); @@ -241,7 +221,9 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) time_draw_keyframes(C, stime, ar); /* current frame */ - time_draw_cfra_time(C, stime, ar); + if ((stime->flag & TIME_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; + if (stime->flag & TIME_CFRA_NUM) flag |= DRAWCFRA_SHOW_NUMBOX; + ANIM_draw_cfra(C, v2d, flag); /* markers */ UI_view2d_view_orthoSpecial(C, v2d, 1); diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 7a76417fe4b..49893e9c015 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -825,7 +825,7 @@ enum { /* time->flag */ /* show timing in frames instead of in seconds */ #define TIME_DRAWFRAMES 1 - /* temporary flag set when scrubbing time */ + /* show time indicator box beside the frame number */ #define TIME_CFRA_NUM 2 /* only keyframes from active/selected channels get shown */ #define TIME_ONLYACTSEL 4 diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 9f8d5278a27..20ef8519bb2 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1458,7 +1458,6 @@ static void rna_def_space_time(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Space Timeline Editor", "Timeline editor space data."); /* Define Anim Playback Areas */ - prop= RNA_def_property(srna, "play_top_left", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_REGION); RNA_def_property_ui_text(prop, "Top-Left 3D Window", ""); @@ -1494,17 +1493,16 @@ static void rna_def_space_time(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Node Windows", ""); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update"); - /* Other options */ - - prop= RNA_def_property(srna, "continue_physics", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_CONTINUE_PHYSICS); - RNA_def_property_ui_text(prop, "Continue Physics", "During playblack, continue physics simulations regardless of the frame number"); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); - + /* Other options */ prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_ONLYACTSEL); RNA_def_property_ui_text(prop, "Only Selected channels", "Show keyframes only from active/selected channels."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_CFRA_NUM); + RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); } static void rna_def_console_line(BlenderRNA *brna) -- cgit v1.2.3 From c6ffe237629b771f86eb92c755b0897e3a2233e0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 11 Dec 2009 14:16:17 +0000 Subject: Sculpt Branch: * Added detection if VBO extension is supported. * Redraw other 3d views after sculpting. * Fix brush sometimes punching through mesh with very small polygons, added an extra epsilon to the ray-triangle intersection. --- source/blender/blenlib/BLI_pbvh.h | 6 +++--- source/blender/blenlib/intern/pbvh.c | 28 +++++++++++----------------- source/blender/editors/sculpt_paint/sculpt.c | 2 ++ source/blender/gpu/intern/gpu_buffers.c | 10 +++++++--- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index e1e733c91df..12c13de183c 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -88,9 +88,9 @@ typedef enum { PBVH_UpdateNormals = 2, PBVH_UpdateBB = 4, - PBVH_UpdateOriginalBB = 4, - PBVH_UpdateDrawBuffers = 8, - PBVH_UpdateRedraw = 16 + PBVH_UpdateOriginalBB = 8, + PBVH_UpdateDrawBuffers = 16, + PBVH_UpdateRedraw = 32 } PBVHNodeFlags; void BLI_pbvh_node_mark_update(PBVHNode *node); diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 960888260ce..f0464438b68 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1142,8 +1142,8 @@ static int ray_face_intersection(float ray_start[3], float ray_normal[3], { float dist = FLT_MAX; - if(!isect_ray_tri_v3(ray_start, ray_normal, t0, t1, t2, - &dist, NULL)) + if(!isect_ray_tri_threshold_v3(ray_start, ray_normal, t0, t1, t2, + &dist, NULL, 0.001f)) dist = FLT_MAX; if(dist >= 0 && dist < *fdist) { @@ -1232,32 +1232,26 @@ int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], return hit; } -#if 0 -static int nodes_drawn = 0; -static int is_partial = 0; -/* XXX: Just a temporary replacement for the real drawing code */ -static void draw_partial_cb(PBVHNode *node, void *data) +//#include +void BLI_pbvh_node_draw(PBVHNode *node, void *data) +{ +#if 0 /* XXX: Just some quick code to show leaf nodes in different colors */ - /*float col[3]; int i; - if(is_partial) { + float col[3]; int i; + + if(0) { //is_partial) { col[0] = (rand() / (float)RAND_MAX); col[1] = col[2] = 0.6; } else { - srand((long long)data_v); + srand((long long)node); for(i = 0; i < 3; ++i) col[i] = (rand() / (float)RAND_MAX) * 0.3 + 0.7; } glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col); - glColor3f(1, 0, 0);*/ - GPU_draw_buffers(BLI_pbvh_node_get_draw_buffers(node)); - ++nodes_drawn; -} + glColor3f(1, 0, 0); #endif - -void BLI_pbvh_node_draw(PBVHNode *node, void *data) -{ GPU_draw_buffers(node->draw_buffers); } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index c715dc97cde..8b705ff5b5e 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -2054,6 +2054,8 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) BLI_pbvh_update(ss->tree, PBVH_UpdateOriginalBB, NULL); if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); + + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); } } diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index af220487ab1..33aa4168ff8 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -457,10 +457,12 @@ void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, /* Count the number of triangles */ for(i = 0, tottri = 0; i < totface; ++i) tottri += mface[face_indices[i]].v4 ? 2 : 1; + + if(GL_ARB_vertex_buffer_object) + glGenBuffersARB(1, &buffers->index_buf); if(buffers->index_buf) { /* Generate index buffer object */ - glGenBuffersARB(1, &buffers->index_buf); glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(unsigned short) * tottri * 3, NULL, GL_STATIC_DRAW_ARB); @@ -503,7 +505,7 @@ void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); } - if(buffers->vert_buf) + if(buffers->index_buf) glGenBuffersARB(1, &buffers->vert_buf); GPU_update_mesh_buffers(buffers, mvert, vert_indices, totvert); @@ -567,7 +569,9 @@ void *GPU_build_grid_buffers(DMGridData **grids, totquad= (gridsize-1)*(gridsize-1)*totgrid; /* Generate index buffer object */ - glGenBuffersARB(1, &buffers->index_buf); + if(GL_ARB_vertex_buffer_object) + glGenBuffersARB(1, &buffers->index_buf); + if(buffers->index_buf) { glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf); -- cgit v1.2.3 From fb28896cf78c6c7444fc959fce56cea23b7de4f5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Dec 2009 14:16:59 +0000 Subject: * added an armature submenu where python defined armatures can go. * bpy.utils.display_name(), which makes filenames and module names look nicer in menus eg... /home/me/foo_bar.py --> "Foo Bar" * missing rna_path --> data_path renaming --- release/scripts/modules/bpy/utils.py | 17 ++++++++++++ release/scripts/modules/bpy_types.py | 18 ++----------- release/scripts/modules/rigify/__init__.py | 31 ++++++++++++++-------- release/scripts/modules/rigify/copy.py | 15 ++++++++++- release/scripts/modules/rigify/palm_curl.py | 20 ++++++++++++++ release/scripts/ui/space_info.py | 19 +++++++------ source/blender/editors/space_graph/graph_buttons.c | 4 +-- 7 files changed, 86 insertions(+), 38 deletions(-) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index 76e8b011628..ad0fa4e8ba5 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -53,6 +53,23 @@ def clean_name(name, replace="_"): name = name.replace(ch, replace) return name +def display_name(name): + ''' + Only capitalize all lowercase names, mixed case use them as is. + should work with filenames and module names. + ''' + name_base = os.path.splitext(name)[0] + + # string replacements + name_base = name_base.replace("_colon_", ":") + + name_base = name_base.replace("_", " ") + + if name_base.lower() == name_base: + return ' '.join([w[0].upper() + w[1:] for w in name_base.split()]) + else: + return name_base + # base scripts _scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 28ea2d71be8..239990e2bd5 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -288,21 +288,7 @@ class Menu(StructRNA): # hard coded to set the operators 'path' to the filename. import os - - def path_to_name(f): - ''' Only capitalize all lowercase names, mixed case use them as is. - ''' - f_base = os.path.splitext(f)[0] - - # string replacements - f_base = f_base.replace("_colon_", ":") - - f_base = f_base.replace("_", " ") - - if f_base.lower() == f_base: - return ' '.join([w[0].upper() + w[1:] for w in f_base.split()]) - else: - return f_base + import bpy.utils layout = self.layout @@ -318,7 +304,7 @@ class Menu(StructRNA): if f.startswith("."): continue - layout.operator(operator, text=path_to_name(f)).path = path + layout.operator(operator, text=bpy.utils.display_name(f)).path = path def draw_preset(self, context): '''Define these on the subclass diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 5d1ec2e1e5a..33a2f4c007e 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -51,9 +51,24 @@ def submodule_func_from_type(bone_type): reload(submod) return submod, getattr(submod, func_name) + + +def submodule_types(): + import os + submodules = [] + files = os.listdir(os.path.dirname(__file__)) + for f in files: + if not f.startswith("_") and f.endswith(".py"): + submodules.append(f[:-3]) + return sorted(submodules) + def validate_rig(context, obj): + ''' + Makes no changes + only runs the metarig definitions and reports errors + ''' type_found = False for pbone in obj.pose.bones: @@ -81,6 +96,9 @@ def validate_rig(context, obj): def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): + ''' + Main function for generating + ''' from collections import OrderedDict import rigify_utils reload(rigify_utils) @@ -307,20 +325,11 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): obj.selected = False obj_new.selected = True - files = os.listdir(os.path.dirname(__file__)) - for f in files: - if f.startswith("_"): - continue - - if not f.endswith(".py"): - continue - - module_name = f[:-3] - + for module_name in submodule_types(): if (metarig_type and module_name != metarig_type): continue - submodule = __import__(name="%s.%s" % (__package__, module_name), fromlist=[module_name]) + submodule, func = submodule_func_from_type(module_name) metarig_template = getattr(submodule, "metarig_template", None) diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 2be5669e5a6..21d0970234b 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -24,8 +24,21 @@ from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = ("cpy",) +# note, this example is just a bone with copy property. def metarig_template(): - pass + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('Bone') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.0000, 0.0000, 1.0000 + bone.roll = 0.0000 + bone.connected = False + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['Bone'] + pbone['type'] = 'copy' def metarig_definition(obj, orig_bone_name): return [orig_bone_name] diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 6c9ff516c49..867889b0084 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -162,6 +162,26 @@ def main(obj, bone_definition, base_names): # ***** driver = driver_fcurves[2].driver driver.expression = "(1.0-cos(x))-s" + + def x_direction(): + # NOTE: the direction of the Z rotation depends on which side the palm is on. + # we could do a simple side-of-x test but better to work out the direction + # the hand is facing. + from Mathutils import Vector, AngleBetweenVecs + from math import degrees + child_pbone_01 = obj.pose.bones[children[0]] + child_pbone_02 = obj.pose.bones[children[1]] + + rel_vec = child_pbone_01.head - child_pbone_02.head + x_vec = child_pbone_01.matrix.rotationPart() * Vector(1.0, 0.0, 0.0) + return degrees(AngleBetweenVecs(rel_vec, x_vec)) > 90.0 + + if x_direction(): # flip + driver.expression = "-(%s)" % driver.expression + + for fcurve in driver_fcurves: + fcurve.modifiers.remove(0) # grr dont need a modifier + tar = driver.targets.new() tar.name = "x" tar.id_type = 'OBJECT' diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 37075ac3188..57410daf2b5 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -182,6 +182,15 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu): layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") +class INFO_MT_armature_add(dynamic_menu.DynMenu): + bl_idname = "INFO_MT_armature_add" + bl_label = "Armature" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA') + class INFO_MT_add(bpy.types.Menu): bl_label = "Add" @@ -198,27 +207,20 @@ class INFO_MT_add(bpy.types.Menu): layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='OUTLINER_OB_META') layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT') - layout.separator() layout.operator_context = 'INVOKE_REGION_WIN' - - layout.operator("object.armature_add", text="Armature", icon='OUTLINER_OB_ARMATURE') + layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE') layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE' layout.operator("object.add", text="Empty", icon='OUTLINER_OB_EMPTY').type = 'EMPTY' - layout.separator() layout.operator("object.add", text="Camera", icon='OUTLINER_OB_CAMERA').type = 'CAMERA' - layout.operator_context = 'EXEC_SCREEN' - layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='OUTLINER_OB_LAMP') - layout.separator() layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='OUTLINER_OB_EMPTY') - layout.separator() layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='OUTLINER_OB_EMPTY') @@ -292,6 +294,7 @@ bpy.types.register(INFO_MT_file_export) bpy.types.register(INFO_MT_file_external_data) bpy.types.register(INFO_MT_add) bpy.types.register(INFO_MT_mesh_add) +bpy.types.register(INFO_MT_armature_add) bpy.types.register(INFO_MT_game) bpy.types.register(INFO_MT_render) bpy.types.register(INFO_MT_help) diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 05987087288..1eaac8ffd20 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -198,7 +198,7 @@ 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, "rna_path", 0); + uiItemR(col, "", ICON_RNA, &fcu_ptr, "data_path", 0); uiItemR(col, NULL, 0, &fcu_ptr, "array_index", 0); /* color settings */ @@ -396,7 +396,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) col= uiLayoutColumn(box, 1); block= uiLayoutGetBlock(col); /* rna path */ - uiTemplatePathBuilder(col, (bContext *)C, &dtar_ptr, "rna_path", &root_ptr, "Path"); + uiTemplatePathBuilder(col, (bContext *)C, &dtar_ptr, "data_path", &root_ptr, "Path"); /* array index */ // TODO: this needs selector which limits it to ok values -- cgit v1.2.3 From b056f8eeba9c130edf15605d55386cf4f48ba042 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Fri, 11 Dec 2009 14:25:37 +0000 Subject: Fix small mem leak in wm_window_get_size_ghost --- source/blender/windowmanager/intern/wm_window.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 6ae320da912..54f6d58ced4 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -944,6 +944,8 @@ void wm_window_get_size_ghost(wmWindow *win, int *width_r, int *height_r) GHOST_RectangleHandle bounds= GHOST_GetClientBounds(win->ghostwin); *width_r= GHOST_GetWidthRectangle(bounds); *height_r= GHOST_GetHeightRectangle(bounds); + + GHOST_DisposeRectangle(bounds); } void wm_window_set_size(wmWindow *win, int width, int height) -- cgit v1.2.3 From 912877f290281190ed2fc12d333ba43c0607874b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 11 Dec 2009 14:34:21 +0000 Subject: UV Editor: added proportional edit buttons to the header. --- release/scripts/ui/space_image.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 0abbdf01edb..27d0aa91349 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -286,6 +286,11 @@ class IMAGE_HT_header(bpy.types.Header): layout.prop(settings, "uv_selection_mode", text="", expand=True) layout.prop(uvedit, "sticky_selection_mode", text="", icon_only=True) + row = layout.row(align=True) + row.prop(settings, "proportional_editing", text="", icon_only=True) + if settings.proportional_editing != 'DISABLED': + row.prop(settings, "proportional_editing_falloff", text="", icon_only=True) + row = layout.row(align=True) row.prop(settings, "snap", text="") row.prop(settings, "snap_element", text="", icon_only=True) -- cgit v1.2.3 From ab18fe02c458a88b4a010c23f0703ab999b5a9f8 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Fri, 11 Dec 2009 16:01:47 +0000 Subject: expand path for external player --- release/scripts/op/screen_play_rendered_anim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index e98fa45cbaa..bee73968b84 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -73,7 +73,7 @@ class PlayRenderedAnim(bpy.types.Operator): player_path = 'djv_view' # doesn't support ### frame notation yet - file = "%s%04d" % (rd.output_path, sce.start_frame) + file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) if rd.file_extensions: file += '.' + img_format_exts[rd.file_format] -- cgit v1.2.3 From 026364dcca6539c4e3ad6a5010cba81e61638ef2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Dec 2009 16:30:27 +0000 Subject: rigify * optional default blend argument, use for better leg & arm defaults * way to define arbitrary options for bones that can then be passed to the generator function, only used to set elbow target parent at the moment. --- release/scripts/modules/rigify/__init__.py | 56 ++++++++++++++-------- .../scripts/modules/rigify/arm_biped_generic.py | 26 +++++++--- release/scripts/modules/rigify/copy.py | 2 +- release/scripts/modules/rigify/delta.py | 2 +- release/scripts/modules/rigify/finger_curl.py | 20 ++------ .../scripts/modules/rigify/leg_biped_generic.py | 12 ++--- release/scripts/modules/rigify/neck_flex.py | 2 +- release/scripts/modules/rigify/palm_curl.py | 36 +++++++------- release/scripts/modules/rigify/spine_pivot_flex.py | 6 +-- release/scripts/modules/rigify_utils.py | 4 +- 10 files changed, 94 insertions(+), 72 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 33a2f4c007e..6ec90015d61 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -41,19 +41,19 @@ def submodule_func_from_type(bone_type): if len(type_pair) == 1: type_pair = type_pair[0], "main" - submod_name, func_name = type_pair + type_name, func_name = type_pair # from rigify import leg try: - submod = __import__(name="%s.%s" % (__package__, submod_name), fromlist=[submod_name]) + submod = __import__(name="%s.%s" % (__package__, type_name), fromlist=[type_name]) except ImportError: - raise RigifyError("python module for type '%s' not found" % submod_name) + raise RigifyError("python module for type '%s' not found" % type_name) reload(submod) - return submod, getattr(submod, func_name) + return type_name, submod, getattr(submod, func_name) -def submodule_types(): +def get_submodule_types(): import os submodules = [] files = os.listdir(os.path.dirname(__file__)) @@ -63,6 +63,17 @@ def submodule_types(): return sorted(submodules) +def get_bone_type_options(pbone, type_name): + options = {} + bone_name = pbone.name + for key, value in pbone.items(): + key_pair = key.split(".") + if key_pair[0] == type_name: + if len(key_pair) != 2: + raise RigifyError("option error for bone '%s', property name was not a pair '%s'" % (bone_name, key_pair)) + options[key_pair[1]] = value + + return options def validate_rig(context, obj): ''' @@ -84,11 +95,13 @@ def validate_rig(context, obj): if bone_type.split(".")[0] in SPECIAL_TYPES: continue - submod, type_func = submodule_func_from_type(bone_type) + type_name, submod, type_func = submodule_func_from_type(bone_type) reload(submod) submod.metarig_definition(obj, bone_name) type_found = True - + + get_bone_type_options(pbone, bone_type) + # missing, - check for duplicate root bone. if not type_found: @@ -162,6 +175,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # ...needed so we can override the root parent bone_genesis = {} + # inspect all bones and assign their definitions before modifying for pbone in obj.pose.bones: bone_name = pbone.name @@ -181,18 +195,17 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bone_type_list[:] = [] for bone_type in bone_type_list: - submod, type_func = submodule_func_from_type(bone_type) + type_name, submod, type_func = submodule_func_from_type(bone_type) reload(submod) - submod_name = submod.__name__ bone_def_dict = bone_definitions.setdefault(bone_name, {}) # Only calculate bone definitions once - if submod_name not in bone_def_dict: - bone_def_dict[submod_name] = submod.metarig_definition(obj, bone_name) + if type_name not in bone_def_dict: + bone_def_dict[type_name] = submod.metarig_definition(obj, bone_name) bone_typeinfo = bone_typeinfos.setdefault(bone_name, []) - bone_typeinfo.append((submod_name, type_func)) + bone_typeinfo.append((type_name, type_func)) # sort bones, not needed but gives more pradictable execution which may be useful in rare cases @@ -216,16 +229,17 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bone_names_pre = set([bone.name for bone in arm.bones]) - for submod_name, type_func in bone_typeinfos[bone_name]: + for type_name, type_func in bone_typeinfos[bone_name]: # this bones definition of the current typeinfo - definition = bone_def_dict[submod_name] + definition = bone_def_dict[type_name] + options = get_bone_type_options(pbone, type_name) bpy.ops.object.mode_set(mode='EDIT') - ret = type_func(obj, definition, base_names) + ret = type_func(obj, definition, base_names, options) bpy.ops.object.mode_set(mode='OBJECT') if ret: - result_submod = results.setdefault(submod_name, []) + result_submod = results.setdefault(type_name, []) if result_submod and len(result_submod[-1]) != len(ret): raise Exception("bone lists not compatible: %s, %s" % (result_submod[-1], ret)) @@ -234,7 +248,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): for result_submod in results.values(): # blend 2 chains - definition = bone_def_dict[submod_name] + definition = bone_def_dict[type_name] if len(result_submod) == 2: blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name) @@ -325,11 +339,15 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): obj.selected = False obj_new.selected = True - for module_name in submodule_types(): + for module_name in get_submodule_types(): if (metarig_type and module_name != metarig_type): continue + + # XXX workaround!, problem with updating the pose matrix. + if module_name=="delta": + continue - submodule, func = submodule_func_from_type(module_name) + type_name, submodule, func = submodule_func_from_type(module_name) metarig_template = getattr(submodule, "metarig_template", None) diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index e22857852ee..a9b5e62775e 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -93,7 +93,10 @@ def metarig_definition(obj, orig_bone_name): return mt.names() -def ik(obj, definitions, base_names): +def ik(obj, definitions, base_names, options): + print(options) + arm = obj.data + mt = bone_class_instance(obj, METARIG_NAMES) mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions mt.update() @@ -117,6 +120,17 @@ def ik(obj, definitions, base_names): ik.update() ik.pole_e.local_location = False + # option: elbow_parent + elbow_parent_name = options.get("elbow_parent", "") + + if elbow_parent_name: + try: + elbow_parent_e = arm.edit_bones[elbow_parent_name] + except: + # TODO, old/new parent mapping + raise RigifyError("parent bone from property 'arm_biped_generic.elbow_parent' not found '%s'" % elbow_parent_name) + ik.pole_e.parent = elbow_parent_e + # update bones after this! ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) @@ -162,7 +176,7 @@ def ik(obj, definitions, base_names): return [None] + ik_chain.names() -def fk(obj, definitions, base_names): +def fk(obj, definitions, base_names, options): arm = obj.data @@ -254,9 +268,9 @@ def fk(obj, definitions, base_names): return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand -def main(obj, bone_definition, base_names): - bones_ik = ik(obj, bone_definition, base_names) - bones_fk = fk(obj, bone_definition, base_names) +def main(obj, bone_definition, base_names, options): + bones_ik = ik(obj, bone_definition, base_names, options) + bones_fk = fk(obj, bone_definition, base_names, options) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1], blend_default=1.0) diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 21d0970234b..70086b70907 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -44,7 +44,7 @@ def metarig_definition(obj, orig_bone_name): return [orig_bone_name] -def main(obj, bone_definition, base_names): +def main(obj, bone_definition, base_names, options): arm = obj.data mt = bone_class_instance(obj, METARIG_NAMES) mt.cpy = bone_definition[0] diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 261e2b22479..4e1d8ce4571 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -75,7 +75,7 @@ def metarig_definition(obj, orig_bone_name): return bone_definition -def main(obj, bone_definition, base_names): +def main(obj, bone_definition, base_names, options): ''' Use this bone to define a delta thats applied to its child in pose mode. ''' diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 7f21eecd7d3..d260bb1a67a 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -20,7 +20,7 @@ import bpy from rigify import RigifyError -from rigify_utils import copy_bone_simple, get_side_name, get_base_name, EMPTY_LAYER +from rigify_utils import copy_bone_simple, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -85,21 +85,17 @@ def metarig_definition(obj, orig_bone_name): return bone_definition -def main(obj, bone_definition, base_names): - +def main(obj, bone_definition, base_names, options): # *** EDITMODE # get assosiated data arm = obj.data - orig_pbone = obj.pose.bones[bone_definition[0]] orig_ebone = arm.edit_bones[bone_definition[0]] obj.animation_data_create() # needed if its a new armature with no keys - arm.layer[0] = arm.layer[8] = True - - children = orig_pbone.children_recursive - tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length) + children = orig_ebone.children_recursive + tot_len = reduce(lambda f, ebone: f + ebone.length, children, orig_ebone.length) # FIXME, the line below is far too arbitrary base_name = base_names[bone_definition[0]].rsplit(".", 2)[0] @@ -116,12 +112,7 @@ def main(obj, bone_definition, base_names): # now add bones inbetween this and its children recursively # switching modes so store names only! - children = [pbone.name for pbone in children] - - # set an alternate layer for driver bones - other_layer = EMPTY_LAYER[:] - other_layer[8] = True - + children = [ebone.name for ebone in children] driver_bone_pairs = [] @@ -134,7 +125,6 @@ def main(obj, bone_definition, base_names): driver_ebone = copy_bone_simple(arm, child_ebone.name, driver_bone_name) driver_ebone.length *= 0.5 - driver_ebone.layer = other_layer # Insert driver_ebone in the chain without connected parents driver_ebone.connected = False diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 65fde79da6e..4ce7352539a 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -125,7 +125,7 @@ def metarig_definition(obj, orig_bone_name): return bone_definition -def ik(obj, bone_definition, base_names): +def ik(obj, bone_definition, base_names, options): arm = obj.data # setup the existing bones @@ -274,7 +274,7 @@ def ik(obj, bone_definition, base_names): return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None -def fk(obj, bone_definition, base_names): +def fk(obj, bone_definition, base_names, options): from Mathutils import Vector arm = obj.data @@ -354,9 +354,9 @@ def fk(obj, bone_definition, base_names): return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None -def main(obj, bone_definition, base_names): - bones_ik = ik(obj, bone_definition, base_names) - bones_fk = fk(obj, bone_definition, base_names) +def main(obj, bone_definition, base_names, options): + bones_ik = ik(obj, bone_definition, base_names, options) + bones_fk = fk(obj, bone_definition, base_names, options) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1]) + blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1], blend_default=0.0) diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 9bb852b25b5..15efc2a6985 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -100,7 +100,7 @@ def metarig_definition(obj, orig_bone_name): return bone_definition -def main(obj, bone_definition, base_names): +def main(obj, bone_definition, base_names, options): from Mathutils import Vector arm = obj.data diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 867889b0084..4ad0cfe3675 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -96,7 +96,7 @@ def metarig_definition(obj, orig_bone_name): return [palm_parent.name] + bone_definition -def main(obj, bone_definition, base_names): +def main(obj, bone_definition, base_names, options): arm = obj.data children = bone_definition[1:] @@ -163,22 +163,6 @@ def main(obj, bone_definition, base_names): driver = driver_fcurves[2].driver driver.expression = "(1.0-cos(x))-s" - def x_direction(): - # NOTE: the direction of the Z rotation depends on which side the palm is on. - # we could do a simple side-of-x test but better to work out the direction - # the hand is facing. - from Mathutils import Vector, AngleBetweenVecs - from math import degrees - child_pbone_01 = obj.pose.bones[children[0]] - child_pbone_02 = obj.pose.bones[children[1]] - - rel_vec = child_pbone_01.head - child_pbone_02.head - x_vec = child_pbone_01.matrix.rotationPart() * Vector(1.0, 0.0, 0.0) - return degrees(AngleBetweenVecs(rel_vec, x_vec)) > 90.0 - - if x_direction(): # flip - driver.expression = "-(%s)" % driver.expression - for fcurve in driver_fcurves: fcurve.modifiers.remove(0) # grr dont need a modifier @@ -229,5 +213,23 @@ def main(obj, bone_definition, base_names): child_pbone = obj.pose.bones[children[-1]] child_pbone.rotation_mode = 'QUATERNION' + # fix at the end since there is some trouble with tx info not being updated otherwise + def x_direction(): + # NOTE: the direction of the Z rotation depends on which side the palm is on. + # we could do a simple side-of-x test but better to work out the direction + # the hand is facing. + from Mathutils import Vector, AngleBetweenVecs + from math import degrees + child_pbone_01 = obj.pose.bones[children[0]].bone + child_pbone_02 = obj.pose.bones[children[1]].bone + + rel_vec = child_pbone_01.head - child_pbone_02.head + x_vec = child_pbone_01.matrix.rotationPart() * Vector(1.0, 0.0, 0.0) + print(rel_vec, x_vec) + return degrees(AngleBetweenVecs(rel_vec, x_vec)) > 90.0 + + if x_direction(): # flip + driver.expression = "-(%s)" % driver.expression + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index beeb5c68b7c..f2608732c37 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -121,7 +121,7 @@ def fk(*args): main(*args) -def main(obj, bone_definition, base_names): +def main(obj, bone_definition, base_names, options): from Mathutils import Vector, RotationMatrix from math import radians, pi @@ -155,11 +155,9 @@ def main(obj, bone_definition, base_names): ex.ribcage_hinge = ex.ribcage_hinge_e.name ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) - ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename) + ex.spine_rotate_e = copy_bone_simple(arm, mt.ribcage, "MCH-%s_rotate" % spine_chain_basename) ex.spine_rotate = ex.spine_rotate_e.name ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) - # swap head/tail - ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy() ex.spine_rotate_e.connected = False ex.spine_rotate_e.parent = ex.pelvis_copy_e diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index a1fc54cb5bb..6b15329c992 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -113,7 +113,7 @@ def copy_bone_simple_list(arm, from_bones, to_bones, parent=False): return copy_bones -def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend"): +def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, target_prop="blend", blend_default=0.5): if obj.mode == 'EDIT': raise Exception("blending cant be called in editmode") @@ -130,7 +130,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta prop_pbone = obj.pose.bones[target_bone] if prop_pbone.get(target_bone, None) is None: prop = rna_idprop_ui_prop_get(prop_pbone, target_prop, create=True) - prop_pbone[target_prop] = 0.5 + prop_pbone[target_prop] = blend_default prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 -- cgit v1.2.3 From cb4d9a7427e28f360dc168fab225e24c343dc10e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 11 Dec 2009 16:59:09 +0000 Subject: Sculpt: * Temporary workaround for sculpt not working well with small polygons, still seems to be some issues, but can at least paint now. * Small optimization avoiding local function variable aliasing. --- source/blender/blenlib/BLI_math_geom.h | 2 ++ source/blender/blenlib/BLI_pbvh.h | 29 +++++++++++++++++++++++---- source/blender/blenlib/intern/math_geom.c | 33 +++++++++++++++++++++++++++++++ source/blender/blenlib/intern/pbvh.c | 24 ++++------------------ 4 files changed, 64 insertions(+), 24 deletions(-) diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index c50d9caade0..49d335f6c5c 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -85,6 +85,8 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv); int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold); +int isect_ray_tri_epsilon_v3(float p1[3], float d[3], + float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon); /* point in polygon */ int isect_point_tri_v2(float p[2], float a[2], float b[2], float c[2]); diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 12c13de183c..148d9507c14 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -100,6 +100,8 @@ void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, struct DMGridData ***griddata, struct DMGridAdjacency **gridadj); void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert); +void BLI_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, + int **vert_indices, struct MVert **verts); void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); @@ -149,11 +151,30 @@ typedef struct PBVHVertexIter { float *fno; } PBVHVertexIter; -void BLI_pbvh_node_verts_iter_init(PBVH *bvh, PBVHNode *node, PBVHVertexIter *vi, int mode); - #define BLI_pbvh_vertex_iter_begin(bvh, node, vi, mode) \ - /* XXX breaks aliasing! */ \ - BLI_pbvh_node_verts_iter_init(bvh, node, &vi, mode); \ + { \ + struct DMGridData **grids; \ + struct MVert *verts; \ + int *grid_indices, totgrid, gridsize, *vert_indices, uniq_verts, totvert; \ + \ + memset(&vi, 0, sizeof(PBVHVertexIter)); \ + \ + BLI_pbvh_node_get_grids(bvh, node, &grid_indices, &totgrid, NULL, &gridsize, &grids, NULL); \ + BLI_pbvh_node_num_verts(bvh, node, &uniq_verts, &totvert); \ + BLI_pbvh_node_get_verts(bvh, node, &vert_indices, &verts); \ + \ + vi.grids= grids; \ + vi.grid_indices= grid_indices; \ + vi.totgrid= (grids)? totgrid: 1; \ + vi.gridsize= gridsize; \ + \ + if(mode == PBVH_ITER_ALL) \ + vi.totvert = totvert; \ + else \ + vi.totvert= uniq_verts; \ + vi.vert_indices= vert_indices; \ + vi.mverts= verts; \ + }\ \ for(vi.i=0, vi.g=0; vi.g 1.0+epsilon)) return 0; + + v = f * dot_v3v3(d, q); + if ((v < -epsilon)||((u + v) > 1.0+epsilon)) return 0; + + if(uv) { + uv[0]= u; + uv[1]= v; + } + + return 1; +} + int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold) { float p[3], s[3], e1[3], e2[3], q[3]; diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index f0464438b68..d8e3fe4b0be 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1006,11 +1006,10 @@ void BLI_pbvh_node_mark_update(PBVHNode *node) node->flag |= PBVH_UpdateNormals|PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateDrawBuffers|PBVH_UpdateRedraw; } -void BLI_pbvh_node_get_verts(PBVHNode *node, int **vert_indices, int *totvert, int *allvert) +void BLI_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, int **vert_indices, MVert **verts) { if(vert_indices) *vert_indices= node->vert_indices; - if(totvert) *totvert= node->uniq_verts; - if(allvert) *allvert= node->uniq_verts + node->face_verts; + if(verts) *verts= bvh->verts; } void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert) @@ -1100,7 +1099,7 @@ static int ray_aabb_intersect(PBVHNode *node, void *data_v) if((tmin > tzmax) || (tzmin > tmax)) return 0; - + return 1; /* XXX: Not sure about this? @@ -1142,7 +1141,7 @@ static int ray_face_intersection(float ray_start[3], float ray_normal[3], { float dist = FLT_MAX; - if(!isect_ray_tri_threshold_v3(ray_start, ray_normal, t0, t1, t2, + if(!isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2, &dist, NULL, 0.001f)) dist = FLT_MAX; @@ -1300,18 +1299,3 @@ void BLI_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3]) } } -void BLI_pbvh_node_verts_iter_init(PBVH *bvh, PBVHNode *node, PBVHVertexIter *vi, int mode) -{ - memset(vi, 0, sizeof(PBVHVertexIter)); - vi->grids= bvh->grids; - vi->grid_indices= node->prim_indices; - vi->totgrid= (bvh->grids)? node->totprim: 1; - vi->gridsize= bvh->gridsize; - - vi->totvert= node->uniq_verts; - if(mode == PBVH_ITER_ALL) - vi->totvert += node->face_verts; - vi->vert_indices= node->vert_indices; - vi->mverts= bvh->verts; -} - -- cgit v1.2.3 From 03634d47b09c9373778928d39ffe97817b1186e3 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Fri, 11 Dec 2009 18:02:42 +0000 Subject: MSVC projectfiles * update for sculpt merge NOTE: BLI_blenlib now uses functions in BL_gpu - I added the necessary include path to make it compile, but I'm not sure if this dependency shouldn't be avoided. --- .../blender/blenkernel/BKE_blenkernel.vcproj | 8 ++++++++ projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj | 20 ++++++++++++++------ projectfiles_vc9/blender/editors/ED_editors.vcproj | 4 ++++ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj index bc6aebb37da..2656bf09ee7 100644 --- a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj +++ b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj @@ -582,6 +582,10 @@ RelativePath="..\..\..\source\blender\blenkernel\intern\customdata.c" > + + @@ -907,6 +911,10 @@ RelativePath="..\..\..\source\blender\blenkernel\BKE_customdata.h" > + + diff --git a/projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj b/projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj index 4626d3fbdec..c3064fdca88 100644 --- a/projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj +++ b/projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj @@ -43,7 +43,7 @@ + + @@ -752,6 +756,10 @@ RelativePath="..\..\..\source\blender\blenlib\BLI_mempool.h" > + + diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj index bd8e00461d7..0956dd7c388 100644 --- a/projectfiles_vc9/blender/editors/ED_editors.vcproj +++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj @@ -1307,6 +1307,10 @@ RelativePath="..\..\..\source\blender\editors\sculpt_paint\paint_stroke.c" > + + -- cgit v1.2.3 From b7a344cf7c13ce614905a0042a0b869307ce0c28 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Fri, 11 Dec 2009 19:23:11 +0000 Subject: *Missing notifier for Render Border. --- source/blender/editors/space_view3d/view3d_edit.c | 2 ++ source/blender/makesrna/intern/rna_scene.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 6a58e3c2e8d..7714f117e9c 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1380,6 +1380,8 @@ static int render_border_exec(bContext *C, wmOperator *op) } else { scene->r.mode |= R_BORDER; } + + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 100df4645c7..83a945f2bea 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1992,7 +1992,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "use_border", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", R_BORDER); RNA_def_property_ui_text(prop, "Border", "Render a user-defined border region, within the frame size."); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); prop= RNA_def_property(srna, "border_min_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "border.xmin"); -- cgit v1.2.3 From 3fd73289bdbacf47a2b53fb135524a5d6bcb65bf Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Fri, 11 Dec 2009 19:27:47 +0000 Subject: Add include path to access gpu_buffers.h from pbvh.c. --- source/blender/blenlib/intern/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/blenlib/intern/Makefile b/source/blender/blenlib/intern/Makefile index f729a4e3fe0..d8aed3ac0ed 100644 --- a/source/blender/blenlib/intern/Makefile +++ b/source/blender/blenlib/intern/Makefile @@ -50,6 +50,8 @@ CPPFLAGS += -I../../editors/include/ # path to zlib CPPFLAGS += -I$(NAN_ZLIB)/include +CPPFLAGS += -I../../gpu + ifdef NAN_PTHREADS CPPFLAGS += -I$(NAN_PTHREADS)/include endif -- cgit v1.2.3 From 86028a66319a67ed14b6d6cd43053a529df5b4a8 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Fri, 11 Dec 2009 22:51:53 +0000 Subject: Sequencer: Transform Strip updates (Durian wish) Removed the Start/End Settings and the effect_fader from the sequencer transform strip. The transform strip can now only be animated directly by keying the Scale X, Scale Y, Translate X, Translate Y and Rotation values. Caveat: The uniform scale re-uses the Scale X value, so when changing the animation on Scale X in the non-uniform scaling case, the uniform scaling will be affected too. This was done to not break files for Durian. Note: As much as I would have liked to clean up the TransformVars, it caused crashes of earlier versions of blender when opening the file. The rna identifiers were also kept as to not break any existing animation on those keys. --- projectfiles_vc9/blender/blender.vcproj | 66 +++++----- release/scripts/ui/space_sequencer.py | 75 +++++------ source/blender/blenkernel/BKE_sequence.h | 2 +- source/blender/blenkernel/intern/seqeffects.c | 173 ++++++++++++++------------ source/blender/blenkernel/intern/sequence.c | 10 +- source/blender/makesdna/DNA_sequence_types.h | 10 +- source/blender/makesrna/intern/rna_sequence.c | 51 +------- 7 files changed, 172 insertions(+), 215 deletions(-) diff --git a/projectfiles_vc9/blender/blender.vcproj b/projectfiles_vc9/blender/blender.vcproj index ec863853daa..0d7f3c66ff0 100644 --- a/projectfiles_vc9/blender/blender.vcproj +++ b/projectfiles_vc9/blender/blender.vcproj @@ -221,45 +221,45 @@ RelativePath="..\..\source\icons\winblenderfile.ico" > - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 35174033572..86f9c3168fc 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -383,57 +383,46 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): flow.prop(strip, "frame_blending") elif strip.type == 'TRANSFORM': - - col = layout.column() - col.prop(strip, "interpolation") - col.prop(strip, "translation_unit") - - col = layout.column(align=True) - col.label(text="Position X:") - col.prop(strip, "translate_start_x", text="Start") - col.prop(strip, "translate_end_x", text="End") - - col = layout.column(align=True) - col.label(text="Position Y:") - col.prop(strip, "translate_start_y", text="Start") - col.prop(strip, "translate_end_y", text="End") - - layout.separator() - - col = layout.column(align=True) - col.prop(strip, "uniform_scale") + self.draw_panel_transform(strip) - if (strip.uniform_scale): - col = layout.column(align=True) - col.label(text="Scale:") - col.prop(strip, "scale_start_x", text="Start") - col.prop(strip, "scale_end_x", text="End") - else: - col = layout.column(align=True) - col.label(text="Scale X:") - col.prop(strip, "scale_start_x", text="Start") - col.prop(strip, "scale_end_x", text="End") - - col = layout.column(align=True) - col.label(text="Scale Y:") - col.prop(strip, "scale_start_y", text="Start") - col.prop(strip, "scale_end_y", text="End") - - layout.separator() - - col = layout.column(align=True) - col.label(text="Rotation:") - col.prop(strip, "rotation_start", text="Start") - col.prop(strip, "rotation_end", text="End") col = layout.column(align=True) if strip.type == 'SPEED': col.prop(strip, "speed_fader", text="Speed fader") - elif strip.type in ('CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE', - 'TRANSFORM'): + elif strip.type in ('CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'): col.prop(strip, "use_effect_default_fade", "Default fade") if not strip.use_effect_default_fade: col.prop(strip, "effect_fader", text="Effect fader") + + def draw_panel_transform(self, strip): + layout = self.layout + col = layout.column() + + col.prop(strip, "interpolation") + col.prop(strip, "translation_unit") + col = layout.column(align=True) + col.label(text="Position:") + col.prop(strip, "translate_start_x", text="X") + col.prop(strip, "translate_start_y", text="Y") + + layout.separator() + + col = layout.column(align=True) + col.prop(strip, "uniform_scale") + if (strip.uniform_scale): + col = layout.column(align=True) + col.prop(strip, "scale_start_x", text="Scale") + else: + col = layout.column(align=True) + col.label(text="Scale:") + col.prop(strip, "scale_start_x", text="X") + col.prop(strip, "scale_start_y", text="Y") + + layout.separator() + + col = layout.column(align=True) + col.label(text="Rotation:") + col.prop(strip, "rotation_start", text="Rotation") class SEQUENCER_PT_input(SequencerButtonsPanel): diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h index b42f023d12a..5b146cd5ecd 100644 --- a/source/blender/blenkernel/BKE_sequence.h +++ b/source/blender/blenkernel/BKE_sequence.h @@ -125,7 +125,7 @@ struct SeqEffectHandle { float-rects or byte-rects (mixed cases are handled one layer up...) */ - void (*execute)(struct Sequence *seq, int cfra, + void (*execute)(struct Scene *scene, struct Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 50fa34b52e3..8af3bf5fac7 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -231,7 +231,7 @@ static ImBuf * IMB_cast_away_list(ImBuf * i) return (ImBuf*) (((void**) i) + 2); } -static void do_plugin_effect(Sequence * seq,int cfra, +static void do_plugin_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -477,7 +477,7 @@ static void do_alphaover_effect_float(float facf0, float facf1, int x, int y, } } -static void do_alphaover_effect(Sequence * seq,int cfra, +static void do_alphaover_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -644,7 +644,7 @@ static void do_alphaunder_effect_float(float facf0, float facf1, int x, int y, } } -static void do_alphaunder_effect(Sequence * seq,int cfra, +static void do_alphaunder_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -764,7 +764,7 @@ void do_cross_effect_float(float facf0, float facf1, int x, int y, /* carefull: also used by speed effect! */ -static void do_cross_effect(Sequence * seq,int cfra, +static void do_cross_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1026,7 +1026,7 @@ static void do_gammacross_effect_float(float facf0, float facf1, } } -static void do_gammacross_effect(Sequence * seq,int cfra, +static void do_gammacross_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1140,7 +1140,7 @@ static void do_add_effect_float(float facf0, float facf1, int x, int y, } } -static void do_add_effect(Sequence * seq,int cfra, +static void do_add_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1252,7 +1252,7 @@ static void do_sub_effect_float(float facf0, float facf1, int x, int y, } } -static void do_sub_effect(Sequence * seq,int cfra, +static void do_sub_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1360,7 +1360,7 @@ static void do_drop_effect_float(float facf0, float facf1, int x, int y, } -static void do_drop_effect(Sequence * seq,int cfra, +static void do_drop_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf * ibuf3, @@ -1481,7 +1481,7 @@ static void do_mul_effect_float(float facf0, float facf1, int x, int y, } } -static void do_mul_effect(Sequence * seq,int cfra, +static void do_mul_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1931,7 +1931,7 @@ static void do_wipe_effect_float(Sequence *seq, float facf0, float facf1, } } -static void do_wipe_effect(Sequence * seq,int cfra, +static void do_wipe_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -1953,27 +1953,29 @@ static void do_wipe_effect(Sequence * seq,int cfra, ********************************************************************** */ static void init_transform_effect(Sequence *seq) { - TransformVars *scale; + TransformVars *transform; if(seq->effectdata)MEM_freeN(seq->effectdata); seq->effectdata = MEM_callocN(sizeof(struct TransformVars), "transformvars"); - scale = (TransformVars *)seq->effectdata; - scale->ScalexIni = 1; - scale->ScaleyIni = 1; - scale->ScalexFin = 1; - scale->ScaleyFin = 1; - - scale->xIni=0; - scale->xFin=0; - scale->yIni=0; - scale->yFin=0; - - scale->rotIni=0; - scale->rotFin=0; + transform = (TransformVars *)seq->effectdata; + + transform->ScalexIni = 1.0f; + transform->ScaleyIni = 1.0f; + transform->ScalexFin = 1.0f; + transform->ScalexFin = 1.0f; + + transform->xIni=0.0f; + transform->xFin=0.0f; + transform->yIni=0.0f; + transform->yFin=0.0f; + + transform->rotIni=0.0f; + transform->rotFin=0.0f; - scale->interpolation=1; - scale->percent=1; + transform->interpolation=1; + transform->percent=1; + transform->uniform_scale=0; } static int num_inputs_transform() @@ -1992,86 +1994,94 @@ static void copy_transform_effect(Sequence *dst, Sequence *src) dst->effectdata = MEM_dupallocN(src->effectdata); } -static void do_transform(Sequence * seq,float facf0, int x, int y, - struct ImBuf *ibuf1,struct ImBuf *out) +static void transform_image(int x, int y, struct ImBuf *ibuf1, struct ImBuf *out, + float scale_x, float scale_y, float translate_x, float translate_y, + float rotate, int interpolation) { int xo, yo, xi, yi; - float xs,ys,factxScale,factyScale,tx,ty,rad,s,c,xaux,yaux,factRot,px,py; - TransformVars *scale; - - // XXX struct RenderData *rd = NULL; // 2.5 global: &G.scene->r; + float xt, yt, xr, yr; + float s,c; - - scale = (TransformVars *)seq->effectdata; xo = x; yo = y; - - //factor scale - if (scale->uniform_scale) { - factxScale = factyScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0; - } else { - factxScale = scale->ScalexIni + (scale->ScalexFin - scale->ScalexIni) * facf0; - factyScale = scale->ScaleyIni + (scale->ScaleyFin - scale->ScaleyIni) * facf0; - } - - //Factor translate - if(!scale->percent){ - float rd_s = 0.0f; // XXX 2.5 global: (rd->size / 100.0f); - - tx = scale->xIni * rd_s+(xo / 2.0f) + (scale->xFin * rd_s -(xo / 2.0f) - scale->xIni * rd_s +(xo / 2.0f)) * facf0; - ty = scale->yIni * rd_s+(yo / 2.0f) + (scale->yFin * rd_s -(yo / 2.0f) - scale->yIni * rd_s +(yo / 2.0f)) * facf0; - }else{ - tx = xo*(scale->xIni/100.0f)+(xo / 2.0f) + (xo*(scale->xFin/100.0f)-(xo / 2.0f) - xo*(scale->xIni/100.0f)+(xo / 2.0f)) * facf0; - ty = yo*(scale->yIni/100.0f)+(yo / 2.0f) + (yo*(scale->yFin/100.0f)-(yo / 2.0f) - yo*(scale->yIni/100.0f)+(yo / 2.0f)) * facf0; - } - - //factor Rotate - factRot = scale->rotIni + (scale->rotFin - scale->rotIni) * facf0; - rad = (M_PI * factRot) / 180.0f; - s= sin(rad); - c= cos(rad); - + + // Rotate + s= sin(rotate); + c= cos(rotate); for (yi = 0; yi < yo; yi++) { for (xi = 0; xi < xo; xi++) { - //tranlate point - px = xi-tx; - py = yi-ty; + + //translate point + xt = xi-translate_x; + yt = yi-translate_y; //rotate point with center ref - xaux = c*px + py*s ; - yaux = -s*px + c*py; + xr = c*xt + s*yt; + yr = -s*xt + c*yt; //scale point with center ref - xs = xaux / factxScale; - ys = yaux / factyScale; + xt = xr / scale_x; + yt = yr / scale_y; //undo reference center point - xs += (xo / 2.0f); - ys += (yo / 2.0f); + xt += (xo / 2.0f); + yt += (yo / 2.0f); //interpolate - switch(scale->interpolation) { + switch(interpolation) { case 0: - neareast_interpolation(ibuf1,out, xs,ys,xi,yi); + neareast_interpolation(ibuf1,out, xt,yt,xi,yi); break; case 1: - bilinear_interpolation(ibuf1,out, xs,ys,xi,yi); + bilinear_interpolation(ibuf1,out, xt,yt,xi,yi); break; case 2: - bicubic_interpolation(ibuf1,out, xs,ys,xi,yi); + bicubic_interpolation(ibuf1,out, xt,yt,xi,yi); break; } } - } + } +} + +static void do_transform(Scene *scene, Sequence *seq, float facf0, int x, int y, + struct ImBuf *ibuf1,struct ImBuf *out) +{ + TransformVars *transform = (TransformVars *)seq->effectdata; + float scale_x, scale_y, translate_x, translate_y, rotate_radians; + + // Scale + if (transform->uniform_scale) { + scale_x = scale_y = transform->ScalexIni; + } else { + scale_x = transform->ScalexIni; + scale_y = transform->ScaleyIni; + } + + // Translate + if(!transform->percent){ + float rd_s = (scene->r.size/100.0f); + translate_x = transform->xIni*rd_s+(x/2.0f); + translate_y = transform->yIni*rd_s+(y/2.0f); + }else{ + translate_x = x*(transform->xIni/100.0f)+(x/2.0f); + translate_y = y*(transform->yIni/100.0f)+(y/2.0f); + } + + // Rotate + rotate_radians = (M_PI*transform->rotIni)/180.0f; + + transform_image(x,y, ibuf1, out, scale_x, scale_y, translate_x, translate_y, rotate_radians, transform->interpolation); } -static void do_transform_effect(Sequence * seq,int cfra, + + +static void do_transform_effect(Scene *scene, Sequence *seq,int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) { - do_transform(seq, facf0, x, y, ibuf1, out); + do_transform(scene, seq, facf0, x, y, ibuf1, out); } @@ -2578,7 +2588,7 @@ static void do_glow_effect_float(Sequence *seq, float facf0, float facf1, RVAddBitmaps_float (inbuf , outbuf, outbuf, x, y); } -static void do_glow_effect(Sequence * seq,int cfra, +static void do_glow_effect(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -2633,7 +2643,7 @@ static int early_out_color(struct Sequence *seq, return -1; } -static void do_solid_color(Sequence * seq,int cfra, +static void do_solid_color(Scene *scene, Sequence *seq, int cfra, float facf0, float facf1, int x, int y, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, struct ImBuf *out) @@ -2996,16 +3006,16 @@ static void get_default_fac_fade(struct Sequence *seq, int cfra, *facf1 /= seq->len; } -static void do_overdrop_effect(struct Sequence * seq, int cfra, +static void do_overdrop_effect(Scene *scene, Sequence *seq, int cfra, float fac, float facf, int x, int y, struct ImBuf * ibuf1, struct ImBuf * ibuf2, struct ImBuf * ibuf3, struct ImBuf * out) { - do_drop_effect(seq, cfra, fac, facf, x, y, + do_drop_effect(scene, seq, cfra, fac, facf, x, y, ibuf1, ibuf2, ibuf3, out); - do_alphaover_effect(seq, cfra, fac, facf, x, y, + do_alphaover_effect(scene, seq, cfra, fac, facf, x, y, ibuf1, ibuf2, ibuf3, out); } @@ -3084,7 +3094,6 @@ static struct SeqEffectHandle get_sequence_effect_impl(int seq_type) rval.free = free_transform_effect; rval.copy = copy_transform_effect; rval.execute = do_transform_effect; - rval.get_default_fac = get_default_fac_fade; break; case SEQ_SPEED: rval.init = init_speed_effect; diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index 71382a53d5d..8d3b1a7955b 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -839,7 +839,7 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) early_out = sh.early_out(seq, fac, facf); if (early_out == -1) { /* no input needed */ - sh.execute(seq, cfra, fac, facf, + sh.execute(scene, seq, cfra, fac, facf, se->ibuf->x, se->ibuf->y, 0, 0, 0, se->ibuf); return; @@ -928,7 +928,7 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) IMB_rect_from_float(se3->ibuf); } - sh.execute(seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf, + sh.execute(scene, seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf, se->ibuf); } @@ -2276,7 +2276,7 @@ static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra } else { sh = get_sequence_effect(seq); - sh.execute(seq, cfra, + sh.execute(scene, seq, cfra, f_cfra - (float) cfra_left, f_cfra - (float) cfra_left, se->ibuf->x, se->ibuf->y, @@ -2510,12 +2510,12 @@ static TStripElem* do_build_seq_array_recursively(Scene *scene, } if (swap_input) { - sh.execute(seq, cfra, + sh.execute(scene, seq, cfra, facf, facf, x, y, se2->ibuf, se1->ibuf_comp, 0, se2->ibuf_comp); } else { - sh.execute(seq, cfra, + sh.execute(scene, seq, cfra, facf, facf, x, y, se1->ibuf_comp, se2->ibuf, 0, se2->ibuf_comp); diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 006e1e594d8..0b45d62e347 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -211,14 +211,14 @@ typedef struct GlowVars { typedef struct TransformVars { float ScalexIni; float ScaleyIni; - float ScalexFin; - float ScaleyFin; + float ScalexFin; /* deprecated - old transform strip */ + float ScaleyFin; /* deprecated - old transform strip */ float xIni; - float xFin; + float xFin; /* deprecated - old transform strip */ float yIni; - float yFin; + float yFin; /* deprecated - old transform strip */ float rotIni; - float rotFin; + float rotFin; /* deprecated - old transform strip */ int percent; int interpolation; int uniform_scale; /* preserve aspect/ratio when scaling */ diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 52ce9bd721d..4296d59ebc8 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -1063,78 +1063,37 @@ static void rna_def_transform(BlenderRNA *brna) prop= RNA_def_property(srna, "scale_start_x", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScalexIni"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Scale Start X", ""); + RNA_def_property_ui_text(prop, "Scale X", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "ScaleyIni"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Scale Start Y", ""); + RNA_def_property_ui_text(prop, "Scale Y", ""); RNA_def_property_ui_range(prop, 0, 10, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - prop= RNA_def_property(srna, "scale_end_x", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "ScalexFin"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Scale End X", ""); - RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "scale_end_y", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "ScaleyFin"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Scale End Y", ""); - RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio."); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "xIni"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Translate Start X", ""); + RNA_def_property_ui_text(prop, "Translate X", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yIni"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Translate Start Y", ""); - RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "translate_end_x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "xFin"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Translate End X", ""); - RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "translate_end_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "yFin"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Translate End Y", ""); + RNA_def_property_ui_text(prop, "Translate Y", ""); RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rotIni"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_range(prop, -360.0f, 360.0f); - RNA_def_property_ui_text(prop, "Rotation Start", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "rotation_end", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "rotFin"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ RNA_def_property_range(prop, -360.0f, 360.0f); - RNA_def_property_ui_text(prop, "Rotation End", ""); + RNA_def_property_ui_text(prop, "Rotation", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE); -- cgit v1.2.3 From b6bf852670ce802a61feabde9e16b7e51c97cd88 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Sat, 12 Dec 2009 08:45:16 +0000 Subject: Reenable disabled window switching shortcuts in 10.4 builds --- intern/ghost/intern/GHOST_WindowCocoa.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index 4058d721bdb..8c9f8a7647d 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -245,6 +245,10 @@ extern "C" { case 'w': case 'h': case 'm': + case '<': + case '>': + case '~': + case '`': return NO; default: return YES; -- cgit v1.2.3 From a224803fb7c3b3a69f9ac63aaac593532432202a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 03:20:29 +0000 Subject: Sequencer unique names for duplicates & metas and name new strips when the operator doesnt set them. --- .../editors/space_sequencer/sequencer_add.c | 33 +++++++++++++--------- .../editors/space_sequencer/sequencer_edit.c | 15 ++++++++-- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index ac341e40de9..23ae96ac8a5 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -73,6 +73,7 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" /* for menu/popup icons etc etc*/ #include "UI_interface.h" @@ -150,7 +151,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) seq_load->channel= RNA_int_get(op->ptr, "channel"); seq_load->len= 1; // images only! - RNA_string_get(op->ptr, "name", seq_load->name); + 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 */ @@ -174,8 +175,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, TRUE); Scene *sce_seq; - char sce_name[MAX_ID_NAME-2]; - + Sequence *seq; /* generic strip vars */ Strip *strip; StripElem *se; @@ -185,12 +185,10 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) start_frame= RNA_int_get(op->ptr, "start_frame"); channel= RNA_int_get(op->ptr, "channel"); - RNA_string_get(op->ptr, "scene", sce_name); - - sce_seq= (Scene *)find_id("SC", sce_name); + sce_seq= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); if (sce_seq==NULL) { - BKE_reportf(op->reports, RPT_ERROR, "Scene \"%s\" not found", sce_name); + BKE_report(op->reports, RPT_ERROR, "Scene not found"); return OPERATOR_CANCELLED; } @@ -206,8 +204,10 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - - RNA_string_get(op->ptr, "name", seq->name); + 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); calc_sequence_disp(seq); sort_seq(scene); @@ -227,16 +227,15 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_scene_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { sequencer_generic_invoke_xy__internal(C, op, event, 0); - - /* scene can be left default */ - RNA_string_set(op->ptr, "scene", "Scene"); // XXX should popup a menu but ton says 2.5 will have some better feature for this - return sequencer_add_scene_strip_exec(C, op); + // needs a menu + // return WM_menu_invoke(C, op, event); } void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot) { + PropertyRNA *prop; /* identifiers */ ot->name= "Add Scene Strip"; @@ -253,7 +252,8 @@ void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME); - RNA_def_string(ot->srna, "scene", "", MAX_ID_NAME-2, "Scene Name", "Scene name to add as a strip"); + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + RNA_def_enum_funcs(prop, RNA_scene_itemf); } static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoadFunc seq_load_func) @@ -499,6 +499,11 @@ 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)); + seqUniqueName(ed->seqbasep, seq); sh = get_sequence_effect(seq); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index c8f47e1a3e8..660cb0d8cc6 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -925,7 +925,9 @@ static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) "handled in duplicate!\nExpect a crash" " now...\n"); } - + + seqUniqueName(scene->ed->seqbasep, seqn); + return seqn; } @@ -1963,6 +1965,8 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) shuffle_seq(ed->seqbasep, seq_new); } + seqUniqueName(scene->ed->seqbasep, seq_new); + cfra++; start_ofs += step; } @@ -2085,7 +2089,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) Sequence *seq, *seqm, *next; - int tot; + int tot, channel_max= 1; if(ed==NULL) return OPERATOR_CANCELLED; @@ -2106,6 +2110,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) seq= ed->seqbasep->first; while(seq) { if(seq->flag & SELECT) { + channel_max= MAX2(seq->machine, channel_max); if(seq->type & SEQ_EFFECT) { if(seq->seq1 && (seq->seq1->flag & SELECT)==0) tot= 0; @@ -2134,7 +2139,8 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) /* remove all selected from main list, and put in meta */ - seqm= alloc_sequence(ed->seqbasep, 1, 1); + seqm= alloc_sequence(ed->seqbasep, 1, channel_max); + strcpy(seqm->name+2, "MetaStrip"); seqm->type= SEQ_META; seqm->flag= SELECT; @@ -2158,6 +2164,9 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm); seq_update_muting(ed); + + seqUniqueName(scene->ed->seqbasep, seqm); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; -- cgit v1.2.3 From b3f03250de655751a116ec9aaea96a22a943d8c5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 10:46:34 +0000 Subject: use tp_getset rather then checking the string on getattr for 'id_data' attribute --- source/blender/python/intern/bpy_rna.c | 37 ++++++++++++++++------------------ 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index f90dbef9836..9142aaed9ea 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1658,14 +1658,6 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA *self) BLI_freelistN(&lb); } - - /* Hard coded names */ - if(self->ptr.id.data) { - pystring = PyUnicode_FromString("id_data"); - PyList_Append(ret, pystring); - Py_DECREF(pystring); - } - return ret; } @@ -1732,17 +1724,6 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname ) BLI_freelistN(&newlb); } - else if (strcmp(name, "id_data")==0) { /* XXX - hard coded */ - if(self->ptr.id.data) { - PointerRNA id_ptr; - RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr); - ret = pyrna_struct_CreatePyObject(&id_ptr); - } - else { - ret = Py_None; - Py_INCREF(ret); - } - } else { #if 0 PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name); @@ -1914,6 +1895,17 @@ static PyObject *pyrna_prop_remove(BPy_PropertyRNA *self, PyObject *value) return ret; } +static PyObject *pyrna_struct_get_id_data(BPy_StructRNA *self) +{ + if(self->ptr.id.data) { + PointerRNA id_ptr; + RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr); + return pyrna_struct_CreatePyObject(&id_ptr); + } + + Py_RETURN_NONE; +} + /*****************************************************************************/ /* Python attributes get/set structure: */ /*****************************************************************************/ @@ -1924,6 +1916,11 @@ static PyGetSetDef pyrna_prop_getseters[] = { }; #endif +static PyGetSetDef pyrna_struct_getseters[] = { + {"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, "The ID data this datablock is from, (not available for all data)", NULL}, + {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ +}; + static PyObject *pyrna_prop_keys(BPy_PropertyRNA *self) { PyObject *ret; @@ -2787,7 +2784,7 @@ PyTypeObject pyrna_struct_Type = { /*** Attribute descriptor and subclassing stuff ***/ pyrna_struct_methods, /* struct PyMethodDef *tp_methods; */ NULL, /* struct PyMemberDef *tp_members; */ - NULL, /* struct PyGetSetDef *tp_getset; */ + pyrna_struct_getseters, /* struct PyGetSetDef *tp_getset; */ NULL, /* struct _typeobject *tp_base; */ NULL, /* PyObject *tp_dict; */ NULL, /* descrgetfunc tp_descr_get; */ -- cgit v1.2.3 From 646575f8d91af059da8e50d1b61c7ad16dc65b2e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 11:49:17 +0000 Subject: clear loc/size/rot wasnt updating child transformations, also removed some warnings --- source/blender/editors/object/object_transform.c | 11 ++++++++++- source/gameengine/Converter/KX_BlenderSceneConverter.h | 18 +++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 69a2315fd5d..cd2361a1cc0 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -105,8 +105,11 @@ static int object_location_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* this is needed so children are also updated */ + DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); - + return OPERATOR_FINISHED; } @@ -241,6 +244,9 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* this is needed so children are also updated */ + DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; @@ -299,6 +305,9 @@ static int object_scale_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* this is needed so children are also updated */ + DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); return OPERATOR_FINISHED; diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.h b/source/gameengine/Converter/KX_BlenderSceneConverter.h index c8009eb9437..ab654e97513 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.h +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.h @@ -156,17 +156,17 @@ public: printf("BGE STATS!\n"); printf("\nAssets...\n"); - printf("\t m_worldinfos: %d\n", m_worldinfos.size()); - printf("\t m_polymaterials: %d\n", m_polymaterials.size()); - printf("\t m_meshobjects: %d\n", m_meshobjects.size()); - printf("\t m_materials: %d\n", m_materials.size()); + printf("\t m_worldinfos: %d\n", (int)m_worldinfos.size()); + printf("\t m_polymaterials: %d\n", (int)m_polymaterials.size()); + printf("\t m_meshobjects: %d\n", (int)m_meshobjects.size()); + printf("\t m_materials: %d\n", (int)m_materials.size()); printf("\nMappings...\n"); - printf("\t m_map_blender_to_gameobject: %d\n", m_map_blender_to_gameobject.size()); - printf("\t m_map_mesh_to_gamemesh: %d\n", m_map_mesh_to_gamemesh.size()); - printf("\t m_map_blender_to_gameactuator: %d\n", m_map_blender_to_gameactuator.size()); - printf("\t m_map_blender_to_gamecontroller: %d\n", m_map_blender_to_gamecontroller.size()); - printf("\t m_map_blender_to_gameAdtList: %d\n", m_map_blender_to_gameAdtList.size()); + printf("\t m_map_blender_to_gameobject: %d\n", (int)m_map_blender_to_gameobject.size()); + printf("\t m_map_mesh_to_gamemesh: %d\n", (int)m_map_mesh_to_gamemesh.size()); + printf("\t m_map_blender_to_gameactuator: %d\n", (int)m_map_blender_to_gameactuator.size()); + printf("\t m_map_blender_to_gamecontroller: %d\n", (int)m_map_blender_to_gamecontroller.size()); + printf("\t m_map_blender_to_gameAdtList: %d\n", (int)m_map_blender_to_gameAdtList.size()); #ifdef WITH_CXX_GUARDEDALLOC MEM_printmemlist_pydict(); -- cgit v1.2.3 From c1bfd014bd8fb4af1ee51ed0e2aaecb707c46ff2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 12:26:19 +0000 Subject: * rna: memory leak fix for RNA_property_enum_value() * rigify: generate root-most bones before children, this makes parenting to dynamically created bones work. --- release/scripts/modules/rigify/__init__.py | 2 +- release/scripts/modules/rigify/arm_biped_generic.py | 2 +- release/scripts/modules/rigify/palm_curl.py | 2 +- source/blender/makesrna/intern/rna_access.c | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 6ec90015d61..3cef288f79e 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -211,7 +211,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # sort bones, not needed but gives more pradictable execution which may be useful in rare cases bones_sorted = obj.pose.bones.values() bones_sorted.sort(key=lambda pbone: pbone.name) # first sort by names - bones_sorted.sort(key=lambda pbone: - len(pbone.parent_recursive)) # children before parents + bones_sorted.sort(key=lambda pbone: len(pbone.parent_recursive)) # parents before children # now we have all the info about bones we can start operating on them # for pbone in obj.pose.bones: diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index a9b5e62775e..33fbb8577cf 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -94,7 +94,7 @@ def metarig_definition(obj, orig_bone_name): def ik(obj, definitions, base_names, options): - print(options) + arm = obj.data mt = bone_class_instance(obj, METARIG_NAMES) diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 4ad0cfe3675..5a06d2451ee 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -225,7 +225,7 @@ def main(obj, bone_definition, base_names, options): rel_vec = child_pbone_01.head - child_pbone_02.head x_vec = child_pbone_01.matrix.rotationPart() * Vector(1.0, 0.0, 0.0) - print(rel_vec, x_vec) + return degrees(AngleBetweenVecs(rel_vec, x_vec)) > 90.0 if x_direction(): # flip diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 7bfb6d7249f..68499ebd42c 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -946,22 +946,22 @@ void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, En int RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value) { - EnumPropertyItem *item; + EnumPropertyItem *item, *item_array; int free; - RNA_property_enum_items(C, ptr, prop, &item, NULL, &free); + RNA_property_enum_items(C, ptr, prop, &item_array, NULL, &free); - for(; item->identifier; item++) { + for(item= item_array; item->identifier; item++) { if(item->identifier[0] && strcmp(item->identifier, identifier)==0) { *value = item->value; - return 1; + break; } } if(free) - MEM_freeN(item); + MEM_freeN(item_array); - return 0; + return (item->identifier) ? 1:0; } int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier) -- cgit v1.2.3 From a1656300ba14f9a220961814ab0366ece6900441 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 13:59:16 +0000 Subject: script for automating pep8 checks. On ubuntu/debian install these tools... sudo apt-get install pylint pyflakes python-setuptools python-pip sudo pip install pep8 then run from blenders source dir... python release/test/pep8.py This searches for the comments "# " and "# ", running the checking tools on these scripts only. * some minor pep8 corrections too. --- release/scripts/modules/bpy/__init__.py | 6 +- release/scripts/modules/bpy/ops.py | 1 - release/scripts/modules/bpy/utils.py | 7 +- release/scripts/modules/rigify/__init__.py | 59 +++++++------- .../scripts/modules/rigify/arm_biped_generic.py | 38 ++++----- release/scripts/modules/rigify/copy.py | 9 ++- release/scripts/modules/rigify/delta.py | 1 - .../scripts/modules/rigify/leg_biped_generic.py | 2 +- release/scripts/modules/rigify/neck_flex.py | 18 ++--- release/scripts/modules/rigify/palm_curl.py | 1 + release/scripts/modules/rigify/spine_pivot_flex.py | 4 +- release/scripts/modules/rigify_utils.py | 19 +++-- release/scripts/modules/rna_prop_ui.py | 1 - release/scripts/op/object.py | 1 - release/scripts/op/wm.py | 47 ++++++----- release/scripts/ui/properties_scene.py | 2 +- release/scripts/ui/space_info.py | 3 +- release/scripts/ui/space_sequencer.py | 8 +- release/scripts/ui/space_userpref.py | 26 +++--- release/test/pep8.py | 93 ++++++++++++++++++++++ 20 files changed, 230 insertions(+), 116 deletions(-) create mode 100644 release/test/pep8.py diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 7dfa403a54f..8e7e74e2743 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -36,6 +36,7 @@ ops = _ops_module.ops_fake_module import sys DEBUG = ("-d" in sys.argv) + def load_scripts(reload_scripts=False): import os import traceback @@ -47,7 +48,7 @@ def load_scripts(reload_scripts=False): def test_import(module_name): try: t = time.time() - ret= __import__(module_name) + ret = __import__(module_name) if DEBUG: print("time %s %.4f" % (module_name, time.time() - t)) return ret @@ -78,6 +79,7 @@ def load_scripts(reload_scripts=False): if DEBUG: print("Time %.4f" % (time.time() - t_main)) + def _main(): # a bit nasty but this prevents help() and input() from locking blender @@ -99,5 +101,3 @@ def _main(): load_scripts() _main() - - diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index c8ca9bc77fc..93c0d719580 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -134,7 +134,6 @@ class bpy_ops_submodule_op(object): __keys__ = ('module', 'func') - def _get_doc(self): return op_as_string(self.idname()) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index ad0fa4e8ba5..1948a28a726 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -21,6 +21,7 @@ import bpy import os + def expandpath(path): if path.startswith("//"): return os.path.join(os.path.dirname(bpy.data.filename), path[2:]) @@ -44,15 +45,17 @@ _unclean_chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, \ _unclean_chars = ''.join([chr(i) for i in _unclean_chars]) + def clean_name(name, replace="_"): ''' All characters besides A-Z/a-z, 0-9 are replaced with "_" or the replace argumet if defined. ''' for ch in _unclean_chars: - name = name.replace(ch, replace) + name = name.replace(ch, replace) return name + def display_name(name): ''' Only capitalize all lowercase names, mixed case use them as is. @@ -75,6 +78,7 @@ def display_name(name): _scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir) _scripts = (os.path.normpath(_scripts), ) + def script_paths(*args): scripts = list(_scripts) @@ -105,6 +109,7 @@ def script_paths(*args): _presets = os.path.join(_scripts[0], "presets") # FIXME - multiple paths + def preset_paths(subdir): ''' Returns a list of paths for a spesific preset. diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 3cef288f79e..519784e8507 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -25,14 +25,18 @@ from Mathutils import Vector from rna_prop_ui import rna_idprop_ui_prop_get SPECIAL_TYPES = "root", + class RigifyError(Exception): """Exception raised for errors in the metarig. """ + def __init__(self, message): self.message = message + def __str__(self): return repr(self.message) + def submodule_func_from_type(bone_type): type_pair = bone_type.split(".") @@ -48,7 +52,7 @@ def submodule_func_from_type(bone_type): submod = __import__(name="%s.%s" % (__package__, type_name), fromlist=[type_name]) except ImportError: raise RigifyError("python module for type '%s' not found" % type_name) - + reload(submod) return type_name, submod, getattr(submod, func_name) @@ -60,9 +64,10 @@ def get_submodule_types(): for f in files: if not f.startswith("_") and f.endswith(".py"): submodules.append(f[:-3]) - + return sorted(submodules) + def get_bone_type_options(pbone, type_name): options = {} bone_name = pbone.name @@ -75,13 +80,14 @@ def get_bone_type_options(pbone, type_name): return options + def validate_rig(context, obj): ''' Makes no changes only runs the metarig definitions and reports errors ''' type_found = False - + for pbone in obj.pose.bones: bone_name = pbone.name bone_type = pbone.get("type", "") @@ -103,19 +109,19 @@ def validate_rig(context, obj): get_bone_type_options(pbone, bone_type) # missing, - check for duplicate root bone. - + if not type_found: raise RigifyError("This rig has no 'type' properties defined on any pose bones, nothing to do") def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): ''' - Main function for generating + Main function for generating ''' from collections import OrderedDict import rigify_utils reload(rigify_utils) - + # Not needed but catches any errors before duplicating validate_rig(context, obj_orig) @@ -124,8 +130,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): mode_orig = context.mode rest_backup = obj_orig.data.pose_position obj_orig.data.pose_position = 'REST' - - + + bpy.ops.object.mode_set(mode='OBJECT') scene = context.scene @@ -147,7 +153,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # original name mapping base_names = {} - + # add all new parentless children to this bone root_bone = None @@ -168,7 +174,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # value: [functions, ...] # each function is from the module. eg leg.ik, arm.main bone_typeinfos = {} - + # key: bone name # value: [new_bone_name, ...] # where each bone with a 'type' stores a list of bones that it created @@ -182,12 +188,12 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bone_type = pbone.get("type", "") if bone_type: bone_type_list = [bt for bt in bone_type.replace(",", " ").split()] - + # not essential but means running autorig again wont do anything del pbone["type"] else: bone_type_list = [] - + if bone_type_list == ["root"]: # special case! if root_bone: raise Exception("cant have more then 1 root bone, found '%s' and '%s' to have type==root" % (root_bone, bone_name)) @@ -197,7 +203,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): for bone_type in bone_type_list: type_name, submod, type_func = submodule_func_from_type(bone_type) reload(submod) - + bone_def_dict = bone_definitions.setdefault(bone_name, {}) # Only calculate bone definitions once @@ -226,7 +232,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # Only blend results from the same submodule, eg. # leg.ik and arm.fk could not be blended. results = OrderedDict() - + bone_names_pre = set([bone.name for bone in arm.bones]) for type_name, type_func in bone_typeinfos[bone_name]: @@ -255,21 +261,21 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bone_names_post = set([bone.name for bone in arm.bones]) - + # Store which bones were created from this one bone_genesis[bone_name] = list(bone_names_post - bone_names_pre) - + # need a reverse lookup on bone_genesis so as to know immediately # where a bone comes from bone_genesis_reverse = {} for bone_name, bone_children in bone_genesis.items(): for bone_child_name in bone_children: bone_genesis_reverse[bone_child_name] = bone_name - + if root_bone: # assign all new parentless bones to this - + bpy.ops.object.mode_set(mode='EDIT') root_ebone = arm.edit_bones[root_bone] for ebone in arm.edit_bones: @@ -284,19 +290,19 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): root_ebone_tmp = arm.edit_bones[root_bone_override] else: root_ebone_tmp = root_ebone - + ebone.connected = False ebone.parent = root_ebone_tmp bpy.ops.object.mode_set(mode='OBJECT') - + if META_DEF: # for pbone in obj_def.pose.bones: for bone_name, bone_name_new in base_names.items(): #pbone_from = bone_name pbone = obj_def.pose.bones[bone_name_new] - + con = pbone.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = bone_name @@ -318,8 +324,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): obj_orig.data.pose_position = rest_backup obj.data.pose_position = 'POSE' context.user_preferences.edit.global_undo = global_undo - - + return obj @@ -344,9 +349,9 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): continue # XXX workaround!, problem with updating the pose matrix. - if module_name=="delta": + if module_name == "delta": continue - + type_name, submodule, func = submodule_func_from_type(module_name) metarig_template = getattr(submodule, "metarig_template", None) @@ -356,7 +361,7 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): metarig_template() obj = context.active_object obj.location = scene.cursor_location - + if GENERATE_FINAL: obj_new = generate_rig(context, obj) new_objects.append((obj, obj_new)) @@ -378,7 +383,7 @@ def generate_test_all(context, GRAPH=False): reload(graphviz_export) new_objects = rigify.generate_test(context) - + if GRAPH: base_name = os.path.splitext(bpy.data.filename)[0] for obj, obj_new in new_objects: diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index 33fbb8577cf..22de14ade54 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -96,14 +96,14 @@ def metarig_definition(obj, orig_bone_name): def ik(obj, definitions, base_names, options): arm = obj.data - + mt = bone_class_instance(obj, METARIG_NAMES) mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions mt.update() - + ik = bone_class_instance(obj, ["pole", "pole_vis", "hand_vis"]) ik_chain = mt.copy(to_fmt="MCH-%s_ik", base_names=base_names, exclude_attrs=["shoulder"]) - + # IK needs no parent_index ik_chain.hand_e.connected = False ik_chain.hand_e.parent = None @@ -112,14 +112,14 @@ def ik(obj, definitions, base_names, options): ik_chain.arm_e.connected = False ik_chain.arm_e.parent = mt.shoulder_e - + # Add the bone used for the arms poll target #ik.pole = add_pole_target_bone(obj, mt.forearm, get_base_name(base_names[mt.forearm]) + "_target" + get_side_name(mt.forearm), mode='ZAVERAGE') ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_target" + get_side_name(mt.forearm), mode='ZAVERAGE') - + ik.update() ik.pole_e.local_location = False - + # option: elbow_parent elbow_parent_name = options.get("elbow_parent", "") @@ -130,17 +130,17 @@ def ik(obj, definitions, base_names, options): # TODO, old/new parent mapping raise RigifyError("parent bone from property 'arm_biped_generic.elbow_parent' not found '%s'" % elbow_parent_name) ik.pole_e.parent = elbow_parent_e - + # update bones after this! ik.hand_vis = add_stretch_to(obj, mt.hand, ik_chain.hand, "VIS-%s_ik" % base_names[mt.hand]) ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) - + ik.update() ik.hand_vis_e.restrict_select = True ik.pole_vis_e.restrict_select = True - + bpy.ops.object.mode_set(mode='OBJECT') - + mt.update() ik.update() ik_chain.update() @@ -171,15 +171,15 @@ def ik(obj, definitions, base_names, options): prop["soft_max"] = 1.0 bpy.ops.object.mode_set(mode='EDIT') - + # don't blend the shoulder return [None] + ik_chain.names() def fk(obj, definitions, base_names, options): - + arm = obj.data - + mt = bone_class_instance(obj, METARIG_NAMES) mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions mt.update() @@ -197,19 +197,19 @@ def fk(obj, definitions, base_names, options): ex.socket_e.connected = False ex.socket_e.parent = mt.shoulder_e ex.socket_e.length *= 0.5 - + # insert the 'DLT-hand', between the forearm and the hand # copies forarm rotation ex.hand_delta_e = copy_bone_simple(arm, fk_chain.hand, "DLT-%s" % base_names[mt.hand], parent=True) ex.hand_delta = ex.hand_delta_e.name ex.hand_delta_e.length *= 0.5 ex.hand_delta_e.connected = False - + fk_chain.hand_e.connected = False fk_chain.hand_e.parent = ex.hand_delta_e bpy.ops.object.mode_set(mode='OBJECT') - + mt.update() ex.update() fk_chain.update() @@ -222,7 +222,7 @@ def fk(obj, definitions, base_names, options): con = fk_chain.arm_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = ex.socket - + fk_chain.hand_p.lock_location = True, True, True con = ex.hand_delta_p.constraints.new('COPY_ROTATION') con.target = obj @@ -262,13 +262,13 @@ def fk(obj, definitions, base_names, options): mod.coefficients[1] = -1.0 hinge_setup() - + bpy.ops.object.mode_set(mode='EDIT') return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand -def main(obj, bone_definition, base_names, options): +def main(obj, bone_definition, base_names, options): bones_ik = ik(obj, bone_definition, base_names, options) bones_fk = fk(obj, bone_definition, base_names, options) diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 70086b70907..6a3ecb7f639 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -24,7 +24,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get METARIG_NAMES = ("cpy",) -# note, this example is just a bone with copy property. + def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') @@ -40,6 +40,7 @@ def metarig_template(): pbone = obj.pose.bones['Bone'] pbone['type'] = 'copy' + def metarig_definition(obj, orig_bone_name): return [orig_bone_name] @@ -51,14 +52,14 @@ def main(obj, bone_definition, base_names, options): mt.update() cp = mt.copy(to_fmt="%s_cpy") bpy.ops.object.mode_set(mode='OBJECT') - + cp.update() mt.update() - + con = cp.cpy_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.cpy - + con = cp.cpy_p.constraints.new('COPY_LOCATION') con.target = obj con.subtarget = mt.cpy diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py index 4e1d8ce4571..475c64ab317 100644 --- a/release/scripts/modules/rigify/delta.py +++ b/release/scripts/modules/rigify/delta.py @@ -118,7 +118,6 @@ def main(obj, bone_definition, base_names, options): bpy.ops.object.mode_set(mode='OBJECT') - # Move the child bone to the deltas location obj.animation_data_create() delta_pbone = obj.pose.bones[delta_name] diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 4ce7352539a..c48ff093a2f 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -106,7 +106,7 @@ def metarig_definition(obj, orig_bone_name): children = bone.children # Now there must be 2 children, only one connected if len(children) != 2: - raise RigifyError("expected the foot bone:'%s' to have 2 children" % bone.name ) + raise RigifyError("expected the foot bone:'%s' to have 2 children" % bone.name) if children[0].connected == children[1].connected: raise RigifyError("expected one bone to be connected") diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 15efc2a6985..377fd9c9bc8 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -154,8 +154,8 @@ def main(obj, bone_definition, base_names, options): ex.neck_socket_e.head = mt.head_e.head ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) ex.neck_socket_e.roll = 0.0 - - + + # copy of the head for controling ex.head_ctrl_e = copy_bone_simple(arm, mt.head, base_names[mt.head]) ex.head_ctrl = ex.head_ctrl_e.name @@ -229,7 +229,7 @@ def main(obj, bone_definition, base_names, options): head_driver_path = ex.head_ctrl_p.path_to_id() target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] - + ex.head_ctrl_p["bend_tot"] = 0.0 fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0) driver = fcurve.driver @@ -242,7 +242,7 @@ def main(obj, bone_definition, base_names, options): tar.id_type = 'OBJECT' tar.id = obj tar.data_path = head_driver_path + ('["bend_%.2d"]' % (i + 1)) - + for i, attr in enumerate(ex_chain.attr_names): neck_p = getattr(ex_chain, attr + "_p") @@ -272,9 +272,9 @@ def main(obj, bone_definition, base_names, options): driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" - + fcurve.modifiers.remove(0) # grr dont need a modifier - + # add target tar = driver.targets.new() @@ -282,14 +282,14 @@ def main(obj, bone_definition, base_names, options): tar.id_type = 'OBJECT' tar.id = obj tar.data_path = head_driver_path + ('["bend_tot"]') - + tar = driver.targets.new() tar.name = "bend" tar.id_type = 'OBJECT' tar.id = obj tar.data_path = head_driver_path + ('["%s"]' % prop_name) - - + + # finally constrain the original bone to this one orig_neck_p = getattr(mt_chain, attr + "_p") con = orig_neck_p.constraints.new('COPY_ROTATION') diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 5a06d2451ee..ee99ef6e82a 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -25,6 +25,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get # not used, defined for completeness METARIG_NAMES = tuple() + def metarig_template(): # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index f2608732c37..4765f0591f7 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -177,7 +177,7 @@ def main(obj, bone_definition, base_names, options): df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage]) df.ribcage = df.ribcage_e.name df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0)) - + ex.ribcage_copy_e = copy_bone_simple(arm, mt.ribcage, base_names[mt.ribcage]) ex.ribcage_copy = ex.ribcage_copy_e.name ex.ribcage_copy_e.connected = False @@ -294,7 +294,7 @@ def main(obj, bone_definition, base_names, options): # df.ribcage_p / DEF-wgt_rib_cage df.ribcage_p.lock_location = True, True, True - + con = df.ribcage_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = ex.ribcage diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index 6b15329c992..f4694023f12 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -32,6 +32,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get DELIMITER = '-._' EMPTY_LAYER = [False] * 32 + def add_stretch_to(obj, from_name, to_name, name): ''' Adds a bone that stretches from one to another @@ -71,7 +72,7 @@ def add_stretch_to(obj, from_name, to_name, name): con.volume = 'NO_VOLUME' bpy.ops.object.mode_set(mode=mode_orig) - + return stretch_name @@ -216,7 +217,7 @@ def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): parent_dir = parent_head - parent_tail distance = (base_dir.length + parent_dir.length) - + if mode == 'CROSS': # direction from the angle of the joint offset = base_dir.copy().normalize() - parent_dir.copy().normalize() @@ -244,7 +245,6 @@ def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): return poll_name - def get_side_name(name): ''' Returns the last part of a string (typically a bone's name) indicating @@ -256,6 +256,7 @@ def get_side_name(name): else: return "" + def get_base_name(name): ''' Returns the part of a string (typically a bone's name) corresponding to it's @@ -327,16 +328,17 @@ def write_meta_rig(obj, func_name="metarig_template"): return "\n".join(code) - # *** bone class collection *** + + def bone_class_instance(obj, slots, name="BoneContainer"): ''' bone collection utility class to help manage cases with edit/pose/bone bones where switching modes can invalidate some of the members. - + there are also utility functions for manipulating all members. ''' - + if len(slots) != len(set(slots)): raise Exception("duplicate entries found %s" % attr_names) @@ -361,6 +363,7 @@ def bone_class_instance(obj, slots, name="BoneContainer"): instance = auto_class_instance(slots, name, class_dict) return instance + def auto_class(slots, name="ContainerClass", class_dict=None): if class_dict: @@ -413,10 +416,10 @@ def _bone_class_instance_copy(self, from_fmt="%s", to_fmt="%s", exclude_attrs=() new_slot_ls = [] for attr in self.attr_names: - + if attr in exclude_attrs: continue - + bone_name_orig = getattr(self, attr) ebone = getattr(self, attr + "_e") # orig_names[attr] = bone_name_orig diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 07b3a7c1c42..0aa62bb5960 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -219,7 +219,6 @@ class WM_OT_properties_edit(bpy.types.Operator): return ('RUNNING_MODAL',) - class WM_OT_properties_add(bpy.types.Operator): '''Internal use (edit a property path)''' bl_idname = "wm.properties_add" diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index e29259cacfb..64406fd0d5c 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -126,4 +126,3 @@ class Retopo(bpy.types.Operator): bpy.ops.add(SelectPattern) bpy.ops.add(SubdivisionSet) bpy.ops.add(Retopo) - diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index a61c6d2f301..ae49cf4907a 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -23,6 +23,7 @@ import os from bpy.props import * + class MESH_OT_delete_edgeloop(bpy.types.Operator): '''Export a single object as a stanford PLY with normals, colours and texture coordinates.''' @@ -42,7 +43,8 @@ rna_path_prop = StringProperty(name="Context Attributes", rna_reverse_prop = BoolProperty(name="Reverse", description="Cycle backwards", default=False) -class NullPathMember: + +class NullPath: pass @@ -53,7 +55,7 @@ def context_path_validate(context, path): except AttributeError: if "'NoneType'" in str(sys.exc_info()[1]): # One of the items in the rna path is None, just ignore this - value = NullPathMember + value = NullPath else: # We have a real error in the rna path, dont ignore that raise @@ -62,7 +64,7 @@ def context_path_validate(context, path): def execute_context_assign(self, context): - if context_path_validate(context, self.properties.path) == NullPathMember: + if context_path_validate(context, self.properties.path) == NullPath: return ('PASS_THROUGH',) exec("context.%s=self.properties.value" % self.properties.path) return ('FINISHED',) @@ -136,10 +138,12 @@ class WM_OT_context_toggle(bpy.types.Operator): def execute(self, context): - if context_path_validate(context, self.properties.path) == NullPathMember: + if context_path_validate(context, self.properties.path) == NullPath: return ('PASS_THROUGH',) - exec("context.%s=not (context.%s)" % (self.properties.path, self.properties.path)) + exec("context.%s=not (context.%s)" % + (self.properties.path, self.properties.path)) + return ('FINISHED',) @@ -157,11 +161,13 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): def execute(self, context): - if context_path_validate(context, self.properties.path) == NullPathMember: + if context_path_validate(context, self.properties.path) == NullPath: return ('PASS_THROUGH',) exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \ - (self.properties.path, self.properties.value_1, self.properties.value_2, self.properties.path, self.properties.value_2)) + (self.properties.path, self.properties.value_1,\ + self.properties.value_2, self.properties.path, + self.properties.value_2)) return ('FINISHED',) @@ -177,7 +183,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator): def execute(self, context): value = context_path_validate(context, self.properties.path) - if value == NullPathMember: + if value == NullPath: return ('PASS_THROUGH',) self.properties.value = value @@ -209,7 +215,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): def execute(self, context): value = context_path_validate(context, self.properties.path) - if value == NullPathMember: + if value == NullPath: return ('PASS_THROUGH',) orig_value = value @@ -318,9 +324,12 @@ class WM_OT_doc_edit(bpy.types.Operator): def execute(self, context): - class_name, class_prop = self.properties.doc_id.split('.') + doc_id = self.properties.doc_id + doc_new = self.properties.doc_new + + class_name, class_prop = doc_id.split('.') - if not self.properties.doc_new: + if not doc_new: return ('RUNNING_MODAL',) # check if this is an operator @@ -333,25 +342,25 @@ class WM_OT_doc_edit(bpy.types.Operator): if op_class: rna = op_class.bl_rna doc_orig = rna.description - if doc_orig == self.properties.doc_new: + if doc_orig == doc_new: return ('RUNNING_MODAL',) - print("op - old:'%s' -> new:'%s'" % (doc_orig, self.properties.doc_new)) - upload["title"] = 'OPERATOR %s:%s' % (self.properties.doc_id, doc_orig) - upload["description"] = self.properties.doc_new + print("op - old:'%s' -> new:'%s'" % (doc_orig, doc_new)) + upload["title"] = 'OPERATOR %s:%s' % (doc_id, doc_orig) + upload["description"] = doc_new self._send_xmlrpc(upload) else: rna = getattr(bpy.types, class_name).bl_rna doc_orig = rna.properties[class_prop].description - if doc_orig == self.properties.doc_new: + if doc_orig == doc_new: return ('RUNNING_MODAL',) - print("rna - old:'%s' -> new:'%s'" % (doc_orig, self.properties.doc_new)) - upload["title"] = 'RNA %s:%s' % (self.properties.doc_id, doc_orig) + print("rna - old:'%s' -> new:'%s'" % (doc_orig, doc_new)) + upload["title"] = 'RNA %s:%s' % (doc_id, doc_orig) - upload["description"] = self.properties.doc_new + upload["description"] = doc_new self._send_xmlrpc(upload) diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 622ce06c567..cce49172428 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -100,7 +100,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel): col = row.column() col.label(text="Keyframing Settings:") col.prop(ks, "insertkey_needed", text="Needed") - col.prop(ks, "insertkey_visual", text="Visual") + col.prop(ks, "insertkey_visual", text="Visual") col.prop(ks, "insertkey_xyz_to_rgb", text="XYZ to RGB") diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 57410daf2b5..56509a6e099 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -51,7 +51,7 @@ class INFO_HT_header(bpy.types.Header): layout.separator() else: layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") - + layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete") layout.separator() @@ -182,6 +182,7 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu): layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") + class INFO_MT_armature_add(dynamic_menu.DynMenu): bl_idname = "INFO_MT_armature_add" bl_label = "Armature" diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 86f9c3168fc..2beb2ff22d9 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -134,7 +134,7 @@ class SEQUENCER_MT_select(bpy.types.Menu): class SEQUENCER_MT_marker(bpy.types.Menu): - bl_label = "Marker (TODO)" + bl_label = "Marker" def draw(self, context): layout = self.layout @@ -384,7 +384,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): elif strip.type == 'TRANSFORM': self.draw_panel_transform(strip) - + col = layout.column(align=True) if strip.type == 'SPEED': @@ -393,11 +393,11 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): col.prop(strip, "use_effect_default_fade", "Default fade") if not strip.use_effect_default_fade: col.prop(strip, "effect_fader", text="Effect fader") - + def draw_panel_transform(self, strip): layout = self.layout col = layout.column() - + col.prop(strip, "interpolation") col.prop(strip, "translation_unit") col = layout.column(align=True) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 383e7ce4e9c..6d1a358408f 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -111,9 +111,9 @@ class USERPREF_PT_interface(bpy.types.Panel): column = split.column() colsplit = column.split(percentage=0.85) - + col = colsplit.column() - + #Toolbox doesn't exist yet #col.label(text="Toolbox:") #col.prop(view, "use_column_layout") @@ -173,7 +173,7 @@ class USERPREF_PT_edit(bpy.types.Panel): col.prop(edit, "enter_edit_mode") col.label(text="Align To:") col.row().prop(edit, "object_align", expand=True) - + col.separator() col.separator() col.separator() @@ -299,11 +299,11 @@ class USERPREF_PT_system(bpy.types.Panel): sub.prop(system, "audio_mixing_buffer", text="Mixing Buffer") sub.prop(system, "audio_sample_rate", text="Sample Rate") sub.prop(system, "audio_sample_format", text="Sample Format") - + col.separator() col.separator() col.separator() - + col.label(text="Weight Colors:") col.prop(system, "use_weight_color_range", text="Use Custom Range") sub = col.column() @@ -329,7 +329,7 @@ class USERPREF_PT_system(bpy.types.Panel): col1 = colsplit.column() col1.label(text="Solid OpenGL lights:") - + col = col1.split() sub = col.column() @@ -355,7 +355,7 @@ class USERPREF_PT_system(bpy.types.Panel): subsub.prop(lamp2, "diffuse_color") subsub.prop(lamp2, "specular_color") subsub.prop(lamp2, "direction") - + column = split.column() colsplit = column.split(percentage=0.85) @@ -453,7 +453,7 @@ class USERPREF_PT_theme(bpy.types.Panel): subsub.active = ui.shaded subsub.prop(ui, "shadetop") subsub.prop(ui, "shadedown") - + layout.separator() ui = theme.user_interface.wcol_tool @@ -1070,10 +1070,10 @@ class USERPREF_PT_file(bpy.types.Panel): col = split.column() col.label(text="File Paths:") - + colsplit = col.split(percentage=0.95) col1 = colsplit.split(percentage=0.3) - + sub = col1.column() sub.label(text="Fonts:") sub.label(text="Textures:") @@ -1084,7 +1084,7 @@ class USERPREF_PT_file(bpy.types.Panel): sub.label(text="Sounds:") sub.label(text="Temp:") sub.label(text="Animation Player:") - + sub = col1.column() sub.prop(paths, "fonts_directory", text="") sub.prop(paths, "textures_directory", text="") @@ -1105,7 +1105,7 @@ class USERPREF_PT_file(bpy.types.Panel): col.prop(paths, "load_ui") col.prop(paths, "filter_file_extensions") col.prop(paths, "hide_dot_files_datablocks") - + col.separator() col.separator() @@ -1474,4 +1474,4 @@ bpy.ops.add(WM_OT_keyconfig_export) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) -bpy.ops.add(WM_OT_keyitem_remove) \ No newline at end of file +bpy.ops.add(WM_OT_keyitem_remove) diff --git a/release/test/pep8.py b/release/test/pep8.py new file mode 100644 index 00000000000..b1cde7be2a7 --- /dev/null +++ b/release/test/pep8.py @@ -0,0 +1,93 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import os + +# depends on pep8, pyflakes, pylint +# for ubuntu/debian +# +# sudo apt-get install pylint pyflakes +# +# sudo apt-get install python-setuptools python-pip +# sudo pip install pep8 + +# how many lines to read into the file, pep8 comment +# should be directly after the licence header, ~20 in most cases +PEP8_SEEK_COMMENT = 40 +SKIP_PREFIX = "./tools", "./config", "./scons", "./extern" + + +def file_list_py(path): + for dirpath, dirnames, filenames in os.walk(path): + for filename in filenames: + if filename.endswith(".py"): + yield os.path.join(dirpath, filename) + + +def is_pep8(path): + f = open(path, 'r') + for i in range(PEP8_SEEK_COMMENT): + line = f.readline() + if line.startswith("# "): + return 1 + elif line.startswith("# "): + return 2 + f.close() + return 0 + + +def main(): + files = [] + files_skip = [] + for f in file_list_py("."): + pep8_type = is_pep8(f) + + if pep8_type: + # so we can batch them for each tool. + files.append((f, pep8_type)) + else: + if not [None for prefix in SKIP_PREFIX if f.startswith(prefix)]: + files_skip.append(f) + + print("\nSkipping...") + for f in files_skip: + print(" %s" % f) + + # pyflakes + print("\n\n\n# running pep8...") + for f, pep8_type in files: + if pep8_type == 1: + # E501:80 line length + os.system("pep8 --repeat --ignore=E501 '%s'" % (f)) + else: + os.system("pep8 --repeat '%s'" % (f)) + + print("\n\n\n# running pyflakes...") + for f, pep8_type in files: + os.system("pyflakes '%s'" % f) + + print("\n\n\n# running pylint...") + for f, pep8_type in files: + # let pep8 complain about line length + os.system("pylint --reports=n --max-line-length=1000 '%s'" % f) + +if __name__ == "__main__": + main() -- cgit v1.2.3 From 095994796ddf538f12fc5c56d80f537e2438fa71 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 14:00:39 +0000 Subject: tabs 2 spaces --- release/scripts/io/engine_render_pov.py | 1674 ++++----- release/scripts/io/export_3ds.py | 1692 ++++----- release/scripts/io/export_fbx.py | 5906 +++++++++++++++---------------- release/scripts/io/export_mdd.py | 24 +- release/scripts/io/export_obj.py | 1510 ++++---- release/scripts/io/export_ply.py | 466 +-- release/scripts/io/export_x3d.py | 2220 ++++++------ release/scripts/io/import_anim_bvh.py | 1574 ++++---- release/scripts/io/import_scene_3ds.py | 1362 +++---- release/scripts/io/import_scene_obj.py | 2710 +++++++------- 10 files changed, 9569 insertions(+), 9569 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index 9157136475b..1c124766044 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -27,614 +27,614 @@ import time import platform as pltfrm if pltfrm.architecture()[0] == '64bit': - bitness = 64 + bitness = 64 else: - bitness = 32 + bitness = 32 def write_pov(filename, scene=None, info_callback = None): - file = open(filename, 'w') - - # Only for testing - if not scene: - scene = bpy.data.scenes[0] - - render = scene.render_data - world = scene.world - - # --- taken from fbx exporter - ## This was used to make V, but faster not to do all that - ##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}' - ##v = range(255) - ##for c in valid: v.remove(ord(c)) - v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,46,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] - invalid = ''.join([chr(i) for i in v]) - def cleanName(name): - for ch in invalid: name = name.replace(ch, '_') - return name - del v - - # --- done with clean name. - - def uniqueName(name, nameSeq): - - if name not in nameSeq: - return name - - name_orig = name - i = 1 - while name in nameSeq: - name = '%s_%.3d' % (name_orig, i) - i+=1 - - return name - - - def writeMatrix(matrix): - file.write('\tmatrix <%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f>\n' %\ - (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2]) ) - - def writeObjectMaterial(material): - if material and material.transparency_method=='RAYTRACE': - file.write('\tinterior { ior %.6f }\n' % material.raytrace_transparency.ior) - - # Other interior args - # fade_distance 2 - # fade_power [Value] - # fade_color - - # dispersion - # dispersion_samples - - materialNames = {} - DEF_MAT_NAME = 'Default' - def writeMaterial(material): - # Assumes only called once on each material - - if material: - name_orig = material.name - else: - name_orig = DEF_MAT_NAME - - name = materialNames[name_orig] = uniqueName(cleanName(name_orig), materialNames) - - file.write('#declare %s = finish {\n' % name) - - if material: - file.write('\tdiffuse %.3g\n' % material.diffuse_intensity) - file.write('\tspecular %.3g\n' % material.specular_intensity) - - file.write('\tambient %.3g\n' % material.ambient) - #file.write('\tambient rgb <%.3g, %.3g, %.3g>\n' % tuple([c*material.ambient for c in world.ambient_color])) # povray blends the global value - - # map hardness between 0.0 and 1.0 - roughness = ((1.0 - ((material.specular_hardness-1.0)/510.0))) - # scale from 0.0 to 0.1 - roughness *= 0.1 - # add a small value because 0.0 is invalid - roughness += (1/511.0) - - file.write('\troughness %.3g\n' % roughness) - - # 'phong 70.0 ' - - if material.raytrace_mirror.enabled: - raytrace_mirror= material.raytrace_mirror - if raytrace_mirror.reflect_factor: - file.write('\treflection {\n') - file.write('\t\trgb <%.3g, %.3g, %.3g>' % tuple(material.mirror_color)) - file.write('\t\tfresnel 1 falloff %.3g exponent %.3g metallic %.3g} ' % (raytrace_mirror.fresnel, raytrace_mirror.fresnel_factor, raytrace_mirror.reflect_factor)) - - else: - file.write('\tdiffuse 0.8\n') - file.write('\tspecular 0.2\n') - - - # This is written into the object - ''' - if material and material.transparency_method=='RAYTRACE': - 'interior { ior %.3g} ' % material.raytrace_transparency.ior - ''' - - #file.write('\t\t\tcrand 1.0\n') # Sand granyness - #file.write('\t\t\tmetallic %.6f\n' % material.spec) - #file.write('\t\t\tphong %.6f\n' % material.spec) - #file.write('\t\t\tphong_size %.6f\n' % material.spec) - #file.write('\t\t\tbrilliance %.6f ' % (material.specular_hardness/256.0) # Like hardness - - file.write('}\n') - - def exportCamera(): - camera = scene.camera - matrix = camera.matrix - - # compute resolution - Qsize=float(render.resolution_x)/float(render.resolution_y) - - file.write('camera {\n') - file.write('\tlocation <0, 0, 0>\n') - file.write('\tlook_at <0, 0, -1>\n') - file.write('\tright <%s, 0, 0>\n' % -Qsize) - file.write('\tup <0, 1, 0>\n') - file.write('\tangle %f \n' % (360.0*atan(16.0/camera.data.lens)/pi)) - - file.write('\trotate <%.6f, %.6f, %.6f>\n' % tuple([degrees(e) for e in matrix.rotationPart().toEuler()])) - file.write('\ttranslate <%.6f, %.6f, %.6f>\n' % (matrix[3][0], matrix[3][1], matrix[3][2])) - file.write('}\n') - - def exportLamps(lamps): - # Get all lamps - for ob in lamps: - lamp = ob.data - - matrix = ob.matrix - - color = tuple([c * lamp.energy for c in lamp.color]) # Colour is modified by energy - - file.write('light_source {\n') - file.write('\t< 0,0,0 >\n') - file.write('\tcolor rgb<%.3g, %.3g, %.3g>\n' % color) - - if lamp.type == 'POINT': # Point Lamp - pass - elif lamp.type == 'SPOT': # Spot - file.write('\tspotlight\n') - - # Falloff is the main radius from the centre line - file.write('\tfalloff %.2f\n' % (lamp.spot_size/2.0) ) # 1 TO 179 FOR BOTH - file.write('\tradius %.6f\n' % ((lamp.spot_size/2.0) * (1-lamp.spot_blend)) ) - - # Blender does not have a tightness equivilent, 0 is most like blender default. - file.write('\ttightness 0\n') # 0:10f - - file.write('\tpoint_at <0, 0, -1>\n') - elif lamp.type == 'SUN': - file.write('\tparallel\n') - file.write('\tpoint_at <0, 0, -1>\n') # *must* be after 'parallel' - - elif lamp.type == 'AREA': - - size_x = lamp.size - samples_x = lamp.shadow_ray_samples_x - if lamp.shape == 'SQUARE': - size_y = size_x - samples_y = samples_x - else: - size_y = lamp.size_y - samples_y = lamp.shadow_ray_samples_y - - file.write('\tarea_light <%d,0,0>,<0,0,%d> %d, %d\n' % (size_x, size_y, samples_x, samples_y)) - if lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED': - if lamp.jitter: - file.write('\tjitter\n') - else: - file.write('\tadaptive 1\n') - file.write('\tjitter\n') - - if lamp.shadow_method == 'NOSHADOW': - file.write('\tshadowless\n') - - file.write('\tfade_distance %.6f\n' % lamp.distance) - file.write('\tfade_power %d\n' % 1) # Could use blenders lamp quad? - writeMatrix(matrix) - - file.write('}\n') - - def exportMeta(metas): - - # TODO - blenders 'motherball' naming is not supported. - - for ob in metas: - meta = ob.data - - file.write('blob {\n') - file.write('\t\tthreshold %.4g\n' % meta.threshold) - - try: - material= meta.materials[0] # lame! - blender cant do enything else. - except: - material= None - - for elem in meta.elements: - - if elem.type not in ('BALL', 'ELLIPSOID'): - continue # Not supported - - loc = elem.location - - stiffness= elem.stiffness - if elem.negative: - stiffness = -stiffness - - if elem.type == 'BALL': - - file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x, loc.y, loc.z, elem.radius, stiffness)) - - # After this wecould do something simple like... - # "pigment {Blue} }" - # except we'll write the color - - elif elem.type == 'ELLIPSOID': - # location is modified by scale - file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x/elem.size_x, loc.y/elem.size_y, loc.z/elem.size_z, elem.radius, stiffness)) - file.write( 'scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) - - if material: - diffuse_color = material.diffuse_color - - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 - - file.write( - 'pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ - (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1-material.alpha, trans, materialNames[material.name]) - ) - - else: - file.write('pigment {rgb<1 1 1>} finish {%s} }\n' % DEF_MAT_NAME) # Write the finish last. - - writeObjectMaterial(material) - - writeMatrix(ob.matrix) - - file.write('}\n') - - def exportMeshs(sel): - - ob_num = 0 - - for ob in sel: - ob_num+= 1 - - if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE'): - continue - - me = ob.data - me_materials= me.materials - - me = ob.create_mesh(True, 'RENDER') - - if not me: - continue - - if info_callback: - info_callback('Object %2.d of %2.d (%s)' % (ob_num, len(sel), ob.name)) - - #if ob.type!='MESH': - # continue - # me = ob.data - - matrix = ob.matrix - try: uv_layer = me.active_uv_texture.data - except:uv_layer = None - - try: vcol_layer = me.active_vertex_color.data - except:vcol_layer = None - - faces_verts = [f.verts for f in me.faces] - faces_normals = [tuple(f.normal) for f in me.faces] - verts_normals = [tuple(v.normal) for v in me.verts] - - # quads incur an extra face - quadCount = len([f for f in faces_verts if len(f)==4]) - - file.write('mesh2 {\n') - file.write('\tvertex_vectors {\n') - file.write('\t\t%s' % (len(me.verts))) # vert count - for v in me.verts: - file.write(',\n\t\t<%.6f, %.6f, %.6f>' % tuple(v.co)) # vert count - file.write('\n }\n') - - - # Build unique Normal list - uniqueNormals = {} - for fi, f in enumerate(me.faces): - fv = faces_verts[fi] - # [-1] is a dummy index, use a list so we can modify in place - if f.smooth: # Use vertex normals - for v in fv: - key = verts_normals[v] - uniqueNormals[key] = [-1] - else: # Use face normal - key = faces_normals[fi] - uniqueNormals[key] = [-1] - - file.write('\tnormal_vectors {\n') - file.write('\t\t%d' % len(uniqueNormals)) # vert count - idx = 0 - for no, index in uniqueNormals.items(): - file.write(',\n\t\t<%.6f, %.6f, %.6f>' % no) # vert count - index[0] = idx - idx +=1 - file.write('\n }\n') - - - # Vertex colours - vertCols = {} # Use for material colours also. - - if uv_layer: - # Generate unique UV's - uniqueUVs = {} - - for fi, uv in enumerate(uv_layer): - - if len(faces_verts[fi])==4: - uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 - else: - uvs = uv.uv1, uv.uv2, uv.uv3 - - for uv in uvs: - uniqueUVs[tuple(uv)] = [-1] - - file.write('\tuv_vectors {\n') - #print unique_uvs - file.write('\t\t%s' % (len(uniqueUVs))) # vert count - idx = 0 - for uv, index in uniqueUVs.items(): - file.write(',\n\t\t<%.6f, %.6f>' % uv) - index[0] = idx - idx +=1 - ''' - else: - # Just add 1 dummy vector, no real UV's - file.write('\t\t1') # vert count - file.write(',\n\t\t<0.0, 0.0>') - ''' - file.write('\n }\n') - - - if me.vertex_colors: - - for fi, f in enumerate(me.faces): - material_index = f.material_index - material = me_materials[material_index] - - if material and material.vertex_color_paint: - - col = vcol_layer[fi] - - if len(faces_verts[fi])==4: - cols = col.color1, col.color2, col.color3, col.color4 - else: - cols = col.color1, col.color2, col.color3 - - for col in cols: - key = col[0], col[1], col[2], material_index # Material index! - vertCols[key] = [-1] - - else: - if material: - diffuse_color = tuple(material.diffuse_color) - key = diffuse_color[0], diffuse_color[1], diffuse_color[2], material_index - vertCols[key] = [-1] - - - else: - # No vertex colours, so write material colours as vertex colours - for i, material in enumerate(me_materials): - - if material: - diffuse_color = tuple(material.diffuse_color) - key = diffuse_color[0], diffuse_color[1], diffuse_color[2], i # i == f.mat - vertCols[key] = [-1] - - - # Vert Colours - file.write('\ttexture_list {\n') - file.write('\t\t%s' % (len(vertCols))) # vert count - idx=0 - for col, index in vertCols.items(): - - if me_materials: - material = me_materials[col[3]] - material_finish = materialNames[material.name] - - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 - - else: - material_finish = DEF_MAT_NAME # not working properly, - trans = 0.0 - - #print material.apl - file.write( ',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % - (col[0], col[1], col[2], 1-material.alpha, trans, material_finish) ) - - index[0] = idx - idx+=1 - - file.write( '\n }\n' ) - - # Face indicies - file.write('\tface_indices {\n') - file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count - for fi, f in enumerate(me.faces): - fv = faces_verts[fi] - material_index= f.material_index - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) - - if vcol_layer: - col = vcol_layer[fi] - - if len(fv) == 4: - cols = col.color1, col.color2, col.color3, col.color4 - else: - cols = col.color1, col.color2, col.color3 - - - if not me_materials or me_materials[material_index] == None: # No materials - for i1, i2, i3 in indicies: - file.write(',\n\t\t<%d,%d,%d>' % (fv[i1], fv[i2], fv[i3])) # vert count - else: - material = me_materials[material_index] - for i1, i2, i3 in indicies: - if me.vertex_colors and material.vertex_color_paint: - # Colour per vertex - vertex colour - - col1 = cols[i1] - col2 = cols[i2] - col3 = cols[i3] - - ci1 = vertCols[col1[0], col1[1], col1[2], material_index][0] - ci2 = vertCols[col2[0], col2[1], col2[2], material_index][0] - ci3 = vertCols[col3[0], col3[1], col3[2], material_index][0] - else: - # Colour per material - flat material colour - diffuse_color= material.diffuse_color - ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], diffuse_color[2], f.material_index][0] - - file.write(',\n\t\t<%d,%d,%d>, %d,%d,%d' % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3)) # vert count - - - file.write('\n }\n') - - # normal_indices indicies - file.write('\tnormal_indices {\n') - file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count - for fi, fv in enumerate(faces_verts): - - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) - - for i1, i2, i3 in indicies: - if f.smooth: - file.write(',\n\t\t<%d,%d,%d>' %\ - (uniqueNormals[verts_normals[fv[i1]]][0],\ - uniqueNormals[verts_normals[fv[i2]]][0],\ - uniqueNormals[verts_normals[fv[i3]]][0])) # vert count - else: - idx = uniqueNormals[faces_normals[fi]][0] - file.write(',\n\t\t<%d,%d,%d>' % (idx, idx, idx)) # vert count - - file.write('\n }\n') - - if uv_layer: - file.write('\tuv_indices {\n') - file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count - for fi, fv in enumerate(faces_verts): - - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) - - uv = uv_layer[fi] - if len(faces_verts[fi])==4: - uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3), tuple(uv.uv4) - else: - uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3) - - for i1, i2, i3 in indicies: - file.write(',\n\t\t<%d,%d,%d>' %\ - (uniqueUVs[uvs[i1]][0],\ - uniqueUVs[uvs[i2]][0],\ - uniqueUVs[uvs[i2]][0])) # vert count - file.write('\n }\n') - - if me.materials: - material = me.materials[0] # dodgy - writeObjectMaterial(material) - - writeMatrix(matrix) - file.write('}\n') - - bpy.data.remove_mesh(me) - - def exportWorld(world): - if not world: - return - - mist = world.mist - - if mist.enabled: - file.write('fog {\n') - file.write('\tdistance %.6f\n' % mist.depth) - file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1-mist.intensity,))) - #file.write('\tfog_offset %.6f\n' % mist.start) - #file.write('\tfog_alt 5\n') - #file.write('\tturbulence 0.2\n') - #file.write('\tturb_depth 0.3\n') - file.write('\tfog_type 1\n') - file.write('}\n') - - def exportGlobalSettings(scene): - - file.write('global_settings {\n') - - if scene.pov_radio_enable: - file.write('\tradiosity {\n') - file.write("\t\tadc_bailout %.4g\n" % scene.pov_radio_adc_bailout) - file.write("\t\talways_sample %d\n" % scene.pov_radio_always_sample) - file.write("\t\tbrightness %.4g\n" % scene.pov_radio_brightness) - file.write("\t\tcount %d\n" % scene.pov_radio_count) - file.write("\t\terror_bound %.4g\n" % scene.pov_radio_error_bound) - file.write("\t\tgray_threshold %.4g\n" % scene.pov_radio_gray_threshold) - file.write("\t\tlow_error_factor %.4g\n" % scene.pov_radio_low_error_factor) - file.write("\t\tmedia %d\n" % scene.pov_radio_media) - file.write("\t\tminimum_reuse %.4g\n" % scene.pov_radio_minimum_reuse) - file.write("\t\tnearest_count %d\n" % scene.pov_radio_nearest_count) - file.write("\t\tnormal %d\n" % scene.pov_radio_normal) - file.write("\t\trecursion_limit %d\n" % scene.pov_radio_recursion_limit) - file.write('\t}\n') - - if world: - file.write("\tambient_light rgb<%.3g, %.3g, %.3g>\n" % tuple(world.ambient_color)) - - file.write('}\n') - - - # Convert all materials to strings we can access directly per vertex. - writeMaterial(None) # default material - - for material in bpy.data.materials: - writeMaterial(material) - - exportCamera() - #exportMaterials() - sel = scene.objects - exportLamps([l for l in sel if l.type == 'LAMP']) - exportMeta([l for l in sel if l.type == 'META']) - exportMeshs(sel) - exportWorld(scene.world) - exportGlobalSettings(scene) - - file.close() + file = open(filename, 'w') + + # Only for testing + if not scene: + scene = bpy.data.scenes[0] + + render = scene.render_data + world = scene.world + + # --- taken from fbx exporter + ## This was used to make V, but faster not to do all that + ##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}' + ##v = range(255) + ##for c in valid: v.remove(ord(c)) + v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,46,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] + invalid = ''.join([chr(i) for i in v]) + def cleanName(name): + for ch in invalid: name = name.replace(ch, '_') + return name + del v + + # --- done with clean name. + + def uniqueName(name, nameSeq): + + if name not in nameSeq: + return name + + name_orig = name + i = 1 + while name in nameSeq: + name = '%s_%.3d' % (name_orig, i) + i+=1 + + return name + + + def writeMatrix(matrix): + file.write('\tmatrix <%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f>\n' %\ + (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2]) ) + + def writeObjectMaterial(material): + if material and material.transparency_method=='RAYTRACE': + file.write('\tinterior { ior %.6f }\n' % material.raytrace_transparency.ior) + + # Other interior args + # fade_distance 2 + # fade_power [Value] + # fade_color + + # dispersion + # dispersion_samples + + materialNames = {} + DEF_MAT_NAME = 'Default' + def writeMaterial(material): + # Assumes only called once on each material + + if material: + name_orig = material.name + else: + name_orig = DEF_MAT_NAME + + name = materialNames[name_orig] = uniqueName(cleanName(name_orig), materialNames) + + file.write('#declare %s = finish {\n' % name) + + if material: + file.write('\tdiffuse %.3g\n' % material.diffuse_intensity) + file.write('\tspecular %.3g\n' % material.specular_intensity) + + file.write('\tambient %.3g\n' % material.ambient) + #file.write('\tambient rgb <%.3g, %.3g, %.3g>\n' % tuple([c*material.ambient for c in world.ambient_color])) # povray blends the global value + + # map hardness between 0.0 and 1.0 + roughness = ((1.0 - ((material.specular_hardness-1.0)/510.0))) + # scale from 0.0 to 0.1 + roughness *= 0.1 + # add a small value because 0.0 is invalid + roughness += (1/511.0) + + file.write('\troughness %.3g\n' % roughness) + + # 'phong 70.0 ' + + if material.raytrace_mirror.enabled: + raytrace_mirror= material.raytrace_mirror + if raytrace_mirror.reflect_factor: + file.write('\treflection {\n') + file.write('\t\trgb <%.3g, %.3g, %.3g>' % tuple(material.mirror_color)) + file.write('\t\tfresnel 1 falloff %.3g exponent %.3g metallic %.3g} ' % (raytrace_mirror.fresnel, raytrace_mirror.fresnel_factor, raytrace_mirror.reflect_factor)) + + else: + file.write('\tdiffuse 0.8\n') + file.write('\tspecular 0.2\n') + + + # This is written into the object + ''' + if material and material.transparency_method=='RAYTRACE': + 'interior { ior %.3g} ' % material.raytrace_transparency.ior + ''' + + #file.write('\t\t\tcrand 1.0\n') # Sand granyness + #file.write('\t\t\tmetallic %.6f\n' % material.spec) + #file.write('\t\t\tphong %.6f\n' % material.spec) + #file.write('\t\t\tphong_size %.6f\n' % material.spec) + #file.write('\t\t\tbrilliance %.6f ' % (material.specular_hardness/256.0) # Like hardness + + file.write('}\n') + + def exportCamera(): + camera = scene.camera + matrix = camera.matrix + + # compute resolution + Qsize=float(render.resolution_x)/float(render.resolution_y) + + file.write('camera {\n') + file.write('\tlocation <0, 0, 0>\n') + file.write('\tlook_at <0, 0, -1>\n') + file.write('\tright <%s, 0, 0>\n' % -Qsize) + file.write('\tup <0, 1, 0>\n') + file.write('\tangle %f \n' % (360.0*atan(16.0/camera.data.lens)/pi)) + + file.write('\trotate <%.6f, %.6f, %.6f>\n' % tuple([degrees(e) for e in matrix.rotationPart().toEuler()])) + file.write('\ttranslate <%.6f, %.6f, %.6f>\n' % (matrix[3][0], matrix[3][1], matrix[3][2])) + file.write('}\n') + + def exportLamps(lamps): + # Get all lamps + for ob in lamps: + lamp = ob.data + + matrix = ob.matrix + + color = tuple([c * lamp.energy for c in lamp.color]) # Colour is modified by energy + + file.write('light_source {\n') + file.write('\t< 0,0,0 >\n') + file.write('\tcolor rgb<%.3g, %.3g, %.3g>\n' % color) + + if lamp.type == 'POINT': # Point Lamp + pass + elif lamp.type == 'SPOT': # Spot + file.write('\tspotlight\n') + + # Falloff is the main radius from the centre line + file.write('\tfalloff %.2f\n' % (lamp.spot_size/2.0) ) # 1 TO 179 FOR BOTH + file.write('\tradius %.6f\n' % ((lamp.spot_size/2.0) * (1-lamp.spot_blend)) ) + + # Blender does not have a tightness equivilent, 0 is most like blender default. + file.write('\ttightness 0\n') # 0:10f + + file.write('\tpoint_at <0, 0, -1>\n') + elif lamp.type == 'SUN': + file.write('\tparallel\n') + file.write('\tpoint_at <0, 0, -1>\n') # *must* be after 'parallel' + + elif lamp.type == 'AREA': + + size_x = lamp.size + samples_x = lamp.shadow_ray_samples_x + if lamp.shape == 'SQUARE': + size_y = size_x + samples_y = samples_x + else: + size_y = lamp.size_y + samples_y = lamp.shadow_ray_samples_y + + file.write('\tarea_light <%d,0,0>,<0,0,%d> %d, %d\n' % (size_x, size_y, samples_x, samples_y)) + if lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED': + if lamp.jitter: + file.write('\tjitter\n') + else: + file.write('\tadaptive 1\n') + file.write('\tjitter\n') + + if lamp.shadow_method == 'NOSHADOW': + file.write('\tshadowless\n') + + file.write('\tfade_distance %.6f\n' % lamp.distance) + file.write('\tfade_power %d\n' % 1) # Could use blenders lamp quad? + writeMatrix(matrix) + + file.write('}\n') + + def exportMeta(metas): + + # TODO - blenders 'motherball' naming is not supported. + + for ob in metas: + meta = ob.data + + file.write('blob {\n') + file.write('\t\tthreshold %.4g\n' % meta.threshold) + + try: + material= meta.materials[0] # lame! - blender cant do enything else. + except: + material= None + + for elem in meta.elements: + + if elem.type not in ('BALL', 'ELLIPSOID'): + continue # Not supported + + loc = elem.location + + stiffness= elem.stiffness + if elem.negative: + stiffness = -stiffness + + if elem.type == 'BALL': + + file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x, loc.y, loc.z, elem.radius, stiffness)) + + # After this wecould do something simple like... + # "pigment {Blue} }" + # except we'll write the color + + elif elem.type == 'ELLIPSOID': + # location is modified by scale + file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x/elem.size_x, loc.y/elem.size_y, loc.z/elem.size_z, elem.radius, stiffness)) + file.write( 'scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) + + if material: + diffuse_color = material.diffuse_color + + if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter + else: trans = 0.0 + + file.write( + 'pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ + (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1-material.alpha, trans, materialNames[material.name]) + ) + + else: + file.write('pigment {rgb<1 1 1>} finish {%s} }\n' % DEF_MAT_NAME) # Write the finish last. + + writeObjectMaterial(material) + + writeMatrix(ob.matrix) + + file.write('}\n') + + def exportMeshs(sel): + + ob_num = 0 + + for ob in sel: + ob_num+= 1 + + if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE'): + continue + + me = ob.data + me_materials= me.materials + + me = ob.create_mesh(True, 'RENDER') + + if not me: + continue + + if info_callback: + info_callback('Object %2.d of %2.d (%s)' % (ob_num, len(sel), ob.name)) + + #if ob.type!='MESH': + # continue + # me = ob.data + + matrix = ob.matrix + try: uv_layer = me.active_uv_texture.data + except:uv_layer = None + + try: vcol_layer = me.active_vertex_color.data + except:vcol_layer = None + + faces_verts = [f.verts for f in me.faces] + faces_normals = [tuple(f.normal) for f in me.faces] + verts_normals = [tuple(v.normal) for v in me.verts] + + # quads incur an extra face + quadCount = len([f for f in faces_verts if len(f)==4]) + + file.write('mesh2 {\n') + file.write('\tvertex_vectors {\n') + file.write('\t\t%s' % (len(me.verts))) # vert count + for v in me.verts: + file.write(',\n\t\t<%.6f, %.6f, %.6f>' % tuple(v.co)) # vert count + file.write('\n }\n') + + + # Build unique Normal list + uniqueNormals = {} + for fi, f in enumerate(me.faces): + fv = faces_verts[fi] + # [-1] is a dummy index, use a list so we can modify in place + if f.smooth: # Use vertex normals + for v in fv: + key = verts_normals[v] + uniqueNormals[key] = [-1] + else: # Use face normal + key = faces_normals[fi] + uniqueNormals[key] = [-1] + + file.write('\tnormal_vectors {\n') + file.write('\t\t%d' % len(uniqueNormals)) # vert count + idx = 0 + for no, index in uniqueNormals.items(): + file.write(',\n\t\t<%.6f, %.6f, %.6f>' % no) # vert count + index[0] = idx + idx +=1 + file.write('\n }\n') + + + # Vertex colours + vertCols = {} # Use for material colours also. + + if uv_layer: + # Generate unique UV's + uniqueUVs = {} + + for fi, uv in enumerate(uv_layer): + + if len(faces_verts[fi])==4: + uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 + else: + uvs = uv.uv1, uv.uv2, uv.uv3 + + for uv in uvs: + uniqueUVs[tuple(uv)] = [-1] + + file.write('\tuv_vectors {\n') + #print unique_uvs + file.write('\t\t%s' % (len(uniqueUVs))) # vert count + idx = 0 + for uv, index in uniqueUVs.items(): + file.write(',\n\t\t<%.6f, %.6f>' % uv) + index[0] = idx + idx +=1 + ''' + else: + # Just add 1 dummy vector, no real UV's + file.write('\t\t1') # vert count + file.write(',\n\t\t<0.0, 0.0>') + ''' + file.write('\n }\n') + + + if me.vertex_colors: + + for fi, f in enumerate(me.faces): + material_index = f.material_index + material = me_materials[material_index] + + if material and material.vertex_color_paint: + + col = vcol_layer[fi] + + if len(faces_verts[fi])==4: + cols = col.color1, col.color2, col.color3, col.color4 + else: + cols = col.color1, col.color2, col.color3 + + for col in cols: + key = col[0], col[1], col[2], material_index # Material index! + vertCols[key] = [-1] + + else: + if material: + diffuse_color = tuple(material.diffuse_color) + key = diffuse_color[0], diffuse_color[1], diffuse_color[2], material_index + vertCols[key] = [-1] + + + else: + # No vertex colours, so write material colours as vertex colours + for i, material in enumerate(me_materials): + + if material: + diffuse_color = tuple(material.diffuse_color) + key = diffuse_color[0], diffuse_color[1], diffuse_color[2], i # i == f.mat + vertCols[key] = [-1] + + + # Vert Colours + file.write('\ttexture_list {\n') + file.write('\t\t%s' % (len(vertCols))) # vert count + idx=0 + for col, index in vertCols.items(): + + if me_materials: + material = me_materials[col[3]] + material_finish = materialNames[material.name] + + if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter + else: trans = 0.0 + + else: + material_finish = DEF_MAT_NAME # not working properly, + trans = 0.0 + + #print material.apl + file.write( ',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % + (col[0], col[1], col[2], 1-material.alpha, trans, material_finish) ) + + index[0] = idx + idx+=1 + + file.write( '\n }\n' ) + + # Face indicies + file.write('\tface_indices {\n') + file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count + for fi, f in enumerate(me.faces): + fv = faces_verts[fi] + material_index= f.material_index + if len(fv) == 4: indicies = (0,1,2), (0,2,3) + else: indicies = ((0,1,2),) + + if vcol_layer: + col = vcol_layer[fi] + + if len(fv) == 4: + cols = col.color1, col.color2, col.color3, col.color4 + else: + cols = col.color1, col.color2, col.color3 + + + if not me_materials or me_materials[material_index] == None: # No materials + for i1, i2, i3 in indicies: + file.write(',\n\t\t<%d,%d,%d>' % (fv[i1], fv[i2], fv[i3])) # vert count + else: + material = me_materials[material_index] + for i1, i2, i3 in indicies: + if me.vertex_colors and material.vertex_color_paint: + # Colour per vertex - vertex colour + + col1 = cols[i1] + col2 = cols[i2] + col3 = cols[i3] + + ci1 = vertCols[col1[0], col1[1], col1[2], material_index][0] + ci2 = vertCols[col2[0], col2[1], col2[2], material_index][0] + ci3 = vertCols[col3[0], col3[1], col3[2], material_index][0] + else: + # Colour per material - flat material colour + diffuse_color= material.diffuse_color + ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], diffuse_color[2], f.material_index][0] + + file.write(',\n\t\t<%d,%d,%d>, %d,%d,%d' % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3)) # vert count + + + file.write('\n }\n') + + # normal_indices indicies + file.write('\tnormal_indices {\n') + file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count + for fi, fv in enumerate(faces_verts): + + if len(fv) == 4: indicies = (0,1,2), (0,2,3) + else: indicies = ((0,1,2),) + + for i1, i2, i3 in indicies: + if f.smooth: + file.write(',\n\t\t<%d,%d,%d>' %\ + (uniqueNormals[verts_normals[fv[i1]]][0],\ + uniqueNormals[verts_normals[fv[i2]]][0],\ + uniqueNormals[verts_normals[fv[i3]]][0])) # vert count + else: + idx = uniqueNormals[faces_normals[fi]][0] + file.write(',\n\t\t<%d,%d,%d>' % (idx, idx, idx)) # vert count + + file.write('\n }\n') + + if uv_layer: + file.write('\tuv_indices {\n') + file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count + for fi, fv in enumerate(faces_verts): + + if len(fv) == 4: indicies = (0,1,2), (0,2,3) + else: indicies = ((0,1,2),) + + uv = uv_layer[fi] + if len(faces_verts[fi])==4: + uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3), tuple(uv.uv4) + else: + uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3) + + for i1, i2, i3 in indicies: + file.write(',\n\t\t<%d,%d,%d>' %\ + (uniqueUVs[uvs[i1]][0],\ + uniqueUVs[uvs[i2]][0],\ + uniqueUVs[uvs[i2]][0])) # vert count + file.write('\n }\n') + + if me.materials: + material = me.materials[0] # dodgy + writeObjectMaterial(material) + + writeMatrix(matrix) + file.write('}\n') + + bpy.data.remove_mesh(me) + + def exportWorld(world): + if not world: + return + + mist = world.mist + + if mist.enabled: + file.write('fog {\n') + file.write('\tdistance %.6f\n' % mist.depth) + file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1-mist.intensity,))) + #file.write('\tfog_offset %.6f\n' % mist.start) + #file.write('\tfog_alt 5\n') + #file.write('\tturbulence 0.2\n') + #file.write('\tturb_depth 0.3\n') + file.write('\tfog_type 1\n') + file.write('}\n') + + def exportGlobalSettings(scene): + + file.write('global_settings {\n') + + if scene.pov_radio_enable: + file.write('\tradiosity {\n') + file.write("\t\tadc_bailout %.4g\n" % scene.pov_radio_adc_bailout) + file.write("\t\talways_sample %d\n" % scene.pov_radio_always_sample) + file.write("\t\tbrightness %.4g\n" % scene.pov_radio_brightness) + file.write("\t\tcount %d\n" % scene.pov_radio_count) + file.write("\t\terror_bound %.4g\n" % scene.pov_radio_error_bound) + file.write("\t\tgray_threshold %.4g\n" % scene.pov_radio_gray_threshold) + file.write("\t\tlow_error_factor %.4g\n" % scene.pov_radio_low_error_factor) + file.write("\t\tmedia %d\n" % scene.pov_radio_media) + file.write("\t\tminimum_reuse %.4g\n" % scene.pov_radio_minimum_reuse) + file.write("\t\tnearest_count %d\n" % scene.pov_radio_nearest_count) + file.write("\t\tnormal %d\n" % scene.pov_radio_normal) + file.write("\t\trecursion_limit %d\n" % scene.pov_radio_recursion_limit) + file.write('\t}\n') + + if world: + file.write("\tambient_light rgb<%.3g, %.3g, %.3g>\n" % tuple(world.ambient_color)) + + file.write('}\n') + + + # Convert all materials to strings we can access directly per vertex. + writeMaterial(None) # default material + + for material in bpy.data.materials: + writeMaterial(material) + + exportCamera() + #exportMaterials() + sel = scene.objects + exportLamps([l for l in sel if l.type == 'LAMP']) + exportMeta([l for l in sel if l.type == 'META']) + exportMeshs(sel) + exportWorld(scene.world) + exportGlobalSettings(scene) + + file.close() def write_pov_ini(filename_ini, filename_pov, filename_image): - scene = bpy.data.scenes[0] - render = scene.render_data - - x= int(render.resolution_x*render.resolution_percentage*0.01) - y= int(render.resolution_y*render.resolution_percentage*0.01) - - file = open(filename_ini, 'w') - - file.write('Input_File_Name="%s"\n' % filename_pov) - file.write('Output_File_Name="%s"\n' % filename_image) - - file.write('Width=%d\n' % x) - file.write('Height=%d\n' % y) - - # Needed for border render. - ''' - file.write('Start_Column=%d\n' % part.x) - file.write('End_Column=%d\n' % (part.x+part.w)) - - file.write('Start_Row=%d\n' % (part.y)) - file.write('End_Row=%d\n' % (part.y+part.h)) - ''' - - file.write('Display=0\n') - file.write('Pause_When_Done=0\n') - file.write('Output_File_Type=T\n') # TGA, best progressive loading - file.write('Output_Alpha=1\n') - - if render.antialiasing: - aa_mapping = {'OVERSAMPLE_5':2, 'OVERSAMPLE_8':3, 'OVERSAMPLE_11':4, 'OVERSAMPLE_16':5} # method 1 assumed - file.write('Antialias=1\n') - file.write('Antialias_Depth=%d\n' % aa_mapping[render.antialiasing_samples]) - else: - file.write('Antialias=0\n') - - file.close() + scene = bpy.data.scenes[0] + render = scene.render_data + + x= int(render.resolution_x*render.resolution_percentage*0.01) + y= int(render.resolution_y*render.resolution_percentage*0.01) + + file = open(filename_ini, 'w') + + file.write('Input_File_Name="%s"\n' % filename_pov) + file.write('Output_File_Name="%s"\n' % filename_image) + + file.write('Width=%d\n' % x) + file.write('Height=%d\n' % y) + + # Needed for border render. + ''' + file.write('Start_Column=%d\n' % part.x) + file.write('End_Column=%d\n' % (part.x+part.w)) + + file.write('Start_Row=%d\n' % (part.y)) + file.write('End_Row=%d\n' % (part.y+part.h)) + ''' + + file.write('Display=0\n') + file.write('Pause_When_Done=0\n') + file.write('Output_File_Type=T\n') # TGA, best progressive loading + file.write('Output_Alpha=1\n') + + if render.antialiasing: + aa_mapping = {'OVERSAMPLE_5':2, 'OVERSAMPLE_8':3, 'OVERSAMPLE_11':4, 'OVERSAMPLE_16':5} # method 1 assumed + file.write('Antialias=1\n') + file.write('Antialias_Depth=%d\n' % aa_mapping[render.antialiasing_samples]) + else: + file.write('Antialias=0\n') + + file.close() # Radiosity panel, use in the scene for now. FloatProperty= bpy.types.Scene.FloatProperty @@ -643,204 +643,204 @@ BoolProperty= bpy.types.Scene.BoolProperty # Not a real pov option, just to know if we should write BoolProperty( attr="pov_radio_enable", - name="Enable Radiosity", - description="Enable povrays radiosity calculation.", - default= False) + name="Enable Radiosity", + description="Enable povrays radiosity calculation.", + default= False) BoolProperty( attr="pov_radio_display_advanced", - name="Advanced Options", - description="Show advanced options.", - default= False) + name="Advanced Options", + description="Show advanced options.", + default= False) # Real pov options FloatProperty( attr="pov_radio_adc_bailout", - name="ADC Bailout", - description="The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default= 0.01) + name="ADC Bailout", + description="The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results.", + min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default= 0.01) BoolProperty( attr="pov_radio_always_sample", - name="Always Sample", - description="Only use the data from the pretrace step and not gather any new samples during the final radiosity pass..", - default= True) + name="Always Sample", + description="Only use the data from the pretrace step and not gather any new samples during the final radiosity pass..", + default= True) FloatProperty( attr="pov_radio_brightness", - name="Brightness", - description="Ammount objects are brightened before being returned upwards to the rest of the system.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default= 1.0) + name="Brightness", + description="Ammount objects are brightened before being returned upwards to the rest of the system.", + min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default= 1.0) IntProperty( attr="pov_radio_count", - name="Ray Count", - description="number of rays that are sent out whenever a new radiosity value has to be calculated.", - min=1, max=1600, default= 35) + name="Ray Count", + description="number of rays that are sent out whenever a new radiosity value has to be calculated.", + min=1, max=1600, default= 35) FloatProperty( attr="pov_radio_error_bound", - name="Error Bound", - description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default= 1.8) + name="Error Bound", + description="one of the two main speed/quality tuning values, lower values are more accurate.", + min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default= 1.8) FloatProperty( attr="pov_radio_gray_threshold", - name="Gray Threshold", - description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1.0, soft_min=0, soft_max=1, default= 0.0) - + name="Gray Threshold", + description="one of the two main speed/quality tuning values, lower values are more accurate.", + min=0.0, max=1.0, soft_min=0, soft_max=1, default= 0.0) + FloatProperty( attr="pov_radio_low_error_factor", - name="Low Error Factor", - description="If you calculate just enough samples, but no more, you will get an image which has slightly blotchy lighting.", - min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default= 0.5) + name="Low Error Factor", + description="If you calculate just enough samples, but no more, you will get an image which has slightly blotchy lighting.", + min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default= 0.5) # max_sample - not available yet -BoolProperty( attr="pov_radio_media", - name="Media", - description="Radiosity estimation can be affected by media.", - default= False) +BoolProperty( attr="pov_radio_media", + name="Media", + description="Radiosity estimation can be affected by media.", + default= False) FloatProperty( attr="pov_radio_minimum_reuse", - name="Minimum Reuse", - description="Fraction of the screen width which sets the minimum radius of reuse for each sample point (At values higher than 2% expect errors).", - min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default= 0.015) - + name="Minimum Reuse", + description="Fraction of the screen width which sets the minimum radius of reuse for each sample point (At values higher than 2% expect errors).", + min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default= 0.015) + IntProperty( attr="pov_radio_nearest_count", - name="Nearest Count", - description="Number of old ambient values blended together to create a new interpolated value.", - min=1, max=20, default= 5) - + name="Nearest Count", + description="Number of old ambient values blended together to create a new interpolated value.", + min=1, max=20, default= 5) + BoolProperty( attr="pov_radio_normal", - name="Normals", - description="Radiosity estimation can be affected by normals.", - default= False) + name="Normals", + description="Radiosity estimation can be affected by normals.", + default= False) IntProperty( attr="pov_radio_recursion_limit", - name="Recursion Limit", - description="how many recursion levels are used to calculate the diffuse inter-reflection.", - min=1, max=20, default= 3) - + name="Recursion Limit", + description="how many recursion levels are used to calculate the diffuse inter-reflection.", + min=1, max=20, default= 3) + class PovrayRender(bpy.types.RenderEngine): - bl_idname = 'POVRAY_RENDER' - bl_label = "Povray" - DELAY = 0.02 - - def _export(self, scene): - import tempfile - - self._temp_file_in = tempfile.mktemp(suffix='.pov') - self._temp_file_out = tempfile.mktemp(suffix='.tga') - self._temp_file_ini = tempfile.mktemp(suffix='.ini') - ''' - self._temp_file_in = '/test.pov' - self._temp_file_out = '/test.tga' - self._temp_file_ini = '/test.ini' - ''' - - def info_callback(txt): - self.update_stats("", "POVRAY: " + txt) - - write_pov(self._temp_file_in, scene, info_callback) - - def _render(self): - - try: os.remove(self._temp_file_out) # so as not to load the old file - except: pass - - write_pov_ini(self._temp_file_ini, self._temp_file_in, self._temp_file_out) - - print ("***-STARTING-***") - - pov_binary = "povray" - - if sys.platform=='win32': - import winreg - regKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\POV-Ray\\v3.6\\Windows') - - if bitness == 64: - pov_binary = winreg.QueryValueEx(regKey, 'Home')[0] + '\\bin\\pvengine64' - else: - pov_binary = winreg.QueryValueEx(regKey, 'Home')[0] + '\\bin\\pvengine' - - if 1: - # TODO, when povray isnt found this gives a cryptic error, would be nice to be able to detect if it exists - self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE - else: - # This works too but means we have to wait until its done - os.system('%s %s' % (pov_binary, self._temp_file_ini)) - - print ("***-DONE-***") - - def _cleanup(self): - for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out): - try: os.remove(f) - except: pass - - self.update_stats("", "") - - def render(self, scene): - - self.update_stats("", "POVRAY: Exporting data from Blender") - self._export(scene) - self.update_stats("", "POVRAY: Parsing File") - self._render() - - r = scene.render_data - - # compute resolution - x= int(r.resolution_x*r.resolution_percentage*0.01) - y= int(r.resolution_y*r.resolution_percentage*0.01) - - # Wait for the file to be created - while not os.path.exists(self._temp_file_out): - if self.test_break(): - try: self._process.terminate() - except: pass - break - - if self._process.poll() != None: - self.update_stats("", "POVRAY: Failed") - break - - time.sleep(self.DELAY) - - if os.path.exists(self._temp_file_out): - - self.update_stats("", "POVRAY: Rendering") - - prev_size = -1 - - def update_image(): - result = self.begin_result(0, 0, x, y) - lay = result.layers[0] - # possible the image wont load early on. - try: lay.load_from_file(self._temp_file_out) - except: pass - self.end_result(result) - - # Update while povray renders - while True: - - # test if povray exists - if self._process.poll() != None: - update_image(); - break - - # user exit - if self.test_break(): - try: self._process.terminate() - except: pass - - break - - # Would be nice to redirect the output - # stdout_value, stderr_value = self._process.communicate() # locks - - - # check if the file updated - new_size = os.path.getsize(self._temp_file_out) - - if new_size != prev_size: - update_image() - prev_size = new_size - - time.sleep(self.DELAY) - - self._cleanup() + bl_idname = 'POVRAY_RENDER' + bl_label = "Povray" + DELAY = 0.02 + + def _export(self, scene): + import tempfile + + self._temp_file_in = tempfile.mktemp(suffix='.pov') + self._temp_file_out = tempfile.mktemp(suffix='.tga') + self._temp_file_ini = tempfile.mktemp(suffix='.ini') + ''' + self._temp_file_in = '/test.pov' + self._temp_file_out = '/test.tga' + self._temp_file_ini = '/test.ini' + ''' + + def info_callback(txt): + self.update_stats("", "POVRAY: " + txt) + + write_pov(self._temp_file_in, scene, info_callback) + + def _render(self): + + try: os.remove(self._temp_file_out) # so as not to load the old file + except: pass + + write_pov_ini(self._temp_file_ini, self._temp_file_in, self._temp_file_out) + + print ("***-STARTING-***") + + pov_binary = "povray" + + if sys.platform=='win32': + import winreg + regKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\POV-Ray\\v3.6\\Windows') + + if bitness == 64: + pov_binary = winreg.QueryValueEx(regKey, 'Home')[0] + '\\bin\\pvengine64' + else: + pov_binary = winreg.QueryValueEx(regKey, 'Home')[0] + '\\bin\\pvengine' + + if 1: + # TODO, when povray isnt found this gives a cryptic error, would be nice to be able to detect if it exists + self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE + else: + # This works too but means we have to wait until its done + os.system('%s %s' % (pov_binary, self._temp_file_ini)) + + print ("***-DONE-***") + + def _cleanup(self): + for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out): + try: os.remove(f) + except: pass + + self.update_stats("", "") + + def render(self, scene): + + self.update_stats("", "POVRAY: Exporting data from Blender") + self._export(scene) + self.update_stats("", "POVRAY: Parsing File") + self._render() + + r = scene.render_data + + # compute resolution + x= int(r.resolution_x*r.resolution_percentage*0.01) + y= int(r.resolution_y*r.resolution_percentage*0.01) + + # Wait for the file to be created + while not os.path.exists(self._temp_file_out): + if self.test_break(): + try: self._process.terminate() + except: pass + break + + if self._process.poll() != None: + self.update_stats("", "POVRAY: Failed") + break + + time.sleep(self.DELAY) + + if os.path.exists(self._temp_file_out): + + self.update_stats("", "POVRAY: Rendering") + + prev_size = -1 + + def update_image(): + result = self.begin_result(0, 0, x, y) + lay = result.layers[0] + # possible the image wont load early on. + try: lay.load_from_file(self._temp_file_out) + except: pass + self.end_result(result) + + # Update while povray renders + while True: + + # test if povray exists + if self._process.poll() != None: + update_image(); + break + + # user exit + if self.test_break(): + try: self._process.terminate() + except: pass + + break + + # Would be nice to redirect the output + # stdout_value, stderr_value = self._process.communicate() # locks + + + # check if the file updated + new_size = os.path.getsize(self._temp_file_out) + + if new_size != prev_size: + update_image() + prev_size = new_size + + time.sleep(self.DELAY) + + self._cleanup() bpy.types.register(PovrayRender) @@ -863,69 +863,69 @@ del properties_world # Example of wrapping every class 'as is' import properties_material for member in dir(properties_material): - subclass = getattr(properties_material, member) - try: subclass.COMPAT_ENGINES.add('POVRAY_RENDER') - except: pass + subclass = getattr(properties_material, member) + try: subclass.COMPAT_ENGINES.add('POVRAY_RENDER') + except: pass del properties_material class RenderButtonsPanel(bpy.types.Panel): - bl_space_type = 'PROPERTIES' - bl_region_type = 'WINDOW' - bl_context = "render" - # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here - - def poll(self, context): - rd = context.scene.render_data - return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "render" + # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here + + def poll(self, context): + rd = context.scene.render_data + return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) class RENDER_PT_povray_radiosity(RenderButtonsPanel): - bl_label = "Radiosity" - COMPAT_ENGINES = set(['POVRAY_RENDER']) - - def draw_header(self, context): - scene = context.scene - - self.layout.prop(scene, "pov_radio_enable", text="") - - def draw(self, context): - layout = self.layout - - scene = context.scene - rd = scene.render_data - - layout.active = scene.pov_radio_enable - - split = layout.split() - - col = split.column() - col.prop(scene, "pov_radio_count", text="Rays") - col.prop(scene, "pov_radio_recursion_limit", text="Recursions") - col = split.column() - col.prop(scene, "pov_radio_error_bound", text="Error") - - layout.prop(scene, "pov_radio_display_advanced") - - if scene.pov_radio_display_advanced: - split = layout.split() - - col = split.column() - col.prop(scene, "pov_radio_adc_bailout", slider=True) - col.prop(scene, "pov_radio_gray_threshold", slider=True) - col.prop(scene, "pov_radio_low_error_factor", slider=True) - - col = split.column() - col.prop(scene, "pov_radio_brightness") - col.prop(scene, "pov_radio_minimum_reuse", text="Min Reuse") - col.prop(scene, "pov_radio_nearest_count") - - split = layout.split() - - col = split.column() - col.label(text="Estimation Influence:") - col.prop(scene, "pov_radio_media") - col.prop(scene, "pov_radio_normal") - - col = split.column() - col.prop(scene, "pov_radio_always_sample") + bl_label = "Radiosity" + COMPAT_ENGINES = set(['POVRAY_RENDER']) + + def draw_header(self, context): + scene = context.scene + + self.layout.prop(scene, "pov_radio_enable", text="") + + def draw(self, context): + layout = self.layout + + scene = context.scene + rd = scene.render_data + + layout.active = scene.pov_radio_enable + + split = layout.split() + + col = split.column() + col.prop(scene, "pov_radio_count", text="Rays") + col.prop(scene, "pov_radio_recursion_limit", text="Recursions") + col = split.column() + col.prop(scene, "pov_radio_error_bound", text="Error") + + layout.prop(scene, "pov_radio_display_advanced") + + if scene.pov_radio_display_advanced: + split = layout.split() + + col = split.column() + col.prop(scene, "pov_radio_adc_bailout", slider=True) + col.prop(scene, "pov_radio_gray_threshold", slider=True) + col.prop(scene, "pov_radio_low_error_factor", slider=True) + + col = split.column() + col.prop(scene, "pov_radio_brightness") + col.prop(scene, "pov_radio_minimum_reuse", text="Min Reuse") + col.prop(scene, "pov_radio_nearest_count") + + split = layout.split() + + col = split.column() + col.label(text="Estimation Influence:") + col.prop(scene, "pov_radio_media") + col.prop(scene, "pov_radio_normal") + + col = split.column() + col.prop(scene, "pov_radio_always_sample") bpy.types.register(RENDER_PT_povray_radiosity) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 5f585ac4336..ad8ffac1147 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -5,12 +5,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -32,7 +32,7 @@ from the lib3ds project (http://lib3ds.sourceforge.net/) sourcecode. # ***** BEGIN GPL LICENSE BLOCK ***** # -# Script copyright (C) Bob Holcomb +# Script copyright (C) Bob Holcomb # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -65,50 +65,50 @@ import bpy # import Blender # from BPyMesh import getMeshFromObject # from BPyObject import getDerivedObjects -# try: +# try: # import struct -# except: +# except: # struct = None # also used by X3D exporter # return a tuple (free, object list), free is True if memory should be freed later with free_derived_objects() def create_derived_objects(ob): - if ob.parent and ob.parent.dupli_type != 'NONE': - return False, None + if ob.parent and ob.parent.dupli_type != 'NONE': + return False, None - if ob.dupli_type != 'NONE': - ob.create_dupli_list() - return True, [(dob.object, dob.matrix) for dob in ob.dupli_list] - else: - return False, [(ob, ob.matrix)] + if ob.dupli_type != 'NONE': + ob.create_dupli_list() + return True, [(dob.object, dob.matrix) for dob in ob.dupli_list] + else: + return False, [(ob, ob.matrix)] # also used by X3D exporter def free_derived_objects(ob): - ob.free_dupli_list() + ob.free_dupli_list() # So 3ds max can open files, limit names to 12 in length # this is verry annoying for filenames! name_unique = [] name_mapping = {} def sane_name(name): - name_fixed = name_mapping.get(name) - if name_fixed != None: - return name_fixed - - if len(name) > 12: - new_name = name[:12] - else: - new_name = name - - i = 0 - - while new_name in name_unique: - new_name = new_name[:-4] + '.%.3d' % i - i+=1 - - name_unique.append(new_name) - name_mapping[name] = new_name - return new_name + name_fixed = name_mapping.get(name) + if name_fixed != None: + return name_fixed + + if len(name) > 12: + new_name = name[:12] + else: + new_name = name + + i = 0 + + while new_name in name_unique: + new_name = new_name[:-4] + '.%.3d' % i + i+=1 + + name_unique.append(new_name) + name_mapping[name] = new_name + return new_name ###################################################### # Data Structures @@ -170,284 +170,284 @@ ROT_TRACK_TAG = int("0xB021",16); SCL_TRACK_TAG = int("0xB022",16); def uv_key(uv): - return round(uv[0], 6), round(uv[1], 6) + return round(uv[0], 6), round(uv[1], 6) # return round(uv.x, 6), round(uv.y, 6) -# size defines: +# size defines: SZ_SHORT = 2 SZ_INT = 4 SZ_FLOAT = 4 class _3ds_short(object): - '''Class representing a short (2-byte integer) for a 3ds file. - *** This looks like an unsigned short H is unsigned from the struct docs - Cam***''' - __slots__ = 'value' - def __init__(self, val=0): - self.value=val - - def get_size(self): - return SZ_SHORT - - def write(self,file): - file.write(struct.pack("= mat_ls_len: - mat_index = f.mat = 0 - mat = mat_ls[mat_index] - if mat: mat_name = mat.name - else: mat_name = None - # else there alredy set to none - - img = uf.image + if mat_index >= mat_ls_len: + mat_index = f.mat = 0 + mat = mat_ls[mat_index] + if mat: mat_name = mat.name + else: mat_name = None + # else there alredy set to none + + img = uf.image # img = f.image - if img: img_name = img.name - else: img_name = None - - materialDict.setdefault((mat_name, img_name), (mat, img) ) - - - else: - for mat in mat_ls: - if mat: # material may be None so check its not. - materialDict.setdefault((mat.name, None), (mat, None) ) - - # Why 0 Why! - for f in data.faces: - if f.material_index >= mat_ls_len: + if img: img_name = img.name + else: img_name = None + + materialDict.setdefault((mat_name, img_name), (mat, img) ) + + + else: + for mat in mat_ls: + if mat: # material may be None so check its not. + materialDict.setdefault((mat.name, None), (mat, None) ) + + # Why 0 Why! + for f in data.faces: + if f.material_index >= mat_ls_len: # if f.mat >= mat_ls_len: - f.material_index = 0 - # f.mat = 0 - - if free: - free_derived_objects(ob) - - - # Make material chunks for all materials used in the meshes: - for mat_and_image in materialDict.values(): - object_info.add_subchunk(make_material_chunk(mat_and_image[0], mat_and_image[1])) - - # Give all objects a unique ID and build a dictionary from object name to object id: - """ - name_to_id = {} - for ob, data in mesh_objects: - name_to_id[ob.name]= len(name_to_id) - #for ob in empty_objects: - # name_to_id[ob.name]= len(name_to_id) - """ - - # Create object chunks for all meshes: - i = 0 - for ob, blender_mesh in mesh_objects: - # create a new object chunk - object_chunk = _3ds_chunk(OBJECT) - - # set the object name - object_chunk.add_variable("name", _3ds_string(sane_name(ob.name))) - - # make a mesh chunk out of the mesh: - object_chunk.add_subchunk(make_mesh_chunk(blender_mesh, materialDict)) - object_info.add_subchunk(object_chunk) - - ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX - # make a kf object node for the object: - kfdata.add_subchunk(make_kf_obj_node(ob, name_to_id)) - ''' + f.material_index = 0 + # f.mat = 0 + + if free: + free_derived_objects(ob) + + + # Make material chunks for all materials used in the meshes: + for mat_and_image in materialDict.values(): + object_info.add_subchunk(make_material_chunk(mat_and_image[0], mat_and_image[1])) + + # Give all objects a unique ID and build a dictionary from object name to object id: + """ + name_to_id = {} + for ob, data in mesh_objects: + name_to_id[ob.name]= len(name_to_id) + #for ob in empty_objects: + # name_to_id[ob.name]= len(name_to_id) + """ + + # Create object chunks for all meshes: + i = 0 + for ob, blender_mesh in mesh_objects: + # create a new object chunk + object_chunk = _3ds_chunk(OBJECT) + + # set the object name + object_chunk.add_variable("name", _3ds_string(sane_name(ob.name))) + + # make a mesh chunk out of the mesh: + object_chunk.add_subchunk(make_mesh_chunk(blender_mesh, materialDict)) + object_info.add_subchunk(object_chunk) + + ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX + # make a kf object node for the object: + kfdata.add_subchunk(make_kf_obj_node(ob, name_to_id)) + ''' # if not blender_mesh.users: - bpy.data.remove_mesh(blender_mesh) + bpy.data.remove_mesh(blender_mesh) # blender_mesh.verts = None - i+=i - - # Create chunks for all empties: - ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX - for ob in empty_objects: - # Empties only require a kf object node: - kfdata.add_subchunk(make_kf_obj_node(ob, name_to_id)) - pass - ''' - - # Add main object info chunk to primary chunk: - primary.add_subchunk(object_info) - - ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX - # Add main keyframe data chunk to primary chunk: - primary.add_subchunk(kfdata) - ''' - - # At this point, the chunk hierarchy is completely built. - - # Check the size: - primary.get_size() - # Open the file for writing: - file = open( filename, 'wb' ) - - # Recursively write the chunks to file: - primary.write(file) - - # Close the file: - file.close() - - # Debugging only: report the exporting time: + i+=i + + # Create chunks for all empties: + ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX + for ob in empty_objects: + # Empties only require a kf object node: + kfdata.add_subchunk(make_kf_obj_node(ob, name_to_id)) + pass + ''' + + # Add main object info chunk to primary chunk: + primary.add_subchunk(object_info) + + ''' # COMMENTED OUT FOR 2.42 RELEASE!! CRASHES 3DS MAX + # Add main keyframe data chunk to primary chunk: + primary.add_subchunk(kfdata) + ''' + + # At this point, the chunk hierarchy is completely built. + + # Check the size: + primary.get_size() + # Open the file for writing: + file = open( filename, 'wb' ) + + # Recursively write the chunks to file: + primary.write(file) + + # Close the file: + file.close() + + # Debugging only: report the exporting time: # Blender.Window.WaitCursor(0) - print("3ds export time: %.2f" % (time.clock() - time1)) + print("3ds export time: %.2f" % (time.clock() - time1)) # print("3ds export time: %.2f" % (Blender.sys.time() - time1)) - - # Debugging only: dump the chunk hierarchy: - #primary.dump() + + # Debugging only: dump the chunk hierarchy: + #primary.dump() # if __name__=='__main__': @@ -1110,29 +1110,29 @@ def save_3ds(filename, context): # # save_3ds('/test_b.3ds') from bpy.props import * class Export3DS(bpy.types.Operator): - '''Export to 3DS file format (.3ds).''' - bl_idname = "export.autodesk_3ds" - bl_label = 'Export 3DS' - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - - # filename = StringProperty(name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), - path = StringProperty(name="File Path", description="File path used for exporting the 3DS file", maxlen= 1024, default= "") - - - def execute(self, context): - save_3ds(self.properties.path, context) - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) - - def poll(self, context): # Poll isnt working yet - return context.active_object != None + '''Export to 3DS file format (.3ds).''' + bl_idname = "export.autodesk_3ds" + bl_label = 'Export 3DS' + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + + # filename = StringProperty(name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), + path = StringProperty(name="File Path", description="File path used for exporting the 3DS file", maxlen= 1024, default= "") + + + def execute(self, context): + save_3ds(self.properties.path, context) + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + + def poll(self, context): # Poll isnt working yet + return context.active_object != None bpy.ops.add(Export3DS) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 6fa81fb41ce..e0a0367f18e 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -60,12 +60,12 @@ import shutil # for file copying # for python 2.3 support try: - set() + set() except: - try: - from sets import Set as set - except: - set = None # so it complains you dont have a ! + try: + from sets import Set as set + except: + set = None # so it complains you dont have a ! # # os is only needed for batch 'own dir' option # try: @@ -90,56 +90,56 @@ import Mathutils v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] invalid = ''.join([chr(i) for i in v]) def cleanName(name): - for ch in invalid: name = name.replace(ch, '_') - return name + for ch in invalid: name = name.replace(ch, '_') + return name # del v, i def copy_file(source, dest): - file = open(source, 'rb') - data = file.read() - file.close() - - file = open(dest, 'wb') - file.write(data) - file.close() + file = open(source, 'rb') + data = file.read() + file.close() + + file = open(dest, 'wb') + file.write(data) + file.close() # XXX not used anymore, images are copied one at a time def copy_images(dest_dir, textures): - if not dest_dir.endswith(os.sep): - dest_dir += os.sep - - image_paths = set() - for tex in textures: - image_paths.add(Blender.sys.expandpath(tex.filename)) - - # Now copy images - copyCount = 0 - for image_path in image_paths: - if Blender.sys.exists(image_path): - # Make a name for the target path. - dest_image_path = dest_dir + image_path.split('\\')[-1].split('/')[-1] - if not Blender.sys.exists(dest_image_path): # Image isnt alredy there - print('\tCopying "%s" > "%s"' % (image_path, dest_image_path)) - try: - copy_file(image_path, dest_image_path) - copyCount+=1 - except: - print('\t\tWarning, file failed to copy, skipping.') - - print('\tCopied %d images' % copyCount) + if not dest_dir.endswith(os.sep): + dest_dir += os.sep + + image_paths = set() + for tex in textures: + image_paths.add(Blender.sys.expandpath(tex.filename)) + + # Now copy images + copyCount = 0 + for image_path in image_paths: + if Blender.sys.exists(image_path): + # Make a name for the target path. + dest_image_path = dest_dir + image_path.split('\\')[-1].split('/')[-1] + if not Blender.sys.exists(dest_image_path): # Image isnt alredy there + print('\tCopying "%s" > "%s"' % (image_path, dest_image_path)) + try: + copy_file(image_path, dest_image_path) + copyCount+=1 + except: + print('\t\tWarning, file failed to copy, skipping.') + + print('\tCopied %d images' % copyCount) # I guess FBX uses degrees instead of radians (Arystan). # Call this function just before writing to FBX. def eulerRadToDeg(eul): - ret = Mathutils.Euler() + ret = Mathutils.Euler() - ret.x = 180 / math.pi * eul[0] - ret.y = 180 / math.pi * eul[1] - ret.z = 180 / math.pi * eul[2] + ret.x = 180 / math.pi * eul[0] + ret.y = 180 / math.pi * eul[1] + ret.z = 180 / math.pi * eul[2] - return ret + return ret mtx4_identity = Mathutils.Matrix() @@ -161,7 +161,7 @@ mtx4_z90n = Mathutils.RotationMatrix(-math.pi/2, 4, 'z') # used # def strip_path(p): # return p.split('\\')[-1].split('/')[-1] -# Used to add the scene name into the filename without using odd chars +# Used to add the scene name into the filename without using odd chars sane_name_mapping_ob = {} sane_name_mapping_mat = {} sane_name_mapping_tex = {} @@ -173,56 +173,56 @@ sane_name_mapping_ob['Scene'] = 'Scene_' sane_name_mapping_ob['blend_root'] = 'blend_root_' def increment_string(t): - name = t - num = '' - while name and name[-1].isdigit(): - num = name[-1] + num - name = name[:-1] - if num: return '%s%d' % (name, int(num)+1) - else: return name + '_0' + name = t + num = '' + while name and name[-1].isdigit(): + num = name[-1] + num + name = name[:-1] + if num: return '%s%d' % (name, int(num)+1) + else: return name + '_0' # todo - Disallow the name 'Scene' and 'blend_root' - it will bugger things up. def sane_name(data, dct): - #if not data: return None - - if type(data)==tuple: # materials are paired up with images - data, other = data - use_other = True - else: - other = None - use_other = False - - if data: name = data.name - else: name = None - orig_name = name - - if other: - orig_name_other = other.name - name = '%s #%s' % (name, orig_name_other) - else: - orig_name_other = None - - # dont cache, only ever call once for each data type now, - # so as to avoid namespace collision between types - like with objects <-> bones - #try: return dct[name] - #except: pass - - if not name: - name = 'unnamed' # blank string, ASKING FOR TROUBLE! - else: - #name = BPySys.cleanName(name) - name = cleanName(name) # use our own - - while name in iter(dct.values()): name = increment_string(name) - - if use_other: # even if other is None - orig_name_other will be a string or None - dct[orig_name, orig_name_other] = name - else: - dct[orig_name] = name - - return name + #if not data: return None + + if type(data)==tuple: # materials are paired up with images + data, other = data + use_other = True + else: + other = None + use_other = False + + if data: name = data.name + else: name = None + orig_name = name + + if other: + orig_name_other = other.name + name = '%s #%s' % (name, orig_name_other) + else: + orig_name_other = None + + # dont cache, only ever call once for each data type now, + # so as to avoid namespace collision between types - like with objects <-> bones + #try: return dct[name] + #except: pass + + if not name: + name = 'unnamed' # blank string, ASKING FOR TROUBLE! + else: + #name = BPySys.cleanName(name) + name = cleanName(name) # use our own + + while name in iter(dct.values()): name = increment_string(name) + + if use_other: # even if other is None - orig_name_other will be a string or None + dct[orig_name, orig_name_other] = name + else: + dct[orig_name] = name + + return name def sane_obname(data): return sane_name(data, sane_name_mapping_ob) def sane_matname(data): return sane_name(data, sane_name_mapping_mat) @@ -251,65 +251,65 @@ def sane_groupname(data): return sane_name(data, sane_name_mapping_group) def mat4x4str(mat): - return '%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f' % tuple([ f for v in mat for f in v ]) + return '%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f,%.15f' % tuple([ f for v in mat for f in v ]) # XXX not used # duplicated in OBJ exporter def getVertsFromGroup(me, group_index): - ret = [] + ret = [] - for i, v in enumerate(me.verts): - for g in v.groups: - if g.group == group_index: - ret.append((i, g.weight)) + for i, v in enumerate(me.verts): + for g in v.groups: + if g.group == group_index: + ret.append((i, g.weight)) - return ret + return ret # ob must be OB_MESH def BPyMesh_meshWeight2List(ob): - ''' Takes a mesh and return its group names and a list of lists, one list per vertex. - aligning the each vert list with the group names, each list contains float value for the weight. - These 2 lists can be modified and then used with list2MeshWeight to apply the changes. - ''' + ''' Takes a mesh and return its group names and a list of lists, one list per vertex. + aligning the each vert list with the group names, each list contains float value for the weight. + These 2 lists can be modified and then used with list2MeshWeight to apply the changes. + ''' - me = ob.data + me = ob.data - # Clear the vert group. - groupNames= [g.name for g in ob.vertex_groups] - len_groupNames= len(groupNames) - - if not len_groupNames: - # no verts? return a vert aligned empty list - return [[] for i in range(len(me.verts))], [] - else: - vWeightList= [[0.0]*len_groupNames for i in range(len(me.verts))] + # Clear the vert group. + groupNames= [g.name for g in ob.vertex_groups] + len_groupNames= len(groupNames) - for i, v in enumerate(me.verts): - for g in v.groups: - vWeightList[i][g.group] = g.weight + if not len_groupNames: + # no verts? return a vert aligned empty list + return [[] for i in range(len(me.verts))], [] + else: + vWeightList= [[0.0]*len_groupNames for i in range(len(me.verts))] - return groupNames, vWeightList + for i, v in enumerate(me.verts): + for g in v.groups: + vWeightList[i][g.group] = g.weight + + return groupNames, vWeightList def meshNormalizedWeights(me): - try: # account for old bad BPyMesh - groupNames, vWeightList = BPyMesh_meshWeight2List(me) + try: # account for old bad BPyMesh + groupNames, vWeightList = BPyMesh_meshWeight2List(me) # groupNames, vWeightList = BPyMesh.meshWeight2List(me) - except: - return [],[] - - if not groupNames: - return [],[] - - for i, vWeights in enumerate(vWeightList): - tot = 0.0 - for w in vWeights: - tot+=w - - if tot: - for j, w in enumerate(vWeights): - vWeights[j] = w/tot - - return groupNames, vWeightList + except: + return [],[] + + if not groupNames: + return [],[] + + for i, vWeights in enumerate(vWeightList): + tot = 0.0 + for w in vWeights: + tot+=w + + if tot: + for j, w in enumerate(vWeights): + vWeights[j] = w/tot + + return groupNames, vWeightList header_comment = \ '''; FBX 6.1.0 project file @@ -321,1379 +321,1379 @@ header_comment = \ # This func can be called with just the filename def write(filename, batch_objects = None, \ - context = None, - EXP_OBS_SELECTED = True, - EXP_MESH = True, - EXP_MESH_APPLY_MOD = True, + context = None, + EXP_OBS_SELECTED = True, + EXP_MESH = True, + EXP_MESH_APPLY_MOD = True, # EXP_MESH_HQ_NORMALS = False, - EXP_ARMATURE = True, - EXP_LAMP = True, - EXP_CAMERA = True, - EXP_EMPTY = True, - EXP_IMAGE_COPY = False, - GLOBAL_MATRIX = Mathutils.Matrix(), - ANIM_ENABLE = True, - ANIM_OPTIMIZE = True, - ANIM_OPTIMIZE_PRECISSION = 6, - ANIM_ACTION_ALL = False, - BATCH_ENABLE = False, - BATCH_GROUP = True, - BATCH_FILE_PREFIX = '', - BATCH_OWN_DIR = False - ): - - # ----------------- Batch support! - if BATCH_ENABLE: - if os == None: BATCH_OWN_DIR = False - - fbxpath = filename - - # get the path component of filename - tmp_exists = bpy.utils.exists(fbxpath) + EXP_ARMATURE = True, + EXP_LAMP = True, + EXP_CAMERA = True, + EXP_EMPTY = True, + EXP_IMAGE_COPY = False, + GLOBAL_MATRIX = Mathutils.Matrix(), + ANIM_ENABLE = True, + ANIM_OPTIMIZE = True, + ANIM_OPTIMIZE_PRECISSION = 6, + ANIM_ACTION_ALL = False, + BATCH_ENABLE = False, + BATCH_GROUP = True, + BATCH_FILE_PREFIX = '', + BATCH_OWN_DIR = False + ): + + # ----------------- Batch support! + if BATCH_ENABLE: + if os == None: BATCH_OWN_DIR = False + + fbxpath = filename + + # get the path component of filename + tmp_exists = bpy.utils.exists(fbxpath) # tmp_exists = Blender.sys.exists(fbxpath) - - if tmp_exists != 2: # a file, we want a path - fbxpath = os.path.dirname(fbxpath) + + if tmp_exists != 2: # a file, we want a path + fbxpath = os.path.dirname(fbxpath) # while fbxpath and fbxpath[-1] not in ('/', '\\'): # fbxpath = fbxpath[:-1] - if not fbxpath: + if not fbxpath: # if not filename: - # XXX - print('Error%t|Directory does not exist!') + # XXX + print('Error%t|Directory does not exist!') # Draw.PupMenu('Error%t|Directory does not exist!') - return + return - tmp_exists = bpy.utils.exists(fbxpath) + tmp_exists = bpy.utils.exists(fbxpath) # tmp_exists = Blender.sys.exists(fbxpath) - - if tmp_exists != 2: - # XXX - print('Error%t|Directory does not exist!') + + if tmp_exists != 2: + # XXX + print('Error%t|Directory does not exist!') # Draw.PupMenu('Error%t|Directory does not exist!') - return - - if not fbxpath.endswith(os.sep): - fbxpath += os.sep - del tmp_exists - - - if BATCH_GROUP: - data_seq = bpy.data.groups - else: - data_seq = bpy.data.scenes - - # call this function within a loop with BATCH_ENABLE == False - orig_sce = context.scene + return + + if not fbxpath.endswith(os.sep): + fbxpath += os.sep + del tmp_exists + + + if BATCH_GROUP: + data_seq = bpy.data.groups + else: + data_seq = bpy.data.scenes + + # call this function within a loop with BATCH_ENABLE == False + orig_sce = context.scene # orig_sce = bpy.data.scenes.active - - - new_fbxpath = fbxpath # own dir option modifies, we need to keep an original - for data in data_seq: # scene or group - newname = BATCH_FILE_PREFIX + cleanName(data.name) + + + new_fbxpath = fbxpath # own dir option modifies, we need to keep an original + for data in data_seq: # scene or group + newname = BATCH_FILE_PREFIX + cleanName(data.name) # newname = BATCH_FILE_PREFIX + BPySys.cleanName(data.name) - - - if BATCH_OWN_DIR: - new_fbxpath = fbxpath + newname + os.sep - # path may alredy exist - # TODO - might exist but be a file. unlikely but should probably account for it. - - if bpy.utils.exists(new_fbxpath) == 0: + + + if BATCH_OWN_DIR: + new_fbxpath = fbxpath + newname + os.sep + # path may alredy exist + # TODO - might exist but be a file. unlikely but should probably account for it. + + if bpy.utils.exists(new_fbxpath) == 0: # if Blender.sys.exists(new_fbxpath) == 0: - os.mkdir(new_fbxpath) - - - filename = new_fbxpath + newname + '.fbx' - - print('\nBatch exporting %s as...\n\t"%s"' % (data, filename)) - - # XXX don't know what to do with this, probably do the same? (Arystan) - if BATCH_GROUP: #group - # group, so objects update properly, add a dummy scene. - sce = bpy.data.scenes.new() - sce.Layers = (1<<20) -1 - bpy.data.scenes.active = sce - for ob_base in data.objects: - sce.objects.link(ob_base) - - sce.update(1) - - # TODO - BUMMER! Armatures not in the group wont animate the mesh - - else:# scene - - - data_seq.active = data - - - # Call self with modified args - # Dont pass batch options since we alredy usedt them - write(filename, data.objects, - context, - False, - EXP_MESH, - EXP_MESH_APPLY_MOD, + os.mkdir(new_fbxpath) + + + filename = new_fbxpath + newname + '.fbx' + + print('\nBatch exporting %s as...\n\t"%s"' % (data, filename)) + + # XXX don't know what to do with this, probably do the same? (Arystan) + if BATCH_GROUP: #group + # group, so objects update properly, add a dummy scene. + sce = bpy.data.scenes.new() + sce.Layers = (1<<20) -1 + bpy.data.scenes.active = sce + for ob_base in data.objects: + sce.objects.link(ob_base) + + sce.update(1) + + # TODO - BUMMER! Armatures not in the group wont animate the mesh + + else:# scene + + + data_seq.active = data + + + # Call self with modified args + # Dont pass batch options since we alredy usedt them + write(filename, data.objects, + context, + False, + EXP_MESH, + EXP_MESH_APPLY_MOD, # EXP_MESH_HQ_NORMALS, - EXP_ARMATURE, - EXP_LAMP, - EXP_CAMERA, - EXP_EMPTY, - EXP_IMAGE_COPY, - GLOBAL_MATRIX, - ANIM_ENABLE, - ANIM_OPTIMIZE, - ANIM_OPTIMIZE_PRECISSION, - ANIM_ACTION_ALL - ) - - if BATCH_GROUP: - # remove temp group scene - bpy.data.remove_scene(sce) + EXP_ARMATURE, + EXP_LAMP, + EXP_CAMERA, + EXP_EMPTY, + EXP_IMAGE_COPY, + GLOBAL_MATRIX, + ANIM_ENABLE, + ANIM_OPTIMIZE, + ANIM_OPTIMIZE_PRECISSION, + ANIM_ACTION_ALL + ) + + if BATCH_GROUP: + # remove temp group scene + bpy.data.remove_scene(sce) # bpy.data.scenes.unlink(sce) - - bpy.data.scenes.active = orig_sce - - return # so the script wont run after we have batch exported. - - # end batch support - - # Use this for working out paths relative to the export location - basepath = os.path.dirname(filename) or '.' - basepath += os.sep + + bpy.data.scenes.active = orig_sce + + return # so the script wont run after we have batch exported. + + # end batch support + + # Use this for working out paths relative to the export location + basepath = os.path.dirname(filename) or '.' + basepath += os.sep # basepath = Blender.sys.dirname(filename) - - # ---------------------------------------------- - # storage classes - class my_bone_class: - __slots__ =(\ - 'blenName',\ - 'blenBone',\ - 'blenMeshes',\ - 'restMatrix',\ - 'parent',\ - 'blenName',\ - 'fbxName',\ - 'fbxArm',\ - '__pose_bone',\ - '__anim_poselist') - - def __init__(self, blenBone, fbxArm): - - # This is so 2 armatures dont have naming conflicts since FBX bones use object namespace - self.fbxName = sane_obname(blenBone) - - self.blenName = blenBone.name - self.blenBone = blenBone - self.blenMeshes = {} # fbxMeshObName : mesh - self.fbxArm = fbxArm - self.restMatrix = blenBone.matrix_local + + # ---------------------------------------------- + # storage classes + class my_bone_class: + __slots__ =(\ + 'blenName',\ + 'blenBone',\ + 'blenMeshes',\ + 'restMatrix',\ + 'parent',\ + 'blenName',\ + 'fbxName',\ + 'fbxArm',\ + '__pose_bone',\ + '__anim_poselist') + + def __init__(self, blenBone, fbxArm): + + # This is so 2 armatures dont have naming conflicts since FBX bones use object namespace + self.fbxName = sane_obname(blenBone) + + self.blenName = blenBone.name + self.blenBone = blenBone + self.blenMeshes = {} # fbxMeshObName : mesh + self.fbxArm = fbxArm + self.restMatrix = blenBone.matrix_local # self.restMatrix = blenBone.matrix['ARMATURESPACE'] - - # not used yet - # self.restMatrixInv = self.restMatrix.copy().invert() - # self.restMatrixLocal = None # set later, need parent matrix - - self.parent = None - - # not public - pose = fbxArm.blenObject.pose + + # not used yet + # self.restMatrixInv = self.restMatrix.copy().invert() + # self.restMatrixLocal = None # set later, need parent matrix + + self.parent = None + + # not public + pose = fbxArm.blenObject.pose # pose = fbxArm.blenObject.getPose() - self.__pose_bone = pose.bones[self.blenName] - - # store a list if matricies here, (poseMatrix, head, tail) - # {frame:posematrix, frame:posematrix, ...} - self.__anim_poselist = {} - - ''' - def calcRestMatrixLocal(self): - if self.parent: - self.restMatrixLocal = self.restMatrix * self.parent.restMatrix.copy().invert() - else: - self.restMatrixLocal = self.restMatrix.copy() - ''' - def setPoseFrame(self, f): - # cache pose info here, frame must be set beforehand - - # Didnt end up needing head or tail, if we do - here it is. - ''' - self.__anim_poselist[f] = (\ - self.__pose_bone.poseMatrix.copy(),\ - self.__pose_bone.head.copy(),\ - self.__pose_bone.tail.copy() ) - ''' - - self.__anim_poselist[f] = self.__pose_bone.pose_matrix.copy() + self.__pose_bone = pose.bones[self.blenName] + + # store a list if matricies here, (poseMatrix, head, tail) + # {frame:posematrix, frame:posematrix, ...} + self.__anim_poselist = {} + + ''' + def calcRestMatrixLocal(self): + if self.parent: + self.restMatrixLocal = self.restMatrix * self.parent.restMatrix.copy().invert() + else: + self.restMatrixLocal = self.restMatrix.copy() + ''' + def setPoseFrame(self, f): + # cache pose info here, frame must be set beforehand + + # Didnt end up needing head or tail, if we do - here it is. + ''' + self.__anim_poselist[f] = (\ + self.__pose_bone.poseMatrix.copy(),\ + self.__pose_bone.head.copy(),\ + self.__pose_bone.tail.copy() ) + ''' + + self.__anim_poselist[f] = self.__pose_bone.pose_matrix.copy() # self.__anim_poselist[f] = self.__pose_bone.poseMatrix.copy() - - # get pose from frame. - def getPoseMatrix(self, f):# ---------------------------------------------- - return self.__anim_poselist[f] - ''' - def getPoseHead(self, f): - #return self.__pose_bone.head.copy() - return self.__anim_poselist[f][1].copy() - def getPoseTail(self, f): - #return self.__pose_bone.tail.copy() - return self.__anim_poselist[f][2].copy() - ''' - # end - - def getAnimParRelMatrix(self, frame): - #arm_mat = self.fbxArm.matrixWorld - #arm_mat = self.fbxArm.parRelMatrix() - if not self.parent: - #return mtx4_z90 * (self.getPoseMatrix(frame) * arm_mat) # dont apply arm matrix anymore - return mtx4_z90 * self.getPoseMatrix(frame) - else: - #return (mtx4_z90 * ((self.getPoseMatrix(frame) * arm_mat))) * (mtx4_z90 * (self.parent.getPoseMatrix(frame) * arm_mat)).invert() - return (mtx4_z90 * (self.getPoseMatrix(frame))) * (mtx4_z90 * self.parent.getPoseMatrix(frame)).invert() - - # we need thes because cameras and lights modified rotations - def getAnimParRelMatrixRot(self, frame): - return self.getAnimParRelMatrix(frame) - - def flushAnimData(self): - self.__anim_poselist.clear() - - - class my_object_generic: - # Other settings can be applied for each type - mesh, armature etc. - def __init__(self, ob, matrixWorld = None): - self.fbxName = sane_obname(ob) - self.blenObject = ob - self.fbxGroupNames = [] - self.fbxParent = None # set later on IF the parent is in the selection. - if matrixWorld: self.matrixWorld = matrixWorld * GLOBAL_MATRIX - else: self.matrixWorld = ob.matrix * GLOBAL_MATRIX + + # get pose from frame. + def getPoseMatrix(self, f):# ---------------------------------------------- + return self.__anim_poselist[f] + ''' + def getPoseHead(self, f): + #return self.__pose_bone.head.copy() + return self.__anim_poselist[f][1].copy() + def getPoseTail(self, f): + #return self.__pose_bone.tail.copy() + return self.__anim_poselist[f][2].copy() + ''' + # end + + def getAnimParRelMatrix(self, frame): + #arm_mat = self.fbxArm.matrixWorld + #arm_mat = self.fbxArm.parRelMatrix() + if not self.parent: + #return mtx4_z90 * (self.getPoseMatrix(frame) * arm_mat) # dont apply arm matrix anymore + return mtx4_z90 * self.getPoseMatrix(frame) + else: + #return (mtx4_z90 * ((self.getPoseMatrix(frame) * arm_mat))) * (mtx4_z90 * (self.parent.getPoseMatrix(frame) * arm_mat)).invert() + return (mtx4_z90 * (self.getPoseMatrix(frame))) * (mtx4_z90 * self.parent.getPoseMatrix(frame)).invert() + + # we need thes because cameras and lights modified rotations + def getAnimParRelMatrixRot(self, frame): + return self.getAnimParRelMatrix(frame) + + def flushAnimData(self): + self.__anim_poselist.clear() + + + class my_object_generic: + # Other settings can be applied for each type - mesh, armature etc. + def __init__(self, ob, matrixWorld = None): + self.fbxName = sane_obname(ob) + self.blenObject = ob + self.fbxGroupNames = [] + self.fbxParent = None # set later on IF the parent is in the selection. + if matrixWorld: self.matrixWorld = matrixWorld * GLOBAL_MATRIX + else: self.matrixWorld = ob.matrix * GLOBAL_MATRIX # else: self.matrixWorld = ob.matrixWorld * GLOBAL_MATRIX - self.__anim_poselist = {} # we should only access this - - def parRelMatrix(self): - if self.fbxParent: - return self.matrixWorld * self.fbxParent.matrixWorld.copy().invert() - else: - return self.matrixWorld - - def setPoseFrame(self, f): - self.__anim_poselist[f] = self.blenObject.matrix.copy() + self.__anim_poselist = {} # we should only access this + + def parRelMatrix(self): + if self.fbxParent: + return self.matrixWorld * self.fbxParent.matrixWorld.copy().invert() + else: + return self.matrixWorld + + def setPoseFrame(self, f): + self.__anim_poselist[f] = self.blenObject.matrix.copy() # self.__anim_poselist[f] = self.blenObject.matrixWorld.copy() - - def getAnimParRelMatrix(self, frame): - if self.fbxParent: - #return (self.__anim_poselist[frame] * self.fbxParent.__anim_poselist[frame].copy().invert() ) * GLOBAL_MATRIX - return (self.__anim_poselist[frame] * GLOBAL_MATRIX) * (self.fbxParent.__anim_poselist[frame] * GLOBAL_MATRIX).invert() - else: - return self.__anim_poselist[frame] * GLOBAL_MATRIX - - def getAnimParRelMatrixRot(self, frame): - type = self.blenObject.type - if self.fbxParent: - matrix_rot = (((self.__anim_poselist[frame] * GLOBAL_MATRIX) * (self.fbxParent.__anim_poselist[frame] * GLOBAL_MATRIX).invert())).rotationPart() - else: - matrix_rot = (self.__anim_poselist[frame] * GLOBAL_MATRIX).rotationPart() - - # Lamps need to be rotated - if type =='LAMP': - matrix_rot = mtx_x90 * matrix_rot - elif type =='CAMERA': + + def getAnimParRelMatrix(self, frame): + if self.fbxParent: + #return (self.__anim_poselist[frame] * self.fbxParent.__anim_poselist[frame].copy().invert() ) * GLOBAL_MATRIX + return (self.__anim_poselist[frame] * GLOBAL_MATRIX) * (self.fbxParent.__anim_poselist[frame] * GLOBAL_MATRIX).invert() + else: + return self.__anim_poselist[frame] * GLOBAL_MATRIX + + def getAnimParRelMatrixRot(self, frame): + type = self.blenObject.type + if self.fbxParent: + matrix_rot = (((self.__anim_poselist[frame] * GLOBAL_MATRIX) * (self.fbxParent.__anim_poselist[frame] * GLOBAL_MATRIX).invert())).rotationPart() + else: + matrix_rot = (self.__anim_poselist[frame] * GLOBAL_MATRIX).rotationPart() + + # Lamps need to be rotated + if type =='LAMP': + matrix_rot = mtx_x90 * matrix_rot + elif type =='CAMERA': # elif ob and type =='Camera': - y = Mathutils.Vector(0,1,0) * matrix_rot - matrix_rot = matrix_rot * Mathutils.RotationMatrix(math.pi/2, 3, 'r', y) - - return matrix_rot - - # ---------------------------------------------- - - - - - - print('\nFBX export starting...', filename) - start_time = time.clock() + y = Mathutils.Vector(0,1,0) * matrix_rot + matrix_rot = matrix_rot * Mathutils.RotationMatrix(math.pi/2, 3, 'r', y) + + return matrix_rot + + # ---------------------------------------------- + + + + + + print('\nFBX export starting...', filename) + start_time = time.clock() # start_time = Blender.sys.time() - try: - file = open(filename, 'w') - except: - return False + try: + file = open(filename, 'w') + except: + return False - sce = context.scene + sce = context.scene # sce = bpy.data.scenes.active - world = sce.world - - - # ---------------------------- Write the header first - file.write(header_comment) - if time: - curtime = time.localtime()[0:6] - else: - curtime = (0,0,0,0,0,0) - # - file.write(\ + world = sce.world + + + # ---------------------------- Write the header first + file.write(header_comment) + if time: + curtime = time.localtime()[0:6] + else: + curtime = (0,0,0,0,0,0) + # + file.write(\ '''FBXHeaderExtension: { - FBXHeaderVersion: 1003 - FBXVersion: 6100 - CreationTimeStamp: { - Version: 1000 - Year: %.4i - Month: %.2i - Day: %.2i - Hour: %.2i - Minute: %.2i - Second: %.2i - Millisecond: 0 - } - Creator: "FBX SDK/FBX Plugins build 20070228" - OtherFlags: { - FlagPLE: 0 - } + FBXHeaderVersion: 1003 + FBXVersion: 6100 + CreationTimeStamp: { + Version: 1000 + Year: %.4i + Month: %.2i + Day: %.2i + Hour: %.2i + Minute: %.2i + Second: %.2i + Millisecond: 0 + } + Creator: "FBX SDK/FBX Plugins build 20070228" + OtherFlags: { + FlagPLE: 0 + } }''' % (curtime)) - - file.write('\nCreationTime: "%.4i-%.2i-%.2i %.2i:%.2i:%.2i:000"' % curtime) - file.write('\nCreator: "Blender3D version 2.5"') + + file.write('\nCreationTime: "%.4i-%.2i-%.2i %.2i:%.2i:%.2i:000"' % curtime) + file.write('\nCreator: "Blender3D version 2.5"') # file.write('\nCreator: "Blender3D version %.2f"' % Blender.Get('version')) - - pose_items = [] # list of (fbxName, matrix) to write pose data for, easier to collect allong the way - - # --------------- funcs for exporting - def object_tx(ob, loc, matrix, matrix_mod = None): - ''' - Matrix mod is so armature objects can modify their bone matricies - ''' - if isinstance(ob, bpy.types.Bone): + + pose_items = [] # list of (fbxName, matrix) to write pose data for, easier to collect allong the way + + # --------------- funcs for exporting + def object_tx(ob, loc, matrix, matrix_mod = None): + ''' + Matrix mod is so armature objects can modify their bone matricies + ''' + if isinstance(ob, bpy.types.Bone): # if isinstance(ob, Blender.Types.BoneType): - - # we know we have a matrix - # matrix = mtx4_z90 * (ob.matrix['ARMATURESPACE'] * matrix_mod) - matrix = mtx4_z90 * ob.matrix_local # dont apply armature matrix anymore + + # we know we have a matrix + # matrix = mtx4_z90 * (ob.matrix['ARMATURESPACE'] * matrix_mod) + matrix = mtx4_z90 * ob.matrix_local # dont apply armature matrix anymore # matrix = mtx4_z90 * ob.matrix['ARMATURESPACE'] # dont apply armature matrix anymore - - parent = ob.parent - if parent: - #par_matrix = mtx4_z90 * (parent.matrix['ARMATURESPACE'] * matrix_mod) - par_matrix = mtx4_z90 * parent.matrix_local # dont apply armature matrix anymore + + parent = ob.parent + if parent: + #par_matrix = mtx4_z90 * (parent.matrix['ARMATURESPACE'] * matrix_mod) + par_matrix = mtx4_z90 * parent.matrix_local # dont apply armature matrix anymore # par_matrix = mtx4_z90 * parent.matrix['ARMATURESPACE'] # dont apply armature matrix anymore - matrix = matrix * par_matrix.copy().invert() - - matrix_rot = matrix.rotationPart() - - loc = tuple(matrix.translationPart()) - scale = tuple(matrix.scalePart()) - rot = tuple(matrix_rot.toEuler()) - - else: - # This is bad because we need the parent relative matrix from the fbx parent (if we have one), dont use anymore - #if ob and not matrix: matrix = ob.matrixWorld * GLOBAL_MATRIX - if ob and not matrix: raise Exception("error: this should never happen!") - - matrix_rot = matrix - #if matrix: - # matrix = matrix_scale * matrix - - if matrix: - loc = tuple(matrix.translationPart()) - scale = tuple(matrix.scalePart()) - - matrix_rot = matrix.rotationPart() - # Lamps need to be rotated - if ob and ob.type =='Lamp': - matrix_rot = mtx_x90 * matrix_rot - rot = tuple(matrix_rot.toEuler()) - elif ob and ob.type =='Camera': - y = Mathutils.Vector(0,1,0) * matrix_rot - matrix_rot = matrix_rot * Mathutils.RotationMatrix(math.pi/2, 3, 'r', y) - rot = tuple(matrix_rot.toEuler()) - else: - rot = tuple(matrix_rot.toEuler()) - else: - if not loc: - loc = 0,0,0 - scale = 1,1,1 - rot = 0,0,0 - - return loc, rot, scale, matrix, matrix_rot - - def write_object_tx(ob, loc, matrix, matrix_mod= None): - ''' - We have loc to set the location if non blender objects that have a location - - matrix_mod is only used for bones at the moment - ''' - loc, rot, scale, matrix, matrix_rot = object_tx(ob, loc, matrix, matrix_mod) - - file.write('\n\t\t\tProperty: "Lcl Translation", "Lcl Translation", "A+",%.15f,%.15f,%.15f' % loc) - file.write('\n\t\t\tProperty: "Lcl Rotation", "Lcl Rotation", "A+",%.15f,%.15f,%.15f' % tuple(eulerRadToDeg(rot))) + matrix = matrix * par_matrix.copy().invert() + + matrix_rot = matrix.rotationPart() + + loc = tuple(matrix.translationPart()) + scale = tuple(matrix.scalePart()) + rot = tuple(matrix_rot.toEuler()) + + else: + # This is bad because we need the parent relative matrix from the fbx parent (if we have one), dont use anymore + #if ob and not matrix: matrix = ob.matrixWorld * GLOBAL_MATRIX + if ob and not matrix: raise Exception("error: this should never happen!") + + matrix_rot = matrix + #if matrix: + # matrix = matrix_scale * matrix + + if matrix: + loc = tuple(matrix.translationPart()) + scale = tuple(matrix.scalePart()) + + matrix_rot = matrix.rotationPart() + # Lamps need to be rotated + if ob and ob.type =='Lamp': + matrix_rot = mtx_x90 * matrix_rot + rot = tuple(matrix_rot.toEuler()) + elif ob and ob.type =='Camera': + y = Mathutils.Vector(0,1,0) * matrix_rot + matrix_rot = matrix_rot * Mathutils.RotationMatrix(math.pi/2, 3, 'r', y) + rot = tuple(matrix_rot.toEuler()) + else: + rot = tuple(matrix_rot.toEuler()) + else: + if not loc: + loc = 0,0,0 + scale = 1,1,1 + rot = 0,0,0 + + return loc, rot, scale, matrix, matrix_rot + + def write_object_tx(ob, loc, matrix, matrix_mod= None): + ''' + We have loc to set the location if non blender objects that have a location + + matrix_mod is only used for bones at the moment + ''' + loc, rot, scale, matrix, matrix_rot = object_tx(ob, loc, matrix, matrix_mod) + + file.write('\n\t\t\tProperty: "Lcl Translation", "Lcl Translation", "A+",%.15f,%.15f,%.15f' % loc) + file.write('\n\t\t\tProperty: "Lcl Rotation", "Lcl Rotation", "A+",%.15f,%.15f,%.15f' % tuple(eulerRadToDeg(rot))) # file.write('\n\t\t\tProperty: "Lcl Rotation", "Lcl Rotation", "A+",%.15f,%.15f,%.15f' % rot) - file.write('\n\t\t\tProperty: "Lcl Scaling", "Lcl Scaling", "A+",%.15f,%.15f,%.15f' % scale) - return loc, rot, scale, matrix, matrix_rot - - def write_object_props(ob=None, loc=None, matrix=None, matrix_mod=None): - # if the type is 0 its an empty otherwise its a mesh - # only difference at the moment is one has a color - file.write(''' - Properties60: { - Property: "QuaternionInterpolate", "bool", "",0 - Property: "Visibility", "Visibility", "A+",1''') - - loc, rot, scale, matrix, matrix_rot = write_object_tx(ob, loc, matrix, matrix_mod) - - # Rotation order, note, for FBX files Iv loaded normal order is 1 - # setting to zero. - # eEULER_XYZ = 0 - # eEULER_XZY - # eEULER_YZX - # eEULER_YXZ - # eEULER_ZXY - # eEULER_ZYX - - file.write(''' - Property: "RotationOffset", "Vector3D", "",0,0,0 - Property: "RotationPivot", "Vector3D", "",0,0,0 - Property: "ScalingOffset", "Vector3D", "",0,0,0 - Property: "ScalingPivot", "Vector3D", "",0,0,0 - Property: "TranslationActive", "bool", "",0 - Property: "TranslationMin", "Vector3D", "",0,0,0 - Property: "TranslationMax", "Vector3D", "",0,0,0 - Property: "TranslationMinX", "bool", "",0 - Property: "TranslationMinY", "bool", "",0 - Property: "TranslationMinZ", "bool", "",0 - Property: "TranslationMaxX", "bool", "",0 - Property: "TranslationMaxY", "bool", "",0 - Property: "TranslationMaxZ", "bool", "",0 - Property: "RotationOrder", "enum", "",0 - Property: "RotationSpaceForLimitOnly", "bool", "",0 - Property: "AxisLen", "double", "",10 - Property: "PreRotation", "Vector3D", "",0,0,0 - Property: "PostRotation", "Vector3D", "",0,0,0 - Property: "RotationActive", "bool", "",0 - Property: "RotationMin", "Vector3D", "",0,0,0 - Property: "RotationMax", "Vector3D", "",0,0,0 - Property: "RotationMinX", "bool", "",0 - Property: "RotationMinY", "bool", "",0 - Property: "RotationMinZ", "bool", "",0 - Property: "RotationMaxX", "bool", "",0 - Property: "RotationMaxY", "bool", "",0 - Property: "RotationMaxZ", "bool", "",0 - Property: "RotationStiffnessX", "double", "",0 - Property: "RotationStiffnessY", "double", "",0 - Property: "RotationStiffnessZ", "double", "",0 - Property: "MinDampRangeX", "double", "",0 - Property: "MinDampRangeY", "double", "",0 - Property: "MinDampRangeZ", "double", "",0 - Property: "MaxDampRangeX", "double", "",0 - Property: "MaxDampRangeY", "double", "",0 - Property: "MaxDampRangeZ", "double", "",0 - Property: "MinDampStrengthX", "double", "",0 - Property: "MinDampStrengthY", "double", "",0 - Property: "MinDampStrengthZ", "double", "",0 - Property: "MaxDampStrengthX", "double", "",0 - Property: "MaxDampStrengthY", "double", "",0 - Property: "MaxDampStrengthZ", "double", "",0 - Property: "PreferedAngleX", "double", "",0 - Property: "PreferedAngleY", "double", "",0 - Property: "PreferedAngleZ", "double", "",0 - Property: "InheritType", "enum", "",0 - Property: "ScalingActive", "bool", "",0 - Property: "ScalingMin", "Vector3D", "",1,1,1 - Property: "ScalingMax", "Vector3D", "",1,1,1 - Property: "ScalingMinX", "bool", "",0 - Property: "ScalingMinY", "bool", "",0 - Property: "ScalingMinZ", "bool", "",0 - Property: "ScalingMaxX", "bool", "",0 - Property: "ScalingMaxY", "bool", "",0 - Property: "ScalingMaxZ", "bool", "",0 - Property: "GeometricTranslation", "Vector3D", "",0,0,0 - Property: "GeometricRotation", "Vector3D", "",0,0,0 - Property: "GeometricScaling", "Vector3D", "",1,1,1 - Property: "LookAtProperty", "object", "" - Property: "UpVectorProperty", "object", "" - Property: "Show", "bool", "",1 - Property: "NegativePercentShapeSupport", "bool", "",1 - Property: "DefaultAttributeIndex", "int", "",0''') - if ob and not isinstance(ob, bpy.types.Bone): + file.write('\n\t\t\tProperty: "Lcl Scaling", "Lcl Scaling", "A+",%.15f,%.15f,%.15f' % scale) + return loc, rot, scale, matrix, matrix_rot + + def write_object_props(ob=None, loc=None, matrix=None, matrix_mod=None): + # if the type is 0 its an empty otherwise its a mesh + # only difference at the moment is one has a color + file.write(''' + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1''') + + loc, rot, scale, matrix, matrix_rot = write_object_tx(ob, loc, matrix, matrix_mod) + + # Rotation order, note, for FBX files Iv loaded normal order is 1 + # setting to zero. + # eEULER_XYZ = 0 + # eEULER_XZY + # eEULER_YZX + # eEULER_YXZ + # eEULER_ZXY + # eEULER_ZYX + + file.write(''' + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0''') + if ob and not isinstance(ob, bpy.types.Bone): # if ob and type(ob) != Blender.Types.BoneType: - # Only mesh objects have color - file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') - file.write('\n\t\t\tProperty: "Size", "double", "",100') - file.write('\n\t\t\tProperty: "Look", "enum", "",1') - - return loc, rot, scale, matrix, matrix_rot - - - # -------------------------------------------- Armatures - #def write_bone(bone, name, matrix_mod): - def write_bone(my_bone): - file.write('\n\tModel: "Model::%s", "Limb" {' % my_bone.fbxName) - file.write('\n\t\tVersion: 232') - - #poseMatrix = write_object_props(my_bone.blenBone, None, None, my_bone.fbxArm.parRelMatrix())[3] - poseMatrix = write_object_props(my_bone.blenBone)[3] # dont apply bone matricies anymore - pose_items.append( (my_bone.fbxName, poseMatrix) ) - - - # file.write('\n\t\t\tProperty: "Size", "double", "",%.6f' % ((my_bone.blenData.head['ARMATURESPACE'] - my_bone.blenData.tail['ARMATURESPACE']) * my_bone.fbxArm.parRelMatrix()).length) - file.write('\n\t\t\tProperty: "Size", "double", "",1') - - #((my_bone.blenData.head['ARMATURESPACE'] * my_bone.fbxArm.matrixWorld) - (my_bone.blenData.tail['ARMATURESPACE'] * my_bone.fbxArm.parRelMatrix())).length) - - """ - file.write('\n\t\t\tProperty: "LimbLength", "double", "",%.6f' %\ - ((my_bone.blenBone.head['ARMATURESPACE'] - my_bone.blenBone.tail['ARMATURESPACE']) * my_bone.fbxArm.parRelMatrix()).length) - """ - - file.write('\n\t\t\tProperty: "LimbLength", "double", "",%.6f' % - (my_bone.blenBone.head_local - my_bone.blenBone.tail_local).length) + # Only mesh objects have color + file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') + file.write('\n\t\t\tProperty: "Size", "double", "",100') + file.write('\n\t\t\tProperty: "Look", "enum", "",1') + + return loc, rot, scale, matrix, matrix_rot + + + # -------------------------------------------- Armatures + #def write_bone(bone, name, matrix_mod): + def write_bone(my_bone): + file.write('\n\tModel: "Model::%s", "Limb" {' % my_bone.fbxName) + file.write('\n\t\tVersion: 232') + + #poseMatrix = write_object_props(my_bone.blenBone, None, None, my_bone.fbxArm.parRelMatrix())[3] + poseMatrix = write_object_props(my_bone.blenBone)[3] # dont apply bone matricies anymore + pose_items.append( (my_bone.fbxName, poseMatrix) ) + + + # file.write('\n\t\t\tProperty: "Size", "double", "",%.6f' % ((my_bone.blenData.head['ARMATURESPACE'] - my_bone.blenData.tail['ARMATURESPACE']) * my_bone.fbxArm.parRelMatrix()).length) + file.write('\n\t\t\tProperty: "Size", "double", "",1') + + #((my_bone.blenData.head['ARMATURESPACE'] * my_bone.fbxArm.matrixWorld) - (my_bone.blenData.tail['ARMATURESPACE'] * my_bone.fbxArm.parRelMatrix())).length) + + """ + file.write('\n\t\t\tProperty: "LimbLength", "double", "",%.6f' %\ + ((my_bone.blenBone.head['ARMATURESPACE'] - my_bone.blenBone.tail['ARMATURESPACE']) * my_bone.fbxArm.parRelMatrix()).length) + """ + + file.write('\n\t\t\tProperty: "LimbLength", "double", "",%.6f' % + (my_bone.blenBone.head_local - my_bone.blenBone.tail_local).length) # (my_bone.blenBone.head['ARMATURESPACE'] - my_bone.blenBone.tail['ARMATURESPACE']).length) - - #file.write('\n\t\t\tProperty: "LimbLength", "double", "",1') - file.write('\n\t\t\tProperty: "Color", "ColorRGB", "",0.8,0.8,0.8') - file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') - file.write('\n\t\t}') - file.write('\n\t\tMultiLayer: 0') - file.write('\n\t\tMultiTake: 1') - file.write('\n\t\tShading: Y') - file.write('\n\t\tCulling: "CullingOff"') - file.write('\n\t\tTypeFlags: "Skeleton"') - file.write('\n\t}') - - def write_camera_switch(): - file.write(''' - Model: "Model::Camera Switcher", "CameraSwitcher" { - Version: 232''') - - write_object_props() - file.write(''' - Property: "Color", "Color", "A",0.8,0.8,0.8 - Property: "Camera Index", "Integer", "A+",100 - } - MultiLayer: 0 - MultiTake: 1 - Hidden: "True" - Shading: W - Culling: "CullingOff" - Version: 101 - Name: "Model::Camera Switcher" - CameraId: 0 - CameraName: 100 - CameraIndexName: - }''') - - def write_camera_dummy(name, loc, near, far, proj_type, up): - file.write('\n\tModel: "Model::%s", "Camera" {' % name ) - file.write('\n\t\tVersion: 232') - write_object_props(None, loc) - - file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') - file.write('\n\t\t\tProperty: "Roll", "Roll", "A+",0') - file.write('\n\t\t\tProperty: "FieldOfView", "FieldOfView", "A+",40') - file.write('\n\t\t\tProperty: "FieldOfViewX", "FieldOfView", "A+",1') - file.write('\n\t\t\tProperty: "FieldOfViewY", "FieldOfView", "A+",1') - file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",0') - file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",0') - file.write('\n\t\t\tProperty: "BackgroundColor", "Color", "A+",0.63,0.63,0.63') - file.write('\n\t\t\tProperty: "TurnTable", "Real", "A+",0') - file.write('\n\t\t\tProperty: "DisplayTurnTableIcon", "bool", "",1') - file.write('\n\t\t\tProperty: "Motion Blur Intensity", "Real", "A+",1') - file.write('\n\t\t\tProperty: "UseMotionBlur", "bool", "",0') - file.write('\n\t\t\tProperty: "UseRealTimeMotionBlur", "bool", "",1') - file.write('\n\t\t\tProperty: "ResolutionMode", "enum", "",0') - file.write('\n\t\t\tProperty: "ApertureMode", "enum", "",2') - file.write('\n\t\t\tProperty: "GateFit", "enum", "",0') - file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",21.3544940948486') - file.write('\n\t\t\tProperty: "CameraFormat", "enum", "",0') - file.write('\n\t\t\tProperty: "AspectW", "double", "",320') - file.write('\n\t\t\tProperty: "AspectH", "double", "",200') - file.write('\n\t\t\tProperty: "PixelAspectRatio", "double", "",1') - file.write('\n\t\t\tProperty: "UseFrameColor", "bool", "",0') - file.write('\n\t\t\tProperty: "FrameColor", "ColorRGB", "",0.3,0.3,0.3') - file.write('\n\t\t\tProperty: "ShowName", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowGrid", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowOpticalCenter", "bool", "",0') - file.write('\n\t\t\tProperty: "ShowAzimut", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowTimeCode", "bool", "",0') - file.write('\n\t\t\tProperty: "NearPlane", "double", "",%.6f' % near) - file.write('\n\t\t\tProperty: "FarPlane", "double", "",%.6f' % far) - file.write('\n\t\t\tProperty: "FilmWidth", "double", "",0.816') - file.write('\n\t\t\tProperty: "FilmHeight", "double", "",0.612') - file.write('\n\t\t\tProperty: "FilmAspectRatio", "double", "",1.33333333333333') - file.write('\n\t\t\tProperty: "FilmSqueezeRatio", "double", "",1') - file.write('\n\t\t\tProperty: "FilmFormatIndex", "enum", "",4') - file.write('\n\t\t\tProperty: "ViewFrustum", "bool", "",1') - file.write('\n\t\t\tProperty: "ViewFrustumNearFarPlane", "bool", "",0') - file.write('\n\t\t\tProperty: "ViewFrustumBackPlaneMode", "enum", "",2') - file.write('\n\t\t\tProperty: "BackPlaneDistance", "double", "",100') - file.write('\n\t\t\tProperty: "BackPlaneDistanceMode", "enum", "",0') - file.write('\n\t\t\tProperty: "ViewCameraToLookAt", "bool", "",1') - file.write('\n\t\t\tProperty: "LockMode", "bool", "",0') - file.write('\n\t\t\tProperty: "LockInterestNavigation", "bool", "",0') - file.write('\n\t\t\tProperty: "FitImage", "bool", "",0') - file.write('\n\t\t\tProperty: "Crop", "bool", "",0') - file.write('\n\t\t\tProperty: "Center", "bool", "",1') - file.write('\n\t\t\tProperty: "KeepRatio", "bool", "",1') - file.write('\n\t\t\tProperty: "BackgroundMode", "enum", "",0') - file.write('\n\t\t\tProperty: "BackgroundAlphaTreshold", "double", "",0.5') - file.write('\n\t\t\tProperty: "ForegroundTransparent", "bool", "",1') - file.write('\n\t\t\tProperty: "DisplaySafeArea", "bool", "",0') - file.write('\n\t\t\tProperty: "SafeAreaDisplayStyle", "enum", "",1') - file.write('\n\t\t\tProperty: "SafeAreaAspectRatio", "double", "",1.33333333333333') - file.write('\n\t\t\tProperty: "Use2DMagnifierZoom", "bool", "",0') - file.write('\n\t\t\tProperty: "2D Magnifier Zoom", "Real", "A+",100') - file.write('\n\t\t\tProperty: "2D Magnifier X", "Real", "A+",50') - file.write('\n\t\t\tProperty: "2D Magnifier Y", "Real", "A+",50') - file.write('\n\t\t\tProperty: "CameraProjectionType", "enum", "",%i' % proj_type) - file.write('\n\t\t\tProperty: "UseRealTimeDOFAndAA", "bool", "",0') - file.write('\n\t\t\tProperty: "UseDepthOfField", "bool", "",0') - file.write('\n\t\t\tProperty: "FocusSource", "enum", "",0') - file.write('\n\t\t\tProperty: "FocusAngle", "double", "",3.5') - file.write('\n\t\t\tProperty: "FocusDistance", "double", "",200') - file.write('\n\t\t\tProperty: "UseAntialiasing", "bool", "",0') - file.write('\n\t\t\tProperty: "AntialiasingIntensity", "double", "",0.77777') - file.write('\n\t\t\tProperty: "UseAccumulationBuffer", "bool", "",0') - file.write('\n\t\t\tProperty: "FrameSamplingCount", "int", "",7') - file.write('\n\t\t}') - file.write('\n\t\tMultiLayer: 0') - file.write('\n\t\tMultiTake: 0') - file.write('\n\t\tHidden: "True"') - file.write('\n\t\tShading: Y') - file.write('\n\t\tCulling: "CullingOff"') - file.write('\n\t\tTypeFlags: "Camera"') - file.write('\n\t\tGeometryVersion: 124') - file.write('\n\t\tPosition: %.6f,%.6f,%.6f' % loc) - file.write('\n\t\tUp: %i,%i,%i' % up) - file.write('\n\t\tLookAt: 0,0,0') - file.write('\n\t\tShowInfoOnMoving: 1') - file.write('\n\t\tShowAudio: 0') - file.write('\n\t\tAudioColor: 0,1,0') - file.write('\n\t\tCameraOrthoZoom: 1') - file.write('\n\t}') - - def write_camera_default(): - # This sucks but to match FBX converter its easier to - # write the cameras though they are not needed. - write_camera_dummy('Producer Perspective', (0,71.3,287.5), 10, 4000, 0, (0,1,0)) - write_camera_dummy('Producer Top', (0,4000,0), 1, 30000, 1, (0,0,-1)) - write_camera_dummy('Producer Bottom', (0,-4000,0), 1, 30000, 1, (0,0,-1)) - write_camera_dummy('Producer Front', (0,0,4000), 1, 30000, 1, (0,1,0)) - write_camera_dummy('Producer Back', (0,0,-4000), 1, 30000, 1, (0,1,0)) - write_camera_dummy('Producer Right', (4000,0,0), 1, 30000, 1, (0,1,0)) - write_camera_dummy('Producer Left', (-4000,0,0), 1, 30000, 1, (0,1,0)) - - def write_camera(my_cam): - ''' - Write a blender camera - ''' - render = sce.render_data - width = render.resolution_x - height = render.resolution_y + + #file.write('\n\t\t\tProperty: "LimbLength", "double", "",1') + file.write('\n\t\t\tProperty: "Color", "ColorRGB", "",0.8,0.8,0.8') + file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') + file.write('\n\t\t}') + file.write('\n\t\tMultiLayer: 0') + file.write('\n\t\tMultiTake: 1') + file.write('\n\t\tShading: Y') + file.write('\n\t\tCulling: "CullingOff"') + file.write('\n\t\tTypeFlags: "Skeleton"') + file.write('\n\t}') + + def write_camera_switch(): + file.write(''' + Model: "Model::Camera Switcher", "CameraSwitcher" { + Version: 232''') + + write_object_props() + file.write(''' + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Camera Index", "Integer", "A+",100 + } + MultiLayer: 0 + MultiTake: 1 + Hidden: "True" + Shading: W + Culling: "CullingOff" + Version: 101 + Name: "Model::Camera Switcher" + CameraId: 0 + CameraName: 100 + CameraIndexName: + }''') + + def write_camera_dummy(name, loc, near, far, proj_type, up): + file.write('\n\tModel: "Model::%s", "Camera" {' % name ) + file.write('\n\t\tVersion: 232') + write_object_props(None, loc) + + file.write('\n\t\t\tProperty: "Color", "Color", "A",0.8,0.8,0.8') + file.write('\n\t\t\tProperty: "Roll", "Roll", "A+",0') + file.write('\n\t\t\tProperty: "FieldOfView", "FieldOfView", "A+",40') + file.write('\n\t\t\tProperty: "FieldOfViewX", "FieldOfView", "A+",1') + file.write('\n\t\t\tProperty: "FieldOfViewY", "FieldOfView", "A+",1') + file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",0') + file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",0') + file.write('\n\t\t\tProperty: "BackgroundColor", "Color", "A+",0.63,0.63,0.63') + file.write('\n\t\t\tProperty: "TurnTable", "Real", "A+",0') + file.write('\n\t\t\tProperty: "DisplayTurnTableIcon", "bool", "",1') + file.write('\n\t\t\tProperty: "Motion Blur Intensity", "Real", "A+",1') + file.write('\n\t\t\tProperty: "UseMotionBlur", "bool", "",0') + file.write('\n\t\t\tProperty: "UseRealTimeMotionBlur", "bool", "",1') + file.write('\n\t\t\tProperty: "ResolutionMode", "enum", "",0') + file.write('\n\t\t\tProperty: "ApertureMode", "enum", "",2') + file.write('\n\t\t\tProperty: "GateFit", "enum", "",0') + file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",21.3544940948486') + file.write('\n\t\t\tProperty: "CameraFormat", "enum", "",0') + file.write('\n\t\t\tProperty: "AspectW", "double", "",320') + file.write('\n\t\t\tProperty: "AspectH", "double", "",200') + file.write('\n\t\t\tProperty: "PixelAspectRatio", "double", "",1') + file.write('\n\t\t\tProperty: "UseFrameColor", "bool", "",0') + file.write('\n\t\t\tProperty: "FrameColor", "ColorRGB", "",0.3,0.3,0.3') + file.write('\n\t\t\tProperty: "ShowName", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowGrid", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowOpticalCenter", "bool", "",0') + file.write('\n\t\t\tProperty: "ShowAzimut", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowTimeCode", "bool", "",0') + file.write('\n\t\t\tProperty: "NearPlane", "double", "",%.6f' % near) + file.write('\n\t\t\tProperty: "FarPlane", "double", "",%.6f' % far) + file.write('\n\t\t\tProperty: "FilmWidth", "double", "",0.816') + file.write('\n\t\t\tProperty: "FilmHeight", "double", "",0.612') + file.write('\n\t\t\tProperty: "FilmAspectRatio", "double", "",1.33333333333333') + file.write('\n\t\t\tProperty: "FilmSqueezeRatio", "double", "",1') + file.write('\n\t\t\tProperty: "FilmFormatIndex", "enum", "",4') + file.write('\n\t\t\tProperty: "ViewFrustum", "bool", "",1') + file.write('\n\t\t\tProperty: "ViewFrustumNearFarPlane", "bool", "",0') + file.write('\n\t\t\tProperty: "ViewFrustumBackPlaneMode", "enum", "",2') + file.write('\n\t\t\tProperty: "BackPlaneDistance", "double", "",100') + file.write('\n\t\t\tProperty: "BackPlaneDistanceMode", "enum", "",0') + file.write('\n\t\t\tProperty: "ViewCameraToLookAt", "bool", "",1') + file.write('\n\t\t\tProperty: "LockMode", "bool", "",0') + file.write('\n\t\t\tProperty: "LockInterestNavigation", "bool", "",0') + file.write('\n\t\t\tProperty: "FitImage", "bool", "",0') + file.write('\n\t\t\tProperty: "Crop", "bool", "",0') + file.write('\n\t\t\tProperty: "Center", "bool", "",1') + file.write('\n\t\t\tProperty: "KeepRatio", "bool", "",1') + file.write('\n\t\t\tProperty: "BackgroundMode", "enum", "",0') + file.write('\n\t\t\tProperty: "BackgroundAlphaTreshold", "double", "",0.5') + file.write('\n\t\t\tProperty: "ForegroundTransparent", "bool", "",1') + file.write('\n\t\t\tProperty: "DisplaySafeArea", "bool", "",0') + file.write('\n\t\t\tProperty: "SafeAreaDisplayStyle", "enum", "",1') + file.write('\n\t\t\tProperty: "SafeAreaAspectRatio", "double", "",1.33333333333333') + file.write('\n\t\t\tProperty: "Use2DMagnifierZoom", "bool", "",0') + file.write('\n\t\t\tProperty: "2D Magnifier Zoom", "Real", "A+",100') + file.write('\n\t\t\tProperty: "2D Magnifier X", "Real", "A+",50') + file.write('\n\t\t\tProperty: "2D Magnifier Y", "Real", "A+",50') + file.write('\n\t\t\tProperty: "CameraProjectionType", "enum", "",%i' % proj_type) + file.write('\n\t\t\tProperty: "UseRealTimeDOFAndAA", "bool", "",0') + file.write('\n\t\t\tProperty: "UseDepthOfField", "bool", "",0') + file.write('\n\t\t\tProperty: "FocusSource", "enum", "",0') + file.write('\n\t\t\tProperty: "FocusAngle", "double", "",3.5') + file.write('\n\t\t\tProperty: "FocusDistance", "double", "",200') + file.write('\n\t\t\tProperty: "UseAntialiasing", "bool", "",0') + file.write('\n\t\t\tProperty: "AntialiasingIntensity", "double", "",0.77777') + file.write('\n\t\t\tProperty: "UseAccumulationBuffer", "bool", "",0') + file.write('\n\t\t\tProperty: "FrameSamplingCount", "int", "",7') + file.write('\n\t\t}') + file.write('\n\t\tMultiLayer: 0') + file.write('\n\t\tMultiTake: 0') + file.write('\n\t\tHidden: "True"') + file.write('\n\t\tShading: Y') + file.write('\n\t\tCulling: "CullingOff"') + file.write('\n\t\tTypeFlags: "Camera"') + file.write('\n\t\tGeometryVersion: 124') + file.write('\n\t\tPosition: %.6f,%.6f,%.6f' % loc) + file.write('\n\t\tUp: %i,%i,%i' % up) + file.write('\n\t\tLookAt: 0,0,0') + file.write('\n\t\tShowInfoOnMoving: 1') + file.write('\n\t\tShowAudio: 0') + file.write('\n\t\tAudioColor: 0,1,0') + file.write('\n\t\tCameraOrthoZoom: 1') + file.write('\n\t}') + + def write_camera_default(): + # This sucks but to match FBX converter its easier to + # write the cameras though they are not needed. + write_camera_dummy('Producer Perspective', (0,71.3,287.5), 10, 4000, 0, (0,1,0)) + write_camera_dummy('Producer Top', (0,4000,0), 1, 30000, 1, (0,0,-1)) + write_camera_dummy('Producer Bottom', (0,-4000,0), 1, 30000, 1, (0,0,-1)) + write_camera_dummy('Producer Front', (0,0,4000), 1, 30000, 1, (0,1,0)) + write_camera_dummy('Producer Back', (0,0,-4000), 1, 30000, 1, (0,1,0)) + write_camera_dummy('Producer Right', (4000,0,0), 1, 30000, 1, (0,1,0)) + write_camera_dummy('Producer Left', (-4000,0,0), 1, 30000, 1, (0,1,0)) + + def write_camera(my_cam): + ''' + Write a blender camera + ''' + render = sce.render_data + width = render.resolution_x + height = render.resolution_y # render = sce.render # width = render.sizeX # height = render.sizeY - aspect = float(width)/height - - data = my_cam.blenObject.data - - file.write('\n\tModel: "Model::%s", "Camera" {' % my_cam.fbxName ) - file.write('\n\t\tVersion: 232') - loc, rot, scale, matrix, matrix_rot = write_object_props(my_cam.blenObject, None, my_cam.parRelMatrix()) - - file.write('\n\t\t\tProperty: "Roll", "Roll", "A+",0') - file.write('\n\t\t\tProperty: "FieldOfView", "FieldOfView", "A+",%.6f' % data.angle) - file.write('\n\t\t\tProperty: "FieldOfViewX", "FieldOfView", "A+",1') - file.write('\n\t\t\tProperty: "FieldOfViewY", "FieldOfView", "A+",1') - file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",14.0323972702026') - file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",%.6f' % data.shift_x) # not sure if this is in the correct units? + aspect = float(width)/height + + data = my_cam.blenObject.data + + file.write('\n\tModel: "Model::%s", "Camera" {' % my_cam.fbxName ) + file.write('\n\t\tVersion: 232') + loc, rot, scale, matrix, matrix_rot = write_object_props(my_cam.blenObject, None, my_cam.parRelMatrix()) + + file.write('\n\t\t\tProperty: "Roll", "Roll", "A+",0') + file.write('\n\t\t\tProperty: "FieldOfView", "FieldOfView", "A+",%.6f' % data.angle) + file.write('\n\t\t\tProperty: "FieldOfViewX", "FieldOfView", "A+",1') + file.write('\n\t\t\tProperty: "FieldOfViewY", "FieldOfView", "A+",1') + file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",14.0323972702026') + file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",%.6f' % data.shift_x) # not sure if this is in the correct units? # file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",%.6f' % data.shiftX) # not sure if this is in the correct units? - file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shift_y) # ditto -# file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shiftY) # ditto - file.write('\n\t\t\tProperty: "BackgroundColor", "Color", "A+",0,0,0') - file.write('\n\t\t\tProperty: "TurnTable", "Real", "A+",0') - file.write('\n\t\t\tProperty: "DisplayTurnTableIcon", "bool", "",1') - file.write('\n\t\t\tProperty: "Motion Blur Intensity", "Real", "A+",1') - file.write('\n\t\t\tProperty: "UseMotionBlur", "bool", "",0') - file.write('\n\t\t\tProperty: "UseRealTimeMotionBlur", "bool", "",1') - file.write('\n\t\t\tProperty: "ResolutionMode", "enum", "",0') - file.write('\n\t\t\tProperty: "ApertureMode", "enum", "",2') - file.write('\n\t\t\tProperty: "GateFit", "enum", "",0') - file.write('\n\t\t\tProperty: "CameraFormat", "enum", "",0') - file.write('\n\t\t\tProperty: "AspectW", "double", "",%i' % width) - file.write('\n\t\t\tProperty: "AspectH", "double", "",%i' % height) - - '''Camera aspect ratio modes. - 0 If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. - 1 If the ratio mode is eFIXED_RATIO, the height value is set to 1.0 and the width value is relative to the height value. - 2 If the ratio mode is eFIXED_RESOLUTION, both width and height values are in pixels. - 3 If the ratio mode is eFIXED_WIDTH, the width value is in pixels and the height value is relative to the width value. - 4 If the ratio mode is eFIXED_HEIGHT, the height value is in pixels and the width value is relative to the height value. - - Definition at line 234 of file kfbxcamera.h. ''' - - file.write('\n\t\t\tProperty: "PixelAspectRatio", "double", "",2') - - file.write('\n\t\t\tProperty: "UseFrameColor", "bool", "",0') - file.write('\n\t\t\tProperty: "FrameColor", "ColorRGB", "",0.3,0.3,0.3') - file.write('\n\t\t\tProperty: "ShowName", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowGrid", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowOpticalCenter", "bool", "",0') - file.write('\n\t\t\tProperty: "ShowAzimut", "bool", "",1') - file.write('\n\t\t\tProperty: "ShowTimeCode", "bool", "",0') - file.write('\n\t\t\tProperty: "NearPlane", "double", "",%.6f' % data.clip_start) + file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shift_y) # ditto +# file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shiftY) # ditto + file.write('\n\t\t\tProperty: "BackgroundColor", "Color", "A+",0,0,0') + file.write('\n\t\t\tProperty: "TurnTable", "Real", "A+",0') + file.write('\n\t\t\tProperty: "DisplayTurnTableIcon", "bool", "",1') + file.write('\n\t\t\tProperty: "Motion Blur Intensity", "Real", "A+",1') + file.write('\n\t\t\tProperty: "UseMotionBlur", "bool", "",0') + file.write('\n\t\t\tProperty: "UseRealTimeMotionBlur", "bool", "",1') + file.write('\n\t\t\tProperty: "ResolutionMode", "enum", "",0') + file.write('\n\t\t\tProperty: "ApertureMode", "enum", "",2') + file.write('\n\t\t\tProperty: "GateFit", "enum", "",0') + file.write('\n\t\t\tProperty: "CameraFormat", "enum", "",0') + file.write('\n\t\t\tProperty: "AspectW", "double", "",%i' % width) + file.write('\n\t\t\tProperty: "AspectH", "double", "",%i' % height) + + '''Camera aspect ratio modes. + 0 If the ratio mode is eWINDOW_SIZE, both width and height values aren't relevant. + 1 If the ratio mode is eFIXED_RATIO, the height value is set to 1.0 and the width value is relative to the height value. + 2 If the ratio mode is eFIXED_RESOLUTION, both width and height values are in pixels. + 3 If the ratio mode is eFIXED_WIDTH, the width value is in pixels and the height value is relative to the width value. + 4 If the ratio mode is eFIXED_HEIGHT, the height value is in pixels and the width value is relative to the height value. + + Definition at line 234 of file kfbxcamera.h. ''' + + file.write('\n\t\t\tProperty: "PixelAspectRatio", "double", "",2') + + file.write('\n\t\t\tProperty: "UseFrameColor", "bool", "",0') + file.write('\n\t\t\tProperty: "FrameColor", "ColorRGB", "",0.3,0.3,0.3') + file.write('\n\t\t\tProperty: "ShowName", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowGrid", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowOpticalCenter", "bool", "",0') + file.write('\n\t\t\tProperty: "ShowAzimut", "bool", "",1') + file.write('\n\t\t\tProperty: "ShowTimeCode", "bool", "",0') + file.write('\n\t\t\tProperty: "NearPlane", "double", "",%.6f' % data.clip_start) # file.write('\n\t\t\tProperty: "NearPlane", "double", "",%.6f' % data.clipStart) - file.write('\n\t\t\tProperty: "FarPlane", "double", "",%.6f' % data.clip_end) + file.write('\n\t\t\tProperty: "FarPlane", "double", "",%.6f' % data.clip_end) # file.write('\n\t\t\tProperty: "FarPlane", "double", "",%.6f' % data.clipStart) - file.write('\n\t\t\tProperty: "FilmWidth", "double", "",1.0') - file.write('\n\t\t\tProperty: "FilmHeight", "double", "",1.0') - file.write('\n\t\t\tProperty: "FilmAspectRatio", "double", "",%.6f' % aspect) - file.write('\n\t\t\tProperty: "FilmSqueezeRatio", "double", "",1') - file.write('\n\t\t\tProperty: "FilmFormatIndex", "enum", "",0') - file.write('\n\t\t\tProperty: "ViewFrustum", "bool", "",1') - file.write('\n\t\t\tProperty: "ViewFrustumNearFarPlane", "bool", "",0') - file.write('\n\t\t\tProperty: "ViewFrustumBackPlaneMode", "enum", "",2') - file.write('\n\t\t\tProperty: "BackPlaneDistance", "double", "",100') - file.write('\n\t\t\tProperty: "BackPlaneDistanceMode", "enum", "",0') - file.write('\n\t\t\tProperty: "ViewCameraToLookAt", "bool", "",1') - file.write('\n\t\t\tProperty: "LockMode", "bool", "",0') - file.write('\n\t\t\tProperty: "LockInterestNavigation", "bool", "",0') - file.write('\n\t\t\tProperty: "FitImage", "bool", "",0') - file.write('\n\t\t\tProperty: "Crop", "bool", "",0') - file.write('\n\t\t\tProperty: "Center", "bool", "",1') - file.write('\n\t\t\tProperty: "KeepRatio", "bool", "",1') - file.write('\n\t\t\tProperty: "BackgroundMode", "enum", "",0') - file.write('\n\t\t\tProperty: "BackgroundAlphaTreshold", "double", "",0.5') - file.write('\n\t\t\tProperty: "ForegroundTransparent", "bool", "",1') - file.write('\n\t\t\tProperty: "DisplaySafeArea", "bool", "",0') - file.write('\n\t\t\tProperty: "SafeAreaDisplayStyle", "enum", "",1') - file.write('\n\t\t\tProperty: "SafeAreaAspectRatio", "double", "",%.6f' % aspect) - file.write('\n\t\t\tProperty: "Use2DMagnifierZoom", "bool", "",0') - file.write('\n\t\t\tProperty: "2D Magnifier Zoom", "Real", "A+",100') - file.write('\n\t\t\tProperty: "2D Magnifier X", "Real", "A+",50') - file.write('\n\t\t\tProperty: "2D Magnifier Y", "Real", "A+",50') - file.write('\n\t\t\tProperty: "CameraProjectionType", "enum", "",0') - file.write('\n\t\t\tProperty: "UseRealTimeDOFAndAA", "bool", "",0') - file.write('\n\t\t\tProperty: "UseDepthOfField", "bool", "",0') - file.write('\n\t\t\tProperty: "FocusSource", "enum", "",0') - file.write('\n\t\t\tProperty: "FocusAngle", "double", "",3.5') - file.write('\n\t\t\tProperty: "FocusDistance", "double", "",200') - file.write('\n\t\t\tProperty: "UseAntialiasing", "bool", "",0') - file.write('\n\t\t\tProperty: "AntialiasingIntensity", "double", "",0.77777') - file.write('\n\t\t\tProperty: "UseAccumulationBuffer", "bool", "",0') - file.write('\n\t\t\tProperty: "FrameSamplingCount", "int", "",7') - - file.write('\n\t\t}') - file.write('\n\t\tMultiLayer: 0') - file.write('\n\t\tMultiTake: 0') - file.write('\n\t\tShading: Y') - file.write('\n\t\tCulling: "CullingOff"') - file.write('\n\t\tTypeFlags: "Camera"') - file.write('\n\t\tGeometryVersion: 124') - file.write('\n\t\tPosition: %.6f,%.6f,%.6f' % loc) - file.write('\n\t\tUp: %.6f,%.6f,%.6f' % tuple(Mathutils.Vector(0,1,0) * matrix_rot) ) - file.write('\n\t\tLookAt: %.6f,%.6f,%.6f' % tuple(Mathutils.Vector(0,0,-1)*matrix_rot) ) - - #file.write('\n\t\tUp: 0,0,0' ) - #file.write('\n\t\tLookAt: 0,0,0' ) - - file.write('\n\t\tShowInfoOnMoving: 1') - file.write('\n\t\tShowAudio: 0') - file.write('\n\t\tAudioColor: 0,1,0') - file.write('\n\t\tCameraOrthoZoom: 1') - file.write('\n\t}') - - def write_light(my_light): - light = my_light.blenObject.data - file.write('\n\tModel: "Model::%s", "Light" {' % my_light.fbxName) - file.write('\n\t\tVersion: 232') - - write_object_props(my_light.blenObject, None, my_light.parRelMatrix()) - - # Why are these values here twice?????? - oh well, follow the holy sdk's output - - # Blender light types match FBX's, funny coincidence, we just need to - # be sure that all unsupported types are made into a point light - #ePOINT, - #eDIRECTIONAL - #eSPOT - light_type_items = {'POINT': 0, 'SUN': 1, 'SPOT': 2, 'HEMI': 3, 'AREA': 4} - light_type = light_type_items[light.type] + file.write('\n\t\t\tProperty: "FilmWidth", "double", "",1.0') + file.write('\n\t\t\tProperty: "FilmHeight", "double", "",1.0') + file.write('\n\t\t\tProperty: "FilmAspectRatio", "double", "",%.6f' % aspect) + file.write('\n\t\t\tProperty: "FilmSqueezeRatio", "double", "",1') + file.write('\n\t\t\tProperty: "FilmFormatIndex", "enum", "",0') + file.write('\n\t\t\tProperty: "ViewFrustum", "bool", "",1') + file.write('\n\t\t\tProperty: "ViewFrustumNearFarPlane", "bool", "",0') + file.write('\n\t\t\tProperty: "ViewFrustumBackPlaneMode", "enum", "",2') + file.write('\n\t\t\tProperty: "BackPlaneDistance", "double", "",100') + file.write('\n\t\t\tProperty: "BackPlaneDistanceMode", "enum", "",0') + file.write('\n\t\t\tProperty: "ViewCameraToLookAt", "bool", "",1') + file.write('\n\t\t\tProperty: "LockMode", "bool", "",0') + file.write('\n\t\t\tProperty: "LockInterestNavigation", "bool", "",0') + file.write('\n\t\t\tProperty: "FitImage", "bool", "",0') + file.write('\n\t\t\tProperty: "Crop", "bool", "",0') + file.write('\n\t\t\tProperty: "Center", "bool", "",1') + file.write('\n\t\t\tProperty: "KeepRatio", "bool", "",1') + file.write('\n\t\t\tProperty: "BackgroundMode", "enum", "",0') + file.write('\n\t\t\tProperty: "BackgroundAlphaTreshold", "double", "",0.5') + file.write('\n\t\t\tProperty: "ForegroundTransparent", "bool", "",1') + file.write('\n\t\t\tProperty: "DisplaySafeArea", "bool", "",0') + file.write('\n\t\t\tProperty: "SafeAreaDisplayStyle", "enum", "",1') + file.write('\n\t\t\tProperty: "SafeAreaAspectRatio", "double", "",%.6f' % aspect) + file.write('\n\t\t\tProperty: "Use2DMagnifierZoom", "bool", "",0') + file.write('\n\t\t\tProperty: "2D Magnifier Zoom", "Real", "A+",100') + file.write('\n\t\t\tProperty: "2D Magnifier X", "Real", "A+",50') + file.write('\n\t\t\tProperty: "2D Magnifier Y", "Real", "A+",50') + file.write('\n\t\t\tProperty: "CameraProjectionType", "enum", "",0') + file.write('\n\t\t\tProperty: "UseRealTimeDOFAndAA", "bool", "",0') + file.write('\n\t\t\tProperty: "UseDepthOfField", "bool", "",0') + file.write('\n\t\t\tProperty: "FocusSource", "enum", "",0') + file.write('\n\t\t\tProperty: "FocusAngle", "double", "",3.5') + file.write('\n\t\t\tProperty: "FocusDistance", "double", "",200') + file.write('\n\t\t\tProperty: "UseAntialiasing", "bool", "",0') + file.write('\n\t\t\tProperty: "AntialiasingIntensity", "double", "",0.77777') + file.write('\n\t\t\tProperty: "UseAccumulationBuffer", "bool", "",0') + file.write('\n\t\t\tProperty: "FrameSamplingCount", "int", "",7') + + file.write('\n\t\t}') + file.write('\n\t\tMultiLayer: 0') + file.write('\n\t\tMultiTake: 0') + file.write('\n\t\tShading: Y') + file.write('\n\t\tCulling: "CullingOff"') + file.write('\n\t\tTypeFlags: "Camera"') + file.write('\n\t\tGeometryVersion: 124') + file.write('\n\t\tPosition: %.6f,%.6f,%.6f' % loc) + file.write('\n\t\tUp: %.6f,%.6f,%.6f' % tuple(Mathutils.Vector(0,1,0) * matrix_rot) ) + file.write('\n\t\tLookAt: %.6f,%.6f,%.6f' % tuple(Mathutils.Vector(0,0,-1)*matrix_rot) ) + + #file.write('\n\t\tUp: 0,0,0' ) + #file.write('\n\t\tLookAt: 0,0,0' ) + + file.write('\n\t\tShowInfoOnMoving: 1') + file.write('\n\t\tShowAudio: 0') + file.write('\n\t\tAudioColor: 0,1,0') + file.write('\n\t\tCameraOrthoZoom: 1') + file.write('\n\t}') + + def write_light(my_light): + light = my_light.blenObject.data + file.write('\n\tModel: "Model::%s", "Light" {' % my_light.fbxName) + file.write('\n\t\tVersion: 232') + + write_object_props(my_light.blenObject, None, my_light.parRelMatrix()) + + # Why are these values here twice?????? - oh well, follow the holy sdk's output + + # Blender light types match FBX's, funny coincidence, we just need to + # be sure that all unsupported types are made into a point light + #ePOINT, + #eDIRECTIONAL + #eSPOT + light_type_items = {'POINT': 0, 'SUN': 1, 'SPOT': 2, 'HEMI': 3, 'AREA': 4} + light_type = light_type_items[light.type] # light_type = light.type - if light_type > 2: light_type = 1 # hemi and area lights become directional + if light_type > 2: light_type = 1 # hemi and area lights become directional # mode = light.mode - if light.shadow_method == 'RAY_SHADOW' or light.shadow_method == 'BUFFER_SHADOW': + if light.shadow_method == 'RAY_SHADOW' or light.shadow_method == 'BUFFER_SHADOW': # if mode & Blender.Lamp.Modes.RayShadow or mode & Blender.Lamp.Modes.Shadows: - do_shadow = 1 - else: - do_shadow = 0 + do_shadow = 1 + else: + do_shadow = 0 - if light.only_shadow or (not light.diffuse and not light.specular): + if light.only_shadow or (not light.diffuse and not light.specular): # if mode & Blender.Lamp.Modes.OnlyShadow or (mode & Blender.Lamp.Modes.NoDiffuse and mode & Blender.Lamp.Modes.NoSpecular): - do_light = 0 - else: - do_light = 1 - - scale = abs(GLOBAL_MATRIX.scalePart()[0]) # scale is always uniform in this case - - file.write('\n\t\t\tProperty: "LightType", "enum", "",%i' % light_type) - file.write('\n\t\t\tProperty: "CastLightOnObject", "bool", "",1') - file.write('\n\t\t\tProperty: "DrawVolumetricLight", "bool", "",1') - file.write('\n\t\t\tProperty: "DrawGroundProjection", "bool", "",1') - file.write('\n\t\t\tProperty: "DrawFrontFacingVolumetricLight", "bool", "",0') - file.write('\n\t\t\tProperty: "GoboProperty", "object", ""') - file.write('\n\t\t\tProperty: "Color", "Color", "A+",1,1,1') - file.write('\n\t\t\tProperty: "Intensity", "Intensity", "A+",%.2f' % (min(light.energy*100, 200))) # clamp below 200 - if light.type == 'SPOT': - file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spot_size * scale)) + do_light = 0 + else: + do_light = 1 + + scale = abs(GLOBAL_MATRIX.scalePart()[0]) # scale is always uniform in this case + + file.write('\n\t\t\tProperty: "LightType", "enum", "",%i' % light_type) + file.write('\n\t\t\tProperty: "CastLightOnObject", "bool", "",1') + file.write('\n\t\t\tProperty: "DrawVolumetricLight", "bool", "",1') + file.write('\n\t\t\tProperty: "DrawGroundProjection", "bool", "",1') + file.write('\n\t\t\tProperty: "DrawFrontFacingVolumetricLight", "bool", "",0') + file.write('\n\t\t\tProperty: "GoboProperty", "object", ""') + file.write('\n\t\t\tProperty: "Color", "Color", "A+",1,1,1') + file.write('\n\t\t\tProperty: "Intensity", "Intensity", "A+",%.2f' % (min(light.energy*100, 200))) # clamp below 200 + if light.type == 'SPOT': + file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spot_size * scale)) # file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spotSize * scale)) - file.write('\n\t\t\tProperty: "Fog", "Fog", "A+",50') - file.write('\n\t\t\tProperty: "Color", "Color", "A",%.2f,%.2f,%.2f' % tuple(light.color)) + file.write('\n\t\t\tProperty: "Fog", "Fog", "A+",50') + file.write('\n\t\t\tProperty: "Color", "Color", "A",%.2f,%.2f,%.2f' % tuple(light.color)) # file.write('\n\t\t\tProperty: "Color", "Color", "A",%.2f,%.2f,%.2f' % tuple(light.col)) - file.write('\n\t\t\tProperty: "Intensity", "Intensity", "A+",%.2f' % (min(light.energy*100, 200))) # clamp below 200 -# - # duplication? see ^ (Arystan) + file.write('\n\t\t\tProperty: "Intensity", "Intensity", "A+",%.2f' % (min(light.energy*100, 200))) # clamp below 200 +# + # duplication? see ^ (Arystan) # file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spotSize * scale)) - file.write('\n\t\t\tProperty: "Fog", "Fog", "A+",50') - file.write('\n\t\t\tProperty: "LightType", "enum", "",%i' % light_type) - file.write('\n\t\t\tProperty: "CastLightOnObject", "bool", "",%i' % do_light) - file.write('\n\t\t\tProperty: "DrawGroundProjection", "bool", "",1') - file.write('\n\t\t\tProperty: "DrawFrontFacingVolumetricLight", "bool", "",0') - file.write('\n\t\t\tProperty: "DrawVolumetricLight", "bool", "",1') - file.write('\n\t\t\tProperty: "GoboProperty", "object", ""') - file.write('\n\t\t\tProperty: "DecayType", "enum", "",0') - file.write('\n\t\t\tProperty: "DecayStart", "double", "",%.2f' % light.distance) + file.write('\n\t\t\tProperty: "Fog", "Fog", "A+",50') + file.write('\n\t\t\tProperty: "LightType", "enum", "",%i' % light_type) + file.write('\n\t\t\tProperty: "CastLightOnObject", "bool", "",%i' % do_light) + file.write('\n\t\t\tProperty: "DrawGroundProjection", "bool", "",1') + file.write('\n\t\t\tProperty: "DrawFrontFacingVolumetricLight", "bool", "",0') + file.write('\n\t\t\tProperty: "DrawVolumetricLight", "bool", "",1') + file.write('\n\t\t\tProperty: "GoboProperty", "object", ""') + file.write('\n\t\t\tProperty: "DecayType", "enum", "",0') + file.write('\n\t\t\tProperty: "DecayStart", "double", "",%.2f' % light.distance) # file.write('\n\t\t\tProperty: "DecayStart", "double", "",%.2f' % light.dist) - file.write('\n\t\t\tProperty: "EnableNearAttenuation", "bool", "",0') - file.write('\n\t\t\tProperty: "NearAttenuationStart", "double", "",0') - file.write('\n\t\t\tProperty: "NearAttenuationEnd", "double", "",0') - file.write('\n\t\t\tProperty: "EnableFarAttenuation", "bool", "",0') - file.write('\n\t\t\tProperty: "FarAttenuationStart", "double", "",0') - file.write('\n\t\t\tProperty: "FarAttenuationEnd", "double", "",0') - file.write('\n\t\t\tProperty: "CastShadows", "bool", "",%i' % do_shadow) - file.write('\n\t\t\tProperty: "ShadowColor", "ColorRGBA", "",0,0,0,1') - file.write('\n\t\t}') - file.write('\n\t\tMultiLayer: 0') - file.write('\n\t\tMultiTake: 0') - file.write('\n\t\tShading: Y') - file.write('\n\t\tCulling: "CullingOff"') - file.write('\n\t\tTypeFlags: "Light"') - file.write('\n\t\tGeometryVersion: 124') - file.write('\n\t}') - - # matrixOnly is not used at the moment - def write_null(my_null = None, fbxName = None, matrixOnly = None): - # ob can be null - if not fbxName: fbxName = my_null.fbxName - - file.write('\n\tModel: "Model::%s", "Null" {' % fbxName) - file.write('\n\t\tVersion: 232') - - # only use this for the root matrix at the moment - if matrixOnly: - poseMatrix = write_object_props(None, None, matrixOnly)[3] - - else: # all other Null's - if my_null: poseMatrix = write_object_props(my_null.blenObject, None, my_null.parRelMatrix())[3] - else: poseMatrix = write_object_props()[3] - - pose_items.append((fbxName, poseMatrix)) - - file.write(''' - } - MultiLayer: 0 - MultiTake: 1 - Shading: Y - Culling: "CullingOff" - TypeFlags: "Null" - }''') - - # Material Settings - if world: world_amb = tuple(world.ambient_color) + file.write('\n\t\t\tProperty: "EnableNearAttenuation", "bool", "",0') + file.write('\n\t\t\tProperty: "NearAttenuationStart", "double", "",0') + file.write('\n\t\t\tProperty: "NearAttenuationEnd", "double", "",0') + file.write('\n\t\t\tProperty: "EnableFarAttenuation", "bool", "",0') + file.write('\n\t\t\tProperty: "FarAttenuationStart", "double", "",0') + file.write('\n\t\t\tProperty: "FarAttenuationEnd", "double", "",0') + file.write('\n\t\t\tProperty: "CastShadows", "bool", "",%i' % do_shadow) + file.write('\n\t\t\tProperty: "ShadowColor", "ColorRGBA", "",0,0,0,1') + file.write('\n\t\t}') + file.write('\n\t\tMultiLayer: 0') + file.write('\n\t\tMultiTake: 0') + file.write('\n\t\tShading: Y') + file.write('\n\t\tCulling: "CullingOff"') + file.write('\n\t\tTypeFlags: "Light"') + file.write('\n\t\tGeometryVersion: 124') + file.write('\n\t}') + + # matrixOnly is not used at the moment + def write_null(my_null = None, fbxName = None, matrixOnly = None): + # ob can be null + if not fbxName: fbxName = my_null.fbxName + + file.write('\n\tModel: "Model::%s", "Null" {' % fbxName) + file.write('\n\t\tVersion: 232') + + # only use this for the root matrix at the moment + if matrixOnly: + poseMatrix = write_object_props(None, None, matrixOnly)[3] + + else: # all other Null's + if my_null: poseMatrix = write_object_props(my_null.blenObject, None, my_null.parRelMatrix())[3] + else: poseMatrix = write_object_props()[3] + + pose_items.append((fbxName, poseMatrix)) + + file.write(''' + } + MultiLayer: 0 + MultiTake: 1 + Shading: Y + Culling: "CullingOff" + TypeFlags: "Null" + }''') + + # Material Settings + if world: world_amb = tuple(world.ambient_color) # if world: world_amb = world.getAmb() - else: world_amb = (0,0,0) # Default value - - def write_material(matname, mat): - file.write('\n\tMaterial: "Material::%s", "" {' % matname) - - # Todo, add more material Properties. - if mat: - mat_cold = tuple(mat.diffuse_color) + else: world_amb = (0,0,0) # Default value + + def write_material(matname, mat): + file.write('\n\tMaterial: "Material::%s", "" {' % matname) + + # Todo, add more material Properties. + if mat: + mat_cold = tuple(mat.diffuse_color) # mat_cold = tuple(mat.rgbCol) - mat_cols = tuple(mat.specular_color) + mat_cols = tuple(mat.specular_color) # mat_cols = tuple(mat.specCol) - #mat_colm = tuple(mat.mirCol) # we wont use the mirror color - mat_colamb = world_amb + #mat_colm = tuple(mat.mirCol) # we wont use the mirror color + mat_colamb = world_amb # mat_colamb = tuple([c for c in world_amb]) - mat_dif = mat.diffuse_intensity + mat_dif = mat.diffuse_intensity # mat_dif = mat.ref - mat_amb = mat.ambient + mat_amb = mat.ambient # mat_amb = mat.amb - mat_hard = (float(mat.specular_hardness)-1)/5.10 + mat_hard = (float(mat.specular_hardness)-1)/5.10 # mat_hard = (float(mat.hard)-1)/5.10 - mat_spec = mat.specular_intensity/2.0 + mat_spec = mat.specular_intensity/2.0 # mat_spec = mat.spec/2.0 - mat_alpha = mat.alpha - mat_emit = mat.emit - mat_shadeless = mat.shadeless + mat_alpha = mat.alpha + mat_emit = mat.emit + mat_shadeless = mat.shadeless # mat_shadeless = mat.mode & Blender.Material.Modes.SHADELESS - if mat_shadeless: - mat_shader = 'Lambert' - else: - if mat.diffuse_shader == 'LAMBERT': + if mat_shadeless: + mat_shader = 'Lambert' + else: + if mat.diffuse_shader == 'LAMBERT': # if mat.diffuseShader == Blender.Material.Shaders.DIFFUSE_LAMBERT: - mat_shader = 'Lambert' - else: - mat_shader = 'Phong' - else: - mat_cols = mat_cold = 0.8, 0.8, 0.8 - mat_colamb = 0.0,0.0,0.0 - # mat_colm - mat_dif = 1.0 - mat_amb = 0.5 - mat_hard = 20.0 - mat_spec = 0.2 - mat_alpha = 1.0 - mat_emit = 0.0 - mat_shadeless = False - mat_shader = 'Phong' - - file.write('\n\t\tVersion: 102') - file.write('\n\t\tShadingModel: "%s"' % mat_shader.lower()) - file.write('\n\t\tMultiLayer: 0') - - file.write('\n\t\tProperties60: {') - file.write('\n\t\t\tProperty: "ShadingModel", "KString", "", "%s"' % mat_shader) - file.write('\n\t\t\tProperty: "MultiLayer", "bool", "",0') - file.write('\n\t\t\tProperty: "EmissiveColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cold) # emit and diffuse color are he same in blender - file.write('\n\t\t\tProperty: "EmissiveFactor", "double", "",%.4f' % mat_emit) - - file.write('\n\t\t\tProperty: "AmbientColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_colamb) - file.write('\n\t\t\tProperty: "AmbientFactor", "double", "",%.4f' % mat_amb) - file.write('\n\t\t\tProperty: "DiffuseColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cold) - file.write('\n\t\t\tProperty: "DiffuseFactor", "double", "",%.4f' % mat_dif) - file.write('\n\t\t\tProperty: "Bump", "Vector3D", "",0,0,0') - file.write('\n\t\t\tProperty: "TransparentColor", "ColorRGB", "",1,1,1') - file.write('\n\t\t\tProperty: "TransparencyFactor", "double", "",%.4f' % (1.0 - mat_alpha)) - if not mat_shadeless: - file.write('\n\t\t\tProperty: "SpecularColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cols) - file.write('\n\t\t\tProperty: "SpecularFactor", "double", "",%.4f' % mat_spec) - file.write('\n\t\t\tProperty: "ShininessExponent", "double", "",80.0') - file.write('\n\t\t\tProperty: "ReflectionColor", "ColorRGB", "",0,0,0') - file.write('\n\t\t\tProperty: "ReflectionFactor", "double", "",1') - file.write('\n\t\t\tProperty: "Emissive", "ColorRGB", "",0,0,0') - file.write('\n\t\t\tProperty: "Ambient", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_colamb) - file.write('\n\t\t\tProperty: "Diffuse", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_cold) - if not mat_shadeless: - file.write('\n\t\t\tProperty: "Specular", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_cols) - file.write('\n\t\t\tProperty: "Shininess", "double", "",%.1f' % mat_hard) - file.write('\n\t\t\tProperty: "Opacity", "double", "",%.1f' % mat_alpha) - if not mat_shadeless: - file.write('\n\t\t\tProperty: "Reflectivity", "double", "",0') - - file.write('\n\t\t}') - file.write('\n\t}') - - def copy_image(image): - - rel = image.get_export_path(basepath, True) - base = os.path.basename(rel) - - if EXP_IMAGE_COPY: - absp = image.get_export_path(basepath, False) - if not os.path.exists(absp): - shutil.copy(image.get_abs_filename(), absp) - - return (rel, base) - - # tex is an Image (Arystan) - def write_video(texname, tex): - # Same as texture really! - file.write('\n\tVideo: "Video::%s", "Clip" {' % texname) - - file.write(''' - Type: "Clip" - Properties60: { - Property: "FrameRate", "double", "",0 - Property: "LastFrame", "int", "",0 - Property: "Width", "int", "",0 - Property: "Height", "int", "",0''') - if tex: - fname_rel, fname_strip = copy_image(tex) + mat_shader = 'Lambert' + else: + mat_shader = 'Phong' + else: + mat_cols = mat_cold = 0.8, 0.8, 0.8 + mat_colamb = 0.0,0.0,0.0 + # mat_colm + mat_dif = 1.0 + mat_amb = 0.5 + mat_hard = 20.0 + mat_spec = 0.2 + mat_alpha = 1.0 + mat_emit = 0.0 + mat_shadeless = False + mat_shader = 'Phong' + + file.write('\n\t\tVersion: 102') + file.write('\n\t\tShadingModel: "%s"' % mat_shader.lower()) + file.write('\n\t\tMultiLayer: 0') + + file.write('\n\t\tProperties60: {') + file.write('\n\t\t\tProperty: "ShadingModel", "KString", "", "%s"' % mat_shader) + file.write('\n\t\t\tProperty: "MultiLayer", "bool", "",0') + file.write('\n\t\t\tProperty: "EmissiveColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cold) # emit and diffuse color are he same in blender + file.write('\n\t\t\tProperty: "EmissiveFactor", "double", "",%.4f' % mat_emit) + + file.write('\n\t\t\tProperty: "AmbientColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_colamb) + file.write('\n\t\t\tProperty: "AmbientFactor", "double", "",%.4f' % mat_amb) + file.write('\n\t\t\tProperty: "DiffuseColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cold) + file.write('\n\t\t\tProperty: "DiffuseFactor", "double", "",%.4f' % mat_dif) + file.write('\n\t\t\tProperty: "Bump", "Vector3D", "",0,0,0') + file.write('\n\t\t\tProperty: "TransparentColor", "ColorRGB", "",1,1,1') + file.write('\n\t\t\tProperty: "TransparencyFactor", "double", "",%.4f' % (1.0 - mat_alpha)) + if not mat_shadeless: + file.write('\n\t\t\tProperty: "SpecularColor", "ColorRGB", "",%.4f,%.4f,%.4f' % mat_cols) + file.write('\n\t\t\tProperty: "SpecularFactor", "double", "",%.4f' % mat_spec) + file.write('\n\t\t\tProperty: "ShininessExponent", "double", "",80.0') + file.write('\n\t\t\tProperty: "ReflectionColor", "ColorRGB", "",0,0,0') + file.write('\n\t\t\tProperty: "ReflectionFactor", "double", "",1') + file.write('\n\t\t\tProperty: "Emissive", "ColorRGB", "",0,0,0') + file.write('\n\t\t\tProperty: "Ambient", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_colamb) + file.write('\n\t\t\tProperty: "Diffuse", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_cold) + if not mat_shadeless: + file.write('\n\t\t\tProperty: "Specular", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_cols) + file.write('\n\t\t\tProperty: "Shininess", "double", "",%.1f' % mat_hard) + file.write('\n\t\t\tProperty: "Opacity", "double", "",%.1f' % mat_alpha) + if not mat_shadeless: + file.write('\n\t\t\tProperty: "Reflectivity", "double", "",0') + + file.write('\n\t\t}') + file.write('\n\t}') + + def copy_image(image): + + rel = image.get_export_path(basepath, True) + base = os.path.basename(rel) + + if EXP_IMAGE_COPY: + absp = image.get_export_path(basepath, False) + if not os.path.exists(absp): + shutil.copy(image.get_abs_filename(), absp) + + return (rel, base) + + # tex is an Image (Arystan) + def write_video(texname, tex): + # Same as texture really! + file.write('\n\tVideo: "Video::%s", "Clip" {' % texname) + + file.write(''' + Type: "Clip" + Properties60: { + Property: "FrameRate", "double", "",0 + Property: "LastFrame", "int", "",0 + Property: "Width", "int", "",0 + Property: "Height", "int", "",0''') + if tex: + fname_rel, fname_strip = copy_image(tex) # fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY) - else: - fname = fname_strip = fname_rel = '' - - file.write('\n\t\t\tProperty: "Path", "charptr", "", "%s"' % fname_strip) - - - file.write(''' - Property: "StartFrame", "int", "",0 - Property: "StopFrame", "int", "",0 - Property: "PlaySpeed", "double", "",1 - Property: "Offset", "KTime", "",0 - Property: "InterlaceMode", "enum", "",0 - Property: "FreeRunning", "bool", "",0 - Property: "Loop", "bool", "",0 - Property: "AccessMode", "enum", "",0 - } - UseMipMap: 0''') - - file.write('\n\t\tFilename: "%s"' % fname_strip) - if fname_strip: fname_strip = '/' + fname_strip - file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # make relative - file.write('\n\t}') - - - def write_texture(texname, tex, num): - # if tex == None then this is a dummy tex - file.write('\n\tTexture: "Texture::%s", "TextureVideoClip" {' % texname) - file.write('\n\t\tType: "TextureVideoClip"') - file.write('\n\t\tVersion: 202') - # TODO, rare case _empty_ exists as a name. - file.write('\n\t\tTextureName: "Texture::%s"' % texname) - - file.write(''' - Properties60: { - Property: "Translation", "Vector", "A+",0,0,0 - Property: "Rotation", "Vector", "A+",0,0,0 - Property: "Scaling", "Vector", "A+",1,1,1''') - file.write('\n\t\t\tProperty: "Texture alpha", "Number", "A+",%i' % num) - - - # WrapModeU/V 0==rep, 1==clamp, TODO add support - file.write(''' - Property: "TextureTypeUse", "enum", "",0 - Property: "CurrentTextureBlendMode", "enum", "",1 - Property: "UseMaterial", "bool", "",0 - Property: "UseMipMap", "bool", "",0 - Property: "CurrentMappingType", "enum", "",0 - Property: "UVSwap", "bool", "",0''') - - file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.clamp_x) + else: + fname = fname_strip = fname_rel = '' + + file.write('\n\t\t\tProperty: "Path", "charptr", "", "%s"' % fname_strip) + + + file.write(''' + Property: "StartFrame", "int", "",0 + Property: "StopFrame", "int", "",0 + Property: "PlaySpeed", "double", "",1 + Property: "Offset", "KTime", "",0 + Property: "InterlaceMode", "enum", "",0 + Property: "FreeRunning", "bool", "",0 + Property: "Loop", "bool", "",0 + Property: "AccessMode", "enum", "",0 + } + UseMipMap: 0''') + + file.write('\n\t\tFilename: "%s"' % fname_strip) + if fname_strip: fname_strip = '/' + fname_strip + file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # make relative + file.write('\n\t}') + + + def write_texture(texname, tex, num): + # if tex == None then this is a dummy tex + file.write('\n\tTexture: "Texture::%s", "TextureVideoClip" {' % texname) + file.write('\n\t\tType: "TextureVideoClip"') + file.write('\n\t\tVersion: 202') + # TODO, rare case _empty_ exists as a name. + file.write('\n\t\tTextureName: "Texture::%s"' % texname) + + file.write(''' + Properties60: { + Property: "Translation", "Vector", "A+",0,0,0 + Property: "Rotation", "Vector", "A+",0,0,0 + Property: "Scaling", "Vector", "A+",1,1,1''') + file.write('\n\t\t\tProperty: "Texture alpha", "Number", "A+",%i' % num) + + + # WrapModeU/V 0==rep, 1==clamp, TODO add support + file.write(''' + Property: "TextureTypeUse", "enum", "",0 + Property: "CurrentTextureBlendMode", "enum", "",1 + Property: "UseMaterial", "bool", "",0 + Property: "UseMipMap", "bool", "",0 + Property: "CurrentMappingType", "enum", "",0 + Property: "UVSwap", "bool", "",0''') + + file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.clamp_x) # file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.clampX) - file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.clamp_y) + file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.clamp_y) # file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.clampY) - - file.write(''' - Property: "TextureRotationPivot", "Vector3D", "",0,0,0 - Property: "TextureScalingPivot", "Vector3D", "",0,0,0 - Property: "VideoProperty", "object", "" - }''') - - file.write('\n\t\tMedia: "Video::%s"' % texname) - - if tex: - fname_rel, fname_strip = copy_image(tex) + + file.write(''' + Property: "TextureRotationPivot", "Vector3D", "",0,0,0 + Property: "TextureScalingPivot", "Vector3D", "",0,0,0 + Property: "VideoProperty", "object", "" + }''') + + file.write('\n\t\tMedia: "Video::%s"' % texname) + + if tex: + fname_rel, fname_strip = copy_image(tex) # fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY) - else: - fname = fname_strip = fname_rel = '' - - file.write('\n\t\tFileName: "%s"' % fname_strip) - file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # need some make relative command - - file.write(''' - ModelUVTranslation: 0,0 - ModelUVScaling: 1,1 - Texture_Alpha_Source: "None" - Cropping: 0,0,0,0 - }''') - - def write_deformer_skin(obname): - ''' - Each mesh has its own deformer - ''' - file.write('\n\tDeformer: "Deformer::Skin %s", "Skin" {' % obname) - file.write(''' - Version: 100 - MultiLayer: 0 - Type: "Skin" - Properties60: { - } - Link_DeformAcuracy: 50 - }''') - - # in the example was 'Bip01 L Thigh_2' - def write_sub_deformer_skin(my_mesh, my_bone, weights): - - ''' - Each subdeformer is spesific to a mesh, but the bone it links to can be used by many sub-deformers - So the SubDeformer needs the mesh-object name as a prefix to make it unique - - Its possible that there is no matching vgroup in this mesh, in that case no verts are in the subdeformer, - a but silly but dosnt really matter - ''' - file.write('\n\tDeformer: "SubDeformer::Cluster %s %s", "Cluster" {' % (my_mesh.fbxName, my_bone.fbxName)) - - file.write(''' - Version: 100 - MultiLayer: 0 - Type: "Cluster" - Properties60: { - Property: "SrcModel", "object", "" - Property: "SrcModelReference", "object", "" - } - UserData: "", ""''') - - # Support for bone parents - if my_mesh.fbxBoneParent: - if my_mesh.fbxBoneParent == my_bone: - # TODO - this is a bit lazy, we could have a simple write loop - # for this case because all weights are 1.0 but for now this is ok - # Parent Bones arent used all that much anyway. - vgroup_data = [(j, 1.0) for j in range(len(my_mesh.blenData.verts))] - else: - # This bone is not a parent of this mesh object, no weights - vgroup_data = [] - - else: - # Normal weight painted mesh - if my_bone.blenName in weights[0]: - # Before we used normalized wright list - #vgroup_data = me.getVertsFromGroup(bone.name, 1) - group_index = weights[0].index(my_bone.blenName) - vgroup_data = [(j, weight[group_index]) for j, weight in enumerate(weights[1]) if weight[group_index]] - else: - vgroup_data = [] - - file.write('\n\t\tIndexes: ') - - i = -1 - for vg in vgroup_data: - if i == -1: - file.write('%i' % vg[0]) - i=0 - else: - if i==23: - file.write('\n\t\t') - i=0 - file.write(',%i' % vg[0]) - i+=1 - - file.write('\n\t\tWeights: ') - i = -1 - for vg in vgroup_data: - if i == -1: - file.write('%.8f' % vg[1]) - i=0 - else: - if i==38: - file.write('\n\t\t') - i=0 - file.write(',%.8f' % vg[1]) - i+=1 - - if my_mesh.fbxParent: - # TODO FIXME, this case is broken in some cases. skinned meshes just shouldnt have parents where possible! - m = mtx4_z90 * (my_bone.restMatrix * my_bone.fbxArm.matrixWorld.copy() * my_mesh.matrixWorld.copy().invert() ) - else: - # Yes! this is it... - but dosnt work when the mesh is a. - m = mtx4_z90 * (my_bone.restMatrix * my_bone.fbxArm.matrixWorld.copy() * my_mesh.matrixWorld.copy().invert() ) - - #m = mtx4_z90 * my_bone.restMatrix - matstr = mat4x4str(m) - matstr_i = mat4x4str(m.invert()) - - file.write('\n\t\tTransform: %s' % matstr_i) # THIS IS __NOT__ THE GLOBAL MATRIX AS DOCUMENTED :/ - file.write('\n\t\tTransformLink: %s' % matstr) - file.write('\n\t}') - - def write_mesh(my_mesh): - - me = my_mesh.blenData - - # if there are non NULL materials on this mesh - if my_mesh.blenMaterials: do_materials = True - else: do_materials = False - - if my_mesh.blenTextures: do_textures = True - else: do_textures = False - - do_uvs = len(me.uv_textures) > 0 + else: + fname = fname_strip = fname_rel = '' + + file.write('\n\t\tFileName: "%s"' % fname_strip) + file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # need some make relative command + + file.write(''' + ModelUVTranslation: 0,0 + ModelUVScaling: 1,1 + Texture_Alpha_Source: "None" + Cropping: 0,0,0,0 + }''') + + def write_deformer_skin(obname): + ''' + Each mesh has its own deformer + ''' + file.write('\n\tDeformer: "Deformer::Skin %s", "Skin" {' % obname) + file.write(''' + Version: 100 + MultiLayer: 0 + Type: "Skin" + Properties60: { + } + Link_DeformAcuracy: 50 + }''') + + # in the example was 'Bip01 L Thigh_2' + def write_sub_deformer_skin(my_mesh, my_bone, weights): + + ''' + Each subdeformer is spesific to a mesh, but the bone it links to can be used by many sub-deformers + So the SubDeformer needs the mesh-object name as a prefix to make it unique + + Its possible that there is no matching vgroup in this mesh, in that case no verts are in the subdeformer, + a but silly but dosnt really matter + ''' + file.write('\n\tDeformer: "SubDeformer::Cluster %s %s", "Cluster" {' % (my_mesh.fbxName, my_bone.fbxName)) + + file.write(''' + Version: 100 + MultiLayer: 0 + Type: "Cluster" + Properties60: { + Property: "SrcModel", "object", "" + Property: "SrcModelReference", "object", "" + } + UserData: "", ""''') + + # Support for bone parents + if my_mesh.fbxBoneParent: + if my_mesh.fbxBoneParent == my_bone: + # TODO - this is a bit lazy, we could have a simple write loop + # for this case because all weights are 1.0 but for now this is ok + # Parent Bones arent used all that much anyway. + vgroup_data = [(j, 1.0) for j in range(len(my_mesh.blenData.verts))] + else: + # This bone is not a parent of this mesh object, no weights + vgroup_data = [] + + else: + # Normal weight painted mesh + if my_bone.blenName in weights[0]: + # Before we used normalized wright list + #vgroup_data = me.getVertsFromGroup(bone.name, 1) + group_index = weights[0].index(my_bone.blenName) + vgroup_data = [(j, weight[group_index]) for j, weight in enumerate(weights[1]) if weight[group_index]] + else: + vgroup_data = [] + + file.write('\n\t\tIndexes: ') + + i = -1 + for vg in vgroup_data: + if i == -1: + file.write('%i' % vg[0]) + i=0 + else: + if i==23: + file.write('\n\t\t') + i=0 + file.write(',%i' % vg[0]) + i+=1 + + file.write('\n\t\tWeights: ') + i = -1 + for vg in vgroup_data: + if i == -1: + file.write('%.8f' % vg[1]) + i=0 + else: + if i==38: + file.write('\n\t\t') + i=0 + file.write(',%.8f' % vg[1]) + i+=1 + + if my_mesh.fbxParent: + # TODO FIXME, this case is broken in some cases. skinned meshes just shouldnt have parents where possible! + m = mtx4_z90 * (my_bone.restMatrix * my_bone.fbxArm.matrixWorld.copy() * my_mesh.matrixWorld.copy().invert() ) + else: + # Yes! this is it... - but dosnt work when the mesh is a. + m = mtx4_z90 * (my_bone.restMatrix * my_bone.fbxArm.matrixWorld.copy() * my_mesh.matrixWorld.copy().invert() ) + + #m = mtx4_z90 * my_bone.restMatrix + matstr = mat4x4str(m) + matstr_i = mat4x4str(m.invert()) + + file.write('\n\t\tTransform: %s' % matstr_i) # THIS IS __NOT__ THE GLOBAL MATRIX AS DOCUMENTED :/ + file.write('\n\t\tTransformLink: %s' % matstr) + file.write('\n\t}') + + def write_mesh(my_mesh): + + me = my_mesh.blenData + + # if there are non NULL materials on this mesh + if my_mesh.blenMaterials: do_materials = True + else: do_materials = False + + if my_mesh.blenTextures: do_textures = True + else: do_textures = False + + do_uvs = len(me.uv_textures) > 0 # do_uvs = me.faceUV - - - file.write('\n\tModel: "Model::%s", "Mesh" {' % my_mesh.fbxName) - file.write('\n\t\tVersion: 232') # newline is added in write_object_props - - poseMatrix = write_object_props(my_mesh.blenObject, None, my_mesh.parRelMatrix())[3] - pose_items.append((my_mesh.fbxName, poseMatrix)) - - file.write('\n\t\t}') - file.write('\n\t\tMultiLayer: 0') - file.write('\n\t\tMultiTake: 1') - file.write('\n\t\tShading: Y') - file.write('\n\t\tCulling: "CullingOff"') - - - # Write the Real Mesh data here - file.write('\n\t\tVertices: ') - i=-1 - - for v in me.verts: - if i==-1: - file.write('%.6f,%.6f,%.6f' % tuple(v.co)); i=0 - else: - if i==7: - file.write('\n\t\t'); i=0 - file.write(',%.6f,%.6f,%.6f'% tuple(v.co)) - i+=1 - - file.write('\n\t\tPolygonVertexIndex: ') - i=-1 - for f in me.faces: - fi = f.verts - # fi = [v_index for j, v_index in enumerate(f.verts) if v_index != 0 or j != 3] + + + file.write('\n\tModel: "Model::%s", "Mesh" {' % my_mesh.fbxName) + file.write('\n\t\tVersion: 232') # newline is added in write_object_props + + poseMatrix = write_object_props(my_mesh.blenObject, None, my_mesh.parRelMatrix())[3] + pose_items.append((my_mesh.fbxName, poseMatrix)) + + file.write('\n\t\t}') + file.write('\n\t\tMultiLayer: 0') + file.write('\n\t\tMultiTake: 1') + file.write('\n\t\tShading: Y') + file.write('\n\t\tCulling: "CullingOff"') + + + # Write the Real Mesh data here + file.write('\n\t\tVertices: ') + i=-1 + + for v in me.verts: + if i==-1: + file.write('%.6f,%.6f,%.6f' % tuple(v.co)); i=0 + else: + if i==7: + file.write('\n\t\t'); i=0 + file.write(',%.6f,%.6f,%.6f'% tuple(v.co)) + i+=1 + + file.write('\n\t\tPolygonVertexIndex: ') + i=-1 + for f in me.faces: + fi = f.verts + # fi = [v_index for j, v_index in enumerate(f.verts) if v_index != 0 or j != 3] # fi = [v.index for v in f] - # flip the last index, odd but it looks like - # this is how fbx tells one face from another - fi[-1] = -(fi[-1]+1) - fi = tuple(fi) - if i==-1: - if len(fi) == 3: file.write('%i,%i,%i' % fi ) + # flip the last index, odd but it looks like + # this is how fbx tells one face from another + fi[-1] = -(fi[-1]+1) + fi = tuple(fi) + if i==-1: + if len(fi) == 3: file.write('%i,%i,%i' % fi ) # if len(f) == 3: file.write('%i,%i,%i' % fi ) - else: file.write('%i,%i,%i,%i' % fi ) - i=0 - else: - if i==13: - file.write('\n\t\t') - i=0 - if len(fi) == 3: file.write(',%i,%i,%i' % fi ) + else: file.write('%i,%i,%i,%i' % fi ) + i=0 + else: + if i==13: + file.write('\n\t\t') + i=0 + if len(fi) == 3: file.write(',%i,%i,%i' % fi ) # if len(f) == 3: file.write(',%i,%i,%i' % fi ) - else: file.write(',%i,%i,%i,%i' % fi ) - i+=1 - - file.write('\n\t\tEdges: ') - i=-1 - for ed in me.edges: - if i==-1: - file.write('%i,%i' % (ed.verts[0], ed.verts[1])) + else: file.write(',%i,%i,%i,%i' % fi ) + i+=1 + + file.write('\n\t\tEdges: ') + i=-1 + for ed in me.edges: + if i==-1: + file.write('%i,%i' % (ed.verts[0], ed.verts[1])) # file.write('%i,%i' % (ed.v1.index, ed.v2.index)) - i=0 - else: - if i==13: - file.write('\n\t\t') - i=0 - file.write(',%i,%i' % (ed.verts[0], ed.verts[1])) + i=0 + else: + if i==13: + file.write('\n\t\t') + i=0 + file.write(',%i,%i' % (ed.verts[0], ed.verts[1])) # file.write(',%i,%i' % (ed.v1.index, ed.v2.index)) - i+=1 - - file.write('\n\t\tGeometryVersion: 124') - - file.write(''' - LayerElementNormal: 0 { - Version: 101 - Name: "" - MappingInformationType: "ByVertice" - ReferenceInformationType: "Direct" - Normals: ''') - - i=-1 - for v in me.verts: - if i==-1: - file.write('%.15f,%.15f,%.15f' % tuple(v.normal)); i=0 + i+=1 + + file.write('\n\t\tGeometryVersion: 124') + + file.write(''' + LayerElementNormal: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByVertice" + ReferenceInformationType: "Direct" + Normals: ''') + + i=-1 + for v in me.verts: + if i==-1: + file.write('%.15f,%.15f,%.15f' % tuple(v.normal)); i=0 # file.write('%.15f,%.15f,%.15f' % tuple(v.no)); i=0 - else: - if i==2: - file.write('\n '); i=0 - file.write(',%.15f,%.15f,%.15f' % tuple(v.normal)) + else: + if i==2: + file.write('\n '); i=0 + file.write(',%.15f,%.15f,%.15f' % tuple(v.normal)) # file.write(',%.15f,%.15f,%.15f' % tuple(v.no)) - i+=1 - file.write('\n\t\t}') - - # Write Face Smoothing - file.write(''' - LayerElementSmoothing: 0 { - Version: 102 - Name: "" - MappingInformationType: "ByPolygon" - ReferenceInformationType: "Direct" - Smoothing: ''') - - i=-1 - for f in me.faces: - if i==-1: - file.write('%i' % f.smooth); i=0 - else: - if i==54: - file.write('\n '); i=0 - file.write(',%i' % f.smooth) - i+=1 - - file.write('\n\t\t}') - - # Write Edge Smoothing - file.write(''' - LayerElementSmoothing: 0 { - Version: 101 - Name: "" - MappingInformationType: "ByEdge" - ReferenceInformationType: "Direct" - Smoothing: ''') - + i+=1 + file.write('\n\t\t}') + + # Write Face Smoothing + file.write(''' + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygon" + ReferenceInformationType: "Direct" + Smoothing: ''') + + i=-1 + for f in me.faces: + if i==-1: + file.write('%i' % f.smooth); i=0 + else: + if i==54: + file.write('\n '); i=0 + file.write(',%i' % f.smooth) + i+=1 + + file.write('\n\t\t}') + + # Write Edge Smoothing + file.write(''' + LayerElementSmoothing: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByEdge" + ReferenceInformationType: "Direct" + Smoothing: ''') + # SHARP = Blender.Mesh.EdgeFlags.SHARP - i=-1 - for ed in me.edges: - if i==-1: - file.write('%i' % (ed.sharp)); i=0 + i=-1 + for ed in me.edges: + if i==-1: + file.write('%i' % (ed.sharp)); i=0 # file.write('%i' % ((ed.flag&SHARP)!=0)); i=0 - else: - if i==54: - file.write('\n '); i=0 - file.write(',%i' % (ed.sharp)) + else: + if i==54: + file.write('\n '); i=0 + file.write(',%i' % (ed.sharp)) # file.write(',%i' % ((ed.flag&SHARP)!=0)) - i+=1 - - file.write('\n\t\t}') + i+=1 + + file.write('\n\t\t}') # del SHARP - # small utility function - # returns a slice of data depending on number of face verts - # data is either a MeshTextureFace or MeshColor - def face_data(data, face): - totvert = len(f.verts) - - return data[:totvert] - - - # Write VertexColor Layers - # note, no programs seem to use this info :/ - collayers = [] - if len(me.vertex_colors): + # small utility function + # returns a slice of data depending on number of face verts + # data is either a MeshTextureFace or MeshColor + def face_data(data, face): + totvert = len(f.verts) + + return data[:totvert] + + + # Write VertexColor Layers + # note, no programs seem to use this info :/ + collayers = [] + if len(me.vertex_colors): # if me.vertexColors: - collayers = me.vertex_colors + collayers = me.vertex_colors # collayers = me.getColorLayerNames() - collayer_orig = me.active_vertex_color + collayer_orig = me.active_vertex_color # collayer_orig = me.activeColorLayer - for colindex, collayer in enumerate(collayers): + for colindex, collayer in enumerate(collayers): # me.activeColorLayer = collayer - file.write('\n\t\tLayerElementColor: %i {' % colindex) - file.write('\n\t\t\tVersion: 101') - file.write('\n\t\t\tName: "%s"' % collayer.name) + file.write('\n\t\tLayerElementColor: %i {' % colindex) + file.write('\n\t\t\tVersion: 101') + file.write('\n\t\t\tName: "%s"' % collayer.name) # file.write('\n\t\t\tName: "%s"' % collayer) - - file.write(''' - MappingInformationType: "ByPolygonVertex" - ReferenceInformationType: "IndexToDirect" - Colors: ''') - - i = -1 - ii = 0 # Count how many Colors we write - - for f, cf in zip(me.faces, collayer.data): - colors = [cf.color1, cf.color2, cf.color3, cf.color4] - - # determine number of verts - colors = face_data(colors, f) - - for col in colors: - if i==-1: - file.write('%.4f,%.4f,%.4f,1' % tuple(col)) - i=0 - else: - if i==7: - file.write('\n\t\t\t\t') - i=0 - file.write(',%.4f,%.4f,%.4f,1' % tuple(col)) - i+=1 - ii+=1 # One more Color + + file.write(''' + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + Colors: ''') + + i = -1 + ii = 0 # Count how many Colors we write + + for f, cf in zip(me.faces, collayer.data): + colors = [cf.color1, cf.color2, cf.color3, cf.color4] + + # determine number of verts + colors = face_data(colors, f) + + for col in colors: + if i==-1: + file.write('%.4f,%.4f,%.4f,1' % tuple(col)) + i=0 + else: + if i==7: + file.write('\n\t\t\t\t') + i=0 + file.write(',%.4f,%.4f,%.4f,1' % tuple(col)) + i+=1 + ii+=1 # One more Color # for f in me.faces: # for col in f.col: @@ -1707,391 +1707,391 @@ def write(filename, batch_objects = None, \ # file.write(',%.4f,%.4f,%.4f,1' % (col[0]/255.0, col[1]/255.0, col[2]/255.0)) # i+=1 # ii+=1 # One more Color - - file.write('\n\t\t\tColorIndex: ') - i = -1 - for j in range(ii): - if i == -1: - file.write('%i' % j) - i=0 - else: - if i==55: - file.write('\n\t\t\t\t') - i=0 - file.write(',%i' % j) - i+=1 - - file.write('\n\t\t}') - - - - # Write UV and texture layers. - uvlayers = [] - if do_uvs: - uvlayers = me.uv_textures + + file.write('\n\t\t\tColorIndex: ') + i = -1 + for j in range(ii): + if i == -1: + file.write('%i' % j) + i=0 + else: + if i==55: + file.write('\n\t\t\t\t') + i=0 + file.write(',%i' % j) + i+=1 + + file.write('\n\t\t}') + + + + # Write UV and texture layers. + uvlayers = [] + if do_uvs: + uvlayers = me.uv_textures # uvlayers = me.getUVLayerNames() - uvlayer_orig = me.active_uv_texture + uvlayer_orig = me.active_uv_texture # uvlayer_orig = me.activeUVLayer - for uvindex, uvlayer in enumerate(me.uv_textures): + for uvindex, uvlayer in enumerate(me.uv_textures): # for uvindex, uvlayer in enumerate(uvlayers): # me.activeUVLayer = uvlayer - file.write('\n\t\tLayerElementUV: %i {' % uvindex) - file.write('\n\t\t\tVersion: 101') - file.write('\n\t\t\tName: "%s"' % uvlayer.name) + file.write('\n\t\tLayerElementUV: %i {' % uvindex) + file.write('\n\t\t\tVersion: 101') + file.write('\n\t\t\tName: "%s"' % uvlayer.name) # file.write('\n\t\t\tName: "%s"' % uvlayer) - - file.write(''' - MappingInformationType: "ByPolygonVertex" - ReferenceInformationType: "IndexToDirect" - UV: ''') - - i = -1 - ii = 0 # Count how many UVs we write - - for uf in uvlayer.data: + + file.write(''' + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: ''') + + i = -1 + ii = 0 # Count how many UVs we write + + for uf in uvlayer.data: # for f in me.faces: - for uv in uf.uv: + for uv in uf.uv: # for uv in f.uv: - if i==-1: - file.write('%.6f,%.6f' % tuple(uv)) - i=0 - else: - if i==7: - file.write('\n ') - i=0 - file.write(',%.6f,%.6f' % tuple(uv)) - i+=1 - ii+=1 # One more UV - - file.write('\n\t\t\tUVIndex: ') - i = -1 - for j in range(ii): - if i == -1: - file.write('%i' % j) - i=0 - else: - if i==55: - file.write('\n\t\t\t\t') - i=0 - file.write(',%i' % j) - i+=1 - - file.write('\n\t\t}') - - if do_textures: - file.write('\n\t\tLayerElementTexture: %i {' % uvindex) - file.write('\n\t\t\tVersion: 101') - file.write('\n\t\t\tName: "%s"' % uvlayer.name) + if i==-1: + file.write('%.6f,%.6f' % tuple(uv)) + i=0 + else: + if i==7: + file.write('\n ') + i=0 + file.write(',%.6f,%.6f' % tuple(uv)) + i+=1 + ii+=1 # One more UV + + file.write('\n\t\t\tUVIndex: ') + i = -1 + for j in range(ii): + if i == -1: + file.write('%i' % j) + i=0 + else: + if i==55: + file.write('\n\t\t\t\t') + i=0 + file.write(',%i' % j) + i+=1 + + file.write('\n\t\t}') + + if do_textures: + file.write('\n\t\tLayerElementTexture: %i {' % uvindex) + file.write('\n\t\t\tVersion: 101') + file.write('\n\t\t\tName: "%s"' % uvlayer.name) # file.write('\n\t\t\tName: "%s"' % uvlayer) - - if len(my_mesh.blenTextures) == 1: - file.write('\n\t\t\tMappingInformationType: "AllSame"') - else: - file.write('\n\t\t\tMappingInformationType: "ByPolygon"') - - file.write('\n\t\t\tReferenceInformationType: "IndexToDirect"') - file.write('\n\t\t\tBlendMode: "Translucent"') - file.write('\n\t\t\tTextureAlpha: 1') - file.write('\n\t\t\tTextureId: ') - - if len(my_mesh.blenTextures) == 1: - file.write('0') - else: - texture_mapping_local = {None:-1} - - i = 0 # 1 for dummy - for tex in my_mesh.blenTextures: - if tex: # None is set above - texture_mapping_local[tex] = i - i+=1 - - i=-1 - for f in uvlayer.data: + + if len(my_mesh.blenTextures) == 1: + file.write('\n\t\t\tMappingInformationType: "AllSame"') + else: + file.write('\n\t\t\tMappingInformationType: "ByPolygon"') + + file.write('\n\t\t\tReferenceInformationType: "IndexToDirect"') + file.write('\n\t\t\tBlendMode: "Translucent"') + file.write('\n\t\t\tTextureAlpha: 1') + file.write('\n\t\t\tTextureId: ') + + if len(my_mesh.blenTextures) == 1: + file.write('0') + else: + texture_mapping_local = {None:-1} + + i = 0 # 1 for dummy + for tex in my_mesh.blenTextures: + if tex: # None is set above + texture_mapping_local[tex] = i + i+=1 + + i=-1 + for f in uvlayer.data: # for f in me.faces: - img_key = f.image - - if i==-1: - i=0 - file.write( '%s' % texture_mapping_local[img_key]) - else: - if i==55: - file.write('\n ') - i=0 - - file.write(',%s' % texture_mapping_local[img_key]) - i+=1 - - else: - file.write(''' - LayerElementTexture: 0 { - Version: 101 - Name: "" - MappingInformationType: "NoMappingInformation" - ReferenceInformationType: "IndexToDirect" - BlendMode: "Translucent" - TextureAlpha: 1 - TextureId: ''') - file.write('\n\t\t}') - + img_key = f.image + + if i==-1: + i=0 + file.write( '%s' % texture_mapping_local[img_key]) + else: + if i==55: + file.write('\n ') + i=0 + + file.write(',%s' % texture_mapping_local[img_key]) + i+=1 + + else: + file.write(''' + LayerElementTexture: 0 { + Version: 101 + Name: "" + MappingInformationType: "NoMappingInformation" + ReferenceInformationType: "IndexToDirect" + BlendMode: "Translucent" + TextureAlpha: 1 + TextureId: ''') + file.write('\n\t\t}') + # me.activeUVLayer = uvlayer_orig - - # Done with UV/textures. - - if do_materials: - file.write('\n\t\tLayerElementMaterial: 0 {') - file.write('\n\t\t\tVersion: 101') - file.write('\n\t\t\tName: ""') - - if len(my_mesh.blenMaterials) == 1: - file.write('\n\t\t\tMappingInformationType: "AllSame"') - else: - file.write('\n\t\t\tMappingInformationType: "ByPolygon"') - - file.write('\n\t\t\tReferenceInformationType: "IndexToDirect"') - file.write('\n\t\t\tMaterials: ') - - if len(my_mesh.blenMaterials) == 1: - file.write('0') - else: - # Build a material mapping for this - material_mapping_local = {} # local-mat & tex : global index. - - for j, mat_tex_pair in enumerate(my_mesh.blenMaterials): - material_mapping_local[mat_tex_pair] = j - - len_material_mapping_local = len(material_mapping_local) - - mats = my_mesh.blenMaterialList - - if me.active_uv_texture: - uv_faces = me.active_uv_texture.data - else: - uv_faces = [None] * len(me.faces) - - i=-1 - for f, uf in zip(me.faces, uv_faces): + + # Done with UV/textures. + + if do_materials: + file.write('\n\t\tLayerElementMaterial: 0 {') + file.write('\n\t\t\tVersion: 101') + file.write('\n\t\t\tName: ""') + + if len(my_mesh.blenMaterials) == 1: + file.write('\n\t\t\tMappingInformationType: "AllSame"') + else: + file.write('\n\t\t\tMappingInformationType: "ByPolygon"') + + file.write('\n\t\t\tReferenceInformationType: "IndexToDirect"') + file.write('\n\t\t\tMaterials: ') + + if len(my_mesh.blenMaterials) == 1: + file.write('0') + else: + # Build a material mapping for this + material_mapping_local = {} # local-mat & tex : global index. + + for j, mat_tex_pair in enumerate(my_mesh.blenMaterials): + material_mapping_local[mat_tex_pair] = j + + len_material_mapping_local = len(material_mapping_local) + + mats = my_mesh.blenMaterialList + + if me.active_uv_texture: + uv_faces = me.active_uv_texture.data + else: + uv_faces = [None] * len(me.faces) + + i=-1 + for f, uf in zip(me.faces, uv_faces): # for f in me.faces: - try: mat = mats[f.material_index] + try: mat = mats[f.material_index] # try: mat = mats[f.mat] - except:mat = None - - if do_uvs: tex = uf.image # WARNING - MULTI UV LAYER IMAGES NOT SUPPORTED :/ + except:mat = None + + if do_uvs: tex = uf.image # WARNING - MULTI UV LAYER IMAGES NOT SUPPORTED :/ # if do_uvs: tex = f.image # WARNING - MULTI UV LAYER IMAGES NOT SUPPORTED :/ - else: tex = None - - if i==-1: - i=0 - file.write( '%s' % (material_mapping_local[mat, tex])) # None for mat or tex is ok - else: - if i==55: - file.write('\n\t\t\t\t') - i=0 - - file.write(',%s' % (material_mapping_local[mat, tex])) - i+=1 - - file.write('\n\t\t}') - - file.write(''' - Layer: 0 { - Version: 100 - LayerElement: { - Type: "LayerElementNormal" - TypedIndex: 0 - }''') - - if do_materials: - file.write(''' - LayerElement: { - Type: "LayerElementMaterial" - TypedIndex: 0 - }''') - - # Always write this - if do_textures: - file.write(''' - LayerElement: { - Type: "LayerElementTexture" - TypedIndex: 0 - }''') - - if me.vertex_colors: + else: tex = None + + if i==-1: + i=0 + file.write( '%s' % (material_mapping_local[mat, tex])) # None for mat or tex is ok + else: + if i==55: + file.write('\n\t\t\t\t') + i=0 + + file.write(',%s' % (material_mapping_local[mat, tex])) + i+=1 + + file.write('\n\t\t}') + + file.write(''' + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + }''') + + if do_materials: + file.write(''' + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + }''') + + # Always write this + if do_textures: + file.write(''' + LayerElement: { + Type: "LayerElementTexture" + TypedIndex: 0 + }''') + + if me.vertex_colors: # if me.vertexColors: - file.write(''' - LayerElement: { - Type: "LayerElementColor" - TypedIndex: 0 - }''') - - if do_uvs: # same as me.faceUV - file.write(''' - LayerElement: { - Type: "LayerElementUV" - TypedIndex: 0 - }''') - - - file.write('\n\t\t}') - - if len(uvlayers) > 1: - for i in range(1, len(uvlayers)): - - file.write('\n\t\tLayer: %i {' % i) - file.write('\n\t\t\tVersion: 100') - - file.write(''' - LayerElement: { - Type: "LayerElementUV"''') - - file.write('\n\t\t\t\tTypedIndex: %i' % i) - file.write('\n\t\t\t}') - - if do_textures: - - file.write(''' - LayerElement: { - Type: "LayerElementTexture"''') - - file.write('\n\t\t\t\tTypedIndex: %i' % i) - file.write('\n\t\t\t}') - - file.write('\n\t\t}') - - if len(collayers) > 1: - # Take into account any UV layers - layer_offset = 0 - if uvlayers: layer_offset = len(uvlayers)-1 - - for i in range(layer_offset, len(collayers)+layer_offset): - file.write('\n\t\tLayer: %i {' % i) - file.write('\n\t\t\tVersion: 100') - - file.write(''' - LayerElement: { - Type: "LayerElementColor"''') - - file.write('\n\t\t\t\tTypedIndex: %i' % i) - file.write('\n\t\t\t}') - file.write('\n\t\t}') - file.write('\n\t}') - - def write_group(name): - file.write('\n\tGroupSelection: "GroupSelection::%s", "Default" {' % name) - - file.write(''' - Properties60: { - Property: "MultiLayer", "bool", "",0 - Property: "Pickable", "bool", "",1 - Property: "Transformable", "bool", "",1 - Property: "Show", "bool", "",1 - } - MultiLayer: 0 - }''') - - - # add meshes here to clear because they are not used anywhere. - meshes_to_clear = [] - - ob_meshes = [] - ob_lights = [] - ob_cameras = [] - # in fbx we export bones as children of the mesh - # armatures not a part of a mesh, will be added to ob_arms - ob_bones = [] - ob_arms = [] - ob_null = [] # emptys - - # List of types that have blender objects (not bones) - ob_all_typegroups = [ob_meshes, ob_lights, ob_cameras, ob_arms, ob_null] - - groups = [] # blender groups, only add ones that have objects in the selections - materials = {} # (mat, image) keys, should be a set() - textures = {} # should be a set() - - tmp_ob_type = ob_type = None # incase no objects are exported, so as not to raise an error - - # if EXP_OBS_SELECTED is false, use sceens objects - if not batch_objects: - if EXP_OBS_SELECTED: tmp_objects = context.selected_objects + file.write(''' + LayerElement: { + Type: "LayerElementColor" + TypedIndex: 0 + }''') + + if do_uvs: # same as me.faceUV + file.write(''' + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + }''') + + + file.write('\n\t\t}') + + if len(uvlayers) > 1: + for i in range(1, len(uvlayers)): + + file.write('\n\t\tLayer: %i {' % i) + file.write('\n\t\t\tVersion: 100') + + file.write(''' + LayerElement: { + Type: "LayerElementUV"''') + + file.write('\n\t\t\t\tTypedIndex: %i' % i) + file.write('\n\t\t\t}') + + if do_textures: + + file.write(''' + LayerElement: { + Type: "LayerElementTexture"''') + + file.write('\n\t\t\t\tTypedIndex: %i' % i) + file.write('\n\t\t\t}') + + file.write('\n\t\t}') + + if len(collayers) > 1: + # Take into account any UV layers + layer_offset = 0 + if uvlayers: layer_offset = len(uvlayers)-1 + + for i in range(layer_offset, len(collayers)+layer_offset): + file.write('\n\t\tLayer: %i {' % i) + file.write('\n\t\t\tVersion: 100') + + file.write(''' + LayerElement: { + Type: "LayerElementColor"''') + + file.write('\n\t\t\t\tTypedIndex: %i' % i) + file.write('\n\t\t\t}') + file.write('\n\t\t}') + file.write('\n\t}') + + def write_group(name): + file.write('\n\tGroupSelection: "GroupSelection::%s", "Default" {' % name) + + file.write(''' + Properties60: { + Property: "MultiLayer", "bool", "",0 + Property: "Pickable", "bool", "",1 + Property: "Transformable", "bool", "",1 + Property: "Show", "bool", "",1 + } + MultiLayer: 0 + }''') + + + # add meshes here to clear because they are not used anywhere. + meshes_to_clear = [] + + ob_meshes = [] + ob_lights = [] + ob_cameras = [] + # in fbx we export bones as children of the mesh + # armatures not a part of a mesh, will be added to ob_arms + ob_bones = [] + ob_arms = [] + ob_null = [] # emptys + + # List of types that have blender objects (not bones) + ob_all_typegroups = [ob_meshes, ob_lights, ob_cameras, ob_arms, ob_null] + + groups = [] # blender groups, only add ones that have objects in the selections + materials = {} # (mat, image) keys, should be a set() + textures = {} # should be a set() + + tmp_ob_type = ob_type = None # incase no objects are exported, so as not to raise an error + + # if EXP_OBS_SELECTED is false, use sceens objects + if not batch_objects: + if EXP_OBS_SELECTED: tmp_objects = context.selected_objects # if EXP_OBS_SELECTED: tmp_objects = sce.objects.context - else: tmp_objects = sce.objects - else: - tmp_objects = batch_objects - - if EXP_ARMATURE: - # This is needed so applying modifiers dosnt apply the armature deformation, its also needed - # ...so mesh objects return their rest worldspace matrix when bone-parents are exported as weighted meshes. - # set every armature to its rest, backup the original values so we done mess up the scene - ob_arms_orig_rest = [arm.rest_position for arm in bpy.data.armatures] + else: tmp_objects = sce.objects + else: + tmp_objects = batch_objects + + if EXP_ARMATURE: + # This is needed so applying modifiers dosnt apply the armature deformation, its also needed + # ...so mesh objects return their rest worldspace matrix when bone-parents are exported as weighted meshes. + # set every armature to its rest, backup the original values so we done mess up the scene + ob_arms_orig_rest = [arm.rest_position for arm in bpy.data.armatures] # ob_arms_orig_rest = [arm.restPosition for arm in bpy.data.armatures] - - for arm in bpy.data.armatures: - arm.rest_position = True + + for arm in bpy.data.armatures: + arm.rest_position = True # arm.restPosition = True - - if ob_arms_orig_rest: - for ob_base in bpy.data.objects: - #if ob_base.type == 'Armature': - ob_base.make_display_list() + + if ob_arms_orig_rest: + for ob_base in bpy.data.objects: + #if ob_base.type == 'Armature': + ob_base.make_display_list() # ob_base.makeDisplayList() - - # This causes the makeDisplayList command to effect the mesh - sce.set_frame(sce.current_frame) + + # This causes the makeDisplayList command to effect the mesh + sce.set_frame(sce.current_frame) # Blender.Set('curframe', Blender.Get('curframe')) - - - for ob_base in tmp_objects: - # ignore dupli children - if ob_base.parent and ob_base.parent.dupli_type != 'NONE': - continue - obs = [(ob_base, ob_base.matrix)] - if ob_base.dupli_type != 'NONE': - ob_base.create_dupli_list() - obs = [(dob.object, dob.matrix) for dob in ob_base.dupli_list] + for ob_base in tmp_objects: + + # ignore dupli children + if ob_base.parent and ob_base.parent.dupli_type != 'NONE': + continue + + obs = [(ob_base, ob_base.matrix)] + if ob_base.dupli_type != 'NONE': + ob_base.create_dupli_list() + obs = [(dob.object, dob.matrix) for dob in ob_base.dupli_list] - for ob, mtx in obs: + for ob, mtx in obs: # for ob, mtx in BPyObject.getDerivedObjects(ob_base): - tmp_ob_type = ob.type - if tmp_ob_type == 'CAMERA': + tmp_ob_type = ob.type + if tmp_ob_type == 'CAMERA': # if tmp_ob_type == 'Camera': - if EXP_CAMERA: - ob_cameras.append(my_object_generic(ob, mtx)) - elif tmp_ob_type == 'LAMP': + if EXP_CAMERA: + ob_cameras.append(my_object_generic(ob, mtx)) + elif tmp_ob_type == 'LAMP': # elif tmp_ob_type == 'Lamp': - if EXP_LAMP: - ob_lights.append(my_object_generic(ob, mtx)) - elif tmp_ob_type == 'ARMATURE': + if EXP_LAMP: + ob_lights.append(my_object_generic(ob, mtx)) + elif tmp_ob_type == 'ARMATURE': # elif tmp_ob_type == 'Armature': - if EXP_ARMATURE: - # TODO - armatures dont work in dupligroups! - if ob not in ob_arms: ob_arms.append(ob) - # ob_arms.append(ob) # replace later. was "ob_arms.append(sane_obname(ob), ob)" - elif tmp_ob_type == 'EMPTY': + if EXP_ARMATURE: + # TODO - armatures dont work in dupligroups! + if ob not in ob_arms: ob_arms.append(ob) + # ob_arms.append(ob) # replace later. was "ob_arms.append(sane_obname(ob), ob)" + elif tmp_ob_type == 'EMPTY': # elif tmp_ob_type == 'Empty': - if EXP_EMPTY: - ob_null.append(my_object_generic(ob, mtx)) - elif EXP_MESH: - origData = True - if tmp_ob_type != 'MESH': + if EXP_EMPTY: + ob_null.append(my_object_generic(ob, mtx)) + elif EXP_MESH: + origData = True + if tmp_ob_type != 'MESH': # if tmp_ob_type != 'Mesh': # me = bpy.data.meshes.new() - try: me = ob.create_mesh(True, 'PREVIEW') + try: me = ob.create_mesh(True, 'PREVIEW') # try: me.getFromObject(ob) - except: me = None - if me: - meshes_to_clear.append( me ) - mats = me.materials - origData = False - else: - # Mesh Type! - if EXP_MESH_APPLY_MOD: + except: me = None + if me: + meshes_to_clear.append( me ) + mats = me.materials + origData = False + else: + # Mesh Type! + if EXP_MESH_APPLY_MOD: # me = bpy.data.meshes.new() - me = ob.create_mesh(True, 'PREVIEW') + me = ob.create_mesh(True, 'PREVIEW') # me.getFromObject(ob) - - # so we keep the vert groups + + # so we keep the vert groups # if EXP_ARMATURE: # orig_mesh = ob.getData(mesh=1) # if orig_mesh.getVertGroupNames(): @@ -2101,16 +2101,16 @@ def write(filename, batch_objects = None, \ # if len(me.verts) == len(orig_mesh.verts): # groupNames, vWeightDict = BPyMesh.meshWeight2Dict(orig_mesh) # BPyMesh.dict2MeshWeight(me, groupNames, vWeightDict) - - # print ob, me, me.getVertGroupNames() - meshes_to_clear.append( me ) - origData = False - mats = me.materials - else: - me = ob.data + + # print ob, me, me.getVertGroupNames() + meshes_to_clear.append( me ) + origData = False + mats = me.materials + else: + me = ob.data # me = ob.getData(mesh=1) - mats = me.materials - + mats = me.materials + # # Support object colors # tmp_colbits = ob.colbits # if tmp_colbits: @@ -2120,679 +2120,679 @@ def write(filename, batch_objects = None, \ # mats[i] = tmp_ob_mats[i] # del tmp_ob_mats # del tmp_colbits - - - if me: + + + if me: # # This WILL modify meshes in blender if EXP_MESH_APPLY_MOD is disabled. # # so strictly this is bad. but only in rare cases would it have negative results # # say with dupliverts the objects would rotate a bit differently # if EXP_MESH_HQ_NORMALS: # BPyMesh.meshCalcNormals(me) # high quality normals nice for realtime engines. - - texture_mapping_local = {} - material_mapping_local = {} - if len(me.uv_textures) > 0: + + texture_mapping_local = {} + material_mapping_local = {} + if len(me.uv_textures) > 0: # if me.faceUV: - uvlayer_orig = me.active_uv_texture + uvlayer_orig = me.active_uv_texture # uvlayer_orig = me.activeUVLayer - for uvlayer in me.uv_textures: + for uvlayer in me.uv_textures: # for uvlayer in me.getUVLayerNames(): # me.activeUVLayer = uvlayer - for f, uf in zip(me.faces, uvlayer.data): + for f, uf in zip(me.faces, uvlayer.data): # for f in me.faces: - tex = uf.image + tex = uf.image # tex = f.image - textures[tex] = texture_mapping_local[tex] = None - - try: mat = mats[f.material_index] + textures[tex] = texture_mapping_local[tex] = None + + try: mat = mats[f.material_index] # try: mat = mats[f.mat] - except: mat = None - - materials[mat, tex] = material_mapping_local[mat, tex] = None # should use sets, wait for blender 2.5 - - + except: mat = None + + materials[mat, tex] = material_mapping_local[mat, tex] = None # should use sets, wait for blender 2.5 + + # me.activeUVLayer = uvlayer_orig - else: - for mat in mats: - # 2.44 use mat.lib too for uniqueness - materials[mat, None] = material_mapping_local[mat, None] = None - else: - materials[None, None] = None - - if EXP_ARMATURE: - armob = ob.find_armature() - blenParentBoneName = None - - # parent bone - special case - if (not armob) and ob.parent and ob.parent.type == 'ARMATURE' and \ - ob.parent_type == 'BONE': + else: + for mat in mats: + # 2.44 use mat.lib too for uniqueness + materials[mat, None] = material_mapping_local[mat, None] = None + else: + materials[None, None] = None + + if EXP_ARMATURE: + armob = ob.find_armature() + blenParentBoneName = None + + # parent bone - special case + if (not armob) and ob.parent and ob.parent.type == 'ARMATURE' and \ + ob.parent_type == 'BONE': # if (not armob) and ob.parent and ob.parent.type == 'Armature' and ob.parentType == Blender.Object.ParentTypes.BONE: - armob = ob.parent - blenParentBoneName = ob.parent_bone + armob = ob.parent + blenParentBoneName = ob.parent_bone # blenParentBoneName = ob.parentbonename - - - if armob and armob not in ob_arms: - ob_arms.append(armob) - - else: - blenParentBoneName = armob = None - - my_mesh = my_object_generic(ob, mtx) - my_mesh.blenData = me - my_mesh.origData = origData - my_mesh.blenMaterials = list(material_mapping_local.keys()) - my_mesh.blenMaterialList = mats - my_mesh.blenTextures = list(texture_mapping_local.keys()) - - # if only 1 null texture then empty the list - if len(my_mesh.blenTextures) == 1 and my_mesh.blenTextures[0] == None: - my_mesh.blenTextures = [] - - my_mesh.fbxArm = armob # replace with my_object_generic armature instance later - my_mesh.fbxBoneParent = blenParentBoneName # replace with my_bone instance later - - ob_meshes.append( my_mesh ) - - # not forgetting to free dupli_list - if ob_base.dupli_list: ob_base.free_dupli_list() - - - if EXP_ARMATURE: - # now we have the meshes, restore the rest arm position - for i, arm in enumerate(bpy.data.armatures): - arm.rest_position = ob_arms_orig_rest[i] + + + if armob and armob not in ob_arms: + ob_arms.append(armob) + + else: + blenParentBoneName = armob = None + + my_mesh = my_object_generic(ob, mtx) + my_mesh.blenData = me + my_mesh.origData = origData + my_mesh.blenMaterials = list(material_mapping_local.keys()) + my_mesh.blenMaterialList = mats + my_mesh.blenTextures = list(texture_mapping_local.keys()) + + # if only 1 null texture then empty the list + if len(my_mesh.blenTextures) == 1 and my_mesh.blenTextures[0] == None: + my_mesh.blenTextures = [] + + my_mesh.fbxArm = armob # replace with my_object_generic armature instance later + my_mesh.fbxBoneParent = blenParentBoneName # replace with my_bone instance later + + ob_meshes.append( my_mesh ) + + # not forgetting to free dupli_list + if ob_base.dupli_list: ob_base.free_dupli_list() + + + if EXP_ARMATURE: + # now we have the meshes, restore the rest arm position + for i, arm in enumerate(bpy.data.armatures): + arm.rest_position = ob_arms_orig_rest[i] # arm.restPosition = ob_arms_orig_rest[i] - - if ob_arms_orig_rest: - for ob_base in bpy.data.objects: - if ob_base.type == 'ARMATURE': + + if ob_arms_orig_rest: + for ob_base in bpy.data.objects: + if ob_base.type == 'ARMATURE': # if ob_base.type == 'Armature': - ob_base.make_display_list() + ob_base.make_display_list() # ob_base.makeDisplayList() - # This causes the makeDisplayList command to effect the mesh - sce.set_frame(sce.current_frame) + # This causes the makeDisplayList command to effect the mesh + sce.set_frame(sce.current_frame) # Blender.Set('curframe', Blender.Get('curframe')) - - del tmp_ob_type, tmp_objects - - # now we have collected all armatures, add bones - for i, ob in enumerate(ob_arms): - - ob_arms[i] = my_arm = my_object_generic(ob) - - my_arm.fbxBones = [] - my_arm.blenData = ob.data - if ob.animation_data: - my_arm.blenAction = ob.animation_data.action - else: - my_arm.blenAction = None + + del tmp_ob_type, tmp_objects + + # now we have collected all armatures, add bones + for i, ob in enumerate(ob_arms): + + ob_arms[i] = my_arm = my_object_generic(ob) + + my_arm.fbxBones = [] + my_arm.blenData = ob.data + if ob.animation_data: + my_arm.blenAction = ob.animation_data.action + else: + my_arm.blenAction = None # my_arm.blenAction = ob.action - my_arm.blenActionList = [] - - # fbxName, blenderObject, my_bones, blenderActions - #ob_arms[i] = fbxArmObName, ob, arm_my_bones, (ob.action, []) - - for bone in my_arm.blenData.bones: + my_arm.blenActionList = [] + + # fbxName, blenderObject, my_bones, blenderActions + #ob_arms[i] = fbxArmObName, ob, arm_my_bones, (ob.action, []) + + for bone in my_arm.blenData.bones: # for bone in my_arm.blenData.bones.values(): - my_bone = my_bone_class(bone, my_arm) - my_arm.fbxBones.append( my_bone ) - ob_bones.append( my_bone ) - - # add the meshes to the bones and replace the meshes armature with own armature class - #for obname, ob, mtx, me, mats, arm, armname in ob_meshes: - for my_mesh in ob_meshes: - # Replace - # ...this could be sped up with dictionary mapping but its unlikely for - # it ever to be a bottleneck - (would need 100+ meshes using armatures) - if my_mesh.fbxArm: - for my_arm in ob_arms: - if my_arm.blenObject == my_mesh.fbxArm: - my_mesh.fbxArm = my_arm - break - - for my_bone in ob_bones: - - # The mesh uses this bones armature! - if my_bone.fbxArm == my_mesh.fbxArm: - my_bone.blenMeshes[my_mesh.fbxName] = me - - - # parent bone: replace bone names with our class instances - # my_mesh.fbxBoneParent is None or a blender bone name initialy, replacing if the names match. - if my_mesh.fbxBoneParent == my_bone.blenName: - my_mesh.fbxBoneParent = my_bone - - bone_deformer_count = 0 # count how many bones deform a mesh - my_bone_blenParent = None - for my_bone in ob_bones: - my_bone_blenParent = my_bone.blenBone.parent - if my_bone_blenParent: - for my_bone_parent in ob_bones: - # Note 2.45rc2 you can compare bones normally - if my_bone_blenParent.name == my_bone_parent.blenName and my_bone.fbxArm == my_bone_parent.fbxArm: - my_bone.parent = my_bone_parent - break - - # Not used at the moment - # my_bone.calcRestMatrixLocal() - bone_deformer_count += len(my_bone.blenMeshes) - - del my_bone_blenParent - - - # Build blenObject -> fbxObject mapping - # this is needed for groups as well as fbxParenting + my_bone = my_bone_class(bone, my_arm) + my_arm.fbxBones.append( my_bone ) + ob_bones.append( my_bone ) + + # add the meshes to the bones and replace the meshes armature with own armature class + #for obname, ob, mtx, me, mats, arm, armname in ob_meshes: + for my_mesh in ob_meshes: + # Replace + # ...this could be sped up with dictionary mapping but its unlikely for + # it ever to be a bottleneck - (would need 100+ meshes using armatures) + if my_mesh.fbxArm: + for my_arm in ob_arms: + if my_arm.blenObject == my_mesh.fbxArm: + my_mesh.fbxArm = my_arm + break + + for my_bone in ob_bones: + + # The mesh uses this bones armature! + if my_bone.fbxArm == my_mesh.fbxArm: + my_bone.blenMeshes[my_mesh.fbxName] = me + + + # parent bone: replace bone names with our class instances + # my_mesh.fbxBoneParent is None or a blender bone name initialy, replacing if the names match. + if my_mesh.fbxBoneParent == my_bone.blenName: + my_mesh.fbxBoneParent = my_bone + + bone_deformer_count = 0 # count how many bones deform a mesh + my_bone_blenParent = None + for my_bone in ob_bones: + my_bone_blenParent = my_bone.blenBone.parent + if my_bone_blenParent: + for my_bone_parent in ob_bones: + # Note 2.45rc2 you can compare bones normally + if my_bone_blenParent.name == my_bone_parent.blenName and my_bone.fbxArm == my_bone_parent.fbxArm: + my_bone.parent = my_bone_parent + break + + # Not used at the moment + # my_bone.calcRestMatrixLocal() + bone_deformer_count += len(my_bone.blenMeshes) + + del my_bone_blenParent + + + # Build blenObject -> fbxObject mapping + # this is needed for groups as well as fbxParenting # for ob in bpy.data.objects: ob.tag = False # bpy.data.objects.tag = False - # using a list of object names for tagging (Arystan) - tagged_objects = [] + # using a list of object names for tagging (Arystan) + tagged_objects = [] - tmp_obmapping = {} - for ob_generic in ob_all_typegroups: - for ob_base in ob_generic: - tagged_objects.append(ob_base.blenObject.name) + tmp_obmapping = {} + for ob_generic in ob_all_typegroups: + for ob_base in ob_generic: + tagged_objects.append(ob_base.blenObject.name) # ob_base.blenObject.tag = True - tmp_obmapping[ob_base.blenObject] = ob_base - - # Build Groups from objects we export - for blenGroup in bpy.data.groups: - fbxGroupName = None - for ob in blenGroup.objects: - if ob.name in tagged_objects: + tmp_obmapping[ob_base.blenObject] = ob_base + + # Build Groups from objects we export + for blenGroup in bpy.data.groups: + fbxGroupName = None + for ob in blenGroup.objects: + if ob.name in tagged_objects: # if ob.tag: - if fbxGroupName == None: - fbxGroupName = sane_groupname(blenGroup) - groups.append((fbxGroupName, blenGroup)) - - tmp_obmapping[ob].fbxGroupNames.append(fbxGroupName) # also adds to the objects fbxGroupNames - - groups.sort() # not really needed - - # Assign parents using this mapping - for ob_generic in ob_all_typegroups: - for my_ob in ob_generic: - parent = my_ob.blenObject.parent - if parent and parent.name in tagged_objects: # does it exist and is it in the mapping + if fbxGroupName == None: + fbxGroupName = sane_groupname(blenGroup) + groups.append((fbxGroupName, blenGroup)) + + tmp_obmapping[ob].fbxGroupNames.append(fbxGroupName) # also adds to the objects fbxGroupNames + + groups.sort() # not really needed + + # Assign parents using this mapping + for ob_generic in ob_all_typegroups: + for my_ob in ob_generic: + parent = my_ob.blenObject.parent + if parent and parent.name in tagged_objects: # does it exist and is it in the mapping # if parent and parent.tag: # does it exist and is it in the mapping - my_ob.fbxParent = tmp_obmapping[parent] - - - del tmp_obmapping - # Finished finding groups we use - - - materials = [(sane_matname(mat_tex_pair), mat_tex_pair) for mat_tex_pair in materials.keys()] - textures = [(sane_texname(tex), tex) for tex in textures.keys() if tex] - materials.sort() # sort by name - textures.sort() - - camera_count = 8 - file.write(''' + my_ob.fbxParent = tmp_obmapping[parent] + + + del tmp_obmapping + # Finished finding groups we use + + + materials = [(sane_matname(mat_tex_pair), mat_tex_pair) for mat_tex_pair in materials.keys()] + textures = [(sane_texname(tex), tex) for tex in textures.keys() if tex] + materials.sort() # sort by name + textures.sort() + + camera_count = 8 + file.write(''' ; Object definitions ;------------------------------------------------------------------ Definitions: { - Version: 100 - Count: %i''' % (\ - 1+1+camera_count+\ - len(ob_meshes)+\ - len(ob_lights)+\ - len(ob_cameras)+\ - len(ob_arms)+\ - len(ob_null)+\ - len(ob_bones)+\ - bone_deformer_count+\ - len(materials)+\ - (len(textures)*2))) # add 1 for the root model 1 for global settings - - del bone_deformer_count - - file.write(''' - ObjectType: "Model" { - Count: %i - }''' % (\ - 1+camera_count+\ - len(ob_meshes)+\ - len(ob_lights)+\ - len(ob_cameras)+\ - len(ob_arms)+\ - len(ob_null)+\ - len(ob_bones))) # add 1 for the root model - - file.write(''' - ObjectType: "Geometry" { - Count: %i - }''' % len(ob_meshes)) - - if materials: - file.write(''' - ObjectType: "Material" { - Count: %i - }''' % len(materials)) - - if textures: - file.write(''' - ObjectType: "Texture" { - Count: %i - }''' % len(textures)) # add 1 for an empty tex - file.write(''' - ObjectType: "Video" { - Count: %i - }''' % len(textures)) # add 1 for an empty tex - - tmp = 0 - # Add deformer nodes - for my_mesh in ob_meshes: - if my_mesh.fbxArm: - tmp+=1 - - # Add subdeformers - for my_bone in ob_bones: - tmp += len(my_bone.blenMeshes) - - if tmp: - file.write(''' - ObjectType: "Deformer" { - Count: %i - }''' % tmp) - del tmp - - # we could avoid writing this possibly but for now just write it - - file.write(''' - ObjectType: "Pose" { - Count: 1 - }''') - - if groups: - file.write(''' - ObjectType: "GroupSelection" { - Count: %i - }''' % len(groups)) - - file.write(''' - ObjectType: "GlobalSettings" { - Count: 1 - } + Version: 100 + Count: %i''' % (\ + 1+1+camera_count+\ + len(ob_meshes)+\ + len(ob_lights)+\ + len(ob_cameras)+\ + len(ob_arms)+\ + len(ob_null)+\ + len(ob_bones)+\ + bone_deformer_count+\ + len(materials)+\ + (len(textures)*2))) # add 1 for the root model 1 for global settings + + del bone_deformer_count + + file.write(''' + ObjectType: "Model" { + Count: %i + }''' % (\ + 1+camera_count+\ + len(ob_meshes)+\ + len(ob_lights)+\ + len(ob_cameras)+\ + len(ob_arms)+\ + len(ob_null)+\ + len(ob_bones))) # add 1 for the root model + + file.write(''' + ObjectType: "Geometry" { + Count: %i + }''' % len(ob_meshes)) + + if materials: + file.write(''' + ObjectType: "Material" { + Count: %i + }''' % len(materials)) + + if textures: + file.write(''' + ObjectType: "Texture" { + Count: %i + }''' % len(textures)) # add 1 for an empty tex + file.write(''' + ObjectType: "Video" { + Count: %i + }''' % len(textures)) # add 1 for an empty tex + + tmp = 0 + # Add deformer nodes + for my_mesh in ob_meshes: + if my_mesh.fbxArm: + tmp+=1 + + # Add subdeformers + for my_bone in ob_bones: + tmp += len(my_bone.blenMeshes) + + if tmp: + file.write(''' + ObjectType: "Deformer" { + Count: %i + }''' % tmp) + del tmp + + # we could avoid writing this possibly but for now just write it + + file.write(''' + ObjectType: "Pose" { + Count: 1 + }''') + + if groups: + file.write(''' + ObjectType: "GroupSelection" { + Count: %i + }''' % len(groups)) + + file.write(''' + ObjectType: "GlobalSettings" { + Count: 1 + } }''') - file.write(''' + file.write(''' ; Object properties ;------------------------------------------------------------------ Objects: {''') - - # To comply with other FBX FILES - write_camera_switch() - - # Write the null object - write_null(None, 'blend_root')# , GLOBAL_MATRIX) - - for my_null in ob_null: - write_null(my_null) - - for my_arm in ob_arms: - write_null(my_arm) - - for my_cam in ob_cameras: - write_camera(my_cam) - - for my_light in ob_lights: - write_light(my_light) - - for my_mesh in ob_meshes: - write_mesh(my_mesh) - - #for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - write_bone(my_bone) - - write_camera_default() - - for matname, (mat, tex) in materials: - write_material(matname, mat) # We only need to have a material per image pair, but no need to write any image info into the material (dumb fbx standard) - - # each texture uses a video, odd - for texname, tex in textures: - write_video(texname, tex) - i = 0 - for texname, tex in textures: - write_texture(texname, tex, i) - i+=1 - - for groupname, group in groups: - write_group(groupname) - - # NOTE - c4d and motionbuilder dont need normalized weights, but deep-exploration 5 does and (max?) do. - - # Write armature modifiers - # TODO - add another MODEL? - because of this skin definition. - for my_mesh in ob_meshes: - if my_mesh.fbxArm: - write_deformer_skin(my_mesh.fbxName) - - # Get normalized weights for temorary use - if my_mesh.fbxBoneParent: - weights = None - else: - weights = meshNormalizedWeights(my_mesh.blenObject) + + # To comply with other FBX FILES + write_camera_switch() + + # Write the null object + write_null(None, 'blend_root')# , GLOBAL_MATRIX) + + for my_null in ob_null: + write_null(my_null) + + for my_arm in ob_arms: + write_null(my_arm) + + for my_cam in ob_cameras: + write_camera(my_cam) + + for my_light in ob_lights: + write_light(my_light) + + for my_mesh in ob_meshes: + write_mesh(my_mesh) + + #for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + write_bone(my_bone) + + write_camera_default() + + for matname, (mat, tex) in materials: + write_material(matname, mat) # We only need to have a material per image pair, but no need to write any image info into the material (dumb fbx standard) + + # each texture uses a video, odd + for texname, tex in textures: + write_video(texname, tex) + i = 0 + for texname, tex in textures: + write_texture(texname, tex, i) + i+=1 + + for groupname, group in groups: + write_group(groupname) + + # NOTE - c4d and motionbuilder dont need normalized weights, but deep-exploration 5 does and (max?) do. + + # Write armature modifiers + # TODO - add another MODEL? - because of this skin definition. + for my_mesh in ob_meshes: + if my_mesh.fbxArm: + write_deformer_skin(my_mesh.fbxName) + + # Get normalized weights for temorary use + if my_mesh.fbxBoneParent: + weights = None + else: + weights = meshNormalizedWeights(my_mesh.blenObject) # weights = meshNormalizedWeights(my_mesh.blenData) - - #for bonename, bone, obname, bone_mesh, armob in ob_bones: - for my_bone in ob_bones: - if me in iter(my_bone.blenMeshes.values()): - write_sub_deformer_skin(my_mesh, my_bone, weights) - - # Write pose's really weired, only needed when an armature and mesh are used together - # each by themselves dont need pose data. for now only pose meshes and bones - - file.write(''' - Pose: "Pose::BIND_POSES", "BindPose" { - Type: "BindPose" - Version: 100 - Properties60: { - } - NbPoseNodes: ''') - file.write(str(len(pose_items))) - - - for fbxName, matrix in pose_items: - file.write('\n\t\tPoseNode: {') - file.write('\n\t\t\tNode: "Model::%s"' % fbxName ) - if matrix: file.write('\n\t\t\tMatrix: %s' % mat4x4str(matrix)) - else: file.write('\n\t\t\tMatrix: %s' % mat4x4str(mtx4_identity)) - file.write('\n\t\t}') - - file.write('\n\t}') - - - # Finish Writing Objects - # Write global settings - file.write(''' - GlobalSettings: { - Version: 1000 - Properties60: { - Property: "UpAxis", "int", "",1 - Property: "UpAxisSign", "int", "",1 - Property: "FrontAxis", "int", "",2 - Property: "FrontAxisSign", "int", "",1 - Property: "CoordAxis", "int", "",0 - Property: "CoordAxisSign", "int", "",1 - Property: "UnitScaleFactor", "double", "",100 - } - } -''') - file.write('}') - - file.write(''' + + #for bonename, bone, obname, bone_mesh, armob in ob_bones: + for my_bone in ob_bones: + if me in iter(my_bone.blenMeshes.values()): + write_sub_deformer_skin(my_mesh, my_bone, weights) + + # Write pose's really weired, only needed when an armature and mesh are used together + # each by themselves dont need pose data. for now only pose meshes and bones + + file.write(''' + Pose: "Pose::BIND_POSES", "BindPose" { + Type: "BindPose" + Version: 100 + Properties60: { + } + NbPoseNodes: ''') + file.write(str(len(pose_items))) + + + for fbxName, matrix in pose_items: + file.write('\n\t\tPoseNode: {') + file.write('\n\t\t\tNode: "Model::%s"' % fbxName ) + if matrix: file.write('\n\t\t\tMatrix: %s' % mat4x4str(matrix)) + else: file.write('\n\t\t\tMatrix: %s' % mat4x4str(mtx4_identity)) + file.write('\n\t\t}') + + file.write('\n\t}') + + + # Finish Writing Objects + # Write global settings + file.write(''' + GlobalSettings: { + Version: 1000 + Properties60: { + Property: "UpAxis", "int", "",1 + Property: "UpAxisSign", "int", "",1 + Property: "FrontAxis", "int", "",2 + Property: "FrontAxisSign", "int", "",1 + Property: "CoordAxis", "int", "",0 + Property: "CoordAxisSign", "int", "",1 + Property: "UnitScaleFactor", "double", "",100 + } + } +''') + file.write('}') + + file.write(''' ; Object relations ;------------------------------------------------------------------ Relations: {''') - file.write('\n\tModel: "Model::blend_root", "Null" {\n\t}') - - for my_null in ob_null: - file.write('\n\tModel: "Model::%s", "Null" {\n\t}' % my_null.fbxName) - - for my_arm in ob_arms: - file.write('\n\tModel: "Model::%s", "Null" {\n\t}' % my_arm.fbxName) - - for my_mesh in ob_meshes: - file.write('\n\tModel: "Model::%s", "Mesh" {\n\t}' % my_mesh.fbxName) - - # TODO - limbs can have the same name for multiple armatures, should prefix. - #for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - file.write('\n\tModel: "Model::%s", "Limb" {\n\t}' % my_bone.fbxName) - - for my_cam in ob_cameras: - file.write('\n\tModel: "Model::%s", "Camera" {\n\t}' % my_cam.fbxName) - - for my_light in ob_lights: - file.write('\n\tModel: "Model::%s", "Light" {\n\t}' % my_light.fbxName) - - file.write(''' - Model: "Model::Producer Perspective", "Camera" { - } - Model: "Model::Producer Top", "Camera" { - } - Model: "Model::Producer Bottom", "Camera" { - } - Model: "Model::Producer Front", "Camera" { - } - Model: "Model::Producer Back", "Camera" { - } - Model: "Model::Producer Right", "Camera" { - } - Model: "Model::Producer Left", "Camera" { - } - Model: "Model::Camera Switcher", "CameraSwitcher" { - }''') - - for matname, (mat, tex) in materials: - file.write('\n\tMaterial: "Material::%s", "" {\n\t}' % matname) - - if textures: - for texname, tex in textures: - file.write('\n\tTexture: "Texture::%s", "TextureVideoClip" {\n\t}' % texname) - for texname, tex in textures: - file.write('\n\tVideo: "Video::%s", "Clip" {\n\t}' % texname) - - # deformers - modifiers - for my_mesh in ob_meshes: - if my_mesh.fbxArm: - file.write('\n\tDeformer: "Deformer::Skin %s", "Skin" {\n\t}' % my_mesh.fbxName) - - #for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - for fbxMeshObName in my_bone.blenMeshes: # .keys() - fbxMeshObName - # is this bone effecting a mesh? - file.write('\n\tDeformer: "SubDeformer::Cluster %s %s", "Cluster" {\n\t}' % (fbxMeshObName, my_bone.fbxName)) - - # This should be at the end - # file.write('\n\tPose: "Pose::BIND_POSES", "BindPose" {\n\t}') - - for groupname, group in groups: - file.write('\n\tGroupSelection: "GroupSelection::%s", "Default" {\n\t}' % groupname) - - file.write('\n}') - file.write(''' + file.write('\n\tModel: "Model::blend_root", "Null" {\n\t}') + + for my_null in ob_null: + file.write('\n\tModel: "Model::%s", "Null" {\n\t}' % my_null.fbxName) + + for my_arm in ob_arms: + file.write('\n\tModel: "Model::%s", "Null" {\n\t}' % my_arm.fbxName) + + for my_mesh in ob_meshes: + file.write('\n\tModel: "Model::%s", "Mesh" {\n\t}' % my_mesh.fbxName) + + # TODO - limbs can have the same name for multiple armatures, should prefix. + #for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + file.write('\n\tModel: "Model::%s", "Limb" {\n\t}' % my_bone.fbxName) + + for my_cam in ob_cameras: + file.write('\n\tModel: "Model::%s", "Camera" {\n\t}' % my_cam.fbxName) + + for my_light in ob_lights: + file.write('\n\tModel: "Model::%s", "Light" {\n\t}' % my_light.fbxName) + + file.write(''' + Model: "Model::Producer Perspective", "Camera" { + } + Model: "Model::Producer Top", "Camera" { + } + Model: "Model::Producer Bottom", "Camera" { + } + Model: "Model::Producer Front", "Camera" { + } + Model: "Model::Producer Back", "Camera" { + } + Model: "Model::Producer Right", "Camera" { + } + Model: "Model::Producer Left", "Camera" { + } + Model: "Model::Camera Switcher", "CameraSwitcher" { + }''') + + for matname, (mat, tex) in materials: + file.write('\n\tMaterial: "Material::%s", "" {\n\t}' % matname) + + if textures: + for texname, tex in textures: + file.write('\n\tTexture: "Texture::%s", "TextureVideoClip" {\n\t}' % texname) + for texname, tex in textures: + file.write('\n\tVideo: "Video::%s", "Clip" {\n\t}' % texname) + + # deformers - modifiers + for my_mesh in ob_meshes: + if my_mesh.fbxArm: + file.write('\n\tDeformer: "Deformer::Skin %s", "Skin" {\n\t}' % my_mesh.fbxName) + + #for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + for fbxMeshObName in my_bone.blenMeshes: # .keys() - fbxMeshObName + # is this bone effecting a mesh? + file.write('\n\tDeformer: "SubDeformer::Cluster %s %s", "Cluster" {\n\t}' % (fbxMeshObName, my_bone.fbxName)) + + # This should be at the end + # file.write('\n\tPose: "Pose::BIND_POSES", "BindPose" {\n\t}') + + for groupname, group in groups: + file.write('\n\tGroupSelection: "GroupSelection::%s", "Default" {\n\t}' % groupname) + + file.write('\n}') + file.write(''' ; Object connections ;------------------------------------------------------------------ Connections: {''') - - # NOTE - The FBX SDK dosnt care about the order but some importers DO! - # for instance, defining the material->mesh connection - # before the mesh->blend_root crashes cinema4d - - - # write the fake root node - file.write('\n\tConnect: "OO", "Model::blend_root", "Model::Scene"') - - for ob_generic in ob_all_typegroups: # all blender 'Object's we support - for my_ob in ob_generic: - if my_ob.fbxParent: - file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_ob.fbxName, my_ob.fbxParent.fbxName)) - else: - file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_ob.fbxName) - - if materials: - for my_mesh in ob_meshes: - # Connect all materials to all objects, not good form but ok for now. - for mat, tex in my_mesh.blenMaterials: - if mat: mat_name = mat.name - else: mat_name = None - - if tex: tex_name = tex.name - else: tex_name = None - - file.write('\n\tConnect: "OO", "Material::%s", "Model::%s"' % (sane_name_mapping_mat[mat_name, tex_name], my_mesh.fbxName)) - - if textures: - for my_mesh in ob_meshes: - if my_mesh.blenTextures: - # file.write('\n\tConnect: "OO", "Texture::_empty_", "Model::%s"' % my_mesh.fbxName) - for tex in my_mesh.blenTextures: - if tex: - file.write('\n\tConnect: "OO", "Texture::%s", "Model::%s"' % (sane_name_mapping_tex[tex.name], my_mesh.fbxName)) - - for texname, tex in textures: - file.write('\n\tConnect: "OO", "Video::%s", "Texture::%s"' % (texname, texname)) - - for my_mesh in ob_meshes: - if my_mesh.fbxArm: - file.write('\n\tConnect: "OO", "Deformer::Skin %s", "Model::%s"' % (my_mesh.fbxName, my_mesh.fbxName)) - - #for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - for fbxMeshObName in my_bone.blenMeshes: # .keys() - file.write('\n\tConnect: "OO", "SubDeformer::Cluster %s %s", "Deformer::Skin %s"' % (fbxMeshObName, my_bone.fbxName, fbxMeshObName)) - - # limbs -> deformers - # for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - for fbxMeshObName in my_bone.blenMeshes: # .keys() - file.write('\n\tConnect: "OO", "Model::%s", "SubDeformer::Cluster %s %s"' % (my_bone.fbxName, fbxMeshObName, my_bone.fbxName)) - - - #for bonename, bone, obname, me, armob in ob_bones: - for my_bone in ob_bones: - # Always parent to armature now - if my_bone.parent: - file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_bone.fbxName, my_bone.parent.fbxName) ) - else: - # the armature object is written as an empty and all root level bones connect to it - file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_bone.fbxName, my_bone.fbxArm.fbxName) ) - - # groups - if groups: - for ob_generic in ob_all_typegroups: - for ob_base in ob_generic: - for fbxGroupName in ob_base.fbxGroupNames: - file.write('\n\tConnect: "OO", "Model::%s", "GroupSelection::%s"' % (ob_base.fbxName, fbxGroupName)) - - for my_arm in ob_arms: - file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_arm.fbxName) - - file.write('\n}') - - - # Needed for scene footer as well as animation - render = sce.render_data + + # NOTE - The FBX SDK dosnt care about the order but some importers DO! + # for instance, defining the material->mesh connection + # before the mesh->blend_root crashes cinema4d + + + # write the fake root node + file.write('\n\tConnect: "OO", "Model::blend_root", "Model::Scene"') + + for ob_generic in ob_all_typegroups: # all blender 'Object's we support + for my_ob in ob_generic: + if my_ob.fbxParent: + file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_ob.fbxName, my_ob.fbxParent.fbxName)) + else: + file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_ob.fbxName) + + if materials: + for my_mesh in ob_meshes: + # Connect all materials to all objects, not good form but ok for now. + for mat, tex in my_mesh.blenMaterials: + if mat: mat_name = mat.name + else: mat_name = None + + if tex: tex_name = tex.name + else: tex_name = None + + file.write('\n\tConnect: "OO", "Material::%s", "Model::%s"' % (sane_name_mapping_mat[mat_name, tex_name], my_mesh.fbxName)) + + if textures: + for my_mesh in ob_meshes: + if my_mesh.blenTextures: + # file.write('\n\tConnect: "OO", "Texture::_empty_", "Model::%s"' % my_mesh.fbxName) + for tex in my_mesh.blenTextures: + if tex: + file.write('\n\tConnect: "OO", "Texture::%s", "Model::%s"' % (sane_name_mapping_tex[tex.name], my_mesh.fbxName)) + + for texname, tex in textures: + file.write('\n\tConnect: "OO", "Video::%s", "Texture::%s"' % (texname, texname)) + + for my_mesh in ob_meshes: + if my_mesh.fbxArm: + file.write('\n\tConnect: "OO", "Deformer::Skin %s", "Model::%s"' % (my_mesh.fbxName, my_mesh.fbxName)) + + #for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + for fbxMeshObName in my_bone.blenMeshes: # .keys() + file.write('\n\tConnect: "OO", "SubDeformer::Cluster %s %s", "Deformer::Skin %s"' % (fbxMeshObName, my_bone.fbxName, fbxMeshObName)) + + # limbs -> deformers + # for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + for fbxMeshObName in my_bone.blenMeshes: # .keys() + file.write('\n\tConnect: "OO", "Model::%s", "SubDeformer::Cluster %s %s"' % (my_bone.fbxName, fbxMeshObName, my_bone.fbxName)) + + + #for bonename, bone, obname, me, armob in ob_bones: + for my_bone in ob_bones: + # Always parent to armature now + if my_bone.parent: + file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_bone.fbxName, my_bone.parent.fbxName) ) + else: + # the armature object is written as an empty and all root level bones connect to it + file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_bone.fbxName, my_bone.fbxArm.fbxName) ) + + # groups + if groups: + for ob_generic in ob_all_typegroups: + for ob_base in ob_generic: + for fbxGroupName in ob_base.fbxGroupNames: + file.write('\n\tConnect: "OO", "Model::%s", "GroupSelection::%s"' % (ob_base.fbxName, fbxGroupName)) + + for my_arm in ob_arms: + file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_arm.fbxName) + + file.write('\n}') + + + # Needed for scene footer as well as animation + render = sce.render_data # render = sce.render - - # from the FBX sdk - #define KTIME_ONE_SECOND KTime (K_LONGLONG(46186158000)) - def fbx_time(t): - # 0.5 + val is the same as rounding. - return int(0.5 + ((t/fps) * 46186158000)) - - fps = float(render.fps) - start = sce.start_frame + + # from the FBX sdk + #define KTIME_ONE_SECOND KTime (K_LONGLONG(46186158000)) + def fbx_time(t): + # 0.5 + val is the same as rounding. + return int(0.5 + ((t/fps) * 46186158000)) + + fps = float(render.fps) + start = sce.start_frame # start = render.sFrame - end = sce.end_frame + end = sce.end_frame # end = render.eFrame - if end < start: start, end = end, start - if start==end: ANIM_ENABLE = False - - # animations for these object types - ob_anim_lists = ob_bones, ob_meshes, ob_null, ob_cameras, ob_lights, ob_arms - - if ANIM_ENABLE and [tmp for tmp in ob_anim_lists if tmp]: - - frame_orig = sce.current_frame + if end < start: start, end = end, start + if start==end: ANIM_ENABLE = False + + # animations for these object types + ob_anim_lists = ob_bones, ob_meshes, ob_null, ob_cameras, ob_lights, ob_arms + + if ANIM_ENABLE and [tmp for tmp in ob_anim_lists if tmp]: + + frame_orig = sce.current_frame # frame_orig = Blender.Get('curframe') - - if ANIM_OPTIMIZE: - ANIM_OPTIMIZE_PRECISSION_FLOAT = 0.1 ** ANIM_OPTIMIZE_PRECISSION - - # default action, when no actions are avaioable - tmp_actions = [None] # None is the default action - blenActionDefault = None - action_lastcompat = None - - # instead of tagging - tagged_actions = [] - - if ANIM_ACTION_ALL: + + if ANIM_OPTIMIZE: + ANIM_OPTIMIZE_PRECISSION_FLOAT = 0.1 ** ANIM_OPTIMIZE_PRECISSION + + # default action, when no actions are avaioable + tmp_actions = [None] # None is the default action + blenActionDefault = None + action_lastcompat = None + + # instead of tagging + tagged_actions = [] + + if ANIM_ACTION_ALL: # bpy.data.actions.tag = False - tmp_actions = list(bpy.data.actions) - - - # find which actions are compatible with the armatures - # blenActions is not yet initialized so do it now. - tmp_act_count = 0 - for my_arm in ob_arms: - - # get the default name - if not blenActionDefault: - blenActionDefault = my_arm.blenAction - - arm_bone_names = set([my_bone.blenName for my_bone in my_arm.fbxBones]) - - for action in tmp_actions: - - action_chan_names = arm_bone_names.intersection( set([g.name for g in action.groups]) ) + tmp_actions = list(bpy.data.actions) + + + # find which actions are compatible with the armatures + # blenActions is not yet initialized so do it now. + tmp_act_count = 0 + for my_arm in ob_arms: + + # get the default name + if not blenActionDefault: + blenActionDefault = my_arm.blenAction + + arm_bone_names = set([my_bone.blenName for my_bone in my_arm.fbxBones]) + + for action in tmp_actions: + + action_chan_names = arm_bone_names.intersection( set([g.name for g in action.groups]) ) # action_chan_names = arm_bone_names.intersection( set(action.getChannelNames()) ) - - if action_chan_names: # at least one channel matches. - my_arm.blenActionList.append(action) - tagged_actions.append(action.name) + + if action_chan_names: # at least one channel matches. + my_arm.blenActionList.append(action) + tagged_actions.append(action.name) # action.tag = True - tmp_act_count += 1 - - # incase there is no actions applied to armatures - action_lastcompat = action - - if tmp_act_count: - # unlikely to ever happen but if no actions applied to armatures, just use the last compatible armature. - if not blenActionDefault: - blenActionDefault = action_lastcompat - - del action_lastcompat - - file.write(''' + tmp_act_count += 1 + + # incase there is no actions applied to armatures + action_lastcompat = action + + if tmp_act_count: + # unlikely to ever happen but if no actions applied to armatures, just use the last compatible armature. + if not blenActionDefault: + blenActionDefault = action_lastcompat + + del action_lastcompat + + file.write(''' ;Takes and animation section ;---------------------------------------------------- Takes: {''') - - if blenActionDefault: - file.write('\n\tCurrent: "%s"' % sane_takename(blenActionDefault)) - else: - file.write('\n\tCurrent: "Default Take"') - - for blenAction in tmp_actions: - # we have tagged all actious that are used be selected armatures - if blenAction: - if blenAction.name in tagged_actions: + + if blenActionDefault: + file.write('\n\tCurrent: "%s"' % sane_takename(blenActionDefault)) + else: + file.write('\n\tCurrent: "Default Take"') + + for blenAction in tmp_actions: + # we have tagged all actious that are used be selected armatures + if blenAction: + if blenAction.name in tagged_actions: # if blenAction.tag: - print('\taction: "%s" exporting...' % blenAction.name) - else: - print('\taction: "%s" has no armature using it, skipping' % blenAction.name) - continue - - if blenAction == None: - # Warning, this only accounts for tmp_actions being [None] - file.write('\n\tTake: "Default Take" {') - act_start = start - act_end = end - else: - # use existing name - if blenAction == blenActionDefault: # have we alredy got the name - file.write('\n\tTake: "%s" {' % sane_name_mapping_take[blenAction.name]) - else: - file.write('\n\tTake: "%s" {' % sane_takename(blenAction)) - - act_start, act_end = blenAction.get_frame_range() + print('\taction: "%s" exporting...' % blenAction.name) + else: + print('\taction: "%s" has no armature using it, skipping' % blenAction.name) + continue + + if blenAction == None: + # Warning, this only accounts for tmp_actions being [None] + file.write('\n\tTake: "Default Take" {') + act_start = start + act_end = end + else: + # use existing name + if blenAction == blenActionDefault: # have we alredy got the name + file.write('\n\tTake: "%s" {' % sane_name_mapping_take[blenAction.name]) + else: + file.write('\n\tTake: "%s" {' % sane_takename(blenAction)) + + act_start, act_end = blenAction.get_frame_range() # tmp = blenAction.getFrameNumbers() # if tmp: # act_start = min(tmp) @@ -2803,262 +2803,262 @@ Takes: {''') # # when an action has no length # act_start = start # act_end = end - - # Set the action active - for my_bone in ob_arms: - if blenAction in my_bone.blenActionList: - ob.action = blenAction - # print '\t\tSetting Action!', blenAction - # sce.update(1) - - file.write('\n\t\tFileName: "Default_Take.tak"') # ??? - not sure why this is needed - file.write('\n\t\tLocalTime: %i,%i' % (fbx_time(act_start-1), fbx_time(act_end-1))) # ??? - not sure why this is needed - file.write('\n\t\tReferenceTime: %i,%i' % (fbx_time(act_start-1), fbx_time(act_end-1))) # ??? - not sure why this is needed - - file.write(''' - - ;Models animation - ;----------------------------------------------------''') - - - # set pose data for all bones - # do this here incase the action changes - ''' - for my_bone in ob_bones: - my_bone.flushAnimData() - ''' - i = act_start - while i <= act_end: - sce.set_frame(i) + + # Set the action active + for my_bone in ob_arms: + if blenAction in my_bone.blenActionList: + ob.action = blenAction + # print '\t\tSetting Action!', blenAction + # sce.update(1) + + file.write('\n\t\tFileName: "Default_Take.tak"') # ??? - not sure why this is needed + file.write('\n\t\tLocalTime: %i,%i' % (fbx_time(act_start-1), fbx_time(act_end-1))) # ??? - not sure why this is needed + file.write('\n\t\tReferenceTime: %i,%i' % (fbx_time(act_start-1), fbx_time(act_end-1))) # ??? - not sure why this is needed + + file.write(''' + + ;Models animation + ;----------------------------------------------------''') + + + # set pose data for all bones + # do this here incase the action changes + ''' + for my_bone in ob_bones: + my_bone.flushAnimData() + ''' + i = act_start + while i <= act_end: + sce.set_frame(i) # Blender.Set('curframe', i) - for ob_generic in ob_anim_lists: - for my_ob in ob_generic: - #Blender.Window.RedrawAll() - if ob_generic == ob_meshes and my_ob.fbxArm: - # We cant animate armature meshes! - pass - else: - my_ob.setPoseFrame(i) - - i+=1 - - - #for bonename, bone, obname, me, armob in ob_bones: - for ob_generic in (ob_bones, ob_meshes, ob_null, ob_cameras, ob_lights, ob_arms): - - for my_ob in ob_generic: - - if ob_generic == ob_meshes and my_ob.fbxArm: - # do nothing, - pass - else: - - file.write('\n\t\tModel: "Model::%s" {' % my_ob.fbxName) # ??? - not sure why this is needed - file.write('\n\t\t\tVersion: 1.1') - file.write('\n\t\t\tChannel: "Transform" {') - - context_bone_anim_mats = [ (my_ob.getAnimParRelMatrix(frame), my_ob.getAnimParRelMatrixRot(frame)) for frame in range(act_start, act_end+1) ] - - # ---------------- - # ---------------- - for TX_LAYER, TX_CHAN in enumerate('TRS'): # transform, rotate, scale - - if TX_CHAN=='T': context_bone_anim_vecs = [mtx[0].translationPart() for mtx in context_bone_anim_mats] - elif TX_CHAN=='S': context_bone_anim_vecs = [mtx[0].scalePart() for mtx in context_bone_anim_mats] - elif TX_CHAN=='R': - # Was.... - # elif TX_CHAN=='R': context_bone_anim_vecs = [mtx[1].toEuler() for mtx in context_bone_anim_mats] - # - # ...but we need to use the previous euler for compatible conversion. - context_bone_anim_vecs = [] - prev_eul = None - for mtx in context_bone_anim_mats: - if prev_eul: prev_eul = mtx[1].toEuler(prev_eul) - else: prev_eul = mtx[1].toEuler() - context_bone_anim_vecs.append(eulerRadToDeg(prev_eul)) + for ob_generic in ob_anim_lists: + for my_ob in ob_generic: + #Blender.Window.RedrawAll() + if ob_generic == ob_meshes and my_ob.fbxArm: + # We cant animate armature meshes! + pass + else: + my_ob.setPoseFrame(i) + + i+=1 + + + #for bonename, bone, obname, me, armob in ob_bones: + for ob_generic in (ob_bones, ob_meshes, ob_null, ob_cameras, ob_lights, ob_arms): + + for my_ob in ob_generic: + + if ob_generic == ob_meshes and my_ob.fbxArm: + # do nothing, + pass + else: + + file.write('\n\t\tModel: "Model::%s" {' % my_ob.fbxName) # ??? - not sure why this is needed + file.write('\n\t\t\tVersion: 1.1') + file.write('\n\t\t\tChannel: "Transform" {') + + context_bone_anim_mats = [ (my_ob.getAnimParRelMatrix(frame), my_ob.getAnimParRelMatrixRot(frame)) for frame in range(act_start, act_end+1) ] + + # ---------------- + # ---------------- + for TX_LAYER, TX_CHAN in enumerate('TRS'): # transform, rotate, scale + + if TX_CHAN=='T': context_bone_anim_vecs = [mtx[0].translationPart() for mtx in context_bone_anim_mats] + elif TX_CHAN=='S': context_bone_anim_vecs = [mtx[0].scalePart() for mtx in context_bone_anim_mats] + elif TX_CHAN=='R': + # Was.... + # elif TX_CHAN=='R': context_bone_anim_vecs = [mtx[1].toEuler() for mtx in context_bone_anim_mats] + # + # ...but we need to use the previous euler for compatible conversion. + context_bone_anim_vecs = [] + prev_eul = None + for mtx in context_bone_anim_mats: + if prev_eul: prev_eul = mtx[1].toEuler(prev_eul) + else: prev_eul = mtx[1].toEuler() + context_bone_anim_vecs.append(eulerRadToDeg(prev_eul)) # context_bone_anim_vecs.append(prev_eul) - - file.write('\n\t\t\t\tChannel: "%s" {' % TX_CHAN) # translation - - for i in range(3): - # Loop on each axis of the bone - file.write('\n\t\t\t\t\tChannel: "%s" {'% ('XYZ'[i])) # translation - file.write('\n\t\t\t\t\t\tDefault: %.15f' % context_bone_anim_vecs[0][i] ) - file.write('\n\t\t\t\t\t\tKeyVer: 4005') - - if not ANIM_OPTIMIZE: - # Just write all frames, simple but in-eficient - file.write('\n\t\t\t\t\t\tKeyCount: %i' % (1 + act_end - act_start)) - file.write('\n\t\t\t\t\t\tKey: ') - frame = act_start - while frame <= act_end: - if frame!=act_start: - file.write(',') - - # Curve types are 'C,n' for constant, 'L' for linear - # C,n is for bezier? - linear is best for now so we can do simple keyframe removal - file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame-1), context_bone_anim_vecs[frame-act_start][i] )) - frame+=1 - else: - # remove unneeded keys, j is the frame, needed when some frames are removed. - context_bone_anim_keys = [ (vec[i], j) for j, vec in enumerate(context_bone_anim_vecs) ] - - # last frame to fisrt frame, missing 1 frame on either side. - # removeing in a backwards loop is faster - #for j in xrange( (act_end-act_start)-1, 0, -1 ): - # j = (act_end-act_start)-1 - j = len(context_bone_anim_keys)-2 - while j > 0 and len(context_bone_anim_keys) > 2: - # print j, len(context_bone_anim_keys) - # Is this key the same as the ones next to it? - - # co-linear horizontal... - if abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j-1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT and\ - abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j+1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT: - - del context_bone_anim_keys[j] - - else: - frame_range = float(context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j-1][1]) - frame_range_fac1 = (context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j][1]) / frame_range - frame_range_fac2 = 1.0 - frame_range_fac1 - - if abs(((context_bone_anim_keys[j-1][0]*frame_range_fac1 + context_bone_anim_keys[j+1][0]*frame_range_fac2)) - context_bone_anim_keys[j][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT: - del context_bone_anim_keys[j] - else: - j-=1 - - # keep the index below the list length - if j > len(context_bone_anim_keys)-2: - j = len(context_bone_anim_keys)-2 - - if len(context_bone_anim_keys) == 2 and context_bone_anim_keys[0][0] == context_bone_anim_keys[1][0]: - # This axis has no moton, its okay to skip KeyCount and Keys in this case - pass - else: - # We only need to write these if there is at least one - file.write('\n\t\t\t\t\t\tKeyCount: %i' % len(context_bone_anim_keys)) - file.write('\n\t\t\t\t\t\tKey: ') - for val, frame in context_bone_anim_keys: - if frame != context_bone_anim_keys[0][1]: # not the first - file.write(',') - # frame is alredy one less then blenders frame - file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame), val )) - - if i==0: file.write('\n\t\t\t\t\t\tColor: 1,0,0') - elif i==1: file.write('\n\t\t\t\t\t\tColor: 0,1,0') - elif i==2: file.write('\n\t\t\t\t\t\tColor: 0,0,1') - - file.write('\n\t\t\t\t\t}') - file.write('\n\t\t\t\t\tLayerType: %i' % (TX_LAYER+1) ) - file.write('\n\t\t\t\t}') - - # --------------- - - file.write('\n\t\t\t}') - file.write('\n\t\t}') - - # end the take - file.write('\n\t}') - - # end action loop. set original actions - # do this after every loop incase actions effect eachother. - for my_bone in ob_arms: - my_bone.blenObject.action = my_bone.blenAction - - file.write('\n}') - - sce.set_frame(frame_orig) + + file.write('\n\t\t\t\tChannel: "%s" {' % TX_CHAN) # translation + + for i in range(3): + # Loop on each axis of the bone + file.write('\n\t\t\t\t\tChannel: "%s" {'% ('XYZ'[i])) # translation + file.write('\n\t\t\t\t\t\tDefault: %.15f' % context_bone_anim_vecs[0][i] ) + file.write('\n\t\t\t\t\t\tKeyVer: 4005') + + if not ANIM_OPTIMIZE: + # Just write all frames, simple but in-eficient + file.write('\n\t\t\t\t\t\tKeyCount: %i' % (1 + act_end - act_start)) + file.write('\n\t\t\t\t\t\tKey: ') + frame = act_start + while frame <= act_end: + if frame!=act_start: + file.write(',') + + # Curve types are 'C,n' for constant, 'L' for linear + # C,n is for bezier? - linear is best for now so we can do simple keyframe removal + file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame-1), context_bone_anim_vecs[frame-act_start][i] )) + frame+=1 + else: + # remove unneeded keys, j is the frame, needed when some frames are removed. + context_bone_anim_keys = [ (vec[i], j) for j, vec in enumerate(context_bone_anim_vecs) ] + + # last frame to fisrt frame, missing 1 frame on either side. + # removeing in a backwards loop is faster + #for j in xrange( (act_end-act_start)-1, 0, -1 ): + # j = (act_end-act_start)-1 + j = len(context_bone_anim_keys)-2 + while j > 0 and len(context_bone_anim_keys) > 2: + # print j, len(context_bone_anim_keys) + # Is this key the same as the ones next to it? + + # co-linear horizontal... + if abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j-1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT and\ + abs(context_bone_anim_keys[j][0] - context_bone_anim_keys[j+1][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT: + + del context_bone_anim_keys[j] + + else: + frame_range = float(context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j-1][1]) + frame_range_fac1 = (context_bone_anim_keys[j+1][1] - context_bone_anim_keys[j][1]) / frame_range + frame_range_fac2 = 1.0 - frame_range_fac1 + + if abs(((context_bone_anim_keys[j-1][0]*frame_range_fac1 + context_bone_anim_keys[j+1][0]*frame_range_fac2)) - context_bone_anim_keys[j][0]) < ANIM_OPTIMIZE_PRECISSION_FLOAT: + del context_bone_anim_keys[j] + else: + j-=1 + + # keep the index below the list length + if j > len(context_bone_anim_keys)-2: + j = len(context_bone_anim_keys)-2 + + if len(context_bone_anim_keys) == 2 and context_bone_anim_keys[0][0] == context_bone_anim_keys[1][0]: + # This axis has no moton, its okay to skip KeyCount and Keys in this case + pass + else: + # We only need to write these if there is at least one + file.write('\n\t\t\t\t\t\tKeyCount: %i' % len(context_bone_anim_keys)) + file.write('\n\t\t\t\t\t\tKey: ') + for val, frame in context_bone_anim_keys: + if frame != context_bone_anim_keys[0][1]: # not the first + file.write(',') + # frame is alredy one less then blenders frame + file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame), val )) + + if i==0: file.write('\n\t\t\t\t\t\tColor: 1,0,0') + elif i==1: file.write('\n\t\t\t\t\t\tColor: 0,1,0') + elif i==2: file.write('\n\t\t\t\t\t\tColor: 0,0,1') + + file.write('\n\t\t\t\t\t}') + file.write('\n\t\t\t\t\tLayerType: %i' % (TX_LAYER+1) ) + file.write('\n\t\t\t\t}') + + # --------------- + + file.write('\n\t\t\t}') + file.write('\n\t\t}') + + # end the take + file.write('\n\t}') + + # end action loop. set original actions + # do this after every loop incase actions effect eachother. + for my_bone in ob_arms: + my_bone.blenObject.action = my_bone.blenAction + + file.write('\n}') + + sce.set_frame(frame_orig) # Blender.Set('curframe', frame_orig) - - else: - # no animation - file.write('\n;Takes and animation section') - file.write('\n;----------------------------------------------------') - file.write('\n') - file.write('\nTakes: {') - file.write('\n\tCurrent: ""') - file.write('\n}') - - - # write meshes animation - #for obname, ob, mtx, me, mats, arm, armname in ob_meshes: - - - # Clear mesh data Only when writing with modifiers applied - for me in meshes_to_clear: - bpy.data.remove_mesh(me) + + else: + # no animation + file.write('\n;Takes and animation section') + file.write('\n;----------------------------------------------------') + file.write('\n') + file.write('\nTakes: {') + file.write('\n\tCurrent: ""') + file.write('\n}') + + + # write meshes animation + #for obname, ob, mtx, me, mats, arm, armname in ob_meshes: + + + # Clear mesh data Only when writing with modifiers applied + for me in meshes_to_clear: + bpy.data.remove_mesh(me) # me.verts = None - - # --------------------------- Footer - if world: - m = world.mist - has_mist = m.enabled + + # --------------------------- Footer + if world: + m = world.mist + has_mist = m.enabled # has_mist = world.mode & 1 - mist_intense = m.intensity - mist_start = m.start - mist_end = m.depth - mist_height = m.height + mist_intense = m.intensity + mist_start = m.start + mist_end = m.depth + mist_height = m.height # mist_intense, mist_start, mist_end, mist_height = world.mist - world_hor = world.horizon_color + world_hor = world.horizon_color # world_hor = world.hor - else: - has_mist = mist_intense = mist_start = mist_end = mist_height = 0 - world_hor = 0,0,0 - - file.write('\n;Version 5 settings') - file.write('\n;------------------------------------------------------------------') - file.write('\n') - file.write('\nVersion5: {') - file.write('\n\tAmbientRenderSettings: {') - file.write('\n\t\tVersion: 101') - file.write('\n\t\tAmbientLightColor: %.1f,%.1f,%.1f,0' % tuple(world_amb)) - file.write('\n\t}') - file.write('\n\tFogOptions: {') - file.write('\n\t\tFlogEnable: %i' % has_mist) - file.write('\n\t\tFogMode: 0') - file.write('\n\t\tFogDensity: %.3f' % mist_intense) - file.write('\n\t\tFogStart: %.3f' % mist_start) - file.write('\n\t\tFogEnd: %.3f' % mist_end) - file.write('\n\t\tFogColor: %.1f,%.1f,%.1f,1' % tuple(world_hor)) - file.write('\n\t}') - file.write('\n\tSettings: {') - file.write('\n\t\tFrameRate: "%i"' % int(fps)) - file.write('\n\t\tTimeFormat: 1') - file.write('\n\t\tSnapOnFrames: 0') - file.write('\n\t\tReferenceTimeIndex: -1') - file.write('\n\t\tTimeLineStartTime: %i' % fbx_time(start-1)) - file.write('\n\t\tTimeLineStopTime: %i' % fbx_time(end-1)) - file.write('\n\t}') - file.write('\n\tRendererSetting: {') - file.write('\n\t\tDefaultCamera: "Producer Perspective"') - file.write('\n\t\tDefaultViewingMode: 0') - file.write('\n\t}') - file.write('\n}') - file.write('\n') - - # Incase sombody imports this, clean up by clearing global dicts - sane_name_mapping_ob.clear() - sane_name_mapping_mat.clear() - sane_name_mapping_tex.clear() - - ob_arms[:] = [] - ob_bones[:] = [] - ob_cameras[:] = [] - ob_lights[:] = [] - ob_meshes[:] = [] - ob_null[:] = [] - - - # copy images if enabled + else: + has_mist = mist_intense = mist_start = mist_end = mist_height = 0 + world_hor = 0,0,0 + + file.write('\n;Version 5 settings') + file.write('\n;------------------------------------------------------------------') + file.write('\n') + file.write('\nVersion5: {') + file.write('\n\tAmbientRenderSettings: {') + file.write('\n\t\tVersion: 101') + file.write('\n\t\tAmbientLightColor: %.1f,%.1f,%.1f,0' % tuple(world_amb)) + file.write('\n\t}') + file.write('\n\tFogOptions: {') + file.write('\n\t\tFlogEnable: %i' % has_mist) + file.write('\n\t\tFogMode: 0') + file.write('\n\t\tFogDensity: %.3f' % mist_intense) + file.write('\n\t\tFogStart: %.3f' % mist_start) + file.write('\n\t\tFogEnd: %.3f' % mist_end) + file.write('\n\t\tFogColor: %.1f,%.1f,%.1f,1' % tuple(world_hor)) + file.write('\n\t}') + file.write('\n\tSettings: {') + file.write('\n\t\tFrameRate: "%i"' % int(fps)) + file.write('\n\t\tTimeFormat: 1') + file.write('\n\t\tSnapOnFrames: 0') + file.write('\n\t\tReferenceTimeIndex: -1') + file.write('\n\t\tTimeLineStartTime: %i' % fbx_time(start-1)) + file.write('\n\t\tTimeLineStopTime: %i' % fbx_time(end-1)) + file.write('\n\t}') + file.write('\n\tRendererSetting: {') + file.write('\n\t\tDefaultCamera: "Producer Perspective"') + file.write('\n\t\tDefaultViewingMode: 0') + file.write('\n\t}') + file.write('\n}') + file.write('\n') + + # Incase sombody imports this, clean up by clearing global dicts + sane_name_mapping_ob.clear() + sane_name_mapping_mat.clear() + sane_name_mapping_tex.clear() + + ob_arms[:] = [] + ob_bones[:] = [] + ob_cameras[:] = [] + ob_lights[:] = [] + ob_meshes[:] = [] + ob_null[:] = [] + + + # copy images if enabled # if EXP_IMAGE_COPY: # # copy_images( basepath, [ tex[1] for tex in textures if tex[1] != None ]) -# bpy.util.copy_images( [ tex[1] for tex in textures if tex[1] != None ], basepath) - - print('export finished in %.4f sec.' % (time.clock() - start_time)) +# bpy.util.copy_images( [ tex[1] for tex in textures if tex[1] != None ], basepath) + + print('export finished in %.4f sec.' % (time.clock() - start_time)) # print 'export finished in %.4f sec.' % (Blender.sys.time() - start_time) - return True - + return True + # -------------------------------------------- # UI Function - not a part of the exporter. @@ -3077,46 +3077,46 @@ def do_redraw(e,v): GLOBALS['EVENT'] = e # toggle between these 2, only allow one on at once def do_obs_sel(e,v): - GLOBALS['EVENT'] = e - GLOBALS['EXP_OBS_SCENE'].val = 0 - GLOBALS['EXP_OBS_SELECTED'].val = 1 + GLOBALS['EVENT'] = e + GLOBALS['EXP_OBS_SCENE'].val = 0 + GLOBALS['EXP_OBS_SELECTED'].val = 1 def do_obs_sce(e,v): - GLOBALS['EVENT'] = e - GLOBALS['EXP_OBS_SCENE'].val = 1 - GLOBALS['EXP_OBS_SELECTED'].val = 0 + GLOBALS['EVENT'] = e + GLOBALS['EXP_OBS_SCENE'].val = 1 + GLOBALS['EXP_OBS_SELECTED'].val = 0 def do_batch_type_grp(e,v): - GLOBALS['EVENT'] = e - GLOBALS['BATCH_GROUP'].val = 1 - GLOBALS['BATCH_SCENE'].val = 0 + GLOBALS['EVENT'] = e + GLOBALS['BATCH_GROUP'].val = 1 + GLOBALS['BATCH_SCENE'].val = 0 def do_batch_type_sce(e,v): - GLOBALS['EVENT'] = e - GLOBALS['BATCH_GROUP'].val = 0 - GLOBALS['BATCH_SCENE'].val = 1 + GLOBALS['EVENT'] = e + GLOBALS['BATCH_GROUP'].val = 0 + GLOBALS['BATCH_SCENE'].val = 1 def do_anim_act_all(e,v): - GLOBALS['EVENT'] = e - GLOBALS['ANIM_ACTION_ALL'][0].val = 1 - GLOBALS['ANIM_ACTION_ALL'][1].val = 0 + GLOBALS['EVENT'] = e + GLOBALS['ANIM_ACTION_ALL'][0].val = 1 + GLOBALS['ANIM_ACTION_ALL'][1].val = 0 def do_anim_act_cur(e,v): - if GLOBALS['BATCH_ENABLE'].val and GLOBALS['BATCH_GROUP'].val: - Draw.PupMenu('Warning%t|Cant use this with batch export group option') - else: - GLOBALS['EVENT'] = e - GLOBALS['ANIM_ACTION_ALL'][0].val = 0 - GLOBALS['ANIM_ACTION_ALL'][1].val = 1 + if GLOBALS['BATCH_ENABLE'].val and GLOBALS['BATCH_GROUP'].val: + Draw.PupMenu('Warning%t|Cant use this with batch export group option') + else: + GLOBALS['EVENT'] = e + GLOBALS['ANIM_ACTION_ALL'][0].val = 0 + GLOBALS['ANIM_ACTION_ALL'][1].val = 1 def fbx_ui_exit(e,v): - GLOBALS['EVENT'] = e + GLOBALS['EVENT'] = e def do_help(e,v): url = 'http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx' print('Trying to open web browser with documentation at this address...') print('\t' + url) - + try: import webbrowser webbrowser.open(url) @@ -3124,312 +3124,312 @@ def do_help(e,v): Blender.Draw.PupMenu("Error%t|Opening a webbrowser requires a full python installation") print('...could not open a browser window.') - + # run when export is pressed #def fbx_ui_write(e,v): def fbx_ui_write(filename, context): - - # Dont allow overwriting files when saving normally - if not GLOBALS['BATCH_ENABLE'].val: - if not BPyMessages.Warning_SaveOver(filename): - return - - GLOBALS['EVENT'] = EVENT_EXIT - - # Keep the order the same as above for simplicity - # the [] is a dummy arg used for objects - - Blender.Window.WaitCursor(1) - - # Make the matrix - GLOBAL_MATRIX = mtx4_identity - GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = GLOBALS['_SCALE'].val - if GLOBALS['_XROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n - if GLOBALS['_YROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n - if GLOBALS['_ZROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n - - ret = write(\ - filename, None,\ - context, - GLOBALS['EXP_OBS_SELECTED'].val,\ - GLOBALS['EXP_MESH'].val,\ - GLOBALS['EXP_MESH_APPLY_MOD'].val,\ - GLOBALS['EXP_MESH_HQ_NORMALS'].val,\ - GLOBALS['EXP_ARMATURE'].val,\ - GLOBALS['EXP_LAMP'].val,\ - GLOBALS['EXP_CAMERA'].val,\ - GLOBALS['EXP_EMPTY'].val,\ - GLOBALS['EXP_IMAGE_COPY'].val,\ - GLOBAL_MATRIX,\ - GLOBALS['ANIM_ENABLE'].val,\ - GLOBALS['ANIM_OPTIMIZE'].val,\ - GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val,\ - GLOBALS['ANIM_ACTION_ALL'][0].val,\ - GLOBALS['BATCH_ENABLE'].val,\ - GLOBALS['BATCH_GROUP'].val,\ - GLOBALS['BATCH_SCENE'].val,\ - GLOBALS['BATCH_FILE_PREFIX'].val,\ - GLOBALS['BATCH_OWN_DIR'].val,\ - ) - - Blender.Window.WaitCursor(0) - GLOBALS.clear() - - if ret == False: - Draw.PupMenu('Error%t|Path cannot be written to!') + + # Dont allow overwriting files when saving normally + if not GLOBALS['BATCH_ENABLE'].val: + if not BPyMessages.Warning_SaveOver(filename): + return + + GLOBALS['EVENT'] = EVENT_EXIT + + # Keep the order the same as above for simplicity + # the [] is a dummy arg used for objects + + Blender.Window.WaitCursor(1) + + # Make the matrix + GLOBAL_MATRIX = mtx4_identity + GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = GLOBALS['_SCALE'].val + if GLOBALS['_XROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n + if GLOBALS['_YROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n + if GLOBALS['_ZROT90'].val: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n + + ret = write(\ + filename, None,\ + context, + GLOBALS['EXP_OBS_SELECTED'].val,\ + GLOBALS['EXP_MESH'].val,\ + GLOBALS['EXP_MESH_APPLY_MOD'].val,\ + GLOBALS['EXP_MESH_HQ_NORMALS'].val,\ + GLOBALS['EXP_ARMATURE'].val,\ + GLOBALS['EXP_LAMP'].val,\ + GLOBALS['EXP_CAMERA'].val,\ + GLOBALS['EXP_EMPTY'].val,\ + GLOBALS['EXP_IMAGE_COPY'].val,\ + GLOBAL_MATRIX,\ + GLOBALS['ANIM_ENABLE'].val,\ + GLOBALS['ANIM_OPTIMIZE'].val,\ + GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val,\ + GLOBALS['ANIM_ACTION_ALL'][0].val,\ + GLOBALS['BATCH_ENABLE'].val,\ + GLOBALS['BATCH_GROUP'].val,\ + GLOBALS['BATCH_SCENE'].val,\ + GLOBALS['BATCH_FILE_PREFIX'].val,\ + GLOBALS['BATCH_OWN_DIR'].val,\ + ) + + Blender.Window.WaitCursor(0) + GLOBALS.clear() + + if ret == False: + Draw.PupMenu('Error%t|Path cannot be written to!') def fbx_ui(): - # Only to center the UI - x,y = GLOBALS['MOUSE'] - x-=180; y-=0 # offset... just to get it centered - - Draw.Label('Export Objects...', x+20,y+165, 200, 20) - - if not GLOBALS['BATCH_ENABLE'].val: - Draw.BeginAlign() - GLOBALS['EXP_OBS_SELECTED'] = Draw.Toggle('Selected Objects', EVENT_REDRAW, x+20, y+145, 160, 20, GLOBALS['EXP_OBS_SELECTED'].val, 'Export selected objects on visible layers', do_obs_sel) - GLOBALS['EXP_OBS_SCENE'] = Draw.Toggle('Scene Objects', EVENT_REDRAW, x+180, y+145, 160, 20, GLOBALS['EXP_OBS_SCENE'].val, 'Export all objects in this scene', do_obs_sce) - Draw.EndAlign() - - Draw.BeginAlign() - GLOBALS['_SCALE'] = Draw.Number('Scale:', EVENT_NONE, x+20, y+120, 140, 20, GLOBALS['_SCALE'].val, 0.01, 1000.0, 'Scale all data, (Note! some imports dont support scaled armatures)') - GLOBALS['_XROT90'] = Draw.Toggle('Rot X90', EVENT_NONE, x+160, y+120, 60, 20, GLOBALS['_XROT90'].val, 'Rotate all objects 90 degrese about the X axis') - GLOBALS['_YROT90'] = Draw.Toggle('Rot Y90', EVENT_NONE, x+220, y+120, 60, 20, GLOBALS['_YROT90'].val, 'Rotate all objects 90 degrese about the Y axis') - GLOBALS['_ZROT90'] = Draw.Toggle('Rot Z90', EVENT_NONE, x+280, y+120, 60, 20, GLOBALS['_ZROT90'].val, 'Rotate all objects 90 degrese about the Z axis') - Draw.EndAlign() - - y -= 35 - - Draw.BeginAlign() - GLOBALS['EXP_EMPTY'] = Draw.Toggle('Empty', EVENT_NONE, x+20, y+120, 60, 20, GLOBALS['EXP_EMPTY'].val, 'Export empty objects') - GLOBALS['EXP_CAMERA'] = Draw.Toggle('Camera', EVENT_NONE, x+80, y+120, 60, 20, GLOBALS['EXP_CAMERA'].val, 'Export camera objects') - GLOBALS['EXP_LAMP'] = Draw.Toggle('Lamp', EVENT_NONE, x+140, y+120, 60, 20, GLOBALS['EXP_LAMP'].val, 'Export lamp objects') - GLOBALS['EXP_ARMATURE'] = Draw.Toggle('Armature', EVENT_NONE, x+200, y+120, 60, 20, GLOBALS['EXP_ARMATURE'].val, 'Export armature objects') - GLOBALS['EXP_MESH'] = Draw.Toggle('Mesh', EVENT_REDRAW, x+260, y+120, 80, 20, GLOBALS['EXP_MESH'].val, 'Export mesh objects', do_redraw) #, do_axis_z) - Draw.EndAlign() - - if GLOBALS['EXP_MESH'].val: - # below mesh but - Draw.BeginAlign() - GLOBALS['EXP_MESH_APPLY_MOD'] = Draw.Toggle('Modifiers', EVENT_NONE, x+260, y+100, 80, 20, GLOBALS['EXP_MESH_APPLY_MOD'].val, 'Apply modifiers to mesh objects') #, do_axis_z) - GLOBALS['EXP_MESH_HQ_NORMALS'] = Draw.Toggle('HQ Normals', EVENT_NONE, x+260, y+80, 80, 20, GLOBALS['EXP_MESH_HQ_NORMALS'].val, 'Generate high quality normals') #, do_axis_z) - Draw.EndAlign() - - GLOBALS['EXP_IMAGE_COPY'] = Draw.Toggle('Copy Image Files', EVENT_NONE, x+20, y+80, 160, 20, GLOBALS['EXP_IMAGE_COPY'].val, 'Copy image files to the destination path') #, do_axis_z) - - - Draw.Label('Export Armature Animation...', x+20,y+45, 300, 20) - - GLOBALS['ANIM_ENABLE'] = Draw.Toggle('Enable Animation', EVENT_REDRAW, x+20, y+25, 160, 20, GLOBALS['ANIM_ENABLE'].val, 'Export keyframe animation', do_redraw) - if GLOBALS['ANIM_ENABLE'].val: - Draw.BeginAlign() - GLOBALS['ANIM_OPTIMIZE'] = Draw.Toggle('Optimize Keyframes', EVENT_REDRAW, x+20, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE'].val, 'Remove double keyframes', do_redraw) - if GLOBALS['ANIM_OPTIMIZE'].val: - GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Number('Precission: ', EVENT_NONE, x+180, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val, 1, 16, 'Tolerence for comparing double keyframes (higher for greater accuracy)') - Draw.EndAlign() - - Draw.BeginAlign() - GLOBALS['ANIM_ACTION_ALL'][1] = Draw.Toggle('Current Action', EVENT_REDRAW, x+20, y-25, 160, 20, GLOBALS['ANIM_ACTION_ALL'][1].val, 'Use actions currently applied to the armatures (use scene start/end frame)', do_anim_act_cur) - GLOBALS['ANIM_ACTION_ALL'][0] = Draw.Toggle('All Actions', EVENT_REDRAW, x+180,y-25, 160, 20, GLOBALS['ANIM_ACTION_ALL'][0].val, 'Use all actions for armatures', do_anim_act_all) - Draw.EndAlign() - - - Draw.Label('Export Batch...', x+20,y-60, 300, 20) - GLOBALS['BATCH_ENABLE'] = Draw.Toggle('Enable Batch', EVENT_REDRAW, x+20, y-80, 160, 20, GLOBALS['BATCH_ENABLE'].val, 'Automate exporting multiple scenes or groups to files', do_redraw) - - if GLOBALS['BATCH_ENABLE'].val: - Draw.BeginAlign() - GLOBALS['BATCH_GROUP'] = Draw.Toggle('Group > File', EVENT_REDRAW, x+20, y-105, 160, 20, GLOBALS['BATCH_GROUP'].val, 'Export each group as an FBX file', do_batch_type_grp) - GLOBALS['BATCH_SCENE'] = Draw.Toggle('Scene > File', EVENT_REDRAW, x+180, y-105, 160, 20, GLOBALS['BATCH_SCENE'].val, 'Export each scene as an FBX file', do_batch_type_sce) - - # Own dir requires OS module - if os: - GLOBALS['BATCH_OWN_DIR'] = Draw.Toggle('Own Dir', EVENT_NONE, x+20, y-125, 80, 20, GLOBALS['BATCH_OWN_DIR'].val, 'Create a dir for each exported file') - GLOBALS['BATCH_FILE_PREFIX'] = Draw.String('Prefix: ', EVENT_NONE, x+100, y-125, 240, 20, GLOBALS['BATCH_FILE_PREFIX'].val, 64, 'Prefix each file with this name ') - else: - GLOBALS['BATCH_FILE_PREFIX'] = Draw.String('Prefix: ', EVENT_NONE, x+20, y-125, 320, 20, GLOBALS['BATCH_FILE_PREFIX'].val, 64, 'Prefix each file with this name ') - - - Draw.EndAlign() - - #y+=80 - - ''' - Draw.BeginAlign() - GLOBALS['FILENAME'] = Draw.String('path: ', EVENT_NONE, x+20, y-170, 300, 20, GLOBALS['FILENAME'].val, 64, 'Prefix each file with this name ') - Draw.PushButton('..', EVENT_FILESEL, x+320, y-170, 20, 20, 'Select the path', do_redraw) - ''' - # Until batch is added - # - - - #Draw.BeginAlign() - Draw.PushButton('Online Help', EVENT_REDRAW, x+20, y-160, 100, 20, 'Open online help in a browser window', do_help) - Draw.PushButton('Cancel', EVENT_EXIT, x+130, y-160, 100, 20, 'Exit the exporter', fbx_ui_exit) - Draw.PushButton('Export', EVENT_FILESEL, x+240, y-160, 100, 20, 'Export the fbx file', do_redraw) - - #Draw.PushButton('Export', EVENT_EXIT, x+180, y-160, 160, 20, 'Export the fbx file', fbx_ui_write) - #Draw.EndAlign() - - # exit when mouse out of the view? - # GLOBALS['EVENT'] = EVENT_EXIT + # Only to center the UI + x,y = GLOBALS['MOUSE'] + x-=180; y-=0 # offset... just to get it centered + + Draw.Label('Export Objects...', x+20,y+165, 200, 20) + + if not GLOBALS['BATCH_ENABLE'].val: + Draw.BeginAlign() + GLOBALS['EXP_OBS_SELECTED'] = Draw.Toggle('Selected Objects', EVENT_REDRAW, x+20, y+145, 160, 20, GLOBALS['EXP_OBS_SELECTED'].val, 'Export selected objects on visible layers', do_obs_sel) + GLOBALS['EXP_OBS_SCENE'] = Draw.Toggle('Scene Objects', EVENT_REDRAW, x+180, y+145, 160, 20, GLOBALS['EXP_OBS_SCENE'].val, 'Export all objects in this scene', do_obs_sce) + Draw.EndAlign() + + Draw.BeginAlign() + GLOBALS['_SCALE'] = Draw.Number('Scale:', EVENT_NONE, x+20, y+120, 140, 20, GLOBALS['_SCALE'].val, 0.01, 1000.0, 'Scale all data, (Note! some imports dont support scaled armatures)') + GLOBALS['_XROT90'] = Draw.Toggle('Rot X90', EVENT_NONE, x+160, y+120, 60, 20, GLOBALS['_XROT90'].val, 'Rotate all objects 90 degrese about the X axis') + GLOBALS['_YROT90'] = Draw.Toggle('Rot Y90', EVENT_NONE, x+220, y+120, 60, 20, GLOBALS['_YROT90'].val, 'Rotate all objects 90 degrese about the Y axis') + GLOBALS['_ZROT90'] = Draw.Toggle('Rot Z90', EVENT_NONE, x+280, y+120, 60, 20, GLOBALS['_ZROT90'].val, 'Rotate all objects 90 degrese about the Z axis') + Draw.EndAlign() + + y -= 35 + + Draw.BeginAlign() + GLOBALS['EXP_EMPTY'] = Draw.Toggle('Empty', EVENT_NONE, x+20, y+120, 60, 20, GLOBALS['EXP_EMPTY'].val, 'Export empty objects') + GLOBALS['EXP_CAMERA'] = Draw.Toggle('Camera', EVENT_NONE, x+80, y+120, 60, 20, GLOBALS['EXP_CAMERA'].val, 'Export camera objects') + GLOBALS['EXP_LAMP'] = Draw.Toggle('Lamp', EVENT_NONE, x+140, y+120, 60, 20, GLOBALS['EXP_LAMP'].val, 'Export lamp objects') + GLOBALS['EXP_ARMATURE'] = Draw.Toggle('Armature', EVENT_NONE, x+200, y+120, 60, 20, GLOBALS['EXP_ARMATURE'].val, 'Export armature objects') + GLOBALS['EXP_MESH'] = Draw.Toggle('Mesh', EVENT_REDRAW, x+260, y+120, 80, 20, GLOBALS['EXP_MESH'].val, 'Export mesh objects', do_redraw) #, do_axis_z) + Draw.EndAlign() + + if GLOBALS['EXP_MESH'].val: + # below mesh but + Draw.BeginAlign() + GLOBALS['EXP_MESH_APPLY_MOD'] = Draw.Toggle('Modifiers', EVENT_NONE, x+260, y+100, 80, 20, GLOBALS['EXP_MESH_APPLY_MOD'].val, 'Apply modifiers to mesh objects') #, do_axis_z) + GLOBALS['EXP_MESH_HQ_NORMALS'] = Draw.Toggle('HQ Normals', EVENT_NONE, x+260, y+80, 80, 20, GLOBALS['EXP_MESH_HQ_NORMALS'].val, 'Generate high quality normals') #, do_axis_z) + Draw.EndAlign() + + GLOBALS['EXP_IMAGE_COPY'] = Draw.Toggle('Copy Image Files', EVENT_NONE, x+20, y+80, 160, 20, GLOBALS['EXP_IMAGE_COPY'].val, 'Copy image files to the destination path') #, do_axis_z) + + + Draw.Label('Export Armature Animation...', x+20,y+45, 300, 20) + + GLOBALS['ANIM_ENABLE'] = Draw.Toggle('Enable Animation', EVENT_REDRAW, x+20, y+25, 160, 20, GLOBALS['ANIM_ENABLE'].val, 'Export keyframe animation', do_redraw) + if GLOBALS['ANIM_ENABLE'].val: + Draw.BeginAlign() + GLOBALS['ANIM_OPTIMIZE'] = Draw.Toggle('Optimize Keyframes', EVENT_REDRAW, x+20, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE'].val, 'Remove double keyframes', do_redraw) + if GLOBALS['ANIM_OPTIMIZE'].val: + GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Number('Precission: ', EVENT_NONE, x+180, y+0, 160, 20, GLOBALS['ANIM_OPTIMIZE_PRECISSION'].val, 1, 16, 'Tolerence for comparing double keyframes (higher for greater accuracy)') + Draw.EndAlign() + + Draw.BeginAlign() + GLOBALS['ANIM_ACTION_ALL'][1] = Draw.Toggle('Current Action', EVENT_REDRAW, x+20, y-25, 160, 20, GLOBALS['ANIM_ACTION_ALL'][1].val, 'Use actions currently applied to the armatures (use scene start/end frame)', do_anim_act_cur) + GLOBALS['ANIM_ACTION_ALL'][0] = Draw.Toggle('All Actions', EVENT_REDRAW, x+180,y-25, 160, 20, GLOBALS['ANIM_ACTION_ALL'][0].val, 'Use all actions for armatures', do_anim_act_all) + Draw.EndAlign() + + + Draw.Label('Export Batch...', x+20,y-60, 300, 20) + GLOBALS['BATCH_ENABLE'] = Draw.Toggle('Enable Batch', EVENT_REDRAW, x+20, y-80, 160, 20, GLOBALS['BATCH_ENABLE'].val, 'Automate exporting multiple scenes or groups to files', do_redraw) + + if GLOBALS['BATCH_ENABLE'].val: + Draw.BeginAlign() + GLOBALS['BATCH_GROUP'] = Draw.Toggle('Group > File', EVENT_REDRAW, x+20, y-105, 160, 20, GLOBALS['BATCH_GROUP'].val, 'Export each group as an FBX file', do_batch_type_grp) + GLOBALS['BATCH_SCENE'] = Draw.Toggle('Scene > File', EVENT_REDRAW, x+180, y-105, 160, 20, GLOBALS['BATCH_SCENE'].val, 'Export each scene as an FBX file', do_batch_type_sce) + + # Own dir requires OS module + if os: + GLOBALS['BATCH_OWN_DIR'] = Draw.Toggle('Own Dir', EVENT_NONE, x+20, y-125, 80, 20, GLOBALS['BATCH_OWN_DIR'].val, 'Create a dir for each exported file') + GLOBALS['BATCH_FILE_PREFIX'] = Draw.String('Prefix: ', EVENT_NONE, x+100, y-125, 240, 20, GLOBALS['BATCH_FILE_PREFIX'].val, 64, 'Prefix each file with this name ') + else: + GLOBALS['BATCH_FILE_PREFIX'] = Draw.String('Prefix: ', EVENT_NONE, x+20, y-125, 320, 20, GLOBALS['BATCH_FILE_PREFIX'].val, 64, 'Prefix each file with this name ') + + + Draw.EndAlign() + + #y+=80 + + ''' + Draw.BeginAlign() + GLOBALS['FILENAME'] = Draw.String('path: ', EVENT_NONE, x+20, y-170, 300, 20, GLOBALS['FILENAME'].val, 64, 'Prefix each file with this name ') + Draw.PushButton('..', EVENT_FILESEL, x+320, y-170, 20, 20, 'Select the path', do_redraw) + ''' + # Until batch is added + # + + + #Draw.BeginAlign() + Draw.PushButton('Online Help', EVENT_REDRAW, x+20, y-160, 100, 20, 'Open online help in a browser window', do_help) + Draw.PushButton('Cancel', EVENT_EXIT, x+130, y-160, 100, 20, 'Exit the exporter', fbx_ui_exit) + Draw.PushButton('Export', EVENT_FILESEL, x+240, y-160, 100, 20, 'Export the fbx file', do_redraw) + + #Draw.PushButton('Export', EVENT_EXIT, x+180, y-160, 160, 20, 'Export the fbx file', fbx_ui_write) + #Draw.EndAlign() + + # exit when mouse out of the view? + # GLOBALS['EVENT'] = EVENT_EXIT #def write_ui(filename): def write_ui(): - - # globals - GLOBALS['EVENT'] = EVENT_REDRAW - #GLOBALS['MOUSE'] = Window.GetMouseCoords() - GLOBALS['MOUSE'] = [i/2 for i in Window.GetScreenSize()] - GLOBALS['FILENAME'] = '' - ''' - # IF called from the fileselector - if filename == None: - GLOBALS['FILENAME'] = filename # Draw.Create(Blender.sys.makename(ext='.fbx')) - else: - GLOBALS['FILENAME'].val = filename - ''' - GLOBALS['EXP_OBS_SELECTED'] = Draw.Create(1) # dont need 2 variables but just do this for clarity - GLOBALS['EXP_OBS_SCENE'] = Draw.Create(0) - - GLOBALS['EXP_MESH'] = Draw.Create(1) - GLOBALS['EXP_MESH_APPLY_MOD'] = Draw.Create(1) - GLOBALS['EXP_MESH_HQ_NORMALS'] = Draw.Create(0) - GLOBALS['EXP_ARMATURE'] = Draw.Create(1) - GLOBALS['EXP_LAMP'] = Draw.Create(1) - GLOBALS['EXP_CAMERA'] = Draw.Create(1) - GLOBALS['EXP_EMPTY'] = Draw.Create(1) - GLOBALS['EXP_IMAGE_COPY'] = Draw.Create(0) - # animation opts - GLOBALS['ANIM_ENABLE'] = Draw.Create(1) - GLOBALS['ANIM_OPTIMIZE'] = Draw.Create(1) - GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Create(4) # decimal places - GLOBALS['ANIM_ACTION_ALL'] = [Draw.Create(0), Draw.Create(1)] # not just the current action - - # batch export options - GLOBALS['BATCH_ENABLE'] = Draw.Create(0) - GLOBALS['BATCH_GROUP'] = Draw.Create(1) # cant have both of these enabled at once. - GLOBALS['BATCH_SCENE'] = Draw.Create(0) # see above - GLOBALS['BATCH_FILE_PREFIX'] = Draw.Create(Blender.sys.makename(ext='_').split('\\')[-1].split('/')[-1]) - GLOBALS['BATCH_OWN_DIR'] = Draw.Create(0) - # done setting globals - - # Used by the user interface - GLOBALS['_SCALE'] = Draw.Create(1.0) - GLOBALS['_XROT90'] = Draw.Create(True) - GLOBALS['_YROT90'] = Draw.Create(False) - GLOBALS['_ZROT90'] = Draw.Create(False) - - # best not do move the cursor - # Window.SetMouseCoords(*[i/2 for i in Window.GetScreenSize()]) - - # hack so the toggle buttons redraw. this is not nice at all - while GLOBALS['EVENT'] != EVENT_EXIT: - - if GLOBALS['BATCH_ENABLE'].val and GLOBALS['BATCH_GROUP'].val and GLOBALS['ANIM_ACTION_ALL'][1].val: - #Draw.PupMenu("Warning%t|Cant batch export groups with 'Current Action' ") - GLOBALS['ANIM_ACTION_ALL'][0].val = 1 - GLOBALS['ANIM_ACTION_ALL'][1].val = 0 - - if GLOBALS['EVENT'] == EVENT_FILESEL: - if GLOBALS['BATCH_ENABLE'].val: - txt = 'Batch FBX Dir' - name = Blender.sys.expandpath('//') - else: - txt = 'Export FBX' - name = Blender.sys.makename(ext='.fbx') - - Blender.Window.FileSelector(fbx_ui_write, txt, name) - #fbx_ui_write('/test.fbx') - break - - Draw.UIBlock(fbx_ui, 0) - - - # GLOBALS.clear() + + # globals + GLOBALS['EVENT'] = EVENT_REDRAW + #GLOBALS['MOUSE'] = Window.GetMouseCoords() + GLOBALS['MOUSE'] = [i/2 for i in Window.GetScreenSize()] + GLOBALS['FILENAME'] = '' + ''' + # IF called from the fileselector + if filename == None: + GLOBALS['FILENAME'] = filename # Draw.Create(Blender.sys.makename(ext='.fbx')) + else: + GLOBALS['FILENAME'].val = filename + ''' + GLOBALS['EXP_OBS_SELECTED'] = Draw.Create(1) # dont need 2 variables but just do this for clarity + GLOBALS['EXP_OBS_SCENE'] = Draw.Create(0) + + GLOBALS['EXP_MESH'] = Draw.Create(1) + GLOBALS['EXP_MESH_APPLY_MOD'] = Draw.Create(1) + GLOBALS['EXP_MESH_HQ_NORMALS'] = Draw.Create(0) + GLOBALS['EXP_ARMATURE'] = Draw.Create(1) + GLOBALS['EXP_LAMP'] = Draw.Create(1) + GLOBALS['EXP_CAMERA'] = Draw.Create(1) + GLOBALS['EXP_EMPTY'] = Draw.Create(1) + GLOBALS['EXP_IMAGE_COPY'] = Draw.Create(0) + # animation opts + GLOBALS['ANIM_ENABLE'] = Draw.Create(1) + GLOBALS['ANIM_OPTIMIZE'] = Draw.Create(1) + GLOBALS['ANIM_OPTIMIZE_PRECISSION'] = Draw.Create(4) # decimal places + GLOBALS['ANIM_ACTION_ALL'] = [Draw.Create(0), Draw.Create(1)] # not just the current action + + # batch export options + GLOBALS['BATCH_ENABLE'] = Draw.Create(0) + GLOBALS['BATCH_GROUP'] = Draw.Create(1) # cant have both of these enabled at once. + GLOBALS['BATCH_SCENE'] = Draw.Create(0) # see above + GLOBALS['BATCH_FILE_PREFIX'] = Draw.Create(Blender.sys.makename(ext='_').split('\\')[-1].split('/')[-1]) + GLOBALS['BATCH_OWN_DIR'] = Draw.Create(0) + # done setting globals + + # Used by the user interface + GLOBALS['_SCALE'] = Draw.Create(1.0) + GLOBALS['_XROT90'] = Draw.Create(True) + GLOBALS['_YROT90'] = Draw.Create(False) + GLOBALS['_ZROT90'] = Draw.Create(False) + + # best not do move the cursor + # Window.SetMouseCoords(*[i/2 for i in Window.GetScreenSize()]) + + # hack so the toggle buttons redraw. this is not nice at all + while GLOBALS['EVENT'] != EVENT_EXIT: + + if GLOBALS['BATCH_ENABLE'].val and GLOBALS['BATCH_GROUP'].val and GLOBALS['ANIM_ACTION_ALL'][1].val: + #Draw.PupMenu("Warning%t|Cant batch export groups with 'Current Action' ") + GLOBALS['ANIM_ACTION_ALL'][0].val = 1 + GLOBALS['ANIM_ACTION_ALL'][1].val = 0 + + if GLOBALS['EVENT'] == EVENT_FILESEL: + if GLOBALS['BATCH_ENABLE'].val: + txt = 'Batch FBX Dir' + name = Blender.sys.expandpath('//') + else: + txt = 'Export FBX' + name = Blender.sys.makename(ext='.fbx') + + Blender.Window.FileSelector(fbx_ui_write, txt, name) + #fbx_ui_write('/test.fbx') + break + + Draw.UIBlock(fbx_ui, 0) + + + # GLOBALS.clear() from bpy.props import * class ExportFBX(bpy.types.Operator): - '''Selection to an ASCII Autodesk FBX''' - bl_idname = "export.fbx" - bl_label = "Export FBX" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - - path = StringProperty(name="File Path", description="File path used for exporting the FBX file", maxlen= 1024, default= "") - - EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) + '''Selection to an ASCII Autodesk FBX''' + bl_idname = "export.fbx" + bl_label = "Export FBX" + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + + path = StringProperty(name="File Path", description="File path used for exporting the FBX file", maxlen= 1024, default= "") + + EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) # EXP_OBS_SCENE = BoolProperty(name="Scene Objects", description="Export all objects in this scene", default=True) - TX_SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) - TX_XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) - TX_YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) - TX_ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) - EXP_EMPTY = BoolProperty(name="Empties", description="Export empty objects", default=True) - EXP_CAMERA = BoolProperty(name="Cameras", description="Export camera objects", default=True) - EXP_LAMP = BoolProperty(name="Lamps", description="Export lamp objects", default=True) - EXP_ARMATURE = BoolProperty(name="Armatures", description="Export armature objects", default=True) - EXP_MESH = BoolProperty(name="Meshes", description="Export mesh objects", default=True) - EXP_MESH_APPLY_MOD = BoolProperty(name="Modifiers", description="Apply modifiers to mesh objects", default=True) - EXP_MESH_HQ_NORMALS = BoolProperty(name="HQ Normals", description="Generate high quality normals", default=True) - EXP_IMAGE_COPY = BoolProperty(name="Copy Image Files", description="Copy image files to the destination path", default=False) - # armature animation - ANIM_ENABLE = BoolProperty(name="Enable Animation", description="Export keyframe animation", default=True) - ANIM_OPTIMIZE = BoolProperty(name="Optimize Keyframes", description="Remove double keyframes", default=True) - ANIM_OPTIMIZE_PRECISSION = FloatProperty(name="Precision", description="Tolerence for comparing double keyframes (higher for greater accuracy)", min=1, max=16, soft_min=1, soft_max=16, default=6.0) + TX_SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) + TX_XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) + TX_YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) + TX_ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) + EXP_EMPTY = BoolProperty(name="Empties", description="Export empty objects", default=True) + EXP_CAMERA = BoolProperty(name="Cameras", description="Export camera objects", default=True) + EXP_LAMP = BoolProperty(name="Lamps", description="Export lamp objects", default=True) + EXP_ARMATURE = BoolProperty(name="Armatures", description="Export armature objects", default=True) + EXP_MESH = BoolProperty(name="Meshes", description="Export mesh objects", default=True) + EXP_MESH_APPLY_MOD = BoolProperty(name="Modifiers", description="Apply modifiers to mesh objects", default=True) + EXP_MESH_HQ_NORMALS = BoolProperty(name="HQ Normals", description="Generate high quality normals", default=True) + EXP_IMAGE_COPY = BoolProperty(name="Copy Image Files", description="Copy image files to the destination path", default=False) + # armature animation + ANIM_ENABLE = BoolProperty(name="Enable Animation", description="Export keyframe animation", default=True) + ANIM_OPTIMIZE = BoolProperty(name="Optimize Keyframes", description="Remove double keyframes", default=True) + ANIM_OPTIMIZE_PRECISSION = FloatProperty(name="Precision", description="Tolerence for comparing double keyframes (higher for greater accuracy)", min=1, max=16, soft_min=1, soft_max=16, default=6.0) # ANIM_ACTION_ALL = BoolProperty(name="Current Action", description="Use actions currently applied to the armatures (use scene start/end frame)", default=True) - ANIM_ACTION_ALL = BoolProperty(name="All Actions", description="Use all actions for armatures, if false, use current action", default=False) - # batch - BATCH_ENABLE = BoolProperty(name="Enable Batch", description="Automate exporting multiple scenes or groups to files", default=False) - BATCH_GROUP = BoolProperty(name="Group > File", description="Export each group as an FBX file, if false, export each scene as an FBX file", default=False) - BATCH_OWN_DIR = BoolProperty(name="Own Dir", description="Create a dir for each exported file", default=True) - BATCH_FILE_PREFIX = StringProperty(name="Prefix", description="Prefix each file with this name", maxlen= 1024, default="") - - - def poll(self, context): - print("Poll") - return context.active_object != None - - def execute(self, context): - if not self.properties.path: - raise Exception("path not set") - - GLOBAL_MATRIX = mtx4_identity - GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties.TX_SCALE - if self.properties.TX_XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n - if self.properties.TX_YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n - if self.properties.TX_ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n - - write(self.properties.path, - None, # XXX - context, - self.properties.EXP_OBS_SELECTED, - self.properties.EXP_MESH, - self.properties.EXP_MESH_APPLY_MOD, + ANIM_ACTION_ALL = BoolProperty(name="All Actions", description="Use all actions for armatures, if false, use current action", default=False) + # batch + BATCH_ENABLE = BoolProperty(name="Enable Batch", description="Automate exporting multiple scenes or groups to files", default=False) + BATCH_GROUP = BoolProperty(name="Group > File", description="Export each group as an FBX file, if false, export each scene as an FBX file", default=False) + BATCH_OWN_DIR = BoolProperty(name="Own Dir", description="Create a dir for each exported file", default=True) + BATCH_FILE_PREFIX = StringProperty(name="Prefix", description="Prefix each file with this name", maxlen= 1024, default="") + + + def poll(self, context): + print("Poll") + return context.active_object != None + + def execute(self, context): + if not self.properties.path: + raise Exception("path not set") + + GLOBAL_MATRIX = mtx4_identity + GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties.TX_SCALE + if self.properties.TX_XROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_x90n + if self.properties.TX_YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n + if self.properties.TX_ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n + + write(self.properties.path, + None, # XXX + context, + self.properties.EXP_OBS_SELECTED, + self.properties.EXP_MESH, + self.properties.EXP_MESH_APPLY_MOD, # self.properties.EXP_MESH_HQ_NORMALS, - self.properties.EXP_ARMATURE, - self.properties.EXP_LAMP, - self.properties.EXP_CAMERA, - self.properties.EXP_EMPTY, - self.properties.EXP_IMAGE_COPY, - GLOBAL_MATRIX, - self.properties.ANIM_ENABLE, - self.properties.ANIM_OPTIMIZE, - self.properties.ANIM_OPTIMIZE_PRECISSION, - self.properties.ANIM_ACTION_ALL, - self.properties.BATCH_ENABLE, - self.properties.BATCH_GROUP, - self.properties.BATCH_FILE_PREFIX, - self.properties.BATCH_OWN_DIR) - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) + self.properties.EXP_ARMATURE, + self.properties.EXP_LAMP, + self.properties.EXP_CAMERA, + self.properties.EXP_EMPTY, + self.properties.EXP_IMAGE_COPY, + GLOBAL_MATRIX, + self.properties.ANIM_ENABLE, + self.properties.ANIM_OPTIMIZE, + self.properties.ANIM_OPTIMIZE_PRECISSION, + self.properties.ANIM_ACTION_ALL, + self.properties.BATCH_ENABLE, + self.properties.BATCH_GROUP, + self.properties.BATCH_FILE_PREFIX, + self.properties.BATCH_OWN_DIR) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) bpy.ops.add(ExportFBX) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 9753a63ce48..98d87ef6a7f 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -75,8 +75,8 @@ def check_vertcount(mesh,vertcount): f.close() zero_file(filepath) return - - + + def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): """ Blender.Window.WaitCursor(1) @@ -104,13 +104,13 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): numframes = PREF_ENDFRAME-PREF_STARTFRAME+1 PREF_FPS= float(PREF_FPS) f = open(filename, 'wb') #no Errors yet:Safe to create file - + # Write the header f.write(pack(">2i", numframes, numverts)) - + # Write the frame times (should we use the time IPO??) f.write( pack(">%df" % (numframes), *[frame/PREF_FPS for frame in range(numframes)]) ) # seconds - + #rest frame needed to keep frames in sync """ Blender.Set('curframe', PREF_STARTFRAME) @@ -120,7 +120,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): check_vertcount(me,numverts) me.transform(mat_flip * ob.matrix) f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) - + for frame in range(PREF_STARTFRAME,PREF_ENDFRAME+1):#in order to start at desired frame """ Blender.Set('curframe', frame) @@ -131,15 +131,15 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): me = ob.create_mesh(True, 'PREVIEW') check_vertcount(me,numverts) me.transform(mat_flip * ob.matrix) - + # Write the vertex data f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) - + """ me_tmp.verts= None """ f.close() - + print ('MDD Exported: %s frames:%d\n'% (filename, numframes-1)) """ Blender.Window.WaitCursor(0) @@ -178,7 +178,7 @@ class ExportMDD(bpy.types.Operator): write(self.properties.path, context.scene, context.active_object, self.properties.start_frame, self.properties.end_frame, self.properties.fps ) return ('FINISHED',) - + def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 94e8a365c0f..37ade121311 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -73,142 +73,142 @@ import Mathutils # Returns a tuple - path,extension. # 'hello.obj' > ('hello', '.obj') def splitExt(path): - dotidx = path.rfind('.') - if dotidx == -1: - return path, '' - else: - return path[:dotidx], path[dotidx:] + dotidx = path.rfind('.') + if dotidx == -1: + return path, '' + else: + return path[:dotidx], path[dotidx:] def fixName(name): - if name == None: - return 'None' - else: - return name.replace(' ', '_') + if name == None: + return 'None' + else: + return name.replace(' ', '_') # A Dict of Materials # (material.name, image.name):matname_imagename # matname_imagename has gaps removed. -MTL_DICT = {} +MTL_DICT = {} def write_mtl(scene, filename, copy_images): - world = scene.world - worldAmb = world.ambient_color + world = scene.world + worldAmb = world.ambient_color - dest_dir = os.path.dirname(filename) + dest_dir = os.path.dirname(filename) - def copy_image(image): - rel = image.get_export_path(dest_dir, True) + def copy_image(image): + rel = image.get_export_path(dest_dir, True) - if copy_images: - abspath = image.get_export_path(dest_dir, False) - if not os.path.exists(abs_path): - shutil.copy(image.get_abs_filename(), abs_path) + if copy_images: + abspath = image.get_export_path(dest_dir, False) + if not os.path.exists(abs_path): + shutil.copy(image.get_abs_filename(), abs_path) - return rel + return rel - file = open(filename, "w") - # XXX + file = open(filename, "w") + # XXX # file.write('# Blender3D MTL File: %s\n' % Blender.Get('filename').split('\\')[-1].split('/')[-1]) - file.write('# Material Count: %i\n' % len(MTL_DICT)) - # Write material/image combinations we have used. - for key, (mtl_mat_name, mat, img) in MTL_DICT.items(): - - # Get the Blender data for the material and the image. - # Having an image named None will make a bug, dont do it :) - - file.write('newmtl %s\n' % mtl_mat_name) # Define a new material: matname_imgname - - if mat: - file.write('Ns %.6f\n' % ((mat.specular_hardness-1) * 1.9607843137254901) ) # Hardness, convert blenders 1-511 to MTL's - file.write('Ka %.6f %.6f %.6f\n' % tuple([c*mat.ambient for c in worldAmb]) ) # Ambient, uses mirror colour, - file.write('Kd %.6f %.6f %.6f\n' % tuple([c*mat.diffuse_intensity for c in mat.diffuse_color]) ) # Diffuse - file.write('Ks %.6f %.6f %.6f\n' % tuple([c*mat.specular_intensity for c in mat.specular_color]) ) # Specular - if hasattr(mat, "ior"): - file.write('Ni %.6f\n' % mat.ior) # Refraction index - else: - file.write('Ni %.6f\n' % 1.0) - file.write('d %.6f\n' % mat.alpha) # Alpha (obj uses 'd' for dissolve) - - # 0 to disable lighting, 1 for ambient & diffuse only (specular color set to black), 2 for full lighting. - if mat.shadeless: - file.write('illum 0\n') # ignore lighting - elif mat.specular_intensity == 0: - file.write('illum 1\n') # no specular. - else: - file.write('illum 2\n') # light normaly - - else: - #write a dummy material here? - file.write('Ns 0\n') - file.write('Ka %.6f %.6f %.6f\n' % tuple([c for c in worldAmb]) ) # Ambient, uses mirror colour, - file.write('Kd 0.8 0.8 0.8\n') - file.write('Ks 0.8 0.8 0.8\n') - file.write('d 1\n') # No alpha - file.write('illum 2\n') # light normaly - - # Write images! - if img: # We have an image on the face! - # write relative image path - rel = copy_image(img) - file.write('map_Kd %s\n' % rel) # Diffuse mapping image -# file.write('map_Kd %s\n' % img.filename.split('\\')[-1].split('/')[-1]) # Diffuse mapping image - - elif mat: # No face image. if we havea material search for MTex image. - for mtex in mat.textures: - if mtex and mtex.texture.type == 'IMAGE': - try: - filename = copy_image(mtex.texture.image) + file.write('# Material Count: %i\n' % len(MTL_DICT)) + # Write material/image combinations we have used. + for key, (mtl_mat_name, mat, img) in MTL_DICT.items(): + + # Get the Blender data for the material and the image. + # Having an image named None will make a bug, dont do it :) + + file.write('newmtl %s\n' % mtl_mat_name) # Define a new material: matname_imgname + + if mat: + file.write('Ns %.6f\n' % ((mat.specular_hardness-1) * 1.9607843137254901) ) # Hardness, convert blenders 1-511 to MTL's + file.write('Ka %.6f %.6f %.6f\n' % tuple([c*mat.ambient for c in worldAmb]) ) # Ambient, uses mirror colour, + file.write('Kd %.6f %.6f %.6f\n' % tuple([c*mat.diffuse_intensity for c in mat.diffuse_color]) ) # Diffuse + file.write('Ks %.6f %.6f %.6f\n' % tuple([c*mat.specular_intensity for c in mat.specular_color]) ) # Specular + if hasattr(mat, "ior"): + file.write('Ni %.6f\n' % mat.ior) # Refraction index + else: + file.write('Ni %.6f\n' % 1.0) + file.write('d %.6f\n' % mat.alpha) # Alpha (obj uses 'd' for dissolve) + + # 0 to disable lighting, 1 for ambient & diffuse only (specular color set to black), 2 for full lighting. + if mat.shadeless: + file.write('illum 0\n') # ignore lighting + elif mat.specular_intensity == 0: + file.write('illum 1\n') # no specular. + else: + file.write('illum 2\n') # light normaly + + else: + #write a dummy material here? + file.write('Ns 0\n') + file.write('Ka %.6f %.6f %.6f\n' % tuple([c for c in worldAmb]) ) # Ambient, uses mirror colour, + file.write('Kd 0.8 0.8 0.8\n') + file.write('Ks 0.8 0.8 0.8\n') + file.write('d 1\n') # No alpha + file.write('illum 2\n') # light normaly + + # Write images! + if img: # We have an image on the face! + # write relative image path + rel = copy_image(img) + file.write('map_Kd %s\n' % rel) # Diffuse mapping image +# file.write('map_Kd %s\n' % img.filename.split('\\')[-1].split('/')[-1]) # Diffuse mapping image + + elif mat: # No face image. if we havea material search for MTex image. + for mtex in mat.textures: + if mtex and mtex.texture.type == 'IMAGE': + try: + filename = copy_image(mtex.texture.image) # filename = mtex.texture.image.filename.split('\\')[-1].split('/')[-1] - file.write('map_Kd %s\n' % filename) # Diffuse mapping image - break - except: - # Texture has no image though its an image type, best ignore. - pass - - file.write('\n\n') - - file.close() + file.write('map_Kd %s\n' % filename) # Diffuse mapping image + break + except: + # Texture has no image though its an image type, best ignore. + pass + + file.write('\n\n') + + file.close() # XXX not used def copy_file(source, dest): - file = open(source, 'rb') - data = file.read() - file.close() - - file = open(dest, 'wb') - file.write(data) - file.close() + file = open(source, 'rb') + data = file.read() + file.close() + + file = open(dest, 'wb') + file.write(data) + file.close() # XXX not used def copy_images(dest_dir): - if dest_dir[-1] != os.sep: - dest_dir += os.sep + if dest_dir[-1] != os.sep: + dest_dir += os.sep # if dest_dir[-1] != sys.sep: # dest_dir += sys.sep - - # Get unique image names - uniqueImages = {} - for matname, mat, image in MTL_DICT.values(): # Only use image name - # Get Texface images - if image: - uniqueImages[image] = image # Should use sets here. wait until Python 2.4 is default. - - # Get MTex images - if mat: - for mtex in mat.textures: - if mtex and mtex.texture.type == 'IMAGE': - image_tex = mtex.texture.image - if image_tex: - try: - uniqueImages[image_tex] = image_tex - except: - pass - - # Now copy images - copyCount = 0 - + + # Get unique image names + uniqueImages = {} + for matname, mat, image in MTL_DICT.values(): # Only use image name + # Get Texface images + if image: + uniqueImages[image] = image # Should use sets here. wait until Python 2.4 is default. + + # Get MTex images + if mat: + for mtex in mat.textures: + if mtex and mtex.texture.type == 'IMAGE': + image_tex = mtex.texture.image + if image_tex: + try: + uniqueImages[image_tex] = image_tex + except: + pass + + # Now copy images + copyCount = 0 + # for bImage in uniqueImages.values(): # image_path = bpy.utils.expandpath(bImage.filename) # if bpy.sys.exists(image_path): @@ -221,283 +221,283 @@ def copy_images(dest_dir): # paths= bpy.util.copy_images(uniqueImages.values(), dest_dir) - print('\tCopied %d images' % copyCount) + print('\tCopied %d images' % copyCount) # print('\tCopied %d images' % copyCount) # XXX not converted def test_nurbs_compat(ob): - if ob.type != 'Curve': - return False - - for nu in ob.data: - if (not nu.knotsV) and nu.type != 1: # not a surface and not bezier - return True - - return False + if ob.type != 'Curve': + return False + + for nu in ob.data: + if (not nu.knotsV) and nu.type != 1: # not a surface and not bezier + return True + + return False # XXX not converted def write_nurb(file, ob, ob_mat): - tot_verts = 0 - cu = ob.data - - # use negative indices - Vector = Blender.Mathutils.Vector - for nu in cu: - - if nu.type==0: DEG_ORDER_U = 1 - else: DEG_ORDER_U = nu.orderU-1 # Tested to be correct - - if nu.type==1: - print("\tWarning, bezier curve:", ob.name, "only poly and nurbs curves supported") - continue - - if nu.knotsV: - print("\tWarning, surface:", ob.name, "only poly and nurbs curves supported") - continue - - if len(nu) <= DEG_ORDER_U: - print("\tWarning, orderU is lower then vert count, skipping:", ob.name) - continue - - pt_num = 0 - do_closed = (nu.flagU & 1) - do_endpoints = (do_closed==0) and (nu.flagU & 2) - - for pt in nu: - pt = Vector(pt[0], pt[1], pt[2]) * ob_mat - file.write('v %.6f %.6f %.6f\n' % (pt[0], pt[1], pt[2])) - pt_num += 1 - tot_verts += pt_num - - file.write('g %s\n' % (fixName(ob.name))) # fixName(ob.getData(1)) could use the data name too - file.write('cstype bspline\n') # not ideal, hard coded - file.write('deg %d\n' % DEG_ORDER_U) # not used for curves but most files have it still - - curve_ls = [-(i+1) for i in range(pt_num)] - - # 'curv' keyword - if do_closed: - if DEG_ORDER_U == 1: - pt_num += 1 - curve_ls.append(-1) - else: - pt_num += DEG_ORDER_U - curve_ls = curve_ls + curve_ls[0:DEG_ORDER_U] - - file.write('curv 0.0 1.0 %s\n' % (' '.join( [str(i) for i in curve_ls] ))) # Blender has no U and V values for the curve - - # 'parm' keyword - tot_parm = (DEG_ORDER_U + 1) + pt_num - tot_parm_div = float(tot_parm-1) - parm_ls = [(i/tot_parm_div) for i in range(tot_parm)] - - if do_endpoints: # end points, force param - for i in range(DEG_ORDER_U+1): - parm_ls[i] = 0.0 - parm_ls[-(1+i)] = 1.0 - - file.write('parm u %s\n' % ' '.join( [str(i) for i in parm_ls] )) - - file.write('end\n') - - return tot_verts + tot_verts = 0 + cu = ob.data + + # use negative indices + Vector = Blender.Mathutils.Vector + for nu in cu: + + if nu.type==0: DEG_ORDER_U = 1 + else: DEG_ORDER_U = nu.orderU-1 # Tested to be correct + + if nu.type==1: + print("\tWarning, bezier curve:", ob.name, "only poly and nurbs curves supported") + continue + + if nu.knotsV: + print("\tWarning, surface:", ob.name, "only poly and nurbs curves supported") + continue + + if len(nu) <= DEG_ORDER_U: + print("\tWarning, orderU is lower then vert count, skipping:", ob.name) + continue + + pt_num = 0 + do_closed = (nu.flagU & 1) + do_endpoints = (do_closed==0) and (nu.flagU & 2) + + for pt in nu: + pt = Vector(pt[0], pt[1], pt[2]) * ob_mat + file.write('v %.6f %.6f %.6f\n' % (pt[0], pt[1], pt[2])) + pt_num += 1 + tot_verts += pt_num + + file.write('g %s\n' % (fixName(ob.name))) # fixName(ob.getData(1)) could use the data name too + file.write('cstype bspline\n') # not ideal, hard coded + file.write('deg %d\n' % DEG_ORDER_U) # not used for curves but most files have it still + + curve_ls = [-(i+1) for i in range(pt_num)] + + # 'curv' keyword + if do_closed: + if DEG_ORDER_U == 1: + pt_num += 1 + curve_ls.append(-1) + else: + pt_num += DEG_ORDER_U + curve_ls = curve_ls + curve_ls[0:DEG_ORDER_U] + + file.write('curv 0.0 1.0 %s\n' % (' '.join( [str(i) for i in curve_ls] ))) # Blender has no U and V values for the curve + + # 'parm' keyword + tot_parm = (DEG_ORDER_U + 1) + pt_num + tot_parm_div = float(tot_parm-1) + parm_ls = [(i/tot_parm_div) for i in range(tot_parm)] + + if do_endpoints: # end points, force param + for i in range(DEG_ORDER_U+1): + parm_ls[i] = 0.0 + parm_ls[-(1+i)] = 1.0 + + file.write('parm u %s\n' % ' '.join( [str(i) for i in parm_ls] )) + + file.write('end\n') + + return tot_verts def write(filename, objects, scene, - EXPORT_TRI=False, - EXPORT_EDGES=False, - EXPORT_NORMALS=False, - EXPORT_NORMALS_HQ=False, - EXPORT_UV=True, - EXPORT_MTL=True, - EXPORT_COPY_IMAGES=False, - EXPORT_APPLY_MODIFIERS=True, - EXPORT_ROTX90=True, - EXPORT_BLEN_OBS=True, - EXPORT_GROUP_BY_OB=False, - EXPORT_GROUP_BY_MAT=False, - EXPORT_KEEP_VERT_ORDER=False, - EXPORT_POLYGROUPS=False, - EXPORT_CURVE_AS_NURBS=True): - ''' - Basic write function. The context and options must be alredy set - This can be accessed externaly - eg. - write( 'c:\\test\\foobar.obj', Blender.Object.GetSelected() ) # Using default options. - ''' - - # XXX - import math - - def veckey3d(v): - return round(v.x, 6), round(v.y, 6), round(v.z, 6) - - def veckey2d(v): - return round(v[0], 6), round(v[1], 6) - # return round(v.x, 6), round(v.y, 6) - - def findVertexGroupName(face, vWeightMap): - """ - Searches the vertexDict to see what groups is assigned to a given face. - We use a frequency system in order to sort out the name because a given vetex can - belong to two or more groups at the same time. To find the right name for the face - we list all the possible vertex group names with their frequency and then sort by - frequency in descend order. The top element is the one shared by the highest number - of vertices is the face's group - """ - weightDict = {} - for vert_index in face.verts: + EXPORT_TRI=False, + EXPORT_EDGES=False, + EXPORT_NORMALS=False, + EXPORT_NORMALS_HQ=False, + EXPORT_UV=True, + EXPORT_MTL=True, + EXPORT_COPY_IMAGES=False, + EXPORT_APPLY_MODIFIERS=True, + EXPORT_ROTX90=True, + EXPORT_BLEN_OBS=True, + EXPORT_GROUP_BY_OB=False, + EXPORT_GROUP_BY_MAT=False, + EXPORT_KEEP_VERT_ORDER=False, + EXPORT_POLYGROUPS=False, + EXPORT_CURVE_AS_NURBS=True): + ''' + Basic write function. The context and options must be alredy set + This can be accessed externaly + eg. + write( 'c:\\test\\foobar.obj', Blender.Object.GetSelected() ) # Using default options. + ''' + + # XXX + import math + + def veckey3d(v): + return round(v.x, 6), round(v.y, 6), round(v.z, 6) + + def veckey2d(v): + return round(v[0], 6), round(v[1], 6) + # return round(v.x, 6), round(v.y, 6) + + def findVertexGroupName(face, vWeightMap): + """ + Searches the vertexDict to see what groups is assigned to a given face. + We use a frequency system in order to sort out the name because a given vetex can + belong to two or more groups at the same time. To find the right name for the face + we list all the possible vertex group names with their frequency and then sort by + frequency in descend order. The top element is the one shared by the highest number + of vertices is the face's group + """ + weightDict = {} + for vert_index in face.verts: # for vert in face: - vWeights = vWeightMap[vert_index] + vWeights = vWeightMap[vert_index] # vWeights = vWeightMap[vert] - for vGroupName, weight in vWeights: - weightDict[vGroupName] = weightDict.get(vGroupName, 0) + weight - - if weightDict: - alist = [(weight,vGroupName) for vGroupName, weight in weightDict.items()] # sort least to greatest amount of weight - alist.sort() - return(alist[-1][1]) # highest value last - else: - return '(null)' + for vGroupName, weight in vWeights: + weightDict[vGroupName] = weightDict.get(vGroupName, 0) + weight - # TODO: implement this in C? dunno how it should be called... - def getVertsFromGroup(me, group_index): - ret = [] + if weightDict: + alist = [(weight,vGroupName) for vGroupName, weight in weightDict.items()] # sort least to greatest amount of weight + alist.sort() + return(alist[-1][1]) # highest value last + else: + return '(null)' - for i, v in enumerate(me.verts): - for g in v.groups: - if g.group == group_index: - ret.append((i, g.weight)) + # TODO: implement this in C? dunno how it should be called... + def getVertsFromGroup(me, group_index): + ret = [] - return ret + for i, v in enumerate(me.verts): + for g in v.groups: + if g.group == group_index: + ret.append((i, g.weight)) + return ret - print('OBJ Export path: "%s"' % filename) - temp_mesh_name = '~tmp-mesh' - time1 = time.clock() + print('OBJ Export path: "%s"' % filename) + temp_mesh_name = '~tmp-mesh' + + time1 = time.clock() # time1 = sys.time() # scn = Scene.GetCurrent() - file = open(filename, "w") - - # Write Header - version = "2.5" - file.write('# Blender3D v%s OBJ File: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1] )) - file.write('# www.blender3d.org\n') - - # Tell the obj file what material file to use. - if EXPORT_MTL: - mtlfilename = '%s.mtl' % '.'.join(filename.split('.')[:-1]) - file.write('mtllib %s\n' % ( mtlfilename.split('\\')[-1].split('/')[-1] )) - - if EXPORT_ROTX90: - mat_xrot90= Mathutils.RotationMatrix(-math.pi/2, 4, 'x') - - # Initialize totals, these are updated each object - totverts = totuvco = totno = 1 - - face_vert_index = 1 - - globalNormals = {} - - # Get all meshes - for ob_main in objects: - - # ignore dupli children - if ob_main.parent and ob_main.parent.dupli_type != 'NONE': - # XXX - print(ob_main.name, 'is a dupli child - ignoring') - continue - - obs = [] - if ob_main.dupli_type != 'NONE': - # XXX - print('creating dupli_list on', ob_main.name) - ob_main.create_dupli_list() - - obs = [(dob.object, dob.matrix) for dob in ob_main.dupli_list] - - # XXX debug print - print(ob_main.name, 'has', len(obs), 'dupli children') - else: - obs = [(ob_main, ob_main.matrix)] - - for ob, ob_mat in obs: - - # XXX postponed + file = open(filename, "w") + + # Write Header + version = "2.5" + file.write('# Blender3D v%s OBJ File: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1] )) + file.write('# www.blender3d.org\n') + + # Tell the obj file what material file to use. + if EXPORT_MTL: + mtlfilename = '%s.mtl' % '.'.join(filename.split('.')[:-1]) + file.write('mtllib %s\n' % ( mtlfilename.split('\\')[-1].split('/')[-1] )) + + if EXPORT_ROTX90: + mat_xrot90= Mathutils.RotationMatrix(-math.pi/2, 4, 'x') + + # Initialize totals, these are updated each object + totverts = totuvco = totno = 1 + + face_vert_index = 1 + + globalNormals = {} + + # Get all meshes + for ob_main in objects: + + # ignore dupli children + if ob_main.parent and ob_main.parent.dupli_type != 'NONE': + # XXX + print(ob_main.name, 'is a dupli child - ignoring') + continue + + obs = [] + if ob_main.dupli_type != 'NONE': + # XXX + print('creating dupli_list on', ob_main.name) + ob_main.create_dupli_list() + + obs = [(dob.object, dob.matrix) for dob in ob_main.dupli_list] + + # XXX debug print + print(ob_main.name, 'has', len(obs), 'dupli children') + else: + obs = [(ob_main, ob_main.matrix)] + + for ob, ob_mat in obs: + + # XXX postponed # # Nurbs curve support # if EXPORT_CURVE_AS_NURBS and test_nurbs_compat(ob): # if EXPORT_ROTX90: # ob_mat = ob_mat * mat_xrot90 - + # totverts += write_nurb(file, ob, ob_mat) - + # continue # end nurbs - if ob.type != 'MESH': - continue + if ob.type != 'MESH': + continue - me = ob.create_mesh(EXPORT_APPLY_MODIFIERS, 'PREVIEW') + me = ob.create_mesh(EXPORT_APPLY_MODIFIERS, 'PREVIEW') - if EXPORT_ROTX90: - me.transform(ob_mat * mat_xrot90) - else: - me.transform(ob_mat) + if EXPORT_ROTX90: + me.transform(ob_mat * mat_xrot90) + else: + me.transform(ob_mat) # # Will work for non meshes now! :) # me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, EXPORT_POLYGROUPS, scn) # if not me: # continue - if EXPORT_UV: - faceuv = len(me.uv_textures) > 0 - else: - faceuv = False - - # XXX - todo, find a better way to do triangulation - # ...removed convert_to_triface because it relies on editmesh - ''' - # We have a valid mesh - if EXPORT_TRI and me.faces: - # Add a dummy object to it. - has_quads = False - for f in me.faces: - if f.verts[3] != 0: - has_quads = True - break - - if has_quads: - newob = bpy.data.add_object('MESH', 'temp_object') - newob.data = me - # if we forget to set Object.data - crash - scene.objects.link(newob) - newob.convert_to_triface(scene) - # mesh will still be there - scene.objects.unlink(newob) - ''' - - # Make our own list so it can be sorted to reduce context switching - face_index_pairs = [ (face, index) for index, face in enumerate(me.faces)] - # faces = [ f for f in me.faces ] - - if EXPORT_EDGES: - edges = me.edges - else: - edges = [] - - if not (len(face_index_pairs)+len(edges)+len(me.verts)): # Make sure there is somthing to write - - # clean up - bpy.data.remove_mesh(me) - - continue # dont bother with this mesh. - - # XXX - # High Quality Normals - if EXPORT_NORMALS and face_index_pairs: - me.calc_normals() + if EXPORT_UV: + faceuv = len(me.uv_textures) > 0 + else: + faceuv = False + + # XXX - todo, find a better way to do triangulation + # ...removed convert_to_triface because it relies on editmesh + ''' + # We have a valid mesh + if EXPORT_TRI and me.faces: + # Add a dummy object to it. + has_quads = False + for f in me.faces: + if f.verts[3] != 0: + has_quads = True + break + + if has_quads: + newob = bpy.data.add_object('MESH', 'temp_object') + newob.data = me + # if we forget to set Object.data - crash + scene.objects.link(newob) + newob.convert_to_triface(scene) + # mesh will still be there + scene.objects.unlink(newob) + ''' + + # Make our own list so it can be sorted to reduce context switching + face_index_pairs = [ (face, index) for index, face in enumerate(me.faces)] + # faces = [ f for f in me.faces ] + + if EXPORT_EDGES: + edges = me.edges + else: + edges = [] + + if not (len(face_index_pairs)+len(edges)+len(me.verts)): # Make sure there is somthing to write + + # clean up + bpy.data.remove_mesh(me) + + continue # dont bother with this mesh. + + # XXX + # High Quality Normals + if EXPORT_NORMALS and face_index_pairs: + me.calc_normals() # if EXPORT_NORMALS_HQ: # BPyMesh.meshCalcNormals(me) # else: @@ -505,51 +505,51 @@ def write(filename, objects, scene, # # when the matrix is scaled, # # better to recalculate them # me.calcNormals() - - materials = me.materials - - materialNames = [] - materialItems = [m for m in materials] - if materials: - for mat in materials: - if mat: # !=None - materialNames.append(mat.name) - else: - materialNames.append(None) - # Cant use LC because some materials are None. - # materialNames = map(lambda mat: mat.name, materials) # Bug Blender, dosent account for null materials, still broken. - - # Possible there null materials, will mess up indicies - # but at least it will export, wait until Blender gets fixed. - materialNames.extend((16-len(materialNames)) * [None]) - materialItems.extend((16-len(materialItems)) * [None]) - - # Sort by Material, then images - # so we dont over context switch in the obj file. - if EXPORT_KEEP_VERT_ORDER: - pass - elif faceuv: - # XXX update - tface = me.active_uv_texture.data - - # exception only raised if Python 2.3 or lower... - try: - face_index_pairs.sort(key = lambda a: (a[0].material_index, tface[a[1]].image, a[0].smooth)) - except: - face_index_pairs.sort(lambda a,b: cmp((a[0].material_index, tface[a[1]].image, a[0].smooth), - (b[0].material_index, tface[b[1]].image, b[0].smooth))) - elif len(materials) > 1: - try: - face_index_pairs.sort(key = lambda a: (a[0].material_index, a[0].smooth)) - except: - face_index_pairs.sort(lambda a,b: cmp((a[0].material_index, a[0].smooth), - (b[0].material_index, b[0].smooth))) - else: - # no materials - try: - face_index_pairs.sort(key = lambda a: a[0].smooth) - except: - face_index_pairs.sort(lambda a,b: cmp(a[0].smooth, b[0].smooth)) + + materials = me.materials + + materialNames = [] + materialItems = [m for m in materials] + if materials: + for mat in materials: + if mat: # !=None + materialNames.append(mat.name) + else: + materialNames.append(None) + # Cant use LC because some materials are None. + # materialNames = map(lambda mat: mat.name, materials) # Bug Blender, dosent account for null materials, still broken. + + # Possible there null materials, will mess up indicies + # but at least it will export, wait until Blender gets fixed. + materialNames.extend((16-len(materialNames)) * [None]) + materialItems.extend((16-len(materialItems)) * [None]) + + # Sort by Material, then images + # so we dont over context switch in the obj file. + if EXPORT_KEEP_VERT_ORDER: + pass + elif faceuv: + # XXX update + tface = me.active_uv_texture.data + + # exception only raised if Python 2.3 or lower... + try: + face_index_pairs.sort(key = lambda a: (a[0].material_index, tface[a[1]].image, a[0].smooth)) + except: + face_index_pairs.sort(lambda a,b: cmp((a[0].material_index, tface[a[1]].image, a[0].smooth), + (b[0].material_index, tface[b[1]].image, b[0].smooth))) + elif len(materials) > 1: + try: + face_index_pairs.sort(key = lambda a: (a[0].material_index, a[0].smooth)) + except: + face_index_pairs.sort(lambda a,b: cmp((a[0].material_index, a[0].smooth), + (b[0].material_index, b[0].smooth))) + else: + # no materials + try: + face_index_pairs.sort(key = lambda a: a[0].smooth) + except: + face_index_pairs.sort(lambda a,b: cmp(a[0].smooth, b[0].smooth)) # if EXPORT_KEEP_VERT_ORDER: # pass # elif faceuv: @@ -563,58 +563,58 @@ def write(filename, objects, scene, # try: faces.sort(key = lambda a: a.smooth) # except: faces.sort(lambda a,b: cmp(a.smooth, b.smooth)) - faces = [pair[0] for pair in face_index_pairs] - - # Set the default mat to no material and no image. - contextMat = (0, 0) # Can never be this, so we will label a new material teh first chance we get. - contextSmooth = None # Will either be true or false, set bad to force initialization switch. - - if EXPORT_BLEN_OBS or EXPORT_GROUP_BY_OB: - name1 = ob.name - name2 = ob.data.name - if name1 == name2: - obnamestring = fixName(name1) - else: - obnamestring = '%s_%s' % (fixName(name1), fixName(name2)) - - if EXPORT_BLEN_OBS: - file.write('o %s\n' % obnamestring) # Write Object name - else: # if EXPORT_GROUP_BY_OB: - file.write('g %s\n' % obnamestring) - - - # Vert - for v in me.verts: - file.write('v %.6f %.6f %.6f\n' % tuple(v.co)) - - # UV - if faceuv: - uv_face_mapping = [[0,0,0,0] for f in faces] # a bit of a waste for tri's :/ - - uv_dict = {} # could use a set() here - uv_layer = me.active_uv_texture - for f, f_index in face_index_pairs: - - tface = uv_layer.data[f_index] - - uvs = tface.uv - # uvs = [tface.uv1, tface.uv2, tface.uv3] - - # # add another UV if it's a quad - # if len(f.verts) == 4: - # uvs.append(tface.uv4) - - for uv_index, uv in enumerate(uvs): - uvkey = veckey2d(uv) - try: - uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] - except: - uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict) - file.write('vt %.6f %.6f\n' % tuple(uv)) + faces = [pair[0] for pair in face_index_pairs] + + # Set the default mat to no material and no image. + contextMat = (0, 0) # Can never be this, so we will label a new material teh first chance we get. + contextSmooth = None # Will either be true or false, set bad to force initialization switch. + + if EXPORT_BLEN_OBS or EXPORT_GROUP_BY_OB: + name1 = ob.name + name2 = ob.data.name + if name1 == name2: + obnamestring = fixName(name1) + else: + obnamestring = '%s_%s' % (fixName(name1), fixName(name2)) + + if EXPORT_BLEN_OBS: + file.write('o %s\n' % obnamestring) # Write Object name + else: # if EXPORT_GROUP_BY_OB: + file.write('g %s\n' % obnamestring) + + + # Vert + for v in me.verts: + file.write('v %.6f %.6f %.6f\n' % tuple(v.co)) + + # UV + if faceuv: + uv_face_mapping = [[0,0,0,0] for f in faces] # a bit of a waste for tri's :/ + + uv_dict = {} # could use a set() here + uv_layer = me.active_uv_texture + for f, f_index in face_index_pairs: + + tface = uv_layer.data[f_index] + + uvs = tface.uv + # uvs = [tface.uv1, tface.uv2, tface.uv3] + + # # add another UV if it's a quad + # if len(f.verts) == 4: + # uvs.append(tface.uv4) + + for uv_index, uv in enumerate(uvs): + uvkey = veckey2d(uv) + try: + uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] + except: + uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict) + file.write('vt %.6f %.6f\n' % tuple(uv)) # uv_dict = {} # could use a set() here # for f_index, f in enumerate(faces): - + # for uv_index, uv in enumerate(f.uv): # uvkey = veckey2d(uv) # try: @@ -622,83 +622,83 @@ def write(filename, objects, scene, # except: # uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict) # file.write('vt %.6f %.6f\n' % tuple(uv)) - - uv_unique_count = len(uv_dict) + + uv_unique_count = len(uv_dict) # del uv, uvkey, uv_dict, f_index, uv_index - # Only need uv_unique_count and uv_face_mapping - - # NORMAL, Smooth/Non smoothed. - if EXPORT_NORMALS: - for f in faces: - if f.smooth: - for v in f: - noKey = veckey3d(v.normal) - if noKey not in globalNormals: - globalNormals[noKey] = totno - totno +=1 - file.write('vn %.6f %.6f %.6f\n' % noKey) - else: - # Hard, 1 normal from the face. - noKey = veckey3d(f.normal) - if noKey not in globalNormals: - globalNormals[noKey] = totno - totno +=1 - file.write('vn %.6f %.6f %.6f\n' % noKey) - - if not faceuv: - f_image = None - - # XXX - if EXPORT_POLYGROUPS: - # Retrieve the list of vertex groups + # Only need uv_unique_count and uv_face_mapping + + # NORMAL, Smooth/Non smoothed. + if EXPORT_NORMALS: + for f in faces: + if f.smooth: + for v in f: + noKey = veckey3d(v.normal) + if noKey not in globalNormals: + globalNormals[noKey] = totno + totno +=1 + file.write('vn %.6f %.6f %.6f\n' % noKey) + else: + # Hard, 1 normal from the face. + noKey = veckey3d(f.normal) + if noKey not in globalNormals: + globalNormals[noKey] = totno + totno +=1 + file.write('vn %.6f %.6f %.6f\n' % noKey) + + if not faceuv: + f_image = None + + # XXX + if EXPORT_POLYGROUPS: + # Retrieve the list of vertex groups # vertGroupNames = me.getVertGroupNames() - currentVGroup = '' - # Create a dictionary keyed by face id and listing, for each vertex, the vertex groups it belongs to - vgroupsMap = [[] for _i in range(len(me.verts))] + currentVGroup = '' + # Create a dictionary keyed by face id and listing, for each vertex, the vertex groups it belongs to + vgroupsMap = [[] for _i in range(len(me.verts))] # vgroupsMap = [[] for _i in xrange(len(me.verts))] - for g in ob.vertex_groups: + for g in ob.vertex_groups: # for vertexGroupName in vertGroupNames: - for vIdx, vWeight in getVertsFromGroup(me, g.index): + for vIdx, vWeight in getVertsFromGroup(me, g.index): # for vIdx, vWeight in me.getVertsFromGroup(vertexGroupName, 1): - vgroupsMap[vIdx].append((g.name, vWeight)) + vgroupsMap[vIdx].append((g.name, vWeight)) - for f_index, f in enumerate(faces): - f_v = [{"index": index, "vertex": me.verts[index]} for index in f.verts] + for f_index, f in enumerate(faces): + f_v = [{"index": index, "vertex": me.verts[index]} for index in f.verts] - # if f.verts[3] == 0: - # f_v.pop() + # if f.verts[3] == 0: + # f_v.pop() # f_v= f.v - f_smooth= f.smooth - f_mat = min(f.material_index, len(materialNames)-1) + f_smooth= f.smooth + f_mat = min(f.material_index, len(materialNames)-1) # f_mat = min(f.mat, len(materialNames)-1) - if faceuv: + if faceuv: - tface = me.active_uv_texture.data[face_index_pairs[f_index][1]] + tface = me.active_uv_texture.data[face_index_pairs[f_index][1]] - f_image = tface.image - f_uv = tface.uv - # f_uv= [tface.uv1, tface.uv2, tface.uv3] - # if len(f.verts) == 4: - # f_uv.append(tface.uv4) + f_image = tface.image + f_uv = tface.uv + # f_uv= [tface.uv1, tface.uv2, tface.uv3] + # if len(f.verts) == 4: + # f_uv.append(tface.uv4) # f_image = f.image # f_uv= f.uv - - # MAKE KEY - if faceuv and f_image: # Object is always true. - key = materialNames[f_mat], f_image.name - else: - key = materialNames[f_mat], None # No image, use None instead. - - # Write the vertex group - if EXPORT_POLYGROUPS: - if len(ob.vertex_groups): - # find what vertext group the face belongs to - theVGroup = findVertexGroupName(f,vgroupsMap) - if theVGroup != currentVGroup: - currentVGroup = theVGroup - file.write('g %s\n' % theVGroup) + + # MAKE KEY + if faceuv and f_image: # Object is always true. + key = materialNames[f_mat], f_image.name + else: + key = materialNames[f_mat], None # No image, use None instead. + + # Write the vertex group + if EXPORT_POLYGROUPS: + if len(ob.vertex_groups): + # find what vertext group the face belongs to + theVGroup = findVertexGroupName(f,vgroupsMap) + if theVGroup != currentVGroup: + currentVGroup = theVGroup + file.write('g %s\n' % theVGroup) # # Write the vertex group # if EXPORT_POLYGROUPS: # if vertGroupNames: @@ -708,110 +708,110 @@ def write(filename, objects, scene, # currentVGroup = theVGroup # file.write('g %s\n' % theVGroup) - # CHECK FOR CONTEXT SWITCH - if key == contextMat: - pass # Context alredy switched, dont do anything - else: - if key[0] == None and key[1] == None: - # Write a null material, since we know the context has changed. - if EXPORT_GROUP_BY_MAT: - # can be mat_image or (null) - file.write('g %s_%s\n' % (fixName(ob.name), fixName(ob.data.name)) ) # can be mat_image or (null) - file.write('usemtl (null)\n') # mat, image - - else: - mat_data= MTL_DICT.get(key) - if not mat_data: - # First add to global dict so we can export to mtl - # Then write mtl - - # Make a new names from the mat and image name, - # converting any spaces to underscores with fixName. - - # If none image dont bother adding it to the name - if key[1] == None: - mat_data = MTL_DICT[key] = ('%s'%fixName(key[0])), materialItems[f_mat], f_image - else: - mat_data = MTL_DICT[key] = ('%s_%s' % (fixName(key[0]), fixName(key[1]))), materialItems[f_mat], f_image - - if EXPORT_GROUP_BY_MAT: - file.write('g %s_%s_%s\n' % (fixName(ob.name), fixName(ob.data.name), mat_data[0]) ) # can be mat_image or (null) - - file.write('usemtl %s\n' % mat_data[0]) # can be mat_image or (null) - - contextMat = key - if f_smooth != contextSmooth: - if f_smooth: # on now off - file.write('s 1\n') - contextSmooth = f_smooth - else: # was off now on - file.write('s off\n') - contextSmooth = f_smooth - - file.write('f') - if faceuv: - if EXPORT_NORMALS: - if f_smooth: # Smoothed, use vertex normals - for vi, v in enumerate(f_v): - file.write( ' %d/%d/%d' % \ - (v["index"] + totverts, - totuvco + uv_face_mapping[f_index][vi], - globalNormals[ veckey3d(v["vertex"].normal) ]) ) # vert, uv, normal - - else: # No smoothing, face normals - no = globalNormals[ veckey3d(f.normal) ] - for vi, v in enumerate(f_v): - file.write( ' %d/%d/%d' % \ - (v["index"] + totverts, - totuvco + uv_face_mapping[f_index][vi], - no) ) # vert, uv, normal - else: # No Normals - for vi, v in enumerate(f_v): - file.write( ' %d/%d' % (\ - v["index"] + totverts,\ - totuvco + uv_face_mapping[f_index][vi])) # vert, uv - - face_vert_index += len(f_v) - - else: # No UV's - if EXPORT_NORMALS: - if f_smooth: # Smoothed, use vertex normals - for v in f_v: - file.write( ' %d//%d' % - (v["index"] + totverts, globalNormals[ veckey3d(v["vertex"].normal) ]) ) - else: # No smoothing, face normals - no = globalNormals[ veckey3d(f.normal) ] - for v in f_v: - file.write( ' %d//%d' % (v["index"] + totverts, no) ) - else: # No Normals - for v in f_v: - file.write( ' %d' % (v["index"] + totverts) ) - - file.write('\n') - - # Write edges. - if EXPORT_EDGES: - for ed in edges: - if ed.loose: - file.write('f %d %d\n' % (ed.verts[0] + totverts, ed.verts[1] + totverts)) - - # Make the indicies global rather then per mesh - totverts += len(me.verts) - if faceuv: - totuvco += uv_unique_count - - # clean up - bpy.data.remove_mesh(me) - - if ob_main.dupli_type != 'NONE': - ob_main.free_dupli_list() - - file.close() - - - # Now we have all our materials, save them - if EXPORT_MTL: - write_mtl(scene, mtlfilename, EXPORT_COPY_IMAGES) + # CHECK FOR CONTEXT SWITCH + if key == contextMat: + pass # Context alredy switched, dont do anything + else: + if key[0] == None and key[1] == None: + # Write a null material, since we know the context has changed. + if EXPORT_GROUP_BY_MAT: + # can be mat_image or (null) + file.write('g %s_%s\n' % (fixName(ob.name), fixName(ob.data.name)) ) # can be mat_image or (null) + file.write('usemtl (null)\n') # mat, image + + else: + mat_data= MTL_DICT.get(key) + if not mat_data: + # First add to global dict so we can export to mtl + # Then write mtl + + # Make a new names from the mat and image name, + # converting any spaces to underscores with fixName. + + # If none image dont bother adding it to the name + if key[1] == None: + mat_data = MTL_DICT[key] = ('%s'%fixName(key[0])), materialItems[f_mat], f_image + else: + mat_data = MTL_DICT[key] = ('%s_%s' % (fixName(key[0]), fixName(key[1]))), materialItems[f_mat], f_image + + if EXPORT_GROUP_BY_MAT: + file.write('g %s_%s_%s\n' % (fixName(ob.name), fixName(ob.data.name), mat_data[0]) ) # can be mat_image or (null) + + file.write('usemtl %s\n' % mat_data[0]) # can be mat_image or (null) + + contextMat = key + if f_smooth != contextSmooth: + if f_smooth: # on now off + file.write('s 1\n') + contextSmooth = f_smooth + else: # was off now on + file.write('s off\n') + contextSmooth = f_smooth + + file.write('f') + if faceuv: + if EXPORT_NORMALS: + if f_smooth: # Smoothed, use vertex normals + for vi, v in enumerate(f_v): + file.write( ' %d/%d/%d' % \ + (v["index"] + totverts, + totuvco + uv_face_mapping[f_index][vi], + globalNormals[ veckey3d(v["vertex"].normal) ]) ) # vert, uv, normal + + else: # No smoothing, face normals + no = globalNormals[ veckey3d(f.normal) ] + for vi, v in enumerate(f_v): + file.write( ' %d/%d/%d' % \ + (v["index"] + totverts, + totuvco + uv_face_mapping[f_index][vi], + no) ) # vert, uv, normal + else: # No Normals + for vi, v in enumerate(f_v): + file.write( ' %d/%d' % (\ + v["index"] + totverts,\ + totuvco + uv_face_mapping[f_index][vi])) # vert, uv + + face_vert_index += len(f_v) + + else: # No UV's + if EXPORT_NORMALS: + if f_smooth: # Smoothed, use vertex normals + for v in f_v: + file.write( ' %d//%d' % + (v["index"] + totverts, globalNormals[ veckey3d(v["vertex"].normal) ]) ) + else: # No smoothing, face normals + no = globalNormals[ veckey3d(f.normal) ] + for v in f_v: + file.write( ' %d//%d' % (v["index"] + totverts, no) ) + else: # No Normals + for v in f_v: + file.write( ' %d' % (v["index"] + totverts) ) + + file.write('\n') + + # Write edges. + if EXPORT_EDGES: + for ed in edges: + if ed.loose: + file.write('f %d %d\n' % (ed.verts[0] + totverts, ed.verts[1] + totverts)) + + # Make the indicies global rather then per mesh + totverts += len(me.verts) + if faceuv: + totuvco += uv_unique_count + + # clean up + bpy.data.remove_mesh(me) + + if ob_main.dupli_type != 'NONE': + ob_main.free_dupli_list() + + file.close() + + + # Now we have all our materials, save them + if EXPORT_MTL: + write_mtl(scene, mtlfilename, EXPORT_COPY_IMAGES) # if EXPORT_COPY_IMAGES: # dest_dir = os.path.basename(filename) # # dest_dir = filename @@ -823,93 +823,93 @@ def write(filename, objects, scene, # else: # print('\tError: "%s" could not be used as a base for an image path.' % filename) - print("OBJ Export time: %.2f" % (time.clock() - time1)) + print("OBJ Export time: %.2f" % (time.clock() - time1)) # print "OBJ Export time: %.2f" % (sys.time() - time1) -def do_export(filename, context, - EXPORT_APPLY_MODIFIERS = True, # not used - EXPORT_ROTX90 = True, # wrong - EXPORT_TRI = False, # ok - EXPORT_EDGES = False, - EXPORT_NORMALS = False, # not yet - EXPORT_NORMALS_HQ = False, # not yet - EXPORT_UV = True, # ok - EXPORT_MTL = True, - EXPORT_SEL_ONLY = True, # ok - EXPORT_ALL_SCENES = False, # XXX not working atm - EXPORT_ANIMATION = False, - EXPORT_COPY_IMAGES = False, - EXPORT_BLEN_OBS = True, - EXPORT_GROUP_BY_OB = False, - EXPORT_GROUP_BY_MAT = False, - EXPORT_KEEP_VERT_ORDER = False, - EXPORT_POLYGROUPS = False, - EXPORT_CURVE_AS_NURBS = True): - # Window.EditMode(0) - # Window.WaitCursor(1) - - base_name, ext = splitExt(filename) - context_name = [base_name, '', '', ext] # Base name, scene name, frame number, extension - - orig_scene = context.scene +def do_export(filename, context, + EXPORT_APPLY_MODIFIERS = True, # not used + EXPORT_ROTX90 = True, # wrong + EXPORT_TRI = False, # ok + EXPORT_EDGES = False, + EXPORT_NORMALS = False, # not yet + EXPORT_NORMALS_HQ = False, # not yet + EXPORT_UV = True, # ok + EXPORT_MTL = True, + EXPORT_SEL_ONLY = True, # ok + EXPORT_ALL_SCENES = False, # XXX not working atm + EXPORT_ANIMATION = False, + EXPORT_COPY_IMAGES = False, + EXPORT_BLEN_OBS = True, + EXPORT_GROUP_BY_OB = False, + EXPORT_GROUP_BY_MAT = False, + EXPORT_KEEP_VERT_ORDER = False, + EXPORT_POLYGROUPS = False, + EXPORT_CURVE_AS_NURBS = True): + # Window.EditMode(0) + # Window.WaitCursor(1) + + base_name, ext = splitExt(filename) + context_name = [base_name, '', '', ext] # Base name, scene name, frame number, extension + + orig_scene = context.scene # if EXPORT_ALL_SCENES: # export_scenes = bpy.data.scenes # else: # export_scenes = [orig_scene] - # XXX only exporting one scene atm since changing - # current scene is not possible. - # Brecht says that ideally in 2.5 we won't need such a function, - # allowing multiple scenes open at once. - export_scenes = [orig_scene] - - # Export all scenes. - for scn in export_scenes: - # scn.makeCurrent() # If already current, this is not slow. - # context = scn.getRenderingContext() - orig_frame = scn.current_frame - - if EXPORT_ALL_SCENES: # Add scene name into the context_name - context_name[1] = '_%s' % bpy.utils.clean_name(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. - - # Export an animation? - if EXPORT_ANIMATION: - scene_frames = range(scn.start_frame, context.end_frame+1) # Up to and including the end frame. - else: - scene_frames = [orig_frame] # Dont export an animation. - - # Loop through all frames in the scene and export. - for frame in scene_frames: - if EXPORT_ANIMATION: # Add frame to the filename. - context_name[2] = '_%.6d' % frame - - scn.current_frame = frame - if EXPORT_SEL_ONLY: - export_objects = context.selected_objects - else: - export_objects = scn.objects - - full_path= ''.join(context_name) - - # erm... bit of a problem here, this can overwrite files when exporting frames. not too bad. - # EXPORT THE FILE. - write(full_path, export_objects, scn, - EXPORT_TRI, EXPORT_EDGES, EXPORT_NORMALS, - EXPORT_NORMALS_HQ, EXPORT_UV, EXPORT_MTL, - EXPORT_COPY_IMAGES, EXPORT_APPLY_MODIFIERS, - EXPORT_ROTX90, EXPORT_BLEN_OBS, - EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER, - EXPORT_POLYGROUPS, EXPORT_CURVE_AS_NURBS) - - - scn.current_frame = orig_frame - - # Restore old active scene. + # XXX only exporting one scene atm since changing + # current scene is not possible. + # Brecht says that ideally in 2.5 we won't need such a function, + # allowing multiple scenes open at once. + export_scenes = [orig_scene] + + # Export all scenes. + for scn in export_scenes: + # scn.makeCurrent() # If already current, this is not slow. + # context = scn.getRenderingContext() + orig_frame = scn.current_frame + + if EXPORT_ALL_SCENES: # Add scene name into the context_name + context_name[1] = '_%s' % bpy.utils.clean_name(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied. + + # Export an animation? + if EXPORT_ANIMATION: + scene_frames = range(scn.start_frame, context.end_frame+1) # Up to and including the end frame. + else: + scene_frames = [orig_frame] # Dont export an animation. + + # Loop through all frames in the scene and export. + for frame in scene_frames: + if EXPORT_ANIMATION: # Add frame to the filename. + context_name[2] = '_%.6d' % frame + + scn.current_frame = frame + if EXPORT_SEL_ONLY: + export_objects = context.selected_objects + else: + export_objects = scn.objects + + full_path= ''.join(context_name) + + # erm... bit of a problem here, this can overwrite files when exporting frames. not too bad. + # EXPORT THE FILE. + write(full_path, export_objects, scn, + EXPORT_TRI, EXPORT_EDGES, EXPORT_NORMALS, + EXPORT_NORMALS_HQ, EXPORT_UV, EXPORT_MTL, + EXPORT_COPY_IMAGES, EXPORT_APPLY_MODIFIERS, + EXPORT_ROTX90, EXPORT_BLEN_OBS, + EXPORT_GROUP_BY_OB, EXPORT_GROUP_BY_MAT, EXPORT_KEEP_VERT_ORDER, + EXPORT_POLYGROUPS, EXPORT_CURVE_AS_NURBS) + + + scn.current_frame = orig_frame + + # Restore old active scene. # orig_scene.makeCurrent() # Window.WaitCursor(0) - + ''' Currently the exporter lacks these features: * nurbs @@ -920,71 +920,71 @@ Currently the exporter lacks these features: from bpy.props import * class ExportOBJ(bpy.types.Operator): - '''Save a Wavefront OBJ File''' - - bl_idname = "export.obj" - bl_label = 'Export OBJ' - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - path = StringProperty(name="File Path", description="File path used for exporting the OBJ file", maxlen= 1024, default= "") - - # context group - use_selection = BoolProperty(name="Selection Only", description="", default= False) - use_all_scenes = BoolProperty(name="All Scenes", description="", default= False) - use_animation = BoolProperty(name="All Animation", description="", default= False) - - # object group - use_modifiers = BoolProperty(name="Apply Modifiers", description="", default= True) - use_rotate90 = BoolProperty(name="Rotate X90", description="", default= True) - - # extra data group - use_edges = BoolProperty(name="Edges", description="", default= True) - use_normals = BoolProperty(name="Normals", description="", default= False) - use_hq_normals = BoolProperty(name="High Quality Normals", description="", default= True) - use_uvs = BoolProperty(name="UVs", description="", default= True) - use_materials = BoolProperty(name="Materials", description="", default= True) - copy_images = BoolProperty(name="Copy Images", description="", default= False) - use_triangles = BoolProperty(name="Triangulate", description="", default= False) - use_vertex_groups = BoolProperty(name="Polygroups", description="", default= False) - use_nurbs = BoolProperty(name="Nurbs", description="", default= False) - - # grouping group - use_blen_objects = BoolProperty(name="Objects as OBJ Objects", description="", default= True) - group_by_object = BoolProperty(name="Objects as OBJ Groups ", description="", default= False) - group_by_material = BoolProperty(name="Material Groups", description="", default= False) - keep_vertex_order = BoolProperty(name="Keep Vertex Order", description="", default= False) - - - def execute(self, context): - - do_export(self.properties.path, context, - EXPORT_TRI=self.properties.use_triangles, - EXPORT_EDGES=self.properties.use_edges, - EXPORT_NORMALS=self.properties.use_normals, - EXPORT_NORMALS_HQ=self.properties.use_hq_normals, - EXPORT_UV=self.properties.use_uvs, - EXPORT_MTL=self.properties.use_materials, - EXPORT_COPY_IMAGES=self.properties.copy_images, - EXPORT_APPLY_MODIFIERS=self.properties.use_modifiers, - EXPORT_ROTX90=self.properties.use_rotate90, - EXPORT_BLEN_OBS=self.properties.use_blen_objects, - EXPORT_GROUP_BY_OB=self.properties.group_by_object, - EXPORT_GROUP_BY_MAT=self.properties.group_by_material, - EXPORT_KEEP_VERT_ORDER=self.properties.keep_vertex_order, - EXPORT_POLYGROUPS=self.properties.use_vertex_groups, - EXPORT_CURVE_AS_NURBS=self.properties.use_nurbs, - EXPORT_SEL_ONLY=self.properties.use_selection, - EXPORT_ALL_SCENES=self.properties.use_all_scenes) - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) - + '''Save a Wavefront OBJ File''' + + bl_idname = "export.obj" + bl_label = 'Export OBJ' + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + path = StringProperty(name="File Path", description="File path used for exporting the OBJ file", maxlen= 1024, default= "") + + # context group + use_selection = BoolProperty(name="Selection Only", description="", default= False) + use_all_scenes = BoolProperty(name="All Scenes", description="", default= False) + use_animation = BoolProperty(name="All Animation", description="", default= False) + + # object group + use_modifiers = BoolProperty(name="Apply Modifiers", description="", default= True) + use_rotate90 = BoolProperty(name="Rotate X90", description="", default= True) + + # extra data group + use_edges = BoolProperty(name="Edges", description="", default= True) + use_normals = BoolProperty(name="Normals", description="", default= False) + use_hq_normals = BoolProperty(name="High Quality Normals", description="", default= True) + use_uvs = BoolProperty(name="UVs", description="", default= True) + use_materials = BoolProperty(name="Materials", description="", default= True) + copy_images = BoolProperty(name="Copy Images", description="", default= False) + use_triangles = BoolProperty(name="Triangulate", description="", default= False) + use_vertex_groups = BoolProperty(name="Polygroups", description="", default= False) + use_nurbs = BoolProperty(name="Nurbs", description="", default= False) + + # grouping group + use_blen_objects = BoolProperty(name="Objects as OBJ Objects", description="", default= True) + group_by_object = BoolProperty(name="Objects as OBJ Groups ", description="", default= False) + group_by_material = BoolProperty(name="Material Groups", description="", default= False) + keep_vertex_order = BoolProperty(name="Keep Vertex Order", description="", default= False) + + + def execute(self, context): + + do_export(self.properties.path, context, + EXPORT_TRI=self.properties.use_triangles, + EXPORT_EDGES=self.properties.use_edges, + EXPORT_NORMALS=self.properties.use_normals, + EXPORT_NORMALS_HQ=self.properties.use_hq_normals, + EXPORT_UV=self.properties.use_uvs, + EXPORT_MTL=self.properties.use_materials, + EXPORT_COPY_IMAGES=self.properties.copy_images, + EXPORT_APPLY_MODIFIERS=self.properties.use_modifiers, + EXPORT_ROTX90=self.properties.use_rotate90, + EXPORT_BLEN_OBS=self.properties.use_blen_objects, + EXPORT_GROUP_BY_OB=self.properties.group_by_object, + EXPORT_GROUP_BY_MAT=self.properties.group_by_material, + EXPORT_KEEP_VERT_ORDER=self.properties.keep_vertex_order, + EXPORT_POLYGROUPS=self.properties.use_vertex_groups, + EXPORT_CURVE_AS_NURBS=self.properties.use_nurbs, + EXPORT_SEL_ONLY=self.properties.use_selection, + EXPORT_ALL_SCENES=self.properties.use_all_scenes) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + @@ -1000,7 +1000,7 @@ def menu_func(self, context): menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) if __name__ == "__main__": - bpy.ops.EXPORT_OT_obj(filename="/tmp/test.obj") + bpy.ops.EXPORT_OT_obj(filename="/tmp/test.obj") # CONVERSION ISSUES # - matrix problem diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index f9720be4646..f2cf04ae792 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -21,7 +21,7 @@ import bpy __author__ = "Bruce Merry" __version__ = "0.93" __bpydoc__ = """\ -This script exports Stanford PLY files from Blender. It supports normals, +This script exports Stanford PLY files from Blender. It supports normals, colours, and texture coordinates per face or per vertex. Only one mesh can be exported at a time. """ @@ -69,238 +69,238 @@ def rvec3d(v): return round(v[0], 6), round(v[1], 6), round(v[2], 6) def rvec2d(v): return round(v[0], 6), round(v[1], 6) def write(filename, scene, ob, \ - EXPORT_APPLY_MODIFIERS= True,\ - EXPORT_NORMALS= True,\ - EXPORT_UV= True,\ - EXPORT_COLORS= True\ - ): - - if not filename.lower().endswith('.ply'): - filename += '.ply' - - if not ob: - raise Exception("Error, Select 1 active object") - return - - file = open(filename, 'w') - - - #EXPORT_EDGES = Draw.Create(0) - """ - is_editmode = Blender.Window.EditMode() - if is_editmode: - Blender.Window.EditMode(0, '', 0) - - Window.WaitCursor(1) - """ - - #mesh = BPyMesh.getMeshFromObject(ob, None, EXPORT_APPLY_MODIFIERS, False, scn) # XXX - if EXPORT_APPLY_MODIFIERS: - mesh = ob.create_mesh(True, 'PREVIEW') - else: - mesh = ob.data - - if not mesh: - raise ("Error, could not get mesh data from active object") - return - - # mesh.transform(ob.matrixWorld) # XXX - - faceUV = len(mesh.uv_textures) > 0 - vertexUV = len(mesh.sticky) > 0 - vertexColors = len(mesh.vertex_colors) > 0 - - if (not faceUV) and (not vertexUV): EXPORT_UV = False - if not vertexColors: EXPORT_COLORS = False - - if not EXPORT_UV: faceUV = vertexUV = False - if not EXPORT_COLORS: vertexColors = False - - if faceUV: - active_uv_layer = None - for lay in mesh.uv_textures: - if lay.active: - active_uv_layer= lay.data - break - if not active_uv_layer: - EXPORT_UV = False - faceUV = None - - if vertexColors: - active_col_layer = None - for lay in mesh.vertex_colors: - if lay.active: - active_col_layer= lay.data - if not active_col_layer: - EXPORT_COLORS = False - vertexColors = None - - # incase - color = uvcoord = uvcoord_key = normal = normal_key = None - - mesh_verts = mesh.verts # save a lookup - ply_verts = [] # list of dictionaries - # vdict = {} # (index, normal, uv) -> new index - vdict = [{} for i in range(len(mesh_verts))] - ply_faces = [[] for f in range(len(mesh.faces))] - vert_count = 0 - for i, f in enumerate(mesh.faces): - - - smooth = f.smooth - if not smooth: - normal = tuple(f.normal) - normal_key = rvec3d(normal) - - if faceUV: - uv = active_uv_layer[i] - uv = uv.uv1, uv.uv2, uv.uv3, uv.uv4 # XXX - crufty :/ - if vertexColors: - col = active_col_layer[i] - col = col.color1, col.color2, col.color3, col.color4 - - f_verts= f.verts - - pf= ply_faces[i] - for j, vidx in enumerate(f_verts): - v = mesh_verts[vidx] - - if smooth: - normal= tuple(v.normal) - normal_key = rvec3d(normal) - - if faceUV: - uvcoord= uv[j][0], 1.0-uv[j][1] - uvcoord_key = rvec2d(uvcoord) - elif vertexUV: - uvcoord= v.uvco[0], 1.0-v.uvco[1] - uvcoord_key = rvec2d(uvcoord) - - if vertexColors: - color= col[j] - color= int(color[0]*255.0), int(color[1]*255.0), int(color[2]*255.0) - - - key = normal_key, uvcoord_key, color - - vdict_local = vdict[vidx] - pf_vidx = vdict_local.get(key) # Will be None initially - - if pf_vidx == None: # same as vdict_local.has_key(key) - pf_vidx = vdict_local[key] = vert_count; - ply_verts.append((vidx, normal, uvcoord, color)) - vert_count += 1 - - pf.append(pf_vidx) - - file.write('ply\n') - file.write('format ascii 1.0\n') - version = "2.5" # Blender.Get('version') - file.write('comment Created by Blender3D %s - www.blender.org, source file: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1] )) - - file.write('element vertex %d\n' % len(ply_verts)) - - file.write('property float x\n') - file.write('property float y\n') - file.write('property float z\n') - - # XXX - """ - if EXPORT_NORMALS: - file.write('property float nx\n') - file.write('property float ny\n') - file.write('property float nz\n') - """ - if EXPORT_UV: - file.write('property float s\n') - file.write('property float t\n') - if EXPORT_COLORS: - file.write('property uchar red\n') - file.write('property uchar green\n') - file.write('property uchar blue\n') - - file.write('element face %d\n' % len(mesh.faces)) - file.write('property list uchar uint vertex_indices\n') - file.write('end_header\n') - - for i, v in enumerate(ply_verts): - file.write('%.6f %.6f %.6f ' % tuple(mesh_verts[v[0]].co)) # co - """ - if EXPORT_NORMALS: - file.write('%.6f %.6f %.6f ' % v[1]) # no - """ - if EXPORT_UV: file.write('%.6f %.6f ' % v[2]) # uv - if EXPORT_COLORS: file.write('%u %u %u' % v[3]) # col - file.write('\n') - - for pf in ply_faces: - if len(pf)==3: file.write('3 %d %d %d\n' % tuple(pf)) - else: file.write('4 %d %d %d %d\n' % tuple(pf)) - - file.close() - print("writing", filename, "done") - - if EXPORT_APPLY_MODIFIERS: - bpy.data.remove_mesh(mesh) - - # XXX - """ - if is_editmode: - Blender.Window.EditMode(1, '', 0) - """ + EXPORT_APPLY_MODIFIERS= True,\ + EXPORT_NORMALS= True,\ + EXPORT_UV= True,\ + EXPORT_COLORS= True\ + ): + + if not filename.lower().endswith('.ply'): + filename += '.ply' + + if not ob: + raise Exception("Error, Select 1 active object") + return + + file = open(filename, 'w') + + + #EXPORT_EDGES = Draw.Create(0) + """ + is_editmode = Blender.Window.EditMode() + if is_editmode: + Blender.Window.EditMode(0, '', 0) + + Window.WaitCursor(1) + """ + + #mesh = BPyMesh.getMeshFromObject(ob, None, EXPORT_APPLY_MODIFIERS, False, scn) # XXX + if EXPORT_APPLY_MODIFIERS: + mesh = ob.create_mesh(True, 'PREVIEW') + else: + mesh = ob.data + + if not mesh: + raise ("Error, could not get mesh data from active object") + return + + # mesh.transform(ob.matrixWorld) # XXX + + faceUV = len(mesh.uv_textures) > 0 + vertexUV = len(mesh.sticky) > 0 + vertexColors = len(mesh.vertex_colors) > 0 + + if (not faceUV) and (not vertexUV): EXPORT_UV = False + if not vertexColors: EXPORT_COLORS = False + + if not EXPORT_UV: faceUV = vertexUV = False + if not EXPORT_COLORS: vertexColors = False + + if faceUV: + active_uv_layer = None + for lay in mesh.uv_textures: + if lay.active: + active_uv_layer= lay.data + break + if not active_uv_layer: + EXPORT_UV = False + faceUV = None + + if vertexColors: + active_col_layer = None + for lay in mesh.vertex_colors: + if lay.active: + active_col_layer= lay.data + if not active_col_layer: + EXPORT_COLORS = False + vertexColors = None + + # incase + color = uvcoord = uvcoord_key = normal = normal_key = None + + mesh_verts = mesh.verts # save a lookup + ply_verts = [] # list of dictionaries + # vdict = {} # (index, normal, uv) -> new index + vdict = [{} for i in range(len(mesh_verts))] + ply_faces = [[] for f in range(len(mesh.faces))] + vert_count = 0 + for i, f in enumerate(mesh.faces): + + + smooth = f.smooth + if not smooth: + normal = tuple(f.normal) + normal_key = rvec3d(normal) + + if faceUV: + uv = active_uv_layer[i] + uv = uv.uv1, uv.uv2, uv.uv3, uv.uv4 # XXX - crufty :/ + if vertexColors: + col = active_col_layer[i] + col = col.color1, col.color2, col.color3, col.color4 + + f_verts= f.verts + + pf= ply_faces[i] + for j, vidx in enumerate(f_verts): + v = mesh_verts[vidx] + + if smooth: + normal= tuple(v.normal) + normal_key = rvec3d(normal) + + if faceUV: + uvcoord= uv[j][0], 1.0-uv[j][1] + uvcoord_key = rvec2d(uvcoord) + elif vertexUV: + uvcoord= v.uvco[0], 1.0-v.uvco[1] + uvcoord_key = rvec2d(uvcoord) + + if vertexColors: + color= col[j] + color= int(color[0]*255.0), int(color[1]*255.0), int(color[2]*255.0) + + + key = normal_key, uvcoord_key, color + + vdict_local = vdict[vidx] + pf_vidx = vdict_local.get(key) # Will be None initially + + if pf_vidx == None: # same as vdict_local.has_key(key) + pf_vidx = vdict_local[key] = vert_count; + ply_verts.append((vidx, normal, uvcoord, color)) + vert_count += 1 + + pf.append(pf_vidx) + + file.write('ply\n') + file.write('format ascii 1.0\n') + version = "2.5" # Blender.Get('version') + file.write('comment Created by Blender3D %s - www.blender.org, source file: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1] )) + + file.write('element vertex %d\n' % len(ply_verts)) + + file.write('property float x\n') + file.write('property float y\n') + file.write('property float z\n') + + # XXX + """ + if EXPORT_NORMALS: + file.write('property float nx\n') + file.write('property float ny\n') + file.write('property float nz\n') + """ + if EXPORT_UV: + file.write('property float s\n') + file.write('property float t\n') + if EXPORT_COLORS: + file.write('property uchar red\n') + file.write('property uchar green\n') + file.write('property uchar blue\n') + + file.write('element face %d\n' % len(mesh.faces)) + file.write('property list uchar uint vertex_indices\n') + file.write('end_header\n') + + for i, v in enumerate(ply_verts): + file.write('%.6f %.6f %.6f ' % tuple(mesh_verts[v[0]].co)) # co + """ + if EXPORT_NORMALS: + file.write('%.6f %.6f %.6f ' % v[1]) # no + """ + if EXPORT_UV: file.write('%.6f %.6f ' % v[2]) # uv + if EXPORT_COLORS: file.write('%u %u %u' % v[3]) # col + file.write('\n') + + for pf in ply_faces: + if len(pf)==3: file.write('3 %d %d %d\n' % tuple(pf)) + else: file.write('4 %d %d %d %d\n' % tuple(pf)) + + file.close() + print("writing", filename, "done") + + if EXPORT_APPLY_MODIFIERS: + bpy.data.remove_mesh(mesh) + + # XXX + """ + if is_editmode: + Blender.Window.EditMode(1, '', 0) + """ from bpy.props import * class ExportPLY(bpy.types.Operator): - '''Export a single object as a stanford PLY with normals, colours and texture coordinates.''' - bl_idname = "export.ply" - bl_label = "Export PLY" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - - path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") - use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) - use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True) - use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True) - use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True) - - - def poll(self, context): - return context.active_object != None - - def execute(self, context): - # print("Selected: " + context.active_object.name) - - if not self.properties.path: - raise Exception("filename not set") - - write(self.properties.path, context.scene, context.active_object,\ - EXPORT_APPLY_MODIFIERS = self.properties.use_modifiers, - EXPORT_NORMALS = self.properties.use_normals, - EXPORT_UV = self.properties.use_uvs, - EXPORT_COLORS = self.properties.use_colors, - ) - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) - - def draw(self, context): - layout = self.layout - props = self.properties - - row = layout.row() - row.prop(props, "use_modifiers") - row.prop(props, "use_normals") - row = layout.row() - row.prop(props, "use_uvs") - row.prop(props, "use_colors") + '''Export a single object as a stanford PLY with normals, colours and texture coordinates.''' + bl_idname = "export.ply" + bl_label = "Export PLY" + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + + path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") + use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) + use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True) + use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True) + use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True) + + + def poll(self, context): + return context.active_object != None + + def execute(self, context): + # print("Selected: " + context.active_object.name) + + if not self.properties.path: + raise Exception("filename not set") + + write(self.properties.path, context.scene, context.active_object,\ + EXPORT_APPLY_MODIFIERS = self.properties.use_modifiers, + EXPORT_NORMALS = self.properties.use_normals, + EXPORT_UV = self.properties.use_uvs, + EXPORT_COLORS = self.properties.use_colors, + ) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + + def draw(self, context): + layout = self.layout + props = self.properties + + row = layout.row() + row.prop(props, "use_modifiers") + row.prop(props, "use_normals") + row = layout.row() + row.prop(props, "use_uvs") + row.prop(props, "use_colors") bpy.ops.add(ExportPLY) @@ -308,10 +308,10 @@ bpy.ops.add(ExportPLY) import dynamic_menu def menu_func(self, context): - default_path = bpy.data.filename.replace(".blend", ".ply") - self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path + default_path = bpy.data.filename.replace(".blend", ".ply") + self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) if __name__ == "__main__": - bpy.ops.export.ply(path="/tmp/test.ply") + bpy.ops.export.ply(path="/tmp/test.ply") diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 8546d8619f4..969c4cf0752 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -29,9 +29,9 @@ Run this script from "File->Export" menu. A pop-up will ask whether you want to export only selected or all relevant objects. Known issues:
- Doesn't handle multiple materials (don't use material indices);
- Doesn't handle multiple UV textures on a single mesh (create a mesh for each texture);
- Can't get the texture array associated with material * not the UV ones; + Doesn't handle multiple materials (don't use material indices);
+ Doesn't handle multiple UV textures on a single mesh (create a mesh for each texture);
+ Can't get the texture array associated with material * not the UV ones; """ @@ -77,7 +77,7 @@ from export_3ds import create_derived_objects, free_derived_objects # import BPyObject # import BPyMesh -# +# DEG2RAD=0.017453292519943295 MATWORLD= Mathutils.RotationMatrix(-90, 4, 'x') @@ -97,1111 +97,1111 @@ extension = '' class x3d_class: - def __init__(self, filename): - #--- public you can change these --- - self.writingcolor = 0 - self.writingtexture = 0 - self.writingcoords = 0 - self.proto = 1 - self.matonly = 0 - self.share = 0 - self.billnode = 0 - self.halonode = 0 - self.collnode = 0 - self.tilenode = 0 - self.verbose=2 # level of verbosity in console 0-none, 1-some, 2-most - self.cp=3 # decimals for material color values 0.000 - 1.000 - self.vp=3 # decimals for vertex coordinate values 0.000 - n.000 - self.tp=3 # decimals for texture coordinate values 0.000 - 1.000 - self.it=3 - - #--- class private don't touch --- - self.texNames={} # dictionary of textureNames - self.matNames={} # dictionary of materiaNames - self.meshNames={} # dictionary of meshNames - self.indentLevel=0 # keeps track of current indenting - self.filename=filename - self.file = None - if filename.lower().endswith('.x3dz'): - try: - import gzip - self.file = gzip.open(filename, "w") - except: - print("failed to import compression modules, exporting uncompressed") - self.filename = filename[:-1] # remove trailing z - - if self.file == None: - self.file = open(self.filename, "w") - - self.bNav=0 - self.nodeID=0 - self.namesReserved=[ "Anchor","Appearance","Arc2D","ArcClose2D","AudioClip","Background","Billboard", - "BooleanFilter","BooleanSequencer","BooleanToggle","BooleanTrigger","Box","Circle2D", - "Collision","Color","ColorInterpolator","ColorRGBA","component","Cone","connect", - "Contour2D","ContourPolyline2D","Coordinate","CoordinateDouble","CoordinateInterpolator", - "CoordinateInterpolator2D","Cylinder","CylinderSensor","DirectionalLight","Disk2D", - "ElevationGrid","EspduTransform","EXPORT","ExternProtoDeclare","Extrusion","field", - "fieldValue","FillProperties","Fog","FontStyle","GeoCoordinate","GeoElevationGrid", - "GeoLocationLocation","GeoLOD","GeoMetadata","GeoOrigin","GeoPositionInterpolator", - "GeoTouchSensor","GeoViewpoint","Group","HAnimDisplacer","HAnimHumanoid","HAnimJoint", - "HAnimSegment","HAnimSite","head","ImageTexture","IMPORT","IndexedFaceSet", - "IndexedLineSet","IndexedTriangleFanSet","IndexedTriangleSet","IndexedTriangleStripSet", - "Inline","IntegerSequencer","IntegerTrigger","IS","KeySensor","LineProperties","LineSet", - "LoadSensor","LOD","Material","meta","MetadataDouble","MetadataFloat","MetadataInteger", - "MetadataSet","MetadataString","MovieTexture","MultiTexture","MultiTextureCoordinate", - "MultiTextureTransform","NavigationInfo","Normal","NormalInterpolator","NurbsCurve", - "NurbsCurve2D","NurbsOrientationInterpolator","NurbsPatchSurface", - "NurbsPositionInterpolator","NurbsSet","NurbsSurfaceInterpolator","NurbsSweptSurface", - "NurbsSwungSurface","NurbsTextureCoordinate","NurbsTrimmedSurface","OrientationInterpolator", - "PixelTexture","PlaneSensor","PointLight","PointSet","Polyline2D","Polypoint2D", - "PositionInterpolator","PositionInterpolator2D","ProtoBody","ProtoDeclare","ProtoInstance", - "ProtoInterface","ProximitySensor","ReceiverPdu","Rectangle2D","ROUTE","ScalarInterpolator", - "Scene","Script","Shape","SignalPdu","Sound","Sphere","SphereSensor","SpotLight","StaticGroup", - "StringSensor","Switch","Text","TextureBackground","TextureCoordinate","TextureCoordinateGenerator", - "TextureTransform","TimeSensor","TimeTrigger","TouchSensor","Transform","TransmitterPdu", - "TriangleFanSet","TriangleSet","TriangleSet2D","TriangleStripSet","Viewpoint","VisibilitySensor", - "WorldInfo","X3D","XvlShell","VertexShader","FragmentShader","MultiShaderAppearance","ShaderAppearance" ] - self.namesStandard=[ "Empty","Empty.000","Empty.001","Empty.002","Empty.003","Empty.004","Empty.005", - "Empty.006","Empty.007","Empty.008","Empty.009","Empty.010","Empty.011","Empty.012", - "Scene.001","Scene.002","Scene.003","Scene.004","Scene.005","Scene.06","Scene.013", - "Scene.006","Scene.007","Scene.008","Scene.009","Scene.010","Scene.011","Scene.012", - "World","World.000","World.001","World.002","World.003","World.004","World.005" ] - self.namesFog=[ "","LINEAR","EXPONENTIAL","" ] + def __init__(self, filename): + #--- public you can change these --- + self.writingcolor = 0 + self.writingtexture = 0 + self.writingcoords = 0 + self.proto = 1 + self.matonly = 0 + self.share = 0 + self.billnode = 0 + self.halonode = 0 + self.collnode = 0 + self.tilenode = 0 + self.verbose=2 # level of verbosity in console 0-none, 1-some, 2-most + self.cp=3 # decimals for material color values 0.000 - 1.000 + self.vp=3 # decimals for vertex coordinate values 0.000 - n.000 + self.tp=3 # decimals for texture coordinate values 0.000 - 1.000 + self.it=3 + + #--- class private don't touch --- + self.texNames={} # dictionary of textureNames + self.matNames={} # dictionary of materiaNames + self.meshNames={} # dictionary of meshNames + self.indentLevel=0 # keeps track of current indenting + self.filename=filename + self.file = None + if filename.lower().endswith('.x3dz'): + try: + import gzip + self.file = gzip.open(filename, "w") + except: + print("failed to import compression modules, exporting uncompressed") + self.filename = filename[:-1] # remove trailing z + + if self.file == None: + self.file = open(self.filename, "w") + + self.bNav=0 + self.nodeID=0 + self.namesReserved=[ "Anchor","Appearance","Arc2D","ArcClose2D","AudioClip","Background","Billboard", + "BooleanFilter","BooleanSequencer","BooleanToggle","BooleanTrigger","Box","Circle2D", + "Collision","Color","ColorInterpolator","ColorRGBA","component","Cone","connect", + "Contour2D","ContourPolyline2D","Coordinate","CoordinateDouble","CoordinateInterpolator", + "CoordinateInterpolator2D","Cylinder","CylinderSensor","DirectionalLight","Disk2D", + "ElevationGrid","EspduTransform","EXPORT","ExternProtoDeclare","Extrusion","field", + "fieldValue","FillProperties","Fog","FontStyle","GeoCoordinate","GeoElevationGrid", + "GeoLocationLocation","GeoLOD","GeoMetadata","GeoOrigin","GeoPositionInterpolator", + "GeoTouchSensor","GeoViewpoint","Group","HAnimDisplacer","HAnimHumanoid","HAnimJoint", + "HAnimSegment","HAnimSite","head","ImageTexture","IMPORT","IndexedFaceSet", + "IndexedLineSet","IndexedTriangleFanSet","IndexedTriangleSet","IndexedTriangleStripSet", + "Inline","IntegerSequencer","IntegerTrigger","IS","KeySensor","LineProperties","LineSet", + "LoadSensor","LOD","Material","meta","MetadataDouble","MetadataFloat","MetadataInteger", + "MetadataSet","MetadataString","MovieTexture","MultiTexture","MultiTextureCoordinate", + "MultiTextureTransform","NavigationInfo","Normal","NormalInterpolator","NurbsCurve", + "NurbsCurve2D","NurbsOrientationInterpolator","NurbsPatchSurface", + "NurbsPositionInterpolator","NurbsSet","NurbsSurfaceInterpolator","NurbsSweptSurface", + "NurbsSwungSurface","NurbsTextureCoordinate","NurbsTrimmedSurface","OrientationInterpolator", + "PixelTexture","PlaneSensor","PointLight","PointSet","Polyline2D","Polypoint2D", + "PositionInterpolator","PositionInterpolator2D","ProtoBody","ProtoDeclare","ProtoInstance", + "ProtoInterface","ProximitySensor","ReceiverPdu","Rectangle2D","ROUTE","ScalarInterpolator", + "Scene","Script","Shape","SignalPdu","Sound","Sphere","SphereSensor","SpotLight","StaticGroup", + "StringSensor","Switch","Text","TextureBackground","TextureCoordinate","TextureCoordinateGenerator", + "TextureTransform","TimeSensor","TimeTrigger","TouchSensor","Transform","TransmitterPdu", + "TriangleFanSet","TriangleSet","TriangleSet2D","TriangleStripSet","Viewpoint","VisibilitySensor", + "WorldInfo","X3D","XvlShell","VertexShader","FragmentShader","MultiShaderAppearance","ShaderAppearance" ] + self.namesStandard=[ "Empty","Empty.000","Empty.001","Empty.002","Empty.003","Empty.004","Empty.005", + "Empty.006","Empty.007","Empty.008","Empty.009","Empty.010","Empty.011","Empty.012", + "Scene.001","Scene.002","Scene.003","Scene.004","Scene.005","Scene.06","Scene.013", + "Scene.006","Scene.007","Scene.008","Scene.009","Scene.010","Scene.011","Scene.012", + "World","World.000","World.001","World.002","World.003","World.004","World.005" ] + self.namesFog=[ "","LINEAR","EXPONENTIAL","" ] ########################################################## # Writing nodes routines ########################################################## - def writeHeader(self): - #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '<').replace('>', '>') - bfile = self.filename.replace('<', '<').replace('>', '>') # use outfile name - self.file.write("\n") - self.file.write("\n") - self.file.write("\n") - self.file.write("\n") - self.file.write("\t\n" % os.path.basename(bfile)) - # self.file.write("\t\n" % sys.basename(bfile)) - self.file.write("\t\n" % '2.5') - # self.file.write("\t\n" % Blender.Get('version')) - self.file.write("\t\n") - self.file.write("\n") - self.file.write("\n") - - # This functionality is poorly defined, disabling for now - campbell - ''' - def writeInline(self): - inlines = Blender.Scene.Get() - allinlines = len(inlines) - if scene != inlines[0]: - return - else: - for i in xrange(allinlines): - nameinline=inlines[i].name - if (nameinline not in self.namesStandard) and (i > 0): - self.file.write("" % nameinline) - self.file.write("\n\n") - - - def writeScript(self): - textEditor = Blender.Text.Get() - alltext = len(textEditor) - for i in xrange(alltext): - nametext = textEditor[i].name - nlines = textEditor[i].getNLines() - if (self.proto == 1): - if (nametext == "proto" or nametext == "proto.js" or nametext == "proto.txt") and (nlines != None): - nalllines = len(textEditor[i].asLines()) - alllines = textEditor[i].asLines() - for j in xrange(nalllines): - self.writeIndented(alllines[j] + "\n") - elif (self.proto == 0): - if (nametext == "route" or nametext == "route.js" or nametext == "route.txt") and (nlines != None): - nalllines = len(textEditor[i].asLines()) - alllines = textEditor[i].asLines() - for j in xrange(nalllines): - self.writeIndented(alllines[j] + "\n") - self.writeIndented("\n") - ''' - - def writeViewpoint(self, ob, mat, scene): - context = scene.render_data - # context = scene.render - ratio = float(context.resolution_x)/float(context.resolution_y) - # ratio = float(context.imageSizeY())/float(context.imageSizeX()) - lens = (360* (math.atan(ratio *16 / ob.data.lens) / math.pi))*(math.pi/180) - # lens = (360* (math.atan(ratio *16 / ob.data.getLens()) / math.pi))*(math.pi/180) - lens = min(lens, math.pi) - - # get the camera location, subtract 90 degress from X to orient like X3D does - # mat = ob.matrixWorld - mat is now passed! - - loc = self.rotatePointForVRML(mat.translationPart()) - rot = mat.toEuler() - rot = (((rot[0]-90)), rot[1], rot[2]) - # rot = (((rot[0]-90)*DEG2RAD), rot[1]*DEG2RAD, rot[2]*DEG2RAD) - nRot = self.rotatePointForVRML( rot ) - # convert to Quaternion and to Angle Axis - Q = self.eulerToQuaternions(nRot[0], nRot[1], nRot[2]) - Q1 = self.multiplyQuaternions(Q[0], Q[1]) - Qf = self.multiplyQuaternions(Q1, Q[2]) - angleAxis = self.quaternionToAngleAxis(Qf) - self.file.write("\n\n" % (lens)) - - def writeFog(self, world): - if world: - mtype = world.mist.falloff - # mtype = world.getMistype() - mparam = world.mist - # mparam = world.getMist() - grd = world.horizon_color - # grd = world.getHor() - grd0, grd1, grd2 = grd[0], grd[1], grd[2] - else: - return - if (mtype == 'LINEAR' or mtype == 'INVERSE_QUADRATIC'): - mtype = 1 if mtype == 'LINEAR' else 2 - # if (mtype == 1 or mtype == 2): - self.file.write("\n\n" % round(mparam[2],self.cp)) - else: - return - - def writeNavigationInfo(self, scene): - self.file.write('\n') - - def writeSpotLight(self, ob, mtx, lamp, world): - safeName = self.cleanStr(ob.name) - if world: - ambi = world.ambient_color - # ambi = world.amb - ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 - else: - ambi = 0 - ambientIntensity = 0 - - # compute cutoff and beamwidth - intensity=min(lamp.energy/1.75,1.0) - beamWidth=((lamp.spot_size*math.pi)/180.0)*.37; - # beamWidth=((lamp.spotSize*math.pi)/180.0)*.37; - cutOffAngle=beamWidth*1.3 - - dx,dy,dz=self.computeDirection(mtx) - # note -dx seems to equal om[3][0] - # note -dz seems to equal om[3][1] - # note dy seems to equal om[3][2] - - #location=(ob.matrixWorld*MATWORLD).translationPart() # now passed - location=(mtx*MATWORLD).translationPart() - - radius = lamp.distance*math.cos(beamWidth) - # radius = lamp.dist*math.cos(beamWidth) - self.file.write("\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) - - - def writeDirectionalLight(self, ob, mtx, lamp, world): - safeName = self.cleanStr(ob.name) - if world: - ambi = world.ambient_color - # ambi = world.amb - ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 - else: - ambi = 0 - ambientIntensity = 0 - - intensity=min(lamp.energy/1.75,1.0) - (dx,dy,dz)=self.computeDirection(mtx) - self.file.write("\n\n" % (round(dx,4),round(dy,4),round(dz,4))) - - def writePointLight(self, ob, mtx, lamp, world): - safeName = self.cleanStr(ob.name) - if world: - ambi = world.ambient_color - # ambi = world.amb - ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 - else: - ambi = 0 - ambientIntensity = 0 - - # location=(ob.matrixWorld*MATWORLD).translationPart() # now passed - location= (mtx*MATWORLD).translationPart() - - self.file.write("\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) - ''' - def writeNode(self, ob, mtx): - obname=str(ob.name) - if obname in self.namesStandard: - return - else: - dx,dy,dz = self.computeDirection(mtx) - # location=(ob.matrixWorld*MATWORLD).translationPart() - location=(mtx*MATWORLD).translationPart() - self.writeIndented("<%s\n" % obname,1) - self.writeIndented("direction=\"%s %s %s\"\n" % (round(dx,3),round(dy,3),round(dz,3))) - self.writeIndented("location=\"%s %s %s\"\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) - self.writeIndented("/>\n",-1) - self.writeIndented("\n") - ''' - def secureName(self, name): - name = name + str(self.nodeID) - self.nodeID=self.nodeID+1 - if len(name) <= 3: - newname = "_" + str(self.nodeID) - return "%s" % (newname) - else: - for bad in ['"','#',"'",',','.','[','\\',']','{','}']: - name=name.replace(bad,'_') - if name in self.namesReserved: - newname = name[0:3] + "_" + str(self.nodeID) - return "%s" % (newname) - elif name[0].isdigit(): - newname = "_" + name + str(self.nodeID) - return "%s" % (newname) - else: - newname = name - return "%s" % (newname) - - def writeIndexedFaceSet(self, ob, mesh, mtx, world, EXPORT_TRI = False): - imageMap={} # set of used images - sided={} # 'one':cnt , 'two':cnt - vColors={} # 'multi':1 - meshName = self.cleanStr(ob.name) - - meshME = self.cleanStr(ob.data.name) # We dont care if its the mesh name or not - # meshME = self.cleanStr(ob.getData(mesh=1).name) # We dont care if its the mesh name or not - if len(mesh.faces) == 0: return - mode = [] - # mode = 0 - if mesh.active_uv_texture: - # if mesh.faceUV: - for face in mesh.active_uv_texture.data: - # for face in mesh.faces: - if face.halo and 'HALO' not in mode: - mode += ['HALO'] - if face.billboard and 'BILLBOARD' not in mode: - mode += ['BILLBOARD'] - if face.object_color and 'OBJECT_COLOR' not in mode: - mode += ['OBJECT_COLOR'] - if face.collision and 'COLLISION' not in mode: - mode += ['COLLISION'] - # mode |= face.mode - - if 'HALO' in mode and self.halonode == 0: - # if mode & Mesh.FaceModes.HALO and self.halonode == 0: - self.writeIndented("\n",1) - self.halonode = 1 - elif 'BILLBOARD' in mode and self.billnode == 0: - # elif mode & Mesh.FaceModes.BILLBOARD and self.billnode == 0: - self.writeIndented("\n",1) - self.billnode = 1 - elif 'OBJECT_COLOR' in mode and self.matonly == 0: - # elif mode & Mesh.FaceModes.OBCOL and self.matonly == 0: - self.matonly = 1 - # TF_TILES is marked as deprecated in DNA_meshdata_types.h - # elif mode & Mesh.FaceModes.TILES and self.tilenode == 0: - # self.tilenode = 1 - elif 'COLLISION' not in mode and self.collnode == 0: - # elif not mode & Mesh.FaceModes.DYNAMIC and self.collnode == 0: - self.writeIndented("\n",1) - self.collnode = 1 - - nIFSCnt=self.countIFSSetsNeeded(mesh, imageMap, sided, vColors) - - if nIFSCnt > 1: - self.writeIndented("\n" % ("G_", meshName),1) - - if 'two' in sided and sided['two'] > 0: - bTwoSided=1 - else: - bTwoSided=0 - - # mtx = ob.matrixWorld * MATWORLD # mtx is now passed - mtx = mtx * MATWORLD - - loc= mtx.translationPart() - sca= mtx.scalePart() - quat = mtx.toQuat() - rot= quat.axis - - self.writeIndented('\n' % \ - (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle) ) - # self.writeIndented('\n' % \ - # (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle*DEG2RAD) ) - - self.writeIndented("\n",1) - maters=mesh.materials - hasImageTexture=0 - issmooth=0 - - if len(maters) > 0 or mesh.active_uv_texture: - # if len(maters) > 0 or mesh.faceUV: - self.writeIndented("\n", 1) - # right now this script can only handle a single material per mesh. - if len(maters) >= 1: - mat=maters[0] - # matFlags = mat.getMode() - if not mat.face_texture: - # if not matFlags & Blender.Material.Modes['TEXFACE']: - self.writeMaterial(mat, self.cleanStr(mat.name,''), world) - # self.writeMaterial(mat, self.cleanStr(maters[0].name,''), world) - if len(maters) > 1: - print("Warning: mesh named %s has multiple materials" % meshName) - print("Warning: only one material per object handled") - - #-- textures - face = None - if mesh.active_uv_texture: - # if mesh.faceUV: - for face in mesh.active_uv_texture.data: - # for face in mesh.faces: - if face.image: - # if (hasImageTexture == 0) and (face.image): - self.writeImageTexture(face.image) - # hasImageTexture=1 # keep track of face texture - break - if self.tilenode == 1 and face and face.image: - # if self.tilenode == 1: - self.writeIndented("\n" % (face.image.xrep, face.image.yrep)) - self.tilenode = 0 - self.writeIndented("\n", -1) - - #-- IndexedFaceSet or IndexedLineSet - - # user selected BOUNDS=1, SOLID=3, SHARED=4, or TEXTURE=5 - ifStyle="IndexedFaceSet" - # look up mesh name, use it if available - if meshME in self.meshNames: - self.writeIndented("<%s USE=\"ME_%s\">" % (ifStyle, meshME), 1) - self.meshNames[meshME]+=1 - else: - if int(mesh.users) > 1: - self.writeIndented("<%s DEF=\"ME_%s\" " % (ifStyle, meshME), 1) - self.meshNames[meshME]=1 - else: - self.writeIndented("<%s " % ifStyle, 1) - - if bTwoSided == 1: - self.file.write("solid=\"false\" ") - else: - self.file.write("solid=\"true\" ") - - for face in mesh.faces: - if face.smooth: - issmooth=1 - break - if issmooth==1: - creaseAngle=(mesh.autosmooth_angle)*(math.pi/180.0) - # creaseAngle=(mesh.degr)*(math.pi/180.0) - self.file.write("creaseAngle=\"%s\" " % (round(creaseAngle,self.cp))) - - #--- output textureCoordinates if UV texture used - if mesh.active_uv_texture: - # if mesh.faceUV: - if self.matonly == 1 and self.share == 1: - self.writeFaceColors(mesh) - elif hasImageTexture == 1: - self.writeTextureCoordinates(mesh) - #--- output coordinates - self.writeCoordinates(ob, mesh, meshName, EXPORT_TRI) - - self.writingcoords = 1 - self.writingtexture = 1 - self.writingcolor = 1 - self.writeCoordinates(ob, mesh, meshName, EXPORT_TRI) - - #--- output textureCoordinates if UV texture used - if mesh.active_uv_texture: - # if mesh.faceUV: - if hasImageTexture == 1: - self.writeTextureCoordinates(mesh) - elif self.matonly == 1 and self.share == 1: - self.writeFaceColors(mesh) - #--- output vertexColors - self.matonly = 0 - self.share = 0 - - self.writingcoords = 0 - self.writingtexture = 0 - self.writingcolor = 0 - #--- output closing braces - self.writeIndented("\n" % ifStyle, -1) - self.writeIndented("\n", -1) - self.writeIndented("\n", -1) - - if self.halonode == 1: - self.writeIndented("\n", -1) - self.halonode = 0 - - if self.billnode == 1: - self.writeIndented("\n", -1) - self.billnode = 0 - - if self.collnode == 1: - self.writeIndented("\n", -1) - self.collnode = 0 - - if nIFSCnt > 1: - self.writeIndented("\n", -1) - - self.file.write("\n") - - def writeCoordinates(self, ob, mesh, meshName, EXPORT_TRI = False): - # create vertex list and pre rotate -90 degrees X for VRML - - if self.writingcoords == 0: - self.file.write('coordIndex="') - for face in mesh.faces: - fv = face.verts - # fv = face.v - - if len(fv)==3: - # if len(face)==3: - self.file.write("%i %i %i -1, " % (fv[0], fv[1], fv[2])) - # self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index)) - else: - if EXPORT_TRI: - self.file.write("%i %i %i -1, " % (fv[0], fv[1], fv[2])) - # self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index)) - self.file.write("%i %i %i -1, " % (fv[0], fv[2], fv[3])) - # self.file.write("%i %i %i -1, " % (fv[0].index, fv[2].index, fv[3].index)) - else: - self.file.write("%i %i %i %i -1, " % (fv[0], fv[1], fv[2], fv[3])) - # self.file.write("%i %i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index, fv[3].index)) - - self.file.write("\">\n") - else: - #-- vertices - # mesh.transform(ob.matrixWorld) - self.writeIndented("") - self.writeIndented("\n", -1) - - def writeTextureCoordinates(self, mesh): - texCoordList=[] - texIndexList=[] - j=0 - - for face in mesh.active_uv_texture.data: - # for face in mesh.faces: - uvs = face.uv - # uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if face.verts[3] else [face.uv1, face.uv2, face.uv3] - - for uv in uvs: - # for uv in face.uv: - texIndexList.append(j) - texCoordList.append(uv) - j=j+1 - texIndexList.append(-1) - if self.writingtexture == 0: - self.file.write("\n\t\t\ttexCoordIndex=\"") - texIndxStr="" - for i in range(len(texIndexList)): - texIndxStr = texIndxStr + "%d, " % texIndexList[i] - if texIndexList[i]==-1: - self.file.write(texIndxStr) - texIndxStr="" - self.file.write("\"\n\t\t\t") - else: - self.writeIndented("") - self.writeIndented("\n", -1) - - def writeFaceColors(self, mesh): - if self.writingcolor == 0: - self.file.write("colorPerVertex=\"false\" ") - elif mesh.active_vertex_color: - # else: - self.writeIndented(" 2: - print("Debug: face.col r=%d g=%d b=%d" % (c[0], c[1], c[2])) - # print("Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)) - aColor = self.rgbToFS(c) - self.file.write("%s, " % aColor) - - # for face in mesh.faces: - # if face.col: - # c=face.col[0] - # if self.verbose > 2: - # print("Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)) - # aColor = self.rgbToFS(c) - # self.file.write("%s, " % aColor) - self.file.write("\" />") - self.writeIndented("\n",-1) - - def writeMaterial(self, mat, matName, world): - # look up material name, use it if available - if matName in self.matNames: - self.writeIndented("\n" % matName) - self.matNames[matName]+=1 - return; - - self.matNames[matName]=1 - - ambient = mat.ambient/3 - # ambient = mat.amb/3 - diffuseR, diffuseG, diffuseB = tuple(mat.diffuse_color) - # diffuseR, diffuseG, diffuseB = mat.rgbCol[0], mat.rgbCol[1],mat.rgbCol[2] - if world: - ambi = world.ambient_color - # ambi = world.getAmb() - ambi0, ambi1, ambi2 = (ambi[0]*mat.ambient)*2, (ambi[1]*mat.ambient)*2, (ambi[2]*mat.ambient)*2 - # ambi0, ambi1, ambi2 = (ambi[0]*mat.amb)*2, (ambi[1]*mat.amb)*2, (ambi[2]*mat.amb)*2 - else: - ambi0, ambi1, ambi2 = 0, 0, 0 - emisR, emisG, emisB = (diffuseR*mat.emit+ambi0)/2, (diffuseG*mat.emit+ambi1)/2, (diffuseB*mat.emit+ambi2)/2 - - shininess = mat.specular_hardness/512.0 - # shininess = mat.hard/512.0 - specR = (mat.specular_color[0]+0.001)/(1.25/(mat.specular_intensity+0.001)) - # specR = (mat.specCol[0]+0.001)/(1.25/(mat.spec+0.001)) - specG = (mat.specular_color[1]+0.001)/(1.25/(mat.specular_intensity+0.001)) - # specG = (mat.specCol[1]+0.001)/(1.25/(mat.spec+0.001)) - specB = (mat.specular_color[2]+0.001)/(1.25/(mat.specular_intensity+0.001)) - # specB = (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001)) - transp = 1-mat.alpha - # matFlags = mat.getMode() - if mat.shadeless: - # if matFlags & Blender.Material.Modes['SHADELESS']: - ambient = 1 - shine = 1 - specR = emitR = diffuseR - specG = emitG = diffuseG - specB = emitB = diffuseB - self.writeIndented("" % (round(transp,self.cp))) - self.writeIndented("\n",-1) - - def writeImageTexture(self, image): - name = image.name - filename = image.filename.split('/')[-1].split('\\')[-1] - if name in self.texNames: - self.writeIndented("\n" % self.cleanStr(name)) - self.texNames[name] += 1 - return - else: - self.writeIndented("" % name) - self.writeIndented("\n",-1) - self.texNames[name] = 1 - - def writeBackground(self, world, alltextures): - if world: worldname = world.name - else: return - blending = (world.blend_sky, world.paper_sky, world.real_sky) - # blending = world.getSkytype() - grd = world.horizon_color - # grd = world.getHor() - grd0, grd1, grd2 = grd[0], grd[1], grd[2] - sky = world.zenith_color - # sky = world.getZen() - sky0, sky1, sky2 = sky[0], sky[1], sky[2] - mix0, mix1, mix2 = grd[0]+sky[0], grd[1]+sky[1], grd[2]+sky[2] - mix0, mix1, mix2 = mix0/2, mix1/2, mix2/2 - self.file.write("\n\n") + def writeHeader(self): + #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '<').replace('>', '>') + bfile = self.filename.replace('<', '<').replace('>', '>') # use outfile name + self.file.write("\n") + self.file.write("\n") + self.file.write("\n") + self.file.write("\n") + self.file.write("\t\n" % os.path.basename(bfile)) + # self.file.write("\t\n" % sys.basename(bfile)) + self.file.write("\t\n" % '2.5') + # self.file.write("\t\n" % Blender.Get('version')) + self.file.write("\t\n") + self.file.write("\n") + self.file.write("\n") + + # This functionality is poorly defined, disabling for now - campbell + ''' + def writeInline(self): + inlines = Blender.Scene.Get() + allinlines = len(inlines) + if scene != inlines[0]: + return + else: + for i in xrange(allinlines): + nameinline=inlines[i].name + if (nameinline not in self.namesStandard) and (i > 0): + self.file.write("" % nameinline) + self.file.write("\n\n") + + + def writeScript(self): + textEditor = Blender.Text.Get() + alltext = len(textEditor) + for i in xrange(alltext): + nametext = textEditor[i].name + nlines = textEditor[i].getNLines() + if (self.proto == 1): + if (nametext == "proto" or nametext == "proto.js" or nametext == "proto.txt") and (nlines != None): + nalllines = len(textEditor[i].asLines()) + alllines = textEditor[i].asLines() + for j in xrange(nalllines): + self.writeIndented(alllines[j] + "\n") + elif (self.proto == 0): + if (nametext == "route" or nametext == "route.js" or nametext == "route.txt") and (nlines != None): + nalllines = len(textEditor[i].asLines()) + alllines = textEditor[i].asLines() + for j in xrange(nalllines): + self.writeIndented(alllines[j] + "\n") + self.writeIndented("\n") + ''' + + def writeViewpoint(self, ob, mat, scene): + context = scene.render_data + # context = scene.render + ratio = float(context.resolution_x)/float(context.resolution_y) + # ratio = float(context.imageSizeY())/float(context.imageSizeX()) + lens = (360* (math.atan(ratio *16 / ob.data.lens) / math.pi))*(math.pi/180) + # lens = (360* (math.atan(ratio *16 / ob.data.getLens()) / math.pi))*(math.pi/180) + lens = min(lens, math.pi) + + # get the camera location, subtract 90 degress from X to orient like X3D does + # mat = ob.matrixWorld - mat is now passed! + + loc = self.rotatePointForVRML(mat.translationPart()) + rot = mat.toEuler() + rot = (((rot[0]-90)), rot[1], rot[2]) + # rot = (((rot[0]-90)*DEG2RAD), rot[1]*DEG2RAD, rot[2]*DEG2RAD) + nRot = self.rotatePointForVRML( rot ) + # convert to Quaternion and to Angle Axis + Q = self.eulerToQuaternions(nRot[0], nRot[1], nRot[2]) + Q1 = self.multiplyQuaternions(Q[0], Q[1]) + Qf = self.multiplyQuaternions(Q1, Q[2]) + angleAxis = self.quaternionToAngleAxis(Qf) + self.file.write("\n\n" % (lens)) + + def writeFog(self, world): + if world: + mtype = world.mist.falloff + # mtype = world.getMistype() + mparam = world.mist + # mparam = world.getMist() + grd = world.horizon_color + # grd = world.getHor() + grd0, grd1, grd2 = grd[0], grd[1], grd[2] + else: + return + if (mtype == 'LINEAR' or mtype == 'INVERSE_QUADRATIC'): + mtype = 1 if mtype == 'LINEAR' else 2 + # if (mtype == 1 or mtype == 2): + self.file.write("\n\n" % round(mparam[2],self.cp)) + else: + return + + def writeNavigationInfo(self, scene): + self.file.write('\n') + + def writeSpotLight(self, ob, mtx, lamp, world): + safeName = self.cleanStr(ob.name) + if world: + ambi = world.ambient_color + # ambi = world.amb + ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 + else: + ambi = 0 + ambientIntensity = 0 + + # compute cutoff and beamwidth + intensity=min(lamp.energy/1.75,1.0) + beamWidth=((lamp.spot_size*math.pi)/180.0)*.37; + # beamWidth=((lamp.spotSize*math.pi)/180.0)*.37; + cutOffAngle=beamWidth*1.3 + + dx,dy,dz=self.computeDirection(mtx) + # note -dx seems to equal om[3][0] + # note -dz seems to equal om[3][1] + # note dy seems to equal om[3][2] + + #location=(ob.matrixWorld*MATWORLD).translationPart() # now passed + location=(mtx*MATWORLD).translationPart() + + radius = lamp.distance*math.cos(beamWidth) + # radius = lamp.dist*math.cos(beamWidth) + self.file.write("\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) + + + def writeDirectionalLight(self, ob, mtx, lamp, world): + safeName = self.cleanStr(ob.name) + if world: + ambi = world.ambient_color + # ambi = world.amb + ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 + else: + ambi = 0 + ambientIntensity = 0 + + intensity=min(lamp.energy/1.75,1.0) + (dx,dy,dz)=self.computeDirection(mtx) + self.file.write("\n\n" % (round(dx,4),round(dy,4),round(dz,4))) + + def writePointLight(self, ob, mtx, lamp, world): + safeName = self.cleanStr(ob.name) + if world: + ambi = world.ambient_color + # ambi = world.amb + ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 + else: + ambi = 0 + ambientIntensity = 0 + + # location=(ob.matrixWorld*MATWORLD).translationPart() # now passed + location= (mtx*MATWORLD).translationPart() + + self.file.write("\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) + ''' + def writeNode(self, ob, mtx): + obname=str(ob.name) + if obname in self.namesStandard: + return + else: + dx,dy,dz = self.computeDirection(mtx) + # location=(ob.matrixWorld*MATWORLD).translationPart() + location=(mtx*MATWORLD).translationPart() + self.writeIndented("<%s\n" % obname,1) + self.writeIndented("direction=\"%s %s %s\"\n" % (round(dx,3),round(dy,3),round(dz,3))) + self.writeIndented("location=\"%s %s %s\"\n" % (round(location[0],3), round(location[1],3), round(location[2],3))) + self.writeIndented("/>\n",-1) + self.writeIndented("\n") + ''' + def secureName(self, name): + name = name + str(self.nodeID) + self.nodeID=self.nodeID+1 + if len(name) <= 3: + newname = "_" + str(self.nodeID) + return "%s" % (newname) + else: + for bad in ['"','#',"'",',','.','[','\\',']','{','}']: + name=name.replace(bad,'_') + if name in self.namesReserved: + newname = name[0:3] + "_" + str(self.nodeID) + return "%s" % (newname) + elif name[0].isdigit(): + newname = "_" + name + str(self.nodeID) + return "%s" % (newname) + else: + newname = name + return "%s" % (newname) + + def writeIndexedFaceSet(self, ob, mesh, mtx, world, EXPORT_TRI = False): + imageMap={} # set of used images + sided={} # 'one':cnt , 'two':cnt + vColors={} # 'multi':1 + meshName = self.cleanStr(ob.name) + + meshME = self.cleanStr(ob.data.name) # We dont care if its the mesh name or not + # meshME = self.cleanStr(ob.getData(mesh=1).name) # We dont care if its the mesh name or not + if len(mesh.faces) == 0: return + mode = [] + # mode = 0 + if mesh.active_uv_texture: + # if mesh.faceUV: + for face in mesh.active_uv_texture.data: + # for face in mesh.faces: + if face.halo and 'HALO' not in mode: + mode += ['HALO'] + if face.billboard and 'BILLBOARD' not in mode: + mode += ['BILLBOARD'] + if face.object_color and 'OBJECT_COLOR' not in mode: + mode += ['OBJECT_COLOR'] + if face.collision and 'COLLISION' not in mode: + mode += ['COLLISION'] + # mode |= face.mode + + if 'HALO' in mode and self.halonode == 0: + # if mode & Mesh.FaceModes.HALO and self.halonode == 0: + self.writeIndented("\n",1) + self.halonode = 1 + elif 'BILLBOARD' in mode and self.billnode == 0: + # elif mode & Mesh.FaceModes.BILLBOARD and self.billnode == 0: + self.writeIndented("\n",1) + self.billnode = 1 + elif 'OBJECT_COLOR' in mode and self.matonly == 0: + # elif mode & Mesh.FaceModes.OBCOL and self.matonly == 0: + self.matonly = 1 + # TF_TILES is marked as deprecated in DNA_meshdata_types.h + # elif mode & Mesh.FaceModes.TILES and self.tilenode == 0: + # self.tilenode = 1 + elif 'COLLISION' not in mode and self.collnode == 0: + # elif not mode & Mesh.FaceModes.DYNAMIC and self.collnode == 0: + self.writeIndented("\n",1) + self.collnode = 1 + + nIFSCnt=self.countIFSSetsNeeded(mesh, imageMap, sided, vColors) + + if nIFSCnt > 1: + self.writeIndented("\n" % ("G_", meshName),1) + + if 'two' in sided and sided['two'] > 0: + bTwoSided=1 + else: + bTwoSided=0 + + # mtx = ob.matrixWorld * MATWORLD # mtx is now passed + mtx = mtx * MATWORLD + + loc= mtx.translationPart() + sca= mtx.scalePart() + quat = mtx.toQuat() + rot= quat.axis + + self.writeIndented('\n' % \ + (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle) ) + # self.writeIndented('\n' % \ + # (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle*DEG2RAD) ) + + self.writeIndented("\n",1) + maters=mesh.materials + hasImageTexture=0 + issmooth=0 + + if len(maters) > 0 or mesh.active_uv_texture: + # if len(maters) > 0 or mesh.faceUV: + self.writeIndented("\n", 1) + # right now this script can only handle a single material per mesh. + if len(maters) >= 1: + mat=maters[0] + # matFlags = mat.getMode() + if not mat.face_texture: + # if not matFlags & Blender.Material.Modes['TEXFACE']: + self.writeMaterial(mat, self.cleanStr(mat.name,''), world) + # self.writeMaterial(mat, self.cleanStr(maters[0].name,''), world) + if len(maters) > 1: + print("Warning: mesh named %s has multiple materials" % meshName) + print("Warning: only one material per object handled") + + #-- textures + face = None + if mesh.active_uv_texture: + # if mesh.faceUV: + for face in mesh.active_uv_texture.data: + # for face in mesh.faces: + if face.image: + # if (hasImageTexture == 0) and (face.image): + self.writeImageTexture(face.image) + # hasImageTexture=1 # keep track of face texture + break + if self.tilenode == 1 and face and face.image: + # if self.tilenode == 1: + self.writeIndented("\n" % (face.image.xrep, face.image.yrep)) + self.tilenode = 0 + self.writeIndented("\n", -1) + + #-- IndexedFaceSet or IndexedLineSet + + # user selected BOUNDS=1, SOLID=3, SHARED=4, or TEXTURE=5 + ifStyle="IndexedFaceSet" + # look up mesh name, use it if available + if meshME in self.meshNames: + self.writeIndented("<%s USE=\"ME_%s\">" % (ifStyle, meshME), 1) + self.meshNames[meshME]+=1 + else: + if int(mesh.users) > 1: + self.writeIndented("<%s DEF=\"ME_%s\" " % (ifStyle, meshME), 1) + self.meshNames[meshME]=1 + else: + self.writeIndented("<%s " % ifStyle, 1) + + if bTwoSided == 1: + self.file.write("solid=\"false\" ") + else: + self.file.write("solid=\"true\" ") + + for face in mesh.faces: + if face.smooth: + issmooth=1 + break + if issmooth==1: + creaseAngle=(mesh.autosmooth_angle)*(math.pi/180.0) + # creaseAngle=(mesh.degr)*(math.pi/180.0) + self.file.write("creaseAngle=\"%s\" " % (round(creaseAngle,self.cp))) + + #--- output textureCoordinates if UV texture used + if mesh.active_uv_texture: + # if mesh.faceUV: + if self.matonly == 1 and self.share == 1: + self.writeFaceColors(mesh) + elif hasImageTexture == 1: + self.writeTextureCoordinates(mesh) + #--- output coordinates + self.writeCoordinates(ob, mesh, meshName, EXPORT_TRI) + + self.writingcoords = 1 + self.writingtexture = 1 + self.writingcolor = 1 + self.writeCoordinates(ob, mesh, meshName, EXPORT_TRI) + + #--- output textureCoordinates if UV texture used + if mesh.active_uv_texture: + # if mesh.faceUV: + if hasImageTexture == 1: + self.writeTextureCoordinates(mesh) + elif self.matonly == 1 and self.share == 1: + self.writeFaceColors(mesh) + #--- output vertexColors + self.matonly = 0 + self.share = 0 + + self.writingcoords = 0 + self.writingtexture = 0 + self.writingcolor = 0 + #--- output closing braces + self.writeIndented("\n" % ifStyle, -1) + self.writeIndented("\n", -1) + self.writeIndented("\n", -1) + + if self.halonode == 1: + self.writeIndented("\n", -1) + self.halonode = 0 + + if self.billnode == 1: + self.writeIndented("\n", -1) + self.billnode = 0 + + if self.collnode == 1: + self.writeIndented("\n", -1) + self.collnode = 0 + + if nIFSCnt > 1: + self.writeIndented("\n", -1) + + self.file.write("\n") + + def writeCoordinates(self, ob, mesh, meshName, EXPORT_TRI = False): + # create vertex list and pre rotate -90 degrees X for VRML + + if self.writingcoords == 0: + self.file.write('coordIndex="') + for face in mesh.faces: + fv = face.verts + # fv = face.v + + if len(fv)==3: + # if len(face)==3: + self.file.write("%i %i %i -1, " % (fv[0], fv[1], fv[2])) + # self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index)) + else: + if EXPORT_TRI: + self.file.write("%i %i %i -1, " % (fv[0], fv[1], fv[2])) + # self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index)) + self.file.write("%i %i %i -1, " % (fv[0], fv[2], fv[3])) + # self.file.write("%i %i %i -1, " % (fv[0].index, fv[2].index, fv[3].index)) + else: + self.file.write("%i %i %i %i -1, " % (fv[0], fv[1], fv[2], fv[3])) + # self.file.write("%i %i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index, fv[3].index)) + + self.file.write("\">\n") + else: + #-- vertices + # mesh.transform(ob.matrixWorld) + self.writeIndented("") + self.writeIndented("\n", -1) + + def writeTextureCoordinates(self, mesh): + texCoordList=[] + texIndexList=[] + j=0 + + for face in mesh.active_uv_texture.data: + # for face in mesh.faces: + uvs = face.uv + # uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if face.verts[3] else [face.uv1, face.uv2, face.uv3] + + for uv in uvs: + # for uv in face.uv: + texIndexList.append(j) + texCoordList.append(uv) + j=j+1 + texIndexList.append(-1) + if self.writingtexture == 0: + self.file.write("\n\t\t\ttexCoordIndex=\"") + texIndxStr="" + for i in range(len(texIndexList)): + texIndxStr = texIndxStr + "%d, " % texIndexList[i] + if texIndexList[i]==-1: + self.file.write(texIndxStr) + texIndxStr="" + self.file.write("\"\n\t\t\t") + else: + self.writeIndented("") + self.writeIndented("\n", -1) + + def writeFaceColors(self, mesh): + if self.writingcolor == 0: + self.file.write("colorPerVertex=\"false\" ") + elif mesh.active_vertex_color: + # else: + self.writeIndented(" 2: + print("Debug: face.col r=%d g=%d b=%d" % (c[0], c[1], c[2])) + # print("Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)) + aColor = self.rgbToFS(c) + self.file.write("%s, " % aColor) + + # for face in mesh.faces: + # if face.col: + # c=face.col[0] + # if self.verbose > 2: + # print("Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)) + # aColor = self.rgbToFS(c) + # self.file.write("%s, " % aColor) + self.file.write("\" />") + self.writeIndented("\n",-1) + + def writeMaterial(self, mat, matName, world): + # look up material name, use it if available + if matName in self.matNames: + self.writeIndented("\n" % matName) + self.matNames[matName]+=1 + return; + + self.matNames[matName]=1 + + ambient = mat.ambient/3 + # ambient = mat.amb/3 + diffuseR, diffuseG, diffuseB = tuple(mat.diffuse_color) + # diffuseR, diffuseG, diffuseB = mat.rgbCol[0], mat.rgbCol[1],mat.rgbCol[2] + if world: + ambi = world.ambient_color + # ambi = world.getAmb() + ambi0, ambi1, ambi2 = (ambi[0]*mat.ambient)*2, (ambi[1]*mat.ambient)*2, (ambi[2]*mat.ambient)*2 + # ambi0, ambi1, ambi2 = (ambi[0]*mat.amb)*2, (ambi[1]*mat.amb)*2, (ambi[2]*mat.amb)*2 + else: + ambi0, ambi1, ambi2 = 0, 0, 0 + emisR, emisG, emisB = (diffuseR*mat.emit+ambi0)/2, (diffuseG*mat.emit+ambi1)/2, (diffuseB*mat.emit+ambi2)/2 + + shininess = mat.specular_hardness/512.0 + # shininess = mat.hard/512.0 + specR = (mat.specular_color[0]+0.001)/(1.25/(mat.specular_intensity+0.001)) + # specR = (mat.specCol[0]+0.001)/(1.25/(mat.spec+0.001)) + specG = (mat.specular_color[1]+0.001)/(1.25/(mat.specular_intensity+0.001)) + # specG = (mat.specCol[1]+0.001)/(1.25/(mat.spec+0.001)) + specB = (mat.specular_color[2]+0.001)/(1.25/(mat.specular_intensity+0.001)) + # specB = (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001)) + transp = 1-mat.alpha + # matFlags = mat.getMode() + if mat.shadeless: + # if matFlags & Blender.Material.Modes['SHADELESS']: + ambient = 1 + shine = 1 + specR = emitR = diffuseR + specG = emitG = diffuseG + specB = emitB = diffuseB + self.writeIndented("" % (round(transp,self.cp))) + self.writeIndented("\n",-1) + + def writeImageTexture(self, image): + name = image.name + filename = image.filename.split('/')[-1].split('\\')[-1] + if name in self.texNames: + self.writeIndented("\n" % self.cleanStr(name)) + self.texNames[name] += 1 + return + else: + self.writeIndented("" % name) + self.writeIndented("\n",-1) + self.texNames[name] = 1 + + def writeBackground(self, world, alltextures): + if world: worldname = world.name + else: return + blending = (world.blend_sky, world.paper_sky, world.real_sky) + # blending = world.getSkytype() + grd = world.horizon_color + # grd = world.getHor() + grd0, grd1, grd2 = grd[0], grd[1], grd[2] + sky = world.zenith_color + # sky = world.getZen() + sky0, sky1, sky2 = sky[0], sky[1], sky[2] + mix0, mix1, mix2 = grd[0]+sky[0], grd[1]+sky[1], grd[2]+sky[2] + mix0, mix1, mix2 = mix0/2, mix1/2, mix2/2 + self.file.write("\n\n") ########################################################## # export routine ########################################################## - def export(self, scene, world, alltextures,\ - EXPORT_APPLY_MODIFIERS = False,\ - EXPORT_TRI= False,\ - ): - - print("Info: starting X3D export to " + self.filename + "...") - self.writeHeader() - # self.writeScript() - self.writeNavigationInfo(scene) - self.writeBackground(world, alltextures) - self.writeFog(world) - self.proto = 0 - - - # # COPIED FROM OBJ EXPORTER - # if EXPORT_APPLY_MODIFIERS: - # temp_mesh_name = '~tmp-mesh' - - # # Get the container mesh. - used for applying modifiers and non mesh objects. - # containerMesh = meshName = tempMesh = None - # for meshName in Blender.NMesh.GetNames(): - # if meshName.startswith(temp_mesh_name): - # tempMesh = Mesh.Get(meshName) - # if not tempMesh.users: - # containerMesh = tempMesh - # if not containerMesh: - # containerMesh = Mesh.New(temp_mesh_name) - # -------------------------- - - - for ob_main in [o for o in scene.objects if o.is_visible()]: - # for ob_main in scene.objects.context: - - free, derived = create_derived_objects(ob_main) - - if derived == None: continue - - for ob, ob_mat in derived: - # for ob, ob_mat in BPyObject.getDerivedObjects(ob_main): - objType=ob.type - objName=ob.name - self.matonly = 0 - if objType == "CAMERA": - # if objType == "Camera": - self.writeViewpoint(ob, ob_mat, scene) - elif objType in ("MESH", "CURVE", "SURF", "TEXT") : - # elif objType in ("Mesh", "Curve", "Surf", "Text") : - if EXPORT_APPLY_MODIFIERS or objType != 'MESH': - # if EXPORT_APPLY_MODIFIERS or objType != 'Mesh': - me = ob.create_mesh(EXPORT_APPLY_MODIFIERS, 'PREVIEW') - # me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, False, scene) - else: - me = ob.data - # me = ob.getData(mesh=1) - - self.writeIndexedFaceSet(ob, me, ob_mat, world, EXPORT_TRI = EXPORT_TRI) - - # free mesh created with create_mesh() - if me != ob.data: - bpy.data.remove_mesh(me) - - elif objType == "LAMP": - # elif objType == "Lamp": - data= ob.data - datatype=data.type - if datatype == 'POINT': - # if datatype == Lamp.Types.Lamp: - self.writePointLight(ob, ob_mat, data, world) - elif datatype == 'SPOT': - # elif datatype == Lamp.Types.Spot: - self.writeSpotLight(ob, ob_mat, data, world) - elif datatype == 'SUN': - # elif datatype == Lamp.Types.Sun: - self.writeDirectionalLight(ob, ob_mat, data, world) - else: - self.writeDirectionalLight(ob, ob_mat, data, world) - # do you think x3d could document what to do with dummy objects? - #elif objType == "Empty" and objName != "Empty": - # self.writeNode(ob, ob_mat) - else: - #print "Info: Ignoring [%s], object type [%s] not handle yet" % (object.name,object.getType) - pass - - if free: - free_derived_objects(ob_main) - - self.file.write("\n\n") - - # if EXPORT_APPLY_MODIFIERS: - # if containerMesh: - # containerMesh.verts = None - - self.cleanup() - + def export(self, scene, world, alltextures,\ + EXPORT_APPLY_MODIFIERS = False,\ + EXPORT_TRI= False,\ + ): + + print("Info: starting X3D export to " + self.filename + "...") + self.writeHeader() + # self.writeScript() + self.writeNavigationInfo(scene) + self.writeBackground(world, alltextures) + self.writeFog(world) + self.proto = 0 + + + # # COPIED FROM OBJ EXPORTER + # if EXPORT_APPLY_MODIFIERS: + # temp_mesh_name = '~tmp-mesh' + + # # Get the container mesh. - used for applying modifiers and non mesh objects. + # containerMesh = meshName = tempMesh = None + # for meshName in Blender.NMesh.GetNames(): + # if meshName.startswith(temp_mesh_name): + # tempMesh = Mesh.Get(meshName) + # if not tempMesh.users: + # containerMesh = tempMesh + # if not containerMesh: + # containerMesh = Mesh.New(temp_mesh_name) + # -------------------------- + + + for ob_main in [o for o in scene.objects if o.is_visible()]: + # for ob_main in scene.objects.context: + + free, derived = create_derived_objects(ob_main) + + if derived == None: continue + + for ob, ob_mat in derived: + # for ob, ob_mat in BPyObject.getDerivedObjects(ob_main): + objType=ob.type + objName=ob.name + self.matonly = 0 + if objType == "CAMERA": + # if objType == "Camera": + self.writeViewpoint(ob, ob_mat, scene) + elif objType in ("MESH", "CURVE", "SURF", "TEXT") : + # elif objType in ("Mesh", "Curve", "Surf", "Text") : + if EXPORT_APPLY_MODIFIERS or objType != 'MESH': + # if EXPORT_APPLY_MODIFIERS or objType != 'Mesh': + me = ob.create_mesh(EXPORT_APPLY_MODIFIERS, 'PREVIEW') + # me= BPyMesh.getMeshFromObject(ob, containerMesh, EXPORT_APPLY_MODIFIERS, False, scene) + else: + me = ob.data + # me = ob.getData(mesh=1) + + self.writeIndexedFaceSet(ob, me, ob_mat, world, EXPORT_TRI = EXPORT_TRI) + + # free mesh created with create_mesh() + if me != ob.data: + bpy.data.remove_mesh(me) + + elif objType == "LAMP": + # elif objType == "Lamp": + data= ob.data + datatype=data.type + if datatype == 'POINT': + # if datatype == Lamp.Types.Lamp: + self.writePointLight(ob, ob_mat, data, world) + elif datatype == 'SPOT': + # elif datatype == Lamp.Types.Spot: + self.writeSpotLight(ob, ob_mat, data, world) + elif datatype == 'SUN': + # elif datatype == Lamp.Types.Sun: + self.writeDirectionalLight(ob, ob_mat, data, world) + else: + self.writeDirectionalLight(ob, ob_mat, data, world) + # do you think x3d could document what to do with dummy objects? + #elif objType == "Empty" and objName != "Empty": + # self.writeNode(ob, ob_mat) + else: + #print "Info: Ignoring [%s], object type [%s] not handle yet" % (object.name,object.getType) + pass + + if free: + free_derived_objects(ob_main) + + self.file.write("\n\n") + + # if EXPORT_APPLY_MODIFIERS: + # if containerMesh: + # containerMesh.verts = None + + self.cleanup() + ########################################################## # Utility methods ########################################################## - def cleanup(self): - self.file.close() - self.texNames={} - self.matNames={} - self.indentLevel=0 - print("Info: finished X3D export to %s\n" % self.filename) - - def cleanStr(self, name, prefix='rsvd_'): - """cleanStr(name,prefix) - try to create a valid VRML DEF name from object name""" - - newName=name[:] - if len(newName) == 0: - self.nNodeID+=1 - return "%s%d" % (prefix, self.nNodeID) - - if newName in self.namesReserved: - newName='%s%s' % (prefix,newName) - - if newName[0].isdigit(): - newName='%s%s' % ('_',newName) - - for bad in [' ','"','#',"'",',','.','[','\\',']','{','}']: - newName=newName.replace(bad,'_') - return newName - - def countIFSSetsNeeded(self, mesh, imageMap, sided, vColors): - """ - countIFFSetsNeeded() - should look at a blender mesh to determine - how many VRML IndexFaceSets or IndexLineSets are needed. A - new mesh created under the following conditions: - - o - split by UV Textures / one per mesh - o - split by face, one sided and two sided - o - split by smooth and flat faces - o - split when faces only have 2 vertices * needs to be an IndexLineSet - """ - - imageNameMap={} - faceMap={} - nFaceIndx=0 - - if mesh.active_uv_texture: - # if mesh.faceUV: - for face in mesh.active_uv_texture.data: - # for face in mesh.faces: - sidename=''; - if face.twoside: - # if face.mode & Mesh.FaceModes.TWOSIDE: - sidename='two' - else: - sidename='one' - - if sidename in sided: - sided[sidename]+=1 - else: - sided[sidename]=1 - - image = face.image - if image: - faceName="%s_%s" % (face.image.name, sidename); - try: - imageMap[faceName].append(face) - except: - imageMap[faceName]=[face.image.name,sidename,face] - - if self.verbose > 2: - for faceName in imageMap.keys(): - ifs=imageMap[faceName] - print("Debug: faceName=%s image=%s, solid=%s facecnt=%d" % \ - (faceName, ifs[0], ifs[1], len(ifs)-2)) - - return len(imageMap) - - def faceToString(self,face): - - print("Debug: face.flag=0x%x (bitflags)" % face.flag) - if face.sel: - print("Debug: face.sel=true") - - print("Debug: face.mode=0x%x (bitflags)" % face.mode) - if face.mode & Mesh.FaceModes.TWOSIDE: - print("Debug: face.mode twosided") - - print("Debug: face.transp=0x%x (enum)" % face.transp) - if face.transp == Mesh.FaceTranspModes.SOLID: - print("Debug: face.transp.SOLID") - - if face.image: - print("Debug: face.image=%s" % face.image.name) - print("Debug: face.materialIndex=%d" % face.materialIndex) - - # XXX not used - # def getVertexColorByIndx(self, mesh, indx): - # c = None - # for face in mesh.faces: - # j=0 - # for vertex in face.v: - # if vertex.index == indx: - # c=face.col[j] - # break - # j=j+1 - # if c: break - # return c - - def meshToString(self,mesh): - # print("Debug: mesh.hasVertexUV=%d" % mesh.vertexColors) - print("Debug: mesh.faceUV=%d" % (len(mesh.uv_textures) > 0)) - # print("Debug: mesh.faceUV=%d" % mesh.faceUV) - print("Debug: mesh.hasVertexColours=%d" % (len(mesh.vertex_colors) > 0)) - # print("Debug: mesh.hasVertexColours=%d" % mesh.hasVertexColours()) - print("Debug: mesh.verts=%d" % len(mesh.verts)) - print("Debug: mesh.faces=%d" % len(mesh.faces)) - print("Debug: mesh.materials=%d" % len(mesh.materials)) - - def rgbToFS(self, c): - s="%s %s %s" % (round(c[0]/255.0,self.cp), - round(c[1]/255.0,self.cp), - round(c[2]/255.0,self.cp)) - - # s="%s %s %s" % ( - # round(c.r/255.0,self.cp), - # round(c.g/255.0,self.cp), - # round(c.b/255.0,self.cp)) - return s - - def computeDirection(self, mtx): - x,y,z=(0,-1.0,0) # point down - - ax,ay,az = (mtx*MATWORLD).toEuler() - - # ax *= DEG2RAD - # ay *= DEG2RAD - # az *= DEG2RAD - - # rot X - x1=x - y1=y*math.cos(ax)-z*math.sin(ax) - z1=y*math.sin(ax)+z*math.cos(ax) - - # rot Y - x2=x1*math.cos(ay)+z1*math.sin(ay) - y2=y1 - z2=z1*math.cos(ay)-x1*math.sin(ay) - - # rot Z - x3=x2*math.cos(az)-y2*math.sin(az) - y3=x2*math.sin(az)+y2*math.cos(az) - z3=z2 - - return [x3,y3,z3] - - - # swap Y and Z to handle axis difference between Blender and VRML - #------------------------------------------------------------------------ - def rotatePointForVRML(self, v): - x = v[0] - y = v[2] - z = -v[1] - - vrmlPoint=[x, y, z] - return vrmlPoint - - # For writing well formed VRML code - #------------------------------------------------------------------------ - def writeIndented(self, s, inc=0): - if inc < 1: - self.indentLevel = self.indentLevel + inc - - spaces="" - for x in range(self.indentLevel): - spaces = spaces + "\t" - self.file.write(spaces + s) - - if inc > 0: - self.indentLevel = self.indentLevel + inc - - # Converts a Euler to three new Quaternions - # Angles of Euler are passed in as radians - #------------------------------------------------------------------------ - def eulerToQuaternions(self, x, y, z): - Qx = [math.cos(x/2), math.sin(x/2), 0, 0] - Qy = [math.cos(y/2), 0, math.sin(y/2), 0] - Qz = [math.cos(z/2), 0, 0, math.sin(z/2)] - - quaternionVec=[Qx,Qy,Qz] - return quaternionVec - - # Multiply two Quaternions together to get a new Quaternion - #------------------------------------------------------------------------ - def multiplyQuaternions(self, Q1, Q2): - result = [((Q1[0] * Q2[0]) - (Q1[1] * Q2[1]) - (Q1[2] * Q2[2]) - (Q1[3] * Q2[3])), - ((Q1[0] * Q2[1]) + (Q1[1] * Q2[0]) + (Q1[2] * Q2[3]) - (Q1[3] * Q2[2])), - ((Q1[0] * Q2[2]) + (Q1[2] * Q2[0]) + (Q1[3] * Q2[1]) - (Q1[1] * Q2[3])), - ((Q1[0] * Q2[3]) + (Q1[3] * Q2[0]) + (Q1[1] * Q2[2]) - (Q1[2] * Q2[1]))] - - return result - - # Convert a Quaternion to an Angle Axis (ax, ay, az, angle) - # angle is in radians - #------------------------------------------------------------------------ - def quaternionToAngleAxis(self, Qf): - scale = math.pow(Qf[1],2) + math.pow(Qf[2],2) + math.pow(Qf[3],2) - ax = Qf[1] - ay = Qf[2] - az = Qf[3] - - if scale > .0001: - ax/=scale - ay/=scale - az/=scale - - angle = 2 * math.acos(Qf[0]) - - result = [ax, ay, az, angle] - return result + def cleanup(self): + self.file.close() + self.texNames={} + self.matNames={} + self.indentLevel=0 + print("Info: finished X3D export to %s\n" % self.filename) + + def cleanStr(self, name, prefix='rsvd_'): + """cleanStr(name,prefix) - try to create a valid VRML DEF name from object name""" + + newName=name[:] + if len(newName) == 0: + self.nNodeID+=1 + return "%s%d" % (prefix, self.nNodeID) + + if newName in self.namesReserved: + newName='%s%s' % (prefix,newName) + + if newName[0].isdigit(): + newName='%s%s' % ('_',newName) + + for bad in [' ','"','#',"'",',','.','[','\\',']','{','}']: + newName=newName.replace(bad,'_') + return newName + + def countIFSSetsNeeded(self, mesh, imageMap, sided, vColors): + """ + countIFFSetsNeeded() - should look at a blender mesh to determine + how many VRML IndexFaceSets or IndexLineSets are needed. A + new mesh created under the following conditions: + + o - split by UV Textures / one per mesh + o - split by face, one sided and two sided + o - split by smooth and flat faces + o - split when faces only have 2 vertices * needs to be an IndexLineSet + """ + + imageNameMap={} + faceMap={} + nFaceIndx=0 + + if mesh.active_uv_texture: + # if mesh.faceUV: + for face in mesh.active_uv_texture.data: + # for face in mesh.faces: + sidename=''; + if face.twoside: + # if face.mode & Mesh.FaceModes.TWOSIDE: + sidename='two' + else: + sidename='one' + + if sidename in sided: + sided[sidename]+=1 + else: + sided[sidename]=1 + + image = face.image + if image: + faceName="%s_%s" % (face.image.name, sidename); + try: + imageMap[faceName].append(face) + except: + imageMap[faceName]=[face.image.name,sidename,face] + + if self.verbose > 2: + for faceName in imageMap.keys(): + ifs=imageMap[faceName] + print("Debug: faceName=%s image=%s, solid=%s facecnt=%d" % \ + (faceName, ifs[0], ifs[1], len(ifs)-2)) + + return len(imageMap) + + def faceToString(self,face): + + print("Debug: face.flag=0x%x (bitflags)" % face.flag) + if face.sel: + print("Debug: face.sel=true") + + print("Debug: face.mode=0x%x (bitflags)" % face.mode) + if face.mode & Mesh.FaceModes.TWOSIDE: + print("Debug: face.mode twosided") + + print("Debug: face.transp=0x%x (enum)" % face.transp) + if face.transp == Mesh.FaceTranspModes.SOLID: + print("Debug: face.transp.SOLID") + + if face.image: + print("Debug: face.image=%s" % face.image.name) + print("Debug: face.materialIndex=%d" % face.materialIndex) + + # XXX not used + # def getVertexColorByIndx(self, mesh, indx): + # c = None + # for face in mesh.faces: + # j=0 + # for vertex in face.v: + # if vertex.index == indx: + # c=face.col[j] + # break + # j=j+1 + # if c: break + # return c + + def meshToString(self,mesh): + # print("Debug: mesh.hasVertexUV=%d" % mesh.vertexColors) + print("Debug: mesh.faceUV=%d" % (len(mesh.uv_textures) > 0)) + # print("Debug: mesh.faceUV=%d" % mesh.faceUV) + print("Debug: mesh.hasVertexColours=%d" % (len(mesh.vertex_colors) > 0)) + # print("Debug: mesh.hasVertexColours=%d" % mesh.hasVertexColours()) + print("Debug: mesh.verts=%d" % len(mesh.verts)) + print("Debug: mesh.faces=%d" % len(mesh.faces)) + print("Debug: mesh.materials=%d" % len(mesh.materials)) + + def rgbToFS(self, c): + s="%s %s %s" % (round(c[0]/255.0,self.cp), + round(c[1]/255.0,self.cp), + round(c[2]/255.0,self.cp)) + + # s="%s %s %s" % ( + # round(c.r/255.0,self.cp), + # round(c.g/255.0,self.cp), + # round(c.b/255.0,self.cp)) + return s + + def computeDirection(self, mtx): + x,y,z=(0,-1.0,0) # point down + + ax,ay,az = (mtx*MATWORLD).toEuler() + + # ax *= DEG2RAD + # ay *= DEG2RAD + # az *= DEG2RAD + + # rot X + x1=x + y1=y*math.cos(ax)-z*math.sin(ax) + z1=y*math.sin(ax)+z*math.cos(ax) + + # rot Y + x2=x1*math.cos(ay)+z1*math.sin(ay) + y2=y1 + z2=z1*math.cos(ay)-x1*math.sin(ay) + + # rot Z + x3=x2*math.cos(az)-y2*math.sin(az) + y3=x2*math.sin(az)+y2*math.cos(az) + z3=z2 + + return [x3,y3,z3] + + + # swap Y and Z to handle axis difference between Blender and VRML + #------------------------------------------------------------------------ + def rotatePointForVRML(self, v): + x = v[0] + y = v[2] + z = -v[1] + + vrmlPoint=[x, y, z] + return vrmlPoint + + # For writing well formed VRML code + #------------------------------------------------------------------------ + def writeIndented(self, s, inc=0): + if inc < 1: + self.indentLevel = self.indentLevel + inc + + spaces="" + for x in range(self.indentLevel): + spaces = spaces + "\t" + self.file.write(spaces + s) + + if inc > 0: + self.indentLevel = self.indentLevel + inc + + # Converts a Euler to three new Quaternions + # Angles of Euler are passed in as radians + #------------------------------------------------------------------------ + def eulerToQuaternions(self, x, y, z): + Qx = [math.cos(x/2), math.sin(x/2), 0, 0] + Qy = [math.cos(y/2), 0, math.sin(y/2), 0] + Qz = [math.cos(z/2), 0, 0, math.sin(z/2)] + + quaternionVec=[Qx,Qy,Qz] + return quaternionVec + + # Multiply two Quaternions together to get a new Quaternion + #------------------------------------------------------------------------ + def multiplyQuaternions(self, Q1, Q2): + result = [((Q1[0] * Q2[0]) - (Q1[1] * Q2[1]) - (Q1[2] * Q2[2]) - (Q1[3] * Q2[3])), + ((Q1[0] * Q2[1]) + (Q1[1] * Q2[0]) + (Q1[2] * Q2[3]) - (Q1[3] * Q2[2])), + ((Q1[0] * Q2[2]) + (Q1[2] * Q2[0]) + (Q1[3] * Q2[1]) - (Q1[1] * Q2[3])), + ((Q1[0] * Q2[3]) + (Q1[3] * Q2[0]) + (Q1[1] * Q2[2]) - (Q1[2] * Q2[1]))] + + return result + + # Convert a Quaternion to an Angle Axis (ax, ay, az, angle) + # angle is in radians + #------------------------------------------------------------------------ + def quaternionToAngleAxis(self, Qf): + scale = math.pow(Qf[1],2) + math.pow(Qf[2],2) + math.pow(Qf[3],2) + ax = Qf[1] + ay = Qf[2] + az = Qf[3] + + if scale > .0001: + ax/=scale + ay/=scale + az/=scale + + angle = 2 * math.acos(Qf[0]) + + result = [ax, ay, az, angle] + return result ########################################################## # Callbacks, needed before Main ########################################################## def x3d_export(filename, - context, - EXPORT_APPLY_MODIFIERS=False, - EXPORT_TRI=False, - EXPORT_GZIP=False): - - if EXPORT_GZIP: - if not filename.lower().endswith('.x3dz'): - filename = '.'.join(filename.split('.')[:-1]) + '.x3dz' - else: - if not filename.lower().endswith('.x3d'): - filename = '.'.join(filename.split('.')[:-1]) + '.x3d' - - - scene = context.scene - # scene = Blender.Scene.GetCurrent() - world = scene.world - - # XXX these are global textures while .Get() returned only scene's? - alltextures = bpy.data.textures - # alltextures = Blender.Texture.Get() - - wrlexport=x3d_class(filename) - wrlexport.export(\ - scene,\ - world,\ - alltextures,\ - \ - EXPORT_APPLY_MODIFIERS = EXPORT_APPLY_MODIFIERS,\ - EXPORT_TRI = EXPORT_TRI,\ - ) + context, + EXPORT_APPLY_MODIFIERS=False, + EXPORT_TRI=False, + EXPORT_GZIP=False): + + if EXPORT_GZIP: + if not filename.lower().endswith('.x3dz'): + filename = '.'.join(filename.split('.')[:-1]) + '.x3dz' + else: + if not filename.lower().endswith('.x3d'): + filename = '.'.join(filename.split('.')[:-1]) + '.x3d' + + + scene = context.scene + # scene = Blender.Scene.GetCurrent() + world = scene.world + + # XXX these are global textures while .Get() returned only scene's? + alltextures = bpy.data.textures + # alltextures = Blender.Texture.Get() + + wrlexport=x3d_class(filename) + wrlexport.export(\ + scene,\ + world,\ + alltextures,\ + \ + EXPORT_APPLY_MODIFIERS = EXPORT_APPLY_MODIFIERS,\ + EXPORT_TRI = EXPORT_TRI,\ + ) def x3d_export_ui(filename): - if not filename.endswith(extension): - filename += extension - #if _safeOverwrite and sys.exists(filename): - # result = Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0") - #if(result != 1): - # return - - # Get user options - EXPORT_APPLY_MODIFIERS = Draw.Create(1) - EXPORT_TRI = Draw.Create(0) - EXPORT_GZIP = Draw.Create( filename.lower().endswith('.x3dz') ) - - # Get USER Options - pup_block = [\ - ('Apply Modifiers', EXPORT_APPLY_MODIFIERS, 'Use transformed mesh data from each object.'),\ - ('Triangulate', EXPORT_TRI, 'Triangulate quads.'),\ - ('Compress', EXPORT_GZIP, 'GZip the resulting file, requires a full python install'),\ - ] - - if not Draw.PupBlock('Export...', pup_block): - return - - Blender.Window.EditMode(0) - Blender.Window.WaitCursor(1) - - x3d_export(filename,\ - EXPORT_APPLY_MODIFIERS = EXPORT_APPLY_MODIFIERS.val,\ - EXPORT_TRI = EXPORT_TRI.val,\ - EXPORT_GZIP = EXPORT_GZIP.val\ - ) - - Blender.Window.WaitCursor(0) + if not filename.endswith(extension): + filename += extension + #if _safeOverwrite and sys.exists(filename): + # result = Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0") + #if(result != 1): + # return + + # Get user options + EXPORT_APPLY_MODIFIERS = Draw.Create(1) + EXPORT_TRI = Draw.Create(0) + EXPORT_GZIP = Draw.Create( filename.lower().endswith('.x3dz') ) + + # Get USER Options + pup_block = [\ + ('Apply Modifiers', EXPORT_APPLY_MODIFIERS, 'Use transformed mesh data from each object.'),\ + ('Triangulate', EXPORT_TRI, 'Triangulate quads.'),\ + ('Compress', EXPORT_GZIP, 'GZip the resulting file, requires a full python install'),\ + ] + + if not Draw.PupBlock('Export...', pup_block): + return + + Blender.Window.EditMode(0) + Blender.Window.WaitCursor(1) + + x3d_export(filename,\ + EXPORT_APPLY_MODIFIERS = EXPORT_APPLY_MODIFIERS.val,\ + EXPORT_TRI = EXPORT_TRI.val,\ + EXPORT_GZIP = EXPORT_GZIP.val\ + ) + + Blender.Window.WaitCursor(0) @@ -1216,27 +1216,27 @@ def x3d_export_ui(filename): from bpy.props import * class ExportX3D(bpy.types.Operator): - '''Export selection to Extensible 3D file (.x3d)''' - bl_idname = "export.x3d" - bl_label = 'Export X3D' - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the X3D file", maxlen= 1024, default= "") - - apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object.", default=True) - triangulate = BoolProperty(name="Triangulate", description="Triangulate quads.", default=False) - compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install.", default=False) - - - def execute(self, context): - x3d_export(self.properties.path, context, self.properties.apply_modifiers, self.properties.triangulate, self.properties.compress) - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) + '''Export selection to Extensible 3D file (.x3d)''' + bl_idname = "export.x3d" + bl_label = 'Export X3D' + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + path = StringProperty(name="File Path", description="File path used for exporting the X3D file", maxlen= 1024, default= "") + + apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object.", default=True) + triangulate = BoolProperty(name="Triangulate", description="Triangulate quads.", default=False) + compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install.", default=False) + + + def execute(self, context): + x3d_export(self.properties.path, context, self.properties.apply_modifiers, self.properties.triangulate, self.properties.compress) + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) bpy.ops.add(ExportX3D) @@ -1249,4 +1249,4 @@ def menu_func(self, context): menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) # NOTES -# - blender version is hardcoded +# - blender version is hardcoded diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index bb0f486b09e..a7e621a61a7 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -16,763 +16,763 @@ ROT_STYLE = 'QUAT' DEG2RAD = 0.017453292519943295 class bvh_node_class(object): - __slots__=(\ - 'name',# bvh joint name - 'parent',# bvh_node_class type or None for no parent - 'children',# a list of children of this type. - 'rest_head_world',# worldspace rest location for the head of this node - 'rest_head_local',# localspace rest location for the head of this node - 'rest_tail_world',# # worldspace rest location for the tail of this node - 'rest_tail_local',# # worldspace rest location for the tail of this node - 'channels',# list of 6 ints, -1 for an unused channel, otherwise an index for the BVH motion data lines, lock triple then rot triple - 'rot_order',# a triple of indicies as to the order rotation is applied. [0,1,2] is x/y/z - [None, None, None] if no rotation. - 'anim_data',# a list one tuple's one for each frame. (locx, locy, locz, rotx, roty, rotz) - 'has_loc',# Conveinience function, bool, same as (channels[0]!=-1 or channels[1]!=-1 channels[2]!=-1) - 'has_rot',# Conveinience function, bool, same as (channels[3]!=-1 or channels[4]!=-1 channels[5]!=-1) - 'temp')# use this for whatever you want - - def __init__(self, name, rest_head_world, rest_head_local, parent, channels, rot_order): - self.name= name - self.rest_head_world= rest_head_world - self.rest_head_local= rest_head_local - self.rest_tail_world= None - self.rest_tail_local= None - self.parent= parent - self.channels= channels - self.rot_order= rot_order - - # convenience functions - self.has_loc= channels[0] != -1 or channels[1] != -1 or channels[2] != -1 - self.has_rot= channels[3] != -1 or channels[4] != -1 or channels[5] != -1 - - - self.children= [] - - # list of 6 length tuples: (lx,ly,lz, rx,ry,rz) - # even if the channels arnt used they will just be zero - # - self.anim_data= [(0,0,0,0,0,0)] - - - def __repr__(self): - return 'BVH name:"%s", rest_loc:(%.3f,%.3f,%.3f), rest_tail:(%.3f,%.3f,%.3f)' %\ - (self.name,\ - self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z,\ - self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z) - + __slots__=(\ + 'name',# bvh joint name + 'parent',# bvh_node_class type or None for no parent + 'children',# a list of children of this type. + 'rest_head_world',# worldspace rest location for the head of this node + 'rest_head_local',# localspace rest location for the head of this node + 'rest_tail_world',# # worldspace rest location for the tail of this node + 'rest_tail_local',# # worldspace rest location for the tail of this node + 'channels',# list of 6 ints, -1 for an unused channel, otherwise an index for the BVH motion data lines, lock triple then rot triple + 'rot_order',# a triple of indicies as to the order rotation is applied. [0,1,2] is x/y/z - [None, None, None] if no rotation. + 'anim_data',# a list one tuple's one for each frame. (locx, locy, locz, rotx, roty, rotz) + 'has_loc',# Conveinience function, bool, same as (channels[0]!=-1 or channels[1]!=-1 channels[2]!=-1) + 'has_rot',# Conveinience function, bool, same as (channels[3]!=-1 or channels[4]!=-1 channels[5]!=-1) + 'temp')# use this for whatever you want + + def __init__(self, name, rest_head_world, rest_head_local, parent, channels, rot_order): + self.name= name + self.rest_head_world= rest_head_world + self.rest_head_local= rest_head_local + self.rest_tail_world= None + self.rest_tail_local= None + self.parent= parent + self.channels= channels + self.rot_order= rot_order + + # convenience functions + self.has_loc= channels[0] != -1 or channels[1] != -1 or channels[2] != -1 + self.has_rot= channels[3] != -1 or channels[4] != -1 or channels[5] != -1 + + + self.children= [] + + # list of 6 length tuples: (lx,ly,lz, rx,ry,rz) + # even if the channels arnt used they will just be zero + # + self.anim_data= [(0,0,0,0,0,0)] + + + def __repr__(self): + return 'BVH name:"%s", rest_loc:(%.3f,%.3f,%.3f), rest_tail:(%.3f,%.3f,%.3f)' %\ + (self.name,\ + self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z,\ + self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z) + # Change the order rotation is applied. MATRIX_IDENTITY_3x3 = Matrix([1,0,0],[0,1,0],[0,0,1]) MATRIX_IDENTITY_4x4 = Matrix([1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]) -def eulerRotate(x,y,z, rot_order): - - # Clamp all values between 0 and 360, values outside this raise an error. - mats=[RotationMatrix(math.radians(x%360),3,'x'), RotationMatrix(math.radians(y%360),3,'y'), RotationMatrix(math.radians(z%360),3,'z')] - # print rot_order - # Standard BVH multiplication order, apply the rotation in the order Z,X,Y - - #XXX, order changes??? - #eul = (mats[rot_order[2]]*(mats[rot_order[1]]* (mats[rot_order[0]]* MATRIX_IDENTITY_3x3))).toEuler() - eul = (MATRIX_IDENTITY_3x3*mats[rot_order[0]]*(mats[rot_order[1]]* (mats[rot_order[2]]))).toEuler() - - eul = math.degrees(eul.x), math.degrees(eul.y), math.degrees(eul.z) - - return eul +def eulerRotate(x,y,z, rot_order): + + # Clamp all values between 0 and 360, values outside this raise an error. + mats=[RotationMatrix(math.radians(x%360),3,'x'), RotationMatrix(math.radians(y%360),3,'y'), RotationMatrix(math.radians(z%360),3,'z')] + # print rot_order + # Standard BVH multiplication order, apply the rotation in the order Z,X,Y + + #XXX, order changes??? + #eul = (mats[rot_order[2]]*(mats[rot_order[1]]* (mats[rot_order[0]]* MATRIX_IDENTITY_3x3))).toEuler() + eul = (MATRIX_IDENTITY_3x3*mats[rot_order[0]]*(mats[rot_order[1]]* (mats[rot_order[2]]))).toEuler() + + eul = math.degrees(eul.x), math.degrees(eul.y), math.degrees(eul.z) + + return eul def read_bvh(context, file_path, GLOBAL_SCALE=1.0): - # File loading stuff - # Open the file for importing - file = open(file_path, 'rU') - - # Seperate into a list of lists, each line a list of words. - file_lines = file.readlines() - # Non standard carrage returns? - if len(file_lines) == 1: - file_lines = file_lines[0].split('\r') - - # Split by whitespace. - file_lines =[ll for ll in [ l.split() for l in file_lines] if ll] - - - # Create Hirachy as empties - - if file_lines[0][0].lower() == 'hierarchy': - #print 'Importing the BVH Hierarchy for:', file_path - pass - else: - raise 'ERROR: This is not a BVH file' - - bvh_nodes= {None:None} - bvh_nodes_serial = [None] - - channelIndex = -1 - - - lineIdx = 0 # An index for the file. - while lineIdx < len(file_lines) -1: - #... - if file_lines[lineIdx][0].lower() == 'root' or file_lines[lineIdx][0].lower() == 'joint': - - # Join spaces into 1 word with underscores joining it. - if len(file_lines[lineIdx]) > 2: - file_lines[lineIdx][1] = '_'.join(file_lines[lineIdx][1:]) - file_lines[lineIdx] = file_lines[lineIdx][:2] - - # MAY NEED TO SUPPORT MULTIPLE ROOT's HERE!!!, Still unsure weather multiple roots are possible.?? - - # Make sure the names are unique- Object names will match joint names exactly and both will be unique. - name = file_lines[lineIdx][1] - - #print '%snode: %s, parent: %s' % (len(bvh_nodes_serial) * ' ', name, bvh_nodes_serial[-1]) - - lineIdx += 2 # Incriment to the next line (Offset) - rest_head_local = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) - lineIdx += 1 # Incriment to the next line (Channels) - - # newChannel[Xposition, Yposition, Zposition, Xrotation, Yrotation, Zrotation] - # newChannel references indecies to the motiondata, - # if not assigned then -1 refers to the last value that will be added on loading at a value of zero, this is appended - # We'll add a zero value onto the end of the MotionDATA so this is always refers to a value. - my_channel = [-1, -1, -1, -1, -1, -1] - my_rot_order= [None, None, None] - rot_count= 0 - for channel in file_lines[lineIdx][2:]: - channel= channel.lower() - channelIndex += 1 # So the index points to the right channel - if channel == 'xposition': my_channel[0] = channelIndex - elif channel == 'yposition': my_channel[1] = channelIndex - elif channel == 'zposition': my_channel[2] = channelIndex - - elif channel == 'xrotation': - my_channel[3] = channelIndex - my_rot_order[rot_count]= 0 - rot_count+=1 - elif channel == 'yrotation': - my_channel[4] = channelIndex - my_rot_order[rot_count]= 1 - rot_count+=1 - elif channel == 'zrotation': - my_channel[5] = channelIndex - my_rot_order[rot_count]= 2 - rot_count+=1 - - channels = file_lines[lineIdx][2:] - - my_parent= bvh_nodes_serial[-1] # account for none - - - # Apply the parents offset accumletivly - if my_parent==None: - rest_head_world= Vector(rest_head_local) - else: - rest_head_world= my_parent.rest_head_world + rest_head_local - - bvh_node= bvh_nodes[name]= bvh_node_class(name, rest_head_world, rest_head_local, my_parent, my_channel, my_rot_order) - - # If we have another child then we can call ourselves a parent, else - bvh_nodes_serial.append(bvh_node) - - # Account for an end node - if file_lines[lineIdx][0].lower() == 'end' and file_lines[lineIdx][1].lower() == 'site': # There is somtimes a name after 'End Site' but we will ignore it. - lineIdx += 2 # Incriment to the next line (Offset) - rest_tail = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) - - bvh_nodes_serial[-1].rest_tail_world= bvh_nodes_serial[-1].rest_head_world + rest_tail - bvh_nodes_serial[-1].rest_tail_local= rest_tail - - - # Just so we can remove the Parents in a uniform way- End end never has kids - # so this is a placeholder - bvh_nodes_serial.append(None) - - if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0] == '}': # == ['}'] - bvh_nodes_serial.pop() # Remove the last item - - if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0].lower() == 'motion': - #print '\nImporting motion data' - lineIdx += 3 # Set the cursor to the first frame - break - - lineIdx += 1 - - - # Remove the None value used for easy parent reference - del bvh_nodes[None] - # Dont use anymore - del bvh_nodes_serial - - bvh_nodes_list= bvh_nodes.values() - - while lineIdx < len(file_lines): - line= file_lines[lineIdx] - for bvh_node in bvh_nodes_list: - #for bvh_node in bvh_nodes_serial: - lx= ly= lz= rx= ry= rz= 0.0 - channels= bvh_node.channels - anim_data= bvh_node.anim_data - if channels[0] != -1: - lx= GLOBAL_SCALE * float( line[channels[0]] ) - - if channels[1] != -1: - ly= GLOBAL_SCALE * float( line[channels[1]] ) - - if channels[2] != -1: - lz= GLOBAL_SCALE * float( line[channels[2]] ) - - if channels[3] != -1 or channels[4] != -1 or channels[5] != -1: - rx, ry, rz = float( line[channels[3]] ), float( line[channels[4]] ), float( line[channels[5]] ) - - if ROT_STYLE != 'NATIVE': - rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) - - # Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling. - # Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation. - - while anim_data[-1][3] - rx > 180: rx+=360 - while anim_data[-1][3] - rx < -180: rx-=360 - - while anim_data[-1][4] - ry > 180: ry+=360 - while anim_data[-1][4] - ry < -180: ry-=360 - - while anim_data[-1][5] - rz > 180: rz+=360 - while anim_data[-1][5] - rz < -180: rz-=360 - - # Done importing motion data # - anim_data.append( (lx, ly, lz, rx, ry, rz) ) - lineIdx += 1 - - # Assign children - for bvh_node in bvh_nodes.values(): - bvh_node_parent= bvh_node.parent - if bvh_node_parent: - bvh_node_parent.children.append(bvh_node) - - # Now set the tip of each bvh_node - for bvh_node in bvh_nodes.values(): - - if not bvh_node.rest_tail_world: - if len(bvh_node.children)==0: - # could just fail here, but rare BVH files have childless nodes - bvh_node.rest_tail_world = Vector(bvh_node.rest_head_world) - bvh_node.rest_tail_local = Vector(bvh_node.rest_head_local) - elif len(bvh_node.children)==1: - bvh_node.rest_tail_world= Vector(bvh_node.children[0].rest_head_world) - bvh_node.rest_tail_local= Vector(bvh_node.children[0].rest_head_local) - else: - # allow this, see above - #if not bvh_node.children: - # raise 'error, bvh node has no end and no children. bad file' - - # Removed temp for now - rest_tail_world= Vector(0,0,0) - rest_tail_local= Vector(0,0,0) - for bvh_node_child in bvh_node.children: - rest_tail_world += bvh_node_child.rest_head_world - rest_tail_local += bvh_node_child.rest_head_local - - bvh_node.rest_tail_world= rest_tail_world * (1.0/len(bvh_node.children)) - bvh_node.rest_tail_local= rest_tail_local * (1.0/len(bvh_node.children)) - - # Make sure tail isnt the same location as the head. - if (bvh_node.rest_tail_local-bvh_node.rest_head_local).length <= 0.001*GLOBAL_SCALE: - - bvh_node.rest_tail_local.y= bvh_node.rest_tail_local.y + GLOBAL_SCALE/10 - bvh_node.rest_tail_world.y= bvh_node.rest_tail_world.y + GLOBAL_SCALE/10 - - - - return bvh_nodes + # File loading stuff + # Open the file for importing + file = open(file_path, 'rU') + + # Seperate into a list of lists, each line a list of words. + file_lines = file.readlines() + # Non standard carrage returns? + if len(file_lines) == 1: + file_lines = file_lines[0].split('\r') + + # Split by whitespace. + file_lines =[ll for ll in [ l.split() for l in file_lines] if ll] + + + # Create Hirachy as empties + + if file_lines[0][0].lower() == 'hierarchy': + #print 'Importing the BVH Hierarchy for:', file_path + pass + else: + raise 'ERROR: This is not a BVH file' + + bvh_nodes= {None:None} + bvh_nodes_serial = [None] + + channelIndex = -1 + + + lineIdx = 0 # An index for the file. + while lineIdx < len(file_lines) -1: + #... + if file_lines[lineIdx][0].lower() == 'root' or file_lines[lineIdx][0].lower() == 'joint': + + # Join spaces into 1 word with underscores joining it. + if len(file_lines[lineIdx]) > 2: + file_lines[lineIdx][1] = '_'.join(file_lines[lineIdx][1:]) + file_lines[lineIdx] = file_lines[lineIdx][:2] + + # MAY NEED TO SUPPORT MULTIPLE ROOT's HERE!!!, Still unsure weather multiple roots are possible.?? + + # Make sure the names are unique- Object names will match joint names exactly and both will be unique. + name = file_lines[lineIdx][1] + + #print '%snode: %s, parent: %s' % (len(bvh_nodes_serial) * ' ', name, bvh_nodes_serial[-1]) + + lineIdx += 2 # Incriment to the next line (Offset) + rest_head_local = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + lineIdx += 1 # Incriment to the next line (Channels) + + # newChannel[Xposition, Yposition, Zposition, Xrotation, Yrotation, Zrotation] + # newChannel references indecies to the motiondata, + # if not assigned then -1 refers to the last value that will be added on loading at a value of zero, this is appended + # We'll add a zero value onto the end of the MotionDATA so this is always refers to a value. + my_channel = [-1, -1, -1, -1, -1, -1] + my_rot_order= [None, None, None] + rot_count= 0 + for channel in file_lines[lineIdx][2:]: + channel= channel.lower() + channelIndex += 1 # So the index points to the right channel + if channel == 'xposition': my_channel[0] = channelIndex + elif channel == 'yposition': my_channel[1] = channelIndex + elif channel == 'zposition': my_channel[2] = channelIndex + + elif channel == 'xrotation': + my_channel[3] = channelIndex + my_rot_order[rot_count]= 0 + rot_count+=1 + elif channel == 'yrotation': + my_channel[4] = channelIndex + my_rot_order[rot_count]= 1 + rot_count+=1 + elif channel == 'zrotation': + my_channel[5] = channelIndex + my_rot_order[rot_count]= 2 + rot_count+=1 + + channels = file_lines[lineIdx][2:] + + my_parent= bvh_nodes_serial[-1] # account for none + + + # Apply the parents offset accumletivly + if my_parent==None: + rest_head_world= Vector(rest_head_local) + else: + rest_head_world= my_parent.rest_head_world + rest_head_local + + bvh_node= bvh_nodes[name]= bvh_node_class(name, rest_head_world, rest_head_local, my_parent, my_channel, my_rot_order) + + # If we have another child then we can call ourselves a parent, else + bvh_nodes_serial.append(bvh_node) + + # Account for an end node + if file_lines[lineIdx][0].lower() == 'end' and file_lines[lineIdx][1].lower() == 'site': # There is somtimes a name after 'End Site' but we will ignore it. + lineIdx += 2 # Incriment to the next line (Offset) + rest_tail = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + + bvh_nodes_serial[-1].rest_tail_world= bvh_nodes_serial[-1].rest_head_world + rest_tail + bvh_nodes_serial[-1].rest_tail_local= rest_tail + + + # Just so we can remove the Parents in a uniform way- End end never has kids + # so this is a placeholder + bvh_nodes_serial.append(None) + + if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0] == '}': # == ['}'] + bvh_nodes_serial.pop() # Remove the last item + + if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0].lower() == 'motion': + #print '\nImporting motion data' + lineIdx += 3 # Set the cursor to the first frame + break + + lineIdx += 1 + + + # Remove the None value used for easy parent reference + del bvh_nodes[None] + # Dont use anymore + del bvh_nodes_serial + + bvh_nodes_list= bvh_nodes.values() + + while lineIdx < len(file_lines): + line= file_lines[lineIdx] + for bvh_node in bvh_nodes_list: + #for bvh_node in bvh_nodes_serial: + lx= ly= lz= rx= ry= rz= 0.0 + channels= bvh_node.channels + anim_data= bvh_node.anim_data + if channels[0] != -1: + lx= GLOBAL_SCALE * float( line[channels[0]] ) + + if channels[1] != -1: + ly= GLOBAL_SCALE * float( line[channels[1]] ) + + if channels[2] != -1: + lz= GLOBAL_SCALE * float( line[channels[2]] ) + + if channels[3] != -1 or channels[4] != -1 or channels[5] != -1: + rx, ry, rz = float( line[channels[3]] ), float( line[channels[4]] ), float( line[channels[5]] ) + + if ROT_STYLE != 'NATIVE': + rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) + + # Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling. + # Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation. + + while anim_data[-1][3] - rx > 180: rx+=360 + while anim_data[-1][3] - rx < -180: rx-=360 + + while anim_data[-1][4] - ry > 180: ry+=360 + while anim_data[-1][4] - ry < -180: ry-=360 + + while anim_data[-1][5] - rz > 180: rz+=360 + while anim_data[-1][5] - rz < -180: rz-=360 + + # Done importing motion data # + anim_data.append( (lx, ly, lz, rx, ry, rz) ) + lineIdx += 1 + + # Assign children + for bvh_node in bvh_nodes.values(): + bvh_node_parent= bvh_node.parent + if bvh_node_parent: + bvh_node_parent.children.append(bvh_node) + + # Now set the tip of each bvh_node + for bvh_node in bvh_nodes.values(): + + if not bvh_node.rest_tail_world: + if len(bvh_node.children)==0: + # could just fail here, but rare BVH files have childless nodes + bvh_node.rest_tail_world = Vector(bvh_node.rest_head_world) + bvh_node.rest_tail_local = Vector(bvh_node.rest_head_local) + elif len(bvh_node.children)==1: + bvh_node.rest_tail_world= Vector(bvh_node.children[0].rest_head_world) + bvh_node.rest_tail_local= Vector(bvh_node.children[0].rest_head_local) + else: + # allow this, see above + #if not bvh_node.children: + # raise 'error, bvh node has no end and no children. bad file' + + # Removed temp for now + rest_tail_world= Vector(0,0,0) + rest_tail_local= Vector(0,0,0) + for bvh_node_child in bvh_node.children: + rest_tail_world += bvh_node_child.rest_head_world + rest_tail_local += bvh_node_child.rest_head_local + + bvh_node.rest_tail_world= rest_tail_world * (1.0/len(bvh_node.children)) + bvh_node.rest_tail_local= rest_tail_local * (1.0/len(bvh_node.children)) + + # Make sure tail isnt the same location as the head. + if (bvh_node.rest_tail_local-bvh_node.rest_head_local).length <= 0.001*GLOBAL_SCALE: + + bvh_node.rest_tail_local.y= bvh_node.rest_tail_local.y + GLOBAL_SCALE/10 + bvh_node.rest_tail_world.y= bvh_node.rest_tail_world.y + GLOBAL_SCALE/10 + + + + return bvh_nodes def bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP= False): - - if IMPORT_START_FRAME<1: - IMPORT_START_FRAME= 1 - - scn= context.scene - scn.objects.selected = [] - - objects= [] - - def add_ob(name): - ob = scn.objects.new('Empty') - objects.append(ob) - return ob - - # Add objects - for name, bvh_node in bvh_nodes.items(): - bvh_node.temp= add_ob(name) - - # Parent the objects - for bvh_node in bvh_nodes.values(): - bvh_node.temp.makeParent([ bvh_node_child.temp for bvh_node_child in bvh_node.children ], 1, 0) # ojbs, noninverse, 1 = not fast. - - # Offset - for bvh_node in bvh_nodes.values(): - # Make relative to parents offset - bvh_node.temp.loc= bvh_node.rest_head_local - - # Add tail objects - for name, bvh_node in bvh_nodes.items(): - if not bvh_node.children: - ob_end= add_ob(name + '_end') - bvh_node.temp.makeParent([ob_end], 1, 0) # ojbs, noninverse, 1 = not fast. - ob_end.loc= bvh_node.rest_tail_local - - - # Animate the data, the last used bvh_node will do since they all have the same number of frames - for current_frame in range(len(bvh_node.anim_data)): - Blender.Set('curframe', current_frame+IMPORT_START_FRAME) - - for bvh_node in bvh_nodes.values(): - lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame] - - rest_head_local= bvh_node.rest_head_local - bvh_node.temp.loc= rest_head_local.x+lx, rest_head_local.y+ly, rest_head_local.z+lz - - bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD - - bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) # XXX invalid - - scn.update(1) - return objects + + if IMPORT_START_FRAME<1: + IMPORT_START_FRAME= 1 + + scn= context.scene + scn.objects.selected = [] + + objects= [] + + def add_ob(name): + ob = scn.objects.new('Empty') + objects.append(ob) + return ob + + # Add objects + for name, bvh_node in bvh_nodes.items(): + bvh_node.temp= add_ob(name) + + # Parent the objects + for bvh_node in bvh_nodes.values(): + bvh_node.temp.makeParent([ bvh_node_child.temp for bvh_node_child in bvh_node.children ], 1, 0) # ojbs, noninverse, 1 = not fast. + + # Offset + for bvh_node in bvh_nodes.values(): + # Make relative to parents offset + bvh_node.temp.loc= bvh_node.rest_head_local + + # Add tail objects + for name, bvh_node in bvh_nodes.items(): + if not bvh_node.children: + ob_end= add_ob(name + '_end') + bvh_node.temp.makeParent([ob_end], 1, 0) # ojbs, noninverse, 1 = not fast. + ob_end.loc= bvh_node.rest_tail_local + + + # Animate the data, the last used bvh_node will do since they all have the same number of frames + for current_frame in range(len(bvh_node.anim_data)): + Blender.Set('curframe', current_frame+IMPORT_START_FRAME) + + for bvh_node in bvh_nodes.values(): + lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame] + + rest_head_local= bvh_node.rest_head_local + bvh_node.temp.loc= rest_head_local.x+lx, rest_head_local.y+ly, rest_head_local.z+lz + + bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD + + bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) # XXX invalid + + scn.update(1) + return objects def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP= False): - - if IMPORT_START_FRAME<1: - IMPORT_START_FRAME= 1 - - - # Add the new armature, - scn = context.scene + + if IMPORT_START_FRAME<1: + IMPORT_START_FRAME= 1 + + + # Add the new armature, + scn = context.scene #XXX scn.objects.selected = [] - for ob in scn.objects: - ob.selected = False - - + for ob in scn.objects: + ob.selected = False + + #XXX arm_data= bpy.data.armatures.new() #XXX arm_ob = scn.objects.new(arm_data) - bpy.ops.object.armature_add() - arm_ob= scn.objects[-1] - arm_data= arm_ob.data + bpy.ops.object.armature_add() + arm_ob= scn.objects[-1] + arm_data= arm_ob.data + + + - - - #XXX scn.objects.context = [arm_ob] #XXX scn.objects.active = arm_ob - arm_ob.selected= True - scn.objects.active= arm_ob - print(scn.objects.active) - - - # Put us into editmode + arm_ob.selected= True + scn.objects.active= arm_ob + print(scn.objects.active) + + + # Put us into editmode #XXX arm_data.makeEditable() - - bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - bpy.ops.object.mode_set(mode='EDIT', toggle=False) - - - - # Get the average bone length for zero length bones, we may not use this. - average_bone_length= 0.0 - nonzero_count= 0 - for bvh_node in bvh_nodes.values(): - l= (bvh_node.rest_head_local-bvh_node.rest_tail_local).length - if l: - average_bone_length+= l - nonzero_count+=1 - - # Very rare cases all bones couldbe zero length??? - if not average_bone_length: - average_bone_length = 0.1 - else: - # Normal operation - average_bone_length = average_bone_length/nonzero_count - - + + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + bpy.ops.object.mode_set(mode='EDIT', toggle=False) + + + + # Get the average bone length for zero length bones, we may not use this. + average_bone_length= 0.0 + nonzero_count= 0 + for bvh_node in bvh_nodes.values(): + l= (bvh_node.rest_head_local-bvh_node.rest_tail_local).length + if l: + average_bone_length+= l + nonzero_count+=1 + + # Very rare cases all bones couldbe zero length??? + if not average_bone_length: + average_bone_length = 0.1 + else: + # Normal operation + average_bone_length = average_bone_length/nonzero_count + + #XXX - sloppy operator code - - bpy.ops.armature.delete() - bpy.ops.armature.select_all() - bpy.ops.armature.delete() - - ZERO_AREA_BONES= [] - for name, bvh_node in bvh_nodes.items(): - # New editbone - bpy.ops.armature.bone_primitive_add(name="Bone") - + + bpy.ops.armature.delete() + bpy.ops.armature.select_all() + bpy.ops.armature.delete() + + ZERO_AREA_BONES= [] + for name, bvh_node in bvh_nodes.items(): + # New editbone + bpy.ops.armature.bone_primitive_add(name="Bone") + #XXX bone= bvh_node.temp= Blender.Armature.Editbone() - bone= bvh_node.temp= arm_data.edit_bones[-1] + bone= bvh_node.temp= arm_data.edit_bones[-1] - bone.name= name + bone.name= name # arm_data.bones[name]= bone - - bone.head= bvh_node.rest_head_world - bone.tail= bvh_node.rest_tail_world - - # ZERO AREA BONES. - if (bone.head-bone.tail).length < 0.001: - if bvh_node.parent: - ofs= bvh_node.parent.rest_head_local- bvh_node.parent.rest_tail_local - if ofs.length: # is our parent zero length also?? unlikely - bone.tail= bone.tail+ofs - else: - bone.tail.y= bone.tail.y+average_bone_length - else: - bone.tail.y= bone.tail.y+average_bone_length - - ZERO_AREA_BONES.append(bone.name) - - - for bvh_node in bvh_nodes.values(): - if bvh_node.parent: - # bvh_node.temp is the Editbone - - # Set the bone parent - bvh_node.temp.parent= bvh_node.parent.temp - - # Set the connection state - if not bvh_node.has_loc and\ - bvh_node.parent and\ - bvh_node.parent.temp.name not in ZERO_AREA_BONES and\ - bvh_node.parent.rest_tail_local == bvh_node.rest_head_local: - bvh_node.temp.connected= True - - # Replace the editbone with the editbone name, - # to avoid memory errors accessing the editbone outside editmode - for bvh_node in bvh_nodes.values(): - bvh_node.temp= bvh_node.temp.name - + + bone.head= bvh_node.rest_head_world + bone.tail= bvh_node.rest_tail_world + + # ZERO AREA BONES. + if (bone.head-bone.tail).length < 0.001: + if bvh_node.parent: + ofs= bvh_node.parent.rest_head_local- bvh_node.parent.rest_tail_local + if ofs.length: # is our parent zero length also?? unlikely + bone.tail= bone.tail+ofs + else: + bone.tail.y= bone.tail.y+average_bone_length + else: + bone.tail.y= bone.tail.y+average_bone_length + + ZERO_AREA_BONES.append(bone.name) + + + for bvh_node in bvh_nodes.values(): + if bvh_node.parent: + # bvh_node.temp is the Editbone + + # Set the bone parent + bvh_node.temp.parent= bvh_node.parent.temp + + # Set the connection state + if not bvh_node.has_loc and\ + bvh_node.parent and\ + bvh_node.parent.temp.name not in ZERO_AREA_BONES and\ + bvh_node.parent.rest_tail_local == bvh_node.rest_head_local: + bvh_node.temp.connected= True + + # Replace the editbone with the editbone name, + # to avoid memory errors accessing the editbone outside editmode + for bvh_node in bvh_nodes.values(): + bvh_node.temp= bvh_node.temp.name + #XXX arm_data.update() - - # Now Apply the animation to the armature - - # Get armature animation data - bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - bpy.ops.object.mode_set(mode='POSE', toggle=False) - - pose= arm_ob.pose - pose_bones= pose.bones - - - if ROT_STYLE=='NATIVE': - eul_order_lookup = {\ - (0,1,2):'XYZ', - (0,2,1):'XZY', - (1,0,2):'YXZ', - (1,2,0):'YZX', - (2,0,1):'ZXY', - (2,1,0):'ZYZ' - } - - for bvh_node in bvh_nodes.values(): - bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. - pose_bone= pose_bones[bone_name] - pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)] - - elif ROT_STYLE=='XYZ': - for pose_bone in pose_bones: - pose_bone.rotation_mode = 'XYZ' - else: - # Quats default - pass - - - bpy.ops.pose.select_all() # set - bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? - - - - - - #for p in pose_bones: - # print(p) - - -#XXX action = Blender.Armature.NLA.NewAction("Action") + + # Now Apply the animation to the armature + + # Get armature animation data + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + bpy.ops.object.mode_set(mode='POSE', toggle=False) + + pose= arm_ob.pose + pose_bones= pose.bones + + + if ROT_STYLE=='NATIVE': + eul_order_lookup = {\ + (0,1,2):'XYZ', + (0,2,1):'XZY', + (1,0,2):'YXZ', + (1,2,0):'YZX', + (2,0,1):'ZXY', + (2,1,0):'ZYZ' + } + + for bvh_node in bvh_nodes.values(): + bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. + pose_bone= pose_bones[bone_name] + pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)] + + elif ROT_STYLE=='XYZ': + for pose_bone in pose_bones: + pose_bone.rotation_mode = 'XYZ' + else: + # Quats default + pass + + + bpy.ops.pose.select_all() # set + bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? + + + + + + #for p in pose_bones: + # print(p) + + +#XXX action = Blender.Armature.NLA.NewAction("Action") #XXX action.setActive(arm_ob) - - #bpy.ops.action.new() - #action = bpy.data.actions[-1] - - # arm_ob.animation_data.action = action - action = arm_ob.animation_data.action - - - - - #xformConstants= [ Blender.Object.Pose.LOC, Blender.Object.Pose.ROT ] - - # Replace the bvh_node.temp (currently an editbone) - # With a tuple (pose_bone, armature_bone, bone_rest_matrix, bone_rest_matrix_inv) - for bvh_node in bvh_nodes.values(): - bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. - pose_bone= pose_bones[bone_name] - rest_bone= arm_data.bones[bone_name] + + #bpy.ops.action.new() + #action = bpy.data.actions[-1] + + # arm_ob.animation_data.action = action + action = arm_ob.animation_data.action + + + + + #xformConstants= [ Blender.Object.Pose.LOC, Blender.Object.Pose.ROT ] + + # Replace the bvh_node.temp (currently an editbone) + # With a tuple (pose_bone, armature_bone, bone_rest_matrix, bone_rest_matrix_inv) + for bvh_node in bvh_nodes.values(): + bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. + pose_bone= pose_bones[bone_name] + rest_bone= arm_data.bones[bone_name] #XXX bone_rest_matrix = rest_bone.matrix['ARMATURESPACE'].rotationPart() - bone_rest_matrix = rest_bone.matrix.rotationPart() - - - bone_rest_matrix_inv= Matrix(bone_rest_matrix) - bone_rest_matrix_inv.invert() - - bone_rest_matrix_inv.resize4x4() - bone_rest_matrix.resize4x4() - bvh_node.temp= (pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv) - - - # Make a dict for fast access without rebuilding a list all the time. - ''' - xformConstants_dict={ - (True,True): [Blender.Object.Pose.LOC, Blender.Object.Pose.ROT],\ - (False,True): [Blender.Object.Pose.ROT],\ - (True,False): [Blender.Object.Pose.LOC],\ - (False,False): [],\ - } - ''' - - # KEYFRAME METHOD, SLOW, USE IPOS DIRECT - # TODO: use f-point samples instead (Aligorith) - - # Animate the data, the last used bvh_node will do since they all have the same number of frames - for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame) - # print current_frame - - #if current_frame==150: # debugging - # break - - # Dont neet to set the current frame - for bvh_node in bvh_nodes.values(): - pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp - lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame+1] - - if bvh_node.has_rot: - - if ROT_STYLE=='QUAT': - # Set the rotation, not so simple - bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() - - bone_rotation_matrix.resize4x4() - #XXX ORDER CHANGE??? - #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() # ORIGINAL - # pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() - # pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix).toQuat() # BAD - # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD - # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD - - #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix_inv * bone_rest_matrix).toQuat() - #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rest_matrix * bone_rotation_matrix).toQuat() - #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() - - #pose_bone.rotation_quaternion= ( bone_rest_matrix* bone_rest_matrix_inv * bone_rotation_matrix).toQuat() - #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix * bone_rest_matrix_inv).toQuat() - #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix ).toQuat() - - pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() - - else: - bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() - bone_rotation_matrix.resize4x4() - - eul= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toEuler() - - #pose_bone.rotation_euler = math.radians(rx), math.radians(ry), math.radians(rz) - pose_bone.rotation_euler = eul - - print("ROTATION" + str(Euler(math.radians(rx), math.radians(ry), math.radians(rz)))) - - if bvh_node.has_loc: - # Set the Location, simple too - - #XXX ORDER CHANGE - # pose_bone.location= (TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local ) * bone_rest_matrix_inv).translationPart() # WHY * 10? - just how pose works - # pose_bone.location= (bone_rest_matrix_inv * TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local )).translationPart() - # pose_bone.location= lx, ly, lz - pose_bone.location= Vector(lx, ly, lz) - bvh_node.rest_head_local - + bone_rest_matrix = rest_bone.matrix.rotationPart() + + + bone_rest_matrix_inv= Matrix(bone_rest_matrix) + bone_rest_matrix_inv.invert() + + bone_rest_matrix_inv.resize4x4() + bone_rest_matrix.resize4x4() + bvh_node.temp= (pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv) + + + # Make a dict for fast access without rebuilding a list all the time. + ''' + xformConstants_dict={ + (True,True): [Blender.Object.Pose.LOC, Blender.Object.Pose.ROT],\ + (False,True): [Blender.Object.Pose.ROT],\ + (True,False): [Blender.Object.Pose.LOC],\ + (False,False): [],\ + } + ''' + + # KEYFRAME METHOD, SLOW, USE IPOS DIRECT + # TODO: use f-point samples instead (Aligorith) + + # Animate the data, the last used bvh_node will do since they all have the same number of frames + for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame) + # print current_frame + + #if current_frame==150: # debugging + # break + + # Dont neet to set the current frame + for bvh_node in bvh_nodes.values(): + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame+1] + + if bvh_node.has_rot: + + if ROT_STYLE=='QUAT': + # Set the rotation, not so simple + bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() + + bone_rotation_matrix.resize4x4() + #XXX ORDER CHANGE??? + #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() # ORIGINAL + # pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() + # pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix).toQuat() # BAD + # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD + # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD + + #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix_inv * bone_rest_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rest_matrix * bone_rotation_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() + + #pose_bone.rotation_quaternion= ( bone_rest_matrix* bone_rest_matrix_inv * bone_rotation_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix * bone_rest_matrix_inv).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix ).toQuat() + + pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() + + else: + bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() + bone_rotation_matrix.resize4x4() + + eul= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toEuler() + + #pose_bone.rotation_euler = math.radians(rx), math.radians(ry), math.radians(rz) + pose_bone.rotation_euler = eul + + print("ROTATION" + str(Euler(math.radians(rx), math.radians(ry), math.radians(rz)))) + + if bvh_node.has_loc: + # Set the Location, simple too + + #XXX ORDER CHANGE + # pose_bone.location= (TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local ) * bone_rest_matrix_inv).translationPart() # WHY * 10? - just how pose works + # pose_bone.location= (bone_rest_matrix_inv * TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local )).translationPart() + # pose_bone.location= lx, ly, lz + pose_bone.location= Vector(lx, ly, lz) - bvh_node.rest_head_local + #XXX # TODO- add in 2.5 - if 0: - # Get the transform - xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] - - if xformConstants: - # Insert the keyframe from the loc/quat - pose_bone.insertKey(arm_ob, current_frame+IMPORT_START_FRAME, xformConstants, True ) - else: - - if bvh_node.has_loc: - pose_bone.keyframe_insert("location") - if bvh_node.has_rot: - if ROT_STYLE=='QUAT': - pose_bone.keyframe_insert("rotation_quaternion") - else: - pose_bone.keyframe_insert("rotation_euler") - - - - # bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? - bpy.ops.screen.frame_offset(delta=1) - - # First time, set the IPO's to linear + if 0: + # Get the transform + xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] + + if xformConstants: + # Insert the keyframe from the loc/quat + pose_bone.insertKey(arm_ob, current_frame+IMPORT_START_FRAME, xformConstants, True ) + else: + + if bvh_node.has_loc: + pose_bone.keyframe_insert("location") + if bvh_node.has_rot: + if ROT_STYLE=='QUAT': + pose_bone.keyframe_insert("rotation_quaternion") + else: + pose_bone.keyframe_insert("rotation_euler") + + + + # bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? + bpy.ops.screen.frame_offset(delta=1) + + # First time, set the IPO's to linear #XXX #TODO - if 0: - if current_frame==0: - for ipo in action.getAllChannelIpos().values(): - if ipo: - for cur in ipo: - cur.interpolation = Blender.IpoCurve.InterpTypes.LINEAR - if IMPORT_LOOP: - cur.extend = Blender.IpoCurve.ExtendTypes.CYCLIC - - - else: - for cu in action.fcurves: - for bez in cu.keyframe_points: - bez.interpolation = 'CONSTANT' - - # END KEYFRAME METHOD - - - """ - # IPO KEYFRAME SETTING - # Add in the IPOs by adding keyframes, AFAIK theres no way to add IPOs to an action so I do this :/ - for bvh_node in bvh_nodes.values(): - pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp - - # Get the transform - xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] - if xformConstants: - pose_bone.loc[:]= 0,0,0 - pose_bone.quat[:]= 0,0,1,0 - # Insert the keyframe from the loc/quat - pose_bone.insertKey(arm_ob, IMPORT_START_FRAME, xformConstants) - - - action_ipos= action.getAllChannelIpos() - - - for bvh_node in bvh_nodes.values(): - has_loc= bvh_node.has_loc - has_rot= bvh_node.has_rot - - if not has_rot and not has_loc: - # No animation data - continue - - ipo= action_ipos[bvh_node.temp[0].name] # posebones name as key - - if has_loc: - curve_xloc= ipo[Blender.Ipo.PO_LOCX] - curve_yloc= ipo[Blender.Ipo.PO_LOCY] - curve_zloc= ipo[Blender.Ipo.PO_LOCZ] - - curve_xloc.interpolation= \ - curve_yloc.interpolation= \ - curve_zloc.interpolation= \ - Blender.IpoCurve.InterpTypes.LINEAR - - - if has_rot: - curve_wquat= ipo[Blender.Ipo.PO_QUATW] - curve_xquat= ipo[Blender.Ipo.PO_QUATX] - curve_yquat= ipo[Blender.Ipo.PO_QUATY] - curve_zquat= ipo[Blender.Ipo.PO_QUATZ] - - curve_wquat.interpolation= \ - curve_xquat.interpolation= \ - curve_yquat.interpolation= \ - curve_zquat.interpolation= \ - Blender.IpoCurve.InterpTypes.LINEAR - - # Get the bone - pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp - - - def pose_rot(anim_data): - bone_rotation_matrix= Euler(anim_data[3], anim_data[4], anim_data[5]).toMatrix() - bone_rotation_matrix.resize4x4() - return tuple((bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat()) # qw,qx,qy,qz - - def pose_loc(anim_data): - return tuple((TranslationMatrix(Vector(anim_data[0], anim_data[1], anim_data[2])) * bone_rest_matrix_inv).translationPart()) - - - last_frame= len(bvh_node.anim_data)+IMPORT_START_FRAME-1 - - if has_loc: - pose_locations= [pose_loc(anim_key) for anim_key in bvh_node.anim_data] - - # Add the start at the end, we know the start is just 0,0,0 anyway - curve_xloc.append((last_frame, pose_locations[-1][0])) - curve_yloc.append((last_frame, pose_locations[-1][1])) - curve_zloc.append((last_frame, pose_locations[-1][2])) - - if len(pose_locations) > 1: - ox,oy,oz= pose_locations[0] - x,y,z= pose_locations[1] - - for i in range(1, len(pose_locations)-1): # from second frame to second last frame - - nx,ny,nz= pose_locations[i+1] - xset= yset= zset= True # we set all these by default - if abs((ox+nx)/2 - x) < 0.00001: xset= False - if abs((oy+ny)/2 - y) < 0.00001: yset= False - if abs((oz+nz)/2 - z) < 0.00001: zset= False - - if xset: curve_xloc.append((i+IMPORT_START_FRAME, x)) - if yset: curve_yloc.append((i+IMPORT_START_FRAME, y)) - if zset: curve_zloc.append((i+IMPORT_START_FRAME, z)) - - # Set the old and use the new - ox,oy,oz= x,y,z - x,y,z= nx,ny,nz - - - if has_rot: - pose_rotations= [pose_rot(anim_key) for anim_key in bvh_node.anim_data] - - # Add the start at the end, we know the start is just 0,0,0 anyway - curve_wquat.append((last_frame, pose_rotations[-1][0])) - curve_xquat.append((last_frame, pose_rotations[-1][1])) - curve_yquat.append((last_frame, pose_rotations[-1][2])) - curve_zquat.append((last_frame, pose_rotations[-1][3])) - - - if len(pose_rotations) > 1: - ow,ox,oy,oz= pose_rotations[0] - w,x,y,z= pose_rotations[1] - - for i in range(1, len(pose_rotations)-1): # from second frame to second last frame - - nw, nx,ny,nz= pose_rotations[i+1] - wset= xset= yset= zset= True # we set all these by default - if abs((ow+nw)/2 - w) < 0.00001: wset= False - if abs((ox+nx)/2 - x) < 0.00001: xset= False - if abs((oy+ny)/2 - y) < 0.00001: yset= False - if abs((oz+nz)/2 - z) < 0.00001: zset= False - - if wset: curve_wquat.append((i+IMPORT_START_FRAME, w)) - if xset: curve_xquat.append((i+IMPORT_START_FRAME, x)) - if yset: curve_yquat.append((i+IMPORT_START_FRAME, y)) - if zset: curve_zquat.append((i+IMPORT_START_FRAME, z)) - - # Set the old and use the new - ow,ox,oy,oz= w,x,y,z - w,x,y,z= nw,nx,ny,nz - - # IPO KEYFRAME SETTING - """ - + if 0: + if current_frame==0: + for ipo in action.getAllChannelIpos().values(): + if ipo: + for cur in ipo: + cur.interpolation = Blender.IpoCurve.InterpTypes.LINEAR + if IMPORT_LOOP: + cur.extend = Blender.IpoCurve.ExtendTypes.CYCLIC + + + else: + for cu in action.fcurves: + for bez in cu.keyframe_points: + bez.interpolation = 'CONSTANT' + + # END KEYFRAME METHOD + + + """ + # IPO KEYFRAME SETTING + # Add in the IPOs by adding keyframes, AFAIK theres no way to add IPOs to an action so I do this :/ + for bvh_node in bvh_nodes.values(): + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + + # Get the transform + xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] + if xformConstants: + pose_bone.loc[:]= 0,0,0 + pose_bone.quat[:]= 0,0,1,0 + # Insert the keyframe from the loc/quat + pose_bone.insertKey(arm_ob, IMPORT_START_FRAME, xformConstants) + + + action_ipos= action.getAllChannelIpos() + + + for bvh_node in bvh_nodes.values(): + has_loc= bvh_node.has_loc + has_rot= bvh_node.has_rot + + if not has_rot and not has_loc: + # No animation data + continue + + ipo= action_ipos[bvh_node.temp[0].name] # posebones name as key + + if has_loc: + curve_xloc= ipo[Blender.Ipo.PO_LOCX] + curve_yloc= ipo[Blender.Ipo.PO_LOCY] + curve_zloc= ipo[Blender.Ipo.PO_LOCZ] + + curve_xloc.interpolation= \ + curve_yloc.interpolation= \ + curve_zloc.interpolation= \ + Blender.IpoCurve.InterpTypes.LINEAR + + + if has_rot: + curve_wquat= ipo[Blender.Ipo.PO_QUATW] + curve_xquat= ipo[Blender.Ipo.PO_QUATX] + curve_yquat= ipo[Blender.Ipo.PO_QUATY] + curve_zquat= ipo[Blender.Ipo.PO_QUATZ] + + curve_wquat.interpolation= \ + curve_xquat.interpolation= \ + curve_yquat.interpolation= \ + curve_zquat.interpolation= \ + Blender.IpoCurve.InterpTypes.LINEAR + + # Get the bone + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + + + def pose_rot(anim_data): + bone_rotation_matrix= Euler(anim_data[3], anim_data[4], anim_data[5]).toMatrix() + bone_rotation_matrix.resize4x4() + return tuple((bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat()) # qw,qx,qy,qz + + def pose_loc(anim_data): + return tuple((TranslationMatrix(Vector(anim_data[0], anim_data[1], anim_data[2])) * bone_rest_matrix_inv).translationPart()) + + + last_frame= len(bvh_node.anim_data)+IMPORT_START_FRAME-1 + + if has_loc: + pose_locations= [pose_loc(anim_key) for anim_key in bvh_node.anim_data] + + # Add the start at the end, we know the start is just 0,0,0 anyway + curve_xloc.append((last_frame, pose_locations[-1][0])) + curve_yloc.append((last_frame, pose_locations[-1][1])) + curve_zloc.append((last_frame, pose_locations[-1][2])) + + if len(pose_locations) > 1: + ox,oy,oz= pose_locations[0] + x,y,z= pose_locations[1] + + for i in range(1, len(pose_locations)-1): # from second frame to second last frame + + nx,ny,nz= pose_locations[i+1] + xset= yset= zset= True # we set all these by default + if abs((ox+nx)/2 - x) < 0.00001: xset= False + if abs((oy+ny)/2 - y) < 0.00001: yset= False + if abs((oz+nz)/2 - z) < 0.00001: zset= False + + if xset: curve_xloc.append((i+IMPORT_START_FRAME, x)) + if yset: curve_yloc.append((i+IMPORT_START_FRAME, y)) + if zset: curve_zloc.append((i+IMPORT_START_FRAME, z)) + + # Set the old and use the new + ox,oy,oz= x,y,z + x,y,z= nx,ny,nz + + + if has_rot: + pose_rotations= [pose_rot(anim_key) for anim_key in bvh_node.anim_data] + + # Add the start at the end, we know the start is just 0,0,0 anyway + curve_wquat.append((last_frame, pose_rotations[-1][0])) + curve_xquat.append((last_frame, pose_rotations[-1][1])) + curve_yquat.append((last_frame, pose_rotations[-1][2])) + curve_zquat.append((last_frame, pose_rotations[-1][3])) + + + if len(pose_rotations) > 1: + ow,ox,oy,oz= pose_rotations[0] + w,x,y,z= pose_rotations[1] + + for i in range(1, len(pose_rotations)-1): # from second frame to second last frame + + nw, nx,ny,nz= pose_rotations[i+1] + wset= xset= yset= zset= True # we set all these by default + if abs((ow+nw)/2 - w) < 0.00001: wset= False + if abs((ox+nx)/2 - x) < 0.00001: xset= False + if abs((oy+ny)/2 - y) < 0.00001: yset= False + if abs((oz+nz)/2 - z) < 0.00001: zset= False + + if wset: curve_wquat.append((i+IMPORT_START_FRAME, w)) + if xset: curve_xquat.append((i+IMPORT_START_FRAME, x)) + if yset: curve_yquat.append((i+IMPORT_START_FRAME, y)) + if zset: curve_zquat.append((i+IMPORT_START_FRAME, z)) + + # Set the old and use the new + ow,ox,oy,oz= w,x,y,z + w,x,y,z= nw,nx,ny,nz + + # IPO KEYFRAME SETTING + """ + # XXX NOT NEEDED NOW? - # pose.update() - return arm_ob + # pose.update() + return arm_ob #=============# @@ -789,87 +789,87 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO import os DIR = '/metavr/mocap/bvh/' for f in ('/d/staggered_walk.bvh',): - #for f in os.listdir(DIR)[5:6]: - #for f in os.listdir(DIR): - if f.endswith('.bvh'): - s = Blender.Scene.New(f) - s.makeCurrent() - #file= DIR + f - file= f - print f - bvh_nodes= read_bvh(file, 1.0) - bvh_node_dict2armature(bvh_nodes, 1) + #for f in os.listdir(DIR)[5:6]: + #for f in os.listdir(DIR): + if f.endswith('.bvh'): + s = Blender.Scene.New(f) + s.makeCurrent() + #file= DIR + f + file= f + print f + bvh_nodes= read_bvh(file, 1.0) + bvh_node_dict2armature(bvh_nodes, 1) ''' def load_bvh_ui(context, file, PREF_UI= False): - + #XXX if BPyMessages.Error_NoFile(file): #XXX return - + #XXX Draw= Blender.Draw - - IMPORT_SCALE = 0.1 - IMPORT_START_FRAME = 1 - IMPORT_AS_ARMATURE = 1 - IMPORT_AS_EMPTIES = 0 - IMPORT_LOOP = 0 - - # Get USER Options - if PREF_UI: - pup_block = [\ - ('As Armature', IMPORT_AS_ARMATURE, 'Imports the BVH as an armature'),\ - ('As Empties', IMPORT_AS_EMPTIES, 'Imports the BVH as empties'),\ - ('Scale: ', IMPORT_SCALE, 0.001, 100.0, 'Scale the BVH, Use 0.01 when 1.0 is 1 metre'),\ - ('Start Frame: ', IMPORT_START_FRAME, 1, 30000, 'Frame to start BVH motion'),\ - ('Loop Animation', IMPORT_LOOP, 'Enable cyclic IPOs'),\ - ] - + + IMPORT_SCALE = 0.1 + IMPORT_START_FRAME = 1 + IMPORT_AS_ARMATURE = 1 + IMPORT_AS_EMPTIES = 0 + IMPORT_LOOP = 0 + + # Get USER Options + if PREF_UI: + pup_block = [\ + ('As Armature', IMPORT_AS_ARMATURE, 'Imports the BVH as an armature'),\ + ('As Empties', IMPORT_AS_EMPTIES, 'Imports the BVH as empties'),\ + ('Scale: ', IMPORT_SCALE, 0.001, 100.0, 'Scale the BVH, Use 0.01 when 1.0 is 1 metre'),\ + ('Start Frame: ', IMPORT_START_FRAME, 1, 30000, 'Frame to start BVH motion'),\ + ('Loop Animation', IMPORT_LOOP, 'Enable cyclic IPOs'),\ + ] + #XXX if not Draw.PupBlock('BVH Import...', pup_block): #XXX return - - # print('Attempting import BVH', file) - - if not IMPORT_AS_ARMATURE and not IMPORT_AS_EMPTIES: - raise('No import option selected') + + # print('Attempting import BVH', file) + + if not IMPORT_AS_ARMATURE and not IMPORT_AS_EMPTIES: + raise('No import option selected') #XXX Blender.Window.WaitCursor(1) - # Get the BVH data and act on it. - import time - t1= time.time() - print('\tparsing bvh...', end= "") - bvh_nodes= read_bvh(context, file, IMPORT_SCALE) - print('%.4f' % (time.time()-t1)) - t1= time.time() - print('\timporting to blender...', end="") - if IMPORT_AS_ARMATURE: bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) - if IMPORT_AS_EMPTIES: bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) - - print('Done in %.4f\n' % (time.time()-t1)) + # Get the BVH data and act on it. + import time + t1= time.time() + print('\tparsing bvh...', end= "") + bvh_nodes= read_bvh(context, file, IMPORT_SCALE) + print('%.4f' % (time.time()-t1)) + t1= time.time() + print('\timporting to blender...', end="") + if IMPORT_AS_ARMATURE: bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + if IMPORT_AS_EMPTIES: bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + + print('Done in %.4f\n' % (time.time()-t1)) #XXX Blender.Window.WaitCursor(0) def main(): - Blender.Window.FileSelector(load_bvh_ui, 'Import BVH', '*.bvh') + Blender.Window.FileSelector(load_bvh_ui, 'Import BVH', '*.bvh') from bpy.props import * class BvhImporter(bpy.types.Operator): - '''Load a Wavefront OBJ File.''' - bl_idname = "import_anim.bvh" - bl_label = "Import BVH" - - path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") - - def execute(self, context): - # print("Selected: " + context.active_object.name) - - read_bvh(context, self.properties.path) - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) + '''Load a Wavefront OBJ File.''' + bl_idname = "import_anim.bvh" + bl_label = "Import BVH" + + path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + + def execute(self, context): + # print("Selected: " + context.active_object.name) + + read_bvh(context, self.properties.path) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) bpy.ops.add(BvhImporter) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 57b93d3c683..6255c80b3a3 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -30,7 +30,7 @@ Loader is based on 3ds loader from www.gametutorials.com (Thanks DigiBen). 0.996 by Mario Lapin (mario.lapin@gmail.com) 13/04/200
- Implemented workaround to correct association between name, geometry and materials of imported meshes. - + Without this patch, version 0.995 of this importer would associate to each mesh object the geometry and the materials of the previously parsed mesh object. By so, the name of the first mesh object would be thrown away, and the name of the last mesh object would be @@ -63,13 +63,13 @@ Loader is based on 3ds loader from www.gametutorials.com (Thanks DigiBen). - Mesh objects split by material- many 3ds objects used more then 16 per mesh. - Removed a lot of unneeded variable creation. -0.94 by Campbell Barton
+0.94 by Campbell Barton
- Face import tested to be about overall 16x speedup over 0.93. - Material importing speedup. - Tested with more models. - Support some corrupt models. -0.93 by Campbell Barton
+0.93 by Campbell Barton
- Tested with 400 3ds files from turbosquid and samples. - Tactfully ignore faces that used the same verts twice. - Rollback to 0.83 sloppy un-reorganized code, this broke UV coord loading. @@ -104,7 +104,7 @@ Loader is based on 3ds loader from www.gametutorials.com (Thanks DigiBen). 0.81 Damien McGinnes 2005-01-09 - handle missing images better - + 0.8 Damien McGinnes 2005-01-08 - copies sticky UV coords to face ones - handles images better @@ -114,7 +114,7 @@ Loader is based on 3ds loader from www.gametutorials.com (Thanks DigiBen). # ***** BEGIN GPL LICENSE BLOCK ***** # -# Script copyright (C) Bob Holcomb +# Script copyright (C) Bob Holcomb # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -172,10 +172,10 @@ BOUNDS_3DS = [] #which shold be more useful. def createBlenderTexture(material, name, image): - texture = bpy.data.textures.new(name) - texture.setType('Image') - texture.image = image - material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL) + texture = bpy.data.textures.new(name) + texture.setType('Image') + texture.image = image + material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL) @@ -222,12 +222,12 @@ OBJECT_MESH = int('0x4100',16); # This lets us know that we are readi OBJECT_LAMP = int('0x4600',16); # This lets un know we are reading a light object OBJECT_LAMP_SPOT = int('0x4610',16); # The light is a spotloght. OBJECT_LAMP_OFF = int('0x4620',16); # The light off. -OBJECT_LAMP_ATTENUATE = int('0x4625',16); -OBJECT_LAMP_RAYSHADE = int('0x4627',16); -OBJECT_LAMP_SHADOWED = int('0x4630',16); -OBJECT_LAMP_LOCAL_SHADOW = int('0x4640',16); -OBJECT_LAMP_LOCAL_SHADOW2 = int('0x4641',16); -OBJECT_LAMP_SEE_CONE = int('0x4650',16); +OBJECT_LAMP_ATTENUATE = int('0x4625',16); +OBJECT_LAMP_RAYSHADE = int('0x4627',16); +OBJECT_LAMP_SHADOWED = int('0x4630',16); +OBJECT_LAMP_LOCAL_SHADOW = int('0x4640',16); +OBJECT_LAMP_LOCAL_SHADOW2 = int('0x4641',16); +OBJECT_LAMP_SEE_CONE = int('0x4650',16); OBJECT_LAMP_SPOT_RECTANGULAR = int('0x4651',16); OBJECT_LAMP_SPOT_OVERSHOOT = int('0x4652',16); OBJECT_LAMP_SPOT_PROJECTOR = int('0x4653',16); @@ -260,68 +260,68 @@ scn = None #the chunk class class chunk: - ID = 0 - length = 0 - bytes_read = 0 + ID = 0 + length = 0 + bytes_read = 0 - #we don't read in the bytes_read, we compute that - binary_format=' 3): - print('\tNon-Fatal Error: Version greater than 3, may not load correctly: ', version) - - #is it an object info chunk? - elif (new_chunk.ID == OBJECTINFO): - #print 'elif (new_chunk.ID == OBJECTINFO):' - # print 'found an OBJECTINFO chunk' - process_next_chunk(file, new_chunk, importedObjects, IMAGE_SEARCH) - - #keep track of how much we read in the main chunk - new_chunk.bytes_read += temp_chunk.bytes_read - - #is it an object chunk? - elif (new_chunk.ID == OBJECT): - - if CreateBlenderObject: - putContextMesh(contextMesh_vertls, contextMesh_facels, contextMeshMaterials) - contextMesh_vertls = []; contextMesh_facels = [] - - ## preparando para receber o proximo objeto - contextMeshMaterials = {} # matname:[face_idxs] - contextMeshUV = None - #contextMesh.vertexUV = 1 # Make sticky coords. - # Reset matrix - contextMatrix_rot = None - #contextMatrix_tx = None - - CreateBlenderObject = True - tempName = read_string(file) - contextObName = tempName - new_chunk.bytes_read += len(tempName)+1 - - #is it a material chunk? - elif (new_chunk.ID == MATERIAL): + + for matName, faces in myContextMeshMaterials.items(): + makeMeshMaterialCopy(matName, faces) + + if len(materialFaces) != len(myContextMesh_facels): + # Invert material faces. + makeMeshMaterialCopy(None, set(range(len( myContextMesh_facels ))) - materialFaces) + #raise 'Some UnMaterialed faces', len(contextMesh.faces) + + #a spare chunk + new_chunk = chunk() + temp_chunk = chunk() + + CreateBlenderObject = False + + def read_float_color(temp_chunk): + temp_data = file.read(struct.calcsize('3f')) + temp_chunk.bytes_read += 12 + return [float(col) for col in struct.unpack('<3f', temp_data)] + + def read_byte_color(temp_chunk): + temp_data = file.read(struct.calcsize('3B')) + temp_chunk.bytes_read += 3 + return [float(col)/255 for col in struct.unpack('<3B', temp_data)] # data [0,1,2] == rgb + + def read_texture(new_chunk, temp_chunk, name, mapto): + new_texture = bpy.data.add_texture('Diffuse') + new_texture.type = 'IMAGE' + + img = None + while (new_chunk.bytes_read < new_chunk.length): + #print 'MAT_TEXTURE_MAP..while', new_chunk.bytes_read, new_chunk.length + read_chunk(file, temp_chunk) + + if (temp_chunk.ID == MAT_MAP_FILENAME): + texture_name = read_string(file) + img = TEXTURE_DICT[contextMaterial.name] = load_image(texture_name, dirname) + new_chunk.bytes_read += (len(texture_name)+1) #plus one for the null character that gets removed + + else: + skip_to_end(file, temp_chunk) + + new_chunk.bytes_read += temp_chunk.bytes_read + + # add the map to the material in the right channel + if img: + add_texture_to_material(img, new_texture, contextMaterial, mapto) + + dirname = os.path.dirname(FILENAME) + + #loop through all the data for this chunk (previous chunk) and see what it is + while (previous_chunk.bytes_read < previous_chunk.length): + #print '\t', previous_chunk.bytes_read, 'keep going' + #read the next chunk + #print 'reading a chunk' + read_chunk(file, new_chunk) + + #is it a Version chunk? + if (new_chunk.ID == VERSION): + #print 'if (new_chunk.ID == VERSION):' + #print 'found a VERSION chunk' + #read in the version of the file + #it's an unsigned short (H) + temp_data = file.read(struct.calcsize('I')) + version = struct.unpack(' 3): + print('\tNon-Fatal Error: Version greater than 3, may not load correctly: ', version) + + #is it an object info chunk? + elif (new_chunk.ID == OBJECTINFO): + #print 'elif (new_chunk.ID == OBJECTINFO):' + # print 'found an OBJECTINFO chunk' + process_next_chunk(file, new_chunk, importedObjects, IMAGE_SEARCH) + + #keep track of how much we read in the main chunk + new_chunk.bytes_read += temp_chunk.bytes_read + + #is it an object chunk? + elif (new_chunk.ID == OBJECT): + + if CreateBlenderObject: + putContextMesh(contextMesh_vertls, contextMesh_facels, contextMeshMaterials) + contextMesh_vertls = []; contextMesh_facels = [] + + ## preparando para receber o proximo objeto + contextMeshMaterials = {} # matname:[face_idxs] + contextMeshUV = None + #contextMesh.vertexUV = 1 # Make sticky coords. + # Reset matrix + contextMatrix_rot = None + #contextMatrix_tx = None + + CreateBlenderObject = True + tempName = read_string(file) + contextObName = tempName + new_chunk.bytes_read += len(tempName)+1 + + #is it a material chunk? + elif (new_chunk.ID == MATERIAL): # print("read material") - #print 'elif (new_chunk.ID == MATERIAL):' - contextMaterial = bpy.data.add_material('Material') + #print 'elif (new_chunk.ID == MATERIAL):' + contextMaterial = bpy.data.add_material('Material') # contextMaterial = bpy.data.materials.new('Material') - - elif (new_chunk.ID == MAT_NAME): - #print 'elif (new_chunk.ID == MAT_NAME):' - material_name = read_string(file) + + elif (new_chunk.ID == MAT_NAME): + #print 'elif (new_chunk.ID == MAT_NAME):' + material_name = read_string(file) # print("material name", material_name) - - #plus one for the null character that ended the string - new_chunk.bytes_read += len(material_name)+1 - - contextMaterial.name = material_name.rstrip() # remove trailing whitespace - MATDICT[material_name]= (contextMaterial.name, contextMaterial) - - elif (new_chunk.ID == MAT_AMBIENT): - #print 'elif (new_chunk.ID == MAT_AMBIENT):' - read_chunk(file, temp_chunk) - if (temp_chunk.ID == MAT_FLOAT_COLOR): - contextMaterial.mirror_color = read_float_color(temp_chunk) + + #plus one for the null character that ended the string + new_chunk.bytes_read += len(material_name)+1 + + contextMaterial.name = material_name.rstrip() # remove trailing whitespace + MATDICT[material_name]= (contextMaterial.name, contextMaterial) + + elif (new_chunk.ID == MAT_AMBIENT): + #print 'elif (new_chunk.ID == MAT_AMBIENT):' + read_chunk(file, temp_chunk) + if (temp_chunk.ID == MAT_FLOAT_COLOR): + contextMaterial.mirror_color = read_float_color(temp_chunk) # temp_data = file.read(struct.calcsize('3f')) # temp_chunk.bytes_read += 12 # contextMaterial.mirCol = [float(col) for col in struct.unpack('<3f', temp_data)] - elif (temp_chunk.ID == MAT_24BIT_COLOR): - contextMaterial.mirror_color = read_byte_color(temp_chunk) + elif (temp_chunk.ID == MAT_24BIT_COLOR): + contextMaterial.mirror_color = read_byte_color(temp_chunk) # temp_data = file.read(struct.calcsize('3B')) # temp_chunk.bytes_read += 3 # contextMaterial.mirCol = [float(col)/255 for col in struct.unpack('<3B', temp_data)] # data [0,1,2] == rgb - else: - skip_to_end(file, temp_chunk) - new_chunk.bytes_read += temp_chunk.bytes_read - - elif (new_chunk.ID == MAT_DIFFUSE): - #print 'elif (new_chunk.ID == MAT_DIFFUSE):' - read_chunk(file, temp_chunk) - if (temp_chunk.ID == MAT_FLOAT_COLOR): - contextMaterial.diffuse_color = read_float_color(temp_chunk) + else: + skip_to_end(file, temp_chunk) + new_chunk.bytes_read += temp_chunk.bytes_read + + elif (new_chunk.ID == MAT_DIFFUSE): + #print 'elif (new_chunk.ID == MAT_DIFFUSE):' + read_chunk(file, temp_chunk) + if (temp_chunk.ID == MAT_FLOAT_COLOR): + contextMaterial.diffuse_color = read_float_color(temp_chunk) # temp_data = file.read(struct.calcsize('3f')) # temp_chunk.bytes_read += 12 # contextMaterial.rgbCol = [float(col) for col in struct.unpack('<3f', temp_data)] - elif (temp_chunk.ID == MAT_24BIT_COLOR): - contextMaterial.diffuse_color = read_byte_color(temp_chunk) + elif (temp_chunk.ID == MAT_24BIT_COLOR): + contextMaterial.diffuse_color = read_byte_color(temp_chunk) # temp_data = file.read(struct.calcsize('3B')) # temp_chunk.bytes_read += 3 # contextMaterial.rgbCol = [float(col)/255 for col in struct.unpack('<3B', temp_data)] # data [0,1,2] == rgb - else: - skip_to_end(file, temp_chunk) + else: + skip_to_end(file, temp_chunk) # print("read material diffuse color", contextMaterial.diffuse_color) - new_chunk.bytes_read += temp_chunk.bytes_read + new_chunk.bytes_read += temp_chunk.bytes_read - elif (new_chunk.ID == MAT_SPECULAR): - #print 'elif (new_chunk.ID == MAT_SPECULAR):' - read_chunk(file, temp_chunk) - if (temp_chunk.ID == MAT_FLOAT_COLOR): - contextMaterial.specular_color = read_float_color(temp_chunk) + elif (new_chunk.ID == MAT_SPECULAR): + #print 'elif (new_chunk.ID == MAT_SPECULAR):' + read_chunk(file, temp_chunk) + if (temp_chunk.ID == MAT_FLOAT_COLOR): + contextMaterial.specular_color = read_float_color(temp_chunk) # temp_data = file.read(struct.calcsize('3f')) # temp_chunk.bytes_read += 12 # contextMaterial.mirCol = [float(col) for col in struct.unpack('<3f', temp_data)] - elif (temp_chunk.ID == MAT_24BIT_COLOR): - contextMaterial.specular_color = read_byte_color(temp_chunk) + elif (temp_chunk.ID == MAT_24BIT_COLOR): + contextMaterial.specular_color = read_byte_color(temp_chunk) # temp_data = file.read(struct.calcsize('3B')) # temp_chunk.bytes_read += 3 # contextMaterial.mirCol = [float(col)/255 for col in struct.unpack('<3B', temp_data)] # data [0,1,2] == rgb - else: - skip_to_end(file, temp_chunk) - new_chunk.bytes_read += temp_chunk.bytes_read - - elif (new_chunk.ID == MAT_TEXTURE_MAP): - read_texture(new_chunk, temp_chunk, "Diffuse", "COLOR") + else: + skip_to_end(file, temp_chunk) + new_chunk.bytes_read += temp_chunk.bytes_read + + elif (new_chunk.ID == MAT_TEXTURE_MAP): + read_texture(new_chunk, temp_chunk, "Diffuse", "COLOR") # #print 'elif (new_chunk.ID==MAT_TEXTURE_MAP):' # new_texture= bpy.data.textures.new('Diffuse') # new_texture.setType('Image') @@ -663,31 +663,31 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): # while (new_chunk.bytes_read BOUNDS_3DS[i + 3]: - BOUNDS_3DS[i + 3]= v[i] # min - - # Get the max axis x/y/z - max_axis = max(BOUNDS_3DS[3]-BOUNDS_3DS[0], BOUNDS_3DS[4]-BOUNDS_3DS[1], BOUNDS_3DS[5]-BOUNDS_3DS[2]) - # print max_axis - if max_axis < 1 << 30: # Should never be false but just make sure. - - # Get a new scale factor if set as an option - SCALE = 1.0 - while (max_axis * SCALE) > IMPORT_CONSTRAIN_BOUNDS: - SCALE/=10 - - # SCALE Matrix - SCALE_MAT = Mathutils.Matrix([SCALE,0,0,0],[0,SCALE,0,0],[0,0,SCALE,0],[0,0,0,1]) + ob.makeDisplayList() # Why dosnt this update the bounds? + for v in ob.getBoundBox(): + for i in (0,1,2): + if v[i] < BOUNDS_3DS[i]: + BOUNDS_3DS[i]= v[i] # min + + if v[i] > BOUNDS_3DS[i + 3]: + BOUNDS_3DS[i + 3]= v[i] # min + + # Get the max axis x/y/z + max_axis = max(BOUNDS_3DS[3]-BOUNDS_3DS[0], BOUNDS_3DS[4]-BOUNDS_3DS[1], BOUNDS_3DS[5]-BOUNDS_3DS[2]) + # print max_axis + if max_axis < 1 << 30: # Should never be false but just make sure. + + # Get a new scale factor if set as an option + SCALE = 1.0 + while (max_axis * SCALE) > IMPORT_CONSTRAIN_BOUNDS: + SCALE/=10 + + # SCALE Matrix + SCALE_MAT = Mathutils.Matrix([SCALE,0,0,0],[0,SCALE,0,0],[0,0,SCALE,0],[0,0,0,1]) # SCALE_MAT = Blender.Mathutils.Matrix([SCALE,0,0,0],[0,SCALE,0,0],[0,0,SCALE,0],[0,0,0,1]) - - for ob in importedObjects: - ob.setMatrix(ob.matrixWorld * SCALE_MAT) - - # Done constraining to bounds. - - # Select all new objects. - print('finished importing: "%s" in %.4f sec.' % (filename, (time.clock()-time1))) + + for ob in importedObjects: + ob.setMatrix(ob.matrixWorld * SCALE_MAT) + + # Done constraining to bounds. + + # Select all new objects. + print('finished importing: "%s" in %.4f sec.' % (filename, (time.clock()-time1))) # print('finished importing: "%s" in %.4f sec.' % (filename, (Blender.sys.time()-time1))) - file.close() + file.close() # Blender.Window.WaitCursor(0) - + DEBUG = False # if __name__=='__main__' and not DEBUG: # if calcsize == None: -# Blender.Draw.PupMenu('Error%t|a full python installation not found') +# Blender.Draw.PupMenu('Error%t|a full python installation not found') # else: # Blender.Window.FileSelector(load_3ds, 'Import 3DS', '*.3ds') @@ -1104,65 +1104,65 @@ DEBUG = False ''' else: - import os - # DEBUG ONLY - TIME = Blender.sys.time() - import os - print 'Searching for files' - os.system('find /metavr/ -iname "*.3ds" > /tmp/temp3ds_list') - # os.system('find /storage/ -iname "*.3ds" > /tmp/temp3ds_list') - print '...Done' - file = open('/tmp/temp3ds_list', 'r') - lines = file.readlines() - file.close() - # sort by filesize for faster testing - lines_size = [(os.path.getsize(f[:-1]), f[:-1]) for f in lines] - lines_size.sort() - lines = [f[1] for f in lines_size] - - - def between(v,a,b): - if v <= max(a,b) and v >= min(a,b): - return True - return False - - for i, _3ds in enumerate(lines): - if between(i, 650,800): - #_3ds= _3ds[:-1] - print 'Importing', _3ds, '\nNUMBER', i, 'of', len(lines) - _3ds_file= _3ds.split('/')[-1].split('\\')[-1] - newScn = Blender.Scene.New(_3ds_file) - newScn.makeCurrent() - load_3ds(_3ds, False) - - print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME) + import os + # DEBUG ONLY + TIME = Blender.sys.time() + import os + print 'Searching for files' + os.system('find /metavr/ -iname "*.3ds" > /tmp/temp3ds_list') + # os.system('find /storage/ -iname "*.3ds" > /tmp/temp3ds_list') + print '...Done' + file = open('/tmp/temp3ds_list', 'r') + lines = file.readlines() + file.close() + # sort by filesize for faster testing + lines_size = [(os.path.getsize(f[:-1]), f[:-1]) for f in lines] + lines_size.sort() + lines = [f[1] for f in lines_size] + + + def between(v,a,b): + if v <= max(a,b) and v >= min(a,b): + return True + return False + + for i, _3ds in enumerate(lines): + if between(i, 650,800): + #_3ds= _3ds[:-1] + print 'Importing', _3ds, '\nNUMBER', i, 'of', len(lines) + _3ds_file= _3ds.split('/')[-1].split('\\')[-1] + newScn = Blender.Scene.New(_3ds_file) + newScn.makeCurrent() + load_3ds(_3ds, False) + + print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME) ''' from bpy.props import * class IMPORT_OT_autodesk_3ds(bpy.types.Operator): - '''Import from 3DS file format (.3ds)''' - bl_idname = "import_scene.autodesk_3ds" - bl_label = 'Import 3DS' - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= ""), + '''Import from 3DS file format (.3ds)''' + bl_idname = "import_scene.autodesk_3ds" + bl_label = 'Import 3DS' + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= ""), # size_constraint = FloatProperty(name="Size Constraint", description="Scale the model by 10 until it reacehs the size constraint. Zero Disables.", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=10.0), # search_images = BoolProperty(name="Image Search", description="Search subdirectories for any assosiated images (Warning, may be slow)", default=True), # apply_matrix = BoolProperty(name="Transform Fix", description="Workaround for object transformations importing incorrectly", default=False), - - def execute(self, context): - load_3ds(self.properties.path, context, 0.0, False, False) - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) + + def execute(self, context): + load_3ds(self.properties.path, context, 0.0, False, False) + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) bpy.ops.add(IMPORT_OT_autodesk_3ds) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index febd1174a06..a94e0f5e22d 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -4,12 +4,12 @@ # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -65,773 +65,773 @@ import Geometry # Generic path functions def stripFile(path): - '''Return directory, where the file is''' - lastSlash= max(path.rfind('\\'), path.rfind('/')) - if lastSlash != -1: - path= path[:lastSlash] - return '%s%s' % (path, os.sep) + '''Return directory, where the file is''' + lastSlash= max(path.rfind('\\'), path.rfind('/')) + if lastSlash != -1: + path= path[:lastSlash] + return '%s%s' % (path, os.sep) # return '%s%s' % (path, sys.sep) def stripPath(path): - '''Strips the slashes from the back of a string''' - return path.split('/')[-1].split('\\')[-1] + '''Strips the slashes from the back of a string''' + return path.split('/')[-1].split('\\')[-1] def stripExt(name): # name is a string - '''Strips the prefix off the name before writing''' - index= name.rfind('.') - if index != -1: - return name[ : index ] - else: - return name + '''Strips the prefix off the name before writing''' + index= name.rfind('.') + if index != -1: + return name[ : index ] + else: + return name # end path funcs def unpack_list(list_of_tuples): - l = [] - for t in list_of_tuples: - l.extend(t) - return l + l = [] + for t in list_of_tuples: + l.extend(t) + return l # same as above except that it adds 0 for triangle faces def unpack_face_list(list_of_tuples): - l = [] - for t in list_of_tuples: - face = [i for i in t] + l = [] + for t in list_of_tuples: + face = [i for i in t] + + if len(face) != 3 and len(face) != 4: + raise RuntimeError("{0} vertices in face.".format(len(face))) - if len(face) != 3 and len(face) != 4: - raise RuntimeError("{0} vertices in face.".format(len(face))) - - # rotate indices if the 4th is 0 - if len(face) == 4 and face[3] == 0: - face = [face[3], face[0], face[1], face[2]] + # rotate indices if the 4th is 0 + if len(face) == 4 and face[3] == 0: + face = [face[3], face[0], face[1], face[2]] - if len(face) == 3: - face.append(0) - - l.extend(face) + if len(face) == 3: + face.append(0) - return l + l.extend(face) + + return l def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS= True): - ''' - Takes a polyline of indices (fgon) - and returns a list of face indicie lists. - Designed to be used for importers that need indices for an fgon to create from existing verts. - - from_data: either a mesh, or a list/tuple of vectors. - indices: a list of indicies to use this list is the ordered closed polyline to fill, and can be a subset of the data given. - PREF_FIX_LOOPS: If this is enabled polylines that use loops to make multiple polylines are delt with correctly. - ''' - - if not set: # Need sets for this, otherwise do a normal fill. - PREF_FIX_LOOPS= False - - Vector= Mathutils.Vector - if not indices: - return [] - - # return [] - def rvec(co): return round(co.x, 6), round(co.y, 6), round(co.z, 6) - def mlen(co): return abs(co[0])+abs(co[1])+abs(co[2]) # manhatten length of a vector, faster then length - - def vert_treplet(v, i): - return v, rvec(v), i, mlen(v) - - def ed_key_mlen(v1, v2): - if v1[3] > v2[3]: - return v2[1], v1[1] - else: - return v1[1], v2[1] - - - if not PREF_FIX_LOOPS: - ''' - Normal single concave loop filling - ''' - if type(from_data) in (tuple, list): - verts= [Vector(from_data[i]) for ii, i in enumerate(indices)] - else: - verts= [from_data.verts[i].co for ii, i in enumerate(indices)] - - for i in range(len(verts)-1, 0, -1): # same as reversed(xrange(1, len(verts))): - if verts[i][1]==verts[i-1][0]: - verts.pop(i-1) - - fill= Geometry.PolyFill([verts]) - - else: - ''' - Seperate this loop into multiple loops be finding edges that are used twice - This is used by lightwave LWO files a lot - ''' - - if type(from_data) in (tuple, list): - verts= [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)] - else: - verts= [vert_treplet(from_data.verts[i].co, ii) for ii, i in enumerate(indices)] - - edges= [(i, i-1) for i in range(len(verts))] - if edges: - edges[0]= (0,len(verts)-1) - - if not verts: - return [] - - - edges_used= set() - edges_doubles= set() - # We need to check if any edges are used twice location based. - for ed in edges: - edkey= ed_key_mlen(verts[ed[0]], verts[ed[1]]) - if edkey in edges_used: - edges_doubles.add(edkey) - else: - edges_used.add(edkey) - - # Store a list of unconnected loop segments split by double edges. - # will join later - loop_segments= [] - - v_prev= verts[0] - context_loop= [v_prev] - loop_segments= [context_loop] - - for v in verts: - if v!=v_prev: - # Are we crossing an edge we removed? - if ed_key_mlen(v, v_prev) in edges_doubles: - context_loop= [v] - loop_segments.append(context_loop) - else: - if context_loop and context_loop[-1][1]==v[1]: - #raise "as" - pass - else: - context_loop.append(v) - - v_prev= v - # Now join loop segments - - def join_seg(s1,s2): - if s2[-1][1]==s1[0][1]: # - s1,s2= s2,s1 - elif s1[-1][1]==s2[0][1]: - pass - else: - return False - - # If were stuill here s1 and s2 are 2 segments in the same polyline - s1.pop() # remove the last vert from s1 - s1.extend(s2) # add segment 2 to segment 1 - - if s1[0][1]==s1[-1][1]: # remove endpoints double - s1.pop() - - s2[:]= [] # Empty this segment s2 so we dont use it again. - return True - - joining_segments= True - while joining_segments: - joining_segments= False - segcount= len(loop_segments) - - for j in range(segcount-1, -1, -1): #reversed(range(segcount)): - seg_j= loop_segments[j] - if seg_j: - for k in range(j-1, -1, -1): # reversed(range(j)): - if not seg_j: - break - seg_k= loop_segments[k] - - if seg_k and join_seg(seg_j, seg_k): - joining_segments= True - - loop_list= loop_segments - - for verts in loop_list: - while verts and verts[0][1]==verts[-1][1]: - verts.pop() - - loop_list= [verts for verts in loop_list if len(verts)>2] - # DONE DEALING WITH LOOP FIXING - - - # vert mapping - vert_map= [None]*len(indices) - ii=0 - for verts in loop_list: - if len(verts)>2: - for i, vert in enumerate(verts): - vert_map[i+ii]= vert[2] - ii+=len(verts) - - fill= Geometry.PolyFill([ [v[0] for v in loop] for loop in loop_list ]) - #draw_loops(loop_list) - #raise 'done loop' - # map to original indicies - fill= [[vert_map[i] for i in reversed(f)] for f in fill] - - - if not fill: - print('Warning Cannot scanfill, fallback on a triangle fan.') - fill= [ [0, i-1, i] for i in range(2, len(indices)) ] - else: - # Use real scanfill. - # See if its flipped the wrong way. - flip= None - for fi in fill: - if flip != None: - break - for i, vi in enumerate(fi): - if vi==0 and fi[i-1]==1: - flip= False - break - elif vi==1 and fi[i-1]==0: - flip= True - break - - if not flip: - for i, fi in enumerate(fill): - fill[i]= tuple([ii for ii in reversed(fi)]) - - return fill + ''' + Takes a polyline of indices (fgon) + and returns a list of face indicie lists. + Designed to be used for importers that need indices for an fgon to create from existing verts. + + from_data: either a mesh, or a list/tuple of vectors. + indices: a list of indicies to use this list is the ordered closed polyline to fill, and can be a subset of the data given. + PREF_FIX_LOOPS: If this is enabled polylines that use loops to make multiple polylines are delt with correctly. + ''' + + if not set: # Need sets for this, otherwise do a normal fill. + PREF_FIX_LOOPS= False + + Vector= Mathutils.Vector + if not indices: + return [] + + # return [] + def rvec(co): return round(co.x, 6), round(co.y, 6), round(co.z, 6) + def mlen(co): return abs(co[0])+abs(co[1])+abs(co[2]) # manhatten length of a vector, faster then length + + def vert_treplet(v, i): + return v, rvec(v), i, mlen(v) + + def ed_key_mlen(v1, v2): + if v1[3] > v2[3]: + return v2[1], v1[1] + else: + return v1[1], v2[1] + + + if not PREF_FIX_LOOPS: + ''' + Normal single concave loop filling + ''' + if type(from_data) in (tuple, list): + verts= [Vector(from_data[i]) for ii, i in enumerate(indices)] + else: + verts= [from_data.verts[i].co for ii, i in enumerate(indices)] + + for i in range(len(verts)-1, 0, -1): # same as reversed(xrange(1, len(verts))): + if verts[i][1]==verts[i-1][0]: + verts.pop(i-1) + + fill= Geometry.PolyFill([verts]) + + else: + ''' + Seperate this loop into multiple loops be finding edges that are used twice + This is used by lightwave LWO files a lot + ''' + + if type(from_data) in (tuple, list): + verts= [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)] + else: + verts= [vert_treplet(from_data.verts[i].co, ii) for ii, i in enumerate(indices)] + + edges= [(i, i-1) for i in range(len(verts))] + if edges: + edges[0]= (0,len(verts)-1) + + if not verts: + return [] + + + edges_used= set() + edges_doubles= set() + # We need to check if any edges are used twice location based. + for ed in edges: + edkey= ed_key_mlen(verts[ed[0]], verts[ed[1]]) + if edkey in edges_used: + edges_doubles.add(edkey) + else: + edges_used.add(edkey) + + # Store a list of unconnected loop segments split by double edges. + # will join later + loop_segments= [] + + v_prev= verts[0] + context_loop= [v_prev] + loop_segments= [context_loop] + + for v in verts: + if v!=v_prev: + # Are we crossing an edge we removed? + if ed_key_mlen(v, v_prev) in edges_doubles: + context_loop= [v] + loop_segments.append(context_loop) + else: + if context_loop and context_loop[-1][1]==v[1]: + #raise "as" + pass + else: + context_loop.append(v) + + v_prev= v + # Now join loop segments + + def join_seg(s1,s2): + if s2[-1][1]==s1[0][1]: # + s1,s2= s2,s1 + elif s1[-1][1]==s2[0][1]: + pass + else: + return False + + # If were stuill here s1 and s2 are 2 segments in the same polyline + s1.pop() # remove the last vert from s1 + s1.extend(s2) # add segment 2 to segment 1 + + if s1[0][1]==s1[-1][1]: # remove endpoints double + s1.pop() + + s2[:]= [] # Empty this segment s2 so we dont use it again. + return True + + joining_segments= True + while joining_segments: + joining_segments= False + segcount= len(loop_segments) + + for j in range(segcount-1, -1, -1): #reversed(range(segcount)): + seg_j= loop_segments[j] + if seg_j: + for k in range(j-1, -1, -1): # reversed(range(j)): + if not seg_j: + break + seg_k= loop_segments[k] + + if seg_k and join_seg(seg_j, seg_k): + joining_segments= True + + loop_list= loop_segments + + for verts in loop_list: + while verts and verts[0][1]==verts[-1][1]: + verts.pop() + + loop_list= [verts for verts in loop_list if len(verts)>2] + # DONE DEALING WITH LOOP FIXING + + + # vert mapping + vert_map= [None]*len(indices) + ii=0 + for verts in loop_list: + if len(verts)>2: + for i, vert in enumerate(verts): + vert_map[i+ii]= vert[2] + ii+=len(verts) + + fill= Geometry.PolyFill([ [v[0] for v in loop] for loop in loop_list ]) + #draw_loops(loop_list) + #raise 'done loop' + # map to original indicies + fill= [[vert_map[i] for i in reversed(f)] for f in fill] + + + if not fill: + print('Warning Cannot scanfill, fallback on a triangle fan.') + fill= [ [0, i-1, i] for i in range(2, len(indices)) ] + else: + # Use real scanfill. + # See if its flipped the wrong way. + flip= None + for fi in fill: + if flip != None: + break + for i, vi in enumerate(fi): + if vi==0 and fi[i-1]==1: + flip= False + break + elif vi==1 and fi[i-1]==0: + flip= True + break + + if not flip: + for i, fi in enumerate(fill): + fill[i]= tuple([ii for ii in reversed(fi)]) + + return fill def line_value(line_split): - ''' - Returns 1 string represneting the value for this line - None will be returned if theres only 1 word - ''' - length= len(line_split) - if length == 1: - return None - - elif length == 2: - return line_split[1] - - elif length > 2: - return ' '.join( line_split[1:] ) + ''' + Returns 1 string represneting the value for this line + None will be returned if theres only 1 word + ''' + length= len(line_split) + if length == 1: + return None + + elif length == 2: + return line_split[1] + + elif length > 2: + return ' '.join( line_split[1:] ) # limited replacement for BPyImage.comprehensiveImageLoad def load_image(imagepath, dirname): - if os.path.exists(imagepath): - return bpy.data.add_image(imagepath) + if os.path.exists(imagepath): + return bpy.data.add_image(imagepath) - variants = [os.path.join(dirname, imagepath), os.path.join(dirname, os.path.basename(imagepath))] + variants = [os.path.join(dirname, imagepath), os.path.join(dirname, os.path.basename(imagepath))] - for path in variants: - if os.path.exists(path): - return bpy.data.add_image(path) - else: - print(path, "doesn't exist") + for path in variants: + if os.path.exists(path): + return bpy.data.add_image(path) + else: + print(path, "doesn't exist") - # TODO comprehensiveImageLoad also searched in bpy.config.textureDir - return None + # TODO comprehensiveImageLoad also searched in bpy.config.textureDir + return None def obj_image_load(imagepath, DIR, IMAGE_SEARCH): - if '_' in imagepath: - image= load_image(imagepath.replace('_', ' '), DIR) - if image: return image + if '_' in imagepath: + image= load_image(imagepath.replace('_', ' '), DIR) + if image: return image - return load_image(imagepath, DIR) + return load_image(imagepath, DIR) # def obj_image_load(imagepath, DIR, IMAGE_SEARCH): # ''' # Mainly uses comprehensiveImageLoad # but tries to replace '_' with ' ' for Max's exporter replaces spaces with underscores. # ''' - + # if '_' in imagepath: # image= BPyImage.comprehensiveImageLoad(imagepath, DIR, PLACE_HOLDER= False, RECURSIVE= IMAGE_SEARCH) # if image: return image # # Did the exporter rename the image? # image= BPyImage.comprehensiveImageLoad(imagepath.replace('_', ' '), DIR, PLACE_HOLDER= False, RECURSIVE= IMAGE_SEARCH) # if image: return image - + # # Return an image, placeholder if it dosnt exist # image= BPyImage.comprehensiveImageLoad(imagepath, DIR, PLACE_HOLDER= True, RECURSIVE= IMAGE_SEARCH) # return image - + def create_materials(filepath, material_libs, unique_materials, unique_material_images, IMAGE_SEARCH): - ''' - Create all the used materials in this obj, - assign colors and images to the materials from all referenced material libs - ''' - DIR= stripFile(filepath) - - #==================================================================================# - # This function sets textures defined in .mtl file # - #==================================================================================# - def load_material_image(blender_material, context_material_name, imagepath, type): - - texture= bpy.data.add_texture(type) - texture.type= 'IMAGE' + ''' + Create all the used materials in this obj, + assign colors and images to the materials from all referenced material libs + ''' + DIR= stripFile(filepath) + + #==================================================================================# + # This function sets textures defined in .mtl file # + #==================================================================================# + def load_material_image(blender_material, context_material_name, imagepath, type): + + texture= bpy.data.add_texture(type) + texture.type= 'IMAGE' # texture= bpy.data.textures.new(type) # texture.setType('Image') - - # Absolute path - c:\.. etc would work here - image= obj_image_load(imagepath, DIR, IMAGE_SEARCH) - has_data = image.has_data if image else False - - if image: - texture.image = image - - # Adds textures for materials (rendering) - if type == 'Kd': - if has_data and image.depth == 32: - # Image has alpha - - # XXX bitmask won't work? - blender_material.add_texture(texture, "UV", ("COLOR", "ALPHA")) - texture.mipmap = True - texture.interpolation = True - texture.use_alpha = True - blender_material.z_transparency = True - blender_material.alpha = 0.0 + + # Absolute path - c:\.. etc would work here + image= obj_image_load(imagepath, DIR, IMAGE_SEARCH) + has_data = image.has_data if image else False + + if image: + texture.image = image + + # Adds textures for materials (rendering) + if type == 'Kd': + if has_data and image.depth == 32: + # Image has alpha + + # XXX bitmask won't work? + blender_material.add_texture(texture, "UV", ("COLOR", "ALPHA")) + texture.mipmap = True + texture.interpolation = True + texture.use_alpha = True + blender_material.z_transparency = True + blender_material.alpha = 0.0 # blender_material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL | Texture.MapTo.ALPHA) # texture.setImageFlags('MipMap', 'InterPol', 'UseAlpha') # blender_material.mode |= Material.Modes.ZTRANSP # blender_material.alpha = 0.0 - else: - blender_material.add_texture(texture, "UV", "COLOR") + else: + blender_material.add_texture(texture, "UV", "COLOR") # blender_material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL) - - # adds textures to faces (Textured/Alt-Z mode) - # Only apply the diffuse texture to the face if the image has not been set with the inline usemat func. - unique_material_images[context_material_name]= image, has_data # set the texface image - - elif type == 'Ka': - blender_material.add_texture(texture, "UV", "AMBIENT") + + # adds textures to faces (Textured/Alt-Z mode) + # Only apply the diffuse texture to the face if the image has not been set with the inline usemat func. + unique_material_images[context_material_name]= image, has_data # set the texface image + + elif type == 'Ka': + blender_material.add_texture(texture, "UV", "AMBIENT") # blender_material.setTexture(1, texture, Texture.TexCo.UV, Texture.MapTo.CMIR) # TODO- Add AMB to BPY API - - elif type == 'Ks': - blender_material.add_texture(texture, "UV", "SPECULARITY") + + elif type == 'Ks': + blender_material.add_texture(texture, "UV", "SPECULARITY") # blender_material.setTexture(2, texture, Texture.TexCo.UV, Texture.MapTo.SPEC) - - elif type == 'Bump': - blender_material.add_texture(texture, "UV", "NORMAL") -# blender_material.setTexture(3, texture, Texture.TexCo.UV, Texture.MapTo.NOR) - elif type == 'D': - blender_material.add_texture(texture, "UV", "ALPHA") - blender_material.z_transparency = True - blender_material.alpha = 0.0 -# blender_material.setTexture(4, texture, Texture.TexCo.UV, Texture.MapTo.ALPHA) + + elif type == 'Bump': + blender_material.add_texture(texture, "UV", "NORMAL") +# blender_material.setTexture(3, texture, Texture.TexCo.UV, Texture.MapTo.NOR) + elif type == 'D': + blender_material.add_texture(texture, "UV", "ALPHA") + blender_material.z_transparency = True + blender_material.alpha = 0.0 +# blender_material.setTexture(4, texture, Texture.TexCo.UV, Texture.MapTo.ALPHA) # blender_material.mode |= Material.Modes.ZTRANSP # blender_material.alpha = 0.0 - # Todo, unset deffuse material alpha if it has an alpha channel - - elif type == 'refl': - blender_material.add_texture(texture, "UV", "REFLECTION") + # Todo, unset deffuse material alpha if it has an alpha channel + + elif type == 'refl': + blender_material.add_texture(texture, "UV", "REFLECTION") # blender_material.setTexture(5, texture, Texture.TexCo.UV, Texture.MapTo.REF) - - - # Add an MTL with the same name as the obj if no MTLs are spesified. - temp_mtl= stripExt(stripPath(filepath))+ '.mtl' - if os.path.exists(DIR + temp_mtl) and temp_mtl not in material_libs: + + # Add an MTL with the same name as the obj if no MTLs are spesified. + temp_mtl= stripExt(stripPath(filepath))+ '.mtl' + + if os.path.exists(DIR + temp_mtl) and temp_mtl not in material_libs: # if sys.exists(DIR + temp_mtl) and temp_mtl not in material_libs: - material_libs.append( temp_mtl ) - del temp_mtl - - #Create new materials - for name in unique_materials: # .keys() - if name != None: - unique_materials[name]= bpy.data.add_material(name) + material_libs.append( temp_mtl ) + del temp_mtl + + #Create new materials + for name in unique_materials: # .keys() + if name != None: + unique_materials[name]= bpy.data.add_material(name) # unique_materials[name]= bpy.data.materials.new(name) - unique_material_images[name]= None, False # assign None to all material images to start with, add to later. - - unique_materials[None]= None - unique_material_images[None]= None, False - - for libname in material_libs: - mtlpath= DIR + libname - if not os.path.exists(mtlpath): + unique_material_images[name]= None, False # assign None to all material images to start with, add to later. + + unique_materials[None]= None + unique_material_images[None]= None, False + + for libname in material_libs: + mtlpath= DIR + libname + if not os.path.exists(mtlpath): # if not sys.exists(mtlpath): - #print '\tError Missing MTL: "%s"' % mtlpath - pass - else: - #print '\t\tloading mtl: "%s"' % mtlpath - context_material= None - mtl= open(mtlpath, 'rU') - for line in mtl: #.xreadlines(): - if line.startswith('newmtl'): - context_material_name= line_value(line.split()) - if context_material_name in unique_materials: - context_material = unique_materials[ context_material_name ] - else: - context_material = None - - elif context_material: - # we need to make a material to assign properties to it. - line_split= line.split() - line_lower= line.lower().lstrip() - if line_lower.startswith('ka'): - context_material.mirror_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) + #print '\tError Missing MTL: "%s"' % mtlpath + pass + else: + #print '\t\tloading mtl: "%s"' % mtlpath + context_material= None + mtl= open(mtlpath, 'rU') + for line in mtl: #.xreadlines(): + if line.startswith('newmtl'): + context_material_name= line_value(line.split()) + if context_material_name in unique_materials: + context_material = unique_materials[ context_material_name ] + else: + context_material = None + + elif context_material: + # we need to make a material to assign properties to it. + line_split= line.split() + line_lower= line.lower().lstrip() + if line_lower.startswith('ka'): + context_material.mirror_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) # context_material.setMirCol((float(line_split[1]), float(line_split[2]), float(line_split[3]))) - elif line_lower.startswith('kd'): - context_material.diffuse_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) + elif line_lower.startswith('kd'): + context_material.diffuse_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) # context_material.setRGBCol((float(line_split[1]), float(line_split[2]), float(line_split[3]))) - elif line_lower.startswith('ks'): - context_material.specular_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) + elif line_lower.startswith('ks'): + context_material.specular_color = (float(line_split[1]), float(line_split[2]), float(line_split[3])) # context_material.setSpecCol((float(line_split[1]), float(line_split[2]), float(line_split[3]))) - elif line_lower.startswith('ns'): - context_material.specular_hardness = int((float(line_split[1])*0.51)) + elif line_lower.startswith('ns'): + context_material.specular_hardness = int((float(line_split[1])*0.51)) # context_material.setHardness( int((float(line_split[1])*0.51)) ) - elif line_lower.startswith('ni'): # Refraction index - context_material.ior = max(1, min(float(line_split[1]), 3)) + elif line_lower.startswith('ni'): # Refraction index + context_material.ior = max(1, min(float(line_split[1]), 3)) # context_material.setIOR( max(1, min(float(line_split[1]), 3))) # Between 1 and 3 - elif line_lower.startswith('d') or line_lower.startswith('tr'): - context_material.alpha = float(line_split[1]) + elif line_lower.startswith('d') or line_lower.startswith('tr'): + context_material.alpha = float(line_split[1]) # context_material.setAlpha(float(line_split[1])) - elif line_lower.startswith('map_ka'): - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'Ka') - elif line_lower.startswith('map_ks'): - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'Ks') - elif line_lower.startswith('map_kd'): - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'Kd') - elif line_lower.startswith('map_bump'): - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'Bump') - elif line_lower.startswith('map_d') or line_lower.startswith('map_tr'): # Alpha map - Dissolve - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'D') - - elif line_lower.startswith('refl'): # Reflectionmap - img_filepath= line_value(line.split()) - if img_filepath: - load_material_image(context_material, context_material_name, img_filepath, 'refl') - mtl.close() - - - - + elif line_lower.startswith('map_ka'): + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'Ka') + elif line_lower.startswith('map_ks'): + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'Ks') + elif line_lower.startswith('map_kd'): + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'Kd') + elif line_lower.startswith('map_bump'): + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'Bump') + elif line_lower.startswith('map_d') or line_lower.startswith('map_tr'): # Alpha map - Dissolve + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'D') + + elif line_lower.startswith('refl'): # Reflectionmap + img_filepath= line_value(line.split()) + if img_filepath: + load_material_image(context_material, context_material_name, img_filepath, 'refl') + mtl.close() + + + + def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS): - ''' - Takes vert_loc and faces, and seperates into multiple sets of - (verts_loc, faces, unique_materials, dataname) - This is done so objects do not overload the 16 material limit. - ''' - - filename = stripExt(stripPath(filepath)) - - if not SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS: - # use the filename for the object name since we arnt chopping up the mesh. - return [(verts_loc, faces, unique_materials, filename)] - - - def key_to_name(key): - # if the key is a tuple, join it to make a string - if type(key) == tuple: - return '%s_%s' % key - elif not key: - return filename # assume its a string. make sure this is true if the splitting code is changed - else: - return key - - # Return a key that makes the faces unique. - if SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS: - def face_key(face): - return face[4] # object - - elif not SPLIT_OB_OR_GROUP and SPLIT_MATERIALS: - def face_key(face): - return face[2] # material - - else: # Both - def face_key(face): - return face[4], face[2] # object,material - - - face_split_dict= {} - - oldkey= -1 # initialize to a value that will never match the key - - for face in faces: - - key= face_key(face) - - if oldkey != key: - # Check the key has changed. - try: - verts_split, faces_split, unique_materials_split, vert_remap= face_split_dict[key] - except KeyError: - faces_split= [] - verts_split= [] - unique_materials_split= {} - vert_remap= [-1]*len(verts_loc) - - face_split_dict[key]= (verts_split, faces_split, unique_materials_split, vert_remap) - - oldkey= key - - face_vert_loc_indicies= face[0] - - # Remap verts to new vert list and add where needed - for enum, i in enumerate(face_vert_loc_indicies): - if vert_remap[i] == -1: - new_index= len(verts_split) - vert_remap[i]= new_index # set the new remapped index so we only add once and can reference next time. - face_vert_loc_indicies[enum] = new_index # remap to the local index - verts_split.append( verts_loc[i] ) # add the vert to the local verts - - else: - face_vert_loc_indicies[enum] = vert_remap[i] # remap to the local index - - matname= face[2] - if matname and matname not in unique_materials_split: - unique_materials_split[matname] = unique_materials[matname] - - faces_split.append(face) - - - # remove one of the itemas and reorder - return [(value[0], value[1], value[2], key_to_name(key)) for key, value in list(face_split_dict.items())] + ''' + Takes vert_loc and faces, and seperates into multiple sets of + (verts_loc, faces, unique_materials, dataname) + This is done so objects do not overload the 16 material limit. + ''' + + filename = stripExt(stripPath(filepath)) + + if not SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS: + # use the filename for the object name since we arnt chopping up the mesh. + return [(verts_loc, faces, unique_materials, filename)] + + + def key_to_name(key): + # if the key is a tuple, join it to make a string + if type(key) == tuple: + return '%s_%s' % key + elif not key: + return filename # assume its a string. make sure this is true if the splitting code is changed + else: + return key + + # Return a key that makes the faces unique. + if SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS: + def face_key(face): + return face[4] # object + + elif not SPLIT_OB_OR_GROUP and SPLIT_MATERIALS: + def face_key(face): + return face[2] # material + + else: # Both + def face_key(face): + return face[4], face[2] # object,material + + + face_split_dict= {} + + oldkey= -1 # initialize to a value that will never match the key + + for face in faces: + + key= face_key(face) + + if oldkey != key: + # Check the key has changed. + try: + verts_split, faces_split, unique_materials_split, vert_remap= face_split_dict[key] + except KeyError: + faces_split= [] + verts_split= [] + unique_materials_split= {} + vert_remap= [-1]*len(verts_loc) + + face_split_dict[key]= (verts_split, faces_split, unique_materials_split, vert_remap) + + oldkey= key + + face_vert_loc_indicies= face[0] + + # Remap verts to new vert list and add where needed + for enum, i in enumerate(face_vert_loc_indicies): + if vert_remap[i] == -1: + new_index= len(verts_split) + vert_remap[i]= new_index # set the new remapped index so we only add once and can reference next time. + face_vert_loc_indicies[enum] = new_index # remap to the local index + verts_split.append( verts_loc[i] ) # add the vert to the local verts + + else: + face_vert_loc_indicies[enum] = vert_remap[i] # remap to the local index + + matname= face[2] + if matname and matname not in unique_materials_split: + unique_materials_split[matname] = unique_materials[matname] + + faces_split.append(face) + + + # remove one of the itemas and reorder + return [(value[0], value[1], value[2], key_to_name(key)) for key, value in list(face_split_dict.items())] def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, verts_tex, faces, unique_materials, unique_material_images, unique_smooth_groups, vertex_groups, dataname): - ''' - Takes all the data gathered and generates a mesh, adding the new object to new_objects - deals with fgons, sharp edges and assigning materials - ''' - if not has_ngons: - CREATE_FGONS= False - - if unique_smooth_groups: - sharp_edges= {} - smooth_group_users= dict([ (context_smooth_group, {}) for context_smooth_group in list(unique_smooth_groups.keys()) ]) - context_smooth_group_old= -1 - - # Split fgons into tri's - fgon_edges= {} # Used for storing fgon keys - if CREATE_EDGES: - edges= [] - - context_object= None - - # reverse loop through face indicies - for f_idx in range(len(faces)-1, -1, -1): - - face_vert_loc_indicies,\ - face_vert_tex_indicies,\ - context_material,\ - context_smooth_group,\ - context_object= faces[f_idx] - - len_face_vert_loc_indicies = len(face_vert_loc_indicies) - - if len_face_vert_loc_indicies==1: - faces.pop(f_idx)# cant add single vert faces - - elif not face_vert_tex_indicies or len_face_vert_loc_indicies == 2: # faces that have no texture coords are lines - if CREATE_EDGES: - # generators are better in python 2.4+ but can't be used in 2.3 - # edges.extend( (face_vert_loc_indicies[i], face_vert_loc_indicies[i+1]) for i in xrange(len_face_vert_loc_indicies-1) ) - edges.extend( [(face_vert_loc_indicies[i], face_vert_loc_indicies[i+1]) for i in range(len_face_vert_loc_indicies-1)] ) - - faces.pop(f_idx) - else: - - # Smooth Group - if unique_smooth_groups and context_smooth_group: - # Is a part of of a smooth group and is a face - if context_smooth_group_old is not context_smooth_group: - edge_dict= smooth_group_users[context_smooth_group] - context_smooth_group_old= context_smooth_group - - for i in range(len_face_vert_loc_indicies): - i1= face_vert_loc_indicies[i] - i2= face_vert_loc_indicies[i-1] - if i1>i2: i1,i2= i2,i1 - - try: - edge_dict[i1,i2]+= 1 - except KeyError: - edge_dict[i1,i2]= 1 - - # FGons into triangles - if has_ngons and len_face_vert_loc_indicies > 4: - - ngon_face_indices= BPyMesh_ngon(verts_loc, face_vert_loc_indicies) - faces.extend(\ - [(\ - [face_vert_loc_indicies[ngon[0]], face_vert_loc_indicies[ngon[1]], face_vert_loc_indicies[ngon[2]] ],\ - [face_vert_tex_indicies[ngon[0]], face_vert_tex_indicies[ngon[1]], face_vert_tex_indicies[ngon[2]] ],\ - context_material,\ - context_smooth_group,\ - context_object)\ - for ngon in ngon_face_indices]\ - ) - - # edges to make fgons - if CREATE_FGONS: - edge_users= {} - for ngon in ngon_face_indices: - for i in (0,1,2): - i1= face_vert_loc_indicies[ngon[i ]] - i2= face_vert_loc_indicies[ngon[i-1]] - if i1>i2: i1,i2= i2,i1 - - try: - edge_users[i1,i2]+=1 - except KeyError: - edge_users[i1,i2]= 1 - - for key, users in edge_users.items(): - if users>1: - fgon_edges[key]= None - - # remove all after 3, means we dont have to pop this one. - faces.pop(f_idx) - - - # Build sharp edges - if unique_smooth_groups: - for edge_dict in list(smooth_group_users.values()): - for key, users in list(edge_dict.items()): - if users==1: # This edge is on the boundry of a group - sharp_edges[key]= None - - - # map the material names to an index - material_mapping= dict([(name, i) for i, name in enumerate(unique_materials)]) # enumerate over unique_materials keys() - - materials= [None] * len(unique_materials) - - for name, index in list(material_mapping.items()): - materials[index]= unique_materials[name] - - me= bpy.data.add_mesh(dataname) + ''' + Takes all the data gathered and generates a mesh, adding the new object to new_objects + deals with fgons, sharp edges and assigning materials + ''' + if not has_ngons: + CREATE_FGONS= False + + if unique_smooth_groups: + sharp_edges= {} + smooth_group_users= dict([ (context_smooth_group, {}) for context_smooth_group in list(unique_smooth_groups.keys()) ]) + context_smooth_group_old= -1 + + # Split fgons into tri's + fgon_edges= {} # Used for storing fgon keys + if CREATE_EDGES: + edges= [] + + context_object= None + + # reverse loop through face indicies + for f_idx in range(len(faces)-1, -1, -1): + + face_vert_loc_indicies,\ + face_vert_tex_indicies,\ + context_material,\ + context_smooth_group,\ + context_object= faces[f_idx] + + len_face_vert_loc_indicies = len(face_vert_loc_indicies) + + if len_face_vert_loc_indicies==1: + faces.pop(f_idx)# cant add single vert faces + + elif not face_vert_tex_indicies or len_face_vert_loc_indicies == 2: # faces that have no texture coords are lines + if CREATE_EDGES: + # generators are better in python 2.4+ but can't be used in 2.3 + # edges.extend( (face_vert_loc_indicies[i], face_vert_loc_indicies[i+1]) for i in xrange(len_face_vert_loc_indicies-1) ) + edges.extend( [(face_vert_loc_indicies[i], face_vert_loc_indicies[i+1]) for i in range(len_face_vert_loc_indicies-1)] ) + + faces.pop(f_idx) + else: + + # Smooth Group + if unique_smooth_groups and context_smooth_group: + # Is a part of of a smooth group and is a face + if context_smooth_group_old is not context_smooth_group: + edge_dict= smooth_group_users[context_smooth_group] + context_smooth_group_old= context_smooth_group + + for i in range(len_face_vert_loc_indicies): + i1= face_vert_loc_indicies[i] + i2= face_vert_loc_indicies[i-1] + if i1>i2: i1,i2= i2,i1 + + try: + edge_dict[i1,i2]+= 1 + except KeyError: + edge_dict[i1,i2]= 1 + + # FGons into triangles + if has_ngons and len_face_vert_loc_indicies > 4: + + ngon_face_indices= BPyMesh_ngon(verts_loc, face_vert_loc_indicies) + faces.extend(\ + [(\ + [face_vert_loc_indicies[ngon[0]], face_vert_loc_indicies[ngon[1]], face_vert_loc_indicies[ngon[2]] ],\ + [face_vert_tex_indicies[ngon[0]], face_vert_tex_indicies[ngon[1]], face_vert_tex_indicies[ngon[2]] ],\ + context_material,\ + context_smooth_group,\ + context_object)\ + for ngon in ngon_face_indices]\ + ) + + # edges to make fgons + if CREATE_FGONS: + edge_users= {} + for ngon in ngon_face_indices: + for i in (0,1,2): + i1= face_vert_loc_indicies[ngon[i ]] + i2= face_vert_loc_indicies[ngon[i-1]] + if i1>i2: i1,i2= i2,i1 + + try: + edge_users[i1,i2]+=1 + except KeyError: + edge_users[i1,i2]= 1 + + for key, users in edge_users.items(): + if users>1: + fgon_edges[key]= None + + # remove all after 3, means we dont have to pop this one. + faces.pop(f_idx) + + + # Build sharp edges + if unique_smooth_groups: + for edge_dict in list(smooth_group_users.values()): + for key, users in list(edge_dict.items()): + if users==1: # This edge is on the boundry of a group + sharp_edges[key]= None + + + # map the material names to an index + material_mapping= dict([(name, i) for i, name in enumerate(unique_materials)]) # enumerate over unique_materials keys() + + materials= [None] * len(unique_materials) + + for name, index in list(material_mapping.items()): + materials[index]= unique_materials[name] + + me= bpy.data.add_mesh(dataname) # me= bpy.data.meshes.new(dataname) - # make sure the list isnt too big - for material in materials[0:16]: - me.add_material(material) + # make sure the list isnt too big + for material in materials[0:16]: + me.add_material(material) # me.materials= materials[0:16] # make sure the list isnt too big. - #me.verts.extend([(0,0,0)]) # dummy vert + #me.verts.extend([(0,0,0)]) # dummy vert - me.add_geometry(len(verts_loc), 0, len(faces)) + me.add_geometry(len(verts_loc), 0, len(faces)) - # verts_loc is a list of (x, y, z) tuples - me.verts.foreach_set("co", unpack_list(verts_loc)) + # verts_loc is a list of (x, y, z) tuples + me.verts.foreach_set("co", unpack_list(verts_loc)) # me.verts.extend(verts_loc) - # faces is a list of (vert_indices, texco_indices, ...) tuples - # XXX faces should contain either 3 or 4 verts - # XXX no check for valid face indices - me.faces.foreach_set("verts_raw", unpack_face_list([f[0] for f in faces])) + # faces is a list of (vert_indices, texco_indices, ...) tuples + # XXX faces should contain either 3 or 4 verts + # XXX no check for valid face indices + me.faces.foreach_set("verts_raw", unpack_face_list([f[0] for f in faces])) # face_mapping= me.faces.extend([f[0] for f in faces], indexList=True) - - if verts_tex and me.faces: - me.add_uv_texture() + + if verts_tex and me.faces: + me.add_uv_texture() # me.faceUV= 1 - # TEXMODE= Mesh.FaceModes['TEX'] - - context_material_old= -1 # avoid a dict lookup - mat= 0 # rare case it may be un-initialized. - me_faces= me.faces + # TEXMODE= Mesh.FaceModes['TEX'] + + context_material_old= -1 # avoid a dict lookup + mat= 0 # rare case it may be un-initialized. + me_faces= me.faces # ALPHA= Mesh.FaceTranspModes.ALPHA - - for i, face in enumerate(faces): - if len(face[0]) < 2: - pass #raise "bad face" - elif len(face[0])==2: - if CREATE_EDGES: - edges.append(face[0]) - else: + + for i, face in enumerate(faces): + if len(face[0]) < 2: + pass #raise "bad face" + elif len(face[0])==2: + if CREATE_EDGES: + edges.append(face[0]) + else: # face_index_map= face_mapping[i] - # since we use foreach_set to add faces, all of them are added - if 1: + # since we use foreach_set to add faces, all of them are added + if 1: # if face_index_map!=None: # None means the face wasnt added - blender_face = me.faces[i] + blender_face = me.faces[i] # blender_face= me_faces[face_index_map] - - face_vert_loc_indicies,\ - face_vert_tex_indicies,\ - context_material,\ - context_smooth_group,\ - context_object= face - - - - if context_smooth_group: - blender_face.smooth= True - - if context_material: - if context_material_old is not context_material: - mat= material_mapping[context_material] - if mat>15: - mat= 15 - context_material_old= context_material - - blender_face.material_index= mat + + face_vert_loc_indicies,\ + face_vert_tex_indicies,\ + context_material,\ + context_smooth_group,\ + context_object= face + + + + if context_smooth_group: + blender_face.smooth= True + + if context_material: + if context_material_old is not context_material: + mat= material_mapping[context_material] + if mat>15: + mat= 15 + context_material_old= context_material + + blender_face.material_index= mat # blender_face.mat= mat - - - if verts_tex: - blender_tface= me.uv_textures[0].data[i] - if context_material: - image, has_data= unique_material_images[context_material] - if image: # Can be none if the material dosnt have an image. - blender_tface.image= image + if verts_tex: + + blender_tface= me.uv_textures[0].data[i] + + if context_material: + image, has_data= unique_material_images[context_material] + if image: # Can be none if the material dosnt have an image. + blender_tface.image= image # blender_face.image= image - if has_data: + if has_data: # if has_data and image.depth == 32: - blender_tface.transp = 'ALPHA' + blender_tface.transp = 'ALPHA' # blender_face.transp |= ALPHA - - # BUG - Evil eekadoodle problem where faces that have vert index 0 location at 3 or 4 are shuffled. - if len(face_vert_loc_indicies)==4: - if face_vert_loc_indicies[2]==0 or face_vert_loc_indicies[3]==0: - face_vert_tex_indicies= face_vert_tex_indicies[2], face_vert_tex_indicies[3], face_vert_tex_indicies[0], face_vert_tex_indicies[1] - else: # length of 3 - if face_vert_loc_indicies[2]==0: - face_vert_tex_indicies= face_vert_tex_indicies[1], face_vert_tex_indicies[2], face_vert_tex_indicies[0] - # END EEEKADOODLE FIX - - # assign material, uv's and image - blender_tface.uv1= verts_tex[face_vert_tex_indicies[0]] - blender_tface.uv2= verts_tex[face_vert_tex_indicies[1]] - blender_tface.uv3= verts_tex[face_vert_tex_indicies[2]] - - if len(face_vert_loc_indicies)==4: - blender_tface.uv4= verts_tex[face_vert_tex_indicies[3]] + + # BUG - Evil eekadoodle problem where faces that have vert index 0 location at 3 or 4 are shuffled. + if len(face_vert_loc_indicies)==4: + if face_vert_loc_indicies[2]==0 or face_vert_loc_indicies[3]==0: + face_vert_tex_indicies= face_vert_tex_indicies[2], face_vert_tex_indicies[3], face_vert_tex_indicies[0], face_vert_tex_indicies[1] + else: # length of 3 + if face_vert_loc_indicies[2]==0: + face_vert_tex_indicies= face_vert_tex_indicies[1], face_vert_tex_indicies[2], face_vert_tex_indicies[0] + # END EEEKADOODLE FIX + + # assign material, uv's and image + blender_tface.uv1= verts_tex[face_vert_tex_indicies[0]] + blender_tface.uv2= verts_tex[face_vert_tex_indicies[1]] + blender_tface.uv3= verts_tex[face_vert_tex_indicies[2]] + + if len(face_vert_loc_indicies)==4: + blender_tface.uv4= verts_tex[face_vert_tex_indicies[3]] # for ii, uv in enumerate(blender_face.uv): # uv.x, uv.y= verts_tex[face_vert_tex_indicies[ii]] - del me_faces + del me_faces # del ALPHA - if CREATE_EDGES: + if CREATE_EDGES: - me.add_geometry(0, len(edges), 0) + me.add_geometry(0, len(edges), 0) - # edges should be a list of (a, b) tuples - me.edges.foreach_set("verts", unpack_list(edges)) + # edges should be a list of (a, b) tuples + me.edges.foreach_set("verts", unpack_list(edges)) # me_edges.extend( edges ) - + # del me_edges - - # Add edge faces. + + # Add edge faces. # me_edges= me.edges - def edges_match(e1, e2): - return (e1[0] == e2[0] and e1[1] == e2[1]) or (e1[0] == e2[1] and e1[1] == e2[0]) + def edges_match(e1, e2): + return (e1[0] == e2[0] and e1[1] == e2[1]) or (e1[0] == e2[1] and e1[1] == e2[0]) - # XXX slow + # XXX slow # if CREATE_FGONS and fgon_edges: # for fgon_edge in fgon_edges.keys(): # for ed in me.edges: @@ -845,7 +845,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l # me_edges[ed].flag |= FGON # del FGON - # XXX slow + # XXX slow # if unique_smooth_groups and sharp_edges: # for sharp_edge in sharp_edges.keys(): # for ed in me.edges: @@ -859,448 +859,448 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l # me_edges[ed].flag |= SHARP # del SHARP - me.update() + me.update() # me.calcNormals() - - ob= bpy.data.add_object("MESH", "Mesh") - ob.data= me - scn.objects.link(ob) + + ob= bpy.data.add_object("MESH", "Mesh") + ob.data= me + scn.objects.link(ob) # ob= scn.objects.new(me) - new_objects.append(ob) + new_objects.append(ob) - # Create the vertex groups. No need to have the flag passed here since we test for the - # content of the vertex_groups. If the user selects to NOT have vertex groups saved then - # the following test will never run - for group_name, group_indicies in vertex_groups.items(): - group= ob.add_vertex_group(group_name) + # Create the vertex groups. No need to have the flag passed here since we test for the + # content of the vertex_groups. If the user selects to NOT have vertex groups saved then + # the following test will never run + for group_name, group_indicies in vertex_groups.items(): + group= ob.add_vertex_group(group_name) # me.addVertGroup(group_name) - for vertex_index in group_indicies: - ob.add_vertex_to_group(vertex_index, group, 1.0, 'REPLACE') + for vertex_index in group_indicies: + ob.add_vertex_to_group(vertex_index, group, 1.0, 'REPLACE') # me.assignVertsToGroup(group_name, group_indicies, 1.00, Mesh.AssignModes.REPLACE) def create_nurbs(scn, context_nurbs, vert_loc, new_objects): - ''' - Add nurbs object to blender, only support one type at the moment - ''' - deg = context_nurbs.get('deg', (3,)) - curv_range = context_nurbs.get('curv_range', None) - curv_idx = context_nurbs.get('curv_idx', []) - parm_u = context_nurbs.get('parm_u', []) - parm_v = context_nurbs.get('parm_v', []) - name = context_nurbs.get('name', 'ObjNurb') - cstype = context_nurbs.get('cstype', None) - - if cstype == None: - print('\tWarning, cstype not found') - return - if cstype != 'bspline': - print('\tWarning, cstype is not supported (only bspline)') - return - if not curv_idx: - print('\tWarning, curv argument empty or not set') - return - if len(deg) > 1 or parm_v: - print('\tWarning, surfaces not supported') - return - - cu = bpy.data.curves.new(name, 'Curve') - cu.flag |= 1 # 3D curve - - nu = None - for pt in curv_idx: - - pt = vert_loc[pt] - pt = (pt[0], pt[1], pt[2], 1.0) - - if nu == None: - nu = cu.appendNurb(pt) - else: - nu.append(pt) - - nu.orderU = deg[0]+1 - - # get for endpoint flag from the weighting - if curv_range and len(parm_u) > deg[0]+1: - do_endpoints = True - for i in range(deg[0]+1): - - if abs(parm_u[i]-curv_range[0]) > 0.0001: - do_endpoints = False - break - - if abs(parm_u[-(i+1)]-curv_range[1]) > 0.0001: - do_endpoints = False - break - - else: - do_endpoints = False - - if do_endpoints: - nu.flagU |= 2 - - - # close - ''' - do_closed = False - if len(parm_u) > deg[0]+1: - for i in xrange(deg[0]+1): - #print curv_idx[i], curv_idx[-(i+1)] - - if curv_idx[i]==curv_idx[-(i+1)]: - do_closed = True - break - - if do_closed: - nu.flagU |= 1 - ''' - - ob = scn.objects.new(cu) - new_objects.append(ob) + ''' + Add nurbs object to blender, only support one type at the moment + ''' + deg = context_nurbs.get('deg', (3,)) + curv_range = context_nurbs.get('curv_range', None) + curv_idx = context_nurbs.get('curv_idx', []) + parm_u = context_nurbs.get('parm_u', []) + parm_v = context_nurbs.get('parm_v', []) + name = context_nurbs.get('name', 'ObjNurb') + cstype = context_nurbs.get('cstype', None) + + if cstype == None: + print('\tWarning, cstype not found') + return + if cstype != 'bspline': + print('\tWarning, cstype is not supported (only bspline)') + return + if not curv_idx: + print('\tWarning, curv argument empty or not set') + return + if len(deg) > 1 or parm_v: + print('\tWarning, surfaces not supported') + return + + cu = bpy.data.curves.new(name, 'Curve') + cu.flag |= 1 # 3D curve + + nu = None + for pt in curv_idx: + + pt = vert_loc[pt] + pt = (pt[0], pt[1], pt[2], 1.0) + + if nu == None: + nu = cu.appendNurb(pt) + else: + nu.append(pt) + + nu.orderU = deg[0]+1 + + # get for endpoint flag from the weighting + if curv_range and len(parm_u) > deg[0]+1: + do_endpoints = True + for i in range(deg[0]+1): + + if abs(parm_u[i]-curv_range[0]) > 0.0001: + do_endpoints = False + break + + if abs(parm_u[-(i+1)]-curv_range[1]) > 0.0001: + do_endpoints = False + break + + else: + do_endpoints = False + + if do_endpoints: + nu.flagU |= 2 + + + # close + ''' + do_closed = False + if len(parm_u) > deg[0]+1: + for i in xrange(deg[0]+1): + #print curv_idx[i], curv_idx[-(i+1)] + + if curv_idx[i]==curv_idx[-(i+1)]: + do_closed = True + break + + if do_closed: + nu.flagU |= 1 + ''' + + ob = scn.objects.new(cu) + new_objects.append(ob) def strip_slash(line_split): - if line_split[-1][-1]== '\\': - if len(line_split[-1])==1: - line_split.pop() # remove the \ item - else: - line_split[-1]= line_split[-1][:-1] # remove the \ from the end last number - return True - return False + if line_split[-1][-1]== '\\': + if len(line_split[-1])==1: + line_split.pop() # remove the \ item + else: + line_split[-1]= line_split[-1][:-1] # remove the \ from the end last number + return True + return False def get_float_func(filepath): - ''' - find the float function for this obj file - - weather to replace commas or not - ''' - file= open(filepath, 'rU') - for line in file: #.xreadlines(): - line = line.lstrip() - if line.startswith('v'): # vn vt v - if ',' in line: - return lambda f: float(f.replace(',', '.')) - elif '.' in line: - return float - - # incase all vert values were ints - return float + ''' + find the float function for this obj file + - weather to replace commas or not + ''' + file= open(filepath, 'rU') + for line in file: #.xreadlines(): + line = line.lstrip() + if line.startswith('v'): # vn vt v + if ',' in line: + return lambda f: float(f.replace(',', '.')) + elif '.' in line: + return float + + # incase all vert values were ints + return float def load_obj(filepath, - context, - CLAMP_SIZE= 0.0, - CREATE_FGONS= True, - CREATE_SMOOTH_GROUPS= True, - CREATE_EDGES= True, - SPLIT_OBJECTS= True, - SPLIT_GROUPS= True, - SPLIT_MATERIALS= True, - ROTATE_X90= True, - IMAGE_SEARCH=True, - POLYGROUPS=False): - ''' - Called by the user interface or another script. - load_obj(path) - should give acceptable results. - This function passes the file and sends the data off - to be split into objects and then converted into mesh objects - ''' - print('\nimporting obj "%s"' % filepath) - - if SPLIT_OBJECTS or SPLIT_GROUPS or SPLIT_MATERIALS: - POLYGROUPS = False - - time_main= time.time() + context, + CLAMP_SIZE= 0.0, + CREATE_FGONS= True, + CREATE_SMOOTH_GROUPS= True, + CREATE_EDGES= True, + SPLIT_OBJECTS= True, + SPLIT_GROUPS= True, + SPLIT_MATERIALS= True, + ROTATE_X90= True, + IMAGE_SEARCH=True, + POLYGROUPS=False): + ''' + Called by the user interface or another script. + load_obj(path) - should give acceptable results. + This function passes the file and sends the data off + to be split into objects and then converted into mesh objects + ''' + print('\nimporting obj "%s"' % filepath) + + if SPLIT_OBJECTS or SPLIT_GROUPS or SPLIT_MATERIALS: + POLYGROUPS = False + + time_main= time.time() # time_main= sys.time() - - verts_loc= [] - verts_tex= [] - faces= [] # tuples of the faces - material_libs= [] # filanems to material libs this uses - vertex_groups = {} # when POLYGROUPS is true - - # Get the string to float conversion func for this file- is 'float' for almost all files. - float_func= get_float_func(filepath) - - # Context variables - context_material= None - context_smooth_group= None - context_object= None - context_vgroup = None - - # Nurbs - context_nurbs = {} - nurbs = [] - context_parm = '' # used by nurbs too but could be used elsewhere - - has_ngons= False - # has_smoothgroups= False - is explicit with len(unique_smooth_groups) being > 0 - - # Until we can use sets - unique_materials= {} - unique_material_images= {} - unique_smooth_groups= {} - # unique_obects= {} - no use for this variable since the objects are stored in the face. - - # when there are faces that end with \ - # it means they are multiline- - # since we use xreadline we cant skip to the next line - # so we need to know weather - context_multi_line= '' - - print('\tparsing obj file "%s"...' % filepath) - time_sub= time.time() + + verts_loc= [] + verts_tex= [] + faces= [] # tuples of the faces + material_libs= [] # filanems to material libs this uses + vertex_groups = {} # when POLYGROUPS is true + + # Get the string to float conversion func for this file- is 'float' for almost all files. + float_func= get_float_func(filepath) + + # Context variables + context_material= None + context_smooth_group= None + context_object= None + context_vgroup = None + + # Nurbs + context_nurbs = {} + nurbs = [] + context_parm = '' # used by nurbs too but could be used elsewhere + + has_ngons= False + # has_smoothgroups= False - is explicit with len(unique_smooth_groups) being > 0 + + # Until we can use sets + unique_materials= {} + unique_material_images= {} + unique_smooth_groups= {} + # unique_obects= {} - no use for this variable since the objects are stored in the face. + + # when there are faces that end with \ + # it means they are multiline- + # since we use xreadline we cant skip to the next line + # so we need to know weather + context_multi_line= '' + + print('\tparsing obj file "%s"...' % filepath) + time_sub= time.time() # time_sub= sys.time() - file= open(filepath, 'rU') - for line in file: #.xreadlines(): - line = line.lstrip() # rare cases there is white space at the start of the line - - if line.startswith('v '): - line_split= line.split() - # rotate X90: (x,-z,y) - verts_loc.append( (float_func(line_split[1]), -float_func(line_split[3]), float_func(line_split[2])) ) - - elif line.startswith('vn '): - pass - - elif line.startswith('vt '): - line_split= line.split() - verts_tex.append( (float_func(line_split[1]), float_func(line_split[2])) ) - - # Handel faces lines (as faces) and the second+ lines of fa multiline face here - # use 'f' not 'f ' because some objs (very rare have 'fo ' for faces) - elif line.startswith('f') or context_multi_line == 'f': - - if context_multi_line: - # use face_vert_loc_indicies and face_vert_tex_indicies previously defined and used the obj_face - line_split= line.split() - - else: - line_split= line[2:].split() - face_vert_loc_indicies= [] - face_vert_tex_indicies= [] - - # Instance a face - faces.append((\ - face_vert_loc_indicies,\ - face_vert_tex_indicies,\ - context_material,\ - context_smooth_group,\ - context_object\ - )) - - if strip_slash(line_split): - context_multi_line = 'f' - else: - context_multi_line = '' - - for v in line_split: - obj_vert= v.split('/') - - vert_loc_index= int(obj_vert[0])-1 - # Add the vertex to the current group - # *warning*, this wont work for files that have groups defined around verts - if POLYGROUPS and context_vgroup: - vertex_groups[context_vgroup].append(vert_loc_index) - - # Make relative negative vert indicies absolute - if vert_loc_index < 0: - vert_loc_index= len(verts_loc) + vert_loc_index + 1 - - face_vert_loc_indicies.append(vert_loc_index) - - if len(obj_vert)>1 and obj_vert[1]: - # formatting for faces with normals and textures us - # loc_index/tex_index/nor_index - - vert_tex_index= int(obj_vert[1])-1 - # Make relative negative vert indicies absolute - if vert_tex_index < 0: - vert_tex_index= len(verts_tex) + vert_tex_index + 1 - - face_vert_tex_indicies.append(vert_tex_index) - else: - # dummy - face_vert_tex_indicies.append(0) - - if len(face_vert_loc_indicies) > 4: - has_ngons= True - - elif CREATE_EDGES and (line.startswith('l ') or context_multi_line == 'l'): - # very similar to the face load function above with some parts removed - - if context_multi_line: - # use face_vert_loc_indicies and face_vert_tex_indicies previously defined and used the obj_face - line_split= line.split() - - else: - line_split= line[2:].split() - face_vert_loc_indicies= [] - face_vert_tex_indicies= [] - - # Instance a face - faces.append((\ - face_vert_loc_indicies,\ - face_vert_tex_indicies,\ - context_material,\ - context_smooth_group,\ - context_object\ - )) - - if strip_slash(line_split): - context_multi_line = 'l' - else: - context_multi_line = '' - - isline= line.startswith('l') - - for v in line_split: - vert_loc_index= int(v)-1 - - # Make relative negative vert indicies absolute - if vert_loc_index < 0: - vert_loc_index= len(verts_loc) + vert_loc_index + 1 - - face_vert_loc_indicies.append(vert_loc_index) - - elif line.startswith('s'): - if CREATE_SMOOTH_GROUPS: - context_smooth_group= line_value(line.split()) - if context_smooth_group=='off': - context_smooth_group= None - elif context_smooth_group: # is not None - unique_smooth_groups[context_smooth_group]= None - - elif line.startswith('o'): - if SPLIT_OBJECTS: - context_object= line_value(line.split()) - # unique_obects[context_object]= None - - elif line.startswith('g'): - if SPLIT_GROUPS: - context_object= line_value(line.split()) - # print 'context_object', context_object - # unique_obects[context_object]= None - elif POLYGROUPS: - context_vgroup = line_value(line.split()) - if context_vgroup and context_vgroup != '(null)': - vertex_groups.setdefault(context_vgroup, []) - else: - context_vgroup = None # dont assign a vgroup - - elif line.startswith('usemtl'): - context_material= line_value(line.split()) - unique_materials[context_material]= None - elif line.startswith('mtllib'): # usemap or usemat - material_libs.extend( line.split()[1:] ) # can have multiple mtllib filenames per line - - - # Nurbs support - elif line.startswith('cstype '): - context_nurbs['cstype']= line_value(line.split()) # 'rat bspline' / 'bspline' - elif line.startswith('curv ') or context_multi_line == 'curv': - line_split= line.split() - - curv_idx = context_nurbs['curv_idx'] = context_nurbs.get('curv_idx', []) # incase were multiline - - if not context_multi_line: - context_nurbs['curv_range'] = float_func(line_split[1]), float_func(line_split[2]) - line_split[0:3] = [] # remove first 3 items - - if strip_slash(line_split): - context_multi_line = 'curv' - else: - context_multi_line = '' - - - for i in line_split: - vert_loc_index = int(i)-1 - - if vert_loc_index < 0: - vert_loc_index= len(verts_loc) + vert_loc_index + 1 - - curv_idx.append(vert_loc_index) - - elif line.startswith('parm') or context_multi_line == 'parm': - line_split= line.split() - - if context_multi_line: - context_multi_line = '' - else: - context_parm = line_split[1] - line_split[0:2] = [] # remove first 2 - - if strip_slash(line_split): - context_multi_line = 'parm' - else: - context_multi_line = '' - - if context_parm.lower() == 'u': - context_nurbs.setdefault('parm_u', []).extend( [float_func(f) for f in line_split] ) - elif context_parm.lower() == 'v': # surfaces not suported yet - context_nurbs.setdefault('parm_v', []).extend( [float_func(f) for f in line_split] ) - # else: # may want to support other parm's ? - - elif line.startswith('deg '): - context_nurbs['deg']= [int(i) for i in line.split()[1:]] - elif line.startswith('end'): - # Add the nurbs curve - if context_object: - context_nurbs['name'] = context_object - nurbs.append(context_nurbs) - context_nurbs = {} - context_parm = '' - - ''' # How to use usemap? depricated? - elif line.startswith('usema'): # usemap or usemat - context_image= line_value(line.split()) - ''' - - file.close() - time_new= time.time() + file= open(filepath, 'rU') + for line in file: #.xreadlines(): + line = line.lstrip() # rare cases there is white space at the start of the line + + if line.startswith('v '): + line_split= line.split() + # rotate X90: (x,-z,y) + verts_loc.append( (float_func(line_split[1]), -float_func(line_split[3]), float_func(line_split[2])) ) + + elif line.startswith('vn '): + pass + + elif line.startswith('vt '): + line_split= line.split() + verts_tex.append( (float_func(line_split[1]), float_func(line_split[2])) ) + + # Handel faces lines (as faces) and the second+ lines of fa multiline face here + # use 'f' not 'f ' because some objs (very rare have 'fo ' for faces) + elif line.startswith('f') or context_multi_line == 'f': + + if context_multi_line: + # use face_vert_loc_indicies and face_vert_tex_indicies previously defined and used the obj_face + line_split= line.split() + + else: + line_split= line[2:].split() + face_vert_loc_indicies= [] + face_vert_tex_indicies= [] + + # Instance a face + faces.append((\ + face_vert_loc_indicies,\ + face_vert_tex_indicies,\ + context_material,\ + context_smooth_group,\ + context_object\ + )) + + if strip_slash(line_split): + context_multi_line = 'f' + else: + context_multi_line = '' + + for v in line_split: + obj_vert= v.split('/') + + vert_loc_index= int(obj_vert[0])-1 + # Add the vertex to the current group + # *warning*, this wont work for files that have groups defined around verts + if POLYGROUPS and context_vgroup: + vertex_groups[context_vgroup].append(vert_loc_index) + + # Make relative negative vert indicies absolute + if vert_loc_index < 0: + vert_loc_index= len(verts_loc) + vert_loc_index + 1 + + face_vert_loc_indicies.append(vert_loc_index) + + if len(obj_vert)>1 and obj_vert[1]: + # formatting for faces with normals and textures us + # loc_index/tex_index/nor_index + + vert_tex_index= int(obj_vert[1])-1 + # Make relative negative vert indicies absolute + if vert_tex_index < 0: + vert_tex_index= len(verts_tex) + vert_tex_index + 1 + + face_vert_tex_indicies.append(vert_tex_index) + else: + # dummy + face_vert_tex_indicies.append(0) + + if len(face_vert_loc_indicies) > 4: + has_ngons= True + + elif CREATE_EDGES and (line.startswith('l ') or context_multi_line == 'l'): + # very similar to the face load function above with some parts removed + + if context_multi_line: + # use face_vert_loc_indicies and face_vert_tex_indicies previously defined and used the obj_face + line_split= line.split() + + else: + line_split= line[2:].split() + face_vert_loc_indicies= [] + face_vert_tex_indicies= [] + + # Instance a face + faces.append((\ + face_vert_loc_indicies,\ + face_vert_tex_indicies,\ + context_material,\ + context_smooth_group,\ + context_object\ + )) + + if strip_slash(line_split): + context_multi_line = 'l' + else: + context_multi_line = '' + + isline= line.startswith('l') + + for v in line_split: + vert_loc_index= int(v)-1 + + # Make relative negative vert indicies absolute + if vert_loc_index < 0: + vert_loc_index= len(verts_loc) + vert_loc_index + 1 + + face_vert_loc_indicies.append(vert_loc_index) + + elif line.startswith('s'): + if CREATE_SMOOTH_GROUPS: + context_smooth_group= line_value(line.split()) + if context_smooth_group=='off': + context_smooth_group= None + elif context_smooth_group: # is not None + unique_smooth_groups[context_smooth_group]= None + + elif line.startswith('o'): + if SPLIT_OBJECTS: + context_object= line_value(line.split()) + # unique_obects[context_object]= None + + elif line.startswith('g'): + if SPLIT_GROUPS: + context_object= line_value(line.split()) + # print 'context_object', context_object + # unique_obects[context_object]= None + elif POLYGROUPS: + context_vgroup = line_value(line.split()) + if context_vgroup and context_vgroup != '(null)': + vertex_groups.setdefault(context_vgroup, []) + else: + context_vgroup = None # dont assign a vgroup + + elif line.startswith('usemtl'): + context_material= line_value(line.split()) + unique_materials[context_material]= None + elif line.startswith('mtllib'): # usemap or usemat + material_libs.extend( line.split()[1:] ) # can have multiple mtllib filenames per line + + + # Nurbs support + elif line.startswith('cstype '): + context_nurbs['cstype']= line_value(line.split()) # 'rat bspline' / 'bspline' + elif line.startswith('curv ') or context_multi_line == 'curv': + line_split= line.split() + + curv_idx = context_nurbs['curv_idx'] = context_nurbs.get('curv_idx', []) # incase were multiline + + if not context_multi_line: + context_nurbs['curv_range'] = float_func(line_split[1]), float_func(line_split[2]) + line_split[0:3] = [] # remove first 3 items + + if strip_slash(line_split): + context_multi_line = 'curv' + else: + context_multi_line = '' + + + for i in line_split: + vert_loc_index = int(i)-1 + + if vert_loc_index < 0: + vert_loc_index= len(verts_loc) + vert_loc_index + 1 + + curv_idx.append(vert_loc_index) + + elif line.startswith('parm') or context_multi_line == 'parm': + line_split= line.split() + + if context_multi_line: + context_multi_line = '' + else: + context_parm = line_split[1] + line_split[0:2] = [] # remove first 2 + + if strip_slash(line_split): + context_multi_line = 'parm' + else: + context_multi_line = '' + + if context_parm.lower() == 'u': + context_nurbs.setdefault('parm_u', []).extend( [float_func(f) for f in line_split] ) + elif context_parm.lower() == 'v': # surfaces not suported yet + context_nurbs.setdefault('parm_v', []).extend( [float_func(f) for f in line_split] ) + # else: # may want to support other parm's ? + + elif line.startswith('deg '): + context_nurbs['deg']= [int(i) for i in line.split()[1:]] + elif line.startswith('end'): + # Add the nurbs curve + if context_object: + context_nurbs['name'] = context_object + nurbs.append(context_nurbs) + context_nurbs = {} + context_parm = '' + + ''' # How to use usemap? depricated? + elif line.startswith('usema'): # usemap or usemat + context_image= line_value(line.split()) + ''' + + file.close() + time_new= time.time() # time_new= sys.time() - print('%.4f sec' % (time_new-time_sub)) - time_sub= time_new - - - print('\tloading materials and images...') - create_materials(filepath, material_libs, unique_materials, unique_material_images, IMAGE_SEARCH) - - time_new= time.time() + print('%.4f sec' % (time_new-time_sub)) + time_sub= time_new + + + print('\tloading materials and images...') + create_materials(filepath, material_libs, unique_materials, unique_material_images, IMAGE_SEARCH) + + time_new= time.time() # time_new= sys.time() - print('%.4f sec' % (time_new-time_sub)) - time_sub= time_new - - if not ROTATE_X90: - verts_loc[:] = [(v[0], v[2], -v[1]) for v in verts_loc] - - # deselect all + print('%.4f sec' % (time_new-time_sub)) + time_sub= time_new + + if not ROTATE_X90: + verts_loc[:] = [(v[0], v[2], -v[1]) for v in verts_loc] + + # deselect all # if context.selected_objects: # bpy.ops.OBJECT_OT_select_all() - scene = context.scene + scene = context.scene # scn = bpy.data.scenes.active # scn.objects.selected = [] - new_objects= [] # put new objects here - - print('\tbuilding geometry...\n\tverts:%i faces:%i materials: %i smoothgroups:%i ...' % ( len(verts_loc), len(faces), len(unique_materials), len(unique_smooth_groups) )) - # Split the mesh by objects/materials, may - if SPLIT_OBJECTS or SPLIT_GROUPS: SPLIT_OB_OR_GROUP = True - else: SPLIT_OB_OR_GROUP = False - - for verts_loc_split, faces_split, unique_materials_split, dataname in split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS): - # Create meshes from the data, warning 'vertex_groups' wont support splitting - create_mesh(scene, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, vertex_groups, dataname) - - # nurbs support + new_objects= [] # put new objects here + + print('\tbuilding geometry...\n\tverts:%i faces:%i materials: %i smoothgroups:%i ...' % ( len(verts_loc), len(faces), len(unique_materials), len(unique_smooth_groups) )) + # Split the mesh by objects/materials, may + if SPLIT_OBJECTS or SPLIT_GROUPS: SPLIT_OB_OR_GROUP = True + else: SPLIT_OB_OR_GROUP = False + + for verts_loc_split, faces_split, unique_materials_split, dataname in split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS): + # Create meshes from the data, warning 'vertex_groups' wont support splitting + create_mesh(scene, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, vertex_groups, dataname) + + # nurbs support # for context_nurbs in nurbs: # create_nurbs(scn, context_nurbs, verts_loc, new_objects) - - - axis_min= [ 1000000000]*3 - axis_max= [-1000000000]*3 - + + + axis_min= [ 1000000000]*3 + axis_max= [-1000000000]*3 + # if CLAMP_SIZE: # # Get all object bounds # for ob in new_objects: @@ -1308,233 +1308,233 @@ def load_obj(filepath, # for axis, value in enumerate(v): # if axis_min[axis] > value: axis_min[axis]= value # if axis_max[axis] < value: axis_max[axis]= value - + # # Scale objects # max_axis= max(axis_max[0]-axis_min[0], axis_max[1]-axis_min[1], axis_max[2]-axis_min[2]) # scale= 1.0 - + # while CLAMP_SIZE < max_axis * scale: # scale= scale/10.0 - + # for ob in new_objects: # ob.setSize(scale, scale, scale) - - # Better rotate the vert locations - #if not ROTATE_X90: - # for ob in new_objects: - # ob.RotX = -1.570796326794896558 - time_new= time.time() + # Better rotate the vert locations + #if not ROTATE_X90: + # for ob in new_objects: + # ob.RotX = -1.570796326794896558 + + time_new= time.time() # time_new= sys.time() - - print('%.4f sec' % (time_new-time_sub)) - print('finished importing: "%s" in %.4f sec.' % (filepath, (time_new-time_main))) + + print('%.4f sec' % (time_new-time_sub)) + print('finished importing: "%s" in %.4f sec.' % (filepath, (time_new-time_main))) DEBUG= True def load_obj_ui(filepath, BATCH_LOAD= False): - if BPyMessages.Error_NoFile(filepath): - return - - global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90 - - CREATE_SMOOTH_GROUPS= Draw.Create(0) - CREATE_FGONS= Draw.Create(1) - CREATE_EDGES= Draw.Create(1) - SPLIT_OBJECTS= Draw.Create(0) - SPLIT_GROUPS= Draw.Create(0) - SPLIT_MATERIALS= Draw.Create(0) - CLAMP_SIZE= Draw.Create(10.0) - IMAGE_SEARCH= Draw.Create(1) - POLYGROUPS= Draw.Create(0) - KEEP_VERT_ORDER= Draw.Create(1) - ROTATE_X90= Draw.Create(1) - - - # Get USER Options - # Note, Works but not pretty, instead use a more complicated GUI - ''' - pup_block= [\ - 'Import...',\ - ('Smooth Groups', CREATE_SMOOTH_GROUPS, 'Surround smooth groups by sharp edges'),\ - ('Create FGons', CREATE_FGONS, 'Import faces with more then 4 verts as fgons.'),\ - ('Lines', CREATE_EDGES, 'Import lines and faces with 2 verts as edges'),\ - 'Separate objects from obj...',\ - ('Object', SPLIT_OBJECTS, 'Import OBJ Objects into Blender Objects'),\ - ('Group', SPLIT_GROUPS, 'Import OBJ Groups into Blender Objects'),\ - ('Material', SPLIT_MATERIALS, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)'),\ - 'Options...',\ - ('Keep Vert Order', KEEP_VERT_ORDER, 'Keep vert and face order, disables some other options.'),\ - ('Clamp Scale:', CLAMP_SIZE, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)'),\ - ('Image Search', IMAGE_SEARCH, 'Search subdirs for any assosiated images (Warning, may be slow)'),\ - ] - - if not Draw.PupBlock('Import OBJ...', pup_block): - return - - if KEEP_VERT_ORDER.val: - SPLIT_OBJECTS.val = False - SPLIT_GROUPS.val = False - SPLIT_MATERIALS.val = False - ''' - - - - # BEGIN ALTERNATIVE UI ******************* - if True: - - EVENT_NONE = 0 - EVENT_EXIT = 1 - EVENT_REDRAW = 2 - EVENT_IMPORT = 3 - - GLOBALS = {} - GLOBALS['EVENT'] = EVENT_REDRAW - #GLOBALS['MOUSE'] = Window.GetMouseCoords() - GLOBALS['MOUSE'] = [i/2 for i in Window.GetScreenSize()] - - def obj_ui_set_event(e,v): - GLOBALS['EVENT'] = e - - def do_split(e,v): - global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS - if SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val: - KEEP_VERT_ORDER.val = 0 - POLYGROUPS.val = 0 - else: - KEEP_VERT_ORDER.val = 1 - - def do_vertorder(e,v): - global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER - if KEEP_VERT_ORDER.val: - SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0 - else: - if not (SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val): - KEEP_VERT_ORDER.val = 1 - - def do_polygroups(e,v): - global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS - if POLYGROUPS.val: - SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0 - - def do_help(e,v): - url = __url__[0] - print('Trying to open web browser with documentation at this address...') - print('\t' + url) - - try: - import webbrowser - webbrowser.open(url) - except: - print('...could not open a browser window.') - - def obj_ui(): - ui_x, ui_y = GLOBALS['MOUSE'] - - # Center based on overall pup size - ui_x -= 165 - ui_y -= 90 - - global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90 - - Draw.Label('Import...', ui_x+9, ui_y+159, 220, 21) - Draw.BeginAlign() - CREATE_SMOOTH_GROUPS = Draw.Toggle('Smooth Groups', EVENT_NONE, ui_x+9, ui_y+139, 110, 20, CREATE_SMOOTH_GROUPS.val, 'Surround smooth groups by sharp edges') - CREATE_FGONS = Draw.Toggle('NGons as FGons', EVENT_NONE, ui_x+119, ui_y+139, 110, 20, CREATE_FGONS.val, 'Import faces with more then 4 verts as fgons') - CREATE_EDGES = Draw.Toggle('Lines as Edges', EVENT_NONE, ui_x+229, ui_y+139, 110, 20, CREATE_EDGES.val, 'Import lines and faces with 2 verts as edges') - Draw.EndAlign() - - Draw.Label('Separate objects by OBJ...', ui_x+9, ui_y+110, 220, 20) - Draw.BeginAlign() - SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 55, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split) - SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+64, ui_y+89, 55, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split) - SPLIT_MATERIALS = Draw.Toggle('Material', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)', do_split) - Draw.EndAlign() - - # Only used for user feedback - KEEP_VERT_ORDER = Draw.Toggle('Keep Vert Order', EVENT_REDRAW, ui_x+184, ui_y+89, 113, 21, KEEP_VERT_ORDER.val, 'Keep vert and face order, disables split options, enable for morph targets', do_vertorder) - - ROTATE_X90 = Draw.Toggle('-X90', EVENT_REDRAW, ui_x+302, ui_y+89, 38, 21, ROTATE_X90.val, 'Rotate X 90.') - - Draw.Label('Options...', ui_x+9, ui_y+60, 211, 20) - CLAMP_SIZE = Draw.Number('Clamp Scale: ', EVENT_NONE, ui_x+9, ui_y+39, 130, 21, CLAMP_SIZE.val, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)') - POLYGROUPS = Draw.Toggle('Poly Groups', EVENT_REDRAW, ui_x+144, ui_y+39, 90, 21, POLYGROUPS.val, 'Import OBJ groups as vertex groups.', do_polygroups) - IMAGE_SEARCH = Draw.Toggle('Image Search', EVENT_NONE, ui_x+239, ui_y+39, 100, 21, IMAGE_SEARCH.val, 'Search subdirs for any assosiated images (Warning, may be slow)') - Draw.BeginAlign() - Draw.PushButton('Online Help', EVENT_REDRAW, ui_x+9, ui_y+9, 110, 21, 'Load the wiki page for this script', do_help) - Draw.PushButton('Cancel', EVENT_EXIT, ui_x+119, ui_y+9, 110, 21, '', obj_ui_set_event) - Draw.PushButton('Import', EVENT_IMPORT, ui_x+229, ui_y+9, 110, 21, 'Import with these settings', obj_ui_set_event) - Draw.EndAlign() - - - # hack so the toggle buttons redraw. this is not nice at all - while GLOBALS['EVENT'] not in (EVENT_EXIT, EVENT_IMPORT): - Draw.UIBlock(obj_ui, 0) - - if GLOBALS['EVENT'] != EVENT_IMPORT: - return - - # END ALTERNATIVE UI ********************* - - - - - - - - Window.WaitCursor(1) - - if BATCH_LOAD: # load the dir - try: - files= [ f for f in os.listdir(filepath) if f.lower().endswith('.obj') ] - except: - Window.WaitCursor(0) - Draw.PupMenu('Error%t|Could not open path ' + filepath) - return - - if not files: - Window.WaitCursor(0) - Draw.PupMenu('Error%t|No files at path ' + filepath) - return - - for f in files: - scn= bpy.data.scenes.new( stripExt(f) ) - scn.makeCurrent() - - load_obj(sys.join(filepath, f),\ - CLAMP_SIZE.val,\ - CREATE_FGONS.val,\ - CREATE_SMOOTH_GROUPS.val,\ - CREATE_EDGES.val,\ - SPLIT_OBJECTS.val,\ - SPLIT_GROUPS.val,\ - SPLIT_MATERIALS.val,\ - ROTATE_X90.val,\ - IMAGE_SEARCH.val,\ - POLYGROUPS.val - ) - - else: # Normal load - load_obj(filepath,\ - CLAMP_SIZE.val,\ - CREATE_FGONS.val,\ - CREATE_SMOOTH_GROUPS.val,\ - CREATE_EDGES.val,\ - SPLIT_OBJECTS.val,\ - SPLIT_GROUPS.val,\ - SPLIT_MATERIALS.val,\ - ROTATE_X90.val,\ - IMAGE_SEARCH.val,\ - POLYGROUPS.val - ) - - Window.WaitCursor(0) + if BPyMessages.Error_NoFile(filepath): + return + + global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90 + + CREATE_SMOOTH_GROUPS= Draw.Create(0) + CREATE_FGONS= Draw.Create(1) + CREATE_EDGES= Draw.Create(1) + SPLIT_OBJECTS= Draw.Create(0) + SPLIT_GROUPS= Draw.Create(0) + SPLIT_MATERIALS= Draw.Create(0) + CLAMP_SIZE= Draw.Create(10.0) + IMAGE_SEARCH= Draw.Create(1) + POLYGROUPS= Draw.Create(0) + KEEP_VERT_ORDER= Draw.Create(1) + ROTATE_X90= Draw.Create(1) + + + # Get USER Options + # Note, Works but not pretty, instead use a more complicated GUI + ''' + pup_block= [\ + 'Import...',\ + ('Smooth Groups', CREATE_SMOOTH_GROUPS, 'Surround smooth groups by sharp edges'),\ + ('Create FGons', CREATE_FGONS, 'Import faces with more then 4 verts as fgons.'),\ + ('Lines', CREATE_EDGES, 'Import lines and faces with 2 verts as edges'),\ + 'Separate objects from obj...',\ + ('Object', SPLIT_OBJECTS, 'Import OBJ Objects into Blender Objects'),\ + ('Group', SPLIT_GROUPS, 'Import OBJ Groups into Blender Objects'),\ + ('Material', SPLIT_MATERIALS, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)'),\ + 'Options...',\ + ('Keep Vert Order', KEEP_VERT_ORDER, 'Keep vert and face order, disables some other options.'),\ + ('Clamp Scale:', CLAMP_SIZE, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)'),\ + ('Image Search', IMAGE_SEARCH, 'Search subdirs for any assosiated images (Warning, may be slow)'),\ + ] + + if not Draw.PupBlock('Import OBJ...', pup_block): + return + + if KEEP_VERT_ORDER.val: + SPLIT_OBJECTS.val = False + SPLIT_GROUPS.val = False + SPLIT_MATERIALS.val = False + ''' + + + + # BEGIN ALTERNATIVE UI ******************* + if True: + + EVENT_NONE = 0 + EVENT_EXIT = 1 + EVENT_REDRAW = 2 + EVENT_IMPORT = 3 + + GLOBALS = {} + GLOBALS['EVENT'] = EVENT_REDRAW + #GLOBALS['MOUSE'] = Window.GetMouseCoords() + GLOBALS['MOUSE'] = [i/2 for i in Window.GetScreenSize()] + + def obj_ui_set_event(e,v): + GLOBALS['EVENT'] = e + + def do_split(e,v): + global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS + if SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val: + KEEP_VERT_ORDER.val = 0 + POLYGROUPS.val = 0 + else: + KEEP_VERT_ORDER.val = 1 + + def do_vertorder(e,v): + global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER + if KEEP_VERT_ORDER.val: + SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0 + else: + if not (SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val): + KEEP_VERT_ORDER.val = 1 + + def do_polygroups(e,v): + global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS + if POLYGROUPS.val: + SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0 + + def do_help(e,v): + url = __url__[0] + print('Trying to open web browser with documentation at this address...') + print('\t' + url) + + try: + import webbrowser + webbrowser.open(url) + except: + print('...could not open a browser window.') + + def obj_ui(): + ui_x, ui_y = GLOBALS['MOUSE'] + + # Center based on overall pup size + ui_x -= 165 + ui_y -= 90 + + global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90 + + Draw.Label('Import...', ui_x+9, ui_y+159, 220, 21) + Draw.BeginAlign() + CREATE_SMOOTH_GROUPS = Draw.Toggle('Smooth Groups', EVENT_NONE, ui_x+9, ui_y+139, 110, 20, CREATE_SMOOTH_GROUPS.val, 'Surround smooth groups by sharp edges') + CREATE_FGONS = Draw.Toggle('NGons as FGons', EVENT_NONE, ui_x+119, ui_y+139, 110, 20, CREATE_FGONS.val, 'Import faces with more then 4 verts as fgons') + CREATE_EDGES = Draw.Toggle('Lines as Edges', EVENT_NONE, ui_x+229, ui_y+139, 110, 20, CREATE_EDGES.val, 'Import lines and faces with 2 verts as edges') + Draw.EndAlign() + + Draw.Label('Separate objects by OBJ...', ui_x+9, ui_y+110, 220, 20) + Draw.BeginAlign() + SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 55, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split) + SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+64, ui_y+89, 55, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split) + SPLIT_MATERIALS = Draw.Toggle('Material', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)', do_split) + Draw.EndAlign() + + # Only used for user feedback + KEEP_VERT_ORDER = Draw.Toggle('Keep Vert Order', EVENT_REDRAW, ui_x+184, ui_y+89, 113, 21, KEEP_VERT_ORDER.val, 'Keep vert and face order, disables split options, enable for morph targets', do_vertorder) + + ROTATE_X90 = Draw.Toggle('-X90', EVENT_REDRAW, ui_x+302, ui_y+89, 38, 21, ROTATE_X90.val, 'Rotate X 90.') + + Draw.Label('Options...', ui_x+9, ui_y+60, 211, 20) + CLAMP_SIZE = Draw.Number('Clamp Scale: ', EVENT_NONE, ui_x+9, ui_y+39, 130, 21, CLAMP_SIZE.val, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)') + POLYGROUPS = Draw.Toggle('Poly Groups', EVENT_REDRAW, ui_x+144, ui_y+39, 90, 21, POLYGROUPS.val, 'Import OBJ groups as vertex groups.', do_polygroups) + IMAGE_SEARCH = Draw.Toggle('Image Search', EVENT_NONE, ui_x+239, ui_y+39, 100, 21, IMAGE_SEARCH.val, 'Search subdirs for any assosiated images (Warning, may be slow)') + Draw.BeginAlign() + Draw.PushButton('Online Help', EVENT_REDRAW, ui_x+9, ui_y+9, 110, 21, 'Load the wiki page for this script', do_help) + Draw.PushButton('Cancel', EVENT_EXIT, ui_x+119, ui_y+9, 110, 21, '', obj_ui_set_event) + Draw.PushButton('Import', EVENT_IMPORT, ui_x+229, ui_y+9, 110, 21, 'Import with these settings', obj_ui_set_event) + Draw.EndAlign() + + + # hack so the toggle buttons redraw. this is not nice at all + while GLOBALS['EVENT'] not in (EVENT_EXIT, EVENT_IMPORT): + Draw.UIBlock(obj_ui, 0) + + if GLOBALS['EVENT'] != EVENT_IMPORT: + return + + # END ALTERNATIVE UI ********************* + + + + + + + + Window.WaitCursor(1) + + if BATCH_LOAD: # load the dir + try: + files= [ f for f in os.listdir(filepath) if f.lower().endswith('.obj') ] + except: + Window.WaitCursor(0) + Draw.PupMenu('Error%t|Could not open path ' + filepath) + return + + if not files: + Window.WaitCursor(0) + Draw.PupMenu('Error%t|No files at path ' + filepath) + return + + for f in files: + scn= bpy.data.scenes.new( stripExt(f) ) + scn.makeCurrent() + + load_obj(sys.join(filepath, f),\ + CLAMP_SIZE.val,\ + CREATE_FGONS.val,\ + CREATE_SMOOTH_GROUPS.val,\ + CREATE_EDGES.val,\ + SPLIT_OBJECTS.val,\ + SPLIT_GROUPS.val,\ + SPLIT_MATERIALS.val,\ + ROTATE_X90.val,\ + IMAGE_SEARCH.val,\ + POLYGROUPS.val + ) + + else: # Normal load + load_obj(filepath,\ + CLAMP_SIZE.val,\ + CREATE_FGONS.val,\ + CREATE_SMOOTH_GROUPS.val,\ + CREATE_EDGES.val,\ + SPLIT_OBJECTS.val,\ + SPLIT_GROUPS.val,\ + SPLIT_MATERIALS.val,\ + ROTATE_X90.val,\ + IMAGE_SEARCH.val,\ + POLYGROUPS.val + ) + + Window.WaitCursor(0) def load_obj_ui_batch(file): - load_obj_ui(file, True) + load_obj_ui(file, True) DEBUG= False @@ -1544,82 +1544,82 @@ DEBUG= False # else: # Window.FileSelector(load_obj_ui, 'Import a Wavefront OBJ', '*.obj') - # For testing compatibility + # For testing compatibility ''' else: - # DEBUG ONLY - TIME= sys.time() - DIR = '/fe/obj' - import os - print 'Searching for files' - def fileList(path): - for dirpath, dirnames, filenames in os.walk(path): - for filename in filenames: - yield os.path.join(dirpath, filename) - - files = [f for f in fileList(DIR) if f.lower().endswith('.obj')] - files.sort() - - for i, obj_file in enumerate(files): - if 0 < i < 20: - print 'Importing', obj_file, '\nNUMBER', i, 'of', len(files) - newScn= bpy.data.scenes.new(os.path.basename(obj_file)) - newScn.makeCurrent() - load_obj(obj_file, False, IMAGE_SEARCH=0) - - print 'TOTAL TIME: %.6f' % (sys.time() - TIME) + # DEBUG ONLY + TIME= sys.time() + DIR = '/fe/obj' + import os + print 'Searching for files' + def fileList(path): + for dirpath, dirnames, filenames in os.walk(path): + for filename in filenames: + yield os.path.join(dirpath, filename) + + files = [f for f in fileList(DIR) if f.lower().endswith('.obj')] + files.sort() + + for i, obj_file in enumerate(files): + if 0 < i < 20: + print 'Importing', obj_file, '\nNUMBER', i, 'of', len(files) + newScn= bpy.data.scenes.new(os.path.basename(obj_file)) + newScn.makeCurrent() + load_obj(obj_file, False, IMAGE_SEARCH=0) + + print 'TOTAL TIME: %.6f' % (sys.time() - TIME) ''' from bpy.props import * class IMPORT_OT_obj(bpy.types.Operator): - '''Load a Wavefront OBJ File.''' - bl_idname = "import_scene.obj" - bl_label = "Import OBJ" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - - path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") - - CREATE_SMOOTH_GROUPS = BoolProperty(name="Smooth Groups", description="Surround smooth groups by sharp edges", default= True) - CREATE_FGONS = BoolProperty(name="NGons as FGons", description="Import faces with more then 4 verts as fgons", default= True) - CREATE_EDGES = BoolProperty(name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True) - SPLIT_OBJECTS = BoolProperty(name="Object", description="Import OBJ Objects into Blender Objects", default= True) - SPLIT_GROUPS = BoolProperty(name="Group", description="Import OBJ Groups into Blender Objects", default= True) - SPLIT_MATERIALS = BoolProperty(name="Material", description="Import each material into a seperate mesh (Avoids > 16 per mesh error)", default= True) - # old comment: only used for user feedback - # disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj - # KEEP_VERT_ORDER = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True) - ROTATE_X90 = BoolProperty(name="-X90", description="Rotate X 90.", default= True) - CLAMP_SIZE = FloatProperty(name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.01, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0) - POLYGROUPS = BoolProperty(name="Poly Groups", description="Import OBJ groups as vertex groups.", default= True) - IMAGE_SEARCH = BoolProperty(name="Image Search", description="Search subdirs for any assosiated images (Warning, may be slow)", default= True) - - - def execute(self, context): - # print("Selected: " + context.active_object.name) - - load_obj(self.properties.path, - context, - self.properties.CLAMP_SIZE, - self.properties.CREATE_FGONS, - self.properties.CREATE_SMOOTH_GROUPS, - self.properties.CREATE_EDGES, - self.properties.SPLIT_OBJECTS, - self.properties.SPLIT_GROUPS, - self.properties.SPLIT_MATERIALS, - self.properties.ROTATE_X90, - self.properties.IMAGE_SEARCH, - self.properties.POLYGROUPS) - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) - return ('RUNNING_MODAL',) + '''Load a Wavefront OBJ File.''' + bl_idname = "import_scene.obj" + bl_label = "Import OBJ" + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + + path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + + CREATE_SMOOTH_GROUPS = BoolProperty(name="Smooth Groups", description="Surround smooth groups by sharp edges", default= True) + CREATE_FGONS = BoolProperty(name="NGons as FGons", description="Import faces with more then 4 verts as fgons", default= True) + CREATE_EDGES = BoolProperty(name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True) + SPLIT_OBJECTS = BoolProperty(name="Object", description="Import OBJ Objects into Blender Objects", default= True) + SPLIT_GROUPS = BoolProperty(name="Group", description="Import OBJ Groups into Blender Objects", default= True) + SPLIT_MATERIALS = BoolProperty(name="Material", description="Import each material into a seperate mesh (Avoids > 16 per mesh error)", default= True) + # old comment: only used for user feedback + # disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj + # KEEP_VERT_ORDER = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True) + ROTATE_X90 = BoolProperty(name="-X90", description="Rotate X 90.", default= True) + CLAMP_SIZE = FloatProperty(name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.01, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0) + POLYGROUPS = BoolProperty(name="Poly Groups", description="Import OBJ groups as vertex groups.", default= True) + IMAGE_SEARCH = BoolProperty(name="Image Search", description="Search subdirs for any assosiated images (Warning, may be slow)", default= True) + + + def execute(self, context): + # print("Selected: " + context.active_object.name) + + load_obj(self.properties.path, + context, + self.properties.CLAMP_SIZE, + self.properties.CREATE_FGONS, + self.properties.CREATE_SMOOTH_GROUPS, + self.properties.CREATE_EDGES, + self.properties.SPLIT_OBJECTS, + self.properties.SPLIT_GROUPS, + self.properties.SPLIT_MATERIALS, + self.properties.ROTATE_X90, + self.properties.IMAGE_SEARCH, + self.properties.POLYGROUPS) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) bpy.ops.add(IMPORT_OT_obj) -- cgit v1.2.3 From 58808a7befc403dfef341317f864bca36364cbc7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 14:04:36 +0000 Subject: remove inline cleanName function, use bpy.utils.clean_name --- release/scripts/io/engine_render_pov.py | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index 1c124766044..adff98ce9c4 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -41,20 +41,6 @@ def write_pov(filename, scene=None, info_callback = None): render = scene.render_data world = scene.world - # --- taken from fbx exporter - ## This was used to make V, but faster not to do all that - ##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}' - ##v = range(255) - ##for c in valid: v.remove(ord(c)) - v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,46,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] - invalid = ''.join([chr(i) for i in v]) - def cleanName(name): - for ch in invalid: name = name.replace(ch, '_') - return name - del v - - # --- done with clean name. - def uniqueName(name, nameSeq): if name not in nameSeq: @@ -95,7 +81,7 @@ def write_pov(filename, scene=None, info_callback = None): else: name_orig = DEF_MAT_NAME - name = materialNames[name_orig] = uniqueName(cleanName(name_orig), materialNames) + name = materialNames[name_orig] = uniqueName(bpy.utils.clean_name(name_orig), materialNames) file.write('#declare %s = finish {\n' % name) -- cgit v1.2.3 From 1add5b58e8e290003a40cf3a123af22703c2fb3b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 14:13:25 +0000 Subject: mesh.faces.active attribute for Michael Williamson to help port 2.4x UV unwrap scripts --- source/blender/makesrna/intern/rna_mesh.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 355314f5c92..3163f38af3d 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1517,6 +1517,27 @@ void rna_def_texmat_common(StructRNA *srna, const char *texspace_editable) RNA_def_property_ui_text(prop, "Materials", ""); } + +/* scene.objects */ +static void rna_def_mesh_faces(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + PropertyRNA *prop; + +// FunctionRNA *func; +// PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MeshFaces"); + srna= RNA_def_struct(brna, "MeshFaces", NULL); + RNA_def_struct_sdna(srna, "Mesh"); + RNA_def_struct_ui_text(srna, "Mesh Faces", "Collection of mesh faces."); + + prop= RNA_def_property(srna, "active", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "act_face"); + RNA_def_property_ui_text(prop, "Active Face", "The active face for this mesh"); +} + + static void rna_def_mesh(BlenderRNA *brna) { StructRNA *srna; @@ -1540,6 +1561,7 @@ static void rna_def_mesh(BlenderRNA *brna) RNA_def_property_collection_sdna(prop, NULL, "mface", "totface"); RNA_def_property_struct_type(prop, "MeshFace"); RNA_def_property_ui_text(prop, "Faces", "Faces of the mesh."); + rna_def_mesh_faces(brna, prop); prop= RNA_def_property(srna, "sticky", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "msticky", "totvert"); -- cgit v1.2.3 From 7fc4ab2aab403e5db27c7dc7097c8db8afc2cfe8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 14:38:30 +0000 Subject: add pep8 headers so these scripts spit out errors when running pep8. made some changes but mostly these scripts will give pep8 warnings. --- release/datafiles/datatoc.py | 7 +- release/getversion.py | 42 +- release/scripts/io/engine_render_pov.py | 2 + release/scripts/io/export_3ds.py | 2 + release/scripts/io/export_fbx.py | 2 + release/scripts/io/export_mdd.py | 2 + release/scripts/io/export_obj.py | 2 + release/scripts/io/export_ply.py | 2 + release/scripts/io/export_x3d.py | 2 + release/scripts/io/import_anim_bvh.py | 20 + release/scripts/io/import_scene_3ds.py | 2 + release/scripts/io/import_scene_obj.py | 2 + release/scripts/modules/console/__init__.py | 2 + .../scripts/modules/console/complete_calltip.py | 2 + release/scripts/modules/console/complete_import.py | 2 + .../scripts/modules/console/complete_namespace.py | 2 + release/scripts/modules/console/intellisense.py | 2 + release/scripts/op/mesh.py | 2 + release/scripts/op/mesh_skin.py | 2 + release/scripts/op/presets.py | 7 +- release/scripts/op/uvcalc_smart_project.py | 1 + release/scripts/op/vertexpaint_dirt.py | 2 + release/scripts/ui/space_dopesheet.py | 2 + release/scripts/ui/space_graph.py | 2 + release/scripts/ui/space_nla.py | 2 + release/test/rna_array.py | 428 +++++++++++---------- 26 files changed, 309 insertions(+), 236 deletions(-) diff --git a/release/datafiles/datatoc.py b/release/datafiles/datatoc.py index a78b64c5095..8a0e5290cb5 100755 --- a/release/datafiles/datatoc.py +++ b/release/datafiles/datatoc.py @@ -24,7 +24,10 @@ # # ***** END GPL LICENCE BLOCK ***** -import sys, os +# + +import sys +import os if len(sys.argv) < 2: sys.stdout.write("Usage: datatoc \n") @@ -33,7 +36,7 @@ if len(sys.argv) < 2: filename = sys.argv[1] try: - fpin = open(filename, "rb"); + fpin = open(filename, "rb") except: sys.stdout.write("Unable to open input %s\n" % sys.argv[1]) sys.exit(1) diff --git a/release/getversion.py b/release/getversion.py index fd52129bf4a..a9bf3b1d04e 100755 --- a/release/getversion.py +++ b/release/getversion.py @@ -24,15 +24,19 @@ # The Original Code is: see repository. # # Contributor(s): see repository. -# -import sys, os, re -nanblenderhome = os.getenv("NANBLENDERHOME"); +# + +import sys +import os +import re + +nanblenderhome = os.getenv("NANBLENDERHOME") if nanblenderhome == None: - nanblenderhome = os.path.dirname(os.path.abspath(sys.argv[0]))+"/.." + nanblenderhome = os.path.dirname(os.path.abspath(sys.argv[0])) + "/.." -config = nanblenderhome+"/source/blender/blenkernel/BKE_blender.h" +config = nanblenderhome + "/source/blender/blenkernel/BKE_blender.h" infile = open(config) @@ -40,23 +44,23 @@ major = None minor = None for line in infile.readlines(): - m = re.search("#define BLENDER_VERSION\s+(\d+)", line) - if m: - major = m.group(1) - m = re.search("#define BLENDER_SUBVERSION\s+(\d+)", line) - if m: - minor = m.group(1) - if minor and major: - major = float(major) / 100.0 - break + m = re.search("#define BLENDER_VERSION\s+(\d+)", line) + if m: + major = m.group(1) + m = re.search("#define BLENDER_SUBVERSION\s+(\d+)", line) + if m: + minor = m.group(1) + if minor and major: + major = float(major) / 100.0 + break infile.close() # Major was changed to float, but minor is still a string if minor and major: - if minor == "0": - print "%.2f" % major - else: - print "%.2f.%s" % (major, minor) + if minor == "0": + print "%.2f" % major + else: + print "%.2f.%s" % (major, minor) else: - print "unknownversion" + print "unknownversion" diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index adff98ce9c4..d5f02fa3b6a 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy from math import atan, pi, degrees diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index ad8ffac1147..edbb80b0272 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -17,6 +17,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__ = ["Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"] __url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/") __version__ = "0.90a" diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index e0a0367f18e..97af4cb6ebf 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__ = "Campbell Barton" __url__ = ['www.blender.org', 'blenderartists.org'] __version__ = "1.2" diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 98d87ef6a7f..fc85b2996d0 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__ = "Bill L.Nieuwendorp" __bpydoc__ = """\ This script Exports Lightwaves MotionDesigner format. diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 37ade121311..d6026d10ba9 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + """ Name: 'Wavefront (.obj)...' Blender: 248 diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index f2cf04ae792..ed85c7fc6d9 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy __author__ = "Bruce Merry" diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 969c4cf0752..6cfe0f45626 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__ = ("Bart", "Campbell Barton") __email__ = ["Bart, bart:neeneenee*de"] __url__ = ["Author's (Bart) homepage, http://www.neeneenee.de/vrml"] diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index a7e621a61a7..a8fe887b950 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -1,3 +1,23 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + import math # import Blender diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 6255c80b3a3..4744c5df01a 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__= ['Bob Holcomb', 'Richard L?rk?ng', 'Damien McGinnes', 'Campbell Barton', 'Mario Lapin'] __url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/") __version__= '0.996' diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index a94e0f5e22d..cbd2b831e55 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + __author__= "Campbell Barton", "Jiri Hnidek", "Paolo Ciccone" __url__= ['http://wiki.blender.org/index.php/Scripts/Manual/Import/wavefront_obj', 'blender.org', 'blenderartists.org'] __version__= "2.11" diff --git a/release/scripts/modules/console/__init__.py b/release/scripts/modules/console/__init__.py index eb32d78b1ef..efd2ed85acc 100644 --- a/release/scripts/modules/console/__init__.py +++ b/release/scripts/modules/console/__init__.py @@ -13,4 +13,6 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . +# + """Package for console specific modules.""" diff --git a/release/scripts/modules/console/complete_calltip.py b/release/scripts/modules/console/complete_calltip.py index 486f9469d60..c4687b4f10b 100644 --- a/release/scripts/modules/console/complete_calltip.py +++ b/release/scripts/modules/console/complete_calltip.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . +# + import inspect import re diff --git a/release/scripts/modules/console/complete_import.py b/release/scripts/modules/console/complete_import.py index 65a507b349d..875c557f497 100644 --- a/release/scripts/modules/console/complete_import.py +++ b/release/scripts/modules/console/complete_import.py @@ -21,6 +21,8 @@ # the file COPYING, distributed as part of this software. #***************************************************************************** +# + """Completer for import statements Original code was from IPython/Extensions/ipy_completers.py. The following diff --git a/release/scripts/modules/console/complete_namespace.py b/release/scripts/modules/console/complete_namespace.py index 4aa0de558f2..7a9fd331e49 100644 --- a/release/scripts/modules/console/complete_namespace.py +++ b/release/scripts/modules/console/complete_namespace.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . +# + """Autocomplete with the standard library""" import re diff --git a/release/scripts/modules/console/intellisense.py b/release/scripts/modules/console/intellisense.py index 686b3e7294b..96896d5fd0e 100644 --- a/release/scripts/modules/console/intellisense.py +++ b/release/scripts/modules/console/intellisense.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . +# + """This module provides intellisense features such as: * autocompletion diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py index 0e57bc440d1..6ca03b409f0 100644 --- a/release/scripts/op/mesh.py +++ b/release/scripts/op/mesh.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy def main(context): diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index 5cf526cc23e..436cd21c9ee 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + # import Blender import time, functools import bpy diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 0ce19f712ab..0f6d5e11b5c 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -16,9 +16,12 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy import os + class AddPresetBase(bpy.types.Operator): '''Base preset class, only for subclassing subclasses must define @@ -27,7 +30,7 @@ class AddPresetBase(bpy.types.Operator): bl_idname = "render.preset_add" bl_label = "Add Render Preset" - name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "") + name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen=64, default="") def _as_filename(self, name): # could reuse for other presets for char in " !@#$%^&*(){}:\";'[]<>,./?": @@ -104,6 +107,7 @@ class AddPresetSSS(AddPresetBase): preset_subdir = "sss" + class AddPresetCloth(AddPresetBase): '''Add a Cloth Preset.''' bl_idname = "cloth.preset_add" @@ -124,4 +128,3 @@ class AddPresetCloth(AddPresetBase): bpy.ops.add(AddPresetRender) bpy.ops.add(AddPresetSSS) bpy.ops.add(AddPresetCloth) - diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 2da7174ed99..0dd1f8b1e08 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -20,6 +20,7 @@ # ***** END GPL LICENCE BLOCK ***** # -------------------------------------------------------------------------- +# #from Blender import Object, Draw, Window, sys, Mesh, Geometry from Mathutils import Matrix, Vector, RotationMatrix diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index 585a2231e21..b4b30fed06f 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -19,6 +19,8 @@ # ***** END GPL LICENCE BLOCK ***** # -------------------------------------------------------------------------- +# + # History # # Originally written by Campbell Barton aka ideasman42 diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py index f9381432e27..4710d9de3aa 100644 --- a/release/scripts/ui/space_dopesheet.py +++ b/release/scripts/ui/space_dopesheet.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py index 57e42f9d48c..d97fa2bfeed 100644 --- a/release/scripts/ui/space_graph.py +++ b/release/scripts/ui/space_graph.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py index 622ebb42ab7..285ada5f46e 100644 --- a/release/scripts/ui/space_nla.py +++ b/release/scripts/ui/space_nla.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import bpy diff --git a/release/test/rna_array.py b/release/test/rna_array.py index 08aea1c7967..6c6539f5509 100644 --- a/release/test/rna_array.py +++ b/release/test/rna_array.py @@ -16,6 +16,8 @@ # # ##### END GPL LICENSE BLOCK ##### +# + import unittest import random @@ -29,269 +31,269 @@ test= bpy.data.test # same as above for other types except that the first letter is "i" for int and "b" for bool class TestArray(unittest.TestCase): - # test that assignment works by: assign -> test value - # - rvalue = list of float - # - rvalue = list of numbers - # test.object - # bpy.data.test.farr[3], iarr[3], barr[...], fmarr, imarr, bmarr - - def setUp(self): - test.farr= (1.0, 2.0, 3.0) - test.iarr= (7, 8, 9) - test.barr= (False, True, False) - - # test access - # test slice access, negative indices - def test_access(self): - rvals= ([1.0, 2.0, 3.0], [7, 8, 9], [False, True, False]) - for arr, rval in zip((test.farr, test.iarr, test.barr), rvals): - self.assertEqual(prop_to_list(arr), rval) - self.assertEqual(arr[0:3], rval) - self.assertEqual(arr[1:2], rval[1:2]) - self.assertEqual(arr[-1], arr[2]) - self.assertEqual(arr[-2], arr[1]) - self.assertEqual(arr[-3], arr[0]) - - # fail when index out of bounds - def test_access_fail(self): - for arr in (test.farr, test.iarr, test.barr): - self.assertRaises(IndexError, lambda : arr[4]) - - # test assignment of a whole array - def test_assign_array(self): - # should accept int as float - test.farr= (1, 2, 3) - - # fail when: unexpected no. of items, invalid item type - def test_assign_array_fail(self): - def assign_empty_list(arr): - setattr(test, arr, ()) - - for arr in ("farr", "iarr", "barr"): - self.assertRaises(ValueError, assign_empty_list, arr) - - def assign_invalid_float(): - test.farr= (1.0, 2.0, "3.0") - - def assign_invalid_int(): - test.iarr= ("1", 2, 3) - - def assign_invalid_bool(): - test.barr= (True, 0.123, False) - - for func in [assign_invalid_float, assign_invalid_int, assign_invalid_bool]: - self.assertRaises(TypeError, func) - - # shouldn't accept float as int - def assign_float_as_int(): - test.iarr= (1, 2, 3.0) - self.assertRaises(TypeError, assign_float_as_int) - - # non-dynamic arrays cannot change size - def assign_different_size(arr, val): - setattr(test, arr, val) - for arr, val in zip(("iarr", "farr", "barr"), ((1, 2), (1.0, 2.0), (True, False))): - self.assertRaises(ValueError, assign_different_size, arr, val) - - # test assignment of specific items - def test_assign_item(self): - for arr, rand_func in zip((test.farr, test.iarr, test.barr), (rand_float, rand_int, rand_bool)): - for i in range(len(arr)): - val= rand_func() - arr[i]= val - - self.assertEqual(arr[i], val) - - # float prop should accept also int - for i in range(len(test.farr)): - val= rand_int() - test.farr[i]= val - self.assertEqual(test.farr[i], float(val)) - - # - - def test_assign_item_fail(self): - def assign_bad_index(arr): - arr[4] = 1.0 - - def assign_bad_type(arr): - arr[1]= "123" - - for arr in [test.farr, test.iarr, test.barr]: - self.assertRaises(IndexError, assign_bad_index, arr) - - # not testing bool because bool allows not only (True|False) - for arr in [test.farr, test.iarr]: - self.assertRaises(TypeError, assign_bad_type, arr) - - def test_dynamic_assign_array(self): - # test various lengths here - for arr, rand_func in zip(("fdarr", "idarr", "bdarr"), (rand_float, rand_int, rand_bool)): - for length in range(1, 64): - rval= make_random_array(length, rand_func) - setattr(test, arr, rval) - self.assertEqual(prop_to_list(getattr(test, arr)), rval) - - def test_dynamic_assign_array_fail(self): - # could also test too big length here - - def assign_empty_list(arr): - setattr(test, arr, ()) - - for arr in ("fdarr", "idarr", "bdarr"): - self.assertRaises(ValueError, assign_empty_list, arr) + # test that assignment works by: assign -> test value + # - rvalue = list of float + # - rvalue = list of numbers + # test.object + # bpy.data.test.farr[3], iarr[3], barr[...], fmarr, imarr, bmarr + + def setUp(self): + test.farr= (1.0, 2.0, 3.0) + test.iarr= (7, 8, 9) + test.barr= (False, True, False) + + # test access + # test slice access, negative indices + def test_access(self): + rvals= ([1.0, 2.0, 3.0], [7, 8, 9], [False, True, False]) + for arr, rval in zip((test.farr, test.iarr, test.barr), rvals): + self.assertEqual(prop_to_list(arr), rval) + self.assertEqual(arr[0:3], rval) + self.assertEqual(arr[1:2], rval[1:2]) + self.assertEqual(arr[-1], arr[2]) + self.assertEqual(arr[-2], arr[1]) + self.assertEqual(arr[-3], arr[0]) + + # fail when index out of bounds + def test_access_fail(self): + for arr in (test.farr, test.iarr, test.barr): + self.assertRaises(IndexError, lambda : arr[4]) + + # test assignment of a whole array + def test_assign_array(self): + # should accept int as float + test.farr= (1, 2, 3) + + # fail when: unexpected no. of items, invalid item type + def test_assign_array_fail(self): + def assign_empty_list(arr): + setattr(test, arr, ()) + + for arr in ("farr", "iarr", "barr"): + self.assertRaises(ValueError, assign_empty_list, arr) + + def assign_invalid_float(): + test.farr= (1.0, 2.0, "3.0") + + def assign_invalid_int(): + test.iarr= ("1", 2, 3) + + def assign_invalid_bool(): + test.barr= (True, 0.123, False) + + for func in [assign_invalid_float, assign_invalid_int, assign_invalid_bool]: + self.assertRaises(TypeError, func) + + # shouldn't accept float as int + def assign_float_as_int(): + test.iarr= (1, 2, 3.0) + self.assertRaises(TypeError, assign_float_as_int) + + # non-dynamic arrays cannot change size + def assign_different_size(arr, val): + setattr(test, arr, val) + for arr, val in zip(("iarr", "farr", "barr"), ((1, 2), (1.0, 2.0), (True, False))): + self.assertRaises(ValueError, assign_different_size, arr, val) + + # test assignment of specific items + def test_assign_item(self): + for arr, rand_func in zip((test.farr, test.iarr, test.barr), (rand_float, rand_int, rand_bool)): + for i in range(len(arr)): + val= rand_func() + arr[i]= val + + self.assertEqual(arr[i], val) + + # float prop should accept also int + for i in range(len(test.farr)): + val= rand_int() + test.farr[i]= val + self.assertEqual(test.farr[i], float(val)) + + # + + def test_assign_item_fail(self): + def assign_bad_index(arr): + arr[4] = 1.0 + + def assign_bad_type(arr): + arr[1]= "123" + + for arr in [test.farr, test.iarr, test.barr]: + self.assertRaises(IndexError, assign_bad_index, arr) + + # not testing bool because bool allows not only (True|False) + for arr in [test.farr, test.iarr]: + self.assertRaises(TypeError, assign_bad_type, arr) + + def test_dynamic_assign_array(self): + # test various lengths here + for arr, rand_func in zip(("fdarr", "idarr", "bdarr"), (rand_float, rand_int, rand_bool)): + for length in range(1, 64): + rval= make_random_array(length, rand_func) + setattr(test, arr, rval) + self.assertEqual(prop_to_list(getattr(test, arr)), rval) + + def test_dynamic_assign_array_fail(self): + # could also test too big length here + + def assign_empty_list(arr): + setattr(test, arr, ()) + + for arr in ("fdarr", "idarr", "bdarr"): + self.assertRaises(ValueError, assign_empty_list, arr) class TestMArray(unittest.TestCase): - def setUp(self): - # reset dynamic array sizes - for arr, func in zip(("fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool)): - setattr(test, arr, make_random_3d_array((3, 4, 5), func)) + def setUp(self): + # reset dynamic array sizes + for arr, func in zip(("fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool)): + setattr(test, arr, make_random_3d_array((3, 4, 5), func)) - # test assignment - def test_assign_array(self): - for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): - # assignment of [3][4][5] - rval= make_random_3d_array((3, 4, 5), func) - setattr(test, arr, rval) - self.assertEqual(prop_to_list(getattr(test, arr)), rval) + # test assignment + def test_assign_array(self): + for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): + # assignment of [3][4][5] + rval= make_random_3d_array((3, 4, 5), func) + setattr(test, arr, rval) + self.assertEqual(prop_to_list(getattr(test, arr)), rval) - # test assignment of [2][4][5], [1][4][5] should work on dynamic arrays + # test assignment of [2][4][5], [1][4][5] should work on dynamic arrays - def test_assign_array_fail(self): - def assign_empty_array(): - test.fmarr= () - self.assertRaises(ValueError, assign_empty_array) + def test_assign_array_fail(self): + def assign_empty_array(): + test.fmarr= () + self.assertRaises(ValueError, assign_empty_array) - def assign_invalid_size(arr, rval): - setattr(test, arr, rval) + def assign_invalid_size(arr, rval): + setattr(test, arr, rval) - # assignment of 3,4,4 or 3,3,5 should raise ex - for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): - rval= make_random_3d_array((3, 4, 4), func) - self.assertRaises(ValueError, assign_invalid_size, arr, rval) + # assignment of 3,4,4 or 3,3,5 should raise ex + for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): + rval= make_random_3d_array((3, 4, 4), func) + self.assertRaises(ValueError, assign_invalid_size, arr, rval) - rval= make_random_3d_array((3, 3, 5), func) - self.assertRaises(ValueError, assign_invalid_size, arr, rval) + rval= make_random_3d_array((3, 3, 5), func) + self.assertRaises(ValueError, assign_invalid_size, arr, rval) - rval= make_random_3d_array((3, 3, 3), func) - self.assertRaises(ValueError, assign_invalid_size, arr, rval) + rval= make_random_3d_array((3, 3, 3), func) + self.assertRaises(ValueError, assign_invalid_size, arr, rval) - def test_assign_item(self): - # arr[i] = x - for arr, func in zip(("fmarr", "imarr", "bmarr", "fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool) * 2): - rval= make_random_2d_array((4, 5), func) + def test_assign_item(self): + # arr[i] = x + for arr, func in zip(("fmarr", "imarr", "bmarr", "fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool) * 2): + rval= make_random_2d_array((4, 5), func) - for i in range(3): - getattr(test, arr)[i]= rval - self.assertEqual(prop_to_list(getattr(test, arr)[i]), rval) + for i in range(3): + getattr(test, arr)[i]= rval + self.assertEqual(prop_to_list(getattr(test, arr)[i]), rval) - # arr[i][j] = x - for arr, func in zip(("fmarr", "imarr", "bmarr", "fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool) * 2): + # arr[i][j] = x + for arr, func in zip(("fmarr", "imarr", "bmarr", "fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool) * 2): - arr= getattr(test, arr) - rval= make_random_array(5, func) + arr= getattr(test, arr) + rval= make_random_array(5, func) - for i in range(3): - for j in range(4): - arr[i][j]= rval - self.assertEqual(prop_to_list(arr[i][j]), rval) + for i in range(3): + for j in range(4): + arr[i][j]= rval + self.assertEqual(prop_to_list(arr[i][j]), rval) - def test_assign_item_fail(self): - def assign_wrong_size(arr, i, rval): - getattr(test, arr)[i]= rval + def test_assign_item_fail(self): + def assign_wrong_size(arr, i, rval): + getattr(test, arr)[i]= rval - # assign wrong size at level 2 - for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): - rval1= make_random_2d_array((3, 5), func) - rval2= make_random_2d_array((4, 3), func) + # assign wrong size at level 2 + for arr, func in zip(("fmarr", "imarr", "bmarr"), (rand_float, rand_int, rand_bool)): + rval1= make_random_2d_array((3, 5), func) + rval2= make_random_2d_array((4, 3), func) - for i in range(3): - self.assertRaises(ValueError, assign_wrong_size, arr, i, rval1) - self.assertRaises(ValueError, assign_wrong_size, arr, i, rval2) + for i in range(3): + self.assertRaises(ValueError, assign_wrong_size, arr, i, rval1) + self.assertRaises(ValueError, assign_wrong_size, arr, i, rval2) - def test_dynamic_assign_array(self): - for arr, func in zip(("fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool)): - # assignment of [3][4][5] - rval= make_random_3d_array((3, 4, 5), func) - setattr(test, arr, rval) - self.assertEqual(prop_to_list(getattr(test, arr)), rval) + def test_dynamic_assign_array(self): + for arr, func in zip(("fdmarr", "idmarr", "bdmarr"), (rand_float, rand_int, rand_bool)): + # assignment of [3][4][5] + rval= make_random_3d_array((3, 4, 5), func) + setattr(test, arr, rval) + self.assertEqual(prop_to_list(getattr(test, arr)), rval) - # [2][4][5] - rval= make_random_3d_array((2, 4, 5), func) - setattr(test, arr, rval) - self.assertEqual(prop_to_list(getattr(test, arr)), rval) + # [2][4][5] + rval= make_random_3d_array((2, 4, 5), func) + setattr(test, arr, rval) + self.assertEqual(prop_to_list(getattr(test, arr)), rval) - # [1][4][5] - rval= make_random_3d_array((1, 4, 5), func) - setattr(test, arr, rval) - self.assertEqual(prop_to_list(getattr(test, arr)), rval) + # [1][4][5] + rval= make_random_3d_array((1, 4, 5), func) + setattr(test, arr, rval) + self.assertEqual(prop_to_list(getattr(test, arr)), rval) - # test access - def test_access(self): - pass + # test access + def test_access(self): + pass - # test slice access, negative indices - def test_access_fail(self): - pass + # test slice access, negative indices + def test_access_fail(self): + pass random.seed() def rand_int(): - return random.randint(-1000, 1000) + return random.randint(-1000, 1000) def rand_float(): - return float(rand_int()) + return float(rand_int()) def rand_bool(): - return bool(random.randint(0, 1)) + return bool(random.randint(0, 1)) def make_random_array(len, rand_func): - arr= [] - for i in range(len): - arr.append(rand_func()) - - return arr + arr= [] + for i in range(len): + arr.append(rand_func()) + + return arr def make_random_2d_array(dimsize, rand_func): - marr= [] - for i in range(dimsize[0]): - marr.append([]) + marr= [] + for i in range(dimsize[0]): + marr.append([]) - for j in range(dimsize[1]): - marr[-1].append(rand_func()) + for j in range(dimsize[1]): + marr[-1].append(rand_func()) - return marr + return marr def make_random_3d_array(dimsize, rand_func): - marr= [] - for i in range(dimsize[0]): - marr.append([]) + marr= [] + for i in range(dimsize[0]): + marr.append([]) - for j in range(dimsize[1]): - marr[-1].append([]) + for j in range(dimsize[1]): + marr[-1].append([]) - for k in range(dimsize[2]): - marr[-1][-1].append(rand_func()) + for k in range(dimsize[2]): + marr[-1][-1].append(rand_func()) - return marr + return marr def prop_to_list(prop): - ret= [] + ret= [] - for x in prop: - if type(x) not in (bool, int, float): - ret.append(prop_to_list(x)) - else: - ret.append(x) + for x in prop: + if type(x) not in (bool, int, float): + ret.append(prop_to_list(x)) + else: + ret.append(x) - return ret + return ret def suite(): - return unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(TestArray), unittest.TestLoader().loadTestsFromTestCase(TestMArray)]) + return unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(TestArray), unittest.TestLoader().loadTestsFromTestCase(TestMArray)]) if __name__ == "__main__": - unittest.TextTestRunner(verbosity=2).run(suite()) + unittest.TextTestRunner(verbosity=2).run(suite()) -- cgit v1.2.3 From abe8c09b8a98f8a4b71e47324b2c6b12624d5440 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 14:56:45 +0000 Subject: * renamed BKE_sequence.h and sequence.c --> sequencer * renamed util.c --> path_util.c since there are more then 1 of these files which makes setting breakpoints annoying. --- source/blender/blenkernel/BKE_sequence.h | 228 -- source/blender/blenkernel/BKE_sequencer.h | 228 ++ source/blender/blenkernel/intern/blender.c | 2 +- source/blender/blenkernel/intern/scene.c | 2 +- source/blender/blenkernel/intern/seqeffects.c | 2 +- source/blender/blenkernel/intern/sequence.c | 3758 -------------------- source/blender/blenkernel/intern/sequencer.c | 3758 ++++++++++++++++++++ source/blender/blenlib/intern/bpath.c | 2 +- source/blender/blenlib/intern/path_util.c | 1586 +++++++++ source/blender/blenlib/intern/util.c | 1586 --------- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/blenloader/intern/writefile.c | 2 +- source/blender/editors/gpencil/drawgpencil.c | 2 +- source/blender/editors/space_outliner/outliner.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 2 +- .../editors/space_sequencer/sequencer_draw.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 2 +- .../editors/space_sequencer/sequencer_select.c | 2 +- .../editors/space_sequencer/space_sequencer.c | 2 +- .../editors/transform/transform_conversions.c | 2 +- source/blender/makesrna/intern/rna_sequence.c | 2 +- source/blender/makesrna/intern/rna_space.c | 2 +- source/blender/render/intern/source/pipeline.c | 2 +- 23 files changed, 5589 insertions(+), 5589 deletions(-) delete mode 100644 source/blender/blenkernel/BKE_sequence.h create mode 100644 source/blender/blenkernel/BKE_sequencer.h delete mode 100644 source/blender/blenkernel/intern/sequence.c create mode 100644 source/blender/blenkernel/intern/sequencer.c create mode 100644 source/blender/blenlib/intern/path_util.c delete mode 100644 source/blender/blenlib/intern/util.c diff --git a/source/blender/blenkernel/BKE_sequence.h b/source/blender/blenkernel/BKE_sequence.h deleted file mode 100644 index 5b146cd5ecd..00000000000 --- a/source/blender/blenkernel/BKE_sequence.h +++ /dev/null @@ -1,228 +0,0 @@ -/** - * $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. 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. - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2004 Blender Foundation. - * All rights reserved. - * - * Contributor(s): Blender Foundation (2008). - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef BKE_SEQUENCE_H -#define BKE_SEQUENCE_H - -struct Editing; -struct Sequence; -struct Strip; -struct StripElem; -struct ImBuf; -struct Scene; -struct bContext; - -#define MAXSEQ 32 - -#define BUILD_SEQAR_COUNT_NOTHING 0 -#define BUILD_SEQAR_COUNT_CURRENT 1 -#define BUILD_SEQAR_COUNT_CHILDREN 2 - -/* sequence iterator */ - -typedef struct SeqIterator { - struct Sequence **array; - int tot, cur; - - struct Sequence *seq; - int valid; -} SeqIterator; - -void seq_begin(struct Editing *ed, SeqIterator *iter, int use_pointer); -void seq_next(SeqIterator *iter); -void seq_end(SeqIterator *iter); -void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int use_pointer); - -#define SEQP_BEGIN(ed, seq) \ -{ \ - SeqIterator iter;\ - for(seq_begin(ed, &iter, 1); iter.valid; seq_next(&iter)) { \ - seq= iter.seq; - -#define SEQ_BEGIN(ed, seq) \ - { \ - SeqIterator iter;\ - for(seq_begin(ed, &iter, 0); iter.valid; seq_next(&iter)) { \ - seq= iter.seq; - -#define SEQ_END \ - } \ - seq_end(&iter); \ - } - -#endif - - -/* Wipe effect */ -enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE, - DO_IRIS_WIPE,DO_CLOCK_WIPE}; - - -struct SeqEffectHandle { - /* constructors & destructor */ - /* init & init_plugin are _only_ called on first creation */ - void (*init)(struct Sequence *seq); - void (*init_plugin)(struct Sequence *seq, const char *fname); - - /* number of input strips needed - (called directly after construction) */ - int (*num_inputs)(); - - /* load is called first time after readblenfile in - get_sequence_effect automatically */ - void (*load)(struct Sequence *seq); - - /* duplicate */ - void (*copy)(struct Sequence *dst, struct Sequence *src); - - /* destruct */ - void (*free)(struct Sequence *seq); - - /* returns: -1: no input needed, - 0: no early out, - 1: out = ibuf1, - 2: out = ibuf2 */ - int (*early_out)(struct Sequence *seq, - float facf0, float facf1); - - /* stores the y-range of the effect IPO */ - void (*store_icu_yrange)(struct Sequence * seq, - short adrcode, float *ymin, float *ymax); - - /* stores the default facf0 and facf1 if no IPO is present */ - void (*get_default_fac)(struct Sequence *seq, int cfra, - float * facf0, float * facf1); - - /* execute the effect - sequence effects are only required to either support - float-rects or byte-rects - (mixed cases are handled one layer up...) */ - - void (*execute)(struct Scene *scene, struct Sequence *seq, int cfra, - float facf0, float facf1, - int x, int y, - struct ImBuf *ibuf1, struct ImBuf *ibuf2, - struct ImBuf *ibuf3, struct ImBuf *out); -}; - -/* ********************* prototypes *************** */ - -/* sequence.c */ -void printf_strip(struct Sequence *seq); - -// extern -void seq_free_sequence(struct Scene *scene, struct Sequence *seq); -void seq_free_strip(struct Strip *strip); -void seq_free_editing(struct Scene *scene); -struct Editing *seq_give_editing(struct Scene *scene, int alloc); -char *give_seqname(struct Sequence *seq); -struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); -struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); -struct ImBuf *give_ibuf_seq_direct(struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq); -void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size); -void calc_sequence(struct Sequence *seq); -void calc_sequence_disp(struct Sequence *seq); -void new_tstripdata(struct Sequence *seq); -void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq); -void sort_seq(struct Scene *scene); -void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq, - int (*test_func)(struct Sequence * seq)); -int evaluate_seq_frame(struct Scene *scene, int cfra); -struct StripElem *give_stripelem(struct Sequence *seq, int cfra); - -// intern? -void update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change); - -/* seqeffects.c */ -// intern? -struct SeqEffectHandle get_sequence_blend(struct Sequence *seq); -void sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, int force); - -// extern -struct SeqEffectHandle get_sequence_effect(struct Sequence *seq); -int get_sequence_effect_num_inputs(int seq_type); - -/* for transform but also could use elsewhere */ -int seq_tx_get_start(struct Sequence *seq); -int seq_tx_get_end(struct Sequence *seq); -int seq_tx_get_final_left(struct Sequence *seq, int metaclip); -int seq_tx_get_final_right(struct Sequence *seq, int metaclip); -void seq_tx_set_final_left(struct Sequence *seq, int val); -void seq_tx_set_final_right(struct Sequence *seq, int val); -void seq_tx_handle_xlimits(struct Sequence *seq, int leftflag, int rightflag); -int seq_tx_test(struct Sequence * seq); -int check_single_seq(struct Sequence *seq); -void fix_single_seq(struct Sequence *seq); -int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); -void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); -int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); -int shuffle_seq_time(ListBase * seqbasep); -void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); - -void seq_update_sound(struct Sequence *seq); -void seq_update_muting(struct Editing *ed); - -void clear_scene_in_allseqs(struct Scene *sce); - -struct Sequence *active_seq_get(struct Scene *scene); -void active_seq_set(struct Scene *scene, struct Sequence *seq); - -/* api for adding new sequence strips */ -typedef struct SeqLoadInfo { - int start_frame; - int channel; - int flag; /* use sound, replace sel */ - int type; - int tot_success; - int tot_error; - int len; /* only for image strips */ - char path[512]; - char name[32]; -} SeqLoadInfo; - -/* SeqLoadInfo.flag */ -#define SEQ_LOAD_REPLACE_SEL 1<<0 -#define SEQ_LOAD_FRAME_ADVANCE 1<<1 -#define SEQ_LOAD_MOVIE_SOUND 1<<2 -#define SEQ_LOAD_SOUND_CACHE 1<<3 - -/* use as an api function */ -typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); - -struct Sequence *alloc_sequence(ListBase *lb, int cfra, int machine); - -void seq_load_apply(struct Scene *scene, struct Sequence *seq, struct SeqLoadInfo *seq_load); - -void seqUniqueName(ListBase *seqbasep, struct Sequence *seq); - -struct Sequence *sequencer_add_image_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); -struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); -struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); - diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h new file mode 100644 index 00000000000..5b146cd5ecd --- /dev/null +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -0,0 +1,228 @@ +/** + * $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. 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. + * + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2004 Blender Foundation. + * All rights reserved. + * + * Contributor(s): Blender Foundation (2008). + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BKE_SEQUENCE_H +#define BKE_SEQUENCE_H + +struct Editing; +struct Sequence; +struct Strip; +struct StripElem; +struct ImBuf; +struct Scene; +struct bContext; + +#define MAXSEQ 32 + +#define BUILD_SEQAR_COUNT_NOTHING 0 +#define BUILD_SEQAR_COUNT_CURRENT 1 +#define BUILD_SEQAR_COUNT_CHILDREN 2 + +/* sequence iterator */ + +typedef struct SeqIterator { + struct Sequence **array; + int tot, cur; + + struct Sequence *seq; + int valid; +} SeqIterator; + +void seq_begin(struct Editing *ed, SeqIterator *iter, int use_pointer); +void seq_next(SeqIterator *iter); +void seq_end(SeqIterator *iter); +void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int use_pointer); + +#define SEQP_BEGIN(ed, seq) \ +{ \ + SeqIterator iter;\ + for(seq_begin(ed, &iter, 1); iter.valid; seq_next(&iter)) { \ + seq= iter.seq; + +#define SEQ_BEGIN(ed, seq) \ + { \ + SeqIterator iter;\ + for(seq_begin(ed, &iter, 0); iter.valid; seq_next(&iter)) { \ + seq= iter.seq; + +#define SEQ_END \ + } \ + seq_end(&iter); \ + } + +#endif + + +/* Wipe effect */ +enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE, + DO_IRIS_WIPE,DO_CLOCK_WIPE}; + + +struct SeqEffectHandle { + /* constructors & destructor */ + /* init & init_plugin are _only_ called on first creation */ + void (*init)(struct Sequence *seq); + void (*init_plugin)(struct Sequence *seq, const char *fname); + + /* number of input strips needed + (called directly after construction) */ + int (*num_inputs)(); + + /* load is called first time after readblenfile in + get_sequence_effect automatically */ + void (*load)(struct Sequence *seq); + + /* duplicate */ + void (*copy)(struct Sequence *dst, struct Sequence *src); + + /* destruct */ + void (*free)(struct Sequence *seq); + + /* returns: -1: no input needed, + 0: no early out, + 1: out = ibuf1, + 2: out = ibuf2 */ + int (*early_out)(struct Sequence *seq, + float facf0, float facf1); + + /* stores the y-range of the effect IPO */ + void (*store_icu_yrange)(struct Sequence * seq, + short adrcode, float *ymin, float *ymax); + + /* stores the default facf0 and facf1 if no IPO is present */ + void (*get_default_fac)(struct Sequence *seq, int cfra, + float * facf0, float * facf1); + + /* execute the effect + sequence effects are only required to either support + float-rects or byte-rects + (mixed cases are handled one layer up...) */ + + void (*execute)(struct Scene *scene, struct Sequence *seq, int cfra, + float facf0, float facf1, + int x, int y, + struct ImBuf *ibuf1, struct ImBuf *ibuf2, + struct ImBuf *ibuf3, struct ImBuf *out); +}; + +/* ********************* prototypes *************** */ + +/* sequence.c */ +void printf_strip(struct Sequence *seq); + +// extern +void seq_free_sequence(struct Scene *scene, struct Sequence *seq); +void seq_free_strip(struct Strip *strip); +void seq_free_editing(struct Scene *scene); +struct Editing *seq_give_editing(struct Scene *scene, int alloc); +char *give_seqname(struct Sequence *seq); +struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); +struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); +struct ImBuf *give_ibuf_seq_direct(struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq); +void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size); +void calc_sequence(struct Sequence *seq); +void calc_sequence_disp(struct Sequence *seq); +void new_tstripdata(struct Sequence *seq); +void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq); +void sort_seq(struct Scene *scene); +void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq, + int (*test_func)(struct Sequence * seq)); +int evaluate_seq_frame(struct Scene *scene, int cfra); +struct StripElem *give_stripelem(struct Sequence *seq, int cfra); + +// intern? +void update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change); + +/* seqeffects.c */ +// intern? +struct SeqEffectHandle get_sequence_blend(struct Sequence *seq); +void sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, int force); + +// extern +struct SeqEffectHandle get_sequence_effect(struct Sequence *seq); +int get_sequence_effect_num_inputs(int seq_type); + +/* for transform but also could use elsewhere */ +int seq_tx_get_start(struct Sequence *seq); +int seq_tx_get_end(struct Sequence *seq); +int seq_tx_get_final_left(struct Sequence *seq, int metaclip); +int seq_tx_get_final_right(struct Sequence *seq, int metaclip); +void seq_tx_set_final_left(struct Sequence *seq, int val); +void seq_tx_set_final_right(struct Sequence *seq, int val); +void seq_tx_handle_xlimits(struct Sequence *seq, int leftflag, int rightflag); +int seq_tx_test(struct Sequence * seq); +int check_single_seq(struct Sequence *seq); +void fix_single_seq(struct Sequence *seq); +int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); +void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); +int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); +int shuffle_seq_time(ListBase * seqbasep); +void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); + +void seq_update_sound(struct Sequence *seq); +void seq_update_muting(struct Editing *ed); + +void clear_scene_in_allseqs(struct Scene *sce); + +struct Sequence *active_seq_get(struct Scene *scene); +void active_seq_set(struct Scene *scene, struct Sequence *seq); + +/* api for adding new sequence strips */ +typedef struct SeqLoadInfo { + int start_frame; + int channel; + int flag; /* use sound, replace sel */ + int type; + int tot_success; + int tot_error; + int len; /* only for image strips */ + char path[512]; + char name[32]; +} SeqLoadInfo; + +/* SeqLoadInfo.flag */ +#define SEQ_LOAD_REPLACE_SEL 1<<0 +#define SEQ_LOAD_FRAME_ADVANCE 1<<1 +#define SEQ_LOAD_MOVIE_SOUND 1<<2 +#define SEQ_LOAD_SOUND_CACHE 1<<3 + +/* use as an api function */ +typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); + +struct Sequence *alloc_sequence(ListBase *lb, int cfra, int machine); + +void seq_load_apply(struct Scene *scene, struct Sequence *seq, struct SeqLoadInfo *seq_load); + +void seqUniqueName(ListBase *seqbasep, struct Sequence *seq); + +struct Sequence *sequencer_add_image_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); +struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); +struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); + diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 8391ebdebb7..afb1335b86b 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -83,7 +83,7 @@ #include "BKE_report.h" #include "BKE_scene.h" #include "BKE_screen.h" -#include "BKE_sequence.h" +#include "BKE_sequencer.h" #include "BKE_sound.h" #include "BLI_editVert.h" diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 368e05fa441..43017a75835 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -80,7 +80,7 @@ #include "BKE_paint.h" #include "BKE_pointcache.h" #include "BKE_scene.h" -#include "BKE_sequence.h" +#include "BKE_sequencer.h" #include "BKE_world.h" #include "BKE_utildefines.h" diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 8af3bf5fac7..2c532bfed1c 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -44,7 +44,7 @@ #include "BKE_global.h" #include "BKE_fcurve.h" #include "BKE_plugin_types.h" -#include "BKE_sequence.h" +#include "BKE_sequencer.h" #include "BKE_texture.h" #include "BKE_utildefines.h" diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c deleted file mode 100644 index 8d3b1a7955b..00000000000 --- a/source/blender/blenkernel/intern/sequence.c +++ /dev/null @@ -1,3758 +0,0 @@ -/** -* $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * Contributor(s): - * - Blender Foundation, 2003-2009 - * - Peter Schlaile 2005/2006 - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include -#include -#include - -#include "MEM_guardedalloc.h" -#include "MEM_CacheLimiterC-Api.h" - -#include "DNA_listBase.h" -#include "DNA_sequence_types.h" -#include "DNA_scene_types.h" -#include "DNA_anim_types.h" - -#include "BKE_global.h" -#include "BKE_image.h" -#include "BKE_main.h" -#include "BKE_sequence.h" -#include "BKE_fcurve.h" -#include "BKE_utildefines.h" -#include "RNA_access.h" -#include "RE_pipeline.h" - -#include "BLI_blenlib.h" -#include "BLI_util.h" - -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" - -#include "BLI_threads.h" -#include - -#include "BKE_context.h" -#include "BKE_sound.h" -#include "AUD_C-API.h" - -#ifdef WIN32 -#define snprintf _snprintf -#endif - -/* **** XXX ******** */ -static int seqrectx= 0; /* bad bad global! */ -static int seqrecty= 0; -//static void waitcursor(int val) {} -//static int blender_test_break() {return 0;} - -/* **** XXX ******** */ - - -void printf_strip(Sequence *seq) -{ - fprintf(stderr, "name: '%s', len:%d, start:%d, (startofs:%d, endofs:%d), (startstill:%d, endstill:%d), machine:%d, (startdisp:%d, enddisp:%d)\n", - seq->name, seq->len, seq->start, seq->startofs, seq->endofs, seq->startstill, seq->endstill, seq->machine, seq->startdisp, seq->enddisp); - fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0)); -} - -/* ********************************************************************** - alloc / free functions - ********************************************************************** */ - -static void free_tstripdata(int len, TStripElem *se) -{ - TStripElem *seo; - int a; - - seo= se; - if (!se) - return; - - for(a=0; aibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = 0; - } - if(se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - se->ibuf_comp = 0; - } - } - - MEM_freeN(seo); -} - - -void new_tstripdata(Sequence *seq) -{ - if(seq->strip) { - free_tstripdata(seq->strip->len, seq->strip->tstripdata); - free_tstripdata(seq->strip->endstill, - seq->strip->tstripdata_endstill); - free_tstripdata(seq->strip->startstill, - seq->strip->tstripdata_startstill); - - seq->strip->tstripdata= 0; - seq->strip->tstripdata_endstill= 0; - seq->strip->tstripdata_startstill= 0; - - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - - seq->strip->len= seq->len; - } -} - - -/* free */ - -static void free_proxy_seq(Sequence *seq) -{ - if (seq->strip && seq->strip->proxy && seq->strip->proxy->anim) { - IMB_free_anim(seq->strip->proxy->anim); - seq->strip->proxy->anim = 0; - } -} - -void seq_free_strip(Strip *strip) -{ - strip->us--; - if(strip->us>0) return; - if(strip->us<0) { - printf("error: negative users in strip\n"); - return; - } - - if (strip->stripdata) { - MEM_freeN(strip->stripdata); - } - - if (strip->proxy) { - if (strip->proxy->anim) { - IMB_free_anim(strip->proxy->anim); - } - - MEM_freeN(strip->proxy); - } - if (strip->crop) { - MEM_freeN(strip->crop); - } - if (strip->transform) { - MEM_freeN(strip->transform); - } - if (strip->color_balance) { - MEM_freeN(strip->color_balance); - } - - free_tstripdata(strip->len, strip->tstripdata); - free_tstripdata(strip->endstill, strip->tstripdata_endstill); - free_tstripdata(strip->startstill, strip->tstripdata_startstill); - - if(strip->ibuf_startstill) { - IMB_freeImBuf(strip->ibuf_startstill); - strip->ibuf_startstill = 0; - } - - if(strip->ibuf_endstill) { - IMB_freeImBuf(strip->ibuf_endstill); - strip->ibuf_endstill = 0; - } - - MEM_freeN(strip); -} - -void seq_free_sequence(Scene *scene, Sequence *seq) -{ - Editing *ed = scene->ed; - - if(seq->strip) seq_free_strip(seq->strip); - - if(seq->anim) IMB_free_anim(seq->anim); - - if(seq->sound_handle) - sound_delete_handle(scene, seq->sound_handle); - - if (seq->type & SEQ_EFFECT) { - struct SeqEffectHandle sh = get_sequence_effect(seq); - - sh.free(seq); - } - - if (ed->act_seq==seq) - ed->act_seq= NULL; - - MEM_freeN(seq); -} - -Editing *seq_give_editing(Scene *scene, int alloc) -{ - if (scene->ed == NULL && alloc) { - Editing *ed; - - ed= scene->ed= MEM_callocN( sizeof(Editing), "addseq"); - ed->seqbasep= &ed->seqbase; - } - return scene->ed; -} - -void seq_free_editing(Scene *scene) -{ - Editing *ed = scene->ed; - MetaStack *ms; - Sequence *seq; - - if(ed==NULL) - return; - - SEQ_BEGIN(ed, seq) { - seq_free_sequence(scene, seq); - } - SEQ_END - - while((ms= ed->metastack.first)) { - BLI_remlink(&ed->metastack, ms); - MEM_freeN(ms); - } - - MEM_freeN(ed); -} - -/* ************************* itterator ************************** */ -/* *************** (replaces old WHILE_SEQ) ********************* */ -/* **************** use now SEQ_BEGIN() SEQ_END ***************** */ - -/* sequence strip iterator: - * - builds a full array, recursively into meta strips */ - -static void seq_count(ListBase *seqbase, int *tot) -{ - Sequence *seq; - - for(seq=seqbase->first; seq; seq=seq->next) { - (*tot)++; - - if(seq->seqbase.first) - seq_count(&seq->seqbase, tot); - } -} - -static void seq_build_array(ListBase *seqbase, Sequence ***array, int depth) -{ - Sequence *seq; - - for(seq=seqbase->first; seq; seq=seq->next) { - seq->depth= depth; - - if(seq->seqbase.first) - seq_build_array(&seq->seqbase, array, depth+1); - - **array= seq; - (*array)++; - } -} - -void seq_array(Editing *ed, Sequence ***seqarray, int *tot, int use_pointer) -{ - Sequence **array; - - *seqarray= NULL; - *tot= 0; - - if(ed == NULL) - return; - - if(use_pointer) - seq_count(ed->seqbasep, tot); - else - seq_count(&ed->seqbase, tot); - - if(*tot == 0) - return; - - *seqarray= array= MEM_mallocN(sizeof(Sequence *)*(*tot), "SeqArray"); - if(use_pointer) - seq_build_array(ed->seqbasep, &array, 0); - else - seq_build_array(&ed->seqbase, &array, 0); -} - -void seq_begin(Editing *ed, SeqIterator *iter, int use_pointer) -{ - memset(iter, 0, sizeof(*iter)); - seq_array(ed, &iter->array, &iter->tot, use_pointer); - - if(iter->tot) { - iter->cur= 0; - iter->seq= iter->array[iter->cur]; - iter->valid= 1; - } -} - -void seq_next(SeqIterator *iter) -{ - if(++iter->cur < iter->tot) - iter->seq= iter->array[iter->cur]; - else - iter->valid= 0; -} - -void seq_end(SeqIterator *iter) -{ - if(iter->array) - MEM_freeN(iter->array); - - iter->valid= 0; -} - -/* - ********************************************************************** - * build_seqar - ********************************************************************** - * Build a complete array of _all_ sequencies (including those - * in metastrips!) - ********************************************************************** -*/ - -static void do_seq_count(ListBase *seqbase, int *totseq) -{ - Sequence *seq; - - seq= seqbase->first; - while(seq) { - (*totseq)++; - if(seq->seqbase.first) do_seq_count(&seq->seqbase, totseq); - seq= seq->next; - } -} - -static void do_build_seqar(ListBase *seqbase, Sequence ***seqar, int depth) -{ - Sequence *seq; - - seq= seqbase->first; - while(seq) { - seq->depth= depth; - if(seq->seqbase.first) do_build_seqar(&seq->seqbase, seqar, depth+1); - **seqar= seq; - (*seqar)++; - seq= seq->next; - } -} - -void build_seqar(ListBase *seqbase, Sequence ***seqar, int *totseq) -{ - Sequence **tseqar; - - *totseq= 0; - do_seq_count(seqbase, totseq); - - if(*totseq==0) { - *seqar= 0; - return; - } - *seqar= MEM_mallocN(sizeof(void *)* *totseq, "seqar"); - tseqar= *seqar; - - do_build_seqar(seqbase, seqar, 0); - *seqar= tseqar; -} - -static void do_seq_count_cb(ListBase *seqbase, int *totseq, - int (*test_func)(Sequence * seq)) -{ - Sequence *seq; - - seq= seqbase->first; - while(seq) { - int test = test_func(seq); - if (test & BUILD_SEQAR_COUNT_CURRENT) { - (*totseq)++; - } - if(seq->seqbase.first && (test & BUILD_SEQAR_COUNT_CHILDREN)) { - do_seq_count_cb(&seq->seqbase, totseq, test_func); - } - seq= seq->next; - } -} - -static void do_build_seqar_cb(ListBase *seqbase, Sequence ***seqar, int depth, - int (*test_func)(Sequence * seq)) -{ - Sequence *seq; - - seq= seqbase->first; - while(seq) { - int test = test_func(seq); - seq->depth= depth; - - if(seq->seqbase.first && (test & BUILD_SEQAR_COUNT_CHILDREN)) { - do_build_seqar_cb(&seq->seqbase, seqar, depth+1, - test_func); - } - if (test & BUILD_SEQAR_COUNT_CURRENT) { - **seqar= seq; - (*seqar)++; - } - seq= seq->next; - } -} - -void build_seqar_cb(ListBase *seqbase, Sequence ***seqar, int *totseq, - int (*test_func)(Sequence * seq)) -{ - Sequence **tseqar; - - *totseq= 0; - do_seq_count_cb(seqbase, totseq, test_func); - - if(*totseq==0) { - *seqar= 0; - return; - } - *seqar= MEM_mallocN(sizeof(void *)* *totseq, "seqar"); - tseqar= *seqar; - - do_build_seqar_cb(seqbase, seqar, 0, test_func); - *seqar= tseqar; -} - - -void calc_sequence_disp(Sequence *seq) -{ - if(seq->startofs && seq->startstill) seq->startstill= 0; - if(seq->endofs && seq->endstill) seq->endstill= 0; - - seq->startdisp= seq->start + seq->startofs - seq->startstill; - seq->enddisp= seq->start+seq->len - seq->endofs + seq->endstill; - - seq->handsize= 10.0; /* 10 frames */ - if( seq->enddisp-seq->startdisp < 10 ) { - seq->handsize= (float)(0.5*(seq->enddisp-seq->startdisp)); - } - else if(seq->enddisp-seq->startdisp > 250) { - seq->handsize= (float)((seq->enddisp-seq->startdisp)/25); - } - - seq_update_sound(seq); -} - -void calc_sequence(Sequence *seq) -{ - Sequence *seqm; - int min, max; - - /* check all metas recursively */ - seqm= seq->seqbase.first; - while(seqm) { - if(seqm->seqbase.first) calc_sequence(seqm); - seqm= seqm->next; - } - - /* effects and meta: automatic start and end */ - - if(seq->type & SEQ_EFFECT) { - /* pointers */ - if(seq->seq2==0) seq->seq2= seq->seq1; - if(seq->seq3==0) seq->seq3= seq->seq1; - - /* effecten go from seq1 -> seq2: test */ - - /* we take the largest start and smallest end */ - - // seq->start= seq->startdisp= MAX2(seq->seq1->startdisp, seq->seq2->startdisp); - // seq->enddisp= MIN2(seq->seq1->enddisp, seq->seq2->enddisp); - - if (seq->seq1) { - seq->start= seq->startdisp= MAX3(seq->seq1->startdisp, seq->seq2->startdisp, seq->seq3->startdisp); - seq->enddisp= MIN3(seq->seq1->enddisp, seq->seq2->enddisp, seq->seq3->enddisp); - seq->len= seq->enddisp - seq->startdisp; - } else { - calc_sequence_disp(seq); - } - - if(seq->strip && seq->len!=seq->strip->len) { - new_tstripdata(seq); - } - - } - else { - if(seq->type==SEQ_META) { - seqm= seq->seqbase.first; - if(seqm) { - min= 1000000; - max= -1000000; - while(seqm) { - if(seqm->startdisp < min) min= seqm->startdisp; - if(seqm->enddisp > max) max= seqm->enddisp; - seqm= seqm->next; - } - seq->start= min + seq->anim_startofs; - seq->len = max-min; - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - - if(seq->strip && seq->len!=seq->strip->len) { - new_tstripdata(seq); - } - } - } - calc_sequence_disp(seq); - } -} - -void reload_sequence_new_file(Scene *scene, Sequence * seq) -{ - char str[FILE_MAXDIR+FILE_MAXFILE]; - - if (!(seq->type == SEQ_MOVIE || seq->type == SEQ_IMAGE || - seq->type == SEQ_SOUND || - seq->type == SEQ_SCENE || seq->type == SEQ_META)) { - return; - } - - new_tstripdata(seq); - - if (seq->type != SEQ_SCENE && seq->type != SEQ_META && - seq->type != SEQ_IMAGE) { - BLI_join_dirfile(str, seq->strip->dir, seq->strip->stripdata->name); - BLI_convertstringcode(str, G.sce); - BLI_convertstringframe(str, scene->r.cfra); - - } - - if (seq->type == SEQ_IMAGE) { - /* Hack? */ - int olen = MEM_allocN_len(seq->strip->stripdata)/sizeof(struct StripElem); - seq->len = olen; - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - if (seq->len < 0) { - seq->len = 0; - } - seq->strip->len = seq->len; - } else if (seq->type == SEQ_MOVIE) { - if(seq->anim) IMB_free_anim(seq->anim); - seq->anim = openanim(str, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0)); - - if (!seq->anim) { - return; - } - - seq->len = IMB_anim_get_duration(seq->anim); - - seq->anim_preseek = IMB_anim_get_preseek(seq->anim); - - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - if (seq->len < 0) { - seq->len = 0; - } - seq->strip->len = seq->len; - } else if (seq->type == SEQ_SOUND) { - seq->len = AUD_getInfo(seq->sound->handle).length * FPS; - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - if (seq->len < 0) { - seq->len = 0; - } - seq->strip->len = seq->len; - } else if (seq->type == SEQ_SCENE) { - Scene * sce = G.main->scene.first; - int nr = 1; - - while(sce) { - if(nr == seq->scenenr) { - break; - } - nr++; - sce= sce->id.next; - } - - if (sce) { - seq->scene = sce; - } else { - sce = seq->scene; - } - - BLI_strncpy(seq->name+2, sce->id.name + 2, SEQ_NAME_MAXSTR-2); - seqUniqueName(scene->ed->seqbasep, seq); - - seq->len= seq->scene->r.efra - seq->scene->r.sfra + 1; - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - if (seq->len < 0) { - seq->len = 0; - } - seq->strip->len = seq->len; - } - - free_proxy_seq(seq); - - calc_sequence(seq); -} - -void sort_seq(Scene *scene) -{ - /* all strips together per kind, and in order of y location ("machine") */ - ListBase seqbase, effbase; - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *seqt; - - - if(ed==NULL) return; - - seqbase.first= seqbase.last= 0; - effbase.first= effbase.last= 0; - - while( (seq= ed->seqbasep->first) ) { - BLI_remlink(ed->seqbasep, seq); - - if(seq->type & SEQ_EFFECT) { - seqt= effbase.first; - while(seqt) { - if(seqt->machine>=seq->machine) { - BLI_insertlinkbefore(&effbase, seqt, seq); - break; - } - seqt= seqt->next; - } - if(seqt==0) BLI_addtail(&effbase, seq); - } - else { - seqt= seqbase.first; - while(seqt) { - if(seqt->machine>=seq->machine) { - BLI_insertlinkbefore(&seqbase, seqt, seq); - break; - } - seqt= seqt->next; - } - if(seqt==0) BLI_addtail(&seqbase, seq); - } - } - - addlisttolist(&seqbase, &effbase); - *(ed->seqbasep)= seqbase; -} - - -void clear_scene_in_allseqs(Scene *sce) -{ - Scene *sce1; - Editing *ed; - Sequence *seq; - - /* when a scene is deleted: test all seqs */ - - sce1= G.main->scene.first; - while(sce1) { - if(sce1!=sce && sce1->ed) { - ed= sce1->ed; - - SEQ_BEGIN(ed, seq) { - - if(seq->scene==sce) seq->scene= 0; - - } - SEQ_END - } - - sce1= sce1->id.next; - } -} - -static char *give_seqname_by_type(int type) -{ - switch(type) { - case SEQ_META: return "Meta"; - case SEQ_IMAGE: return "Image"; - case SEQ_SCENE: return "Scene"; - case SEQ_MOVIE: return "Movie"; - case SEQ_SOUND: return "Audio"; - case SEQ_CROSS: return "Cross"; - case SEQ_GAMCROSS: return "Gamma Cross"; - case SEQ_ADD: return "Add"; - case SEQ_SUB: return "Sub"; - case SEQ_MUL: return "Mul"; - case SEQ_ALPHAOVER: return "Alpha Over"; - case SEQ_ALPHAUNDER: return "Alpha Under"; - case SEQ_OVERDROP: return "Over Drop"; - case SEQ_WIPE: return "Wipe"; - case SEQ_GLOW: return "Glow"; - case SEQ_TRANSFORM: return "Transform"; - case SEQ_COLOR: return "Color"; - case SEQ_SPEED: return "Speed"; - default: - return 0; - } -} - -char *give_seqname(Sequence *seq) -{ - char * name = give_seqname_by_type(seq->type); - - if (!name) { - if(seq->typestrip->dir; - } else if(seq->type==SEQ_PLUGIN) { - if(!(seq->flag & SEQ_EFFECT_NOT_LOADED) && - seq->plugin && seq->plugin->doit) { - return seq->plugin->pname; - } else { - return "Plugin"; - } - } else { - return "Effect"; - } - } - return name; -} - -/* ***************** DO THE SEQUENCE ***************** */ - -static void make_black_ibuf(ImBuf *ibuf) -{ - unsigned int *rect; - float *rect_float; - int tot; - - if(ibuf==0 || (ibuf->rect==0 && ibuf->rect_float==0)) return; - - tot= ibuf->x*ibuf->y; - - rect= ibuf->rect; - rect_float = ibuf->rect_float; - - if (rect) { - memset(rect, 0, tot * sizeof(char) * 4); - } - - if (rect_float) { - memset(rect_float, 0, tot * sizeof(float) * 4); - } -} - -static void multibuf(ImBuf *ibuf, float fmul) -{ - char *rt; - float *rt_float; - - int a, mul, icol; - - mul= (int)(256.0*fmul); - rt= (char *)ibuf->rect; - rt_float = ibuf->rect_float; - - if (rt) { - a= ibuf->x*ibuf->y; - while(a--) { - - icol= (mul*rt[0])>>8; - if(icol>254) rt[0]= 255; else rt[0]= icol; - icol= (mul*rt[1])>>8; - if(icol>254) rt[1]= 255; else rt[1]= icol; - icol= (mul*rt[2])>>8; - if(icol>254) rt[2]= 255; else rt[2]= icol; - icol= (mul*rt[3])>>8; - if(icol>254) rt[3]= 255; else rt[3]= icol; - - rt+= 4; - } - } - if (rt_float) { - a= ibuf->x*ibuf->y; - while(a--) { - rt_float[0] *= fmul; - rt_float[1] *= fmul; - rt_float[2] *= fmul; - rt_float[3] *= fmul; - - rt_float += 4; - } - } -} - -static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) -{ - TStripElem *se1, *se2, *se3; - float fac, facf; - int x, y; - int early_out; - struct SeqEffectHandle sh = get_sequence_effect(seq); - FCurve *fcu= NULL; - - if (!sh.execute) { /* effect not supported in this version... */ - make_black_ibuf(se->ibuf); - return; - } - - if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { - sh.get_default_fac(seq, cfra, &fac, &facf); - if( scene->r.mode & R_FIELDS ); else facf= fac; - } else { - fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, - "effect_fader", 0); - if (fcu) { - fac = facf = evaluate_fcurve(fcu, cfra); - if( scene->r.mode & R_FIELDS ) { - facf = evaluate_fcurve(fcu, cfra + 0.5); - } - } else { - fac = facf = seq->effect_fader; - } - } - - early_out = sh.early_out(seq, fac, facf); - - if (early_out == -1) { /* no input needed */ - sh.execute(scene, seq, cfra, fac, facf, - se->ibuf->x, se->ibuf->y, - 0, 0, 0, se->ibuf); - return; - } - - switch (early_out) { - case 0: - if (se->se1==0 || se->se2==0 || se->se3==0) { - make_black_ibuf(se->ibuf); - return; - } - - se1= se->se1; - se2= se->se2; - se3= se->se3; - - if ( (se1==0 || se2==0 || se3==0) - || (se1->ibuf==0 || se2->ibuf==0 || se3->ibuf==0)) { - make_black_ibuf(se->ibuf); - return; - } - - break; - case 1: - if (se->se1 == 0) { - make_black_ibuf(se->ibuf); - return; - } - - se1= se->se1; - - if (se1 == 0 || se1->ibuf == 0) { - make_black_ibuf(se->ibuf); - return; - } - - if (se->ibuf != se1->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = se1->ibuf; - IMB_refImBuf(se->ibuf); - } - return; - case 2: - if (se->se2 == 0) { - make_black_ibuf(se->ibuf); - return; - } - - se2= se->se2; - - if (se2 == 0 || se2->ibuf == 0) { - make_black_ibuf(se->ibuf); - return; - } - if (se->ibuf != se2->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = se2->ibuf; - IMB_refImBuf(se->ibuf); - } - return; - default: - make_black_ibuf(se->ibuf); - return; - } - - x= se2->ibuf->x; - y= se2->ibuf->y; - - if (!se1->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se1->ibuf); - } - if (!se2->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se2->ibuf); - } - if (!se3->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se3->ibuf); - } - - if (!se1->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se1->ibuf); - } - if (!se2->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se2->ibuf); - } - if (!se3->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se3->ibuf); - } - - sh.execute(scene, seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf, - se->ibuf); -} - -static int give_stripelem_index(Sequence *seq, int cfra) -{ - int nr; - - if(seq->startdisp >cfra || seq->enddisp <= cfra) return -1; - if(seq->len == 0) return -1; - if(seq->flag&SEQ_REVERSE_FRAMES) { - /*reverse frame in this sequence */ - if(cfra <= seq->start) nr= seq->len-1; - else if(cfra >= seq->start+seq->len-1) nr= 0; - else nr= (seq->start + seq->len) - cfra; - } else { - if(cfra <= seq->start) nr= 0; - else if(cfra >= seq->start+seq->len-1) nr= seq->len-1; - else nr= cfra-seq->start; - } - if (seq->strobe < 1.0) seq->strobe = 1.0; - if (seq->strobe > 1.0) { - nr -= (int)fmod((double)nr, (double)seq->strobe); - } - - return nr; -} - -static TStripElem* alloc_tstripdata(int len, const char * name) -{ - int i; - TStripElem *se = MEM_callocN(len * sizeof(TStripElem), name); - for (i = 0; i < len; i++) { - se[i].ok = STRIPELEM_OK; - } - return se; -} - -static TStripElem *give_tstripelem(Sequence *seq, int cfra) -{ - TStripElem *se; - int nr; - - se = seq->strip->tstripdata; - if (se == 0 && seq->len > 0) { - se = seq->strip->tstripdata = alloc_tstripdata(seq->len, - "tstripelems"); - } - nr = give_stripelem_index(seq, cfra); - - if (nr == -1) return 0; - if (se == 0) return 0; - - se += nr; - - /* if there are IPOs with blend modes active, one has to watch out - for startstill + endstill area: we can't use the same tstripelem - here for all ibufs, since then, blending with IPOs won't work! - - Rather common case, if you use a single image and try to fade - it in and out... or want to use your strip as a watermark in - alpha over mode... - */ - if (seq->blend_mode != SEQ_BLEND_REPLACE || - (/*seq->ipo && seq->ipo->curve.first &&*/ - (!(seq->type & SEQ_EFFECT) || !seq->seq1))) { - Strip * s = seq->strip; - if (cfra < seq->start) { - se = s->tstripdata_startstill; - if (seq->startstill > s->startstill) { - free_tstripdata(s->startstill, - s->tstripdata_startstill); - se = 0; - } - - if (se == 0) { - s->startstill = seq->startstill; - se = seq->strip->tstripdata_startstill - = alloc_tstripdata( - s->startstill, - "tstripelems_startstill"); - } - se += seq->start - cfra - 1; - - } else if (cfra > seq->start + seq->len-1) { - se = s->tstripdata_endstill; - if (seq->endstill > s->endstill) { - free_tstripdata(s->endstill, - s->tstripdata_endstill); - se = 0; - } - - if (se == 0) { - s->endstill = seq->endstill; - se = seq->strip->tstripdata_endstill - = alloc_tstripdata( - s->endstill, - "tstripelems_endstill"); - } - se += cfra - (seq->start + seq->len-1) - 1; - } - } - - - se->nr= nr; - - return se; -} - -StripElem *give_stripelem(Sequence *seq, int cfra) -{ - StripElem *se; - int nr; - - se = seq->strip->stripdata; - nr = give_stripelem_index(seq, cfra); - - if (nr == -1) return 0; - if (se == 0) return 0; - - se += nr + seq->anim_startofs; - - return se; -} - -static int evaluate_seq_frame_gen(Sequence ** seq_arr, ListBase *seqbase, int cfra) -{ - Sequence *seq; - int totseq=0; - - memset(seq_arr, 0, sizeof(Sequence*) * (MAXSEQ+1)); - - seq= seqbase->first; - while(seq) { - if(seq->startdisp <=cfra && seq->enddisp > cfra) { - seq_arr[seq->machine]= seq; - totseq++; - } - seq= seq->next; - } - - return totseq; -} - -int evaluate_seq_frame(Scene *scene, int cfra) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq_arr[MAXSEQ+1]; - - if(ed==NULL) return 0; - return evaluate_seq_frame_gen(seq_arr, ed->seqbasep, cfra); -} - -static int video_seq_is_rendered(Sequence * seq) -{ - return (seq - && !(seq->flag & SEQ_MUTE) - && seq->type != SEQ_SOUND); -} - -static int get_shown_sequences( ListBase * seqbasep, int cfra, int chanshown, Sequence ** seq_arr_out) -{ - Sequence *seq_arr[MAXSEQ+1]; - int b = chanshown; - int cnt = 0; - - if (b > MAXSEQ) { - return 0; - } - - if(evaluate_seq_frame_gen(seq_arr, seqbasep, cfra)) { - if (b > 0) { - if (seq_arr[b] == 0) { - return 0; - } - } else { - for (b = MAXSEQ; b > 0; b--) { - if (video_seq_is_rendered(seq_arr[b])) { - break; - } - } - } - } - - chanshown = b; - - for (;b > 0; b--) { - if (video_seq_is_rendered(seq_arr[b])) { - if (seq_arr[b]->blend_mode == SEQ_BLEND_REPLACE) { - break; - } - } - } - - for (;b <= chanshown; b++) { - if (video_seq_is_rendered(seq_arr[b])) { - seq_arr_out[cnt++] = seq_arr[b]; - } - } - - return cnt; -} - - -/* ********************************************************************** - proxy management - ********************************************************************** */ - -#define PROXY_MAXFILE (2*FILE_MAXDIR+FILE_MAXFILE) - -static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * name, int render_size) -{ - int frameno; - char dir[FILE_MAXDIR]; - - if (!seq->strip->proxy) { - return FALSE; - } - - if (seq->flag & SEQ_USE_PROXY_CUSTOM_DIR) { - strcpy(dir, seq->strip->proxy->dir); - } else { - if (seq->type == SEQ_IMAGE || seq->type == SEQ_MOVIE) { - snprintf(dir, FILE_MAXDIR, "%s/BL_proxy", - seq->strip->dir); - } else { - return FALSE; - } - } - - if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { - BLI_join_dirfile(name, dir, seq->strip->proxy->file); - BLI_convertstringcode(name, G.sce); - BLI_convertstringframe(name, cfra); - - return TRUE; - } - - /* generate a separate proxy directory for each preview size */ - - if (seq->type == SEQ_IMAGE) { - StripElem * se = give_stripelem(seq, cfra); - snprintf(name, PROXY_MAXFILE, "%s/images/%d/%s_proxy", - dir, render_size, se->name); - frameno = 1; - } else if (seq->type == SEQ_MOVIE) { - TStripElem * tse = give_tstripelem(seq, cfra); - - frameno = tse->nr + seq->anim_startofs; - - snprintf(name, PROXY_MAXFILE, "%s/%s/%d/####", dir, - seq->strip->stripdata->name, - render_size); - } else { - TStripElem * tse = give_tstripelem(seq, cfra); - - frameno = tse->nr + seq->anim_startofs; - - snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir, - render_size); - } - - BLI_convertstringcode(name, G.sce); - BLI_convertstringframe(name, frameno); - - - strcat(name, ".jpg"); - - return TRUE; -} - -static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, int render_size) -{ - char name[PROXY_MAXFILE]; - - if (!(seq->flag & SEQ_USE_PROXY)) { - return 0; - } - - /* rendering at 100% ? No real sense in proxy-ing, right? */ - if (render_size == 100) { - return 0; - } - - if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { - TStripElem * tse = give_tstripelem(seq, cfra); - int frameno = tse->nr + seq->anim_startofs; - if (!seq->strip->proxy->anim) { - if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { - return 0; - } - - seq->strip->proxy->anim = openanim(name, IB_rect); - } - if (!seq->strip->proxy->anim) { - return 0; - } - - return IMB_anim_absolute(seq->strip->proxy->anim, frameno); - } - - if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { - return 0; - } - - if (BLI_exists(name)) { - return IMB_loadiffname(name, IB_rect); - } else { - return 0; - } -} - -#if 0 -static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra, - int build_proxy_run, int render_size); - -static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int render_size) -{ - char name[PROXY_MAXFILE]; - int quality; - TStripElem * se; - int ok; - int rectx, recty; - struct ImBuf * ibuf; - - if (!(seq->flag & SEQ_USE_PROXY)) { - return; - } - - /* rendering at 100% ? No real sense in proxy-ing, right? */ - if (render_size == 100) { - return; - } - - /* that's why it is called custom... */ - if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { - return; - } - - if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { - return; - } - - se = give_tstripelem(seq, cfra); - if (!se) { - return; - } - - if(se->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = 0; - } - - do_build_seq_ibuf(scene, seq, se, cfra, TRUE, render_size); - - if (!se->ibuf) { - return; - } - - rectx= (render_size*scene->r.xsch)/100; - recty= (render_size*scene->r.ysch)/100; - - ibuf = se->ibuf; - - if (ibuf->x != rectx || ibuf->y != recty) { - IMB_scalefastImBuf(ibuf, (short)rectx, (short)recty); - } - - /* quality is fixed, otherwise one has to generate separate - directories for every quality... - - depth = 32 is intentionally left in, otherwise ALPHA channels - won't work... */ - quality = seq->strip->proxy->quality; - ibuf->ftype= JPG | quality; - - BLI_make_existing_file(name); - - ok = IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat); - if (ok == 0) { - perror(name); - } - - IMB_freeImBuf(ibuf); - se->ibuf = 0; -} - -static void seq_proxy_rebuild(Scene *scene, Sequence * seq) -{ - int cfra; - float rsize = seq->strip->proxy->size; - - waitcursor(1); - - G.afbreek = 0; - - /* flag management tries to account for strobe and - other "non-linearities", that might come in the future... - better way would be to "touch" the files, so that _really_ - no one is rebuild twice. - */ - - for (cfra = seq->startdisp; cfra < seq->enddisp; cfra++) { - TStripElem * tse = give_tstripelem(seq, cfra); - - tse->flag &= ~STRIPELEM_PREVIEW_DONE; - } - - - - /* a _lot_ faster for movie files, if we read frames in - sequential order */ - if (seq->flag & SEQ_REVERSE_FRAMES) { - for (cfra = seq->enddisp-seq->endstill-1; - cfra >= seq->startdisp + seq->startstill; cfra--) { - TStripElem * tse = give_tstripelem(seq, cfra); - - if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) { -//XXX set_timecursor(cfra); - seq_proxy_build_frame(scene, seq, cfra, rsize); - tse->flag |= STRIPELEM_PREVIEW_DONE; - } - if (blender_test_break()) { - break; - } - } - } else { - for (cfra = seq->startdisp + seq->startstill; - cfra < seq->enddisp - seq->endstill; cfra++) { - TStripElem * tse = give_tstripelem(seq, cfra); - - if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) { -//XXX set_timecursor(cfra); - seq_proxy_build_frame(scene, seq, cfra, rsize); - tse->flag |= STRIPELEM_PREVIEW_DONE; - } - if (blender_test_break()) { - break; - } - } - } - waitcursor(0); -} -#endif - - -/* ********************************************************************** - color balance - ********************************************************************** */ - -static StripColorBalance calc_cb(StripColorBalance * cb_) -{ - StripColorBalance cb = *cb_; - int c; - - if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { - for (c = 0; c < 3; c++) { - cb.lift[c] = 1.0 - cb.lift[c]; - } - } else { - for (c = 0; c < 3; c++) { - cb.lift[c] = -(1.0 - cb.lift[c]); - } - } - if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAIN) { - for (c = 0; c < 3; c++) { - if (cb.gain[c] != 0.0) { - cb.gain[c] = 1.0/cb.gain[c]; - } else { - cb.gain[c] = 1000000; /* should be enough :) */ - } - } - } - - if (!(cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAMMA)) { - for (c = 0; c < 3; c++) { - if (cb.gamma[c] != 0.0) { - cb.gamma[c] = 1.0/cb.gamma[c]; - } else { - cb.gamma[c] = 1000000; /* should be enough :) */ - } - } - } - - return cb; -} - -static void make_cb_table_byte(float lift, float gain, float gamma, - unsigned char * table, float mul) -{ - int y; - - for (y = 0; y < 256; y++) { - float v = 1.0 * y / 255; - v *= gain; - v += lift; - v = pow(v, gamma); - v *= mul; - if ( v > 1.0) { - v = 1.0; - } else if (v < 0.0) { - v = 0.0; - } - table[y] = v * 255; - } - -} - -static void make_cb_table_float(float lift, float gain, float gamma, - float * table, float mul) -{ - int y; - - for (y = 0; y < 256; y++) { - float v = (float) y * 1.0 / 255.0; - v *= gain; - v += lift; - v = pow(v, gamma); - v *= mul; - table[y] = v; - } -} - -static void color_balance_byte_byte(Sequence * seq, TStripElem* se, float mul) -{ - unsigned char cb_tab[3][256]; - int c; - unsigned char * p = (unsigned char*) se->ibuf->rect; - unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; - - StripColorBalance cb = calc_cb(seq->strip->color_balance); - - for (c = 0; c < 3; c++) { - make_cb_table_byte(cb.lift[c], cb.gain[c], cb.gamma[c], - cb_tab[c], mul); - } - - while (p < e) { - p[0] = cb_tab[0][p[0]]; - p[1] = cb_tab[1][p[1]]; - p[2] = cb_tab[2][p[2]]; - - p += 4; - } -} - -static void color_balance_byte_float(Sequence * seq, TStripElem* se, float mul) -{ - float cb_tab[4][256]; - int c,i; - unsigned char * p = (unsigned char*) se->ibuf->rect; - unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; - float * o; - StripColorBalance cb; - - imb_addrectfloatImBuf(se->ibuf); - - o = se->ibuf->rect_float; - - cb = calc_cb(seq->strip->color_balance); - - for (c = 0; c < 3; c++) { - make_cb_table_float(cb.lift[c], cb.gain[c], cb.gamma[c], - cb_tab[c], mul); - } - - for (i = 0; i < 256; i++) { - cb_tab[3][i] = ((float)i)*(1.0f/255.0f); - } - - while (p < e) { - o[0] = cb_tab[0][p[0]]; - o[1] = cb_tab[1][p[1]]; - o[2] = cb_tab[2][p[2]]; - o[3] = cb_tab[3][p[3]]; - - p += 4; o += 4; - } -} - -static void color_balance_float_float(Sequence * seq, TStripElem* se, float mul) -{ - float * p = se->ibuf->rect_float; - float * e = se->ibuf->rect_float + se->ibuf->x * 4* se->ibuf->y; - StripColorBalance cb = calc_cb(seq->strip->color_balance); - - while (p < e) { - int c; - for (c = 0; c < 3; c++) { - p[c] = pow(p[c] * cb.gain[c] + cb.lift[c], - cb.gamma[c]) * mul; - } - p += 4; - } -} - -static void color_balance(Sequence * seq, TStripElem* se, float mul) -{ - if (se->ibuf->rect_float) { - color_balance_float_float(seq, se, mul); - } else if(seq->flag & SEQ_MAKE_FLOAT) { - color_balance_byte_float(seq, se, mul); - } else { - color_balance_byte_byte(seq, se, mul); - } -} - -/* - input preprocessing for SEQ_IMAGE, SEQ_MOVIE and SEQ_SCENE - - Do all the things you can't really do afterwards using sequence effects - (read: before rescaling to render resolution has been done) - - Order is important! - - - Deinterlace - - Crop and transform in image source coordinate space - - Flip X + Flip Y (could be done afterwards, backward compatibility) - - Promote image to float data (affects pipeline operations afterwards) - - Color balance (is most efficient in the byte -> float - (future: half -> float should also work fine!) - case, if done on load, since we can use lookup tables) - - Premultiply - -*/ - -static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se, int cfra) -{ - float mul; - - if ((seq->flag & SEQ_FILTERY) || - (seq->flag & SEQ_USE_CROP) || - (seq->flag & SEQ_USE_TRANSFORM) || - (seq->flag & SEQ_FLIPX) || - (seq->flag & SEQ_FLIPY) || - (seq->flag & SEQ_USE_COLOR_BALANCE) || - (seq->flag & SEQ_MAKE_PREMUL) || - (se->ibuf->x != seqrectx || se->ibuf->y != seqrecty)) { - return TRUE; - } - - mul = seq->mul; - - if(seq->blend_mode == SEQ_BLEND_REPLACE && - !(seq->type & SEQ_EFFECT)) { - mul *= seq->blend_opacity / 100.0; - } - - if (mul != 1.0) { - return TRUE; - } - - return FALSE; -} - -static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cfra) -{ - float mul; - - seq->strip->orx= se->ibuf->x; - seq->strip->ory= se->ibuf->y; - - if((seq->flag & SEQ_FILTERY) && seq->type != SEQ_MOVIE) { - IMB_filtery(se->ibuf); - } - - if(seq->flag & SEQ_USE_CROP || seq->flag & SEQ_USE_TRANSFORM) { - StripCrop c; - StripTransform t; - int sx,sy,dx,dy; - - memset(&c, 0, sizeof(StripCrop)); - memset(&t, 0, sizeof(StripTransform)); - - if(seq->flag & SEQ_USE_CROP && seq->strip->crop) { - c = *seq->strip->crop; - } - if(seq->flag & SEQ_USE_TRANSFORM && seq->strip->transform) { - t = *seq->strip->transform; - } - - sx = se->ibuf->x - c.left - c.right; - sy = se->ibuf->y - c.top - c.bottom; - dx = sx; - dy = sy; - - if (seq->flag & SEQ_USE_TRANSFORM) { - dx = scene->r.xsch; - dy = scene->r.ysch; - } - - if (c.top + c.bottom >= se->ibuf->y || - c.left + c.right >= se->ibuf->x || - t.xofs >= dx || t.yofs >= dy) { - make_black_ibuf(se->ibuf); - } else { - ImBuf * i; - - if (se->ibuf->rect_float) { - i = IMB_allocImBuf(dx, dy,32, IB_rectfloat, 0); - } else { - i = IMB_allocImBuf(dx, dy,32, IB_rect, 0); - } - - IMB_rectcpy(i, se->ibuf, - t.xofs, t.yofs, - c.left, c.bottom, - sx, sy); - - IMB_freeImBuf(se->ibuf); - - se->ibuf = i; - } - } - - if(seq->flag & SEQ_FLIPX) { - IMB_flipx(se->ibuf); - } - if(seq->flag & SEQ_FLIPY) { - IMB_flipy(se->ibuf); - } - - if(seq->mul == 0.0) { - seq->mul = 1.0; - } - - mul = seq->mul; - - if(seq->blend_mode == SEQ_BLEND_REPLACE) { - mul *= seq->blend_opacity / 100.0; - } - - if(seq->flag & SEQ_USE_COLOR_BALANCE && seq->strip->color_balance) { - color_balance(seq, se, mul); - mul = 1.0; - } - - if(seq->flag & SEQ_MAKE_FLOAT) { - if (!se->ibuf->rect_float) { - IMB_float_from_rect(se->ibuf); - } - if (se->ibuf->rect) { - imb_freerectImBuf(se->ibuf); - } - } - - if(mul != 1.0) { - multibuf(se->ibuf, mul); - } - - if(seq->flag & SEQ_MAKE_PREMUL) { - if(se->ibuf->depth == 32 && se->ibuf->zbuf == 0) { - converttopremul(se->ibuf); - } - } - - - if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty ) { - if(scene->r.mode & R_OSA) { - IMB_scaleImBuf(se->ibuf, - (short)seqrectx, (short)seqrecty); - } else { - IMB_scalefastImBuf(se->ibuf, - (short)seqrectx, (short)seqrecty); - } - } -} - -/* test if image too small or discarded from cache: reload */ - -static void test_and_auto_discard_ibuf(TStripElem * se) -{ - if (se->ibuf) { - if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty - || !(se->ibuf->rect || se->ibuf->rect_float)) { - IMB_freeImBuf(se->ibuf); - - se->ibuf= 0; - se->ok= STRIPELEM_OK; - } - } - if (se->ibuf_comp) { - if(se->ibuf_comp->x != seqrectx || se->ibuf_comp->y != seqrecty - || !(se->ibuf_comp->rect || se->ibuf_comp->rect_float)) { - IMB_freeImBuf(se->ibuf_comp); - - se->ibuf_comp = 0; - } - } -} - -static void test_and_auto_discard_ibuf_stills(Strip * strip) -{ - if (strip->ibuf_startstill) { - if (!strip->ibuf_startstill->rect && - !strip->ibuf_startstill->rect_float) { - IMB_freeImBuf(strip->ibuf_startstill); - strip->ibuf_startstill = 0; - } - } - if (strip->ibuf_endstill) { - if (!strip->ibuf_endstill->rect && - !strip->ibuf_endstill->rect_float) { - IMB_freeImBuf(strip->ibuf_endstill); - strip->ibuf_endstill = 0; - } - } -} - -static void copy_from_ibuf_still(Sequence * seq, TStripElem * se) -{ - if (!se->ibuf) { - if (se->nr == 0 && seq->strip->ibuf_startstill) { - IMB_cache_limiter_touch(seq->strip->ibuf_startstill); - - se->ibuf = IMB_dupImBuf(seq->strip->ibuf_startstill); - } - if (se->nr == seq->len - 1 - && (seq->len != 1) - && seq->strip->ibuf_endstill) { - IMB_cache_limiter_touch(seq->strip->ibuf_endstill); - - se->ibuf = IMB_dupImBuf(seq->strip->ibuf_endstill); - } - } -} - -static void copy_to_ibuf_still(Sequence * seq, TStripElem * se) -{ - if (se->ibuf) { - if (se->nr == 0) { - seq->strip->ibuf_startstill = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_insert(seq->strip->ibuf_startstill); - IMB_cache_limiter_touch(seq->strip->ibuf_startstill); - } - if (se->nr == seq->len - 1 && seq->len != 1) { - seq->strip->ibuf_endstill = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_insert(seq->strip->ibuf_endstill); - IMB_cache_limiter_touch(seq->strip->ibuf_endstill); - } - } -} - -static void free_metastrip_imbufs(ListBase *seqbasep, int cfra, int chanshown) -{ - Sequence* seq_arr[MAXSEQ+1]; - int i; - TStripElem* se = 0; - - evaluate_seq_frame_gen(seq_arr, seqbasep, cfra); - - for (i = 0; i < MAXSEQ; i++) { - if (!video_seq_is_rendered(seq_arr[i])) { - continue; - } - se = give_tstripelem(seq_arr[i], cfra); - if (se) { - if (se->ibuf) { - IMB_freeImBuf(se->ibuf); - - se->ibuf= 0; - se->ok= STRIPELEM_OK; - } - - if (se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - - se->ibuf_comp = 0; - } - } - } - -} - -static void check_limiter_refcount(const char * func, TStripElem *se) -{ - if (se && se->ibuf) { - int refcount = IMB_cache_limiter_get_refcount(se->ibuf); - if (refcount != 1) { - /* can happen on complex pipelines */ - if (refcount > 1 && (G.f & G_DEBUG) == 0) { - return; - } - - fprintf(stderr, - "sequencer: (ibuf) %s: " - "suspicious memcache " - "limiter refcount: %d\n", func, refcount); - } - } -} - -static void check_limiter_refcount_comp(const char * func, TStripElem *se) -{ - if (se && se->ibuf_comp) { - int refcount = IMB_cache_limiter_get_refcount(se->ibuf_comp); - if (refcount != 1) { - /* can happen on complex pipelines */ - if (refcount > 1 && (G.f & G_DEBUG) == 0) { - return; - } - fprintf(stderr, - "sequencer: (ibuf comp) %s: " - "suspicious memcache " - "limiter refcount: %d\n", func, refcount); - } - } -} - -static TStripElem* do_build_seq_array_recursively(Scene *scene, - ListBase *seqbasep, int cfra, int chanshown, int render_size); - -static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra, - int build_proxy_run, int render_size) -{ - char name[FILE_MAXDIR+FILE_MAXFILE]; - int use_limiter = TRUE; - - test_and_auto_discard_ibuf(se); - test_and_auto_discard_ibuf_stills(seq->strip); - - if(seq->type == SEQ_META) { - TStripElem * meta_se = 0; - int use_preprocess = FALSE; - use_limiter = FALSE; - - if (!build_proxy_run && se->ibuf == 0) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - use_limiter = TRUE; - use_preprocess = TRUE; - } - } - - if(!se->ibuf && seq->seqbase.first) { - meta_se = do_build_seq_array_recursively(scene, - &seq->seqbase, seq->start + se->nr, 0, - render_size); - - check_limiter_refcount("do_build_seq_ibuf: for META", meta_se); - } - - se->ok = STRIPELEM_OK; - - if(!se->ibuf && meta_se) { - se->ibuf = meta_se->ibuf_comp; - if(se->ibuf && - (!input_have_to_preprocess(scene, seq, se, cfra) || - build_proxy_run)) { - IMB_refImBuf(se->ibuf); - if (build_proxy_run) { - IMB_cache_limiter_unref(se->ibuf); - } - } else if (se->ibuf) { - struct ImBuf * i = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_unref(se->ibuf); - - se->ibuf = i; - - use_limiter = TRUE; - use_preprocess = TRUE; - } - } else if (se->ibuf) { - use_limiter = TRUE; - } - if (meta_se) { - free_metastrip_imbufs( - &seq->seqbase, seq->start + se->nr, 0); - } - - if (use_preprocess) { - input_preprocess(scene, seq, se, cfra); - } - } else if(seq->type & SEQ_EFFECT) { - int use_preprocess = FALSE; - /* should the effect be recalculated? */ - - if (!build_proxy_run && se->ibuf == 0) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - use_preprocess = TRUE; - } - } - - if(se->ibuf == 0) { - /* if any inputs are rectfloat, output is float too */ - if((se->se1 && se->se1->ibuf && se->se1->ibuf->rect_float) || - (se->se2 && se->se2->ibuf && se->se2->ibuf->rect_float) || - (se->se3 && se->se3->ibuf && se->se3->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - do_effect(scene, cfra, seq, se); - if (input_have_to_preprocess(scene, seq, se, cfra) && - !build_proxy_run) { - if ((se->se1 && (se->ibuf == se->se1->ibuf)) || - (se->se2 && (se->ibuf == se->se2->ibuf))) { - struct ImBuf * i - = IMB_dupImBuf(se->ibuf); - - IMB_freeImBuf(se->ibuf); - - se->ibuf = i; - } - use_preprocess = TRUE; - } - } - if (use_preprocess) { - input_preprocess(scene, seq, se, cfra); - } - } else if(seq->type == SEQ_IMAGE) { - if(se->ok == STRIPELEM_OK && se->ibuf == 0) { - StripElem * s_elem = give_stripelem(seq, cfra); - BLI_join_dirfile(name, seq->strip->dir, s_elem->name); - BLI_convertstringcode(name, G.sce); - BLI_convertstringframe(name, scene->r.cfra); - if (!build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - } - copy_from_ibuf_still(seq, se); - - if (!se->ibuf) { - se->ibuf= IMB_loadiffname( - name, IB_rect); - /* we don't need both (speed reasons)! */ - if (se->ibuf && - se->ibuf->rect_float && se->ibuf->rect) { - imb_freerectImBuf(se->ibuf); - } - - copy_to_ibuf_still(seq, se); - } - - if(se->ibuf == 0) { - se->ok = STRIPELEM_FAILED; - } else if (!build_proxy_run) { - input_preprocess(scene, seq, se, cfra); - } - } - } else if(seq->type == SEQ_MOVIE) { - if(se->ok == STRIPELEM_OK && se->ibuf==0) { - if(!build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - } - copy_from_ibuf_still(seq, se); - - if (se->ibuf == 0) { - if(seq->anim==0) { - BLI_join_dirfile(name, seq->strip->dir, seq->strip->stripdata->name); - BLI_convertstringcode(name, G.sce); - BLI_convertstringframe(name, scene->r.cfra); - - seq->anim = openanim( - name, IB_rect | - ((seq->flag & SEQ_FILTERY) - ? IB_animdeinterlace : 0)); - } - if(seq->anim) { - IMB_anim_set_preseek(seq->anim, seq->anim_preseek); - se->ibuf = IMB_anim_absolute(seq->anim, se->nr + seq->anim_startofs); - /* we don't need both (speed reasons)! */ - if (se->ibuf - && se->ibuf->rect_float - && se->ibuf->rect) { - imb_freerectImBuf(se->ibuf); - } - - } - copy_to_ibuf_still(seq, se); - } - - if(se->ibuf == 0) { - se->ok = STRIPELEM_FAILED; - } else if (!build_proxy_run) { - input_preprocess(scene, seq, se, cfra); - } - } - } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions - Scene *sce= seq->scene;// *oldsce= scene; - Render *re; - RenderResult rres; - char scenename[64]; - int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; - int sce_valid =sce && (sce->camera || have_seq); - - if (se->ibuf == NULL && sce_valid && !build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - input_preprocess(scene, seq, se, cfra); - } - } - - if (se->ibuf == NULL && sce_valid) { - copy_from_ibuf_still(seq, se); - if (se->ibuf) { - input_preprocess(scene, seq, se, cfra); - } - } - - if (!sce_valid) { - se->ok = STRIPELEM_FAILED; - } else if (se->ibuf==NULL && sce_valid) { - int oldcfra; - /* Hack! This function can be called from do_render_seq(), in that case - the seq->scene can already have a Render initialized with same name, - so we have to use a default name. (compositor uses scene name to - find render). - However, when called from within the UI (image preview in sequencer) - we do want to use scene Render, that way the render result is defined - for display in render/imagewindow - - Hmm, don't see, why we can't do that all the time, - and since G.rendering is uhm, gone... (Peter) - */ - - int rendering = 1; - int doseq; - - oldcfra = seq->scene->r.cfra; - - if(rendering) { - BLI_strncpy(scenename, sce->id.name+2, 64); - strcpy(sce->id.name+2, " do_build_seq_ibuf"); - } - re= RE_NewRender(sce->id.name); - - /* prevent eternal loop */ - doseq= scene->r.scemode & R_DOSEQ; - scene->r.scemode &= ~R_DOSEQ; - - RE_BlenderFrame(re, sce, - seq->sfra+se->nr+seq->anim_startofs); - - if(rendering) - BLI_strncpy(sce->id.name+2, scenename, 64); - - RE_AcquireResultImage(re, &rres); - - if(rres.rectf) { - se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); - memcpy(se->ibuf->rect_float, rres.rectf, 4*sizeof(float)*rres.rectx*rres.recty); - if(rres.rectz) { - addzbuffloatImBuf(se->ibuf); - memcpy(se->ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty); - } - } else if (rres.rect32) { - se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0); - memcpy(se->ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty); - } - - RE_ReleaseResultImage(re); - - // BIF_end_render_callbacks(); - - /* restore */ - scene->r.scemode |= doseq; - - seq->scene->r.cfra = oldcfra; - - copy_to_ibuf_still(seq, se); - - if (!build_proxy_run) { - if(se->ibuf == NULL) { - se->ok = STRIPELEM_FAILED; - } else { - input_preprocess(scene, seq, se, cfra); - } - } - - } - } - if (!build_proxy_run) { - if (se->ibuf && use_limiter) { - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); - } - } -} - -static TStripElem* do_build_seq_recursively(Scene *scene, Sequence *seq, int cfra, int render_size); - -static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *se, int cfra, int render_size) -{ - float fac, facf; - struct SeqEffectHandle sh = get_sequence_effect(seq); - int early_out; - FCurve *fcu= NULL; - - se->se1 = 0; - se->se2 = 0; - se->se3 = 0; - - if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { - sh.get_default_fac(seq, cfra, &fac, &facf); - if( scene->r.mode & R_FIELDS ); else facf= fac; - } else { - fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, - "effect_fader", 0); - if (fcu) { - fac = facf = evaluate_fcurve(fcu, cfra); - if( scene->r.mode & R_FIELDS ) { - facf = evaluate_fcurve(fcu, cfra + 0.5); - } - } else { - fac = facf = seq->effect_fader; - } - } - - early_out = sh.early_out(seq, fac, facf); - switch (early_out) { - case -1: - /* no input needed */ - break; - case 0: - se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size); - se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size); - if (seq->seq3) { - se->se3 = do_build_seq_recursively(scene, seq->seq3, cfra, render_size); - } - break; - case 1: - se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size); - break; - case 2: - se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size); - break; - } - - - do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size); - - /* children are not needed anymore ... */ - - if (se->se1 && se->se1->ibuf) { - IMB_cache_limiter_unref(se->se1->ibuf); - } - if (se->se2 && se->se2->ibuf) { - IMB_cache_limiter_unref(se->se2->ibuf); - } - if (se->se3 && se->se3->ibuf) { - IMB_cache_limiter_unref(se->se3->ibuf); - } - check_limiter_refcount("do_effect_seq_recursively", se); -} - -static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, int cfra, int render_size) -{ - TStripElem *se; - - se = give_tstripelem(seq, cfra); - - if(se) { - if (seq->type & SEQ_EFFECT) { - do_effect_seq_recursively(scene, seq, se, cfra, render_size); - } else { - do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size); - } - } - return se; -} - -/* FIXME: - -If cfra was float throughout blender (especially in the render -pipeline) one could even _render_ with subframe precision -instead of faking using the blend code below... - -*/ - -static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra, int render_size) -{ - SpeedControlVars * s = (SpeedControlVars *)seq->effectdata; - int nr = cfra - seq->start; - float f_cfra; - int cfra_left; - int cfra_right; - TStripElem * se = 0; - TStripElem * se1 = 0; - TStripElem * se2 = 0; - - sequence_effect_speed_rebuild_map(scene, seq, 0); - - f_cfra = seq->start + s->frameMap[nr]; - - cfra_left = (int) floor(f_cfra); - cfra_right = (int) ceil(f_cfra); - - se = give_tstripelem(seq, cfra); - - if (!se) { - return se; - } - - if (cfra_left == cfra_right || - (s->flags & SEQ_SPEED_BLEND) == 0) { - test_and_auto_discard_ibuf(se); - - if (se->ibuf == NULL) { - se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size); - - if((se1 && se1->ibuf && se1->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - if (se1 == 0 || se1->ibuf == 0) { - make_black_ibuf(se->ibuf); - } else { - if (se->ibuf != se1->ibuf) { - if (se->ibuf) { - IMB_freeImBuf(se->ibuf); - } - - se->ibuf = se1->ibuf; - IMB_refImBuf(se->ibuf); - } - } - } - } else { - struct SeqEffectHandle sh; - - if(se->ibuf) { - if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty - || !(se->ibuf->rect || se->ibuf->rect_float)) { - IMB_freeImBuf(se->ibuf); - se->ibuf= 0; - } - } - - if (se->ibuf == NULL) { - se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size); - se2 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_right, render_size); - - if((se1 && se1->ibuf && se1->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - if (!se1 || !se2) { - make_black_ibuf(se->ibuf); - } else { - sh = get_sequence_effect(seq); - - sh.execute(scene, seq, cfra, - f_cfra - (float) cfra_left, - f_cfra - (float) cfra_left, - se->ibuf->x, se->ibuf->y, - se1->ibuf, se2->ibuf, 0, se->ibuf); - } - } - - } - - /* caller expects this to be referenced, so do it! */ - if (se->ibuf) { - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); - } - - /* children are no longer needed */ - if (se1 && se1->ibuf) - IMB_cache_limiter_unref(se1->ibuf); - if (se2 && se2->ibuf) - IMB_cache_limiter_unref(se2->ibuf); - - check_limiter_refcount("do_handle_speed_effect", se); - - return se; -} - -/* - * build all ibufs recursively - * - * if successfull, the returned TStripElem contains the (referenced!) imbuf - * that means: you _must_ call - * - * IMB_cache_limiter_unref(rval); - * - * if rval != 0 - * - */ - -static TStripElem* do_build_seq_recursively(Scene *scene, Sequence * seq, int cfra, int render_size) -{ - TStripElem *se; - if (seq->type == SEQ_SPEED) { - se = do_handle_speed_effect(scene, seq, cfra, render_size); - } else { - se = do_build_seq_recursively_impl(scene, seq, cfra, render_size); - } - - check_limiter_refcount("do_build_seq_recursively", se); - - return se; -} - -static TStripElem* do_build_seq_array_recursively(Scene *scene, - ListBase *seqbasep, int cfra, int chanshown, int render_size) -{ - Sequence* seq_arr[MAXSEQ+1]; - int count; - int i; - TStripElem* se = 0; - - count = get_shown_sequences(seqbasep, cfra, chanshown, (Sequence **)&seq_arr); - - if (!count) { - return 0; - } - - se = give_tstripelem(seq_arr[count - 1], cfra); - - if (!se) { - return 0; - } - - test_and_auto_discard_ibuf(se); - - if (se->ibuf_comp != 0) { - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - return se; - } - - - if(count == 1) { - se = do_build_seq_recursively(scene, seq_arr[0], cfra, render_size); - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); - } - return se; - } - - - for (i = count - 1; i >= 0; i--) { - int early_out; - Sequence * seq = seq_arr[i]; - struct SeqEffectHandle sh; - float facf; - - se = give_tstripelem(seq, cfra); - - test_and_auto_discard_ibuf(se); - - if (se->ibuf_comp != 0) { - break; - } - if (seq->blend_mode == SEQ_BLEND_REPLACE) { - do_build_seq_recursively(scene, seq, cfra, render_size); - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf); - } else { - se->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - } - break; - } - - sh = get_sequence_blend(seq); - - facf = seq->blend_opacity / 100.0; - - early_out = sh.early_out(seq, facf, facf); - - switch (early_out) { - case -1: - case 2: - do_build_seq_recursively(scene, seq, cfra, render_size); - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); - } else { - se->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - } - break; - case 1: - if (i == 0) { - se->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - } - break; - case 0: - do_build_seq_recursively(scene, seq, cfra, render_size); - if (!se->ibuf) { - se->ibuf = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); - } - if (i == 0) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); - } - break; - } - - if (se->ibuf_comp) { - break; - } - } - - i++; - - for (; i < count; i++) { - Sequence * seq = seq_arr[i]; - struct SeqEffectHandle sh = get_sequence_blend(seq); - TStripElem* se1 = give_tstripelem(seq_arr[i-1], cfra); - TStripElem* se2 = give_tstripelem(seq_arr[i], cfra); - - float facf = seq->blend_opacity / 100.0; - - int early_out = sh.early_out(seq, facf, facf); - switch (early_out) { - case 0: { - int x= se2->ibuf->x; - int y= se2->ibuf->y; - int swap_input = FALSE; - - if (se1->ibuf_comp->rect_float || - se2->ibuf->rect_float) { - se2->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rectfloat, 0); - } else { - se2->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - } - - - if (!se1->ibuf_comp->rect_float && - se2->ibuf_comp->rect_float) { - IMB_float_from_rect(se1->ibuf_comp); - } - if (!se2->ibuf->rect_float && - se2->ibuf_comp->rect_float) { - IMB_float_from_rect(se2->ibuf); - } - - if (!se1->ibuf_comp->rect && - !se2->ibuf_comp->rect_float) { - IMB_rect_from_float(se1->ibuf_comp); - } - if (!se2->ibuf->rect && - !se2->ibuf_comp->rect_float) { - IMB_rect_from_float(se2->ibuf); - } - - /* bad hack, to fix crazy input ordering of - those two effects */ - - if (seq->blend_mode == SEQ_ALPHAOVER || - seq->blend_mode == SEQ_ALPHAUNDER || - seq->blend_mode == SEQ_OVERDROP) { - swap_input = TRUE; - } - - if (swap_input) { - sh.execute(scene, seq, cfra, - facf, facf, x, y, - se2->ibuf, se1->ibuf_comp, 0, - se2->ibuf_comp); - } else { - sh.execute(scene, seq, cfra, - facf, facf, x, y, - se1->ibuf_comp, se2->ibuf, 0, - se2->ibuf_comp); - } - - IMB_cache_limiter_insert(se2->ibuf_comp); - IMB_cache_limiter_ref(se2->ibuf_comp); - IMB_cache_limiter_touch(se2->ibuf_comp); - - IMB_cache_limiter_unref(se1->ibuf_comp); - IMB_cache_limiter_unref(se2->ibuf); - - break; - } - case 1: { - se2->ibuf_comp = se1->ibuf; - IMB_refImBuf(se2->ibuf_comp); - - break; - } - } - se = se2; - } - - return se; -} - -/* - * returned ImBuf is refed! - * you have to unref after usage! - */ - -static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) -{ - Editing *ed= seq_give_editing(scene, FALSE); - int count; - ListBase *seqbasep; - TStripElem *se; - - - if(ed==NULL) return NULL; - - count = BLI_countlist(&ed->metastack); - if((chanshown < 0) && (count > 0)) { - count = MAX2(count + chanshown, 0); - seqbasep= ((MetaStack*)BLI_findlink(&ed->metastack, count))->oldbasep; - } else { - seqbasep= ed->seqbasep; - } - - seqrectx= rectx; /* bad bad global! */ - seqrecty= recty; - - se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown, render_size); - - if(!se) { - return 0; - } - - check_limiter_refcount_comp("give_ibuf_seq_impl", se); - - return se->ibuf_comp; -} - -ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq) -{ - TStripElem* se; - - seqrectx= rectx; /* bad bad global! */ - seqrecty= recty; - - se = do_build_seq_recursively(scene, seq, cfra, render_size); - - if(!se) { - return 0; - } - - check_limiter_refcount("give_ibuf_seq_direct", se); - - if (se->ibuf) { - IMB_cache_limiter_unref(se->ibuf); - } - - return se->ibuf; -} - -ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) -{ - ImBuf* i = give_ibuf_seq_impl(scene, rectx, recty, cfra, chanshown, render_size); - - if (i) { - IMB_cache_limiter_unref(i); - } - return i; -} - -#if 0 -/* check used when we need to change seq->blend_mode but not to effect or audio strips */ -static int seq_can_blend(Sequence *seq) -{ - if (ELEM4(seq->type, SEQ_IMAGE, SEQ_META, SEQ_SCENE, SEQ_MOVIE)) { - return 1; - } else { - return 0; - } -} -#endif - -/* *********************** threading api ******************* */ - -static ListBase running_threads; -static ListBase prefetch_wait; -static ListBase prefetch_done; - -static pthread_mutex_t queue_lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t wakeup_lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t wakeup_cond = PTHREAD_COND_INITIALIZER; - -//static pthread_mutex_t prefetch_ready_lock = PTHREAD_MUTEX_INITIALIZER; -//static pthread_cond_t prefetch_ready_cond = PTHREAD_COND_INITIALIZER; - -static pthread_mutex_t frame_done_lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t frame_done_cond = PTHREAD_COND_INITIALIZER; - -static volatile int seq_thread_shutdown = FALSE; -static volatile int seq_last_given_monoton_cfra = 0; -static int monoton_cfra = 0; - -typedef struct PrefetchThread { - struct PrefetchThread *next, *prev; - - Scene *scene; - struct PrefetchQueueElem *current; - pthread_t pthread; - int running; - -} PrefetchThread; - -typedef struct PrefetchQueueElem { - struct PrefetchQueueElem *next, *prev; - - int rectx; - int recty; - int cfra; - int chanshown; - int render_size; - - int monoton_cfra; - - struct ImBuf * ibuf; -} PrefetchQueueElem; - -#if 0 -static void *seq_prefetch_thread(void * This_) -{ - PrefetchThread * This = This_; - - while (!seq_thread_shutdown) { - PrefetchQueueElem *e; - int s_last; - - pthread_mutex_lock(&queue_lock); - e = prefetch_wait.first; - if (e) { - BLI_remlink(&prefetch_wait, e); - } - s_last = seq_last_given_monoton_cfra; - - This->current = e; - - pthread_mutex_unlock(&queue_lock); - - if (!e) { - pthread_mutex_lock(&prefetch_ready_lock); - - This->running = FALSE; - - pthread_cond_signal(&prefetch_ready_cond); - pthread_mutex_unlock(&prefetch_ready_lock); - - pthread_mutex_lock(&wakeup_lock); - if (!seq_thread_shutdown) { - pthread_cond_wait(&wakeup_cond, &wakeup_lock); - } - pthread_mutex_unlock(&wakeup_lock); - continue; - } - - This->running = TRUE; - - if (e->cfra >= s_last) { - e->ibuf = give_ibuf_seq_impl(This->scene, - e->rectx, e->recty, e->cfra, e->chanshown, - e->render_size); - } - - pthread_mutex_lock(&queue_lock); - - BLI_addtail(&prefetch_done, e); - - for (e = prefetch_wait.first; e; e = e->next) { - if (s_last > e->monoton_cfra) { - BLI_remlink(&prefetch_wait, e); - MEM_freeN(e); - } - } - - for (e = prefetch_done.first; e; e = e->next) { - if (s_last > e->monoton_cfra) { - if (e->ibuf) { - IMB_cache_limiter_unref(e->ibuf); - } - BLI_remlink(&prefetch_done, e); - MEM_freeN(e); - } - } - - pthread_mutex_unlock(&queue_lock); - - pthread_mutex_lock(&frame_done_lock); - pthread_cond_signal(&frame_done_cond); - pthread_mutex_unlock(&frame_done_lock); - } - return 0; -} - -static void seq_start_threads(Scene *scene) -{ - int i; - - running_threads.first = running_threads.last = NULL; - prefetch_wait.first = prefetch_wait.last = NULL; - prefetch_done.first = prefetch_done.last = NULL; - - seq_thread_shutdown = FALSE; - seq_last_given_monoton_cfra = monoton_cfra = 0; - - /* since global structures are modified during the processing - of one frame, only one render thread is currently possible... - - (but we code, in the hope, that we can remove this restriction - soon...) - */ - - fprintf(stderr, "SEQ-THREAD: seq_start_threads\n"); - - for (i = 0; i < 1; i++) { - PrefetchThread *t = MEM_callocN(sizeof(PrefetchThread), "prefetch_thread"); - t->scene= scene; - t->running = TRUE; - BLI_addtail(&running_threads, t); - - pthread_create(&t->pthread, NULL, seq_prefetch_thread, t); - } - - /* init malloc mutex */ - BLI_init_threads(0, 0, 0); -} - -static void seq_stop_threads() -{ - PrefetchThread *tslot; - PrefetchQueueElem *e; - - fprintf(stderr, "SEQ-THREAD: seq_stop_threads()\n"); - - if (seq_thread_shutdown) { - fprintf(stderr, "SEQ-THREAD: ... already stopped\n"); - return; - } - - pthread_mutex_lock(&wakeup_lock); - - seq_thread_shutdown = TRUE; - - pthread_cond_broadcast(&wakeup_cond); - pthread_mutex_unlock(&wakeup_lock); - - for(tslot = running_threads.first; tslot; tslot= tslot->next) { - pthread_join(tslot->pthread, NULL); - } - - - for (e = prefetch_wait.first; e; e = e->next) { - BLI_remlink(&prefetch_wait, e); - MEM_freeN(e); - } - - for (e = prefetch_done.first; e; e = e->next) { - if (e->ibuf) { - IMB_cache_limiter_unref(e->ibuf); - } - BLI_remlink(&prefetch_done, e); - MEM_freeN(e); - } - - BLI_freelistN(&running_threads); - - /* deinit malloc mutex */ - BLI_end_threads(0); -} -#endif - -void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, - int render_size) -{ - PrefetchQueueElem *e; - if (seq_thread_shutdown) { - return; - } - - e = MEM_callocN(sizeof(PrefetchQueueElem), "prefetch_queue_elem"); - e->rectx = rectx; - e->recty = recty; - e->cfra = cfra; - e->chanshown = chanshown; - e->render_size = render_size; - e->monoton_cfra = monoton_cfra++; - - pthread_mutex_lock(&queue_lock); - BLI_addtail(&prefetch_wait, e); - pthread_mutex_unlock(&queue_lock); - - pthread_mutex_lock(&wakeup_lock); - pthread_cond_signal(&wakeup_cond); - pthread_mutex_unlock(&wakeup_lock); -} - -#if 0 -static void seq_wait_for_prefetch_ready() -{ - PrefetchThread *tslot; - - if (seq_thread_shutdown) { - return; - } - - fprintf(stderr, "SEQ-THREAD: rendering prefetch frames...\n"); - - pthread_mutex_lock(&prefetch_ready_lock); - - for(;;) { - for(tslot = running_threads.first; tslot; tslot= tslot->next) { - if (tslot->running) { - break; - } - } - if (!tslot) { - break; - } - pthread_cond_wait(&prefetch_ready_cond, &prefetch_ready_lock); - } - - pthread_mutex_unlock(&prefetch_ready_lock); - - fprintf(stderr, "SEQ-THREAD: prefetch done\n"); -} -#endif - -ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) -{ - PrefetchQueueElem *e = NULL; - int found_something = FALSE; - - if (seq_thread_shutdown) { - return give_ibuf_seq(scene, rectx, recty, cfra, chanshown, render_size); - } - - while (!e) { - int success = FALSE; - pthread_mutex_lock(&queue_lock); - - for (e = prefetch_done.first; e; e = e->next) { - if (cfra == e->cfra && - chanshown == e->chanshown && - rectx == e->rectx && - recty == e->recty && - render_size == e->render_size) { - success = TRUE; - found_something = TRUE; - break; - } - } - - if (!e) { - for (e = prefetch_wait.first; e; e = e->next) { - if (cfra == e->cfra && - chanshown == e->chanshown && - rectx == e->rectx && - recty == e->recty && - render_size == e->render_size) { - found_something = TRUE; - break; - } - } - } - - if (!e) { - PrefetchThread *tslot; - - for(tslot = running_threads.first; - tslot; tslot= tslot->next) { - if (tslot->current && - cfra == tslot->current->cfra && - chanshown == tslot->current->chanshown && - rectx == tslot->current->rectx && - recty == tslot->current->recty && - render_size== tslot->current->render_size){ - found_something = TRUE; - break; - } - } - } - - /* e->ibuf is unrefed by render thread on next round. */ - - if (e) { - seq_last_given_monoton_cfra = e->monoton_cfra; - } - - pthread_mutex_unlock(&queue_lock); - - if (!success) { - e = NULL; - - if (!found_something) { - fprintf(stderr, - "SEQ-THREAD: Requested frame " - "not in queue ???\n"); - break; - } - pthread_mutex_lock(&frame_done_lock); - pthread_cond_wait(&frame_done_cond, &frame_done_lock); - pthread_mutex_unlock(&frame_done_lock); - } - } - - return e ? e->ibuf : 0; -} - -/* Functions to free imbuf and anim data on changes */ - -static void free_imbuf_strip_elem(TStripElem *se) -{ - if(se->ibuf) { - IMB_freeImBuf(se->ibuf); - } - if(se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - } - se->ibuf_comp = 0; - se->ibuf= 0; - se->ok= STRIPELEM_OK; - se->se1= se->se2= se->se3= 0; -} - -static void free_anim_seq(Sequence *seq) -{ - if(seq->anim) { - IMB_free_anim(seq->anim); - seq->anim = 0; - } -} - -#if 0 -static void free_imbuf_seq_except(Scene *scene, int cfra) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - TStripElem *se; - int a; - - if(ed==NULL) return; - - SEQ_BEGIN(ed, seq) { - if(seq->strip) { - TStripElem * curelem = give_tstripelem(seq, cfra); - - for(a = 0, se = seq->strip->tstripdata; - a < seq->strip->len && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - for(a = 0, se = seq->strip->tstripdata_startstill; - a < seq->strip->startstill && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - for(a = 0, se = seq->strip->tstripdata_endstill; - a < seq->strip->endstill && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - - if(seq->type==SEQ_MOVIE) - if(seq->startdisp > cfra || seq->enddisp < cfra) - free_anim_seq(seq); - free_proxy_seq(seq); - } - } - SEQ_END -} -#endif - -void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage) -{ - Sequence *seq; - TStripElem *se; - int a; - - if (check_mem_usage) { - /* Let the cache limitor take care of this (schlaile) */ - /* While render let's keep all memory available for render - (ton) - At least if free memory is tight... - This can make a big difference in encoding speed - (it is around 4 times(!) faster, if we do not waste time - on freeing _all_ buffers every time on long timelines...) - (schlaile) - */ - - uintptr_t mem_in_use; - uintptr_t mmap_in_use; - uintptr_t max; - - mem_in_use= MEM_get_memory_in_use(); - mmap_in_use= MEM_get_mapped_memory_in_use(); - max = MEM_CacheLimiter_get_maximum(); - - if (max == 0 || mem_in_use + mmap_in_use <= max) { - return; - } - } - - - for(seq= seqbase->first; seq; seq= seq->next) { - if(seq->strip) { - for(a = 0, se = seq->strip->tstripdata; - a < seq->strip->len && se; a++, se++) { - free_imbuf_strip_elem(se); - } - for(a = 0, se = seq->strip->tstripdata_startstill; - a < seq->strip->startstill && se; a++, se++) { - free_imbuf_strip_elem(se); - } - for(a = 0, se = seq->strip->tstripdata_endstill; - a < seq->strip->endstill && se; a++, se++) { - free_imbuf_strip_elem(se); - } - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - - if(seq->type==SEQ_MOVIE) - free_anim_seq(seq); - if(seq->type==SEQ_SPEED) { - sequence_effect_speed_rebuild_map(scene, seq, 1); - } - } - if(seq->type==SEQ_META) { - free_imbuf_seq(scene, &seq->seqbase, FALSE); - } - if(seq->type==SEQ_SCENE) { - /* FIXME: recurs downwards, - but do recurs protection somehow! */ - } - } - -} - -static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *changed_seq, int len_change, int ibuf_change) -{ - Sequence *subseq; - int a, free_imbuf = 0; - TStripElem *se; - - /* recurs downwards to see if this seq depends on the changed seq */ - - if(seq == NULL) - return 0; - - if(seq == changed_seq) - free_imbuf = 1; - - for(subseq=seq->seqbase.first; subseq; subseq=subseq->next) - if(update_changed_seq_recurs(scene, subseq, changed_seq, len_change, ibuf_change)) - free_imbuf = TRUE; - - if(seq->seq1) - if(update_changed_seq_recurs(scene, seq->seq1, changed_seq, len_change, ibuf_change)) - free_imbuf = TRUE; - if(seq->seq2 && (seq->seq2 != seq->seq1)) - if(update_changed_seq_recurs(scene, seq->seq2, changed_seq, len_change, ibuf_change)) - free_imbuf = TRUE; - if(seq->seq3 && (seq->seq3 != seq->seq1) && (seq->seq3 != seq->seq2)) - if(update_changed_seq_recurs(scene, seq->seq3, changed_seq, len_change, ibuf_change)) - free_imbuf = TRUE; - - if(free_imbuf) { - if(ibuf_change) { - se= seq->strip->tstripdata; - if (se) { - for(a=0; alen; a++, se++) - free_imbuf_strip_elem(se); - } - - if(seq->type == SEQ_MOVIE) - free_anim_seq(seq); - if(seq->type == SEQ_SPEED) { - sequence_effect_speed_rebuild_map(scene, seq, 1); - } - } - - if(len_change) - calc_sequence(seq); - } - - return free_imbuf; -} - -void update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_change, int ibuf_change) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - - if (ed==NULL) return; - - for (seq=ed->seqbase.first; seq; seq=seq->next) - update_changed_seq_recurs(scene, seq, changed_seq, len_change, ibuf_change); -} - -#if 0 // XXX from 2.4x, needs updating -void free_imbuf_seq() -{ - Scene * sce = G.main->scene.first; - while(sce) { - free_imbuf_seq_editing(sce->ed); - sce= sce->id.next; - } -} -#endif - -#if 0 // XXX old animation system -static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo) -{ - /* force update of all sequences with this ipo, on ipo changes */ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - - if(ed==NULL) return; - - SEQ_BEGIN(ed, seq) { - if(seq->ipo == ipo) { - update_changed_seq_and_deps(scene, seq, 0, 1); - if(seq->type == SEQ_SPEED) { - sequence_effect_speed_rebuild_map(seq, 1); - } - free_proxy_seq(seq); - } - } - SEQ_END -} -#endif - -/* seq funcs's for transforming internally - notice the difference between start/end and left/right. - - left and right are the bounds at which the sequence is rendered, -start and end are from the start and fixed length of the sequence. -*/ -int seq_tx_get_start(Sequence *seq) { - return seq->start; -} -int seq_tx_get_end(Sequence *seq) -{ - return seq->start+seq->len; -} - -int seq_tx_get_final_left(Sequence *seq, int metaclip) -{ - if (metaclip && seq->tmp) { - /* return the range clipped by the parents range */ - return MAX2( seq_tx_get_final_left(seq, 0), seq_tx_get_final_left((Sequence *)seq->tmp, 1) ); - } else { - return (seq->start - seq->startstill) + seq->startofs; - } - -} -int seq_tx_get_final_right(Sequence *seq, int metaclip) -{ - if (metaclip && seq->tmp) { - /* return the range clipped by the parents range */ - return MIN2( seq_tx_get_final_right(seq, 0), seq_tx_get_final_right((Sequence *)seq->tmp, 1) ); - } else { - return ((seq->start+seq->len) + seq->endstill) - seq->endofs; - } -} - -void seq_tx_set_final_left(Sequence *seq, int val) -{ - if (val < (seq)->start) { - seq->startstill = abs(val - (seq)->start); - seq->startofs = 0; - } else { - seq->startofs = abs(val - (seq)->start); - seq->startstill = 0; - } -} - -void seq_tx_set_final_right(Sequence *seq, int val) -{ - if (val > (seq)->start + (seq)->len) { - seq->endstill = abs(val - (seq->start + (seq)->len)); - seq->endofs = 0; - } else { - seq->endofs = abs(val - ((seq)->start + (seq)->len)); - seq->endstill = 0; - } -} - -/* used so we can do a quick check for single image seq - since they work a bit differently to normal image seq's (during transform) */ -int check_single_seq(Sequence *seq) -{ - if ( seq->len==1 && (seq->type == SEQ_IMAGE || seq->type == SEQ_COLOR)) - return 1; - else - return 0; -} - -/* use to impose limits when dragging/extending - so impossible situations dont happen - * Cant use the SEQ_LEFTSEL and SEQ_LEFTSEL directly because the strip may be in a metastrip */ -void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) -{ - if(leftflag) { - if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_final_right(seq, 0)) { - seq_tx_set_final_left(seq, seq_tx_get_final_right(seq, 0)-1); - } - - if (check_single_seq(seq)==0) { - if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_end(seq)) { - seq_tx_set_final_left(seq, seq_tx_get_end(seq)-1); - } - - /* dosnt work now - TODO */ - /* - if (seq_tx_get_start(seq) >= seq_tx_get_final_right(seq, 0)) { - int ofs; - ofs = seq_tx_get_start(seq) - seq_tx_get_final_right(seq, 0); - seq->start -= ofs; - seq_tx_set_final_left(seq, seq_tx_get_final_left(seq, 0) + ofs ); - }*/ - - } - } - - if(rightflag) { - if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_final_left(seq, 0)) { - seq_tx_set_final_right(seq, seq_tx_get_final_left(seq, 0)+1); - } - - if (check_single_seq(seq)==0) { - if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_start(seq)) { - seq_tx_set_final_right(seq, seq_tx_get_start(seq)+1); - } - } - } - - /* sounds cannot be extended past their endpoints */ - if (seq->type == SEQ_SOUND) { - seq->startstill= 0; - seq->endstill= 0; - } -} - -void fix_single_seq(Sequence *seq) -{ - int left, start, offset; - if (!check_single_seq(seq)) - return; - - /* make sure the image is always at the start since there is only one, - adjusting its start should be ok */ - left = seq_tx_get_final_left(seq, 0); - start = seq->start; - if (start != left) { - offset = left - start; - seq_tx_set_final_left( seq, seq_tx_get_final_left(seq, 0) - offset ); - seq_tx_set_final_right( seq, seq_tx_get_final_right(seq, 0) - offset ); - seq->start += offset; - } -} - -int seq_tx_test(Sequence * seq) -{ - return (seq->type < SEQ_EFFECT) || (get_sequence_effect_num_inputs(seq->type) == 0); -} - -static int seq_overlap(Sequence *seq1, Sequence *seq2) -{ - if(seq1 != seq2) - if(seq1->machine==seq2->machine) - if(((seq1->enddisp <= seq2->startdisp) || (seq1->startdisp >= seq2->enddisp))==0) - return 1; - - return 0; -} - -int seq_test_overlap(ListBase * seqbasep, Sequence *test) -{ - Sequence *seq; - - seq= seqbasep->first; - while(seq) { - if(seq_overlap(test, seq)) - return 1; - - seq= seq->next; - } - return 0; -} - - -static void seq_translate(Sequence *seq, int delta) -{ - seq->start += delta; - if(seq->type==SEQ_META) { - Sequence *seq_child; - for(seq_child= seq->seqbase.first; seq_child; seq_child= seq_child->next) { - seq_translate(seq_child, delta); - } - } - - calc_sequence_disp(seq); -} - -/* return 0 if there werent enough space */ -int shuffle_seq(ListBase * seqbasep, Sequence *test) -{ - int orig_machine= test->machine; - test->machine++; - calc_sequence(test); - while( seq_test_overlap(seqbasep, test) ) { - if(test->machine >= MAXSEQ) { - break; - } - test->machine++; - calc_sequence(test); // XXX - I dont think this is needed since were only moving vertically, Campbell. - } - - - if(test->machine >= MAXSEQ) { - /* Blender 2.4x would remove the strip. - * nicer to move it to the end */ - - Sequence *seq; - int new_frame= test->enddisp; - - for(seq= seqbasep->first; seq; seq= seq->next) { - if (seq->machine == orig_machine) - new_frame = MAX2(new_frame, seq->enddisp); - } - - test->machine= orig_machine; - new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */ - seq_translate(test, new_frame - test->start); - - calc_sequence(test); - return 0; - } else { - return 1; - } -} - -static int shuffle_seq_time_offset_test(ListBase * seqbasep, char dir) -{ - int offset= 0; - Sequence *seq, *seq_other; - - for(seq= seqbasep->first; seq; seq= seq->next) { - if(seq->tmp) { - for(seq_other= seqbasep->first; seq_other; seq_other= seq_other->next) { - if(!seq_other->tmp && seq_overlap(seq, seq_other)) { - if(dir=='L') { - offset= MIN2(offset, seq_other->startdisp - seq->enddisp); - } - else { - offset= MAX2(offset, seq_other->enddisp - seq->startdisp); - } - } - } - } - } - return offset; -} - -static int shuffle_seq_time_offset(ListBase * seqbasep, char dir) -{ - int ofs= 0; - int tot_ofs= 0; - Sequence *seq; - while( (ofs= shuffle_seq_time_offset_test(seqbasep, dir)) ) { - for(seq= seqbasep->first; seq; seq= seq->next) { - if(seq->tmp) { - /* seq_test_overlap only tests display values */ - seq->startdisp += ofs; - seq->enddisp += ofs; - } - } - - tot_ofs+= ofs; - } - - for(seq= seqbasep->first; seq; seq= seq->next) { - if(seq->tmp) - calc_sequence_disp(seq); /* corrects dummy startdisp/enddisp values */ - } - - return tot_ofs; -} - -int shuffle_seq_time(ListBase * seqbasep) -{ - /* note: seq->tmp is used to tag strips to move */ - - Sequence *seq; - - int offset_l = shuffle_seq_time_offset(seqbasep, 'L'); - int offset_r = shuffle_seq_time_offset(seqbasep, 'R'); - int offset = (-offset_l < offset_r) ? offset_l:offset_r; - - if(offset) { - for(seq= seqbasep->first; seq; seq= seq->next) { - if(seq->tmp) { - seq_translate(seq, offset); - seq->flag &= ~SEQ_OVERLAP; - } - } - } - - return offset? 0:1; -} - -void seq_update_sound(Sequence *seq) -{ - if(seq->type == SEQ_SOUND && seq->sound_handle) - { - seq->sound_handle->startframe = seq->startdisp; - seq->sound_handle->endframe = seq->enddisp; - seq->sound_handle->frameskip = seq->startofs + seq->anim_startofs; - seq->sound_handle->changed = -1; - /* mute is set in seq_update_muting_recursive */ - } -} - -static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, int mute) -{ - Sequence *seq; - int seqmute; - - /* for sound we go over full meta tree to update muted state, - since sound is played outside of evaluating the imbufs, */ - for(seq=seqbasep->first; seq; seq=seq->next) { - seqmute= (mute || (seq->flag & SEQ_MUTE)); - - if(seq->type == SEQ_META) { - /* if this is the current meta sequence, unmute because - all sequences above this were set to mute */ - if(seq == metaseq) - seqmute= 0; - - seq_update_muting_recursive(&seq->seqbase, metaseq, seqmute); - } - else if(seq->type == SEQ_SOUND) { - if(seq->sound_handle && seqmute != seq->sound_handle->mute) { - seq->sound_handle->mute = seqmute; - seq->sound_handle->changed = -1; - } - } - } -} - -void seq_update_muting(Editing *ed) -{ - if(ed) { - /* mute all sounds up to current metastack list */ - MetaStack *ms= ed->metastack.last; - - if(ms) - seq_update_muting_recursive(&ed->seqbase, ms->parseq, 1); - else - seq_update_muting_recursive(&ed->seqbase, NULL, 0); - } -} - - -/* XXX - hackish function needed for transforming strips! TODO - have some better solution */ -void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) -{ - char str[32]; - FCurve *fcu; - - if(scene->adt==NULL || ofs==0) - return; - - sprintf(str, "[\"%s\"]", seq->name+2); - - for (fcu= scene->adt->action->curves.first; fcu; fcu= fcu->next) { - if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) { - int i; - for (i = 0; i < fcu->totvert; i++) { - BezTriple *bezt= &fcu->bezt[i]; - bezt->vec[0][0] += ofs; - bezt->vec[1][0] += ofs; - bezt->vec[2][0] += ofs; - } - } - } -} - - -Sequence *active_seq_get(Scene *scene) -{ - Editing *ed= seq_give_editing(scene, FALSE); - if(ed==NULL) return NULL; - return ed->act_seq; -} - -void active_seq_set(Scene *scene, Sequence *seq) -{ - Editing *ed= seq_give_editing(scene, FALSE); - if(ed==NULL) return; - - ed->act_seq= seq; -} - -/* api like funcs for adding */ - -void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) -{ - if(seq) { - strcpy(seq->name, seq_load->name); - seqUniqueName(scene->ed->seqbasep, seq); - - if(seq_load->flag & SEQ_LOAD_FRAME_ADVANCE) { - seq_load->start_frame += (seq->enddisp - seq->startdisp); - } - - if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) { - seq_load->flag |= 1; /* SELECT */ - active_seq_set(scene, seq); - } - - if(seq_load->flag & SEQ_LOAD_SOUND_CACHE) { - if(seq->sound) - sound_cache(seq->sound, 0); - } - - seq_load->tot_success++; - } - else { - seq_load->tot_error++; - } -} - -Sequence *alloc_sequence(ListBase *lb, int cfra, int machine) -{ - Sequence *seq; - - seq= MEM_callocN( sizeof(Sequence), "addseq"); - BLI_addtail(lb, seq); - - *( (short *)seq->name )= ID_SEQ; - seq->name[2]= 0; - - seq->flag= 1; /* SELECT */ - seq->start= cfra; - seq->machine= machine; - seq->mul= 1.0; - seq->blend_opacity = 100.0; - - return seq; -} - -void seqUniqueName(ListBase *seqbasep, Sequence *seq) -{ - BLI_uniquename(seqbasep, seq, "Sequence", '.', offsetof(Sequence, name), SEQ_NAME_MAXSTR); -} - -/* NOTE: this function doesn't fill in iamge names */ -Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) -{ - Scene *scene= CTX_data_scene(C); /* only for active seq */ - Sequence *seq; - Strip *strip; - StripElem *se; - - seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); - seq->type= SEQ_IMAGE; - BLI_strncpy(seq->name+2, "Image", SEQ_NAME_MAXSTR-2); - seqUniqueName(seqbasep, seq); - - /* basic defaults */ - seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); - - strip->len = seq->len = seq_load->len ? seq_load->len : 1; - strip->us= 1; - strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); - - seq_load_apply(scene, seq, seq_load); - - return seq; -} - -Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) -{ - Scene *scene= CTX_data_scene(C); /* only for sound */ - Editing *ed= seq_give_editing(scene, TRUE); - bSound *sound; - - Sequence *seq; /* generic strip vars */ - Strip *strip; - StripElem *se; - - AUD_SoundInfo info; - - sound = sound_new_file(CTX_data_main(C), seq_load->path); - - if (sound==NULL || sound->handle == NULL) { - //if(op) - // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); - return NULL; - } - - info = AUD_getInfo(sound->handle); - - if (info.specs.format == AUD_FORMAT_INVALID) { - sound_delete(C, sound); - //if(op) - // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); - return NULL; - } - - seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); - - seq->type= SEQ_SOUND; - seq->sound= sound; - BLI_strncpy(seq->name+2, "Sound", SEQ_NAME_MAXSTR-2); - seqUniqueName(seqbasep, seq); - - /* basic defaults */ - seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); - strip->len = seq->len = (int) (info.length * FPS); - strip->us= 1; - - strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - - BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); - - seq->sound_handle = sound_new_handle(scene, sound, seq_load->start_frame, seq_load->start_frame + strip->len, 0); - - calc_sequence_disp(seq); - - /* last active name */ - strncpy(ed->act_sounddir, strip->dir, FILE_MAXDIR-1); - - seq_load_apply(scene, seq, seq_load); - - return seq; -} - -Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) -{ - Scene *scene= CTX_data_scene(C); /* only for sound */ - - Sequence *seq, *soundseq; /* generic strip vars */ - Strip *strip; - StripElem *se; - - struct anim *an; - - an = openanim(seq_load->path, IB_rect); - - if(an==NULL) - return NULL; - - seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); - - seq->type= SEQ_MOVIE; - seq->anim= an; - seq->anim_preseek = IMB_anim_get_preseek(an); - BLI_strncpy(seq->name+2, "Movie", SEQ_NAME_MAXSTR-2); - seqUniqueName(seqbasep, seq); - - /* basic defaults */ - seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); - strip->len = seq->len = IMB_anim_get_duration( an ); - strip->us= 1; - - strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - - BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); - - calc_sequence_disp(seq); - - - if(seq_load->flag & SEQ_LOAD_MOVIE_SOUND) { - int start_frame_back= seq_load->start_frame; - seq_load->channel++; - - soundseq = sequencer_add_sound_strip(C, seqbasep, seq_load); - - seq_load->start_frame= start_frame_back; - seq_load->channel--; - } - - /* can be NULL */ - seq_load_apply(scene, seq, seq_load); - - return seq; -} diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c new file mode 100644 index 00000000000..c5ca24bec45 --- /dev/null +++ b/source/blender/blenkernel/intern/sequencer.c @@ -0,0 +1,3758 @@ +/** +* $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * Contributor(s): + * - Blender Foundation, 2003-2009 + * - Peter Schlaile 2005/2006 + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include +#include + +#include "MEM_guardedalloc.h" +#include "MEM_CacheLimiterC-Api.h" + +#include "DNA_listBase.h" +#include "DNA_sequence_types.h" +#include "DNA_scene_types.h" +#include "DNA_anim_types.h" + +#include "BKE_global.h" +#include "BKE_image.h" +#include "BKE_main.h" +#include "BKE_sequencer.h" +#include "BKE_fcurve.h" +#include "BKE_utildefines.h" +#include "RNA_access.h" +#include "RE_pipeline.h" + +#include "BLI_blenlib.h" +#include "BLI_util.h" + +#include "IMB_imbuf.h" +#include "IMB_imbuf_types.h" + +#include "BLI_threads.h" +#include + +#include "BKE_context.h" +#include "BKE_sound.h" +#include "AUD_C-API.h" + +#ifdef WIN32 +#define snprintf _snprintf +#endif + +/* **** XXX ******** */ +static int seqrectx= 0; /* bad bad global! */ +static int seqrecty= 0; +//static void waitcursor(int val) {} +//static int blender_test_break() {return 0;} + +/* **** XXX ******** */ + + +void printf_strip(Sequence *seq) +{ + fprintf(stderr, "name: '%s', len:%d, start:%d, (startofs:%d, endofs:%d), (startstill:%d, endstill:%d), machine:%d, (startdisp:%d, enddisp:%d)\n", + seq->name, seq->len, seq->start, seq->startofs, seq->endofs, seq->startstill, seq->endstill, seq->machine, seq->startdisp, seq->enddisp); + fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0)); +} + +/* ********************************************************************** + alloc / free functions + ********************************************************************** */ + +static void free_tstripdata(int len, TStripElem *se) +{ + TStripElem *seo; + int a; + + seo= se; + if (!se) + return; + + for(a=0; aibuf) { + IMB_freeImBuf(se->ibuf); + se->ibuf = 0; + } + if(se->ibuf_comp) { + IMB_freeImBuf(se->ibuf_comp); + se->ibuf_comp = 0; + } + } + + MEM_freeN(seo); +} + + +void new_tstripdata(Sequence *seq) +{ + if(seq->strip) { + free_tstripdata(seq->strip->len, seq->strip->tstripdata); + free_tstripdata(seq->strip->endstill, + seq->strip->tstripdata_endstill); + free_tstripdata(seq->strip->startstill, + seq->strip->tstripdata_startstill); + + seq->strip->tstripdata= 0; + seq->strip->tstripdata_endstill= 0; + seq->strip->tstripdata_startstill= 0; + + if(seq->strip->ibuf_startstill) { + IMB_freeImBuf(seq->strip->ibuf_startstill); + seq->strip->ibuf_startstill = 0; + } + + if(seq->strip->ibuf_endstill) { + IMB_freeImBuf(seq->strip->ibuf_endstill); + seq->strip->ibuf_endstill = 0; + } + + seq->strip->len= seq->len; + } +} + + +/* free */ + +static void free_proxy_seq(Sequence *seq) +{ + if (seq->strip && seq->strip->proxy && seq->strip->proxy->anim) { + IMB_free_anim(seq->strip->proxy->anim); + seq->strip->proxy->anim = 0; + } +} + +void seq_free_strip(Strip *strip) +{ + strip->us--; + if(strip->us>0) return; + if(strip->us<0) { + printf("error: negative users in strip\n"); + return; + } + + if (strip->stripdata) { + MEM_freeN(strip->stripdata); + } + + if (strip->proxy) { + if (strip->proxy->anim) { + IMB_free_anim(strip->proxy->anim); + } + + MEM_freeN(strip->proxy); + } + if (strip->crop) { + MEM_freeN(strip->crop); + } + if (strip->transform) { + MEM_freeN(strip->transform); + } + if (strip->color_balance) { + MEM_freeN(strip->color_balance); + } + + free_tstripdata(strip->len, strip->tstripdata); + free_tstripdata(strip->endstill, strip->tstripdata_endstill); + free_tstripdata(strip->startstill, strip->tstripdata_startstill); + + if(strip->ibuf_startstill) { + IMB_freeImBuf(strip->ibuf_startstill); + strip->ibuf_startstill = 0; + } + + if(strip->ibuf_endstill) { + IMB_freeImBuf(strip->ibuf_endstill); + strip->ibuf_endstill = 0; + } + + MEM_freeN(strip); +} + +void seq_free_sequence(Scene *scene, Sequence *seq) +{ + Editing *ed = scene->ed; + + if(seq->strip) seq_free_strip(seq->strip); + + if(seq->anim) IMB_free_anim(seq->anim); + + if(seq->sound_handle) + sound_delete_handle(scene, seq->sound_handle); + + if (seq->type & SEQ_EFFECT) { + struct SeqEffectHandle sh = get_sequence_effect(seq); + + sh.free(seq); + } + + if (ed->act_seq==seq) + ed->act_seq= NULL; + + MEM_freeN(seq); +} + +Editing *seq_give_editing(Scene *scene, int alloc) +{ + if (scene->ed == NULL && alloc) { + Editing *ed; + + ed= scene->ed= MEM_callocN( sizeof(Editing), "addseq"); + ed->seqbasep= &ed->seqbase; + } + return scene->ed; +} + +void seq_free_editing(Scene *scene) +{ + Editing *ed = scene->ed; + MetaStack *ms; + Sequence *seq; + + if(ed==NULL) + return; + + SEQ_BEGIN(ed, seq) { + seq_free_sequence(scene, seq); + } + SEQ_END + + while((ms= ed->metastack.first)) { + BLI_remlink(&ed->metastack, ms); + MEM_freeN(ms); + } + + MEM_freeN(ed); +} + +/* ************************* itterator ************************** */ +/* *************** (replaces old WHILE_SEQ) ********************* */ +/* **************** use now SEQ_BEGIN() SEQ_END ***************** */ + +/* sequence strip iterator: + * - builds a full array, recursively into meta strips */ + +static void seq_count(ListBase *seqbase, int *tot) +{ + Sequence *seq; + + for(seq=seqbase->first; seq; seq=seq->next) { + (*tot)++; + + if(seq->seqbase.first) + seq_count(&seq->seqbase, tot); + } +} + +static void seq_build_array(ListBase *seqbase, Sequence ***array, int depth) +{ + Sequence *seq; + + for(seq=seqbase->first; seq; seq=seq->next) { + seq->depth= depth; + + if(seq->seqbase.first) + seq_build_array(&seq->seqbase, array, depth+1); + + **array= seq; + (*array)++; + } +} + +void seq_array(Editing *ed, Sequence ***seqarray, int *tot, int use_pointer) +{ + Sequence **array; + + *seqarray= NULL; + *tot= 0; + + if(ed == NULL) + return; + + if(use_pointer) + seq_count(ed->seqbasep, tot); + else + seq_count(&ed->seqbase, tot); + + if(*tot == 0) + return; + + *seqarray= array= MEM_mallocN(sizeof(Sequence *)*(*tot), "SeqArray"); + if(use_pointer) + seq_build_array(ed->seqbasep, &array, 0); + else + seq_build_array(&ed->seqbase, &array, 0); +} + +void seq_begin(Editing *ed, SeqIterator *iter, int use_pointer) +{ + memset(iter, 0, sizeof(*iter)); + seq_array(ed, &iter->array, &iter->tot, use_pointer); + + if(iter->tot) { + iter->cur= 0; + iter->seq= iter->array[iter->cur]; + iter->valid= 1; + } +} + +void seq_next(SeqIterator *iter) +{ + if(++iter->cur < iter->tot) + iter->seq= iter->array[iter->cur]; + else + iter->valid= 0; +} + +void seq_end(SeqIterator *iter) +{ + if(iter->array) + MEM_freeN(iter->array); + + iter->valid= 0; +} + +/* + ********************************************************************** + * build_seqar + ********************************************************************** + * Build a complete array of _all_ sequencies (including those + * in metastrips!) + ********************************************************************** +*/ + +static void do_seq_count(ListBase *seqbase, int *totseq) +{ + Sequence *seq; + + seq= seqbase->first; + while(seq) { + (*totseq)++; + if(seq->seqbase.first) do_seq_count(&seq->seqbase, totseq); + seq= seq->next; + } +} + +static void do_build_seqar(ListBase *seqbase, Sequence ***seqar, int depth) +{ + Sequence *seq; + + seq= seqbase->first; + while(seq) { + seq->depth= depth; + if(seq->seqbase.first) do_build_seqar(&seq->seqbase, seqar, depth+1); + **seqar= seq; + (*seqar)++; + seq= seq->next; + } +} + +void build_seqar(ListBase *seqbase, Sequence ***seqar, int *totseq) +{ + Sequence **tseqar; + + *totseq= 0; + do_seq_count(seqbase, totseq); + + if(*totseq==0) { + *seqar= 0; + return; + } + *seqar= MEM_mallocN(sizeof(void *)* *totseq, "seqar"); + tseqar= *seqar; + + do_build_seqar(seqbase, seqar, 0); + *seqar= tseqar; +} + +static void do_seq_count_cb(ListBase *seqbase, int *totseq, + int (*test_func)(Sequence * seq)) +{ + Sequence *seq; + + seq= seqbase->first; + while(seq) { + int test = test_func(seq); + if (test & BUILD_SEQAR_COUNT_CURRENT) { + (*totseq)++; + } + if(seq->seqbase.first && (test & BUILD_SEQAR_COUNT_CHILDREN)) { + do_seq_count_cb(&seq->seqbase, totseq, test_func); + } + seq= seq->next; + } +} + +static void do_build_seqar_cb(ListBase *seqbase, Sequence ***seqar, int depth, + int (*test_func)(Sequence * seq)) +{ + Sequence *seq; + + seq= seqbase->first; + while(seq) { + int test = test_func(seq); + seq->depth= depth; + + if(seq->seqbase.first && (test & BUILD_SEQAR_COUNT_CHILDREN)) { + do_build_seqar_cb(&seq->seqbase, seqar, depth+1, + test_func); + } + if (test & BUILD_SEQAR_COUNT_CURRENT) { + **seqar= seq; + (*seqar)++; + } + seq= seq->next; + } +} + +void build_seqar_cb(ListBase *seqbase, Sequence ***seqar, int *totseq, + int (*test_func)(Sequence * seq)) +{ + Sequence **tseqar; + + *totseq= 0; + do_seq_count_cb(seqbase, totseq, test_func); + + if(*totseq==0) { + *seqar= 0; + return; + } + *seqar= MEM_mallocN(sizeof(void *)* *totseq, "seqar"); + tseqar= *seqar; + + do_build_seqar_cb(seqbase, seqar, 0, test_func); + *seqar= tseqar; +} + + +void calc_sequence_disp(Sequence *seq) +{ + if(seq->startofs && seq->startstill) seq->startstill= 0; + if(seq->endofs && seq->endstill) seq->endstill= 0; + + seq->startdisp= seq->start + seq->startofs - seq->startstill; + seq->enddisp= seq->start+seq->len - seq->endofs + seq->endstill; + + seq->handsize= 10.0; /* 10 frames */ + if( seq->enddisp-seq->startdisp < 10 ) { + seq->handsize= (float)(0.5*(seq->enddisp-seq->startdisp)); + } + else if(seq->enddisp-seq->startdisp > 250) { + seq->handsize= (float)((seq->enddisp-seq->startdisp)/25); + } + + seq_update_sound(seq); +} + +void calc_sequence(Sequence *seq) +{ + Sequence *seqm; + int min, max; + + /* check all metas recursively */ + seqm= seq->seqbase.first; + while(seqm) { + if(seqm->seqbase.first) calc_sequence(seqm); + seqm= seqm->next; + } + + /* effects and meta: automatic start and end */ + + if(seq->type & SEQ_EFFECT) { + /* pointers */ + if(seq->seq2==0) seq->seq2= seq->seq1; + if(seq->seq3==0) seq->seq3= seq->seq1; + + /* effecten go from seq1 -> seq2: test */ + + /* we take the largest start and smallest end */ + + // seq->start= seq->startdisp= MAX2(seq->seq1->startdisp, seq->seq2->startdisp); + // seq->enddisp= MIN2(seq->seq1->enddisp, seq->seq2->enddisp); + + if (seq->seq1) { + seq->start= seq->startdisp= MAX3(seq->seq1->startdisp, seq->seq2->startdisp, seq->seq3->startdisp); + seq->enddisp= MIN3(seq->seq1->enddisp, seq->seq2->enddisp, seq->seq3->enddisp); + seq->len= seq->enddisp - seq->startdisp; + } else { + calc_sequence_disp(seq); + } + + if(seq->strip && seq->len!=seq->strip->len) { + new_tstripdata(seq); + } + + } + else { + if(seq->type==SEQ_META) { + seqm= seq->seqbase.first; + if(seqm) { + min= 1000000; + max= -1000000; + while(seqm) { + if(seqm->startdisp < min) min= seqm->startdisp; + if(seqm->enddisp > max) max= seqm->enddisp; + seqm= seqm->next; + } + seq->start= min + seq->anim_startofs; + seq->len = max-min; + seq->len -= seq->anim_startofs; + seq->len -= seq->anim_endofs; + + if(seq->strip && seq->len!=seq->strip->len) { + new_tstripdata(seq); + } + } + } + calc_sequence_disp(seq); + } +} + +void reload_sequence_new_file(Scene *scene, Sequence * seq) +{ + char str[FILE_MAXDIR+FILE_MAXFILE]; + + if (!(seq->type == SEQ_MOVIE || seq->type == SEQ_IMAGE || + seq->type == SEQ_SOUND || + seq->type == SEQ_SCENE || seq->type == SEQ_META)) { + return; + } + + new_tstripdata(seq); + + if (seq->type != SEQ_SCENE && seq->type != SEQ_META && + seq->type != SEQ_IMAGE) { + BLI_join_dirfile(str, seq->strip->dir, seq->strip->stripdata->name); + BLI_convertstringcode(str, G.sce); + BLI_convertstringframe(str, scene->r.cfra); + + } + + if (seq->type == SEQ_IMAGE) { + /* Hack? */ + int olen = MEM_allocN_len(seq->strip->stripdata)/sizeof(struct StripElem); + seq->len = olen; + seq->len -= seq->anim_startofs; + seq->len -= seq->anim_endofs; + if (seq->len < 0) { + seq->len = 0; + } + seq->strip->len = seq->len; + } else if (seq->type == SEQ_MOVIE) { + if(seq->anim) IMB_free_anim(seq->anim); + seq->anim = openanim(str, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0)); + + if (!seq->anim) { + return; + } + + seq->len = IMB_anim_get_duration(seq->anim); + + seq->anim_preseek = IMB_anim_get_preseek(seq->anim); + + seq->len -= seq->anim_startofs; + seq->len -= seq->anim_endofs; + if (seq->len < 0) { + seq->len = 0; + } + seq->strip->len = seq->len; + } else if (seq->type == SEQ_SOUND) { + seq->len = AUD_getInfo(seq->sound->handle).length * FPS; + seq->len -= seq->anim_startofs; + seq->len -= seq->anim_endofs; + if (seq->len < 0) { + seq->len = 0; + } + seq->strip->len = seq->len; + } else if (seq->type == SEQ_SCENE) { + Scene * sce = G.main->scene.first; + int nr = 1; + + while(sce) { + if(nr == seq->scenenr) { + break; + } + nr++; + sce= sce->id.next; + } + + if (sce) { + seq->scene = sce; + } else { + sce = seq->scene; + } + + BLI_strncpy(seq->name+2, sce->id.name + 2, SEQ_NAME_MAXSTR-2); + seqUniqueName(scene->ed->seqbasep, seq); + + seq->len= seq->scene->r.efra - seq->scene->r.sfra + 1; + seq->len -= seq->anim_startofs; + seq->len -= seq->anim_endofs; + if (seq->len < 0) { + seq->len = 0; + } + seq->strip->len = seq->len; + } + + free_proxy_seq(seq); + + calc_sequence(seq); +} + +void sort_seq(Scene *scene) +{ + /* all strips together per kind, and in order of y location ("machine") */ + ListBase seqbase, effbase; + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq, *seqt; + + + if(ed==NULL) return; + + seqbase.first= seqbase.last= 0; + effbase.first= effbase.last= 0; + + while( (seq= ed->seqbasep->first) ) { + BLI_remlink(ed->seqbasep, seq); + + if(seq->type & SEQ_EFFECT) { + seqt= effbase.first; + while(seqt) { + if(seqt->machine>=seq->machine) { + BLI_insertlinkbefore(&effbase, seqt, seq); + break; + } + seqt= seqt->next; + } + if(seqt==0) BLI_addtail(&effbase, seq); + } + else { + seqt= seqbase.first; + while(seqt) { + if(seqt->machine>=seq->machine) { + BLI_insertlinkbefore(&seqbase, seqt, seq); + break; + } + seqt= seqt->next; + } + if(seqt==0) BLI_addtail(&seqbase, seq); + } + } + + addlisttolist(&seqbase, &effbase); + *(ed->seqbasep)= seqbase; +} + + +void clear_scene_in_allseqs(Scene *sce) +{ + Scene *sce1; + Editing *ed; + Sequence *seq; + + /* when a scene is deleted: test all seqs */ + + sce1= G.main->scene.first; + while(sce1) { + if(sce1!=sce && sce1->ed) { + ed= sce1->ed; + + SEQ_BEGIN(ed, seq) { + + if(seq->scene==sce) seq->scene= 0; + + } + SEQ_END + } + + sce1= sce1->id.next; + } +} + +static char *give_seqname_by_type(int type) +{ + switch(type) { + case SEQ_META: return "Meta"; + case SEQ_IMAGE: return "Image"; + case SEQ_SCENE: return "Scene"; + case SEQ_MOVIE: return "Movie"; + case SEQ_SOUND: return "Audio"; + case SEQ_CROSS: return "Cross"; + case SEQ_GAMCROSS: return "Gamma Cross"; + case SEQ_ADD: return "Add"; + case SEQ_SUB: return "Sub"; + case SEQ_MUL: return "Mul"; + case SEQ_ALPHAOVER: return "Alpha Over"; + case SEQ_ALPHAUNDER: return "Alpha Under"; + case SEQ_OVERDROP: return "Over Drop"; + case SEQ_WIPE: return "Wipe"; + case SEQ_GLOW: return "Glow"; + case SEQ_TRANSFORM: return "Transform"; + case SEQ_COLOR: return "Color"; + case SEQ_SPEED: return "Speed"; + default: + return 0; + } +} + +char *give_seqname(Sequence *seq) +{ + char * name = give_seqname_by_type(seq->type); + + if (!name) { + if(seq->typestrip->dir; + } else if(seq->type==SEQ_PLUGIN) { + if(!(seq->flag & SEQ_EFFECT_NOT_LOADED) && + seq->plugin && seq->plugin->doit) { + return seq->plugin->pname; + } else { + return "Plugin"; + } + } else { + return "Effect"; + } + } + return name; +} + +/* ***************** DO THE SEQUENCE ***************** */ + +static void make_black_ibuf(ImBuf *ibuf) +{ + unsigned int *rect; + float *rect_float; + int tot; + + if(ibuf==0 || (ibuf->rect==0 && ibuf->rect_float==0)) return; + + tot= ibuf->x*ibuf->y; + + rect= ibuf->rect; + rect_float = ibuf->rect_float; + + if (rect) { + memset(rect, 0, tot * sizeof(char) * 4); + } + + if (rect_float) { + memset(rect_float, 0, tot * sizeof(float) * 4); + } +} + +static void multibuf(ImBuf *ibuf, float fmul) +{ + char *rt; + float *rt_float; + + int a, mul, icol; + + mul= (int)(256.0*fmul); + rt= (char *)ibuf->rect; + rt_float = ibuf->rect_float; + + if (rt) { + a= ibuf->x*ibuf->y; + while(a--) { + + icol= (mul*rt[0])>>8; + if(icol>254) rt[0]= 255; else rt[0]= icol; + icol= (mul*rt[1])>>8; + if(icol>254) rt[1]= 255; else rt[1]= icol; + icol= (mul*rt[2])>>8; + if(icol>254) rt[2]= 255; else rt[2]= icol; + icol= (mul*rt[3])>>8; + if(icol>254) rt[3]= 255; else rt[3]= icol; + + rt+= 4; + } + } + if (rt_float) { + a= ibuf->x*ibuf->y; + while(a--) { + rt_float[0] *= fmul; + rt_float[1] *= fmul; + rt_float[2] *= fmul; + rt_float[3] *= fmul; + + rt_float += 4; + } + } +} + +static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se) +{ + TStripElem *se1, *se2, *se3; + float fac, facf; + int x, y; + int early_out; + struct SeqEffectHandle sh = get_sequence_effect(seq); + FCurve *fcu= NULL; + + if (!sh.execute) { /* effect not supported in this version... */ + make_black_ibuf(se->ibuf); + return; + } + + if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { + sh.get_default_fac(seq, cfra, &fac, &facf); + if( scene->r.mode & R_FIELDS ); else facf= fac; + } else { + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + if (fcu) { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } + } else { + fac = facf = seq->effect_fader; + } + } + + early_out = sh.early_out(seq, fac, facf); + + if (early_out == -1) { /* no input needed */ + sh.execute(scene, seq, cfra, fac, facf, + se->ibuf->x, se->ibuf->y, + 0, 0, 0, se->ibuf); + return; + } + + switch (early_out) { + case 0: + if (se->se1==0 || se->se2==0 || se->se3==0) { + make_black_ibuf(se->ibuf); + return; + } + + se1= se->se1; + se2= se->se2; + se3= se->se3; + + if ( (se1==0 || se2==0 || se3==0) + || (se1->ibuf==0 || se2->ibuf==0 || se3->ibuf==0)) { + make_black_ibuf(se->ibuf); + return; + } + + break; + case 1: + if (se->se1 == 0) { + make_black_ibuf(se->ibuf); + return; + } + + se1= se->se1; + + if (se1 == 0 || se1->ibuf == 0) { + make_black_ibuf(se->ibuf); + return; + } + + if (se->ibuf != se1->ibuf) { + IMB_freeImBuf(se->ibuf); + se->ibuf = se1->ibuf; + IMB_refImBuf(se->ibuf); + } + return; + case 2: + if (se->se2 == 0) { + make_black_ibuf(se->ibuf); + return; + } + + se2= se->se2; + + if (se2 == 0 || se2->ibuf == 0) { + make_black_ibuf(se->ibuf); + return; + } + if (se->ibuf != se2->ibuf) { + IMB_freeImBuf(se->ibuf); + se->ibuf = se2->ibuf; + IMB_refImBuf(se->ibuf); + } + return; + default: + make_black_ibuf(se->ibuf); + return; + } + + x= se2->ibuf->x; + y= se2->ibuf->y; + + if (!se1->ibuf->rect_float && se->ibuf->rect_float) { + IMB_float_from_rect(se1->ibuf); + } + if (!se2->ibuf->rect_float && se->ibuf->rect_float) { + IMB_float_from_rect(se2->ibuf); + } + if (!se3->ibuf->rect_float && se->ibuf->rect_float) { + IMB_float_from_rect(se3->ibuf); + } + + if (!se1->ibuf->rect && !se->ibuf->rect_float) { + IMB_rect_from_float(se1->ibuf); + } + if (!se2->ibuf->rect && !se->ibuf->rect_float) { + IMB_rect_from_float(se2->ibuf); + } + if (!se3->ibuf->rect && !se->ibuf->rect_float) { + IMB_rect_from_float(se3->ibuf); + } + + sh.execute(scene, seq, cfra, fac, facf, x, y, se1->ibuf, se2->ibuf, se3->ibuf, + se->ibuf); +} + +static int give_stripelem_index(Sequence *seq, int cfra) +{ + int nr; + + if(seq->startdisp >cfra || seq->enddisp <= cfra) return -1; + if(seq->len == 0) return -1; + if(seq->flag&SEQ_REVERSE_FRAMES) { + /*reverse frame in this sequence */ + if(cfra <= seq->start) nr= seq->len-1; + else if(cfra >= seq->start+seq->len-1) nr= 0; + else nr= (seq->start + seq->len) - cfra; + } else { + if(cfra <= seq->start) nr= 0; + else if(cfra >= seq->start+seq->len-1) nr= seq->len-1; + else nr= cfra-seq->start; + } + if (seq->strobe < 1.0) seq->strobe = 1.0; + if (seq->strobe > 1.0) { + nr -= (int)fmod((double)nr, (double)seq->strobe); + } + + return nr; +} + +static TStripElem* alloc_tstripdata(int len, const char * name) +{ + int i; + TStripElem *se = MEM_callocN(len * sizeof(TStripElem), name); + for (i = 0; i < len; i++) { + se[i].ok = STRIPELEM_OK; + } + return se; +} + +static TStripElem *give_tstripelem(Sequence *seq, int cfra) +{ + TStripElem *se; + int nr; + + se = seq->strip->tstripdata; + if (se == 0 && seq->len > 0) { + se = seq->strip->tstripdata = alloc_tstripdata(seq->len, + "tstripelems"); + } + nr = give_stripelem_index(seq, cfra); + + if (nr == -1) return 0; + if (se == 0) return 0; + + se += nr; + + /* if there are IPOs with blend modes active, one has to watch out + for startstill + endstill area: we can't use the same tstripelem + here for all ibufs, since then, blending with IPOs won't work! + + Rather common case, if you use a single image and try to fade + it in and out... or want to use your strip as a watermark in + alpha over mode... + */ + if (seq->blend_mode != SEQ_BLEND_REPLACE || + (/*seq->ipo && seq->ipo->curve.first &&*/ + (!(seq->type & SEQ_EFFECT) || !seq->seq1))) { + Strip * s = seq->strip; + if (cfra < seq->start) { + se = s->tstripdata_startstill; + if (seq->startstill > s->startstill) { + free_tstripdata(s->startstill, + s->tstripdata_startstill); + se = 0; + } + + if (se == 0) { + s->startstill = seq->startstill; + se = seq->strip->tstripdata_startstill + = alloc_tstripdata( + s->startstill, + "tstripelems_startstill"); + } + se += seq->start - cfra - 1; + + } else if (cfra > seq->start + seq->len-1) { + se = s->tstripdata_endstill; + if (seq->endstill > s->endstill) { + free_tstripdata(s->endstill, + s->tstripdata_endstill); + se = 0; + } + + if (se == 0) { + s->endstill = seq->endstill; + se = seq->strip->tstripdata_endstill + = alloc_tstripdata( + s->endstill, + "tstripelems_endstill"); + } + se += cfra - (seq->start + seq->len-1) - 1; + } + } + + + se->nr= nr; + + return se; +} + +StripElem *give_stripelem(Sequence *seq, int cfra) +{ + StripElem *se; + int nr; + + se = seq->strip->stripdata; + nr = give_stripelem_index(seq, cfra); + + if (nr == -1) return 0; + if (se == 0) return 0; + + se += nr + seq->anim_startofs; + + return se; +} + +static int evaluate_seq_frame_gen(Sequence ** seq_arr, ListBase *seqbase, int cfra) +{ + Sequence *seq; + int totseq=0; + + memset(seq_arr, 0, sizeof(Sequence*) * (MAXSEQ+1)); + + seq= seqbase->first; + while(seq) { + if(seq->startdisp <=cfra && seq->enddisp > cfra) { + seq_arr[seq->machine]= seq; + totseq++; + } + seq= seq->next; + } + + return totseq; +} + +int evaluate_seq_frame(Scene *scene, int cfra) +{ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq_arr[MAXSEQ+1]; + + if(ed==NULL) return 0; + return evaluate_seq_frame_gen(seq_arr, ed->seqbasep, cfra); +} + +static int video_seq_is_rendered(Sequence * seq) +{ + return (seq + && !(seq->flag & SEQ_MUTE) + && seq->type != SEQ_SOUND); +} + +static int get_shown_sequences( ListBase * seqbasep, int cfra, int chanshown, Sequence ** seq_arr_out) +{ + Sequence *seq_arr[MAXSEQ+1]; + int b = chanshown; + int cnt = 0; + + if (b > MAXSEQ) { + return 0; + } + + if(evaluate_seq_frame_gen(seq_arr, seqbasep, cfra)) { + if (b > 0) { + if (seq_arr[b] == 0) { + return 0; + } + } else { + for (b = MAXSEQ; b > 0; b--) { + if (video_seq_is_rendered(seq_arr[b])) { + break; + } + } + } + } + + chanshown = b; + + for (;b > 0; b--) { + if (video_seq_is_rendered(seq_arr[b])) { + if (seq_arr[b]->blend_mode == SEQ_BLEND_REPLACE) { + break; + } + } + } + + for (;b <= chanshown; b++) { + if (video_seq_is_rendered(seq_arr[b])) { + seq_arr_out[cnt++] = seq_arr[b]; + } + } + + return cnt; +} + + +/* ********************************************************************** + proxy management + ********************************************************************** */ + +#define PROXY_MAXFILE (2*FILE_MAXDIR+FILE_MAXFILE) + +static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * name, int render_size) +{ + int frameno; + char dir[FILE_MAXDIR]; + + if (!seq->strip->proxy) { + return FALSE; + } + + if (seq->flag & SEQ_USE_PROXY_CUSTOM_DIR) { + strcpy(dir, seq->strip->proxy->dir); + } else { + if (seq->type == SEQ_IMAGE || seq->type == SEQ_MOVIE) { + snprintf(dir, FILE_MAXDIR, "%s/BL_proxy", + seq->strip->dir); + } else { + return FALSE; + } + } + + if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { + BLI_join_dirfile(name, dir, seq->strip->proxy->file); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, cfra); + + return TRUE; + } + + /* generate a separate proxy directory for each preview size */ + + if (seq->type == SEQ_IMAGE) { + StripElem * se = give_stripelem(seq, cfra); + snprintf(name, PROXY_MAXFILE, "%s/images/%d/%s_proxy", + dir, render_size, se->name); + frameno = 1; + } else if (seq->type == SEQ_MOVIE) { + TStripElem * tse = give_tstripelem(seq, cfra); + + frameno = tse->nr + seq->anim_startofs; + + snprintf(name, PROXY_MAXFILE, "%s/%s/%d/####", dir, + seq->strip->stripdata->name, + render_size); + } else { + TStripElem * tse = give_tstripelem(seq, cfra); + + frameno = tse->nr + seq->anim_startofs; + + snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir, + render_size); + } + + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, frameno); + + + strcat(name, ".jpg"); + + return TRUE; +} + +static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, int render_size) +{ + char name[PROXY_MAXFILE]; + + if (!(seq->flag & SEQ_USE_PROXY)) { + return 0; + } + + /* rendering at 100% ? No real sense in proxy-ing, right? */ + if (render_size == 100) { + return 0; + } + + if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { + TStripElem * tse = give_tstripelem(seq, cfra); + int frameno = tse->nr + seq->anim_startofs; + if (!seq->strip->proxy->anim) { + if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { + return 0; + } + + seq->strip->proxy->anim = openanim(name, IB_rect); + } + if (!seq->strip->proxy->anim) { + return 0; + } + + return IMB_anim_absolute(seq->strip->proxy->anim, frameno); + } + + if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { + return 0; + } + + if (BLI_exists(name)) { + return IMB_loadiffname(name, IB_rect); + } else { + return 0; + } +} + +#if 0 +static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra, + int build_proxy_run, int render_size); + +static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int render_size) +{ + char name[PROXY_MAXFILE]; + int quality; + TStripElem * se; + int ok; + int rectx, recty; + struct ImBuf * ibuf; + + if (!(seq->flag & SEQ_USE_PROXY)) { + return; + } + + /* rendering at 100% ? No real sense in proxy-ing, right? */ + if (render_size == 100) { + return; + } + + /* that's why it is called custom... */ + if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { + return; + } + + if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { + return; + } + + se = give_tstripelem(seq, cfra); + if (!se) { + return; + } + + if(se->ibuf) { + IMB_freeImBuf(se->ibuf); + se->ibuf = 0; + } + + do_build_seq_ibuf(scene, seq, se, cfra, TRUE, render_size); + + if (!se->ibuf) { + return; + } + + rectx= (render_size*scene->r.xsch)/100; + recty= (render_size*scene->r.ysch)/100; + + ibuf = se->ibuf; + + if (ibuf->x != rectx || ibuf->y != recty) { + IMB_scalefastImBuf(ibuf, (short)rectx, (short)recty); + } + + /* quality is fixed, otherwise one has to generate separate + directories for every quality... + + depth = 32 is intentionally left in, otherwise ALPHA channels + won't work... */ + quality = seq->strip->proxy->quality; + ibuf->ftype= JPG | quality; + + BLI_make_existing_file(name); + + ok = IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat); + if (ok == 0) { + perror(name); + } + + IMB_freeImBuf(ibuf); + se->ibuf = 0; +} + +static void seq_proxy_rebuild(Scene *scene, Sequence * seq) +{ + int cfra; + float rsize = seq->strip->proxy->size; + + waitcursor(1); + + G.afbreek = 0; + + /* flag management tries to account for strobe and + other "non-linearities", that might come in the future... + better way would be to "touch" the files, so that _really_ + no one is rebuild twice. + */ + + for (cfra = seq->startdisp; cfra < seq->enddisp; cfra++) { + TStripElem * tse = give_tstripelem(seq, cfra); + + tse->flag &= ~STRIPELEM_PREVIEW_DONE; + } + + + + /* a _lot_ faster for movie files, if we read frames in + sequential order */ + if (seq->flag & SEQ_REVERSE_FRAMES) { + for (cfra = seq->enddisp-seq->endstill-1; + cfra >= seq->startdisp + seq->startstill; cfra--) { + TStripElem * tse = give_tstripelem(seq, cfra); + + if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) { +//XXX set_timecursor(cfra); + seq_proxy_build_frame(scene, seq, cfra, rsize); + tse->flag |= STRIPELEM_PREVIEW_DONE; + } + if (blender_test_break()) { + break; + } + } + } else { + for (cfra = seq->startdisp + seq->startstill; + cfra < seq->enddisp - seq->endstill; cfra++) { + TStripElem * tse = give_tstripelem(seq, cfra); + + if (!(tse->flag & STRIPELEM_PREVIEW_DONE)) { +//XXX set_timecursor(cfra); + seq_proxy_build_frame(scene, seq, cfra, rsize); + tse->flag |= STRIPELEM_PREVIEW_DONE; + } + if (blender_test_break()) { + break; + } + } + } + waitcursor(0); +} +#endif + + +/* ********************************************************************** + color balance + ********************************************************************** */ + +static StripColorBalance calc_cb(StripColorBalance * cb_) +{ + StripColorBalance cb = *cb_; + int c; + + if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { + for (c = 0; c < 3; c++) { + cb.lift[c] = 1.0 - cb.lift[c]; + } + } else { + for (c = 0; c < 3; c++) { + cb.lift[c] = -(1.0 - cb.lift[c]); + } + } + if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAIN) { + for (c = 0; c < 3; c++) { + if (cb.gain[c] != 0.0) { + cb.gain[c] = 1.0/cb.gain[c]; + } else { + cb.gain[c] = 1000000; /* should be enough :) */ + } + } + } + + if (!(cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAMMA)) { + for (c = 0; c < 3; c++) { + if (cb.gamma[c] != 0.0) { + cb.gamma[c] = 1.0/cb.gamma[c]; + } else { + cb.gamma[c] = 1000000; /* should be enough :) */ + } + } + } + + return cb; +} + +static void make_cb_table_byte(float lift, float gain, float gamma, + unsigned char * table, float mul) +{ + int y; + + for (y = 0; y < 256; y++) { + float v = 1.0 * y / 255; + v *= gain; + v += lift; + v = pow(v, gamma); + v *= mul; + if ( v > 1.0) { + v = 1.0; + } else if (v < 0.0) { + v = 0.0; + } + table[y] = v * 255; + } + +} + +static void make_cb_table_float(float lift, float gain, float gamma, + float * table, float mul) +{ + int y; + + for (y = 0; y < 256; y++) { + float v = (float) y * 1.0 / 255.0; + v *= gain; + v += lift; + v = pow(v, gamma); + v *= mul; + table[y] = v; + } +} + +static void color_balance_byte_byte(Sequence * seq, TStripElem* se, float mul) +{ + unsigned char cb_tab[3][256]; + int c; + unsigned char * p = (unsigned char*) se->ibuf->rect; + unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; + + StripColorBalance cb = calc_cb(seq->strip->color_balance); + + for (c = 0; c < 3; c++) { + make_cb_table_byte(cb.lift[c], cb.gain[c], cb.gamma[c], + cb_tab[c], mul); + } + + while (p < e) { + p[0] = cb_tab[0][p[0]]; + p[1] = cb_tab[1][p[1]]; + p[2] = cb_tab[2][p[2]]; + + p += 4; + } +} + +static void color_balance_byte_float(Sequence * seq, TStripElem* se, float mul) +{ + float cb_tab[4][256]; + int c,i; + unsigned char * p = (unsigned char*) se->ibuf->rect; + unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; + float * o; + StripColorBalance cb; + + imb_addrectfloatImBuf(se->ibuf); + + o = se->ibuf->rect_float; + + cb = calc_cb(seq->strip->color_balance); + + for (c = 0; c < 3; c++) { + make_cb_table_float(cb.lift[c], cb.gain[c], cb.gamma[c], + cb_tab[c], mul); + } + + for (i = 0; i < 256; i++) { + cb_tab[3][i] = ((float)i)*(1.0f/255.0f); + } + + while (p < e) { + o[0] = cb_tab[0][p[0]]; + o[1] = cb_tab[1][p[1]]; + o[2] = cb_tab[2][p[2]]; + o[3] = cb_tab[3][p[3]]; + + p += 4; o += 4; + } +} + +static void color_balance_float_float(Sequence * seq, TStripElem* se, float mul) +{ + float * p = se->ibuf->rect_float; + float * e = se->ibuf->rect_float + se->ibuf->x * 4* se->ibuf->y; + StripColorBalance cb = calc_cb(seq->strip->color_balance); + + while (p < e) { + int c; + for (c = 0; c < 3; c++) { + p[c] = pow(p[c] * cb.gain[c] + cb.lift[c], + cb.gamma[c]) * mul; + } + p += 4; + } +} + +static void color_balance(Sequence * seq, TStripElem* se, float mul) +{ + if (se->ibuf->rect_float) { + color_balance_float_float(seq, se, mul); + } else if(seq->flag & SEQ_MAKE_FLOAT) { + color_balance_byte_float(seq, se, mul); + } else { + color_balance_byte_byte(seq, se, mul); + } +} + +/* + input preprocessing for SEQ_IMAGE, SEQ_MOVIE and SEQ_SCENE + + Do all the things you can't really do afterwards using sequence effects + (read: before rescaling to render resolution has been done) + + Order is important! + + - Deinterlace + - Crop and transform in image source coordinate space + - Flip X + Flip Y (could be done afterwards, backward compatibility) + - Promote image to float data (affects pipeline operations afterwards) + - Color balance (is most efficient in the byte -> float + (future: half -> float should also work fine!) + case, if done on load, since we can use lookup tables) + - Premultiply + +*/ + +static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se, int cfra) +{ + float mul; + + if ((seq->flag & SEQ_FILTERY) || + (seq->flag & SEQ_USE_CROP) || + (seq->flag & SEQ_USE_TRANSFORM) || + (seq->flag & SEQ_FLIPX) || + (seq->flag & SEQ_FLIPY) || + (seq->flag & SEQ_USE_COLOR_BALANCE) || + (seq->flag & SEQ_MAKE_PREMUL) || + (se->ibuf->x != seqrectx || se->ibuf->y != seqrecty)) { + return TRUE; + } + + mul = seq->mul; + + if(seq->blend_mode == SEQ_BLEND_REPLACE && + !(seq->type & SEQ_EFFECT)) { + mul *= seq->blend_opacity / 100.0; + } + + if (mul != 1.0) { + return TRUE; + } + + return FALSE; +} + +static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cfra) +{ + float mul; + + seq->strip->orx= se->ibuf->x; + seq->strip->ory= se->ibuf->y; + + if((seq->flag & SEQ_FILTERY) && seq->type != SEQ_MOVIE) { + IMB_filtery(se->ibuf); + } + + if(seq->flag & SEQ_USE_CROP || seq->flag & SEQ_USE_TRANSFORM) { + StripCrop c; + StripTransform t; + int sx,sy,dx,dy; + + memset(&c, 0, sizeof(StripCrop)); + memset(&t, 0, sizeof(StripTransform)); + + if(seq->flag & SEQ_USE_CROP && seq->strip->crop) { + c = *seq->strip->crop; + } + if(seq->flag & SEQ_USE_TRANSFORM && seq->strip->transform) { + t = *seq->strip->transform; + } + + sx = se->ibuf->x - c.left - c.right; + sy = se->ibuf->y - c.top - c.bottom; + dx = sx; + dy = sy; + + if (seq->flag & SEQ_USE_TRANSFORM) { + dx = scene->r.xsch; + dy = scene->r.ysch; + } + + if (c.top + c.bottom >= se->ibuf->y || + c.left + c.right >= se->ibuf->x || + t.xofs >= dx || t.yofs >= dy) { + make_black_ibuf(se->ibuf); + } else { + ImBuf * i; + + if (se->ibuf->rect_float) { + i = IMB_allocImBuf(dx, dy,32, IB_rectfloat, 0); + } else { + i = IMB_allocImBuf(dx, dy,32, IB_rect, 0); + } + + IMB_rectcpy(i, se->ibuf, + t.xofs, t.yofs, + c.left, c.bottom, + sx, sy); + + IMB_freeImBuf(se->ibuf); + + se->ibuf = i; + } + } + + if(seq->flag & SEQ_FLIPX) { + IMB_flipx(se->ibuf); + } + if(seq->flag & SEQ_FLIPY) { + IMB_flipy(se->ibuf); + } + + if(seq->mul == 0.0) { + seq->mul = 1.0; + } + + mul = seq->mul; + + if(seq->blend_mode == SEQ_BLEND_REPLACE) { + mul *= seq->blend_opacity / 100.0; + } + + if(seq->flag & SEQ_USE_COLOR_BALANCE && seq->strip->color_balance) { + color_balance(seq, se, mul); + mul = 1.0; + } + + if(seq->flag & SEQ_MAKE_FLOAT) { + if (!se->ibuf->rect_float) { + IMB_float_from_rect(se->ibuf); + } + if (se->ibuf->rect) { + imb_freerectImBuf(se->ibuf); + } + } + + if(mul != 1.0) { + multibuf(se->ibuf, mul); + } + + if(seq->flag & SEQ_MAKE_PREMUL) { + if(se->ibuf->depth == 32 && se->ibuf->zbuf == 0) { + converttopremul(se->ibuf); + } + } + + + if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty ) { + if(scene->r.mode & R_OSA) { + IMB_scaleImBuf(se->ibuf, + (short)seqrectx, (short)seqrecty); + } else { + IMB_scalefastImBuf(se->ibuf, + (short)seqrectx, (short)seqrecty); + } + } +} + +/* test if image too small or discarded from cache: reload */ + +static void test_and_auto_discard_ibuf(TStripElem * se) +{ + if (se->ibuf) { + if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty + || !(se->ibuf->rect || se->ibuf->rect_float)) { + IMB_freeImBuf(se->ibuf); + + se->ibuf= 0; + se->ok= STRIPELEM_OK; + } + } + if (se->ibuf_comp) { + if(se->ibuf_comp->x != seqrectx || se->ibuf_comp->y != seqrecty + || !(se->ibuf_comp->rect || se->ibuf_comp->rect_float)) { + IMB_freeImBuf(se->ibuf_comp); + + se->ibuf_comp = 0; + } + } +} + +static void test_and_auto_discard_ibuf_stills(Strip * strip) +{ + if (strip->ibuf_startstill) { + if (!strip->ibuf_startstill->rect && + !strip->ibuf_startstill->rect_float) { + IMB_freeImBuf(strip->ibuf_startstill); + strip->ibuf_startstill = 0; + } + } + if (strip->ibuf_endstill) { + if (!strip->ibuf_endstill->rect && + !strip->ibuf_endstill->rect_float) { + IMB_freeImBuf(strip->ibuf_endstill); + strip->ibuf_endstill = 0; + } + } +} + +static void copy_from_ibuf_still(Sequence * seq, TStripElem * se) +{ + if (!se->ibuf) { + if (se->nr == 0 && seq->strip->ibuf_startstill) { + IMB_cache_limiter_touch(seq->strip->ibuf_startstill); + + se->ibuf = IMB_dupImBuf(seq->strip->ibuf_startstill); + } + if (se->nr == seq->len - 1 + && (seq->len != 1) + && seq->strip->ibuf_endstill) { + IMB_cache_limiter_touch(seq->strip->ibuf_endstill); + + se->ibuf = IMB_dupImBuf(seq->strip->ibuf_endstill); + } + } +} + +static void copy_to_ibuf_still(Sequence * seq, TStripElem * se) +{ + if (se->ibuf) { + if (se->nr == 0) { + seq->strip->ibuf_startstill = IMB_dupImBuf(se->ibuf); + + IMB_cache_limiter_insert(seq->strip->ibuf_startstill); + IMB_cache_limiter_touch(seq->strip->ibuf_startstill); + } + if (se->nr == seq->len - 1 && seq->len != 1) { + seq->strip->ibuf_endstill = IMB_dupImBuf(se->ibuf); + + IMB_cache_limiter_insert(seq->strip->ibuf_endstill); + IMB_cache_limiter_touch(seq->strip->ibuf_endstill); + } + } +} + +static void free_metastrip_imbufs(ListBase *seqbasep, int cfra, int chanshown) +{ + Sequence* seq_arr[MAXSEQ+1]; + int i; + TStripElem* se = 0; + + evaluate_seq_frame_gen(seq_arr, seqbasep, cfra); + + for (i = 0; i < MAXSEQ; i++) { + if (!video_seq_is_rendered(seq_arr[i])) { + continue; + } + se = give_tstripelem(seq_arr[i], cfra); + if (se) { + if (se->ibuf) { + IMB_freeImBuf(se->ibuf); + + se->ibuf= 0; + se->ok= STRIPELEM_OK; + } + + if (se->ibuf_comp) { + IMB_freeImBuf(se->ibuf_comp); + + se->ibuf_comp = 0; + } + } + } + +} + +static void check_limiter_refcount(const char * func, TStripElem *se) +{ + if (se && se->ibuf) { + int refcount = IMB_cache_limiter_get_refcount(se->ibuf); + if (refcount != 1) { + /* can happen on complex pipelines */ + if (refcount > 1 && (G.f & G_DEBUG) == 0) { + return; + } + + fprintf(stderr, + "sequencer: (ibuf) %s: " + "suspicious memcache " + "limiter refcount: %d\n", func, refcount); + } + } +} + +static void check_limiter_refcount_comp(const char * func, TStripElem *se) +{ + if (se && se->ibuf_comp) { + int refcount = IMB_cache_limiter_get_refcount(se->ibuf_comp); + if (refcount != 1) { + /* can happen on complex pipelines */ + if (refcount > 1 && (G.f & G_DEBUG) == 0) { + return; + } + fprintf(stderr, + "sequencer: (ibuf comp) %s: " + "suspicious memcache " + "limiter refcount: %d\n", func, refcount); + } + } +} + +static TStripElem* do_build_seq_array_recursively(Scene *scene, + ListBase *seqbasep, int cfra, int chanshown, int render_size); + +static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra, + int build_proxy_run, int render_size) +{ + char name[FILE_MAXDIR+FILE_MAXFILE]; + int use_limiter = TRUE; + + test_and_auto_discard_ibuf(se); + test_and_auto_discard_ibuf_stills(seq->strip); + + if(seq->type == SEQ_META) { + TStripElem * meta_se = 0; + int use_preprocess = FALSE; + use_limiter = FALSE; + + if (!build_proxy_run && se->ibuf == 0) { + se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + if (se->ibuf) { + use_limiter = TRUE; + use_preprocess = TRUE; + } + } + + if(!se->ibuf && seq->seqbase.first) { + meta_se = do_build_seq_array_recursively(scene, + &seq->seqbase, seq->start + se->nr, 0, + render_size); + + check_limiter_refcount("do_build_seq_ibuf: for META", meta_se); + } + + se->ok = STRIPELEM_OK; + + if(!se->ibuf && meta_se) { + se->ibuf = meta_se->ibuf_comp; + if(se->ibuf && + (!input_have_to_preprocess(scene, seq, se, cfra) || + build_proxy_run)) { + IMB_refImBuf(se->ibuf); + if (build_proxy_run) { + IMB_cache_limiter_unref(se->ibuf); + } + } else if (se->ibuf) { + struct ImBuf * i = IMB_dupImBuf(se->ibuf); + + IMB_cache_limiter_unref(se->ibuf); + + se->ibuf = i; + + use_limiter = TRUE; + use_preprocess = TRUE; + } + } else if (se->ibuf) { + use_limiter = TRUE; + } + if (meta_se) { + free_metastrip_imbufs( + &seq->seqbase, seq->start + se->nr, 0); + } + + if (use_preprocess) { + input_preprocess(scene, seq, se, cfra); + } + } else if(seq->type & SEQ_EFFECT) { + int use_preprocess = FALSE; + /* should the effect be recalculated? */ + + if (!build_proxy_run && se->ibuf == 0) { + se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + if (se->ibuf) { + use_preprocess = TRUE; + } + } + + if(se->ibuf == 0) { + /* if any inputs are rectfloat, output is float too */ + if((se->se1 && se->se1->ibuf && se->se1->ibuf->rect_float) || + (se->se2 && se->se2->ibuf && se->se2->ibuf->rect_float) || + (se->se3 && se->se3->ibuf && se->se3->ibuf->rect_float)) + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); + else + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + + do_effect(scene, cfra, seq, se); + if (input_have_to_preprocess(scene, seq, se, cfra) && + !build_proxy_run) { + if ((se->se1 && (se->ibuf == se->se1->ibuf)) || + (se->se2 && (se->ibuf == se->se2->ibuf))) { + struct ImBuf * i + = IMB_dupImBuf(se->ibuf); + + IMB_freeImBuf(se->ibuf); + + se->ibuf = i; + } + use_preprocess = TRUE; + } + } + if (use_preprocess) { + input_preprocess(scene, seq, se, cfra); + } + } else if(seq->type == SEQ_IMAGE) { + if(se->ok == STRIPELEM_OK && se->ibuf == 0) { + StripElem * s_elem = give_stripelem(seq, cfra); + BLI_join_dirfile(name, seq->strip->dir, s_elem->name); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, scene->r.cfra); + if (!build_proxy_run) { + se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + copy_from_ibuf_still(seq, se); + + if (!se->ibuf) { + se->ibuf= IMB_loadiffname( + name, IB_rect); + /* we don't need both (speed reasons)! */ + if (se->ibuf && + se->ibuf->rect_float && se->ibuf->rect) { + imb_freerectImBuf(se->ibuf); + } + + copy_to_ibuf_still(seq, se); + } + + if(se->ibuf == 0) { + se->ok = STRIPELEM_FAILED; + } else if (!build_proxy_run) { + input_preprocess(scene, seq, se, cfra); + } + } + } else if(seq->type == SEQ_MOVIE) { + if(se->ok == STRIPELEM_OK && se->ibuf==0) { + if(!build_proxy_run) { + se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + copy_from_ibuf_still(seq, se); + + if (se->ibuf == 0) { + if(seq->anim==0) { + BLI_join_dirfile(name, seq->strip->dir, seq->strip->stripdata->name); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, scene->r.cfra); + + seq->anim = openanim( + name, IB_rect | + ((seq->flag & SEQ_FILTERY) + ? IB_animdeinterlace : 0)); + } + if(seq->anim) { + IMB_anim_set_preseek(seq->anim, seq->anim_preseek); + se->ibuf = IMB_anim_absolute(seq->anim, se->nr + seq->anim_startofs); + /* we don't need both (speed reasons)! */ + if (se->ibuf + && se->ibuf->rect_float + && se->ibuf->rect) { + imb_freerectImBuf(se->ibuf); + } + + } + copy_to_ibuf_still(seq, se); + } + + if(se->ibuf == 0) { + se->ok = STRIPELEM_FAILED; + } else if (!build_proxy_run) { + input_preprocess(scene, seq, se, cfra); + } + } + } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions + Scene *sce= seq->scene;// *oldsce= scene; + Render *re; + RenderResult rres; + char scenename[64]; + int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; + int sce_valid =sce && (sce->camera || have_seq); + + if (se->ibuf == NULL && sce_valid && !build_proxy_run) { + se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + if (se->ibuf) { + input_preprocess(scene, seq, se, cfra); + } + } + + if (se->ibuf == NULL && sce_valid) { + copy_from_ibuf_still(seq, se); + if (se->ibuf) { + input_preprocess(scene, seq, se, cfra); + } + } + + if (!sce_valid) { + se->ok = STRIPELEM_FAILED; + } else if (se->ibuf==NULL && sce_valid) { + int oldcfra; + /* Hack! This function can be called from do_render_seq(), in that case + the seq->scene can already have a Render initialized with same name, + so we have to use a default name. (compositor uses scene name to + find render). + However, when called from within the UI (image preview in sequencer) + we do want to use scene Render, that way the render result is defined + for display in render/imagewindow + + Hmm, don't see, why we can't do that all the time, + and since G.rendering is uhm, gone... (Peter) + */ + + int rendering = 1; + int doseq; + + oldcfra = seq->scene->r.cfra; + + if(rendering) { + BLI_strncpy(scenename, sce->id.name+2, 64); + strcpy(sce->id.name+2, " do_build_seq_ibuf"); + } + re= RE_NewRender(sce->id.name); + + /* prevent eternal loop */ + doseq= scene->r.scemode & R_DOSEQ; + scene->r.scemode &= ~R_DOSEQ; + + RE_BlenderFrame(re, sce, + seq->sfra+se->nr+seq->anim_startofs); + + if(rendering) + BLI_strncpy(sce->id.name+2, scenename, 64); + + RE_AcquireResultImage(re, &rres); + + if(rres.rectf) { + se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); + memcpy(se->ibuf->rect_float, rres.rectf, 4*sizeof(float)*rres.rectx*rres.recty); + if(rres.rectz) { + addzbuffloatImBuf(se->ibuf); + memcpy(se->ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty); + } + } else if (rres.rect32) { + se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0); + memcpy(se->ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty); + } + + RE_ReleaseResultImage(re); + + // BIF_end_render_callbacks(); + + /* restore */ + scene->r.scemode |= doseq; + + seq->scene->r.cfra = oldcfra; + + copy_to_ibuf_still(seq, se); + + if (!build_proxy_run) { + if(se->ibuf == NULL) { + se->ok = STRIPELEM_FAILED; + } else { + input_preprocess(scene, seq, se, cfra); + } + } + + } + } + if (!build_proxy_run) { + if (se->ibuf && use_limiter) { + IMB_cache_limiter_insert(se->ibuf); + IMB_cache_limiter_ref(se->ibuf); + IMB_cache_limiter_touch(se->ibuf); + } + } +} + +static TStripElem* do_build_seq_recursively(Scene *scene, Sequence *seq, int cfra, int render_size); + +static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *se, int cfra, int render_size) +{ + float fac, facf; + struct SeqEffectHandle sh = get_sequence_effect(seq); + int early_out; + FCurve *fcu= NULL; + + se->se1 = 0; + se->se2 = 0; + se->se3 = 0; + + if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { + sh.get_default_fac(seq, cfra, &fac, &facf); + if( scene->r.mode & R_FIELDS ); else facf= fac; + } else { + fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, + "effect_fader", 0); + if (fcu) { + fac = facf = evaluate_fcurve(fcu, cfra); + if( scene->r.mode & R_FIELDS ) { + facf = evaluate_fcurve(fcu, cfra + 0.5); + } + } else { + fac = facf = seq->effect_fader; + } + } + + early_out = sh.early_out(seq, fac, facf); + switch (early_out) { + case -1: + /* no input needed */ + break; + case 0: + se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size); + se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size); + if (seq->seq3) { + se->se3 = do_build_seq_recursively(scene, seq->seq3, cfra, render_size); + } + break; + case 1: + se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size); + break; + case 2: + se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size); + break; + } + + + do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size); + + /* children are not needed anymore ... */ + + if (se->se1 && se->se1->ibuf) { + IMB_cache_limiter_unref(se->se1->ibuf); + } + if (se->se2 && se->se2->ibuf) { + IMB_cache_limiter_unref(se->se2->ibuf); + } + if (se->se3 && se->se3->ibuf) { + IMB_cache_limiter_unref(se->se3->ibuf); + } + check_limiter_refcount("do_effect_seq_recursively", se); +} + +static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, int cfra, int render_size) +{ + TStripElem *se; + + se = give_tstripelem(seq, cfra); + + if(se) { + if (seq->type & SEQ_EFFECT) { + do_effect_seq_recursively(scene, seq, se, cfra, render_size); + } else { + do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size); + } + } + return se; +} + +/* FIXME: + +If cfra was float throughout blender (especially in the render +pipeline) one could even _render_ with subframe precision +instead of faking using the blend code below... + +*/ + +static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra, int render_size) +{ + SpeedControlVars * s = (SpeedControlVars *)seq->effectdata; + int nr = cfra - seq->start; + float f_cfra; + int cfra_left; + int cfra_right; + TStripElem * se = 0; + TStripElem * se1 = 0; + TStripElem * se2 = 0; + + sequence_effect_speed_rebuild_map(scene, seq, 0); + + f_cfra = seq->start + s->frameMap[nr]; + + cfra_left = (int) floor(f_cfra); + cfra_right = (int) ceil(f_cfra); + + se = give_tstripelem(seq, cfra); + + if (!se) { + return se; + } + + if (cfra_left == cfra_right || + (s->flags & SEQ_SPEED_BLEND) == 0) { + test_and_auto_discard_ibuf(se); + + if (se->ibuf == NULL) { + se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size); + + if((se1 && se1->ibuf && se1->ibuf->rect_float)) + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); + else + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + + if (se1 == 0 || se1->ibuf == 0) { + make_black_ibuf(se->ibuf); + } else { + if (se->ibuf != se1->ibuf) { + if (se->ibuf) { + IMB_freeImBuf(se->ibuf); + } + + se->ibuf = se1->ibuf; + IMB_refImBuf(se->ibuf); + } + } + } + } else { + struct SeqEffectHandle sh; + + if(se->ibuf) { + if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty + || !(se->ibuf->rect || se->ibuf->rect_float)) { + IMB_freeImBuf(se->ibuf); + se->ibuf= 0; + } + } + + if (se->ibuf == NULL) { + se1 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_left, render_size); + se2 = do_build_seq_recursively_impl(scene, seq->seq1, cfra_right, render_size); + + if((se1 && se1->ibuf && se1->ibuf->rect_float)) + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); + else + se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + + if (!se1 || !se2) { + make_black_ibuf(se->ibuf); + } else { + sh = get_sequence_effect(seq); + + sh.execute(scene, seq, cfra, + f_cfra - (float) cfra_left, + f_cfra - (float) cfra_left, + se->ibuf->x, se->ibuf->y, + se1->ibuf, se2->ibuf, 0, se->ibuf); + } + } + + } + + /* caller expects this to be referenced, so do it! */ + if (se->ibuf) { + IMB_cache_limiter_insert(se->ibuf); + IMB_cache_limiter_ref(se->ibuf); + IMB_cache_limiter_touch(se->ibuf); + } + + /* children are no longer needed */ + if (se1 && se1->ibuf) + IMB_cache_limiter_unref(se1->ibuf); + if (se2 && se2->ibuf) + IMB_cache_limiter_unref(se2->ibuf); + + check_limiter_refcount("do_handle_speed_effect", se); + + return se; +} + +/* + * build all ibufs recursively + * + * if successfull, the returned TStripElem contains the (referenced!) imbuf + * that means: you _must_ call + * + * IMB_cache_limiter_unref(rval); + * + * if rval != 0 + * + */ + +static TStripElem* do_build_seq_recursively(Scene *scene, Sequence * seq, int cfra, int render_size) +{ + TStripElem *se; + if (seq->type == SEQ_SPEED) { + se = do_handle_speed_effect(scene, seq, cfra, render_size); + } else { + se = do_build_seq_recursively_impl(scene, seq, cfra, render_size); + } + + check_limiter_refcount("do_build_seq_recursively", se); + + return se; +} + +static TStripElem* do_build_seq_array_recursively(Scene *scene, + ListBase *seqbasep, int cfra, int chanshown, int render_size) +{ + Sequence* seq_arr[MAXSEQ+1]; + int count; + int i; + TStripElem* se = 0; + + count = get_shown_sequences(seqbasep, cfra, chanshown, (Sequence **)&seq_arr); + + if (!count) { + return 0; + } + + se = give_tstripelem(seq_arr[count - 1], cfra); + + if (!se) { + return 0; + } + + test_and_auto_discard_ibuf(se); + + if (se->ibuf_comp != 0) { + IMB_cache_limiter_insert(se->ibuf_comp); + IMB_cache_limiter_ref(se->ibuf_comp); + IMB_cache_limiter_touch(se->ibuf_comp); + return se; + } + + + if(count == 1) { + se = do_build_seq_recursively(scene, seq_arr[0], cfra, render_size); + if (se->ibuf) { + se->ibuf_comp = se->ibuf; + IMB_refImBuf(se->ibuf_comp); + } + return se; + } + + + for (i = count - 1; i >= 0; i--) { + int early_out; + Sequence * seq = seq_arr[i]; + struct SeqEffectHandle sh; + float facf; + + se = give_tstripelem(seq, cfra); + + test_and_auto_discard_ibuf(se); + + if (se->ibuf_comp != 0) { + break; + } + if (seq->blend_mode == SEQ_BLEND_REPLACE) { + do_build_seq_recursively(scene, seq, cfra, render_size); + if (se->ibuf) { + se->ibuf_comp = se->ibuf; + IMB_refImBuf(se->ibuf); + } else { + se->ibuf_comp = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rect, 0); + IMB_cache_limiter_insert(se->ibuf_comp); + IMB_cache_limiter_ref(se->ibuf_comp); + IMB_cache_limiter_touch(se->ibuf_comp); + } + break; + } + + sh = get_sequence_blend(seq); + + facf = seq->blend_opacity / 100.0; + + early_out = sh.early_out(seq, facf, facf); + + switch (early_out) { + case -1: + case 2: + do_build_seq_recursively(scene, seq, cfra, render_size); + if (se->ibuf) { + se->ibuf_comp = se->ibuf; + IMB_refImBuf(se->ibuf_comp); + } else { + se->ibuf_comp = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rect, 0); + IMB_cache_limiter_insert(se->ibuf_comp); + IMB_cache_limiter_ref(se->ibuf_comp); + IMB_cache_limiter_touch(se->ibuf_comp); + } + break; + case 1: + if (i == 0) { + se->ibuf_comp = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rect, 0); + IMB_cache_limiter_insert(se->ibuf_comp); + IMB_cache_limiter_ref(se->ibuf_comp); + IMB_cache_limiter_touch(se->ibuf_comp); + } + break; + case 0: + do_build_seq_recursively(scene, seq, cfra, render_size); + if (!se->ibuf) { + se->ibuf = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rect, 0); + IMB_cache_limiter_insert(se->ibuf); + IMB_cache_limiter_ref(se->ibuf); + IMB_cache_limiter_touch(se->ibuf); + } + if (i == 0) { + se->ibuf_comp = se->ibuf; + IMB_refImBuf(se->ibuf_comp); + } + break; + } + + if (se->ibuf_comp) { + break; + } + } + + i++; + + for (; i < count; i++) { + Sequence * seq = seq_arr[i]; + struct SeqEffectHandle sh = get_sequence_blend(seq); + TStripElem* se1 = give_tstripelem(seq_arr[i-1], cfra); + TStripElem* se2 = give_tstripelem(seq_arr[i], cfra); + + float facf = seq->blend_opacity / 100.0; + + int early_out = sh.early_out(seq, facf, facf); + switch (early_out) { + case 0: { + int x= se2->ibuf->x; + int y= se2->ibuf->y; + int swap_input = FALSE; + + if (se1->ibuf_comp->rect_float || + se2->ibuf->rect_float) { + se2->ibuf_comp = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rectfloat, 0); + } else { + se2->ibuf_comp = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, + 32, IB_rect, 0); + } + + + if (!se1->ibuf_comp->rect_float && + se2->ibuf_comp->rect_float) { + IMB_float_from_rect(se1->ibuf_comp); + } + if (!se2->ibuf->rect_float && + se2->ibuf_comp->rect_float) { + IMB_float_from_rect(se2->ibuf); + } + + if (!se1->ibuf_comp->rect && + !se2->ibuf_comp->rect_float) { + IMB_rect_from_float(se1->ibuf_comp); + } + if (!se2->ibuf->rect && + !se2->ibuf_comp->rect_float) { + IMB_rect_from_float(se2->ibuf); + } + + /* bad hack, to fix crazy input ordering of + those two effects */ + + if (seq->blend_mode == SEQ_ALPHAOVER || + seq->blend_mode == SEQ_ALPHAUNDER || + seq->blend_mode == SEQ_OVERDROP) { + swap_input = TRUE; + } + + if (swap_input) { + sh.execute(scene, seq, cfra, + facf, facf, x, y, + se2->ibuf, se1->ibuf_comp, 0, + se2->ibuf_comp); + } else { + sh.execute(scene, seq, cfra, + facf, facf, x, y, + se1->ibuf_comp, se2->ibuf, 0, + se2->ibuf_comp); + } + + IMB_cache_limiter_insert(se2->ibuf_comp); + IMB_cache_limiter_ref(se2->ibuf_comp); + IMB_cache_limiter_touch(se2->ibuf_comp); + + IMB_cache_limiter_unref(se1->ibuf_comp); + IMB_cache_limiter_unref(se2->ibuf); + + break; + } + case 1: { + se2->ibuf_comp = se1->ibuf; + IMB_refImBuf(se2->ibuf_comp); + + break; + } + } + se = se2; + } + + return se; +} + +/* + * returned ImBuf is refed! + * you have to unref after usage! + */ + +static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) +{ + Editing *ed= seq_give_editing(scene, FALSE); + int count; + ListBase *seqbasep; + TStripElem *se; + + + if(ed==NULL) return NULL; + + count = BLI_countlist(&ed->metastack); + if((chanshown < 0) && (count > 0)) { + count = MAX2(count + chanshown, 0); + seqbasep= ((MetaStack*)BLI_findlink(&ed->metastack, count))->oldbasep; + } else { + seqbasep= ed->seqbasep; + } + + seqrectx= rectx; /* bad bad global! */ + seqrecty= recty; + + se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown, render_size); + + if(!se) { + return 0; + } + + check_limiter_refcount_comp("give_ibuf_seq_impl", se); + + return se->ibuf_comp; +} + +ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq) +{ + TStripElem* se; + + seqrectx= rectx; /* bad bad global! */ + seqrecty= recty; + + se = do_build_seq_recursively(scene, seq, cfra, render_size); + + if(!se) { + return 0; + } + + check_limiter_refcount("give_ibuf_seq_direct", se); + + if (se->ibuf) { + IMB_cache_limiter_unref(se->ibuf); + } + + return se->ibuf; +} + +ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) +{ + ImBuf* i = give_ibuf_seq_impl(scene, rectx, recty, cfra, chanshown, render_size); + + if (i) { + IMB_cache_limiter_unref(i); + } + return i; +} + +#if 0 +/* check used when we need to change seq->blend_mode but not to effect or audio strips */ +static int seq_can_blend(Sequence *seq) +{ + if (ELEM4(seq->type, SEQ_IMAGE, SEQ_META, SEQ_SCENE, SEQ_MOVIE)) { + return 1; + } else { + return 0; + } +} +#endif + +/* *********************** threading api ******************* */ + +static ListBase running_threads; +static ListBase prefetch_wait; +static ListBase prefetch_done; + +static pthread_mutex_t queue_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t wakeup_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t wakeup_cond = PTHREAD_COND_INITIALIZER; + +//static pthread_mutex_t prefetch_ready_lock = PTHREAD_MUTEX_INITIALIZER; +//static pthread_cond_t prefetch_ready_cond = PTHREAD_COND_INITIALIZER; + +static pthread_mutex_t frame_done_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t frame_done_cond = PTHREAD_COND_INITIALIZER; + +static volatile int seq_thread_shutdown = FALSE; +static volatile int seq_last_given_monoton_cfra = 0; +static int monoton_cfra = 0; + +typedef struct PrefetchThread { + struct PrefetchThread *next, *prev; + + Scene *scene; + struct PrefetchQueueElem *current; + pthread_t pthread; + int running; + +} PrefetchThread; + +typedef struct PrefetchQueueElem { + struct PrefetchQueueElem *next, *prev; + + int rectx; + int recty; + int cfra; + int chanshown; + int render_size; + + int monoton_cfra; + + struct ImBuf * ibuf; +} PrefetchQueueElem; + +#if 0 +static void *seq_prefetch_thread(void * This_) +{ + PrefetchThread * This = This_; + + while (!seq_thread_shutdown) { + PrefetchQueueElem *e; + int s_last; + + pthread_mutex_lock(&queue_lock); + e = prefetch_wait.first; + if (e) { + BLI_remlink(&prefetch_wait, e); + } + s_last = seq_last_given_monoton_cfra; + + This->current = e; + + pthread_mutex_unlock(&queue_lock); + + if (!e) { + pthread_mutex_lock(&prefetch_ready_lock); + + This->running = FALSE; + + pthread_cond_signal(&prefetch_ready_cond); + pthread_mutex_unlock(&prefetch_ready_lock); + + pthread_mutex_lock(&wakeup_lock); + if (!seq_thread_shutdown) { + pthread_cond_wait(&wakeup_cond, &wakeup_lock); + } + pthread_mutex_unlock(&wakeup_lock); + continue; + } + + This->running = TRUE; + + if (e->cfra >= s_last) { + e->ibuf = give_ibuf_seq_impl(This->scene, + e->rectx, e->recty, e->cfra, e->chanshown, + e->render_size); + } + + pthread_mutex_lock(&queue_lock); + + BLI_addtail(&prefetch_done, e); + + for (e = prefetch_wait.first; e; e = e->next) { + if (s_last > e->monoton_cfra) { + BLI_remlink(&prefetch_wait, e); + MEM_freeN(e); + } + } + + for (e = prefetch_done.first; e; e = e->next) { + if (s_last > e->monoton_cfra) { + if (e->ibuf) { + IMB_cache_limiter_unref(e->ibuf); + } + BLI_remlink(&prefetch_done, e); + MEM_freeN(e); + } + } + + pthread_mutex_unlock(&queue_lock); + + pthread_mutex_lock(&frame_done_lock); + pthread_cond_signal(&frame_done_cond); + pthread_mutex_unlock(&frame_done_lock); + } + return 0; +} + +static void seq_start_threads(Scene *scene) +{ + int i; + + running_threads.first = running_threads.last = NULL; + prefetch_wait.first = prefetch_wait.last = NULL; + prefetch_done.first = prefetch_done.last = NULL; + + seq_thread_shutdown = FALSE; + seq_last_given_monoton_cfra = monoton_cfra = 0; + + /* since global structures are modified during the processing + of one frame, only one render thread is currently possible... + + (but we code, in the hope, that we can remove this restriction + soon...) + */ + + fprintf(stderr, "SEQ-THREAD: seq_start_threads\n"); + + for (i = 0; i < 1; i++) { + PrefetchThread *t = MEM_callocN(sizeof(PrefetchThread), "prefetch_thread"); + t->scene= scene; + t->running = TRUE; + BLI_addtail(&running_threads, t); + + pthread_create(&t->pthread, NULL, seq_prefetch_thread, t); + } + + /* init malloc mutex */ + BLI_init_threads(0, 0, 0); +} + +static void seq_stop_threads() +{ + PrefetchThread *tslot; + PrefetchQueueElem *e; + + fprintf(stderr, "SEQ-THREAD: seq_stop_threads()\n"); + + if (seq_thread_shutdown) { + fprintf(stderr, "SEQ-THREAD: ... already stopped\n"); + return; + } + + pthread_mutex_lock(&wakeup_lock); + + seq_thread_shutdown = TRUE; + + pthread_cond_broadcast(&wakeup_cond); + pthread_mutex_unlock(&wakeup_lock); + + for(tslot = running_threads.first; tslot; tslot= tslot->next) { + pthread_join(tslot->pthread, NULL); + } + + + for (e = prefetch_wait.first; e; e = e->next) { + BLI_remlink(&prefetch_wait, e); + MEM_freeN(e); + } + + for (e = prefetch_done.first; e; e = e->next) { + if (e->ibuf) { + IMB_cache_limiter_unref(e->ibuf); + } + BLI_remlink(&prefetch_done, e); + MEM_freeN(e); + } + + BLI_freelistN(&running_threads); + + /* deinit malloc mutex */ + BLI_end_threads(0); +} +#endif + +void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, + int render_size) +{ + PrefetchQueueElem *e; + if (seq_thread_shutdown) { + return; + } + + e = MEM_callocN(sizeof(PrefetchQueueElem), "prefetch_queue_elem"); + e->rectx = rectx; + e->recty = recty; + e->cfra = cfra; + e->chanshown = chanshown; + e->render_size = render_size; + e->monoton_cfra = monoton_cfra++; + + pthread_mutex_lock(&queue_lock); + BLI_addtail(&prefetch_wait, e); + pthread_mutex_unlock(&queue_lock); + + pthread_mutex_lock(&wakeup_lock); + pthread_cond_signal(&wakeup_cond); + pthread_mutex_unlock(&wakeup_lock); +} + +#if 0 +static void seq_wait_for_prefetch_ready() +{ + PrefetchThread *tslot; + + if (seq_thread_shutdown) { + return; + } + + fprintf(stderr, "SEQ-THREAD: rendering prefetch frames...\n"); + + pthread_mutex_lock(&prefetch_ready_lock); + + for(;;) { + for(tslot = running_threads.first; tslot; tslot= tslot->next) { + if (tslot->running) { + break; + } + } + if (!tslot) { + break; + } + pthread_cond_wait(&prefetch_ready_cond, &prefetch_ready_lock); + } + + pthread_mutex_unlock(&prefetch_ready_lock); + + fprintf(stderr, "SEQ-THREAD: prefetch done\n"); +} +#endif + +ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) +{ + PrefetchQueueElem *e = NULL; + int found_something = FALSE; + + if (seq_thread_shutdown) { + return give_ibuf_seq(scene, rectx, recty, cfra, chanshown, render_size); + } + + while (!e) { + int success = FALSE; + pthread_mutex_lock(&queue_lock); + + for (e = prefetch_done.first; e; e = e->next) { + if (cfra == e->cfra && + chanshown == e->chanshown && + rectx == e->rectx && + recty == e->recty && + render_size == e->render_size) { + success = TRUE; + found_something = TRUE; + break; + } + } + + if (!e) { + for (e = prefetch_wait.first; e; e = e->next) { + if (cfra == e->cfra && + chanshown == e->chanshown && + rectx == e->rectx && + recty == e->recty && + render_size == e->render_size) { + found_something = TRUE; + break; + } + } + } + + if (!e) { + PrefetchThread *tslot; + + for(tslot = running_threads.first; + tslot; tslot= tslot->next) { + if (tslot->current && + cfra == tslot->current->cfra && + chanshown == tslot->current->chanshown && + rectx == tslot->current->rectx && + recty == tslot->current->recty && + render_size== tslot->current->render_size){ + found_something = TRUE; + break; + } + } + } + + /* e->ibuf is unrefed by render thread on next round. */ + + if (e) { + seq_last_given_monoton_cfra = e->monoton_cfra; + } + + pthread_mutex_unlock(&queue_lock); + + if (!success) { + e = NULL; + + if (!found_something) { + fprintf(stderr, + "SEQ-THREAD: Requested frame " + "not in queue ???\n"); + break; + } + pthread_mutex_lock(&frame_done_lock); + pthread_cond_wait(&frame_done_cond, &frame_done_lock); + pthread_mutex_unlock(&frame_done_lock); + } + } + + return e ? e->ibuf : 0; +} + +/* Functions to free imbuf and anim data on changes */ + +static void free_imbuf_strip_elem(TStripElem *se) +{ + if(se->ibuf) { + IMB_freeImBuf(se->ibuf); + } + if(se->ibuf_comp) { + IMB_freeImBuf(se->ibuf_comp); + } + se->ibuf_comp = 0; + se->ibuf= 0; + se->ok= STRIPELEM_OK; + se->se1= se->se2= se->se3= 0; +} + +static void free_anim_seq(Sequence *seq) +{ + if(seq->anim) { + IMB_free_anim(seq->anim); + seq->anim = 0; + } +} + +#if 0 +static void free_imbuf_seq_except(Scene *scene, int cfra) +{ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + TStripElem *se; + int a; + + if(ed==NULL) return; + + SEQ_BEGIN(ed, seq) { + if(seq->strip) { + TStripElem * curelem = give_tstripelem(seq, cfra); + + for(a = 0, se = seq->strip->tstripdata; + a < seq->strip->len && se; a++, se++) { + if(se != curelem) { + free_imbuf_strip_elem(se); + } + } + for(a = 0, se = seq->strip->tstripdata_startstill; + a < seq->strip->startstill && se; a++, se++) { + if(se != curelem) { + free_imbuf_strip_elem(se); + } + } + for(a = 0, se = seq->strip->tstripdata_endstill; + a < seq->strip->endstill && se; a++, se++) { + if(se != curelem) { + free_imbuf_strip_elem(se); + } + } + if(seq->strip->ibuf_startstill) { + IMB_freeImBuf(seq->strip->ibuf_startstill); + seq->strip->ibuf_startstill = 0; + } + + if(seq->strip->ibuf_endstill) { + IMB_freeImBuf(seq->strip->ibuf_endstill); + seq->strip->ibuf_endstill = 0; + } + + if(seq->type==SEQ_MOVIE) + if(seq->startdisp > cfra || seq->enddisp < cfra) + free_anim_seq(seq); + free_proxy_seq(seq); + } + } + SEQ_END +} +#endif + +void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage) +{ + Sequence *seq; + TStripElem *se; + int a; + + if (check_mem_usage) { + /* Let the cache limitor take care of this (schlaile) */ + /* While render let's keep all memory available for render + (ton) + At least if free memory is tight... + This can make a big difference in encoding speed + (it is around 4 times(!) faster, if we do not waste time + on freeing _all_ buffers every time on long timelines...) + (schlaile) + */ + + uintptr_t mem_in_use; + uintptr_t mmap_in_use; + uintptr_t max; + + mem_in_use= MEM_get_memory_in_use(); + mmap_in_use= MEM_get_mapped_memory_in_use(); + max = MEM_CacheLimiter_get_maximum(); + + if (max == 0 || mem_in_use + mmap_in_use <= max) { + return; + } + } + + + for(seq= seqbase->first; seq; seq= seq->next) { + if(seq->strip) { + for(a = 0, se = seq->strip->tstripdata; + a < seq->strip->len && se; a++, se++) { + free_imbuf_strip_elem(se); + } + for(a = 0, se = seq->strip->tstripdata_startstill; + a < seq->strip->startstill && se; a++, se++) { + free_imbuf_strip_elem(se); + } + for(a = 0, se = seq->strip->tstripdata_endstill; + a < seq->strip->endstill && se; a++, se++) { + free_imbuf_strip_elem(se); + } + if(seq->strip->ibuf_startstill) { + IMB_freeImBuf(seq->strip->ibuf_startstill); + seq->strip->ibuf_startstill = 0; + } + + if(seq->strip->ibuf_endstill) { + IMB_freeImBuf(seq->strip->ibuf_endstill); + seq->strip->ibuf_endstill = 0; + } + + if(seq->type==SEQ_MOVIE) + free_anim_seq(seq); + if(seq->type==SEQ_SPEED) { + sequence_effect_speed_rebuild_map(scene, seq, 1); + } + } + if(seq->type==SEQ_META) { + free_imbuf_seq(scene, &seq->seqbase, FALSE); + } + if(seq->type==SEQ_SCENE) { + /* FIXME: recurs downwards, + but do recurs protection somehow! */ + } + } + +} + +static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *changed_seq, int len_change, int ibuf_change) +{ + Sequence *subseq; + int a, free_imbuf = 0; + TStripElem *se; + + /* recurs downwards to see if this seq depends on the changed seq */ + + if(seq == NULL) + return 0; + + if(seq == changed_seq) + free_imbuf = 1; + + for(subseq=seq->seqbase.first; subseq; subseq=subseq->next) + if(update_changed_seq_recurs(scene, subseq, changed_seq, len_change, ibuf_change)) + free_imbuf = TRUE; + + if(seq->seq1) + if(update_changed_seq_recurs(scene, seq->seq1, changed_seq, len_change, ibuf_change)) + free_imbuf = TRUE; + if(seq->seq2 && (seq->seq2 != seq->seq1)) + if(update_changed_seq_recurs(scene, seq->seq2, changed_seq, len_change, ibuf_change)) + free_imbuf = TRUE; + if(seq->seq3 && (seq->seq3 != seq->seq1) && (seq->seq3 != seq->seq2)) + if(update_changed_seq_recurs(scene, seq->seq3, changed_seq, len_change, ibuf_change)) + free_imbuf = TRUE; + + if(free_imbuf) { + if(ibuf_change) { + se= seq->strip->tstripdata; + if (se) { + for(a=0; alen; a++, se++) + free_imbuf_strip_elem(se); + } + + if(seq->type == SEQ_MOVIE) + free_anim_seq(seq); + if(seq->type == SEQ_SPEED) { + sequence_effect_speed_rebuild_map(scene, seq, 1); + } + } + + if(len_change) + calc_sequence(seq); + } + + return free_imbuf; +} + +void update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_change, int ibuf_change) +{ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + if (ed==NULL) return; + + for (seq=ed->seqbase.first; seq; seq=seq->next) + update_changed_seq_recurs(scene, seq, changed_seq, len_change, ibuf_change); +} + +#if 0 // XXX from 2.4x, needs updating +void free_imbuf_seq() +{ + Scene * sce = G.main->scene.first; + while(sce) { + free_imbuf_seq_editing(sce->ed); + sce= sce->id.next; + } +} +#endif + +#if 0 // XXX old animation system +static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo) +{ + /* force update of all sequences with this ipo, on ipo changes */ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + if(ed==NULL) return; + + SEQ_BEGIN(ed, seq) { + if(seq->ipo == ipo) { + update_changed_seq_and_deps(scene, seq, 0, 1); + if(seq->type == SEQ_SPEED) { + sequence_effect_speed_rebuild_map(seq, 1); + } + free_proxy_seq(seq); + } + } + SEQ_END +} +#endif + +/* seq funcs's for transforming internally + notice the difference between start/end and left/right. + + left and right are the bounds at which the sequence is rendered, +start and end are from the start and fixed length of the sequence. +*/ +int seq_tx_get_start(Sequence *seq) { + return seq->start; +} +int seq_tx_get_end(Sequence *seq) +{ + return seq->start+seq->len; +} + +int seq_tx_get_final_left(Sequence *seq, int metaclip) +{ + if (metaclip && seq->tmp) { + /* return the range clipped by the parents range */ + return MAX2( seq_tx_get_final_left(seq, 0), seq_tx_get_final_left((Sequence *)seq->tmp, 1) ); + } else { + return (seq->start - seq->startstill) + seq->startofs; + } + +} +int seq_tx_get_final_right(Sequence *seq, int metaclip) +{ + if (metaclip && seq->tmp) { + /* return the range clipped by the parents range */ + return MIN2( seq_tx_get_final_right(seq, 0), seq_tx_get_final_right((Sequence *)seq->tmp, 1) ); + } else { + return ((seq->start+seq->len) + seq->endstill) - seq->endofs; + } +} + +void seq_tx_set_final_left(Sequence *seq, int val) +{ + if (val < (seq)->start) { + seq->startstill = abs(val - (seq)->start); + seq->startofs = 0; + } else { + seq->startofs = abs(val - (seq)->start); + seq->startstill = 0; + } +} + +void seq_tx_set_final_right(Sequence *seq, int val) +{ + if (val > (seq)->start + (seq)->len) { + seq->endstill = abs(val - (seq->start + (seq)->len)); + seq->endofs = 0; + } else { + seq->endofs = abs(val - ((seq)->start + (seq)->len)); + seq->endstill = 0; + } +} + +/* used so we can do a quick check for single image seq + since they work a bit differently to normal image seq's (during transform) */ +int check_single_seq(Sequence *seq) +{ + if ( seq->len==1 && (seq->type == SEQ_IMAGE || seq->type == SEQ_COLOR)) + return 1; + else + return 0; +} + +/* use to impose limits when dragging/extending - so impossible situations dont happen + * Cant use the SEQ_LEFTSEL and SEQ_LEFTSEL directly because the strip may be in a metastrip */ +void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) +{ + if(leftflag) { + if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_final_right(seq, 0)) { + seq_tx_set_final_left(seq, seq_tx_get_final_right(seq, 0)-1); + } + + if (check_single_seq(seq)==0) { + if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_end(seq)) { + seq_tx_set_final_left(seq, seq_tx_get_end(seq)-1); + } + + /* dosnt work now - TODO */ + /* + if (seq_tx_get_start(seq) >= seq_tx_get_final_right(seq, 0)) { + int ofs; + ofs = seq_tx_get_start(seq) - seq_tx_get_final_right(seq, 0); + seq->start -= ofs; + seq_tx_set_final_left(seq, seq_tx_get_final_left(seq, 0) + ofs ); + }*/ + + } + } + + if(rightflag) { + if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_final_left(seq, 0)) { + seq_tx_set_final_right(seq, seq_tx_get_final_left(seq, 0)+1); + } + + if (check_single_seq(seq)==0) { + if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_start(seq)) { + seq_tx_set_final_right(seq, seq_tx_get_start(seq)+1); + } + } + } + + /* sounds cannot be extended past their endpoints */ + if (seq->type == SEQ_SOUND) { + seq->startstill= 0; + seq->endstill= 0; + } +} + +void fix_single_seq(Sequence *seq) +{ + int left, start, offset; + if (!check_single_seq(seq)) + return; + + /* make sure the image is always at the start since there is only one, + adjusting its start should be ok */ + left = seq_tx_get_final_left(seq, 0); + start = seq->start; + if (start != left) { + offset = left - start; + seq_tx_set_final_left( seq, seq_tx_get_final_left(seq, 0) - offset ); + seq_tx_set_final_right( seq, seq_tx_get_final_right(seq, 0) - offset ); + seq->start += offset; + } +} + +int seq_tx_test(Sequence * seq) +{ + return (seq->type < SEQ_EFFECT) || (get_sequence_effect_num_inputs(seq->type) == 0); +} + +static int seq_overlap(Sequence *seq1, Sequence *seq2) +{ + if(seq1 != seq2) + if(seq1->machine==seq2->machine) + if(((seq1->enddisp <= seq2->startdisp) || (seq1->startdisp >= seq2->enddisp))==0) + return 1; + + return 0; +} + +int seq_test_overlap(ListBase * seqbasep, Sequence *test) +{ + Sequence *seq; + + seq= seqbasep->first; + while(seq) { + if(seq_overlap(test, seq)) + return 1; + + seq= seq->next; + } + return 0; +} + + +static void seq_translate(Sequence *seq, int delta) +{ + seq->start += delta; + if(seq->type==SEQ_META) { + Sequence *seq_child; + for(seq_child= seq->seqbase.first; seq_child; seq_child= seq_child->next) { + seq_translate(seq_child, delta); + } + } + + calc_sequence_disp(seq); +} + +/* return 0 if there werent enough space */ +int shuffle_seq(ListBase * seqbasep, Sequence *test) +{ + int orig_machine= test->machine; + test->machine++; + calc_sequence(test); + while( seq_test_overlap(seqbasep, test) ) { + if(test->machine >= MAXSEQ) { + break; + } + test->machine++; + calc_sequence(test); // XXX - I dont think this is needed since were only moving vertically, Campbell. + } + + + if(test->machine >= MAXSEQ) { + /* Blender 2.4x would remove the strip. + * nicer to move it to the end */ + + Sequence *seq; + int new_frame= test->enddisp; + + for(seq= seqbasep->first; seq; seq= seq->next) { + if (seq->machine == orig_machine) + new_frame = MAX2(new_frame, seq->enddisp); + } + + test->machine= orig_machine; + new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */ + seq_translate(test, new_frame - test->start); + + calc_sequence(test); + return 0; + } else { + return 1; + } +} + +static int shuffle_seq_time_offset_test(ListBase * seqbasep, char dir) +{ + int offset= 0; + Sequence *seq, *seq_other; + + for(seq= seqbasep->first; seq; seq= seq->next) { + if(seq->tmp) { + for(seq_other= seqbasep->first; seq_other; seq_other= seq_other->next) { + if(!seq_other->tmp && seq_overlap(seq, seq_other)) { + if(dir=='L') { + offset= MIN2(offset, seq_other->startdisp - seq->enddisp); + } + else { + offset= MAX2(offset, seq_other->enddisp - seq->startdisp); + } + } + } + } + } + return offset; +} + +static int shuffle_seq_time_offset(ListBase * seqbasep, char dir) +{ + int ofs= 0; + int tot_ofs= 0; + Sequence *seq; + while( (ofs= shuffle_seq_time_offset_test(seqbasep, dir)) ) { + for(seq= seqbasep->first; seq; seq= seq->next) { + if(seq->tmp) { + /* seq_test_overlap only tests display values */ + seq->startdisp += ofs; + seq->enddisp += ofs; + } + } + + tot_ofs+= ofs; + } + + for(seq= seqbasep->first; seq; seq= seq->next) { + if(seq->tmp) + calc_sequence_disp(seq); /* corrects dummy startdisp/enddisp values */ + } + + return tot_ofs; +} + +int shuffle_seq_time(ListBase * seqbasep) +{ + /* note: seq->tmp is used to tag strips to move */ + + Sequence *seq; + + int offset_l = shuffle_seq_time_offset(seqbasep, 'L'); + int offset_r = shuffle_seq_time_offset(seqbasep, 'R'); + int offset = (-offset_l < offset_r) ? offset_l:offset_r; + + if(offset) { + for(seq= seqbasep->first; seq; seq= seq->next) { + if(seq->tmp) { + seq_translate(seq, offset); + seq->flag &= ~SEQ_OVERLAP; + } + } + } + + return offset? 0:1; +} + +void seq_update_sound(Sequence *seq) +{ + if(seq->type == SEQ_SOUND && seq->sound_handle) + { + seq->sound_handle->startframe = seq->startdisp; + seq->sound_handle->endframe = seq->enddisp; + seq->sound_handle->frameskip = seq->startofs + seq->anim_startofs; + seq->sound_handle->changed = -1; + /* mute is set in seq_update_muting_recursive */ + } +} + +static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, int mute) +{ + Sequence *seq; + int seqmute; + + /* for sound we go over full meta tree to update muted state, + since sound is played outside of evaluating the imbufs, */ + for(seq=seqbasep->first; seq; seq=seq->next) { + seqmute= (mute || (seq->flag & SEQ_MUTE)); + + if(seq->type == SEQ_META) { + /* if this is the current meta sequence, unmute because + all sequences above this were set to mute */ + if(seq == metaseq) + seqmute= 0; + + seq_update_muting_recursive(&seq->seqbase, metaseq, seqmute); + } + else if(seq->type == SEQ_SOUND) { + if(seq->sound_handle && seqmute != seq->sound_handle->mute) { + seq->sound_handle->mute = seqmute; + seq->sound_handle->changed = -1; + } + } + } +} + +void seq_update_muting(Editing *ed) +{ + if(ed) { + /* mute all sounds up to current metastack list */ + MetaStack *ms= ed->metastack.last; + + if(ms) + seq_update_muting_recursive(&ed->seqbase, ms->parseq, 1); + else + seq_update_muting_recursive(&ed->seqbase, NULL, 0); + } +} + + +/* XXX - hackish function needed for transforming strips! TODO - have some better solution */ +void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) +{ + char str[32]; + FCurve *fcu; + + if(scene->adt==NULL || ofs==0) + return; + + sprintf(str, "[\"%s\"]", seq->name+2); + + for (fcu= scene->adt->action->curves.first; fcu; fcu= fcu->next) { + if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) { + int i; + for (i = 0; i < fcu->totvert; i++) { + BezTriple *bezt= &fcu->bezt[i]; + bezt->vec[0][0] += ofs; + bezt->vec[1][0] += ofs; + bezt->vec[2][0] += ofs; + } + } + } +} + + +Sequence *active_seq_get(Scene *scene) +{ + Editing *ed= seq_give_editing(scene, FALSE); + if(ed==NULL) return NULL; + return ed->act_seq; +} + +void active_seq_set(Scene *scene, Sequence *seq) +{ + Editing *ed= seq_give_editing(scene, FALSE); + if(ed==NULL) return; + + ed->act_seq= seq; +} + +/* api like funcs for adding */ + +void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) +{ + if(seq) { + strcpy(seq->name, seq_load->name); + seqUniqueName(scene->ed->seqbasep, seq); + + if(seq_load->flag & SEQ_LOAD_FRAME_ADVANCE) { + seq_load->start_frame += (seq->enddisp - seq->startdisp); + } + + if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) { + seq_load->flag |= 1; /* SELECT */ + active_seq_set(scene, seq); + } + + if(seq_load->flag & SEQ_LOAD_SOUND_CACHE) { + if(seq->sound) + sound_cache(seq->sound, 0); + } + + seq_load->tot_success++; + } + else { + seq_load->tot_error++; + } +} + +Sequence *alloc_sequence(ListBase *lb, int cfra, int machine) +{ + Sequence *seq; + + seq= MEM_callocN( sizeof(Sequence), "addseq"); + BLI_addtail(lb, seq); + + *( (short *)seq->name )= ID_SEQ; + seq->name[2]= 0; + + seq->flag= 1; /* SELECT */ + seq->start= cfra; + seq->machine= machine; + seq->mul= 1.0; + seq->blend_opacity = 100.0; + + return seq; +} + +void seqUniqueName(ListBase *seqbasep, Sequence *seq) +{ + BLI_uniquename(seqbasep, seq, "Sequence", '.', offsetof(Sequence, name), SEQ_NAME_MAXSTR); +} + +/* NOTE: this function doesn't fill in iamge names */ +Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) +{ + Scene *scene= CTX_data_scene(C); /* only for active seq */ + Sequence *seq; + Strip *strip; + StripElem *se; + + seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); + seq->type= SEQ_IMAGE; + BLI_strncpy(seq->name+2, "Image", SEQ_NAME_MAXSTR-2); + seqUniqueName(seqbasep, seq); + + /* basic defaults */ + seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); + + strip->len = seq->len = seq_load->len ? seq_load->len : 1; + strip->us= 1; + strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); + BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); + + seq_load_apply(scene, seq, seq_load); + + return seq; +} + +Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) +{ + Scene *scene= CTX_data_scene(C); /* only for sound */ + Editing *ed= seq_give_editing(scene, TRUE); + bSound *sound; + + Sequence *seq; /* generic strip vars */ + Strip *strip; + StripElem *se; + + AUD_SoundInfo info; + + sound = sound_new_file(CTX_data_main(C), seq_load->path); + + if (sound==NULL || sound->handle == NULL) { + //if(op) + // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); + return NULL; + } + + info = AUD_getInfo(sound->handle); + + if (info.specs.format == AUD_FORMAT_INVALID) { + sound_delete(C, sound); + //if(op) + // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); + return NULL; + } + + seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); + + seq->type= SEQ_SOUND; + seq->sound= sound; + BLI_strncpy(seq->name+2, "Sound", SEQ_NAME_MAXSTR-2); + seqUniqueName(seqbasep, seq); + + /* basic defaults */ + seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); + strip->len = seq->len = (int) (info.length * FPS); + strip->us= 1; + + strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); + + BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); + + seq->sound_handle = sound_new_handle(scene, sound, seq_load->start_frame, seq_load->start_frame + strip->len, 0); + + calc_sequence_disp(seq); + + /* last active name */ + strncpy(ed->act_sounddir, strip->dir, FILE_MAXDIR-1); + + seq_load_apply(scene, seq, seq_load); + + return seq; +} + +Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) +{ + Scene *scene= CTX_data_scene(C); /* only for sound */ + + Sequence *seq, *soundseq; /* generic strip vars */ + Strip *strip; + StripElem *se; + + struct anim *an; + + an = openanim(seq_load->path, IB_rect); + + if(an==NULL) + return NULL; + + seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); + + seq->type= SEQ_MOVIE; + seq->anim= an; + seq->anim_preseek = IMB_anim_get_preseek(an); + BLI_strncpy(seq->name+2, "Movie", SEQ_NAME_MAXSTR-2); + seqUniqueName(seqbasep, seq); + + /* basic defaults */ + seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); + strip->len = seq->len = IMB_anim_get_duration( an ); + strip->us= 1; + + strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); + + BLI_split_dirfile_basic(seq_load->path, strip->dir, se->name); + + calc_sequence_disp(seq); + + + if(seq_load->flag & SEQ_LOAD_MOVIE_SOUND) { + int start_frame_back= seq_load->start_frame; + seq_load->channel++; + + soundseq = sequencer_add_sound_strip(C, seqbasep, seq_load); + + seq_load->start_frame= start_frame_back; + seq_load->channel--; + } + + /* can be NULL */ + seq_load_apply(scene, seq, seq_load); + + return seq; +} diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index cadf8d2bdd1..0df9d9b8db3 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -60,7 +60,7 @@ #include "BKE_global.h" #include "BKE_image.h" /* so we can check the image's type */ #include "BKE_main.h" /* so we can access G.main->*.first */ -#include "BKE_sequence.h" +#include "BKE_sequencer.h" #include "BKE_text.h" /* for writing to a textblock */ #include "BKE_utildefines.h" diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c new file mode 100644 index 00000000000..5ff4dfe4e96 --- /dev/null +++ b/source/blender/blenlib/intern/path_util.c @@ -0,0 +1,1586 @@ +/* util.c + * + * various string, file, list operations. + * + * + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + +#include +#include +#include +#include +#include +#include +#include /* for log10 */ + +#include "MEM_guardedalloc.h" + +#include "DNA_listBase.h" +#include "DNA_userdef_types.h" + +#include "BLI_blenlib.h" +#include "BLI_storage.h" +#include "BLI_storage_types.h" +#include "BLI_dynamiclist.h" + +#include "BLI_util.h" +#include "BKE_utildefines.h" + + + + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifndef WIN32 +#include +#else +#include +#endif + +#ifdef WIN32 + +#ifdef _WIN32_IE +#undef _WIN32_IE +#endif +#define _WIN32_IE 0x0501 +#include +#include + +#include "BLI_winstuff.h" + +#endif + + +#ifndef WIN32 +#include +#endif + +#ifdef __APPLE__ +#include +#include +#endif + +#ifdef __linux__ +#include "binreloc.h" +#endif + +/* local */ + +static int add_win32_extension(char *name); + +/* implementation */ + +int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen) +{ + unsigned short len, len2, nums = 0, nume = 0; + short i, found = 0; + + len2 = len = strlen(string); + + if (len > 6) { + if (BLI_strncasecmp(string + len - 6, ".blend", 6) == 0) len -= 6; + else if (BLI_strncasecmp(string + len - 6, ".trace", 6) == 0) len -= 6; + } + + if (len > 9) { + if (BLI_strncasecmp(string + len - 9, ".blend.gz", 9) == 0) len -= 9; + } + + if (len == len2) { + if (len > 4) { + /* handle .jf0 en .jf1 for jstreams */ + if (BLI_strncasecmp(string + len - 4, ".jf", 3) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".tga", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".jpg", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".png", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".txt", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".cyc", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".enh", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".rgb", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".psx", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".ble", 4) == 0) len -= 4; + else if (BLI_strncasecmp(string + len - 4, ".exr", 4) == 0) len -= 4; + } + } + + for (i = len - 1; i >= 0; i--) { + if (string[i] == '/') break; + if (isdigit(string[i])) { + if (found){ + nums = i; + } + else{ + nume = i; + nums = i; + found = 1; + } + } + else { + if (found) break; + } + } + if (found){ + if (start) strcpy(start,&string[nume+1]); + if (kop) { + strcpy(kop,string); + kop[nums]=0; + } + if (numlen) *numlen = nume-nums+1; + return ((int)atoi(&(string[nums]))); + } + if (start) strcpy(start, string + len); + if (kop) { + strncpy(kop, string, len); + kop[len] = 0; + } + if (numlen) *numlen=0; + return 0; +} + + +void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic) +{ + char numstr[10]=""; + unsigned short len,i; + + strcpy(string,kop); + + if (pic>0 || numlen==4) { + len= sprintf(numstr,"%d",pic); + + for(i=len;i 99 or from 10 -> 9 */ + if (add < 0 && digits < 4 && digits > 0) { + int i, exp; + exp = 1; + for (i = digits; i > 1; i--) exp *= 10; + if (pic >= exp && (pic + add) < exp) digits--; + } + + pic += add; + + if (digits==4 && pic<0) pic= 0; + BLI_stringenc(name, head, tail, digits, pic); +} + +/* little helper macro for BLI_uniquename */ +#ifndef GIVE_STRADDR + #define GIVE_STRADDR(data, offset) ( ((char *)data) + offset ) +#endif + +/* Generic function to set a unique name. It is only designed to be used in situations + * where the name is part of the struct, and also that the name is at most 128 chars long. + * + * For places where this is used, see constraint.c for example... + * + * name_offs: should be calculated using offsetof(structname, membername) macro from stddef.h + * len: maximum length of string (to prevent overflows, etc.) + * defname: the name that should be used by default if none is specified already + * delim: the character which acts as a delimeter between parts of the name + */ +void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len) +{ + Link *link; + char tempname[128]; + int number = 1, exists = 0; + char *dot; + + /* Make sure length can be handled */ + if ((len < 0) || (len > 128)) + return; + + /* See if we are given an empty string */ + if (ELEM(NULL, vlink, defname)) + return; + + if (GIVE_STRADDR(vlink, name_offs) == '\0') { + /* give it default name first */ + BLI_strncpy(GIVE_STRADDR(vlink, name_offs), defname, len); + } + + /* See if we even need to do this */ + if (list == NULL) + return; + + for (link = list->first; link; link= link->next) { + if (link != vlink) { + if (!strcmp(GIVE_STRADDR(link, name_offs), GIVE_STRADDR(vlink, name_offs))) { + exists = 1; + break; + } + } + } + if (exists == 0) + return; + + /* Strip off the suffix */ + dot = strchr(GIVE_STRADDR(vlink, name_offs), delim); + if (dot) + *dot=0; + + for (number = 1; number <= 999; number++) { + BLI_snprintf(tempname, 128, "%s%c%03d", GIVE_STRADDR(vlink, name_offs), delim, number); + + exists = 0; + for (link= list->first; link; link= link->next) { + if (vlink != link) { + if (!strcmp(GIVE_STRADDR(link, name_offs), tempname)) { + exists = 1; + break; + } + } + } + if (exists == 0) { + BLI_strncpy(GIVE_STRADDR(vlink, name_offs), tempname, len); + return; + } + } +} + +/* ******************** string encoding ***************** */ + +/* This is quite an ugly function... its purpose is to + * take the dir name, make it absolute, and clean it up, replacing + * excess file entry stuff (like /tmp/../tmp/../) + * note that dir isn't protected for max string names... + * + * If relbase is NULL then its ignored + */ + +void BLI_cleanup_dir(const char *relabase, char *dir) +{ + BLI_cleanup_file(relabase, dir); + BLI_add_slash(dir); + +} + +void BLI_cleanup_file(const char *relabase, char *dir) +{ + short a; + char *start, *eind; + if (relabase) { + BLI_convertstringcode(dir, relabase); + } else { + if (dir[0]=='/' && dir[1]=='/') { + if (dir[2]== '\0') { + return; /* path is "//" - cant clean it */ + } + dir = dir+2; /* skip the first // */ + } + } + + /* Note + * memmove( start, eind, strlen(eind)+1 ); + * is the same as + * strcpy( start, eind ); + * except strcpy should not be used because there is overlap, + * so use memmove's slightly more obscure syntax - Campbell + */ + +#ifdef WIN32 + + /* Note, this should really be moved to the file selector, + * since this function is used in many areas */ + if(strcmp(dir, ".")==0) { /* happens for example in FILE_MAIN */ + get_default_root(dir); + return; + } + + while ( (start = strstr(dir, "\\..\\")) ) { + eind = start + strlen("\\..\\") - 1; + a = start-dir-1; + while (a>0) { + if (dir[a] == '\\') break; + a--; + } + if (a<0) { + break; + } else { + memmove( dir+a, eind, strlen(eind)+1 ); + } + } + + while ( (start = strstr(dir,"\\.\\")) ){ + eind = start + strlen("\\.\\") - 1; + memmove( start, eind, strlen(eind)+1 ); + } + + while ( (start = strstr(dir,"\\\\" )) ){ + eind = start + strlen("\\\\") - 1; + memmove( start, eind, strlen(eind)+1 ); + } + + if((a = strlen(dir))){ /* remove the '\\' at the end */ + while(a>0 && dir[a-1] == '\\'){ + a--; + dir[a] = 0; + } + } +#else + if(dir[0]=='.') { /* happens, for example in FILE_MAIN */ + dir[0]= '/'; + dir[1]= 0; + return; + } + + while ( (start = strstr(dir, "/../")) ) { + eind = start + strlen("/../") - 1; + a = start-dir-1; + while (a>0) { + if (dir[a] == '/') break; + a--; + } + if (a<0) { + break; + } else { + memmove( dir+a, eind, strlen(eind)+1 ); + } + } + + while ( (start = strstr(dir,"/./")) ){ + eind = start + strlen("/./") - 1; + memmove( start, eind, strlen(eind)+1 ); + } + + while ( (start = strstr(dir,"//" )) ){ + eind = start + strlen("//") - 1; + memmove( start, eind, strlen(eind)+1 ); + } + + if( (a = strlen(dir)) ){ /* remove all '/' at the end */ + while(dir[a-1] == '/'){ + a--; + dir[a] = 0; + if (a<=0) break; + } + } +#endif +} + + +void BLI_makestringcode(const char *relfile, char *file) +{ + char * p; + char * q; + char * lslash; + char temp[FILE_MAXDIR+FILE_MAXFILE]; + char res[FILE_MAXDIR+FILE_MAXFILE]; + + /* if file is already relative, bail out */ + if(file[0]=='/' && file[1]=='/') return; + + /* also bail out if relative path is not set */ + if (relfile[0] == 0) return; + +#ifdef WIN32 + if (strlen(relfile) > 2 && relfile[1] != ':') { + char* ptemp; + /* fix missing volume name in relative base, + can happen with old .Blog files */ + get_default_root(temp); + ptemp = &temp[2]; + if (relfile[0] != '\\' && relfile[0] != '/') { + ptemp++; + } + BLI_strncpy(ptemp, relfile, FILE_MAXDIR + FILE_MAXFILE-3); + } else { + BLI_strncpy(temp, relfile, FILE_MAXDIR + FILE_MAXFILE); + } + + if (strlen(file) > 2) { + if ( temp[1] == ':' && file[1] == ':' && temp[0] != file[0] ) + return; + } +#else + BLI_strncpy(temp, relfile, FILE_MAX); +#endif + + BLI_char_switch(temp, '\\', '/'); + BLI_char_switch(file, '\\', '/'); + + /* remove /./ which confuse the following slash counting... */ + BLI_cleanup_file(NULL, file); + BLI_cleanup_file(NULL, temp); + + /* the last slash in the file indicates where the path part ends */ + lslash = BLI_last_slash(temp); + + if (lslash) + { + /* find the prefix of the filename that is equal for both filenames. + This is replaced by the two slashes at the beginning */ + p = temp; + q = file; + while (*p == *q) { + ++p; ++q; + } + /* we might have passed the slash when the beginning of a dir matches + so we rewind. Only check on the actual filename + */ + if (*q != '/') { + while ( (q >= file) && (*q != '/') ) { --q; --p; } + } + else if (*p != '/') { + while ( (p >= temp) && (*p != '/') ) { --p; --q; } + } + + strcpy(res, "//"); + + /* p now points to the slash that is at the beginning of the part + where the path is different from the relative path. + We count the number of directories we need to go up in the + hierarchy to arrive at the common 'prefix' of the path + */ + while (p && p < lslash) { + if (*p == '/') + strcat(res, "../"); + ++p; + } + + strcat(res, q+1); /* don't copy the slash at the beginning */ + +#ifdef WIN32 + BLI_char_switch(res+2, '/', '\\'); +#endif + strcpy(file, res); + } +} + +int BLI_has_parent(char *path) +{ + int len; + int slashes = 0; + BLI_clean(path); + len = BLI_add_slash(path) - 1; + + while (len>=0) { + if ((path[len] == '\\') || (path[len] == '/')) + slashes++; + len--; + } + return slashes > 1; +} + +int BLI_parent_dir(char *path) +{ +#ifdef WIN32 + static char *parent_dir="..\\"; +#else + static char *parent_dir="../"; +#endif + char tmp[FILE_MAXDIR+FILE_MAXFILE+4]; + BLI_strncpy(tmp, path, sizeof(tmp)); + BLI_add_slash(tmp); + strcat(tmp, parent_dir); + BLI_cleanup_dir(NULL, tmp); + + if (!BLI_testextensie(tmp, parent_dir)) { + BLI_strncpy(path, tmp, sizeof(tmp)); + return 1; + } else { + return 0; + } +} + +int BLI_convertstringframe(char *path, int frame) +{ + int ch_sta, ch_end, i; + /* Insert current frame: file### -> file001 */ + ch_sta = ch_end = 0; + for (i = 0; path[i] != '\0'; i++) { + if (path[i] == '\\' || path[i] == '/') { + ch_end = 0; /* this is a directory name, dont use any hashes we found */ + } else if (path[i] == '#') { + ch_sta = i; + ch_end = ch_sta+1; + while (path[ch_end] == '#') { + ch_end++; + } + i = ch_end-1; /* keep searching */ + + /* dont break, there may be a slash after this that invalidates the previous #'s */ + } + } + if (ch_end) { /* warning, ch_end is the last # +1 */ + /* Add the frame number? */ + short numlen, hashlen; + char tmp[FILE_MAX]; + + char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */ + if (((ch_end-1)-ch_sta) >= 16) { + ch_end = ch_sta+15; /* disallow values longer then 'format' can hold */ + } + + strcpy(tmp, path); + + numlen = 1 + (int)log10((double)frame); /* this is the number of chars in the number */ + hashlen = ch_end - ch_sta; + + sprintf(format, "%d", frame); + + if (numlen==hashlen) { /* simple case */ + memcpy(tmp+ch_sta, format, numlen); + } else if (numlen < hashlen) { + memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */ + memset(tmp+ch_sta, '0', hashlen-numlen); + } else { + /* number is longer then number of #'s */ + if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/ + /* bad juju - not testing string length here :/ */ + memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */ + } else { + /* we need to move the end characters, reuse i */ + int j; + + i = strlen(tmp); /* +1 to copy the string terminator */ + j = i + (numlen-hashlen); /* from/to */ + + while (i >= ch_end) { + tmp[j] = tmp[i]; + i--; + j--; + } + memcpy(tmp + ch_sta, format, numlen); + } + } + strcpy(path, tmp); + return 1; + } + return 0; +} + + +int BLI_convertstringcode(char *path, const char *basepath) +{ + int wasrelative = (strncmp(path, "//", 2)==0); + char tmp[FILE_MAX]; + char base[FILE_MAX]; +#ifdef WIN32 + char vol[3] = {'\0', '\0', '\0'}; + + BLI_strncpy(vol, path, 3); + /* we are checking here if we have an absolute path that is not in the current + blend file as a lib main - we are basically checking for the case that a + UNIX root '/' is passed. + */ + if (!wasrelative && (vol[1] != ':' && (vol[0] == '\0' || vol[0] == '/' || vol[0] == '\\'))) { + char *p = path; + get_default_root(tmp); + // get rid of the slashes at the beginning of the path + while (*p == '\\' || *p == '/') { + p++; + } + strcat(tmp, p); + } + else { + BLI_strncpy(tmp, path, FILE_MAX); + } +#else + BLI_strncpy(tmp, path, FILE_MAX); + + /* Check for loading a windows path on a posix system + * in this case, there is no use in trying C:/ since it + * will never exist on a unix os. + * + * Add a / prefix and lowercase the driveletter, remove the : + * C:\foo.JPG -> /c/foo.JPG */ + + if (isalpha(tmp[0]) && tmp[1] == ':' && (tmp[2]=='\\' || tmp[2]=='/') ) { + tmp[1] = tolower(tmp[0]); /* replace ':' with driveletter */ + tmp[0] = '/'; + /* '\' the slash will be converted later */ + } + +#endif + + BLI_strncpy(base, basepath, FILE_MAX); + + BLI_cleanup_file(NULL, base); + + /* push slashes into unix mode - strings entering this part are + potentially messed up: having both back- and forward slashes. + Here we push into one conform direction, and at the end we + push them into the system specific dir. This ensures uniformity + of paths and solving some problems (and prevent potential future + ones) -jesterKing. */ + BLI_char_switch(tmp, '\\', '/'); + BLI_char_switch(base, '\\', '/'); + + /* Paths starting with // will get the blend file as their base, + * this isnt standard in any os but is uesed in blender all over the place */ + if (wasrelative) { + char *lslash= BLI_last_slash(base); + if (lslash) { + int baselen= (int) (lslash-base) + 1; + /* use path for for temp storage here, we copy back over it right away */ + BLI_strncpy(path, tmp+2, FILE_MAX); + + memcpy(tmp, base, baselen); + strcpy(tmp+baselen, path); + strcpy(path, tmp); + } else { + strcpy(path, tmp+2); + } + } else { + strcpy(path, tmp); + } + + if (path[0]!='\0') { + if ( path[strlen(path)-1]=='/') { + BLI_cleanup_dir(NULL, path); + } else { + BLI_cleanup_file(NULL, path); + } + } + +#ifdef WIN32 + /* skip first two chars, which in case of + absolute path will be drive:/blabla and + in case of relpath //blabla/. So relpath + // will be retained, rest will be nice and + shiny win32 backward slashes :) -jesterKing + */ + BLI_char_switch(path+2, '/', '\\'); +#endif + + return wasrelative; +} + + +/* + * Should only be done with command line paths. + * this is NOT somthing blenders internal paths support like the // prefix + */ +int BLI_convertstringcwd(char *path) +{ + int wasrelative = 1; + int filelen = strlen(path); + +#ifdef WIN32 + if (filelen >= 3 && path[1] == ':' && (path[2] == '\\' || path[2] == '/')) + wasrelative = 0; +#else + if (filelen >= 2 && path[0] == '/') + wasrelative = 0; +#endif + + if (wasrelative==1) { + char cwd[FILE_MAXDIR + FILE_MAXFILE]; + BLI_getwdN(cwd); /* incase the full path to the blend isnt used */ + + if (cwd[0] == '\0') { + printf( "Could not get the current working directory - $PWD for an unknown reason."); + } else { + /* uses the blend path relative to cwd important for loading relative linked files. + * + * cwd should contain c:\ etc on win32 so the relbase can be NULL + * relbase being NULL also prevents // being misunderstood as relative to the current + * blend file which isnt a feature we want to use in this case since were dealing + * with a path from the command line, rather then from inside Blender */ + + char origpath[FILE_MAXDIR + FILE_MAXFILE]; + BLI_strncpy(origpath, path, FILE_MAXDIR + FILE_MAXFILE); + + BLI_make_file_string(NULL, path, cwd, origpath); + } + } + + return wasrelative; +} + + +/* copy di to fi, filename only */ +void BLI_splitdirstring(char *di, char *fi) +{ + char *lslash= BLI_last_slash(di); + + if (lslash) { + BLI_strncpy(fi, lslash+1, FILE_MAXFILE); + *(lslash+1)=0; + } else { + BLI_strncpy(fi, di, FILE_MAXFILE); + di[0]= 0; + } +} + +void BLI_getlastdir(const char* dir, char *last, int maxlen) +{ + const char *s = dir; + const char *lslash = NULL; + const char *prevslash = NULL; + while (*s) { + if ((*s == '\\') || (*s == '/')) { + prevslash = lslash; + lslash = s; + } + s++; + } + if (prevslash) { + BLI_strncpy(last, prevslash+1, maxlen); + } else { + BLI_strncpy(last, dir, maxlen); + } +} + +char *BLI_gethome(void) { + #if !defined(WIN32) + return getenv("HOME"); + + #else /* Windows */ + char * ret; + static char dir[512]; + static char appdatapath[MAXPATHLEN]; + HRESULT hResult; + + /* Check for %HOME% env var */ + + ret = getenv("HOME"); + if(ret) { + sprintf(dir, "%s\\.blender", ret); + if (BLI_exists(dir)) return dir; + } + + /* else, check install dir (path containing blender.exe) */ + + BLI_getInstallationDir(dir); + + if (BLI_exists(dir)) + { + strcat(dir,"\\.blender"); + if (BLI_exists(dir)) return(dir); + } + + + /* add user profile support for WIN 2K / NT */ + hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); + + if (hResult == S_OK) + { + if (BLI_exists(appdatapath)) { /* from fop, also below... */ + sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); + BLI_recurdir_fileops(dir); + if (BLI_exists(dir)) { + strcat(dir,"\\.blender"); + if(BLI_exists(dir)) return(dir); + } + } + hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); + if (hResult == S_OK) + { + if (BLI_exists(appdatapath)) + { /* from fop, also below... */ + sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); + BLI_recurdir_fileops(dir); + if (BLI_exists(dir)) { + strcat(dir,"\\.blender"); + if(BLI_exists(dir)) return(dir); + } + } + } + } +#if 0 + ret = getenv("USERPROFILE"); + if (ret) { + if (BLI_exists(ret)) { /* from fop, also below... */ + sprintf(dir, "%s\\Application Data\\Blender Foundation\\Blender", ret); + BLI_recurdir_fileops(dir); + if (BLI_exists(dir)) { + strcat(dir,"\\.blender"); + if(BLI_exists(dir)) return(dir); + } + } + } +#endif + + /* + Saving in the Windows dir is less than desirable. + Use as a last resort ONLY! (aphex) + */ + + ret = getenv("WINDOWS"); + if (ret) { + if(BLI_exists(ret)) return ret; + } + + ret = getenv("WINDIR"); + if (ret) { + if(BLI_exists(ret)) return ret; + } + + return "C:\\Temp"; /* sheesh! bad, bad, bad! (aphex) */ + #endif +} + +/* this function returns the path to a blender folder, if it exists + * utility functions for BLI_gethome_folder */ + +/* #define PATH_DEBUG */ /* for testing paths that are checked */ + +static int test_data_path(char *targetpath, char *path_base, char *path_sep, char *folder_name) +{ + char tmppath[FILE_MAXDIR]; + + if(path_sep) BLI_join_dirfile(tmppath, path_base, path_sep); + else BLI_strncpy(tmppath, path_base, sizeof(tmppath)); + + BLI_make_file_string("/", targetpath, tmppath, folder_name); + + if (BLI_exists(targetpath)) { +#ifdef PATH_DEBUG + printf("\tpath found: %s\n", targetpath); +#endif + return 1; + } + else { +#ifdef PATH_DEBUG + printf("\tpath missing: %s\n", targetpath); +#endif + targetpath[0] = '\0'; + return 0; + } +} + +static int gethome_path_local(char *targetpath, char *folder_name) +{ + extern char bprogname[]; /* argv[0] from creator.c */ + char bprogdir[FILE_MAXDIR]; + char cwd[FILE_MAXDIR]; + char *s; + int i; + +#ifdef PATH_DEBUG + printf("gethome_path_local...\n"); +#endif + + /* try release/folder_name (binary relative) */ + /* use argv[0] (bprogname) to get the path to the executable */ + s = BLI_last_slash(bprogname); + i = s - bprogname + 1; + BLI_strncpy(bprogdir, bprogname, i); + + /* try release/folder_name (CWD relative) */ + if(test_data_path(targetpath, BLI_getwdN(cwd), "release", folder_name)) + return 1; + + if(test_data_path(targetpath, bprogdir, "release", folder_name)) + return 1; + + /* try ./.blender/folder_name */ + if(test_data_path(targetpath, bprogdir, ".blender", folder_name)) + return 1; + + return 0; +} + +static int gethome_path_user(char *targetpath, char *folder_name) +{ + char *home_path= BLI_gethome(); + +#ifdef PATH_DEBUG + printf("gethome_path_user...\n"); +#endif + + /* try $HOME/folder_name */ + return test_data_path(targetpath, home_path, ".blender", folder_name); +} + +static int gethome_path_system(char *targetpath, char *folder_name) +{ + extern char blender_path[]; /* unix prefix eg. /usr/share/blender/2.5 creator.c */ + + if(!blender_path[0]) + return 0; + +#ifdef PATH_DEBUG + printf("gethome_path_system...\n"); +#endif + + /* try $BLENDERPATH/folder_name */ + return test_data_path(targetpath, blender_path, NULL, folder_name); +} + +char *BLI_gethome_folder(char *folder_name, int flag) +{ + static char fulldir[FILE_MAXDIR] = ""; + + /* first check if this is a redistributable bundle */ + if(flag & BLI_GETHOME_LOCAL) { + if (gethome_path_local(fulldir, folder_name)) + return fulldir; + } + + /* then check if the OS has blender data files installed in a global location */ + if(flag & BLI_GETHOME_SYSTEM) { + if (gethome_path_system(fulldir, folder_name)) + return fulldir; + } + + /* now check the users home dir for data files */ + if(flag & BLI_GETHOME_USER) { + if (gethome_path_user(fulldir, folder_name)) + return fulldir; + } + + return NULL; +} + +#ifdef PATH_DEBUG +#undef PATH_DEBUG +#endif + +void BLI_setenv(const char *env, const char*val) +{ + /* SGI or free windows */ +#if (defined(__sgi) || ((defined(WIN32) || defined(WIN64)) && defined(FREE_WINDOWS))) + char *envstr= malloc(sizeof(char) * (strlen(env) + strlen(val) + 2)); /* one for = another for \0 */ + + sprintf(envstr, "%s=%s", env, val); + putenv(envstr); + free(envstr); + + /* non-free windows */ +#elif (defined(WIN32) || defined(WIN64)) /* not free windows */ + _putenv_s(env, val); +#else + /* linux/osx/bsd */ + setenv(env, val, 1); +#endif +} + + +/** + Only set an env var if already not there. + Like Unix setenv(env, val, 0); + */ +void BLI_setenv_if_new(const char *env, const char* val) +{ + if(getenv(env) == NULL) + BLI_setenv(env, val); +} + + +void BLI_clean(char *path) +{ + if(path==0) return; +#ifdef WIN32 + if(path && strlen(path)>2) { + BLI_char_switch(path+2, '/', '\\'); + } +#else + BLI_char_switch(path, '\\', '/'); +#endif +} + +void BLI_char_switch(char *string, char from, char to) +{ + if(string==0) return; + while (*string != 0) { + if (*string == from) *string = to; + string++; + } +} + +void BLI_make_exist(char *dir) { + int a; + + #ifdef WIN32 + BLI_char_switch(dir, '/', '\\'); + #else + BLI_char_switch(dir, '\\', '/'); + #endif + + a = strlen(dir); + +#ifdef WIN32 + while(BLI_exists(dir) == 0){ + a --; + while(dir[a] != '\\'){ + a--; + if (a <= 0) break; + } + if (a >= 0) dir[a+1] = 0; + else { + /* defaulting to drive (usually 'C:') of Windows installation */ + get_default_root(dir); + break; + } + } +#else + while(BLI_exist(dir) == 0){ + a --; + while(dir[a] != '/'){ + a--; + if (a <= 0) break; + } + if (a >= 0) dir[a+1] = 0; + else { + strcpy(dir,"/"); + break; + } + } +#endif +} + +void BLI_make_existing_file(char *name) +{ + char di[FILE_MAXDIR], fi[FILE_MAXFILE]; + + strcpy(di, name); + BLI_splitdirstring(di, fi); + + /* test exist */ + if (BLI_exists(di) == 0) { + BLI_recurdir_fileops(di); + } +} + + +void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file) +{ + int sl; + + if (!string || !dir || !file) return; /* We don't want any NULLs */ + + string[0]= 0; /* ton */ + + /* we first push all slashes into unix mode, just to make sure we don't get + any mess with slashes later on. -jesterKing */ + /* constant strings can be passed for those parameters - don't change them - elubie */ + /* + BLI_char_switch(relabase, '\\', '/'); + BLI_char_switch(dir, '\\', '/'); + BLI_char_switch(file, '\\', '/'); + */ + + /* Resolve relative references */ + if (relabase && dir[0] == '/' && dir[1] == '/') { + char *lslash; + + /* Get the file name, chop everything past the last slash (ie. the filename) */ + strcpy(string, relabase); + + lslash= (strrchr(string, '/')>strrchr(string, '\\'))?strrchr(string, '/'):strrchr(string, '\\'); + + if(lslash) *(lslash+1)= 0; + + dir+=2; /* Skip over the relative reference */ + } +#ifdef WIN32 + else { + if (strlen(dir) >= 2 && dir[1] == ':' ) { + BLI_strncpy(string, dir, 3); + dir += 2; + } + else { /* no drive specified */ + /* first option: get the drive from the relabase if it has one */ + if (relabase && strlen(relabase) >= 2 && relabase[1] == ':' ) { + BLI_strncpy(string, relabase, 3); + string[2] = '\\'; + string[3] = '\0'; + } + else { /* we're out of luck here, guessing the first valid drive, usually c:\ */ + get_default_root(string); + } + + /* ignore leading slashes */ + while (*dir == '/' || *dir == '\\') dir++; + } + } +#endif + + strcat(string, dir); + + /* Make sure string ends in one (and only one) slash */ + /* first trim all slashes from the end of the string */ + sl = strlen(string); + while (sl>0 && ( string[sl-1] == '/' || string[sl-1] == '\\') ) { + string[sl-1] = '\0'; + sl--; + } + /* since we've now removed all slashes, put back one slash at the end. */ + strcat(string, "/"); + + while (*file && (*file == '/' || *file == '\\')) /* Trim slashes from the front of file */ + file++; + + strcat (string, file); + + /* Push all slashes to the system preferred direction */ + BLI_clean(string); +} + +int BLI_testextensie(const char *str, const char *ext) +{ + short a, b; + int retval; + + a= strlen(str); + b= strlen(ext); + + if(a==0 || b==0 || b>=a) { + retval = 0; + } else if (BLI_strcasecmp(ext, str + a - b)) { + retval = 0; + } else { + retval = 1; + } + + return (retval); +} + +/* + * This is a simple version of BLI_split_dirfile that has the following advantages... + * + * Converts "/foo/bar.txt" to "/foo/" and "bar.txt" + * - wont change 'string' + * - wont create any directories + * - dosnt use CWD, or deal with relative paths. + * - Only fill's in *dir and *file when they are non NULL + * */ +void BLI_split_dirfile_basic(const char *string, char *dir, char *file) +{ + int lslash=0, i = 0; + for (i=0; string[i]!='\0'; i++) { + if (string[i]=='\\' || string[i]=='/') + lslash = i+1; + } + if (dir) { + if (lslash) { + BLI_strncpy( dir, string, lslash+1); /* +1 to include the slash and the last char */ + } else { + dir[0] = '\0'; + } + } + + if (file) { + strcpy( file, string+lslash); + } +} + + +/* Warning, + * - May modify 'string' variable + * - May create the directory if it dosnt exist + * if this is not needed use BLI_split_dirfile_basic(...) + */ +void BLI_split_dirfile(char *string, char *dir, char *file) +{ + int a; +#ifdef WIN32 + int sl; + short is_relative = 0; + char path[FILE_MAX]; +#endif + + dir[0]= 0; + file[0]= 0; + +#ifdef WIN32 + BLI_strncpy(path, string, FILE_MAX); + BLI_char_switch(path, '/', '\\'); /* make sure we have a valid path format */ + sl = strlen(path); + if (sl) { + int len; + if (path[0] == '/' || path[0] == '\\') { + BLI_strncpy(dir, path, FILE_MAXDIR); + if (sl > 1 && path[0] == '\\' && path[1] == '\\') is_relative = 1; + } else if (sl > 2 && path[1] == ':' && path[2] == '\\') { + BLI_strncpy(dir, path, FILE_MAXDIR); + } else { + BLI_getwdN(dir); + strcat(dir,"\\"); + strcat(dir,path); + BLI_strncpy(path,dir,FILE_MAXDIR+FILE_MAXFILE); + } + + // BLI_exist doesn't recognize a slashed dirname as a dir + // check if a trailing slash exists, and remove it. Do not do this + // when we are already at root. -jesterKing + a = strlen(dir); + if(a>=4 && dir[a-1]=='\\') dir[a-1] = 0; + + if (is_relative) { + printf("WARNING: BLI_split_dirfile needs absolute dir\n"); + } + else { + BLI_make_exist(dir); + } + + if (S_ISDIR(BLI_exist(dir))) { + + /* copy from end of string into file, to ensure filename itself isn't truncated + if string is too long. (aphex) */ + + len = FILE_MAXFILE - strlen(path); + + if (len < 0) + BLI_strncpy(file,path + abs(len),FILE_MAXFILE); + else + BLI_strncpy(file,path,FILE_MAXFILE); + + if (strrchr(path,'\\')) { + BLI_strncpy(file,strrchr(path,'\\')+1,FILE_MAXFILE); + } + + if ( (a = strlen(dir)) ) { + if (dir[a-1] != '\\') strcat(dir,"\\"); + } + } + else { + a = strlen(dir) - 1; + while(a>0 && dir[a] != '\\') a--; + dir[a + 1] = 0; + BLI_strncpy(file, path + strlen(dir),FILE_MAXFILE); + } + + } + else { + /* defaulting to first valid drive hoping it's not empty CD and DVD drives */ + get_default_root(dir); + file[0]=0; + } +#else + if (strlen(string)) { + if (string[0] == '/') { + strcpy(dir, string); + } else if (string[1] == ':' && string[2] == '\\') { + string+=2; + strcpy(dir, string); + } else { + BLI_getwdN(dir); + strcat(dir,"/"); + strcat(dir,string); + strcpy((char *)string,dir); + } + + BLI_make_exist(dir); + + if (S_ISDIR(BLI_exist(dir))) { + strcpy(file,string + strlen(dir)); + + if (strrchr(file,'/')) strcpy(file,strrchr(file,'/')+1); + + if ( (a = strlen(dir)) ) { + if (dir[a-1] != '/') strcat(dir,"/"); + } + } + else { + a = strlen(dir) - 1; + while(dir[a] != '/') a--; + dir[a + 1] = 0; + strcpy(file, string + strlen(dir)); + } + } + else { + BLI_getwdN(dir); + strcat(dir, "/"); + file[0] = 0; + } +#endif +} + +/* simple appending of filename to dir, does not check for valid path! */ +void BLI_join_dirfile(char *string, const char *dir, const char *file) +{ + int sl_dir; + + if(string != dir) /* compare pointers */ + BLI_strncpy(string, dir, FILE_MAX); + + sl_dir= BLI_add_slash(string); + + if (sl_dir -#include -#include -#include -#include -#include -#include /* for log10 */ - -#include "MEM_guardedalloc.h" - -#include "DNA_listBase.h" -#include "DNA_userdef_types.h" - -#include "BLI_blenlib.h" -#include "BLI_storage.h" -#include "BLI_storage_types.h" -#include "BLI_dynamiclist.h" - -#include "BLI_util.h" -#include "BKE_utildefines.h" - - - - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifndef WIN32 -#include -#else -#include -#endif - -#ifdef WIN32 - -#ifdef _WIN32_IE -#undef _WIN32_IE -#endif -#define _WIN32_IE 0x0501 -#include -#include - -#include "BLI_winstuff.h" - -#endif - - -#ifndef WIN32 -#include -#endif - -#ifdef __APPLE__ -#include -#include -#endif - -#ifdef __linux__ -#include "binreloc.h" -#endif - -/* local */ - -static int add_win32_extension(char *name); - -/* implementation */ - -int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen) -{ - unsigned short len, len2, nums = 0, nume = 0; - short i, found = 0; - - len2 = len = strlen(string); - - if (len > 6) { - if (BLI_strncasecmp(string + len - 6, ".blend", 6) == 0) len -= 6; - else if (BLI_strncasecmp(string + len - 6, ".trace", 6) == 0) len -= 6; - } - - if (len > 9) { - if (BLI_strncasecmp(string + len - 9, ".blend.gz", 9) == 0) len -= 9; - } - - if (len == len2) { - if (len > 4) { - /* handle .jf0 en .jf1 for jstreams */ - if (BLI_strncasecmp(string + len - 4, ".jf", 3) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".tga", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".jpg", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".png", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".txt", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".cyc", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".enh", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".rgb", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".psx", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".ble", 4) == 0) len -= 4; - else if (BLI_strncasecmp(string + len - 4, ".exr", 4) == 0) len -= 4; - } - } - - for (i = len - 1; i >= 0; i--) { - if (string[i] == '/') break; - if (isdigit(string[i])) { - if (found){ - nums = i; - } - else{ - nume = i; - nums = i; - found = 1; - } - } - else { - if (found) break; - } - } - if (found){ - if (start) strcpy(start,&string[nume+1]); - if (kop) { - strcpy(kop,string); - kop[nums]=0; - } - if (numlen) *numlen = nume-nums+1; - return ((int)atoi(&(string[nums]))); - } - if (start) strcpy(start, string + len); - if (kop) { - strncpy(kop, string, len); - kop[len] = 0; - } - if (numlen) *numlen=0; - return 0; -} - - -void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic) -{ - char numstr[10]=""; - unsigned short len,i; - - strcpy(string,kop); - - if (pic>0 || numlen==4) { - len= sprintf(numstr,"%d",pic); - - for(i=len;i 99 or from 10 -> 9 */ - if (add < 0 && digits < 4 && digits > 0) { - int i, exp; - exp = 1; - for (i = digits; i > 1; i--) exp *= 10; - if (pic >= exp && (pic + add) < exp) digits--; - } - - pic += add; - - if (digits==4 && pic<0) pic= 0; - BLI_stringenc(name, head, tail, digits, pic); -} - -/* little helper macro for BLI_uniquename */ -#ifndef GIVE_STRADDR - #define GIVE_STRADDR(data, offset) ( ((char *)data) + offset ) -#endif - -/* Generic function to set a unique name. It is only designed to be used in situations - * where the name is part of the struct, and also that the name is at most 128 chars long. - * - * For places where this is used, see constraint.c for example... - * - * name_offs: should be calculated using offsetof(structname, membername) macro from stddef.h - * len: maximum length of string (to prevent overflows, etc.) - * defname: the name that should be used by default if none is specified already - * delim: the character which acts as a delimeter between parts of the name - */ -void BLI_uniquename(ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len) -{ - Link *link; - char tempname[128]; - int number = 1, exists = 0; - char *dot; - - /* Make sure length can be handled */ - if ((len < 0) || (len > 128)) - return; - - /* See if we are given an empty string */ - if (ELEM(NULL, vlink, defname)) - return; - - if (GIVE_STRADDR(vlink, name_offs) == '\0') { - /* give it default name first */ - BLI_strncpy(GIVE_STRADDR(vlink, name_offs), defname, len); - } - - /* See if we even need to do this */ - if (list == NULL) - return; - - for (link = list->first; link; link= link->next) { - if (link != vlink) { - if (!strcmp(GIVE_STRADDR(link, name_offs), GIVE_STRADDR(vlink, name_offs))) { - exists = 1; - break; - } - } - } - if (exists == 0) - return; - - /* Strip off the suffix */ - dot = strchr(GIVE_STRADDR(vlink, name_offs), delim); - if (dot) - *dot=0; - - for (number = 1; number <= 999; number++) { - BLI_snprintf(tempname, 128, "%s%c%03d", GIVE_STRADDR(vlink, name_offs), delim, number); - - exists = 0; - for (link= list->first; link; link= link->next) { - if (vlink != link) { - if (!strcmp(GIVE_STRADDR(link, name_offs), tempname)) { - exists = 1; - break; - } - } - } - if (exists == 0) { - BLI_strncpy(GIVE_STRADDR(vlink, name_offs), tempname, len); - return; - } - } -} - -/* ******************** string encoding ***************** */ - -/* This is quite an ugly function... its purpose is to - * take the dir name, make it absolute, and clean it up, replacing - * excess file entry stuff (like /tmp/../tmp/../) - * note that dir isn't protected for max string names... - * - * If relbase is NULL then its ignored - */ - -void BLI_cleanup_dir(const char *relabase, char *dir) -{ - BLI_cleanup_file(relabase, dir); - BLI_add_slash(dir); - -} - -void BLI_cleanup_file(const char *relabase, char *dir) -{ - short a; - char *start, *eind; - if (relabase) { - BLI_convertstringcode(dir, relabase); - } else { - if (dir[0]=='/' && dir[1]=='/') { - if (dir[2]== '\0') { - return; /* path is "//" - cant clean it */ - } - dir = dir+2; /* skip the first // */ - } - } - - /* Note - * memmove( start, eind, strlen(eind)+1 ); - * is the same as - * strcpy( start, eind ); - * except strcpy should not be used because there is overlap, - * so use memmove's slightly more obscure syntax - Campbell - */ - -#ifdef WIN32 - - /* Note, this should really be moved to the file selector, - * since this function is used in many areas */ - if(strcmp(dir, ".")==0) { /* happens for example in FILE_MAIN */ - get_default_root(dir); - return; - } - - while ( (start = strstr(dir, "\\..\\")) ) { - eind = start + strlen("\\..\\") - 1; - a = start-dir-1; - while (a>0) { - if (dir[a] == '\\') break; - a--; - } - if (a<0) { - break; - } else { - memmove( dir+a, eind, strlen(eind)+1 ); - } - } - - while ( (start = strstr(dir,"\\.\\")) ){ - eind = start + strlen("\\.\\") - 1; - memmove( start, eind, strlen(eind)+1 ); - } - - while ( (start = strstr(dir,"\\\\" )) ){ - eind = start + strlen("\\\\") - 1; - memmove( start, eind, strlen(eind)+1 ); - } - - if((a = strlen(dir))){ /* remove the '\\' at the end */ - while(a>0 && dir[a-1] == '\\'){ - a--; - dir[a] = 0; - } - } -#else - if(dir[0]=='.') { /* happens, for example in FILE_MAIN */ - dir[0]= '/'; - dir[1]= 0; - return; - } - - while ( (start = strstr(dir, "/../")) ) { - eind = start + strlen("/../") - 1; - a = start-dir-1; - while (a>0) { - if (dir[a] == '/') break; - a--; - } - if (a<0) { - break; - } else { - memmove( dir+a, eind, strlen(eind)+1 ); - } - } - - while ( (start = strstr(dir,"/./")) ){ - eind = start + strlen("/./") - 1; - memmove( start, eind, strlen(eind)+1 ); - } - - while ( (start = strstr(dir,"//" )) ){ - eind = start + strlen("//") - 1; - memmove( start, eind, strlen(eind)+1 ); - } - - if( (a = strlen(dir)) ){ /* remove all '/' at the end */ - while(dir[a-1] == '/'){ - a--; - dir[a] = 0; - if (a<=0) break; - } - } -#endif -} - - -void BLI_makestringcode(const char *relfile, char *file) -{ - char * p; - char * q; - char * lslash; - char temp[FILE_MAXDIR+FILE_MAXFILE]; - char res[FILE_MAXDIR+FILE_MAXFILE]; - - /* if file is already relative, bail out */ - if(file[0]=='/' && file[1]=='/') return; - - /* also bail out if relative path is not set */ - if (relfile[0] == 0) return; - -#ifdef WIN32 - if (strlen(relfile) > 2 && relfile[1] != ':') { - char* ptemp; - /* fix missing volume name in relative base, - can happen with old .Blog files */ - get_default_root(temp); - ptemp = &temp[2]; - if (relfile[0] != '\\' && relfile[0] != '/') { - ptemp++; - } - BLI_strncpy(ptemp, relfile, FILE_MAXDIR + FILE_MAXFILE-3); - } else { - BLI_strncpy(temp, relfile, FILE_MAXDIR + FILE_MAXFILE); - } - - if (strlen(file) > 2) { - if ( temp[1] == ':' && file[1] == ':' && temp[0] != file[0] ) - return; - } -#else - BLI_strncpy(temp, relfile, FILE_MAX); -#endif - - BLI_char_switch(temp, '\\', '/'); - BLI_char_switch(file, '\\', '/'); - - /* remove /./ which confuse the following slash counting... */ - BLI_cleanup_file(NULL, file); - BLI_cleanup_file(NULL, temp); - - /* the last slash in the file indicates where the path part ends */ - lslash = BLI_last_slash(temp); - - if (lslash) - { - /* find the prefix of the filename that is equal for both filenames. - This is replaced by the two slashes at the beginning */ - p = temp; - q = file; - while (*p == *q) { - ++p; ++q; - } - /* we might have passed the slash when the beginning of a dir matches - so we rewind. Only check on the actual filename - */ - if (*q != '/') { - while ( (q >= file) && (*q != '/') ) { --q; --p; } - } - else if (*p != '/') { - while ( (p >= temp) && (*p != '/') ) { --p; --q; } - } - - strcpy(res, "//"); - - /* p now points to the slash that is at the beginning of the part - where the path is different from the relative path. - We count the number of directories we need to go up in the - hierarchy to arrive at the common 'prefix' of the path - */ - while (p && p < lslash) { - if (*p == '/') - strcat(res, "../"); - ++p; - } - - strcat(res, q+1); /* don't copy the slash at the beginning */ - -#ifdef WIN32 - BLI_char_switch(res+2, '/', '\\'); -#endif - strcpy(file, res); - } -} - -int BLI_has_parent(char *path) -{ - int len; - int slashes = 0; - BLI_clean(path); - len = BLI_add_slash(path) - 1; - - while (len>=0) { - if ((path[len] == '\\') || (path[len] == '/')) - slashes++; - len--; - } - return slashes > 1; -} - -int BLI_parent_dir(char *path) -{ -#ifdef WIN32 - static char *parent_dir="..\\"; -#else - static char *parent_dir="../"; -#endif - char tmp[FILE_MAXDIR+FILE_MAXFILE+4]; - BLI_strncpy(tmp, path, sizeof(tmp)); - BLI_add_slash(tmp); - strcat(tmp, parent_dir); - BLI_cleanup_dir(NULL, tmp); - - if (!BLI_testextensie(tmp, parent_dir)) { - BLI_strncpy(path, tmp, sizeof(tmp)); - return 1; - } else { - return 0; - } -} - -int BLI_convertstringframe(char *path, int frame) -{ - int ch_sta, ch_end, i; - /* Insert current frame: file### -> file001 */ - ch_sta = ch_end = 0; - for (i = 0; path[i] != '\0'; i++) { - if (path[i] == '\\' || path[i] == '/') { - ch_end = 0; /* this is a directory name, dont use any hashes we found */ - } else if (path[i] == '#') { - ch_sta = i; - ch_end = ch_sta+1; - while (path[ch_end] == '#') { - ch_end++; - } - i = ch_end-1; /* keep searching */ - - /* dont break, there may be a slash after this that invalidates the previous #'s */ - } - } - if (ch_end) { /* warning, ch_end is the last # +1 */ - /* Add the frame number? */ - short numlen, hashlen; - char tmp[FILE_MAX]; - - char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */ - if (((ch_end-1)-ch_sta) >= 16) { - ch_end = ch_sta+15; /* disallow values longer then 'format' can hold */ - } - - strcpy(tmp, path); - - numlen = 1 + (int)log10((double)frame); /* this is the number of chars in the number */ - hashlen = ch_end - ch_sta; - - sprintf(format, "%d", frame); - - if (numlen==hashlen) { /* simple case */ - memcpy(tmp+ch_sta, format, numlen); - } else if (numlen < hashlen) { - memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */ - memset(tmp+ch_sta, '0', hashlen-numlen); - } else { - /* number is longer then number of #'s */ - if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/ - /* bad juju - not testing string length here :/ */ - memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */ - } else { - /* we need to move the end characters, reuse i */ - int j; - - i = strlen(tmp); /* +1 to copy the string terminator */ - j = i + (numlen-hashlen); /* from/to */ - - while (i >= ch_end) { - tmp[j] = tmp[i]; - i--; - j--; - } - memcpy(tmp + ch_sta, format, numlen); - } - } - strcpy(path, tmp); - return 1; - } - return 0; -} - - -int BLI_convertstringcode(char *path, const char *basepath) -{ - int wasrelative = (strncmp(path, "//", 2)==0); - char tmp[FILE_MAX]; - char base[FILE_MAX]; -#ifdef WIN32 - char vol[3] = {'\0', '\0', '\0'}; - - BLI_strncpy(vol, path, 3); - /* we are checking here if we have an absolute path that is not in the current - blend file as a lib main - we are basically checking for the case that a - UNIX root '/' is passed. - */ - if (!wasrelative && (vol[1] != ':' && (vol[0] == '\0' || vol[0] == '/' || vol[0] == '\\'))) { - char *p = path; - get_default_root(tmp); - // get rid of the slashes at the beginning of the path - while (*p == '\\' || *p == '/') { - p++; - } - strcat(tmp, p); - } - else { - BLI_strncpy(tmp, path, FILE_MAX); - } -#else - BLI_strncpy(tmp, path, FILE_MAX); - - /* Check for loading a windows path on a posix system - * in this case, there is no use in trying C:/ since it - * will never exist on a unix os. - * - * Add a / prefix and lowercase the driveletter, remove the : - * C:\foo.JPG -> /c/foo.JPG */ - - if (isalpha(tmp[0]) && tmp[1] == ':' && (tmp[2]=='\\' || tmp[2]=='/') ) { - tmp[1] = tolower(tmp[0]); /* replace ':' with driveletter */ - tmp[0] = '/'; - /* '\' the slash will be converted later */ - } - -#endif - - BLI_strncpy(base, basepath, FILE_MAX); - - BLI_cleanup_file(NULL, base); - - /* push slashes into unix mode - strings entering this part are - potentially messed up: having both back- and forward slashes. - Here we push into one conform direction, and at the end we - push them into the system specific dir. This ensures uniformity - of paths and solving some problems (and prevent potential future - ones) -jesterKing. */ - BLI_char_switch(tmp, '\\', '/'); - BLI_char_switch(base, '\\', '/'); - - /* Paths starting with // will get the blend file as their base, - * this isnt standard in any os but is uesed in blender all over the place */ - if (wasrelative) { - char *lslash= BLI_last_slash(base); - if (lslash) { - int baselen= (int) (lslash-base) + 1; - /* use path for for temp storage here, we copy back over it right away */ - BLI_strncpy(path, tmp+2, FILE_MAX); - - memcpy(tmp, base, baselen); - strcpy(tmp+baselen, path); - strcpy(path, tmp); - } else { - strcpy(path, tmp+2); - } - } else { - strcpy(path, tmp); - } - - if (path[0]!='\0') { - if ( path[strlen(path)-1]=='/') { - BLI_cleanup_dir(NULL, path); - } else { - BLI_cleanup_file(NULL, path); - } - } - -#ifdef WIN32 - /* skip first two chars, which in case of - absolute path will be drive:/blabla and - in case of relpath //blabla/. So relpath - // will be retained, rest will be nice and - shiny win32 backward slashes :) -jesterKing - */ - BLI_char_switch(path+2, '/', '\\'); -#endif - - return wasrelative; -} - - -/* - * Should only be done with command line paths. - * this is NOT somthing blenders internal paths support like the // prefix - */ -int BLI_convertstringcwd(char *path) -{ - int wasrelative = 1; - int filelen = strlen(path); - -#ifdef WIN32 - if (filelen >= 3 && path[1] == ':' && (path[2] == '\\' || path[2] == '/')) - wasrelative = 0; -#else - if (filelen >= 2 && path[0] == '/') - wasrelative = 0; -#endif - - if (wasrelative==1) { - char cwd[FILE_MAXDIR + FILE_MAXFILE]; - BLI_getwdN(cwd); /* incase the full path to the blend isnt used */ - - if (cwd[0] == '\0') { - printf( "Could not get the current working directory - $PWD for an unknown reason."); - } else { - /* uses the blend path relative to cwd important for loading relative linked files. - * - * cwd should contain c:\ etc on win32 so the relbase can be NULL - * relbase being NULL also prevents // being misunderstood as relative to the current - * blend file which isnt a feature we want to use in this case since were dealing - * with a path from the command line, rather then from inside Blender */ - - char origpath[FILE_MAXDIR + FILE_MAXFILE]; - BLI_strncpy(origpath, path, FILE_MAXDIR + FILE_MAXFILE); - - BLI_make_file_string(NULL, path, cwd, origpath); - } - } - - return wasrelative; -} - - -/* copy di to fi, filename only */ -void BLI_splitdirstring(char *di, char *fi) -{ - char *lslash= BLI_last_slash(di); - - if (lslash) { - BLI_strncpy(fi, lslash+1, FILE_MAXFILE); - *(lslash+1)=0; - } else { - BLI_strncpy(fi, di, FILE_MAXFILE); - di[0]= 0; - } -} - -void BLI_getlastdir(const char* dir, char *last, int maxlen) -{ - const char *s = dir; - const char *lslash = NULL; - const char *prevslash = NULL; - while (*s) { - if ((*s == '\\') || (*s == '/')) { - prevslash = lslash; - lslash = s; - } - s++; - } - if (prevslash) { - BLI_strncpy(last, prevslash+1, maxlen); - } else { - BLI_strncpy(last, dir, maxlen); - } -} - -char *BLI_gethome(void) { - #if !defined(WIN32) - return getenv("HOME"); - - #else /* Windows */ - char * ret; - static char dir[512]; - static char appdatapath[MAXPATHLEN]; - HRESULT hResult; - - /* Check for %HOME% env var */ - - ret = getenv("HOME"); - if(ret) { - sprintf(dir, "%s\\.blender", ret); - if (BLI_exists(dir)) return dir; - } - - /* else, check install dir (path containing blender.exe) */ - - BLI_getInstallationDir(dir); - - if (BLI_exists(dir)) - { - strcat(dir,"\\.blender"); - if (BLI_exists(dir)) return(dir); - } - - - /* add user profile support for WIN 2K / NT */ - hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); - - if (hResult == S_OK) - { - if (BLI_exists(appdatapath)) { /* from fop, also below... */ - sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); - BLI_recurdir_fileops(dir); - if (BLI_exists(dir)) { - strcat(dir,"\\.blender"); - if(BLI_exists(dir)) return(dir); - } - } - hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); - if (hResult == S_OK) - { - if (BLI_exists(appdatapath)) - { /* from fop, also below... */ - sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); - BLI_recurdir_fileops(dir); - if (BLI_exists(dir)) { - strcat(dir,"\\.blender"); - if(BLI_exists(dir)) return(dir); - } - } - } - } -#if 0 - ret = getenv("USERPROFILE"); - if (ret) { - if (BLI_exists(ret)) { /* from fop, also below... */ - sprintf(dir, "%s\\Application Data\\Blender Foundation\\Blender", ret); - BLI_recurdir_fileops(dir); - if (BLI_exists(dir)) { - strcat(dir,"\\.blender"); - if(BLI_exists(dir)) return(dir); - } - } - } -#endif - - /* - Saving in the Windows dir is less than desirable. - Use as a last resort ONLY! (aphex) - */ - - ret = getenv("WINDOWS"); - if (ret) { - if(BLI_exists(ret)) return ret; - } - - ret = getenv("WINDIR"); - if (ret) { - if(BLI_exists(ret)) return ret; - } - - return "C:\\Temp"; /* sheesh! bad, bad, bad! (aphex) */ - #endif -} - -/* this function returns the path to a blender folder, if it exists - * utility functions for BLI_gethome_folder */ - -/* #define PATH_DEBUG */ /* for testing paths that are checked */ - -static int test_data_path(char *targetpath, char *path_base, char *path_sep, char *folder_name) -{ - char tmppath[FILE_MAXDIR]; - - if(path_sep) BLI_join_dirfile(tmppath, path_base, path_sep); - else BLI_strncpy(tmppath, path_base, sizeof(tmppath)); - - BLI_make_file_string("/", targetpath, tmppath, folder_name); - - if (BLI_exists(targetpath)) { -#ifdef PATH_DEBUG - printf("\tpath found: %s\n", targetpath); -#endif - return 1; - } - else { -#ifdef PATH_DEBUG - printf("\tpath missing: %s\n", targetpath); -#endif - targetpath[0] = '\0'; - return 0; - } -} - -static int gethome_path_local(char *targetpath, char *folder_name) -{ - extern char bprogname[]; /* argv[0] from creator.c */ - char bprogdir[FILE_MAXDIR]; - char cwd[FILE_MAXDIR]; - char *s; - int i; - -#ifdef PATH_DEBUG - printf("gethome_path_local...\n"); -#endif - - /* try release/folder_name (binary relative) */ - /* use argv[0] (bprogname) to get the path to the executable */ - s = BLI_last_slash(bprogname); - i = s - bprogname + 1; - BLI_strncpy(bprogdir, bprogname, i); - - /* try release/folder_name (CWD relative) */ - if(test_data_path(targetpath, BLI_getwdN(cwd), "release", folder_name)) - return 1; - - if(test_data_path(targetpath, bprogdir, "release", folder_name)) - return 1; - - /* try ./.blender/folder_name */ - if(test_data_path(targetpath, bprogdir, ".blender", folder_name)) - return 1; - - return 0; -} - -static int gethome_path_user(char *targetpath, char *folder_name) -{ - char *home_path= BLI_gethome(); - -#ifdef PATH_DEBUG - printf("gethome_path_user...\n"); -#endif - - /* try $HOME/folder_name */ - return test_data_path(targetpath, home_path, ".blender", folder_name); -} - -static int gethome_path_system(char *targetpath, char *folder_name) -{ - extern char blender_path[]; /* unix prefix eg. /usr/share/blender/2.5 creator.c */ - - if(!blender_path[0]) - return 0; - -#ifdef PATH_DEBUG - printf("gethome_path_system...\n"); -#endif - - /* try $BLENDERPATH/folder_name */ - return test_data_path(targetpath, blender_path, NULL, folder_name); -} - -char *BLI_gethome_folder(char *folder_name, int flag) -{ - static char fulldir[FILE_MAXDIR] = ""; - - /* first check if this is a redistributable bundle */ - if(flag & BLI_GETHOME_LOCAL) { - if (gethome_path_local(fulldir, folder_name)) - return fulldir; - } - - /* then check if the OS has blender data files installed in a global location */ - if(flag & BLI_GETHOME_SYSTEM) { - if (gethome_path_system(fulldir, folder_name)) - return fulldir; - } - - /* now check the users home dir for data files */ - if(flag & BLI_GETHOME_USER) { - if (gethome_path_user(fulldir, folder_name)) - return fulldir; - } - - return NULL; -} - -#ifdef PATH_DEBUG -#undef PATH_DEBUG -#endif - -void BLI_setenv(const char *env, const char*val) -{ - /* SGI or free windows */ -#if (defined(__sgi) || ((defined(WIN32) || defined(WIN64)) && defined(FREE_WINDOWS))) - char *envstr= malloc(sizeof(char) * (strlen(env) + strlen(val) + 2)); /* one for = another for \0 */ - - sprintf(envstr, "%s=%s", env, val); - putenv(envstr); - free(envstr); - - /* non-free windows */ -#elif (defined(WIN32) || defined(WIN64)) /* not free windows */ - _putenv_s(env, val); -#else - /* linux/osx/bsd */ - setenv(env, val, 1); -#endif -} - - -/** - Only set an env var if already not there. - Like Unix setenv(env, val, 0); - */ -void BLI_setenv_if_new(const char *env, const char* val) -{ - if(getenv(env) == NULL) - BLI_setenv(env, val); -} - - -void BLI_clean(char *path) -{ - if(path==0) return; -#ifdef WIN32 - if(path && strlen(path)>2) { - BLI_char_switch(path+2, '/', '\\'); - } -#else - BLI_char_switch(path, '\\', '/'); -#endif -} - -void BLI_char_switch(char *string, char from, char to) -{ - if(string==0) return; - while (*string != 0) { - if (*string == from) *string = to; - string++; - } -} - -void BLI_make_exist(char *dir) { - int a; - - #ifdef WIN32 - BLI_char_switch(dir, '/', '\\'); - #else - BLI_char_switch(dir, '\\', '/'); - #endif - - a = strlen(dir); - -#ifdef WIN32 - while(BLI_exists(dir) == 0){ - a --; - while(dir[a] != '\\'){ - a--; - if (a <= 0) break; - } - if (a >= 0) dir[a+1] = 0; - else { - /* defaulting to drive (usually 'C:') of Windows installation */ - get_default_root(dir); - break; - } - } -#else - while(BLI_exist(dir) == 0){ - a --; - while(dir[a] != '/'){ - a--; - if (a <= 0) break; - } - if (a >= 0) dir[a+1] = 0; - else { - strcpy(dir,"/"); - break; - } - } -#endif -} - -void BLI_make_existing_file(char *name) -{ - char di[FILE_MAXDIR], fi[FILE_MAXFILE]; - - strcpy(di, name); - BLI_splitdirstring(di, fi); - - /* test exist */ - if (BLI_exists(di) == 0) { - BLI_recurdir_fileops(di); - } -} - - -void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file) -{ - int sl; - - if (!string || !dir || !file) return; /* We don't want any NULLs */ - - string[0]= 0; /* ton */ - - /* we first push all slashes into unix mode, just to make sure we don't get - any mess with slashes later on. -jesterKing */ - /* constant strings can be passed for those parameters - don't change them - elubie */ - /* - BLI_char_switch(relabase, '\\', '/'); - BLI_char_switch(dir, '\\', '/'); - BLI_char_switch(file, '\\', '/'); - */ - - /* Resolve relative references */ - if (relabase && dir[0] == '/' && dir[1] == '/') { - char *lslash; - - /* Get the file name, chop everything past the last slash (ie. the filename) */ - strcpy(string, relabase); - - lslash= (strrchr(string, '/')>strrchr(string, '\\'))?strrchr(string, '/'):strrchr(string, '\\'); - - if(lslash) *(lslash+1)= 0; - - dir+=2; /* Skip over the relative reference */ - } -#ifdef WIN32 - else { - if (strlen(dir) >= 2 && dir[1] == ':' ) { - BLI_strncpy(string, dir, 3); - dir += 2; - } - else { /* no drive specified */ - /* first option: get the drive from the relabase if it has one */ - if (relabase && strlen(relabase) >= 2 && relabase[1] == ':' ) { - BLI_strncpy(string, relabase, 3); - string[2] = '\\'; - string[3] = '\0'; - } - else { /* we're out of luck here, guessing the first valid drive, usually c:\ */ - get_default_root(string); - } - - /* ignore leading slashes */ - while (*dir == '/' || *dir == '\\') dir++; - } - } -#endif - - strcat(string, dir); - - /* Make sure string ends in one (and only one) slash */ - /* first trim all slashes from the end of the string */ - sl = strlen(string); - while (sl>0 && ( string[sl-1] == '/' || string[sl-1] == '\\') ) { - string[sl-1] = '\0'; - sl--; - } - /* since we've now removed all slashes, put back one slash at the end. */ - strcat(string, "/"); - - while (*file && (*file == '/' || *file == '\\')) /* Trim slashes from the front of file */ - file++; - - strcat (string, file); - - /* Push all slashes to the system preferred direction */ - BLI_clean(string); -} - -int BLI_testextensie(const char *str, const char *ext) -{ - short a, b; - int retval; - - a= strlen(str); - b= strlen(ext); - - if(a==0 || b==0 || b>=a) { - retval = 0; - } else if (BLI_strcasecmp(ext, str + a - b)) { - retval = 0; - } else { - retval = 1; - } - - return (retval); -} - -/* - * This is a simple version of BLI_split_dirfile that has the following advantages... - * - * Converts "/foo/bar.txt" to "/foo/" and "bar.txt" - * - wont change 'string' - * - wont create any directories - * - dosnt use CWD, or deal with relative paths. - * - Only fill's in *dir and *file when they are non NULL - * */ -void BLI_split_dirfile_basic(const char *string, char *dir, char *file) -{ - int lslash=0, i = 0; - for (i=0; string[i]!='\0'; i++) { - if (string[i]=='\\' || string[i]=='/') - lslash = i+1; - } - if (dir) { - if (lslash) { - BLI_strncpy( dir, string, lslash+1); /* +1 to include the slash and the last char */ - } else { - dir[0] = '\0'; - } - } - - if (file) { - strcpy( file, string+lslash); - } -} - - -/* Warning, - * - May modify 'string' variable - * - May create the directory if it dosnt exist - * if this is not needed use BLI_split_dirfile_basic(...) - */ -void BLI_split_dirfile(char *string, char *dir, char *file) -{ - int a; -#ifdef WIN32 - int sl; - short is_relative = 0; - char path[FILE_MAX]; -#endif - - dir[0]= 0; - file[0]= 0; - -#ifdef WIN32 - BLI_strncpy(path, string, FILE_MAX); - BLI_char_switch(path, '/', '\\'); /* make sure we have a valid path format */ - sl = strlen(path); - if (sl) { - int len; - if (path[0] == '/' || path[0] == '\\') { - BLI_strncpy(dir, path, FILE_MAXDIR); - if (sl > 1 && path[0] == '\\' && path[1] == '\\') is_relative = 1; - } else if (sl > 2 && path[1] == ':' && path[2] == '\\') { - BLI_strncpy(dir, path, FILE_MAXDIR); - } else { - BLI_getwdN(dir); - strcat(dir,"\\"); - strcat(dir,path); - BLI_strncpy(path,dir,FILE_MAXDIR+FILE_MAXFILE); - } - - // BLI_exist doesn't recognize a slashed dirname as a dir - // check if a trailing slash exists, and remove it. Do not do this - // when we are already at root. -jesterKing - a = strlen(dir); - if(a>=4 && dir[a-1]=='\\') dir[a-1] = 0; - - if (is_relative) { - printf("WARNING: BLI_split_dirfile needs absolute dir\n"); - } - else { - BLI_make_exist(dir); - } - - if (S_ISDIR(BLI_exist(dir))) { - - /* copy from end of string into file, to ensure filename itself isn't truncated - if string is too long. (aphex) */ - - len = FILE_MAXFILE - strlen(path); - - if (len < 0) - BLI_strncpy(file,path + abs(len),FILE_MAXFILE); - else - BLI_strncpy(file,path,FILE_MAXFILE); - - if (strrchr(path,'\\')) { - BLI_strncpy(file,strrchr(path,'\\')+1,FILE_MAXFILE); - } - - if ( (a = strlen(dir)) ) { - if (dir[a-1] != '\\') strcat(dir,"\\"); - } - } - else { - a = strlen(dir) - 1; - while(a>0 && dir[a] != '\\') a--; - dir[a + 1] = 0; - BLI_strncpy(file, path + strlen(dir),FILE_MAXFILE); - } - - } - else { - /* defaulting to first valid drive hoping it's not empty CD and DVD drives */ - get_default_root(dir); - file[0]=0; - } -#else - if (strlen(string)) { - if (string[0] == '/') { - strcpy(dir, string); - } else if (string[1] == ':' && string[2] == '\\') { - string+=2; - strcpy(dir, string); - } else { - BLI_getwdN(dir); - strcat(dir,"/"); - strcat(dir,string); - strcpy((char *)string,dir); - } - - BLI_make_exist(dir); - - if (S_ISDIR(BLI_exist(dir))) { - strcpy(file,string + strlen(dir)); - - if (strrchr(file,'/')) strcpy(file,strrchr(file,'/')+1); - - if ( (a = strlen(dir)) ) { - if (dir[a-1] != '/') strcat(dir,"/"); - } - } - else { - a = strlen(dir) - 1; - while(dir[a] != '/') a--; - dir[a + 1] = 0; - strcpy(file, string + strlen(dir)); - } - } - else { - BLI_getwdN(dir); - strcat(dir, "/"); - file[0] = 0; - } -#endif -} - -/* simple appending of filename to dir, does not check for valid path! */ -void BLI_join_dirfile(char *string, const char *dir, const char *file) -{ - int sl_dir; - - if(string != dir) /* compare pointers */ - BLI_strncpy(string, dir, FILE_MAX); - - sl_dir= BLI_add_slash(string); - - if (sl_dir Date: Sun, 13 Dec 2009 15:48:57 +0000 Subject: more sequence -> sequencer rename, also made sequencer swap strip update effects strips --- release/scripts/ui/properties_render.py | 2 +- source/blender/blenkernel/intern/scene.c | 2 +- source/blender/blenkernel/intern/sequencer.c | 2 + source/blender/blenlib/intern/path_util.c | 11 +- .../editors/space_sequencer/sequencer_edit.c | 9 +- source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_internal.h | 2 +- source/blender/makesrna/intern/rna_scene.c | 2 +- source/blender/makesrna/intern/rna_sequence.c | 1186 -------------------- source/blender/makesrna/intern/rna_sequencer.c | 1186 ++++++++++++++++++++ 10 files changed, 1205 insertions(+), 1199 deletions(-) delete mode 100644 source/blender/makesrna/intern/rna_sequence.c create mode 100644 source/blender/makesrna/intern/rna_sequencer.c diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 7f5ce213aed..fbb402efaaa 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -530,7 +530,7 @@ class RENDER_PT_stamp(RenderButtonsPanel): col.prop(rd, "stamp_camera", text="Camera") col.prop(rd, "stamp_filename", text="Filename") col.prop(rd, "stamp_marker", text="Marker") - col.prop(rd, "stamp_sequence_strip", text="Seq. Strip") + col.prop(rd, "stamp_sequencer_strip", text="Seq. Strip") if wide_ui: col = split.column() diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 43017a75835..4312f23bd9b 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -860,7 +860,7 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay) void scene_add_render_layer(Scene *sce) { SceneRenderLayer *srl; - int tot= 1 + BLI_countlist(&sce->r.layers); +// int tot= 1 + BLI_countlist(&sce->r.layers); srl= MEM_callocN(sizeof(SceneRenderLayer), "new render layer"); sprintf(srl->name, "RenderLayer"); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index c5ca24bec45..7450e810b89 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -472,6 +472,8 @@ void calc_sequence_disp(Sequence *seq) void calc_sequence(Sequence *seq) { + printf(" ddd %s\n", seq->name); + Sequence *seqm; int min, max; diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 5ff4dfe4e96..bf7a4f77f9e 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1,9 +1,5 @@ -/* util.c - * - * various string, file, list operations. - * - * - * $Id$ +/** + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,7 +25,8 @@ * Contributor(s): none yet. * * ***** END GPL LICENSE BLOCK ***** - * + * + * various string, file, list operations. */ #include diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 9685a2e1e20..c421c7fbb85 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2557,7 +2557,7 @@ static int sequencer_swap_internal_exec(bContext *C, int side) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); Sequence *active_seq = active_seq_get(scene); - Sequence *seq; + Sequence *seq, *iseq; if(ed==NULL) return OPERATOR_CANCELLED; if(active_seq==NULL) return OPERATOR_CANCELLED; @@ -2586,6 +2586,13 @@ static int sequencer_swap_internal_exec(bContext *C, int side) break; } + // XXX - should be a generic function + for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) { + //if((iseq->type & SEQ_EFFECT) && ELEM6(iseq, seq->seq1, seq->seq2, seq->seq3, active_seq->seq1, active_seq->seq2, active_seq->seq3)) + if(iseq->type & SEQ_EFFECT) + calc_sequence(iseq); + } + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 96953cefa2e..5bdfe228e89 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -2020,7 +2020,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_screen.c", NULL, RNA_def_screen}, {"rna_sculpt_paint.c", NULL, RNA_def_sculpt_paint}, {"rna_sensor.c", NULL, RNA_def_sensor}, - {"rna_sequence.c", NULL, RNA_def_sequence}, + {"rna_sequencer.c", NULL, RNA_def_sequencer}, {"rna_smoke.c", NULL, RNA_def_smoke}, {"rna_space.c", NULL, RNA_def_space}, {"rna_test.c", NULL, RNA_def_test}, diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 6f4233b9337..f43db74286b 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -154,7 +154,7 @@ void RNA_def_scene(struct BlenderRNA *brna); void RNA_def_screen(struct BlenderRNA *brna); void RNA_def_sculpt_paint(struct BlenderRNA *brna); void RNA_def_sensor(struct BlenderRNA *brna); -void RNA_def_sequence(struct BlenderRNA *brna); +void RNA_def_sequencer(struct BlenderRNA *brna); void RNA_def_smoke(struct BlenderRNA *brna); void RNA_def_space(struct BlenderRNA *brna); void RNA_def_test(struct BlenderRNA *brna); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 83a945f2bea..51344fdf8b3 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2190,7 +2190,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Stamp Filename", "Include the filename of the .blend file in image metadata"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); - prop= RNA_def_property(srna, "stamp_sequence_strip", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "stamp_sequencer_strip", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_SEQSTRIP); RNA_def_property_ui_text(prop, "Stamp Sequence Strip", "Include the name of the foreground sequence strip in image metadata"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c deleted file mode 100644 index a86fe1a9e5d..00000000000 --- a/source/blender/makesrna/intern/rna_sequence.c +++ /dev/null @@ -1,1186 +0,0 @@ -/** - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * Contributor(s): Blender Foundation (2008) - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include -#include - -#include "RNA_access.h" -#include "RNA_define.h" -#include "RNA_types.h" - -#include "rna_internal.h" - -#include "DNA_object_types.h" -#include "DNA_scene_types.h" -#include "DNA_sequence_types.h" - -#include "BKE_sequencer.h" - -#include "MEM_guardedalloc.h" - -#include "WM_types.h" - -#ifdef RNA_RUNTIME - -/* build a temp referene to the parent */ -static void meta_tmp_ref(Sequence *seq_par, Sequence *seq) -{ - for (; seq; seq= seq->next) { - seq->tmp= seq_par; - if(seq->type == SEQ_META) { - meta_tmp_ref(seq, seq->seqbase.first); - } - } -} - -static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) -{ - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); - - meta_tmp_ref(NULL, ed->seqbase.first); - - rna_iterator_listbase_begin(iter, &ed->seqbase, NULL); -} - -static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *iter) -{ - ListBaseIterator *internal= iter->internal; - Sequence *seq= (Sequence*)internal->link; - - if(seq->seqbase.first) - internal->link= (Link*)seq->seqbase.first; - else if(seq->next) - internal->link= (Link*)seq->next; - else { - internal->link= NULL; - - do { - seq= seq->tmp; // XXX - seq's dont reference their parents! - if(seq && seq->next) { - internal->link= (Link*)seq->next; - break; - } - } while(seq); - } - - iter->valid= (internal->link != NULL); -} - -static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); - - seq->start= value; - calc_sequence_disp(seq); - - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); - } - sort_seq(sce); -} - -static void rna_Sequence_length_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); - - seq_tx_set_final_right(seq, seq->start+value); - calc_sequence_disp(seq); - - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); - } - sort_seq(sce); -} - -static int rna_Sequence_length_get(PointerRNA *ptr) -{ - Sequence *seq= (Sequence*)ptr->data; - return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0); -} - -static void rna_Sequence_channel_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); - - seq->machine= value; - - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); - } - sort_seq(sce); -} - -/* properties that need to allocate structs */ -static void rna_Sequence_use_color_balance_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - int c; - - if(value) { - seq->flag |= SEQ_USE_COLOR_BALANCE; - if(seq->strip->color_balance == NULL) { - seq->strip->color_balance = MEM_callocN(sizeof(struct StripColorBalance), "StripColorBalance"); - for (c=0; c<3; c++) { - seq->strip->color_balance->lift[c] = 1.0f; - seq->strip->color_balance->gamma[c] = 1.0f; - seq->strip->color_balance->gain[c] = 1.0f; - } - } - } else { - seq->flag ^= SEQ_USE_COLOR_BALANCE; - } -} - -static void rna_Sequence_use_proxy_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - if(value) { - seq->flag |= SEQ_USE_PROXY; - if(seq->strip->proxy == NULL) { - seq->strip->proxy = MEM_callocN(sizeof(struct StripProxy), "StripProxy"); - } - } else { - seq->flag ^= SEQ_USE_PROXY; - } -} - -static void rna_Sequence_use_translation_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - if(value) { - seq->flag |= SEQ_USE_TRANSFORM; - if(seq->strip->transform == NULL) { - seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); - } - } else { - seq->flag ^= SEQ_USE_TRANSFORM; - } -} - -static void rna_Sequence_use_crop_set(PointerRNA *ptr, int value) -{ - Sequence *seq= (Sequence*)ptr->data; - if(value) { - seq->flag |= SEQ_USE_CROP; - if(seq->strip->crop == NULL) { - seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); - } - } else { - seq->flag ^= SEQ_USE_CROP; - } -} -/* name functions that ignore the first two characters */ -static void rna_Sequence_name_get(PointerRNA *ptr, char *value) -{ - Sequence *seq= (Sequence*)ptr->data; - BLI_strncpy(value, seq->name+2, sizeof(seq->name)-2); -} - -static int rna_Sequence_name_length(PointerRNA *ptr) -{ - Sequence *seq= (Sequence*)ptr->data; - return strlen(seq->name+2); -} - -static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) -{ - Scene *sce= (Scene*)ptr->id.data; - Sequence *seq= (Sequence*)ptr->data; - BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2); - seqUniqueName(&sce->ed->seqbase, seq); -} - -static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) -{ - Sequence *seq= (Sequence*)ptr->data; - - switch(seq->type) { - case SEQ_IMAGE: - return &RNA_ImageSequence; - case SEQ_META: - return &RNA_MetaSequence; - case SEQ_SCENE: - return &RNA_SceneSequence; - case SEQ_MOVIE: - return &RNA_MovieSequence; - case SEQ_SOUND: - return &RNA_SoundSequence; - case SEQ_CROSS: - case SEQ_ADD: - case SEQ_SUB: - case SEQ_ALPHAOVER: - case SEQ_ALPHAUNDER: - case SEQ_GAMCROSS: - case SEQ_MUL: - case SEQ_OVERDROP: - return &RNA_EffectSequence; - case SEQ_PLUGIN: - return &RNA_PluginSequence; - case SEQ_WIPE: - return &RNA_WipeSequence; - case SEQ_GLOW: - return &RNA_GlowSequence; - case SEQ_TRANSFORM: - return &RNA_TransformSequence; - case SEQ_COLOR: - return &RNA_ColorSequence; - case SEQ_SPEED: - return &RNA_SpeedControlSequence; - default: - return &RNA_Sequence; - } -} - -static char *rna_Sequence_path(PointerRNA *ptr) -{ - Sequence *seq= (Sequence*)ptr->data; - - /* sequencer data comes from scene... - * TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths) - */ - if (seq->name+2) - return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", seq->name+2); - else - return BLI_strdup(""); -} - -static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *iter) -{ - ListBaseIterator *internal= iter->internal; - MetaStack *ms= (MetaStack*)internal->link; - - return rna_pointer_inherit_refine(&iter->parent, &RNA_Sequence, ms->parseq); -} - -static void rna_MovieSequence_filename_set(PointerRNA *ptr, const char *value) -{ - Sequence *seq= (Sequence*)(ptr->data); - char dir[FILE_MAX], name[FILE_MAX]; - - BLI_split_dirfile_basic(value, dir, name); - BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); - BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); -} - -static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value) -{ - Sequence *seq= (Sequence*)(ptr->data); - char dir[FILE_MAX], name[FILE_MAX]; - - BLI_split_dirfile_basic(value, dir, name); - BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); - BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); -} - -static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) -{ - StripElem *elem= (StripElem*)(ptr->data); - char name[FILE_MAX]; - - BLI_split_dirfile_basic(value, NULL, name); - BLI_strncpy(elem->name, name, sizeof(elem->name)); -} - -static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr) -{ - Editing *ed= seq_give_editing(scene, FALSE); - - free_imbuf_seq(scene, &ed->seqbase, FALSE); - - if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) - seq_update_sound(ptr->data); -} - -static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr) -{ - Editing *ed= seq_give_editing(scene, FALSE); - - seq_update_muting(ed); - rna_Sequence_update(bmain, scene, ptr); -} - -#else - -static void rna_def_strip_element(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceElement", NULL); - RNA_def_struct_ui_text(srna, "Sequence Element", "Sequence strip data for a single frame."); - RNA_def_struct_sdna(srna, "StripElem"); - - prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); - RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SequenceElement_filename_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_strip_crop(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceCrop", NULL); - RNA_def_struct_ui_text(srna, "Sequence Crop", "Cropping parameters for a sequence strip."); - RNA_def_struct_sdna(srna, "StripCrop"); - - prop= RNA_def_property(srna, "top", PROP_INT, PROP_UNSIGNED); - RNA_def_property_ui_text(prop, "Top", ""); - RNA_def_property_ui_range(prop, 0, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "bottom", PROP_INT, PROP_UNSIGNED); - RNA_def_property_ui_text(prop, "Bottom", ""); - RNA_def_property_ui_range(prop, 0, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "left", PROP_INT, PROP_UNSIGNED); - RNA_def_property_ui_text(prop, "Left", ""); - RNA_def_property_ui_range(prop, 0, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "right", PROP_INT, PROP_UNSIGNED); - RNA_def_property_ui_text(prop, "Right", ""); - RNA_def_property_ui_range(prop, 0, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_strip_transform(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceTransform", NULL); - RNA_def_struct_ui_text(srna, "Sequence Transform", "Transform parameters for a sequence strip."); - RNA_def_struct_sdna(srna, "StripTransform"); - - prop= RNA_def_property(srna, "offset_x", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "xofs"); - RNA_def_property_ui_text(prop, "Offset Y", ""); - RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "offset_y", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "yofs"); - RNA_def_property_ui_text(prop, "Offset Y", ""); - RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_strip_proxy(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceProxy", NULL); - RNA_def_struct_ui_text(srna, "Sequence Proxy", "Proxy parameters for a sequence strip."); - RNA_def_struct_sdna(srna, "StripProxy"); - - prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "dir"); - RNA_def_property_ui_text(prop, "Directory", "Location to story the proxy file"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "file", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "file"); - RNA_def_property_ui_text(prop, "File", "Proxy file name"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_strip_color_balance(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceColorBalance", NULL); - RNA_def_struct_ui_text(srna, "Sequence Color Balance", "Color balance parameters for a sequence strip."); - RNA_def_struct_sdna(srna, "StripColorBalance"); - - prop= RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR); - RNA_def_property_ui_text(prop, "Lift", "Color balance lift (shadows)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR); - RNA_def_property_ui_text(prop, "Gamma", "Color balance gamma (midtones)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR); - RNA_def_property_ui_text(prop, "Gain", "Color balance gain (highlights)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAIN); - RNA_def_property_ui_text(prop, "Inverse Gain", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "inverse_gamma", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAMMA); - RNA_def_property_ui_text(prop, "Inverse Gamma", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "inverse_lift", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT); - RNA_def_property_ui_text(prop, "Inverse Lift", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - /* not yet used - prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Exposure", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Saturation", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); */ -} - -static void rna_def_sequence(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - FunctionRNA *func; - - static const EnumPropertyItem seq_type_items[]= { - {SEQ_IMAGE, "IMAGE", 0, "Image", ""}, - {SEQ_META, "META", 0, "Meta", ""}, - {SEQ_SCENE, "SCENE", 0, "Scene", ""}, - {SEQ_MOVIE, "MOVIE", 0, "Movie", ""}, - {SEQ_SOUND, "SOUND", 0, "Sound", ""}, - {SEQ_CROSS, "CROSS", 0, "Cross", ""}, - {SEQ_ADD, "ADD", 0, "Add", ""}, - {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, - {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, - {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, - {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, - {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, - {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, - {SEQ_PLUGIN, "PLUGIN", 0, "plugin", ""}, - {SEQ_WIPE, "WIPE", 0, "Wipe", ""}, - {SEQ_GLOW, "GLOW", 0, "Glow", ""}, - {SEQ_TRANSFORM, "TRANSFORM", 0, "Transform", ""}, - {SEQ_COLOR, "COLOR", 0, "Color", ""}, - {SEQ_SPEED, "SPEED", 0, "Speed", ""}, - {0, NULL, 0, NULL, NULL}}; - - static const EnumPropertyItem blend_mode_items[]= { - {SEQ_BLEND_REPLACE, "REPLACE", 0, "Replace", ""}, - {SEQ_CROSS, "CROSS", 0, "Cross", ""}, - {SEQ_ADD, "ADD", 0, "Add", ""}, - {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, - {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, - {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, - {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, - {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, - {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, - {0, NULL, 0, NULL, NULL}}; - - srna = RNA_def_struct(brna, "Sequence", NULL); - RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor."); - RNA_def_struct_refine_func(srna, "rna_Sequence_refine"); - RNA_def_struct_path_func(srna, "rna_Sequence_path"); - - prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); - RNA_def_property_string_funcs(prop, "rna_Sequence_name_get", "rna_Sequence_name_length", "rna_Sequence_name_set"); - RNA_def_property_string_maxlength(prop, sizeof(((Sequence*)NULL)->name)-2); - RNA_def_property_ui_text(prop, "Name", ""); - RNA_def_struct_name_property(srna, prop); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - - prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_enum_items(prop, seq_type_items); - RNA_def_property_ui_text(prop, "Type", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - //prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE); - //RNA_def_property_ui_text(prop, "Ipo Curves", "Ipo curves used by this sequence."); - - /* flags */ - - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); - RNA_def_property_ui_text(prop, "Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); - - prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); - RNA_def_property_ui_text(prop, "Left Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); - - prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); - RNA_def_property_ui_text(prop, "Right Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); - - prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); - RNA_def_property_ui_text(prop, "Mute", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_mute_update"); - - prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); - RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); - RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it can't be transformed."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - - /* strip positioning */ - - prop= RNA_def_property(srna, "length", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "len"); - RNA_def_property_range(prop, 1, MAXFRAME); - RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); - RNA_def_property_int_funcs(prop, "rna_Sequence_length_get", "rna_Sequence_length_set",NULL); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "start"); - RNA_def_property_ui_text(prop, "Start Frame", ""); - RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "startofs"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests - RNA_def_property_ui_text(prop, "Start Offset", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "endofs"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests - RNA_def_property_ui_text(prop, "End offset", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "startstill"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests - RNA_def_property_range(prop, 0, MAXFRAME); - RNA_def_property_ui_text(prop, "Start Still", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "endstill"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests - RNA_def_property_range(prop, 0, MAXFRAME); - RNA_def_property_ui_text(prop, "End Still", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "machine"); - RNA_def_property_range(prop, 0, MAXSEQ-1); - RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip."); - RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set",NULL); // overlap test - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - /* blending */ - - prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, blend_mode_items); - RNA_def_property_ui_text(prop, "Blend Mode", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0.0f, 100.0f); - RNA_def_property_ui_text(prop, "Blend Opacity", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_float_sdna(prop, NULL, "effect_fader"); - RNA_def_property_ui_text(prop, "Effect fader position", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE); - RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - - prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "speed_fader"); - RNA_def_property_ui_text(prop, "Speed effect fader position", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - /* functions */ - func= RNA_def_function(srna, "getStripElem", "give_stripelem"); - RNA_def_function_ui_description(func, "Return the strip element from a given frame or None."); - prop= RNA_def_int(func, "frame", 0, -MAXFRAME, MAXFRAME, "Frame", "The frame to get the strip element from", -MAXFRAME, MAXFRAME); - RNA_def_property_flag(prop, PROP_REQUIRED); - RNA_def_function_return(func, RNA_def_pointer(func, "elem", "SequenceElement", "", "strip element of the current frame")); -} - -static void rna_def_editor(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SequenceEditor", NULL); - RNA_def_struct_ui_text(srna, "Sequence Editor", "Sequence editing data for a Scene datablock."); - RNA_def_struct_ui_icon(srna, ICON_SEQUENCE); - RNA_def_struct_sdna(srna, "Editing"); - - prop= RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); - RNA_def_property_struct_type(prop, "Sequence"); - RNA_def_property_ui_text(prop, "Sequences", ""); - - prop= RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); - RNA_def_property_struct_type(prop, "Sequence"); - RNA_def_property_ui_text(prop, "Sequences", ""); - RNA_def_property_collection_funcs(prop, "rna_SequenceEditor_sequences_all_begin", "rna_SequenceEditor_sequences_all_next", 0, 0, 0, 0, 0); - - prop= RNA_def_property(srna, "meta_stack", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL); - RNA_def_property_struct_type(prop, "Sequence"); - RNA_def_property_ui_text(prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip."); - RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEditor_meta_stack_get", 0, 0, 0); - - prop= RNA_def_property(srna, "active_strip", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "act_seq"); - RNA_def_property_ui_text(prop, "Active Strip", "Sequencers active strip"); -} - -static void rna_def_filter_video(StructRNA *srna) -{ - PropertyRNA *prop; - - prop= RNA_def_property(srna, "de_interlace", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FILTERY); - RNA_def_property_ui_text(prop, "De-Interlace", "For video movies to remove fields."); - - prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL); - RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - - prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX); - RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY); - RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT); - RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES); - RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "mul"); - RNA_def_property_range(prop, 0.0f, 20.0f); - RNA_def_property_ui_text(prop, "Multiply Colors", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 1.0f, 30.0f); - RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE); - RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_color_balance_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance"); - RNA_def_property_ui_text(prop, "Color Balance", ""); - - prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM); - RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_translation_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "strip->transform"); - RNA_def_property_ui_text(prop, "Transform", ""); - - prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP); - RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_crop_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "strip->crop"); - RNA_def_property_ui_text(prop, "Crop", ""); -} - -static void rna_def_proxy(StructRNA *srna) -{ - PropertyRNA *prop; - - prop= RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY); - RNA_def_property_ui_text(prop, "Use Proxy", "Use a preview proxy for this strip."); - RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_proxy_set"); - - prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy"); - RNA_def_property_ui_text(prop, "Proxy", ""); - - prop= RNA_def_property(srna, "proxy_custom_directory", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_DIR); - RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_input(StructRNA *srna) -{ - PropertyRNA *prop; - - prop= RNA_def_property(srna, "animation_start_offset", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "anim_startofs"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test - RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "animation_end_offset", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "anim_endofs"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test - RNA_def_property_ui_text(prop, "Animation End Offset", "Animation end offset (trim end)."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_image(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "ImageSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Image Sequence", "Sequence strip to load one or more images."); - RNA_def_struct_sdna(srna, "Sequence"); - - prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "strip->dir"); - RNA_def_property_ui_text(prop, "Directory", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "strip->stripdata", "strip->len"); - RNA_def_property_struct_type(prop, "SequenceElement"); - RNA_def_property_ui_text(prop, "Elements", ""); - - rna_def_filter_video(srna); - rna_def_proxy(srna); - rna_def_input(srna); -} - -static void rna_def_meta(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "MetaSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Meta Sequence", "Sequence strip to group other strips as a single sequence strip."); - RNA_def_struct_sdna(srna, "Sequence"); - - prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); - RNA_def_property_struct_type(prop, "Sequence"); - RNA_def_property_ui_text(prop, "Sequences", ""); - - rna_def_filter_video(srna); - rna_def_proxy(srna); - rna_def_input(srna); -} - -static void rna_def_scene(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SceneSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Scene Sequence", "Sequence strip to used the rendered image of a scene."); - RNA_def_struct_sdna(srna, "Sequence"); - - prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - rna_def_filter_video(srna); - rna_def_proxy(srna); - rna_def_input(srna); -} - -static void rna_def_movie(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "MovieSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Movie Sequence", "Sequence strip to load a video."); - RNA_def_struct_sdna(srna, "Sequence"); - - prop= RNA_def_property(srna, "mpeg_preseek", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "anim_preseek"); - RNA_def_property_range(prop, 0, 50); - RNA_def_property_ui_text(prop, "MPEG Preseek", "For MPEG movies, preseek this many frames."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); - RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); - RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MovieSequence_filename_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "strip->dir"); - RNA_def_property_ui_text(prop, "Directory", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - rna_def_filter_video(srna); - rna_def_proxy(srna); - rna_def_input(srna); -} - -static void rna_def_sound(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SoundSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Sound Sequence", "Sequence strip defining a sound to be played over a period of time."); - RNA_def_struct_sdna(srna, "Sequence"); - - prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); - RNA_def_property_struct_type(prop, "Sound"); - RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); - RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); - RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoundSequence_filename_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "strip->dir"); - RNA_def_property_ui_text(prop, "Directory", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - rna_def_input(srna); - - RNA_def_struct_sdna_from(srna, "SoundHandle", "sound_handle"); - - prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "volume"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_effect(BlenderRNA *brna) -{ - StructRNA *srna; - - srna = RNA_def_struct(brna, "EffectSequence", "Sequence"); - RNA_def_struct_ui_text(srna, "Effect Sequence", "Sequence strip applying an effect on the images created by other strips."); - RNA_def_struct_sdna(srna, "Sequence"); - - rna_def_proxy(srna); -} - -static void rna_def_plugin(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "PluginSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Plugin Sequence", "Sequence strip applying an effect, loaded from an external plugin."); - RNA_def_struct_sdna_from(srna, "PluginSeq", "plugin"); - - prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); - RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - /* plugin properties need custom wrapping code like ID properties */ -} - -static void rna_def_wipe(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem wipe_type_items[]= { - {0, "SINGLE", 0, "Single", ""}, - {1, "DOUBLE", 0, "Double", ""}, - /* not used yet {2, "BOX", 0, "Box", ""}, */ - /* not used yet {3, "CROSS", 0, "Cross", ""}, */ - {4, "IRIS", 0, "Iris", ""}, - {5, "CLOCK", 0, "Clock", ""}, - {0, NULL, 0, NULL, NULL} - }; - - static const EnumPropertyItem wipe_direction_items[]= { - {0, "OUT", 0, "Out", ""}, - {1, "IN", 0, "In", ""}, - {0, NULL, 0, NULL, NULL} - }; - - srna = RNA_def_struct(brna, "WipeSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Wipe Sequence", "Sequence strip creating a wipe transition."); - RNA_def_struct_sdna_from(srna, "WipeVars", "effectdata"); - - prop= RNA_def_property(srna, "blur_width", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "edgeWidth"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Blur Width", "Width of the blur edge, in percentage relative to the image size."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "angle"); - RNA_def_property_range(prop, -90.0f, 90.0f); - RNA_def_property_ui_text(prop, "Angle", "Edge angle."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "forward"); - RNA_def_property_enum_items(prop, wipe_direction_items); - RNA_def_property_ui_text(prop, "Direction", "Wipe direction."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "transition_type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "wipetype"); - RNA_def_property_enum_items(prop, wipe_type_items); - RNA_def_property_ui_text(prop, "Transition Type", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_glow(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "GlowSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Glow Sequence", "Sequence strip creating a glow effect."); - RNA_def_struct_sdna_from(srna, "GlowVars", "effectdata"); - - prop= RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "fMini"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Threshold", "Minimum intensity to trigger a glow"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "clamp", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "fClamp"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Clamp", "rightness limit of intensity."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "boost_factor", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "fBoost"); - RNA_def_property_range(prop, 0.0f, 10.0f); - RNA_def_property_ui_text(prop, "Boost Factor", "Brightness multiplier."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "blur_distance", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "dDist"); - RNA_def_property_range(prop, 0.5f, 20.0f); - RNA_def_property_ui_text(prop, "Blur Distance", "Radius of glow effect."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "dQuality"); - RNA_def_property_range(prop, 1, 5); - RNA_def_property_ui_text(prop, "Quality", "Accuracy of the blur effect."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "only_boost", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "bNoComp", 0); - RNA_def_property_ui_text(prop, "Only Boost", "Show the glow buffer only."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_transform(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem interpolation_items[]= { - {0, "NONE", 0, "None", "No interpolation."}, - {1, "BILINEAR", 0, "Bilinear", "Bilinear interpolation."}, - {2, "BICUBIC", 0, "Bicubic", "Bicubic interpolation."}, - {0, NULL, 0, NULL, NULL} - }; - - static const EnumPropertyItem translation_unit_items[]= { - {0, "PIXELS", 0, "Pixels", ""}, - {1, "PERCENT", 0, "Percent", ""}, - {0, NULL, 0, NULL, NULL} - }; - - srna = RNA_def_struct(brna, "TransformSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Transform Sequence", "Sequence strip applying affine transformations to other strips."); - RNA_def_struct_sdna_from(srna, "TransformVars", "effectdata"); - - prop= RNA_def_property(srna, "scale_start_x", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "ScalexIni"); - RNA_def_property_ui_text(prop, "Scale X", ""); - RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "ScaleyIni"); - RNA_def_property_ui_text(prop, "Scale Y", ""); - RNA_def_property_ui_range(prop, 0, 10, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0); - RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "xIni"); - RNA_def_property_ui_text(prop, "Translate X", ""); - RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "yIni"); - RNA_def_property_ui_text(prop, "Translate Y", ""); - RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "rotIni"); - RNA_def_property_range(prop, -360.0f, 360.0f); - RNA_def_property_ui_text(prop, "Rotation", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "percent"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ - RNA_def_property_enum_items(prop, translation_unit_items); - RNA_def_property_ui_text(prop, "Translation Unit", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, interpolation_items); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ - RNA_def_property_ui_text(prop, "Interpolation", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_solid_color(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "ColorSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single color."); - RNA_def_struct_sdna_from(srna, "SolidColorVars", "effectdata"); - - prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); - RNA_def_property_float_sdna(prop, NULL, "col"); - RNA_def_property_ui_text(prop, "Color", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -static void rna_def_speed_control(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "SpeedControlSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "SpeedControl Sequence", "Sequence strip to control the speed of other strips."); - RNA_def_struct_sdna_from(srna, "SpeedControlVars", "effectdata"); - - prop= RNA_def_property(srna, "global_speed", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_float_sdna(prop, NULL, "globalSpeed"); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ - RNA_def_property_ui_text(prop, "Global Speed", ""); - RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "curve_velocity", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_INTEGRATE); - RNA_def_property_ui_text(prop, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "frame_blending", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_BLEND); - RNA_def_property_ui_text(prop, "Frame Blending", "Blend two frames into the target for a smoother result."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - prop= RNA_def_property(srna, "curve_compress_y", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_COMPRESS_IPO_Y); - RNA_def_property_ui_text(prop, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0."); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); -} - -void RNA_def_sequence(BlenderRNA *brna) -{ - rna_def_strip_element(brna); - rna_def_strip_proxy(brna); - rna_def_strip_color_balance(brna); - rna_def_strip_crop(brna); - rna_def_strip_transform(brna); - - rna_def_sequence(brna); - rna_def_editor(brna); - - rna_def_image(brna); - rna_def_meta(brna); - rna_def_scene(brna); - rna_def_movie(brna); - rna_def_sound(brna); - rna_def_effect(brna); - rna_def_plugin(brna); - rna_def_wipe(brna); - rna_def_glow(brna); - rna_def_transform(brna); - rna_def_solid_color(brna); - rna_def_speed_control(brna); -} - -#endif - diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c new file mode 100644 index 00000000000..2eee35164af --- /dev/null +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -0,0 +1,1186 @@ +/** + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contributor(s): Blender Foundation (2008) + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_types.h" + +#include "rna_internal.h" + +#include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_sequence_types.h" + +#include "BKE_sequencer.h" + +#include "MEM_guardedalloc.h" + +#include "WM_types.h" + +#ifdef RNA_RUNTIME + +/* build a temp referene to the parent */ +static void meta_tmp_ref(Sequence *seq_par, Sequence *seq) +{ + for (; seq; seq= seq->next) { + seq->tmp= seq_par; + if(seq->type == SEQ_META) { + meta_tmp_ref(seq, seq->seqbase.first); + } + } +} + +static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) +{ + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + meta_tmp_ref(NULL, ed->seqbase.first); + + rna_iterator_listbase_begin(iter, &ed->seqbase, NULL); +} + +static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *iter) +{ + ListBaseIterator *internal= iter->internal; + Sequence *seq= (Sequence*)internal->link; + + if(seq->seqbase.first) + internal->link= (Link*)seq->seqbase.first; + else if(seq->next) + internal->link= (Link*)seq->next; + else { + internal->link= NULL; + + do { + seq= seq->tmp; // XXX - seq's dont reference their parents! + if(seq && seq->next) { + internal->link= (Link*)seq->next; + break; + } + } while(seq); + } + + iter->valid= (internal->link != NULL); +} + +static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq->start= value; + calc_sequence_disp(seq); + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +static void rna_Sequence_length_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq_tx_set_final_right(seq, seq->start+value); + calc_sequence_disp(seq); + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +static int rna_Sequence_length_get(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0); +} + +static void rna_Sequence_channel_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq->machine= value; + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +/* properties that need to allocate structs */ +static void rna_Sequence_use_color_balance_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + int c; + + if(value) { + seq->flag |= SEQ_USE_COLOR_BALANCE; + if(seq->strip->color_balance == NULL) { + seq->strip->color_balance = MEM_callocN(sizeof(struct StripColorBalance), "StripColorBalance"); + for (c=0; c<3; c++) { + seq->strip->color_balance->lift[c] = 1.0f; + seq->strip->color_balance->gamma[c] = 1.0f; + seq->strip->color_balance->gain[c] = 1.0f; + } + } + } else { + seq->flag ^= SEQ_USE_COLOR_BALANCE; + } +} + +static void rna_Sequence_use_proxy_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_PROXY; + if(seq->strip->proxy == NULL) { + seq->strip->proxy = MEM_callocN(sizeof(struct StripProxy), "StripProxy"); + } + } else { + seq->flag ^= SEQ_USE_PROXY; + } +} + +static void rna_Sequence_use_translation_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_TRANSFORM; + if(seq->strip->transform == NULL) { + seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); + } + } else { + seq->flag ^= SEQ_USE_TRANSFORM; + } +} + +static void rna_Sequence_use_crop_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_CROP; + if(seq->strip->crop == NULL) { + seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); + } + } else { + seq->flag ^= SEQ_USE_CROP; + } +} +/* name functions that ignore the first two characters */ +static void rna_Sequence_name_get(PointerRNA *ptr, char *value) +{ + Sequence *seq= (Sequence*)ptr->data; + BLI_strncpy(value, seq->name+2, sizeof(seq->name)-2); +} + +static int rna_Sequence_name_length(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + return strlen(seq->name+2); +} + +static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) +{ + Scene *sce= (Scene*)ptr->id.data; + Sequence *seq= (Sequence*)ptr->data; + BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2); + seqUniqueName(&sce->ed->seqbase, seq); +} + +static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + + switch(seq->type) { + case SEQ_IMAGE: + return &RNA_ImageSequence; + case SEQ_META: + return &RNA_MetaSequence; + case SEQ_SCENE: + return &RNA_SceneSequence; + case SEQ_MOVIE: + return &RNA_MovieSequence; + case SEQ_SOUND: + return &RNA_SoundSequence; + case SEQ_CROSS: + case SEQ_ADD: + case SEQ_SUB: + case SEQ_ALPHAOVER: + case SEQ_ALPHAUNDER: + case SEQ_GAMCROSS: + case SEQ_MUL: + case SEQ_OVERDROP: + return &RNA_EffectSequence; + case SEQ_PLUGIN: + return &RNA_PluginSequence; + case SEQ_WIPE: + return &RNA_WipeSequence; + case SEQ_GLOW: + return &RNA_GlowSequence; + case SEQ_TRANSFORM: + return &RNA_TransformSequence; + case SEQ_COLOR: + return &RNA_ColorSequence; + case SEQ_SPEED: + return &RNA_SpeedControlSequence; + default: + return &RNA_Sequence; + } +} + +static char *rna_Sequence_path(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + + /* sequencer data comes from scene... + * TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths) + */ + if (seq->name+2) + return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", seq->name+2); + else + return BLI_strdup(""); +} + +static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *iter) +{ + ListBaseIterator *internal= iter->internal; + MetaStack *ms= (MetaStack*)internal->link; + + return rna_pointer_inherit_refine(&iter->parent, &RNA_Sequence, ms->parseq); +} + +static void rna_MovieSequence_filename_set(PointerRNA *ptr, const char *value) +{ + Sequence *seq= (Sequence*)(ptr->data); + char dir[FILE_MAX], name[FILE_MAX]; + + BLI_split_dirfile_basic(value, dir, name); + BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); + BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); +} + +static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value) +{ + Sequence *seq= (Sequence*)(ptr->data); + char dir[FILE_MAX], name[FILE_MAX]; + + BLI_split_dirfile_basic(value, dir, name); + BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); + BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); +} + +static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) +{ + StripElem *elem= (StripElem*)(ptr->data); + char name[FILE_MAX]; + + BLI_split_dirfile_basic(value, NULL, name); + BLI_strncpy(elem->name, name, sizeof(elem->name)); +} + +static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Editing *ed= seq_give_editing(scene, FALSE); + + free_imbuf_seq(scene, &ed->seqbase, FALSE); + + if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) + seq_update_sound(ptr->data); +} + +static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Editing *ed= seq_give_editing(scene, FALSE); + + seq_update_muting(ed); + rna_Sequence_update(bmain, scene, ptr); +} + +#else + +static void rna_def_strip_element(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceElement", NULL); + RNA_def_struct_ui_text(srna, "Sequence Element", "Sequence strip data for a single frame."); + RNA_def_struct_sdna(srna, "StripElem"); + + prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "name"); + RNA_def_property_ui_text(prop, "Filename", ""); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SequenceElement_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_strip_crop(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceCrop", NULL); + RNA_def_struct_ui_text(srna, "Sequence Crop", "Cropping parameters for a sequence strip."); + RNA_def_struct_sdna(srna, "StripCrop"); + + prop= RNA_def_property(srna, "top", PROP_INT, PROP_UNSIGNED); + RNA_def_property_ui_text(prop, "Top", ""); + RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "bottom", PROP_INT, PROP_UNSIGNED); + RNA_def_property_ui_text(prop, "Bottom", ""); + RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "left", PROP_INT, PROP_UNSIGNED); + RNA_def_property_ui_text(prop, "Left", ""); + RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "right", PROP_INT, PROP_UNSIGNED); + RNA_def_property_ui_text(prop, "Right", ""); + RNA_def_property_ui_range(prop, 0, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_strip_transform(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceTransform", NULL); + RNA_def_struct_ui_text(srna, "Sequence Transform", "Transform parameters for a sequence strip."); + RNA_def_struct_sdna(srna, "StripTransform"); + + prop= RNA_def_property(srna, "offset_x", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "xofs"); + RNA_def_property_ui_text(prop, "Offset Y", ""); + RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "offset_y", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "yofs"); + RNA_def_property_ui_text(prop, "Offset Y", ""); + RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_strip_proxy(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceProxy", NULL); + RNA_def_struct_ui_text(srna, "Sequence Proxy", "Proxy parameters for a sequence strip."); + RNA_def_struct_sdna(srna, "StripProxy"); + + prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "dir"); + RNA_def_property_ui_text(prop, "Directory", "Location to story the proxy file"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "file", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "file"); + RNA_def_property_ui_text(prop, "File", "Proxy file name"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_strip_color_balance(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceColorBalance", NULL); + RNA_def_struct_ui_text(srna, "Sequence Color Balance", "Color balance parameters for a sequence strip."); + RNA_def_struct_sdna(srna, "StripColorBalance"); + + prop= RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR); + RNA_def_property_ui_text(prop, "Lift", "Color balance lift (shadows)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR); + RNA_def_property_ui_text(prop, "Gamma", "Color balance gamma (midtones)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR); + RNA_def_property_ui_text(prop, "Gain", "Color balance gain (highlights)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAIN); + RNA_def_property_ui_text(prop, "Inverse Gain", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "inverse_gamma", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAMMA); + RNA_def_property_ui_text(prop, "Inverse Gamma", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "inverse_lift", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT); + RNA_def_property_ui_text(prop, "Inverse Lift", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + /* not yet used + prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Exposure", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Saturation", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); */ +} + +static void rna_def_sequence(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + FunctionRNA *func; + + static const EnumPropertyItem seq_type_items[]= { + {SEQ_IMAGE, "IMAGE", 0, "Image", ""}, + {SEQ_META, "META", 0, "Meta", ""}, + {SEQ_SCENE, "SCENE", 0, "Scene", ""}, + {SEQ_MOVIE, "MOVIE", 0, "Movie", ""}, + {SEQ_SOUND, "SOUND", 0, "Sound", ""}, + {SEQ_CROSS, "CROSS", 0, "Cross", ""}, + {SEQ_ADD, "ADD", 0, "Add", ""}, + {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, + {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, + {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, + {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, + {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, + {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, + {SEQ_PLUGIN, "PLUGIN", 0, "plugin", ""}, + {SEQ_WIPE, "WIPE", 0, "Wipe", ""}, + {SEQ_GLOW, "GLOW", 0, "Glow", ""}, + {SEQ_TRANSFORM, "TRANSFORM", 0, "Transform", ""}, + {SEQ_COLOR, "COLOR", 0, "Color", ""}, + {SEQ_SPEED, "SPEED", 0, "Speed", ""}, + {0, NULL, 0, NULL, NULL}}; + + static const EnumPropertyItem blend_mode_items[]= { + {SEQ_BLEND_REPLACE, "REPLACE", 0, "Replace", ""}, + {SEQ_CROSS, "CROSS", 0, "Cross", ""}, + {SEQ_ADD, "ADD", 0, "Add", ""}, + {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, + {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, + {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, + {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, + {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, + {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, + {0, NULL, 0, NULL, NULL}}; + + srna = RNA_def_struct(brna, "Sequence", NULL); + RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor."); + RNA_def_struct_refine_func(srna, "rna_Sequence_refine"); + RNA_def_struct_path_func(srna, "rna_Sequence_path"); + + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_Sequence_name_get", "rna_Sequence_name_length", "rna_Sequence_name_set"); + RNA_def_property_string_maxlength(prop, sizeof(((Sequence*)NULL)->name)-2); + RNA_def_property_ui_text(prop, "Name", ""); + RNA_def_struct_name_property(srna, prop); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + + prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_enum_items(prop, seq_type_items); + RNA_def_property_ui_text(prop, "Type", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + //prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE); + //RNA_def_property_ui_text(prop, "Ipo Curves", "Ipo curves used by this sequence."); + + /* flags */ + + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); + RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + + prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); + RNA_def_property_ui_text(prop, "Left Handle Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + + prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); + RNA_def_property_ui_text(prop, "Right Handle Selected", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + + prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); + RNA_def_property_ui_text(prop, "Mute", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_mute_update"); + + prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); + RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); + RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it can't be transformed."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + + /* strip positioning */ + + prop= RNA_def_property(srna, "length", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "len"); + RNA_def_property_range(prop, 1, MAXFRAME); + RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); + RNA_def_property_int_funcs(prop, "rna_Sequence_length_get", "rna_Sequence_length_set",NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "start"); + RNA_def_property_ui_text(prop, "Start Frame", ""); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "startofs"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests + RNA_def_property_ui_text(prop, "Start Offset", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "endofs"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests + RNA_def_property_ui_text(prop, "End offset", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "startstill"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests + RNA_def_property_range(prop, 0, MAXFRAME); + RNA_def_property_ui_text(prop, "Start Still", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "endstill"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests + RNA_def_property_range(prop, 0, MAXFRAME); + RNA_def_property_ui_text(prop, "End Still", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "machine"); + RNA_def_property_range(prop, 0, MAXSEQ-1); + RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip."); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set",NULL); // overlap test + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + /* blending */ + + prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, blend_mode_items); + RNA_def_property_ui_text(prop, "Blend Mode", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0.0f, 100.0f); + RNA_def_property_ui_text(prop, "Blend Opacity", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_float_sdna(prop, NULL, "effect_fader"); + RNA_def_property_ui_text(prop, "Effect fader position", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE); + RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the builtin default (usually make transition as long as effect strip)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + + prop= RNA_def_property(srna, "speed_fader", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "speed_fader"); + RNA_def_property_ui_text(prop, "Speed effect fader position", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + /* functions */ + func= RNA_def_function(srna, "getStripElem", "give_stripelem"); + RNA_def_function_ui_description(func, "Return the strip element from a given frame or None."); + prop= RNA_def_int(func, "frame", 0, -MAXFRAME, MAXFRAME, "Frame", "The frame to get the strip element from", -MAXFRAME, MAXFRAME); + RNA_def_property_flag(prop, PROP_REQUIRED); + RNA_def_function_return(func, RNA_def_pointer(func, "elem", "SequenceElement", "", "strip element of the current frame")); +} + +static void rna_def_editor(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SequenceEditor", NULL); + RNA_def_struct_ui_text(srna, "Sequence Editor", "Sequence editing data for a Scene datablock."); + RNA_def_struct_ui_icon(srna, ICON_SEQUENCE); + RNA_def_struct_sdna(srna, "Editing"); + + prop= RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); + RNA_def_property_struct_type(prop, "Sequence"); + RNA_def_property_ui_text(prop, "Sequences", ""); + + prop= RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); + RNA_def_property_struct_type(prop, "Sequence"); + RNA_def_property_ui_text(prop, "Sequences", ""); + RNA_def_property_collection_funcs(prop, "rna_SequenceEditor_sequences_all_begin", "rna_SequenceEditor_sequences_all_next", 0, 0, 0, 0, 0); + + prop= RNA_def_property(srna, "meta_stack", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL); + RNA_def_property_struct_type(prop, "Sequence"); + RNA_def_property_ui_text(prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip."); + RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEditor_meta_stack_get", 0, 0, 0); + + prop= RNA_def_property(srna, "active_strip", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "act_seq"); + RNA_def_property_ui_text(prop, "Active Strip", "Sequencers active strip"); +} + +static void rna_def_filter_video(StructRNA *srna) +{ + PropertyRNA *prop; + + prop= RNA_def_property(srna, "de_interlace", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FILTERY); + RNA_def_property_ui_text(prop, "De-Interlace", "For video movies to remove fields."); + + prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL); + RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + + prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX); + RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY); + RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT); + RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES); + RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "mul"); + RNA_def_property_range(prop, 0.0f, 20.0f); + RNA_def_property_ui_text(prop, "Multiply Colors", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 1.0f, 30.0f); + RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE); + RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_color_balance_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance"); + RNA_def_property_ui_text(prop, "Color Balance", ""); + + prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM); + RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_translation_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "strip->transform"); + RNA_def_property_ui_text(prop, "Transform", ""); + + prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP); + RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_crop_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "strip->crop"); + RNA_def_property_ui_text(prop, "Crop", ""); +} + +static void rna_def_proxy(StructRNA *srna) +{ + PropertyRNA *prop; + + prop= RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY); + RNA_def_property_ui_text(prop, "Use Proxy", "Use a preview proxy for this strip."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Sequence_use_proxy_set"); + + prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy"); + RNA_def_property_ui_text(prop, "Proxy", ""); + + prop= RNA_def_property(srna, "proxy_custom_directory", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_DIR); + RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_input(StructRNA *srna) +{ + PropertyRNA *prop; + + prop= RNA_def_property(srna, "animation_start_offset", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "anim_startofs"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test + RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "animation_end_offset", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "anim_endofs"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test + RNA_def_property_ui_text(prop, "Animation End Offset", "Animation end offset (trim end)."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_image(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "ImageSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Image Sequence", "Sequence strip to load one or more images."); + RNA_def_struct_sdna(srna, "Sequence"); + + prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "strip->dir"); + RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "strip->stripdata", "strip->len"); + RNA_def_property_struct_type(prop, "SequenceElement"); + RNA_def_property_ui_text(prop, "Elements", ""); + + rna_def_filter_video(srna); + rna_def_proxy(srna); + rna_def_input(srna); +} + +static void rna_def_meta(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "MetaSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Meta Sequence", "Sequence strip to group other strips as a single sequence strip."); + RNA_def_struct_sdna(srna, "Sequence"); + + prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL); + RNA_def_property_struct_type(prop, "Sequence"); + RNA_def_property_ui_text(prop, "Sequences", ""); + + rna_def_filter_video(srna); + rna_def_proxy(srna); + rna_def_input(srna); +} + +static void rna_def_scene(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SceneSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Scene Sequence", "Sequence strip to used the rendered image of a scene."); + RNA_def_struct_sdna(srna, "Sequence"); + + prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Scene", "Scene that this sequence uses."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + rna_def_filter_video(srna); + rna_def_proxy(srna); + rna_def_input(srna); +} + +static void rna_def_movie(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "MovieSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Movie Sequence", "Sequence strip to load a video."); + RNA_def_struct_sdna(srna, "Sequence"); + + prop= RNA_def_property(srna, "mpeg_preseek", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "anim_preseek"); + RNA_def_property_range(prop, 0, 50); + RNA_def_property_ui_text(prop, "MPEG Preseek", "For MPEG movies, preseek this many frames."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); + RNA_def_property_ui_text(prop, "Filename", ""); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MovieSequence_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "strip->dir"); + RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + rna_def_filter_video(srna); + rna_def_proxy(srna); + rna_def_input(srna); +} + +static void rna_def_sound(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SoundSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Sound Sequence", "Sequence strip defining a sound to be played over a period of time."); + RNA_def_struct_sdna(srna, "Sequence"); + + prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Sound"); + RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this sequence."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "strip->stripdata->name"); + RNA_def_property_ui_text(prop, "Filename", ""); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoundSequence_filename_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH); + RNA_def_property_string_sdna(prop, NULL, "strip->dir"); + RNA_def_property_ui_text(prop, "Directory", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + rna_def_input(srna); + + RNA_def_struct_sdna_from(srna, "SoundHandle", "sound_handle"); + + prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "volume"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Volume", "Playback volume of the sound"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_effect(BlenderRNA *brna) +{ + StructRNA *srna; + + srna = RNA_def_struct(brna, "EffectSequence", "Sequence"); + RNA_def_struct_ui_text(srna, "Effect Sequence", "Sequence strip applying an effect on the images created by other strips."); + RNA_def_struct_sdna(srna, "Sequence"); + + rna_def_proxy(srna); +} + +static void rna_def_plugin(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "PluginSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "Plugin Sequence", "Sequence strip applying an effect, loaded from an external plugin."); + RNA_def_struct_sdna_from(srna, "PluginSeq", "plugin"); + + prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "name"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Filename", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + /* plugin properties need custom wrapping code like ID properties */ +} + +static void rna_def_wipe(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem wipe_type_items[]= { + {0, "SINGLE", 0, "Single", ""}, + {1, "DOUBLE", 0, "Double", ""}, + /* not used yet {2, "BOX", 0, "Box", ""}, */ + /* not used yet {3, "CROSS", 0, "Cross", ""}, */ + {4, "IRIS", 0, "Iris", ""}, + {5, "CLOCK", 0, "Clock", ""}, + {0, NULL, 0, NULL, NULL} + }; + + static const EnumPropertyItem wipe_direction_items[]= { + {0, "OUT", 0, "Out", ""}, + {1, "IN", 0, "In", ""}, + {0, NULL, 0, NULL, NULL} + }; + + srna = RNA_def_struct(brna, "WipeSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "Wipe Sequence", "Sequence strip creating a wipe transition."); + RNA_def_struct_sdna_from(srna, "WipeVars", "effectdata"); + + prop= RNA_def_property(srna, "blur_width", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "edgeWidth"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Blur Width", "Width of the blur edge, in percentage relative to the image size."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "angle"); + RNA_def_property_range(prop, -90.0f, 90.0f); + RNA_def_property_ui_text(prop, "Angle", "Edge angle."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "forward"); + RNA_def_property_enum_items(prop, wipe_direction_items); + RNA_def_property_ui_text(prop, "Direction", "Wipe direction."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "transition_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "wipetype"); + RNA_def_property_enum_items(prop, wipe_type_items); + RNA_def_property_ui_text(prop, "Transition Type", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_glow(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "GlowSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "Glow Sequence", "Sequence strip creating a glow effect."); + RNA_def_struct_sdna_from(srna, "GlowVars", "effectdata"); + + prop= RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "fMini"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Threshold", "Minimum intensity to trigger a glow"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "clamp", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "fClamp"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Clamp", "rightness limit of intensity."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "boost_factor", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "fBoost"); + RNA_def_property_range(prop, 0.0f, 10.0f); + RNA_def_property_ui_text(prop, "Boost Factor", "Brightness multiplier."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "blur_distance", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "dDist"); + RNA_def_property_range(prop, 0.5f, 20.0f); + RNA_def_property_ui_text(prop, "Blur Distance", "Radius of glow effect."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "dQuality"); + RNA_def_property_range(prop, 1, 5); + RNA_def_property_ui_text(prop, "Quality", "Accuracy of the blur effect."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "only_boost", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "bNoComp", 0); + RNA_def_property_ui_text(prop, "Only Boost", "Show the glow buffer only."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_transform(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem interpolation_items[]= { + {0, "NONE", 0, "None", "No interpolation."}, + {1, "BILINEAR", 0, "Bilinear", "Bilinear interpolation."}, + {2, "BICUBIC", 0, "Bicubic", "Bicubic interpolation."}, + {0, NULL, 0, NULL, NULL} + }; + + static const EnumPropertyItem translation_unit_items[]= { + {0, "PIXELS", 0, "Pixels", ""}, + {1, "PERCENT", 0, "Percent", ""}, + {0, NULL, 0, NULL, NULL} + }; + + srna = RNA_def_struct(brna, "TransformSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "Transform Sequence", "Sequence strip applying affine transformations to other strips."); + RNA_def_struct_sdna_from(srna, "TransformVars", "effectdata"); + + prop= RNA_def_property(srna, "scale_start_x", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "ScalexIni"); + RNA_def_property_ui_text(prop, "Scale X", ""); + RNA_def_property_ui_range(prop, 0, 10, 3, 10); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "scale_start_y", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "ScaleyIni"); + RNA_def_property_ui_text(prop, "Scale Y", ""); + RNA_def_property_ui_range(prop, 0, 10, 3, 10); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0); + RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "translate_start_x", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "xIni"); + RNA_def_property_ui_text(prop, "Translate X", ""); + RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "translate_start_y", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "yIni"); + RNA_def_property_ui_text(prop, "Translate Y", ""); + RNA_def_property_ui_range(prop, -500.0f, 500.0f, 3, 10); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "rotation_start", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "rotIni"); + RNA_def_property_range(prop, -360.0f, 360.0f); + RNA_def_property_ui_text(prop, "Rotation", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "translation_unit", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "percent"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ + RNA_def_property_enum_items(prop, translation_unit_items); + RNA_def_property_ui_text(prop, "Translation Unit", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, interpolation_items); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* not meant to be animated */ + RNA_def_property_ui_text(prop, "Interpolation", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_solid_color(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "ColorSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single color."); + RNA_def_struct_sdna_from(srna, "SolidColorVars", "effectdata"); + + prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "col"); + RNA_def_property_ui_text(prop, "Color", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +static void rna_def_speed_control(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "SpeedControlSequence", "EffectSequence"); + RNA_def_struct_ui_text(srna, "SpeedControl Sequence", "Sequence strip to control the speed of other strips."); + RNA_def_struct_sdna_from(srna, "SpeedControlVars", "effectdata"); + + prop= RNA_def_property(srna, "global_speed", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "globalSpeed"); + RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); /* seq->facf0 is used to animate this */ + RNA_def_property_ui_text(prop, "Global Speed", ""); + RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "curve_velocity", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_INTEGRATE); + RNA_def_property_ui_text(prop, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "frame_blending", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_BLEND); + RNA_def_property_ui_text(prop, "Frame Blending", "Blend two frames into the target for a smoother result."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "curve_compress_y", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_COMPRESS_IPO_Y); + RNA_def_property_ui_text(prop, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); +} + +void RNA_def_sequencer(BlenderRNA *brna) +{ + rna_def_strip_element(brna); + rna_def_strip_proxy(brna); + rna_def_strip_color_balance(brna); + rna_def_strip_crop(brna); + rna_def_strip_transform(brna); + + rna_def_sequence(brna); + rna_def_editor(brna); + + rna_def_image(brna); + rna_def_meta(brna); + rna_def_scene(brna); + rna_def_movie(brna); + rna_def_sound(brna); + rna_def_effect(brna); + rna_def_plugin(brna); + rna_def_wipe(brna); + rna_def_glow(brna); + rna_def_transform(brna); + rna_def_solid_color(brna); + rna_def_speed_control(brna); +} + +#endif + -- cgit v1.2.3 From 3449d3f9b3db78a89ce033f77b38fa6f75e41342 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 16:20:18 +0000 Subject: use python3 syntax for defining a set. --- release/scripts/io/engine_render_pov.py | 2 +- release/scripts/io/netrender/ui.py | 10 ++++---- release/scripts/modules/retopo.py | 4 ++-- release/scripts/modules/rigify/__init__.py | 4 ++-- release/scripts/ui/properties_material.py | 38 +++++++++++++++--------------- release/scripts/ui/properties_render.py | 20 ++++++++-------- release/scripts/ui/properties_scene.py | 6 ++--- release/scripts/ui/properties_world.py | 12 +++++----- 8 files changed, 48 insertions(+), 48 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index d5f02fa3b6a..aa8fb29756a 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -868,7 +868,7 @@ class RenderButtonsPanel(bpy.types.Panel): class RENDER_PT_povray_radiosity(RenderButtonsPanel): bl_label = "Radiosity" - COMPAT_ENGINES = set(['POVRAY_RENDER']) + COMPAT_ENGINES = {'POVRAY_RENDER'} def draw_header(self, context): scene = context.scene diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index fd9ce0fcc32..ab3844d5597 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -50,7 +50,7 @@ class RenderButtonsPanel(bpy.types.Panel): @rnaType class RENDER_PT_network_settings(RenderButtonsPanel): bl_label = "Network Settings" - COMPAT_ENGINES = set(['NET_RENDER']) + COMPAT_ENGINES = {'NET_RENDER'} def draw(self, context): layout = self.layout @@ -76,7 +76,7 @@ class RENDER_PT_network_settings(RenderButtonsPanel): @rnaType class RENDER_PT_network_job(RenderButtonsPanel): bl_label = "Job Settings" - COMPAT_ENGINES = set(['NET_RENDER']) + COMPAT_ENGINES = {'NET_RENDER'} def poll(self, context): scene = context.scene @@ -105,7 +105,7 @@ class RENDER_PT_network_job(RenderButtonsPanel): @rnaType class RENDER_PT_network_slaves(RenderButtonsPanel): bl_label = "Slaves Status" - COMPAT_ENGINES = set(['NET_RENDER']) + COMPAT_ENGINES = {'NET_RENDER'} def poll(self, context): scene = context.scene @@ -141,7 +141,7 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): @rnaType class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): bl_label = "Slaves Blacklist" - COMPAT_ENGINES = set(['NET_RENDER']) + COMPAT_ENGINES = {'NET_RENDER'} def poll(self, context): scene = context.scene @@ -176,7 +176,7 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): @rnaType class RENDER_PT_network_jobs(RenderButtonsPanel): bl_label = "Jobs" - COMPAT_ENGINES = set(['NET_RENDER']) + COMPAT_ENGINES = {'NET_RENDER'} def poll(self, context): scene = context.scene diff --git a/release/scripts/modules/retopo.py b/release/scripts/modules/retopo.py index e554881c87b..15c4c504b32 100644 --- a/release/scripts/modules/retopo.py +++ b/release/scripts/modules/retopo.py @@ -99,11 +99,11 @@ class Hub(object): return True for i, l_a in enumerate(self.links): - links_a = set([l.index for l in l_a.links]) + links_a = {l.index for l in l_a.links} for j in range(i): l_b = self.links[j] - links_b = set([l.index for l in l_b.links]) + links_b = {l.index for l in l_b.links} isect = links_a.intersection(links_b) if len(isect) == 2: diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 519784e8507..9e59f0965e0 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -233,7 +233,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # leg.ik and arm.fk could not be blended. results = OrderedDict() - bone_names_pre = set([bone.name for bone in arm.bones]) + bone_names_pre = {bone.name for bone in arm.bones} for type_name, type_func in bone_typeinfos[bone_name]: # this bones definition of the current typeinfo @@ -260,7 +260,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): blend_bone_list(obj, definition, result_submod[0], result_submod[1], target_bone=bone_name) - bone_names_post = set([bone.name for bone in arm.bones]) + bone_names_post = {bone.name for bone in arm.bones} # Store which bones were created from this one bone_genesis[bone_name] = list(bone_names_post - bone_names_pre) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 64e36a26961..a48b3b1a30a 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -56,7 +56,7 @@ class MaterialButtonsPanel(bpy.types.Panel): class MATERIAL_PT_preview(MaterialButtonsPanel): bl_label = "Preview" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): self.layout.template_preview(context.material) @@ -65,7 +65,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel): class MATERIAL_PT_context_material(MaterialButtonsPanel): bl_label = "" bl_show_header = False - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): # An exception, dont call the parent poll func because @@ -127,7 +127,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): class MATERIAL_PT_shading(MaterialButtonsPanel): bl_label = "Shading" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): mat = active_node_mat(context.material) @@ -166,7 +166,7 @@ class MATERIAL_PT_shading(MaterialButtonsPanel): class MATERIAL_PT_strand(MaterialButtonsPanel): bl_label = "Strand" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = context.material @@ -214,7 +214,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel): class MATERIAL_PT_physics(MaterialButtonsPanel): bl_label = "Physics" - COMPAT_ENGINES = set(['BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -238,7 +238,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel): class MATERIAL_PT_options(MaterialButtonsPanel): bl_label = "Options" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): mat = active_node_mat(context.material) @@ -284,7 +284,7 @@ class MATERIAL_PT_options(MaterialButtonsPanel): class MATERIAL_PT_shadow(MaterialButtonsPanel): bl_label = "Shadow" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): mat = active_node_mat(context.material) @@ -320,7 +320,7 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel): class MATERIAL_PT_diffuse(MaterialButtonsPanel): bl_label = "Diffuse" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): mat = active_node_mat(context.material) @@ -391,7 +391,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): class MATERIAL_PT_specular(MaterialButtonsPanel): bl_label = "Specular" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def poll(self, context): mat = active_node_mat(context.material) @@ -461,7 +461,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel): class MATERIAL_PT_sss(MaterialButtonsPanel): bl_label = "Subsurface Scattering" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = active_node_mat(context.material) @@ -513,7 +513,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): class MATERIAL_PT_mirror(MaterialButtonsPanel): bl_label = "Mirror" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = active_node_mat(context.material) @@ -572,7 +572,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel): class MATERIAL_PT_transp(MaterialButtonsPanel): bl_label = "Transparency" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = active_node_mat(context.material) @@ -638,7 +638,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): class MATERIAL_PT_halo(MaterialButtonsPanel): bl_label = "Halo" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = context.material @@ -688,7 +688,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel): class MATERIAL_PT_flare(MaterialButtonsPanel): bl_label = "Flare" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): mat = context.material @@ -750,7 +750,7 @@ class VolumeButtonsPanel(bpy.types.Panel): class MATERIAL_PT_volume_density(VolumeButtonsPanel): bl_label = "Density" bl_default_closed = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -770,7 +770,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel): class MATERIAL_PT_volume_shading(VolumeButtonsPanel): bl_label = "Shading" bl_default_closed = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -798,7 +798,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel): class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): bl_label = "Lighting" bl_default_closed = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -835,7 +835,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): class MATERIAL_PT_volume_transp(VolumeButtonsPanel): bl_label = "Transparency" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -852,7 +852,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel): class MATERIAL_PT_volume_integration(VolumeButtonsPanel): bl_label = "Integration" bl_default_closed = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index fbb402efaaa..ed703a0403e 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -42,7 +42,7 @@ class RenderButtonsPanel(bpy.types.Panel): class RENDER_PT_render(RenderButtonsPanel): bl_label = "Render" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -65,7 +65,7 @@ class RENDER_PT_render(RenderButtonsPanel): class RENDER_PT_layers(RenderButtonsPanel): bl_label = "Layers" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -162,7 +162,7 @@ class RENDER_PT_layers(RenderButtonsPanel): class RENDER_PT_shading(RenderButtonsPanel): bl_label = "Shading" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -188,7 +188,7 @@ class RENDER_PT_shading(RenderButtonsPanel): class RENDER_PT_performance(RenderButtonsPanel): bl_label = "Performance" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -232,7 +232,7 @@ class RENDER_PT_performance(RenderButtonsPanel): class RENDER_PT_post_processing(RenderButtonsPanel): bl_label = "Post Processing" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -275,7 +275,7 @@ class RENDER_PT_post_processing(RenderButtonsPanel): class RENDER_PT_output(RenderButtonsPanel): bl_label = "Output" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -358,7 +358,7 @@ class RENDER_PT_output(RenderButtonsPanel): class RENDER_PT_encoding(RenderButtonsPanel): bl_label = "Encoding" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): rd = context.scene.render_data @@ -427,7 +427,7 @@ class RENDER_PT_encoding(RenderButtonsPanel): class RENDER_PT_antialiasing(RenderButtonsPanel): bl_label = "Anti-Aliasing" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): rd = context.scene.render_data @@ -455,7 +455,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel): class RENDER_PT_dimensions(RenderButtonsPanel): bl_label = "Dimensions" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -504,7 +504,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel): class RENDER_PT_stamp(RenderButtonsPanel): bl_label = "Stamp" bl_default_closed = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): rd = context.scene.render_data diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index cce49172428..c059339c14e 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -33,7 +33,7 @@ class SceneButtonsPanel(bpy.types.Panel): class SCENE_PT_scene(SceneButtonsPanel): bl_label = "Scene" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -50,7 +50,7 @@ class SCENE_PT_scene(SceneButtonsPanel): class SCENE_PT_unit(SceneButtonsPanel): bl_label = "Units" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -155,7 +155,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel): class SCENE_PT_physics(SceneButtonsPanel): bl_label = "Gravity" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): self.layout.prop(context.scene, "use_gravity", text="") diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index 9adc8d0bad4..b23a0dffbad 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -35,7 +35,7 @@ class WorldButtonsPanel(bpy.types.Panel): class WORLD_PT_preview(WorldButtonsPanel): bl_label = "Preview" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): self.layout.template_preview(context.world) @@ -44,7 +44,7 @@ class WORLD_PT_preview(WorldButtonsPanel): class WORLD_PT_context_world(WorldButtonsPanel): bl_label = "" bl_show_header = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): rd = context.scene.render_data @@ -71,7 +71,7 @@ class WORLD_PT_context_world(WorldButtonsPanel): class WORLD_PT_world(WorldButtonsPanel): bl_label = "World" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -99,7 +99,7 @@ class WORLD_PT_world(WorldButtonsPanel): class WORLD_PT_mist(WorldButtonsPanel): bl_label = "Mist" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): world = context.world @@ -129,7 +129,7 @@ class WORLD_PT_mist(WorldButtonsPanel): class WORLD_PT_stars(WorldButtonsPanel): bl_label = "Stars" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): world = context.world @@ -157,7 +157,7 @@ class WORLD_PT_stars(WorldButtonsPanel): class WORLD_PT_ambient_occlusion(WorldButtonsPanel): bl_label = "Ambient Occlusion" - COMPAT_ENGINES = set(['BLENDER_RENDER']) + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): world = context.world -- cgit v1.2.3 From ca16488e813ee58491ccca79532a48d098aaacd5 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 13 Dec 2009 17:46:30 +0000 Subject: MSVC 9 compile fixes and cleanups * added renamed files in revision 25337 * renamed BLI_util.h -> BLI_path_util.h for consistency * cleanup of #includes: removed BLI_blenlib.h in favour of direct includes of the needed headerfiles in a few places. * removed debug print in sequencer.c * added missing include in blenkernel/blender.c -> bad dependency, needs to be fixed still --- .../blender/blenkernel/BKE_blenkernel.vcproj | 16 +-- .../blender/blenlib/BLI_blenlib.vcproj | 12 +- .../blender/makesrna/RNA_makesrna.vcproj | 2 +- projectfiles_vc9/blender/makesrna/RNA_rna.vcproj | 2 +- source/blender/blenkernel/intern/blender.c | 2 + source/blender/blenkernel/intern/sequencer.c | 13 +- source/blender/blenlib/BLI_blenlib.h | 2 +- source/blender/blenlib/BLI_path_util.h | 154 +++++++++++++++++++++ source/blender/blenlib/BLI_util.h | 154 --------------------- source/blender/blenlib/intern/BLI_bfile.c | 2 +- source/blender/blenlib/intern/path_util.c | 7 +- source/blender/blenlib/intern/scanfill.c | 5 +- source/blender/blenlib/intern/storage.c | 10 +- source/blender/blenlib/intern/winstuff.c | 4 +- source/blender/collada/DocumentExporter.cpp | 2 +- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/editors/object/object_modifier.c | 2 +- source/blender/python/intern/bpy_interface.c | 2 +- 18 files changed, 196 insertions(+), 197 deletions(-) create mode 100644 source/blender/blenlib/BLI_path_util.h delete mode 100644 source/blender/blenlib/BLI_util.h diff --git a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj index 2656bf09ee7..c537f4f6f84 100644 --- a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj +++ b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj @@ -43,7 +43,7 @@ + + @@ -631,10 +635,6 @@ RelativePath="..\..\..\source\blender\blenlib\intern\time.c" > - - @@ -780,10 +780,6 @@ RelativePath="..\..\..\source\blender\blenlib\BLI_threads.h" > - - diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj index 2a8e25d02be..c358c91c3f6 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj @@ -806,7 +806,7 @@ > #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" -#include "BLI_threads.h" -#include + #include "BKE_context.h" #include "BKE_sound.h" @@ -472,8 +475,6 @@ void calc_sequence_disp(Sequence *seq) void calc_sequence(Sequence *seq) { - printf(" ddd %s\n", seq->name); - Sequence *seqm; int min, max; diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index cb5f68ed1e0..70f15f0f3af 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -78,7 +78,7 @@ extern "C" { #include "BLI_string.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BLI_storage.h" diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h new file mode 100644 index 00000000000..ca483903d46 --- /dev/null +++ b/source/blender/blenlib/BLI_path_util.h @@ -0,0 +1,154 @@ +/** + * blenlib/BLI_storage_types.h + * + * Some types for dealing with directories + * + * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ +#ifndef BLI_UTIL_H +#define BLI_UTIL_H + +/* XXX doesn't seem to be used, marded for removal +#define mallocstructN(x,y,name) (x*)MEM_mallocN((y)* sizeof(x),name) +#define callocstructN(x,y,name) (x*)MEM_callocN((y)* sizeof(x),name) +*/ + +struct ListBase; +struct direntry; + +char *BLI_gethome(void); +char *BLI_gethome_folder(char *folder_name, int flag); + +/* BLI_gethome_folder flag */ +#define BLI_GETHOME_LOCAL 1<<1 /* relative location for portable binaries */ +#define BLI_GETHOME_SYSTEM 1<<2 /* system location, or set from the BLENDERPATH env variable (UNIX only) */ +#define BLI_GETHOME_USER 1<<3 /* home folder ~/.blender */ +#define BLI_GETHOME_ALL (BLI_GETHOME_SYSTEM|BLI_GETHOME_LOCAL|BLI_GETHOME_USER) + +void BLI_setenv(const char *env, const char *val); +void BLI_setenv_if_new(const char *env, const char* val); + +void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file); +void BLI_make_exist(char *dir); +void BLI_make_existing_file(char *name); +void BLI_split_dirfile(char *string, char *dir, char *file); +void BLI_split_dirfile_basic(const char *string, char *dir, char *file); +void BLI_join_dirfile(char *string, const char *dir, const char *file); +void BLI_getlastdir(const char* dir, char *last, int maxlen); +int BLI_testextensie(const char *str, const char *ext); +void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len); +void BLI_newname(char * name, int add); +int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen); +void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic); +void BLI_splitdirstring(char *di,char *fi); + +/* make sure path separators conform to system one */ +void BLI_clean(char *path); + +/** + * dir can be any input, like from buttons, and this function + * converts it to a regular full path. + * Also removes garbage from directory paths, like /../ or double slashes etc + */ +void BLI_cleanup_file(const char *relabase, char *dir); +void BLI_cleanup_dir(const char *relabase, char *dir); /* same as above but adds a trailing slash */ + +/* go back one directory */ +int BLI_parent_dir(char *path); + +/* return whether directory is root and thus has no parent dir */ +int BLI_has_parent(char *path); + + /** + * Blender's path code replacement function. + * Bases @a path strings leading with "//" by the + * directory @a basepath, and replaces instances of + * '#' with the @a framenum. Results are written + * back into @a path. + * + * @a path The path to convert + * @a basepath The directory to base relative paths with. + * @a framenum The framenumber to replace the frame code with. + * @retval Returns true if the path was relative (started with "//"). + */ +int BLI_convertstringcode(char *path, const char *basepath); +int BLI_convertstringframe(char *path, int frame); +int BLI_convertstringcwd(char *path); + +void BLI_makestringcode(const char *relfile, char *file); + + /** + * Change every @a from in @a string into @a to. The + * result will be in @a string + * + * @a string The string to work on + * @a from The character to replace + * @a to The character to replace with + */ +void BLI_char_switch(char *string, char from, char to); + +/** + * Checks if name is a fully qualified filename to an executable. + * If not it searches $PATH for the file. On Windows it also + * adds the correct extension (.com .exe etc) from + * $PATHEXT if necessary. Also on Windows it translates + * the name to its 8.3 version to prevent problems with + * spaces and stuff. Final result is returned in fullname. + * + * @param fullname The full path and full name of the executable + * @param name The name of the executable (usually argv[0]) to be checked + */ +void BLI_where_am_i(char *fullname, const char *name); + +char *get_install_dir(void); + /** + * Gets the temp directory when blender first runs. + * If the default path is not found, use try $TEMP + * + * Also make sure the temp dir has a trailing slash + * + * @param fullname The full path to the temp directory + */ +void BLI_where_is_temp(char *fullname, int usertemp); + + + /** + * determines the full path to the application bundle on OS X + * + * @return path to application bundle + */ +#ifdef __APPLE__ +char* BLI_getbundle(void); +#endif + +#ifdef WITH_ICONV +void BLI_string_to_utf8(char *original, char *utf_8, const char *code); +#endif + +#endif + diff --git a/source/blender/blenlib/BLI_util.h b/source/blender/blenlib/BLI_util.h deleted file mode 100644 index ca483903d46..00000000000 --- a/source/blender/blenlib/BLI_util.h +++ /dev/null @@ -1,154 +0,0 @@ -/** - * blenlib/BLI_storage_types.h - * - * Some types for dealing with directories - * - * $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ -#ifndef BLI_UTIL_H -#define BLI_UTIL_H - -/* XXX doesn't seem to be used, marded for removal -#define mallocstructN(x,y,name) (x*)MEM_mallocN((y)* sizeof(x),name) -#define callocstructN(x,y,name) (x*)MEM_callocN((y)* sizeof(x),name) -*/ - -struct ListBase; -struct direntry; - -char *BLI_gethome(void); -char *BLI_gethome_folder(char *folder_name, int flag); - -/* BLI_gethome_folder flag */ -#define BLI_GETHOME_LOCAL 1<<1 /* relative location for portable binaries */ -#define BLI_GETHOME_SYSTEM 1<<2 /* system location, or set from the BLENDERPATH env variable (UNIX only) */ -#define BLI_GETHOME_USER 1<<3 /* home folder ~/.blender */ -#define BLI_GETHOME_ALL (BLI_GETHOME_SYSTEM|BLI_GETHOME_LOCAL|BLI_GETHOME_USER) - -void BLI_setenv(const char *env, const char *val); -void BLI_setenv_if_new(const char *env, const char* val); - -void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file); -void BLI_make_exist(char *dir); -void BLI_make_existing_file(char *name); -void BLI_split_dirfile(char *string, char *dir, char *file); -void BLI_split_dirfile_basic(const char *string, char *dir, char *file); -void BLI_join_dirfile(char *string, const char *dir, const char *file); -void BLI_getlastdir(const char* dir, char *last, int maxlen); -int BLI_testextensie(const char *str, const char *ext); -void BLI_uniquename(struct ListBase *list, void *vlink, const char defname[], char delim, short name_offs, short len); -void BLI_newname(char * name, int add); -int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen); -void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic); -void BLI_splitdirstring(char *di,char *fi); - -/* make sure path separators conform to system one */ -void BLI_clean(char *path); - -/** - * dir can be any input, like from buttons, and this function - * converts it to a regular full path. - * Also removes garbage from directory paths, like /../ or double slashes etc - */ -void BLI_cleanup_file(const char *relabase, char *dir); -void BLI_cleanup_dir(const char *relabase, char *dir); /* same as above but adds a trailing slash */ - -/* go back one directory */ -int BLI_parent_dir(char *path); - -/* return whether directory is root and thus has no parent dir */ -int BLI_has_parent(char *path); - - /** - * Blender's path code replacement function. - * Bases @a path strings leading with "//" by the - * directory @a basepath, and replaces instances of - * '#' with the @a framenum. Results are written - * back into @a path. - * - * @a path The path to convert - * @a basepath The directory to base relative paths with. - * @a framenum The framenumber to replace the frame code with. - * @retval Returns true if the path was relative (started with "//"). - */ -int BLI_convertstringcode(char *path, const char *basepath); -int BLI_convertstringframe(char *path, int frame); -int BLI_convertstringcwd(char *path); - -void BLI_makestringcode(const char *relfile, char *file); - - /** - * Change every @a from in @a string into @a to. The - * result will be in @a string - * - * @a string The string to work on - * @a from The character to replace - * @a to The character to replace with - */ -void BLI_char_switch(char *string, char from, char to); - -/** - * Checks if name is a fully qualified filename to an executable. - * If not it searches $PATH for the file. On Windows it also - * adds the correct extension (.com .exe etc) from - * $PATHEXT if necessary. Also on Windows it translates - * the name to its 8.3 version to prevent problems with - * spaces and stuff. Final result is returned in fullname. - * - * @param fullname The full path and full name of the executable - * @param name The name of the executable (usually argv[0]) to be checked - */ -void BLI_where_am_i(char *fullname, const char *name); - -char *get_install_dir(void); - /** - * Gets the temp directory when blender first runs. - * If the default path is not found, use try $TEMP - * - * Also make sure the temp dir has a trailing slash - * - * @param fullname The full path to the temp directory - */ -void BLI_where_is_temp(char *fullname, int usertemp); - - - /** - * determines the full path to the application bundle on OS X - * - * @return path to application bundle - */ -#ifdef __APPLE__ -char* BLI_getbundle(void); -#endif - -#ifdef WITH_ICONV -void BLI_string_to_utf8(char *original, char *utf_8, const char *code); -#endif - -#endif - diff --git a/source/blender/blenlib/intern/BLI_bfile.c b/source/blender/blenlib/intern/BLI_bfile.c index d9f6c8ad96f..8e3235bbf23 100644 --- a/source/blender/blenlib/intern/BLI_bfile.c +++ b/source/blender/blenlib/intern/BLI_bfile.c @@ -41,7 +41,7 @@ #include "MEM_guardedalloc.h" #include "BKE_utildefines.h" #include "BKE_blender.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BLI_fileops.h" #include "BLI_storage.h" #include "BLI_bfile.h" diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index bf7a4f77f9e..4f987fcd31e 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -42,12 +42,13 @@ #include "DNA_listBase.h" #include "DNA_userdef_types.h" -#include "BLI_blenlib.h" +#include "BLI_dynamiclist.h" +#include "BLI_fileops.h" +#include "BLI_path_util.h" +#include "BLI_string.h" #include "BLI_storage.h" #include "BLI_storage_types.h" -#include "BLI_dynamiclist.h" -#include "BLI_util.h" #include "BKE_utildefines.h" diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c index e54382c9392..32e1c7c810e 100644 --- a/source/blender/blenlib/intern/scanfill.c +++ b/source/blender/blenlib/intern/scanfill.c @@ -34,12 +34,11 @@ #include "MEM_guardedalloc.h" -#include "BLI_blenlib.h" - -#include "BLI_util.h" #include "DNA_listBase.h" #include "DNA_mesh_types.h" + #include "BLI_editVert.h" +#include "BLI_listbase.h" #include "BLI_math.h" #include "BLI_scanfill.h" #include "BLI_callbacks.h" diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index dbf1f5100a6..c830e5fc2c8 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -87,13 +87,13 @@ #include "MEM_guardedalloc.h" #include "DNA_listBase.h" -#include "BLI_blenlib.h" -#include "BLI_storage.h" -#include "BLI_storage_types.h" -#include "BLI_util.h" +#include "BLI_listbase.h" #include "BLI_linklist.h" - +#include "BLI_path_util.h" +#include "BLI_storage.h" +#include "BLI_storage_types.h" +#include "BLI_string.h" #include "BKE_utildefines.h" /* vars: */ diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c index 16295fc2680..107ece8ebed 100644 --- a/source/blender/blenlib/intern/winstuff.c +++ b/source/blender/blenlib/intern/winstuff.c @@ -39,8 +39,8 @@ #include "MEM_guardedalloc.h" -#include "BLI_blenlib.h" -#include "BLI_util.h" +#include "BLI_path_util.h" +#include "BLI_string.h" #define WIN32_SKIP_HKEY_PROTECTION // need to use HKEY #include "BLI_winstuff.h" diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index c3550dfd408..d2543423097 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -21,7 +21,7 @@ extern "C" { #include "BKE_DerivedMesh.h" #include "BKE_fcurve.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BLI_fileops.h" #include "ED_keyframing.h" } diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 9ebcc8b191f..575160ff84e 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -52,7 +52,7 @@ extern "C" #include "BKE_texture.h" #include "BKE_fcurve.h" #include "BKE_depsgraph.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BKE_displist.h" #include "BLI_math.h" #include "BKE_scene.h" diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index a1e70c011fe..06c31e9f1a9 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -44,7 +44,7 @@ #include "BLI_math.h" #include "BLI_listbase.h" #include "BLI_string.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BKE_action.h" #include "BKE_curve.h" diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 7b44f8e6ba1..44e3c5a2dd5 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -54,7 +54,7 @@ #include "MEM_guardedalloc.h" -#include "BLI_util.h" +#include "BLI_path_util.h" #include "BLI_storage.h" #include "BLI_fileops.h" #include "BLI_string.h" -- cgit v1.2.3 From d31d6e71e27db28dde976d0b2e574dced5a464d2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 19:25:05 +0000 Subject: added include path for bad level call --- source/blender/blenkernel/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 7bd6314097b..b1cbd16512e 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -34,6 +34,7 @@ SET(INC ../nodes ../../../extern/glew/include ../gpu ../makesrna ../../../intern/smoke/extern ../../../intern/bsp/extern ../blenfont ../../../intern/audaspace/intern + ../../../source/blender/windowmanager # XXX - BAD LEVEL CALL WM_api.h ${ZLIB_INC} ) -- cgit v1.2.3 From c8fe0daa918799738d409f2cd331bb39208e86e1 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 13 Dec 2009 19:45:23 +0000 Subject: fixing scons and makefile compile. * added include path due to added bad level #include "WM_api.h" --- source/blender/blenkernel/SConscript | 3 ++- source/blender/blenkernel/intern/Makefile | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript index 81b74cc9c42..508ed58165f 100644 --- a/source/blender/blenkernel/SConscript +++ b/source/blender/blenkernel/SConscript @@ -3,7 +3,8 @@ Import ('env') sources = env.Glob('intern/*.c') -incs = '. #/intern/guardedalloc #/intern/memutil ../editors/include ../blenlib ../blenfont ../makesdna' +incs = '. #/intern/guardedalloc #/intern/memutil ../editors/include' +incs += ' ../blenlib ../blenfont ../makesdna ../windowmanager' incs += ' ../render/extern/include #/intern/decimation/extern ../makesrna' incs += ' ../imbuf ../ikplugin ../avi #/intern/elbeem/extern ../nodes' incs += ' #/intern/iksolver/extern ../blenloader' diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile index 26b9b9ef0dd..95c82d31890 100644 --- a/source/blender/blenkernel/intern/Makefile +++ b/source/blender/blenkernel/intern/Makefile @@ -53,6 +53,8 @@ CPPFLAGS += -I../../blenlib CPPFLAGS += -I../../blenloader CPPFLAGS += -I../../python CPPFLAGS += -I../../blenfont +# This is bad level, remove eventually +CPPFLAGS += -I../../windowmanager # also avi is used CPPFLAGS += -I../../avi CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -- cgit v1.2.3 From 6b207579c87340e470c153d2cd077d8f0012f492 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 20:08:57 +0000 Subject: invalid value for BGE PyObjects was inverted --- source/gameengine/Expressions/PyObjectPlus.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index 54a33b76efd..903ac70c27a 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -256,7 +256,7 @@ PyAttributeDef PyObjectPlus::Attributes[] = { PyObject* PyObjectPlus::pyattr_get_invalid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { - return PyBool_FromLong(self_v ? 1:0); + return PyBool_FromLong(self_v ? 0:1); } /* note, this is called as a python 'getset, where the PyAttributeDef is the closure */ -- cgit v1.2.3 From 0efa09a67676f0f933b9837eec180ca024c06906 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 13 Dec 2009 22:24:30 +0000 Subject: netrender balancing fix (accessing the list as it is being sorted is not ok) Caused balancing to error when there was only one job (and more generally, to have a slightly wrong result) --- release/scripts/io/netrender/balancing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/io/netrender/balancing.py b/release/scripts/io/netrender/balancing.py index aa0ffcd3f67..410279f6957 100644 --- a/release/scripts/io/netrender/balancing.py +++ b/release/scripts/io/netrender/balancing.py @@ -72,7 +72,8 @@ class Balancer: def balance(self, jobs): if jobs: - jobs.sort(key=self.sortKey) + # use inline copy to make sure the list is still accessible while sorting + jobs[:] = sorted(jobs, key=self.sortKey) return jobs[0] else: return None -- cgit v1.2.3 From 9f965ba62bc26c8c8f66c473f70d288800aec8d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Dec 2009 22:48:11 +0000 Subject: pep8 warnings, remove unused imports --- release/scripts/io/engine_render_pov.py | 238 ++++++++++++++------------ release/scripts/io/export_fbx.py | 82 ++++----- release/scripts/io/export_mdd.py | 45 +++-- release/scripts/modules/rigify/copy.py | 3 +- release/scripts/modules/rigify/finger_curl.py | 2 +- release/scripts/op/console_shell.py | 3 - release/scripts/op/mesh.py | 4 +- release/scripts/op/uvcalc_smart_project.py | 2 +- release/scripts/op/vertexpaint_dirt.py | 29 ++-- release/scripts/op/wm.py | 21 --- 10 files changed, 215 insertions(+), 214 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index aa8fb29756a..3ad75f41709 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -33,7 +33,8 @@ if pltfrm.architecture()[0] == '64bit': else: bitness = 32 -def write_pov(filename, scene=None, info_callback = None): + +def write_pov(filename, scene=None, info_callback=None): file = open(filename, 'w') # Only for testing @@ -52,17 +53,16 @@ def write_pov(filename, scene=None, info_callback = None): i = 1 while name in nameSeq: name = '%s_%.3d' % (name_orig, i) - i+=1 + i += 1 return name - def writeMatrix(matrix): file.write('\tmatrix <%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f>\n' %\ - (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2]) ) + (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2])) def writeObjectMaterial(material): - if material and material.transparency_method=='RAYTRACE': + if material and material.transparency_method == 'RAYTRACE': file.write('\tinterior { ior %.6f }\n' % material.raytrace_transparency.ior) # Other interior args @@ -75,6 +75,7 @@ def write_pov(filename, scene=None, info_callback = None): materialNames = {} DEF_MAT_NAME = 'Default' + def writeMaterial(material): # Assumes only called once on each material @@ -95,18 +96,18 @@ def write_pov(filename, scene=None, info_callback = None): #file.write('\tambient rgb <%.3g, %.3g, %.3g>\n' % tuple([c*material.ambient for c in world.ambient_color])) # povray blends the global value # map hardness between 0.0 and 1.0 - roughness = ((1.0 - ((material.specular_hardness-1.0)/510.0))) + roughness = ((1.0 - ((material.specular_hardness - 1.0) / 510.0))) # scale from 0.0 to 0.1 roughness *= 0.1 # add a small value because 0.0 is invalid - roughness += (1/511.0) + roughness += (1 / 511.0) file.write('\troughness %.3g\n' % roughness) # 'phong 70.0 ' if material.raytrace_mirror.enabled: - raytrace_mirror= material.raytrace_mirror + raytrace_mirror = material.raytrace_mirror if raytrace_mirror.reflect_factor: file.write('\treflection {\n') file.write('\t\trgb <%.3g, %.3g, %.3g>' % tuple(material.mirror_color)) @@ -136,14 +137,14 @@ def write_pov(filename, scene=None, info_callback = None): matrix = camera.matrix # compute resolution - Qsize=float(render.resolution_x)/float(render.resolution_y) + Qsize = float(render.resolution_x) / float(render.resolution_y) file.write('camera {\n') file.write('\tlocation <0, 0, 0>\n') file.write('\tlook_at <0, 0, -1>\n') - file.write('\tright <%s, 0, 0>\n' % -Qsize) + file.write('\tright <%s, 0, 0>\n' % - Qsize) file.write('\tup <0, 1, 0>\n') - file.write('\tangle %f \n' % (360.0*atan(16.0/camera.data.lens)/pi)) + file.write('\tangle %f \n' % (360.0 * atan(16.0 / camera.data.lens) / pi)) file.write('\trotate <%.6f, %.6f, %.6f>\n' % tuple([degrees(e) for e in matrix.rotationPart().toEuler()])) file.write('\ttranslate <%.6f, %.6f, %.6f>\n' % (matrix[3][0], matrix[3][1], matrix[3][2])) @@ -168,8 +169,8 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\tspotlight\n') # Falloff is the main radius from the centre line - file.write('\tfalloff %.2f\n' % (lamp.spot_size/2.0) ) # 1 TO 179 FOR BOTH - file.write('\tradius %.6f\n' % ((lamp.spot_size/2.0) * (1-lamp.spot_blend)) ) + file.write('\tfalloff %.2f\n' % (lamp.spot_size / 2.0)) # 1 TO 179 FOR BOTH + file.write('\tradius %.6f\n' % ((lamp.spot_size / 2.0) * (1.0 - lamp.spot_blend))) # Blender does not have a tightness equivilent, 0 is most like blender default. file.write('\ttightness 0\n') # 0:10f @@ -218,9 +219,9 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\tthreshold %.4g\n' % meta.threshold) try: - material= meta.materials[0] # lame! - blender cant do enything else. + material = meta.materials[0] # lame! - blender cant do enything else. except: - material= None + material = None for elem in meta.elements: @@ -229,9 +230,9 @@ def write_pov(filename, scene=None, info_callback = None): loc = elem.location - stiffness= elem.stiffness + stiffness = elem.stiffness if elem.negative: - stiffness = -stiffness + stiffness = - stiffness if elem.type == 'BALL': @@ -243,19 +244,19 @@ def write_pov(filename, scene=None, info_callback = None): elif elem.type == 'ELLIPSOID': # location is modified by scale - file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x/elem.size_x, loc.y/elem.size_y, loc.z/elem.size_z, elem.radius, stiffness)) - file.write( 'scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) + file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x / elem.size_x, loc.y / elem.size_y, loc.z / elem.size_z, elem.radius, stiffness)) + file.write('scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) if material: diffuse_color = material.diffuse_color - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 + if material.transparency and material.transparency_method == 'RAYTRACE': + trans = 1.0 - material.raytrace_transparency.filter + else: + trans = 0.0 - file.write( - 'pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ - (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1-material.alpha, trans, materialNames[material.name]) - ) + file.write('pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ + (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1.0 - material.alpha, trans, materialNames[material.name])) else: file.write('pigment {rgb<1 1 1>} finish {%s} }\n' % DEF_MAT_NAME) # Write the finish last. @@ -271,13 +272,13 @@ def write_pov(filename, scene=None, info_callback = None): ob_num = 0 for ob in sel: - ob_num+= 1 + ob_num += 1 if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE'): continue me = ob.data - me_materials= me.materials + me_materials = me.materials me = ob.create_mesh(True, 'RENDER') @@ -292,18 +293,22 @@ def write_pov(filename, scene=None, info_callback = None): # me = ob.data matrix = ob.matrix - try: uv_layer = me.active_uv_texture.data - except:uv_layer = None + try: + uv_layer = me.active_uv_texture.data + except: + uv_layer = None - try: vcol_layer = me.active_vertex_color.data - except:vcol_layer = None + try: + vcol_layer = me.active_vertex_color.data + except: + vcol_layer = None faces_verts = [f.verts for f in me.faces] faces_normals = [tuple(f.normal) for f in me.faces] verts_normals = [tuple(v.normal) for v in me.verts] # quads incur an extra face - quadCount = len([f for f in faces_verts if len(f)==4]) + quadCount = len([f for f in faces_verts if len(f) == 4]) file.write('mesh2 {\n') file.write('\tvertex_vectors {\n') @@ -332,7 +337,7 @@ def write_pov(filename, scene=None, info_callback = None): for no, index in uniqueNormals.items(): file.write(',\n\t\t<%.6f, %.6f, %.6f>' % no) # vert count index[0] = idx - idx +=1 + idx += 1 file.write('\n }\n') @@ -345,7 +350,7 @@ def write_pov(filename, scene=None, info_callback = None): for fi, uv in enumerate(uv_layer): - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 else: uvs = uv.uv1, uv.uv2, uv.uv3 @@ -360,7 +365,7 @@ def write_pov(filename, scene=None, info_callback = None): for uv, index in uniqueUVs.items(): file.write(',\n\t\t<%.6f, %.6f>' % uv) index[0] = idx - idx +=1 + idx += 1 ''' else: # Just add 1 dummy vector, no real UV's @@ -380,7 +385,7 @@ def write_pov(filename, scene=None, info_callback = None): col = vcol_layer[fi] - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: cols = col.color1, col.color2, col.color3, col.color4 else: cols = col.color1, col.color2, col.color3 @@ -409,37 +414,41 @@ def write_pov(filename, scene=None, info_callback = None): # Vert Colours file.write('\ttexture_list {\n') file.write('\t\t%s' % (len(vertCols))) # vert count - idx=0 + idx = 0 for col, index in vertCols.items(): if me_materials: material = me_materials[col[3]] material_finish = materialNames[material.name] - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 + if material.transparency and material.transparency_method == 'RAYTRACE': + trans = 1.0 - material.raytrace_transparency.filter + else: + trans = 0.0 else: material_finish = DEF_MAT_NAME # not working properly, trans = 0.0 #print material.apl - file.write( ',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % - (col[0], col[1], col[2], 1-material.alpha, trans, material_finish) ) + file.write(',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % + (col[0], col[1], col[2], 1.0 - material.alpha, trans, material_finish)) index[0] = idx - idx+=1 + idx += 1 - file.write( '\n }\n' ) + file.write('\n }\n') # Face indicies file.write('\tface_indices {\n') file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, f in enumerate(me.faces): fv = faces_verts[fi] - material_index= f.material_index - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + material_index = f.material_index + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) if vcol_layer: col = vcol_layer[fi] @@ -468,7 +477,7 @@ def write_pov(filename, scene=None, info_callback = None): ci3 = vertCols[col3[0], col3[1], col3[2], material_index][0] else: # Colour per material - flat material colour - diffuse_color= material.diffuse_color + diffuse_color = material.diffuse_color ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], diffuse_color[2], f.material_index][0] file.write(',\n\t\t<%d,%d,%d>, %d,%d,%d' % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3)) # vert count @@ -481,8 +490,10 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, fv in enumerate(faces_verts): - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) for i1, i2, i3 in indicies: if f.smooth: @@ -501,11 +512,13 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, fv in enumerate(faces_verts): - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) uv = uv_layer[fi] - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3), tuple(uv.uv4) else: uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3) @@ -535,7 +548,7 @@ def write_pov(filename, scene=None, info_callback = None): if mist.enabled: file.write('fog {\n') file.write('\tdistance %.6f\n' % mist.depth) - file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1-mist.intensity,))) + file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1 - mist.intensity,))) #file.write('\tfog_offset %.6f\n' % mist.start) #file.write('\tfog_alt 5\n') #file.write('\tturbulence 0.2\n') @@ -586,12 +599,13 @@ def write_pov(filename, scene=None, info_callback = None): file.close() + def write_pov_ini(filename_ini, filename_pov, filename_image): scene = bpy.data.scenes[0] render = scene.render_data - x= int(render.resolution_x*render.resolution_percentage*0.01) - y= int(render.resolution_y*render.resolution_percentage*0.01) + x = int(render.resolution_x * render.resolution_percentage * 0.01) + y = int(render.resolution_y * render.resolution_percentage * 0.01) file = open(filename_ini, 'w') @@ -616,7 +630,7 @@ def write_pov_ini(filename_ini, filename_pov, filename_image): file.write('Output_Alpha=1\n') if render.antialiasing: - aa_mapping = {'OVERSAMPLE_5':2, 'OVERSAMPLE_8':3, 'OVERSAMPLE_11':4, 'OVERSAMPLE_16':5} # method 1 assumed + aa_mapping = {'OVERSAMPLE_5': 2, 'OVERSAMPLE_8': 3, 'OVERSAMPLE_11': 4, 'OVERSAMPLE_16': 5} # method 1 assumed file.write('Antialias=1\n') file.write('Antialias_Depth=%d\n' % aa_mapping[render.antialiasing_samples]) else: @@ -625,81 +639,81 @@ def write_pov_ini(filename_ini, filename_pov, filename_image): file.close() # Radiosity panel, use in the scene for now. -FloatProperty= bpy.types.Scene.FloatProperty -IntProperty= bpy.types.Scene.IntProperty -BoolProperty= bpy.types.Scene.BoolProperty +FloatProperty = bpy.types.Scene.FloatProperty +IntProperty = bpy.types.Scene.IntProperty +BoolProperty = bpy.types.Scene.BoolProperty # Not a real pov option, just to know if we should write -BoolProperty( attr="pov_radio_enable", +BoolProperty(attr="pov_radio_enable", name="Enable Radiosity", description="Enable povrays radiosity calculation.", - default= False) -BoolProperty( attr="pov_radio_display_advanced", + default=False) +BoolProperty(attr="pov_radio_display_advanced", name="Advanced Options", description="Show advanced options.", - default= False) + default=False) # Real pov options -FloatProperty( attr="pov_radio_adc_bailout", +FloatProperty(attr="pov_radio_adc_bailout", name="ADC Bailout", description="The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default= 0.01) + min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default=0.01) -BoolProperty( attr="pov_radio_always_sample", +BoolProperty(attr="pov_radio_always_sample", name="Always Sample", description="Only use the data from the pretrace step and not gather any new samples during the final radiosity pass..", - default= True) + default=True) -FloatProperty( attr="pov_radio_brightness", +FloatProperty(attr="pov_radio_brightness", name="Brightness", description="Ammount objects are brightened before being returned upwards to the rest of the system.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default= 1.0) + min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default=1.0) -IntProperty( attr="pov_radio_count", +IntProperty(attr="pov_radio_count", name="Ray Count", description="number of rays that are sent out whenever a new radiosity value has to be calculated.", - min=1, max=1600, default= 35) + min=1, max=1600, default=35) -FloatProperty( attr="pov_radio_error_bound", +FloatProperty(attr="pov_radio_error_bound", name="Error Bound", description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default= 1.8) + min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1.8) -FloatProperty( attr="pov_radio_gray_threshold", +FloatProperty(attr="pov_radio_gray_threshold", name="Gray Threshold", description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1.0, soft_min=0, soft_max=1, default= 0.0) + min=0.0, max=1.0, soft_min=0, soft_max=1, default=0.0) -FloatProperty( attr="pov_radio_low_error_factor", +FloatProperty(attr="pov_radio_low_error_factor", name="Low Error Factor", description="If you calculate just enough samples, but no more, you will get an image which has slightly blotchy lighting.", - min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default= 0.5) + min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.5) # max_sample - not available yet -BoolProperty( attr="pov_radio_media", +BoolProperty(attr="pov_radio_media", name="Media", description="Radiosity estimation can be affected by media.", - default= False) + default=False) -FloatProperty( attr="pov_radio_minimum_reuse", +FloatProperty(attr="pov_radio_minimum_reuse", name="Minimum Reuse", description="Fraction of the screen width which sets the minimum radius of reuse for each sample point (At values higher than 2% expect errors).", - min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default= 0.015) + min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default=0.015) -IntProperty( attr="pov_radio_nearest_count", +IntProperty(attr="pov_radio_nearest_count", name="Nearest Count", description="Number of old ambient values blended together to create a new interpolated value.", - min=1, max=20, default= 5) + min=1, max=20, default=5) -BoolProperty( attr="pov_radio_normal", +BoolProperty(attr="pov_radio_normal", name="Normals", description="Radiosity estimation can be affected by normals.", - default= False) + default=False) -IntProperty( attr="pov_radio_recursion_limit", +IntProperty(attr="pov_radio_recursion_limit", name="Recursion Limit", description="how many recursion levels are used to calculate the diffuse inter-reflection.", - min=1, max=20, default= 3) + min=1, max=20, default=3) class PovrayRender(bpy.types.RenderEngine): @@ -726,8 +740,10 @@ class PovrayRender(bpy.types.RenderEngine): def _render(self): - try: os.remove(self._temp_file_out) # so as not to load the old file - except: pass + try: + os.remove(self._temp_file_out) # so as not to load the old file + except: + pass write_pov_ini(self._temp_file_ini, self._temp_file_in, self._temp_file_out) @@ -735,7 +751,7 @@ class PovrayRender(bpy.types.RenderEngine): pov_binary = "povray" - if sys.platform=='win32': + if sys.platform == 'win32': import winreg regKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\POV-Ray\\v3.6\\Windows') @@ -755,8 +771,10 @@ class PovrayRender(bpy.types.RenderEngine): def _cleanup(self): for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out): - try: os.remove(f) - except: pass + try: + os.remove(f) + except: + pass self.update_stats("", "") @@ -770,14 +788,16 @@ class PovrayRender(bpy.types.RenderEngine): r = scene.render_data # compute resolution - x= int(r.resolution_x*r.resolution_percentage*0.01) - y= int(r.resolution_y*r.resolution_percentage*0.01) + x = int(r.resolution_x * r.resolution_percentage * 0.01) + y = int(r.resolution_y * r.resolution_percentage * 0.01) # Wait for the file to be created while not os.path.exists(self._temp_file_out): if self.test_break(): - try: self._process.terminate() - except: pass + try: + self._process.terminate() + except: + pass break if self._process.poll() != None: @@ -796,22 +816,26 @@ class PovrayRender(bpy.types.RenderEngine): result = self.begin_result(0, 0, x, y) lay = result.layers[0] # possible the image wont load early on. - try: lay.load_from_file(self._temp_file_out) - except: pass + try: + lay.load_from_file(self._temp_file_out) + except: + pass self.end_result(result) # Update while povray renders while True: # test if povray exists - if self._process.poll() != None: - update_image(); + if self._process.poll() is not None: + update_image() break # user exit if self.test_break(): - try: self._process.terminate() - except: pass + try: + self._process.terminate() + except: + pass break @@ -852,10 +876,13 @@ del properties_world import properties_material for member in dir(properties_material): subclass = getattr(properties_material, member) - try: subclass.COMPAT_ENGINES.add('POVRAY_RENDER') - except: pass + try: + subclass.COMPAT_ENGINES.add('POVRAY_RENDER') + except: + pass del properties_material + class RenderButtonsPanel(bpy.types.Panel): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' @@ -864,7 +891,8 @@ class RenderButtonsPanel(bpy.types.Panel): def poll(self, context): rd = context.scene.render_data - return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) + return (rd.use_game_engine == False) and (rd.engine in self.COMPAT_ENGINES) + class RENDER_PT_povray_radiosity(RenderButtonsPanel): bl_label = "Radiosity" diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 97af4cb6ebf..ba2741a7e7e 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -54,47 +54,47 @@ import time import math # math.pi import shutil # for file copying -# try: -# import time -# # import os # only needed for batch export, nbot used yet -# except: -# time = None # use this to check if they have python modules installed - -# for python 2.3 support -try: - set() -except: - try: - from sets import Set as set - except: - set = None # so it complains you dont have a ! -# # os is only needed for batch 'own dir' option -# try: -# import os -# except: -# os = None + + + + + + + + + + + + + + + + + + + # import Blender import bpy import Mathutils -# from Blender.Mathutils import Matrix, Vector, RotationMatrix - -# import BPyObject -# import BPyMesh -# import BPySys -# import BPyMessages - -## This was used to make V, but faster not to do all that -##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}' -##v = range(255) -##for c in valid: v.remove(ord(c)) -v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] -invalid = ''.join([chr(i) for i in v]) -def cleanName(name): - for ch in invalid: name = name.replace(ch, '_') - return name -# del v, i + + + + + + + + + + + + + + + + + def copy_file(source, dest): @@ -214,8 +214,8 @@ def sane_name(data, dct): if not name: name = 'unnamed' # blank string, ASKING FOR TROUBLE! else: - #name = BPySys.cleanName(name) - name = cleanName(name) # use our own + + name = bpy.utils.clean_name(name) # use our own while name in iter(dct.values()): name = increment_string(name) @@ -391,8 +391,8 @@ def write(filename, batch_objects = None, \ new_fbxpath = fbxpath # own dir option modifies, we need to keep an original for data in data_seq: # scene or group - newname = BATCH_FILE_PREFIX + cleanName(data.name) -# newname = BATCH_FILE_PREFIX + BPySys.cleanName(data.name) + newname = BATCH_FILE_PREFIX + bpy.utils.clean_name(data.name) +# newname = BATCH_FILE_PREFIX + BPySys.bpy.utils.clean_name(data.name) if BATCH_OWN_DIR: @@ -3442,7 +3442,7 @@ bpy.ops.add(ExportFBX) # NOTES (all line numbers correspond to original export_fbx.py (under release/scripts) # - Draw.PupMenu alternative in 2.5?, temporarily replaced PupMenu with print -# - get rid of cleanName somehow +# - get rid of bpy.utils.clean_name somehow # + fixed: isinstance(inst, bpy.types.*) doesn't work on RNA objects: line 565 # + get rid of BPyObject_getObjectArmature, move it in RNA? # - BATCH_ENABLE and BATCH_GROUP options: line 327 diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index fc85b2996d0..cfd73b1979e 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -49,16 +49,8 @@ Be sure not to use modifiers that change the number or order of verts in the mes import bpy import Mathutils -import math -import os +from struct import pack -#import Blender -#from Blender import * -#import BPyMessages -try: - from struct import pack -except: - pack = None def zero_file(filepath): ''' @@ -68,7 +60,8 @@ def zero_file(filepath): file.write('\n') # apparently macosx needs some data in a blank file? file.close() -def check_vertcount(mesh,vertcount): + +def check_vertcount(mesh, vertcount): ''' check and make sure the vertcount is consistent throughout the frame range ''' @@ -94,7 +87,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): me = ob.create_mesh(True, 'PREVIEW') #Flip y and z - mat_flip= Mathutils.Matrix(\ + mat_flip = Mathutils.Matrix(\ [1.0, 0.0, 0.0, 0.0],\ [0.0, 0.0, 1.0, 0.0],\ [0.0, 1.0, 0.0, 0.0],\ @@ -103,15 +96,15 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): numverts = len(me.verts) - numframes = PREF_ENDFRAME-PREF_STARTFRAME+1 - PREF_FPS= float(PREF_FPS) + numframes = PREF_ENDFRAME-PREF_STARTFRAME + 1 + PREF_FPS = float(PREF_FPS) f = open(filename, 'wb') #no Errors yet:Safe to create file # Write the header f.write(pack(">2i", numframes, numverts)) # Write the frame times (should we use the time IPO??) - f.write( pack(">%df" % (numframes), *[frame/PREF_FPS for frame in range(numframes)]) ) # seconds + f.write( pack(">%df" % (numframes), *[frame / PREF_FPS for frame in range(numframes)]) ) # seconds #rest frame needed to keep frames in sync """ @@ -119,11 +112,11 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): me_tmp.getFromObject(ob.name) """ - check_vertcount(me,numverts) + check_vertcount(me, numverts) me.transform(mat_flip * ob.matrix) - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) - for frame in range(PREF_STARTFRAME,PREF_ENDFRAME+1):#in order to start at desired frame + for frame in range(PREF_STARTFRAME, PREF_ENDFRAME + 1):#in order to start at desired frame """ Blender.Set('curframe', frame) me_tmp.getFromObject(ob.name) @@ -131,18 +124,18 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): sce.set_frame(frame) me = ob.create_mesh(True, 'PREVIEW') - check_vertcount(me,numverts) + check_vertcount(me, numverts) me.transform(mat_flip * ob.matrix) # Write the vertex data - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) """ me_tmp.verts= None """ f.close() - print ('MDD Exported: %s frames:%d\n'% (filename, numframes-1)) + print('MDD Exported: %s frames:%d\n' % (filename, numframes - 1)) """ Blender.Window.WaitCursor(0) Blender.Set('curframe', orig_frame) @@ -151,6 +144,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): from bpy.props import * + class ExportMDD(bpy.types.Operator): '''Animated mesh to MDD vertex keyframe file.''' bl_idname = "export.mdd" @@ -167,18 +161,18 @@ class ExportMDD(bpy.types.Operator): # to the class instance from the operator settings before calling. path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "") fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25) - start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1) - end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250) + start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe, max=maxframe, default=1) + end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default=250) def poll(self, context): ob = context.active_object - return (ob and ob.type=='MESH') + return (ob and ob.type == 'MESH') def execute(self, context): if not self.properties.path: raise Exception("filename not set") write(self.properties.path, context.scene, context.active_object, - self.properties.start_frame, self.properties.end_frame, self.properties.fps ) + self.properties.start_frame, self.properties.end_frame, self.properties.fps) return ('FINISHED',) def invoke(self, context, event): @@ -191,11 +185,12 @@ bpy.ops.add(ExportMDD) # Add to a menu import dynamic_menu + def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".mdd") self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) -if __name__=='__main__': +if __name__ == '__main__': bpy.ops.export.mdd(path="/tmp/test.mdd") diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 6a3ecb7f639..77bf2d35bb8 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -19,8 +19,7 @@ # import bpy -from rigify_utils import copy_bone_simple, get_side_name, bone_class_instance -from rna_prop_ui import rna_idprop_ui_prop_get +from rigify_utils import bone_class_instance METARIG_NAMES = ("cpy",) diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index d260bb1a67a..03c76672d6c 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -20,7 +20,7 @@ import bpy from rigify import RigifyError -from rigify_utils import copy_bone_simple, get_side_name, get_base_name +from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce diff --git a/release/scripts/op/console_shell.py b/release/scripts/op/console_shell.py index 7dec9477f51..bdb4a746d95 100644 --- a/release/scripts/op/console_shell.py +++ b/release/scripts/op/console_shell.py @@ -17,12 +17,9 @@ # ##### END GPL LICENSE BLOCK ##### # -import sys import os - import bpy - language_id = 'shell' diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py index 6ca03b409f0..1de06963c7a 100644 --- a/release/scripts/op/mesh.py +++ b/release/scripts/op/mesh.py @@ -20,10 +20,11 @@ import bpy + def main(context): ob = context.active_object bpy.ops.mesh.selection_type(type='FACE') - is_editmode = (ob.mode=='EDIT') + is_editmode = (ob.mode == 'EDIT') if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) @@ -49,6 +50,7 @@ def main(context): if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + class MeshSelectInteriorFaces(bpy.types.Operator): '''Select faces where all edges have more then 2 face users.''' diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 0dd1f8b1e08..f3c8f7ed7dd 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -27,7 +27,7 @@ from Mathutils import Matrix, Vector, RotationMatrix import time import Geometry import bpy -from math import cos, degrees, radians +from math import cos, radians DEG_TO_RAD = 0.017453292519943295 # pi/180.0 SMALL_NUM = 0.000000001 diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index b4b30fed06f..a521c24e06c 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -31,13 +31,13 @@ # import bpy -import Mathutils import math import time from Mathutils import Vector from bpy.props import * + def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only): ## Window.WaitCursor(1) @@ -45,8 +45,8 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, vert_tone = [0.0] * len(me.verts) - min_tone =180.0 - max_tone =0.0 + min_tone = 180.0 + max_tone = 0.0 # create lookup table for each vertex's connected vertices (via edges) con = [] @@ -102,7 +102,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, # print(clamp_clean) # print(clamp_dirt) - tone_range = max_tone-min_tone + tone_range = max_tone - min_tone if not tone_range: return @@ -131,18 +131,19 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, for j, v in enumerate(f.verts): col = f_col[j] tone = vert_tone[me.verts[v].index] - tone = (tone-min_tone)/tone_range + tone = (tone - min_tone) / tone_range if dirt_only: tone = min(tone, 0.5) tone *= 2 - col[0] = tone*col[0] - col[1] = tone*col[1] - col[2] = tone*col[2] + col[0] = tone * col[0] + col[1] = tone * col[1] + col[2] = tone * col[2] ## Window.WaitCursor(0) + class VertexPaintDirt(bpy.types.Operator): bl_idname = "mesh.vertex_paint_dirt" @@ -150,11 +151,11 @@ class VertexPaintDirt(bpy.types.Operator): bl_register = True bl_undo = True - blur_strength = FloatProperty(name = "Blur Strength", description = "Blur strength per iteration", default = 1.0, min = 0.01, max = 1.0) - blur_iterations = IntProperty(name = "Blur Iterations", description = "Number times to blur the colors. (higher blurs more)", default = 1, min = 0, max = 40) - clean_angle = FloatProperty(name = "Highlight Angle", description = "Less then 90 limits the angle used in the tonal range", default = 180.0, min = 0.0, max = 180.0) - dirt_angle = FloatProperty(name = "Dirt Angle", description = "Less then 90 limits the angle used in the tonal range", default = 0.0, min = 0.0, max = 180.0) - dirt_only = BoolProperty(name= "Dirt Only", description = "Dont calculate cleans for convex areas", default = False) + blur_strength = FloatProperty(name="Blur Strength", description="Blur strength per iteration", default=1.0, min=0.01, max=1.0) + blur_iterations = IntProperty(name="Blur Iterations", description="Number times to blur the colors. (higher blurs more)", default=1, min=0, max=40) + clean_angle = FloatProperty(name="Highlight Angle", description="Less then 90 limits the angle used in the tonal range", default=180.0, min=0.0, max=180.0) + dirt_angle = FloatProperty(name="Dirt Angle", description="Less then 90 limits the angle used in the tonal range", default=0.0, min=0.0, max=180.0) + dirt_only = BoolProperty(name="Dirt Only", description="Dont calculate cleans for convex areas", default=False) def execute(self, context): sce = context.scene @@ -170,7 +171,7 @@ class VertexPaintDirt(bpy.types.Operator): applyVertexDirt(me, self.properties.blur_iterations, self.properties.blur_strength, math.radians(self.properties.dirt_angle), math.radians(self.properties.clean_angle), self.properties.dirt_only) - print('Dirt calculated in %.6f' % (time.time()-t)) + print('Dirt calculated in %.6f' % (time.time() - t)) return('FINISHED',) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index ae49cf4907a..dbe87cf367b 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -19,7 +19,6 @@ # import bpy -import os from bpy.props import * @@ -378,27 +377,7 @@ class WM_OT_reload_scripts(bpy.types.Operator): def execute(self, context): MOD = type(bpy) - import sys bpy.load_scripts(True) - ''' - prefix = bpy.base_path - items = list(sys.modules.items()) - items.sort() - items.reverse() - for mod_name, mod in items: - mod_file = getattr(mod, "__file__", "") - if mod_file.startswith(prefix) and "__init__" not in mod_file: - print(mod_file) - reload(mod) - """ - for submod_name in dir(mod): - submod = getattr(mod, submod_name) - if isinstance(submod, MOD): - reload(submod) - """ - else: - print("Ignoring:", mod, mod_file) - ''' return ('FINISHED',) -- cgit v1.2.3 From 3f612b6ea5b15b0a868f1472053378949722c88a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 13 Dec 2009 23:30:18 +0000 Subject: Description and more presets for animation players (rv / framecycler). Also put a bit more logic for guessing player paths based on my system. If anyone can make this a bit more clever/bulletproof, please feel free to get involved in it, it's all python! --- release/scripts/op/screen_play_rendered_anim.py | 49 +++++++++++++++++++++---- source/blender/editors/interface/resources.c | 3 ++ source/blender/makesrna/intern/rna_userdef.c | 7 +++- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index bee73968b84..a2e21f0d510 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -24,7 +24,7 @@ # Originally written by Matt Ebb import bpy -import subprocess, platform +import subprocess, os, platform # from BKE_add_image_extension() img_format_exts = { @@ -50,8 +50,35 @@ img_format_exts = { 'THEORA':'ogg', } -class PlayRenderedAnim(bpy.types.Operator): +def guess_player_path(preset): + if preset == 'BLENDER24': + player_path = 'blender' + + if platform.system() == 'Darwin': + test_path = '/Applications/blender 2.49.app/Contents/MacOS/blender' + if os.path.exists(test_path): + player_path = test_path + + elif preset == 'DJV': + player_path = 'djv_view' + + if platform.system() == 'Darwin': + test_path = '/Applications/djv-0.8.2.app/Contents/Resources/bin/djv_view' + if os.path.exists(test_path): + player_path = test_path + + elif preset == 'FRAMECYCLER': + player_path = 'framecycler' + + elif preset == 'RV': + player_path = 'rv' + + + return player_path + +class PlayRenderedAnim(bpy.types.Operator): + '''Plays back rendered frames/movies using an external player.''' bl_idname = "screen.play_rendered_anim" bl_label = "Play Rendered Animation" bl_register = True @@ -67,13 +94,14 @@ class PlayRenderedAnim(bpy.types.Operator): # try and guess a command line if it doesn't exist if player_path == '': - if preset == 'BLENDER24': - player_path = 'blender' - elif preset == 'DJV': - player_path = 'djv_view' + player_path = guess_player_path(preset) # doesn't support ### frame notation yet - file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) + if preset in ('BLENDER24', 'DJV', 'CUSTOM'): + file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) + elif preset in ('FRAMECYCLER', 'RV'): + file = "%s#" % bpy.utils.expandpath(rd.output_path) + if rd.file_extensions: file += '.' + img_format_exts[rd.file_format] @@ -85,6 +113,12 @@ class PlayRenderedAnim(bpy.types.Operator): elif preset == 'DJV': opts = [file, "-playback_speed", str(rd.fps)] cmd.extend(opts) + elif preset == 'FRAMECYCLER': + opts = [file, "%d-%d" % (sce.start_frame, sce.end_frame)] + cmd.extend(opts) + elif preset == 'RV': + opts = ["-fps", str(rd.fps), "-play", "[ %s ]" % file] + cmd.extend(opts) else: # 'CUSTOM' cmd.extend(file) @@ -93,6 +127,7 @@ class PlayRenderedAnim(bpy.types.Operator): process = subprocess.Popen(cmd) except: pass + #raise OSError("Couldn't find an external animation player.") return('FINISHED',) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 809b3387f28..b2ae5572a05 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1283,6 +1283,9 @@ void init_userdef_do_versions(void) if (U.dbl_click_time == 0) { U.dbl_click_time = 350; } + if (U.anim_player_preset == 0) { + U.anim_player_preset =1 ; + } /* funny name, but it is GE stuff, moves userdef stuff to engine */ // XXX space_set_commmandline_options(); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 21e601c3ba3..d3329907939 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2360,9 +2360,11 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) static EnumPropertyItem anim_player_presets[] = { //{0, "INTERNAL", 0, "Internal", "Built-in animation player"}, // doesn't work yet! - {0, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"}, + {1, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"}, {2, "DJV", 0, "Djv", "Open source frame player: http://djv.sourceforge.net"}, - {3, "CUSTOM", 0, "Custom", "Custom animation player executable path"}, + {3, "FRAMECYCLER", 0, "FrameCycler", "Frame player from IRIDAS"}, + {4, "RV", 0, "rv", "Frame player from Tweak Software"}, + {50, "CUSTOM", 0, "Custom", "Custom animation player executable path"}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesFilePaths", NULL); @@ -2430,6 +2432,7 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "anim_player_preset"); RNA_def_property_enum_items(prop, anim_player_presets); RNA_def_property_ui_text(prop, "Animation Player Preset", "Preset configs for external animation players"); + RNA_def_property_enum_default(prop, 1); /* set default to blender 2.4 player until an internal one is back */ /* Autosave */ -- cgit v1.2.3 From a4d52bd0fd180e2934ebed21a7d2aab84cc5b5a9 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 13 Dec 2009 23:51:41 +0000 Subject: patch [#20342] Notifier patch for modifier rename and particle system rename by 'ThatHaze'. thanks! --- source/blender/editors/space_action/space_action.c | 18 +++++++-------- .../blender/editors/space_buttons/space_buttons.c | 5 ++++- source/blender/editors/space_graph/space_graph.c | 11 ++++----- source/blender/editors/space_logic/space_logic.c | 7 ++---- source/blender/editors/space_nla/space_nla.c | 15 +++++-------- source/blender/editors/space_node/space_node.c | 7 ++---- source/blender/editors/space_outliner/outliner.c | 2 +- .../editors/space_outliner/space_outliner.c | 8 +++++-- .../editors/space_sequencer/space_sequencer.c | 14 ++++-------- source/blender/editors/space_view3d/space_view3d.c | 4 ++-- source/blender/makesrna/intern/rna_ID.c | 2 +- source/blender/makesrna/intern/rna_modifier.c | 1 + source/blender/makesrna/intern/rna_particle.c | 1 + source/blender/windowmanager/WM_types.h | 26 +++++++++------------- 14 files changed, 54 insertions(+), 67 deletions(-) diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 0cbc2ce9078..08ed44a54f9 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -289,14 +289,15 @@ static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) case ND_KEYS: ED_region_tag_redraw(ar); break; + case ND_MODIFIER: + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); + break; } break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; default: if(wmn->data==ND_KEYS) @@ -339,11 +340,8 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; default: diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index f6b376f6e8e..160343cf940 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -271,6 +271,9 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_MODIFIER: + if(wmn->action == NA_RENAME) + ED_area_tag_redraw(sa); + break; case ND_CONSTRAINT: ED_area_tag_redraw(sa); break; @@ -311,7 +314,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); break; case NC_ID: - if(wmn->data == ND_ID_RENAME) + if(wmn->action == NA_RENAME) ED_area_tag_redraw(sa); break; } diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index d77caa4c0e3..3023ec89258 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -398,6 +398,10 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) case ND_KEYS: ED_region_tag_redraw(ar); break; + case ND_MODIFIER: + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); + break; } break; case NC_NODE: @@ -408,11 +412,8 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; default: if(wmn->data==ND_KEYS) diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index ed8c7f2e4e7..c5b18d5b40e 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -218,11 +218,8 @@ static void logic_listener(ARegion *ar, wmNotifier *wmn) case NC_OBJECT: break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; } } diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 8aceb647fe2..a799e265b72 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -423,11 +423,8 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; default: if(wmn->data==ND_KEYS) @@ -459,12 +456,10 @@ static void nla_channel_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; + default: if(wmn->data==ND_KEYS) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 64db1520ba1..dfdd4ea6657 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -315,11 +315,8 @@ static void node_region_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; } } diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 750861ddace..f3485328c52 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -4747,7 +4747,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) case ID_SCE: WM_event_add_notifier(C, NC_SCENE, NULL); break; default: - WM_event_add_notifier(C, NC_ID|ND_ID_RENAME, NULL); break; + WM_event_add_notifier(C, NC_ID|NA_RENAME, NULL); break; } /* Check the library target exists */ if (te->idcode == ID_LI) { diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 31de6839468..469fe148b97 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -133,6 +133,10 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_TRANSFORM: ED_region_tag_redraw(ar); break; + case ND_MODIFIER: + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); + break; } case NC_GROUP: /* all actions now, todo: check outliner view mode? */ @@ -148,9 +152,9 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - if(wmn->data == ND_ID_RENAME) + if(wmn->action == NA_RENAME) ED_region_tag_redraw(ar); - break; + break; } } diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 5be9fdee5a9..1e2fc1f59d3 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -242,11 +242,8 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; } } @@ -284,11 +281,8 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - switch(wmn->data) { - case ND_ID_RENAME: - ED_region_tag_redraw(ar); - break; - } + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; } } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index bd277f68513..e65cb98e665 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -518,7 +518,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - if(wmn->data == ND_ID_RENAME) + if(wmn->action == NA_RENAME) ED_region_tag_redraw(ar); break; } @@ -644,7 +644,7 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_ID: - if(wmn->data == ND_ID_RENAME) + if(wmn->action == NA_RENAME) ED_region_tag_redraw(ar); break; } diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index ed73ddef3f5..32b6de40a03 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -356,7 +356,7 @@ static void rna_def_ID(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name."); RNA_def_property_string_funcs(prop, "rna_ID_name_get", "rna_ID_name_length", "rna_ID_name_set"); RNA_def_property_string_maxlength(prop, sizeof(((ID*)NULL)->name)-2); - RNA_def_property_update(prop, NC_ID|ND_ID_RENAME, NULL); + RNA_def_property_update(prop, NC_ID|NA_RENAME, NULL); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "users", PROP_INT, PROP_UNSIGNED); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index aee2b048f6b..2754341810c 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2016,6 +2016,7 @@ void RNA_def_modifier(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Modifier_name_set"); RNA_def_property_ui_text(prop, "Name", "Modifier name."); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL); RNA_def_struct_name_property(srna, prop); /* enums */ diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 4ff42bbb7c2..c5b1aafb1a3 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -1904,6 +1904,7 @@ static void rna_def_particle_system(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", "Particle system name."); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL); RNA_def_struct_name_property(srna, prop); /* access to particle settings is redirected through functions */ diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 160f9cccf6c..2a742b29d1c 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -218,10 +218,6 @@ typedef struct wmNotifier { /* NC_NODE Nodes */ #define ND_NODE_SELECT (1<<16) - /* NC_ID IDs */ -#define ND_ID_RENAME (1<<16) - - /* NC_SPACE */ #define ND_SPACE_CONSOLE (1<<16) /* general redraw */ #define ND_SPACE_CONSOLE_REPORT (2<<16) /* update for reports, could specify type */ @@ -245,17 +241,17 @@ typedef struct wmNotifier { #define NOTE_SUBTYPE 0x0000FF00 /* subtype scene mode */ -#define NS_MODE_OBJECT (1<<8) - -#define NS_EDITMODE_MESH (2<<8) -#define NS_EDITMODE_CURVE (3<<8) -#define NS_EDITMODE_SURFACE (4<<8) -#define NS_EDITMODE_TEXT (5<<8) -#define NS_EDITMODE_MBALL (6<<8) -#define NS_EDITMODE_LATTICE (7<<8) +#define NS_MODE_OBJECT (1<<8) + +#define NS_EDITMODE_MESH (2<<8) +#define NS_EDITMODE_CURVE (3<<8) +#define NS_EDITMODE_SURFACE (4<<8) +#define NS_EDITMODE_TEXT (5<<8) +#define NS_EDITMODE_MBALL (6<<8) +#define NS_EDITMODE_LATTICE (7<<8) #define NS_EDITMODE_ARMATURE (8<<8) -#define NS_MODE_POSE (9<<8) -#define NS_MODE_PARTICLE (10<<8) +#define NS_MODE_POSE (9<<8) +#define NS_MODE_PARTICLE (10<<8) /* action classification */ @@ -264,7 +260,7 @@ typedef struct wmNotifier { #define NA_EVALUATED 2 #define NA_ADDED 3 #define NA_REMOVED 4 - +#define NA_RENAME 5 /* ************** Gesture Manager data ************** */ -- cgit v1.2.3 From 73e380afc0bdf35259ca94ed14ada5767cbdc89e Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Mon, 14 Dec 2009 00:06:24 +0000 Subject: Specify debian packages. --- release/test/pep8.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/release/test/pep8.py b/release/test/pep8.py index b1cde7be2a7..57ce0a96120 100644 --- a/release/test/pep8.py +++ b/release/test/pep8.py @@ -21,12 +21,15 @@ import os # depends on pep8, pyflakes, pylint -# for ubuntu/debian +# for ubuntu # # sudo apt-get install pylint pyflakes # # sudo apt-get install python-setuptools python-pip # sudo pip install pep8 +# +# in debian install pylint pyflakes pep8 with apt-get/aptitude/etc +# # how many lines to read into the file, pep8 comment # should be directly after the licence header, ~20 in most cases -- cgit v1.2.3 From a674f1a2ccdace4e2d0f6572e5f1b68eb4901536 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 01:58:08 +0000 Subject: use Ellipsis rather then a class defined for an unset value. (since None is valid) --- release/scripts/op/wm.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index dbe87cf367b..5069d206a3f 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -43,10 +43,6 @@ rna_reverse_prop = BoolProperty(name="Reverse", description="Cycle backwards", default=False) -class NullPath: - pass - - def context_path_validate(context, path): import sys try: @@ -54,7 +50,7 @@ def context_path_validate(context, path): except AttributeError: if "'NoneType'" in str(sys.exc_info()[1]): # One of the items in the rna path is None, just ignore this - value = NullPath + value = Ellipsis else: # We have a real error in the rna path, dont ignore that raise @@ -63,7 +59,7 @@ def context_path_validate(context, path): def execute_context_assign(self, context): - if context_path_validate(context, self.properties.path) == NullPath: + if context_path_validate(context, self.properties.path) is Ellipsis: return ('PASS_THROUGH',) exec("context.%s=self.properties.value" % self.properties.path) return ('FINISHED',) @@ -137,7 +133,7 @@ class WM_OT_context_toggle(bpy.types.Operator): def execute(self, context): - if context_path_validate(context, self.properties.path) == NullPath: + if context_path_validate(context, self.properties.path) is Ellipsis: return ('PASS_THROUGH',) exec("context.%s=not (context.%s)" % @@ -160,7 +156,7 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): def execute(self, context): - if context_path_validate(context, self.properties.path) == NullPath: + if context_path_validate(context, self.properties.path) is Ellipsis: return ('PASS_THROUGH',) exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \ @@ -182,7 +178,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator): def execute(self, context): value = context_path_validate(context, self.properties.path) - if value == NullPath: + if value is Ellipsis: return ('PASS_THROUGH',) self.properties.value = value @@ -214,7 +210,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): def execute(self, context): value = context_path_validate(context, self.properties.path) - if value == NullPath: + if value is Ellipsis: return ('PASS_THROUGH',) orig_value = value -- cgit v1.2.3 From 921d4b8eb0d511e2fa2c3143142c372a178565f1 Mon Sep 17 00:00:00 2001 From: Roland Hess Date: Mon, 14 Dec 2009 03:01:42 +0000 Subject: Applies Patch 20200 Shuffle IK Restriction and iTaSC parameter panels into more fitting context. --- release/scripts/ui/properties_data_armature.py | 54 +++++++ release/scripts/ui/properties_data_bone.py | 102 +++++++++++++ release/scripts/ui/properties_object_constraint.py | 160 --------------------- 3 files changed, 156 insertions(+), 160 deletions(-) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 1145202332e..3d85196871b 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -235,9 +235,63 @@ class DATA_PT_ghost(DataButtonsPanel): col.label(text="Display:") col.prop(arm, "ghost_only_selected", text="Selected Only") +class DATA_PT_iksolver_itasc(DataButtonsPanel): + bl_label = "iTaSC parameters" + bl_default_closed = True + + def poll(self, context): + ob = context.object + return (ob and ob.pose) + + def draw(self, context): + layout = self.layout + + ob = context.object + + itasc = ob.pose.ik_param + wide_ui = context.region.width > narrowui + + row = layout.row() + row.prop(ob.pose, "ik_solver") + + layout.prop(itasc, "mode", expand=True) + simulation = itasc.mode == 'SIMULATION' + if simulation: + layout.label(text="Reiteration:") + layout.prop(itasc, "reiteration", expand=True) + + split = layout.split() + split.active = not simulation or itasc.reiteration != 'NEVER' + col = split.column() + col.prop(itasc, "precision") + + if wide_ui: + col = split.column() + col.prop(itasc, "num_iter") + + + if simulation: + layout.prop(itasc, "auto_step") + row = layout.row() + if itasc.auto_step: + row.prop(itasc, "min_step", text="Min") + row.prop(itasc, "max_step", text="Max") + else: + row.prop(itasc, "num_step") + + layout.prop(itasc, "solver") + if simulation: + layout.prop(itasc, "feedback") + layout.prop(itasc, "max_velocity") + if itasc.solver == 'DLS': + row = layout.row() + row.prop(itasc, "dampmax", text="Damp", slider=True) + row.prop(itasc, "dampeps", text="Eps", slider=True) + bpy.types.register(DATA_PT_context_arm) bpy.types.register(DATA_PT_skeleton) bpy.types.register(DATA_PT_display) bpy.types.register(DATA_PT_bone_groups) bpy.types.register(DATA_PT_paths) bpy.types.register(DATA_PT_ghost) +bpy.types.register(DATA_PT_iksolver_itasc) diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 982a4911694..121fc3a5db3 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -226,6 +226,107 @@ class BONE_PT_display(BoneButtonsPanel): col.label(text="Custom Shape:") col.prop(pchan, "custom_shape", text="") +class BONE_PT_inverse_kinematics(BoneButtonsPanel): + bl_label = "Inverse Kinematics" + bl_default_closed = True + + def poll(self, context): + ob = context.object + bone = context.bone + pchan = ob.pose.bones[bone.name] + + if ob and bone and pchan: + return True + + return False + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + pchan = ob.pose.bones[bone.name] + wide_ui = context.region.width > narrowui + + split = layout.split(percentage=0.25) + split.prop(pchan, "ik_dof_x", text="X") + split.active = pchan.has_ik + row = split.row() + row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True) + row.active = pchan.ik_dof_x and pchan.has_ik + + if wide_ui: + split = layout.split(percentage=0.25) + sub = split.row() + else: + sub = layout.column(align=True) + sub.prop(pchan, "ik_limit_x", text="Limit") + sub.active = pchan.ik_dof_x and pchan.has_ik + if wide_ui: + sub = split.row(align=True) + sub.prop(pchan, "ik_min_x", text="") + sub.prop(pchan, "ik_max_x", text="") + sub.active = pchan.ik_dof_x and pchan.ik_limit_x and pchan.has_ik + + split = layout.split(percentage=0.25) + split.prop(pchan, "ik_dof_y", text="Y") + split.active = pchan.has_ik and pchan.has_ik + row = split.row() + row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True) + row.active = pchan.ik_dof_y and pchan.has_ik + + if wide_ui: + split = layout.split(percentage=0.25) + sub = split.row() + else: + sub = layout.column(align=True) + sub.prop(pchan, "ik_limit_y", text="Limit") + sub.active = pchan.ik_dof_y and pchan.has_ik + if wide_ui: + sub = split.row(align=True) + sub.prop(pchan, "ik_min_y", text="") + sub.prop(pchan, "ik_max_y", text="") + sub.active = pchan.ik_dof_y and pchan.ik_limit_y and pchan.has_ik + + split = layout.split(percentage=0.25) + split.prop(pchan, "ik_dof_z", text="Z") + split.active = pchan.has_ik and pchan.has_ik + sub = split.row() + sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True) + sub.active = pchan.ik_dof_z and pchan.has_ik + + if wide_ui: + split = layout.split(percentage=0.25) + sub = split.row() + else: + sub = layout.column(align=True) + sub.prop(pchan, "ik_limit_z", text="Limit") + sub.active = pchan.ik_dof_z and pchan.has_ik + if wide_ui: + sub = split.row(align=True) + sub.prop(pchan, "ik_min_z", text="") + sub.prop(pchan, "ik_max_z", text="") + sub.active = pchan.ik_dof_z and pchan.ik_limit_z and pchan.has_ik + split = layout.split() + split.prop(pchan, "ik_stretch", text="Stretch", slider=True) + if wide_ui: + split.label() + split.active = pchan.has_ik + + if ob.pose.ik_solver == 'ITASC': + split = layout.split() + col = split.column() + col.prop(pchan, "ik_rot_control", text="Control Rotation") + col.active = pchan.has_ik + if wide_ui: + col = split.column() + col.prop(pchan, "ik_rot_weight", text="Weight", slider=True) + col.active = pchan.has_ik + # not supported yet + #row = layout.row() + #row.prop(pchan, "ik_lin_control", text="Joint Size") + #row.prop(pchan, "ik_lin_weight", text="Weight", slider=True) + class BONE_PT_deform(BoneButtonsPanel): bl_label = "Deform" @@ -298,5 +399,6 @@ bpy.types.register(BONE_PT_transform) bpy.types.register(BONE_PT_transform_locks) bpy.types.register(BONE_PT_relations) bpy.types.register(BONE_PT_display) +bpy.types.register(BONE_PT_inverse_kinematics) bpy.types.register(BONE_PT_deform) bpy.types.register(BONE_PT_properties) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 0436da546bc..dd874bf52a0 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -735,164 +735,6 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel): for con in ob.constraints: self.draw_constraint(context, con) - -class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): - bl_label = "Inverse Kinematics" - bl_default_closed = True - bl_context = "bone_constraint" - - def poll(self, context): - ob = context.object - bone = context.bone - - if ob and bone: - pchan = ob.pose.bones[bone.name] - return pchan.has_ik - - return False - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - pchan = ob.pose.bones[bone.name] - wide_ui = context.region.width > narrowui - - row = layout.row() - row.prop(ob.pose, "ik_solver") - - split = layout.split(percentage=0.25) - split.prop(pchan, "ik_dof_x", text="X") - row = split.row() - row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True) - row.active = pchan.ik_dof_x - - if wide_ui: - split = layout.split(percentage=0.25) - sub = split.row() - else: - sub = layout.column(align=True) - sub.prop(pchan, "ik_limit_x", text="Limit") - sub.active = pchan.ik_dof_x - if wide_ui: - sub = split.row(align=True) - sub.prop(pchan, "ik_min_x", text="") - sub.prop(pchan, "ik_max_x", text="") - sub.active = pchan.ik_dof_x and pchan.ik_limit_x - - split = layout.split(percentage=0.25) - split.prop(pchan, "ik_dof_y", text="Y") - row = split.row() - row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True) - row.active = pchan.ik_dof_y - - if wide_ui: - split = layout.split(percentage=0.25) - sub = split.row() - else: - sub = layout.column(align=True) - sub.prop(pchan, "ik_limit_y", text="Limit") - sub.active = pchan.ik_dof_y - if wide_ui: - sub = split.row(align=True) - sub.prop(pchan, "ik_min_y", text="") - sub.prop(pchan, "ik_max_y", text="") - sub.active = pchan.ik_dof_y and pchan.ik_limit_y - - split = layout.split(percentage=0.25) - split.prop(pchan, "ik_dof_z", text="Z") - sub = split.row() - sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True) - sub.active = pchan.ik_dof_z - - if wide_ui: - split = layout.split(percentage=0.25) - sub = split.row() - else: - sub = layout.column(align=True) - sub.prop(pchan, "ik_limit_z", text="Limit") - sub.active = pchan.ik_dof_z - if wide_ui: - sub = split.row(align=True) - sub.prop(pchan, "ik_min_z", text="") - sub.prop(pchan, "ik_max_z", text="") - sub.active = pchan.ik_dof_z and pchan.ik_limit_z - split = layout.split() - split.prop(pchan, "ik_stretch", text="Stretch", slider=True) - if wide_ui: - split.label() - - if ob.pose.ik_solver == 'ITASC': - split = layout.split() - col = split.column() - col.prop(pchan, "ik_rot_control", text="Control Rotation") - if wide_ui: - col = split.column() - col.prop(pchan, "ik_rot_weight", text="Weight", slider=True) - # not supported yet - #row = layout.row() - #row.prop(pchan, "ik_lin_control", text="Joint Size") - #row.prop(pchan, "ik_lin_weight", text="Weight", slider=True) - - -class BONE_PT_iksolver_itasc(ConstraintButtonsPanel): - bl_label = "iTaSC parameters" - bl_default_closed = True - bl_context = "bone_constraint" - - def poll(self, context): - ob = context.object - bone = context.bone - - if ob and bone: - pchan = ob.pose.bones[bone.name] - return pchan.has_ik and ob.pose.ik_solver == 'ITASC' and ob.pose.ik_param - - return False - - def draw(self, context): - layout = self.layout - - ob = context.object - itasc = ob.pose.ik_param - wide_ui = context.region.width > narrowui - - layout.prop(itasc, "mode", expand=True) - simulation = itasc.mode == 'SIMULATION' - if simulation: - layout.label(text="Reiteration:") - layout.prop(itasc, "reiteration", expand=True) - - split = layout.split() - split.active = not simulation or itasc.reiteration != 'NEVER' - col = split.column() - col.prop(itasc, "precision") - - if wide_ui: - col = split.column() - col.prop(itasc, "num_iter") - - - if simulation: - layout.prop(itasc, "auto_step") - row = layout.row() - if itasc.auto_step: - row.prop(itasc, "min_step", text="Min") - row.prop(itasc, "max_step", text="Max") - else: - row.prop(itasc, "num_step") - - layout.prop(itasc, "solver") - if simulation: - layout.prop(itasc, "feedback") - layout.prop(itasc, "max_velocity") - if itasc.solver == 'DLS': - row = layout.row() - row.prop(itasc, "dampmax", text="Damp", slider=True) - row.prop(itasc, "dampeps", text="Eps", slider=True) - - class BONE_PT_constraints(ConstraintButtonsPanel): bl_label = "Bone Constraints" bl_context = "bone_constraint" @@ -917,6 +759,4 @@ class BONE_PT_constraints(ConstraintButtonsPanel): self.draw_constraint(context, con) bpy.types.register(OBJECT_PT_constraints) -bpy.types.register(BONE_PT_iksolver_itasc) -bpy.types.register(BONE_PT_inverse_kinematics) bpy.types.register(BONE_PT_constraints) -- cgit v1.2.3 From 2c3eb59f0f76482cec9a65e311704b2e48936364 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 14 Dec 2009 03:20:17 +0000 Subject: A few KeyingSet + Transform Tweaks: Autokeying for transform functions now gets context-info, allowing for bone paths to be recalculated. However, the main purpose of this is to allow KeyingSets to eventually have poll functions. --- source/blender/editors/animation/keyingsets.c | 72 +++----------- source/blender/editors/transform/transform.c | 4 +- source/blender/editors/transform/transform.h | 6 +- .../editors/transform/transform_conversions.c | 108 +++++---------------- .../blender/editors/transform/transform_generics.c | 4 +- 5 files changed, 46 insertions(+), 148 deletions(-) diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index c3606a03d1e..afd693d7981 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -1318,7 +1318,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet * provided by the user, and is stored, ready to use, in the KeyingSet paths. */ for (ksp= ks->paths.first; ksp; ksp= ksp->next) { - int arraylen, i; + int i; /* get pointer to name of group to add channels to */ if (ksp->groupmode == KSP_GROUP_NONE) @@ -1328,36 +1328,14 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet 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; + /* passing -1 as the array_index results in the entire array being modified */ + i= (ksp->flag & KSP_FLAG_WHOLE_ARRAY) ? (-1) : (ksp->array_index); - /* 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, kflag); - else if (mode == MODIFYKEY_MODE_DELETE) - success+= delete_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag); - } + /* 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) { @@ -1386,7 +1364,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet for (ksp= ks->paths.first; ksp; ksp= ksp->next) { DynStr *pathds= BLI_dynstr_new(); char *path = NULL; - int arraylen, i; + int i; /* set initial group name */ if (cks->id == NULL) { @@ -1461,32 +1439,14 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet 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; + /* passing -1 as the array_index results in the entire array being modified */ + i= (ksp->flag & KSP_FLAG_WHOLE_ARRAY) ? (-1) : (ksp->array_index); - /* 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(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); - } + /* 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); /* free the path */ MEM_freeN(path); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d6088648eb2..312939961f5 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1146,7 +1146,7 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */ - special_aftertrans_update(t); + special_aftertrans_update(C, t); postTrans(C, t); @@ -1715,7 +1715,7 @@ int transformEnd(bContext *C, TransInfo *t) } /* aftertrans does insert keyframes, and clears base flags, doesnt read transdata */ - special_aftertrans_update(t); + special_aftertrans_update(C, t); /* free data */ postTrans(C, t); diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 7d9c16ada9b..0b8fb365a56 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -546,15 +546,15 @@ float get_drawsize(struct ARegion *ar, float *co); void createTransData(struct bContext *C, TransInfo *t); void sort_trans_data_dist(TransInfo *t); void add_tdi_poin(float *poin, float *old, float delta); -void special_aftertrans_update(TransInfo *t); +void special_aftertrans_update(struct bContext *C, TransInfo *t); void transform_autoik_update(TransInfo *t, short mode); int count_set_pose_transflags(int *out_mode, short around, struct Object *ob); /* auto-keying stuff used by special_aftertrans_update */ -void autokeyframe_ob_cb_func(struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode); -void autokeyframe_pose_cb_func(struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik); +void autokeyframe_ob_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode); +void autokeyframe_pose_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik); /*********************** Constraints *****************************/ diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 915eaca3604..c7b5c29e262 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4507,7 +4507,8 @@ static void clear_trans_object_base_flags(TransInfo *t) /* auto-keyframing feature - for objects * tmode: should be a transform mode */ -void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode) +// NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases +void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, int tmode) { ID *id= &ob->id; FCurve *fcu; @@ -4603,11 +4604,12 @@ void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode) * tmode: should be a transform mode * targetless_ik: has targetless ik been done on any channels? */ -void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, short targetless_ik) +// NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases +void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, int tmode, short targetless_ik) { ID *id= &ob->id; AnimData *adt= ob->adt; - //bArmature *arm= ob->data; + bArmature *arm= ob->data; bAction *act= (adt) ? adt->action : NULL; bPose *pose= ob->pose; bPoseChannel *pchan; @@ -4714,15 +4716,13 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, } } - // XXX todo... figure out way to get appropriate notifiers sent - - /* do the bone paths */ -#if 0 // XXX TRANSFORM FIX ME - if (arm->pathflag & ARM_PATH_ACFRA) { + /* do the bone paths + * NOTE: only do this when there is context info + */ + if (C && (arm->pathflag & ARM_PATH_ACFRA)) { //pose_clear_paths(ob); // XXX for now, don't need to clear ED_pose_recalculate_paths(C, scene, ob); } -#endif } else { /* tag channels that should have unkeyed data */ @@ -4736,12 +4736,12 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, } -/* inserting keys, refresh ipo-keys, pointcache, redraw events... */ +/* inserting keys, pointcache, redraw events... */ /* * note: sequencer freeing has its own function now because of a conflict with transform's order of freeing (campbell) * Order changed, the sequencer stuff should go back in here * */ -void special_aftertrans_update(TransInfo *t) +void special_aftertrans_update(bContext *C, TransInfo *t) { Object *ob; // short redrawipo=0, resetslowpar=1; @@ -4769,24 +4769,15 @@ void special_aftertrans_update(TransInfo *t) } else if (t->spacetype == SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; - Scene *scene; bAnimContext ac; - /* initialise relevant anim-context 'context' data from TransInfo data */ - /* NOTE: sync this with the code in ANIM_animdata_get_context() */ - memset(&ac, 0, sizeof(bAnimContext)); - - scene= ac.scene= t->scene; - ob= ac.obact= OBACT; - ac.sa= t->sa; - ac.ar= t->ar; - ac.spacetype= (t->sa)? t->sa->spacetype : 0; - ac.regiontype= (t->ar)? t->ar->regiontype : 0; - - if (ANIM_animdata_context_getdata(&ac) == 0) + /* initialise relevant anim-context 'context' data */ + if (ANIM_animdata_get_context(C, &ac) == 0) return; + + ob = ac.obact; - if (ac.datatype == ANIMCONT_DOPESHEET) { + if (ELEM(ac.datatype, ANIMCONT_DOPESHEET, ANIMCONT_SHAPEKEY)) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; short filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); @@ -4815,12 +4806,10 @@ void special_aftertrans_update(TransInfo *t) /* free temp memory */ BLI_freelistN(&anim_data); } - else if (ac.datatype == ANIMCONT_ACTION) { + else if (ac.datatype == ANIMCONT_ACTION) { // TODO: just integrate into the above... /* Depending on the lock status, draw necessary views */ // fixme... some of this stuff is not good if (ob) { - ob->ctime= -1234567.0f; - if (ob->pose || ob_get_key(ob)) DAG_id_flush_update(&ob->id, OB_RECALC); else @@ -4834,22 +4823,6 @@ void special_aftertrans_update(TransInfo *t) posttrans_action_clean(&ac, (bAction *)ac.data); } } - else if (ac.datatype == ANIMCONT_SHAPEKEY) { -#if 0 // XXX old animation system - /* fix up the Ipocurves and redraw stuff */ - Key *key= (Key *)ac.data; - - if (key->ipo) { - if ( (saction->flag & SACTION_NOTRANSKEYCULL)==0 && - ((cancelled == 0) || (duplicate)) ) - { - posttrans_ipo_clean(key->ipo); - } - } -#endif // XXX old animation system - - DAG_id_flush_update(&OBACT->id, OB_RECALC_DATA); - } #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! */ @@ -4879,21 +4852,10 @@ void special_aftertrans_update(TransInfo *t) } else if (t->spacetype == SPACE_IPO) { SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; - Scene *scene; bAnimContext ac; - /* initialise relevant anim-context 'context' data from TransInfo data */ - /* NOTE: sync this with the code in ANIM_animdata_get_context() */ - memset(&ac, 0, sizeof(bAnimContext)); - - scene= ac.scene= t->scene; - ob= ac.obact= OBACT; - ac.sa= t->sa; - ac.ar= t->ar; - ac.spacetype= (t->sa)? t->sa->spacetype : 0; - ac.regiontype= (t->ar)? t->ar->regiontype : 0; - - if (ANIM_animdata_context_getdata(&ac) == 0) + /* initialise relevant anim-context 'context' data */ + if (ANIM_animdata_get_context(C, &ac) == 0) return; if (ac.datatype) @@ -4930,21 +4892,10 @@ void special_aftertrans_update(TransInfo *t) ANIM_editkeyframes_refresh(&ac); } else if (t->spacetype == SPACE_NLA) { - Scene *scene; bAnimContext ac; - /* initialise relevant anim-context 'context' data from TransInfo data */ - /* NOTE: sync this with the code in ANIM_animdata_get_context() */ - memset(&ac, 0, sizeof(bAnimContext)); - - scene= ac.scene= t->scene; - ob= ac.obact= OBACT; - ac.sa= t->sa; - ac.ar= t->ar; - ac.spacetype= (t->sa)? t->sa->spacetype : 0; - ac.regiontype= (t->ar)? t->ar->regiontype : 0; - - if (ANIM_animdata_context_getdata(&ac) == 0) + /* initialise relevant anim-context 'context' data */ + if (ANIM_animdata_get_context(C, &ac) == 0) return; if (ac.datatype) @@ -4974,10 +4925,6 @@ void special_aftertrans_update(TransInfo *t) } } else if (t->obedit) { - // TRANSFORM_FIX_ME -// if (t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE) -// allqueue(REDRAWBUTSEDIT, 0); - if (t->obedit->type == OB_MESH) { EditMesh *em = ((Mesh *)t->obedit->data)->edit_mesh; @@ -5011,7 +4958,7 @@ void special_aftertrans_update(TransInfo *t) /* automatic inserting of keys and unkeyed tagging - only if transform wasn't cancelled (or TFM_DUMMY) */ if (!cancelled && (t->mode != TFM_DUMMY)) { - autokeyframe_pose_cb_func(t->scene, (View3D *)t->view, ob, t->mode, targetless_ik); + autokeyframe_pose_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode, targetless_ik); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else if (arm->flag & ARM_DELAYDEFORM) { @@ -5022,9 +4969,6 @@ void special_aftertrans_update(TransInfo *t) else DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - //if (t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE) - // allqueue(REDRAWBUTSEDIT, 0); - } else if(t->scene->basact && (ob = t->scene->basact->object) && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(t->scene, ob)) { ; @@ -5064,19 +5008,13 @@ void special_aftertrans_update(TransInfo *t) /* Set autokey if necessary */ if (!cancelled) - autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode); + autokeyframe_ob_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode); } } clear_trans_object_base_flags(t); #if 0 // TRANSFORM_FIX_ME - if (redrawipo) { - allqueue(REDRAWNLA, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWIPO, 0); - } - if(resetslowpar) reset_slowparents(); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 7951b002174..f2c4da0da27 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -746,7 +746,7 @@ void recalcData(TransInfo *t) int targetless_ik= (t->flag & T_AUTOIK); // XXX this currently doesn't work, since flags aren't set yet! animrecord_check_state(t->scene, &ob->id, t->animtimer); - autokeyframe_pose_cb_func(t->scene, (View3D *)t->view, ob, t->mode, targetless_ik); + autokeyframe_pose_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode, targetless_ik); } /* old optimize trick... this enforces to bypass the depgraph */ @@ -789,7 +789,7 @@ void recalcData(TransInfo *t) // TODO: autokeyframe calls need some setting to specify to add samples (FPoints) instead of keyframes? if ((t->animtimer) && IS_AUTOKEY_ON(t->scene)) { animrecord_check_state(t->scene, &ob->id, t->animtimer); - autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode); + autokeyframe_ob_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode); } /* proxy exception */ -- cgit v1.2.3 From 07e5337615e922d7eb457a1d4793adcb0c680d8c Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Dec 2009 03:48:23 +0000 Subject: Small fix for 'custom' anim player preset --- release/scripts/op/screen_play_rendered_anim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index a2e21f0d510..49a8efd9d05 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -120,7 +120,7 @@ class PlayRenderedAnim(bpy.types.Operator): opts = ["-fps", str(rd.fps), "-play", "[ %s ]" % file] cmd.extend(opts) else: # 'CUSTOM' - cmd.extend(file) + cmd.append(file) # launch it try: -- cgit v1.2.3 From 602f372f66f309b73fe6b98c412d422c22a3f6de Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Dec 2009 04:03:18 +0000 Subject: Fix for playing back movie files --- release/scripts/op/screen_play_rendered_anim.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index 49a8efd9d05..9e9bddba0fc 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -50,6 +50,15 @@ img_format_exts = { 'THEORA':'ogg', } +movie_formats = ('QUICKTIME_QTKIT', + 'QUICKTIME_CARBONTKIT', + 'AVIRAW', + 'AVIJPEG', + 'AVICODEC', + 'XVID', + 'THEORA' + ) + def guess_player_path(preset): if preset == 'BLENDER24': player_path = 'blender' @@ -91,16 +100,19 @@ class PlayRenderedAnim(bpy.types.Operator): preset = prefs.filepaths.animation_player_preset player_path = prefs.filepaths.animation_player + file_path = bpy.utils.expandpath(rd.output_path) # try and guess a command line if it doesn't exist if player_path == '': player_path = guess_player_path(preset) # doesn't support ### frame notation yet - if preset in ('BLENDER24', 'DJV', 'CUSTOM'): - file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) + if rd.file_format in movie_formats: + file = "%s%04d_%04d" % (file_path, sce.start_frame, sce.end_frame) + elif preset in ('BLENDER24', 'DJV', 'CUSTOM'): + file = "%s%04d" % (file_path, sce.start_frame) elif preset in ('FRAMECYCLER', 'RV'): - file = "%s#" % bpy.utils.expandpath(rd.output_path) + file = "%s#" % file_path if rd.file_extensions: file += '.' + img_format_exts[rd.file_format] -- cgit v1.2.3 From b2de6b93a6985b7965211c4fe691a9b3265fc247 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 14 Dec 2009 04:58:29 +0000 Subject: * Custom Player: -Added Windows Path for Blender 2.4 Player. (Tested on Windows Vista). --- release/scripts/op/screen_play_rendered_anim.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index 9e9bddba0fc..d2a32cf1e34 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -65,6 +65,9 @@ def guess_player_path(preset): if platform.system() == 'Darwin': test_path = '/Applications/blender 2.49.app/Contents/MacOS/blender' + elif platform.system() == 'Windows': + test_path = '/Program Files/Blender Foundation/Blender/blender.exe' + if os.path.exists(test_path): player_path = test_path -- cgit v1.2.3 From e01b030817e10163670ce6b03b2a416a668c7555 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 14 Dec 2009 06:25:42 +0000 Subject: Bugfix #20351: - Offset parameter of the path constraint has no effect on the animation - Path animation was being repeated multiple times even though it was not supposed to --- source/blender/blenkernel/intern/constraint.c | 22 +++++++++++----------- source/blender/blenkernel/intern/object.c | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index aff3bf058fd..797fe8f7324 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -1191,17 +1191,17 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr if ((data->followflag & FOLLOWPATH_STATIC) == 0) { /* animated position along curve depending on time */ if (cob->scene) - curvetime= bsystem_time(cob->scene, ct->tar, ctime, 0.0) - data->offset; + curvetime= bsystem_time(cob->scene, ct->tar, cu->ctime, 0.0) - data->offset; else - curvetime= ctime - data->offset; + curvetime= cu->ctime - data->offset; /* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated, * but this will only work if it actually is animated... * - * we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen - * range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0 + * we divide the curvetime calculated in the previous step by the length of the path, to get a time + * factor, which then gets clamped to lie within 0.0 - 1.0 range */ - curvetime= fmod(cu->ctime, cu->pathlen) / cu->pathlen; + curvetime /= cu->pathlen; CLAMP(curvetime, 0.0, 1.0); } else { @@ -1211,7 +1211,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr if ( where_on_path(ct->tar, curvetime, vec, dir, NULL, &radius) ) { if (data->followflag & FOLLOWPATH_FOLLOW) { - vec_to_quat( quat,dir, (short) data->trackflag, (short) data->upflag); + vec_to_quat(quat, dir, (short)data->trackflag, (short)data->upflag); normalize_v3(dir); q[0]= (float)cos(0.5*vec[3]); @@ -1221,7 +1221,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr q[3]= -x1*dir[2]; mul_qt_qtqt(quat, q, quat); - quat_to_mat4( totmat,quat); + quat_to_mat4(totmat, quat); } if (data->followflag & FOLLOWPATH_RADIUS) { @@ -1251,12 +1251,12 @@ static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase float size[3]; bFollowPathConstraint *data= con->data; - /* get Object local transform (loc/rot/size) to determine transformation from path */ - //object_to_mat4(ob, obmat); - copy_m4_m4(obmat, cob->matrix); // FIXME!!! + /* get Object transform (loc/rot/size) to determine transformation from path */ + // TODO: this used to be local at one point, but is probably more useful as-is + copy_m4_m4(obmat, cob->matrix); /* get scaling of object before applying constraint */ - mat4_to_size( size,cob->matrix); + mat4_to_size(size, cob->matrix); /* apply targetmat - containing location on path, and rotation */ mul_serie_m4(cob->matrix, ct->matrix, obmat, NULL, NULL, NULL, NULL, NULL, NULL); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 47830453c2e..6b86c6c2908 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1664,10 +1664,10 @@ static void ob_parcurve(Scene *scene, Object *ob, Object *par, float mat[][4]) /* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated, * but this will only work if it actually is animated... * - * we firstly calculate the modulus of cu->ctime/cu->pathlen to clamp ctime within the 0.0 to 1.0 times pathlen - * range, then divide this (the modulus) by pathlen to get a value between 0.0 and 1.0 + * we divide the curvetime calculated in the previous step by the length of the path, to get a time + * factor, which then gets clamped to lie within 0.0 - 1.0 range */ - ctime= fmod(cu->ctime, cu->pathlen) / cu->pathlen; + ctime= cu->ctime / cu->pathlen; CLAMP(ctime, 0.0, 1.0); } else { -- cgit v1.2.3 From 96df285ff6658b6e65b9aac3e65c506e11913e2d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 10:52:02 +0000 Subject: Fix #20367: game engine crash, origindex layer is now optional. --- .../Physics/Bullet/CcdPhysicsController.cpp | 30 +++++++++++++--------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 767854e5725..31078abb164 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -167,9 +167,9 @@ bool CcdPhysicsController::CreateSoftbody() //disable soft body until first sneak preview is ready if (!m_cci.m_bSoft || !m_cci.m_collisionShape || - (shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&& + ((shapeType != CONVEX_HULL_SHAPE_PROXYTYPE)&& (shapeType != TRIANGLE_MESH_SHAPE_PROXYTYPE) && - (shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)) + (shapeType != SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE))) { return false; } @@ -1437,7 +1437,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, for (int p2=0; p2GetPolygon(index[p2]); + RAS_Polygon* poly = meshobj->GetPolygon((index)? index[p2]: p2); // only add polygons that have the collision flag set if (poly->IsCollider()) @@ -1456,7 +1456,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, for (int p2=0; p2GetPolygon(index[p2]); + RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2); // only add polygons that have the collisionflag set if (poly->IsCollider()) @@ -1504,7 +1504,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, for (int p2=0; p2GetPolygon(index[p2]); + RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2); // only add polygons that have the collision flag set if (poly->IsCollider()) @@ -1541,7 +1541,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, { MFace* mf = &mface[p2]; MTFace* tf = (tface) ? &tface[p2] : NULL; - RAS_Polygon* poly= meshobj->GetPolygon(index[p2]); + RAS_Polygon* poly= meshobj->GetPolygon((index)? index[p2]: p2); // only add polygons that have the collisionflag set if (poly->IsCollider()) @@ -1567,7 +1567,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, } // m_polygonIndexArray - *poly_index_pt= index[p2]; + *poly_index_pt= (index)? index[p2]: p2; poly_index_pt++; // the vertex location @@ -1610,7 +1610,7 @@ bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, DerivedMesh* dm, } // m_polygonIndexArray - *poly_index_pt= index[p2]; + *poly_index_pt= (index)? index[p2]: p2; poly_index_pt++; // the vertex location @@ -1776,13 +1776,16 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA { if(tf->mode & TF_DYNAMIC) { + int origi = (index)? index[i]: i; + if(mf->v4) { fv_pt= quad_verts; - *poly_index_pt++ = *poly_index_pt++ = index[i]; + *poly_index_pt++ = origi; + *poly_index_pt++ = origi; flen= 4; } else { fv_pt= tri_verts; - *poly_index_pt++ = index[i]; + *poly_index_pt++ = origi; flen= 3; } @@ -1832,13 +1835,16 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA } for(mf= mface, i=0; i < numpolys; mf++, i++) { + int origi = (index)? index[i]: i; + if(mf->v4) { fv_pt= quad_verts; - *poly_index_pt++ = *poly_index_pt++ = index[i]; + *poly_index_pt++ = origi; + *poly_index_pt++ = origi; } else { fv_pt= tri_verts; - *poly_index_pt++ = index[i]; + *poly_index_pt++ = origi; } for(; *fv_pt > -1; fv_pt++) -- cgit v1.2.3 From b1a39375e5f57723baeb4004a53219f2ecb1181a Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 14 Dec 2009 12:09:20 +0000 Subject: Keyframing Bugfixes and Feature Requests: * Added a User-Pref option for the "XYZ to RGB" colour-mode setting for new F-Curves to compliment the one used for Keying Sets. With this option enabled, the builtin Keying Sets also can obey this option. * Made all places that were previously manually checking the flags for keyframing to use a standard API function to do this now. * Fixed bug introduced earlier today in commit 25353 by reverting the changes to keyingsets.c. Forgot that delete_keyframe doesn't handle do the "entire array" hack with array_index = -1 * Fixed bug with the insert-keyframe code for the array_index = -1 case, where too many channels were being keyed (i.e. an imaginary channel was often keyed in addition to the valid ones) --- release/scripts/ui/space_userpref.py | 1 + .../editors/animation/anim_channels_defines.c | 16 +--- source/blender/editors/animation/keyframing.c | 43 +++++++++-- source/blender/editors/animation/keyingsets.c | 86 ++++++++++++++++------ source/blender/editors/include/ED_keyframing.h | 7 ++ source/blender/editors/interface/interface_anim.c | 9 +-- source/blender/editors/space_action/action_edit.c | 4 +- source/blender/editors/space_graph/graph_edit.c | 4 +- .../editors/transform/transform_conversions.c | 16 +--- source/blender/makesdna/DNA_userdef_types.h | 1 + source/blender/makesrna/intern/rna_animation.c | 2 +- source/blender/makesrna/intern/rna_userdef.c | 6 +- 12 files changed, 122 insertions(+), 73 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 6d1a358408f..cf5b2eb9eed 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -213,6 +213,7 @@ class USERPREF_PT_edit(bpy.types.Panel): col.label(text="New F-Curve Defaults:") col.prop(edit, "new_interpolation_type", text="Interpolation") + col.prop(edit, "insertkey_xyz_to_rgb", text="XYZ to RGB") col.separator() diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index c3044e03a2f..0a71f79f132 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -2395,13 +2395,7 @@ static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poi cfra= (float)CFRA; /* get flags for keyframing */ - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; - + flag = ANIM_get_keyframing_flags(scene, 1); /* get RNA pointer, and resolve the path */ RNA_id_pointer_create(id, &id_ptr); @@ -2438,13 +2432,7 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi cfra= (float)CFRA; /* get flags for keyframing */ - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; - + flag = ANIM_get_keyframing_flags(scene, 1); /* get RNA pointer, and resolve the path */ RNA_id_pointer_create((ID *)key, &id_ptr); diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 3e25c9a6b60..b126e57705e 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -80,6 +80,40 @@ #include "anim_intern.h" +/* ************************************************** */ +/* Keyframing Setting Wrangling */ + +/* Get the active settings for keyframing settings from context (specifically the given scene) */ +short ANIM_get_keyframing_flags (Scene *scene, short incl_mode) +{ + short flag = 0; + + /* standard flags */ + { + /* visual keying */ + if (IS_AUTOKEY_FLAG(AUTOMATKEY)) + flag |= INSERTKEY_MATRIX; + + /* only needed */ + if (IS_AUTOKEY_FLAG(INSERTNEEDED)) + flag |= INSERTKEY_NEEDED; + + /* default F-Curve color mode - RGB from XYZ indicies */ + if (IS_AUTOKEY_FLAG(XYZ2RGB)) + flag |= INSERTKEY_XYZ2RGB; + } + + /* only if including settings from the autokeying mode... */ + if (incl_mode) + { + /* keyframing mode - only replace existing keyframes */ + if (IS_AUTOKEY_MODE(scene, EDITKEYS)) + flag |= INSERTKEY_REPLACE; + } + + return flag; +} + /* ******************************************* */ /* Animation Data Validation */ @@ -838,7 +872,7 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ /* key entire array convenience method */ if (array_index == -1) { array_index= 0; - array_index_max= RNA_property_array_length(&ptr, prop) + 1; + array_index_max= RNA_property_array_length(&ptr, prop); } /* will only loop once unless the array index was -1 */ @@ -1326,12 +1360,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) short flag = 0; /* flags for inserting keyframes */ - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; + flag = ANIM_get_keyframing_flags(scene, 1); /* try to insert keyframe using property retrieved from UI */ memset(&ptr, 0, sizeof(PointerRNA)); diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index afd693d7981..d5624b8bc5b 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -133,11 +133,9 @@ static int add_default_keyingset_exec (bContext *C, wmOperator *op) */ flag |= KEYINGSET_ABSOLUTE; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - keyingflag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - keyingflag |= INSERTKEY_NEEDED; - + /* 2nd arg is 0 to indicate that we don't want to include autokeying mode related settings */ + keyingflag = ANIM_get_keyframing_flags(scene, 0); + /* call the API func, and set the active keyingset index */ BKE_keyingset_add(&scene->keyingsets, NULL, flag, keyingflag); @@ -326,6 +324,8 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) keyingflag |= INSERTKEY_MATRIX; if (IS_AUTOKEY_FLAG(INSERTNEEDED)) keyingflag |= INSERTKEY_NEEDED; + if (IS_AUTOKEY_FLAG(XYZ2RGB)) + keyingflag |= INSERTKEY_XYZ2RGB; /* call the API func, and set the active keyingset index */ ks= BKE_keyingset_add(&scene->keyingsets, "ButtonKeyingSet", flag, keyingflag); @@ -1305,9 +1305,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet kflag= ks->keyingflag; /* suppliment with info from the context */ - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) kflag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) kflag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) kflag |= INSERTKEY_REPLACE; + kflag |= ANIM_get_keyframing_flags(scene, 1); } else if (mode == MODIFYKEY_MODE_DELETE) kflag= 0; @@ -1318,7 +1316,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet * provided by the user, and is stored, ready to use, in the KeyingSet paths. */ for (ksp= ks->paths.first; ksp; ksp= ksp->next) { - int i; + int arraylen, i; /* get pointer to name of group to add channels to */ if (ksp->groupmode == KSP_GROUP_NONE) @@ -1328,14 +1326,36 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet else groupname= ksp->group; - /* passing -1 as the array_index results in the entire array being modified */ - i= (ksp->flag & KSP_FLAG_WHOLE_ARRAY) ? (-1) : (ksp->array_index); + /* 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++; - /* 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); + /* 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, 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) { @@ -1364,7 +1384,7 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet for (ksp= ks->paths.first; ksp; ksp= ksp->next) { DynStr *pathds= BLI_dynstr_new(); char *path = NULL; - int i; + int arraylen, i; /* set initial group name */ if (cks->id == NULL) { @@ -1439,14 +1459,32 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet else if (ksp->groupmode == KSP_GROUP_NAMED) groupname= ksp->group; - /* passing -1 as the array_index results in the entire array being modified */ - i= (ksp->flag & KSP_FLAG_WHOLE_ARRAY) ? (-1) : (ksp->array_index); + /* 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; - /* 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); + /* 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(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); + } /* free the path */ MEM_freeN(path); diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 45a62ee7bcb..d16cfe540ea 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -49,6 +49,13 @@ struct PropertyRNA; /* ************ Keyframing Management **************** */ +/* Get the active settings for keyframing settings from context (specifically the given scene) + * - incl_mode: include settings from keyframing mode in the result (i.e. replace only) + */ +short ANIM_get_keyframing_flags(struct Scene *scene, short incl_mode); + +/* -------- */ + /* Get (or add relevant data to be able to do so) the Active Action for the given * Animation Data block, given an ID block where the Animation Data should reside. */ diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 0925598cc99..acfd48e0269 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -147,14 +147,7 @@ void ui_but_anim_autokey(uiBut *but, Scene *scene, float cfra) // TODO: this should probably respect the keyingset only option for anim if(autokeyframe_cfra_can_key(scene, id)) { - short flag = 0; - - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; + short flag = ANIM_get_keyframing_flags(scene, 1); fcu->flag &= ~FCURVE_SELECTED; insert_keyframe(id, action, ((fcu->grp)?(fcu->grp->name):(NULL)), fcu->rna_path, fcu->array_index, cfra, flag); diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index c5da96267e1..e7b1dcb677d 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -446,9 +446,7 @@ static void insert_action_keys(bAnimContext *ac, short mode) ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* init keyframing flag */ - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) flag |= INSERTKEY_REPLACE; + flag = ANIM_get_keyframing_flags(scene, 1); /* insert keyframes */ for (ale= anim_data.first; ale; ale= ale->next) { diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 6e488678f2b..8ac3f2efefb 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -428,9 +428,7 @@ static void insert_graph_keys(bAnimContext *ac, short mode) ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* init keyframing flag */ - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) flag |= INSERTKEY_REPLACE; + flag = ANIM_get_keyframing_flags(scene, 1); /* insert keyframes */ for (ale= anim_data.first; ale; ale= ale->next) { diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index c7b5c29e262..e9b0cb40b1b 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4525,13 +4525,7 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, memset(&cks, 0, sizeof(bCommonKeySrc)); cks.id= &ob->id; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; - + flag = ANIM_get_keyframing_flags(scene, 1); if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (active_ks)) { /* only insert into active keyingset */ @@ -4632,12 +4626,10 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o * visual keyframes even if flag not set, as it's not that useful otherwise * (for quick animation recording) */ - if (IS_AUTOKEY_FLAG(AUTOMATKEY) || (targetless_ik)) + flag = ANIM_get_keyframing_flags(scene, 1); + + if (targetless_ik) flag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - flag |= INSERTKEY_NEEDED; - if (IS_AUTOKEY_MODE(scene, EDITKEYS)) - flag |= INSERTKEY_REPLACE; for (pchan=pose->chanbase.first; pchan; pchan=pchan->next) { if (pchan->bone->flag & BONE_TRANSFORM) { diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index c6b1bf0b3f6..a6be7256170 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -433,6 +433,7 @@ extern UserDef U; /* from blenkernel blender.c */ #define AUTOKEY_FLAG_INSERTAVAIL (1<<0) #define AUTOKEY_FLAG_INSERTNEEDED (1<<1) #define AUTOKEY_FLAG_AUTOMATKEY (1<<2) +#define AUTOKEY_FLAG_XYZ2RGB (1<<3) /* U.autokey_flag (strictly autokeying only) */ #define AUTOKEY_FLAG_ONLYKEYINGSET (1<<6) /* toolsettings->autokey_flag */ diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index 035194e0d9f..56e2707b5bb 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -269,7 +269,7 @@ static void rna_def_keyingset(BlenderRNA *brna) prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_XYZ2RGB); - RNA_def_property_ui_text(prop, "XYZ Transforms to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis."); + RNA_def_property_ui_text(prop, "F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis."); /* Keying Set API */ RNA_api_keyingset(srna); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index d3329907939..9b314afeb08 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1918,7 +1918,11 @@ static void rna_def_userdef_edit(BlenderRNA *brna) prop= RNA_def_property(srna, "use_visual_keying", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_AUTOMATKEY); RNA_def_property_ui_text(prop, "Visual Keying", "Use Visual keying automatically for constrained objects."); - + + prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_XYZ2RGB); + RNA_def_property_ui_text(prop, "New F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis."); + prop= RNA_def_property(srna, "new_interpolation_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, new_interpolation_types); RNA_def_property_enum_sdna(prop, NULL, "ipo_new"); -- cgit v1.2.3 From 87a5ce06f349f3c79b4f6ae1c75c35987776f69e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 13:11:22 +0000 Subject: Fix #20372: crash when strand render enabled with child hairs. --- source/blender/render/intern/source/convertblender.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index d0f7b2d60a5..c89811a62e0 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1707,14 +1707,8 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem totface= psmd->dm->getNumFaces(psmd->dm); origindex= psmd->dm->getFaceDataArray(psmd->dm, CD_ORIGINDEX); - if(origindex) { - for(a=0; atotbound= MAX2(strandbuf->totbound, origindex[a]); - } - else { - for(a=0; atotbound= MAX2(strandbuf->totbound, a); - } + for(a=0; atotbound= MAX2(strandbuf->totbound, (origindex)? origindex[a]: a); strandbuf->totbound++; strandbuf->bound= MEM_callocN(sizeof(StrandBound)*strandbuf->totbound, "StrandBound"); @@ -1856,8 +1850,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem dosimplify = psys_render_simplify_params(psys, cpa, simplify); if(strandbuf) { - if(origindex[cpa->num]+1 > sbound - strandbuf->bound) { - sbound= strandbuf->bound + origindex[cpa->num]+1; + int orignum= (origindex)? origindex[cpa->num]: cpa->num; + + if(orignum > sbound - strandbuf->bound) { + sbound= strandbuf->bound + orignum; sbound->start= sbound->end= obr->totstrand; } } -- cgit v1.2.3 From d612fdcdec006ea6229b0731f58e884c8e2cc4df Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 13:15:23 +0000 Subject: Fix #20377: object layer and modifier realtime setting are now editable again on library linked objects. The former is ok because it is actually the scene data being edited, the latter will not be saved to file but is useful.. --- source/blender/makesrna/intern/rna_modifier.c | 1 + source/blender/makesrna/intern/rna_object.c | 1 + 2 files changed, 2 insertions(+) diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 2754341810c..dcbc2672bcb 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2030,6 +2030,7 @@ void RNA_def_modifier(BlenderRNA *brna) prop= RNA_def_property(srna, "realtime", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Realtime); RNA_def_property_ui_text(prop, "Realtime", "Realtime display of a modifier."); + RNA_def_property_flag(prop, PROP_LIB_EXCEPTION); RNA_def_property_update(prop, 0, "rna_Modifier_update"); RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 0); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index c4bfb9e0197..021fdcefd33 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1458,6 +1458,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_array(prop, 20); RNA_def_property_ui_text(prop, "Layers", "Layers the object is on."); RNA_def_property_boolean_funcs(prop, NULL, "rna_Object_layer_set"); + RNA_def_property_flag(prop, PROP_LIB_EXCEPTION); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_layer_update"); prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From f922d5d454593258586eae1c5390e913e0fa044d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 13:20:47 +0000 Subject: Fix #20376: crash with layer sculpt and multires. This is not working yet, at least prevents the crash for now. --- source/blender/editors/sculpt_paint/sculpt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 8b705ff5b5e..0dd41fb559a 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1104,7 +1104,7 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int int n; /* XXX not working yet for multires */ - if(!ss->mvert) + if(ss->multires) return; if(ss->cache->flip) @@ -1683,7 +1683,7 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); /* Initialize layer brush displacements and persistent coords */ - if(brush->sculpt_tool == SCULPT_TOOL_LAYER) { + 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); @@ -1958,7 +1958,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) copy_v3_v3(fn, cache->face_norms[i]); } - if(brush->sculpt_tool == SCULPT_TOOL_LAYER) + if(brush->sculpt_tool == SCULPT_TOOL_LAYER && !ss->multires) memset(ss->layer_disps, 0, sizeof(float) * ss->totvert); } } -- cgit v1.2.3 From be6bf5faf65801d917ef515b7394cac53cbe0715 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 13:45:45 +0000 Subject: Fix #20380: Duplicating mesh with Particle Instance Mod, Pole Axis not copied. --- source/blender/blenkernel/intern/modifier.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 9390c7d67c4..e75203c6cde 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -6570,6 +6570,7 @@ static void particleInstanceModifier_copyData(ModifierData *md, ModifierData *ta tpimd->ob = pimd->ob; tpimd->psys = pimd->psys; tpimd->flag = pimd->flag; + tpimd->axis = pimd->axis; tpimd->position = pimd->position; tpimd->random_position = pimd->random_position; } -- cgit v1.2.3 From 7b70ec6b9d088b6e7d5c2d937d9acd1ec026d38b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 14:08:04 +0000 Subject: Fix #20356: ctrl+1/2/.. could set multires levels outside limits. --- release/scripts/op/object.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 64406fd0d5c..a6ab3dcc93f 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -94,11 +94,14 @@ class SubdivisionSet(bpy.types.Operator): level = self.properties.level ob = context.active_object for mod in ob.modifiers: - if mod.type == 'MULTIRES' and ob.mode == 'SCULPT': - if mod.sculpt_levels != level: - mod.sculpt_levels = level + if mod.type == 'MULTIRES': + if level < mod.total_levels: + if ob.mode == 'SCULPT' and mod.sculpt_levels != level: + mod.sculpt_levels = level + elif ob.mode == 'OBJECT' and mod.levels != level: + mod.levels = level return ('FINISHED',) - elif mod.type == 'SUBSURF' or mod.type == 'MULTIRES': + elif mod.type == 'SUBSURF': if mod.levels != level: mod.levels = level return ('FINISHED',) -- cgit v1.2.3 From 32d5429e353b68ed90f2e32edc48a7841a2b4138 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 14:16:39 +0000 Subject: Fix #20323: closing other window while BGE is running crashes. --- source/blender/editors/space_view3d/view3d_view.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index a569eff1ebe..a4f24e90080 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1709,6 +1709,7 @@ static int game_engine_exec(bContext *C, wmOperator *unused) Scene *startscene = CTX_data_scene(C); ScrArea *sa, *prevsa= CTX_wm_area(C); ARegion *ar, *prevar= CTX_wm_region(C); + wmWindow *prevwin= CTX_wm_window(C); RegionView3D *rv3d; rcti cam_frame; @@ -1742,11 +1743,15 @@ static int game_engine_exec(bContext *C, wmOperator *unused) SaveState(C); + StartKetsjiShell(C, ar, &cam_frame, 1); - RestoreState(C); + /* restore context, in case it changed in the meantime, for + example by working in another window or closing it */ CTX_wm_region_set(C, prevar); CTX_wm_area_set(C, prevsa); + CTX_wm_window_set(C, prevwin); + RestoreState(C); //XXX restore_all_scene_cfra(scene_cfra_store); set_scene_bg(startscene); -- cgit v1.2.3 From 3bf27683be8401a53c761201fcd09974a53a80b7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 14:21:06 +0000 Subject: automatic layer placement, users can set the layers if they want. predefined layer types 'main', 'extra', 'ik', 'fk' --- release/scripts/modules/rigify/__init__.py | 17 +++++++++++++ .../scripts/modules/rigify/arm_biped_generic.py | 28 ++++++++++++++++++---- release/scripts/modules/rigify/copy.py | 12 +++++++--- release/scripts/modules/rigify/finger_curl.py | 12 +++++++++- .../scripts/modules/rigify/leg_biped_generic.py | 27 +++++++++++++++++---- release/scripts/modules/rigify/neck_flex.py | 14 +++++++++-- release/scripts/modules/rigify/palm_curl.py | 7 ++++++ release/scripts/modules/rigify/spine_pivot_flex.py | 16 +++++++++++++ release/test/pep8.py | 4 +++- 9 files changed, 122 insertions(+), 15 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 9e59f0965e0..9dd00cf66e9 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -24,6 +24,7 @@ from Mathutils import Vector # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get SPECIAL_TYPES = "root", +LAYER_TYPES = "main", "extra", "ik", "fk" class RigifyError(Exception): @@ -81,6 +82,22 @@ def get_bone_type_options(pbone, type_name): return options +def get_layer_dict(options): + ''' + Extracts layer info from a bone options dict + defaulting to the layer index if not set. + ''' + layer_default = [False] * 32 + result = {} + for i, layer_type in enumerate(LAYER_TYPES): + # no matter if its not defined + layer_index = options.get("layer_" + layer_type, i + 2) + layer = layer_default[:] + layer[layer_index-1] = True + result[layer_type] = layer + return result + + def validate_rig(context, obj): ''' Makes no changes diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index 22de14ade54..1c4c6fd2a6b 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -19,7 +19,7 @@ # import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from Mathutils import Vector @@ -170,8 +170,17 @@ def ik(obj, definitions, base_names, options): prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 - bpy.ops.object.mode_set(mode='EDIT') + # last step setup layers + layers = get_layer_dict(options) + lay = layers["ik"] + for attr in ik_chain.attr_names: + getattr(ik_chain, attr + "_b").layer = lay + for attr in ik.attr_names: + getattr(ik, attr + "_b").layer = lay + + + bpy.ops.object.mode_set(mode='EDIT') # don't blend the shoulder return [None] + ik_chain.names() @@ -184,7 +193,7 @@ def fk(obj, definitions, base_names, options): mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions mt.update() - ex = bone_class_instance(obj, ["socket", "arm_hinge", "hand_delta"]) + ex = bone_class_instance(obj, ["socket", "hand_delta"]) fk_chain = mt.copy(base_names=base_names) # shoulder is used as a hinge @@ -263,8 +272,19 @@ def fk(obj, definitions, base_names, options): hinge_setup() - bpy.ops.object.mode_set(mode='EDIT') + # last step setup layers + layers = get_layer_dict(options) + lay = layers["fk"] + for attr in fk_chain.attr_names: + getattr(fk_chain, attr + "_b").layer = lay + + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + + bpy.ops.object.mode_set(mode='EDIT') return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 77bf2d35bb8..d388ee18316 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -19,6 +19,7 @@ # import bpy +from rigify import get_layer_dict from rigify_utils import bone_class_instance METARIG_NAMES = ("cpy",) @@ -55,12 +56,17 @@ def main(obj, bone_definition, base_names, options): cp.update() mt.update() + if not cp.cpy_b.connected: + con = cp.cpy_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt.cpy + con = cp.cpy_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.cpy - con = cp.cpy_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = mt.cpy + # setup layers last + layers = get_layer_dict(options) + cp.cpy_b.layer = layers["main"] return [mt.cpy] diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 03c76672d6c..cec6504a8aa 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -19,7 +19,7 @@ # import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -213,5 +213,15 @@ def main(obj, bone_definition, base_names, options): i += 1 + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for child_bone_name, driver_bone_name in driver_bone_pairs: + arm.bones[driver_bone_name].layer = lay + + lay = layers["main"] + arm.bones[control_bone_name].layer = lay + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index c48ff093a2f..2c5481be1b7 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -19,7 +19,7 @@ # import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -131,8 +131,6 @@ def ik(obj, bone_definition, base_names, options): # setup the existing bones mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) - #ex = bone_class_instance(obj, [""]) - ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) # children of ik_foot ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) @@ -215,7 +213,6 @@ def ik(obj, bone_definition, base_names, options): bpy.ops.object.mode_set(mode='OBJECT') ik.update() - ex.update() mt_chain.update() ik_chain.update() @@ -269,6 +266,15 @@ def ik(obj, bone_definition, base_names, options): con.minimum_x = -180.0 # XXX -deg con.maximum_x = 0.0 + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["ik"] + for attr in ik_chain.attr_names: + getattr(ik_chain, attr + "_b").layer = lay + for attr in ik.attr_names: + getattr(ik, attr + "_b").layer = lay + bpy.ops.object.mode_set(mode='EDIT') return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None @@ -348,6 +354,19 @@ def fk(obj, bone_definition, base_names, options): mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 + + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["fk"] + for attr in fk_chain.attr_names: + getattr(fk_chain, attr + "_b").layer = lay + + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + bpy.ops.object.mode_set(mode='EDIT') # dont blend the hips or heel diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 377fd9c9bc8..137fb626bcf 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -19,7 +19,7 @@ # import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -121,7 +121,7 @@ def main(obj, bone_definition, base_names, options): neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] neck_chain_segment_length = mt_chain.neck_01_e.length - ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket", "head_ctrl"]) # hinge & extras + ex = bone_class_instance(obj, ["head", "head_hinge", "neck_socket", "head_ctrl"]) # hinge & extras # Add the head hinge at the bodys location, becomes the parent of the original head @@ -296,5 +296,15 @@ def main(obj, bone_definition, base_names, options): con.target = obj con.subtarget = neck_p.name + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for attr in ex_chain.attr_names: + getattr(ex_chain, attr + "_b").layer = lay + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index ee99ef6e82a..8e0a80f98e8 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -19,6 +19,7 @@ # import bpy +from rigify import get_layer_dict from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -232,5 +233,11 @@ def main(obj, bone_definition, base_names, options): if x_direction(): # flip driver.expression = "-(%s)" % driver.expression + + # last step setup layers + layers = get_layer_dict(options) + arm.bones[control_name].layer = layers["extra"] + + # no blending the result of this return None diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 4765f0591f7..ca954eeef4f 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -19,6 +19,7 @@ # import bpy +from rigify import get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -495,5 +496,20 @@ def main(obj, bone_definition, base_names, options): mod.coefficients[0] = - (i - 1) mod.coefficients[1] = spine_chain_len + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + for attr in ex_chain.attr_names: + getattr(ex_chain, attr + "_b").layer = lay + + lay = layers["main"] + for attr in df.attr_names: + getattr(df, attr + "_b").layer = lay + for attr in rv_chain .attr_names: + getattr(rv_chain , attr + "_b").layer = lay + # no support for blending chains return None diff --git a/release/test/pep8.py b/release/test/pep8.py index 57ce0a96120..0c0c013ad84 100644 --- a/release/test/pep8.py +++ b/release/test/pep8.py @@ -29,7 +29,9 @@ import os # sudo pip install pep8 # # in debian install pylint pyflakes pep8 with apt-get/aptitude/etc -# +# +# on *nix run +# python release/test/pep8.py > tmp.err 2>&1 # how many lines to read into the file, pep8 comment # should be directly after the licence header, ~20 in most cases -- cgit v1.2.3 From a5c020218c20a0f6fa7d36131133bae6f7d2f47d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 14:27:38 +0000 Subject: Fix #20368: editing keymap item operator name would reset properties even if the name was not changed. --- source/blender/makesrna/intern/rna_wm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 5cf9c245b05..0f6a14b78bd 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -586,9 +586,12 @@ static void rna_wmKeyMapItem_idname_set(PointerRNA *ptr, const char *value) char idname[OP_MAX_TYPENAME]; WM_operator_bl_idname(idname, value); - BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname)); - WM_keymap_properties_reset(kmi); + if(strcmp(idname, kmi->idname) != 0) { + BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname)); + + WM_keymap_properties_reset(kmi); + } } #else -- cgit v1.2.3 From 91215df5c2c685d5a9bb219a59901c090c74671e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 14:34:57 +0000 Subject: Bugfix: clicking outside of color picker could reset color in some cases. --- source/blender/editors/interface/interface_handlers.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 4ef59e4b59a..a43506778d8 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4739,9 +4739,14 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, if(inside==0) { uiSafetyRct *saferct= block->saferct.first; - if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS) - if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y)) - menu->menuretval= UI_RETURN_OUT; + if(ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) && event->val==KM_PRESS) { + if(saferct && !BLI_in_rctf(&saferct->parent, event->x, event->y)) { + if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN)) + menu->menuretval= UI_RETURN_OK; + else + menu->menuretval= UI_RETURN_OUT; + } + } } if(menu->menuretval); @@ -4777,10 +4782,10 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, /* strict check, and include the parent rect */ if(!menu->dotowards && !saferct) { - if(block->flag & UI_BLOCK_OUT_1) + if(block->flag & (UI_BLOCK_OUT_1|UI_BLOCK_KEEP_OPEN)) menu->menuretval= UI_RETURN_OK; else - menu->menuretval= (block->flag & UI_BLOCK_KEEP_OPEN)? UI_RETURN_OK: UI_RETURN_OUT; + menu->menuretval= UI_RETURN_OUT; } else if(menu->dotowards && event->type==MOUSEMOVE) retval= WM_UI_HANDLER_BREAK; -- cgit v1.2.3 From d88c776614fb7ac0b391ca34713e69d2b9ed4665 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 14:42:46 +0000 Subject: edits to the bone copy metarig type from Cessen, pointcache warning fix --- release/scripts/modules/rigify/copy.py | 19 +++++++++++++++++-- source/blender/editors/physics/physics_pointcache.c | 2 +- source/blender/makesrna/intern/rna_ID.c | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index d388ee18316..5fda9bd7ba8 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -50,7 +50,10 @@ def main(obj, bone_definition, base_names, options): mt = bone_class_instance(obj, METARIG_NAMES) mt.cpy = bone_definition[0] mt.update() - cp = mt.copy(to_fmt="%s_cpy") + cp = bone_class_instance(obj, ["cpy"]) + cp.cpy_e = copy_bone_simple(arm, mt.cpy, base_names[mt.cpy], parent=True) + cp.cpy = cp.cpy_e.name + bpy.ops.object.mode_set(mode='OBJECT') cp.update() @@ -63,7 +66,19 @@ def main(obj, bone_definition, base_names, options): con = cp.cpy_p.constraints.new('COPY_ROTATION') con.target = obj - con.subtarget = mt.cpy + con.subtarget = cp.cpy + + con = mt.cpy_p.constraints.new('COPY_SCALE') + con.target = obj + con.subtarget = cp.cpy + + # Rotation mode and axis locks + cp.cpy_p.rotation_mode = mt.cpy_p.rotation_mode + cp.cpy_p.lock_location = tuple(mt.cpy_p.lock_location) + cp.cpy_p.lock_rotations_4d = mt.cpy_p.lock_rotations_4d + cp.cpy_p.lock_rotation = tuple(mt.cpy_p.lock_rotation) + cp.cpy_p.lock_rotation_w = mt.cpy_p.lock_rotation_w + cp.cpy_p.lock_scale = tuple(mt.cpy_p.lock_scale) # setup layers last layers = get_layer_dict(options) diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 858ff3637b1..0cd4c2e6ce8 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -86,7 +86,7 @@ void bake_console_progress(void *arg, int nr) fflush(stdout); } -void bake_console_progress_end(void *arg, int nr) +void bake_console_progress_end(void *arg) { printf("\n"); } diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 32b6de40a03..2aeb600bc42 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -246,7 +246,7 @@ static void rna_IDPropertyGroup_name_get(PointerRNA *ptr, char *str) if(idprop && idprop->type == IDP_STRING) strcpy(str, idprop->data.pointer); else - strcpy(str, ""); + str[0]= '\0'; } void rna_IDPropertyGroup_name_set(PointerRNA *ptr, const char *value) -- cgit v1.2.3 From e18b93419640551ad9156d27290896ca4b03aa86 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 14:48:46 +0000 Subject: Fix #20354: sculpt mode crash when using smooth brush with multires level 0. --- source/blender/editors/sculpt_paint/sculpt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 0dd41fb559a..e6fe1a5153d 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1488,7 +1488,7 @@ struct MultiresModifierData *sculpt_multires_active(Object *ob) if(nmd->mode & eModifierMode_Realtime) break; - if(!nmd && mmd->lvl != 1) + if(!nmd && mmd->sculptlvl > 0) return mmd; } } -- cgit v1.2.3 From d725fdb6122ef6895129d7b5dab6f47db4782a0b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 14:51:42 +0000 Subject: missing import --- release/scripts/modules/rigify/copy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 5fda9bd7ba8..d052ce6f32b 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -20,7 +20,7 @@ import bpy from rigify import get_layer_dict -from rigify_utils import bone_class_instance +from rigify_utils import bone_class_instance, copy_bone_simple METARIG_NAMES = ("cpy",) -- cgit v1.2.3 From 91791da36892463f3077973b87b6f19a61b89b98 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 15:05:09 +0000 Subject: Fix #20364 and #20357: AAO crashes for certain combinations of settings. --- source/blender/render/intern/source/occlusion.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index 3a5680eaf70..40fcc2b399a 100644 --- a/source/blender/render/intern/source/occlusion.c +++ b/source/blender/render/intern/source/occlusion.c @@ -356,18 +356,18 @@ static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node) { OccNode *child; float occ, area, totarea, rad[3]; - int a, b; + int a, b, indirect= tree->doindirect; occ= 0.0f; totarea= 0.0f; - zero_v3(rad); + if(indirect) zero_v3(rad); for(b=0; bchildflag & (1<child[b].face; occ_face(&tree->face[a], 0, 0, &area); occ += area*tree->occlusion[a]; - madd_v3_v3fl(rad, tree->rad[a], area); + if(indirect) madd_v3_v3fl(rad, tree->rad[a], area); totarea += area; } else if(node->child[b].node) { @@ -375,18 +375,18 @@ static void occ_sum_occlusion(OcclusionTree *tree, OccNode *node) occ_sum_occlusion(tree, child); occ += child->area*child->occlusion; - madd_v3_v3fl(rad, child->rad, child->area); + if(indirect) madd_v3_v3fl(rad, child->rad, child->area); totarea += child->area; } } if(totarea != 0.0f) { occ /= totarea; - mul_v3_fl(rad, 1.0f/totarea); + if(indirect) mul_v3_fl(rad, 1.0f/totarea); } node->occlusion= occ; - copy_v3_v3(node->rad, rad); + if(indirect) copy_v3_v3(node->rad, rad); } static int occ_find_bbox_axis(OcclusionTree *tree, int begin, int end, float *min, float *max) @@ -1613,6 +1613,7 @@ static void *exec_strandsurface_sample(void *data) void make_occ_tree(Render *re) { OcclusionThread othreads[BLENDER_MAX_THREADS]; + OcclusionTree *tree; StrandSurface *mesh; ListBase threads; float ao[3], indirect[3], (*faceao)[3], (*faceindirect)[3]; @@ -1624,13 +1625,13 @@ void make_occ_tree(Render *re) re->i.infostr= "Occlusion preprocessing"; re->stats_draw(re->sdh, &re->i); - re->occlusiontree= occ_tree_build(re); + re->occlusiontree= tree= occ_tree_build(re); - if(re->occlusiontree) { + if(tree) { if(re->wrld.ao_approx_passes > 0) - occ_compute_passes(re, re->occlusiontree, re->wrld.ao_approx_passes); - if(re->wrld.ao_indirect_bounces > 1) - occ_compute_bounces(re, re->occlusiontree, re->wrld.ao_indirect_bounces); + occ_compute_passes(re, tree, re->wrld.ao_approx_passes); + if(tree->doindirect && re->wrld.ao_indirect_bounces > 1) + occ_compute_bounces(re, tree, re->wrld.ao_indirect_bounces); for(mesh=re->strandsurface.first; mesh; mesh=mesh->next) { if(!mesh->face || !mesh->co || !mesh->ao) -- cgit v1.2.3 From 6760dbf2adc1fa749dc0107d95745cbe9a6611d5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 15:40:47 +0000 Subject: Bugfix: converting multires with 0 levels would crash. --- source/blender/blenkernel/intern/multires.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index e1f2b22c9f0..66f8da03d24 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -796,7 +796,8 @@ void multires_load_old_250(Mesh *me) if(mdisps) { for(a=0; atotface; a++) - old_mdisps_convert(&me->mface[a], &mdisps[a]); + if(mdisps[a].totdisp) + old_mdisps_convert(&me->mface[a], &mdisps[a]); } } -- cgit v1.2.3 From 9a7f6e937bc80b9e72b503d0b0fb07ea840a3e38 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 17:08:02 +0000 Subject: Fix #20345: weight paint crashes with armature modifier without object. Also fixes: * Weight paint subsurf drawing. * Missing pointer endian conversion in paint brushes. * Use of unitialized variable in screen version patch. * Multires modifier without mdisps layer crash. --- source/blender/blenkernel/intern/cdderivedmesh.c | 1 - source/blender/blenkernel/intern/multires.c | 7 ++ source/blender/blenkernel/intern/subsurf_ccg.c | 77 ++++++++++++++++------ source/blender/blenloader/intern/readfile.c | 19 ++++-- source/blender/editors/sculpt_paint/paint_vertex.c | 19 +++--- 5 files changed, 87 insertions(+), 36 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 77ad9fb7a7b..66c39c6571a 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -761,7 +761,6 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us float *nors= dm->getFaceDataArray(dm, CD_NORMAL); int i, orig, *index = DM_get_face_data_layer(dm, CD_ORIGINDEX); - mc = DM_get_face_data_layer(dm, CD_ID_MCOL); if(!mc) mc = DM_get_face_data_layer(dm, CD_WEIGHT_MCOL); diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 66f8da03d24..139a8d3267f 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -450,6 +450,13 @@ static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int int *gridOffset; int i, numGrids, gridSize, dGridSize, dSkip; + if(!mdisps) { + if(invert) + mdisps = CustomData_add_layer(&me->fdata, CD_MDISPS, CD_DEFAULT, NULL, me->totface); + else + return; + } + numGrids = dm->getNumGrids(dm); gridSize = dm->getGridSize(dm); gridData = dm->getGridData(dm); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index f6abedda2b6..793ea26a602 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1548,12 +1548,15 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; - MCol *mcol = DM_get_face_data_layer(dm, CD_MCOL); + MCol *mcol = dm->getFaceDataArray(dm, CD_WEIGHT_MCOL); MTFace *tf = DM_get_face_data_layer(dm, CD_MTFACE); char *faceFlags = ccgdm->faceFlags; int i, totface, flag, gridSize = ccgSubSurf_getGridSize(ss); int gridFaces = gridSize - 1; + if(!mcol) + mcol = dm->getFaceDataArray(dm, CD_MCOL); + totface = ccgSubSurf_getNumFaces(ss); for(i = 0; i < totface; i++) { CCGFace *f = ccgdm->faceMap[i].face; @@ -1719,21 +1722,35 @@ static void ccgDM_drawUVEdges(DerivedMesh *dm) static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; - CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); + MCol *mcol= NULL; int i, gridSize = ccgSubSurf_getGridSize(ss); char *faceFlags = ccgdm->faceFlags; + int gridFaces = gridSize - 1, totface; - for (i=0; !ccgFaceIterator_isStopped(fi); i++,ccgFaceIterator_next(fi)) { - CCGFace *f = ccgFaceIterator_getCurrent(fi); + if(useColors) { + mcol = dm->getFaceDataArray(dm, CD_WEIGHT_MCOL); + if(!mcol) + mcol = dm->getFaceDataArray(dm, CD_MCOL); + } + + totface = ccgSubSurf_getNumFaces(ss); + for(i = 0; i < totface; i++) { + CCGFace *f = ccgdm->faceMap[i].face; int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); int drawSmooth, index = ccgDM_getFaceMapIndex(ss, f); int origIndex; + unsigned char *cp= NULL; origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f)); if(faceFlags) drawSmooth = (faceFlags[origIndex*2] & ME_SMOOTH); else drawSmooth = 1; - + + if(mcol) { + cp= (unsigned char*)mcol; + mcol += gridFaces*gridFaces*numVerts*4; + } + if (index!=-1) { int draw; draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, index, &drawSmooth); @@ -1748,41 +1765,61 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *u DMGridData *faceGridData = ccgSubSurf_getFaceGridDataArray(ss, f, S); if (drawSmooth) { glShadeModel(GL_SMOOTH); - for (y=0; yno); glVertex3fv(a->co); + if(cp) glColor3ub(cp[7], cp[6], cp[5]); glNormal3fv(b->no); glVertex3fv(b->co); + + if(x != gridFaces-1) { + if(cp) cp += 16; + } } + + a = &faceGridData[(y+0)*gridSize + x]; + b = &faceGridData[(y+1)*gridSize + x]; + + if(cp) glColor3ub(cp[15], cp[14], cp[13]); + glNormal3fv(a->no); + glVertex3fv(a->co); + if(cp) glColor3ub(cp[11], cp[10], cp[9]); + glNormal3fv(b->no); + glVertex3fv(b->co); + + if(cp) cp += 16; + glEnd(); } } else { glShadeModel(GL_FLAT); glBegin(GL_QUADS); - for (y=0; ypaint_cursor= NULL; - (*paint)->brushes= newdataadr(fd, (*paint)->brushes); + Paint *p; + + p= (*paint)= newdataadr(fd, (*paint)); + if(p) { + p->paint_cursor= NULL; + p->brushes= newdataadr(fd, p->brushes); + test_pointer_array(fd, (void**)&p->brushes); } } @@ -4309,6 +4312,7 @@ static void direct_link_scene(FileData *fd, Scene *sce) direct_link_paint(fd, (Paint**)&sce->toolsettings->wpaint); sce->toolsettings->imapaint.paint.brushes= newdataadr(fd, sce->toolsettings->imapaint.paint.brushes); + test_pointer_array(fd, (void**)&sce->toolsettings->imapaint.paint.brushes); sce->toolsettings->imapaint.paintcursor= NULL; sce->toolsettings->particle.paintcursor= NULL; @@ -10115,8 +10119,11 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } /* clear hanging 'temp' screens from older 2.5 files*/ if (main->versionfile == 250) { - bScreen *screen; - for(screen= main->screen.first; screen; screen= screen->id.next) { + bScreen *screen, *nextscreen; + + for(screen= main->screen.first; screen; screen= nextscreen) { + nextscreen= screen->id.next; + if (screen->full == SCREENTEMP) free_libblock(&main->screen, screen); } diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 7021d76b1c4..56e020e22aa 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1300,15 +1300,18 @@ static char *wpaint_make_validmap(Mesh *me, Object *ob) if (md->type == eModifierType_Armature) { amd = (ArmatureModifierData*) md; - pose = amd->object->pose; - - for (chan=pose->chanbase.first; chan; chan=chan->next) { - if (chan->bone->flag & BONE_NO_DEFORM) - continue; - if (BLI_ghash_haskey(gh, chan->name)) { - BLI_ghash_remove(gh, chan->name, NULL, NULL); - BLI_ghash_insert(gh, chan->name, SET_INT_IN_POINTER(1)); + if(amd->object && amd->object->pose) { + pose = amd->object->pose; + + for (chan=pose->chanbase.first; chan; chan=chan->next) { + if (chan->bone->flag & BONE_NO_DEFORM) + continue; + + if (BLI_ghash_haskey(gh, chan->name)) { + BLI_ghash_remove(gh, chan->name, NULL, NULL); + BLI_ghash_insert(gh, chan->name, SET_INT_IN_POINTER(1)); + } } } } -- cgit v1.2.3 From 2c977b83b34e9517e51afc6bcac40dce7e26612d Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 14 Dec 2009 17:40:12 +0000 Subject: Scons: * Sequencer and textures dir (and the makefiles for that) go into the /plugins folder again, as it should be. * Don't generate a "doc" dir, when building them is disabled. Patch by Matt. D. Thanks a lot! --- SConstruct | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/SConstruct b/SConstruct index 369a1801aec..a5ae5f47c6d 100644 --- a/SConstruct +++ b/SConstruct @@ -378,7 +378,7 @@ if not os.path.isdir ( B.root_build_dir): os.makedirs ( B.root_build_dir + 'extern' ) os.makedirs ( B.root_build_dir + 'lib' ) os.makedirs ( B.root_build_dir + 'bin' ) -if not os.path.isdir(B.doc_build_dir): +if not os.path.isdir(B.doc_build_dir) and env['WITH_BF_DOCS']: os.makedirs ( B.doc_build_dir ) Help(opts.GenerateHelpText(env)) @@ -535,7 +535,7 @@ for tp, tn, tf in os.walk('release/plugins'): tn.remove('.svn') for f in tf: pluglist.append(os.path.join(tp, f)) - plugtargetlist.append( os.path.join(*([BLENDERPATH] + tp.split(os.sep)[1:] + [f])) ) + plugtargetlist.append( os.path.join(*([BLENDERPATH, 'plugins'] + tp.split(os.sep)[1:] + [f])) ) # header files for plugins @@ -648,12 +648,14 @@ if not env['WITHOUT_BF_INSTALL']: #------------ EPYDOC if env['WITH_BF_DOCS']: - try: import epydoc - except: epydoc = None - - if epydoc: - SConscript('source/gameengine/PyDoc/SConscript') - else: - print "No epydoc install detected, Python API and Gameengine API Docs will not be generated " - + try: + import epydoc + except ImportError: + epydoc = None + + if epydoc: + SConscript('source/gameengine/PyDoc/SConscript') + else: + print "No epydoc install detected, Python API and Gameengine API Docs will not be generated " + -- cgit v1.2.3 From 77c539458ad41799d07e0e8af207df2db5584c12 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 14 Dec 2009 18:13:18 +0000 Subject: Fix plugins source install for real. Previous fix created a double /plugins/plugins tree. This should work on all platform (no longer using split when it shouldn't, not creating lists for nothing, ...). --- SConstruct | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index a5ae5f47c6d..8a026a0c083 100644 --- a/SConstruct +++ b/SConstruct @@ -533,9 +533,10 @@ plugtargetlist = [] for tp, tn, tf in os.walk('release/plugins'): if '.svn' in tn: tn.remove('.svn') + df = tp[8:] # remove 'release/' for f in tf: pluglist.append(os.path.join(tp, f)) - plugtargetlist.append( os.path.join(*([BLENDERPATH, 'plugins'] + tp.split(os.sep)[1:] + [f])) ) + plugtargetlist.append( os.path.join(BLENDERPATH, df, f) ) # header files for plugins -- cgit v1.2.3 From 6e1e8a66bb14583a6d50ea1fbf579fb47b6c26cc Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 18:15:48 +0000 Subject: Fix #20118: uv editor, changing active face did not change image. --- source/blender/editors/space_image/space_image.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 2f839feeb36..cde81ad7cf3 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -305,6 +305,7 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn) switch(wmn->data) { case ND_DATA: case ND_SELECT: + ED_area_tag_refresh(sa); ED_area_tag_redraw(sa); break; } -- cgit v1.2.3 From 35cda1f940497574b387f226bcb5b3a11fe2a2d9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 18:27:38 +0000 Subject: Fix #20076: SSS renders incorrectly when used by objects in a particle system. --- source/blender/render/intern/source/zbuf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index a3a714553d2..ac3474e51e5 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -2587,14 +2587,14 @@ void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(vo v3= vlr->v3; v4= vlr->v4; - c1= zbuf_part_project(cache, v1->index, winmat, bounds, v1->co, ho1); - c2= zbuf_part_project(cache, v2->index, winmat, bounds, v2->co, ho2); - c3= zbuf_part_project(cache, v3->index, winmat, bounds, v3->co, ho3); + c1= zbuf_part_project(cache, v1->index, obwinmat, bounds, v1->co, ho1); + c2= zbuf_part_project(cache, v2->index, obwinmat, bounds, v2->co, ho2); + c3= zbuf_part_project(cache, v3->index, obwinmat, bounds, v3->co, ho3); /* partclipping doesn't need viewplane clipping */ partclip= c1 & c2 & c3; if(v4) { - c4= zbuf_part_project(cache, v4->index, winmat, bounds, v4->co, ho4); + c4= zbuf_part_project(cache, v4->index, obwinmat, bounds, v4->co, ho4); partclip &= c4; } -- cgit v1.2.3 From 163d8111bea1e6c6a46a75bf77c024021beb7b6d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 19:17:27 +0000 Subject: Fix crash loading old files with physics systems without effector weights. --- source/blender/blenloader/intern/readfile.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 91f94b54468..384b1fcfd4d 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3128,9 +3128,8 @@ static void direct_link_particlesettings(FileData *fd, ParticleSettings *part) part->pd= newdataadr(fd, part->pd); part->pd2= newdataadr(fd, part->pd2); - if(part->effector_weights) - part->effector_weights = newdataadr(fd, part->effector_weights); - else + part->effector_weights = newdataadr(fd, part->effector_weights); + if(!part->effector_weights) part->effector_weights = BKE_add_effector_weights(part->eff_group); link_list(fd, &part->dupliweights); @@ -3803,9 +3802,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) clmd->sim_parms->reset = 0; } - if(clmd->sim_parms->effector_weights) - clmd->sim_parms->effector_weights = newdataadr(fd, clmd->sim_parms->effector_weights); - else + clmd->sim_parms->effector_weights = newdataadr(fd, clmd->sim_parms->effector_weights); + if(!clmd->sim_parms->effector_weights) clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL); } @@ -3832,9 +3830,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) smd->domain->tex_shadow = NULL; smd->domain->tex_wt = NULL; - if(smd->domain->effector_weights) - smd->domain->effector_weights = newdataadr(fd, smd->domain->effector_weights); - else + smd->domain->effector_weights = newdataadr(fd, smd->domain->effector_weights); + if(!smd->domain->effector_weights) smd->domain->effector_weights = BKE_add_effector_weights(NULL); direct_link_pointcache_list(fd, &(smd->domain->ptcaches[0]), &(smd->domain->point_cache[0])); @@ -4052,9 +4049,8 @@ static void direct_link_object(FileData *fd, Object *ob) } } - if(sb->effector_weights) - sb->effector_weights = newdataadr(fd, sb->effector_weights); - else + sb->effector_weights = newdataadr(fd, sb->effector_weights); + if(!sb->effector_weights) sb->effector_weights = BKE_add_effector_weights(NULL); direct_link_pointcache_list(fd, &sb->ptcaches, &sb->pointcache); -- cgit v1.2.3 From face5047d0d2f36018bd32541501fc0263b40086 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 19:39:54 +0000 Subject: Fix #20113: CLICK events stop working when opening a new file. --- source/blender/windowmanager/intern/wm_event_system.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 906a166a28c..710f9897c94 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -828,7 +828,7 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) static int wm_event_always_pass(wmEvent *event) { /* some events we always pass on, to ensure proper communication */ - return ELEM5(event->type, TIMER, TIMER0, TIMER1, TIMER2, WINDEACTIVATE); + return ISTIMER(event->type) || (event->type == WINDEACTIVATE); } /* operator exists */ @@ -1367,8 +1367,8 @@ void wm_event_do_handlers(bContext *C) } /* store last event for this window */ - /* mousemove event don't overwrite last type */ - if (event->type != MOUSEMOVE) { + /* mousemove and timer events don't overwrite last type */ + if (event->type != MOUSEMOVE && !ISTIMER(event->type)) { if (wm_action_not_handled(action)) { if (win->last_type == event->type) { /* set click time on first click (press -> release) */ -- cgit v1.2.3 From a133e57bf36d1eef70442ada71baac68770b780e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 20:01:52 +0000 Subject: Fix #20233: crash when entering - characters in text object, with short textbox width. I can't tell if this is working correct, the code is very cryptic, with gotos even, but seems there is not enough space allocated to permit splitting each character to it's own line. --- source/blender/blenkernel/intern/font.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index e2dccf02b40..1a63f97e310 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -705,10 +705,10 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) /* We assume the worst case: 1 character per line (is freed at end anyway) */ - linedata= MEM_mallocN(sizeof(float)*(slen+2),"buildtext2"); - linedata2= MEM_mallocN(sizeof(float)*(slen+2),"buildtext3"); - linedata3= MEM_callocN(sizeof(float)*(slen+2),"buildtext4"); - linedata4= MEM_callocN(sizeof(float)*(slen+2),"buildtext5"); + linedata= MEM_mallocN(sizeof(float)*(slen*2 + 1),"buildtext2"); + linedata2= MEM_mallocN(sizeof(float)*(slen*2 + 1),"buildtext3"); + linedata3= MEM_callocN(sizeof(float)*(slen*2 + 1),"buildtext4"); + linedata4= MEM_callocN(sizeof(float)*(slen*2 + 1),"buildtext5"); linedist= cu->linedist; -- cgit v1.2.3 From 231ddb67b120f064f859cd29f2a7e3b54eae5098 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 20:37:05 +0000 Subject: Fix #19897: WM_OT_redraw_timer memory leak using Draw Window. --- source/blender/windowmanager/intern/wm_operators.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index d1e004a0a20..99e34e129d0 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2550,8 +2550,10 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) CTX_wm_area_set(C, sa); for(ar_iter= sa->regionbase.first; ar_iter; ar_iter= ar_iter->next) { - CTX_wm_region_set(C, ar_iter); - ED_region_do_draw(C, ar_iter); + if(ar_iter->swinid) { + CTX_wm_region_set(C, ar_iter); + ED_region_do_draw(C, ar_iter); + } } } -- cgit v1.2.3 From 639dd6d25ec07535c8b856d527ffcc75c9a7b6d2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 20:47:02 +0000 Subject: Fix #20362: multires conversion from 2.5alpha0 not working. It's still not entirely the same, the tangets are a bit different at face edges/corners. --- source/blender/blenkernel/intern/multires.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 139a8d3267f..88c6788b723 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -784,6 +784,11 @@ static void old_mdisps_convert(MFace *mface, MDisps *mdisp) for(x = 0; x < newside; ++x, ++out) { old_mdisps_rotate(S, newside, oldside, x, y, &u, &v); old_mdisps_bilinear(*out, mdisp->disps, oldside, u, v); + + if(S == 1) { (*out)[1]= -(*out)[1]; } + else if(S == 2) { SWAP(float, (*out)[0], (*out)[1]); } + else if(S == 3) { (*out)[0]= -(*out)[0]; } + else if(S == 0) { SWAP(float, (*out)[0], (*out)[1]); (*out)[0]= -(*out)[0]; (*out)[1]= -(*out)[1]; }; } } } -- cgit v1.2.3 From e7b4d36fd6a57fb88fdca861dc251a6a8bdf6355 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 20:56:19 +0000 Subject: * new metarig type for the durian dragon leg (original rig by Cessen) * option to roll the delta of the arm rig. * fix to copy metarig type * renamed EditBone.align() --> EditBone.align_roll() * Added EditBone.align_orientation(other) * Added bone.vector: same as (bone.tail - bone.head) --- release/scripts/modules/bpy_types.py | 15 +- .../scripts/modules/rigify/arm_biped_generic.py | 3 + release/scripts/modules/rigify/copy.py | 10 +- .../scripts/modules/rigify/leg_biped_generic.py | 21 +- .../modules/rigify/leg_quadruped_generic.py | 225 +++++++++++++++++++++ release/scripts/modules/rigify/neck_flex.py | 2 +- release/scripts/modules/rigify/spine_pivot_flex.py | 4 +- release/scripts/modules/rigify_utils.py | 11 + release/scripts/ui/properties_data_bone.py | 1 + release/scripts/ui/properties_object_constraint.py | 1 + release/test/pep8.py | 6 +- source/blender/makesrna/intern/rna_armature_api.c | 4 +- 12 files changed, 275 insertions(+), 28 deletions(-) create mode 100644 release/scripts/modules/rigify/leg_quadruped_generic.py diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 239990e2bd5..69618d77ecb 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -94,13 +94,17 @@ class _GenericBone: @property def length(self): - return (self.head - self.tail).length + return self.vector.length @length.setter def length(self, value): """The distance from head to tail""" self.tail = self.head + ((self.tail - self.head).normalize() * value) + @property + def vector(self): + return (self.tail - self.head) + @property def children(self): return [child for child in self._other_bones if child.parent == self] @@ -172,6 +176,15 @@ class Bone(StructRNA, _GenericBone): class EditBone(StructRNA, _GenericBone): __slots__ = () + def align_orientation(self, other): + ''' + Align this bone to another by moving its tail and settings its roll + the length of the other bone is not used. + ''' + vec = other.vector.normalize() * self.length + self.tail = self.head + vec + self.roll = other.roll + def ord_ind(i1, i2): if i1 < i2: diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index 1c4c6fd2a6b..dc45ccf8ae8 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -19,6 +19,7 @@ # import bpy +from math import radians from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -213,6 +214,8 @@ def fk(obj, definitions, base_names, options): ex.hand_delta = ex.hand_delta_e.name ex.hand_delta_e.length *= 0.5 ex.hand_delta_e.connected = False + if "hand_roll" in options: + ex.hand_delta_e.roll += radians(options["hand_roll"]) fk_chain.hand_e.connected = False fk_chain.hand_e.parent = ex.hand_delta_e diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index d052ce6f32b..11c16d2d197 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -53,25 +53,25 @@ def main(obj, bone_definition, base_names, options): cp = bone_class_instance(obj, ["cpy"]) cp.cpy_e = copy_bone_simple(arm, mt.cpy, base_names[mt.cpy], parent=True) cp.cpy = cp.cpy_e.name - + bpy.ops.object.mode_set(mode='OBJECT') cp.update() mt.update() if not cp.cpy_b.connected: - con = cp.cpy_p.constraints.new('COPY_LOCATION') + con = mt.cpy_p.constraints.new('COPY_LOCATION') con.target = obj - con.subtarget = mt.cpy + con.subtarget = cp.cpy - con = cp.cpy_p.constraints.new('COPY_ROTATION') + con = mt.cpy_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = cp.cpy con = mt.cpy_p.constraints.new('COPY_SCALE') con.target = obj con.subtarget = cp.cpy - + # Rotation mode and axis locks cp.cpy_p.rotation_mode = mt.cpy_p.rotation_mode cp.cpy_p.lock_location = tuple(mt.cpy_p.lock_location) diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 2c5481be1b7..2826a6b7b29 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -128,21 +128,15 @@ def metarig_definition(obj, orig_bone_name): def ik(obj, bone_definition, base_names, options): arm = obj.data - # setup the existing bones + # setup the existing bones, use names from METARIG_NAMES mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) - # children of ik_foot - ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) - # XXX - duplicate below - for bone_class in (mt, mt_chain): - for attr in bone_class.attr_names: - i = METARIG_NAMES.index(attr) - ebone = arm.edit_bones[bone_definition[i]] - setattr(bone_class, attr, ebone.name) - bone_class.update() - # XXX - end dupe + mt.attr_initialize(METARIG_NAMES, bone_definition) + mt_chain.attr_initialize(METARIG_NAMES, bone_definition) + # children of ik_foot + ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) # Make a new chain ik_chain = mt_chain.copy(to_fmt="MCH-%s", base_names=base_names) @@ -165,7 +159,7 @@ def ik(obj, bone_definition, base_names, options): # foot roll: heel pointing backwards, half length ik.foot_roll_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_roll" + get_side_name(base_names[mt_chain.foot])) ik.foot_roll = ik.foot_roll_e.name - ik.foot_roll_e.tail = ik.foot_roll_e.head + (ik.foot_roll_e.head - ik.foot_roll_e.tail) / 2.0 + ik.foot_roll_e.tail = ik.foot_roll_e.head + ik.foot_roll_e.vector / 2.0 ik.foot_roll_e.parent = ik.foot_e # heel is disconnected # heel pointing forwards to the toe base, parent of the following 2 bones @@ -208,7 +202,7 @@ def ik(obj, bone_definition, base_names, options): # roll the bone to point up... could also point in the same direction as ik.foot_roll # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode - ik.foot_roll_01_e.align((0.0, 0.0, -1.0)) + ik.foot_roll_01_e.align_roll((0.0, 0.0, -1.0)) bpy.ops.object.mode_set(mode='OBJECT') @@ -355,7 +349,6 @@ def fk(obj, bone_definition, base_names, options): mod.coefficients[1] = -1.0 - # last step setup layers layers = get_layer_dict(options) lay = layers["fk"] diff --git a/release/scripts/modules/rigify/leg_quadruped_generic.py b/release/scripts/modules/rigify/leg_quadruped_generic.py new file mode 100644 index 00000000000..4ad90b959e1 --- /dev/null +++ b/release/scripts/modules/rigify/leg_quadruped_generic.py @@ -0,0 +1,225 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import bpy +from rigify import RigifyError, get_layer_dict +from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name, add_pole_target_bone +from rna_prop_ui import rna_idprop_ui_prop_get +from Mathutils import Vector + +METARIG_NAMES = "hips", "thigh", "shin", "foot", "toe" + + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('body') + bone.head[:] = -0.3000, -1.0000, 0.0000 + bone.tail[:] = -0.3000, -1.0000, 1.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('thigh') + bone.head[:] = 0.0000, 0.0000, -0.0000 + bone.tail[:] = 0.3351, -0.8690, -1.3903 + bone.roll = -0.4656 + bone.connected = False + bone.parent = arm.edit_bones['body'] + bone = arm.edit_bones.new('shin') + bone.head[:] = 0.3351, -0.8690, -1.3903 + bone.tail[:] = 0.2943, -0.0179, -2.4026 + bone.roll = -0.2024 + bone.connected = True + bone.parent = arm.edit_bones['thigh'] + bone = arm.edit_bones.new('foot') + bone.head[:] = 0.2943, -0.0179, -2.4026 + bone.tail[:] = 0.3830, -0.1995, -3.1531 + bone.roll = -0.3766 + bone.connected = True + bone.parent = arm.edit_bones['shin'] + bone = arm.edit_bones.new('toe') + bone.head[:] = 0.3830, -0.1995, -3.1531 + bone.tail[:] = 0.4724, -0.5126, -3.1531 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['foot'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['thigh'] + pbone['type'] = 'leg_quadruped_generic' + + +def metarig_definition(obj, orig_bone_name): + ''' + The bone given is the first in a chain + Expects a chain of at least 3 children. + eg. + thigh -> shin -> foot -> [toe, heel] + ''' + + bone_definition = [] + + orig_bone = obj.data.bones[orig_bone_name] + orig_bone_parent = orig_bone.parent + + if orig_bone_parent is None: + raise RigifyError("expected the thigh bone to have a parent hip bone") + + bone_definition.append(orig_bone_parent.name) + bone_definition.append(orig_bone.name) + + + bone = orig_bone + chain = 0 + while chain < 3: # first 2 bones only have 1 child + children = bone.children + + if len(children) != 1: + raise RigifyError("expected the thigh bone to have 3 children without a fork") + bone = children[0] + bone_definition.append(bone.name) # shin, foot + chain += 1 + + if len(bone_definition) != len(METARIG_NAMES): + raise RigifyError("internal problem, expected %d bones" % len(METARIG_NAMES)) + + return bone_definition + + +def ik(obj, bone_definition, base_names, options): + arm = obj.data + + # setup the existing bones, use names from METARIG_NAMES + mt = bone_class_instance(obj, ["hips"]) + mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) + + mt.attr_initialize(METARIG_NAMES, bone_definition) + mt_chain.attr_initialize(METARIG_NAMES, bone_definition) + + ik_chain = mt_chain.copy(to_fmt="%s", base_names=base_names) + + ik_chain.thigh_e.connected = False + ik_chain.thigh_e.parent = mt.hips_e + + ik_chain.foot_e.parent = None + ik_chain.rename("foot", ik_chain.foot + "_ik") + + # keep the foot_ik as the parent + ik_chain.toe_e.connected = False + + # must be after disconnecting the toe + ik_chain.foot_e.align_orientation(mt_chain.toe_e) + + # children of ik_foot + ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target", "foot_target"]) + + ik.knee_target = add_pole_target_bone(obj, mt_chain.shin, "knee_target") #XXX - pick a better name + ik.update() + ik.knee_target_e.parent = mt.hips_e + + # foot roll is an interesting one! + # plot a vector from the toe bones head, bactwards to the length of the foot + # then align it with the foot but reverse direction. + ik.foot_roll_e = copy_bone_simple(arm, mt_chain.toe, base_names[mt_chain.foot] + "_roll") + ik.foot_roll = ik.foot_roll_e.name + ik.foot_roll_e.parent = ik_chain.foot_e + ik.foot_roll_e.translate( - (mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length)) + ik.foot_roll_e.align_orientation(mt_chain.foot_e) + ik.foot_roll_e.tail = ik.foot_roll_e.head - ik.foot_roll_e.vector # flip + ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotationPart() * Vector(0.0, 0.0, -1.0)) + + # MCH-foot + ik.foot_roll_01_e = copy_bone_simple(arm, mt_chain.foot, "MCH-" + base_names[mt_chain.foot]) + ik.foot_roll_01 = ik.foot_roll_01_e.name + ik.foot_roll_01_e.parent = ik_chain.foot_e + ik.foot_roll_01_e.head, ik.foot_roll_01_e.tail = mt_chain.foot_e.tail, mt_chain.foot_e.head + ik.foot_roll_01_e.roll = ik.foot_roll_e.roll + + # ik_target, child of MCH-foot + ik.foot_target_e = copy_bone_simple(arm, mt_chain.foot, base_names[mt_chain.foot] + "_ik_target") + ik.foot_target = ik.foot_target_e.name + ik.foot_target_e.parent = ik.foot_roll_01_e + ik.foot_target_e.align_orientation(ik_chain.foot_e) + ik.foot_target_e.length = ik_chain.foot_e.length / 2.0 + ik.foot_target_e.connected = True + + # MCH-foot.02 child of MCH-foot + ik.foot_roll_02_e = copy_bone_simple(arm, mt_chain.foot, "MCH-%s_02" % base_names[mt_chain.foot]) + ik.foot_roll_02 = ik.foot_roll_02_e.name + ik.foot_roll_02_e.parent = ik.foot_roll_01_e + + + bpy.ops.object.mode_set(mode='OBJECT') + + mt.update() + mt_chain.update() + ik.update() + ik_chain.update() + + # simple constraining of orig bones + con = mt_chain.thigh_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ik_chain.thigh + + con = mt_chain.shin_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ik_chain.shin + + con = mt_chain.foot_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ik.foot_roll_02 + + con = mt_chain.toe_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ik_chain.toe + + # others... + con = ik.foot_roll_01_p.constraints.new('COPY_ROTATION') + con.target = obj + con.subtarget = ik.foot_roll + + + # IK + con = ik_chain.shin_p.constraints.new('IK') + con.chain_length = 2 + con.iterations = 500 + con.pole_angle = -90.0 # XXX - in deg! + con.use_tail = True + con.use_stretch = True + con.use_target = True + con.use_rotation = False + con.weight = 1.0 + + con.target = obj + con.subtarget = ik.foot_target + + con.pole_target = obj + con.pole_subtarget = ik.knee_target + + + bpy.ops.object.mode_set(mode='EDIT') + + return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe + + +def main(obj, bone_definition, base_names, options): + bones_ik = ik(obj, bone_definition, base_names, options) + return bones_ik diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 137fb626bcf..be548249433 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -167,7 +167,7 @@ def main(obj, bone_definition, base_names, options): # dont store parent names, re-reference as each chain bones parent. neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[getattr(mt_chain, attr)]) neck_e_parent.head = neck_e.head - neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0) + neck_e_parent.tail = neck_e.head + (mt.head_e.vector.normalize() * neck_chain_segment_length / 2.0) neck_e_parent.roll = mt.head_e.roll orig_parent = neck_e.parent diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index ca954eeef4f..848f54ef4e8 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -244,7 +244,7 @@ def main(obj, bone_definition, base_names, options): # dont store parent names, re-reference as each chain bones parent. spine_e_parent = arm.edit_bones.new("MCH-rot_%s" % child_name_orig) spine_e_parent.head = spine_e.head - spine_e_parent.tail = spine_e.head + ((mt.ribcage_e.tail - mt.ribcage_e.head).normalize() * spine_chain_segment_length / 2.0) + spine_e_parent.tail = spine_e.head + (mt.ribcage_e.vector.normalize() * spine_chain_segment_length / 2.0) spine_e_parent.roll = mt.ribcage_e.roll @@ -508,7 +508,7 @@ def main(obj, bone_definition, base_names, options): lay = layers["main"] for attr in df.attr_names: getattr(df, attr + "_b").layer = lay - for attr in rv_chain .attr_names: + for attr in rv_chain.attr_names: getattr(rv_chain , attr + "_b").layer = lay # no support for blending chains diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index f4694023f12..371792a3633 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -353,6 +353,7 @@ def bone_class_instance(obj, slots, name="BoneContainer"): class_dict = { \ "obj": obj, \ "attr_names": attr_names, \ + "attr_initialize": _bone_class_instance_attr_initialize, \ "update": _bone_class_instance_update, \ "rename": _bone_class_instance_rename, \ "names": _bone_class_instance_names, \ @@ -380,6 +381,16 @@ def auto_class_instance(slots, name="ContainerClass", class_dict=None): return auto_class(slots, name, class_dict)() +def _bone_class_instance_attr_initialize(self, attr_names, bone_names): + ''' Initializes attributes, both lists must be aligned + ''' + for attr in self.attr_names: + i = attr_names.index(attr) + setattr(self, attr, bone_names[i]) + + self.update() + + def _bone_class_instance_update(self): ''' Re-Assigns bones from the blender data ''' diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 121fc3a5db3..99561a026e3 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -226,6 +226,7 @@ class BONE_PT_display(BoneButtonsPanel): col.label(text="Custom Shape:") col.prop(pchan, "custom_shape", text="") + class BONE_PT_inverse_kinematics(BoneButtonsPanel): bl_label = "Inverse Kinematics" bl_default_closed = True diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index dd874bf52a0..12a12ff40dc 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -735,6 +735,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel): for con in ob.constraints: self.draw_constraint(context, con) + class BONE_PT_constraints(ConstraintButtonsPanel): bl_label = "Bone Constraints" bl_context = "bone_constraint" diff --git a/release/test/pep8.py b/release/test/pep8.py index 0c0c013ad84..68d09c2ee76 100644 --- a/release/test/pep8.py +++ b/release/test/pep8.py @@ -29,9 +29,9 @@ import os # sudo pip install pep8 # # in debian install pylint pyflakes pep8 with apt-get/aptitude/etc -# +# # on *nix run -# python release/test/pep8.py > tmp.err 2>&1 +# python release/test/pep8.py > pep8_error.txt 2>&1 # how many lines to read into the file, pep8 comment # should be directly after the licence header, ~20 in most cases @@ -67,7 +67,7 @@ def main(): if pep8_type: # so we can batch them for each tool. - files.append((f, pep8_type)) + files.append((os.path.abspath(f), pep8_type)) else: if not [None for prefix in SKIP_PREFIX if f.startswith(prefix)]: files_skip.append(f) diff --git a/source/blender/makesrna/intern/rna_armature_api.c b/source/blender/makesrna/intern/rna_armature_api.c index 31bd7275487..22bd7313166 100644 --- a/source/blender/makesrna/intern/rna_armature_api.c +++ b/source/blender/makesrna/intern/rna_armature_api.c @@ -40,7 +40,7 @@ #include "ED_armature.h" -void rna_EditBone_align(EditBone *ebo, float *no) +void rna_EditBone_align_roll(EditBone *ebo, float *no) { if(!is_zero_v3(no)) { float normal[3]; @@ -57,7 +57,7 @@ void RNA_api_armature_edit_bone(StructRNA *srna) FunctionRNA *func; PropertyRNA *parm; - func= RNA_def_function(srna, "align", "rna_EditBone_align"); + func= RNA_def_function(srna, "align_roll", "rna_EditBone_align_roll"); RNA_def_function_ui_description(func, "Align the bone to a localspace vector."); parm= RNA_def_float_vector(func, "vector", 3, NULL, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX); RNA_def_property_flag(parm, PROP_REQUIRED); -- cgit v1.2.3 From fd703342420da13d585254496063b6cab7b3e2e2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 14 Dec 2009 21:31:36 +0000 Subject: Fix #20250: smooth view poor performance compared to 2.49. Increased the frame rate of smooth view from 30 to 100, makes it looks smoother when it can redraw at that speed, otherwise will simply drop frames anyway. --- source/blender/editors/space_view3d/view3d_view.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index a4f24e90080..424ae13ca18 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -297,7 +297,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo if(rv3d->smooth_timer) WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), rv3d->smooth_timer); /* TIMER1 is hardcoded in keymap */ - rv3d->smooth_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/30.0); /* max 30 frs/sec */ + rv3d->smooth_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/100.0); /* max 30 frs/sec */ return; } -- cgit v1.2.3 From 18cc2b76c2878846a540c463bd6de8ac96ab7611 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Mon, 14 Dec 2009 21:42:25 +0000 Subject: Sequencer drawing cleanup (Part 1) Separated preview drawing into own ARegion, this should make using View2D possible The Sequencer now has three view types: Sequencer, Preview and split Sequencer/Preview. Changing the preview can be done either by the combobox in the header or toggling through those types with CTRL+TAB. Notes: * Icon for split Sequencer/Preview view missing still. * Naming items in the comboboxes can be improved (just Preview instead of Image Preview?) Next steps: * bringing back View2D handling (zoom/pan) for image preview * experimenting with splitting the Preview ARegion for In/Out editing --- release/scripts/ui/space_sequencer.py | 51 +++++-- source/blender/blenloader/intern/readfile.c | 23 +++ source/blender/editors/include/ED_sequencer.h | 3 + .../editors/space_sequencer/sequencer_edit.c | 124 ++++++++++++---- .../editors/space_sequencer/sequencer_intern.h | 4 + .../editors/space_sequencer/sequencer_ops.c | 16 ++- .../editors/space_sequencer/space_sequencer.c | 158 +++++++++++++++++++-- source/blender/makesdna/DNA_screen_types.h | 1 + source/blender/makesdna/DNA_space_types.h | 10 +- source/blender/makesrna/intern/rna_space.c | 23 ++- 10 files changed, 350 insertions(+), 63 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 2beb2ff22d9..54fe48758f1 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -44,20 +44,37 @@ class SEQUENCER_HT_header(bpy.types.Header): row.separator() - if st.display_mode == 'SEQUENCER': + if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'): sub.menu("SEQUENCER_MT_select") sub.menu("SEQUENCER_MT_marker") sub.menu("SEQUENCER_MT_add") sub.menu("SEQUENCER_MT_strip") - layout.prop(st, "display_mode", text="") + layout.prop(st, "view_type", text="") - if st.display_mode == 'SEQUENCER': + if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'): + layout.prop(st, "display_mode", text="") + + if (st.view_type == 'SEQUENCER'): + layout.separator() + layout.operator("sequencer.refresh_all") + elif (st.view_type == 'SEQUENCER_PREVIEW'): layout.separator() layout.operator("sequencer.refresh_all") + layout.prop(st, "display_channel", text="Channel") else: layout.prop(st, "display_channel", text="Channel") +class SEQUENCER_MT_view_toggle(bpy.types.Menu): + bl_label = "View Type" + + def draw(self, context): + layout = self.layout + + layout.operator("sequencer.view_toggle").type = 'SEQUENCER' + layout.operator("sequencer.view_toggle").type = 'PREVIEW' + layout.operator("sequencer.view_toggle").type = 'SEQUENCER_PREVIEW' + class SEQUENCER_MT_view(bpy.types.Menu): bl_label = "View" @@ -98,7 +115,10 @@ class SEQUENCER_MT_view(bpy.types.Menu): """ layout.separator() - layout.operator("sequencer.view_all") + if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'): + layout.operator("sequencer.view_all", text='View all Sequences') + if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'): + layout.operator("sequencer.view_all_preview", text='Fit preview in window') layout.operator("sequencer.view_selected") layout.prop(st, "draw_frames") @@ -262,17 +282,23 @@ class SEQUENCER_MT_strip(bpy.types.Menu): class SequencerButtonsPanel(bpy.types.Panel): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' + + def has_sequencer(self, context): + return (context.space_data.view_type == 'SEQUENCER') or (context.space_data.view_type == 'SEQUENCER_PREVIEW') def poll(self, context): - return (context.space_data.display_mode == 'SEQUENCER') and (act_strip(context) is not None) + return self.has_sequencer(context) and (act_strip(context) is not None) class SequencerButtonsPanel_Output(bpy.types.Panel): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' + def has_preview(self, context): + return (context.space_data.view_type == 'PREVIEW') or (context.space_data.view_type == 'SEQUENCER_PREVIEW') + def poll(self, context): - return context.space_data.display_mode != 'SEQUENCER' + return self.has_preview(context) class SEQUENCER_PT_edit(SequencerButtonsPanel): @@ -331,7 +357,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): bl_label = "Effect Strip" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -429,7 +455,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel): bl_label = "Strip Input" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -485,7 +511,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): bl_label = "Sound" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -519,7 +545,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel): bl_label = "Scene" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -540,7 +566,7 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): bl_label = "Filter" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -590,7 +616,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel): bl_label = "Proxy" def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': + if not self.has_sequencer(context): return False strip = act_strip(context) @@ -630,6 +656,7 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output): bpy.types.register(SEQUENCER_HT_header) # header/menu classes bpy.types.register(SEQUENCER_MT_view) +bpy.types.register(SEQUENCER_MT_view_toggle) bpy.types.register(SEQUENCER_MT_select) bpy.types.register(SEQUENCER_MT_marker) bpy.types.register(SEQUENCER_MT_add) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 384b1fcfd4d..ef0022ccb66 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6003,6 +6003,12 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) ar->regiontype= RGN_TYPE_UI; ar->alignment= RGN_ALIGN_TOP; break; + case SPACE_SEQ: + ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer"); + BLI_addtail(lb, ar); + ar->regiontype= RGN_TYPE_UI; + ar->alignment= RGN_ALIGN_TOP; + break; case SPACE_VIEW3D: /* toolbar */ ar= MEM_callocN(sizeof(ARegion), "toolbar for view3d"); @@ -10169,6 +10175,23 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } } + { /* fix for new view type in sequencer */ + bScreen *screen; + ScrArea *sa; + SpaceLink *sl; + + for(screen= main->screen.first; screen; screen= screen->id.next) { + for(sa= screen->areabase.first; sa; sa= sa->next) { + for(sl= sa->spacedata.first; sl; sl= sl->next) { + if(sl->spacetype==SPACE_SEQ) { + SpaceSeq *sseq = (SpaceSeq *)sl; + if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE; + if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF; + } + } + } + } + } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ diff --git a/source/blender/editors/include/ED_sequencer.h b/source/blender/editors/include/ED_sequencer.h index 2a3b5445dfe..07c4dd6ca41 100644 --- a/source/blender/editors/include/ED_sequencer.h +++ b/source/blender/editors/include/ED_sequencer.h @@ -28,4 +28,7 @@ #define SEQ_ZOOM_FAC(szoom) (szoom > 0)? (szoom) : (szoom == 0)? (1.0) : (-1.0/szoom) +/* in space_sequencer.c, for rna update function */ +void ED_sequencer_update_view(bContext *C, int view); + #endif /* ED_SEQUENCER_H */ diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index c421c7fbb85..277d32d6360 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -83,6 +83,7 @@ #include "ED_screen.h" #include "ED_transform.h" #include "ED_util.h" +#include "ED_sequencer.h" #include "UI_interface.h" #include "UI_resources.h" @@ -2263,6 +2264,39 @@ void SEQUENCER_OT_meta_separate(wmOperatorType *ot) /* view_all operator */ static int sequencer_view_all_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + bScreen *sc= CTX_wm_screen(C); + ScrArea *area= CTX_wm_area(C); + ARegion *ar= CTX_wm_region(C); + View2D *v2d= UI_view2d_fromcontext(C); + + v2d->cur= v2d->tot; + UI_view2d_curRect_validate(v2d); + UI_view2d_sync(sc, area, v2d, V2D_LOCK_COPY); + + ED_area_tag_redraw(CTX_wm_area(C)); + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_view_all(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "View All"; + ot->idname= "SEQUENCER_OT_view_all"; + ot->description="View all the strips in the sequencer."; + + /* api callbacks */ + ot->exec= sequencer_view_all_exec; + + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER; +} + +/* view_all operator */ +static int sequencer_view_all_preview_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); bScreen *sc= CTX_wm_screen(C); @@ -2271,55 +2305,49 @@ static int sequencer_view_all_exec(bContext *C, wmOperator *op) SpaceSeq *sseq= area->spacedata.first; View2D *v2d= UI_view2d_fromcontext(C); - if (sseq->mainb==SEQ_DRAW_SEQUENCE) { - v2d->cur= v2d->tot; - UI_view2d_curRect_validate(v2d); - UI_view2d_sync(sc, area, v2d, V2D_LOCK_COPY); - } else { - /* Like zooming on an image view */ - float zoomX, zoomY; - int width, height, imgwidth, imgheight; - width = ar->winx; - height = ar->winy; + /* Like zooming on an image view */ + float zoomX, zoomY; + int width, height, imgwidth, imgheight; - seq_reset_imageofs(sseq); + width = ar->winx; + height = ar->winy; - imgwidth= (scene->r.size*scene->r.xsch)/100; - imgheight= (scene->r.size*scene->r.ysch)/100; + seq_reset_imageofs(sseq); - /* Apply aspect, dosnt need to be that accurate */ - imgwidth= (int)(imgwidth * ((float)scene->r.xasp / (float)scene->r.yasp)); + imgwidth= (scene->r.size*scene->r.xsch)/100; + imgheight= (scene->r.size*scene->r.ysch)/100; - if (((imgwidth >= width) || (imgheight >= height)) && - ((width > 0) && (height > 0))) { + /* Apply aspect, dosnt need to be that accurate */ + imgwidth= (int)(imgwidth * ((float)scene->r.xasp / (float)scene->r.yasp)); - /* Find the zoom value that will fit the image in the image space */ - zoomX = ((float)width) / ((float)imgwidth); - zoomY = ((float)height) / ((float)imgheight); - sseq->zoom= (zoomX < zoomY) ? zoomX : zoomY; + if (((imgwidth >= width) || (imgheight >= height)) && + ((width > 0) && (height > 0))) { - sseq->zoom = 1.0f / power_of_2(1/ MIN2(zoomX, zoomY) ); - } - else { - sseq->zoom= 1.0f; - } - } + /* Find the zoom value that will fit the image in the image space */ + zoomX = ((float)width) / ((float)imgwidth); + zoomY = ((float)height) / ((float)imgheight); + sseq->zoom= (zoomX < zoomY) ? zoomX : zoomY; + sseq->zoom = 1.0f / power_of_2(1/ MIN2(zoomX, zoomY) ); + } + else { + sseq->zoom= 1.0f; + } ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; } -void SEQUENCER_OT_view_all(wmOperatorType *ot) +void SEQUENCER_OT_view_all_preview(wmOperatorType *ot) { /* identifiers */ ot->name= "View All"; - ot->idname= "SEQUENCER_OT_view_all"; - ot->description="View all the strips in the sequencer."; + ot->idname= "SEQUENCER_OT_view_all_preview"; + ot->description="Zoom preview to fit in the area."; /* api callbacks */ - ot->exec= sequencer_view_all_exec; + ot->exec= sequencer_view_all_preview_exec; ot->poll= ED_operator_sequencer_active; @@ -2327,8 +2355,42 @@ void SEQUENCER_OT_view_all(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER; } +static EnumPropertyItem view_type_items[] = { + {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""}, + {SEQ_VIEW_PREVIEW, "PREVIEW", ICON_SEQ_PREVIEW, "Image Preview", ""}, + {SEQ_VIEW_SEQUENCE_PREVIEW, "SEQUENCER_PREVIEW", ICON_SEQ_SEQUENCER, "Sequencer and Image Preview", ""}, + {0, NULL, 0, NULL, NULL}}; /* view_all operator */ +static int sequencer_view_toggle_exec(bContext *C, wmOperator *op) +{ + SpaceSeq *sseq= CTX_wm_space_data(C); + + sseq->view++; + if (sseq->view > SEQ_VIEW_SEQUENCE_PREVIEW) sseq->view = SEQ_VIEW_SEQUENCE; + + ED_sequencer_update_view(C, sseq->view); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_view_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "View Toggle"; + ot->idname= "SEQUENCER_OT_view_toggle"; + ot->description="Toggle between sequencer views (sequence, preview, both)."; + + /* api callbacks */ + ot->exec= sequencer_view_toggle_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER; +} + + +/* view_selected operator */ static int sequencer_view_selected_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index a68001e536b..e5e159138fc 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -95,9 +95,13 @@ void SEQUENCER_OT_swap_right(struct wmOperatorType *ot); void SEQUENCER_OT_swap_left(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); +/* preview specific operators */ +void SEQUENCER_OT_view_all_preview(struct wmOperatorType *ot); + /* sequencer_select.c */ void SEQUENCER_OT_select_all_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_select(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 73a2070ca54..2636fa67c47 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -85,7 +85,9 @@ void sequencer_operatortypes(void) 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); + /* sequencer_select.c */ WM_operatortype_append(SEQUENCER_OT_select_all_toggle); WM_operatortype_append(SEQUENCER_OT_select_inverse); @@ -110,9 +112,14 @@ void sequencer_operatortypes(void) void sequencer_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap= WM_keymap_find(keyconf, "Sequencer", SPACE_SEQ, 0); + wmKeyMap *keymap= WM_keymap_find(keyconf, "SequencerCommon", SPACE_SEQ, 0); wmKeyMapItem *kmi; - + + /* operators common to sequence and preview view */ + WM_keymap_add_item(keymap, "SEQUENCER_OT_view_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + + /* operators for sequence */ + keymap= WM_keymap_find(keyconf, "Sequencer", SPACE_SEQ, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); @@ -214,5 +221,8 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 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); } diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 1e2fc1f59d3..4c610dc6668 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -90,6 +90,69 @@ ARegion *sequencer_has_buttons_region(ScrArea *sa) return arnew; } +ARegion *sequencer_find_region(ScrArea *sa, short type) +{ + ARegion *ar=NULL; + + for(ar= sa->regionbase.first; ar; ar= ar->next) + if(ar->regiontype==type) + return ar; + + return ar; +} + +void ED_sequencer_update_view(bContext *C, int view) +{ + ScrArea *sa= CTX_wm_area(C); + + ARegion *ar_main= sequencer_find_region(sa, RGN_TYPE_WINDOW); + ARegion *ar_preview= sequencer_find_region(sa, RGN_TYPE_PREVIEW); + + switch (view) { + case SEQ_VIEW_SEQUENCE: + if (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)) { + 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; + break; + case SEQ_VIEW_PREVIEW: + if (!(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) { + ar_preview->flag &= ~RGN_FLAG_HIDDEN; + ar_preview->v2d.flag &= ~V2D_IS_INITIALISED; + } + ar_main->alignment= RGN_ALIGN_NONE; + ar_preview->alignment= RGN_ALIGN_NONE; + break; + case SEQ_VIEW_SEQUENCE_PREVIEW: + if (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) { + ar_preview->flag &= ~RGN_FLAG_HIDDEN; + ar_preview->v2d.flag &= ~V2D_IS_INITIALISED; + } + ar_main->alignment= RGN_ALIGN_NONE; + ar_preview->alignment= RGN_ALIGN_TOP; + break; + } + + ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa); + ED_area_tag_redraw(sa); +} + /* ******************** default callbacks for sequencer space ***************** */ @@ -103,8 +166,8 @@ static SpaceLink *sequencer_new(const bContext *C) sseq->spacetype= SPACE_SEQ; sseq->zoom= 4; sseq->chanshown = 0; - - + sseq->view = SEQ_VIEW_SEQUENCE; + sseq->mainb = SEQ_DRAW_IMG_IMBUF; /* header */ ar= MEM_callocN(sizeof(ARegion), "header for sequencer"); @@ -120,6 +183,13 @@ static SpaceLink *sequencer_new(const bContext *C) ar->alignment= RGN_ALIGN_RIGHT; ar->flag = RGN_FLAG_HIDDEN; + /* preview area */ + ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer"); + BLI_addtail(&sseq->regionbase, ar); + ar->regiontype= RGN_TYPE_PREVIEW; + ar->alignment= RGN_ALIGN_TOP; + ar->flag |= RGN_FLAG_HIDDEN; + /* main area */ ar= MEM_callocN(sizeof(ARegion), "main area for sequencer"); @@ -150,7 +220,7 @@ static SpaceLink *sequencer_new(const bContext *C) ar->v2d.keepzoom= 0; ar->v2d.keeptot= 0; ar->v2d.align= V2D_ALIGN_NO_NEG_Y; - + return (SpaceLink *)sseq; } @@ -181,7 +251,7 @@ static SpaceLink *sequencer_duplicate(SpaceLink *sl) } - +/* *********************** sequencer (main) region ************************ */ /* add handlers, stuff you only do once or on area/region changes */ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) { @@ -189,6 +259,9 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); + keymap= WM_keymap_find(wm->defaultconf, "SequencerCommon", SPACE_SEQ, 0); + WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + /* own keymap */ keymap= WM_keymap_find(wm->defaultconf, "Sequencer", SPACE_SEQ, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); @@ -197,18 +270,9 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) static void sequencer_main_area_draw(const bContext *C, ARegion *ar) { ScrArea *sa= CTX_wm_area(C); - SpaceSeq *sseq= sa->spacedata.first; - Scene *scene= CTX_data_scene(C); - - if (sseq->mainb != SEQ_DRAW_SEQUENCE) { - /* image-viewer types */ - draw_image_seq(scene, ar, sseq); - } - else { - /* NLE - strip editing timeline interface */ - draw_timeline_seq(C, ar); - } + /* NLE - strip editing timeline interface */ + draw_timeline_seq(C, ar); } @@ -248,6 +312,60 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) } } +/* *********************** preview region ************************ */ +static void sequencer_preview_area_init(wmWindowManager *wm, ARegion *ar) +{ + wmKeyMap *keymap; + + UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy); + + keymap= WM_keymap_find(wm->defaultconf, "SequencerCommon", SPACE_SEQ, 0); + WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + + /* own keymap */ + keymap= WM_keymap_find(wm->defaultconf, "SequencerPreview", SPACE_SEQ, 0); + WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); +} + +static void sequencer_preview_area_draw(const bContext *C, ARegion *ar) +{ + ScrArea *sa= CTX_wm_area(C); + SpaceSeq *sseq= sa->spacedata.first; + Scene *scene= CTX_data_scene(C); + + /* XXX temp fix for wrong setting in sseq->mainb */ + if (sseq->mainb == SEQ_DRAW_SEQUENCE) sseq->mainb = SEQ_DRAW_IMG_IMBUF; + draw_image_seq(scene, ar, sseq); +} + +static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn) +{ + /* context changes */ + switch(wmn->category) { + case NC_SCENE: + switch(wmn->data) { + case ND_FRAME: + case ND_MARKERS: + case ND_SEQUENCER: + case ND_SEQUENCER_SELECT: + ED_region_tag_redraw(ar); + break; + } + break; + case NC_SPACE: + if(wmn->data == ND_SPACE_SEQUENCER) + ED_region_tag_redraw(ar); + break; + case NC_ID: + switch(wmn->data) { + case NA_RENAME: + ED_region_tag_redraw(ar); + break; + } + break; + } +} + /* *********************** buttons region ************************ */ /* add handlers, stuff you only do once or on area/region changes */ @@ -312,6 +430,16 @@ void ED_spacetype_sequencer(void) art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION; BLI_addhead(&st->regiontypes, art); + + /* preview */ + art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); + art->regionid = RGN_TYPE_PREVIEW; + art->minsizey = 240; // XXX + art->init= sequencer_preview_area_init; + art->draw= sequencer_preview_area_draw; + art->listener= sequencer_preview_area_listener; + art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_ANIMATION; + BLI_addhead(&st->regiontypes, art); /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index 18c7a819eb3..2bc7b1e8431 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -219,6 +219,7 @@ typedef struct ARegion { #define RGN_TYPE_UI 4 #define RGN_TYPE_TOOLS 5 #define RGN_TYPE_TOOL_PROPS 6 +#define RGN_TYPE_PREVIEW 7 /* region alignment */ #define RGN_ALIGN_NONE 0 diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 40d59b666bf..e02d719470f 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -146,7 +146,9 @@ typedef struct SpaceSeq { short zebra; int flag; float zoom; - + int view; /* see SEQ_VIEW_* below */ + int pad; + struct bGPdata *gpd; /* grease-pencil data */ } SpaceSeq; @@ -857,6 +859,12 @@ enum { #define SEQ_DRAW_GPENCIL 16 #define SEQ_NO_DRAW_CFRANUM 32 +/* sseq->view */ +#define SEQ_VIEW_SEQUENCE 1 +#define SEQ_VIEW_PREVIEW 2 +#define SEQ_VIEW_SEQUENCE_PREVIEW 3 + + /* space types, moved from DNA_screen_types.h */ enum { SPACE_EMPTY, diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 382ab96f059..2fd0bf1810a 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -106,6 +106,7 @@ EnumPropertyItem autosnap_items[] = { #include "ED_image.h" #include "ED_screen.h" #include "ED_view3d.h" +#include "ED_sequencer.h" #include "IMB_imbuf_types.h" @@ -482,6 +483,13 @@ static int rna_SpaceGraphEditor_has_ghost_curves_get(PointerRNA *ptr) return (sipo->ghostCurves.first != NULL); } +static void rna_Sequencer_display_mode_update(bContext *C, PointerRNA *ptr) +{ + int view = RNA_int_get(ptr, "view_type"); + + ED_sequencer_update_view(C, view); +} + #else static void rna_def_space(BlenderRNA *brna) @@ -1068,8 +1076,13 @@ static void rna_def_space_sequencer(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem view_type_items[] = { + {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""}, + {SEQ_VIEW_PREVIEW, "PREVIEW", ICON_SEQ_PREVIEW, "Image Preview", ""}, + {SEQ_VIEW_SEQUENCE_PREVIEW, "SEQUENCER_PREVIEW", ICON_SEQ_SEQUENCER, "Sequencer and Image Preview", ""}, + {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem display_mode_items[] = { - {SEQ_DRAW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""}, {SEQ_DRAW_IMG_IMBUF, "IMAGE", ICON_SEQ_PREVIEW, "Image Preview", ""}, {SEQ_DRAW_IMG_WAVEFORM, "WAVEFORM", ICON_SEQ_LUMA_WAVEFORM, "Luma Waveform", ""}, {SEQ_DRAW_IMG_VECTORSCOPE, "VECTOR_SCOPE", ICON_SEQ_CHROMA_SCOPE, "Chroma Vectorscope", ""}, @@ -1080,6 +1093,14 @@ static void rna_def_space_sequencer(BlenderRNA *brna) RNA_def_struct_sdna(srna, "SpaceSeq"); RNA_def_struct_ui_text(srna, "Space Sequence Editor", "Sequence editor space data."); + /* view type, fairly important */ + prop= RNA_def_property(srna, "view_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "view"); + RNA_def_property_enum_items(prop, view_type_items); + RNA_def_property_ui_text(prop, "View Type", "The type of the Sequencere view (sequencer, preview or both)."); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_update(prop, 0, "rna_Sequencer_display_mode_update"); + /* display type, fairly important */ prop= RNA_def_property(srna, "display_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "mainb"); -- cgit v1.2.3 From 4942013093bbcab8b434e6db3397b7a46bc34105 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 14 Dec 2009 22:29:10 +0000 Subject: Support -noaudio in background mode too (it was initialized even in bg, that should be fixed). --- source/creator/creator.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/creator/creator.c b/source/creator/creator.c index b6c08582144..c080062347d 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -514,6 +514,7 @@ int main(int argc, char **argv) #endif } else { + /* background mode options */ for(a=1; a Date: Mon, 14 Dec 2009 22:59:41 +0000 Subject: Sequencer: * fix crash due to missing preview region * had to bump up subversion to catch all files saved without preview region in sequencer. --- source/blender/blenkernel/BKE_blender.h | 2 +- source/blender/blenloader/intern/readfile.c | 83 +++++++++++++++++++---------- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 08503a3d00c..8a7f4da8cbf 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,7 +43,7 @@ struct bContext; struct ReportList; #define BLENDER_VERSION 250 -#define BLENDER_SUBVERSION 9 +#define BLENDER_SUBVERSION 10 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index ef0022ccb66..fa878093cc4 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5944,7 +5944,8 @@ static void area_add_header_region(ScrArea *sa, ListBase *lb) static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) { ARegion *ar; - + ARegion *ar_main; + if(sl) { /* first channels for ipo action nla... */ switch(sl->spacetype) { @@ -6004,10 +6005,16 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) ar->alignment= RGN_ALIGN_TOP; break; case SPACE_SEQ: + ar_main = (ARegion*)lb->first; + for (; ar_main; ar_main = ar_main->next) { + if (ar_main->regiontype == RGN_TYPE_WINDOW) + break; + } ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer"); - BLI_addtail(lb, ar); - ar->regiontype= RGN_TYPE_UI; + BLI_insertlinkbefore(lb, ar_main, ar); + ar->regiontype= RGN_TYPE_PREVIEW; ar->alignment= RGN_ALIGN_TOP; + ar->flag |= RGN_FLAG_HIDDEN; break; case SPACE_VIEW3D: /* toolbar */ @@ -10159,40 +10166,62 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - /* put 2.50 compatibility code here until next subversion bump */ + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 10)) { - Object *ob; - - /* properly initialise hair clothsim data on old files */ - for(ob = main->object.first; ob; ob = ob->id.next) { - ModifierData *md; - for(md= ob->modifiers.first; md; md= md->next) { - if (md->type == eModifierType_Cloth) { - ClothModifierData *clmd = (ClothModifierData *)md; - if (clmd->sim_parms->velocity_smooth < 0.01f) - clmd->sim_parms->velocity_smooth = 0.f; + { + Object *ob; + + /* properly initialise hair clothsim data on old files */ + for(ob = main->object.first; ob; ob = ob->id.next) { + ModifierData *md; + for(md= ob->modifiers.first; md; md= md->next) { + if (md->type == eModifierType_Cloth) { + ClothModifierData *clmd = (ClothModifierData *)md; + if (clmd->sim_parms->velocity_smooth < 0.01f) + clmd->sim_parms->velocity_smooth = 0.f; + } } } } - } - { /* fix for new view type in sequencer */ - bScreen *screen; - ScrArea *sa; - SpaceLink *sl; - - for(screen= main->screen.first; screen; screen= screen->id.next) { - for(sa= screen->areabase.first; sa; sa= sa->next) { - for(sl= sa->spacedata.first; sl; sl= sl->next) { - if(sl->spacetype==SPACE_SEQ) { - SpaceSeq *sseq = (SpaceSeq *)sl; - if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE; - if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF; + { + /* fix for new view type in sequencer */ + bScreen *screen; + ScrArea *sa; + SpaceLink *sl; + + + for(screen= main->screen.first; screen; screen= screen->id.next) { + for(sa= screen->areabase.first; sa; sa= sa->next) { + for(sl= sa->spacedata.first; sl; sl= sl->next) { + if(sl->spacetype==SPACE_SEQ) { + ARegion *ar; + ARegion *ar_main; + ListBase *lb = &sa->regionbase; + SpaceSeq *sseq = (SpaceSeq *)sl; + + if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE; + if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF; + + ar_main = (ARegion*)lb->first; + for (; ar_main; ar_main = ar_main->next) { + if (ar_main->regiontype == RGN_TYPE_WINDOW) + break; + } + ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer"); + BLI_insertlinkbefore(lb, ar_main, ar); + ar->regiontype= RGN_TYPE_PREVIEW; + ar->alignment= RGN_ALIGN_TOP; + ar->flag |= RGN_FLAG_HIDDEN; + } } } } } } + /* put 2.50 compatibility code here until next subversion bump */ + + /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ -- cgit v1.2.3 From 8828f92aad122bf5585a4ab2f0a33934e8b578ac Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 14 Dec 2009 23:09:08 +0000 Subject: Netrender internal refactor. use a real object for files instead of a tuple unique urls for files, logs and render results (just missing the proper mime type for exr files) fix bug with slaves not getting the correct machine name --- release/scripts/io/netrender/client.py | 13 +- release/scripts/io/netrender/master.py | 279 +++++++++++++++------------- release/scripts/io/netrender/master_html.py | 34 +--- release/scripts/io/netrender/model.py | 64 +++++-- release/scripts/io/netrender/slave.py | 29 ++- release/scripts/io/netrender/utils.py | 11 +- 6 files changed, 234 insertions(+), 196 deletions(-) diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index 829d75b6c67..a203d137174 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -106,7 +106,6 @@ def clientSendJob(conn, scene, anim = False): job_name = netsettings.job_name path, name = os.path.split(filename) - path += os.sep if job_name == "[default]": job_name = name @@ -147,7 +146,7 @@ def clientSendJob(conn, scene, anim = False): for psys in object.particle_systems: addPointCache(job, object, psys.point_cache, default_path) - # print(job.files) + #print(job.files) job.name = job_name job.category = netsettings.job_category @@ -166,18 +165,18 @@ def clientSendJob(conn, scene, anim = False): # if not ACCEPTED (but not processed), send files if response.status == http.client.ACCEPTED: - for filepath, start, end in job.files: - f = open(filepath, "rb") - conn.request("PUT", "/file", f, headers={"job-id": job_id, "job-file": filepath}) + for rfile in job.files: + f = open(rfile.filepath, "rb") + conn.request("PUT", fileURL(job_id, rfile.index), f) f.close() response = conn.getresponse() - # server will reply with NOT_FOUD until all files are found + # server will reply with ACCEPTED until all files are found return job_id def requestResult(conn, job_id, frame): - conn.request("GET", "/render", headers={"job-id": job_id, "job-frame":str(frame)}) + conn.request("GET", renderURL(job_id, frame)) @rnaType class NetworkRenderEngine(bpy.types.RenderEngine): diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 504430a7e0c..7e374afd6ab 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -25,11 +25,9 @@ import netrender.model import netrender.balancing import netrender.master_html -class MRenderFile: - def __init__(self, filepath, start, end): - self.filepath = filepath - self.start = start - self.end = end +class MRenderFile(netrender.model.RenderFile): + def __init__(self, filepath, index, start, end): + super().__init__(filepath, index, start, end) self.found = False def test(self): @@ -72,7 +70,7 @@ class MRenderJob(netrender.model.RenderJob): # special server properties self.last_update = 0 self.save_path = "" - self.files_map = {path: MRenderFile(path, start, end) for path, start, end in job_info.files} + self.files = [MRenderFile(rfile.filepath, rfile.index, rfile.start, rfile.end) for rfile in job_info.files] self.status = JOB_WAITING def save(self): @@ -82,7 +80,7 @@ class MRenderJob(netrender.model.RenderJob): f.close() def testStart(self): - for f in self.files_map.values(): + for f in self.files: if not f.test(): return False @@ -150,6 +148,9 @@ class MRenderFrame(netrender.model.RenderFrame): # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +file_pattern = re.compile("/file_([a-zA-Z0-9]+)_([0-9]+)") +render_pattern = re.compile("/render_([a-zA-Z0-9]+)_([0-9]+).exr") +log_pattern = re.compile("/log_([a-zA-Z0-9]+)_([0-9]+).log") class RenderHandler(http.server.BaseHTTPRequestHandler): def send_head(self, code = http.client.OK, headers = {}, content = "application/octet-stream"): @@ -194,62 +195,74 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.server.stats("", "Version check") self.wfile.write(VERSION) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/render": - job_id = self.headers['job-id'] - job_frame = int(self.headers['job-frame']) + elif self.path.startswith("/render"): + match = render_pattern.match(self.path) - job = self.server.getJobID(job_id) + if match: + job_id = match.groups()[0] + frame_number = int(match.groups()[1]) - if job: - frame = job[job_frame] + job = self.server.getJobID(job_id) - if frame: - if frame.status in (QUEUED, DISPATCHED): - self.send_head(http.client.ACCEPTED) - elif frame.status == DONE: - self.server.stats("", "Sending result to client") - f = open(job.save_path + "%04d" % job_frame + ".exr", 'rb') - - self.send_head() - - shutil.copyfileobj(f, self.wfile) - - f.close() - elif frame.status == ERROR: - self.send_head(http.client.PARTIAL_CONTENT) + if job: + frame = job[frame_number] + + if frame: + if frame.status in (QUEUED, DISPATCHED): + self.send_head(http.client.ACCEPTED) + elif frame.status == DONE: + self.server.stats("", "Sending result to client") + f = open(job.save_path + "%04d" % frame_number + ".exr", 'rb') + + self.send_head() + + shutil.copyfileobj(f, self.wfile) + + f.close() + elif frame.status == ERROR: + self.send_head(http.client.PARTIAL_CONTENT) + else: + # no such frame + self.send_head(http.client.NO_CONTENT) else: - # no such frame + # no such job id self.send_head(http.client.NO_CONTENT) else: - # no such job id + # invalid url self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/log": - job_id = self.headers['job-id'] - job_frame = int(self.headers['job-frame']) - - job = self.server.getJobID(job_id) + elif self.path.startswith("/log"): + match = log_pattern.match(self.path) - if job: - frame = job[job_frame] + if match: + job_id = match.groups()[0] + frame_number = int(match.groups()[1]) - if frame: - if not frame.log_path or frame.status in (QUEUED, DISPATCHED): - self.send_head(http.client.PROCESSING) + job = self.server.getJobID(job_id) + + if job: + frame = job[frame_number] + + if frame: + if not frame.log_path or frame.status in (QUEUED, DISPATCHED): + self.send_head(http.client.PROCESSING) + else: + self.server.stats("", "Sending log to client") + f = open(frame.log_path, 'rb') + + self.send_head(content = "text/plain") + + shutil.copyfileobj(f, self.wfile) + + f.close() else: - self.server.stats("", "Sending log to client") - f = open(frame.log_path, 'rb') - - self.send_head() - - shutil.copyfileobj(f, self.wfile) - - f.close() + # no such frame + self.send_head(http.client.NO_CONTENT) else: - # no such frame + # no such job id self.send_head(http.client.NO_CONTENT) else: - # no such job id + # invalid URL self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/status": @@ -322,19 +335,24 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): else: # invalid slave id self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/file": - slave_id = self.headers['slave-id'] - - slave = self.server.getSeenSlave(slave_id) + elif self.path.startswith("/file"): + match = file_pattern.match(self.path) - if slave: # only if slave id is valid - job_id = self.headers['job-id'] - job_file = self.headers['job-file'] + if match: + slave_id = self.headers['slave-id'] + slave = self.server.getSeenSlave(slave_id) + + if not slave: + # invalid slave id + print("invalid slave id") + + job_id = match.groups()[0] + file_index = int(match.groups()[1]) job = self.server.getJobID(job_id) if job: - render_file = job.files_map.get(job_file, None) + render_file = job.files[file_index] if render_file: self.server.stats("", "Sending file to slave") @@ -350,7 +368,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): else: # no such job id self.send_head(http.client.NO_CONTENT) - else: # invalid slave id + else: # invalid url self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/slaves": @@ -395,10 +413,10 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): headers={"job-id": job_id} if job.testStart(): - self.server.stats("", "New job, missing files") + self.server.stats("", "New job, started") self.send_head(headers=headers) else: - self.server.stats("", "New job, started") + self.server.stats("", "New job, missing files (%i total)" % len(job.files)) self.send_head(http.client.ACCEPTED, headers=headers) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/cancel": @@ -455,22 +473,22 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.server.stats("", "New slave connected") - slave_info = netrender.model.RenderSlave.materialize(eval(str(self.rfile.read(length), encoding='utf8'))) + slave_info = netrender.model.RenderSlave.materialize(eval(str(self.rfile.read(length), encoding='utf8')), cache = False) slave_id = self.server.addSlave(slave_info.name, self.client_address, slave_info.stats) self.send_head(headers = {"slave-id": slave_id}) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/log": - slave_id = self.headers['slave-id'] + length = int(self.headers['content-length']) + + log_info = netrender.model.LogFile.materialize(eval(str(self.rfile.read(length), encoding='utf8'))) + + slave_id = log_info.slave_id slave = self.server.getSeenSlave(slave_id) if slave: # only if slave id is valid - length = int(self.headers['content-length']) - - log_info = netrender.model.LogFile.materialize(eval(str(self.rfile.read(length), encoding='utf8'))) - job = self.server.getJobID(log_info.job_id) if job: @@ -490,49 +508,57 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): def do_PUT(self): # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - if self.path == "/file": - self.server.stats("", "Receiving job") + if self.path.startswith("/file"): + match = file_pattern.match(self.path) - length = int(self.headers['content-length']) - job_id = self.headers['job-id'] - job_file = self.headers['job-file'] - - job = self.server.getJobID(job_id) + if match: + self.server.stats("", "Receiving job") + + length = int(self.headers['content-length']) + job_id = match.groups()[0] + file_index = int(match.groups()[1]) - if job: - - render_file = job.files_map.get(job_file, None) + job = self.server.getJobID(job_id) - if render_file: - main_file = job.files[0][0] # filename of the first file - - main_path, main_name = os.path.split(main_file) - - if job_file != main_file: - file_path = prefixPath(job.save_path, job_file, main_path) - else: - file_path = job.save_path + main_name - - buf = self.rfile.read(length) - - # add same temp file + renames as slave - - f = open(file_path, "wb") - f.write(buf) - f.close() - del buf + if job: - render_file.filepath = file_path # set the new path + render_file = job.files[file_index] - if job.testStart(): - self.server.stats("", "File upload, starting job") - self.send_head(http.client.OK) - else: - self.server.stats("", "File upload, file missings") - self.send_head(http.client.ACCEPTED) - else: # invalid file + if render_file: + main_file = job.files[0].filepath # filename of the first file + + main_path, main_name = os.path.split(main_file) + + if file_index > 0: + file_path = prefixPath(job.save_path, render_file.filepath, main_path) + else: + file_path = job.save_path + main_name + + buf = self.rfile.read(length) + + # add same temp file + renames as slave + + f = open(file_path, "wb") + f.write(buf) + f.close() + del buf + + render_file.filepath = file_path # set the new path + + if job.testStart(): + self.server.stats("", "File upload, starting job") + self.send_head(http.client.OK) + else: + self.server.stats("", "File upload, file missings") + self.send_head(http.client.ACCEPTED) + else: # invalid file + print("file not found", job_id, file_index) + self.send_head(http.client.NO_CONTENT) + else: # job not found + print("job not found", job_id, file_index) self.send_head(http.client.NO_CONTENT) - else: # job not found + else: # invalid url + print("no match") self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/render": @@ -585,33 +611,38 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): else: # invalid slave id self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/log": + elif self.path.startswith("/log"): self.server.stats("", "Receiving log file") + + match = log_pattern.match(self.path) - job_id = self.headers['job-id'] - - job = self.server.getJobID(job_id) - - if job: - job_frame = int(self.headers['job-frame']) + if match: + job_id = match.groups()[0] - frame = job[job_frame] + job = self.server.getJobID(job_id) - if frame and frame.log_path: - length = int(self.headers['content-length']) - buf = self.rfile.read(length) - f = open(frame.log_path, 'ab') - f.write(buf) - f.close() - - del buf + if job: + job_frame = int(match.groups()[1]) - self.server.getSeenSlave(self.headers['slave-id']) + frame = job[job_frame] - self.send_head() - else: # frame not found + if frame and frame.log_path: + length = int(self.headers['content-length']) + buf = self.rfile.read(length) + f = open(frame.log_path, 'ab') + f.write(buf) + f.close() + + del buf + + self.server.getSeenSlave(self.headers['slave-id']) + + self.send_head() + else: # frame not found + self.send_head(http.client.NO_CONTENT) + else: # job not found self.send_head(http.client.NO_CONTENT) - else: # job not found + else: # invalid url self.send_head(http.client.NO_CONTENT) class RenderMasterServer(http.server.HTTPServer): @@ -624,7 +655,7 @@ class RenderMasterServer(http.server.HTTPServer): self.job_id = 0 self.path = path + "master_" + str(os.getpid()) + os.sep - self.slave_timeout = 2 + self.slave_timeout = 30 # 30 mins: need a parameter for that self.balancer = netrender.balancing.Balancer() self.balancer.addRule(netrender.balancing.RatingUsageByCategory(self.getJobs)) diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index c94d1e2f72d..c08dc07724d 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -89,7 +89,7 @@ def get(handler): results = job.framesStatus() rowTable( link(job.name, "/html/job" + job.id), - job.category, + job.category if job.category else " ", job.priority, "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), @@ -116,40 +116,14 @@ def get(handler): output("

Frames

") startTable() - headerTable("no", "status", "render time", "slave", "log") + headerTable("no", "status", "render time", "slave", "log", "result") for frame in job.frames: - rowTable(frame.number, frame.statusText(), "%.1fs" % frame.time, frame.slave.name if frame.slave else " ", link("view log", "/html/log%s_%i" % (job_id, frame.number)) if frame.log_path else " ") + rowTable(frame.number, frame.statusText(), "%.1fs" % frame.time, frame.slave.name if frame.slave else " ", link("view log", logURL(job_id, frame.number)) if frame.log_path else " ", link("view result", renderURL(job_id, frame.number)) if frame.status == DONE else " ") endTable() else: output("no such job") output("") - - elif handler.path.startswith("/html/log"): - handler.send_head(content = "text/plain") - pattern = re.compile("([a-zA-Z0-9]+)_([0-9]+)") - - match = pattern.match(handler.path[9:]) - if match: - job_id = match.groups()[0] - frame_number = int(match.groups()[1]) - - job = handler.server.getJobID(job_id) - - if job: - frame = job[frame_number] - - if frame: - f = open(frame.log_path, 'rb') - - shutil.copyfileobj(f, handler.wfile) - - f.close() - else: - output("no such frame") - else: - output("no such job") - else: - output("malformed url") + diff --git a/release/scripts/io/netrender/model.py b/release/scripts/io/netrender/model.py index 7d0fff5a83a..b731b32481e 100644 --- a/release/scripts/io/netrender/model.py +++ b/release/scripts/io/netrender/model.py @@ -23,13 +23,15 @@ import subprocess, shutil, time, hashlib from netrender.utils import * class LogFile: - def __init__(self, job_id = 0, frames = []): + def __init__(self, job_id = 0, slave_id = 0, frames = []): self.job_id = job_id + self.slave_id = slave_id self.frames = frames def serialize(self): return { "job_id": self.job_id, + "slave_id": self.slave_id, "frames": self.frames } @@ -40,6 +42,7 @@ class LogFile: logfile = LogFile() logfile.job_id = data["job_id"] + logfile.slave_id = data["slave_id"] logfile.frames = data["frames"] return logfile @@ -68,27 +71,28 @@ class RenderSlave: } @staticmethod - def materialize(data): + def materialize(data, cache = True): if not data: return None slave_id = data["id"] - - if slave_id in RenderSlave._slave_map: + + if cache and slave_id in RenderSlave._slave_map: return RenderSlave._slave_map[slave_id] - else: - slave = RenderSlave() - slave.id = slave_id - slave.name = data["name"] - slave.address = data["address"] - slave.stats = data["stats"] - slave.total_done = data["total_done"] - slave.total_error = data["total_error"] - slave.last_seen = data["last_seen"] - + + slave = RenderSlave() + slave.id = slave_id + slave.name = data["name"] + slave.address = data["address"] + slave.stats = data["stats"] + slave.total_done = data["total_done"] + slave.total_error = data["total_error"] + slave.last_seen = data["last_seen"] + + if cache: RenderSlave._slave_map[slave_id] = slave - return slave + return slave JOB_BLENDER = 1 JOB_PROCESS = 2 @@ -98,6 +102,30 @@ JOB_TYPES = { JOB_PROCESS: "Process" } +class RenderFile: + def __init__(self, filepath = "", index = 0, start = -1, end = -1): + self.filepath = filepath + self.index = index + self.start = start + self.end = end + + def serialize(self): + return { + "filepath": self.filepath, + "index": self.index, + "start": self.start, + "end": self.end + } + + @staticmethod + def materialize(data): + if not data: + return None + + rfile = RenderFile(data["filepath"], data["index"], data["start"], data["end"]) + + return rfile + class RenderJob: def __init__(self, job_info = None): self.id = "" @@ -123,7 +151,7 @@ class RenderJob: self.blacklist = job_info.blacklist def addFile(self, file_path, start=-1, end=-1): - self.files.append((file_path, start, end)) + self.files.append(RenderFile(file_path, len(self.files), start, end)) def addFrame(self, frame_number, command = ""): frame = RenderFrame(frame_number, command) @@ -179,7 +207,7 @@ class RenderJob: "type": self.type, "name": self.name, "category": self.category, - "files": [f for f in self.files if f[1] == -1 or not frames or (f[1] <= max_frame and f[2] >= min_frame)], + "files": [f.serialize() for f in self.files if f.start == -1 or not frames or (f.start <= max_frame and f.end >= min_frame)], "frames": [f.serialize() for f in self.frames if not frames or f in frames], "chunks": self.chunks, "priority": self.priority, @@ -198,7 +226,7 @@ class RenderJob: job.type = data["type"] job.name = data["name"] job.category = data["category"] - job.files = data["files"] + job.files = [RenderFile.materialize(f) for f in data["files"]] job.frames = [RenderFrame.materialize(f) for f in data["frames"]] job.chunks = data["chunks"] job.priority = data["priority"] diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py index 74fc44e23d2..9d7fa4fb6b8 100644 --- a/release/scripts/io/netrender/slave.py +++ b/release/scripts/io/netrender/slave.py @@ -62,12 +62,12 @@ def testCancel(conn, job_id, frame_number): else: return False -def testFile(conn, job_id, slave_id, JOB_PREFIX, file_path, main_path = None): +def testFile(conn, job_id, slave_id, file_index, JOB_PREFIX, file_path, main_path = None): job_full_path = prefixPath(JOB_PREFIX, file_path, main_path) if not os.path.exists(job_full_path): temp_path = JOB_PREFIX + "slave.temp.blend" - conn.request("GET", "/file", headers={"job-id": job_id, "slave-id":slave_id, "job-file":file_path}) + conn.request("GET", fileURL(job_id, file_index), headers={"slave-id":slave_id}) response = conn.getresponse() if response.status != http.client.OK: @@ -86,7 +86,6 @@ def testFile(conn, job_id, slave_id, JOB_PREFIX, file_path, main_path = None): return job_full_path - def render_slave(engine, netsettings): timeout = 1 @@ -120,21 +119,21 @@ def render_slave(engine, netsettings): if job.type == netrender.model.JOB_BLENDER: - job_path = job.files[0][0] # data in files have format (path, start, end) + job_path = job.files[0].filepath # path of main file main_path, main_file = os.path.split(job_path) - job_full_path = testFile(conn, job.id, slave_id, JOB_PREFIX, job_path) + job_full_path = testFile(conn, job.id, slave_id, 0, JOB_PREFIX, job_path) print("Fullpath", job_full_path) print("File:", main_file, "and %i other files" % (len(job.files) - 1,)) engine.update_stats("", "Render File", main_file, "for job", job.id) - for file_path, start, end in job.files[1:]: - print("\t", file_path) - testFile(conn, job.id, slave_id, JOB_PREFIX, file_path, main_path) + for rfile in job.files[1:]: + print("\t", rfile.filepath) + testFile(conn, job.id, slave_id, rfile.index, JOB_PREFIX, rfile.filepath, main_path) # announce log to master - logfile = netrender.model.LogFile(job.id, [frame.number for frame in job.frames]) - conn.request("POST", "/log", bytes(repr(logfile.serialize()), encoding='utf8'), headers={"slave-id":slave_id}) + logfile = netrender.model.LogFile(job.id, slave_id, [frame.number for frame in job.frames]) + conn.request("POST", "/log", bytes(repr(logfile.serialize()), encoding='utf8')) response = conn.getresponse() @@ -151,7 +150,7 @@ def render_slave(engine, netsettings): frame_args += ["-f", str(frame.number)] val = SetErrorMode() - process = subprocess.Popen([BLENDER_PATH, "-b", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) RestoreErrorMode(val) elif job.type == netrender.model.JOB_PROCESS: command = job.frames[0].command @@ -159,7 +158,7 @@ def render_slave(engine, netsettings): process = subprocess.Popen(command.split(" "), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) RestoreErrorMode(val) - headers = {"job-id":job.id, "slave-id":slave_id} + headers = {"slave-id":slave_id} cancelled = False stdout = bytes() @@ -173,8 +172,7 @@ def render_slave(engine, netsettings): # update logs if needed if stdout: # (only need to update on one frame, they are linked - headers["job-frame"] = str(first_frame) - conn.request("PUT", "/log", stdout, headers=headers) + conn.request("PUT", logURL(job.id, first_frame), stdout, headers=headers) response = conn.getresponse() stdout = bytes() @@ -203,8 +201,7 @@ def render_slave(engine, netsettings): # flush the rest of the logs if stdout: # (only need to update on one frame, they are linked - headers["job-frame"] = str(first_frame) - conn.request("PUT", "/log", stdout, headers=headers) + conn.request("PUT", logURL(job.id, first_frame), stdout, headers=headers) response = conn.getresponse() headers = {"job-id":job.id, "slave-id":slave_id, "job-time":str(avg_t)} diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index e549e872398..61a2bb83887 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -28,7 +28,7 @@ try: except: bpy = None -VERSION = b"0.5" +VERSION = b"0.7" # Jobs status JOB_WAITING = 0 # before all data has been entered @@ -109,6 +109,15 @@ def clientVerifyVersion(conn): return True +def fileURL(job_id, file_index): + return "/file_%s_%i" % (job_id, file_index) + +def logURL(job_id, frame_number): + return "/log_%s_%i.log" % (job_id, frame_number) + +def renderURL(job_id, frame_number): + return "/render_%s_%i.exr" % (job_id, frame_number) + def prefixPath(prefix_directory, file_path, prefix_path): if os.path.isabs(file_path): # if an absolute path, make sure path exists, if it doesn't, use relative local path -- cgit v1.2.3 From 6d59a84732e818e8574e67d6f357dbb0317c45fd Mon Sep 17 00:00:00 2001 From: Roland Hess Date: Mon, 14 Dec 2009 23:19:59 +0000 Subject: Patch [19862]: Properly map UV Project from View with camera object. Previously, calling Project from View for UVs when viewing through a camera produced bad results. You had to scale and stretch the resulting UVs, never resulting in a true "from view" with a camera. Now, what you get in the UV editor is what you saw through the camera. --- source/blender/editors/uvedit/uvedit_unwrap_ops.c | 72 ++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 8a3e3039352..3dff61505c5 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -33,6 +33,7 @@ #include "MEM_guardedalloc.h" +#include "DNA_camera_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -880,6 +881,32 @@ static void uv_from_view_bounds(float target[2], float source[3], float rotmat[4 target[1] = pv[2]; } +static void uv_from_camera(float camsize, float xasp, float yasp, float target[2], float source[3], float rotmat[4][4], float cammat[4][4], int persp) +{ + + float pv4[4]; + + copy_v3_v3(pv4, source); + pv4[3]= 1.0; + + /* rotmat is the object matrix in this case */ + mul_m4_v4(rotmat, pv4); + + /* cammat is the inverse camera matrix */ + mul_m4_v4(cammat, pv4); + + if (pv4[2]==0.0f) pv4[2]=0.00001f; /* don't allow div by 0 */ + + if (persp&&CAM_ORTHO) { + target[0]=((pv4[0]/camsize)*xasp)+0.5f; + target[1]=((pv4[1]/camsize)*yasp)+0.5f; + } + else { + target[0]=((-pv4[0]*(camsize/pv4[2])*xasp)/2)+0.5; + target[1]=((-pv4[1]*(camsize/pv4[2])*yasp)/2)+0.5; + } +} + static void uv_from_view(ARegion *ar, float target[2], float source[3], float rotmat[4][4]) { RegionView3D *rv3d= ar->regiondata; @@ -926,11 +953,14 @@ static int from_view_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); + Camera *camera= NULL; EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data); ARegion *ar= CTX_wm_region(C); + RegionView3D *rv3d= ar->regiondata; EditFace *efa; MTFace *tf; - float rotmat[4][4]; + float invmat[4][4],rotmat[4][4]; + float xasp, yasp, camsize; /* add uvs if they don't exist yet */ if(!ED_uvedit_ensure_uvs(C, scene, obedit)) { @@ -938,6 +968,11 @@ static int from_view_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } + /* establish the camera object, so we can default to view mapping if anything is wrong with it */ + if ((rv3d->persp==RV3D_CAMOB) && (scene->camera) && (scene->camera->type==OB_CAMERA)) { + camera=scene->camera->data; + } + if(RNA_boolean_get(op->ptr, "orthographic")) { uv_map_rotation_matrix(rotmat, ar->regiondata, obedit, 90.0f, 0.0f, 1.0f); @@ -953,6 +988,41 @@ static int from_view_exec(bContext *C, wmOperator *op) } } } + else if (camera) { + + if (camera->type==CAM_PERSP) { + camsize=1/tan(DEG2RAD(camera->angle)/2.0f); /* calcs ez as distance from camera plane to viewer */ + } + else { + camsize=camera->ortho_scale; + } + + if (invert_m4_m4(invmat,scene->camera->obmat)) { + copy_m4_m4(rotmat, obedit->obmat); + + /* also make aspect ratio adjustment factors */ + if (scene->r.xsch > scene->r.ysch) { + xasp=1; + yasp=(float)(scene->r.xsch)/(float)(scene->r.ysch); + } + else { + xasp=(float)(scene->r.ysch)/(float)(scene->r.xsch); + yasp=1; + } + + for(efa= em->faces.first; efa; efa= efa->next) { + if(efa->f & SELECT) { + tf= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + + uv_from_camera(camsize, xasp, yasp, tf->uv[0], efa->v1->co, rotmat, invmat, camera->type); + uv_from_camera(camsize, xasp, yasp, tf->uv[1], efa->v2->co, rotmat, invmat, camera->type); + uv_from_camera(camsize, xasp, yasp, tf->uv[2], efa->v3->co, rotmat, invmat, camera->type); + if(efa->v4) + uv_from_camera(camsize, xasp, yasp, tf->uv[3], efa->v4->co, rotmat, invmat, camera->type); + } + } + } + } else { copy_m4_m4(rotmat, obedit->obmat); -- cgit v1.2.3 From 9633d198fbe4ca0f27b8d955ccd29d473364ce6e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Dec 2009 23:35:13 +0000 Subject: solidify from 2.4x (ported from python to C) - shell_angle_to_dist() was using degrees --- release/scripts/ui/space_view3d.py | 1 + source/blender/blenlib/intern/math_base.c | 2 +- source/blender/editors/include/ED_mesh.h | 3 + source/blender/editors/mesh/editmesh_lib.c | 147 ++++++++++++++++++++++++++++ source/blender/editors/mesh/editmesh_mods.c | 43 ++++++++ source/blender/editors/mesh/mesh_intern.h | 2 + source/blender/editors/mesh/mesh_ops.c | 2 + 7 files changed, 199 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index af351f86d86..0ea9c947d4b 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1202,6 +1202,7 @@ class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu): layout.operator("mesh.edge_face_add") layout.operator("mesh.fill") layout.operator("mesh.beauty_fill") + layout.operator("mesh.solidify") layout.separator() diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c index c5d0a1090b3..3b63b033342 100644 --- a/source/blender/blenlib/intern/math_base.c +++ b/source/blender/blenlib/intern/math_base.c @@ -100,7 +100,7 @@ float interpf(float target, float origin, float fac) * the distance gets very high, 180d would be inf, but this case isn't valid */ float shell_angle_to_dist(const float angle) { - return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle * (M_PI/180.0f))); + return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle)); } /* used for zoom values*/ diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 58f4a566ff7..aab364bf686 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -147,6 +147,9 @@ void EM_free_uv_vert_map(struct UvVertMap *vmap); void EM_add_data_layer(struct EditMesh *em, struct CustomData *data, int type); void EM_free_data_layer(struct EditMesh *em, struct CustomData *data, int type); +void EM_make_hq_normals(struct EditMesh *em); +void EM_solidify(struct EditMesh *em, float dist); + /* editmesh_mods.c */ extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs; diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 544dd790dc8..89b6abb14f0 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -49,6 +49,7 @@ editmesh_lib: generic (no UI, no menus) operations/evaluators for editmesh data #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_editVert.h" +#include "BLI_edgehash.h" #include "BKE_customdata.h" #include "BKE_context.h" @@ -2287,3 +2288,149 @@ int EM_view3d_poll(bContext *C) return 1; return 0; } + +/* higher quality normals */ + +/* NormalCalc */ +/* NormalCalc modifier: calculates higher quality normals +*/ + +/* each edge uses this to */ +typedef struct EdgeFaceRef { + int f1; /* init as -1 */ + int f2; +} EdgeFaceRef; + +void EM_make_hq_normals(EditMesh *em) +{ + EditFace *efa; + EditVert *eve; + int i; + + EdgeHash *edge_hash = BLI_edgehash_new(); + EdgeHashIterator *edge_iter; + int edge_ref_count = 0; + int ed_v1, ed_v2; /* use when getting the key */ + EdgeFaceRef *edge_ref_array = MEM_callocN(em->totedge * sizeof(EdgeFaceRef), "Edge Connectivity"); + EdgeFaceRef *edge_ref; + float edge_normal[3]; + + EM_init_index_arrays(em, 1, 1, 1); + + for(eve= em->verts.first, i=0; eve; eve= eve->next, i++) { + zero_v3(eve->no); + eve->tmp.l= i; + } + + /* This function adds an edge hash if its not there, and adds the face index */ +#define NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(EDV1, EDV2); \ + edge_ref = (EdgeFaceRef *)BLI_edgehash_lookup(edge_hash, EDV1, EDV2); \ + if (!edge_ref) { \ + edge_ref = &edge_ref_array[edge_ref_count]; edge_ref_count++; \ + edge_ref->f1=i; \ + edge_ref->f2=-1; \ + BLI_edgehash_insert(edge_hash, EDV1, EDV2, edge_ref); \ + } else { \ + edge_ref->f2=i; \ + } + + + efa= em->faces.first; + for(i = 0; i < em->totface; i++, efa= efa->next) { + if(efa->v4) { + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v1->tmp.l, efa->v2->tmp.l); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v2->tmp.l, efa->v3->tmp.l); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v3->tmp.l, efa->v4->tmp.l); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v4->tmp.l, efa->v1->tmp.l); + } else { + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v1->tmp.l, efa->v2->tmp.l); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v2->tmp.l, efa->v3->tmp.l); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(efa->v3->tmp.l, efa->v1->tmp.l); + } + } + +#undef NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE + + + for(edge_iter = BLI_edgehashIterator_new(edge_hash); !BLI_edgehashIterator_isDone(edge_iter); BLI_edgehashIterator_step(edge_iter)) { + /* Get the edge vert indicies, and edge value (the face indicies that use it)*/ + BLI_edgehashIterator_getKey(edge_iter, (int*)&ed_v1, (int*)&ed_v2); + edge_ref = BLI_edgehashIterator_getValue(edge_iter); + + if (edge_ref->f2 != -1) { + /* We have 2 faces using this edge, calculate the edges normal + * using the angle between the 2 faces as a weighting */ + add_v3_v3v3(edge_normal, EM_get_face_for_index(edge_ref->f1)->n, EM_get_face_for_index(edge_ref->f2)->n); + normalize_v3(edge_normal); + mul_v3_fl(edge_normal, angle_normalized_v3v3(EM_get_face_for_index(edge_ref->f1)->n, EM_get_face_for_index(edge_ref->f2)->n)); + } else { + /* only one face attached to that edge */ + /* an edge without another attached- the weight on this is + * undefined, M_PI/2 is 90d in radians and that seems good enough */ + VECCOPY(edge_normal, EM_get_face_for_index(edge_ref->f1)->n) + mul_v3_fl(edge_normal, M_PI/2); + } + add_v3_v3(EM_get_vert_for_index(ed_v1)->no, edge_normal ); + add_v3_v3(EM_get_vert_for_index(ed_v2)->no, edge_normal ); + + + } + BLI_edgehashIterator_free(edge_iter); + BLI_edgehash_free(edge_hash, NULL); + MEM_freeN(edge_ref_array); + + /* normalize vertex normals and assign */ + for(eve= em->verts.first; eve; eve= eve->next) + normalize_v3(eve->no); + + EM_free_index_arrays(); +} + +#define FLT_EPSILON 0.00001 +void EM_solidify(EditMesh *em, float dist) +{ + EditFace *efa; + EditVert *eve; + int *vert_users= MEM_callocN(sizeof(int) * em->totvert, "EM_offset"); + float *vert_angles= MEM_callocN(sizeof(float) * em->totvert, "EM_offset"); + float angle; + int i; + + for(eve= em->verts.first, i=0; eve; eve= eve->next, i++) { + eve->tmp.l= i; + } + + efa= em->faces.first; + for(i = 0; i < em->totface; i++, efa= efa->next) { + + if(!(efa->f & SELECT)) + continue; + + angle= angle_normalized_v3v3(efa->v1->no, efa->n); + vert_angles[efa->v1->tmp.l]+= shell_angle_to_dist(angle); + vert_users[efa->v1->tmp.l]++; + + angle= angle_normalized_v3v3(efa->v2->no, efa->n); + vert_angles[efa->v2->tmp.l]+= shell_angle_to_dist(angle); + vert_users[efa->v2->tmp.l]++; + + angle= angle_normalized_v3v3(efa->v3->no, efa->n); + vert_angles[efa->v3->tmp.l]+= shell_angle_to_dist(angle); + vert_users[efa->v3->tmp.l]++; + + if(efa->v4) { + angle= angle_normalized_v3v3(efa->v4->no, efa->n); + vert_angles[efa->v4->tmp.l]+= shell_angle_to_dist(angle); + vert_users[efa->v4->tmp.l]++; + } + } + + for(eve= em->verts.first, i=0; eve; eve= eve->next, i++) { + if(vert_users[i]) { /* zero if unselected */ + madd_v3_v3fl(eve->co, eve->no, dist * (vert_angles[i] / (float)vert_users[i])); + } + } + + MEM_freeN(vert_users); + MEM_freeN(vert_angles); +} diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 30dc6114097..1d8b2b05592 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -4542,3 +4542,46 @@ void MESH_OT_flip_normals(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + +static int solidify_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *obedit= CTX_data_edit_object(C); + EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); + float nor[3] = {0,0,1}; + + float thickness= RNA_float_get(op->ptr, "thickness"); + + extrudeflag(obedit, em, SELECT, nor); + EM_make_hq_normals(em); + EM_solidify(em, thickness); + + + /* update vertex normals too */ + recalc_editnormals(em); + + BKE_mesh_end_editmesh(obedit->data, em); + + DAG_id_flush_update(obedit->data, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + + +void MESH_OT_solidify(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Solidify"; + ot->description= "Make the mesh solid."; + ot->idname= "MESH_OT_solidify"; + + /* api callbacks */ + ot->exec= solidify_exec; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_float(ot->srna, "thickness", 0.1f, -FLT_MAX, FLT_MAX, "thickness", "", -10.0f, 10.0f); +} diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 4ce9afaf237..226cfe875d7 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -164,6 +164,8 @@ void MESH_OT_mark_seam(struct wmOperatorType *ot); void MESH_OT_mark_sharp(struct wmOperatorType *ot); void MESH_OT_vertices_smooth(struct wmOperatorType *ot); void MESH_OT_flip_normals(struct wmOperatorType *ot); +void MESH_OT_solidify(struct wmOperatorType *ot); + extern EditEdge *findnearestedge(ViewContext *vc, int *dist); extern void EM_automerge(Scene *scene, Object *obedit, int update); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 5f54aa041e3..b067f894050 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -151,6 +151,8 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_edgering_select); WM_operatortype_append(MESH_OT_loopcut); + + WM_operatortype_append(MESH_OT_solidify); } int ED_operator_editmesh_face_select(bContext *C) -- cgit v1.2.3 From 20748a38ac5fea178c852699b4e14f539e84fe96 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 15 Dec 2009 00:10:03 +0000 Subject: Bugfix #20384: target data path of driving not correct when loading old rig from 2.49b --- source/blender/blenkernel/intern/fcurve.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 04fcd43b883..b5f3d0a4be0 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -828,6 +828,10 @@ float driver_get_target_value (ChannelDriver *driver, DriverTarget *dtar) /* get property to read from, and get value as appropriate */ if (RNA_path_resolve_full(&id_ptr, path, &ptr, &prop, &index)) { + /* for now, if there is no valid index, fall back to the array-index specified separately */ + if (index == -1) + index= dtar->array_index; + switch (RNA_property_type(prop)) { case PROP_BOOLEAN: if (RNA_property_array_length(&ptr, prop)) @@ -927,19 +931,19 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) /* more than one target, so average the values of the targets */ int tot = 0; float value = 0.0f; - + /* loop through targets, adding (hopefully we don't get any overflow!) */ for (dtar= driver->targets.first; dtar; dtar=dtar->next) { value += driver_get_target_value(driver, dtar); tot++; } - + /* return the average of these */ - if(driver->type == DRIVER_TYPE_AVERAGE) + if (driver->type == DRIVER_TYPE_AVERAGE) return (value / (float)tot); else return value; - + } } break; -- cgit v1.2.3 From 9fe37d9970f649cff108c9d3f7bfb492515d4f0c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 00:24:30 +0000 Subject: improve solidify results by weighting the faces influence on a vertex by the corner angle of each face before displacing --- source/blender/editors/mesh/editmesh_lib.c | 71 +++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 89b6abb14f0..544e0b4ace7 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -2387,14 +2387,52 @@ void EM_make_hq_normals(EditMesh *em) } #define FLT_EPSILON 0.00001 + +static void em_face_angles(EditFace *efa, float *face_angles) +{ + float vec1[3], vec2[3], vec3[3], vec4[3]; + + /* note, could cache normalized edges? */ + if(efa->v4) { + sub_v3_v3v3(vec1, efa->v4->co, efa->v1->co); + sub_v3_v3v3(vec2, efa->v1->co, efa->v2->co); + sub_v3_v3v3(vec3, efa->v2->co, efa->v3->co); + sub_v3_v3v3(vec4, efa->v3->co, efa->v4->co); + + normalize_v3(vec1); + normalize_v3(vec2); + normalize_v3(vec3); + normalize_v3(vec4); + + face_angles[0]= M_PI - angle_normalized_v3v3(vec1, vec2); + face_angles[1]= M_PI - angle_normalized_v3v3(vec2, vec3); + face_angles[2]= M_PI - angle_normalized_v3v3(vec3, vec4); + face_angles[3]= M_PI - angle_normalized_v3v3(vec4, vec1); + } + else { + sub_v3_v3v3(vec1, efa->v3->co, efa->v1->co); + sub_v3_v3v3(vec2, efa->v1->co, efa->v2->co); + sub_v3_v3v3(vec3, efa->v2->co, efa->v3->co); + + normalize_v3(vec1); + normalize_v3(vec2); + normalize_v3(vec3); + + face_angles[0]= M_PI - angle_normalized_v3v3(vec1, vec2); + face_angles[1]= M_PI - angle_normalized_v3v3(vec2, vec3); + + //face_angles[2]= M_PI - (face_angles[0] + face_angles[1]); + face_angles[2] = M_PI - angle_normalized_v3v3(vec3, vec1); + } +} void EM_solidify(EditMesh *em, float dist) { EditFace *efa; EditVert *eve; - int *vert_users= MEM_callocN(sizeof(int) * em->totvert, "EM_offset"); - float *vert_angles= MEM_callocN(sizeof(float) * em->totvert, "EM_offset"); - float angle; - int i; + float *vert_angles= MEM_callocN(sizeof(float) * em->totvert * 2, "EM_solidify"); /* 2 in 1 */ + float *vert_accum= vert_accum= vert_angles + em->totvert; + float face_angles[4]; + int i, j; for(eve= em->verts.first, i=0; eve; eve= eve->next, i++) { eve->tmp.l= i; @@ -2406,31 +2444,20 @@ void EM_solidify(EditMesh *em, float dist) if(!(efa->f & SELECT)) continue; - angle= angle_normalized_v3v3(efa->v1->no, efa->n); - vert_angles[efa->v1->tmp.l]+= shell_angle_to_dist(angle); - vert_users[efa->v1->tmp.l]++; - - angle= angle_normalized_v3v3(efa->v2->no, efa->n); - vert_angles[efa->v2->tmp.l]+= shell_angle_to_dist(angle); - vert_users[efa->v2->tmp.l]++; + em_face_angles(efa, face_angles); - angle= angle_normalized_v3v3(efa->v3->no, efa->n); - vert_angles[efa->v3->tmp.l]+= shell_angle_to_dist(angle); - vert_users[efa->v3->tmp.l]++; - - if(efa->v4) { - angle= angle_normalized_v3v3(efa->v4->no, efa->n); - vert_angles[efa->v4->tmp.l]+= shell_angle_to_dist(angle); - vert_users[efa->v4->tmp.l]++; + for(j= efa->v4 ? 3:2; j>=0; j--) { + eve= *(&efa->v1 + j); + vert_accum[eve->tmp.l] += face_angles[j]; + vert_angles[eve->tmp.l]+= shell_angle_to_dist(angle_normalized_v3v3(eve->no, efa->n)) * face_angles[j]; } } for(eve= em->verts.first, i=0; eve; eve= eve->next, i++) { - if(vert_users[i]) { /* zero if unselected */ - madd_v3_v3fl(eve->co, eve->no, dist * (vert_angles[i] / (float)vert_users[i])); + if(vert_accum[i]) { /* zero if unselected */ + madd_v3_v3fl(eve->co, eve->no, dist * vert_angles[i] / vert_accum[i]); } } - MEM_freeN(vert_users); MEM_freeN(vert_angles); } -- cgit v1.2.3 From ded4cbb553f0a5bdc3e8b62b82932429848f37ee Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 00:53:34 +0000 Subject: solidify would only work as expecyed if all faces were selected, added an override to extrude that means it runs without removing selected faces first, even on a partial selection --- source/blender/editors/mesh/editmesh_add.c | 6 +++--- source/blender/editors/mesh/editmesh_lib.c | 24 +++++++++++++----------- source/blender/editors/mesh/editmesh_mods.c | 3 +-- source/blender/editors/mesh/editmesh_tools.c | 6 +++--- source/blender/editors/mesh/mesh_intern.h | 4 ++-- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index fbe72a54e70..26fde849f9f 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -192,7 +192,7 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event) } } - extrudeflag(vc.obedit, vc.em, SELECT, nor); + extrudeflag(vc.obedit, vc.em, SELECT, nor, 0); rotateflag(vc.em, SELECT, cent, mat); translateflag(vc.em, SELECT, min); @@ -1025,7 +1025,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se mul_mat3_m4_v3(mat, vec); for(a=0;aco, cmat); } diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 544e0b4ace7..c543c3287a0 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -1143,7 +1143,7 @@ short extrudeflag_verts_indiv(EditMesh *em, short flag, float *nor) /* this is actually a recode of extrudeflag(), using proper edge/face select */ /* hurms, doesnt use 'flag' yet, but its not called by primitive making stuff anyway */ -static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *nor) +static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *nor, int all) { /* all select edges/faces: extrude */ /* old select is cleared, in new ones it is set */ @@ -1256,11 +1256,13 @@ static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *n set_edge_directions_f2(em, 2); /* step 1.5: if *one* selected face has edge with unselected face; remove old selected faces */ - for(efa= em->faces.last; efa; efa= efa->prev) { - if(efa->f & SELECT) { - if(efa->e1->f1 || efa->e2->f1 || efa->e3->f1 || (efa->e4 && efa->e4->f1)) { - del_old= 1; - break; + if(all == 0) { + for(efa= em->faces.last; efa; efa= efa->prev) { + if(efa->f & SELECT) { + if(efa->e1->f1 || efa->e2->f1 || efa->e3->f1 || (efa->e4 && efa->e4->f1)) { + del_old= 1; + break; + } } } } @@ -1398,7 +1400,7 @@ static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *n return 'n'; // normal constraint } -short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor) +short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor, int all) { /* all verts/edges/faces with (f & 'flag'): extrude */ /* from old verts, 'flag' is cleared, in new ones it is set */ @@ -1569,7 +1571,7 @@ short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor) */ /* find if we delete old faces */ - if(is_face_sel) { + if(is_face_sel && all==0) { for(eed= em->edges.first; eed; eed= eed->next) { if( (eed->f2==1 || eed->f2==2) ) { if(eed->f1==2) { @@ -1685,12 +1687,12 @@ short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor) } /* generic extrude */ -short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor) +short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor, int all) { if(em->selectmode & SCE_SELECT_VERTEX) - return extrudeflag_vert(obedit, em, flag, nor); + return extrudeflag_vert(obedit, em, flag, nor, all); else - return extrudeflag_edge(obedit, em, flag, nor); + return extrudeflag_edge(obedit, em, flag, nor, all); } diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 1d8b2b05592..1ff2d097100 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -4545,14 +4545,13 @@ void MESH_OT_flip_normals(wmOperatorType *ot) static int solidify_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); float nor[3] = {0,0,1}; float thickness= RNA_float_get(op->ptr, "thickness"); - extrudeflag(obedit, em, SELECT, nor); + extrudeflag(obedit, em, SELECT, nor, 1); EM_make_hq_normals(em); EM_solidify(em, thickness); diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index b283070d454..e41d60783fe 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -660,7 +660,7 @@ void extrude_mesh(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op) if(nr<1) return; - if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor); + if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor, 0); else if(nr==4) transmode= extrudeflag_verts_indiv(em, SELECT, nor); else if(nr==3) transmode= extrudeflag_edges_indiv(em, SELECT, nor); else transmode= extrudeflag_face_indiv(em, SELECT, nor); @@ -816,7 +816,7 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op) mul_m3_v3(tmat, dvec); for(a=0; a Date: Tue, 15 Dec 2009 01:03:05 +0000 Subject: number button precission was far too low, description also bit. --- source/blender/editors/mesh/editmesh_mods.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 1ff2d097100..0fa6ff0188c 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -4570,9 +4570,10 @@ static int solidify_exec(bContext *C, wmOperator *op) void MESH_OT_solidify(wmOperatorType *ot) { + PropertyRNA *prop; /* identifiers */ ot->name= "Solidify"; - ot->description= "Make the mesh solid."; + ot->description= "Create a solid skin by extruding, compensating for sharp angles."; ot->idname= "MESH_OT_solidify"; /* api callbacks */ @@ -4582,5 +4583,6 @@ void MESH_OT_solidify(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_float(ot->srna, "thickness", 0.1f, -FLT_MAX, FLT_MAX, "thickness", "", -10.0f, 10.0f); + prop= RNA_def_float(ot->srna, "thickness", 0.01f, -FLT_MAX, FLT_MAX, "thickness", "", -10.0f, 10.0f); + RNA_def_property_ui_range(prop, -10, 10, 0.1, 4); } -- cgit v1.2.3 From 55898c04fd4935de5610242bfb259f30e58b0413 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 15 Dec 2009 03:25:26 +0000 Subject: netrender: Add button to start Slaves and Master when in that mode (it's only calling render animation) --- release/scripts/io/netrender/ui.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index ab3844d5597..040f9140a54 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -63,6 +63,11 @@ class RENDER_PT_network_settings(RenderButtonsPanel): split = layout.split() col = split.column() + + + if scene.network_render.mode in ("RENDER_MASTER", "RENDER_SLAVE"): + col.operator("screen.render", text="Start", icon='PLAY').animation = True + col.prop(scene.network_render, "mode") col.prop(scene.network_render, "path") col.prop(scene.network_render, "server_address") -- cgit v1.2.3 From 7fc799d4a9c52254390e5df2942c73831ca7e5ac Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 09:39:46 +0000 Subject: utility functions for getting the corner angles of a quad or tri: angle_quad_v3 & angle_tri_v3 --- source/blender/blenlib/BLI_math_vector.h | 2 ++ source/blender/blenlib/intern/math_vector.c | 38 ++++++++++++++++++++++ source/blender/editors/mesh/editmesh_lib.c | 50 ++++++----------------------- 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index 399c234a108..e915a9a85f3 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -131,6 +131,8 @@ float angle_normalized_v2v2(float a[2], float b[2]); float angle_v3v3(float a[2], float b[2]); float angle_v3v3v3(float a[2], float b[2], float c[2]); float angle_normalized_v3v3(float a[3], float b[3]); +void angle_tri_v3(float angles[3], const float v1[3], const float v2[3], const float v3[3]); +void angle_quad_v3(float angles[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3]); /********************************* Geometry **********************************/ diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 289d8818753..2ce4a069a48 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -205,6 +205,44 @@ float angle_normalized_v2v2(float *v1, float *v2) return 2.0f*(float)saasin(len_v2v2(v2, v1)/2.0f); } +void angle_tri_v3(float angles[3], const float v1[3], const float v2[3], const float v3[3]) +{ + float ed1[3], ed2[3], ed3[3]; + + sub_v3_v3v3(ed1, v3, v1); + sub_v3_v3v3(ed2, v1, v2); + sub_v3_v3v3(ed3, v2, v3); + + normalize_v3(ed1); + normalize_v3(ed2); + normalize_v3(ed3); + + angles[0]= M_PI - angle_normalized_v3v3(ed1, ed2); + angles[1]= M_PI - angle_normalized_v3v3(ed2, ed3); + // face_angles[2] = M_PI - angle_normalized_v3v3(ed3, ed1); + angles[2]= M_PI - (angles[0] + angles[1]); +} + +void angle_quad_v3(float angles[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3]) +{ + float ed1[3], ed2[3], ed3[3], ed4[3]; + + sub_v3_v3v3(ed1, v4, v1); + sub_v3_v3v3(ed2, v1, v2); + sub_v3_v3v3(ed3, v2, v3); + sub_v3_v3v3(ed4, v3, v4); + + normalize_v3(ed1); + normalize_v3(ed2); + normalize_v3(ed3); + normalize_v3(ed4); + + angles[0]= M_PI - angle_normalized_v3v3(ed1, ed2); + angles[1]= M_PI - angle_normalized_v3v3(ed2, ed3); + angles[2]= M_PI - angle_normalized_v3v3(ed3, ed4); + angles[3]= M_PI - angle_normalized_v3v3(ed4, ed1); +} + /********************************* Geometry **********************************/ /* Project v1 on v2 */ diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index c543c3287a0..52af5ce8e2f 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -2388,45 +2388,6 @@ void EM_make_hq_normals(EditMesh *em) EM_free_index_arrays(); } -#define FLT_EPSILON 0.00001 - -static void em_face_angles(EditFace *efa, float *face_angles) -{ - float vec1[3], vec2[3], vec3[3], vec4[3]; - - /* note, could cache normalized edges? */ - if(efa->v4) { - sub_v3_v3v3(vec1, efa->v4->co, efa->v1->co); - sub_v3_v3v3(vec2, efa->v1->co, efa->v2->co); - sub_v3_v3v3(vec3, efa->v2->co, efa->v3->co); - sub_v3_v3v3(vec4, efa->v3->co, efa->v4->co); - - normalize_v3(vec1); - normalize_v3(vec2); - normalize_v3(vec3); - normalize_v3(vec4); - - face_angles[0]= M_PI - angle_normalized_v3v3(vec1, vec2); - face_angles[1]= M_PI - angle_normalized_v3v3(vec2, vec3); - face_angles[2]= M_PI - angle_normalized_v3v3(vec3, vec4); - face_angles[3]= M_PI - angle_normalized_v3v3(vec4, vec1); - } - else { - sub_v3_v3v3(vec1, efa->v3->co, efa->v1->co); - sub_v3_v3v3(vec2, efa->v1->co, efa->v2->co); - sub_v3_v3v3(vec3, efa->v2->co, efa->v3->co); - - normalize_v3(vec1); - normalize_v3(vec2); - normalize_v3(vec3); - - face_angles[0]= M_PI - angle_normalized_v3v3(vec1, vec2); - face_angles[1]= M_PI - angle_normalized_v3v3(vec2, vec3); - - //face_angles[2]= M_PI - (face_angles[0] + face_angles[1]); - face_angles[2] = M_PI - angle_normalized_v3v3(vec3, vec1); - } -} void EM_solidify(EditMesh *em, float dist) { EditFace *efa; @@ -2446,9 +2407,16 @@ void EM_solidify(EditMesh *em, float dist) if(!(efa->f & SELECT)) continue; - em_face_angles(efa, face_angles); + if(efa->v4) { + angle_quad_v3(face_angles, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co); + j= 3; + } + else { + angle_tri_v3(face_angles, efa->v1->co, efa->v2->co, efa->v3->co); + j= 2; + } - for(j= efa->v4 ? 3:2; j>=0; j--) { + for(; j>=0; j--) { eve= *(&efa->v1 + j); vert_accum[eve->tmp.l] += face_angles[j]; vert_angles[eve->tmp.l]+= shell_angle_to_dist(angle_normalized_v3v3(eve->no, efa->n)) * face_angles[j]; -- cgit v1.2.3 From 2f80f813f37b340aceb4a457aee032a30d4cc6a9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 10:04:54 +0000 Subject: * made seqence swap into 1 operator with left/right enum option * allow sequence swapping even when the strip has an effect * only recalc the effect when its needed --- .../editors/space_sequencer/sequencer_edit.c | 55 ++++++---------------- .../editors/space_sequencer/sequencer_intern.h | 3 +- .../editors/space_sequencer/sequencer_ops.c | 7 ++- 3 files changed, 19 insertions(+), 46 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 277d32d6360..e231c03a335 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -125,13 +125,19 @@ EnumPropertyItem sequencer_prop_effect_types[] = { /* mute operator */ - EnumPropertyItem prop_side_types[] = { +EnumPropertyItem prop_side_types[] = { {SEQ_SIDE_LEFT, "LEFT", 0, "Left", ""}, {SEQ_SIDE_RIGHT, "RIGHT", 0, "Right", ""}, {SEQ_SIDE_BOTH, "BOTH", 0, "Both", ""}, {0, NULL, 0, NULL, NULL} }; +EnumPropertyItem prop_side_lr_types[] = { + {SEQ_SIDE_LEFT, "LEFT", 0, "Left", ""}, + {SEQ_SIDE_RIGHT, "RIGHT", 0, "Right", ""}, + {0, NULL, 0, NULL, NULL} +}; + typedef struct TransSeq { int start, machine; int startstill, endstill; @@ -2614,12 +2620,13 @@ static Sequence* sequence_find_parent(Scene* scene, Sequence* child) } -static int sequencer_swap_internal_exec(bContext *C, int side) +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 *seq, *iseq; + int side= RNA_enum_get(op->ptr, "side"); if(ed==NULL) return OPERATOR_CANCELLED; if(active_seq==NULL) return OPERATOR_CANCELLED; @@ -2634,11 +2641,6 @@ static int sequencer_swap_internal_exec(bContext *C, int side) if ((active_seq->type!=SEQ_COLOR) && (active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3)) return OPERATOR_CANCELLED; - /* disallow if parent strip (effect strip) is attached */ - if ( sequence_find_parent(scene, active_seq)) { - return OPERATOR_CANCELLED; - } - switch (side) { case SEQ_SIDE_LEFT: swap_sequence(seq, active_seq); @@ -2650,9 +2652,8 @@ static int sequencer_swap_internal_exec(bContext *C, int side) // XXX - should be a generic function for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) { - //if((iseq->type & SEQ_EFFECT) && ELEM6(iseq, seq->seq1, seq->seq2, seq->seq3, active_seq->seq1, active_seq->seq2, active_seq->seq3)) - if(iseq->type & SEQ_EFFECT) - calc_sequence(iseq); + if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) + calc_sequence(iseq); } WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); @@ -2663,48 +2664,22 @@ static int sequencer_swap_internal_exec(bContext *C, int side) return OPERATOR_CANCELLED; } -static int sequencer_swap_right_exec(bContext *C, wmOperator *op) -{ - return sequencer_swap_internal_exec(C, SEQ_SIDE_RIGHT); -} - -void SEQUENCER_OT_swap_right(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Swap Strip Right"; - ot->idname= "SEQUENCER_OT_swap_right"; - ot->description="Swap active strip with strip to the right."; - - /* api callbacks */ - ot->exec= sequencer_swap_right_exec; - ot->poll= ED_operator_sequencer_active; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - /* properties */ -} - -static int sequencer_swap_left_exec(bContext *C, wmOperator *op) -{ - return sequencer_swap_internal_exec(C, SEQ_SIDE_LEFT); -} - -void SEQUENCER_OT_swap_left(wmOperatorType *ot) +void SEQUENCER_OT_swap(wmOperatorType *ot) { /* identifiers */ ot->name= "Swap Strip Left"; - ot->idname= "SEQUENCER_OT_swap_left"; + ot->idname= "SEQUENCER_OT_swap"; ot->description="Swap active strip with strip to the left."; /* api callbacks */ - ot->exec= sequencer_swap_left_exec; + ot->exec= sequencer_swap_exec; ot->poll= ED_operator_sequencer_active; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ + RNA_def_enum(ot->srna, "side", prop_side_lr_types, SEQ_SIDE_RIGHT, "Side", "Side of the strip to swap"); } static int sequencer_rendersize_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index e5e159138fc..ee2d2eb18e0 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -91,8 +91,7 @@ void SEQUENCER_OT_meta_separate(struct wmOperatorType *ot); 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_right(struct wmOperatorType *ot); -void SEQUENCER_OT_swap_left(struct wmOperatorType *ot); +void SEQUENCER_OT_swap(struct wmOperatorType *ot); void SEQUENCER_OT_rendersize(struct wmOperatorType *ot); void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 2636fa67c47..941df4d2e36 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -79,8 +79,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_snap); WM_operatortype_append(SEQUENCER_OT_next_edit); WM_operatortype_append(SEQUENCER_OT_previous_edit); - WM_operatortype_append(SEQUENCER_OT_swap_right); - WM_operatortype_append(SEQUENCER_OT_swap_left); + WM_operatortype_append(SEQUENCER_OT_swap); WM_operatortype_append(SEQUENCER_OT_rendersize); WM_operatortype_append(SEQUENCER_OT_view_all); @@ -157,8 +156,8 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_next_edit", PAGEUPKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_previous_edit", PAGEDOWNKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_left", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_right", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); + RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", LEFTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_LEFT); + RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_RIGHT); WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); -- cgit v1.2.3 From df8c1f5b912137c70276359df28dc97cc70eadca Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 10:35:50 +0000 Subject: animation system wasnt being updated when rendering with the sequencer --- release/scripts/ui/space_sequencer.py | 3 +-- source/blender/editors/space_sequencer/sequencer_edit.c | 6 +++--- source/blender/render/intern/source/pipeline.c | 5 +++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 54fe48758f1..16e744a9de3 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -275,8 +275,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator("sequencer.snap") - layout.operator("sequencer.swap_right") - layout.operator("sequencer.swap_left") + layout.operator_menu_enum("sequencer.swap", "side") class SequencerButtonsPanel(bpy.types.Panel): diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index e231c03a335..361d92c1930 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2667,7 +2667,7 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) void SEQUENCER_OT_swap(wmOperatorType *ot) { /* identifiers */ - ot->name= "Swap Strip Left"; + ot->name= "Swap Strip"; ot->idname= "SEQUENCER_OT_swap"; ot->description="Swap active strip with strip to the left."; @@ -2688,9 +2688,9 @@ static int sequencer_rendersize_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Sequence *active_seq = active_seq_get(scene); - if(active_seq==NULL) return OPERATOR_CANCELLED; + if(active_seq==NULL) + return OPERATOR_CANCELLED; - printf("got active sequence\n"); switch (active_seq->type) { case SEQ_IMAGE: case SEQ_MOVIE: diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 8034c2612e4..1eb864e173d 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2439,6 +2439,11 @@ static void do_render_seq(Render * re) RenderResult *rr = re->result; int cfra = re->r.cfra; + if(recurs_depth==0) { + /* otherwise sequencer animation isnt updated */ + BKE_animsys_evaluate_all_animation(G.main, frame_to_float(re->scene, cfra)); + } + recurs_depth++; ibuf= give_ibuf_seq(re->scene, rr->rectx, rr->recty, cfra, 0, 100.0); -- cgit v1.2.3 From 18b9385c53a29ce02fe89ee4aae99d9e87c2f38e Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 15 Dec 2009 10:46:19 +0000 Subject: Small Durian Request for animation editors: Assigned borderselect for animation channels to LMB-tweak too, so it is now possible to select a bunch of channels by simply click-dragging. --- source/blender/editors/animation/anim_channels_edit.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 4be9cb2cd9d..c919b164a05 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -1916,6 +1916,7 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) /* borderselect */ WM_keymap_add_item(keymap, "ANIM_OT_channels_select_border", BKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_channels_select_border", EVT_TWEAK_L, KM_ANY, 0, 0); /* delete */ WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", XKEY, KM_PRESS, 0, 0); -- cgit v1.2.3 From 8aa8efb3274daa5bb62c3a20f0ed940cad0ea287 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 11:27:46 +0000 Subject: * rna attributes for sequence strips - seq.start_frame_final & seq.end_frame_final these expose the final start and end after offsets are applied. when set this is like grabbing the handle and moving it. * made swapping strips shuffle effects and check for overlap. --- source/blender/blenkernel/BKE_sequencer.h | 4 +- source/blender/blenkernel/intern/sequencer.c | 10 +-- .../editors/space_sequencer/sequencer_draw.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 17 ++++- .../editors/space_sequencer/sequencer_intern.h | 2 +- .../editors/space_sequencer/space_sequencer.c | 2 +- .../editors/transform/transform_conversions.c | 4 +- source/blender/makesrna/intern/rna_sequencer.c | 79 +++++++++++++++------- 8 files changed, 84 insertions(+), 36 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 5b146cd5ecd..95fe8fb5eb9 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -178,8 +178,8 @@ void seq_tx_set_final_left(struct Sequence *seq, int val); void seq_tx_set_final_right(struct Sequence *seq, int val); void seq_tx_handle_xlimits(struct Sequence *seq, int leftflag, int rightflag); int seq_tx_test(struct Sequence * seq); -int check_single_seq(struct Sequence *seq); -void fix_single_seq(struct Sequence *seq); +int seq_single_check(struct Sequence *seq); +void seq_single_fix(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 2faaa2fb5f5..4d6033e4f4a 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3259,7 +3259,7 @@ void seq_tx_set_final_right(Sequence *seq, int val) /* used so we can do a quick check for single image seq since they work a bit differently to normal image seq's (during transform) */ -int check_single_seq(Sequence *seq) +int seq_single_check(Sequence *seq) { if ( seq->len==1 && (seq->type == SEQ_IMAGE || seq->type == SEQ_COLOR)) return 1; @@ -3276,7 +3276,7 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) seq_tx_set_final_left(seq, seq_tx_get_final_right(seq, 0)-1); } - if (check_single_seq(seq)==0) { + if (seq_single_check(seq)==0) { if (seq_tx_get_final_left(seq, 0) >= seq_tx_get_end(seq)) { seq_tx_set_final_left(seq, seq_tx_get_end(seq)-1); } @@ -3298,7 +3298,7 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) seq_tx_set_final_right(seq, seq_tx_get_final_left(seq, 0)+1); } - if (check_single_seq(seq)==0) { + if (seq_single_check(seq)==0) { if (seq_tx_get_final_right(seq, 0) <= seq_tx_get_start(seq)) { seq_tx_set_final_right(seq, seq_tx_get_start(seq)+1); } @@ -3312,10 +3312,10 @@ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) } } -void fix_single_seq(Sequence *seq) +void seq_single_fix(Sequence *seq) { int left, start, offset; - if (!check_single_seq(seq)) + if (!seq_single_check(seq)) return; /* make sure the image is always at the start since there is only one, diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index ac8b222728e..a2525430a10 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -525,7 +525,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * char col[3], background_col[3], is_single_image; /* we need to know if this is a single image/color or not for drawing */ - is_single_image = (char)check_single_seq(seq); + is_single_image = (char)seq_single_check(seq); /* body */ if(seq->startstill) x1= seq->start; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 361d92c1930..1876062b2b7 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2652,10 +2652,25 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) // XXX - should be a generic function for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) { - if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) + if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) { calc_sequence(iseq); + } + } + + /* do this in a new loop since both effects need to be calculated first */ + for(iseq= scene->ed->seqbasep->first; iseq; iseq= iseq->next) { + if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) { + /* this may now overlap */ + if( seq_test_overlap(ed->seqbasep, iseq) ) { + shuffle_seq(ed->seqbasep, iseq); + } + } } + + + sort_seq(scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index ee2d2eb18e0..1cbc6e1bd1d 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -54,7 +54,7 @@ void seq_reset_imageofs(struct SpaceSeq *sseq); /* sequencer_edit.c */ struct View2D; -int check_single_seq(struct Sequence *seq); +int seq_single_check(struct Sequence *seq); int seq_tx_get_final_left(struct Sequence *seq, int metaclip); int seq_tx_get_final_right(struct Sequence *seq, int metaclip); void seq_rectf(struct Sequence *seq, struct rctf *rectf); diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 4c610dc6668..b75b4e55ae3 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -269,7 +269,7 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) static void sequencer_main_area_draw(const bContext *C, ARegion *ar) { - ScrArea *sa= CTX_wm_area(C); +// ScrArea *sa= CTX_wm_area(C); /* NLE - strip editing timeline interface */ draw_timeline_seq(C, ar); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index e9b0cb40b1b..0115d34c6b1 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2390,12 +2390,12 @@ void flushTransSeq(TransInfo *t) case SEQ_LEFTSEL: /* no vertical transform */ seq_tx_set_final_left(seq, new_frame); seq_tx_handle_xlimits(seq, tdsq->flag&SEQ_LEFTSEL, tdsq->flag&SEQ_RIGHTSEL); - fix_single_seq(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */ + seq_single_fix(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */ break; case SEQ_RIGHTSEL: /* no vertical transform */ seq_tx_set_final_right(seq, new_frame); seq_tx_handle_xlimits(seq, tdsq->flag&SEQ_LEFTSEL, tdsq->flag&SEQ_RIGHTSEL); - fix_single_seq(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */ + seq_single_fix(seq); /* todo - move this into aftertrans update? - old seq tx needed it anyway */ break; } diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 2eee35164af..b8cd2c56483 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -56,8 +56,8 @@ static void meta_tmp_ref(Sequence *seq_par, Sequence *seq) static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); + Scene *scene= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); meta_tmp_ref(NULL, ed->seqbase.first); @@ -88,34 +88,55 @@ static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *it iter->valid= (internal->link != NULL); } -static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) +/* internal use */ +static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq) { - Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); - - seq->start= value; + Editing *ed= seq_give_editing(scene, FALSE); + calc_sequence_disp(seq); - + if( seq_test_overlap(ed->seqbasep, seq) ) { shuffle_seq(ed->seqbasep, seq); } - sort_seq(sce); + sort_seq(scene); +} + +static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *scene= (Scene*)ptr->id.data; + + seq->start= value; + rna_Sequence_frame_change_update(scene, seq); +} + +static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *scene= (Scene*)ptr->id.data; + + seq_tx_set_final_left(seq, value); + seq_single_fix(seq); + rna_Sequence_frame_change_update(scene, seq); +} + +static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *scene= (Scene*)ptr->id.data; + + seq_tx_set_final_right(seq, value); + seq_single_fix(seq); + rna_Sequence_frame_change_update(scene, seq); } static void rna_Sequence_length_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); + Scene *scene= (Scene*)ptr->id.data; seq_tx_set_final_right(seq, seq->start+value); - calc_sequence_disp(seq); - - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); - } - sort_seq(sce); + rna_Sequence_frame_change_update(scene, seq); } static int rna_Sequence_length_get(PointerRNA *ptr) @@ -127,15 +148,15 @@ static int rna_Sequence_length_get(PointerRNA *ptr) static void rna_Sequence_channel_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; - Scene *sce= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(sce, FALSE); + Scene *scene= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); seq->machine= value; if( seq_test_overlap(ed->seqbasep, seq) ) { shuffle_seq(ed->seqbasep, seq); } - sort_seq(sce); + sort_seq(scene); } /* properties that need to allocate structs */ @@ -212,10 +233,10 @@ static int rna_Sequence_name_length(PointerRNA *ptr) static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) { - Scene *sce= (Scene*)ptr->id.data; + Scene *scene= (Scene*)ptr->id.data; Sequence *seq= (Sequence*)ptr->data; BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2); - seqUniqueName(&sce->ed->seqbase, seq); + seqUniqueName(&scene->ed->seqbase, seq); } static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) @@ -573,6 +594,18 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + prop= RNA_def_property(srna, "start_frame_final", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "startdisp"); + RNA_def_property_ui_text(prop, "Start Frame", "Start frame displayed in the sequence editor after offsets are applied, setting this is equivilent to moving the handle, not the actual start frame."); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_start_frame_final_set", NULL); // overlap tests and calc_seq_disp + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "end_frame_final", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "enddisp"); + RNA_def_property_ui_text(prop, "End Frame", "End frame displayed in the sequence editor after offsets are applied."); + RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_end_frame_final_set", NULL); // overlap tests and calc_seq_disp + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "startofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests -- cgit v1.2.3 From 66880f62bbc7ea97e8d0cb81d7d576aa45e9a273 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 15 Dec 2009 14:22:34 +0000 Subject: Slight reorganization of user preferences. I've switched out the clunky use of splits with percentages and used simple rows instead. --- release/scripts/ui/space_userpref.py | 197 +++++++++++++++++++++-------------- 1 file changed, 121 insertions(+), 76 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index cf5b2eb9eed..90d409585be 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -66,13 +66,11 @@ class USERPREF_PT_interface(bpy.types.Panel): userpref = context.user_preferences view = userpref.view + + row = layout.row() + - split = layout.split() - - column = split.column() - colsplit = column.split(percentage=0.85) - - col = colsplit.column() + col = row.column() col.label(text="Display:") col.prop(view, "tooltips") col.prop(view, "display_object_info", text="Object Info") @@ -93,10 +91,11 @@ class USERPREF_PT_interface(bpy.types.Panel): sub.prop(view, "mini_axis_size", text="Size") sub.prop(view, "mini_axis_brightness", text="Brightness") - column = split.column() - colsplit = column.split(percentage=0.85) - col = colsplit.column() + row.separator() + row.separator() + + col = row.column() col.label(text="View Manipulation:") col.prop(view, "auto_depth") col.prop(view, "global_pivot") @@ -109,19 +108,16 @@ class USERPREF_PT_interface(bpy.types.Panel): col.prop(view, "smooth_view") col.prop(view, "rotation_angle") - column = split.column() - colsplit = column.split(percentage=0.85) - - col = colsplit.column() - + row.separator() + row.separator() + + col = row.column() #Toolbox doesn't exist yet #col.label(text="Toolbox:") #col.prop(view, "use_column_layout") #col.label(text="Open Toolbox Delay:") #col.prop(view, "open_left_mouse_delay", text="Hold LMB") #col.prop(view, "open_right_mouse_delay", text="Hold RMB") - - #Manipulator col.prop(view, "use_manipulator") sub = col.column() sub.enabled = view.use_manipulator @@ -156,12 +152,11 @@ class USERPREF_PT_edit(bpy.types.Panel): userpref = context.user_preferences edit = userpref.edit - split = layout.split() - column = split.column() - colsplit = column.split(percentage=0.85) + row = layout.row() - col = colsplit.column() + + col = row.column() col.label(text="Link Materials To:") col.row().prop(edit, "material_link", expand=True) @@ -183,10 +178,12 @@ class USERPREF_PT_edit(bpy.types.Panel): col.prop(edit, "undo_steps", text="Steps") col.prop(edit, "undo_memory_limit", text="Memory Limit") - column = split.column() - colsplit = column.split(percentage=0.85) - col = colsplit.column() + row.separator() + row.separator() + + + col = row.column() col.label(text="Snap:") col.prop(edit, "snap_translate", text="Translate") col.prop(edit, "snap_rotate", text="Rotate") @@ -201,10 +198,12 @@ class USERPREF_PT_edit(bpy.types.Panel): col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") col.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") - column = split.column() - colsplit = column.split(percentage=0.85) - col = colsplit.column() + row.separator() + row.separator() + + + col = row.column() col.label(text="Keyframing:") col.prop(edit, "use_visual_keying") col.prop(edit, "keyframe_insert_needed", text="Only Insert Needed") @@ -232,14 +231,12 @@ class USERPREF_PT_edit(bpy.types.Panel): col.label(text="Transform:") col.prop(edit, "drag_immediately") - col.separator() - col.separator() - col.separator() - column = split.column() - colsplit = column.split(percentage=0.85) + row.separator() + row.separator() - col = colsplit.column() + + col = row.column() col.label(text="Duplicate Data:") col.prop(edit, "duplicate_mesh", text="Mesh") col.prop(edit, "duplicate_surface", text="Surface") @@ -305,11 +302,7 @@ class USERPREF_PT_system(bpy.types.Panel): col.separator() col.separator() - col.label(text="Weight Colors:") - col.prop(system, "use_weight_color_range", text="Use Custom Range") - sub = col.column() - sub.active = system.use_weight_color_range - sub.template_color_ramp(system, "weight_color_range", expand=True) + #column = split.column() #colsplit = column.split(percentage=0.85) @@ -324,39 +317,7 @@ class USERPREF_PT_system(bpy.types.Panel): #col.separator() #col.prop(system, "use_textured_fonts") - - column = split.column() - colsplit = column.split(percentage=0.85) - - col1 = colsplit.column() - col1.label(text="Solid OpenGL lights:") - - col = col1.split() - - sub = col.column() - sub.prop(lamp0, "enabled") - subsub = sub.column() - subsub.active = lamp0.enabled - subsub.prop(lamp0, "diffuse_color") - subsub.prop(lamp0, "specular_color") - subsub.prop(lamp0, "direction") - - sub = col.column() - sub.prop(lamp1, "enabled") - subsub = sub.column() - subsub.active = lamp1.enabled - subsub.prop(lamp1, "diffuse_color") - subsub.prop(lamp1, "specular_color") - subsub.prop(lamp1, "direction") - - sub = col.column() - sub.prop(lamp2, "enabled") - subsub = sub.column() - subsub.active = lamp2.enabled - subsub.prop(lamp2, "diffuse_color") - subsub.prop(lamp2, "specular_color") - subsub.prop(lamp2, "direction") - + column = split.column() colsplit = column.split(percentage=0.85) @@ -380,6 +341,92 @@ class USERPREF_PT_system(bpy.types.Panel): col.prop(system, "prefetch_frames") col.prop(system, "memory_cache_limit") + column = split.column() + + column.label(text="Solid OpenGL lights:") + + split = column.split(percentage=0.1) + split.label() + split.label(text="Colors:") + split.label(text="Direction:") + + + split = column.split(percentage=0.1) + + if lamp0.enabled == True: + split.prop(lamp0, "enabled", text="", icon='OUTLINER_OB_LAMP') + else: + split.prop(lamp0, "enabled", text="", icon='LAMP_DATA') + + col = split.column() + col.active = lamp0.enabled + row = col.row() + row.label(text="Diffuse:") + row.prop(lamp0, "diffuse_color", text="") + row = col.row() + row.label(text="Specular:") + row.prop(lamp0, "specular_color", text="") + + col = split.column() + col.active = lamp0.enabled + col.prop(lamp0, "direction", text="") + + + split = column.split(percentage=0.1) + + if lamp1.enabled == True: + split.prop(lamp1, "enabled", text="", icon='OUTLINER_OB_LAMP') + else: + split.prop(lamp1, "enabled", text="", icon='LAMP_DATA') + + col = split.column() + col.active = lamp1.enabled + row = col.row() + row.label(text="Diffuse:") + row.prop(lamp1, "diffuse_color", text="") + row = col.row() + row.label(text="Specular:") + row.prop(lamp1, "specular_color", text="") + + col = split.column() + col.active = lamp1.enabled + col.prop(lamp1, "direction", text="") + + + split = column.split(percentage=0.1) + + if lamp2.enabled == True: + split.prop(lamp2, "enabled", text="", icon='OUTLINER_OB_LAMP') + else: + split.prop(lamp2, "enabled", text="", icon='LAMP_DATA') + + col = split.column() + col.active = lamp2.enabled + row = col.row() + row.label(text="Diffuse:") + row.prop(lamp2, "diffuse_color", text="") + row = col.row() + row.label(text="Specular:") + row.prop(lamp2, "specular_color", text="") + + col = split.column() + col.active = lamp2.enabled + col.prop(lamp2, "direction", text="") + + + column.separator() + column.separator() + column.separator() + + col = column.column() + + col.prop(system, "use_weight_color_range", text="Custom Weight Paint Range") + sub = col.column() + sub.active = system.use_weight_color_range + sub.template_color_ramp(system, "weight_color_range", expand=True) + + + class USERPREF_PT_theme(bpy.types.Panel): bl_space_type = 'USER_PREFERENCES' @@ -1160,6 +1207,10 @@ class USERPREF_PT_input(bpy.types.Panel): sub.label(text="Select With:") sub.row().prop(inputs, "select_mouse", expand=True) + + sub = col.column() + sub.label(text="Double Click:") + sub.prop(inputs, "double_click_time", text="Speed") sub.separator() @@ -1191,12 +1242,6 @@ class USERPREF_PT_input(bpy.types.Panel): sub.prop(inputs, "ndof_pan_speed", text="Pan Speed") sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") - col.separator() - - sub = col.column() - sub.label(text="Double Click:") - sub.prop(inputs, "double_click_time", text="Speed") - row.separator() # Keymap Settings -- cgit v1.2.3 From 6ef7c3bb2bc4c59d000b3a8bacbfb0a27d2b5c55 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Tue, 15 Dec 2009 17:53:17 +0000 Subject: fix: adding missing new area type RGN_TYPE_PREVIEW to rna enum. --- source/blender/makesrna/intern/rna_screen.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index 5311c80e45d..2471ce3c798 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -40,6 +40,7 @@ EnumPropertyItem region_type_items[] = { {RGN_TYPE_TOOLS, "TOOLS", 0, "Tools", ""}, {RGN_TYPE_TEMPORARY, "TEMPORARY", 0, "Temporary", ""}, {RGN_TYPE_UI, "UI", 0, "UI", ""}, + {RGN_TYPE_PREVIEW, "PREVIEW", 0, "Preview", ""}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME -- cgit v1.2.3 From fedea2eb5c4b5d414349cc460bedc4485af90d53 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 15 Dec 2009 18:00:22 +0000 Subject: Fix #20393: subsurfed objects only allow a single material. --- source/blender/blenkernel/intern/subsurf_ccg.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 793ea26a602..072a665e0e9 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -931,8 +931,8 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) for(index = 0; index < totface; index++) { CCGFace *f = ccgdm->faceMap[index].face; int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); - int mat_nr = 0; - int flag = ME_SMOOTH; /* assume face is smooth by default */ + int flag = (faceFlags)? faceFlags[index*2]: ME_SMOOTH; + int mat_nr = (faceFlags)? faceFlags[index*2+1]: 0; for(S = 0; S < numVerts; S++) { for(y = 0; y < gridSize - 1; y++) { @@ -947,8 +947,7 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) mf->v4 = getFaceIndex(ss, f, S, x + 1, y + 0, edgeSize, gridSize); mf->mat_nr = mat_nr; - if(faceFlags) mf->flag = faceFlags[index*2]; - else mf->flag = flag; + mf->flag = flag; i++; } -- cgit v1.2.3 From e677e7e99a3fae9d56cb9296d552707b74dc3c79 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 15 Dec 2009 18:09:01 +0000 Subject: netrender buttons to cancel and reset jobs in the web interface --- release/scripts/io/netrender/master.py | 76 +++++++++++++++++------------ release/scripts/io/netrender/master_html.py | 32 ++++++++++-- release/scripts/io/netrender/netrender.js | 26 ++++++++++ release/scripts/io/netrender/operators.py | 2 +- release/scripts/io/netrender/utils.py | 3 ++ 5 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 release/scripts/io/netrender/netrender.js diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 7e374afd6ab..fb90a60aac5 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -139,6 +139,7 @@ class MRenderFrame(netrender.model.RenderFrame): def reset(self, all): if all or self.status == ERROR: + self.log_path = None self.slave = None self.time = 0 self.status = QUEUED @@ -151,6 +152,8 @@ class MRenderFrame(netrender.model.RenderFrame): file_pattern = re.compile("/file_([a-zA-Z0-9]+)_([0-9]+)") render_pattern = re.compile("/render_([a-zA-Z0-9]+)_([0-9]+).exr") log_pattern = re.compile("/log_([a-zA-Z0-9]+)_([0-9]+).log") +reset_pattern = re.compile("/reset(all|)_([a-zA-Z0-9]+)_([0-9]+)") +cancel_pattern = re.compile("/cancel_([a-zA-Z0-9]+)") class RenderHandler(http.server.BaseHTTPRequestHandler): def send_head(self, code = http.client.OK, headers = {}, content = "application/octet-stream"): @@ -419,17 +422,23 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.server.stats("", "New job, missing files (%i total)" % len(job.files)) self.send_head(http.client.ACCEPTED, headers=headers) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/cancel": - job_id = self.headers.get('job-id', "") - - job = self.server.getJobID(job_id) + elif self.path.startswith("/cancel"): + match = cancel_pattern.match(self.path) + + if match: + job_id = match.groups()[0] - if job: - self.server.stats("", "Cancelling job") - self.server.removeJob(job) - self.send_head() + job = self.server.getJobID(job_id) + + if job: + self.server.stats("", "Cancelling job") + self.server.removeJob(job) + self.send_head() + else: + # no such job id + self.send_head(http.client.NO_CONTENT) else: - # no such job id + # invalid url self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @@ -440,31 +449,36 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.send_head() # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - elif self.path == "/reset": - job_id = self.headers.get('job-id', "") - job_frame = int(self.headers.get('job-frame', "-1")) - all = bool(self.headers.get('reset-all', "False")) + elif self.path.startswith("/reset"): + match = reset_pattern.match(self.path) - job = self.server.getJobID(job_id) - - if job: - if job_frame != -1: - - frame = job[job_frame] - if frame: - self.server.stats("", "Reset job frame") - frame.reset(all) - self.send_head() + if match: + all = match.groups()[0] == 'all' + job_id = match.groups()[1] + job_frame = int(match.groups()[2]) + + job = self.server.getJobID(job_id) + + if job: + if job_frame != 0: + + frame = job[job_frame] + if frame: + self.server.stats("", "Reset job frame") + frame.reset(all) + self.send_head() + else: + # no such frame + self.send_head(http.client.NO_CONTENT) + else: - # no such frame - self.send_head(http.client.NO_CONTENT) + self.server.stats("", "Reset job") + job.reset(all) + self.send_head() - else: - self.server.stats("", "Reset job") - job.reset(all) - self.send_head() - - else: # job not found + else: # job not found + self.send_head(http.client.NO_CONTENT) + else: # invalid url self.send_head(http.client.NO_CONTENT) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/slave": diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index c08dc07724d..d6e0867ad01 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -16,14 +16,23 @@ # # ##### END GPL LICENSE BLOCK ##### +import os import re - +import shutil from netrender.utils import * +src_folder = os.path.split(__file__)[0] def get(handler): def output(text): handler.wfile.write(bytes(text, encoding='utf8')) + + def head(title): + output("") + output("") + output("") + output(title) + output("") def link(text, url): return "%s" % (url, text) @@ -50,12 +59,21 @@ def get(handler): def endTable(): output("") - if handler.path == "/html" or handler.path == "/": + if handler.path == "/html/netrender.js": + f = open(os.path.join(src_folder, "netrender.js"), 'rb') + + handler.send_head(content = "text/javascript") + shutil.copyfileobj(f, handler.wfile) + + f.close() + elif handler.path == "/html" or handler.path == "/": handler.send_head(content = "text/html") - output("NetRender") + head("NetRender") output("

Master

") - + + output("""""") + output("

Slaves

") startTable() @@ -70,6 +88,7 @@ def get(handler): startTable() headerTable( + " ", "name", "category", "priority", @@ -79,6 +98,7 @@ def get(handler): "done", "dispatched", "error", + " ", "first", "exception" ) @@ -88,6 +108,7 @@ def get(handler): for job in handler.server.jobs: results = job.framesStatus() rowTable( + """""" % job.id, link(job.name, "/html/job" + job.id), job.category if job.category else " ", job.priority, @@ -97,6 +118,7 @@ def get(handler): results[DONE], results[DISPATCHED], results[ERROR], + """""" % job.id, handler.server.balancer.applyPriorities(job), handler.server.balancer.applyExceptions(job) ) @@ -108,7 +130,7 @@ def get(handler): handler.send_head(content = "text/html") job_id = handler.path[9:] - output("NetRender") + head("NetRender") job = handler.server.getJobID(job_id) diff --git a/release/scripts/io/netrender/netrender.js b/release/scripts/io/netrender/netrender.js new file mode 100644 index 00000000000..75df56038b3 --- /dev/null +++ b/release/scripts/io/netrender/netrender.js @@ -0,0 +1,26 @@ +function post_to_url(path, params, method) { + method = method || "post"; // Set method to post by default, if not specified. + + var form = document.createElement("form"); + form.setAttribute("method", method); + form.setAttribute("action", path); + + for(var key in params) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", key); + hiddenField.setAttribute("value", params[key]); + + form.appendChild(hiddenField); + } + + document.body.appendChild(form); + form.submit(); +} + +function request(url, data) { + xmlhttp = new XMLHttpRequest(); + xmlhttp.open("POST", url, false); + xmlhttp.send(data); + window.location.reload() +} diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index 4d5b752e42a..8aec1a9e755 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -299,7 +299,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator): if conn: job = netrender.jobs[netsettings.active_job_index] - conn.request("POST", "/cancel", headers={"job-id":job.id}) + conn.request("POST", cancelURL(job.id)) response = conn.getresponse() print( response.status, response.reason ) diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 61a2bb83887..8a622b605aa 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -118,6 +118,9 @@ def logURL(job_id, frame_number): def renderURL(job_id, frame_number): return "/render_%s_%i.exr" % (job_id, frame_number) +def cancelURL(job_id): + return "/cancel_%s" % (job_id) + def prefixPath(prefix_directory, file_path, prefix_path): if os.path.isabs(file_path): # if an absolute path, make sure path exists, if it doesn't, use relative local path -- cgit v1.2.3 From 8a6e9fc7ee68a2bbeae0bcbc22e3afe067089bd8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 15 Dec 2009 18:15:38 +0000 Subject: Bugfix: weight paint combined with pose mode was not working correct in some cases, setting active vertex group to invalid value. --- source/blender/editors/sculpt_paint/paint_vertex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 56e020e22aa..ba9c3631728 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1122,7 +1122,7 @@ static int set_wpaint(bContext *C, wmOperator *op) /* toggle */ /* verify if active weight group is also active bone */ par= modifiers_isDeformedByArmature(ob); if(par && (par->mode & OB_MODE_POSE)) { - bArmature *arm= ob->data; + bArmature *arm= par->data; if(arm->act_bone) ED_vgroup_select_by_name(ob, arm->act_bone->name); -- cgit v1.2.3 From b0abe98d592a32282be02d35d15872c223c4f8a9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 18:53:16 +0000 Subject: - original bones in last layer - dont rename root bone - use Rigify exceptions --- release/scripts/modules/rigify/__init__.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index 9dd00cf66e9..95ae2fed76c 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -177,7 +177,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): bpy.ops.object.mode_set(mode='EDIT') for bone in arm.edit_bones: bone_name = bone.name - bone.name = prefix + bone_name + if obj.pose.bones[bone_name].get("type", "") != "root": + bone.name = prefix + bone_name base_names[bone.name] = bone_name # new -> old mapping bpy.ops.object.mode_set(mode='OBJECT') @@ -213,7 +214,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): if bone_type_list == ["root"]: # special case! if root_bone: - raise Exception("cant have more then 1 root bone, found '%s' and '%s' to have type==root" % (root_bone, bone_name)) + raise RigifyError("cant have more then 1 root bone, found '%s' and '%s' to have type==root" % (root_bone, bone_name)) root_bone = bone_name bone_type_list[:] = [] @@ -265,7 +266,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): result_submod = results.setdefault(type_name, []) if result_submod and len(result_submod[-1]) != len(ret): - raise Exception("bone lists not compatible: %s, %s" % (result_submod[-1], ret)) + raise RigifyError("bone lists not compatible: %s, %s" % (result_submod[-1], ret)) result_submod.append(ret) @@ -332,7 +333,24 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # would be 'REST' from when copied obj_def.data.pose_position = 'POSE' + # todo - make a more generic system? + layer_tot = [False] * 32 + layer_last = layer_tot[:] + layer_last[31] = True + layer_second_last = layer_tot[:] + layer_second_last[30] = True + + for bone_name, bone in arm.bones.items(): + if bone_name.startswith(prefix): + bone.layer = layer_last + elif bone_name.startswith("MCH"): # XXX fixme + bone.layer = layer_second_last + + layer_tot[:] = [max(lay) for lay in zip(layer_tot, bone.layer)] + # Only for demo'ing + arm.layer = layer_tot + # obj.restrict_view = True obj.data.draw_axes = False -- cgit v1.2.3 From 0095b89a67855a4f9336a47dd1863e1ec8c7e5be Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Dec 2009 23:35:26 +0000 Subject: Solidify was faiing in cases with flat aras because normal calculation assumed some angle between faces. --- source/blender/editors/mesh/editmesh_lib.c | 32 ++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 52af5ce8e2f..45244407909 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -528,7 +528,7 @@ void EM_deselect_flush(EditMesh *em) /* flush selection to edges & faces */ /* this only based on coherent selected vertices, for example when adding new - objects. call clear_flag_all() before you select vertices to be sure it ends OK! + objects. call clear_flag_all() before you select vertices to be sure it ends OK! */ @@ -2360,11 +2360,22 @@ void EM_make_hq_normals(EditMesh *em) edge_ref = BLI_edgehashIterator_getValue(edge_iter); if (edge_ref->f2 != -1) { - /* We have 2 faces using this edge, calculate the edges normal - * using the angle between the 2 faces as a weighting */ - add_v3_v3v3(edge_normal, EM_get_face_for_index(edge_ref->f1)->n, EM_get_face_for_index(edge_ref->f2)->n); - normalize_v3(edge_normal); - mul_v3_fl(edge_normal, angle_normalized_v3v3(EM_get_face_for_index(edge_ref->f1)->n, EM_get_face_for_index(edge_ref->f2)->n)); + EditFace *ef1= EM_get_face_for_index(edge_ref->f1), *ef2= EM_get_face_for_index(edge_ref->f2); + float angle= angle_normalized_v3v3(ef1->n, ef2->n); + if(angle > 0.0f) { + /* We have 2 faces using this edge, calculate the edges normal + * using the angle between the 2 faces as a weighting */ + add_v3_v3v3(edge_normal, ef1->n, ef2->n); + normalize_v3(edge_normal); + mul_v3_fl(edge_normal, angle); + } + else { + /* cant do anything useful here! + Set the face index for a vert incase it gets a zero normal */ + EM_get_vert_for_index(ed_v1)->tmp.l= + EM_get_vert_for_index(ed_v2)->tmp.l= -(edge_ref->f1 + 1); + continue; + } } else { /* only one face attached to that edge */ /* an edge without another attached- the weight on this is @@ -2382,8 +2393,13 @@ void EM_make_hq_normals(EditMesh *em) MEM_freeN(edge_ref_array); /* normalize vertex normals and assign */ - for(eve= em->verts.first; eve; eve= eve->next) - normalize_v3(eve->no); + for(eve= em->verts.first; eve; eve= eve->next) { + if(normalize_v3(eve->no) == 0.0f && eve->tmp.l < 0) { + /* exceptional case, totally flat */ + efa= EM_get_face_for_index(-(eve->tmp.l) - 1); + VECCOPY(eve->no, efa->n); + } + } EM_free_index_arrays(); } -- cgit v1.2.3 From 3455261e173bf812c08c430de1237202ceb13ba0 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 16 Dec 2009 10:13:26 +0000 Subject: First version of updated key map editor UI (in User Preferences) Now the key maps are displayed in a hierarchical list which you can browse through. As well as in the main list, modal key maps are also available in context, for example, if you unfold out a Transform key map item, you'll be able to fold out and access its modal key map underneath. More work to do, including search, better operator browsing, etc. Still need to revise the ordering/hierarchy and clean up naming to be consistent too, it's a bit of an 'evolved' mess right now. Thanks to theeth for some initial work here too. --- release/scripts/ui/space_userpref.py | 383 ++++++++++++++------- source/blender/editors/include/UI_interface.h | 1 + .../blender/editors/interface/interface_layout.c | 9 +- source/blender/makesdna/DNA_windowmanager_types.h | 7 +- source/blender/makesrna/intern/rna_ui_api.c | 6 +- source/blender/makesrna/intern/rna_wm.c | 39 ++- 6 files changed, 316 insertions(+), 129 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 90d409585be..5d9d3fce36f 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -19,6 +19,83 @@ # import bpy +KM_HIERARCHY = [ + ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit + ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners + ('Screen', 'EMPTY', 'WINDOW', []), # full screen, undo, screenshot + + ('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region) + ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region) + ('Header', 'EMPTY', 'WINDOW', []), # header stuff (per region) + ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region) + ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) + ('Grease Pencil', 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region) + + ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation + ('Animation_Channels', 'EMPTY', 'WINDOW', []), + + ('Buttons Generic', 'PROPERTIES', 'WINDOW', []), # align context menu + ('TimeLine', 'TIMELINE', 'WINDOW', []), + ('Outliner', 'OUTLINER', 'WINDOW', []), + + ('View3D', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) + ('Pose', 'EMPTY', 'WINDOW', []), + ('Object Mode', 'EMPTY', 'WINDOW', []), + ('Vertex Paint', 'EMPTY', 'WINDOW', []), + ('Weight Paint', 'EMPTY', 'WINDOW', []), + ('Face Mask', 'EMPTY', 'WINDOW', []), + ('Sculpt', 'EMPTY', 'WINDOW', []), + ('EditMesh', 'EMPTY', 'WINDOW', []), + ('Curve', 'EMPTY', 'WINDOW', []), + ('Armature', 'EMPTY', 'WINDOW', []), + ('Metaball', 'EMPTY', 'WINDOW', []), + ('Lattice', 'EMPTY', 'WINDOW', []), + ('Armature_Sketch', 'EMPTY', 'WINDOW', []), + ('Particle', 'EMPTY', 'WINDOW', []), + ('Font', 'EMPTY', 'WINDOW', []), + ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change + ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d + ('View3D Generic', 'VIEW_3D', 'WINDOW', []) # toolbar and properties + ]), + ('GraphEdit Keys', 'GRAPH_EDITOR', 'WINDOW', [ + ('GraphEdit Generic', 'GRAPH_EDITOR', 'WINDOW', []) + ]), + + ('Image', 'IMAGE_EDITOR', 'WINDOW', [ + ('UVEdit', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image + ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d + ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []) + ]), + + ('Node Generic', 'NODE_EDITOR', 'WINDOW', [ + ('Node', 'NODE_EDITOR', 'WINDOW', []) + ]), + ('File', 'FILE_BROWSER', 'WINDOW', [ + ('FileMain', 'FILE_BROWSER', 'WINDOW', []), + ('FileButtons', 'FILE_BROWSER', 'WINDOW', []) + ]), + ('Action_Keys', 'DOPESHEET_EDITOR', 'WINDOW', []), + ('NLA Generic', 'NLA_EDITOR', 'WINDOW', [ + ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []), + ('NLA Data', 'NLA_EDITOR', 'WINDOW', []) + ]), + ('Script', 'SCRIPTS_WINDOW', 'WINDOW', []), + ('Text', 'TEXT_EDITOR', 'WINDOW', []), + ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), + ('Logic Generic', 'LOGIC_EDITOR', 'WINDOW', []), + ('Console', 'CONSOLE', 'WINDOW', []), + + + ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []), + ('Gesture Border', 'EMPTY', 'WINDOW', []), + ('Standard Modal Map', 'EMPTY', 'WINDOW', []), + ('Transform Modal Map', 'EMPTY', 'WINDOW', []), + ('View3D Fly Modal', 'EMPTY', 'WINDOW', []), + ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []), + ('View3D Move Modal', 'EMPTY', 'WINDOW', []), + ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []), + ] + class USERPREF_HT_header(bpy.types.Header): bl_space_type = 'USER_PREFERENCES' @@ -1176,28 +1253,171 @@ class USERPREF_PT_input(bpy.types.Panel): def poll(self, context): userpref = context.user_preferences return (userpref.active_section == 'INPUT') + + def draw_entry(self, kc, entry, col, level = 0): + idname, spaceid, regionid, children = entry + + km = kc.find_keymap(idname, space_type = spaceid, region_type = regionid) + + if km: + km = km.active() + self.draw_km(kc, km, children, col, level) - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - wm = context.manager - #input = userpref.input - #input = userpref - inputs = userpref.inputs - - split = layout.split(percentage=0.25) + def indented_layout(self, layout, level): + indentpx = 16 + if level == 0: + level = 0.0001 # Tweak so that a percentage of 0 won't split by half + indent = level*indentpx / bpy.context.region.width + + split=layout.split(percentage=indent) + col = split.column() + col = split.column() + return col + + def draw_km(self, kc, km, children, layout, level): + layout.set_context_pointer("keymap", km) + + col = self.indented_layout(layout, level) + + row = col.row() + row.prop(km, "children_expanded", text="", no_bg=True) + row.label(text=km.name) + + row.label() + row.label() + + if km.user_defined: + row.operator("WM_OT_keymap_restore", text="Restore") + else: + row.operator("WM_OT_keymap_edit", text="Edit") + + if km.children_expanded: + if children: + # Put the Parent key map's entries in a 'global' sub-category + # equal in hierarchy to the other children categories + subcol = self.indented_layout(col, level + 1) + subrow = subcol.row() + subrow.prop(km, "items_expanded", text="", no_bg=True) + subrow.label(text="%s (Global)" % km.name) + else: + km.items_expanded = True + + # Key Map items + if km.items_expanded: + for kmi in km.items: + self.draw_kmi(kc, km, kmi, col, level + 1) + + # "Add New" at end of keymap item list + col = self.indented_layout(col, level+1) + subcol = col.split(percentage=0.2).column() + subcol.active = km.user_defined + subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN') + + col.separator() + + # Child key maps + if children: + subcol = col.column() + row = subcol.row() + + for entry in children: + self.draw_entry(kc, entry, col, level + 1) + + + def draw_kmi(self, kc, km, kmi, layout, level): + layout.set_context_pointer("keyitem", kmi) + + col = self.indented_layout(layout, level) - # General settings + col.enabled = km.user_defined + + if km.user_defined: + col = col.column(align=True) + box = col.box() + else: + box = col.column() + + split = box.split(percentage=0.4) + + # header bar row = split.row() + row.prop(kmi, "expanded", text="", no_bg=True) + row.prop(kmi, "active", text="", no_bg=True) + + if km.modal: + row.prop(kmi, "propvalue", text="") + else: + row.label(text=kmi.name) + + row = split.row() + row.prop(kmi, "map_type", text="") + if kmi.map_type == 'KEYBOARD': + row.prop(kmi, "type", text="", full_event=True) + elif kmi.map_type == 'MOUSE': + row.prop(kmi, "type", text="", full_event=True) + elif kmi.map_type == 'TWEAK': + subrow = row.row() + subrow.prop(kmi, "type", text="") + subrow.prop(kmi, "value", text="") + elif kmi.map_type == 'TIMER': + row.prop(kmi, "type", text="") + else: + row.label() + + row.operator("wm.keyitem_remove", text="", icon='X') + + # Expanded, additional event settings + if kmi.expanded: + box = col.box() + + if kmi.map_type not in ('TEXTINPUT', 'TIMER'): + split = box.split(percentage=0.4) + sub = split.row() + + if km.modal: + sub.prop(kmi, "propvalue", text="") + else: + sub.prop(kmi, "idname", text="") + + sub = split.column() + subrow = sub.row(align=True) + + if kmi.map_type == 'KEYBOARD': + subrow.prop(kmi, "type", text="", event=True) + subrow.prop(kmi, "value", text="") + elif kmi.map_type == 'MOUSE': + subrow.prop(kmi, "type", text="") + subrow.prop(kmi, "value", text="") + + subrow = sub.row() + subrow.scale_x = 0.75 + subrow.prop(kmi, "any") + subrow.prop(kmi, "shift") + subrow.prop(kmi, "ctrl") + subrow.prop(kmi, "alt") + subrow.prop(kmi, "oskey", text="Cmd") + subrow.prop(kmi, "key_modifier", text="", event=True) + + # Operator properties + props = kmi.properties + if props is not None: + box.separator() + flow = box.column_flow(columns=2) + for pname in dir(props): + if not props.is_property_hidden(pname): + flow.prop(props, pname) + + # Modal key maps attached to this operator + if not km.modal: + kmm = kc.find_keymap_modal(kmi.idname) + if kmm: + self.draw_km(kc, kmm, None, layout, level + 1) + + def draw_input_prefs(self, inputs, layout): + # General settings + row = layout.row() col = row.column() - sub = col.column() - sub.label(text="Configuration:") - sub.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="") - - col.separator() - sub = col.column() sub.label(text="Mouse:") sub1 = sub.column() @@ -1243,111 +1463,34 @@ class USERPREF_PT_input(bpy.types.Panel): sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") row.separator() + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + wm = context.manager + inputs = userpref.inputs + + split = layout.split(percentage=0.25) + + # Input settings + self.draw_input_prefs(inputs, split) + # Keymap Settings col = split.column() - # kc = wm.active_keyconfig defkc = wm.default_keyconfig - km = wm.active_keymap - - subsplit = col.split() - subsplit.prop_object(wm, "active_keymap", defkc, "keymaps", text="Map:") - if km.user_defined: - row = subsplit.row() - row.operator("WM_OT_keymap_restore", text="Restore") - row.operator("WM_OT_keymap_restore", text="Restore All").all = True - else: - row = subsplit.row() - row.operator("WM_OT_keymap_edit", text="Edit") - row.label() - + + sub = col.column() + subrow = sub.row() + subrow.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:") + subrow.label() + col.separator() - - for kmi in km.items: - subcol = col.column() - subcol.set_context_pointer("keyitem", kmi) - - row = subcol.row() - - if kmi.expanded: - row.prop(kmi, "expanded", text="", icon='TRIA_DOWN') - else: - row.prop(kmi, "expanded", text="", icon='TRIA_RIGHT') - - itemrow = row.row() - itemrow.enabled = km.user_defined - if kmi.active: - itemrow.prop(kmi, "active", text="", icon='CHECKBOX_HLT') - else: - itemrow.prop(kmi, "active", text="", icon='CHECKBOX_DEHLT') - - itemcol = itemrow.column() - itemcol.active = kmi.active - row = itemcol.row() - - if km.modal: - row.prop(kmi, "propvalue", text="") - else: - row.prop(kmi, "idname", text="") - - sub = row.row() - sub.scale_x = 0.6 - sub.prop(kmi, "map_type", text="") - - sub = row.row(align=True) - if kmi.map_type == 'KEYBOARD': - sub.prop(kmi, "type", text="", full_event=True) - elif kmi.map_type == 'MOUSE': - sub.prop(kmi, "type", text="", full_event=True) - elif kmi.map_type == 'TWEAK': - sub.scale_x = 0.5 - sub.prop(kmi, "type", text="") - sub.prop(kmi, "value", text="") - elif kmi.map_type == 'TIMER': - sub.prop(kmi, "type", text="") - else: - sub.label() - - if kmi.expanded: - if kmi.map_type not in ('TEXTINPUT', 'TIMER'): - sub = itemcol.row(align=True) - - if kmi.map_type == 'KEYBOARD': - sub.prop(kmi, "type", text="", event=True) - sub.prop(kmi, "value", text="") - elif kmi.map_type == 'MOUSE': - sub.prop(kmi, "type", text="") - sub.prop(kmi, "value", text="") - else: - sub.label() - sub.label() - - subrow = sub.row() - subrow.scale_x = 0.75 - subrow.prop(kmi, "any") - subrow.prop(kmi, "shift") - subrow.prop(kmi, "ctrl") - subrow.prop(kmi, "alt") - subrow.prop(kmi, "oskey", text="Cmd") - sub.prop(kmi, "key_modifier", text="", event=True) - - flow = itemcol.column_flow(columns=2) - props = kmi.properties - - if props is not None: - for pname in dir(props): - if not props.is_property_hidden(pname): - flow.prop(props, pname) - - itemcol.separator() - - itemrow.operator("wm.keyitem_remove", text="", icon='ZOOMOUT') - - itemrow = col.row() - itemrow.label() - itemrow.operator("wm.keyitem_add", text="", icon='ZOOMIN') - itemrow.enabled = km.user_defined + + for entry in KM_HIERARCHY: + self.draw_entry(defkc, entry, col) bpy.types.register(USERPREF_HT_header) bpy.types.register(USERPREF_PT_tabs) @@ -1464,7 +1607,7 @@ class WM_OT_keymap_edit(bpy.types.Operator): def execute(self, context): wm = context.manager - km = wm.active_keymap + km = context.keymap # wm.active_keymap km.copy_to_user() return ('FINISHED',) @@ -1483,7 +1626,7 @@ class WM_OT_keymap_restore(bpy.types.Operator): for km in wm.default_keyconfig.keymaps: km.restore_to_default() else: - km = wm.active_keymap + km = context.keymap # wm.active_keymap km.restore_to_default() return ('FINISHED',) @@ -1496,7 +1639,7 @@ class WM_OT_keyitem_add(bpy.types.Operator): def execute(self, context): wm = context.manager - km = wm.active_keymap + km = context.keymap # wm.active_keymap if km.modal: km.add_modal_item("", 'A', 'PRESS') # kmi else: @@ -1512,7 +1655,7 @@ class WM_OT_keyitem_remove(bpy.types.Operator): def execute(self, context): wm = context.manager kmi = context.keyitem - km = wm.active_keymap + km = context.keymap # wm.active_keymap km.remove_item(kmi) return ('FINISHED',) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 5febaa3e5a1..5b512da55c9 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -591,6 +591,7 @@ void UI_exit(void); #define UI_ITEM_R_ICON_ONLY 16 #define UI_ITEM_R_EVENT 32 #define UI_ITEM_R_FULL_EVENT 64 +#define UI_ITEM_R_NO_BG 128 uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int size, int em, struct uiStyle *style); void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index bfb5ab11263..b0670be63a2 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -880,7 +880,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper uiBut *but; PropertyType type; char namestr[UI_MAX_NAME_STR]; - int len, w, h, slider, toggle, expand, icon_only; + int len, w, h, slider, toggle, expand, icon_only, no_bg; uiBlockSetCurLayout(block, layout); @@ -912,10 +912,14 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper toggle= (flag & UI_ITEM_R_TOGGLE); expand= (flag & UI_ITEM_R_EXPAND); icon_only= (flag & UI_ITEM_R_ICON_ONLY); + no_bg= (flag & UI_ITEM_R_NO_BG); /* get size */ ui_item_rna_size(layout, name, icon, ptr, prop, index, icon_only, &w, &h); + if (no_bg) + uiBlockSetEmboss(block, UI_EMBOSSN); + /* array property */ if(index == RNA_NO_INDEX && len > 0) ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only); @@ -948,6 +952,9 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper if(toggle && but->type==OPTION) but->type= TOG; } + + if (no_bg) + uiBlockSetEmboss(block, UI_EMBOSS); } void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int flag) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 9d944ca0d4b..0b69b72aa41 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -290,9 +290,10 @@ typedef struct wmKeyMap { } wmKeyMap; /* wmKeyMap.flag */ -#define KEYMAP_MODAL 1 /* modal map, not using operatornames */ -#define KEYMAP_USER 2 /* user created keymap */ -#define KEYMAP_EXPANDED 4 +#define KEYMAP_MODAL 1 /* modal map, not using operatornames */ +#define KEYMAP_USER 2 /* user created keymap */ +#define KEYMAP_EXPANDED 4 +#define KEYMAP_CHILDREN_EXPANDED 8 typedef struct wmKeyConfig { struct wmKeyConfig *next, *prev; diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 0955ec1c581..67383074497 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -37,7 +37,7 @@ #ifdef RNA_RUNTIME -static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int index) +static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle, int icon_only, int event, int full_event, int no_bg, int index) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); int flag= 0; @@ -53,6 +53,7 @@ static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0; flag |= (event)? UI_ITEM_R_EVENT: 0; flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0; + flag |= (no_bg)? UI_ITEM_R_NO_BG: 0; uiItemFullR(layout, name, icon, ptr, prop, index, 0, flag); } @@ -157,6 +158,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text."); RNA_def_boolean(func, "event", 0, "", "Use button to input key events."); RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers."); + RNA_def_boolean(func, "no_bg", 0, "", "Don't draw the button itself, just the icon/text."); RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */ func= RNA_def_function(srna, "props_enum", "uiItemsEnumR"); @@ -249,7 +251,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "data", "AnyType", "", "Pointer to put in context."); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); - + /* templates */ func= RNA_def_function(srna, "template_header", "uiTemplateHeader"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 0f6a14b78bd..b17cefcccac 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -594,6 +594,26 @@ static void rna_wmKeyMapItem_idname_set(PointerRNA *ptr, const char *value) } } +static void rna_wmKeyMapItem_name_get(PointerRNA *ptr, char *value) +{ + wmKeyMapItem *kmi= ptr->data; + wmOperatorType *ot= WM_operatortype_find(kmi->idname, 1); + + if (ot) + strcpy(value, ot->name); +} + +static int rna_wmKeyMapItem_name_length(PointerRNA *ptr) +{ + wmKeyMapItem *kmi= ptr->data; + wmOperatorType *ot= WM_operatortype_find(kmi->idname, 1); + + if (ot) + return strlen(ot->name); + else + return 0; +} + #else static void rna_def_operator(BlenderRNA *brna) @@ -904,9 +924,15 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Modal Keymap", "Indicates that a keymap is used for translate modal events for an operator."); - prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "items_expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_EXPANDED); - RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface."); + RNA_def_property_ui_text(prop, "Items Expanded", "Expanded in the user interface."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); + + prop= RNA_def_property(srna, "children_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_CHILDREN_EXPANDED); + RNA_def_property_ui_text(prop, "Children Expanded", "Children expanded in the user interface."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); RNA_api_keymap(srna); @@ -921,7 +947,12 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Identifier", "Identifier of operator to call on input event."); RNA_def_property_string_funcs(prop, "rna_wmKeyMapItem_idname_get", "rna_wmKeyMapItem_idname_length", "rna_wmKeyMapItem_idname_set"); RNA_def_struct_name_property(srna, prop); - + + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Name", "Name of operator to call on input event."); + RNA_def_property_string_funcs(prop, "rna_wmKeyMapItem_name_get", "rna_wmKeyMapItem_name_length", NULL); + prop= RNA_def_property(srna, "properties", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "OperatorProperties"); RNA_def_property_pointer_funcs(prop, "rna_KeyMapItem_properties_get", NULL, NULL); @@ -981,6 +1012,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "propvalue"); @@ -991,6 +1023,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE); RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item."); + RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1); } void RNA_def_wm(BlenderRNA *brna) -- cgit v1.2.3 From 3ea2d08e1a6dbdbe6f7d5a3ff4207fac728908dd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 13:27:30 +0000 Subject: pep8 changes --- release/scripts/io/export_ply.py | 88 +++++++------ release/scripts/io/import_anim_bvh.py | 143 +++++++++++---------- .../modules/rigify/leg_quadruped_generic.py | 2 +- release/scripts/modules/rigify/spine_pivot_flex.py | 2 +- release/scripts/ui/properties_data_armature.py | 1 + release/scripts/ui/space_sequencer.py | 5 +- 6 files changed, 129 insertions(+), 112 deletions(-) diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index ed85c7fc6d9..858e22952b8 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -67,15 +67,19 @@ Only one mesh can be exported at a time. # -def rvec3d(v): return round(v[0], 6), round(v[1], 6), round(v[2], 6) -def rvec2d(v): return round(v[0], 6), round(v[1], 6) +def rvec3d(v): + return round(v[0], 6), round(v[1], 6), round(v[2], 6) + + +def rvec2d(v): + return round(v[0], 6), round(v[1], 6) + def write(filename, scene, ob, \ - EXPORT_APPLY_MODIFIERS= True,\ - EXPORT_NORMALS= True,\ - EXPORT_UV= True,\ - EXPORT_COLORS= True\ - ): + EXPORT_APPLY_MODIFIERS=True,\ + EXPORT_NORMALS=True,\ + EXPORT_UV=True,\ + EXPORT_COLORS=True): if not filename.lower().endswith('.ply'): filename += '.ply' @@ -108,21 +112,25 @@ def write(filename, scene, ob, \ # mesh.transform(ob.matrixWorld) # XXX - faceUV = len(mesh.uv_textures) > 0 - vertexUV = len(mesh.sticky) > 0 + faceUV = (len(mesh.uv_textures) > 0) + vertexUV = (len(mesh.sticky) > 0) vertexColors = len(mesh.vertex_colors) > 0 - if (not faceUV) and (not vertexUV): EXPORT_UV = False - if not vertexColors: EXPORT_COLORS = False + if (not faceUV) and (not vertexUV): + EXPORT_UV = False + if not vertexColors: + EXPORT_COLORS = False - if not EXPORT_UV: faceUV = vertexUV = False - if not EXPORT_COLORS: vertexColors = False + if not EXPORT_UV: + faceUV = vertexUV = False + if not EXPORT_COLORS: + vertexColors = False if faceUV: active_uv_layer = None for lay in mesh.uv_textures: if lay.active: - active_uv_layer= lay.data + active_uv_layer = lay.data break if not active_uv_layer: EXPORT_UV = False @@ -132,7 +140,7 @@ def write(filename, scene, ob, \ active_col_layer = None for lay in mesh.vertex_colors: if lay.active: - active_col_layer= lay.data + active_col_layer = lay.data if not active_col_layer: EXPORT_COLORS = False vertexColors = None @@ -161,26 +169,26 @@ def write(filename, scene, ob, \ col = active_col_layer[i] col = col.color1, col.color2, col.color3, col.color4 - f_verts= f.verts + f_verts = f.verts - pf= ply_faces[i] + pf = ply_faces[i] for j, vidx in enumerate(f_verts): v = mesh_verts[vidx] if smooth: - normal= tuple(v.normal) + normal = tuple(v.normal) normal_key = rvec3d(normal) if faceUV: - uvcoord= uv[j][0], 1.0-uv[j][1] + uvcoord = uv[j][0], 1.0-uv[j][1] uvcoord_key = rvec2d(uvcoord) elif vertexUV: - uvcoord= v.uvco[0], 1.0-v.uvco[1] + uvcoord = v.uvco[0], 1.0 - v.uvco[1] uvcoord_key = rvec2d(uvcoord) if vertexColors: - color= col[j] - color= int(color[0]*255.0), int(color[1]*255.0), int(color[2]*255.0) + color = col[j] + color = int(color[0] * 255.0), int(color[1] * 255.0), int(color[2] * 255.0) key = normal_key, uvcoord_key, color @@ -189,7 +197,7 @@ def write(filename, scene, ob, \ pf_vidx = vdict_local.get(key) # Will be None initially if pf_vidx == None: # same as vdict_local.has_key(key) - pf_vidx = vdict_local[key] = vert_count; + pf_vidx = vdict_local[key] = vert_count ply_verts.append((vidx, normal, uvcoord, color)) vert_count += 1 @@ -198,7 +206,7 @@ def write(filename, scene, ob, \ file.write('ply\n') file.write('format ascii 1.0\n') version = "2.5" # Blender.Get('version') - file.write('comment Created by Blender3D %s - www.blender.org, source file: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1] )) + file.write('comment Created by Blender3D %s - www.blender.org, source file: %s\n' % (version, bpy.data.filename.split('/')[-1].split('\\')[-1])) file.write('element vertex %d\n' % len(ply_verts)) @@ -231,13 +239,17 @@ def write(filename, scene, ob, \ if EXPORT_NORMALS: file.write('%.6f %.6f %.6f ' % v[1]) # no """ - if EXPORT_UV: file.write('%.6f %.6f ' % v[2]) # uv - if EXPORT_COLORS: file.write('%u %u %u' % v[3]) # col + if EXPORT_UV: + file.write('%.6f %.6f ' % v[2]) # uv + if EXPORT_COLORS: + file.write('%u %u %u' % v[3]) # col file.write('\n') for pf in ply_faces: - if len(pf)==3: file.write('3 %d %d %d\n' % tuple(pf)) - else: file.write('4 %d %d %d %d\n' % tuple(pf)) + if len(pf)==3: + file.write('3 %d %d %d\n' % tuple(pf)) + else: + file.write('4 %d %d %d %d\n' % tuple(pf)) file.close() print("writing", filename, "done") @@ -263,12 +275,11 @@ class ExportPLY(bpy.types.Operator): # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") - use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) - use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True) - use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True) - use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True) - + path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen=1024, default="") + use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default=True) + use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default=True) + use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default=True) + use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default=True) def poll(self, context): return context.active_object != None @@ -280,10 +291,10 @@ class ExportPLY(bpy.types.Operator): raise Exception("filename not set") write(self.properties.path, context.scene, context.active_object,\ - EXPORT_APPLY_MODIFIERS = self.properties.use_modifiers, - EXPORT_NORMALS = self.properties.use_normals, - EXPORT_UV = self.properties.use_uvs, - EXPORT_COLORS = self.properties.use_colors, + EXPORT_APPLY_MODIFIERS=self.properties.use_modifiers, + EXPORT_NORMALS=self.properties.use_normals, + EXPORT_UV=self.properties.use_uvs, + EXPORT_COLORS=self.properties.use_colors, ) return ('FINISHED',) @@ -309,6 +320,7 @@ bpy.ops.add(ExportPLY) import dynamic_menu + def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".ply") self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index a8fe887b950..30ff99c1fe8 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -24,11 +24,11 @@ import math import bpy # import BPyMessages import Mathutils -Vector= Mathutils.Vector -Euler= Mathutils.Euler -Matrix= Mathutils.Matrix -RotationMatrix= Mathutils.RotationMatrix -TranslationMatrix= Mathutils.TranslationMatrix +Vector = Mathutils.Vector +Euler = Mathutils.Euler +Matrix = Mathutils.Matrix +RotationMatrix = Mathutils.RotationMatrix +TranslationMatrix = Mathutils.TranslationMatrix # NASTY GLOBAL ROT_STYLE = 'QUAT' @@ -52,26 +52,26 @@ class bvh_node_class(object): 'temp')# use this for whatever you want def __init__(self, name, rest_head_world, rest_head_local, parent, channels, rot_order): - self.name= name - self.rest_head_world= rest_head_world - self.rest_head_local= rest_head_local - self.rest_tail_world= None - self.rest_tail_local= None - self.parent= parent - self.channels= channels - self.rot_order= rot_order + self.name = name + self.rest_head_world = rest_head_world + self.rest_head_local = rest_head_local + self.rest_tail_world = None + self.rest_tail_local = None + self.parent = parent + self.channels = channels + self.rot_order = rot_order # convenience functions - self.has_loc= channels[0] != -1 or channels[1] != -1 or channels[2] != -1 - self.has_rot= channels[3] != -1 or channels[4] != -1 or channels[5] != -1 + self.has_loc = channels[0] != -1 or channels[1] != -1 or channels[2] != -1 + self.has_rot = channels[3] != -1 or channels[4] != -1 or channels[5] != -1 - self.children= [] + self.children = [] # list of 6 length tuples: (lx,ly,lz, rx,ry,rz) # even if the channels arnt used they will just be zero # - self.anim_data= [(0,0,0,0,0,0)] + self.anim_data = [(0, 0, 0, 0, 0, 0)] def __repr__(self): @@ -124,7 +124,7 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): else: raise 'ERROR: This is not a BVH file' - bvh_nodes= {None:None} + bvh_nodes = {None: None} bvh_nodes_serial = [None] channelIndex = -1 @@ -148,7 +148,7 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): #print '%snode: %s, parent: %s' % (len(bvh_nodes_serial) * ' ', name, bvh_nodes_serial[-1]) lineIdx += 2 # Incriment to the next line (Offset) - rest_head_local = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + rest_head_local = Vector( GLOBAL_SCALE * float(file_lines[lineIdx][1]), GLOBAL_SCALE * float(file_lines[lineIdx][2]), GLOBAL_SCALE * float(file_lines[lineIdx][3])) lineIdx += 1 # Incriment to the next line (Channels) # newChannel[Xposition, Yposition, Zposition, Xrotation, Yrotation, Zrotation] @@ -156,10 +156,10 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): # if not assigned then -1 refers to the last value that will be added on loading at a value of zero, this is appended # We'll add a zero value onto the end of the MotionDATA so this is always refers to a value. my_channel = [-1, -1, -1, -1, -1, -1] - my_rot_order= [None, None, None] - rot_count= 0 + my_rot_order = [None, None, None] + rot_count = 0 for channel in file_lines[lineIdx][2:]: - channel= channel.lower() + channel = channel.lower() channelIndex += 1 # So the index points to the right channel if channel == 'xposition': my_channel[0] = channelIndex elif channel == 'yposition': my_channel[1] = channelIndex @@ -167,29 +167,29 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): elif channel == 'xrotation': my_channel[3] = channelIndex - my_rot_order[rot_count]= 0 - rot_count+=1 + my_rot_order[rot_count] = 0 + rot_count += 1 elif channel == 'yrotation': my_channel[4] = channelIndex - my_rot_order[rot_count]= 1 - rot_count+=1 + my_rot_order[rot_count] = 1 + rot_count += 1 elif channel == 'zrotation': my_channel[5] = channelIndex - my_rot_order[rot_count]= 2 - rot_count+=1 + my_rot_order[rot_count] = 2 + rot_count += 1 channels = file_lines[lineIdx][2:] - my_parent= bvh_nodes_serial[-1] # account for none + my_parent = bvh_nodes_serial[-1] # account for none # Apply the parents offset accumletivly if my_parent==None: - rest_head_world= Vector(rest_head_local) + rest_head_world = Vector(rest_head_local) else: - rest_head_world= my_parent.rest_head_world + rest_head_local + rest_head_world = my_parent.rest_head_world + rest_head_local - bvh_node= bvh_nodes[name]= bvh_node_class(name, rest_head_world, rest_head_local, my_parent, my_channel, my_rot_order) + bvh_node = bvh_nodes[name] = bvh_node_class(name, rest_head_world, rest_head_local, my_parent, my_channel, my_rot_order) # If we have another child then we can call ourselves a parent, else bvh_nodes_serial.append(bvh_node) @@ -197,10 +197,10 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): # Account for an end node if file_lines[lineIdx][0].lower() == 'end' and file_lines[lineIdx][1].lower() == 'site': # There is somtimes a name after 'End Site' but we will ignore it. lineIdx += 2 # Incriment to the next line (Offset) - rest_tail = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + rest_tail = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3])) - bvh_nodes_serial[-1].rest_tail_world= bvh_nodes_serial[-1].rest_head_world + rest_tail - bvh_nodes_serial[-1].rest_tail_local= rest_tail + bvh_nodes_serial[-1].rest_tail_world = bvh_nodes_serial[-1].rest_head_world + rest_tail + bvh_nodes_serial[-1].rest_tail_local = rest_tail # Just so we can remove the Parents in a uniform way- End end never has kids @@ -223,26 +223,26 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): # Dont use anymore del bvh_nodes_serial - bvh_nodes_list= bvh_nodes.values() + bvh_nodes_list = bvh_nodes.values() while lineIdx < len(file_lines): - line= file_lines[lineIdx] + line = file_lines[lineIdx] for bvh_node in bvh_nodes_list: #for bvh_node in bvh_nodes_serial: - lx= ly= lz= rx= ry= rz= 0.0 - channels= bvh_node.channels - anim_data= bvh_node.anim_data + lx = ly = lz = rx = ry = rz = 0.0 + channels = bvh_node.channels + anim_data = bvh_node.anim_data if channels[0] != -1: - lx= GLOBAL_SCALE * float( line[channels[0]] ) + lx = GLOBAL_SCALE * float(line[channels[0]]) if channels[1] != -1: - ly= GLOBAL_SCALE * float( line[channels[1]] ) + ly = GLOBAL_SCALE * float(line[channels[1]]) if channels[2] != -1: - lz= GLOBAL_SCALE * float( line[channels[2]] ) + lz = GLOBAL_SCALE * float(line[channels[2]]) if channels[3] != -1 or channels[4] != -1 or channels[5] != -1: - rx, ry, rz = float( line[channels[3]] ), float( line[channels[4]] ), float( line[channels[5]] ) + rx, ry, rz = float(line[channels[3]]), float(line[channels[4]]), float(line[channels[5]]) if ROT_STYLE != 'NATIVE': rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) @@ -265,7 +265,7 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): # Assign children for bvh_node in bvh_nodes.values(): - bvh_node_parent= bvh_node.parent + bvh_node_parent = bvh_node.parent if bvh_node_parent: bvh_node_parent.children.append(bvh_node) @@ -278,28 +278,28 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0): bvh_node.rest_tail_world = Vector(bvh_node.rest_head_world) bvh_node.rest_tail_local = Vector(bvh_node.rest_head_local) elif len(bvh_node.children)==1: - bvh_node.rest_tail_world= Vector(bvh_node.children[0].rest_head_world) - bvh_node.rest_tail_local= Vector(bvh_node.children[0].rest_head_local) + bvh_node.rest_tail_world = Vector(bvh_node.children[0].rest_head_world) + bvh_node.rest_tail_local = Vector(bvh_node.children[0].rest_head_local) else: # allow this, see above #if not bvh_node.children: # raise 'error, bvh node has no end and no children. bad file' # Removed temp for now - rest_tail_world= Vector(0,0,0) - rest_tail_local= Vector(0,0,0) + rest_tail_world = Vector(0, 0, 0) + rest_tail_local = Vector(0, 0, 0) for bvh_node_child in bvh_node.children: rest_tail_world += bvh_node_child.rest_head_world rest_tail_local += bvh_node_child.rest_head_local - bvh_node.rest_tail_world= rest_tail_world * (1.0/len(bvh_node.children)) - bvh_node.rest_tail_local= rest_tail_local * (1.0/len(bvh_node.children)) + bvh_node.rest_tail_world = rest_tail_world * (1.0 / len(bvh_node.children)) + bvh_node.rest_tail_local = rest_tail_local * (1.0 / len(bvh_node.children)) # Make sure tail isnt the same location as the head. if (bvh_node.rest_tail_local-bvh_node.rest_head_local).length <= 0.001*GLOBAL_SCALE: - bvh_node.rest_tail_local.y= bvh_node.rest_tail_local.y + GLOBAL_SCALE/10 - bvh_node.rest_tail_world.y= bvh_node.rest_tail_world.y + GLOBAL_SCALE/10 + bvh_node.rest_tail_local.y = bvh_node.rest_tail_local.y + GLOBAL_SCALE/10 + bvh_node.rest_tail_world.y = bvh_node.rest_tail_world.y + GLOBAL_SCALE/10 @@ -488,8 +488,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO (1,0,2):'YXZ', (1,2,0):'YZX', (2,0,1):'ZXY', - (2,1,0):'ZYZ' - } + (2,1,0):'ZYZ'} for bvh_node in bvh_nodes.values(): bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. @@ -620,30 +619,29 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO #XXX # TODO- add in 2.5 if 0: # Get the transform - xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] + xformConstants = xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] if xformConstants: # Insert the keyframe from the loc/quat - pose_bone.insertKey(arm_ob, current_frame+IMPORT_START_FRAME, xformConstants, True ) + pose_bone.insertKey(arm_ob, current_frame + IMPORT_START_FRAME, xformConstants, True) else: if bvh_node.has_loc: pose_bone.keyframe_insert("location") if bvh_node.has_rot: - if ROT_STYLE=='QUAT': + if ROT_STYLE == 'QUAT': pose_bone.keyframe_insert("rotation_quaternion") else: pose_bone.keyframe_insert("rotation_euler") - # bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ??? bpy.ops.screen.frame_offset(delta=1) # First time, set the IPO's to linear #XXX #TODO if 0: - if current_frame==0: + if current_frame == 0: for ipo in action.getAllChannelIpos().values(): if ipo: for cur in ipo: @@ -821,7 +819,8 @@ for f in ('/d/staggered_walk.bvh',): bvh_node_dict2armature(bvh_nodes, 1) ''' -def load_bvh_ui(context, file, PREF_UI= False): + +def load_bvh_ui(context, file, PREF_UI=False): #XXX if BPyMessages.Error_NoFile(file): #XXX return @@ -855,29 +854,33 @@ def load_bvh_ui(context, file, PREF_UI= False): #XXX Blender.Window.WaitCursor(1) # Get the BVH data and act on it. import time - t1= time.time() - print('\tparsing bvh...', end= "") - bvh_nodes= read_bvh(context, file, IMPORT_SCALE) - print('%.4f' % (time.time()-t1)) - t1= time.time() + t1 = time.time() + print('\tparsing bvh...', end="") + bvh_nodes = read_bvh(context, file, IMPORT_SCALE) + print('%.4f' % (time.time() - t1)) + t1 = time.time() print('\timporting to blender...', end="") - if IMPORT_AS_ARMATURE: bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) - if IMPORT_AS_EMPTIES: bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + if IMPORT_AS_ARMATURE: + bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + if IMPORT_AS_EMPTIES: + bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) - print('Done in %.4f\n' % (time.time()-t1)) + print('Done in %.4f\n' % (time.time() - t1)) #XXX Blender.Window.WaitCursor(0) + def main(): Blender.Window.FileSelector(load_bvh_ui, 'Import BVH', '*.bvh') from bpy.props import * + class BvhImporter(bpy.types.Operator): '''Load a Wavefront OBJ File.''' bl_idname = "import_anim.bvh" bl_label = "Import BVH" - path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen=1024, default="") def execute(self, context): # print("Selected: " + context.active_object.name) diff --git a/release/scripts/modules/rigify/leg_quadruped_generic.py b/release/scripts/modules/rigify/leg_quadruped_generic.py index 4ad90b959e1..d197b801142 100644 --- a/release/scripts/modules/rigify/leg_quadruped_generic.py +++ b/release/scripts/modules/rigify/leg_quadruped_generic.py @@ -141,7 +141,7 @@ def ik(obj, bone_definition, base_names, options): ik.foot_roll_e = copy_bone_simple(arm, mt_chain.toe, base_names[mt_chain.foot] + "_roll") ik.foot_roll = ik.foot_roll_e.name ik.foot_roll_e.parent = ik_chain.foot_e - ik.foot_roll_e.translate( - (mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length)) + ik.foot_roll_e.translate(- (mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length)) ik.foot_roll_e.align_orientation(mt_chain.foot_e) ik.foot_roll_e.tail = ik.foot_roll_e.head - ik.foot_roll_e.vector # flip ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotationPart() * Vector(0.0, 0.0, -1.0)) diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 848f54ef4e8..8ae715b14ee 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -509,7 +509,7 @@ def main(obj, bone_definition, base_names, options): for attr in df.attr_names: getattr(df, attr + "_b").layer = lay for attr in rv_chain.attr_names: - getattr(rv_chain , attr + "_b").layer = lay + getattr(rv_chain, attr + "_b").layer = lay # no support for blending chains return None diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 3d85196871b..8e824a011b3 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -235,6 +235,7 @@ class DATA_PT_ghost(DataButtonsPanel): col.label(text="Display:") col.prop(arm, "ghost_only_selected", text="Selected Only") + class DATA_PT_iksolver_itasc(DataButtonsPanel): bl_label = "iTaSC parameters" bl_default_closed = True diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 16e744a9de3..7a51f1aa6d7 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -65,12 +65,13 @@ class SEQUENCER_HT_header(bpy.types.Header): else: layout.prop(st, "display_channel", text="Channel") + class SEQUENCER_MT_view_toggle(bpy.types.Menu): bl_label = "View Type" def draw(self, context): layout = self.layout - + layout.operator("sequencer.view_toggle").type = 'SEQUENCER' layout.operator("sequencer.view_toggle").type = 'PREVIEW' layout.operator("sequencer.view_toggle").type = 'SEQUENCER_PREVIEW' @@ -281,7 +282,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): class SequencerButtonsPanel(bpy.types.Panel): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' - + def has_sequencer(self, context): return (context.space_data.view_type == 'SEQUENCER') or (context.space_data.view_type == 'SEQUENCER_PREVIEW') -- cgit v1.2.3 From b6d2d9f63a188aa49e24b4c30c48947b62c6a19c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 16:35:31 +0000 Subject: have sequence strip rna not depend on the current editing sequencer context (TODO- rename) --- source/blender/blenkernel/BKE_sequencer.h | 9 +++++---- source/blender/blenkernel/intern/sequencer.c | 17 +++++++++++++++++ source/blender/makesrna/intern/rna_sequencer.c | 26 ++++++++++++++++++++------ 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 95fe8fb5eb9..a50b03861d7 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -60,17 +60,17 @@ void seq_next(SeqIterator *iter); void seq_end(SeqIterator *iter); void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int use_pointer); -#define SEQP_BEGIN(ed, seq) \ +#define SEQP_BEGIN(ed, _seq) \ { \ SeqIterator iter;\ for(seq_begin(ed, &iter, 1); iter.valid; seq_next(&iter)) { \ - seq= iter.seq; + _seq= iter.seq; -#define SEQ_BEGIN(ed, seq) \ +#define SEQ_BEGIN(ed, _seq) \ { \ SeqIterator iter;\ for(seq_begin(ed, &iter, 0); iter.valid; seq_next(&iter)) { \ - seq= iter.seq; + _seq= iter.seq; #define SEQ_END \ } \ @@ -181,6 +181,7 @@ int seq_tx_test(struct Sequence * seq); int seq_single_check(struct Sequence *seq); void seq_single_fix(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); +struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); int shuffle_seq_time(ListBase * seqbasep); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 4d6033e4f4a..a7b9cf7f74c 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3532,6 +3532,23 @@ void seq_update_muting(Editing *ed) } } +/* in cases where we done know the sequence's listbase */ +ListBase *seq_seqbase(ListBase *seqbase, Sequence *seq) +{ + Sequence *iseq; + ListBase *lb= NULL; + + for(iseq= seqbase->first; iseq; iseq= iseq->next) { + if(seq==iseq) { + return seqbase; + } + else if(iseq->seqbase.first && (lb= seq_seqbase(&iseq->seqbase, seq))) { + return lb; + } + } + + return NULL; +} /* XXX - hackish function needed for transforming strips! TODO - have some better solution */ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index b8cd2c56483..c1ca156c9bf 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -92,11 +92,11 @@ static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *it static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq) { Editing *ed= seq_give_editing(scene, FALSE); - + ListBase *seqbase= seq_seqbase(&ed->seqbase, seq); calc_sequence_disp(seq); - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); + if(seq_test_overlap(seqbase, seq)) { + shuffle_seq(seqbase, seq); } sort_seq(scene); } @@ -150,11 +150,12 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value) Sequence *seq= (Sequence*)ptr->data; Scene *scene= (Scene*)ptr->id.data; Editing *ed= seq_give_editing(scene, FALSE); - + ListBase *seqbase= seq_seqbase(&ed->seqbase, seq); + seq->machine= value; - if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); + if( seq_test_overlap(seqbase, seq) ) { + shuffle_seq(seqbase, seq); } sort_seq(scene); } @@ -234,9 +235,22 @@ static int rna_Sequence_name_length(PointerRNA *ptr) static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) { Scene *scene= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq= (Sequence*)ptr->data; + Sequence *iseq; BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2); + seqUniqueName(&scene->ed->seqbase, seq); + + // TODO, unique name for all meta's + /* + SEQ_BEGIN(ed, iseq) { + if(iseq->seqbase.first) + seqUniqueName(&iseq->seqbase, seq); + + } + SEQ_END + */ } static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) -- cgit v1.2.3 From 852a8b40f829905cc9c1a3e85e3c357bd87eb7a0 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 16 Dec 2009 16:45:18 +0000 Subject: netrender: close server connections on break --- release/scripts/io/netrender/master.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index fb90a60aac5..404faa015ce 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -817,3 +817,5 @@ def runMaster(address, broadcast, path, update_stats, test_break): print("broadcasting address") s.sendto(bytes("%i" % address[1], encoding='utf8'), 0, ('', 8000)) start_time = time.time() + + httpd.server_close() -- cgit v1.2.3 From d71c094bc409b7b4348a8926d129511e54f0f855 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 17:49:51 +0000 Subject: fix for crash when inserting keyframes in a mesh --- source/blender/editors/animation/keyframing.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index b126e57705e..6d8938d9545 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -851,6 +851,11 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ /* get action to add F-Curve+keyframe to */ act= verify_adt_action(id, 1); + if(act==NULL) { + printf("Insert Key: Could not insert keyframe, as this type does not support animation data (ID = %s, Path = %s)\n", id->name, rna_path); + return 0; + } + /* apply NLA-mapping to frame to use (if applicable) */ cfra= BKE_nla_tweakedit_remap(adt, cfra, NLATIME_CONVERT_UNMAP); } -- cgit v1.2.3 From fabb36a98af27aa5353c9c968ca7df3f7c134a77 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 16 Dec 2009 18:26:27 +0000 Subject: netrender: use reports to send error or success messages when sending jobs to server. --- release/scripts/io/netrender/operators.py | 19 +++++++++++++------ release/scripts/io/netrender/utils.py | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index 8aec1a9e755..87b3a4f180d 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -97,12 +97,15 @@ class RENDER_OT_netclientanim(bpy.types.Operator): scene = context.scene netsettings = scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) - - if conn: + try: + conn = clientConnection(netsettings.server_address, netsettings.server_port) + # Sending file scene.network_render.job_id = client.clientSendJob(conn, scene, True) conn.close() + except Exception as err: + self.report('ERROR', str(err)) + conn = None bpy.ops.screen.render('INVOKE_AREA', animation=True) @@ -124,12 +127,16 @@ class RENDER_OT_netclientsend(bpy.types.Operator): scene = context.scene netsettings = scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) - - if conn: + try: + conn = clientConnection(netsettings.server_address, netsettings.server_port) + # Sending file scene.network_render.job_id = client.clientSendJob(conn, scene, True) conn.close() + self.report('INFO', "Job sent to master") + except Exception as err: + self.report('ERROR', str(err)) + return ('FINISHED',) diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 8a622b605aa..0a10b9b48ba 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -90,7 +90,7 @@ def clientConnection(address, port): return conn else: conn.close() - return None + raise IOError("Wrong version on master") def clientVerifyVersion(conn): conn.request("GET", "/version") -- cgit v1.2.3 From 5e48ab8d75bd5ce3085a9de183f36107f6d5d616 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 16 Dec 2009 19:19:08 +0000 Subject: Sculpt: * Increase epsilon for intersection a bit more, ortho view + small faces are problematic. * Fix a redraw issue with one partial redraw too much at the end of the stroke. --- source/blender/blenlib/intern/math_geom.c | 11 ++++++----- source/blender/blenlib/intern/pbvh.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 2 ++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 75c32c5b45b..3e714b384a7 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -474,14 +474,15 @@ int isect_ray_tri_epsilon_v3(float p1[3], float d[3], float v0[3], float v1[3], sub_v3_v3v3(s, p1, v0); cross_v3_v3v3(q, s, e1); - *lambda = f * dot_v3v3(e2, q); - if ((*lambda < 0.0)) return 0; - + u = f * dot_v3v3(s, p); - if ((u < -epsilon)||(u > 1.0+epsilon)) return 0; + if ((u < -epsilon)||(u > 1.0f+epsilon)) return 0; v = f * dot_v3v3(d, q); - if ((v < -epsilon)||((u + v) > 1.0+epsilon)) return 0; + if ((v < -epsilon)||((u + v) > 1.0f+epsilon)) return 0; + + *lambda = f * dot_v3v3(e2, q); + if ((*lambda < 0.0f)) return 0; if(uv) { uv[0]= u; diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index d8e3fe4b0be..ff68e3b0881 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1142,7 +1142,7 @@ static int ray_face_intersection(float ray_start[3], float ray_normal[3], float dist = FLT_MAX; if(!isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2, - &dist, NULL, 0.001f)) + &dist, NULL, 0.1f)) dist = FLT_MAX; if(dist >= 0 && dist < *fdist) { diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index e6fe1a5153d..ce0a4d149bb 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1843,6 +1843,7 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou invert_m4_m4(obimat, ss->ob->obmat); mul_m4_v3(obimat, ray_start); mul_mat3_m4_v3(obimat, ray_normal); + normalize_v3(ray_normal); srd.ss = vc->obact->sculpt; srd.ray_start = ray_start; @@ -2055,6 +2056,7 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); + ss->partial_redraw = 0; WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); } } -- cgit v1.2.3 From c3401eb5cb0833dc76eff1e90e573b487181ec81 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 19:49:33 +0000 Subject: camera switching via markers Currently access by selecting a marking and binding with the active camera from the view menu. Note: after long discussion we decieded there is no nice way to do this.. animate pointers? animate multiple camera visibility?, use sequencer? use NLA?.... have a kind of event system (like framechange scriptlinks)... etc so this is ifdef'd with DURIAN_CAMERA_SWITCH --- release/scripts/ui/space_time.py | 3 ++ source/blender/blenkernel/BKE_scene.h | 1 + source/blender/blenkernel/intern/object.c | 11 +++++ source/blender/blenkernel/intern/scene.c | 41 +++++++++++++++++ source/blender/blenloader/intern/readfile.c | 24 +++++++++- source/blender/editors/animation/anim_markers.c | 60 ++++++++++++++++++++++++- source/blender/editors/screen/screen_edit.c | 41 +++++++++++++++++ source/blender/editors/screen/screen_ops.c | 6 ++- source/blender/makesdna/DNA_scene_types.h | 4 ++ source/blender/render/intern/source/pipeline.c | 6 +++ 10 files changed, 193 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 86347f8c543..e328fa9e31b 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -98,6 +98,9 @@ class TIME_MT_view(bpy.types.Menu): layout.prop(st, "show_cframe_indicator") layout.prop(st, "only_selected") + layout.separator() + + layout.operator("marker.camera_bind") class TIME_MT_frame(bpy.types.Menu): bl_label = "Frame" diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index ecff62a7952..c372004bd19 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -66,6 +66,7 @@ void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce); int next_object(struct Scene *scene, int val, struct Base **base, struct Object **ob); struct Object *scene_find_camera(struct Scene *sc); +struct Object *scene_find_camera_switch(struct Scene *scene); // DURIAN_CAMERA_SWITCH struct Base *scene_add_base(struct Scene *sce, struct Object *ob); void scene_deselect_all(struct Scene *sce); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 6b86c6c2908..9a7a3501031 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -554,6 +554,17 @@ void unlink_object(Scene *scene, Object *ob) if(sce->id.lib==NULL) { if(sce->camera==ob) sce->camera= NULL; if(sce->toolsettings->skgen_template==ob) sce->toolsettings->skgen_template = NULL; + +#ifdef DURIAN_CAMERA_SWITCH + { + TimeMarker *m; + + for (m= sce->markers.first; m; m= m->next) { + if(m->camera==ob) + m->camera= NULL; + } + } +#endif } sce= sce->id.next; } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 4312f23bd9b..7bfeac037ce 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -698,6 +698,47 @@ Object *scene_find_camera(Scene *sc) return NULL; } +#ifdef DURIAN_CAMERA_SWITCH +Object *scene_find_camera_switch(Scene *scene) +{ + TimeMarker *m; + int cfra = scene->r.cfra; + int frame = -(MAXFRAME + 1); + Object *camera= NULL; + + for (m= scene->markers.first; m; m= m->next) { + if(m->camera && (m->frame <= cfra) && (m->frame > frame)) { + camera= m->camera; + frame= m->frame; + + if(frame == cfra) + break; + + } + } + return camera; +} +#endif + +static char *get_cfra_marker_name(Scene *scene) +{ + ListBase *markers= &scene->markers; + TimeMarker *m1, *m2; + + /* search through markers for match */ + for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) { + if (m1->frame==CFRA) + return m1->name; + + if (m1 == m2) + break; + + if (m2->frame==CFRA) + return m2->name; + } + + return NULL; +} Base *scene_add_base(Scene *sce, Object *ob) { diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index fa878093cc4..17dfb4f7ce6 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4174,6 +4174,7 @@ static void lib_link_scene(FileData *fd, Main *main) Base *base, *next; Sequence *seq; SceneRenderLayer *srl; + TimeMarker *marker; sce= main->scene.first; while(sce) { @@ -4229,6 +4230,14 @@ static void lib_link_scene(FileData *fd, Main *main) } SEQ_END +#ifdef DURIAN_CAMERA_SWITCH + for(marker= sce->markers.first; marker; marker= marker->next) { + if(marker->camera) { + marker->camera= newlibadr(fd, sce->id.lib, marker->camera); + } + } +#endif + if(sce->ed) seq_update_muting(sce->ed); @@ -4280,6 +4289,7 @@ static void direct_link_scene(FileData *fd, Scene *sce) Editing *ed; Sequence *seq; MetaStack *ms; + TimeMarker *marker; sce->theDag = NULL; sce->dagisvalid = 0; @@ -4451,7 +4461,7 @@ static void direct_link_scene(FileData *fd, Scene *sce) link_list(fd, &(sce->markers)); link_list(fd, &(sce->transform_spaces)); link_list(fd, &(sce->r.layers)); - + sce->nodetree= newdataadr(fd, sce->nodetree); if(sce->nodetree) direct_link_nodetree(fd, sce->nodetree); @@ -11255,6 +11265,18 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce) if(sce->gpd) expand_doit(fd, mainvar, sce->gpd); + +#ifdef DURIAN_CAMERA_SWITCH + { + TimeMarker *marker; + + for(marker= sce->markers.first; marker; marker= marker->next) { + if(marker->camera) { + expand_doit(fd, mainvar, marker->camera); + } + } + } +#endif } static void expand_camera(FileData *fd, Main *mainvar, Camera *ca) diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 721fa928e44..0d519c87a97 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -240,15 +240,19 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); /* vertical line - dotted */ - // NOTE: currently only used for sequencer + // NOTE: currently only used for sequencer +#ifdef DURIAN_CAMERA_SWITCH + if (marker->camera || flag & DRAW_MARKERS_LINES) { +#else if (flag & DRAW_MARKERS_LINES) { +#endif setlinestyle(3); if (marker->flag & SELECT) glColor4ub(255, 255, 255, 96); else glColor4ub(0, 0, 0, 96); - + glBegin(GL_LINES); glVertex2f((xpos*xscale)+0.5f, 12.0f); glVertex2f((xpos*xscale)+0.5f, 34.0f*yscale); /* a bit lazy but we know it cant be greater then 34 strips high */ @@ -672,6 +676,10 @@ static void ed_marker_duplicate_apply(bContext *C, wmOperator *op) newmarker->frame= marker->frame; BLI_strncpy(newmarker->name, marker->name, sizeof(marker->name)); +#ifdef DURIAN_CAMERA_SWITCH + newmarker->camera= marker->camera; +#endif + /* new marker is added to the begining of list */ BLI_addhead(markers, newmarker); } @@ -978,6 +986,48 @@ static void MARKER_OT_delete(wmOperatorType *ot) } +#ifdef DURIAN_CAMERA_SWITCH +/* ******************************* camera bind marker ***************** */ + +/* remove selected TimeMarkers */ +static int ed_marker_camera_bind_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + ListBase *markers= context_get_markers(C); + TimeMarker *marker; + short changed= 0; + + if(markers == NULL) + return OPERATOR_CANCELLED; + + for(marker= markers->first; marker; marker= marker->next) { + if(marker->flag & SELECT) { + marker->camera= scene->camera; + } + } + + if (changed) + WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL); + + return OPERATOR_FINISHED; +} + +static void MARKER_OT_camera_bind(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Bind Camera to Markers"; + ot->description= "Bind the active camera to selected markers(s)."; + ot->idname= "MARKER_OT_camera_bind"; + + /* api callbacks */ + ot->exec= ed_marker_camera_bind_exec; + ot->poll= ED_operator_areaactive; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} +#endif + /* ************************** registration **********************************/ /* called in screen_ops.c:ED_operatortypes_screen() */ @@ -990,6 +1040,9 @@ void ED_operatortypes_marker(void) WM_operatortype_append(MARKER_OT_select_border); WM_operatortype_append(MARKER_OT_select_all); WM_operatortype_append(MARKER_OT_delete); +#ifdef DURIAN_CAMERA_SWITCH + WM_operatortype_append(MARKER_OT_camera_bind); +#endif } /* called in screen_ops.c:ED_keymap_screen() */ @@ -1008,5 +1061,8 @@ void ED_marker_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); +#ifdef DURIAN_CAMERA_SWITCH + WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", HOMEKEY, KM_PRESS, 0, 0); +#endif } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 640a14a934b..9c581527e4c 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1670,6 +1670,47 @@ void ED_update_for_newframe(const bContext *C, int mute) bScreen *screen= CTX_wm_screen(C); Scene *scene= CTX_data_scene(C); +#ifdef DURIAN_CAMERA_SWITCH + void *camera= scene_find_camera_switch(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->camera == scene->camera) { + v3d->camera= camera; + /* + 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; + } + } + */ + } + } + sl= sl->next; + } + sa= sa->next; + } + } + } + + scene->camera= camera; + + } +#endif + //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ /* this function applies the changes too */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index fe2bc58faf2..7227c13d374 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2339,6 +2339,9 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) ScreenAnimData *sad= wt->customdata; ScrArea *sa; int sync; +#ifdef DURIAN_CAMERA_SWITCH + Object *camera_orig= scene->camera; +#endif /* sync, don't sync, or follow scene setting */ if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; @@ -2397,10 +2400,11 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) } /* since we follow drawflags, we can't send notifier but tag regions ourselves */ + ED_update_for_newframe(C, 1); sound_update_playing(C); - + for(sa= screen->areabase.first; sa; sa= sa->next) { ARegion *ar; for(ar= sa->regionbase.first; ar; ar= ar->next) { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 32143015885..0ed8aba056a 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -29,6 +29,9 @@ #ifndef DNA_SCENE_TYPES_H #define DNA_SCENE_TYPES_H +// XXX, temp feature +#define DURIAN_CAMERA_SWITCH + #ifdef __cplusplus extern "C" { #endif @@ -488,6 +491,7 @@ typedef struct TimeMarker { int frame; char name[64]; unsigned int flag; + struct Object *camera; } TimeMarker; typedef struct Paint { diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 1eb864e173d..92a8945af2e 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2503,6 +2503,12 @@ static void do_render_seq(Render * re) /* main loop: doing sequence + fields + blur + 3d render + compositing */ static void do_render_all_options(Render *re) { +#ifdef DURIAN_CAMERA_SWITCH + Object *camera= scene_find_camera_switch(re->scene); + if(camera) + re->scene->camera= camera; +#endif + re->i.starttime= PIL_check_seconds_timer(); /* ensure no images are in memory from previous animated sequences */ -- cgit v1.2.3 From 383f29ff372ae031c26edfff21c720a749060c2d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 16 Dec 2009 21:00:25 +0000 Subject: netrender Display job status in web interface Better use of Reports api for errors and success notifications Don't show some Client options if server address is default (hasn't been scanned or entered manually yet) --- release/scripts/io/netrender/master.py | 4 +- release/scripts/io/netrender/master_html.py | 2 + release/scripts/io/netrender/model.py | 9 ++- release/scripts/io/netrender/operators.py | 32 +++++----- release/scripts/io/netrender/ui.py | 22 ++++--- release/scripts/io/netrender/utils.py | 96 +++++++++++++++++++---------- 6 files changed, 108 insertions(+), 57 deletions(-) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 404faa015ce..cf71e410cde 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -67,11 +67,13 @@ class MRenderJob(netrender.model.RenderJob): if self.type == netrender.model.JOB_PROCESS: self.chunks = 1 + # Force WAITING status on creation + self.status = JOB_WAITING + # special server properties self.last_update = 0 self.save_path = "" self.files = [MRenderFile(rfile.filepath, rfile.index, rfile.start, rfile.end) for rfile in job_info.files] - self.status = JOB_WAITING def save(self): if self.save_path: diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index d6e0867ad01..e556943609f 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -94,6 +94,7 @@ def get(handler): "priority", "usage", "wait", + "status", "length", "done", "dispatched", @@ -114,6 +115,7 @@ def get(handler): job.priority, "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), + job.statusText(), len(job), results[DONE], results[DISPATCHED], diff --git a/release/scripts/io/netrender/model.py b/release/scripts/io/netrender/model.py index b731b32481e..f541b0c5e1a 100644 --- a/release/scripts/io/netrender/model.py +++ b/release/scripts/io/netrender/model.py @@ -132,6 +132,7 @@ class RenderJob: self.type = JOB_BLENDER self.name = "" self.category = "None" + self.status = JOB_WAITING self.files = [] self.chunks = 0 self.priority = 0 @@ -145,6 +146,7 @@ class RenderJob: self.type = job_info.type self.name = job_info.name self.category = job_info.category + self.status = job_info.status self.files = job_info.files self.chunks = job_info.chunks self.priority = job_info.priority @@ -172,6 +174,9 @@ class RenderJob: def countSlaves(self): return len(set((frame.slave for frame in self.frames if frame.status == DISPATCHED))) + def statusText(self): + return JOB_STATUS_TEXT[self.status] + def framesStatus(self): results = { QUEUED: 0, @@ -207,6 +212,7 @@ class RenderJob: "type": self.type, "name": self.name, "category": self.category, + "status": self.status, "files": [f.serialize() for f in self.files if f.start == -1 or not frames or (f.start <= max_frame and f.end >= min_frame)], "frames": [f.serialize() for f in self.frames if not frames or f in frames], "chunks": self.chunks, @@ -226,6 +232,7 @@ class RenderJob: job.type = data["type"] job.name = data["name"] job.category = data["category"] + job.status = data["status"] job.files = [RenderFile.materialize(f) for f in data["files"]] job.frames = [RenderFrame.materialize(f) for f in data["frames"]] job.chunks = data["chunks"] @@ -245,7 +252,7 @@ class RenderFrame: self.command = command def statusText(self): - return STATUS_TEXT[self.status] + return FRAME_STATUS_TEXT[self.status] def serialize(self): return { diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index 87b3a4f180d..ec229fbb471 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -97,15 +97,12 @@ class RENDER_OT_netclientanim(bpy.types.Operator): scene = context.scene netsettings = scene.network_render - try: - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) + if conn: # Sending file scene.network_render.job_id = client.clientSendJob(conn, scene, True) conn.close() - except Exception as err: - self.report('ERROR', str(err)) - conn = None bpy.ops.screen.render('INVOKE_AREA', animation=True) @@ -128,12 +125,13 @@ class RENDER_OT_netclientsend(bpy.types.Operator): netsettings = scene.network_render try: - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) - # Sending file - scene.network_render.job_id = client.clientSendJob(conn, scene, True) - conn.close() - self.report('INFO', "Job sent to master") + if conn: + # Sending file + scene.network_render.job_id = client.clientSendJob(conn, scene, True) + conn.close() + self.report('INFO', "Job sent to master") except Exception as err: self.report('ERROR', str(err)) @@ -154,7 +152,7 @@ class RENDER_OT_netclientstatus(bpy.types.Operator): def execute(self, context): netsettings = context.scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: conn.request("GET", "/status") @@ -255,7 +253,7 @@ class RENDER_OT_netclientslaves(bpy.types.Operator): def execute(self, context): netsettings = context.scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: conn.request("GET", "/slaves") @@ -301,7 +299,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator): def execute(self, context): netsettings = context.scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: job = netrender.jobs[netsettings.active_job_index] @@ -329,7 +327,7 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator): def execute(self, context): netsettings = context.scene.network_render - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: conn.request("POST", "/clear") @@ -359,7 +357,7 @@ class netclientdownload(bpy.types.Operator): netsettings = context.scene.network_render rd = context.scene.render_data - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: job = netrender.jobs[netsettings.active_job_index] @@ -400,7 +398,7 @@ class netclientscan(bpy.types.Operator): return True def execute(self, context): - address, port = clientScan() + address, port = clientScan(self.report) if address: scene = context.scene @@ -427,7 +425,7 @@ class netclientweb(bpy.types.Operator): # open connection to make sure server exists - conn = clientConnection(netsettings.server_address, netsettings.server_port) + conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report) if conn: conn.close() diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 040f9140a54..5ef02fad17c 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -85,7 +85,8 @@ class RENDER_PT_network_job(RenderButtonsPanel): def poll(self, context): scene = context.scene - return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT" + return (super().poll(context) + and scene.network_render.mode == "RENDER_CLIENT") def draw(self, context): layout = self.layout @@ -98,9 +99,10 @@ class RENDER_PT_network_job(RenderButtonsPanel): split = layout.split() col = split.column() - col.operator("render.netclientanim", icon='RENDER_ANIMATION') - col.operator("render.netclientsend", icon='FILE_BLEND') - col.operator("render.netclientweb", icon='QUESTION') + if scene.network_render.server_address != "[default]": + col.operator("render.netclientanim", icon='RENDER_ANIMATION') + col.operator("render.netclientsend", icon='FILE_BLEND') + col.operator("render.netclientweb", icon='QUESTION') col.prop(scene.network_render, "job_name") col.prop(scene.network_render, "job_category") row = col.row() @@ -114,7 +116,9 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): def poll(self, context): scene = context.scene - return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT" + return (super().poll(context) + and scene.network_render.mode == "RENDER_CLIENT" + and scene.network_render.server_address != "[default]") def draw(self, context): layout = self.layout @@ -150,7 +154,9 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): def poll(self, context): scene = context.scene - return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT" + return (super().poll(context) + and scene.network_render.mode == "RENDER_CLIENT" + and scene.network_render.server_address != "[default]") def draw(self, context): layout = self.layout @@ -185,7 +191,9 @@ class RENDER_PT_network_jobs(RenderButtonsPanel): def poll(self, context): scene = context.scene - return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT" + return (super().poll(context) + and scene.network_render.mode == "RENDER_CLIENT" + and scene.network_render.server_address != "[default]") def draw(self, context): layout = self.layout diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 0a10b9b48ba..3da15a33b65 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -28,7 +28,7 @@ try: except: bpy = None -VERSION = b"0.7" +VERSION = bytes("0.7", encoding='utf8') # Jobs status JOB_WAITING = 0 # before all data has been entered @@ -36,13 +36,21 @@ JOB_PAUSED = 1 # paused by user JOB_FINISHED = 2 # finished rendering JOB_QUEUED = 3 # ready to be dispatched +JOB_STATUS_TEXT = { + JOB_WAITING: "Waiting", + JOB_PAUSED: "Paused", + JOB_FINISHED: "Finished", + JOB_QUEUED: "Queued" + } + + # Frames status QUEUED = 0 DISPATCHED = 1 DONE = 2 ERROR = 3 -STATUS_TEXT = { +FRAME_STATUS_TEXT = { QUEUED: "Queued", DISPATCHED: "Dispatched", DONE: "Done", @@ -57,40 +65,66 @@ def rnaOperator(rna_op): if bpy: bpy.ops.add(rna_op) return rna_op -def clientScan(): - try: - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) - s.settimeout(30) - - s.bind(('', 8000)) +def reporting(report, message, errorType = None): + if errorType: + t = 'ERROR' + else: + t = 'INFO' + + if report: + report(t, message) + return None + elif errorType: + raise errorType(message) + else: + return None + +def clientScan(report = None): + try: + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + s.settimeout(30) + + s.bind(('', 8000)) - buf, address = s.recvfrom(64) + buf, address = s.recvfrom(64) - print("received:", buf) - - address = address[0] - port = int(str(buf, encoding='utf8')) - return (address, port) - except socket.timeout: - print("no server info") - return ("", 8000) # return default values - -def clientConnection(address, port): - if address == "[default]": + address = address[0] + port = int(str(buf, encoding='utf8')) + + reporting(report, "Master server found") + + return (address, port) + except socket.timeout: + reporting(report, "No master server on network", IOError) + + return ("", 8000) # return default values + +def clientConnection(address, port, report = None): + if address == "[default]": # calling operator from python is fucked, scene isn't in context # if bpy: # bpy.ops.render.netclientscan() # else: - address, port = clientScan() - - conn = http.client.HTTPConnection(address, port) - - if clientVerifyVersion(conn): - return conn - else: - conn.close() - raise IOError("Wrong version on master") + address, port = clientScan() + if address == "": + return None + + try: + conn = http.client.HTTPConnection(address, port) + + if conn: + if clientVerifyVersion(conn): + return conn + else: + conn.close() + reporting(report, "Incorrect master version", ValueError) + except Exception as err: + if report: + report('ERROR', str(err)) + return None + else: + raise def clientVerifyVersion(conn): conn.request("GET", "/version") @@ -104,7 +138,7 @@ def clientVerifyVersion(conn): if server_version != VERSION: print("Incorrect server version!") - print("expected", VERSION, "received", server_version) + print("expected", str(VERSION, encoding='utf8'), "received", str(server_version, encoding='utf8')) return False return True -- cgit v1.2.3 From bcb5f8ea12f74a8eb251408a02eae0b97083f527 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 21:27:07 +0000 Subject: Update 2.4x script: UV Follow active quads initial port thanks to Michael Williamson, added operator option, reporting, menu, edge length option myself. --- release/scripts/modules/bpy_types.py | 76 +++++++++ release/scripts/op/uvcalc_follow_active.py | 261 +++++++++++++++++++++++++++++ 2 files changed, 337 insertions(+) create mode 100644 release/scripts/op/uvcalc_follow_active.py diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 69618d77ecb..c138ec21d10 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -243,6 +243,82 @@ class Mesh(bpy_types.ID): edge_face_count_dict = self.edge_face_count_dict return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges] + def edge_loops(self, faces=None, seams=()): + ''' + Edge loops defined by faces + + Takes me.faces or a list of faces and returns the edge loops + These edge loops are the edges that sit between quads, so they dont touch + 1 quad, note: not connected will make 2 edge loops, both only containing 2 edges. + + return a list of edge key lists + [ [(0,1), (4, 8), (3,8)], ...] + + optionaly, seams are edge keys that will be removed + ''' + + OTHER_INDEX = 2,3,0,1 # opposite face index + + if faces is None: + faces= self.faces + + edges = {} + + for f in faces: +# if len(f) == 4: + if f.verts_raw[3] != 0: + edge_keys = f.edge_keys + for i, edkey in enumerate(f.edge_keys): + edges.setdefault(edkey, []).append(edge_keys[OTHER_INDEX[i]]) + + for edkey in seams: + edges[edkey] = [] + + # Collect edge loops here + edge_loops = [] + + for edkey, ed_adj in edges.items(): + if 0 + +#for full docs see... +# http://mediawiki.blender.org/index.php/Scripts/Manual/UV_Calculate/Follow_active_quads + +import bpy + +def extend(obj, operator, EXTEND_MODE): + me = obj.data + me_verts = me.verts + # script will fail without UVs + if not me.active_uv_texture: + me.add_uv_texture() + + + # Toggle Edit mode + is_editmode = (obj.mode == 'EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT') + + #t = sys.time() + edge_average_lengths = {} + + OTHER_INDEX = 2,3,0,1 + FAST_INDICIES = 0,2,1,3 # order is faster + def extend_uvs(face_source, face_target, edge_key): + ''' + Takes 2 faces, + Projects its extends its UV coords onto the face next to it. + Both faces must share an edge. + ''' + + def face_edge_vs(vi): + # assume a quad + return [(vi[0], vi[1]), (vi[1], vi[2]), (vi[2], vi[3]), (vi[3], vi[0])] + + vidx_source = face_source.verts + vidx_target = face_target.verts + + faceUVsource = me.active_uv_texture.data[face_source.index] + uvs_source = [faceUVsource.uv1,faceUVsource.uv2,faceUVsource.uv3,faceUVsource.uv4] + + faceUVtarget = me.active_uv_texture.data[face_target.index] + uvs_target = [faceUVtarget.uv1,faceUVtarget.uv2,faceUVtarget.uv3,faceUVtarget.uv4] + + # vertex index is the key, uv is the value + + uvs_vhash_source = dict( [ (vindex, uvs_source[i]) for i, vindex in enumerate(vidx_source)] ) + + uvs_vhash_target = dict( [ (vindex, uvs_target[i]) for i, vindex in enumerate(vidx_target)] ) + + edge_idxs_source = face_edge_vs(vidx_source) + edge_idxs_target = face_edge_vs(vidx_target) + + source_matching_edge = -1 + target_matching_edge = -1 + + edge_key_swap = edge_key[1], edge_key[0] + + try: source_matching_edge = edge_idxs_source.index(edge_key) + except: source_matching_edge = edge_idxs_source.index(edge_key_swap) + try: target_matching_edge = edge_idxs_target.index(edge_key) + except: target_matching_edge = edge_idxs_target.index(edge_key_swap) + + + + edgepair_inner_source = edge_idxs_source[source_matching_edge] + edgepair_inner_target = edge_idxs_target[target_matching_edge] + edgepair_outer_source = edge_idxs_source[OTHER_INDEX[source_matching_edge]] + edgepair_outer_target = edge_idxs_target[OTHER_INDEX[target_matching_edge]] + + if edge_idxs_source[source_matching_edge] == edge_idxs_target[target_matching_edge]: + iA= 0; iB= 1 # Flipped, most common + else: # The normals of these faces must be different + iA= 1; iB= 0 + + + # Set the target UV's touching source face, no tricky calc needed, + uvs_vhash_target[edgepair_inner_target[0]][:] = uvs_vhash_source[edgepair_inner_source[iA]] + uvs_vhash_target[edgepair_inner_target[1]][:] = uvs_vhash_source[edgepair_inner_source[iB]] + + + # Set the 2 UV's on the target face that are not touching + # for this we need to do basic expaning on the source faces UV's + if EXTEND_MODE == 'LENGTH': + + try: # divide by zero is possible + ''' + measure the length of each face from the middle of each edge to the opposite + allong the axis we are copying, use this + ''' + i1a= edgepair_outer_target[iB] + i2a= edgepair_inner_target[iA] + if i1a>i2a: i1a, i2a = i2a, i1a + + i1b= edgepair_outer_source[iB] + i2b= edgepair_inner_source[iA] + if i1b>i2b: i1b, i2b = i2b, i1b + # print edge_average_lengths + factor = edge_average_lengths[i1a, i2a][0] / edge_average_lengths[i1b, i2b][0] + except: + # Div By Zero? + factor = 1.0 + + uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] +factor * (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) + uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] +factor * (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) + + else: + # same as above but with no factor + uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] + (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) + uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] + (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) + + + if me.active_uv_texture == None: + me.add_uv_texture + + face_act = me.faces.active + if face_act == -1: + operator.report({'ERROR'}, "No active face.") + return + + face_sel= [f for f in me.faces if len(f.verts) == 4 and f.selected] + + face_act_local_index = -1 + for i, f in enumerate(face_sel): + if f.index == face_act: + face_act_local_index = i + break + + if face_act_local_index == -1: + operator.report({'ERROR'}, "Active face not selected.") + return + + + + # Modes + # 0 unsearched + # 1:mapped, use search from this face. - removed!! + # 2:all siblings have been searched. dont search again. + face_modes = [0] * len(face_sel) + face_modes[face_act_local_index] = 1 # extend UV's from this face. + + + # Edge connectivty + edge_faces = {} + for i, f in enumerate(face_sel): + for edkey in f.edge_keys: + try: edge_faces[edkey].append(i) + except: edge_faces[edkey] = [i] + + #SEAM = me.edges.seam + + if EXTEND_MODE == 'LENGTH': + edge_loops = me.edge_loops(face_sel, [ed.key for ed in me.edges if ed.seam] ) + me_verts = me.verts + for loop in edge_loops: + looplen = [0.0] + for ed in loop: + edge_average_lengths[ed] = looplen + looplen[0] += (me_verts[ed[0]].co - me_verts[ed[1]].co).length + looplen[0] = looplen[0] / len(loop) + + + + # remove seams, so we dont map accross seams. + for ed in me.edges: + if ed.seam: + # remove the edge pair if we can + try: del edge_faces[ed.key] + except: pass + # Done finding seams + + + # face connectivity - faces around each face + # only store a list of indicies for each face. + face_faces = [[] for i in range(len(face_sel))] + + for edge_key, faces in edge_faces.items(): + if len(faces) == 2: # Only do edges with 2 face users for now + face_faces[faces[0]].append((faces[1], edge_key)) + face_faces[faces[1]].append((faces[0], edge_key)) + + + # Now we know what face is connected to what other face, map them by connectivity + ok = True + while ok: + ok = False + for i in range(len(face_sel)): + if face_modes[i] == 1: # searchable + for f_sibling, edge_key in face_faces[i]: + if face_modes[f_sibling] == 0: + face_modes[f_sibling] = 1 # mapped and search from. + extend_uvs(face_sel[i], face_sel[f_sibling], edge_key) + face_modes[i] = 1 # we can map from this one now. + ok= True # keep searching + + face_modes[i] = 2 # dont search again + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + else: + me.update() + + + +def main(context, operator): + obj = context.active_object + + extend(obj, operator, operator.properties.mode) + +class FollowActiveQuads(bpy.types.Operator): + '''Follow UVs from active quads along continuous face loops.''' + bl_idname = "uv.follow_active_quads" + bl_label = "Follow Active Quads" + + bl_register = True + bl_undo = True + + mode = bpy.props.EnumProperty(items=(("EVEN", "Client", "Space all UVs evently"), ("LENGTH", "Length", "Average space UVs edge length of each loop.")), + name="Edge Length Mode", + description="Method to space UV edge loops", + default="LENGTH") + + def poll(self, context): + obj = context.active_object + return (obj is not None and obj.type == 'MESH') + + def execute(self, context): + main(context, self) + return ('FINISHED',) + +bpy.ops.add(FollowActiveQuads) + +# Add to a menu +import dynamic_menu + +menu_func = (lambda self, context: self.layout.operator(FollowActiveQuads.bl_idname)) + +menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) + +if __name__ == '__main__': + bpy.ops.uv.follow_active_quads() + -- cgit v1.2.3 From 8a61ad3cd25714934ebba977351d1ee547f6a24b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Dec 2009 23:05:59 +0000 Subject: bugfix [#20054] Continuous Zoom isn't smooth --- source/blender/editors/space_view3d/view3d_edit.c | 25 +++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 7714f117e9c..3a4dc102943 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -234,6 +234,10 @@ typedef struct ViewOpsData { ARegion *ar; RegionView3D *rv3d; + /* needed for continuous zoom */ + wmTimer *timer; + double timer_lastdraw; + float oldquat[4]; float trackvec[3]; float reverse, dist0; @@ -372,6 +376,9 @@ static void viewops_data_free(bContext *C, wmOperator *op) if(p && (p->flags & PAINT_FAST_NAVIGATE)) ED_region_tag_redraw(vod->ar); + if(vod->timer) + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), vod->timer); + MEM_freeN(vod); op->customdata= NULL; } @@ -891,8 +898,12 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) float zfac=1.0; if(U.viewzoom==USER_ZOOM_CONT) { + double time= PIL_check_seconds_timer(); + float time_step= (float)(time - vod->timer_lastdraw); + // oldstyle zoom - zfac = 1.0+(float)(vod->origx - x + vod->origy - y)/1000.0; + zfac = 1.0f + (((float)(vod->origx - x + vod->origy - y)/20.0) * time_step); + vod->timer_lastdraw= time; } else if(U.viewzoom==USER_ZOOM_SCALE) { int ctr[2], len1, len2; @@ -959,7 +970,10 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event) short event_code= VIEW_PASS; /* execute the events */ - if(event->type==MOUSEMOVE) { + if (event->type == TIMER && event->customdata == vod->timer) { + event_code= VIEW_APPLY; + } + else if(event->type==MOUSEMOVE) { event_code= VIEW_APPLY; } else if(event->type==EVT_MODAL_MAP) { @@ -1038,9 +1052,16 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event) viewzoom_exec(C, op); } else { + ViewOpsData *vod; + /* makes op->customdata */ viewops_data_create(C, op, event); + vod= op->customdata; + + vod->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f); + vod->timer_lastdraw= PIL_check_seconds_timer(); + /* add temp handler */ WM_event_add_modal_handler(C, op); -- cgit v1.2.3 From b9dbd53aeafd7105621bf9b2975b5a0885017dd6 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 17 Dec 2009 01:06:12 +0000 Subject: Added search filtering to key map editor - searches in UI names of operators --- release/scripts/ui/space_userpref.py | 57 ++++++++++++++++++----- source/blender/makesdna/DNA_windowmanager_types.h | 3 +- source/blender/makesrna/intern/rna_wm.c | 42 ++--------------- 3 files changed, 53 insertions(+), 49 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 5d9d3fce36f..21dae9982dc 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1260,7 +1260,6 @@ class USERPREF_PT_input(bpy.types.Panel): km = kc.find_keymap(idname, space_type = spaceid, region_type = regionid) if km: - km = km.active() self.draw_km(kc, km, children, col, level) def indented_layout(self, layout, level): @@ -1275,6 +1274,8 @@ class USERPREF_PT_input(bpy.types.Panel): return col def draw_km(self, kc, km, children, layout, level): + km = km.active() + layout.set_context_pointer("keymap", km) col = self.indented_layout(layout, level) @@ -1463,7 +1464,35 @@ class USERPREF_PT_input(bpy.types.Panel): sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") row.separator() + + def draw_filtered(self, kc, layout): + for km in kc.keymaps: + filtered_items = [kmi for kmi in km.items if kmi.name.lower().find(kc.filter.lower()) != -1] + + if len(filtered_items) != 0: + km = km.active() + + col = layout.column() + col.set_context_pointer("keymap", km) + row = col.row() + row.label(text=km.name, icon="DOT") + + row.label() + row.label() + + if km.user_defined: + row.operator("WM_OT_keymap_restore", text="Restore") + else: + row.operator("WM_OT_keymap_edit", text="Edit") + + for kmi in filtered_items: + self.draw_kmi(kc, km, kmi, col, 1) + + def draw_hierarchy(self, defkc, layout): + for entry in KM_HIERARCHY: + self.draw_entry(defkc, entry, layout) + def draw(self, context): layout = self.layout @@ -1480,17 +1509,23 @@ class USERPREF_PT_input(bpy.types.Panel): # Keymap Settings col = split.column() # kc = wm.active_keyconfig - defkc = wm.default_keyconfig + kc = wm.default_keyconfig sub = col.column() - subrow = sub.row() - subrow.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:") - subrow.label() + + subsplit = sub.split() + subcol = subsplit.column() + subcol.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:") + + subcol = subsplit.column() + subcol.prop(kc, "filter", icon="VIEWZOOM") col.separator() - for entry in KM_HIERARCHY: - self.draw_entry(defkc, entry, col) + if kc.filter != "": + self.draw_filtered(kc, col) + else: + self.draw_hierarchy(kc, col) bpy.types.register(USERPREF_HT_header) bpy.types.register(USERPREF_PT_tabs) @@ -1607,7 +1642,7 @@ class WM_OT_keymap_edit(bpy.types.Operator): def execute(self, context): wm = context.manager - km = context.keymap # wm.active_keymap + km = context.keymap km.copy_to_user() return ('FINISHED',) @@ -1626,7 +1661,7 @@ class WM_OT_keymap_restore(bpy.types.Operator): for km in wm.default_keyconfig.keymaps: km.restore_to_default() else: - km = context.keymap # wm.active_keymap + km = context.keymap km.restore_to_default() return ('FINISHED',) @@ -1639,7 +1674,7 @@ class WM_OT_keyitem_add(bpy.types.Operator): def execute(self, context): wm = context.manager - km = context.keymap # wm.active_keymap + km = context.keymap if km.modal: km.add_modal_item("", 'A', 'PRESS') # kmi else: @@ -1655,7 +1690,7 @@ class WM_OT_keyitem_remove(bpy.types.Operator): def execute(self, context): wm = context.manager kmi = context.keyitem - km = context.keymap # wm.active_keymap + km = context.keymap km.remove_item(kmi) return ('FINISHED',) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 0b69b72aa41..c17ae1c53c8 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -123,7 +123,6 @@ typedef struct wmWindowManager { ListBase keyconfigs; /* known key configurations */ struct wmKeyConfig *defaultconf; /* default configuration, not saved */ - int defaultactmap, pad2; /* active keymap from default for editing */ ListBase timers; /* active timers */ struct wmTimer *autosavetimer; /* timer for auto save */ @@ -301,6 +300,8 @@ typedef struct wmKeyConfig { char idname[64]; /* unique name */ char basename[64]; /* idname of configuration this is derives from, "" if none */ + char filter[64]; /* search term for filtering in the UI */ + ListBase keymaps; int actkeymap, flag; } wmKeyConfig; diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index b17cefcccac..7809c3a8c34 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -535,36 +535,6 @@ static void rna_WindowManager_active_keyconfig_set(PointerRNA *ptr, PointerRNA v BLI_strncpy(U.keyconfigstr, kc->idname, sizeof(U.keyconfigstr)); } -static PointerRNA rna_WindowManager_active_keymap_get(PointerRNA *ptr) -{ - wmWindowManager *wm= ptr->data; - wmKeyMap *km= NULL; - - if(wm->defaultconf) { - km= BLI_findlink(&wm->defaultconf->keymaps, wm->defaultactmap); - - if(!km) - km= wm->defaultconf->keymaps.first; - } - - return rna_pointer_inherit_refine(ptr, &RNA_KeyMap, WM_keymap_active(wm, km)); -} - -static void rna_WindowManager_active_keymap_set(PointerRNA *ptr, PointerRNA value) -{ - wmWindowManager *wm= ptr->data; - wmKeyMap *km= value.data; - int index; - - if(wm->defaultconf && km) { - km= WM_keymap_find(wm->defaultconf, km->idname, km->spaceid, km->regionid); - index= BLI_findindex(&wm->defaultconf->keymaps, km); - - if(index != -1) wm->defaultactmap= index; - else wm->defaultactmap= 0; - } -} - static void rna_wmKeyMapItem_idname_get(PointerRNA *ptr, char *value) { wmKeyMapItem *kmi= ptr->data; @@ -848,12 +818,6 @@ static void rna_def_windowmanager(BlenderRNA *brna) RNA_def_property_struct_type(prop, "KeyConfig"); RNA_def_property_ui_text(prop, "Default Key Configuration", ""); - prop= RNA_def_property(srna, "active_keymap", PROP_POINTER, PROP_NEVER_NULL); - RNA_def_property_struct_type(prop, "KeyMap"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_pointer_funcs(prop, "rna_WindowManager_active_keymap_get", "rna_WindowManager_active_keymap_set", 0); - RNA_def_property_ui_text(prop, "Active Key Map", ""); - RNA_api_wm(srna); } @@ -881,6 +845,10 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_string_sdna(prop, NULL, "idname"); RNA_def_property_ui_text(prop, "Name", "Name of the key configuration."); RNA_def_struct_name_property(srna, prop); + + prop= RNA_def_property(srna, "filter", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "filter"); + RNA_def_property_ui_text(prop, "Filter", "Search term for filtering in the UI."); prop= RNA_def_property(srna, "keymaps", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "KeyMap"); @@ -1011,7 +979,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED); - RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface."); + RNA_def_property_ui_text(prop, "Expanded", "Show key map event and property details in the user interface."); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE); -- cgit v1.2.3 From 8d996df7ceaf14f34c05a2b3bbbda57522674ef9 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 01:19:50 +0000 Subject: Adding POINTER_GRAB flag to view 2d pan operator, to make it use continuous grab. --- source/blender/editors/interface/view2d_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 6579e30900b..8bd840f7e84 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -274,7 +274,7 @@ void VIEW2D_OT_pan(wmOperatorType *ot) ot->cancel= view_pan_cancel; /* operator is repeatable */ - ot->flag= OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; /* 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); -- cgit v1.2.3 From c3b978828cc47aca064d8e3e5349ec76e802c844 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 01:21:55 +0000 Subject: pep8 corrections and no need to use C's _OT_ syntax when accessing operator names from py --- release/scripts/modules/bpy_types.py | 26 +- release/scripts/op/screen_play_rendered_anim.py | 30 +- release/scripts/op/uvcalc_follow_active.py | 439 ++++++++++++------------ release/scripts/ui/space_userpref.py | 169 ++++----- 4 files changed, 338 insertions(+), 326 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index c138ec21d10..2351fa8b091 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -258,7 +258,7 @@ class Mesh(bpy_types.ID): ''' OTHER_INDEX = 2,3,0,1 # opposite face index - + if faces is None: faces= self.faces @@ -270,13 +270,13 @@ class Mesh(bpy_types.ID): edge_keys = f.edge_keys for i, edkey in enumerate(f.edge_keys): edges.setdefault(edkey, []).append(edge_keys[OTHER_INDEX[i]]) - + for edkey in seams: edges[edkey] = [] - + # Collect edge loops here - edge_loops = [] - + edge_loops = [] + for edkey, ed_adj in edges.items(): if 0 i2a: i1a, i2a = i2a, i1a - - i1b= edgepair_outer_source[iB] - i2b= edgepair_inner_source[iA] - if i1b>i2b: i1b, i2b = i2b, i1b - # print edge_average_lengths - factor = edge_average_lengths[i1a, i2a][0] / edge_average_lengths[i1b, i2b][0] - except: - # Div By Zero? - factor = 1.0 - - uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] +factor * (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) - uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] +factor * (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) - - else: - # same as above but with no factor - uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] + (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) - uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] + (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) - - - if me.active_uv_texture == None: - me.add_uv_texture - - face_act = me.faces.active - if face_act == -1: - operator.report({'ERROR'}, "No active face.") - return - - face_sel= [f for f in me.faces if len(f.verts) == 4 and f.selected] - - face_act_local_index = -1 - for i, f in enumerate(face_sel): - if f.index == face_act: - face_act_local_index = i - break - - if face_act_local_index == -1: - operator.report({'ERROR'}, "Active face not selected.") - return - - - - # Modes - # 0 unsearched - # 1:mapped, use search from this face. - removed!! - # 2:all siblings have been searched. dont search again. - face_modes = [0] * len(face_sel) - face_modes[face_act_local_index] = 1 # extend UV's from this face. - - - # Edge connectivty - edge_faces = {} - for i, f in enumerate(face_sel): - for edkey in f.edge_keys: - try: edge_faces[edkey].append(i) - except: edge_faces[edkey] = [i] - - #SEAM = me.edges.seam - - if EXTEND_MODE == 'LENGTH': - edge_loops = me.edge_loops(face_sel, [ed.key for ed in me.edges if ed.seam] ) - me_verts = me.verts - for loop in edge_loops: - looplen = [0.0] - for ed in loop: - edge_average_lengths[ed] = looplen - looplen[0] += (me_verts[ed[0]].co - me_verts[ed[1]].co).length - looplen[0] = looplen[0] / len(loop) - - - - # remove seams, so we dont map accross seams. - for ed in me.edges: - if ed.seam: - # remove the edge pair if we can - try: del edge_faces[ed.key] - except: pass - # Done finding seams - - - # face connectivity - faces around each face - # only store a list of indicies for each face. - face_faces = [[] for i in range(len(face_sel))] - - for edge_key, faces in edge_faces.items(): - if len(faces) == 2: # Only do edges with 2 face users for now - face_faces[faces[0]].append((faces[1], edge_key)) - face_faces[faces[1]].append((faces[0], edge_key)) - - - # Now we know what face is connected to what other face, map them by connectivity - ok = True - while ok: - ok = False - for i in range(len(face_sel)): - if face_modes[i] == 1: # searchable - for f_sibling, edge_key in face_faces[i]: - if face_modes[f_sibling] == 0: - face_modes[f_sibling] = 1 # mapped and search from. - extend_uvs(face_sel[i], face_sel[f_sibling], edge_key) - face_modes[i] = 1 # we can map from this one now. - ok= True # keep searching - - face_modes[i] = 2 # dont search again - - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT') - else: - me.update() - + me = obj.data + me_verts = me.verts + # script will fail without UVs + if not me.active_uv_texture: + me.add_uv_texture() + + + # Toggle Edit mode + is_editmode = (obj.mode == 'EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT') + + #t = sys.time() + edge_average_lengths = {} + + OTHER_INDEX = 2, 3, 0, 1 + FAST_INDICIES = 0, 2, 1, 3 # order is faster + + def extend_uvs(face_source, face_target, edge_key): + ''' + Takes 2 faces, + Projects its extends its UV coords onto the face next to it. + Both faces must share an edge. + ''' + + def face_edge_vs(vi): + # assume a quad + return [(vi[0], vi[1]), (vi[1], vi[2]), (vi[2], vi[3]), (vi[3], vi[0])] + + vidx_source = face_source.verts + vidx_target = face_target.verts + + faceUVsource = me.active_uv_texture.data[face_source.index] + uvs_source = [faceUVsource.uv1, faceUVsource.uv2, faceUVsource.uv3, faceUVsource.uv4] + + faceUVtarget = me.active_uv_texture.data[face_target.index] + uvs_target = [faceUVtarget.uv1, faceUVtarget.uv2, faceUVtarget.uv3, faceUVtarget.uv4] + + # vertex index is the key, uv is the value + + uvs_vhash_source = dict([(vindex, uvs_source[i]) for i, vindex in enumerate(vidx_source)]) + + uvs_vhash_target = dict([(vindex, uvs_target[i]) for i, vindex in enumerate(vidx_target)]) + + edge_idxs_source = face_edge_vs(vidx_source) + edge_idxs_target = face_edge_vs(vidx_target) + + source_matching_edge = -1 + target_matching_edge = -1 + + edge_key_swap = edge_key[1], edge_key[0] + + try: + source_matching_edge = edge_idxs_source.index(edge_key) + except: + source_matching_edge = edge_idxs_source.index(edge_key_swap) + try: + target_matching_edge = edge_idxs_target.index(edge_key) + except: + target_matching_edge = edge_idxs_target.index(edge_key_swap) + + + edgepair_inner_source = edge_idxs_source[source_matching_edge] + edgepair_inner_target = edge_idxs_target[target_matching_edge] + edgepair_outer_source = edge_idxs_source[OTHER_INDEX[source_matching_edge]] + edgepair_outer_target = edge_idxs_target[OTHER_INDEX[target_matching_edge]] + + if edge_idxs_source[source_matching_edge] == edge_idxs_target[target_matching_edge]: + iA = 0 # Flipped, most common + iB = 1 + else: # The normals of these faces must be different + iA = 1 + iB = 0 + + + # Set the target UV's touching source face, no tricky calc needed, + uvs_vhash_target[edgepair_inner_target[0]][:] = uvs_vhash_source[edgepair_inner_source[iA]] + uvs_vhash_target[edgepair_inner_target[1]][:] = uvs_vhash_source[edgepair_inner_source[iB]] + + + # Set the 2 UV's on the target face that are not touching + # for this we need to do basic expaning on the source faces UV's + if EXTEND_MODE == 'LENGTH': + + try: # divide by zero is possible + ''' + measure the length of each face from the middle of each edge to the opposite + allong the axis we are copying, use this + ''' + i1a = edgepair_outer_target[iB] + i2a = edgepair_inner_target[iA] + if i1a > i2a: + i1a, i2a = i2a, i1a + + i1b = edgepair_outer_source[iB] + i2b = edgepair_inner_source[iA] + if i1b > i2b: + i1b, i2b = i2b, i1b + # print edge_average_lengths + factor = edge_average_lengths[i1a, i2a][0] / edge_average_lengths[i1b, i2b][0] + except: + # Div By Zero? + factor = 1.0 + + uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] + factor * (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) + uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] + factor * (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) + + else: + # same as above but with no factors + uvs_vhash_target[edgepair_outer_target[iB]][:] = uvs_vhash_source[edgepair_inner_source[0]] + (uvs_vhash_source[edgepair_inner_source[0]] - uvs_vhash_source[edgepair_outer_source[1]]) + uvs_vhash_target[edgepair_outer_target[iA]][:] = uvs_vhash_source[edgepair_inner_source[1]] + (uvs_vhash_source[edgepair_inner_source[1]] - uvs_vhash_source[edgepair_outer_source[0]]) + + + if me.active_uv_texture == None: + me.add_uv_texture + + face_act = me.faces.active + if face_act == -1: + operator.report({'ERROR'}, "No active face.") + return + + face_sel = [f for f in me.faces if len(f.verts) == 4 and f.selected] + + face_act_local_index = -1 + for i, f in enumerate(face_sel): + if f.index == face_act: + face_act_local_index = i + break + + if face_act_local_index == -1: + operator.report({'ERROR'}, "Active face not selected.") + return + + + + # Modes + # 0 unsearched + # 1:mapped, use search from this face. - removed!! + # 2:all siblings have been searched. dont search again. + face_modes = [0] * len(face_sel) + face_modes[face_act_local_index] = 1 # extend UV's from this face. + + + # Edge connectivty + edge_faces = {} + for i, f in enumerate(face_sel): + for edkey in f.edge_keys: + try: + edge_faces[edkey].append(i) + except: + edge_faces[edkey] = [i] + + #SEAM = me.edges.seam + + if EXTEND_MODE == 'LENGTH': + edge_loops = me.edge_loops(face_sel, [ed.key for ed in me.edges if ed.seam]) + me_verts = me.verts + for loop in edge_loops: + looplen = [0.0] + for ed in loop: + edge_average_lengths[ed] = looplen + looplen[0] += (me_verts[ed[0]].co - me_verts[ed[1]].co).length + looplen[0] = looplen[0] / len(loop) + + + # remove seams, so we dont map accross seams. + for ed in me.edges: + if ed.seam: + # remove the edge pair if we can + try: + del edge_faces[ed.key] + except: + pass + # Done finding seams + + + # face connectivity - faces around each face + # only store a list of indicies for each face. + face_faces = [[] for i in range(len(face_sel))] + + for edge_key, faces in edge_faces.items(): + if len(faces) == 2: # Only do edges with 2 face users for now + face_faces[faces[0]].append((faces[1], edge_key)) + face_faces[faces[1]].append((faces[0], edge_key)) + + + # Now we know what face is connected to what other face, map them by connectivity + ok = True + while ok: + ok = False + for i in range(len(face_sel)): + if face_modes[i] == 1: # searchable + for f_sibling, edge_key in face_faces[i]: + if face_modes[f_sibling] == 0: + face_modes[f_sibling] = 1 # mapped and search from. + extend_uvs(face_sel[i], face_sel[f_sibling], edge_key) + face_modes[i] = 1 # we can map from this one now. + ok = True # keep searching + + face_modes[i] = 2 # dont search again + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + else: + me.update() def main(context, operator): - obj = context.active_object + obj = context.active_object + + extend(obj, operator, operator.properties.mode) - extend(obj, operator, operator.properties.mode) class FollowActiveQuads(bpy.types.Operator): - '''Follow UVs from active quads along continuous face loops.''' - bl_idname = "uv.follow_active_quads" - bl_label = "Follow Active Quads" + '''Follow UVs from active quads along continuous face loops.''' + bl_idname = "uv.follow_active_quads" + bl_label = "Follow Active Quads" - bl_register = True - bl_undo = True + bl_register = True + bl_undo = True - mode = bpy.props.EnumProperty(items=(("EVEN", "Client", "Space all UVs evently"), ("LENGTH", "Length", "Average space UVs edge length of each loop.")), - name="Edge Length Mode", - description="Method to space UV edge loops", - default="LENGTH") + mode = bpy.props.EnumProperty(items=(("EVEN", "Client", "Space all UVs evently"), ("LENGTH", "Length", "Average space UVs edge length of each loop.")), + name="Edge Length Mode", + description="Method to space UV edge loops", + default="LENGTH") - def poll(self, context): - obj = context.active_object - return (obj is not None and obj.type == 'MESH') + def poll(self, context): + obj = context.active_object + return (obj is not None and obj.type == 'MESH') - def execute(self, context): - main(context, self) - return ('FINISHED',) + def execute(self, context): + main(context, self) + return ('FINISHED',) bpy.ops.add(FollowActiveQuads) @@ -257,5 +269,4 @@ menu_func = (lambda self, context: self.layout.operator(FollowActiveQuads.bl_idn menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) if __name__ == '__main__': - bpy.ops.uv.follow_active_quads() - + bpy.ops.uv.follow_active_quads() diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 21dae9982dc..ed4d02cd919 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -30,14 +30,14 @@ KM_HIERARCHY = [ ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region) ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) ('Grease Pencil', 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region) - + ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation ('Animation_Channels', 'EMPTY', 'WINDOW', []), - + ('Buttons Generic', 'PROPERTIES', 'WINDOW', []), # align context menu ('TimeLine', 'TIMELINE', 'WINDOW', []), ('Outliner', 'OUTLINER', 'WINDOW', []), - + ('View3D', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) ('Pose', 'EMPTY', 'WINDOW', []), ('Object Mode', 'EMPTY', 'WINDOW', []), @@ -60,13 +60,13 @@ KM_HIERARCHY = [ ('GraphEdit Keys', 'GRAPH_EDITOR', 'WINDOW', [ ('GraphEdit Generic', 'GRAPH_EDITOR', 'WINDOW', []) ]), - + ('Image', 'IMAGE_EDITOR', 'WINDOW', [ ('UVEdit', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []) ]), - + ('Node Generic', 'NODE_EDITOR', 'WINDOW', [ ('Node', 'NODE_EDITOR', 'WINDOW', []) ]), @@ -84,8 +84,8 @@ KM_HIERARCHY = [ ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), ('Logic Generic', 'LOGIC_EDITOR', 'WINDOW', []), ('Console', 'CONSOLE', 'WINDOW', []), - - + + ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []), ('Gesture Border', 'EMPTY', 'WINDOW', []), ('Standard Modal Map', 'EMPTY', 'WINDOW', []), @@ -143,9 +143,9 @@ class USERPREF_PT_interface(bpy.types.Panel): userpref = context.user_preferences view = userpref.view - + row = layout.row() - + col = row.column() col.label(text="Display:") @@ -171,7 +171,7 @@ class USERPREF_PT_interface(bpy.types.Panel): row.separator() row.separator() - + col = row.column() col.label(text="View Manipulation:") col.prop(view, "auto_depth") @@ -187,7 +187,7 @@ class USERPREF_PT_interface(bpy.types.Panel): row.separator() row.separator() - + col = row.column() #Toolbox doesn't exist yet #col.label(text="Toolbox:") @@ -379,7 +379,7 @@ class USERPREF_PT_system(bpy.types.Panel): col.separator() col.separator() - + #column = split.column() #colsplit = column.split(percentage=0.85) @@ -394,7 +394,7 @@ class USERPREF_PT_system(bpy.types.Panel): #col.separator() #col.prop(system, "use_textured_fonts") - + column = split.column() colsplit = column.split(percentage=0.85) @@ -426,15 +426,15 @@ class USERPREF_PT_system(bpy.types.Panel): split.label() split.label(text="Colors:") split.label(text="Direction:") - - + + split = column.split(percentage=0.1) - + if lamp0.enabled == True: split.prop(lamp0, "enabled", text="", icon='OUTLINER_OB_LAMP') else: split.prop(lamp0, "enabled", text="", icon='LAMP_DATA') - + col = split.column() col.active = lamp0.enabled row = col.row() @@ -443,19 +443,19 @@ class USERPREF_PT_system(bpy.types.Panel): row = col.row() row.label(text="Specular:") row.prop(lamp0, "specular_color", text="") - + col = split.column() col.active = lamp0.enabled col.prop(lamp0, "direction", text="") - - + + split = column.split(percentage=0.1) - + if lamp1.enabled == True: split.prop(lamp1, "enabled", text="", icon='OUTLINER_OB_LAMP') else: split.prop(lamp1, "enabled", text="", icon='LAMP_DATA') - + col = split.column() col.active = lamp1.enabled row = col.row() @@ -464,19 +464,19 @@ class USERPREF_PT_system(bpy.types.Panel): row = col.row() row.label(text="Specular:") row.prop(lamp1, "specular_color", text="") - + col = split.column() col.active = lamp1.enabled col.prop(lamp1, "direction", text="") - - + + split = column.split(percentage=0.1) - + if lamp2.enabled == True: split.prop(lamp2, "enabled", text="", icon='OUTLINER_OB_LAMP') else: split.prop(lamp2, "enabled", text="", icon='LAMP_DATA') - + col = split.column() col.active = lamp2.enabled row = col.row() @@ -485,16 +485,16 @@ class USERPREF_PT_system(bpy.types.Panel): row = col.row() row.label(text="Specular:") row.prop(lamp2, "specular_color", text="") - + col = split.column() col.active = lamp2.enabled col.prop(lamp2, "direction", text="") - + column.separator() column.separator() column.separator() - + col = column.column() col.prop(system, "use_weight_color_range", text="Custom Weight Paint Range") @@ -502,7 +502,7 @@ class USERPREF_PT_system(bpy.types.Panel): sub.active = system.use_weight_color_range sub.template_color_ramp(system, "weight_color_range", expand=True) - + class USERPREF_PT_theme(bpy.types.Panel): @@ -1253,12 +1253,12 @@ class USERPREF_PT_input(bpy.types.Panel): def poll(self, context): userpref = context.user_preferences return (userpref.active_section == 'INPUT') - + def draw_entry(self, kc, entry, col, level = 0): idname, spaceid, regionid, children = entry - + km = kc.find_keymap(idname, space_type = spaceid, region_type = regionid) - + if km: self.draw_km(kc, km, children, col, level) @@ -1267,89 +1267,89 @@ class USERPREF_PT_input(bpy.types.Panel): if level == 0: level = 0.0001 # Tweak so that a percentage of 0 won't split by half indent = level*indentpx / bpy.context.region.width - + split=layout.split(percentage=indent) col = split.column() col = split.column() return col - + def draw_km(self, kc, km, children, layout, level): km = km.active() - + layout.set_context_pointer("keymap", km) - + col = self.indented_layout(layout, level) - + row = col.row() row.prop(km, "children_expanded", text="", no_bg=True) row.label(text=km.name) - + row.label() row.label() - + if km.user_defined: - row.operator("WM_OT_keymap_restore", text="Restore") + row.operator("wm.keymap_restore", text="Restore") else: - row.operator("WM_OT_keymap_edit", text="Edit") - + row.operator("wm.keymap_edit", text="Edit") + if km.children_expanded: if children: # Put the Parent key map's entries in a 'global' sub-category # equal in hierarchy to the other children categories subcol = self.indented_layout(col, level + 1) subrow = subcol.row() - subrow.prop(km, "items_expanded", text="", no_bg=True) + subrow.prop(km, "items_expanded", text="", no_bg=True) subrow.label(text="%s (Global)" % km.name) else: km.items_expanded = True - + # Key Map items if km.items_expanded: for kmi in km.items: self.draw_kmi(kc, km, kmi, col, level + 1) - + # "Add New" at end of keymap item list col = self.indented_layout(col, level+1) subcol = col.split(percentage=0.2).column() subcol.active = km.user_defined subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN') - + col.separator() - + # Child key maps if children: subcol = col.column() row = subcol.row() - + for entry in children: self.draw_entry(kc, entry, col, level + 1) - - + + def draw_kmi(self, kc, km, kmi, layout, level): layout.set_context_pointer("keyitem", kmi) - + col = self.indented_layout(layout, level) col.enabled = km.user_defined - + if km.user_defined: col = col.column(align=True) box = col.box() else: box = col.column() - + split = box.split(percentage=0.4) - + # header bar row = split.row() row.prop(kmi, "expanded", text="", no_bg=True) row.prop(kmi, "active", text="", no_bg=True) - + if km.modal: row.prop(kmi, "propvalue", text="") else: row.label(text=kmi.name) - + row = split.row() row.prop(kmi, "map_type", text="") if kmi.map_type == 'KEYBOARD': @@ -1364,22 +1364,22 @@ class USERPREF_PT_input(bpy.types.Panel): row.prop(kmi, "type", text="") else: row.label() - + row.operator("wm.keyitem_remove", text="", icon='X') - + # Expanded, additional event settings if kmi.expanded: box = col.box() - + if kmi.map_type not in ('TEXTINPUT', 'TIMER'): split = box.split(percentage=0.4) sub = split.row() - + if km.modal: sub.prop(kmi, "propvalue", text="") else: sub.prop(kmi, "idname", text="") - + sub = split.column() subrow = sub.row(align=True) @@ -1407,13 +1407,13 @@ class USERPREF_PT_input(bpy.types.Panel): for pname in dir(props): if not props.is_property_hidden(pname): flow.prop(props, pname) - - # Modal key maps attached to this operator + + # Modal key maps attached to this operator if not km.modal: kmm = kc.find_keymap_modal(kmi.idname) if kmm: self.draw_km(kc, kmm, None, layout, level + 1) - + def draw_input_prefs(self, inputs, layout): # General settings row = layout.row() @@ -1428,7 +1428,7 @@ class USERPREF_PT_input(bpy.types.Panel): sub.label(text="Select With:") sub.row().prop(inputs, "select_mouse", expand=True) - + sub = col.column() sub.label(text="Double Click:") sub.prop(inputs, "double_click_time", text="Speed") @@ -1464,31 +1464,31 @@ class USERPREF_PT_input(bpy.types.Panel): sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed") row.separator() - + def draw_filtered(self, kc, layout): - + for km in kc.keymaps: filtered_items = [kmi for kmi in km.items if kmi.name.lower().find(kc.filter.lower()) != -1] - + if len(filtered_items) != 0: km = km.active() - + col = layout.column() col.set_context_pointer("keymap", km) row = col.row() row.label(text=km.name, icon="DOT") - + row.label() row.label() - + if km.user_defined: - row.operator("WM_OT_keymap_restore", text="Restore") + row.operator("wm.keymap_restore", text="Restore") else: - row.operator("WM_OT_keymap_edit", text="Edit") - + row.operator("wm.keymap_edit", text="Edit") + for kmi in filtered_items: self.draw_kmi(kc, km, kmi, col, 1) - + def draw_hierarchy(self, defkc, layout): for entry in KM_HIERARCHY: self.draw_entry(defkc, entry, layout) @@ -1502,26 +1502,26 @@ class USERPREF_PT_input(bpy.types.Panel): inputs = userpref.inputs split = layout.split(percentage=0.25) - + # Input settings self.draw_input_prefs(inputs, split) - + # Keymap Settings col = split.column() # kc = wm.active_keyconfig kc = wm.default_keyconfig - + sub = col.column() - + subsplit = sub.split() subcol = subsplit.column() subcol.prop_object(wm, "active_keyconfig", wm, "keyconfigs", text="Configuration:") - + subcol = subsplit.column() subcol.prop(kc, "filter", icon="VIEWZOOM") - + col.separator() - + if kc.filter != "": self.draw_filtered(kc, col) else: @@ -1699,3 +1699,4 @@ bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) bpy.ops.add(WM_OT_keyitem_remove) + -- cgit v1.2.3 From fd18f555103efe8ac148ab763965d5595632da3d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 03:32:33 +0000 Subject: keymap editor New unique ID per keymap item (unique inside their keymap) for default and configuration keymaps. This allows restoring a single user defined kmi to its previous (default or config) values instead of having to restore the whole keymap. The restore item button is disabled for kmi added by the users (they don't have an ID). Also fixes a bug in the rna function for add keymap item (parameter order was incorrect, messing adding back saved configurations). --- release/scripts/ui/space_userpref.py | 21 +++++++- source/blender/makesdna/DNA_windowmanager_types.h | 6 ++- source/blender/makesrna/intern/rna_wm.c | 5 ++ source/blender/makesrna/intern/rna_wm_api.c | 12 ++++- source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_keymap.c | 60 +++++++++++++++++++++++ 6 files changed, 101 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index ed4d02cd919..d50c38f0e20 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1365,6 +1365,7 @@ class USERPREF_PT_input(bpy.types.Panel): else: row.label() + row.operator("wm.keyitem_restore", text="", icon='BACK') row.operator("wm.keyitem_remove", text="", icon='X') # Expanded, additional event settings @@ -1666,7 +1667,25 @@ class WM_OT_keymap_restore(bpy.types.Operator): return ('FINISHED',) +class WM_OT_keyitem_restore(bpy.types.Operator): + "Restore key map item." + bl_idname = "wm.keyitem_restore" + bl_label = "Restore Key Map Item" + def poll(self, context): + kmi = context.keyitem + km = context.keymap + return km and kmi and kmi.id != 0 + + def execute(self, context): + wm = context.manager + kmi = context.keyitem + km = context.keymap + + km.restore_item_to_default(kmi) + + return ('FINISHED',) + class WM_OT_keyitem_add(bpy.types.Operator): "Add key map item." bl_idname = "wm.keyitem_add" @@ -1699,4 +1718,4 @@ bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) bpy.ops.add(WM_OT_keyitem_remove) - +bpy.ops.add(WM_OT_keyitem_restore) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index c17ae1c53c8..9e47a6f1d89 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -262,7 +262,9 @@ typedef struct wmKeyMapItem { short flag; /* runtime */ - short maptype, pad[2]; /* keymap editor */ + short maptype; /* keymap editor */ + short id; /* unique identifier */ + short pad; struct PointerRNA *ptr; /* rna pointer to access properties */ } wmKeyMapItem; @@ -281,7 +283,7 @@ typedef struct wmKeyMap { short regionid; /* see above */ short flag; /* general flags */ - short pad; + short kmi_id; /* last kmi id */ /* runtime */ int (*poll)(struct bContext *); /* verify if enabled in the current context */ diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 7809c3a8c34..09adb642e58 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -944,6 +944,11 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_KeyMapItem_value_itemf"); RNA_def_property_ui_text(prop, "Value", ""); + prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "id"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "id", "ID of the item."); + prop= RNA_def_property(srna, "any", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_KeyMapItem_any_getf", "rna_KeyMapItem_any_setf"); RNA_def_property_ui_text(prop, "Any", "Any modifier keys pressed."); diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 47d15c87596..94a689c9f1c 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -113,7 +113,12 @@ static wmKeyMapItem *rna_KeyMap_add_modal_item(wmKeyMap *km, bContext *C, Report return WM_modalkeymap_add_item(km, type, value, modifier, keymodifier, propvalue); } -static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char *idname, int type, int any, int value, int shift, int ctrl, int alt, int oskey, int keymodifier) +static void rna_keymap_restore_item_to_default(wmKeyMap *km, bContext *C, wmKeyMapItem *kmi) +{ + WM_keymap_restore_item_to_default(C, km, kmi); +} + +static wmKeyMapItem *rna_KeyMap_add_item(wmKeyMap *km, ReportList *reports, char *idname, int type, int value, int any, int shift, int ctrl, int alt, int oskey, int keymodifier) { // wmWindowManager *wm = CTX_wm_manager(C); int modifier= 0; @@ -276,6 +281,11 @@ void RNA_api_keymap(StructRNA *srna) RNA_def_function_return(func, parm); func= RNA_def_function(srna, "restore_to_default", "WM_keymap_restore_to_default"); + + func= RNA_def_function(srna, "restore_item_to_default", "rna_keymap_restore_item_to_default"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT); + parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); } #endif diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 66ede3f6ba6..e90360fde45 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -114,6 +114,7 @@ int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap); wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap); void WM_keymap_restore_to_default(struct wmKeyMap *keymap); void WM_keymap_properties_reset(struct wmKeyMapItem *kmi); +void WM_keymap_restore_item_to_default(struct bContext *C, struct wmKeyMap *keymap, struct wmKeyMapItem *kmi); wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items); wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname); diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index fe5b42a1841..e1f812ee45f 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -201,6 +201,12 @@ wmKeyMapItem *WM_keymap_add_item(wmKeyMap *keymap, char *idname, int type, int v keymap_event_set(kmi, type, val, modifier, keymodifier); keymap_properties_set(kmi); + + if ((keymap->flag & KEYMAP_USER) == 0) { + keymap->kmi_id++; + kmi->id = keymap->kmi_id; + } + return kmi; } @@ -291,6 +297,11 @@ wmKeyMapItem *WM_modalkeymap_add_item(wmKeyMap *km, int type, int val, int modif keymap_event_set(kmi, type, val, modifier, keymodifier); + if ((km->flag & KEYMAP_USER) == 0) { + km->kmi_id++; + kmi->id = km->kmi_id; + } + return kmi; } @@ -545,6 +556,55 @@ wmKeyMap *WM_keymap_copy_to_user(wmKeyMap *keymap) return usermap; } +void WM_keymap_restore_item_to_default(bContext *C, wmKeyMap *keymap, wmKeyMapItem *kmi) +{ + wmWindowManager *wm = CTX_wm_manager(C); + wmKeyConfig *keyconf; + wmKeyMap *km = NULL; + + /* look in user key config */ + keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr); + if(keyconf) { + km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + } + + if (!km) { + /* or from default */ + km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid); + } + + if (km) { + wmKeyMapItem *orig; + + for (orig = km->items.first; orig; orig = orig->next) { + if (orig->id == kmi->id) + break; + } + + if (orig) { + if(strcmp(orig->idname, kmi->idname) != 0) { + BLI_strncpy(kmi->idname, orig->idname, sizeof(kmi->idname)); + + WM_keymap_properties_reset(kmi); + } + kmi->properties= IDP_CopyProperty(orig->properties); + kmi->ptr->data= kmi->properties; + + kmi->propvalue = orig->propvalue; + kmi->type = orig->type; + kmi->val = orig->val; + kmi->shift = orig->shift; + kmi->ctrl = orig->ctrl; + kmi->alt = orig->alt; + kmi->oskey = orig->oskey; + kmi->keymodifier = orig->keymodifier; + kmi->maptype = orig->maptype; + + } + + } +} + void WM_keymap_restore_to_default(wmKeyMap *keymap) { wmKeyMap *usermap; -- cgit v1.2.3 From fac65a3f4d1645fb59ed0b023247535b4b1d6d77 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 17 Dec 2009 04:55:15 +0000 Subject: Durian request: Extend the 'only selected' property in the graph editor to only show curves from selected sequence strips and nodes as well. --- source/blender/blenkernel/BKE_node.h | 1 + source/blender/blenkernel/BKE_sequencer.h | 2 + source/blender/blenkernel/intern/node.c | 11 +++ source/blender/blenkernel/intern/sequencer.c | 15 +++++ source/blender/editors/animation/anim_filter.c | 86 ++++++++++++++++++------ source/blender/editors/space_graph/space_graph.c | 6 ++ source/blender/makesrna/intern/rna_action.c | 2 +- 7 files changed, 102 insertions(+), 21 deletions(-) diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index f9130e24a08..3ed9ab8778e 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -175,6 +175,7 @@ struct bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node, int inte struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock); void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); +struct bNode *nodeFindNodebyName(struct bNodeTree *ntree, const char *name); int nodeFindNode(struct bNodeTree *ntree, struct bNodeSocket *sock, struct bNode **nodep, int *sockindex); struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, struct bNodeSocket *from, struct bNodeSocket *to); diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index a50b03861d7..e6b468e0dc0 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -192,6 +192,8 @@ void seq_update_muting(struct Editing *ed); void clear_scene_in_allseqs(struct Scene *sce); +struct Sequence *get_seq_by_name(struct Scene *scene, const char *name); + struct Sequence *active_seq_get(struct Scene *scene); void active_seq_set(struct Scene *scene, struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index a27c3b6494b..84ef4fb6d1c 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -767,6 +767,17 @@ void nodeGroupSocketUseFlags(bNodeTree *ngroup) } } +/* finds a node based on its name */ +bNode *nodeFindNodebyName(bNodeTree *ntree, const char *name) +{ + bNode *node=NULL; + + for(node= ntree->nodes.first; node; node= node->next) { + if (strcmp(name, node->name) == 0) + break; + } + return node; +} /* finds a node based on given socket */ int nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **nodep, int *sockindex) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index a7b9cf7f74c..e36e8dc49c4 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3575,6 +3575,21 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) } +Sequence *get_seq_by_name(Scene *scene, const char *name) +{ + Sequence *seq=NULL; + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed==NULL) return NULL; + + for (seq=ed->seqbase.first; seq; seq=seq->next) { + if (strcmp(name, seq->name+2) == 0) + break; + } + return seq; +} + + Sequence *active_seq_get(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 544157c4030..fc5e7e1898b 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -68,6 +68,7 @@ #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_windowmanager_types.h" @@ -85,6 +86,8 @@ #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" @@ -754,6 +757,65 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s /* ----------------------------------------- */ +static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id) +{ + if (GS(owner_id->name) == ID_OB) { + Object *ob= (Object *)owner_id; + + /* only consider if F-Curve involves pose.bones */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "bones")) { + bPoseChannel *pchan; + char *bone_name; + + /* get bone-name, and check if this bone is selected */ + bone_name= BLI_getQuotedStr(fcu->rna_path, "bones["); + pchan= get_pose_channel(ob->pose, bone_name); + if (bone_name) MEM_freeN(bone_name); + + /* can only add this F-Curve if it is selected */ + if ((pchan) && (pchan->bone) && (pchan->bone->flag & BONE_SELECTED)==0) + return 1; + } + } + else if (GS(owner_id->name) == ID_SCE) { + Scene *sce = (Scene *)owner_id; + + /* only consider if F-Curve involves sequence_editor.sequences */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "sequences_all")) { + Sequence *seq; + char *seq_name; + + /* get strip name, and check if this strip is selected */ + seq_name= BLI_getQuotedStr(fcu->rna_path, "sequences_all["); + seq = get_seq_by_name(sce, seq_name); + if (seq_name) MEM_freeN(seq_name); + + /* can only add this F-Curve if it is selected */ + if ((seq) && (seq->flag & SELECT)==0) + return 1; + } + } + else if (GS(owner_id->name) == ID_NT) { + bNodeTree *ntree = (bNodeTree *)owner_id; + + /* check for selected nodes */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "nodes")) { + bNode *node; + char *node_name; + + /* get strip name, and check if this strip is selected */ + node_name= BLI_getQuotedStr(fcu->rna_path, "nodes["); + node = nodeFindNodebyName(ntree, node_name); + if (node_name) MEM_freeN(node_name); + + /* can only add this F-Curve if it is selected */ + if ((node) && (node->flag & NODE_SELECT)==0) + return 1; + } + } + return 0; +} + /* find the next F-Curve that is usable for inclusion */ static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bActionGroup *grp, int filter_mode, ID *owner_id) { @@ -771,27 +833,11 @@ static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bAct * carefully checking the entire path * - this will also affect things like Drivers, and also works for Bone Constraints */ - if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) && - ((owner_id) && (GS(owner_id->name) == ID_OB)) ) - { - Object *ob= (Object *)owner_id; - - /* only consider if F-Curve involves pose.bones */ - if ((fcu->rna_path) && strstr(fcu->rna_path, "bones")) { - bPoseChannel *pchan; - char *bone_name; - - /* get bone-name, and check if this bone is selected */ - bone_name= BLI_getQuotedStr(fcu->rna_path, "bones["); - pchan= get_pose_channel(ob->pose, bone_name); - if (bone_name) MEM_freeN(bone_name); - - /* can only add this F-Curve if it is selected */ - if ((pchan) && (pchan->bone) && (pchan->bone->flag & BONE_SELECTED)==0) - continue; - } + if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) && (owner_id) ) { + if (skip_fcurve_selected_data(fcu, owner_id)) + continue; } - + /* only include if visible (Graph Editor check, not channels check) */ if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || (fcu->flag & FCURVE_VISIBLE)) { /* only work with this channel and its subchannels if it is editable */ diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 3023ec89258..f00215e7313 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -387,6 +387,7 @@ 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; } @@ -405,6 +406,11 @@ 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: ED_region_tag_redraw(ar); diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 0568652488d..4cb7080f05e 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -56,7 +56,7 @@ static void rna_def_dopesheet(BlenderRNA *brna) prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL); - RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected Objects."); + RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected objects and data."); RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); -- cgit v1.2.3 From b438dd8668704a01225fb650413aa75f715a2933 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 17 Dec 2009 06:06:30 +0000 Subject: Notifier related tweaks, partially from patch 20370 by Jason Millis --- source/blender/editors/object/object_hook.c | 5 ++- source/blender/editors/object/object_vgroup.c | 2 +- .../blender/editors/space_buttons/space_buttons.c | 51 +++++++++++++++++----- source/blender/editors/space_view3d/space_view3d.c | 1 + source/blender/makesrna/intern/rna_object.c | 8 ++-- source/blender/makesrna/intern/rna_scene.c | 14 +++--- 6 files changed, 57 insertions(+), 24 deletions(-) diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index a2feee54c8c..313ffe79c66 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -491,7 +491,7 @@ static int object_add_hook_selob_exec(bContext *C, wmOperator *op) add_hook_object(scene, obedit, obsel, OBJECT_ADDHOOK_SELOB); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -518,6 +518,7 @@ static int object_add_hook_newob_exec(bContext *C, wmOperator *op) add_hook_object(scene, obedit, NULL, OBJECT_ADDHOOK_NEWOB); WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -559,7 +560,7 @@ static int object_hook_remove_exec(bContext *C, wmOperator *op) modifier_free((ModifierData *)hmd); 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_MODIFIER, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index d9c21a9c9a5..43fabff6793 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1736,7 +1736,7 @@ static int set_active_group_exec(bContext *C, wmOperator *op) ob->actdef= nr+1; 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_GEOM|ND_DATA, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 160343cf940..acc34fce660 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -236,6 +236,17 @@ static void buttons_header_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_restore(C); } +/* draw a certain button set only if properties area is currently + * showing that button set, to reduce unnecessary drawing. */ +static void buttons_area_redraw(ScrArea *sa, short buttons) +{ + SpaceButs *sbuts= sa->spacedata.first; + + /* if the area's current button set is equal to the one to redraw */ + if(sbuts->mainb == buttons) + ED_area_tag_redraw(sa); +} + /* reused! */ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) { @@ -244,38 +255,45 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch(wmn->category) { case NC_SCENE: - /* lazy general redraw tag here, in case more than 1 propertie window is opened - Not all RNA props have a ND_sub notifier(yet) */ - ED_area_tag_redraw(sa); switch(wmn->data) { case ND_FRAME: - case ND_MODE: case ND_RENDER_OPTIONS: - case ND_KEYINGSET: - case ND_LAYER: - ED_area_tag_redraw(sa); + buttons_area_redraw(sa, BCONTEXT_RENDER); break; - case ND_OB_ACTIVE: ED_area_tag_redraw(sa); sbuts->preview= 1; break; + case ND_KEYINGSET: + buttons_area_redraw(sa, BCONTEXT_SCENE); + break; + case ND_MODE: + case ND_LAYER: + default: + ED_area_tag_redraw(sa); + break; } break; case NC_OBJECT: - ED_area_tag_redraw(sa); - /* lazy general redraw tag here, in case more than 1 propertie window is opened - Not all RNA props have a ND_ notifier(yet) */ switch(wmn->data) { case ND_TRANSFORM: + buttons_area_redraw(sa, BCONTEXT_OBJECT); + break; case ND_BONE_ACTIVE: case ND_BONE_SELECT: + buttons_area_redraw(sa, BCONTEXT_BONE); + break; case ND_MODIFIER: if(wmn->action == NA_RENAME) ED_area_tag_redraw(sa); + else + buttons_area_redraw(sa, BCONTEXT_MODIFIER); break; case ND_CONSTRAINT: - ED_area_tag_redraw(sa); + buttons_area_redraw(sa, BCONTEXT_CONSTRAINT); + break; + case ND_PARTICLE_DATA: + buttons_area_redraw(sa, BCONTEXT_PARTICLE); break; case ND_DRAW: case ND_SHADING: @@ -283,6 +301,10 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) /* currently works by redraws... if preview is set, it (re)starts job */ sbuts->preview= 1; break; + default: + /* Not all object RNA props have a ND_ notifier (yet) */ + ED_area_tag_redraw(sa); + break; } break; case NC_GEOM: @@ -304,7 +326,12 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_WORLD: + buttons_area_redraw(sa, BCONTEXT_WORLD); + break; case NC_LAMP: + buttons_area_redraw(sa, BCONTEXT_DATA); + sbuts->preview= 1; + break; case NC_TEXTURE: ED_area_tag_redraw(sa); sbuts->preview= 1; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index e65cb98e665..e362303c3cc 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -452,6 +452,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_LAYER: + case ND_RENDER_OPTIONS: case ND_MODE: ED_region_tag_redraw(ar); break; diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 021fdcefd33..4c22316be19 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1010,6 +1010,7 @@ static void rna_def_vertex_group(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", "Vertex group name."); RNA_def_struct_name_property(srna, prop); + RNA_def_property_update(prop, NC_GEOM|ND_DATA|NA_RENAME, NULL); prop= RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -1678,13 +1679,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_struct_type(prop, "VertexGroup"); RNA_def_property_pointer_funcs(prop, "rna_Object_active_vertex_group_get", "rna_Object_active_vertex_group_set", NULL); RNA_def_property_ui_text(prop, "Active Vertex Group", "Vertex groups of the object."); - RNA_def_property_update(prop, 0, "rna_Object_update_data"); + RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data"); prop= RNA_def_property(srna, "active_vertex_group_index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "actdef"); RNA_def_property_int_funcs(prop, "rna_Object_active_vertex_group_index_get", "rna_Object_active_vertex_group_index_set", "rna_Object_active_vertex_group_index_range"); RNA_def_property_ui_text(prop, "Active Vertex Group Index", "Active index in vertex group array."); - RNA_def_property_update(prop, 0, "rna_Object_update_data"); + RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data"); /* empty */ prop= RNA_def_property(srna, "empty_draw_type", PROP_ENUM, PROP_NONE); @@ -1703,7 +1704,8 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "pass_index", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "index"); RNA_def_property_ui_text(prop, "Pass Index", "Index # for the IndexOB render pass."); - + RNA_def_property_update(prop, NC_OBJECT, NULL); + prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_ui_text(prop, "Color", "Object color and alpha, used when faces have the ObColor mode enabled."); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 51344fdf8b3..e4df352bcc8 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1599,13 +1599,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "xsch"); RNA_def_property_range(prop, 4, 10000); RNA_def_property_ui_text(prop, "Resolution X", "Number of horizontal pixels in the rendered image."); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "resolution_y", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "ysch"); RNA_def_property_range(prop, 4, 10000); RNA_def_property_ui_text(prop, "Resolution Y", "Number of vertical pixels in the rendered image."); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "resolution_percentage", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "size"); @@ -1629,13 +1629,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "xasp"); RNA_def_property_range(prop, 1.0f, 200.0f); RNA_def_property_ui_text(prop, "Pixel Aspect X", "Horizontal aspect ratio - for anamorphic or non-square pixel output"); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "pixel_aspect_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "yasp"); RNA_def_property_range(prop, 1.0f, 200.0f); RNA_def_property_ui_text(prop, "Pixel Aspect Y", "Vertical aspect ratio - for anamorphic or non-square pixel output"); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); /* JPEG and AVI JPEG */ @@ -1992,7 +1992,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "use_border", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", R_BORDER); RNA_def_property_ui_text(prop, "Border", "Render a user-defined border region, within the frame size."); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_OBJECT|ND_DRAW, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "border_min_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "border.xmin"); @@ -2352,6 +2352,7 @@ void RNA_def_scene(BlenderRNA *brna) prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Camera", "Active camera used for rendering the scene."); + RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "set"); @@ -2359,11 +2360,12 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL); RNA_def_property_ui_text(prop, "Set Scene", "Background set scene."); + RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "world", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "World", "World used for rendering the scene."); - RNA_def_property_update(prop, NC_WORLD, NULL); + RNA_def_property_update(prop, NC_SCENE|NC_WORLD, NULL); prop= RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ|PROP_UNIT_LENGTH); RNA_def_property_float_sdna(prop, NULL, "cursor"); -- cgit v1.2.3 From 0cc34bebf42c04911bc0bf3de6035ae33a98c16a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 17 Dec 2009 07:40:43 +0000 Subject: Fix [#20414] select children (shift+g) on an object without children... --- source/blender/editors/object/object_select.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index a0223997cfb..becad003d5c 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -571,6 +571,7 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op) if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); + changed = 1; } CTX_DATA_END; } @@ -581,17 +582,17 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - if(nr==1) changed = select_grouped_children(C, ob, 1); - else if(nr==2) changed = select_grouped_children(C, ob, 0); - else if(nr==3) changed = select_grouped_parent(C); - else if(nr==4) changed = select_grouped_siblings(C, ob); - else if(nr==5) changed = select_grouped_type(C, ob); - else if(nr==6) changed = select_grouped_layer(C, ob); - else if(nr==7) changed = select_grouped_group(C, ob); - else if(nr==8) changed = select_grouped_object_hooks(C, ob); - else if(nr==9) changed = select_grouped_index_object(C, ob); - else if(nr==10) changed = select_grouped_color(C, ob); - else if(nr==11) changed = select_grouped_gameprops(C, ob); + if(nr==1) changed |= select_grouped_children(C, ob, 1); + else if(nr==2) changed |= select_grouped_children(C, ob, 0); + else if(nr==3) changed |= select_grouped_parent(C); + else if(nr==4) changed |= select_grouped_siblings(C, ob); + else if(nr==5) changed |= select_grouped_type(C, ob); + else if(nr==6) changed |= select_grouped_layer(C, ob); + else if(nr==7) changed |= select_grouped_group(C, ob); + else if(nr==8) changed |= select_grouped_object_hooks(C, ob); + else if(nr==9) changed |= select_grouped_index_object(C, ob); + else if(nr==10) changed |= select_grouped_color(C, ob); + else if(nr==11) changed |= select_grouped_gameprops(C, ob); if (changed) { WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); -- cgit v1.2.3 From 42c2cbdc671bef652e9c743590167bc04358063f Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Thu, 17 Dec 2009 09:23:47 +0000 Subject: OSX: populate file dialog system & bookmark defaults paths with the finder's ones Former implementation was to populate the "system" paths with the mounted paths. The issue is that OSX mounts some paths that are of no use such as /home (The home dirs reside in /Users). When compiled with 10.5 SDK, it retrieves the folders you have in the finder and OSX standard open/save dialog. When compiled with older SDKs, it assumes these folders are the default ones (home, Desktop, Documents, Pictures, Music, Movies). --- source/blender/editors/space_file/fsmenu.c | 105 ++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index b45b57c6be9..bd39a10f661 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -284,8 +284,10 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) #else #ifdef __APPLE__ { +#if (MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4) OSErr err=noErr; int i; + char *home; /* loop through all the OS X Volumes, and add them to the SYSTEM section */ for (i=1; err!=nsvErr; i++) @@ -298,8 +300,109 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) continue; FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0); + if (strcmp((char*)path, "/home") && strcmp((char*)path, "/net")) + { /* /net and /home are meaningless on OSX, home folders are stored in /Users */ + fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0); + } + } + + /* As 10.4 doesn't provide proper API to retrieve the favorite places, + assume they are the standard ones + TODO : replace hardcoded paths with proper BLI_get_folder calls */ + home = BLI_gethome(); + if(home) { + BLI_snprintf(line, 256, "%s/", home); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + BLI_snprintf(line, 256, "%s/Desktop/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + } + BLI_snprintf(line, 256, "%s/Documents/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + } + BLI_snprintf(line, 256, "%s/Pictures/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + } + BLI_snprintf(line, 256, "%s/Music/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + } + BLI_snprintf(line, 256, "%s/Movies/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + } + } +#else + /* 10.5 provides ability to retrieve Finder favorite places */ + UInt32 seed; + OSErr err = noErr; + CFArrayRef pathesArray; + LSSharedFileListRef list; + LSSharedFileListItemRef itemRef; + CFIndex i, pathesCount; + CFURLRef cfURL = NULL; + CFStringRef pathString = NULL; + + /* First get mounted volumes */ + list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL); + pathesArray = LSSharedFileListCopySnapshot(list, &seed); + pathesCount = CFArrayGetCount(pathesArray); + + for (i=0; i Date: Thu, 17 Dec 2009 10:01:08 +0000 Subject: Fix [#20397] Saving with F2 on multiple windows layout crashes --- source/blender/editors/screen/screen_edit.c | 4 +++- source/blender/windowmanager/intern/wm_event_system.c | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 9c581527e4c..0c690452d8a 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1487,9 +1487,11 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) oldscreen= win->screen; - /* is there only 1 area? */ + /* nothing wrong with having only 1 area, as far as I can see... + // is there only 1 area? if(oldscreen->areabase.first==oldscreen->areabase.last) return NULL; + */ oldscreen->full = SCREENFULL; BLI_snprintf(newname, sizeof(newname), "%s-%s", oldscreen->id.name+2, "temp"); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 710f9897c94..ccc020827c5 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -997,13 +997,24 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa case EVT_FILESELECT_OPEN: case EVT_FILESELECT_FULL_OPEN: { + ScrArea *sa; + + /* sa can be null when window A is active, but mouse is over window B */ + /* in this case, open file select in original window A */ + if (handler->op_area == NULL) { + bScreen *screen = CTX_wm_screen(C); + sa = (ScrArea *)screen->areabase.first; + } else + sa = handler->op_area; + if(event->val==EVT_FILESELECT_OPEN) - ED_area_newspace(C, handler->op_area, SPACE_FILE); + ED_area_newspace(C, sa, SPACE_FILE); else - ED_screen_full_newspace(C, handler->op_area, SPACE_FILE); + ED_screen_full_newspace(C, sa, SPACE_FILE); /* sets context */ /* settings for filebrowser, sfile is not operator owner but sends events */ - sfile= (SpaceFile*)CTX_wm_space_data(C); + sa = CTX_wm_area(C); + sfile= (SpaceFile*)sa->spacedata.first; sfile->op= handler->op; ED_fileselect_set_params(sfile); -- cgit v1.2.3 From e3a1d044d68000a2e81b662c0cf15bbe17698aa4 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 17 Dec 2009 10:47:55 +0000 Subject: RNA/UI - Reset Settings to Default Values Added a new operator for properties which resets RNA-based settings to their 'default' values, as defined in RNA. This currently only works for floats, ints, enums, and booleans (strings and pointers still need to be implemented). The current extensions to the RNA API that I've made here seem a bit excessive, and can be toned down if necessary. In short, I've just added accessor functions for the default-values of the property definitions. For this to be really useful, many properties in RNA will need to get defaults defined, since the current defaults for quite a few properties tested were less than ideal. --- source/blender/editors/animation/anim_intern.h | 2 - source/blender/editors/animation/anim_ops.c | 2 - source/blender/editors/animation/drivers.c | 43 ---- source/blender/editors/include/UI_interface.h | 3 + .../blender/editors/interface/interface_handlers.c | 9 +- source/blender/editors/interface/interface_ops.c | 234 +++++++++++++++++++++ source/blender/makesrna/RNA_access.h | 13 +- source/blender/makesrna/intern/rna_access.c | 125 ++++++++++- 8 files changed, 380 insertions(+), 51 deletions(-) create mode 100644 source/blender/editors/interface/interface_ops.c diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h index bc4f528d43f..2d363a52248 100644 --- a/source/blender/editors/animation/anim_intern.h +++ b/source/blender/editors/animation/anim_intern.h @@ -79,6 +79,4 @@ void ANIM_OT_driver_button_remove(struct wmOperatorType *ot); void ANIM_OT_copy_driver_button(struct wmOperatorType *ot); void ANIM_OT_paste_driver_button(struct wmOperatorType *ot); -void ANIM_OT_copy_clipboard_button(struct wmOperatorType *ot); - #endif // ANIM_INTERN_H diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 6aa638b1ada..9544bb70855 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -362,8 +362,6 @@ void ED_operatortypes_anim(void) WM_operatortype_append(ANIM_OT_driver_button_remove); WM_operatortype_append(ANIM_OT_copy_driver_button); WM_operatortype_append(ANIM_OT_paste_driver_button); - - WM_operatortype_append(ANIM_OT_copy_clipboard_button); WM_operatortype_append(ANIM_OT_keyingset_button_add); diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index bc7005b82c4..59e52c0d489 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -581,47 +581,4 @@ void ANIM_OT_paste_driver_button (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } - -/* Copy to Clipboard Button Operator ------------------------ */ - -static int copy_clipboard_button_exec(bContext *C, wmOperator *op) -{ - PointerRNA ptr; - PropertyRNA *prop= NULL; - char *path; - short success= 0; - int index; - - /* try to create driver using property retrieved from UI */ - memset(&ptr, 0, sizeof(PointerRNA)); - uiAnimContextProperty(C, &ptr, &prop, &index); - - if (ptr.data && prop) { - path= RNA_path_from_ID_to_property(&ptr, prop); - - if (path) { - WM_clipboard_text_set(path, FALSE); - MEM_freeN(path); - } - } - - /* since we're just copying, we don't really need to do anything else...*/ - return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; -} - -void ANIM_OT_copy_clipboard_button(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Copy Data Path"; - ot->idname= "ANIM_OT_copy_clipboard_button"; - ot->description= "Copy the RNA data path for this property to the clipboard."; - - /* callbacks */ - ot->exec= copy_clipboard_button_exec; - //op->poll= ??? // TODO: need to have some valid property before this can be done - - /* flags */ - ot->flag= OPTYPE_REGISTER; -} - /* ************************************************** */ diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 5b512da55c9..f0e52a13d3f 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -688,6 +688,9 @@ void uiItemMenuF(uiLayout *layout, char *name, int icon, uiMenuCreateFunc func, 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); +/* UI Operators */ +void ui_buttons_operatortypes(void); + /* Helpers for Operators */ void uiAnimContextProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop, int *index); void uiFileBrowseContextProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop); diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index a43506778d8..9604704dde8 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3499,9 +3499,14 @@ static int ui_but_menu(bContext *C, uiBut *but) //Copy Property Value //Paste Property Value - //uiItemO(layout, "Reset to Default Value", 0, "WM_OT_property_value_reset_button"); + if(length) { + uiItemBooleanO(layout, "Reset All to Default Values", 0, "UI_OT_reset_default_button", "all", 1); + uiItemBooleanO(layout, "Reset Single to Default Value", 0, "UI_OT_reset_default_button", "all", 0); + } + else + uiItemO(layout, "Reset to Default Value", 0, "UI_OT_reset_default_button"); - uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button"); + uiItemO(layout, "Copy Data Path", 0, "UI_OT_copy_clipboard_button"); uiItemS(layout); } diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c new file mode 100644 index 00000000000..a5caf1c930b --- /dev/null +++ b/source/blender/editors/interface/interface_ops.c @@ -0,0 +1,234 @@ +/** + * $Id: interface_ops.c 24699 2009-11-20 10:21:31Z aligorith $ + * + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2009 Blender Foundation. + * All rights reserved. + * + * Contributor(s): Blender Foundation, Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include +#include + + +#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" + +#include "BKE_context.h" +#include "BKE_utildefines.h" + +#include "RNA_access.h" +#include "RNA_define.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" + +/* ********************************************************** */ + +/* Copy to Clipboard Button Operator ------------------------ */ + +static int copy_clipboard_button_exec(bContext *C, wmOperator *op) +{ + PointerRNA ptr; + PropertyRNA *prop= NULL; + char *path; + short success= 0; + int index; + + /* try to create driver using property retrieved from UI */ + memset(&ptr, 0, sizeof(PointerRNA)); + uiAnimContextProperty(C, &ptr, &prop, &index); + + if (ptr.data && prop) { + path= RNA_path_from_ID_to_property(&ptr, prop); + + if (path) { + WM_clipboard_text_set(path, FALSE); + MEM_freeN(path); + } + } + + /* since we're just copying, we don't really need to do anything else...*/ + return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; +} + +void UI_OT_copy_clipboard_button(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Data Path"; + ot->idname= "UI_OT_copy_clipboard_button"; + ot->description= "Copy the RNA data path for this property to the clipboard."; + + /* callbacks */ + ot->exec= copy_clipboard_button_exec; + //op->poll= ??? // TODO: need to have some valid property before this can be done + + /* flags */ + ot->flag= OPTYPE_REGISTER; +} + +/* Reset to Default Values Button Operator ------------------------ */ + +static int reset_default_button_exec(bContext *C, wmOperator *op) +{ + PointerRNA ptr; + PropertyRNA *prop= NULL; + short success= 0; + int index, len; + int all = RNA_boolean_get(op->ptr, "all"); + + /* try to reset the nominated setting to its default value */ + memset(&ptr, 0, sizeof(PointerRNA)); + uiAnimContextProperty(C, &ptr, &prop, &index); + + /* if there is a valid property that is editable... */ + if (ptr.data && prop && RNA_property_editable(&ptr, prop)) { + /* get the length of the array to work with */ + len= RNA_property_array_length(&ptr, prop); + + /* get and set the default values as appropriate for the various types */ + switch (RNA_property_type(prop)) { + case PROP_BOOLEAN: + if (len) { + if (all) { + int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - boolean"); + + RNA_property_boolean_get_default_array(&ptr, prop, tmparray); + RNA_property_boolean_set_array(&ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_boolean_get_default_index(&ptr, prop, index); + RNA_property_boolean_set_index(&ptr, prop, index, value); + } + } + else { + int value= RNA_property_boolean_get_default(&ptr, prop); + RNA_property_boolean_set(&ptr, prop, value); + } + break; + case PROP_INT: + if (len) { + if (all) { + int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - int"); + + RNA_property_int_get_default_array(&ptr, prop, tmparray); + RNA_property_int_set_array(&ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_int_get_default_index(&ptr, prop, index); + RNA_property_int_set_index(&ptr, prop, index, value); + } + } + else { + int value= RNA_property_int_get_default(&ptr, prop); + RNA_property_int_set(&ptr, prop, value); + } + break; + case PROP_FLOAT: + if (len) { + if (all) { + float *tmparray= MEM_callocN(sizeof(float)*len, "reset_defaults - float"); + + RNA_property_float_get_default_array(&ptr, prop, tmparray); + RNA_property_float_set_array(&ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + float value= RNA_property_float_get_default_index(&ptr, prop, index); + RNA_property_float_set_index(&ptr, prop, index, value); + } + } + else { + float value= RNA_property_float_get_default(&ptr, prop); + RNA_property_float_set(&ptr, prop, value); + } + break; + case PROP_ENUM: + { + int value= RNA_property_enum_get_default(&ptr, prop); + RNA_property_enum_set(&ptr, prop, value); + } + break; + + //case PROP_POINTER: + //case PROP_STRING: + default: + // FIXME: many of the other types such as strings and pointers need this implemented too! + break; + } + + /* perform updates required for this property */ + RNA_property_update(C, &ptr, prop); + + success= 1; + } + + return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; +} + +void UI_OT_reset_default_button(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reset to Default Value"; + ot->idname= "UI_OT_reset_default_button"; + ot->description= "Copy the RNA data path for this property to the clipboard."; + + /* callbacks */ + ot->exec= reset_default_button_exec; + //op->poll= ??? // TODO: need to have some valid property before this can be done + + /* flags */ + ot->flag= OPTYPE_REGISTER; + + /* properties */ + RNA_def_boolean(ot->srna, "all", 1, "All", "Reset to default values all elements of the array."); +} + +/* ********************************************************* */ +/* Registration */ + +void ui_buttons_operatortypes(void) +{ + WM_operatortype_append(UI_OT_copy_clipboard_button); + WM_operatortype_append(UI_OT_reset_default_button); +} + diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index edbe55ba11d..188c6b2474b 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -660,6 +660,9 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *val int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); +int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value); @@ -667,6 +670,9 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values) int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values); void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value); +int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values); +int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value); @@ -674,17 +680,22 @@ void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *val float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index); void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values); void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value); +float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop); +void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values); +float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); -void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); +// TODO: get default strings... int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value); +int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop); PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value); +// TODO: get default pointers... void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter); void RNA_property_collection_next(CollectionPropertyIterator *iter); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 68499ebd42c..53f5407e521 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -1276,6 +1276,45 @@ void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int inde } } +int RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop) +{ + BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop; + return bprop->defaultvalue; +} + +void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values) +{ + BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop; + + if(prop->arraydimension == 0) + values[0]= bprop->defaultvalue; + else if(bprop->defaultarray) + memcpy(values, bprop->defaultarray, sizeof(int)*prop->totarraylength); + else + memset(values, 0, sizeof(int)*prop->totarraylength); +} + +int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + int tmp[RNA_MAX_ARRAY_LENGTH]; + int len= rna_ensure_property_array_length(ptr, prop); + + if(len <= RNA_MAX_ARRAY_LENGTH) { + RNA_property_boolean_get_default_array(ptr, prop, tmp); + return tmp[index]; + } + else { + int *tmparray, value; + + tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_boolean_get_default_index"); + RNA_property_boolean_get_default_array(ptr, prop, tmparray); + value= tmparray[index]; + MEM_freeN(tmparray); + + return value; + } +} + int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop) { IntPropertyRNA *iprop= (IntPropertyRNA*)prop; @@ -1404,6 +1443,45 @@ void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, i } } +int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop) +{ + IntPropertyRNA *iprop= (IntPropertyRNA*)prop; + return iprop->defaultvalue; +} + +void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values) +{ + IntPropertyRNA *iprop= (IntPropertyRNA*)prop; + + if(prop->arraydimension == 0) + values[0]= iprop->defaultvalue; + else if(iprop->defaultarray) + memcpy(values, iprop->defaultarray, sizeof(int)*prop->totarraylength); + else + memset(values, 0, sizeof(int)*prop->totarraylength); +} + +int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + int tmp[RNA_MAX_ARRAY_LENGTH]; + int len= rna_ensure_property_array_length(ptr, prop); + + if(len <= RNA_MAX_ARRAY_LENGTH) { + RNA_property_int_get_default_array(ptr, prop, tmp); + return tmp[index]; + } + else { + int *tmparray, value; + + tmparray= MEM_callocN(sizeof(int)*len, "RNA_property_int_get_default_index"); + RNA_property_int_get_default_array(ptr, prop, tmparray); + value= tmparray[index]; + MEM_freeN(tmparray); + + return value; + } +} + float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop) { FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop; @@ -1559,6 +1637,45 @@ void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, } } +float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop) +{ + FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop; + return fprop->defaultvalue; +} + +void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values) +{ + FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop; + + if(prop->arraydimension == 0) + values[0]= fprop->defaultvalue; + else if(fprop->defaultarray) + memcpy(values, fprop->defaultarray, sizeof(float)*prop->totarraylength); + else + memset(values, 0, sizeof(float)*prop->totarraylength); +} + +float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + float tmp[RNA_MAX_ARRAY_LENGTH]; + int len= rna_ensure_property_array_length(ptr, prop); + + if(len <= RNA_MAX_ARRAY_LENGTH) { + RNA_property_float_get_default_array(ptr, prop, tmp); + return tmp[index]; + } + else { + float *tmparray, value; + + tmparray= MEM_callocN(sizeof(float)*len, "RNA_property_float_get_default_index"); + RNA_property_float_get_default_array(ptr, prop, tmparray); + value= tmparray[index]; + MEM_freeN(tmparray); + + return value; + } +} + void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value) { StringPropertyRNA *sprop= (StringPropertyRNA*)prop; @@ -1637,7 +1754,6 @@ int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop) return eprop->defaultvalue; } - void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value) { EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop; @@ -1660,6 +1776,13 @@ void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value) } } +int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop) +{ + EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop; + return eprop->defaultvalue; +} + + PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop) { PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop; -- cgit v1.2.3 From 88d72e796a388afe79d4dc8d4aed243a49ed1875 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 11:16:28 +0000 Subject: remove warnings. Sequencer selection for fcurve view didnt work in metastrips. - added RNA_property_string_set to the RNA_access.h - include BKE_animsys.h in pipeline.c for sequencer update, hope these are ok. --- source/blender/blenkernel/BKE_sequencer.h | 2 +- source/blender/blenkernel/intern/scene.c | 2 +- source/blender/blenkernel/intern/sequencer.c | 22 ++++++++++++---------- source/blender/blenloader/intern/readfile.c | 1 - source/blender/editors/animation/anim_filter.c | 5 +++-- source/blender/editors/screen/screen_ops.c | 3 --- .../editors/space_sequencer/sequencer_edit.c | 2 +- source/blender/makesrna/RNA_access.h | 1 + source/blender/render/intern/source/pipeline.c | 3 ++- 9 files changed, 21 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index e6b468e0dc0..34d4b15b437 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -192,7 +192,7 @@ void seq_update_muting(struct Editing *ed); void clear_scene_in_allseqs(struct Scene *sce); -struct Sequence *get_seq_by_name(struct Scene *scene, const char *name); +struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive); struct Sequence *active_seq_get(struct Scene *scene); void active_seq_set(struct Scene *scene, struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 7bfeac037ce..0a2edf82cb0 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -350,7 +350,7 @@ Scene *add_scene(char *name) sce->r.bake_normal_space= R_BAKE_SPACE_TANGENT; sce->r.scemode= R_DOCOMP|R_DOSEQ|R_EXTENSION; - sce->r.stamp= R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_SCENE|R_STAMP_CAMERA; + sce->r.stamp= R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_SCENE|R_STAMP_CAMERA|R_STAMP_RENDERTIME; sce->r.threads= 1; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e36e8dc49c4..5165e570504 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3575,18 +3575,20 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) } -Sequence *get_seq_by_name(Scene *scene, const char *name) +Sequence *get_seq_by_name(ListBase *seqbase, const char *name, int recursive) { - Sequence *seq=NULL; - Editing *ed= seq_give_editing(scene, FALSE); - - if(ed==NULL) return NULL; - - for (seq=ed->seqbase.first; seq; seq=seq->next) { - if (strcmp(name, seq->name+2) == 0) - break; + Sequence *iseq=NULL; + Sequence *rseq=NULL; + + for (iseq=seqbase->first; iseq; iseq=iseq->next) { + if (strcmp(name, iseq->name+2) == 0) + return iseq; + else if(recursive && (iseq->seqbase.first) && (rseq=get_seq_by_name(&iseq->seqbase, name, 1))) { + return rseq; + } } - return seq; + + return NULL; } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 17dfb4f7ce6..2631a1aa219 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4289,7 +4289,6 @@ static void direct_link_scene(FileData *fd, Scene *sce) Editing *ed; Sequence *seq; MetaStack *ms; - TimeMarker *marker; sce->theDag = NULL; sce->dagisvalid = 0; diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index fc5e7e1898b..8ab2de8076e 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -778,16 +778,17 @@ static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id) } } else if (GS(owner_id->name) == ID_SCE) { - Scene *sce = (Scene *)owner_id; + Scene *scene = (Scene *)owner_id; /* only consider if F-Curve involves sequence_editor.sequences */ if ((fcu->rna_path) && strstr(fcu->rna_path, "sequences_all")) { + Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; char *seq_name; /* get strip name, and check if this strip is selected */ seq_name= BLI_getQuotedStr(fcu->rna_path, "sequences_all["); - seq = get_seq_by_name(sce, seq_name); + seq = get_seq_by_name(ed->seqbasep, seq_name, FALSE); if (seq_name) MEM_freeN(seq_name); /* can only add this F-Curve if it is selected */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 7227c13d374..2a9859330af 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2339,9 +2339,6 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) ScreenAnimData *sad= wt->customdata; ScrArea *sa; int sync; -#ifdef DURIAN_CAMERA_SWITCH - Object *camera_orig= scene->camera; -#endif /* sync, don't sync, or follow scene setting */ if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1876062b2b7..844bf51ae32 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2370,7 +2370,7 @@ static EnumPropertyItem view_type_items[] = { /* view_all operator */ static int sequencer_view_toggle_exec(bContext *C, wmOperator *op) { - SpaceSeq *sseq= CTX_wm_space_data(C); + SpaceSeq *sseq= (SpaceSeq *)CTX_wm_space_data(C); sseq->view++; if (sseq->view > SEQ_VIEW_SEQUENCE_PREVIEW) sseq->view = SEQ_VIEW_SEQUENCE; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 188c6b2474b..c2b36ddc915 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -686,6 +686,7 @@ float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, i void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); +void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); // TODO: get default strings... diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 92a8945af2e..f7d3d6f419a 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -50,6 +50,7 @@ #include "BKE_writeavi.h" /* <------ should be replaced once with generic movie module */ #include "BKE_sequencer.h" #include "BKE_pointcache.h" +#include "BKE_animsys.h" /* <------ should this be here?, needed for sequencer update */ #include "MEM_guardedalloc.h" @@ -2441,7 +2442,7 @@ static void do_render_seq(Render * re) if(recurs_depth==0) { /* otherwise sequencer animation isnt updated */ - BKE_animsys_evaluate_all_animation(G.main, frame_to_float(re->scene, cfra)); + BKE_animsys_evaluate_all_animation(G.main, (float)cfra); // XXX, was frame_to_float(re->scene, cfra) } recurs_depth++; -- cgit v1.2.3 From 7a5c190820580342832e61b5cc6145ae50b29c4c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 11:40:12 +0000 Subject: sequencer fcurve anim filtering: sequence strips fcurves in meta's were showing up in the main view. mossing notifier for border select. --- source/blender/editors/animation/anim_filter.c | 2 +- source/blender/editors/space_sequencer/sequencer_select.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 8ab2de8076e..2d9ab636642 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -792,7 +792,7 @@ static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id) if (seq_name) MEM_freeN(seq_name); /* can only add this F-Curve if it is selected */ - if ((seq) && (seq->flag & SELECT)==0) + if (seq==NULL || (seq->flag & SELECT)==0) return 1; } } diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index bd31bc1fb5a..69ce2c7c681 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -872,6 +872,8 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op) } } + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + return OPERATOR_FINISHED; } -- cgit v1.2.3 From 01dd4ea13ad75f4b9df04b56a3cc456d006d8390 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 13:14:29 +0000 Subject: fix for python error --- release/scripts/ui/properties_data_armature.py | 67 +++++++++++++------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 8e824a011b3..3b1ea8cc34c 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -250,44 +250,45 @@ class DATA_PT_iksolver_itasc(DataButtonsPanel): ob = context.object itasc = ob.pose.ik_param - wide_ui = context.region.width > narrowui + wide_ui = (context.region.width > narrowui) row = layout.row() row.prop(ob.pose, "ik_solver") + + if itasc: + layout.prop(itasc, "mode", expand=True) + simulation = (itasc.mode == 'SIMULATION') + if simulation: + layout.label(text="Reiteration:") + layout.prop(itasc, "reiteration", expand=True) - layout.prop(itasc, "mode", expand=True) - simulation = itasc.mode == 'SIMULATION' - if simulation: - layout.label(text="Reiteration:") - layout.prop(itasc, "reiteration", expand=True) - - split = layout.split() - split.active = not simulation or itasc.reiteration != 'NEVER' - col = split.column() - col.prop(itasc, "precision") - - if wide_ui: + split = layout.split() + split.active = not simulation or itasc.reiteration != 'NEVER' col = split.column() - col.prop(itasc, "num_iter") - - - if simulation: - layout.prop(itasc, "auto_step") - row = layout.row() - if itasc.auto_step: - row.prop(itasc, "min_step", text="Min") - row.prop(itasc, "max_step", text="Max") - else: - row.prop(itasc, "num_step") - - layout.prop(itasc, "solver") - if simulation: - layout.prop(itasc, "feedback") - layout.prop(itasc, "max_velocity") - if itasc.solver == 'DLS': - row = layout.row() - row.prop(itasc, "dampmax", text="Damp", slider=True) - row.prop(itasc, "dampeps", text="Eps", slider=True) + col.prop(itasc, "precision") + + if wide_ui: + col = split.column() + col.prop(itasc, "num_iter") + + + if simulation: + layout.prop(itasc, "auto_step") + row = layout.row() + if itasc.auto_step: + row.prop(itasc, "min_step", text="Min") + row.prop(itasc, "max_step", text="Max") + else: + row.prop(itasc, "num_step") + + layout.prop(itasc, "solver") + if simulation: + layout.prop(itasc, "feedback") + layout.prop(itasc, "max_velocity") + if itasc.solver == 'DLS': + row = layout.row() + row.prop(itasc, "dampmax", text="Damp", slider=True) + row.prop(itasc, "dampeps", text="Eps", slider=True) bpy.types.register(DATA_PT_context_arm) bpy.types.register(DATA_PT_skeleton) -- cgit v1.2.3 From 4cddc9e1468a3c329a6380450da6076b9cb06f3e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 13:17:24 +0000 Subject: rescale metarig types to roughly match 1.0 == 1m for body parts, also fix py error with bone UI --- .../scripts/modules/rigify/arm_biped_generic.py | 16 ++++---- release/scripts/modules/rigify/finger_curl.py | 11 +++--- .../scripts/modules/rigify/leg_biped_generic.py | 26 ++++++------- .../modules/rigify/leg_quadruped_generic.py | 20 +++++----- release/scripts/modules/rigify/neck_flex.py | 34 ++++++++--------- release/scripts/modules/rigify/palm_curl.py | 28 +++++++------- release/scripts/modules/rigify/spine_pivot_flex.py | 43 +++++++++++----------- release/scripts/ui/properties_data_bone.py | 9 +---- 8 files changed, 90 insertions(+), 97 deletions(-) diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index dc45ccf8ae8..2363b5366e6 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -34,25 +34,25 @@ def metarig_template(): obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('shoulder') - bone.head[:] = 0.0000, -0.4515, 0.0000 - bone.tail[:] = 1.0000, -0.0794, 0.3540 + bone.head[:] = 0.0000, -0.0425, 0.0000 + bone.tail[:] = 0.0942, -0.0075, 0.0333 bone.roll = -0.2227 bone.connected = False bone = arm.edit_bones.new('upper_arm') - bone.head[:] = 1.1319, -0.0808, -0.0101 - bone.tail[:] = 3.0319, 0.2191, -0.1101 + bone.head[:] = 0.1066, -0.0076, -0.0010 + bone.tail[:] = 0.2855, 0.0206, -0.0104 bone.roll = 1.6152 bone.connected = False bone.parent = arm.edit_bones['shoulder'] bone = arm.edit_bones.new('forearm') - bone.head[:] = 3.0319, 0.2191, -0.1101 - bone.tail[:] = 4.8319, -0.0809, -0.0242 + bone.head[:] = 0.2855, 0.0206, -0.0104 + bone.tail[:] = 0.4550, -0.0076, -0.0023 bone.roll = 1.5153 bone.connected = True bone.parent = arm.edit_bones['upper_arm'] bone = arm.edit_bones.new('hand') - bone.head[:] = 4.8319, -0.0809, -0.0242 - bone.tail[:] = 5.7590, -0.1553, -0.1392 + bone.head[:] = 0.4550, -0.0076, -0.0023 + bone.tail[:] = 0.5423, -0.0146, -0.0131 bone.roll = -3.0083 bone.connected = True bone.parent = arm.edit_bones['forearm'] diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index cec6504a8aa..a4688ee8b5b 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -28,23 +28,24 @@ METARIG_NAMES = "finger_01", "finger_02", "finger_03" def metarig_template(): + # generated by rigify.write_meta_rig bpy.ops.object.mode_set(mode='EDIT') obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('finger.01') bone.head[:] = 0.0000, 0.0000, 0.0000 - bone.tail[:] = 0.8788, -0.4584, -0.1327 + bone.tail[:] = 0.0353, -0.0184, -0.0053 bone.roll = -2.8722 bone.connected = False bone = arm.edit_bones.new('finger.02') - bone.head[:] = 0.8788, -0.4584, -0.1327 - bone.tail[:] = 1.7483, -0.9059, -0.3643 + bone.head[:] = 0.0353, -0.0184, -0.0053 + bone.tail[:] = 0.0702, -0.0364, -0.0146 bone.roll = -2.7099 bone.connected = True bone.parent = arm.edit_bones['finger.01'] bone = arm.edit_bones.new('finger.03') - bone.head[:] = 1.7483, -0.9059, -0.3643 - bone.tail[:] = 2.2478, -1.1483, -0.7408 + bone.head[:] = 0.0702, -0.0364, -0.0146 + bone.tail[:] = 0.0903, -0.0461, -0.0298 bone.roll = -2.1709 bone.connected = True bone.parent = arm.edit_bones['finger.02'] diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 2826a6b7b29..7cb71009596 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -33,36 +33,36 @@ def metarig_template(): arm = obj.data bone = arm.edit_bones.new('hips') bone.head[:] = 0.0000, 0.0000, 0.0000 - bone.tail[:] = 0.0000, 0.0000, 1.0000 + bone.tail[:] = 0.0000, 0.0000, 0.2506 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('thigh') - bone.head[:] = 0.5000, 0.0000, 0.0000 - bone.tail[:] = 0.3000, -0.1000, -1.7000 + bone.head[:] = 0.1253, 0.0000, -0.0000 + bone.tail[:] = 0.0752, -0.0251, -0.4260 bone.roll = 0.1171 bone.connected = False bone.parent = arm.edit_bones['hips'] bone = arm.edit_bones.new('shin') - bone.head[:] = 0.3000, -0.1000, -1.7000 - bone.tail[:] = 0.3000, 0.0000, -3.5000 - bone.roll = -0.0000 + bone.head[:] = 0.0752, -0.0251, -0.4260 + bone.tail[:] = 0.0752, 0.0000, -0.8771 + bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['thigh'] bone = arm.edit_bones.new('foot') - bone.head[:] = 0.3000, 0.0000, -3.5000 - bone.tail[:] = 0.4042, -0.5909, -3.9000 + bone.head[:] = 0.0752, 0.0000, -0.8771 + bone.tail[:] = 0.1013, -0.1481, -0.9773 bone.roll = -0.4662 bone.connected = True bone.parent = arm.edit_bones['shin'] bone = arm.edit_bones.new('toe') - bone.head[:] = 0.4042, -0.5909, -3.9000 - bone.tail[:] = 0.4391, -0.9894, -3.9000 - bone.roll = -3.1416 + bone.head[:] = 0.1013, -0.1481, -0.9773 + bone.tail[:] = 0.1100, -0.2479, -0.9773 + bone.roll = 3.1416 bone.connected = True bone.parent = arm.edit_bones['foot'] bone = arm.edit_bones.new('heel') - bone.head[:] = 0.2600, 0.2000, -4.0000 - bone.tail[:] = 0.3700, -0.4000, -4.0000 + bone.head[:] = 0.0652, 0.0501, -1.0024 + bone.tail[:] = 0.0927, -0.1002, -1.0024 bone.roll = 0.0000 bone.connected = False bone.parent = arm.edit_bones['foot'] diff --git a/release/scripts/modules/rigify/leg_quadruped_generic.py b/release/scripts/modules/rigify/leg_quadruped_generic.py index d197b801142..3f7275e48c0 100644 --- a/release/scripts/modules/rigify/leg_quadruped_generic.py +++ b/release/scripts/modules/rigify/leg_quadruped_generic.py @@ -33,32 +33,32 @@ def metarig_template(): obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('body') - bone.head[:] = -0.3000, -1.0000, 0.0000 - bone.tail[:] = -0.3000, -1.0000, 1.0000 + bone.head[:] = -0.0728, -0.2427, 0.0000 + bone.tail[:] = -0.0728, -0.2427, 0.2427 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('thigh') bone.head[:] = 0.0000, 0.0000, -0.0000 - bone.tail[:] = 0.3351, -0.8690, -1.3903 + bone.tail[:] = 0.0813, -0.2109, -0.3374 bone.roll = -0.4656 bone.connected = False bone.parent = arm.edit_bones['body'] bone = arm.edit_bones.new('shin') - bone.head[:] = 0.3351, -0.8690, -1.3903 - bone.tail[:] = 0.2943, -0.0179, -2.4026 + bone.head[:] = 0.0813, -0.2109, -0.3374 + bone.tail[:] = 0.0714, -0.0043, -0.5830 bone.roll = -0.2024 bone.connected = True bone.parent = arm.edit_bones['thigh'] bone = arm.edit_bones.new('foot') - bone.head[:] = 0.2943, -0.0179, -2.4026 - bone.tail[:] = 0.3830, -0.1995, -3.1531 + bone.head[:] = 0.0714, -0.0043, -0.5830 + bone.tail[:] = 0.0929, -0.0484, -0.7652 bone.roll = -0.3766 bone.connected = True bone.parent = arm.edit_bones['shin'] bone = arm.edit_bones.new('toe') - bone.head[:] = 0.3830, -0.1995, -3.1531 - bone.tail[:] = 0.4724, -0.5126, -3.1531 - bone.roll = 0.0000 + bone.head[:] = 0.0929, -0.0484, -0.7652 + bone.tail[:] = 0.1146, -0.1244, -0.7652 + bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['foot'] diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index be548249433..c52230ed30a 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -33,43 +33,43 @@ def metarig_template(): obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('body') - bone.head[:] = -0.0000, -0.2771, -1.3345 - bone.tail[:] = -0.0000, -0.1708, -0.1984 + bone.head[:] = 0.0000, -0.0276, -0.1328 + bone.tail[:] = 0.0000, -0.0170, -0.0197 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('head') - bone.head[:] = -0.0000, -0.1708, -0.1984 - bone.tail[:] = 0.0000, 0.7292, 1.3604 + bone.head[:] = 0.0000, -0.0170, -0.0197 + bone.tail[:] = 0.0000, 0.0726, 0.1354 bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['body'] bone = arm.edit_bones.new('neck.01') - bone.head[:] = 0.0000, -0.1708, -0.1984 - bone.tail[:] = -0.0000, -0.0994, 0.1470 - bone.roll = -0.0000 + bone.head[:] = 0.0000, -0.0170, -0.0197 + bone.tail[:] = 0.0000, -0.0099, 0.0146 + bone.roll = 0.0000 bone.connected = False bone.parent = arm.edit_bones['head'] bone = arm.edit_bones.new('neck.02') - bone.head[:] = -0.0000, -0.0994, 0.1470 - bone.tail[:] = 0.0000, -0.2428, 0.5162 - bone.roll = -0.0000 + bone.head[:] = 0.0000, -0.0099, 0.0146 + bone.tail[:] = 0.0000, -0.0242, 0.0514 + bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['neck.01'] bone = arm.edit_bones.new('neck.03') - bone.head[:] = 0.0000, -0.2428, 0.5162 - bone.tail[:] = 0.0000, -0.4190, 0.8722 - bone.roll = -0.0000 + bone.head[:] = 0.0000, -0.0242, 0.0514 + bone.tail[:] = 0.0000, -0.0417, 0.0868 + bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['neck.02'] bone = arm.edit_bones.new('neck.04') - bone.head[:] = 0.0000, -0.4190, 0.8722 - bone.tail[:] = 0.0000, -0.5111, 1.1956 + bone.head[:] = 0.0000, -0.0417, 0.0868 + bone.tail[:] = 0.0000, -0.0509, 0.1190 bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['neck.03'] bone = arm.edit_bones.new('neck.05') - bone.head[:] = 0.0000, -0.5111, 1.1956 - bone.tail[:] = 0.0000, -0.5391, 1.6081 + bone.head[:] = 0.0000, -0.0509, 0.1190 + bone.tail[:] = 0.0000, -0.0537, 0.1600 bone.roll = 0.0000 bone.connected = True bone.parent = arm.edit_bones['neck.04'] diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index 8e0a80f98e8..f2ddcca6d59 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -33,43 +33,43 @@ def metarig_template(): obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('hand') - bone.head[:] = 0.0082, -1.2492, 0.0000 - bone.tail[:] = 0.0423, -0.4150, 0.0000 + bone.head[:] = 0.0004, -0.0629, 0.0000 + bone.tail[:] = 0.0021, -0.0209, 0.0000 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('palm.03') - bone.head[:] = 0.0000, 0.0000, -0.0000 - bone.tail[:] = 0.0506, 1.2781, -0.1299 + bone.head[:] = -0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.0025, 0.0644, -0.0065 bone.roll = -3.1396 bone.connected = False bone.parent = arm.edit_bones['hand'] bone = arm.edit_bones.new('palm.02') - bone.head[:] = 0.5000, -0.0000, 0.0000 - bone.tail[:] = 0.6433, 1.2444, -0.1299 + bone.head[:] = 0.0252, -0.0000, 0.0000 + bone.tail[:] = 0.0324, 0.0627, -0.0065 bone.roll = -3.1357 bone.connected = False bone.parent = arm.edit_bones['hand'] bone = arm.edit_bones.new('palm.01') - bone.head[:] = 1.0000, 0.0000, 0.0000 - bone.tail[:] = 1.3961, 1.0084, -0.1299 + bone.head[:] = 0.0504, 0.0000, 0.0000 + bone.tail[:] = 0.0703, 0.0508, -0.0065 bone.roll = -3.1190 bone.connected = False bone.parent = arm.edit_bones['hand'] bone = arm.edit_bones.new('palm.04') - bone.head[:] = -0.5000, 0.0000, -0.0000 - bone.tail[:] = -0.5674, 1.2022, -0.1299 + bone.head[:] = -0.0252, 0.0000, 0.0000 + bone.tail[:] = -0.0286, 0.0606, -0.0065 bone.roll = 3.1386 bone.connected = False bone.parent = arm.edit_bones['hand'] bone = arm.edit_bones.new('palm.05') - bone.head[:] = -1.0000, 0.0000, -0.0000 - bone.tail[:] = -1.3286, 1.0590, -0.1299 + bone.head[:] = -0.0504, 0.0000, 0.0000 + bone.tail[:] = -0.0669, 0.0534, -0.0065 bone.roll = 3.1239 bone.connected = False bone.parent = arm.edit_bones['hand'] bone = arm.edit_bones.new('thumb') - bone.head[:] = 1.3536, -0.2941, 0.0000 - bone.tail[:] = 2.1109, 0.4807, -0.1299 + bone.head[:] = 0.0682, -0.0148, 0.0000 + bone.tail[:] = 0.1063, 0.0242, -0.0065 bone.roll = -3.0929 bone.connected = False bone.parent = arm.edit_bones['hand'] diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 8ae715b14ee..7f74028ddfb 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -33,55 +33,55 @@ def metarig_template(): obj = bpy.context.active_object arm = obj.data bone = arm.edit_bones.new('pelvis') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.2559, -0.1327 + bone.head[:] = 0.0000, -0.0306, 0.1039 + bone.tail[:] = 0.0000, -0.0306, -0.0159 bone.roll = 0.0000 bone.connected = False bone = arm.edit_bones.new('rib_cage') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.2559, 1.8673 + bone.head[:] = 0.0000, -0.0306, 0.1039 + bone.tail[:] = 0.0000, -0.0306, 0.2236 bone.roll = -0.0000 bone.connected = False bone.parent = arm.edit_bones['pelvis'] bone = arm.edit_bones.new('spine.01') - bone.head[:] = -0.0000, -0.0000, 0.0000 - bone.tail[:] = -0.0000, -0.2559, 0.8673 + bone.head[:] = 0.0000, 0.0000, -0.0000 + bone.tail[:] = 0.0000, -0.0306, 0.1039 bone.roll = -0.0000 bone.connected = False bone.parent = arm.edit_bones['rib_cage'] bone = arm.edit_bones.new('spine.02') - bone.head[:] = -0.0000, -0.2559, 0.8673 - bone.tail[:] = -0.0000, -0.3321, 1.7080 + bone.head[:] = 0.0000, -0.0306, 0.1039 + bone.tail[:] = -0.0000, -0.0398, 0.2045 bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.01'] bone = arm.edit_bones.new('spine.03') - bone.head[:] = -0.0000, -0.3321, 1.7080 - bone.tail[:] = -0.0000, -0.0787, 2.4160 - bone.roll = 0.0000 + bone.head[:] = -0.0000, -0.0398, 0.2045 + bone.tail[:] = -0.0000, -0.0094, 0.2893 + bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.02'] bone = arm.edit_bones.new('spine.04') - bone.head[:] = -0.0000, -0.0787, 2.4160 - bone.tail[:] = -0.0000, 0.2797, 3.0016 - bone.roll = 0.0000 + bone.head[:] = -0.0000, -0.0094, 0.2893 + bone.tail[:] = -0.0000, 0.0335, 0.3595 + bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.03'] bone = arm.edit_bones.new('spine.05') - bone.head[:] = -0.0000, 0.2797, 3.0016 - bone.tail[:] = -0.0000, 0.4633, 3.6135 - bone.roll = 0.0000 + bone.head[:] = -0.0000, 0.0335, 0.3595 + bone.tail[:] = -0.0000, 0.0555, 0.4327 + bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.04'] bone = arm.edit_bones.new('spine.06') - bone.head[:] = -0.0000, 0.4633, 3.6135 - bone.tail[:] = -0.0000, 0.3671, 4.3477 + bone.head[:] = -0.0000, 0.0555, 0.4327 + bone.tail[:] = -0.0000, 0.0440, 0.5207 bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.05'] bone = arm.edit_bones.new('spine.07') - bone.head[:] = -0.0000, 0.3671, 4.3477 - bone.tail[:] = -0.0000, 0.0175, 5.0033 + bone.head[:] = -0.0000, 0.0440, 0.5207 + bone.tail[:] = -0.0000, 0.0021, 0.5992 bone.roll = -0.0000 bone.connected = True bone.parent = arm.edit_bones['spine.06'] @@ -90,7 +90,6 @@ def metarig_template(): pbone = obj.pose.bones['rib_cage'] pbone['type'] = 'spine_pivot_flex' - def metarig_definition(obj, orig_bone_name): ''' The bone given is the second in a chain. diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 99561a026e3..3369adab5a8 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -232,14 +232,7 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel): bl_default_closed = True def poll(self, context): - ob = context.object - bone = context.bone - pchan = ob.pose.bones[bone.name] - - if ob and bone and pchan: - return True - - return False + return context.active_pose_bone def draw(self, context): layout = self.layout -- cgit v1.2.3 From 4b3c6b79966e6aa94e863386082065a3361b0ee5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 13:27:52 +0000 Subject: selecting a pose bone didnt redraw constraints --- source/blender/editors/space_buttons/space_buttons.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index acc34fce660..f47a8792145 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -282,6 +282,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_BONE_ACTIVE: case ND_BONE_SELECT: buttons_area_redraw(sa, BCONTEXT_BONE); + buttons_area_redraw(sa, BCONTEXT_BONE_CONSTRAINT); break; case ND_MODIFIER: if(wmn->action == NA_RENAME) -- cgit v1.2.3 From 68ff5a87ecc7584408a09cec02aa4e6220b4d21e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 17 Dec 2009 14:38:30 +0000 Subject: Fix #20374: Limit selection to visible would not work anymore after trying to select once but not selecting correctly, due the need backbuffer flag not being reset correctly in the 3d view. --- source/blender/blenloader/intern/readfile.c | 1 + source/blender/editors/mesh/editface.c | 2 +- source/blender/editors/space_view3d/view3d_draw.c | 27 +++++------------------ source/blender/makesdna/DNA_view3d_types.h | 2 +- source/blender/windowmanager/intern/wm_draw.c | 10 +++++++++ 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 2631a1aa219..232af442a85 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5059,6 +5059,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc) if (sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; v3d->bgpic= newdataadr(fd, v3d->bgpic); + v3d->flag |= V3D_INVALID_BACKBUF; if(v3d->bgpic) v3d->bgpic->iuser.ok= 1; if(v3d->gpd) { diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index d7df018acd7..0e1ac1aa7e8 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -127,7 +127,7 @@ int facesel_face_pick(struct bContext *C, Mesh *me, short *mval, unsigned int *i if (!me || me->totface==0) return 0; -// XXX if (v3d->flag & V3D_NEEDBACKBUFDRAW) { +// XXX if (v3d->flag & V3D_INVALID_BACKBUF) { // XXX drawview.c! check_backbuf(); // XXX persp(PERSP_VIEW); // XXX } diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 19667beaaf9..a680a3bd40d 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1113,11 +1113,11 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) else if((base && (base->object->mode & OB_MODE_PARTICLE_EDIT)) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)); else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)); else { - v3d->flag &= ~V3D_NEEDBACKBUFDRAW; + v3d->flag &= ~V3D_INVALID_BACKBUF; return; } - if( !(v3d->flag & V3D_NEEDBACKBUFDRAW) ) return; + if( !(v3d->flag & V3D_INVALID_BACKBUF) ) return; // if(test) { // if(qtest()) { @@ -1162,7 +1162,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) draw_object_backbufsel(scene, v3d, rv3d, base->object); } - v3d->flag &= ~V3D_NEEDBACKBUFDRAW; + v3d->flag &= ~V3D_INVALID_BACKBUF; G.f &= ~G_BACKBUFSEL; v3d->zbuf= FALSE; @@ -1183,7 +1183,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) void view3d_validate_backbuf(ViewContext *vc) { - if(vc->v3d->flag & V3D_NEEDBACKBUFDRAW) + if(vc->v3d->flag & V3D_INVALID_BACKBUF) backdrawview3d(vc->scene, vc->ar, vc->v3d); } @@ -2188,24 +2188,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) /* XXX here was the blockhandlers for floating panels */ - if(ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)) { - v3d->flag |= V3D_NEEDBACKBUFDRAW; - // XXX addafterqueue(ar->win, BACKBUFDRAW, 1); - } - - if((ob && ob->mode & OB_MODE_PARTICLE_EDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) { - v3d->flag |= V3D_NEEDBACKBUFDRAW; - // XXX addafterqueue(ar->win, BACKBUFDRAW, 1); - } - - // test for backbuf select - if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) { - - v3d->flag |= V3D_NEEDBACKBUFDRAW; - // XXX if(afterqtest(ar->win, BACKBUFDRAW)==0) { - // addafterqueue(ar->win, BACKBUFDRAW, 1); - //} - } + v3d->flag |= V3D_INVALID_BACKBUF; } diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index d8a8ec063d0..5326c17688d 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -190,7 +190,7 @@ typedef struct View3D { #define V3D_DISPIMAGE 1 #define V3D_DISPBGPIC 2 #define V3D_HIDE_HELPLINES 4 -#define V3D_NEEDBACKBUFDRAW 8 +#define V3D_INVALID_BACKBUF 8 #define V3D_EDITMODE 16 #define V3D_VERTEXPAINT 32 #define V3D_FACESELECT 64 diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 3335efeb166..b9e6ca2d281 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -34,6 +34,7 @@ #include "DNA_screen_types.h" #include "DNA_windowmanager_types.h" #include "DNA_userdef_types.h" +#include "DNA_view3d_types.h" #include "MEM_guardedalloc.h" @@ -90,6 +91,12 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) } } +static void wm_area_mark_invalid_backbuf(ScrArea *sa) +{ + if(sa->spacetype == SPACE_VIEW3D) + ((View3D*)sa->spacedata.first)->flag |= V3D_INVALID_BACKBUF; +} + /********************** draw all **************************/ /* - reference method, draw all each time */ @@ -113,6 +120,7 @@ static void wm_method_draw_full(bContext *C, wmWindow *win) } } + wm_area_mark_invalid_backbuf(sa); CTX_wm_area_set(C, NULL); } @@ -230,6 +238,7 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win) } } + wm_area_mark_invalid_backbuf(sa); CTX_wm_area_set(C, NULL); } @@ -553,6 +562,7 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win) } } + wm_area_mark_invalid_backbuf(sa); CTX_wm_area_set(C, NULL); } -- cgit v1.2.3 From 51fdfa0de97bd3825161e245338c76711578f4cf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 14:45:47 +0000 Subject: sequencer clipboard note: for inter-scene copying this uses a hack because Colin needs it because half his scene was scrambled by blender. --- release/scripts/ui/space_sequencer.py | 4 ++ source/blender/blenkernel/BKE_sequencer.h | 1 + source/blender/blenkernel/intern/sequencer.c | 16 +++++- .../editors/space_sequencer/sequencer_edit.c | 63 ++++++++++++++++++++++ .../editors/space_sequencer/sequencer_intern.h | 3 ++ .../editors/space_sequencer/sequencer_ops.c | 3 ++ source/blender/makesdna/DNA_sequence_types.h | 1 + 7 files changed, 90 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 7a51f1aa6d7..8edadb96de3 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -56,6 +56,10 @@ class SEQUENCER_HT_header(bpy.types.Header): layout.prop(st, "display_mode", text="") if (st.view_type == 'SEQUENCER'): + row = layout.row(align=True) + row.operator("sequencer.copy", text="", icon='COPYDOWN') + row.operator("sequencer.paste", text="", icon='PASTEDOWN') + layout.separator() layout.operator("sequencer.refresh_all") elif (st.view_type == 'SEQUENCER_PREVIEW'): diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 34d4b15b437..a101a096fe8 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -141,6 +141,7 @@ void printf_strip(struct Sequence *seq); void seq_free_sequence(struct Scene *scene, struct Sequence *seq); void seq_free_strip(struct Strip *strip); void seq_free_editing(struct Scene *scene); +void seq_free_clipboard(struct Scene *scene); struct Editing *seq_give_editing(struct Scene *scene, int alloc); char *give_seqname(struct Sequence *seq); struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 5165e570504..41e51885bfc 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -232,11 +232,23 @@ Editing *seq_give_editing(Scene *scene, int alloc) return scene->ed; } +void seq_free_clipboard(Scene *scene) +{ + Editing *ed = scene->ed; + Sequence *seq, *nseq; + + for(seq= ed->seqbase_clipboard.first; seq; seq= nseq) { + nseq= seq->next; + seq_free_sequence(scene, seq); + } + ed->seqbase_clipboard.first= ed->seqbase_clipboard.last= NULL; +} + void seq_free_editing(Scene *scene) { Editing *ed = scene->ed; MetaStack *ms; - Sequence *seq; + Sequence *seq, *nseq; if(ed==NULL) return; @@ -246,6 +258,8 @@ void seq_free_editing(Scene *scene) } SEQ_END + seq_free_clipboard(scene); + while((ms= ed->metastack.first)) { BLI_remlink(&ed->metastack, ms); MEM_freeN(ms); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 844bf51ae32..8c228e9ca74 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2746,3 +2746,66 @@ void SEQUENCER_OT_rendersize(wmOperatorType *ot) /* properties */ } +static void *_copy_scene= NULL; // XXX - FIXME +static int sequencer_copy_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed==NULL) + return OPERATOR_CANCELLED; + + seq_free_clipboard(scene); + recurs_dupli_seq(scene, ed->seqbasep, &ed->seqbase_clipboard); + + _copy_scene = scene; + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy"; + ot->idname= "SEQUENCER_OT_copy"; + ot->description=""; + + /* api callbacks */ + ot->exec= sequencer_copy_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + +static int sequencer_paste_exec(bContext *C, wmOperator *op) +{ + int retval = OPERATOR_CANCELLED; + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */ + Editing *ed_from= seq_give_editing((Scene *)_copy_scene, TRUE); /* create if needed */ + + + addlisttolist(ed->seqbasep, &ed_from->seqbase_clipboard); + ed_from->seqbase_clipboard.first= ed_from->seqbase_clipboard.last= NULL; // XXX - could duplicate these to use the clip + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_paste(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Paste"; + ot->idname= "SEQUENCER_OT_paste"; + ot->description=""; + + /* api callbacks */ + ot->exec= sequencer_paste_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index 1cbc6e1bd1d..cf598bfb613 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -98,6 +98,9 @@ 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_copy(struct wmOperatorType *ot); +void SEQUENCER_OT_paste(struct wmOperatorType *ot); + /* preview specific operators */ void SEQUENCER_OT_view_all_preview(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 941df4d2e36..76c7b37f59e 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -106,6 +106,9 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_image_strip_add); WM_operatortype_append(SEQUENCER_OT_effect_strip_add); WM_operatortype_append(SEQUENCER_OT_properties); + + WM_operatortype_append(SEQUENCER_OT_copy); + WM_operatortype_append(SEQUENCER_OT_paste); } diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 0b45d62e347..329b5ef6d34 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -186,6 +186,7 @@ typedef struct Editing { ListBase *seqbasep; /* pointer to the current list of seq's being edited (can be within a meta strip) */ ListBase seqbase; /* pointer to the top-most seq's */ ListBase metastack; + ListBase seqbase_clipboard; /* optionally store a copy */ /* Context vars, used to be static */ Sequence *act_seq; -- cgit v1.2.3 From 8d63126b64b4adec9c9c19d230f64a6010b26b2f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 17 Dec 2009 15:39:36 +0000 Subject: Fix #19713: Lasso select + occlude background geometry does not work. --- source/blender/editors/space_view3d/view3d_select.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index a1135bf6986..e7c8070b7c5 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -461,8 +461,10 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves data.done = 0; data.pass = 0; - bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax); + /* workaround: init mats first, EM_mask_init_backbuf_border can change + view matrix to pixel space, breaking edge select with backbuf .. */ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ + bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax); if(ts->selectmode & SCE_SELECT_VERTEX) { if (bbsel) { @@ -1352,8 +1354,8 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exte EM_deselect_all(vc->em); } - bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax); ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ + bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax); if(ts->selectmode & SCE_SELECT_VERTEX) { if (bbsel) { -- cgit v1.2.3 From 4271a40ee7a53029f04389234278b7f64d834a11 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 16:28:45 +0000 Subject: - sequencer clipboard now stored globally (not in the scene, makes pasting into other scenes nicer) - multiple pastes after copying - clear the sound handle when copying (was crashing) - allow seq freeing without a scene (assumes seq strip isnt active and sound handle isnt set) - free clipboard sequences on exit - paste sequence strips using the relative playhead location from when they were copied. TODO - check scene pointers on paste - detect overlaps after paste --- source/blender/blenkernel/BKE_sequencer.h | 5 +- source/blender/blenkernel/intern/sequencer.c | 30 ++++---- .../editors/space_sequencer/sequencer_edit.c | 82 ++++++++++++++++++---- .../editors/space_sequencer/sequencer_ops.c | 3 + source/blender/makesdna/DNA_sequence_types.h | 1 - source/blender/windowmanager/intern/wm_init_exit.c | 3 + 6 files changed, 93 insertions(+), 31 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index a101a096fe8..22f9278aa38 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -141,7 +141,7 @@ void printf_strip(struct Sequence *seq); void seq_free_sequence(struct Scene *scene, struct Sequence *seq); void seq_free_strip(struct Strip *strip); void seq_free_editing(struct Scene *scene); -void seq_free_clipboard(struct Scene *scene); +void seq_free_clipboard(void); struct Editing *seq_give_editing(struct Scene *scene, int alloc); char *give_seqname(struct Sequence *seq); struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); @@ -230,3 +230,6 @@ struct Sequence *sequencer_add_image_strip(struct bContext *C, ListBase *seqbase struct Sequence *sequencer_add_sound_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load); +/* copy/paste */ +extern ListBase seqbase_clipboard; +extern int seqbase_clipboard_frame; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 41e51885bfc..8b59c2982e6 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -77,6 +77,8 @@ static int seqrecty= 0; /* **** XXX ******** */ +ListBase seqbase_clipboard; +int seqbase_clipboard_frame; void printf_strip(Sequence *seq) { @@ -200,23 +202,26 @@ void seq_free_strip(Strip *strip) void seq_free_sequence(Scene *scene, Sequence *seq) { - Editing *ed = scene->ed; - if(seq->strip) seq_free_strip(seq->strip); if(seq->anim) IMB_free_anim(seq->anim); - if(seq->sound_handle) - sound_delete_handle(scene, seq->sound_handle); - if (seq->type & SEQ_EFFECT) { struct SeqEffectHandle sh = get_sequence_effect(seq); sh.free(seq); } - if (ed->act_seq==seq) - ed->act_seq= NULL; + /* clipboard has no scene and will never have a sound handle or be active */ + if(scene) { + Editing *ed = scene->ed; + + if (ed->act_seq==seq) + ed->act_seq= NULL; + + if(seq->sound_handle) + sound_delete_handle(scene, seq->sound_handle); + } MEM_freeN(seq); } @@ -232,16 +237,15 @@ Editing *seq_give_editing(Scene *scene, int alloc) return scene->ed; } -void seq_free_clipboard(Scene *scene) +void seq_free_clipboard(void) { - Editing *ed = scene->ed; Sequence *seq, *nseq; - for(seq= ed->seqbase_clipboard.first; seq; seq= nseq) { + for(seq= seqbase_clipboard.first; seq; seq= nseq) { nseq= seq->next; - seq_free_sequence(scene, seq); + seq_free_sequence(NULL, seq); } - ed->seqbase_clipboard.first= ed->seqbase_clipboard.last= NULL; + seqbase_clipboard.first= seqbase_clipboard.last= NULL; } void seq_free_editing(Scene *scene) @@ -258,8 +262,6 @@ void seq_free_editing(Scene *scene) } SEQ_END - seq_free_clipboard(scene); - while((ms= ed->metastack.first)) { BLI_remlink(&ed->metastack, ms); MEM_freeN(ms); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 8c228e9ca74..dda5860900b 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -954,7 +954,7 @@ static Sequence * deep_dupli_seq(struct Scene *scene, Sequence * seq) } -static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new) +static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_context) { Sequence *seq; Sequence *seqn = 0; @@ -965,15 +965,19 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new) if(seq->flag & SELECT) { seqn = dupli_seq(scene, seq); if (seqn) { /*should never fail */ - seq->flag &= SEQ_DESEL; - seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK); + 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); + recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase, do_context); - if (seq == last_seq) { - active_seq_set(scene, seqn); + if(do_context) { + if (seq == last_seq) { + active_seq_set(scene, seqn); + } } } } @@ -1801,7 +1805,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) if(ed==NULL) return OPERATOR_CANCELLED; - recurs_dupli_seq(scene, ed->seqbasep, &new); + recurs_dupli_seq(scene, ed->seqbasep, &new, TRUE); addlisttolist(ed->seqbasep, &new); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); @@ -2746,19 +2750,39 @@ void SEQUENCER_OT_rendersize(wmOperatorType *ot) /* properties */ } -static void *_copy_scene= NULL; // XXX - FIXME +static void seq_del_sound(Scene *scene, Sequence *seq) +{ + if(seq->type == SEQ_META) { + Sequence *iseq; + for(iseq= seq->seqbase.first; iseq; iseq= iseq->next) { + seq_del_sound(scene, iseq); + } + } + else if(seq->sound_handle) + sound_delete_handle(scene, seq->sound_handle); + +} + +/* TODO, validate scenes */ static int sequencer_copy_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq, *seq_act; if(ed==NULL) return OPERATOR_CANCELLED; - seq_free_clipboard(scene); - recurs_dupli_seq(scene, ed->seqbasep, &ed->seqbase_clipboard); + seq_free_clipboard(); + + recurs_dupli_seq(scene, ed->seqbasep, &seqbase_clipboard, FALSE); + seqbase_clipboard_frame= scene->r.cfra; + + /* Need to remove anything that references the current scene */ + for(seq= seqbase_clipboard.first; seq; seq= seq->next) { + seq_del_sound(scene, seq); + } - _copy_scene = scene; return OPERATOR_FINISHED; } @@ -2779,16 +2803,44 @@ void SEQUENCER_OT_copy(wmOperatorType *ot) /* properties */ } +static void seq_offset(Sequence *seq, int ofs) +{ + if(seq->type == SEQ_META) { + Sequence *iseq; + for(iseq= seq->seqbase.first; iseq; iseq= iseq->next) { + seq_offset(iseq, ofs); + } + } + else { + seq->start += ofs; + } + + calc_sequence_disp(seq); +} + static int sequencer_paste_exec(bContext *C, wmOperator *op) { - int retval = OPERATOR_CANCELLED; Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */ - Editing *ed_from= seq_give_editing((Scene *)_copy_scene, TRUE); /* create if needed */ + ListBase new = {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); - addlisttolist(ed->seqbasep, &ed_from->seqbase_clipboard); - ed_from->seqbase_clipboard.first= ed_from->seqbase_clipboard.last= NULL; // XXX - could duplicate these to use the clip + /* transform pasted strips before adding */ + if(ofs) { + for(iseq= new.first; iseq; iseq= iseq->next) { + seq_offset(iseq, ofs); + } + } + + addlisttolist(ed->seqbasep, &new); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 76c7b37f59e..7e7b45e623f 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -146,6 +146,9 @@ void sequencer_keymap(wmKeyConfig *keyconf) 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_copy", CKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_images_separate", YKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_meta_toggle", TABKEY, KM_PRESS, 0, 0); diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 329b5ef6d34..0b45d62e347 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -186,7 +186,6 @@ typedef struct Editing { ListBase *seqbasep; /* pointer to the current list of seq's being edited (can be within a meta strip) */ ListBase seqbase; /* pointer to the top-most seq's */ ListBase metastack; - ListBase seqbase_clipboard; /* optionally store a copy */ /* Context vars, used to be static */ Sequence *act_seq; diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 09eecf2f425..6997bcaf309 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -53,6 +53,7 @@ #include "BKE_report.h" #include "BKE_utildefines.h" #include "BKE_packedFile.h" +#include "BKE_sequencer.h" /* free seq clipboard */ #include "BLI_blenlib.h" @@ -234,6 +235,8 @@ void WM_exit(bContext *C) if(C && CTX_wm_manager(C)) wm_free_reports(C); /* before free_blender! - since the ListBases get freed there */ + + seq_free_clipboard(); /* sequencer.c */ free_blender(); /* blender.c, does entire library and spacetypes */ // free_matcopybuf(); -- cgit v1.2.3 From 1975ee5eecc17514b441fb9ac921063c38fcabc4 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Thu, 17 Dec 2009 17:05:28 +0000 Subject: OSX vs OpenMP : implement workaround to fix crashes when using mop from a background thread Fix# 20043 & 20392 The issue is that OSX lib does not implement TLS (Thread Local Storage), so libgomp uses pthread functions to read/write thread specific vars. But this implementation is currently (gcc 4.2) buggy : the write function is called only at lib start (in main thread), and the var is undefined for background thread. The workaround is to perform this gomp_tls_key var write at beginning of background threads that use openMP. (Currently: render & fluidsim) --- intern/elbeem/CMakeLists.txt | 4 ++-- intern/elbeem/SConscript | 3 +-- source/blender/editors/CMakeLists.txt | 4 ++++ source/blender/editors/physics/SConscript | 9 ++++++++- source/blender/editors/physics/physics_fluid.c | 18 ++++++++++++++++++ source/blender/editors/screen/SConscript | 4 ++++ source/blender/editors/screen/screen_ops.c | 16 ++++++++++++++++ 7 files changed, 53 insertions(+), 5 deletions(-) diff --git a/intern/elbeem/CMakeLists.txt b/intern/elbeem/CMakeLists.txt index b59554e5709..e541d334086 100644 --- a/intern/elbeem/CMakeLists.txt +++ b/intern/elbeem/CMakeLists.txt @@ -33,9 +33,9 @@ IF(WINDOWS) ADD_DEFINITIONS(-DUSE_MSVC6FIXES) ENDIF(WINDOWS) -IF(WITH_OPENMP AND NOT APPLE) +IF(WITH_OPENMP) ADD_DEFINITIONS(-DPARALLEL=1) -ENDIF(WITH_OPENMP AND NOT APPLE) +ENDIF(WITH_OPENMP) BLENDERLIB_NOLIST(bf_elbeem "${SRC}" "${INC}") #, libtype='blender', priority=0 ) diff --git a/intern/elbeem/SConscript b/intern/elbeem/SConscript index ef411d0eb03..0900ab1db5c 100644 --- a/intern/elbeem/SConscript +++ b/intern/elbeem/SConscript @@ -8,8 +8,7 @@ sources = env.Glob('intern/*.cpp') defs = 'NOGUI ELBEEM_BLENDER=1' if env['WITH_BF_OPENMP']: - if env['OURPLATFORM'] != 'darwin': - defs += ' PARALLEL' + defs += ' PARALLEL' if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): defs += ' USE_MSVC6FIXES' diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt index 04c310ba7df..c695ea02508 100644 --- a/source/blender/editors/CMakeLists.txt +++ b/source/blender/editors/CMakeLists.txt @@ -71,6 +71,10 @@ IF(WITH_FFMPEG) 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) diff --git a/source/blender/editors/physics/SConscript b/source/blender/editors/physics/SConscript index 85a40c91b3a..fcf94eae994 100644 --- a/source/blender/editors/physics/SConscript +++ b/source/blender/editors/physics/SConscript @@ -8,6 +8,8 @@ incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' incs += ' ../../gpu' incs += ' ../../makesrna ../../render/extern/include #/intern/elbeem/extern' +defs = '' + if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' @@ -15,4 +17,9 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] -env.BlenderLib ( 'bf_editors_physics', sources, Split(incs), [], libtype=['core'], priority=[45] ) + +if env['OURPLATFORM'] == 'darwin': + if env['WITH_BF_OPENMP']: + defs += ' PARALLEL=1' + +env.BlenderLib ( 'bf_editors_physics', sources, Split(incs), Split(defs), libtype=['core'], priority=[45] ) diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 7893b314e3e..eec971e777e 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -98,6 +98,14 @@ /* 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 +extern pthread_key_t gomp_tls_key; +static void *thread_tls_data; +#endif + + /* XXX */ /* from header info.c */ static int start_progress_bar(void) {return 0;}; @@ -320,6 +328,11 @@ static void *fluidsimSimulateThread(void *unused) { // *ptr) { //char* fnameCfgPath = (char*)(ptr); int ret=0; +#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 + ret = elbeemSimulate(); BLI_lock_thread(LOCK_CUSTOM1); if(globalBakeState==0) { @@ -1036,6 +1049,11 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob) // 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); diff --git a/source/blender/editors/screen/SConscript b/source/blender/editors/screen/SConscript index afd6ce68b68..703a16f753b 100644 --- a/source/blender/editors/screen/SConscript +++ b/source/blender/editors/screen/SConscript @@ -22,4 +22,8 @@ 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/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 2a9859330af..977d04a7f45 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -96,6 +96,12 @@ #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 +extern pthread_key_t gomp_tls_key; +static void *thread_tls_data; +#endif /* ************** Exported Poll tests ********************** */ int ED_operator_regionactive(bContext *C) @@ -3015,6 +3021,11 @@ static void render_startjob(void *rjv, short *stop, short *do_update) 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); else @@ -3096,6 +3107,11 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) 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); -- cgit v1.2.3 From 0af48c227bdcd1d11a0bf51b9527dcbdc6d2ba80 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 17 Dec 2009 17:15:38 +0000 Subject: Copy To Selected Until we have proper multi-object editing, this adds a Copy To Selected option to the right mouse button menu for Object and Bone properties, to copy the value from the active object to the selected objects. Also includes some implementation changes to reset to default operator. --- source/blender/editors/include/UI_interface.h | 2 +- source/blender/editors/include/UI_view2d.h | 2 +- .../blender/editors/interface/interface_handlers.c | 3 +- source/blender/editors/interface/interface_ops.c | 219 +++++++++++---------- source/blender/editors/interface/view2d_ops.c | 2 +- source/blender/editors/space_api/spacetypes.c | 3 +- source/blender/makesrna/RNA_access.h | 4 + source/blender/makesrna/intern/rna_access.c | 182 +++++++++++++++++ 8 files changed, 313 insertions(+), 104 deletions(-) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index f0e52a13d3f..8e44d7f386e 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -689,7 +689,7 @@ void uiItemMenuEnumO(uiLayout *layout, char *name, int icon, char *opname, char void uiItemMenuEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname); /* UI Operators */ -void ui_buttons_operatortypes(void); +void UI_buttons_operatortypes(void); /* Helpers for Operators */ void uiAnimContextProperty(const struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA **prop, int *index); diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h index 8fbff25589d..e3b00c21d04 100644 --- a/source/blender/editors/include/UI_view2d.h +++ b/source/blender/editors/include/UI_view2d.h @@ -195,7 +195,7 @@ void UI_view2d_text_cache_rectf(struct View2D *v2d, struct rctf *rect, char *str void UI_view2d_text_cache_draw(struct ARegion *ar); /* operators */ -void ui_view2d_operatortypes(void); +void UI_view2d_operatortypes(void); void UI_view2d_keymap(struct wmKeyConfig *keyconf); #endif /* UI_VIEW2D_H */ diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 9604704dde8..88868a61592 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3506,7 +3506,8 @@ static int ui_but_menu(bContext *C, uiBut *but) else uiItemO(layout, "Reset to Default Value", 0, "UI_OT_reset_default_button"); - uiItemO(layout, "Copy Data Path", 0, "UI_OT_copy_clipboard_button"); + uiItemO(layout, "Copy Data Path", 0, "UI_OT_copy_data_path_button"); + uiItemO(layout, "Copy To Selected", 0, "UI_OT_copy_to_selected_button"); uiItemS(layout); } diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index a5caf1c930b..d1204b41a28 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -59,18 +59,17 @@ /* ********************************************************** */ -/* Copy to Clipboard Button Operator ------------------------ */ +/* Copy Data Path Operator ------------------------ */ -static int copy_clipboard_button_exec(bContext *C, wmOperator *op) +static int copy_data_path_button_exec(bContext *C, wmOperator *op) { PointerRNA ptr; - PropertyRNA *prop= NULL; + PropertyRNA *prop; char *path; - short success= 0; + int success= 0; int index; /* try to create driver using property retrieved from UI */ - memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); if (ptr.data && prop) { @@ -86,15 +85,15 @@ static int copy_clipboard_button_exec(bContext *C, wmOperator *op) return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } -void UI_OT_copy_clipboard_button(wmOperatorType *ot) +void UI_OT_copy_data_path_button(wmOperatorType *ot) { /* identifiers */ ot->name= "Copy Data Path"; - ot->idname= "UI_OT_copy_clipboard_button"; + ot->idname= "UI_OT_copy_data_path_button"; ot->description= "Copy the RNA data path for this property to the clipboard."; /* callbacks */ - ot->exec= copy_clipboard_button_exec; + ot->exec= copy_data_path_button_exec; //op->poll= ??? // TODO: need to have some valid property before this can be done /* flags */ @@ -103,103 +102,34 @@ void UI_OT_copy_clipboard_button(wmOperatorType *ot) /* Reset to Default Values Button Operator ------------------------ */ +static int reset_default_button_poll(bContext *C) +{ + PointerRNA ptr; + PropertyRNA *prop; + int index; + + uiAnimContextProperty(C, &ptr, &prop, &index); + + return (ptr.data && prop && RNA_property_editable(&ptr, prop)); +} + static int reset_default_button_exec(bContext *C, wmOperator *op) { PointerRNA ptr; - PropertyRNA *prop= NULL; - short success= 0; - int index, len; - int all = RNA_boolean_get(op->ptr, "all"); + PropertyRNA *prop; + int success= 0; + int index, all = RNA_boolean_get(op->ptr, "all"); /* try to reset the nominated setting to its default value */ - memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); /* if there is a valid property that is editable... */ if (ptr.data && prop && RNA_property_editable(&ptr, prop)) { - /* get the length of the array to work with */ - len= RNA_property_array_length(&ptr, prop); - - /* get and set the default values as appropriate for the various types */ - switch (RNA_property_type(prop)) { - case PROP_BOOLEAN: - if (len) { - if (all) { - int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - boolean"); - - RNA_property_boolean_get_default_array(&ptr, prop, tmparray); - RNA_property_boolean_set_array(&ptr, prop, tmparray); - - MEM_freeN(tmparray); - } - else { - int value= RNA_property_boolean_get_default_index(&ptr, prop, index); - RNA_property_boolean_set_index(&ptr, prop, index, value); - } - } - else { - int value= RNA_property_boolean_get_default(&ptr, prop); - RNA_property_boolean_set(&ptr, prop, value); - } - break; - case PROP_INT: - if (len) { - if (all) { - int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - int"); - - RNA_property_int_get_default_array(&ptr, prop, tmparray); - RNA_property_int_set_array(&ptr, prop, tmparray); - - MEM_freeN(tmparray); - } - else { - int value= RNA_property_int_get_default_index(&ptr, prop, index); - RNA_property_int_set_index(&ptr, prop, index, value); - } - } - else { - int value= RNA_property_int_get_default(&ptr, prop); - RNA_property_int_set(&ptr, prop, value); - } - break; - case PROP_FLOAT: - if (len) { - if (all) { - float *tmparray= MEM_callocN(sizeof(float)*len, "reset_defaults - float"); - - RNA_property_float_get_default_array(&ptr, prop, tmparray); - RNA_property_float_set_array(&ptr, prop, tmparray); - - MEM_freeN(tmparray); - } - else { - float value= RNA_property_float_get_default_index(&ptr, prop, index); - RNA_property_float_set_index(&ptr, prop, index, value); - } - } - else { - float value= RNA_property_float_get_default(&ptr, prop); - RNA_property_float_set(&ptr, prop, value); - } - break; - case PROP_ENUM: - { - int value= RNA_property_enum_get_default(&ptr, prop); - RNA_property_enum_set(&ptr, prop, value); - } - break; - - //case PROP_POINTER: - //case PROP_STRING: - default: - // FIXME: many of the other types such as strings and pointers need this implemented too! - break; + if(RNA_property_reset(&ptr, prop, (all)? -1: index)) { + /* perform updates required for this property */ + RNA_property_update(C, &ptr, prop); + success= 1; } - - /* perform updates required for this property */ - RNA_property_update(C, &ptr, prop); - - success= 1; } return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; @@ -213,12 +143,102 @@ void UI_OT_reset_default_button(wmOperatorType *ot) ot->description= "Copy the RNA data path for this property to the clipboard."; /* callbacks */ + ot->poll= reset_default_button_poll; ot->exec= reset_default_button_exec; - //op->poll= ??? // TODO: need to have some valid property before this can be done /* flags */ - ot->flag= OPTYPE_REGISTER; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + RNA_def_boolean(ot->srna, "all", 1, "All", "Reset to default values all elements of the array."); +} + +/* Copy To Selected Operator ------------------------ */ + +static int copy_to_selected_list(bContext *C, PointerRNA *ptr, ListBase *lb) +{ + if(RNA_struct_is_a(ptr->type, &RNA_Object)) + *lb = CTX_data_collection_get(C, "selected_editable_objects"); + else if(RNA_struct_is_a(ptr->type, &RNA_EditBone)) + *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 + return 0; + return 1; +} + +static int copy_to_selected_button_poll(bContext *C) +{ + PointerRNA ptr; + PropertyRNA *prop; + int index, success= 0; + + uiAnimContextProperty(C, &ptr, &prop, &index); + + if (ptr.data && prop) { + CollectionPointerLink *link; + ListBase lb; + + if(copy_to_selected_list(C, &ptr, &lb)) { + for(link= lb.first; link; link=link->next) + if(link->ptr.data != ptr.data && RNA_property_editable(&link->ptr, prop)) + success= 1; + + BLI_freelistN(&lb); + } + } + + return success; +} + +static int copy_to_selected_button_exec(bContext *C, wmOperator *op) +{ + PointerRNA ptr; + PropertyRNA *prop; + int success= 0; + int index, all = RNA_boolean_get(op->ptr, "all"); + + /* try to reset the nominated setting to its default value */ + uiAnimContextProperty(C, &ptr, &prop, &index); + + /* if there is a valid property that is editable... */ + if (ptr.data && prop) { + CollectionPointerLink *link; + ListBase lb; + + if(copy_to_selected_list(C, &ptr, &lb)) { + for(link= lb.first; link; link=link->next) { + if(link->ptr.data != ptr.data && RNA_property_editable(&link->ptr, prop)) { + if(RNA_property_copy(&link->ptr, &ptr, prop, (all)? -1: index)) { + RNA_property_update(C, &link->ptr, prop); + success= 1; + } + } + } + + BLI_freelistN(&lb); + } + } + + return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; +} + +void UI_OT_copy_to_selected_button(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy To Selected"; + ot->idname= "UI_OT_copy_to_selected_button"; + ot->description= "Copy property from this object to selected objects or bones."; + + /* callbacks */ + ot->poll= copy_to_selected_button_poll; + ot->exec= copy_to_selected_button_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + /* properties */ RNA_def_boolean(ot->srna, "all", 1, "All", "Reset to default values all elements of the array."); } @@ -226,9 +246,10 @@ void UI_OT_reset_default_button(wmOperatorType *ot) /* ********************************************************* */ /* Registration */ -void ui_buttons_operatortypes(void) +void UI_buttons_operatortypes(void) { - WM_operatortype_append(UI_OT_copy_clipboard_button); + 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/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 8bd840f7e84..6742df351d1 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -1403,7 +1403,7 @@ void VIEW2D_OT_reset(wmOperatorType *ot) /* ********************************************************* */ /* Registration */ -void ui_view2d_operatortypes(void) +void UI_view2d_operatortypes(void) { WM_operatortype_append(VIEW2D_OT_pan); diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index 8cf56ae3eda..90457c05fa7 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -101,7 +101,8 @@ void ED_spacetypes_init(void) ED_operatortypes_sound(); ED_operatortypes_render(); - ui_view2d_operatortypes(); + UI_view2d_operatortypes(); + UI_buttons_operatortypes(); spacetypes = BKE_spacetypes_list(); for(type=spacetypes->first; type; type=type->next) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index c2b36ddc915..c3f23e799d5 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -722,6 +722,10 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key); void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop); +/* copy/reset */ +int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index); +int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index); + /* Path * * Experimental method to refer to structs and properties with a string, diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 53f5407e521..8ae0ebacff7 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -4088,4 +4088,186 @@ int RNA_function_call_direct_va_lookup(bContext *C, ReportList *reports, Pointer return 0; } +int RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index) +{ + int len; + + /* get the length of the array to work with */ + len= RNA_property_array_length(ptr, prop); + + /* get and set the default values as appropriate for the various types */ + switch (RNA_property_type(prop)) { + case PROP_BOOLEAN: + if (len) { + if (index == -1) { + int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - boolean"); + + RNA_property_boolean_get_default_array(ptr, prop, tmparray); + RNA_property_boolean_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_boolean_get_default_index(ptr, prop, index); + RNA_property_boolean_set_index(ptr, prop, index, value); + } + } + else { + int value= RNA_property_boolean_get_default(ptr, prop); + RNA_property_boolean_set(ptr, prop, value); + } + return 1; + case PROP_INT: + if (len) { + if (index == -1) { + int *tmparray= MEM_callocN(sizeof(int)*len, "reset_defaults - int"); + + RNA_property_int_get_default_array(ptr, prop, tmparray); + RNA_property_int_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_int_get_default_index(ptr, prop, index); + RNA_property_int_set_index(ptr, prop, index, value); + } + } + else { + int value= RNA_property_int_get_default(ptr, prop); + RNA_property_int_set(ptr, prop, value); + } + return 1; + case PROP_FLOAT: + if (len) { + if (index == -1) { + float *tmparray= MEM_callocN(sizeof(float)*len, "reset_defaults - float"); + + RNA_property_float_get_default_array(ptr, prop, tmparray); + RNA_property_float_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + float value= RNA_property_float_get_default_index(ptr, prop, index); + RNA_property_float_set_index(ptr, prop, index, value); + } + } + else { + float value= RNA_property_float_get_default(ptr, prop); + RNA_property_float_set(ptr, prop, value); + } + return 1; + case PROP_ENUM: + { + int value= RNA_property_enum_get_default(ptr, prop); + RNA_property_enum_set(ptr, prop, value); + return 1; + } + + //case PROP_POINTER: + //case PROP_STRING: + default: + // FIXME: many of the other types such as strings and pointers need this implemented too! + return 0; + } +} + +int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, int index) +{ + int len, fromlen; + + /* get the length of the array to work with */ + len= RNA_property_array_length(ptr, prop); + fromlen= RNA_property_array_length(ptr, prop); + + if(len != fromlen) + return 0; + + /* get and set the default values as appropriate for the various types */ + switch (RNA_property_type(prop)) { + case PROP_BOOLEAN: + if (len) { + if (index == -1) { + int *tmparray= MEM_callocN(sizeof(int)*len, "copy - boolean"); + + RNA_property_boolean_get_array(fromptr, prop, tmparray); + RNA_property_boolean_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_boolean_get_index(fromptr, prop, index); + RNA_property_boolean_set_index(ptr, prop, index, value); + } + } + else { + int value= RNA_property_boolean_get(fromptr, prop); + RNA_property_boolean_set(ptr, prop, value); + } + return 1; + case PROP_INT: + if (len) { + if (index == -1) { + int *tmparray= MEM_callocN(sizeof(int)*len, "copy - int"); + + RNA_property_int_get_array(fromptr, prop, tmparray); + RNA_property_int_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + int value= RNA_property_int_get_index(fromptr, prop, index); + RNA_property_int_set_index(ptr, prop, index, value); + } + } + else { + int value= RNA_property_int_get(fromptr, prop); + RNA_property_int_set(ptr, prop, value); + } + return 1; + case PROP_FLOAT: + if (len) { + if (index == -1) { + float *tmparray= MEM_callocN(sizeof(float)*len, "copy - float"); + + RNA_property_float_get_array(fromptr, prop, tmparray); + RNA_property_float_set_array(ptr, prop, tmparray); + + MEM_freeN(tmparray); + } + else { + float value= RNA_property_float_get_index(fromptr, prop, index); + RNA_property_float_set_index(ptr, prop, index, value); + } + } + else { + float value= RNA_property_float_get(fromptr, prop); + RNA_property_float_set(ptr, prop, value); + } + return 1; + case PROP_ENUM: + { + int value= RNA_property_enum_get(fromptr, prop); + RNA_property_enum_set(ptr, prop, value); + return 1; + } + case PROP_POINTER: + { + PointerRNA value= RNA_property_pointer_get(fromptr, prop); + RNA_property_pointer_set(ptr, prop, value); + return 1; + } + case PROP_STRING: + { + char *value= RNA_property_string_get_alloc(fromptr, prop, NULL, 0); + RNA_property_string_set(ptr, prop, value); + MEM_freeN(value); + return 1; + } + default: + return 0; + } + + return 0; +} -- cgit v1.2.3 From a1b8f1695840313d08db5863a4d16fb64e951f43 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 17:34:56 +0000 Subject: Bugfix: [#20406] reapeat duplication along axis+view transform orientation Saving back orientation in operator didn't take into account that constraint orientation can be different than user selected orientation. Also simplify the switching logic a little. --- source/blender/editors/transform/transform.c | 90 ++++++++++------------ source/blender/editors/transform/transform.h | 1 + .../editors/transform/transform_constraints.c | 2 + 3 files changed, 44 insertions(+), 49 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 312939961f5..36e8032b640 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -673,7 +673,7 @@ int transformEvent(TransInfo *t, wmEvent *event) } else { if (t->flag & T_2D_EDIT) { - setConstraint(t, mati, (CON_AXIS0), "along X axis"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along X"); } else { setUserConstraint(t, t->current_orientation, (CON_AXIS0), "along %s X"); @@ -689,7 +689,7 @@ int transformEvent(TransInfo *t, wmEvent *event) } else { if (t->flag & T_2D_EDIT) { - setConstraint(t, mati, (CON_AXIS1), "along Y axis"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along Y"); } else { setUserConstraint(t, t->current_orientation, (CON_AXIS1), "along %s Y"); @@ -699,17 +699,12 @@ int transformEvent(TransInfo *t, wmEvent *event) } break; case TFM_MODAL_AXIS_Z: - if ((t->flag & T_NO_CONSTRAINT)==0) { + if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))== 0) { if (cmode == 'Z') { stopConstraint(t); } else { - if (t->flag & T_2D_EDIT) { - setConstraint(t, mati, (CON_AXIS0), "along Z axis"); - } - else { - setUserConstraint(t, t->current_orientation, (CON_AXIS2), "along %s Z"); - } + setUserConstraint(t, t->current_orientation, (CON_AXIS2), "along %s Z"); } t->redraw = 1; } @@ -886,32 +881,28 @@ int transformEvent(TransInfo *t, wmEvent *event) break; case XKEY: if ((t->flag & T_NO_CONSTRAINT)==0) { - if (cmode == 'X') { - if (t->flag & T_2D_EDIT) { + if (t->flag & T_2D_EDIT) { + if (cmode == 'X') { stopConstraint(t); + } else { + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along X"); } - else { - if (t->con.mode & CON_USER) { + } else { + if (cmode == 'X') { + if (t->con.orientation != V3D_MANIP_GLOBAL) { stopConstraint(t); - } - else { + } else { short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL; if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) setUserConstraint(t, orientation, (CON_AXIS0), "along %s X"); else if (t->modifiers & MOD_CONSTRAINT_PLANE) setUserConstraint(t, orientation, (CON_AXIS1|CON_AXIS2), "locking %s X"); } - } - } - else { - if (t->flag & T_2D_EDIT) { - setConstraint(t, mati, (CON_AXIS0), "along X axis"); - } - else { + } else { if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) - setConstraint(t, mati, (CON_AXIS0), "along global X"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0), "along %s X"); else if (t->modifiers & MOD_CONSTRAINT_PLANE) - setConstraint(t, mati, (CON_AXIS1|CON_AXIS2), "locking global X"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1|CON_AXIS2), "locking %s X"); } } t->redraw = 1; @@ -919,56 +910,50 @@ int transformEvent(TransInfo *t, wmEvent *event) break; case YKEY: if ((t->flag & T_NO_CONSTRAINT)==0) { - if (cmode == 'Y') { - if (t->flag & T_2D_EDIT) { + if (t->flag & T_2D_EDIT) { + if (cmode == 'Y') { stopConstraint(t); + } else { + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along Y"); } - else { - if (t->con.mode & CON_USER) { + } else { + if (cmode == 'Y') { + if (t->con.orientation != V3D_MANIP_GLOBAL) { stopConstraint(t); - } - else { + } else { short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL; if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) setUserConstraint(t, orientation, (CON_AXIS1), "along %s Y"); else if (t->modifiers & MOD_CONSTRAINT_PLANE) setUserConstraint(t, orientation, (CON_AXIS0|CON_AXIS2), "locking %s Y"); } - } - } - else { - if (t->flag & T_2D_EDIT) { - setConstraint(t, mati, (CON_AXIS1), "along Y axis"); - } - else { + } else { if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) - setConstraint(t, mati, (CON_AXIS1), "along global Y"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS1), "along %s Y"); else if (t->modifiers & MOD_CONSTRAINT_PLANE) - setConstraint(t, mati, (CON_AXIS0|CON_AXIS2), "locking global Y"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0|CON_AXIS2), "locking %s Y"); } } t->redraw = 1; } break; case ZKEY: - if ((t->flag & T_NO_CONSTRAINT)==0) { + if ((t->flag & (T_NO_CONSTRAINT|T_2D_EDIT))==0) { if (cmode == 'Z') { - if (t->con.mode & CON_USER) { + if (t->con.orientation != V3D_MANIP_GLOBAL) { stopConstraint(t); - } - else { + } else { short orientation = t->current_orientation != V3D_MANIP_GLOBAL ? t->current_orientation : V3D_MANIP_LOCAL; if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) setUserConstraint(t, orientation, (CON_AXIS2), "along %s Z"); - else if ((t->modifiers & MOD_CONSTRAINT_PLANE) && ((t->flag & T_2D_EDIT)==0)) + else if (t->modifiers & MOD_CONSTRAINT_PLANE) setUserConstraint(t, orientation, (CON_AXIS0|CON_AXIS1), "locking %s Z"); } - } - else if ((t->flag & T_2D_EDIT)==0) { + } else { if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0) - setConstraint(t, mati, (CON_AXIS2), "along global Z"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS2), "along %s Z"); else if (t->modifiers & MOD_CONSTRAINT_PLANE) - setConstraint(t, mati, (CON_AXIS0|CON_AXIS1), "locking global Z"); + setUserConstraint(t, V3D_MANIP_GLOBAL, (CON_AXIS0|CON_AXIS1), "locking %s Z"); } t->redraw = 1; } @@ -1464,7 +1449,14 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) if (RNA_struct_find_property(op->ptr, "constraint_axis")) { - RNA_enum_set(op->ptr, "constraint_orientation", t->current_orientation); + /* constraint orientation can be global, event if user selects something else + * so use the orientation in the constraint if set + * */ + if (t->con.mode & CON_APPLY) { + RNA_enum_set(op->ptr, "constraint_orientation", t->con.orientation); + } else { + RNA_enum_set(op->ptr, "constraint_orientation", t->current_orientation); + } if (t->con.mode & CON_APPLY) { diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 0b8fb365a56..3b1ead32fad 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -112,6 +112,7 @@ typedef struct TransSnap { } 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 */ diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index 1f42d9411f1..fd53f6fcd20 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -599,6 +599,8 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte break; } + t->con.orientation = orientation; + t->con.mode |= CON_USER; } -- cgit v1.2.3 From fcaad00bda20244a49e85175b2a6bc1b8c131c54 Mon Sep 17 00:00:00 2001 From: Kent Mein Date: Thu, 17 Dec 2009 17:42:26 +0000 Subject: Some fixes to get blender compiling on solaris. Kent --- intern/audaspace/SRC/Makefile | 2 +- source/Makefile | 6 +----- source/blender/render/intern/raytrace/reorganize.h | 4 ++++ source/nan_link.mk | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/intern/audaspace/SRC/Makefile b/intern/audaspace/SRC/Makefile index 5cf5f55b11f..0959ebb4bfa 100644 --- a/intern/audaspace/SRC/Makefile +++ b/intern/audaspace/SRC/Makefile @@ -35,7 +35,7 @@ include nan_compile.mk CCFLAGS += $(LEVEL_1_CPP_WARNINGS) -CPPFLAGS += -I$(LCGDIR)/samplerate/include/ +CPPFLAGS += -I$(NAN_SAMPLERATE)/include CPPFLAGS += -I../ffmpeg CPPFLAGS += -I../FX CPPFLAGS += -I../SDL diff --git a/source/Makefile b/source/Makefile index e503fdc3302..37b528f4aed 100644 --- a/source/Makefile +++ b/source/Makefile @@ -118,6 +118,7 @@ COMLIB += $(NAN_LZO)/lib/$(DEBUG_DIR)libminilzo.a COMLIB += $(NAN_LZMA)/lib/$(DEBUG_DIR)liblzma.a COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a +COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a ifeq ($(WITH_FFMPEG),true) @@ -378,11 +379,6 @@ ifeq ($(WITH_BF_WEBPLUGIN), true) endif endif -ifeq ($(OS),solaris) - PULIB += $(NAN_ZLIB)/lib/libz.a - SPLIB += $(NAN_ZLIB)/lib/libz.a -endif - ifeq ($(WITH_OPENAL),true) ifeq ($(OS),$(findstring $(OS), "freebsd linux windows")) ifeq ($(CPU),$(findstring $(CPU), "i386 powerpc x86_64 parisc64")) diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h index 2d4a4d15fe2..7b14108760a 100644 --- a/source/blender/render/intern/raytrace/reorganize.h +++ b/source/blender/render/intern/raytrace/reorganize.h @@ -39,6 +39,10 @@ extern int tot_pushup; extern int tot_pushdown; +#if !defined(INFINITY) && defined(HUGE_VAL) +#define INFINITY HUGE_VAL +#endif + template bool node_fits_inside(Node *a, Node *b) { diff --git a/source/nan_link.mk b/source/nan_link.mk index 8f33c917526..f8bb8e8660d 100644 --- a/source/nan_link.mk +++ b/source/nan_link.mk @@ -120,7 +120,7 @@ ifeq ($(OS),solaris) LLIBS += -L$(NAN_MESA)/lib endif - LLIBS += -lGLU -lGL -lXmu -lXext -lXi -lX11 -lc -lm -ldl -lsocket -lnsl + LLIBS += $(NAN_ZLIB)/lib/libz.a -lGLU -lGL -lXmu -lXext -lXi -lX11 -lc -lm -ldl -lsocket -lnsl DYNLDFLAGS = -shared $(LDFLAGS) endif -- cgit v1.2.3 From 509c2e961438c7ac341f555e820314d40d9f2166 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 17:50:55 +0000 Subject: Bugfix: [#20403] transform manipulation widgets with normal coordinates Disable manipulator drawing during transform --- source/blender/editors/transform/transform.h | 3 ++- source/blender/editors/transform/transform_conversions.c | 11 +++++++++++ source/blender/editors/transform/transform_generics.c | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 3b1ead32fad..b7e1b2e4996 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -302,9 +302,10 @@ typedef struct TransInfo { void (*customFree)(struct TransInfo *); /* if a special free function is needed */ /*************** NEW STUFF *********************/ - short launch_event; /* event type used to launch transform */ + short launch_event; /* event type used to launch transform */ short current_orientation; + short twtype; /* backup from view3d, to restore on end */ short prop_mode; diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 0115d34c6b1..98c1b333844 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5006,6 +5006,17 @@ void special_aftertrans_update(bContext *C, TransInfo *t) clear_trans_object_base_flags(t); + if(t->spacetype == SPACE_VIEW3D) + { + View3D *v3d = t->view; + + /* restore manipulator */ + if (t->flag & T_MODAL) { + v3d->twtype = t->twtype; + } + } + + #if 0 // TRANSFORM_FIX_ME if(resetslowpar) reset_slowparents(); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index f2c4da0da27..061b2adbd79 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -927,6 +927,12 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->view = v3d; t->animtimer= CTX_wm_screen(C)->animtimer; + /* turn manipulator off during transform */ + if (t->flag & T_MODAL) { + t->twtype = v3d->twtype; + v3d->twtype = 0; + } + if(v3d->flag & V3D_ALIGN) t->flag |= T_V3D_ALIGN; t->around = v3d->around; -- cgit v1.2.3 From 725319f771123b2eb698e2a25926b1e6129c4666 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 19:05:06 +0000 Subject: Hotkey for outliner window was there twice (testing conflict detection) --- source/blender/windowmanager/intern/wm_operators.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 99e34e129d0..fc5abec1561 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2865,10 +2865,6 @@ void wm_window_keymap(wmKeyConfig *keyconf) RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "value", "OUTLINER"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "OUTLINER"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "value", "IMAGE_EDITOR"); -- cgit v1.2.3 From 959e0486cfe144005ea23220b30de51f09541544 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Thu, 17 Dec 2009 19:23:25 +0000 Subject: SVN maintenance. --- source/blender/editors/interface/interface_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index d1204b41a28..25bfaf3d682 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -1,5 +1,5 @@ /** - * $Id: interface_ops.c 24699 2009-11-20 10:21:31Z aligorith $ + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * -- cgit v1.2.3 From 0c813b2a0ee4e293428caa3fc7d2b706377c92cf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 19:48:30 +0000 Subject: autorigging front end, access in pose mode armature panel (at the bottom) demo: http://download.blender.org/durian/metarig_demo.ogv sintel base rig also, would like to include more generic/simple rigs eventually --- .../scripts/modules/rigify/arm_biped_generic.py | 12 +- .../scripts/modules/rigify/leg_biped_generic.py | 4 +- release/scripts/op/add_armature_human.py | 623 +++++++++++++++++++++ .../scripts/ui/properties_data_armature_rigify.py | 352 ++++++++++++ source/blender/makesrna/intern/rna_armature.c | 4 +- 5 files changed, 981 insertions(+), 14 deletions(-) create mode 100644 release/scripts/op/add_armature_human.py create mode 100644 release/scripts/ui/properties_data_armature_rigify.py diff --git a/release/scripts/modules/rigify/arm_biped_generic.py b/release/scripts/modules/rigify/arm_biped_generic.py index 2363b5366e6..509f1bb7aef 100644 --- a/release/scripts/modules/rigify/arm_biped_generic.py +++ b/release/scripts/modules/rigify/arm_biped_generic.py @@ -164,14 +164,6 @@ def ik(obj, definitions, base_names, options): con.chain_length = 2 con.pole_angle = -90.0 # XXX, RAD2DEG - # ID Propery on the hand for IK/FK switch - - prop = rna_idprop_ui_prop_get(ik_chain.hand_p, "ik", create=True) - ik_chain.hand_p["ik"] = 0.5 - prop["soft_min"] = 0.0 - prop["soft_max"] = 1.0 - - # last step setup layers layers = get_layer_dict(options) lay = layers["ik"] @@ -292,8 +284,8 @@ def fk(obj, definitions, base_names, options): def main(obj, bone_definition, base_names, options): - bones_ik = ik(obj, bone_definition, base_names, options) bones_fk = fk(obj, bone_definition, base_names, options) + bones_ik = ik(obj, bone_definition, base_names, options) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1], blend_default=1.0) + blend_bone_list(obj, bone_definition, bones_fk, bones_ik, target_bone=bones_fk[1], blend_default=1.0) diff --git a/release/scripts/modules/rigify/leg_biped_generic.py b/release/scripts/modules/rigify/leg_biped_generic.py index 7cb71009596..745ee49cbfe 100644 --- a/release/scripts/modules/rigify/leg_biped_generic.py +++ b/release/scripts/modules/rigify/leg_biped_generic.py @@ -367,8 +367,8 @@ def fk(obj, bone_definition, base_names, options): def main(obj, bone_definition, base_names, options): - bones_ik = ik(obj, bone_definition, base_names, options) bones_fk = fk(obj, bone_definition, base_names, options) + bones_ik = ik(obj, bone_definition, base_names, options) bpy.ops.object.mode_set(mode='OBJECT') - blend_bone_list(obj, bone_definition, bones_ik, bones_fk, target_bone=bone_definition[1], blend_default=0.0) + blend_bone_list(obj, bone_definition, bones_fk, bones_ik, target_bone=bones_ik[1], blend_default=0.0) diff --git a/release/scripts/op/add_armature_human.py b/release/scripts/op/add_armature_human.py new file mode 100644 index 00000000000..264f290f271 --- /dev/null +++ b/release/scripts/op/add_armature_human.py @@ -0,0 +1,623 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# +import bpy +import Mathutils +from math import cos, sin, pi + +# could this be stored elsewhere? + +def metarig_template(): + # generated by rigify.write_meta_rig + bpy.ops.object.mode_set(mode='EDIT') + obj = bpy.context.active_object + arm = obj.data + bone = arm.edit_bones.new('root') + bone.head[:] = 0.0000, 0.0000, 0.0000 + bone.tail[:] = 0.0000, 0.4000, 0.0000 + bone.roll = 0.0000 + bone.connected = False + bone = arm.edit_bones.new('pelvis') + bone.head[:] = -0.0000, -0.0145, 1.1263 + bone.tail[:] = -0.0000, -0.0145, 0.9563 + bone.roll = 3.1416 + bone.connected = False + bone.parent = arm.edit_bones['root'] + bone = arm.edit_bones.new('torso') + bone.head[:] = -0.0000, -0.0145, 1.1263 + bone.tail[:] = -0.0000, -0.0145, 1.2863 + bone.roll = 3.1416 + bone.connected = False + bone.parent = arm.edit_bones['pelvis'] + bone = arm.edit_bones.new('spine.01') + bone.head[:] = 0.0000, 0.0394, 0.9688 + bone.tail[:] = -0.0000, -0.0145, 1.1263 + bone.roll = 0.0000 + bone.connected = False + bone.parent = arm.edit_bones['torso'] + bone = arm.edit_bones.new('spine.02') + bone.head[:] = -0.0000, -0.0145, 1.1263 + bone.tail[:] = -0.0000, -0.0213, 1.2884 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.01'] + bone = arm.edit_bones.new('thigh.L') + bone.head[:] = 0.0933, -0.0421, 1.0434 + bone.tail[:] = 0.0933, -0.0516, 0.5848 + bone.roll = 0.0000 + bone.connected = False + bone.parent = arm.edit_bones['spine.01'] + bone = arm.edit_bones.new('thigh.R') + bone.head[:] = -0.0933, -0.0421, 1.0434 + bone.tail[:] = -0.0933, -0.0516, 0.5848 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['spine.01'] + bone = arm.edit_bones.new('spine.03') + bone.head[:] = -0.0000, -0.0213, 1.2884 + bone.tail[:] = -0.0000, 0.0160, 1.3705 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.02'] + bone = arm.edit_bones.new('shin.L') + bone.head[:] = 0.0933, -0.0516, 0.5848 + bone.tail[:] = 0.0915, 0.0100, 0.1374 + bone.roll = 0.0034 + bone.connected = True + bone.parent = arm.edit_bones['thigh.L'] + bone = arm.edit_bones.new('shin.R') + bone.head[:] = -0.0933, -0.0516, 0.5848 + bone.tail[:] = -0.0915, 0.0100, 0.1374 + bone.roll = -0.0034 + bone.connected = True + bone.parent = arm.edit_bones['thigh.R'] + bone = arm.edit_bones.new('spine.04') + bone.head[:] = -0.0000, 0.0160, 1.3705 + bone.tail[:] = -0.0000, 0.0590, 1.4497 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.03'] + bone = arm.edit_bones.new('foot.L') + bone.head[:] = 0.0915, 0.0100, 0.1374 + bone.tail[:] = 0.1033, -0.0968, 0.0510 + bone.roll = 2.8964 + bone.connected = True + bone.parent = arm.edit_bones['shin.L'] + bone = arm.edit_bones.new('foot.R') + bone.head[:] = -0.0915, 0.0100, 0.1374 + bone.tail[:] = -0.1033, -0.0968, 0.0510 + bone.roll = -2.8793 + bone.connected = True + bone.parent = arm.edit_bones['shin.R'] + bone = arm.edit_bones.new('neck_base') + bone.head[:] = -0.0000, 0.0590, 1.4497 + bone.tail[:] = -0.0000, 0.0401, 1.5389 + bone.roll = -0.0000 + bone.connected = True + bone.parent = arm.edit_bones['spine.04'] + bone = arm.edit_bones.new('toe.L') + bone.head[:] = 0.1033, -0.0968, 0.0510 + bone.tail[:] = 0.1136, -0.1848, 0.0510 + bone.roll = 0.0001 + bone.connected = True + bone.parent = arm.edit_bones['foot.L'] + bone = arm.edit_bones.new('heel.L') + bone.head[:] = 0.0809, 0.0969, -0.0000 + bone.tail[:] = 0.1020, -0.0846, -0.0000 + bone.roll = -0.0001 + bone.connected = False + bone.parent = arm.edit_bones['foot.L'] + bone = arm.edit_bones.new('toe.R') + bone.head[:] = -0.1033, -0.0968, 0.0510 + bone.tail[:] = -0.1136, -0.1848, 0.0510 + bone.roll = -0.0002 + bone.connected = True + bone.parent = arm.edit_bones['foot.R'] + bone = arm.edit_bones.new('heel.R') + bone.head[:] = -0.0809, 0.0969, -0.0000 + bone.tail[:] = -0.1020, -0.0846, -0.0000 + bone.roll = -0.0000 + bone.connected = False + bone.parent = arm.edit_bones['foot.R'] + bone = arm.edit_bones.new('head') + bone.head[:] = -0.0000, 0.0401, 1.5389 + bone.tail[:] = -0.0000, 0.0401, 1.5979 + bone.roll = 3.1416 + bone.connected = True + bone.parent = arm.edit_bones['neck_base'] + bone = arm.edit_bones.new('DLT-shoulder.L') + bone.head[:] = 0.0141, -0.0346, 1.4991 + bone.tail[:] = 0.1226, 0.0054, 1.4991 + bone.roll = 0.0005 + bone.connected = False + bone.parent = arm.edit_bones['neck_base'] + bone = arm.edit_bones.new('DLT-shoulder.R') + bone.head[:] = -0.0141, -0.0346, 1.4991 + bone.tail[:] = -0.1226, 0.0054, 1.4991 + bone.roll = -0.0005 + bone.connected = False + bone.parent = arm.edit_bones['neck_base'] + bone = arm.edit_bones.new('neck.01') + bone.head[:] = -0.0000, 0.0401, 1.5389 + bone.tail[:] = -0.0000, 0.0176, 1.5916 + bone.roll = 0.0000 + bone.connected = False + bone.parent = arm.edit_bones['head'] + bone = arm.edit_bones.new('shoulder.L') + bone.head[:] = 0.0141, -0.0346, 1.4991 + bone.tail[:] = 0.1226, 0.0216, 1.5270 + bone.roll = -0.1225 + bone.connected = False + bone.parent = arm.edit_bones['DLT-shoulder.L'] + bone = arm.edit_bones.new('shoulder.R') + bone.head[:] = -0.0141, -0.0346, 1.4991 + bone.tail[:] = -0.1226, 0.0216, 1.5270 + bone.roll = 0.0849 + bone.connected = False + bone.parent = arm.edit_bones['DLT-shoulder.R'] + bone = arm.edit_bones.new('neck.02') + bone.head[:] = -0.0000, 0.0176, 1.5916 + bone.tail[:] = -0.0000, 0.0001, 1.6499 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.01'] + bone = arm.edit_bones.new('DLT-upper_arm.L') + bone.head[:] = 0.1482, 0.0483, 1.4943 + bone.tail[:] = 0.2586, 0.1057, 1.5124 + bone.roll = 1.4969 + bone.connected = False + bone.parent = arm.edit_bones['shoulder.L'] + bone = arm.edit_bones.new('DLT-upper_arm.R') + bone.head[:] = -0.1482, 0.0483, 1.4943 + bone.tail[:] = -0.2586, 0.1057, 1.5124 + bone.roll = -1.4482 + bone.connected = False + bone.parent = arm.edit_bones['shoulder.R'] + bone = arm.edit_bones.new('neck.03') + bone.head[:] = -0.0000, 0.0001, 1.6499 + bone.tail[:] = -0.0000, 0.0001, 1.8522 + bone.roll = 0.0000 + bone.connected = True + bone.parent = arm.edit_bones['neck.02'] + bone = arm.edit_bones.new('upper_arm.L') + bone.head[:] = 0.1482, 0.0483, 1.4943 + bone.tail[:] = 0.3929, 0.0522, 1.4801 + bone.roll = 1.6281 + bone.connected = False + bone.parent = arm.edit_bones['DLT-upper_arm.L'] + bone = arm.edit_bones.new('upper_arm.R') + bone.head[:] = -0.1482, 0.0483, 1.4943 + bone.tail[:] = -0.3929, 0.0522, 1.4801 + bone.roll = -1.6281 + bone.connected = False + bone.parent = arm.edit_bones['DLT-upper_arm.R'] + bone = arm.edit_bones.new('forearm.L') + bone.head[:] = 0.3929, 0.0522, 1.4801 + bone.tail[:] = 0.6198, 0.0364, 1.4906 + bone.roll = 1.5240 + bone.connected = True + bone.parent = arm.edit_bones['upper_arm.L'] + bone = arm.edit_bones.new('forearm.R') + bone.head[:] = -0.3929, 0.0522, 1.4801 + bone.tail[:] = -0.6198, 0.0364, 1.4906 + bone.roll = -1.5219 + bone.connected = True + bone.parent = arm.edit_bones['upper_arm.R'] + bone = arm.edit_bones.new('hand.L') + bone.head[:] = 0.6198, 0.0364, 1.4906 + bone.tail[:] = 0.6592, 0.0364, 1.4853 + bone.roll = -3.0065 + bone.connected = True + bone.parent = arm.edit_bones['forearm.L'] + bone = arm.edit_bones.new('hand.R') + bone.head[:] = -0.6198, 0.0364, 1.4906 + bone.tail[:] = -0.6592, 0.0364, 1.4853 + bone.roll = 3.0065 + bone.connected = True + bone.parent = arm.edit_bones['forearm.R'] + bone = arm.edit_bones.new('palm.04.L') + bone.head[:] = 0.6514, 0.0658, 1.4906 + bone.tail[:] = 0.7287, 0.0810, 1.4747 + bone.roll = -3.0715 + bone.connected = False + bone.parent = arm.edit_bones['hand.L'] + bone = arm.edit_bones.new('palm.03.L') + bone.head[:] = 0.6533, 0.0481, 1.4943 + bone.tail[:] = 0.7386, 0.0553, 1.4781 + bone.roll = -3.0290 + bone.connected = False + bone.parent = arm.edit_bones['hand.L'] + bone = arm.edit_bones.new('palm.02.L') + bone.head[:] = 0.6539, 0.0305, 1.4967 + bone.tail[:] = 0.7420, 0.0250, 1.4835 + bone.roll = -3.0669 + bone.connected = False + bone.parent = arm.edit_bones['hand.L'] + bone = arm.edit_bones.new('palm.01.L') + bone.head[:] = 0.6514, 0.0116, 1.4961 + bone.tail[:] = 0.7361, -0.0074, 1.4823 + bone.roll = -2.9422 + bone.connected = False + bone.parent = arm.edit_bones['hand.L'] + bone = arm.edit_bones.new('thumb.01.L') + bone.head[:] = 0.6380, -0.0005, 1.4848 + bone.tail[:] = 0.6757, -0.0408, 1.4538 + bone.roll = -0.7041 + bone.connected = False + bone.parent = arm.edit_bones['hand.L'] + bone = arm.edit_bones.new('palm.04.R') + bone.head[:] = -0.6514, 0.0658, 1.4906 + bone.tail[:] = -0.7287, 0.0810, 1.4747 + bone.roll = 3.0715 + bone.connected = False + bone.parent = arm.edit_bones['hand.R'] + bone = arm.edit_bones.new('palm.03.R') + bone.head[:] = -0.6533, 0.0481, 1.4943 + bone.tail[:] = -0.7386, 0.0553, 1.4781 + bone.roll = 3.0290 + bone.connected = False + bone.parent = arm.edit_bones['hand.R'] + bone = arm.edit_bones.new('palm.02.R') + bone.head[:] = -0.6539, 0.0305, 1.4967 + bone.tail[:] = -0.7420, 0.0250, 1.4835 + bone.roll = 3.0669 + bone.connected = False + bone.parent = arm.edit_bones['hand.R'] + bone = arm.edit_bones.new('thumb.01.R') + bone.head[:] = -0.6380, -0.0005, 1.4848 + bone.tail[:] = -0.6757, -0.0408, 1.4538 + bone.roll = 0.7041 + bone.connected = False + bone.parent = arm.edit_bones['hand.R'] + bone = arm.edit_bones.new('palm.01.R') + bone.head[:] = -0.6514, 0.0116, 1.4961 + bone.tail[:] = -0.7361, -0.0074, 1.4823 + bone.roll = 2.9332 + bone.connected = False + bone.parent = arm.edit_bones['hand.R'] + bone = arm.edit_bones.new('finger_pinky.01.L') + bone.head[:] = 0.7287, 0.0810, 1.4747 + bone.tail[:] = 0.7698, 0.0947, 1.4635 + bone.roll = -3.0949 + bone.connected = True + bone.parent = arm.edit_bones['palm.04.L'] + bone = arm.edit_bones.new('finger_ring.01.L') + bone.head[:] = 0.7386, 0.0553, 1.4781 + bone.tail[:] = 0.7890, 0.0615, 1.4667 + bone.roll = -3.0081 + bone.connected = True + bone.parent = arm.edit_bones['palm.03.L'] + bone = arm.edit_bones.new('finger_middle.01.L') + bone.head[:] = 0.7420, 0.0250, 1.4835 + bone.tail[:] = 0.7975, 0.0221, 1.4712 + bone.roll = -2.9982 + bone.connected = True + bone.parent = arm.edit_bones['palm.02.L'] + bone = arm.edit_bones.new('finger_index.01.L') + bone.head[:] = 0.7361, -0.0074, 1.4823 + bone.tail[:] = 0.7843, -0.0204, 1.4718 + bone.roll = -3.0021 + bone.connected = True + bone.parent = arm.edit_bones['palm.01.L'] + bone = arm.edit_bones.new('thumb.02.L') + bone.head[:] = 0.6757, -0.0408, 1.4538 + bone.tail[:] = 0.6958, -0.0568, 1.4376 + bone.roll = -0.6963 + bone.connected = True + bone.parent = arm.edit_bones['thumb.01.L'] + bone = arm.edit_bones.new('finger_pinky.01.R') + bone.head[:] = -0.7287, 0.0810, 1.4747 + bone.tail[:] = -0.7698, 0.0947, 1.4635 + bone.roll = 3.0949 + bone.connected = True + bone.parent = arm.edit_bones['palm.04.R'] + bone = arm.edit_bones.new('finger_ring.01.R') + bone.head[:] = -0.7386, 0.0553, 1.4781 + bone.tail[:] = -0.7890, 0.0615, 1.4667 + bone.roll = 2.9892 + bone.connected = True + bone.parent = arm.edit_bones['palm.03.R'] + bone = arm.edit_bones.new('finger_middle.01.R') + bone.head[:] = -0.7420, 0.0250, 1.4835 + bone.tail[:] = -0.7975, 0.0221, 1.4712 + bone.roll = 2.9816 + bone.connected = True + bone.parent = arm.edit_bones['palm.02.R'] + bone = arm.edit_bones.new('thumb.02.R') + bone.head[:] = -0.6757, -0.0408, 1.4538 + bone.tail[:] = -0.6958, -0.0568, 1.4376 + bone.roll = 0.6963 + bone.connected = True + bone.parent = arm.edit_bones['thumb.01.R'] + bone = arm.edit_bones.new('finger_index.01.R') + bone.head[:] = -0.7361, -0.0074, 1.4823 + bone.tail[:] = -0.7843, -0.0204, 1.4718 + bone.roll = 2.9498 + bone.connected = True + bone.parent = arm.edit_bones['palm.01.R'] + bone = arm.edit_bones.new('finger_pinky.02.L') + bone.head[:] = 0.7698, 0.0947, 1.4635 + bone.tail[:] = 0.7910, 0.1018, 1.4577 + bone.roll = -3.0949 + bone.connected = True + bone.parent = arm.edit_bones['finger_pinky.01.L'] + bone = arm.edit_bones.new('finger_ring.02.L') + bone.head[:] = 0.7890, 0.0615, 1.4667 + bone.tail[:] = 0.8177, 0.0650, 1.4600 + bone.roll = -3.0006 + bone.connected = True + bone.parent = arm.edit_bones['finger_ring.01.L'] + bone = arm.edit_bones.new('finger_middle.02.L') + bone.head[:] = 0.7975, 0.0221, 1.4712 + bone.tail[:] = 0.8289, 0.0206, 1.4643 + bone.roll = -2.9995 + bone.connected = True + bone.parent = arm.edit_bones['finger_middle.01.L'] + bone = arm.edit_bones.new('finger_index.02.L') + bone.head[:] = 0.7843, -0.0204, 1.4718 + bone.tail[:] = 0.8117, -0.0275, 1.4660 + bone.roll = -3.0064 + bone.connected = True + bone.parent = arm.edit_bones['finger_index.01.L'] + bone = arm.edit_bones.new('thumb.03.L') + bone.head[:] = 0.6958, -0.0568, 1.4376 + bone.tail[:] = 0.7196, -0.0671, 1.4210 + bone.roll = -0.8072 + bone.connected = True + bone.parent = arm.edit_bones['thumb.02.L'] + bone = arm.edit_bones.new('finger_pinky.02.R') + bone.head[:] = -0.7698, 0.0947, 1.4635 + bone.tail[:] = -0.7910, 0.1018, 1.4577 + bone.roll = 3.0949 + bone.connected = True + bone.parent = arm.edit_bones['finger_pinky.01.R'] + bone = arm.edit_bones.new('finger_ring.02.R') + bone.head[:] = -0.7890, 0.0615, 1.4667 + bone.tail[:] = -0.8177, 0.0650, 1.4600 + bone.roll = 3.0341 + bone.connected = True + bone.parent = arm.edit_bones['finger_ring.01.R'] + bone = arm.edit_bones.new('finger_middle.02.R') + bone.head[:] = -0.7975, 0.0221, 1.4712 + bone.tail[:] = -0.8289, 0.0206, 1.4643 + bone.roll = 3.0291 + bone.connected = True + bone.parent = arm.edit_bones['finger_middle.01.R'] + bone = arm.edit_bones.new('thumb.03.R') + bone.head[:] = -0.6958, -0.0568, 1.4376 + bone.tail[:] = -0.7196, -0.0671, 1.4210 + bone.roll = 0.8072 + bone.connected = True + bone.parent = arm.edit_bones['thumb.02.R'] + bone = arm.edit_bones.new('finger_index.02.R') + bone.head[:] = -0.7843, -0.0204, 1.4718 + bone.tail[:] = -0.8117, -0.0275, 1.4660 + bone.roll = 3.0705 + bone.connected = True + bone.parent = arm.edit_bones['finger_index.01.R'] + bone = arm.edit_bones.new('finger_pinky.03.L') + bone.head[:] = 0.7910, 0.1018, 1.4577 + bone.tail[:] = 0.8109, 0.1085, 1.4523 + bone.roll = -3.0949 + bone.connected = True + bone.parent = arm.edit_bones['finger_pinky.02.L'] + bone = arm.edit_bones.new('finger_ring.03.L') + bone.head[:] = 0.8177, 0.0650, 1.4600 + bone.tail[:] = 0.8396, 0.0677, 1.4544 + bone.roll = -2.9819 + bone.connected = True + bone.parent = arm.edit_bones['finger_ring.02.L'] + bone = arm.edit_bones.new('finger_middle.03.L') + bone.head[:] = 0.8289, 0.0206, 1.4643 + bone.tail[:] = 0.8534, 0.0193, 1.4589 + bone.roll = -3.0004 + bone.connected = True + bone.parent = arm.edit_bones['finger_middle.02.L'] + bone = arm.edit_bones.new('finger_index.03.L') + bone.head[:] = 0.8117, -0.0275, 1.4660 + bone.tail[:] = 0.8331, -0.0333, 1.4615 + bone.roll = -3.0103 + bone.connected = True + bone.parent = arm.edit_bones['finger_index.02.L'] + bone = arm.edit_bones.new('finger_pinky.03.R') + bone.head[:] = -0.7910, 0.1018, 1.4577 + bone.tail[:] = -0.8109, 0.1085, 1.4523 + bone.roll = 3.0949 + bone.connected = True + bone.parent = arm.edit_bones['finger_pinky.02.R'] + bone = arm.edit_bones.new('finger_ring.03.R') + bone.head[:] = -0.8177, 0.0650, 1.4600 + bone.tail[:] = -0.8396, 0.0677, 1.4544 + bone.roll = 2.9819 + bone.connected = True + bone.parent = arm.edit_bones['finger_ring.02.R'] + bone = arm.edit_bones.new('finger_middle.03.R') + bone.head[:] = -0.8289, 0.0206, 1.4643 + bone.tail[:] = -0.8534, 0.0193, 1.4589 + bone.roll = 3.0004 + bone.connected = True + bone.parent = arm.edit_bones['finger_middle.02.R'] + bone = arm.edit_bones.new('finger_index.03.R') + bone.head[:] = -0.8117, -0.0275, 1.4660 + bone.tail[:] = -0.8331, -0.0333, 1.4615 + bone.roll = 2.9917 + bone.connected = True + bone.parent = arm.edit_bones['finger_index.02.R'] + + bpy.ops.object.mode_set(mode='OBJECT') + pbone = obj.pose.bones['root'] + pbone['type'] = 'root' + pbone = obj.pose.bones['root'] + pbone['root.layer'] = 16 + pbone = obj.pose.bones['torso'] + pbone['type'] = 'spine_pivot_flex' + pbone = obj.pose.bones['torso'] + pbone['spine_pivot_flex.later_main'] = 1 + pbone = obj.pose.bones['torso'] + pbone['spine_pivot_flex.layer_extra'] = 2 + pbone = obj.pose.bones['thigh.L'] + pbone['type'] = 'leg_biped_generic' + pbone = obj.pose.bones['thigh.L'] + pbone['leg_biped_generic.layer_ik'] = 12 + pbone = obj.pose.bones['thigh.L'] + pbone['leg_biped_generic.layer_fk'] = 11 + pbone = obj.pose.bones['thigh.R'] + pbone['type'] = 'leg_biped_generic' + pbone = obj.pose.bones['thigh.R'] + pbone['leg_biped_generic.layer_ik'] = 14 + pbone = obj.pose.bones['thigh.R'] + pbone['leg_biped_generic.layer_fk'] = 13 + pbone = obj.pose.bones['head'] + pbone['type'] = 'neck_flex' + pbone = obj.pose.bones['head'] + pbone['neck_flex.layer_extra'] = 4 + pbone = obj.pose.bones['head'] + pbone['neck_flex.layer_main'] = 3 + pbone = obj.pose.bones['DLT-shoulder.L'] + pbone['type'] = 'delta' + pbone = obj.pose.bones['DLT-shoulder.R'] + pbone['type'] = 'delta' + pbone = obj.pose.bones['shoulder.L'] + pbone['type'] = 'copy' + pbone = obj.pose.bones['shoulder.L'] + pbone['copy.layer'] = 1 + pbone = obj.pose.bones['shoulder.R'] + pbone['type'] = 'copy' + pbone = obj.pose.bones['shoulder.R'] + pbone['copy.layer'] = 1 + pbone = obj.pose.bones['DLT-upper_arm.L'] + pbone['type'] = 'delta' + pbone = obj.pose.bones['DLT-upper_arm.R'] + pbone['type'] = 'delta' + pbone = obj.pose.bones['upper_arm.L'] + pbone['type'] = 'arm_biped_generic' + pbone = obj.pose.bones['upper_arm.L'] + pbone['arm_biped_generic.elbow_parent'] = 'spine.04' + pbone = obj.pose.bones['upper_arm.L'] + pbone['arm_biped_generic.layer_fk'] = 7 + pbone = obj.pose.bones['upper_arm.L'] + pbone['arm_biped_generic.layer_ik'] = 8 + pbone = obj.pose.bones['upper_arm.R'] + pbone['type'] = 'arm_biped_generic' + pbone = obj.pose.bones['upper_arm.R'] + pbone['arm_biped_generic.layer_fk'] = 9 + pbone = obj.pose.bones['upper_arm.R'] + pbone['arm_biped_generic.layer_ik'] = 10 + pbone = obj.pose.bones['upper_arm.R'] + pbone['arm_biped_generic.elbow_parent'] = 'spine.04' + pbone = obj.pose.bones['palm.01.L'] + pbone['type'] = 'palm_curl' + pbone = obj.pose.bones['palm.01.L'] + pbone['palm_curl.layer'] = 5 + pbone = obj.pose.bones['thumb.01.L'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['thumb.01.L'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['thumb.01.L'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['thumb.01.R'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['thumb.01.R'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['thumb.01.R'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['palm.01.R'] + pbone['type'] = 'palm_curl' + pbone = obj.pose.bones['palm.01.R'] + pbone['palm_curl.layer'] = 5 + pbone = obj.pose.bones['finger_pinky.01.L'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_pinky.01.L'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_pinky.01.L'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_ring.01.L'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_ring.01.L'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_ring.01.L'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_middle.01.L'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_middle.01.L'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_middle.01.L'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_index.01.L'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_index.01.L'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_index.01.L'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_pinky.01.R'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_pinky.01.R'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_pinky.01.R'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_ring.01.R'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_ring.01.R'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_ring.01.R'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_middle.01.R'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_middle.01.R'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_middle.01.R'] + pbone['finger_curl.layer_extra'] = 6 + pbone = obj.pose.bones['finger_index.01.R'] + pbone['type'] = 'finger_curl' + pbone = obj.pose.bones['finger_index.01.R'] + pbone['finger_curl.layer_main'] = 5 + pbone = obj.pose.bones['finger_index.01.R'] + pbone['finger_curl.layer_extra'] = 6 + + +class AddHuman(bpy.types.Operator): + '''Add an advanced human metarig base.''' + bl_idname = "object.armature_human_advanced_add" + bl_label = "Add Humanoid (advanced metarig)" + bl_register = True + bl_undo = True + + def execute(self, context): + bpy.ops.object.armature_add() + obj = context.active_object + mode_orig = obj.mode + bpy.ops.object.mode_set(mode='EDIT') # grr, remove bone + bones = context.active_object.data.edit_bones + bones.remove(bones[0]) + metarig_template() + bpy.ops.object.mode_set(mode=mode_orig) + return ('FINISHED',) + +# Register the operator +bpy.ops.add(AddHuman) + +# Add to a menu +import dynamic_menu + +menu_func = (lambda self, context: self.layout.operator(AddHuman.bl_idname, icon='OUTLINER_OB_ARMATURE', text="Human (Meta-Rig)")) + +menu_item = dynamic_menu.add(bpy.types.INFO_MT_armature_add, menu_func) + +if __name__ == "__main__": + bpy.ops.mesh.armature_human_advanced_add() diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py new file mode 100644 index 00000000000..e5fc1377d0f --- /dev/null +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -0,0 +1,352 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# +import bpy + +narrowui = 180 + + +class PoseTemplateSettings(bpy.types.IDPropertyGroup): + pass + + +class PoseTemplate(bpy.types.IDPropertyGroup): + pass + +PoseTemplate.StringProperty(attr="name", + name="Name of the slave", + description="", + maxlen=64, + default="") + + +PoseTemplateSettings.CollectionProperty(attr="templates", type=PoseTemplate, name="Templates", description="") +PoseTemplateSettings.IntProperty(attr="active_template_index", + name="Index of the active slave", + description="", + default=-1, + min=-1, + max=65535) + +PoseTemplateSettings.BoolProperty(attr="generate_def_rig", + name="Create Deform Rig", + description="Create a copy of the metarig, constrainted by the generated rig", + default=False) + +bpy.types.Scene.PointerProperty(attr="pose_templates", type=PoseTemplateSettings, name="Network Render", description="Network Render Settings") + + +def metarig_templates(): + import rigify + return rigify.get_submodule_types() + + +class DATA_PT_template(bpy.types.Panel): + bl_label = "Meta-Rig Templates" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + bl_default_closed = True + + templates = [] + + def poll(self, context): + obj = context.object + if obj: + return (obj.mode in ('POSE', 'OBJECT')) + return False + + def draw(self, context): + layout = self.layout + try: + active_type = context.active_pose_bone["type"] + except: + active_type = None + + scene = context.scene + pose_templates = scene.pose_templates + + if pose_templates.active_template_index == -1: + pose_templates.active_template_index = 0 + + if not self.templates: + self.templates[:] = metarig_templates() + + while(len(pose_templates.templates) < len(self.templates)): + pose_templates.templates.add() + while(len(pose_templates.templates) > len(self.templates)): + pose_templates.templates.remove(0) + + for i, template_name in enumerate(self.templates): + template = pose_templates.templates[i] + if active_type == template_name: + template.name = "<%s>" % template_name.replace("_", " ") + else: + template.name = " %s " % template_name.replace("_", " ") + + row = layout.row() + row.operator("pose.metarig_generate", text="Generate") + row.operator("pose.metarig_validate", text="Check") + row.operator("pose.metarig_graph", text="Graph") + row = layout.row() + row.prop(pose_templates, "generate_def_rig") + + row = layout.row() + col = row.column() + col.template_list(pose_templates, "templates", pose_templates, "active_template_index", rows=1) + + subrow = col.split(percentage=0.5, align=True) + subsubrow = subrow.row(align=True) + subsubrow.operator("pose.metarig_assign", text="Assign") + subsubrow.operator("pose.metarig_clear", text="Clear") + + subsubrow = subrow.split(percentage=0.8) + subsubrow.operator("pose.metarig_sample_add", text="Sample").metarig_type = self.templates[pose_templates.active_template_index] + subsubrow.operator("pose.metarig_sample_add", text="All").metarig_type = "" # self.templates[pose_templates.active_template_index] + + sub = row.column(align=True) + sub.operator("pose.metarig_reload", icon="FILE_REFRESH", text="") + + +# operators +from bpy.props import StringProperty + + +class Reload(bpy.types.Operator): + '''Re-Scan the metarig package directory for scripts''' + + bl_idname = "pose.metarig_reload" + bl_label = "Re-Scan the list of metarig types" + + def execute(self, context): + DATA_PT_template.templates[:] = metarig_templates() + return ('FINISHED',) + + +def rigify_report_exception(operator, exception): + import traceback + import sys + import os + # find the module name where the error happened + # hint, this is the metarig type! + exceptionType, exceptionValue, exceptionTraceback = sys.exc_info() + fn = traceback.extract_tb(exceptionTraceback)[-1][0] + fn = os.path.basename(fn) + fn = os.path.splitext(fn)[0] + message = [] + if fn.startswith("__"): + message.append("Incorrect armature...") + else: + message.append("Incorrect armature for type '%s'" % fn) + message.append(exception.message) + + message.reverse() # XXX - stupid! menu's are upside down! + + operator.report(set(['INFO']), '\n'.join(message)) + + +class Generate(bpy.types.Operator): + '''Generates a metarig from the active armature''' + + bl_idname = "pose.metarig_generate" + bl_label = "Generate Metarig" + + def execute(self, context): + import rigify + reload(rigify) + + meta_def = context.scene.pose_templates.generate_def_rig + + try: + rigify.generate_rig(context, context.object, META_DEF=meta_def) + except rigify.RigifyError as rig_exception: + rigify_report_exception(self, rig_exception) + + return ('FINISHED',) + + +class Validate(bpy.types.Operator): + '''Validate a metarig from the active armature''' + + bl_idname = "pose.metarig_validate" + bl_label = "Validate Metarig" + + def execute(self, context): + import rigify + reload(rigify) + try: + rigify.validate_rig(context, context.object) + except rigify.RigifyError as rig_exception: + rigify_report_exception(self, rig_exception) + return ('FINISHED',) + + +class Sample(bpy.types.Operator): + '''Create a sample metarig to be modified before generating the final rig.''' + + bl_idname = "pose.metarig_sample_add" + bl_label = "Re-Scan Metarig Scripts" + + metarig_type = StringProperty(name="Type", description="Name of the rig type to generate a sample of, a blank string for all", maxlen=128, default="") + + def execute(self, context): + import rigify + reload(rigify) + final = (self.properties.metarig_type == "") + objects = rigify.generate_test(context, metarig_type=self.properties.metarig_type, GENERATE_FINAL=final) + + if len(objects) > 1: + for i, (obj_meta, obj_gen) in enumerate(objects): + obj_meta.location.x = i * 1.0 + if obj_gen: + obj_gen.location.x = i * 1.0 + + return ('FINISHED',) + + +class Graph(bpy.types.Operator): + '''Create a graph from the active armature through graphviz''' + + bl_idname = "pose.metarig_graph" + bl_label = "Pose Graph" + + def execute(self, context): + import os + import graphviz_export + import bpy + reload(graphviz_export) + obj = bpy.context.object + path = os.path.splitext(bpy.data.filename)[0] + "-" + bpy.utils.clean_name(obj.name) + path_dot = path + ".dot" + path_png = path + ".png" + saved = graphviz_export.graph_armature(bpy.context.object, path_dot, CONSTRAINTS=False, DRIVERS=False) + + if saved: + # if we seriously want this working everywhere we'll need some new approach + #os.system("dot -Tpng %s > %s; gnome-open %s &" % (path_dot, path_png, path_png)) + os.system("python /b/xdot.py '%s' &" % path_dot) + + + return ('FINISHED',) + + +class AsScript(bpy.types.Operator): + '''Write the edit armature out as a python script''' + + bl_idname = "pose.metarig_to_script" + bl_label = "Write Metarig to Script" + bl_register = True + bl_undo = True + + path = StringProperty(name="File Path", description="File path used for exporting the Armature file", maxlen=1024, default="") + + def execute(self, context): + import rigify_utils + reload(rigify_utils) + obj = context.object + code = rigify_utils.write_meta_rig(obj) + path = self.properties.path + file = open(path, "w") + file.write(code) + file.close() + + return ('FINISHED',) + + def invoke(self, context, event): + import os + obj = context.object + self.properties.path = os.path.splitext(bpy.data.filename)[0] + "-" + bpy.utils.clean_name(obj.name) + ".py" + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + + +# operators that use the GUI +class ActiveAssign(bpy.types.Operator): + '''Assign to the active posebone''' + + bl_idname = "pose.metarig_assign" + bl_label = "Assign to the active posebone" + + def poll(self, context): + bone = context.active_pose_bone + return bool(bone and bone.id_data.mode == 'POSE') + + def execute(self, context): + scene = context.scene + pose_templates = scene.pose_templates + template_name = DATA_PT_template.templates[pose_templates.active_template_index] + context.active_pose_bone["type"] = template_name + return ('FINISHED',) + + +class ActiveClear(bpy.types.Operator): + '''Clear type from the active posebone''' + + bl_idname = "pose.metarig_clear" + bl_label = "Metarig Clear Type" + + def poll(self, context): + bone = context.active_pose_bone + return bool(bone and bone.id_data.mode == 'POSE') + + def execute(self, context): + scene = context.scene + del context.active_pose_bone["type"] + return ('FINISHED',) + + +import space_info +import dynamic_menu + + +class INFO_MT_armature_metarig_add(dynamic_menu.DynMenu): + bl_idname = "INFO_MT_armature_metarig_add" + bl_label = "Meta-Rig" + + def draw(self, context): + import rigify + + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + + for submodule_type in rigify.get_submodule_types(): + text = bpy.utils.display_name(submodule_type) + layout.operator("pose.metarig_sample_add", text=text, icon='OUTLINER_OB_ARMATURE').metarig_type = submodule_type + +bpy.types.register(DATA_PT_template) + +bpy.types.register(PoseTemplateSettings) +bpy.types.register(PoseTemplate) + +bpy.ops.add(Reload) +bpy.ops.add(Generate) +bpy.ops.add(Validate) +bpy.ops.add(Sample) +bpy.ops.add(Graph) +bpy.ops.add(AsScript) + +bpy.ops.add(ActiveAssign) +bpy.ops.add(ActiveClear) + + +bpy.types.register(INFO_MT_armature_metarig_add) + +menu_func = (lambda self, context: self.layout.menu("INFO_MT_armature_metarig_add", icon='OUTLINER_OB_ARMATURE')) +menu_item = dynamic_menu.add(bpy.types.INFO_MT_armature_add, menu_func) diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index bc01c22de1c..0f36ebda70e 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -632,12 +632,12 @@ static void rna_def_edit_bone(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Selected", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "head_selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "selected_head", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL); RNA_def_property_ui_text(prop, "Head Selected", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "tail_selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "selected_tail", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_TIPSEL); RNA_def_property_ui_text(prop, "Tail Selected", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); -- cgit v1.2.3 From 53edaee89b6512f1d4d01ed5f83a9d335d104257 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 17 Dec 2009 19:55:08 +0000 Subject: Fix #19431: gestures would sometimes draw incorrect, now ensures they are always drawn in pixel space. --- source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_draw.c | 2 +- source/blender/windowmanager/intern/wm_gesture.c | 1 + source/blender/windowmanager/intern/wm_subwindow.c | 10 ++++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index e90360fde45..c4270fbc8b0 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -264,6 +264,7 @@ void wmPopMatrix (void); /* one level only */ void wmFrustum (float x1, float x2, float y1, float y2, float n, float f); void wmOrtho (float x1, float x2, float y1, float y2, float n, float f); void wmOrtho2 (float x1, float x2, float y1, float y2); +void wmOrthoPixelSpace (void); /* utilities */ void WM_set_framebuffer_index_color(int index); diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index b9e6ca2d281..9ee67cd4047 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -585,7 +585,7 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win) } } - if(win->screen->do_draw_gesture) + if(screen->do_draw_gesture) wm_gesture_draw(win); if(wm->paintcursors.first) { diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c index 882da1794c6..b95d171c1b0 100644 --- a/source/blender/windowmanager/intern/wm_gesture.c +++ b/source/blender/windowmanager/intern/wm_gesture.c @@ -248,6 +248,7 @@ void wm_gesture_draw(wmWindow *win) for(; gt; gt= gt->next) { /* all in subwindow space */ wmSubWindowSet(win, gt->swinid); + wmOrthoPixelSpace(); if(gt->type==WM_GESTURE_RECT) wm_gesture_draw_rect(win, gt); diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index 00af9eb0bb9..decf1f0d676 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -405,6 +405,16 @@ void wmOrtho2(float x1, float x2, float y1, float y2) wmOrtho(x1, x2, y1, y2, -100, 100); } +void wmOrthoPixelSpace(void) +{ + if(_curswin) { + int width, height; + + wm_subwindow_getsize(_curwindow, _curswin->swinid, &width, &height); + wmOrtho2(-0.375, (float)width-0.375, -0.375, (float)height-0.375); + wmLoadIdentity(); + } +} /* *************************** Framebuffer color depth, for selection codes ********************** */ -- cgit v1.2.3 From e210551a9c263d4dd4bf09b8fc2d135ffa5a634e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 20:01:02 +0000 Subject: Typo in comment --- source/blender/windowmanager/wm_event_types.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 043ad8b1dcc..8179154fc98 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -198,16 +198,16 @@ /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */ #define ISTEXTINPUT(event) (event >=' ' && event <=255) - /* test wether the event is a key on the keyboard */ + /* test whether the event is a key on the keyboard */ #define ISKEYBOARD(event) (event >=' ' && event <=320) - /* test wether the event is a mouse button */ + /* test whether the event is a mouse button */ #define ISMOUSE(event) (event >= LEFTMOUSE && event <= WHEELOUTMOUSE) - /* test wether the event is timer event */ + /* test whether the event is timer event */ #define ISTIMER(event) (event >= TIMER && event <= TIMERAUTOSAVE) - /* test wether the event is tweak event */ + /* test whether the event is tweak event */ #define ISTWEAK(event) (event >= EVT_TWEAK_L && event <= EVT_GESTURE) /* test whether event type is acceptable as hotkey, excluding modifiers */ -- cgit v1.2.3 From 0688ea5b73ff7c125747aa032b9379e07b243899 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 21:20:18 +0000 Subject: Wrong brush index for tenth brush (key is 0, brush index is 9, fun stuff) --- source/blender/editors/sculpt_paint/paint_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index ae694ed863b..a54c2b71ee7 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -173,7 +173,7 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *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_int_set(kmi->ptr, "value", 10); + RNA_int_set(kmi->ptr, "value", 9); } void ED_keymap_paint(wmKeyConfig *keyconf) -- cgit v1.2.3 From 66c3ae5c34015265466a303776644bff18076379 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 21:53:33 +0000 Subject: rigify graph was using xdot path on my system, this isnt portable but at least will work on a linux system with gnome and graphvis. --- release/scripts/ui/properties_data_armature_rigify.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index e5fc1377d0f..88e5492d565 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -239,9 +239,8 @@ class Graph(bpy.types.Operator): if saved: # if we seriously want this working everywhere we'll need some new approach - #os.system("dot -Tpng %s > %s; gnome-open %s &" % (path_dot, path_png, path_png)) - os.system("python /b/xdot.py '%s' &" % path_dot) - + os.system("dot -Tpng %s > %s; gnome-open %s &" % (path_dot, path_png, path_png)) + #os.system("python /b/xdot.py '%s' &" % path_dot) return ('FINISHED',) -- cgit v1.2.3 From 62639a55d90f1adc2e18f8d2b7d2556a761ef254 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 17 Dec 2009 22:14:43 +0000 Subject: Keymap conflict detection operator. Takes into account the hierarchical structures of keymaps as well as wildcards (KM_ANY) in event definitions, user remaps (emulate numpad, action/select mouse buttons, ...) and event values that overlap (click, press and release) For now, doesn't do anything other than print conflicts in the console. As a result, I cleaned up a lot of keymaps that had double definitions, moved some keymap items in more appropriate places, fixed wrong definitions and removed kmi that were added for testing a long long time ago. Out of all the remaining conflicts, after removing obvious non-issues, here's what remains: http://www.pasteall.org/9898 --- release/scripts/ui/space_userpref.py | 159 +++++++++++++++++---- source/blender/editors/curve/curve_ops.c | 2 +- source/blender/editors/mesh/mesh_ops.c | 14 +- source/blender/editors/object/object_ops.c | 5 +- source/blender/editors/space_file/space_file.c | 1 - source/blender/editors/space_image/space_image.c | 4 - source/blender/editors/space_text/space_text.c | 7 +- source/blender/editors/space_view3d/view3d_ops.c | 2 - source/blender/editors/transform/transform_ops.c | 4 - source/blender/makesrna/intern/rna_internal.h | 1 + source/blender/makesrna/intern/rna_wm.c | 2 + source/blender/makesrna/intern/rna_wm_api.c | 11 ++ source/blender/windowmanager/WM_api.h | 2 + .../blender/windowmanager/intern/wm_event_system.c | 4 +- source/blender/windowmanager/intern/wm_keymap.c | 42 ++++++ 15 files changed, 197 insertions(+), 63 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index d50c38f0e20..e33ac91435d 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1467,9 +1467,10 @@ class USERPREF_PT_input(bpy.types.Panel): row.separator() def draw_filtered(self, kc, layout): + filter = kc.filter.lower() for km in kc.keymaps: - filtered_items = [kmi for kmi in km.items if kmi.name.lower().find(kc.filter.lower()) != -1] + filtered_items = [kmi for kmi in km.items if filter in kmi.name.lower()] if len(filtered_items) != 0: km = km.active() @@ -1539,7 +1540,133 @@ bpy.types.register(USERPREF_PT_input) from bpy.props import * +class WM_OT_keyconfig_test(bpy.types.Operator): + "Test keyconfig for conflicts." + bl_idname = "wm.keyconfig_test" + bl_label = "Test Key Configuration for Conflicts" + + def testEntry(self, kc, entry, src = None, parent = None): + result = False + def kmistr(kmi): + if km.modal: + s = ["kmi = km.add_modal_item(\'%s\', \'%s\', \'%s\'" % (kmi.propvalue, kmi.type, kmi.value)] + else: + s = ["kmi = km.add_item(\'%s\', \'%s\', \'%s\'" % (kmi.idname, kmi.type, kmi.value)] + + if kmi.any: + s.append(", any=True") + else: + if kmi.shift: + s.append(", shift=True") + if kmi.ctrl: + s.append(", ctrl=True") + if kmi.alt: + s.append(", alt=True") + if kmi.oskey: + s.append(", oskey=True") + if kmi.key_modifier and kmi.key_modifier != 'NONE': + s.append(", key_modifier=\'%s\'" % kmi.key_modifier) + + s.append(")\n") + + props = kmi.properties + + if props is not None: + for pname in dir(props): + if props.is_property_set(pname) and not props.is_property_hidden(pname): + value = eval("props.%s" % pname) + value = _string_value(value) + if value != "": + s.append("kmi.properties.%s = %s\n" % (pname, value)) + + return "".join(s).strip() + + idname, spaceid, regionid, children = entry + km = kc.find_keymap(idname, space_type = spaceid, region_type = regionid) + + if km: + km = km.active() + + if src: + for item in km.items: + if src.compare(item): + print("===========") + print(parent.name) + print(kmistr(src)) + print(km.name) + print(kmistr(item)) + result = True + + for child in children: + if self.testEntry(kc, child, src, parent): + result = True + else: + for i in range(len(km.items)): + src = km.items[i] + + for child in children: + if self.testEntry(kc, child, src, km): + result = True + + for j in range(len(km.items) - i - 1): + item = km.items[j + i + 1] + if src.compare(item): + print("===========") + print(km.name) + print(kmistr(src)) + print(kmistr(item)) + result = True + + for child in children: + if self.testEntry(kc, child): + result = True + + return result + + def testConfig(self, kc): + result = False + for entry in KM_HIERARCHY: + if self.testEntry(kc, entry): + result = True + return result + + def execute(self, context): + wm = context.manager + kc = wm.default_keyconfig + + if self.testConfig(kc): + print("CONFLICT") + + return ('FINISHED',) + +def _string_value(value): + result = "" + if isinstance(value, str): + if value != "": + result = "\'%s\'" % value + elif isinstance(value, bool): + if value: + result = "True" + else: + result = "False" + elif isinstance(value, float): + result = "%.10f" % value + elif isinstance(value, int): + result = "%d" % value + elif getattr(value, '__len__', False): + if len(value): + result = "[" + for i in range(0, len(value)): + result += _string_value(value[i]) + if i != len(value)-1: + result += ", " + result += "]" + else: + print("Export key configuration: can't write ", value) + + return result + class WM_OT_keyconfig_export(bpy.types.Operator): "Export key configuration to a python script." bl_idname = "wm.keyconfig_export" @@ -1547,33 +1674,6 @@ class WM_OT_keyconfig_export(bpy.types.Operator): path = bpy.props.StringProperty(name="File Path", description="File path to write file to.") - def _string_value(self, value): - result = "" - if isinstance(value, str): - if value != "": - result = "\'%s\'" % value - elif isinstance(value, bool): - if value: - result = "True" - else: - result = "False" - elif isinstance(value, float): - result = "%.10f" % value - elif isinstance(value, int): - result = "%d" % value - elif getattr(value, '__len__', False): - if len(value): - result = "[" - for i in range(0, len(value)): - result += self._string_value(value[i]) - if i != len(value)-1: - result += ", " - result += "]" - else: - print("Export key configuration: can't write ", value) - - return result - def execute(self, context): if not self.properties.path: raise Exception("File path not set.") @@ -1620,7 +1720,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): for pname in dir(props): if props.is_property_set(pname) and not props.is_property_hidden(pname): value = eval("props.%s" % pname) - value = self._string_value(value) + value = _string_value(value) if value != "": f.write("kmi.properties.%s = %s\n" % (pname, value)) @@ -1714,6 +1814,7 @@ class WM_OT_keyitem_remove(bpy.types.Operator): return ('FINISHED',) bpy.ops.add(WM_OT_keyconfig_export) +bpy.ops.add(WM_OT_keyconfig_test) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 3f59e295fe4..be52952b474 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -238,7 +238,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", TFM_TILT); + WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, KM_CTRL, 0); RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", HKEY, KM_PRESS, 0, 0)->ptr, "type", 3); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index b067f894050..621e952fb6d 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -255,7 +255,6 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_extrude_move", EKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_screw", NINEKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "MESH_OT_beauty_fill", FKEY, KM_PRESS, KM_ALT, 0); @@ -263,20 +262,11 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) 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); - WM_keymap_add_item(keymap, "MESH_OT_extrude_repeat", FOURKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_edge_rotate", FIVEKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "MESH_OT_loop_to_region",SIXKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_region_to_loop",SIXKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "MESH_OT_uvs_rotate",SEVENKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_uvs_mirror",SEVENKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_colors_rotate",EIGHTKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_colors_mirror",EIGHTKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_rip_move",VKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); + /* add/remove */ WM_keymap_add_item(keymap, "MESH_OT_edge_face_add", FKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python */ diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 8def741ed2b..dbd03561c20 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -247,9 +247,6 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT); RNA_boolean_set(kmi->ptr, "toggle", 1); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", VKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT); - RNA_boolean_set(kmi->ptr, "toggle", 1); kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0); RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT); RNA_boolean_set(kmi->ptr, "toggle", 1); @@ -264,6 +261,8 @@ void ED_keymap_object(wmKeyConfig *keyconf) /* object mode supports PET now */ ED_object_generic_keymap(keyconf, keymap, TRUE); + WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 8bbdbbeb4fb..939af53b87d 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -405,7 +405,6 @@ void file_keymap(struct wmKeyConfig *keyconf) /* keys for button area (top) */ keymap= WM_keymap_find(keyconf, "FileButtons", SPACE_FILE, 0); - WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 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); diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index cde81ad7cf3..58f48f6fa07 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -234,11 +234,7 @@ void image_keymap(struct wmKeyConfig *keyconf) RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); - WM_keymap_add_item(keymap, "PAINT_OT_image_paint", LEFTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", RIGHTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_sample_color", RIGHTMOUSE, KM_PRESS, 0, 0); - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); WM_keymap_add_item(keymap, "IMAGE_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0); RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "point", 0); diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index a8d146bb7a8..821eaed1675 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -261,13 +261,12 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_uncomment", DKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN); + RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_BEGIN); + RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR); RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD); @@ -303,8 +302,6 @@ static void text_keymap(struct wmKeyConfig *keyconf) RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELUPMOUSE, KM_PRESS, 0, 0)->ptr, "lines", -1); RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELDOWNMOUSE, KM_PRESS, 0, 0)->ptr, "lines", 1); - WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_line_break", RETKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TEXT_OT_line_number", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index bc8d34b407b..27c062fee8c 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -183,8 +183,6 @@ void view3d_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0); - /* layers, shift + alt are properties set in invoke() */ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ACCENTGRAVEKEY, KM_PRESS, 0, 0)->ptr, "nr", 0); RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_layers", ONEKEY, KM_PRESS, KM_ANY, 0)->ptr, "nr", 1); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index f794d79bdd9..f9dcd6f87f4 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -773,10 +773,6 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke km = WM_keymap_add_item(keymap, "TRANSFORM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); - - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index f43db74286b..1c14d0d4c06 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -211,6 +211,7 @@ void RNA_api_operator(struct StructRNA *srna); void RNA_api_keyconfig(struct StructRNA *srna); void RNA_api_keyingset(struct StructRNA *srna); void RNA_api_keymap(struct StructRNA *srna); +void RNA_api_keymapitem(struct StructRNA *srna); void RNA_api_main(struct StructRNA *srna); void RNA_api_material(StructRNA *srna); void RNA_api_mesh(struct StructRNA *srna); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 09adb642e58..3d4899a0a51 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -997,6 +997,8 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE); RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item."); RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1); + + RNA_api_keymapitem(srna); } void RNA_def_wm(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 94a689c9f1c..0cec66fe264 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -288,5 +288,16 @@ void RNA_api_keymap(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED); } +void RNA_api_keymapitem(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "compare", "WM_keymap_item_compare"); + parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "result", 0, "Comparison result", ""); + RNA_def_function_return(func, parm); +} #endif diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index c4270fbc8b0..1702149cf8b 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -115,6 +115,8 @@ wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap); void WM_keymap_restore_to_default(struct wmKeyMap *keymap); void WM_keymap_properties_reset(struct wmKeyMapItem *kmi); void WM_keymap_restore_item_to_default(struct bContext *C, struct wmKeyMap *keymap, struct wmKeyMapItem *kmi); +int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2); +int WM_userdef_event_map(int kmitype); wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items); wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index ccc020827c5..ac4c2709688 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -709,7 +709,7 @@ void WM_event_remove_handlers(bContext *C, ListBase *handlers) } /* do userdef mappings */ -static int wm_userdef_event_map(int kmitype) +int WM_userdef_event_map(int kmitype) { switch(kmitype) { case SELECTMOUSE: @@ -754,7 +754,7 @@ static int wm_userdef_event_map(int kmitype) static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) { - int kmitype= wm_userdef_event_map(kmi->type); + int kmitype= WM_userdef_event_map(kmi->type); if(kmi->flag & KMI_INACTIVE) return 0; diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index e1f812ee45f..116bc263d71 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -453,6 +453,48 @@ char *WM_key_event_operator_string(const bContext *C, const char *opname, int op return NULL; } +int WM_keymap_item_compare(wmKeyMapItem *k1, wmKeyMapItem *k2) +{ + int k1type, k2type; + + if (k1->flag & KMI_INACTIVE || k2->flag & KMI_INACTIVE) + return 0; + + /* take event mapping into account */ + k1type = WM_userdef_event_map(k1->type); + k2type = WM_userdef_event_map(k2->type); + + if(k1type != KM_ANY && k2type != KM_ANY && k1type != k2type) + return 0; + + if(k1->val != KM_ANY && k2->val != KM_ANY) { + /* take click, press, release conflict into account */ + if (k1->val == KM_CLICK && ELEM3(k2->val, KM_PRESS, KM_RELEASE, KM_CLICK) == 0) + return 0; + if (k2->val == KM_CLICK && ELEM3(k1->val, KM_PRESS, KM_RELEASE, KM_CLICK) == 0) + return 0; + if (k1->val != k2->val) + return 0; + } + + if(k1->shift != KM_ANY && k2->shift != KM_ANY && k1->shift != k2->shift) + return 0; + + if(k1->ctrl != KM_ANY && k2->ctrl != KM_ANY && k1->ctrl != k2->ctrl) + return 0; + + if(k1->alt != KM_ANY && k2->alt != KM_ANY && k1->alt != k2->alt) + return 0; + + if(k1->oskey != KM_ANY && k2->oskey != KM_ANY && k1->oskey != k2->oskey) + return 0; + + if(k1->keymodifier != k2->keymodifier) + return 0; + + return 1; +} + /* ***************** user preferences ******************* */ int WM_keymap_user_init(wmWindowManager *wm, wmKeyMap *keymap) -- cgit v1.2.3 From 8505c5bcf357b30919907d11279b232034305a9e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Dec 2009 23:29:11 +0000 Subject: sequencer copy clipboard wasnt checking if all related strips were selected --- source/blender/blenkernel/BKE_sequencer.h | 1 + source/blender/blenkernel/intern/sequencer.c | 42 +++++++++++++++-- .../editors/space_sequencer/sequencer_edit.c | 54 +++++----------------- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 22f9278aa38..7c74dd5b3d3 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -186,6 +186,7 @@ struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); int shuffle_seq_time(ListBase * seqbasep); +int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); void seq_update_sound(struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 8b59c2982e6..c92640e295e 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -76,7 +76,7 @@ static int seqrecty= 0; //static int blender_test_break() {return 0;} /* **** XXX ******** */ - +#define SELECT 1 ListBase seqbase_clipboard; int seqbase_clipboard_frame; @@ -3283,6 +3283,42 @@ int seq_single_check(Sequence *seq) return 0; } +/* check if the selected seq's reference unselected seq's */ +int seqbase_isolated_sel_check(ListBase *seqbase) +{ + Sequence *seq; + /* is there more than 1 select */ + int ok= FALSE; + + for(seq= seqbase->first; seq; seq= seq->next) { + if(seq->flag & SELECT) { + ok= TRUE; + break; + } + } + + if(ok == FALSE) + return FALSE; + + /* test relationships */ + for(seq= seqbase->first; seq; seq= seq->next) { + if(seq->flag & SELECT) { + if(seq->type & SEQ_EFFECT) { + if(seq->seq1 && (seq->seq1->flag & SELECT)==0) return FALSE; + if(seq->seq2 && (seq->seq2->flag & SELECT)==0) return FALSE; + if(seq->seq3 && (seq->seq3->flag & SELECT)==0) return FALSE; + } + } + else if(seq->type & SEQ_EFFECT) { + if(seq->seq1 && (seq->seq1->flag & SELECT)) return FALSE; + if(seq->seq2 && (seq->seq2->flag & SELECT)) return FALSE; + if(seq->seq3 && (seq->seq3->flag & SELECT)) return FALSE; + } + } + + return TRUE; +} + /* use to impose limits when dragging/extending - so impossible situations dont happen * Cant use the SEQ_LEFTSEL and SEQ_LEFTSEL directly because the strip may be in a metastrip */ void seq_tx_handle_xlimits(Sequence *seq, int leftflag, int rightflag) @@ -3636,7 +3672,7 @@ void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) } if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) { - seq_load->flag |= 1; /* SELECT */ + seq_load->flag |= SELECT; active_seq_set(scene, seq); } @@ -3662,7 +3698,7 @@ Sequence *alloc_sequence(ListBase *lb, int cfra, int machine) *( (short *)seq->name )= ID_SEQ; seq->name[2]= 0; - seq->flag= 1; /* SELECT */ + seq->flag= SELECT; seq->start= cfra; seq->machine= machine; seq->mul= 1.0; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index dda5860900b..0a12ea2e202 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2105,52 +2105,14 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) if(ed==NULL) return OPERATOR_CANCELLED; - /* is there more than 1 select */ - tot= 0; - seq= ed->seqbasep->first; - while(seq) { - if(seq->flag & SELECT) { - tot++; - } - seq= seq->next; - } - if(tot < 1) return OPERATOR_CANCELLED;; - - - /* test relationships */ - seq= ed->seqbasep->first; - while(seq) { - if(seq->flag & SELECT) { - channel_max= MAX2(seq->machine, channel_max); - if(seq->type & SEQ_EFFECT) { - if(seq->seq1 && - (seq->seq1->flag & SELECT)==0) tot= 0; - if(seq->seq2 && - (seq->seq2->flag & SELECT)==0) tot= 0; - if(seq->seq3 && - (seq->seq3->flag & SELECT)==0) tot= 0; - } - } - else if(seq->type & SEQ_EFFECT) { - if(seq->seq1 && - (seq->seq1->flag & SELECT)) tot= 0; - if(seq->seq2 && - (seq->seq2->flag & SELECT)) tot= 0; - if(seq->seq3 && - (seq->seq3->flag & SELECT)) tot= 0; - } - if(tot==0) break; - seq= seq->next; - } - - if(tot==0) { + if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) { BKE_report(op->reports, RPT_ERROR, "Please select all related strips"); return OPERATOR_CANCELLED; } /* remove all selected from main list, and put in meta */ - seqm= alloc_sequence(ed->seqbasep, 1, channel_max); + seqm= alloc_sequence(ed->seqbasep, 1, 1); /* channel number set later */ strcpy(seqm->name+2, "MetaStrip"); seqm->type= SEQ_META; seqm->flag= SELECT; @@ -2159,11 +2121,13 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) while(seq) { next= seq->next; if(seq!=seqm && (seq->flag & SELECT)) { + channel_max= MAX2(seq->machine, channel_max); BLI_remlink(ed->seqbasep, seq); BLI_addtail(&seqm->seqbase, seq); } seq= next; } + seqm->machine= channel_max; calc_sequence(seqm); seqm->strip= MEM_callocN(sizeof(Strip), "metastrip"); @@ -2758,9 +2722,10 @@ static void seq_del_sound(Scene *scene, Sequence *seq) seq_del_sound(scene, iseq); } } - else if(seq->sound_handle) + else if(seq->sound_handle) { sound_delete_handle(scene, seq->sound_handle); - + seq->sound_handle= NULL; + } } /* TODO, validate scenes */ @@ -2775,6 +2740,11 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) seq_free_clipboard(); + if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) { + BKE_report(op->reports, RPT_ERROR, "Please select all related strips"); + return OPERATOR_CANCELLED; + } + recurs_dupli_seq(scene, ed->seqbasep, &seqbase_clipboard, FALSE); seqbase_clipboard_frame= scene->r.cfra; -- cgit v1.2.3 From 273674a2cd9a2e3266fa79a92dc7736a776ac36a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 18 Dec 2009 03:41:26 +0000 Subject: Tweaked some key shortcuts in text editor to prevent conflicts Ctrl F - open 'find' field Ctrl G - find next --- source/blender/editors/space_text/space_text.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 821eaed1675..d657725b880 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -222,7 +222,9 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_add_item(keymap, "TEXT_OT_find_set_selected", EKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_add_item(keymap, "TEXT_OT_find", GKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0); #endif @@ -242,13 +244,11 @@ static void text_keymap(struct wmKeyConfig *keyconf) if(U.uiflag & USER_MMB_PASTE) // XXX not dynamic RNA_boolean_set(WM_keymap_add_item(keymap, "TEXT_OT_paste", MIDDLEMOUSE, KM_PRESS, 0, 0)->ptr, "selection", 1); - WM_keymap_add_item(keymap, "TEXT_OT_jump", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "TEXT_OT_jump", JKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "TEXT_OT_find", GKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0); -- cgit v1.2.3 From f6e82f71a56fa76bf58eeb7bd77f2d2748a2c9e4 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 18 Dec 2009 03:47:57 +0000 Subject: RNA wrapping of Action Groups: Finished wrapping Action Groups in RNA to help debug some bugs showing up in the Animation Editors for some files from the Durian team. Access is strictly read-only for these added settings, given the trouble already caused by these problems. --- source/blender/editors/animation/anim_filter.c | 4 ++-- source/blender/makesrna/intern/rna_access.c | 2 +- source/blender/makesrna/intern/rna_action.c | 31 +++++++++++++++++++++----- source/blender/makesrna/intern/rna_fcurve.c | 5 +++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 2d9ab636642..89f9511688f 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -763,12 +763,12 @@ static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id) Object *ob= (Object *)owner_id; /* only consider if F-Curve involves pose.bones */ - if ((fcu->rna_path) && strstr(fcu->rna_path, "bones")) { + if ((fcu->rna_path) && strstr(fcu->rna_path, "pose.bones")) { bPoseChannel *pchan; char *bone_name; /* get bone-name, and check if this bone is selected */ - bone_name= BLI_getQuotedStr(fcu->rna_path, "bones["); + bone_name= BLI_getQuotedStr(fcu->rna_path, "pose.bones["); pchan= get_pose_channel(ob->pose, bone_name); if (bone_name) MEM_freeN(bone_name); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 8ae0ebacff7..59200a2de55 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -507,7 +507,7 @@ int RNA_struct_is_a(StructRNA *type, StructRNA *srna) PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier) { - if(identifier[0]=='[' && identifier[1]=='"') { + if(identifier[0]=='[' && identifier[1]=='"') { // " (dummy comment to avoid confusing some function lists in text editors) /* id prop lookup, not so common */ PropertyRNA *r_prop= NULL; PointerRNA r_ptr; /* only support single level props */ diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 4cb7080f05e..3f6729136d5 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -29,6 +29,7 @@ #include "rna_internal.h" +#include "DNA_anim_types.h" #include "DNA_action_types.h" #include "DNA_scene_types.h" @@ -39,6 +40,21 @@ #ifdef RNA_RUNTIME +static void rna_ActionGroup_channels_next(CollectionPropertyIterator *iter) +{ + ListBaseIterator *internal= iter->internal; + FCurve *fcu= (FCurve*)internal->link; + bActionGroup *grp= fcu->grp; + + /* only continue if the next F-Curve (if existant) belongs in the same group */ + if ((fcu->next) && (fcu->next->grp == grp)) + internal->link= (Link*)fcu->next; + else + internal->link= NULL; + + iter->valid= (internal->link != NULL); +} + #else static void rna_def_dopesheet(BlenderRNA *brna) @@ -167,13 +183,18 @@ static void rna_def_action_group(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", ""); RNA_def_struct_name_property(srna, prop); - /* dna warns not to treat the Action Channel listbase in the Action Group struct like a - normal listbase. I'll leave this here but comment out, for Joshua to review. He can - probably shed some more light on why this is */ - /*prop= RNA_def_property(srna, "channels", PROP_COLLECTION, PROP_NONE); + /* WARNING: be very careful when working with this list, since the endpoint is not + * defined like a standard ListBase. Adding/removing channels from this list needs + * extreme care, otherwise the F-Curve list running through adjacent groups does + * not match up with the one stored in the Action, resulting in curves which do not + * show up in animation editors. For that reason, such operations are currently + * prohibited. + */ + prop= RNA_def_property(srna, "channels", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "channels", NULL); RNA_def_property_struct_type(prop, "FCurve"); - RNA_def_property_ui_text(prop, "Channels", "F-Curves in this group.");*/ + RNA_def_property_collection_funcs(prop, 0, "rna_ActionGroup_channels_next", 0, 0, 0, 0, 0); + RNA_def_property_ui_text(prop, "Channels", "F-Curves in this group."); prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_SELECTED); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 97918556976..f3d36d60c23 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -925,6 +925,11 @@ static void rna_def_fcurve(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Driver", "Channel Driver (only set for Driver F-Curves)"); + prop= RNA_def_property(srna, "group", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "grp"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // XXX this is not editable for now, since editing this will easily break the visible hierarchy + RNA_def_property_ui_text(prop, "Group", "Action Group that this F-Curve belongs to."); + /* Path + Array Index */ prop= RNA_def_property(srna, "data_path", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_FCurve_RnaPath_get", "rna_FCurve_RnaPath_length", "rna_FCurve_RnaPath_set"); -- cgit v1.2.3 From f09d2e6bc164fec37644d00757723076a1f40ac7 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Fri, 18 Dec 2009 09:50:14 +0000 Subject: Cocoa : fix Dropped on application event was not sent --- intern/ghost/intern/GHOST_SystemCocoa.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 37befdf7f85..41601cd1c49 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -958,7 +958,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleWindowEvent(GHOST_TEventType eventType, GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType, GHOST_WindowCocoa* window, int mouseX, int mouseY, void* data) { - if (!validWindow(window)) { + if (!validWindow(window) && (eventType != GHOST_kEventDraggingDropOnIcon)) { return GHOST_kFailure; } switch(eventType) -- cgit v1.2.3 From eb17b95e55dc951ad4ad16700629518580fdc62e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 18 Dec 2009 11:26:26 +0000 Subject: Bugfix: sculpt brush size was computed wrong in perspective view with scaled/translated objects. --- source/blender/editors/sculpt_paint/sculpt.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index ce0a4d149bb..09b99f4f43c 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1633,13 +1633,19 @@ static void SCULPT_OT_radial_control(wmOperatorType *ot) /**** Operator for applying a stroke (various attributes including mouse path) using the current brush. ****/ -static float unproject_brush_radius(ViewContext *vc, float center[3], float offset) +static float unproject_brush_radius(Object *ob, ViewContext *vc, float center[3], float offset) { - float delta[3]; + float delta[3], scale, loc[3]; + + mul_v3_m4v3(loc, ob->obmat, center); - initgrabz(vc->rv3d, center[0], center[1], center[2]); + initgrabz(vc->rv3d, loc[0], loc[1], loc[2]); window_to_3d_delta(vc->ar, delta, offset, 0); - return len_v3(delta); + + scale= fabsf(mat4_to_scale(ob->obmat)); + scale= (scale == 0.0f)? 1.0f: scale; + + return len_v3(delta)/scale; } static void sculpt_cache_free(StrokeCache *cache) @@ -1738,7 +1744,7 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P cache->pixel_radius = brush->size; if(cache->first_time) - cache->initial_radius = unproject_brush_radius(cache->vc, cache->true_location, brush->size); + cache->initial_radius = unproject_brush_radius(ss->ob, cache->vc, cache->true_location, brush->size); if(brush->flag & BRUSH_SIZE_PRESSURE) { cache->pixel_radius *= cache->pressure; @@ -1754,7 +1760,7 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P 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(paint_stroke_view_context(stroke), + cache->radius = unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke), cache->true_location, cache->pixel_radius); cache->rotation = atan2(dy, dx); } -- cgit v1.2.3 From 4f3af9980f61e8203016714a2314ca51e1902362 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 18 Dec 2009 11:55:18 +0000 Subject: Keyframing Bugfix: This commit attempts to fix some of the bugs which were causing grief with some Durian animation tests. In one of those files, the order in which F-Curves were stored was seriously messed up; causing problems with some F-Curves still existing but unable to be edited (i.e. still showing up in the Object/Action summaries but nowhere else) since the standard assumptions for the way the data was stored had been violated. I've recoded the code that ensures that when F-Curves get added to Action Groups (and the Action that contains these) it ends up in the right places, since it was very likely that all the F-Curves would only ever get added near the end of the list. Hopefully this is enough to prevent these problems reoccurring, though I have a feeling there may still be one or two buggy tools which caused the problems in the first place. --- source/blender/blenkernel/intern/action.c | 117 +++++++++++------------------- 1 file changed, 42 insertions(+), 75 deletions(-) diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index ace1292f813..303cd208b7c 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -254,101 +254,68 @@ void set_active_action_group (bAction *act, bActionGroup *agrp, short select) * - always adds at the end of the group */ void action_groups_add_channel (bAction *act, bActionGroup *agrp, FCurve *fcurve) -{ - FCurve *fcu; - short done=0; - +{ /* sanity checks */ if (ELEM3(NULL, act, agrp, fcurve)) return; - /* if no channels, just add to two lists at the same time */ + /* if no channels anywhere, just add to two lists at the same time */ if (act->curves.first == NULL) { fcurve->next = fcurve->prev = NULL; agrp->channels.first = agrp->channels.last = fcurve; act->curves.first = act->curves.last = fcurve; - - fcurve->grp= agrp; - return; } - /* try to find a channel to slot this in before/after */ - for (fcu= act->curves.first; fcu; fcu= fcu->next) { - /* if channel has no group, then we have ungrouped channels, which should always occur after groups */ - if (fcu->grp == NULL) { - BLI_insertlinkbefore(&act->curves, fcu, fcurve); - - if (agrp->channels.first == NULL) - agrp->channels.first= fcurve; - agrp->channels.last= fcurve; + /* if the group already has channels, the F-Curve can simply be added to the list + * (i.e. as the last channel in the group) + */ + else if (agrp->channels.first) { + /* if the group's last F-Curve is the action's last F-Curve too, + * then set the F-Curve as the last for the action first so that + * the lists will be in sync after linking + */ + if (agrp->channels.last == act->curves.last) + act->curves.last= fcurve; - done= 1; - break; - } + /* link in the given F-Curve after the last F-Curve in the group, + * which means that it should be able to fit in with the rest of the + * list seamlessly + */ + BLI_insertlinkafter(&agrp->channels, agrp->channels.last, fcurve); + } + + /* otherwise, need to find the nearest F-Curve in group before/after current to link with */ + else { + bActionGroup *grp; - /* if channel has group after current, we can now insert (otherwise we have gone too far) */ - else if (fcu->grp == agrp->next) { - BLI_insertlinkbefore(&act->curves, fcu, fcurve); - - if (agrp->channels.first == NULL) - agrp->channels.first= fcurve; - agrp->channels.last= fcurve; - - done= 1; - break; - } + /* firstly, link this F-Curve to the group */ + agrp->channels.first = agrp->channels.last = fcurve; - /* if channel has group we're targeting, check whether it is the last one of these */ - else if (fcu->grp == agrp) { - if ((fcu->next) && (fcu->next->grp != agrp)) { - BLI_insertlinkafter(&act->curves, fcu, fcurve); - agrp->channels.last= fcurve; - done= 1; - break; - } - else if (fcu->next == NULL) { - BLI_addtail(&act->curves, fcurve); - agrp->channels.last= fcurve; - done= 1; + /* step through the groups preceeding this one, finding the F-Curve there to attach this one after */ + for (grp= agrp->prev; grp; grp= grp->prev) { + /* if this group has F-Curves, we want weave the given one in right after the last channel there, + * but via the Action's list not this group's list + * - this is so that the F-Curve is in the right place in the Action, + * but won't be included in the previous group + */ + if (grp->channels.last) { + /* once we've added, break here since we don't need to search any further... */ + BLI_insertlinkafter(&act->curves, grp->channels.last, fcurve); break; } } - /* if channel has group before target, check whether the next one is something after target */ - else if (fcu->grp == agrp->prev) { - if (fcu->next) { - if ((fcu->next->grp != fcu->grp) && (fcu->next->grp != agrp)) { - BLI_insertlinkafter(&act->curves, fcu, fcurve); - - agrp->channels.first= fcurve; - agrp->channels.last= fcurve; - - done= 1; - break; - } - } - else { - BLI_insertlinkafter(&act->curves, fcu, fcurve); - - agrp->channels.first= fcurve; - agrp->channels.last= fcurve; - - done= 1; - break; - } - } + /* if grp is NULL, that means we fell through, and this F-Curve should be added as the new first + * since group is (effectively) the first group. Thus, the existing first F-Curve becomes the + * second in the chain, etc. etc. + */ + if (grp == NULL) + BLI_insertlinkbefore(&act->curves, act->curves.first, fcurve); } - /* only if added, set channel as belonging to this group */ - if (done) { - //printf("FCurve added to group \n"); - fcurve->grp= agrp; - } - else { - printf("Error: FCurve '%s' couldn't be added to Group '%s' \n", fcurve->rna_path, agrp->name); - BLI_addtail(&act->curves, fcurve); - } + /* set the F-Curve's new group */ + fcurve->grp= agrp; } /* Remove the given channel from all groups */ -- cgit v1.2.3 From 955f7c92881c6b1d87b2aa71098dc8a989d6155b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 18 Dec 2009 13:08:11 +0000 Subject: Fix #20423: particle system deflection settings were not read correctly, causing crashes on free and duplication. --- source/blender/blenloader/intern/readfile.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 232af442a85..f2621a1b449 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3070,6 +3070,12 @@ static void direct_link_pointcache_list(FileData *fd, ListBase *ptcaches, PointC } } +void lib_link_partdeflect(FileData *fd, ID *id, PartDeflect *pd) +{ + if(pd && pd->tex) + pd->tex=newlibadr_us(fd, id->lib, pd->tex); +} + static void lib_link_particlesettings(FileData *fd, Main *main) { ParticleSettings *part; @@ -3086,6 +3092,9 @@ static void lib_link_particlesettings(FileData *fd, Main *main) part->eff_group = newlibadr(fd, part->id.lib, part->eff_group); part->bb_ob = newlibadr(fd, part->id.lib, part->bb_ob); + lib_link_partdeflect(fd, &part->id, part->pd); + lib_link_partdeflect(fd, &part->id, part->pd2); + if(part->effector_weights) part->effector_weights->group = newlibadr(fd, part->id.lib, part->effector_weights->group); @@ -3122,12 +3131,20 @@ static void lib_link_particlesettings(FileData *fd, Main *main) } } +static void direct_link_partdeflect(PartDeflect *pd) +{ + if(pd) pd->rng=NULL; +} + static void direct_link_particlesettings(FileData *fd, ParticleSettings *part) { part->adt= newdataadr(fd, part->adt); part->pd= newdataadr(fd, part->pd); part->pd2= newdataadr(fd, part->pd2); + direct_link_partdeflect(part->pd); + direct_link_partdeflect(part->pd2); + part->effector_weights = newdataadr(fd, part->effector_weights); if(!part->effector_weights) part->effector_weights = BKE_add_effector_weights(part->eff_group); @@ -3714,8 +3731,7 @@ static void lib_link_object(FileData *fd, Main *main) /* texture field */ if(ob->pd) - if(ob->pd->tex) - ob->pd->tex=newlibadr_us(fd, ob->id.lib, ob->pd->tex); + lib_link_partdeflect(fd, &ob->id, ob->pd); if(ob->soft) ob->soft->effector_weights->group = newlibadr(fd, ob->id.lib, ob->soft->effector_weights->group); @@ -4030,8 +4046,7 @@ static void direct_link_object(FileData *fd, Object *ob) } ob->pd= newdataadr(fd, ob->pd); - if(ob->pd) - ob->pd->rng=NULL; + direct_link_partdeflect(ob->pd); ob->soft= newdataadr(fd, ob->soft); if(ob->soft) { SoftBody *sb= ob->soft; -- cgit v1.2.3 From c836b0ae18cc49e5078420b58a70afee44727937 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Fri, 18 Dec 2009 13:13:14 +0000 Subject: Cocoa : add confirmation request before opening a .blend file (dropped on Blender icon or dbl-clicked in Finder) --- intern/ghost/intern/GHOST_SystemCocoa.h | 30 ++++++++++++++++++------------ intern/ghost/intern/GHOST_SystemCocoa.mm | 31 ++++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index bcc5da72b2e..81eb8978588 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -140,6 +140,24 @@ public: */ GHOST_TUns8 handleQuitRequest(); + /** + * Handle Cocoa openFile event + * Display confirmation request panel if changes performed since last save + */ + bool handleOpenDocumentRequest(void *filepathStr); + + /** + * Handles a drag'n'drop destination event. Called by GHOST_WindowCocoa window subclass + * @param eventType The type of drag'n'drop event + * @param draggedObjectType The type object concerned (currently array of file names, string, TIFF image) + * @param mouseX x mouse coordinate (in cocoa base window coordinates) + * @param mouseY y mouse coordinate + * @param window The window on which the event occured + * @return Indication whether the event was handled. + */ + GHOST_TSuccess handleDraggingEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType, + GHOST_WindowCocoa* window, int mouseX, int mouseY, void* data); + /*************************************************************************************** ** Cursor management functionality ***************************************************************************************/ @@ -207,18 +225,6 @@ public: GHOST_TSuccess handleApplicationBecomeActiveEvent(); - /** - * Handles a drag'n'drop destination event. Called by GHOST_WindowCocoa window subclass - * @param eventType The type of drag'n'drop event - * @param draggedObjectType The type object concerned (currently array of file names, string, TIFF image) - * @param mouseX x mouse coordinate (in cocoa base window coordinates) - * @param mouseY y mouse coordinate - * @param window The window on which the event occured - * @return Indication whether the event was handled. - */ - GHOST_TSuccess handleDraggingEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType, - GHOST_WindowCocoa* window, int mouseX, int mouseY, void* data); - protected: /** * Initializes the system. diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 41601cd1c49..71465822bee 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -436,9 +436,7 @@ int cocoa_request_qtcodec_settings(bContext *C, wmOperator *op) - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { - NSLog(@"\nGet open file event from cocoa : %@",filename); - systemCocoa->handleDraggingEvent(GHOST_kEventDraggingDropOnIcon, GHOST_kDragnDropTypeFilenames, nil, 0, 0, [NSArray arrayWithObject:filename]); - return YES; + return systemCocoa->handleOpenDocumentRequest(filename); } - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender @@ -1086,6 +1084,33 @@ GHOST_TUns8 GHOST_SystemCocoa::handleQuitRequest() return GHOST_kExitCancel; } +bool GHOST_SystemCocoa::handleOpenDocumentRequest(void *filepathStr) +{ + NSString *filepath = (NSString*)filepathStr; + int confirmOpen = NSAlertAlternateReturn; + NSArray *windowsList; + + //Check open windows if some changes are not saved + if (m_windowManager->getAnyModifiedState()) + { + confirmOpen = NSRunAlertPanel([NSString stringWithFormat:@"Opening %@",[filepath lastPathComponent]], + @"Current document has not been saved.\nDo you really want to proceed?", + @"Cancel", @"Open", nil); + } + + //Give back focus to the blender window + windowsList = [NSApp orderedWindows]; + if ([windowsList count]) { + [[windowsList objectAtIndex:0] makeKeyAndOrderFront:nil]; + } + + if (confirmOpen == NSAlertAlternateReturn) + { + handleDraggingEvent(GHOST_kEventDraggingDropOnIcon,GHOST_kDragnDropTypeFilenames,NULL,0,0, [NSArray arrayWithObject:filepath]); + return YES; + } + else return NO; +} GHOST_TSuccess GHOST_SystemCocoa::handleTabletEvent(void *eventPtr, short eventType) { -- cgit v1.2.3 From 50544ea6457fb1a05eedd184251e33956deab03f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 18 Dec 2009 13:28:03 +0000 Subject: - sequence strips without scenes would crash on display - appending scenes would not append the sound and scene ID's for sequence strips - reload button in sequence header now reloads sounds as well. - redrawing the sequence image view didnt work while plaing (unless play was activated from that region) - generic functions for running a callback on sequence strips recursively. seqbase_recursive_apply() and seq_recursive_apply() - bind marker with camera was set to home key, use Ctrl+B instead. --- source/blender/blenkernel/BKE_sequencer.h | 4 ++ source/blender/blenkernel/intern/sequencer.c | 74 +++++++++++++++------- source/blender/blenloader/intern/readfile.c | 11 ++++ source/blender/editors/animation/anim_markers.c | 3 +- source/blender/editors/screen/screen_ops.c | 8 +++ .../editors/space_sequencer/sequencer_edit.c | 2 + source/blender/makesrna/intern/rna_sequencer.c | 4 +- 7 files changed, 80 insertions(+), 26 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 7c74dd5b3d3..c078b92af2d 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -137,6 +137,10 @@ struct SeqEffectHandle { /* sequence.c */ void printf_strip(struct Sequence *seq); +/* apply functions recursively */ +void seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg); +void seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg); + // extern void seq_free_sequence(struct Scene *scene, struct Sequence *seq); void seq_free_strip(struct Strip *strip); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index c92640e295e..84458b0e921 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -87,6 +87,20 @@ void printf_strip(Sequence *seq) fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0)); } +void seqbase_recursive_apply(ListBase *seqbase, int (*apply_func)(Sequence *seq, void *), void *arg) +{ + Sequence *iseq; + for(iseq= seqbase->first; iseq; iseq= iseq->next) { + seq_recursive_apply(iseq, apply_func, arg); + } +} + +void seq_recursive_apply(Sequence *seq, int (*apply_func)(Sequence *, void *), void *arg) +{ + if(apply_func(seq, arg) && seq->seqbase.first) + seqbase_recursive_apply(&seq->seqbase, apply_func, arg); +} + /* ********************************************************************** alloc / free functions ********************************************************************** */ @@ -252,7 +266,7 @@ void seq_free_editing(Scene *scene) { Editing *ed = scene->ed; MetaStack *ms; - Sequence *seq, *nseq; + Sequence *seq; if(ed==NULL) return; @@ -689,28 +703,22 @@ void sort_seq(Scene *scene) } -void clear_scene_in_allseqs(Scene *sce) +static int clear_scene_in_allseqs_cb(Sequence *seq, void *arg_pt) { - Scene *sce1; - Editing *ed; - Sequence *seq; - - /* when a scene is deleted: test all seqs */ - - sce1= G.main->scene.first; - while(sce1) { - if(sce1!=sce && sce1->ed) { - ed= sce1->ed; - - SEQ_BEGIN(ed, seq) { + if(seq->scene==(Scene *)arg_pt) + seq->scene= NULL; + return 1; +} - if(seq->scene==sce) seq->scene= 0; +void clear_scene_in_allseqs(Scene *scene) +{ + Scene *scene_iter; - } - SEQ_END + /* when a scene is deleted: test all seqs */ + for(scene_iter= G.main->scene.first; scene_iter; scene_iter= scene_iter->id.next) { + if(scene_iter != scene && scene_iter->ed) { + seqbase_recursive_apply(&scene_iter->ed->seqbase, clear_scene_in_allseqs_cb, scene); } - - sce1= sce1->id.next; } } @@ -2033,9 +2041,14 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int Render *re; RenderResult rres; char scenename[64]; - int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; - int sce_valid =sce && (sce->camera || have_seq); - + int have_seq= FALSE; + int sce_valid= FALSE; + + if(sce) { + have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; + sce_valid= (sce->camera || have_seq); + } + if (se->ibuf == NULL && sce_valid && !build_proxy_run) { se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); if (se->ibuf) { @@ -3217,6 +3230,23 @@ static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo) } #endif +static int seq_sound_reload_cb(Sequence *seq, void *arg_pt) +{ + if (seq->type==SEQ_SOUND && seq->sound) { + Scene *scene= (Scene *)arg_pt; + if(seq->sound_handle) + sound_delete_handle(scene, seq->sound_handle); + + seq->sound_handle = sound_new_handle(scene, seq->sound, seq->start, seq->start + seq->strip->len, 0); + return 0; + } + return 1; /* recurse meta's */ +} +void seqbase_sound_reload(Scene *scene, ListBase *seqbase) +{ + seqbase_recursive_apply(seqbase, seq_sound_reload_cb, (void *)scene); +} + /* seq funcs's for transforming internally notice the difference between start/end and left/right. diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index f2621a1b449..9548db3278a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4232,6 +4232,7 @@ static void lib_link_scene(FileData *fd, Main *main) if(seq->ipo) seq->ipo= newlibadr_us(fd, sce->id.lib, seq->ipo); if(seq->scene) seq->scene= newlibadr(fd, sce->id.lib, seq->scene); if(seq->sound) { + seq->sound_handle= NULL; if(seq->type == SEQ_HD_SOUND) seq->type = SEQ_SOUND; else @@ -11281,6 +11282,16 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce) if(sce->gpd) expand_doit(fd, mainvar, sce->gpd); + if(sce->ed) { + Sequence *seq; + + SEQ_BEGIN(sce->ed, seq) { + if(seq->scene) expand_doit(fd, mainvar, seq->scene); + if(seq->sound) expand_doit(fd, mainvar, seq->sound); + } + SEQ_END + } + #ifdef DURIAN_CAMERA_SWITCH { TimeMarker *marker; diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 0d519c87a97..4cc3a8d343f 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -1062,7 +1062,6 @@ void ED_marker_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); #ifdef DURIAN_CAMERA_SWITCH - WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", HOMEKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", BKEY, KM_PRESS, KM_CTRL, 0); #endif - } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 977d04a7f45..55a977da663 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2332,6 +2332,14 @@ static int match_region_with_redraws(int spacetype, int regiontype, int redraws) if(spacetype==SPACE_TIME) return 1; } + else if (regiontype==RGN_TYPE_PREVIEW) { + switch (spacetype) { + case SPACE_SEQ: + if(redraws & (TIME_SEQ|TIME_ALL_ANIM_WIN)) + return 1; + break; + } + } return 0; } diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 0a12ea2e202..6704cf0ef62 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1672,6 +1672,8 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op) free_imbuf_seq(scene, &ed->seqbase, FALSE); + seqbase_sound_reload(scene, &ed->seqbase); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c1ca156c9bf..767da5dc042 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -235,9 +235,9 @@ static int rna_Sequence_name_length(PointerRNA *ptr) static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) { Scene *scene= (Scene*)ptr->id.data; - Editing *ed= seq_give_editing(scene, FALSE); +// Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq= (Sequence*)ptr->data; - Sequence *iseq; +// Sequence *iseq; BLI_strncpy(seq->name+2, value, sizeof(seq->name)-2); seqUniqueName(&scene->ed->seqbase, seq); -- cgit v1.2.3 From be819013174ad5c0978b9575b251ec2ec4003d4e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 18 Dec 2009 13:35:30 +0000 Subject: Fix #20401: hair combing with limit selection to visible does not comb all particles. --- source/blender/editors/physics/particle_edit.c | 27 ++++++++------------------ 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index ac986ba7df6..8bacad3c132 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -373,7 +373,6 @@ static void PE_set_view3d_data(bContext *C, PEData *data) static int key_test_depth(PEData *data, float co[3]) { View3D *v3d= data->vc.v3d; - RegionView3D *rv3d= data->vc.rv3d; double ux, uy, uz; float depth; short wco[3], x,y; @@ -393,26 +392,16 @@ static int key_test_depth(PEData *data, float co[3]) x=wco[0]; y=wco[1]; - // XXX verify .. + x+= (short)data->vc.ar->winrct.xmin; + y+= (short)data->vc.ar->winrct.ymin; - if(rv3d->depths && xdepths->w && ydepths->h) { - /* the 0.0001 is an experimental threshold to make selecting keys right next to a surface work better */ - if((float)uz - 0.0001 > rv3d->depths->depths[y*rv3d->depths->w+x]) - return 0; - else - return 1; - } - else { - x+= (short)data->vc.ar->winrct.xmin; - y+= (short)data->vc.ar->winrct.ymin; + view3d_validate_backbuf(&data->vc); + glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth); - glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth); - - if((float)uz - 0.0001 > depth) - return 0; - else - return 1; - } + if((float)uz - 0.0001 > depth) + return 0; + else + return 1; } static int key_inside_circle(PEData *data, float rad, float co[3], float *distance) -- cgit v1.2.3 From 7d19734add32150a13d408adc796c9287e551228 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Fri, 18 Dec 2009 16:35:41 +0000 Subject: OSX : add mounted network volumes to the system folder list in open/save file dialog --- source/blender/editors/space_file/fsmenu.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index bd39a10f661..214c5ff685b 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -345,7 +345,7 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) CFURLRef cfURL = NULL; CFStringRef pathString = NULL; - /* First get mounted volumes */ + /* First get local mounted volumes */ list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL); pathesArray = LSSharedFileListCopySnapshot(list, &seed); pathesCount = CFArrayGetCount(pathesArray); @@ -374,7 +374,29 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) CFRelease(pathesArray); CFRelease(list); - /* Then get user favorite places */ + /* Then get network volumes */ + err = noErr; + for (i=1; err!=nsvErr; i++) + { + FSRef dir; + FSVolumeRefNum volRefNum; + struct GetVolParmsInfoBuffer volParmsBuffer; + unsigned char path[FILE_MAXDIR+FILE_MAXFILE]; + + err = FSGetVolumeInfo(kFSInvalidVolumeRefNum, i, &volRefNum, kFSVolInfoNone, NULL, NULL, &dir); + if (err != noErr) + continue; + + err = FSGetVolumeParms(volRefNum, &volParmsBuffer, sizeof(volParmsBuffer)); + if ((err != noErr) || (volParmsBuffer.vMServerAdr == 0)) /* Exclude local devices */ + continue; + + + FSRefMakePath(&dir, path, FILE_MAXDIR+FILE_MAXFILE); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, (char *)path, 1, 0); + } + + /* Finally get user favorite places */ list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); pathesArray = LSSharedFileListCopySnapshot(list, &seed); pathesCount = CFArrayGetCount(pathesArray); -- cgit v1.2.3 From 996152de58c4dcf45637d06a6f0b777db8e95147 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 18 Dec 2009 17:15:58 +0000 Subject: Bugfix: sculpt mode could crash using a mesh without faces. --- source/blender/blenlib/intern/pbvh.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index ff68e3b0881..6f33fab2571 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -504,7 +504,8 @@ void BLI_pbvh_build_mesh(PBVH *bvh, MFace *faces, MVert *verts, int totface, int BB_expand(&cb, bbc->bcentroid); } - pbvh_build(bvh, &cb, prim_bbc, totface); + if(totface) + pbvh_build(bvh, &cb, prim_bbc, totface); MEM_freeN(prim_bbc); MEM_freeN(bvh->vert_bitmap); @@ -544,7 +545,8 @@ void BLI_pbvh_build_grids(PBVH *bvh, DMGridData **grids, DMGridAdjacency *gridad BB_expand(&cb, bbc->bcentroid); } - pbvh_build(bvh, &cb, prim_bbc, totgrid); + if(totgrid) + pbvh_build(bvh, &cb, prim_bbc, totgrid); MEM_freeN(prim_bbc); } -- cgit v1.2.3 From de7ffa1bac820a45a65e31cd367bc446153c89af Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 18 Dec 2009 23:17:23 +0000 Subject: make subsurf keys - Ctrl+1,2,3,4, apply to all selected objects. not just the active ones --- release/scripts/op/object.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index a6ab3dcc93f..6a7b735e04b 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -92,23 +92,28 @@ class SubdivisionSet(bpy.types.Operator): def execute(self, context): level = self.properties.level - ob = context.active_object - for mod in ob.modifiers: - if mod.type == 'MULTIRES': - if level < mod.total_levels: - if ob.mode == 'SCULPT' and mod.sculpt_levels != level: - mod.sculpt_levels = level - elif ob.mode == 'OBJECT' and mod.levels != level: + + def set_object_subd(obj): + for mod in obj.modifiers: + if mod.type == 'MULTIRES': + if level < mod.total_levels: + if obj.mode == 'SCULPT' and mod.sculpt_levels != level: + mod.sculpt_levels = level + elif obj.mode == 'OBJECT' and mod.levels != level: + mod.levels = level + return + elif mod.type == 'SUBSURF': + if mod.levels != level: mod.levels = level - return ('FINISHED',) - elif mod.type == 'SUBSURF': - if mod.levels != level: - mod.levels = level - return ('FINISHED',) - - # adda new modifier - mod = ob.modifiers.new("Subsurf", 'SUBSURF') - mod.levels = level + return + + # adda new modifier + mod = obj.modifiers.new("Subsurf", 'SUBSURF') + mod.levels = level + + for obj in context.selected_editable_objects: + set_object_subd(obj) + return ('FINISHED',) -- cgit v1.2.3 From 3e23f002b42dc1892665e1705f9f107c4e047b8a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 19 Dec 2009 10:27:23 +0000 Subject: fix for non Euler-XYZ rotations... - Camera to 3D view didnt check for rotation order. - Fly mode didnt check for rotation order. added util functions. - object_apply_mat4(ob, mat4); applies a 4x4 matrix to an objects loc,scale,rot (accounting for rotation modes) - object_mat3_to_rot(ob, mat3, use_compat); apply a 3x3 matrix to the objects rotation, option to use a euler compatible with the existing euler. --- source/blender/blenkernel/BKE_object.h | 2 ++ source/blender/blenkernel/intern/object.c | 26 +++++++++++++++++++++++ source/blender/editors/object/object_transform.c | 12 +---------- source/blender/editors/space_view3d/view3d_view.c | 14 +++++++----- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index aeb33cd3628..3e239e91453 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -93,8 +93,10 @@ void disable_speed_curve(int val); float bsystem_time(struct Scene *scene, struct Object *ob, float cfra, float ofs); void object_scale_to_mat3(struct Object *ob, float mat[][3]); void object_rot_to_mat3(struct Object *ob, float mat[][3]); +void object_mat3_to_rot(struct Object *ob, float mat[][3], int use_compat); void object_to_mat3(struct Object *ob, float mat[][3]); void object_to_mat4(struct Object *ob, float mat[][4]); +void object_apply_mat4(struct Object *ob, float mat[][4]); void set_no_parent_ipo(int val); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 9a7a3501031..676ab081533 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1618,6 +1618,32 @@ void object_rot_to_mat3(Object *ob, float mat[][3]) mul_m3_m3m3(mat, dmat, rmat); } +void object_mat3_to_rot(Object *ob, float mat[][3], int use_compat) +{ + if (ob->rotmode == ROT_MODE_QUAT) + mat3_to_quat(ob->quat, mat); + else if (ob->rotmode == ROT_MODE_AXISANGLE) + mat3_to_axis_angle(ob->rotAxis, &ob->rotAngle, mat); + else { + if(use_compat) { + float eul[3]; + VECCOPY(eul, ob->rot); + mat3_to_compatible_eulO(ob->rot, eul, ob->rotmode, mat); + } + else + mat3_to_eulO(ob->rot, ob->rotmode, mat); + } +} + +void object_apply_mat4(Object *ob, float mat[][4]) +{ + float mat3[3][3]; + VECCOPY(ob->loc, mat[3]); + mat4_to_size(ob->size, mat); + copy_m3_m4(mat3, mat); + object_mat3_to_rot(ob, mat3, 0); +} + void object_to_mat3(Object *ob, float mat[][3]) /* no parent */ { float smat[3][3]; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index cd2361a1cc0..a16b0f2a7ac 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -555,17 +555,7 @@ static int visual_transform_apply_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { where_is_object(scene, ob); - - VECCOPY(ob->loc, ob->obmat[3]); - mat4_to_size(ob->size,ob->obmat); - - if (ob->rotmode == ROT_MODE_QUAT) - mat4_to_quat(ob->quat, ob->obmat); - else if (ob->rotmode == ROT_MODE_AXISANGLE) - mat4_to_axis_angle(ob->rotAxis, &ob->rotAngle, ob->obmat); - else - mat4_to_eul(ob->rot,ob->obmat); - + object_apply_mat4(ob, ob->obmat); where_is_object(scene, ob); change = 1; diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 424ae13ca18..8fc6e365c46 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -395,6 +395,7 @@ void VIEW3D_OT_smoothview(wmOperatorType *ot) static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob) { float dvec[3]; + float mat3[3][3]; dvec[0]= rv3d->dist*rv3d->viewinv[2][0]; dvec[1]= rv3d->dist*rv3d->viewinv[2][1]; @@ -404,7 +405,10 @@ static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob) sub_v3_v3v3(ob->loc, ob->loc, rv3d->ofs); rv3d->viewquat[0]= -rv3d->viewquat[0]; - quat_to_eul( ob->rot,rv3d->viewquat); + // quat_to_eul( ob->rot,rv3d->viewquat); // in 2.4x for xyz eulers only + quat_to_mat3(mat3, rv3d->viewquat); + object_mat3_to_rot(ob, mat3, 0); + rv3d->viewquat[0]= -rv3d->viewquat[0]; ob->recalc= OB_RECALC_OB; @@ -1914,7 +1918,7 @@ typedef struct FlyInfo { #define FLY_CANCEL 1 #define FLY_CONFIRM 2 -int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) +static int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) { float upvec[3]; // tmp float mat[3][3]; @@ -2041,7 +2045,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) else if (fly->persp_backup==RV3D_CAMOB) { /* camera */ float mat3[3][3]; copy_m3_m4(mat3, v3d->camera->obmat); - mat3_to_compatible_eul( v3d->camera->rot, fly->rot_backup,mat3); + object_mat3_to_rot(v3d->camera, mat3, TRUE); DAG_id_flush_update(&v3d->camera->id, OB_RECALC_OB); #if 0 //XXX2.5 @@ -2078,7 +2082,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) return OPERATOR_CANCELLED; } -void flyEvent(FlyInfo *fly, wmEvent *event) +static void flyEvent(FlyInfo *fly, wmEvent *event) { if (event->type == TIMER && event->customdata == fly->timer) { fly->redraw = 1; @@ -2201,7 +2205,7 @@ void flyEvent(FlyInfo *fly, wmEvent *event) } //int fly_exec(bContext *C, wmOperator *op) -int flyApply(FlyInfo *fly) +static int flyApply(FlyInfo *fly) { /* fly mode - Shift+F -- cgit v1.2.3 From 7e8af5868e3eea49f544a0487a01cb2134b6cb4d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 19 Dec 2009 13:48:50 +0000 Subject: utility module for introspecting RNA for doc generation. --- release/scripts/modules/rna_info.py | 355 ++++++++++++++++++++++++++++++++++++ 1 file changed, 355 insertions(+) create mode 100644 release/scripts/modules/rna_info.py diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py new file mode 100644 index 00000000000..8e1d16a46cd --- /dev/null +++ b/release/scripts/modules/rna_info.py @@ -0,0 +1,355 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# classes for extracting info from blenders internal classes + +import bpy + + +class InfoStructRNA: + global_lookup = {} + def __init__(self, rna_type): + self.bl_rna = rna_type + + self.identifier = rna_type.identifier + self.name = rna_type.name + self.description = rna_type.description.strip() + + # set later + self.base = None + self.nested = None + self.full_path = "" + + self.functions = [] + self.children = [] + self.references = [] + self.properties = [] + + def build(self): + rna_type = self.bl_rna + parent_id = self.identifier + self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_prop in rna_type.properties.values()] + self.functions[:] = [GetInfoFunctionRNA(rna_prop, parent_id) for rna_prop in rna_type.functions.values()] + + def getNestedProperties(self, ls = None): + if not ls: + ls = self.properties[:] + + if self.nested: + self.nested.getNestedProperties(ls) + + return ls + + def __repr__(self): + + txt = '' + txt += self.identifier + if self.base: + txt += '(%s)' % self.base.identifier + txt += ': ' + self.description + '\n' + + for prop in self.properties: + txt += prop.__repr__() + '\n' + + for func in self.functions: + txt += func.__repr__() + '\n' + + return txt + + +class InfoPropertyRNA: + global_lookup = {} + def __init__(self, rna_prop): + self.bl_prop = rna_prop + self.identifier = rna_prop.identifier + self.name = rna_prop.name + self.description = rna_prop.description.strip() + + def build(self): + rna_prop = self.bl_prop + + self.enum_items = [] + self.min = -1 + self.max = -1 + self.array_length = getattr(rna_prop, "array_length", 0) + + self.type = rna_prop.type.lower() + self.fixed_type = GetInfoStructRNA(rna_prop.fixed_type) # valid for pointer/collections + self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections + + def __repr__(self): + txt = '' + txt += ' * ' + self.identifier + ': ' + self.description + + return txt + +class InfoFunctionRNA: + global_lookup = {} + def __init__(self, rna_func): + self.bl_func = rna_func + self.identifier = rna_func.identifier + # self.name = rna_func.name # functions have no name! + self.description = rna_func.description.strip() + + self.args = [] # todo + self.return_value = None # todo + + def build(self): + rna_prop = self.bl_prop + pass + + def __repr__(self): + txt = '' + txt += ' * ' + self.identifier + '(' + + for arg in self.args: + txt += arg.identifier + ', ' + txt += '): ' + self.description + return txt + + +def _GetInfoRNA(bl_rna, cls, parent_id=''): + + if bl_rna == None: + return None + + key = parent_id, bl_rna.identifier + try: + return cls.global_lookup[key] + except: + instance = cls.global_lookup[key] = cls(bl_rna) + return instance + + +def GetInfoStructRNA(bl_rna): + return _GetInfoRNA(bl_rna, InfoStructRNA) + +def GetInfoPropertyRNA(bl_rna, parent_id): + return _GetInfoRNA(bl_rna, InfoPropertyRNA, parent_id) + +def GetInfoFunctionRNA(bl_rna, parent_id): + return _GetInfoRNA(bl_rna, InfoFunctionRNA, parent_id) + + +def BuildRNAInfo(): + # Use for faster lookups + # use rna_struct.identifier as the key for each dict + rna_struct_dict = {} # store identifier:rna lookups + rna_full_path_dict = {} # store the result of full_rna_struct_path(rna_struct) + rna_children_dict = {} # store all rna_structs nested from here + rna_references_dict = {} # store a list of rna path strings that reference this type + rna_functions_dict = {} # store all functions directly in this type (not inherited) + rna_words = set() + + def rna_id_ignore(rna_id): + if rna_id == "rna_type": + return True + + if "_OT_" in rna_id: + return True + if "_MT_" in rna_id: + return True + if "_PT_" in rna_id: + return True + + return False + + def full_rna_struct_path(rna_struct): + ''' + Needed when referencing one struct from another + ''' + nested = rna_struct.nested + if nested: + return "%s.%s" % (full_rna_struct_path(nested), rna_struct.identifier) + else: + return rna_struct.identifier + + # def write_func(rna_func, ident): + def base_id(rna_struct): + try: return rna_struct.base.identifier + except: return '' # invalid id + + #structs = [(base_id(rna_struct), rna_struct.identifier, rna_struct) for rna_struct in bpy.doc.structs.values()] + ''' + structs = [] + for rna_struct in bpy.doc.structs.values(): + structs.append( (base_id(rna_struct), rna_struct.identifier, rna_struct) ) + ''' + structs = [] + for rna_type_name in dir(bpy.types): + rna_type = getattr(bpy.types, rna_type_name) + + try: rna_struct = rna_type.bl_rna + except: rna_struct = None + + if rna_struct: + #if not rna_type_name.startswith('__'): + + identifier = rna_struct.identifier + + if not rna_id_ignore(identifier): + structs.append( (base_id(rna_struct), identifier, rna_struct) ) + + # Simple lookup + rna_struct_dict[identifier] = rna_struct + + # Store full rna path 'GameObjectSettings' -> 'Object.GameObjectSettings' + rna_full_path_dict[identifier] = full_rna_struct_path(rna_struct) + + # Store a list of functions, remove inherited later + rna_functions_dict[identifier]= list(rna_struct.functions) + + + # fill in these later + rna_children_dict[identifier]= [] + rna_references_dict[identifier]= [] + + + else: + print("Ignoring", rna_type_name) + + + # Sucks but we need to copy this so we can check original parent functions + rna_functions_dict__copy = {} + for key, val in rna_functions_dict.items(): + rna_functions_dict__copy[key] = val[:] + + + structs.sort() # not needed but speeds up sort below, setting items without an inheritance first + + # Arrange so classes are always defined in the correct order + deps_ok = False + while deps_ok == False: + deps_ok = True + rna_done = set() + + for i, (rna_base, identifier, rna_struct) in enumerate(structs): + + rna_done.add(identifier) + + if rna_base and rna_base not in rna_done: + deps_ok = False + data = structs.pop(i) + ok = False + while i < len(structs): + if structs[i][1]==rna_base: + structs.insert(i+1, data) # insert after the item we depend on. + ok = True + break + i+=1 + + if not ok: + print('Dependancy "%s" could not be found for "%s"' % (identifier, rna_base)) + + break + + # Done ordering structs + + + # precalc vars to avoid a lot of looping + for (rna_base, identifier, rna_struct) in structs: + + if rna_base: + rna_base_prop_keys = rna_struct_dict[rna_base].properties.keys() # could cache + rna_base_func_keys = [f.identifier for f in rna_struct_dict[rna_base].functions] + else: + rna_base_prop_keys = [] + rna_base_func_keys= [] + + # rna_struct_path = full_rna_struct_path(rna_struct) + rna_struct_path = rna_full_path_dict[identifier] + + for rna_prop_identifier, rna_prop in rna_struct.properties.items(): + + if rna_prop_identifier=='RNA': continue + if rna_id_ignore(rna_prop_identifier): continue + if rna_prop_identifier in rna_base_prop_keys: continue + + + for rna_prop_ptr in (getattr(rna_prop, "fixed_type", None), getattr(rna_prop, "srna", None)): + # Does this property point to me? + if rna_prop_ptr: + rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_prop_identifier) ) + + for rna_func in rna_struct.functions: + for rna_prop_identifier, rna_prop in rna_func.parameters.items(): + + if rna_prop_identifier=='RNA': continue + if rna_id_ignore(rna_prop_identifier): continue + if rna_prop_identifier in rna_base_func_keys: continue + + + try: rna_prop_ptr = rna_prop.fixed_type + except: rna_prop_ptr = None + + # Does this property point to me? + if rna_prop_ptr: + rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_func.identifier) ) + + + # Store nested children + nested = rna_struct.nested + if nested: + rna_children_dict[nested.identifier].append(rna_struct) + + + if rna_base: + rna_funcs = rna_functions_dict[identifier] + if rna_funcs: + # Remove inherited functions if we have any + rna_base_funcs = rna_functions_dict__copy[rna_base] + rna_funcs[:] = [f for f in rna_funcs if f not in rna_base_funcs] + + rna_functions_dict__copy.clear() + del rna_functions_dict__copy + + # Sort the refs, just reads nicer + for rna_refs in rna_references_dict.values(): + rna_refs.sort() + + + info_structs = [] + for (rna_base, identifier, rna_struct) in structs: + #if rna_struct.nested: + # continue + + #write_struct(rna_struct, '') + info_struct= GetInfoStructRNA(rna_struct) + if rna_base: + info_struct.base = GetInfoStructRNA(rna_struct_dict[rna_base]) + info_struct.nested = GetInfoStructRNA(rna_struct.nested) + info_struct.children[:] = rna_children_dict[identifier] + info_struct.references[:] = rna_references_dict[identifier] + info_struct.full_path = rna_full_path_dict[identifier] + + info_structs.append(info_struct) + + for rna_info_prop in InfoPropertyRNA.global_lookup.values(): + rna_info_prop.build() + + for rna_info_prop in InfoFunctionRNA.global_lookup.values(): + rna_info_prop.build() + + for rna_info in InfoStructRNA.global_lookup.values(): + rna_info.build() + + for rna_info in InfoStructRNA.global_lookup.values(): + print(rna_info) + + return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoPropertyRNA.global_lookup + -- cgit v1.2.3 From 924122199b3f4e8c548397c9859c783514008ea2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 19 Dec 2009 14:58:24 +0000 Subject: Bugfix: doubles are not supported correctly in SDNA, double click introduced one in wmWindow.last_click_time. Moved this to the wmEvent struct, which now no is in DNA, was needed for RNA wrapping but not needed anymore. --- source/blender/makesdna/DNA_windowmanager_types.h | 39 +--------------------- source/blender/makesrna/intern/rna_wm.c | 4 +++ source/blender/windowmanager/WM_types.h | 38 +++++++++++++++++++++ .../blender/windowmanager/intern/wm_event_system.c | 28 ++++++++-------- 4 files changed, 57 insertions(+), 52 deletions(-) diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 9e47a6f1d89..2f640d3dfd4 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -154,10 +154,7 @@ typedef struct wmWindow { short cursor; /* current mouse cursor type */ short lastcursor; /* for temp waitcursor */ short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */ - - short last_type; /* last event information, used for click */ - short last_val; - double last_click_time; /* for double click */ + short pad2[2]; struct wmEvent *eventstate; /* storage for event system */ @@ -345,40 +342,6 @@ typedef struct wmOperator { /* wmOperator flag */ #define OP_GRAB_POINTER 1 -/* ************** wmEvent ************************ */ -/* for read-only rna access, dont save this */ - -/* each event should have full modifier state */ -/* event comes from eventmanager and from keymap */ -typedef struct wmEvent { - struct wmEvent *next, *prev; - - short type; /* event code itself (short, is also in keymap) */ - short val; /* press, release, scrollvalue */ - short x, y; /* mouse pointer position, screen coord */ - short mval[2]; /* region mouse position, name convention pre 2.5 :) */ - short prevx, prevy; /* previous mouse pointer position */ - short unicode; /* future, ghost? */ - char ascii; /* from ghost */ - char pad; - - /* modifier states */ - short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */ - short keymodifier; /* rawkey modifier */ - - short pad1; - - /* keymap item, set by handler (weak?) */ - const char *keymap_idname; - - /* custom data */ - short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */ - short customdatafree; - int pad2; - void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */ - -} wmEvent; - typedef enum wmRadialControlMode { WM_RADIALCONTROL_SIZE, WM_RADIALCONTROL_STRENGTH, diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 3d4899a0a51..ca6d8959d00 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -701,6 +701,8 @@ static void rna_def_event(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Event", "Window Manager Event"); RNA_def_struct_sdna(srna, "wmEvent"); + RNA_define_verify_sdna(0); // not in sdna + /* strings */ prop= RNA_def_property(srna, "ascii", PROP_STRING, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -764,6 +766,8 @@ static void rna_def_event(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "oskey", 1); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "OS Key", "True when the Cmd key is held."); + + RNA_define_verify_sdna(1); // not in sdna } static void rna_def_window(BlenderRNA *brna) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 2a742b29d1c..318945918e7 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -288,6 +288,44 @@ typedef struct wmGesture { /* customdata for lasso is short array */ } wmGesture; +/* ************** wmEvent ************************ */ + +/* each event should have full modifier state */ +/* event comes from eventmanager and from keymap */ +typedef struct wmEvent { + struct wmEvent *next, *prev; + + short type; /* event code itself (short, is also in keymap) */ + short val; /* press, release, scrollvalue */ + short x, y; /* mouse pointer position, screen coord */ + short mval[2]; /* region mouse position, name convention pre 2.5 :) */ + short unicode; /* future, ghost? */ + char ascii; /* from ghost */ + char pad; + + /* previous state */ + short prevtype; + short prevval; + short prevx, prevy; + double prevclicktime; + + /* modifier states */ + short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */ + short keymodifier; /* rawkey modifier */ + + short pad1; + + /* keymap item, set by handler (weak?) */ + const char *keymap_idname; + + /* custom data */ + short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */ + short customdatafree; + int pad2; + void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */ + +} wmEvent; + /* ************** custom wmEvent data ************** */ typedef struct wmTabletData { int Active; /* 0=EVT_TABLET_NONE, 1=EVT_TABLET_STYLUS, 2=EVT_TABLET_ERASER */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index ac4c2709688..435f3823fed 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1177,9 +1177,9 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) if (wm_action_not_handled(action) && event->val == KM_RELEASE) { wmWindow *win = CTX_wm_window(C); - if (win && win->last_type == event->type && win->last_val == KM_PRESS) { + if (win && win->eventstate->prevtype == event->type && win->eventstate->prevval == KM_PRESS) { /* test for double click first */ - if ((PIL_check_seconds_timer() - win->last_click_time) * 1000 < U.dbl_click_time) { + if ((PIL_check_seconds_timer() - win->eventstate->prevclicktime) * 1000 < U.dbl_click_time) { event->val = KM_DBL_CLICK; action |= wm_handlers_do(C, event, handlers); } @@ -1381,26 +1381,26 @@ void wm_event_do_handlers(bContext *C) /* mousemove and timer events don't overwrite last type */ if (event->type != MOUSEMOVE && !ISTIMER(event->type)) { if (wm_action_not_handled(action)) { - if (win->last_type == event->type) { + if (win->eventstate->prevtype == event->type) { /* set click time on first click (press -> release) */ - if (win->last_val == KM_PRESS && event->val == KM_RELEASE) { - win->last_click_time = PIL_check_seconds_timer(); + if (win->eventstate->prevval == KM_PRESS && event->val == KM_RELEASE) { + win->eventstate->prevclicktime = PIL_check_seconds_timer(); } } else { /* reset click time if event type not the same */ - win->last_click_time = 0; + win->eventstate->prevclicktime = 0; } - win->last_val = event->val; - win->last_type = event->type; + win->eventstate->prevval = event->val; + win->eventstate->prevtype = event->type; } else if (event->val == KM_CLICK) { /* keep click for double click later */ - win->last_type = event->type; - win->last_val = event->val; - win->last_click_time = PIL_check_seconds_timer(); + win->eventstate->prevtype = event->type; + win->eventstate->prevval = event->val; + win->eventstate->prevclicktime = PIL_check_seconds_timer(); } else { /* reset if not */ - win->last_type = -1; - win->last_val = 0; - win->last_click_time = 0; + win->eventstate->prevtype = -1; + win->eventstate->prevval = 0; + win->eventstate->prevclicktime = 0; } } -- cgit v1.2.3 From 13848797827e65174ceea193839a91a64309796c Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 19 Dec 2009 16:55:04 +0000 Subject: Fixing error introduced in commit 25428. * Preview Render didn't update in the world tab, when changing settings. --- source/blender/editors/space_buttons/space_buttons.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index f47a8792145..b1940264d80 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -328,6 +328,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_WORLD: buttons_area_redraw(sa, BCONTEXT_WORLD); + sbuts->preview= 1; break; case NC_LAMP: buttons_area_redraw(sa, BCONTEXT_DATA); -- cgit v1.2.3 From 0da09bd261c7303dc601fa01af02253f2e7213dd Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Dec 2009 21:33:25 +0000 Subject: int Type for region rna (read-only helps for debug) --- source/blender/makesrna/intern/rna_screen.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index 2471ce3c798..883c77b3faa 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -152,7 +152,12 @@ static void rna_def_region(BlenderRNA *brna) prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "swinid"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Region ID", "Uniqute ID for this region."); + RNA_def_property_ui_text(prop, "Region ID", "Unique ID for this region."); + + prop= RNA_def_property(srna, "type", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "regiontype"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Region Type", "Type of this region."); prop= RNA_def_property(srna, "width", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "winx"); -- cgit v1.2.3 From f3147db0e8ce7c5c0e2352876304c928405c3081 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Dec 2009 22:36:20 +0000 Subject: netrender: list files in job webpage --- release/scripts/io/netrender/master_html.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index e556943609f..c0db45db2bc 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -137,6 +137,30 @@ def get(handler): job = handler.server.getJobID(job_id) if job: + output("

Files

") + + startTable() + headerTable("path") + + tot_cache = 0 + tot_fluid = 0 + + for file in job.files: + if file.filepath.endswith(".bphys"): + tot_cache += 1 + elif file.filepath.endswith(".bobj.gz") or file.filepath.endswith(".bvel.gz"): + tot_fluid += 1 + else: + rowTable(file.filepath) + + if tot_cache > 0: + rowTable("%i physic cache files" % tot_cache) + + if tot_fluid > 0: + rowTable("%i fluid bake files" % tot_fluid) + + endTable() + output("

Frames

") startTable() -- cgit v1.2.3 From ff038161f6ee255b4c60246f24315e8b911f773e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Dec 2009 22:37:51 +0000 Subject: Add missing names to SpaceTypes --- source/blender/editors/space_action/space_action.c | 1 + .../blender/editors/space_buttons/space_buttons.c | 1 + .../blender/editors/space_console/space_console.c | 25 +++++++++++----------- source/blender/editors/space_file/space_file.c | 1 + source/blender/editors/space_graph/space_graph.c | 1 + source/blender/editors/space_image/space_image.c | 1 + source/blender/editors/space_info/space_info.c | 1 + source/blender/editors/space_logic/space_logic.c | 1 + source/blender/editors/space_nla/space_nla.c | 1 + source/blender/editors/space_node/space_node.c | 1 + source/blender/editors/space_script/space_script.c | 1 + .../editors/space_sequencer/space_sequencer.c | 1 + source/blender/editors/space_sound/space_sound.c | 1 + source/blender/editors/space_text/space_text.c | 1 + .../editors/space_userpref/space_userpref.c | 1 + source/blender/editors/space_view3d/space_view3d.c | 1 + 16 files changed, 28 insertions(+), 12 deletions(-) diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 08ed44a54f9..67b4d6e848b 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -416,6 +416,7 @@ void ED_spacetype_action(void) ARegionType *art; st->spaceid= SPACE_ACTION; + strncpy(st->name, "Action", BKE_ST_MAXNAME); st->new= action_new; st->free= action_free; diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index b1940264d80..9a4ac872ceb 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -359,6 +359,7 @@ void ED_spacetype_buttons(void) ARegionType *art; st->spaceid= SPACE_BUTS; + strncpy(st->name, "Buttons", BKE_ST_MAXNAME); st->new= buttons_new; st->free= buttons_free; diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 4d2f816ba6b..7d23421c5cf 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -326,18 +326,19 @@ static void console_main_area_listener(ScrArea *sa, wmNotifier *wmn) /* only called once, from space/spacetypes.c */ void ED_spacetype_console(void) { - SpaceType *sc= MEM_callocN(sizeof(SpaceType), "spacetype console"); + SpaceType *st= MEM_callocN(sizeof(SpaceType), "spacetype console"); ARegionType *art; - sc->spaceid= SPACE_CONSOLE; + st->spaceid= SPACE_CONSOLE; + strncpy(st->name, "Console", BKE_ST_MAXNAME); - sc->new= console_new; - sc->free= console_free; - sc->init= console_init; - sc->duplicate= console_duplicate; - sc->operatortypes= console_operatortypes; - sc->keymap= console_keymap; - sc->listener= console_main_area_listener; + st->new= console_new; + st->free= console_free; + st->init= console_init; + st->duplicate= console_duplicate; + st->operatortypes= console_operatortypes; + st->keymap= console_keymap; + st->listener= console_main_area_listener; /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype console region"); @@ -350,7 +351,7 @@ void ED_spacetype_console(void) - BLI_addhead(&sc->regiontypes, art); + BLI_addhead(&st->regiontypes, art); /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype console region"); @@ -361,8 +362,8 @@ void ED_spacetype_console(void) art->init= console_header_area_init; art->draw= console_header_area_draw; - BLI_addhead(&sc->regiontypes, art); + BLI_addhead(&st->regiontypes, art); - BKE_spacetype_register(sc); + BKE_spacetype_register(st); } diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 939af53b87d..8714e772852 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -507,6 +507,7 @@ void ED_spacetype_file(void) ARegionType *art; st->spaceid= SPACE_FILE; + strncpy(st->name, "File", BKE_ST_MAXNAME); st->new= file_new; st->free= file_free; diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index f00215e7313..29a9186bc25 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -566,6 +566,7 @@ void ED_spacetype_ipo(void) ARegionType *art; st->spaceid= SPACE_IPO; + strncpy(st->name, "Graph", BKE_ST_MAXNAME); st->new= graph_new; st->free= graph_free; diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 58f48f6fa07..5b05c8f8944 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -530,6 +530,7 @@ void ED_spacetype_image(void) ARegionType *art; st->spaceid= SPACE_IMAGE; + strncpy(st->name, "Image", BKE_ST_MAXNAME); st->new= image_new; st->free= image_free; diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index ab10e05b204..d9662339bb2 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -182,6 +182,7 @@ void ED_spacetype_info(void) ARegionType *art; st->spaceid= SPACE_INFO; + strncpy(st->name, "Info", BKE_ST_MAXNAME); st->new= info_new; st->free= info_free; diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index c5b18d5b40e..c2918dd0925 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -332,6 +332,7 @@ void ED_spacetype_logic(void) ARegionType *art; st->spaceid= SPACE_LOGIC; + strncpy(st->name, "Logic", BKE_ST_MAXNAME); st->new= logic_new; st->free= logic_free; diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index a799e265b72..ddab0817c58 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -507,6 +507,7 @@ void ED_spacetype_nla(void) ARegionType *art; st->spaceid= SPACE_NLA; + strncpy(st->name, "NLA", BKE_ST_MAXNAME); st->new= nla_new; st->free= nla_free; diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index dfdd4ea6657..650390a8727 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -351,6 +351,7 @@ void ED_spacetype_node(void) ARegionType *art; st->spaceid= SPACE_NODE; + strncpy(st->name, "Node", BKE_ST_MAXNAME); st->new= node_new; st->free= node_free; diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c index e6edb71c1b1..b882a3313cd 100644 --- a/source/blender/editors/space_script/space_script.c +++ b/source/blender/editors/space_script/space_script.c @@ -197,6 +197,7 @@ void ED_spacetype_script(void) ARegionType *art; st->spaceid= SPACE_SCRIPT; + strncpy(st->name, "Script", BKE_ST_MAXNAME); st->new= script_new; st->free= script_free; diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index b75b4e55ae3..25364aed5ca 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -413,6 +413,7 @@ void ED_spacetype_sequencer(void) ARegionType *art; st->spaceid= SPACE_SEQ; + strncpy(st->name, "Sequencer", BKE_ST_MAXNAME); st->new= sequencer_new; st->free= sequencer_free; diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c index f2c449ffc1f..1cd5ab65c0f 100644 --- a/source/blender/editors/space_sound/space_sound.c +++ b/source/blender/editors/space_sound/space_sound.c @@ -224,6 +224,7 @@ void ED_spacetype_sound(void) ARegionType *art; st->spaceid= SPACE_SOUND; + strncpy(st->name, "Sound", BKE_ST_MAXNAME); st->new= sound_new; st->free= sound_free; diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index d657725b880..2f0e631e927 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -402,6 +402,7 @@ void ED_spacetype_text(void) ARegionType *art; st->spaceid= SPACE_TEXT; + strncpy(st->name, "Text", BKE_ST_MAXNAME); st->new= text_new; st->free= text_free; diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index da475ff4c5b..f45e08be697 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -153,6 +153,7 @@ void ED_spacetype_userpref(void) ARegionType *art; st->spaceid= SPACE_USERPREF; + strncpy(st->name, "Userpref", BKE_ST_MAXNAME); st->new= userpref_new; st->free= userpref_free; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index e362303c3cc..b4f3605c559 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -776,6 +776,7 @@ void ED_spacetype_view3d(void) ARegionType *art; st->spaceid= SPACE_VIEW3D; + strncpy(st->name, "View3D", BKE_ST_MAXNAME); st->new= view3d_new; st->free= view3d_free; -- cgit v1.2.3 From be323efa3525031bc7b2f255543f4d57e2b5f9cc Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Dec 2009 22:40:45 +0000 Subject: Fix preview do_version bug (causing region type missing errors) The missing region was added to the wrong region base. Bump the subversion, new code to fix wrong region layouts saved in previous subversion and correct all old files correctly. --- source/blender/blenkernel/BKE_blender.h | 2 +- source/blender/blenloader/intern/readfile.c | 77 +++++++++++++++++++++++------ 2 files changed, 64 insertions(+), 15 deletions(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 8a7f4da8cbf..8e7e698a986 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,7 +43,7 @@ struct bContext; struct ReportList; #define BLENDER_VERSION 250 -#define BLENDER_SUBVERSION 10 +#define BLENDER_SUBVERSION 11 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 9548db3278a..24e5cb67d89 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -139,6 +139,7 @@ #include "BKE_report.h" #include "BKE_sca.h" // for init_actuator #include "BKE_scene.h" +#include "BKE_screen.h" #include "BKE_softbody.h" // sbNew() #include "BKE_bullet.h" // bsbNew() #include "BKE_sequencer.h" @@ -10194,27 +10195,75 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 10)) { - { - Object *ob; - - /* properly initialise hair clothsim data on old files */ - for(ob = main->object.first; ob; ob = ob->id.next) { - ModifierData *md; - for(md= ob->modifiers.first; md; md= md->next) { - if (md->type == eModifierType_Cloth) { - ClothModifierData *clmd = (ClothModifierData *)md; - if (clmd->sim_parms->velocity_smooth < 0.01f) - clmd->sim_parms->velocity_smooth = 0.f; + Object *ob; + + /* properly initialise hair clothsim data on old files */ + for(ob = main->object.first; ob; ob = ob->id.next) { + ModifierData *md; + for(md= ob->modifiers.first; md; md= md->next) { + if (md->type == eModifierType_Cloth) { + ClothModifierData *clmd = (ClothModifierData *)md; + if (clmd->sim_parms->velocity_smooth < 0.01f) + clmd->sim_parms->velocity_smooth = 0.f; + } + } + } + } + + /* fix bad area setup in subversion 10 */ + if (main->versionfile == 250 && main->subversionfile == 10) + { + /* fix for new view type in sequencer */ + bScreen *screen; + ScrArea *sa; + SpaceLink *sl; + + + /* remove all preview window in wrong spaces */ + for(screen= main->screen.first; screen; screen= screen->id.next) { + for(sa= screen->areabase.first; sa; sa= sa->next) { + for(sl= sa->spacedata.first; sl; sl= sl->next) { + if(sl->spacetype!=SPACE_SEQ) { + ARegion *ar; + + for( ar = sl->regionbase.first; ar; ar = ar->next) { + if (ar->regiontype == RGN_TYPE_PREVIEW) + break; + } + + if (ar) { + SpaceType *st= BKE_spacetype_from_id(SPACE_SEQ); + BKE_area_region_free(st, ar); + BLI_freelinkN(&sl->regionbase, ar); + } + } + } + if(sa->spacetype!=SPACE_SEQ) { + ARegion *ar; + + for( ar = sa->regionbase.first; ar; ar = ar->next) { + if (ar->regiontype == RGN_TYPE_PREVIEW) + break; + } + + if (ar) { + SpaceType *st= BKE_spacetype_from_id(SPACE_SEQ); + BKE_area_region_free(st, ar); + BLI_freelinkN(&sa->regionbase, ar); } } } } + } + + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 11)) + { { /* fix for new view type in sequencer */ bScreen *screen; ScrArea *sa; SpaceLink *sl; - + for(screen= main->screen.first; screen; screen= screen->id.next) { for(sa= screen->areabase.first; sa; sa= sa->next) { @@ -10222,12 +10271,12 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(sl->spacetype==SPACE_SEQ) { ARegion *ar; ARegion *ar_main; - ListBase *lb = &sa->regionbase; + ListBase *lb = &sl->regionbase; SpaceSeq *sseq = (SpaceSeq *)sl; if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE; if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF; - + ar_main = (ARegion*)lb->first; for (; ar_main; ar_main = ar_main->next) { if (ar_main->regiontype == RGN_TYPE_WINDOW) -- cgit v1.2.3 From 170c464920bdbbd4e7db3ff2b84c8550740eb2cc Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 20 Dec 2009 05:09:55 +0000 Subject: Animation Editor Code Cleanups: Removing some unused functions that have become redundant in recent times. --- source/blender/editors/animation/anim_draw.c | 58 ----------------------- source/blender/editors/animation/anim_ipo_utils.c | 31 +----------- source/blender/editors/include/ED_anim_api.h | 7 +-- source/blender/editors/space_graph/space_graph.c | 2 +- 4 files changed, 4 insertions(+), 94 deletions(-) diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c index 3afe2bfad57..60242d3e837 100644 --- a/source/blender/editors/animation/anim_draw.c +++ b/source/blender/editors/animation/anim_draw.c @@ -315,64 +315,6 @@ void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, s /* apply to F-Curve */ ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, map_cb, NULL); -} - -/* *************************************************** */ -/* ANIMATION EDITOR UI-WIDGETS */ - -/* ui button event */ -#define B_REDR 1 - -/* standard header buttons for Animation Editors */ -short ANIM_headerUI_standard_buttons (const bContext *C, bDopeSheet *ads, uiBlock *block, short xco, short yco) -{ - Main *mainptr= CTX_data_main(C); - ScrArea *sa= CTX_wm_area(C); - short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA)); - - /* check if the DopeSheet data exists, just in case... */ - if (ads) { - /* more 'generic' filtering options */ - if (nlaActive) uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOG, ADS_FILTER_ONLYSEL, B_REDR, ICON_RESTRICT_SELECT_OFF, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Only display selected Objects"); - if (nlaActive) uiDefIconButBitI(block, TOGN, ADS_FILTER_NLA_NOACT, B_REDR, ICON_ACTION, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Include AnimData blocks with no NLA Data"); - if (nlaActive) uiBlockEndAlign(block); - xco += 5; - - /* datatype based - only available datatypes are shown */ - uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSCE, B_REDR, ICON_SCENE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Scene Animation"); - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOWOR, B_REDR, ICON_WORLD_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display World Animation"); - uiDefIconButBitI(block, TOGN, ADS_FILTER_NONTREE, B_REDR, ICON_NODETREE, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Node Tree Animation"); - if (mainptr && mainptr->key.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOSHAPEKEYS, B_REDR, ICON_SHAPEKEY_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display ShapeKeys"); - if (mainptr && mainptr->mat.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOMAT, B_REDR, ICON_MATERIAL_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Material Data"); - if (mainptr && mainptr->lamp.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOLAM, B_REDR, ICON_LAMP_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Lamp Data"); - if (mainptr && mainptr->camera.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOCAM, B_REDR, ICON_CAMERA_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Camera Data"); - if (mainptr && mainptr->curve.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOCUR, B_REDR, ICON_CURVE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Curve Data"); - if (mainptr && mainptr->mball.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOMBA, B_REDR, ICON_META_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display MetaBall Data"); - if (mainptr && mainptr->armature.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOARM, B_REDR, ICON_ARMATURE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Armature Data"); - if (mainptr && mainptr->particle.first) - uiDefIconButBitI(block, TOGN, ADS_FILTER_NOPART, B_REDR, ICON_PARTICLE_DATA, (short)(xco+=XIC),yco,XIC,YIC, &(ads->filterflag), 0, 0, 0, 0, "Display Particle Data"); - uiBlockEndAlign(block); - xco += 30; - } - else { - // XXX this case shouldn't happen at all... for now, just pad out same amount of space - printf("ERROR: dopesheet data not available when drawing Animation Editor header \n"); - xco += 11*XIC + 30; - } - - // TODO: include auto-snapping menu here too... - - /* return the width of the buttons */ - return xco; } /* *************************************************** */ diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c index 200c4eb3590..9e698d18105 100644 --- a/source/blender/editors/animation/anim_ipo_utils.c +++ b/source/blender/editors/animation/anim_ipo_utils.c @@ -181,39 +181,12 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu) /* ------------------------------- Color Codes for F-Curve Channels ---------------------------- */ -#if 0 -/* used for FCURVE_COLOR_AUTO_RAINBOW */ -// XXX this still doesn't work too great when there are more than 32 curves (which happens most of the time) -void ipo_rainbow (int cur, int tot, float *out) -{ - float dfac, fac, sat; - - dfac= (float)(1.0/( (float)tot+1.0)); - - /* this calculation makes 2 or 4 different cycles of rainbow colors */ - // 2 different cycles - for hue - if(cur< tot/2) fac= (float)(cur*2.0f*dfac); - else fac= (float)((cur-tot/2)*2.0f*dfac +dfac); - - // third cycle with altered hue - if(tot > 32) fac= fac*1.95f; - // clamping for excessive ranges - if(fac>1.0f) fac-= 1.0f; - - // saturation adjustments for more visible range - if(fac>0.5f && fac<0.8f) sat= 0.5f; - else sat= 0.6f; - - hsv_to_rgb(fac, sat, 1.0f, out, out+1, out+2); -} -#endif - /* step between the major distinguishable color bands of the primary colors */ #define HSV_BANDWIDTH 0.3f -/* testbed for FCURVE_COLOR_AUTO_RAINBOW determination methods */ +/* used to determine the colour of F-Curves with FCURVE_COLOR_AUTO_RAINBOW set */ //void fcurve_rainbow (unsigned int cur, unsigned int tot, float *out) -void ipo_rainbow (int cur, int tot, float *out) +void getcolor_fcurve_rainbow (int cur, int tot, float *out) { float hue, val, sat, fac; int grouping; diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 9989589cf23..7f8df38741d 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -424,11 +424,6 @@ void ANIM_draw_cfra(const struct bContext *C, struct View2D *v2d, short flag); /* main call to draw preview range curtains */ void ANIM_draw_previewrange(const struct bContext *C, struct View2D *v2d); -/* ------------- Preview Range Drawing -------------- */ - -/* standard header buttons for Animation Editors */ -short ANIM_headerUI_standard_buttons(const struct bContext *C, struct bDopeSheet *ads, struct uiBlock *block, short xco, short yco); - /* ************************************************* */ /* F-MODIFIER TOOLS */ @@ -445,7 +440,7 @@ void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *l int getname_anim_fcurve(char *name, struct ID *id, struct FCurve *fcu); /* Automatically determine a color for the nth F-Curve */ -void ipo_rainbow(int cur, int tot, float *out); +void getcolor_fcurve_rainbow(int cur, int tot, float *out); /* ------------- NLA-Mapping ----------------------- */ /* anim_draw.c */ diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 29a9186bc25..c3f241ef300 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -548,7 +548,7 @@ static void graph_refresh(const bContext *C, ScrArea *sa) /* determine color 'automatically' using 'magic function' which uses the given args * of current item index + total items to determine some RGB color */ - ipo_rainbow(i, items, fcu->color); + getcolor_fcurve_rainbow(i, items, fcu->color); } break; } -- cgit v1.2.3 From 4d16275c0369fb3857d3240af55318572c4b9813 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 20 Dec 2009 10:50:40 +0000 Subject: Bugfix #20173: Crash with Weight Paint on polygons with no faces --- source/blender/editors/sculpt_paint/paint_vertex.c | 47 ++++++++++++++-------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index ba9c3631728..cddfad19fa7 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1438,22 +1438,35 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P VPaint *wp= ts->wpaint; Brush *brush = paint_brush(&wp->paint); struct WPaintData *wpd= paint_stroke_mode_data(stroke); - ViewContext *vc= &wpd->vc; - Object *ob= vc->obact; - Mesh *me= ob->data; + ViewContext *vc; + Object *ob; + Mesh *me; float mat[4][4]; float paintweight= ts->vgroup_weight; - int *indexar= wpd->indexar; + int *indexar; int totindex, index, totw, flip; float alpha; float mval[2], pressure; - + + /* cannot paint if there is no stroke data */ + if (wpd == NULL) { + // XXX: force a redraw here, since even though we can't paint, + // at least view won't freeze until stroke ends + ED_region_tag_redraw(CTX_wm_region(C)); + return; + } + + vc= &wpd->vc; + ob= vc->obact; + me= ob->data; + indexar= wpd->indexar; + view3d_operator_needs_opengl(C); - + /* load projection matrix */ wmMultMatrix(ob->obmat); wmGetSingleMatrix(mat); - wmLoadMatrix(wpd->vc.rv3d->viewmat); + wmLoadMatrix(vc->rv3d->viewmat); flip = RNA_boolean_get(itemptr, "flip"); pressure = RNA_float_get(itemptr, "pressure"); @@ -1598,13 +1611,17 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke) Object *ob= CTX_data_active_object(C); struct WPaintData *wpd= paint_stroke_mode_data(stroke); - if(wpd->vertexcosnos) - MEM_freeN(wpd->vertexcosnos); - MEM_freeN(wpd->indexar); + if(wpd) { + if(wpd->vertexcosnos) + MEM_freeN(wpd->vertexcosnos); + MEM_freeN(wpd->indexar); + + if (wpd->vgroup_validmap) + MEM_freeN(wpd->vgroup_validmap); + + MEM_freeN(wpd); + } - if (wpd->vgroup_validmap) - MEM_freeN(wpd->vgroup_validmap); - /* frees prev buffer */ copy_wpaint_prev(ts->wpaint, NULL, 0); @@ -1623,9 +1640,7 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke) } } - DAG_id_flush_update(ob->data, OB_RECALC_DATA); - - MEM_freeN(wpd); + DAG_id_flush_update(ob->data, OB_RECALC_DATA); } -- cgit v1.2.3 From 7e16ac8190bf79f8d0b40f66a835288e62e6913e Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 20 Dec 2009 11:04:11 +0000 Subject: Fixes for memory leaks when exiting Blender while still in WeightPaint Mode. --- source/blender/editors/util/ed_util.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index fc2576eef5d..e02eeebef7e 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -87,9 +87,16 @@ void ED_editors_exit(bContext *C) // else if(ob->type==OB_MBALL) // BLI_freelistN(&editelems); // free_editLatt(); - // free_posebuf(); + // free_posebuf(); // XXX this is still a global... } } + else if(sce->basact && sce->basact->object) { + 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'); + } } } -- cgit v1.2.3 From 9711c16fde22959762e829acd82fc82841a23abc Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 20 Dec 2009 15:23:29 +0000 Subject: Fix do_version for new preview region (for real this time). First spacedata has empty region base and uses the one in ScrArea. Need to account for that. --- source/blender/blenloader/intern/readfile.c | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 24e5cb67d89..11d34f9e69a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10225,8 +10225,16 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for(sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype!=SPACE_SEQ) { ARegion *ar; + ListBase *regionbase; - for( ar = sl->regionbase.first; ar; ar = ar->next) { + if (sl == sa->spacedata.first) { + regionbase = &sa->regionbase; + } else { + regionbase = &sl->regionbase; + } + + + for( ar = regionbase->first; ar; ar = ar->next) { if (ar->regiontype == RGN_TYPE_PREVIEW) break; } @@ -10234,24 +10242,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (ar) { SpaceType *st= BKE_spacetype_from_id(SPACE_SEQ); BKE_area_region_free(st, ar); - BLI_freelinkN(&sl->regionbase, ar); + BLI_freelinkN(regionbase, ar); } } } - if(sa->spacetype!=SPACE_SEQ) { - ARegion *ar; - - for( ar = sa->regionbase.first; ar; ar = ar->next) { - if (ar->regiontype == RGN_TYPE_PREVIEW) - break; - } - - if (ar) { - SpaceType *st= BKE_spacetype_from_id(SPACE_SEQ); - BKE_area_region_free(st, ar); - BLI_freelinkN(&sa->regionbase, ar); - } - } } } } @@ -10271,19 +10265,25 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(sl->spacetype==SPACE_SEQ) { ARegion *ar; ARegion *ar_main; - ListBase *lb = &sl->regionbase; + ListBase *regionbase; SpaceSeq *sseq = (SpaceSeq *)sl; + if (sl == sa->spacedata.first) { + regionbase = &sa->regionbase; + } else { + regionbase = &sl->regionbase; + } + if (sseq->view == 0) sseq->view = SEQ_VIEW_SEQUENCE; if (sseq->mainb == 0) sseq->mainb = SEQ_DRAW_IMG_IMBUF; - ar_main = (ARegion*)lb->first; + ar_main = (ARegion*)regionbase->first; for (; ar_main; ar_main = ar_main->next) { if (ar_main->regiontype == RGN_TYPE_WINDOW) break; } ar= MEM_callocN(sizeof(ARegion), "preview area for sequencer"); - BLI_insertlinkbefore(lb, ar_main, ar); + BLI_insertlinkbefore(regionbase, ar_main, ar); ar->regiontype= RGN_TYPE_PREVIEW; ar->alignment= RGN_ALIGN_TOP; ar->flag |= RGN_FLAG_HIDDEN; -- cgit v1.2.3 From 2b69661805dff3a3dc702e4b596ae10753f9427f Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sun, 20 Dec 2009 18:47:30 +0000 Subject: BGE fix: 3DDview not redrawing when exiting BGE CTX_wm_window_set() was resetting the CTX_wm_area(C), for the redrawing wasn't working. Changing their orders fixes it. --- source/blender/editors/space_view3d/view3d_view.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 8fc6e365c46..bbf728d31c0 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1753,8 +1753,8 @@ static int game_engine_exec(bContext *C, wmOperator *unused) /* restore context, in case it changed in the meantime, for example by working in another window or closing it */ CTX_wm_region_set(C, prevar); - CTX_wm_area_set(C, prevsa); CTX_wm_window_set(C, prevwin); + CTX_wm_area_set(C, prevsa); RestoreState(C); //XXX restore_all_scene_cfra(scene_cfra_store); -- cgit v1.2.3 From 85556a780c1fd9ef69ee319b58aa38c88a85e8b5 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 20 Dec 2009 21:46:39 +0000 Subject: netrender: buttons to change chunks, priority and reset job. --- release/scripts/io/netrender/master.py | 36 ++++++++++++++++++++++++++++- release/scripts/io/netrender/master_html.py | 32 +++++++++++++++++++++---- release/scripts/io/netrender/netrender.js | 24 ++++--------------- 3 files changed, 66 insertions(+), 26 deletions(-) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index cf71e410cde..bf439dd0b9b 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -80,6 +80,16 @@ class MRenderJob(netrender.model.RenderJob): f = open(self.save_path + "job.txt", "w") f.write(repr(self.serialize())) f.close() + + def edit(self, info_map): + if "status" in info_map: + self.status = info_map["status"] + + if "priority" in info_map: + self.priority = info_map["priority"] + + if "chunks" in info_map: + self.chunks = info_map["chunks"] def testStart(self): for f in self.files: @@ -156,6 +166,7 @@ render_pattern = re.compile("/render_([a-zA-Z0-9]+)_([0-9]+).exr") log_pattern = re.compile("/log_([a-zA-Z0-9]+)_([0-9]+).log") reset_pattern = re.compile("/reset(all|)_([a-zA-Z0-9]+)_([0-9]+)") cancel_pattern = re.compile("/cancel_([a-zA-Z0-9]+)") +edit_pattern = re.compile("/edit_([a-zA-Z0-9]+)") class RenderHandler(http.server.BaseHTTPRequestHandler): def send_head(self, code = http.client.OK, headers = {}, content = "application/octet-stream"): @@ -424,6 +435,27 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.server.stats("", "New job, missing files (%i total)" % len(job.files)) self.send_head(http.client.ACCEPTED, headers=headers) # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + elif self.path.startswith("/edit"): + match = edit_pattern.match(self.path) + + if match: + job_id = match.groups()[0] + + job = self.server.getJobID(job_id) + + if job: + length = int(self.headers['content-length']) + info_map = eval(str(self.rfile.read(length), encoding='utf8')) + + job.edit(info_map) + self.send_head() + else: + # no such job id + self.send_head(http.client.NO_CONTENT) + else: + # invalid url + self.send_head(http.client.NO_CONTENT) + # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path.startswith("/cancel"): match = cancel_pattern.match(self.path) @@ -608,7 +640,9 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): del buf elif job_result == ERROR: # blacklist slave on this job on error - job.blacklist.append(slave.id) + # slaves might already be in blacklist if errors on the whole chunk + if not slave.id in job.blacklist: + job.blacklist.append(slave.id) self.server.stats("", "Receiving result") diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index c0db45db2bc..7bd54672755 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -30,6 +30,7 @@ def get(handler): def head(title): output("") output("") +# output("") output("") output(title) output("") @@ -88,9 +89,11 @@ def get(handler): startTable() headerTable( + " ", " ", "name", "category", + "chunks", "priority", "usage", "wait", @@ -99,7 +102,6 @@ def get(handler): "done", "dispatched", "error", - " ", "first", "exception" ) @@ -110,17 +112,23 @@ def get(handler): results = job.framesStatus() rowTable( """""" % job.id, + """""" % job.id, link(job.name, "/html/job" + job.id), - job.category if job.category else " ", - job.priority, + job.category if job.category else "None", + str(job.chunks) + + """""" % (job.id, job.chunks + 1) + + """""" % (job.id, job.chunks - 1, "disabled=True" if job.chunks == 1 else ""), + str(job.priority) + + """""" % (job.id, job.priority + 1) + + """""" % (job.id, job.priority - 1, "disabled=True" if job.priority == 1 else ""), "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), job.statusText(), len(job), results[DONE], results[DISPATCHED], - results[ERROR], - """""" % job.id, + str(results[ERROR]) + + """""" % (job.id, "disabled=True" if not results[ERROR] else ""), handler.server.balancer.applyPriorities(job), handler.server.balancer.applyExceptions(job) ) @@ -161,6 +169,20 @@ def get(handler): endTable() + output("

Blacklist

") + + if job.blacklist: + startTable() + headerTable("name", "address") + + for slave_id in job.blacklist: + slave = handler.server.slaves_map[slave_id] + rowTable(slave.name, slave.address[0]) + + endTable() + else: + output("Empty") + output("

Frames

") startTable() diff --git a/release/scripts/io/netrender/netrender.js b/release/scripts/io/netrender/netrender.js index 75df56038b3..50d7042cf74 100644 --- a/release/scripts/io/netrender/netrender.js +++ b/release/scripts/io/netrender/netrender.js @@ -1,26 +1,10 @@ -function post_to_url(path, params, method) { - method = method || "post"; // Set method to post by default, if not specified. - - var form = document.createElement("form"); - form.setAttribute("method", method); - form.setAttribute("action", path); - - for(var key in params) { - var hiddenField = document.createElement("input"); - hiddenField.setAttribute("type", "hidden"); - hiddenField.setAttribute("name", key); - hiddenField.setAttribute("value", params[key]); - - form.appendChild(hiddenField); - } - - document.body.appendChild(form); - form.submit(); -} - function request(url, data) { xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", url, false); xmlhttp.send(data); window.location.reload() } + +function edit(id, info) { + request("/edit_" + id, info) +} \ No newline at end of file -- cgit v1.2.3 From 2a47383af5d8dae01336a4b46722255713833ca3 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 20 Dec 2009 23:34:05 +0000 Subject: Simple fix - don't show meta-rig panel for non-armature data --- release/scripts/ui/properties_data_armature_rigify.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 88e5492d565..9d04afe22b5 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -67,6 +67,8 @@ class DATA_PT_template(bpy.types.Panel): templates = [] def poll(self, context): + if not context.armature: + return False obj = context.object if obj: return (obj.mode in ('POSE', 'OBJECT')) -- cgit v1.2.3 From 54c9557b8595cfd830d1491875a70f85e3f6658d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 01:02:08 +0000 Subject: Solidify modifier for Durian (allow cloth sim on single layer and make solid after) Mostly the same as the recently added editmode tool with some extras. * Options to disable filling in the rim between inner and outer surface, since its faster not to detect this in cases where its not needed. * Option to disable high quality normal calculation, mostly noticable when operating on building walls, not needed for cloth or more organic shapes. * Option to disable 'even thickness', again, not needed in some cases. Also options for creasing inner/outer and rim edges, need this for makign Sintels cloths solid since zero crease looks far too soft. note: * UVs and VCols etc are copied to the new skin however rim faces dont get the UVs or vcols set from the faces they are created from yet. * Normals are assumed to be pointing outwards * used patch from Uncle Entity as a template since it added the DNA and RNA entries but the actual modifier from the patch wasnt used. --- release/scripts/ui/properties_data_modifier.py | 14 + source/blender/blenkernel/intern/modifier.c | 436 +++++++++++++++++++++++++ source/blender/editors/mesh/editmesh_lib.c | 2 +- source/blender/makesdna/DNA_meshdata_types.h | 2 +- source/blender/makesdna/DNA_modifier_types.h | 17 + source/blender/makesrna/RNA_access.h | 1 + source/blender/makesrna/intern/rna_modifier.c | 71 ++++ 7 files changed, 541 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 97c8f603273..97237c26191 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -600,6 +600,20 @@ class DATA_PT_modifiers(DataButtonsPanel): def SOFT_BODY(self, layout, ob, md, wide_ui): layout.label(text="See Soft Body panel.") + def SOLIDIFY(self, layout, ob, md, wide_ui): + split = layout.split() + + col = split.column() + col.prop(md, "offset") + col.prop(md, "use_rim") + col.prop(md, "use_even_offset") + col.prop(md, "use_quality_normals") + col.prop(md, "edge_crease_inner") + col.prop(md, "edge_crease_outer") + col.prop(md, "edge_crease_rim") + # col.label(text="Vertex Group:") + # col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") + def SUBSURF(self, layout, ob, md, wide_ui): if wide_ui: layout.row().prop(md, "subdivision_type", expand=True) diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index e75203c6cde..732ba2a651e 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -5807,6 +5807,432 @@ static int softbodyModifier_dependsOnTime(ModifierData *md) return 1; } +/* Solidify */ + + +typedef struct EdgeFaceRef { + int f1; /* init as -1 */ + int f2; +} EdgeFaceRef; + +static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3]) +{ + int i, numVerts, numEdges, numFaces; + MFace *mface, *mf; + MVert *mvert, *mv; + + float (*face_nors)[3]; + float *f_no; + int calc_face_nors= 0; + + numVerts = dm->getNumVerts(dm); + numEdges = dm->getNumEdges(dm); + numFaces = dm->getNumFaces(dm); + mface = dm->getFaceArray(dm); + mvert = dm->getVertArray(dm); + + /* we don't want to overwrite any referenced layers */ + + /* + Dosnt work here! + mv = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MVERT); + cddm->mvert = mv; + */ + + face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); + if(!face_nors) { + calc_face_nors = 1; + face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, NULL, numFaces); + } + + mv = mvert; + mf = mface; + + { + EdgeHash *edge_hash = BLI_edgehash_new(); + EdgeHashIterator *edge_iter; + int edge_ref_count = 0; + int ed_v1, ed_v2; /* use when getting the key */ + EdgeFaceRef *edge_ref_array = MEM_callocN(numEdges * sizeof(EdgeFaceRef), "Edge Connectivity"); + EdgeFaceRef *edge_ref; + float edge_normal[3]; + + /* This function adds an edge hash if its not there, and adds the face index */ +#define NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(EDV1, EDV2); \ + edge_ref = (EdgeFaceRef *)BLI_edgehash_lookup(edge_hash, EDV1, EDV2); \ + if (!edge_ref) { \ + edge_ref = &edge_ref_array[edge_ref_count]; edge_ref_count++; \ + edge_ref->f1=i; \ + edge_ref->f2=-1; \ + BLI_edgehash_insert(edge_hash, EDV1, EDV2, edge_ref); \ + } else { \ + edge_ref->f2=i; \ + } + + for(i = 0; i < numFaces; i++, mf++) { + f_no = face_nors[i]; + + if(mf->v4) { + if(calc_face_nors) + normal_quad_v3(f_no, mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co, mv[mf->v4].co); + + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v1, mf->v2); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v2, mf->v3); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v3, mf->v4); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v4, mf->v1); + } else { + if(calc_face_nors) + normal_tri_v3(f_no, mv[mf->v1].co, mv[mf->v2].co, mv[mf->v3].co); + + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v1, mf->v2); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v2, mf->v3); + NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(mf->v3, mf->v1); + } + } + + for(edge_iter = BLI_edgehashIterator_new(edge_hash); !BLI_edgehashIterator_isDone(edge_iter); BLI_edgehashIterator_step(edge_iter)) { + /* Get the edge vert indicies, and edge value (the face indicies that use it)*/ + BLI_edgehashIterator_getKey(edge_iter, (int*)&ed_v1, (int*)&ed_v2); + edge_ref = BLI_edgehashIterator_getValue(edge_iter); + + if (edge_ref->f2 != -1) { + /* We have 2 faces using this edge, calculate the edges normal + * using the angle between the 2 faces as a weighting */ + add_v3_v3v3(edge_normal, face_nors[edge_ref->f1], face_nors[edge_ref->f2]); + normalize_v3(edge_normal); + mul_v3_fl(edge_normal, angle_normalized_v3v3(face_nors[edge_ref->f1], face_nors[edge_ref->f2])); + } else { + /* only one face attached to that edge */ + /* an edge without another attached- the weight on this is + * undefined, M_PI/2 is 90d in radians and that seems good enough */ + VECCOPY(edge_normal, face_nors[edge_ref->f1]) + mul_v3_fl(edge_normal, M_PI/2); + } + add_v3_v3(temp_nors[ed_v1], edge_normal); + add_v3_v3(temp_nors[ed_v2], edge_normal); + } + BLI_edgehashIterator_free(edge_iter); + BLI_edgehash_free(edge_hash, NULL); + MEM_freeN(edge_ref_array); + } + + /* normalize vertex normals and assign */ + for(i = 0; i < numVerts; i++, mv++) { + if(normalize_v3(temp_nors[i]) == 0.0f) { + normal_short_to_float_v3(temp_nors[i], mv->no); + } + } +} + +static void solidifyModifier_initData(ModifierData *md) +{ + SolidifyModifierData *smd = (SolidifyModifierData*) md; + smd->offset = 0.01f; + smd->flag = MOD_SOLIDIFY_EVEN | MOD_SOLIDIFY_RIM | MOD_SOLIDIFY_NORMAL_CALC; +} + +static void solidifyModifier_copyData(ModifierData *md, ModifierData *target) +{ + SolidifyModifierData *smd = (SolidifyModifierData*) md; + SolidifyModifierData *tsmd = (SolidifyModifierData*) target; + tsmd->offset = smd->offset; + tsmd->crease_inner = smd->crease_inner; + tsmd->crease_outer = smd->crease_outer; + tsmd->crease_rim = smd->crease_rim; + strcpy(tsmd->vgroup, smd->vgroup); +} + +static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, + Object *ob, + DerivedMesh *dm, + int useRenderParams, + int isFinalCalc) +{ + int i; + DerivedMesh *result; + SolidifyModifierData *smd = (SolidifyModifierData*) md; + + MFace *mf, *mface, *orig_mface; + MEdge *ed, *medge, *orig_medge; + MVert *mv, *mvert, *orig_mvert; + + int numVerts = dm->getNumVerts(dm); + int numEdges = dm->getNumEdges(dm); + int numFaces = dm->getNumFaces(dm); + + /* use for edges */ + int *new_vert_arr= NULL; + int newFaces = 0; + + int *new_edge_arr= NULL; + int newEdges = 0; + + float (*vert_nors)[3]= NULL; + + orig_mface = dm->getFaceArray(dm); + orig_medge = dm->getEdgeArray(dm); + orig_mvert = dm->getVertArray(dm); + + if(smd->flag & MOD_SOLIDIFY_RIM) { + EdgeHash *edgehash = BLI_edgehash_new(); + EdgeHashIterator *ehi; + int v1, v2; + int *edge_users; + + for(i=0, mv=orig_mvert; iflag &= ~ME_VERT_TMP_TAG; + } + + for(i=0, ed=orig_medge; iv1, ed->v2, (void *)i); + } + + edge_users= MEM_callocN(sizeof(int) * numEdges, "solid_mod edges"); + +/* will be incorrect if an edge happens to have this many face users (very unlikely) */ +#define LARGE_NUM 1000000 + + for(i=0, mf=orig_mface; iv4) { + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v1, mf->v2)] += mf->v1 < mf->v2 ? 1:LARGE_NUM; + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v2, mf->v3)] += mf->v2 < mf->v3 ? 1:LARGE_NUM; + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v3, mf->v4)] += mf->v3 < mf->v4 ? 1:LARGE_NUM; + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v4, mf->v1)] += mf->v4 < mf->v1 ? 1:LARGE_NUM; + } + else { + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v1, mf->v2)] += mf->v1 < mf->v2 ? 1:LARGE_NUM; + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v2, mf->v3)] += mf->v2 < mf->v3 ? 1:LARGE_NUM; + edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v3, mf->v1)] += mf->v3 < mf->v1 ? 1:LARGE_NUM; + } + } + + new_edge_arr= MEM_callocN(sizeof(int) * numEdges, "solid_mod arr"); + + ehi= BLI_edgehashIterator_new(edgehash); + for(; !BLI_edgehashIterator_isDone(ehi); BLI_edgehashIterator_step(ehi)) { + int eidx= (int)BLI_edgehashIterator_getValue(ehi); + if(edge_users[eidx] == 1 || edge_users[eidx] == LARGE_NUM) { + BLI_edgehashIterator_getKey(ehi, &v1, &v2); + + /* we need to order the edge */ + if(edge_users[eidx] == LARGE_NUM) { + eidx= -(eidx + 1); + } + + orig_mvert[v1].flag |= ME_VERT_TMP_TAG; + orig_mvert[v2].flag |= ME_VERT_TMP_TAG; + new_edge_arr[newFaces]= eidx; + newFaces++; + } + } + BLI_edgehashIterator_free(ehi); + MEM_freeN(edge_users); + +#undef LARGE_NUM + + new_vert_arr= MEM_callocN(sizeof(int) * numVerts, "solid_mod new_varr"); + for(i=0, mv=orig_mvert; iflag & ME_VERT_TMP_TAG) { + new_vert_arr[newEdges] = i; + newEdges++; + + mv->flag &= ~ME_VERT_TMP_TAG; + } + } + + BLI_edgehash_free(edgehash, NULL); + } + + if(smd->flag & MOD_SOLIDIFY_NORMAL_CALC) { + vert_nors= MEM_callocN(sizeof(float) * numVerts * 3, "mod_solid_vno_hq"); + dm_calc_normal(dm, vert_nors); + } + + result = CDDM_from_template(dm, numVerts * 2, (numEdges * 2) + newEdges, (numFaces * 2) + newFaces); + + mface = result->getFaceArray(result); + medge = result->getEdgeArray(result); + mvert = result->getVertArray(result); + + DM_copy_face_data(dm, result, 0, 0, numFaces); + DM_copy_face_data(dm, result, 0, numFaces, numFaces); + + DM_copy_edge_data(dm, result, 0, 0, numEdges); + DM_copy_edge_data(dm, result, 0, numEdges, numEdges); + + DM_copy_vert_data(dm, result, 0, 0, numVerts); + DM_copy_vert_data(dm, result, 0, numVerts, numVerts); + + { + static int corner_indices[4] = {2, 1, 0, 3}; + int is_quad; + + for(i=0, mf=mface+numFaces; iv1 += numVerts; + mf->v2 += numVerts; + mf->v3 += numVerts; + if(mf->v4) + mf->v4 += numVerts; + + /* Flip face normal */ + { + is_quad = mf->v4; + SWAP(int, mf->v1, mf->v3); + DM_swap_face_data(result, i+numFaces, corner_indices); + test_index_face(mf, &result->faceData, numFaces, is_quad ? 4:3); + } + } + } + + for(i=0, ed=medge+numEdges; iv1 += numVerts; + ed->v2 += numVerts; + } + + if((smd->flag & MOD_SOLIDIFY_EVEN) == 0) { + /* no even thickness, very simple */ + float scalar_short = smd->offset / 32767.0f; + + if(smd->offset < 0.0f) mv= mvert+numVerts; + else mv= mvert; + + for(i=0; ico[0] += mv->no[0] * scalar_short; + mv->co[1] += mv->no[1] * scalar_short; + mv->co[2] += mv->no[2] * scalar_short; + } + } + else { + /* make a face normal layer if not present */ + float (*face_nors)[3]; + int face_nors_calc= 0; + + /* same as EM_solidify() in editmesh_lib.c */ + float *vert_angles= MEM_callocN(sizeof(float) * numVerts * 2, "mod_solid_pair"); /* 2 in 1 */ + float *vert_accum= vert_angles + numVerts; + float face_angles[4]; + int i, j, vidx; + + face_nors = CustomData_get_layer(&dm->faceData, CD_NORMAL); + if(!face_nors) { + face_nors = CustomData_add_layer(&dm->faceData, CD_NORMAL, CD_CALLOC, NULL, dm->numFaceData); + face_nors_calc= 1; + } + + if(vert_nors==NULL) { + vert_nors= MEM_mallocN(sizeof(float) * numVerts * 3, "mod_solid_vno"); + for(i=0, mv=mvert; ino); + } + } + + for(i=0, mf=mface; iv4) + normal_quad_v3(face_nors[i], mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co); + else + normal_tri_v3(face_nors[i] , mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co); + } + + if(mf->v4) { + angle_quad_v3(face_angles, mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co); + j= 3; + } + else { + angle_tri_v3(face_angles, mvert[mf->v1].co, mvert[mf->v2].co, mvert[mf->v3].co); + j= 2; + } + + for(; j>=0; j--) { + vidx = *(&mf->v1 + j); + vert_accum[vidx] += face_angles[j]; + vert_angles[vidx]+= shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) * face_angles[j]; + } + } + + if(smd->offset < 0.0f) mv= mvert+numVerts; + else mv= mvert; + + for(i=0; ico, vert_nors[i], smd->offset * (vert_angles[i] / vert_accum[i])); + } + } + + MEM_freeN(vert_angles); + } + + if(vert_nors) + MEM_freeN(vert_nors); + + if(smd->flag & MOD_SOLIDIFY_RIM) { + /* add faces & edges */ + ed= medge + (numEdges * 2); + for(i=0; iv1= new_vert_arr[i]; + ed->v2= new_vert_arr[i] + numVerts; + ed->flag |= ME_EDGEDRAW; + + if(smd->crease_rim) + ed->crease= smd->crease_rim * 255.0f; + } + + /* faces */ + mf= mface + (numFaces * 2); + for(i=0; iv1= ed->v1; + mf->v2= ed->v2; + mf->v3= ed->v2 + numVerts; + mf->v4= ed->v1 + numVerts; + } + else { + mf->v1= ed->v2; + mf->v2= ed->v1; + mf->v3= ed->v1 + numVerts; + mf->v4= ed->v2 + numVerts; + } + + if(smd->crease_outer > 0.0f) + ed->crease= smd->crease_outer * 255.0f; + + if(smd->crease_inner > 0.0f) { + ed= medge + (numEdges + eidx); + ed->crease= smd->crease_inner * 255.0f; + } + } + + MEM_freeN(new_vert_arr); + MEM_freeN(new_edge_arr); + } + + return result; +} + +static DerivedMesh *solidifyModifier_applyModifierEM(ModifierData *md, + Object *ob, + EditMesh *editData, + DerivedMesh *derivedData) +{ + return solidifyModifier_applyModifier(md, ob, derivedData, 0, 1); +} + /* Smoke */ static void smokeModifier_initData(ModifierData *md) @@ -8788,6 +9214,16 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type) mti->deformVertsEM = shapekeyModifier_deformVertsEM; mti->deformMatricesEM = shapekeyModifier_deformMatricesEM; + mti = INIT_TYPE(Solidify); + mti->type = eModifierTypeType_Constructive; + mti->flags = eModifierTypeFlag_AcceptsMesh + //| eModifierTypeFlag_SupportsMapping + | eModifierTypeFlag_SupportsEditmode + | eModifierTypeFlag_EnableInEditmode; + mti->initData = solidifyModifier_initData; + mti->copyData = solidifyModifier_copyData; + mti->applyModifier = solidifyModifier_applyModifier; + mti->applyModifierEM = solidifyModifier_applyModifierEM; typeArrInit = 0; #undef INIT_TYPE } diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 45244407909..1b90dbc3902 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -2409,7 +2409,7 @@ void EM_solidify(EditMesh *em, float dist) EditFace *efa; EditVert *eve; float *vert_angles= MEM_callocN(sizeof(float) * em->totvert * 2, "EM_solidify"); /* 2 in 1 */ - float *vert_accum= vert_accum= vert_angles + em->totvert; + float *vert_accum= vert_angles + em->totvert; float face_angles[4]; int i, j; diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index 48e361afdae..ca5093ec09d 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -183,7 +183,7 @@ typedef struct PartialVisibility { /* mvert->flag (1=SELECT) */ #define ME_SPHERETEST 2 -#define ME_SPHERETEMP 4 +#define ME_VERT_TMP_TAG 4 #define ME_HIDE 16 #define ME_VERT_MERGED (1<<6) #define ME_VERT_PBVH_UPDATE (1<<7) diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index c599c8a7e0f..2491e58f176 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -64,6 +64,7 @@ typedef enum ModifierType { eModifierType_Surface, eModifierType_Smoke, eModifierType_ShapeKey, + eModifierType_Solidify, NUM_MODIFIER_TYPES } ModifierType; @@ -675,4 +676,20 @@ typedef struct ShapeKeyModifierData { ModifierData modifier; } ShapeKeyModifierData; +typedef struct SolidifyModifierData { + ModifierData modifier; + + char vgroup[32]; /* name of vertex group to use */ + float offset; /* new surface offset level*/ + float crease_inner; + float crease_outer; + float crease_rim; + int flag; + char pad[4]; +} SolidifyModifierData; + +#define MOD_SOLIDIFY_RIM (1<<0) +#define MOD_SOLIDIFY_EVEN (1<<1) +#define MOD_SOLIDIFY_NORMAL_CALC (1<<2) + #endif diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index c3f23e799d5..96921ba2f48 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -417,6 +417,7 @@ extern StructRNA RNA_SmokeModifier; extern StructRNA RNA_SmoothModifier; extern StructRNA RNA_SoftBodyModifier; extern StructRNA RNA_SoftBodySettings; +extern StructRNA RNA_SolidifyModifier; extern StructRNA RNA_Sound; extern StructRNA RNA_SoundSequence; extern StructRNA RNA_Space; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index dcbc2672bcb..c6aef8df407 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -57,6 +57,7 @@ EnumPropertyItem modifier_type_items[] ={ {eModifierType_Multires, "MULTIRES", ICON_MOD_MULTIRES, "Multiresolution", ""}, {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, + {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_DISPLACE, "Solidify", ""}, {0, "", 0, "Deform", ""}, {eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""}, {eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""}, @@ -161,6 +162,8 @@ static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr) return &RNA_SurfaceModifier; case eModifierType_Smoke: return &RNA_SmokeModifier; + case eModifierType_Solidify: + return &RNA_SolidifyModifier; default: return &RNA_Modifier; } @@ -322,6 +325,12 @@ static void rna_CastModifier_vgroup_set(PointerRNA *ptr, const char *value) rna_object_vgroup_name_set(ptr, value, lmd->defgrp_name, sizeof(lmd->defgrp_name)); } +static void rna_SolidifyModifier_vgroup_set(PointerRNA *ptr, const char *value) +{ + SolidifyModifierData *smd= (SolidifyModifierData*)ptr->data; + rna_object_vgroup_name_set(ptr, value, smd->vgroup, sizeof(smd->vgroup)); +} + static void rna_DisplaceModifier_uvlayer_set(PointerRNA *ptr, const char *value) { DisplaceModifierData *smd= (DisplaceModifierData*)ptr->data; @@ -2000,6 +2009,67 @@ static void rna_def_modifier_surface(BlenderRNA *brna) RNA_def_struct_sdna(srna, "SurfaceModifierData"); RNA_def_struct_ui_icon(srna, ICON_MOD_PHYSICS); } + +static void rna_def_modifier_solidify(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "SolidifyModifier", "Modifier"); + RNA_def_struct_ui_text(srna, "Solidify Modifier", "Create a solid skin by extruding, compensating for sharp angles."); + RNA_def_struct_sdna(srna, "SolidifyModifierData"); + RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE); + + prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "offset"); + RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); + RNA_def_property_ui_range(prop, -10, 10, 0.1, 4); + RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "crease_inner"); + RNA_def_property_range(prop, 0, 1); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Inner Crease", "Assign a crease to inner edges."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "edge_crease_outer", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "crease_outer"); + RNA_def_property_range(prop, 0, 1); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Outer Crease", "Assign a crease to outer edges."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "edge_crease_rim", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "crease_rim"); + RNA_def_property_range(prop, 0, 1); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Rim Crease", "Assign a crease to the edges making up the rim."); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "vgroup"); + RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name."); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SolidifyModifier_vgroup_set"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "use_rim", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_RIM); + RNA_def_property_ui_text(prop, "Fill Rim", "Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "use_even_offset", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_EVEN); + RNA_def_property_ui_text(prop, "Even Thickness", "Maintain thickness by adjusting for sharp corners (slow, disable when not needed)"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "use_quality_normals", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_NORMAL_CALC); + RNA_def_property_ui_text(prop, "High Quality Normals", "Calculate normals which result in more even thickness (slow, disable when not needed)"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); +} + void RNA_def_modifier(BlenderRNA *brna) { StructRNA *srna; @@ -2087,6 +2157,7 @@ void RNA_def_modifier(BlenderRNA *brna) rna_def_modifier_multires(brna); rna_def_modifier_surface(brna); rna_def_modifier_smoke(brna); + rna_def_modifier_solidify(brna); } #endif -- cgit v1.2.3 From 5057ac80ee1fd70f880d0edf0fac4741fb7d5e3b Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 01:09:09 +0000 Subject: netrender - Patch by Olivier Amrein (prettying the web interface with css, fixing some notification bugs) - More error checks on the slave (better behavior when job is canceled) - Client: when using "Animate on Network" and canceling render midway, also cancel job. Use Send Job and Animate if you want a real background job. --- release/scripts/io/netrender/client.py | 10 ++++++ release/scripts/io/netrender/master.py | 3 ++ release/scripts/io/netrender/master_html.py | 18 +++++++--- release/scripts/io/netrender/netrender.css | 51 +++++++++++++++++++++++++++++ release/scripts/io/netrender/slave.py | 22 ++++++++----- 5 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 release/scripts/io/netrender/netrender.css diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index a203d137174..91955e6cbc8 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -215,6 +215,8 @@ class NetworkRenderEngine(bpy.types.RenderEngine): self.update_stats("", "Network render exporting") + new_job = False + job_id = netsettings.job_id # reading back result @@ -225,6 +227,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine): response = conn.getresponse() if response.status == http.client.NO_CONTENT: + new_job = True netsettings.job_id = clientSendJob(conn, scene) requestResult(conn, job_id, scene.current_frame) @@ -233,6 +236,13 @@ class NetworkRenderEngine(bpy.types.RenderEngine): requestResult(conn, job_id, scene.current_frame) response = conn.getresponse() + # cancel new jobs (animate on network) on break + if self.test_break() and new_job: + conn.request("POST", cancelURL(job_id)) + response = conn.getresponse() + print( response.status, response.reason ) + netsettings.job_id = 0 + if response.status != http.client.OK: conn.close() return diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index bf439dd0b9b..83980c95da7 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -611,6 +611,9 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- elif self.path == "/render": self.server.stats("", "Receiving render result") + + # need some message content here or the slave doesn't like it + self.wfile.write(bytes("foo", encoding='utf8')) slave_id = self.headers['slave-id'] diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 7bd54672755..d4458ff4669 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -34,6 +34,8 @@ def get(handler): output("") output(title) output("") + output("") + def link(text, url): return "%s" % (url, text) @@ -67,6 +69,13 @@ def get(handler): shutil.copyfileobj(f, handler.wfile) f.close() + elif handler.path == "/html/netrender.css": + f = open(os.path.join(src_folder, "netrender.css"), 'rb') + + handler.send_head(content = "text/css") + shutil.copyfileobj(f, handler.wfile) + + f.close() elif handler.path == "/html" or handler.path == "/": handler.send_head(content = "text/html") head("NetRender") @@ -90,7 +99,7 @@ def get(handler): startTable() headerTable( " ", - " ", + "id", "name", "category", "chunks", @@ -111,16 +120,17 @@ def get(handler): for job in handler.server.jobs: results = job.framesStatus() rowTable( - """""" % job.id, + """""" % job.id + """""" % job.id, + job.id, link(job.name, "/html/job" + job.id), job.category if job.category else "None", str(job.chunks) + """""" % (job.id, job.chunks + 1) + """""" % (job.id, job.chunks - 1, "disabled=True" if job.chunks == 1 else ""), str(job.priority) + - """""" % (job.id, job.priority + 1) + - """""" % (job.id, job.priority - 1, "disabled=True" if job.priority == 1 else ""), + """""" % (job.id, job.priority + 1) + + """""" % (job.id, job.priority - 1, "disabled=True" if job.priority == 1 else ""), "%0.1f%%" % (job.usage * 100), "%is" % int(time.time() - job.last_dispatched), job.statusText(), diff --git a/release/scripts/io/netrender/netrender.css b/release/scripts/io/netrender/netrender.css new file mode 100644 index 00000000000..ac47b36861a --- /dev/null +++ b/release/scripts/io/netrender/netrender.css @@ -0,0 +1,51 @@ +body { + background-color:#eee; + font-size:12px; + font-family: "Lucida Sans","Lucida Sans Unicode","Lucida Grande",Lucida,sans-serif; + +} +a { + /*text-decoration:none;*/ + color:#666; +} +a:hover { + color:#000; +} +h2 { + background-color:#ddd; + font-size:120% + padding:5px; +} + +table { + text-align:center; + border:0; + background-color:#ddd; + padding: 0px; + margin: 0px; +} +thead{ + font-size:90%; + color:#555; + background-color:#ccc; +} +td { + border:0; + padding:2px; + padding-left:10px; + padding-right:10px; + margin-left:20px + background-color:#ddd; +} +td:hover { + background-color:#ccc; +} +tr { + border:0; +} +button { + color: #111; + width: auto; + height: auto; +} + diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py index 9d7fa4fb6b8..10f73dbe258 100644 --- a/release/scripts/io/netrender/slave.py +++ b/release/scripts/io/netrender/slave.py @@ -54,10 +54,9 @@ def slave_Info(): def testCancel(conn, job_id, frame_number): conn.request("HEAD", "/status", headers={"job-id":job_id, "job-frame": str(frame_number)}) - response = conn.getresponse() - + # cancelled if job isn't found anymore - if response.status == http.client.NO_CONTENT: + if conn.getresponse().status == http.client.NO_CONTENT: return True else: return False @@ -125,7 +124,7 @@ def render_slave(engine, netsettings): job_full_path = testFile(conn, job.id, slave_id, 0, JOB_PREFIX, job_path) print("Fullpath", job_full_path) print("File:", main_file, "and %i other files" % (len(job.files) - 1,)) - engine.update_stats("", "Render File", main_file, "for job", job.id) + engine.update_stats("", "Render File "+ main_file+ " for job "+ job.id) for rfile in job.files[1:]: print("\t", rfile.filepath) @@ -202,10 +201,12 @@ def render_slave(engine, netsettings): if stdout: # (only need to update on one frame, they are linked conn.request("PUT", logURL(job.id, first_frame), stdout, headers=headers) - response = conn.getresponse() + if conn.getresponse().status == http.client.NO_CONTENT: + continue headers = {"job-id":job.id, "slave-id":slave_id, "job-time":str(avg_t)} + if status == 0: # non zero status is error headers["job-result"] = str(DONE) for frame in job.frames: @@ -216,17 +217,20 @@ def render_slave(engine, netsettings): f = open(JOB_PREFIX + "%06d" % frame.number + ".exr", 'rb') conn.request("PUT", "/render", f, headers=headers) f.close() - response = conn.getresponse() + if conn.getresponse().status == http.client.NO_CONTENT: + continue elif job.type == netrender.model.JOB_PROCESS: conn.request("PUT", "/render", headers=headers) - response = conn.getresponse() + if conn.getresponse().status == http.client.NO_CONTENT: + continue else: headers["job-result"] = str(ERROR) for frame in job.frames: headers["job-frame"] = str(frame.number) # send error result back to server conn.request("PUT", "/render", headers=headers) - response = conn.getresponse() + if conn.getresponse().status == http.client.NO_CONTENT: + continue else: if timeout < MAX_TIMEOUT: timeout += INCREMENT_TIMEOUT @@ -240,4 +244,4 @@ def render_slave(engine, netsettings): conn.close() if __name__ == "__main__": - pass \ No newline at end of file + pass -- cgit v1.2.3 From e2f7a331134921a42be4b7f3d773fe2969fffa3d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 01:44:33 +0000 Subject: Missing id assignment for kmi creation function (2 out of 3 isn't good enough). --- source/blender/windowmanager/intern/wm_keymap.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 116bc263d71..7de7b3c45e1 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -185,6 +185,11 @@ wmKeyMapItem *WM_keymap_verify_item(wmKeyMap *keymap, char *idname, int type, in BLI_addtail(&keymap->items, kmi); BLI_strncpy(kmi->idname, idname, OP_MAX_TYPENAME); + if ((keymap->flag & KEYMAP_USER) == 0) { + keymap->kmi_id++; + kmi->id = keymap->kmi_id; + } + keymap_event_set(kmi, type, val, modifier, keymodifier); keymap_properties_set(kmi); } -- cgit v1.2.3 From 5affd02156e0c00df1bb2aff43df71b906b88e8c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 21 Dec 2009 02:39:39 +0000 Subject: Quicky Loopcut patch: In addition to the existing scrollwheel up/down, PageUp/Down can now be used to set the number of cuts while previewing the cut location. --- source/blender/editors/mesh/loopcut.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c index 72bd4ee3541..9fea0d08e70 100644 --- a/source/blender/editors/mesh/loopcut.c +++ b/source/blender/editors/mesh/loopcut.c @@ -409,18 +409,24 @@ static int ringsel_modal (bContext *C, wmOperator *op, wmEvent *event) ED_region_tag_redraw(lcd->ar); break; case WHEELUPMOUSE: /* change number of cuts */ - cuts++; - RNA_int_set(op->ptr,"number_cuts",cuts); - ringsel_find_edge(lcd, C, lcd->ar, cuts); - - ED_region_tag_redraw(lcd->ar); + case PAGEUPKEY: + if (event->val == KM_PRESS) { + cuts++; + RNA_int_set(op->ptr,"number_cuts",cuts); + ringsel_find_edge(lcd, C, lcd->ar, cuts); + + ED_region_tag_redraw(lcd->ar); + } break; case WHEELDOWNMOUSE: /* change number of cuts */ - cuts=MAX2(cuts-1,1); - RNA_int_set(op->ptr,"number_cuts",cuts); - ringsel_find_edge(lcd, C, lcd->ar,cuts); - - ED_region_tag_redraw(lcd->ar); + case PAGEDOWNKEY: + if (event->val == KM_PRESS) { + cuts=MAX2(cuts-1,1); + RNA_int_set(op->ptr,"number_cuts",cuts); + ringsel_find_edge(lcd, C, lcd->ar,cuts); + + ED_region_tag_redraw(lcd->ar); + } break; case MOUSEMOVE: { /* mouse moved somewhere to select another loop */ int dist = 75; -- cgit v1.2.3 From c050f5f1deb7ae2627ce913f467e497a16a2aa2c Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 02:46:19 +0000 Subject: netrender - Add "Get Result" button after a job has been sent (this calls Animate and fetches the results back as render result buffers) - Rendering (animate or single frame) without an active job was broken. Note that this launches a new job for each frame (it's impossible in a render engine to know if an animation is being rendered or a single frame only). --- release/scripts/io/netrender/client.py | 3 +++ release/scripts/io/netrender/ui.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index 91955e6cbc8..bbbb9f26051 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -229,7 +229,10 @@ class NetworkRenderEngine(bpy.types.RenderEngine): if response.status == http.client.NO_CONTENT: new_job = True netsettings.job_id = clientSendJob(conn, scene) + job_id = netsettings.job_id + requestResult(conn, job_id, scene.current_frame) + response = conn.getresponse() while response.status == http.client.ACCEPTED and not self.test_break(): time.sleep(1) diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 5ef02fad17c..a9e2453d0e6 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -102,6 +102,8 @@ class RENDER_PT_network_job(RenderButtonsPanel): if scene.network_render.server_address != "[default]": col.operator("render.netclientanim", icon='RENDER_ANIMATION') col.operator("render.netclientsend", icon='FILE_BLEND') + if scene.network_render.job_id: + col.operator("screen.render", text="Get Results", icon='RENDER_ANIMATION').animation = True col.operator("render.netclientweb", icon='QUESTION') col.prop(scene.network_render, "job_name") col.prop(scene.network_render, "job_category") -- cgit v1.2.3 From 824b76332202c33da0a9ec6fe803e4eb752618d5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 08:37:30 +0000 Subject: solidify modifier - rim faces now copy values from the faces they extrude from (material, face flags but not uvs or vcols yet) this doesnt work in editmode yet. --- source/blender/blenkernel/intern/modifier.c | 63 ++++++++++++++++++----------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 732ba2a651e..e4728602d65 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -5967,6 +5967,8 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, int *new_edge_arr= NULL; int newEdges = 0; + int *edge_users= NULL; + float (*vert_nors)[3]= NULL; orig_mface = dm->getFaceArray(dm); @@ -5977,7 +5979,7 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, EdgeHash *edgehash = BLI_edgehash_new(); EdgeHashIterator *ehi; int v1, v2; - int *edge_users; + int edu, eidx; for(i=0, mv=orig_mvert; iflag &= ~ME_VERT_TMP_TAG; @@ -5987,38 +5989,47 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, BLI_edgehash_insert(edgehash, ed->v1, ed->v2, (void *)i); } - edge_users= MEM_callocN(sizeof(int) * numEdges, "solid_mod edges"); +#define INVALID_UNUSED -1 +#define INVALID_PAIR -2 + +#define ADD_EDGE_USER(_v1, _v2) \ + eidx= GET_INT_FROM_POINTER(BLI_edgehash_lookup(edgehash, _v1, _v2)); \ + if(edge_users[eidx] == INVALID_UNUSED) { \ + edge_users[eidx]= (_v1 < _v2) ? i:(i+numFaces); \ + } else { \ + edge_users[eidx]= INVALID_PAIR; \ + } \ -/* will be incorrect if an edge happens to have this many face users (very unlikely) */ -#define LARGE_NUM 1000000 + + edge_users= MEM_mallocN(sizeof(int) * numEdges, "solid_mod edges"); + memset(edge_users, INVALID_UNUSED, sizeof(int) * numEdges); for(i=0, mf=orig_mface; iv4) { - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v1, mf->v2)] += mf->v1 < mf->v2 ? 1:LARGE_NUM; - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v2, mf->v3)] += mf->v2 < mf->v3 ? 1:LARGE_NUM; - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v3, mf->v4)] += mf->v3 < mf->v4 ? 1:LARGE_NUM; - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v4, mf->v1)] += mf->v4 < mf->v1 ? 1:LARGE_NUM; + ADD_EDGE_USER(mf->v1, mf->v2); + ADD_EDGE_USER(mf->v2, mf->v3); + ADD_EDGE_USER(mf->v3, mf->v4); + ADD_EDGE_USER(mf->v4, mf->v1); } else { - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v1, mf->v2)] += mf->v1 < mf->v2 ? 1:LARGE_NUM; - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v2, mf->v3)] += mf->v2 < mf->v3 ? 1:LARGE_NUM; - edge_users[(int)BLI_edgehash_lookup(edgehash, mf->v3, mf->v1)] += mf->v3 < mf->v1 ? 1:LARGE_NUM; + ADD_EDGE_USER(mf->v1, mf->v2); + ADD_EDGE_USER(mf->v2, mf->v3); + ADD_EDGE_USER(mf->v3, mf->v1); } } +#undef ADD_EDGE_USER +#undef INVALID_UNUSED +#undef INVALID_PAIR + + new_edge_arr= MEM_callocN(sizeof(int) * numEdges, "solid_mod arr"); ehi= BLI_edgehashIterator_new(edgehash); for(; !BLI_edgehashIterator_isDone(ehi); BLI_edgehashIterator_step(ehi)) { - int eidx= (int)BLI_edgehashIterator_getValue(ehi); - if(edge_users[eidx] == 1 || edge_users[eidx] == LARGE_NUM) { + int eidx= GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi)); + if(edge_users[eidx] >= 0) { BLI_edgehashIterator_getKey(ehi, &v1, &v2); - - /* we need to order the edge */ - if(edge_users[eidx] == LARGE_NUM) { - eidx= -(eidx + 1); - } - orig_mvert[v1].flag |= ME_VERT_TMP_TAG; orig_mvert[v2].flag |= ME_VERT_TMP_TAG; new_edge_arr[newFaces]= eidx; @@ -6026,9 +6037,8 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, } } BLI_edgehashIterator_free(ehi); - MEM_freeN(edge_users); -#undef LARGE_NUM + new_vert_arr= MEM_callocN(sizeof(int) * numVerts, "solid_mod new_varr"); for(i=0, mv=orig_mvert; i= numFaces) { + fidx -= numFaces; flip= 1; } else { @@ -6196,6 +6207,9 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, ed= medge + eidx; + /* copy most of the face settings */ + *mf= mface[fidx]; + if(flip) { mf->v1= ed->v1; mf->v2= ed->v2; @@ -6207,6 +6221,8 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, mf->v2= ed->v1; mf->v3= ed->v1 + numVerts; mf->v4= ed->v2 + numVerts; + + } if(smd->crease_outer > 0.0f) @@ -6220,6 +6236,7 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, MEM_freeN(new_vert_arr); MEM_freeN(new_edge_arr); + MEM_freeN(edge_users); } return result; -- cgit v1.2.3 From 0fcfe8993e63d2490320cf90a0e2567588ea54f6 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 21 Dec 2009 09:52:43 +0000 Subject: Animation Editors - Durian Request - Selection Syncing: This commit brings back the functionality whereby the selection of F-Curves and/or relevant Group(s) is synced with the selection status of the corresponding bones when the bones are selected/deselected. --- source/blender/editors/animation/anim_deps.c | 241 +++++++++++++-------- source/blender/editors/include/ED_anim_api.h | 5 +- source/blender/editors/space_action/space_action.c | 48 ++-- source/blender/editors/space_graph/space_graph.c | 29 ++- 4 files changed, 197 insertions(+), 126 deletions(-) diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 0e81dab380c..1d7483d661f 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -27,25 +27,30 @@ */ #include +#include #include #include "MEM_guardedalloc.h" -#include "DNA_action_types.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" #include "DNA_scene_types.h" +#include "DNA_sequence_types.h" #include "BLI_blenlib.h" -#include "BKE_action.h" #include "BKE_animsys.h" +#include "BKE_action.h" #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" @@ -58,8 +63,11 @@ #include "WM_api.h" #include "WM_types.h" +/* **************************** depsgraph tagging ******************************** */ + /* tags the given anim list element for refreshes (if applicable) - * due to Animation Editor editing */ + * due to Animation Editor editing + */ void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) { ID *id; @@ -67,24 +75,24 @@ void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) AnimData *adt; id= ale->id; - if(!id) + if (!id) return; /* tag AnimData for refresh so that other views will update in realtime with these changes */ adt= BKE_animdata_from_id(id); - if(adt) + if (adt) adt->recalc |= ADT_RECALC_ANIM; /* update data */ fcu= (ale->datatype == ALE_FCURVE)? ale->key_data: NULL; - if(fcu && fcu->rna_path) { + if (fcu && fcu->rna_path) { /* if we have an fcurve, call the update for the property we are editing, this is then expected to do the proper redraws and depsgraph updates */ PointerRNA id_ptr, ptr; PropertyRNA *prop; - + RNA_id_pointer_create(id, &id_ptr); if(RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop)) @@ -101,7 +109,7 @@ void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) * Animation Editor editing */ void ANIM_id_update(Scene *scene, ID *id) { - if(id) { + if (id) { AnimData *adt= BKE_animdata_from_id(id); /* tag AnimData for refresh so that other views will update in realtime with these changes */ @@ -113,103 +121,162 @@ void ANIM_id_update(Scene *scene, ID *id) } } -/* **************************** pose <-> action syncing ******************************** */ -/* Summary of what needs to be synced between poses and actions: - * 1) Flags - * a) Visibility (only for pose to action) - * b) Selection status (both ways) - * 2) Group settings (only for pose to action) - do we also need to make sure same groups exist? - * 3) Grouping (only for pose to action for now) - */ - - -/* Notifier from Action/Dopesheet (this may be extended to include other things such as Python...) - * Channels in action changed, so update pose channels/groups to reflect changes. +/* **************************** animation data <-> data syncing ******************************** */ +/* This code here is used to synchronise the + * - selection (to find selected data easier) + * - ... (insert other relevant items here later) + * status in relevant Blender data with the status stored in animation channels. * - * An object (usually 'active' Object) needs to be supplied, so that its Pose-Channels can be synced with - * the channels in its active Action. + * This should be called in the refresh() callbacks for various editors in + * response to appropriate notifiers. */ -void ANIM_action_to_pose_sync (Object *ob) + +/* perform syncing updates for Action Groups */ +static void animchan_sync_group (bAnimContext *ac, bAnimListElem *ale) { -#if 0 - AnimData *adt= ob->adt; - bAction *act= adt->act; - FCurve *fcu; - bPoseChannel *pchan; + bActionGroup *agrp= (bActionGroup *)ale->data; + ID *owner_id= ale->id; - /* error checking */ - if (ELEM3(NULL, ob, ob->adt, ob->pose) || (ob->type != OB_ARMATURE)) + /* major priority is selection status + * so we need both a group and an owner + */ + if (ELEM(NULL, agrp, owner_id)) return; - - /* 1b) loop through all Action-Channels (there should be fewer channels to search through here in general) */ - for (achan= act->chanbase.first; achan; achan= achan->next) { - /* find matching pose-channel */ - pchan= get_pose_channel(ob->pose, achan->name); - /* sync active and selected flags */ - if (pchan && pchan->bone) { - /* selection */ - if (achan->flag & ACHAN_SELECTED) - pchan->bone->flag |= BONE_SELECTED; - else - pchan->bone->flag &= ~BONE_SELECTED; + /* for standard Objects, check if group is the name of some bone */ + if (GS(owner_id->name) == ID_OB) { + Object *ob= (Object *)owner_id; + + /* check if there are bones, and whether the name matches any + * NOTE: this feature will only really work if groups by default contain the F-Curves for a single bone + */ + if (ob->pose) { + bPoseChannel *pchan= get_pose_channel(ob->pose, agrp->name); - /* active */ - if (achan->flag & ACHAN_HILIGHTED) - pchan->bone->flag |= BONE_ACTIVE; - else - pchan->bone->flag &= ~BONE_ACTIVE; + /* if one matches, sync the selection status */ + if (pchan) { + if (pchan->bone->flag & BONE_SELECTED) + agrp->flag |= AGRP_SELECTED; + else + agrp->flag &= ~AGRP_SELECTED; + } } } - - // TODO: add grouping changes too? For now, these tools aren't exposed to users in animation editors yet... -#endif -} +} -/* Notifier from 3D-View/Outliner (this is likely to include other sources too...) - * Pose channels/groups changed, so update action channels - * - * An object (usually 'active' Object) needs to be supplied, so that its Pose-Channels can be synced with - * the channels in its active Action. - */ -void ANIM_pose_to_action_sync (Object *ob, ScrArea *sa) +/* perform syncing updates for F-Curves */ +static void animchan_sync_fcurve (bAnimContext *ac, bAnimListElem *ale) { -#if 0 // XXX old animation system - SpaceAction *saction= (SpaceAction *)sa->spacedata.first; - bArmature *arm= (bArmature *)ob->data; - bAction *act= (bAction *)ob->action; - bActionChannel *achan; - //bActionGroup *agrp, *bgrp; - bPoseChannel *pchan; + FCurve *fcu= (FCurve *)ale->data; + ID *owner_id= ale->id; - /* error checking */ - if ((ob == NULL) || (ob->type != OB_ARMATURE) || ELEM3(NULL, arm, act, ob->pose)) + /* major priority is selection status, so refer to the checks done in anim_filter.c + * skip_fcurve_selected_data() for reference about what's going on here... + */ + if (ELEM3(NULL, fcu, fcu->rna_path, owner_id)) return; - /* 1) loop through all Action-Channels (there should be fewer channels to search through here in general) */ - for (achan= act->chanbase.first; achan; achan= achan->next) { - /* find matching pose-channel */ - pchan= get_pose_channel(ob->pose, achan->name); + if (GS(owner_id->name) == ID_OB) { + Object *ob= (Object *)owner_id; + + /* only affect if F-Curve involves pose.bones */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "pose.bones")) { + bPoseChannel *pchan; + char *bone_name; + + /* get bone-name, and check if this bone is selected */ + bone_name= BLI_getQuotedStr(fcu->rna_path, "pose.bones["); + pchan= get_pose_channel(ob->pose, bone_name); + if (bone_name) MEM_freeN(bone_name); + + /* F-Curve selection depends on whether the bone is selected */ + if ((pchan) && (pchan->bone)) { + if (pchan->bone->flag & BONE_SELECTED) + fcu->flag |= FCURVE_SELECTED; + else + fcu->flag &= ~FCURVE_SELECTED; + } + } + } + else if (GS(owner_id->name) == ID_SCE) { + Scene *scene = (Scene *)owner_id; + + /* only affect if F-Curve involves sequence_editor.sequences */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "sequences_all")) { + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + char *seq_name; + + /* get strip name, and check if this strip is selected */ + seq_name= BLI_getQuotedStr(fcu->rna_path, "sequences_all["); + seq = get_seq_by_name(ed->seqbasep, seq_name, FALSE); + if (seq_name) MEM_freeN(seq_name); + + /* can only add this F-Curve if it is selected */ + if (seq) { + if (seq->flag & SELECT) + fcu->flag |= FCURVE_SELECTED; + else + fcu->flag &= ~FCURVE_SELECTED; + } + } + } + else if (GS(owner_id->name) == ID_NT) { + bNodeTree *ntree = (bNodeTree *)owner_id; - /* sync selection and visibility settings */ - if (pchan && pchan->bone) { - /* visibility - if layer is hidden, or if bone itself is hidden */ - if (!(saction->flag & SACTION_NOHIDE) && !(saction->pin)) { - if (!(pchan->bone->layer & arm->layer) || (pchan->bone->flag & BONE_HIDDEN_P)) - achan->flag |= ACHAN_HIDDEN; + /* check for selected nodes */ + if ((fcu->rna_path) && strstr(fcu->rna_path, "nodes")) { + bNode *node; + char *node_name; + + /* get strip name, and check if this strip is selected */ + node_name= BLI_getQuotedStr(fcu->rna_path, "nodes["); + node = nodeFindNodebyName(ntree, node_name); + if (node_name) MEM_freeN(node_name); + + /* can only add this F-Curve if it is selected */ + if (node) { + if (node->flag & NODE_SELECT) + fcu->flag |= FCURVE_SELECTED; else - achan->flag &= ~ACHAN_HIDDEN; + fcu->flag &= ~FCURVE_SELECTED; } - - /* selection */ - if (pchan->bone->flag & BONE_SELECTED) - achan->flag |= ACHAN_SELECTED; - else - achan->flag &= ~ACHAN_SELECTED; + } + } +} + +/* ---------------- */ + +/* Main call to be exported to animation editors */ +void ANIM_sync_animchannels_to_data (const bContext *C) +{ + bAnimContext ac; + ListBase anim_data = {NULL, NULL}; + bAnimListElem *ale; + int filter; + + /* get animation context info for filtering the channels */ + // TODO: check on whether we need to set the area specially instead, since active area might not be ok? + if (ANIM_animdata_get_context(C, &ac) == 0) + return; + + /* filter data */ + /* NOTE: we want all channels, since we want to be able to set selection status on some of them even when collapsed */ + filter= ANIMFILTER_CHANNELS; + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* flush settings as appropriate depending on the types of the channels */ + for (ale= anim_data.first; ale; ale= ale->next) { + switch (ale->type) { + case ANIMTYPE_GROUP: + animchan_sync_group(&ac, ale); + break; + + case ANIMTYPE_FCURVE: + animchan_sync_fcurve(&ac, ale); + break; } } - // XXX step 2 needs to be coded still... currently missing action/bone group API to do any more work here... - // XXX step 3 needs to be coded still... it's a messy case to deal with (we'll use the temp indices for this?) -#endif // XXX old animation system + BLI_freelistN(&anim_data); } diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 7f8df38741d..48e2eff0d31 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -494,9 +494,8 @@ void ED_nla_postop_refresh(bAnimContext *ac); void ANIM_id_update(struct Scene *scene, struct ID *id); void ANIM_list_elem_update(struct Scene *scene, bAnimListElem *ale); -/* pose <-> action syncing */ -void ANIM_action_to_pose_sync(struct Object *ob); -void ANIM_pose_to_action_sync(struct Object *ob, struct ScrArea *sa); +/* data -> channels syncing */ +void ANIM_sync_animchannels_to_data(const struct bContext *C); /* ************************************************* */ /* OPERATORS */ diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 67b4d6e848b..1bc300395ca 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -356,25 +356,31 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch (wmn->category) { case NC_ANIMATION: - ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); break; case NC_SCENE: - /*switch (wmn->data) { - case ND_OB_ACTIVE: + switch (wmn->data) { + case ND_OB_ACTIVE: /* selection changed, so force refresh to flush */ case ND_OB_SELECT: ED_area_tag_refresh(sa); break; - }*/ - ED_area_tag_refresh(sa); + + default: /* just redrawing the view will do */ + ED_area_tag_redraw(sa); + break; + } break; case NC_OBJECT: - /*switch (wmn->data) { - case ND_BONE_SELECT: + switch (wmn->data) { + case ND_BONE_SELECT: /* selection changed, so force refresh to flush */ case ND_BONE_ACTIVE: ED_area_tag_refresh(sa); break; - }*/ - ED_area_tag_refresh(sa); + + default: /* just redrawing the view will do */ + ED_area_tag_redraw(sa); + break; + } break; case NC_SPACE: if(wmn->data == ND_SPACE_DOPESHEET) @@ -385,25 +391,11 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) static void action_refresh(const bContext *C, ScrArea *sa) { - SpaceAction *saction = (SpaceAction *)sa->spacedata.first; - - /* updates to data needed depends on Action Editor mode... */ - switch (saction->mode) { - case SACTCONT_DOPESHEET: /* DopeSheet - for now, just all armatures... */ - { - - } - break; - - case SACTCONT_ACTION: /* Action Editor - just active object will do */ - { - Object *ob= CTX_data_active_object(C); - - /* sync changes to bones to the corresponding action channels */ - ANIM_pose_to_action_sync(ob, sa); - } - break; - } + //SpaceAction *saction= CTX_wm_space_action(C); + + /* update the state of the animchannels in response to changes from the data they represent */ + // TODO: check if we don't want this to happen + ANIM_sync_animchannels_to_data(C); /* region updates? */ // XXX resizing y-extents of tot should go here? diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index c3f241ef300..8902f4df314 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -434,25 +434,34 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch (wmn->category) { case NC_ANIMATION: + /* unlike for DopeSheet, we want refresh not redraw here, + * since F-Curve colors may need setting + */ ED_area_tag_refresh(sa); break; case NC_SCENE: - /*switch (wmn->data) { - case ND_OB_ACTIVE: + switch (wmn->data) { + case ND_OB_ACTIVE: /* selection changed, so force refresh to flush */ case ND_OB_SELECT: ED_area_tag_refresh(sa); break; - }*/ - ED_area_tag_refresh(sa); + + default: /* just redrawing the view will do */ + ED_area_tag_redraw(sa); + break; + } break; case NC_OBJECT: - /*switch (wmn->data) { - case ND_BONE_SELECT: + switch (wmn->data) { + case ND_BONE_SELECT: /* selection changed, so force refresh to flush */ case ND_BONE_ACTIVE: ED_area_tag_refresh(sa); break; - }*/ - ED_area_tag_refresh(sa); + + default: /* just redrawing the view will do */ + ED_area_tag_redraw(sa); + break; + } break; case NC_SPACE: if(wmn->data == ND_SPACE_GRAPH) @@ -489,6 +498,10 @@ static void graph_refresh(const bContext *C, ScrArea *sa) /* region updates? */ // XXX resizing y-extents of tot should go here? + /* update the state of the animchannels in response to changes from the data they represent */ + // TODO: check if we don't want this to happen + ANIM_sync_animchannels_to_data(C); + /* init/adjust F-Curve colors */ if (ANIM_animdata_get_context(C, &ac)) { ListBase anim_data = {NULL, NULL}; -- cgit v1.2.3 From f7f06d96f3c13623448d899e1fe2577ed6cbf996 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 10:16:04 +0000 Subject: Solidify rim faces now get face data from the faces they extrude from, (UV and VCol support) --- source/blender/blenkernel/intern/modifier.c | 38 ++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index e4728602d65..e0640a76f43 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -5968,6 +5968,7 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, int newEdges = 0; int *edge_users= NULL; + char *edge_order= NULL; float (*vert_nors)[3]= NULL; @@ -5979,42 +5980,44 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, EdgeHash *edgehash = BLI_edgehash_new(); EdgeHashIterator *ehi; int v1, v2; - int edu, eidx; + int eidx; for(i=0, mv=orig_mvert; iflag &= ~ME_VERT_TMP_TAG; } for(i=0, ed=orig_medge; iv1, ed->v2, (void *)i); + BLI_edgehash_insert(edgehash, ed->v1, ed->v2, SET_INT_IN_POINTER(i)); } #define INVALID_UNUSED -1 #define INVALID_PAIR -2 -#define ADD_EDGE_USER(_v1, _v2) \ +#define ADD_EDGE_USER(_v1, _v2, edge_ord) \ eidx= GET_INT_FROM_POINTER(BLI_edgehash_lookup(edgehash, _v1, _v2)); \ if(edge_users[eidx] == INVALID_UNUSED) { \ edge_users[eidx]= (_v1 < _v2) ? i:(i+numFaces); \ + edge_order[eidx]= edge_ord; \ } else { \ edge_users[eidx]= INVALID_PAIR; \ } \ edge_users= MEM_mallocN(sizeof(int) * numEdges, "solid_mod edges"); + edge_order= MEM_mallocN(sizeof(char) * numEdges, "solid_mod eorder"); memset(edge_users, INVALID_UNUSED, sizeof(int) * numEdges); for(i=0, mf=orig_mface; iv4) { - ADD_EDGE_USER(mf->v1, mf->v2); - ADD_EDGE_USER(mf->v2, mf->v3); - ADD_EDGE_USER(mf->v3, mf->v4); - ADD_EDGE_USER(mf->v4, mf->v1); + ADD_EDGE_USER(mf->v1, mf->v2, 0); + ADD_EDGE_USER(mf->v2, mf->v3, 1); + ADD_EDGE_USER(mf->v3, mf->v4, 2); + ADD_EDGE_USER(mf->v4, mf->v1, 3); } else { - ADD_EDGE_USER(mf->v1, mf->v2); - ADD_EDGE_USER(mf->v2, mf->v3); - ADD_EDGE_USER(mf->v3, mf->v1); + ADD_EDGE_USER(mf->v1, mf->v2, 0); + ADD_EDGE_USER(mf->v2, mf->v3, 1); + ADD_EDGE_USER(mf->v3, mf->v1, 2); } } @@ -6178,6 +6181,13 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, MEM_freeN(vert_nors); if(smd->flag & MOD_SOLIDIFY_RIM) { + + static int edge_indices[4][4] = { + {1, 0, 0, 1}, + {2, 1, 1, 2}, + {3, 2, 2, 3}, + {0, 3, 3, 0}}; + /* add faces & edges */ ed= medge + (numEdges * 2); for(i=0; iv1= ed->v1; mf->v2= ed->v2; mf->v3= ed->v2 + numVerts; mf->v4= ed->v1 + numVerts; } else { + DM_swap_face_data(result, (numFaces * 2) + i, edge_indices[edge_order[eidx]]); + mf->v1= ed->v2; mf->v2= ed->v1; mf->v3= ed->v1 + numVerts; @@ -6237,6 +6250,7 @@ static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, MEM_freeN(new_vert_arr); MEM_freeN(new_edge_arr); MEM_freeN(edge_users); + MEM_freeN(edge_order); } return result; -- cgit v1.2.3 From 5e6e3453a581f7f2bafae1ce4ebeba113a523c86 Mon Sep 17 00:00:00 2001 From: Stefan Gartner Date: Mon, 21 Dec 2009 10:38:04 +0000 Subject: OS X: added support for building with Cocoa to Makefiles to build with Cocoa support, set WITH_COCOA to true in user-def.mk --- intern/ghost/intern/Makefile | 10 +++++++++- source/blender/makesrna/intern/Makefile | 2 +- source/blender/quicktime/apple/Makefile | 3 +-- source/nan_compile.mk | 27 +++++++++++++++++++++++---- source/nan_link.mk | 7 +++++-- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/intern/ghost/intern/Makefile b/intern/ghost/intern/Makefile index 5b95bbb3b68..a6392662c30 100644 --- a/intern/ghost/intern/Makefile +++ b/intern/ghost/intern/Makefile @@ -41,7 +41,15 @@ CCSRCS += GHOST_CallbackEventConsumer.cpp CCSRCS += GHOST_NDOFManager.cpp ifeq ($(OS),$(findstring $(OS), "darwin")) - CCSRCS += $(wildcard *Carbon.cpp) + ifeq ($(WITH_COCOA), true) + OCSRCS += $(wildcard *Cocoa.mm) + CPPFLAGS += -DGHOST_COCOA + ifeq ($(WITH_QUICKTIME), true) + CPPFLAGS += -DWITH_QUICKTIME + endif + else + CCSRCS += $(wildcard *Carbon.cpp) + endif endif ifeq ($(OS),$(findstring $(OS), "windows")) diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile index 7923ea1e7de..e4e4e859ed3 100644 --- a/source/blender/makesrna/intern/Makefile +++ b/source/blender/makesrna/intern/Makefile @@ -75,7 +75,7 @@ ifeq ($(WITH_OPENJPEG), true) endif ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME + CPPFLAGS += -DWITH_QUICKTIME -I../../quicktime endif ifeq ($(WITH_SDL),true) diff --git a/source/blender/quicktime/apple/Makefile b/source/blender/quicktime/apple/Makefile index 0cee45e3af0..19f87ed31e3 100644 --- a/source/blender/quicktime/apple/Makefile +++ b/source/blender/quicktime/apple/Makefile @@ -52,6 +52,5 @@ CPPFLAGS += -I.. # stuff needed by quicktime_[import|export].c CPPFLAGS += -I../../blenloader -I../../imbuf/intern -I../../imbuf CPPFLAGS += -I../../blenlib -I../../makesdna -I../../editors/include -I../../avi -CPPFLAGS += -I../../blenkernel -I../../render/extern/include - +CPPFLAGS += -I../../blenkernel -I../../render/extern/include -I../../windowmanager -I../../makesrna diff --git a/source/nan_compile.mk b/source/nan_compile.mk index 258d06c07b9..9036d0a0f34 100644 --- a/source/nan_compile.mk +++ b/source/nan_compile.mk @@ -73,15 +73,18 @@ ifeq ($(OS),darwin) CC ?= gcc CCC ?= g++ ifeq ($(CPU),powerpc) - CFLAGS += -pipe -fPIC -ffast-math -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing -Wno-long-double - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-long-double + CFLAGS += -pipe -fPIC -ffast-math -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing + CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -wno-long-double else CFLAGS += -pipe -fPIC -ffast-math -march=pentium-m -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing + CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -wno-long-double endif # REL_CFLAGS += -O # REL_CCFLAGS += -O2 CPPFLAGS += -D_THREAD_SAFE + ifeq ($(WITH_COCOA), true) + CPPFLAGS += -DGHOST_COCOA + endif NAN_DEPEND = true OPENGL_HEADERS = /System/Library/Frameworks/OpenGL.framework AR = ar @@ -307,6 +310,20 @@ $(DIR)/$(DEBUG_DIR)%.o: %.cpp $(CCC) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@ endif +$(DIR)/$(DEBUG_DIR)%.o: %.mm + ifdef NAN_DEPEND + @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \ + | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \ + > $(DIR)/$(DEBUG_DIR)$*.d; \ + [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d + endif + ifdef NAN_QUIET + @echo " -- $< -- " + @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + else + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + endif + $(DIR)/$(DEBUG_DIR)%.res: %.rc ifeq ($(FREE_WINDOWS),true) windres $< -O coff -o $@ @@ -332,16 +349,18 @@ CCSRCS ?= $(wildcard *.cpp) JSRCS ?= $(wildcard *.java) ifdef NAN_DEPEND --include $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.d) $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.d) +-include $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.d) $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.d) $(OCSRCS:$.mm=$(DIR)/$(DEBUG_DIR)%.d) endif OBJS_AR := $(OBJS) OBJS_AR += $(CSRCS:%.c=%.o) OBJS_AR += $(CCSRCS:%.cpp=%.o) +OBJS_AR += $(OCSRCS:%.mm=%.o) OBJS_AR += $(WINRC:%.rc=%.res) OBJS += $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.o) OBJS += $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.o) +OBJS += $(OCSRCS:%.mm=$(DIR)/$(DEBUG_DIR)%.o) OBJS += $(WINRC:%.rc=$(DIR)/$(DEBUG_DIR)%.res) JCLASS += $(JSRCS:%.java=$(DIR)/$(DEBUG_DIR)%.class) diff --git a/source/nan_link.mk b/source/nan_link.mk index f8bb8e8660d..0524ee7592d 100644 --- a/source/nan_link.mk +++ b/source/nan_link.mk @@ -54,8 +54,11 @@ ifeq ($(OS),darwin) LLIBS += -lz -lstdc++ ifdef USE_OSX10.4STUBS LLIBS +=-lSystemStubs - endif - LLIBS += -framework Carbon -framework AGL -framework OpenGL + endif + ifeq ($(WITH_COCOA), true) + LLIBS += -framework Cocoa + endif + LLIBS += -framework Carbon -framework AGL -framework OpenGL LLIBS += -framework QuickTime -framework CoreAudio LLIBS += -framework AudioUnit -framework AudioToolbox LDFLAGS += -L/System/Library/Frameworks/OpenGL.framework/Libraries -- cgit v1.2.3 From e65562c6eaf706f73e5678554a6ce0d13c7b73a0 Mon Sep 17 00:00:00 2001 From: Stefan Gartner Date: Mon, 21 Dec 2009 10:40:55 +0000 Subject: Makefiles: fix CFLAGS for OS X --- source/nan_compile.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/nan_compile.mk b/source/nan_compile.mk index 9036d0a0f34..03f5a0d1cd6 100644 --- a/source/nan_compile.mk +++ b/source/nan_compile.mk @@ -73,11 +73,11 @@ ifeq ($(OS),darwin) CC ?= gcc CCC ?= g++ ifeq ($(CPU),powerpc) - CFLAGS += -pipe -fPIC -ffast-math -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -wno-long-double + CFLAGS += -pipe -fPIC -ffast-math -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing -Wno-long-double + CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-long-double else CFLAGS += -pipe -fPIC -ffast-math -march=pentium-m -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -wno-long-double + CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing endif # REL_CFLAGS += -O # REL_CCFLAGS += -O2 -- cgit v1.2.3 From 1d957e4fb7a990957195b49beaad496adeba34f6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 21 Dec 2009 10:46:14 +0000 Subject: Fix #20442: opening .blend file with hanging temp screens could crash, version patch removed these screens, but not the corresponding windows. --- source/blender/blenloader/intern/readfile.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 11d34f9e69a..7512a7ebb02 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10156,12 +10156,26 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* clear hanging 'temp' screens from older 2.5 files*/ if (main->versionfile == 250) { bScreen *screen, *nextscreen; + wmWindowManager *wm; + wmWindow *win, *nextwin; for(screen= main->screen.first; screen; screen= nextscreen) { nextscreen= screen->id.next; - if (screen->full == SCREENTEMP) + if (screen->full == SCREENTEMP) { + /* remove corresponding windows */ + for(wm= main->wm.first; wm; wm=wm->id.next) { + for(win= wm->windows.first; win; win=nextwin) { + nextwin= win->next; + + if(newlibadr(fd, wm->id.lib, win->screen) == screen) + BLI_freelinkN(&wm->windows, win); + } + } + + /* remove screen itself */ free_libblock(&main->screen, screen); + } } } } -- cgit v1.2.3 From 0c859f836ba0df60d19a23568c044f17807d227d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 21 Dec 2009 10:50:32 +0000 Subject: Fix #20432: object.layers did not do correct update, could miss depsgraph rebuild. --- source/blender/makesrna/intern/rna_object.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 4c22316be19..b4e288e776d 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -190,9 +190,11 @@ static void rna_Object_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) base= object_in_scene(ob, scene); if(!base) return; + + SWAP(int, base->lay, ob->lay); - base->lay= ob->lay; rna_Object_layer_update__internal(scene, base, ob); + ob->lay= base->lay; } static void rna_Base_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) @@ -200,9 +202,8 @@ static void rna_Base_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) Base *base= (Base*)ptr->id.data; Object *ob= (Object*)base->object; - ob->lay= base->lay; - rna_Object_layer_update__internal(scene, base, ob); + ob->lay= base->lay; } static int rna_Object_data_editable(PointerRNA *ptr) -- cgit v1.2.3 From 5832f2fb7bd396e45690b1765103d4136694845a Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Mon, 21 Dec 2009 11:19:07 +0000 Subject: =?UTF-8?q?*=20Rest=20length=20parameter=20for=20harmonic=20force?= =?UTF-8?q?=20springs.=20Implementation=20is=20a=20slightly=20modified=20v?= =?UTF-8?q?ersion=20of=20the=20patch=20provided=20by=20Ra=C3=BAl=20Fern?= =?UTF-8?q?=C3=A1ndez=20Hern=C3=A1ndez=20(Farsthary).=20*=20Also=20added?= =?UTF-8?q?=20a=20"multiple=20springs"=20option=20to=20use=20every=20effec?= =?UTF-8?q?tor=20point=20as=20a=20harmonic=20spring=20instead=20of=20just?= =?UTF-8?q?=20one.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- release/scripts/ui/properties_physics_common.py | 3 +++ source/blender/blenkernel/intern/effect.c | 10 ++++++++-- source/blender/makesdna/DNA_object_force.h | 3 ++- source/blender/makesrna/intern/rna_object_force.c | 11 +++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 26411b227a8..24c822f9ca9 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -150,6 +150,7 @@ def basic_force_field_settings_ui(self, context, field): col.prop(field, "flow") elif field.type == 'HARMONIC': col.prop(field, "harmonic_damping", text="Damping") + col.prop(field, "rest_length") elif field.type == 'VORTEX' and field.shape != 'POINT': col.prop(field, "inflow") elif field.type == 'DRAG': @@ -163,6 +164,8 @@ def basic_force_field_settings_ui(self, context, field): col.prop(field, "seed") if field.type == 'TURBULENCE': col.prop(field, "global_coordinates", text="Global") + elif field.type == 'HARMONIC': + col.prop(field, "multiple_springs") split = layout.split() diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 6d63553396d..83f63c9ffb2 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -128,7 +128,6 @@ PartDeflect *object_add_collision_fields(int type) pd->seed = ((unsigned int)(ceil(PIL_check_seconds_timer()))+1) % 128; pd->f_strength = 1.0f; pd->f_damp = 1.0f; - pd->f_size = 1.0f; /* set sensible defaults based on type */ switch(type) { @@ -139,6 +138,9 @@ PartDeflect *object_add_collision_fields(int type) pd->shape = PFIELD_SHAPE_PLANE; pd->f_flow = 1.0f; /* realistic wind behavior */ break; + case PFIELD_TEXTURE: + pd->f_size = 1.0f; + break; } pd->flag = PFIELD_DO_LOCATION|PFIELD_DO_ROTATION; @@ -693,6 +695,10 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin sub_v3_v3v3(efd->vec_to_point, point->loc, efd->loc); efd->distance = len_v3(efd->vec_to_point); + /* rest length for harmonic effector, will have to see later if this could be extended to other effectors */ + if(eff->pd->forcefield == PFIELD_HARMONIC && eff->pd->f_size) + mul_v3_fl(efd->vec_to_point, (efd->distance-eff->pd->f_size)/efd->distance); + if(eff->flag & PE_USE_NORMAL_DATA) { VECCOPY(efd->vec_to_point2, efd->vec_to_point); VECCOPY(efd->nor2, efd->nor); @@ -735,7 +741,7 @@ static void get_effector_tot(EffectorCache *eff, EffectorData *efd, EffectedPoin */ efd->charge = eff->pd->f_strength; } - else if(eff->pd->forcefield == PFIELD_HARMONIC) { + else if(eff->pd->forcefield == PFIELD_HARMONIC && (eff->pd->flag & PFIELD_MULTIPLE_SPRINGS)==0) { /* every particle is mapped to only one harmonic effector particle */ *p= point->index % eff->psys->totpart; *tot= *p + 1; diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h index adccf8893d4..99b8f400a5e 100644 --- a/source/blender/makesdna/DNA_object_force.h +++ b/source/blender/makesdna/DNA_object_force.h @@ -71,7 +71,7 @@ typedef struct PartDeflect { float f_flow; /* How much force is converted into "air flow", i.e. */ /* force used as the velocity of surrounding medium. */ - float f_size; + float f_size; /* Noise size for noise effector, restlength for harmonic effector */ /* fall-off */ float f_power; /* The power law - real gravitation is 2 (square) */ @@ -320,6 +320,7 @@ typedef struct SoftBody { #define PFIELD_TEX_OBJECT 64 #define PFIELD_GLOBAL_CO 64 /* used for turbulence */ #define PFIELD_TEX_2D 128 +#define PFIELD_MULTIPLE_SPRINGS 128 /* used for harmonic force */ #define PFIELD_USEMIN 256 #define PFIELD_USEMAXR 512 #define PFIELD_USEMINR 1024 diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 9a57a24e1a7..67c7a9aa078 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -1109,6 +1109,12 @@ static void rna_def_field(BlenderRNA *brna) RNA_def_property_range(prop, 0.0f, 10.0f); RNA_def_property_ui_text(prop, "Size", "Size of the noise"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); + + prop= RNA_def_property(srna, "rest_length", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "f_size"); + RNA_def_property_range(prop, 0.0f, 1000.0f); + RNA_def_property_ui_text(prop, "Rest Length", "Rest length of the harmonic force"); + RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); prop= RNA_def_property(srna, "falloff_power", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "f_power"); @@ -1221,6 +1227,11 @@ static void rna_def_field(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_VISIBILITY); RNA_def_property_ui_text(prop, "Absorption", "Force gets absorbed by collision objects"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); + + prop= RNA_def_property(srna, "multiple_springs", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_MULTIPLE_SPRINGS); + RNA_def_property_ui_text(prop, "Multiple Springs", "Every point is effected by multiple springs"); + RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); /* Pointer */ -- cgit v1.2.3 From 371571fed6a8d2218be714dac5884d8135935b69 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 11:42:31 +0000 Subject: - camera switching didnt work for openGL render - UV Project (Bounds) wasnt in the menu --- release/scripts/ui/space_view3d.py | 1 + source/blender/editors/screen/screen_edit.c | 14 +------------- source/blender/editors/screen/screen_ops.c | 11 ++++++++++- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 0ea9c947d4b..fa0a6a8c5fa 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -216,6 +216,7 @@ class VIEW3D_MT_uv_map(dynamic_menu.DynMenu): layout.operator("uv.cylinder_project") layout.operator("uv.sphere_project") layout.operator("uv.project_from_view") + layout.operator("uv.project_from_view", text="Project from View (Bounds)").scale_to_bounds = True layout.separator() diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 0c690452d8a..6bf01a69d12 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1686,19 +1686,8 @@ void ED_update_for_newframe(const bContext *C, int mute) while(sl) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; - if (v3d->camera == scene->camera) { + if (v3d->scenelock) { v3d->camera= camera; - /* - 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; - } - } - */ } } sl= sl->next; @@ -1709,7 +1698,6 @@ void ED_update_for_newframe(const bContext *C, int mute) } scene->camera= camera; - } #endif diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 55a977da663..fe1587a965d 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3365,7 +3365,16 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even } 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); -- cgit v1.2.3 From 4d32e002edf9075c168a61b5ea4657c982ff23e2 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 15:37:19 +0000 Subject: [#20441] 3D manipulator widget problem calculateTransformCenter function passing event to transform init when it shouldn't have. --- source/blender/editors/include/ED_transform.h | 2 +- source/blender/editors/space_view3d/view3d_edit.c | 2 +- source/blender/editors/transform/transform.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 065867a3bb3..6388c4552be 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -95,7 +95,7 @@ enum { * returns 1 if successful, 0 otherwise (usually means there's no selection) * (if 0 is returns, *vec is unmodified) * */ -int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec); +int calculateTransformCenter(struct bContext *C, int centerMode, float *vec); struct TransInfo; struct ScrArea; diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 3a4dc102943..43caf85e1bc 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -304,7 +304,7 @@ static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event) if (vod->use_dyn_ofs) { VECCOPY(vod->ofs, rv3d->ofs); /* If there's no selection, lastofs is unmodified and last value since static */ - calculateTransformCenter(C, event, V3D_CENTROID, lastofs); + calculateTransformCenter(C, V3D_CENTROID, lastofs); VECCOPY(vod->dyn_ofs, lastofs); mul_v3_fl(vod->dyn_ofs, -1.0f); } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 36e8032b640..a6b5e677ca2 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1100,7 +1100,7 @@ int transformEvent(TransInfo *t, wmEvent *event) return OPERATOR_PASS_THROUGH; } -int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float *vec) +int calculateTransformCenter(bContext *C, int centerMode, float *vec) { TransInfo *t = MEM_callocN(sizeof(TransInfo), "TransInfo data"); int success = 1; @@ -1111,9 +1111,9 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float t->mode = TFM_DUMMY; - initTransInfo(C, t, NULL, event); // internal data, mouse, vectors + initTransInfo(C, t, NULL, NULL); // internal data, mouse, vectors - createTransData(C, t); // make TransData structs from selection + createTransData(C, t); // make TransData structs from selection t->around = centerMode; // override userdefined mode -- cgit v1.2.3 From 29ea21e6bd6d6813a6b8fd58d7085e9efce9b494 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 21 Dec 2009 15:55:10 +0000 Subject: Multires: added back Reshape function, to copy vertex locations from another mesh. --- release/scripts/ui/properties_data_modifier.py | 1 + source/blender/blenkernel/intern/multires.c | 75 +++++++++++-------------- source/blender/editors/object/object_intern.h | 1 + source/blender/editors/object/object_modifier.c | 45 +++++++++++++++ source/blender/editors/object/object_ops.c | 1 + source/blender/makesrna/intern/rna_modifier.c | 2 +- 6 files changed, 83 insertions(+), 42 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 97237c26191..0de819b0537 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -445,6 +445,7 @@ class DATA_PT_modifiers(DataButtonsPanel): col.enabled = ob.mode != 'EDIT' col.operator("object.multires_subdivide", text="Subdivide") col.operator("object.multires_higher_levels_delete", text="Delete Higher") + col.operator("object.multires_reshape", text="Reshape") col.prop(md, "optimal_display") layout.separator() diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 88c6788b723..f5414567da8 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -63,6 +63,7 @@ static const int multires_max_levels = 13; static const int multires_grid_tot[] = {0, 4, 9, 25, 81, 289, 1089, 4225, 16641, 66049, 263169, 1050625, 4198401, 16785409}; static const int multires_side_tot[] = {0, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097}; +static void multires_mvert_to_ss(DerivedMesh *dm, MVert *mvert); static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int add, DMGridData **oldGridData, int totlvl); MultiresModifierData *find_multires_modifier(Object *ob) @@ -106,6 +107,27 @@ static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lv CLAMP(mmd->renderlvl, 0, mmd->totlvl); } +static void multires_dm_mark_as_modified(DerivedMesh *dm) +{ + CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; + ccgdm->multires.modified = 1; +} + +void multires_mark_as_modified(Object *ob) +{ + if(ob && ob->derivedFinal) + multires_dm_mark_as_modified(ob->derivedFinal); +} + +void multires_force_update(Object *ob) +{ + if(ob && ob->derivedFinal) { + ob->derivedFinal->needsFree =1; + ob->derivedFinal->release(ob->derivedFinal); + ob->derivedFinal = NULL; + } +} + /* XXX */ #if 0 void multiresModifier_join(Object *ob) @@ -168,30 +190,22 @@ void multiresModifier_join(Object *ob) } #endif -/* Returns 0 on success, 1 if the src's totvert doesn't match */ +/* Returns 1 on success, 0 if the src's totvert doesn't match */ int multiresModifier_reshape(MultiresModifierData *mmd, Object *dst, Object *src) { - /* XXX */ -#if 0 - Mesh *src_me = get_mesh(src); + DerivedMesh *srcdm = src->derivedFinal; DerivedMesh *mrdm = dst->derivedFinal; - if(mrdm && mrdm->getNumVerts(mrdm) == src_me->totvert) { - MVert *mvert = CDDM_get_verts(mrdm); - int i; + if(mrdm && srcdm && mrdm->getNumVerts(mrdm) == srcdm->getNumVerts(srcdm)) { + multires_mvert_to_ss(mrdm, srcdm->getVertArray(srcdm)); - for(i = 0; i < src_me->totvert; ++i) - copy_v3_v3(mvert[i].co, src_me->mvert[i].co); - mrdm->needsFree = 1; - MultiresDM_mark_as_modified(mrdm); - mrdm->release(mrdm); - dst->derivedFinal = NULL; + multires_dm_mark_as_modified(mrdm); + multires_force_update(dst); - return 0; + return 1; } -#endif - return 1; + return 0; } static void column_vectors_to_mat3(float mat[][3], float v1[3], float v2[3], float v3[3]) @@ -242,7 +256,7 @@ static void multires_copy_dm_grid(DMGridData *gridA, DMGridData *gridB, int size } /* direction=1 for delete higher, direction=0 for lower (not implemented yet) */ -void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Object *ob, int direction) +void multiresModifier_del_levels(MultiresModifierData *mmd, Object *ob, int direction) { Mesh *me = get_mesh(ob); int lvl = multires_get_level(ob, mmd, 0); @@ -621,27 +635,6 @@ static void multiresModifier_update(DerivedMesh *dm) } } -static void multires_dm_mark_as_modified(struct DerivedMesh *dm) -{ - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; - ccgdm->multires.modified = 1; -} - -void multires_mark_as_modified(struct Object *ob) -{ - if(ob && ob->derivedFinal) - multires_dm_mark_as_modified(ob->derivedFinal); -} - -void multires_force_update(Object *ob) -{ - if(ob && ob->derivedFinal) { - ob->derivedFinal->needsFree =1; - ob->derivedFinal->release(ob->derivedFinal); - ob->derivedFinal = NULL; - } -} - void multires_stitch_grids(Object *ob) { /* utility for smooth brush */ @@ -661,7 +654,7 @@ void multires_stitch_grids(Object *ob) } } -struct DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob, +DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd, int local_mmd, DerivedMesh *dm, Object *ob, int useRenderParams, int isFinalCalc) { Mesh *me= ob->data; @@ -973,7 +966,7 @@ static void multires_load_old_faces(ListBase **fmap, ListBase **emap, MultiresLe } } -static void multires_old_mvert_to_ss(DerivedMesh *dm, MVert *mvert) +static void multires_mvert_to_ss(DerivedMesh *dm, MVert *mvert) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; CCGSubSurf *ss = ccgdm->ss; @@ -1197,7 +1190,7 @@ static void multires_load_old_dm(DerivedMesh *dm, Mesh *me, int totlvl) MEM_freeN(vvmap); - multires_old_mvert_to_ss(dm, vdst); + multires_mvert_to_ss(dm, vdst); } diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 848855da1b0..562216e5890 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -142,6 +142,7 @@ void OBJECT_OT_modifier_apply(struct wmOperatorType *ot); void OBJECT_OT_modifier_convert(struct wmOperatorType *ot); 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); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 06c31e9f1a9..552de1f8f60 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -814,6 +814,51 @@ void OBJECT_OT_multires_subdivide(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/****************** 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; + + CTX_DATA_BEGIN(C, Object*, selob, selected_editable_objects) { + if(selob->type == OB_MESH && selob != ob) { + secondob= selob; + break; + } + } + CTX_DATA_END; + + if(!secondob) { + BKE_report(op->reports, RPT_ERROR, "Second selected mesh object require to copy shape from."); + return OPERATOR_CANCELLED; + } + + if(!multiresModifier_reshape(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; +} + +void OBJECT_OT_multires_reshape(wmOperatorType *ot) +{ + ot->name= "Multires Reshape"; + ot->description= "Copy vertex coordinates from other object."; + ot->idname= "OBJECT_OT_multires_reshape"; + + ot->poll= multires_poll; + ot->exec= multires_reshape_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /****************** multires save external operator *********************/ static int multires_save_external_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index dbd03561c20..bd43e9c24c4 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -135,6 +135,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_modifier_convert); WM_operatortype_append(OBJECT_OT_modifier_copy); 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); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index c6aef8df407..fe8d6d6a367 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -55,9 +55,9 @@ EnumPropertyItem modifier_type_items[] ={ {eModifierType_Mask, "MASK", ICON_MOD_MASK, "Mask", ""}, {eModifierType_Mirror, "MIRROR", ICON_MOD_MIRROR, "Mirror", ""}, {eModifierType_Multires, "MULTIRES", ICON_MOD_MULTIRES, "Multiresolution", ""}, + {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_DISPLACE, "Solidify", ""}, {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, - {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_DISPLACE, "Solidify", ""}, {0, "", 0, "Deform", ""}, {eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""}, {eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""}, -- cgit v1.2.3 From 76ce02ddc04e04f7931655b77383b9aeb2bc94d1 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 16:19:08 +0000 Subject: removing unwanted svn:executable properties --- tools/bcolors.py | 0 tools/btools.py | 0 tools/crossmingw.py | 0 tools/mstoolkit.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tools/bcolors.py mode change 100755 => 100644 tools/btools.py mode change 100755 => 100644 tools/crossmingw.py mode change 100755 => 100644 tools/mstoolkit.py diff --git a/tools/bcolors.py b/tools/bcolors.py old mode 100755 new mode 100644 diff --git a/tools/btools.py b/tools/btools.py old mode 100755 new mode 100644 diff --git a/tools/crossmingw.py b/tools/crossmingw.py old mode 100755 new mode 100644 diff --git a/tools/mstoolkit.py b/tools/mstoolkit.py old mode 100755 new mode 100644 -- cgit v1.2.3 From 1f8cd19d4bc76b294841f3495132ecbdf9964228 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 16:57:39 +0000 Subject: removing sequence strip overlap didnt adjust the animation key time single images were not having their animation data transformed correctly made sequence strip opacity 0-1 rather then 0-100 in RNA --- source/blender/blenkernel/BKE_sequencer.h | 4 ++-- source/blender/blenkernel/intern/sequencer.c | 14 ++++++++------ source/blender/editors/space_sequencer/sequencer_add.c | 2 +- source/blender/editors/space_sequencer/sequencer_edit.c | 12 ++++++------ .../blender/editors/transform/transform_conversions.c | 14 ++++++-------- source/blender/makesrna/intern/rna_sequencer.c | 17 +++++++++++++---- 6 files changed, 36 insertions(+), 27 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index c078b92af2d..070d98ce25f 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -188,8 +188,8 @@ void seq_single_fix(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); -int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test); -int shuffle_seq_time(ListBase * seqbasep); +int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene *evil_scene); +int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 84458b0e921..aa81cea79f5 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3442,13 +3442,15 @@ int seq_test_overlap(ListBase * seqbasep, Sequence *test) } -static void seq_translate(Sequence *seq, int delta) +static void seq_translate(Scene *evil_scene, Sequence *seq, int delta) { + seq_offset_animdata(evil_scene, seq, delta); seq->start += delta; + if(seq->type==SEQ_META) { Sequence *seq_child; for(seq_child= seq->seqbase.first; seq_child; seq_child= seq_child->next) { - seq_translate(seq_child, delta); + seq_translate(evil_scene, seq_child, delta); } } @@ -3456,7 +3458,7 @@ static void seq_translate(Sequence *seq, int delta) } /* return 0 if there werent enough space */ -int shuffle_seq(ListBase * seqbasep, Sequence *test) +int shuffle_seq(ListBase * seqbasep, Sequence *test, Scene *evil_scene) { int orig_machine= test->machine; test->machine++; @@ -3484,7 +3486,7 @@ int shuffle_seq(ListBase * seqbasep, Sequence *test) test->machine= orig_machine; new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */ - seq_translate(test, new_frame - test->start); + seq_translate(evil_scene, test, new_frame - test->start); calc_sequence(test); return 0; @@ -3540,7 +3542,7 @@ static int shuffle_seq_time_offset(ListBase * seqbasep, char dir) return tot_ofs; } -int shuffle_seq_time(ListBase * seqbasep) +int shuffle_seq_time(ListBase * seqbasep, Scene *evil_scene) { /* note: seq->tmp is used to tag strips to move */ @@ -3553,7 +3555,7 @@ int shuffle_seq_time(ListBase * seqbasep) if(offset) { for(seq= seqbasep->first; seq; seq= seq->next) { if(seq->tmp) { - seq_translate(seq, offset); + seq_translate(evil_scene, seq, offset); seq->flag &= ~SEQ_OVERLAP; } } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 48c364b6c6b..354b4712ce4 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -548,7 +548,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) RNA_float_get_array(op->ptr, "color", colvars->col); } - if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq); + if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene); update_changed_seq_and_deps(scene, seq, 1, 1); /* runs calc_sequence */ diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 6704cf0ef62..bfb7d139074 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -195,7 +195,7 @@ static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect last_seq->seq2->machine, last_seq->seq3->machine); - if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq); + if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq, scene); } @@ -1395,7 +1395,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op) if(seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK)) { seq->flag &= ~SEQ_OVERLAP; if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); + shuffle_seq(ed->seqbasep, seq, scene); } } else if(seq->type & SEQ_EFFECT) { @@ -1975,7 +1975,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) calc_sequence(seq_new); seq_new->flag &= ~SEQ_OVERLAP; if (seq_test_overlap(ed->seqbasep, seq_new)) { - shuffle_seq(ed->seqbasep, seq_new); + shuffle_seq(ed->seqbasep, seq_new, scene); } seqUniqueName(scene->ed->seqbasep, seq_new); @@ -2138,7 +2138,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) active_seq_set(scene, seqm); - if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm); + if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm, scene); seq_update_muting(ed); @@ -2207,7 +2207,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op) if(seq->flag & SELECT) { seq->flag &= ~SEQ_OVERLAP; if( seq_test_overlap(ed->seqbasep, seq) ) { - shuffle_seq(ed->seqbasep, seq); + shuffle_seq(ed->seqbasep, seq, scene); } } } @@ -2632,7 +2632,7 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) { /* this may now overlap */ if( seq_test_overlap(ed->seqbasep, iseq) ) { - shuffle_seq(ed->seqbasep, iseq); + shuffle_seq(ed->seqbasep, iseq, scene); } } } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 98c1b333844..d5b9a85e347 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2365,23 +2365,21 @@ void flushTransSeq(TransInfo *t) /* flush to 2d vector from internally used 3d vector */ for(a=0, td= t->data, td2d= t->data2d; atotal; a++, td++, td2d++) { - tdsq= (TransDataSeq *)td->extra; seq= tdsq->seq; new_frame= (int)floor(td2d->loc[0] + 0.5f); switch (tdsq->sel_flag) { case SELECT: - if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */ - seq->start= new_frame - tdsq->start_offset; - #ifdef XXX_DURIAN_ANIM_TX_HACK - if (seq->type != SEQ_META && seq != seq_prev) { - int ofs = (new_frame - tdsq->start_offset) - seq->start; + if (seq != seq_prev) { + int ofs = (new_frame - tdsq->start_offset) - seq->start; // breaks for single strips - color/image seq_offset_animdata(t->scene, seq, ofs); } #endif - + if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */ + seq->start= new_frame - tdsq->start_offset; + if (seq->depth==0) { seq->machine= (int)floor(td2d->loc[1] + 0.5f); CLAMP(seq->machine, 1, MAXSEQ); @@ -4130,7 +4128,7 @@ static void freeSeqData(TransInfo *t) } } - shuffle_seq_time(seqbasep); + shuffle_seq_time(seqbasep, t->scene); } } #endif diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 767da5dc042..f875e6a7fa2 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -96,7 +96,7 @@ static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq) calc_sequence_disp(seq); if(seq_test_overlap(seqbase, seq)) { - shuffle_seq(seqbase, seq); + shuffle_seq(seqbase, seq, scene); // XXX - BROKEN!, uses context seqbasep } sort_seq(scene); } @@ -155,7 +155,7 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value) seq->machine= value; if( seq_test_overlap(seqbase, seq) ) { - shuffle_seq(seqbase, seq); + shuffle_seq(seqbase, seq, scene); // XXX - BROKEN!, uses context seqbasep } sort_seq(scene); } @@ -362,6 +362,14 @@ static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr) rna_Sequence_update(bmain, scene, ptr); } +/* do_versions? */ +static float rna_Sequence_opacity_get(PointerRNA *ptr) { + return ((Sequence*)(ptr->data))->blend_opacity / 100.0f; +} +static void rna_Sequence_opacity_set(PointerRNA *ptr, float value) { + ((Sequence*)(ptr->data))->blend_opacity = value * 100.0f; +} + #else static void rna_def_strip_element(BlenderRNA *brna) @@ -660,9 +668,10 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Blend Mode", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE); - RNA_def_property_range(prop, 0.0f, 100.0f); + prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Blend Opacity", ""); + RNA_def_property_float_funcs(prop, "rna_Sequence_opacity_get", "rna_Sequence_opacity_set", NULL); // stupid 0-100 -> 0-1 RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE); -- cgit v1.2.3 From 90e9aee9b8cd7349fd4458c3f7d0141073958dc4 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 17:23:44 +0000 Subject: Sequence Slide transformation (easier to do special sequence code there than in a generic transform) Also make the transform operator creation a bit more automagic (I always forget either operator registration or modal keymap registration, this is all automatic now). --- source/blender/editors/transform/transform.c | 156 +++++++++++++---------- source/blender/editors/transform/transform.h | 7 +- source/blender/editors/transform/transform_ops.c | 140 +++++++++++++------- 3 files changed, 189 insertions(+), 114 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index a6b5e677ca2..40db0f7b272 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -450,55 +450,6 @@ static void view_editmove(unsigned short event) #endif } -#if 0 -static char *transform_to_undostr(TransInfo *t) -{ - switch (t->mode) { - case TFM_TRANSLATION: - return "Translate"; - case TFM_ROTATION: - return "Rotate"; - case TFM_RESIZE: - return "Scale"; - case TFM_TOSPHERE: - return "To Sphere"; - case TFM_SHEAR: - return "Shear"; - case TFM_WARP: - return "Warp"; - case TFM_SHRINKFATTEN: - return "Shrink/Fatten"; - case TFM_TILT: - return "Tilt"; - case TFM_TRACKBALL: - return "Trackball"; - case TFM_PUSHPULL: - return "Push/Pull"; - case TFM_BEVEL: - return "Bevel"; - case TFM_BWEIGHT: - return "Bevel Weight"; - case TFM_CREASE: - return "Crease"; - case TFM_BONESIZE: - return "Bone Width"; - case TFM_BONE_ENVELOPE: - return "Bone Envelope"; - case TFM_TIME_TRANSLATE: - return "Translate Anim. Data"; - case TFM_TIME_SCALE: - return "Scale Anim. Data"; - case TFM_TIME_SLIDE: - return "Time Slide"; - case TFM_BAKE_TIME: - return "Key Time"; - case TFM_MIRROR: - return "Mirror"; - } - return "Transform"; -} -#endif - /* ************************************************* */ /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */ @@ -521,7 +472,7 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_REMOVE_SNAP 17 /* called in transform_ops.c, on each regeneration of keymaps */ -void transform_modal_keymap(wmKeyConfig *keyconf) +wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { {TFM_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, @@ -546,7 +497,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); /* this function is called for each spacetype, only needs to add map once */ - if(keymap) return; + if(keymap) return NULL; keymap= WM_modalkeymap_add(keyconf, "Transform Modal Map", modal_items); @@ -568,19 +519,7 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); - /* assign map to operators */ - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_transform"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_translate"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_rotate"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_tosphere"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_resize"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_shear"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_warp"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_shrink_fatten"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_tilt"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_trackball"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_mirror"); - WM_modalkeymap_assign(keymap, "TRANSFORM_OT_edge_slide"); + return keymap; } @@ -1620,6 +1559,9 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int case TFM_ALIGN: initAlign(t); break; + case TFM_SEQ_SLIDE: + initSeqSlide(t); + break; } /* overwrite initial values if operator supplied a non-null vector */ @@ -3290,11 +3232,11 @@ static void applyTranslation(TransInfo *t, float vec[3]) { /* uses t->vec to store actual translation in */ int Translation(TransInfo *t, short mval[2]) { - float tvec[3]; char str[250]; if (t->con.mode & CON_APPLY) { float pvec[3] = {0.0f, 0.0f, 0.0f}; + float tvec[3]; applySnapping(t, t->values); t->con.applyVec(t, NULL, t->values, tvec, pvec); VECCOPY(t->values, tvec); @@ -5018,6 +4960,90 @@ int Align(TransInfo *t, short mval[2]) return 1; } +/* ************************** SEQ SLIDE *************************** */ + +void initSeqSlide(TransInfo *t) +{ + t->transform = SeqSlide; + + initMouseInputMode(t, &t->mouse, INPUT_VECTOR); + + t->idx_max = 1; + t->num.flag = 0; + t->num.idx_max = t->idx_max; + + t->ndof.axis = 1|2; + + t->snap[0] = 0.0f; + t->snap[1] = floor(t->scene->r.frs_sec / t->scene->r.frs_sec_base); + t->snap[2] = 10.0f; +} + +static void headerSeqSlide(TransInfo *t, float val[2], char *str) +{ + char tvec[60]; + + if (hasNumInput(&t->num)) { + outputNumInput(&(t->num), tvec); + } + else { + sprintf(&tvec[0], "%.0f, %.0f", val[0], val[1]); + } + + sprintf(str, "Sequence Slide: %s%s", &tvec[0], t->con.text); +} + +static void applySeqSlide(TransInfo *t, float val[2]) { + TransData *td = t->data; + int i; + + for(i = 0 ; i < t->total; i++, td++) { + float tvec[2]; + + if (td->flag & TD_NOACTION) + break; + + if (td->flag & TD_SKIP) + continue; + + copy_v2_v2(tvec, val); + + mul_v2_fl(tvec, td->factor); + + td->loc[0] = td->iloc[0] + tvec[0]; + td->loc[1] = td->iloc[1] + tvec[1]; + } +} + +int SeqSlide(TransInfo *t, short mval[2]) +{ + char str[200]; + + if (t->con.mode & CON_APPLY) { + float pvec[3] = {0.0f, 0.0f, 0.0f}; + float tvec[3]; + t->con.applyVec(t, NULL, t->values, tvec, pvec); + VECCOPY(t->values, tvec); + } + else { + applyNDofInput(&t->ndof, t->values); + snapGrid(t, t->values); + applyNumInput(&t->num, t->values); + } + + t->values[0] = floor(t->values[0] + 0.5); + t->values[1] = floor(t->values[1] + 0.5); + + headerSeqSlide(t, t->values, str); + applySeqSlide(t, t->values); + + recalcData(t); + + ED_area_headerprint(t->sa, str); + + return 1; +} + /* ************************** ANIM EDITORS - TRANSFORM TOOLS *************************** */ /* ---------------- Special Helpers for Various Settings ------------- */ diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index b7e1b2e4996..72d970c967a 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -53,6 +53,8 @@ struct BezTriple; struct wmOperatorType; struct wmOperator; struct wmWindowManager; +struct wmKeyMap; +struct wmKeyConfig; struct bContext; struct wmEvent; struct wmTimer; @@ -522,9 +524,12 @@ int Mirror(TransInfo *t, short mval[2]); void initAlign(TransInfo *t); int Align(TransInfo *t, short mval[2]); +void initSeqSlide(TransInfo *t); +int SeqSlide(TransInfo *t, short mval[2]); + void drawPropCircle(const struct bContext *C, TransInfo *t); -void transform_modal_keymap(struct wmKeyConfig *keyconf); +struct wmKeyMap *transform_modal_keymap(struct wmKeyConfig *keyconf); /*********************** transform_conversions.c ********** */ diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index f9dcd6f87f4..63218369a90 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -51,6 +51,7 @@ typedef struct TransformModeItem { char *idname; int mode; + void (*opfunc)(wmOperatorType*); } TransformModeItem; static float VecOne[3] = {1, 1, 1}; @@ -66,21 +67,35 @@ char OP_TILT[] = "TRANSFORM_OT_tilt"; char OP_TRACKBALL[] = "TRANSFORM_OT_trackball"; char OP_MIRROR[] = "TRANSFORM_OT_mirror"; char OP_EDGE_SLIDE[] = "TRANSFORM_OT_edge_slide"; - +char OP_SEQ_SLIDE[] = "TRANSFORM_OT_seq_slide"; + +void TRANSFORM_OT_translate(struct wmOperatorType *ot); +void TRANSFORM_OT_rotate(struct wmOperatorType *ot); +void TRANSFORM_OT_tosphere(struct wmOperatorType *ot); +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_tilt(struct wmOperatorType *ot); +void TRANSFORM_OT_trackball(struct wmOperatorType *ot); +void TRANSFORM_OT_mirror(struct wmOperatorType *ot); +void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot); +void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot); TransformModeItem transform_modes[] = { - {OP_TRANSLATION, TFM_TRANSLATION}, - {OP_ROTATION, TFM_ROTATION}, - {OP_TOSPHERE, TFM_TOSPHERE}, - {OP_RESIZE, TFM_RESIZE}, - {OP_SHEAR, TFM_SHEAR}, - {OP_WARP, TFM_WARP}, - {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN}, - {OP_TILT, TFM_TILT}, - {OP_TRACKBALL, TFM_TRACKBALL}, - {OP_MIRROR, TFM_MIRROR}, - {OP_EDGE_SLIDE, TFM_EDGE_SLIDE}, + {OP_TRANSLATION, TFM_TRANSLATION, TRANSFORM_OT_translate}, + {OP_ROTATION, TFM_ROTATION, TRANSFORM_OT_rotate}, + {OP_TOSPHERE, TFM_TOSPHERE, TRANSFORM_OT_tosphere}, + {OP_RESIZE, TFM_RESIZE, TRANSFORM_OT_resize}, + {OP_SHEAR, TFM_SHEAR, TRANSFORM_OT_shear}, + {OP_WARP, TFM_WARP, TRANSFORM_OT_warp}, + {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN, TRANSFORM_OT_shrink_fatten}, + {OP_TILT, TFM_TILT, TRANSFORM_OT_tilt}, + {OP_TRACKBALL, TFM_TRACKBALL, TRANSFORM_OT_trackball}, + {OP_MIRROR, TFM_MIRROR, TRANSFORM_OT_mirror}, + {OP_EDGE_SLIDE, TFM_EDGE_SLIDE, TRANSFORM_OT_edge_slide}, + {OP_SEQ_SLIDE, TFM_SEQ_SLIDE, TRANSFORM_OT_seq_slide}, {NULL, 0} }; @@ -671,6 +686,26 @@ void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } +void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Sequence Slide"; + ot->description= "Slide a sequence strip in time."; + ot->idname = OP_SEQ_SLIDE; + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; + + /* api callbacks */ + ot->invoke = transform_invoke; + ot->exec = transform_exec; + ot->modal = transform_modal; + ot->cancel = transform_cancel; + ot->poll = ED_operator_sequencer_active; + + RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX); + + Properties_Snapping(ot, 0, 0); +} + void TRANSFORM_OT_transform(struct wmOperatorType *ot) { static EnumPropertyItem transform_mode_types[] = { @@ -701,6 +736,7 @@ void TRANSFORM_OT_transform(struct wmOperatorType *ot) {TFM_BWEIGHT, "BWEIGHT", 0, "Bweight", ""}, {TFM_ALIGN, "ALIGN", 0, "Align", ""}, {TFM_EDGE_SLIDE, "EDGESLIDE", 0, "Edge Slide", ""}, + {TFM_SEQ_SLIDE, "SEQSLIDE", 0, "Sequence Slide", ""}, {0, NULL, 0, NULL, NULL} }; @@ -729,18 +765,14 @@ void TRANSFORM_OT_transform(struct wmOperatorType *ot) void transform_operatortypes(void) { + TransformModeItem *tmode; + + for (tmode = transform_modes; tmode->idname; tmode++) + { + WM_operatortype_append(tmode->opfunc); + } + WM_operatortype_append(TRANSFORM_OT_transform); - WM_operatortype_append(TRANSFORM_OT_translate); - WM_operatortype_append(TRANSFORM_OT_rotate); - WM_operatortype_append(TRANSFORM_OT_tosphere); - WM_operatortype_append(TRANSFORM_OT_resize); - WM_operatortype_append(TRANSFORM_OT_shear); - WM_operatortype_append(TRANSFORM_OT_warp); - WM_operatortype_append(TRANSFORM_OT_shrink_fatten); - WM_operatortype_append(TRANSFORM_OT_tilt); - WM_operatortype_append(TRANSFORM_OT_trackball); - WM_operatortype_append(TRANSFORM_OT_mirror); - WM_operatortype_append(TRANSFORM_OT_edge_slide); WM_operatortype_append(TRANSFORM_OT_select_orientation); WM_operatortype_append(TRANSFORM_OT_create_orientation); @@ -749,36 +781,48 @@ void transform_operatortypes(void) WM_operatortype_append(TRANSFORM_OT_snap_type); } -void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid) +void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spaceid) { wmKeyMapItem *km; + wmKeyMap *modalmap; /* transform.c, only adds modal map once, checks if it's there */ - transform_modal_keymap(keyconf); + modalmap = transform_modal_keymap(keyconf); + + /* assign map to operators only the first time */ + if (modalmap) { + TransformModeItem *tmode; + + for (tmode = transform_modes; tmode->idname; tmode++) + { + WM_modalkeymap_assign(modalmap, tmode->idname); + } + WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); + } switch(spaceid) { case SPACE_VIEW3D: - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, OP_WARP, WKEY, KM_PRESS, KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_tosphere", SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, OP_TOSPHERE, SKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0); + km = WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_select_orientation", SPACEKEY, KM_PRESS, KM_ALT, 0); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); RNA_boolean_set(km->ptr, "use", 1); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); + 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", "scene.tool_settings.snap"); @@ -803,17 +847,17 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke RNA_int_set(km->ptr, "mode", TFM_TIME_SLIDE); break; case SPACE_IPO: - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 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, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); break; case SPACE_NLA: km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); @@ -829,31 +873,31 @@ void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *ke RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE); break; case SPACE_NODE: - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_A, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); break; case SPACE_SEQ: - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); + km= WM_keymap_add_item(keymap, OP_SEQ_SLIDE, GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, OP_SEQ_SLIDE, EVT_TWEAK_S, KM_ANY, 0, 0); km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); break; case SPACE_IMAGE: - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - km= WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); + km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - km = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); + km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); -- cgit v1.2.3 From fc1ede345d7796249c79f030ef09d6457cd6fcb0 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 18:14:39 +0000 Subject: netrender: visibility toggle for full list of fluid and cache files in the job web page --- release/scripts/io/netrender/master_html.py | 25 +++++++++++++++---- release/scripts/io/netrender/netrender.css | 17 +++++++++++-- release/scripts/io/netrender/netrender.js | 37 +++++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 8 deletions(-) diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index d4458ff4669..99d74b64019 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -51,8 +51,19 @@ def get(handler): output("") - def rowTable(*data): - output("") + def rowTable(*data, id = None, class_style = None, extra = None): + output("") for c in data: output("" + str(c) + "") @@ -172,10 +183,16 @@ def get(handler): rowTable(file.filepath) if tot_cache > 0: - rowTable("%i physic cache files" % tot_cache) + rowTable("%i physic cache files" % tot_cache, class_style = "toggle", extra = "onclick='toggleDisplay(".cache", "none", "table-row")'") + for file in job.files: + if file.filepath.endswith(".bphys"): + rowTable(os.path.split(file.filepath)[1], class_style = "cache") if tot_fluid > 0: - rowTable("%i fluid bake files" % tot_fluid) + rowTable("%i fluid bake files" % tot_fluid, class_style = "toggle", extra = "onclick='toggleDisplay(".fluid", "none", "table-row")'") + for file in job.files: + if file.filepath.endswith(".bobj.gz") or file.filepath.endswith(".bvel.gz"): + rowTable(os.path.split(file.filepath)[1], class_style = "fluid") endTable() diff --git a/release/scripts/io/netrender/netrender.css b/release/scripts/io/netrender/netrender.css index ac47b36861a..20a64ff984a 100644 --- a/release/scripts/io/netrender/netrender.css +++ b/release/scripts/io/netrender/netrender.css @@ -13,7 +13,7 @@ a:hover { } h2 { background-color:#ddd; - font-size:120% + font-size:120%; padding:5px; } @@ -34,7 +34,7 @@ td { padding:2px; padding-left:10px; padding-right:10px; - margin-left:20px + margin-left:20px; background-color:#ddd; } td:hover { @@ -49,3 +49,16 @@ button { height: auto; } +.toggle { + text-decoration: underline; + cursor: pointer; +} + + +.cache { + display: none; +} + +.fluid { + display: none; +} diff --git a/release/scripts/io/netrender/netrender.js b/release/scripts/io/netrender/netrender.js index 50d7042cf74..23f9f25c763 100644 --- a/release/scripts/io/netrender/netrender.js +++ b/release/scripts/io/netrender/netrender.js @@ -1,10 +1,43 @@ -function request(url, data) { +function request(url, data) +{ xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", url, false); xmlhttp.send(data); window.location.reload() } -function edit(id, info) { +function edit(id, info) +{ request("/edit_" + id, info) +} + +function returnObjById( id ) +{ + if (document.getElementById) + var returnVar = document.getElementById(id); + else if (document.all) + var returnVar = document.all[id]; + else if (document.layers) + var returnVar = document.layers[id]; + return returnVar; +} + +function toggleDisplay( className, value1, value2 ) +{ + style = getStyle(className) + + if (style.style["display"] == value1) { + style.style["display"] = value2; + } else { + style.style["display"] = value1; + } +} + +function getStyle(className) { + var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules + for(var x=0;x Date: Mon, 21 Dec 2009 18:56:00 +0000 Subject: Missing file in previous commit. --- source/blender/editors/include/ED_transform.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 6388c4552be..8750010bed5 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -77,7 +77,8 @@ enum { TFM_BEVEL, TFM_BWEIGHT, TFM_ALIGN, - TFM_EDGE_SLIDE + TFM_EDGE_SLIDE, + TFM_SEQ_SLIDE } TfmMode; /* TRANSFORM CONTEXTS */ -- cgit v1.2.3 From 8f3a529585186a8b0a3315d037ac374351c63221 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 21 Dec 2009 19:56:53 +0000 Subject: netrender: display dispatching rules under master header. (read only for now) --- release/scripts/io/netrender/balancing.py | 27 +++++++++++++++++++++++++++ release/scripts/io/netrender/master_html.py | 29 ++++++++++++++++++++++++++--- release/scripts/io/netrender/netrender.css | 11 +++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/release/scripts/io/netrender/balancing.py b/release/scripts/io/netrender/balancing.py index 410279f6957..d8951b1e2e8 100644 --- a/release/scripts/io/netrender/balancing.py +++ b/release/scripts/io/netrender/balancing.py @@ -81,11 +81,17 @@ class Balancer: # ========================== class RatingUsage(RatingRule): + def __str__(self): + return "Usage rating" + def rate(self, job): # less usage is better return job.usage / job.priority class RatingUsageByCategory(RatingRule): + def __str__(self): + return "Usage per category rating" + def __init__(self, get_jobs): self.getJobs = get_jobs def rate(self, job): @@ -96,6 +102,12 @@ class RatingUsageByCategory(RatingRule): return total_category_usage / maximum_priority class NewJobPriority(PriorityRule): + def str_limit(self): + return "less than %i frame%s done" % (self.limit, "s" if self.limit > 1 else "") + + def __str__(self): + return "Priority to new jobs" + def __init__(self, limit = 1): self.limit = limit @@ -103,6 +115,12 @@ class NewJobPriority(PriorityRule): return job.countFrames(status = DONE) < self.limit class MinimumTimeBetweenDispatchPriority(PriorityRule): + def str_limit(self): + return "more than %i minute%s since last" % (self.limit, "s" if self.limit > 1 else "") + + def __str__(self): + return "Priority to jobs that haven't been dispatched recently" + def __init__(self, limit = 10): self.limit = limit @@ -110,10 +128,19 @@ class MinimumTimeBetweenDispatchPriority(PriorityRule): return job.countFrames(status = DISPATCHED) == 0 and (time.time() - job.last_dispatched) / 60 > self.limit class ExcludeQueuedEmptyJob(ExclusionRule): + def __str__(self): + return "Exclude queued and empty jobs" + def test(self, job): return job.status != JOB_QUEUED or job.countFrames(status = QUEUED) == 0 class ExcludeSlavesLimit(ExclusionRule): + def str_limit(self): + return "more than %.0f%% of all slaves" % (self.limit * 100) + + def __str__(self): + return "Exclude jobs that would use too many slaves" + def __init__(self, count_jobs, count_slaves, limit = 0.75): self.count_jobs = count_jobs self.count_slaves = count_slaves diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 99d74b64019..1f530efa7c6 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -40,8 +40,16 @@ def get(handler): def link(text, url): return "%s" % (url, text) - def startTable(border=1): - output("" % border) + def startTable(border=1, class_style = None, caption = None): + output("
") + + if caption: + output("" % caption) def headerTable(*headers): output("") @@ -93,8 +101,23 @@ def get(handler): output("

Master

") - output("""""") + output("""""") + + startTable(caption = "Rules", class_style = "rules") + + headerTable("type", "description", "limit") + + for rule in handler.server.balancer.rules: + rowTable("rating", rule, rule.str_limit() if hasattr(rule, "limit") else " ") + + for rule in handler.server.balancer.priorities: + rowTable("priority", rule, rule.str_limit() if hasattr(rule, "limit") else " ") + for rule in handler.server.balancer.exceptions: + rowTable("exception", rule, rule.str_limit() if hasattr(rule, "limit") else " ") + + endTable() + output("

Slaves

") startTable() diff --git a/release/scripts/io/netrender/netrender.css b/release/scripts/io/netrender/netrender.css index 20a64ff984a..87de1083315 100644 --- a/release/scripts/io/netrender/netrender.css +++ b/release/scripts/io/netrender/netrender.css @@ -17,6 +17,12 @@ h2 { padding:5px; } +h2 { + background-color:#ddd; + font-size:110%; + padding:5px; +} + table { text-align:center; border:0; @@ -62,3 +68,8 @@ button { .fluid { display: none; } + +.rules { + width: 60em; + text-align: left; +} \ No newline at end of file -- cgit v1.2.3 From 5bdcb2dff27e5c52c33728d09152178120009e0c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Dec 2009 23:14:16 +0000 Subject: py error fix and minor changes to rna info class --- release/scripts/modules/rna_info.py | 31 ++++++++++++++++++++++++------- release/scripts/op/object.py | 4 ++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 8e1d16a46cd..1de750a4ff2 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -20,6 +20,13 @@ import bpy +def range_str(val): + if val < -10000000: return '-inf' + if val > 10000000: return 'inf' + if type(val)==float: + return '%g' % val + else: + return str(val) class InfoStructRNA: global_lookup = {} @@ -43,7 +50,7 @@ class InfoStructRNA: def build(self): rna_type = self.bl_rna parent_id = self.identifier - self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_prop in rna_type.properties.values()] + self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_id, rna_prop in rna_type.properties.items() if rna_id != "rna_type"] self.functions[:] = [GetInfoFunctionRNA(rna_prop, parent_id) for rna_prop in rna_type.functions.values()] def getNestedProperties(self, ls = None): @@ -84,12 +91,20 @@ class InfoPropertyRNA: rna_prop = self.bl_prop self.enum_items = [] - self.min = -1 - self.max = -1 + self.min = getattr(rna_prop, "hard_min", -1) + self.max = getattr(rna_prop, "hard_max", -1) self.array_length = getattr(rna_prop, "array_length", 0) self.type = rna_prop.type.lower() - self.fixed_type = GetInfoStructRNA(rna_prop.fixed_type) # valid for pointer/collections + fixed_type = getattr(rna_prop, "fixed_type", "") + if fixed_type: + self.fixed_type = GetInfoStructRNA(fixed_type) # valid for pointer/collections + else: + self.fixed_type = None + + if self.type == "enum": + self.enum_items[:] = rna_prop.items.keys() + self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections def __repr__(self): @@ -347,9 +362,11 @@ def BuildRNAInfo(): for rna_info in InfoStructRNA.global_lookup.values(): rna_info.build() - - for rna_info in InfoStructRNA.global_lookup.values(): - print(rna_info) + for prop in rna_info.properties: + prop.build() + + #for rna_info in InfoStructRNA.global_lookup.values(): + # print(rna_info) return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoPropertyRNA.global_lookup diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 6a7b735e04b..2ecd7b31b34 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -87,8 +87,8 @@ class SubdivisionSet(bpy.types.Operator): default=1, min=0, max=100, soft_min=0, soft_max=6) def poll(self, context): - ob = context.active_object - return (ob and ob.type == 'MESH') + obs = context.selected_editable_objects + return (obs is not None) def execute(self, context): level = self.properties.level -- cgit v1.2.3 From 9c22e846feba9b51ad2163a36906b0e503326476 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 22 Dec 2009 07:27:53 +0000 Subject: [#20446] mathutils: bugfix for matrix * matrix - patch by Paul Parchenko (parfoure) thanks From the tracker: - typo was making the multiplication to transpose resulting matrix eg #### from Mathutils import * from math import radians cont = GameLogic.getCurrentController() owner = cont.owner owner.worldOrientation = RotationMatrix(radians(1), 3, 'z') * owner.worldOrientation #### --- source/blender/python/generic/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/python/generic/matrix.c b/source/blender/python/generic/matrix.c index a1ef4b53615..1fc5018c854 100644 --- a/source/blender/python/generic/matrix.c +++ b/source/blender/python/generic/matrix.c @@ -944,7 +944,7 @@ static PyObject *Matrix_mul(PyObject * m1, PyObject * m2) for(z = 0; z < mat1->rowSize; z++) { dot += (mat1->matrix[z][y] * mat2->matrix[x][z]); } - mat[((x * mat1->colSize) + y)] = (float)dot; + mat[((y * mat1->rowSize) + x)] = (float)dot; dot = 0.0f; } } -- cgit v1.2.3 From f4ce1bea0f015e0ec7a1cec696cf93cd9f1ff478 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 22 Dec 2009 08:05:19 +0000 Subject: increasing camera lens limit to 172.85 (same as 2.49xx) It's not range_ui, but range itself. if someone think that for some reason it's better to keep the visible range up to 100 (the current one) it could be as well. --- source/blender/makesrna/intern/rna_camera.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c index 1715df1809a..e8538522d84 100644 --- a/source/blender/makesrna/intern/rna_camera.c +++ b/source/blender/makesrna/intern/rna_camera.c @@ -85,7 +85,7 @@ void RNA_def_camera(BlenderRNA *brna) prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "angle"); - RNA_def_property_range(prop, 0.0f, 100.0f); + RNA_def_property_range(prop, 0.0f, 172.85f); RNA_def_property_ui_text(prop, "Angle", "Perspective Camera lend field of view in degrees."); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Camera_angle_update"); -- cgit v1.2.3 From 5c3879f8fbc2c52c689a89da4424e65ea1ae5129 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 08:39:59 +0000 Subject: zoom to mouse for 2D view note: this works in all views except for nodes which seem to use the view bounds differently --- source/blender/editors/interface/view2d_ops.c | 32 +++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 6742df351d1..7d1dc00e271 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -656,6 +656,7 @@ typedef struct v2dViewZoomData { int lastx, lasty; /* previous x/y values of mouse in window */ float dx, dy; /* running tally of previous delta values (for obtaining final zoom) */ + float mx_2d, my_2d; /* initial mouse location in v2d coords */ } v2dViewZoomData; /* initialise panning customdata */ @@ -701,8 +702,17 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.xmax -= 2*dx; } else { - v2d->cur.xmin += dx; - v2d->cur.xmax -= dx; + 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; + } + else { + v2d->cur.xmin += dx; + v2d->cur.xmax -= dx; + } } } if ((v2d->keepzoom & V2D_LOCKZOOM_Y)==0) { @@ -710,8 +720,17 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.ymax -= 2*dy; } else { - v2d->cur.ymin += dy; - v2d->cur.ymax -= dy; + 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 { + v2d->cur.ymin += dy; + v2d->cur.ymax -= dy; + } } } @@ -764,6 +783,11 @@ 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) { + 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); + } + if (v2d->keepofs & V2D_LOCKOFS_X) WM_cursor_modal(window, BC_NS_SCROLLCURSOR); else if (v2d->keepofs & V2D_LOCKOFS_Y) -- cgit v1.2.3 From 8f5b2e946bd24cc4ee2b7496b1e022cb24f56f4f Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 09:46:03 +0000 Subject: BGE bug #20446: revert to orignal code, the problems comes from misunderstanding of matrix theory. More details in bug report. --- source/blender/python/generic/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/python/generic/matrix.c b/source/blender/python/generic/matrix.c index 1fc5018c854..a1ef4b53615 100644 --- a/source/blender/python/generic/matrix.c +++ b/source/blender/python/generic/matrix.c @@ -944,7 +944,7 @@ static PyObject *Matrix_mul(PyObject * m1, PyObject * m2) for(z = 0; z < mat1->rowSize; z++) { dot += (mat1->matrix[z][y] * mat2->matrix[x][z]); } - mat[((y * mat1->rowSize) + x)] = (float)dot; + mat[((x * mat1->colSize) + y)] = (float)dot; dot = 0.0f; } } -- cgit v1.2.3 From e207d045322db4656f42f68ae9fa092ac1478635 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 10:04:15 +0000 Subject: quite a few python panels (10 or so) had names longer then the PanelType allowed, for panels it would fail silently but for menu's it meant further references would give errors. increase the registered class name from 32 to 64 and raise an error if the limit reached. --- source/blender/blenkernel/BKE_screen.h | 2 +- source/blender/makesrna/intern/rna_ID.c | 9 +++++++++ source/blender/makesrna/intern/rna_render.c | 7 ++++++- source/blender/makesrna/intern/rna_ui.c | 17 ++++++++++++++++- source/blender/render/extern/include/RE_pipeline.h | 4 ++-- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h index bf01ef0ec60..c9d1caa1cfe 100644 --- a/source/blender/blenkernel/BKE_screen.h +++ b/source/blender/blenkernel/BKE_screen.h @@ -55,7 +55,7 @@ struct uiMenuItem; ED_spacetypes_init() in editors/area/spacetypes.c */ /* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */ -#define BKE_ST_MAXNAME 32 +#define BKE_ST_MAXNAME 64 typedef struct SpaceType { struct SpaceType *next, *prev; diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 2aeb600bc42..a250f0a49b4 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -205,6 +205,15 @@ StructRNA *rna_IDPropertyGroup_register(const bContext *C, ReportList *reports, if(validate(&dummyptr, data, NULL) != 0) return NULL; + /* note: it looks like there is no length limit on the srna id since its + * just a char pointer, but take care here, also be careful that python + * owns the string pointer which it could potentually free while blender + * is running. */ + if(strlen(identifier) >= sizeof(((IDProperty *)NULL)->name)) { + BKE_reportf(reports, RPT_ERROR, "registering id property class: '%s' is too long, maximum length is %d.", identifier, sizeof(((IDProperty *)NULL)->name)); + return NULL; + } + return RNA_def_struct(&BLENDER_RNA, identifier, "IDPropertyGroup"); // XXX } diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 5a80db74c38..8212423acd5 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -125,7 +125,12 @@ static StructRNA *rna_RenderEngine_register(const bContext *C, ReportList *repor /* validate the python class */ if(validate(&dummyptr, data, have_function) != 0) return NULL; - + + if(strlen(identifier) >= sizeof(dummyet.idname)) { + BKE_reportf(reports, RPT_ERROR, "registering render engine class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyet.idname)); + return NULL; + } + /* check if we have registered this engine type before, and remove it */ for(et=R_engines.first; et; et=et->next) { if(strcmp(et->idname, dummyet.idname) == 0) { diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index d33e96df2e6..cbd524680c1 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -163,6 +163,11 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi /* validate the python class */ if(validate(&dummyptr, data, have_function) != 0) return NULL; + + if(strlen(identifier) >= sizeof(dummypt.idname)) { + BKE_reportf(reports, RPT_ERROR, "registering panel class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummypt.idname)); + return NULL; + } if(!(art=region_type_find(reports, dummypt.space_type, dummypt.region_type))) return NULL; @@ -260,7 +265,12 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo /* validate the python class */ if(validate(&dummyhtr, data, have_function) != 0) return NULL; - + + if(strlen(identifier) >= sizeof(dummyht.idname)) { + BKE_reportf(reports, RPT_ERROR, "registering header class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyht.idname)); + return NULL; + } + if(!(art=region_type_find(reports, dummyht.space_type, RGN_TYPE_HEADER))) return NULL; @@ -373,6 +383,11 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void /* validate the python class */ if(validate(&dummymtr, data, have_function) != 0) return NULL; + + if(strlen(identifier) >= sizeof(dummymt.idname)) { + BKE_reportf(reports, RPT_ERROR, "registering menu class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummymt.idname)); + return NULL; + } /* check if we have registered this menu type before, and remove it */ mt= WM_menutype_find(dummymt.idname, TRUE); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 56a81ac6b43..477a4baead9 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -253,8 +253,8 @@ typedef struct RenderEngineType { struct RenderEngineType *next, *prev; /* type info */ - char idname[32]; - char name[32]; + char idname[64]; // best keep the same size as BKE_ST_MAXNAME + char name[64]; int flag; void (*render)(struct RenderEngine *engine, struct Scene *scene); -- cgit v1.2.3 From 5a3ac3ceeb0d3550c14987f5cfd607e1ad126e64 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 22 Dec 2009 10:14:13 +0000 Subject: Assorted F-Curve/Keyframe API stuff (for use with some Sequencer editing): * Added function for F-Curves to find the F-Curves in a given list which affect some named data, such as bones, nodes, or sequence strips. * Added a BezTriple offsetting callback to be used with the F-Curve+Keyframe loopers in use for many of the keyframe editing tools. --- source/blender/blenkernel/BKE_fcurve.h | 7 +- source/blender/blenkernel/intern/fcurve.c | 85 ++++++++++++++++------ source/blender/editors/animation/keyframes_edit.c | 16 ++++ .../blender/editors/animation/keyframes_general.c | 2 +- source/blender/editors/include/ED_keyframes_edit.h | 18 ++++- 5 files changed, 101 insertions(+), 27 deletions(-) diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index 5888c6d7530..fa6b8969edb 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -158,7 +158,12 @@ void copy_fcurves(ListBase *dst, ListBase *src); struct FCurve *list_find_fcurve(ListBase *list, const char rna_path[], const int array_index); /* high level function to get an fcurve from C without having the rna */ -struct FCurve *id_data_find_fcurve(ID* id, void *data, struct StructRNA *type, char *prop_name, int index); +struct FCurve *id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, char *prop_name, int index); + +/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated + * e.g. numMatches = list_find_data_fcurves(matches, &act->curves, "pose.bones[", "MyFancyBone"); + */ +int list_find_data_fcurves(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName); /* Binary search algorithm for finding where to 'insert' BezTriple with given frame number. * Returns the index to insert at (data already at that index will be offset if replace is 0) diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index b5f3d0a4be0..d5e033652a8 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -167,53 +167,42 @@ void copy_fcurves (ListBase *dst, ListBase *src) } } -/* ---------------------- Relink --------------------------- */ - -#if 0 -/* uses id->newid to match pointers with other copied data - * - called after single-user or other such - */ - if (icu->driver) - ID_NEW(icu->driver->ob); -#endif - /* --------------------- Finding -------------------------- */ +/* high level function to get an fcurve from C without having the rna */ FCurve *id_data_find_fcurve(ID *id, void *data, StructRNA *type, char *prop_name, int index) { /* anim vars */ - AnimData *adt; + AnimData *adt= BKE_animdata_from_id(id); FCurve *fcu= NULL; /* rna vars */ PointerRNA ptr; PropertyRNA *prop; char *path; - - adt= BKE_animdata_from_id(id); - + /* only use the current action ??? */ - if(adt==NULL || adt->action==NULL) + if (ELEM(NULL, adt, adt->action)) return NULL; - + RNA_pointer_create(id, type, data, &ptr); prop = RNA_struct_find_property(&ptr, prop_name); - - if(prop) { + + if (prop) { path= RNA_path_from_ID_to_property(&ptr, prop); - - if(path) { + + if (path) { /* animation takes priority over drivers */ - if(adt->action && adt->action->curves.first) + if ((adt->action) && (adt->action->curves.first)) fcu= list_find_fcurve(&adt->action->curves, path, index); - + /* if not animated, check if driven */ #if 0 - if(!fcu && (adt->drivers.first)) { + if ((fcu == NULL) && (adt->drivers.first)) { fcu= list_find_fcurve(&adt->drivers, path, but->rnaindex); } #endif - + MEM_freeN(path); } } @@ -245,6 +234,54 @@ FCurve *list_find_fcurve (ListBase *list, const char rna_path[], const int array return NULL; } +/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated + * Lists... + * - dst: list of LinkData's matching the criteria returned. + * List must be freed after use, and is assumed to be empty when passed. + * - src: list of F-Curves to search through + * Filters... + * - dataPrefix: i.e. 'pose.bones[' or 'nodes[' + * - dataName: name of entity within "" immediately following the prefix + */ +int list_find_data_fcurves (ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName) +{ + FCurve *fcu; + int matches = 0; + + /* sanity checks */ + if (ELEM4(NULL, dst, src, dataPrefix, dataName)) + return 0; + else if ((dataPrefix[0] == 0) || (dataName[0] == 0)) + return 0; + + /* search each F-Curve one by one */ + for (fcu= src->first; fcu; fcu= fcu->next) { + /* check if quoted string matches the path */ + if ((fcu->rna_path) && strstr(fcu->rna_path, dataPrefix)) { + char *quotedName= BLI_getQuotedStr(fcu->rna_path, dataPrefix); + + if (quotedName) { + /* check if the quoted name matches the required name */ + if (strcmp(quotedName, dataName) == 0) { + LinkData *ld= MEM_callocN(sizeof(LinkData), "list_find_data_fcurves"); + + ld->data= fcu; + BLI_addtail(dst, ld); + + matches++; + } + + /* always free the quoted string, since it needs freeing */ + MEM_freeN(quotedName); + } + } + } + + /* return the number of matches */ + return matches; +} + + /* threshold for binary-searching keyframes - threshold here should be good enough for now, but should become userpref */ #define BEZT_BINARYSEARCH_THRESH 0.00001f diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index 83acfbee940..9476aa479a7 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -559,6 +559,22 @@ short bezt_to_cfraelem(BeztEditData *bed, BezTriple *bezt) return 0; } +/* used to remap times from one range to another + * requires: bed->data = BeztEditCD_Remap + */ +short bezt_remap_times(BeztEditData *bed, BezTriple *bezt) +{ + BeztEditCD_Remap *rmap= (BeztEditCD_Remap*)bed->data; + const float scale = (rmap->newMax - rmap->newMin) / (rmap->oldMax - rmap->oldMin); + + /* perform transform on all three handles unless indicated otherwise */ + // TODO: need to include some checks for that + + bezt->vec[0][0]= scale*(bezt->vec[0][0] - rmap->oldMin) + rmap->newMin; + bezt->vec[1][0]= scale*(bezt->vec[1][0] - rmap->oldMin) + rmap->newMin; + bezt->vec[2][0]= scale*(bezt->vec[2][0] - rmap->oldMin) + rmap->newMin; +} + /* ******************************************* */ /* Transform */ diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index 3b717bafc70..fb9d4d53b0f 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -60,7 +60,7 @@ * fine to have these calls here. * * There are also a few tools here which cannot be easily coded for in the other system (yet). - * These may also be moved around at some point, but for now, they + * These may also be moved around at some point, but for now, they are best added here. * * - Joshua Leung, Dec 2008 */ diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h index 4a0a3ee24db..26290d8771c 100644 --- a/source/blender/editors/include/ED_keyframes_edit.h +++ b/source/blender/editors/include/ED_keyframes_edit.h @@ -100,11 +100,19 @@ typedef struct BeztEditData { /* ------- Function Pointer Typedefs ---------------- */ - /* callback function that refreshes the IPO curve after use */ + /* 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); +/* ------- Custom Data Type Defines ------------------ */ + +/* Custom data for remapping one range to another in a fixed way */ +typedef struct BeztEditCD_Remap { + float oldMin, oldMax; /* old range */ + float newMin, newMax; /* new range */ +} BeztEditCD_Remap; + /* ---------------- Looping API --------------------- */ /* functions for looping over keyframes */ @@ -137,9 +145,17 @@ BeztEditFunc ANIM_editkeyframes_keytype(short mode); /* ----------- 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); + +/* used to extract a set of cfra-elems from the keyframes */ short bezt_to_cfraelem(BeztEditData *bed, struct BezTriple *bezt); +/* used to remap times from one range to another + * requires: bed->custom = BeztEditCD_Remap + */ +short bezt_remap_times(BeztEditData *bed, struct BezTriple *bezt); + /* ************************************************ */ /* Destructive Editing API (keyframes_general.c) */ -- cgit v1.2.3 From 3221dea46eeb6c5441c4617d704ffb3e8caeeca3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 10:48:13 +0000 Subject: clone and stencil layer access added, renamed mask to stencil layer internally --- release/scripts/ui/space_view3d_toolbar.py | 47 ++++++-- source/blender/blenkernel/BKE_customdata.h | 8 +- source/blender/blenkernel/intern/customdata.c | 8 +- source/blender/editors/mesh/mesh_data.c | 18 +-- source/blender/editors/sculpt_paint/paint_image.c | 30 ++--- source/blender/editors/space_image/image_buttons.c | 127 --------------------- source/blender/makesdna/DNA_scene_types.h | 4 +- source/blender/makesrna/intern/rna_mesh.c | 70 ++++++++++-- source/blender/makesrna/intern/rna_sculpt_paint.c | 4 +- 9 files changed, 131 insertions(+), 185 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 2c959e640ea..ca8978eecf8 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -826,24 +826,51 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel): col.active = (ipaint.use_normal_falloff and use_projection) col.prop(ipaint, "normal_angle", text="") - split = layout.split(percentage=0.7) - - col = split.column(align=False) - col.active = (use_projection) - col.prop(ipaint, "use_stencil_layer") + col = layout.column(align=False) + row = col.row() + row.active = (use_projection) + row.prop(ipaint, "use_stencil_layer", text="Stencil") - col = split.column(align=False) - col.active = (use_projection and ipaint.use_stencil_layer) - col.prop(ipaint, "invert_stencil", text="Inv") + row2 = row.row(align=False) + row2.active = (use_projection and ipaint.use_stencil_layer) + row2.menu("VIEW3D_MT_tools_projectpaint_stencil", text=context.active_object.data.uv_texture_stencil.name) + row2.prop(ipaint, "invert_stencil", text="", icon='IMAGE_ALPHA') col = layout.column() sub = col.column() - sub.active = (settings.tool == 'CLONE') - sub.prop(ipaint, "use_clone_layer") + row = sub.row() + row.active = (settings.tool == 'CLONE') + + row.prop(ipaint, "use_clone_layer", text="Clone") + row.menu("VIEW3D_MT_tools_projectpaint_clone", text=context.active_object.data.uv_texture_clone.name) sub = col.column() sub.prop(ipaint, "seam_bleed") + class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu): + bl_label = "Clone Layer" + + def draw(self, context): + layout = self.layout + for i, tex in enumerate(context.active_object.data.uv_textures): + prop = layout.operator("wm.context_set_int", text=tex.name) + prop.path = "active_object.data.uv_texture_clone_index" + prop.value = i + + + class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu): + bl_label = "Mask Layer" + + def draw(self, context): + layout = self.layout + for i, tex in enumerate(context.active_object.data.uv_textures): + prop = layout.operator("wm.context_set_int", text=tex.name) + prop.path = "active_object.data.uv_texture_stencil_index" + prop.value = i + + bpy.types.register(VIEW3D_MT_tools_projectpaint_clone) + bpy.types.register(VIEW3D_MT_tools_projectpaint_stencil) + class VIEW3D_PT_tools_particlemode(View3DPanel): '''default tools for particle mode''' diff --git a/source/blender/blenkernel/BKE_customdata.h b/source/blender/blenkernel/BKE_customdata.h index 5f13e702343..65c02d1abb9 100644 --- a/source/blender/blenkernel/BKE_customdata.h +++ b/source/blender/blenkernel/BKE_customdata.h @@ -198,11 +198,11 @@ int CustomData_get_named_layer_index(const struct CustomData *data, int type, ch int CustomData_get_active_layer_index(const struct CustomData *data, int type); int CustomData_get_render_layer_index(const struct CustomData *data, int type); int CustomData_get_clone_layer_index(const struct CustomData *data, int type); -int CustomData_get_mask_layer_index(const struct CustomData *data, int type); +int CustomData_get_stencil_layer_index(const struct CustomData *data, int type); int CustomData_get_active_layer(const struct CustomData *data, int type); int CustomData_get_render_layer(const struct CustomData *data, int type); int CustomData_get_clone_layer(const struct CustomData *data, int type); -int CustomData_get_mask_layer(const struct CustomData *data, int type); +int CustomData_get_stencil_layer(const struct CustomData *data, int type); /* copies the data from source to the data element at index in the first * layer of type @@ -231,13 +231,13 @@ void *CustomData_set_layer_n(const struct CustomData *data, int type, int n, voi void CustomData_set_layer_active(struct CustomData *data, int type, int n); void CustomData_set_layer_render(struct CustomData *data, int type, int n); void CustomData_set_layer_clone(struct CustomData *data, int type, int n); -void CustomData_set_layer_mask(struct CustomData *data, int type, int n); +void CustomData_set_layer_stencil(struct CustomData *data, int type, int n); /* same as above but works with an index from CustomData_get_layer_index */ void CustomData_set_layer_active_index(struct CustomData *data, int type, int n); void CustomData_set_layer_render_index(struct CustomData *data, int type, int n); void CustomData_set_layer_clone_index(struct CustomData *data, int type, int n); -void CustomData_set_layer_mask_index(struct CustomData *data, int type, int n); +void CustomData_set_layer_stencil_index(struct CustomData *data, int type, int n); /* adds flag to the layer flags */ void CustomData_set_layer_flag(struct CustomData *data, int type, int flag); diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index d9e85d5d412..78e673b9e79 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -1006,7 +1006,7 @@ int CustomData_get_clone_layer_index(const CustomData *data, int type) return -1; } -int CustomData_get_mask_layer_index(const CustomData *data, int type) +int CustomData_get_stencil_layer_index(const CustomData *data, int type) { int i; @@ -1050,7 +1050,7 @@ int CustomData_get_clone_layer(const CustomData *data, int type) return -1; } -int CustomData_get_mask_layer(const CustomData *data, int type) +int CustomData_get_stencil_layer(const CustomData *data, int type) { int i; @@ -1088,7 +1088,7 @@ void CustomData_set_layer_clone(CustomData *data, int type, int n) data->layers[i].active_clone = n; } -void CustomData_set_layer_mask(CustomData *data, int type, int n) +void CustomData_set_layer_stencil(CustomData *data, int type, int n) { int i; @@ -1125,7 +1125,7 @@ void CustomData_set_layer_clone_index(CustomData *data, int type, int n) data->layers[i].active_clone = n-i; } -void CustomData_set_layer_mask_index(CustomData *data, int type, int n) +void CustomData_set_layer_stencil_index(CustomData *data, int type, int n) { int i; diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 0285faf7949..1cdc059f57e 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -72,10 +72,10 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la { Mesh *me = ob->data; CustomData *data= (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata; - void *actlayerdata, *rndlayerdata, *clonelayerdata, *masklayerdata, *layerdata=layer->data; + void *actlayerdata, *rndlayerdata, *clonelayerdata, *stencillayerdata, *layerdata=layer->data; int type= layer->type; int index= CustomData_get_layer_index(data, type); - int i, actindex, rndindex, cloneindex, maskindex; + int i, actindex, rndindex, cloneindex, stencilindex; /* ok, deleting a non-active layer needs to preserve the active layer indices. to do this, we store a pointer to the .data member of both layer and the active layer, @@ -87,7 +87,7 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la actlayerdata = data->layers[CustomData_get_active_layer_index(data, type)].data; rndlayerdata = data->layers[CustomData_get_render_layer_index(data, type)].data; clonelayerdata = data->layers[CustomData_get_clone_layer_index(data, type)].data; - masklayerdata = data->layers[CustomData_get_mask_layer_index(data, type)].data; + stencillayerdata = data->layers[CustomData_get_stencil_layer_index(data, type)].data; CustomData_set_layer_active(data, type, layer - &data->layers[index]); if(me->edit_mesh) { @@ -144,18 +144,18 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la CustomData_set_layer_clone(data, type, cloneindex); } - if (masklayerdata != layerdata) { + if (stencillayerdata != layerdata) { /* find index */ - maskindex = CustomData_get_layer_index(data, type); - for (i=maskindex; itotlayer; i++) { - if (data->layers[i].data == masklayerdata) { - maskindex = i - maskindex; + stencilindex = CustomData_get_layer_index(data, type); + for (i=stencilindex; itotlayer; i++) { + if (data->layers[i].data == stencillayerdata) { + stencilindex = i - stencilindex; break; } } /* set index */ - CustomData_set_layer_mask(data, type, maskindex); + CustomData_set_layer_stencil(data, type, stencilindex); } } diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 1f0d158ece9..058dab4ba15 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -228,7 +228,7 @@ typedef struct ProjPaintState { MFace *dm_mface; MTFace *dm_mtface; MTFace *dm_mtface_clone; /* other UV layer, use for cloning between layers */ - MTFace *dm_mtface_mask; + MTFace *dm_mtface_stencil; /* projection painting only */ MemArena *arena_mt[BLENDER_MAX_THREADS];/* for multithreading, the first item is sometimes used for non threaded cases too */ @@ -257,8 +257,8 @@ typedef struct ProjPaintState { /* options for projection painting */ int do_layer_clone; - int do_layer_mask; - int do_layer_mask_inv; + int do_layer_stencil; + int do_layer_stencil_inv; short do_occlude; /* Use raytraced occlusion? - ortherwise will paint right through to the back*/ short do_backfacecull; /* ignore faces with normals pointing away, skips a lot of raycasts if your normals are correctly flipped */ @@ -1265,10 +1265,10 @@ float project_paint_uvpixel_mask( float mask; /* Image Mask */ - if (ps->do_layer_mask) { + if (ps->do_layer_stencil) { /* another UV layers image is masking this one's */ ImBuf *ibuf_other; - const MTFace *tf_other = ps->dm_mtface_mask + face_index; + const MTFace *tf_other = ps->dm_mtface_stencil + face_index; if (tf_other->tpage && (ibuf_other = BKE_image_get_ibuf(tf_other->tpage, NULL))) { /* BKE_image_get_ibuf - TODO - this may be slow */ @@ -1284,7 +1284,7 @@ float project_paint_uvpixel_mask( mask = ((rgba_ub[0]+rgba_ub[1]+rgba_ub[2])/(256*3.0f)) * (rgba_ub[3]/256.0f); } - if (!ps->do_layer_mask_inv) /* matching the gimps layer mask black/white rules, white==full opacity */ + if (!ps->do_layer_stencil_inv) /* matching the gimps layer mask black/white rules, white==full opacity */ mask = (1.0f - mask); if (mask == 0.0f) { @@ -2863,15 +2863,15 @@ static void project_paint_begin(ProjPaintState *ps) } } - if (ps->do_layer_mask) { - //int layer_num = CustomData_get_mask_layer(&ps->dm->faceData, CD_MTFACE); - int layer_num = CustomData_get_mask_layer(&((Mesh *)ps->ob->data)->fdata, CD_MTFACE); + if (ps->do_layer_stencil) { + //int layer_num = CustomData_get_stencil_layer(&ps->dm->faceData, CD_MTFACE); + int layer_num = CustomData_get_stencil_layer(&((Mesh *)ps->ob->data)->fdata, CD_MTFACE); if (layer_num != -1) - ps->dm_mtface_mask = CustomData_get_layer_n(&ps->dm->faceData, CD_MTFACE, layer_num); + ps->dm_mtface_stencil = CustomData_get_layer_n(&ps->dm->faceData, CD_MTFACE, layer_num); - if (ps->dm_mtface_mask==NULL || ps->dm_mtface_mask==ps->dm_mtface) { - ps->do_layer_mask = 0; - ps->dm_mtface_mask = NULL; + if (ps->dm_mtface_stencil==NULL || ps->dm_mtface_stencil==ps->dm_mtface) { + ps->do_layer_stencil = 0; + ps->dm_mtface_stencil = NULL; } } @@ -4438,8 +4438,8 @@ static int texture_paint_init(bContext *C, wmOperator *op) if (pop->ps.tool == PAINT_TOOL_CLONE) pop->ps.do_layer_clone = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_CLONE); - pop->ps.do_layer_mask = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_MASK) ? 1 : 0; - pop->ps.do_layer_mask_inv = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_MASK_INV) ? 1 : 0; + 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 diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index bb989b35cd5..4811eb411ec 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -363,133 +363,6 @@ static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block } } -#if 0 -static void image_panel_view_properties(const bContext *C, Panel *pa) -{ -} -#endif - -void brush_buttons(const bContext *C, uiBlock *block, short fromsima, - int evt_nop, int evt_change, - int evt_browse, int evt_local, - int evt_del, int evt_keepdata, - int evt_texbrowse, int evt_texdel) -{ -// SpaceImage *sima= CTX_wm_space_image(C); - ToolSettings *settings= CTX_data_tool_settings(C); - Brush *brush= paint_brush(&settings->imapaint.paint); - ID *id; - int yco, xco, butw, but_idx; -// short *menupoin = &(sima->menunr); // XXX : &(G.buts->menunr); - short do_project = settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE ? 0:1; - - yco= 160; - - butw = fromsima ? 80 : 106; - - uiBlockBeginAlign(block); - but_idx = 0; - uiDefButS(block, ROW, evt_change, "Draw", butw*(but_idx++),yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw brush"); - if (fromsima || do_project==0) - uiDefButS(block, ROW, evt_change, "Soften", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften brush"); - uiDefButS(block, ROW, evt_change, "Smear", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear brush"); - if (fromsima || do_project) - uiDefButS(block, ROW, evt_change, "Clone", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone brush, use RMB to drag source image"); - - uiBlockEndAlign(block); - yco -= 30; - - id= (ID*)brush; - xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_browse, ID_BR, 0, id, NULL, menupoin, 0, evt_local, evt_del, 0, evt_keepdata); - - if(brush && !brush->id.lib) { - - butw= 320-(xco+10); - - uiDefButS(block, MENU, evt_nop, "Mix %x0|Add %x1|Subtract %x2|Multiply %x3|Lighten %x4|Darken %x5|Erase Alpha %x6|Add Alpha %x7", xco+10,yco,butw,19, &brush->blend, 0, 0, 0, 0, "Blending method for applying brushes"); - - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG|BIT, BRUSH_AIRBRUSH, evt_change, "Airbrush", xco+10,yco-25,butw/2,19, &brush->flag, 0, 0, 0, 0, "Keep applying paint effect while holding mouse (spray)"); - uiDefButF(block, NUM, evt_nop, "", xco+10 + butw/2,yco-25,butw/2,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per second for Airbrush"); - uiBlockEndAlign(block); - - if (fromsima) { - uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, evt_change, "Wrap", xco+10,yco-45,butw,19, &brush->flag, 0, 0, 0, 0, "Enables torus wrapping"); - yco -= 25; - } - else { - yco -= 25; - uiBlockBeginAlign(block); - uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_DISABLE, B_REDR, "Project Paint", xco+10,yco-25,butw,19, &settings->imapaint.flag, 0, 0, 0, 0, "Use projection painting for improved consistency in the brush strokes"); - - if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) { - /* Projection Painting */ - - uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_XRAY, B_NOP, "Occlude", xco+10,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Only paint onto the faces directly under the brush (slower)"); - uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull", xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore faces pointing away from the view (faster)"); - - uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_FLAT, B_NOP, "Normal", xco+10,yco-65,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Paint most on faces pointing towards the view"); - uiDefButS(block, NUM, B_NOP, "", xco+10 +(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, "Paint most on faces pointing towards the view acording to this angle"); - - uiDefButS(block, NUM, B_NOP, "Bleed: ", xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend paint beyond the faces UVs to reduce seams (in pixels, slower)"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK, B_NOP, "Stencil Layer", xco+10,yco-110,butw-30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Set the mask layer from the UV layer buttons"); - uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK_INV, B_NOP, "Inv", xco+10 + butw-30,yco-110,30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Invert the mask"); - uiBlockEndAlign(block); - - } - uiBlockEndAlign(block); - } - - uiBlockBeginAlign(block); - uiDefButF(block, COL, B_VPCOLSLI, "", 0,yco,200,19, brush->rgb, 0, 0, 0, 0, ""); - uiDefButF(block, NUMSLI, evt_nop, "Opacity ", 0,yco-20,180,19, &brush->alpha, 0.0, 1.0, 0, 0, "The amount of pressure on the brush"); - uiDefIconButBitS(block, TOG|BIT, BRUSH_ALPHA_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-20,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets"); - uiDefButI(block, NUMSLI, evt_nop, "Size ", 0,yco-40,180,19, &brush->size, 1, 200, 0, 0, "The size of the brush"); - uiDefIconButBitS(block, TOG|BIT, BRUSH_SIZE_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-40,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets"); -// uiDefButF(block, NUMSLI, evt_nop, "Falloff ", 0,yco-60,180,19, &brush->innerradius, 0.0, 1.0, 0, 0, "The fall off radius of the brush"); -// uiDefIconButBitS(block, TOG|BIT, BRUSH_RAD_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-60,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets"); - uiDefButF(block, NUMSLI, evt_nop, "Spacing ",0,yco-80,180,19, &brush->spacing, 1.0, 100.0, 0, 0, "Repeating paint on %% of brush diameter"); - uiDefIconButBitS(block, TOG|BIT, BRUSH_SPACING_PRESSURE, evt_nop, ICON_STYLUS_PRESSURE, 180,yco-80,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets"); - uiBlockEndAlign(block); - - yco -= 110; - - if(fromsima && settings->imapaint.tool == PAINT_TOOL_CLONE) { - id= (ID*)brush->clone.image; - xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, B_SIMACLONEBROWSE, ID_IM, 0, id, 0, menupoin, 0, 0, B_SIMACLONEDELETE, 0, 0); - if(id) { - butw= 320-(xco+5); - uiDefButF(block, NUMSLI, evt_change, "B ",xco+5,yco,butw,19, &brush->clone.alpha , 0.0, 1.0, 0, 0, "Opacity of clone image display"); - } - } - else { - if ( - (fromsima==0) && /* 3D View */ - (settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0 && /* Projection Painting */ - (settings->imapaint.tool == PAINT_TOOL_CLONE) - ) { - butw = 130; - uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_CLONE, B_REDR, "Clone Layer", 0,yco,butw,20, &settings->imapaint.flag, 0, 0, 0, 0, "Use another UV layer as clone source, otherwise use 3D the cursor as the source"); - } - else { - MTex *mtex= brush->mtex[brush->texact]; - - id= (mtex)? (ID*)mtex->tex: NULL; - xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_texbrowse, ID_TE, 0, id, NULL, menupoin, 0, 0, evt_texdel, 0, 0); - /*uiDefButBitS(block, TOG|BIT, BRUSH_FIXED_TEX, evt_change, "Fixed", xco+5,yco,butw,19, &brush->flag, 0, 0, 0, 0, "Keep texture origin in fixed position");*/ - } - } - } - -#if 0 - uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL_DRAWING, B_SIMABRUSHCHANGE, "TD", 0,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while drawing"); - uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL, B_SIMABRUSHCHANGE, "TP", 50,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while not drawing"); -#endif -} - static int image_panel_poll(const bContext *C, PanelType *pt) { SpaceImage *sima= CTX_wm_space_image(C); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 0ed8aba056a..536d9ba2bc3 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1092,8 +1092,8 @@ typedef enum SculptFlags { #define IMAGEPAINT_PROJECT_BACKFACE 32 #define IMAGEPAINT_PROJECT_FLAT 64 #define IMAGEPAINT_PROJECT_LAYER_CLONE 128 -#define IMAGEPAINT_PROJECT_LAYER_MASK 256 -#define IMAGEPAINT_PROJECT_LAYER_MASK_INV 512 +#define IMAGEPAINT_PROJECT_LAYER_STENCIL 256 +#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV 512 /* toolsettings->uvcalc_flag */ #define UVCALC_FILLHOLES 1 diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 3163f38af3d..c298d83850b 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -330,7 +330,7 @@ static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); } -static PointerRNA rna_Mesh_clone_uv_texture_get(PointerRNA *ptr) +static PointerRNA rna_Mesh_uv_texture_clone_get(PointerRNA *ptr) { Mesh *me= (Mesh*)ptr->data; CustomData *fdata= rna_mesh_fdata(me); @@ -340,6 +340,16 @@ static PointerRNA rna_Mesh_clone_uv_texture_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); } +static PointerRNA rna_Mesh_uv_texture_stencil_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + int index= CustomData_get_stencil_layer_index(fdata, CD_MTFACE); + CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index]; + + return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl); +} + static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) { Mesh *me= (Mesh*)ptr->data; @@ -356,7 +366,7 @@ static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value) } } -static void rna_Mesh_clone_uv_texture_set(PointerRNA *ptr, PointerRNA value) +static void rna_Mesh_uv_texture_clone_set(PointerRNA *ptr, PointerRNA value) { Mesh *me= (Mesh*)ptr->data; CustomData *fdata= rna_mesh_fdata(me); @@ -366,7 +376,21 @@ static void rna_Mesh_clone_uv_texture_set(PointerRNA *ptr, PointerRNA value) for(cdl=fdata->layers, a=0; atotlayer; cdl++, a++) { if(value.data == cdl) { CustomData_set_layer_clone_index(fdata, CD_MTFACE, a); - mesh_update_customdata_pointers(me); + return; + } + } +} + +static void rna_Mesh_uv_texture_stencil_set(PointerRNA *ptr, PointerRNA value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + CustomDataLayer *cdl; + int a; + + for(cdl=fdata->layers, a=0; atotlayer; cdl++, a++) { + if(value.data == cdl) { + CustomData_set_layer_stencil_index(fdata, CD_MTFACE, a); return; } } @@ -379,13 +403,20 @@ static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr) return CustomData_get_active_layer(fdata, CD_MTFACE); } -static int rna_Mesh_clone_uv_texture_index_get(PointerRNA *ptr) +static int rna_Mesh_uv_texture_clone_index_get(PointerRNA *ptr) { Mesh *me= (Mesh*)ptr->data; CustomData *fdata= rna_mesh_fdata(me); return CustomData_get_clone_layer(fdata, CD_MTFACE); } +static int rna_Mesh_uv_texture_stencil_index_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + return CustomData_get_stencil_layer(fdata, CD_MTFACE); +} + static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) { Mesh *me= (Mesh*)ptr->data; @@ -395,13 +426,20 @@ static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value) mesh_update_customdata_pointers(me); } -static void rna_Mesh_clone_uv_texture_index_set(PointerRNA *ptr, int value) +static void rna_Mesh_uv_texture_clone_index_set(PointerRNA *ptr, int value) { Mesh *me= (Mesh*)ptr->data; CustomData *fdata= rna_mesh_fdata(me); CustomData_set_layer_clone(fdata, CD_MTFACE, value); - mesh_update_customdata_pointers(me); +} + +static void rna_Mesh_uv_texture_stencil_index_set(PointerRNA *ptr, int value) +{ + Mesh *me= (Mesh*)ptr->data; + CustomData *fdata= rna_mesh_fdata(me); + + CustomData_set_layer_stencil(fdata, CD_MTFACE, value); } static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max) @@ -1593,17 +1631,25 @@ static void rna_def_mesh(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index."); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); - prop= RNA_def_property(srna, "clone_uv_texture", PROP_POINTER, PROP_UNSIGNED); + prop= RNA_def_property(srna, "uv_texture_clone", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshTextureFaceLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_clone_uv_texture_get", "rna_Mesh_clone_uv_texture_set", NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_clone_get", "rna_Mesh_uv_texture_clone_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source."); - RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); - prop= RNA_def_property(srna, "clone_uv_texture_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_clone_uv_texture_index_get", "rna_Mesh_clone_uv_texture_index_set", "rna_Mesh_active_uv_texture_index_range"); + prop= RNA_def_property(srna, "uv_texture_clone_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_clone_index_get", "rna_Mesh_uv_texture_clone_index_set", "rna_Mesh_active_uv_texture_index_range"); RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index."); - RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + + prop= RNA_def_property(srna, "uv_texture_stencil", PROP_POINTER, PROP_UNSIGNED); + RNA_def_property_struct_type(prop, "MeshTextureFaceLayer"); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_stencil_get", "rna_Mesh_uv_texture_stencil_set", NULL); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Mask UV Texture", "UV texture to mask the painted area."); + + prop= RNA_def_property(srna, "uv_texture_stencil_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_stencil_index_get", "rna_Mesh_uv_texture_stencil_index_set", "rna_Mesh_active_uv_texture_index_range"); + RNA_def_property_ui_text(prop, "Mask UV Texture Index", "Mask UV texture index."); /* Vertex colors */ diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index c8fb11ced95..13c3b15549b 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -315,11 +315,11 @@ static void rna_def_image_paint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Normal", "Paint most on faces pointing towards the view"); prop= RNA_def_property(srna, "use_stencil_layer", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_MASK); + RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_STENCIL); RNA_def_property_ui_text(prop, "Stencil Layer", "Set the mask layer from the UV layer buttons"); prop= RNA_def_property(srna, "invert_stencil", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_MASK_INV); + RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_STENCIL_INV); RNA_def_property_ui_text(prop, "Invert", "Invert the stencil layer"); prop= RNA_def_property(srna, "use_clone_layer", PROP_BOOLEAN, PROP_NONE); -- cgit v1.2.3 From 0606dbe291a00edba9a3010e109c200541321d63 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Dec 2009 11:59:30 +0000 Subject: Fix #20433: make single user doesn't work from menu. Popup menus for operators were not passing along properties. --- source/blender/editors/include/UI_interface.h | 1 + .../blender/editors/interface/interface_layout.c | 23 ++++++++++++++++++++-- source/blender/windowmanager/intern/wm_operators.c | 10 ++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 8e44d7f386e..313791e28cb 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -678,6 +678,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value); 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 uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, struct IDProperty *properties, int context, int flag); void uiItemL(uiLayout *layout, char *name, int icon); /* label */ void uiItemM(uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname); /* menu */ diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index b0670be63a2..9dd5535ea30 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -695,7 +695,7 @@ void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *pro uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } -void uiItemsEnumO(uiLayout *layout, char *opname, char *propname) +void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, IDProperty *properties, int context, int flag) { wmOperatorType *ot= WM_operatortype_find(opname, 0); PointerRNA ptr; @@ -721,7 +721,21 @@ void uiItemsEnumO(uiLayout *layout, char *opname, char *propname) for(i=0; iroot->opcontext, 0); +} + /* for use in cases where we have */ void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value_str) { diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index fc5abec1561..d65580681eb 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -621,7 +621,7 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) else { pup= uiPupMenuBegin(C, op->type->name, 0); layout= uiPupMenuLayout(pup); - uiItemsEnumO(layout, op->type->idname, (char*)RNA_property_identifier(prop)); + uiItemsFullEnumO(layout, op->type->idname, (char*)RNA_property_identifier(prop), op->ptr->data, WM_OP_EXEC_REGION_WIN, 0); uiPupMenuEnd(C, pup); } @@ -633,10 +633,16 @@ int WM_operator_confirm_message(bContext *C, wmOperator *op, char *message) { uiPopupMenu *pup; uiLayout *layout; + IDProperty *properties= op->ptr->data; + + if(properties && properties->len) + properties= IDP_CopyProperty(op->ptr->data); + else + properties= NULL; pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION); layout= uiPupMenuLayout(pup); - uiItemO(layout, message, 0, op->type->idname); + uiItemFullO(layout, message, 0, op->type->idname, properties, WM_OP_EXEC_REGION_WIN, 0); uiPupMenuEnd(C, pup); return OPERATOR_CANCELLED; -- cgit v1.2.3 From d6531927510ad3885176158afa643fee6ec30882 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Dec 2009 12:01:32 +0000 Subject: Reports: writing movies now uses the reports mechanism to throw errors. Also fixes bug #19463: screencast to xvid ffmpeg crash. --- source/blender/blenkernel/BKE_writeavi.h | 12 ++- source/blender/blenkernel/BKE_writeffmpeg.h | 5 +- source/blender/blenkernel/BKE_writeframeserver.h | 7 +- source/blender/blenkernel/intern/writeavi.c | 19 ++-- source/blender/blenkernel/intern/writeffmpeg.c | 120 +++++++++++---------- .../blender/blenkernel/intern/writeframeserver.c | 48 ++++----- source/blender/editors/screen/screen_ops.c | 24 +++-- source/blender/editors/screen/screendump.c | 20 +++- source/blender/quicktime/apple/qtkit_export.m | 100 ++++++++--------- source/blender/quicktime/apple/quicktime_export.c | 83 +++++++------- source/blender/quicktime/quicktime_export.h | 4 +- source/blender/render/extern/include/RE_pipeline.h | 3 +- source/blender/render/intern/source/pipeline.c | 28 +++-- .../blender/windowmanager/intern/wm_event_system.c | 8 +- source/creator/creator.c | 9 +- 15 files changed, 265 insertions(+), 225 deletions(-) diff --git a/source/blender/blenkernel/BKE_writeavi.h b/source/blender/blenkernel/BKE_writeavi.h index 4ef63b069c2..a8d38dda103 100644 --- a/source/blender/blenkernel/BKE_writeavi.h +++ b/source/blender/blenkernel/BKE_writeavi.h @@ -37,17 +37,19 @@ extern "C" { /* generic blender movie support, could move to own module */ struct RenderData; +struct ReportList; struct Scene; -void start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty); + +int start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); void end_avi(void); -void append_avi(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); +int append_avi(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); void makeavistring (struct RenderData *rd, char *string); typedef struct bMovieHandle { - void (*start_movie)(struct Scene *scene, struct RenderData *rd, int rectx, int recty); - void (*append_movie)(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); + int (*start_movie)(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); + int (*append_movie)(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); void (*end_movie)(void); - int (*get_next_frame)(struct RenderData *rd); /* optional */ + int (*get_next_frame)(struct RenderData *rd, struct ReportList *reports); /* optional */ } bMovieHandle; bMovieHandle *BKE_get_movie_handle(int imtype); diff --git a/source/blender/blenkernel/BKE_writeffmpeg.h b/source/blender/blenkernel/BKE_writeffmpeg.h index 07e0e01ef7e..6ec8320f026 100644 --- a/source/blender/blenkernel/BKE_writeffmpeg.h +++ b/source/blender/blenkernel/BKE_writeffmpeg.h @@ -57,11 +57,12 @@ extern "C" { struct IDProperty; struct RenderData; +struct ReportList; struct Scene; -extern void start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty); +extern int start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); extern void end_ffmpeg(void); -extern void append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); +extern int append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); extern void ffmpeg_set_preset(struct RenderData *rd, int preset); extern void ffmpeg_verify_image_type(struct RenderData *rd); diff --git a/source/blender/blenkernel/BKE_writeframeserver.h b/source/blender/blenkernel/BKE_writeframeserver.h index 6a38abe977f..50b905cfd75 100644 --- a/source/blender/blenkernel/BKE_writeframeserver.h +++ b/source/blender/blenkernel/BKE_writeframeserver.h @@ -33,12 +33,13 @@ extern "C" { #endif struct RenderData; +struct ReportList; struct Scene; -extern void start_frameserver(struct Scene *scene, struct RenderData *rd, int rectx, int recty); +extern int start_frameserver(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); extern void end_frameserver(void); -extern void append_frameserver(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); -extern int frameserver_loop(struct RenderData *rd); +extern int append_frameserver(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); +extern int frameserver_loop(struct RenderData *rd, struct ReportList *reports); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c index 7c58a4f9499..ec3d1185179 100644 --- a/source/blender/blenkernel/intern/writeavi.c +++ b/source/blender/blenkernel/intern/writeavi.c @@ -40,6 +40,7 @@ #include "BLI_blenlib.h" #include "BKE_global.h" +#include "BKE_report.h" #include "BKE_utildefines.h" #include "BKE_writeavi.h" #include "AVI_avi.h" @@ -127,7 +128,7 @@ void makeavistring (RenderData *rd, char *string) } } -void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty) +int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports) { int x, y; char name[256]; @@ -153,10 +154,10 @@ void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty) else format = AVI_FORMAT_MJPEG; if (AVI_open_compress (name, avi, 1, format) != AVI_ERROR_NONE) { - printf("cannot open or start AVI movie file"); + BKE_report(reports, RPT_ERROR, "Cannot open or start AVI movie file."); MEM_freeN (avi); avi = NULL; - return; + return 0; } AVI_set_compress_option (avi, AVI_OPTION_TYPE_MAIN, 0, AVI_OPTION_WIDTH, &x); @@ -170,18 +171,17 @@ void start_avi(struct Scene *scene, RenderData *rd, int rectx, int recty) /* avi->odd_fields= (rd->mode & R_ODDFIELD)?1:0; */ printf("Created avi: %s\n", name); + return 1; } -void append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty) +int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { unsigned int *rt1, *rt2, *rectot; int x, y; char *cp, rt; - if (avi == NULL) { - G.afbreek = 1; - return; - } + if (avi == NULL) + return 0; /* note that libavi free's the buffer... stupid interface - zr */ rectot= MEM_mallocN(rectx*recty*sizeof(int), "rectot"); @@ -205,6 +205,8 @@ void append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty) AVI_write_frame (avi, (frame-sframe), AVI_FORMAT_RGB32, rectot, rectx*recty*4); // printf ("added frame %3d (frame %3d in avi): ", frame, frame-sframe); + + return 1; } void end_avi(void) @@ -215,3 +217,4 @@ void end_avi(void) MEM_freeN (avi); avi= NULL; } + diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 1953058fddf..417679417e4 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -52,23 +52,24 @@ #define snprintf _snprintf #endif -#include "BKE_writeffmpeg.h" - #include "MEM_guardedalloc.h" + +#include "DNA_scene_types.h" + #include "BLI_blenlib.h" +#include "AUD_C-API.h" /* must be before BKE_sound.h for define */ + #include "BKE_global.h" #include "BKE_idprop.h" +#include "BKE_main.h" +#include "BKE_report.h" +#include "BKE_sound.h" +#include "BKE_writeffmpeg.h" #include "IMB_imbuf_types.h" #include "IMB_imbuf.h" -#include "DNA_scene_types.h" - -#include "AUD_C-API.h" -#include "BKE_sound.h" -#include "BKE_main.h" - #ifdef HAVE_CONFIG_H #include #endif @@ -239,10 +240,10 @@ static const char** get_file_extensions(int format) } /* Write a frame to the output file */ -static void write_video_frame(RenderData *rd, AVFrame* frame) +static int write_video_frame(RenderData *rd, AVFrame* frame, ReportList *reports) { int outsize = 0; - int ret; + int ret, success= 1; AVCodecContext* c = get_codec_from_stream(video_stream); #ifdef FFMPEG_CODEC_TIME_BASE frame->pts = rd->cfra - rd->sfra; @@ -276,14 +277,17 @@ static void write_video_frame(RenderData *rd, AVFrame* frame) packet.size = outsize; ret = av_interleaved_write_frame(outfile, &packet); } else ret = 0; + if (ret != 0) { - G.afbreek = 1; - //XXX error("Error writing frame"); + success= 0; + BKE_report(reports, RPT_ERROR, "Error writing frame."); } + + return success; } /* read and encode a frame of audio from the buffer */ -static AVFrame* generate_video_frame(uint8_t* pixels) +static AVFrame* generate_video_frame(uint8_t* pixels, ReportList *reports) { uint8_t* rendered_frame; @@ -295,8 +299,7 @@ static AVFrame* generate_video_frame(uint8_t* pixels) if (c->pix_fmt != PIX_FMT_BGR32) { rgb_frame = alloc_picture(PIX_FMT_BGR32, width, height); if (!rgb_frame) { - G.afbreek=1; - //XXX error("Couldn't allocate temporary frame"); + BKE_report(reports, RPT_ERROR, "Couldn't allocate temporary frame."); return NULL; } } else { @@ -613,7 +616,7 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex } /* essential functions -- start, append, end */ -static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty) +static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, ReportList *reports) { /* Handle to the output file */ AVFormatContext* of; @@ -648,22 +651,19 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty) exts = get_file_extensions(ffmpeg_type); if (!exts) { - G.afbreek = 1; /* Abort render */ - //XXX error("No valid formats found"); - return; + BKE_report(reports, RPT_ERROR, "No valid formats found."); + return 0; } fmt = guess_format(NULL, exts[0], NULL); if (!fmt) { - G.afbreek = 1; /* Abort render */ - //XXX error("No valid formats found"); - return; + BKE_report(reports, RPT_ERROR, "No valid formats found."); + return 0; } of = av_alloc_format_context(); if (!of) { - G.afbreek = 1; - //XXX error("Error opening output file"); - return; + BKE_report(reports, RPT_ERROR, "Error opening output file"); + return 0; } of->oformat = fmt; @@ -711,22 +711,16 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty) } if (fmt->video_codec == CODEC_ID_DVVIDEO) { if (rectx != 720) { - G.afbreek = 1; - //XXX error("Render width has to be 720 pixels for DV!"); - return; + BKE_report(reports, RPT_ERROR, "Render width has to be 720 pixels for DV!"); + return 0; } if (rd->frs_sec != 25 && recty != 480) { - G.afbreek = 1; - //XXX error("Render height has to be 480 pixels " - // "for DV-NTSC!"); - return; - + BKE_report(reports, RPT_ERROR, "Render height has to be 480 pixels for DV-NTSC!"); + return 0; } if (rd->frs_sec == 25 && recty != 576) { - G.afbreek = 1; - //XXX error("Render height has to be 576 pixels " - // "for DV-PAL!"); - return; + BKE_report(reports, RPT_ERROR, "Render height has to be 576 pixels for DV-PAL!"); + return 0; } } @@ -735,46 +729,42 @@ static void start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty) if (ffmpeg_type == FFMPEG_DV) { fmt->audio_codec = CODEC_ID_PCM_S16LE; if (ffmpeg_multiplex_audio && rd->ffcodecdata.audio_mixrate != 48000) { - G.afbreek = 1; - //XXX error("FFMPEG only supports 48khz / stereo " - // "audio for DV!"); - return; + BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!"); + return 0; } } video_stream = alloc_video_stream(rd, fmt->video_codec, of, rectx, recty); + printf("alloc video stream %p\n", video_stream); if (!video_stream) { - G.afbreek = 1; - //XXX error("Error initializing video stream"); - return; + BKE_report(reports, RPT_ERROR, "Error initializing video stream."); + return 0; } if (ffmpeg_multiplex_audio) { audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of); if (!audio_stream) { - G.afbreek = 1; - //XXX error("Error initializing audio stream"); - return; + BKE_report(reports, RPT_ERROR, "Error initializing audio stream."); + return 0; } //XXX audiostream_play(SFRA, 0, 1); } if (av_set_parameters(of, NULL) < 0) { - G.afbreek = 1; - //XXX error("Error setting output parameters"); - return; + BKE_report(reports, RPT_ERROR, "Error setting output parameters."); + return 0; } if (!(fmt->flags & AVFMT_NOFILE)) { if (url_fopen(&of->pb, name, URL_WRONLY) < 0) { - G.afbreek = 1; - // - //XXX error("Could not open file for writing"); - return; + BKE_report(reports, RPT_ERROR, "Could not open file for writing."); + return 0; } } av_write_header(of); outfile = of; dump_format(of, 0, name, 1); + + return 1; } /* ********************************************************************** @@ -831,11 +821,13 @@ static void makeffmpegstring(RenderData* rd, char* string) { } } -void start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty) +int start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports) { + int success; + ffmpeg_autosplit_count = 0; - start_ffmpeg_impl(rd, rectx, recty); + success = start_ffmpeg_impl(rd, rectx, recty, reports); if(ffmpeg_multiplex_audio && audio_stream) { @@ -846,6 +838,8 @@ void start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty) specs.rate = rd->ffcodecdata.audio_mixrate; audio_mixdown_device = sound_mixdown(scene, specs, rd->sfra, rd->efra, rd->ffcodecdata.audio_volume); } + + return success; } void end_ffmpeg(void); @@ -870,22 +864,29 @@ static void write_audio_frames() } } -void append_ffmpeg(RenderData *rd, int frame, int *pixels, int rectx, int recty) +int append_ffmpeg(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { + AVFrame* avframe; + int success; + fprintf(stderr, "Writing frame %i, " "render width=%d, render height=%d\n", frame, rectx, recty); write_audio_frames(); - write_video_frame(rd, generate_video_frame((unsigned char*) pixels)); + + avframe= generate_video_frame((unsigned char*) pixels, reports); + success= (avframe && write_video_frame(rd, avframe, reports)); if (ffmpeg_autosplit) { if (url_ftell(OUTFILE_PB) > FFMPEG_AUTOSPLIT_SIZE) { end_ffmpeg(); ffmpeg_autosplit_count++; - start_ffmpeg_impl(rd, rectx, recty); + success &= start_ffmpeg_impl(rd, rectx, recty, reports); } } + + return success; } @@ -914,6 +915,7 @@ void end_ffmpeg(void) if (video_stream && get_codec_from_stream(video_stream)) { avcodec_close(get_codec_from_stream(video_stream)); video_stream = 0; + printf("zero video stream %p\n", video_stream); } diff --git a/source/blender/blenkernel/intern/writeframeserver.c b/source/blender/blenkernel/intern/writeframeserver.c index 0780cd0dc48..20d858fffeb 100644 --- a/source/blender/blenkernel/intern/writeframeserver.c +++ b/source/blender/blenkernel/intern/writeframeserver.c @@ -48,6 +48,7 @@ #include "DNA_userdef_types.h" #include "BKE_global.h" +#include "BKE_report.h" #include "IMB_imbuf_types.h" #include "IMB_imbuf.h" @@ -101,48 +102,45 @@ static int closesocket(int fd) } #endif -void start_frameserver(struct Scene *scene, RenderData *rd, int rectx, int recty) +int start_frameserver(struct Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports) { - struct sockaddr_in addr; + struct sockaddr_in addr; int arg = 1; if (!startup_socket_system()) { - G.afbreek = 1; - //XXX error("Can't startup socket system"); - return; + BKE_report(reports, RPT_ERROR, "Can't startup socket system"); + return 0; } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { shutdown_socket_system(); - G.afbreek = 1; /* Abort render */ - //XXX error("Can't open socket"); - return; - } + BKE_report(reports, RPT_ERROR, "Can't open socket"); + return 0; + } - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, - (char*) &arg, sizeof(arg)); + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*) &arg, sizeof(arg)); addr.sin_family = AF_INET; - addr.sin_port = htons(U.frameserverport); - addr.sin_addr.s_addr = INADDR_ANY; + addr.sin_port = htons(U.frameserverport); + addr.sin_addr.s_addr = INADDR_ANY; if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { shutdown_socket_system(); - G.afbreek = 1; /* Abort render */ - //XXX error("Can't bind to socket"); - return; - } + BKE_report(reports, RPT_ERROR, "Can't bind to socket"); + return 0; + } - if (listen(sock, SOMAXCONN) < 0) { + if (listen(sock, SOMAXCONN) < 0) { shutdown_socket_system(); - G.afbreek = 1; /* Abort render */ - //XXX error("Can't establish listen backlog"); - return; - } + BKE_report(reports, RPT_ERROR, "Can't establish listen backlog"); + return 0; + } connsock = -1; render_width = rectx; render_height = recty; + + return 1; } static char index_page[] @@ -249,7 +247,7 @@ static int handle_request(RenderData *rd, char * req) return -1; } -int frameserver_loop(RenderData *rd) +int frameserver_loop(RenderData *rd, ReportList *reports) { fd_set readfds; struct timeval tv; @@ -355,7 +353,7 @@ static void serve_ppm(int *pixels, int rectx, int recty) connsock = -1; } -void append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int recty) +int append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { fprintf(stderr, "Serving frame: %d\n", frame); if (write_ppm) { @@ -365,6 +363,8 @@ void append_frameserver(RenderData *rd, int frame, int *pixels, int rectx, int r closesocket(connsock); connsock = -1; } + + return 0; } void end_frameserver() diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index fe1587a965d..f0cf338be06 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2810,7 +2810,7 @@ static int screen_render_exec(bContext *C, wmOperator *op) 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); + RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step, op->reports); else RE_BlenderFrame(re, scene, scene->r.cfra); @@ -2831,6 +2831,7 @@ typedef struct RenderJob { ImageUser iuser; short *stop; short *do_update; + ReportList *reports; } RenderJob; static void render_freejob(void *rjv) @@ -3035,7 +3036,7 @@ static void render_startjob(void *rjv, short *stop, short *do_update) #endif if(rj->anim) - RE_BlenderAnim(rj->re, rj->scene, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step); + 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->scene->r.cfra); } @@ -3108,6 +3109,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) 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); @@ -3139,8 +3141,6 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) WM_jobs_start(CTX_wm_manager(C), steve); - G.afbreek= 0; - WM_cursor_wait(0); WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); @@ -3185,6 +3185,7 @@ typedef struct OGLRender { GPUOffScreen *ofs; int sizex, sizey; + ReportList *reports; bMovieHandle *mh; int cfrao, nfra; @@ -3383,9 +3384,9 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even if(ibuf) { if(BKE_imtype_is_movie(scene->r.imtype)) { - oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey); - printf("Append frame %d", scene->r.cfra); - ok= 1; + 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); } else { BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype); @@ -3439,9 +3440,14 @@ static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *eve 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)) - oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey); + 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 OPERATOR_CANCELLED; + } + } oglrender->cfrao= scene->r.cfra; oglrender->nfra= SFRA; diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 81c3f4d6814..088be194fe8 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -42,6 +42,7 @@ #include "BKE_context.h" #include "BKE_global.h" #include "BKE_image.h" +#include "BKE_report.h" #include "BKE_utildefines.h" #include "BKE_writeavi.h" @@ -185,6 +186,7 @@ typedef struct ScreenshotJob { int x, y, dumpsx, dumpsy; short *stop; short *do_update; + ReportList reports; } ScreenshotJob; @@ -227,8 +229,12 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) rd.frs_sec= 10; rd.frs_sec_base= 1.0f; - if(BKE_imtype_is_movie(rd.imtype)) - mh->start_movie(sj->scene, &rd, sj->dumpsx, sj->dumpsy); + if(BKE_imtype_is_movie(rd.imtype)) { + if(!mh->start_movie(sj->scene, &rd, sj->dumpsx, sj->dumpsy, &sj->reports)) { + printf("screencast job stopped\n"); + return; + } + } else mh= NULL; @@ -242,8 +248,10 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) if(sj->dumprect) { if(mh) { - mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy); - printf("Append frame %d\n", cfra); + if(mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports)) + printf("Append frame %d\n", cfra); + else + break; } else { ImBuf *ibuf= IMB_allocImBuf(sj->dumpsx, sj->dumpsy, rd.planes, 0, 0); @@ -286,7 +294,7 @@ 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); ScreenshotJob *sj= MEM_callocN(sizeof(ScreenshotJob), "screenshot job"); - + /* setup sj */ if(RNA_boolean_get(op->ptr, "full")) { wmWindow *win= CTX_wm_window(C); @@ -304,6 +312,8 @@ static int screencast_exec(bContext *C, wmOperator *op) } sj->scene= CTX_data_scene(C); + BKE_reports_init(&sj->reports, RPT_PRINT); + /* setup job */ WM_jobs_customdata(steve, sj, screenshot_freejob); WM_jobs_timer(steve, 0.1, 0, NC_SCREEN|ND_SCREENCAST); diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index c7759055d7e..38baacf009e 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -154,68 +154,68 @@ void makeqtstring (RenderData *rd, char *string) { #pragma mark export functions -void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) +int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSError *error; char name[2048]; + int success= 1; + if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); - if (G.afbreek != 1) { - - if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); - - [QTMovie enterQTKitOnThread]; - - /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */ - if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) { - G.afbreek = 1; - fprintf(stderr, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later"); - } - else { - makeqtstring(rd, name); - qtexport->filename = [NSString stringWithCString:name - encoding:[NSString defaultCStringEncoding]]; - qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error]; - - if(qtexport->movie == nil) { - G.afbreek = 1; - NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]); - [QTMovie exitQTKitOnThread]; - } else { - [qtexport->movie retain]; - [qtexport->filename retain]; - [qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute]; - [qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute]; - - qtexport->frameDuration = QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000); - - /* specifying the codec attributes : try to retrieve them from render data first*/ - if (rd->qtcodecsettings.codecType) { - qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys: - stringWithCodecType(rd->qtcodecsettings.codecType), - QTAddImageCodecType, - [NSNumber numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100], - QTAddImageCodecQuality, - nil]; - } - else { - qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg", - QTAddImageCodecType, - [NSNumber numberWithLong:codecHighQuality], - QTAddImageCodecQuality, - nil]; - } - [qtexport->frameAttributes retain]; + [QTMovie enterQTKitOnThread]; + + /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */ + if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) { + BKE_report(reports, RPT_EROR, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later"); + success= 0; + } + else { + makeqtstring(rd, name); + qtexport->filename = [NSString stringWithCString:name + encoding:[NSString defaultCStringEncoding]]; + qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error]; + + if(qtexport->movie == nil) { + BKE_report(reports, RPT_ERROR, "Unable to create quicktime movie."); + success= 0; + NSLog(@"Unable to create quicktime movie : %@",[error localizedDescription]); + [QTMovie exitQTKitOnThread]; + } else { + [qtexport->movie retain]; + [qtexport->filename retain]; + [qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute]; + [qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute]; + + qtexport->frameDuration = QTMakeTime(rd->frs_sec_base*1000, rd->frs_sec*1000); + + /* specifying the codec attributes : try to retrieve them from render data first*/ + if (rd->qtcodecsettings.codecType) { + qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys: + stringWithCodecType(rd->qtcodecsettings.codecType), + QTAddImageCodecType, + [NSNumber numberWithLong:((rd->qtcodecsettings.codecSpatialQuality)*codecLosslessQuality)/100], + QTAddImageCodecQuality, + nil]; } + else { + qtexport->frameAttributes = [NSDictionary dictionaryWithObjectsAndKeys:@"jpeg", + QTAddImageCodecType, + [NSNumber numberWithLong:codecHighQuality], + QTAddImageCodecQuality, + nil]; + } + [qtexport->frameAttributes retain]; } } [pool drain]; + + return success; } -void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty) +int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSBitmapImageRep *blBitmapFormatImage; @@ -235,7 +235,7 @@ void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int rec bitsPerPixel:32]; if (!blBitmapFormatImage) { [pool drain]; - return; + return 0; } from_Ptr = (unsigned char*)pixels; @@ -257,6 +257,8 @@ void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int rec [blBitmapFormatImage release]; [frameImage release]; [pool drain]; + + return 1; } diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index 68fd60d89d2..a5737e93271 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -503,7 +503,7 @@ void makeqtstring (RenderData *rd, char *string) { } -void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) { +int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports) { OSErr err = noErr; char name[2048]; @@ -515,6 +515,7 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) #else char *qtname; #endif + int success= 1; if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport"); @@ -534,57 +535,57 @@ void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty) check_renderbutton_framerate(rd); } - if (G.afbreek != 1) { - sframe = (rd->sfra); + sframe = (rd->sfra); - makeqtstring(rd, name); + makeqtstring(rd, name); #ifdef __APPLE__ - EnterMoviesOnThread(0); - sprintf(theFullPath, "%s", name); - - /* hack: create an empty file to make FSPathMakeRef() happy */ - myFile = open(theFullPath, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRUSR|S_IWUSR); - if (myFile < 0) { - printf("error while creating file!\n"); - /* do something? */ - } - close(myFile); - err = FSPathMakeRef((const UInt8 *)theFullPath, &myRef, 0); - CheckError(err, "FsPathMakeRef error"); - err = FSGetCatalogInfo(&myRef, kFSCatInfoNone, NULL, NULL, &qtexport->theSpec, NULL); - CheckError(err, "FsGetCatalogInfoRef error"); + EnterMoviesOnThread(0); + sprintf(theFullPath, "%s", name); + + /* hack: create an empty file to make FSPathMakeRef() happy */ + myFile = open(theFullPath, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRUSR|S_IWUSR); + if (myFile < 0) { + printf("error while creating file!\n"); + /* do something? */ + } + close(myFile); + err = FSPathMakeRef((const UInt8 *)theFullPath, &myRef, 0); + CheckError(err, "FsPathMakeRef error"); + err = FSGetCatalogInfo(&myRef, kFSCatInfoNone, NULL, NULL, &qtexport->theSpec, NULL); + CheckError(err, "FsGetCatalogInfoRef error"); #endif #ifdef _WIN32 - qtname = get_valid_qtname(name); - sprintf(theFullPath, "%s", qtname); - strcpy(name, qtname); - MEM_freeN(qtname); - - CopyCStringToPascal(theFullPath, qtexport->qtfilename); - err = FSMakeFSSpec(0, 0L, qtexport->qtfilename, &qtexport->theSpec); + qtname = get_valid_qtname(name); + sprintf(theFullPath, "%s", qtname); + strcpy(name, qtname); + MEM_freeN(qtname); + + CopyCStringToPascal(theFullPath, qtexport->qtfilename); + err = FSMakeFSSpec(0, 0L, qtexport->qtfilename, &qtexport->theSpec); #endif - err = CreateMovieFile (&qtexport->theSpec, - kMyCreatorType, - smCurrentScript, - createMovieFileDeleteCurFile | createMovieFileDontCreateResFile, - &qtexport->resRefNum, - &qtexport->theMovie ); - CheckError(err, "CreateMovieFile error"); - - if(err != noErr) { - G.afbreek = 1; -// XXX error("Unable to create Quicktime movie: %s", name); + err = CreateMovieFile (&qtexport->theSpec, + kMyCreatorType, + smCurrentScript, + createMovieFileDeleteCurFile | createMovieFileDontCreateResFile, + &qtexport->resRefNum, + &qtexport->theMovie ); + CheckError(err, "CreateMovieFile error"); + + if(err != noErr) { + BKE_reportf(reports, RPT_ERROR, "Unable to create Quicktime movie: %s", name); + success= 0; #ifdef __APPLE__ - ExitMoviesOnThread(); + ExitMoviesOnThread(); #endif - } else { - printf("Created QuickTime movie: %s\n", name); + } else { + printf("Created QuickTime movie: %s\n", name); - QT_CreateMyVideoTrack(rectx, recty); - } + QT_CreateMyVideoTrack(rectx, recty); } + + return success; } diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 69f679693f6..543371999ed 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -46,8 +46,8 @@ struct RenderData; struct Scene; struct wmOperatorType; -void start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty); //for movie handle (BKE writeavi.c now) -void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty); +int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports); //for movie handle (BKE writeavi.c now) +int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports); void end_qt(void); /*RNA helper functions */ diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 477a4baead9..76e3e002513 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -44,6 +44,7 @@ struct RenderData; struct RenderEngine; struct RenderEngineType; struct RenderResult; +struct ReportList; struct Scene; /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ @@ -200,7 +201,7 @@ void RE_TileProcessor(struct Render *re, int firsttile, int threaded); /* only RE_NewRender() needed, main Blender render calls */ void RE_BlenderFrame(struct Render *re, struct Scene *scene, int frame); -void RE_BlenderAnim(struct Render *re, struct Scene *scene, int sfra, int efra, int tfra); +void RE_BlenderAnim(struct Render *re, struct Scene *scene, int sfra, int efra, int tfra, struct ReportList *reports); void RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode); void RE_WriteRenderResult(RenderResult *rr, char *filename, int compress); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index f7d3d6f419a..e2b290f655b 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2752,10 +2752,11 @@ void RE_BlenderFrame(Render *re, Scene *scene, int frame) re->result_ok= 1; } -static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh) +static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, ReportList *reports) { char name[FILE_MAX]; RenderResult rres; + int ok= 1; RE_AcquireResultImage(re, &rres); @@ -2768,7 +2769,7 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh) dofree = 1; } RE_ResultGet32(re, (unsigned int *)rres.rect32); - mh->append_movie(&re->r, scene->r.cfra, rres.rect32, rres.rectx, rres.recty); + ok= mh->append_movie(&re->r, scene->r.cfra, rres.rect32, rres.rectx, rres.recty, reports); if(dofree) { MEM_freeN(rres.rect32); } @@ -2785,7 +2786,6 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh) } else { ImBuf *ibuf= IMB_allocImBuf(rres.rectx, rres.recty, scene->r.planes, 0, 0); - int ok; /* if not exists, BKE_write_ibuf makes one */ ibuf->rect= (unsigned int *)rres.rect32; @@ -2802,7 +2802,6 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh) if(ok==0) { printf("Render error: cannot save %s\n", name); - G.afbreek=1; } else printf("Saved: %s", name); @@ -2826,10 +2825,12 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh) BLI_timestr(re->i.lastframetime, name); printf(" Time: %s\n", name); fflush(stdout); /* needed for renderd !! (not anymore... (ton)) */ + + return ok; } /* saves images to disk */ -void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra) +void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra, ReportList *reports) { bMovieHandle *mh= BKE_get_movie_handle(scene->r.imtype); unsigned int lay; @@ -2846,18 +2847,20 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra) re->result_ok= 0; if(BKE_imtype_is_movie(scene->r.imtype)) - mh->start_movie(scene, &re->r, re->rectx, re->recty); - + if(!mh->start_movie(scene, &re->r, re->rectx, re->recty, reports)) + G.afbreek= 1; + if (mh->get_next_frame) { while (!(G.afbreek == 1)) { - int nf = mh->get_next_frame(&re->r); + int nf = mh->get_next_frame(&re->r, reports); if (nf >= 0 && nf >= scene->r.sfra && nf <= scene->r.efra) { scene->r.cfra = re->r.cfra = nf; do_render_all_options(re); if(re->test_break(re->tbh) == 0) { - do_write_image_or_movie(re, scene, mh); + if(!do_write_image_or_movie(re, scene, mh, reports)) + G.afbreek= 1; } } else { if(re->test_break(re->tbh)) @@ -2907,8 +2910,11 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra) do_render_all_options(re); - if(re->test_break(re->tbh) == 0) - do_write_image_or_movie(re, scene, mh); + if(re->test_break(re->tbh) == 0) { + if(!G.afbreek) + if(!do_write_image_or_movie(re, scene, mh, reports)) + G.afbreek= 1; + } else G.afbreek= 1; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 435f3823fed..6b0368fbf8a 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -305,7 +305,7 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat) if(op->type->exec) retval= op->type->exec(C, op); - if(!(retval & OPERATOR_RUNNING_MODAL)) + if(retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) if(op->reports->list.first) uiPupMenuReports(C, op->reports); @@ -435,11 +435,11 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P /* Note, if the report is given as an argument then assume the caller will deal with displaying them * currently python only uses this */ - if(!(retval & OPERATOR_RUNNING_MODAL) && reports==NULL) { + if((retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) && reports==NULL) if(op->reports->list.first) /* only show the report if the report list was not given in the function */ uiPupMenuReports(C, op->reports); - if (retval & OPERATOR_FINISHED) /* todo - this may conflict with the other wm_operator_print, if theres ever 2 prints for 1 action will may need to add modal check here */ + if (retval & OPERATOR_FINISHED) { /* todo - this may conflict with the other wm_operator_print, if theres ever 2 prints for 1 action will may need to add modal check here */ if(G.f & G_DEBUG) wm_operator_print(op); } @@ -884,7 +884,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand CTX_wm_region_set(C, NULL); } - if(!(retval & OPERATOR_RUNNING_MODAL)) + if(retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) if(op->reports->list.first) uiPupMenuReports(C, op->reports); diff --git a/source/creator/creator.c b/source/creator/creator.c index c080062347d..cad79395b76 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -651,10 +651,13 @@ int main(int argc, char **argv) if (a < argc) { int frame = atoi(argv[a]); Render *re = RE_NewRender(scene->id.name); + ReportList reports; + + BKE_reports_init(&reports, RPT_PRINT); frame = MIN2(MAXFRAME, MAX2(MINAFRAME, frame)); - RE_BlenderAnim(re, scene, frame, frame, scene->r.frame_step); + RE_BlenderAnim(re, scene, frame, frame, scene->r.frame_step, &reports); } } else { printf("\nError: no blend loaded. cannot use '-f'.\n"); @@ -664,7 +667,9 @@ int main(int argc, char **argv) if (CTX_data_scene(C)) { Scene *scene= CTX_data_scene(C); Render *re= RE_NewRender(scene->id.name); - RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step); + ReportList reports; + BKE_reports_init(&reports, RPT_PRINT); + RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step, &reports); } else { printf("\nError: no blend loaded. cannot use '-a'.\n"); } -- cgit v1.2.3 From 68bc4d7355d8a13d6565d976180970af5c2d20e3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Dec 2009 15:20:31 +0000 Subject: Attempt to fix compilation of quicktime after reporting changes (can't build this file myself, only qtkit seems to work here). --- source/blender/quicktime/apple/qtkit_export.m | 3 +- source/blender/quicktime/apple/quicktime_export.c | 99 ++++++++++++----------- source/blender/quicktime/quicktime_export.h | 5 +- 3 files changed, 57 insertions(+), 50 deletions(-) diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 38baacf009e..1466d3a3a09 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -39,6 +39,7 @@ #include "BKE_global.h" #include "BKE_scene.h" +#include "BKE_report.h" #include "BLI_blenlib.h" @@ -167,7 +168,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R /* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */ if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) { - BKE_report(reports, RPT_EROR, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later"); + BKE_report(reports, RPT_ERROR, "\nUnable to create quicktime movie, need Quicktime rev 7.2.1 or later"); success= 0; } else { diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index a5737e93271..0475cd6e1d8 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -37,9 +37,10 @@ #include "WM_api.h" #include "WM_types.h" +#include "BKE_context.h" #include "BKE_global.h" +#include "BKE_report.h" #include "BKE_scene.h" -#include "BKE_context.h" #include "BLI_blenlib.h" @@ -76,13 +77,13 @@ #define kTrackStart 0 #define kMediaStart 0 -static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty); -static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty); +static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty, struct ReportList *reports); +static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty, struct ReportList *reports); static void QT_EndAddVideoSamplesToMedia (void); -static void QT_CreateMyVideoTrack (int rectx, int recty); -static void QT_EndCreateMyVideoTrack (void); -static void check_renderbutton_framerate(struct RenderData *rd); -static int get_qtcodec_settings(struct RenderData *rd); +static void QT_CreateMyVideoTrack (int rectx, int recty, struct ReportList *reports); +static void QT_EndCreateMyVideoTrack (struct ReportList *reports); +static void check_renderbutton_framerate(struct RenderData *rd, struct ReportList *reports); +static int get_qtcodec_settings(struct RenderData *rd, struct ReportList *reports); typedef struct QuicktimeExport { @@ -171,9 +172,12 @@ int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue) { -static void CheckError(OSErr err, char *msg) +static void CheckError(OSErr err, char *msg, ReportList *reports) { - if(err != noErr) printf("%s: %d\n", msg, err); + if(err != noErr) { + printf("%s: %d\n", msg, err); + BKE_reportf(reports, RPT_ERROR, "%s: %d", msg, err); + } } @@ -316,7 +320,7 @@ static OSErr QT_AddUserDataTextToMovie (Movie theMovie, char *theText, OSType th } -static void QT_CreateMyVideoTrack(int rectx, int recty) +static void QT_CreateMyVideoTrack(int rectx, int recty, ReportList *reports) { OSErr err = noErr; Rect trackFrame; @@ -331,7 +335,7 @@ static void QT_CreateMyVideoTrack(int rectx, int recty) FixRatio(trackFrame.right,1), FixRatio(trackFrame.bottom,1), 0); - CheckError( GetMoviesError(), "NewMovieTrack error" ); + CheckError( GetMoviesError(), "NewMovieTrack error", reports ); // SetIdentityMatrix(&myMatrix); // ScaleMatrix(&myMatrix, fixed1, Long2Fix(-1), 0, 0); @@ -343,34 +347,34 @@ static void QT_CreateMyVideoTrack(int rectx, int recty) qtdata->kVideoTimeScale, nil, 0); - CheckError( GetMoviesError(), "NewTrackMedia error" ); + CheckError( GetMoviesError(), "NewTrackMedia error", reports ); err = BeginMediaEdits (qtexport->theMedia); - CheckError( err, "BeginMediaEdits error" ); + CheckError( err, "BeginMediaEdits error", reports ); - QT_StartAddVideoSamplesToMedia (&trackFrame, rectx, recty); + QT_StartAddVideoSamplesToMedia (&trackFrame, rectx, recty, reports); } -static void QT_EndCreateMyVideoTrack(void) +static void QT_EndCreateMyVideoTrack(ReportList *reports) { OSErr err = noErr; QT_EndAddVideoSamplesToMedia (); err = EndMediaEdits (qtexport->theMedia); - CheckError( err, "EndMediaEdits error" ); + CheckError( err, "EndMediaEdits error", reports ); err = InsertMediaIntoTrack (qtexport->theTrack, kTrackStart,/* track start time */ kMediaStart,/* media start time */ GetMediaDuration (qtexport->theMedia), fixed1); - CheckError( err, "InsertMediaIntoTrack error" ); + CheckError( err, "InsertMediaIntoTrack error", reports ); } -static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty) +static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty, ReportList *reports) { SCTemporalSettings gTemporalSettings; OSErr err = noErr; @@ -384,7 +388,7 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i NULL, NULL, 0, (Ptr)qtexport->ibuf->rect, rectx * 4 ); - CheckError (err, "NewGWorldFromPtr error"); + CheckError (err, "NewGWorldFromPtr error", reports); qtexport->thePixMap = GetGWorldPixMap(qtexport->theGWorld); LockPixels(qtexport->thePixMap); @@ -407,11 +411,11 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); err = SCCompressSequenceBegin(qtdata->theComponent, qtexport->thePixMap, NULL, &qtexport->anImageDescription); - CheckError (err, "SCCompressSequenceBegin error" ); + CheckError (err, "SCCompressSequenceBegin error", reports ); } -static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty) +static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int recty, ReportList *reports) { OSErr err = noErr; Rect imageRect; @@ -453,7 +457,7 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int &compressedData, &dataSize, &syncFlag); - CheckError(err, "SCCompressSequenceFrame error"); + CheckError(err, "SCCompressSequenceFrame error", reports); err = AddMediaSample(qtexport->theMedia, compressedData, @@ -464,7 +468,7 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int 1, syncFlag, NULL); - CheckError(err, "AddMediaSample error"); + CheckError(err, "AddMediaSample error", reports); printf ("added frame %3d (frame %3d in movie): ", frame, frame-sframe); } @@ -527,12 +531,12 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeCodecDataExt"); if(rd->qtcodecdata == NULL || rd->qtcodecdata->cdParms == NULL) { - get_qtcodec_settings(rd); + get_qtcodec_settings(rd, reports); } else { qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType); - QT_GetCodecSettingsFromScene(rd); - check_renderbutton_framerate(rd); + QT_GetCodecSettingsFromScene(rd, reports); + check_renderbutton_framerate(rd, reports); } sframe = (rd->sfra); @@ -551,9 +555,9 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R } close(myFile); err = FSPathMakeRef((const UInt8 *)theFullPath, &myRef, 0); - CheckError(err, "FsPathMakeRef error"); + CheckError(err, "FsPathMakeRef error", reports); err = FSGetCatalogInfo(&myRef, kFSCatInfoNone, NULL, NULL, &qtexport->theSpec, NULL); - CheckError(err, "FsGetCatalogInfoRef error"); + CheckError(err, "FsGetCatalogInfoRef error", reports); #endif #ifdef _WIN32 qtname = get_valid_qtname(name); @@ -571,7 +575,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R createMovieFileDeleteCurFile | createMovieFileDontCreateResFile, &qtexport->resRefNum, &qtexport->theMovie ); - CheckError(err, "CreateMovieFile error"); + CheckError(err, "CreateMovieFile error", reports); if(err != noErr) { BKE_reportf(reports, RPT_ERROR, "Unable to create Quicktime movie: %s", name); @@ -582,15 +586,16 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R } else { printf("Created QuickTime movie: %s\n", name); - QT_CreateMyVideoTrack(rectx, recty); + QT_CreateMyVideoTrack(rectx, recty, reports); } return success; } -void append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty) { - QT_DoAddVideoSamplesToMedia(frame, pixels, rectx, recty); +int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { + QT_DoAddVideoSamplesToMedia(frame, pixels, rectx, recty, reports); + return 1; } @@ -599,16 +604,16 @@ void end_qt(void) { short resId = movieInDataForkResID; if(qtexport->theMovie) { - QT_EndCreateMyVideoTrack(); + QT_EndCreateMyVideoTrack(NULL); err = AddMovieResource (qtexport->theMovie, qtexport->resRefNum, &resId, qtexport->qtfilename); - CheckError(err, "AddMovieResource error"); + CheckError(err, "AddMovieResource error", NULL); err = QT_AddUserDataTextToMovie(qtexport->theMovie, "Made with Blender", kUserDataTextInformation); - CheckError(err, "AddUserDataTextToMovie error"); + CheckError(err, "AddUserDataTextToMovie error", NULL); err = UpdateMovieResource(qtexport->theMovie, qtexport->resRefNum, resId, qtexport->qtfilename); - CheckError(err, "UpdateMovieResource error"); + CheckError(err, "UpdateMovieResource error", NULL); if(qtexport->resRefNum) CloseMovieFile(qtexport->resRefNum); @@ -635,13 +640,13 @@ void free_qtcomponentdata(void) { } -static void check_renderbutton_framerate(RenderData *rd) +static void check_renderbutton_framerate(RenderData *rd, ReportList *reports) { // to keep float framerates consistent between the codec dialog and frs/sec button. OSErr err; err = SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); - CheckError(err, "SCGetInfo fr error"); + CheckError(err, "SCGetInfo fr error", reports); if( (rd->frs_sec == 24 || rd->frs_sec == 30 || rd->frs_sec == 60) && (qtdata->gTemporalSettings.frameRate == 1571553 || @@ -654,7 +659,7 @@ static void check_renderbutton_framerate(RenderData *rd) } err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); - CheckError( err, "SCSetInfo error" ); + CheckError( err, "SCSetInfo error", reports ); if(qtdata->gTemporalSettings.frameRate == 1571553) { // 23.98 fps qtdata->kVideoTimeScale = 24000; @@ -688,7 +693,7 @@ void quicktime_verify_image_type(RenderData *rd) } } -int get_qtcodec_settings(RenderData *rd) +int get_qtcodec_settings(RenderData *rd, ReportList *reports) { OSErr err = noErr; // erase any existing codecsetting @@ -724,14 +729,14 @@ int get_qtcodec_settings(RenderData *rd) err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); - CheckError(err, "SCSetInfo1 error"); + CheckError(err, "SCSetInfo1 error", reports); err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); - CheckError(err, "SCSetInfo2 error"); + CheckError(err, "SCSetInfo2 error", reports); err = SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); - CheckError(err, "SCSetInfo3 error"); + CheckError(err, "SCSetInfo3 error", reports); } - check_renderbutton_framerate(rd); + check_renderbutton_framerate(rd, reports); return err; } @@ -774,11 +779,11 @@ static int request_qtcodec_settings(bContext *C, wmOperator *op) qtdata->aDataRateSetting.frameDuration = rd->frs_sec; err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); - CheckError(err, "SCSetInfo1 error"); + CheckError(err, "SCSetInfo1 error", op->reports); err = SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); - CheckError(err, "SCSetInfo2 error"); + CheckError(err, "SCSetInfo2 error", op->reports); err = SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); - CheckError(err, "SCSetInfo3 error"); + CheckError(err, "SCSetInfo3 error", op->reports); } // put up the dialog box - it needs to be called from the main thread err = SCRequestSequenceSettings(qtdata->theComponent); diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 543371999ed..2ccda8eb526 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -45,9 +45,10 @@ typedef struct QuicktimeCodecTypeDesc { struct RenderData; struct Scene; struct wmOperatorType; +struct ReportList; -int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports); //for movie handle (BKE writeavi.c now) -int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports); +int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); //for movie handle (BKE writeavi.c now) +int append_qt(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); void end_qt(void); /*RNA helper functions */ -- cgit v1.2.3 From 22a892f4024db7da71ccdced00bf494c28443510 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 16:11:11 +0000 Subject: - make ToolSettings.mesh_selection_mode into an array of 3 bools rather then an enum since multiple can be set at once. - ToolSettings had its id.data set to NULL when taken directly from the context (causing a crash in cases) - menu for changing vert/edge/face selection now a python menu, removed operator. - wm.context_set_value(), would really prefer not to have this since it evaluates the value as a python expression however there are no ways to define arrays in PyOperators --- release/scripts/op/mesh_skin.py | 11 +++--- release/scripts/op/wm.py | 38 +++++++++++++++++--- release/scripts/ui/space_view3d.py | 23 ++++++++++++ source/blender/editors/mesh/editmesh_mods.c | 51 --------------------------- source/blender/editors/mesh/mesh_intern.h | 1 - source/blender/editors/mesh/mesh_ops.c | 3 +- source/blender/makesrna/RNA_types.h | 7 +++- source/blender/makesrna/intern/rna_context.c | 1 + source/blender/makesrna/intern/rna_internal.h | 3 ++ source/blender/makesrna/intern/rna_scene.c | 48 ++++++++++++++++++++++--- 10 files changed, 117 insertions(+), 69 deletions(-) diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index 436cd21c9ee..a78da39c5d4 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -249,17 +249,16 @@ def mesh_faces_extend(me, faces, mat_idx = 0): def getSelectedEdges(context, me, ob): - MESH_MODE= context.scene.tool_settings.mesh_selection_mode + MESH_MODE = tuple(context.tool_settings.mesh_selection_mode) + context.tool_settings.mesh_selection_mode = False, True, False - if MESH_MODE in ('EDGE', 'VERTEX'): - context.scene.tool_settings.mesh_selection_mode = 'EDGE' + if not MESH_MODE[2]: edges= [ ed for ed in me.edges if ed.selected ] # print len(edges), len(me.edges) context.scene.tool_settings.mesh_selection_mode = MESH_MODE return edges - if MESH_MODE == 'FACE': - context.scene.tool_settings.mesh_selection_mode = 'EDGE' + else: # value is [edge, face_sel_user_in] edge_dict= dict((ed.key, [ed, 0]) for ed in me.edges) @@ -268,7 +267,7 @@ def getSelectedEdges(context, me, ob): for edkey in f.edge_keys: edge_dict[edkey][1] += 1 - context.scene.tool_settings.mesh_selection_mode = MESH_MODE + context.tool_settings.mesh_selection_mode = MESH_MODE return [ ed_data[0] for ed_data in edge_dict.values() if ed_data[1] == 1 ] diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 5069d206a3f..45a9e91d2c6 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -68,7 +68,8 @@ def execute_context_assign(self, context): class WM_OT_context_set_boolean(bpy.types.Operator): '''Set a context value.''' bl_idname = "wm.context_set_boolean" - bl_label = "Context Set" + bl_label = "Context Set Boolean" + bl_undo = True path = rna_path_prop value = BoolProperty(name="Value", @@ -81,6 +82,7 @@ class WM_OT_context_set_int(bpy.types.Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_int" bl_label = "Context Set" + bl_undo = True path = rna_path_prop value = IntProperty(name="Value", description="Assign value", default=0) @@ -91,7 +93,8 @@ class WM_OT_context_set_int(bpy.types.Operator): # same as enum class WM_OT_context_set_float(bpy.types.Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_float" - bl_label = "Context Set" + bl_label = "Context Set Float" + bl_undo = True path = rna_path_prop value = FloatProperty(name="Value", @@ -103,7 +106,8 @@ class WM_OT_context_set_float(bpy.types.Operator): # same as enum class WM_OT_context_set_string(bpy.types.Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_string" - bl_label = "Context Set" + bl_label = "Context Set String" + bl_undo = True path = rna_path_prop value = StringProperty(name="Value", @@ -115,7 +119,8 @@ class WM_OT_context_set_string(bpy.types.Operator): # same as enum class WM_OT_context_set_enum(bpy.types.Operator): '''Set a context value.''' bl_idname = "wm.context_set_enum" - bl_label = "Context Set" + bl_label = "Context Set Enum" + bl_undo = True path = rna_path_prop value = StringProperty(name="Value", @@ -125,10 +130,30 @@ class WM_OT_context_set_enum(bpy.types.Operator): execute = execute_context_assign +class WM_OT_context_set_value(bpy.types.Operator): + '''Set a context value.''' + bl_idname = "wm.context_set_value" + bl_label = "Context Set Value" + bl_undo = True + + path = rna_path_prop + value = StringProperty(name="Value", + description="Assignment value (as a string)", + maxlen=1024, default="") + + def execute(self, context): + if context_path_validate(context, self.properties.path) is Ellipsis: + return ('PASS_THROUGH',) + exec("context.%s=%s" % (self.properties.path, self.properties.value)) + return ('FINISHED',) + + class WM_OT_context_toggle(bpy.types.Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle" bl_label = "Context Toggle" + bl_undo = True + path = rna_path_prop def execute(self, context): @@ -146,6 +171,7 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle_enum" bl_label = "Context Toggle Values" + bl_undo = True path = rna_path_prop value_1 = StringProperty(name="Value", \ @@ -172,6 +198,8 @@ class WM_OT_context_cycle_int(bpy.types.Operator): vertex keys, groups' etc.''' bl_idname = "wm.context_cycle_int" bl_label = "Context Int Cycle" + bl_undo = True + path = rna_path_prop reverse = rna_reverse_prop @@ -203,6 +231,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): '''Toggle a context value.''' bl_idname = "wm.context_cycle_enum" bl_label = "Context Enum Cycle" + bl_undo = True path = rna_path_prop reverse = rna_reverse_prop @@ -384,6 +413,7 @@ bpy.ops.add(WM_OT_context_set_int) bpy.ops.add(WM_OT_context_set_float) bpy.ops.add(WM_OT_context_set_string) bpy.ops.add(WM_OT_context_set_enum) +bpy.ops.add(WM_OT_context_set_value) bpy.ops.add(WM_OT_context_toggle) bpy.ops.add(WM_OT_context_toggle_enum) bpy.ops.add(WM_OT_context_cycle_enum) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index fa0a6a8c5fa..2ec0e44e184 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1121,6 +1121,28 @@ class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): layout.operator("mesh.select_vertex_path") +class VIEW3D_MT_edit_mesh_selection_mode(bpy.types.Menu): + bl_label = "Mesh Select Mode" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + path = "tool_settings.edit_select_vertex;tool_settings.edit_select_edge;tool_settings.edit_select_face" + + prop = layout.operator("wm.context_set_value", text="Vertex") + prop.value = "(True, False, False)" + prop.path = "tool_settings.mesh_selection_mode" + + prop = layout.operator("wm.context_set_value", text="Edge") + prop.value = "(False, True, False)" + prop.path = "tool_settings.mesh_selection_mode" + + prop = layout.operator("wm.context_set_value", text="Face") + prop.value = "(False, False, True)" + prop.path = "tool_settings.mesh_selection_mode" + + class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): bl_label = "Vertices" @@ -1915,6 +1937,7 @@ bpy.types.register(VIEW3D_MT_pose_showhide) bpy.types.register(VIEW3D_MT_edit_mesh) bpy.types.register(VIEW3D_MT_edit_mesh_specials) # Only as a menu for keybindings +bpy.types.register(VIEW3D_MT_edit_mesh_selection_mode) # Only as a menu for keybindings bpy.types.register(VIEW3D_MT_edit_mesh_vertices) bpy.types.register(VIEW3D_MT_edit_mesh_edges) bpy.types.register(VIEW3D_MT_edit_mesh_faces) diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 0fa6ff0188c..d1dde75771d 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3682,57 +3682,6 @@ void EM_deselect_by_material(EditMesh *em, int index) EM_selectmode_flush(em); } -static void mesh_selection_type(ToolSettings *ts, EditMesh *em, int val) -{ - if(val>0) { - //if(ctrl) EM_convertsel(em, em->selectmode, SCE_SELECT_EDGE); - //if((ctrl)) EM_convertsel(em, em->selectmode, SCE_SELECT_FACE); - - em->selectmode= val; - EM_selectmode_set(em); - - /* note, em stores selectmode to be able to pass it on everywhere without scene, - this is only until all select modes and toolsettings are settled more */ - ts->selectmode= em->selectmode; -// if (EM_texFaceCheck()) - } -} - -static int mesh_selection_type_exec(bContext *C, wmOperator *op) -{ - ToolSettings *ts= CTX_data_tool_settings(C); - Object *obedit= CTX_data_edit_object(C); - EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); - - mesh_selection_type(ts, em, RNA_enum_get(op->ptr,"type")); - - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); - WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ - - BKE_mesh_end_editmesh(obedit->data, em); - return OPERATOR_FINISHED; -} - -void MESH_OT_selection_type(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Selection Mode"; - ot->description= "Set the selection mode type."; - ot->idname= "MESH_OT_selection_type"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= mesh_selection_type_exec; - - ot->poll= ED_operator_editmesh; - - /* flags */ - ot->flag= OPTYPE_UNDO; - - /* props */ - RNA_def_enum(ot->srna, "type", mesh_select_mode_items, 0, "Type", "Set the mesh selection type"); - -} /* ************************* SEAMS AND EDGES **************** */ static int editmesh_mark_seam(bContext *C, wmOperator *op) diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 5d9da374f2f..7b7257ae9cb 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -158,7 +158,6 @@ void MESH_OT_edges_select_sharp(struct wmOperatorType *ot); void MESH_OT_select_shortest_path(struct wmOperatorType *ot); void MESH_OT_select_similar(struct wmOperatorType *ot); void MESH_OT_select_random(struct wmOperatorType *ot); -void MESH_OT_selection_type(struct wmOperatorType *ot); void MESH_OT_loop_multi_select(struct wmOperatorType *ot); void MESH_OT_mark_seam(struct wmOperatorType *ot); void MESH_OT_mark_sharp(struct wmOperatorType *ot); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 621e952fb6d..af25dbda16b 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -76,7 +76,6 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_select_linked); WM_operatortype_append(MESH_OT_select_linked_pick); WM_operatortype_append(MESH_OT_select_random); - WM_operatortype_append(MESH_OT_selection_type); WM_operatortype_append(MESH_OT_hide); WM_operatortype_append(MESH_OT_reveal); WM_operatortype_append(MESH_OT_select_by_number_vertices); @@ -240,7 +239,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); /* selection mode */ - WM_keymap_add_item(keymap, "MESH_OT_selection_type", TABKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_selection_mode", TABKEY, KM_PRESS, KM_CTRL, 0); /* hide */ WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, 0, 0); diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index e771b495b96..90603f98c7a 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -164,7 +164,12 @@ typedef enum PropertyFlag { PROP_ID_SELF_CHECK = 1<<20, PROP_NEVER_NULL = 1<<18, - /* flag contains multiple enums */ + /* flag contains multiple enums. + * note: not to be confused with prop->enumbitflags + * this exposes the flag as multiple options in python and the UI. + * + * note: these can't be animated so use with care. + */ PROP_ENUM_FLAG = 1<<21, /* need context for update function */ diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c index 7239fc1ff3d..70d61b15d9f 100644 --- a/source/blender/makesrna/intern/rna_context.c +++ b/source/blender/makesrna/intern/rna_context.c @@ -100,6 +100,7 @@ static PointerRNA rna_Context_scene_get(PointerRNA *ptr) static PointerRNA rna_Context_tool_settings_get(PointerRNA *ptr) { bContext *C= (bContext*)ptr->data; + ptr->id.data= CTX_data_scene(C); return rna_pointer_inherit_refine(ptr, &RNA_ToolSettings, CTX_data_tool_settings(C)); } diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 1c14d0d4c06..5bb3c82395d 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -75,6 +75,9 @@ typedef struct PropertyDefRNA { int dnalengthfixed; int booleanbit, booleannegative; + + /* not to be confused with PROP_ENUM_FLAG + * this only allows one of the flags to be set at a time, clearing all others */ int enumbitflags; } PropertyDefRNA; diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index e4df352bcc8..ba389f66438 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -72,6 +72,7 @@ EnumPropertyItem proportional_editing_items[] = { {PROP_EDIT_CONNECTED, "CONNECTED", ICON_PROP_CON, "Connected", ""}, {0, NULL, 0, NULL, NULL}}; +/* keep for operators, not used here */ EnumPropertyItem mesh_select_mode_items[] = { {SCE_SELECT_VERTEX, "VERTEX", ICON_VERTEXSEL, "Vertex", "Vertex selection mode."}, {SCE_SELECT_EDGE, "EDGE", ICON_EDGESEL, "Edge", "Edge selection mode."}, @@ -91,6 +92,7 @@ EnumPropertyItem snap_element_items[] = { #include "DNA_anim_types.h" #include "DNA_node_types.h" #include "DNA_object_types.h" +#include "DNA_mesh_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -99,13 +101,18 @@ EnumPropertyItem snap_element_items[] = { #include "BKE_pointcache.h" #include "BKE_scene.h" #include "BKE_depsgraph.h" +#include "BKE_mesh.h" #include "BLI_threads.h" +#include "BLI_editVert.h" + +#include "WM_api.h" #include "ED_info.h" #include "ED_node.h" #include "ED_view3d.h" #include "ED_object.h" +#include "ED_mesh.h" #include "RE_pipeline.h" @@ -562,6 +569,38 @@ static void rna_Physics_update(Main *bmain, Scene *unused, PointerRNA *ptr) for(base = scene->base.first; base; base=base->next) BKE_ptcache_object_reset(scene, base->object, PTCACHE_RESET_DEPSGRAPH); } + +static void rna_Scene_editmesh_select_mode_set(PointerRNA *ptr, const int *value) +{ + Scene *scene= (Scene*)ptr->id.data; + ToolSettings *ts = (ToolSettings*)ptr->data; + int flag = (value[0] ? SCE_SELECT_VERTEX:0) | (value[1] ? SCE_SELECT_EDGE:0) | (value[2] ? SCE_SELECT_FACE:0); + + ts->selectmode = flag; + + if(scene->basact) { + Mesh *me= get_mesh(scene->basact->object); + if(me && me->edit_mesh && me->edit_mesh->selectmode != flag) { + me->edit_mesh->selectmode= flag; + EM_selectmode_set(me->edit_mesh); + } + } +} + +static void rna_Scene_editmesh_select_mode_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Mesh *me= NULL; + + if(scene->basact) { + me= get_mesh(scene->basact->object); + if(me && me->edit_mesh==NULL) + me= NULL; + } + + WM_main_add_notifier(NC_GEOM|ND_SELECT, me); + WM_main_add_notifier(NC_SCENE|ND_MODE, NULL); /* header redraw */ +} + #else static void rna_def_transform_orientation(BlenderRNA *brna) @@ -736,10 +775,11 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL); /* Mesh */ - prop= RNA_def_property(srna, "mesh_selection_mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode"); - RNA_def_property_enum_items(prop, mesh_select_mode_items); - RNA_def_property_ui_text(prop, "Mesh Selection Mode", "Mesh selection and display mode."); + prop= RNA_def_property(srna, "mesh_selection_mode", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "selectmode", 1); + RNA_def_property_array(prop, 3); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_select_mode_set"); + RNA_def_property_update(prop, 0, "rna_Scene_editmesh_select_mode_update"); prop= RNA_def_property(srna, "vertex_group_weight", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "vgroup_weight"); -- cgit v1.2.3 From b3d30c66babbd656647bcdead36db00d7e52cd5d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 17:18:33 +0000 Subject: select linked and select linked pick working again (wth shift for extend) --- source/blender/editors/uvedit/uvedit_ops.c | 93 +++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 3d58e7f03dc..b592d5a62f1 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -835,15 +835,16 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] MTFace *tf; UvVertMap *vmap; UvMapVert *vlist, *iterv, *startv; - int a, i, nverts, j, stacksize= 0, *stack; + int a, i, nverts, stacksize= 0, *stack; char *flag; - vmap= EM_make_uv_vert_map(em, 1, 1, limit); + EM_init_index_arrays(em, 0, 0, 1); /* we can use this too */ + vmap= EM_make_uv_vert_map(em, 1, 0, limit); if(vmap == NULL) return; - stack= MEM_mallocN(sizeof(*stack)* BLI_countlist(&em->faces), "UvLinkStack"); - flag= MEM_callocN(sizeof(*flag)*BLI_countlist(&em->faces), "UvLinkFlag"); + stack= MEM_mallocN(sizeof(*stack) * em->totface, "UvLinkStack"); + flag= MEM_callocN(sizeof(*flag) * em->totface, "UvLinkFlag"); if(!hit) { for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) { @@ -872,10 +873,8 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] while(stacksize > 0) { stacksize--; a= stack[stacksize]; - - for(j=0, efa= em->faces.first; efa; efa= efa->next, j++) - if(j==a) - break; + + efa = EM_get_face_for_index(a); nverts= efa->v4? 4: 3; @@ -897,14 +896,14 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] break; else if(!flag[iterv->f]) { flag[iterv->f]= 1; - stack[stacksize]= iterv->f;; + stack[stacksize]= iterv->f; stacksize++; } } } } - if(!extend && hit) { + if(!extend) { for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) { tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); if(flag[a]) @@ -913,7 +912,7 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] tf->flag &= ~(TF_SEL1|TF_SEL2|TF_SEL3|TF_SEL4); } } - else if(extend && hit) { + else { for(a=0, efa= em->faces.first; efa; efa= efa->next, a++) { if(flag[a]) { tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); @@ -947,6 +946,7 @@ static void select_linked(Scene *scene, Image *ima, EditMesh *em, float limit[2] MEM_freeN(stack); MEM_freeN(flag); EM_free_uv_vert_map(vmap); + EM_free_index_arrays(); } /* ******************** align operator **************** */ @@ -1814,7 +1814,7 @@ void UV_OT_select_loop(wmOperatorType *ot) /* ******************** linked select operator **************** */ -static int select_linked_exec(bContext *C, wmOperator *op) +static select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, int pick) { SpaceImage *sima= CTX_wm_space_image(C); Scene *scene= CTX_data_scene(C); @@ -1825,6 +1825,8 @@ static int select_linked_exec(bContext *C, wmOperator *op) float limit[2]; int extend; + NearestHit hit, *hit_p= NULL; + if(ts->uv_flag & UV_SYNC_SELECTION) { BKE_report(op->reports, RPT_ERROR, "Can't select linked when sync selection is enabled."); BKE_mesh_end_editmesh(obedit->data, em); @@ -1833,7 +1835,31 @@ static int select_linked_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); uvedit_pixel_to_float(sima, limit, 0.05f); - select_linked(scene, ima, em, limit, NULL, extend); + + if(pick) { + float co[2]; + + if(event) { + /* invoke */ + ARegion *ar= CTX_wm_region(C); + int x, y; + + x= event->x - ar->winrct.xmin; + y= event->y - ar->winrct.ymin; + + UI_view2d_region_to_view(&ar->v2d, x, y, &co[0], &co[1]); + RNA_float_set_array(op->ptr, "location", co); + } + else { + /* exec */ + RNA_float_get_array(op->ptr, "location", co); + } + + find_nearest_uv_vert(scene, ima, em, co, NULL, &hit); + hit_p= &hit; + } + + select_linked(scene, ima, em, limit, hit_p, extend); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); @@ -1842,6 +1868,11 @@ static int select_linked_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int select_linked_exec(bContext *C, wmOperator *op) +{ + return select_linked_internal(C, op, NULL, 0); +} + void UV_OT_select_linked(wmOperatorType *ot) { /* identifiers */ @@ -1859,6 +1890,37 @@ void UV_OT_select_linked(wmOperatorType *ot) "Extend", "Extend selection rather than clearing the existing selection."); } +static int select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + return select_linked_internal(C, op, event, 1); +} + +static int select_linked_pick_exec(bContext *C, wmOperator *op) +{ + return select_linked_internal(C, op, NULL, 1); +} + +void UV_OT_select_linked_pick(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Select Linked Pick"; + ot->description= "Select all UV vertices linked under the mouse."; + ot->idname= "UV_OT_select_linked_pick"; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* api callbacks */ + ot->invoke= select_linked_pick_invoke; + ot->exec= select_linked_pick_exec; + ot->poll= ED_operator_uvedit; + + /* properties */ + RNA_def_boolean(ot->srna, "extend", 0, + "Extend", "Extend selection rather than clearing the existing selection."); + + RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, + "Location", "Mouse location in normalized coordinates, 0.0 to 1.0 is within the image bounds.", -100.0f, 100.0f); +} + /* ******************** unlink selection operator **************** */ static int unlink_selection_exec(bContext *C, wmOperator *op) @@ -3101,6 +3163,7 @@ void ED_operatortypes_uvedit(void) WM_operatortype_append(UV_OT_select); WM_operatortype_append(UV_OT_select_loop); WM_operatortype_append(UV_OT_select_linked); + WM_operatortype_append(UV_OT_select_linked_pick); WM_operatortype_append(UV_OT_unlink_selection); WM_operatortype_append(UV_OT_select_pinned); WM_operatortype_append(UV_OT_select_border); @@ -3151,6 +3214,10 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) /* selection manipulation */ WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "extend", TRUE); + RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE); + WM_keymap_add_item(keymap, "UV_OT_unlink_selection", LKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "UV_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "UV_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); -- cgit v1.2.3 From 8c72e1835416187891cc893b8e573fdf56e4f03d Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 18:39:42 +0000 Subject: BGE: fix bug with rigid body joint constraint target name: skip OB letter. --- source/gameengine/Converter/BL_BlenderDataConversion.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 31616fdec15..4c596055495 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -2572,7 +2572,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie, if (dat->tar) { - KX_GameObject *gotar=getGameOb(dat->tar->id.name,sumolist); + KX_GameObject *gotar=getGameOb(dat->tar->id.name+2,sumolist); if (gotar && gotar->GetPhysicsController()) physctr2 = (PHY_IPhysicsController*) gotar->GetPhysicsController()->GetUserData(); } -- cgit v1.2.3 From d74bbcdd852da9a17a6cf088469ebd3eb2167a9a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Dec 2009 19:01:51 +0000 Subject: select nth (face/edge/vertex) - depending on which was last selected, useful for colapsing every other edge for eg. --- release/scripts/ui/space_view3d.py | 1 + source/blender/editors/include/ED_mesh.h | 2 + source/blender/editors/mesh/editmesh_lib.c | 230 ++++++++++++++++++++++++++++ source/blender/editors/mesh/editmesh_mods.c | 43 ++++++ source/blender/editors/mesh/mesh_intern.h | 1 + source/blender/editors/mesh/mesh_ops.c | 1 + 6 files changed, 278 insertions(+) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 2ec0e44e184..26a018f81cb 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -456,6 +456,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): layout.separator() layout.operator("mesh.select_random", text="Random...") + layout.operator("mesh.select_nth", text="Select Nth...") layout.operator("mesh.edges_select_sharp", text="Sharp Edges") layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces") layout.operator("mesh.faces_select_interior", text="Interior Faces") diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index aab364bf686..174447c0f9f 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -150,6 +150,8 @@ void EM_free_data_layer(struct EditMesh *em, struct CustomData *data, int type) void EM_make_hq_normals(struct EditMesh *em); void EM_solidify(struct EditMesh *em, float dist); +int EM_deselect_nth(struct EditMesh *em, int nth); + /* editmesh_mods.c */ extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs; diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 1b90dbc3902..d99765bd199 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -2447,3 +2447,233 @@ void EM_solidify(EditMesh *em, float dist) MEM_freeN(vert_angles); } + +/* not that optimal!, should be nicer with bmesh */ +static void tag_face_edges(EditFace *efa) +{ + if(efa->v4) + efa->e1->tmp.l= efa->e2->tmp.l= efa->e3->tmp.l= efa->e4->tmp.l= 1; + else + efa->e1->tmp.l= efa->e2->tmp.l= efa->e3->tmp.l= 1; +} +static int tag_face_edges_test(EditFace *efa) +{ + if(efa->v4) + return (efa->e1->tmp.l || efa->e2->tmp.l || efa->e3->tmp.l || efa->e4->tmp.l) ? 1:0; + else + return (efa->e1->tmp.l || efa->e2->tmp.l || efa->e3->tmp.l) ? 1:0; +} + +void em_deselect_nth_face(EditMesh *em, int nth, EditFace *efa_act) +{ + EditFace *efa; + EditEdge *eed; + int ok= 1; + + if(efa_act==NULL) { + return; + } + + /* to detect loose edges, we put f2 flag on 1 */ + for(eed= em->edges.first; eed; eed= eed->next) { + eed->tmp.l= 0; + } + + for (efa= em->faces.first; efa; efa= efa->next) { + efa->tmp.l = 0; + } + + efa_act->tmp.l = 1; + + while(ok) { + ok = 0; + + for (efa= em->faces.first; efa; efa= efa->next) { + if(efa->tmp.l==1) { /* initialize */ + tag_face_edges(efa); + } + + if(efa->tmp.l) + efa->tmp.l++; + } + + for (efa= em->faces.first; efa; efa= efa->next) { + if(efa->tmp.l==0 && tag_face_edges_test(efa)) { + efa->tmp.l= 1; + ok = 1; /* keep looping */ + } + } + } + + for (efa= em->faces.first; efa; efa= efa->next) { + if(efa->tmp.l > 0 && efa->tmp.l % nth) { + EM_select_face(efa, 0); + } + } + for (efa= em->faces.first; efa; efa= efa->next) { + if(efa->f & SELECT) { + EM_select_face(efa, 1); + } + } + + EM_nvertices_selected(em); + EM_nedges_selected(em); + EM_nfaces_selected(em); +} + +/* not that optimal!, should be nicer with bmesh */ +static void tag_edge_verts(EditEdge *eed) +{ + eed->v1->tmp.l= eed->v2->tmp.l= 1; +} +static int tag_edge_verts_test(EditEdge *eed) +{ + return (eed->v1->tmp.l || eed->v2->tmp.l) ? 1:0; +} + +void em_deselect_nth_edge(EditMesh *em, int nth, EditEdge *eed_act) +{ + EditEdge *eed; + EditVert *eve; + int ok= 1; + + if(eed_act==NULL) { + return; + } + + for(eve= em->verts.first; eve; eve= eve->next) { + eve->tmp.l= 0; + } + + for (eed= em->edges.first; eed; eed= eed->next) { + eed->tmp.l = 0; + } + + eed_act->tmp.l = 1; + + while(ok) { + ok = 0; + + for (eed= em->edges.first; eed; eed= eed->next) { + if(eed->tmp.l==1) { /* initialize */ + tag_edge_verts(eed); + } + + if(eed->tmp.l) + eed->tmp.l++; + } + + for (eed= em->edges.first; eed; eed= eed->next) { + if(eed->tmp.l==0 && tag_edge_verts_test(eed)) { + eed->tmp.l= 1; + ok = 1; /* keep looping */ + } + } + } + + for (eed= em->edges.first; eed; eed= eed->next) { + if(eed->tmp.l > 0 && eed->tmp.l % nth) { + EM_select_edge(eed, 0); + } + } + for (eed= em->edges.first; eed; eed= eed->next) { + if(eed->f & SELECT) { + EM_select_edge(eed, 1); + } + } + + { + /* grr, should be a function */ + EditFace *efa; + for (efa= em->faces.first; efa; efa= efa->next) { + if(efa->v4) { + if(efa->e1->f & efa->e2->f & efa->e3->f & efa->e4->f & SELECT ); + else efa->f &= ~SELECT; + } + else { + if(efa->e1->f & efa->e2->f & efa->e3->f & SELECT ); + else efa->f &= ~SELECT; + } + } + } + + EM_nvertices_selected(em); + EM_nedges_selected(em); + EM_nfaces_selected(em); +} + +void em_deselect_nth_vert(EditMesh *em, int nth, EditVert *eve_act) +{ + EditVert *eve; + EditEdge *eed; + int ok= 1; + + if(eve_act==NULL) { + return; + } + + for (eve= em->verts.first; eve; eve= eve->next) { + eve->tmp.l = 0; + } + + eve_act->tmp.l = 1; + + while(ok) { + ok = 0; + + for (eve= em->verts.first; eve; eve= eve->next) { + if(eve->tmp.l) + eve->tmp.l++; + } + + for (eed= em->edges.first; eed; eed= eed->next) { + if(eed->v1->tmp.l==2 && eed->v2->tmp.l==0) { /* initialize */ + eed->v2->tmp.l= 1; + ok = 1; /* keep looping */ + } + else if(eed->v2->tmp.l==2 && eed->v1->tmp.l==0) { /* initialize */ + eed->v1->tmp.l= 1; + ok = 1; /* keep looping */ + } + } + } + + for (eve= em->verts.first; eve; eve= eve->next) { + if(eve->tmp.l > 0 && eve->tmp.l % nth) { + eve->f &= ~SELECT; + } + } + + EM_deselect_flush(em); + + EM_nvertices_selected(em); + // EM_nedges_selected(em); // flush does these + // EM_nfaces_selected(em); // flush does these +} + +int EM_deselect_nth(EditMesh *em, int nth) +{ + EditSelection *ese; + ese = ((EditSelection*)em->selected.last); + if(ese) { + if(ese->type == EDITVERT) { + em_deselect_nth_vert(em, nth, (EditVert*)ese->data); + return 1; + } + + if(ese->type == EDITEDGE) { + em_deselect_nth_edge(em, nth, (EditEdge*)ese->data); + return 1; + } + } + else { + EditFace *efa_act = EM_get_actFace(em, 0); + if(efa_act) { + em_deselect_nth_face(em, nth, efa_act); + return 1; + } + } + + return 0; +} + diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index d1dde75771d..827b28f954b 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -2081,6 +2081,11 @@ static void mouse_mesh_loop(bContext *C, short mval[2], short extend, short ring EM_selectmode_flush(em); // if (EM_texFaceCheck()) + /* sets as active, useful for other tools */ + if(select && em->selectmode & SCE_SELECT_EDGE) { + EM_store_selection(em, eed, EDITEDGE); + } + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); } } @@ -4535,3 +4540,41 @@ void MESH_OT_solidify(wmOperatorType *ot) prop= RNA_def_float(ot->srna, "thickness", 0.01f, -FLT_MAX, FLT_MAX, "thickness", "", -10.0f, 10.0f); RNA_def_property_ui_range(prop, -10, 10, 0.1, 4); } + +static int mesh_select_nth_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); + int nth = RNA_int_get(op->ptr, "nth"); + + if(EM_deselect_nth(em, nth) == 0) { + BKE_report(op->reports, RPT_ERROR, "Mesh has no active vert/edge/face."); + return OPERATOR_CANCELLED; + } + + BKE_mesh_end_editmesh(obedit->data, em); + + DAG_id_flush_update(obedit->data, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + + +void MESH_OT_select_nth(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Select Nth"; + ot->description= ""; + ot->idname= "MESH_OT_select_nth"; + + /* api callbacks */ + ot->exec= mesh_select_nth_exec; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_int(ot->srna, "nth", 2, 2, 100, "Nth Selection", "", 1, INT_MAX); +} + diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 7b7257ae9cb..e8ec85d8bd0 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -164,6 +164,7 @@ void MESH_OT_mark_sharp(struct wmOperatorType *ot); void MESH_OT_vertices_smooth(struct wmOperatorType *ot); void MESH_OT_flip_normals(struct wmOperatorType *ot); void MESH_OT_solidify(struct wmOperatorType *ot); +void MESH_OT_select_nth(struct wmOperatorType *ot); extern EditEdge *findnearestedge(ViewContext *vc, int *dist); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index af25dbda16b..11b5f3a9031 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -152,6 +152,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_loopcut); WM_operatortype_append(MESH_OT_solidify); + WM_operatortype_append(MESH_OT_select_nth); } int ED_operator_editmesh_face_select(bContext *C) -- cgit v1.2.3 From c033bf8957a4a00fa378d1b3d3e951bd8f2e2970 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 19:50:20 +0000 Subject: MSVC project files --- projectfiles_vc9/blender/editors/ED_editors.vcproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj index 0956dd7c388..0602112106d 100644 --- a/projectfiles_vc9/blender/editors/ED_editors.vcproj +++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj @@ -415,6 +415,10 @@ RelativePath="..\..\..\source\blender\editors\interface\interface_layout.c" > + + -- cgit v1.2.3 From 7e498afe330021eb868dcfec8a55b02f2cb5955c Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 19:52:14 +0000 Subject: Bullet: synchronize soft body helpers with current SVN. --- extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp | 15 ++++++++++----- extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.h | 6 ++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp index 4f81b0953a2..61aac5b4ce5 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp +++ b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.cpp @@ -793,7 +793,7 @@ btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,c // btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBodyWorldInfo& worldInfo,const btScalar* vertices, const int* triangles, - int ntriangles) + int ntriangles, bool randomizeConstraints) { int maxidx=0; int i,j,ni; @@ -828,14 +828,16 @@ btSoftBody* btSoftBodyHelpers::CreateFromTriMesh(btSoftBodyWorldInfo& worldInfo #undef IDX psb->appendFace(idx[0],idx[1],idx[2]); } - // don't randomize now, let's give a chance to the application to set face data - //psb->randomizeConstraints(); + if (randomizeConstraints) + { + psb->randomizeConstraints(); + } return(psb); } // btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBodyWorldInfo& worldInfo, const btVector3* vertices, - int nvertices) + int nvertices, bool randomizeConstraints) { HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); HullResult hres; @@ -855,6 +857,9 @@ btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBodyWorldInfo& worldI psb->appendFace(idx[0],idx[1],idx[2]); } hlib.ReleaseResult(hres); - psb->randomizeConstraints(); + if (randomizeConstraints) + { + psb->randomizeConstraints(); + } return(psb); } diff --git a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.h b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.h index 0e3b50397ee..5eb2ebc0735 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.h +++ b/extern/bullet2/src/BulletSoftBody/btSoftBodyHelpers.h @@ -109,11 +109,13 @@ struct btSoftBodyHelpers static btSoftBody* CreateFromTriMesh( btSoftBodyWorldInfo& worldInfo, const btScalar* vertices, const int* triangles, - int ntriangles); + int ntriangles, + bool randomizeConstraints = true); /* Create from convex-hull */ static btSoftBody* CreateFromConvexHull( btSoftBodyWorldInfo& worldInfo, const btVector3* vertices, - int nvertices); + int nvertices, + bool randomizeConstraints = true); }; #endif //SOFT_BODY_HELPERS_H -- cgit v1.2.3 From 1941ef09407701acf24c678d3bf3601506c34812 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 19:53:44 +0000 Subject: BGE: update for new soft body helpers API. --- source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 31078abb164..9caa4b0f3e4 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -232,7 +232,7 @@ bool CcdPhysicsController::CreateSoftbody() PHY_ScalarType indexType; trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris,false); } } else { @@ -249,7 +249,7 @@ bool CcdPhysicsController::CreateSoftbody() PHY_ScalarType indexType; trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris); + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris,false); } } // store face tag so that we can find our original face when doing ray casting -- cgit v1.2.3 From 8cce609a04518fddc79a8e999884501d80e7d65d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 22 Dec 2009 19:56:12 +0000 Subject: Missing angle_v3v3 definition (it was declared) Wrong definition for angle_v2v2 (it read 2d vectors as 3d vectors) --- source/blender/blenlib/intern/math_vector.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 2ce4a069a48..3188587a96c 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -145,6 +145,19 @@ float angle_v3v3v3(float *v1, float *v2, float *v3) return angle_normalized_v3v3(vec1, vec2); } +/* Return the shortest angle in radians between the 2 vectors */ +float angle_v3v3(float *v1, float *v2) +{ + float vec1[3], vec2[3]; + + copy_v3_v3(vec1, v1); + copy_v3_v3(vec2, v2); + normalize_v3(vec1); + normalize_v3(vec2); + + return angle_normalized_v3v3(vec1, vec2); +} + float angle_v2v2v2(float *v1, float *v2, float *v3) { float vec1[2], vec2[2]; @@ -164,14 +177,18 @@ float angle_v2v2v2(float *v1, float *v2, float *v3) /* Return the shortest angle in radians between the 2 vectors */ float angle_v2v2(float *v1, float *v2) { - float vec1[3], vec2[3]; + float vec1[2], vec2[2]; - copy_v3_v3(vec1, v1); - copy_v3_v3(vec2, v2); - normalize_v3(vec1); - normalize_v3(vec2); + vec1[0] = v1[0]; + vec1[1] = v1[1]; - return angle_normalized_v3v3(vec1, vec2); + vec2[0] = v2[0]; + vec2[1] = v2[1]; + + normalize_v2(vec1); + normalize_v2(vec2); + + return angle_normalized_v2v2(vec1, vec2); } float angle_normalized_v3v3(float *v1, float *v2) -- cgit v1.2.3 From c7a471c8c6ed85796f097019d28081f00c2b539a Mon Sep 17 00:00:00 2001 From: Kent Mein Date: Tue, 22 Dec 2009 22:03:57 +0000 Subject: This fixes the following coverity issues: 163 162 161 Basically the function wasn't freeing memory it used before returning. Kent --- intern/opennl/superlu/sgstrf.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/intern/opennl/superlu/sgstrf.c b/intern/opennl/superlu/sgstrf.c index 42f8dc9d0ee..e48cc33b00b 100644 --- a/intern/opennl/superlu/sgstrf.c +++ b/intern/opennl/superlu/sgstrf.c @@ -283,8 +283,12 @@ sgstrf (superlu_options_t *options, SuperMatrix *A, * -------------------------------------- */ /* Determine the union of the row structure of the snode */ if ( (*info = ssnode_dfs(jcol, kcol, asub, xa_begin, xa_end, - xprune, marker, &Glu)) != 0 ) + xprune, marker, &Glu)) != 0 ) { + if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); + SUPERLU_FREE (iperm_c); + SUPERLU_FREE (relax_end); return; + } nextu = xusub[jcol]; nextlu = xlusup[jcol]; @@ -293,8 +297,12 @@ sgstrf (superlu_options_t *options, SuperMatrix *A, new_next = nextlu + (xlsub[fsupc+1]-xlsub[fsupc])*(kcol-jcol+1); nzlumax = Glu.nzlumax; while ( new_next > nzlumax ) { - if ( (*info = sLUMemXpand(jcol, nextlu, LUSUP, &nzlumax, &Glu)) ) - return; + if ( (*info = sLUMemXpand(jcol, nextlu, LUSUP, &nzlumax, &Glu)) ) { + if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); + SUPERLU_FREE (iperm_c); + SUPERLU_FREE (relax_end); + return; + } } for (icol = jcol; icol<= kcol; icol++) { @@ -350,17 +358,31 @@ sgstrf (superlu_options_t *options, SuperMatrix *A, if ((*info = scolumn_dfs(m, jj, perm_r, &nseg, &panel_lsub[k], segrep, &repfnz[k], xprune, marker, - parent, xplore, &Glu)) != 0) return; + parent, xplore, &Glu)) != 0) { + if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); + SUPERLU_FREE (iperm_c); + SUPERLU_FREE (relax_end); + return; + } /* Numeric updates */ if ((*info = scolumn_bmod(jj, (nseg - nseg1), &dense[k], tempv, &segrep[nseg1], &repfnz[k], - jcol, &Glu, stat)) != 0) return; + jcol, &Glu, stat)) != 0) { + if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); + SUPERLU_FREE (iperm_c); + SUPERLU_FREE (relax_end); + return; + } /* Copy the U-segments to ucol[*] */ if ((*info = scopy_to_ucol(jj, nseg, segrep, &repfnz[k], - perm_r, &dense[k], &Glu)) != 0) - return; + perm_r, &dense[k], &Glu)) != 0) { + if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); + SUPERLU_FREE (iperm_c); + SUPERLU_FREE (relax_end); + return; + } if ( (*info = spivotL(jj, diag_pivot_thresh, &usepr, perm_r, iperm_r, iperm_c, &pivrow, &Glu, stat)) ) @@ -429,5 +451,4 @@ sgstrf (superlu_options_t *options, SuperMatrix *A, if ( iperm_r_allocated ) SUPERLU_FREE (iperm_r); SUPERLU_FREE (iperm_c); SUPERLU_FREE (relax_end); - } -- cgit v1.2.3 From 81a7bf2db9beacf664588acddfe458ed216269f8 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 22 Dec 2009 23:38:09 +0000 Subject: BGE: fix more matrix transpose bugs in assignement to game object matrices. Assignment to KX_GameObject localOrientation and worldOrientation matrices was assuming row-major matrix although reading these matrices was returning a column-major MathUtils object. The faulty function (PyMatTo) is fixed and all matrices in python are now assumed column-major. This function is also used in the following methods: BL_Shader.setUniformMatrix4() BL_Shader.setUniformMatrix3() (No change in scripts if you didn't specify the optional transpose parameter: the default value is changed so that column-major matrices are assumed as before.) KX_Camera.projection_matrix (assignement to this attribute now requires a column-major matrix and you must fix your script if you were setting a value to this attribute.) --- source/gameengine/Converter/BL_ActionActuator.cpp | 2 +- source/gameengine/Ketsji/BL_Shader.cpp | 4 ++-- source/gameengine/Ketsji/KX_PyMath.h | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp index 1325c80a6d4..dd051d74944 100644 --- a/source/gameengine/Converter/BL_ActionActuator.cpp +++ b/source/gameengine/Converter/BL_ActionActuator.cpp @@ -525,7 +525,7 @@ KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel, if(!PyMatTo(pymat, mat)) return NULL; - mat.setValue((const float *)matrix); + mat.getValue((float*)matrix); BL_ArmatureObject *obj = (BL_ArmatureObject*)GetParent(); diff --git a/source/gameengine/Ketsji/BL_Shader.cpp b/source/gameengine/Ketsji/BL_Shader.cpp index 35eb5dc124a..55be606378d 100644 --- a/source/gameengine/Ketsji/BL_Shader.cpp +++ b/source/gameengine/Ketsji/BL_Shader.cpp @@ -1276,7 +1276,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4, const char *uniform=""; PyObject *matrix=0; - int transp=1; // MT_ is row major so transpose by default.... + int transp=0; // python use column major by default, so no transpose.... if(!PyArg_ParseTuple(args, "sO|i:setUniformMatrix4",&uniform, &matrix,&transp)) return NULL; @@ -1322,7 +1322,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3, const char *uniform=""; PyObject *matrix=0; - int transp=1; // MT_ is row major so transpose by default.... + int transp=0; // python use column major by default, so no transpose.... if(!PyArg_ParseTuple(args, "sO|i:setUniformMatrix3",&uniform, &matrix,&transp)) return NULL; diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h index 0ad91799983..8e0cce7f4a4 100644 --- a/source/gameengine/Ketsji/KX_PyMath.h +++ b/source/gameengine/Ketsji/KX_PyMath.h @@ -56,7 +56,7 @@ inline unsigned int Size(const MT_Tuple3&) { return 3; } inline unsigned int Size(const MT_Tuple4&) { return 4; } /** - * Converts the given python matrix to an MT class. + * Converts the given python matrix (column-major) to an MT class (row-major). */ template bool PyMatTo(PyObject* pymat, T& mat) @@ -65,30 +65,30 @@ bool PyMatTo(PyObject* pymat, T& mat) mat.setIdentity(); if (PySequence_Check(pymat)) { - unsigned int rows = PySequence_Size(pymat); - if (rows != Size(mat)) + unsigned int cols = PySequence_Size(pymat); + if (cols != Size(mat)) return false; - for (unsigned int y = 0; noerror && y < Size(mat); y++) + for (unsigned int x = 0; noerror && x < cols; x++) { - PyObject *pyrow = PySequence_GetItem(pymat, y); /* new ref */ - if (!PyErr_Occurred() && PySequence_Check(pyrow)) + PyObject *pycol = PySequence_GetItem(pymat, x); /* new ref */ + if (!PyErr_Occurred() && PySequence_Check(pycol)) { - unsigned int cols = PySequence_Size(pyrow); - if (cols != Size(mat)) + unsigned int rows = PySequence_Size(pycol); + if (rows != Size(mat)) noerror = false; else { - for( unsigned int x = 0; x < Size(mat); x++) + for( unsigned int y = 0; y < rows; y++) { - PyObject *item = PySequence_GetItem(pyrow, x); /* new ref */ + PyObject *item = PySequence_GetItem(pycol, y); /* new ref */ mat[y][x] = PyFloat_AsDouble(item); Py_DECREF(item); } } } else noerror = false; - Py_DECREF(pyrow); + Py_DECREF(pycol); } } else noerror = false; -- cgit v1.2.3 From 21e2d9b85a9a1dbd0f0faa6aad61c77ac8c4f48f Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Wed, 23 Dec 2009 09:55:34 +0000 Subject: BGE: fix more transpose bug when MathUtils is not used. --- source/gameengine/Expressions/PyObjectPlus.cpp | 10 ++++---- source/gameengine/Ketsji/KX_PyMath.cpp | 34 +++++++++++++------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index 903ac70c27a..024d155fec4 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -421,18 +421,18 @@ PyObject *PyObjectPlus::py_get_attrdef(PyObject *self_py, const PyAttributeDef * #ifdef USE_MATHUTILS return newMatrixObject(val, attrdef->m_imin, attrdef->m_imax, Py_WRAP, NULL); #else - PyObject* rowlist = PyList_New(attrdef->m_imin); + PyObject* collist = PyList_New(attrdef->m_imin); for (unsigned int i=0; im_imin; i++) { - PyObject* collist = PyList_New(attrdef->m_imax); + PyObject* col = PyList_New(attrdef->m_imax); for (unsigned int j=0; jm_imax; j++) { - PyList_SET_ITEM(collist,j,PyFloat_FromDouble(val[j])); + PyList_SET_ITEM(col,j,PyFloat_FromDouble(val[j])); } - PyList_SET_ITEM(rowlist,i,collist); + PyList_SET_ITEM(collist,i,col); val += attrdef->m_imax; } - return rowlist; + return collist; #endif } } diff --git a/source/gameengine/Ketsji/KX_PyMath.cpp b/source/gameengine/Ketsji/KX_PyMath.cpp index aef29286f4e..5f4bd582d21 100644 --- a/source/gameengine/Ketsji/KX_PyMath.cpp +++ b/source/gameengine/Ketsji/KX_PyMath.cpp @@ -103,20 +103,20 @@ PyObject* PyObjectFrom(const MT_Matrix4x4 &mat) mat.getValue(fmat); return newMatrixObject(fmat, 4, 4, Py_NEW, NULL); #else - PyObject *list = PyList_New(4); - PyObject *sublist; + PyObject *collist = PyList_New(4); + PyObject *col; int i; for(i=0; i < 4; i++) { - sublist = PyList_New(4); - PyList_SET_ITEM(sublist, 0, PyFloat_FromDouble(mat[i][0])); - PyList_SET_ITEM(sublist, 1, PyFloat_FromDouble(mat[i][1])); - PyList_SET_ITEM(sublist, 2, PyFloat_FromDouble(mat[i][2])); - PyList_SET_ITEM(sublist, 3, PyFloat_FromDouble(mat[i][3])); - PyList_SET_ITEM(list, i, sublist); + col = PyList_New(4); + PyList_SET_ITEM(col, 0, PyFloat_FromDouble(mat[0][i])); + PyList_SET_ITEM(col, 1, PyFloat_FromDouble(mat[1][i])); + PyList_SET_ITEM(col, 2, PyFloat_FromDouble(mat[2][i])); + PyList_SET_ITEM(col, 3, PyFloat_FromDouble(mat[3][i])); + PyList_SET_ITEM(collist, i, col); } - return list; + return collist; #endif } @@ -127,19 +127,19 @@ PyObject* PyObjectFrom(const MT_Matrix3x3 &mat) mat.getValue3x3(fmat); return newMatrixObject(fmat, 3, 3, Py_NEW, NULL); #else - PyObject *list = PyList_New(3); - PyObject *sublist; + PyObject *collist = PyList_New(3); + PyObject *col; int i; for(i=0; i < 3; i++) { - sublist = PyList_New(3); - PyList_SET_ITEM(sublist, 0, PyFloat_FromDouble(mat[i][0])); - PyList_SET_ITEM(sublist, 1, PyFloat_FromDouble(mat[i][1])); - PyList_SET_ITEM(sublist, 2, PyFloat_FromDouble(mat[i][2])); - PyList_SET_ITEM(list, i, sublist); + col = PyList_New(3); + PyList_SET_ITEM(col, 0, PyFloat_FromDouble(mat[0][i])); + PyList_SET_ITEM(col, 1, PyFloat_FromDouble(mat[1][i])); + PyList_SET_ITEM(col, 2, PyFloat_FromDouble(mat[2][i])); + PyList_SET_ITEM(collist, i, col); } - return list; + return collist; #endif } -- cgit v1.2.3 From da5025d46d6ba3a8cb723f63de20054de06f285a Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 23 Dec 2009 11:22:30 +0000 Subject: Bugfix #20463: In graph editor bone channels cannot be selected with 'A' or 'B' border select This bug was caused by my recent commit to get bone select -> selection syncing working. The selection flushing was occurring too readily, blocking any selection tools from having any visible effect. Now this syncing is only triggered when appropriate notifiers+flags have been set. --- source/blender/editors/space_action/space_action.c | 27 ++++++++++++----- source/blender/editors/space_graph/space_graph.c | 35 ++++++++++++++-------- source/blender/makesdna/DNA_action_types.h | 2 ++ source/blender/makesdna/DNA_anim_types.h | 1 + source/blender/makesdna/DNA_space_types.h | 13 ++++++++ 5 files changed, 59 insertions(+), 19 deletions(-) diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 1bc300395ca..6a53e565e75 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -45,6 +45,7 @@ #include "BKE_colortools.h" #include "BKE_context.h" #include "BKE_screen.h" +#include "BKE_utildefines.h" #include "ED_space_api.h" #include "ED_screen.h" @@ -353,15 +354,22 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) /* editor level listener */ static void action_listener(ScrArea *sa, wmNotifier *wmn) { + SpaceAction *saction= (SpaceAction *)sa->spacedata.first; + /* context changes */ switch (wmn->category) { case NC_ANIMATION: - ED_area_tag_redraw(sa); + /* 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)) + ED_area_tag_redraw(sa); + else + ED_area_tag_refresh(sa); break; case NC_SCENE: switch (wmn->data) { - case ND_OB_ACTIVE: /* selection changed, so force refresh to flush */ + case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_OB_SELECT: + saction->flag |= SACTION_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; @@ -372,8 +380,9 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_OBJECT: switch (wmn->data) { - case ND_BONE_SELECT: /* selection changed, so force refresh to flush */ + case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_BONE_ACTIVE: + saction->flag |= SACTION_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; @@ -391,11 +400,15 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) static void action_refresh(const bContext *C, ScrArea *sa) { - //SpaceAction *saction= CTX_wm_space_action(C); + SpaceAction *saction= CTX_wm_space_action(C); - /* update the state of the animchannels in response to changes from the data they represent */ - // TODO: check if we don't want this to happen - ANIM_sync_animchannels_to_data(C); + /* update the state of the animchannels in response to changes from the data they represent + * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled + */ + if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) { + ANIM_sync_animchannels_to_data(C); + saction->flag &= ~SACTION_TEMP_NEEDCHANSYNC; + } /* region updates? */ // XXX resizing y-extents of tot should go here? diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 8902f4df314..8111ee8f779 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -431,18 +431,22 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) /* editor level listener */ static void graph_listener(ScrArea *sa, wmNotifier *wmn) { + SpaceIpo *sipo= (SpaceIpo *)sa->spacedata.first; + /* context changes */ switch (wmn->category) { case NC_ANIMATION: - /* unlike for DopeSheet, we want refresh not redraw here, - * since F-Curve colors may need setting - */ - ED_area_tag_refresh(sa); + /* 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)) + ED_area_tag_redraw(sa); + else + ED_area_tag_refresh(sa); break; case NC_SCENE: switch (wmn->data) { - case ND_OB_ACTIVE: /* selection changed, so force refresh to flush */ + case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_OB_SELECT: + sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; @@ -453,8 +457,9 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_OBJECT: switch (wmn->data) { - case ND_BONE_SELECT: /* selection changed, so force refresh to flush */ + case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_BONE_ACTIVE: + sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; @@ -467,9 +472,11 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) if(wmn->data == ND_SPACE_GRAPH) ED_area_tag_redraw(sa); break; - default: - if(wmn->data==ND_KEYS) - ED_area_tag_refresh(sa); + + // XXX: restore the case below if not enough updates occur... + //default: + // if(wmn->data==ND_KEYS) + // ED_area_tag_redraw(sa); } } @@ -498,9 +505,13 @@ static void graph_refresh(const bContext *C, ScrArea *sa) /* region updates? */ // XXX resizing y-extents of tot should go here? - /* update the state of the animchannels in response to changes from the data they represent */ - // TODO: check if we don't want this to happen - ANIM_sync_animchannels_to_data(C); + /* update the state of the animchannels in response to changes from the data they represent + * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled + */ + if (sipo->flag & SIPO_TEMP_NEEDCHANSYNC) { + ANIM_sync_animchannels_to_data(C); + sipo->flag &= ~SIPO_TEMP_NEEDCHANSYNC; + } /* init/adjust F-Curve colors */ if (ANIM_animdata_get_context(C, &ac)) { diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 0dc24f31a7b..ee6af076f59 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -503,6 +503,8 @@ typedef enum eSAction_Flag { SACTION_NODRAWGCOLORS = (1<<7), /* don't draw current frame number beside frame indicator */ SACTION_NODRAWCFRANUM = (1<<8), + /* temporary flag to force channel selections to be synced with main */ + SACTION_TEMP_NEEDCHANSYNC = (1<<9), } eSAction_Flag; /* SpaceAction Mode Settings */ diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index 6a9700a5573..31d50e03cce 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -659,6 +659,7 @@ typedef enum eKSP_TemplateTypes { KSP_TEMPLATE_PCHAN = (1<<1), /* #pch - selected posechannel */ KSP_TEMPLATE_CONSTRAINT = (1<<2), /* #con - active only */ KSP_TEMPLATE_NODE = (1<<3), /* #nod - selected node */ + KSP_TEMPLATE_MODIFIER = (1<<4), /* #mod - active only */ KSP_TEMPLATE_ROT = (1<<16), /* modify rotation paths based on rotation mode of Object or Pose Channel */ } eKSP_TemplateTypes; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index e02d719470f..72d57df555c 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -720,16 +720,29 @@ enum FileSortTypeE { #define SI_COLOR_CORRECTION 1<<24 /* SpaceIpo->flag (Graph Editor Settings) */ + /* OLD DEPRECEATED SETTING */ #define SIPO_LOCK_VIEW (1<<0) + /* don't merge keyframes on the same frame after a transform */ #define SIPO_NOTRANSKEYCULL (1<<1) + /* don't show any keyframe handles at all */ #define SIPO_NOHANDLES (1<<2) + /* don't show current frame number beside indicator line */ #define SIPO_NODRAWCFRANUM (1<<3) + /* show timing in seconds instead of frames */ #define SIPO_DRAWTIME (1<<4) + /* only show keyframes for selected F-Curves */ #define SIPO_SELCUVERTSONLY (1<<5) + /* draw names of F-Curves beside the respective curves */ + /* NOTE: currently not used */ #define SIPO_DRAWNAMES (1<<6) + /* show sliders in channels list */ #define SIPO_SLIDERS (1<<7) + /* don't show the horizontal component of the cursor */ #define SIPO_NODRAWCURSOR (1<<8) + /* only show handles of selected keyframes */ #define SIPO_SELVHANDLESONLY (1<<9) + /* temporary flag to force channel selections to be synced with main */ +#define SIPO_TEMP_NEEDCHANSYNC (1<<10) /* SpaceIpo->mode (Graph Editor Mode) */ enum { -- cgit v1.2.3 From 489ff11f2bcf327084e8241f14b376ae50cbb583 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 23 Dec 2009 11:49:07 +0000 Subject: Fix compilation of carbon quicktime & complete use of report mechanism instead of standard printf --- source/blender/quicktime/apple/quicktime_export.c | 29 ++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index 0475cd6e1d8..abce6c08395 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -175,13 +175,12 @@ int quicktime_codecType_from_rnatmpvalue(int rnatmpvalue) { static void CheckError(OSErr err, char *msg, ReportList *reports) { if(err != noErr) { - printf("%s: %d\n", msg, err); BKE_reportf(reports, RPT_ERROR, "%s: %d", msg, err); } } -static OSErr QT_SaveCodecSettingsToScene(RenderData *rd) +static OSErr QT_SaveCodecSettingsToScene(RenderData *rd, ReportList *reports) { QTAtomContainer myContainer = NULL; ComponentResult myErr = noErr; @@ -207,7 +206,7 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd) // retreive codecdata from quicktime in a atomcontainer myErr = SCGetSettingsAsAtomContainer(qtdata->theComponent, &myContainer); if (myErr != noErr) { - printf("Quicktime: SCGetSettingsAsAtomContainer failed\n"); + BKE_reportf(reports, RPT_ERROR, "Quicktime: SCGetSettingsAsAtomContainer failed\n"); goto bail; } @@ -226,7 +225,7 @@ static OSErr QT_SaveCodecSettingsToScene(RenderData *rd) GetCodecInfo (&ci, qtdata->gSpatialSettings.codecType, 0); } else { - printf("Quicktime: QT_SaveCodecSettingsToScene failed\n"); + BKE_reportf(reports, RPT_ERROR, "Quicktime: QT_SaveCodecSettingsToScene failed\n"); } QTUnlockContainer(myContainer); @@ -239,7 +238,7 @@ bail: } -static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) +static OSErr QT_GetCodecSettingsFromScene(RenderData *rd, ReportList *reports) { Handle myHandle = NULL; ComponentResult myErr = noErr; @@ -256,7 +255,7 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) if(qcd->cdParms && qcd->cdSize) { myErr = SCSetSettingsFromAtomContainer((GraphicsExportComponent)qtdata->theComponent, (QTAtomContainer)myHandle); if (myErr != noErr) { - printf("Quicktime: SCSetSettingsFromAtomContainer failed\n"); + BKE_reportf(reports, RPT_ERROR, "Quicktime: SCSetSettingsFromAtomContainer failed\n"); goto bail; } @@ -282,7 +281,7 @@ static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) //Frame duration is already known (qtdata->aDataRateSetting.frameDuration) } else { - printf("Quicktime: QT_GetCodecSettingsFromScene failed\n"); + BKE_reportf(reports, RPT_ERROR, "Quicktime: QT_GetCodecSettingsFromScene failed\n"); } bail: if (myHandle != NULL) @@ -401,7 +400,7 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i gTemporalSettings = qtdata->gTemporalSettings; if(qtdata->gSpatialSettings.codecType == kH264CodecType) { if(gTemporalSettings.temporalQuality != codecMinQuality) { - fprintf(stderr, "Only minimum quality compression supported for QuickTime H.264.\n"); + BKE_reportf(reports, RPT_WARNING, "Only minimum quality compression supported for QuickTime H.264.\n"); gTemporalSettings.temporalQuality = codecMinQuality; } } @@ -469,8 +468,6 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int syncFlag, NULL); CheckError(err, "AddMediaSample error", reports); - - printf ("added frame %3d (frame %3d in movie): ", frame, frame-sframe); } @@ -550,7 +547,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R /* hack: create an empty file to make FSPathMakeRef() happy */ myFile = open(theFullPath, O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRUSR|S_IWUSR); if (myFile < 0) { - printf("error while creating file!\n"); + BKE_reportf(reports, RPT_ERROR, "error while creating movie file!\n"); /* do something? */ } close(myFile); @@ -584,7 +581,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R ExitMoviesOnThread(); #endif } else { - printf("Created QuickTime movie: %s\n", name); + //printf("Created QuickTime movie: %s\n", name); QT_CreateMyVideoTrack(rectx, recty, reports); } @@ -619,7 +616,7 @@ void end_qt(void) { DisposeMovie(qtexport->theMovie); - printf("Finished QuickTime movie.\n"); + //printf("Finished QuickTime movie.\n"); } ExitMoviesOnThread(); @@ -708,7 +705,7 @@ int get_qtcodec_settings(RenderData *rd, ReportList *reports) // get previous selected codecsetting, from qtatom or detailed settings if(rd->qtcodecdata && rd->qtcodecdata->cdParms) { - QT_GetCodecSettingsFromScene(rd); + QT_GetCodecSettingsFromScene(rd, reports); } else { SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); @@ -759,7 +756,7 @@ static int request_qtcodec_settings(bContext *C, wmOperator *op) // get previous selected codecsetting, from qtatom or detailed settings if(rd->qtcodecdata && rd->qtcodecdata->cdParms) { - QT_GetCodecSettingsFromScene(rd); + QT_GetCodecSettingsFromScene(rd, op->reports); } else { SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); @@ -813,7 +810,7 @@ static int request_qtcodec_settings(bContext *C, wmOperator *op) rd->qtcodecsettings.minTemporalQuality = (qtdata->aDataRateSetting.minTemporalQuality * 100) / codecLosslessQuality; //Frame duration is already known (qtdata->aDataRateSetting.frameDuration) - QT_SaveCodecSettingsToScene(rd); + QT_SaveCodecSettingsToScene(rd, op->reports); // framerate jugglin' if(qtdata->gTemporalSettings.frameRate == 1571553) { // 23.98 fps -- cgit v1.2.3 From bb094b8655bac5dcee1b9728891d1e49bb18557e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Dec 2009 12:13:48 +0000 Subject: key shortcits for sculpt back - T was 'Flatten Brush', now Shift+T - added an option to OBJECT_OT_subdivision_set to set the level relatively (so page up/down works), however RNA lets it set one level higher then the maximum, this seems displays OK in the 3D view so not sure whats going on here (as if there is always an extra hidden multires level). --- release/scripts/op/object.py | 34 +++++++++++++----- source/blender/editors/object/object_ops.c | 8 ++--- source/blender/editors/sculpt_paint/paint_ops.c | 45 +++++++++++++++++++++++- source/blender/editors/transform/transform_ops.c | 4 +-- 4 files changed, 76 insertions(+), 15 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 2ecd7b31b34..228d8566f77 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -84,7 +84,9 @@ class SubdivisionSet(bpy.types.Operator): bl_undo = True level = IntProperty(name="Level", - default=1, min=0, max=100, soft_min=0, soft_max=6) + default=1, min=-100, max=100, soft_min=-6, soft_max=6) + + relative = BoolProperty(name="Relative", description="Apply the subsurf level as an offset relative to the current level", default=False) def poll(self, context): obs = context.selected_editable_objects @@ -92,19 +94,35 @@ class SubdivisionSet(bpy.types.Operator): def execute(self, context): level = self.properties.level + relative = self.properties.relative + + if relative and level == 0: + return ('CANCELLED',) # nothing to do def set_object_subd(obj): for mod in obj.modifiers: if mod.type == 'MULTIRES': - if level < mod.total_levels: - if obj.mode == 'SCULPT' and mod.sculpt_levels != level: - mod.sculpt_levels = level - elif obj.mode == 'OBJECT' and mod.levels != level: - mod.levels = level + if level <= mod.total_levels: + if obj.mode == 'SCULPT': + if relative: + mod.sculpt_levels += level + else: + if mod.sculpt_levels != level: + mod.sculpt_levels = level + elif obj.mode == 'OBJECT': + if relative: + mod.levels += level + else: + if mod.levels != level: + mod.levels = level return elif mod.type == 'SUBSURF': - if mod.levels != level: - mod.levels = level + if relative: + mod.levels += level + else: + if mod.levels != level: + mod.levels = level + return # adda new modifier diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index bd43e9c24c4..7b11bc58950 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -317,7 +317,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); - for(i=1; i<=5; i++) { + for(i=0; i<=5; i++) { kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0); RNA_int_set(kmi->ptr, "level", i); } @@ -342,15 +342,15 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym if(do_pet) { /* context ops */ km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing_falloff"); + RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing_falloff"); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0); - RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing"); + RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing"); RNA_string_set(km->ptr, "value_1", "DISABLED"); RNA_string_set(km->ptr, "value_2", "ENABLED"); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing"); + RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing"); RNA_string_set(km->ptr, "value_1", "DISABLED"); RNA_string_set(km->ptr, "value_2", "CONNECTED"); } diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index a54c2b71ee7..b87d229545e 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -179,6 +179,7 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) void ED_keymap_paint(wmKeyConfig *keyconf) { wmKeyMap *keymap; + wmKeyMapItem *kmi; int i; /* Sculpt mode */ @@ -194,9 +195,51 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index"); - for(i=1; i<=5; i++) + 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); + /* multires switch */ + kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEUPKEY, KM_PRESS, 0, 0); + RNA_int_set(kmi->ptr, "level", 1); + RNA_boolean_set(kmi->ptr, "relative", 1); + + kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEDOWNKEY, KM_PRESS, 0, 0); + RNA_int_set(kmi->ptr, "level", -1); + RNA_boolean_set(kmi->ptr, "relative", 1); + + /* toggles */ + 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"); + + 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"); + + /* 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.brush.sculpt_tool"); + 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.brush.sculpt_tool"); + 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.brush.sculpt_tool"); + 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.brush.sculpt_tool"); + 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.brush.sculpt_tool"); + 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.brush.sculpt_tool"); + RNA_string_set(kmi->ptr, "value", "FLATTEN"); + + /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); keymap->poll= vertex_paint_poll; diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 63218369a90..4c118aa2625 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -825,7 +825,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", "scene.tool_settings.snap"); + RNA_string_set(km->ptr, "path", "tool_settings.snap"); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0); @@ -902,7 +902,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", "scene.tool_settings.snap"); + RNA_string_set(km->ptr, "path", "tool_settings.snap"); break; default: break; -- cgit v1.2.3 From 6c1bbcd8a2a617b04d053f7f4444b2613a720aa0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Dec 2009 15:06:47 +0000 Subject: fix for a crash when running blender in debug mode (-d arg), was registering every operator in debug mode. added some more sculpt key shortcuts * R toggles rake * Shift+A toggles airbrush note: last commit added Ctrl+0 to set zero subsurf and multires --- source/blender/editors/sculpt_paint/paint_ops.c | 6 ++++++ .../blender/windowmanager/intern/wm_event_system.c | 24 +++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index b87d229545e..5cfda009514 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -214,6 +214,12 @@ void ED_keymap_paint(wmKeyConfig *keyconf) 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"); + 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"); + + 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"); + /* 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.brush.sculpt_tool"); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 6b0368fbf8a..825d8cbcf8c 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -316,7 +316,13 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat) ED_undo_push_op(C, op); if(repeat==0) { - if((op->type->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG)) + if(G.f & G_DEBUG) { + char *buf = WM_operator_pystring(C, op->type, op->ptr, 1); + BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf); + MEM_freeN(buf); + } + + if((op->type->flag & OPTYPE_REGISTER)) wm_operator_register(C, op); else WM_operator_free(op); @@ -450,7 +456,13 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P if(ot->flag & OPTYPE_UNDO) ED_undo_push_op(C, op); - if((ot->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG)) + if(G.f & G_DEBUG) { + char *buf = WM_operator_pystring(C, op->type, op->ptr, 1); + BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf); + MEM_freeN(buf); + } + + if((ot->flag & OPTYPE_REGISTER)) wm_operator_register(C, op); else WM_operator_free(op); @@ -899,7 +911,13 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand if(ot->flag & OPTYPE_UNDO) ED_undo_push_op(C, op); - if((ot->flag & OPTYPE_REGISTER) || (G.f & G_DEBUG)) + if(G.f & G_DEBUG) { + char *buf = WM_operator_pystring(C, op->type, op->ptr, 1); + BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf); + MEM_freeN(buf); + } + + if((ot->flag & OPTYPE_REGISTER)) wm_operator_register(C, op); else WM_operator_free(op); -- cgit v1.2.3 From 4aa15ee9f2799e6d39150ec9918bbcb015f7eea0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Dec 2009 15:51:39 +0000 Subject: crash fix for sculpt when loading some files --- release/scripts/ui/space_view3d_toolbar.py | 2 +- source/blender/editors/space_view3d/drawobject.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index ca8978eecf8..15902215d84 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -690,7 +690,7 @@ class VIEW3D_PT_sculpt_options(PaintPanel): bl_label = "Options" def poll(self, context): - return context.sculpt_object + return (context.sculpt_object and context.tool_settings.sculpt) def draw(self, context): layout = self.layout diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index edb91f2b0c9..8060514accd 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2796,6 +2796,8 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } } else if(dt==OB_SOLID) { + Paint *p; + if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) draw_mesh_object_outline(v3d, ob, dm); @@ -2804,8 +2806,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D glEnable(GL_LIGHTING); glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); - if(ob->sculpt) { - Paint *p = paint_get_active(scene); + if(ob->sculpt && (p=paint_get_active(scene))) { float planes[4][4]; float (*fpl)[4] = NULL; int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING); -- cgit v1.2.3 From e1f38245476fdfdb8eae03b895fb2469ac0df0ee Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 23 Dec 2009 15:56:00 +0000 Subject: OSX / Scons : set MACOSX_DEPLOYMENT_TARGET env var to allow builds for older systems --- config/darwin-config.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/darwin-config.py b/config/darwin-config.py index 049fe62f3b0..a2ce9c3331a 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -47,18 +47,21 @@ if MACOSX_ARCHITECTURE == 'ppc': # CC = 'gcc-3.3' # CXX = 'g++-3.3' MAC_MIN_VERS = '10.4' + MACOSX_DEPLOYMENT_TARGET = '10.4' MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk' LCGDIR = '#../lib/darwin-8.0.0-powerpc' CC = 'gcc-4.0' CXX = 'g++-4.0' elif MACOSX_ARCHITECTURE == 'i386': MAC_MIN_VERS = '10.4' + MACOSX_DEPLOYMENT_TARGET = '10.4' MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk' LCGDIR = '#../lib/darwin-8.x.i386' CC = 'gcc-4.0' CXX = 'g++-4.0' else : MAC_MIN_VERS = '10.5' + MACOSX_DEPLOYMENT_TARGET = '10.5' MACOSX_SDK='/Developer/SDKs/MacOSX10.5.sdk' LCGDIR = '#../lib/darwin-9.x.universal' CC = 'gcc-4.2' -- cgit v1.2.3 From 980e97923b5c00805f2698e84d7db92f0ded5458 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 24 Dec 2009 09:26:06 +0000 Subject: Key map related things: * Moved 'change shortcut' (previously directly RMB on menu items) to a context-menu item, and added Remove Shortcut and Add Shortcut. This is all available now in a RMB context menu for operator buttons and menu entries. * Renamed a bunch of key maps to be consistent with UI names, and human-readable. Since these key map names are now being directly used in the UI for people to find things, they should be understandable and in plain language. This renaming may break some older saved key map setups - though previously saved .b25.blends should convert over ok. Exported .py files may need some find/replacing - in this commit check the changes in resources.c to see what's changed. --- release/scripts/ui/space_userpref.py | 92 ++++----- .../blender/editors/animation/anim_channels_edit.c | 2 +- source/blender/editors/include/UI_interface.h | 1 + source/blender/editors/interface/interface.c | 19 +- .../blender/editors/interface/interface_handlers.c | 208 ++++++++++++++------- .../blender/editors/interface/interface_intern.h | 3 +- .../blender/editors/interface/interface_layout.c | 15 +- source/blender/editors/interface/resources.c | 42 +++++ source/blender/editors/mesh/mesh_ops.c | 2 +- source/blender/editors/space_action/action_ops.c | 2 +- source/blender/editors/space_action/space_action.c | 4 +- .../blender/editors/space_buttons/space_buttons.c | 4 +- source/blender/editors/space_file/space_file.c | 16 +- source/blender/editors/space_graph/graph_ops.c | 4 +- source/blender/editors/space_graph/space_graph.c | 10 +- source/blender/editors/space_image/space_image.c | 2 +- source/blender/editors/space_logic/space_logic.c | 6 +- source/blender/editors/space_nla/nla_ops.c | 2 +- source/blender/editors/space_nla/space_nla.c | 2 +- source/blender/editors/space_node/node_ops.c | 2 +- source/blender/editors/space_node/space_node.c | 2 +- source/blender/editors/space_time/space_time.c | 2 +- source/blender/editors/space_time/time_ops.c | 2 +- source/blender/editors/space_view3d/space_view3d.c | 14 +- source/blender/editors/space_view3d/view3d_ops.c | 4 +- source/blender/editors/uvedit/uvedit_ops.c | 2 +- source/blender/windowmanager/WM_api.h | 9 +- source/blender/windowmanager/intern/wm_keymap.c | 194 +++++++++++++++++-- 28 files changed, 482 insertions(+), 185 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index e33ac91435d..81f61b3c78c 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -21,71 +21,79 @@ import bpy KM_HIERARCHY = [ ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit - ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners - ('Screen', 'EMPTY', 'WINDOW', []), # full screen, undo, screenshot + ('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot + ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners + ]), ('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region) - ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region) + ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation ('Header', 'EMPTY', 'WINDOW', []), # header stuff (per region) - ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region) - ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) ('Grease Pencil', 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region) - - ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation - ('Animation_Channels', 'EMPTY', 'WINDOW', []), - - ('Buttons Generic', 'PROPERTIES', 'WINDOW', []), # align context menu - ('TimeLine', 'TIMELINE', 'WINDOW', []), - ('Outliner', 'OUTLINER', 'WINDOW', []), - - ('View3D', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) - ('Pose', 'EMPTY', 'WINDOW', []), + + ('3D View', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) ('Object Mode', 'EMPTY', 'WINDOW', []), - ('Vertex Paint', 'EMPTY', 'WINDOW', []), - ('Weight Paint', 'EMPTY', 'WINDOW', []), - ('Face Mask', 'EMPTY', 'WINDOW', []), - ('Sculpt', 'EMPTY', 'WINDOW', []), - ('EditMesh', 'EMPTY', 'WINDOW', []), + ('Mesh', 'EMPTY', 'WINDOW', []), ('Curve', 'EMPTY', 'WINDOW', []), ('Armature', 'EMPTY', 'WINDOW', []), ('Metaball', 'EMPTY', 'WINDOW', []), ('Lattice', 'EMPTY', 'WINDOW', []), - ('Armature_Sketch', 'EMPTY', 'WINDOW', []), - ('Particle', 'EMPTY', 'WINDOW', []), ('Font', 'EMPTY', 'WINDOW', []), - ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change + + ('Pose', 'EMPTY', 'WINDOW', []), + + ('Vertex Paint', 'EMPTY', 'WINDOW', []), + ('Weight Paint', 'EMPTY', 'WINDOW', []), + ('Face Mask', 'EMPTY', 'WINDOW', []), ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d - ('View3D Generic', 'VIEW_3D', 'WINDOW', []) # toolbar and properties + ('Sculpt', 'EMPTY', 'WINDOW', []), + + ('Armature Sketch', 'EMPTY', 'WINDOW', []), + ('Particle', 'EMPTY', 'WINDOW', []), + + ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change + + ('3D View Generic', 'VIEW_3D', 'WINDOW', []) # toolbar and properties + ]), + + ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region) + ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region) + ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) + ('Animation Channels', 'EMPTY', 'WINDOW', []), + ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [ + ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []) ]), - ('GraphEdit Keys', 'GRAPH_EDITOR', 'WINDOW', [ - ('GraphEdit Generic', 'GRAPH_EDITOR', 'WINDOW', []) + ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', []), + ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [ + ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []), + ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []) ]), ('Image', 'IMAGE_EDITOR', 'WINDOW', [ - ('UVEdit', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image + ('UV Editor', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []) ]), - - ('Node Generic', 'NODE_EDITOR', 'WINDOW', [ - ('Node', 'NODE_EDITOR', 'WINDOW', []) - ]), - ('File', 'FILE_BROWSER', 'WINDOW', [ - ('FileMain', 'FILE_BROWSER', 'WINDOW', []), - ('FileButtons', 'FILE_BROWSER', 'WINDOW', []) + + ('Timeline', 'TIMELINE', 'WINDOW', []), + ('Outliner', 'OUTLINER', 'WINDOW', []), + + ('Node Editor', 'NODE_EDITOR', 'WINDOW', [ + ('Node Generic', 'NODE_EDITOR', 'WINDOW', []) ]), - ('Action_Keys', 'DOPESHEET_EDITOR', 'WINDOW', []), - ('NLA Generic', 'NLA_EDITOR', 'WINDOW', [ - ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []), - ('NLA Data', 'NLA_EDITOR', 'WINDOW', []) + ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), + ('Logic Editor', 'LOGIC_EDITOR', 'WINDOW', []), + + ('File Browser', 'FILE_BROWSER', 'WINDOW', [ + ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []), + ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []) ]), + + ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu + ('Script', 'SCRIPTS_WINDOW', 'WINDOW', []), ('Text', 'TEXT_EDITOR', 'WINDOW', []), - ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), - ('Logic Generic', 'LOGIC_EDITOR', 'WINDOW', []), ('Console', 'CONSOLE', 'WINDOW', []), - - + ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []), ('Gesture Border', 'EMPTY', 'WINDOW', []), ('Standard Modal Map', 'EMPTY', 'WINDOW', []), diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index c919b164a05..0c77c2b0010 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -1901,7 +1901,7 @@ void ED_operatortypes_animchannels(void) void ED_keymap_animchannels(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_find(keyconf, "Animation_Channels", 0, 0); + wmKeyMap *keymap = WM_keymap_find(keyconf, "Animation Channels", 0, 0); /* selection */ /* click-select */ diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 313791e28cb..2af7fe09509 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -592,6 +592,7 @@ void UI_exit(void); #define UI_ITEM_R_EVENT 32 #define UI_ITEM_R_FULL_EVENT 64 #define UI_ITEM_R_NO_BG 128 +#define UI_ITEM_R_IMMEDIATE 256 uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int size, int em, struct uiStyle *style); void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout); diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index f0d09c505ac..88b9c7819fd 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1995,23 +1995,18 @@ void ui_check_but(uiBut *but) case HOTKEYEVT: if (but->flag & UI_SELECT) { - short *sp= (short *)but->func_arg3; + strncpy(but->drawstr, "", UI_MAX_DRAW_STR); - if(but->flag & UI_BUT_IMMEDIATE) - strncpy(but->drawstr, but->str, UI_MAX_DRAW_STR); - else - strncpy(but->drawstr, "", UI_MAX_DRAW_STR); - - if(*sp) { + if(but->modifier_key) { char *str= but->drawstr; - if(*sp & KM_SHIFT) + if(but->modifier_key & KM_SHIFT) str= strcat(str, "Shift "); - if(*sp & KM_CTRL) + if(but->modifier_key & KM_CTRL) str= strcat(str, "Ctrl "); - if(*sp & KM_ALT) + if(but->modifier_key & KM_ALT) str= strcat(str, "Alt "); - if(*sp & KM_OSKEY) + if(but->modifier_key & KM_OSKEY) str= strcat(str, "Cmd "); } else @@ -3169,7 +3164,7 @@ uiBut *uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1 uiBut *uiDefHotKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *keypoin, short *modkeypoin, char *tip) { uiBut *but= ui_def_but(block, HOTKEYEVT|SHO, retval, str, x1, y1, x2, y2, keypoin, 0.0, 0.0, 0.0, 0.0, tip); - but->func_arg3= modkeypoin; /* XXX hrmf, abuse! */ + but->modifier_key= *modkeypoin; ui_check_but(but); return but; } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 88868a61592..b41f47db271 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1862,13 +1862,12 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data if(data->state == BUTTON_STATE_HIGHLIGHT) { if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) { but->drawstr[0]= 0; - *(short *)but->func_arg3= 0; + but->modifier_key= 0; button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT); return WM_UI_HANDLER_BREAK; } } else if(data->state == BUTTON_STATE_WAIT_KEY_EVENT) { - short *sp= (short *)but->func_arg3; if(event->type == MOUSEMOVE) return WM_UI_HANDLER_CONTINUE; @@ -1884,15 +1883,15 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data } /* always set */ - *sp= 0; + but->modifier_key = 0; if(event->shift) - *sp |= KM_SHIFT; + but->modifier_key |= KM_SHIFT; if(event->alt) - *sp |= KM_ALT; + but->modifier_key |= KM_ALT; if(event->ctrl) - *sp |= KM_CTRL; + but->modifier_key |= KM_CTRL; if(event->oskey) - *sp |= KM_OSKEY; + but->modifier_key |= KM_OSKEY; ui_check_but(but); ED_region_tag_redraw(data->region); @@ -3333,69 +3332,134 @@ static int ui_do_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data, wmE return WM_UI_HANDLER_CONTINUE; } -/* callback for hotkey change button/menu */ -static void do_menu_change_hotkey(bContext *C, void *but_v, void *key_v) +static void but_shortcut_name_func(bContext *C, void *arg1, int event) { - uiBut *but= but_v; - IDProperty *prop= (but->opptr)? but->opptr->data: NULL; - short *key= key_v; - char buf[512], *butstr, *cpoin; + uiBut *but = (uiBut *)arg1; - /* signal for escape */ - if(key[0]==0) return; + char buf[512], *butstr, *cpoin; - WM_key_event_operator_change(C, but->optype->idname, but->opcontext, prop, key[0], key[1]); - - /* complex code to change name of button */ - if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { - - butstr= MEM_mallocN(strlen(but->str)+strlen(buf)+2, "menu_block_set_keymaps"); + if (but->optype) { + IDProperty *prop= (but->opptr)? but->opptr->data: NULL; - /* XXX but->str changed... should not, remove the hotkey from it */ - cpoin= strchr(but->str, '|'); - if(cpoin) *cpoin= 0; - - strcpy(butstr, but->str); - strcat(butstr, "|"); - strcat(butstr, buf); - - but->str= but->strdata; - BLI_strncpy(but->str, butstr, sizeof(but->strdata)); - MEM_freeN(butstr); - - ui_check_but(but); + /* complex code to change name of button */ + if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { + + butstr= MEM_mallocN(strlen(but->str)+strlen(buf)+2, "menu_block_set_keymaps"); + + // XXX but->str changed... should not, remove the hotkey from it + cpoin= strchr(but->str, '|'); + if(cpoin) *cpoin= 0; + + strcpy(butstr, but->str); + strcat(butstr, "|"); + strcat(butstr, buf); + + but->str= but->strdata; + BLI_strncpy(but->str, butstr, sizeof(but->strdata)); + MEM_freeN(butstr); + + ui_check_but(but); + } else { + /* shortcut was removed */ + cpoin= strchr(but->str, '|'); + if(cpoin) *cpoin= 0; + } } - } +static uiBlock *menu_change_shortcut(bContext *C, ARegion *ar, void *arg) +{ + uiBlock *block; + uiBut *but = (uiBut *)arg; + wmKeyMap *km; + wmKeyMapItem *kmi; + PointerRNA ptr; + uiLayout *layout; + uiStyle *style= U.uistyles.first; + IDProperty *prop= (but->opptr)? but->opptr->data: NULL; + int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, &km); + + kmi = WM_keymap_item_find_id(km, kmi_id); + + RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr); + + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); + uiBlockSetHandleFunc(block, but_shortcut_name_func, but); + uiBlockSetFlag(block, UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); + uiBlockSetDirection(block, UI_CENTER); + + 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); + + uiPopupBoundsBlock(block, 6, 100, 10); + uiEndBlock(C, block); + + return block; +} -static uiBlock *menu_change_hotkey(bContext *C, ARegion *ar, void *arg_but) +static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg) { uiBlock *block; - uiBut *but= arg_but; - wmOperatorType *ot= WM_operatortype_find(but->optype->idname, 1); - static short dummy[2]; - char buf[OP_MAX_TYPENAME+10]; + uiBut *but = (uiBut *)arg; + wmKeyMap *km; + wmKeyMapItem *kmi; + PointerRNA ptr; + uiLayout *layout; + uiStyle *style= U.uistyles.first; + IDProperty *prop= (but->opptr)? but->opptr->data: NULL; - dummy[0]= 0; - dummy[1]= 0; + km = WM_keymap_guess_opname(C, but->optype->idname); + kmi = WM_keymap_add_item(km, but->optype->idname, AKEY, KM_PRESS, 0, 0); + MEM_freeN(kmi->properties); + kmi->properties= IDP_CopyProperty(prop); - block= uiBeginBlock(C, ar, "_popup", UI_EMBOSSP); - uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_MOVEMOUSE_QUIT|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); + RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr); - BLI_strncpy(buf, ot->name, OP_MAX_TYPENAME); - strcat(buf, " |"); + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); + uiBlockSetHandleFunc(block, but_shortcut_name_func, but); + uiBlockSetFlag(block, UI_BLOCK_RET_1); + uiBlockSetDirection(block, UI_CENTER); - but= uiDefHotKeyevtButS(block, 0, buf, 0, 0, 200, 20, dummy, dummy+1, ""); - uiButSetFlag(but, UI_BUT_IMMEDIATE); - uiButSetFunc(but, do_menu_change_hotkey, arg_but, dummy); + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 200, 20, style); - uiPopupBoundsBlock(block, 6.0f, 50, -10); + uiItemR(layout, "", 0, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE); + + uiPopupBoundsBlock(block, 6, 100, 10); uiEndBlock(C, block); return block; } +static void popup_change_shortcut_func(bContext *C, void *arg1, void *arg2) +{ + uiBut *but = (uiBut *)arg1; + button_timers_tooltip_remove(C, but); + uiPupBlock(C, menu_change_shortcut, but); +} + +static void remove_shortcut_func(bContext *C, void *arg1, void *arg2) +{ + uiBut *but = (uiBut *)arg1; + wmKeyMap *km; + wmKeyMapItem *kmi; + IDProperty *prop= (but->opptr)? but->opptr->data: NULL; + int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, &km); + + kmi = WM_keymap_item_find_id(km, kmi_id); + WM_keymap_remove_item(km, kmi); + + but_shortcut_name_func(C, but, 0); +} + +static void popup_add_shortcut_func(bContext *C, void *arg1, void *arg2) +{ + uiBut *but = (uiBut *)arg1; + button_timers_tooltip_remove(C, but); + uiPupBlock(C, menu_add_shortcut, but); +} + + static int ui_but_menu(bContext *C, uiBut *but) { uiPopupMenu *pup; @@ -3512,7 +3576,36 @@ static int ui_but_menu(bContext *C, uiBut *but) uiItemS(layout); } + /* Operator buttons */ + if(but->optype) { + uiBlock *block = uiLayoutGetBlock(layout); + uiBut *but2; + IDProperty *prop= (but->opptr)? but->opptr->data: NULL; + int w = uiLayoutGetWidth(layout); + char buf[512]; + + /* keyboard shortcuts */ + if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { + + // would rather use a block but, but gets weirdly positioned... + //uiDefBlockBut(block, menu_change_shortcut, but, "Change Shortcut", 0, 0, uiLayoutGetWidth(layout), UI_UNIT_Y, ""); + + but2 = uiDefIconTextBut(block, BUT, 0, 0, "Change Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + uiButSetFunc(but2, popup_change_shortcut_func, but, NULL); + + but2 = uiDefIconTextBut(block, BUT, 0, 0, "Remove Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + uiButSetFunc(but2, remove_shortcut_func, but, NULL); + } + /* only show 'add' if there's a suitable key map for it to go in */ + else if (WM_keymap_guess_opname(C, but->optype->idname)) { + but2 = uiDefIconTextBut(block, BUT, 0, 0, "Add Shortcut", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + uiButSetFunc(but2, popup_add_shortcut_func, but, NULL); + } + + uiItemS(layout); + } + { /* Docs */ char buf[512]; PointerRNA ptr_props; @@ -3605,18 +3698,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) /* handle menu */ else if(event->type == RIGHTMOUSE && event->val == KM_PRESS) { /* RMB has two options now */ - - if((but->block->flag & UI_BLOCK_LOOP) && but->optype) { - IDProperty *prop= (but->opptr)? but->opptr->data: NULL; - char buf[512]; - - if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { - button_timers_tooltip_remove(C, but); - uiPupBlock(C, menu_change_hotkey, but); - - } - } - else if (ui_but_menu(C, but)) { + if (ui_but_menu(C, but)) { return WM_UI_HANDLER_BREAK; } } @@ -3958,7 +4040,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s int time; if(but->block->auto_open==2) time= 1; // test for toolbox - else if(but->block->flag & UI_BLOCK_LOOP || but->block->auto_open) time= 5*U.menuthreshold2; + else if((but->block->flag & UI_BLOCK_LOOP && but->type != BLOCK) || but->block->auto_open) time= 5*U.menuthreshold2; else if(U.uiflag & USER_MENUOPENAUTO) time= 5*U.menuthreshold1; else time= -1; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 97ef1f1ea17..02808f9c2e7 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -199,7 +199,8 @@ struct uiBut { BIFIconID icon; short but_align; /* aligning buttons, horiz/vertical */ - short lock, win; + short lock; + short modifier_key; short iconadd, dt; /* IDPOIN data */ diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 9dd5535ea30..e512c1f6bf8 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -486,12 +486,11 @@ static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr, static void ui_keymap_but_cb(bContext *C, void *but_v, void *key_v) { uiBut *but= but_v; - short modifier= *((short*)key_v); - RNA_boolean_set(&but->rnapoin, "shift", (modifier & KM_SHIFT) != 0); - RNA_boolean_set(&but->rnapoin, "ctrl", (modifier & KM_CTRL) != 0); - RNA_boolean_set(&but->rnapoin, "alt", (modifier & KM_ALT) != 0); - RNA_boolean_set(&but->rnapoin, "oskey", (modifier & KM_OSKEY) != 0); + RNA_boolean_set(&but->rnapoin, "shift", (but->modifier_key & KM_SHIFT) != 0); + RNA_boolean_set(&but->rnapoin, "ctrl", (but->modifier_key & KM_CTRL) != 0); + RNA_boolean_set(&but->rnapoin, "alt", (but->modifier_key & KM_ALT) != 0); + RNA_boolean_set(&but->rnapoin, "oskey", (but->modifier_key & KM_OSKEY) != 0); } /* create label + button for RNA property */ @@ -533,14 +532,14 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, i } else if(flag & UI_ITEM_R_FULL_EVENT) { if(RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) { - static short dummy = 0; char buf[128]; WM_keymap_item_to_string(ptr->data, buf, sizeof(buf)); but= uiDefButR(block, HOTKEYEVT, 0, buf, x, y, w, h, ptr, RNA_property_identifier(prop), 0, 0, 0, -1, -1, NULL); - but->func_arg3= &dummy; // XXX abuse - uiButSetFunc(but, ui_keymap_but_cb, but, &dummy); + uiButSetFunc(but, ui_keymap_but_cb, but, NULL); + if (flag & UI_ITEM_R_IMMEDIATE) + uiButSetFlag(but, UI_BUT_IMMEDIATE); } } else diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index b2ae5572a05..47bbbd9292c 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -46,6 +46,7 @@ #include "DNA_userdef_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" +#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" @@ -1269,6 +1270,47 @@ void init_userdef_do_versions(void) if (G.main->versionfile < 250 || (G.main->versionfile == 250 && G.main->subversionfile < 5)) U.gameflags |= USER_DISABLE_VBO; + if (G.main->versionfile < 250 || (G.main->versionfile == 250 && G.main->subversionfile < 8)) { + wmKeyMap *km; + + for(km=U.keymaps.first; km; km=km->next) { + if (strcmp(km->idname, "Armature_Sketch")==0) + strcpy(km->idname, "Armature Sketch"); + else if (strcmp(km->idname, "View3D")==0) + strcpy(km->idname, "3D View"); + else if (strcmp(km->idname, "View3D Generic")==0) + strcpy(km->idname, "3D View Generic"); + else if (strcmp(km->idname, "EditMesh")==0) + strcpy(km->idname, "Mesh"); + else if (strcmp(km->idname, "TimeLine")==0) + strcpy(km->idname, "Timeline"); + else if (strcmp(km->idname, "UVEdit")==0) + strcpy(km->idname, "UV Editor"); + else if (strcmp(km->idname, "Animation_Channels")==0) + strcpy(km->idname, "Animation Channels"); + else if (strcmp(km->idname, "GraphEdit Keys")==0) + strcpy(km->idname, "Graph Editor"); + else if (strcmp(km->idname, "GraphEdit Generic")==0) + strcpy(km->idname, "Graph Editor Generic"); + else if (strcmp(km->idname, "Action_Keys")==0) + strcpy(km->idname, "Dopesheet"); + else if (strcmp(km->idname, "NLA Data")==0) + strcpy(km->idname, "NLA Editor"); + else if (strcmp(km->idname, "Node Generic")==0) + strcpy(km->idname, "Node Editor"); + else if (strcmp(km->idname, "Logic Generic")==0) + strcpy(km->idname, "Logic Editor"); + else if (strcmp(km->idname, "File")==0) + strcpy(km->idname, "File Browser"); + else if (strcmp(km->idname, "FileMain")==0) + strcpy(km->idname, "File Browser Main"); + else if (strcmp(km->idname, "FileButtons")==0) + strcpy(km->idname, "File Browser Buttons"); + else if (strcmp(km->idname, "Buttons Generic")==0) + strcpy(km->idname, "Property Editor"); + } + } + /* GL Texture Garbage Collection (variable abused above!) */ if (U.textimeout == 0) { U.texcollectrate = 60; diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 11b5f3a9031..c41ac9f6550 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -207,7 +207,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) wmKeyMap *keymap; wmKeyMapItem *kmi; - keymap= WM_keymap_find(keyconf, "EditMesh", 0, 0); + keymap= WM_keymap_find(keyconf, "Mesh", 0, 0); keymap->poll= ED_operator_editmesh; WM_keymap_add_item(keymap, "MESH_OT_loopcut_slide", RKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index b4c9fee8469..68c354b2b87 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -175,7 +175,7 @@ void action_keymap(wmKeyConfig *keyconf) */ /* keyframes */ - keymap= WM_keymap_find(keyconf, "Action_Keys", SPACE_ACTION, 0); + keymap= WM_keymap_find(keyconf, "Dopesheet", SPACE_ACTION, 0); action_keymap_keyframes(keyconf, keymap); } diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 6a53e565e75..57a39b3225e 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -159,7 +159,7 @@ static void action_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "Action_Keys", SPACE_ACTION, 0); + keymap= WM_keymap_find(wm->defaultconf, "Dopesheet", SPACE_ACTION, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } @@ -222,7 +222,7 @@ static void action_channel_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "Animation_Channels", 0, 0); + keymap= WM_keymap_find(wm->defaultconf, "Animation Channels", 0, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 9a4ac872ceb..7f9c1477ee7 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -142,7 +142,7 @@ static void buttons_main_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); - keymap= WM_keymap_find(wm->defaultconf, "Buttons Generic", SPACE_BUTS, 0); + keymap= WM_keymap_find(wm->defaultconf, "Property Editor", SPACE_BUTS, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -193,7 +193,7 @@ void buttons_operatortypes(void) void buttons_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap= WM_keymap_find(keyconf, "Buttons Generic", SPACE_BUTS, 0); + wmKeyMap *keymap= WM_keymap_find(keyconf, "Property Editor", SPACE_BUTS, 0); WM_keymap_add_item(keymap, "BUTTONS_OT_toolbox", RIGHTMOUSE, KM_PRESS, 0, 0); } diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 8714e772852..e0915010e16 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -253,10 +253,10 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy); /* own keymaps */ - keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0); + 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); - keymap= WM_keymap_find(wm->defaultconf, "FileMain", SPACE_FILE, 0); + keymap= WM_keymap_find(wm->defaultconf, "File Browser Main", SPACE_FILE, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); @@ -368,7 +368,7 @@ void file_keymap(struct wmKeyConfig *keyconf) { wmKeyMapItem *kmi; /* keys for all areas */ - wmKeyMap *keymap= WM_keymap_find(keyconf, "File", SPACE_FILE, 0); + wmKeyMap *keymap= WM_keymap_find(keyconf, "File Browser", SPACE_FILE, 0); WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_bookmark_add", BKEY, KM_PRESS, KM_CTRL, 0); @@ -380,7 +380,7 @@ void file_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "FILE_OT_delete", DELKEY, KM_PRESS, 0, 0); /* keys for main area */ - keymap= WM_keymap_find(keyconf, "FileMain", SPACE_FILE, 0); + keymap= WM_keymap_find(keyconf, "File Browser Main", SPACE_FILE, 0); WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0); kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); @@ -404,7 +404,7 @@ void file_keymap(struct wmKeyConfig *keyconf) RNA_int_set(kmi->ptr, "increment",-100); /* keys for button area (top) */ - keymap= WM_keymap_find(keyconf, "FileButtons", SPACE_FILE, 0); + 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); RNA_int_set(kmi->ptr, "increment", 1); kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0); @@ -427,7 +427,7 @@ static void file_channel_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); /* own keymaps */ - keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0); + 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); } @@ -463,10 +463,10 @@ static void file_ui_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "File", SPACE_FILE, 0); + 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); - keymap= WM_keymap_find(wm->defaultconf, "FileButtons", SPACE_FILE, 0); + keymap= WM_keymap_find(wm->defaultconf, "File Browser Buttons", SPACE_FILE, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index cddb1965964..5b62761ae74 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -363,7 +363,7 @@ void graphedit_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap; /* keymap for all regions */ - keymap= WM_keymap_find(keyconf, "GraphEdit Generic", SPACE_IPO, 0); + keymap= WM_keymap_find(keyconf, "Graph Editor Generic", SPACE_IPO, 0); WM_keymap_add_item(keymap, "GRAPH_OT_properties", NKEY, KM_PRESS, 0, 0); /* channels */ @@ -373,7 +373,7 @@ void graphedit_keymap(wmKeyConfig *keyconf) */ /* keyframes */ - keymap= WM_keymap_find(keyconf, "GraphEdit Keys", SPACE_IPO, 0); + keymap= WM_keymap_find(keyconf, "Graph Editor", SPACE_IPO, 0); graphedit_keymap_keyframes(keyconf, keymap); } diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 8111ee8f779..cf99e3602dd 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -213,9 +213,9 @@ static void graph_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Keys", SPACE_IPO, 0); + keymap= WM_keymap_find(wm->defaultconf, "Graph Editor", SPACE_IPO, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); - keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0); + keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -312,9 +312,9 @@ static void graph_channel_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "Animation_Channels", 0, 0); + keymap= WM_keymap_find(wm->defaultconf, "Animation Channels", 0, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); - keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0); + keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -365,7 +365,7 @@ static void graph_buttons_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); - keymap= WM_keymap_find(wm->defaultconf, "GraphEdit Generic", SPACE_IPO, 0); + keymap= WM_keymap_find(wm->defaultconf, "Graph Editor Generic", SPACE_IPO, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 5b05c8f8944..d82364fed2f 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -391,7 +391,7 @@ static void image_main_area_init(wmWindowManager *wm, ARegion *ar) keymap= WM_keymap_find(wm->defaultconf, "Image Paint", 0, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); - keymap= WM_keymap_find(wm->defaultconf, "UVEdit", 0, 0); + keymap= WM_keymap_find(wm->defaultconf, "UV Editor", 0, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); /* own keymaps */ diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index c2918dd0925..06e92ee5fce 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -188,7 +188,7 @@ void logic_operatortypes(void) void logic_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap= WM_keymap_find(keyconf, "Logic Generic", SPACE_LOGIC, 0); + wmKeyMap *keymap= WM_keymap_find(keyconf, "Logic Editor", SPACE_LOGIC, 0); WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0); } @@ -243,7 +243,7 @@ static void logic_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymaps */ - keymap= WM_keymap_find(wm->defaultconf, "Logic Generic", SPACE_LOGIC, 0); + keymap= WM_keymap_find(wm->defaultconf, "Logic Editor", SPACE_LOGIC, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -284,7 +284,7 @@ static void logic_buttons_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); - keymap= WM_keymap_find(wm->defaultconf, "Logic Generic", SPACE_LOGIC, 0); + keymap= WM_keymap_find(wm->defaultconf, "Logic Editor", SPACE_LOGIC, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index 8f057c2d751..bec3a003b1e 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -301,7 +301,7 @@ void nla_keymap(wmKeyConfig *keyconf) nla_keymap_channels(keyconf, keymap); /* data */ - keymap= WM_keymap_find(keyconf, "NLA Data", SPACE_NLA, 0); + keymap= WM_keymap_find(keyconf, "NLA Editor", SPACE_NLA, 0); nla_keymap_main(keyconf, keymap); } diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index ddab0817c58..b384a30de56 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -264,7 +264,7 @@ static void nla_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "NLA Data", SPACE_NLA, 0); + keymap= WM_keymap_find(wm->defaultconf, "NLA Editor", SPACE_NLA, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); keymap= WM_keymap_find(wm->defaultconf, "NLA Generic", SPACE_NLA, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index 2a32ce6b65a..534ca0aa99c 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -98,7 +98,7 @@ void node_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0); /* Main Area only ----------------- */ - keymap= WM_keymap_find(keyconf, "Node", SPACE_NODE, 0); + keymap= WM_keymap_find(keyconf, "Node Editor", SPACE_NODE, 0); /* mouse select in nodes used to be both keys, but perhaps this should be reduced? * NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 650390a8727..dcd07690f0e 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -271,7 +271,7 @@ static void node_main_area_init(wmWindowManager *wm, ARegion *ar) keymap= WM_keymap_find(wm->defaultconf, "Node Generic", SPACE_NODE, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); - keymap= WM_keymap_find(wm->defaultconf, "Node", SPACE_NODE, 0); + 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); } diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index eea5891a720..eb578e093df 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -187,7 +187,7 @@ static void time_main_area_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymap */ - keymap= WM_keymap_find(wm->defaultconf, "TimeLine", SPACE_TIME, 0); + keymap= WM_keymap_find(wm->defaultconf, "Timeline", SPACE_TIME, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index 83b310dba80..c80f13336cb 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -187,7 +187,7 @@ void time_operatortypes(void) void time_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap= WM_keymap_find(keyconf, "TimeLine", SPACE_TIME, 0); + wmKeyMap *keymap= WM_keymap_find(keyconf, "Timeline", SPACE_TIME, 0); WM_keymap_add_item(keymap, "TIME_OT_start_frame_set", SKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TIME_OT_end_frame_set", EKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index b4f3605c559..f1db3ca53fc 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -340,7 +340,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar) keymap= WM_keymap_find(wm->defaultconf, "Sculpt", 0, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); - keymap= WM_keymap_find(wm->defaultconf, "EditMesh", 0, 0); + keymap= WM_keymap_find(wm->defaultconf, "Mesh", 0, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); keymap= WM_keymap_find(wm->defaultconf, "Curve", 0, 0); @@ -359,7 +359,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar) WM_event_add_keymap_handler(&ar->handlers, keymap); /* armature sketching needs to take over mouse */ - keymap= WM_keymap_find(wm->defaultconf, "Armature_Sketch", 0, 0); + keymap= WM_keymap_find(wm->defaultconf, "Armature Sketch", 0, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); keymap= WM_keymap_find(wm->defaultconf, "Particle", 0, 0); @@ -376,10 +376,10 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar) WM_event_add_keymap_handler(&ar->handlers, keymap); /* own keymap, last so modes can override it */ - keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); - keymap= WM_keymap_find(wm->defaultconf, "View3D", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(wm->defaultconf, "3D View", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -541,7 +541,7 @@ static void view3d_main_area_cursor(wmWindow *win, ScrArea *sa, ARegion *ar) /* add handlers, stuff you only do once or on area/region changes */ static void view3d_header_area_init(wmWindowManager *wm, ARegion *ar) { - wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0); + wmKeyMap *keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); @@ -582,7 +582,7 @@ static void view3d_buttons_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); - keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -658,7 +658,7 @@ static void view3d_tools_area_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); - keymap= WM_keymap_find(wm->defaultconf, "View3D Generic", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(wm->defaultconf, "3D View Generic", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 27c062fee8c..4bb65ec4ed4 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -108,13 +108,13 @@ void view3d_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap; wmKeyMapItem *kmi; - keymap= WM_keymap_find(keyconf, "View3D Generic", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(keyconf, "3D View Generic", SPACE_VIEW3D, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_properties", NKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_toolbar", TKEY, KM_PRESS, 0, 0); /* only for region 3D window */ - keymap= WM_keymap_find(keyconf, "View3D", SPACE_VIEW3D, 0); + keymap= WM_keymap_find(keyconf, "3D View", SPACE_VIEW3D, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0); /* diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index b592d5a62f1..0ee6115bbfe 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -3198,7 +3198,7 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) { wmKeyMap *keymap; - keymap= WM_keymap_find(keyconf, "UVEdit", 0, 0); + keymap= WM_keymap_find(keyconf, "UV Editor", 0, 0); keymap->poll= ED_operator_uvedit; /* pick selection */ diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 1702149cf8b..8fe7ac39b35 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -104,17 +104,22 @@ wmKeyMapItem *WM_keymap_add_item(struct wmKeyMap *keymap, char *idname, int type int val, int modifier, int keymodifier); wmKeyMapItem *WM_keymap_add_menu(struct wmKeyMap *keymap, char *idname, int type, int val, int modifier, int keymodifier); + void WM_keymap_remove_item(struct wmKeyMap *keymap, struct wmKeyMapItem *kmi); char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len); -wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid); wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid); +wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid); +wmKeyMap *WM_keymap_find_all(const struct bContext *C, char *idname, int spaceid, int regionid); wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap); +wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, char *opname); int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap); wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap); void WM_keymap_restore_to_default(struct wmKeyMap *keymap); void WM_keymap_properties_reset(struct wmKeyMapItem *kmi); void WM_keymap_restore_item_to_default(struct bContext *C, struct wmKeyMap *keymap, struct wmKeyMapItem *kmi); + +wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id); int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2); int WM_userdef_event_map(int kmitype); @@ -124,8 +129,8 @@ wmKeyMapItem *WM_modalkeymap_add_item(struct wmKeyMap *km, int type, int val, in void WM_modalkeymap_assign(struct wmKeyMap *km, char *opname); const char *WM_key_event_string(short type); +int WM_key_event_operator_id(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, struct wmKeyMap **keymap_r); char *WM_key_event_operator_string(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, char *str, int len); -void WM_key_event_operator_change(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, short key, short modifier); /* handlers */ diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 7de7b3c45e1..447a7ecb92f 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -28,7 +28,9 @@ #include +#include "DNA_object_types.h" #include "DNA_screen_types.h" +#include "DNA_space_types.h" #include "DNA_userdef_types.h" #include "DNA_windowmanager_types.h" @@ -267,6 +269,33 @@ wmKeyMap *WM_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int re return km; } +wmKeyMap *WM_keymap_find_all(const bContext *C, char *idname, int spaceid, int regionid) +{ + wmWindowManager *wm = CTX_wm_manager(C); + wmKeyConfig *keyconf; + wmKeyMap *km; + + /* first user defined keymaps */ + km= WM_keymap_list_find(&U.keymaps, idname, spaceid, regionid); + if (km) + return km; + + /* then user key config */ + keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr); + if(keyconf) { + km= WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid); + if (km) + return km; + } + + /* then use default */ + km= WM_keymap_list_find(&wm->defaultconf->keymaps, idname, spaceid, regionid); + if (km) + return km; + else + return NULL; +} + /* ****************** modal keymaps ************ */ /* modal maps get linked to a running operator, and filter the keys before sending to modal() callback */ @@ -458,6 +487,16 @@ char *WM_key_event_operator_string(const bContext *C, const char *opname, int op return NULL; } +int WM_key_event_operator_id(const bContext *C, const char *opname, int opcontext, IDProperty *properties, wmKeyMap **keymap_r) +{ + wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, keymap_r); + + if(kmi) + return kmi->id; + else + return 0; +} + int WM_keymap_item_compare(wmKeyMapItem *k1, wmKeyMapItem *k2) { int k1type, k2type; @@ -664,25 +703,150 @@ void WM_keymap_restore_to_default(wmKeyMap *keymap) } } -/* searches context and changes keymap item, if found */ -void WM_key_event_operator_change(const bContext *C, const char *opname, int opcontext, IDProperty *properties, short key, short modifier) +wmKeyMapItem *WM_keymap_item_find_id(wmKeyMap *keymap, int id) { - wmWindowManager *wm= CTX_wm_manager(C); - wmKeyMap *keymap; wmKeyMapItem *kmi; - kmi= wm_keymap_item_find(C, opname, opcontext, properties, &keymap); + for (kmi=keymap->items.first; kmi; kmi=kmi->next) { + if (kmi->id == id) + return kmi; + } + + return NULL; +} - if(kmi) { - /* if the existing one is in a default keymap, copy it - to user preferences, and lookup again so we get a - key map item from the user preferences we can modify */ - if(BLI_findindex(&wm->defaultconf->keymaps, keymap) >= 0) { - WM_keymap_copy_to_user(keymap); - kmi= wm_keymap_item_find(C, opname, opcontext, properties, NULL); +/* Guess an appropriate keymap from the operator name */ +/* Needs to be kept up to date with Keymap and Operator naming */ +wmKeyMap *WM_keymap_guess_opname(const bContext *C, char *opname) +{ + wmKeyMap *km=NULL; + SpaceLink *sl = CTX_wm_space_data(C); + + /* Window */ + if (strstr(opname, "WM_OT")) { + km = WM_keymap_find_all(C, "Window", 0, 0); + } + /* Screen */ + else if (strstr(opname, "SCREEN_OT")) { + km = WM_keymap_find_all(C, "Screen", 0, 0); + } + /* Grease Pencil */ + else if (strstr(opname, "GPENCIL_OT")) { + km = WM_keymap_find_all(C, "Grease Pencil", 0, 0); + } + /* Markers */ + else if (strstr(opname, "MARKER_OT")) { + km = WM_keymap_find_all(C, "Markers", 0, 0); + } + + + /* 3D View */ + else if (strstr(opname, "VIEW3D_OT")) { + km = WM_keymap_find_all(C, "3D View", sl->spacetype, 0); + } + else if (strstr(opname, "OBJECT_OT")) { + km = WM_keymap_find_all(C, "Object Mode", 0, 0); + } + + /* Editing Modes */ + else if (strstr(opname, "MESH_OT")) { + km = WM_keymap_find_all(C, "Mesh", 0, 0); + } + else if (strstr(opname, "CURVE_OT")) { + km = WM_keymap_find_all(C, "Curve", 0, 0); + } + else if (strstr(opname, "ARMATURE_OT")) { + km = WM_keymap_find_all(C, "Armature", 0, 0); + } + else if (strstr(opname, "POSE_OT")) { + km = WM_keymap_find_all(C, "Pose", 0, 0); + } + else if (strstr(opname, "SCULPT_OT")) { + km = WM_keymap_find_all(C, "Sculpt", 0, 0); + } + else if (strstr(opname, "MBALL_OT")) { + km = WM_keymap_find_all(C, "Metaball", 0, 0); + } + else if (strstr(opname, "LATTICE_OT")) { + km = WM_keymap_find_all(C, "Lattice", 0, 0); + } + else if (strstr(opname, "PARTICLE_OT")) { + km = WM_keymap_find_all(C, "Particle", 0, 0); + } + else if (strstr(opname, "FONT_OT")) { + km = WM_keymap_find_all(C, "Font", 0, 0); + } + else if (strstr(opname, "PAINT_OT")) { + + /* check for relevant mode */ + switch(CTX_data_mode_enum(C)) { + case OB_MODE_WEIGHT_PAINT: + km = WM_keymap_find_all(C, "Weight Paint", 0, 0); + break; + case OB_MODE_VERTEX_PAINT: + km = WM_keymap_find_all(C, "Vertex Paint", 0, 0); + break; + case OB_MODE_TEXTURE_PAINT: + km = WM_keymap_find_all(C, "Image Paint", 0, 0); + break; } - - keymap_event_set(kmi, key, KM_PRESS, modifier, 0); } + /* Paint Face Mask */ + else if (strstr(opname, "PAINT_OT_face_select")) { + km = WM_keymap_find_all(C, "Face Mask", sl->spacetype, 0); + } + /* Timeline */ + else if (strstr(opname, "TIME_OT")) { + km = WM_keymap_find_all(C, "Timeline", sl->spacetype, 0); + } + /* Image Editor */ + else if (strstr(opname, "IMAGE_OT")) { + km = WM_keymap_find_all(C, "Image", sl->spacetype, 0); + } + /* UV Editor */ + else if (strstr(opname, "UV_OT")) { + km = WM_keymap_find_all(C, "UV Editor", sl->spacetype, 0); + } + /* Node Editor */ + else if (strstr(opname, "NODE_OT")) { + km = WM_keymap_find_all(C, "Node Editor", sl->spacetype, 0); + } + /* Animation Editor Channels */ + else if (strstr(opname, "ANIM_OT_channels")) { + km = WM_keymap_find_all(C, "Animation Channels", sl->spacetype, 0); + } + /* Animation Generic - after channels */ + else if (strstr(opname, "ANIM_OT")) { + km = WM_keymap_find_all(C, "Animation", 0, 0); + } + /* Graph Editor */ + else if (strstr(opname, "GRAPH_OT")) { + km = WM_keymap_find_all(C, "Graph Editor", sl->spacetype, 0); + } + /* Dopesheet Editor */ + else if (strstr(opname, "ACTION_OT")) { + km = WM_keymap_find_all(C, "Dopesheet", sl->spacetype, 0); + } + /* NLA Editor */ + else if (strstr(opname, "NLA_OT")) { + km = WM_keymap_find_all(C, "NLA Editor", sl->spacetype, 0); + } + /* Script */ + else if (strstr(opname, "SCRIPT_OT")) { + km = WM_keymap_find_all(C, "Script", sl->spacetype, 0); + } + /* Text */ + else if (strstr(opname, "TEXT_OT")) { + km = WM_keymap_find_all(C, "Text", sl->spacetype, 0); + } + /* Sequencer */ + else if (strstr(opname, "SEQUENCER_OT")) { + km = WM_keymap_find_all(C, "Sequencer", sl->spacetype, 0); + } + /* Console */ + else if (strstr(opname, "CONSOLE_OT")) { + km = WM_keymap_find_all(C, "Console", sl->spacetype, 0); + } + + return km; } - -- cgit v1.2.3 From accfa71b2cd95dbaa09172780d93b27b9eef403b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Dec 2009 09:36:15 +0000 Subject: pedantic naming: wmKeyMapItem wasnt called 'kmi' in some cases. --- source/blender/editors/object/object_ops.c | 26 ++++---- source/blender/makesrna/intern/rna_wm.c | 12 ++-- source/blender/windowmanager/intern/wm_operators.c | 72 +++++++++++----------- 3 files changed, 55 insertions(+), 55 deletions(-) diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 7b11bc58950..8272d989718 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -336,23 +336,23 @@ void ED_keymap_object(wmKeyConfig *keyconf) void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int do_pet) { - wmKeyMapItem *km; + wmKeyMapItem *kmi; /* used by mesh, curve & lattice only */ if(do_pet) { /* context ops */ - km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing_falloff"); - - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0); - RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing"); - RNA_string_set(km->ptr, "value_1", "DISABLED"); - RNA_string_set(km->ptr, "value_2", "ENABLED"); - - km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing"); - RNA_string_set(km->ptr, "value_1", "DISABLED"); - RNA_string_set(km->ptr, "value_2", "CONNECTED"); + 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"); + + 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, "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"); } } diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index ca6d8959d00..3a708cc8563 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -453,9 +453,9 @@ static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA /* check user keymaps */ for(km=U.keymaps.first; km; km=km->next) { - wmKeyMapItem *ki; - for (ki=km->items.first; ki; ki=ki->next) { - if (ki == ptr->data) { + wmKeyMapItem *kmi; + for (kmi=km->items.first; kmi; kmi=kmi->next) { + if (kmi == ptr->data) { if (!km->modal_items) { if (!WM_keymap_user_init(wm, km)) { return keymap_propvalue_items; /* ERROR */ @@ -471,9 +471,9 @@ static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA for(km=kc->keymaps.first; km; km=km->next) { /* only check if it's a modal keymap */ if (km->modal_items) { - wmKeyMapItem *ki; - for (ki=km->items.first; ki; ki=ki->next) { - if (ki == ptr->data) { + wmKeyMapItem *kmi; + for (kmi=km->items.first; kmi; kmi=kmi->next) { + if (kmi == ptr->data) { return km->modal_items; } } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index d65580681eb..4ad067e8743 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2802,7 +2802,7 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) void wm_window_keymap(wmKeyConfig *keyconf) { wmKeyMap *keymap= WM_keymap_find(keyconf, "Window", 0, 0); - wmKeyMapItem *km; + wmKeyMapItem *kmi; /* note, this doesn't replace existing keymap items */ WM_keymap_verify_item(keymap, "WM_OT_window_duplicate", WKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); @@ -2820,8 +2820,8 @@ void wm_window_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "WM_OT_link_append", OKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - km= WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(km->ptr, "link", FALSE); + kmi= WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(kmi->ptr, "link", FALSE); WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0); @@ -2839,49 +2839,49 @@ void wm_window_keymap(wmKeyConfig *keyconf) /* Space switching */ - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */ - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "LOGIC_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */ + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "LOGIC_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "NODE_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "NODE_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */ - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "CONSOLE"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */ + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "CONSOLE"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "VIEW_3D"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "VIEW_3D"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "GRAPH_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "GRAPH_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "PROPERTIES"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "PROPERTIES"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "SEQUENCE_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "SEQUENCE_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "OUTLINER"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "OUTLINER"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "IMAGE_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "IMAGE_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "TEXT_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "TEXT_EDITOR"); - km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "area.type"); - RNA_string_set(km->ptr, "value", "DOPESHEET_EDITOR"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "value", "DOPESHEET_EDITOR"); gesture_circle_modal_keymap(keyconf); gesture_border_modal_keymap(keyconf); -- cgit v1.2.3 From 73c62183f80d129cad61f21ec0fe16d5bbec873d Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 24 Dec 2009 10:39:30 +0000 Subject: Removed a few operators that were just used to generate popup menus and replaced with python defined menus. --- release/scripts/ui/space_view3d.py | 34 ++++++++++++++++++- source/blender/editors/curve/curve_ops.c | 35 +------------------ source/blender/editors/physics/particle_edit.c | 36 -------------------- source/blender/editors/physics/physics_intern.h | 2 -- source/blender/editors/physics/physics_ops.c | 4 +-- .../blender/editors/space_view3d/view3d_intern.h | 1 - source/blender/editors/space_view3d/view3d_ops.c | 3 +- source/blender/editors/space_view3d/view3d_snap.c | 39 ---------------------- 8 files changed, 36 insertions(+), 118 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 26a018f81cb..26f2953be40 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -903,6 +903,24 @@ class VIEW3D_MT_particle(bpy.types.Menu): layout.menu("VIEW3D_MT_particle_showhide") +class VIEW3D_MT_particle_specials(bpy.types.Menu): + bl_label = "Specials" + + def draw(self, context): + layout = self.layout + particle_edit = context.tool_settings.particle_edit + + layout.operator("particle.rekey") + + layout.separator() + if particle_edit.selection_mode == 'POINT': + layout.operator("particle.subdivide") + layout.operator("particle.select_first") + layout.operator("particle.select_last") + + layout.operator("particle.remove_doubles") + + class VIEW3D_MT_particle_showhide(VIEW3D_MT_showhide): _operator_name = "particle" @@ -1344,7 +1362,19 @@ class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): layout.operator("curve.subdivide") layout.operator("curve.switch_direction") + +class VIEW3D_MT_edit_curve_specials(bpy.types.Menu): + bl_label = "Specials" + def draw(self, context): + layout = self.layout + + layout.operator("curve.subdivide") + layout.operator("curve.switch_direction") + layout.operator("curve.spline_weight_set") + layout.operator("curve.radius_set") + layout.operator("curve.smooth") + layout.operator("curve.smooth_radius") class VIEW3D_MT_edit_curve_showhide(VIEW3D_MT_showhide): _operator_name = "curve" @@ -1924,7 +1954,8 @@ bpy.types.register(VIEW3D_MT_sculpt) # Sculpt Menu bpy.types.register(VIEW3D_MT_paint_vertex) -bpy.types.register(VIEW3D_MT_particle) # Particle Menu +bpy.types.register(VIEW3D_MT_particle)# Particle Menu +bpy.types.register(VIEW3D_MT_particle_specials) bpy.types.register(VIEW3D_MT_particle_showhide) bpy.types.register(VIEW3D_MT_pose) # POSE Menu @@ -1948,6 +1979,7 @@ bpy.types.register(VIEW3D_MT_edit_mesh_showhide) bpy.types.register(VIEW3D_MT_edit_curve) bpy.types.register(VIEW3D_MT_edit_curve_ctrlpoints) bpy.types.register(VIEW3D_MT_edit_curve_segments) +bpy.types.register(VIEW3D_MT_edit_curve_specials) bpy.types.register(VIEW3D_MT_edit_curve_showhide) bpy.types.register(VIEW3D_MT_edit_surface) diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index be52952b474..660db2f0951 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -62,37 +62,6 @@ #include "curve_intern.h" -/**************************** menus *****************************/ - -static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - uiPopupMenu *pup; - uiLayout *layout; - - pup= uiPupMenuBegin(C, "Specials", 0); - layout= uiPupMenuLayout(pup); - uiItemO(layout, NULL, 0, "CURVE_OT_subdivide"); - uiItemO(layout, NULL, 0, "CURVE_OT_switch_direction"); - uiItemO(layout, NULL, 0, "CURVE_OT_spline_weight_set"); - uiItemO(layout, NULL, 0, "CURVE_OT_radius_set"); - uiItemO(layout, NULL, 0, "CURVE_OT_smooth"); - uiItemO(layout, NULL, 0, "CURVE_OT_smooth_radius"); - uiPupMenuEnd(C, pup); - - return OPERATOR_CANCELLED; -} - -void CURVE_OT_specials_menu(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Specials Menu"; - ot->idname= "CURVE_OT_specials_menu"; - - /* api clastbacks */ - ot->invoke= specials_menu_invoke; - ot->poll= ED_operator_editsurfcurve; -} - /************************* registration ****************************/ void ED_operatortypes_curve(void) @@ -157,8 +126,6 @@ void ED_operatortypes_curve(void) WM_operatortype_append(CURVE_OT_vertex_add); WM_operatortype_append(CURVE_OT_extrude); WM_operatortype_append(CURVE_OT_cyclic_toggle); - - WM_operatortype_append(CURVE_OT_specials_menu); } void ED_keymap_curve(wmKeyConfig *keyconf) @@ -248,7 +215,7 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "unselected", 1); - WM_keymap_add_item(keymap, "CURVE_OT_specials_menu", WKEY, KM_PRESS, 0, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_specials", WKEY, KM_PRESS, 0, 0); /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 8bacad3c132..c29214f4633 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -4035,39 +4035,3 @@ void PARTICLE_OT_edited_clear(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -/*********************** specials menu **************************/ - -static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - Scene *scene= CTX_data_scene(C); - ParticleEditSettings *pset=PE_settings(scene); - uiPopupMenu *pup; - uiLayout *layout; - - pup= uiPupMenuBegin(C, "Specials", 0); - layout= uiPupMenuLayout(pup); - - uiItemO(layout, NULL, 0, "PARTICLE_OT_rekey"); - if(pset->selectmode & SCE_SELECT_POINT) { - uiItemO(layout, NULL, 0, "PARTICLE_OT_subdivide"); - uiItemO(layout, NULL, 0, "PARTICLE_OT_select_first"); - uiItemO(layout, NULL, 0, "PARTICLE_OT_select_last"); - } - uiItemO(layout, NULL, 0, "PARTICLE_OT_remove_doubles"); - - uiPupMenuEnd(C, pup); - - return OPERATOR_CANCELLED; -} - -void PARTICLE_OT_specials_menu(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Specials Menu"; - ot->idname= "PARTICLE_OT_specials_menu"; - - /* api callbacks */ - ot->invoke= specials_menu_invoke; - ot->poll= PE_hair_poll; -} - diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index 085332b1788..e1b1a8b90a8 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -57,8 +57,6 @@ void PARTICLE_OT_brush_set(struct wmOperatorType *ot); void PARTICLE_OT_brush_edit(struct wmOperatorType *ot); void PARTICLE_OT_brush_radial_control(struct wmOperatorType *ot); -void PARTICLE_OT_specials_menu(struct wmOperatorType *ot); - void PARTICLE_OT_particle_edit_toggle(struct wmOperatorType *ot); void PARTICLE_OT_edited_clear(struct wmOperatorType *ot); diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index 09b4ebec7a2..24b3881d6b8 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -64,8 +64,6 @@ static void operatortypes_particle(void) WM_operatortype_append(PARTICLE_OT_brush_edit); WM_operatortype_append(PARTICLE_OT_brush_radial_control); - WM_operatortype_append(PARTICLE_OT_specials_menu); - WM_operatortype_append(PARTICLE_OT_particle_edit_toggle); WM_operatortype_append(PARTICLE_OT_edited_clear); @@ -113,7 +111,7 @@ static void keymap_particle(wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); - WM_keymap_add_item(keymap, "PARTICLE_OT_specials_menu", WKEY, KM_PRESS, 0, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_particle_specials", WKEY, KM_PRESS, 0, 0); ED_object_generic_keymap(keyconf, keymap, 1); } diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index b32a067206e..bf5d516c03a 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -161,7 +161,6 @@ 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_selected(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_active(struct wmOperatorType *ot); -void VIEW3D_OT_snap_menu(struct wmOperatorType *ot); /* space_view3d.c */ ARegion *view3d_has_buttons_region(ScrArea *sa); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 4bb65ec4ed4..c211e55d7a0 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -98,7 +98,6 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_active); - WM_operatortype_append(VIEW3D_OT_snap_menu); transform_operatortypes(); } @@ -241,7 +240,7 @@ void view3d_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "VIEW3D_OT_camera_to_view", PAD0, KM_PRESS, KM_ALT|KM_CTRL, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); /* context ops */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index a23163f4a5c..3147abd499b 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -1112,42 +1112,3 @@ int minmax_verts(Object *obedit, float *min, float *max) return 1; } -/* ************************************************* */ - -static int snap_menu_invoke(bContext *C, wmOperator *unused, wmEvent *event) -{ - uiPopupMenu *pup= uiPupMenuBegin(C, "Snap", 0); - uiLayout *layout= uiPupMenuLayout(pup); - - uiItemO(layout, "Selected to Grid", 0, "VIEW3D_OT_snap_selected_to_grid"); - uiItemO(layout, "Selected to Cursor", 0, "VIEW3D_OT_snap_selected_to_cursor"); - uiItemO(layout, "Selected to Center", 0, "VIEW3D_OT_snap_selected_to_center"); - uiItemS(layout); - uiItemO(layout, "Cursor to Selected", 0, "VIEW3D_OT_snap_cursor_to_selected"); - uiItemO(layout, "Cursor to Grid", 0, "VIEW3D_OT_snap_cursor_to_grid"); - uiItemO(layout, "Cursor to Active", 0, "VIEW3D_OT_snap_cursor_to_active"); - - uiPupMenuEnd(C, pup); - - /* this operator is only for a menu, not used further */ - return OPERATOR_CANCELLED; -} - -/* only used as menu */ -void VIEW3D_OT_snap_menu(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Snap Menu"; - ot->description= "Display snap menu."; - ot->idname= "VIEW3D_OT_snap_menu"; - - /* api callbacks */ - ot->invoke= snap_menu_invoke; - - ot->poll= ED_operator_view3d_active; - - /* flags */ - ot->flag= 0; -} - - -- cgit v1.2.3 From bb452f29d6c8bce1c34ba56f521e2876377e6bda Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Dec 2009 11:40:14 +0000 Subject: minor pyapi changes --- source/blender/makesrna/RNA_access.h | 2 +- source/blender/makesrna/intern/rna_access.c | 5 ++--- source/blender/python/intern/bpy_rna.c | 19 +++++++++---------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 96921ba2f48..a5978937ed5 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -587,7 +587,7 @@ void *RNA_struct_blender_type_get(StructRNA *srna); void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type); struct IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create); -int RNA_struct_idproperties_check(PointerRNA *ptr); +int RNA_struct_idproperties_check(StructRNA *srna); PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 59200a2de55..e2960d2bf3a 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -226,10 +226,9 @@ IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create) return NULL; } -int RNA_struct_idproperties_check(PointerRNA *ptr) +int RNA_struct_idproperties_check(StructRNA *srna) { - StructRNA *type= ptr->type; - return (type && type->idproperties) ? 1 : 0; + return (srna && srna->idproperties) ? 1 : 0; } static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 9142aaed9ea..65d2b687275 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1204,7 +1204,7 @@ static int pyrna_struct_contains(BPy_StructRNA *self, PyObject *value) return -1; } - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties"); return -1; } @@ -1258,7 +1258,7 @@ static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key ) IDProperty *group, *idprop; char *name= _PyUnicode_AsString(key); - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties"); return NULL; } @@ -1307,7 +1307,7 @@ static PyObject *pyrna_struct_keys(BPy_PropertyRNA *self) { IDProperty *group; - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties"); return NULL; } @@ -1324,7 +1324,7 @@ static PyObject *pyrna_struct_items(BPy_PropertyRNA *self) { IDProperty *group; - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties"); return NULL; } @@ -1342,7 +1342,7 @@ static PyObject *pyrna_struct_values(BPy_PropertyRNA *self) { IDProperty *group; - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesnt support IDProperties"); return NULL; } @@ -1671,7 +1671,7 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname ) if(name[0]=='_') { // rna can't start with a "_", so for __dict__ and similar we can skip using rna lookups /* annoying exception, maybe we need to have different types for this... */ - if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(&self->ptr)) { + if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(self->ptr.type)) { PyErr_SetString(PyExc_AttributeError, "StructRNA - no __getitem__ support for this type"); ret = NULL; } @@ -2027,7 +2027,7 @@ static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args) return NULL; /* mostly copied from BPy_IDGroup_Map_GetItem */ - if(RNA_struct_idproperties_check(&self->ptr)==0) { + if(RNA_struct_idproperties_check(self->ptr.type)==0) { PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties"); return NULL; } @@ -3011,8 +3011,9 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna) /* sanity check, could skip this unless in debug mode */ if(newclass) { PyObject *base_compare= pyrna_srna_PyBase(srna); - PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); //PyObject *slots= PyObject_GetAttrString(newclass, "__slots__"); // cant do this because it gets superclasses values! + //PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); // can do this but faster not to. + PyObject *bases= ((PyTypeObject *)newclass)->tp_bases; PyObject *slots = PyDict_GetItemString(((PyTypeObject *)newclass)->tp_dict, "__slots__"); if(slots==NULL) { @@ -3032,8 +3033,6 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna) fprintf(stderr, "SRNA Subclassed: '%s'\n", idname); } } - - Py_DECREF(bases); } return newclass; -- cgit v1.2.3 From a2b0020e11e27c6d7ecdacf747a4543ab733867b Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Thu, 24 Dec 2009 14:01:22 +0000 Subject: Reverted the addition of the f-curve sound modifier (was added in revision 24759) due to unusability and performance issues. The ability to use a sound as animation source will be added as an import operator later that renders a sound to an f-curve which brings the advantage that you can edit the generated curve later and the disadvantage it is not automatically updated when the sound changes. --- source/blender/blenkernel/intern/fmodifier.c | 93 ---------------------- source/blender/blenloader/intern/readfile.c | 13 --- source/blender/editors/animation/fmodifier_ui.c | 49 +----------- source/blender/editors/include/ED_anim_api.h | 2 +- source/blender/editors/space_graph/graph_buttons.c | 2 +- source/blender/editors/space_nla/nla_buttons.c | 2 +- source/blender/makesdna/DNA_anim_types.h | 21 ----- source/blender/makesrna/RNA_access.h | 1 - source/blender/makesrna/intern/rna_fcurve.c | 45 ----------- 9 files changed, 6 insertions(+), 222 deletions(-) diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 877c6d6b62e..5daa2ed1924 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -53,8 +53,6 @@ #include "RNA_access.h" #include "RNA_types.h" -#include "AUD_C-API.h" - #ifndef DISABLE_PYTHON #include "BPY_extern.h" /* for BPY_pydriver_eval() */ #endif @@ -873,96 +871,6 @@ static FModifierTypeInfo FMI_LIMITS = { fcm_limits_evaluate /* evaluate */ }; -/* Sound F-Curve Modifier --------------------------- */ - -static void fcm_sound_new_data (void *mdata) -{ - FMod_Sound *data= (FMod_Sound *)mdata; - - /* defaults */ - data->strength= 1.0f; - data->delay = 0.0f; - data->modification = FCM_SOUND_MODIF_REPLACE; - data->sound = NULL; -} - -static void fcm_sound_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, float evaltime) -{ - FMod_Sound *data= (FMod_Sound *)fcm->data; - float amplitude; - - AUD_Device *device; - AUD_Sound *limiter; - AUD_SoundInfo info; - - // XXX fixme - need to get in terms of time instead of frames to be really useful -// evaltime = FRA2TIME(evaltime); - evaltime -= data->delay; - - /* sound-system cannot cope with negative times/frames */ - if (evaltime < 0.0f) - return; - /* must have a sound with a cache so that this can be used */ - if (ELEM(NULL, data->sound, data->sound->cache)) - return; - - /* examine this snippet of the wave, and extract the amplitude from it */ - info = AUD_getInfo(data->sound->cache); - info.specs.channels = 1; - info.specs.format = AUD_FORMAT_FLOAT32; - device = AUD_openReadDevice(info.specs); - limiter = AUD_limitSound(data->sound->cache, evaltime, evaltime + 1); - AUD_playDevice(device, limiter); - AUD_unload(limiter); - AUD_readDevice(device, (sample_t*)&litude, 1); - AUD_closeReadDevice(device); - - /* combine the amplitude with existing motion data */ - switch (data->modification) { - case FCM_SOUND_MODIF_ADD: - *cvalue= *cvalue + amplitude * data->strength; - break; - case FCM_SOUND_MODIF_SUBTRACT: - *cvalue= *cvalue - amplitude * data->strength; - break; - case FCM_SOUND_MODIF_MULTIPLY: - *cvalue= *cvalue * amplitude * data->strength; - break; - case FCM_SOUND_MODIF_REPLACE: - default: - *cvalue= *cvalue + amplitude * data->strength; - break; - } -} - -static float fcm_sound_time (FCurve *fcu, FModifier *fcm, float cvalue, float evaltime) -{ - FMod_Sound *data= (FMod_Sound *)fcm->data; - - /* check for the time delay */ -// evaltime = FRA2TIME(evaltime); - if(evaltime < data->delay) - return data->delay; - - /* modifier doesn't change time */ - return evaltime; -} - -static FModifierTypeInfo FMI_SOUND = { - FMODIFIER_TYPE_SOUND, /* type */ - sizeof(FMod_Sound), /* size */ - FMI_TYPE_REPLACE_VALUES, /* action type */ - 0, /* requirements */ - "Sound", /* name */ - "FMod_Sound", /* struct name */ - NULL, /* free data */ - NULL, /* copy data */ - fcm_sound_new_data, /* new data */ - NULL, /* verify */ - fcm_sound_time, /* evaluate time */ - fcm_sound_evaluate /* evaluate */ -}; - /* F-Curve Modifier API --------------------------- */ /* All of the F-Curve Modifier api functions use FModifierTypeInfo structs to carry out * and operations that involve F-Curve modifier specific code. @@ -984,7 +892,6 @@ static void fmods_init_typeinfo () fmodifiersTypeInfo[6]= NULL/*&FMI_FILTER*/; /* Filter F-Curve Modifier */ // XXX unimplemented fmodifiersTypeInfo[7]= &FMI_PYTHON; /* Custom Python F-Curve Modifier */ fmodifiersTypeInfo[8]= &FMI_LIMITS; /* Limits F-Curve Modifier */ - fmodifiersTypeInfo[9]= &FMI_SOUND; /* Sound F-Curve Modifier */ } /* This function should be used for getting the appropriate type-info when only diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 7512a7ebb02..d6858f664a3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1695,12 +1695,6 @@ static void lib_link_fmodifiers(FileData *fd, ID *id, ListBase *list) data->script = newlibadr(fd, id->lib, data->script); } break; - case FMODIFIER_TYPE_SOUND: - { - FMod_Sound *data= (FMod_Sound *)fcm->data; - data->sound = newlibadr(fd, id->lib, data->sound); - } - break; } } } @@ -10663,13 +10657,6 @@ static void expand_fmodifiers(FileData *fd, Main *mainvar, ListBase *list) expand_doit(fd, mainvar, data->script); } break; - case FMODIFIER_TYPE_SOUND: - { - FMod_Sound *data= (FMod_Sound *)fcm->data; - - expand_doit(fd, mainvar, data->sound); - } - break; } } } diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index ebddcd45a8b..3ba20ca3e88 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -321,45 +321,6 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short /* --------------- */ -/* draw settings for sound modifier */ -static void draw_modifier__sound(const bContext *C, uiLayout *layout, ID *id, FModifier *fcm, short width) -{ - FMod_Sound *data= (FMod_Sound *)fcm->data; - PointerRNA ptr; - - /* init the RNA-pointer */ - RNA_pointer_create(id, &RNA_FModifierSound, fcm, &ptr); - - /* sound */ - uiTemplateID(layout, (bContext*)C, &ptr, "sound", NULL, "sound.open", NULL); - - if (data->sound) - { - /* only sounds that are cached can be used, so display error if not cached */ - if (data->sound->cache) - { - /* blending mode */ - uiItemR(layout, NULL, 0, &ptr, "modification", 0); - - /* settings */ - uiItemR(layout, NULL, 0, &ptr, "strength", 0); - uiItemR(layout, NULL, 0, &ptr, "delay", 0); - } - else - { - PointerRNA id_ptr; - - RNA_id_pointer_create((ID *)data->sound, &id_ptr); - - /* error message with a button underneath allowing users to rectify the issue */ - uiItemL(layout, "Sound must be cached.", ICON_ERROR); - uiItemR(layout, NULL, 0, &id_ptr, "caching", UI_ITEM_R_TOGGLE); - } - } -} - -/* --------------- */ - #define BINARYSEARCH_FRAMEEQ_THRESH 0.0001 /* Binary search algorithm for finding where to insert Envelope Data Point. @@ -623,7 +584,7 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* --------------- */ -void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm) +void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm) { FModifierTypeInfo *fmi= fmodifier_get_typeinfo(fcm); uiLayout *box, *row, *subrow; @@ -704,15 +665,11 @@ void ANIM_uiTemplate_fmodifier_draw (const bContext *C, uiLayout *layout, ID *id case FMODIFIER_TYPE_LIMITS: /* Limits */ draw_modifier__limits(box, id, fcm, width); break; - + case FMODIFIER_TYPE_NOISE: /* Noise */ draw_modifier__noise(box, id, fcm, width); break; - - case FMODIFIER_TYPE_SOUND: /* Sound */ - draw_modifier__sound(C, box, id, fcm, width); - break; - + default: /* unknown type */ break; } diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 48e2eff0d31..b971abac995 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -428,7 +428,7 @@ void ANIM_draw_previewrange(const struct bContext *C, struct View2D *v2d); /* F-MODIFIER TOOLS */ /* draw a given F-Modifier for some layout/UI-Block */ -void ANIM_uiTemplate_fmodifier_draw(const struct bContext *C, struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm); +void ANIM_uiTemplate_fmodifier_draw(struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm); /* ************************************************* */ /* ASSORTED TOOLS */ diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 1eaac8ffd20..3faba9bbba7 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -452,7 +452,7 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa) for (fcm= fcu->modifiers.first; fcm; fcm= fcm->next) { col= uiLayoutColumn(pa->layout, 1); - ANIM_uiTemplate_fmodifier_draw(C, col, ale->id, &fcu->modifiers, fcm); + ANIM_uiTemplate_fmodifier_draw(col, ale->id, &fcu->modifiers, fcm); } MEM_freeN(ale); diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index e8eca9de281..df791297967 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -434,7 +434,7 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa) for (fcm= strip->modifiers.first; fcm; fcm= fcm->next) { col= uiLayoutColumn(pa->layout, 1); - ANIM_uiTemplate_fmodifier_draw(C, col, strip_ptr.id.data, &strip->modifiers, fcm); + ANIM_uiTemplate_fmodifier_draw(col, strip_ptr.id.data, &strip->modifiers, fcm); } } diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index 31d50e03cce..dcb10d0f2cf 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -36,7 +36,6 @@ extern "C" { #include "DNA_listBase.h" #include "DNA_action_types.h" #include "DNA_curve_types.h" -#include "DNA_sound_types.h" /* ************************************************ */ /* F-Curve DataTypes */ @@ -74,7 +73,6 @@ typedef enum eFModifier_Types { FMODIFIER_TYPE_FILTER, /* unimplemented - for applying: fft, high/low pass filters, etc. */ FMODIFIER_TYPE_PYTHON, FMODIFIER_TYPE_LIMITS, - FMODIFIER_TYPE_SOUND, /* NOTE: all new modifiers must be added above this line */ FMODIFIER_NUM_TYPES @@ -232,25 +230,6 @@ typedef enum eFMod_Noise_Modifications { FCM_NOISE_MODIF_MULTIPLY, /* Multiply the curve by noise */ } eFMod_Noise_Modifications; -/* sound modifier data */ -typedef struct FMod_Sound { - float strength; - float delay; - - short modification; - short pad[3]; - - bSound *sound; -} FMod_Sound; - -/* modification modes */ -typedef enum eFMod_Sound_Modifications { - FCM_SOUND_MODIF_REPLACE = 0, /* Modify existing curve, matching it's shape */ - FCM_SOUND_MODIF_ADD, /* Add amplitude to the curve */ - FCM_SOUND_MODIF_SUBTRACT, /* Subtract amplitude from the curve */ - FCM_SOUND_MODIF_MULTIPLY, /* Multiply the curve by amplitude */ -} eFMod_Sound_Modifications; - /* Drivers -------------------------------------- */ /* Driver Target diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index a5978937ed5..fc374ff093a 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -211,7 +211,6 @@ extern StructRNA RNA_FModifierGenerator; extern StructRNA RNA_FModifierLimits; extern StructRNA RNA_FModifierNoise; extern StructRNA RNA_FModifierPython; -extern StructRNA RNA_FModifierSound; extern StructRNA RNA_FollowPathConstraint; extern StructRNA RNA_Function; extern StructRNA RNA_GameBooleanProperty; diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index f3d36d60c23..62ee19df352 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -34,7 +34,6 @@ #include "DNA_anim_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_sound_types.h" #include "MEM_guardedalloc.h" @@ -50,7 +49,6 @@ EnumPropertyItem fmodifier_type_items[] = { {FMODIFIER_TYPE_FILTER, "FILTER", 0, "Filter", ""}, {FMODIFIER_TYPE_PYTHON, "PYTHON", 0, "Python", ""}, {FMODIFIER_TYPE_LIMITS, "LIMITS", 0, "Limits", ""}, - {FMODIFIER_TYPE_SOUND, "SOUND", 0, "Sound", ""}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -78,8 +76,6 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) return &RNA_FModifierPython; case FMODIFIER_TYPE_LIMITS: return &RNA_FModifierLimits; - case FMODIFIER_TYPE_SOUND: - return &RNA_FModifierSound; default: return &RNA_UnknownType; } @@ -620,46 +616,6 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna) } -/* --------- */ - -static void rna_def_fmodifier_sound(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - static EnumPropertyItem prop_modification_items[] = { - {FCM_SOUND_MODIF_REPLACE, "REPLACE", 0, "Replace", ""}, - {FCM_SOUND_MODIF_ADD, "ADD", 0, "Add", ""}, - {FCM_SOUND_MODIF_SUBTRACT, "SUBTRACT", 0, "Subtract", ""}, - {FCM_SOUND_MODIF_MULTIPLY, "MULTIPLY", 0, "Multiply", ""}, - {0, NULL, 0, NULL, NULL}}; - - srna= RNA_def_struct(brna, "FModifierSound", "FModifier"); - RNA_def_struct_ui_text(srna, "Sound F-Modifier", "Modifies an F-Curve based on the amplitudes in a sound."); - RNA_def_struct_sdna_from(srna, "FMod_Sound", "data"); - - prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, prop_modification_items); - RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve."); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - - prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "strength"); - RNA_def_property_ui_text(prop, "Strength", "Amplitude of the sound - the amount that it modifies the underlying curve"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - - prop= RNA_def_property(srna, "delay", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "delay"); - RNA_def_property_ui_text(prop, "delay", "The delay before the sound curve modification should start"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - - prop= RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE); - RNA_def_property_struct_type(prop, "Sound"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Sound", "Sound datablock used by this modifier."); - -} - /* --------- */ static void rna_def_fmodifier(BlenderRNA *brna) @@ -989,7 +945,6 @@ void RNA_def_fcurve(BlenderRNA *brna) rna_def_fmodifier_python(brna); rna_def_fmodifier_limits(brna); rna_def_fmodifier_noise(brna); - rna_def_fmodifier_sound(brna); } -- cgit v1.2.3 From 1d224ad692c8794500f4d6fd5257887db150a635 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Thu, 24 Dec 2009 14:58:11 +0000 Subject: Added rectifying sound effect (will be used for sound -> f-curve later). --- intern/audaspace/FX/AUD_RectifyFactory.cpp | 45 ++++++++++++ intern/audaspace/FX/AUD_RectifyFactory.h | 51 ++++++++++++++ intern/audaspace/FX/AUD_RectifyReader.cpp | 82 ++++++++++++++++++++++ intern/audaspace/FX/AUD_RectifyReader.h | 65 +++++++++++++++++ intern/audaspace/intern/AUD_C-API.cpp | 15 ++++ intern/audaspace/intern/AUD_C-API.h | 7 ++ intern/audaspace/intern/AUD_ConverterFunctions.cpp | 40 +++++++++++ intern/audaspace/intern/AUD_ConverterFunctions.h | 17 +++++ 8 files changed, 322 insertions(+) create mode 100644 intern/audaspace/FX/AUD_RectifyFactory.cpp create mode 100644 intern/audaspace/FX/AUD_RectifyFactory.h create mode 100644 intern/audaspace/FX/AUD_RectifyReader.cpp create mode 100644 intern/audaspace/FX/AUD_RectifyReader.h diff --git a/intern/audaspace/FX/AUD_RectifyFactory.cpp b/intern/audaspace/FX/AUD_RectifyFactory.cpp new file mode 100644 index 00000000000..21786aea133 --- /dev/null +++ b/intern/audaspace/FX/AUD_RectifyFactory.cpp @@ -0,0 +1,45 @@ +/* + * $Id: AUD_VolumeFactory.cpp 22328 2009-08-09 23:23:19Z gsrb3d $ + * + * ***** BEGIN LGPL LICENSE BLOCK ***** + * + * Copyright 2009 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * AudaSpace is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AudaSpace 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with AudaSpace. If not, see . + * + * ***** END LGPL LICENSE BLOCK ***** + */ + +#include "AUD_RectifyFactory.h" +#include "AUD_RectifyReader.h" + +AUD_RectifyFactory::AUD_RectifyFactory(AUD_IFactory* factory) : + AUD_EffectFactory(factory) {} + +AUD_RectifyFactory::AUD_RectifyFactory() : + AUD_EffectFactory(0) {} + +AUD_IReader* AUD_RectifyFactory::createReader() +{ + AUD_IReader* reader = getReader(); + + if(reader != 0) + { + reader = new AUD_RectifyReader(reader); AUD_NEW("reader") + } + + return reader; +} diff --git a/intern/audaspace/FX/AUD_RectifyFactory.h b/intern/audaspace/FX/AUD_RectifyFactory.h new file mode 100644 index 00000000000..bc84f111832 --- /dev/null +++ b/intern/audaspace/FX/AUD_RectifyFactory.h @@ -0,0 +1,51 @@ +/* + * $Id: AUD_VolumeFactory.h 22328 2009-08-09 23:23:19Z gsrb3d $ + * + * ***** BEGIN LGPL LICENSE BLOCK ***** + * + * Copyright 2009 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * AudaSpace is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AudaSpace 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with AudaSpace. If not, see . + * + * ***** END LGPL LICENSE BLOCK ***** + */ + +#ifndef AUD_RECTIFYFACTORY +#define AUD_RECTIFYFACTORY + +#include "AUD_EffectFactory.h" + +/** + * This factory rectifies another factory. + */ +class AUD_RectifyFactory : public AUD_EffectFactory +{ +public: + /** + * Creates a new rectify factory. + * \param factory The input factory. + */ + AUD_RectifyFactory(AUD_IFactory* factory = 0); + + /** + * Creates a new rectify factory. + */ + AUD_RectifyFactory(); + + virtual AUD_IReader* createReader(); +}; + +#endif //AUD_RECTIFYFACTORY diff --git a/intern/audaspace/FX/AUD_RectifyReader.cpp b/intern/audaspace/FX/AUD_RectifyReader.cpp new file mode 100644 index 00000000000..aeb5ee74cbd --- /dev/null +++ b/intern/audaspace/FX/AUD_RectifyReader.cpp @@ -0,0 +1,82 @@ +/* + * $Id: AUD_VolumeReader.cpp 22328 2009-08-09 23:23:19Z gsrb3d $ + * + * ***** BEGIN LGPL LICENSE BLOCK ***** + * + * Copyright 2009 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * AudaSpace is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AudaSpace 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with AudaSpace. If not, see . + * + * ***** END LGPL LICENSE BLOCK ***** + */ + +#include "AUD_RectifyReader.h" +#include "AUD_Buffer.h" + +#include + +AUD_RectifyReader::AUD_RectifyReader(AUD_IReader* reader) : + AUD_EffectReader(reader) +{ + int bigendian = 1; + bigendian = (((char*)&bigendian)[0]) ? 0: 1; // 1 if Big Endian + + switch(m_reader->getSpecs().format) + { + case AUD_FORMAT_S16: + m_rectify = AUD_rectify; + break; + case AUD_FORMAT_S32: + m_rectify = AUD_rectify; + break; + case AUD_FORMAT_FLOAT32: + m_rectify = AUD_rectify; + break; + case AUD_FORMAT_FLOAT64: + m_rectify = AUD_rectify; + break; + case AUD_FORMAT_U8: + m_rectify = AUD_rectify_u8; + break; + case AUD_FORMAT_S24: + m_rectify = bigendian ? AUD_rectify_s24_be : AUD_rectify_s24_le; + break; + default: + delete m_reader; + AUD_THROW(AUD_ERROR_READER); + } + + m_buffer = new AUD_Buffer(); AUD_NEW("buffer") +} + +AUD_RectifyReader::~AUD_RectifyReader() +{ + delete m_buffer; AUD_DELETE("buffer") +} + +void AUD_RectifyReader::read(int & length, sample_t* & buffer) +{ + sample_t* buf; + AUD_Specs specs = m_reader->getSpecs(); + + m_reader->read(length, buf); + if(m_buffer->getSize() < length*AUD_SAMPLE_SIZE(specs)) + m_buffer->resize(length*AUD_SAMPLE_SIZE(specs)); + + buffer = m_buffer->getBuffer(); + + m_rectify(buffer, buf, length * specs.channels); +} diff --git a/intern/audaspace/FX/AUD_RectifyReader.h b/intern/audaspace/FX/AUD_RectifyReader.h new file mode 100644 index 00000000000..35817db636b --- /dev/null +++ b/intern/audaspace/FX/AUD_RectifyReader.h @@ -0,0 +1,65 @@ +/* + * $Id: AUD_VolumeReader.h 22328 2009-08-09 23:23:19Z gsrb3d $ + * + * ***** BEGIN LGPL LICENSE BLOCK ***** + * + * Copyright 2009 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * AudaSpace is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AudaSpace 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with AudaSpace. If not, see . + * + * ***** END LGPL LICENSE BLOCK ***** + */ + +#ifndef AUD_RECTIFYREADER +#define AUD_RECTIFYREADER + +#include "AUD_EffectReader.h" +#include "AUD_ConverterFunctions.h" +class AUD_Buffer; + +/** + * This class reads another reader and rectifies it. + */ +class AUD_RectifyReader : public AUD_EffectReader +{ +private: + /** + * The playback buffer. + */ + AUD_Buffer *m_buffer; + + /** + * Rectifying function. + */ + AUD_rectify_f m_rectify; + +public: + /** + * Creates a new rectify reader. + * \param reader The reader to read from. + * \exception AUD_Exception Thrown if the reader specified is NULL. + */ + AUD_RectifyReader(AUD_IReader* reader); + + /** + * Destroys the reader. + */ + virtual ~AUD_RectifyReader(); + + virtual void read(int & length, sample_t* & buffer); +}; + +#endif //AUD_RECTIFYREADER diff --git a/intern/audaspace/intern/AUD_C-API.cpp b/intern/audaspace/intern/AUD_C-API.cpp index 255d1d2f1f6..cd6b95b1d9e 100644 --- a/intern/audaspace/intern/AUD_C-API.cpp +++ b/intern/audaspace/intern/AUD_C-API.cpp @@ -31,6 +31,7 @@ #include "AUD_LimiterFactory.h" #include "AUD_PingPongFactory.h" #include "AUD_LoopFactory.h" +#include "AUD_RectifyFactory.h" #include "AUD_ReadDevice.h" #include "AUD_SourceCaps.h" #include "AUD_IReader.h" @@ -285,6 +286,20 @@ int AUD_stopLoop(AUD_Handle* handle) return false; } +AUD_Sound* AUD_rectifySound(AUD_Sound* sound) +{ + assert(sound); + + try + { + return new AUD_RectifyFactory(sound); + } + catch(AUD_Exception) + { + return NULL; + } +} + void AUD_unload(AUD_Sound* sound) { assert(sound); diff --git a/intern/audaspace/intern/AUD_C-API.h b/intern/audaspace/intern/AUD_C-API.h index 66a5a5147b3..866f0248cb2 100644 --- a/intern/audaspace/intern/AUD_C-API.h +++ b/intern/audaspace/intern/AUD_C-API.h @@ -149,6 +149,13 @@ extern AUD_Sound* AUD_loopSound(AUD_Sound* sound); */ extern int AUD_stopLoop(AUD_Handle* handle); +/** + * Rectifies a sound. + * \param sound The sound to rectify. + * \return A handle of the rectified sound. + */ +extern AUD_Sound* AUD_rectifySound(AUD_Sound* sound); + /** * Unloads a sound of any type. * \param sound The handle of the sound. diff --git a/intern/audaspace/intern/AUD_ConverterFunctions.cpp b/intern/audaspace/intern/AUD_ConverterFunctions.cpp index b6d5dffa1a2..1b5d07bcc61 100644 --- a/intern/audaspace/intern/AUD_ConverterFunctions.cpp +++ b/intern/audaspace/intern/AUD_ConverterFunctions.cpp @@ -500,3 +500,43 @@ void AUD_volume_adjust_s24_be(sample_t* target, sample_t* source, } } +void AUD_rectify_u8(sample_t* target, sample_t* source, int count) +{ + for(int i=0; i> 23) * 255) << 24; + if(value < 0) + value = -value; + target[i+2] = value >> 16; + target[i+1] = value >> 8; + target[i] = value; + } +} + +void AUD_rectify_s24_be(sample_t* target, sample_t* source, int count) +{ + count *= 3; + int value; + + for(int i=0; i < count; i+=3) + { + value = source[i] << 16 | source[i+1] << 8 | source[i+2]; + value |= (((value & 0x800000) >> 23) * 255) << 24; + if(value < 0) + value = -value; + target[i] = value >> 16; + target[i+1] = value >> 8; + target[i+2] = value; + } +} + diff --git a/intern/audaspace/intern/AUD_ConverterFunctions.h b/intern/audaspace/intern/AUD_ConverterFunctions.h index c1dd0f4a3a2..686e58704b7 100644 --- a/intern/audaspace/intern/AUD_ConverterFunctions.h +++ b/intern/audaspace/intern/AUD_ConverterFunctions.h @@ -46,6 +46,8 @@ typedef void (*AUD_convert_f)(sample_t* target, sample_t* source, int length); typedef void (*AUD_volume_adjust_f)(sample_t* target, sample_t* source, int count, float volume); +typedef void (*AUD_rectify_f)(sample_t* target, sample_t* source, int count); + template void AUD_convert_copy(sample_t* target, sample_t* source, int length) { @@ -153,4 +155,19 @@ void AUD_volume_adjust_s24_le(sample_t* target, sample_t* source, void AUD_volume_adjust_s24_be(sample_t* target, sample_t* source, int count, float volume); +template +void AUD_rectify(sample_t* target, sample_t* source, int count) +{ + T* t = (T*)target; + T* s = (T*)source; + for(int i=0; i < count; i++) + t[i] = s[i] < 0 ? -s[i] : s[i]; +} + +void AUD_rectify_u8(sample_t* target, sample_t* source, int count); + +void AUD_rectify_s24_le(sample_t* target, sample_t* source, int count); + +void AUD_rectify_s24_be(sample_t* target, sample_t* source, int count); + #endif //AUD_CONVERTERFUNCTIONS -- cgit v1.2.3 From 4dd3e6c36070e64d8b1d784a34d9881ae2c3eed8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Dec 2009 16:10:26 +0000 Subject: support for registering operators using the same internal rna api as panels, menus, headers & render engines since there was a fair bit of duplicate functionality. will remove the old system and update scripts next. --- source/blender/blenkernel/BKE_sequencer.h | 2 +- source/blender/blenkernel/intern/brush.c | 4 + source/blender/editors/mesh/mesh_intern.h | 4 +- .../blender/editors/space_console/console_intern.h | 32 ++-- source/blender/editors/uvedit/uvedit_ops.c | 2 +- source/blender/makesdna/DNA_windowmanager_types.h | 63 +----- source/blender/makesrna/intern/rna_wm.c | 212 ++++++++++++++++++++- source/blender/makesrna/intern/rna_wm_api.c | 32 ++++ source/blender/python/intern/bpy_operator.c | 2 +- source/blender/python/intern/bpy_rna.c | 16 +- source/blender/windowmanager/WM_api.h | 22 ++- source/blender/windowmanager/WM_types.h | 54 +++++- source/blender/windowmanager/wm_window.h | 5 +- 13 files changed, 352 insertions(+), 98 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 070d98ce25f..dc7b6d3ad9b 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -195,7 +195,7 @@ void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_m void seq_update_sound(struct Sequence *seq); void seq_update_muting(struct Editing *ed); - +void seqbase_sound_reload(Scene *scene, ListBase *seqbase); void clear_scene_in_allseqs(struct Scene *sce); struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 09d73f20b9a..667b0d50ee9 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -40,6 +40,8 @@ #include "DNA_scene_types.h" #include "DNA_windowmanager_types.h" +#include "WM_types.h" + #include "RNA_access.h" #include "BLI_math.h" @@ -56,6 +58,8 @@ #include "BKE_texture.h" #include "BKE_utildefines.h" + + #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index e8ec85d8bd0..31e8cb16abc 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -34,6 +34,8 @@ struct bContext; struct wmOperatorType; +struct wmOperator; + #define UVCOPY(t, s) memcpy(t, s, 2 * sizeof(float)); @@ -197,7 +199,7 @@ extern EditVert *findnearestvert(ViewContext *vc, int *dist, short sel, short st 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 beauty, int numcuts, int seltype); -int EdgeSlide(EditMesh *em, wmOperator *op, short immediate, float imperc); +int EdgeSlide(EditMesh *em, struct wmOperator *op, short immediate, float imperc); void MESH_OT_merge(struct wmOperatorType *ot); void MESH_OT_subdivide(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_console/console_intern.h b/source/blender/editors/space_console/console_intern.h index 6d002efcc8e..889ed2dae81 100644 --- a/source/blender/editors/space_console/console_intern.h +++ b/source/blender/editors/space_console/console_intern.h @@ -51,28 +51,28 @@ ConsoleLine *console_history_verify(const struct bContext *C); int console_report_mask(SpaceConsole *sc); -void CONSOLE_OT_move(wmOperatorType *ot); -void CONSOLE_OT_delete(wmOperatorType *ot); -void CONSOLE_OT_insert(wmOperatorType *ot); +void CONSOLE_OT_move(struct wmOperatorType *ot); +void CONSOLE_OT_delete(struct wmOperatorType *ot); +void CONSOLE_OT_insert(struct wmOperatorType *ot); -void CONSOLE_OT_history_append(wmOperatorType *ot); -void CONSOLE_OT_scrollback_append(wmOperatorType *ot); +void CONSOLE_OT_history_append(struct wmOperatorType *ot); +void CONSOLE_OT_scrollback_append(struct wmOperatorType *ot); -void CONSOLE_OT_clear(wmOperatorType *ot); -void CONSOLE_OT_history_cycle(wmOperatorType *ot); -void CONSOLE_OT_copy(wmOperatorType *ot); -void CONSOLE_OT_paste(wmOperatorType *ot); -void CONSOLE_OT_zoom(wmOperatorType *ot); +void CONSOLE_OT_clear(struct wmOperatorType *ot); +void CONSOLE_OT_history_cycle(struct wmOperatorType *ot); +void CONSOLE_OT_copy(struct wmOperatorType *ot); +void CONSOLE_OT_paste(struct wmOperatorType *ot); +void CONSOLE_OT_zoom(struct wmOperatorType *ot); /* console_report.c */ -void CONSOLE_OT_select_pick(wmOperatorType *ot); /* report selection */ -void CONSOLE_OT_select_all_toggle(wmOperatorType *ot); -void CONSOLE_OT_select_border(wmOperatorType *ot); +void CONSOLE_OT_select_pick(struct wmOperatorType *ot); /* report selection */ +void CONSOLE_OT_select_all_toggle(struct wmOperatorType *ot); +void CONSOLE_OT_select_border(struct wmOperatorType *ot); -void CONSOLE_OT_report_replay(wmOperatorType *ot); -void CONSOLE_OT_report_delete(wmOperatorType *ot); -void CONSOLE_OT_report_copy(wmOperatorType *ot); +void CONSOLE_OT_report_replay(struct wmOperatorType *ot); +void CONSOLE_OT_report_delete(struct wmOperatorType *ot); +void CONSOLE_OT_report_copy(struct wmOperatorType *ot); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 0ee6115bbfe..a0e0ec30912 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -1814,7 +1814,7 @@ void UV_OT_select_loop(wmOperatorType *ot) /* ******************** linked select operator **************** */ -static select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, int pick) +static int select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, int pick) { SpaceImage *sima= CTX_wm_space_image(C); Scene *scene= CTX_data_scene(C); diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 2f640d3dfd4..66b50fbad04 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -180,64 +180,15 @@ typedef struct wmWindow { # typedef struct wmOperatorTypeMacro { struct wmOperatorTypeMacro *next, *prev; - + /* operator id */ char idname[MAX_ID_NAME]; /* rna pointer to access properties, like keymap */ struct IDProperty *properties; /* operator properties, assigned to ptr->data and can be written to a file */ - struct PointerRNA *ptr; + struct PointerRNA *ptr; } wmOperatorTypeMacro; -# -# -typedef struct wmOperatorType { - struct wmOperatorType *next, *prev; - - char *name; /* text for ui, undo */ - char *idname; /* unique identifier */ - char *description; /* tooltips and python docs */ - - /* this callback executes the operator without any interactive input, - * parameters may be provided through operator properties. cannot use - * any interface code or input device state. - * - see defines below for return values */ - int (*exec)(struct bContext *, struct wmOperator *); - - /* for modal temporary operators, initially invoke is called. then - * any further events are handled in modal. if the operation is - * cancelled due to some external reason, cancel is called - * - see defines below for return values */ - int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *); - int (*cancel)(struct bContext *, struct wmOperator *); - int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *); - - /* verify if the operator can be executed in the current context, note - * that the operator might still fail to execute even if this return true */ - int (*poll)(struct bContext *); - - /* optional panel for redo and repeat, autogenerated if not set */ - void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *); - - /* rna for properties */ - struct StructRNA *srna; - - /* struct wmOperatorTypeMacro */ - ListBase macro; - - short flag; - - /* pointer to modal keymap, do not free! */ - struct wmKeyMap *modalkeymap; - - /* only used for operators defined with python - * use to store pointers to python functions */ - void *pyop_data; - int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot); - -} wmOperatorType; - - /* partial copy of the event, for matching by eventhandler */ typedef struct wmKeyMapItem { struct wmKeyMapItem *next, *prev; @@ -318,18 +269,18 @@ typedef struct wmOperator { /* saved */ char idname[64]; /* used to retrieve type pointer */ IDProperty *properties; /* saved, user-settable properties */ - + /* runtime */ - wmOperatorType *type; /* operator type definition from idname */ + struct wmOperatorType *type; /* operator type definition from idname */ void *customdata; /* custom storage, only while operator runs */ - + struct PointerRNA *ptr; /* rna pointer to access properties */ struct ReportList *reports; /* errors and warnings storage */ - + ListBase macro; /* list of operators, can be a tree */ struct wmOperator *opm; /* current running macro, not saved */ short flag, pad[3]; - + } wmOperator; /* operator type exec(), invoke() modal(), return values */ diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 3a708cc8563..fdad021291a 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -584,6 +584,196 @@ static int rna_wmKeyMapItem_name_length(PointerRNA *ptr) return 0; } +static void rna_Operator_unregister(const bContext *C, StructRNA *type) +{ + char *idname; + wmOperatorType *ot= RNA_struct_blender_type_get(type); + + if(!ot) + return; + + RNA_struct_free_extension(type, &ot->ext); + + idname= ot->idname; + WM_operatortype_remove(ot->idname); + MEM_freeN(idname); + + // RNA_struct_free(&BLENDER_RNA, type); // WM_operatortype_remove calls this + + /* update while blender is running */ + if(C) + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); +} + +void operator_wrapper(wmOperatorType *ot, void *userdata) +{ + /* take care not to overwrite anything set in + * WM_operatortype_append_ptr before opfunc() is called */ + StructRNA *srna = ot->srna; + *ot= *((wmOperatorType *)userdata); + ot->srna= srna; /* restore */ + + RNA_struct_blender_type_set(ot->ext.srna, ot); +} + +#if 0 +static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL); +} + +static int PYTHON_OT_execute(bContext *C, wmOperator *op) +{ + return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL); +} + +static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot) +{ + return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL); +} + +static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) +{ + PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); +} +#endif + +static int operator_poll(bContext *C, wmOperatorType *ot) +{ + PointerRNA ptr; + ParameterList list; + FunctionRNA *func; + void *ret; + int visible; + + RNA_pointer_create(NULL, ot->ext.srna, NULL, &ptr); /* dummy */ + func= RNA_struct_find_function(&ptr, "poll"); + + RNA_parameter_list_create(&list, &ptr, func); + RNA_parameter_set_lookup(&list, "context", &C); + ot->ext.call(&ptr, func, &list); + + RNA_parameter_get_lookup(&list, "visible", &ret); + visible= *(int*)ret; + + RNA_parameter_list_free(&list); + + return visible; +} + +static int operator_exec(bContext *C, wmOperator *op) +{ + PointerRNA opr; + ParameterList list; + FunctionRNA *func; + void *ret; + int result; + + RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); + func= RNA_struct_find_function(&opr, "execute"); + + RNA_parameter_list_create(&list, &opr, func); + RNA_parameter_set_lookup(&list, "context", &C); + op->type->ext.call(&opr, func, &list); + + RNA_parameter_get_lookup(&list, "result", &ret); + result= *(int*)ret; + + RNA_parameter_list_free(&list); + + return result; +} + +static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + PointerRNA opr; + ParameterList list; + FunctionRNA *func; + void *ret; + int result; + + RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); + func= RNA_struct_find_function(&opr, "invoke"); + + RNA_parameter_list_create(&list, &opr, func); + RNA_parameter_set_lookup(&list, "context", &C); + RNA_parameter_set_lookup(&list, "event", &event); + op->type->ext.call(&opr, func, &list); + + RNA_parameter_get_lookup(&list, "result", &ret); + result= *(int*)ret; + + RNA_parameter_list_free(&list); + + return result; +} + +static char _operator_idname[OP_MAX_TYPENAME]; +static char _operator_descr[1024]; +static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) +{ + wmOperatorType dummyot = {0}; + wmOperator dummyop= {0}; + PointerRNA dummyotr; + int have_function[3]; + + /* setup dummy operator & operator type to store static properties in */ + dummyop.type= &dummyot; + dummyot.idname= _operator_idname; /* only assigne the pointer, string is NULL'd */ + dummyot.description= _operator_descr; /* only assigne the pointer, string is NULL'd */ + RNA_pointer_create(NULL, &RNA_Operator, &dummyop, &dummyotr); + + /* validate the python class */ + if(validate(&dummyotr, data, have_function) != 0) + return NULL; + + { /* convert foo.bar to FOO_OT_bar + * allocate the description and the idname in 1 go */ + int idlen = strlen(_operator_idname); + int desclen = strlen(_operator_descr); + dummyot.idname= MEM_callocN(sizeof(char) * (idlen + desclen + 2 + 3), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */ + WM_operator_bl_idname(dummyot.idname, _operator_idname); /* convert the idname from python */ + dummyot.description = dummyot.idname + (idlen + 4); + strcpy(dummyot.description, _operator_descr); + } + + if(strlen(identifier) >= sizeof(dummyop.idname)) { + BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s' is too long, maximum length is %d.", identifier, sizeof(dummyop.idname)); + return NULL; + } + + /* check if we have registered this operator type before, and remove it */ + { + wmOperatorType *ot= WM_operatortype_exists(dummyot.idname); + if(ot && ot->ext.srna) + rna_Operator_unregister(C, ot->ext.srna); + } + + /* create a new menu type */ + dummyot.ext.srna= RNA_def_struct(&BLENDER_RNA, dummyot.idname, "Operator"); + dummyot.ext.data= data; + dummyot.ext.call= call; + dummyot.ext.free= free; + + dummyot.pyop_poll= (have_function[0])? operator_poll: NULL; + dummyot.exec= (have_function[1])? operator_exec: NULL; + dummyot.invoke= (have_function[2])? operator_invoke: NULL; + + WM_operatortype_append_ptr(operator_wrapper, (void *)&dummyot); + + /* update while blender is running */ + if(C) + WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); + + return dummyot.ext.srna; +} + +static StructRNA* rna_Operator_refine(PointerRNA *opr) +{ + wmOperator *op= (wmOperator*)opr->data; + return (op->type && op->type->ext.srna)? op->type->ext.srna: &RNA_Operator; +} + #else static void rna_def_operator(BlenderRNA *brna) @@ -594,6 +784,8 @@ static void rna_def_operator(BlenderRNA *brna) srna= RNA_def_struct(brna, "Operator", NULL); RNA_def_struct_ui_text(srna, "Operator", "Storage of an operator being executed, or registered after execution."); RNA_def_struct_sdna(srna, "wmOperator"); + RNA_def_struct_refine_func(srna, "rna_Operator_refine"); + RNA_def_struct_register_funcs(srna, "rna_Operator_register", "rna_Operator_unregister"); prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -607,13 +799,31 @@ static void rna_def_operator(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Properties", ""); RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL); + /* Registration */ + prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "type->idname"); + RNA_def_property_string_maxlength(prop, OP_MAX_TYPENAME); /* else it uses the pointer size! */ + RNA_def_property_flag(prop, PROP_REGISTER); + + prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "type->description"); + RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ + RNA_def_property_flag(prop, PROP_REGISTER); + + prop= RNA_def_property(srna, "bl_register", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "type->flag", OPTYPE_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + + prop= RNA_def_property(srna, "bl_undo", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "type->flag", OPTYPE_UNDO); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + RNA_api_operator(srna); srna= RNA_def_struct(brna, "OperatorProperties", NULL); RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator."); RNA_def_struct_refine_func(srna, "rna_OperatorProperties_refine"); RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties"); - } static void rna_def_macro_operator(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 0cec66fe264..dcaff1a7c07 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -192,11 +192,43 @@ void RNA_api_operator(StructRNA *srna) FunctionRNA *func; PropertyRNA *parm; + /* utility, not for registering */ func= RNA_def_function(srna, "report", "rna_Operator_report"); parm= RNA_def_enum(func, "type", wm_report_items, 0, "Type", ""); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_ENUM_FLAG); parm= RNA_def_string(func, "message", "", 0, "Report Message", ""); RNA_def_property_flag(parm, PROP_REQUIRED); + + + /* Registration */ + + /* poll */ + func= RNA_def_function(srna, "poll", NULL); + RNA_def_function_ui_description(func, "Test if the operator can be called or not."); + RNA_def_function_flag(func, FUNC_REGISTER|FUNC_REGISTER_OPTIONAL); + RNA_def_function_return(func, RNA_def_boolean(func, "visible", 1, "", "")); + RNA_def_pointer(func, "context", "Context", "", ""); + + /* exec */ + func= RNA_def_function(srna, "execute", NULL); + RNA_def_function_ui_description(func, "Execute the operator."); + RNA_def_function_flag(func, FUNC_REGISTER); + RNA_def_pointer(func, "context", "Context", "", ""); + + parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name? + RNA_def_property_flag(parm, PROP_ENUM_FLAG); + RNA_def_function_return(func, parm); + + /* invoke */ + func= RNA_def_function(srna, "invoke", NULL); + RNA_def_function_ui_description(func, "Invoke the operator."); + RNA_def_function_flag(func, FUNC_REGISTER); + RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_pointer(func, "event", "Event", "", ""); + + parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name? + RNA_def_property_flag(parm, PROP_ENUM_FLAG); + RNA_def_function_return(func, parm); } void RNA_api_keyconfig(StructRNA *srna) diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index b4a2fb36a97..7ccbe1c16a4 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -63,7 +63,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) ot= WM_operatortype_exists(opname); if (ot == NULL) { - PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\"could not be found", opname); + PyErr_Format( PyExc_SystemError, "_bpy.ops.call: operator \"%s\" could not be found", opname); return NULL; } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 65d2b687275..d0cc3e95097 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -3824,13 +3824,12 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun PyObject *item, *fitem; PyObject *py_arg_count; int i, flag, arg_count, func_arg_count; - const char *identifier; + const char *py_class_name = ((PyTypeObject *)py_class)->tp_name; // __name__ + if (base_class) { if (!PyObject_IsSubclass(py_class, base_class)) { - PyObject *name= PyObject_GetAttrString(base_class, "__name__"); - PyErr_Format( PyExc_TypeError, "expected %.200s subclass of class \"%.200s\"", class_type, name ? _PyUnicode_AsString(name):""); - Py_XDECREF(name); + PyErr_Format( PyExc_TypeError, "expected %.200s subclass of class \"%.200s\"", class_type, py_class_name); return -1; } } @@ -3852,7 +3851,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun if (item==NULL) { if ((flag & FUNC_REGISTER_OPTIONAL)==0) { - PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, RNA_function_identifier(func)); + PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, RNA_function_identifier(func)); return -1; } @@ -3867,7 +3866,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun fitem= item; /* py 3.x */ if (PyFunction_Check(fitem)==0) { - PyErr_Format( PyExc_TypeError, "expected %.200s class \"%.200s\" attribute to be a function", class_type, RNA_function_identifier(func)); + PyErr_Format( PyExc_TypeError, "expected %.200s, %.200s class \"%.200s\" attribute to be a function", class_type, py_class_name, RNA_function_identifier(func)); return -1; } @@ -3879,7 +3878,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun Py_DECREF(py_arg_count); if (arg_count != func_arg_count) { - PyErr_Format( PyExc_AttributeError, "expected %.200s class \"%.200s\" function to have %d args", class_type, RNA_function_identifier(func), func_arg_count); + PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class \"%.200s\" function to have %d args", class_type, py_class_name, RNA_function_identifier(func), func_arg_count); return -1; } } @@ -3889,6 +3888,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun /* verify properties */ lb= RNA_struct_defined_properties(srna); for(link=lb->first; link; link=link->next) { + const char *identifier; prop= (PropertyRNA*)link; flag= RNA_property_flag(prop); @@ -3914,7 +3914,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun if (item == NULL && (((flag & PROP_REGISTER_OPTIONAL) != PROP_REGISTER_OPTIONAL))) { - PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, identifier); + PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, identifier); return -1; } diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 8fe7ac39b35..d2b67142eb5 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -38,6 +38,8 @@ struct wmEventHandler; struct wmGesture; struct wmJob; struct wmNotifier; +struct wmOperatorType; +struct wmOperator; struct rcti; struct PointerRNA; struct EnumPropertyItem; @@ -185,16 +187,16 @@ int WM_operator_confirm_message(struct bContext *C, struct wmOperator *op, cha void WM_operator_free (struct wmOperator *op); void WM_operator_stack_clear(struct bContext *C); -wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet); -wmOperatorType *WM_operatortype_exists(const char *idname); -wmOperatorType *WM_operatortype_first(void); -void WM_operatortype_append (void (*opfunc)(wmOperatorType*)); -void WM_operatortype_append_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata); -void WM_operatortype_append_macro_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata); +struct wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet); +struct wmOperatorType *WM_operatortype_exists(const char *idname); +struct wmOperatorType *WM_operatortype_first(void); +void WM_operatortype_append (void (*opfunc)(struct wmOperatorType*)); +void WM_operatortype_append_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); +void WM_operatortype_append_macro_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); int WM_operatortype_remove(const char *idname); -wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag); -wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char *idname); +struct wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag); +struct wmOperatorTypeMacro *WM_operatortype_macro_define(struct wmOperatorType *ot, const char *idname); int WM_operator_poll (struct bContext *C, struct wmOperatorType *ot); @@ -208,8 +210,8 @@ void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot); void WM_operator_properties_free(struct PointerRNA *ptr); void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type); -void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend); -void WM_operator_properties_select_all(wmOperatorType *ot); +void WM_operator_properties_gesture_border(struct wmOperatorType *ot, int extend); +void WM_operator_properties_select_all(struct wmOperatorType *ot); /* MOVE THIS SOMEWHERE ELSE */ #define SEL_TOGGLE 0 diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 318945918e7..f0ccbed06c3 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -31,9 +31,13 @@ struct bContext; struct wmEvent; struct wmWindowManager; +struct uiLayout; +struct wmOperator; -/* exported types for WM */ +#include "RNA_types.h" +#include "DNA_listBase.h" +/* exported types for WM */ #include "wm_cursors.h" #include "wm_event_types.h" @@ -353,6 +357,54 @@ typedef struct wmTimer { } wmTimer; +typedef struct wmOperatorType { + struct wmOperatorType *next, *prev; + + char *name; /* text for ui, undo */ + char *idname; /* unique identifier */ + char *description; /* tooltips and python docs */ + + /* this callback executes the operator without any interactive input, + * parameters may be provided through operator properties. cannot use + * any interface code or input device state. + * - see defines below for return values */ + int (*exec)(struct bContext *, struct wmOperator *); + + /* for modal temporary operators, initially invoke is called. then + * any further events are handled in modal. if the operation is + * cancelled due to some external reason, cancel is called + * - see defines below for return values */ + int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *); + int (*cancel)(struct bContext *, struct wmOperator *); + int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *); + + /* verify if the operator can be executed in the current context, note + * that the operator might still fail to execute even if this return true */ + int (*poll)(struct bContext *); + + /* optional panel for redo and repeat, autogenerated if not set */ + void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *); + + /* rna for properties */ + struct StructRNA *srna; + + /* struct wmOperatorTypeMacro */ + ListBase macro; + + short flag; + + /* pointer to modal keymap, do not free! */ + struct wmKeyMap *modalkeymap; + + /* only used for operators defined with python + * use to store pointers to python functions */ + void *pyop_data; + int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot); + + /* RNA integration */ + ExtensionRNA ext; +} wmOperatorType; + /* **************** Paint Cursor ******************* */ typedef void (*wmPaintCursorDraw)(struct bContext *C, int, int, void *customdata); diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h index 84e246937e4..28b12a93b18 100644 --- a/source/blender/windowmanager/wm_window.h +++ b/source/blender/windowmanager/wm_window.h @@ -30,6 +30,7 @@ #define WM_WINDOW_H struct bScreen; +struct wmOperator; /* *************** internal api ************** */ void wm_ghost_init (bContext *C); @@ -62,8 +63,8 @@ wmWindow *wm_window_copy (bContext *C, wmWindow *winorig); void wm_window_testbreak (void); /* *************** window operators ************** */ -int wm_window_duplicate_op (bContext *C, wmOperator *op); -int wm_window_fullscreen_toggle_op(bContext *C, wmOperator *op); +int wm_window_duplicate_op (bContext *C, struct wmOperator *op); +int wm_window_fullscreen_toggle_op(bContext *C, struct wmOperator *op); #endif /* WM_WINDOW_H */ -- cgit v1.2.3 From bbe13e7823d916523ed9434023dee34f34d6cb8e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Dec 2009 19:50:43 +0000 Subject: * register operators like other classes * operators now return sets (converted into flags) * can't remove bpy_operator_wrap.c since macro's still use the custom register funcs --- release/scripts/io/export_3ds.py | 4 +- release/scripts/io/export_fbx.py | 4 +- release/scripts/io/export_mdd.py | 4 +- release/scripts/io/export_obj.py | 4 +- release/scripts/io/export_ply.py | 4 +- release/scripts/io/export_x3d.py | 4 +- release/scripts/io/import_anim_bvh.py | 4 +- release/scripts/io/import_scene_3ds.py | 4 +- release/scripts/io/import_scene_obj.py | 4 +- release/scripts/io/netrender/operators.py | 24 ++++---- release/scripts/io/netrender/utils.py | 2 +- release/scripts/modules/bpy/ops.py | 2 +- release/scripts/modules/rna_info.py | 12 +++- release/scripts/modules/rna_prop_ui.py | 6 +- release/scripts/op/add_armature_human.py | 4 +- release/scripts/op/add_mesh_torus.py | 4 +- release/scripts/op/console_python.py | 14 ++--- release/scripts/op/console_shell.py | 8 +-- release/scripts/op/mesh.py | 4 +- release/scripts/op/mesh_skin.py | 4 +- release/scripts/op/object.py | 14 ++--- release/scripts/op/presets.py | 10 +-- release/scripts/op/screen_play_rendered_anim.py | 2 +- release/scripts/op/uvcalc_follow_active.py | 4 +- release/scripts/op/uvcalc_smart_project.py | 4 +- release/scripts/op/vertexpaint_dirt.py | 2 +- release/scripts/op/wm.py | 68 ++++++++++----------- release/scripts/templates/operator.py | 4 +- release/scripts/templates/operator_simple.py | 4 +- .../scripts/ui/properties_data_armature_rigify.py | 32 +++++----- release/scripts/ui/space_console.py | 19 +++--- release/scripts/ui/space_info.py | 24 ++++---- release/scripts/ui/space_userpref.py | 30 ++++----- source/blender/editors/animation/keyframes_edit.c | 2 +- source/blender/editors/include/ED_keyframes_edit.h | 2 +- .../editors/space_sequencer/sequencer_edit.c | 12 ++-- source/blender/makesrna/intern/rna_wm.c | 59 ++++++------------ source/blender/python/intern/bpy_operator.c | 4 +- source/blender/python/intern/bpy_operator_wrap.c | 71 +++++++++++++++++----- source/blender/python/intern/bpy_rna.c | 12 ++++ source/blender/windowmanager/intern/wm_operators.c | 6 +- 41 files changed, 276 insertions(+), 229 deletions(-) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index edbb80b0272..a60aeeb3cb2 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1126,7 +1126,7 @@ class Export3DS(bpy.types.Operator): def execute(self, context): save_3ds(self.properties.path, context) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -1136,7 +1136,7 @@ class Export3DS(bpy.types.Operator): def poll(self, context): # Poll isnt working yet return context.active_object != None -bpy.ops.add(Export3DS) +bpy.types.register(Export3DS) # Add to a menu import dynamic_menu diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index ba2741a7e7e..401f645536f 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3426,7 +3426,7 @@ class ExportFBX(bpy.types.Operator): self.properties.BATCH_FILE_PREFIX, self.properties.BATCH_OWN_DIR) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -3434,7 +3434,7 @@ class ExportFBX(bpy.types.Operator): return ('RUNNING_MODAL',) -bpy.ops.add(ExportFBX) +bpy.types.register(ExportFBX) # if __name__ == "__main__": # bpy.ops.EXPORT_OT_ply(filename="/tmp/test.ply") diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index cfd73b1979e..22e76ae2427 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -173,14 +173,14 @@ class ExportMDD(bpy.types.Operator): raise Exception("filename not set") write(self.properties.path, context.scene, context.active_object, self.properties.start_frame, self.properties.end_frame, self.properties.fps) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(ExportMDD) +bpy.types.register(ExportMDD) # Add to a menu import dynamic_menu diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index d6026d10ba9..9d9b0e88732 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -980,7 +980,7 @@ class ExportOBJ(bpy.types.Operator): EXPORT_SEL_ONLY=self.properties.use_selection, EXPORT_ALL_SCENES=self.properties.use_all_scenes) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -991,7 +991,7 @@ class ExportOBJ(bpy.types.Operator): -bpy.ops.add(ExportOBJ) +bpy.types.register(ExportOBJ) import dynamic_menu diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index 858e22952b8..301fb4c5fe8 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -297,7 +297,7 @@ class ExportPLY(bpy.types.Operator): EXPORT_COLORS=self.properties.use_colors, ) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -316,7 +316,7 @@ class ExportPLY(bpy.types.Operator): row.prop(props, "use_colors") -bpy.ops.add(ExportPLY) +bpy.types.register(ExportPLY) import dynamic_menu diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 6cfe0f45626..95ddb21b21d 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1233,14 +1233,14 @@ class ExportX3D(bpy.types.Operator): def execute(self, context): x3d_export(self.properties.path, context, self.properties.apply_modifiers, self.properties.triangulate, self.properties.compress) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(ExportX3D) +bpy.types.register(ExportX3D) import dynamic_menu diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 30ff99c1fe8..0ea8dbe5356 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -887,7 +887,7 @@ class BvhImporter(bpy.types.Operator): read_bvh(context, self.properties.path) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -895,7 +895,7 @@ class BvhImporter(bpy.types.Operator): return ('RUNNING_MODAL',) -bpy.ops.add(BvhImporter) +bpy.types.register(BvhImporter) import dynamic_menu diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 4744c5df01a..d11b242b764 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1159,14 +1159,14 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): def execute(self, context): load_3ds(self.properties.path, context, 0.0, False, False) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(IMPORT_OT_autodesk_3ds) +bpy.types.register(IMPORT_OT_autodesk_3ds) import dynamic_menu menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...") diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index cbd2b831e55..e4a218fce4d 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -1616,7 +1616,7 @@ class IMPORT_OT_obj(bpy.types.Operator): self.properties.IMAGE_SEARCH, self.properties.POLYGROUPS) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -1624,7 +1624,7 @@ class IMPORT_OT_obj(bpy.types.Operator): return ('RUNNING_MODAL',) -bpy.ops.add(IMPORT_OT_obj) +bpy.types.register(IMPORT_OT_obj) import dynamic_menu diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index ec229fbb471..7f36087a30c 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -79,7 +79,7 @@ class RENDER_OT_netslave_bake(bpy.types.Operator): #bpy.ops.wm.save_mainfile(path = path + os.sep + root + "_baked.blend") - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -106,7 +106,7 @@ class RENDER_OT_netclientanim(bpy.types.Operator): bpy.ops.screen.render('INVOKE_AREA', animation=True) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -136,7 +136,7 @@ class RENDER_OT_netclientsend(bpy.types.Operator): self.report('ERROR', str(err)) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -176,7 +176,7 @@ class RENDER_OT_netclientstatus(bpy.types.Operator): job.name = j.name - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -206,7 +206,7 @@ class RENDER_OT_netclientblacklistslave(bpy.types.Operator): netsettings.slaves.remove(netsettings.active_slave_index) netsettings.active_slave_index = -1 - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -236,7 +236,7 @@ class RENDER_OT_netclientwhitelistslave(bpy.types.Operator): netsettings.slaves_blacklist.remove(netsettings.active_blacklisted_slave_index) netsettings.active_blacklisted_slave_index = -1 - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -282,7 +282,7 @@ class RENDER_OT_netclientslaves(bpy.types.Operator): slave = netsettings.slaves[-1] slave.name = s.name - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -311,7 +311,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator): netsettings.jobs.remove(netsettings.active_job_index) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -338,7 +338,7 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator): while(len(netsettings.jobs) > 0): netsettings.jobs.remove(0) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -383,7 +383,7 @@ class netclientdownload(bpy.types.Operator): conn.close() - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -406,7 +406,7 @@ class netclientscan(bpy.types.Operator): netsettings.server_address = address netsettings.server_port = port - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) @@ -432,7 +432,7 @@ class netclientweb(bpy.types.Operator): webbrowser.open("http://%s:%i" % (netsettings.server_address, netsettings.server_port)) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): return self.execute(context) diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 3da15a33b65..2d22dfb7320 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -62,7 +62,7 @@ def rnaType(rna_type): return rna_type def rnaOperator(rna_op): - if bpy: bpy.ops.add(rna_op) + if bpy: bpy.types.register(rna_op) return rna_op def reporting(report, message, errorType = None): diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index 93c0d719580..268189b2db4 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -21,7 +21,7 @@ # for slightly faster access from _bpy import ops as ops_module -op_add = ops_module.add +# op_add = ops_module.add op_remove = ops_module.remove op_add_macro = ops_module.add_macro op_dir = ops_module.dir diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 1de750a4ff2..84171335c64 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -121,12 +121,18 @@ class InfoFunctionRNA: # self.name = rna_func.name # functions have no name! self.description = rna_func.description.strip() - self.args = [] # todo - self.return_value = None # todo + self.args = [] + self.return_value = None def build(self): rna_prop = self.bl_prop - pass + + for rna_id, rna_prop in rna_type.parameters.items(): + prop = GetInfoPropertyRNA(rna_prop, parent_id) + if rna_prop.use_return: + self.return_value = prop + else: + self.args.append(prop) def __repr__(self): txt = '' diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 0aa62bb5960..aac6431768d 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -196,7 +196,7 @@ class WM_OT_properties_edit(bpy.types.Operator): prop_ui['description'] = self.properties.description - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): @@ -242,7 +242,7 @@ class WM_OT_properties_add(bpy.types.Operator): property = unique_name(item.keys()) item[property] = 1.0 - return ('FINISHED',) + return {'FINISHED'} class WM_OT_properties_remove(bpy.types.Operator): @@ -256,4 +256,4 @@ class WM_OT_properties_remove(bpy.types.Operator): def execute(self, context): item = eval("context.%s" % self.properties.path) del item[self.properties.property] - return ('FINISHED',) + return {'FINISHED'} diff --git a/release/scripts/op/add_armature_human.py b/release/scripts/op/add_armature_human.py index 264f290f271..8696312eae0 100644 --- a/release/scripts/op/add_armature_human.py +++ b/release/scripts/op/add_armature_human.py @@ -607,10 +607,10 @@ class AddHuman(bpy.types.Operator): bones.remove(bones[0]) metarig_template() bpy.ops.object.mode_set(mode=mode_orig) - return ('FINISHED',) + return {'FINISHED'} # Register the operator -bpy.ops.add(AddHuman) +bpy.types.register(AddHuman) # Add to a menu import dynamic_menu diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index 7e3b28b628e..685f1cae8a4 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -122,10 +122,10 @@ class AddTorus(bpy.types.Operator): ob_new.location = tuple(context.scene.cursor_location) - return ('FINISHED',) + return {'FINISHED'} # Register the operator -bpy.ops.add(AddTorus) +bpy.types.register(AddTorus) # Add to a menu import dynamic_menu diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 7f1d35ede20..383eb3c12d3 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -79,10 +79,10 @@ def execute(context): try: line = sc.history[-1].line except: - return ('CANCELLED',) + return {'CANCELLED'} if sc.console_type != 'PYTHON': - return ('CANCELLED',) + return {'CANCELLED'} console, stdout, stderr = get_console(hash(context.region)) @@ -136,7 +136,7 @@ def execute(context): if output_err: add_scrollback(output_err, 'ERROR') - return ('FINISHED',) + return {'FINISHED'} def autocomplete(context): @@ -150,10 +150,10 @@ def autocomplete(context): line = current_line.line if not console: - return ('CANCELLED',) + return {'CANCELLED'} if sc.console_type != 'PYTHON': - return ('CANCELLED',) + return {'CANCELLED'} # This function isnt aware of the text editor or being an operator # just does the autocomp then copy its results back @@ -172,7 +172,7 @@ def autocomplete(context): context.area.tag_redraw() - return ('FINISHED',) + return {'FINISHED'} def banner(context): @@ -195,4 +195,4 @@ def banner(context): console = get_console(hash(context.region))[0] console.locals["C"] = bpy.context - return ('FINISHED',) + return {'FINISHED'} diff --git a/release/scripts/op/console_shell.py b/release/scripts/op/console_shell.py index bdb4a746d95..4dc21114367 100644 --- a/release/scripts/op/console_shell.py +++ b/release/scripts/op/console_shell.py @@ -49,7 +49,7 @@ def execute(context): try: line = sc.history[-1].line except: - return ('CANCELLED',) + return {'CANCELLED'} bpy.ops.console.scrollback_append(text=sc.prompt + line, type='INPUT') @@ -60,13 +60,13 @@ def execute(context): remove_duplicates=True) sc.prompt = os.getcwd() + PROMPT - return ('FINISHED',) + return {'FINISHED'} def autocomplete(context): # sc = context.space_data # TODO - return ('CANCELLED',) + return {'CANCELLED'} def banner(context): @@ -75,4 +75,4 @@ def banner(context): shell_run("bash --version") sc.prompt = os.getcwd() + PROMPT - return ('FINISHED',) + return {'FINISHED'} diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py index 1de06963c7a..a8f50f28178 100644 --- a/release/scripts/op/mesh.py +++ b/release/scripts/op/mesh.py @@ -65,11 +65,11 @@ class MeshSelectInteriorFaces(bpy.types.Operator): def execute(self, context): main(context) - return ('FINISHED',) + return {'FINISHED'} # Register the operator -bpy.ops.add(MeshSelectInteriorFaces) +bpy.types.register(MeshSelectInteriorFaces) if __name__ == "__main__": bpy.ops.mesh.faces_select_interior() diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index a78da39c5d4..251cfb32b93 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -643,11 +643,11 @@ class MESH_OT_skin(bpy.types.Operator): def execute(self, context): main(context) - return ('FINISHED',) + return {'FINISHED'} # Register the operator -bpy.ops.add(MESH_OT_skin) +bpy.types.register(MESH_OT_skin) # Add to a menu import dynamic_menu diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 228d8566f77..1b421cac98c 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -57,7 +57,7 @@ class SelectPattern(bpy.types.Operator): elif not self.properties.extend: item.selected = False - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -97,7 +97,7 @@ class SubdivisionSet(bpy.types.Operator): relative = self.properties.relative if relative and level == 0: - return ('CANCELLED',) # nothing to do + return {'CANCELLED'} # nothing to do def set_object_subd(obj): for mod in obj.modifiers: @@ -132,7 +132,7 @@ class SubdivisionSet(bpy.types.Operator): for obj in context.selected_editable_objects: set_object_subd(obj) - return ('FINISHED',) + return {'FINISHED'} class Retopo(bpy.types.Operator): @@ -146,9 +146,9 @@ class Retopo(bpy.types.Operator): def execute(self, context): import retopo retopo.main() - return ('FINISHED',) + return {'FINISHED'} -bpy.ops.add(SelectPattern) -bpy.ops.add(SubdivisionSet) -bpy.ops.add(Retopo) +bpy.types.register(SelectPattern) +bpy.types.register(SubdivisionSet) +bpy.types.register(Retopo) diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 0f6d5e11b5c..af338c9364d 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -40,7 +40,7 @@ class AddPresetBase(bpy.types.Operator): def execute(self, context): if not self.properties.name: - return ('FINISHED',) + return {'FINISHED'} filename = self._as_filename(self.properties.name) + ".py" @@ -53,7 +53,7 @@ class AddPresetBase(bpy.types.Operator): file_preset.close() - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -125,6 +125,6 @@ class AddPresetCloth(AddPresetBase): preset_subdir = "cloth" -bpy.ops.add(AddPresetRender) -bpy.ops.add(AddPresetSSS) -bpy.ops.add(AddPresetCloth) +bpy.types.register(AddPresetRender) +bpy.types.register(AddPresetSSS) +bpy.types.register(AddPresetCloth) diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index a1401304c08..40173879787 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -146,4 +146,4 @@ class PlayRenderedAnim(bpy.types.Operator): return('FINISHED',) -bpy.ops.add(PlayRenderedAnim) +bpy.types.register(PlayRenderedAnim) diff --git a/release/scripts/op/uvcalc_follow_active.py b/release/scripts/op/uvcalc_follow_active.py index f2dcaec4728..8ab5b8ec454 100644 --- a/release/scripts/op/uvcalc_follow_active.py +++ b/release/scripts/op/uvcalc_follow_active.py @@ -257,9 +257,9 @@ class FollowActiveQuads(bpy.types.Operator): def execute(self, context): main(context, self) - return ('FINISHED',) + return {'FINISHED'} -bpy.ops.add(FollowActiveQuads) +bpy.types.register(FollowActiveQuads) # Add to a menu import dynamic_menu diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index f3c8f7ed7dd..25840e04cf8 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -1130,9 +1130,9 @@ class SmartProject(bpy.types.Operator): def execute(self, context): main(context, self.properties.island_margin, self.properties.angle_limit) - return ('FINISHED',) + return {'FINISHED'} -bpy.ops.add(SmartProject) +bpy.types.register(SmartProject) # Add to a menu import dynamic_menu diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index a521c24e06c..f029541dbca 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -175,7 +175,7 @@ class VertexPaintDirt(bpy.types.Operator): return('FINISHED',) -bpy.ops.add(VertexPaintDirt) +bpy.types.register(VertexPaintDirt) if __name__ == "__main__": bpy.ops.mesh.vertex_paint_dirt() diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 45a9e91d2c6..58cc2743932 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -34,7 +34,7 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator): bpy.ops.mesh.select_more() bpy.ops.mesh.remove_doubles() - return ('FINISHED',) + return {'FINISHED'} rna_path_prop = StringProperty(name="Context Attributes", description="rna context string", maxlen=1024, default="") @@ -60,9 +60,9 @@ def context_path_validate(context, path): def execute_context_assign(self, context): if context_path_validate(context, self.properties.path) is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} exec("context.%s=self.properties.value" % self.properties.path) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_context_set_boolean(bpy.types.Operator): @@ -143,9 +143,9 @@ class WM_OT_context_set_value(bpy.types.Operator): def execute(self, context): if context_path_validate(context, self.properties.path) is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} exec("context.%s=%s" % (self.properties.path, self.properties.value)) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_context_toggle(bpy.types.Operator): @@ -159,12 +159,12 @@ class WM_OT_context_toggle(bpy.types.Operator): def execute(self, context): if context_path_validate(context, self.properties.path) is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} exec("context.%s=not (context.%s)" % (self.properties.path, self.properties.path)) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_context_toggle_enum(bpy.types.Operator): @@ -183,14 +183,14 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): def execute(self, context): if context_path_validate(context, self.properties.path) is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \ (self.properties.path, self.properties.value_1,\ self.properties.value_2, self.properties.path, self.properties.value_2)) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_context_cycle_int(bpy.types.Operator): @@ -207,7 +207,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator): value = context_path_validate(context, self.properties.path) if value is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} self.properties.value = value if self.properties.reverse: @@ -224,7 +224,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator): self.properties.value = - (1 << 32) execute_context_assign(self, context) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_context_cycle_enum(bpy.types.Operator): @@ -240,7 +240,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): value = context_path_validate(context, self.properties.path) if value is Ellipsis: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} orig_value = value @@ -276,7 +276,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): # set the new value exec("context.%s=advance_enum" % self.properties.path) - return ('FINISHED',) + return {'FINISHED'} doc_id = StringProperty(name="Doc ID", description="", maxlen=1024, default="", hidden=True) @@ -318,12 +318,12 @@ class WM_OT_doc_view(bpy.types.Operator): (self._prefix, class_name_full, class_prop) else: - return ('PASS_THROUGH',) + return {'PASS_THROUGH'} import webbrowser webbrowser.open(url) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_doc_edit(bpy.types.Operator): @@ -388,7 +388,7 @@ class WM_OT_doc_edit(bpy.types.Operator): self._send_xmlrpc(upload) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -403,29 +403,29 @@ class WM_OT_reload_scripts(bpy.types.Operator): def execute(self, context): MOD = type(bpy) bpy.load_scripts(True) - return ('FINISHED',) + return {'FINISHED'} -bpy.ops.add(MESH_OT_delete_edgeloop) +bpy.types.register(MESH_OT_delete_edgeloop) -bpy.ops.add(WM_OT_context_set_boolean) -bpy.ops.add(WM_OT_context_set_int) -bpy.ops.add(WM_OT_context_set_float) -bpy.ops.add(WM_OT_context_set_string) -bpy.ops.add(WM_OT_context_set_enum) -bpy.ops.add(WM_OT_context_set_value) -bpy.ops.add(WM_OT_context_toggle) -bpy.ops.add(WM_OT_context_toggle_enum) -bpy.ops.add(WM_OT_context_cycle_enum) -bpy.ops.add(WM_OT_context_cycle_int) +bpy.types.register(WM_OT_context_set_boolean) +bpy.types.register(WM_OT_context_set_int) +bpy.types.register(WM_OT_context_set_float) +bpy.types.register(WM_OT_context_set_string) +bpy.types.register(WM_OT_context_set_enum) +bpy.types.register(WM_OT_context_set_value) +bpy.types.register(WM_OT_context_toggle) +bpy.types.register(WM_OT_context_toggle_enum) +bpy.types.register(WM_OT_context_cycle_enum) +bpy.types.register(WM_OT_context_cycle_int) -bpy.ops.add(WM_OT_doc_view) -bpy.ops.add(WM_OT_doc_edit) +bpy.types.register(WM_OT_doc_view) +bpy.types.register(WM_OT_doc_edit) -bpy.ops.add(WM_OT_reload_scripts) +bpy.types.register(WM_OT_reload_scripts) # experemental! import rna_prop_ui -bpy.ops.add(rna_prop_ui.WM_OT_properties_edit) -bpy.ops.add(rna_prop_ui.WM_OT_properties_add) -bpy.ops.add(rna_prop_ui.WM_OT_properties_remove) +bpy.types.register(rna_prop_ui.WM_OT_properties_edit) +bpy.types.register(rna_prop_ui.WM_OT_properties_add) +bpy.types.register(rna_prop_ui.WM_OT_properties_remove) diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index 72a6ae53f5f..c6fb887b091 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -30,7 +30,7 @@ class ExportSomeData(bpy.types.Operator): write_some_data(self.properties.path, context, self.properties.use_setting) - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -46,7 +46,7 @@ class ExportSomeData(bpy.types.Operator): return self.execute(context) -bpy.ops.add(ExportSomeData) +bpy.types.register(ExportSomeData) # Only needed if you want to add into a dynamic menu import dynamic_menu diff --git a/release/scripts/templates/operator_simple.py b/release/scripts/templates/operator_simple.py index 030ed85f01f..c62d3720d96 100644 --- a/release/scripts/templates/operator_simple.py +++ b/release/scripts/templates/operator_simple.py @@ -13,9 +13,9 @@ class SimpleOperator(bpy.types.Operator): def execute(self, context): main(context) - return ('FINISHED',) + return {'FINISHED'} -bpy.ops.add(SimpleOperator) +bpy.types.register(SimpleOperator) if __name__ == "__main__": bpy.ops.object.simple_operator() diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 9d04afe22b5..12f1b0ed5e5 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -138,7 +138,7 @@ class Reload(bpy.types.Operator): def execute(self, context): DATA_PT_template.templates[:] = metarig_templates() - return ('FINISHED',) + return {'FINISHED'} def rigify_report_exception(operator, exception): @@ -180,7 +180,7 @@ class Generate(bpy.types.Operator): except rigify.RigifyError as rig_exception: rigify_report_exception(self, rig_exception) - return ('FINISHED',) + return {'FINISHED'} class Validate(bpy.types.Operator): @@ -196,7 +196,7 @@ class Validate(bpy.types.Operator): rigify.validate_rig(context, context.object) except rigify.RigifyError as rig_exception: rigify_report_exception(self, rig_exception) - return ('FINISHED',) + return {'FINISHED'} class Sample(bpy.types.Operator): @@ -219,7 +219,7 @@ class Sample(bpy.types.Operator): if obj_gen: obj_gen.location.x = i * 1.0 - return ('FINISHED',) + return {'FINISHED'} class Graph(bpy.types.Operator): @@ -244,7 +244,7 @@ class Graph(bpy.types.Operator): os.system("dot -Tpng %s > %s; gnome-open %s &" % (path_dot, path_png, path_png)) #os.system("python /b/xdot.py '%s' &" % path_dot) - return ('FINISHED',) + return {'FINISHED'} class AsScript(bpy.types.Operator): @@ -267,7 +267,7 @@ class AsScript(bpy.types.Operator): file.write(code) file.close() - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): import os @@ -294,7 +294,7 @@ class ActiveAssign(bpy.types.Operator): pose_templates = scene.pose_templates template_name = DATA_PT_template.templates[pose_templates.active_template_index] context.active_pose_bone["type"] = template_name - return ('FINISHED',) + return {'FINISHED'} class ActiveClear(bpy.types.Operator): @@ -310,7 +310,7 @@ class ActiveClear(bpy.types.Operator): def execute(self, context): scene = context.scene del context.active_pose_bone["type"] - return ('FINISHED',) + return {'FINISHED'} import space_info @@ -336,15 +336,15 @@ bpy.types.register(DATA_PT_template) bpy.types.register(PoseTemplateSettings) bpy.types.register(PoseTemplate) -bpy.ops.add(Reload) -bpy.ops.add(Generate) -bpy.ops.add(Validate) -bpy.ops.add(Sample) -bpy.ops.add(Graph) -bpy.ops.add(AsScript) +bpy.types.register(Reload) +bpy.types.register(Generate) +bpy.types.register(Validate) +bpy.types.register(Sample) +bpy.types.register(Graph) +bpy.types.register(AsScript) -bpy.ops.add(ActiveAssign) -bpy.ops.add(ActiveClear) +bpy.types.register(ActiveAssign) +bpy.types.register(ActiveClear) bpy.types.register(INFO_MT_armature_metarig_add) diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index 5e086435ddd..3e593246e2c 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -131,7 +131,7 @@ class ConsoleExec(bpy.types.Operator): return execute(context) else: print("Error: bpy.ops.console.execute_" + sc.language + " - not found") - return ('FINISHED',) + return {'FINISHED'} class ConsoleAutocomplete(bpy.types.Operator): @@ -153,11 +153,13 @@ class ConsoleAutocomplete(bpy.types.Operator): return autocomplete(context) else: print("Error: bpy.ops.console.autocomplete_" + sc.language + " - not found") - return ('FINISHED',) + return {'FINISHED'} class ConsoleBanner(bpy.types.Operator): + '''Print a message whem the terminal initializes''' bl_idname = "console.banner" + bl_label = "Console Banner" def execute(self, context): sc = context.space_data @@ -173,12 +175,13 @@ class ConsoleBanner(bpy.types.Operator): return banner(context) else: print("Error: bpy.ops.console.banner_" + sc.language + " - not found") - return ('FINISHED',) + return {'FINISHED'} class ConsoleLanguage(bpy.types.Operator): '''Set the current language for this console''' bl_idname = "console.language" + bl_label = "Console Language" language = StringProperty(name="Language", maxlen=32, default="") def execute(self, context): @@ -193,7 +196,7 @@ class ConsoleLanguage(bpy.types.Operator): bpy.ops.console.history_append(text="", current_character=0, remove_duplicates=True) - return ('FINISHED',) + return {'FINISHED'} bpy.types.register(CONSOLE_HT_header) @@ -202,9 +205,9 @@ bpy.types.register(CONSOLE_MT_report) bpy.types.register(CONSOLE_MT_language) # Stubs that call the language operators -bpy.ops.add(ConsoleExec) -bpy.ops.add(ConsoleAutocomplete) -bpy.ops.add(ConsoleBanner) +bpy.types.register(ConsoleExec) +bpy.types.register(ConsoleAutocomplete) +bpy.types.register(ConsoleBanner) # Set the language and call the banner -bpy.ops.add(ConsoleLanguage) +bpy.types.register(ConsoleLanguage) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 56509a6e099..1f7ba15de61 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -308,7 +308,7 @@ class HelpOperator(bpy.types.Operator): def execute(self, context): import webbrowser webbrowser.open(self._url) - return ('FINISHED',) + return {'FINISHED'} class HELP_OT_manual(HelpOperator): @@ -391,14 +391,14 @@ class HELP_OT_operator_cheat_sheet(bpy.types.Operator): textblock.write('\n'.join(op_strings)) textblock.name = "OperatorList.txt" print("See OperatorList.txt textblock") - return ('FINISHED',) - -bpy.ops.add(HELP_OT_manual) -bpy.ops.add(HELP_OT_release_logs) -bpy.ops.add(HELP_OT_blender_website) -bpy.ops.add(HELP_OT_blender_eshop) -bpy.ops.add(HELP_OT_developer_community) -bpy.ops.add(HELP_OT_user_community) -bpy.ops.add(HELP_OT_report_bug) -bpy.ops.add(HELP_OT_python_api) -bpy.ops.add(HELP_OT_operator_cheat_sheet) + return {'FINISHED'} + +bpy.types.register(HELP_OT_manual) +bpy.types.register(HELP_OT_release_logs) +bpy.types.register(HELP_OT_blender_website) +bpy.types.register(HELP_OT_blender_eshop) +bpy.types.register(HELP_OT_developer_community) +bpy.types.register(HELP_OT_user_community) +bpy.types.register(HELP_OT_report_bug) +bpy.types.register(HELP_OT_python_api) +bpy.types.register(HELP_OT_operator_cheat_sheet) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 81f61b3c78c..08efb92f00e 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1646,7 +1646,7 @@ class WM_OT_keyconfig_test(bpy.types.Operator): if self.testConfig(kc): print("CONFLICT") - return ('FINISHED',) + return {'FINISHED'} def _string_value(value): result = "" @@ -1736,7 +1736,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): f.close() - return ('FINISHED',) + return {'FINISHED'} def invoke(self, context, event): wm = context.manager @@ -1753,7 +1753,7 @@ class WM_OT_keymap_edit(bpy.types.Operator): wm = context.manager km = context.keymap km.copy_to_user() - return ('FINISHED',) + return {'FINISHED'} class WM_OT_keymap_restore(bpy.types.Operator): @@ -1773,7 +1773,7 @@ class WM_OT_keymap_restore(bpy.types.Operator): km = context.keymap km.restore_to_default() - return ('FINISHED',) + return {'FINISHED'} class WM_OT_keyitem_restore(bpy.types.Operator): "Restore key map item." @@ -1792,7 +1792,7 @@ class WM_OT_keyitem_restore(bpy.types.Operator): km.restore_item_to_default(kmi) - return ('FINISHED',) + return {'FINISHED'} class WM_OT_keyitem_add(bpy.types.Operator): "Add key map item." @@ -1806,7 +1806,7 @@ class WM_OT_keyitem_add(bpy.types.Operator): km.add_modal_item("", 'A', 'PRESS') # kmi else: km.add_item("", 'A', 'PRESS') # kmi - return ('FINISHED',) + return {'FINISHED'} class WM_OT_keyitem_remove(bpy.types.Operator): @@ -1819,12 +1819,12 @@ class WM_OT_keyitem_remove(bpy.types.Operator): kmi = context.keyitem km = context.keymap km.remove_item(kmi) - return ('FINISHED',) - -bpy.ops.add(WM_OT_keyconfig_export) -bpy.ops.add(WM_OT_keyconfig_test) -bpy.ops.add(WM_OT_keymap_edit) -bpy.ops.add(WM_OT_keymap_restore) -bpy.ops.add(WM_OT_keyitem_add) -bpy.ops.add(WM_OT_keyitem_remove) -bpy.ops.add(WM_OT_keyitem_restore) + return {'FINISHED'} + +bpy.types.register(WM_OT_keyconfig_export) +bpy.types.register(WM_OT_keyconfig_test) +bpy.types.register(WM_OT_keymap_edit) +bpy.types.register(WM_OT_keymap_restore) +bpy.types.register(WM_OT_keyitem_add) +bpy.types.register(WM_OT_keyitem_remove) +bpy.types.register(WM_OT_keyitem_restore) diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index 9476aa479a7..413f01590ed 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -562,7 +562,7 @@ short bezt_to_cfraelem(BeztEditData *bed, BezTriple *bezt) /* used to remap times from one range to another * requires: bed->data = BeztEditCD_Remap */ -short bezt_remap_times(BeztEditData *bed, BezTriple *bezt) +void bezt_remap_times(BeztEditData *bed, BezTriple *bezt) { BeztEditCD_Remap *rmap= (BeztEditCD_Remap*)bed->data; const float scale = (rmap->newMax - rmap->newMin) / (rmap->oldMax - rmap->oldMin); diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h index 26290d8771c..9e29d747d4a 100644 --- a/source/blender/editors/include/ED_keyframes_edit.h +++ b/source/blender/editors/include/ED_keyframes_edit.h @@ -154,7 +154,7 @@ short bezt_to_cfraelem(BeztEditData *bed, struct BezTriple *bezt); /* used to remap times from one range to another * requires: bed->custom = BeztEditCD_Remap */ -short bezt_remap_times(BeztEditData *bed, struct BezTriple *bezt); +void bezt_remap_times(BeztEditData *bed, struct BezTriple *bezt); /* ************************************************ */ /* Destructive Editing API (keyframes_general.c) */ diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index bfb7d139074..f174e96120c 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2102,7 +2102,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) Sequence *seq, *seqm, *next; - int tot, channel_max= 1; + int channel_max= 1; if(ed==NULL) return OPERATOR_CANCELLED; @@ -2241,10 +2241,10 @@ void SEQUENCER_OT_meta_separate(wmOperatorType *ot) /* view_all operator */ static int sequencer_view_all_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + //Scene *scene= CTX_data_scene(C); bScreen *sc= CTX_wm_screen(C); ScrArea *area= CTX_wm_area(C); - ARegion *ar= CTX_wm_region(C); + //ARegion *ar= CTX_wm_region(C); View2D *v2d= UI_view2d_fromcontext(C); v2d->cur= v2d->tot; @@ -2275,11 +2275,11 @@ void SEQUENCER_OT_view_all(wmOperatorType *ot) static int sequencer_view_all_preview_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - bScreen *sc= CTX_wm_screen(C); + //bScreen *sc= CTX_wm_screen(C); ScrArea *area= CTX_wm_area(C); ARegion *ar= CTX_wm_region(C); SpaceSeq *sseq= area->spacedata.first; - View2D *v2d= UI_view2d_fromcontext(C); + //View2D *v2d= UI_view2d_fromcontext(C); /* Like zooming on an image view */ @@ -2735,7 +2735,7 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *seq_act; + Sequence *seq; if(ed==NULL) return OPERATOR_CANCELLED; diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index fdad021291a..51cd9d5d3ac 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -605,39 +605,6 @@ static void rna_Operator_unregister(const bContext *C, StructRNA *type) WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL); } -void operator_wrapper(wmOperatorType *ot, void *userdata) -{ - /* take care not to overwrite anything set in - * WM_operatortype_append_ptr before opfunc() is called */ - StructRNA *srna = ot->srna; - *ot= *((wmOperatorType *)userdata); - ot->srna= srna; /* restore */ - - RNA_struct_blender_type_set(ot->ext.srna, ot); -} - -#if 0 -static int PYTHON_OT_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - return PYTHON_OT_generic(PYOP_INVOKE, C, op->type, op, event, NULL); -} - -static int PYTHON_OT_execute(bContext *C, wmOperator *op) -{ - return PYTHON_OT_generic(PYOP_EXEC, C, op->type, op, NULL, NULL); -} - -static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot) -{ - return PYTHON_OT_generic(PYOP_POLL, C, ot, NULL, NULL, NULL); -} - -static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) -{ - PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); -} -#endif - static int operator_poll(bContext *C, wmOperatorType *ot) { PointerRNA ptr; @@ -708,7 +675,11 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) return result; } + +void operator_wrapper(wmOperatorType *ot, void *userdata); + static char _operator_idname[OP_MAX_TYPENAME]; +static char _operator_name[OP_MAX_TYPENAME]; static char _operator_descr[1024]; static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) { @@ -720,6 +691,7 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, /* setup dummy operator & operator type to store static properties in */ dummyop.type= &dummyot; dummyot.idname= _operator_idname; /* only assigne the pointer, string is NULL'd */ + dummyot.name= _operator_name; /* only assigne the pointer, string is NULL'd */ dummyot.description= _operator_descr; /* only assigne the pointer, string is NULL'd */ RNA_pointer_create(NULL, &RNA_Operator, &dummyop, &dummyotr); @@ -729,12 +701,19 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, { /* convert foo.bar to FOO_OT_bar * allocate the description and the idname in 1 go */ - int idlen = strlen(_operator_idname); - int desclen = strlen(_operator_descr); - dummyot.idname= MEM_callocN(sizeof(char) * (idlen + desclen + 2 + 3), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */ - WM_operator_bl_idname(dummyot.idname, _operator_idname); /* convert the idname from python */ - dummyot.description = dummyot.idname + (idlen + 4); - strcpy(dummyot.description, _operator_descr); + int idlen = strlen(_operator_idname) + 4; + int namelen = strlen(_operator_name) + 1; + int desclen = strlen(_operator_descr) + 1; + char *ch, *ch_arr; + ch_arr= ch= MEM_callocN(sizeof(char) * (idlen + namelen + desclen), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */ + WM_operator_bl_idname(ch, _operator_idname); /* convert the idname from python */ + dummyot.idname= ch; + ch += idlen; + strcpy(ch, _operator_name); + dummyot.name = ch; + ch += namelen; + strcpy(ch, _operator_descr); + dummyot.description = ch; } if(strlen(identifier) >= sizeof(dummyop.idname)) { @@ -806,7 +785,7 @@ static void rna_def_operator(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_REGISTER); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); - RNA_def_property_string_sdna(prop, NULL, "type->description"); + RNA_def_property_string_sdna(prop, NULL, "type->name"); RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ RNA_def_property_flag(prop, PROP_REGISTER); diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index 7ccbe1c16a4..101f3619da4 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -244,7 +244,7 @@ PyObject *BPY_operator_module( void ) static PyMethodDef pyop_as_string_meth ={"as_string", (PyCFunction) pyop_as_string, METH_VARARGS, NULL}; static PyMethodDef pyop_dir_meth = {"dir", (PyCFunction) pyop_dir, METH_NOARGS, NULL}; static PyMethodDef pyop_getrna_meth = {"get_rna", (PyCFunction) pyop_getrna, METH_O, NULL}; - static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL}; +// static PyMethodDef pyop_add_meth = {"add", (PyCFunction) PYOP_wrap_add, METH_O, NULL}; static PyMethodDef pyop_add_macro_meth ={"add_macro", (PyCFunction) PYOP_wrap_add_macro, METH_O, NULL}; static PyMethodDef pyop_macro_def_meth ={"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL}; static PyMethodDef pyop_remove_meth = {"remove", (PyCFunction) PYOP_wrap_remove, METH_O, NULL}; @@ -256,7 +256,7 @@ PyObject *BPY_operator_module( void ) PyModule_AddObject( submodule, "as_string",PyCFunction_New(&pyop_as_string_meth,NULL) ); PyModule_AddObject( submodule, "dir", PyCFunction_New(&pyop_dir_meth, NULL) ); PyModule_AddObject( submodule, "get_rna", PyCFunction_New(&pyop_getrna_meth, NULL) ); - PyModule_AddObject( submodule, "add", PyCFunction_New(&pyop_add_meth, NULL) ); +// PyModule_AddObject( submodule, "add", PyCFunction_New(&pyop_add_meth, NULL) ); PyModule_AddObject( submodule, "add_macro", PyCFunction_New(&pyop_add_macro_meth, NULL) ); PyModule_AddObject( submodule, "macro_define",PyCFunction_New(&pyop_macro_def_meth, NULL) ); PyModule_AddObject( submodule, "remove", PyCFunction_New(&pyop_remove_meth, NULL) ); diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index cd5b0756531..3bd18d98563 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -105,7 +105,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat py_class_instance = PyObject_Call(py_class, args, NULL); Py_DECREF(args); - + if (py_class_instance==NULL) { /* Initializing the class worked, now run its invoke function */ PyErr_Print(); PyErr_Clear(); @@ -128,7 +128,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat else if (mode==PYOP_EXEC) { item= PyObject_GetAttrString(py_class, "execute"); args = PyTuple_New(2); - + PyTuple_SET_ITEM(args, 1, pyrna_struct_CreatePyObject(&ptr_context)); } else if (mode==PYOP_POLL) { @@ -173,7 +173,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat Py_DECREF(args); Py_DECREF(item); } - + if (ret == NULL) { /* covers py_class_instance failing too */ if(op) BPy_errors_to_report(op->reports); @@ -202,7 +202,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat * If we ever want to do this and use the props again, * it can be done with - pyrna_pydict_to_props(op->ptr, kw, "") */ - + Py_DECREF(ret); } @@ -215,7 +215,7 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat BPY_flag_def *flag_def = pyop_ret_flags; strcpy(flag_str, ""); - + while(flag_def->name) { if (ret_flag & flag_def->flag) { if(flag_str[1]) @@ -260,6 +260,49 @@ static void PYTHON_OT_draw(bContext *C, wmOperator *op, uiLayout *layout) PYTHON_OT_generic(PYOP_DRAW, C, op->type, op, NULL, layout); } + + +void operator_wrapper(wmOperatorType *ot, void *userdata) +{ + /* take care not to overwrite anything set in + * WM_operatortype_append_ptr before opfunc() is called */ + StructRNA *srna = ot->srna; + *ot= *((wmOperatorType *)userdata); + ot->srna= srna; /* restore */ + + RNA_struct_blender_type_set(ot->ext.srna, ot); + + + /* Can't use this because it returns a dict proxy + * + * item= PyObject_GetAttrString(py_class, "__dict__"); + */ + { + PyObject *py_class = ot->ext.data; + PyObject *item= ((PyTypeObject*)py_class)->tp_dict; + if(item) { + /* only call this so pyrna_deferred_register_props gives a useful error + * WM_operatortype_append_ptr will call RNA_def_struct_identifier + * later */ + RNA_def_struct_identifier(ot->srna, ot->idname); + + if(pyrna_deferred_register_props(ot->srna, item)!=0) { + /* failed to register operator props */ + PyErr_Print(); + PyErr_Clear(); + + } + } + else { + PyErr_Clear(); + } + } +} + + + + + void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) { PyObject *py_class = (PyObject *)userdata; @@ -283,8 +326,8 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) item= PyObject_GetAttrString(py_class, PYOP_ATTR_DESCRIPTION); ot->description= (item && PyUnicode_Check(item)) ? _PyUnicode_AsString(item):"undocumented python operator"; Py_XDECREF(item); - - /* api callbacks, detailed checks dont on adding */ + + /* api callbacks, detailed checks dont on adding */ if (PyObject_HasAttrString(py_class, "invoke")) ot->invoke= PYTHON_OT_invoke; //else @@ -296,9 +339,9 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) ot->pyop_poll= PYTHON_OT_poll; if (PyObject_HasAttrString(py_class, "draw")) ot->ui= PYTHON_OT_draw; - + ot->pyop_data= userdata; - + /* flags */ ot->flag= 0; @@ -419,11 +462,11 @@ void PYTHON_OT_MACRO_wrapper(wmOperatorType *ot, void *userdata) /* pyOperators - Operators defined IN Python */ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) -{ +{ PyObject *base_class, *item; wmOperatorType *ot; - - + + char *idname= NULL; char idname_bl[OP_MAX_TYPENAME]; /* converted to blender syntax */ @@ -466,7 +509,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) Py_DECREF(item); /* end annoying conversion! */ - + /* remove if it already exists */ if ((ot=WM_operatortype_exists(idname))) { if(ot->pyop_data) { @@ -474,7 +517,7 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) } WM_operatortype_remove(idname); } - + Py_INCREF(py_class); WM_operatortype_append_ptr(PYTHON_OT_wrapper, py_class); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index d0cc3e95097..8eda19d8198 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -3912,7 +3912,18 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun } } +#if 0 + if(strcmp(identifier, "bl_label") == 0) { + item= PyObject_GetAttrString(py_class, "__doc__"); + if(item) { + Py_DECREF(item); /* no need to keep a ref, the class owns it */ + + if(pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class error:") != 0) + return -1; + } + } +#endif if (item == NULL && (((flag & PROP_REGISTER_OPTIONAL) != PROP_REGISTER_OPTIONAL))) { PyErr_Format( PyExc_AttributeError, "expected %.200s, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, identifier); return -1; @@ -4092,6 +4103,7 @@ void pyrna_free_types(void) } } RNA_PROP_END; + } /* Note! MemLeak XXX diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 4ad067e8743..6d008d5cbb3 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2655,9 +2655,13 @@ void wm_operatortype_free(void) { wmOperatorType *ot; - for(ot= global_ops.first; ot; ot= ot->next) + for(ot= global_ops.first; ot; ot= ot->next) { if(ot->macro.first) wm_operatortype_free_macro(ot); + + if(ot->ext.srna) /* python operator, allocs own string */ + MEM_freeN(ot->idname); + } BLI_freelistN(&global_ops); } -- cgit v1.2.3 From 4b8bc301c62784d111f2cffcbc35cf9c6189e37b Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Thu, 24 Dec 2009 21:15:27 +0000 Subject: SVN maintenance. --- intern/audaspace/FX/AUD_RectifyFactory.cpp | 2 +- intern/audaspace/FX/AUD_RectifyFactory.h | 2 +- intern/audaspace/FX/AUD_RectifyReader.cpp | 2 +- intern/audaspace/FX/AUD_RectifyReader.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/intern/audaspace/FX/AUD_RectifyFactory.cpp b/intern/audaspace/FX/AUD_RectifyFactory.cpp index 21786aea133..f97defd793b 100644 --- a/intern/audaspace/FX/AUD_RectifyFactory.cpp +++ b/intern/audaspace/FX/AUD_RectifyFactory.cpp @@ -1,5 +1,5 @@ /* - * $Id: AUD_VolumeFactory.cpp 22328 2009-08-09 23:23:19Z gsrb3d $ + * $Id$ * * ***** BEGIN LGPL LICENSE BLOCK ***** * diff --git a/intern/audaspace/FX/AUD_RectifyFactory.h b/intern/audaspace/FX/AUD_RectifyFactory.h index bc84f111832..ed00620d318 100644 --- a/intern/audaspace/FX/AUD_RectifyFactory.h +++ b/intern/audaspace/FX/AUD_RectifyFactory.h @@ -1,5 +1,5 @@ /* - * $Id: AUD_VolumeFactory.h 22328 2009-08-09 23:23:19Z gsrb3d $ + * $Id$ * * ***** BEGIN LGPL LICENSE BLOCK ***** * diff --git a/intern/audaspace/FX/AUD_RectifyReader.cpp b/intern/audaspace/FX/AUD_RectifyReader.cpp index aeb5ee74cbd..9839aefa838 100644 --- a/intern/audaspace/FX/AUD_RectifyReader.cpp +++ b/intern/audaspace/FX/AUD_RectifyReader.cpp @@ -1,5 +1,5 @@ /* - * $Id: AUD_VolumeReader.cpp 22328 2009-08-09 23:23:19Z gsrb3d $ + * $Id$ * * ***** BEGIN LGPL LICENSE BLOCK ***** * diff --git a/intern/audaspace/FX/AUD_RectifyReader.h b/intern/audaspace/FX/AUD_RectifyReader.h index 35817db636b..17423811cdc 100644 --- a/intern/audaspace/FX/AUD_RectifyReader.h +++ b/intern/audaspace/FX/AUD_RectifyReader.h @@ -1,5 +1,5 @@ /* - * $Id: AUD_VolumeReader.h 22328 2009-08-09 23:23:19Z gsrb3d $ + * $Id$ * * ***** BEGIN LGPL LICENSE BLOCK ***** * -- cgit v1.2.3 From 5f4e24d5990a7ecd6198ee394da8b7c07277cd91 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Dec 2009 21:17:14 +0000 Subject: operator draw function working again. needed to add layout to the operator to give access to "self.layout" - like panels, headers and manu's have --- release/scripts/io/export_3ds.py | 2 +- release/scripts/io/export_fbx.py | 2 +- release/scripts/io/export_mdd.py | 2 +- release/scripts/io/export_obj.py | 2 +- release/scripts/io/export_ply.py | 2 +- release/scripts/io/export_x3d.py | 2 +- release/scripts/io/import_anim_bvh.py | 2 +- release/scripts/io/import_scene_3ds.py | 2 +- release/scripts/io/import_scene_obj.py | 2 +- release/scripts/modules/rna_prop_ui.py | 2 +- release/scripts/op/object.py | 2 +- release/scripts/op/presets.py | 2 +- release/scripts/op/wm.py | 6 +++--- release/scripts/templates/operator.py | 2 +- .../scripts/ui/properties_data_armature_rigify.py | 2 +- release/scripts/ui/space_userpref.py | 2 +- source/blender/editors/space_file/file_panels.c | 4 +++- .../blender/editors/space_view3d/view3d_toolbar.c | 7 +++++-- source/blender/makesdna/DNA_windowmanager_types.h | 1 + source/blender/makesrna/intern/rna_wm.c | 21 ++++++++++++++++++++- source/blender/makesrna/intern/rna_wm_api.c | 12 +++++++++--- source/blender/windowmanager/WM_types.h | 2 +- source/blender/windowmanager/intern/wm_operators.c | 21 +++++++++++++++------ 23 files changed, 72 insertions(+), 32 deletions(-) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index a60aeeb3cb2..163b683f60f 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1131,7 +1131,7 @@ class Export3DS(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} def poll(self, context): # Poll isnt working yet return context.active_object != None diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 401f645536f..19a3345bd94 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3431,7 +3431,7 @@ class ExportFBX(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(ExportFBX) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 22e76ae2427..66db8c14027 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -178,7 +178,7 @@ class ExportMDD(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(ExportMDD) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 9d9b0e88732..77acffe325c 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -985,7 +985,7 @@ class ExportOBJ(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index 301fb4c5fe8..f27b76d2cbe 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -302,7 +302,7 @@ class ExportPLY(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} def draw(self, context): layout = self.layout diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 95ddb21b21d..c4f1b53146f 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1238,7 +1238,7 @@ class ExportX3D(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(ExportX3D) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 0ea8dbe5356..cd040012840 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -892,7 +892,7 @@ class BvhImporter(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(BvhImporter) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index d11b242b764..608fc6bf5a2 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1164,7 +1164,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(IMPORT_OT_autodesk_3ds) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index e4a218fce4d..f135bfbb6c0 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -1621,7 +1621,7 @@ class IMPORT_OT_obj(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} bpy.types.register(IMPORT_OT_obj) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index aac6431768d..a390acf7932 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -216,7 +216,7 @@ class WM_OT_properties_edit(bpy.types.Operator): #return wm.invoke_props_popup(self, event) wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} class WM_OT_properties_add(bpy.types.Operator): diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 1b421cac98c..08fac5d4d3c 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -63,7 +63,7 @@ class SelectPattern(bpy.types.Operator): wm = context.manager # return wm.invoke_props_popup(self, event) wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} def draw(self, context): layout = self.layout diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index af338c9364d..76d84bc8b3d 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -61,7 +61,7 @@ class AddPresetBase(bpy.types.Operator): #return wm.invoke_props_popup(self, event) wm.invoke_props_popup(self, event) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} class AddPresetRender(AddPresetBase): diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 58cc2743932..c0a61017156 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -354,7 +354,7 @@ class WM_OT_doc_edit(bpy.types.Operator): class_name, class_prop = doc_id.split('.') if not doc_new: - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} # check if this is an operator op_name = class_name.upper() + '_OT_' + class_prop @@ -367,7 +367,7 @@ class WM_OT_doc_edit(bpy.types.Operator): rna = op_class.bl_rna doc_orig = rna.description if doc_orig == doc_new: - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} print("op - old:'%s' -> new:'%s'" % (doc_orig, doc_new)) upload["title"] = 'OPERATOR %s:%s' % (doc_id, doc_orig) @@ -379,7 +379,7 @@ class WM_OT_doc_edit(bpy.types.Operator): rna = getattr(bpy.types, class_name).bl_rna doc_orig = rna.properties[class_prop].description if doc_orig == doc_new: - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} print("rna - old:'%s' -> new:'%s'" % (doc_orig, doc_new)) upload["title"] = 'RNA %s:%s' % (doc_id, doc_orig) diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index c6fb887b091..9402a931db8 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -38,7 +38,7 @@ class ExportSomeData(bpy.types.Operator): if True: # File selector wm.add_fileselect(self) # will run self.execute() - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} elif 0: # Redo popup return wm.invoke_props_popup(self, event) # diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 12f1b0ed5e5..c0270d9b8ca 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -275,7 +275,7 @@ class AsScript(bpy.types.Operator): self.properties.path = os.path.splitext(bpy.data.filename)[0] + "-" + bpy.utils.clean_name(obj.name) + ".py" wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} # operators that use the GUI diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 08efb92f00e..99cab8f9ac2 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1741,7 +1741,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): def invoke(self, context, event): wm = context.manager wm.add_fileselect(self) - return ('RUNNING_MODAL',) + return {'RUNNING_MODAL'} class WM_OT_keymap_edit(bpy.types.Operator): diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index fb52a36cdcf..4e731cda5f3 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -175,7 +175,9 @@ static void file_panel_operator(const bContext *C, Panel *pa) int empty= 1, flag; if(op->type->ui) { - op->type->ui((bContext*)C, op, pa->layout); + op->layout= pa->layout; + op->type->ui((bContext*)C, op); + op->layout= NULL; } else { RNA_STRUCT_BEGIN(op->ptr, prop) { diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 5dbc6cc232c..0384a23579e 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -142,8 +142,11 @@ static void view3d_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOper } RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); - if(op->type->ui) - op->type->ui((bContext*)C, op, pa->layout); + if(op->type->ui) { + op->layout= pa->layout; + op->type->ui((bContext*)C, op); + op->layout= NULL; + } else uiDefAutoButsRNA(C, pa->layout, &ptr, 1); } diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 66b50fbad04..48d67714f15 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -279,6 +279,7 @@ typedef struct wmOperator { ListBase macro; /* list of operators, can be a tree */ struct wmOperator *opm; /* current running macro, not saved */ + struct uiLayout *layout; /* runtime for drawing */ short flag, pad[3]; } wmOperator; diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 51cd9d5d3ac..7abba3c004a 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -675,6 +675,21 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) return result; } +static void operator_draw(bContext *C, wmOperator *op) +{ + PointerRNA opr; + ParameterList list; + FunctionRNA *func; + + RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); + func= RNA_struct_find_function(&opr, "draw"); + + RNA_parameter_list_create(&list, &opr, func); + RNA_parameter_set_lookup(&list, "context", &C); + op->type->ext.call(&opr, func, &list); + + RNA_parameter_list_free(&list); +} void operator_wrapper(wmOperatorType *ot, void *userdata); @@ -686,7 +701,7 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, wmOperatorType dummyot = {0}; wmOperator dummyop= {0}; PointerRNA dummyotr; - int have_function[3]; + int have_function[4]; /* setup dummy operator & operator type to store static properties in */ dummyop.type= &dummyot; @@ -737,6 +752,7 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports, dummyot.pyop_poll= (have_function[0])? operator_poll: NULL; dummyot.exec= (have_function[1])? operator_exec: NULL; dummyot.invoke= (have_function[2])? operator_invoke: NULL; + dummyot.ui= (have_function[3])? operator_draw: NULL; WM_operatortype_append_ptr(operator_wrapper, (void *)&dummyot); @@ -778,6 +794,9 @@ static void rna_def_operator(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Properties", ""); RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL); + prop= RNA_def_property(srna, "layout", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "UILayout"); + /* Registration */ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index dcaff1a7c07..1afedf1c6a6 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -205,14 +205,14 @@ void RNA_api_operator(StructRNA *srna) /* poll */ func= RNA_def_function(srna, "poll", NULL); RNA_def_function_ui_description(func, "Test if the operator can be called or not."); - RNA_def_function_flag(func, FUNC_REGISTER|FUNC_REGISTER_OPTIONAL); + RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL); RNA_def_function_return(func, RNA_def_boolean(func, "visible", 1, "", "")); RNA_def_pointer(func, "context", "Context", "", ""); /* exec */ func= RNA_def_function(srna, "execute", NULL); RNA_def_function_ui_description(func, "Execute the operator."); - RNA_def_function_flag(func, FUNC_REGISTER); + RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL); RNA_def_pointer(func, "context", "Context", "", ""); parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name? @@ -222,13 +222,19 @@ void RNA_api_operator(StructRNA *srna) /* invoke */ func= RNA_def_function(srna, "invoke", NULL); RNA_def_function_ui_description(func, "Invoke the operator."); - RNA_def_function_flag(func, FUNC_REGISTER); + RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL); RNA_def_pointer(func, "context", "Context", "", ""); RNA_def_pointer(func, "event", "Event", "", ""); parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); // better name? RNA_def_property_flag(parm, PROP_ENUM_FLAG); RNA_def_function_return(func, parm); + + /* draw */ + func= RNA_def_function(srna, "draw", NULL); + RNA_def_function_ui_description(func, "Draw function for the operator."); + RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL); + RNA_def_pointer(func, "context", "Context", "", ""); } void RNA_api_keyconfig(StructRNA *srna) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index f0ccbed06c3..78125954816 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -383,7 +383,7 @@ typedef struct wmOperatorType { int (*poll)(struct bContext *); /* optional panel for redo and repeat, autogenerated if not set */ - void (*ui)(struct bContext *, struct wmOperator *, struct uiLayout *); + void (*ui)(struct bContext *, struct wmOperator *); /* rna for properties */ struct StructRNA *srna; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 6d008d5cbb3..8a9fb1fa5b5 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -774,8 +774,11 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, width, 20, style); uiItemL(layout, op->type->name, 0); - if(op->type->ui) - op->type->ui((bContext*)C, op, layout); + if(op->type->ui) { + op->layout= layout; + op->type->ui((bContext*)C, op); + op->layout= NULL; + } else uiDefAutoButsRNA(C, layout, &ptr, columns); @@ -808,8 +811,11 @@ static uiBlock *wm_operator_create_ui(bContext *C, ARegion *ar, void *userData) RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, data->width, data->height, style); - if(op->type->ui) - op->type->ui((bContext*)C, op, layout); + if(op->type->ui) { + op->layout= layout; + op->type->ui((bContext*)C, op); + op->layout= NULL; + } uiPopupBoundsBlock(block, 4.0f, 0, 0); uiEndBlock(C, block); @@ -862,8 +868,11 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style); uiItemL(layout, op->type->name, 0); - if(op->type->ui) - op->type->ui(C, op, layout); + if(op->type->ui) { + op->layout= layout; + op->type->ui(C, op); + op->layout= NULL; + } else uiDefAutoButsRNA(C, layout, op->ptr, 2); -- cgit v1.2.3 From 4f3c477a85aa9c395f21830ed18e89407e9275db Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 09:01:23 +0000 Subject: fix for segfault getting RNA Enum default values, minor updates to introspection class --- release/scripts/modules/rna_info.py | 33 ++++++++++++++++++++++++++++---- source/blender/makesrna/intern/rna_rna.c | 9 +++++++-- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 84171335c64..abb7bb35af0 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -53,12 +53,23 @@ class InfoStructRNA: self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_id, rna_prop in rna_type.properties.items() if rna_id != "rna_type"] self.functions[:] = [GetInfoFunctionRNA(rna_prop, parent_id) for rna_prop in rna_type.functions.values()] - def getNestedProperties(self, ls = None): + def get_bases(self): + bases = [] + item = self + + while item: + item = item.base + if item: + bases.append(item) + + return bases + + def get_nested_properties(self, ls = None): if not ls: ls = self.properties[:] if self.nested: - self.nested.getNestedProperties(ls) + self.nested.get_nested_properties(ls) return ls @@ -86,6 +97,7 @@ class InfoPropertyRNA: self.identifier = rna_prop.identifier self.name = rna_prop.name self.description = rna_prop.description.strip() + self.default_str = "" def build(self): rna_prop = self.bl_prop @@ -105,6 +117,11 @@ class InfoPropertyRNA: if self.type == "enum": self.enum_items[:] = rna_prop.items.keys() + if self.array_length: + self.default_str = str(getattr(rna_prop, "default_array", "")) + else: + self.default_str = str(getattr(rna_prop, "default", "")) + self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections def __repr__(self): @@ -125,9 +142,10 @@ class InfoFunctionRNA: self.return_value = None def build(self): - rna_prop = self.bl_prop + rna_func = self.bl_func + parent_id = rna_func - for rna_id, rna_prop in rna_type.parameters.items(): + for rna_id, rna_prop in rna_func.parameters.items(): prop = GetInfoPropertyRNA(rna_prop, parent_id) if rna_prop.use_return: self.return_value = prop @@ -370,6 +388,13 @@ def BuildRNAInfo(): rna_info.build() for prop in rna_info.properties: prop.build() + for func in rna_info.functions: + func.build() + for prop in func.args: + prop.build() + if func.return_value: + func.return_value.build() + #for rna_info in InfoStructRNA.global_lookup.values(): # print(rna_info) diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 5997867030d..5fd87728fb8 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -641,13 +641,18 @@ static EnumPropertyItem *rna_EnumProperty_default_itemf(bContext *C, PointerRNA rna_idproperty_check(&prop, ptr); eprop= (EnumPropertyRNA*)prop; - if(eprop->itemf==NULL || eprop->itemf==rna_EnumProperty_default_itemf || !C) + if( (eprop->itemf == NULL) || + (eprop->itemf == rna_EnumProperty_default_itemf) || + (ptr->type == &RNA_EnumProperty) || + (C == NULL)) + { return eprop->item; + } return eprop->itemf(C, ptr, free); } -/* XXX - not sore this is needed? */ +/* XXX - not sure this is needed? */ static int rna_EnumProperty_default_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; -- cgit v1.2.3 From 4c5a314fef8cb15f1a5990180cf5025597afdd01 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 14:42:00 +0000 Subject: update rna_info and rna_rna for better introspection --- release/scripts/modules/bpy_types.py | 40 +++++--- release/scripts/modules/rna_info.py | 168 +++++++++++++++++++++++++++++-- source/blender/makesrna/intern/rna_rna.c | 34 +++++-- source/blender/python/epy_doc_gen.py | 4 +- 4 files changed, 216 insertions(+), 30 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 2351fa8b091..15bf71e017e 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -42,25 +42,27 @@ class Object(bpy_types.ID): @property def children(self): + """All the children of this object""" import bpy return [child for child in bpy.data.objects if child.parent == self] class _GenericBone: - ''' + """ functions for bones, common between Armature/Pose/Edit bones. internal subclassing use only. - ''' + """ __slots__ = () def translate(self, vec): + """Utility function to add *vec* to the head and tail of this bone.""" self.head += vec self.tail += vec def parent_index(self, parent_test): - ''' + """ The same as 'bone in other_bone.parent_recursive' but saved generating a list. - ''' + """ # use the name so different types can be tested. name = parent_test.name @@ -76,11 +78,13 @@ class _GenericBone: @property def basename(self): + """The name of this bone before any '.' character""" #return self.name.rsplit(".", 1)[0] return self.name.split(".")[0] @property def parent_recursive(self): + """A list of parents, starting with the immediate parent""" parent_list = [] parent = self.parent @@ -94,23 +98,26 @@ class _GenericBone: @property def length(self): + """The distance from head to tail, when set the head is moved to fit the length.""" return self.vector.length @length.setter def length(self, value): - """The distance from head to tail""" self.tail = self.head + ((self.tail - self.head).normalize() * value) @property def vector(self): + """The direction this bone is pointing. Utility function for (tail - head)""" return (self.tail - self.head) @property def children(self): + """A list of all the bones children.""" return [child for child in self._other_bones if child.parent == self] @property def children_recursive(self): + """a list of all children from this bone.""" bones_children = [] for bone in self._other_bones: index = bone.parent_index(self) @@ -123,10 +130,11 @@ class _GenericBone: @property def children_recursive_basename(self): - ''' + """ Returns a chain of children with the same base name as this bone - Only direct chains are supported, forks caused by multiple children with matching basenames will. - ''' + Only direct chains are supported, forks caused by multiple children with matching basenames will + terminate the function and not be returned. + """ basename = self.basename chain = [] @@ -177,10 +185,10 @@ class EditBone(StructRNA, _GenericBone): __slots__ = () def align_orientation(self, other): - ''' + """ Align this bone to another by moving its tail and settings its roll the length of the other bone is not used. - ''' + """ vec = other.vector.normalize() * self.length self.tail = self.head + vec self.roll = other.roll @@ -196,10 +204,10 @@ class Mesh(bpy_types.ID): __slots__ = () def from_pydata(self, verts, edges, faces): - ''' + """ Make a mesh from a list of verts/edges/faces Until we have a nicer way to make geometry, use this. - ''' + """ self.add_geometry(len(verts), len(edges), len(faces)) verts_flat = [f for v in verts for f in v] @@ -244,7 +252,7 @@ class Mesh(bpy_types.ID): return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges] def edge_loops(self, faces=None, seams=()): - ''' + """ Edge loops defined by faces Takes me.faces or a list of faces and returns the edge loops @@ -255,7 +263,7 @@ class Mesh(bpy_types.ID): [ [(0,1), (4, 8), (3,8)], ...] optionaly, seams are edge keys that will be removed - ''' + """ OTHER_INDEX = 2,3,0,1 # opposite face index @@ -396,9 +404,9 @@ class Menu(StructRNA): layout.operator(operator, text=bpy.utils.display_name(f)).path = path def draw_preset(self, context): - '''Define these on the subclass + """Define these on the subclass - preset_operator - preset_subdir - ''' + """ import bpy self.path_menu(bpy.utils.preset_paths(self.preset_subdir), self.preset_operator) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index abb7bb35af0..2a70feec9dd 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -20,6 +20,9 @@ import bpy +# use to strip python paths +script_paths = bpy.utils.script_paths() + def range_str(val): if val < -10000000: return '-inf' if val > 10000000: return 'inf' @@ -28,6 +31,12 @@ def range_str(val): else: return str(val) +def float_as_string(f): + val_str = "%g" % f + if '.' not in val_str and '-' not in val_str: # value could be 1e-05 + val_str += '.0' + return val_str + class InfoStructRNA: global_lookup = {} def __init__(self, rna_type): @@ -73,6 +82,31 @@ class InfoStructRNA: return ls + def _get_py_visible_attrs(self): + attrs = [] + py_class = getattr(bpy.types, self.identifier) + for attr_str in dir(py_class): + if attr_str.startswith("_"): + continue + attrs.append((attr_str, getattr(py_class, attr_str))) + return attrs + + + def get_py_properties(self): + properties = [] + for identifier, attr in self._get_py_visible_attrs(): + if type(attr) is property: + properties.append((identifier, attr)) + return properties + + def get_py_functions(self): + import types + functions = [] + for identifier, attr in self._get_py_visible_attrs(): + if type(attr) is types.FunctionType: + functions.append((identifier, attr)) + return functions + def __repr__(self): txt = '' @@ -106,6 +140,10 @@ class InfoPropertyRNA: self.min = getattr(rna_prop, "hard_min", -1) self.max = getattr(rna_prop, "hard_max", -1) self.array_length = getattr(rna_prop, "array_length", 0) + self.collection_type = GetInfoStructRNA(rna_prop.srna) + self.is_required = rna_prop.is_required + self.is_readonly = rna_prop.is_readonly + self.is_never_none = rna_prop.is_never_none self.type = rna_prop.type.lower() fixed_type = getattr(rna_prop, "fixed_type", "") @@ -118,12 +156,43 @@ class InfoPropertyRNA: self.enum_items[:] = rna_prop.items.keys() if self.array_length: - self.default_str = str(getattr(rna_prop, "default_array", "")) + self.default = tuple(getattr(rna_prop, "default_array", ())) + self.default_str = '' + # special case for floats + if len(self.default) > 0: + if type(self.default[0]) is float: + self.default_str = "(%s)" % ", ".join([float_as_string(f) for f in self.default]) + if not self.default_str: + self.default_str = str(self.default) else: - self.default_str = str(getattr(rna_prop, "default", "")) + self.default = getattr(rna_prop, "default", "") + if type(self.default) is float: + self.default_str = float_as_string(self.default) + else: + self.default_str = str(self.default) self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections - + + def get_default_string(self): + # pointer has no default, just set as None + if self.type == "pointer": + return "None" + elif self.type == "string": + return '"' + self.default_str + '"' + elif self.type == "enum": + if self.default_str: + return "'" + self.default_str + "'" + else: + return "" + + return self.default_str + + def get_arg_default(self, force=True): + default = self.get_default_string() + if default and (force or self.is_required == False): + return "%s=%s" % (self.identifier, default) + return self.identifier + def __repr__(self): txt = '' txt += ' * ' + self.identifier + ': ' + self.description @@ -162,6 +231,65 @@ class InfoFunctionRNA: return txt +class InfoOperatorRNA: + global_lookup = {} + def __init__(self, rna_op): + self.bl_op = rna_op + self.identifier = rna_op.identifier + + mod, name = self.identifier.split("_OT_", 1) + self.module_name = mod.lower() + self.func_name = name + + # self.name = rna_func.name # functions have no name! + self.description = rna_op.description.strip() + + self.args = [] + + def build(self): + rna_op = self.bl_op + parent_id = self.identifier + for rna_id, rna_prop in rna_op.properties.items(): + if rna_id == "rna_type": + continue + + prop = GetInfoPropertyRNA(rna_prop, parent_id) + self.args.append(prop) + + def get_location(self): + op_class = getattr(bpy.types, self.identifier) + op_func = getattr(op_class, "execute", None) + if op_func is None: + op_func = getattr(op_class, "invoke", None) + if op_func is None: + op_func = getattr(op_class, "poll", None) + + if op_func: + op_code = op_func.__code__ + source_path = op_code.co_filename + + # clear the prefix + for p in script_paths: + source_path = source_path.split(p)[-1] + + if source_path[0] in "/\\": + source_path= source_path[1:] + + return source_path, op_code.co_firstlineno + else: + return None, None + +''' + def __repr__(self): + txt = '' + txt += ' * ' + self.identifier + '(' + + for arg in self.args: + txt += arg.identifier + ', ' + txt += '): ' + self.description + return txt +''' + def _GetInfoRNA(bl_rna, cls, parent_id=''): if bl_rna == None: @@ -184,6 +312,8 @@ def GetInfoPropertyRNA(bl_rna, parent_id): def GetInfoFunctionRNA(bl_rna, parent_id): return _GetInfoRNA(bl_rna, InfoFunctionRNA, parent_id) +def GetInfoOperatorRNA(bl_rna): + return _GetInfoRNA(bl_rna, InfoOperatorRNA) def BuildRNAInfo(): # Use for faster lookups @@ -205,7 +335,8 @@ def BuildRNAInfo(): return True if "_PT_" in rna_id: return True - + if "_HT_" in rna_id: + return True return False def full_rna_struct_path(rna_struct): @@ -395,9 +526,34 @@ def BuildRNAInfo(): if func.return_value: func.return_value.build() - + # now for operators + op_mods = dir(bpy.ops) + + for op_mod_name in sorted(op_mods): + if op_mod_name.startswith('__') or op_mod_name in ("add", "remove"): + continue + + op_mod = getattr(bpy.ops, op_mod_name) + operators = dir(op_mod) + for op in sorted(operators): + try: + rna_prop = getattr(op_mod, op).get_rna() + except AttributeError: + rna_prop = None + except TypeError: + rna_prop = None + + if rna_prop: + GetInfoOperatorRNA(rna_prop.bl_rna) + + for rna_info in InfoOperatorRNA.global_lookup.values(): + rna_info.build() + for rna_prop in rna_info.args: + rna_prop.build() + + #for rna_info in InfoStructRNA.global_lookup.values(): # print(rna_info) - return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoPropertyRNA.global_lookup + return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoOperatorRNA.global_lookup, InfoPropertyRNA.global_lookup diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 5fd87728fb8..e6c21d8fede 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -425,7 +425,7 @@ static int rna_Property_unit_get(PointerRNA *ptr) return RNA_SUBTYPE_UNIT(prop->subtype); } -static int rna_Property_editable_get(PointerRNA *ptr) +static int rna_Property_readonly_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; @@ -433,7 +433,7 @@ static int rna_Property_editable_get(PointerRNA *ptr) * data for introspection we only need to know if it can be edited so the * flag is better for this */ // return RNA_property_editable(ptr, prop); - return prop->flag & PROP_EDITABLE ? 1:0; + return prop->flag & PROP_EDITABLE ? 0:1; } static int rna_Property_use_return_get(PointerRNA *ptr) @@ -442,6 +442,18 @@ static int rna_Property_use_return_get(PointerRNA *ptr) return prop->flag & PROP_RETURN ? 1:0; } +static int rna_Property_is_required_get(PointerRNA *ptr) +{ + PropertyRNA *prop= (PropertyRNA*)ptr->data; + return prop->flag & PROP_REQUIRED ? 1:0; +} + +static int rna_Property_is_never_none_get(PointerRNA *ptr) +{ + PropertyRNA *prop= (PropertyRNA*)ptr->data; + return prop->flag & PROP_NEVER_NULL ? 1:0; +} + static int rna_Property_array_length_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; @@ -934,15 +946,25 @@ static void rna_def_property(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, "rna_Property_unit_get", NULL, NULL); RNA_def_property_ui_text(prop, "Unit", "Type of units for this property."); - prop= RNA_def_property(srna, "editable", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "is_readonly", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_boolean_funcs(prop, "rna_Property_readonly_get", NULL); + RNA_def_property_ui_text(prop, "Read Only", "Property is editable through RNA."); + + prop= RNA_def_property(srna, "is_required", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_boolean_funcs(prop, "rna_Property_is_required_get", NULL); + RNA_def_property_ui_text(prop, "Required", "False when this property is an optional argument in an rna function."); + + prop= RNA_def_property(srna, "is_never_none", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_boolean_funcs(prop, "rna_Property_editable_get", NULL); - RNA_def_property_ui_text(prop, "Editable", "Property is editable through RNA."); + RNA_def_property_boolean_funcs(prop, "rna_Property_is_never_none_get", NULL); + RNA_def_property_ui_text(prop, "Never None", "True when this value can't be set to None."); prop= RNA_def_property(srna, "use_return", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_funcs(prop, "rna_Property_use_return_get", NULL); - RNA_def_property_ui_text(prop, "Return", "True when this property is a return value from an rna function.."); + RNA_def_property_ui_text(prop, "Return", "True when this property is a return value from an rna function."); prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); diff --git a/source/blender/python/epy_doc_gen.py b/source/blender/python/epy_doc_gen.py index 8783cec93ab..7e32b29aa1f 100644 --- a/source/blender/python/epy_doc_gen.py +++ b/source/blender/python/epy_doc_gen.py @@ -397,8 +397,8 @@ def rna2epy(BASEPATH): array_str = get_array_str(length) - if rna_prop.editable: readonly_str = '' - else: readonly_str = ' (readonly)' + if rna_prop.is_readonly: readonly_str = ' (readonly)' + else: readonly_str = '' if rna_prop_ptr: # Use the pointer type out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) -- cgit v1.2.3 From 693d9fd7714c6f61bbdcc046d5e52eedaca4272a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 15:50:53 +0000 Subject: sphinx rna api documentation generator to replace epydocs - view docs menu item opens sphinx URL - can be searched (even when local) - uses rna_info module for introspection - also documents python defined functions and decorator properties (defined in bpy_types.py) - experemental python file:line references for python operators. --- release/scripts/op/wm.py | 14 +- source/blender/python/epy_doc_gen.py | 760 -------------------------------- source/blender/python/sphinx_doc_gen.py | 324 ++++++++++++++ 3 files changed, 331 insertions(+), 767 deletions(-) delete mode 100644 source/blender/python/epy_doc_gen.py create mode 100644 source/blender/python/sphinx_doc_gen.py diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index c0a61017156..ef7386049c3 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -304,18 +304,18 @@ class WM_OT_doc_view(bpy.types.Operator): def execute(self, context): id_split = self.properties.doc_id.split('.') if len(id_split) == 1: # rna, class - url = '%s/bpy.types.%s-class.html' % (self._prefix, id_split[0]) + url = '%s/bpy.types.%s.html' % (self._prefix, id_split[0]) elif len(id_split) == 2: # rna, class.prop class_name, class_prop = id_split if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop): - url = '%s/bpy.ops.%s-module.html#%s' % \ - (self._prefix, class_name, class_prop) + url = '%s/bpy.ops.%s.html#bpy.ops.%s.%s' % \ + (self._prefix, class_name, class_name, class_prop) else: - # It so happens that epydoc nests these - class_name_full = self._nested_class_string(class_name) - url = '%s/bpy.types.%s-class.html#%s' % \ - (self._prefix, class_name_full, class_prop) + # It so happens that epydoc nests these, not sphinx + # class_name_full = self._nested_class_string(class_name) + url = '%s/bpy.types.%s.html#bpy.types.%s.%s' % \ + (self._prefix, class_name, class_name, class_prop) else: return {'PASS_THROUGH'} diff --git a/source/blender/python/epy_doc_gen.py b/source/blender/python/epy_doc_gen.py deleted file mode 100644 index 7e32b29aa1f..00000000000 --- a/source/blender/python/epy_doc_gen.py +++ /dev/null @@ -1,760 +0,0 @@ - # ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - # - # Contributor(s): Campbell Barton - # - # #**** END GPL LICENSE BLOCK #**** - -script_help_msg = ''' -Usage, -run this script from blenders root path once you have compiled blender - ./blender.bin -P source/blender/python/epy_doc_gen.py - -This will generate python files in "./source/blender/python/doc/bpy" -Generate html docs by running... - - epydoc source/blender/python/doc/bpy/ -v \\ - -o source/blender/python/doc/html \\ - --inheritance=included \\ - --no-sourcecode \\ - --graph=classtree \\ - --graph-font-size=8 - -''' - -# if you dont have graphvis installed ommit the --graph arg. - -# GLOBALS['BASEDIR'] = './source/blender/python/doc' - -import os - -SUBMODULES = {} -INIT_SUBMODULES = {} # store initialized files - -INIT_SUBMODULES_IMPORTS = {} # dont import the same module twice - -def append_package(package_path, mod_name): - - init_path = os.path.join(os.path.dirname(package_path), "__init__.py") - - # avoid double ups - if mod_name: - imports = INIT_SUBMODULES_IMPORTS.setdefault(init_path, []) - if mod_name in imports: - return - imports.append(mod_name) - - try: - os.makedirs(os.path.dirname(init_path)) # make the dirs if they are not there - except: - pass - - # Open the new file for the first time, otherwise keep it open. - f = INIT_SUBMODULES.get(init_path) - if f == None: - f = INIT_SUBMODULES[init_path] = open(init_path, 'w') - - if mod_name: - f.write("import %s\n" % mod_name) - - return f - -def append_package_recursive(package_path, BASEPATH): - ''' - assume the last item of package_path will be a file (not a dir thats created) - ''' - - package_path = os.path.splitext(package_path)[0] # incase of .py - - try: - os.makedirs(os.path.join(BASEPATH, os.path.dirname(package_path))) # make the dirs if they are not there - except: - pass - - new_path = BASEPATH - - for mod_name in package_path.split(os.sep): - init_path = os.path.join(new_path, "__init__.py") - new_path = os.path.join(new_path, mod_name) - append_package(init_path, mod_name) - - -def open_submodule(subpath, BASEPATH): - ''' - This is a utility function that lets us quickly add submodules - ''' - - # create all the package paths leading up to this module - append_package_recursive(subpath, BASEPATH) - - module_name = os.path.basename( os.path.splitext(subpath)[0] ) - mod_path = os.path.join(BASEPATH, subpath) - - # Open the new file for the first time, otherwise keep it open. - f = SUBMODULES.get(mod_path) - if f == None: - f = SUBMODULES[mod_path] = open(mod_path, 'w') - - f = open(mod_path, 'w') - return f - -def close_all(): - for files in (INIT_SUBMODULES.values(), SUBMODULES.values()): - for f in files: - if f.name.endswith('.py'): - f_name = f.name - f.close() - - f = open(f_name, 'a') - f.write("\ndel __package__\n") # annoying, no need do show this - - - f.close() - - -def range_str(val): - if val < -10000000: return '-inf' - if val > 10000000: return 'inf' - if type(val)==float: - return '%g' % val - else: - return str(val) - -def get_array_str(length): - if length > 0: return ' array of %d items' % length - else: return '' - -def full_rna_struct_path(rna_struct): - ''' - Needed when referencing one struct from another - ''' - nested = rna_struct.nested - if nested: - return "%s.%s" % (full_rna_struct_path(nested), rna_struct.identifier) - else: - return rna_struct.identifier - -def rna_id_ignore(rna_id): - if rna_id == "rna_type": - return True - - if "_OT_" in rna_id: - return True - if "_MT_" in rna_id: - return True - if "_PT_" in rna_id: - return True - - return False - -def write_func(rna, ident, out, func_type): - # Keyword attributes - kw_args = [] # "foo = 1", "bar=0.5", "spam='ENUM'" - kw_arg_attrs = [] # "@type mode: int" - - rna_struct= rna.rna_type - - # Operators and functions work differently - if func_type=='OPERATOR': - rna_func_name = rna_struct.identifier.split("_OT_")[-1] - rna_func_desc = rna_struct.description.strip() - items = rna_struct.properties.items() - else: - rna_func_name = rna.identifier - rna_func_desc = rna.description.strip() - items = rna.parameters.items() - - - for rna_prop_identifier, rna_prop in items: - if rna_id_ignore(rna_prop_identifier): - continue - - # clear vars - val = val_error = val_str = rna_prop_type = None - - # ['rna_type', 'name', 'array_length', 'description', 'hard_max', 'hard_min', 'identifier', 'precision', 'readonly', 'soft_max', 'soft_min', 'step', 'subtype', 'type'] - #rna_prop= op_rna.rna_type.properties[attr] - rna_prop_type = rna_prop.type.lower() # enum, float, int, boolean - - - # only for rna functions, operators should not get pointers as args - if rna_prop_type=='pointer': - rna_prop_type_refine = "L{%s}" % rna_prop.fixed_type.identifier - else: - # Collections/Arrays can have a srna type - rna_prop_srna_type = rna_prop.srna - if rna_prop_srna_type: - print(rna_prop_srna_type.identifier) - rna_prop_type_refine = "L{%s}" % rna_prop_srna_type.identifier - else: - rna_prop_type_refine = rna_prop_type - - del rna_prop_srna_type - - - try: length = rna_prop.array_length - except: length = 0 - - array_str = get_array_str(length) - - if rna_prop.use_return: - kw_type_str= "@rtype: %s%s" % (rna_prop_type_refine, array_str) - kw_param_str= "@return: %s" % (rna_prop.description.strip()) - else: - kw_type_str= "@type %s: %s%s" % (rna_prop_identifier, rna_prop_type_refine, array_str) - kw_param_str= "@param %s: %s" % (rna_prop_identifier, rna_prop.description.strip()) - - kw_param_set = False - - if func_type=='OPERATOR': - try: - val = getattr(rna, rna_prop_identifier) - val_error = False - except: - val = "''" - val_error = True - - - if val_error: - val_str = val - elif rna_prop_type=='float': - if length==0: - val_str= '%g' % val - if '.' not in val_str and '-' not in val_str: # value could be 1e-05 - val_str += '.0' - else: - # array - val_str = str(tuple(val)) - - kw_param_str += (' in (%s, %s)' % (range_str(rna_prop.hard_min), range_str(rna_prop.hard_max))) - kw_param_set= True - - elif rna_prop_type=='int': - if length==0: - val_str='%d' % val - else: - val_str = str(tuple(val)) - - # print(dir(rna_prop)) - kw_param_str += (' in (%s, %s)' % (range_str(rna_prop.hard_min), range_str(rna_prop.hard_max))) - # These strings dont have a max length??? - #kw_param_str += ' (maximum length of %s)' % (rna_prop.max_length) - kw_param_set= True - - elif rna_prop_type=='boolean': - if length==0: - if val: val_str='True' - else: val_str='False' - else: - val_str = str(tuple(val)) - - elif rna_prop_type=='enum': - # no array here? - val_str="'%s'" % val - # Too cramped - kw_param_str += (' in (%s)' % ', '.join(rna_prop.items.keys())) - - kw_param_set= True - - elif rna_prop_type=='string': - # no array here? - val_str='"%s"' % val - - # todo - collection - array - # print (rna_prop.type) - - kw_args.append('%s = %s' % (rna_prop_identifier, val_str)) - - # stora - else: - # currently functions dont have a default value - if not rna_prop.use_return: - kw_args.append('%s' % (rna_prop_identifier)) - else: - kw_param_set = True - - - # Same for operators and functions - kw_arg_attrs.append(kw_type_str) - if kw_param_set: - kw_arg_attrs.append(kw_param_str) - - - - out.write(ident+'def %s(%s):\n' % (rna_func_name, ', '.join(kw_args))) - out.write(ident+'\t"""\n') - - # Descriptions could be multiline - for rna_func_desc_line in rna_func_desc.split('\n'): - out.write(ident+'\t%s\n' % rna_func_desc_line.strip()) - - for desc in kw_arg_attrs: - out.write(ident+'\t%s\n' % desc) - - # out.write(ident+'\t@rtype: None\n') # implicit - out.write(ident+'\t"""\n') - - - -def rna2epy(BASEPATH): - - # Use for faster lookups - # use rna_struct.identifier as the key for each dict - rna_struct_dict = {} # store identifier:rna lookups - rna_full_path_dict = {} # store the result of full_rna_struct_path(rna_struct) - rna_children_dict = {} # store all rna_structs nested from here - rna_references_dict = {} # store a list of rna path strings that reference this type - rna_functions_dict = {} # store all functions directly in this type (not inherited) - rna_words = set() - - # def write_func(rna_func, ident): - - - def write_struct(rna_struct, ident): - identifier = rna_struct.identifier - - rna_base = rna_struct.base - - if rna_base: - out.write(ident+ 'class %s(%s):\n' % (identifier, rna_base.identifier)) - rna_base_prop_keys = rna_base.properties.keys() # could be cached - rna_base_func_keys = [f.identifier for f in rna_base.functions] - else: - out.write(ident+ 'class %s:\n' % identifier) - rna_base_prop_keys = [] - rna_base_func_keys = [] - - out.write(ident+ '\t"""\n') - - title = 'The %s Object' % rna_struct.name - description = rna_struct.description.strip() - out.write(ident+ '\t%s\n' % title) - out.write(ident+ '\t%s\n' % ('=' * len(title))) - out.write(ident+ '\t\t%s\n' % description) - rna_words.update(description.split()) - - - # For convenience, give a list of all places were used. - rna_refs= rna_references_dict[identifier] - - if rna_refs: - out.write(ident+ '\t\t\n') - out.write(ident+ '\t\tReferences\n') - out.write(ident+ '\t\t==========\n') - - for rna_ref_string in rna_refs: - out.write(ident+ '\t\t\t- L{%s}\n' % rna_ref_string) - - out.write(ident+ '\t\t\n') - - else: - out.write(ident+ '\t\t\n') - out.write(ident+ '\t\t(no references to this struct found)\n') - out.write(ident+ '\t\t\n') - - for rna_prop_identifier, rna_prop in rna_struct.properties.items(): - - if rna_prop_identifier=='RNA': continue - if rna_id_ignore(rna_prop_identifier): continue - if rna_prop_identifier in rna_base_prop_keys: continue # does this prop exist in our parent class, if so skip - - rna_desc = rna_prop.description.strip() - - if rna_desc: rna_words.update(rna_desc.split()) - if not rna_desc: rna_desc = rna_prop.name - if not rna_desc: rna_desc = 'Note - No documentation for this property!' - - rna_prop_type = rna_prop.type.lower() - - if rna_prop_type=='collection': collection_str = 'Collection of ' - else: collection_str = '' - - # some collections have a srna for their own properties - # TODO - arrays, however this isnt used yet - rna_prop_srna_type = rna_prop.srna - if rna_prop_srna_type: - collection_str = "L{%s} %s" % (rna_prop_srna_type.identifier, collection_str) - del rna_prop_srna_type - - try: rna_prop_ptr = rna_prop.fixed_type - except: rna_prop_ptr = None - - try: length = rna_prop.array_length - except: length = 0 - - array_str = get_array_str(length) - - if rna_prop.is_readonly: readonly_str = ' (readonly)' - else: readonly_str = '' - - if rna_prop_ptr: # Use the pointer type - out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) - out.write(ident+ '\t@type %s: %sL{%s}%s%s\n' % (rna_prop_identifier, collection_str, rna_prop_ptr.identifier, array_str, readonly_str)) - else: - if rna_prop_type == 'enum': - if 0: - out.write(ident+ '\t@ivar %s: %s in (%s)\n' % (rna_prop_identifier, rna_desc, ', '.join(rna_prop.items.keys()))) - else: - out.write(ident+ '\t@ivar %s: %s in...\n' % (rna_prop_identifier, rna_desc)) - for e, e_rna_prop in rna_prop.items.items(): - #out.write(ident+ '\t\t- %s: %s\n' % (e, e_rna_prop.description)) # XXX - segfaults, FIXME - out.write(ident+ '\t\t- %s\n' % e) - - out.write(ident+ '\t@type %s: %s%s%s\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str)) - elif rna_prop_type == 'int' or rna_prop_type == 'float': - out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) - out.write(ident+ '\t@type %s: %s%s%s in [%s, %s]\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str, range_str(rna_prop.hard_min), range_str(rna_prop.hard_max) )) - elif rna_prop_type == 'string': - out.write(ident+ '\t@ivar %s: %s (maximum length of %s)\n' % (rna_prop_identifier, rna_desc, rna_prop.max_length)) - out.write(ident+ '\t@type %s: %s%s%s\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str)) - else: - out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) - out.write(ident+ '\t@type %s: %s%s%s\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str)) - - - out.write(ident+ '\t"""\n\n') - - - # Write functions - # for rna_func in rna_struct.functions: # Better ignore inherited (line below) - for rna_func in rna_functions_dict[identifier]: - if rna_func not in rna_base_func_keys: - write_func(rna_func, ident+'\t', out, 'FUNCTION') - - out.write('\n') - - # Now write children recursively - for child in rna_children_dict[identifier]: - write_struct(child, ident + '\t') - - - - # out = open(target_path, 'w') - out = open_submodule("types.py", BASEPATH) # bpy.types - - def base_id(rna_struct): - try: return rna_struct.base.identifier - except: return '' # invalid id - - #structs = [(base_id(rna_struct), rna_struct.identifier, rna_struct) for rna_struct in bpy.doc.structs.values()] - ''' - structs = [] - for rna_struct in bpy.doc.structs.values(): - structs.append( (base_id(rna_struct), rna_struct.identifier, rna_struct) ) - ''' - structs = [] - for rna_type_name in dir(bpy.types): - rna_type = getattr(bpy.types, rna_type_name) - - try: rna_struct = rna_type.bl_rna - except: rna_struct = None - - if rna_struct: - #if not rna_type_name.startswith('__'): - - identifier = rna_struct.identifier - - if not rna_id_ignore(identifier): - structs.append( (base_id(rna_struct), identifier, rna_struct) ) - - # Simple lookup - rna_struct_dict[identifier] = rna_struct - - # Store full rna path 'GameObjectSettings' -> 'Object.GameObjectSettings' - rna_full_path_dict[identifier] = full_rna_struct_path(rna_struct) - - # Store a list of functions, remove inherited later - rna_functions_dict[identifier]= list(rna_struct.functions) - - - # fill in these later - rna_children_dict[identifier]= [] - rna_references_dict[identifier]= [] - - - else: - print("Ignoring", rna_type_name) - - - # Sucks but we need to copy this so we can check original parent functions - rna_functions_dict__copy = {} - for key, val in rna_functions_dict.items(): - rna_functions_dict__copy[key] = val[:] - - - structs.sort() # not needed but speeds up sort below, setting items without an inheritance first - - # Arrange so classes are always defined in the correct order - deps_ok = False - while deps_ok == False: - deps_ok = True - rna_done = set() - - for i, (rna_base, identifier, rna_struct) in enumerate(structs): - - rna_done.add(identifier) - - if rna_base and rna_base not in rna_done: - deps_ok = False - data = structs.pop(i) - ok = False - while i < len(structs): - if structs[i][1]==rna_base: - structs.insert(i+1, data) # insert after the item we depend on. - ok = True - break - i+=1 - - if not ok: - print('Dependancy "%s" could not be found for "%s"' % (identifier, rna_base)) - - break - - # Done ordering structs - - - # precalc vars to avoid a lot of looping - for (rna_base, identifier, rna_struct) in structs: - - if rna_base: - rna_base_prop_keys = rna_struct_dict[rna_base].properties.keys() # could cache - rna_base_func_keys = [f.identifier for f in rna_struct_dict[rna_base].functions] - else: - rna_base_prop_keys = [] - rna_base_func_keys= [] - - # rna_struct_path = full_rna_struct_path(rna_struct) - rna_struct_path = rna_full_path_dict[identifier] - - for rna_prop_identifier, rna_prop in rna_struct.properties.items(): - - if rna_prop_identifier=='RNA': continue - if rna_id_ignore(rna_prop_identifier): continue - if rna_prop_identifier in rna_base_prop_keys: continue - - - for rna_prop_ptr in (getattr(rna_prop, "fixed_type", None), getattr(rna_prop, "srna", None)): - # Does this property point to me? - if rna_prop_ptr: - rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_prop_identifier) ) - - for rna_func in rna_struct.functions: - for rna_prop_identifier, rna_prop in rna_func.parameters.items(): - - if rna_prop_identifier=='RNA': continue - if rna_id_ignore(rna_prop_identifier): continue - if rna_prop_identifier in rna_base_func_keys: continue - - - try: rna_prop_ptr = rna_prop.fixed_type - except: rna_prop_ptr = None - - # Does this property point to me? - if rna_prop_ptr: - rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_func.identifier) ) - - - # Store nested children - nested = rna_struct.nested - if nested: - rna_children_dict[nested.identifier].append(rna_struct) - - - if rna_base: - rna_funcs = rna_functions_dict[identifier] - if rna_funcs: - # Remove inherited functions if we have any - rna_base_funcs = rna_functions_dict__copy[rna_base] - rna_funcs[:] = [f for f in rna_funcs if f not in rna_base_funcs] - - rna_functions_dict__copy.clear() - del rna_functions_dict__copy - - # Sort the refs, just reads nicer - for rna_refs in rna_references_dict.values(): - rna_refs.sort() - - for (rna_base, identifier, rna_struct) in structs: - if rna_struct.nested: - continue - - write_struct(rna_struct, '') - - - out.write('\n') - out.close() - - # # We could also just run.... - # os.system('epydoc source/blender/python/doc/rna.py -o ./source/blender/python/doc/html -v') - - target_path = os.path.join(BASEPATH, "dump.py") # XXX - used for other funcs - - # Write graphviz - out= open(target_path.replace('.py', '.dot'), 'w') - out.write('digraph "rna data api" {\n') - out.write('\tnode [style=filled, shape = "box"];\n') - out.write('\toverlap=false;\n') - out.write('\trankdir = LR;\n') - out.write('\tsplines=true;\n') - out.write('\tratio=auto;\n') - - - - out.write('\tsize="10,10"\n') - #out.write('\tpage="8.5,11"\n') - #out.write('\tcenter=""\n') - - def isop(rna_struct): - return '_OT_' in rna_struct.identifier - - - for (rna_base, identifier, rna_struct) in structs: - if isop(rna_struct): - continue - - base = rna_struct.base - - - out.write('\t"%s";\n' % identifier) - - for (rna_base, identifier, rna_struct) in structs: - - if isop(rna_struct): - continue - - base = rna_struct.base - - if base and not isop(base): - out.write('\t"%s" -> "%s" [label="(base)" weight=1.0];\n' % (base.identifier, identifier)) - - nested = rna_struct.nested - if nested and not isop(nested): - out.write('\t"%s" -> "%s" [label="(nested)" weight=1.0];\n' % (nested.identifier, identifier)) - - - - rna_refs= rna_references_dict[identifier] - - for rna_ref_string in rna_refs: - - if '_OT_' in rna_ref_string: - continue - - ref = rna_ref_string.split('.')[-2] - out.write('\t"%s" -> "%s" [label="%s" weight=0.01];\n' % (ref, identifier, rna_ref_string)) - - - out.write('}\n') - out.close() - - # # We could also just run.... - # os.system('dot source/blender/python/doc/rna.dot -Tsvg -o ./source/blender/python/doc/rna.svg') - - - out= open(target_path.replace('.py', '.words'), 'w') - rna_words = list(rna_words) - rna_words.sort() - for w in rna_words: - out.write('%s\n' % w) - - -def op2epy(BASEPATH): - # out = open(target_path, 'w') - - op_mods = dir(bpy.ops) - op_mods.remove('add') - op_mods.remove('remove') - - for op_mod_name in sorted(op_mods): - if op_mod_name.startswith('__'): - continue - - # open the submodule - mod_path = os.path.join("ops", op_mod_name + ".py") - out = open_submodule(mod_path, BASEPATH) - - - op_mod = getattr(bpy.ops, op_mod_name) - operators = dir(op_mod) - for op in sorted(operators): - # rna = getattr(bpy.types, op).bl_rna - try: - rna = getattr(op_mod, op).get_rna() - except AttributeError: - rna = None - except TypeError: - rna = None - - if rna: - write_func(rna, '', out, 'OPERATOR') - - out.write('\n') - out.close() - -def misc2epy(BASEPATH): - ''' - Hard coded modules, try to avoid adding stuff here - ''' - - f = append_package(os.path.join(BASEPATH, ""), ""); # add a slash on the end of the base path - f.write(''' -""" -@type data: L{bpy.types.Main} -@var data: blender data is accessed from here -""" -''') - - f = open_submodule("props.py", BASEPATH) - f.write(''' -MAX_INT= 2**31 -MAX_FLOAT= 1e+37 -def BoolProperty(attr, name="", description="", default=False): - """ - return a new bool property - """ -def IntProperty(attr, name="", description="", min=-MAX_INT, max=MAX_INT, soft_min=-MAX_INT, soft_max=MAX_INT, default=0): - """ - return a new int property - """ -def FloatProperty(attr, name="", description="", min=-MAX_FLOAT, max=MAX_FLOAT, soft_min=-MAX_FLOAT, soft_max=MAX_FLOAT, default=0.0): - """ - return a new float property - """ -def StringProperty(attr, name="", description="", maxlen=0, default=""): - """ - return a new string property - """ -def EnumProperty(attr, items, name="", description="", default=""): - """ - return a new enum property - """ -''') - - -if __name__ == '__main__': - if 'bpy' not in dir(): - print("\nError, this script must run from inside blender2.5") - print(script_help_msg) - else: - misc2epy('source/blender/python/doc/bpy') # first to write in info in some of the modules. - rna2epy('source/blender/python/doc/bpy') - op2epy('source/blender/python/doc/bpy') - - - close_all() - - import sys - sys.exit() diff --git a/source/blender/python/sphinx_doc_gen.py b/source/blender/python/sphinx_doc_gen.py new file mode 100644 index 00000000000..3c15c09403d --- /dev/null +++ b/source/blender/python/sphinx_doc_gen.py @@ -0,0 +1,324 @@ + # ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + # + # Contributor(s): Campbell Barton + # + # #**** END GPL LICENSE BLOCK #**** + +script_help_msg = ''' +Usage, +run this script from blenders root path once you have compiled blender + ./blender.bin -b -P /b/source/blender/python/sphinx_doc_gen.py + +This will generate python files in "./source/blender/python/doc/bpy/sphinx-in" +Generate html docs by running... + + sphinx-build source/blender/python/doc/bpy/sphinx-in source/blender/python/doc/bpy/sphinx-out + + +''' + +# if you dont have graphvis installed ommit the --graph arg. + +# GLOBALS['BASEDIR'] = './source/blender/python/doc' + +import os +import bpy +import rna_info +reload(rna_info) + +def range_str(val): + if val < -10000000: return '-inf' + if val > 10000000: return 'inf' + if type(val)==float: + return '%g' % val + else: + return str(val) + +def write_indented_lines(ident, fn, text): + if text is None: + return + for l in text.split("\n"): + fn(ident + l.strip() + "\n") + + +def py_function_args(func): + """Get the python functions args with keyword defaults where possible.""" + text = "" + code = func.__code__ + + defaults = func.__defaults__ + if defaults is None: + defaults = [] + else: + defaults = list(defaults) + + names = code.co_varnames + if names is None: + names = [] + else: + names = list(names) + + INVALID = py_function_args + defaults = ([INVALID] * (len(names) - len(defaults))) + defaults + + if names[0] == "self": + del names[0] + del defaults[0] + + for var, default in zip(names, defaults): + if default is INVALID: + text += var + else: + if type(default) == str: + text += "%s=\"%s\"" % (var, default) + elif type(default) == float: + text += rna_info.float_as_string(default) + else: + text += "%s=%s" % (var, repr(default)) + + if not var == names[-1]: + text += ", " + + return text + + +def rna2sphinx(BASEPATH): + + structs, funcs, ops, props = rna_info.BuildRNAInfo() + + try: + os.mkdir(BASEPATH) + except: + pass + + # conf.py - empty for now + filepath = os.path.join(BASEPATH, "conf.py") + file = open(filepath, "w") + fw = file.write + + fw("project = 'Blender 3D'\n") + # fw("master_doc = 'index'\n") + fw("copyright = u'Blender Foundation'\n") + fw("version = '2.5'\n") + fw("release = '2.5'\n") + file.close() + + + filepath = os.path.join(BASEPATH, "contents.rst") + file = open(filepath, "w") + fw = file.write + + fw("\n") + fw(".. toctree::\n") + fw(" :glob:\n\n") + fw(" bpy.ops.*\n\n") + fw(" bpy.types.*\n\n") + file.close() + + if 0: + filepath = os.path.join(BASEPATH, "bpy.rst") + file = open(filepath, "w") + fw = file.write + + fw("\n") + + title = ":mod:`bpy` --- Blender Python Module" + fw("%s\n%s\n\n" % (title, "=" * len(title))) + fw(".. module:: bpy.types\n\n") + file.close() + + + def write_property(ident, fw, prop, as_arg=False): + + if prop.description: + fw(ident + " %s\n\n" % prop.description) + + if prop.fixed_type is None: + fw(ident + " *type* %s " % prop.type) + if prop.array_length: + fw("array of %d items " % (prop.array_length)) + + if prop.type in ("float", "int"): + fw("in [%s, %s]" % (range_str(prop.min), range_str(prop.max))) + elif prop.type == "enum": + fw("in [%s]" % ', '.join(["`" + s + "`" for s in prop.enum_items])) + else: + if prop.type == "collection": + if prop.collection_type: + collection_str = ":class:`%s` collection of " % prop.collection_type.identifier + else: + collection_str = "Collection of " + else: + collection_str = " " + + fw(ident + " *type* %s:class:`%s`" % (collection_str, prop.fixed_type.identifier)) + + if not as_arg: # readonly is only useful for props, not args + if prop.is_readonly: + fw(", (readonly)") + + if prop.is_never_none: + fw(", (never None)") + + fw("\n\n") + + + def write_struct(struct): + #if not struct.identifier.startswith("Sc") and not struct.identifier.startswith("I"): + # return + + #if not struct.identifier.startswith("Bone"): + # return + + filepath = os.path.join(BASEPATH, "bpy.types.%s.rst" % struct.identifier) + file = open(filepath, "w") + fw = file.write + + if struct.base: + title = "%s(%s)" % (struct.identifier, struct.base.identifier) + else: + title = struct.identifier + + fw("%s\n%s\n\n" % (title, "=" * len(title))) + + fw(".. module:: bpy.types\n\n") + + bases = struct.get_bases() + if bases: + if len(bases) > 1: + fw("base classes --- ") + else: + fw("base class --- ") + + fw(", ".join([(":class:`%s`" % base.identifier) for base in reversed(bases)])) + fw("\n\n") + + subclasses = [s for s in structs.values() if s.base is struct] + + if subclasses: + fw("subclasses --- \n") + fw(", ".join([(":class:`%s`" % s.identifier) for s in subclasses])) + fw("\n\n") + + + if struct.base: + fw(".. class:: %s(%s)\n\n" % (struct.identifier, struct.base.identifier)) + else: + fw(".. class:: %s\n\n" % struct.identifier) + + fw(" %s\n\n" % struct.description) + + for prop in struct.properties: + fw(" .. attribute:: %s\n\n" % prop.identifier) + write_property(" ", fw, prop) + + # python attributes + py_properties = struct.get_py_properties() + py_prop = None + for identifier, py_prop in py_properties: + fw(" .. attribute:: %s\n\n" % identifier) + write_indented_lines(" ", fw, py_prop.__doc__) + if py_prop.fset is None: + fw(" (readonly)\n\n") + del py_properties, py_prop + + for func in struct.functions: + args_str = ", ".join([prop.get_arg_default(force=False) for prop in func.args]) + + fw(" .. method:: %s(%s)\n\n" % (func.identifier, args_str)) + fw(" %s\n\n" % func.description) + + for prop in func.args: + fw(" * %s: %s\n" % (prop.identifier, prop.name)) + write_property(" ", fw, prop, as_arg=True) + + if func.return_value: + prop = func.return_value + fw(" Returns %s: %s\n" % (prop.identifier, prop.name)) + write_property(" ", fw, prop, as_arg=True) + + + # python methods + py_funcs = struct.get_py_functions() + py_func = None + + for identifier, py_func in py_funcs: + fw(" .. method:: %s(%s)\n\n" % (identifier, py_function_args(py_func))) + write_indented_lines(" ", fw, py_func.__doc__) + del py_funcs, py_func + + if struct.references: + # use this otherwise it gets in the index for a normal heading. + fw(".. rubric:: References\n\n") + + for ref in struct.references: + ref_split = ref.split(".") + if len(ref_split) > 2: + ref = ref_split[-2] + "." + ref_split[-1] + fw("* :class:`%s`\n" % ref) + fw("\n") + + + for struct in structs.values(): + write_struct(struct) + + # oeprators + def write_ops(): + fw = None + + last_mod = '' + + for op_key in sorted(ops.keys()): + op = ops[op_key] + + if last_mod != op.module_name: + filepath = os.path.join(BASEPATH, "bpy.ops.%s.rst" % op.module_name) + file = open(filepath, "w") + fw = file.write + + title = "%s Operators" % (op.module_name[0].upper() + op.module_name[1:]) + fw("%s\n%s\n\n" % (title, "=" * len(title))) + + fw(".. module:: bpy.ops.%s\n\n" % op.module_name) + last_mod = op.module_name + + args_str = ", ".join([prop.get_arg_default(force=True) for prop in op.args]) + fw(".. function:: %s(%s)\n\n" % (op.func_name, args_str)) + fw(" %s\n\n" % op.description) + for prop in op.args: + fw(" * %s: %s\n" % (prop.identifier, prop.name)) + write_property(" ", fw, prop, as_arg=True) + + location = op.get_location() + if location != (None, None): + fw(" *python operator source --- `%s:%d`* \n\n" % location) + + write_ops() + + file.close() + +if __name__ == '__main__': + if 'bpy' not in dir(): + print("\nError, this script must run from inside blender2.5") + print(script_help_msg) + else: + # os.system("rm source/blender/python/doc/bpy/sphinx-in/*.rst") + # os.system("rm -rf source/blender/python/doc/bpy/sphinx-out/*") + rna2sphinx('source/blender/python/doc/bpy/sphinx-in') + + import sys + sys.exit() -- cgit v1.2.3 From 6c6786f1f0718a4ec1a3589c8669e8762230110e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 18:06:05 +0000 Subject: bad rna limit referred to in [#20483] Inputs are capped enable distance for some settings --- source/blender/makesrna/intern/rna_modifier.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index fe8d6d6a367..1516ae2536d 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -746,7 +746,7 @@ static void rna_def_modifier_mirror(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mirror V", "Mirror the V texture coordinate around the 0.5 point."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "tolerance"); RNA_def_property_range(prop, 0, FLT_MAX); RNA_def_property_ui_range(prop, 0, 1, 0.01, 6); @@ -913,19 +913,19 @@ static void rna_def_modifier_wave(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Speed", ""); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); RNA_def_property_ui_range(prop, -2, 2, 10, 2); RNA_def_property_ui_text(prop, "Height", ""); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_range(prop, 0, FLT_MAX); RNA_def_property_ui_range(prop, 0, 5, 10, 2); RNA_def_property_ui_text(prop, "Width", ""); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "narrowness", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "narrowness", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "narrow"); RNA_def_property_range(prop, 0, FLT_MAX); RNA_def_property_ui_range(prop, 0, 10, 10, 2); @@ -1244,7 +1244,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_range(prop, 0, 1); RNA_def_property_ui_range(prop, 0, 1, 10, 3); RNA_def_property_ui_text(prop, "Midlevel", "Material value that gives no displacement."); @@ -1755,9 +1755,10 @@ static void rna_def_modifier_bevel(BlenderRNA *brna) RNA_def_struct_sdna(srna, "BevelModifierData"); RNA_def_struct_ui_icon(srna, ICON_MOD_BEVEL); - prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "value"); - RNA_def_property_range(prop, 0, 0.5); + RNA_def_property_range(prop, 0, FLT_MAX); + RNA_def_property_ui_range(prop, 0, 10, 0.1, 4); RNA_def_property_ui_text(prop, "Width", "Bevel value/amount."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -2020,28 +2021,28 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_struct_sdna(srna, "SolidifyModifierData"); RNA_def_struct_ui_icon(srna, ICON_MOD_DISPLACE); - prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "offset"); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); RNA_def_property_ui_range(prop, -10, 10, 0.1, 4); RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "crease_inner"); RNA_def_property_range(prop, 0, 1); RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); RNA_def_property_ui_text(prop, "Inner Crease", "Assign a crease to inner edges."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "edge_crease_outer", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "edge_crease_outer", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "crease_outer"); RNA_def_property_range(prop, 0, 1); RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); RNA_def_property_ui_text(prop, "Outer Crease", "Assign a crease to outer edges."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "edge_crease_rim", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "edge_crease_rim", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "crease_rim"); RNA_def_property_range(prop, 0, 1); RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); -- cgit v1.2.3 From be679703032e28190d0c7357de6b67449b78834f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 20:40:00 +0000 Subject: fix for [#20244] importing .obj without "Object" option checked crashes blender --- release/scripts/modules/rna_prop_ui.py | 2 +- source/blender/editors/mesh/mesh_data.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index a390acf7932..543a10e47e9 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -143,7 +143,7 @@ rna_max = FloatProperty(name="Max", default=1.0, precision=3) class WM_OT_properties_edit(bpy.types.Operator): '''Internal use (edit a property path)''' bl_idname = "wm.properties_edit" - bl_label = "Edit Property!" + bl_label = "Edit Property" path = rna_path property = rna_property diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 1cdc059f57e..050152821f5 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -676,7 +676,8 @@ void ED_mesh_material_add(Mesh *me, Material *ma) me->mat = mat; me->mat[me->totcol++] = ma; - ma->id.us++; + if(ma) + ma->id.us++; test_object_materials((ID*)me); } -- cgit v1.2.3 From 06f1505a4a3013d86441f2c09f2482429e45481f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 20:47:23 +0000 Subject: bugfix [#20253] Import/Export fails --- release/scripts/io/import_scene_3ds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 608fc6bf5a2..3e174baa14c 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1151,7 +1151,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= ""), + path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= "") # size_constraint = FloatProperty(name="Size Constraint", description="Scale the model by 10 until it reacehs the size constraint. Zero Disables.", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=10.0), # search_images = BoolProperty(name="Image Search", description="Search subdirectories for any assosiated images (Warning, may be slow)", default=True), -- cgit v1.2.3 From 695677914a0de9dbc1dbc202fc228b724473c9e3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 20:52:05 +0000 Subject: bugfix [#20237] Import error (export X90 rotation wasnt right) --- release/scripts/io/export_obj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 77acffe325c..85af371680a 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -444,7 +444,7 @@ def write(filename, objects, scene, me = ob.create_mesh(EXPORT_APPLY_MODIFIERS, 'PREVIEW') if EXPORT_ROTX90: - me.transform(ob_mat * mat_xrot90) + me.transform(mat_xrot90 * ob_mat) else: me.transform(ob_mat) -- cgit v1.2.3 From 5afd084513f799a8d5e725e12a756a9464e711ba Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 22:16:19 +0000 Subject: replace dynamic_menu.py with Menu classmethods much less complicated. access append/prepend eg. bpy.types.INFO_MT_file_import.append(lambda self, context: self.layout.operator("import_some.format")) --- release/scripts/io/export_3ds.py | 4 +- release/scripts/io/export_fbx.py | 6 +- release/scripts/io/export_mdd.py | 5 +- release/scripts/io/export_obj.py | 8 +- release/scripts/io/export_ply.py | 5 +- release/scripts/io/export_x3d.py | 3 +- release/scripts/io/import_anim_bvh.py | 4 +- release/scripts/io/import_scene_3ds.py | 5 +- release/scripts/io/import_scene_obj.py | 3 +- release/scripts/modules/bpy_types.py | 27 +++++ release/scripts/modules/dynamic_menu.py | 118 --------------------- release/scripts/op/add_armature_human.py | 4 +- release/scripts/op/add_mesh_torus.py | 6 +- release/scripts/op/mesh_skin.py | 3 +- release/scripts/op/uvcalc_follow_active.py | 5 +- release/scripts/op/uvcalc_smart_project.py | 5 +- release/scripts/templates/operator.py | 4 +- .../scripts/ui/properties_data_armature_rigify.py | 9 +- release/scripts/ui/space_info.py | 24 +---- release/scripts/ui/space_view3d.py | 5 +- source/blender/python/sphinx_doc_gen.py | 4 +- 21 files changed, 54 insertions(+), 203 deletions(-) delete mode 100644 release/scripts/modules/dynamic_menu.py diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 163b683f60f..23fd44acc3f 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1139,10 +1139,8 @@ class Export3DS(bpy.types.Operator): bpy.types.register(Export3DS) # Add to a menu -import dynamic_menu - def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".3ds") self.layout.operator(Export3DS.bl_idname, text="Autodesk 3DS...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +bpy.types.INFO_MT_file_export.append(menu_func) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 19a3345bd94..25e79bbf214 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3462,13 +3462,9 @@ bpy.types.register(ExportFBX) # SMALL or COSMETICAL # - find a way to get blender version, and put it in bpy.util?, old was Blender.Get('version') - -# Add to a menu -import dynamic_menu - def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".fbx") self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +menu_item = bpy.types.INFO_MT_file_export.append(menu_func) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 66db8c14027..7d0e49d48ce 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -183,14 +183,11 @@ class ExportMDD(bpy.types.Operator): bpy.types.register(ExportMDD) # Add to a menu -import dynamic_menu - - def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".mdd") self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +bpy.types.INFO_MT_file_export.append(menu_func) if __name__ == '__main__': bpy.ops.export.mdd(path="/tmp/test.mdd") diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 85af371680a..5b55c5159a6 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -987,19 +987,13 @@ class ExportOBJ(bpy.types.Operator): wm.add_fileselect(self) return {'RUNNING_MODAL'} - - - - bpy.types.register(ExportOBJ) -import dynamic_menu - def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".obj") self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +menu_item = bpy.types.INFO_MT_file_export.append(menu_func) if __name__ == "__main__": bpy.ops.EXPORT_OT_obj(filename="/tmp/test.obj") diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index f27b76d2cbe..15b65e8d2fd 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -318,14 +318,11 @@ class ExportPLY(bpy.types.Operator): bpy.types.register(ExportPLY) -import dynamic_menu - - def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".ply") self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +bpy.types.INFO_MT_file_export.append(menu_func) if __name__ == "__main__": bpy.ops.export.ply(path="/tmp/test.ply") diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index c4f1b53146f..4c3540a458e 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1242,13 +1242,12 @@ class ExportX3D(bpy.types.Operator): bpy.types.register(ExportX3D) -import dynamic_menu def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".x3d") self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)...").path = default_path -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +bpy.types.INFO_MT_file_export.append(menu_func) # NOTES # - blender version is hardcoded diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index cd040012840..2afd2db3cb2 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -897,7 +897,5 @@ class BvhImporter(bpy.types.Operator): bpy.types.register(BvhImporter) - -import dynamic_menu menu_func = lambda self, context: self.layout.operator(BvhImporter.bl_idname, text="Motion Capture (.bvh)...") -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) +bpy.types.INFO_MT_file_import.append(menu_func) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 3e174baa14c..4420f6ef6f0 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1168,10 +1168,9 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): bpy.types.register(IMPORT_OT_autodesk_3ds) -import dynamic_menu menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...") -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) +bpy.types.INFO_MT_file_import.append(menu_func) # NOTES: -# why add 1 extra vertex? and remove it when done? +# why add 1 extra vertex? and remove it when done? - "Answer - eekadoodle - would need to re-order UV's without this since face order isnt always what we give blender, BMesh will solve :D" # disabled scaling to size, this requires exposing bb (easy) and understanding how it works (needs some time) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index f135bfbb6c0..228084561b8 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -1627,9 +1627,8 @@ class IMPORT_OT_obj(bpy.types.Operator): bpy.types.register(IMPORT_OT_obj) -import dynamic_menu menu_func = lambda self, context: self.layout.operator(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...") -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) +menu_item = bpy.types.INFO_MT_file_import.append(menu_func) # NOTES (all line numbers refer to 2.4x import_obj.py, not this file) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 15bf71e017e..50e8d8ded93 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -379,6 +379,32 @@ class Macro(StructRNA, metaclass=OrderedMeta): class Menu(StructRNA): __slots__ = () + + @classmethod + def _dyn_menu_initialize(cls): + draw_funcs = getattr(cls.draw, "_draw_funcs", None) + + if draw_funcs is None: + def draw_ls(*args): + for func in draw_ls._draw_funcs: + func(*args) + + draw_funcs = draw_ls._draw_funcs = [cls.draw] + cls.draw = draw_ls + + return draw_funcs + + @classmethod + def append(cls, draw_func): + """Prepend an draw function to this menu, takes the same arguments as the menus draw function.""" + draw_funcs = cls._dyn_menu_initialize() + draw_funcs.append(draw_func) + + @classmethod + def prepend(cls, draw_func): + """Prepend a draw function to this menu, takes the same arguments as the menus draw function.""" + draw_funcs = cls._dyn_menu_initialize() + draw_funcs.insert(0, draw_func) def path_menu(self, searchpaths, operator): layout = self.layout @@ -410,3 +436,4 @@ class Menu(StructRNA): """ import bpy self.path_menu(bpy.utils.preset_paths(self.preset_subdir), self.preset_operator) + diff --git a/release/scripts/modules/dynamic_menu.py b/release/scripts/modules/dynamic_menu.py deleted file mode 100644 index 9583dae9bf4..00000000000 --- a/release/scripts/modules/dynamic_menu.py +++ /dev/null @@ -1,118 +0,0 @@ -# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# ##### END GPL LICENSE BLOCK ##### - -# - -import bpy - - -def collect_baseclasses(_class, bases): - - if _class is type or _class is object: - return bases - - bases.append(_class) - for _superclass in _class.__bases__: - collect_baseclasses(_superclass, bases) - - return bases - - -def collect_subclasses(_class, subs): - - if _class is type or _class is object: - return subs - - subs.append(_class) - for _subclass in _class.__subclasses__(): - collect_subclasses(_subclass, subs) - - return subs - - -class DynMenu(bpy.types.Menu): - - def draw(self, context): - ''' - This is a draw function that is used to call all subclasses draw functions - starting from the registered classes draw function and working down. - - DynMenu.setup() must be called first. - - Sort/group classes could be nice - ''' - - subclass_ls = [] - collect_subclasses(self.__class__, subclass_ls) - # print(subclass_ls) - - for subclass in subclass_ls: - # print("drawwing", subclass) # , dir(subclass)) - subclass.internal_draw(self, context) - # print("subclass.internal_draw", subclass.internal_draw) - - -def setup(menu_class): - ''' - Setup subclasses (not needed when self.add() is used) - ''' - bases = collect_baseclasses(menu_class, []) - - # Incase 'DynMenu' isnt last - while bases[-1] is not DynMenu: - bases.pop() - bases.pop() # remove 'DynMenu' - - root_class = bases[-1] # this is the registered class - - for subclass in collect_subclasses(root_class, []): - #print(subclass) - - draw = getattr(subclass, 'draw', None) - if draw and not hasattr(subclass, 'internal_draw'): - # print("replace", subclass, draw) - try: - del subclass.draw - except: - pass - subclass.internal_draw = draw - - root_class.draw = DynMenu.draw - - -def add(menu_class, func): - ''' - Add a single function directly without having to make a class - - important that the returned value should be stored in the module that called it. - ''' - - newclass = type('', (menu_class,), {}) - newclass.internal_draw = func - setup(menu_class) - return newclass - -''' -# so we dont need to import this module -DynMenu.setup = setup -DynMenu.add = add - -# Only so we can access as bpy.types. -# dont ever use this directly! -bpy.types.register(DynMenu) -''' diff --git a/release/scripts/op/add_armature_human.py b/release/scripts/op/add_armature_human.py index 8696312eae0..e618ed51ee5 100644 --- a/release/scripts/op/add_armature_human.py +++ b/release/scripts/op/add_armature_human.py @@ -613,11 +613,9 @@ class AddHuman(bpy.types.Operator): bpy.types.register(AddHuman) # Add to a menu -import dynamic_menu - menu_func = (lambda self, context: self.layout.operator(AddHuman.bl_idname, icon='OUTLINER_OB_ARMATURE', text="Human (Meta-Rig)")) -menu_item = dynamic_menu.add(bpy.types.INFO_MT_armature_add, menu_func) +bpy.types.INFO_MT_armature_add.append(menu_func) if __name__ == "__main__": bpy.ops.mesh.armature_human_advanced_add() diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index 685f1cae8a4..372afb3654f 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -127,13 +127,11 @@ class AddTorus(bpy.types.Operator): # Register the operator bpy.types.register(AddTorus) -# Add to a menu -import dynamic_menu - +# Add to the menu menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname, text="Torus", icon='MESH_DONUT')) -menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func) +bpy.types.INFO_MT_mesh_add.append(menu_func) if __name__ == "__main__": bpy.ops.mesh.primitive_torus_add() diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py index 251cfb32b93..d442717afbf 100644 --- a/release/scripts/op/mesh_skin.py +++ b/release/scripts/op/mesh_skin.py @@ -650,8 +650,7 @@ class MESH_OT_skin(bpy.types.Operator): bpy.types.register(MESH_OT_skin) # Add to a menu -import dynamic_menu -menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.operator("mesh.skin", text="Bridge Faces")) ) +bpy.types.VIEW3D_MT_edit_mesh_faces.append((lambda self, context: self.layout.operator("mesh.skin", text="Bridge Faces"))) if __name__ == "__main__": bpy.ops.mesh.skin() diff --git a/release/scripts/op/uvcalc_follow_active.py b/release/scripts/op/uvcalc_follow_active.py index 8ab5b8ec454..41f97f9cca5 100644 --- a/release/scripts/op/uvcalc_follow_active.py +++ b/release/scripts/op/uvcalc_follow_active.py @@ -262,11 +262,8 @@ class FollowActiveQuads(bpy.types.Operator): bpy.types.register(FollowActiveQuads) # Add to a menu -import dynamic_menu - menu_func = (lambda self, context: self.layout.operator(FollowActiveQuads.bl_idname)) - -menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) +bpy.types.VIEW3D_MT_uv_map.append(menu_func) if __name__ == '__main__': bpy.ops.uv.follow_active_quads() diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 25840e04cf8..6da6020f85b 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -1135,13 +1135,10 @@ class SmartProject(bpy.types.Operator): bpy.types.register(SmartProject) # Add to a menu -import dynamic_menu - menu_func = (lambda self, context: self.layout.operator(SmartProject.bl_idname, text="Smart Project")) -menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) +bpy.types.VIEW3D_MT_uv_map.append(menu_func) if __name__ == '__main__': bpy.ops.uv.smart_project() - diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index 9402a931db8..f175ca06f28 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -49,10 +49,8 @@ class ExportSomeData(bpy.types.Operator): bpy.types.register(ExportSomeData) # Only needed if you want to add into a dynamic menu -import dynamic_menu menu_func = lambda self, context: self.layout.operator("export.some_data", text="Example Exporter...") -menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) +bpy.types.INFO_MT_file_export.append(menu_func) -# Use for running this script directly if __name__ == "__main__": bpy.ops.export.some_data(path="/tmp/test.ply") diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index c0270d9b8ca..9423997151b 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -313,11 +313,7 @@ class ActiveClear(bpy.types.Operator): return {'FINISHED'} -import space_info -import dynamic_menu - - -class INFO_MT_armature_metarig_add(dynamic_menu.DynMenu): +class INFO_MT_armature_metarig_add(bpy.types.Menu): bl_idname = "INFO_MT_armature_metarig_add" bl_label = "Meta-Rig" @@ -349,5 +345,6 @@ bpy.types.register(ActiveClear) bpy.types.register(INFO_MT_armature_metarig_add) +import space_info menu_func = (lambda self, context: self.layout.menu("INFO_MT_armature_metarig_add", icon='OUTLINER_OB_ARMATURE')) -menu_item = dynamic_menu.add(bpy.types.INFO_MT_armature_add, menu_func) +space_info.INFO_MT_armature_add.append(menu_func) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 1f7ba15de61..3f35bbc06d8 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -19,9 +19,6 @@ # import bpy -import dynamic_menu -# reload(dynamic_menu) - class INFO_HT_header(bpy.types.Header): bl_space_type = 'INFO' @@ -115,21 +112,8 @@ class INFO_MT_file(bpy.types.Menu): layout.operator_context = 'EXEC_AREA' layout.operator("wm.exit_blender", text="Quit", icon='QUIT') -# test for expanding menus -''' -class INFO_MT_file_more(INFO_MT_file): - bl_label = "File" - - def draw(self, context): - layout = self.layout - - layout.operator("wm.read_homefile", text="TESTING ") - -dynamic_menu.setup(INFO_MT_file_more) -''' - -class INFO_MT_file_import(dynamic_menu.DynMenu): +class INFO_MT_file_import(bpy.types.Menu): bl_idname = "INFO_MT_file_import" bl_label = "Import" @@ -138,7 +122,7 @@ class INFO_MT_file_import(dynamic_menu.DynMenu): self.layout.operator("wm.collada_import", text="COLLADA (.dae)...") -class INFO_MT_file_export(dynamic_menu.DynMenu): +class INFO_MT_file_export(bpy.types.Menu): bl_idname = "INFO_MT_file_export" bl_label = "Export" @@ -164,7 +148,7 @@ class INFO_MT_file_external_data(bpy.types.Menu): layout.operator("file.find_missing_files") -class INFO_MT_mesh_add(dynamic_menu.DynMenu): +class INFO_MT_mesh_add(bpy.types.Menu): bl_idname = "INFO_MT_mesh_add" bl_label = "Mesh" @@ -183,7 +167,7 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu): layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") -class INFO_MT_armature_add(dynamic_menu.DynMenu): +class INFO_MT_armature_add(bpy.types.Menu): bl_idname = "INFO_MT_armature_add" bl_label = "Armature" diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 26f2953be40..831b900579a 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -18,7 +18,6 @@ # import bpy -import dynamic_menu class VIEW3D_HT_header(bpy.types.Header): @@ -205,7 +204,7 @@ class VIEW3D_MT_snap(bpy.types.Menu): layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active") -class VIEW3D_MT_uv_map(dynamic_menu.DynMenu): +class VIEW3D_MT_uv_map(bpy.types.Menu): bl_label = "UV Mapping" def draw(self, context): @@ -1231,7 +1230,7 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): layout.operator("mesh.region_to_loop") -class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu): +class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu): bl_label = "Faces" bl_idname = "VIEW3D_MT_edit_mesh_faces" diff --git a/source/blender/python/sphinx_doc_gen.py b/source/blender/python/sphinx_doc_gen.py index 3c15c09403d..24910b911e4 100644 --- a/source/blender/python/sphinx_doc_gen.py +++ b/source/blender/python/sphinx_doc_gen.py @@ -27,8 +27,6 @@ This will generate python files in "./source/blender/python/doc/bpy/sphinx-in" Generate html docs by running... sphinx-build source/blender/python/doc/bpy/sphinx-in source/blender/python/doc/bpy/sphinx-out - - ''' # if you dont have graphvis installed ommit the --graph arg. @@ -75,7 +73,7 @@ def py_function_args(func): INVALID = py_function_args defaults = ([INVALID] * (len(names) - len(defaults))) + defaults - if names[0] == "self": + if names[0] in ("self", "cls"): # normal class function or classmethod del names[0] del defaults[0] -- cgit v1.2.3 From b0b3e27471fb84f139d4aa3033aa093ac708f467 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Fri, 25 Dec 2009 22:58:11 +0000 Subject: Particles bug fix: using virtual parents for child particles crashed in some cases. --- source/blender/blenkernel/intern/particle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 1968673e568..b19b0f9fa20 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -2444,7 +2444,7 @@ static void psys_thread_create_path(ParticleThread *thread, struct ChildParticle mul_m4_v3(ob->obmat,cpa_1st); } - pa = psys->particles + cpa->parent; + pa = psys->particles + cpa->pa[0]; psys_mat_hair_to_global(ob, ctx->sim.psmd->dm, psys->part->from, pa, hairmat); -- cgit v1.2.3 From 99e3423a500d59e3493c4e8db8665c97aa02e110 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 23:50:35 +0000 Subject: fix for accessing invalid memory when loading a new file. --- source/blender/blenkernel/intern/scene.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 0a2edf82cb0..eadeac585b2 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -249,7 +249,12 @@ void free_scene(Scene *sce) /* do not free objects! */ if(sce->gpd) { +#if 0 // removed since this can be invalid memory when freeing everything + // since the grease pencil data is free'd before the scene. + // since grease pencil data is not (yet?), shared between objects + // its probably safe not to do this, some save and reload will free this. sce->gpd->id.us--; +#endif sce->gpd= NULL; } -- cgit v1.2.3 From fc066a6a5d01718981c9dcae23c5f4f47f3d7b1e Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Fri, 25 Dec 2009 23:51:29 +0000 Subject: Fix for [#20458] Segmentation fault when trying to enable Hair dynamics * The hair mesh vertex index was stored as a short, but vertex counts can easily go higher than what fits in a short so changed this to an int. * Also removed particle life looping, which didn't work correctly anyways. Similar functionality will become available when I get to recoding reactor particles into a better system. --- source/blender/blenkernel/intern/particle.c | 2 +- source/blender/blenkernel/intern/particle_system.c | 46 ++++++---------------- source/blender/makesdna/DNA_particle_types.h | 5 +-- source/blender/makesrna/intern/rna_particle.c | 11 ------ 4 files changed, 16 insertions(+), 48 deletions(-) diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index b19b0f9fa20..992f63520ab 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -4069,7 +4069,7 @@ int psys_get_particle_state(ParticleSimulationData *sim, int p, ParticleKey *sta else{ if(cpa){ ParticleKey *key1; - float t = (cfra - pa->time + pa->loop * pa->lifetime) / pa->lifetime; + float t = (cfra - pa->time) / pa->lifetime; key1=&pa->state; offset_child(cpa, key1, state, part->childflat, part->childrad); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index ce595bb280d..9882bfea137 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -389,7 +389,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys) pa->fuv[1]=min[1]+(float)j*d; pa->fuv[2]=min[2]+(float)k*d; pa->flag |= PARS_UNEXIST; - pa->loop=0; /* abused in volume calculation */ + pa->hair_index=0; /* abused in volume calculation */ } } } @@ -451,7 +451,7 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys) if(from==PART_FROM_FACE) (pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST; else /* store number of intersections */ - (pa+(int)(lambda*size[a])*a0mul)->loop++; + (pa+(int)(lambda*size[a])*a0mul)->hair_index++; } if(mface->v4){ @@ -461,20 +461,20 @@ static void distribute_particles_in_grid(DerivedMesh *dm, ParticleSystem *psys) if(from==PART_FROM_FACE) (pa+(int)(lambda*size[a])*a0mul)->flag &= ~PARS_UNEXIST; else - (pa+(int)(lambda*size[a])*a0mul)->loop++; + (pa+(int)(lambda*size[a])*a0mul)->hair_index++; } } } if(from==PART_FROM_VOLUME){ - int in=pa->loop%2; - if(in) pa->loop++; + int in=pa->hair_index%2; + if(in) pa->hair_index++; for(i=0; iloop%2) + if(in || (pa+i*a0mul)->hair_index%2) (pa+i*a0mul)->flag &= ~PARS_UNEXIST; /* odd intersections == in->out / out->in */ /* even intersections -> in stays same */ - in=(in + (pa+i*a0mul)->loop) % 2; + in=(in + (pa+i*a0mul)->hair_index) % 2; } } } @@ -1584,7 +1584,7 @@ void initialize_particle(ParticleSimulationData *sim, ParticleData *pa, int p) pa->flag &= ~PARS_UNEXIST; } - pa->loop=0; + pa->hair_index=0; /* we can't reset to -1 anymore since we've figured out correct index in distribute_particles */ /* usage other than straight after distribute has to handle this index by itself - jahka*/ //pa->num_dmcache = DMCACHE_NOTFOUND; /* assume we dont have a derived mesh face */ @@ -3215,14 +3215,6 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) pa->size *= 1.0f - part->randsize * PSYS_FRAND(p + 1); reset_particle(sim, pa, dtime, cfra); - - if(cfra > pa->time && part->flag & PART_LOOP && part->type!=PART_HAIR){ - pa->loop = (short)((cfra-pa->time)/pa->lifetime); - pa->alive = PARS_UNBORN; - } - else{ - pa->loop = 0; - } } if(vg_size) @@ -3276,7 +3268,7 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) //if(psys->reactevents.first && ELEM(pa->alive,PARS_DEAD,PARS_KILLED)==0) // react_to_events(psys,p); - birthtime = pa->time + pa->loop * pa->lifetime; + birthtime = pa->time; dietime = birthtime + pa->lifetime; pa_dfra = dfra; @@ -3335,15 +3327,8 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) if(pa->alive == PARS_DYING){ //push_reaction(ob,psys,p,PART_EVENT_DEATH,&pa->state); - if(part->flag & PART_LOOP && part->type!=PART_HAIR){ - pa->loop++; - reset_particle(sim, pa, 0.0, cfra); - pa->alive=PARS_ALIVE; - } - else{ - pa->alive=PARS_DEAD; - pa->state.time=pa->dietime; - } + pa->alive=PARS_DEAD; + pa->state.time=pa->dietime; } else pa->state.time=cfra; @@ -3394,13 +3379,8 @@ static void cached_step(ParticleSimulationData *sim, float cfra) psys->lattice= psys_get_lattice(sim); - if(part->flag & PART_LOOP && part->type!=PART_HAIR) - pa->loop = (short)((cfra - pa->time) / pa->lifetime); - else - pa->loop = 0; - - birthtime = pa->time + pa->loop * pa->lifetime; - dietime = birthtime + (1 + pa->loop) * (pa->dietime - pa->time); + birthtime = pa->time; + dietime = pa->dietime; /* update alive status and push events */ if(pa->time > cfra) { diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 81510ef96a3..abcdbcefc0f 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -109,10 +109,9 @@ typedef struct ParticleData { float size; /* size and multiplier so that we can update size when ever */ + int hair_index; short flag; short alive; /* the life state of a particle */ - short loop; /* how many times particle life has looped */ - short hair_index; } ParticleData; typedef struct ParticleSettings { @@ -261,7 +260,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in #define PART_REACT_STA_END 1 #define PART_REACT_MULTIPLE 2 -#define PART_LOOP 4 +//#define PART_LOOP 4 /* not used anymore */ /* for dopesheet */ #define PART_DS_EXPAND 8 diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index c5b1aafb1a3..543965a337e 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -814,11 +814,6 @@ static void rna_def_particle(BlenderRNA *brna) RNA_def_property_enum_items(prop, alive_items); RNA_def_property_ui_text(prop, "Alive State", ""); - prop= RNA_def_property(srna, "loop", PROP_INT, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - //TODO: bounds - RNA_def_property_ui_text(prop, "Loop", "How may times the particle life has looped"); - // short rt2; } @@ -978,12 +973,6 @@ static void rna_def_particle_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Multi React", "React multiple times."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "loop", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_LOOP); - RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); - RNA_def_property_ui_text(prop, "Loop", "Loop particle lives."); - RNA_def_property_update(prop, 0, "rna_Particle_reset"); - /* TODO: used somewhere? */ prop= RNA_def_property(srna, "hair_geometry", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_GEOMETRY); -- cgit v1.2.3 From fb4f78513e0cba6187646e950806f71cd42b7bae Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Dec 2009 23:59:12 +0000 Subject: invalid memory access fix --- source/blender/makesrna/intern/rna_access.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index e2960d2bf3a..9cc08b297e5 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -946,7 +946,7 @@ void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, En int RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value) { EnumPropertyItem *item, *item_array; - int free; + int free, found; RNA_property_enum_items(C, ptr, prop, &item_array, NULL, &free); @@ -956,11 +956,13 @@ int RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, con break; } } + + found= (item->identifier != NULL); /* could be alloc'd, assign before free */ if(free) MEM_freeN(item_array); - return (item->identifier) ? 1:0; + return found; } int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier) -- cgit v1.2.3 From 266271d65a5aaeb0040848a2e288695b3e9ed7c9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Dec 2009 00:17:45 +0000 Subject: - closing the user prefs accessed the temp screen after removing it. - colorband drawing could use un-initialized vars (probably wouldnt crash) --- source/blender/editors/interface/interface_draw.c | 2 +- source/blender/editors/screen/screen_edit.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index e6e5cb198aa..0602ca656b9 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -698,7 +698,7 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) float x1, y1, sizex, sizey; float dx, v3[2], v1[2], v2[2], v1a[2], v2a[2]; int a; - float pos, colf[4]; + float pos, colf[4]= {0,0,0,0}; /* initialize incase the colorband isnt valid */ coba= (ColorBand *)(but->editcoba? but->editcoba: but->poin); if(coba==NULL) return; diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6bf01a69d12..f0003669a12 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1124,13 +1124,14 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) /* mark it available for use for other windows */ screen->winid= 0; + /* before deleting the temp screen or we get invalid access */ + CTX_wm_window_set(C, prevwin); + /* if temp screen, delete it */ if(screen->full == SCREENTEMP) { Main *bmain= CTX_data_main(C); free_libblock(&bmain->screen, screen); } - - CTX_wm_window_set(C, prevwin); } /* *********************************** */ -- cgit v1.2.3 From 7a19832a78bea88d0a9c64809ef6e6576e870456 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Sat, 26 Dec 2009 00:17:54 +0000 Subject: Fix for [#20294] Switching to particle mode after changing number of hair particles causes blender to crash. * Particle edit mode wasn't freed when the particle amount was changed. --- source/blender/blenkernel/intern/particle_system.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 9882bfea137..d3dacadca53 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -170,6 +170,12 @@ static void realloc_particles(ParticleSimulationData *sim, int new_totpart) PARTICLE_P; int totpart, totsaved = 0; + if(psys->edit && psys->free_edit) { + psys->free_edit(psys->edit); + psys->edit = NULL; + psys->free_edit = NULL; + } + if(new_totpart<0) { if(part->distr==PART_DISTR_GRID && part->from != PART_FROM_VERT) { totpart= part->grid_res; -- cgit v1.2.3 From ffe13aeb232ac6bad3a98997b4a352f434293193 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Dec 2009 01:04:46 +0000 Subject: the user interface could access invalid RNA on deleting objects since checking the button ran after freeing the data. --- source/blender/editors/interface/interface_handlers.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index b41f47db271..fa5d60a20f6 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4100,7 +4100,11 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s data->state= state; - ui_check_but(but); + if(state != BUTTON_STATE_EXIT) { + /* When objects for eg. are removed, running ui_check_but() + * can access the removed data - so disable update on exit */ + ui_check_but(but); + } /* redraw */ ED_region_tag_redraw(data->region); -- cgit v1.2.3
%s